diff --git a/COPYRIGHT b/COPYRIGHT index 0395b0d3cf..238aea7fd9 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -1,8 +1,7 @@ Postgres-XC Cluster Database Management System -Portions Copyright (c) 2010-2011, Nippon Telegraph and Telephone Corporation -Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group - +Portions Copyright (c) 2010-2014, Postgres-XC Development Group +Portions Copyright (c) 1996-2014, PostgreSQL Global Development Group Portions Copyright (c) 1994, The Regents of the University of California Permission to use, copy, modify, and distribute this software and its @@ -33,3 +32,15 @@ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE POSTGRESQL GLOBAL DEVELOPMENT GROUP HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + +IN NO EVENT SHALL POSTGRES-XC DEVELOPMENT GROUP BE LIABLE TO ANY +PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS +SOFTWARE AND ITS DOCUMENTATION, EVEN IF POSTGRES-XC DEVELOPMENT +GROUP HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +POSTGRES-XC DEVELOPMENT GROUP SPECIFICALLY DISCLAIMS ANY WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS +ON AN "AS IS" BASIS, AND THE POSTGRES-XC DEVELOPMENT GROUP HAS NO OBLIGATIONS TO +PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. diff --git a/GNUmakefile.in b/GNUmakefile.in index 4ed18c5339..8b884e5693 100644 --- a/GNUmakefile.in +++ b/GNUmakefile.in @@ -20,6 +20,9 @@ $(call recurse,world,doc-xc src config contrib,all) world: +@echo "PostgreSQL, contrib, and documentation successfully made. Ready to install." +# build src/ before contrib/ +world-contrib-recurse: world-src-recurse + html man: $(MAKE) -C doc-xc $@ @@ -33,6 +36,9 @@ $(call recurse,install-world,doc-xc src config contrib,install) install-world: +@echo "PostgreSQL, contrib, and documentation installation complete." +# build src/ before contrib/ +install-world-contrib-recurse: install-world-src-recurse + $(call recurse,installdirs uninstall coverage,doc-xc src config) $(call recurse,distprep,doc-xc src config contrib) @@ -99,10 +105,8 @@ distdir: fi || exit; \ done $(MAKE) -C $(distdir) distprep - $(MAKE) -C $(distdir)/doc/src/sgml/ HISTORY INSTALL regress_README - cp $(distdir)/doc/src/sgml/HISTORY $(distdir)/ + $(MAKE) -C $(distdir)/doc/src/sgml/ INSTALL cp $(distdir)/doc/src/sgml/INSTALL $(distdir)/ - cp $(distdir)/doc/src/sgml/regress_README $(distdir)/src/test/regress/README $(MAKE) -C $(distdir) distclean rm -f $(distdir)/README.git diff --git a/HISTORY b/HISTORY new file mode 100644 index 0000000000..dcfd713c15 --- /dev/null +++ b/HISTORY @@ -0,0 +1,5 @@ +Release notes for all versions of PostgreSQL can be found on-line at +http://www.postgresql.org/docs/current/static/release.html + +Distribution file sets include release notes for their version and preceding +versions. Visit the file doc/src/sgml/html/release.html in an HTML browser. diff --git a/README b/README index b5dda60b65..7b2882aadf 100644 --- a/README +++ b/README @@ -27,3 +27,6 @@ instructions. The latest version of this software may be obtained at http://sourceforge.net/projects/postgres-xc/. For more information look at our web site located at http://postgres-xc.sourceforge.net/. + +More information about Postgres-XC Development Group is available at +http://sourceforge.net/apps/mediawiki/postgres-xc/index.php?title=Charter. diff --git a/README.git b/README.git index 7a17264919..9745884564 100644 --- a/README.git +++ b/README.git @@ -4,9 +4,9 @@ In a release or snapshot tarball of Postgres-XC, documentation files named INSTALL and HISTORY will appear in this directory. However, these files are not stored in git and so will not be present if you are using a git checkout. If you are using git, you can view the most recent install instructions at: - http://developer.postgresql.org/docs/postgres/installation.html + http://postgres-xc.sourceforge.net/docs/1_0/installation.html and the current release notes at: - http://developer.postgresql.org/docs/postgres/release.html + http://postgres-xc.sourceforge.net/docs/1_0/release.html Users compiling from git will also need compatible versions of Bison, Flex, and Perl, as discussed in the install documentation. These programs are not diff --git a/config/python.m4 b/config/python.m4 index ec357c2e48..2c3afae315 100644 --- a/config/python.m4 +++ b/config/python.m4 @@ -32,7 +32,7 @@ fi AC_MSG_CHECKING([Python configuration directory]) python_majorversion=`${PYTHON} -c "import sys; print(sys.version[[0]])"` python_version=`${PYTHON} -c "import sys; print(sys.version[[:3]])"` -python_configdir=`${PYTHON} -c "from distutils.sysconfig import get_python_lib as f; import os; print(os.path.join(f(plat_specific=1,standard_lib=1),'config'))"` +python_configdir=`${PYTHON} -c "import distutils.sysconfig,string; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBPL'))))"` python_includespec=`${PYTHON} -c "import distutils.sysconfig; print('-I'+distutils.sysconfig.get_python_inc())"` AC_SUBST(python_majorversion)[]dnl @@ -69,7 +69,12 @@ then else # Old way: use libpython from python_configdir python_libdir="${python_configdir}" - python_libspec="-L${python_libdir} -lpython${python_version}" + # LDVERSION was introduced in Python 3.2. + python_ldversion=`${PYTHON} -c "import distutils.sysconfig,string; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LDVERSION'))))"` + if test x"${python_ldversion}" = x""; then + python_ldversion=$python_version + fi + python_libspec="-L${python_libdir} -lpython${python_ldversion}" fi python_additional_libs=`${PYTHON} -c "import distutils.sysconfig,string; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBS','LIBC','LIBM','BASEMODLIBS'))))"` @@ -80,13 +85,13 @@ AC_SUBST(python_libdir)[]dnl AC_SUBST(python_libspec)[]dnl AC_SUBST(python_additional_libs)[]dnl -# threaded python is not supported on bsd's +# 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*|freebsd*) + openbsd*) AC_MSG_ERROR([threaded Python not supported on this platform]) ;; esac diff --git a/configure b/configure index 68d6a922f3..b39cabc96c 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.63 for Postgres-XC 1.0beta1. +# Generated by GNU Autoconf 2.63 for Postgres-XC 1.0.4. # # Report bugs to . # @@ -30,9 +30,6 @@ esac fi -# For PGXC, set -DPGXC by default. This can be overriden with -UPGXC if the user sets it. -CFLAGS="$CFLAGS -DPGXC" - # PATH needs CR # Avoid depending upon Character Ranges. @@ -600,10 +597,9 @@ SHELL=${CONFIG_SHELL-/bin/sh} PACKAGE_NAME='Postgres-XC' PACKAGE_TARNAME='postgres-xc' # Package is based on former PostgreSQL, so base package version on that -PACKAGE_VERSION='9.1beta2' -# Postgres-XC 1.0beta1 is based on PostgreSQL 9.1beta2 -PACKAGE_XC_VERSION='1.0beta1' -PACKAGE_STRING='Postgres-XC 1.0beta1' +PACKAGE_VERSION='9.1.13' +PACKAGE_XC_VERSION='1.0.4' +PACKAGE_STRING='Postgres-XC 1.0.4' PACKAGE_BUGREPORT='postgres-xc-bugs@lists.sourceforge.net' ac_unique_file="src/backend/access/common/heaptuple.c" @@ -909,7 +905,7 @@ sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +docdir='${datarootdir}/doc-xc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' @@ -1421,7 +1417,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 Postgres-XC 1.0beta1 to adapt to many kinds of systems. +\`configure' configures Postgres-XC 1.0.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1486,7 +1482,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Postgres-XC 1.0beta1:";; + short | recursive ) echo "Configuration of Postgres-XC 1.0.4:";; esac cat <<\_ACEOF @@ -1633,7 +1629,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Postgres-XC configure 1.0beta1 +Postgres-XC configure 1.0.4 generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1649,7 +1645,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 Postgres-XC $as_me 1.0beta1, which was +It was created by Postgres-XC $as_me 1.0.4, which was generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ @@ -4328,6 +4324,129 @@ if test x"$pgac_cv_prog_cc_cflags__fwrapv" = x"yes"; then CFLAGS="$CFLAGS -fwrapv" fi + # Disable FP optimizations that cause various errors on gcc 4.5+ or maybe 4.6+ + { $as_echo "$as_me:$LINENO: checking whether $CC supports -fexcess-precision=standard" >&5 +$as_echo_n "checking whether $CC supports -fexcess-precision=standard... " >&6; } +if test "${pgac_cv_prog_cc_cflags__fexcess_precision_standard+set}" = set; then + $as_echo_n "(cached) " >&6 +else + pgac_save_CFLAGS=$CFLAGS +CFLAGS="$pgac_save_CFLAGS -fexcess-precision=standard" +ac_save_c_werror_flag=$ac_c_werror_flag +ac_c_werror_flag=yes +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + pgac_cv_prog_cc_cflags__fexcess_precision_standard=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + pgac_cv_prog_cc_cflags__fexcess_precision_standard=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:$LINENO: result: $pgac_cv_prog_cc_cflags__fexcess_precision_standard" >&5 +$as_echo "$pgac_cv_prog_cc_cflags__fexcess_precision_standard" >&6; } +if test x"$pgac_cv_prog_cc_cflags__fexcess_precision_standard" = x"yes"; then + CFLAGS="$CFLAGS -fexcess-precision=standard" +fi + + # Disable loop optimizations that get confused by variable-length struct + # declarations in gcc 4.8+ + { $as_echo "$as_me:$LINENO: checking whether $CC supports -fno-aggressive-loop-optimizations" >&5 +$as_echo_n "checking whether $CC supports -fno-aggressive-loop-optimizations... " >&6; } +if test "${pgac_cv_prog_cc_cflags__fno_aggressive_loop_optimizations+set}" = set; then + $as_echo_n "(cached) " >&6 +else + pgac_save_CFLAGS=$CFLAGS +CFLAGS="$pgac_save_CFLAGS -fno-aggressive-loop-optimizations" +ac_save_c_werror_flag=$ac_c_werror_flag +ac_c_werror_flag=yes +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + pgac_cv_prog_cc_cflags__fno_aggressive_loop_optimizations=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + pgac_cv_prog_cc_cflags__fno_aggressive_loop_optimizations=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:$LINENO: result: $pgac_cv_prog_cc_cflags__fno_aggressive_loop_optimizations" >&5 +$as_echo "$pgac_cv_prog_cc_cflags__fno_aggressive_loop_optimizations" >&6; } +if test x"$pgac_cv_prog_cc_cflags__fno_aggressive_loop_optimizations" = x"yes"; then + CFLAGS="$CFLAGS -fno-aggressive-loop-optimizations" +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. @@ -7264,7 +7383,7 @@ fi $as_echo_n "checking Python configuration directory... " >&6; } python_majorversion=`${PYTHON} -c "import sys; print(sys.version[0])"` python_version=`${PYTHON} -c "import sys; print(sys.version[:3])"` -python_configdir=`${PYTHON} -c "from distutils.sysconfig import get_python_lib as f; import os; print(os.path.join(f(plat_specific=1,standard_lib=1),'config'))"` +python_configdir=`${PYTHON} -c "import distutils.sysconfig,string; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBPL'))))"` python_includespec=`${PYTHON} -c "import distutils.sysconfig; print('-I'+distutils.sysconfig.get_python_inc())"` # This should be enough of a message. @@ -7288,7 +7407,12 @@ then else # Old way: use libpython from python_configdir python_libdir="${python_configdir}" - python_libspec="-L${python_libdir} -lpython${python_version}" + # LDVERSION was introduced in Python 3.2. + python_ldversion=`${PYTHON} -c "import distutils.sysconfig,string; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LDVERSION'))))"` + if test x"${python_ldversion}" = x""; then + python_ldversion=$python_version + fi + python_libspec="-L${python_libdir} -lpython${python_ldversion}" fi python_additional_libs=`${PYTHON} -c "import distutils.sysconfig,string; print(' '.join(filter(None,distutils.sysconfig.get_config_vars('LIBS','LIBC','LIBM','BASEMODLIBS'))))"` @@ -7297,7 +7421,7 @@ python_additional_libs=`${PYTHON} -c "import distutils.sysconfig,string; print(' $as_echo "${python_libspec} ${python_additional_libs}" >&6; } -# threaded python is not supported on bsd's +# threaded python is not supported on OpenBSD { $as_echo "$as_me:$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))"` @@ -7305,7 +7429,7 @@ if test "$pythreads" = "1"; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } case $host_os in - openbsd*|freebsd*) + openbsd*) { { $as_echo "$as_me:$LINENO: error: threaded Python not supported on this platform" >&5 $as_echo "$as_me: error: threaded Python not supported on this platform" >&2;} { (exit 1); exit 1; }; } @@ -9088,14 +9212,12 @@ $as_echo "$as_me: error: library 'ssl' is required for OpenSSL" >&2;} fi else - -{ $as_echo "$as_me:$LINENO: checking for CRYPTO_new_ex_data in -leay32" >&5 -$as_echo_n "checking for CRYPTO_new_ex_data in -leay32... " >&6; } -if test "${ac_cv_lib_eay32_CRYPTO_new_ex_data+set}" = set; then + { $as_echo "$as_me:$LINENO: checking for library containing CRYPTO_new_ex_data" >&5 +$as_echo_n "checking for library containing CRYPTO_new_ex_data... " >&6; } +if test "${ac_cv_search_CRYPTO_new_ex_data+set}" = set; then $as_echo_n "(cached) " >&6 else - ac_check_lib_save_LIBS=$LIBS -LIBS="-leay32 $LIBS" + ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -9118,7 +9240,14 @@ return CRYPTO_new_ex_data (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext +for ac_lib in '' eay32 crypto; 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 + rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; @@ -9139,42 +9268,47 @@ $as_echo "$ac_try_echo") >&5 test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then - ac_cv_lib_eay32_CRYPTO_new_ex_data=yes + ac_cv_search_CRYPTO_new_ex_data=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_eay32_CRYPTO_new_ex_data=no + fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS + conftest$ac_exeext + if test "${ac_cv_search_CRYPTO_new_ex_data+set}" = set; then + break fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_eay32_CRYPTO_new_ex_data" >&5 -$as_echo "$ac_cv_lib_eay32_CRYPTO_new_ex_data" >&6; } -if test "x$ac_cv_lib_eay32_CRYPTO_new_ex_data" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBEAY32 1 -_ACEOF - - LIBS="-leay32 $LIBS" +done +if test "${ac_cv_search_CRYPTO_new_ex_data+set}" = set; then + : +else + ac_cv_search_CRYPTO_new_ex_data=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_CRYPTO_new_ex_data" >&5 +$as_echo "$ac_cv_search_CRYPTO_new_ex_data" >&6; } +ac_res=$ac_cv_search_CRYPTO_new_ex_data +if test "$ac_res" != no; then + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else - { { $as_echo "$as_me:$LINENO: error: library 'eay32' is required for OpenSSL" >&5 -$as_echo "$as_me: error: library 'eay32' is required for OpenSSL" >&2;} + { { $as_echo "$as_me:$LINENO: error: library 'eay32' or 'crypto' is required for OpenSSL" >&5 +$as_echo "$as_me: error: library 'eay32' or 'crypto' is required for OpenSSL" >&2;} { (exit 1); exit 1; }; } fi - -{ $as_echo "$as_me:$LINENO: checking for SSL_library_init in -lssleay32" >&5 -$as_echo_n "checking for SSL_library_init in -lssleay32... " >&6; } -if test "${ac_cv_lib_ssleay32_SSL_library_init+set}" = set; then + { $as_echo "$as_me:$LINENO: checking for library containing SSL_library_init" >&5 +$as_echo_n "checking for library containing SSL_library_init... " >&6; } +if test "${ac_cv_search_SSL_library_init+set}" = set; then $as_echo_n "(cached) " >&6 else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lssleay32 $LIBS" + ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -9197,7 +9331,14 @@ return SSL_library_init (); return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext +for ac_lib in '' ssleay32 ssl; 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 + rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; @@ -9218,31 +9359,38 @@ $as_echo "$ac_try_echo") >&5 test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then - ac_cv_lib_ssleay32_SSL_library_init=yes + ac_cv_search_SSL_library_init=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_ssleay32_SSL_library_init=no + fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS + conftest$ac_exeext + if test "${ac_cv_search_SSL_library_init+set}" = set; then + break fi -{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_ssleay32_SSL_library_init" >&5 -$as_echo "$ac_cv_lib_ssleay32_SSL_library_init" >&6; } -if test "x$ac_cv_lib_ssleay32_SSL_library_init" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBSSLEAY32 1 -_ACEOF - - LIBS="-lssleay32 $LIBS" +done +if test "${ac_cv_search_SSL_library_init+set}" = set; then + : +else + ac_cv_search_SSL_library_init=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_search_SSL_library_init" >&5 +$as_echo "$ac_cv_search_SSL_library_init" >&6; } +ac_res=$ac_cv_search_SSL_library_init +if test "$ac_res" != no; then + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else - { { $as_echo "$as_me:$LINENO: error: library 'ssleay32' is required for OpenSSL" >&5 -$as_echo "$as_me: error: library 'ssleay32' is required for OpenSSL" >&2;} + { { $as_echo "$as_me:$LINENO: error: library 'ssleay32' or 'ssl' is required for OpenSSL" >&5 +$as_echo "$as_me: error: library 'ssleay32' or 'ssl' is required for OpenSSL" >&2;} { (exit 1); exit 1; }; } fi @@ -10012,8 +10160,7 @@ done - -for ac_header in crypt.h dld.h fp_class.h getopt.h ieeefp.h ifaddrs.h langinfo.h poll.h pwd.h sys/ioctl.h sys/ipc.h sys/poll.h sys/pstat.h sys/resource.h sys/select.h sys/sem.h sys/shm.h sys/socket.h sys/sockio.h sys/tas.h sys/time.h sys/ucred.h sys/un.h termios.h ucred.h utime.h wchar.h wctype.h kernel/OS.h kernel/image.h SupportDefs.h +for ac_header in crypt.h dld.h fp_class.h getopt.h ieeefp.h ifaddrs.h langinfo.h poll.h pwd.h sys/ioctl.h sys/ipc.h sys/poll.h sys/pstat.h sys/resource.h sys/select.h sys/sem.h sys/shm.h sys/socket.h sys/sockio.h sys/tas.h sys/time.h sys/un.h termios.h ucred.h utime.h wchar.h wctype.h kernel/OS.h kernel/image.h SupportDefs.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then @@ -10164,7 +10311,7 @@ fi done -# On BSD, cpp test for net/if.h will fail unless sys/socket.h +# On BSD, test for net/if.h will fail unless sys/socket.h # is included first. for ac_header in net/if.h @@ -10233,7 +10380,74 @@ fi done -# At least on IRIX, cpp test for netinet/tcp.h will fail unless +# On OpenBSD, test for sys/ucred.h will fail unless sys/param.h +# is included first. + +for ac_header in sys/ucred.h +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include + + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +# At least on IRIX, test for netinet/tcp.h will fail unless # netinet/in.h is included first. for ac_header in netinet/in.h @@ -17061,6 +17275,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include +#include #ifdef HAVE_SYS_UCRED_H #include #endif @@ -17099,6 +17314,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include +#include #ifdef HAVE_SYS_UCRED_H #include #endif @@ -18851,6 +19067,13 @@ fi +# Some versions of libedit contain strlcpy(), setproctitle(), and other +# symbols that that library has no business exposing to the world. Pending +# acquisition of a clue by those developers, ignore libedit (including its +# possible alias of libreadline) while checking for everything else. +LIBS_including_readline="$LIBS" +LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'` + @@ -18874,7 +19097,8 @@ fi -for ac_func in cbrt dlopen fcvt fdatasync getifaddrs getpeerucred getrlimit memmove poll pstat readlink scandir setproctitle setsid sigprocmask symlink sysconf towlower utime utimes waitpid wcstombs wcstombs_l + +for ac_func in cbrt dlopen fcvt fdatasync getifaddrs getpeerucred getrlimit mbstowcs_l memmove poll pstat readlink scandir setproctitle setsid sigprocmask symlink sysconf towlower utime utimes waitpid wcstombs wcstombs_l do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -20426,12 +20650,6 @@ done fi -# Some versions of libedit contain strlcpy(); so disregard that library while -# checking for these standard libc functions. -pgac_save_LIBS="$LIBS" -LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'` - - @@ -20446,7 +20664,7 @@ LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'` -for ac_func in crypt erand48 getopt getpeereid getrusage inet_aton random rint srandom strdup strerror strlcat strlcpy strtol strtoul +for ac_func in crypt erand48 getopt getrusage inet_aton random rint srandom strdup strerror strlcat strlcpy strtol strtoul do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -20558,16 +20776,25 @@ done case $host_os in # Windows uses a specialised env handler + # and doesn't need a replacement getpeereid because it doesn't use + # Unix sockets. mingw*) cat >>confdefs.h <<\_ACEOF #define HAVE_UNSETENV 1 _ACEOF - ac_cv_func_unsetenv=yes;; + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GETPEEREID 1 +_ACEOF + + ac_cv_func_unsetenv=yes + ac_cv_func_getpeereid=yes;; *) -for ac_func in unsetenv + +for ac_func in unsetenv getpeereid do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -20678,9 +20905,6 @@ done ;; esac - -LIBS="$pgac_save_LIBS" - # System's version of getaddrinfo(), if any, may be used only if we found # a definition for struct addrinfo; see notes in src/include/getaddrinfo.h. # (Note: the AC_REPLACE_FUNCS probe fails on Windows, where the available @@ -21099,6 +21323,12 @@ esac ;; esac + case " $LIBOBJS " in + *" win32setlocale.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS win32setlocale.$ac_objext" + ;; +esac + cat >>confdefs.h <<\_ACEOF #define HAVE_SYMLINK 1 @@ -21228,10 +21458,9 @@ else fi -if test "$with_readline" = yes; then - { $as_echo "$as_me:$LINENO: checking for rl_completion_append_character" >&5 -$as_echo_n "checking for rl_completion_append_character... " >&6; } -if test "${pgac_cv_var_rl_completion_append_character+set}" = set; then +{ $as_echo "$as_me:$LINENO: checking for sigsetjmp" >&5 +$as_echo_n "checking for sigsetjmp... " >&6; } +if test "${pgac_cv_func_sigsetjmp+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -21240,282 +21469,7 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include -#ifdef HAVE_READLINE_READLINE_H -# include -#elif defined(HAVE_READLINE_H) -# include -#endif - -int -main () -{ -rl_completion_append_character = 'x'; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - pgac_cv_var_rl_completion_append_character=yes -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - pgac_cv_var_rl_completion_append_character=no -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ $as_echo "$as_me:$LINENO: result: $pgac_cv_var_rl_completion_append_character" >&5 -$as_echo "$pgac_cv_var_rl_completion_append_character" >&6; } -if test x"$pgac_cv_var_rl_completion_append_character" = x"yes"; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_RL_COMPLETION_APPEND_CHARACTER 1 -_ACEOF - -fi - - -for ac_func in rl_completion_matches rl_filename_completion_function -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* 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 $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - -for ac_func in append_history history_truncate_file -do -as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 -$as_echo_n "checking for $ac_func... " >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* 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 $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" -$as_echo "$ac_try_echo") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then - eval "$as_ac_var=yes" -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -rf conftest.dSYM -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -as_val=`eval 'as_val=${'$as_ac_var'} - $as_echo "$as_val"'` - if test "x$as_val" = x""yes; then - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -fi - - -{ $as_echo "$as_me:$LINENO: checking for sigsetjmp" >&5 -$as_echo_n "checking for sigsetjmp... " >&6; } -if test "${pgac_cv_func_sigsetjmp+set}" = set; then - $as_echo_n "(cached) " >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include +#include int main () { @@ -21889,7 +21843,168 @@ cat >>conftest.$ac_ext <<_ACEOF int main () { -extern int opterr; opterr = 1; +extern int opterr; opterr = 1; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + pgac_cv_var_int_opterr=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + pgac_cv_var_int_opterr=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $pgac_cv_var_int_opterr" >&5 +$as_echo "$pgac_cv_var_int_opterr" >&6; } +if test x"$pgac_cv_var_int_opterr" = x"yes"; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_INT_OPTERR 1 +_ACEOF + +fi + +{ $as_echo "$as_me:$LINENO: checking for optreset" >&5 +$as_echo_n "checking for optreset... " >&6; } +if test "${pgac_cv_var_int_optreset+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ +extern int optreset; optreset = 1; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + pgac_cv_var_int_optreset=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + pgac_cv_var_int_optreset=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $pgac_cv_var_int_optreset" >&5 +$as_echo "$pgac_cv_var_int_optreset" >&6; } +if test x"$pgac_cv_var_int_optreset" = x"yes"; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_INT_OPTRESET 1 +_ACEOF + +fi + + + +for ac_func in strtoll strtoq +do +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* 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 $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); ; return 0; } @@ -21915,31 +22030,40 @@ $as_echo "$ac_try_echo") >&5 test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then - pgac_cv_var_int_opterr=yes + eval "$as_ac_var=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - pgac_cv_var_int_opterr=no + eval "$as_ac_var=no" fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $pgac_cv_var_int_opterr" >&5 -$as_echo "$pgac_cv_var_int_opterr" >&6; } -if test x"$pgac_cv_var_int_opterr" = x"yes"; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_INT_OPTERR 1 +ac_res=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF - + break fi +done -{ $as_echo "$as_me:$LINENO: checking for optreset" >&5 -$as_echo_n "checking for optreset... " >&6; } -if test "${pgac_cv_var_int_optreset+set}" = set; then + + +for ac_func in strtoull strtouq +do +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF @@ -21948,11 +22072,41 @@ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* 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 $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + int main () { -extern int optreset; optreset = 1; +return $ac_func (); ; return 0; } @@ -21978,31 +22132,36 @@ $as_echo "$ac_try_echo") >&5 test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then - pgac_cv_var_int_optreset=yes + eval "$as_ac_var=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - pgac_cv_var_int_optreset=no + eval "$as_ac_var=no" fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:$LINENO: result: $pgac_cv_var_int_optreset" >&5 -$as_echo "$pgac_cv_var_int_optreset" >&6; } -if test x"$pgac_cv_var_int_optreset" = x"yes"; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_INT_OPTRESET 1 +ac_res=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF - + break fi +done +# Check for one of atexit() or on_exit() -for ac_func in strtoll strtoq +for ac_func in atexit do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -22098,13 +22257,10 @@ as_val=`eval 'as_val=${'$as_ac_var'} cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF - break -fi -done - +else -for ac_func in strtoull strtouq +for ac_func in on_exit do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -22200,14 +22356,158 @@ as_val=`eval 'as_val=${'$as_ac_var'} cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF - break + +else + { { $as_echo "$as_me:$LINENO: error: neither atexit() nor on_exit() found" >&5 +$as_echo "$as_me: error: neither atexit() nor on_exit() found" >&2;} + { (exit 1); exit 1; }; } fi done +fi +done -# Check for one of atexit() or on_exit() -for ac_func in atexit +{ $as_echo "$as_me:$LINENO: checking for builtin locking functions" >&5 +$as_echo_n "checking for builtin locking functions... " >&6; } +if test "${pgac_cv_gcc_int_atomics+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +int lock = 0; + __sync_lock_test_and_set(&lock, 1); + __sync_lock_release(&lock); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + pgac_cv_gcc_int_atomics="yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + pgac_cv_gcc_int_atomics="no" +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $pgac_cv_gcc_int_atomics" >&5 +$as_echo "$pgac_cv_gcc_int_atomics" >&6; } +if test x"$pgac_cv_gcc_int_atomics" = x"yes"; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_GCC_INT_ATOMICS 1 +_ACEOF + +fi + +# Lastly, restore full LIBS list and check for readline/libedit symbols +LIBS="$LIBS_including_readline" + +if test "$with_readline" = yes; then + { $as_echo "$as_me:$LINENO: checking for rl_completion_append_character" >&5 +$as_echo_n "checking for rl_completion_append_character... " >&6; } +if test "${pgac_cv_var_rl_completion_append_character+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#ifdef HAVE_READLINE_READLINE_H +# include +#elif defined(HAVE_READLINE_H) +# include +#endif + +int +main () +{ +rl_completion_append_character = 'x'; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + pgac_cv_var_rl_completion_append_character=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + pgac_cv_var_rl_completion_append_character=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $pgac_cv_var_rl_completion_append_character" >&5 +$as_echo "$pgac_cv_var_rl_completion_append_character" >&6; } +if test x"$pgac_cv_var_rl_completion_append_character" = x"yes"; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_RL_COMPLETION_APPEND_CHARACTER 1 +_ACEOF + +fi + + +for ac_func in rl_completion_matches rl_filename_completion_function do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -22304,9 +22604,12 @@ as_val=`eval 'as_val=${'$as_ac_var'} #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -else +fi +done -for ac_func in on_exit + + +for ac_func in append_history history_truncate_file do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -22403,16 +22706,10 @@ as_val=`eval 'as_val=${'$as_ac_var'} #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -else - { { $as_echo "$as_me:$LINENO: error: neither atexit() nor on_exit() found" >&5 -$as_echo "$as_me: error: neither atexit() nor on_exit() found" >&2;} - { (exit 1); exit 1; }; } fi done fi -done - # @@ -29581,6 +29878,8 @@ fi fi +# For PGXC, set -DPGXC by default. This can be overriden with -UPGXC if the user sets it. +CFLAGS="-DPGXC $CFLAGS" # Begin output steps @@ -29603,9 +29902,13 @@ fi cat >>confdefs.h <<_ACEOF -#define PG_VERSION_STR "Postgres-XC $PACKAGE_XC_VERSION on $host, based on PostgreSQL $PACKAGE_VERSION, compiled by $cc_string, `expr $ac_cv_sizeof_void_p \* 8`-bit" +#define PG_VERSION_STR "PostgreSQL $PACKAGE_VERSION on $host, compiled by $cc_string, `expr $ac_cv_sizeof_void_p \* 8`-bit" _ACEOF +# Supply additional version name for Postgres-XC +cat >>confdefs.h <<_ACEOF +#define PGXC_VERSION_STR "Postgres-XC $PACKAGE_XC_VERSION on $host, based on PostgreSQL $PACKAGE_VERSION, compiled by $cc_string, `expr $ac_cv_sizeof_void_p \* 8`-bit" +_ACEOF # Supply a numeric version string for use by 3rd party add-ons # awk -F is a regex on some platforms, and not on others, so make "." a tab @@ -30086,7 +30389,7 @@ exec 6>&1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Postgres-XC $as_me 1.0beta1, which was +This file was extended by Postgres-XC $as_me 1.0.4, which was generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -30153,7 +30456,7 @@ Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -Postgres-XC config.status 1.0beta1 +Postgres-XC config.status 1.0.4 configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" @@ -30989,4 +31292,3 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi - diff --git a/configure.in b/configure.in index 3233f57347..c6ce2d8ab7 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([Postgres-XC], [1.0beta1], [pgsql-bugs@postgresql.org]) +AC_INIT([Postgres-XC], [1.0.4], [postgres-xc-bugs@lists.sourceforge.net]) m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.63], [], [m4_fatal([Autoconf version 2.63 is required. Untested combinations of 'autoconf' and PostgreSQL versions are not @@ -436,6 +436,11 @@ if test "$GCC" = yes -a "$ICC" = no; then PGAC_PROG_CC_CFLAGS_OPT([-fno-strict-aliasing]) # Disable optimizations that assume no overflow; needed for gcc 4.3+ PGAC_PROG_CC_CFLAGS_OPT([-fwrapv]) + # Disable FP optimizations that cause various errors on gcc 4.5+ or maybe 4.6+ + PGAC_PROG_CC_CFLAGS_OPT([-fexcess-precision=standard]) + # Disable loop optimizations that get confused by variable-length struct + # declarations in gcc 4.8+ + PGAC_PROG_CC_CFLAGS_OPT([-fno-aggressive-loop-optimizations]) 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. @@ -945,8 +950,8 @@ if test "$with_openssl" = yes ; then AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])]) AC_CHECK_LIB(ssl, SSL_library_init, [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])]) else - AC_CHECK_LIB(eay32, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'eay32' is required for OpenSSL])]) - AC_CHECK_LIB(ssleay32, SSL_library_init, [], [AC_MSG_ERROR([library 'ssleay32' is required for OpenSSL])]) + 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 fi @@ -984,9 +989,9 @@ AC_SUBST(OSSP_UUID_LIBS) ## dnl sys/socket.h is required by AC_FUNC_ACCEPT_ARGTYPES -AC_CHECK_HEADERS([crypt.h dld.h fp_class.h getopt.h ieeefp.h ifaddrs.h langinfo.h poll.h pwd.h sys/ioctl.h sys/ipc.h sys/poll.h sys/pstat.h sys/resource.h sys/select.h sys/sem.h sys/shm.h sys/socket.h sys/sockio.h sys/tas.h sys/time.h sys/ucred.h sys/un.h termios.h ucred.h utime.h wchar.h wctype.h kernel/OS.h kernel/image.h SupportDefs.h]) +AC_CHECK_HEADERS([crypt.h dld.h fp_class.h getopt.h ieeefp.h ifaddrs.h langinfo.h poll.h pwd.h sys/ioctl.h sys/ipc.h sys/poll.h sys/pstat.h sys/resource.h sys/select.h sys/sem.h sys/shm.h sys/socket.h sys/sockio.h sys/tas.h sys/time.h sys/un.h termios.h ucred.h utime.h wchar.h wctype.h kernel/OS.h kernel/image.h SupportDefs.h]) -# On BSD, cpp test for net/if.h will fail unless sys/socket.h +# On BSD, test for net/if.h will fail unless sys/socket.h # is included first. AC_CHECK_HEADERS(net/if.h, [], [], [AC_INCLUDES_DEFAULT @@ -995,7 +1000,14 @@ AC_CHECK_HEADERS(net/if.h, [], [], #endif ]) -# At least on IRIX, cpp test for netinet/tcp.h will fail unless +# On OpenBSD, test for sys/ucred.h will fail unless sys/param.h +# is included first. +AC_CHECK_HEADERS(sys/ucred.h, [], [], +[AC_INCLUDES_DEFAULT +#include +]) + +# At least on IRIX, test for netinet/tcp.h will fail unless # netinet/in.h is included first. AC_CHECK_HEADERS(netinet/in.h) AC_CHECK_HEADERS(netinet/tcp.h, [], [], @@ -1127,6 +1139,7 @@ PGAC_TYPE_LOCALE_T AC_CHECK_TYPES([struct cmsgcred], [], [], [#include +#include #ifdef HAVE_SYS_UCRED_H #include #endif]) @@ -1191,7 +1204,14 @@ PGAC_VAR_INT_TIMEZONE AC_FUNC_ACCEPT_ARGTYPES PGAC_FUNC_GETTIMEOFDAY_1ARG -AC_CHECK_FUNCS([cbrt dlopen fcvt fdatasync getifaddrs getpeerucred getrlimit memmove poll pstat readlink scandir setproctitle setsid sigprocmask symlink sysconf towlower utime utimes waitpid wcstombs wcstombs_l]) +# Some versions of libedit contain strlcpy(), setproctitle(), and other +# symbols that that library has no business exposing to the world. Pending +# acquisition of a clue by those developers, ignore libedit (including its +# possible alias of libreadline) while checking for everything else. +LIBS_including_readline="$LIBS" +LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'` + +AC_CHECK_FUNCS([cbrt dlopen fcvt fdatasync getifaddrs getpeerucred getrlimit mbstowcs_l memmove poll pstat readlink scandir setproctitle setsid sigprocmask symlink sysconf towlower utime utimes waitpid wcstombs wcstombs_l]) AC_REPLACE_FUNCS(fseeko) case $host_os in @@ -1305,27 +1325,23 @@ else AC_CHECK_FUNCS([fpclass fp_class fp_class_d class], [break]) fi -# Some versions of libedit contain strlcpy(); so disregard that library while -# checking for these standard libc functions. -pgac_save_LIBS="$LIBS" -LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'` - -AC_REPLACE_FUNCS([crypt erand48 getopt getpeereid getrusage inet_aton random rint srandom strdup strerror strlcat strlcpy strtol strtoul]) +AC_REPLACE_FUNCS([crypt erand48 getopt getrusage inet_aton random rint srandom strdup strerror strlcat strlcpy strtol strtoul]) case $host_os in # Windows uses a specialised env handler + # and doesn't need a replacement getpeereid because it doesn't use + # Unix sockets. mingw*) AC_DEFINE(HAVE_UNSETENV, 1, [Define to 1 because replacement version used.]) - ac_cv_func_unsetenv=yes;; + AC_DEFINE(HAVE_GETPEEREID, 1, [Define to 1 because function not required.]) + ac_cv_func_unsetenv=yes + ac_cv_func_getpeereid=yes;; *) - AC_REPLACE_FUNCS([unsetenv]) + AC_REPLACE_FUNCS([unsetenv getpeereid]) ;; esac - -LIBS="$pgac_save_LIBS" - # System's version of getaddrinfo(), if any, may be used only if we found # a definition for struct addrinfo; see notes in src/include/getaddrinfo.h. # (Note: the AC_REPLACE_FUNCS probe fails on Windows, where the available @@ -1370,6 +1386,7 @@ if test "$PORTNAME" = "win32"; then AC_LIBOBJ(open) AC_LIBOBJ(win32env) AC_LIBOBJ(win32error) + AC_LIBOBJ(win32setlocale) AC_DEFINE([HAVE_SYMLINK], 1, [Define to 1 if you have the `symlink' function.]) AC_CHECK_TYPES(MINIDUMP_TYPE, [pgac_minidump_type=yes], [pgac_minidump_type=no], [ @@ -1384,13 +1401,6 @@ else AC_SUBST(have_win32_dbghelp,no) fi -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([append_history history_truncate_file]) -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. @@ -1435,6 +1445,26 @@ AC_CHECK_FUNCS(atexit, [], [AC_CHECK_FUNCS(on_exit, [], [AC_MSG_ERROR([neither atexit() nor on_exit() found])])]) +AC_CACHE_CHECK([for builtin locking functions], pgac_cv_gcc_int_atomics, +[AC_TRY_LINK([], + [int lock = 0; + __sync_lock_test_and_set(&lock, 1); + __sync_lock_release(&lock);], + [pgac_cv_gcc_int_atomics="yes"], + [pgac_cv_gcc_int_atomics="no"])]) +if test x"$pgac_cv_gcc_int_atomics" = x"yes"; then + AC_DEFINE(HAVE_GCC_INT_ATOMICS, 1, [Define to 1 if you have __sync_lock_test_and_set(int *) and friends.]) +fi + +# Lastly, restore full LIBS list and check for readline/libedit symbols +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([append_history history_truncate_file]) +fi + # # Pthreads diff --git a/contrib/Makefile b/contrib/Makefile index 696776795e..1cb5df778e 100644 --- a/contrib/Makefile +++ b/contrib/Makefile @@ -42,6 +42,7 @@ SUBDIRS = \ pgcrypto \ pgrowlocks \ pgstattuple \ + pgxc_clean \ seg \ spi \ tablefunc \ @@ -52,18 +53,26 @@ SUBDIRS = \ ifeq ($(with_openssl),yes) SUBDIRS += sslinfo +else +ALWAYS_SUBDIRS += sslinfo endif ifeq ($(with_ossp_uuid),yes) SUBDIRS += uuid-ossp +else +ALWAYS_SUBDIRS += uuid-ossp endif ifeq ($(with_libxml),yes) SUBDIRS += xml2 +else +ALWAYS_SUBDIRS += xml2 endif ifeq ($(with_selinux),yes) SUBDIRS += sepgsql +else +ALWAYS_SUBDIRS += sepgsql endif # Missing: @@ -71,3 +80,4 @@ endif $(recurse) +$(recurse_always) diff --git a/contrib/adminpack/adminpack--1.0.sql b/contrib/adminpack/adminpack--1.0.sql index 090702231c..f76f5c3cdf 100644 --- a/contrib/adminpack/adminpack--1.0.sql +++ b/contrib/adminpack/adminpack--1.0.sql @@ -1,5 +1,8 @@ /* contrib/adminpack/adminpack--1.0.sql */ +-- complain if script is sourced in psql, rather than via CREATE EXTENSION +\echo Use "CREATE EXTENSION adminpack" to load this file. \quit + /* *********************************************** * Administrative functions for PostgreSQL * *********************************************** */ diff --git a/contrib/auth_delay/auth_delay.c b/contrib/auth_delay/auth_delay.c index 4e0d5959d1..3131e827b8 100644 --- a/contrib/auth_delay/auth_delay.c +++ b/contrib/auth_delay/auth_delay.c @@ -59,7 +59,7 @@ _PG_init(void) NULL, &auth_delay_milliseconds, 0, - 0, INT_MAX, + 0, INT_MAX / 1000, PGC_SIGHUP, GUC_UNIT_MS, NULL, diff --git a/contrib/auto_explain/auto_explain.c b/contrib/auto_explain/auto_explain.c index b320698748..3ebc3b298e 100644 --- a/contrib/auto_explain/auto_explain.c +++ b/contrib/auto_explain/auto_explain.c @@ -282,6 +282,13 @@ explain_ExecutorEnd(QueryDesc *queryDesc) if (es.str->len > 0 && es.str->data[es.str->len - 1] == '\n') es.str->data[--es.str->len] = '\0'; + /* Fix JSON to output an object */ + if (auto_explain_log_format == EXPLAIN_FORMAT_JSON) + { + es.str->data[0] = '{'; + es.str->data[es.str->len - 1] = '}'; + } + /* * Note: we rely on the existing logging of context or * debug_query_string to identify just which statement is being diff --git a/contrib/btree_gin/btree_gin--1.0.sql b/contrib/btree_gin/btree_gin--1.0.sql index 07f93640f3..cf867ef687 100644 --- a/contrib/btree_gin/btree_gin--1.0.sql +++ b/contrib/btree_gin/btree_gin--1.0.sql @@ -1,5 +1,8 @@ /* contrib/btree_gin/btree_gin--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 + CREATE FUNCTION gin_btree_consistent(internal, int2, anyelement, int4, internal, internal) RETURNS bool AS 'MODULE_PATHNAME' diff --git a/contrib/btree_gin/btree_gin--unpackaged--1.0.sql b/contrib/btree_gin/btree_gin--unpackaged--1.0.sql index fe1ddeab87..8dfafc1e8b 100644 --- a/contrib/btree_gin/btree_gin--unpackaged--1.0.sql +++ b/contrib/btree_gin/btree_gin--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + 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); ALTER EXTENSION btree_gin ADD function gin_compare_prefix_int2(smallint,smallint,smallint,internal); diff --git a/contrib/btree_gist/btree_gist--1.0.sql b/contrib/btree_gist/btree_gist--1.0.sql index dd428995c1..c5c958753e 100644 --- a/contrib/btree_gist/btree_gist--1.0.sql +++ b/contrib/btree_gist/btree_gist--1.0.sql @@ -1,5 +1,8 @@ /* contrib/btree_gist/btree_gist--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 + CREATE FUNCTION gbtreekey4_in(cstring) RETURNS gbtreekey4 AS 'MODULE_PATHNAME', 'gbtreekey_in' diff --git a/contrib/btree_gist/btree_gist--unpackaged--1.0.sql b/contrib/btree_gist/btree_gist--unpackaged--1.0.sql index 00252bf7c3..838ad7ec1e 100644 --- a/contrib/btree_gist/btree_gist--unpackaged--1.0.sql +++ b/contrib/btree_gist/btree_gist--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION btree_gist ADD type gbtreekey4; ALTER EXTENSION btree_gist ADD function gbtreekey4_in(cstring); ALTER EXTENSION btree_gist ADD function gbtreekey4_out(gbtreekey4); diff --git a/contrib/btree_gist/btree_utils_var.c b/contrib/btree_gist/btree_utils_var.c index e73799bb21..daa1122e0d 100644 --- a/contrib/btree_gist/btree_utils_var.c +++ b/contrib/btree_gist/btree_utils_var.c @@ -106,14 +106,12 @@ gbt_var_leaf2node(GBT_VARKEY *leaf, const gbtree_vinfo *tinfo) static int32 gbt_var_node_cp_len(const GBT_VARKEY *node, const gbtree_vinfo *tinfo) { - GBT_VARKEY_R r = gbt_var_key_readable(node); int32 i = 0; int32 l = 0; int32 t1len = VARSIZE(r.lower) - VARHDRSZ; int32 t2len = VARSIZE(r.upper) - VARHDRSZ; int32 ml = Min(t1len, t2len); - char *p1 = VARDATA(r.lower); char *p2 = VARDATA(r.upper); @@ -124,7 +122,6 @@ gbt_var_node_cp_len(const GBT_VARKEY *node, const gbtree_vinfo *tinfo) { if (tinfo->eml > 1 && l == 0) { - if ((l = pg_mblen(p1)) != pg_mblen(p2)) { return i; @@ -223,13 +220,13 @@ void gbt_var_bin_union(Datum *u, GBT_VARKEY *e, Oid collation, const gbtree_vinfo *tinfo) { - GBT_VARKEY *nk = NULL; - GBT_VARKEY *tmp = NULL; - GBT_VARKEY_R nr; GBT_VARKEY_R eo = gbt_var_key_readable(e); + GBT_VARKEY_R nr; if (eo.lower == eo.upper) /* leaf */ { + GBT_VARKEY *tmp; + tmp = gbt_var_leaf2node(e, tinfo); if (tmp != e) eo = gbt_var_key_readable(tmp); @@ -237,25 +234,26 @@ gbt_var_bin_union(Datum *u, GBT_VARKEY *e, Oid collation, if (DatumGetPointer(*u)) { - GBT_VARKEY_R ro = gbt_var_key_readable((GBT_VARKEY *) DatumGetPointer(*u)); + bool update = false; + + nr.lower = ro.lower; + nr.upper = ro.upper; if ((*tinfo->f_cmp) (ro.lower, eo.lower, collation) > 0) { nr.lower = eo.lower; - nr.upper = ro.upper; - nk = gbt_var_key_copy(&nr, TRUE); + update = true; } if ((*tinfo->f_cmp) (ro.upper, eo.upper, collation) < 0) { nr.upper = eo.upper; - nr.lower = ro.lower; - nk = gbt_var_key_copy(&nr, TRUE); + update = true; } - if (nk) - *u = PointerGetDatum(nk); + if (update) + *u = PointerGetDatum(gbt_var_key_copy(&nr, TRUE)); } else { @@ -366,13 +364,14 @@ gbt_var_penalty(float *res, const GISTENTRY *o, const GISTENTRY *n, GBT_VARKEY *newe = (GBT_VARKEY *) DatumGetPointer(n->key); GBT_VARKEY_R ok, nk; - GBT_VARKEY *tmp = NULL; *res = 0.0; nk = gbt_var_key_readable(newe); if (nk.lower == nk.upper) /* leaf */ { + GBT_VARKEY *tmp; + tmp = gbt_var_leaf2node(newe, tinfo); if (tmp != newe) nk = gbt_var_key_readable(tmp); @@ -387,7 +386,7 @@ gbt_var_penalty(float *res, const GISTENTRY *o, const GISTENTRY *n, gbt_bytea_pf_match(ok.upper, nk.upper, tinfo)))) { Datum d = PointerGetDatum(0); - double dres = 0.0; + double dres; int32 ol, ul; @@ -398,20 +397,18 @@ gbt_var_penalty(float *res, const GISTENTRY *o, const GISTENTRY *n, if (ul < ol) { - dres = (ol - ul); /* lost of common prefix len */ + dres = (ol - ul); /* reduction of common prefix len */ } else { GBT_VARKEY_R uk = gbt_var_key_readable((GBT_VARKEY *) DatumGetPointer(d)); + unsigned char tmp[4]; - char tmp[4]; - - tmp[0] = ((VARSIZE(ok.lower) - VARHDRSZ) == ul) ? (CHAR_MIN) : (VARDATA(ok.lower)[ul]); - tmp[1] = ((VARSIZE(uk.lower) - VARHDRSZ) == ul) ? (CHAR_MIN) : (VARDATA(uk.lower)[ul]); - tmp[2] = ((VARSIZE(ok.upper) - VARHDRSZ) == ul) ? (CHAR_MIN) : (VARDATA(ok.upper)[ul]); - tmp[3] = ((VARSIZE(uk.upper) - VARHDRSZ) == ul) ? (CHAR_MIN) : (VARDATA(uk.upper)[ul]); - dres = (tmp[0] - tmp[1]) + - (tmp[3] - tmp[2]); + tmp[0] = (unsigned char) (((VARSIZE(ok.lower) - VARHDRSZ) <= ul) ? 0 : (VARDATA(ok.lower)[ul])); + tmp[1] = (unsigned char) (((VARSIZE(uk.lower) - VARHDRSZ) <= ul) ? 0 : (VARDATA(uk.lower)[ul])); + tmp[2] = (unsigned char) (((VARSIZE(ok.upper) - VARHDRSZ) <= ul) ? 0 : (VARDATA(ok.upper)[ul])); + tmp[3] = (unsigned char) (((VARSIZE(uk.upper) - VARHDRSZ) <= ul) ? 0 : (VARDATA(uk.upper)[ul])); + dres = Abs(tmp[0] - tmp[1]) + Abs(tmp[3] - tmp[2]); dres /= 256.0; } diff --git a/contrib/chkpass/chkpass--1.0.sql b/contrib/chkpass/chkpass--1.0.sql index 755fee3bc3..d1fbedc446 100644 --- a/contrib/chkpass/chkpass--1.0.sql +++ b/contrib/chkpass/chkpass--1.0.sql @@ -1,5 +1,8 @@ /* contrib/chkpass/chkpass--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 + -- -- Input and output functions and the type itself: -- diff --git a/contrib/chkpass/chkpass--unpackaged--1.0.sql b/contrib/chkpass/chkpass--unpackaged--1.0.sql index bf91950f3c..7bbfb142a6 100644 --- a/contrib/chkpass/chkpass--unpackaged--1.0.sql +++ b/contrib/chkpass/chkpass--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION chkpass ADD type chkpass; ALTER EXTENSION chkpass ADD function chkpass_in(cstring); ALTER EXTENSION chkpass ADD function chkpass_out(chkpass); diff --git a/contrib/chkpass/chkpass.c b/contrib/chkpass/chkpass.c index 0c9fec0e67..1795b8cde4 100644 --- a/contrib/chkpass/chkpass.c +++ b/contrib/chkpass/chkpass.c @@ -70,6 +70,7 @@ chkpass_in(PG_FUNCTION_ARGS) char *str = PG_GETARG_CSTRING(0); chkpass *result; char mysalt[4]; + char *crypt_output; static char salt_chars[] = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; @@ -92,7 +93,15 @@ chkpass_in(PG_FUNCTION_ARGS) mysalt[1] = salt_chars[random() & 0x3f]; mysalt[2] = 0; /* technically the terminator is not necessary * but I like to play safe */ - strcpy(result->password, crypt(str, mysalt)); + + crypt_output = crypt(str, mysalt); + if (crypt_output == NULL) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("crypt() failed"))); + + strlcpy(result->password, crypt_output, sizeof(result->password)); + PG_RETURN_POINTER(result); } @@ -141,9 +150,16 @@ chkpass_eq(PG_FUNCTION_ARGS) chkpass *a1 = (chkpass *) PG_GETARG_POINTER(0); text *a2 = PG_GETARG_TEXT_PP(1); char str[9]; + char *crypt_output; text_to_cstring_buffer(a2, str, sizeof(str)); - PG_RETURN_BOOL(strcmp(a1->password, crypt(str, a1->password)) == 0); + crypt_output = crypt(str, a1->password); + if (crypt_output == NULL) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("crypt() failed"))); + + PG_RETURN_BOOL(strcmp(a1->password, crypt_output) == 0); } PG_FUNCTION_INFO_V1(chkpass_ne); @@ -153,7 +169,14 @@ chkpass_ne(PG_FUNCTION_ARGS) chkpass *a1 = (chkpass *) PG_GETARG_POINTER(0); text *a2 = PG_GETARG_TEXT_PP(1); char str[9]; + char *crypt_output; text_to_cstring_buffer(a2, str, sizeof(str)); - PG_RETURN_BOOL(strcmp(a1->password, crypt(str, a1->password)) != 0); + crypt_output = crypt(str, a1->password); + if (crypt_output == NULL) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("crypt() failed"))); + + PG_RETURN_BOOL(strcmp(a1->password, crypt_output) != 0); } diff --git a/contrib/citext/citext--1.0.sql b/contrib/citext/citext--1.0.sql index 2760f7e08d..1dd19973d7 100644 --- a/contrib/citext/citext--1.0.sql +++ b/contrib/citext/citext--1.0.sql @@ -1,5 +1,8 @@ /* contrib/citext/citext--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 + -- -- PostgreSQL code for CITEXT. -- diff --git a/contrib/citext/citext--unpackaged--1.0.sql b/contrib/citext/citext--unpackaged--1.0.sql index a59df36797..102743c528 100644 --- a/contrib/citext/citext--unpackaged--1.0.sql +++ b/contrib/citext/citext--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION citext ADD type citext; ALTER EXTENSION citext ADD function citextin(cstring); ALTER EXTENSION citext ADD function citextout(citext); @@ -78,11 +81,108 @@ ALTER EXTENSION citext ADD function translate(citext,citext,text); -- -- As of 9.1, type citext should be marked collatable. There is no ALTER TYPE -- command for this, so we have to do it by poking the pg_type entry directly. +-- We have to poke any derived copies in pg_attribute or pg_index as well, +-- as well as those for arrays/domains based directly or indirectly on citext. -- Notes: 100 is the OID of the "pg_catalog.default" collation --- it seems -- easier and more reliable to hard-wire that here than to pull it out of --- pg_collation. Also, we don't need a pg_depend entry since the default --- collation is pinned. +-- pg_collation. Also, we don't need to make pg_depend entries since the +-- default collation is pinned. -- +WITH RECURSIVE typeoids(typoid) AS + ( SELECT 'citext'::pg_catalog.regtype UNION + SELECT oid FROM pg_catalog.pg_type, typeoids + WHERE typelem = typoid OR typbasetype = typoid ) UPDATE pg_catalog.pg_type SET typcollation = 100 -WHERE oid = 'citext'::pg_catalog.regtype; +FROM typeoids +WHERE oid = typeoids.typoid; + +WITH RECURSIVE typeoids(typoid) AS + ( SELECT 'citext'::pg_catalog.regtype UNION + SELECT oid FROM pg_catalog.pg_type, typeoids + WHERE typelem = typoid OR typbasetype = typoid ) +UPDATE pg_catalog.pg_attribute SET attcollation = 100 +FROM typeoids +WHERE atttypid = typeoids.typoid; + +UPDATE pg_catalog.pg_index SET indcollation[0] = 100 +WHERE indclass[0] IN ( + WITH RECURSIVE typeoids(typoid) AS + ( SELECT 'citext'::pg_catalog.regtype UNION + SELECT oid FROM pg_catalog.pg_type, typeoids + WHERE typelem = typoid OR typbasetype = typoid ) + SELECT oid FROM pg_catalog.pg_opclass, typeoids + WHERE opcintype = typeoids.typoid +); + +UPDATE pg_catalog.pg_index SET indcollation[1] = 100 +WHERE indclass[1] IN ( + WITH RECURSIVE typeoids(typoid) AS + ( SELECT 'citext'::pg_catalog.regtype UNION + SELECT oid FROM pg_catalog.pg_type, typeoids + WHERE typelem = typoid OR typbasetype = typoid ) + SELECT oid FROM pg_catalog.pg_opclass, typeoids + WHERE opcintype = typeoids.typoid +); + +UPDATE pg_catalog.pg_index SET indcollation[2] = 100 +WHERE indclass[2] IN ( + WITH RECURSIVE typeoids(typoid) AS + ( SELECT 'citext'::pg_catalog.regtype UNION + SELECT oid FROM pg_catalog.pg_type, typeoids + WHERE typelem = typoid OR typbasetype = typoid ) + SELECT oid FROM pg_catalog.pg_opclass, typeoids + WHERE opcintype = typeoids.typoid +); + +UPDATE pg_catalog.pg_index SET indcollation[3] = 100 +WHERE indclass[3] IN ( + WITH RECURSIVE typeoids(typoid) AS + ( SELECT 'citext'::pg_catalog.regtype UNION + SELECT oid FROM pg_catalog.pg_type, typeoids + WHERE typelem = typoid OR typbasetype = typoid ) + SELECT oid FROM pg_catalog.pg_opclass, typeoids + WHERE opcintype = typeoids.typoid +); + +UPDATE pg_catalog.pg_index SET indcollation[4] = 100 +WHERE indclass[4] IN ( + WITH RECURSIVE typeoids(typoid) AS + ( SELECT 'citext'::pg_catalog.regtype UNION + SELECT oid FROM pg_catalog.pg_type, typeoids + WHERE typelem = typoid OR typbasetype = typoid ) + SELECT oid FROM pg_catalog.pg_opclass, typeoids + WHERE opcintype = typeoids.typoid +); + +UPDATE pg_catalog.pg_index SET indcollation[5] = 100 +WHERE indclass[5] IN ( + WITH RECURSIVE typeoids(typoid) AS + ( SELECT 'citext'::pg_catalog.regtype UNION + SELECT oid FROM pg_catalog.pg_type, typeoids + WHERE typelem = typoid OR typbasetype = typoid ) + SELECT oid FROM pg_catalog.pg_opclass, typeoids + WHERE opcintype = typeoids.typoid +); + +UPDATE pg_catalog.pg_index SET indcollation[6] = 100 +WHERE indclass[6] IN ( + WITH RECURSIVE typeoids(typoid) AS + ( SELECT 'citext'::pg_catalog.regtype UNION + SELECT oid FROM pg_catalog.pg_type, typeoids + WHERE typelem = typoid OR typbasetype = typoid ) + SELECT oid FROM pg_catalog.pg_opclass, typeoids + WHERE opcintype = typeoids.typoid +); + +UPDATE pg_catalog.pg_index SET indcollation[7] = 100 +WHERE indclass[7] IN ( + WITH RECURSIVE typeoids(typoid) AS + ( SELECT 'citext'::pg_catalog.regtype UNION + SELECT oid FROM pg_catalog.pg_type, typeoids + WHERE typelem = typoid OR typbasetype = typoid ) + SELECT oid FROM pg_catalog.pg_opclass, typeoids + WHERE opcintype = typeoids.typoid +); + +-- somewhat arbitrarily, we assume no citext indexes have more than 8 columns diff --git a/contrib/cube/cube--1.0.sql b/contrib/cube/cube--1.0.sql index ee9febe005..0307811ceb 100644 --- a/contrib/cube/cube--1.0.sql +++ b/contrib/cube/cube--1.0.sql @@ -1,5 +1,8 @@ /* contrib/cube/cube--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 + -- Create the user-defined type for N-dimensional boxes CREATE FUNCTION cube_in(cstring) diff --git a/contrib/cube/cube--unpackaged--1.0.sql b/contrib/cube/cube--unpackaged--1.0.sql index 866c18a289..6859682786 100644 --- a/contrib/cube/cube--unpackaged--1.0.sql +++ b/contrib/cube/cube--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION cube ADD type cube; ALTER EXTENSION cube ADD function cube_in(cstring); ALTER EXTENSION cube ADD function cube(double precision[],double precision[]); diff --git a/contrib/cube/cube.c b/contrib/cube/cube.c index 4a207ccb98..2d3f5bc8e3 100644 --- a/contrib/cube/cube.c +++ b/contrib/cube/cube.c @@ -27,8 +27,8 @@ PG_MODULE_MAGIC; #define ARRPTR(x) ( (double *) ARR_DATA_PTR(x) ) #define ARRNELEMS(x) ArrayGetNItems( ARR_NDIM(x), ARR_DIMS(x)) -extern int cube_yyparse(); -extern void cube_yyerror(const char *message); +extern int cube_yyparse(NDBOX **result); +extern void cube_yyerror(NDBOX **result, const char *message); extern void cube_scanner_init(const char *str); extern void cube_scanner_finish(void); @@ -159,12 +159,12 @@ Datum cube_in(PG_FUNCTION_ARGS) { char *str = PG_GETARG_CSTRING(0); - void *result; + NDBOX *result; cube_scanner_init(str); if (cube_yyparse(&result) != 0) - cube_yyerror("bogus input"); + cube_yyerror(&result, "bogus input"); cube_scanner_finish(); diff --git a/contrib/cube/cubeparse.y b/contrib/cube/cubeparse.y index 9e7c87e903..eda5ba9604 100644 --- a/contrib/cube/cubeparse.y +++ b/contrib/cube/cubeparse.y @@ -1,10 +1,9 @@ %{ +/* contrib/cube/cubeparse.y */ + /* NdBox = [(lowerleft),(upperright)] */ /* [(xLL(1)...xLL(N)),(xUR(1)...xUR(n))] */ -/* contrib/cube/cubeparse.y */ - -#define YYPARSE_PARAM result /* need this to pass a pointer (void *) to yyparse */ #define YYSTYPE char * #define YYDEBUG 1 @@ -28,8 +27,8 @@ extern int cube_yylex(void); static char *scanbuf; static int scanbuflen; -void cube_yyerror(const char *message); -int cube_yyparse(void *result); +extern int cube_yyparse(NDBOX **result); +extern void cube_yyerror(NDBOX **result, const char *message); static int delim_count(char *s, char delim); static NDBOX * write_box(unsigned int dim, char *str1, char *str2); @@ -38,6 +37,7 @@ static NDBOX * write_point_as_box(char *s, int dim); %} /* BISON Declarations */ +%parse-param {NDBOX **result} %expect 0 %name-prefix="cube_yy" @@ -70,7 +70,7 @@ box: YYABORT; } - *((void **)result) = write_box( dim, $2, $4 ); + *result = write_box( dim, $2, $4 ); } | @@ -96,7 +96,7 @@ box: YYABORT; } - *((void **)result) = write_box( dim, $1, $3 ); + *result = write_box( dim, $1, $3 ); } | @@ -113,7 +113,7 @@ box: YYABORT; } - *((void **)result) = write_point_as_box($1, dim); + *result = write_point_as_box($1, dim); } | @@ -130,7 +130,7 @@ box: CUBE_MAX_DIM))); YYABORT; } - *((void **)result) = write_point_as_box($1, dim); + *result = write_point_as_box($1, dim); } ; diff --git a/contrib/cube/cubescan.l b/contrib/cube/cubescan.l index eb71b11adf..3c3df88b92 100644 --- a/contrib/cube/cubescan.l +++ b/contrib/cube/cubescan.l @@ -54,7 +54,7 @@ float ({integer}|{real})([eE]{integer})? %% void -yyerror(const char *message) +yyerror(NDBOX **result, const char *message) { if (*yytext == YY_END_OF_BUFFER_CHAR) { diff --git a/contrib/dblink/Makefile b/contrib/dblink/Makefile index ac637480eb..b84dc2ecd3 100644 --- a/contrib/dblink/Makefile +++ b/contrib/dblink/Makefile @@ -11,6 +11,9 @@ DATA = dblink--1.0.sql dblink--unpackaged--1.0.sql REGRESS = dblink +# the db name is hard-coded in the tests +override USE_MODULE_DB = + ifdef USE_PGXS PG_CONFIG = pg_config PGXS := $(shell $(PG_CONFIG) --pgxs) diff --git a/contrib/dblink/dblink--1.0.sql b/contrib/dblink/dblink--1.0.sql index 4ac5514461..1fec9e3944 100644 --- a/contrib/dblink/dblink--1.0.sql +++ b/contrib/dblink/dblink--1.0.sql @@ -1,5 +1,8 @@ /* contrib/dblink/dblink--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 + -- dblink_connect now restricts non-superusers to password -- authenticated connections CREATE FUNCTION dblink_connect (text) diff --git a/contrib/dblink/dblink--unpackaged--1.0.sql b/contrib/dblink/dblink--unpackaged--1.0.sql index b6d184b4a2..29f5bed0c1 100644 --- a/contrib/dblink/dblink--unpackaged--1.0.sql +++ b/contrib/dblink/dblink--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION dblink ADD function dblink_connect(text); ALTER EXTENSION dblink ADD function dblink_connect(text,text); ALTER EXTENSION dblink ADD function dblink_connect_u(text); diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c index 19b98fb73d..98316a9318 100644 --- a/contrib/dblink/dblink.c +++ b/contrib/dblink/dblink.c @@ -81,6 +81,7 @@ typedef struct remoteConn * Internal declarations */ static Datum dblink_record_internal(FunctionCallInfo fcinfo, bool is_async); +static void prepTuplestoreResult(FunctionCallInfo fcinfo); static void materializeResult(FunctionCallInfo fcinfo, PGresult *res); static remoteConn *getConnectionByName(const char *name); static HTAB *createConnHash(void); @@ -167,9 +168,10 @@ typedef struct remoteConnHashEnt do { \ char *conname_or_str = text_to_cstring(PG_GETARG_TEXT_PP(0)); \ rconn = getConnectionByName(conname_or_str); \ - if(rconn) \ + if (rconn) \ { \ conn = rconn->conn; \ + conname = conname_or_str; \ } \ else \ { \ @@ -187,19 +189,20 @@ typedef struct remoteConnHashEnt ereport(ERROR, \ (errcode(ERRCODE_SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION), \ errmsg("could not establish connection"), \ - errdetail("%s", msg))); \ + errdetail_internal("%s", msg))); \ } \ dblink_security_check(conn, rconn); \ - PQsetClientEncoding(conn, GetDatabaseEncodingName()); \ + if (PQclientEncoding(conn) != GetDatabaseEncoding()) \ + PQsetClientEncoding(conn, GetDatabaseEncodingName()); \ freeconn = true; \ } \ } while (0) #define DBLINK_GET_NAMED_CONN \ do { \ - char *conname = text_to_cstring(PG_GETARG_TEXT_PP(0)); \ + conname = text_to_cstring(PG_GETARG_TEXT_PP(0)); \ rconn = getConnectionByName(conname); \ - if(rconn) \ + if (rconn) \ conn = rconn->conn; \ else \ DBLINK_CONN_NOT_AVAIL; \ @@ -263,14 +266,15 @@ dblink_connect(PG_FUNCTION_ARGS) ereport(ERROR, (errcode(ERRCODE_SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION), errmsg("could not establish connection"), - errdetail("%s", msg))); + errdetail_internal("%s", msg))); } /* check password actually used if not superuser */ dblink_security_check(conn, rconn); - /* attempt to set client encoding to match server encoding */ - PQsetClientEncoding(conn, GetDatabaseEncodingName()); + /* attempt to set client encoding to match server encoding, if needed */ + if (PQclientEncoding(conn) != GetDatabaseEncoding()) + PQsetClientEncoding(conn, GetDatabaseEncodingName()); if (connname) { @@ -508,7 +512,6 @@ PG_FUNCTION_INFO_V1(dblink_fetch); Datum dblink_fetch(PG_FUNCTION_ARGS) { - ReturnSetInfo *rsinfo = (ReturnSetInfo *) fcinfo->resultinfo; PGresult *res = NULL; char *conname = NULL; remoteConn *rconn = NULL; @@ -518,6 +521,8 @@ dblink_fetch(PG_FUNCTION_ARGS) int howmany = 0; bool fail = true; /* default to backward compatible */ + prepTuplestoreResult(fcinfo); + DBLINK_INIT; if (PG_NARGS() == 4) @@ -564,11 +569,6 @@ dblink_fetch(PG_FUNCTION_ARGS) if (!conn) DBLINK_CONN_NOT_AVAIL; - /* let the caller know we're sending back a tuplestore */ - rsinfo->returnMode = SFRM_Materialize; - rsinfo->setResult = NULL; - rsinfo->setDesc = NULL; - initStringInfo(&buf); appendStringInfo(&buf, "FETCH %d FROM %s", howmany, curname); @@ -612,17 +612,15 @@ PG_FUNCTION_INFO_V1(dblink_send_query); Datum dblink_send_query(PG_FUNCTION_ARGS) { + char *conname = NULL; PGconn *conn = NULL; - char *connstr = NULL; char *sql = NULL; remoteConn *rconn = NULL; - char *msg; - bool freeconn = false; int retval; if (PG_NARGS() == 2) { - DBLINK_GET_CONN; + DBLINK_GET_NAMED_CONN; sql = text_to_cstring(PG_GETARG_TEXT_PP(1)); } else @@ -647,7 +645,6 @@ dblink_get_result(PG_FUNCTION_ARGS) static Datum dblink_record_internal(FunctionCallInfo fcinfo, bool is_async) { - ReturnSetInfo *rsinfo = (ReturnSetInfo *) fcinfo->resultinfo; char *msg; PGresult *res = NULL; PGconn *conn = NULL; @@ -658,16 +655,7 @@ dblink_record_internal(FunctionCallInfo fcinfo, bool is_async) bool fail = true; /* default to backward compatible */ bool freeconn = false; - /* check to see if caller supports us returning a tuplestore */ - if (rsinfo == NULL || !IsA(rsinfo, ReturnSetInfo)) - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("set-valued function called in context that cannot accept a set"))); - if (!(rsinfo->allowedModes & SFRM_Materialize)) - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("materialize mode required, but it is not " \ - "allowed in this context"))); + prepTuplestoreResult(fcinfo); DBLINK_INIT; @@ -711,13 +699,13 @@ dblink_record_internal(FunctionCallInfo fcinfo, bool is_async) if (PG_NARGS() == 2) { /* text,bool */ - DBLINK_GET_CONN; + DBLINK_GET_NAMED_CONN; fail = PG_GETARG_BOOL(1); } else if (PG_NARGS() == 1) { /* text */ - DBLINK_GET_CONN; + DBLINK_GET_NAMED_CONN; } else /* shouldn't happen */ @@ -727,11 +715,6 @@ dblink_record_internal(FunctionCallInfo fcinfo, bool is_async) if (!conn) DBLINK_CONN_NOT_AVAIL; - /* let the caller know we're sending back a tuplestore */ - rsinfo->returnMode = SFRM_Materialize; - rsinfo->setResult = NULL; - rsinfo->setDesc = NULL; - /* synchronous query, or async result retrieval */ if (!is_async) res = PQexec(conn, sql); @@ -760,14 +743,45 @@ dblink_record_internal(FunctionCallInfo fcinfo, bool is_async) } /* - * Materialize the PGresult to return them as the function result. - * The res will be released in this function. + * Verify function caller can handle a tuplestore result, and set up for that. + * + * Note: if the caller returns without actually creating a tuplestore, the + * executor will treat the function result as an empty set. + */ +static void +prepTuplestoreResult(FunctionCallInfo fcinfo) +{ + ReturnSetInfo *rsinfo = (ReturnSetInfo *) fcinfo->resultinfo; + + /* check to see if query supports us returning a tuplestore */ + if (rsinfo == NULL || !IsA(rsinfo, ReturnSetInfo)) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("set-valued function called in context that cannot accept a set"))); + if (!(rsinfo->allowedModes & SFRM_Materialize)) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("materialize mode required, but it is not allowed in this context"))); + + /* let the executor know we're sending back a tuplestore */ + rsinfo->returnMode = SFRM_Materialize; + + /* caller must fill these to return a non-empty result */ + rsinfo->setResult = NULL; + rsinfo->setDesc = NULL; +} + +/* + * Copy the contents of the PGresult into a tuplestore to be returned + * as the result of the current function. + * The PGresult will be released in this function. */ static void materializeResult(FunctionCallInfo fcinfo, PGresult *res) { ReturnSetInfo *rsinfo = (ReturnSetInfo *) fcinfo->resultinfo; + /* prepTuplestoreResult must have been called previously */ Assert(rsinfo->returnMode == SFRM_Materialize); PG_TRY(); @@ -936,6 +950,7 @@ PG_FUNCTION_INFO_V1(dblink_is_busy); Datum dblink_is_busy(PG_FUNCTION_ARGS) { + char *conname = NULL; PGconn *conn = NULL; remoteConn *rconn = NULL; @@ -962,6 +977,7 @@ Datum dblink_cancel_query(PG_FUNCTION_ARGS) { int res = 0; + char *conname = NULL; PGconn *conn = NULL; remoteConn *rconn = NULL; PGcancel *cancel; @@ -996,6 +1012,7 @@ Datum dblink_error_message(PG_FUNCTION_ARGS) { char *msg; + char *conname = NULL; PGconn *conn = NULL; remoteConn *rconn = NULL; @@ -1016,85 +1033,97 @@ PG_FUNCTION_INFO_V1(dblink_exec); Datum dblink_exec(PG_FUNCTION_ARGS) { - char *msg; - PGresult *res = NULL; - text *sql_cmd_status = NULL; - PGconn *conn = NULL; - char *connstr = NULL; - char *sql = NULL; - char *conname = NULL; - remoteConn *rconn = NULL; - bool freeconn = false; - bool fail = true; /* default to backward compatible behavior */ + text *volatile sql_cmd_status = NULL; + PGconn *volatile conn = NULL; + volatile bool freeconn = false; DBLINK_INIT; - if (PG_NARGS() == 3) - { - /* must be text,text,bool */ - DBLINK_GET_CONN; - sql = text_to_cstring(PG_GETARG_TEXT_PP(1)); - fail = PG_GETARG_BOOL(2); - } - else if (PG_NARGS() == 2) + PG_TRY(); { - /* might be text,text or text,bool */ - if (get_fn_expr_argtype(fcinfo->flinfo, 1) == BOOLOID) + char *msg; + PGresult *res = NULL; + char *connstr = NULL; + char *sql = NULL; + char *conname = NULL; + remoteConn *rconn = NULL; + bool fail = true; /* default to backward compatible behavior */ + + if (PG_NARGS() == 3) { + /* must be text,text,bool */ + DBLINK_GET_CONN; + sql = text_to_cstring(PG_GETARG_TEXT_PP(1)); + fail = PG_GETARG_BOOL(2); + } + else if (PG_NARGS() == 2) + { + /* might be text,text or text,bool */ + if (get_fn_expr_argtype(fcinfo->flinfo, 1) == BOOLOID) + { + conn = pconn->conn; + sql = text_to_cstring(PG_GETARG_TEXT_PP(0)); + fail = PG_GETARG_BOOL(1); + } + else + { + DBLINK_GET_CONN; + sql = text_to_cstring(PG_GETARG_TEXT_PP(1)); + } + } + else if (PG_NARGS() == 1) + { + /* must be single text argument */ conn = pconn->conn; sql = text_to_cstring(PG_GETARG_TEXT_PP(0)); - fail = PG_GETARG_BOOL(1); } else - { - DBLINK_GET_CONN; - sql = text_to_cstring(PG_GETARG_TEXT_PP(1)); - } - } - else if (PG_NARGS() == 1) - { - /* must be single text argument */ - conn = pconn->conn; - sql = text_to_cstring(PG_GETARG_TEXT_PP(0)); - } - else - /* shouldn't happen */ - elog(ERROR, "wrong number of arguments"); + /* shouldn't happen */ + elog(ERROR, "wrong number of arguments"); - if (!conn) - DBLINK_CONN_NOT_AVAIL; + if (!conn) + DBLINK_CONN_NOT_AVAIL; - res = PQexec(conn, sql); - if (!res || - (PQresultStatus(res) != PGRES_COMMAND_OK && - PQresultStatus(res) != PGRES_TUPLES_OK)) - { - dblink_res_error(conname, res, "could not execute command", fail); + res = PQexec(conn, sql); + if (!res || + (PQresultStatus(res) != PGRES_COMMAND_OK && + PQresultStatus(res) != PGRES_TUPLES_OK)) + { + dblink_res_error(conname, res, "could not execute command", fail); - /* - * and save a copy of the command status string to return as our - * result tuple - */ - sql_cmd_status = cstring_to_text("ERROR"); - } - else if (PQresultStatus(res) == PGRES_COMMAND_OK) - { - /* - * and save a copy of the command status string to return as our - * result tuple - */ - sql_cmd_status = cstring_to_text(PQcmdStatus(res)); - PQclear(res); + /* + * and save a copy of the command status string to return as our + * result tuple + */ + sql_cmd_status = cstring_to_text("ERROR"); + } + else if (PQresultStatus(res) == PGRES_COMMAND_OK) + { + /* + * and save a copy of the command status string to return as our + * result tuple + */ + sql_cmd_status = cstring_to_text(PQcmdStatus(res)); + PQclear(res); + } + else + { + PQclear(res); + ereport(ERROR, + (errcode(ERRCODE_S_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED), + errmsg("statement returning results not allowed"))); + } } - else + PG_CATCH(); { - PQclear(res); - ereport(ERROR, - (errcode(ERRCODE_S_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED), - errmsg("statement returning results not allowed"))); + /* if needed, close the connection to the database */ + if (freeconn) + PQfinish(conn); + PG_RE_THROW(); } + PG_END_TRY(); - /* if needed, close the connection to the database and cleanup */ + /* if needed, close the connection to the database */ if (freeconn) PQfinish(conn); @@ -1505,6 +1534,7 @@ PG_FUNCTION_INFO_V1(dblink_get_notify); Datum dblink_get_notify(PG_FUNCTION_ARGS) { + char *conname = NULL; PGconn *conn = NULL; remoteConn *rconn = NULL; PGnotify *notify; @@ -1514,13 +1544,15 @@ dblink_get_notify(PG_FUNCTION_ARGS) MemoryContext per_query_ctx; MemoryContext oldcontext; + prepTuplestoreResult(fcinfo); + DBLINK_INIT; if (PG_NARGS() == 1) DBLINK_GET_NAMED_CONN; else conn = pconn->conn; - /* create the tuplestore */ + /* create the tuplestore in per-query memory */ per_query_ctx = rsinfo->econtext->ecxt_per_query_memory; oldcontext = MemoryContextSwitchTo(per_query_ctx); @@ -1533,7 +1565,6 @@ dblink_get_notify(PG_FUNCTION_ARGS) TEXTOID, -1, 0); tupstore = tuplestore_begin_heap(true, false, work_mem); - rsinfo->returnMode = SFRM_Materialize; rsinfo->setResult = tupstore; rsinfo->setDesc = tupdesc; @@ -2264,8 +2295,9 @@ dblink_res_error(const char *conname, PGresult *res, const char *dblink_context_ ereport(level, (errcode(sqlstate), - message_primary ? errmsg("%s", message_primary) : errmsg("unknown error"), - message_detail ? errdetail("%s", message_detail) : 0, + message_primary ? errmsg_internal("%s", message_primary) : + errmsg("unknown error"), + message_detail ? errdetail_internal("%s", message_detail) : 0, message_hint ? errhint("%s", message_hint) : 0, message_context ? errcontext("%s", message_context) : 0, errcontext("Error occurred on dblink connection named \"%s\": %s.", diff --git a/contrib/dblink/expected/dblink.out b/contrib/dblink/expected/dblink.out index 511dd5efcf..1db153aeb1 100644 --- a/contrib/dblink/expected/dblink.out +++ b/contrib/dblink/expected/dblink.out @@ -371,7 +371,7 @@ SELECT * FROM dblink('myconn','SELECT * FROM foobar',false) AS t(a int, b text, c text[]) WHERE t.a > 7; NOTICE: relation "foobar" does not exist -CONTEXT: Error occurred on dblink connection named "unnamed": could not execute query. +CONTEXT: Error occurred on dblink connection named "myconn": could not execute query. a | b | c ---+---+--- (0 rows) @@ -494,7 +494,7 @@ SELECT dblink_close('myconn','rmt_foo_cursor'); -- this should fail because there is no open transaction SELECT dblink_exec('myconn','DECLARE xact_test CURSOR FOR SELECT * FROM foo'); ERROR: DECLARE CURSOR can only be used in transaction blocks -CONTEXT: Error occurred on dblink connection named "unnamed": could not execute command. +CONTEXT: Error occurred on dblink connection named "myconn": could not execute command. -- reset remote transaction state SELECT dblink_exec('myconn','ABORT'); dblink_exec diff --git a/contrib/dict_int/dict_int--1.0.sql b/contrib/dict_int/dict_int--1.0.sql index 585a56552d..acb1461b56 100644 --- a/contrib/dict_int/dict_int--1.0.sql +++ b/contrib/dict_int/dict_int--1.0.sql @@ -1,5 +1,8 @@ /* contrib/dict_int/dict_int--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 + CREATE FUNCTION dintdict_init(internal) RETURNS internal AS 'MODULE_PATHNAME' diff --git a/contrib/dict_int/dict_int--unpackaged--1.0.sql b/contrib/dict_int/dict_int--unpackaged--1.0.sql index f89218a565..ef59b046ee 100644 --- a/contrib/dict_int/dict_int--unpackaged--1.0.sql +++ b/contrib/dict_int/dict_int--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION dict_int ADD function dintdict_init(internal); ALTER EXTENSION dict_int ADD function dintdict_lexize(internal,internal,internal,internal); ALTER EXTENSION dict_int ADD text search template intdict_template; diff --git a/contrib/dict_int/dict_int.c b/contrib/dict_int/dict_int.c index c4ad6ef343..ed82d83004 100644 --- a/contrib/dict_int/dict_int.c +++ b/contrib/dict_int/dict_int.c @@ -73,7 +73,7 @@ dintdict_lexize(PG_FUNCTION_ARGS) DictInt *d = (DictInt *) PG_GETARG_POINTER(0); char *in = (char *) PG_GETARG_POINTER(1); char *txt = pnstrdup(in, PG_GETARG_INT32(2)); - TSLexeme *res = palloc(sizeof(TSLexeme) * 2); + TSLexeme *res = palloc0(sizeof(TSLexeme) * 2); res[1].lexeme = NULL; if (PG_GETARG_INT32(2) > d->maxlen) diff --git a/contrib/dict_xsyn/dict_xsyn--1.0.sql b/contrib/dict_xsyn/dict_xsyn--1.0.sql index 30eaff4db5..3d6bb51ca8 100644 --- a/contrib/dict_xsyn/dict_xsyn--1.0.sql +++ b/contrib/dict_xsyn/dict_xsyn--1.0.sql @@ -1,5 +1,8 @@ /* contrib/dict_xsyn/dict_xsyn--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 + CREATE FUNCTION dxsyn_init(internal) RETURNS internal AS 'MODULE_PATHNAME' diff --git a/contrib/dict_xsyn/dict_xsyn--unpackaged--1.0.sql b/contrib/dict_xsyn/dict_xsyn--unpackaged--1.0.sql index 6fe0285f79..1d193f7981 100644 --- a/contrib/dict_xsyn/dict_xsyn--unpackaged--1.0.sql +++ b/contrib/dict_xsyn/dict_xsyn--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION dict_xsyn ADD function dxsyn_init(internal); ALTER EXTENSION dict_xsyn ADD function dxsyn_lexize(internal,internal,internal,internal); ALTER EXTENSION dict_xsyn ADD text search template xsyn_template; diff --git a/contrib/dict_xsyn/dict_xsyn.c b/contrib/dict_xsyn/dict_xsyn.c index ded20facd4..18301effc7 100644 --- a/contrib/dict_xsyn/dict_xsyn.c +++ b/contrib/dict_xsyn/dict_xsyn.c @@ -245,6 +245,8 @@ dxsyn_lexize(PG_FUNCTION_ARGS) if (pos != value || d->keeporig) { res[nsyns].lexeme = pnstrdup(syn, end - syn); + res[nsyns].nvariant = 0; + res[nsyns].flags = 0; nsyns++; } diff --git a/contrib/earthdistance/earthdistance--1.0.sql b/contrib/earthdistance/earthdistance--1.0.sql index 71e4025f6f..4af9062e7d 100644 --- a/contrib/earthdistance/earthdistance--1.0.sql +++ b/contrib/earthdistance/earthdistance--1.0.sql @@ -1,5 +1,8 @@ /* contrib/earthdistance/earthdistance--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 + -- earth() returns the radius of the earth in meters. This is the only -- place you need to change things for the cube base distance functions -- in order to use different units (or a better value for the Earth's radius). diff --git a/contrib/earthdistance/earthdistance--unpackaged--1.0.sql b/contrib/earthdistance/earthdistance--unpackaged--1.0.sql index 2d5919cc72..362e0ac107 100644 --- a/contrib/earthdistance/earthdistance--unpackaged--1.0.sql +++ b/contrib/earthdistance/earthdistance--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION earthdistance ADD function earth(); ALTER EXTENSION earthdistance ADD type earth; ALTER EXTENSION earthdistance ADD function sec_to_gc(double precision); diff --git a/contrib/earthdistance/expected/earthdistance.out b/contrib/earthdistance/expected/earthdistance.out index 8a3fc749c1..9bd556fc22 100644 --- a/contrib/earthdistance/expected/earthdistance.out +++ b/contrib/earthdistance/expected/earthdistance.out @@ -1,6 +1,14 @@ -- --- Test earth distance functions +-- Test earthdistance extension -- +-- In this file we also do some testing of extension create/drop scenarios. +-- That's really exercising the core database's dependency logic, so ideally +-- we'd do it in the core regression tests, but we can't for lack of suitable +-- guaranteed-available extensions. earthdistance is a good test case because +-- it has a dependency on the cube extension. +-- +CREATE EXTENSION earthdistance; -- fail, must install cube first +ERROR: required extension "cube" is not installed CREATE EXTENSION cube; CREATE EXTENSION earthdistance; -- @@ -945,3 +953,141 @@ SELECT abs(cube_distance(ll_to_earth(-30,-90), '(0)'::cube) / earth() - 1) < t (1 row) +-- +-- Now we are going to test extension create/drop scenarios. +-- +-- list what's installed +\dT + List of data types + Schema | Name | Description +--------+-------+--------------------------------------------------------------------------------------------- + public | cube | multi-dimensional cube '(FLOAT-1, FLOAT-2, ..., FLOAT-N), (FLOAT-1, FLOAT-2, ..., FLOAT-N)' + public | earth | +(2 rows) + +drop extension cube; -- fail, earthdistance requires it +ERROR: cannot drop extension cube because other objects depend on it +DETAIL: extension earthdistance depends on extension cube +HINT: Use DROP ... CASCADE to drop the dependent objects too. +drop extension earthdistance; +drop type cube; -- fail, extension cube requires it +ERROR: cannot drop type cube because extension cube requires it +HINT: You can drop extension cube instead. +-- list what's installed +\dT + List of data types + Schema | Name | Description +--------+------+--------------------------------------------------------------------------------------------- + public | cube | multi-dimensional cube '(FLOAT-1, FLOAT-2, ..., FLOAT-N), (FLOAT-1, FLOAT-2, ..., FLOAT-N)' +(1 row) + +create table foo (f1 cube, f2 int); +drop extension cube; -- fail, foo.f1 requires it +ERROR: cannot drop extension cube because other objects depend on it +DETAIL: table foo column f1 depends on type cube +HINT: Use DROP ... CASCADE to drop the dependent objects too. +drop table foo; +drop extension cube; +-- list what's installed +\dT + List of data types + Schema | Name | Description +--------+------+------------- +(0 rows) + +\df + List of functions + Schema | Name | Result data type | Argument data types | Type +--------+------+------------------+---------------------+------ +(0 rows) + +\do + List of operators + Schema | Name | Left arg type | Right arg type | Result type | Description +--------+------+---------------+----------------+-------------+------------- +(0 rows) + +create schema c; +create extension cube with schema c; +-- list what's installed +\dT public.* + List of data types + Schema | Name | Description +--------+------+------------- +(0 rows) + +\df public.* + List of functions + Schema | Name | Result data type | Argument data types | Type +--------+------+------------------+---------------------+------ +(0 rows) + +\do public.* + List of operators + Schema | Name | Left arg type | Right arg type | Result type | Description +--------+------+---------------+----------------+-------------+------------- +(0 rows) + +\dT c.* + List of data types + Schema | Name | Description +--------+--------+--------------------------------------------------------------------------------------------- + c | c.cube | multi-dimensional cube '(FLOAT-1, FLOAT-2, ..., FLOAT-N), (FLOAT-1, FLOAT-2, ..., FLOAT-N)' +(1 row) + +create table foo (f1 c.cube, f2 int); +drop extension cube; -- fail, foo.f1 requires it +ERROR: cannot drop extension cube because other objects depend on it +DETAIL: table foo column f1 depends on type c.cube +HINT: Use DROP ... CASCADE to drop the dependent objects too. +drop schema c; -- fail, cube requires it +ERROR: cannot drop schema c because other objects depend on it +DETAIL: extension cube depends on schema c +table foo column f1 depends on type c.cube +HINT: Use DROP ... CASCADE to drop the dependent objects too. +drop extension cube cascade; +NOTICE: drop cascades to table foo column f1 +\d foo + Table "public.foo" + Column | Type | Modifiers +--------+---------+----------- + f2 | integer | + +-- list what's installed +\dT public.* + List of data types + Schema | Name | Description +--------+------+------------- +(0 rows) + +\df public.* + List of functions + Schema | Name | Result data type | Argument data types | Type +--------+------+------------------+---------------------+------ +(0 rows) + +\do public.* + List of operators + Schema | Name | Left arg type | Right arg type | Result type | Description +--------+------+---------------+----------------+-------------+------------- +(0 rows) + +\dT c.* + List of data types + Schema | Name | Description +--------+------+------------- +(0 rows) + +\df c.* + List of functions + Schema | Name | Result data type | Argument data types | Type +--------+------+------------------+---------------------+------ +(0 rows) + +\do c.* + List of operators + Schema | Name | Left arg type | Right arg type | Result type | Description +--------+------+---------------+----------------+-------------+------------- +(0 rows) + +drop schema c; diff --git a/contrib/earthdistance/sql/earthdistance.sql b/contrib/earthdistance/sql/earthdistance.sql index e494c350ce..860450276f 100644 --- a/contrib/earthdistance/sql/earthdistance.sql +++ b/contrib/earthdistance/sql/earthdistance.sql @@ -1,7 +1,14 @@ -- --- Test earth distance functions +-- Test earthdistance extension +-- +-- In this file we also do some testing of extension create/drop scenarios. +-- That's really exercising the core database's dependency logic, so ideally +-- we'd do it in the core regression tests, but we can't for lack of suitable +-- guaranteed-available extensions. earthdistance is a good test case because +-- it has a dependency on the cube extension. -- +CREATE EXTENSION earthdistance; -- fail, must install cube first CREATE EXTENSION cube; CREATE EXTENSION earthdistance; @@ -291,3 +298,62 @@ SELECT is_point(ll_to_earth(-30,-90)); SELECT cube_dim(ll_to_earth(-30,-90)) <= 3; SELECT abs(cube_distance(ll_to_earth(-30,-90), '(0)'::cube) / earth() - 1) < '10e-12'::float8; + +-- +-- Now we are going to test extension create/drop scenarios. +-- + +-- list what's installed +\dT + +drop extension cube; -- fail, earthdistance requires it + +drop extension earthdistance; + +drop type cube; -- fail, extension cube requires it + +-- list what's installed +\dT + +create table foo (f1 cube, f2 int); + +drop extension cube; -- fail, foo.f1 requires it + +drop table foo; + +drop extension cube; + +-- list what's installed +\dT +\df +\do + +create schema c; + +create extension cube with schema c; + +-- list what's installed +\dT public.* +\df public.* +\do public.* +\dT c.* + +create table foo (f1 c.cube, f2 int); + +drop extension cube; -- fail, foo.f1 requires it + +drop schema c; -- fail, cube requires it + +drop extension cube cascade; + +\d foo + +-- list what's installed +\dT public.* +\df public.* +\do public.* +\dT c.* +\df c.* +\do c.* + +drop schema c; diff --git a/contrib/file_fdw/file_fdw--1.0.sql b/contrib/file_fdw/file_fdw--1.0.sql index 0cca65f463..856e6bf0a7 100644 --- a/contrib/file_fdw/file_fdw--1.0.sql +++ b/contrib/file_fdw/file_fdw--1.0.sql @@ -1,5 +1,8 @@ /* contrib/file_fdw/file_fdw--1.0.sql */ +-- complain if script is sourced in psql, rather than via CREATE EXTENSION +\echo Use "CREATE EXTENSION file_fdw" to load this file. \quit + CREATE FUNCTION file_fdw_handler() RETURNS fdw_handler AS 'MODULE_PATHNAME' diff --git a/contrib/file_fdw/file_fdw.c b/contrib/file_fdw/file_fdw.c index 466c015107..4eb87e651b 100644 --- a/contrib/file_fdw/file_fdw.c +++ b/contrib/file_fdw/file_fdw.c @@ -215,6 +215,14 @@ file_fdw_validator(PG_FUNCTION_ARGS) */ ProcessCopyOptions(NULL, true, other_options); + /* + * Filename option is required for file_fdw foreign tables. + */ + if (catalog == ForeignTableRelationId && filename == NULL) + ereport(ERROR, + (errcode(ERRCODE_FDW_DYNAMIC_PARAMETER_VALUE_NEEDED), + errmsg("filename is required for file_fdw foreign tables"))); + PG_RETURN_VOID(); } @@ -286,10 +294,14 @@ fileGetOptions(Oid foreigntableid, } prev = lc; } + + /* + * The validator should have checked that a filename was included in the + * options, but check again, just in case. + */ if (*filename == NULL) - ereport(ERROR, - (errcode(ERRCODE_FDW_UNABLE_TO_CREATE_REPLY), - errmsg("filename is required for file_fdw foreign tables"))); + elog(ERROR, "filename is required for file_fdw foreign tables"); + *other_options = options; } diff --git a/contrib/file_fdw/input/file_fdw.source b/contrib/file_fdw/input/file_fdw.source index 9ff7235a12..1405752819 100644 --- a/contrib/file_fdw/input/file_fdw.source +++ b/contrib/file_fdw/input/file_fdw.source @@ -59,6 +59,7 @@ CREATE FOREIGN TABLE tbl () SERVER file_server OPTIONS (format 'csv', delimiter '); -- ERROR CREATE FOREIGN TABLE tbl () SERVER file_server OPTIONS (format 'csv', null ' '); -- ERROR +CREATE FOREIGN TABLE tbl () SERVER file_server; -- ERROR CREATE FOREIGN TABLE agg_text ( a int2, diff --git a/contrib/file_fdw/output/file_fdw.source b/contrib/file_fdw/output/file_fdw.source index 2ba36c9368..6dd2653d0a 100644 --- a/contrib/file_fdw/output/file_fdw.source +++ b/contrib/file_fdw/output/file_fdw.source @@ -75,6 +75,8 @@ ERROR: COPY delimiter cannot be newline or carriage return CREATE FOREIGN TABLE tbl () SERVER file_server OPTIONS (format 'csv', null ' '); -- ERROR ERROR: COPY null representation cannot use newline or carriage return +CREATE FOREIGN TABLE tbl () SERVER file_server; -- ERROR +ERROR: filename is required for file_fdw foreign tables CREATE FOREIGN TABLE agg_text ( a int2, b float4 diff --git a/contrib/fuzzystrmatch/fuzzystrmatch--1.0.sql b/contrib/fuzzystrmatch/fuzzystrmatch--1.0.sql index d9b8987adf..1cf9b6188c 100644 --- a/contrib/fuzzystrmatch/fuzzystrmatch--1.0.sql +++ b/contrib/fuzzystrmatch/fuzzystrmatch--1.0.sql @@ -1,5 +1,8 @@ /* contrib/fuzzystrmatch/fuzzystrmatch--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 + CREATE FUNCTION levenshtein (text,text) RETURNS int AS 'MODULE_PATHNAME','levenshtein' LANGUAGE C IMMUTABLE STRICT; diff --git a/contrib/fuzzystrmatch/fuzzystrmatch--unpackaged--1.0.sql b/contrib/fuzzystrmatch/fuzzystrmatch--unpackaged--1.0.sql index b99510bcdd..b9a805a4fe 100644 --- a/contrib/fuzzystrmatch/fuzzystrmatch--unpackaged--1.0.sql +++ b/contrib/fuzzystrmatch/fuzzystrmatch--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION fuzzystrmatch ADD function levenshtein(text,text); ALTER EXTENSION fuzzystrmatch ADD function levenshtein(text,text,integer,integer,integer); ALTER EXTENSION fuzzystrmatch ADD function metaphone(text,integer); diff --git a/contrib/hstore/hstore--1.0.sql b/contrib/hstore/hstore--1.0.sql index 247a2773f5..8b211c4669 100644 --- a/contrib/hstore/hstore--1.0.sql +++ b/contrib/hstore/hstore--1.0.sql @@ -1,5 +1,8 @@ /* contrib/hstore/hstore--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 + CREATE TYPE hstore; CREATE FUNCTION hstore_in(cstring) diff --git a/contrib/hstore/hstore--unpackaged--1.0.sql b/contrib/hstore/hstore--unpackaged--1.0.sql index 0eb300ecf5..b7e73f4123 100644 --- a/contrib/hstore/hstore--unpackaged--1.0.sql +++ b/contrib/hstore/hstore--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION hstore ADD type hstore; ALTER EXTENSION hstore ADD function hstore_in(cstring); ALTER EXTENSION hstore ADD function hstore_out(hstore); diff --git a/contrib/hstore/hstore.h b/contrib/hstore/hstore.h index 8906397ad2..4e55f6e5e2 100644 --- a/contrib/hstore/hstore.h +++ b/contrib/hstore/hstore.h @@ -49,9 +49,12 @@ typedef struct } HStore; /* - * it's not possible to get more than 2^28 items into an hstore, - * so we reserve the top few bits of the size field. See hstore_compat.c - * for one reason why. Some bits are left for future use here. + * It's not possible to get more than 2^28 items into an hstore, so we reserve + * the top few bits of the size field. See hstore_compat.c for one reason + * why. Some bits are left for future use here. MaxAllocSize makes the + * practical count limit slightly more than 2^28 / 3, or INT_MAX / 24, the + * limit for an hstore full of 4-byte keys and null values. Therefore, we + * don't explicitly check the format-imposed limit. */ #define HS_FLAG_NEWVERSION 0x80000000 @@ -59,6 +62,12 @@ typedef struct #define HS_SETCOUNT(hsp_,c_) ((hsp_)->size_ = (c_) | HS_FLAG_NEWVERSION) +/* + * "x" comes from an existing HS_COUNT() (as discussed, <= INT_MAX/24) or a + * Pairs array length (due to MaxAllocSize, <= INT_MAX/40). "lenstr" is no + * more than INT_MAX, that extreme case arising in hstore_from_arrays(). + * Therefore, this calculation is limited to about INT_MAX / 5 + INT_MAX. + */ #define HSHRDSIZE (sizeof(HStore)) #define CALCDATASIZE(x, lenstr) ( (x) * 2 * sizeof(HEntry) + HSHRDSIZE + (lenstr) ) diff --git a/contrib/hstore/hstore_io.c b/contrib/hstore/hstore_io.c index 73312ab293..b8384217d5 100644 --- a/contrib/hstore/hstore_io.c +++ b/contrib/hstore/hstore_io.c @@ -11,6 +11,7 @@ #include "funcapi.h" #include "libpq/pqformat.h" #include "utils/lsyscache.h" +#include "utils/memutils.h" #include "utils/typcache.h" #include "hstore.h" @@ -438,6 +439,11 @@ hstore_recv(PG_FUNCTION_ARGS) PG_RETURN_POINTER(out); } + if (pcount < 0 || pcount > MaxAllocSize / sizeof(Pairs)) + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("number of pairs (%d) exceeds the maximum allowed (%d)", + pcount, (int) (MaxAllocSize / sizeof(Pairs))))); pairs = palloc(pcount * sizeof(Pairs)); for (i = 0; i < pcount; ++i) @@ -553,6 +559,13 @@ hstore_from_arrays(PG_FUNCTION_ARGS) TEXTOID, -1, false, 'i', &key_datums, &key_nulls, &key_count); + /* see discussion in hstoreArrayToPairs() */ + if (key_count > MaxAllocSize / sizeof(Pairs)) + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("number of pairs (%d) exceeds the maximum allowed (%d)", + key_count, (int) (MaxAllocSize / sizeof(Pairs))))); + /* value_array might be NULL */ if (PG_ARGISNULL(1)) @@ -675,6 +688,13 @@ hstore_from_array(PG_FUNCTION_ARGS) count = in_count / 2; + /* see discussion in hstoreArrayToPairs() */ + if (count > MaxAllocSize / sizeof(Pairs)) + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("number of pairs (%d) exceeds the maximum allowed (%d)", + count, (int) (MaxAllocSize / sizeof(Pairs))))); + pairs = palloc(count * sizeof(Pairs)); for (i = 0; i < count; ++i) @@ -806,6 +826,7 @@ hstore_from_record(PG_FUNCTION_ARGS) my_extra->ncolumns = ncolumns; } + Assert(ncolumns <= MaxTupleAttributeNumber); /* thus, no overflow */ pairs = palloc(ncolumns * sizeof(Pairs)); if (rec) diff --git a/contrib/hstore/hstore_op.c b/contrib/hstore/hstore_op.c index 5b278c14ff..a60e72ee6c 100644 --- a/contrib/hstore/hstore_op.c +++ b/contrib/hstore/hstore_op.c @@ -9,6 +9,7 @@ #include "catalog/pg_type.h" #include "funcapi.h" #include "utils/builtins.h" +#include "utils/memutils.h" #include "hstore.h" @@ -91,6 +92,19 @@ hstoreArrayToPairs(ArrayType *a, int *npairs) return NULL; } + /* + * A text array uses at least eight bytes per element, so any overflow in + * "key_count * sizeof(Pairs)" is small enough for palloc() to catch. + * However, credible improvements to the array format could invalidate + * that assumption. Therefore, use an explicit check rather than relying + * on palloc() to complain. + */ + if (key_count > MaxAllocSize / sizeof(Pairs)) + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("number of pairs (%d) exceeds the maximum allowed (%d)", + key_count, (int) (MaxAllocSize / sizeof(Pairs))))); + key_pairs = palloc(sizeof(Pairs) * key_count); for (i = 0, j = 0; i < key_count; i++) @@ -649,6 +663,7 @@ hstore_slice_to_hstore(PG_FUNCTION_ARGS) PG_RETURN_POINTER(out); } + /* hstoreArrayToPairs() checked overflow */ out_pairs = palloc(sizeof(Pairs) * nkeys); bufsiz = 0; diff --git a/contrib/intagg/intagg--1.0.sql b/contrib/intagg/intagg--1.0.sql index 19a57c079b..f96b6e2e9b 100644 --- a/contrib/intagg/intagg--1.0.sql +++ b/contrib/intagg/intagg--1.0.sql @@ -1,5 +1,8 @@ /* contrib/intagg/intagg--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 + -- Internal function for the aggregate -- Is called for each item in an aggregation CREATE FUNCTION int_agg_state (internal, int4) diff --git a/contrib/intagg/intagg--unpackaged--1.0.sql b/contrib/intagg/intagg--unpackaged--1.0.sql index 95238d9c67..6a6663d092 100644 --- a/contrib/intagg/intagg--unpackaged--1.0.sql +++ b/contrib/intagg/intagg--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION intagg ADD function int_agg_state(internal,integer); ALTER EXTENSION intagg ADD function int_agg_final_array(internal); ALTER EXTENSION intagg ADD function int_array_aggregate(integer); diff --git a/contrib/intarray/_int.h b/contrib/intarray/_int.h index 11c069890e..755cd9e097 100644 --- a/contrib/intarray/_int.h +++ b/contrib/intarray/_int.h @@ -5,6 +5,7 @@ #define ___INT_H__ #include "utils/array.h" +#include "utils/memutils.h" /* number ranges for compression */ #define MAXNUMRANGE 100 @@ -137,6 +138,7 @@ typedef struct QUERYTYPE #define HDRSIZEQT offsetof(QUERYTYPE, items) #define COMPUTESIZE(size) ( HDRSIZEQT + (size) * sizeof(ITEM) ) +#define QUERYTYPEMAXITEMS ((MaxAllocSize - HDRSIZEQT) / sizeof(ITEM)) #define GETQUERY(x) ( (x)->items ) /* "type" codes for ITEM */ diff --git a/contrib/intarray/_int_bool.c b/contrib/intarray/_int_bool.c index 4e63f6d66c..62294d1cab 100644 --- a/contrib/intarray/_int_bool.c +++ b/contrib/intarray/_int_bool.c @@ -451,6 +451,9 @@ boolop(PG_FUNCTION_ARGS) static void findoprnd(ITEM *ptr, int4 *pos) { + /* since this function recurses, it could be driven to stack overflow. */ + check_stack_depth(); + #ifdef BS_DEBUG elog(DEBUG3, (ptr[*pos].type == OPR) ? "%d %c" : "%d %d", *pos, ptr[*pos].val); @@ -511,7 +514,13 @@ bqarr_in(PG_FUNCTION_ARGS) (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("empty query"))); + if (state.num > QUERYTYPEMAXITEMS) + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("number of query items (%d) exceeds the maximum allowed (%d)", + state.num, (int) QUERYTYPEMAXITEMS))); commonlen = COMPUTESIZE(state.num); + query = (QUERYTYPE *) palloc(commonlen); SET_VARSIZE(query, commonlen); query->size = state.num; diff --git a/contrib/intarray/_int_tool.c b/contrib/intarray/_int_tool.c index bfc55501db..94df98608d 100644 --- a/contrib/intarray/_int_tool.c +++ b/contrib/intarray/_int_tool.c @@ -140,7 +140,8 @@ inner_int_inter(ArrayType *a, ArrayType *b) *db, *dr; int i, - j; + j, + k; if (ARRISEMPTY(a) || ARRISEMPTY(b)) return new_intArrayType(0); @@ -152,15 +153,15 @@ inner_int_inter(ArrayType *a, ArrayType *b) r = new_intArrayType(Min(na, nb)); dr = ARRPTR(r); - i = j = 0; + i = j = k = 0; while (i < na && j < nb) { if (da[i] < db[j]) i++; else if (da[i] == db[j]) { - if (i + j == 0 || (i + j > 0 && *(dr - 1) != db[j])) - *dr++ = db[j]; + if (k == 0 || dr[k - 1] != db[j]) + dr[k++] = db[j]; i++; j++; } @@ -168,13 +169,13 @@ inner_int_inter(ArrayType *a, ArrayType *b) j++; } - if ((dr - ARRPTR(r)) == 0) + if (k == 0) { pfree(r); return new_intArrayType(0); } else - return resize_intArrayType(r, dr - ARRPTR(r)); + return resize_intArrayType(r, k); } void diff --git a/contrib/intarray/expected/_int.out b/contrib/intarray/expected/_int.out index 6ed3cc6ced..4080b9633f 100644 --- a/contrib/intarray/expected/_int.out +++ b/contrib/intarray/expected/_int.out @@ -137,6 +137,12 @@ SELECT '{123,623,445}'::int[] & '{1623,623}'; {623} (1 row) +SELECT '{-1,3,1}'::int[] & '{1,2}'; + ?column? +---------- + {1} +(1 row) + --test query_int SELECT '1'::query_int; query_int diff --git a/contrib/intarray/intarray--1.0.sql b/contrib/intarray/intarray--1.0.sql index 3b77c516cb..0b89e0f55e 100644 --- a/contrib/intarray/intarray--1.0.sql +++ b/contrib/intarray/intarray--1.0.sql @@ -1,5 +1,8 @@ /* contrib/intarray/intarray--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 + -- -- Create the user-defined type for the 1-D integer arrays (_int4) -- diff --git a/contrib/intarray/intarray--unpackaged--1.0.sql b/contrib/intarray/intarray--unpackaged--1.0.sql index 5a2829c9f5..5de64bf0ab 100644 --- a/contrib/intarray/intarray--unpackaged--1.0.sql +++ b/contrib/intarray/intarray--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION intarray ADD type query_int; ALTER EXTENSION intarray ADD function bqarr_in(cstring); ALTER EXTENSION intarray ADD function bqarr_out(query_int); diff --git a/contrib/intarray/sql/_int.sql b/contrib/intarray/sql/_int.sql index b60e936dc5..216c5c58d6 100644 --- a/contrib/intarray/sql/_int.sql +++ b/contrib/intarray/sql/_int.sql @@ -24,6 +24,7 @@ SELECT '{123,623,445}'::int[] | 623; SELECT '{123,623,445}'::int[] | 1623; SELECT '{123,623,445}'::int[] | '{1623,623}'; SELECT '{123,623,445}'::int[] & '{1623,623}'; +SELECT '{-1,3,1}'::int[] & '{1,2}'; --test query_int diff --git a/contrib/isn/isn--1.0.sql b/contrib/isn/isn--1.0.sql index 336ad1db3c..0df7bba3b3 100644 --- a/contrib/isn/isn--1.0.sql +++ b/contrib/isn/isn--1.0.sql @@ -1,5 +1,8 @@ /* contrib/isn/isn--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 + -- Example: -- create table test ( id isbn ); -- insert into test values('978-0-393-04002-9'); diff --git a/contrib/isn/isn--unpackaged--1.0.sql b/contrib/isn/isn--unpackaged--1.0.sql index 6130a43e51..30e5012156 100644 --- a/contrib/isn/isn--unpackaged--1.0.sql +++ b/contrib/isn/isn--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION isn ADD type ean13; ALTER EXTENSION isn ADD function ean13_in(cstring); ALTER EXTENSION isn ADD function ean13_out(ean13); diff --git a/contrib/isn/isn.c b/contrib/isn/isn.c index b698cb00ff..40942750fe 100644 --- a/contrib/isn/isn.c +++ b/contrib/isn/isn.c @@ -827,7 +827,7 @@ string2ean(const char *str, bool errorOK, ean13 *result, case ISMN: strncpy(buf, "9790", 4); /* this isn't for sure yet, for now * ISMN it's only 9790 */ - valid = (valid && ((rcheck = checkdig(buf + 3, 10)) == check || magic)); + valid = (valid && ((rcheck = checkdig(buf, 13)) == check || magic)); break; case ISBN: strncpy(buf, "978", 3); diff --git a/contrib/lo/lo--1.0.sql b/contrib/lo/lo--1.0.sql index 4b9a7dee32..cb350e0b8a 100644 --- a/contrib/lo/lo--1.0.sql +++ b/contrib/lo/lo--1.0.sql @@ -1,5 +1,8 @@ /* contrib/lo/lo--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 + -- -- Create the data type ... now just a domain over OID -- diff --git a/contrib/lo/lo--unpackaged--1.0.sql b/contrib/lo/lo--unpackaged--1.0.sql index 54de61686e..053185ba1d 100644 --- a/contrib/lo/lo--unpackaged--1.0.sql +++ b/contrib/lo/lo--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION lo ADD domain lo; ALTER EXTENSION lo ADD function lo_oid(lo); ALTER EXTENSION lo ADD function lo_manage(); diff --git a/contrib/lo/lo.c b/contrib/lo/lo.c index 0e3559c020..f3656d8f88 100644 --- a/contrib/lo/lo.c +++ b/contrib/lo/lo.c @@ -44,7 +44,12 @@ lo_manage(PG_FUNCTION_ARGS) HeapTuple trigtuple; /* The original value of tuple */ if (!CALLED_AS_TRIGGER(fcinfo)) /* internal error */ - elog(ERROR, "not fired by trigger manager"); + elog(ERROR, "%s: not fired by trigger manager", + trigdata->tg_trigger->tgname); + + if (!TRIGGER_FIRED_FOR_ROW(trigdata->tg_event)) /* internal error */ + elog(ERROR, "%s: must be fired for row", + trigdata->tg_trigger->tgname); /* * Fetch some values from trigdata @@ -54,6 +59,10 @@ lo_manage(PG_FUNCTION_ARGS) tupdesc = trigdata->tg_relation->rd_att; args = trigdata->tg_trigger->tgargs; + if (args == NULL) /* internal error */ + elog(ERROR, "%s: no column name provided in the trigger definition", + trigdata->tg_trigger->tgname); + /* tuple to return to Executor */ if (TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event)) rettuple = newtuple; @@ -67,7 +76,8 @@ lo_manage(PG_FUNCTION_ARGS) attnum = SPI_fnumber(tupdesc, args[0]); if (attnum <= 0) - elog(ERROR, "column \"%s\" does not exist", args[0]); + elog(ERROR, "%s: column \"%s\" does not exist", + trigdata->tg_trigger->tgname, args[0]); /* * Handle updates diff --git a/contrib/ltree/ltree--1.0.sql b/contrib/ltree/ltree--1.0.sql index 32969538a0..5a2f375a4f 100644 --- a/contrib/ltree/ltree--1.0.sql +++ b/contrib/ltree/ltree--1.0.sql @@ -1,5 +1,8 @@ /* contrib/ltree/ltree--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 + CREATE FUNCTION ltree_in(cstring) RETURNS ltree AS 'MODULE_PATHNAME' diff --git a/contrib/ltree/ltree--unpackaged--1.0.sql b/contrib/ltree/ltree--unpackaged--1.0.sql index f483725b4a..1e24fa56c6 100644 --- a/contrib/ltree/ltree--unpackaged--1.0.sql +++ b/contrib/ltree/ltree--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION ltree ADD type ltree; ALTER EXTENSION ltree ADD function ltree_in(cstring); ALTER EXTENSION ltree ADD function ltree_out(ltree); diff --git a/contrib/ltree/ltree.h b/contrib/ltree/ltree.h index 8e4ea4c151..02c96d6ed7 100644 --- a/contrib/ltree/ltree.h +++ b/contrib/ltree/ltree.h @@ -6,6 +6,7 @@ #include "postgres.h" #include "fmgr.h" #include "tsearch/ts_locale.h" +#include "utils/memutils.h" typedef struct { @@ -112,6 +113,8 @@ typedef struct #define HDRSIZEQT MAXALIGN(VARHDRSZ + sizeof(int4)) #define COMPUTESIZE(size,lenofoperand) ( HDRSIZEQT + (size) * sizeof(ITEM) + (lenofoperand) ) +#define LTXTQUERY_TOO_BIG(size,lenofoperand) \ + ((size) > (MaxAllocSize - HDRSIZEQT - (lenofoperand)) / sizeof(ITEM)) #define GETQUERY(x) (ITEM*)( (char*)(x)+HDRSIZEQT ) #define GETOPERAND(x) ( (char*)GETQUERY(x) + ((ltxtquery*)x)->size * sizeof(ITEM) ) diff --git a/contrib/ltree/ltree_io.c b/contrib/ltree/ltree_io.c index 3e88b81c16..d64debb5f4 100644 --- a/contrib/ltree/ltree_io.c +++ b/contrib/ltree/ltree_io.c @@ -8,6 +8,7 @@ #include #include "ltree.h" +#include "utils/memutils.h" #include "crc32.h" PG_FUNCTION_INFO_V1(ltree_in); @@ -64,6 +65,11 @@ ltree_in(PG_FUNCTION_ARGS) ptr += charlen; } + if (num + 1 > MaxAllocSize / sizeof(nodeitem)) + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("number of levels (%d) exceeds the maximum allowed (%d)", + num + 1, (int) (MaxAllocSize / sizeof(nodeitem))))); list = lptr = (nodeitem *) palloc(sizeof(nodeitem) * (num + 1)); ptr = buf; while (*ptr) @@ -228,6 +234,11 @@ lquery_in(PG_FUNCTION_ARGS) } num++; + if (num > MaxAllocSize / ITEMSIZE) + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("number of levels (%d) exceeds the maximum allowed (%d)", + num, (int) (MaxAllocSize / ITEMSIZE)))); curqlevel = tmpql = (lquery_level *) palloc0(ITEMSIZE * num); ptr = buf; while (*ptr) diff --git a/contrib/ltree/ltxtquery_io.c b/contrib/ltree/ltxtquery_io.c index 826f4e1c9d..13ea58df3f 100644 --- a/contrib/ltree/ltxtquery_io.c +++ b/contrib/ltree/ltxtquery_io.c @@ -9,6 +9,7 @@ #include "crc32.h" #include "ltree.h" +#include "miscadmin.h" PG_FUNCTION_INFO_V1(ltxtq_in); Datum ltxtq_in(PG_FUNCTION_ARGS); @@ -213,6 +214,9 @@ makepol(QPRS_STATE *state) int4 lenstack = 0; uint16 flag = 0; + /* since this function recurses, it could be driven to stack overflow */ + check_stack_depth(); + while ((type = gettoken_query(state, &val, &lenval, &strval, &flag)) != END) { switch (type) @@ -277,6 +281,9 @@ makepol(QPRS_STATE *state) static void findoprnd(ITEM *ptr, int4 *pos) { + /* since this function recurses, it could be driven to stack overflow. */ + check_stack_depth(); + if (ptr[*pos].type == VAL || ptr[*pos].type == VALTRUE) { ptr[*pos].left = 0; @@ -341,8 +348,12 @@ queryin(char *buf) errmsg("syntax error"), errdetail("Empty query."))); - /* make finish struct */ + if (LTXTQUERY_TOO_BIG(state.num, state.sumlen)) + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("ltxtquery is too large"))); commonlen = COMPUTESIZE(state.num, state.sumlen); + query = (ltxtquery *) palloc(commonlen); SET_VARSIZE(query, commonlen); query->size = state.num; diff --git a/contrib/pageinspect/btreefuncs.c b/contrib/pageinspect/btreefuncs.c index ef27cd4080..41897ec6c4 100644 --- a/contrib/pageinspect/btreefuncs.c +++ b/contrib/pageinspect/btreefuncs.c @@ -158,9 +158,9 @@ GetBTPageStatistics(BlockNumber blkno, Buffer buffer, BTPageStat *stat) } /* ----------------------------------------------- - * bt_page() + * bt_page_stats() * - * Usage: SELECT * FROM bt_page('t1_pkey', 1); + * Usage: SELECT * FROM bt_page_stats('t1_pkey', 1); * ----------------------------------------------- */ Datum @@ -206,6 +206,7 @@ bt_page_stats(PG_FUNCTION_ARGS) CHECK_RELATION_BLOCK_RANGE(rel, blkno); buffer = ReadBuffer(rel, blkno); + LockBuffer(buffer, BUFFER_LOCK_SHARE); /* keep compiler quiet */ stat.btpo_prev = stat.btpo_next = InvalidBlockNumber; @@ -213,6 +214,9 @@ bt_page_stats(PG_FUNCTION_ARGS) GetBTPageStatistics(blkno, buffer, &stat); + UnlockReleaseBuffer(buffer); + relation_close(rel, AccessShareLock); + /* Build a tuple descriptor for our result type */ if (get_call_result_type(fcinfo, NULL, &tupleDesc) != TYPEFUNC_COMPOSITE) elog(ERROR, "return type must be a row type"); @@ -249,10 +253,6 @@ bt_page_stats(PG_FUNCTION_ARGS) result = HeapTupleGetDatum(tuple); - ReleaseBuffer(buffer); - - relation_close(rel, AccessShareLock); - PG_RETURN_DATUM(result); } @@ -324,6 +324,7 @@ bt_page_items(PG_FUNCTION_ARGS) CHECK_RELATION_BLOCK_RANGE(rel, blkno); buffer = ReadBuffer(rel, blkno); + LockBuffer(buffer, BUFFER_LOCK_SHARE); /* * We copy the page into local storage to avoid holding pin on the @@ -337,7 +338,7 @@ bt_page_items(PG_FUNCTION_ARGS) uargs->page = palloc(BLCKSZ); memcpy(uargs->page, BufferGetPage(buffer), BLCKSZ); - ReleaseBuffer(buffer); + UnlockReleaseBuffer(buffer); relation_close(rel, AccessShareLock); uargs->offset = FirstOffsetNumber; @@ -468,6 +469,8 @@ bt_metap(PG_FUNCTION_ARGS) errmsg("cannot access temporary tables of other sessions"))); buffer = ReadBuffer(rel, 0); + LockBuffer(buffer, BUFFER_LOCK_SHARE); + page = BufferGetPage(buffer); metad = BTPageGetMeta(page); @@ -494,8 +497,7 @@ bt_metap(PG_FUNCTION_ARGS) result = HeapTupleGetDatum(tuple); - ReleaseBuffer(buffer); - + UnlockReleaseBuffer(buffer); relation_close(rel, AccessShareLock); PG_RETURN_DATUM(result); diff --git a/contrib/pageinspect/pageinspect--1.0.sql b/contrib/pageinspect/pageinspect--1.0.sql index a711f581e2..5613956fd8 100644 --- a/contrib/pageinspect/pageinspect--1.0.sql +++ b/contrib/pageinspect/pageinspect--1.0.sql @@ -1,5 +1,8 @@ /* contrib/pageinspect/pageinspect--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 + -- -- get_raw_page() -- diff --git a/contrib/pageinspect/pageinspect--unpackaged--1.0.sql b/contrib/pageinspect/pageinspect--unpackaged--1.0.sql index 7d4feaf034..13e2167dfc 100644 --- a/contrib/pageinspect/pageinspect--unpackaged--1.0.sql +++ b/contrib/pageinspect/pageinspect--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + DROP FUNCTION heap_page_items(bytea); CREATE FUNCTION heap_page_items(IN page bytea, OUT lp smallint, diff --git a/contrib/pg_archivecleanup/pg_archivecleanup.c b/contrib/pg_archivecleanup/pg_archivecleanup.c index dd8a45133c..400968ce39 100644 --- a/contrib/pg_archivecleanup/pg_archivecleanup.c +++ b/contrib/pg_archivecleanup/pg_archivecleanup.c @@ -83,7 +83,7 @@ Initialize(void) if (stat(archiveLocation, &stat_buf) != 0 || !S_ISDIR(stat_buf.st_mode)) { - fprintf(stderr, "%s: archiveLocation \"%s\" does not exist\n", + fprintf(stderr, "%s: archive location \"%s\" does not exist\n", progname, archiveLocation); exit(2); } @@ -135,7 +135,7 @@ CleanupPriorWALFiles(void) closedir(xldir); } else - fprintf(stderr, "%s: could not open archiveLocation \"%s\": %s\n", + fprintf(stderr, "%s: could not open archive location \"%s\": %s\n", progname, archiveLocation, strerror(errno)); } diff --git a/contrib/pg_buffercache/pg_buffercache--1.0.sql b/contrib/pg_buffercache/pg_buffercache--1.0.sql index 9407d21410..4ca4c44256 100644 --- a/contrib/pg_buffercache/pg_buffercache--1.0.sql +++ b/contrib/pg_buffercache/pg_buffercache--1.0.sql @@ -1,5 +1,8 @@ /* contrib/pg_buffercache/pg_buffercache--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 + -- Register the function. CREATE FUNCTION pg_buffercache_pages() RETURNS SETOF RECORD diff --git a/contrib/pg_buffercache/pg_buffercache--unpackaged--1.0.sql b/contrib/pg_buffercache/pg_buffercache--unpackaged--1.0.sql index f00a954d86..bfe6e52f8f 100644 --- a/contrib/pg_buffercache/pg_buffercache--unpackaged--1.0.sql +++ b/contrib/pg_buffercache/pg_buffercache--unpackaged--1.0.sql @@ -1,4 +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 + 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--1.0.sql b/contrib/pg_freespacemap/pg_freespacemap--1.0.sql index d63420e33a..2adb52a375 100644 --- a/contrib/pg_freespacemap/pg_freespacemap--1.0.sql +++ b/contrib/pg_freespacemap/pg_freespacemap--1.0.sql @@ -1,5 +1,8 @@ /* contrib/pg_freespacemap/pg_freespacemap--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 + -- Register the C function. CREATE FUNCTION pg_freespace(regclass, bigint) RETURNS int2 diff --git a/contrib/pg_freespacemap/pg_freespacemap--unpackaged--1.0.sql b/contrib/pg_freespacemap/pg_freespacemap--unpackaged--1.0.sql index 4c7487fa4e..5e8d7e472e 100644 --- a/contrib/pg_freespacemap/pg_freespacemap--unpackaged--1.0.sql +++ b/contrib/pg_freespacemap/pg_freespacemap--unpackaged--1.0.sql @@ -1,4 +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 + ALTER EXTENSION pg_freespacemap ADD function pg_freespace(regclass,bigint); ALTER EXTENSION pg_freespacemap ADD function pg_freespace(regclass); diff --git a/contrib/pg_standby/pg_standby.c b/contrib/pg_standby/pg_standby.c index d2e0d582f2..e20fbbb625 100644 --- a/contrib/pg_standby/pg_standby.c +++ b/contrib/pg_standby/pg_standby.c @@ -173,7 +173,7 @@ CustomizableInitialize(void) */ if (stat(archiveLocation, &stat_buf) != 0) { - fprintf(stderr, "%s: archiveLocation \"%s\" does not exist\n", progname, archiveLocation); + fprintf(stderr, "%s: archive location \"%s\" does not exist\n", progname, archiveLocation); fflush(stderr); exit(2); } @@ -283,12 +283,12 @@ CustomizableCleanupPriorWALFiles(void) #endif if (debug) - fprintf(stderr, "\nremoving \"%s\"", WALFilePath); + fprintf(stderr, "\nremoving file \"%s\"", WALFilePath); rc = unlink(WALFilePath); if (rc != 0) { - fprintf(stderr, "\n%s: ERROR failed to remove \"%s\": %s", + fprintf(stderr, "\n%s: ERROR: could not remove file \"%s\": %s\n", progname, WALFilePath, strerror(errno)); break; } @@ -298,7 +298,8 @@ CustomizableCleanupPriorWALFiles(void) fprintf(stderr, "\n"); } else - fprintf(stderr, "%s: archiveLocation \"%s\" open error\n", progname, archiveLocation); + fprintf(stderr, "%s: could not open archive location \"%s\": %s\n", + progname, archiveLocation, strerror(errno)); closedir(xldir); fflush(stderr); @@ -337,7 +338,7 @@ SetWALFileNameForCleanup(void) if (strcmp(restartWALFileName, nextWALFileName) > 0) return false; - strcpy(exclusiveCleanupFileName, restartWALFileName); + strlcpy(exclusiveCleanupFileName, restartWALFileName, sizeof(exclusiveCleanupFileName)); return true; } @@ -482,7 +483,7 @@ RestoreWALFileForRecovery(void) if (debug) { - fprintf(stderr, "running restore :"); + fprintf(stderr, "running restore: "); fflush(stderr); } @@ -493,7 +494,7 @@ RestoreWALFileForRecovery(void) { if (debug) { - fprintf(stderr, " OK\n"); + fprintf(stderr, "OK\n"); fflush(stderr); } return true; @@ -693,7 +694,7 @@ main(int argc, char **argv) } else { - fprintf(stderr, "%s: use %%f to specify nextWALFileName\n", progname); + fprintf(stderr, "%s: must specify WAL file name as second non-option argument (use \"%%f\")\n", progname); fprintf(stderr, "Try \"%s --help\" for more information.\n", progname); exit(2); } @@ -705,7 +706,7 @@ main(int argc, char **argv) } else { - fprintf(stderr, "%s: use %%p to specify xlogFilePath\n", progname); + fprintf(stderr, "%s: must specify xlog destination as third non-option argument (use \"%%p\")\n", progname); fprintf(stderr, "Try \"%s --help\" for more information.\n", progname); exit(2); } diff --git a/contrib/pg_stat_statements/pg_stat_statements--1.0.sql b/contrib/pg_stat_statements/pg_stat_statements--1.0.sql index e17b82c616..5294a01dd5 100644 --- a/contrib/pg_stat_statements/pg_stat_statements--1.0.sql +++ b/contrib/pg_stat_statements/pg_stat_statements--1.0.sql @@ -1,5 +1,8 @@ /* contrib/pg_stat_statements/pg_stat_statements--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 + -- Register functions. CREATE FUNCTION pg_stat_statements_reset() RETURNS void 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 9dda85cbdf..e84a3cbafc 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,5 +1,8 @@ /* 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 + ALTER EXTENSION pg_stat_statements ADD function pg_stat_statements_reset(); ALTER EXTENSION pg_stat_statements ADD function pg_stat_statements(); ALTER EXTENSION pg_stat_statements ADD view pg_stat_statements; diff --git a/contrib/pg_stat_statements/pg_stat_statements.c b/contrib/pg_stat_statements/pg_stat_statements.c index df55c95574..e2fa29a7eb 100644 --- a/contrib/pg_stat_statements/pg_stat_statements.c +++ b/contrib/pg_stat_statements/pg_stat_statements.c @@ -431,6 +431,13 @@ pgss_shmem_startup(void) pfree(buffer); FreeFile(file); + + /* + * Remove the file so it's not included in backups/replication + * slaves, etc. A new file will be written on next shutdown. + */ + unlink(PGSS_DUMP_FILE); + return; error: @@ -472,7 +479,7 @@ pgss_shmem_shutdown(int code, Datum arg) if (!pgss_save) return; - file = AllocateFile(PGSS_DUMP_FILE, PG_BINARY_W); + file = AllocateFile(PGSS_DUMP_FILE ".tmp", PG_BINARY_W); if (file == NULL) goto error; @@ -498,16 +505,25 @@ pgss_shmem_shutdown(int code, Datum arg) goto error; } + /* + * Rename file into place, so we atomically replace the 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"))); + return; error: ereport(LOG, (errcode_for_file_access(), errmsg("could not write pg_stat_statement file \"%s\": %m", - PGSS_DUMP_FILE))); + PGSS_DUMP_FILE ".tmp"))); if (file) FreeFile(file); - unlink(PGSS_DUMP_FILE); + unlink(PGSS_DUMP_FILE ".tmp"); } /* diff --git a/contrib/pg_trgm/expected/pg_trgm.out b/contrib/pg_trgm/expected/pg_trgm.out index e7af7d4890..ea4d5fab06 100644 --- a/contrib/pg_trgm/expected/pg_trgm.out +++ b/contrib/pg_trgm/expected/pg_trgm.out @@ -53,6 +53,12 @@ select similarity('wow',' WOW '); 1 (1 row) +select similarity('---', '####---'); + similarity +------------ + 0 +(1 row) + CREATE TABLE test_trgm(t text); \copy test_trgm from 'data/trgm.data select t,similarity(t,'qwertyu0988') as sml from test_trgm where t % 'qwertyu0988' order by sml desc, t; @@ -3497,6 +3503,12 @@ select * from test2 where t like '%bcd%'; abcdef (1 row) +select * from test2 where t like E'%\\bcd%'; + t +-------- + abcdef +(1 row) + select * from test2 where t ilike '%BCD%'; t -------- @@ -3539,6 +3551,12 @@ select * from test2 where t like '%bcd%'; abcdef (1 row) +select * from test2 where t like E'%\\bcd%'; + t +-------- + abcdef +(1 row) + select * from test2 where t ilike '%BCD%'; t -------- diff --git a/contrib/pg_trgm/pg_trgm--1.0.sql b/contrib/pg_trgm/pg_trgm--1.0.sql index d9cdd23d85..8067bd6033 100644 --- a/contrib/pg_trgm/pg_trgm--1.0.sql +++ b/contrib/pg_trgm/pg_trgm--1.0.sql @@ -1,5 +1,8 @@ /* contrib/pg_trgm/pg_trgm--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 + CREATE FUNCTION set_limit(float4) RETURNS float4 AS 'MODULE_PATHNAME' diff --git a/contrib/pg_trgm/pg_trgm--unpackaged--1.0.sql b/contrib/pg_trgm/pg_trgm--unpackaged--1.0.sql index 0e1c63f075..7243a6a410 100644 --- a/contrib/pg_trgm/pg_trgm--unpackaged--1.0.sql +++ b/contrib/pg_trgm/pg_trgm--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION pg_trgm ADD function set_limit(real); ALTER EXTENSION pg_trgm ADD function show_limit(); ALTER EXTENSION pg_trgm ADD function show_trgm(text); diff --git a/contrib/pg_trgm/sql/pg_trgm.sql b/contrib/pg_trgm/sql/pg_trgm.sql index ea902f602f..b235ca7357 100644 --- a/contrib/pg_trgm/sql/pg_trgm.sql +++ b/contrib/pg_trgm/sql/pg_trgm.sql @@ -11,6 +11,8 @@ select show_trgm('a b C0*%^'); select similarity('wow','WOWa '); select similarity('wow',' WOW '); +select similarity('---', '####---'); + CREATE TABLE test_trgm(t text); \copy test_trgm from 'data/trgm.data @@ -49,6 +51,7 @@ explain (costs off) select * from test2 where t ilike '%BCD%'; select * from test2 where t like '%BCD%'; select * from test2 where t like '%bcd%'; +select * from test2 where t like E'%\\bcd%'; select * from test2 where t ilike '%BCD%'; select * from test2 where t ilike 'qua%'; drop index test2_idx_gin; @@ -60,5 +63,6 @@ explain (costs off) select * from test2 where t ilike '%BCD%'; select * from test2 where t like '%BCD%'; select * from test2 where t like '%bcd%'; +select * from test2 where t like E'%\\bcd%'; select * from test2 where t ilike '%BCD%'; select * from test2 where t ilike 'qua%'; diff --git a/contrib/pg_trgm/trgm_op.c b/contrib/pg_trgm/trgm_op.c index dfb2df5048..73895f60d1 100644 --- a/contrib/pg_trgm/trgm_op.c +++ b/contrib/pg_trgm/trgm_op.c @@ -9,6 +9,7 @@ #include "catalog/pg_type.h" #include "tsearch/ts_locale.h" +#include "utils/memutils.h" #include "utils/array.h" @@ -192,6 +193,18 @@ generate_trgm(char *str, int slen) char *bword, *eword; + /* + * Guard against possible overflow in the palloc requests below. (We + * don't worry about the additive constants, since palloc can detect + * requests that are a little above MaxAllocSize --- we just need to + * prevent integer overflow in the multiplications.) + */ + if ((Size) (slen / 2) >= (MaxAllocSize / (sizeof(trgm) * 3)) || + (Size) slen >= (MaxAllocSize / pg_database_encoding_max_length())) + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("out of memory"))); + trg = (TRGM *) palloc(TRGMHDRSIZE + sizeof(trgm) * (slen / 2 + 1) *3); trg->flag = ARRKEY; SET_VARSIZE(trg, TRGMHDRSIZE); @@ -201,7 +214,8 @@ generate_trgm(char *str, int slen) tptr = GETARR(trg); - buf = palloc(sizeof(char) * (slen + 4)); + /* Allocate a buffer for case-folded, blank-padded words */ + buf = (char *) palloc(slen * pg_database_encoding_max_length() + 4); if (LPADDING > 0) { @@ -225,6 +239,7 @@ generate_trgm(char *str, int slen) #ifdef IGNORECASE pfree(bword); #endif + buf[LPADDING + bytelen] = ' '; buf[LPADDING + bytelen + 1] = ' '; @@ -240,7 +255,10 @@ generate_trgm(char *str, int slen) if ((len = tptr - GETARR(trg)) == 0) return trg; - if (len > 0) + /* + * Make trigrams unique. + */ + if (len > 1) { qsort((void *) GETARR(trg), len, sizeof(trgm), comp_trgm); len = unique_array(GETARR(trg), len); @@ -273,33 +291,36 @@ get_wildcard_part(const char *str, int lenstr, const char *beginword = str; const char *endword; char *s = buf; - bool in_wildcard_meta = false; + bool in_leading_wildcard_meta = false; + bool in_trailing_wildcard_meta = false; bool in_escape = false; int clen; /* - * Find the first word character remembering whether last character was - * wildcard meta-character. + * Find the first word character, remembering whether preceding character + * was wildcard meta-character. Note that the in_escape state persists + * from this loop to the next one, since we may exit at a word character + * that is in_escape. */ while (beginword - str < lenstr) { if (in_escape) { - in_escape = false; - in_wildcard_meta = false; if (iswordchr(beginword)) break; + in_escape = false; + in_leading_wildcard_meta = false; } else { if (ISESCAPECHAR(beginword)) in_escape = true; else if (ISWILDCARDCHAR(beginword)) - in_wildcard_meta = true; + in_leading_wildcard_meta = true; else if (iswordchr(beginword)) break; else - in_wildcard_meta = false; + in_leading_wildcard_meta = false; } beginword += pg_mblen(beginword); } @@ -311,11 +332,11 @@ get_wildcard_part(const char *str, int lenstr, return NULL; /* - * Add left padding spaces if last character wasn't wildcard + * Add left padding spaces if preceding character wasn't wildcard * meta-character. */ *charlen = 0; - if (!in_wildcard_meta) + if (!in_leading_wildcard_meta) { if (LPADDING > 0) { @@ -334,15 +355,11 @@ get_wildcard_part(const char *str, int lenstr, * string boundary. Strip escapes during copy. */ endword = beginword; - in_wildcard_meta = false; - in_escape = false; while (endword - str < lenstr) { clen = pg_mblen(endword); if (in_escape) { - in_escape = false; - in_wildcard_meta = false; if (iswordchr(endword)) { memcpy(s, endword, clen); @@ -350,7 +367,17 @@ get_wildcard_part(const char *str, int lenstr, s += clen; } else + { + /* + * Back up endword to the escape character when stopping at + * an escaped char, so that subsequent get_wildcard_part will + * restart from the escape character. We assume here that + * escape chars are single-byte. + */ + endword--; break; + } + in_escape = false; } else { @@ -358,7 +385,7 @@ get_wildcard_part(const char *str, int lenstr, in_escape = true; else if (ISWILDCARDCHAR(endword)) { - in_wildcard_meta = true; + in_trailing_wildcard_meta = true; break; } else if (iswordchr(endword)) @@ -368,19 +395,16 @@ get_wildcard_part(const char *str, int lenstr, s += clen; } else - { - in_wildcard_meta = false; break; - } } endword += clen; } /* - * Add right padding spaces if last character wasn't wildcard + * Add right padding spaces if next character isn't wildcard * meta-character. */ - if (!in_wildcard_meta) + if (!in_trailing_wildcard_meta) { if (RPADDING > 0) { @@ -417,6 +441,18 @@ generate_wildcard_trgm(const char *str, int slen) bytelen; const char *eword; + /* + * Guard against possible overflow in the palloc requests below. (We + * don't worry about the additive constants, since palloc can detect + * requests that are a little above MaxAllocSize --- we just need to + * prevent integer overflow in the multiplications.) + */ + if ((Size) (slen / 2) >= (MaxAllocSize / (sizeof(trgm) * 3)) || + (Size) slen >= (MaxAllocSize / pg_database_encoding_max_length())) + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("out of memory"))); + trg = (TRGM *) palloc(TRGMHDRSIZE + sizeof(trgm) * (slen / 2 + 1) *3); trg->flag = ARRKEY; SET_VARSIZE(trg, TRGMHDRSIZE); @@ -426,6 +462,7 @@ generate_wildcard_trgm(const char *str, int slen) tptr = GETARR(trg); + /* Allocate a buffer for blank-padded, but not yet case-folded, words */ buf = palloc(sizeof(char) * (slen + 4)); /* @@ -446,6 +483,7 @@ generate_wildcard_trgm(const char *str, int slen) * count trigrams */ tptr = make_trigrams(tptr, buf2, bytelen, charlen); + #ifdef IGNORECASE pfree(buf2); #endif @@ -459,7 +497,7 @@ generate_wildcard_trgm(const char *str, int slen) /* * Make trigrams unique. */ - if (len > 0) + if (len > 1) { qsort((void *) GETARR(trg), len, sizeof(trgm), comp_trgm); len = unique_array(GETARR(trg), len); @@ -548,6 +586,10 @@ cnt_sml(TRGM *trg1, TRGM *trg2) len1 = ARRNELEM(trg1); len2 = ARRNELEM(trg2); + /* explicit test is needed to avoid 0/0 division when both lengths are 0 */ + if (len1 <= 0 || len2 <= 0) + return (float4) 0.0; + while (ptr1 - GETARR(trg1) < len1 && ptr2 - GETARR(trg2) < len2) { int res = CMPTRGM(ptr1, ptr2); @@ -565,9 +607,9 @@ cnt_sml(TRGM *trg1, TRGM *trg2) } #ifdef DIVUNION - return ((((float4) count) / ((float4) (len1 + len2 - count)))); + return ((float4) count) / ((float4) (len1 + len2 - count)); #else - return (((float) count) / ((float) ((len1 > len2) ? len1 : len2))); + return ((float4) count) / ((float4) ((len1 > len2) ? len1 : len2)); #endif } diff --git a/contrib/pg_upgrade/check.c b/contrib/pg_upgrade/check.c index fdec6e34af..e6d86ba7b9 100644 --- a/contrib/pg_upgrade/check.c +++ b/contrib/pg_upgrade/check.c @@ -16,10 +16,42 @@ static void check_old_cluster_has_new_cluster_dbs(void); static void check_locale_and_encoding(ControlData *oldctrl, ControlData *newctrl); static void check_is_super_user(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 get_bin_version(ClusterInfo *cluster); +/* + * fix_path_separator + * For non-Windows, just return the argument. + * For Windows convert any forward slash to a backslash + * such as is suitable for arguments to builtin commands + * like RMDIR and DEL. + */ +static char * +fix_path_separator(char *path) +{ +#ifdef WIN32 + + char *result; + char *c; + + result = pg_strdup(path); + + for (c = result; *c != '\0'; c++) + if (*c == '/') + *c = '\\'; + + return result; + +#else + + return path; + +#endif +} + void output_check_banner(bool *live_check) { @@ -29,7 +61,7 @@ output_check_banner(bool *live_check) if (old_cluster.port == new_cluster.port) pg_log(PG_FATAL, "When checking a live server, " "the old and new port numbers must be different.\n"); - pg_log(PG_REPORT, "PerForming Consistency Checks on Old Live Server\n"); + pg_log(PG_REPORT, "Performing Consistency Checks on Old Live Server\n"); pg_log(PG_REPORT, "------------------------------------------------\n"); } else @@ -65,6 +97,7 @@ check_old_cluster(bool live_check, * Check for various failure cases */ check_is_super_user(&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); @@ -73,6 +106,7 @@ check_old_cluster(bool live_check, { old_8_3_check_for_name_data_type_usage(&old_cluster); old_8_3_check_for_tsquery_usage(&old_cluster); + old_8_3_check_ltree_usage(&old_cluster); if (user_opts.check) { old_8_3_rebuild_tsvector_tables(&old_cluster, true); @@ -114,17 +148,38 @@ check_new_cluster(void) { set_locale_and_encoding(&new_cluster); + check_locale_and_encoding(&old_cluster.controldata, &new_cluster.controldata); + get_db_and_rel_infos(&new_cluster); check_new_cluster_is_empty(); + check_old_cluster_has_new_cluster_dbs(); check_loadable_libraries(); - check_locale_and_encoding(&old_cluster.controldata, &new_cluster.controldata); - if (user_opts.transfer_mode == TRANSFER_MODE_LINK) check_hard_link(); + + check_is_super_user(&new_cluster); + + /* + * We don't restore our own user, so both clusters must match have + * matching install-user oids. + */ + if (old_cluster.install_role_oid != new_cluster.install_role_oid) + pg_log(PG_FATAL, + "Old and new cluster install users have different values for pg_authid.oid.\n"); + + /* + * We only allow the install user in the new cluster because other + * defined users might match users defined in the old cluster and + * generate an error during pg_dump restore. + */ + if (new_cluster.role_count != 1) + pg_log(PG_FATAL, "Only the install user can be defined in the new cluster.\n"); + + check_for_prepared_transactions(&new_cluster); } @@ -213,6 +268,8 @@ output_completion_banner(char *deletion_script_file_name) void check_cluster_versions(void) { + prep_status("Checking cluster versions"); + /* get old and new cluster versions */ old_cluster.major_version = get_major_server_version(&old_cluster); new_cluster.major_version = get_major_server_version(&new_cluster); @@ -232,32 +289,32 @@ check_cluster_versions(void) /* * We can't allow downgrading because we use the target pg_dumpall, and - * pg_dumpall cannot operate on new datbase versions, only older versions. + * pg_dumpall cannot operate on new database versions, only older versions. */ if (old_cluster.major_version > new_cluster.major_version) pg_log(PG_FATAL, "This utility cannot be used to downgrade to older major PostgreSQL versions.\n"); + + /* get old and new binary versions */ + get_bin_version(&old_cluster); + get_bin_version(&new_cluster); + + /* Ensure binaries match the designated data directories */ + if (GET_MAJOR_VERSION(old_cluster.major_version) != + GET_MAJOR_VERSION(old_cluster.bin_version)) + pg_log(PG_FATAL, + "Old cluster data and binary directories are from different major versions.\n"); + if (GET_MAJOR_VERSION(new_cluster.major_version) != + GET_MAJOR_VERSION(new_cluster.bin_version)) + pg_log(PG_FATAL, + "New cluster data and binary directories are from different major versions.\n"); + + check_ok(); } void check_cluster_compatibility(bool live_check) { - char libfile[MAXPGPATH]; - FILE *lib_test; - - /* - * Test pg_upgrade_support.so is in the proper place. We cannot copy it - * ourselves because install directories are typically root-owned. - */ - snprintf(libfile, sizeof(libfile), "%s/pg_upgrade_support%s", new_cluster.libpath, - DLSUFFIX); - - if ((lib_test = fopen(libfile, "r")) == NULL) - pg_log(PG_FATAL, - "pg_upgrade_support%s must be created and installed in %s\n", DLSUFFIX, libfile); - else - fclose(lib_test); - /* get/check pg_control data of servers */ get_control_data(&old_cluster, live_check); get_control_data(&new_cluster, false); @@ -426,7 +483,7 @@ create_script_for_old_cluster_deletion( #endif /* delete old cluster's default tablespace */ - fprintf(script, RMDIR_CMD " %s\n", 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_tablespaces; tblnum++) @@ -443,14 +500,17 @@ create_script_for_old_cluster_deletion( fprintf(script, "\n"); /* remove PG_VERSION? */ if (GET_MAJOR_VERSION(old_cluster.major_version) <= 804) - fprintf(script, RM_CMD " %s%s/PG_VERSION\n", - os_info.tablespaces[tblnum], old_cluster.tablespace_suffix); + fprintf(script, RM_CMD " %s%s%cPG_VERSION\n", + fix_path_separator(os_info.tablespaces[tblnum]), + fix_path_separator(old_cluster.tablespace_suffix), + PATH_SEPARATOR); for (dbnum = 0; dbnum < new_cluster.dbarr.ndbs; dbnum++) { - fprintf(script, RMDIR_CMD " %s%s/%d\n", - os_info.tablespaces[tblnum], old_cluster.tablespace_suffix, - old_cluster.dbarr.dbs[dbnum].db_oid); + fprintf(script, RMDIR_CMD " %s%s%c%d\n", + fix_path_separator(os_info.tablespaces[tblnum]), + fix_path_separator(old_cluster.tablespace_suffix), + PATH_SEPARATOR, old_cluster.dbarr.dbs[dbnum].db_oid); } } else @@ -460,7 +520,8 @@ create_script_for_old_cluster_deletion( * or a version-specific subdirectory. */ fprintf(script, RMDIR_CMD " %s%s\n", - os_info.tablespaces[tblnum], old_cluster.tablespace_suffix); + fix_path_separator(os_info.tablespaces[tblnum]), + fix_path_separator(old_cluster.tablespace_suffix)); } fclose(script); @@ -478,7 +539,7 @@ create_script_for_old_cluster_deletion( /* * check_is_super_user() * - * Make sure we are the super-user. + * Check we are superuser, and out user id and user count */ static void check_is_super_user(ClusterInfo *cluster) @@ -490,7 +551,7 @@ check_is_super_user(ClusterInfo *cluster) /* Can't use pg_authid because only superusers can view it. */ res = executeQueryOrDie(conn, - "SELECT rolsuper " + "SELECT rolsuper, oid " "FROM pg_catalog.pg_roles " "WHERE rolname = current_user"); @@ -498,6 +559,49 @@ check_is_super_user(ClusterInfo *cluster) pg_log(PG_FATAL, "database user \"%s\" is not a superuser\n", os_info.user); + cluster->install_role_oid = atooid(PQgetvalue(res, 0, 1)); + + PQclear(res); + + res = executeQueryOrDie(conn, + "SELECT COUNT(*) " + "FROM pg_catalog.pg_roles "); + + if (PQntuples(res) != 1) + pg_log(PG_FATAL, "could not determine the number of users\n"); + + cluster->role_count = atoi(PQgetvalue(res, 0, 0)); + + PQclear(res); + + PQfinish(conn); + + check_ok(); +} + + +/* + * check_for_prepared_transactions() + * + * Make sure there are no prepared transactions because the storage format + * might have changed. + */ +static void +check_for_prepared_transactions(ClusterInfo *cluster) +{ + PGresult *res; + PGconn *conn = connectToServer(cluster, "template1"); + + prep_status("Checking for prepared transactions"); + + res = executeQueryOrDie(conn, + "SELECT * " + "FROM pg_catalog.pg_prepared_xacts"); + + if (PQntuples(res) != 0) + pg_log(PG_FATAL, "The %s cluster contains prepared transactions\n", + CLUSTER_NAME(cluster)); + PQclear(res); PQfinish(conn); @@ -646,7 +750,7 @@ check_for_reg_data_type_usage(ClusterInfo *cluster) " 'pg_catalog.regprocedure'::pg_catalog.regtype, " " 'pg_catalog.regoper'::pg_catalog.regtype, " " 'pg_catalog.regoperator'::pg_catalog.regtype, " - " 'pg_catalog.regclass'::pg_catalog.regtype, " +/* allow " 'pg_catalog.regclass'::pg_catalog.regtype, "*/ /* regtype.oid is preserved, so 'regtype' is OK */ " 'pg_catalog.regconfig'::pg_catalog.regtype, " " 'pg_catalog.regdictionary'::pg_catalog.regtype) AND " @@ -697,3 +801,32 @@ check_for_reg_data_type_usage(ClusterInfo *cluster) else check_ok(); } + + +static void +get_bin_version(ClusterInfo *cluster) +{ + char cmd[MAXPGPATH], cmd_output[MAX_STRING]; + FILE *output; + int pre_dot, post_dot; + + snprintf(cmd, sizeof(cmd), "\"%s/pg_ctl\" --version", cluster->bindir); + + if ((output = popen(cmd, "r")) == NULL) + pg_log(PG_FATAL, "Could not get pg_ctl version data: %s\n", + getErrorText(errno)); + + fgets(cmd_output, sizeof(cmd_output), output); + + pclose(output); + + /* Remove trailing newline */ + if (strchr(cmd_output, '\n') != NULL) + *strchr(cmd_output, '\n') = '\0'; + + if (sscanf(cmd_output, "%*s %*s %d.%d", &pre_dot, &post_dot) != 2) + pg_log(PG_FATAL, "could not get version from %s\n", cmd); + + cluster->bin_version = (pre_dot * 100 + post_dot) * 100; +} + diff --git a/contrib/pg_upgrade/controldata.c b/contrib/pg_upgrade/controldata.c index 25ee81f2a0..8e0db7750f 100644 --- a/contrib/pg_upgrade/controldata.c +++ b/contrib/pg_upgrade/controldata.c @@ -140,8 +140,8 @@ get_control_data(ClusterInfo *cluster, bool live_check) if (!isascii(*p)) pg_log(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 Postgres\n" - "8.3 to fix this bug. Postgres 8.3.7 and later are known to work properly.\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"); } #endif diff --git a/contrib/pg_upgrade/dump.c b/contrib/pg_upgrade/dump.c index aba95f44c9..167e5502c3 100644 --- a/contrib/pg_upgrade/dump.c +++ b/contrib/pg_upgrade/dump.c @@ -22,7 +22,8 @@ generate_old_dump(void) */ exec_prog(true, SYSTEMQUOTE "\"%s/pg_dumpall\" --port %d --username \"%s\" " - "--schema-only --binary-upgrade > \"%s/" ALL_DUMP_FILE "\"" + "--schema-only --quote-all-identifiers --binary-upgrade " + "-f \"%s/" ALL_DUMP_FILE "\"" SYSTEMQUOTE, new_cluster.bindir, old_cluster.port, os_info.user, os_info.cwd); check_ok(); } @@ -54,14 +55,19 @@ split_old_dump(void) char filename[MAXPGPATH]; bool suppressed_username = false; + /* + * Open all files in binary mode to avoid line end translation on Windows, + * both for input and output. + */ + snprintf(filename, sizeof(filename), "%s/%s", os_info.cwd, ALL_DUMP_FILE); - if ((all_dump = fopen(filename, "r")) == NULL) + if ((all_dump = fopen(filename, PG_BINARY_R)) == NULL) pg_log(PG_FATAL, "Cannot open dump file %s\n", filename); snprintf(filename, sizeof(filename), "%s/%s", os_info.cwd, GLOBALS_DUMP_FILE); - if ((globals_dump = fopen(filename, "w")) == NULL) + if ((globals_dump = fopen(filename, PG_BINARY_W)) == NULL) pg_log(PG_FATAL, "Cannot write to dump file %s\n", filename); snprintf(filename, sizeof(filename), "%s/%s", os_info.cwd, DB_DUMP_FILE); - if ((db_dump = fopen(filename, "w")) == NULL) + if ((db_dump = fopen(filename, PG_BINARY_W)) == NULL) pg_log(PG_FATAL, "Cannot write to dump file %s\n", filename); current_output = globals_dump; diff --git a/contrib/pg_upgrade/exec.c b/contrib/pg_upgrade/exec.c index b7d82663ff..02804629f3 100644 --- a/contrib/pg_upgrade/exec.c +++ b/contrib/pg_upgrade/exec.c @@ -16,6 +16,9 @@ static void check_data_dir(const char *pg_data); static void check_bin_dir(ClusterInfo *cluster); static void validate_exec(const char *dir, const char *cmdName); +#ifdef WIN32 +static int win32_check_directory_write_permissions(void); +#endif /* @@ -97,17 +100,11 @@ verify_directories(void) prep_status("Checking current, bin, and data directories"); - if (access(".", R_OK | W_OK #ifndef WIN32 - - /* - * Do a directory execute check only on Unix because execute permission on - * NTFS means "can execute scripts", which we don't care about. Also, X_OK - * is not defined in the Windows API. - */ - | X_OK + if (access(".", R_OK | W_OK | X_OK) != 0) +#else + if (win32_check_directory_write_permissions() != 0) #endif - ) != 0) pg_log(PG_FATAL, "You must have read and write access in the current directory.\n"); @@ -119,6 +116,32 @@ verify_directories(void) } +#ifdef WIN32 +/* + * win32_check_directory_write_permissions() + * + * access() on WIN32 can't check directory permissions, so we have to + * optionally create, then delete a file to check. + * http://msdn.microsoft.com/en-us/library/1w06ktdy%28v=vs.80%29.aspx + */ +static int +win32_check_directory_write_permissions(void) +{ + int fd; + + /* + * We open a file we would normally create anyway. We do this even in + * 'check' mode, which isn't ideal, but this is the best we can do. + */ + if ((fd = open(GLOBALS_DUMP_FILE, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR)) < 0) + return -1; + close(fd); + + return unlink(GLOBALS_DUMP_FILE); +} +#endif + + /* * check_data_dir() * @@ -145,7 +168,9 @@ check_data_dir(const char *pg_data) { struct stat statBuf; - snprintf(subDirName, sizeof(subDirName), "%s/%s", pg_data, + snprintf(subDirName, sizeof(subDirName), "%s%s%s", pg_data, + /* Win32 can't stat() a directory with a trailing slash. */ + *requiredSubdirs[subdirnum] ? "/" : "", requiredSubdirs[subdirnum]); if (stat(subDirName, &statBuf) != 0) @@ -185,7 +210,6 @@ check_bin_dir(ClusterInfo *cluster) if (cluster == &new_cluster) { /* these are only needed in the new cluster */ - validate_exec(cluster->bindir, "pg_config"); validate_exec(cluster->bindir, "psql"); validate_exec(cluster->bindir, "pg_dumpall"); } diff --git a/contrib/pg_upgrade/file.c b/contrib/pg_upgrade/file.c index a7e40090e2..8fdc86d7d4 100644 --- a/contrib/pg_upgrade/file.c +++ b/contrib/pg_upgrade/file.c @@ -287,14 +287,14 @@ pg_scandir_internal(const char *dirname, size_t entrysize; if ((dirdesc = opendir(dirname)) == NULL) - pg_log(PG_FATAL, "could not open directory \"%s\": %m\n", dirname); + pg_log(PG_FATAL, "could not open directory \"%s\": %s\n", dirname, getErrorText(errno)); *namelist = NULL; while ((direntry = readdir(dirdesc)) != NULL) { /* Invoke the selector function to see if the direntry matches */ - if ((*selector) (direntry)) + if (!selector || (*selector) (direntry)) { count++; diff --git a/contrib/pg_upgrade/function.c b/contrib/pg_upgrade/function.c index 322014cd23..d63e37ddfa 100644 --- a/contrib/pg_upgrade/function.c +++ b/contrib/pg_upgrade/function.c @@ -11,6 +11,7 @@ #include "access/transam.h" +#define PG_UPGRADE_SUPPORT "$libdir/pg_upgrade_support" /* * install_support_functions_in_new_db() @@ -129,6 +130,7 @@ get_loadable_libraries(void) PGresult **ress; int totaltups; int dbnum; + bool found_public_plpython_handler = false; ress = (PGresult **) pg_malloc(old_cluster.dbarr.ndbs * sizeof(PGresult *)); @@ -150,20 +152,78 @@ get_loadable_libraries(void) FirstNormalObjectId); totaltups += PQntuples(ress[dbnum]); + /* + * 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 + * "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: e0dedd0559f005d60c69c9772163e69c204bac69 + * http://archives.postgresql.org/pgsql-hackers/2012-03/msg01101.php + * http://archives.postgresql.org/pgsql-bugs/2012-05/msg00206.php + */ + if (GET_MAJOR_VERSION(old_cluster.major_version) < 901) + { + PGresult *res; + + res = executeQueryOrDie(conn, + "SELECT 1 " + "FROM pg_catalog.pg_proc JOIN pg_namespace " + " ON pronamespace = pg_namespace.oid " + "WHERE proname = 'plpython_call_handler' AND " + "nspname = 'public' AND " + "prolang = 13 /* C */ AND " + "probin = '$libdir/plpython' AND " + "pg_proc.oid >= %u;", + FirstNormalObjectId); + if (PQntuples(res) > 0) + { + if (!found_public_plpython_handler) + { + pg_log(PG_WARNING, + "\nThe old cluster has a \"plpython_call_handler\" function defined\n" + "in the \"public\" schema which is a duplicate of the one defined\n" + "in the \"pg_catalog\" schema. You can confirm this by executing\n" + "in psql:\n" + "\n" + " \\df *.plpython_call_handler\n" + "\n" + "The \"public\" schema version of this function was created by a\n" + "pre-8.1 install of plpython, and must be removed for pg_upgrade\n" + "to complete because it references a now-obsolete \"plpython\"\n" + "shared object file. You can remove the \"public\" schema version\n" + "of this function by running the following command:\n" + "\n" + " DROP FUNCTION public.plpython_call_handler()\n" + "\n" + "in each affected database:\n" + "\n"); + } + pg_log(PG_WARNING, " %s\n", active_db->db_name); + found_public_plpython_handler = true; + } + PQclear(res); + } + PQfinish(conn); } + if (found_public_plpython_handler) + pg_log(PG_FATAL, + "Remove the problem functions from the old cluster to continue.\n"); + + totaltups++; /* reserve for pg_upgrade_support */ + /* Allocate what's certainly enough space */ - if (totaltups > 0) - os_info.libraries = (char **) pg_malloc(totaltups * sizeof(char *)); - else - os_info.libraries = NULL; + os_info.libraries = (char **) pg_malloc(totaltups * sizeof(char *)); /* * Now remove duplicates across DBs. This is pretty inefficient code, but * there probably aren't enough entries to matter. */ totaltups = 0; + os_info.libraries[totaltups++] = pg_strdup(PG_UPGRADE_SUPPORT); for (dbnum = 0; dbnum < old_cluster.dbarr.ndbs; dbnum++) { @@ -224,11 +284,27 @@ check_loadable_libraries(void) { char *lib = os_info.libraries[libnum]; int llen = strlen(lib); - char *cmd = (char *) pg_malloc(8 + 2 * llen + 1); + char cmd[7 + 2 * MAXPGPATH + 1]; PGresult *res; + /* + * In Postgres 9.0, Python 3 support was added, and to do that, a + * plpython2u language was created with library name plpython2.so + * as a symbolic link to plpython.so. In Postgres 9.1, only the + * plpython2.so library was created, and both plpythonu and + * plpython2u pointing to it. For this reason, any reference to + * library name "plpython" in an old PG <= 9.1 cluster must look + * for "plpython2" in the new cluster. + */ + if (GET_MAJOR_VERSION(old_cluster.major_version) < 901 && + strcmp(lib, "$libdir/plpython") == 0) + { + lib = "$libdir/plpython2"; + llen = strlen(lib); + } + strcpy(cmd, "LOAD '"); - PQescapeStringConn(conn, cmd + 6, lib, llen, NULL); + PQescapeStringConn(conn, cmd + strlen(cmd), lib, llen, NULL); strcat(cmd, "'"); res = PQexec(conn, cmd); @@ -236,6 +312,12 @@ check_loadable_libraries(void) if (PQresultStatus(res) != PGRES_COMMAND_OK) { found = true; + + /* exit and report missing support library with special message */ + if (strcmp(lib, PG_UPGRADE_SUPPORT) == 0) + pg_log(PG_FATAL, + "The pg_upgrade_support module must be created and installed in the new cluster.\n"); + if (script == NULL && (script = fopen(output_path, "w")) == NULL) pg_log(PG_FATAL, "Could not create necessary file: %s\n", output_path); @@ -245,7 +327,6 @@ check_loadable_libraries(void) } PQclear(res); - pg_free(cmd); } PQfinish(conn); diff --git a/contrib/pg_upgrade/info.c b/contrib/pg_upgrade/info.c index f0cd8e5ede..2c78f6ed4f 100644 --- a/contrib/pg_upgrade/info.c +++ b/contrib/pg_upgrade/info.c @@ -55,12 +55,15 @@ gen_db_file_maps(DbInfo *old_db, DbInfo *new_db, old_db->db_name, old_rel->reloid, new_rel->reloid); /* - * In pre-8.4, TOAST table names change during CLUSTER; in >= 8.4 - * TOAST relation names always use heap table oids, hence we cannot - * check relation names when upgrading from pre-8.4. + * TOAST table names initially match the heap pg_class oid. + * In pre-8.4, TOAST table names change during CLUSTER; in pre-9.0, + * TOAST table names change during ALTER TABLE ALTER COLUMN SET TYPE. + * In >= 9.0, TOAST relation names always use heap table oids, hence + * we cannot check relation names when upgrading from pre-9.0. + * Clusters upgraded to 9.0 will get matching TOAST names. */ if (strcmp(old_rel->nspname, new_rel->nspname) != 0 || - ((GET_MAJOR_VERSION(old_cluster.major_version) >= 804 || + ((GET_MAJOR_VERSION(old_cluster.major_version) >= 900 || strcmp(old_rel->nspname, "pg_toast") != 0) && strcmp(old_rel->relname, new_rel->relname) != 0)) pg_log(PG_FATAL, "Mismatch of relation names: database \"%s\", " @@ -247,7 +250,8 @@ get_rel_infos(ClusterInfo *cluster, DbInfo *dbinfo) i_nspname, i_relname, i_oid, - i_relfilenode; + i_relfilenode, + i_reltablespace; char query[QUERY_ALLOC]; /* @@ -260,13 +264,22 @@ get_rel_infos(ClusterInfo *cluster, DbInfo *dbinfo) snprintf(query, sizeof(query), "SELECT c.oid, n.nspname, c.relname, " - " c.relfilenode, t.spclocation " + " c.relfilenode, c.reltablespace, t.spclocation " "FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n " " ON c.relnamespace = n.oid " + " LEFT OUTER JOIN pg_catalog.pg_index i " + " ON c.oid = i.indexrelid " " LEFT OUTER JOIN pg_catalog.pg_tablespace t " " ON c.reltablespace = t.oid " "WHERE relkind IN ('r','t', 'i'%s) AND " - " ((n.nspname NOT IN ('pg_catalog', 'information_schema', 'binary_upgrade') AND " + /* pg_dump only dumps valid indexes; testing indisready is + * necessary in 9.2, and harmless in earlier/later versions. */ + " i.indisvalid IS DISTINCT FROM false AND " + " i.indisready IS DISTINCT FROM false AND " + /* exclude possible orphaned temp tables */ + " ((n.nspname !~ '^pg_temp_' AND " + " n.nspname !~ '^pg_toast_temp_' AND " + " n.nspname NOT IN ('pg_catalog', 'information_schema', 'binary_upgrade') AND " " c.oid >= %u) " " OR (n.nspname = 'pg_catalog' AND " " relname IN ('pg_largeobject', 'pg_largeobject_loid_pn_index'%s) )) " @@ -291,6 +304,7 @@ get_rel_infos(ClusterInfo *cluster, DbInfo *dbinfo) i_nspname = PQfnumber(res, "nspname"); i_relname = PQfnumber(res, "relname"); i_relfilenode = PQfnumber(res, "relfilenode"); + i_reltablespace = PQfnumber(res, "reltablespace"); i_spclocation = PQfnumber(res, "spclocation"); for (relnum = 0; relnum < ntups; relnum++) @@ -308,10 +322,13 @@ get_rel_infos(ClusterInfo *cluster, DbInfo *dbinfo) curr->relfilenode = atooid(PQgetvalue(res, relnum, i_relfilenode)); - tblspace = PQgetvalue(res, relnum, i_spclocation); - /* if no table tablespace, use the database tablespace */ - if (strlen(tblspace) == 0) + if (atooid(PQgetvalue(res, relnum, i_reltablespace)) != 0) + /* Might be "", meaning the cluster default location. */ + tblspace = PQgetvalue(res, relnum, i_spclocation); + else + /* A zero reltablespace indicates the database tablespace. */ tblspace = dbinfo->db_tblspace; + strlcpy(curr->tablespace, tblspace, sizeof(curr->tablespace)); } PQclear(res); diff --git a/contrib/pg_upgrade/option.c b/contrib/pg_upgrade/option.c index abb74a5bfa..735ee6758d 100644 --- a/contrib/pg_upgrade/option.c +++ b/contrib/pg_upgrade/option.c @@ -19,8 +19,6 @@ static void usage(void); static void validateDirectoryOption(char **dirpath, char *envVarName, char *cmdLineOption, char *description); -static void get_pkglibdirs(void); -static char *get_pkglibdir(const char *bindir); UserOpts user_opts; @@ -213,8 +211,6 @@ parseCommandLine(int argc, char *argv[]) "old cluster data resides"); validateDirectoryOption(&new_cluster.pgdata, "NEWDATADIR", "-D", "new cluster data resides"); - - get_pkglibdirs(); } @@ -316,44 +312,3 @@ validateDirectoryOption(char **dirpath, #endif (*dirpath)[strlen(*dirpath) - 1] = 0; } - - -static void -get_pkglibdirs(void) -{ - /* - * we do not need to know the libpath in the old cluster, and might not - * have a working pg_config to ask for it anyway. - */ - old_cluster.libpath = NULL; - new_cluster.libpath = get_pkglibdir(new_cluster.bindir); -} - - -static char * -get_pkglibdir(const char *bindir) -{ - char cmd[MAXPGPATH]; - char bufin[MAX_STRING]; - FILE *output; - int i; - - snprintf(cmd, sizeof(cmd), "\"%s/pg_config\" --pkglibdir", bindir); - - if ((output = popen(cmd, "r")) == NULL) - pg_log(PG_FATAL, "Could not get pkglibdir data: %s\n", - getErrorText(errno)); - - fgets(bufin, sizeof(bufin), output); - - if (output) - pclose(output); - - /* Remove trailing newline */ - i = strlen(bufin) - 1; - - if (bufin[i] == '\n') - bufin[i] = '\0'; - - return pg_strdup(bufin); -} diff --git a/contrib/pg_upgrade/pg_upgrade.c b/contrib/pg_upgrade/pg_upgrade.c index e329dc3efe..e8b48a4fab 100644 --- a/contrib/pg_upgrade/pg_upgrade.c +++ b/contrib/pg_upgrade/pg_upgrade.c @@ -29,7 +29,7 @@ * We control all assignments of pg_enum.oid because these oids are stored * in user tables as enum values. * - * We control all assignments of pg_auth.oid because these oids are stored + * We control all assignments of pg_authid.oid because these oids are stored * in pg_largeobject_metadata. */ @@ -193,8 +193,14 @@ prepare_new_cluster(void) prep_status("Analyzing all rows in the new cluster"); exec_prog(true, SYSTEMQUOTE "\"%s/vacuumdb\" --port %d --username \"%s\" " - "--all --analyze >> %s 2>&1" SYSTEMQUOTE, - new_cluster.bindir, new_cluster.port, os_info.user, log_opts.filename); + "--all --analyze >> \"%s\" 2>&1" SYSTEMQUOTE, + new_cluster.bindir, new_cluster.port, os_info.user, +#ifndef WIN32 + log_opts.filename +#else + DEVNULL +#endif + ); check_ok(); /* @@ -206,8 +212,14 @@ prepare_new_cluster(void) prep_status("Freezing all rows on the new cluster"); exec_prog(true, SYSTEMQUOTE "\"%s/vacuumdb\" --port %d --username \"%s\" " - "--all --freeze >> %s 2>&1" SYSTEMQUOTE, - new_cluster.bindir, new_cluster.port, os_info.user, log_opts.filename); + "--all --freeze >> \"%s\" 2>&1" SYSTEMQUOTE, + new_cluster.bindir, new_cluster.port, os_info.user, +#ifndef WIN32 + log_opts.filename +#else + DEVNULL +#endif + ); check_ok(); get_pg_database_relfilenode(&new_cluster); @@ -245,7 +257,13 @@ prepare_new_databases(void) "--no-psqlrc --port %d --username \"%s\" " "-f \"%s/%s\" --dbname template1 >> \"%s\"" SYSTEMQUOTE, new_cluster.bindir, new_cluster.port, os_info.user, os_info.cwd, - GLOBALS_DUMP_FILE, log_opts.filename); + GLOBALS_DUMP_FILE, +#ifndef WIN32 + log_opts.filename +#else + DEVNULL +#endif + ); check_ok(); /* we load this to get a current list of databases */ @@ -276,7 +294,13 @@ create_new_objects(void) "--no-psqlrc --port %d --username \"%s\" " "-f \"%s/%s\" --dbname template1 >> \"%s\"" SYSTEMQUOTE, new_cluster.bindir, new_cluster.port, os_info.user, os_info.cwd, - DB_DUMP_FILE, log_opts.filename); + DB_DUMP_FILE, +#ifndef WIN32 + log_opts.filename +#else + DEVNULL +#endif + ); check_ok(); /* regenerate now that we have objects in the databases */ @@ -324,7 +348,13 @@ copy_clog_xlog_xid(void) exec_prog(true, SYSTEMQUOTE "\"%s/pg_resetxlog\" -l %u,%u,%u \"%s\" >> \"%s\" 2>&1" SYSTEMQUOTE, new_cluster.bindir, old_cluster.controldata.chkpnt_tli, old_cluster.controldata.logid, old_cluster.controldata.nxtlogseg, - new_cluster.pgdata, log_opts.filename); + new_cluster.pgdata, +#ifndef WIN32 + log_opts.filename +#else + DEVNULL +#endif + ); check_ok(); } diff --git a/contrib/pg_upgrade/pg_upgrade.h b/contrib/pg_upgrade/pg_upgrade.h index a3a0856309..0b3a83b9ef 100644 --- a/contrib/pg_upgrade/pg_upgrade.h +++ b/contrib/pg_upgrade/pg_upgrade.h @@ -38,6 +38,7 @@ #define pg_copy_file copy_file #define pg_mv_file rename #define pg_link_file link +#define PATH_SEPARATOR '/' #define RM_CMD "rm -f" #define RMDIR_CMD "rm -rf" #define SCRIPT_EXT "sh" @@ -46,12 +47,24 @@ #define pg_mv_file pgrename #define pg_link_file win32_pghardlink #define sleep(x) Sleep(x * 1000) +#define PATH_SEPARATOR '\\' #define RM_CMD "DEL /q" #define RMDIR_CMD "RMDIR /s/q" #define SCRIPT_EXT "bat" #define EXE_EXT ".exe" #endif +#if defined(WIN32) && !defined(__CYGWIN__) + + /* + * XXX This does not work for all terminal environments or for output + * containing non-ASCII characters; see comments in simple_prompt(). + */ +#define DEVTTY "con" +#else +#define DEVTTY "/dev/tty" +#endif + #define CLUSTER_NAME(cluster) ((cluster) == &old_cluster ? "old" : \ (cluster) == &new_cluster ? "new" : "none") @@ -71,7 +84,8 @@ typedef struct char relname[NAMEDATALEN]; /* relation name */ Oid reloid; /* relation oid */ Oid relfilenode; /* relation relfile node */ - char tablespace[MAXPGPATH]; /* relations tablespace path */ + /* relation tablespace path, or "" for the cluster default */ + char tablespace[MAXPGPATH]; } RelInfo; typedef struct @@ -184,8 +198,10 @@ typedef struct unsigned short port; /* port number where postmaster is waiting */ uint32 major_version; /* PG_VERSION of cluster */ char major_version_str[64]; /* string PG_VERSION of cluster */ + uint32 bin_version; /* version returned from pg_ctl */ Oid pg_database_oid; /* OID of pg_database relation */ - char *libpath; /* pathname for cluster's pkglibdir */ + Oid install_role_oid; /* OID of connected role */ + Oid role_count; /* number of roles defined in the cluster */ char *tablespace_suffix; /* directory specification */ } ClusterInfo; @@ -390,6 +406,7 @@ void new_9_0_populate_pg_largeobject_metadata(ClusterInfo *cluster, void old_8_3_check_for_name_data_type_usage(ClusterInfo *cluster); void old_8_3_check_for_tsquery_usage(ClusterInfo *cluster); +void old_8_3_check_ltree_usage(ClusterInfo *cluster); void old_8_3_rebuild_tsvector_tables(ClusterInfo *cluster, bool check_mode); void old_8_3_invalidate_hash_gin_indexes(ClusterInfo *cluster, bool check_mode); void old_8_3_invalidate_bpchar_pattern_ops_indexes(ClusterInfo *cluster, diff --git a/contrib/pg_upgrade/server.c b/contrib/pg_upgrade/server.c index 58c1234a94..e86540b9d7 100644 --- a/contrib/pg_upgrade/server.c +++ b/contrib/pg_upgrade/server.c @@ -184,7 +184,7 @@ start_postmaster(ClusterInfo *cluster) (cluster->controldata.cat_ver >= BINARY_UPGRADE_SERVER_FLAG_CAT_VER) ? "-b" : "-c autovacuum=off -c autovacuum_freeze_max_age=2000000000", - log_opts.filename); + output_filename); /* * Don't throw an error right away, let connecting throw the error because diff --git a/contrib/pg_upgrade/version_old_8_3.c b/contrib/pg_upgrade/version_old_8_3.c index 1a31f8d683..ffb79adc91 100644 --- a/contrib/pg_upgrade/version_old_8_3.c +++ b/contrib/pg_upgrade/version_old_8_3.c @@ -59,8 +59,10 @@ old_8_3_check_for_name_data_type_usage(ClusterInfo *cluster) " NOT a.attisdropped AND " " a.atttypid = 'pg_catalog.name'::pg_catalog.regtype AND " " c.relnamespace = n.oid AND " - " n.nspname != 'pg_catalog' AND " - " n.nspname != 'information_schema'"); + /* exclude possible orphaned temp tables */ + " n.nspname !~ '^pg_temp_' AND " + " n.nspname !~ '^pg_toast_temp_' AND " + " n.nspname NOT IN ('pg_catalog', 'information_schema')"); ntups = PQntuples(res); i_nspname = PQfnumber(res, "nspname"); @@ -149,8 +151,10 @@ old_8_3_check_for_tsquery_usage(ClusterInfo *cluster) " NOT a.attisdropped AND " " a.atttypid = 'pg_catalog.tsquery'::pg_catalog.regtype AND " " c.relnamespace = n.oid AND " - " n.nspname != 'pg_catalog' AND " - " n.nspname != 'information_schema'"); + /* exclude possible orphaned temp tables */ + " n.nspname !~ '^pg_temp_' AND " + " n.nspname !~ '^pg_toast_temp_' AND " + " n.nspname NOT IN ('pg_catalog', 'information_schema')"); ntups = PQntuples(res); i_nspname = PQfnumber(res, "nspname"); @@ -197,6 +201,87 @@ old_8_3_check_for_tsquery_usage(ClusterInfo *cluster) } +/* + * old_8_3_check_ltree_usage() + * 8.3 -> 8.4 + * The internal ltree structure was changed in 8.4 so upgrading is impossible. + */ +void +old_8_3_check_ltree_usage(ClusterInfo *cluster) +{ + int dbnum; + FILE *script = NULL; + bool found = false; + char output_path[MAXPGPATH]; + + prep_status("Checking for contrib/ltree"); + + snprintf(output_path, sizeof(output_path), "%s/contrib_ltree.txt", + os_info.cwd); + + for (dbnum = 0; dbnum < cluster->dbarr.ndbs; dbnum++) + { + PGresult *res; + bool db_used = false; + int ntups; + int rowno; + int i_nspname, + i_proname; + DbInfo *active_db = &cluster->dbarr.dbs[dbnum]; + PGconn *conn = connectToServer(cluster, active_db->db_name); + + /* Find any functions coming from contrib/ltree */ + res = executeQueryOrDie(conn, + "SELECT n.nspname, p.proname " + "FROM pg_catalog.pg_proc p, " + " pg_catalog.pg_namespace n " + "WHERE p.pronamespace = n.oid AND " + " p.probin = '$libdir/ltree'"); + + ntups = PQntuples(res); + i_nspname = PQfnumber(res, "nspname"); + i_proname = PQfnumber(res, "proname"); + for (rowno = 0; rowno < ntups; rowno++) + { + found = true; + if (script == NULL && (script = fopen(output_path, "w")) == NULL) + pg_log(PG_FATAL, "Could not open file \"%s\": %s\n", + output_path, getErrorText(errno)); + if (!db_used) + { + fprintf(script, "Database: %s\n", active_db->db_name); + db_used = true; + } + fprintf(script, " %s.%s\n", + PQgetvalue(res, rowno, i_nspname), + PQgetvalue(res, rowno, i_proname)); + } + + PQclear(res); + + PQfinish(conn); + } + + if (script) + fclose(script); + + if (found) + { + pg_log(PG_REPORT, "fatal\n"); + pg_log(PG_FATAL, + "Your installation contains the \"ltree\" data type. This data type\n" + "changed its internal storage format between your old and new clusters so this\n" + "cluster cannot currently be upgraded. You can manually upgrade databases\n" + "that use \"contrib/ltree\" facilities and remove \"contrib/ltree\" from the old\n" + "cluster and restart the upgrade. A list of the problem functions is in the\n" + "file:\n" + " %s\n\n", output_path); + } + else + check_ok(); +} + + /* * old_8_3_rebuild_tsvector_tables() * 8.3 -> 8.4 @@ -247,8 +332,10 @@ old_8_3_rebuild_tsvector_tables(ClusterInfo *cluster, bool check_mode) " NOT a.attisdropped AND " " a.atttypid = 'pg_catalog.tsvector'::pg_catalog.regtype AND " " c.relnamespace = n.oid AND " - " n.nspname != 'pg_catalog' AND " - " n.nspname != 'information_schema'"); + /* exclude possible orphaned temp tables */ + " n.nspname !~ '^pg_temp_' AND " + " n.nspname !~ '^pg_toast_temp_' AND " + " n.nspname NOT IN ('pg_catalog', 'information_schema')"); /* * This macro is used below to avoid reindexing indexes already rebuilt @@ -265,7 +352,7 @@ old_8_3_rebuild_tsvector_tables(ClusterInfo *cluster, bool check_mode) " NOT a.attisdropped AND " \ " a.atttypid = 'pg_catalog.tsvector'::pg_catalog.regtype AND " \ " c.relnamespace = n.oid AND " \ - " n.nspname != 'pg_catalog' AND " \ + " n.nspname !~ '^pg_' AND " \ " n.nspname != 'information_schema') " ntups = PQntuples(res); @@ -631,8 +718,10 @@ old_8_3_create_sequence_script(ClusterInfo *cluster) " pg_catalog.pg_namespace n " "WHERE c.relkind = 'S' AND " " c.relnamespace = n.oid AND " - " n.nspname != 'pg_catalog' AND " - " n.nspname != 'information_schema'"); + /* exclude possible orphaned temp tables */ + " n.nspname !~ '^pg_temp_' AND " + " n.nspname !~ '^pg_toast_temp_' AND " + " n.nspname NOT IN ('pg_catalog', 'information_schema')"); ntups = PQntuples(res); i_nspname = PQfnumber(res, "nspname"); diff --git a/contrib/pgcrypto/crypt-blowfish.c b/contrib/pgcrypto/crypt-blowfish.c index a7b7e758ff..eebf1877cf 100644 --- a/contrib/pgcrypto/crypt-blowfish.c +++ b/contrib/pgcrypto/crypt-blowfish.c @@ -5,8 +5,8 @@ * and crypt(3) interfaces added, but optimizations specific to password * cracking removed. * - * Written by Solar Designer in 1998-2001, and placed - * in the public domain. + * Written by Solar Designer in 1998-2002 and + * placed in the public domain. * * There's absolutely no warranty. * @@ -19,9 +19,9 @@ * of your choice. * * This implementation is compatible with OpenBSD bcrypt.c (version 2a) - * by Niels Provos , and uses some of his - * ideas. The password hashing algorithm was designed by David Mazieres - * . + * by Niels Provos , and uses some of his + * ideas. The password hashing algorithm was designed by David Mazieres + * . * * There's a paper on the algorithm that explains its design decisions: * @@ -40,7 +40,7 @@ #ifdef __i386__ #define BF_ASM 0 /* 1 */ #define BF_SCALE 1 -#elif defined(__alpha__) +#elif defined(__x86_64__) || defined(__alpha__) || defined(__hppa__) #define BF_ASM 0 #define BF_SCALE 1 #else @@ -49,6 +49,7 @@ #endif typedef unsigned int BF_word; +typedef signed int BF_word_signed; /* Number of Blowfish rounds, this is also hardcoded into a few places */ #define BF_N 16 @@ -544,7 +545,8 @@ extern void _BF_body_r(BF_ctx *ctx); #endif static void -BF_set_key(const char *key, BF_key expanded, BF_key initial) +BF_set_key(const char *key, BF_key expanded, BF_key initial, + int sign_extension_bug) { const char *ptr = key; int i, @@ -557,7 +559,10 @@ BF_set_key(const char *key, BF_key expanded, BF_key initial) for (j = 0; j < 4; j++) { tmp <<= 8; - tmp |= *ptr; + if (sign_extension_bug) + tmp |= (BF_word_signed) (signed char) *ptr; + else + tmp |= (unsigned char) *ptr; if (!*ptr) ptr = key; @@ -599,10 +604,11 @@ _crypt_blowfish_rn(const char *key, const char *setting, if (setting[0] != '$' || setting[1] != '2' || - setting[2] != 'a' || + (setting[2] != 'a' && setting[2] != 'x') || setting[3] != '$' || setting[4] < '0' || setting[4] > '3' || setting[5] < '0' || setting[5] > '9' || + (setting[4] == '3' && setting[5] > '1') || setting[6] != '$') { return NULL; @@ -616,7 +622,7 @@ _crypt_blowfish_rn(const char *key, const char *setting, } BF_swap(data.binary.salt, 4); - BF_set_key(key, data.expanded_key, data.ctx.P); + BF_set_key(key, data.expanded_key, data.ctx.P, setting[2] == 'x'); memcpy(data.ctx.S, BF_init_state.S, sizeof(data.ctx.S)); diff --git a/contrib/pgcrypto/crypt-des.c b/contrib/pgcrypto/crypt-des.c index 1f497432da..10ba664691 100644 --- a/contrib/pgcrypto/crypt-des.c +++ b/contrib/pgcrypto/crypt-des.c @@ -671,7 +671,8 @@ px_crypt_des(const char *key, const char *setting) q = (uint8 *) keybuf; while (q - (uint8 *) keybuf - 8) { - if ((*q++ = *key << 1)) + *q++ = *key << 1; + if (*key != '\0') key++; } if (des_setkey((char *) keybuf)) diff --git a/contrib/pgcrypto/expected/pgp-pubkey-decrypt.out b/contrib/pgcrypto/expected/pgp-pubkey-decrypt.out index 7fbbd839d9..61e09b9a86 100644 --- a/contrib/pgcrypto/expected/pgp-pubkey-decrypt.out +++ b/contrib/pgcrypto/expected/pgp-pubkey-decrypt.out @@ -417,6 +417,70 @@ hbt6LhKhCLUNdz/udIt0JAC6c/HdPLSW3HnmM3+iNj+Kug== =UKh3 -----END PGP PRIVATE KEY BLOCK----- '); +insert into keytbl (id, name, pubkey, seckey) +values (7, 'rsaenc2048-psw', ' +same key with password +', ' +-----BEGIN PGP PRIVATE KEY BLOCK----- +Version: GnuPG v1.4.11 (GNU/Linux) + +lQPEBELr2m0BCADOrnknlnXI0EzRExf/TgoHvK7Xx/E0keWqV3KrOyC3/tY2KOrj +UVxaAX5pkFX9wdQObGPIJm06u6D16CH6CildX/vxG7YgvvKzK8JGAbwrXAfk7OIW +czO2zRaZGDynoK3mAxHRBReyTKtNv8rDQhuZs6AOozJNARdbyUO/yqUnqNNygWuT +4htFDEuLPIJwAbMSD0BvFW6YQaPdxzaAZm3EWVNbwDzjgbBUdBiUUwRdZIFUhsjJ +dirFdy5+uuZru6y6CNC1OERkJ7P8EyoFiZckAIE5gshVZzNuyLOZjc5DhWBvLbX4 +NZElAnfiv+4nA6y8wQLSIbmHA3nqJaBklj85AAYp/gcDCNnoEKwFo86JYCE1J92R +HRQ7DoyAZpW1O0dTXL8Epk0sKsKDrCJOrIkDymsjfyBexADIeqOkioy/50wD2Mku +CVHKWO2duAiJN5t/FoRgpR1/Q11K6QdfqOG0HxwfIXLcPv7eSIso8kWorj+I01BP +Fn/atGEbIjdWaz/q2XHbu0Q3x6Et2gIsbLRVMhiYz1UG9uzGJ0TYCdBa2SFhs184 +52akMpD+XVdM0Sq9/Cx40Seo8hzERB96+GXnQ48q2OhlvcEXiFyD6M6wYCWbEV+6 +XQVMymbl22FPP/bD9ReQX2kjrkQlFAtmhr+0y8reMCbcxwLuQfA3173lSPo7jrbH +oLrGhkRpqd2bYCelqdy/XMmRFso0+7uytHfTFrUNfDWfmHVrygoVrNnarCbxMMI0 +I8Q+tKHMThWgf0rIOSh0+w38kOXFCEqEWF8YkAqCrMZIlJIed78rOCFgG4aHajZR +D8rpXdUOIr/WeUddK25Tu8IuNJb0kFf12IMgNh0nS+mzlqWiofS5kA0TeB8wBV6t +RotaeyDNSsMoowfN8cf1yHMTxli+K1Tasg003WVUoWgUc+EsJ5+KTNwaX5uGv0Cs +j6dg6/FVeVRL9UsyF+2kt7euX3mABuUtcVGx/ZKTq/MNGEh6/r3B5U37qt+FDRbw +ppKPc2AP+yBUWsQskyrxFgv4eSpcLEg+lgdz/zLyG4qW4lrFUoO790Cm/J6C7/WQ +Z+E8kcS8aINJkg1skahH31d59ZkbW9PVeJMFGzNb0Z2LowngNP/BMrJ0LT2CQyLs +UxbT16S/gwAyUpJnbhWYr3nDdlwtC0rVopVTPD7khPRppcsq1f8D70rdIxI4Ouuw +vbjNZ1EWRJ9f2Ywb++k/xgSXwJkGodUlrUr+3i8cv8mPx+fWvif9q7Y5Ex1wCRa8 +8FAj/o+hEbQlUlNBIDIwNDggRW5jIDxyc2EyMDQ4ZW5jQGV4YW1wbGUub3JnPokB +NAQTAQIAHgUCQuvabQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRDImeqTRBlV +WRzJCACbRhx2fYjPGKta69M5dS+kr5UD/CQmsR2t9cB9zyqhratjPnKW9q13+4AG +P3aByT14IH1c5Mha8rJkNYD2wxmC8jrrcPiJIYoRG+W1sUATY/t8wBbNWF+r9h11 +m0lEpsmNVff/jU7SpNN6JQ3P7MHd5V85LlDoXIH6QYCLd0PjKU+jNvjiBe5VX0m9 +a1nacE3xoWc1vbM0DnqEuID78Qgkcrmm0ESeg1h+tRfHxSAyYNc/gPzm8eH6l+hj +gOvUc4Gd6LpBQSF8TcFfT2TZwJh7WVWDvNIP6FWAW7rzmHnX3wwXkGq4REWeVtk5 +yBPp6mOtWDiwaqLJYsoHWU11C8zYnQPEBELr2roBCADrgiWXZMzkQOntZa/NS56+ +CczLFQRQPl/8iJAW1eql/wOJ1UiwGSjT189WCKzE7vtazCIstdCFmwOs4DE6cz4S +UX4HjzjYHZwmMiuSrIefwuZ7cysMBsMXypQFyMSbqwh102xGvmLz3Z++rydx7Fzl +1RC/ny2+FN5dzYPO2DNtNi4dR2tjHktsxBWXAKCmxagAIwyxGouuEqDhYdFtwrA9 +Qy+M5n6fmGa1Dx07WWnbIud4uCilv8LPVKx5aJamDYWM3v7kS8n51MfTzeK/xoRM +2rsgzFdLJqPdbgd2nsD37fngqZnlp7tDxSVSuMckZoSKtq1QsNemtaQSYq7xjPst +AAYp/gcDCNnoEKwFo86JYAsxoD+wQ0zBi5RBM5EphXTpM1qKxmigsKOvBSaMmr0y +VjHtGY3poyV3t6VboOGCsFcaKm0tIdDL7vrxxwyYESETpF29b7QrYcoaLKMG7fsy +t9SUI3UV2H9uUquHgqHtsqz0jYOgm9tYnpesgQ/kOAWI/tej1ZJXUIWEmZMH/W6d +ATNvZ3ivwApfC0qF5G3oPgBSoIuQ/8I+pN/kmuyNAnJWNgagFhA/2VFBvh5XgztV +NW7G//KpR1scsn140SO/wpGBM3Kr4m8ztl9w9U6a7NlQZ2ub3/pIUTpSzyLBxJZ/ +RfuZI7ROdgDMKmEgCYrN2kfp0LIxnYL6ZJu3FDcS4V098lyf5rHvB3PAEdL6Zyhd +qYp3Sx68r0F4vzk5iAIWf6pG2YdfoP2Z48Pmq9xW8qD9iwFcoz9oAzDEMENn6dfq +6MzfoaXEoYp8cR/o+aeEaGUtYBHiaxQcJYx35B9IhsXXA49yRORK8qdwhSHxB3NQ +H3pUWkfw368f/A207hQVs9yYXlEvMZikxl58gldCd3BAPqHm/XzgknRRNQZBPPKJ +BMZebZ22Dm0qDuIqW4GXLB4sLf0+UXydVINIUOlzg+S4jrwx7eZqb6UkRXTIWVo5 +psTsD14wzWBRdUQHZOZD33+M8ugmewvLY/0Uix+2RorkmB7/jqoZvx/MehDwmCZd +VH8sb2wpZ55sj7gCXxvrfieQD/VeH54OwjjbtK56iYq56RVD0h1az8xDY2GZXeT7 +J0c3BGpuoca5xOFWr1SylAr/miEPxOBfnfk8oZQJvZrjSBGjsTbALep2vDJk8ROD +sdQCJuU1RHDrwKHlbUL0NbGRO2juJGsatdWnuVKsFbaFW2pHHkezKuwOcaAJv7Xt +8LRF17czAJ1uaLKwV8Paqx6UIv+089GbWZi7HIkBHwQYAQIACQUCQuvaugIbDAAK +CRDImeqTRBlVWS7XCACDVstKM+SHD6V0bkfO6ampHzj4krKjN0lonN5+7b7WKpgT +QHRYvPY8lUiIrjXGISQqEG9M5Bi5ea1aoBZem0P3U/lKheg0lYtA7dM3BqsA2EfG +RaDD9M5TFCqhy2VFR6Pk0MP7h5bkb2VxLUUQa4oNa1fT3q7zS875NvImO/HZ5UzW +T5d2Z5iwY6I2AOKYKt4kZhzXgbt5j2O3biDDXSfWwwAojWqbqVygepn047KVr7Al +2ug9hkY7tHz7U71HbZasroFgNPmP/UnAxmps4RKM28MRVPTI4cKUIdE3gIKFu3ou +EqEItQ13P+50i3QkALpz8d08tJbceeYzf6I2P4q6 +=QFm5 +-----END PGP PRIVATE KEY BLOCK----- +'); -- elg1024 / aes128 insert into encdata (id, data) values (1, ' -----BEGIN PGP MESSAGE----- @@ -537,6 +601,18 @@ ERROR: Wrong key select pgp_pub_decrypt(dearmor(data), dearmor(seckey)) from keytbl, encdata where keytbl.id=4 and encdata.id=1; 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 +-- 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; + pgp_pub_decrypt +----------------- + Secret message. +(1 row) + -- password-protected secret key, no password select pgp_pub_decrypt(dearmor(data), dearmor(seckey)) from keytbl, encdata where keytbl.id=5 and encdata.id=1; diff --git a/contrib/pgcrypto/pgcrypto--1.0.sql b/contrib/pgcrypto/pgcrypto--1.0.sql index 52be0950ce..d95a51bc40 100644 --- a/contrib/pgcrypto/pgcrypto--1.0.sql +++ b/contrib/pgcrypto/pgcrypto--1.0.sql @@ -1,5 +1,8 @@ /* contrib/pgcrypto/pgcrypto--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 + CREATE FUNCTION digest(text, text) RETURNS bytea AS 'MODULE_PATHNAME', 'pg_digest' diff --git a/contrib/pgcrypto/pgcrypto--unpackaged--1.0.sql b/contrib/pgcrypto/pgcrypto--unpackaged--1.0.sql index 64f0cdf23a..fe8d4c4e72 100644 --- a/contrib/pgcrypto/pgcrypto--unpackaged--1.0.sql +++ b/contrib/pgcrypto/pgcrypto--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION pgcrypto ADD function digest(text,text); ALTER EXTENSION pgcrypto ADD function digest(bytea,text); ALTER EXTENSION pgcrypto ADD function hmac(text,text,text); diff --git a/contrib/pgcrypto/pgcrypto.c b/contrib/pgcrypto/pgcrypto.c index d271ddc302..1da3afcd1d 100644 --- a/contrib/pgcrypto/pgcrypto.c +++ b/contrib/pgcrypto/pgcrypto.c @@ -342,8 +342,8 @@ pg_encrypt_iv(PG_FUNCTION_ARGS) err = px_combo_init(c, (uint8 *) VARDATA(key), klen, (uint8 *) VARDATA(iv), ivlen); if (!err) - px_combo_encrypt(c, (uint8 *) VARDATA(data), dlen, - (uint8 *) VARDATA(res), &rlen); + err = px_combo_encrypt(c, (uint8 *) VARDATA(data), dlen, + (uint8 *) VARDATA(res), &rlen); px_combo_free(c); @@ -396,8 +396,8 @@ pg_decrypt_iv(PG_FUNCTION_ARGS) err = px_combo_init(c, (uint8 *) VARDATA(key), klen, (uint8 *) VARDATA(iv), ivlen); if (!err) - px_combo_decrypt(c, (uint8 *) VARDATA(data), dlen, - (uint8 *) VARDATA(res), &rlen); + err = px_combo_decrypt(c, (uint8 *) VARDATA(data), dlen, + (uint8 *) VARDATA(res), &rlen); px_combo_free(c); diff --git a/contrib/pgcrypto/pgp-pubkey.c b/contrib/pgcrypto/pgp-pubkey.c index 283e0ec17e..9651d5e89f 100644 --- a/contrib/pgcrypto/pgp-pubkey.c +++ b/contrib/pgcrypto/pgp-pubkey.c @@ -408,16 +408,16 @@ process_secret_key(PullFilter *pkt, PGP_PubKey **pk_p, case PGP_PUB_RSA_SIGN: case PGP_PUB_RSA_ENCRYPT: case PGP_PUB_RSA_ENCRYPT_SIGN: - res = pgp_mpi_read(pkt, &pk->sec.rsa.d); + res = pgp_mpi_read(pf_key, &pk->sec.rsa.d); if (res < 0) break; - res = pgp_mpi_read(pkt, &pk->sec.rsa.p); + res = pgp_mpi_read(pf_key, &pk->sec.rsa.p); if (res < 0) break; - res = pgp_mpi_read(pkt, &pk->sec.rsa.q); + res = pgp_mpi_read(pf_key, &pk->sec.rsa.q); if (res < 0) break; - res = pgp_mpi_read(pkt, &pk->sec.rsa.u); + res = pgp_mpi_read(pf_key, &pk->sec.rsa.u); if (res < 0) break; break; diff --git a/contrib/pgcrypto/px-crypt.c b/contrib/pgcrypto/px-crypt.c index ab12e2a6e7..d2e1682e15 100644 --- a/contrib/pgcrypto/px-crypt.c +++ b/contrib/pgcrypto/px-crypt.c @@ -79,6 +79,7 @@ struct px_crypt_algo static const struct px_crypt_algo px_crypt_list[] = { {"$2a$", 4, run_crypt_bf}, + {"$2x$", 4, run_crypt_bf}, {"$2$", 3, NULL}, /* N/A */ {"$1$", 3, run_crypt_md5}, {"_", 1, run_crypt_des}, diff --git a/contrib/pgcrypto/sql/pgp-pubkey-decrypt.sql b/contrib/pgcrypto/sql/pgp-pubkey-decrypt.sql index cc82420084..f8495d1e54 100644 --- a/contrib/pgcrypto/sql/pgp-pubkey-decrypt.sql +++ b/contrib/pgcrypto/sql/pgp-pubkey-decrypt.sql @@ -426,6 +426,71 @@ hbt6LhKhCLUNdz/udIt0JAC6c/HdPLSW3HnmM3+iNj+Kug== -----END PGP PRIVATE KEY BLOCK----- '); +insert into keytbl (id, name, pubkey, seckey) +values (7, 'rsaenc2048-psw', ' +same key with password +', ' +-----BEGIN PGP PRIVATE KEY BLOCK----- +Version: GnuPG v1.4.11 (GNU/Linux) + +lQPEBELr2m0BCADOrnknlnXI0EzRExf/TgoHvK7Xx/E0keWqV3KrOyC3/tY2KOrj +UVxaAX5pkFX9wdQObGPIJm06u6D16CH6CildX/vxG7YgvvKzK8JGAbwrXAfk7OIW +czO2zRaZGDynoK3mAxHRBReyTKtNv8rDQhuZs6AOozJNARdbyUO/yqUnqNNygWuT +4htFDEuLPIJwAbMSD0BvFW6YQaPdxzaAZm3EWVNbwDzjgbBUdBiUUwRdZIFUhsjJ +dirFdy5+uuZru6y6CNC1OERkJ7P8EyoFiZckAIE5gshVZzNuyLOZjc5DhWBvLbX4 +NZElAnfiv+4nA6y8wQLSIbmHA3nqJaBklj85AAYp/gcDCNnoEKwFo86JYCE1J92R +HRQ7DoyAZpW1O0dTXL8Epk0sKsKDrCJOrIkDymsjfyBexADIeqOkioy/50wD2Mku +CVHKWO2duAiJN5t/FoRgpR1/Q11K6QdfqOG0HxwfIXLcPv7eSIso8kWorj+I01BP +Fn/atGEbIjdWaz/q2XHbu0Q3x6Et2gIsbLRVMhiYz1UG9uzGJ0TYCdBa2SFhs184 +52akMpD+XVdM0Sq9/Cx40Seo8hzERB96+GXnQ48q2OhlvcEXiFyD6M6wYCWbEV+6 +XQVMymbl22FPP/bD9ReQX2kjrkQlFAtmhr+0y8reMCbcxwLuQfA3173lSPo7jrbH +oLrGhkRpqd2bYCelqdy/XMmRFso0+7uytHfTFrUNfDWfmHVrygoVrNnarCbxMMI0 +I8Q+tKHMThWgf0rIOSh0+w38kOXFCEqEWF8YkAqCrMZIlJIed78rOCFgG4aHajZR +D8rpXdUOIr/WeUddK25Tu8IuNJb0kFf12IMgNh0nS+mzlqWiofS5kA0TeB8wBV6t +RotaeyDNSsMoowfN8cf1yHMTxli+K1Tasg003WVUoWgUc+EsJ5+KTNwaX5uGv0Cs +j6dg6/FVeVRL9UsyF+2kt7euX3mABuUtcVGx/ZKTq/MNGEh6/r3B5U37qt+FDRbw +ppKPc2AP+yBUWsQskyrxFgv4eSpcLEg+lgdz/zLyG4qW4lrFUoO790Cm/J6C7/WQ +Z+E8kcS8aINJkg1skahH31d59ZkbW9PVeJMFGzNb0Z2LowngNP/BMrJ0LT2CQyLs +UxbT16S/gwAyUpJnbhWYr3nDdlwtC0rVopVTPD7khPRppcsq1f8D70rdIxI4Ouuw +vbjNZ1EWRJ9f2Ywb++k/xgSXwJkGodUlrUr+3i8cv8mPx+fWvif9q7Y5Ex1wCRa8 +8FAj/o+hEbQlUlNBIDIwNDggRW5jIDxyc2EyMDQ4ZW5jQGV4YW1wbGUub3JnPokB +NAQTAQIAHgUCQuvabQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRDImeqTRBlV +WRzJCACbRhx2fYjPGKta69M5dS+kr5UD/CQmsR2t9cB9zyqhratjPnKW9q13+4AG +P3aByT14IH1c5Mha8rJkNYD2wxmC8jrrcPiJIYoRG+W1sUATY/t8wBbNWF+r9h11 +m0lEpsmNVff/jU7SpNN6JQ3P7MHd5V85LlDoXIH6QYCLd0PjKU+jNvjiBe5VX0m9 +a1nacE3xoWc1vbM0DnqEuID78Qgkcrmm0ESeg1h+tRfHxSAyYNc/gPzm8eH6l+hj +gOvUc4Gd6LpBQSF8TcFfT2TZwJh7WVWDvNIP6FWAW7rzmHnX3wwXkGq4REWeVtk5 +yBPp6mOtWDiwaqLJYsoHWU11C8zYnQPEBELr2roBCADrgiWXZMzkQOntZa/NS56+ +CczLFQRQPl/8iJAW1eql/wOJ1UiwGSjT189WCKzE7vtazCIstdCFmwOs4DE6cz4S +UX4HjzjYHZwmMiuSrIefwuZ7cysMBsMXypQFyMSbqwh102xGvmLz3Z++rydx7Fzl +1RC/ny2+FN5dzYPO2DNtNi4dR2tjHktsxBWXAKCmxagAIwyxGouuEqDhYdFtwrA9 +Qy+M5n6fmGa1Dx07WWnbIud4uCilv8LPVKx5aJamDYWM3v7kS8n51MfTzeK/xoRM +2rsgzFdLJqPdbgd2nsD37fngqZnlp7tDxSVSuMckZoSKtq1QsNemtaQSYq7xjPst +AAYp/gcDCNnoEKwFo86JYAsxoD+wQ0zBi5RBM5EphXTpM1qKxmigsKOvBSaMmr0y +VjHtGY3poyV3t6VboOGCsFcaKm0tIdDL7vrxxwyYESETpF29b7QrYcoaLKMG7fsy +t9SUI3UV2H9uUquHgqHtsqz0jYOgm9tYnpesgQ/kOAWI/tej1ZJXUIWEmZMH/W6d +ATNvZ3ivwApfC0qF5G3oPgBSoIuQ/8I+pN/kmuyNAnJWNgagFhA/2VFBvh5XgztV +NW7G//KpR1scsn140SO/wpGBM3Kr4m8ztl9w9U6a7NlQZ2ub3/pIUTpSzyLBxJZ/ +RfuZI7ROdgDMKmEgCYrN2kfp0LIxnYL6ZJu3FDcS4V098lyf5rHvB3PAEdL6Zyhd +qYp3Sx68r0F4vzk5iAIWf6pG2YdfoP2Z48Pmq9xW8qD9iwFcoz9oAzDEMENn6dfq +6MzfoaXEoYp8cR/o+aeEaGUtYBHiaxQcJYx35B9IhsXXA49yRORK8qdwhSHxB3NQ +H3pUWkfw368f/A207hQVs9yYXlEvMZikxl58gldCd3BAPqHm/XzgknRRNQZBPPKJ +BMZebZ22Dm0qDuIqW4GXLB4sLf0+UXydVINIUOlzg+S4jrwx7eZqb6UkRXTIWVo5 +psTsD14wzWBRdUQHZOZD33+M8ugmewvLY/0Uix+2RorkmB7/jqoZvx/MehDwmCZd +VH8sb2wpZ55sj7gCXxvrfieQD/VeH54OwjjbtK56iYq56RVD0h1az8xDY2GZXeT7 +J0c3BGpuoca5xOFWr1SylAr/miEPxOBfnfk8oZQJvZrjSBGjsTbALep2vDJk8ROD +sdQCJuU1RHDrwKHlbUL0NbGRO2juJGsatdWnuVKsFbaFW2pHHkezKuwOcaAJv7Xt +8LRF17czAJ1uaLKwV8Paqx6UIv+089GbWZi7HIkBHwQYAQIACQUCQuvaugIbDAAK +CRDImeqTRBlVWS7XCACDVstKM+SHD6V0bkfO6ampHzj4krKjN0lonN5+7b7WKpgT +QHRYvPY8lUiIrjXGISQqEG9M5Bi5ea1aoBZem0P3U/lKheg0lYtA7dM3BqsA2EfG +RaDD9M5TFCqhy2VFR6Pk0MP7h5bkb2VxLUUQa4oNa1fT3q7zS875NvImO/HZ5UzW +T5d2Z5iwY6I2AOKYKt4kZhzXgbt5j2O3biDDXSfWwwAojWqbqVygepn047KVr7Al +2ug9hkY7tHz7U71HbZasroFgNPmP/UnAxmps4RKM28MRVPTI4cKUIdE3gIKFu3ou +EqEItQ13P+50i3QkALpz8d08tJbceeYzf6I2P4q6 +=QFm5 +-----END PGP PRIVATE KEY BLOCK----- +'); + -- elg1024 / aes128 insert into encdata (id, data) values (1, ' @@ -535,6 +600,14 @@ from keytbl, encdata where keytbl.id=2 and encdata.id=1; select pgp_pub_decrypt(dearmor(data), dearmor(seckey)) from keytbl, encdata where keytbl.id=4 and encdata.id=1; +-- 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; + +-- 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; + -- password-protected secret key, no password select pgp_pub_decrypt(dearmor(data), dearmor(seckey)) from keytbl, encdata where keytbl.id=5 and encdata.id=1; diff --git a/contrib/pgrowlocks/pgrowlocks--1.0.sql b/contrib/pgrowlocks/pgrowlocks--1.0.sql index 0b60fdcd07..a909b7430d 100644 --- a/contrib/pgrowlocks/pgrowlocks--1.0.sql +++ b/contrib/pgrowlocks/pgrowlocks--1.0.sql @@ -1,5 +1,8 @@ /* contrib/pgrowlocks/pgrowlocks--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 + CREATE FUNCTION pgrowlocks(IN relname text, OUT locked_row TID, -- row TID OUT lock_type TEXT, -- lock type diff --git a/contrib/pgrowlocks/pgrowlocks--unpackaged--1.0.sql b/contrib/pgrowlocks/pgrowlocks--unpackaged--1.0.sql index 2d9d1eed41..b8c3faf1c7 100644 --- a/contrib/pgrowlocks/pgrowlocks--unpackaged--1.0.sql +++ b/contrib/pgrowlocks/pgrowlocks--unpackaged--1.0.sql @@ -1,3 +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 + ALTER EXTENSION pgrowlocks ADD function pgrowlocks(text); diff --git a/contrib/pgstattuple/pgstatindex.c b/contrib/pgstattuple/pgstatindex.c index fd2cc9246b..ceabd862a8 100644 --- a/contrib/pgstattuple/pgstatindex.c +++ b/contrib/pgstattuple/pgstatindex.c @@ -155,6 +155,8 @@ pgstatindex(PG_FUNCTION_ARGS) Page page; BTPageOpaque opaque; + CHECK_FOR_INTERRUPTS(); + /* Read and lock buffer */ buffer = ReadBuffer(rel, blkno); LockBuffer(buffer, BUFFER_LOCK_SHARE); @@ -234,9 +236,17 @@ pgstatindex(PG_FUNCTION_ARGS) values[j] = palloc(32); snprintf(values[j++], 32, INT64_FORMAT, indexStat.deleted_pages); values[j] = palloc(32); - snprintf(values[j++], 32, "%.2f", 100.0 - (double) indexStat.free_space / (double) indexStat.max_avail * 100.0); + if (indexStat.max_avail > 0) + snprintf(values[j++], 32, "%.2f", + 100.0 - (double) indexStat.free_space / (double) indexStat.max_avail * 100.0); + else + snprintf(values[j++], 32, "NaN"); values[j] = palloc(32); - snprintf(values[j++], 32, "%.2f", (double) indexStat.fragments / (double) indexStat.leaf_pages * 100.0); + if (indexStat.leaf_pages > 0) + snprintf(values[j++], 32, "%.2f", + (double) indexStat.fragments / (double) indexStat.leaf_pages * 100.0); + else + snprintf(values[j++], 32, "NaN"); tuple = BuildTupleFromCStrings(TupleDescGetAttInMetadata(tupleDesc), values); diff --git a/contrib/pgstattuple/pgstattuple--1.0.sql b/contrib/pgstattuple/pgstattuple--1.0.sql index 83445ec4ae..f7e03083ad 100644 --- a/contrib/pgstattuple/pgstattuple--1.0.sql +++ b/contrib/pgstattuple/pgstattuple--1.0.sql @@ -1,5 +1,8 @@ /* contrib/pgstattuple/pgstattuple--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 + CREATE FUNCTION pgstattuple(IN relname text, OUT table_len BIGINT, -- physical table length in bytes OUT tuple_count BIGINT, -- number of live tuples diff --git a/contrib/pgstattuple/pgstattuple--unpackaged--1.0.sql b/contrib/pgstattuple/pgstattuple--unpackaged--1.0.sql index 3cfb8db534..14b63cafcf 100644 --- a/contrib/pgstattuple/pgstattuple--unpackaged--1.0.sql +++ b/contrib/pgstattuple/pgstattuple--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION pgstattuple ADD function pgstattuple(text); ALTER EXTENSION pgstattuple ADD function pgstattuple(oid); ALTER EXTENSION pgstattuple ADD function pgstatindex(text); diff --git a/contrib/pgxc_clean/Makefile b/contrib/pgxc_clean/Makefile new file mode 100644 index 0000000000..249e073644 --- /dev/null +++ b/contrib/pgxc_clean/Makefile @@ -0,0 +1,34 @@ +#------------------------------------------------------------------------- +# +# Makefile for contrib/pgxc_clean +# +# Portions Copyright (c) 2010-2013, Postgres-XC Development Group +# +# $PostgreSQL$ +# +#------------------------------------------------------------------------- + +PGFILEDESC = "pgxc_clean - Abort prepared transaction for a Postgres-XC Coordinator" +PGAPPICON = win32 + +PROGRAM= pgxc_clean +OBJS= pgxc_clean.o txninfo.o + +#Include GTM objects +gtm_builddir = $(top_builddir)/src/gtm +EX_OBJS = $(gtm_builddir)/common/assert.o \ + $(gtm_builddir)/client/libgtmclient.a + +PG_CPPFLAGS = -DFRONTEND -DDLSUFFIX=\"$(DLSUFFIX)\" -I$(srcdir) -I$(libpq_srcdir) +PG_LIBS = $(libpq_pgport) $(PTHREAD_LIBS) + +ifdef USE_PGXS +PG_CONFIG = pg_config +PGXS := $(shell $(PG_CONFIG) --pgxs) +include $(PGXS) +else +subdir = contrib/pgxc_clean +top_builddir = ../.. +include $(top_builddir)/src/Makefile.global +include $(top_srcdir)/contrib/contrib-global.mk +endif diff --git a/src/pgxc/bin/pgxc_clean/pgxc_clean.c b/contrib/pgxc_clean/pgxc_clean.c similarity index 88% rename from src/pgxc/bin/pgxc_clean/pgxc_clean.c rename to contrib/pgxc_clean/pgxc_clean.c index 3edbc38c14..96012899d9 100644 --- a/src/pgxc/bin/pgxc_clean/pgxc_clean.c +++ b/contrib/pgxc_clean/pgxc_clean.c @@ -3,7 +3,7 @@ * * pgxc_clean utility * - * Recovers outstanding 2PC when after crashed nodes or entire cluster + * Recovers outstanding 2PC when after crashed nodes or entire cluster * is recovered. * * Depending upon how nodes/XC cluster fail, there could be outstanding @@ -23,15 +23,15 @@ * -a, --all cleanup all the database avilable * -d, --dbname=DBNAME database name to clean up. Multiple -d option * can be specified. - * -h, --host=HOSTNAME coordinator hostname to connect to. + * -h, --host=HOSTNAME Coordinator hostname to connect to. * -N, --no-clean only test. no cleanup actually. * -o, --output=FILENAME output file name. - * -p, --port=PORT coordinator port number. + * -p, --port=PORT Coordinator port number. * -q, --quiet do not print messages except for error, default. * -s, --status prints out 2PC status. * -U, --username=USERNAME database user name * -v, --verbose same as -s, plus prints result of each cleanup. - * -V, --version prints out the version, + * -V, --version prints out the version, * -w, --no-password never prompt for the password. * -W, --password prompt for the password, * -?, --help prints help message @@ -44,6 +44,7 @@ #include #include #include +#include #include "libpq-fe.h" #include "pg_config.h" #include "getopt_long.h" @@ -119,7 +120,7 @@ static void do_commit_abort(PGconn *conn, txn_info *txn, bool is_commit); static bool setMaintenanceMode(PGconn *conn); /* - * Connection to the coordinator + * Connection to the Coordinator */ PGconn *coord_conn; @@ -148,6 +149,15 @@ int main(int argc, char *argv[]) } parse_pgxc_clean_options(argc, argv); + /* + * Check missing arguments + */ + if (clean_all_databases == false && head_database_names == NULL) + { + fprintf(stderr, "%s: you must specify -a or -d option.\n", progname); + exit(1); + } + /* * Arrange my environment */ @@ -169,14 +179,15 @@ int main(int argc, char *argv[]) } if (coordinator_host == NULL) { - /* Default coordinator host */ + /* Default Coordinator host */ if ((coordinator_host = getenv("PGHOST")) == NULL) coordinator_host = "localhost"; } if (coordinator_port == -1) { - /* Default coordinator port */ + /* Default Coordinator port */ char *pgport; + if ((pgport = getenv("PGPORT")) == NULL) coordinator_port = DEF_PGPORT; /* pg_config.h */ else @@ -213,15 +224,18 @@ int main(int argc, char *argv[]) fprintf(outf, "no-clean: %s\n", no_clean_opt ? "on" : "off"); } + /* Tweak options --> should be improved in the next releases */ + if (status_opt) + verbose_opt = true; /* Connect to XC server */ if (verbose_opt) { - fprintf(outf, "%s: connecting to database \"%s\", host: \"%s\", port: %d\n", - progname, + fprintf(outf, "%s: connecting to database \"%s\", host: \"%s\", port: %d\n", + progname, clean_all_databases ? "postgres" : head_database_names->database_name, coordinator_host, coordinator_port); } - coord_conn = loginDatabase(coordinator_host, coordinator_port, username, password, + coord_conn = loginDatabase(coordinator_host, coordinator_port, username, password, clean_all_databases ? "postgres" : head_database_names->database_name, progname, "auto", password_prompt); if (verbose_opt) @@ -230,7 +244,7 @@ int main(int argc, char *argv[]) } /* - * Get my nodename (connected coordinator) + * Get my nodename (connected Coordinator) */ getMyNodename(coord_conn); if (verbose_opt) @@ -239,37 +253,41 @@ int main(int argc, char *argv[]) } /* - * Get availabel databases + * Get available databases * - * pgxc_clean assumes that all the database are avilable from the connecting coordinator. + * pgxc_clean assumes that all the database are available from the connecting Coordinator. * Some (expert) DBA can create a database local to subset of the node by EXECUTE DIRECT. * In this case, DBA may have to clean outstanding 2PC transactions manually or clean - * 2PC transactions by connecting pgxc_clean to different coordinators. + * 2PC transactions by connecting pgxc_clean to different Coordinators. * * If such node-subset database is found to be used widely, pgxc_clean may need * an extension to deal with this case. */ - getDatabaseList(coord_conn); + if (clean_all_databases) + getDatabaseList(coord_conn); if (verbose_opt) { database_info *cur_database; fprintf(outf, "%s: Databases visible from the node \"%s\": ", progname, my_nodename); - for (cur_database = head_database_info; cur_database; cur_database = cur_database->next) + if (head_database_info) { - fprintf(outf, " \"%s\"", cur_database->database_name); + for (cur_database = head_database_info; cur_database; cur_database = cur_database->next) + { + fprintf(outf, " \"%s\"", cur_database->database_name); + } + fputc('\n', outf); } - fputc('\n', outf); } /* - * Get list of coordinators + * Get list of Coordinators * * As in the case of database, we clean transactions in visible nodes from the - * connecting coordinator. DBA can also setup different node configuration - * at different coordinatos. In this case, DBA should be careful to choose - * appropriate coordinator to clean up transactions. + * connecting Coordinator. DBA can also setup different node configuration + * at different Coordinators. In this case, DBA should be careful to choose + * appropriate Coordinator to clean up transactions. */ getNodeList(coord_conn); if (verbose_opt) @@ -341,7 +359,7 @@ int main(int argc, char *argv[]) * Then disconnect from the database. * I need to login to specified databases which 2PC is issued for. Again, we assume * that all the prepare is issued against the same database in each node, which - * current coordinator does and there seems to be no way to violate this assumption. + * current Coordinator does and there seems to be no way to violate this assumption. */ if (verbose_opt) { @@ -394,8 +412,13 @@ getMyNodename(PGconn *conn) PGresult *res; res = PQexec(conn, stmt); + /* Error handling here */ - my_nodename = strdup(PQgetvalue(res, 0, 0)); + if (res) + my_nodename = strdup(PQgetvalue(res, 0, 0)); + else + my_nodename = strdup("unknown"); + PQclear(res); } @@ -493,7 +516,7 @@ do_commit_abort(PGconn *conn, txn_info *txn, bool is_commit) if (txn->txn_stat[ii] == TXN_STATUS_PREPARED && ii != my_nodeidx) { - sprintf(stmt, EXEC_DIRECT_STMT_FMT, + sprintf(stmt, EXEC_DIRECT_STMT_FMT, pgxc_clean_node_info[ii].node_name, is_commit ? "COMMIT" : "ROLLBACK", txn->xid); @@ -504,8 +527,8 @@ do_commit_abort(PGconn *conn, txn_info *txn, bool is_commit) if (res_status == PGRES_COMMAND_OK || res_status == PGRES_TUPLES_OK) fprintf(outf, "succeeded (%s), ", pgxc_clean_node_info[ii].node_name); else - fprintf(outf, "failed (%s: %s), ", - pgxc_clean_node_info[ii].node_name, + fprintf(outf, "failed (%s: %s), ", + pgxc_clean_node_info[ii].node_name, PQresultErrorMessage(res)); } else @@ -565,44 +588,35 @@ loginDatabase(char *host, int port, char *user, char *password, char *dbname, co bool new_pass = false; PGconn *coord_conn; char port_s[32]; +#define PARAMS_ARRAY_SIZE 8 + const char *keywords[PARAMS_ARRAY_SIZE]; + const char *values[PARAMS_ARRAY_SIZE]; sprintf(port_s, "%d", port); + keywords[0] = "host"; + values[0] = host; + keywords[1] = "port"; + values[1] = port_s; + keywords[2] = "user"; + values[2] = user; + keywords[3] = "password"; + keywords[4] = "dbname"; + values[4] = dbname; + keywords[5] = "fallback_application_name"; + values[5] = progname; + keywords[6] = "client_encoding"; + values[6] = encoding; + keywords[7] = NULL; + values[7] = NULL; + /* Loop until we have a password if requested by backend */ do { -#define PARAMS_ARRAY_SIZE 8 - const char **keywords = malloc(PARAMS_ARRAY_SIZE * sizeof(*keywords)); - const char **values = malloc(PARAMS_ARRAY_SIZE * sizeof(*values)); - - if (keywords == NULL || values == NULL) - { - fprintf(stderr, "No more memory.\n"); - exit(1); - } - - - keywords[0] = "host"; - values[0] = host; - keywords[1] = "port"; - values[1] = port_s; - keywords[2] = "user"; - values[2] = user; - keywords[3] = "password"; values[3] = password; - keywords[4] = "dbname"; - values[4] = dbname; - keywords[5] = "fallback_application_name"; - values[5] = progname; - keywords[6] = "client_encoding"; - values[6] = encoding; - keywords[7] = NULL; - values[7] = NULL; new_pass = false; coord_conn = PQconnectdbParams(keywords, values, true); - free(keywords); - free(values); if (PQstatus(coord_conn) == CONNECTION_BAD && PQconnectionNeedsPassword(coord_conn) && @@ -614,7 +628,7 @@ loginDatabase(char *host, int port, char *user, char *password, char *dbname, co new_pass = true; } } while (new_pass); - + return(coord_conn); } @@ -631,7 +645,7 @@ getTxnStatus(PGconn *conn, GlobalTransactionId gxid, int node_idx) node_name = pgxc_clean_node_info[node_idx].node_name; sprintf(stmt, STMT_FORM, node_name, gxid); - + res = PQexec(conn, stmt); if (res == NULL || PQresultStatus(res) != PGRES_TUPLES_OK) { @@ -700,13 +714,13 @@ getPreparedTxnListOfNode(PGconn *conn, int idx) = "EXECUTE DIRECT ON %s 'SELECT TRANSACTION, GID, OWNER, DATABASE FROM PG_PREPARED_XACTS;'"; char stmt[MAX_STMT_LEN]; - sprintf(stmt, STMT_GET_PREP_TXN_ON_NODE, + sprintf(stmt, STMT_GET_PREP_TXN_ON_NODE, pgxc_clean_node_info[idx].node_name); - + res = PQexec(conn, stmt); if (res == NULL || (pq_status = PQresultStatus(res)) != PGRES_TUPLES_OK) { - fprintf(stderr, "Could not obtain prepared transaction list for node %s.(%s)\n", + fprintf(stderr, "Could not obtain prepared transaction list for node %s.(%s)\n", pgxc_clean_node_info[idx].node_name, res ? PQresultErrorMessage(res) : ""); PQclear(res); exit (1); @@ -724,11 +738,14 @@ getPreparedTxnListOfNode(PGconn *conn, int idx) owner = strdup(PQgetvalue(res, ii, 2)); database_name = strdup(PQgetvalue(res, ii, 3)); - add_txn_info(database_name, pgxc_clean_node_info[idx].node_name, gxid, xid, owner, + add_txn_info(database_name, pgxc_clean_node_info[idx].node_name, gxid, xid, owner, TXN_STATUS_PREPARED); - free(xid); - free(owner); - free(database_name); + if(xid) + free(xid); + if (owner) + free(owner); + if (database_name) + free(database_name); } PQclear(res); } @@ -750,6 +767,7 @@ getDatabaseList(PGconn *conn) int database_count; int ii; PGresult *res; + char *dbname; /* SQL Statement */ static const char *STMT_GET_DATABASE_LIST = "SELECT DATNAME FROM PG_DATABASE;"; @@ -766,7 +784,13 @@ getDatabaseList(PGconn *conn) } database_count = PQntuples(res); for(ii = 0; ii < database_count; ii++) - add_database_info(PQgetvalue(res, ii, 0)); + { + dbname = PQgetvalue(res, ii, 0); + if (strcmp(dbname, "template0") == 0) + /* Skip template0 database */ + continue; + add_database_info(dbname); + } PQclear(res); } @@ -787,7 +811,7 @@ getNodeList(PGconn *conn) exit (1); } pgxc_clean_node_count = PQntuples(res); - pgxc_clean_node_info = (node_info *)malloc(sizeof(node_info) * pgxc_clean_node_count); + pgxc_clean_node_info = (node_info *)calloc(pgxc_clean_node_count, sizeof(node_info)); if (pgxc_clean_node_info == NULL) { fprintf(stderr, "No more memory.\n"); @@ -807,7 +831,7 @@ getNodeList(PGconn *conn) switch (node_type_c[0]) { case 'C': - /* pgxc_clean has to connect to the coordinator */ + /* pgxc_clean has to connect to the Coordinator */ node_type = NODE_TYPE_COORD; if (strcmp(node_name, my_nodename) == 0) my_nodeidx = ii; @@ -822,20 +846,24 @@ getNodeList(PGconn *conn) port = atoi(PQgetvalue(res, ii, 2)); host = strdup(PQgetvalue(res, ii, 3)); set_node_info(node_name, port, host, node_type, ii); - free(node_name); - free(node_type_c); - free(host); + + if (node_name) + free(node_name); + if (node_type_c) + free(node_type_c); + if (host) + free(host); } - /* Check if local coordinator has been found */ + /* Check if local Coordinator has been found */ if (my_nodeidx == -1) { - fprintf(stderr, "Failed to identify the coordintor which %s is connecting to. ", progname); + fprintf(stderr, "Failed to identify the coordinator which %s is connecting to. ", progname); fprintf(stderr, "Connecting to a wrong node.\n"); exit(1); } } - - + + static void showVersion(void) @@ -959,11 +987,18 @@ parse_pgxc_clean_options(int argc, char *argv[]) break; } } - + while (argc - optind >= 1) { if (head_database_names == NULL) + { + if (strcmp(argv[optind], "template0") == 0) + { + fprintf(stderr, "%s: You should not clean template0 database.\n", progname); + exit(1); + } add_to_database_list(argv[optind]); + } if (username == NULL) username = argv[optind]; else @@ -971,6 +1006,12 @@ parse_pgxc_clean_options(int argc, char *argv[]) progname, argv[optind]); optind++; } + + if (!clean_all_databases && head_database_names == NULL) + { + fprintf(stderr, "Please specify at least one database or -a for all\n"); + exit(1); + } } static bool setMaintenanceMode(PGconn *conn) @@ -1012,12 +1053,12 @@ static void usage(void) user = getenv("PGUSER"); if (!user) user = GetUserName(); - + printf("pgxc_clean cleans up outstanding 2PCs after failed node is recovered.\n" "Usage:\n" "pgxc_clean [OPTION ...] [DBNAME [USERNAME]]\n\n" "Options:\n"); - + env = getenv("PGDATABASE"); if (!env) env = user; diff --git a/src/pgxc/bin/pgxc_clean/pgxc_clean.h b/contrib/pgxc_clean/pgxc_clean.h similarity index 100% rename from src/pgxc/bin/pgxc_clean/pgxc_clean.h rename to contrib/pgxc_clean/pgxc_clean.h diff --git a/src/pgxc/bin/pgxc_clean/pgxc_clean_test.sh b/contrib/pgxc_clean/pgxc_clean_test.sh similarity index 99% rename from src/pgxc/bin/pgxc_clean/pgxc_clean_test.sh rename to contrib/pgxc_clean/pgxc_clean_test.sh index 39c9b98def..87bc928173 100644 --- a/src/pgxc/bin/pgxc_clean/pgxc_clean_test.sh +++ b/contrib/pgxc_clean/pgxc_clean_test.sh @@ -82,4 +82,4 @@ psql -e test3 <txn_stat = (TXN_STATUS *)malloc(sizeof(TXN_STATUS) * pgxc_clean_node_count); if (txn->txn_stat == NULL) return(NULL); - memset(txn->txn_stat, sizeof(TXN_STATUS) * pgxc_clean_node_count, 0); + memset(txn->txn_stat, 0, sizeof(TXN_STATUS) * pgxc_clean_node_count); return txn; } @@ -171,7 +171,7 @@ txn_info *init_txn_info(char *database_name, TransactionId gxid) database->head_txn_info = database->last_txn_info = (txn_info *)malloc(sizeof(txn_info)); if (database->head_txn_info == NULL) return NULL; - memset(database->head_txn_info, sizeof(txn_info), 0); + memset(database->head_txn_info, 0, sizeof(txn_info)); return database->head_txn_info; } for(cur_txn_info = database->head_txn_info; cur_txn_info; cur_txn_info = cur_txn_info->next) @@ -182,10 +182,10 @@ txn_info *init_txn_info(char *database_name, TransactionId gxid) cur_txn_info->next = database->last_txn_info = (txn_info *)malloc(sizeof(txn_info)); if (cur_txn_info->next == NULL) return(NULL); - memset(cur_txn_info->next, sizeof(txn_info), 0); + memset(cur_txn_info->next, 0, sizeof(txn_info)); if ((cur_txn_info->next->txn_stat = (TXN_STATUS *)malloc(sizeof(TXN_STATUS) * pgxc_clean_node_count)) == NULL) return(NULL); - memset(cur_txn_info->next->txn_stat, sizeof(TXN_STATUS) * pgxc_clean_node_count, 0); + memset(cur_txn_info->next->txn_stat, 0, sizeof(TXN_STATUS) * pgxc_clean_node_count); return cur_txn_info->next; } @@ -249,7 +249,7 @@ TXN_STATUS check_txn_global_status(txn_info *txn) return TXN_STATUS_INITIAL; for (ii = 0; ii < pgxc_clean_node_count; ii++) { - if (txn->txn_stat[ii] == TXN_STATUS_INITIAL) + if (txn->txn_stat[ii] == TXN_STATUS_INITIAL || txn->txn_stat[ii] == TXN_STATUS_UNKNOWN) continue; else if (txn->txn_stat[ii] == TXN_STATUS_PREPARED) check_flag |= TXN_PREPARED; @@ -282,7 +282,7 @@ TXN_STATUS check_txn_global_status(txn_info *txn) /* * Returns 1 if implicit, 0 otherwise. - * + * * Should this be replaced with regexp calls? */ static int check_xid_is_implicit(char *xid) diff --git a/src/pgxc/bin/pgxc_clean/txninfo.h b/contrib/pgxc_clean/txninfo.h similarity index 96% rename from src/pgxc/bin/pgxc_clean/txninfo.h rename to contrib/pgxc_clean/txninfo.h index 71851b4936..ff28adaa36 100644 --- a/src/pgxc/bin/pgxc_clean/txninfo.h +++ b/contrib/pgxc_clean/txninfo.h @@ -3,7 +3,7 @@ * txninfo.h * Prepared transaction info * - * Portions Copyright (c) 2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $Postgres-XC$ * diff --git a/src/pgxc/bin/pgxc_ddl/README b/contrib/pgxc_ddl/README similarity index 100% rename from src/pgxc/bin/pgxc_ddl/README rename to contrib/pgxc_ddl/README diff --git a/src/pgxc/bin/pgxc_ddl/pgxc.conf.sample b/contrib/pgxc_ddl/pgxc.conf.sample similarity index 100% rename from src/pgxc/bin/pgxc_ddl/pgxc.conf.sample rename to contrib/pgxc_ddl/pgxc.conf.sample diff --git a/src/pgxc/bin/pgxc_ddl/pgxc_ddl b/contrib/pgxc_ddl/pgxc_ddl similarity index 99% rename from src/pgxc/bin/pgxc_ddl/pgxc_ddl rename to contrib/pgxc_ddl/pgxc_ddl index 658a3b3b5f..afb431529b 100644 --- a/src/pgxc/bin/pgxc_ddl/pgxc_ddl +++ b/contrib/pgxc_ddl/pgxc_ddl @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation +# Copyright (c) 2010-2013, Postgres-XC Development Group #Scripts to launch DDL in PGXC cluster using a cold_backup method #Be sure to have set a correct ssl environment in all the servers of the cluster diff --git a/contrib/seg/seg--1.0.sql b/contrib/seg/seg--1.0.sql index 563411da6a..3230b94f40 100644 --- a/contrib/seg/seg--1.0.sql +++ b/contrib/seg/seg--1.0.sql @@ -1,5 +1,8 @@ /* contrib/seg/seg--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 + -- Create the user-defined type for 1-D floating point intervals (seg) CREATE FUNCTION seg_in(cstring) diff --git a/contrib/seg/seg--unpackaged--1.0.sql b/contrib/seg/seg--unpackaged--1.0.sql index 9fefbfc9aa..ebd6b3bc5b 100644 --- a/contrib/seg/seg--unpackaged--1.0.sql +++ b/contrib/seg/seg--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION seg ADD type seg; ALTER EXTENSION seg ADD function seg_in(cstring); ALTER EXTENSION seg ADD function seg_out(seg); diff --git a/contrib/seg/seg.c b/contrib/seg/seg.c index 0a787ff946..41a1807740 100644 --- a/contrib/seg/seg.c +++ b/contrib/seg/seg.c @@ -24,8 +24,8 @@ PG_MODULE_MAGIC; -extern int seg_yyparse(); -extern void seg_yyerror(const char *message); +extern int seg_yyparse(SEG *result); +extern void seg_yyerror(SEG *result, const char *message); extern void seg_scanner_init(const char *str); extern void seg_scanner_finish(void); @@ -127,7 +127,7 @@ seg_in(PG_FUNCTION_ARGS) seg_scanner_init(str); if (seg_yyparse(result) != 0) - seg_yyerror("bogus input"); + seg_yyerror(result, "bogus input"); seg_scanner_finish(); diff --git a/contrib/seg/segparse.y b/contrib/seg/segparse.y index 1f5f0affe8..538d06e533 100644 --- a/contrib/seg/segparse.y +++ b/contrib/seg/segparse.y @@ -1,5 +1,5 @@ %{ -#define YYPARSE_PARAM result /* need this to pass a pointer (void *) to yyparse */ +/* contrib/seg/segparse.y */ #include "postgres.h" @@ -24,8 +24,8 @@ extern int significant_digits(char *str); /* defined in seg.c */ - void seg_yyerror(const char *message); - int seg_yyparse(void *result); + extern int seg_yyparse(SEG *result); + extern void seg_yyerror(SEG *result, const char *message); static float seg_atof(char *value); @@ -40,6 +40,7 @@ %} /* BISON Declarations */ +%parse-param {SEG *result} %expect 0 %name-prefix="seg_yy" @@ -65,55 +66,55 @@ range: boundary PLUMIN deviation { - ((SEG *)result)->lower = $1.val - $3.val; - ((SEG *)result)->upper = $1.val + $3.val; - sprintf(strbuf, "%g", ((SEG *)result)->lower); - ((SEG *)result)->l_sigd = Max(Min(6, significant_digits(strbuf)), Max($1.sigd, $3.sigd)); - sprintf(strbuf, "%g", ((SEG *)result)->upper); - ((SEG *)result)->u_sigd = Max(Min(6, significant_digits(strbuf)), Max($1.sigd, $3.sigd)); - ((SEG *)result)->l_ext = '\0'; - ((SEG *)result)->u_ext = '\0'; + result->lower = $1.val - $3.val; + result->upper = $1.val + $3.val; + sprintf(strbuf, "%g", result->lower); + result->l_sigd = Max(Min(6, significant_digits(strbuf)), Max($1.sigd, $3.sigd)); + sprintf(strbuf, "%g", result->upper); + result->u_sigd = Max(Min(6, significant_digits(strbuf)), Max($1.sigd, $3.sigd)); + result->l_ext = '\0'; + result->u_ext = '\0'; } | boundary RANGE boundary { - ((SEG *)result)->lower = $1.val; - ((SEG *)result)->upper = $3.val; - if ( ((SEG *)result)->lower > ((SEG *)result)->upper ) { + result->lower = $1.val; + result->upper = $3.val; + if ( result->lower > result->upper ) { ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("swapped boundaries: %g is greater than %g", - ((SEG *)result)->lower, ((SEG *)result)->upper))); + result->lower, result->upper))); YYERROR; } - ((SEG *)result)->l_sigd = $1.sigd; - ((SEG *)result)->u_sigd = $3.sigd; - ((SEG *)result)->l_ext = ( $1.ext ? $1.ext : '\0' ); - ((SEG *)result)->u_ext = ( $3.ext ? $3.ext : '\0' ); + result->l_sigd = $1.sigd; + result->u_sigd = $3.sigd; + result->l_ext = ( $1.ext ? $1.ext : '\0' ); + result->u_ext = ( $3.ext ? $3.ext : '\0' ); } | boundary RANGE { - ((SEG *)result)->lower = $1.val; - ((SEG *)result)->upper = HUGE_VAL; - ((SEG *)result)->l_sigd = $1.sigd; - ((SEG *)result)->u_sigd = 0; - ((SEG *)result)->l_ext = ( $1.ext ? $1.ext : '\0' ); - ((SEG *)result)->u_ext = '-'; + result->lower = $1.val; + result->upper = HUGE_VAL; + result->l_sigd = $1.sigd; + result->u_sigd = 0; + result->l_ext = ( $1.ext ? $1.ext : '\0' ); + result->u_ext = '-'; } | RANGE boundary { - ((SEG *)result)->lower = -HUGE_VAL; - ((SEG *)result)->upper = $2.val; - ((SEG *)result)->l_sigd = 0; - ((SEG *)result)->u_sigd = $2.sigd; - ((SEG *)result)->l_ext = '-'; - ((SEG *)result)->u_ext = ( $2.ext ? $2.ext : '\0' ); + result->lower = -HUGE_VAL; + result->upper = $2.val; + result->l_sigd = 0; + result->u_sigd = $2.sigd; + result->l_ext = '-'; + result->u_ext = ( $2.ext ? $2.ext : '\0' ); } | boundary { - ((SEG *)result)->lower = ((SEG *)result)->upper = $1.val; - ((SEG *)result)->l_sigd = ((SEG *)result)->u_sigd = $1.sigd; - ((SEG *)result)->l_ext = ((SEG *)result)->u_ext = ( $1.ext ? $1.ext : '\0' ); + result->lower = result->upper = $1.val; + result->l_sigd = result->u_sigd = $1.sigd; + result->l_ext = result->u_ext = ( $1.ext ? $1.ext : '\0' ); } ; diff --git a/contrib/seg/segscan.l b/contrib/seg/segscan.l index c2b5ca8789..cadac5e9f2 100644 --- a/contrib/seg/segscan.l +++ b/contrib/seg/segscan.l @@ -53,7 +53,7 @@ float ({integer}|{real})([eE]{integer})? %% void -yyerror(const char *message) +yyerror(SEG *result, const char *message) { if (*yytext == YY_END_OF_BUFFER_CHAR) { diff --git a/contrib/sepgsql/Makefile b/contrib/sepgsql/Makefile index bc995dd29a..c3ed2f5c1e 100644 --- a/contrib/sepgsql/Makefile +++ b/contrib/sepgsql/Makefile @@ -4,8 +4,10 @@ MODULE_big = sepgsql OBJS = hooks.o selinux.o label.o dml.o \ schema.o relation.o proc.o DATA_built = sepgsql.sql -REGRESS = label dml misc -EXTRA_CLEAN = -r tmp *.pp sepgsql-regtest.if sepgsql-regtest.fc + +# Note: because we don't tell the Makefile there are any regression tests, +# we have to clean those result files explicitly +EXTRA_CLEAN = -r $(pg_regress_clean_files) tmp/ *.pp sepgsql-regtest.if sepgsql-regtest.fc ifdef USE_PGXS PG_CONFIG = pg_config @@ -18,5 +20,4 @@ include $(top_builddir)/src/Makefile.global include $(top_srcdir)/contrib/contrib-global.mk endif -SHLIB_LINK += $(filter -lselinux, $(LIBS)) -REGRESS_OPTS += --launcher $(top_builddir)/contrib/sepgsql/launcher +SHLIB_LINK += -lselinux diff --git a/contrib/sepgsql/expected/label.out b/contrib/sepgsql/expected/label.out index bac169f37b..279cfab091 100644 --- a/contrib/sepgsql/expected/label.out +++ b/contrib/sepgsql/expected/label.out @@ -65,7 +65,7 @@ SECURITY LABEL ON TABLE t2 ERROR: SELinux: invalid security label: "invalid security context" SECURITY LABEL ON COLUMN t2 IS 'system_u:object_r:sepgsql_ro_table_t:s0'; -- be failed -ERROR: improper relation name (too many dotted names): +ERROR: column name must be qualified SECURITY LABEL ON COLUMN t2.b IS 'system_u:object_r:sepgsql_ro_table_t:s0'; -- ok -- diff --git a/contrib/sepgsql/sepgsql-regtest.te b/contrib/sepgsql/sepgsql-regtest.te index 3b1def75a5..a8fe2476a4 100644 --- a/contrib/sepgsql/sepgsql-regtest.te +++ b/contrib/sepgsql/sepgsql-regtest.te @@ -1,4 +1,4 @@ -policy_module(sepgsql-regtest, 1.02) +policy_module(sepgsql-regtest, 1.03) gen_require(` all_userspace_class_perms @@ -24,6 +24,7 @@ postgresql_procedure_object(sepgsql_regtest_trusted_proc_exec_t) role sepgsql_regtest_dba_r; userdom_base_user_template(sepgsql_regtest_dba) userdom_manage_home_role(sepgsql_regtest_dba_r, sepgsql_regtest_dba_t) +userdom_exec_user_home_content_files(sepgsql_regtest_dba_t) userdom_write_user_tmp_sockets(sepgsql_regtest_user_t) optional_policy(` postgresql_admin(sepgsql_regtest_dba_t, sepgsql_regtest_dba_r) @@ -40,6 +41,7 @@ optional_policy(` role sepgsql_regtest_user_r; userdom_base_user_template(sepgsql_regtest_user) userdom_manage_home_role(sepgsql_regtest_user_r, sepgsql_regtest_user_t) +userdom_exec_user_home_content_files(sepgsql_regtest_user_t) userdom_write_user_tmp_sockets(sepgsql_regtest_user_t) optional_policy(` postgresql_role(sepgsql_regtest_user_r, sepgsql_regtest_user_t) diff --git a/contrib/sepgsql/test_sepgsql b/contrib/sepgsql/test_sepgsql new file mode 100755 index 0000000000..9b7262ae82 --- /dev/null +++ b/contrib/sepgsql/test_sepgsql @@ -0,0 +1,264 @@ +#!/bin/sh +# +# Run the sepgsql regression tests, after making a lot of environmental checks +# to try to ensure that the SELinux environment is set up appropriately and +# the database is configured correctly. +# +# Note that this must be run against an installed Postgres database. +# There's no equivalent of "make check", and that wouldn't be terribly useful +# since much of the value is in checking that you installed sepgsql into +# your database correctly. +# +# This must be run in the contrib/sepgsql directory of a Postgres build tree. +# + +PG_BINDIR=`pg_config --bindir` + +echo +echo "============== checking selinux environment ==============" + +# matchpathcon must be present to assess whether the installation environment +# is OK. +echo -n "checking for matchpathcon ... " +if ! matchpathcon -n . >/dev/null 2>&1; then + echo "not found" + echo "" + echo "The matchpathcon command must be available." + echo "Please install it or update your PATH to include it" + echo "(it is typically in '/usr/sbin', which might not be in your PATH)." + echo "matchpathcon is typically included in the libselinux-utils package." + exit 1 +fi +echo "ok" + +# runcon must be present to launch psql using the correct environment +echo -n "checking for runcon ... " +if ! runcon --help >/dev/null 2>&1; then + echo "not found" + echo "" + echo "The runcon command must be available." + echo "runcon is typically included in the coreutils package." + echo "" + exit 1 +fi +echo "ok" + +# check sestatus too, since that lives in yet another package +echo -n "checking for sestatus ... " +if ! sestatus >/dev/null 2>&1; then + echo "not found" + echo "" + echo "The sestatus command must be available." + echo "sestatus is typically included in the policycoreutils package." + echo "" + exit 1 +fi +echo "ok" + +# check that the user is running in the unconfined_t domain +echo -n "checking current user domain ... " +DOMAIN=`id -Z 2>/dev/null | sed 's/:/ /g' | awk '{print $3}'` +echo ${DOMAIN:-failed} +if [ "${DOMAIN}" != unconfined_t ]; then + echo "" + echo "The regression tests must be launched from the unconfined_t domain." + echo "" + echo "The unconfined_t domain is typically the default domain for user" + echo "shell processes. If the default has been changed on your system," + echo "you can revert the changes like this:" + echo "" + echo " \$ sudo semanage login -d `whoami`" + echo "" + echo "Or, you can add a setting to log in using the unconfined_t domain:" + echo "" + echo " \$ sudo semanage login -a -s unconfined_u -r s0-s0:c0.c255 `whoami`" + echo "" + exit 1 +fi + +# SELinux must be configured in enforcing mode +echo -n "checking selinux operating mode ... " +CURRENT_MODE=`LANG=C sestatus | grep '^Current mode:' | awk '{print $3}'` +echo ${CURRENT_MODE:-failed} +if [ "${CURRENT_MODE}" = enforcing ]; then + : OK +elif [ "${CURRENT_MODE}" = permissive -o "${CURRENT_MODE}" = disabled ]; then + echo "" + echo "Before running the regression tests, SELinux must be enabled and" + echo "must be running in enforcing mode." + echo "" + echo "If SELinux is currently running in permissive mode, you can" + echo "switch to enforcing mode using the 'setenforce' command." + echo + echo " \$ sudo setenforce 1" + echo "" + echo "The system default setting is configured in /etc/selinux/config," + echo "or using a kernel boot parameter." + echo "" + exit 1 +else + echo "" + echo "Unable to determine the current selinux operating mode. Please" + echo "verify that the sestatus command is installed and in your PATH." + echo "" + exit 1 +fi + +# 'sepgsql-regtest' policy module must be loaded +echo -n "checking for sepgsql-regtest policy ... " +SELINUX_MNT=`LANG=C sestatus | grep '^SELinuxfs mount:' | awk '{print $3}'` +if [ "$SELINUX_MNT" = "" ]; then + echo "failed" + echo "" + echo "Unable to find SELinuxfs mount point." + echo "" + echo "The sestatus command should report the location where SELinuxfs" + echo "is mounted, but did not do so." + echo "" + exit 1 +fi +if [ ! -e "${SELINUX_MNT}/booleans/sepgsql_regression_test_mode" ]; then + echo "failed" + echo "" + echo "The 'sepgsql-regtest' policy module appears not to be installed." + echo "Without this policy installed, the regression tests will fail." + echo "You can install this module using the following commands:" + echo "" + echo " \$ make -f /usr/share/selinux/devel/Makefile" + echo " \$ sudo semodule -u sepgsql-regtest.pp" + echo "" + echo "To confirm that the policy package is installed, use this command:" + echo "" + echo " \$ sudo semodule -l | grep sepgsql" + echo "" + exit 1 +fi +echo "ok" + +# Verify that sepgsql_regression_test_mode is active. +echo -n "checking whether policy is enabled ... " +POLICY_STATUS=`getsebool sepgsql_regression_test_mode | awk '{print $3}'` +echo ${POLICY_STATUS:-failed} +if [ "${POLICY_STATUS}" != on ]; then + echo "" + echo "The SELinux boolean 'sepgsql_regression_test_mode' must be" + echo "turned on in order to enable the rules necessary to run the" + echo "regression tests." + echo "" + if [ "${POLICY_STATUS}" = "" ]; then + echo "We attempted to determine the state of this Boolean using" + echo "'getsebool', but that command did not produce the expected" + echo "output. Please verify that getsebool is available and in" + echo "your PATH." + else + echo "You can turn on this variable using the following commands:" + echo "" + echo " \$ sudo setsebool sepgsql_regression_test_mode on" + echo "" + echo "For security reasons, it is suggested that you turn off this" + echo "variable when regression testing is complete and the associated" + echo "rules are no longer needed." + fi + echo "" + exit 1 +fi + +# 'psql' command must be executable from test domain +echo -n "checking whether we can run psql ... " +CMD_PSQL="${PG_BINDIR}/psql" +if [ ! -e "${CMD_PSQL}" ]; then + echo "not found" + echo + echo "${CMD_PSQL} was not found." + echo "Check your PostgreSQL installation." + echo + exit 1 +fi +runcon -t sepgsql_regtest_user_t "${CMD_PSQL}" --help >& /dev/null +if [ $? -ne 0 ]; then + echo "failed" + echo + echo "${CMD_PSQL} must be executable from the" + echo "sepgsql_regtest_user_t domain. That domain has restricted privileges" + echo "compared to unconfined_t, so the problem may be the psql file's" + echo "SELinux label. Try" + echo + PSQL_T=`matchpathcon -n "${CMD_PSQL}" | sed 's/:/ /g' | awk '{print $3}'` + if [ "${PSQL_T}" = "user_home_t" ]; then + # Installation appears to be in /home directory + echo " \$ sudo restorecon -R ${PG_BINDIR}" + echo + echo "Or, using chcon" + echo + echo " \$ sudo chcon -t user_home_t ${CMD_PSQL}" + else + echo " \$ sudo restorecon -R ${PG_BINDIR}" + echo + echo "Or, using chcon" + echo + echo " \$ sudo chcon -t bin_t ${CMD_PSQL}" + fi + echo + exit 1 +fi +echo "ok" + +# loadable module must be installed and not configured to permissive mode +echo -n "checking sepgsql installation ... " +VAL="`${CMD_PSQL} -t -c 'SHOW sepgsql.permissive' template1 2>/dev/null`" +RETVAL="$?" +if [ $RETVAL -eq 2 ]; then + echo "failed" + echo "" + echo "Could not connect to the database server." + echo "Please check your PostgreSQL installation." + echo "" + exit 1 +elif [ $RETVAL -ne 0 ]; then + echo "failed" + echo "" + echo "The sepgsql module does not appear to be loaded. Please verify" + echo "that the 'shared_preload_libraries' setting in postgresql.conf" + echo "includes 'sepgsql', and then restart the server." + echo "" + echo "See Installation section of the contrib/sepgsql documentation." + echo "" + exit 1 +elif ! echo "$VAL" | grep -q 'off$'; then + echo "failed" + echo "" + echo "The parameter 'sepgsql.permissive' is set to 'on'. It must be" + echo "turned off before running the regression tests." + echo "" + exit 1 +fi +echo "ok" + +# template1 database must be labeled +# NOTE: this test is wrong; we really ought to be checking template0. +# But we can't connect to that without extra pushups, and it's not worth it. +echo -n "checking for labels in template1 ... " +NUM=`${CMD_PSQL} -At -c 'SELECT count(*) FROM pg_catalog.pg_seclabel' template1 2>/dev/null` +if [ -z "${NUM}" ]; then + echo "failed" + echo "" + echo "In order to test sepgsql, initial labels must be assigned within" + echo "the 'template1' database. These labels will be copied into the" + echo "regression test database." + echo "" + echo "See Installation section of the contrib/sepgsql documentation." + echo "" + exit 1 +fi +echo "found ${NUM}" + +# +# checking complete - let's run the tests +# + +echo +echo "============== running sepgsql regression tests ==============" + +make REGRESS="label dml misc" REGRESS_OPTS="--launcher ./launcher" installcheck + +# exit with the exit code provided by "make" diff --git a/contrib/spi/autoinc--1.0.sql b/contrib/spi/autoinc--1.0.sql index 9c9df9ce0b..22721e003d 100644 --- a/contrib/spi/autoinc--1.0.sql +++ b/contrib/spi/autoinc--1.0.sql @@ -1,5 +1,8 @@ /* contrib/spi/autoinc--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 + CREATE FUNCTION autoinc() RETURNS trigger AS 'MODULE_PATHNAME' diff --git a/contrib/spi/autoinc--unpackaged--1.0.sql b/contrib/spi/autoinc--unpackaged--1.0.sql index 232e9170fc..cfe2065d3d 100644 --- a/contrib/spi/autoinc--unpackaged--1.0.sql +++ b/contrib/spi/autoinc--unpackaged--1.0.sql @@ -1,3 +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 + ALTER EXTENSION autoinc ADD function autoinc(); diff --git a/contrib/spi/insert_username--1.0.sql b/contrib/spi/insert_username--1.0.sql index bd854587e0..0deb0bf3f8 100644 --- a/contrib/spi/insert_username--1.0.sql +++ b/contrib/spi/insert_username--1.0.sql @@ -1,5 +1,8 @@ /* contrib/spi/insert_username--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 + CREATE FUNCTION insert_username() RETURNS trigger AS 'MODULE_PATHNAME' diff --git a/contrib/spi/insert_username--unpackaged--1.0.sql b/contrib/spi/insert_username--unpackaged--1.0.sql index f53cb690f1..91a5d1f309 100644 --- a/contrib/spi/insert_username--unpackaged--1.0.sql +++ b/contrib/spi/insert_username--unpackaged--1.0.sql @@ -1,3 +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 + ALTER EXTENSION insert_username ADD function insert_username(); diff --git a/contrib/spi/moddatetime--1.0.sql b/contrib/spi/moddatetime--1.0.sql index 97cc63289f..2ee61b814f 100644 --- a/contrib/spi/moddatetime--1.0.sql +++ b/contrib/spi/moddatetime--1.0.sql @@ -1,5 +1,8 @@ /* contrib/spi/moddatetime--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 + CREATE FUNCTION moddatetime() RETURNS trigger AS 'MODULE_PATHNAME' diff --git a/contrib/spi/moddatetime--unpackaged--1.0.sql b/contrib/spi/moddatetime--unpackaged--1.0.sql index f3a0a96837..caa49ce0dc 100644 --- a/contrib/spi/moddatetime--unpackaged--1.0.sql +++ b/contrib/spi/moddatetime--unpackaged--1.0.sql @@ -1,3 +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 + ALTER EXTENSION moddatetime ADD function moddatetime(); diff --git a/contrib/spi/refint--1.0.sql b/contrib/spi/refint--1.0.sql index 9e5d931df5..faf797c215 100644 --- a/contrib/spi/refint--1.0.sql +++ b/contrib/spi/refint--1.0.sql @@ -1,5 +1,8 @@ /* contrib/spi/refint--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 + CREATE FUNCTION check_primary_key() RETURNS trigger AS 'MODULE_PATHNAME' diff --git a/contrib/spi/refint--unpackaged--1.0.sql b/contrib/spi/refint--unpackaged--1.0.sql index 54fece055a..cd9c9b0c36 100644 --- a/contrib/spi/refint--unpackaged--1.0.sql +++ b/contrib/spi/refint--unpackaged--1.0.sql @@ -1,4 +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 + ALTER EXTENSION refint ADD function check_primary_key(); ALTER EXTENSION refint ADD function check_foreign_key(); diff --git a/contrib/spi/timetravel--1.0.sql b/contrib/spi/timetravel--1.0.sql index b68cf2f247..c34ca09965 100644 --- a/contrib/spi/timetravel--1.0.sql +++ b/contrib/spi/timetravel--1.0.sql @@ -1,5 +1,8 @@ /* contrib/spi/timetravel--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 + CREATE FUNCTION timetravel() RETURNS trigger AS 'MODULE_PATHNAME' diff --git a/contrib/spi/timetravel--unpackaged--1.0.sql b/contrib/spi/timetravel--unpackaged--1.0.sql index e3716afe95..dd07a133a5 100644 --- a/contrib/spi/timetravel--unpackaged--1.0.sql +++ b/contrib/spi/timetravel--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION timetravel ADD function timetravel(); ALTER EXTENSION timetravel ADD function set_timetravel(name,integer); ALTER EXTENSION timetravel ADD function get_timetravel(name); diff --git a/contrib/sslinfo/sslinfo--1.0.sql b/contrib/sslinfo/sslinfo--1.0.sql index ef745a0a2e..79ce656786 100644 --- a/contrib/sslinfo/sslinfo--1.0.sql +++ b/contrib/sslinfo/sslinfo--1.0.sql @@ -1,5 +1,8 @@ /* contrib/sslinfo/sslinfo--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 + CREATE FUNCTION ssl_client_serial() RETURNS numeric AS 'MODULE_PATHNAME', 'ssl_client_serial' LANGUAGE C STRICT; diff --git a/contrib/sslinfo/sslinfo--unpackaged--1.0.sql b/contrib/sslinfo/sslinfo--unpackaged--1.0.sql index befa96e908..e4b868423b 100644 --- a/contrib/sslinfo/sslinfo--unpackaged--1.0.sql +++ b/contrib/sslinfo/sslinfo--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION sslinfo ADD function ssl_client_serial(); ALTER EXTENSION sslinfo ADD function ssl_is_used(); ALTER EXTENSION sslinfo ADD function ssl_client_cert_present(); diff --git a/contrib/start-scripts/osx/PostgreSQL b/contrib/start-scripts/osx/PostgreSQL index 58e69bc784..e4b56dfb3b 100755 --- a/contrib/start-scripts/osx/PostgreSQL +++ b/contrib/start-scripts/osx/PostgreSQL @@ -85,28 +85,28 @@ StartService () { if [ "${POSTGRESQL:=-NO-}" = "-YES-" ]; then ConsoleMessage "Starting PostgreSQL database server" if [ "${ROTATELOGS}" = "1" ]; then - sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" 2>&1 | ${LOGUTIL} '${PGLOG}' ${ROTATESEC} & + sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" 2>&1 | ${LOGUTIL} "${PGLOG}" ${ROTATESEC} & else - sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" >>$PGLOG 2>&1 + sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" >>"$PGLOG" 2>&1 fi fi } StopService () { ConsoleMessage "Stopping PostgreSQL database server" - sudo -u $PGUSER $PGCTL stop -D "$PGDATA" -s -m fast + sudo -u $PGUSER sh -c "$PGCTL stop -D '${PGDATA}' -s -m fast" } RestartService () { if [ "${POSTGRESQL:=-NO-}" = "-YES-" ]; then ConsoleMessage "Restarting PostgreSQL database server" # should match StopService: - sudo -u $PGUSER $PGCTL stop -D "$PGDATA" -s -m fast + sudo -u $PGUSER sh -c "$PGCTL stop -D '${PGDATA}' -s -m fast" # should match StartService: if [ "${ROTATELOGS}" = "1" ]; then - sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" 2>&1 | ${LOGUTIL} '${PGLOG}' ${ROTATESEC} & + sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" 2>&1 | ${LOGUTIL} "${PGLOG}" ${ROTATESEC} & else - sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" >>$PGLOG 2>&1 + sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" >>"$PGLOG" 2>&1 fi else StopService diff --git a/contrib/tablefunc/tablefunc--1.0.sql b/contrib/tablefunc/tablefunc--1.0.sql index 7bf117cb5c..8681ff4706 100644 --- a/contrib/tablefunc/tablefunc--1.0.sql +++ b/contrib/tablefunc/tablefunc--1.0.sql @@ -1,5 +1,8 @@ /* contrib/tablefunc/tablefunc--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 + CREATE FUNCTION normal_rand(int4, float8, float8) RETURNS setof float8 AS 'MODULE_PATHNAME','normal_rand' diff --git a/contrib/tablefunc/tablefunc--unpackaged--1.0.sql b/contrib/tablefunc/tablefunc--unpackaged--1.0.sql index 20e09816e9..e5e9619c52 100644 --- a/contrib/tablefunc/tablefunc--unpackaged--1.0.sql +++ b/contrib/tablefunc/tablefunc--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION tablefunc ADD function normal_rand(integer,double precision,double precision); ALTER EXTENSION tablefunc ADD function crosstab(text); ALTER EXTENSION tablefunc ADD type tablefunc_crosstab_2; diff --git a/contrib/test_parser/test_parser--1.0.sql b/contrib/test_parser/test_parser--1.0.sql index 5b8b04bb05..06c94d353b 100644 --- a/contrib/test_parser/test_parser--1.0.sql +++ b/contrib/test_parser/test_parser--1.0.sql @@ -1,5 +1,8 @@ /* contrib/test_parser/test_parser--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 + CREATE FUNCTION testprs_start(internal, int4) RETURNS internal AS 'MODULE_PATHNAME' diff --git a/contrib/test_parser/test_parser--unpackaged--1.0.sql b/contrib/test_parser/test_parser--unpackaged--1.0.sql index e240ab2b5b..34120f2346 100644 --- a/contrib/test_parser/test_parser--unpackaged--1.0.sql +++ b/contrib/test_parser/test_parser--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION test_parser ADD function testprs_start(internal,integer); ALTER EXTENSION test_parser ADD function testprs_getlexeme(internal,internal,internal); ALTER EXTENSION test_parser ADD function testprs_end(internal); diff --git a/contrib/test_parser/test_parser.c b/contrib/test_parser/test_parser.c index 8e4c7a32d9..c166f2eedb 100644 --- a/contrib/test_parser/test_parser.c +++ b/contrib/test_parser/test_parser.c @@ -73,31 +73,32 @@ testprs_getlexeme(PG_FUNCTION_ARGS) ParserState *pst = (ParserState *) PG_GETARG_POINTER(0); char **t = (char **) PG_GETARG_POINTER(1); int *tlen = (int *) PG_GETARG_POINTER(2); + int startpos = pst->pos; int type; - *tlen = pst->pos; *t = pst->buffer + pst->pos; - if ((pst->buffer)[pst->pos] == ' ') + if (pst->pos < pst->len && + (pst->buffer)[pst->pos] == ' ') { /* blank type */ type = 12; - /* go to the next non-white-space character */ - while ((pst->buffer)[pst->pos] == ' ' && - pst->pos < pst->len) + /* go to the next non-space character */ + while (pst->pos < pst->len && + (pst->buffer)[pst->pos] == ' ') (pst->pos)++; } else { /* word type */ type = 3; - /* go to the next white-space character */ - while ((pst->buffer)[pst->pos] != ' ' && - pst->pos < pst->len) + /* go to the next space character */ + while (pst->pos < pst->len && + (pst->buffer)[pst->pos] != ' ') (pst->pos)++; } - *tlen = pst->pos - *tlen; + *tlen = pst->pos - startpos; /* we are finished if (*tlen == 0) */ if (*tlen == 0) diff --git a/contrib/tsearch2/tsearch2--1.0.sql b/contrib/tsearch2/tsearch2--1.0.sql index 369507e8f5..4777df8d91 100644 --- a/contrib/tsearch2/tsearch2--1.0.sql +++ b/contrib/tsearch2/tsearch2--1.0.sql @@ -1,5 +1,8 @@ /* contrib/tsearch2/tsearch2--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 + -- These domains are just to catch schema-qualified references to the -- old data types. CREATE DOMAIN tsvector AS pg_catalog.tsvector; diff --git a/contrib/tsearch2/tsearch2--unpackaged--1.0.sql b/contrib/tsearch2/tsearch2--unpackaged--1.0.sql index d04d5aa57e..af970a4862 100644 --- a/contrib/tsearch2/tsearch2--unpackaged--1.0.sql +++ b/contrib/tsearch2/tsearch2--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION tsearch2 ADD type @extschema@.tsvector; ALTER EXTENSION tsearch2 ADD type @extschema@.tsquery; ALTER EXTENSION tsearch2 ADD type @extschema@.gtsvector; diff --git a/contrib/unaccent/unaccent--1.0.sql b/contrib/unaccent/unaccent--1.0.sql index b5909e0b55..9085ca473f 100644 --- a/contrib/unaccent/unaccent--1.0.sql +++ b/contrib/unaccent/unaccent--1.0.sql @@ -1,5 +1,8 @@ /* contrib/unaccent/unaccent--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 + CREATE FUNCTION unaccent(regdictionary, text) RETURNS text AS 'MODULE_PATHNAME', 'unaccent_dict' diff --git a/contrib/unaccent/unaccent--unpackaged--1.0.sql b/contrib/unaccent/unaccent--unpackaged--1.0.sql index eeb9c532f9..abd06983ac 100644 --- a/contrib/unaccent/unaccent--unpackaged--1.0.sql +++ b/contrib/unaccent/unaccent--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION unaccent ADD function unaccent(regdictionary,text); ALTER EXTENSION unaccent ADD function unaccent(text); ALTER EXTENSION unaccent ADD function unaccent_init(internal); diff --git a/contrib/unaccent/unaccent.c b/contrib/unaccent/unaccent.c index 709f4c4492..ea8dd4c8a7 100644 --- a/contrib/unaccent/unaccent.c +++ b/contrib/unaccent/unaccent.c @@ -93,35 +93,83 @@ initSuffixTree(char *filename) do { - char src[4096]; - char trg[4096]; - int srclen; - int trglen; - char *line = NULL; - + /* + * pg_do_encoding_conversion() (called by tsearch_readline()) will + * emit exception if it finds untranslatable characters in current + * locale. We just skip such lines, continuing with the next. + */ skip = true; PG_TRY(); { - /* - * pg_do_encoding_conversion() (called by tsearch_readline()) will - * emit exception if it finds untranslatable characters in current - * locale. We just skip such characters. - */ + char *line; + while ((line = tsearch_readline(&trst)) != NULL) { - if (sscanf(line, "%s\t%s\n", src, trg) != 2) - continue; + /* + * The format of each line must be "src trg" where src and trg + * are sequences of one or more non-whitespace characters, + * separated by whitespace. Whitespace at start or end of + * line is ignored. + */ + int state; + char *ptr; + char *src = NULL; + char *trg = NULL; + int ptrlen; + int srclen = 0; + int trglen = 0; + + state = 0; + for (ptr = line; *ptr; ptr += ptrlen) + { + ptrlen = pg_mblen(ptr); + /* ignore whitespace, but end src or trg */ + if (t_isspace(ptr)) + { + if (state == 1) + state = 2; + else if (state == 3) + state = 4; + continue; + } + switch (state) + { + case 0: + /* start of src */ + src = ptr; + srclen = ptrlen; + state = 1; + break; + case 1: + /* continue src */ + srclen += ptrlen; + break; + case 2: + /* start of trg */ + trg = ptr; + trglen = ptrlen; + state = 3; + break; + case 3: + /* continue trg */ + trglen += ptrlen; + break; + default: + /* bogus line format */ + state = -1; + break; + } + } - srclen = strlen(src); - trglen = strlen(trg); + if (state >= 3) + rootSuffixTree = placeChar(rootSuffixTree, + (unsigned char *) src, srclen, + trg, trglen); - rootSuffixTree = placeChar(rootSuffixTree, - (unsigned char *) src, srclen, - trg, trglen); - skip = false; pfree(line); } + skip = false; } PG_CATCH(); { diff --git a/contrib/uuid-ossp/uuid-ossp--1.0.sql b/contrib/uuid-ossp/uuid-ossp--1.0.sql index 43ae0b38a0..042732065b 100644 --- a/contrib/uuid-ossp/uuid-ossp--1.0.sql +++ b/contrib/uuid-ossp/uuid-ossp--1.0.sql @@ -1,5 +1,8 @@ /* contrib/uuid-ossp/uuid-ossp--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 + CREATE FUNCTION uuid_nil() RETURNS uuid AS 'MODULE_PATHNAME', 'uuid_nil' diff --git a/contrib/uuid-ossp/uuid-ossp--unpackaged--1.0.sql b/contrib/uuid-ossp/uuid-ossp--unpackaged--1.0.sql index bc984dd8c0..5776b6f930 100644 --- a/contrib/uuid-ossp/uuid-ossp--unpackaged--1.0.sql +++ b/contrib/uuid-ossp/uuid-ossp--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION "uuid-ossp" ADD function uuid_nil(); ALTER EXTENSION "uuid-ossp" ADD function uuid_ns_dns(); ALTER EXTENSION "uuid-ossp" ADD function uuid_ns_url(); diff --git a/contrib/vacuumlo/vacuumlo.c b/contrib/vacuumlo/vacuumlo.c index f6e2a28cf3..641a8c3425 100644 --- a/contrib/vacuumlo/vacuumlo.c +++ b/contrib/vacuumlo/vacuumlo.c @@ -3,7 +3,7 @@ * vacuumlo.c * This removes orphaned large objects from a database. * - * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * @@ -22,7 +22,6 @@ #endif #include "libpq-fe.h" -#include "libpq/libpq-fs.h" #define atooid(x) ((Oid) strtoul((x), NULL, 10)) @@ -30,8 +29,7 @@ extern char *optarg; extern int optind, - opterr, - optopt; + opterr; enum trivalue { @@ -48,29 +46,32 @@ struct _param char *pg_host; int verbose; int dry_run; + long transaction_limit; }; -int vacuumlo(char *, struct _param *); -void usage(const char *progname); +static int vacuumlo(const char *database, const struct _param * param); +static void usage(const char *progname); /* * This vacuums LOs of one database. It returns 0 on success, -1 on failure. */ -int -vacuumlo(char *database, struct _param * param) +static int +vacuumlo(const char *database, const struct _param * param) { PGconn *conn; PGresult *res, *res2; char buf[BUFSIZE]; - int matched; - int deleted; + long matched; + long deleted; int i; static char *password = NULL; bool new_pass; + bool success = true; + /* Note: password can be carried over from a previous call */ if (param->pg_prompt == TRI_YES && password == NULL) password = simple_prompt("Password: ", 100, false); @@ -118,7 +119,7 @@ vacuumlo(char *database, struct _param * param) if (param->verbose) { - fprintf(stdout, "Connected to %s\n", database); + fprintf(stdout, "Connected to database \"%s\"\n", database); if (param->dry_run) fprintf(stdout, "Test run: no large objects will be removed!\n"); } @@ -219,9 +220,21 @@ vacuumlo(char *database, struct _param * param) if (param->verbose) fprintf(stdout, "Checking %s in %s.%s\n", field, schema, table); + schema = PQescapeIdentifier(conn, schema, strlen(schema)); + table = PQescapeIdentifier(conn, table, strlen(table)); + field = PQescapeIdentifier(conn, field, strlen(field)); + + if (!schema || !table || !field) + { + fprintf(stderr, "Out of memory\n"); + PQclear(res); + PQfinish(conn); + return -1; + } + snprintf(buf, BUFSIZE, "DELETE FROM vacuum_l " - "WHERE lo IN (SELECT \"%s\" FROM \"%s\".\"%s\")", + "WHERE lo IN (SELECT %s FROM %s.%s)", field, schema, table); res2 = PQexec(conn, buf); if (PQresultStatus(res2) != PGRES_COMMAND_OK) @@ -235,23 +248,35 @@ vacuumlo(char *database, struct _param * param) return -1; } PQclear(res2); + + PQfreemem(schema); + PQfreemem(table); + PQfreemem(field); } PQclear(res); /* - * Run the actual deletes in a single transaction. Note that this would - * be a bad idea in pre-7.1 Postgres releases (since rolling back a table - * delete used to cause problems), but it should be safe now. + * Now, those entries remaining in vacuum_l are orphans. Delete 'em. + * + * We don't want to run each delete as an individual transaction, because + * the commit overhead would be high. However, since 9.0 the backend will + * acquire a lock per deleted LO, so deleting too many LOs per transaction + * risks running out of room in the shared-memory lock table. + * Accordingly, we delete up to transaction_limit LOs per transaction. */ res = PQexec(conn, "begin"); + if (PQresultStatus(res) != PGRES_COMMAND_OK) + { + fprintf(stderr, "Failed to start transaction:\n"); + fprintf(stderr, "%s", PQerrorMessage(conn)); + PQclear(res); + PQfinish(conn); + return -1; + } PQclear(res); - /* - * Finally, those entries remaining in vacuum_l are orphans. - */ buf[0] = '\0'; - strcat(buf, "SELECT lo "); - strcat(buf, "FROM vacuum_l"); + strcat(buf, "SELECT lo FROM vacuum_l"); res = PQexec(conn, buf); if (PQresultStatus(res) != PGRES_TUPLES_OK) { @@ -280,37 +305,87 @@ vacuumlo(char *database, struct _param * param) { fprintf(stderr, "\nFailed to remove lo %u: ", lo); fprintf(stderr, "%s", PQerrorMessage(conn)); + if (PQtransactionStatus(conn) == PQTRANS_INERROR) + { + success = false; + break; + } } else deleted++; } else deleted++; + if (param->transaction_limit > 0 && + (deleted % param->transaction_limit) == 0) + { + res2 = PQexec(conn, "commit"); + if (PQresultStatus(res2) != PGRES_COMMAND_OK) + { + fprintf(stderr, "Failed to commit transaction:\n"); + fprintf(stderr, "%s", PQerrorMessage(conn)); + PQclear(res2); + PQclear(res); + PQfinish(conn); + return -1; + } + PQclear(res2); + res2 = PQexec(conn, "begin"); + if (PQresultStatus(res2) != PGRES_COMMAND_OK) + { + fprintf(stderr, "Failed to start transaction:\n"); + fprintf(stderr, "%s", PQerrorMessage(conn)); + PQclear(res2); + PQclear(res); + PQfinish(conn); + return -1; + } + PQclear(res2); + } } PQclear(res); /* * That's all folks! */ - res = PQexec(conn, "end"); + res = PQexec(conn, "commit"); + if (PQresultStatus(res) != PGRES_COMMAND_OK) + { + fprintf(stderr, "Failed to commit transaction:\n"); + fprintf(stderr, "%s", PQerrorMessage(conn)); + PQclear(res); + PQfinish(conn); + return -1; + } PQclear(res); PQfinish(conn); if (param->verbose) - fprintf(stdout, "\r%s %d large objects from %s.\n", - (param->dry_run ? "Would remove" : "Removed"), deleted, database); + { + if (param->dry_run) + fprintf(stdout, "\rWould remove %ld large objects from database \"%s\".\n", + deleted, database); + else if (success) + fprintf(stdout, + "\rSuccessfully removed %ld large objects from database \"%s\".\n", + deleted, database); + else + fprintf(stdout, "\rRemoval from database \"%s\" failed at object %ld of %ld.\n", + database, deleted, matched); + } - return 0; + return ((param->dry_run || success) ? 0 : -1); } -void +static void usage(const char *progname) { printf("%s removes unreferenced large objects from databases.\n\n", progname); printf("Usage:\n %s [OPTION]... DBNAME...\n\n", progname); printf("Options:\n"); printf(" -h HOSTNAME database server host or socket directory\n"); + printf(" -l LIMIT commit after removing each LIMIT large objects\n"); printf(" -n don't remove large objects, just show what would be done\n"); printf(" -p PORT database server port\n"); printf(" -U USERNAME user name to connect as\n"); @@ -335,14 +410,16 @@ main(int argc, char **argv) progname = get_progname(argv[0]); - /* Parameter handling */ + /* Set default parameter values */ param.pg_user = NULL; param.pg_prompt = TRI_DEFAULT; param.pg_host = NULL; param.pg_port = NULL; param.verbose = 0; param.dry_run = 0; + param.transaction_limit = 1000; + /* Process command-line arguments */ if (argc > 1) { if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0) @@ -359,7 +436,7 @@ main(int argc, char **argv) while (1) { - c = getopt(argc, argv, "h:U:p:vnwW"); + c = getopt(argc, argv, "h:l:U:p:vnwW"); if (c == -1) break; @@ -377,6 +454,16 @@ main(int argc, char **argv) param.dry_run = 1; param.verbose = 1; break; + case 'l': + param.transaction_limit = strtol(optarg, NULL, 10); + if (param.transaction_limit < 0) + { + fprintf(stderr, + "%s: transaction limit must not be negative (0 disables)\n", + progname); + exit(1); + } + break; case 'U': param.pg_user = strdup(optarg); break; @@ -405,7 +492,7 @@ main(int argc, char **argv) if (optind >= argc) { fprintf(stderr, "vacuumlo: missing required argument: database name\n"); - fprintf(stderr, "Try 'vacuumlo -?' for help.\n"); + fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); exit(1); } diff --git a/contrib/xml2/Makefile b/contrib/xml2/Makefile index ad325723c9..be3d018cf5 100644 --- a/contrib/xml2/Makefile +++ b/contrib/xml2/Makefile @@ -8,7 +8,7 @@ DATA = xml2--1.0.sql xml2--unpackaged--1.0.sql REGRESS = xml2 -SHLIB_LINK += $(filter -lxslt, $(LIBS)) $(filter -lxml2, $(LIBS)) +SHLIB_LINK += $(filter -lxslt, $(LIBS)) -lxml2 ifdef USE_PGXS PG_CONFIG = pg_config diff --git a/contrib/xml2/expected/xml2.out b/contrib/xml2/expected/xml2.out index 3bf676fb40..eba6ae6036 100644 --- a/contrib/xml2/expected/xml2.out +++ b/contrib/xml2/expected/xml2.out @@ -207,3 +207,18 @@ SELECT xslt_process('cim30400Hello from XML', +$$ + + + + + + + +$$); +ERROR: failed to apply stylesheet diff --git a/contrib/xml2/expected/xml2_1.out b/contrib/xml2/expected/xml2_1.out index fda626e08c..bac90e5a2a 100644 --- a/contrib/xml2/expected/xml2_1.out +++ b/contrib/xml2/expected/xml2_1.out @@ -151,3 +151,18 @@ SELECT xslt_process('cim30400 $$::text, 'n1="v1",n2="v2",n3="v3",n4="v4",n5="v5",n6="v6",n7="v7",n8="v8",n9="v9",n10="v10",n11="v11",n12="v12"'::text); ERROR: xslt_process() is not available without libxslt +-- possible security exploit +SELECT xslt_process('Hello from XML', +$$ + + + + + + + +$$); +ERROR: xslt_process() is not available without libxslt diff --git a/contrib/xml2/sql/xml2.sql b/contrib/xml2/sql/xml2.sql index 4a996af716..ac49cfa7c5 100644 --- a/contrib/xml2/sql/xml2.sql +++ b/contrib/xml2/sql/xml2.sql @@ -122,3 +122,18 @@ SELECT xslt_process('cim30400 $$::text, 'n1="v1",n2="v2",n3="v3",n4="v4",n5="v5",n6="v6",n7="v7",n8="v8",n9="v9",n10="v10",n11="v11",n12="v12"'::text); + +-- possible security exploit +SELECT xslt_process('Hello from XML', +$$ + + + + + + + +$$); diff --git a/contrib/xml2/xml2--1.0.sql b/contrib/xml2/xml2--1.0.sql index bc27dc89ca..0b6afc63d0 100644 --- a/contrib/xml2/xml2--1.0.sql +++ b/contrib/xml2/xml2--1.0.sql @@ -1,5 +1,8 @@ /* contrib/xml2/xml2--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 + --SQL for XML parser -- deprecated old name for xml_is_well_formed diff --git a/contrib/xml2/xml2--unpackaged--1.0.sql b/contrib/xml2/xml2--unpackaged--1.0.sql index 1aa894a619..b02dabffc2 100644 --- a/contrib/xml2/xml2--unpackaged--1.0.sql +++ b/contrib/xml2/xml2--unpackaged--1.0.sql @@ -1,5 +1,8 @@ /* 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 + ALTER EXTENSION xml2 ADD function xslt_process(text,text); ALTER EXTENSION xml2 ADD function xslt_process(text,text,text); ALTER EXTENSION xml2 ADD function xpath_table(text,text,text,text,text); diff --git a/contrib/xml2/xslt_proc.c b/contrib/xml2/xslt_proc.c index f8f7d7263f..6603526392 100644 --- a/contrib/xml2/xslt_proc.c +++ b/contrib/xml2/xslt_proc.c @@ -26,6 +26,7 @@ #include #include +#include #include #include #endif /* USE_LIBXSLT */ @@ -54,12 +55,16 @@ xslt_process(PG_FUNCTION_ARGS) text *doct = PG_GETARG_TEXT_P(0); text *ssheet = PG_GETARG_TEXT_P(1); + text *result; text *paramstr; const char **params; xsltStylesheetPtr stylesheet = NULL; xmlDocPtr doctree; xmlDocPtr restree; - xmlDocPtr ssdoc = NULL; + xmlDocPtr ssdoc; + xsltSecurityPrefsPtr xslt_sec_prefs; + bool xslt_sec_prefs_error; + xsltTransformContextPtr xslt_ctxt; xmlChar *resstr; int resstat; int reslen; @@ -79,34 +84,27 @@ xslt_process(PG_FUNCTION_ARGS) /* Setup parser */ pgxml_parser_init(); - /* Check to see if document is a file or a literal */ - - if (VARDATA(doct)[0] == '<') - doctree = xmlParseMemory((char *) VARDATA(doct), VARSIZE(doct) - VARHDRSZ); - else - doctree = xmlParseFile(text_to_cstring(doct)); + /* Parse document */ + doctree = xmlParseMemory((char *) VARDATA(doct), + VARSIZE(doct) - VARHDRSZ); if (doctree == NULL) xml_ereport(ERROR, ERRCODE_EXTERNAL_ROUTINE_EXCEPTION, "error parsing XML document"); /* Same for stylesheet */ - if (VARDATA(ssheet)[0] == '<') - { - ssdoc = xmlParseMemory((char *) VARDATA(ssheet), - VARSIZE(ssheet) - VARHDRSZ); - if (ssdoc == NULL) - { - xmlFreeDoc(doctree); - xml_ereport(ERROR, ERRCODE_EXTERNAL_ROUTINE_EXCEPTION, - "error parsing stylesheet as XML document"); - } + ssdoc = xmlParseMemory((char *) VARDATA(ssheet), + VARSIZE(ssheet) - VARHDRSZ); - stylesheet = xsltParseStylesheetDoc(ssdoc); + if (ssdoc == NULL) + { + xmlFreeDoc(doctree); + xml_ereport(ERROR, ERRCODE_EXTERNAL_ROUTINE_EXCEPTION, + "error parsing stylesheet as XML document"); } - else - stylesheet = xsltParseStylesheetFile((xmlChar *) text_to_cstring(ssheet)); + /* After this call we need not free ssdoc separately */ + stylesheet = xsltParseStylesheetDoc(ssdoc); if (stylesheet == NULL) { @@ -116,19 +114,75 @@ xslt_process(PG_FUNCTION_ARGS) "failed to parse stylesheet"); } - restree = xsltApplyStylesheet(stylesheet, doctree, params); + xslt_ctxt = xsltNewTransformContext(stylesheet, doctree); + + xslt_sec_prefs_error = false; + if ((xslt_sec_prefs = xsltNewSecurityPrefs()) == NULL) + xslt_sec_prefs_error = true; + + if (xsltSetSecurityPrefs(xslt_sec_prefs, XSLT_SECPREF_READ_FILE, + xsltSecurityForbid) != 0) + xslt_sec_prefs_error = true; + if (xsltSetSecurityPrefs(xslt_sec_prefs, XSLT_SECPREF_WRITE_FILE, + xsltSecurityForbid) != 0) + xslt_sec_prefs_error = true; + if (xsltSetSecurityPrefs(xslt_sec_prefs, XSLT_SECPREF_CREATE_DIRECTORY, + xsltSecurityForbid) != 0) + xslt_sec_prefs_error = true; + if (xsltSetSecurityPrefs(xslt_sec_prefs, XSLT_SECPREF_READ_NETWORK, + xsltSecurityForbid) != 0) + xslt_sec_prefs_error = true; + if (xsltSetSecurityPrefs(xslt_sec_prefs, XSLT_SECPREF_WRITE_NETWORK, + xsltSecurityForbid) != 0) + xslt_sec_prefs_error = true; + if (xsltSetCtxtSecurityPrefs(xslt_sec_prefs, xslt_ctxt) != 0) + xslt_sec_prefs_error = true; + + if (xslt_sec_prefs_error) + { + xsltFreeStylesheet(stylesheet); + xmlFreeDoc(doctree); + xsltFreeSecurityPrefs(xslt_sec_prefs); + xsltFreeTransformContext(xslt_ctxt); + xsltCleanupGlobals(); + xml_ereport(ERROR, ERRCODE_EXTERNAL_ROUTINE_EXCEPTION, + "could not set libxslt security preferences"); + } + + restree = xsltApplyStylesheetUser(stylesheet, doctree, params, + NULL, NULL, xslt_ctxt); + + if (restree == NULL) + { + xsltFreeStylesheet(stylesheet); + xmlFreeDoc(doctree); + xsltFreeSecurityPrefs(xslt_sec_prefs); + xsltFreeTransformContext(xslt_ctxt); + xsltCleanupGlobals(); + xml_ereport(ERROR, ERRCODE_EXTERNAL_ROUTINE_EXCEPTION, + "failed to apply stylesheet"); + } + resstat = xsltSaveResultToString(&resstr, &reslen, restree, stylesheet); xsltFreeStylesheet(stylesheet); xmlFreeDoc(restree); xmlFreeDoc(doctree); + xsltFreeSecurityPrefs(xslt_sec_prefs); + xsltFreeTransformContext(xslt_ctxt); xsltCleanupGlobals(); + /* XXX this is pretty dubious, really ought to throw error instead */ if (resstat < 0) PG_RETURN_NULL(); - PG_RETURN_TEXT_P(cstring_to_text_with_len((char *) resstr, reslen)); + result = cstring_to_text_with_len((char *) resstr, reslen); + + if (resstr) + xmlFree(resstr); + + PG_RETURN_TEXT_P(result); #else /* !USE_LIBXSLT */ ereport(ERROR, diff --git a/doc-xc/Makefile b/doc-xc/Makefile index 0ec3a14cc9..8d81c14ed7 100644 --- a/doc-xc/Makefile +++ b/doc-xc/Makefile @@ -13,5 +13,4 @@ top_builddir = .. include $(top_builddir)/src/Makefile.global all distprep html man install installdirs uninstall clean distclean maintainer-clean maintainer-check: - $(MAKE) -C tools $@ $(MAKE) -C src $@ diff --git a/doc-xc/bug.template b/doc-xc/bug.template index 550d57de1b..72cc3303f6 100644 --- a/doc-xc/bug.template +++ b/doc-xc/bug.template @@ -27,7 +27,7 @@ System Configuration: Operating System (example: Linux 2.4.18) : - Postgres-XC version (example: Postgres-XC 1.0beta1): Postgres-XC 1.0beta1 + Postgres-XC version (example: Postgres-XC 1.0.3): Postgres-XC 1.0.3 Compiler used (example: gcc 3.3.5) : diff --git a/doc-xc/src/sgml/.gitignore b/doc-xc/src/sgml/.gitignore index e1b84b490f..a1ce454757 100644 --- a/doc-xc/src/sgml/.gitignore +++ b/doc-xc/src/sgml/.gitignore @@ -6,9 +6,7 @@ /man7/ /man-stamp # Other popular build targets -/HISTORY /INSTALL -/regress_README /postgres-US.pdf /postgres-A4.pdf /postgres.html @@ -22,12 +20,13 @@ /HTML.index # Assorted byproducts from building the above /postgres.xml -/HISTORY.html /INSTALL.html -/regress_README.html /postgres-US.aux /postgres-US.log /postgres-US.out /postgres-A4.aux /postgres-A4.log /postgres-A4.out +# sgml files generated from sgmlin +/*.sgml +/ref/*.sgml \ No newline at end of file diff --git a/doc-xc/src/sgml/Makefile b/doc-xc/src/sgml/Makefile index aa8dea186b..69397a9acf 100644 --- a/doc-xc/src/sgml/Makefile +++ b/doc-xc/src/sgml/Makefile @@ -17,11 +17,11 @@ # to want to use. html: -subdir = doc/src/sgml +subdir = doc-xc/src/sgml top_builddir = ../../.. include $(top_builddir)/src/Makefile.global -MAKESGMLDIR = ../../tools/makesgml +MAKESGMLDIR = $(top_builddir)/src/pgxc/tools/makesgml MAKESGML = $(MAKESGMLDIR)/makesgml @@ -51,7 +51,7 @@ ifndef XSLTPROC XSLTPROC = xsltproc endif -VERSION = 1.0beta1 +VERSION = 1.0.4 override XSLTPROCFLAGS += --stringparam pg.version '$(VERSION)' @@ -215,6 +215,7 @@ INC_LIST = -I PG -I EN #INC_LIST = -I PGXC -I EN .sgmlin.sgml: + $(MAKE) -C $(MAKESGMLDIR) $(MAKESGML) -i $< -o $@ $(INC_LIST) $(EXC_LIST) @@ -230,27 +231,23 @@ INC_LIST = -I PG -I EN ## JADE.text = $(JADE) $(JADEFLAGS) $(SGMLINCLUDE) $(CATALOG) -d stylesheet.dsl -i output-text -t sgml +ICONV = iconv LYNX = lynx -INSTALL HISTORY regress_README: % : %.html +# The documentation may contain non-ASCII characters (mostly for +# contributor names), which lynx converts to the encoding determined +# by the current locale. To get text output that is deterministic and +# easily readable by everyone, we make lynx produce LATIN1 and then +# convert that to ASCII with transliteration for the non-ASCII characters. +# Official releases were historically built on FreeBSD, which has limited +# locale support and is very picky about locale name spelling. The +# below has been finely tuned to run on FreeBSD and Linux/glibc. +INSTALL: % : %.html $(PERL) -p -e 's/ $@ INSTALL.html: standalone-install.sgml installation.sgml version.sgml $(JADE.text) -V nochunks standalone-install.sgml installation.sgml > $@ -HISTORY.html: generate_history.pl $(wildcard $(srcdir)/release*.sgml) - $(PERL) $< "$(srcdir)" release.sgml >tempfile_HISTORY.sgml - $(JADE.text) -V nochunks tempfile_HISTORY.sgml > $@ - rm tempfile_HISTORY.sgml - -regress_README.html: regress.sgml - ( echo ''; \ - echo ' ]>'; \ - cat $< ) >tempfile_regress_README.sgml - $(JADE.text) -V nochunks tempfile_regress_README.sgml > $@ - rm tempfile_regress_README.sgml - ## ## XSLT processing @@ -366,7 +363,7 @@ clean: clean-man clean-sgml clean-man: rm -rf fixedman/ fixed-man-stamp -.PHONY: clean-sgml: +.PHONY: clean-sgml clean-sgml: rm -rf $(ALLSGML) @@ -383,13 +380,13 @@ check-tabs: # This allows removing some files from the distribution tarballs while # keeping the dependencies satisfied. .SECONDARY: postgres.xml $(GENERATED_SGML) HTML.index -.SECONDARY: INSTALL.html HISTORY.html regress_README.html +.SECONDARY: INSTALL.html .SECONDARY: %-A4.tex-ps %-US.tex-ps %-A4.tex-pdf %-US.tex-pdf clean: # text --- these are shipped, but not in this directory - rm -f INSTALL HISTORY regress_README - rm -f INSTALL.html HISTORY.html regress_README.html + rm -f INSTALL + rm -f INSTALL.html # single-page output rm -f postgres.html postgres.txt # print @@ -400,8 +397,6 @@ clean: rm -f postgres.xml postgres.xmltmp htmlhelp.hhp toc.hhc index.hhk *.fo # Texinfo rm -f *.texixml *.texi *.info db2texi.refs -# sgml - rm -f $(ALLSGMLTOREMOVE) distclean: clean @@ -410,6 +405,8 @@ maintainer-clean: distclean rm -fr html/ html-stamp # man rm -rf man1/ man3/ man7/ man-stamp +# sgml + rm -f $(ALLSGMLTOREMOVE) .PHONY: sgmlfiles diff --git a/doc-xc/src/sgml/Makefile.xc.wk b/doc-xc/src/sgml/Makefile.xc.wk index 5bf5fce8b9..4ad3b7950d 100644 --- a/doc-xc/src/sgml/Makefile.xc.wk +++ b/doc-xc/src/sgml/Makefile.xc.wk @@ -353,7 +353,7 @@ clean: clean-man clean-sgml clean-man: rm -rf fixedman/ fixed-man-stamp -.PHONY: clean-sgml: +.PHONY: clean-sgml clean-sgml: rm -rf $(ALLSGML) diff --git a/doc-xc/src/sgml/adminpack.sgmlin b/doc-xc/src/sgml/adminpack.sgmlin index 33e85f9268..fef740a815 100644 --- a/doc-xc/src/sgml/adminpack.sgmlin +++ b/doc-xc/src/sgml/adminpack.sgmlin @@ -38,7 +38,7 @@ int4 pg_catalog.pg_logfile_rotate() - Functions of this module run only on the coordinator you're connecting. + Functions of this module run only on the Coordinator you're connecting. diff --git a/doc-xc/src/sgml/advanced.sgmlin b/doc-xc/src/sgml/advanced.sgmlin index d006de9dc1..9036e02580 100644 --- a/doc-xc/src/sgml/advanced.sgmlin +++ b/doc-xc/src/sgml/advanced.sgmlin @@ -161,7 +161,7 @@ DETAIL: Key (city)=(Berkeley) is not present in table "cities". distributes each row of tables based upon the value of the first column of the table. You can choose any column as a basis of table distribution, or you can have copies of a table in all the - datanodes. + Datanodes. Please refer to for details. @@ -375,7 +375,6 @@ COMMIT; - @@ -621,8 +620,6 @@ SELECT sum(salary) OVER w, avg(salary) OVER w - - Inheritance diff --git a/doc-xc/src/sgml/arch-dev.sgmlin b/doc-xc/src/sgml/arch-dev.sgmlin index 768208cc29..6a01c41fb6 100644 --- a/doc-xc/src/sgml/arch-dev.sgmlin +++ b/doc-xc/src/sgml/arch-dev.sgmlin @@ -626,11 +626,11 @@ Coordinator is an entry point to Postgres-XC from applications. - You can configure more than one coordinators in the + You can configure more than one Coordinators in the same Postgres-XC. With the help of GTM, they provide transparent concurrency and integrity of transactions globally. Application can choose any - coordinator to connect with. Any coordinator provides the + Coordinator to connect with. Any Coordinator provides the same view of the database. @@ -641,11 +641,11 @@ Datanode stores user data. As described in - and , more than one datanodes + and , more than one Datanodes can be configured. Each table can be replicated or - distributed among datanodes. A table is distributed, you can + distributed among Datanodes. A table is distributed, you can choose a column as the distribute key, whose value is used to - determine which datanode each row should be stored. + determine which Datanode each row should be stored. @@ -762,7 +762,7 @@ (running, committed, aborted etc.) to provide snapshot globally (global snapshot). Please note that global snapshot includes GXID initiated by other - coordinators or datanodes. This is needed because some older + Coordinators or Datanodes. This is needed because some older transaction may visit new server after a while. In this case, if GXID of such a transaction is not included in the snapshot, this transaction may be regarded as @@ -833,8 +833,8 @@ network. GTM architecture is intended to be used with Gigabit local network. We encourage to install Postgres-XC with local Gigabit network with minimum latency, that is, use as fewer - switches involved in the connection among GTM, coordinator and - data nodes. + switches involved in the connection among GTM, Coordinator and + Datanodes. @@ -854,10 +854,10 @@ - GTM opens a port to accept connection from each coordinator and - datanode backend. When GTM accepts a connection, it creates a + GTM opens a port to accept connection from each Coordinator and + Datanode backend. When GTM accepts a connection, it creates a thread (GTM Thread) to handle request to GTM from the connected - coordinator backend. + Coordinator backend. @@ -865,13 +865,13 @@ GTM Thread receives each request, record it and sends GXID, snapshot - and other response to the coordinator backend. + and other response to the Coordinator backend. - They are repeated until the coordinator backend requests + They are repeated until the Coordinator backend requests disconnect. @@ -885,19 +885,19 @@ You may have been noticed that each transaction is issuing request to GTM so frequently and we can collect them into single - block of requests in each coordinator to reduce the amount of + block of requests in each Coordinator to reduce the amount of interaction, as GTM-Proxy. - In this configuration, each coordinator and datanode backend + In this configuration, each Coordinator and Datanode backend does not connect to GTM directly. Instead, we have GTM Proxy - between GTM and coordinator backend to group multiple requests + between GTM and Coordinator backend to group multiple requests and responses. GTM Proxy, like GTM explained in the previous - sections, accepts connection from the coordinator + sections, accepts connection from the Coordinator backend. However, it does not create new thread. The following paragraphs explains how GTM Proxy is initialized and how it - handles requests from coordinator backends. + handles requests from Coordinator backends. @@ -932,20 +932,20 @@ - When each coordinator backend requests for connection, Proxy + When each Coordinator backend requests for connection, Proxy Main Thread assigns a GTM Proxy Thread to handle request. Therefore, one GTM Proxy Thread handles multiple - coordinator backends. If a coordinator has one hundred - coordinator backends and one GTM Proxy Thread, this thread takes - care of one hundred coordinator backend. + Coordinator backends. If a Coordinator has one hundred + Coordinator backends and one GTM Proxy Thread, this thread takes + care of one hundred Coordinator backend. - Then GTM Proxy Thread scans all the requests from coordinator - backend. If coordinator is more busy, it is expected to capture + Then GTM Proxy Thread scans all the requests from Coordinator + backend. If Coordinator is more busy, it is expected to capture more requests in a single scan. Therefore, the proxy can group many requests into single block of requests, to reduce the - number of interaction between GTM and the coordinator. + number of interaction between GTM and the Coordinator. @@ -958,29 +958,29 @@ - + Coordinator &xconly; Coordinator handles SQL statements from applications and - determine which datanode should be involved and generates local - SQL statements for each datanode. In the most simplest case, if - single datanode is involved, the coordinator simply proxies - incoming statement to the datanode. In more complicated case, - for example, if the target datanode cannot be determined, then - the coordinator generates local statements for each datanode, - collects the result to materialize at the coordinator for further - handling. In this case, the coordinator will try to optimize the + determine which Datanode should be involved and generates local + SQL statements for each Datanode. In the most simplest case, if + single Datanode is involved, the Coordinator simply proxies + incoming statement to the Datanode. In more complicated case, + for example, if the target Datanode cannot be determined, then + the Coordinator generates local statements for each Datanode, + collects the result to materialize at the Coordinator for further + handling. In this case, the Coordinator will try to optimize the plan by - Pushdown WHERE clause to datanodes, + Pushdown WHERE clause to Datanodes, - Pushdown joins to datanodes, + Pushdown joins to Datanodes, @@ -995,8 +995,8 @@ - If a transaction is involved by more than one datanodes and/or - coordinators, the coordinator will handle the transaction with + If a transaction is involved by more than one Datanodes and/or + Coordinators, the Coordinator will handle the transaction with two-phase commit protocol internally. @@ -1005,43 +1005,43 @@ functions, Postgres-XC introduced new function collection function between existing transition function and finalize function. Collection function runs on the - coordinator to collect all the intermediate results from involved - datanodes. For details, see + Coordinator to collect all the intermediate results from involved + Datanodes. For details, see and . - In the case of reading replicated tables, coordinator can choose - any datanode to read. The most efficient way is to select one + In the case of reading replicated tables, Coordinator can choose + any Datanode to read. The most efficient way is to select one running in the same hardware or virtual machine. This is - called preferred datanode and can be - specified by a GUC local to each coordinator. + called preferred Datanode and can be + specified by a GUC local to each Coordinator. On the other hand, in the case of writing replicated tables, all - the coordinators choose the same datanode to begin with to avoid + the Coordinators choose the same Datanode to begin with to avoid update conflicts. This is called primary - datanode. + Datanode. Coordinators also take care of DDL statements. Because DDL statements handles system catalogs, which are replicated in all - the coordinators and datanodes, they are proxied to all the - coordinators and datanodes. To synchronize the catalog update in - all the nodes, the coordinator handles DDL with two-phase commit + the Coordinators and Datanodes, they are proxied to all the + Coordinators and Datanodes. To synchronize the catalog update in + all the nodes, the Coordinator handles DDL with two-phase commit protocol internally. - + Datanode &xconly; - While coordinators handle cluster-wide SQL statements, datanodes - take care of just local issues. In this sense, datanodes are + While Coordinators handle cluster-wide SQL statements, Datanodes + take care of just local issues. In this sense, Datanodes are essentially PostgreSQL servers except that transaction management information is obtained from GTM, as well as other global value. @@ -1054,39 +1054,39 @@ Coordinator And Datanode Connection - The number of connection between coordinator and data node may + The number of connection between Coordinator and Datanode may increase from time to time. This may leave unused connection and waste system resources. Repeating real connect and disconnect - requires data node backend initialization which increases latency + requires Datanode backend initialization which increases latency and also wastes system resources. - For example, as in the case of GTM, if each coordinator has one - hundred connections to applications and we have ten coordinators, - after a while, each coordinator may have connection to each data - node. It means that each coordinator backend has ten connections - to coordinators and each coordinator has one thousand (10 x 10) - connections to coordinators. + For example, as in the case of GTM, if each Coordinator has one + hundred connections to applications and we have ten Coordinators, + after a while, each Coordinator may have connection to each data + node. It means that each Coordinator backend has ten connections + to Coordinators and each Coordinator has one thousand (10 x 10) + connections to Coordinators. Because we consume much more resources for locks and other control information per backend and only a few of such connection is active at a given time, it is not a good idea to hold such - unused connection between coordinator and data node. + unused connection between Coordinator and Datanode. To improve this, Postgres-XC is equipped with connection pooler - between coordinator and data node. When a coordinator backend - requires connection to a data node, the pooler looks for + between Coordinator and Datanode. When a Coordinator backend + requires connection to a Datanode, the pooler looks for appropriate connection from the pool. If there's an available - one, the pooler assigns it to the coordinator backend. When the - connection is no longer needed, the coordinator backend returns + one, the pooler assigns it to the Coordinator backend. When the + connection is no longer needed, the Coordinator backend returns the connection to the pooler. Pooler does not disconnect the connection. It keeps the connection to the pool for later reuse, - keeping data node backend running. + keeping Datanode backend running. diff --git a/doc-xc/src/sgml/auto-explain.sgmlin b/doc-xc/src/sgml/auto-explain.sgmlin index 771e2980e4..e926a70898 100644 --- a/doc-xc/src/sgml/auto-explain.sgmlin +++ b/doc-xc/src/sgml/auto-explain.sgmlin @@ -36,10 +36,10 @@ LOAD 'auto_explain'; &xconly; - To log plans on datanodes, you must preload this module in each - datanode. This module will log local plans of each node. For - example, coordinator log will include the plan for coordinator only. - Corresponding plan in datanodes will be found in each datanode's + To log plans on Datanodes, you must preload this module in each + Datanode. This module will log local plans of each node. For + example, Coordinator log will include the plan for Coordinator only. + Corresponding plan in Datanodes will be found in each Datanode's log. diff --git a/doc-xc/src/sgml/backup.sgmlin b/doc-xc/src/sgml/backup.sgmlin index 1179ccf95c..d1c5b27052 100644 --- a/doc-xc/src/sgml/backup.sgmlin +++ b/doc-xc/src/sgml/backup.sgmlin @@ -110,7 +110,7 @@ pg_dump dbname > In Postgres-XC, pg_dump and pg_dumpall backs up all the information stored - both in coordinators and datanodes. + both in Coordinators and Datanodes. @@ -336,9 +336,9 @@ pg_restore -d dbname &xconly; - File system level backup covers only each coordinator or datanode. + File system level backup covers only each Coordinator or Datanode. To make file system level backup, you should backup each - coordinator and datanode manually. + Coordinator and Datanode manually. @@ -473,9 +473,9 @@ tar -cf backup.tar /usr/local/pgsql/data &xconly; This section describes PITR for PostgreSQL. - Because coordinator and datanode of Postgres-XC are + Because Coordinator and Datanode of Postgres-XC are essentially PostgreSQLserver, you can do - PITR for each coordinator and datanode manually. + PITR for each Coordinator and Datanode manually. @@ -570,9 +570,9 @@ tar -cf backup.tar /usr/local/pgsql/data &xconly; This section describes PITR for PostgreSQL. - Because coordinator and datanode of Postgres-XC are + Because Coordinator and Datanode of Postgres-XC are essentially PostgreSQLserver, you can - set up WAL archiving for each coordinator and datanode manually. + set up WAL archiving for each Coordinator and Datanode manually. @@ -773,10 +773,10 @@ archive_command = 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/ser &xconly; This section describes how to make a base backup of single - datanode or coordinator. Please note that you should take base - backup of all the datanodes and coordinators. Also please note + Datanode or Coordinator. Please note that you should take base + backup of all the Datanodes and Coordinators. Also please note that you don't have to take base backups at exactly the same time. - You may take base backup of each datanode or coordinator one after + You may take base backup of each Datanode or Coordinator one after another, or you may take some of them at the same time. You don't have to do it at exactly the same time. @@ -1001,10 +1001,10 @@ SELECT pg_stop_backup(); &xconly; This section describes recovering with continuous archive backup - for PostgreSQL. Because coordinator and datanode + for PostgreSQL. Because Coordinator and Datanode of Postgres-XC are essentially PostgreSQLserver, you can do - this for each coordinator and datanode manually. + this for each Coordinator and Datanode manually. @@ -1200,9 +1200,9 @@ restore_command = 'cp /mnt/server/archivedir/%f %p' &xconly; - Because coordinator and datanode of Postgres-XC are + Because Coordinator and Datanode of Postgres-XC are essentially PostgreSQLserver, you can - apply timelines for each coordinator and datanode manually. + apply timelines for each Coordinator and Datanode manually. @@ -1322,6 +1322,11 @@ tar -rf /var/lib/pgsql/backup.tar /var/lib/pgsql/archive/ Please remember to add error handling to your backup scripts. + + + + Compressed Archive Logs + If archive storage size is a concern, use pg_compresslog, , to diff --git a/doc-xc/src/sgml/catalogs.sgmlin b/doc-xc/src/sgml/catalogs.sgmlin index cccddb4ece..86d782ef39 100644 --- a/doc-xc/src/sgml/catalogs.sgmlin +++ b/doc-xc/src/sgml/catalogs.sgmlin @@ -4669,7 +4669,7 @@ ev_attr int2 - The column this rule is for (currently, always zero to + The column this rule is for (currently, always -1 to indicate the whole table) @@ -6462,7 +6462,7 @@ - pchasharigorithm + pchashalgorithm int2 diff --git a/doc-xc/src/sgml/charset.sgmlin b/doc-xc/src/sgml/charset.sgmlin index d22b2e268e..f951ca54e6 100644 --- a/doc-xc/src/sgml/charset.sgmlin +++ b/doc-xc/src/sgml/charset.sgmlin @@ -1606,17 +1606,6 @@ RESET client_encoding; systems. - - - - - - An extensive collection of documents about character sets, encodings, - and code pages. - - - - CJKV Information Processing: Chinese, Japanese, Korean & Vietnamese Computing diff --git a/doc-xc/src/sgml/client-auth.sgmlin b/doc-xc/src/sgml/client-auth.sgmlin index ba5cf45ca5..bf921d0b6c 100644 --- a/doc-xc/src/sgml/client-auth.sgmlin +++ b/doc-xc/src/sgml/client-auth.sgmlin @@ -1487,8 +1487,8 @@ omicron bryanh guest1 In the second mode, the server first binds to the LDAP directory with - a fixed user name and password, specified with ldapbinduser - and ldapbinddn, and performs a search for the user trying + a fixed user name and password, specified with ldapbinddn + and ldapbindpasswd, and performs a search for the user trying to log in to the database. If no user and password is configured, an anonymous bind will be attempted to the directory. The search will be performed over the subtree at ldapbasedn, and will try to diff --git a/doc-xc/src/sgml/config.sgmlin b/doc-xc/src/sgml/config.sgmlin index b2a624a2cb..0c5c02c7d9 100644 --- a/doc-xc/src/sgml/config.sgmlin +++ b/doc-xc/src/sgml/config.sgmlin @@ -26,8 +26,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 for coordinator and - datanodes. The subsequent sections discuss each parameter in + describe how to set configuration parameters for Coordinator and + Datanodes. The subsequent sections discuss each parameter in detail. @@ -123,9 +123,9 @@ include 'filename' until the server is restarted. - The configuration file is reread whenever the main coordinator/datanode process receives a + The configuration file is reread whenever the main Coordinator/Datanode process receives a SIGHUP signal (which is most easily sent by means - of pg_ctl reload). The main coordinator/datanode process + of pg_ctl reload). The main Coordinator/Datanode 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 @@ -423,13 +423,13 @@ SET ENABLE_SEQSCAN TO OFF; - In the case of the coordinator, this parameter determines how many - connections can each coordinator accept. + In the case of the Coordinator, this parameter determines how many + connections can each Coordinator accept. - In the case of the datanode, number of connection to each - datanode may become as large as max_connections - multiplied by the number of coordinators. + In the case of the Datanode, number of connection to each + Datanode may become as large as max_connections + multiplied by the number of Coordinators. @@ -442,7 +442,7 @@ SET ENABLE_SEQSCAN TO OFF; adjust those parameters, if necessary. - Increasing this parameter might cause coordinator or datanode + Increasing this parameter might cause Coordinator or Datanode to request more System V shared memory or semaphores than your operating system's default configuration allows. See for information on how to @@ -480,7 +480,7 @@ SET ENABLE_SEQSCAN TO OFF; Determines the number of connection slots that - are reserved for connections by coordinator or datanode + are reserved for connections by Coordinator or Datanode superusers. At most connections can ever be active simultaneously. Whenever the number of active concurrent connections is at least @@ -637,8 +637,9 @@ SET ENABLE_SEQSCAN TO OFF; an otherwise idle connection. A value of 0 uses the system default. This parameter is supported only on systems that support the TCP_KEEPIDLE or TCP_KEEPALIVE symbols, and on - Windows; on other systems, it must be zero. This parameter is ignored - for connections made via a Unix-domain socket. + Windows; on other systems, it must be zero. + In sessions connected via a Unix-domain socket, this parameter is + ignored and always reads as zero. @@ -660,8 +661,9 @@ SET ENABLE_SEQSCAN TO OFF; otherwise idle connection. A value of 0 uses the system default. This parameter is supported only on systems that support the TCP_KEEPINTVL symbol, and on Windows; on other systems, it - must be zero. This parameter is ignored for connections made via a - Unix-domain socket. + must be zero. + In sessions connected via a Unix-domain socket, this parameter is + ignored and always reads as zero. @@ -682,8 +684,9 @@ SET ENABLE_SEQSCAN TO OFF; Specifies the number of keepalive packets to send on an otherwise idle connection. A value of 0 uses the system default. This parameter is supported only on systems that support the TCP_KEEPCNT - symbol; on other systems, it must be zero. This parameter is ignored - for connections made via a Unix-domain socket. + symbol; on other systems, it must be zero. + In sessions connected via a Unix-domain socket, this parameter is + ignored and always reads as zero. @@ -1039,11 +1042,11 @@ SET ENABLE_SEQSCAN TO OFF; Even though your application does not issue PREPARE - TRANSACTION explicitly, coordinator may generate this + TRANSACTION explicitly, Coordinator may generate this command when an updating transaction involves more than one - coordinators and datanodes. + Coordinators and Datanodes. - For datanodes, you should specify this value as the same value + For Datanodes, you should specify this value as the same value as max_connections. @@ -1237,8 +1240,8 @@ SET ENABLE_SEQSCAN TO OFF; Every Postgres-XC-supported library has a magic - block that is checked to guarantee compatibility. - For this reason, non-Postgres-XC libraries cannot be + block that is checked to guarantee compatibility. + For this reason, non-Postgres-XC libraries cannot be loaded in this way. @@ -1587,10 +1590,10 @@ SET ENABLE_SEQSCAN TO OFF; + fsync (boolean) fsync configuration parameter - fsync (boolean) @@ -1749,10 +1752,10 @@ SET ENABLE_SEQSCAN TO OFF; + full_page_writes (boolean) full_page_writes configuration parameter - full_page_writes (boolean) @@ -2084,8 +2087,8 @@ SET ENABLE_SEQSCAN TO OFF; Streaming replication has not been tested with Postgres-XC yet. Because this version of streaming replication is based upon asynchronous log shipping, - there could be a risk to have the status of coordinators and - datanodes inconsistent. The development team leaves the test + there could be a risk to have the status of Coordinators and + Datanodes inconsistent. The development team leaves the test and the use of this entirely to users. @@ -2105,12 +2108,16 @@ SET ENABLE_SEQSCAN TO OFF; - Specifies the maximum number of concurrent connections from standby - servers or streaming base backup clients (i.e., the maximum number of - simultaneously running WAL sender - processes). The default is zero. This parameter can only be set at - server start. wal_level must be set to archive - or hot_standby to allow connections from standby servers. + Specifies the maximum number of concurrent connections from + standby servers or streaming base backup clients (i.e., the + maximum number of simultaneously running WAL sender + processes). The default is zero, meaning replication is + disabled. WAL sender processes count towards the total number + of connections, so the parameter cannot be set higher than + . This parameter can only + be set at server start. wal_level must be set + to archive or hot_standby to allow + connections from standby servers. @@ -2604,6 +2611,55 @@ SET ENABLE_SEQSCAN TO OFF; + + + enable_fast_query_shipping (boolean) + + enable_fast_query_shipping configuration parameter + + +&xconly; + + Enables or disables the query planner's use of fast query shipping + steps. When disabled, queries that could be completely shipped to remote + nodes are planned through the standard planner instead. The default + is on. + + + + + + enable_remotejoin (boolean) + + enable_remotejoin configuration parameter + + +&xconly; + + Enables or disables the query planner's use of remote join shippability + steps. When disabled, joins that could be shipped to remote nodes are + evaluated on local node instead. The default is on. + + + + + + enable_remotegroup (boolean) + + enable_remotegroup configuration parameter + + +&xconly; + + Enables or disables the query planner's use of remote GROUP + BY shippability steps. When disabled, GROUP BY clauses + that could be shipped to remote nodes are evaluated on local node + instead. The default is on. + + + + + @@ -2788,6 +2844,7 @@ SET ENABLE_SEQSCAN TO OFF; + geqo (boolean) genetic query optimization @@ -2798,7 +2855,6 @@ SET ENABLE_SEQSCAN TO OFF; geqo configuration parameter - geqo (boolean) Enables or disables genetic query optimization. @@ -4852,15 +4908,17 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; This parameter is normally on. When set to off, it disables validation of the function body string during . Disabling validation is - occasionally useful to avoid problems such as forward references - when restoring function definitions from a dump. + linkend="sql-createfunction">. Disabling validation avoids side + effects of the validation process and avoids false positives due + to problems such as forward references. Set this parameter + to off before loading functions on behalf of other + users; pg_dump does so automatically. - In Postgres-XC setting check_function_bodies - to off is not recomended. If SQL functions are created after setting - check_function_bodies to off, the behaviour of the + In Postgres-XC setting check_function_bodies + to off is not recomended. If SQL functions are created after setting + check_function_bodies to off, the behaviour of the function when executed is un-defined. @@ -4871,6 +4929,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; + default_transaction_isolation (enum) transaction isolation level setting default @@ -4878,7 +4937,6 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; default_transaction_isolation configuration parameter - default_transaction_isolation (enum) Each SQL transaction has an isolation level, which can be @@ -4897,6 +4955,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; + default_transaction_read_only (boolean) read-only transaction setting default @@ -4904,8 +4963,6 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; default_transaction_read_only configuration parameter - - default_transaction_read_only (boolean) A read-only SQL transaction cannot alter non-temporary tables. @@ -4920,6 +4977,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; + default_transaction_deferrable (boolean) deferrable transaction setting default @@ -4927,8 +4985,6 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; default_transaction_deferrable configuration parameter - - default_transaction_deferrable (boolean) When running at the serializable isolation level, @@ -5222,6 +5278,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; + extra_float_digits (integer) significant digits @@ -5232,8 +5289,6 @@ SET XML OPTION { DOCUMENT | CONTENT }; extra_float_digits configuration parameter - - extra_float_digits (integer) This parameter adjusts the number of digits displayed for @@ -5244,6 +5299,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; partially-significant digits; this is especially useful for dumping float data that needs to be restored exactly. Or it can be set negative to suppress unwanted digits. + See also . @@ -5521,6 +5577,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' + deadlock_timeout (integer) deadlock timeout during @@ -5532,8 +5589,6 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' deadlock_timeout configuration parameter - - deadlock_timeout (integer) This is the amount of time, in milliseconds, to wait on a lock @@ -5544,7 +5599,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' just wait on the lock for a while before checking for a deadlock. Increasing this value reduces the amount of time wasted in needless deadlock checks, but slows down reporting of - real deadlock errors. The default is one second (1s), + real deadlock errors. The default is one second nheritance(1s), which is probably about the smallest value you would want in practice. On a heavily loaded server you might want to raise it. Ideally the setting should exceed your typical transaction time, @@ -5563,7 +5618,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' &xconly; Postgres-XC does not detect global deadlocks - where multiple node (coordinators and/or datanodes) are + where multiple node (Coordinators and/or Datanodes) are involved. @@ -5824,7 +5879,23 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' inheritance - This controls the inheritance semantics. If turned off, + This setting controls whether undecorated table references are + considered to include inheritance child tables. The default is + on, which means child tables are included (thus, + a * suffix is assumed by default). If turned + off, child tables are not included (thus, an + ONLY prefix is assumed). The SQL standard + requires child tables to be included, so the off setting + is not spec-compliant, but it is provided for compatibility with + PostgreSQL releases prior to 7.1. + See for more information. + + + + Turning sql_inheritance off is deprecated, because that + behavior has been found to be error-prone as well as contrary to SQL + standard. Discussions of inheritance behavior elsewhere in this + manual generally assume that it is on. subtables are not accessed by various commands by default; basically an implied ONLY key word. This was added for compatibility with releases prior to 7.1. See @@ -6626,7 +6697,7 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1) &xconly; Postgres-XC does not detect global deadlocks - where multiple node (coordinators and/or datanodes) are + where multiple node (Coordinators and/or Datanodes) are involved. @@ -6833,9 +6904,9 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1) &xconly; Because Postgres-XC distribute data into multiple - datanodes and multiple coordinators can accept transactions in - parallel, specific coordinator must know what coordinators and - datanodes to connect. Coordinator and datanode also must know + Datanodes and multiple Coordinators can accept transactions in + parallel, specific Coordinator must know what Coordinators and + Datanodes to connect. Coordinator and Datanode also must know where they can request transaction information. The following describes these additional GUC parameters. @@ -6849,10 +6920,10 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1) - Specify the maximum connection pool of the coordinator to datanodes. - Because each transaction can be involved by all the datanodes, - this parameter should at least be max_connections - multiplied by number of datanodes. + Specify the maximum connection pool of the Coordinator to Datanodes. + Because each transaction can be involved by all the Datanodes, + this parameter should at least be max_connections + multiplied by number of Datanodes. @@ -6864,7 +6935,7 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1) - Minumum number of the connection from the coordinator to datanodes. + Minumum number of the connection from the Coordinator to Datanodes. @@ -6963,29 +7034,24 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1) - Specify to enter into maintenance mode. Turning this on will - change behavior of several statements. Each statement - behavior may not be incompatible in future releases. Users + Specify to enter into maintenance mode. Turning this parameter to on will + change behavior of several statements. Each statement + behavior may not be compatible in future releases, so users must be extremely careful when they attempt to set this - value on. + value to on. So far, behavior of and statements are affected by this parameter. This parameter can only be set by superuser - with SET command. Otherwise, the setting + with SET command. Otherwise, the setting will be ignored. - Developers should notice that this parameter is shared in all - the connections of the session, begween the originating - coordinator and target nodes and affects the behavior of - following statements of the session. - - NITICE - - This parameter is for housekeeping utilities. Behavior when this parameter is set to ON may not be upward compatibile from version to version. + As a session parameter, this parameter is shared among all + the connections of the session. It affects originating Coordinator as + well as remote nodes involved in session. diff --git a/doc-xc/src/sgml/contrib.sgmlin b/doc-xc/src/sgml/contrib.sgmlin index bfd6418d84..8cf98b8bf4 100644 --- a/doc-xc/src/sgml/contrib.sgmlin +++ b/doc-xc/src/sgml/contrib.sgmlin @@ -125,6 +125,10 @@ CREATE EXTENSION module_name FROM unpackaged; &pgtestfsync; &pgtrgm; &pgupgrade; + + &pgxcclean; + &pgxcddl; + &seg; &sepgsql; &contrib-spi; diff --git a/doc-xc/src/sgml/datatype.sgmlin b/doc-xc/src/sgml/datatype.sgmlin index cfe4332da3..12358cb6d4 100644 --- a/doc-xc/src/sgml/datatype.sgmlin +++ b/doc-xc/src/sgml/datatype.sgmlin @@ -696,6 +696,17 @@ NUMERIC from zero will cause an underflow error. + + + The setting controls the + number of extra significant digits included when a floating point + value is converted to text for output. With the default value of + 0, the output is the same on every platform + supported by PostgreSQL. Increasing it will produce output that + more accurately represents the stored value, but may be unportable. + + + not a number double precision @@ -841,6 +852,20 @@ ALTER SEQUENCE tablename_ + + + Because smallserial, serial and + bigserial are implemented using sequences, there may + be "holes" or gaps in the sequence of values which appears in the + column, even if no rows are ever deleted. A value allocated + from the sequence is still "used up" even if a row containing that + value is never successfully inserted into the table column. This + may happen, for example, if the inserting transaction rolls back. + See nextval() in + for details. + + + Prior to PostgreSQL 7.3, serial @@ -4694,7 +4719,7 @@ SELECT * FROM pg_attribute Please note that Postgres-XC enforces OID identity only locally. - Different object at different coordinator or datanode may be assigned the same + Different object at different Coordinator or Datanode may be assigned the same OID value. diff --git a/doc-xc/src/sgml/ddl.sgmlin b/doc-xc/src/sgml/ddl.sgmlin index 8c50ac13d8..a7372b7e57 100644 --- a/doc-xc/src/sgml/ddl.sgmlin +++ b/doc-xc/src/sgml/ddl.sgmlin @@ -152,9 +152,9 @@ CREATE TABLE products ( In Postgres-XC, each table can be distributed or replicated - among datanodes. By distributing tables, each query, if the target is + among Datanodes. By distributing tables, each query, if the target is determined from the incoming statement, can be handled by single or small - number of datanodes and more transactions can be handled in parallel. + number of Datanodes and more transactions can be handled in parallel. If you replicate tables, and if they're more read than written, transactions reading such tables can be handled in parallel. @@ -167,7 +167,7 @@ CREATE TABLE products ( column. By default, distribution column is the first column you specified in CREATE TABLE statement and the column value is used to - generate hash value as an index for datanode which accommodate the + generate hash value as an index for Datanode which accommodate the row. You can choose another distribution method such as MODULO and ROUND ROBIN. @@ -181,26 +181,26 @@ CREATE TABLE products ( ) DISTRIBUTE BY HASH(product_no); In this case, the column product_no is chosen as the distribute column and - the target datanode of each row is determined based upon the hash value of the column. - You can use MODULO to specify modulo to test and determine the target datanode. - You can also specify ROUND ROBIN to determine the datanode by the order each + the target Datanode of each row is determined based upon the hash value of the column. + You can use MODULO to specify modulo to test and determine the target Datanode. + You can also specify ROUND ROBIN to determine the Datanode by the order each row is inserted. - Please note that with HASH and MODULO, coordinator have a chance to determine the - location of target row from incoming statement. This reduces the number of involved datanodes + Please note that with HASH and MODULO, Coordinator have a chance to determine the + location of target row from incoming statement. This reduces the number of involved Datanodes and can increase the number of transaction handled in parallel. On the other hand, if exact value cannot be obtained from incoming statement, for example, in the case of floating point number, Postgres-XC may fail to find precise - target datanode and it is not recommended to use such column as a distribution column. + target Datanode and it is not recommended to use such column as a distribution column. - To replicate a table into all the datanodes, specify DISTRIBUTE BY REPLICATION as + To replicate a table into all the Datanodes, specify DISTRIBUTE BY REPLICATION as follows: CREATE TABLE products ( @@ -826,7 +826,7 @@ CREATE TABLE orders ( Please note that column with REFERENCE must be the distribution column. In this case, we cannot add PRIMARY KEY to order_id because PRIMARY KEY must be the distribution column as well. - This limitation is introduced because constraints are enforced only locally in each datanode, + This limitation is introduced because constraints are enforced only locally in each Datanode, which will be resolved in the future. @@ -1117,6 +1117,7 @@ CREATE TABLE circles ( Adding an exclusion constraint will automatically create an index of the type specified in the constraint declaration. +$xc-constraint; @@ -1160,7 +1161,7 @@ CREATE TABLE circles ( Please note that Postgres-XC does not enforce OID integrity among the cluster. OID is assigned locally in - each coordinator and datanode. You can use this in expressions + each Coordinator and Datanode. You can use this in expressions but you should not expect OID value is the same throughout the XC cluster. @@ -1189,7 +1190,7 @@ CREATE TABLE circles ( Please note that Postgres-XC does not enforce OID integrity among the cluster. OID is assigned locally in - each coordinator and datanode. You can use this in expressions + each Coordinator and Datanode. You can use this in expressions but you should not expect OID value is the same throughout the XC cluster. @@ -1277,11 +1278,11 @@ CREATE TABLE circles ( &xconly; - In Postgres-XC, ctid is local to coordinators - and datanodes. It is not a good practice to use this value in + In Postgres-XC, ctid is local to Coordinators + and Datanodes. It is not a good practice to use this value in SQL statements. In very restricted situation, for example, when - you query the database specifying the target coordinator or - datanode using EXECUTE DIRECT statement, you may use + you query the database specifying the target Coordinator or + Datanode using EXECUTE DIRECT statement, you may use this value. @@ -1343,7 +1344,7 @@ CREATE TABLE circles ( Again, Postgres-XC does not enforce OID integrity among the cluster. OID is assigned locally in - each coordinator and datanode. You can use this in expressions + each Coordinator and Datanode. You can use this in expressions but you should not expect OID value is the same throughout the XC cluster. @@ -1535,6 +1536,7 @@ ALTER TABLE products ALTER COLUMN product_no SET NOT NULL; Please remember that distribution column has to be included in UNIQUE and REFERENCE constraints. +&xc-constraint; @@ -2365,6 +2367,23 @@ SELECT name, altitude ONLY keyword. + + You can also write the table name with a trailing * + to explicitly specify that descendant tables are included: + + +SELECT name, altitude + FROM cities* + WHERE altitude > 500; + + + Writing * is not necessary, since this behavior is + the default (unless you have changed the setting of the + configuration option). + However writing * might be useful to emphasize that + additional tables will be searched. + + In some cases you might wish to know which table a particular row originated from. There is a system column called @@ -2522,15 +2541,15 @@ VALUES ('New York', NULL, NULL, 'NY'); data modification, or schema modification (e.g., SELECT, UPDATE, DELETE, most variants of ALTER TABLE, but - not INSERT and ALTER TABLE ... + not INSERT or ALTER TABLE ... RENAME) typically default to including child tables and support the ONLY notation to exclude them. Commands that do database maintenance and tuning (e.g., REINDEX, VACUUM) - typically only work on individual, physical tables and do no + typically only work on individual, physical tables and do not support recursing over inheritance hierarchies. The respective - behavior of each individual command is documented in the reference - part (). + behavior of each individual command is documented in its reference + page (). @@ -2580,18 +2599,6 @@ VALUES ('New York', NULL, NULL, 'NY'); inheritance is useful for your application. - - Deprecated - - In releases of PostgreSQL prior to 7.1, the - default behavior was not to include child tables in queries. This was - found to be error prone and also in violation of the SQL - standard. You can get the pre-7.1 behavior by turning off the - configuration - option. - - - diff --git a/doc-xc/src/sgml/docguide.sgmlin b/doc-xc/src/sgml/docguide.sgmlin index e7a9de5ad4..369b7a62e1 100644 --- a/doc-xc/src/sgml/docguide.sgmlin +++ b/doc-xc/src/sgml/docguide.sgmlin @@ -140,7 +140,7 @@ - DocBook DSSSL Stylesheets + DocBook DSSSL Stylesheets These contain the processing instructions for converting the @@ -151,7 +151,7 @@ - DocBook XSL Stylesheets + DocBook XSL Stylesheets This is another stylesheet for converting DocBook to other @@ -307,8 +307,9 @@ It's possible that the ports do not update the main catalog file - in /usr/local/share/sgml/catalog.ports or order - isn't proper . Be sure to have the following lines in beginning of file: + in /usr/local/share/sgml/catalog.ports or that the + order isn't proper. Be sure to have the following lines in the beginning + of the file: CATALOG "openjade/catalog" CATALOG "iso8879/catalog" @@ -1040,26 +1041,19 @@ save_size.pdfjadetex = 15000 &common; - Several files are distributed as plain text, for reading during - the installation process. The INSTALL file + The installation instructions are also distributed as plain text, + in case they are needed in a situation where better reading tools + are not available. The INSTALL file corresponds to , with some minor changes to account for the different context. To recreate the file, change to the directory doc/src/sgml - and enter gmake INSTALL. This will create - a file INSTALL.html that can be saved as text - with Netscape Navigator and put into - the place of the existing file. - Netscape seems to offer the best - quality for HTML to text conversions (over - lynx and - w3m). + and enter gmake INSTALL. - The file HISTORY can be created similarly, - using the command gmake HISTORY. For the - file src/test/regress/README the command is - gmake regress_README. + In the past, the release notes and regression testing instructions + were also distributed as plain text, but this practice has been + discontinued. diff --git a/doc-xc/src/sgml/ecpg.sgmlin b/doc-xc/src/sgml/ecpg.sgmlin index 9004dbab23..af4205769f 100644 --- a/doc-xc/src/sgml/ecpg.sgmlin +++ b/doc-xc/src/sgml/ecpg.sgmlin @@ -774,11 +774,6 @@ do normal clauses. - - Both of these methods only allow retrieving one row at a time. If - you need to process result sets that potentially contain more than - one row, you need to use a cursor, as shown in the second example. - @@ -956,20 +951,6 @@ struct varchar_var { int len; char arr[180]; } var; is used. - - Two or more VARCHAR host variables cannot be defined - in single line statement. The following code will confuse - the ecpg preprocessor: - -VARCHAR v1[128], v2[128]; /* WRONG */ - - Two variables should be defined in separate statements like this: - -VARCHAR v1[128]; -VARCHAR v2[128]; - - - VARCHAR can be written in upper or lower case, but not in mixed case. @@ -7747,9 +7728,9 @@ VAR varname IS ctype Description - The VAR command defines a host variable. It - is equivalent to an ordinary C variable definition inside a - declare section. + The VAR command assigns a new C data type + to a host variable. The host variable must be previously + declared in a declare section. @@ -7781,8 +7762,10 @@ VAR varname IS ctype Examples -EXEC SQL VAR vc IS VARCHAR[10]; -EXEC SQL VAR boolvar IS bool; +Exec sql begin declare section; +short a; +exec sql end declare section; +EXEC SQL VAR a IS int; diff --git a/doc-xc/src/sgml/extend.sgmlin b/doc-xc/src/sgml/extend.sgmlin index 6b8d794481..50de6675c2 100644 --- a/doc-xc/src/sgml/extend.sgmlin +++ b/doc-xc/src/sgml/extend.sgmlin @@ -418,6 +418,12 @@ extension.) Also notice that while a table can be a member of an extension, its subsidiary objects such as indexes are not directly considered members of the extension. + Another important point is that schemas can belong to extensions, but not + vice versa: an extension as such has an unqualified name and does not + exist within any schema. The extension's member objects, + however, will belong to schemas whenever appropriate for their object + types. It may or may not be appropriate for an extension to own the + schema(s) its member objects are within. @@ -713,6 +719,10 @@ SET LOCAL search_path TO @extschema@; and reload. + + pg_extension_config_dump + + To solve this problem, an extension's script file can mark a table it has created as a configuration table, which will cause @@ -751,6 +761,14 @@ SELECT pg_catalog.pg_extension_config_dump('my_config', 'WHERE NOT standard_entr be modified by users, can be handled by creating triggers on the configuration table to ensure that modified rows are marked correctly. + + + You can alter the filter condition associated with a configuration table + by calling pg_extension_config_dump again. (This would + typically be useful in an extension update script.) The only way to mark + a table as no longer a configuration table is to dissociate it from the + extension with ALTER EXTENSION ... DROP TABLE. + diff --git a/doc-xc/src/sgml/external-projects.sgmlin b/doc-xc/src/sgml/external-projects.sgmlin index b707f54470..bebee99b16 100644 --- a/doc-xc/src/sgml/external-projects.sgmlin +++ b/doc-xc/src/sgml/external-projects.sgmlin @@ -20,19 +20,6 @@ efficiently developed separately from the core project. - - To help our community with the development of their external projects, we - have created PgFoundry, a - website that provides hosting for PostgreSQL-related - projects that are maintained outside the core PostgreSQL - distribution. PgFoundry is built using the GForge software project and is - similar to SourceForge.net in its - feature set, providing mailing lists, forums, bug tracking, SCM, and web - hosting. If you have a PostgreSQL-related open source - project that you would like to have hosted at PgFoundry, please feel free - to create a new project there. - - Client Interfaces @@ -138,7 +125,7 @@ psycopg Python DB API 2.0-compliant - http://www.initd.org/ + diff --git a/doc-xc/src/sgml/filelist.sgmlin b/doc-xc/src/sgml/filelist.sgmlin index 6b27242e56..5ed90720a2 100644 --- a/doc-xc/src/sgml/filelist.sgmlin +++ b/doc-xc/src/sgml/filelist.sgmlin @@ -11,6 +11,7 @@ + @@ -137,6 +138,8 @@ + + @@ -159,6 +162,10 @@ + + + + @@ -168,6 +175,7 @@ + diff --git a/doc-xc/src/sgml/func.sgmlin b/doc-xc/src/sgml/func.sgmlin index ee519daf47..65565df326 100644 --- a/doc-xc/src/sgml/func.sgmlin +++ b/doc-xc/src/sgml/func.sgmlin @@ -1506,8 +1506,8 @@ bytea - Decode binary data from string previously - encoded with encode. Parameter type is same as in encode. + Decode binary data from textual representation in string. + Options for format are same as in encode. decode('MTIzAAE=', 'base64') 123\000\001 @@ -1523,10 +1523,11 @@ text - Encode binary data to different representation. Supported - types are: base64, hex, escape. - Escape merely outputs null bytes as \000 and - doubles backslashes. + Encode binary data into a textual representation. Supported + formats are: base64, hex, escape. + escape converts zero bytes and high-bit-set bytes to + octal sequences (\nnn) and + doubles backslashes. encode(E'123\\000\\001', 'base64') MTIzAAE= @@ -2820,7 +2821,7 @@ - ut8_to_euc_jis_2004 + utf8_to_euc_jis_2004 UTF8 EUC_JIS_2004 @@ -2832,7 +2833,7 @@ - ut8_to_shift_jis_2004 + utf8_to_shift_jis_2004 UTF8 SHIFT_JIS_2004 @@ -3037,12 +3038,12 @@ decode decode(string text, - type text) + format text) bytea - Decode binary string from string previously - encoded with encode. Parameter type is same as in encode. + Decode binary data from textual representation in string. + Options for format are same as in encode. decode(E'123\\000456', 'escape') 123\000456 @@ -3053,13 +3054,16 @@ encode - encode(string bytea, - type text) + encode(data bytea, + format text) text - Encode binary string to ASCII-only representation. Supported - types are: base64, hex, escape. + Encode binary data into a textual representation. Supported + formats are: base64, hex, escape. + escape converts zero bytes and high-bit-set bytes to + octal sequences (\nnn) and + doubles backslashes. encode(E'123\\000456'::bytea, 'escape') 123\000456 @@ -7008,16 +7012,19 @@ SELECT EXTRACT(SECOND FROM TIME '17:12:28.5'); The number of the week of the year that the day is in. By definition - (ISO 8601), the first week of a year - contains January 4 of that year. (The ISO-8601 - week starts on Monday.) In other words, the first Thursday of - a year is in week 1 of that year. + (ISO 8601), 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. - Because of this, it is possible for early January dates to be part of the - 52nd or 53rd week of the previous 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 2005. + 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 + 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 + 2005, while 2012-12-31 is part of the first week of 2013. + It's recommended to use the isoyear field together with + week to get consistent results. @@ -7963,7 +7970,7 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple path(polygon) - point + path polygon to path path(polygon '((0,0),(1,1),(2,0))') @@ -9746,17 +9753,11 @@ table2-mapping &common; - - This section describes PostgreSQL's - - - This section describes Postgres-XC's - - functions for operating on sequence objects. - Sequence objects (also called sequence generators or just - sequences) are special single-row tables created with sequence + objects, also called sequence generators or just sequences. + Sequence objects are special single-row tables created with . - A sequence object is usually used to generate unique identifiers + Sequence objects are commonly used to generate unique identifiers for rows of a table. The sequence functions, listed in , provide simple, multiuser-safe methods for obtaining successive sequence values from sequence @@ -9876,6 +9877,27 @@ nextval('foo'::text) foo is looked up at execute nextval concurrently, each will safely receive a distinct sequence value. + + + If a sequence object has been created with default parameters, + successive nextval calls will return successive + values beginning with 1. Other behaviors can be obtained by using + special parameters in the command; + see its command reference page for more information. + + + + + To avoid blocking concurrent transactions that obtain numbers from the + same sequence, a nextval operation is never + rolled back; that is, once a value has been fetched it is considered + used, even if the transaction that did the + nextval later aborts. This means that aborted + transactions might leave unused holes in the sequence + of assigned values. + + + @@ -9939,31 +9961,18 @@ SELECT setval('foo', 42, false); Next nextval wi The result returned by setval is just the value of its second argument. + + + Because sequences are non-transactional, changes made by + setval are not undone if the transaction rolls + back. + + - - If a sequence object has been created with default parameters, - successive nextval calls will return successive values - beginning with 1. Other behaviors can be obtained by using - special parameters in the command; - see its command reference page for more information. - - - - - To avoid blocking concurrent transactions that obtain numbers from the - same sequence, a nextval operation is never rolled back; - that is, once a value has been fetched it is considered used, even if the - transaction that did the nextval later aborts. This means - that aborted transactions might leave unused holes in the - sequence of assigned values. setval operations are never - rolled back, either. - - - @@ -10106,6 +10115,16 @@ SELECT a, 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. + + @@ -11320,9 +11339,6 @@ SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab; - - - Window Functions @@ -11609,8 +11625,6 @@ SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab; - - Subquery Expressions @@ -12550,12 +12564,7 @@ postgres=# SELECT * FROM unnest2(ARRAY[[1,2],[3,4]]); inet_client_addr() inet - address of the remote connection - - - address of the remote connection. Now testing (Postgres-XC> - @@ -12567,12 +12576,7 @@ postgres=# SELECT * FROM unnest2(ARRAY[[1,2],[3,4]]); inet_server_addr() inet - address of the local connection - - - address of the local connection. Now testing (Postgres-XC> - @@ -12599,23 +12603,13 @@ postgres=# SELECT * FROM unnest2(ARRAY[[1,2],[3,4]]); pg_is_other_temp_schema(oid) boolean - is schema another session's temporary schema? - - - is schema another session's temporary schema? Now testing (Postgres-XC) - pg_listening_channels() setof text - channel names that the session is currently listening on - - - channel names that the session is currently listening on. Now testing (Postgres-XC) - @@ -12645,13 +12639,16 @@ postgres=# SELECT * FROM unnest2(ARRAY[[1,2],[3,4]]); version() text - PostgreSQL version information - + + + + pgxc_version() + text Postgres-XC version information - + @@ -12930,12 +12927,7 @@ SET search_path TO schema , schema, .. privilege) boolean - does current user have privilege for foreign-data wrapper - - - does current user have privilege for foreign-data wrapper. Now testing (Postgres-XC) - has_function_privilege(user, @@ -12943,12 +12935,7 @@ SET search_path TO schema , schema, .. privilege) boolean - does user have privilege for function - - - does user have privilege for function. Now testing (Postgres-XC). - has_function_privilege(function, @@ -13008,12 +12995,7 @@ SET search_path TO schema , schema, .. privilege) boolean - does user have privilege for foreign server - - - does user have privilege for foreign server. Now testing (Postgres-XC). - has_server_privilege(server, @@ -13043,12 +13025,7 @@ SET search_path TO schema , schema, .. privilege) boolean - does user have privilege for tablespace - - - does user have privilege for tablespace. Now testing (Postgres-XC). - has_tablespace_privilege(tablespace, @@ -13428,8 +13405,8 @@ SELECT pg_type_is_visible('myschema.widget'::regtype); &xconly; - Because value of OID is enforced unique only in each coordinator - or datanode in Postgres-XC, you should use these + Because value of OID is enforced unique only in each Coordinator + or Datanode in Postgres-XC, you should use these functions locally, typically through EXECUTE DIRECT statement. @@ -13544,23 +13521,13 @@ SELECT pg_type_is_visible('myschema.widget'::regtype); pg_get_expr(pg_node_tree, relation_oid) text decompile internal form of an expression, assuming that any Vars - in it refer to the relation indicated by the second parameter - - - in it refer to the relation indicated by the second parameter. Testing now (Postgres-XC) - pg_get_expr(pg_node_tree, relation_oid, pretty_bool) text decompile internal form of an expression, assuming that any Vars - in it refer to the relation indicated by the second parameter - - - in it refer to the relation indicated by the second parameter. Testing now (Postgres-XC) - pg_get_functiondef(func_oid) @@ -13602,22 +13569,12 @@ SELECT pg_type_is_visible('myschema.widget'::regtype); pg_get_ruledef(rule_oid) text - - get CREATE RULE command for rule - - - get CREATE RULE command for rule. Testing now (Postgres-XC) - + get CREATE RULE command for rule. pg_get_ruledef(rule_oid, pretty_bool) text - get CREATE RULE command for rule - - - get CREATE RULE command for rule. Testing now (Postgres-XC) - pg_get_serial_sequence(table_name, column_name) @@ -13668,12 +13625,7 @@ SELECT pg_type_is_visible('myschema.widget'::regtype); pg_tablespace_databases(tablespace_oid) setof oid - get the set of database OIDs that have objects in the tablespace - - - get the set of database OIDs that have objects in the tablespace. Testing now (Postgres-XC) - pg_typeof(any) @@ -13813,9 +13765,9 @@ SELECT typlen FROM pg_type WHERE oid = pg_typeof(33); &xconly; - Please note that OID is valid locally in each coordinator and - datanode. You should use specific OID value in statements - targetted to specific coordinator or datanode by EXECUTE + Please note that OID is valid locally in each Coordinator and + Datanode. You should use specific OID value in statements + targetted to specific Coordinator or Datanode by EXECUTE DIRECT statement. @@ -13861,32 +13813,17 @@ SELECT typlen FROM pg_type WHERE oid = pg_typeof(33); obj_description(object_oid, catalog_name) text - get comment for a database object - - - get comment for a database object. Testing now (Postgres-XC) - obj_description(object_oid) text - get comment for a database object (deprecated) - - - get comment for a database object (deprecated). Testing now (Postgres-XC) - shobj_description(object_oid, catalog_name) text - get comment for a shared database object - - - get comment for a shared database object. Testing now (Postgres-XC) - @@ -13921,9 +13858,9 @@ SELECT typlen FROM pg_type WHERE oid = pg_typeof(33); &xconly; - In Postgres-XC, OID is maitain locally in each coordinator and datanode. + In Postgres-XC, OID is maitain locally in each Coordinator and Datanode. If you specify specific OID value, you should do it in SQL stataements targetted to specif - coordinator or datanode by EXECUTE DIRECT statement. + Coordinator or Datanode by EXECUTE DIRECT statement. @@ -14274,7 +14211,7 @@ SELECT set_config('log_statement_stats', 'off', false); &xconly; Please note that these functions works just locally. To issue - these functions to another coordinators or datanodes, you should + these functions to another Coordinators or Datanodes, you should issue these functions through EXECUTE DIRECT statement. @@ -14479,7 +14416,7 @@ postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup()); &xconly; Please note that these functions works just locally. To issue - these functions to another coordinators or datanodes, you should + these functions to another Coordinators or Datanodes, you should issue these functions through EXECUTE DIRECT statement. @@ -14624,7 +14561,7 @@ postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup()); &xconly; Please note that these functions works just locally. To issue - these functions to another coordinators or datanodes, you should + these functions to another Coordinators or Datanodes, you should issue these functions through EXECUTE DIRECT statement. @@ -14753,12 +14690,7 @@ postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup()); pg_tablespace_size(oid) bigint - Disk space used by the tablespace with the specified OID - - - Disk space used by the tablespace with the specified OID. (Postgres-XC: Not supported yet) - @@ -14850,13 +14782,13 @@ postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup()); The object size functions pg_database_size, pg_indexes_size, pg_relation_size, pg_table_size, and pg_total_relation_size return the cumulative size - from all the data nodes. For e.g., pg_relation_size returns the sum of disk - space used up by the specified fork at all the data nodes where the table is + from all the Datanodes. For e.g., pg_relation_size returns the sum of disk + space used up by the specified fork at all the Datanodes where the table is distributed or replicated. If the table is replicated on 3 tables, the size will be 3 times that of individual nodes. If you need to retrieve the local - results from a particular coordinator or data node, you should issue these + results from a particular Coordinator or Datanode, you should issue these function calls explicitly through EXECUTE DIRECT statement. All other - system functions run locally at the coordinator, unless explicitly specified + system functions run locally at the Coordinator, unless explicitly specified otherwise in this document. @@ -14927,7 +14859,7 @@ postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup()); &xconly; Please note that these functions works just locally. To issue - these functions to another coordinators or datanodes, you should + these functions to another Coordinators or Datanodes, you should issue these functions through EXECUTE DIRECT statement. @@ -15140,7 +15072,7 @@ SELECT (pg_stat_file('filename')).modification; pg_advisory_xact_lock_shared(key1 int, key2 int) void - Obtain shared advisory lock for the current transaction + Obtain shared transaction level advisory lock @@ -15209,11 +15141,10 @@ SELECT (pg_stat_file('filename')).modification; pg_advisory_lock locks an application-defined resource, which can be identified either by a single 64-bit key value or two 32-bit key values (note that these two key spaces do not overlap). - The key type is specified in pg_locks.objid. If - another session already holds a lock on the same resource, the - function will wait until the resource becomes available. The lock + If another session already holds a lock on the same resource identifier, + this function will wait until the resource becomes available. The lock is exclusive. Multiple lock requests stack, so that if the same resource - is locked three times it must be also unlocked three times to be + is locked three times it must then be unlocked three times to be released for other sessions' use. @@ -15318,9 +15249,9 @@ SELECT (pg_stat_file('filename')).modification; &xconly; The advisory lock functions are aware of the Postgres XC cluster. Hence, - if you use a function like pg_advisory_lock() from a particular coordinator, + if you use a function like pg_advisory_lock() from a particular Coordinator, the resource will be locked across the complete cluster, so another - application calling the same function from a different coordinator will see + application calling the same function from a different Coordinator will see this lock, and will wait on the resource until the lock is released. This applies to both transaction and session level advisory locks. diff --git a/doc-xc/src/sgml/generate_history.pl b/doc-xc/src/sgml/generate_history.pl deleted file mode 100644 index a6c0bd77c2..0000000000 --- a/doc-xc/src/sgml/generate_history.pl +++ /dev/null @@ -1,58 +0,0 @@ -#! /usr/bin/perl -w - -# generate_history.pl -- flatten release notes for use as HISTORY file -# -# Usage: generate_history.pl srcdir release.sgml >output.sgml -# -# The main point of this script is to strip out references, which -# generally point into the rest of the documentation and so can't be used -# in a standalone build of the release notes. To make sure this is done -# everywhere, we have to fold in the sub-files of the release notes. -# -# doc/src/sgml/generate_history.pl - -use strict; - -my $srcdir = shift; -die "$0: missing required argument: srcdir\n" if !defined($srcdir); -my $infile = shift; -die "$0: missing required argument: inputfile\n" if !defined($infile); - -# Emit DOCTYPE header so that the output is a self-contained SGML document -print "\n"; - -process_file($infile); - -exit 0; - -sub process_file { - my $filename = shift; - - local *FILE; # need a local filehandle so we can recurse - - my $f = $srcdir . '/' . $filename; - open(FILE, $f) || die "could not read $f: $!\n"; - - while () { - # Recursively expand sub-files of the release notes - if (m/^&(release-.*);$/) { - process_file($1 . ".sgml"); - next; - } - - # Remove tags, which might span multiple lines - while (m/]*>//) { - next; - } - # incomplete tag, so slurp another line - $_ .= ; - } - - # Remove too - s|||g; - - print; - } - close(FILE); -} diff --git a/doc-xc/src/sgml/high-availability.sgmlin b/doc-xc/src/sgml/high-availability.sgmlin index 5b8b60aa90..62cc3f4406 100644 --- a/doc-xc/src/sgml/high-availability.sgmlin +++ b/doc-xc/src/sgml/high-availability.sgmlin @@ -748,13 +748,14 @@ archive_cleanup_command = 'pg_archivecleanup /path/to/archive %r' - Streaming replication is asynchronous, so there is still a small delay - between committing a transaction in the primary and for the changes to - become visible in the standby. The delay is however much smaller than with - file-based log shipping, typically under one second assuming the standby - is powerful enough to keep up with the load. With streaming replication, - archive_timeout is not required to reduce the data loss - window. + Streaming replication is asynchronous by default + (see ), in which case there is + a small delay between committing a transaction in the primary and the + changes becoming visible in the standby. This delay is however much + smaller than with file-based log shipping, typically under one second + assuming the standby is powerful enough to keep up with the load. With + streaming replication, archive_timeout is not required to + reduce the data loss window. @@ -1326,8 +1327,8 @@ if (!triggered) Streaming replication has not been tested with Postgres-XC yet. Because this version of streaming replication is based upon asynchronous log shipping, - there could be a risk to have the status of coordinators and - datanodes inconsistent. The development team leaves the test + there could be a risk to have the status of Coordinators and + Datanodes inconsistent. The development team leaves the test and the use of this entirely to users. diff --git a/doc-xc/src/sgml/history.sgmlin b/doc-xc/src/sgml/history.sgmlin index 99e41d4bf6..455e5b9a48 100644 --- a/doc-xc/src/sgml/history.sgmlin +++ b/doc-xc/src/sgml/history.sgmlin @@ -276,11 +276,11 @@ In 2010, Rita-DB was carried over to NTT's Open Source Software Center as Postgres-XC project. - EnterpriseDB Inc., joined the project. After six month effort, + EnterpriseDB Inc., joined the project. After six month effort, they were successful to show that multiple PostgreSQL can be integrated into database cluster and they can provide transparent - global transaction management feature. Benchmark showed both read and + global transaction management feature. Benchmark showed both read and write scalability. @@ -290,16 +290,22 @@ - After then, the development team decided to expand statement + After then, the development and core teams decided to expand statement capability of Postgres-XC to full PostgreSQL as much as possible. They're working hard to this goal. + + Postgres-XC is under copyright of Postgres-XC Development + Group since 2012. More details about this legal entity can be found + here. + + On the other hand, it is very important to provide high availability - feature to database clusters. Especially, GTM was pointed out to + feature to database clusters. Especially, GTM was pointed out to become single point of failure. High availability feature was also added to Postgres-XC. diff --git a/doc-xc/src/sgml/indices.sgmlin b/doc-xc/src/sgml/indices.sgmlin index 5d8de33fe9..621f42caf4 100644 --- a/doc-xc/src/sgml/indices.sgmlin +++ b/doc-xc/src/sgml/indices.sgmlin @@ -18,9 +18,9 @@ &xconly; - Each index is maintained locally in coordinator and datanode + Each index is maintained locally in Coordinator and Datanode in Postgres-XC. - Cross validation of index entries among coordinators and datanodes is + Cross validation of index entries among Coordinators and Datanodes is not performed in the current implementation. @@ -221,8 +221,10 @@ CREATE INDEX name ON table Hash index operations are not presently WAL-logged, so hash indexes might need to be rebuilt with REINDEX - after a database crash. They are also not replicated over streaming or - file-based replication. + after a database crash if there were unwritten changes. + Also, changes to hash indexes are not replicated over streaming or + file-based replication after the initial base backup, so they + give wrong answers to queries that subsequently use them. For these reasons, hash index use is presently discouraged. @@ -653,6 +655,7 @@ CREATE UNIQUE INDEX name ON table +&xc-constraint; @@ -692,7 +695,6 @@ CREATE INDEX test1_lower_col1_idx ON test1 (lower(col1)); Thus, indexes on expressions can be used to enforce constraints that are not definable as simple unique constraints. - As another example, if one often does queries like: @@ -722,6 +724,7 @@ CREATE INDEX people_names ON people ((first_name || ' ' || last_name)); query. Thus, indexes on expressions are useful when retrieval speed is more important than insertion and update speed. +&xc-constraint; @@ -973,6 +976,7 @@ CREATE UNIQUE INDEX tests_success_constraint ON tests (subject, target) linkend="STON89b">, , and . +&xc-constraint; diff --git a/doc-xc/src/sgml/installation.sgmlin b/doc-xc/src/sgml/installation.sgmlin index f4f7bdcbd3..6347678586 100644 --- a/doc-xc/src/sgml/installation.sgmlin +++ b/doc-xc/src/sgml/installation.sgmlin @@ -67,28 +67,41 @@ su - postgres -&xconly; + + The following short installation allows to install a simple cluster on a local machine with + 1 Coordinator, 2 Datanodes and 1 GTM. When installing a more complex cluster, you might + change the number of Coordinators and Datanodes, and might have to start nodes on different + servers. + ./configure gmake su gmake install adduser postgres -mkdir /usr/local/pgsql/data -chown postgres /usr/local/pgsql/data +mkdir /usr/local/pgsql/data_coord1 +mkdir /usr/local/pgsql/data_datanode1 +mkdir /usr/local/pgsql/data_datanode2 +mkdir /usr/local/pgsql/data_gtm +chown postgres /usr/local/pgsql/data_coord1 +chown postgres /usr/local/pgsql/data_datanode1 +chown postgres /usr/local/pgsql/data_datanode2 +chown postgres /usr/local/pgsql/data_gtm su - postgres -/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data -/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 & +/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data_coord1 --nodename coord1 +/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data_datanode1 --nodename datanode1 +/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data_datanode2 --nodename datanode2 +/usr/local/pgsql/bin/initgtm -D /usr/local/pgsql/data_gtm -Z gtm +/usr/local/pgsql/bin/gtm -D /usr/local/pgsql/data_gtm >logfile 2>&1 & +/usr/local/pgsql/bin/postgres -X -p 15432 -D /usr/local/pgsql/data_datanode1 >logfile 2>&1 & +/usr/local/pgsql/bin/postgres -X -p 15433 -D /usr/local/pgsql/data_datanode2 >logfile 2>&1 & +/usr/local/pgsql/bin/postgres -C -D /usr/local/pgsql/data_coord1 >logfile 2>&1 & +/usr/local/pgsql/bin/psql -c "CREATE NODE datanode1 WITH (TYPE = 'datanode', PORT = 15432)" postgres +/usr/local/pgsql/bin/psql -c "CREATE NODE datanode2 WITH (TYPE = 'datanode', PORT = 15433)" postgres +/usr/local/pgsql/bin/psql -c "SELECT pgxc_pool_reload()" postgres /usr/local/pgsql/bin/createdb test /usr/local/pgsql/bin/psql test - -Because Postgres-XC is composed of multiple database -component which runs on different servers, the stop after this has to -be done in each server involved manually. For more automated -installation step, please see the section on pgxc_config. -For manual setup, please see the following sections. - @@ -116,10 +129,7 @@ For manual setup, please see the following sections. &xconly; - In general, a Linux platform based upon Intel x86_64 CPU should be able to run - Postgres-XC. - At the time of release, it runs on 64bit CentOS-5.4 or later - and 64bit RHEL 5 or later. + In general, a Linux-Unix platform should be able to run Postgres-XC. @@ -485,9 +495,8 @@ For manual setup, please see the following sections. &xconly; The Postgres-XC &version; sources can be obtained from - its Web site or development site - . + its Web site or + development site. After you have obtained the file, unpack it: gunzip pgxc-v&version;.tar.gz @@ -1769,14 +1778,14 @@ Postgres-XC, contrib and HTML documentation successfully made. Ready to install. Coordinator is an entry point to Postgres-XC from applications. - You can run more than one coordinator in parallel. Each coordinator behaves - as just PostgreSQL database server, while all the coordinators + You can run more than one Coordinator in parallel. Each Coordinator behaves + as just PostgreSQL database server, while all the Coordinators handles transactions in harmonized way so that any transaction coming into one - coordinator is protected against any other transactions coming into others. + Coordinator is protected against any other transactions coming into others. Updates by a transaction is visible immediately to others running in other - coordinators. - To simplify the load balance of coordinators and datanodes, as mentioned - below, it is highly advised to install same number of coordinator and datanode + Coordinators. + To simplify the load balance of Coordinators and Datanodes, as mentioned + below, it is highly advised to install same number of Coordinator and Datanode in a server. @@ -1788,9 +1797,9 @@ Postgres-XC, contrib and HTML documentation successfully made. Ready to install. Datanode - Coordinator and datanode shares the same binary but their behavior is a little + Coordinator and Datanode shares the same binary but their behavior is a little different. Coordinator decomposes incoming statements into those handled by - datanodes. If necessary, coordinator materializes response from datanodes + Datanodes. If necessary, Coordinator materializes response from Datanodes to calculate final response to applications. @@ -1799,53 +1808,6 @@ Postgres-XC, contrib and HTML documentation successfully made. Ready to install. - - XCM - - - XCM module maintains configuration of - global Postgres-XC configuration and status. - XCM's status is initialized and maintained - by xc_watcher module which can be refereed by any - other components. Occasionally other components may update - XCM status when it detects error, which is passed - to xc_watcher, which distributes the status - change to all the other servers. - - - - - xc_watcher - - - xc_watcher provides cluster-wide operations such - as starting, stopping, monitoring and controlling - failover/failback. - xc_watcher composed of central operation utility - and other utilities which should run on servers where at least one of GTM, - GTM-Proxy, GTM-Standby, coordinator or datanode funs. You may - want to run xc_watcher on a separate server. - - - - - pgxc_config - - - pgxc_config is Postgres-XC's - configuration utility. It reads XC's global - configuration, help to initialize its owner and to install - binaries into servers, generate each component's configuration - file and generate scripts used by xc_watcher. - - - pgxc_config simplifies XC's - installation and maintenance work, which will be covered in the - section of server program chapter. This section covers only - manual installation and configuration. - - - @@ -2151,8 +2113,8 @@ export MANPATH &xconly; - When, as typical case, you're configuring both coordinator and - datanode in a same server, please be careful not to assign same + When, as typical case, you're configuring both Coordinator and + Datanode in a same server, please be careful not to assign same resource, such as listening point (IP address and port number) to different component. If you apply single set of environment described here to different components, they will conflict @@ -2247,26 +2209,15 @@ bin/ include/ lib/ share/ - For the server to run GTM-Proxy (the server you run coordinator and/or datanode), + For the server to run GTM-Proxy (the server you run Coordinator and/or Datanode), you need to copy the following files to your path: bin/gtm_proxy and bin/gtm_ctl. - For servers to run XCM, you should copy the - following files to your path: - bin/xcm_*. Please note that they don't require any - shared library built. You should install XCM to all - the servers which runs - GTM, GTM-Standby, GTM-Proxy, - Coordinator, Datanode, - or xc_watcher. - - - - For server to run coordinator or datanode, or both, you should + For server to run Coordinator or Datanode, or both, you should copy the following files to your - path: bin/initdb, bin/pgxc_ddl, pgxc_clean. + path: bin/initdb. You should also copy everything in path directory to your library search path. @@ -2306,7 +2257,7 @@ postgres$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data - If you're configuring both datanode and coordinator on the same + If you're configuring both Datanode and Coordinator on the same server, you should specify different @@ -2344,17 +2295,17 @@ postgres$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data &xconly; - Now you should configure each coordinator and datanode. Because + Now you should configure each Coordinator and Datanode. Because they have to communicate each other and number of servers, - datanodes and coordinators depend upon configurations, we don't + Datanodes and Coordinators depend upon configurations, we don't provide default configuration file for them. - You can configure datanode and coordinator by + You can configure Datanode and Coordinator by editing postgresql.conf file located under the directory you specified with @@ -2367,9 +2318,9 @@ postgres$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data @@ -2382,11 +2333,11 @@ postgres$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data &xconly; Coordinator is associated with a connection pooler which takes - care of connection with other coordinators and datanodes. This + care of connection with other Coordinators and Datanodes. This parameter specifies minimum number of connection to pool. If you're not configuring XC cluster in unballanced way, you should specify the same value to all the - coordinators. + Coordinators. @@ -2398,12 +2349,12 @@ postgres$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data This parameter specifies maximum number of the pooled connection. This value should be at least more than the number - of all the coordinators and datanodes. If you specify less + of all the Coordinators and Datanodes. If you specify less value, you will see very frequent close and ope connection which leads to serious performance problem. If you're not configuring XC cluster in unballanced way, you should specify the same value to all the - coordinators. + Coordinators. @@ -2449,7 +2400,7 @@ postgres$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data &xconly; - Specify the port number listened to by this coordinator. + Specify the port number listened to by this Coordinator. @@ -2471,7 +2422,7 @@ postgres$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data Specify the port number of gtm you're connecting to. This is local to the server and you should specify the port assigned to - the GTM-Proxy local to the coordinator. + the GTM-Proxy local to the Coordinator. @@ -2482,7 +2433,7 @@ postgres$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data &xconly; Now you should configure postgresql.conf for each - datanodes. Please note, as in the case of coordinator, you can + Datanodes. Please note, as in the case of Coordinator, you can specify other postgresql.conf parameters as in standalone PostgreSQL. @@ -2495,11 +2446,11 @@ postgres$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data &xconly; @@ -2511,11 +2462,11 @@ postgres$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data @@ -2525,7 +2476,7 @@ postgres$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data &xconly; - Specify the port number listened to by the datanode. + Specify the port number listened to by the Datanode. @@ -2536,7 +2487,7 @@ postgres$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data Specify the port number of gtm you're connecting to. This is local to the server and you should specify the port assigned to - the GTM-Proxy local to the datanode. + the GTM-Proxy local to the Datanode. @@ -2570,7 +2521,7 @@ gtm -D /usr/local/pgsql/gtm -h localhost -p 20001 -n 1 -x 1000 &xconly; Next, you should start GTM-Proxy on each server you're running - coordinator and/or datanode like: + Coordinator and/or Datanode like: gtm_proxy -h localhost -p 20002 -s localhost -t 20001 -i 1 -n 2 -D /usr/local/pgsql/gtm_proxy @@ -2586,41 +2537,41 @@ gtm_proxy -h localhost -p 20002 -s localhost -t 20001 -i 1 -n 2 -D /usr/local/pg Please note that you should start GTM-Proxy on all the servers - you run coordinator/datanode. + you run Coordinator/Datanode. &xconly; - Now you can start datanode on each server like: + Now you can start Datanode on each server like: -postgres -X -D /usr/local/pgsql/datanode +postgres -X -D /usr/local/pgsql/Datanode - This will start the datanode. Please note that you should issue postgres command at - all the servers you're running datanode. + all the servers you're running Datanode. - Finally, you can start coordinator like: + Finally, you can start Coordinator like: -postgres -C -D /usr/local/pgsql/coordinator +postgres -C -D /usr/local/pgsql/Coordinator - This will start the coordinator. Please note that you should issue postgres command at - all the servers you're running coordinators. + all the servers you're running Coordinators. @@ -2656,24 +2607,24 @@ kill `cat /usr/local/pgsql/data/postmaster.pid` start up the whole database cluster. Do so now. The command should look something like: -postgres -X -D /usr/local/pgsql/datanode +postgres -X -D /usr/local/pgsql/Datanode - This will start the datanode in the foreground. To put the datanode + This will start the Datanode in the foreground. To put the Datanode in the background use something like: nohup postgres -X -D /usr/local/pgsql/data \ </dev/null >>server.log 2>&1 </dev/null & You can apply this to all the other components, GTM, GTM-Proxies, - and coordinators. + and Coordinators. - To stop a datanode running in the background you can type: + To stop a Datanode running in the background you can type: -kill `cat /usr/local/pgsql/datanode/postmaster.pid` +kill `cat /usr/local/pgsql/Datanode/postmaster.pid` - You can apply this to stop a coordinator too. + You can apply this to stop a Coordinator too. To stop the GTM running in the background you can type @@ -2711,7 +2662,7 @@ kill `cat /usr/local/pgsql/gtm-proxy/gtm_proxy.pid Please do not forget to give the port number of one of the - coordinators. Then you are connected to a coordinator listening + Coordinators. Then you are connected to a Coordinator listening to the port you specified. @@ -2830,8 +2781,8 @@ kill `cat /usr/local/pgsql/gtm-proxy/gtm_proxy.pid &xconly; - In general, Postgres-XC can be expected to work on - these CPU architectures of x86_64. + Postgres-XC has been tested on Intel-based CPU mainly. Other CPU + architectures may also work but are not currently being tested. @@ -2851,8 +2802,9 @@ kill `cat /usr/local/pgsql/gtm-proxy/gtm_proxy.pid &xconly; - Postgres-XC can be expected to work on 64bit-based - recent Linux. + Postgres-XC can be expected to work on these operating systems: + Linux (all recent distributions), FreeBSD and Mac OS X. Other Unix-like systems may + also work but are not currently being tested. &xconly; @@ -3228,7 +3180,7 @@ createlang: language installation failed: ERROR: could not load library "/opt/d - <ulink url=" http://www.redbooks.ibm.com/abstracts/sg245674.html?Open">Developing and Porting C and C++ Applications on AIX</ulink> + <ulink url="http://www.redbooks.ibm.com/abstracts/sg245674.html?Open">Developing and Porting C and C++ Applications on AIX</ulink> IBM Redbook @@ -3741,15 +3693,6 @@ MANPATH=/usr/lib/scohelp/%L/man:/usr/dt/man:/usr/man:/usr/share/man:scohelp:/usr below. - - Note that PostgreSQL is bundled with Solaris 10 (from update 2). - Official packages are also available on - . - Packages for older Solaris versions (8, 9) you can be obtained - from or - . - - Required Tools diff --git a/doc-xc/src/sgml/intro.sgmlin b/doc-xc/src/sgml/intro.sgmlin index 9a00426557..3df8cebd47 100644 --- a/doc-xc/src/sgml/intro.sgmlin +++ b/doc-xc/src/sgml/intro.sgmlin @@ -14,7 +14,6 @@ PostgreSQL officially supports. - This book is the official documentation of Postgres-XC. It has been written by the Postgres-XC developers and other @@ -26,23 +25,13 @@ Postgres-XC is essentially a collection of multiple PostgreSQL database to provide both read and write - performance scalability. It also provides full-featured transaction - consistency as PostgreSQL provides. + performance scalability. It also provides full-featured transaction + consistency as PostgreSQL provides, at the exception + of SSI which is incomplete. - Postgres-XC inherits almost all features from PostgreSQL. + Postgres-XC inherits almost all major features from PostgreSQL. This document is also based upon PostgreSQL reference manual. - - - 本マニュアルは - Postgres-XC の公式文書です。 - 本マニュアルは - Postgres-XC 開発者及びその他のボランティアが - Postgres-XC ソフトウェア開発と平行して書いてきたものです。 - 本書では、 - the functionality that the current version of - Postgres-XC の現行バージョンが正式にサポートしている機能を記述しています。 - @@ -156,7 +145,7 @@ Postgres-XC is an open source project to provide write-scalable, - synchronous multi-master, transparent PostgreSQL cluster + synchronous symmetric, transparent PostgreSQL cluster solution. It is a collection if tightly coupled database components which can be installed in more than one hardware or virtual machines. @@ -166,7 +155,7 @@ Write-scalable means Postgres-XC can be configured with as many database servers as you want and handle much more writes (updating SQL statements) which single database server cannot - do. Multi-master means you can have more than one data base + do. Symmetric means you can have more than one data base servers which provide single database view. Synchronous means any database update from any database server is immediately visible to any other transactions running in different masters. Transparent @@ -224,7 +213,7 @@ Postgres-XC should provide multiple servers to accept transactions and statements -from applications, which is known as "master" server in general in general. In Postgres-XC, this is called "coordinator". +from applications, which is known as "master" server in general. In Postgres-XC, this is called "Coordinator". @@ -305,16 +294,15 @@ from applications, which is known as "master" server in general in general. In P Coordinator is an interface to applications. It acts like - conventional PostgreSQL backend process. However, because tables - may be replicated or distributed, coordinator does not store any - actual data. Actual data is stored by datanode as described - below. Coordinator receives SQL statements, get Global + conventional PostgreSQL backend process. However, Coordinator + does not store any actual data. Actual data is stored by Datanode + as described below. Coordinator receives SQL statements, get Global Transaction Id and Global Snapshot as needed, determine which - datanode is involved and ask them to execute (a part of) - statement. When issuing statement to datanodes, it is - associated with GXID and Global Snapshot so that datanode is not + Datanode is involved and ask them to execute (a part of) + statement. When issuing statement to Datanodes, it is + associated with GXID and Global Snapshot so that Datanode is not confused if it receives another statement from another - transaction originated by another coordinator. + transaction originated by another Coordinator. @@ -323,17 +311,16 @@ from applications, which is known as "master" server in general in general. In P Datanode actually stores your data. Tables may be distributed - among datanodes, or replicated to all the datanodes. Because - datanode does not have global view of the whole database, it + among Datanodes, or replicated to all the Datanodes. + Datanode does not have global view of the whole database, it just takes care of locally stored data. Incoming statement is - examined by the coordinator as described next, and rebuilt to - execute at each datanode involved. It is then transferred to - each datanodes involved together with GXID and Global Snapshot + examined by the Coordinator as described next, and rebuilt to + execute at each Datanode involved. It is then transferred to + each Datanodes involved together with GXID and Global Snapshot as needed. Datanode may receive request from various - coordinators. However, because each the transaction is identified + Coordinators. However, because each the transaction is identified uniquely and associated with consistent (global) snapshot, data - node doesn't have to worry what coordinator each transaction or - + node doesn't have to worry what Coordinator each transaction or statement came from. @@ -383,9 +370,16 @@ from applications, which is known as "master" server in general in general. In P views + transactional integrity + + + + transactional integrity, at the exception of SSI whose support is incomplete + + multiversion concurrency control diff --git a/doc-xc/src/sgml/keywords.sgmlin b/doc-xc/src/sgml/keywords.sgmlin index 9f0a4470b6..a95bf29a47 100644 --- a/doc-xc/src/sgml/keywords.sgmlin +++ b/doc-xc/src/sgml/keywords.sgmlin @@ -84,7 +84,7 @@ <acronym>SQL</acronym> Key Words - + Key Word diff --git a/doc-xc/src/sgml/legal.sgmlin b/doc-xc/src/sgml/legal.sgmlin index c91b5959a5..15136cad1f 100644 --- a/doc-xc/src/sgml/legal.sgmlin +++ b/doc-xc/src/sgml/legal.sgmlin @@ -1,13 +1,13 @@ - 1996-2011 + 1996-2014 The PostgreSQL Global Development Group - 2009-2012 - Nippon Telegraph and Telephone Corporation + 2010-2014 + Postgres-XC Development Group @@ -16,15 +16,14 @@ - PostgreSQL is Copyright © 1996-2011 + PostgreSQL is Copyright © 1996-2014 by the PostgreSQL Global Development Group and is distributed under the terms of the license of the University of California below. - Postgres-XC is Copyright © 1996-2011 + Postgres-XC is Copyright © 1996-2014 by the PostgreSQL Global Development Group and Copyright © - 2010-2012 by Nippon Telegraph and Telephone Corporation, and is - distributed under + 2010-2014 by Postgres-XC Development Group, and is distributed under the terms of the license of the University of California below. diff --git a/doc-xc/src/sgml/libpq.sgmlin b/doc-xc/src/sgml/libpq.sgmlin index b064263547..f5c7a67780 100644 --- a/doc-xc/src/sgml/libpq.sgmlin +++ b/doc-xc/src/sgml/libpq.sgmlin @@ -2438,11 +2438,11 @@ char *PQresultErrorField(const PGresult *res, int fieldcode); + PG_DIAG_SQLSTATE error codes libpq - PG_DIAG_SQLSTATE The SQLSTATE code for the error. The SQLSTATE code identifies diff --git a/doc-xc/src/sgml/lobj.sgmlin b/doc-xc/src/sgml/lobj.sgmlin index bef3495c09..90d41f5c1a 100644 --- a/doc-xc/src/sgml/lobj.sgmlin +++ b/doc-xc/src/sgml/lobj.sgmlin @@ -470,6 +470,14 @@ SELECT lo_export(image.raster, '/tmp/motd') FROM image The client-side functions do not require superuser privilege. + + The functionality of lo_read and + lo_write is also available via server-side calls, + but the names of the server-side functions differ from the client side + interfaces in that they do not contain underscores. You must call + these functions as loread and lowrite. + + diff --git a/doc-xc/src/sgml/maintenance.sgmlin b/doc-xc/src/sgml/maintenance.sgmlin index c09f207d95..9caba1731c 100644 --- a/doc-xc/src/sgml/maintenance.sgmlin +++ b/doc-xc/src/sgml/maintenance.sgmlin @@ -15,7 +15,7 @@ &xconly; Please note that this chapter describes database maintenance task - of individual coordinator and datanode. Please remember that these + of individual Coordinator and Datanode. Please remember that these tasks should be done for each of them. @@ -108,7 +108,7 @@ &xconly; Please note that this section describes the task of individual - coordinator and datanode. It should be done for each of them. + Coordinator and Datanode. It should be done for each of them. @@ -141,7 +141,7 @@ &xconly; Please note that this section describes the task of individual - coordinator and datanode. It should be done for each of them. + Coordinator and Datanode. It should be done for each of them. @@ -219,7 +219,7 @@ &xconly; Please note that this section describes the task of individual - coordinator and datanode. It should be done for each of them. + Coordinator and Datanode. It should be done for each of them. @@ -347,7 +347,7 @@ &xconly; Please note that this section describes the task of individual - coordinator and datanode. It should be done for each of them. + Coordinator and Datanode. It should be done for each of them. @@ -440,7 +440,7 @@ &xconly; Please note that this section describes the task of individual - coordinator and datanode. It should be done for each of them. + Coordinator and Datanode. It should be done for each of them. @@ -487,7 +487,7 @@ as FrozenXID. This XID does not follow the normal XID comparison rules and is always considered older than every normal XID. Normal XIDs are - compared using modulo-231 arithmetic. This means + compared using modulo-232 arithmetic. This means that for every normal XID, there are two billion XIDs that are older and two billion that are newer; another way to say it is that the normal XID space is circular with no @@ -578,8 +578,8 @@ will take more space, because it must store the commit status of all transactions back to the autovacuum_freeze_max_age horizon. The commit status uses two bits per transaction, so if - autovacuum_freeze_max_age is set to its maximum allowed value of - a little less than two billion, pg_clog can be expected to + autovacuum_freeze_max_age is set to its maximum allowed + value of two billion, pg_clog can be expected to grow to about half a gigabyte. If this is trivial compared to your total database size, setting autovacuum_freeze_max_age to its maximum allowed value is recommended. Otherwise, set it depending @@ -620,7 +620,12 @@ examine this information is to execute queries such as: -SELECT relname, age(relfrozenxid) FROM pg_class WHERE relkind = 'r'; +SELECT c.oid::regclass as table_name, + greatest(age(c.relfrozenxid),age(t.relfrozenxid)) as age +FROM pg_class c +LEFT JOIN pg_class t ON c.reltoastrelid = t.oid +WHERE c.relkind = 'r'; + SELECT datname, age(datfrozenxid) FROM pg_database; @@ -694,7 +699,7 @@ HINT: Stop the postmaster and use a standalone backend to VACUUM in "mydb". &xconly; Please note that this section describes the task of individual - coordinator and datanode. It should be done for each of them. + Coordinator and Datanode. It should be done for each of them. @@ -846,7 +851,7 @@ analyze threshold = analyze base threshold + analyze scale factor * number of tu &xconly; Please note that this section describes the task of individual - coordinator and datanode. It should be done for each of them. + Coordinator and Datanode. It should be done for each of them. @@ -895,7 +900,7 @@ analyze threshold = analyze base threshold + analyze scale factor * number of tu &xconly; Please note that this section describes the task of individual - coordinator and datanode. It should be done for each of them. + Coordinator and Datanode. It should be done for each of them. diff --git a/doc-xc/src/sgml/manage-ag.sgmlin b/doc-xc/src/sgml/manage-ag.sgmlin index 9f5000a7fa..7f848762bb 100644 --- a/doc-xc/src/sgml/manage-ag.sgmlin +++ b/doc-xc/src/sgml/manage-ag.sgmlin @@ -304,7 +304,7 @@ createdb -T template0 dbname In Postgres-XC, template databases are hold in - each coordinator and datanode. They are locally copied when new + each Coordinator and Datanode. They are locally copied when new database is created. diff --git a/doc-xc/src/sgml/mvcc.sgmlin b/doc-xc/src/sgml/mvcc.sgmlin index fd726fe636..66aac28008 100644 --- a/doc-xc/src/sgml/mvcc.sgmlin +++ b/doc-xc/src/sgml/mvcc.sgmlin @@ -32,8 +32,8 @@ Postgres-XC inherited concurrency control of PostgreSQL and extended it globally to whole - coordinators and datanodes involved. Regardless of what - coordinator to connect to, all the transactions + Coordinators and Datanodes involved. Regardless of what + Coordinator to connect to, all the transactions in Postgres-XC database cluster behaves in consistent way as if they are running in single database. @@ -156,7 +156,7 @@ - The phenomena which are prohibited are various levels are: + The phenomena which are prohibited at various levels are: @@ -210,7 +210,7 @@
- <acronym>SQL</acronym> Transaction Isolation Levels + Standard <acronym>SQL</acronym> Transaction Isolation Levels @@ -1260,8 +1260,8 @@ UPDATE accounts SET balance = balance - 100.00 WHERE acctnum = 22222; &xconly; Please note that Postgres-XC does not detect - deadlocks which spreads among multiple coordinators and/or - datanodes, know as global deadlocks. There are many discussions + deadlocks which spreads among multiple Coordinators and/or + Datanodes, know as global deadlocks. There are many discussions whether global deadlocks should be detected or not, mainly because of the cost of the detection. So far, Postgres-XC leave global deadlock detection @@ -1274,6 +1274,10 @@ UPDATE accounts SET balance = balance - 100.00 WHERE acctnum = 22222; Advisory Locks + + advisory lock + + lock advisory @@ -1282,63 +1286,66 @@ UPDATE accounts SET balance = balance - 100.00 WHERE acctnum = 22222; &pgnotice; - PostgreSQL provides a means for - creating locks that have application-defined meanings. These are - called advisory locks, because the system does not - enforce their use — it is up to the application to use them - correctly. Advisory locks can be useful for locking strategies - that are an awkward fit for the MVCC model. - - - There are two different types of advisory locks in - PostgreSQL: session level and transaction level. - Once acquired, a session level advisory lock is held until explicitly - released or the session ends. Unlike standard locks, session level - advisory locks do not honor transaction semantics: a lock acquired during - a transaction that is later rolled back will still be held following the - rollback, and likewise an unlock is effective even if the calling - transaction fails later. The same session level lock can be acquired - multiple times by its owning process: for each lock request there must be - a corresponding unlock request before the lock is actually released. (If a - session already holds a given lock, additional requests will always succeed, - even if other sessions are awaiting the lock.) Transaction level locks on - the other hand behave more like regular locks; they are automatically - released at the end of the transaction, and can not be explicitly unlocked. - Session and transaction level locks share the same lock space, which means - that a transaction level lock will prevent another session from obtaining - a session level lock on that same resource and vice versa. - Like all locks in PostgreSQL, a complete list of - advisory locks currently held by any session can be found in the - pg_locks - system view. + There are two ways to acquire an advisory lock in + PostgreSQL: at session level or at + transaction level. + Once acquired at session level, an advisory lock is held until + explicitly released or the session ends. Unlike standard lock requests, + session-level advisory lock requests do not honor transaction semantics: + a lock acquired during a transaction that is later rolled back will still + be held following the rollback, and likewise an unlock is effective even + if the calling transaction fails later. A lock can be acquired multiple + times by its owning process; for each completed lock request there must + be a corresponding unlock request before the lock is actually released. + Transaction-level lock requests, on the other hand, behave more like + regular lock requests: they are automatically released at the end of the + transaction, and there is no explicit unlock operation. This behavior + is often more convenient than the session-level behavior for short-term + usage of an advisory lock. + Session-level and transaction-level lock requests for the same advisory + lock identifier will block each other in the expected way. + If a session already holds a given advisory lock, additional requests by + it will always succeed, even if other sessions are awaiting the lock; this + statement is true regardless of whether the existing lock hold and new + request are at session level or transaction level. - As in PostgreSQL, Postgres-XC provides a means for - creating locks that have application-defined meanings. These are - called advisory locks, because the system does not - enforce their use — it is up to the application to use them - correctly. Advisory locks can be useful for locking strategies - that are an awkward fit for the MVCC model. Once acquired, an - advisory lock is held until explicitly released or the session ends. - Unlike standard locks, advisory locks do not - honor transaction semantics: a lock acquired during a - transaction that is later rolled back will still be held following the - rollback, and likewise an unlock is effective even if the calling - transaction fails later. The same lock can be acquired multiple times by - its owning process: for each lock request there must be a corresponding - unlock request before the lock is actually released. (If a session - already holds a given lock, additional requests will always succeed, even - if other sessions are awaiting the lock.) Like all locks in - PostgreSQL, a complete list of advisory - locks currently held by any session can be found in the - pg_locks - system view. + There are two ways to acquire an advisory lock in + Postgres-XC: at session level or at + transaction level. + Once acquired at session level, an advisory lock is held until + explicitly released or the session ends. Unlike standard lock requests, + session-level advisory lock requests do not honor transaction semantics: + a lock acquired during a transaction that is later rolled back will still + be held following the rollback, and likewise an unlock is effective even + if the calling transaction fails later. A lock can be acquired multiple + times by its owning process; for each completed lock request there must + be a corresponding unlock request before the lock is actually released. + Transaction-level lock requests, on the other hand, behave more like + regular lock requests: they are automatically released at the end of the + transaction, and there is no explicit unlock operation. This behavior + is often more convenient than the session-level behavior for short-term + usage of an advisory lock. + Session-level and transaction-level lock requests for the same advisory + lock identifier will block each other in the expected way. + If a session already holds a given advisory lock, additional requests by + it will always succeed, even if other sessions are awaiting the lock; this + statement is true regardless of whether the existing lock hold and new + request are at session level or transaction level. - Advisory locks are allocated out of a shared memory pool whose size - is defined by the configuration variables + Like all locks in + PostgreSQL, a complete list of advisory locks + currently held by any session can be found in the pg_locks system + view. + + + + Both advisory locks and regular locks are stored in a shared memory + pool whose size is defined by the configuration variables and . Care must be taken not to exhaust this @@ -1352,20 +1359,14 @@ UPDATE accounts SET balance = balance - 100.00 WHERE acctnum = 22222; &xconly; Please note that Postgres-XC's advisory lock is - local to coordinator or datanode. If you wish to acquire - advisory locks on different coordinator, you should do it manually + local to Coordinator or Datanode. If you wish to acquire + advisory locks on different Coordinator, you should do it manually using EXECUTE DIRECT statement. - A common use of advisory locks is to emulate pessimistic 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 MVCC bloat, and can be automatically - cleaned up by the server at the end of the session. - In certain cases using this advisory locking method, especially in queries + In certain cases using advisory locking methods, especially in queries involving explicit ordering and LIMIT clauses, care must be taken to control the locks acquired because of the order in which SQL expressions are evaluated. For example: @@ -1639,7 +1640,7 @@ SELECT pg_advisory_lock(q.id) FROM control and MVCC common to PostgreSQL. This section describes how Postgres-XC implements global concurrency control and MVCC among multiple - coordinators and datanodes. + Coordinators and Datanodes. @@ -1660,25 +1661,25 @@ SELECT pg_advisory_lock(q.id) FROM As described in , Postgres-XC - is composed of GTM (Global Transaction Manager), coordinators and - datanodes. + is composed of GTM (Global Transaction Manager), Coordinators and + Datanodes. - In Postgres-XC, any coordinator can + In Postgres-XC, any Coordinator can accept any transaction, regardless whether it is read only or read/write. Transaction integrity is enforced by GTM (global - transaction manager). Because we have multiple coordinators, each + transaction manager). Because we have multiple Coordinators, each of them can handle incoming transactions and statements in parallel. Analyzed statements are converted into internal plans, which - include SQL statements targeted to datanodes. They're proxied to - each target datanode, handled and the result will be sent back to - originating coordinator where all the results from target - datanodes will be combined into the result to be sent back to the + include SQL statements targeted to Datanodes. They're proxied to + each target Datanode, handled and the result will be sent back to + originating Coordinator where all the results from target + Datanodes will be combined into the result to be sent back to the application. @@ -1686,7 +1687,7 @@ SELECT pg_advisory_lock(q.id) FROM Each table can be distributed or replicated as described in . If you design each table's distribution carefully, most of the statements may need to target - to just one datanode. In this way, coordinators and datanodes + to just one Datanode. In this way, Coordinators and Datanodes runs transactions in parallel which scales out both read and write operations. diff --git a/doc-xc/src/sgml/nls.sgmlin b/doc-xc/src/sgml/nls.sgmlin index 2474b87c63..8a8926cce6 100644 --- a/doc-xc/src/sgml/nls.sgmlin +++ b/doc-xc/src/sgml/nls.sgmlin @@ -174,7 +174,7 @@ msgstr "another translated" can also be named language_region.po where region is the - + ISO 3166-1 two-letter country code (in upper case), e.g., pt_BR.po for Portuguese in Brazil. If you diff --git a/doc-xc/src/sgml/oid2name.sgmlin b/doc-xc/src/sgml/oid2name.sgmlin index a37fd5523f..fd5f966ea3 100644 --- a/doc-xc/src/sgml/oid2name.sgmlin +++ b/doc-xc/src/sgml/oid2name.sgmlin @@ -29,9 +29,9 @@ &xconly; - Please note that you can issue this command to each datanode or - coordinator. The result is the information local to datanode or - coordinator specified. + Please note that you can issue this command to each Datanode or + Coordinator. The result is the information local to Datanode or + Coordinator specified. diff --git a/doc-xc/src/sgml/pageinspect.sgmlin b/doc-xc/src/sgml/pageinspect.sgmlin index a961bc45c8..762dd23d07 100644 --- a/doc-xc/src/sgml/pageinspect.sgmlin +++ b/doc-xc/src/sgml/pageinspect.sgmlin @@ -19,8 +19,8 @@ Functions of this module returns information about connecting - coordinators locally. To get information of a datanode, you can - connect to the datanode using psql directly. In this case, + Coordinators locally. To get information of a Datanode, you can + connect to the Datanode using psql directly. In this case, statements will be handled by local transaction control without GTM, you will have warnings and the visibility could be somewhat inconsistent. diff --git a/doc-xc/src/sgml/perform.sgmlin b/doc-xc/src/sgml/perform.sgmlin index bf624d5e84..9ffe6723dc 100644 --- a/doc-xc/src/sgml/perform.sgmlin +++ b/doc-xc/src/sgml/perform.sgmlin @@ -691,13 +691,13 @@ SELECT * FROM a, b, c WHERE a.id = b.id AND b.ref = c.id; Postgres-XC stores table data in a distributed or replicated fashion. To leverage this, the planner tries to find - the best way to use as much of datanode power as possible. If the + the best way to use as much of Datanode power as possible. If the equi-join is done by distribution columns and they share the - distribution method (hash/modulo), the coordinator can tell - datanode to perform join. If not, the coordinator collects rows to - join from datanodes and perform the join locally. In this case, - the coordinator tries to push other predicate as much as possible - to the datanode to reduce the amount of rows to receive. + distribution method (hash/modulo), the Coordinator can tell + Datanode to perform join. If not, the Coordinator collects rows to + join from Datanodes and perform the join locally. In this case, + the Coordinator tries to push other predicate as much as possible + to the Datanode to reduce the amount of rows to receive. &common; @@ -1030,7 +1030,7 @@ SELECT * FROM x, y, a, b, c WHERE something AND somethingelse; Please note that you should tune the configuration variables in all the nodes involved. Maybe you need to tune this just for - datanodes. Coordinator's database will be updated almost only + Datanodes. Coordinator's database will be updated almost only by DDLs. @@ -1122,8 +1122,8 @@ SELECT * FROM x, y, a, b, c WHERE something AND somethingelse; &xconly; In Postgres-XC, manual VACUUM will be - populated to all the datanodes as well. However, you should - configure autovacuum for each coordinator and datanodes. + populated to all the Datanodes as well. However, you should + configure autovacuum for each Coordinator and Datanodes. diff --git a/doc-xc/src/sgml/pgarchivecleanup.sgmlin b/doc-xc/src/sgml/pgarchivecleanup.sgmlin index baaed19c70..9c1b65982d 100644 --- a/doc-xc/src/sgml/pgarchivecleanup.sgmlin +++ b/doc-xc/src/sgml/pgarchivecleanup.sgmlin @@ -24,8 +24,8 @@ - Please note that this command takes care of each datanode or - coordinator. You should configure each of them manually. + Please note that this command takes care of each Datanode or + Coordinator. You should configure each of them manually. diff --git a/doc-xc/src/sgml/pgbuffercache.sgmlin b/doc-xc/src/sgml/pgbuffercache.sgmlin index fa4a39bfb7..28a5ccf76c 100644 --- a/doc-xc/src/sgml/pgbuffercache.sgmlin +++ b/doc-xc/src/sgml/pgbuffercache.sgmlin @@ -30,7 +30,7 @@ pg_buffercache returns information local to the - connecting coordinator. To inquire information local to other node, + connecting Coordinator. To inquire information local to other node, use EXECUTE DIRECT. diff --git a/doc-xc/src/sgml/pgfreespacemap.sgmlin b/doc-xc/src/sgml/pgfreespacemap.sgmlin index b3b1880a1b..e5bf1ac1de 100644 --- a/doc-xc/src/sgml/pgfreespacemap.sgmlin +++ b/doc-xc/src/sgml/pgfreespacemap.sgmlin @@ -27,8 +27,8 @@ Functions of this module returns information about connecting - coordinators locally. To get information of a datanode, you can - connect to the datanode using psql directly. In this case, + Coordinators locally. To get information of a Datanode, you can + connect to the Datanode using psql directly. In this case, statements will be handled by local transaction control without GTM, you will have warnings and the visibility could be somewhat inconsistent. diff --git a/doc-xc/src/sgml/pgrowlocks.sgmlin b/doc-xc/src/sgml/pgrowlocks.sgmlin index 52f9d81630..57cfb45e54 100644 --- a/doc-xc/src/sgml/pgrowlocks.sgmlin +++ b/doc-xc/src/sgml/pgrowlocks.sgmlin @@ -18,8 +18,8 @@ Functions of this module returns information about connecting - coordinators locally. To get information of a datanode, you can - connect to the datanode using psql directly. In this case, + Coordinators locally. To get information of a Datanode, you can + connect to the Datanode using psql directly. In this case, statements will be handled by local transaction control without GTM, you will have warnings and the visibility could be somewhat inconsistent. diff --git a/doc-xc/src/sgml/pgstattuple.sgmlin b/doc-xc/src/sgml/pgstattuple.sgmlin index 1b3e9235a0..e930b73ded 100644 --- a/doc-xc/src/sgml/pgstattuple.sgmlin +++ b/doc-xc/src/sgml/pgstattuple.sgmlin @@ -18,8 +18,8 @@ Functions of this module returns information about connecting - coordinators locally. To get information of a datanode, you can - connect to the datanode using psql directly. In this case, + Coordinators locally. To get information of a Datanode, you can + connect to the Datanode using psql directly. In this case, statements will be handled by local transaction control without GTM, you will have warnings and the visibility could be somewhat inconsistent. diff --git a/doc-xc/src/sgml/pgupgrade.sgmlin b/doc-xc/src/sgml/pgupgrade.sgmlin index 060c1708d0..b67b9f4fdb 100644 --- a/doc-xc/src/sgml/pgupgrade.sgmlin +++ b/doc-xc/src/sgml/pgupgrade.sgmlin @@ -263,10 +263,10 @@ gmake prefix=/usr/local/pgsql.new install pg_upgrade will connect to the old and new servers several times, - so you might want to set authentication to trust in - pg_hba.conf, or if using md5 authentication, - use a ~/.pgpass file (see ) - to avoid being prompted repeatedly for a password. + so you might want to set authentication to trust + or peer in pg_hba.conf, or if using + md5 authentication, use a ~/.pgpass file + (see ). diff --git a/doc-xc/src/sgml/ref/pgxc_clean-ref.sgmlin b/doc-xc/src/sgml/pgxcclean.sgmlin similarity index 83% rename from doc-xc/src/sgml/ref/pgxc_clean-ref.sgmlin rename to doc-xc/src/sgml/pgxcclean.sgmlin index 577633e2d2..c4c24ee87d 100644 --- a/doc-xc/src/sgml/ref/pgxc_clean-ref.sgmlin +++ b/doc-xc/src/sgml/pgxcclean.sgmlin @@ -1,52 +1,37 @@ - - - - - pgxc_clean - 1 - Application - - - - pgxc_clean - - Postgres-XC interactive terminal - - - - + + + + +pgxc_clean + + pgxc_clean - - - pgxc_clean - option - dbname - username - - - - - Description + + Overview &xconly; + + pgxc_clean has the following synopsis. + +pgxc_clean option dbnameusername + + pgxc_clean is Postgres-XC utility to maintain transaction status after a crash. When some Postgres-XC node crashes and recovers or fails over, commit status of such node may be inconsistent with other nodes. pgxc_clean checks transaction commit status and corrects them. + - You should run this utility against one of the available coordinators. THe tool cleans up transaction status + You should run this utility against one of the available Coordinators. The tool cleans up transaction status of all the nodes automatically. - + - + Options @@ -76,7 +61,7 @@ PostgreSQL documentation - Hostname of the coordinator to connect to. + Hostname of the Coordinator to connect to. @@ -108,7 +93,7 @@ PostgreSQL documentation - Specifies the port number of the coordinator. + Specifies the port number of the Coordinator. @@ -221,6 +206,6 @@ PostgreSQL documentation - + - + \ No newline at end of file diff --git a/doc-xc/src/sgml/pgxcddl.sgmlin b/doc-xc/src/sgml/pgxcddl.sgmlin new file mode 100644 index 0000000000..beb45570b9 --- /dev/null +++ b/doc-xc/src/sgml/pgxcddl.sgmlin @@ -0,0 +1,196 @@ + + + + +pgxc_ddl + + + pgxc_ddl + + + + + Overview + +&xconly + + + pgxc_ddl is a module for Coordinator catalog table synchronization and DDL treatment module. + It has the following synopsis. + + +pgxc_ddl option + + + + + pgxc_ddl is used to synchronize all Coordinator catalog tables from + one chosen by a user. It is also possible to launch a DDL on one + Coordinator, and then to synchronize all the Coordinator catalog + tables from the catalog table of the Coordinator having received the + DDL. Copy method is cold. All the Coordinators are stopped, + catalog files are copied, then all the Coordinators are restarted. + + + + Since Postgres-XC 0.9.3, DDL are + synchronized automatically on all the nodes of the + cluster, pgxc_ddl is let on purpose of future + feature development. + + + + Since Postgres-XC 0.9.4, pgxc_ddl and + pgxc.conf are not anymore installed by default. Scripts are saved + in the folder contrib/pgxc_ddl. + + + + + + Options + + + Options are specified with preceding '-', each + option may be associated with a value. + + + + Options are as follows: + + + + + + + + + Specify pgxc.conf folder, for + characteristics of all the Coordinators. + + + + + + + + + Specify application folder, in case PATH is not defined. + + + + + + + + + Specify DDL file location. + + + + + + + + + Database name. + + + + + + + + + Coordinator number. Coordinator chosen corresponds to the one + defined in pgxc.conf at the nth place. + + + + + + + + + Specify temporary folder where to copy the configuration files + postgresql.conf and pg_hba.conf + for each Coordinator. + + + + + + + + + Because pgxc_ddl requires access to Coordinator + configuration file and data folders, the following parameters have + to be set in pgxc.conf: + + +
+ <filename>pgxc.conf</filename> entries + + + + + Name + Type + Description + + + + + + coordinator_ports + string + + Specify the port number of all the Coordinators. Maintain the + order of the value same as those in coordinator_hosts. It is + necessary to specify a number of ports equal to the number of + hosts. A comma separator is also necessary. + + + + + coordinator_folders + string + + Specify the data folders of all the Coordinators. Maintain the + order of the value same as those in coordinator_hosts. It is + necessary to specify a number of data folders equal to the + number of hosts. A comma separator is also necessary. + + + + + coordinator_hosts + string + + Specify the host name or IP address of Coordinator. Separate + each value with comma. + + + + +
+ + + + About the temporary folder, this one has the name chosen by the + user. As an extension name, the PID of the shell script is + added. This folder is by default in /tmp. The user can choose + the name freely. + + + + + + Configuration files of Coordinators that have their catalog files + changed are defined with an extension name postgresql.conf.number, + "number" being the number of t Coordinator in the order defined + in pgxc.conf. + + +
+ diff --git a/doc-xc/src/sgml/plhandler.sgmlin b/doc-xc/src/sgml/plhandler.sgmlin index fc0bf66053..df258af3b4 100644 --- a/doc-xc/src/sgml/plhandler.sgmlin +++ b/doc-xc/src/sgml/plhandler.sgmlin @@ -181,7 +181,10 @@ CREATE LANGUAGE plsample or updated a function written in the procedural language. The passed-in OID is the OID of the function's pg_proc row. The validator must fetch this row in the usual way, and do - whatever checking is appropriate. Typical checks include verifying + whatever checking is appropriate. + First, call CheckFunctionValidatorAccess() to diagnose + explicit calls to the validator that the user could not achieve through + CREATE FUNCTION. Typical checks then include verifying that the function's argument and result types are supported by the language, and that the function's body is syntactically correct in the language. If the validator finds the function to be okay, @@ -194,15 +197,24 @@ CREATE LANGUAGE plsample Validator functions should typically honor the parameter: if it is turned off then - any expensive or context-sensitive checking should be skipped. - In particular, this parameter is turned off by pg_dump - so that it can load procedural language functions without worrying - about possible dependencies of the function bodies on other database - objects. (Because of this requirement, the call handler should avoid + any expensive or context-sensitive checking should be skipped. If the + language provides for code execution at compilation time, the validator + must suppress checks that would induce such execution. In particular, + this parameter is turned off by pg_dump so that it can + load procedural language functions without worrying about side effects or + dependencies of the function bodies on other database objects. + (Because of this requirement, the call handler should avoid assuming that the validator has fully checked the function. The point of having a validator is not to let the call handler omit checks, but to notify the user immediately if there are obvious errors in a CREATE FUNCTION command.) + While the choice of exactly what to check is mostly left to the + discretion of the validator function, note that the core + CREATE FUNCTION code only executes SET clauses + attached to a function when check_function_bodies is on. + Therefore, checks whose results might be affected by GUC parameters + definitely should be skipped when check_function_bodies is + off, to avoid false failures when reloading a dump. diff --git a/doc-xc/src/sgml/pltcl.sgmlin b/doc-xc/src/sgml/pltcl.sgmlin index b3b1a15ae8..73fa7cd6b2 100644 --- a/doc-xc/src/sgml/pltcl.sgmlin +++ b/doc-xc/src/sgml/pltcl.sgmlin @@ -489,8 +489,8 @@ $$ LANGUAGE pltcl; &xconly; - Please note that OID is maintained locally at each datanode - and coordinator. + Please note that OID is maintained locally at each Datanode + and Coordinator. diff --git a/doc-xc/src/sgml/postgres.sgmlin b/doc-xc/src/sgml/postgres.sgmlin index 1f1c9f4625..e31ac99952 100644 --- a/doc-xc/src/sgml/postgres.sgmlin +++ b/doc-xc/src/sgml/postgres.sgmlin @@ -69,17 +69,6 @@ - -&xconly; - - Please note that this document is not completed yet. Sections not - reviewed and needs revision for Postgres-XC is explicitly noted. - Description for Postgres-XC specific applications, such - as gtm, gtm_ctl, gtm_proxy - and pgxc_config will be supplied later. - - - After you have worked through this tutorial you might want to move @@ -359,9 +348,7 @@ &datetime; &keywords; &features; - &release; - &contrib; &external-projects; &sourcerepo; diff --git a/doc-xc/src/sgml/protocol.sgmlin b/doc-xc/src/sgml/protocol.sgmlin index d7fa220f72..17e2a95f44 100644 --- a/doc-xc/src/sgml/protocol.sgmlin +++ b/doc-xc/src/sgml/protocol.sgmlin @@ -1743,9 +1743,11 @@ The commands accepted in walsender mode are: After the second regular result set, one or more CopyResponse results will be sent, one for PGDATA and one for each additional tablespace other than pg_default and pg_global. The data in - the CopyResponse results will be a tar format (using ustar00 - extensions) dump of the tablespace contents. After the tar data is - complete, a final ordinary result set will be sent. + the CopyResponse results will be a tar format (following the + ustar interchange format specified in the POSIX 1003.1-2008 + standard) dump of the tablespace contents, except that the two trailing + blocks of zeroes specified in the standard are omitted. + After the tar data is complete, a final ordinary result set will be sent. diff --git a/doc-xc/src/sgml/queries.sgmlin b/doc-xc/src/sgml/queries.sgmlin index a772c79d4b..2a9353fe44 100644 --- a/doc-xc/src/sgml/queries.sgmlin +++ b/doc-xc/src/sgml/queries.sgmlin @@ -27,35 +27,14 @@ command is used to specify queries. The general syntax of the SELECT command is - - WITH with_queries SELECT select_list FROM table_expression sort_specification - - - -SELECT select_list FROM table_expression sort_specification - - - - The following sections describe the details of the select list, the table expression, and the sort specification. WITH queries are treated last since they are an advanced feature. - - -&xconly; - The following sections describe the details of the select list, the - table expression, and the sort specification. - At present Postgres-XC does not support WITH clause. - -&common; + A simple kind of query has the form: @@ -107,10 +86,6 @@ SELECT random(); table expression - - A table expression computes a table. The table expression contains a FROM clause that is @@ -120,23 +95,7 @@ SELECT random(); expressions can be used to modify or combine base tables in various ways. - - - - A table expression computes a table. The - table expression contains a FROM clause that is - optionally followed by WHERE and GROUP BY - clauses. Trivial table expressions simply refer - to a table on disk, a so-called base table, but more complex - expressions can be used to modify or combine base tables in various - ways. - - - - The optional WHERE, GROUP BY, and HAVING clauses in the table expression specify a @@ -145,23 +104,6 @@ SELECT random(); produce a virtual table that provides the rows that are passed to the select list to compute the output rows of the query. - - -&xconly; - - The optional WHERE and GROUP BY - clauses in the table expression specify a - pipeline of successive transformations performed on the table - derived in the FROM clause. All these transformations - produce a virtual table that provides the rows that are passed to - the select list to compute the output rows of the query. - -&xconly; - - Postgres-XC does not support HAVING - clause at present. - - The <literal>FROM</literal> Clause @@ -173,11 +115,6 @@ SELECT random(); FROM table_reference , table_reference , ... - - - 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 @@ -186,19 +123,6 @@ FROM table_reference , table_r transformations by the WHERE, GROUP BY, and HAVING clauses and is finally the result of the overall table expression. - - -&xconly; - 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 - transformations by the WHERE and GROUP BY - clauses and is finally the result of the - overall table expression. Please note that Postgres-XC does not support - HAVING clause. - @@ -214,6 +138,16 @@ FROM table_reference , table_r — any columns added in subtables are ignored. + + Instead of writing ONLY before the table name, you can write + * after the table name to explicitly specify that descendant + tables are included. Writing * is not necessary since that + behavior is the default (unless you have changed the setting of the configuration option). However writing + * might be useful to emphasize that additional tables will be + searched. + + Joined Tables @@ -861,15 +795,7 @@ SELECT ... FROM fdt WHERE EXISTS (SELECT c1 FROM t2 WHERE c2 > fdt.c1) - - The <literal>GROUP BY</literal> and <literal>HAVING</literal> Clauses - - - The <literal>GROUP BY</literal> Clause - GROUP BY @@ -880,21 +806,10 @@ SELECT ... FROM fdt WHERE EXISTS (SELECT c1 FROM t2 WHERE c2 > fdt.c1) - - After passing the WHERE filter, the derived input table might be subject to grouping, using the GROUP BY clause, and elimination of group rows using the HAVING clause. - - -&xconly; - After passing the WHERE filter, the derived input - table might be subject to grouping, using the GROUP BY - clause. Please note that HAVING clause is not supported at present. - @@ -1013,10 +928,6 @@ SELECT product_id, p.name, (sum(s.units) * p.price) AS sales column names is also allowed. - - HAVING @@ -1079,7 +990,6 @@ SELECT product_id, p.name, (sum(s.units) * (p.price - p.cost)) AS profit The same is true if it contains a HAVING clause, even without any aggregate function calls or GROUP BY clause. - @@ -1090,9 +1000,6 @@ SELECT product_id, p.name, (sum(s.units) * (p.price - p.cost)) AS profit order of execution - - - If the query contains any window functions (see , @@ -1126,18 +1033,7 @@ SELECT product_id, p.name, (sum(s.units) * (p.price - p.cost)) AS profit top-level ORDER BY clause if you want to be sure the results are sorted in a particular way. - - - - -&xconly; - - Postgres-XC does not support window functions at present. - - @@ -1672,11 +1568,6 @@ SELECT select_list FROM table_expression WITH - - - WITH provides a way to write auxiliary statements for use in a larger query. These statements, which are often referred to as Common @@ -1689,15 +1580,9 @@ SELECT select_list FROM table_expression DELETE. - - <command>SELECT</> in <literal>WITH</> - - The basic value of SELECT in WITH is to break down complicated queries into simpler parts. An example is: @@ -1976,17 +1861,7 @@ SELECT n FROM t LIMIT 100; In each case it effectively provides temporary table(s) that can be referred to in the main command. - - - - -&xconly; - - Postgres-XC does not support WITH clause at present. - - + diff --git a/doc-xc/src/sgml/query.sgmlin b/doc-xc/src/sgml/query.sgmlin index 027bbf8bc4..5412f9c362 100644 --- a/doc-xc/src/sgml/query.sgmlin +++ b/doc-xc/src/sgml/query.sgmlin @@ -137,7 +137,7 @@ &xconly; - In Postgres-XC these databases can be distributed into more than one datanodes. + In Postgres-XC these databases can be distributed into more than one Datanodes. This will not affect how tables and rows are seen from applications point of view, but will be important for Database Administrator (DBA). Table distribution will be described later. diff --git a/doc-xc/src/sgml/recovery-config.sgmlin b/doc-xc/src/sgml/recovery-config.sgmlin index 4a909ab037..f098378524 100644 --- a/doc-xc/src/sgml/recovery-config.sgmlin +++ b/doc-xc/src/sgml/recovery-config.sgmlin @@ -67,11 +67,11 @@ Although Postgres-XC does not - prohibit to use warm-standby, in either coordinators or - datanodes (see ), there's no + prohibit to use warm-standby, in either Coordinators or + Datanodes (see ), there's no guarantee that warm-standbys are synchronized. If you use warm standby for high availability feature, there's a risk - that data in coordinators and datanodes are inconsistent. + that data in Coordinators and Datanodes are inconsistent. It is highly recommended to use BARRIER. @@ -208,7 +208,7 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows At most one of recovery_target_time, , or - recovery_target_barrier can be specified. + can be specified. The default is to recover to the end of the WAL log. The precise stopping point is also influenced by @@ -240,7 +240,7 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows At most one of recovery_target_xid, , or - recovery_target_barrier can be specified. + can be specified. The default is to recover to the end of the WAL log. The precise stopping point is also influenced by @@ -268,6 +268,11 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows The precise stopping point is also influenced by . + + + A barrier ID, to which recovery will proceed, has to be specified with + . Refer to this command for syntax details. + @@ -348,24 +353,6 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows - - - recovery_target_barrier (string) - - recovery_target_barrier recovery parameter - - -&xconly; - - Specifies barrier ID to which recovery will proceed. - See for syntax details of - this command. - - - - - diff --git a/doc-xc/src/sgml/ref/allfiles.sgmlin b/doc-xc/src/sgml/ref/allfiles.sgmlin index 5daf11390a..67479233ad 100644 --- a/doc-xc/src/sgml/ref/allfiles.sgmlin +++ b/doc-xc/src/sgml/ref/allfiles.sgmlin @@ -149,9 +149,6 @@ Complete list of usable sgml source files in this directory. - - - @@ -184,7 +181,6 @@ Complete list of usable sgml source files in this directory. - diff --git a/doc-xc/src/sgml/ref/alter_database.sgmlin b/doc-xc/src/sgml/ref/alter_database.sgmlin index 40d3b010a6..a51cc30496 100644 --- a/doc-xc/src/sgml/ref/alter_database.sgmlin +++ b/doc-xc/src/sgml/ref/alter_database.sgmlin @@ -102,7 +102,7 @@ ALTER DATABASE name RESET ALL &xconly; If there's any live connection to any of the template database in - coordinator or datanode, you will have an error message. In this + Coordinator or Datanode, you will have an error message. In this case, you should clean these connections using CLEAN CONNECITON statement. diff --git a/doc-xc/src/sgml/ref/alter_default_privileges.sgmlin b/doc-xc/src/sgml/ref/alter_default_privileges.sgmlin index 772c3a61ef..3dfa396a6a 100644 --- a/doc-xc/src/sgml/ref/alter_default_privileges.sgmlin +++ b/doc-xc/src/sgml/ref/alter_default_privileges.sgmlin @@ -113,8 +113,8 @@ REVOKE [ GRANT OPTION FOR ] schema_name - The name of an existing schema. Each target_role - must have CREATE privileges for each specified schema. + The name of an existing schema. If specified, the default privileges + are altered for objects later created in that schema. If IN SCHEMA is omitted, the global default privileges are altered. diff --git a/doc-xc/src/sgml/ref/alter_domain.sgmlin b/doc-xc/src/sgml/ref/alter_domain.sgmlin index 34f4721c4e..3dbd3dc007 100644 --- a/doc-xc/src/sgml/ref/alter_domain.sgmlin +++ b/doc-xc/src/sgml/ref/alter_domain.sgmlin @@ -80,6 +80,7 @@ ALTER DOMAIN name This will only succeed if all columns using the domain satisfy the new constraint. +&xc-constraint; diff --git a/doc-xc/src/sgml/ref/alter_table.sgmlin b/doc-xc/src/sgml/ref/alter_table.sgmlin index 3a1f095e15..5005efb21a 100644 --- a/doc-xc/src/sgml/ref/alter_table.sgmlin +++ b/doc-xc/src/sgml/ref/alter_table.sgmlin @@ -608,10 +608,12 @@ ALTER TABLE name name - The name (possibly schema-qualified) of an existing table to - alter. If ONLY is specified, only that table is - altered. If ONLY is not specified, the table and any - descendant tables are altered. + The name (optionally schema-qualified) of an existing table to + alter. If ONLY is specified before the table name, only + that table is altered. If ONLY is not specified, the table + and all its descendant tables (if any) are altered. Optionally, + * can be specified after the table name to explicitly + indicate that descendant tables are included. @@ -1002,7 +1004,7 @@ ALTER TABLE distributors DROP CONSTRAINT zipchk; - To remove a check constraint from a table only: + To remove a check constraint from one table only: ALTER TABLE ONLY distributors DROP CONSTRAINT zipchk; diff --git a/doc-xc/src/sgml/ref/alter_type.sgmlin b/doc-xc/src/sgml/ref/alter_type.sgmlin index 16a2060709..052985989b 100644 --- a/doc-xc/src/sgml/ref/alter_type.sgmlin +++ b/doc-xc/src/sgml/ref/alter_type.sgmlin @@ -25,8 +25,8 @@ PostgreSQL documentation ALTER TYPE name action [, ... ] ALTER TYPE name OWNER TO new_owner -ALTER TYPE name RENAME ATTRIBUTE attribute_name TO new_attribute_name -ALTER TYPE name RENAME TO new_name [ CASCADE | RESTRICT ] +ALTER TYPE name RENAME ATTRIBUTE attribute_name TO new_attribute_name [ CASCADE | RESTRICT ] +ALTER TYPE name RENAME TO new_name ALTER TYPE name SET SCHEMA new_schema ALTER TYPE name ADD VALUE new_enum_value [ { BEFORE | AFTER } existing_enum_value ] diff --git a/doc-xc/src/sgml/ref/checkpoint.sgmlin b/doc-xc/src/sgml/ref/checkpoint.sgmlin index 3910561eb9..f5932228ca 100644 --- a/doc-xc/src/sgml/ref/checkpoint.sgmlin +++ b/doc-xc/src/sgml/ref/checkpoint.sgmlin @@ -57,7 +57,7 @@ CHECKPOINT &xconly; In Postrgres-XC, CHECKPOINT is - performed at local coordinator and allthe underlying datanodes. + performed at local Coordinator and allthe underlying Datanodes. diff --git a/doc-xc/src/sgml/ref/clean_connection.sgmlin b/doc-xc/src/sgml/ref/clean_connection.sgmlin index 40d77178a5..86018aee0d 100644 --- a/doc-xc/src/sgml/ref/clean_connection.sgmlin +++ b/doc-xc/src/sgml/ref/clean_connection.sgmlin @@ -21,7 +21,7 @@ PostgreSQL documentation -CLEAN CONNECTION TO ( COORDINATOR nodename [, ... ] | NODE nodename [, ... ] | ALL {FORCE}) +CLEAN CONNECTION TO { COORDINATOR nodename [, ... ] | NODE nodename [, ... ] | ALL {FORCE} } [ FOR DATABASE dbname ] [ TO USER username ] diff --git a/doc-xc/src/sgml/ref/cluster.sgmlin b/doc-xc/src/sgml/ref/cluster.sgmlin index df198ff16d..7b7c4270ee 100644 --- a/doc-xc/src/sgml/ref/cluster.sgmlin +++ b/doc-xc/src/sgml/ref/cluster.sgmlin @@ -91,7 +91,7 @@ CLUSTER [VERBOSE] &xconly; In Postgres-XC, CLUSTER will be - executed on all the datanodes as well. + executed on all the Datanodes as well. diff --git a/doc-xc/src/sgml/ref/commit_prepared.sgmlin b/doc-xc/src/sgml/ref/commit_prepared.sgmlin index 2008b20422..b76831d9bf 100644 --- a/doc-xc/src/sgml/ref/commit_prepared.sgmlin +++ b/doc-xc/src/sgml/ref/commit_prepared.sgmlin @@ -72,7 +72,7 @@ COMMIT PREPARED transaction_id &xconly; - If more than one datanode and/or coordinator are involved in the + If more than one Datanode and/or Coordinator are involved in the transaction, COMMIT PREPARED command will propagate to all these nodes. diff --git a/doc-xc/src/sgml/ref/copy.sgmlin b/doc-xc/src/sgml/ref/copy.sgmlin index 5f01152ece..96f50007b9 100644 --- a/doc-xc/src/sgml/ref/copy.sgmlin +++ b/doc-xc/src/sgml/ref/copy.sgmlin @@ -40,7 +40,7 @@ COPY { table_name [ ( quote_character' ESCAPE 'escape_character' FORCE_QUOTE { ( column [, ...] ) | * } - FORCE_NOT_NULL ( column [, ...] ) | + FORCE_NOT_NULL ( column [, ...] ) ENCODING 'encoding_name' @@ -193,7 +193,7 @@ COPY { table_name [ ( In Postgres-XC, OIDs are only maintained locally - in coordinators and datanodes. The value of OIDs + in Coordinators and Datanodes. The value of OIDs may conflict if you copy this value to another table. diff --git a/doc-xc/src/sgml/ref/create_aggregate.sgmlin b/doc-xc/src/sgml/ref/create_aggregate.sgmlin index 1c0c2ea111..2de3015d87 100644 --- a/doc-xc/src/sgml/ref/create_aggregate.sgmlin +++ b/doc-xc/src/sgml/ref/create_aggregate.sgmlin @@ -141,7 +141,7 @@ CREATE AGGREGATE name ( Two phased aggregation - is used when the entire aggregation takes place on - the coordinator node. In first phase called transition phase, + the Coordinator node. In first phase called transition phase, Postgres-XC creates a temporary variable of data type stype @@ -165,19 +165,19 @@ CREATE AGGREGATE name ( Three phased aggregation - is used when the process of aggregation is divided - between coordinator and data nodes. In this mode, each - Postgres-XC data node involved in the query carries + between Coordinator and Datanodes. In this mode, each + Postgres-XC Datanode involved in the query carries out the first phase named transition phase. This phase is similar to the first phase in the two phased aggregation mode discussed above, except that, every - data node applies this phase on the rows available at the data node. The - result of transition phase is then transferred to the coordinator node. - Second phase called collection phase takes place on the coordinator. - Postgres-XC coordinator node creates a temporary variable + Datanode applies this phase on the rows available at the Datanode. The + result of transition phase is then transferred to the Coordinator node. + Second phase called collection phase takes place on the Coordinator. + Postgres-XC Coordinator node creates a temporary variable of data type stype to hold the current internal state of the collection phase. For every input - from the data node (result of transition phase on that node), the collection + from the Datanode (result of transition phase on that node), the collection function is invoked with the current collection state value and the new - transition value (obtained from the data node) to calculate a new + transition value (obtained from the Datanode) to calculate a new internal collection state value. After all the transition values from data nodes have been processed, in the third or finalization phase the final function is invoked once to calculate the aggregate's return diff --git a/doc-xc/src/sgml/ref/create_database.sgmlin b/doc-xc/src/sgml/ref/create_database.sgmlin index 7cbe631324..78f916ef3b 100644 --- a/doc-xc/src/sgml/ref/create_database.sgmlin +++ b/doc-xc/src/sgml/ref/create_database.sgmlin @@ -53,14 +53,6 @@ CREATE DATABASE name See . - - Normally, the creator becomes the owner of the new database. - Superusers can create databases owned by other users, by using the - OWNER clause. They can even create databases owned by - users with no special privileges. Non-superusers with CREATEDB - privilege can only create databases owned by themselves. - - By default, the new database will be created by cloning the standard system database template1. A different template can be @@ -83,7 +75,7 @@ CREATE DATABASE name &xconly; If there's any live connection to any of the template database in - coordinator or datanode, you will have an error message. In this + Coordinator or Datanode, you will have an error message. In this case, you should clean these connections using CLEAN CONNECTION statement. @@ -103,12 +95,14 @@ CREATE DATABASE name - use_name + user_name - The name of the database user who will own the new database, + The role name of the user who will own the new database, or DEFAULT to use the default (namely, the - user executing the command). + user executing the command). To create a database owned by another + role, you must be a direct or indirect member of that role, + or be a superuser. diff --git a/doc-xc/src/sgml/ref/create_domain.sgmlin b/doc-xc/src/sgml/ref/create_domain.sgmlin index 2ca2a08252..17a8095d78 100644 --- a/doc-xc/src/sgml/ref/create_domain.sgmlin +++ b/doc-xc/src/sgml/ref/create_domain.sgmlin @@ -61,6 +61,7 @@ CREATE DOMAIN name [ AS ] +&xc-constraint; diff --git a/doc-xc/src/sgml/ref/create_extension.sgmlin b/doc-xc/src/sgml/ref/create_extension.sgmlin index 7670d76f89..566312b3ea 100644 --- a/doc-xc/src/sgml/ref/create_extension.sgmlin +++ b/doc-xc/src/sgml/ref/create_extension.sgmlin @@ -22,7 +22,7 @@ PostgreSQL documentation CREATE EXTENSION [ IF NOT EXISTS ] extension_name - [ WITH ] [ SCHEMA schema ] + [ WITH ] [ SCHEMA schema_name ] [ VERSION version ] [ FROM old_version ] @@ -85,7 +85,7 @@ CREATE EXTENSION [ IF NOT EXISTS ] extension_name - schema + schema_name The name of the schema in which to install the extension's @@ -94,6 +94,12 @@ CREATE EXTENSION [ IF NOT EXISTS ] extension_name If not specified, and the extension's control file does not specify a schema either, the current default object creation schema is used. + + Remember that the extension itself is not considered to be within any + schema: extensions have unqualified names that must be unique + database-wide. But objects belonging to the extension can be within + schemas. + diff --git a/doc-xc/src/sgml/ref/create_function.sgmlin b/doc-xc/src/sgml/ref/create_function.sgmlin index 5db7c3f4ac..8d563a22a5 100644 --- a/doc-xc/src/sgml/ref/create_function.sgmlin +++ b/doc-xc/src/sgml/ref/create_function.sgmlin @@ -144,7 +144,7 @@ CREATE [ OR REPLACE ] FUNCTION - The name of an argument. Some languages (currently only PL/pgSQL) let + The name of an argument. Some languages (including PL/pgSQL, but currently not SQL) let you use the name in the function body. For other languages the name of an input argument is just extra documentation, so far as the function itself is concerned; but you can use input argument names @@ -493,7 +493,7 @@ CREATE [ OR REPLACE ] FUNCTION &xconly; It is user's responsibility to deploy the file to all the - servers where coordinator or datanode may run. + servers where Coordinator or Datanode may run. @@ -592,12 +592,13 @@ CREATE FUNCTION foo(int, int default 42) ... The full SQL type syntax is allowed for - input arguments and return value. However, some details of the - type specification (e.g., the precision field for - type numeric) are the responsibility of the - underlying function implementation and are silently swallowed - (i.e., not recognized or - enforced) by the CREATE FUNCTION command. + declaring a function's arguments and return value. However, + parenthesized type modifiers (e.g., the precision field for + type numeric) are discarded by CREATE FUNCTION. + Thus for example + CREATE FUNCTION foo (varchar(10)) ... + is exactly the same as + CREATE FUNCTION foo (varchar) .... diff --git a/doc-xc/src/sgml/ref/create_index.sgmlin b/doc-xc/src/sgml/ref/create_index.sgmlin index 74546d6442..a4f5bc4d65 100644 --- a/doc-xc/src/sgml/ref/create_index.sgmlin +++ b/doc-xc/src/sgml/ref/create_index.sgmlin @@ -89,8 +89,8 @@ CREATE [ UNIQUE ] INDEX [ name ] ON &xconly; Please note that indexes are maintained only locally in each - coordinator and/or datanodes. They do not have any information on - the column value outside coordinator or datanode. + Coordinator and/or Datanodes. They do not have any information on + the column value outside Coordinator or Datanode. @@ -442,32 +442,14 @@ CREATE [ UNIQUE ] INDEX [ name ] ON - In a concurrent index build, the index is actually entered into the - system catalogs in one transaction, then the two table scans occur in a - second and third transaction. - If a problem arises while scanning the table, such as a - uniqueness violation in a unique index, the CREATE INDEX - command will fail but leave behind an invalid index. This index - will be ignored for querying purposes because it might be incomplete; - however it will still consume update overhead. The psql - \d command will report such an index as INVALID: - - -postgres=# \d tab - Table "public.tab" - Column | Type | Modifiers ---------+---------+----------- - col | integer | -Indexes: - "idx" btree (col) INVALID - - - The recommended recovery - method in such cases is to drop the index and try again to perform - CREATE INDEX CONCURRENTLY. (Another possibility is to rebuild - the index with REINDEX. However, since REINDEX - does not support concurrent builds, this option is unlikely to seem - attractive.) + 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 . @@ -500,12 +482,36 @@ Indexes: Notes + + + Hash index operations are not presently WAL-logged, + so hash indexes might need to be rebuilt with REINDEX + after a database crash if there were unwritten changes. + Also, changes to hash indexes are not replicated over streaming or + file-based replication after the initial base backup, so they + give wrong answers to queries that subsequently use them. + For these reasons, hash index use is presently discouraged. + + + See for information about when indexes can be used, when they are not used, and in which particular situations they can be useful. + + + Hash index operations are not presently WAL-logged, + so hash indexes might need to be rebuilt with REINDEX + after a database crash if there were unwritten changes. + Also, changes to hash indexes are not replicated over streaming or + file-based replication after the initial base backup, so they + give wrong answers to queries that subsequently use them. + For these reasons, hash index use is presently discouraged. + + + Currently, only the B-tree, GiST and GIN index methods support multicolumn indexes. Up to 32 fields can be specified by default. diff --git a/doc-xc/src/sgml/ref/create_node.sgmlin b/doc-xc/src/sgml/ref/create_node.sgmlin index c6e3c97622..8ffc81ace0 100644 --- a/doc-xc/src/sgml/ref/create_node.sgmlin +++ b/doc-xc/src/sgml/ref/create_node.sgmlin @@ -88,7 +88,11 @@ CREATE NODE nodename WITH Defines if the cluster node is used as a primary node for replicated write operations. A boolean value can be specified. In case no value is specified, PRIMARY - acts like true. + acts like false. + + + To avoid deadlock and make update consistetnt, you should specify the same PRIMARY + node at all the nodes. @@ -98,10 +102,18 @@ CREATE NODE nodename WITH Defines if the cluster node is used as a preferred node for replicated - read operations. A boolean + read operations if no node is determined. A boolean value can be specified. In case no value is specified, PREFERRED - acts like true. + acts like false. + + + You can specify different PREFERRED node at different coordinator. + This parameter affects performance of your Postgres-XC cluster. + If you configure a datanode where you configure a coordinator, + you should specify PREFERRED for the coordinator to such a local datanode. + This will save network communication and improve cluster-wide performance. + @@ -145,8 +157,13 @@ CREATE NODE nodename WITH - A slave Datanode cannot be defined as PRIMARY but - it can be defined as PREFERRED. + When using a cluster with 1 Coordinator and 1 Datanode on each server, + Defining the local Datanode as PREFERRED can greatly + improve the performance of a system by avoiding any network overhead for + replicated reads, as in this case a local socket is used for communication + between nodes. This has even more effects when the application uses heavily + replicated table for remote join operations and that those operations can + be operated on the local PREFERRED node. diff --git a/doc-xc/src/sgml/ref/create_nodegroup.sgmlin b/doc-xc/src/sgml/ref/create_nodegroup.sgmlin index 00e664831d..2ccb0f1990 100644 --- a/doc-xc/src/sgml/ref/create_nodegroup.sgmlin +++ b/doc-xc/src/sgml/ref/create_nodegroup.sgmlin @@ -38,6 +38,10 @@ WITH nodename [, ... ] node group information in catalog pgxc_group. + + CREATE NODE only runs on the local node where it is launched. + + @@ -76,9 +80,9 @@ WITH nodename [, ... ] Examples - Create a cluster node group made of nodes called datanode1, datanode2. + Create a cluster node group made of nodes called Datanode1, Datanode2. -CREATE NODE GROUP cluster_group WITH datanode1, datanode2; +CREATE NODE GROUP cluster_group WITH Datanode1, Datanode2; diff --git a/doc-xc/src/sgml/ref/create_schema.sgmlin b/doc-xc/src/sgml/ref/create_schema.sgmlin index c916fbf73b..2eced47430 100644 --- a/doc-xc/src/sgml/ref/create_schema.sgmlin +++ b/doc-xc/src/sgml/ref/create_schema.sgmlin @@ -67,8 +67,9 @@ CREATE SCHEMA AUTHORIZATION user_nameschema_name - The name of a schema to be created. If this is omitted, the user name - is used as the schema name. The name cannot + The name of a schema to be created. If this is omitted, the + user_name + s used as the schema name. The name cannot begin with pg_, as such names are reserved for system schemas. @@ -79,9 +80,10 @@ CREATE SCHEMA AUTHORIZATION user_nameuser_name - The name of the user who will own the schema. If omitted, - defaults to the user executing the command. Only superusers - can create schemas owned by users other than themselves. + The role name of the user who will own the new schema. If omitted, + defaults to the user executing the command. To create a schema + owned by another role, you must be a direct or indirect member of + that role, or be a superuser. @@ -193,7 +195,8 @@ CREATE VIEW hollywood.winners AS allows schemas to contain objects owned by users other than the schema owner. This can happen only if the schema owner grants the - CREATE privilege on his schema to someone else. + CREATE privilege on his schema to someone else, or a + superuser chooses to create objects in it. diff --git a/doc-xc/src/sgml/ref/create_table.sgmlin b/doc-xc/src/sgml/ref/create_table.sgmlin index 9679874251..e645bcfdda 100644 --- a/doc-xc/src/sgml/ref/create_table.sgmlin +++ b/doc-xc/src/sgml/ref/create_table.sgmlin @@ -94,7 +94,7 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXI [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] [ TABLESPACE tablespace ] [ DISTRIBUTE BY { REPLICATION | ROUND ROBIN | { [HASH | MODULO ] ( column_name ) } } ] -[ TO ( GROUP groupname | NODE nodename [, ... ] ) ] +[ TO { GROUP groupname | NODE nodename [, ... ] } ] CREATE TABLE table_name OF type_name [ ( @@ -106,7 +106,7 @@ CREATE TABLE table_name [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ] [ TABLESPACE tablespace ] [ DISTRIBUTE BY { REPLICATION | ROUND ROBIN | { [HASH | MODULO ] ( column_name ) } } ] -[ TO ( GROUP groupname | NODE nodename [, ... ] ) ] +[ TO { GROUP groupname | NODE nodename [, ... ] } ] where column_constraint is: @@ -194,6 +194,7 @@ CREATE TABLE table_name a column constraint is only a notational convenience for use when the constraint only affects one column. +&xc-constraint; @@ -874,8 +875,8 @@ CREATE TABLE table_name &xconly; In Postgres-XC, OID is kept locally in each - datanode and coordinator. The OID value may inconsistent for - rows stored in different datanodes. + Datanode and Coordinator. The OID value may inconsistent for + rows stored in different Datanodes. @@ -959,7 +960,7 @@ CREATE TABLE table_name &xconly; - This clause specifies how the table is distributed or replicated among datanodes. + This clause specifies how the table is distributed or replicated among Datanodes. @@ -969,7 +970,7 @@ CREATE TABLE table_name Each row of the table will be replicated into all the - datanode of the Postgres-XC database + Datanode of the Postgres-XC database cluster. @@ -979,9 +980,9 @@ CREATE TABLE table_name ROUND ROBIN - Each row of the table will be placed in one of the datanodes + Each row of the table will be placed in one of the Datanodes by round-robin manner. The value of the row will not be - needed to determine what datanode to go. + needed to determine what Datanode to go. @@ -1783,8 +1784,8 @@ CREATE TABLE employees OF employee_type ( In Postgres-XC, OID is kept locally in each - datanode and coordinator. The OID value may inconsistent for rows - stored in different datanodes. + Datanode and Coordinator. The OID value may inconsistent for rows + stored in different Datanodes. diff --git a/doc-xc/src/sgml/ref/create_table_as.sgmlin b/doc-xc/src/sgml/ref/create_table_as.sgmlin index 9437692c8b..70522fb3e3 100644 --- a/doc-xc/src/sgml/ref/create_table_as.sgmlin +++ b/doc-xc/src/sgml/ref/create_table_as.sgmlin @@ -39,7 +39,7 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE tablespace ] [ DISTRIBUTE BY { REPLICATION | ROUND ROBIN | { [HASH | MODULO ] ( column_name ) } } ] - [ TO ( GROUP groupname | NODE nodename [, ... ] ) ] + [ TO { GROUP groupname | NODE nodename [, ... ] } ] AS query [ WITH [ NO ] DATA ] @@ -222,7 +222,7 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE &xconly; - This clause specifies how the table is distributed or replicated among datanodes. + This clause specifies how the table is distributed or replicated among Datanodes. @@ -232,7 +232,7 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE Each row of the table will be replicated into all the - datanode of the Postgres-XC database + Datanode of the Postgres-XC database cluster. @@ -242,9 +242,9 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE ROUND ROBIN - Each row of the table will be placed in one of the datanodes + Each row of the table will be placed in one of the Datanodes by round-robin manner. The value of the row will not be - needed to determine what datanode to go. + needed to determine what Datanode to go. diff --git a/doc-xc/src/sgml/ref/create_tablespace.sgmlin b/doc-xc/src/sgml/ref/create_tablespace.sgmlin index 39be9b32d2..e3f9ff21c9 100644 --- a/doc-xc/src/sgml/ref/create_tablespace.sgmlin +++ b/doc-xc/src/sgml/ref/create_tablespace.sgmlin @@ -112,7 +112,7 @@ CREATE TABLESPACE tablespace_name [ &xconly; Postgres-XC assigns the same path to a tablespace - for all the coordinators and datanodes. So when creating a tablespace, + for all the Coordinators and Datanodes. So when creating a tablespace, user needs to have permission to the same location path on all the servers involved in the cluster. diff --git a/doc-xc/src/sgml/ref/create_view.sgmlin b/doc-xc/src/sgml/ref/create_view.sgmlin index 163fd1cb28..fb7bc9bb69 100644 --- a/doc-xc/src/sgml/ref/create_view.sgmlin +++ b/doc-xc/src/sgml/ref/create_view.sgmlin @@ -147,9 +147,12 @@ CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW n Currently, views are read only: the system will not allow an insert, update, or delete on a view. You can get the effect of an updatable - view by creating rules that rewrite inserts, etc. on the view into + view by creating INSTEAD triggers on the view, which + must convert attempted inserts, etc. on the view into appropriate actions on other tables. For more information see - . + . Another possibility is to create + rules (see ), but in practice triggers + are easier to understand and use correctly. diff --git a/doc-xc/src/sgml/ref/delete.sgmlin b/doc-xc/src/sgml/ref/delete.sgmlin index 01d7528750..888c862ee1 100644 --- a/doc-xc/src/sgml/ref/delete.sgmlin +++ b/doc-xc/src/sgml/ref/delete.sgmlin @@ -23,7 +23,7 @@ PostgreSQL documentation [ WITH [ RECURSIVE ] with_query [, ...] ] -DELETE FROM [ ONLY ] table [ [ AS ] alias ] +DELETE FROM [ ONLY ] table [ * ] [ [ AS ] alias ] [ USING using_list ] [ WHERE condition | WHERE CURRENT OF cursor_name ] [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ] @@ -62,13 +62,6 @@ DELETE FROM [ ONLY ] table [ [ AS ] - - By default, DELETE will delete rows in the - specified table and all its child tables. If you wish to delete only - from the specific table mentioned, you must use the - ONLY clause. - - &pgonly; There are two ways to delete rows in a table using information @@ -128,21 +121,17 @@ DELETE FROM [ ONLY ] table [ [ AS ] - - ONLY - - - If specified, delete rows from the named table only. When not - specified, any tables inheriting from the named table are also processed. - - - - table - The name (optionally schema-qualified) of an existing table. + The name (optionally schema-qualified) of the table to delete rows + from. If ONLY is specified before the table name, + matching rows are deleted from the named table only. If + ONLY is not specified, matching rows are also deleted + from any tables inheriting from the named table. Optionally, + * can be specified after the table name to explicitly + indicate that descendant tables are included. diff --git a/doc-xc/src/sgml/ref/drop_database.sgmlin b/doc-xc/src/sgml/ref/drop_database.sgmlin index 1368a70ed9..11ff0446bb 100644 --- a/doc-xc/src/sgml/ref/drop_database.sgmlin +++ b/doc-xc/src/sgml/ref/drop_database.sgmlin @@ -47,7 +47,7 @@ DROP DATABASE [ IF EXISTS ] name &xconly; If there's any live connection to any of the template database in - coordinator or datanode, you will have an error message. In this + Coordinator or Datanode, you will have an error message. In this case, you should clean these connections using CLEAN CONNECITON statement. diff --git a/doc-xc/src/sgml/ref/drop_owned.sgmlin b/doc-xc/src/sgml/ref/drop_owned.sgmlin index cb9b41c381..f6360ae24a 100644 --- a/doc-xc/src/sgml/ref/drop_owned.sgmlin +++ b/doc-xc/src/sgml/ref/drop_owned.sgmlin @@ -31,10 +31,11 @@ DROP OWNED BY name [, ...] [ CASCAD &common; - DROP OWNED drops all the objects in the current + DROP OWNED drops all the objects within the current database that are owned by one of the specified roles. Any privileges granted to the given roles on objects in the current - database will also be revoked. + database and on shared objects (databases, tablespaces) will also be + revoked. @@ -95,7 +96,7 @@ DROP OWNED BY name [, ...] [ CASCAD - Databases owned by the role(s) will not be removed. + Databases and tablespaces owned by the role(s) will not be removed. diff --git a/doc-xc/src/sgml/ref/execute_direct.sgmlin b/doc-xc/src/sgml/ref/execute_direct.sgmlin index 84b3659b68..8f0ad734c7 100644 --- a/doc-xc/src/sgml/ref/execute_direct.sgmlin +++ b/doc-xc/src/sgml/ref/execute_direct.sgmlin @@ -80,6 +80,7 @@ EXECUTE DIRECT ON nodename [, ... ] This mandatory clause specifies the raw query to launch on specified node list nodelist. + This must be specified as a string literal. diff --git a/doc-xc/src/sgml/ref/explain.sgmlin b/doc-xc/src/sgml/ref/explain.sgmlin index 24eae5c167..f8c7f6e876 100644 --- a/doc-xc/src/sgml/ref/explain.sgmlin +++ b/doc-xc/src/sgml/ref/explain.sgmlin @@ -87,8 +87,8 @@ EXPLAIN [ ANALYZE ] [ VERBOSE ] statement Please note that explain explains local plan at - the coordinator only. If you'd like to see remote plan at - datanodes, use auto_explain package + the Coordinator only. If you'd like to see remote plan at + Datanodes, use auto_explain package at @@ -174,7 +174,7 @@ ROLLBACK; materialized plans, respectively. The number of blocks shown for an upper-level node includes those used by all its child nodes. In text format, only non-zero values are printed. This parameter may only be - used with ANALYZE parameter. It defaults to + used with the ANALYZE parameter. It defaults to FALSE. @@ -184,7 +184,7 @@ ROLLBACK; NODES - Include information on the datanodes involved in the execution of Data + Include information on the Datanodes involved in the execution of Data Scan Node. This parameter defaults to TRUE. This option is available in Postgres-XC. diff --git a/doc-xc/src/sgml/ref/grant.sgmlin b/doc-xc/src/sgml/ref/grant.sgmlin index c2fdeb83b6..1e667acfb3 100644 --- a/doc-xc/src/sgml/ref/grant.sgmlin +++ b/doc-xc/src/sgml/ref/grant.sgmlin @@ -385,11 +385,13 @@ GRANT role_name [, ...] TO If WITH ADMIN OPTION is specified, the member can in turn grant membership in the role to others, and revoke membership - in the role as well. Without the admin option, ordinary users cannot do - that. However, - database superusers can grant or revoke membership in any role to anyone. - Roles having CREATEROLE privilege can grant or revoke - membership in any role that is not a superuser. + in the role as well. Without the admin option, ordinary users cannot + do that. A role is not considered to hold WITH ADMIN + OPTION on itself, but it may grant or revoke membership in + itself from a database session where the session user matches the + role. Database superusers can grant or revoke membership in any role + to anyone. Roles having CREATEROLE privilege can grant + or revoke membership in any role that is not a superuser. diff --git a/doc-xc/src/sgml/ref/gtm.sgmlin b/doc-xc/src/sgml/ref/gtm.sgmlin index 28e16b5975..36f0c70ca4 100644 --- a/doc-xc/src/sgml/ref/gtm.sgmlin +++ b/doc-xc/src/sgml/ref/gtm.sgmlin @@ -42,12 +42,12 @@ PostgreSQL documentation You must provide gtm configuration file gtm.conf placed at gtm working directory - as specified by -D command line option. The - configuration file specifies gtm running envinment and resources. + as specified by -D command line option. The + configuration file specifies gtm running environment and resources. - Some of the parameters specified in the control file can be overriden by + Some of the parameters specified in the control file can be overridden by command line options. @@ -59,7 +59,7 @@ PostgreSQL documentation &xconly GTM configuration parameters are specified in the configuration file - gtm.conf placed in the working directory + gtm.confgtm.conf placed in the working directory specified as -D option of gtm command line option as described in the next section. @@ -247,7 +247,7 @@ PostgreSQL documentation Valied values are act or standby. act means to start up this gtm as usual so - that gtm clients (coordinators, data + that gtm clients (Coordinators, data nodes or gtm-proxies) can connect for transaction management. standby means this gtm starts up as a backup @@ -348,7 +348,7 @@ PostgreSQL documentation To find the precise value to start with, you should run pg_controldata to find Latest checkpoint's NextXID of all the - coordinators and datanodes and choose the value larger than or + Coordinators and Datanodes and choose the value larger than or equals to the maximum value found. diff --git a/doc-xc/src/sgml/ref/gtm_ctl.sgmlin b/doc-xc/src/sgml/ref/gtm_ctl.sgmlin index 84fd987676..2c77f4d31f 100644 --- a/doc-xc/src/sgml/ref/gtm_ctl.sgmlin +++ b/doc-xc/src/sgml/ref/gtm_ctl.sgmlin @@ -205,35 +205,35 @@ PostgreSQL documentation Typically, you can issue the following command to start gtm/ -gtm_ctl start -S gtm -D datafolder +gtm_ctl start -Z gtm -D datafolder Or gtm_proxy: -gtm_ctl start -S gtm_proxy -D datafolder_proxy +gtm_ctl start -Z gtm_proxy -D datafolder_proxy Promote a GTM as active: -gtm_ctl promote -S gtm -D datafolder +gtm_ctl promote -Z gtm -D datafolder Reconnect a GTM proxy to another GTM instance: -gtm_ctl reconnect -S gtm_proxy -D datafolder_proxy -o '-s hostname -t port_number' +gtm_ctl reconnect -Z gtm_proxy -D datafolder_proxy -o '-s hostname -t port_number' Look at the status of a GTM server: -gtm_ctl status -S gtm -D datafolder +gtm_ctl status -Z gtm -D datafolder diff --git a/doc-xc/src/sgml/ref/gtm_proxy.sgmlin b/doc-xc/src/sgml/ref/gtm_proxy.sgmlin index 570f0184be..257836cd69 100644 --- a/doc-xc/src/sgml/ref/gtm_proxy.sgmlin +++ b/doc-xc/src/sgml/ref/gtm_proxy.sgmlin @@ -34,8 +34,8 @@ PostgreSQL documentation &xconly - Gtm proxy provides proxy feature from Postgres-XC coordinator and - datanode to gtm. Gtm proxy groups connections and interactions + Gtm proxy provides proxy feature from Postgres-XC Coordinator and + Datanode to gtm. Gtm proxy groups connections and interactions between gtm and other Postgres-XC components to reduce both the number of interactions and the size of messages. @@ -64,7 +64,7 @@ PostgreSQL documentation &xconly GTM-Proxy configuration parameters are specified in the configuration file - gtm_proxy.conf placed in the working directory + gtm_proxy.confgtm_proxy.conf placed in the working directory specified as -D option of gtm_proxy command line option as described in the next section. @@ -149,7 +149,7 @@ PostgreSQL documentation Specifies how many times GTM-Proxy retries to connect to GTM when communication error with GTM is detected. - Default value is zero. + Default value is 10,000. Refer to gtm_connect_retry_idle and gtm_connect_retry_interval. @@ -179,7 +179,7 @@ PostgreSQL documentation Specifies how log in second GTM-Proxy waits between each retry to connect to GTM when communication error with GTM is detected. - Default value is zero. + Default value is 1. Refer to gtm_connect_retry_count and gtm_connect_retry_idle. diff --git a/doc-xc/src/sgml/ref/initdb.sgmlin b/doc-xc/src/sgml/ref/initdb.sgmlin index 3ee8e63125..5472a207d7 100644 --- a/doc-xc/src/sgml/ref/initdb.sgmlin +++ b/doc-xc/src/sgml/ref/initdb.sgmlin @@ -168,7 +168,7 @@ PostgreSQL documentation Set the name of Postgres-XC node initialized. This option is mandatory when setting a node. - It permits to define the node itself in cluster node catalog + It permits one to define the node itself in cluster node catalog pgxc_node. The node name specified is also added in postgresql.conf as value of pgxc_node_name. diff --git a/doc-xc/src/sgml/ref/insert.sgmlin b/doc-xc/src/sgml/ref/insert.sgmlin index 00f34c1ba9..950394af01 100644 --- a/doc-xc/src/sgml/ref/insert.sgmlin +++ b/doc-xc/src/sgml/ref/insert.sgmlin @@ -19,7 +19,6 @@ PostgreSQL documentation INSERT - [ WITH [ RECURSIVE ] with_query [, ...] ] @@ -28,46 +27,17 @@ INSERT INTO table [ ( output_expression [ [ AS ] output_name ] [, ...] ] - - - - - -INSERT INTO table [ ( column [, ...] ) ] - { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] } - [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ] - - - Description &common; - INSERT inserts new rows into a table. One can insert one or more rows specified by value expressions, or zero or more rows resulting from a query. - - - - - The target column names can be listed in any order. If no list of - column names is given at all, the default is all the columns of the - table in their declared order; or the first N column - names, if there are only N columns supplied by the - VALUES clause or query. The values - supplied by the VALUES clause are - associated with the explicit or implicit column list left-to-right. - - Each column not present in the explicit or implicit column list will be @@ -90,7 +60,6 @@ INSERT INTO table [ ( SELECT. - You must have INSERT privilege on a table in order to insert into it. If a column list is specified, you only @@ -102,19 +71,6 @@ INSERT INTO table [ ( SELECT privilege on any table or column used in the query. - - - - - You must have INSERT privilege on a table in - order to insert into it. If a column list is specified, you only - need INSERT privilege on the listed columns. - Use of the RETURNING clause requires SELECT - privilege on all columns mentioned in RETURNING. - - @@ -194,13 +150,6 @@ INSERT INTO table [ ( query - -&pgonly; - - Current release of Postgres-XC does - not support query to supply rows. - - A query (SELECT statement) that supplies the rows to be inserted. Refer to the @@ -321,17 +270,6 @@ INSERT INTO films SELECT * FROM tmp_films WHERE date_prod < '2004-05-07'; - -&xconly; - - SELECT clause should be based upon the same distribution. For - example, you cannot INSERT into hash distribute - table to replicated table. - - -&common; - - This example inserts into array columns: @@ -378,17 +316,9 @@ INSERT INTO employees_log SELECT *, current_timestamp FROM upd; the RETURNING clause is a PostgreSQL extension, as is the ability - to use WITH with INSERT. - Also, the case in - which a column name list is omitted, but not all the columns are - filled from the VALUES clause or query, - is disallowed by the standard. - Postgres-XC extension. Also, the case in - which a column name list is omitted, but not all the columns are - filled from the VALUES clause, - is disallowed by the standard. + Postgres-XC extension, as is the ability diff --git a/doc-xc/src/sgml/ref/load.sgmlin b/doc-xc/src/sgml/ref/load.sgmlin index f404684a03..a1d6541e6a 100644 --- a/doc-xc/src/sgml/ref/load.sgmlin +++ b/doc-xc/src/sgml/ref/load.sgmlin @@ -64,10 +64,10 @@ LOAD 'filename' Please note that LOAD command loads library only - locally. You should load library manually in each datanode and - coordinator (you can use psql directly to datanodes for this + locally. You should load library manually in each Datanode and + Coordinator (you can use psql directly to Datanodes for this puupose), or edit postgresql.conf for all the - datanodes and coordinators. + Datanodes and Coordinators. diff --git a/doc-xc/src/sgml/ref/lock.sgmlin b/doc-xc/src/sgml/ref/lock.sgmlin index 2459df81e8..52b9a09a21 100644 --- a/doc-xc/src/sgml/ref/lock.sgmlin +++ b/doc-xc/src/sgml/ref/lock.sgmlin @@ -21,7 +21,7 @@ PostgreSQL documentation -LOCK [ TABLE ] [ ONLY ] name [, ...] [ IN lockmode MODE ] [ NOWAIT ] +LOCK [ TABLE ] [ ONLY ] name [ * ] [, ...] [ IN lockmode MODE ] [ NOWAIT ] where lockmode is one of: @@ -113,9 +113,11 @@ LOCK [ TABLE ] [ ONLY ] name [, ... The name (optionally schema-qualified) of an existing table to - lock. If ONLY is specified, only that table is - locked. If ONLY is not specified, the table and all - its descendant tables (if any) are locked. + lock. If ONLY is specified before the table name, only that + table is locked. If ONLY is not specified, the table and all + its descendant tables (if any) are locked. Optionally, * + can be specified after the table name to explicitly indicate that + descendant tables are included. diff --git a/doc-xc/src/sgml/ref/pg_controldata.sgmlin b/doc-xc/src/sgml/ref/pg_controldata.sgmlin index 38a8ad3c67..5ce721aae3 100644 --- a/doc-xc/src/sgml/ref/pg_controldata.sgmlin +++ b/doc-xc/src/sgml/ref/pg_controldata.sgmlin @@ -16,7 +16,7 @@ PostgreSQL documentation display control information of a PostgreSQL database cluster - display control information of a coordinator or datanode database cluster of Postgres-XC + display control information of a Coordinator or Datanode database cluster of Postgres-XC @@ -58,7 +58,7 @@ PostgreSQL documentation &xconly; - To print information of each datanode and coordinator, you should + To print information of each Datanode and Coordinator, you should issue pg_controldata against each of them. diff --git a/doc-xc/src/sgml/ref/pg_ctl-ref.sgmlin b/doc-xc/src/sgml/ref/pg_ctl-ref.sgmlin index d4219afcd8..daec963478 100644 --- a/doc-xc/src/sgml/ref/pg_ctl-ref.sgmlin +++ b/doc-xc/src/sgml/ref/pg_ctl-ref.sgmlin @@ -40,9 +40,7 @@ PostgreSQL documentation -p path -c - -S nodeopt - -C - -X + -Z nodeopt @@ -78,6 +76,9 @@ PostgreSQL documentation -o options + + -Z nodeopt + @@ -251,7 +252,7 @@ PostgreSQL documentation - Specifies to run as a coordinator. Only for Postgres-XC. + Specifies to run as a Coordinator. Only for Postgres-XC. @@ -355,11 +356,12 @@ PostgreSQL documentation - + - Specifies to run as coordinator or as datanode. You should - specify coordinator or datanode as nodeopt. Only for Postgres-XC. + Specifies to run node as a Coordinator or as a Datanode. + nodeopt can be respectively + coordinator or datanode. @@ -415,7 +417,7 @@ PostgreSQL documentation - Specifies to run as a datanode. Only for Postgres-XC. + Specifies to run as a Datanode. Only for Postgres-XC. @@ -504,7 +506,7 @@ PostgreSQL documentation - This command controls individual coordinator or datanode. + This command controls individual Coordinator or Datanode. diff --git a/doc-xc/src/sgml/ref/pg_dump.sgmlin b/doc-xc/src/sgml/ref/pg_dump.sgmlin index 065f14dda1..68b8bdd37d 100644 --- a/doc-xc/src/sgml/ref/pg_dump.sgmlin +++ b/doc-xc/src/sgml/ref/pg_dump.sgmlin @@ -683,7 +683,8 @@ PostgreSQL documentation Do not dump the contents of unlogged tables. This option has no effect on whether or not the table definitions (schema) are dumped; - it only suppresses dumping the table data. + it only suppresses dumping the table data. Data in unlogged tables + is always excluded when dumping from a standby server. diff --git a/doc-xc/src/sgml/ref/pg_resetxlog.sgmlin b/doc-xc/src/sgml/ref/pg_resetxlog.sgmlin index c6f31dcbf6..009447b261 100644 --- a/doc-xc/src/sgml/ref/pg_resetxlog.sgmlin +++ b/doc-xc/src/sgml/ref/pg_resetxlog.sgmlin @@ -208,8 +208,8 @@ PostgreSQL documentation In Postgres-XC, pg_resetxlog - will run only for local coordinator or datanode. You should run it - for each coordinator or datanode manually. + will run only for local Coordinator or Datanode. You should run it + for each Coordinator or Datanode manually. diff --git a/doc-xc/src/sgml/ref/pgxc_ddl.sgmlin b/doc-xc/src/sgml/ref/pgxc_ddl.sgmlin deleted file mode 100644 index 4397805dee..0000000000 --- a/doc-xc/src/sgml/ref/pgxc_ddl.sgmlin +++ /dev/null @@ -1,313 +0,0 @@ - - - - - pgxc_ddl - 1 - Application - - - - pgxc_ddl - - Coordinator catalog table synchronization and DDL treatment module - - - - - pgxc_ddl - - - - - pgxc_ddl - option - - - - - - Description - -&xconly - - pgxc_ddl is used to synchronize all coordinator catalog tables from -one chosen by a user. It is also possible to launch a DDL on one -coordinator, and then to synchronize all the coordinator catalog -tables from the catalog table of the coordinator having received the -DDL. Copy method is cold-based. All the coordinators are stopped, -catalog files are copied, then all the coordinators are restarted. - - - - Since Postgres-XC 0.9.3, DDL are - synchronized automatically on all the nodes of the - cluster, pgxc_ddl is let on purpose of future - feature development. - - - - Since Postgres-XC 0.9.4, pgxc_ddl and - pgxc.conf are not anymore installed by default. Scripts are saved - in the folder src/pgxc/bin/pgxc_ddl. - - - - - - Options - - - Options are specified with preceding '-', each - option may be associated with a value. - - - - Options are as follows: - - - - - - - - - Specify pgxc.conf folder, for - characteristics of all the coordinators. - - - - - - - - - Specify application folder, in case PATH is not defined. - - - - - - - - - Specify DDL file location. - - - - - - - - - Database name. - - - - - - - - - Coordinator number. Coordinator chosen corresponds to the one - defined in pgxc.conf at the nth place. - - - - - - - - - Specify temporary folder where to copy the configuration files - postgresql.conf and pg_hba.conf for each coordinator. - - - - - - - - - gtm_ctl issues the following keywords to select - operations on gtm - and gtm_proxy. - - - - - - - - - - Start a GTM/GTM proxy instance. - - - - - - - - - Restart a GTM/GTM proxy instance. - - - - - - - - - Stop a GTM/GTM proxy instance. - - - - - - - - - Look at the status of GTM instance. If active, 1 is printed. If - standby, 0 is printed. - - - - - - - - - Promote a GTM instance as active. - - - - - - - - - Reconnect a GTM Proxy to another GTM instance. - - - - - - - - - Typically, you can issue the following command to start gtm/ - -gtm_ctl start -S gtm -D datafolder - - - - - Or gtm_proxy: - -gtm_ctl start -S gtm_proxy -D datafolder_proxy - - - - - Promote a GTM as active: - -gtm_ctl promote -S gtm -D datafolder - - - - - Reconnect a GTM proxy to another GTM instance: - -gtm_ctl reconnect -S gtm_proxy -D datafolder_proxy -o '-s hostname -t port_number' - - - - - Look at the status of a GTM server: - -gtm_ctl status -S gtm -D datafolder - - - - - - - Configuration - -&xconly - - Because pgxc_ddl requires access to coordinator - configuration file and data folders, the following parameters have - to be set in pgxc.conf: - - - - <filename>pgxc.conf</filename> entries - - - - - Name - Type - Description - - - - - - coordinator_ports - string - - Specify the port number of all the coordinators. Maintain the - order of the value same as those in coordinator_hosts. It is - necessary to specify a number of ports equal to the number of - hosts. A comma separator is also necessary. - - - - - coordinator_folders - string - - Specify the data folders of all the coordinators. Maintain the - order of the value same as those in coordinator_hosts. It is - necessary to specify a number of data folders equal to the - number of hosts. A comma separator is also necessary. - - - - - coordinator_hosts - string - - Specify the host name or IP address of coordinator. Separate - each value with comma. - - - - -
- - - - About the temporary folder, this one has the name chosen by the - user. As an extension name, the PID of the shell script is - added. This folder is by definition in /tmp. The user can choose - the name freely. - - - - - - Configuration files of coordinators that have their catalog files - changed are defined with an extension name postgresql.conf.number, - "number" being the number of t coordinator in the order defined - in pgxc.conf. - - -
-
diff --git a/doc-xc/src/sgml/ref/postgres-ref.sgmlin b/doc-xc/src/sgml/ref/postgres-ref.sgmlin index ba155bf1df..b3f66d10f7 100644 --- a/doc-xc/src/sgml/ref/postgres-ref.sgmlin +++ b/doc-xc/src/sgml/ref/postgres-ref.sgmlin @@ -153,7 +153,7 @@ PostgreSQL documentation &xconly; - Specifies postgres server should run as a coordinator. + Specifies postgres server should run as a Coordinator. @@ -373,7 +373,7 @@ PostgreSQL documentation &xconly; - Specifies postgres server should run as a datanode. + Specifies postgres server should run as a Datanode. @@ -833,7 +833,7 @@ PostgreSQL documentation To start postgres in the background - To start postgres as a datanode in the background + To start postgres as a Datanode in the background using default values, type: @@ -854,7 +854,7 @@ PostgreSQL documentation To start postgres with a specific - To start postgres as a coordinator with a specific + To start postgres as a Coordinator with a specific port, e.g. 1234: diff --git a/doc-xc/src/sgml/ref/postmaster.sgmlin b/doc-xc/src/sgml/ref/postmaster.sgmlin index 498f612cef..f1c83e3d24 100644 --- a/doc-xc/src/sgml/ref/postmaster.sgmlin +++ b/doc-xc/src/sgml/ref/postmaster.sgmlin @@ -16,7 +16,7 @@ PostgreSQL documentation PostgreSQL database server - Postgres-XC database server for coordinator or datanode + Postgres-XC database server for Coordinator or Datanode diff --git a/doc-xc/src/sgml/ref/prepare_transaction.sgmlin b/doc-xc/src/sgml/ref/prepare_transaction.sgmlin index bf62e19741..a6a10543dd 100644 --- a/doc-xc/src/sgml/ref/prepare_transaction.sgmlin +++ b/doc-xc/src/sgml/ref/prepare_transaction.sgmlin @@ -126,8 +126,8 @@ PREPARE TRANSACTION transaction_id &xconly; - If the transaction is involved by more than one datanode and/or - coordinator, COMMIT PREPARED will be propagated to + If the transaction is involved by more than one Datanode and/or + Coordinator, COMMIT PREPARED will be propagated to these nodes. diff --git a/doc-xc/src/sgml/ref/psql-ref.sgmlin b/doc-xc/src/sgml/ref/psql-ref.sgmlin index e118146ee3..2c8a410b77 100644 --- a/doc-xc/src/sgml/ref/psql-ref.sgmlin +++ b/doc-xc/src/sgml/ref/psql-ref.sgmlin @@ -106,8 +106,8 @@ PostgreSQL documentation or a single backslash command. Thus you cannot mix SQL and psql meta-commands with this option. To achieve that, you could - pipe the string into psql, like - this: echo '\x \\ SELECT * FROM foo;' | psql. + pipe the string into psql, for example: + echo '\x \\ SELECT * FROM foo;' | psql. (\\ is the separator meta-command.)
@@ -116,7 +116,21 @@ PostgreSQL documentation BEGIN/COMMIT commands included in the string to divide it into multiple transactions. This is different from the behavior when the same string is fed to - psql's standard input. + psql's standard input. Also, only + the result of the last SQL command is returned. + + + Because of these legacy behaviors, putting more than one command in + the string often has unexpected results. It's + better to feed multiple commands to psql's + standard input, either using echo as + illustrated above, or via a shell here-document, for example: + +psql <<EOF +\x +SELECT * FROM foo; +EOF + diff --git a/doc-xc/src/sgml/ref/rollback_prepared.sgmlin b/doc-xc/src/sgml/ref/rollback_prepared.sgmlin index f9b091fda6..97b0ecf50f 100644 --- a/doc-xc/src/sgml/ref/rollback_prepared.sgmlin +++ b/doc-xc/src/sgml/ref/rollback_prepared.sgmlin @@ -78,7 +78,7 @@ ROLLBACK PREPARED transaction_id &xconly; - If more than one datanode and/or coordinator are involved in the + If more than one Datanode and/or Coordinator are involved in the transaction, ROLLBACK PREPARED command will propagate to all these nodes. diff --git a/doc-xc/src/sgml/ref/select.sgmlin b/doc-xc/src/sgml/ref/select.sgmlin index a50df4826e..9f8b40594b 100644 --- a/doc-xc/src/sgml/ref/select.sgmlin +++ b/doc-xc/src/sgml/ref/select.sgmlin @@ -31,11 +31,6 @@ PostgreSQL documentation - - [ WITH [ RECURSIVE ] with_query [, ...] ] SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] @@ -66,38 +61,6 @@ SELECT [ ALL | DISTINCT [ ON ( expressiontable_name [ * ] | with_query_name } - - - -SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] - * | expression [ [ AS ] output_name ] [, ...] - [ FROM from_item [, ...] ] - [ WHERE condition ] - [ GROUP BY expression [, ...] ] - [ HAVING condition [, ...] ] - [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ] - [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ] - [ LIMIT { count | ALL } ] - [ OFFSET start [ ROW | ROWS ] ] - [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ] - [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ] - -where from_item can be one of: - - [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ] - ( select ) [ AS ] alias [ ( column_alias [, ...] ) ] - with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ] - function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...] ) ] - function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] ) - from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ] - -and with_query is: - - with_query_name [ ( column_name [, ...] ) ] AS ( select | insert | update | delete ) - -TABLE [ ONLY ] table_name [ * ] - - @@ -112,7 +75,6 @@ TABLE [ ONLY ] table_name [ * ] -&pgonly; All queries in the WITH list are computed. These effectively serve as temporary tables that can be referenced @@ -121,17 +83,9 @@ TABLE [ ONLY ] table_name [ * ] computed only once. (See below.) - -&xconly - - WITH clause is not supported by the current - release of Postgres-XC. - - -&common; All elements in the FROM list are computed. (Each element in the FROM list is a real or @@ -152,11 +106,6 @@ TABLE [ ONLY ] table_name [ * ] - - -&pgonly; If the GROUP BY clause is specified, the output is combined into groups of rows that match on one or more values. If the HAVING clause is present, it @@ -164,13 +113,6 @@ TABLE [ ONLY ] table_name [ * ] and below.) - -&xconly; - - HAVING clause is not supported by the - current release of Postgres-XC. - - @@ -264,13 +206,6 @@ TABLE [ ONLY ] table_name [ * ] <literal>WITH</literal> Clause - -&xconly; - - WITH clause is not supported by the current release of Postgres-XC. - - - The WITH clause allows you to specify one or more subqueries that can be referenced by name in the primary query. @@ -343,12 +278,10 @@ TABLE [ ONLY ] table_name [ * ] See for additional information. - <literal>FROM</literal> Clause -&common; The FROM clause specifies one or more source tables for the SELECT. If multiple sources are @@ -367,10 +300,12 @@ TABLE [ ONLY ] table_name [ * ] table_name - The name (optionally schema-qualified) of an existing table or - view. If ONLY is specified, only that table is - scanned. If ONLY is not specified, the table and - any descendant tables are scanned. + The name (optionally schema-qualified) of an existing table or view. + If ONLY is specified before the table name, only that + table is scanned. If ONLY is not specified, the table + and all its descendant tables (if any) are scanned. Optionally, + * can be specified after the table name to explicitly + indicate that descendant tables are included. @@ -410,7 +345,6 @@ TABLE [ ONLY ] table_name [ * ] - with_query_name @@ -425,7 +359,6 @@ TABLE [ ONLY ] table_name [ * ] - function_name @@ -632,18 +565,7 @@ GROUP BY expression [, ...] <literal>HAVING</literal> Clause - - -&xconly; - - HAVING clause is not supported by the current - version of Postgres-XC. - - - The optional HAVING clause has the general form @@ -675,30 +597,19 @@ HAVING condition within aggregate functions. Such a query will emit a single row if the HAVING condition is true, zero rows if it is not true. - <literal>WINDOW</literal> Clause - - -&xconly; - - WINDOW clause is not supported by the current version of Postgres-XC. - - - The optional WINDOW clause has the general form WINDOW window_name AS ( window_definition ) [, ...] where window_name is - a name that can be referenced from subsequent window definitions or - OVER clauses, and + a name that can be referenced from OVER clauses or + subsequent window definitions, and window_definition is [ existing_window_name ] @@ -826,7 +737,6 @@ UNBOUNDED FOLLOWING , and . - @@ -862,18 +772,10 @@ UNBOUNDED FOLLOWING - An output column's name can be used to refer to the column's value in ORDER BY and GROUP BY clauses, but not in the WHERE or HAVING clauses; there you must write out the expression instead. - - - An output column's name can be used to refer to the column's value in - ORDER BY and GROUP BY clauses, but not in the - WHERE clause; there you must write - out the expression instead. - @@ -1470,10 +1372,6 @@ SELECT kind, sum(len) AS total FROM films GROUP BY kind; - - To sum the column len of all films, group the results by kind and show those group totals @@ -1491,7 +1389,6 @@ SELECT kind, sum(len) AS total Romantic | 04:38 - The following two examples are identical ways of sorting the individual @@ -1580,10 +1477,6 @@ SELECT * FROM distributors_2(111) AS (f1 int, f2 text); - - This example shows how to use a simple WITH clause: @@ -1635,7 +1528,6 @@ SELECT distance, employee_name FROM employee_recursive; else the query will loop indefinitely. (See for more examples.) - @@ -1704,15 +1596,24 @@ SELECT distributors.* WHERE distributors.name = 'Westward'; - <literal>ONLY</literal> and Parentheses + <literal>ONLY</literal> and Inheritance + + + The SQL standard requires parentheses around the table name when + writing ONLY, for example SELECT * FROM ONLY + (tab1), ONLY (tab2) WHERE .... PostgreSQL + considers these parentheses to be optional. + + + + PostgreSQL allows a trailing * to be written to + explicitly specify the non-ONLY behavior of including + child tables. The standard does not allow this. + - The SQL standard requires parentheses around the table name - after ONLY, as in SELECT * FROM ONLY - (tab1), ONLY (tab2) WHERE .... PostgreSQL supports that - as well, but the parentheses are optional. (This point applies - equally to all SQL commands supporting the ONLY - option.) + (These points apply equally to all SQL commands supporting the + ONLY option.) @@ -1753,10 +1654,6 @@ SELECT distributors.* WHERE distributors.name = 'Westward'; - - <literal>WINDOW</literal> Clause Restrictions @@ -1767,7 +1664,6 @@ SELECT distributors.* WHERE distributors.name = 'Westward'; options listed above. - <literal>LIMIT</literal> and <literal>OFFSET</literal> diff --git a/doc-xc/src/sgml/ref/truncate.sgmlin b/doc-xc/src/sgml/ref/truncate.sgmlin index e6e12c2adf..91bec0f133 100644 --- a/doc-xc/src/sgml/ref/truncate.sgmlin +++ b/doc-xc/src/sgml/ref/truncate.sgmlin @@ -21,7 +21,7 @@ PostgreSQL documentation -TRUNCATE [ TABLE ] [ ONLY ] name [, ... ] +TRUNCATE [ TABLE ] [ ONLY ] name [ * ] [, ... ] [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ] @@ -49,10 +49,12 @@ TRUNCATE [ TABLE ] [ ONLY ] name [, name - The name (optionally schema-qualified) of a table to be - truncated. If ONLY is specified, only that table is - truncated. If ONLY is not specified, the table and - all its descendant tables (if any) are truncated. + The name (optionally schema-qualified) of a table to truncate. + If ONLY is specified before the table name, only that table + is truncated. If ONLY is not specified, the table and all + its descendant tables (if any) are truncated. Optionally, * + can be specified after the table name to explicitly indicate that + descendant tables are included. diff --git a/doc-xc/src/sgml/ref/update.sgmlin b/doc-xc/src/sgml/ref/update.sgmlin index 8399711040..c3ef938f80 100644 --- a/doc-xc/src/sgml/ref/update.sgmlin +++ b/doc-xc/src/sgml/ref/update.sgmlin @@ -23,7 +23,7 @@ PostgreSQL documentation [ WITH [ RECURSIVE ] with_query [, ...] ] -UPDATE [ ONLY ] table [ [ AS ] alias ] +UPDATE [ ONLY ] table [ * ] [ [ AS ] alias ] SET { column = { expression | DEFAULT } | ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...] [ FROM from_list ] @@ -54,13 +54,6 @@ UPDATE [ ONLY ] table [ [ AS ] - - By default, UPDATE will update rows in the - specified table and all its subtables. If you wish to only update - the specific table mentioned, you must use the ONLY - clause. - - &pgonly; There are two ways to modify a table using information contained in @@ -119,6 +112,11 @@ UPDATE [ ONLY ] table [ [ AS ] The name (optionally schema-qualified) of the table to update. + If ONLY is specified before the table name, matching rows + are updated in the named table only. If ONLY is not + specified, matching rows are also updated in any tables inheriting from + the named table. Optionally, * can be specified after the + table name to explicitly indicate that descendant tables are included. diff --git a/doc-xc/src/sgml/ref/vacuum.sgmlin b/doc-xc/src/sgml/ref/vacuum.sgmlin index 48b2c03c79..74f6996ab3 100644 --- a/doc-xc/src/sgml/ref/vacuum.sgmlin +++ b/doc-xc/src/sgml/ref/vacuum.sgmlin @@ -86,7 +86,7 @@ VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ &xconly; In Postgres-XC, VACUUM will be performed - on all the datanodes as well. + on all the Datanodes as well. diff --git a/doc-xc/src/sgml/ref/vacuumdb.sgmlin b/doc-xc/src/sgml/ref/vacuumdb.sgmlin index fd46e3be02..25e620ffa3 100644 --- a/doc-xc/src/sgml/ref/vacuumdb.sgmlin +++ b/doc-xc/src/sgml/ref/vacuumdb.sgmlin @@ -77,7 +77,7 @@ PostgreSQL documentation &xconly; In Postgres-XC, VACUUM will be - performed in all the datanodes as well. + performed in all the Datanodes as well. diff --git a/doc-xc/src/sgml/reference.sgmlin b/doc-xc/src/sgml/reference.sgmlin index 27c227d6c4..957a20538a 100644 --- a/doc-xc/src/sgml/reference.sgmlin +++ b/doc-xc/src/sgml/reference.sgmlin @@ -15,7 +15,7 @@ PostgreSQL, in narrative, tutorial, or - Postgre-XC, in narrative, tutorial, or + Postgres-XC, in narrative, tutorial, or example form, can be found in other parts of this book. See the cross-references listed on each reference page. @@ -38,7 +38,7 @@ PostgreSQL. By SQL the - Postgre-XC. By SQL the + Postgres-XC. By SQL the language in general is meant; information about the standards conformance and compatibility of each command can be found on the @@ -224,7 +224,7 @@ PostgreSQL Client Applications - Postgre-XC Client Applications + Postgres-XC Client Applications @@ -234,7 +234,7 @@ PostgreSQL client applications and - Postgre-XC client applications and + Postgres-XC client applications and utilities. Not all of these commands are of general utility; some might require special privileges. The common feature of these @@ -256,9 +256,6 @@ &pgDump; &pgDumpall; &pgRestore; - - &pgxcClean; - &psqlRef; &reindexdb; &vacuumdb; @@ -270,7 +267,7 @@ PostgreSQL Server Applications - Postgre-XC Server Applications + Postgres-XC Server Applications @@ -280,7 +277,7 @@ PostgreSQL server applications and - Postgre-XC server applications and + Postgres-XC server applications and support utilities. These commands can only be run usefully on the host where the database server resides. Other utility programs @@ -292,7 +289,6 @@ >m; >mPxy; >mCtl; - &pgxcDdl; &initdb; @@ -303,13 +299,9 @@ &pgResetxlog; &pgxcClean; - &pgxcConfig; &postgres; &postmaster; - - &xcWatcher; - diff --git a/doc-xc/src/sgml/regress.sgmlin b/doc-xc/src/sgml/regress.sgmlin index 153f5e5f46..3e5d823487 100644 --- a/doc-xc/src/sgml/regress.sgmlin +++ b/doc-xc/src/sgml/regress.sgmlin @@ -49,7 +49,7 @@ sequential mode for running the tests. The sequential method runs each test script alone, while the parallel method starts up multiple server processes to run groups - of tests in parallel. Parallel testing gives confidence that + of tests in parallel. Parallel testing adds confidence that interprocess communication and locking are working correctly. @@ -64,9 +64,7 @@ gmake check in the top-level directory. (Or you can change to src/test/regress and run the command there.) - This will first build several auxiliary files, such as - sample user-defined trigger functions, and then run the test driver - script. At the end you should see something like: + At the end you should see something like: ======================= @@ -79,25 +77,31 @@ gmake check failure represents a serious problem. + - Because this test method runs a temporary server, it will not work - when you are the root user (since the server will not start as root). - If you already did the build as root, you do not have to start all - over. Instead, make the regression test directory writable by - some other user, log in as that user, and restart the tests. - For example: - -root# chmod -R a+w src/test/regress -root# su - joeuser -joeuser$ cd top-level build directory -joeuser$ gmake check - - (The only possible security risk here is that other - users might be able to alter the regression test results behind - your back. Use common sense when managing user permissions.) + This test method starts a temporary server, which is configured to accept + any connection originating 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 gmake + 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. + + - Alternatively, run the tests after installation. + 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 + root. Recommended procedure is not to do the build as root, or else to + perform testing after completing the installation. @@ -134,9 +138,9 @@ gmake MAX_CONNECTIONS=10 check Running the Tests Against an Existing Installation - To run the tests after installation)]]>, + To run the tests after installation (see ), initialize a data area and start the - server, , ]]> then type: + server as explained in , then type: gmake installcheck @@ -146,73 +150,89 @@ gmake installcheck-parallel The tests will expect to contact the server at the local host and the default port number, unless directed otherwise by PGHOST and - PGPORT environment variables. - - - - The source distribution also contains regression tests for the optional - procedural languages and for some of the contrib modules. - At present, these tests can be used only against an already-installed - server. To run the tests for all procedural languages that have been - built and installed, change to the src/pl directory of the - build tree and type: - -gmake installcheck - - You can also do this in any of the subdirectories of src/pl - to run tests for just one procedural language. To run the tests for all - contrib modules that have them, change to the - contrib directory of the build tree and type: - -gmake installcheck - - The contrib modules must have been built and installed first. - You can also do this in a subdirectory of contrib to run - the tests for just one module. + PGPORT environment variables. The tests will be run in a + database named regression; any existing database by this name + will be dropped. + The tests will also transiently create some cluster-wide objects, such as + user identities named regressuserN.
- Testing Hot Standby + Additional Test Suites - The source distribution also contains regression tests of the static - behaviour of Hot Standby. These tests require a running primary server - and a running standby server that is accepting new WAL changes from the - primary using either file-based log shipping or streaming replication. - Those servers are not automatically created for you, nor is the setup - documented here. Please check the various sections of the documentation already - devoted to the required commands and related issues. + The gmake check and gmake installcheck commands + run only the core regression tests, which test built-in + functionality of the PostgreSQL server. The source + distribution also contains additional test suites, most of them having + to do with add-on functionality such as optional procedural languages. - First create a database called "regression" on the primary. + To run all test suites applicable to the modules that have been selected + to be built, including the core tests, type one of these commands at the + top of the build tree: -psql -h primary -c "CREATE DATABASE regression" - - Next, run a preparatory script on the primary in the regression database: - src/test/regress/sql/hs_primary_setup.sql, and - allow for the changes to propagate to the standby, for example - -psql -h primary -f src/test/regress/sql/hs_primary_setup.sql regression - - Now confirm that the default connection for the tester is the standby - server under test and then run the standbycheck target from the regression - directory: - -cd src/test/regress -gmake standbycheck +gmake check-world +gmake installcheck-world + These commands run the tests using temporary servers or an + already-installed server, respectively, just as previously explained + for gmake check and gmake installcheck. Other + considerations are the same as previously explained for each method. + Note that gmake check-world builds a separate temporary + installation tree for each tested module, so it requires a great deal + more time and disk space than gmake installcheck-world. - Some extreme behaviours can also be generated on the primary using the - script: src/test/regress/sql/hs_primary_extremes.sql - to allow the behaviour of the standby to be tested. + Alternatively, you can run individual test suites by typing + gmake check or gmake installcheck in the appropriate + subdirectory of the build tree. Keep in mind that gmake + installcheck assumes you've installed the relevant module(s), not + only the core server. - Additional automated testing may be available in later releases. + The additional tests that can be invoked this way include: + + + + + + Regression tests for optional procedural languages (other than + PL/pgSQL, which is tested by the core tests). + These are located under src/pl. + + + + + Regression tests for contrib modules, + located under contrib. + Not all contrib modules have tests. + + + + + Regression tests for the ECPG interface library, + located in src/interfaces/ecpg/test. + + + + + Tests stressing behavior of concurrent sessions, + located in src/test/isolation. + + + + + + When using installcheck mode, these tests will destroy any + existing databases named pl_regression, + contrib_regression, isolationtest, + regress1, or connectdb, as well as + regression. @@ -220,7 +240,7 @@ gmake standbycheck Locale and Encoding - By default, the tests against a temporary installation use the + By default, tests using a temporary installation use the locale defined in the current environment and the corresponding database encoding as determined by initdb. It can be useful to test different locales by setting the appropriate @@ -253,8 +273,9 @@ gmake check LANG=C ENCODING=EUC_JP - The encoding can be set for tests against a temporary or an - existing installation. + The database encoding can be set for tests against either a temporary or + an existing installation, though in the latter case it must be + compatible with the installation's locale. @@ -262,7 +283,7 @@ gmake check LANG=C ENCODING=EUC_JP Extra Tests - The regression test suite contains a few test files that are not + The core regression test suite contains a few test files that are not run by default, because they might be platform-dependent or take a very long time to run. You can run these or other extra test files by setting the variable EXTRA_TESTS. For @@ -278,6 +299,52 @@ gmake check EXTRA_TESTS=collate.linux.utf8 LANG=en_US.utf8 platforms, and only when run in a database that uses UTF-8 encoding. + + + Testing Hot Standby + + + The source distribution also contains regression tests for the static + behavior of Hot Standby. These tests require a running primary server + and a running standby server that is accepting new WAL changes from the + primary (using either file-based log shipping or streaming replication). + Those servers are not automatically created for you, nor is replication + setup documented here. Please check the various sections of the + documentation devoted to the required commands and related issues. + + + + To run the Hot Standby tests, first create a database + called regression on the primary: + +psql -h primary -c "CREATE DATABASE regression" + + Next, run the preparatory script + src/test/regress/sql/hs_primary_setup.sql + on the primary in the regression database, for example: + +psql -h primary -f src/test/regress/sql/hs_primary_setup.sql regression + + Allow these changes to propagate to the standby. + + + + Now arrange for the default database connection to be to the standby + server under test (for example, by setting the PGHOST and + PGPORT environment variables). + Finally, run gmake standbycheck in the regression directory: + +cd src/test/regress +gmake standbycheck + + + + + Some extreme behaviors can also be generated on the primary using the + script src/test/regress/sql/hs_primary_extremes.sql + to allow the behavior of the standby to be tested. + + @@ -318,8 +385,10 @@ gmake check EXTRA_TESTS=collate.linux.utf8 LANG=en_US.utf8 file against the reference outputs stored in the src/test/regress/expected directory. Any differences are saved for your inspection in - src/test/regress/regression.diffs. (Or you - can run diff yourself, if you prefer.) + src/test/regress/regression.diffs. + (When running a test suite other than the core tests, these files + of course appear in the relevant subdirectory, + not src/test/regress.) @@ -361,7 +430,7 @@ gmake check EXTRA_TESTS=collate.linux.utf8 LANG=en_US.utf8 To run the tests in a different locale when using the temporary-installation method, pass the appropriate locale-related environment variables on - the make command line, for example: + the gmake command line, for example: gmake check LANG=de_DE.utf8 @@ -381,7 +450,7 @@ gmake check NO_LOCALE=1 - In general, it is nevertheless advisable to try to run the + In general, it is advisable to try to run the regression tests in the locale setup that is wanted for production use, as this will exercise the locale- and encoding-related code portions that will actually be used in @@ -415,7 +484,7 @@ gmake check NO_LOCALE=1 results involving mathematical functions of double precision columns have been observed. The float8 and geometry tests are particularly prone to small differences - across platforms, or even with different compiler optimization setting. + across platforms, or even with different compiler optimization settings. Human eyeball comparison is needed to determine the real significance of these differences which are usually 10 places to the right of the decimal point. @@ -477,14 +546,19 @@ exclusion of those that don't. If the errors test results in a server crash at the select infinite_recurse() command, it means that the platform's limit on process stack size is smaller than the - ]]> - max_stack_depth]]> - parameter indicates. This + parameter indicates. This can be fixed by running the server under a higher stack size limit (4MB is recommended with the default value of max_stack_depth). If you are unable to do that, an alternative is to reduce the value of max_stack_depth. + + + On platforms supporting getrlimit(), the server should + automatically choose a safe value of max_stack_depth; + so unless you've manually overridden this setting, a failure of this + kind is a reportable bug. + @@ -492,7 +566,7 @@ exclusion of those that don't. The random test script is intended to produce - random results. In rare cases, this causes the random regression + random results. In very rare cases, this causes that regression test to fail. Typing: diff results/random.out expected/random.out @@ -501,6 +575,18 @@ diff results/random.out expected/random.out not worry unless the random test fails repeatedly. + + + Configuration Parameters + + + When running the tests against an existing installation, some non-default + parameter settings could cause the tests to fail. For example, changing + parameters such as enable_seqscan or + enable_indexscan could cause plan changes that would + affect the results of tests that use EXPLAIN. + + diff --git a/doc-xc/src/sgml/release-7.4.sgmlin b/doc-xc/src/sgml/release-7.4.sgmlin index ee8184b16c..4548bd14f4 100644 --- a/doc-xc/src/sgml/release-7.4.sgmlin +++ b/doc-xc/src/sgml/release-7.4.sgmlin @@ -27,7 +27,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.26, - see the release notes for 7.4.26. + see . @@ -161,7 +161,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.26, - see the release notes for 7.4.26. + see . @@ -305,7 +305,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.26, - see the release notes for 7.4.26. + see . @@ -418,7 +418,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.26, - see the release notes for 7.4.26. + see . @@ -540,7 +540,7 @@ However, if you have any hash indexes on interval columns, you must REINDEX them after updating to 7.4.26. Also, if you are upgrading from a version earlier than 7.4.11, - see the release notes for 7.4.11. + see . @@ -668,7 +668,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.11, - see the release notes for 7.4.11. + see . @@ -748,7 +748,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.11, - see the release notes for 7.4.11. + see . @@ -834,7 +834,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.11, - see the release notes for 7.4.11. + see . @@ -918,7 +918,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.11, - see the release notes for 7.4.11. + see . @@ -994,7 +994,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.11, - see the release notes for 7.4.11. + see . @@ -1048,7 +1048,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.11, - see the release notes for 7.4.11. + see . @@ -1149,7 +1149,7 @@ - An explictly casted constant would be shown incorrectly. This could + An explicitly casted constant would be shown incorrectly. This could for example lead to corruption of a view definition during dump and reload. @@ -1193,8 +1193,8 @@ A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, see the release - notes for 7.4.11. + if you are upgrading from a version earlier than 7.4.11, + see . @@ -1346,8 +1346,8 @@ A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, see the release - notes for 7.4.11. + if you are upgrading from a version earlier than 7.4.11, + see . @@ -1423,8 +1423,8 @@ A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, see the release - notes for 7.4.11. + if you are upgrading from a version earlier than 7.4.11, + see . @@ -1494,8 +1494,8 @@ A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, see the release - notes for 7.4.11. + if you are upgrading from a version earlier than 7.4.11, + see . @@ -1564,8 +1564,8 @@ A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, see the release - notes for 7.4.11. + if you are upgrading from a version earlier than 7.4.11, + see . @@ -1653,8 +1653,8 @@ A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, see the release - notes for 7.4.11. + if you are upgrading from a version earlier than 7.4.11, + see . @@ -1701,8 +1701,8 @@ ANYARRAY A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, see the release - notes for 7.4.11. + if you are upgrading from a version earlier than 7.4.11, + see . @@ -1807,8 +1807,8 @@ Fuhr) A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, see the release - notes for 7.4.11. + if you are upgrading from a version earlier than 7.4.11, + see . @@ -1870,8 +1870,8 @@ and isinf during configure (Tom) A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.8, see the release - notes for 7.4.8. + if you are upgrading from a version earlier than 7.4.8, + see . Also, you might need to REINDEX indexes on textual columns after updating, if you are affected by the locale or plperl issues described below. @@ -1937,8 +1937,8 @@ what's actually returned by the query (Joe) A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.8, see the release - notes for 7.4.8. + if you are upgrading from a version earlier than 7.4.8, + see . @@ -1990,8 +1990,8 @@ table has been dropped A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.8, see the release - notes for 7.4.8. + if you are upgrading from a version earlier than 7.4.8, + see . diff --git a/doc-xc/src/sgml/release-8.0.sgmlin b/doc-xc/src/sgml/release-8.0.sgmlin index 469a76d893..5f485df684 100644 --- a/doc-xc/src/sgml/release-8.0.sgmlin +++ b/doc-xc/src/sgml/release-8.0.sgmlin @@ -27,7 +27,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.22, - see the release notes for 8.0.22. + see . @@ -231,7 +231,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.22, - see the release notes for 8.0.22. + see . @@ -391,7 +391,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.22, - see the release notes for 8.0.22. + see . @@ -562,7 +562,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.22, - see the release notes for 8.0.22. + see . @@ -719,7 +719,7 @@ However, if you have any hash indexes on interval columns, you must REINDEX them after updating to 8.0.22. Also, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. + see . @@ -881,7 +881,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. + see . @@ -961,7 +961,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. + see . @@ -1047,7 +1047,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. + see . @@ -1158,7 +1158,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. + see . @@ -1292,7 +1292,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. + see . @@ -1346,7 +1346,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. + see . @@ -1539,7 +1539,7 @@ - An explictly casted constant would be shown incorrectly. This could + An explicitly casted constant would be shown incorrectly. This could for example lead to corruption of a view definition during dump and reload. @@ -1592,8 +1592,8 @@ A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. + if you are upgrading from a version earlier than 8.0.6, + see . @@ -1798,8 +1798,8 @@ A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. + if you are upgrading from a version earlier than 8.0.6, + see . @@ -1907,8 +1907,8 @@ A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. + if you are upgrading from a version earlier than 8.0.6, + see . @@ -1983,8 +1983,8 @@ A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. + if you are upgrading from a version earlier than 8.0.6, + see . @@ -2026,8 +2026,8 @@ A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. + if you are upgrading from a version earlier than 8.0.6, + see . @@ -2096,8 +2096,8 @@ A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. + if you are upgrading from a version earlier than 8.0.6, + see . @@ -2215,8 +2215,8 @@ A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. + if you are upgrading from a version earlier than 8.0.6, + see . @@ -2272,8 +2272,8 @@ Wieland) A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. + if you are upgrading from a version earlier than 8.0.6, + see . @@ -2385,8 +2385,8 @@ Fuhr) A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. + if you are upgrading from a version earlier than 8.0.6, + see . @@ -2484,8 +2484,8 @@ and isinf during configure (Tom) A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.3, see the release - notes for 8.0.3. + if you are upgrading from a version earlier than 8.0.3, + see . Also, you might need to REINDEX indexes on textual columns after updating, if you are affected by the locale or plperl issues described below. @@ -2569,8 +2569,8 @@ what's actually returned by the query (Joe) A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.3, see the release - notes for 8.0.3. + if you are upgrading from a version earlier than 8.0.3, + see . @@ -2651,8 +2651,8 @@ to subquery results A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.3, see the release - notes for 8.0.3. + if you are upgrading from a version earlier than 8.0.3, + see . diff --git a/doc-xc/src/sgml/release-8.1.sgmlin b/doc-xc/src/sgml/release-8.1.sgmlin index 4e1a0c5dd0..306f4f6a06 100644 --- a/doc-xc/src/sgml/release-8.1.sgmlin +++ b/doc-xc/src/sgml/release-8.1.sgmlin @@ -27,7 +27,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.18, - see the release notes for 8.1.18. + see . @@ -246,7 +246,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.18, - see the release notes for 8.1.18. + see . @@ -458,7 +458,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.18, - see the release notes for 8.1.18. + see . @@ -612,7 +612,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.18, - see the release notes for 8.1.18. + see . @@ -802,7 +802,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.18, - see the release notes for 8.1.18. + see . @@ -985,7 +985,7 @@ However, if you have any hash indexes on interval columns, you must REINDEX them after updating to 8.1.18. Also, if you are upgrading from a version earlier than 8.1.15, - see the release notes for 8.1.15. + see . @@ -1147,7 +1147,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.15, - see the release notes for 8.1.15. + see . @@ -1270,7 +1270,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.15, - see the release notes for 8.1.15. + see . @@ -1390,7 +1390,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. Also, if you were running a previous + see . Also, if you were running a previous 8.1.X release, it is recommended to REINDEX all GiST indexes after the upgrade. @@ -1542,7 +1542,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -1718,7 +1718,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -1785,7 +1785,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -1991,7 +1991,7 @@ - An explictly casted constant would be shown incorrectly. This could + An explicitly casted constant would be shown incorrectly. This could for example lead to corruption of a view definition during dump and reload. @@ -2045,7 +2045,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -2287,7 +2287,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -2409,7 +2409,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -2499,7 +2499,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -2542,7 +2542,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -2643,7 +2643,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -2793,7 +2793,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -2871,7 +2871,7 @@ compilers (Hiroshi Saito) A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -3025,7 +3025,7 @@ documented (Tom) A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . diff --git a/doc-xc/src/sgml/release-8.2.sgmlin b/doc-xc/src/sgml/release-8.2.sgmlin index 2dd49d6a06..d1881fdf94 100644 --- a/doc-xc/src/sgml/release-8.2.sgmlin +++ b/doc-xc/src/sgml/release-8.2.sgmlin @@ -1,11 +1,678 @@ + + Release 8.2.23 + + + Release Date + 2011-12-05 + + + + This release contains a variety of fixes from 8.2.22. + For information about new features in the 8.2 major release, see + . + + + + This is expected to be the last PostgreSQL release + in the 8.2.X series. Users are encouraged to update to a newer + release branch soon. + + + + Migration to Version 8.2.23 + + + A dump/restore is not required for those running 8.2.X. + + + + However, a longstanding error was discovered in the definition of the + information_schema.referential_constraints view. If you + rely on correct results from that view, you should replace its + definition as explained in the first changelog item below. + + + + Also, if you are upgrading from a version earlier than 8.2.14, + see . + + + + + + Changes + + + + + + Fix bugs in information_schema.referential_constraints view + (Tom Lane) + + + + This view was being insufficiently careful about matching the + foreign-key constraint to the depended-on primary or unique key + constraint. That could result in failure to show a foreign key + constraint at all, or showing it multiple times, or claiming that it + depends on a different constraint than the one it really does. + + + + Since the view definition is installed by initdb, + merely upgrading will not fix the problem. If you need to fix this + in an existing installation, you can (as a superuser) drop the + information_schema schema then re-create it by sourcing + SHAREDIR/information_schema.sql. + (Run pg_config --sharedir if you're uncertain where + SHAREDIR is.) This must be repeated in each database + to be fixed. + + + + + + Fix TOAST-related data corruption during CREATE TABLE dest AS + SELECT * FROM src or INSERT INTO dest SELECT * FROM src + (Tom Lane) + + + + If a table has been modified by ALTER TABLE ADD COLUMN, + attempts to copy its data verbatim to another table could produce + corrupt results in certain corner cases. + The problem can only manifest in this precise form in 8.4 and later, + but we patched earlier versions as well in case there are other code + paths that could trigger the same bug. + + + + + + Fix race condition during toast table access from stale syscache entries + (Tom Lane) + + + + The typical symptom was transient errors like missing chunk + number 0 for toast value NNNNN in pg_toast_2619, where the cited + toast table would always belong to a system catalog. + + + + + + Improve locale support in money type's input and output + (Tom Lane) + + + + Aside from not supporting all standard + lc_monetary + formatting options, the input and output functions were inconsistent, + meaning there were locales in which dumped money values could + not be re-read. + + + + + + Don't let transform_null_equals + affect CASE foo WHEN NULL ... constructs + (Heikki Linnakangas) + + + + transform_null_equals is only supposed to affect + foo = NULL expressions written directly by the user, not + equality checks generated internally by this form of CASE. + + + + + + Change foreign-key trigger creation order to better support + self-referential foreign keys (Tom Lane) + + + + For a cascading foreign key that references its own table, a row update + will fire both the ON UPDATE trigger and the + CHECK trigger as one event. The ON UPDATE + trigger must execute first, else the CHECK will check a + non-final state of the row and possibly throw an inappropriate error. + However, the firing order of these triggers is determined by their + names, which generally sort in creation order since the triggers have + auto-generated names following the convention + RI_ConstraintTrigger_NNNN. A proper fix would require + modifying that convention, which we will do in 9.2, but it seems risky + to change it in existing releases. So this patch just changes the + creation order of the triggers. Users encountering this type of error + should drop and re-create the foreign key constraint to get its + triggers into the right order. + + + + + + Preserve blank lines within commands in psql's command + history (Robert Haas) + + + + The former behavior could cause problems if an empty line was removed + from within a string literal, for example. + + + + + + Use the preferred version of xsubpp to build PL/Perl, + not necessarily the operating system's main copy + (David Wheeler and Alex Hunsaker) + + + + + + Honor query cancel interrupts promptly in pgstatindex() + (Robert Haas) + + + + + + Ensure VPATH builds properly install all server header files + (Peter Eisentraut) + + + + + + Shorten file names reported in verbose error messages (Peter Eisentraut) + + + + Regular builds have always reported just the name of the C file + containing the error message call, but VPATH builds formerly + reported an absolute path name. + + + + + + Fix interpretation of Windows timezone names for Central America + (Tom Lane) + + + + Map Central America Standard Time to CST6, not + CST6CDT, because DST is generally not observed anywhere in + Central America. + + + + + + Update time zone data files to tzdata release 2011n + for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa; + also historical corrections for Alaska and British East Africa. + + + + + + + + + + Release 8.2.22 + + + Release Date + 2011-09-26 + + + + This release contains a variety of fixes from 8.2.21. + For information about new features in the 8.2 major release, see + . + + + + The PostgreSQL community will stop releasing updates + for the 8.2.X release series in December 2011. + Users are encouraged to update to a newer release branch soon. + + + + Migration to Version 8.2.22 + + + A dump/restore is not required for those running 8.2.X. + However, if you are upgrading from a version earlier than 8.2.14, + see . + + + + + + Changes + + + + + + Fix multiple bugs in GiST index page split processing (Heikki + Linnakangas) + + + + The probability of occurrence was low, but these could lead to index + corruption. + + + + + + Avoid possibly accessing off the end of memory in ANALYZE + (Noah Misch) + + + + This fixes a very-low-probability server crash scenario. + + + + + + Fix race condition in relcache init file invalidation (Tom Lane) + + + + There was a window wherein a new backend process could read a stale init + file but miss the inval messages that would tell it the data is stale. + The result would be bizarre failures in catalog accesses, typically + could not read block 0 in file ... later during startup. + + + + + + Fix memory leak at end of a GiST index scan (Tom Lane) + + + + Commands that perform many separate GiST index scans, such as + verification of a new GiST-based exclusion constraint on a table + already containing many rows, could transiently require large amounts of + memory due to this leak. + + + + + + Fix performance problem when constructing a large, lossy bitmap + (Tom Lane) + + + + + + Fix array- and path-creating functions to ensure padding bytes are + zeroes (Tom Lane) + + + + This avoids some situations where the planner will think that + semantically-equal constants are not equal, resulting in poor + optimization. + + + + + + Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane) + + + + This could lead to loss of committed transactions after a server crash. + + + + + + Fix dump bug for VALUES in a view (Tom Lane) + + + + + + Disallow SELECT FOR UPDATE/SHARE on sequences (Tom Lane) + + + + This operation doesn't work as expected and can lead to failures. + + + + + + Defend against integer overflow when computing size of a hash table (Tom + Lane) + + + + + + Fix portability bugs in use of credentials control messages for + peer authentication (Tom Lane) + + + + + + Fix typo in pg_srand48 seed initialization (Andres Freund) + + + + This led to failure to use all bits of the provided seed. This function + is not used on most platforms (only those without srandom), + and the potential security exposure from a less-random-than-expected + seed seems minimal in any case. + + + + + + Avoid integer overflow when the sum of LIMIT and + OFFSET values exceeds 2^63 (Heikki Linnakangas) + + + + + + Add overflow checks to int4 and int8 versions of + generate_series() (Robert Haas) + + + + + + Fix trailing-zero removal in to_char() (Marti Raudsepp) + + + + In a format with FM and no digit positions + after the decimal point, zeroes to the left of the decimal point could + be removed incorrectly. + + + + + + Fix pg_size_pretty() to avoid overflow for inputs close to + 2^63 (Tom Lane) + + + + + + Fix psql's counting of script file line numbers during + COPY from a different file (Tom Lane) + + + + + + Fix pg_restore's direct-to-database mode for + standard_conforming_strings (Tom Lane) + + + + pg_restore could emit incorrect commands when restoring + directly to a database server from an archive file that had been made + with standard_conforming_strings set to on. + + + + + + Fix write-past-buffer-end and memory leak in libpq's + LDAP service lookup code (Albe Laurenz) + + + + + + In libpq, avoid failures when using nonblocking I/O + and an SSL connection (Martin Pihlak, Tom Lane) + + + + + + Improve libpq's handling of failures during connection startup + (Tom Lane) + + + + In particular, the response to a server report of fork() + failure during SSL connection startup is now saner. + + + + + + Make ecpglib write double values with 15 digits + precision (Akira Kurosawa) + + + + + + Apply upstream fix for blowfish signed-character bug (CVE-2011-2483) + (Tom Lane) + + + + contrib/pg_crypto's blowfish encryption code could give + wrong results on platforms where char is signed (which is most), + leading to encrypted passwords being weaker than they should be. + + + + + + Fix memory leak in contrib/seg (Heikki Linnakangas) + + + + + + Fix pgstatindex() to give consistent results for empty + indexes (Tom Lane) + + + + + + Allow building with perl 5.14 (Alex Hunsaker) + + + + + + Update configure script's method for probing existence of system + functions (Tom Lane) + + + + The version of autoconf we used in 8.3 and 8.2 could be fooled by + compilers that perform link-time optimization. + + + + + + Fix assorted issues with build and install file paths containing spaces + (Tom Lane) + + + + + + Update time zone data files to tzdata release 2011i + for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan. + + + + + + + + + + Release 8.2.21 + + + Release Date + 2011-04-18 + + + + This release contains a variety of fixes from 8.2.20. + For information about new features in the 8.2 major release, see + . + + + + Migration to Version 8.2.21 + + + A dump/restore is not required for those running 8.2.X. + However, if you are upgrading from a version earlier than 8.2.14, + see . + + + + + + Changes + + + + + + Avoid potential deadlock during catalog cache initialization + (Nikhil Sontakke) + + + + In some cases the cache loading code would acquire share lock on a + system index before locking the index's catalog. This could deadlock + against processes trying to acquire exclusive locks in the other, + more standard order. + + + + + + Fix dangling-pointer problem in BEFORE ROW UPDATE trigger + handling when there was a concurrent update to the target tuple + (Tom Lane) + + + + This bug has been observed to result in intermittent cannot + extract system attribute from virtual tuple failures while trying to + do UPDATE RETURNING ctid. There is a very small probability + of more serious errors, such as generating incorrect index entries for + the updated tuple. + + + + + + Disallow DROP TABLE when there are pending deferred trigger + events for the table (Tom Lane) + + + + Formerly the DROP would go through, leading to + could not open relation with OID nnn errors when the + triggers were eventually fired. + + + + + + Fix PL/Python memory leak involving array slices (Daniel Popowich) + + + + + + Fix pg_restore to cope with long lines (over 1KB) in + TOC files (Tom Lane) + + + + + + Put in more safeguards against crashing due to division-by-zero + with overly enthusiastic compiler optimization (Aurelien Jarno) + + + + + + Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane) + + + + There was a hard-wired assumption that this system function was not + available on MIPS hardware on these systems. Use a compile-time test + instead, since more recent versions have it. + + + + + + Fix compilation failures on HP-UX (Heikki Linnakangas) + + + + + + Fix path separator used by pg_regress on Cygwin + (Andrew Dunstan) + + + + + + Update time zone data files to tzdata release 2011f + for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa, + and Turkey; also historical corrections for South Australia, Alaska, + and Hawaii. + + + + + + + + Release 8.2.20 - Release date + Release Date 2011-01-31 @@ -21,7 +688,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.14, - see the release notes for 8.2.14. + see . @@ -137,7 +804,7 @@ Release 8.2.19 - Release date + Release Date 2010-12-16 @@ -153,7 +820,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.14, - see the release notes for 8.2.14. + see . @@ -381,7 +1048,7 @@ Release 8.2.18 - Release date + Release Date 2010-10-04 @@ -397,7 +1064,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.14, - see the release notes for 8.2.14. + see . @@ -667,7 +1334,7 @@ Release 8.2.17 - Release date + Release Date 2010-05-17 @@ -683,7 +1350,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.14, - see the release notes for 8.2.14. + see . @@ -868,7 +1535,7 @@ Release 8.2.16 - Release date + Release Date 2010-03-15 @@ -884,7 +1551,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.14, - see the release notes for 8.2.14. + see . @@ -1139,7 +1806,7 @@ Release 8.2.15 - Release date + Release Date 2009-12-14 @@ -1155,7 +1822,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.14, - see the release notes for 8.2.14. + see . @@ -1202,7 +1869,7 @@ - This fix prevents a PANIC if a VACUUM FULL is cancelled + This fix prevents a PANIC if a VACUUM FULL is canceled after it's already committed its tuple movements, as well as transient errors if a plain VACUUM is interrupted after having truncated the table. @@ -1383,7 +2050,7 @@ Release 8.2.14 - Release date + Release Date 2009-09-09 @@ -1401,7 +2068,7 @@ However, if you have any hash indexes on interval columns, you must REINDEX them after updating to 8.2.14. Also, if you are upgrading from a version earlier than 8.2.11, - see the release notes for 8.2.11. + see . @@ -1613,7 +2280,7 @@ Release 8.2.13 - Release date + Release Date 2009-03-16 @@ -1629,7 +2296,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.11, - see the release notes for 8.2.11. + see . @@ -1779,7 +2446,7 @@ Release 8.2.12 - Release date + Release Date 2009-02-02 @@ -1795,7 +2462,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.11, - see the release notes for 8.2.11. + see . @@ -1958,7 +2625,7 @@ Release 8.2.11 - Release date + Release Date 2008-11-03 @@ -1974,7 +2641,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.7, - see the release notes for 8.2.7. Also, if you were running a previous + see . Also, if you were running a previous 8.2.X release, it is recommended to REINDEX all GiST indexes after the upgrade. @@ -2142,7 +2809,7 @@ Release 8.2.10 - Release date + Release Date 2008-09-22 @@ -2158,7 +2825,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.7, - see the release notes for 8.2.7. + see . @@ -2374,7 +3041,7 @@ Release 8.2.9 - Release date + Release Date 2008-06-12 @@ -2390,7 +3057,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.7, - see the release notes for 8.2.7. + see . @@ -2441,7 +3108,7 @@ Release 8.2.8 - Release date + Release Date never released @@ -2457,7 +3124,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.7, - see the release notes for 8.2.7. + see . @@ -2636,7 +3303,7 @@ Release 8.2.7 - Release date + Release Date 2008-03-17 @@ -2877,7 +3544,7 @@ - An explictly casted constant would be shown incorrectly. This could + An explicitly casted constant would be shown incorrectly. This could for example lead to corruption of a view definition during dump and reload. @@ -2905,7 +3572,7 @@ Release 8.2.6 - Release date + Release Date 2008-01-07 @@ -3196,7 +3863,7 @@ Release 8.2.5 - Release date + Release Date 2007-09-17 @@ -3373,7 +4040,7 @@ Release 8.2.4 - Release date + Release Date 2007-04-23 @@ -3517,7 +4184,7 @@ Release 8.2.3 - Release date + Release Date 2007-02-07 @@ -3563,7 +4230,7 @@ Release 8.2.2 - Release date + Release Date 2007-02-05 @@ -3721,7 +4388,7 @@ Release 8.2.1 - Release date + Release Date 2007-01-08 @@ -3856,7 +4523,7 @@ Release 8.2 - Release date + Release Date 2006-12-05 diff --git a/doc-xc/src/sgml/release-8.3.sgmlin b/doc-xc/src/sgml/release-8.3.sgmlin index c0595ab5df..d0d3383201 100644 --- a/doc-xc/src/sgml/release-8.3.sgmlin +++ b/doc-xc/src/sgml/release-8.3.sgmlin @@ -1,11 +1,3154 @@ + + Release 8.3.23 + + + Release Date + 2013-02-07 + + + + This release contains a variety of fixes from 8.3.22. + For information about new features in the 8.3 major release, see + . + + + + This is expected to be the last PostgreSQL release + in the 8.3.X series. Users are encouraged to update to a newer + release branch soon. + + + + Migration to Version 8.3.23 + + + A dump/restore is not required for those running 8.3.X. + + + + However, if you are upgrading from a version earlier than 8.3.17, + see the release notes for 8.3.17. + + + + + + Changes + + + + + + Prevent execution of enum_recv from SQL (Tom Lane) + + + + The function was misdeclared, allowing a simple SQL command to crash the + server. In principle an attacker might be able to use it to examine the + contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP) + for reporting this issue. (CVE-2013-0255) + + + + + + Fix SQL grammar to allow subscripting or field selection from a + sub-SELECT result (Tom Lane) + + + + + + Protect against race conditions when scanning + pg_tablespace (Stephen Frost, Tom Lane) + + + + CREATE DATABASE and DROP DATABASE could + misbehave if there were concurrent updates of + pg_tablespace entries. + + + + + + Prevent DROP OWNED from trying to drop whole databases or + tablespaces (Álvaro Herrera) + + + + For safety, ownership of these objects must be reassigned, not dropped. + + + + + + Prevent misbehavior when a RowExpr or XmlExpr + is parse-analyzed twice (Andres Freund, Tom Lane) + + + + This mistake could be user-visible in contexts such as + CREATE TABLE LIKE INCLUDING INDEXES. + + + + + + Improve defenses against integer overflow in hashtable sizing + calculations (Jeff Davis) + + + + + + Ensure that non-ASCII prompt strings are translated to the correct + code page on Windows (Alexander Law, Noah Misch) + + + + This bug affected psql and some other client programs. + + + + + + Fix possible crash in psql's \? command + when not connected to a database (Meng Qingzhong) + + + + + + Fix one-byte buffer overrun in libpq's + PQprintTuples (Xi Wang) + + + + This ancient function is not used anywhere by + PostgreSQL itself, but it might still be used by some + client code. + + + + + + Rearrange configure's tests for supplied functions so it is not + fooled by bogus exports from libedit/libreadline (Christoph Berg) + + + + + + Ensure Windows build number increases over time (Magnus Hagander) + + + + + + Make pgxs build executables with the right + .exe suffix when cross-compiling for Windows + (Zoltan Boszormenyi) + + + + + + Add new timezone abbreviation FET (Tom Lane) + + + + This is now used in some eastern-European time zones. + + + + + + + + + + Release 8.3.22 + + + Release Date + 2012-12-06 + + + + This release contains a variety of fixes from 8.3.21. + For information about new features in the 8.3 major release, see + . + + + + The PostgreSQL community will stop releasing updates + for the 8.3.X release series in February 2013. + Users are encouraged to update to a newer release branch soon. + + + + Migration to Version 8.3.22 + + + A dump/restore is not required for those running 8.3.X. + + + + However, if you are upgrading from a version earlier than 8.3.17, + see the release notes for 8.3.17. + + + + + + Changes + + + + + + Fix multiple bugs associated with CREATE INDEX + CONCURRENTLY (Andres Freund, Tom Lane) + + + + Fix CREATE INDEX CONCURRENTLY to use + in-place updates when changing the state of an index's + pg_index row. This prevents race conditions that could + cause concurrent sessions to miss updating the target index, thus + resulting in corrupt concurrently-created indexes. + + + + Also, fix various other operations to ensure that they ignore + invalid indexes resulting from a failed CREATE INDEX + CONCURRENTLY command. The most important of these is + VACUUM, because an auto-vacuum could easily be launched + on the table before corrective action can be taken to fix or remove + the invalid index. + + + + + + Avoid corruption of internal hash tables when out of memory + (Hitoshi Harada) + + + + + + Fix planning of non-strict equivalence clauses above outer joins + (Tom Lane) + + + + The planner could derive incorrect constraints from a clause equating + a non-strict construct to something else, for example + WHERE COALESCE(foo, 0) = 0 + when foo is coming from the nullable side of an outer join. + + + + + + Improve planner's ability to prove exclusion constraints from + equivalence classes (Tom Lane) + + + + + + Fix partial-row matching in hashed subplans to handle cross-type cases + correctly (Tom Lane) + + + + This affects multicolumn NOT IN subplans, such as + WHERE (a, b) NOT IN (SELECT x, y FROM ...) + when for instance b and y are int4 + and int8 respectively. This mistake led to wrong answers + or crashes depending on the specific datatypes involved. + + + + + + Acquire buffer lock when re-fetching the old tuple for an + AFTER ROW UPDATE/DELETE trigger (Andres Freund) + + + + In very unusual circumstances, this oversight could result in passing + incorrect data to the precheck logic for a foreign-key enforcement + trigger. That could result in a crash, or in an incorrect decision + about whether to fire the trigger. + + + + + + Fix REASSIGN OWNED to handle grants on tablespaces + (Álvaro Herrera) + + + + + + Ignore incorrect pg_attribute entries for system + columns for views (Tom Lane) + + + + Views do not have any system columns. However, we forgot to + remove such entries when converting a table to a view. That's fixed + properly for 9.3 and later, but in previous branches we need to defend + against existing mis-converted views. + + + + + + Fix rule printing to dump INSERT INTO table + DEFAULT VALUES correctly (Tom Lane) + + + + + + Guard against stack overflow when there are too many + UNION/INTERSECT/EXCEPT clauses + in a query (Tom Lane) + + + + + + Prevent platform-dependent failures when dividing the minimum possible + integer value by -1 (Xi Wang, Tom Lane) + + + + + + Fix possible access past end of string in date parsing + (Hitoshi Harada) + + + + + + Produce an understandable error message if the length of the path name + for a Unix-domain socket exceeds the platform-specific limit + (Tom Lane, Andrew Dunstan) + + + + Formerly, this would result in something quite unhelpful, such as + Non-recoverable failure in name resolution. + + + + + + Fix memory leaks when sending composite column values to the client + (Tom Lane) + + + + + + Make pg_ctl more robust about reading the + postmaster.pid file (Heikki Linnakangas) + + + + Fix race conditions and possible file descriptor leakage. + + + + + + Fix possible crash in psql if incorrectly-encoded data + is presented and the client_encoding setting is a + client-only encoding, such as SJIS (Jiang Guiqing) + + + + + + Fix bugs in the restore.sql script emitted by + pg_dump in tar output format (Tom Lane) + + + + The script would fail outright on tables whose names include + upper-case characters. Also, make the script capable of restoring + data in + + + + + Fix pg_restore to accept POSIX-conformant + tar files (Brian Weaver, Tom Lane) + + + + The original coding of pg_dump's tar + output mode produced files that are not fully conformant with the + POSIX standard. This has been corrected for version 9.3. This + patch updates previous branches so that they will accept both the + incorrect and the corrected formats, in hopes of avoiding + compatibility problems when 9.3 comes out. + + + + + + Fix pg_resetxlog to locate postmaster.pid + correctly when given a relative path to the data directory (Tom Lane) + + + + This mistake could lead to pg_resetxlog not noticing + that there is an active postmaster using the data directory. + + + + + + Fix libpq's lo_import() and + lo_export() functions to report file I/O errors properly + (Tom Lane) + + + + + + Fix ecpg's processing of nested structure pointer + variables (Muhammad Usama) + + + + + + Make contrib/pageinspect's btree page inspection + functions take buffer locks while examining pages (Tom Lane) + + + + + + Fix pgxs support for building loadable modules on AIX + (Tom Lane) + + + + Building modules outside the original source tree didn't work on AIX. + + + + + + Update time zone data files to tzdata release 2012j + for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western + Samoa, and portions of Brazil. + + + + + + + + + + Release 8.3.21 + + + Release Date + 2012-09-24 + + + + This release contains a variety of fixes from 8.3.20. + For information about new features in the 8.3 major release, see + . + + + + The PostgreSQL community will stop releasing updates + for the 8.3.X release series in February 2013. + Users are encouraged to update to a newer release branch soon. + + + + Migration to Version 8.3.21 + + + A dump/restore is not required for those running 8.3.X. + + + + However, if you are upgrading from a version earlier than 8.3.17, + see the release notes for 8.3.17. + + + + + + Changes + + + + + + Improve page-splitting decisions in GiST indexes (Alexander Korotkov, + Robert Haas, Tom Lane) + + + + Multi-column GiST indexes might suffer unexpected bloat due to this + error. + + + + + + Fix cascading privilege revoke to stop if privileges are still held + (Tom Lane) + + + + If we revoke a grant option from some role X, but + X still holds that option via a grant from someone + else, we should not recursively revoke the corresponding privilege + from role(s) Y that X had granted it + to. + + + + + + Fix handling of SIGFPE when PL/Perl is in use (Andres Freund) + + + + Perl resets the process's SIGFPE handler to + SIG_IGN, which could result in crashes later on. Restore + the normal Postgres signal handler after initializing PL/Perl. + + + + + + Prevent PL/Perl from crashing if a recursive PL/Perl function is + redefined while being executed (Tom Lane) + + + + + + Work around possible misoptimization in PL/Perl (Tom Lane) + + + + Some Linux distributions contain an incorrect version of + pthread.h that results in incorrect compiled code in + PL/Perl, leading to crashes if a PL/Perl function calls another one + that throws an error. + + + + + + Update time zone data files to tzdata release 2012f + for DST law changes in Fiji + + + + + + + + + + Release 8.3.20 + + + Release Date + 2012-08-17 + + + + This release contains a variety of fixes from 8.3.19. + For information about new features in the 8.3 major release, see + . + + + + The PostgreSQL community will stop releasing updates + for the 8.3.X release series in February 2013. + Users are encouraged to update to a newer release branch soon. + + + + Migration to Version 8.3.20 + + + A dump/restore is not required for those running 8.3.X. + + + + However, if you are upgrading from a version earlier than 8.3.17, + see the release notes for 8.3.17. + + + + + + Changes + + + + + + Prevent access to external files/URLs via XML entity references + (Noah Misch, Tom Lane) + + + + xml_parse() would attempt to fetch external files or + URLs as needed to resolve DTD and entity references in an XML value, + thus allowing unprivileged database users to attempt to fetch data + with the privileges of the database server. While the external data + wouldn't get returned directly to the user, portions of it could be + exposed in error messages if the data didn't parse as valid XML; and + in any case the mere ability to check existence of a file might be + useful to an attacker. (CVE-2012-3489) + + + + + + Prevent access to external files/URLs via contrib/xml2's + xslt_process() (Peter Eisentraut) + + + + libxslt offers the ability to read and write both + files and URLs through stylesheet commands, thus allowing + unprivileged database users to both read and write data with the + privileges of the database server. Disable that through proper use + of libxslt's security options. (CVE-2012-3488) + + + + Also, remove xslt_process()'s ability to fetch documents + and stylesheets from external files/URLs. While this was a + documented feature, it was long regarded as a bad idea. + The fix for CVE-2012-3489 broke that capability, and rather than + expend effort on trying to fix it, we're just going to summarily + remove it. + + + + + + Prevent too-early recycling of btree index pages (Noah Misch) + + + + When we allowed read-only transactions to skip assigning XIDs, we + introduced the possibility that a deleted btree page could be + recycled while a read-only transaction was still in flight to it. + This would result in incorrect index search results. The probability + of such an error occurring in the field seems very low because of the + timing requirements, but nonetheless it should be fixed. + + + + + + Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane) + + + + If ALTER SEQUENCE was executed on a freshly created or + reset sequence, and then precisely one nextval() call + was made on it, and then the server crashed, WAL replay would restore + the sequence to a state in which it appeared that no + nextval() had been done, thus allowing the first + sequence value to be returned again by the next + nextval() call. In particular this could manifest for + serial columns, since creation of a serial column's sequence + includes an ALTER SEQUENCE OWNED BY step. + + + + + + Ensure the backup_label file is fsync'd after + pg_start_backup() (Dave Kerr) + + + + + + Back-patch 9.1 improvement to compress the fsync request queue + (Robert Haas) + + + + This improves performance during checkpoints. The 9.1 change + has now seen enough field testing to seem safe to back-patch. + + + + + + Only allow autovacuum to be auto-canceled by a directly blocked + process (Tom Lane) + + + + The original coding could allow inconsistent behavior in some cases; + in particular, an autovacuum could get canceled after less than + deadlock_timeout grace period. + + + + + + Improve logging of autovacuum cancels (Robert Haas) + + + + + + Fix log collector so that log_truncate_on_rotation works + during the very first log rotation after server start (Tom Lane) + + + + + + Ensure that a whole-row reference to a subquery doesn't include any + extra GROUP BY or ORDER BY columns (Tom Lane) + + + + + + Disallow copying whole-row references in CHECK + constraints and index definitions during CREATE TABLE + (Tom Lane) + + + + This situation can arise in CREATE TABLE with + LIKE or INHERITS. The copied whole-row + variable was incorrectly labeled with the row type of the original + table not the new one. Rejecting the case seems reasonable for + LIKE, since the row types might well diverge later. For + INHERITS we should ideally allow it, with an implicit + coercion to the parent table's row type; but that will require more + work than seems safe to back-patch. + + + + + + Fix memory leak in ARRAY(SELECT ...) subqueries (Heikki + Linnakangas, Tom Lane) + + + + + + Fix extraction of common prefixes from regular expressions (Tom Lane) + + + + The code could get confused by quantified parenthesized + subexpressions, such as ^(foo)?bar. This would lead to + incorrect index optimization of searches for such patterns. + + + + + + Report errors properly in contrib/xml2's + xslt_process() (Tom Lane) + + + + + + Update time zone data files to tzdata release 2012e + for DST law changes in Morocco and Tokelau + + + + + + + + + + Release 8.3.19 + + + Release Date + 2012-06-04 + + + + This release contains a variety of fixes from 8.3.18. + For information about new features in the 8.3 major release, see + . + + + + Migration to Version 8.3.19 + + + A dump/restore is not required for those running 8.3.X. + + + + However, if you are upgrading from a version earlier than 8.3.17, + see the release notes for 8.3.17. + + + + + + Changes + + + + + + Fix incorrect password transformation in + contrib/pgcrypto's DES crypt() function + (Solar Designer) + + + + If a password string contained the byte value 0x80, the + remainder of the password was ignored, causing the password to be much + weaker than it appeared. With this fix, the rest of the string is + properly included in the DES hash. Any stored password values that are + affected by this bug will thus no longer match, so the stored values may + need to be updated. (CVE-2012-2143) + + + + + + Ignore SECURITY DEFINER and SET attributes for + a procedural language's call handler (Tom Lane) + + + + Applying such attributes to a call handler could crash the server. + (CVE-2012-2655) + + + + + + Allow numeric timezone offsets in timestamp input to be up to + 16 hours away from UTC (Tom Lane) + + + + Some historical time zones have offsets larger than 15 hours, the + previous limit. This could result in dumped data values being rejected + during reload. + + + + + + Fix timestamp conversion to cope when the given time is exactly the + last DST transition time for the current timezone (Tom Lane) + + + + This oversight has been there a long time, but was not noticed + previously because most DST-using zones are presumed to have an + indefinite sequence of future DST transitions. + + + + + + Fix text to name and char to name + casts to perform string truncation correctly in multibyte encodings + (Karl Schnaitter) + + + + + + Fix memory copying bug in to_tsquery() (Heikki Linnakangas) + + + + + + Fix slow session startup when pg_attribute is very large + (Tom Lane) + + + + If pg_attribute exceeds one-fourth of + shared_buffers, cache rebuilding code that is sometimes + needed during session start would trigger the synchronized-scan logic, + causing it to take many times longer than normal. The problem was + particularly acute if many new sessions were starting at once. + + + + + + Ensure sequential scans check for query cancel reasonably often (Merlin + Moncure) + + + + A scan encountering many consecutive pages that contain no live tuples + would not respond to interrupts meanwhile. + + + + + + Ensure the Windows implementation of PGSemaphoreLock() + clears ImmediateInterruptOK before returning (Tom Lane) + + + + This oversight meant that a query-cancel interrupt received later + in the same query could be accepted at an unsafe time, with + unpredictable but not good consequences. + + + + + + Show whole-row variables safely when printing views or rules + (Abbas Butt, Tom Lane) + + + + Corner cases involving ambiguous names (that is, the name could be + either a table or column name of the query) were printed in an + ambiguous way, risking that the view or rule would be interpreted + differently after dump and reload. Avoid the ambiguous case by + attaching a no-op cast. + + + + + + Ensure autovacuum worker processes perform stack depth checking + properly (Heikki Linnakangas) + + + + Previously, infinite recursion in a function invoked by + auto-ANALYZE could crash worker processes. + + + + + + Fix logging collector to not lose log coherency under high load (Andrew + Dunstan) + + + + The collector previously could fail to reassemble large messages if it + got too busy. + + + + + + Fix logging collector to ensure it will restart file rotation + after receiving SIGHUP (Tom Lane) + + + + + + Fix PL/pgSQL's GET DIAGNOSTICS command when the target + is the function's first variable (Tom Lane) + + + + + + Fix several performance problems in pg_dump when + the database contains many objects (Jeff Janes, Tom Lane) + + + + pg_dump could get very slow if the database contained + many schemas, or if many objects are in dependency loops, or if there + are many owned sequences. + + + + + + Fix contrib/dblink's dblink_exec() to not leak + temporary database connections upon error (Tom Lane) + + + + + + Update time zone data files to tzdata release 2012c + for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland + Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; + also historical corrections for Canada. + + + + + + + + + + Release 8.3.23 + + + Release Date + 2013-02-07 + + + + This release contains a variety of fixes from 8.3.22. + For information about new features in the 8.3 major release, see + . + + + + This is expected to be the last PostgreSQL release + in the 8.3.X series. Users are encouraged to update to a newer + release branch soon. + + + + Migration to Version 8.3.23 + + + A dump/restore is not required for those running 8.3.X. + + + + However, if you are upgrading from a version earlier than 8.3.17, + see . + + + + + + Changes + + + + + + Prevent execution of enum_recv from SQL (Tom Lane) + + + + The function was misdeclared, allowing a simple SQL command to crash the + server. In principle an attacker might be able to use it to examine the + contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP) + for reporting this issue. (CVE-2013-0255) + + + + + + Fix SQL grammar to allow subscripting or field selection from a + sub-SELECT result (Tom Lane) + + + + + + Protect against race conditions when scanning + pg_tablespace (Stephen Frost, Tom Lane) + + + + CREATE DATABASE and DROP DATABASE could + misbehave if there were concurrent updates of + pg_tablespace entries. + + + + + + Prevent DROP OWNED from trying to drop whole databases or + tablespaces (Álvaro Herrera) + + + + For safety, ownership of these objects must be reassigned, not dropped. + + + + + + Prevent misbehavior when a RowExpr or XmlExpr + is parse-analyzed twice (Andres Freund, Tom Lane) + + + + This mistake could be user-visible in contexts such as + CREATE TABLE LIKE INCLUDING INDEXES. + + + + + + Improve defenses against integer overflow in hashtable sizing + calculations (Jeff Davis) + + + + + + Ensure that non-ASCII prompt strings are translated to the correct + code page on Windows (Alexander Law, Noah Misch) + + + + This bug affected psql and some other client programs. + + + + + + Fix possible crash in psql's \? command + when not connected to a database (Meng Qingzhong) + + + + + + Fix one-byte buffer overrun in libpq's + PQprintTuples (Xi Wang) + + + + This ancient function is not used anywhere by + PostgreSQL itself, but it might still be used by some + client code. + + + + + + Rearrange configure's tests for supplied functions so it is not + fooled by bogus exports from libedit/libreadline (Christoph Berg) + + + + + + Ensure Windows build number increases over time (Magnus Hagander) + + + + + + Make pgxs build executables with the right + .exe suffix when cross-compiling for Windows + (Zoltan Boszormenyi) + + + + + + Add new timezone abbreviation FET (Tom Lane) + + + + This is now used in some eastern-European time zones. + + + + + + + + + + Release 8.3.22 + + + Release Date + 2012-12-06 + + + + This release contains a variety of fixes from 8.3.21. + For information about new features in the 8.3 major release, see + . + + + + The PostgreSQL community will stop releasing updates + for the 8.3.X release series in February 2013. + Users are encouraged to update to a newer release branch soon. + + + + Migration to Version 8.3.22 + + + A dump/restore is not required for those running 8.3.X. + + + + However, if you are upgrading from a version earlier than 8.3.17, + see . + + + + + + Changes + + + + + + Fix multiple bugs associated with CREATE INDEX + CONCURRENTLY (Andres Freund, Tom Lane) + + + + Fix CREATE INDEX CONCURRENTLY to use + in-place updates when changing the state of an index's + pg_index row. This prevents race conditions that could + cause concurrent sessions to miss updating the target index, thus + resulting in corrupt concurrently-created indexes. + + + + Also, fix various other operations to ensure that they ignore + invalid indexes resulting from a failed CREATE INDEX + CONCURRENTLY command. The most important of these is + VACUUM, because an auto-vacuum could easily be launched + on the table before corrective action can be taken to fix or remove + the invalid index. + + + + + + Avoid corruption of internal hash tables when out of memory + (Hitoshi Harada) + + + + + + Fix planning of non-strict equivalence clauses above outer joins + (Tom Lane) + + + + The planner could derive incorrect constraints from a clause equating + a non-strict construct to something else, for example + WHERE COALESCE(foo, 0) = 0 + when foo is coming from the nullable side of an outer join. + + + + + + Improve planner's ability to prove exclusion constraints from + equivalence classes (Tom Lane) + + + + + + Fix partial-row matching in hashed subplans to handle cross-type cases + correctly (Tom Lane) + + + + This affects multicolumn NOT IN subplans, such as + WHERE (a, b) NOT IN (SELECT x, y FROM ...) + when for instance b and y are int4 + and int8 respectively. This mistake led to wrong answers + or crashes depending on the specific datatypes involved. + + + + + + Acquire buffer lock when re-fetching the old tuple for an + AFTER ROW UPDATE/DELETE trigger (Andres Freund) + + + + In very unusual circumstances, this oversight could result in passing + incorrect data to the precheck logic for a foreign-key enforcement + trigger. That could result in a crash, or in an incorrect decision + about whether to fire the trigger. + + + + + + Fix REASSIGN OWNED to handle grants on tablespaces + (Álvaro Herrera) + + + + + + Ignore incorrect pg_attribute entries for system + columns for views (Tom Lane) + + + + Views do not have any system columns. However, we forgot to + remove such entries when converting a table to a view. That's fixed + properly for 9.3 and later, but in previous branches we need to defend + against existing mis-converted views. + + + + + + Fix rule printing to dump INSERT INTO table + DEFAULT VALUES correctly (Tom Lane) + + + + + + Guard against stack overflow when there are too many + UNION/INTERSECT/EXCEPT clauses + in a query (Tom Lane) + + + + + + Prevent platform-dependent failures when dividing the minimum possible + integer value by -1 (Xi Wang, Tom Lane) + + + + + + Fix possible access past end of string in date parsing + (Hitoshi Harada) + + + + + + Produce an understandable error message if the length of the path name + for a Unix-domain socket exceeds the platform-specific limit + (Tom Lane, Andrew Dunstan) + + + + Formerly, this would result in something quite unhelpful, such as + Non-recoverable failure in name resolution. + + + + + + Fix memory leaks when sending composite column values to the client + (Tom Lane) + + + + + + Make pg_ctl more robust about reading the + postmaster.pid file (Heikki Linnakangas) + + + + Fix race conditions and possible file descriptor leakage. + + + + + + Fix possible crash in psql if incorrectly-encoded data + is presented and the client_encoding setting is a + client-only encoding, such as SJIS (Jiang Guiqing) + + + + + + Fix bugs in the restore.sql script emitted by + pg_dump in tar output format (Tom Lane) + + + + The script would fail outright on tables whose names include + upper-case characters. Also, make the script capable of restoring + data in + + + + + Fix pg_restore to accept POSIX-conformant + tar files (Brian Weaver, Tom Lane) + + + + The original coding of pg_dump's tar + output mode produced files that are not fully conformant with the + POSIX standard. This has been corrected for version 9.3. This + patch updates previous branches so that they will accept both the + incorrect and the corrected formats, in hopes of avoiding + compatibility problems when 9.3 comes out. + + + + + + Fix pg_resetxlog to locate postmaster.pid + correctly when given a relative path to the data directory (Tom Lane) + + + + This mistake could lead to pg_resetxlog not noticing + that there is an active postmaster using the data directory. + + + + + + Fix libpq's lo_import() and + lo_export() functions to report file I/O errors properly + (Tom Lane) + + + + + + Fix ecpg's processing of nested structure pointer + variables (Muhammad Usama) + + + + + + Make contrib/pageinspect's btree page inspection + functions take buffer locks while examining pages (Tom Lane) + + + + + + Fix pgxs support for building loadable modules on AIX + (Tom Lane) + + + + Building modules outside the original source tree didn't work on AIX. + + + + + + Update time zone data files to tzdata release 2012j + for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western + Samoa, and portions of Brazil. + + + + + + + + + + Release 8.3.21 + + + Release Date + 2012-09-24 + + + + This release contains a variety of fixes from 8.3.20. + For information about new features in the 8.3 major release, see + . + + + + The PostgreSQL community will stop releasing updates + for the 8.3.X release series in February 2013. + Users are encouraged to update to a newer release branch soon. + + + + Migration to Version 8.3.21 + + + A dump/restore is not required for those running 8.3.X. + + + + However, if you are upgrading from a version earlier than 8.3.17, + see . + + + + + + Changes + + + + + + Improve page-splitting decisions in GiST indexes (Alexander Korotkov, + Robert Haas, Tom Lane) + + + + Multi-column GiST indexes might suffer unexpected bloat due to this + error. + + + + + + Fix cascading privilege revoke to stop if privileges are still held + (Tom Lane) + + + + If we revoke a grant option from some role X, but + X still holds that option via a grant from someone + else, we should not recursively revoke the corresponding privilege + from role(s) Y that X had granted it + to. + + + + + + Fix handling of SIGFPE when PL/Perl is in use (Andres Freund) + + + + Perl resets the process's SIGFPE handler to + SIG_IGN, which could result in crashes later on. Restore + the normal Postgres signal handler after initializing PL/Perl. + + + + + + Prevent PL/Perl from crashing if a recursive PL/Perl function is + redefined while being executed (Tom Lane) + + + + + + Work around possible misoptimization in PL/Perl (Tom Lane) + + + + Some Linux distributions contain an incorrect version of + pthread.h that results in incorrect compiled code in + PL/Perl, leading to crashes if a PL/Perl function calls another one + that throws an error. + + + + + + Update time zone data files to tzdata release 2012f + for DST law changes in Fiji + + + + + + + + + + Release 8.3.20 + + + Release Date + 2012-08-17 + + + + This release contains a variety of fixes from 8.3.19. + For information about new features in the 8.3 major release, see + . + + + + The PostgreSQL community will stop releasing updates + for the 8.3.X release series in February 2013. + Users are encouraged to update to a newer release branch soon. + + + + Migration to Version 8.3.20 + + + A dump/restore is not required for those running 8.3.X. + + + + However, if you are upgrading from a version earlier than 8.3.17, + see . + + + + + + Changes + + + + + + Prevent access to external files/URLs via XML entity references + (Noah Misch, Tom Lane) + + + + xml_parse() would attempt to fetch external files or + URLs as needed to resolve DTD and entity references in an XML value, + thus allowing unprivileged database users to attempt to fetch data + with the privileges of the database server. While the external data + wouldn't get returned directly to the user, portions of it could be + exposed in error messages if the data didn't parse as valid XML; and + in any case the mere ability to check existence of a file might be + useful to an attacker. (CVE-2012-3489) + + + + + + Prevent access to external files/URLs via contrib/xml2's + xslt_process() (Peter Eisentraut) + + + + libxslt offers the ability to read and write both + files and URLs through stylesheet commands, thus allowing + unprivileged database users to both read and write data with the + privileges of the database server. Disable that through proper use + of libxslt's security options. (CVE-2012-3488) + + + + Also, remove xslt_process()'s ability to fetch documents + and stylesheets from external files/URLs. While this was a + documented feature, it was long regarded as a bad idea. + The fix for CVE-2012-3489 broke that capability, and rather than + expend effort on trying to fix it, we're just going to summarily + remove it. + + + + + + Prevent too-early recycling of btree index pages (Noah Misch) + + + + When we allowed read-only transactions to skip assigning XIDs, we + introduced the possibility that a deleted btree page could be + recycled while a read-only transaction was still in flight to it. + This would result in incorrect index search results. The probability + of such an error occurring in the field seems very low because of the + timing requirements, but nonetheless it should be fixed. + + + + + + Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane) + + + + If ALTER SEQUENCE was executed on a freshly created or + reset sequence, and then precisely one nextval() call + was made on it, and then the server crashed, WAL replay would restore + the sequence to a state in which it appeared that no + nextval() had been done, thus allowing the first + sequence value to be returned again by the next + nextval() call. In particular this could manifest for + serial columns, since creation of a serial column's sequence + includes an ALTER SEQUENCE OWNED BY step. + + + + + + Ensure the backup_label file is fsync'd after + pg_start_backup() (Dave Kerr) + + + + + + Back-patch 9.1 improvement to compress the fsync request queue + (Robert Haas) + + + + This improves performance during checkpoints. The 9.1 change + has now seen enough field testing to seem safe to back-patch. + + + + + + Only allow autovacuum to be auto-canceled by a directly blocked + process (Tom Lane) + + + + The original coding could allow inconsistent behavior in some cases; + in particular, an autovacuum could get canceled after less than + deadlock_timeout grace period. + + + + + + Improve logging of autovacuum cancels (Robert Haas) + + + + + + Fix log collector so that log_truncate_on_rotation works + during the very first log rotation after server start (Tom Lane) + + + + + + Ensure that a whole-row reference to a subquery doesn't include any + extra GROUP BY or ORDER BY columns (Tom Lane) + + + + + + Disallow copying whole-row references in CHECK + constraints and index definitions during CREATE TABLE + (Tom Lane) + + + + This situation can arise in CREATE TABLE with + LIKE or INHERITS. The copied whole-row + variable was incorrectly labeled with the row type of the original + table not the new one. Rejecting the case seems reasonable for + LIKE, since the row types might well diverge later. For + INHERITS we should ideally allow it, with an implicit + coercion to the parent table's row type; but that will require more + work than seems safe to back-patch. + + + + + + Fix memory leak in ARRAY(SELECT ...) subqueries (Heikki + Linnakangas, Tom Lane) + + + + + + Fix extraction of common prefixes from regular expressions (Tom Lane) + + + + The code could get confused by quantified parenthesized + subexpressions, such as ^(foo)?bar. This would lead to + incorrect index optimization of searches for such patterns. + + + + + + Report errors properly in contrib/xml2's + xslt_process() (Tom Lane) + + + + + + Update time zone data files to tzdata release 2012e + for DST law changes in Morocco and Tokelau + + + + + + + + + + Release 8.3.19 + + + Release Date + 2012-06-04 + + + + This release contains a variety of fixes from 8.3.18. + For information about new features in the 8.3 major release, see + . + + + + Migration to Version 8.3.19 + + + A dump/restore is not required for those running 8.3.X. + + + + However, if you are upgrading from a version earlier than 8.3.17, + see . + + + + + + Changes + + + + + + Fix incorrect password transformation in + contrib/pgcrypto's DES crypt() function + (Solar Designer) + + + + If a password string contained the byte value 0x80, the + remainder of the password was ignored, causing the password to be much + weaker than it appeared. With this fix, the rest of the string is + properly included in the DES hash. Any stored password values that are + affected by this bug will thus no longer match, so the stored values may + need to be updated. (CVE-2012-2143) + + + + + + Ignore SECURITY DEFINER and SET attributes for + a procedural language's call handler (Tom Lane) + + + + Applying such attributes to a call handler could crash the server. + (CVE-2012-2655) + + + + + + Allow numeric timezone offsets in timestamp input to be up to + 16 hours away from UTC (Tom Lane) + + + + Some historical time zones have offsets larger than 15 hours, the + previous limit. This could result in dumped data values being rejected + during reload. + + + + + + Fix timestamp conversion to cope when the given time is exactly the + last DST transition time for the current timezone (Tom Lane) + + + + This oversight has been there a long time, but was not noticed + previously because most DST-using zones are presumed to have an + indefinite sequence of future DST transitions. + + + + + + Fix text to name and char to name + casts to perform string truncation correctly in multibyte encodings + (Karl Schnaitter) + + + + + + Fix memory copying bug in to_tsquery() (Heikki Linnakangas) + + + + + + Fix slow session startup when pg_attribute is very large + (Tom Lane) + + + + If pg_attribute exceeds one-fourth of + shared_buffers, cache rebuilding code that is sometimes + needed during session start would trigger the synchronized-scan logic, + causing it to take many times longer than normal. The problem was + particularly acute if many new sessions were starting at once. + + + + + + Ensure sequential scans check for query cancel reasonably often (Merlin + Moncure) + + + + A scan encountering many consecutive pages that contain no live tuples + would not respond to interrupts meanwhile. + + + + + + Ensure the Windows implementation of PGSemaphoreLock() + clears ImmediateInterruptOK before returning (Tom Lane) + + + + This oversight meant that a query-cancel interrupt received later + in the same query could be accepted at an unsafe time, with + unpredictable but not good consequences. + + + + + + Show whole-row variables safely when printing views or rules + (Abbas Butt, Tom Lane) + + + + Corner cases involving ambiguous names (that is, the name could be + either a table or column name of the query) were printed in an + ambiguous way, risking that the view or rule would be interpreted + differently after dump and reload. Avoid the ambiguous case by + attaching a no-op cast. + + + + + + Ensure autovacuum worker processes perform stack depth checking + properly (Heikki Linnakangas) + + + + Previously, infinite recursion in a function invoked by + auto-ANALYZE could crash worker processes. + + + + + + Fix logging collector to not lose log coherency under high load (Andrew + Dunstan) + + + + The collector previously could fail to reassemble large messages if it + got too busy. + + + + + + Fix logging collector to ensure it will restart file rotation + after receiving SIGHUP (Tom Lane) + + + + + + Fix PL/pgSQL's GET DIAGNOSTICS command when the target + is the function's first variable (Tom Lane) + + + + + + Fix several performance problems in pg_dump when + the database contains many objects (Jeff Janes, Tom Lane) + + + + pg_dump could get very slow if the database contained + many schemas, or if many objects are in dependency loops, or if there + are many owned sequences. + + + + + + Fix contrib/dblink's dblink_exec() to not leak + temporary database connections upon error (Tom Lane) + + + + + + Update time zone data files to tzdata release 2012c + for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland + Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; + also historical corrections for Canada. + + + + + + + + + + Release 8.3.18 + + + Release Date + 2012-02-27 + + + + This release contains a variety of fixes from 8.3.17. + For information about new features in the 8.3 major release, see + . + + + + Migration to Version 8.3.18 + + + A dump/restore is not required for those running 8.3.X. + + + + However, if you are upgrading from a version earlier than 8.3.17, + see . + + + + + + Changes + + + + + + Require execute permission on the trigger function for + CREATE TRIGGER (Robert Haas) + + + + This missing check could allow another user to execute a trigger + function with forged input data, by installing it on a table he owns. + This is only of significance for trigger functions marked + SECURITY DEFINER, since otherwise trigger functions run + as the table owner anyway. (CVE-2012-0866) + + + + + + Convert newlines to spaces in names written in pg_dump + comments (Robert Haas) + + + + pg_dump was incautious about sanitizing object names + that are emitted within SQL comments in its output script. A name + containing a newline would at least render the script syntactically + incorrect. Maliciously crafted object names could present a SQL + injection risk when the script is reloaded. (CVE-2012-0868) + + + + + + Fix btree index corruption from insertions concurrent with vacuuming + (Tom Lane) + + + + An index page split caused by an insertion could sometimes cause a + concurrently-running VACUUM to miss removing index entries + that it should remove. After the corresponding table rows are removed, + the dangling index entries would cause errors (such as could not + read block N in file ...) or worse, silently wrong query results + after unrelated rows are re-inserted at the now-free table locations. + This bug has been present since release 8.2, but occurs so infrequently + that it was not diagnosed until now. If you have reason to suspect + that it has happened in your database, reindexing the affected index + will fix things. + + + + + + Allow non-existent values for some settings in ALTER + USER/DATABASE SET (Heikki Linnakangas) + + + + Allow default_text_search_config, + default_tablespace, and temp_tablespaces to be + set to names that are not known. This is because they might be known + in another database where the setting is intended to be used, or for the + tablespace cases because the tablespace might not be created yet. The + same issue was previously recognized for search_path, and + these settings now act like that one. + + + + + + Track the OID counter correctly during WAL replay, even when it wraps + around (Tom Lane) + + + + Previously the OID counter would remain stuck at a high value until the + system exited replay mode. The practical consequences of that are + usually nil, but there are scenarios wherein a standby server that's + been promoted to master might take a long time to advance the OID + counter to a reasonable value once values are needed. + + + + + + Fix regular expression back-references with * attached + (Tom Lane) + + + + Rather than enforcing an exact string match, the code would effectively + accept any string that satisfies the pattern sub-expression referenced + by the back-reference symbol. + + + + A similar problem still afflicts back-references that are embedded in a + larger quantified expression, rather than being the immediate subject + of the quantifier. This will be addressed in a future + PostgreSQL release. + + + + + + Fix recently-introduced memory leak in processing of + inet/cidr values (Heikki Linnakangas) + + + + A patch in the December 2011 releases of PostgreSQL + caused memory leakage in these operations, which could be significant + in scenarios such as building a btree index on such a column. + + + + + + Avoid double close of file handle in syslogger on Windows (MauMau) + + + + Ordinarily this error was invisible, but it would cause an exception + when running on a debug version of Windows. + + + + + + Fix I/O-conversion-related memory leaks in plpgsql + (Andres Freund, Jan Urbanski, Tom Lane) + + + + Certain operations would leak memory until the end of the current + function. + + + + + + Improve pg_dump's handling of inherited table columns + (Tom Lane) + + + + pg_dump mishandled situations where a child column has + a different default expression than its parent column. If the default + is textually identical to the parent's default, but not actually the + same (for instance, because of schema search path differences) it would + not be recognized as different, so that after dump and restore the + child would be allowed to inherit the parent's default. Child columns + that are NOT NULL where their parent is not could also be + restored subtly incorrectly. + + + + + + Fix pg_restore's direct-to-database mode for + INSERT-style table data (Tom Lane) + + + + Direct-to-database restores from archive files made with + + + + + + Fix error in contrib/intarray's int[] & + int[] operator (Guillaume Lelarge) + + + + If the smallest integer the two input arrays have in common is 1, + and there are smaller values in either array, then 1 would be + incorrectly omitted from the result. + + + + + + Fix error detection in contrib/pgcrypto's + encrypt_iv() and decrypt_iv() + (Marko Kreen) + + + + These functions failed to report certain types of invalid-input errors, + and would instead return random garbage values for incorrect input. + + + + + + Fix one-byte buffer overrun in contrib/test_parser + (Paul Guyot) + + + + The code would try to read one more byte than it should, which would + crash in corner cases. + Since contrib/test_parser is only example code, this is + not a security issue in itself, but bad example code is still bad. + + + + + + Use __sync_lock_test_and_set() for spinlocks on ARM, if + available (Martin Pitt) + + + + This function replaces our previous use of the SWPB + instruction, which is deprecated and not available on ARMv6 and later. + Reports suggest that the old code doesn't fail in an obvious way on + recent ARM boards, but simply doesn't interlock concurrent accesses, + leading to bizarre failures in multiprocess operation. + + + + + + Use + + + This prevents assorted scenarios wherein recent versions of gcc will + produce creative results. + + + + + + Allow use of threaded Python on FreeBSD (Chris Rees) + + + + Our configure script previously believed that this combination wouldn't + work; but FreeBSD fixed the problem, so remove that error check. + + + + + + + + + + Release 8.3.17 + + + Release Date + 2011-12-05 + + + + This release contains a variety of fixes from 8.3.16. + For information about new features in the 8.3 major release, see + . + + + + Migration to Version 8.3.17 + + + A dump/restore is not required for those running 8.3.X. + + + + However, a longstanding error was discovered in the definition of the + information_schema.referential_constraints view. If you + rely on correct results from that view, you should replace its + definition as explained in the first changelog item below. + + + + Also, if you are upgrading from a version earlier than 8.3.8, + see . + + + + + + Changes + + + + + + Fix bugs in information_schema.referential_constraints view + (Tom Lane) + + + + This view was being insufficiently careful about matching the + foreign-key constraint to the depended-on primary or unique key + constraint. That could result in failure to show a foreign key + constraint at all, or showing it multiple times, or claiming that it + depends on a different constraint than the one it really does. + + + + Since the view definition is installed by initdb, + merely upgrading will not fix the problem. If you need to fix this + in an existing installation, you can (as a superuser) drop the + information_schema schema then re-create it by sourcing + SHAREDIR/information_schema.sql. + (Run pg_config --sharedir if you're uncertain where + SHAREDIR is.) This must be repeated in each database + to be fixed. + + + + + + Fix TOAST-related data corruption during CREATE TABLE dest AS + SELECT * FROM src or INSERT INTO dest SELECT * FROM src + (Tom Lane) + + + + If a table has been modified by ALTER TABLE ADD COLUMN, + attempts to copy its data verbatim to another table could produce + corrupt results in certain corner cases. + The problem can only manifest in this precise form in 8.4 and later, + but we patched earlier versions as well in case there are other code + paths that could trigger the same bug. + + + + + + Fix race condition during toast table access from stale syscache entries + (Tom Lane) + + + + The typical symptom was transient errors like missing chunk + number 0 for toast value NNNNN in pg_toast_2619, where the cited + toast table would always belong to a system catalog. + + + + + + Make DatumGetInetP() unpack inet datums that have a 1-byte + header, and add a new macro, DatumGetInetPP(), that does + not (Heikki Linnakangas) + + + + This change affects no core code, but might prevent crashes in add-on + code that expects DatumGetInetP() to produce an unpacked + datum as per usual convention. + + + + + + Improve locale support in money type's input and output + (Tom Lane) + + + + Aside from not supporting all standard + lc_monetary + formatting options, the input and output functions were inconsistent, + meaning there were locales in which dumped money values could + not be re-read. + + + + + + Don't let transform_null_equals + affect CASE foo WHEN NULL ... constructs + (Heikki Linnakangas) + + + + transform_null_equals is only supposed to affect + foo = NULL expressions written directly by the user, not + equality checks generated internally by this form of CASE. + + + + + + Change foreign-key trigger creation order to better support + self-referential foreign keys (Tom Lane) + + + + For a cascading foreign key that references its own table, a row update + will fire both the ON UPDATE trigger and the + CHECK trigger as one event. The ON UPDATE + trigger must execute first, else the CHECK will check a + non-final state of the row and possibly throw an inappropriate error. + However, the firing order of these triggers is determined by their + names, which generally sort in creation order since the triggers have + auto-generated names following the convention + RI_ConstraintTrigger_NNNN. A proper fix would require + modifying that convention, which we will do in 9.2, but it seems risky + to change it in existing releases. So this patch just changes the + creation order of the triggers. Users encountering this type of error + should drop and re-create the foreign key constraint to get its + triggers into the right order. + + + + + + Avoid floating-point underflow while tracking buffer allocation rate + (Greg Matthews) + + + + While harmless in itself, on certain platforms this would result in + annoying kernel log messages. + + + + + + Preserve blank lines within commands in psql's command + history (Robert Haas) + + + + The former behavior could cause problems if an empty line was removed + from within a string literal, for example. + + + + + + Fix pg_dump to dump user-defined casts between + auto-generated types, such as table rowtypes (Tom Lane) + + + + + + Use the preferred version of xsubpp to build PL/Perl, + not necessarily the operating system's main copy + (David Wheeler and Alex Hunsaker) + + + + + + Fix incorrect coding in contrib/dict_int and + contrib/dict_xsyn (Tom Lane) + + + + Some functions incorrectly assumed that memory returned by + palloc() is guaranteed zeroed. + + + + + + Honor query cancel interrupts promptly in pgstatindex() + (Robert Haas) + + + + + + Ensure VPATH builds properly install all server header files + (Peter Eisentraut) + + + + + + Shorten file names reported in verbose error messages (Peter Eisentraut) + + + + Regular builds have always reported just the name of the C file + containing the error message call, but VPATH builds formerly + reported an absolute path name. + + + + + + Fix interpretation of Windows timezone names for Central America + (Tom Lane) + + + + Map Central America Standard Time to CST6, not + CST6CDT, because DST is generally not observed anywhere in + Central America. + + + + + + Update time zone data files to tzdata release 2011n + for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa; + also historical corrections for Alaska and British East Africa. + + + + + + + + + + Release 8.3.16 + + + Release Date + 2011-09-26 + + + + This release contains a variety of fixes from 8.3.15. + For information about new features in the 8.3 major release, see + . + + + + Migration to Version 8.3.16 + + + A dump/restore is not required for those running 8.3.X. + However, if you are upgrading from a version earlier than 8.3.8, + see . + + + + + + Changes + + + + + + Fix bugs in indexing of in-doubt HOT-updated tuples (Tom Lane) + + + + These bugs could result in index corruption after reindexing a system + catalog. They are not believed to affect user indexes. + + + + + + Fix multiple bugs in GiST index page split processing (Heikki + Linnakangas) + + + + The probability of occurrence was low, but these could lead to index + corruption. + + + + + + Fix possible buffer overrun in tsvector_concat() + (Tom Lane) + + + + The function could underestimate the amount of memory needed for its + result, leading to server crashes. + + + + + + Fix crash in xml_recv when processing a + standalone parameter (Tom Lane) + + + + + + Avoid possibly accessing off the end of memory in ANALYZE + and in SJIS-2004 encoding conversion (Noah Misch) + + + + This fixes some very-low-probability server crash scenarios. + + + + + + Fix race condition in relcache init file invalidation (Tom Lane) + + + + There was a window wherein a new backend process could read a stale init + file but miss the inval messages that would tell it the data is stale. + The result would be bizarre failures in catalog accesses, typically + could not read block 0 in file ... later during startup. + + + + + + Fix memory leak at end of a GiST index scan (Tom Lane) + + + + Commands that perform many separate GiST index scans, such as + verification of a new GiST-based exclusion constraint on a table + already containing many rows, could transiently require large amounts of + memory due to this leak. + + + + + + Fix performance problem when constructing a large, lossy bitmap + (Tom Lane) + + + + + + Fix array- and path-creating functions to ensure padding bytes are + zeroes (Tom Lane) + + + + This avoids some situations where the planner will think that + semantically-equal constants are not equal, resulting in poor + optimization. + + + + + + Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane) + + + + This could lead to loss of committed transactions after a server crash. + + + + + + Fix dump bug for VALUES in a view (Tom Lane) + + + + + + Disallow SELECT FOR UPDATE/SHARE on sequences (Tom Lane) + + + + This operation doesn't work as expected and can lead to failures. + + + + + + Defend against integer overflow when computing size of a hash table (Tom + Lane) + + + + + + Fix cases where CLUSTER might attempt to access + already-removed TOAST data (Tom Lane) + + + + + + Fix portability bugs in use of credentials control messages for + peer authentication (Tom Lane) + + + + + + Fix SSPI login when multiple roundtrips are required (Ahmed Shinwari, + Magnus Hagander) + + + + The typical symptom of this problem was The function requested is + not supported errors during SSPI login. + + + + + + Fix typo in pg_srand48 seed initialization (Andres Freund) + + + + This led to failure to use all bits of the provided seed. This function + is not used on most platforms (only those without srandom), + and the potential security exposure from a less-random-than-expected + seed seems minimal in any case. + + + + + + Avoid integer overflow when the sum of LIMIT and + OFFSET values exceeds 2^63 (Heikki Linnakangas) + + + + + + Add overflow checks to int4 and int8 versions of + generate_series() (Robert Haas) + + + + + + Fix trailing-zero removal in to_char() (Marti Raudsepp) + + + + In a format with FM and no digit positions + after the decimal point, zeroes to the left of the decimal point could + be removed incorrectly. + + + + + + Fix pg_size_pretty() to avoid overflow for inputs close to + 2^63 (Tom Lane) + + + + + + In pg_ctl, support silent mode for service registrations + on Windows (MauMau) + + + + + + Fix psql's counting of script file line numbers during + COPY from a different file (Tom Lane) + + + + + + Fix pg_restore's direct-to-database mode for + standard_conforming_strings (Tom Lane) + + + + pg_restore could emit incorrect commands when restoring + directly to a database server from an archive file that had been made + with standard_conforming_strings set to on. + + + + + + Fix write-past-buffer-end and memory leak in libpq's + LDAP service lookup code (Albe Laurenz) + + + + + + In libpq, avoid failures when using nonblocking I/O + and an SSL connection (Martin Pihlak, Tom Lane) + + + + + + Improve libpq's handling of failures during connection startup + (Tom Lane) + + + + In particular, the response to a server report of fork() + failure during SSL connection startup is now saner. + + + + + + Improve libpq's error reporting for SSL failures (Tom + Lane) + + + + + + Make ecpglib write double values with 15 digits + precision (Akira Kurosawa) + + + + + + In ecpglib, be sure LC_NUMERIC setting is + restored after an error (Michael Meskes) + + + + + + Apply upstream fix for blowfish signed-character bug (CVE-2011-2483) + (Tom Lane) + + + + contrib/pg_crypto's blowfish encryption code could give + wrong results on platforms where char is signed (which is most), + leading to encrypted passwords being weaker than they should be. + + + + + + Fix memory leak in contrib/seg (Heikki Linnakangas) + + + + + + Fix pgstatindex() to give consistent results for empty + indexes (Tom Lane) + + + + + + Allow building with perl 5.14 (Alex Hunsaker) + + + + + + Update configure script's method for probing existence of system + functions (Tom Lane) + + + + The version of autoconf we used in 8.3 and 8.2 could be fooled by + compilers that perform link-time optimization. + + + + + + Fix assorted issues with build and install file paths containing spaces + (Tom Lane) + + + + + + Update time zone data files to tzdata release 2011i + for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan. + + + + + + + + + + Release 8.3.15 + + + Release Date + 2011-04-18 + + + + This release contains a variety of fixes from 8.3.14. + For information about new features in the 8.3 major release, see + . + + + + Migration to Version 8.3.15 + + + A dump/restore is not required for those running 8.3.X. + However, if you are upgrading from a version earlier than 8.3.8, + see . + + + + + + Changes + + + + + + Disallow including a composite type in itself (Tom Lane) + + + + This prevents scenarios wherein the server could recurse infinitely + while processing the composite type. While there are some possible + uses for such a structure, they don't seem compelling enough to + justify the effort required to make sure it always works safely. + + + + + + Avoid potential deadlock during catalog cache initialization + (Nikhil Sontakke) + + + + In some cases the cache loading code would acquire share lock on a + system index before locking the index's catalog. This could deadlock + against processes trying to acquire exclusive locks in the other, + more standard order. + + + + + + Fix dangling-pointer problem in BEFORE ROW UPDATE trigger + handling when there was a concurrent update to the target tuple + (Tom Lane) + + + + This bug has been observed to result in intermittent cannot + extract system attribute from virtual tuple failures while trying to + do UPDATE RETURNING ctid. There is a very small probability + of more serious errors, such as generating incorrect index entries for + the updated tuple. + + + + + + Disallow DROP TABLE when there are pending deferred trigger + events for the table (Tom Lane) + + + + Formerly the DROP would go through, leading to + could not open relation with OID nnn errors when the + triggers were eventually fired. + + + + + + Fix PL/Python memory leak involving array slices (Daniel Popowich) + + + + + + Fix pg_restore to cope with long lines (over 1KB) in + TOC files (Tom Lane) + + + + + + Put in more safeguards against crashing due to division-by-zero + with overly enthusiastic compiler optimization (Aurelien Jarno) + + + + + + Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane) + + + + There was a hard-wired assumption that this system function was not + available on MIPS hardware on these systems. Use a compile-time test + instead, since more recent versions have it. + + + + + + Fix compilation failures on HP-UX (Heikki Linnakangas) + + + + + + Fix version-incompatibility problem with libintl on + Windows (Hiroshi Inoue) + + + + + + Fix usage of xcopy in Windows build scripts to + work correctly under Windows 7 (Andrew Dunstan) + + + + This affects the build scripts only, not installation or usage. + + + + + + Fix path separator used by pg_regress on Cygwin + (Andrew Dunstan) + + + + + + Update time zone data files to tzdata release 2011f + for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa, + and Turkey; also historical corrections for South Australia, Alaska, + and Hawaii. + + + + + + + + Release 8.3.14 - Release date + Release Date 2011-01-31 @@ -21,7 +3164,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.8, - see the release notes for 8.3.8. + see . @@ -137,7 +3280,7 @@ Release 8.3.13 - Release date + Release Date 2010-12-16 @@ -153,7 +3296,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.8, - see the release notes for 8.3.8. + see . @@ -415,7 +3558,7 @@ Release 8.3.12 - Release date + Release Date 2010-10-04 @@ -431,7 +3574,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.8, - see the release notes for 8.3.8. + see . @@ -778,7 +3921,7 @@ Release 8.3.11 - Release date + Release Date 2010-05-17 @@ -794,7 +3937,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.8, - see the release notes for 8.3.8. + see . @@ -1007,7 +4150,7 @@ Release 8.3.10 - Release date + Release Date 2010-03-15 @@ -1023,7 +4166,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.8, - see the release notes for 8.3.8. + see . @@ -1334,7 +4477,7 @@ Release 8.3.9 - Release date + Release Date 2009-12-14 @@ -1350,7 +4493,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.8, - see the release notes for 8.3.8. + see . @@ -1403,7 +4546,7 @@ - This fix prevents a PANIC if a VACUUM FULL is cancelled + This fix prevents a PANIC if a VACUUM FULL is canceled after it's already committed its tuple movements, as well as transient errors if a plain VACUUM is interrupted after having truncated the table. @@ -1667,7 +4810,7 @@ Release 8.3.8 - Release date + Release Date 2009-09-09 @@ -1685,7 +4828,7 @@ However, if you have any hash indexes on interval columns, you must REINDEX them after updating to 8.3.8. Also, if you are upgrading from a version earlier than 8.3.5, - see the release notes for 8.3.5. + see . @@ -1957,7 +5100,7 @@ Release 8.3.7 - Release date + Release Date 2009-03-16 @@ -1973,7 +5116,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.5, - see the release notes for 8.3.5. + see . @@ -2180,7 +5323,7 @@ Release 8.3.6 - Release date + Release Date 2009-02-02 @@ -2196,7 +5339,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.5, - see the release notes for 8.3.5. + see . @@ -2474,7 +5617,7 @@ Release 8.3.5 - Release date + Release Date 2008-11-03 @@ -2490,7 +5633,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.1, - see the release notes for 8.3.1. Also, if you were running a previous + see . Also, if you were running a previous 8.3.X release, it is recommended to REINDEX all GiST indexes after the upgrade. @@ -2729,7 +5872,7 @@ Release 8.3.4 - Release date + Release Date 2008-09-22 @@ -2745,7 +5888,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.1, - see the release notes for 8.3.1. + see . @@ -3083,7 +6226,7 @@ Release 8.3.3 - Release date + Release Date 2008-06-12 @@ -3099,7 +6242,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.1, - see the release notes for 8.3.1. + see . @@ -3150,7 +6293,7 @@ Release 8.3.2 - Release date + Release Date never released @@ -3166,7 +6309,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.1, - see the release notes for 8.3.1. + see . @@ -3515,7 +6658,7 @@ Release 8.3.1 - Release date + Release Date 2008-03-17 @@ -3828,7 +6971,7 @@ Release 8.3 - Release date + Release Date 2008-02-04 diff --git a/doc-xc/src/sgml/release-8.4.sgmlin b/doc-xc/src/sgml/release-8.4.sgmlin index 5e6980517d..f56bc1e70c 100644 --- a/doc-xc/src/sgml/release-8.4.sgmlin +++ b/doc-xc/src/sgml/release-8.4.sgmlin @@ -1,11 +1,5195 @@ + + Release 8.4.17 + + + Release Date + 2013-04-04 + + + + This release contains a variety of fixes from 8.4.16. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.17 + + + A dump/restore is not required for those running 8.4.X. + + + + However, this release corrects several errors in management of GiST + indexes. After installing this update, it is advisable to + REINDEX any GiST indexes that meet one or more of the + conditions described below. + + + + Also, if you are upgrading from a version earlier than 8.4.10, + see the release notes for 8.4.10. + + + + + + Changes + + + + + + Reset OpenSSL randomness state in each postmaster child process + (Marko Kreen) + + + + This avoids a scenario wherein random numbers generated by + contrib/pgcrypto functions might be relatively easy for + another database user to guess. The risk is only significant when + the postmaster is configured with ssl = on + but most connections don't use SSL encryption. (CVE-2013-1900) + + + + + + Fix GiST indexes to not use fuzzy geometric comparisons when + it's not appropriate to do so (Alexander Korotkov) + + + + The core geometric types perform comparisons using fuzzy + equality, but gist_box_same must do exact comparisons, + else GiST indexes using it might become inconsistent. After installing + this update, users should REINDEX any GiST indexes on + box, polygon, circle, or point + columns, since all of these use gist_box_same. + + + + + + Fix erroneous range-union and penalty logic in GiST indexes that use + contrib/btree_gist for variable-width data types, that is + text, bytea, bit, and numeric + columns (Tom Lane) + + + + These errors could result in inconsistent indexes in which some keys + that are present would not be found by searches, and also in useless + index bloat. Users are advised to REINDEX such indexes + after installing this update. + + + + + + Fix bugs in GiST page splitting code for multi-column indexes + (Tom Lane) + + + + These errors could result in inconsistent indexes in which some keys + that are present would not be found by searches, and also in indexes + that are unnecessarily inefficient to search. Users are advised to + REINDEX multi-column GiST indexes after installing this + update. + + + + + + Fix infinite-loop risk in regular expression compilation (Tom Lane, + Don Porter) + + + + + + Fix potential null-pointer dereference in regular expression compilation + (Tom Lane) + + + + + + Fix to_char() to use ASCII-only case-folding rules where + appropriate (Tom Lane) + + + + This fixes misbehavior of some template patterns that should be + locale-independent, but mishandled I and + i in Turkish locales. + + + + + + Fix unwanted rejection of timestamp 1999-12-31 24:00:00 + (Tom Lane) + + + + + + Remove useless picksplit doesn't support secondary split log + messages (Josh Hansen, Tom Lane) + + + + This message seems to have been added in expectation of code that was + never written, and probably never will be, since GiST's default + handling of secondary splits is actually pretty good. So stop nagging + end users about it. + + + + + + Fix possible failure to send a session's last few transaction + commit/abort counts to the statistics collector (Tom Lane) + + + + + + Eliminate memory leaks in PL/Perl's spi_prepare() function + (Alex Hunsaker, Tom Lane) + + + + + + Fix pg_dumpall to handle database names containing + = correctly (Heikki Linnakangas) + + + + + + Avoid crash in pg_dump when an incorrect connection + string is given (Heikki Linnakangas) + + + + + + Ignore invalid indexes in pg_dump (Michael Paquier) + + + + Dumping invalid indexes can cause problems at restore time, for example + if the reason the index creation failed was because it tried to enforce + a uniqueness condition not satisfied by the table's data. Also, if the + index creation is in fact still in progress, it seems reasonable to + consider it to be an uncommitted DDL change, which + pg_dump wouldn't be expected to dump anyway. + + + + + + Fix contrib/pg_trgm's similarity() function + to return zero for trigram-less strings (Tom Lane) + + + + Previously it returned NaN due to internal division by zero. + + + + + + Update time zone data files to tzdata release 2013b + for DST law changes in Chile, Haiti, Morocco, Paraguay, and some + Russian areas. Also, historical zone data corrections for numerous + places. + + + + Also, update the time zone abbreviation files for recent changes in + Russia and elsewhere: CHOT, GET, + IRKT, KGT, KRAT, MAGT, + MAWT, MSK, NOVT, OMST, + TKT, VLAT, WST, YAKT, + YEKT now follow their current meanings, and + VOLT (Europe/Volgograd) and MIST + (Antarctica/Macquarie) are added to the default abbreviations list. + + + + + + + + + + Release 8.4.16 + + + Release Date + 2013-02-07 + + + + This release contains a variety of fixes from 8.4.15. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.16 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.10, + see the release notes for 8.4.10. + + + + + + Changes + + + + + + Prevent execution of enum_recv from SQL (Tom Lane) + + + + The function was misdeclared, allowing a simple SQL command to crash the + server. In principle an attacker might be able to use it to examine the + contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP) + for reporting this issue. (CVE-2013-0255) + + + + + + Update minimum recovery point when truncating a relation file (Heikki + Linnakangas) + + + + Once data has been discarded, it's no longer safe to stop recovery at + an earlier point in the timeline. + + + + + + Fix SQL grammar to allow subscripting or field selection from a + sub-SELECT result (Tom Lane) + + + + + + Protect against race conditions when scanning + pg_tablespace (Stephen Frost, Tom Lane) + + + + CREATE DATABASE and DROP DATABASE could + misbehave if there were concurrent updates of + pg_tablespace entries. + + + + + + Prevent DROP OWNED from trying to drop whole databases or + tablespaces (Álvaro Herrera) + + + + For safety, ownership of these objects must be reassigned, not dropped. + + + + + + Fix error in vacuum_freeze_table_age + implementation (Andres Freund) + + + + In installations that have existed for more than vacuum_freeze_min_age + transactions, this mistake prevented autovacuum from using partial-table + scans, so that a full-table scan would always happen instead. + + + + + + Prevent misbehavior when a RowExpr or XmlExpr + is parse-analyzed twice (Andres Freund, Tom Lane) + + + + This mistake could be user-visible in contexts such as + CREATE TABLE LIKE INCLUDING INDEXES. + + + + + + Improve defenses against integer overflow in hashtable sizing + calculations (Jeff Davis) + + + + + + Reject out-of-range dates in to_date() (Hitoshi Harada) + + + + + + Ensure that non-ASCII prompt strings are translated to the correct + code page on Windows (Alexander Law, Noah Misch) + + + + This bug affected psql and some other client programs. + + + + + + Fix possible crash in psql's \? command + when not connected to a database (Meng Qingzhong) + + + + + + Fix one-byte buffer overrun in libpq's + PQprintTuples (Xi Wang) + + + + This ancient function is not used anywhere by + PostgreSQL itself, but it might still be used by some + client code. + + + + + + Make ecpglib use translated messages properly + (Chen Huajun) + + + + + + Properly install ecpg_compat and + pgtypes libraries on MSVC (Jiang Guiqing) + + + + + + Rearrange configure's tests for supplied functions so it is not + fooled by bogus exports from libedit/libreadline (Christoph Berg) + + + + + + Ensure Windows build number increases over time (Magnus Hagander) + + + + + + Make pgxs build executables with the right + .exe suffix when cross-compiling for Windows + (Zoltan Boszormenyi) + + + + + + Add new timezone abbreviation FET (Tom Lane) + + + + This is now used in some eastern-European time zones. + + + + + + + + + + Release 8.4.15 + + + Release Date + 2012-12-06 + + + + This release contains a variety of fixes from 8.4.14. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.15 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.10, + see the release notes for 8.4.10. + + + + + + Changes + + + + + + Fix multiple bugs associated with CREATE INDEX + CONCURRENTLY (Andres Freund, Tom Lane) + + + + Fix CREATE INDEX CONCURRENTLY to use + in-place updates when changing the state of an index's + pg_index row. This prevents race conditions that could + cause concurrent sessions to miss updating the target index, thus + resulting in corrupt concurrently-created indexes. + + + + Also, fix various other operations to ensure that they ignore + invalid indexes resulting from a failed CREATE INDEX + CONCURRENTLY command. The most important of these is + VACUUM, because an auto-vacuum could easily be launched + on the table before corrective action can be taken to fix or remove + the invalid index. + + + + + + Avoid corruption of internal hash tables when out of memory + (Hitoshi Harada) + + + + + + Fix planning of non-strict equivalence clauses above outer joins + (Tom Lane) + + + + The planner could derive incorrect constraints from a clause equating + a non-strict construct to something else, for example + WHERE COALESCE(foo, 0) = 0 + when foo is coming from the nullable side of an outer join. + + + + + + Improve planner's ability to prove exclusion constraints from + equivalence classes (Tom Lane) + + + + + + Fix partial-row matching in hashed subplans to handle cross-type cases + correctly (Tom Lane) + + + + This affects multicolumn NOT IN subplans, such as + WHERE (a, b) NOT IN (SELECT x, y FROM ...) + when for instance b and y are int4 + and int8 respectively. This mistake led to wrong answers + or crashes depending on the specific datatypes involved. + + + + + + Acquire buffer lock when re-fetching the old tuple for an + AFTER ROW UPDATE/DELETE trigger (Andres Freund) + + + + In very unusual circumstances, this oversight could result in passing + incorrect data to the precheck logic for a foreign-key enforcement + trigger. That could result in a crash, or in an incorrect decision + about whether to fire the trigger. + + + + + + Fix ALTER COLUMN TYPE to handle inherited check + constraints properly (Pavan Deolasee) + + + + This worked correctly in pre-8.4 releases, and now works correctly + in 8.4 and later. + + + + + + Fix REASSIGN OWNED to handle grants on tablespaces + (Álvaro Herrera) + + + + + + Ignore incorrect pg_attribute entries for system + columns for views (Tom Lane) + + + + Views do not have any system columns. However, we forgot to + remove such entries when converting a table to a view. That's fixed + properly for 9.3 and later, but in previous branches we need to defend + against existing mis-converted views. + + + + + + Fix rule printing to dump INSERT INTO table + DEFAULT VALUES correctly (Tom Lane) + + + + + + Guard against stack overflow when there are too many + UNION/INTERSECT/EXCEPT clauses + in a query (Tom Lane) + + + + + + Prevent platform-dependent failures when dividing the minimum possible + integer value by -1 (Xi Wang, Tom Lane) + + + + + + Fix possible access past end of string in date parsing + (Hitoshi Harada) + + + + + + Produce an understandable error message if the length of the path name + for a Unix-domain socket exceeds the platform-specific limit + (Tom Lane, Andrew Dunstan) + + + + Formerly, this would result in something quite unhelpful, such as + Non-recoverable failure in name resolution. + + + + + + Fix memory leaks when sending composite column values to the client + (Tom Lane) + + + + + + Make pg_ctl more robust about reading the + postmaster.pid file (Heikki Linnakangas) + + + + Fix race conditions and possible file descriptor leakage. + + + + + + Fix possible crash in psql if incorrectly-encoded data + is presented and the client_encoding setting is a + client-only encoding, such as SJIS (Jiang Guiqing) + + + + + + Fix bugs in the restore.sql script emitted by + pg_dump in tar output format (Tom Lane) + + + + The script would fail outright on tables whose names include + upper-case characters. Also, make the script capable of restoring + data in + + + + + Fix pg_restore to accept POSIX-conformant + tar files (Brian Weaver, Tom Lane) + + + + The original coding of pg_dump's tar + output mode produced files that are not fully conformant with the + POSIX standard. This has been corrected for version 9.3. This + patch updates previous branches so that they will accept both the + incorrect and the corrected formats, in hopes of avoiding + compatibility problems when 9.3 comes out. + + + + + + Fix pg_resetxlog to locate postmaster.pid + correctly when given a relative path to the data directory (Tom Lane) + + + + This mistake could lead to pg_resetxlog not noticing + that there is an active postmaster using the data directory. + + + + + + Fix libpq's lo_import() and + lo_export() functions to report file I/O errors properly + (Tom Lane) + + + + + + Fix ecpg's processing of nested structure pointer + variables (Muhammad Usama) + + + + + + Make contrib/pageinspect's btree page inspection + functions take buffer locks while examining pages (Tom Lane) + + + + + + Fix pgxs support for building loadable modules on AIX + (Tom Lane) + + + + Building modules outside the original source tree didn't work on AIX. + + + + + + Update time zone data files to tzdata release 2012j + for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western + Samoa, and portions of Brazil. + + + + + + + + + + Release 8.4.14 + + + Release Date + 2012-09-24 + + + + This release contains a variety of fixes from 8.4.13. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.14 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.10, + see the release notes for 8.4.10. + + + + + + Changes + + + + + + Fix planner's assignment of executor parameters, and fix executor's + rescan logic for CTE plan nodes (Tom Lane) + + + + These errors could result in wrong answers from queries that scan the + same WITH subquery multiple times. + + + + + + Improve page-splitting decisions in GiST indexes (Alexander Korotkov, + Robert Haas, Tom Lane) + + + + Multi-column GiST indexes might suffer unexpected bloat due to this + error. + + + + + + Fix cascading privilege revoke to stop if privileges are still held + (Tom Lane) + + + + If we revoke a grant option from some role X, but + X still holds that option via a grant from someone + else, we should not recursively revoke the corresponding privilege + from role(s) Y that X had granted it + to. + + + + + + Fix handling of SIGFPE when PL/Perl is in use (Andres Freund) + + + + Perl resets the process's SIGFPE handler to + SIG_IGN, which could result in crashes later on. Restore + the normal Postgres signal handler after initializing PL/Perl. + + + + + + Prevent PL/Perl from crashing if a recursive PL/Perl function is + redefined while being executed (Tom Lane) + + + + + + Work around possible misoptimization in PL/Perl (Tom Lane) + + + + Some Linux distributions contain an incorrect version of + pthread.h that results in incorrect compiled code in + PL/Perl, leading to crashes if a PL/Perl function calls another one + that throws an error. + + + + + + Update time zone data files to tzdata release 2012f + for DST law changes in Fiji + + + + + + + + + + Release 8.4.13 + + + Release Date + 2012-08-17 + + + + This release contains a variety of fixes from 8.4.12. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.13 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.10, + see the release notes for 8.4.10. + + + + + + Changes + + + + + + Prevent access to external files/URLs via XML entity references + (Noah Misch, Tom Lane) + + + + xml_parse() would attempt to fetch external files or + URLs as needed to resolve DTD and entity references in an XML value, + thus allowing unprivileged database users to attempt to fetch data + with the privileges of the database server. While the external data + wouldn't get returned directly to the user, portions of it could be + exposed in error messages if the data didn't parse as valid XML; and + in any case the mere ability to check existence of a file might be + useful to an attacker. (CVE-2012-3489) + + + + + + Prevent access to external files/URLs via contrib/xml2's + xslt_process() (Peter Eisentraut) + + + + libxslt offers the ability to read and write both + files and URLs through stylesheet commands, thus allowing + unprivileged database users to both read and write data with the + privileges of the database server. Disable that through proper use + of libxslt's security options. (CVE-2012-3488) + + + + Also, remove xslt_process()'s ability to fetch documents + and stylesheets from external files/URLs. While this was a + documented feature, it was long regarded as a bad idea. + The fix for CVE-2012-3489 broke that capability, and rather than + expend effort on trying to fix it, we're just going to summarily + remove it. + + + + + + Prevent too-early recycling of btree index pages (Noah Misch) + + + + When we allowed read-only transactions to skip assigning XIDs, we + introduced the possibility that a deleted btree page could be + recycled while a read-only transaction was still in flight to it. + This would result in incorrect index search results. The probability + of such an error occurring in the field seems very low because of the + timing requirements, but nonetheless it should be fixed. + + + + + + Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane) + + + + If ALTER SEQUENCE was executed on a freshly created or + reset sequence, and then precisely one nextval() call + was made on it, and then the server crashed, WAL replay would restore + the sequence to a state in which it appeared that no + nextval() had been done, thus allowing the first + sequence value to be returned again by the next + nextval() call. In particular this could manifest for + serial columns, since creation of a serial column's sequence + includes an ALTER SEQUENCE OWNED BY step. + + + + + + Ensure the backup_label file is fsync'd after + pg_start_backup() (Dave Kerr) + + + + + + Back-patch 9.1 improvement to compress the fsync request queue + (Robert Haas) + + + + This improves performance during checkpoints. The 9.1 change + has now seen enough field testing to seem safe to back-patch. + + + + + + Only allow autovacuum to be auto-canceled by a directly blocked + process (Tom Lane) + + + + The original coding could allow inconsistent behavior in some cases; + in particular, an autovacuum could get canceled after less than + deadlock_timeout grace period. + + + + + + Improve logging of autovacuum cancels (Robert Haas) + + + + + + Fix log collector so that log_truncate_on_rotation works + during the very first log rotation after server start (Tom Lane) + + + + + + Fix WITH attached to a nested set operation + (UNION/INTERSECT/EXCEPT) + (Tom Lane) + + + + + + Ensure that a whole-row reference to a subquery doesn't include any + extra GROUP BY or ORDER BY columns (Tom Lane) + + + + + + Disallow copying whole-row references in CHECK + constraints and index definitions during CREATE TABLE + (Tom Lane) + + + + This situation can arise in CREATE TABLE with + LIKE or INHERITS. The copied whole-row + variable was incorrectly labeled with the row type of the original + table not the new one. Rejecting the case seems reasonable for + LIKE, since the row types might well diverge later. For + INHERITS we should ideally allow it, with an implicit + coercion to the parent table's row type; but that will require more + work than seems safe to back-patch. + + + + + + Fix memory leak in ARRAY(SELECT ...) subqueries (Heikki + Linnakangas, Tom Lane) + + + + + + Fix extraction of common prefixes from regular expressions (Tom Lane) + + + + The code could get confused by quantified parenthesized + subexpressions, such as ^(foo)?bar. This would lead to + incorrect index optimization of searches for such patterns. + + + + + + Fix bugs with parsing signed + hh:mm and + hh:mm:ss + fields in interval constants (Amit Kapila, Tom Lane) + + + + + + Report errors properly in contrib/xml2's + xslt_process() (Tom Lane) + + + + + + Update time zone data files to tzdata release 2012e + for DST law changes in Morocco and Tokelau + + + + + + + + + + Release 8.4.12 + + + Release Date + 2012-06-04 + + + + This release contains a variety of fixes from 8.4.11. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.12 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.10, + see the release notes for 8.4.10. + + + + + + Changes + + + + + + Fix incorrect password transformation in + contrib/pgcrypto's DES crypt() function + (Solar Designer) + + + + If a password string contained the byte value 0x80, the + remainder of the password was ignored, causing the password to be much + weaker than it appeared. With this fix, the rest of the string is + properly included in the DES hash. Any stored password values that are + affected by this bug will thus no longer match, so the stored values may + need to be updated. (CVE-2012-2143) + + + + + + Ignore SECURITY DEFINER and SET attributes for + a procedural language's call handler (Tom Lane) + + + + Applying such attributes to a call handler could crash the server. + (CVE-2012-2655) + + + + + + Allow numeric timezone offsets in timestamp input to be up to + 16 hours away from UTC (Tom Lane) + + + + Some historical time zones have offsets larger than 15 hours, the + previous limit. This could result in dumped data values being rejected + during reload. + + + + + + Fix timestamp conversion to cope when the given time is exactly the + last DST transition time for the current timezone (Tom Lane) + + + + This oversight has been there a long time, but was not noticed + previously because most DST-using zones are presumed to have an + indefinite sequence of future DST transitions. + + + + + + Fix text to name and char to name + casts to perform string truncation correctly in multibyte encodings + (Karl Schnaitter) + + + + + + Fix memory copying bug in to_tsquery() (Heikki Linnakangas) + + + + + + Fix planner's handling of outer PlaceHolderVars within subqueries (Tom + Lane) + + + + This bug concerns sub-SELECTs that reference variables coming from the + nullable side of an outer join of the surrounding query. + In 9.1, queries affected by this bug would fail with ERROR: + Upper-level PlaceHolderVar found where not expected. But in 9.0 and + 8.4, you'd silently get possibly-wrong answers, since the value + transmitted into the subquery wouldn't go to null when it should. + + + + + + Fix slow session startup when pg_attribute is very large + (Tom Lane) + + + + If pg_attribute exceeds one-fourth of + shared_buffers, cache rebuilding code that is sometimes + needed during session start would trigger the synchronized-scan logic, + causing it to take many times longer than normal. The problem was + particularly acute if many new sessions were starting at once. + + + + + + Ensure sequential scans check for query cancel reasonably often (Merlin + Moncure) + + + + A scan encountering many consecutive pages that contain no live tuples + would not respond to interrupts meanwhile. + + + + + + Ensure the Windows implementation of PGSemaphoreLock() + clears ImmediateInterruptOK before returning (Tom Lane) + + + + This oversight meant that a query-cancel interrupt received later + in the same query could be accepted at an unsafe time, with + unpredictable but not good consequences. + + + + + + Show whole-row variables safely when printing views or rules + (Abbas Butt, Tom Lane) + + + + Corner cases involving ambiguous names (that is, the name could be + either a table or column name of the query) were printed in an + ambiguous way, risking that the view or rule would be interpreted + differently after dump and reload. Avoid the ambiguous case by + attaching a no-op cast. + + + + + + Fix COPY FROM to properly handle null marker strings that + correspond to invalid encoding (Tom Lane) + + + + A null marker string such as E'\\0' should work, and did + work in the past, but the case got broken in 8.4. + + + + + + Ensure autovacuum worker processes perform stack depth checking + properly (Heikki Linnakangas) + + + + Previously, infinite recursion in a function invoked by + auto-ANALYZE could crash worker processes. + + + + + + Fix logging collector to not lose log coherency under high load (Andrew + Dunstan) + + + + The collector previously could fail to reassemble large messages if it + got too busy. + + + + + + Fix logging collector to ensure it will restart file rotation + after receiving SIGHUP (Tom Lane) + + + + + + Fix WAL replay logic for GIN indexes to not fail if the index was + subsequently dropped (Tom Lane) + + + + + + Fix memory leak in PL/pgSQL's RETURN NEXT command (Joe + Conway) + + + + + + Fix PL/pgSQL's GET DIAGNOSTICS command when the target + is the function's first variable (Tom Lane) + + + + + + Fix potential access off the end of memory in psql's + expanded display (\x) mode (Peter Eisentraut) + + + + + + Fix several performance problems in pg_dump when + the database contains many objects (Jeff Janes, Tom Lane) + + + + pg_dump could get very slow if the database contained + many schemas, or if many objects are in dependency loops, or if there + are many owned sequences. + + + + + + Fix contrib/dblink's dblink_exec() to not leak + temporary database connections upon error (Tom Lane) + + + + + + Fix contrib/dblink to report the correct connection name in + error messages (Kyotaro Horiguchi) + + + + + + Update time zone data files to tzdata release 2012c + for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland + Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; + also historical corrections for Canada. + + + + + + + + + + Release 8.4.21 + + + Release Date + 2014-03-20 + + + + This release contains a variety of fixes from 8.4.20. + For information about new features in the 8.4 major release, see + . + + + + The PostgreSQL community will stop releasing updates + for the 8.4.X release series in July 2014. + Users are encouraged to update to a newer release branch soon. + + + + Migration to Version 8.4.21 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.19, + see . + + + + + + Changes + + + + + + Restore GIN metapages unconditionally to avoid torn-page risk + (Heikki Linnakangas) + + + + Although this oversight could theoretically result in a corrupted + index, it is unlikely to have caused any problems in practice, since + the active part of a GIN metapage is smaller than a standard 512-byte + disk sector. + + + + + + Allow regular-expression operators to be terminated early by query + cancel requests (Tom Lane) + + + + This prevents scenarios wherein a pathological regular expression + could lock up a server process uninterruptably for a long time. + + + + + + Remove incorrect code that tried to allow OVERLAPS with + single-element row arguments (Joshua Yanovski) + + + + This code never worked correctly, and since the case is neither + specified by the SQL standard nor documented, it seemed better to + remove it than fix it. + + + + + + Avoid getting more than AccessShareLock when de-parsing a + rule or view (Dean Rasheed) + + + + This oversight resulted in pg_dump unexpectedly + acquiring RowExclusiveLock locks on tables mentioned as + the targets of INSERT/UPDATE/DELETE + commands in rules. While usually harmless, that could interfere with + concurrent transactions that tried to acquire, for example, + ShareLock on those tables. + + + + + + Prevent interrupts while reporting non-ERROR messages + (Tom Lane) + + + + This guards against rare server-process freezeups due to recursive + entry to syslog(), and perhaps other related problems. + + + + + + Update time zone data files to tzdata release 2014a + for DST law changes in Fiji and Turkey, plus historical changes in + Israel and Ukraine. + + + + + + + + + + + + + Release 8.4.20 + + + Release Date + 2014-02-20 + + + + This release contains a variety of fixes from 8.4.19. + For information about new features in the 8.4 major release, see + . + + + + The PostgreSQL community will stop releasing updates + for the 8.4.X release series in July 2014. + Users are encouraged to update to a newer release branch soon. + + + + Migration to Version 8.4.20 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.19, + see . + + + + + + Changes + + + + + + Shore up GRANT ... WITH ADMIN OPTION restrictions + (Noah Misch) + + + + Granting a role without ADMIN OPTION is supposed to + prevent the grantee from adding or removing members from the granted + role, but this restriction was easily bypassed by doing SET + ROLE first. The security impact is mostly that a role member can + revoke the access of others, contrary to the wishes of his grantor. + Unapproved role member additions are a lesser concern, since an + uncooperative role member could provide most of his rights to others + anyway by creating views or SECURITY DEFINER functions. + (CVE-2014-0060) + + + + + + Prevent privilege escalation via manual calls to PL validator + functions (Andres Freund) + + + + The primary role of PL validator functions is to be called implicitly + during CREATE FUNCTION, but they are also normal SQL + functions that a user can call explicitly. Calling a validator on + a function actually written in some other language was not checked + for and could be exploited for privilege-escalation purposes. + The fix involves adding a call to a privilege-checking function in + each validator function. Non-core procedural languages will also + need to make this change to their own validator functions, if any. + (CVE-2014-0061) + + + + + + Avoid multiple name lookups during table and index DDL + (Robert Haas, Andres Freund) + + + + If the name lookups come to different conclusions due to concurrent + activity, we might perform some parts of the DDL on a different table + than other parts. At least in the case of CREATE INDEX, + this can be used to cause the permissions checks to be performed + against a different table than the index creation, allowing for a + privilege escalation attack. + (CVE-2014-0062) + + + + + + Prevent buffer overrun with long datetime strings (Noah Misch) + + + + The MAXDATELEN constant was too small for the longest + possible value of type interval, allowing a buffer overrun + in interval_out(). Although the datetime input + functions were more careful about avoiding buffer overrun, the limit + was short enough to cause them to reject some valid inputs, such as + input containing a very long timezone name. The ecpg + library contained these vulnerabilities along with some of its own. + (CVE-2014-0063) + + + + + + Prevent buffer overrun due to integer overflow in size calculations + (Noah Misch, Heikki Linnakangas) + + + + Several functions, mostly type input functions, calculated an + allocation size without checking for overflow. If overflow did + occur, a too-small buffer would be allocated and then written past. + (CVE-2014-0064) + + + + + + Prevent overruns of fixed-size buffers + (Peter Eisentraut, Jozef Mlich) + + + + Use strlcpy() and related functions to provide a clear + guarantee that fixed-size buffers are not overrun. Unlike the + preceding items, it is unclear whether these cases really represent + live issues, since in most cases there appear to be previous + constraints on the size of the input string. Nonetheless it seems + prudent to silence all Coverity warnings of this type. + (CVE-2014-0065) + + + + + + Avoid crashing if crypt() returns NULL (Honza Horak, + Bruce Momjian) + + + + There are relatively few scenarios in which crypt() + could return NULL, but contrib/chkpass would crash + if it did. One practical case in which this could be an issue is + if libc is configured to refuse to execute unapproved + hashing algorithms (e.g., FIPS mode). + (CVE-2014-0066) + + + + + + Document risks of make check in the regression testing + instructions (Noah Misch, Tom Lane) + + + + Since the temporary server started by make check + uses trust authentication, another user on the same machine + could connect to it as database superuser, and then potentially + exploit the privileges of the operating-system user who started the + tests. A future release will probably incorporate changes in the + testing procedure to prevent this risk, but some public discussion is + needed first. So for the moment, just warn people against using + make check when there are untrusted users on the + same machine. + (CVE-2014-0067) + + + + + + Fix possible mis-replay of WAL records when some segments of a + relation aren't full size (Greg Stark, Tom Lane) + + + + The WAL update could be applied to the wrong page, potentially many + pages past where it should have been. Aside from corrupting data, + this error has been observed to result in significant bloat + of standby servers compared to their masters, due to updates being + applied far beyond where the end-of-file should have been. This + failure mode does not appear to be a significant risk during crash + recovery, only when initially synchronizing a standby created from a + base backup taken from a quickly-changing master. + + + + + + Ensure that insertions into non-leaf GIN index pages write a full-page + WAL record when appropriate (Heikki Linnakangas) + + + + The previous coding risked index corruption in the event of a + partial-page write during a system crash. + + + + + + Fix race conditions during server process exit (Robert Haas) + + + + Ensure that signal handlers don't attempt to use the + process's MyProc pointer after it's no longer valid. + + + + + + Fix unsafe references to errno within error reporting + logic (Christian Kruse) + + + + This would typically lead to odd behaviors such as missing or + inappropriate HINT fields. + + + + + + Fix possible crashes from using ereport() too early + during server startup (Tom Lane) + + + + The principal case we've seen in the field is a crash if the server + is started in a directory it doesn't have permission to read. + + + + + + Clear retry flags properly in OpenSSL socket write + function (Alexander Kukushkin) + + + + This omission could result in a server lockup after unexpected loss + of an SSL-encrypted connection. + + + + + + Fix length checking for Unicode identifiers (U&"..." + syntax) containing escapes (Tom Lane) + + + + A spurious truncation warning would be printed for such identifiers + if the escaped form of the identifier was too long, but the + identifier actually didn't need truncation after de-escaping. + + + + + + Fix possible crash due to invalid plan for nested sub-selects, such + as WHERE (... x IN (SELECT ...) ...) IN (SELECT ...) + (Tom Lane) + + + + + + Ensure that ANALYZE creates statistics for a table column + even when all the values in it are too wide (Tom Lane) + + + + ANALYZE intentionally omits very wide values from its + histogram and most-common-values calculations, but it neglected to do + something sane in the case that all the sampled entries are too wide. + + + + + + In ALTER TABLE ... SET TABLESPACE, allow the database's + default tablespace to be used without a permissions check + (Stephen Frost) + + + + CREATE TABLE has always allowed such usage, + but ALTER TABLE didn't get the memo. + + + + + + Fix cannot accept a set error when some arms of + a CASE return a set and others don't (Tom Lane) + + + + + + Fix checks for all-zero client addresses in pgstat functions (Kevin + Grittner) + + + + + + Fix possible misclassification of multibyte characters by the text + search parser (Tom Lane) + + + + Non-ASCII characters could be misclassified when using C locale with + a multibyte encoding. On Cygwin, non-C locales could fail as well. + + + + + + Fix possible misbehavior in plainto_tsquery() + (Heikki Linnakangas) + + + + Use memmove() not memcpy() for copying + overlapping memory regions. There have been no field reports of + this actually causing trouble, but it's certainly risky. + + + + + + Accept SHIFT_JIS as an encoding name for locale checking + purposes (Tatsuo Ishii) + + + + + + Fix misbehavior of PQhost() on Windows (Fujii Masao) + + + + It should return localhost if no host has been specified. + + + + + + Improve error handling in libpq and psql + for failures during COPY TO STDOUT/FROM STDIN (Tom Lane) + + + + In particular this fixes an infinite loop that could occur in 9.2 and + up if the server connection was lost during COPY FROM + STDIN. Variants of that scenario might be possible in older + versions, or with other client applications. + + + + + + Fix misaligned descriptors in ecpg (MauMau) + + + + + + In ecpg, handle lack of a hostname in the connection + parameters properly (Michael Meskes) + + + + + + Fix performance regression in contrib/dblink connection + startup (Joe Conway) + + + + Avoid an unnecessary round trip when client and server encodings match. + + + + + + In contrib/isn, fix incorrect calculation of the check + digit for ISMN values (Fabien Coelho) + + + + + + Ensure client-code-only installation procedure works as documented + (Peter Eisentraut) + + + + + + In Mingw and Cygwin builds, install the libpq DLL + in the bin directory (Andrew Dunstan) + + + + This duplicates what the MSVC build has long done. It should fix + problems with programs like psql failing to start + because they can't find the DLL. + + + + + + Don't generate plain-text HISTORY + and src/test/regress/README files anymore (Tom Lane) + + + + These text files duplicated the main HTML and PDF documentation + formats. The trouble involved in maintaining them greatly outweighs + the likely audience for plain-text format. Distribution tarballs + will still contain files by these names, but they'll just be stubs + directing the reader to consult the main documentation. + The plain-text INSTALL file will still be maintained, as + there is arguably a use-case for that. + + + + + + Update time zone data files to tzdata release 2013i + for DST law changes in Jordan and historical changes in Cuba. + + + + In addition, the zones Asia/Riyadh87, + Asia/Riyadh88, and Asia/Riyadh89 have been + removed, as they are no longer maintained by IANA, and never + represented actual civil timekeeping practice. + + + + + + + + + + Release 8.4.19 + + + Release Date + 2013-12-05 + + + + This release contains a variety of fixes from 8.4.18. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.19 + + + A dump/restore is not required for those running 8.4.X. + + + + However, this release corrects a potential data corruption + issue. See the first changelog entry below to find out whether + your installation has been affected and what steps you can take if so. + + + + Also, if you are upgrading from a version earlier than 8.4.17, + see . + + + + + + Changes + + + + + + Fix VACUUM's tests to see whether it can + update relfrozenxid (Andres Freund) + + + + In some cases VACUUM (either manual or autovacuum) could + incorrectly advance a table's relfrozenxid value, + allowing tuples to escape freezing, causing those rows to become + invisible once 2^31 transactions have elapsed. The probability of + data loss is fairly low since multiple incorrect advancements would + need to happen before actual loss occurs, but it's not zero. Users + upgrading from release 8.4.8 or earlier are not affected, but all later + versions contain the bug. + + + + The issue can be ameliorated by, after upgrading, vacuuming all tables + in all databases while having vacuum_freeze_table_age + set to zero. This will fix any latent corruption but will not be able + to fix all pre-existing data errors. However, an installation can be + presumed safe after performing this vacuuming if it has executed fewer + than 2^31 update transactions in its lifetime (check this with + SELECT txid_current() < 2^31). + + + + + + Fix race condition in GIN index posting tree page deletion (Heikki + Linnakangas) + + + + This could lead to transient wrong answers or query failures. + + + + + + Avoid flattening a subquery whose SELECT list contains a + volatile function wrapped inside a sub-SELECT (Tom Lane) + + + + This avoids unexpected results due to extra evaluations of the + volatile function. + + + + + + Fix planner's processing of non-simple-variable subquery outputs + nested within outer joins (Tom Lane) + + + + This error could lead to incorrect plans for queries involving + multiple levels of subqueries within JOIN syntax. + + + + + + Fix premature deletion of temporary files (Andres Freund) + + + + + + Fix possible read past end of memory in rule printing (Peter Eisentraut) + + + + + + Fix array slicing of int2vector and oidvector values + (Tom Lane) + + + + Expressions of this kind are now implicitly promoted to + regular int2 or oid arrays. + + + + + + Fix incorrect behaviors when using a SQL-standard, simple GMT offset + timezone (Tom Lane) + + + + In some cases, the system would use the simple GMT offset value when + it should have used the regular timezone setting that had prevailed + before the simple offset was selected. This change also causes + the timeofday function to honor the simple GMT offset + zone. + + + + + + Prevent possible misbehavior when logging translations of Windows + error codes (Tom Lane) + + + + + + Properly quote generated command lines in pg_ctl + (Naoya Anzai and Tom Lane) + + + + This fix applies only to Windows. + + + + + + Fix pg_dumpall to work when a source database + sets default_transaction_read_only + via ALTER DATABASE SET (Kevin Grittner) + + + + Previously, the generated script would fail during restore. + + + + + + Fix ecpg's processing of lists of variables + declared varchar (Zoltán Böszörményi) + + + + + + Make contrib/lo defend against incorrect trigger definitions + (Marc Cousin) + + + + + + Update time zone data files to tzdata release 2013h + for DST law changes in Argentina, Brazil, Jordan, Libya, + Liechtenstein, Morocco, and Palestine. Also, new timezone + abbreviations WIB, WIT, WITA for Indonesia. + + + + + + + + + + Release 8.4.18 + + + Release Date + 2013-10-10 + + + + This release contains a variety of fixes from 8.4.17. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.18 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.17, + see . + + + + + + Changes + + + + + + Prevent corruption of multi-byte characters when attempting to + case-fold identifiers (Andrew Dunstan) + + + + PostgreSQL case-folds non-ASCII characters only + when using a single-byte server encoding. + + + + + + Fix memory leak caused by lo_open() failure + (Heikki Linnakangas) + + + + + + Fix memory overcommit bug when work_mem is using more + than 24GB of memory (Stephen Frost) + + + + + + Fix deadlock bug in libpq when using SSL (Stephen Frost) + + + + + + Properly compute row estimates for boolean columns containing many NULL + values (Andrew Gierth) + + + + Previously tests like col IS NOT TRUE and col IS + NOT FALSE did not properly factor in NULL values when estimating + plan costs. + + + + + + Prevent pushing down WHERE clauses into unsafe + UNION/INTERSECT subqueries (Tom Lane) + + + + Subqueries of a UNION or INTERSECT that + contain set-returning functions or volatile functions in their + SELECT lists could be improperly optimized, leading to + run-time errors or incorrect query results. + + + + + + Fix rare case of failed to locate grouping columns + planner failure (Tom Lane) + + + + + + Improve view dumping code's handling of dropped columns in referenced + tables (Tom Lane) + + + + + + Fix possible deadlock during concurrent CREATE INDEX + CONCURRENTLY operations (Tom Lane) + + + + + + Fix regexp_matches() handling of zero-length matches + (Jeevan Chalke) + + + + Previously, zero-length matches like '^' could return too many matches. + + + + + + Fix crash for overly-complex regular expressions (Heikki Linnakangas) + + + + + + Fix regular expression match failures for back references combined with + non-greedy quantifiers (Jeevan Chalke) + + + + + + Prevent CREATE FUNCTION from checking SET + variables unless function body checking is enabled (Tom Lane) + + + + + + Fix pgp_pub_decrypt() so it works for secret keys with + passwords (Marko Kreen) + + + + + + Remove rare inaccurate warning during vacuum of index-less tables + (Heikki Linnakangas) + + + + + + Avoid possible failure when performing transaction control commands (e.g + ROLLBACK) in prepared queries (Tom Lane) + + + + + + Ensure that floating-point data input accepts standard spellings + of infinity on all platforms (Tom Lane) + + + + The C99 standard says that allowable spellings are inf, + +inf, -inf, infinity, + +infinity, and -infinity. Make sure we + recognize these even if the platform's strtod function + doesn't. + + + + + + Expand ability to compare rows to records and arrays (Rafal Rzepecki, + Tom Lane) + + + + + + Update time zone data files to tzdata release 2013d + for DST law changes in Israel, Morocco, Palestine, and Paraguay. + Also, historical zone data corrections for Macquarie Island. + + + + + + + + + + Release 8.4.17 + + + Release Date + 2013-04-04 + + + + This release contains a variety of fixes from 8.4.16. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.17 + + + A dump/restore is not required for those running 8.4.X. + + + + However, this release corrects several errors in management of GiST + indexes. After installing this update, it is advisable to + REINDEX any GiST indexes that meet one or more of the + conditions described below. + + + + Also, if you are upgrading from a version earlier than 8.4.10, + see . + + + + + + Changes + + + + + + Reset OpenSSL randomness state in each postmaster child process + (Marko Kreen) + + + + This avoids a scenario wherein random numbers generated by + contrib/pgcrypto functions might be relatively easy for + another database user to guess. The risk is only significant when + the postmaster is configured with ssl = on + but most connections don't use SSL encryption. (CVE-2013-1900) + + + + + + Fix GiST indexes to not use fuzzy geometric comparisons when + it's not appropriate to do so (Alexander Korotkov) + + + + The core geometric types perform comparisons using fuzzy + equality, but gist_box_same must do exact comparisons, + else GiST indexes using it might become inconsistent. After installing + this update, users should REINDEX any GiST indexes on + box, polygon, circle, or point + columns, since all of these use gist_box_same. + + + + + + Fix erroneous range-union and penalty logic in GiST indexes that use + contrib/btree_gist for variable-width data types, that is + text, bytea, bit, and numeric + columns (Tom Lane) + + + + These errors could result in inconsistent indexes in which some keys + that are present would not be found by searches, and also in useless + index bloat. Users are advised to REINDEX such indexes + after installing this update. + + + + + + Fix bugs in GiST page splitting code for multi-column indexes + (Tom Lane) + + + + These errors could result in inconsistent indexes in which some keys + that are present would not be found by searches, and also in indexes + that are unnecessarily inefficient to search. Users are advised to + REINDEX multi-column GiST indexes after installing this + update. + + + + + + Fix infinite-loop risk in regular expression compilation (Tom Lane, + Don Porter) + + + + + + Fix potential null-pointer dereference in regular expression compilation + (Tom Lane) + + + + + + Fix to_char() to use ASCII-only case-folding rules where + appropriate (Tom Lane) + + + + This fixes misbehavior of some template patterns that should be + locale-independent, but mishandled I and + i in Turkish locales. + + + + + + Fix unwanted rejection of timestamp 1999-12-31 24:00:00 + (Tom Lane) + + + + + + Remove useless picksplit doesn't support secondary split log + messages (Josh Hansen, Tom Lane) + + + + This message seems to have been added in expectation of code that was + never written, and probably never will be, since GiST's default + handling of secondary splits is actually pretty good. So stop nagging + end users about it. + + + + + + Fix possible failure to send a session's last few transaction + commit/abort counts to the statistics collector (Tom Lane) + + + + + + Eliminate memory leaks in PL/Perl's spi_prepare() function + (Alex Hunsaker, Tom Lane) + + + + + + Fix pg_dumpall to handle database names containing + = correctly (Heikki Linnakangas) + + + + + + Avoid crash in pg_dump when an incorrect connection + string is given (Heikki Linnakangas) + + + + + + Ignore invalid indexes in pg_dump (Michael Paquier) + + + + Dumping invalid indexes can cause problems at restore time, for example + if the reason the index creation failed was because it tried to enforce + a uniqueness condition not satisfied by the table's data. Also, if the + index creation is in fact still in progress, it seems reasonable to + consider it to be an uncommitted DDL change, which + pg_dump wouldn't be expected to dump anyway. + + + + + + Fix contrib/pg_trgm's similarity() function + to return zero for trigram-less strings (Tom Lane) + + + + Previously it returned NaN due to internal division by zero. + + + + + + Update time zone data files to tzdata release 2013b + for DST law changes in Chile, Haiti, Morocco, Paraguay, and some + Russian areas. Also, historical zone data corrections for numerous + places. + + + + Also, update the time zone abbreviation files for recent changes in + Russia and elsewhere: CHOT, GET, + IRKT, KGT, KRAT, MAGT, + MAWT, MSK, NOVT, OMST, + TKT, VLAT, WST, YAKT, + YEKT now follow their current meanings, and + VOLT (Europe/Volgograd) and MIST + (Antarctica/Macquarie) are added to the default abbreviations list. + + + + + + + + + + Release 8.4.16 + + + Release Date + 2013-02-07 + + + + This release contains a variety of fixes from 8.4.15. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.16 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.10, + see . + + + + + + Changes + + + + + + Prevent execution of enum_recv from SQL (Tom Lane) + + + + The function was misdeclared, allowing a simple SQL command to crash the + server. In principle an attacker might be able to use it to examine the + contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP) + for reporting this issue. (CVE-2013-0255) + + + + + + Update minimum recovery point when truncating a relation file (Heikki + Linnakangas) + + + + Once data has been discarded, it's no longer safe to stop recovery at + an earlier point in the timeline. + + + + + + Fix SQL grammar to allow subscripting or field selection from a + sub-SELECT result (Tom Lane) + + + + + + Protect against race conditions when scanning + pg_tablespace (Stephen Frost, Tom Lane) + + + + CREATE DATABASE and DROP DATABASE could + misbehave if there were concurrent updates of + pg_tablespace entries. + + + + + + Prevent DROP OWNED from trying to drop whole databases or + tablespaces (Álvaro Herrera) + + + + For safety, ownership of these objects must be reassigned, not dropped. + + + + + + Fix error in vacuum_freeze_table_age + implementation (Andres Freund) + + + + In installations that have existed for more than vacuum_freeze_min_age + transactions, this mistake prevented autovacuum from using partial-table + scans, so that a full-table scan would always happen instead. + + + + + + Prevent misbehavior when a RowExpr or XmlExpr + is parse-analyzed twice (Andres Freund, Tom Lane) + + + + This mistake could be user-visible in contexts such as + CREATE TABLE LIKE INCLUDING INDEXES. + + + + + + Improve defenses against integer overflow in hashtable sizing + calculations (Jeff Davis) + + + + + + Reject out-of-range dates in to_date() (Hitoshi Harada) + + + + + + Ensure that non-ASCII prompt strings are translated to the correct + code page on Windows (Alexander Law, Noah Misch) + + + + This bug affected psql and some other client programs. + + + + + + Fix possible crash in psql's \? command + when not connected to a database (Meng Qingzhong) + + + + + + Fix one-byte buffer overrun in libpq's + PQprintTuples (Xi Wang) + + + + This ancient function is not used anywhere by + PostgreSQL itself, but it might still be used by some + client code. + + + + + + Make ecpglib use translated messages properly + (Chen Huajun) + + + + + + Properly install ecpg_compat and + pgtypes libraries on MSVC (Jiang Guiqing) + + + + + + Rearrange configure's tests for supplied functions so it is not + fooled by bogus exports from libedit/libreadline (Christoph Berg) + + + + + + Ensure Windows build number increases over time (Magnus Hagander) + + + + + + Make pgxs build executables with the right + .exe suffix when cross-compiling for Windows + (Zoltan Boszormenyi) + + + + + + Add new timezone abbreviation FET (Tom Lane) + + + + This is now used in some eastern-European time zones. + + + + + + + + + + Release 8.4.15 + + + Release Date + 2012-12-06 + + + + This release contains a variety of fixes from 8.4.14. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.15 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.10, + see . + + + + + + Changes + + + + + + Fix multiple bugs associated with CREATE INDEX + CONCURRENTLY (Andres Freund, Tom Lane) + + + + Fix CREATE INDEX CONCURRENTLY to use + in-place updates when changing the state of an index's + pg_index row. This prevents race conditions that could + cause concurrent sessions to miss updating the target index, thus + resulting in corrupt concurrently-created indexes. + + + + Also, fix various other operations to ensure that they ignore + invalid indexes resulting from a failed CREATE INDEX + CONCURRENTLY command. The most important of these is + VACUUM, because an auto-vacuum could easily be launched + on the table before corrective action can be taken to fix or remove + the invalid index. + + + + + + Avoid corruption of internal hash tables when out of memory + (Hitoshi Harada) + + + + + + Fix planning of non-strict equivalence clauses above outer joins + (Tom Lane) + + + + The planner could derive incorrect constraints from a clause equating + a non-strict construct to something else, for example + WHERE COALESCE(foo, 0) = 0 + when foo is coming from the nullable side of an outer join. + + + + + + Improve planner's ability to prove exclusion constraints from + equivalence classes (Tom Lane) + + + + + + Fix partial-row matching in hashed subplans to handle cross-type cases + correctly (Tom Lane) + + + + This affects multicolumn NOT IN subplans, such as + WHERE (a, b) NOT IN (SELECT x, y FROM ...) + when for instance b and y are int4 + and int8 respectively. This mistake led to wrong answers + or crashes depending on the specific datatypes involved. + + + + + + Acquire buffer lock when re-fetching the old tuple for an + AFTER ROW UPDATE/DELETE trigger (Andres Freund) + + + + In very unusual circumstances, this oversight could result in passing + incorrect data to the precheck logic for a foreign-key enforcement + trigger. That could result in a crash, or in an incorrect decision + about whether to fire the trigger. + + + + + + Fix ALTER COLUMN TYPE to handle inherited check + constraints properly (Pavan Deolasee) + + + + This worked correctly in pre-8.4 releases, and now works correctly + in 8.4 and later. + + + + + + Fix REASSIGN OWNED to handle grants on tablespaces + (Álvaro Herrera) + + + + + + Ignore incorrect pg_attribute entries for system + columns for views (Tom Lane) + + + + Views do not have any system columns. However, we forgot to + remove such entries when converting a table to a view. That's fixed + properly for 9.3 and later, but in previous branches we need to defend + against existing mis-converted views. + + + + + + Fix rule printing to dump INSERT INTO table + DEFAULT VALUES correctly (Tom Lane) + + + + + + Guard against stack overflow when there are too many + UNION/INTERSECT/EXCEPT clauses + in a query (Tom Lane) + + + + + + Prevent platform-dependent failures when dividing the minimum possible + integer value by -1 (Xi Wang, Tom Lane) + + + + + + Fix possible access past end of string in date parsing + (Hitoshi Harada) + + + + + + Produce an understandable error message if the length of the path name + for a Unix-domain socket exceeds the platform-specific limit + (Tom Lane, Andrew Dunstan) + + + + Formerly, this would result in something quite unhelpful, such as + Non-recoverable failure in name resolution. + + + + + + Fix memory leaks when sending composite column values to the client + (Tom Lane) + + + + + + Make pg_ctl more robust about reading the + postmaster.pid file (Heikki Linnakangas) + + + + Fix race conditions and possible file descriptor leakage. + + + + + + Fix possible crash in psql if incorrectly-encoded data + is presented and the client_encoding setting is a + client-only encoding, such as SJIS (Jiang Guiqing) + + + + + + Fix bugs in the restore.sql script emitted by + pg_dump in tar output format (Tom Lane) + + + + The script would fail outright on tables whose names include + upper-case characters. Also, make the script capable of restoring + data in + + + + + Fix pg_restore to accept POSIX-conformant + tar files (Brian Weaver, Tom Lane) + + + + The original coding of pg_dump's tar + output mode produced files that are not fully conformant with the + POSIX standard. This has been corrected for version 9.3. This + patch updates previous branches so that they will accept both the + incorrect and the corrected formats, in hopes of avoiding + compatibility problems when 9.3 comes out. + + + + + + Fix pg_resetxlog to locate postmaster.pid + correctly when given a relative path to the data directory (Tom Lane) + + + + This mistake could lead to pg_resetxlog not noticing + that there is an active postmaster using the data directory. + + + + + + Fix libpq's lo_import() and + lo_export() functions to report file I/O errors properly + (Tom Lane) + + + + + + Fix ecpg's processing of nested structure pointer + variables (Muhammad Usama) + + + + + + Make contrib/pageinspect's btree page inspection + functions take buffer locks while examining pages (Tom Lane) + + + + + + Fix pgxs support for building loadable modules on AIX + (Tom Lane) + + + + Building modules outside the original source tree didn't work on AIX. + + + + + + Update time zone data files to tzdata release 2012j + for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western + Samoa, and portions of Brazil. + + + + + + + + + + Release 8.4.14 + + + Release Date + 2012-09-24 + + + + This release contains a variety of fixes from 8.4.13. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.14 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.10, + see . + + + + + + Changes + + + + + + Fix planner's assignment of executor parameters, and fix executor's + rescan logic for CTE plan nodes (Tom Lane) + + + + These errors could result in wrong answers from queries that scan the + same WITH subquery multiple times. + + + + + + Improve page-splitting decisions in GiST indexes (Alexander Korotkov, + Robert Haas, Tom Lane) + + + + Multi-column GiST indexes might suffer unexpected bloat due to this + error. + + + + + + Fix cascading privilege revoke to stop if privileges are still held + (Tom Lane) + + + + If we revoke a grant option from some role X, but + X still holds that option via a grant from someone + else, we should not recursively revoke the corresponding privilege + from role(s) Y that X had granted it + to. + + + + + + Fix handling of SIGFPE when PL/Perl is in use (Andres Freund) + + + + Perl resets the process's SIGFPE handler to + SIG_IGN, which could result in crashes later on. Restore + the normal Postgres signal handler after initializing PL/Perl. + + + + + + Prevent PL/Perl from crashing if a recursive PL/Perl function is + redefined while being executed (Tom Lane) + + + + + + Work around possible misoptimization in PL/Perl (Tom Lane) + + + + Some Linux distributions contain an incorrect version of + pthread.h that results in incorrect compiled code in + PL/Perl, leading to crashes if a PL/Perl function calls another one + that throws an error. + + + + + + Update time zone data files to tzdata release 2012f + for DST law changes in Fiji + + + + + + + + + + Release 8.4.13 + + + Release Date + 2012-08-17 + + + + This release contains a variety of fixes from 8.4.12. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.13 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.10, + see . + + + + + + Changes + + + + + + Prevent access to external files/URLs via XML entity references + (Noah Misch, Tom Lane) + + + + xml_parse() would attempt to fetch external files or + URLs as needed to resolve DTD and entity references in an XML value, + thus allowing unprivileged database users to attempt to fetch data + with the privileges of the database server. While the external data + wouldn't get returned directly to the user, portions of it could be + exposed in error messages if the data didn't parse as valid XML; and + in any case the mere ability to check existence of a file might be + useful to an attacker. (CVE-2012-3489) + + + + + + Prevent access to external files/URLs via contrib/xml2's + xslt_process() (Peter Eisentraut) + + + + libxslt offers the ability to read and write both + files and URLs through stylesheet commands, thus allowing + unprivileged database users to both read and write data with the + privileges of the database server. Disable that through proper use + of libxslt's security options. (CVE-2012-3488) + + + + Also, remove xslt_process()'s ability to fetch documents + and stylesheets from external files/URLs. While this was a + documented feature, it was long regarded as a bad idea. + The fix for CVE-2012-3489 broke that capability, and rather than + expend effort on trying to fix it, we're just going to summarily + remove it. + + + + + + Prevent too-early recycling of btree index pages (Noah Misch) + + + + When we allowed read-only transactions to skip assigning XIDs, we + introduced the possibility that a deleted btree page could be + recycled while a read-only transaction was still in flight to it. + This would result in incorrect index search results. The probability + of such an error occurring in the field seems very low because of the + timing requirements, but nonetheless it should be fixed. + + + + + + Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane) + + + + If ALTER SEQUENCE was executed on a freshly created or + reset sequence, and then precisely one nextval() call + was made on it, and then the server crashed, WAL replay would restore + the sequence to a state in which it appeared that no + nextval() had been done, thus allowing the first + sequence value to be returned again by the next + nextval() call. In particular this could manifest for + serial columns, since creation of a serial column's sequence + includes an ALTER SEQUENCE OWNED BY step. + + + + + + Ensure the backup_label file is fsync'd after + pg_start_backup() (Dave Kerr) + + + + + + Back-patch 9.1 improvement to compress the fsync request queue + (Robert Haas) + + + + This improves performance during checkpoints. The 9.1 change + has now seen enough field testing to seem safe to back-patch. + + + + + + Only allow autovacuum to be auto-canceled by a directly blocked + process (Tom Lane) + + + + The original coding could allow inconsistent behavior in some cases; + in particular, an autovacuum could get canceled after less than + deadlock_timeout grace period. + + + + + + Improve logging of autovacuum cancels (Robert Haas) + + + + + + Fix log collector so that log_truncate_on_rotation works + during the very first log rotation after server start (Tom Lane) + + + + + + Fix WITH attached to a nested set operation + (UNION/INTERSECT/EXCEPT) + (Tom Lane) + + + + + + Ensure that a whole-row reference to a subquery doesn't include any + extra GROUP BY or ORDER BY columns (Tom Lane) + + + + + + Disallow copying whole-row references in CHECK + constraints and index definitions during CREATE TABLE + (Tom Lane) + + + + This situation can arise in CREATE TABLE with + LIKE or INHERITS. The copied whole-row + variable was incorrectly labeled with the row type of the original + table not the new one. Rejecting the case seems reasonable for + LIKE, since the row types might well diverge later. For + INHERITS we should ideally allow it, with an implicit + coercion to the parent table's row type; but that will require more + work than seems safe to back-patch. + + + + + + Fix memory leak in ARRAY(SELECT ...) subqueries (Heikki + Linnakangas, Tom Lane) + + + + + + Fix extraction of common prefixes from regular expressions (Tom Lane) + + + + The code could get confused by quantified parenthesized + subexpressions, such as ^(foo)?bar. This would lead to + incorrect index optimization of searches for such patterns. + + + + + + Fix bugs with parsing signed + hh:mm and + hh:mm:ss + fields in interval constants (Amit Kapila, Tom Lane) + + + + + + Report errors properly in contrib/xml2's + xslt_process() (Tom Lane) + + + + + + Update time zone data files to tzdata release 2012e + for DST law changes in Morocco and Tokelau + + + + + + + + + + Release 8.4.12 + + + Release Date + 2012-06-04 + + + + This release contains a variety of fixes from 8.4.11. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.12 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.10, + see . + + + + + + Changes + + + + + + Fix incorrect password transformation in + contrib/pgcrypto's DES crypt() function + (Solar Designer) + + + + If a password string contained the byte value 0x80, the + remainder of the password was ignored, causing the password to be much + weaker than it appeared. With this fix, the rest of the string is + properly included in the DES hash. Any stored password values that are + affected by this bug will thus no longer match, so the stored values may + need to be updated. (CVE-2012-2143) + + + + + + Ignore SECURITY DEFINER and SET attributes for + a procedural language's call handler (Tom Lane) + + + + Applying such attributes to a call handler could crash the server. + (CVE-2012-2655) + + + + + + Allow numeric timezone offsets in timestamp input to be up to + 16 hours away from UTC (Tom Lane) + + + + Some historical time zones have offsets larger than 15 hours, the + previous limit. This could result in dumped data values being rejected + during reload. + + + + + + Fix timestamp conversion to cope when the given time is exactly the + last DST transition time for the current timezone (Tom Lane) + + + + This oversight has been there a long time, but was not noticed + previously because most DST-using zones are presumed to have an + indefinite sequence of future DST transitions. + + + + + + Fix text to name and char to name + casts to perform string truncation correctly in multibyte encodings + (Karl Schnaitter) + + + + + + Fix memory copying bug in to_tsquery() (Heikki Linnakangas) + + + + + + Fix planner's handling of outer PlaceHolderVars within subqueries (Tom + Lane) + + + + This bug concerns sub-SELECTs that reference variables coming from the + nullable side of an outer join of the surrounding query. + In 9.1, queries affected by this bug would fail with ERROR: + Upper-level PlaceHolderVar found where not expected. But in 9.0 and + 8.4, you'd silently get possibly-wrong answers, since the value + transmitted into the subquery wouldn't go to null when it should. + + + + + + Fix slow session startup when pg_attribute is very large + (Tom Lane) + + + + If pg_attribute exceeds one-fourth of + shared_buffers, cache rebuilding code that is sometimes + needed during session start would trigger the synchronized-scan logic, + causing it to take many times longer than normal. The problem was + particularly acute if many new sessions were starting at once. + + + + + + Ensure sequential scans check for query cancel reasonably often (Merlin + Moncure) + + + + A scan encountering many consecutive pages that contain no live tuples + would not respond to interrupts meanwhile. + + + + + + Ensure the Windows implementation of PGSemaphoreLock() + clears ImmediateInterruptOK before returning (Tom Lane) + + + + This oversight meant that a query-cancel interrupt received later + in the same query could be accepted at an unsafe time, with + unpredictable but not good consequences. + + + + + + Show whole-row variables safely when printing views or rules + (Abbas Butt, Tom Lane) + + + + Corner cases involving ambiguous names (that is, the name could be + either a table or column name of the query) were printed in an + ambiguous way, risking that the view or rule would be interpreted + differently after dump and reload. Avoid the ambiguous case by + attaching a no-op cast. + + + + + + Fix COPY FROM to properly handle null marker strings that + correspond to invalid encoding (Tom Lane) + + + + A null marker string such as E'\\0' should work, and did + work in the past, but the case got broken in 8.4. + + + + + + Ensure autovacuum worker processes perform stack depth checking + properly (Heikki Linnakangas) + + + + Previously, infinite recursion in a function invoked by + auto-ANALYZE could crash worker processes. + + + + + + Fix logging collector to not lose log coherency under high load (Andrew + Dunstan) + + + + The collector previously could fail to reassemble large messages if it + got too busy. + + + + + + Fix logging collector to ensure it will restart file rotation + after receiving SIGHUP (Tom Lane) + + + + + + Fix WAL replay logic for GIN indexes to not fail if the index was + subsequently dropped (Tom Lane) + + + + + + Fix memory leak in PL/pgSQL's RETURN NEXT command (Joe + Conway) + + + + + + Fix PL/pgSQL's GET DIAGNOSTICS command when the target + is the function's first variable (Tom Lane) + + + + + + Fix potential access off the end of memory in psql's + expanded display (\x) mode (Peter Eisentraut) + + + + + + Fix several performance problems in pg_dump when + the database contains many objects (Jeff Janes, Tom Lane) + + + + pg_dump could get very slow if the database contained + many schemas, or if many objects are in dependency loops, or if there + are many owned sequences. + + + + + + Fix contrib/dblink's dblink_exec() to not leak + temporary database connections upon error (Tom Lane) + + + + + + Fix contrib/dblink to report the correct connection name in + error messages (Kyotaro Horiguchi) + + + + + + Update time zone data files to tzdata release 2012c + for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland + Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; + also historical corrections for Canada. + + + + + + + + + + Release 8.4.11 + + + Release Date + 2012-02-27 + + + + This release contains a variety of fixes from 8.4.10. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.11 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.10, + see . + + + + + + Changes + + + + + + Require execute permission on the trigger function for + CREATE TRIGGER (Robert Haas) + + + + This missing check could allow another user to execute a trigger + function with forged input data, by installing it on a table he owns. + This is only of significance for trigger functions marked + SECURITY DEFINER, since otherwise trigger functions run + as the table owner anyway. (CVE-2012-0866) + + + + + + Remove arbitrary limitation on length of common name in SSL + certificates (Heikki Linnakangas) + + + + Both libpq and the server truncated the common name + extracted from an SSL certificate at 32 bytes. Normally this would + cause nothing worse than an unexpected verification failure, but there + are some rather-implausible scenarios in which it might allow one + certificate holder to impersonate another. The victim would have to + have a common name exactly 32 bytes long, and the attacker would have + to persuade a trusted CA to issue a certificate in which the common + name has that string as a prefix. Impersonating a server would also + require some additional exploit to redirect client connections. + (CVE-2012-0867) + + + + + + Convert newlines to spaces in names written in pg_dump + comments (Robert Haas) + + + + pg_dump was incautious about sanitizing object names + that are emitted within SQL comments in its output script. A name + containing a newline would at least render the script syntactically + incorrect. Maliciously crafted object names could present a SQL + injection risk when the script is reloaded. (CVE-2012-0868) + + + + + + Fix btree index corruption from insertions concurrent with vacuuming + (Tom Lane) + + + + An index page split caused by an insertion could sometimes cause a + concurrently-running VACUUM to miss removing index entries + that it should remove. After the corresponding table rows are removed, + the dangling index entries would cause errors (such as could not + read block N in file ...) or worse, silently wrong query results + after unrelated rows are re-inserted at the now-free table locations. + This bug has been present since release 8.2, but occurs so infrequently + that it was not diagnosed until now. If you have reason to suspect + that it has happened in your database, reindexing the affected index + will fix things. + + + + + + Update per-column permissions, not only per-table permissions, when + changing table owner (Tom Lane) + + + + Failure to do this meant that any previously granted column permissions + were still shown as having been granted by the old owner. This meant + that neither the new owner nor a superuser could revoke the + now-untraceable-to-table-owner permissions. + + + + + + Allow non-existent values for some settings in ALTER + USER/DATABASE SET (Heikki Linnakangas) + + + + Allow default_text_search_config, + default_tablespace, and temp_tablespaces to be + set to names that are not known. This is because they might be known + in another database where the setting is intended to be used, or for the + tablespace cases because the tablespace might not be created yet. The + same issue was previously recognized for search_path, and + these settings now act like that one. + + + + + + Avoid crashing when we have problems deleting table files post-commit + (Tom Lane) + + + + Dropping a table should lead to deleting the underlying disk files only + after the transaction commits. In event of failure then (for instance, + because of wrong file permissions) the code is supposed to just emit a + warning message and go on, since it's too late to abort the + transaction. This logic got broken as of release 8.4, causing such + situations to result in a PANIC and an unrestartable database. + + + + + + Track the OID counter correctly during WAL replay, even when it wraps + around (Tom Lane) + + + + Previously the OID counter would remain stuck at a high value until the + system exited replay mode. The practical consequences of that are + usually nil, but there are scenarios wherein a standby server that's + been promoted to master might take a long time to advance the OID + counter to a reasonable value once values are needed. + + + + + + Fix regular expression back-references with * attached + (Tom Lane) + + + + Rather than enforcing an exact string match, the code would effectively + accept any string that satisfies the pattern sub-expression referenced + by the back-reference symbol. + + + + A similar problem still afflicts back-references that are embedded in a + larger quantified expression, rather than being the immediate subject + of the quantifier. This will be addressed in a future + PostgreSQL release. + + + + + + Fix recently-introduced memory leak in processing of + inet/cidr values (Heikki Linnakangas) + + + + A patch in the December 2011 releases of PostgreSQL + caused memory leakage in these operations, which could be significant + in scenarios such as building a btree index on such a column. + + + + + + Fix dangling pointer after CREATE TABLE AS/SELECT + INTO in a SQL-language function (Tom Lane) + + + + In most cases this only led to an assertion failure in assert-enabled + builds, but worse consequences seem possible. + + + + + + Avoid double close of file handle in syslogger on Windows (MauMau) + + + + Ordinarily this error was invisible, but it would cause an exception + when running on a debug version of Windows. + + + + + + Fix I/O-conversion-related memory leaks in plpgsql + (Andres Freund, Jan Urbanski, Tom Lane) + + + + Certain operations would leak memory until the end of the current + function. + + + + + + Improve pg_dump's handling of inherited table columns + (Tom Lane) + + + + pg_dump mishandled situations where a child column has + a different default expression than its parent column. If the default + is textually identical to the parent's default, but not actually the + same (for instance, because of schema search path differences) it would + not be recognized as different, so that after dump and restore the + child would be allowed to inherit the parent's default. Child columns + that are NOT NULL where their parent is not could also be + restored subtly incorrectly. + + + + + + Fix pg_restore's direct-to-database mode for + INSERT-style table data (Tom Lane) + + + + Direct-to-database restores from archive files made with + + + + + + Allow AT option in ecpg + DEALLOCATE statements (Michael Meskes) + + + + The infrastructure to support this has been there for awhile, but + through an oversight there was still an error check rejecting the case. + + + + + + Fix error in contrib/intarray's int[] & + int[] operator (Guillaume Lelarge) + + + + If the smallest integer the two input arrays have in common is 1, + and there are smaller values in either array, then 1 would be + incorrectly omitted from the result. + + + + + + Fix error detection in contrib/pgcrypto's + encrypt_iv() and decrypt_iv() + (Marko Kreen) + + + + These functions failed to report certain types of invalid-input errors, + and would instead return random garbage values for incorrect input. + + + + + + Fix one-byte buffer overrun in contrib/test_parser + (Paul Guyot) + + + + The code would try to read one more byte than it should, which would + crash in corner cases. + Since contrib/test_parser is only example code, this is + not a security issue in itself, but bad example code is still bad. + + + + + + Use __sync_lock_test_and_set() for spinlocks on ARM, if + available (Martin Pitt) + + + + This function replaces our previous use of the SWPB + instruction, which is deprecated and not available on ARMv6 and later. + Reports suggest that the old code doesn't fail in an obvious way on + recent ARM boards, but simply doesn't interlock concurrent accesses, + leading to bizarre failures in multiprocess operation. + + + + + + Use + + + This prevents assorted scenarios wherein recent versions of gcc will + produce creative results. + + + + + + Allow use of threaded Python on FreeBSD (Chris Rees) + + + + Our configure script previously believed that this combination wouldn't + work; but FreeBSD fixed the problem, so remove that error check. + + + + + + + + + + Release 8.4.10 + + + Release Date + 2011-12-05 + + + + This release contains a variety of fixes from 8.4.9. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.10 + + + A dump/restore is not required for those running 8.4.X. + + + + However, a longstanding error was discovered in the definition of the + information_schema.referential_constraints view. If you + rely on correct results from that view, you should replace its + definition as explained in the first changelog item below. + + + + Also, if you are upgrading from a version earlier than 8.4.8, + see . + + + + + + Changes + + + + + + Fix bugs in information_schema.referential_constraints view + (Tom Lane) + + + + This view was being insufficiently careful about matching the + foreign-key constraint to the depended-on primary or unique key + constraint. That could result in failure to show a foreign key + constraint at all, or showing it multiple times, or claiming that it + depends on a different constraint than the one it really does. + + + + Since the view definition is installed by initdb, + merely upgrading will not fix the problem. If you need to fix this + in an existing installation, you can (as a superuser) drop the + information_schema schema then re-create it by sourcing + SHAREDIR/information_schema.sql. + (Run pg_config --sharedir if you're uncertain where + SHAREDIR is.) This must be repeated in each database + to be fixed. + + + + + + Fix incorrect replay of WAL records for GIN index updates + (Tom Lane) + + + + This could result in transiently failing to find index entries after + a crash, or on a hot-standby server. The problem would be repaired + by the next VACUUM of the index, however. + + + + + + Fix TOAST-related data corruption during CREATE TABLE dest AS + SELECT * FROM src or INSERT INTO dest SELECT * FROM src + (Tom Lane) + + + + If a table has been modified by ALTER TABLE ADD COLUMN, + attempts to copy its data verbatim to another table could produce + corrupt results in certain corner cases. + The problem can only manifest in this precise form in 8.4 and later, + but we patched earlier versions as well in case there are other code + paths that could trigger the same bug. + + + + + + Fix race condition during toast table access from stale syscache entries + (Tom Lane) + + + + The typical symptom was transient errors like missing chunk + number 0 for toast value NNNNN in pg_toast_2619, where the cited + toast table would always belong to a system catalog. + + + + + + Track dependencies of functions on items used in parameter default + expressions (Tom Lane) + + + + Previously, a referenced object could be dropped without having dropped + or modified the function, leading to misbehavior when the function was + used. Note that merely installing this update will not fix the missing + dependency entries; to do that, you'd need to CREATE OR + REPLACE each such function afterwards. If you have functions whose + defaults depend on non-built-in objects, doing so is recommended. + + + + + + Allow inlining of set-returning SQL functions with multiple OUT + parameters (Tom Lane) + + + + + + Make DatumGetInetP() unpack inet datums that have a 1-byte + header, and add a new macro, DatumGetInetPP(), that does + not (Heikki Linnakangas) + + + + This change affects no core code, but might prevent crashes in add-on + code that expects DatumGetInetP() to produce an unpacked + datum as per usual convention. + + + + + + Improve locale support in money type's input and output + (Tom Lane) + + + + Aside from not supporting all standard + lc_monetary + formatting options, the input and output functions were inconsistent, + meaning there were locales in which dumped money values could + not be re-read. + + + + + + Don't let transform_null_equals + affect CASE foo WHEN NULL ... constructs + (Heikki Linnakangas) + + + + transform_null_equals is only supposed to affect + foo = NULL expressions written directly by the user, not + equality checks generated internally by this form of CASE. + + + + + + Change foreign-key trigger creation order to better support + self-referential foreign keys (Tom Lane) + + + + For a cascading foreign key that references its own table, a row update + will fire both the ON UPDATE trigger and the + CHECK trigger as one event. The ON UPDATE + trigger must execute first, else the CHECK will check a + non-final state of the row and possibly throw an inappropriate error. + However, the firing order of these triggers is determined by their + names, which generally sort in creation order since the triggers have + auto-generated names following the convention + RI_ConstraintTrigger_NNNN. A proper fix would require + modifying that convention, which we will do in 9.2, but it seems risky + to change it in existing releases. So this patch just changes the + creation order of the triggers. Users encountering this type of error + should drop and re-create the foreign key constraint to get its + triggers into the right order. + + + + + + Avoid floating-point underflow while tracking buffer allocation rate + (Greg Matthews) + + + + While harmless in itself, on certain platforms this would result in + annoying kernel log messages. + + + + + + Preserve configuration file name and line number values when starting + child processes under Windows (Tom Lane) + + + + Formerly, these would not be displayed correctly in the + pg_settings view. + + + + + + Preserve blank lines within commands in psql's command + history (Robert Haas) + + + + The former behavior could cause problems if an empty line was removed + from within a string literal, for example. + + + + + + Fix pg_dump to dump user-defined casts between + auto-generated types, such as table rowtypes (Tom Lane) + + + + + + Use the preferred version of xsubpp to build PL/Perl, + not necessarily the operating system's main copy + (David Wheeler and Alex Hunsaker) + + + + + + Fix incorrect coding in contrib/dict_int and + contrib/dict_xsyn (Tom Lane) + + + + Some functions incorrectly assumed that memory returned by + palloc() is guaranteed zeroed. + + + + + + Honor query cancel interrupts promptly in pgstatindex() + (Robert Haas) + + + + + + Ensure VPATH builds properly install all server header files + (Peter Eisentraut) + + + + + + Shorten file names reported in verbose error messages (Peter Eisentraut) + + + + Regular builds have always reported just the name of the C file + containing the error message call, but VPATH builds formerly + reported an absolute path name. + + + + + + Fix interpretation of Windows timezone names for Central America + (Tom Lane) + + + + Map Central America Standard Time to CST6, not + CST6CDT, because DST is generally not observed anywhere in + Central America. + + + + + + Update time zone data files to tzdata release 2011n + for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa; + also historical corrections for Alaska and British East Africa. + + + + + + + + + + Release 8.4.9 + + + Release Date + 2011-09-26 + + + + This release contains a variety of fixes from 8.4.8. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.9 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.8, + see . + + + + + + Changes + + + + + + Fix bugs in indexing of in-doubt HOT-updated tuples (Tom Lane) + + + + These bugs could result in index corruption after reindexing a system + catalog. They are not believed to affect user indexes. + + + + + + Fix multiple bugs in GiST index page split processing (Heikki + Linnakangas) + + + + The probability of occurrence was low, but these could lead to index + corruption. + + + + + + Fix possible buffer overrun in tsvector_concat() + (Tom Lane) + + + + The function could underestimate the amount of memory needed for its + result, leading to server crashes. + + + + + + Fix crash in xml_recv when processing a + standalone parameter (Tom Lane) + + + + + + Make pg_options_to_table return NULL for an option with no + value (Tom Lane) + + + + Previously such cases would result in a server crash. + + + + + + Avoid possibly accessing off the end of memory in ANALYZE + and in SJIS-2004 encoding conversion (Noah Misch) + + + + This fixes some very-low-probability server crash scenarios. + + + + + + Prevent intermittent hang in interactions of startup process with + bgwriter process (Simon Riggs) + + + + This affected recovery in non-hot-standby cases. + + + + + + Fix race condition in relcache init file invalidation (Tom Lane) + + + + There was a window wherein a new backend process could read a stale init + file but miss the inval messages that would tell it the data is stale. + The result would be bizarre failures in catalog accesses, typically + could not read block 0 in file ... later during startup. + + + + + + Fix memory leak at end of a GiST index scan (Tom Lane) + + + + Commands that perform many separate GiST index scans, such as + verification of a new GiST-based exclusion constraint on a table + already containing many rows, could transiently require large amounts of + memory due to this leak. + + + + + + Fix incorrect memory accounting (leading to possible memory bloat) in + tuplestores supporting holdable cursors and plpgsql's RETURN + NEXT command (Tom Lane) + + + + + + Fix performance problem when constructing a large, lossy bitmap + (Tom Lane) + + + + + + Fix join selectivity estimation for unique columns (Tom Lane) + + + + This fixes an erroneous planner heuristic that could lead to poor + estimates of the result size of a join. + + + + + + Fix nested PlaceHolderVar expressions that appear only in sub-select + target lists (Tom Lane) + + + + This mistake could result in outputs of an outer join incorrectly + appearing as NULL. + + + + + + Allow nested EXISTS queries to be optimized properly (Tom + Lane) + + + + + + Fix array- and path-creating functions to ensure padding bytes are + zeroes (Tom Lane) + + + + This avoids some situations where the planner will think that + semantically-equal constants are not equal, resulting in poor + optimization. + + + + + + Fix EXPLAIN to handle gating Result nodes within + inner-indexscan subplans (Tom Lane) + + + + The usual symptom of this oversight was bogus varno errors. + + + + + + Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane) + + + + This could lead to loss of committed transactions after a server crash. + + + + + + Fix dump bug for VALUES in a view (Tom Lane) + + + + + + Disallow SELECT FOR UPDATE/SHARE on sequences (Tom Lane) + + + + This operation doesn't work as expected and can lead to failures. + + + + + + Fix VACUUM so that it always updates + pg_class.reltuples/relpages (Tom + Lane) + + + + This fixes some scenarios where autovacuum could make increasingly poor + decisions about when to vacuum tables. + + + + + + Defend against integer overflow when computing size of a hash table (Tom + Lane) + + + + + + Fix cases where CLUSTER might attempt to access + already-removed TOAST data (Tom Lane) + + + + + + Fix portability bugs in use of credentials control messages for + peer authentication (Tom Lane) + + + + + + Fix SSPI login when multiple roundtrips are required (Ahmed Shinwari, + Magnus Hagander) + + + + The typical symptom of this problem was The function requested is + not supported errors during SSPI login. + + + + + + Throw an error if pg_hba.conf contains hostssl + but SSL is disabled (Tom Lane) + + + + This was concluded to be more user-friendly than the previous behavior + of silently ignoring such lines. + + + + + + Fix typo in pg_srand48 seed initialization (Andres Freund) + + + + This led to failure to use all bits of the provided seed. This function + is not used on most platforms (only those without srandom), + and the potential security exposure from a less-random-than-expected + seed seems minimal in any case. + + + + + + Avoid integer overflow when the sum of LIMIT and + OFFSET values exceeds 2^63 (Heikki Linnakangas) + + + + + + Add overflow checks to int4 and int8 versions of + generate_series() (Robert Haas) + + + + + + Fix trailing-zero removal in to_char() (Marti Raudsepp) + + + + In a format with FM and no digit positions + after the decimal point, zeroes to the left of the decimal point could + be removed incorrectly. + + + + + + Fix pg_size_pretty() to avoid overflow for inputs close to + 2^63 (Tom Lane) + + + + + + Weaken plpgsql's check for typmod matching in record values (Tom Lane) + + + + An overly enthusiastic check could lead to discarding length modifiers + that should have been kept. + + + + + + Correctly handle quotes in locale names during initdb + (Heikki Linnakangas) + + + + The case can arise with some Windows locales, such as People's + Republic of China. + + + + + + Fix pg_upgrade to preserve toast tables' relfrozenxids + during an upgrade from 8.3 (Bruce Momjian) + + + + Failure to do this could lead to pg_clog files being + removed too soon after the upgrade. + + + + + + In pg_ctl, support silent mode for service registrations + on Windows (MauMau) + + + + + + Fix psql's counting of script file line numbers during + COPY from a different file (Tom Lane) + + + + + + Fix pg_restore's direct-to-database mode for + standard_conforming_strings (Tom Lane) + + + + pg_restore could emit incorrect commands when restoring + directly to a database server from an archive file that had been made + with standard_conforming_strings set to on. + + + + + + Be more user-friendly about unsupported cases for parallel + pg_restore (Tom Lane) + + + + This change ensures that such cases are detected and reported before + any restore actions have been taken. + + + + + + Fix write-past-buffer-end and memory leak in libpq's + LDAP service lookup code (Albe Laurenz) + + + + + + In libpq, avoid failures when using nonblocking I/O + and an SSL connection (Martin Pihlak, Tom Lane) + + + + + + Improve libpq's handling of failures during connection startup + (Tom Lane) + + + + In particular, the response to a server report of fork() + failure during SSL connection startup is now saner. + + + + + + Improve libpq's error reporting for SSL failures (Tom + Lane) + + + + + + Fix PQsetvalue() to avoid possible crash when adding a new + tuple to a PGresult originally obtained from a server + query (Andrew Chernow) + + + + + + Make ecpglib write double values with 15 digits + precision (Akira Kurosawa) + + + + + + In ecpglib, be sure LC_NUMERIC setting is + restored after an error (Michael Meskes) + + + + + + Apply upstream fix for blowfish signed-character bug (CVE-2011-2483) + (Tom Lane) + + + + contrib/pg_crypto's blowfish encryption code could give + wrong results on platforms where char is signed (which is most), + leading to encrypted passwords being weaker than they should be. + + + + + + Fix memory leak in contrib/seg (Heikki Linnakangas) + + + + + + Fix pgstatindex() to give consistent results for empty + indexes (Tom Lane) + + + + + + Allow building with perl 5.14 (Alex Hunsaker) + + + + + + Update configure script's method for probing existence of system + functions (Tom Lane) + + + + The version of autoconf we used in 8.3 and 8.2 could be fooled by + compilers that perform link-time optimization. + + + + + + Fix assorted issues with build and install file paths containing spaces + (Tom Lane) + + + + + + Update time zone data files to tzdata release 2011i + for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan. + + + + + + + + + + Release 8.4.8 + + + Release Date + 2011-04-18 + + + + This release contains a variety of fixes from 8.4.7. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.8 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if your installation was upgraded from a previous major + release by running pg_upgrade, you should take + action to prevent possible data loss due to a now-fixed bug in + pg_upgrade. The recommended solution is to run + VACUUM FREEZE on all TOAST tables. + More information is available at + http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix. + + + + Also, if you are upgrading from a version earlier than 8.4.2, + see . + + + + + + Changes + + + + + + Fix pg_upgrade's handling of TOAST tables + (Bruce Momjian) + + + + The pg_class.relfrozenxid value for + TOAST tables was not correctly copied into the new installation + during pg_upgrade. This could later result in + pg_clog files being discarded while they were still + needed to validate tuples in the TOAST tables, leading to + could not access status of transaction failures. + + + + This error poses a significant risk of data loss for installations + that have been upgraded with pg_upgrade. This patch + corrects the problem for future uses of pg_upgrade, + but does not in itself cure the issue in installations that have been + processed with a buggy version of pg_upgrade. + + + + + + Suppress incorrect PD_ALL_VISIBLE flag was incorrectly set + warning (Heikki Linnakangas) + + + + VACUUM would sometimes issue this warning in cases that + are actually valid. + + + + + + Disallow including a composite type in itself (Tom Lane) + + + + This prevents scenarios wherein the server could recurse infinitely + while processing the composite type. While there are some possible + uses for such a structure, they don't seem compelling enough to + justify the effort required to make sure it always works safely. + + + + + + Avoid potential deadlock during catalog cache initialization + (Nikhil Sontakke) + + + + In some cases the cache loading code would acquire share lock on a + system index before locking the index's catalog. This could deadlock + against processes trying to acquire exclusive locks in the other, + more standard order. + + + + + + Fix dangling-pointer problem in BEFORE ROW UPDATE trigger + handling when there was a concurrent update to the target tuple + (Tom Lane) + + + + This bug has been observed to result in intermittent cannot + extract system attribute from virtual tuple failures while trying to + do UPDATE RETURNING ctid. There is a very small probability + of more serious errors, such as generating incorrect index entries for + the updated tuple. + + + + + + Disallow DROP TABLE when there are pending deferred trigger + events for the table (Tom Lane) + + + + Formerly the DROP would go through, leading to + could not open relation with OID nnn errors when the + triggers were eventually fired. + + + + + + Prevent crash triggered by constant-false WHERE conditions during + GEQO optimization (Tom Lane) + + + + + + + + + Improve planner's handling of semi-join and anti-join cases + (Tom Lane) + + + + + + Fix selectivity estimation for text search to account for NULLs + (Jesper Krogh) + + + + + + Improve PL/pgSQL's ability to handle row types with dropped columns + (Pavel Stehule) + + + + This is a back-patch of fixes previously made in 9.0. + + + + + + Fix PL/Python memory leak involving array slices (Daniel Popowich) + + + + + + Fix pg_restore to cope with long lines (over 1KB) in + TOC files (Tom Lane) + + + + + + Put in more safeguards against crashing due to division-by-zero + with overly enthusiastic compiler optimization (Aurelien Jarno) + + + + + + Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane) + + + + There was a hard-wired assumption that this system function was not + available on MIPS hardware on these systems. Use a compile-time test + instead, since more recent versions have it. + + + + + + Fix compilation failures on HP-UX (Heikki Linnakangas) + + + + + + Fix version-incompatibility problem with libintl on + Windows (Hiroshi Inoue) + + + + + + Fix usage of xcopy in Windows build scripts to + work correctly under Windows 7 (Andrew Dunstan) + + + + This affects the build scripts only, not installation or usage. + + + + + + Fix path separator used by pg_regress on Cygwin + (Andrew Dunstan) + + + + + + Update time zone data files to tzdata release 2011f + for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa, + and Turkey; also historical corrections for South Australia, Alaska, + and Hawaii. + + + + + + + + Release 8.4.7 - Release date + Release Date 2011-01-31 @@ -21,7 +5205,7 @@ A dump/restore is not required for those running 8.4.X. However, if you are upgrading from a version earlier than 8.4.2, - see the release notes for 8.4.2. + see . @@ -137,7 +5321,7 @@ Release 8.4.6 - Release date + Release Date 2010-12-16 @@ -153,7 +5337,7 @@ A dump/restore is not required for those running 8.4.X. However, if you are upgrading from a version earlier than 8.4.2, - see the release notes for 8.4.2. + see . @@ -448,7 +5632,7 @@ Release 8.4.5 - Release date + Release Date 2010-10-04 @@ -464,7 +5648,7 @@ A dump/restore is not required for those running 8.4.X. However, if you are upgrading from a version earlier than 8.4.2, - see the release notes for 8.4.2. + see . @@ -970,7 +6154,7 @@ Release 8.4.4 - Release date + Release Date 2010-05-17 @@ -986,7 +6170,7 @@ A dump/restore is not required for those running 8.4.X. However, if you are upgrading from a version earlier than 8.4.2, - see the release notes for 8.4.2. + see . @@ -1261,7 +6445,7 @@ Release 8.4.3 - Release date + Release Date 2010-03-15 @@ -1277,7 +6461,7 @@ A dump/restore is not required for those running 8.4.X. However, if you are upgrading from a version earlier than 8.4.2, - see the release notes for 8.4.2. + see . @@ -1728,7 +6912,7 @@ Release 8.4.2 - Release date + Release Date 2009-12-14 @@ -1814,7 +6998,7 @@ - This fix prevents a PANIC if a VACUUM FULL is cancelled + This fix prevents a PANIC if a VACUUM FULL is canceled after it's already committed its tuple movements, as well as transient errors if a plain VACUUM is interrupted after having truncated the table. @@ -2259,7 +7443,7 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE Release 8.4.1 - Release date + Release Date 2009-09-09 @@ -2558,7 +7742,7 @@ WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE Release 8.4 - Release date + Release Date 2009-07-01 diff --git a/doc-xc/src/sgml/release-9.0.sgmlin b/doc-xc/src/sgml/release-9.0.sgmlin index dcd9e1e22c..56698a4abd 100644 --- a/doc-xc/src/sgml/release-9.0.sgmlin +++ b/doc-xc/src/sgml/release-9.0.sgmlin @@ -1,11 +1,6476 @@ + + Release 9.0.13 + + + Release Date + 2013-04-04 + + + + This release contains a variety of fixes from 9.0.12. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.13 + + + A dump/restore is not required for those running 9.0.X. + + + + However, this release corrects several errors in management of GiST + indexes. After installing this update, it is advisable to + REINDEX any GiST indexes that meet one or more of the + conditions described below. + + + + Also, if you are upgrading from a version earlier than 9.0.6, + see the release notes for 9.0.6. + + + + + + Changes + + + + + + Fix insecure parsing of server command-line switches (Mitsumasa + Kondo, Kyotaro Horiguchi) + + + + A connection request containing a database name that begins with + - could be crafted to damage or destroy + files within the server's data directory, even if the request is + eventually rejected. (CVE-2013-1899) + + + + + + Reset OpenSSL randomness state in each postmaster child process + (Marko Kreen) + + + + This avoids a scenario wherein random numbers generated by + contrib/pgcrypto functions might be relatively easy for + another database user to guess. The risk is only significant when + the postmaster is configured with ssl = on + but most connections don't use SSL encryption. (CVE-2013-1900) + + + + + + Fix GiST indexes to not use fuzzy geometric comparisons when + it's not appropriate to do so (Alexander Korotkov) + + + + The core geometric types perform comparisons using fuzzy + equality, but gist_box_same must do exact comparisons, + else GiST indexes using it might become inconsistent. After installing + this update, users should REINDEX any GiST indexes on + box, polygon, circle, or point + columns, since all of these use gist_box_same. + + + + + + Fix erroneous range-union and penalty logic in GiST indexes that use + contrib/btree_gist for variable-width data types, that is + text, bytea, bit, and numeric + columns (Tom Lane) + + + + These errors could result in inconsistent indexes in which some keys + that are present would not be found by searches, and also in useless + index bloat. Users are advised to REINDEX such indexes + after installing this update. + + + + + + Fix bugs in GiST page splitting code for multi-column indexes + (Tom Lane) + + + + These errors could result in inconsistent indexes in which some keys + that are present would not be found by searches, and also in indexes + that are unnecessarily inefficient to search. Users are advised to + REINDEX multi-column GiST indexes after installing this + update. + + + + + + Fix gist_point_consistent + to handle fuzziness consistently (Alexander Korotkov) + + + + Index scans on GiST indexes on point columns would sometimes + yield results different from a sequential scan, because + gist_point_consistent disagreed with the underlying + operator code about whether to do comparisons exactly or fuzzily. + + + + + + Fix buffer leak in WAL replay (Heikki Linnakangas) + + + + This bug could result in incorrect local pin count errors + during replay, making recovery impossible. + + + + + + Fix race condition in DELETE RETURNING (Tom Lane) + + + + Under the right circumstances, DELETE RETURNING could + attempt to fetch data from a shared buffer that the current process + no longer has any pin on. If some other process changed the buffer + meanwhile, this would lead to garbage RETURNING output, or + even a crash. + + + + + + Fix infinite-loop risk in regular expression compilation (Tom Lane, + Don Porter) + + + + + + Fix potential null-pointer dereference in regular expression compilation + (Tom Lane) + + + + + + Fix to_char() to use ASCII-only case-folding rules where + appropriate (Tom Lane) + + + + This fixes misbehavior of some template patterns that should be + locale-independent, but mishandled I and + i in Turkish locales. + + + + + + Fix unwanted rejection of timestamp 1999-12-31 24:00:00 + (Tom Lane) + + + + + + Fix logic error when a single transaction does UNLISTEN + then LISTEN (Tom Lane) + + + + The session wound up not listening for notify events at all, though it + surely should listen in this case. + + + + + + Remove useless picksplit doesn't support secondary split log + messages (Josh Hansen, Tom Lane) + + + + This message seems to have been added in expectation of code that was + never written, and probably never will be, since GiST's default + handling of secondary splits is actually pretty good. So stop nagging + end users about it. + + + + + + Fix possible failure to send a session's last few transaction + commit/abort counts to the statistics collector (Tom Lane) + + + + + + Eliminate memory leaks in PL/Perl's spi_prepare() function + (Alex Hunsaker, Tom Lane) + + + + + + Fix pg_dumpall to handle database names containing + = correctly (Heikki Linnakangas) + + + + + + Avoid crash in pg_dump when an incorrect connection + string is given (Heikki Linnakangas) + + + + + + Ignore invalid indexes in pg_dump and + pg_upgrade (Michael Paquier, Bruce Momjian) + + + + Dumping invalid indexes can cause problems at restore time, for example + if the reason the index creation failed was because it tried to enforce + a uniqueness condition not satisfied by the table's data. Also, if the + index creation is in fact still in progress, it seems reasonable to + consider it to be an uncommitted DDL change, which + pg_dump wouldn't be expected to dump anyway. + pg_upgrade now also skips invalid indexes rather than + failing. + + + + + + Fix contrib/pg_trgm's similarity() function + to return zero for trigram-less strings (Tom Lane) + + + + Previously it returned NaN due to internal division by zero. + + + + + + Update time zone data files to tzdata release 2013b + for DST law changes in Chile, Haiti, Morocco, Paraguay, and some + Russian areas. Also, historical zone data corrections for numerous + places. + + + + Also, update the time zone abbreviation files for recent changes in + Russia and elsewhere: CHOT, GET, + IRKT, KGT, KRAT, MAGT, + MAWT, MSK, NOVT, OMST, + TKT, VLAT, WST, YAKT, + YEKT now follow their current meanings, and + VOLT (Europe/Volgograd) and MIST + (Antarctica/Macquarie) are added to the default abbreviations list. + + + + + + + + + + Release 9.0.12 + + + Release Date + 2013-02-07 + + + + This release contains a variety of fixes from 9.0.11. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.12 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.6, + see the release notes for 9.0.6. + + + + + + Changes + + + + + + Prevent execution of enum_recv from SQL (Tom Lane) + + + + The function was misdeclared, allowing a simple SQL command to crash the + server. In principle an attacker might be able to use it to examine the + contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP) + for reporting this issue. (CVE-2013-0255) + + + + + + Fix multiple problems in detection of when a consistent database + state has been reached during WAL replay (Fujii Masao, Heikki + Linnakangas, Simon Riggs, Andres Freund) + + + + + + Update minimum recovery point when truncating a relation file (Heikki + Linnakangas) + + + + Once data has been discarded, it's no longer safe to stop recovery at + an earlier point in the timeline. + + + + + + Fix missing cancellations in hot standby mode (Noah Misch, Simon Riggs) + + + + The need to cancel conflicting hot-standby queries would sometimes be + missed, allowing those queries to see inconsistent data. + + + + + + Fix SQL grammar to allow subscripting or field selection from a + sub-SELECT result (Tom Lane) + + + + + + Fix performance problems with autovacuum truncation in busy workloads + (Jan Wieck) + + + + Truncation of empty pages at the end of a table requires exclusive + lock, but autovacuum was coded to fail (and release the table lock) + when there are conflicting lock requests. Under load, it is easily + possible that truncation would never occur, resulting in table bloat. + Fix by performing a partial truncation, releasing the lock, then + attempting to re-acquire the lock and continue. This fix also greatly + reduces the average time before autovacuum releases the lock after a + conflicting request arrives. + + + + + + Protect against race conditions when scanning + pg_tablespace (Stephen Frost, Tom Lane) + + + + CREATE DATABASE and DROP DATABASE could + misbehave if there were concurrent updates of + pg_tablespace entries. + + + + + + Prevent DROP OWNED from trying to drop whole databases or + tablespaces (Álvaro Herrera) + + + + For safety, ownership of these objects must be reassigned, not dropped. + + + + + + Fix error in vacuum_freeze_table_age + implementation (Andres Freund) + + + + In installations that have existed for more than vacuum_freeze_min_age + transactions, this mistake prevented autovacuum from using partial-table + scans, so that a full-table scan would always happen instead. + + + + + + Prevent misbehavior when a RowExpr or XmlExpr + is parse-analyzed twice (Andres Freund, Tom Lane) + + + + This mistake could be user-visible in contexts such as + CREATE TABLE LIKE INCLUDING INDEXES. + + + + + + Improve defenses against integer overflow in hashtable sizing + calculations (Jeff Davis) + + + + + + Reject out-of-range dates in to_date() (Hitoshi Harada) + + + + + + Ensure that non-ASCII prompt strings are translated to the correct + code page on Windows (Alexander Law, Noah Misch) + + + + This bug affected psql and some other client programs. + + + + + + Fix possible crash in psql's \? command + when not connected to a database (Meng Qingzhong) + + + + + + Fix pg_upgrade to deal with invalid indexes safely + (Bruce Momjian) + + + + + + Fix one-byte buffer overrun in libpq's + PQprintTuples (Xi Wang) + + + + This ancient function is not used anywhere by + PostgreSQL itself, but it might still be used by some + client code. + + + + + + Make ecpglib use translated messages properly + (Chen Huajun) + + + + + + Properly install ecpg_compat and + pgtypes libraries on MSVC (Jiang Guiqing) + + + + + + Include our version of isinf() in + libecpg if it's not provided by the system + (Jiang Guiqing) + + + + + + Rearrange configure's tests for supplied functions so it is not + fooled by bogus exports from libedit/libreadline (Christoph Berg) + + + + + + Ensure Windows build number increases over time (Magnus Hagander) + + + + + + Make pgxs build executables with the right + .exe suffix when cross-compiling for Windows + (Zoltan Boszormenyi) + + + + + + Add new timezone abbreviation FET (Tom Lane) + + + + This is now used in some eastern-European time zones. + + + + + + + + + + Release 9.0.11 + + + Release Date + 2012-12-06 + + + + This release contains a variety of fixes from 9.0.10. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.11 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.6, + see the release notes for 9.0.6. + + + + + + Changes + + + + + + Fix multiple bugs associated with CREATE INDEX + CONCURRENTLY (Andres Freund, Tom Lane) + + + + Fix CREATE INDEX CONCURRENTLY to use + in-place updates when changing the state of an index's + pg_index row. This prevents race conditions that could + cause concurrent sessions to miss updating the target index, thus + resulting in corrupt concurrently-created indexes. + + + + Also, fix various other operations to ensure that they ignore + invalid indexes resulting from a failed CREATE INDEX + CONCURRENTLY command. The most important of these is + VACUUM, because an auto-vacuum could easily be launched + on the table before corrective action can be taken to fix or remove + the invalid index. + + + + + + Fix buffer locking during WAL replay (Tom Lane) + + + + The WAL replay code was insufficiently careful about locking buffers + when replaying WAL records that affect more than one page. This could + result in hot standby queries transiently seeing inconsistent states, + resulting in wrong answers or unexpected failures. + + + + + + Fix an error in WAL generation logic for GIN indexes (Tom Lane) + + + + This could result in index corruption, if a torn-page failure occurred. + + + + + + Properly remove startup process's virtual XID lock when promoting a + hot standby server to normal running (Simon Riggs) + + + + This oversight could prevent subsequent execution of certain + operations such as CREATE INDEX CONCURRENTLY. + + + + + + Avoid bogus out-of-sequence timeline ID errors in standby + mode (Heikki Linnakangas) + + + + + + Prevent the postmaster from launching new child processes after it's + received a shutdown signal (Tom Lane) + + + + This mistake could result in shutdown taking longer than it should, or + even never completing at all without additional user action. + + + + + + Avoid corruption of internal hash tables when out of memory + (Hitoshi Harada) + + + + + + Fix planning of non-strict equivalence clauses above outer joins + (Tom Lane) + + + + The planner could derive incorrect constraints from a clause equating + a non-strict construct to something else, for example + WHERE COALESCE(foo, 0) = 0 + when foo is coming from the nullable side of an outer join. + + + + + + Improve planner's ability to prove exclusion constraints from + equivalence classes (Tom Lane) + + + + + + Fix partial-row matching in hashed subplans to handle cross-type cases + correctly (Tom Lane) + + + + This affects multicolumn NOT IN subplans, such as + WHERE (a, b) NOT IN (SELECT x, y FROM ...) + when for instance b and y are int4 + and int8 respectively. This mistake led to wrong answers + or crashes depending on the specific datatypes involved. + + + + + + Acquire buffer lock when re-fetching the old tuple for an + AFTER ROW UPDATE/DELETE trigger (Andres Freund) + + + + In very unusual circumstances, this oversight could result in passing + incorrect data to the precheck logic for a foreign-key enforcement + trigger. That could result in a crash, or in an incorrect decision + about whether to fire the trigger. + + + + + + Fix ALTER COLUMN TYPE to handle inherited check + constraints properly (Pavan Deolasee) + + + + This worked correctly in pre-8.4 releases, and now works correctly + in 8.4 and later. + + + + + + Fix REASSIGN OWNED to handle grants on tablespaces + (Álvaro Herrera) + + + + + + Ignore incorrect pg_attribute entries for system + columns for views (Tom Lane) + + + + Views do not have any system columns. However, we forgot to + remove such entries when converting a table to a view. That's fixed + properly for 9.3 and later, but in previous branches we need to defend + against existing mis-converted views. + + + + + + Fix rule printing to dump INSERT INTO table + DEFAULT VALUES correctly (Tom Lane) + + + + + + Guard against stack overflow when there are too many + UNION/INTERSECT/EXCEPT clauses + in a query (Tom Lane) + + + + + + Prevent platform-dependent failures when dividing the minimum possible + integer value by -1 (Xi Wang, Tom Lane) + + + + + + Fix possible access past end of string in date parsing + (Hitoshi Harada) + + + + + + Fix failure to advance XID epoch if XID wraparound happens during a + checkpoint and wal_level is hot_standby + (Tom Lane, Andres Freund) + + + + While this mistake had no particular impact on + PostgreSQL itself, it was bad for + applications that rely on txid_current() and related + functions: the TXID value would appear to go backwards. + + + + + + Produce an understandable error message if the length of the path name + for a Unix-domain socket exceeds the platform-specific limit + (Tom Lane, Andrew Dunstan) + + + + Formerly, this would result in something quite unhelpful, such as + Non-recoverable failure in name resolution. + + + + + + Fix memory leaks when sending composite column values to the client + (Tom Lane) + + + + + + Make pg_ctl more robust about reading the + postmaster.pid file (Heikki Linnakangas) + + + + Fix race conditions and possible file descriptor leakage. + + + + + + Fix possible crash in psql if incorrectly-encoded data + is presented and the client_encoding setting is a + client-only encoding, such as SJIS (Jiang Guiqing) + + + + + + Fix bugs in the restore.sql script emitted by + pg_dump in tar output format (Tom Lane) + + + + The script would fail outright on tables whose names include + upper-case characters. Also, make the script capable of restoring + data in + + + + + Fix pg_restore to accept POSIX-conformant + tar files (Brian Weaver, Tom Lane) + + + + The original coding of pg_dump's tar + output mode produced files that are not fully conformant with the + POSIX standard. This has been corrected for version 9.3. This + patch updates previous branches so that they will accept both the + incorrect and the corrected formats, in hopes of avoiding + compatibility problems when 9.3 comes out. + + + + + + Fix pg_resetxlog to locate postmaster.pid + correctly when given a relative path to the data directory (Tom Lane) + + + + This mistake could lead to pg_resetxlog not noticing + that there is an active postmaster using the data directory. + + + + + + Fix libpq's lo_import() and + lo_export() functions to report file I/O errors properly + (Tom Lane) + + + + + + Fix ecpg's processing of nested structure pointer + variables (Muhammad Usama) + + + + + + Fix ecpg's ecpg_get_data function to + handle arrays properly (Michael Meskes) + + + + + + Make contrib/pageinspect's btree page inspection + functions take buffer locks while examining pages (Tom Lane) + + + + + + Fix pgxs support for building loadable modules on AIX + (Tom Lane) + + + + Building modules outside the original source tree didn't work on AIX. + + + + + + Update time zone data files to tzdata release 2012j + for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western + Samoa, and portions of Brazil. + + + + + + + + + + Release 9.0.10 + + + Release Date + 2012-09-24 + + + + This release contains a variety of fixes from 9.0.9. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.10 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.6, + see the release notes for 9.0.6. + + + + + + Changes + + + + + + Fix planner's assignment of executor parameters, and fix executor's + rescan logic for CTE plan nodes (Tom Lane) + + + + These errors could result in wrong answers from queries that scan the + same WITH subquery multiple times. + + + + + + Improve page-splitting decisions in GiST indexes (Alexander Korotkov, + Robert Haas, Tom Lane) + + + + Multi-column GiST indexes might suffer unexpected bloat due to this + error. + + + + + + Fix cascading privilege revoke to stop if privileges are still held + (Tom Lane) + + + + If we revoke a grant option from some role X, but + X still holds that option via a grant from someone + else, we should not recursively revoke the corresponding privilege + from role(s) Y that X had granted it + to. + + + + + + Improve error messages for Hot Standby misconfiguration errors + (Gurjeet Singh) + + + + + + Fix handling of SIGFPE when PL/Perl is in use (Andres Freund) + + + + Perl resets the process's SIGFPE handler to + SIG_IGN, which could result in crashes later on. Restore + the normal Postgres signal handler after initializing PL/Perl. + + + + + + Prevent PL/Perl from crashing if a recursive PL/Perl function is + redefined while being executed (Tom Lane) + + + + + + Work around possible misoptimization in PL/Perl (Tom Lane) + + + + Some Linux distributions contain an incorrect version of + pthread.h that results in incorrect compiled code in + PL/Perl, leading to crashes if a PL/Perl function calls another one + that throws an error. + + + + + + Fix pg_upgrade's handling of line endings on Windows + (Andrew Dunstan) + + + + Previously, pg_upgrade might add or remove carriage + returns in places such as function bodies. + + + + + + On Windows, make pg_upgrade use backslash path + separators in the scripts it emits (Andrew Dunstan) + + + + + + Update time zone data files to tzdata release 2012f + for DST law changes in Fiji + + + + + + + + + + Release 9.0.9 + + + Release Date + 2012-08-17 + + + + This release contains a variety of fixes from 9.0.8. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.9 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.6, + see the release notes for 9.0.6. + + + + + + Changes + + + + + + Prevent access to external files/URLs via XML entity references + (Noah Misch, Tom Lane) + + + + xml_parse() would attempt to fetch external files or + URLs as needed to resolve DTD and entity references in an XML value, + thus allowing unprivileged database users to attempt to fetch data + with the privileges of the database server. While the external data + wouldn't get returned directly to the user, portions of it could be + exposed in error messages if the data didn't parse as valid XML; and + in any case the mere ability to check existence of a file might be + useful to an attacker. (CVE-2012-3489) + + + + + + Prevent access to external files/URLs via contrib/xml2's + xslt_process() (Peter Eisentraut) + + + + libxslt offers the ability to read and write both + files and URLs through stylesheet commands, thus allowing + unprivileged database users to both read and write data with the + privileges of the database server. Disable that through proper use + of libxslt's security options. (CVE-2012-3488) + + + + Also, remove xslt_process()'s ability to fetch documents + and stylesheets from external files/URLs. While this was a + documented feature, it was long regarded as a bad idea. + The fix for CVE-2012-3489 broke that capability, and rather than + expend effort on trying to fix it, we're just going to summarily + remove it. + + + + + + Prevent too-early recycling of btree index pages (Noah Misch) + + + + When we allowed read-only transactions to skip assigning XIDs, we + introduced the possibility that a deleted btree page could be + recycled while a read-only transaction was still in flight to it. + This would result in incorrect index search results. The probability + of such an error occurring in the field seems very low because of the + timing requirements, but nonetheless it should be fixed. + + + + + + Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane) + + + + If ALTER SEQUENCE was executed on a freshly created or + reset sequence, and then precisely one nextval() call + was made on it, and then the server crashed, WAL replay would restore + the sequence to a state in which it appeared that no + nextval() had been done, thus allowing the first + sequence value to be returned again by the next + nextval() call. In particular this could manifest for + serial columns, since creation of a serial column's sequence + includes an ALTER SEQUENCE OWNED BY step. + + + + + + Fix txid_current() to report the correct epoch when not + in hot standby (Heikki Linnakangas) + + + + This fixes a regression introduced in the previous minor release. + + + + + + Fix bug in startup of Hot Standby when a master transaction has many + subtransactions (Andres Freund) + + + + This mistake led to failures reported as out-of-order XID + insertion in KnownAssignedXids. + + + + + + Ensure the backup_label file is fsync'd after + pg_start_backup() (Dave Kerr) + + + + + + Fix timeout handling in walsender processes (Tom Lane) + + + + WAL sender background processes neglected to establish a + SIGALRM handler, meaning they would wait forever in + some corner cases where a timeout ought to happen. + + + + + + Back-patch 9.1 improvement to compress the fsync request queue + (Robert Haas) + + + + This improves performance during checkpoints. The 9.1 change + has now seen enough field testing to seem safe to back-patch. + + + + + + Fix LISTEN/NOTIFY to cope better with I/O + problems, such as out of disk space (Tom Lane) + + + + After a write failure, all subsequent attempts to send more + NOTIFY messages would fail with messages like + Could not read from file "pg_notify/nnnn" at + offset nnnnn: Success. + + + + + + Only allow autovacuum to be auto-canceled by a directly blocked + process (Tom Lane) + + + + The original coding could allow inconsistent behavior in some cases; + in particular, an autovacuum could get canceled after less than + deadlock_timeout grace period. + + + + + + Improve logging of autovacuum cancels (Robert Haas) + + + + + + Fix log collector so that log_truncate_on_rotation works + during the very first log rotation after server start (Tom Lane) + + + + + + Fix WITH attached to a nested set operation + (UNION/INTERSECT/EXCEPT) + (Tom Lane) + + + + + + Ensure that a whole-row reference to a subquery doesn't include any + extra GROUP BY or ORDER BY columns (Tom Lane) + + + + + + Disallow copying whole-row references in CHECK + constraints and index definitions during CREATE TABLE + (Tom Lane) + + + + This situation can arise in CREATE TABLE with + LIKE or INHERITS. The copied whole-row + variable was incorrectly labeled with the row type of the original + table not the new one. Rejecting the case seems reasonable for + LIKE, since the row types might well diverge later. For + INHERITS we should ideally allow it, with an implicit + coercion to the parent table's row type; but that will require more + work than seems safe to back-patch. + + + + + + Fix memory leak in ARRAY(SELECT ...) subqueries (Heikki + Linnakangas, Tom Lane) + + + + + + Fix extraction of common prefixes from regular expressions (Tom Lane) + + + + The code could get confused by quantified parenthesized + subexpressions, such as ^(foo)?bar. This would lead to + incorrect index optimization of searches for such patterns. + + + + + + Fix bugs with parsing signed + hh:mm and + hh:mm:ss + fields in interval constants (Amit Kapila, Tom Lane) + + + + + + Use Postgres' encoding conversion functions, not Python's, when + converting a Python Unicode string to the server encoding in + PL/Python (Jan Urbanski) + + + + This avoids some corner-case problems, notably that Python doesn't + support all the encodings Postgres does. A notable functional change + is that if the server encoding is SQL_ASCII, you will get the UTF-8 + representation of the string; formerly, any non-ASCII characters in + the string would result in an error. + + + + + + Fix mapping of PostgreSQL encodings to Python encodings in PL/Python + (Jan Urbanski) + + + + + + Report errors properly in contrib/xml2's + xslt_process() (Tom Lane) + + + + + + Update time zone data files to tzdata release 2012e + for DST law changes in Morocco and Tokelau + + + + + + + + + + Release 9.0.8 + + + Release Date + 2012-06-04 + + + + This release contains a variety of fixes from 9.0.7. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.8 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.6, + see the release notes for 9.0.6. + + + + + + Changes + + + + + + Fix incorrect password transformation in + contrib/pgcrypto's DES crypt() function + (Solar Designer) + + + + If a password string contained the byte value 0x80, the + remainder of the password was ignored, causing the password to be much + weaker than it appeared. With this fix, the rest of the string is + properly included in the DES hash. Any stored password values that are + affected by this bug will thus no longer match, so the stored values may + need to be updated. (CVE-2012-2143) + + + + + + Ignore SECURITY DEFINER and SET attributes for + a procedural language's call handler (Tom Lane) + + + + Applying such attributes to a call handler could crash the server. + (CVE-2012-2655) + + + + + + Allow numeric timezone offsets in timestamp input to be up to + 16 hours away from UTC (Tom Lane) + + + + Some historical time zones have offsets larger than 15 hours, the + previous limit. This could result in dumped data values being rejected + during reload. + + + + + + Fix timestamp conversion to cope when the given time is exactly the + last DST transition time for the current timezone (Tom Lane) + + + + This oversight has been there a long time, but was not noticed + previously because most DST-using zones are presumed to have an + indefinite sequence of future DST transitions. + + + + + + Fix text to name and char to name + casts to perform string truncation correctly in multibyte encodings + (Karl Schnaitter) + + + + + + Fix memory copying bug in to_tsquery() (Heikki Linnakangas) + + + + + + Ensure txid_current() reports the correct epoch when + executed in hot standby (Simon Riggs) + + + + + + Fix planner's handling of outer PlaceHolderVars within subqueries (Tom + Lane) + + + + This bug concerns sub-SELECTs that reference variables coming from the + nullable side of an outer join of the surrounding query. + In 9.1, queries affected by this bug would fail with ERROR: + Upper-level PlaceHolderVar found where not expected. But in 9.0 and + 8.4, you'd silently get possibly-wrong answers, since the value + transmitted into the subquery wouldn't go to null when it should. + + + + + + Fix slow session startup when pg_attribute is very large + (Tom Lane) + + + + If pg_attribute exceeds one-fourth of + shared_buffers, cache rebuilding code that is sometimes + needed during session start would trigger the synchronized-scan logic, + causing it to take many times longer than normal. The problem was + particularly acute if many new sessions were starting at once. + + + + + + Ensure sequential scans check for query cancel reasonably often (Merlin + Moncure) + + + + A scan encountering many consecutive pages that contain no live tuples + would not respond to interrupts meanwhile. + + + + + + Ensure the Windows implementation of PGSemaphoreLock() + clears ImmediateInterruptOK before returning (Tom Lane) + + + + This oversight meant that a query-cancel interrupt received later + in the same query could be accepted at an unsafe time, with + unpredictable but not good consequences. + + + + + + Show whole-row variables safely when printing views or rules + (Abbas Butt, Tom Lane) + + + + Corner cases involving ambiguous names (that is, the name could be + either a table or column name of the query) were printed in an + ambiguous way, risking that the view or rule would be interpreted + differently after dump and reload. Avoid the ambiguous case by + attaching a no-op cast. + + + + + + Fix COPY FROM to properly handle null marker strings that + correspond to invalid encoding (Tom Lane) + + + + A null marker string such as E'\\0' should work, and did + work in the past, but the case got broken in 8.4. + + + + + + Ensure autovacuum worker processes perform stack depth checking + properly (Heikki Linnakangas) + + + + Previously, infinite recursion in a function invoked by + auto-ANALYZE could crash worker processes. + + + + + + Fix logging collector to not lose log coherency under high load (Andrew + Dunstan) + + + + The collector previously could fail to reassemble large messages if it + got too busy. + + + + + + Fix logging collector to ensure it will restart file rotation + after receiving SIGHUP (Tom Lane) + + + + + + Fix WAL replay logic for GIN indexes to not fail if the index was + subsequently dropped (Tom Lane) + + + + + + Fix memory leak in PL/pgSQL's RETURN NEXT command (Joe + Conway) + + + + + + Fix PL/pgSQL's GET DIAGNOSTICS command when the target + is the function's first variable (Tom Lane) + + + + + + Fix potential access off the end of memory in psql's + expanded display (\x) mode (Peter Eisentraut) + + + + + + Fix several performance problems in pg_dump when + the database contains many objects (Jeff Janes, Tom Lane) + + + + pg_dump could get very slow if the database contained + many schemas, or if many objects are in dependency loops, or if there + are many owned sequences. + + + + + + Fix pg_upgrade for the case that a database stored in a + non-default tablespace contains a table in the cluster's default + tablespace (Bruce Momjian) + + + + + + In ecpg, fix rare memory leaks and possible overwrite + of one byte after the sqlca_t structure (Peter Eisentraut) + + + + + + Fix contrib/dblink's dblink_exec() to not leak + temporary database connections upon error (Tom Lane) + + + + + + Fix contrib/dblink to report the correct connection name in + error messages (Kyotaro Horiguchi) + + + + + + Fix contrib/vacuumlo to use multiple transactions when + dropping many large objects (Tim Lewis, Robert Haas, Tom Lane) + + + + This change avoids exceeding max_locks_per_transaction when + many objects need to be dropped. The behavior can be adjusted with the + new -l (limit) option. + + + + + + Update time zone data files to tzdata release 2012c + for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland + Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; + also historical corrections for Canada. + + + + + + + + + + Release 9.0.17 + + + Release Date + 2014-03-20 + + + + This release contains a variety of fixes from 9.0.16. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.17 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.15, + see . + + + + + + Changes + + + + + + Restore GIN metapages unconditionally to avoid torn-page risk + (Heikki Linnakangas) + + + + Although this oversight could theoretically result in a corrupted + index, it is unlikely to have caused any problems in practice, since + the active part of a GIN metapage is smaller than a standard 512-byte + disk sector. + + + + + + Avoid race condition in checking transaction commit status during + receipt of a NOTIFY message (Marko Tiikkaja) + + + + This prevents a scenario wherein a sufficiently fast client might + respond to a notification before database updates made by the + notifier have become visible to the recipient. + + + + + + Allow regular-expression operators to be terminated early by query + cancel requests (Tom Lane) + + + + This prevents scenarios wherein a pathological regular expression + could lock up a server process uninterruptably for a long time. + + + + + + Remove incorrect code that tried to allow OVERLAPS with + single-element row arguments (Joshua Yanovski) + + + + This code never worked correctly, and since the case is neither + specified by the SQL standard nor documented, it seemed better to + remove it than fix it. + + + + + + Avoid getting more than AccessShareLock when de-parsing a + rule or view (Dean Rasheed) + + + + This oversight resulted in pg_dump unexpectedly + acquiring RowExclusiveLock locks on tables mentioned as + the targets of INSERT/UPDATE/DELETE + commands in rules. While usually harmless, that could interfere with + concurrent transactions that tried to acquire, for example, + ShareLock on those tables. + + + + + + Improve performance of index endpoint probes during planning (Tom Lane) + + + + This change fixes a significant performance problem that occurred + when there were many not-yet-committed rows at the end of the index, + which is a common situation for indexes on sequentially-assigned + values such as timestamps or sequence-generated identifiers. + + + + + + Fix test to see if hot standby connections can be allowed immediately + after a crash (Heikki Linnakangas) + + + + + + Prevent interrupts while reporting non-ERROR messages + (Tom Lane) + + + + This guards against rare server-process freezeups due to recursive + entry to syslog(), and perhaps other related problems. + + + + + + Prevent intermittent could not reserve shared memory region + failures on recent Windows versions (MauMau) + + + + + + Update time zone data files to tzdata release 2014a + for DST law changes in Fiji and Turkey, plus historical changes in + Israel and Ukraine. + + + + + + + + + + + + + Release 9.0.16 + + + Release Date + 2014-02-20 + + + + This release contains a variety of fixes from 9.0.15. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.16 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.15, + see . + + + + + + Changes + + + + + + Shore up GRANT ... WITH ADMIN OPTION restrictions + (Noah Misch) + + + + Granting a role without ADMIN OPTION is supposed to + prevent the grantee from adding or removing members from the granted + role, but this restriction was easily bypassed by doing SET + ROLE first. The security impact is mostly that a role member can + revoke the access of others, contrary to the wishes of his grantor. + Unapproved role member additions are a lesser concern, since an + uncooperative role member could provide most of his rights to others + anyway by creating views or SECURITY DEFINER functions. + (CVE-2014-0060) + + + + + + Prevent privilege escalation via manual calls to PL validator + functions (Andres Freund) + + + + The primary role of PL validator functions is to be called implicitly + during CREATE FUNCTION, but they are also normal SQL + functions that a user can call explicitly. Calling a validator on + a function actually written in some other language was not checked + for and could be exploited for privilege-escalation purposes. + The fix involves adding a call to a privilege-checking function in + each validator function. Non-core procedural languages will also + need to make this change to their own validator functions, if any. + (CVE-2014-0061) + + + + + + Avoid multiple name lookups during table and index DDL + (Robert Haas, Andres Freund) + + + + If the name lookups come to different conclusions due to concurrent + activity, we might perform some parts of the DDL on a different table + than other parts. At least in the case of CREATE INDEX, + this can be used to cause the permissions checks to be performed + against a different table than the index creation, allowing for a + privilege escalation attack. + (CVE-2014-0062) + + + + + + Prevent buffer overrun with long datetime strings (Noah Misch) + + + + The MAXDATELEN constant was too small for the longest + possible value of type interval, allowing a buffer overrun + in interval_out(). Although the datetime input + functions were more careful about avoiding buffer overrun, the limit + was short enough to cause them to reject some valid inputs, such as + input containing a very long timezone name. The ecpg + library contained these vulnerabilities along with some of its own. + (CVE-2014-0063) + + + + + + Prevent buffer overrun due to integer overflow in size calculations + (Noah Misch, Heikki Linnakangas) + + + + Several functions, mostly type input functions, calculated an + allocation size without checking for overflow. If overflow did + occur, a too-small buffer would be allocated and then written past. + (CVE-2014-0064) + + + + + + Prevent overruns of fixed-size buffers + (Peter Eisentraut, Jozef Mlich) + + + + Use strlcpy() and related functions to provide a clear + guarantee that fixed-size buffers are not overrun. Unlike the + preceding items, it is unclear whether these cases really represent + live issues, since in most cases there appear to be previous + constraints on the size of the input string. Nonetheless it seems + prudent to silence all Coverity warnings of this type. + (CVE-2014-0065) + + + + + + Avoid crashing if crypt() returns NULL (Honza Horak, + Bruce Momjian) + + + + There are relatively few scenarios in which crypt() + could return NULL, but contrib/chkpass would crash + if it did. One practical case in which this could be an issue is + if libc is configured to refuse to execute unapproved + hashing algorithms (e.g., FIPS mode). + (CVE-2014-0066) + + + + + + Document risks of make check in the regression testing + instructions (Noah Misch, Tom Lane) + + + + Since the temporary server started by make check + uses trust authentication, another user on the same machine + could connect to it as database superuser, and then potentially + exploit the privileges of the operating-system user who started the + tests. A future release will probably incorporate changes in the + testing procedure to prevent this risk, but some public discussion is + needed first. So for the moment, just warn people against using + make check when there are untrusted users on the + same machine. + (CVE-2014-0067) + + + + + + Fix possible mis-replay of WAL records when some segments of a + relation aren't full size (Greg Stark, Tom Lane) + + + + The WAL update could be applied to the wrong page, potentially many + pages past where it should have been. Aside from corrupting data, + this error has been observed to result in significant bloat + of standby servers compared to their masters, due to updates being + applied far beyond where the end-of-file should have been. This + failure mode does not appear to be a significant risk during crash + recovery, only when initially synchronizing a standby created from a + base backup taken from a quickly-changing master. + + + + + + Fix bug in determining when recovery has reached consistency + (Tomonari Katsumata, Heikki Linnakangas) + + + + In some cases WAL replay would mistakenly conclude that the database + was already consistent at the start of replay, thus possibly allowing + hot-standby queries before the database was really consistent. Other + symptoms such as PANIC: WAL contains references to invalid + pages were also possible. + + + + + + Fix improper locking of btree index pages while replaying + a VACUUM operation in hot-standby mode (Andres Freund, + Heikki Linnakangas, Tom Lane) + + + + This error could result in PANIC: WAL contains references to + invalid pages failures. + + + + + + Ensure that insertions into non-leaf GIN index pages write a full-page + WAL record when appropriate (Heikki Linnakangas) + + + + The previous coding risked index corruption in the event of a + partial-page write during a system crash. + + + + + + Fix race conditions during server process exit (Robert Haas) + + + + Ensure that signal handlers don't attempt to use the + process's MyProc pointer after it's no longer valid. + + + + + + Fix unsafe references to errno within error reporting + logic (Christian Kruse) + + + + This would typically lead to odd behaviors such as missing or + inappropriate HINT fields. + + + + + + Fix possible crashes from using ereport() too early + during server startup (Tom Lane) + + + + The principal case we've seen in the field is a crash if the server + is started in a directory it doesn't have permission to read. + + + + + + Clear retry flags properly in OpenSSL socket write + function (Alexander Kukushkin) + + + + This omission could result in a server lockup after unexpected loss + of an SSL-encrypted connection. + + + + + + Fix length checking for Unicode identifiers (U&"..." + syntax) containing escapes (Tom Lane) + + + + A spurious truncation warning would be printed for such identifiers + if the escaped form of the identifier was too long, but the + identifier actually didn't need truncation after de-escaping. + + + + + + Allow keywords that are type names to be used in lists of roles + (Stephen Frost) + + + + A previous patch allowed such keywords to be used without quoting + in places such as role identifiers; but it missed cases where a + list of role identifiers was permitted, such as DROP ROLE. + + + + + + Fix possible crash due to invalid plan for nested sub-selects, such + as WHERE (... x IN (SELECT ...) ...) IN (SELECT ...) + (Tom Lane) + + + + + + Ensure that ANALYZE creates statistics for a table column + even when all the values in it are too wide (Tom Lane) + + + + ANALYZE intentionally omits very wide values from its + histogram and most-common-values calculations, but it neglected to do + something sane in the case that all the sampled entries are too wide. + + + + + + In ALTER TABLE ... SET TABLESPACE, allow the database's + default tablespace to be used without a permissions check + (Stephen Frost) + + + + CREATE TABLE has always allowed such usage, + but ALTER TABLE didn't get the memo. + + + + + + Fix cannot accept a set error when some arms of + a CASE return a set and others don't (Tom Lane) + + + + + + Fix checks for all-zero client addresses in pgstat functions (Kevin + Grittner) + + + + + + Fix possible misclassification of multibyte characters by the text + search parser (Tom Lane) + + + + Non-ASCII characters could be misclassified when using C locale with + a multibyte encoding. On Cygwin, non-C locales could fail as well. + + + + + + Fix possible misbehavior in plainto_tsquery() + (Heikki Linnakangas) + + + + Use memmove() not memcpy() for copying + overlapping memory regions. There have been no field reports of + this actually causing trouble, but it's certainly risky. + + + + + + Accept SHIFT_JIS as an encoding name for locale checking + purposes (Tatsuo Ishii) + + + + + + Fix misbehavior of PQhost() on Windows (Fujii Masao) + + + + It should return localhost if no host has been specified. + + + + + + Improve error handling in libpq and psql + for failures during COPY TO STDOUT/FROM STDIN (Tom Lane) + + + + In particular this fixes an infinite loop that could occur in 9.2 and + up if the server connection was lost during COPY FROM + STDIN. Variants of that scenario might be possible in older + versions, or with other client applications. + + + + + + Fix misaligned descriptors in ecpg (MauMau) + + + + + + In ecpg, handle lack of a hostname in the connection + parameters properly (Michael Meskes) + + + + + + Fix performance regression in contrib/dblink connection + startup (Joe Conway) + + + + Avoid an unnecessary round trip when client and server encodings match. + + + + + + In contrib/isn, fix incorrect calculation of the check + digit for ISMN values (Fabien Coelho) + + + + + + Ensure client-code-only installation procedure works as documented + (Peter Eisentraut) + + + + + + In Mingw and Cygwin builds, install the libpq DLL + in the bin directory (Andrew Dunstan) + + + + This duplicates what the MSVC build has long done. It should fix + problems with programs like psql failing to start + because they can't find the DLL. + + + + + + Avoid using the deprecated dllwrap tool in Cygwin builds + (Marco Atzeri) + + + + + + Don't generate plain-text HISTORY + and src/test/regress/README files anymore (Tom Lane) + + + + These text files duplicated the main HTML and PDF documentation + formats. The trouble involved in maintaining them greatly outweighs + the likely audience for plain-text format. Distribution tarballs + will still contain files by these names, but they'll just be stubs + directing the reader to consult the main documentation. + The plain-text INSTALL file will still be maintained, as + there is arguably a use-case for that. + + + + + + Update time zone data files to tzdata release 2013i + for DST law changes in Jordan and historical changes in Cuba. + + + + In addition, the zones Asia/Riyadh87, + Asia/Riyadh88, and Asia/Riyadh89 have been + removed, as they are no longer maintained by IANA, and never + represented actual civil timekeeping practice. + + + + + + + + + + Release 9.0.15 + + + Release Date + 2013-12-05 + + + + This release contains a variety of fixes from 9.0.14. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.15 + + + A dump/restore is not required for those running 9.0.X. + + + + However, this release corrects a number of potential data corruption + issues. See the first two changelog entries below to find out whether + your installation has been affected and what steps you can take if so. + + + + Also, if you are upgrading from a version earlier than 9.0.13, + see . + + + + + + Changes + + + + + + Fix VACUUM's tests to see whether it can + update relfrozenxid (Andres Freund) + + + + In some cases VACUUM (either manual or autovacuum) could + incorrectly advance a table's relfrozenxid value, + allowing tuples to escape freezing, causing those rows to become + invisible once 2^31 transactions have elapsed. The probability of + data loss is fairly low since multiple incorrect advancements would + need to happen before actual loss occurs, but it's not zero. Users + upgrading from releases 9.0.4 or 8.4.8 or earlier are not affected, but + all later versions contain the bug. + + + + The issue can be ameliorated by, after upgrading, vacuuming all tables + in all databases while having vacuum_freeze_table_age + set to zero. This will fix any latent corruption but will not be able + to fix all pre-existing data errors. However, an installation can be + presumed safe after performing this vacuuming if it has executed fewer + than 2^31 update transactions in its lifetime (check this with + SELECT txid_current() < 2^31). + + + + + + Fix initialization of pg_clog and pg_subtrans + during hot standby startup (Andres Freund, Heikki Linnakangas) + + + + This bug can cause data loss on standby servers at the moment they + start to accept hot-standby queries, by marking committed transactions + as uncommitted. The likelihood of such corruption is small unless, at + the time of standby startup, the primary server has executed many + updating transactions since its last checkpoint. Symptoms include + missing rows, rows that should have been deleted being still visible, + and obsolete versions of updated rows being still visible alongside + their newer versions. + + + + This bug was introduced in versions 9.3.0, 9.2.5, 9.1.10, and 9.0.14. + Standby servers that have only been running earlier releases are not + at risk. It's recommended that standby servers that have ever run any + of the buggy releases be re-cloned from the primary (e.g., with a new + base backup) after upgrading. + + + + + + Truncate pg_multixact contents during WAL replay + (Andres Freund) + + + + This avoids ever-increasing disk space consumption in standby servers. + + + + + + Fix race condition in GIN index posting tree page deletion (Heikki + Linnakangas) + + + + This could lead to transient wrong answers or query failures. + + + + + + Avoid flattening a subquery whose SELECT list contains a + volatile function wrapped inside a sub-SELECT (Tom Lane) + + + + This avoids unexpected results due to extra evaluations of the + volatile function. + + + + + + Fix planner's processing of non-simple-variable subquery outputs + nested within outer joins (Tom Lane) + + + + This error could lead to incorrect plans for queries involving + multiple levels of subqueries within JOIN syntax. + + + + + + Fix premature deletion of temporary files (Andres Freund) + + + + + + Fix possible read past end of memory in rule printing (Peter Eisentraut) + + + + + + Fix array slicing of int2vector and oidvector values + (Tom Lane) + + + + Expressions of this kind are now implicitly promoted to + regular int2 or oid arrays. + + + + + + Fix incorrect behaviors when using a SQL-standard, simple GMT offset + timezone (Tom Lane) + + + + In some cases, the system would use the simple GMT offset value when + it should have used the regular timezone setting that had prevailed + before the simple offset was selected. This change also causes + the timeofday function to honor the simple GMT offset + zone. + + + + + + Prevent possible misbehavior when logging translations of Windows + error codes (Tom Lane) + + + + + + Properly quote generated command lines in pg_ctl + (Naoya Anzai and Tom Lane) + + + + This fix applies only to Windows. + + + + + + Fix pg_dumpall to work when a source database + sets default_transaction_read_only + via ALTER DATABASE SET (Kevin Grittner) + + + + Previously, the generated script would fail during restore. + + + + + + Fix ecpg's processing of lists of variables + declared varchar (Zoltán Böszörményi) + + + + + + Make contrib/lo defend against incorrect trigger definitions + (Marc Cousin) + + + + + + Update time zone data files to tzdata release 2013h + for DST law changes in Argentina, Brazil, Jordan, Libya, + Liechtenstein, Morocco, and Palestine. Also, new timezone + abbreviations WIB, WIT, WITA for Indonesia. + + + + + + + + + + Release 9.0.14 + + + Release Date + 2013-10-10 + + + + This release contains a variety of fixes from 9.0.13. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.14 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.13, + see . + + + + + + Changes + + + + + + Prevent corruption of multi-byte characters when attempting to + case-fold identifiers (Andrew Dunstan) + + + + PostgreSQL case-folds non-ASCII characters only + when using a single-byte server encoding. + + + + + + Fix checkpoint memory leak in background writer when wal_level = + hot_standby (Naoya Anzai) + + + + + + Fix memory leak caused by lo_open() failure + (Heikki Linnakangas) + + + + + + Fix memory overcommit bug when work_mem is using more + than 24GB of memory (Stephen Frost) + + + + + + Fix deadlock bug in libpq when using SSL (Stephen Frost) + + + + + + Fix possible SSL state corruption in threaded libpq applications + (Nick Phillips, Stephen Frost) + + + + + + Properly compute row estimates for boolean columns containing many NULL + values (Andrew Gierth) + + + + Previously tests like col IS NOT TRUE and col IS + NOT FALSE did not properly factor in NULL values when estimating + plan costs. + + + + + + Prevent pushing down WHERE clauses into unsafe + UNION/INTERSECT subqueries (Tom Lane) + + + + Subqueries of a UNION or INTERSECT that + contain set-returning functions or volatile functions in their + SELECT lists could be improperly optimized, leading to + run-time errors or incorrect query results. + + + + + + Fix rare case of failed to locate grouping columns + planner failure (Tom Lane) + + + + + + Improve view dumping code's handling of dropped columns in referenced + tables (Tom Lane) + + + + + + Properly record index comments created using UNIQUE + and PRIMARY KEY syntax (Andres Freund) + + + + This fixes a parallel pg_restore failure. + + + + + + Fix REINDEX TABLE and REINDEX DATABASE + to properly revalidate constraints and mark invalidated indexes as + valid (Noah Misch) + + + + REINDEX INDEX has always worked properly. + + + + + + Fix possible deadlock during concurrent CREATE INDEX + CONCURRENTLY operations (Tom Lane) + + + + + + Fix regexp_matches() handling of zero-length matches + (Jeevan Chalke) + + + + Previously, zero-length matches like '^' could return too many matches. + + + + + + Fix crash for overly-complex regular expressions (Heikki Linnakangas) + + + + + + Fix regular expression match failures for back references combined with + non-greedy quantifiers (Jeevan Chalke) + + + + + + Prevent CREATE FUNCTION from checking SET + variables unless function body checking is enabled (Tom Lane) + + + + + + Allow ALTER DEFAULT PRIVILEGES to operate on schemas + without requiring CREATE permission (Tom Lane) + + + + + + Loosen restriction on keywords used in queries (Tom Lane) + + + + Specifically, lessen keyword restrictions for role names, language + names, EXPLAIN and COPY options, and + SET values. This allows COPY ... (FORMAT + BINARY) to work as expected; previously BINARY needed + to be quoted. + + + + + + Fix pgp_pub_decrypt() so it works for secret keys with + passwords (Marko Kreen) + + + + + + Remove rare inaccurate warning during vacuum of index-less tables + (Heikki Linnakangas) + + + + + + Ensure that VACUUM ANALYZE still runs the ANALYZE phase + if its attempt to truncate the file is cancelled due to lock conflicts + (Kevin Grittner) + + + + + + Avoid possible failure when performing transaction control commands (e.g + ROLLBACK) in prepared queries (Tom Lane) + + + + + + Ensure that floating-point data input accepts standard spellings + of infinity on all platforms (Tom Lane) + + + + The C99 standard says that allowable spellings are inf, + +inf, -inf, infinity, + +infinity, and -infinity. Make sure we + recognize these even if the platform's strtod function + doesn't. + + + + + + Expand ability to compare rows to records and arrays (Rafal Rzepecki, + Tom Lane) + + + + + + Update time zone data files to tzdata release 2013d + for DST law changes in Israel, Morocco, Palestine, and Paraguay. + Also, historical zone data corrections for Macquarie Island. + + + + + + + + + + Release 9.0.13 + + + Release Date + 2013-04-04 + + + + This release contains a variety of fixes from 9.0.12. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.13 + + + A dump/restore is not required for those running 9.0.X. + + + + However, this release corrects several errors in management of GiST + indexes. After installing this update, it is advisable to + REINDEX any GiST indexes that meet one or more of the + conditions described below. + + + + Also, if you are upgrading from a version earlier than 9.0.6, + see . + + + + + + Changes + + + + + + Fix insecure parsing of server command-line switches (Mitsumasa + Kondo, Kyotaro Horiguchi) + + + + A connection request containing a database name that begins with + - could be crafted to damage or destroy + files within the server's data directory, even if the request is + eventually rejected. (CVE-2013-1899) + + + + + + Reset OpenSSL randomness state in each postmaster child process + (Marko Kreen) + + + + This avoids a scenario wherein random numbers generated by + contrib/pgcrypto functions might be relatively easy for + another database user to guess. The risk is only significant when + the postmaster is configured with ssl = on + but most connections don't use SSL encryption. (CVE-2013-1900) + + + + + + Fix GiST indexes to not use fuzzy geometric comparisons when + it's not appropriate to do so (Alexander Korotkov) + + + + The core geometric types perform comparisons using fuzzy + equality, but gist_box_same must do exact comparisons, + else GiST indexes using it might become inconsistent. After installing + this update, users should REINDEX any GiST indexes on + box, polygon, circle, or point + columns, since all of these use gist_box_same. + + + + + + Fix erroneous range-union and penalty logic in GiST indexes that use + contrib/btree_gist for variable-width data types, that is + text, bytea, bit, and numeric + columns (Tom Lane) + + + + These errors could result in inconsistent indexes in which some keys + that are present would not be found by searches, and also in useless + index bloat. Users are advised to REINDEX such indexes + after installing this update. + + + + + + Fix bugs in GiST page splitting code for multi-column indexes + (Tom Lane) + + + + These errors could result in inconsistent indexes in which some keys + that are present would not be found by searches, and also in indexes + that are unnecessarily inefficient to search. Users are advised to + REINDEX multi-column GiST indexes after installing this + update. + + + + + + Fix gist_point_consistent + to handle fuzziness consistently (Alexander Korotkov) + + + + Index scans on GiST indexes on point columns would sometimes + yield results different from a sequential scan, because + gist_point_consistent disagreed with the underlying + operator code about whether to do comparisons exactly or fuzzily. + + + + + + Fix buffer leak in WAL replay (Heikki Linnakangas) + + + + This bug could result in incorrect local pin count errors + during replay, making recovery impossible. + + + + + + Fix race condition in DELETE RETURNING (Tom Lane) + + + + Under the right circumstances, DELETE RETURNING could + attempt to fetch data from a shared buffer that the current process + no longer has any pin on. If some other process changed the buffer + meanwhile, this would lead to garbage RETURNING output, or + even a crash. + + + + + + Fix infinite-loop risk in regular expression compilation (Tom Lane, + Don Porter) + + + + + + Fix potential null-pointer dereference in regular expression compilation + (Tom Lane) + + + + + + Fix to_char() to use ASCII-only case-folding rules where + appropriate (Tom Lane) + + + + This fixes misbehavior of some template patterns that should be + locale-independent, but mishandled I and + i in Turkish locales. + + + + + + Fix unwanted rejection of timestamp 1999-12-31 24:00:00 + (Tom Lane) + + + + + + Fix logic error when a single transaction does UNLISTEN + then LISTEN (Tom Lane) + + + + The session wound up not listening for notify events at all, though it + surely should listen in this case. + + + + + + Remove useless picksplit doesn't support secondary split log + messages (Josh Hansen, Tom Lane) + + + + This message seems to have been added in expectation of code that was + never written, and probably never will be, since GiST's default + handling of secondary splits is actually pretty good. So stop nagging + end users about it. + + + + + + Fix possible failure to send a session's last few transaction + commit/abort counts to the statistics collector (Tom Lane) + + + + + + Eliminate memory leaks in PL/Perl's spi_prepare() function + (Alex Hunsaker, Tom Lane) + + + + + + Fix pg_dumpall to handle database names containing + = correctly (Heikki Linnakangas) + + + + + + Avoid crash in pg_dump when an incorrect connection + string is given (Heikki Linnakangas) + + + + + + Ignore invalid indexes in pg_dump and + pg_upgrade (Michael Paquier, Bruce Momjian) + + + + Dumping invalid indexes can cause problems at restore time, for example + if the reason the index creation failed was because it tried to enforce + a uniqueness condition not satisfied by the table's data. Also, if the + index creation is in fact still in progress, it seems reasonable to + consider it to be an uncommitted DDL change, which + pg_dump wouldn't be expected to dump anyway. + pg_upgrade now also skips invalid indexes rather than + failing. + + + + + + Fix contrib/pg_trgm's similarity() function + to return zero for trigram-less strings (Tom Lane) + + + + Previously it returned NaN due to internal division by zero. + + + + + + Update time zone data files to tzdata release 2013b + for DST law changes in Chile, Haiti, Morocco, Paraguay, and some + Russian areas. Also, historical zone data corrections for numerous + places. + + + + Also, update the time zone abbreviation files for recent changes in + Russia and elsewhere: CHOT, GET, + IRKT, KGT, KRAT, MAGT, + MAWT, MSK, NOVT, OMST, + TKT, VLAT, WST, YAKT, + YEKT now follow their current meanings, and + VOLT (Europe/Volgograd) and MIST + (Antarctica/Macquarie) are added to the default abbreviations list. + + + + + + + + + + Release 9.0.12 + + + Release Date + 2013-02-07 + + + + This release contains a variety of fixes from 9.0.11. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.12 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.6, + see . + + + + + + Changes + + + + + + Prevent execution of enum_recv from SQL (Tom Lane) + + + + The function was misdeclared, allowing a simple SQL command to crash the + server. In principle an attacker might be able to use it to examine the + contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP) + for reporting this issue. (CVE-2013-0255) + + + + + + Fix multiple problems in detection of when a consistent database + state has been reached during WAL replay (Fujii Masao, Heikki + Linnakangas, Simon Riggs, Andres Freund) + + + + + + Update minimum recovery point when truncating a relation file (Heikki + Linnakangas) + + + + Once data has been discarded, it's no longer safe to stop recovery at + an earlier point in the timeline. + + + + + + Fix missing cancellations in hot standby mode (Noah Misch, Simon Riggs) + + + + The need to cancel conflicting hot-standby queries would sometimes be + missed, allowing those queries to see inconsistent data. + + + + + + Fix SQL grammar to allow subscripting or field selection from a + sub-SELECT result (Tom Lane) + + + + + + Fix performance problems with autovacuum truncation in busy workloads + (Jan Wieck) + + + + Truncation of empty pages at the end of a table requires exclusive + lock, but autovacuum was coded to fail (and release the table lock) + when there are conflicting lock requests. Under load, it is easily + possible that truncation would never occur, resulting in table bloat. + Fix by performing a partial truncation, releasing the lock, then + attempting to re-acquire the lock and continue. This fix also greatly + reduces the average time before autovacuum releases the lock after a + conflicting request arrives. + + + + + + Protect against race conditions when scanning + pg_tablespace (Stephen Frost, Tom Lane) + + + + CREATE DATABASE and DROP DATABASE could + misbehave if there were concurrent updates of + pg_tablespace entries. + + + + + + Prevent DROP OWNED from trying to drop whole databases or + tablespaces (Álvaro Herrera) + + + + For safety, ownership of these objects must be reassigned, not dropped. + + + + + + Fix error in vacuum_freeze_table_age + implementation (Andres Freund) + + + + In installations that have existed for more than vacuum_freeze_min_age + transactions, this mistake prevented autovacuum from using partial-table + scans, so that a full-table scan would always happen instead. + + + + + + Prevent misbehavior when a RowExpr or XmlExpr + is parse-analyzed twice (Andres Freund, Tom Lane) + + + + This mistake could be user-visible in contexts such as + CREATE TABLE LIKE INCLUDING INDEXES. + + + + + + Improve defenses against integer overflow in hashtable sizing + calculations (Jeff Davis) + + + + + + Reject out-of-range dates in to_date() (Hitoshi Harada) + + + + + + Ensure that non-ASCII prompt strings are translated to the correct + code page on Windows (Alexander Law, Noah Misch) + + + + This bug affected psql and some other client programs. + + + + + + Fix possible crash in psql's \? command + when not connected to a database (Meng Qingzhong) + + + + + + Fix pg_upgrade to deal with invalid indexes safely + (Bruce Momjian) + + + + + + Fix one-byte buffer overrun in libpq's + PQprintTuples (Xi Wang) + + + + This ancient function is not used anywhere by + PostgreSQL itself, but it might still be used by some + client code. + + + + + + Make ecpglib use translated messages properly + (Chen Huajun) + + + + + + Properly install ecpg_compat and + pgtypes libraries on MSVC (Jiang Guiqing) + + + + + + Include our version of isinf() in + libecpg if it's not provided by the system + (Jiang Guiqing) + + + + + + Rearrange configure's tests for supplied functions so it is not + fooled by bogus exports from libedit/libreadline (Christoph Berg) + + + + + + Ensure Windows build number increases over time (Magnus Hagander) + + + + + + Make pgxs build executables with the right + .exe suffix when cross-compiling for Windows + (Zoltan Boszormenyi) + + + + + + Add new timezone abbreviation FET (Tom Lane) + + + + This is now used in some eastern-European time zones. + + + + + + + + + + Release 9.0.11 + + + Release Date + 2012-12-06 + + + + This release contains a variety of fixes from 9.0.10. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.11 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.6, + see . + + + + + + Changes + + + + + + Fix multiple bugs associated with CREATE INDEX + CONCURRENTLY (Andres Freund, Tom Lane) + + + + Fix CREATE INDEX CONCURRENTLY to use + in-place updates when changing the state of an index's + pg_index row. This prevents race conditions that could + cause concurrent sessions to miss updating the target index, thus + resulting in corrupt concurrently-created indexes. + + + + Also, fix various other operations to ensure that they ignore + invalid indexes resulting from a failed CREATE INDEX + CONCURRENTLY command. The most important of these is + VACUUM, because an auto-vacuum could easily be launched + on the table before corrective action can be taken to fix or remove + the invalid index. + + + + + + Fix buffer locking during WAL replay (Tom Lane) + + + + The WAL replay code was insufficiently careful about locking buffers + when replaying WAL records that affect more than one page. This could + result in hot standby queries transiently seeing inconsistent states, + resulting in wrong answers or unexpected failures. + + + + + + Fix an error in WAL generation logic for GIN indexes (Tom Lane) + + + + This could result in index corruption, if a torn-page failure occurred. + + + + + + Properly remove startup process's virtual XID lock when promoting a + hot standby server to normal running (Simon Riggs) + + + + This oversight could prevent subsequent execution of certain + operations such as CREATE INDEX CONCURRENTLY. + + + + + + Avoid bogus out-of-sequence timeline ID errors in standby + mode (Heikki Linnakangas) + + + + + + Prevent the postmaster from launching new child processes after it's + received a shutdown signal (Tom Lane) + + + + This mistake could result in shutdown taking longer than it should, or + even never completing at all without additional user action. + + + + + + Avoid corruption of internal hash tables when out of memory + (Hitoshi Harada) + + + + + + Fix planning of non-strict equivalence clauses above outer joins + (Tom Lane) + + + + The planner could derive incorrect constraints from a clause equating + a non-strict construct to something else, for example + WHERE COALESCE(foo, 0) = 0 + when foo is coming from the nullable side of an outer join. + + + + + + Improve planner's ability to prove exclusion constraints from + equivalence classes (Tom Lane) + + + + + + Fix partial-row matching in hashed subplans to handle cross-type cases + correctly (Tom Lane) + + + + This affects multicolumn NOT IN subplans, such as + WHERE (a, b) NOT IN (SELECT x, y FROM ...) + when for instance b and y are int4 + and int8 respectively. This mistake led to wrong answers + or crashes depending on the specific datatypes involved. + + + + + + Acquire buffer lock when re-fetching the old tuple for an + AFTER ROW UPDATE/DELETE trigger (Andres Freund) + + + + In very unusual circumstances, this oversight could result in passing + incorrect data to the precheck logic for a foreign-key enforcement + trigger. That could result in a crash, or in an incorrect decision + about whether to fire the trigger. + + + + + + Fix ALTER COLUMN TYPE to handle inherited check + constraints properly (Pavan Deolasee) + + + + This worked correctly in pre-8.4 releases, and now works correctly + in 8.4 and later. + + + + + + Fix REASSIGN OWNED to handle grants on tablespaces + (Álvaro Herrera) + + + + + + Ignore incorrect pg_attribute entries for system + columns for views (Tom Lane) + + + + Views do not have any system columns. However, we forgot to + remove such entries when converting a table to a view. That's fixed + properly for 9.3 and later, but in previous branches we need to defend + against existing mis-converted views. + + + + + + Fix rule printing to dump INSERT INTO table + DEFAULT VALUES correctly (Tom Lane) + + + + + + Guard against stack overflow when there are too many + UNION/INTERSECT/EXCEPT clauses + in a query (Tom Lane) + + + + + + Prevent platform-dependent failures when dividing the minimum possible + integer value by -1 (Xi Wang, Tom Lane) + + + + + + Fix possible access past end of string in date parsing + (Hitoshi Harada) + + + + + + Fix failure to advance XID epoch if XID wraparound happens during a + checkpoint and wal_level is hot_standby + (Tom Lane, Andres Freund) + + + + While this mistake had no particular impact on + PostgreSQL itself, it was bad for + applications that rely on txid_current() and related + functions: the TXID value would appear to go backwards. + + + + + + Produce an understandable error message if the length of the path name + for a Unix-domain socket exceeds the platform-specific limit + (Tom Lane, Andrew Dunstan) + + + + Formerly, this would result in something quite unhelpful, such as + Non-recoverable failure in name resolution. + + + + + + Fix memory leaks when sending composite column values to the client + (Tom Lane) + + + + + + Make pg_ctl more robust about reading the + postmaster.pid file (Heikki Linnakangas) + + + + Fix race conditions and possible file descriptor leakage. + + + + + + Fix possible crash in psql if incorrectly-encoded data + is presented and the client_encoding setting is a + client-only encoding, such as SJIS (Jiang Guiqing) + + + + + + Fix bugs in the restore.sql script emitted by + pg_dump in tar output format (Tom Lane) + + + + The script would fail outright on tables whose names include + upper-case characters. Also, make the script capable of restoring + data in + + + + + Fix pg_restore to accept POSIX-conformant + tar files (Brian Weaver, Tom Lane) + + + + The original coding of pg_dump's tar + output mode produced files that are not fully conformant with the + POSIX standard. This has been corrected for version 9.3. This + patch updates previous branches so that they will accept both the + incorrect and the corrected formats, in hopes of avoiding + compatibility problems when 9.3 comes out. + + + + + + Fix pg_resetxlog to locate postmaster.pid + correctly when given a relative path to the data directory (Tom Lane) + + + + This mistake could lead to pg_resetxlog not noticing + that there is an active postmaster using the data directory. + + + + + + Fix libpq's lo_import() and + lo_export() functions to report file I/O errors properly + (Tom Lane) + + + + + + Fix ecpg's processing of nested structure pointer + variables (Muhammad Usama) + + + + + + Fix ecpg's ecpg_get_data function to + handle arrays properly (Michael Meskes) + + + + + + Make contrib/pageinspect's btree page inspection + functions take buffer locks while examining pages (Tom Lane) + + + + + + Fix pgxs support for building loadable modules on AIX + (Tom Lane) + + + + Building modules outside the original source tree didn't work on AIX. + + + + + + Update time zone data files to tzdata release 2012j + for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western + Samoa, and portions of Brazil. + + + + + + + + + + Release 9.0.10 + + + Release Date + 2012-09-24 + + + + This release contains a variety of fixes from 9.0.9. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.10 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.6, + see . + + + + + + Changes + + + + + + Fix planner's assignment of executor parameters, and fix executor's + rescan logic for CTE plan nodes (Tom Lane) + + + + These errors could result in wrong answers from queries that scan the + same WITH subquery multiple times. + + + + + + Improve page-splitting decisions in GiST indexes (Alexander Korotkov, + Robert Haas, Tom Lane) + + + + Multi-column GiST indexes might suffer unexpected bloat due to this + error. + + + + + + Fix cascading privilege revoke to stop if privileges are still held + (Tom Lane) + + + + If we revoke a grant option from some role X, but + X still holds that option via a grant from someone + else, we should not recursively revoke the corresponding privilege + from role(s) Y that X had granted it + to. + + + + + + Improve error messages for Hot Standby misconfiguration errors + (Gurjeet Singh) + + + + + + Fix handling of SIGFPE when PL/Perl is in use (Andres Freund) + + + + Perl resets the process's SIGFPE handler to + SIG_IGN, which could result in crashes later on. Restore + the normal Postgres signal handler after initializing PL/Perl. + + + + + + Prevent PL/Perl from crashing if a recursive PL/Perl function is + redefined while being executed (Tom Lane) + + + + + + Work around possible misoptimization in PL/Perl (Tom Lane) + + + + Some Linux distributions contain an incorrect version of + pthread.h that results in incorrect compiled code in + PL/Perl, leading to crashes if a PL/Perl function calls another one + that throws an error. + + + + + + Fix pg_upgrade's handling of line endings on Windows + (Andrew Dunstan) + + + + Previously, pg_upgrade might add or remove carriage + returns in places such as function bodies. + + + + + + On Windows, make pg_upgrade use backslash path + separators in the scripts it emits (Andrew Dunstan) + + + + + + Update time zone data files to tzdata release 2012f + for DST law changes in Fiji + + + + + + + + + + Release 9.0.9 + + + Release Date + 2012-08-17 + + + + This release contains a variety of fixes from 9.0.8. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.9 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.6, + see . + + + + + + Changes + + + + + + Prevent access to external files/URLs via XML entity references + (Noah Misch, Tom Lane) + + + + xml_parse() would attempt to fetch external files or + URLs as needed to resolve DTD and entity references in an XML value, + thus allowing unprivileged database users to attempt to fetch data + with the privileges of the database server. While the external data + wouldn't get returned directly to the user, portions of it could be + exposed in error messages if the data didn't parse as valid XML; and + in any case the mere ability to check existence of a file might be + useful to an attacker. (CVE-2012-3489) + + + + + + Prevent access to external files/URLs via contrib/xml2's + xslt_process() (Peter Eisentraut) + + + + libxslt offers the ability to read and write both + files and URLs through stylesheet commands, thus allowing + unprivileged database users to both read and write data with the + privileges of the database server. Disable that through proper use + of libxslt's security options. (CVE-2012-3488) + + + + Also, remove xslt_process()'s ability to fetch documents + and stylesheets from external files/URLs. While this was a + documented feature, it was long regarded as a bad idea. + The fix for CVE-2012-3489 broke that capability, and rather than + expend effort on trying to fix it, we're just going to summarily + remove it. + + + + + + Prevent too-early recycling of btree index pages (Noah Misch) + + + + When we allowed read-only transactions to skip assigning XIDs, we + introduced the possibility that a deleted btree page could be + recycled while a read-only transaction was still in flight to it. + This would result in incorrect index search results. The probability + of such an error occurring in the field seems very low because of the + timing requirements, but nonetheless it should be fixed. + + + + + + Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane) + + + + If ALTER SEQUENCE was executed on a freshly created or + reset sequence, and then precisely one nextval() call + was made on it, and then the server crashed, WAL replay would restore + the sequence to a state in which it appeared that no + nextval() had been done, thus allowing the first + sequence value to be returned again by the next + nextval() call. In particular this could manifest for + serial columns, since creation of a serial column's sequence + includes an ALTER SEQUENCE OWNED BY step. + + + + + + Fix txid_current() to report the correct epoch when not + in hot standby (Heikki Linnakangas) + + + + This fixes a regression introduced in the previous minor release. + + + + + + Fix bug in startup of Hot Standby when a master transaction has many + subtransactions (Andres Freund) + + + + This mistake led to failures reported as out-of-order XID + insertion in KnownAssignedXids. + + + + + + Ensure the backup_label file is fsync'd after + pg_start_backup() (Dave Kerr) + + + + + + Fix timeout handling in walsender processes (Tom Lane) + + + + WAL sender background processes neglected to establish a + SIGALRM handler, meaning they would wait forever in + some corner cases where a timeout ought to happen. + + + + + + Back-patch 9.1 improvement to compress the fsync request queue + (Robert Haas) + + + + This improves performance during checkpoints. The 9.1 change + has now seen enough field testing to seem safe to back-patch. + + + + + + Fix LISTEN/NOTIFY to cope better with I/O + problems, such as out of disk space (Tom Lane) + + + + After a write failure, all subsequent attempts to send more + NOTIFY messages would fail with messages like + Could not read from file "pg_notify/nnnn" at + offset nnnnn: Success. + + + + + + Only allow autovacuum to be auto-canceled by a directly blocked + process (Tom Lane) + + + + The original coding could allow inconsistent behavior in some cases; + in particular, an autovacuum could get canceled after less than + deadlock_timeout grace period. + + + + + + Improve logging of autovacuum cancels (Robert Haas) + + + + + + Fix log collector so that log_truncate_on_rotation works + during the very first log rotation after server start (Tom Lane) + + + + + + Fix WITH attached to a nested set operation + (UNION/INTERSECT/EXCEPT) + (Tom Lane) + + + + + + Ensure that a whole-row reference to a subquery doesn't include any + extra GROUP BY or ORDER BY columns (Tom Lane) + + + + + + Disallow copying whole-row references in CHECK + constraints and index definitions during CREATE TABLE + (Tom Lane) + + + + This situation can arise in CREATE TABLE with + LIKE or INHERITS. The copied whole-row + variable was incorrectly labeled with the row type of the original + table not the new one. Rejecting the case seems reasonable for + LIKE, since the row types might well diverge later. For + INHERITS we should ideally allow it, with an implicit + coercion to the parent table's row type; but that will require more + work than seems safe to back-patch. + + + + + + Fix memory leak in ARRAY(SELECT ...) subqueries (Heikki + Linnakangas, Tom Lane) + + + + + + Fix extraction of common prefixes from regular expressions (Tom Lane) + + + + The code could get confused by quantified parenthesized + subexpressions, such as ^(foo)?bar. This would lead to + incorrect index optimization of searches for such patterns. + + + + + + Fix bugs with parsing signed + hh:mm and + hh:mm:ss + fields in interval constants (Amit Kapila, Tom Lane) + + + + + + Use Postgres' encoding conversion functions, not Python's, when + converting a Python Unicode string to the server encoding in + PL/Python (Jan Urbanski) + + + + This avoids some corner-case problems, notably that Python doesn't + support all the encodings Postgres does. A notable functional change + is that if the server encoding is SQL_ASCII, you will get the UTF-8 + representation of the string; formerly, any non-ASCII characters in + the string would result in an error. + + + + + + Fix mapping of PostgreSQL encodings to Python encodings in PL/Python + (Jan Urbanski) + + + + + + Report errors properly in contrib/xml2's + xslt_process() (Tom Lane) + + + + + + Update time zone data files to tzdata release 2012e + for DST law changes in Morocco and Tokelau + + + + + + + + + + Release 9.0.8 + + + Release Date + 2012-06-04 + + + + This release contains a variety of fixes from 9.0.7. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.8 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.6, + see . + + + + + + Changes + + + + + + Fix incorrect password transformation in + contrib/pgcrypto's DES crypt() function + (Solar Designer) + + + + If a password string contained the byte value 0x80, the + remainder of the password was ignored, causing the password to be much + weaker than it appeared. With this fix, the rest of the string is + properly included in the DES hash. Any stored password values that are + affected by this bug will thus no longer match, so the stored values may + need to be updated. (CVE-2012-2143) + + + + + + Ignore SECURITY DEFINER and SET attributes for + a procedural language's call handler (Tom Lane) + + + + Applying such attributes to a call handler could crash the server. + (CVE-2012-2655) + + + + + + Allow numeric timezone offsets in timestamp input to be up to + 16 hours away from UTC (Tom Lane) + + + + Some historical time zones have offsets larger than 15 hours, the + previous limit. This could result in dumped data values being rejected + during reload. + + + + + + Fix timestamp conversion to cope when the given time is exactly the + last DST transition time for the current timezone (Tom Lane) + + + + This oversight has been there a long time, but was not noticed + previously because most DST-using zones are presumed to have an + indefinite sequence of future DST transitions. + + + + + + Fix text to name and char to name + casts to perform string truncation correctly in multibyte encodings + (Karl Schnaitter) + + + + + + Fix memory copying bug in to_tsquery() (Heikki Linnakangas) + + + + + + Ensure txid_current() reports the correct epoch when + executed in hot standby (Simon Riggs) + + + + + + Fix planner's handling of outer PlaceHolderVars within subqueries (Tom + Lane) + + + + This bug concerns sub-SELECTs that reference variables coming from the + nullable side of an outer join of the surrounding query. + In 9.1, queries affected by this bug would fail with ERROR: + Upper-level PlaceHolderVar found where not expected. But in 9.0 and + 8.4, you'd silently get possibly-wrong answers, since the value + transmitted into the subquery wouldn't go to null when it should. + + + + + + Fix slow session startup when pg_attribute is very large + (Tom Lane) + + + + If pg_attribute exceeds one-fourth of + shared_buffers, cache rebuilding code that is sometimes + needed during session start would trigger the synchronized-scan logic, + causing it to take many times longer than normal. The problem was + particularly acute if many new sessions were starting at once. + + + + + + Ensure sequential scans check for query cancel reasonably often (Merlin + Moncure) + + + + A scan encountering many consecutive pages that contain no live tuples + would not respond to interrupts meanwhile. + + + + + + Ensure the Windows implementation of PGSemaphoreLock() + clears ImmediateInterruptOK before returning (Tom Lane) + + + + This oversight meant that a query-cancel interrupt received later + in the same query could be accepted at an unsafe time, with + unpredictable but not good consequences. + + + + + + Show whole-row variables safely when printing views or rules + (Abbas Butt, Tom Lane) + + + + Corner cases involving ambiguous names (that is, the name could be + either a table or column name of the query) were printed in an + ambiguous way, risking that the view or rule would be interpreted + differently after dump and reload. Avoid the ambiguous case by + attaching a no-op cast. + + + + + + Fix COPY FROM to properly handle null marker strings that + correspond to invalid encoding (Tom Lane) + + + + A null marker string such as E'\\0' should work, and did + work in the past, but the case got broken in 8.4. + + + + + + Ensure autovacuum worker processes perform stack depth checking + properly (Heikki Linnakangas) + + + + Previously, infinite recursion in a function invoked by + auto-ANALYZE could crash worker processes. + + + + + + Fix logging collector to not lose log coherency under high load (Andrew + Dunstan) + + + + The collector previously could fail to reassemble large messages if it + got too busy. + + + + + + Fix logging collector to ensure it will restart file rotation + after receiving SIGHUP (Tom Lane) + + + + + + Fix WAL replay logic for GIN indexes to not fail if the index was + subsequently dropped (Tom Lane) + + + + + + Fix memory leak in PL/pgSQL's RETURN NEXT command (Joe + Conway) + + + + + + Fix PL/pgSQL's GET DIAGNOSTICS command when the target + is the function's first variable (Tom Lane) + + + + + + Fix potential access off the end of memory in psql's + expanded display (\x) mode (Peter Eisentraut) + + + + + + Fix several performance problems in pg_dump when + the database contains many objects (Jeff Janes, Tom Lane) + + + + pg_dump could get very slow if the database contained + many schemas, or if many objects are in dependency loops, or if there + are many owned sequences. + + + + + + Fix pg_upgrade for the case that a database stored in a + non-default tablespace contains a table in the cluster's default + tablespace (Bruce Momjian) + + + + + + In ecpg, fix rare memory leaks and possible overwrite + of one byte after the sqlca_t structure (Peter Eisentraut) + + + + + + Fix contrib/dblink's dblink_exec() to not leak + temporary database connections upon error (Tom Lane) + + + + + + Fix contrib/dblink to report the correct connection name in + error messages (Kyotaro Horiguchi) + + + + + + Fix contrib/vacuumlo to use multiple transactions when + dropping many large objects (Tim Lewis, Robert Haas, Tom Lane) + + + + This change avoids exceeding max_locks_per_transaction when + many objects need to be dropped. The behavior can be adjusted with the + new -l (limit) option. + + + + + + Update time zone data files to tzdata release 2012c + for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland + Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; + also historical corrections for Canada. + + + + + + + + + + Release 9.0.7 + + + Release Date + 2012-02-27 + + + + This release contains a variety of fixes from 9.0.6. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.7 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.6, + see . + + + + + + Changes + + + + + + Require execute permission on the trigger function for + CREATE TRIGGER (Robert Haas) + + + + This missing check could allow another user to execute a trigger + function with forged input data, by installing it on a table he owns. + This is only of significance for trigger functions marked + SECURITY DEFINER, since otherwise trigger functions run + as the table owner anyway. (CVE-2012-0866) + + + + + + Remove arbitrary limitation on length of common name in SSL + certificates (Heikki Linnakangas) + + + + Both libpq and the server truncated the common name + extracted from an SSL certificate at 32 bytes. Normally this would + cause nothing worse than an unexpected verification failure, but there + are some rather-implausible scenarios in which it might allow one + certificate holder to impersonate another. The victim would have to + have a common name exactly 32 bytes long, and the attacker would have + to persuade a trusted CA to issue a certificate in which the common + name has that string as a prefix. Impersonating a server would also + require some additional exploit to redirect client connections. + (CVE-2012-0867) + + + + + + Convert newlines to spaces in names written in pg_dump + comments (Robert Haas) + + + + pg_dump was incautious about sanitizing object names + that are emitted within SQL comments in its output script. A name + containing a newline would at least render the script syntactically + incorrect. Maliciously crafted object names could present a SQL + injection risk when the script is reloaded. (CVE-2012-0868) + + + + + + Fix btree index corruption from insertions concurrent with vacuuming + (Tom Lane) + + + + An index page split caused by an insertion could sometimes cause a + concurrently-running VACUUM to miss removing index entries + that it should remove. After the corresponding table rows are removed, + the dangling index entries would cause errors (such as could not + read block N in file ...) or worse, silently wrong query results + after unrelated rows are re-inserted at the now-free table locations. + This bug has been present since release 8.2, but occurs so infrequently + that it was not diagnosed until now. If you have reason to suspect + that it has happened in your database, reindexing the affected index + will fix things. + + + + + + Fix transient zeroing of shared buffers during WAL replay (Tom Lane) + + + + The replay logic would sometimes zero and refill a shared buffer, so + that the contents were transiently invalid. In hot standby mode this + can result in a query that's executing in parallel seeing garbage data. + Various symptoms could result from that, but the most common one seems + to be invalid memory alloc request size. + + + + + + Fix postmaster to attempt restart after a hot-standby crash (Tom Lane) + + + + A logic error caused the postmaster to terminate, rather than attempt + to restart the cluster, if any backend process crashed while operating + in hot standby mode. + + + + + + Fix CLUSTER/VACUUM FULL handling of toast + values owned by recently-updated rows (Tom Lane) + + + + This oversight could lead to duplicate key value violates unique + constraint errors being reported against the toast table's index + during one of these commands. + + + + + + Update per-column permissions, not only per-table permissions, when + changing table owner (Tom Lane) + + + + Failure to do this meant that any previously granted column permissions + were still shown as having been granted by the old owner. This meant + that neither the new owner nor a superuser could revoke the + now-untraceable-to-table-owner permissions. + + + + + + Support foreign data wrappers and foreign servers in + REASSIGN OWNED (Alvaro Herrera) + + + + This command failed with unexpected classid errors if + it needed to change the ownership of any such objects. + + + + + + Allow non-existent values for some settings in ALTER + USER/DATABASE SET (Heikki Linnakangas) + + + + Allow default_text_search_config, + default_tablespace, and temp_tablespaces to be + set to names that are not known. This is because they might be known + in another database where the setting is intended to be used, or for the + tablespace cases because the tablespace might not be created yet. The + same issue was previously recognized for search_path, and + these settings now act like that one. + + + + + + Avoid crashing when we have problems deleting table files post-commit + (Tom Lane) + + + + Dropping a table should lead to deleting the underlying disk files only + after the transaction commits. In event of failure then (for instance, + because of wrong file permissions) the code is supposed to just emit a + warning message and go on, since it's too late to abort the + transaction. This logic got broken as of release 8.4, causing such + situations to result in a PANIC and an unrestartable database. + + + + + + Recover from errors occurring during WAL replay of DROP + TABLESPACE (Tom Lane) + + + + Replay will attempt to remove the tablespace's directories, but there + are various reasons why this might fail (for example, incorrect + ownership or permissions on those directories). Formerly the replay + code would panic, rendering the database unrestartable without manual + intervention. It seems better to log the problem and continue, since + the only consequence of failure to remove the directories is some + wasted disk space. + + + + + + Fix race condition in logging AccessExclusiveLocks for hot standby + (Simon Riggs) + + + + Sometimes a lock would be logged as being held by transaction + zero. This is at least known to produce assertion failures on + slave servers, and might be the cause of more serious problems. + + + + + + Track the OID counter correctly during WAL replay, even when it wraps + around (Tom Lane) + + + + Previously the OID counter would remain stuck at a high value until the + system exited replay mode. The practical consequences of that are + usually nil, but there are scenarios wherein a standby server that's + been promoted to master might take a long time to advance the OID + counter to a reasonable value once values are needed. + + + + + + Prevent emitting misleading consistent recovery state reached + log message at the beginning of crash recovery (Heikki Linnakangas) + + + + + + Fix initial value of + pg_stat_replication.replay_location + (Fujii Masao) + + + + Previously, the value shown would be wrong until at least one WAL + record had been replayed. + + + + + + Fix regular expression back-references with * attached + (Tom Lane) + + + + Rather than enforcing an exact string match, the code would effectively + accept any string that satisfies the pattern sub-expression referenced + by the back-reference symbol. + + + + A similar problem still afflicts back-references that are embedded in a + larger quantified expression, rather than being the immediate subject + of the quantifier. This will be addressed in a future + PostgreSQL release. + + + + + + Fix recently-introduced memory leak in processing of + inet/cidr values (Heikki Linnakangas) + + + + A patch in the December 2011 releases of PostgreSQL + caused memory leakage in these operations, which could be significant + in scenarios such as building a btree index on such a column. + + + + + + Fix dangling pointer after CREATE TABLE AS/SELECT + INTO in a SQL-language function (Tom Lane) + + + + In most cases this only led to an assertion failure in assert-enabled + builds, but worse consequences seem possible. + + + + + + Avoid double close of file handle in syslogger on Windows (MauMau) + + + + Ordinarily this error was invisible, but it would cause an exception + when running on a debug version of Windows. + + + + + + Fix I/O-conversion-related memory leaks in plpgsql + (Andres Freund, Jan Urbanski, Tom Lane) + + + + Certain operations would leak memory until the end of the current + function. + + + + + + Improve pg_dump's handling of inherited table columns + (Tom Lane) + + + + pg_dump mishandled situations where a child column has + a different default expression than its parent column. If the default + is textually identical to the parent's default, but not actually the + same (for instance, because of schema search path differences) it would + not be recognized as different, so that after dump and restore the + child would be allowed to inherit the parent's default. Child columns + that are NOT NULL where their parent is not could also be + restored subtly incorrectly. + + + + + + Fix pg_restore's direct-to-database mode for + INSERT-style table data (Tom Lane) + + + + Direct-to-database restores from archive files made with + + + + + + Allow pg_upgrade to process tables containing + regclass columns (Bruce Momjian) + + + + Since pg_upgrade now takes care to preserve + pg_class OIDs, there was no longer any reason for this + restriction. + + + + + + Make libpq ignore ENOTDIR errors + when looking for an SSL client certificate file + (Magnus Hagander) + + + + This allows SSL connections to be established, though without a + certificate, even when the user's home directory is set to something + like /dev/null. + + + + + + Fix some more field alignment issues in ecpg's SQLDA area + (Zoltan Boszormenyi) + + + + + + Allow AT option in ecpg + DEALLOCATE statements (Michael Meskes) + + + + The infrastructure to support this has been there for awhile, but + through an oversight there was still an error check rejecting the case. + + + + + + Do not use the variable name when defining a varchar structure in ecpg + (Michael Meskes) + + + + + + Fix contrib/auto_explain's JSON output mode to produce + valid JSON (Andrew Dunstan) + + + + The output used brackets at the top level, when it should have used + braces. + + + + + + Fix error in contrib/intarray's int[] & + int[] operator (Guillaume Lelarge) + + + + If the smallest integer the two input arrays have in common is 1, + and there are smaller values in either array, then 1 would be + incorrectly omitted from the result. + + + + + + Fix error detection in contrib/pgcrypto's + encrypt_iv() and decrypt_iv() + (Marko Kreen) + + + + These functions failed to report certain types of invalid-input errors, + and would instead return random garbage values for incorrect input. + + + + + + Fix one-byte buffer overrun in contrib/test_parser + (Paul Guyot) + + + + The code would try to read one more byte than it should, which would + crash in corner cases. + Since contrib/test_parser is only example code, this is + not a security issue in itself, but bad example code is still bad. + + + + + + Use __sync_lock_test_and_set() for spinlocks on ARM, if + available (Martin Pitt) + + + + This function replaces our previous use of the SWPB + instruction, which is deprecated and not available on ARMv6 and later. + Reports suggest that the old code doesn't fail in an obvious way on + recent ARM boards, but simply doesn't interlock concurrent accesses, + leading to bizarre failures in multiprocess operation. + + + + + + Use + + + This prevents assorted scenarios wherein recent versions of gcc will + produce creative results. + + + + + + Allow use of threaded Python on FreeBSD (Chris Rees) + + + + Our configure script previously believed that this combination wouldn't + work; but FreeBSD fixed the problem, so remove that error check. + + + + + + + + + + Release 9.0.6 + + + Release Date + 2011-12-05 + + + + This release contains a variety of fixes from 9.0.5. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.6 + + + A dump/restore is not required for those running 9.0.X. + + + + However, a longstanding error was discovered in the definition of the + information_schema.referential_constraints view. If you + rely on correct results from that view, you should replace its + definition as explained in the first changelog item below. + + + + Also, if you are upgrading from a version earlier than 9.0.4, + see . + + + + + + Changes + + + + + + Fix bugs in information_schema.referential_constraints view + (Tom Lane) + + + + This view was being insufficiently careful about matching the + foreign-key constraint to the depended-on primary or unique key + constraint. That could result in failure to show a foreign key + constraint at all, or showing it multiple times, or claiming that it + depends on a different constraint than the one it really does. + + + + Since the view definition is installed by initdb, + merely upgrading will not fix the problem. If you need to fix this + in an existing installation, you can (as a superuser) drop the + information_schema schema then re-create it by sourcing + SHAREDIR/information_schema.sql. + (Run pg_config --sharedir if you're uncertain where + SHAREDIR is.) This must be repeated in each database + to be fixed. + + + + + + Fix possible crash during UPDATE or DELETE that + joins to the output of a scalar-returning function (Tom Lane) + + + + A crash could only occur if the target row had been concurrently + updated, so this problem surfaced only intermittently. + + + + + + Fix incorrect replay of WAL records for GIN index updates + (Tom Lane) + + + + This could result in transiently failing to find index entries after + a crash, or on a hot-standby server. The problem would be repaired + by the next VACUUM of the index, however. + + + + + + Fix TOAST-related data corruption during CREATE TABLE dest AS + SELECT * FROM src or INSERT INTO dest SELECT * FROM src + (Tom Lane) + + + + If a table has been modified by ALTER TABLE ADD COLUMN, + attempts to copy its data verbatim to another table could produce + corrupt results in certain corner cases. + The problem can only manifest in this precise form in 8.4 and later, + but we patched earlier versions as well in case there are other code + paths that could trigger the same bug. + + + + + + Fix possible failures during hot standby startup (Simon Riggs) + + + + + + Start hot standby faster when initial snapshot is incomplete + (Simon Riggs) + + + + + + Fix race condition during toast table access from stale syscache entries + (Tom Lane) + + + + The typical symptom was transient errors like missing chunk + number 0 for toast value NNNNN in pg_toast_2619, where the cited + toast table would always belong to a system catalog. + + + + + + Track dependencies of functions on items used in parameter default + expressions (Tom Lane) + + + + Previously, a referenced object could be dropped without having dropped + or modified the function, leading to misbehavior when the function was + used. Note that merely installing this update will not fix the missing + dependency entries; to do that, you'd need to CREATE OR + REPLACE each such function afterwards. If you have functions whose + defaults depend on non-built-in objects, doing so is recommended. + + + + + + Allow inlining of set-returning SQL functions with multiple OUT + parameters (Tom Lane) + + + + + + Don't trust deferred-unique indexes for join removal (Tom Lane and Marti + Raudsepp) + + + + A deferred uniqueness constraint might not hold intra-transaction, + so assuming that it does could give incorrect query results. + + + + + + Make DatumGetInetP() unpack inet datums that have a 1-byte + header, and add a new macro, DatumGetInetPP(), that does + not (Heikki Linnakangas) + + + + This change affects no core code, but might prevent crashes in add-on + code that expects DatumGetInetP() to produce an unpacked + datum as per usual convention. + + + + + + Improve locale support in money type's input and output + (Tom Lane) + + + + Aside from not supporting all standard + lc_monetary + formatting options, the input and output functions were inconsistent, + meaning there were locales in which dumped money values could + not be re-read. + + + + + + Don't let transform_null_equals + affect CASE foo WHEN NULL ... constructs + (Heikki Linnakangas) + + + + transform_null_equals is only supposed to affect + foo = NULL expressions written directly by the user, not + equality checks generated internally by this form of CASE. + + + + + + Change foreign-key trigger creation order to better support + self-referential foreign keys (Tom Lane) + + + + For a cascading foreign key that references its own table, a row update + will fire both the ON UPDATE trigger and the + CHECK trigger as one event. The ON UPDATE + trigger must execute first, else the CHECK will check a + non-final state of the row and possibly throw an inappropriate error. + However, the firing order of these triggers is determined by their + names, which generally sort in creation order since the triggers have + auto-generated names following the convention + RI_ConstraintTrigger_NNNN. A proper fix would require + modifying that convention, which we will do in 9.2, but it seems risky + to change it in existing releases. So this patch just changes the + creation order of the triggers. Users encountering this type of error + should drop and re-create the foreign key constraint to get its + triggers into the right order. + + + + + + Avoid floating-point underflow while tracking buffer allocation rate + (Greg Matthews) + + + + While harmless in itself, on certain platforms this would result in + annoying kernel log messages. + + + + + + Preserve configuration file name and line number values when starting + child processes under Windows (Tom Lane) + + + + Formerly, these would not be displayed correctly in the + pg_settings view. + + + + + + Fix incorrect field alignment in ecpg's SQLDA area + (Zoltan Boszormenyi) + + + + + + Preserve blank lines within commands in psql's command + history (Robert Haas) + + + + The former behavior could cause problems if an empty line was removed + from within a string literal, for example. + + + + + + Fix pg_dump to dump user-defined casts between + auto-generated types, such as table rowtypes (Tom Lane) + + + + + + Assorted fixes for pg_upgrade (Bruce Momjian) + + + + Handle exclusion constraints correctly, avoid failures on Windows, + don't complain about mismatched toast table names in 8.4 databases. + + + + + + Use the preferred version of xsubpp to build PL/Perl, + not necessarily the operating system's main copy + (David Wheeler and Alex Hunsaker) + + + + + + Fix incorrect coding in contrib/dict_int and + contrib/dict_xsyn (Tom Lane) + + + + Some functions incorrectly assumed that memory returned by + palloc() is guaranteed zeroed. + + + + + + Fix assorted errors in contrib/unaccent's configuration + file parsing (Tom Lane) + + + + + + Honor query cancel interrupts promptly in pgstatindex() + (Robert Haas) + + + + + + Fix incorrect quoting of log file name in Mac OS X start script + (Sidar Lopez) + + + + + + Ensure VPATH builds properly install all server header files + (Peter Eisentraut) + + + + + + Shorten file names reported in verbose error messages (Peter Eisentraut) + + + + Regular builds have always reported just the name of the C file + containing the error message call, but VPATH builds formerly + reported an absolute path name. + + + + + + Fix interpretation of Windows timezone names for Central America + (Tom Lane) + + + + Map Central America Standard Time to CST6, not + CST6CDT, because DST is generally not observed anywhere in + Central America. + + + + + + Update time zone data files to tzdata release 2011n + for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa; + also historical corrections for Alaska and British East Africa. + + + + + + + + + + Release 9.0.5 + + + Release Date + 2011-09-26 + + + + This release contains a variety of fixes from 9.0.4. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.5 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.4, + see . + + + + + + Changes + + + + + + Fix catalog cache invalidation after a VACUUM FULL or + CLUSTER on a system catalog (Tom Lane) + + + + In some cases the relocation of a system catalog row to another place + would not be recognized by concurrent server processes, allowing catalog + corruption to occur if they then tried to update that row. The + worst-case outcome could be as bad as complete loss of a table. + + + + + + Fix incorrect order of operations during sinval reset processing, + and ensure that TOAST OIDs are preserved in system catalogs (Tom + Lane) + + + + These mistakes could lead to transient failures after a VACUUM + FULL or CLUSTER on a system catalog. + + + + + + Fix bugs in indexing of in-doubt HOT-updated tuples (Tom Lane) + + + + These bugs could result in index corruption after reindexing a system + catalog. They are not believed to affect user indexes. + + + + + + Fix multiple bugs in GiST index page split processing (Heikki + Linnakangas) + + + + The probability of occurrence was low, but these could lead to index + corruption. + + + + + + Fix possible buffer overrun in tsvector_concat() + (Tom Lane) + + + + The function could underestimate the amount of memory needed for its + result, leading to server crashes. + + + + + + Fix crash in xml_recv when processing a + standalone parameter (Tom Lane) + + + + + + Make pg_options_to_table return NULL for an option with no + value (Tom Lane) + + + + Previously such cases would result in a server crash. + + + + + + Avoid possibly accessing off the end of memory in ANALYZE + and in SJIS-2004 encoding conversion (Noah Misch) + + + + This fixes some very-low-probability server crash scenarios. + + + + + + Protect pg_stat_reset_shared() against NULL input (Magnus + Hagander) + + + + + + Fix possible failure when a recovery conflict deadlock is detected + within a sub-transaction (Tom Lane) + + + + + + Avoid spurious conflicts while recycling btree index pages during hot + standby (Noah Misch, Simon Riggs) + + + + + + Shut down WAL receiver if it's still running at end of recovery (Heikki + Linnakangas) + + + + The postmaster formerly panicked in this situation, but it's actually a + legitimate case. + + + + + + Fix race condition in relcache init file invalidation (Tom Lane) + + + + There was a window wherein a new backend process could read a stale init + file but miss the inval messages that would tell it the data is stale. + The result would be bizarre failures in catalog accesses, typically + could not read block 0 in file ... later during startup. + + + + + + Fix memory leak at end of a GiST index scan (Tom Lane) + + + + Commands that perform many separate GiST index scans, such as + verification of a new GiST-based exclusion constraint on a table + already containing many rows, could transiently require large amounts of + memory due to this leak. + + + + + + Fix memory leak when encoding conversion has to be done on incoming + command strings and LISTEN is active (Tom Lane) + + + + + + Fix incorrect memory accounting (leading to possible memory bloat) in + tuplestores supporting holdable cursors and plpgsql's RETURN + NEXT command (Tom Lane) + + + + + + Fix trigger WHEN conditions when both BEFORE and + AFTER triggers exist (Tom Lane) + + + + Evaluation of WHEN conditions for AFTER ROW + UPDATE triggers could crash if there had been a BEFORE + ROW trigger fired for the same update. + + + + + + Fix performance problem when constructing a large, lossy bitmap + (Tom Lane) + + + + + + Fix join selectivity estimation for unique columns (Tom Lane) + + + + This fixes an erroneous planner heuristic that could lead to poor + estimates of the result size of a join. + + + + + + Fix nested PlaceHolderVar expressions that appear only in sub-select + target lists (Tom Lane) + + + + This mistake could result in outputs of an outer join incorrectly + appearing as NULL. + + + + + + Allow the planner to assume that empty parent tables really are empty + (Tom Lane) + + + + Normally an empty table is assumed to have a certain minimum size for + planning purposes; but this heuristic seems to do more harm than good + for the parent table of an inheritance hierarchy, which often is + permanently empty. + + + + + + Allow nested EXISTS queries to be optimized properly (Tom + Lane) + + + + + + Fix array- and path-creating functions to ensure padding bytes are + zeroes (Tom Lane) + + + + This avoids some situations where the planner will think that + semantically-equal constants are not equal, resulting in poor + optimization. + + + + + + Fix EXPLAIN to handle gating Result nodes within + inner-indexscan subplans (Tom Lane) + + + + The usual symptom of this oversight was bogus varno errors. + + + + + + Fix btree preprocessing of indexedcol IS + NULL conditions (Dean Rasheed) + + + + Such a condition is unsatisfiable if combined with any other type of + btree-indexable condition on the same index column. The case was + handled incorrectly in 9.0.0 and later, leading to query output where + there should be none. + + + + + + Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane) + + + + This could lead to loss of committed transactions after a server crash. + + + + + + Fix dump bug for VALUES in a view (Tom Lane) + + + + + + Disallow SELECT FOR UPDATE/SHARE on sequences (Tom Lane) + + + + This operation doesn't work as expected and can lead to failures. + + + + + + Fix VACUUM so that it always updates + pg_class.reltuples/relpages (Tom + Lane) + + + + This fixes some scenarios where autovacuum could make increasingly poor + decisions about when to vacuum tables. + + + + + + Defend against integer overflow when computing size of a hash table (Tom + Lane) + + + + + + Fix cases where CLUSTER might attempt to access + already-removed TOAST data (Tom Lane) + + + + + + Fix premature timeout failures during initial authentication transaction + (Tom Lane) + + + + + + Fix portability bugs in use of credentials control messages for + peer authentication (Tom Lane) + + + + + + Fix SSPI login when multiple roundtrips are required (Ahmed Shinwari, + Magnus Hagander) + + + + The typical symptom of this problem was The function requested is + not supported errors during SSPI login. + + + + + + Fix failure when adding a new variable of a custom variable class to + postgresql.conf (Tom Lane) + + + + + + Throw an error if pg_hba.conf contains hostssl + but SSL is disabled (Tom Lane) + + + + This was concluded to be more user-friendly than the previous behavior + of silently ignoring such lines. + + + + + + Fix failure when DROP OWNED BY attempts to remove default + privileges on sequences (Shigeru Hanada) + + + + + + Fix typo in pg_srand48 seed initialization (Andres Freund) + + + + This led to failure to use all bits of the provided seed. This function + is not used on most platforms (only those without srandom), + and the potential security exposure from a less-random-than-expected + seed seems minimal in any case. + + + + + + Avoid integer overflow when the sum of LIMIT and + OFFSET values exceeds 2^63 (Heikki Linnakangas) + + + + + + Add overflow checks to int4 and int8 versions of + generate_series() (Robert Haas) + + + + + + Fix trailing-zero removal in to_char() (Marti Raudsepp) + + + + In a format with FM and no digit positions + after the decimal point, zeroes to the left of the decimal point could + be removed incorrectly. + + + + + + Fix pg_size_pretty() to avoid overflow for inputs close to + 2^63 (Tom Lane) + + + + + + Weaken plpgsql's check for typmod matching in record values (Tom Lane) + + + + An overly enthusiastic check could lead to discarding length modifiers + that should have been kept. + + + + + + Correctly handle quotes in locale names during initdb + (Heikki Linnakangas) + + + + The case can arise with some Windows locales, such as People's + Republic of China. + + + + + + In pg_upgrade, avoid dumping orphaned temporary tables + (Bruce Momjian) + + + + This prevents situations wherein table OID assignments could get out of + sync between old and new installations. + + + + + + Fix pg_upgrade to preserve toast tables' relfrozenxids + during an upgrade from 8.3 (Bruce Momjian) + + + + Failure to do this could lead to pg_clog files being + removed too soon after the upgrade. + + + + + + In pg_upgrade, fix the -l (log) option to + work on Windows (Bruce Momjian) + + + + + + In pg_ctl, support silent mode for service registrations + on Windows (MauMau) + + + + + + Fix psql's counting of script file line numbers during + COPY from a different file (Tom Lane) + + + + + + Fix pg_restore's direct-to-database mode for + standard_conforming_strings (Tom Lane) + + + + pg_restore could emit incorrect commands when restoring + directly to a database server from an archive file that had been made + with standard_conforming_strings set to on. + + + + + + Be more user-friendly about unsupported cases for parallel + pg_restore (Tom Lane) + + + + This change ensures that such cases are detected and reported before + any restore actions have been taken. + + + + + + Fix write-past-buffer-end and memory leak in libpq's + LDAP service lookup code (Albe Laurenz) + + + + + + In libpq, avoid failures when using nonblocking I/O + and an SSL connection (Martin Pihlak, Tom Lane) + + + + + + Improve libpq's handling of failures during connection startup + (Tom Lane) + + + + In particular, the response to a server report of fork() + failure during SSL connection startup is now saner. + + + + + + Improve libpq's error reporting for SSL failures (Tom + Lane) + + + + + + Fix PQsetvalue() to avoid possible crash when adding a new + tuple to a PGresult originally obtained from a server + query (Andrew Chernow) + + + + + + Make ecpglib write double values with 15 digits + precision (Akira Kurosawa) + + + + + + In ecpglib, be sure LC_NUMERIC setting is + restored after an error (Michael Meskes) + + + + + + Apply upstream fix for blowfish signed-character bug (CVE-2011-2483) + (Tom Lane) + + + + contrib/pg_crypto's blowfish encryption code could give + wrong results on platforms where char is signed (which is most), + leading to encrypted passwords being weaker than they should be. + + + + + + Fix memory leak in contrib/seg (Heikki Linnakangas) + + + + + + Fix pgstatindex() to give consistent results for empty + indexes (Tom Lane) + + + + + + Allow building with perl 5.14 (Alex Hunsaker) + + + + + + Fix assorted issues with build and install file paths containing spaces + (Tom Lane) + + + + + + Update time zone data files to tzdata release 2011i + for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan. + + + + + + + + + + Release 9.0.4 + + + Release Date + 2011-04-18 + + + + This release contains a variety of fixes from 9.0.3. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.4 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if your installation was upgraded from a previous major + release by running pg_upgrade, you should take + action to prevent possible data loss due to a now-fixed bug in + pg_upgrade. The recommended solution is to run + VACUUM FREEZE on all TOAST tables. + More information is available at + http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix. + + + + + + Changes + + + + + + Fix pg_upgrade's handling of TOAST tables + (Bruce Momjian) + + + + The pg_class.relfrozenxid value for + TOAST tables was not correctly copied into the new installation + during pg_upgrade. This could later result in + pg_clog files being discarded while they were still + needed to validate tuples in the TOAST tables, leading to + could not access status of transaction failures. + + + + This error poses a significant risk of data loss for installations + that have been upgraded with pg_upgrade. This patch + corrects the problem for future uses of pg_upgrade, + but does not in itself cure the issue in installations that have been + processed with a buggy version of pg_upgrade. + + + + + + Suppress incorrect PD_ALL_VISIBLE flag was incorrectly set + warning (Heikki Linnakangas) + + + + VACUUM would sometimes issue this warning in cases that + are actually valid. + + + + + + Use better SQLSTATE error codes for hot standby conflict cases + (Tatsuo Ishii and Simon Riggs) + + + + All retryable conflict errors now have an error code that indicates + that a retry is possible. Also, session closure due to the database + being dropped on the master is now reported as + ERRCODE_DATABASE_DROPPED, rather than + ERRCODE_ADMIN_SHUTDOWN, so that connection poolers can + handle the situation correctly. + + + + + + Prevent intermittent hang in interactions of startup process with + bgwriter process (Simon Riggs) + + + + This affected recovery in non-hot-standby cases. + + + + + + Disallow including a composite type in itself (Tom Lane) + + + + This prevents scenarios wherein the server could recurse infinitely + while processing the composite type. While there are some possible + uses for such a structure, they don't seem compelling enough to + justify the effort required to make sure it always works safely. + + + + + + Avoid potential deadlock during catalog cache initialization + (Nikhil Sontakke) + + + + In some cases the cache loading code would acquire share lock on a + system index before locking the index's catalog. This could deadlock + against processes trying to acquire exclusive locks in the other, + more standard order. + + + + + + Fix dangling-pointer problem in BEFORE ROW UPDATE trigger + handling when there was a concurrent update to the target tuple + (Tom Lane) + + + + This bug has been observed to result in intermittent cannot + extract system attribute from virtual tuple failures while trying to + do UPDATE RETURNING ctid. There is a very small probability + of more serious errors, such as generating incorrect index entries for + the updated tuple. + + + + + + Disallow DROP TABLE when there are pending deferred trigger + events for the table (Tom Lane) + + + + Formerly the DROP would go through, leading to + could not open relation with OID nnn errors when the + triggers were eventually fired. + + + + + + Allow replication as a user name in + pg_hba.conf (Andrew Dunstan) + + + + replication is special in the database name column, but it + was mistakenly also treated as special in the user name column. + + + + + + Prevent crash triggered by constant-false WHERE conditions during + GEQO optimization (Tom Lane) + + + + + + + + + Improve planner's handling of semi-join and anti-join cases + (Tom Lane) + + + + + + Fix handling of SELECT FOR UPDATE in a sub-SELECT + (Tom Lane) + + + + This bug typically led to cannot extract system attribute from + virtual tuple errors. + + + + + + Fix selectivity estimation for text search to account for NULLs + (Jesper Krogh) + + + + + + Fix get_actual_variable_range() to support hypothetical indexes + injected by an index adviser plugin (Gurjeet Singh) + + + + + + Fix PL/Python memory leak involving array slices (Daniel Popowich) + + + + + + Allow libpq's SSL initialization to succeed when + user's home directory is unavailable (Tom Lane) + + + + If the SSL mode is such that a root certificate file is not required, + there is no need to fail. This change restores the behavior to what + it was in pre-9.0 releases. + + + + + + Fix libpq to return a useful error message for errors + detected in conninfo_array_parse (Joseph Adams) + + + + A typo caused the library to return NULL, rather than the + PGconn structure containing the error message, to the + application. + + + + + + Fix ecpg preprocessor's handling of float constants + (Heikki Linnakangas) + + + + + + Fix parallel pg_restore to handle comments on + POST_DATA items correctly (Arnd Hannemann) + + + + + + Fix pg_restore to cope with long lines (over 1KB) in + TOC files (Tom Lane) + + + + + + Put in more safeguards against crashing due to division-by-zero + with overly enthusiastic compiler optimization (Aurelien Jarno) + + + + + + Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane) + + + + There was a hard-wired assumption that this system function was not + available on MIPS hardware on these systems. Use a compile-time test + instead, since more recent versions have it. + + + + + + Fix compilation failures on HP-UX (Heikki Linnakangas) + + + + + + Avoid crash when trying to write to the Windows console very early + in process startup (Rushabh Lathia) + + + + + + Support building with MinGW 64 bit compiler for Windows + (Andrew Dunstan) + + + + + + Fix version-incompatibility problem with libintl on + Windows (Hiroshi Inoue) + + + + + + Fix usage of xcopy in Windows build scripts to + work correctly under Windows 7 (Andrew Dunstan) + + + + This affects the build scripts only, not installation or usage. + + + + + + Fix path separator used by pg_regress on Cygwin + (Andrew Dunstan) + + + + + + Update time zone data files to tzdata release 2011f + for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa, + and Turkey; also historical corrections for South Australia, Alaska, + and Hawaii. + + + + + + + + Release 9.0.3 - Release date + Release Date 2011-01-31 @@ -181,7 +6646,7 @@ Release 9.0.2 - Release date + Release Date 2010-12-16 @@ -628,7 +7093,7 @@ Release 9.0.1 - Release date + Release Date 2010-10-04 @@ -770,7 +7235,7 @@ Release 9.0 - Release date + Release Date 2010-09-20 @@ -2342,7 +8807,8 @@ whether hex or traditional format is used for bytea output. Libpq's PQescapeByteaConn() function automatically uses the hex format when connected to PostgreSQL 9.0 - or newer servers. + or newer servers. However, pre-9.0 libpq versions will not + correctly process hex format from newer servers. @@ -3520,9 +9986,8 @@ if TG_OP = 'INSERT' and NEW.col1 = ... then - Add data and documentation installation location control to PGXS Makefiles - (Mark Cave-Ayland) + Add data and documentation installation location control to + PGXS Makefiles (Mark Cave-Ayland) diff --git a/doc-xc/src/sgml/release-9.1.sgmlin b/doc-xc/src/sgml/release-9.1.sgmlin index 2d6c8edf9b..637d92ea14 100644 --- a/doc-xc/src/sgml/release-9.1.sgmlin +++ b/doc-xc/src/sgml/release-9.1.sgmlin @@ -1,27 +1,7271 @@ + + Release 9.1.9 + + + Release Date + 2013-04-04 + + + + This release contains a variety of fixes from 9.1.8. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.9 + + + A dump/restore is not required for those running 9.1.X. + + + + However, this release corrects several errors in management of GiST + indexes. After installing this update, it is advisable to + REINDEX any GiST indexes that meet one or more of the + conditions described below. + + + + Also, if you are upgrading from a version earlier than 9.1.6, + see the release notes for 9.1.6. + + + + + + Changes + + + + + + Fix insecure parsing of server command-line switches (Mitsumasa + Kondo, Kyotaro Horiguchi) + + + + A connection request containing a database name that begins with + - could be crafted to damage or destroy + files within the server's data directory, even if the request is + eventually rejected. (CVE-2013-1899) + + + + + + Reset OpenSSL randomness state in each postmaster child process + (Marko Kreen) + + + + This avoids a scenario wherein random numbers generated by + contrib/pgcrypto functions might be relatively easy for + another database user to guess. The risk is only significant when + the postmaster is configured with ssl = on + but most connections don't use SSL encryption. (CVE-2013-1900) + + + + + + Make REPLICATION privilege checks test current user not authenticated + user (Noah Misch) + + + + An unprivileged database user could exploit this mistake to call + pg_start_backup() or pg_stop_backup(), + thus possibly interfering with creation of routine backups. + (CVE-2013-1901) + + + + + + Fix GiST indexes to not use fuzzy geometric comparisons when + it's not appropriate to do so (Alexander Korotkov) + + + + The core geometric types perform comparisons using fuzzy + equality, but gist_box_same must do exact comparisons, + else GiST indexes using it might become inconsistent. After installing + this update, users should REINDEX any GiST indexes on + box, polygon, circle, or point + columns, since all of these use gist_box_same. + + + + + + Fix erroneous range-union and penalty logic in GiST indexes that use + contrib/btree_gist for variable-width data types, that is + text, bytea, bit, and numeric + columns (Tom Lane) + + + + These errors could result in inconsistent indexes in which some keys + that are present would not be found by searches, and also in useless + index bloat. Users are advised to REINDEX such indexes + after installing this update. + + + + + + Fix bugs in GiST page splitting code for multi-column indexes + (Tom Lane) + + + + These errors could result in inconsistent indexes in which some keys + that are present would not be found by searches, and also in indexes + that are unnecessarily inefficient to search. Users are advised to + REINDEX multi-column GiST indexes after installing this + update. + + + + + + Fix gist_point_consistent + to handle fuzziness consistently (Alexander Korotkov) + + + + Index scans on GiST indexes on point columns would sometimes + yield results different from a sequential scan, because + gist_point_consistent disagreed with the underlying + operator code about whether to do comparisons exactly or fuzzily. + + + + + + Fix buffer leak in WAL replay (Heikki Linnakangas) + + + + This bug could result in incorrect local pin count errors + during replay, making recovery impossible. + + + + + + Fix race condition in DELETE RETURNING (Tom Lane) + + + + Under the right circumstances, DELETE RETURNING could + attempt to fetch data from a shared buffer that the current process + no longer has any pin on. If some other process changed the buffer + meanwhile, this would lead to garbage RETURNING output, or + even a crash. + + + + + + Fix infinite-loop risk in regular expression compilation (Tom Lane, + Don Porter) + + + + + + Fix potential null-pointer dereference in regular expression compilation + (Tom Lane) + + + + + + Fix to_char() to use ASCII-only case-folding rules where + appropriate (Tom Lane) + + + + This fixes misbehavior of some template patterns that should be + locale-independent, but mishandled I and + i in Turkish locales. + + + + + + Fix unwanted rejection of timestamp 1999-12-31 24:00:00 + (Tom Lane) + + + + + + Fix logic error when a single transaction does UNLISTEN + then LISTEN (Tom Lane) + + + + The session wound up not listening for notify events at all, though it + surely should listen in this case. + + + + + + Fix possible planner crash after columns have been added to a view + that's depended on by another view (Tom Lane) + + + + + + Remove useless picksplit doesn't support secondary split log + messages (Josh Hansen, Tom Lane) + + + + This message seems to have been added in expectation of code that was + never written, and probably never will be, since GiST's default + handling of secondary splits is actually pretty good. So stop nagging + end users about it. + + + + + + Fix possible failure to send a session's last few transaction + commit/abort counts to the statistics collector (Tom Lane) + + + + + + Eliminate memory leaks in PL/Perl's spi_prepare() function + (Alex Hunsaker, Tom Lane) + + + + + + Fix pg_dumpall to handle database names containing + = correctly (Heikki Linnakangas) + + + + + + Avoid crash in pg_dump when an incorrect connection + string is given (Heikki Linnakangas) + + + + + + Ignore invalid indexes in pg_dump and + pg_upgrade (Michael Paquier, Bruce Momjian) + + + + Dumping invalid indexes can cause problems at restore time, for example + if the reason the index creation failed was because it tried to enforce + a uniqueness condition not satisfied by the table's data. Also, if the + index creation is in fact still in progress, it seems reasonable to + consider it to be an uncommitted DDL change, which + pg_dump wouldn't be expected to dump anyway. + pg_upgrade now also skips invalid indexes rather than + failing. + + + + + + In pg_basebackup, include only the current server + version's subdirectory when backing up a tablespace (Heikki + Linnakangas) + + + + + + Add a server version check in pg_basebackup and + pg_receivexlog, so they fail cleanly with version + combinations that won't work (Heikki Linnakangas) + + + + + + Fix contrib/pg_trgm's similarity() function + to return zero for trigram-less strings (Tom Lane) + + + + Previously it returned NaN due to internal division by zero. + + + + + + Update time zone data files to tzdata release 2013b + for DST law changes in Chile, Haiti, Morocco, Paraguay, and some + Russian areas. Also, historical zone data corrections for numerous + places. + + + + Also, update the time zone abbreviation files for recent changes in + Russia and elsewhere: CHOT, GET, + IRKT, KGT, KRAT, MAGT, + MAWT, MSK, NOVT, OMST, + TKT, VLAT, WST, YAKT, + YEKT now follow their current meanings, and + VOLT (Europe/Volgograd) and MIST + (Antarctica/Macquarie) are added to the default abbreviations list. + + + + + + + + + + Release 9.1.8 + + + Release Date + 2013-02-07 + + + + This release contains a variety of fixes from 9.1.7. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.8 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you are upgrading from a version earlier than 9.1.6, + see the release notes for 9.1.6. + + + + + + Changes + + + + + + Prevent execution of enum_recv from SQL (Tom Lane) + + + + The function was misdeclared, allowing a simple SQL command to crash the + server. In principle an attacker might be able to use it to examine the + contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP) + for reporting this issue. (CVE-2013-0255) + + + + + + Fix multiple problems in detection of when a consistent database + state has been reached during WAL replay (Fujii Masao, Heikki + Linnakangas, Simon Riggs, Andres Freund) + + + + + + Update minimum recovery point when truncating a relation file (Heikki + Linnakangas) + + + + Once data has been discarded, it's no longer safe to stop recovery at + an earlier point in the timeline. + + + + + + Fix recycling of WAL segments after changing recovery target timeline + (Heikki Linnakangas) + + + + + + Fix missing cancellations in hot standby mode (Noah Misch, Simon Riggs) + + + + The need to cancel conflicting hot-standby queries would sometimes be + missed, allowing those queries to see inconsistent data. + + + + + + Prevent recovery pause feature from pausing before users can connect + (Tom Lane) + + + + + + Fix SQL grammar to allow subscripting or field selection from a + sub-SELECT result (Tom Lane) + + + + + + Fix performance problems with autovacuum truncation in busy workloads + (Jan Wieck) + + + + Truncation of empty pages at the end of a table requires exclusive + lock, but autovacuum was coded to fail (and release the table lock) + when there are conflicting lock requests. Under load, it is easily + possible that truncation would never occur, resulting in table bloat. + Fix by performing a partial truncation, releasing the lock, then + attempting to re-acquire the lock and continue. This fix also greatly + reduces the average time before autovacuum releases the lock after a + conflicting request arrives. + + + + + + Protect against race conditions when scanning + pg_tablespace (Stephen Frost, Tom Lane) + + + + CREATE DATABASE and DROP DATABASE could + misbehave if there were concurrent updates of + pg_tablespace entries. + + + + + + Prevent DROP OWNED from trying to drop whole databases or + tablespaces (Álvaro Herrera) + + + + For safety, ownership of these objects must be reassigned, not dropped. + + + + + + Fix error in vacuum_freeze_table_age + implementation (Andres Freund) + + + + In installations that have existed for more than vacuum_freeze_min_age + transactions, this mistake prevented autovacuum from using partial-table + scans, so that a full-table scan would always happen instead. + + + + + + Prevent misbehavior when a RowExpr or XmlExpr + is parse-analyzed twice (Andres Freund, Tom Lane) + + + + This mistake could be user-visible in contexts such as + CREATE TABLE LIKE INCLUDING INDEXES. + + + + + + Improve defenses against integer overflow in hashtable sizing + calculations (Jeff Davis) + + + + + + Fix failure to ignore leftover temporary tables after a server crash + (Tom Lane) + + + + + + Reject out-of-range dates in to_date() (Hitoshi Harada) + + + + + + Fix pg_extension_config_dump() to handle + extension-update cases properly (Tom Lane) + + + + This function will now replace any existing entry for the target + table, making it usable in extension update scripts. + + + + + + Fix PL/Python's handling of functions used as triggers on multiple + tables (Andres Freund) + + + + + + Ensure that non-ASCII prompt strings are translated to the correct + code page on Windows (Alexander Law, Noah Misch) + + + + This bug affected psql and some other client programs. + + + + + + Fix possible crash in psql's \? command + when not connected to a database (Meng Qingzhong) + + + + + + Fix possible error if a relation file is removed while + pg_basebackup is running (Heikki Linnakangas) + + + + + + Make pg_dump exclude data of unlogged tables when + running on a hot-standby server (Magnus Hagander) + + + + This would fail anyway because the data is not available on the standby + server, so it seems most convenient to assume + + + + + + Fix pg_upgrade to deal with invalid indexes safely + (Bruce Momjian) + + + + + + Fix one-byte buffer overrun in libpq's + PQprintTuples (Xi Wang) + + + + This ancient function is not used anywhere by + PostgreSQL itself, but it might still be used by some + client code. + + + + + + Make ecpglib use translated messages properly + (Chen Huajun) + + + + + + Properly install ecpg_compat and + pgtypes libraries on MSVC (Jiang Guiqing) + + + + + + Include our version of isinf() in + libecpg if it's not provided by the system + (Jiang Guiqing) + + + + + + Rearrange configure's tests for supplied functions so it is not + fooled by bogus exports from libedit/libreadline (Christoph Berg) + + + + + + Ensure Windows build number increases over time (Magnus Hagander) + + + + + + Make pgxs build executables with the right + .exe suffix when cross-compiling for Windows + (Zoltan Boszormenyi) + + + + + + Add new timezone abbreviation FET (Tom Lane) + + + + This is now used in some eastern-European time zones. + + + + + + + + + + Release 9.1.7 + + + Release Date + 2012-12-06 + + + + This release contains a variety of fixes from 9.1.6. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.7 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you are upgrading from a version earlier than 9.1.6, + see the release notes for 9.1.6. + + + + + + Changes + + + + + + Fix multiple bugs associated with CREATE INDEX + CONCURRENTLY (Andres Freund, Tom Lane) + + + + Fix CREATE INDEX CONCURRENTLY to use + in-place updates when changing the state of an index's + pg_index row. This prevents race conditions that could + cause concurrent sessions to miss updating the target index, thus + resulting in corrupt concurrently-created indexes. + + + + Also, fix various other operations to ensure that they ignore + invalid indexes resulting from a failed CREATE INDEX + CONCURRENTLY command. The most important of these is + VACUUM, because an auto-vacuum could easily be launched + on the table before corrective action can be taken to fix or remove + the invalid index. + + + + + + Fix buffer locking during WAL replay (Tom Lane) + + + + The WAL replay code was insufficiently careful about locking buffers + when replaying WAL records that affect more than one page. This could + result in hot standby queries transiently seeing inconsistent states, + resulting in wrong answers or unexpected failures. + + + + + + Fix an error in WAL generation logic for GIN indexes (Tom Lane) + + + + This could result in index corruption, if a torn-page failure occurred. + + + + + + Properly remove startup process's virtual XID lock when promoting a + hot standby server to normal running (Simon Riggs) + + + + This oversight could prevent subsequent execution of certain + operations such as CREATE INDEX CONCURRENTLY. + + + + + + Avoid bogus out-of-sequence timeline ID errors in standby + mode (Heikki Linnakangas) + + + + + + Prevent the postmaster from launching new child processes after it's + received a shutdown signal (Tom Lane) + + + + This mistake could result in shutdown taking longer than it should, or + even never completing at all without additional user action. + + + + + + Avoid corruption of internal hash tables when out of memory + (Hitoshi Harada) + + + + + + Prevent file descriptors for dropped tables from being held open past + transaction end (Tom Lane) + + + + This should reduce problems with long-since-dropped tables continuing + to occupy disk space. + + + + + + Prevent database-wide crash and restart when a new child process is + unable to create a pipe for its latch (Tom Lane) + + + + Although the new process must fail, there is no good reason to force a + database-wide restart, so avoid that. This improves robustness when + the kernel is nearly out of file descriptors. + + + + + + Fix planning of non-strict equivalence clauses above outer joins + (Tom Lane) + + + + The planner could derive incorrect constraints from a clause equating + a non-strict construct to something else, for example + WHERE COALESCE(foo, 0) = 0 + when foo is coming from the nullable side of an outer join. + + + + + + Fix SELECT DISTINCT with index-optimized + MIN/MAX on an inheritance tree (Tom Lane) + + + + The planner would fail with failed to re-find MinMaxAggInfo + record given this combination of factors. + + + + + + Improve planner's ability to prove exclusion constraints from + equivalence classes (Tom Lane) + + + + + + Fix partial-row matching in hashed subplans to handle cross-type cases + correctly (Tom Lane) + + + + This affects multicolumn NOT IN subplans, such as + WHERE (a, b) NOT IN (SELECT x, y FROM ...) + when for instance b and y are int4 + and int8 respectively. This mistake led to wrong answers + or crashes depending on the specific datatypes involved. + + + + + + Acquire buffer lock when re-fetching the old tuple for an + AFTER ROW UPDATE/DELETE trigger (Andres Freund) + + + + In very unusual circumstances, this oversight could result in passing + incorrect data to a trigger WHEN condition, or to the + precheck logic for a foreign-key enforcement trigger. That could + result in a crash, or in an incorrect decision about whether to + fire the trigger. + + + + + + Fix ALTER COLUMN TYPE to handle inherited check + constraints properly (Pavan Deolasee) + + + + This worked correctly in pre-8.4 releases, and now works correctly + in 8.4 and later. + + + + + + Fix ALTER EXTENSION SET SCHEMA's failure to move some + subsidiary objects into the new schema (Álvaro Herrera, Dimitri + Fontaine) + + + + + + Fix REASSIGN OWNED to handle grants on tablespaces + (Álvaro Herrera) + + + + + + Ignore incorrect pg_attribute entries for system + columns for views (Tom Lane) + + + + Views do not have any system columns. However, we forgot to + remove such entries when converting a table to a view. That's fixed + properly for 9.3 and later, but in previous branches we need to defend + against existing mis-converted views. + + + + + + Fix rule printing to dump INSERT INTO table + DEFAULT VALUES correctly (Tom Lane) + + + + + + Guard against stack overflow when there are too many + UNION/INTERSECT/EXCEPT clauses + in a query (Tom Lane) + + + + + + Prevent platform-dependent failures when dividing the minimum possible + integer value by -1 (Xi Wang, Tom Lane) + + + + + + Fix possible access past end of string in date parsing + (Hitoshi Harada) + + + + + + Fix failure to advance XID epoch if XID wraparound happens during a + checkpoint and wal_level is hot_standby + (Tom Lane, Andres Freund) + + + + While this mistake had no particular impact on + PostgreSQL itself, it was bad for + applications that rely on txid_current() and related + functions: the TXID value would appear to go backwards. + + + + + + Fix display of + pg_stat_replication.sync_state at a + page boundary (Kyotaro Horiguchi) + + + + + + Produce an understandable error message if the length of the path name + for a Unix-domain socket exceeds the platform-specific limit + (Tom Lane, Andrew Dunstan) + + + + Formerly, this would result in something quite unhelpful, such as + Non-recoverable failure in name resolution. + + + + + + Fix memory leaks when sending composite column values to the client + (Tom Lane) + + + + + + Make pg_ctl more robust about reading the + postmaster.pid file (Heikki Linnakangas) + + + + Fix race conditions and possible file descriptor leakage. + + + + + + Fix possible crash in psql if incorrectly-encoded data + is presented and the client_encoding setting is a + client-only encoding, such as SJIS (Jiang Guiqing) + + + + + + Make pg_dump dump SEQUENCE SET items in + the data not pre-data section of the archive (Tom Lane) + + + + This change fixes dumping of sequences that are marked as extension + configuration tables. + + + + + + Fix bugs in the restore.sql script emitted by + pg_dump in tar output format (Tom Lane) + + + + The script would fail outright on tables whose names include + upper-case characters. Also, make the script capable of restoring + data in + + + + + Fix pg_restore to accept POSIX-conformant + tar files (Brian Weaver, Tom Lane) + + + + The original coding of pg_dump's tar + output mode produced files that are not fully conformant with the + POSIX standard. This has been corrected for version 9.3. This + patch updates previous branches so that they will accept both the + incorrect and the corrected formats, in hopes of avoiding + compatibility problems when 9.3 comes out. + + + + + + Fix tar files emitted by pg_basebackup to + be POSIX conformant (Brian Weaver, Tom Lane) + + + + + + Fix pg_resetxlog to locate postmaster.pid + correctly when given a relative path to the data directory (Tom Lane) + + + + This mistake could lead to pg_resetxlog not noticing + that there is an active postmaster using the data directory. + + + + + + Fix libpq's lo_import() and + lo_export() functions to report file I/O errors properly + (Tom Lane) + + + + + + Fix ecpg's processing of nested structure pointer + variables (Muhammad Usama) + + + + + + Fix ecpg's ecpg_get_data function to + handle arrays properly (Michael Meskes) + + + + + + Make contrib/pageinspect's btree page inspection + functions take buffer locks while examining pages (Tom Lane) + + + + + + Ensure that make install for an extension creates the + extension installation directory (Cédric Villemain) + + + + Previously, this step was missed if MODULEDIR was set in + the extension's Makefile. + + + + + + Fix pgxs support for building loadable modules on AIX + (Tom Lane) + + + + Building modules outside the original source tree didn't work on AIX. + + + + + + Update time zone data files to tzdata release 2012j + for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western + Samoa, and portions of Brazil. + + + + + + + + + + Release 9.1.6 + + + Release Date + 2012-09-24 + + + + This release contains a variety of fixes from 9.1.5. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.6 + + + A dump/restore is not required for those running 9.1.X. + + + + However, you may need to perform REINDEX operations to + recover from the effects of the data corruption bug described in the + first changelog item below. + + + + Also, if you are upgrading from a version earlier than 9.1.4, + see the release notes for 9.1.4. + + + + + + Changes + + + + + + Fix persistence marking of shared buffers during WAL replay + (Jeff Davis) + + + + This mistake can result in buffers not being written out during + checkpoints, resulting in data corruption if the server later crashes + without ever having written those buffers. Corruption can occur on + any server following crash recovery, but it is significantly more + likely to occur on standby slave servers since those perform much + more WAL replay. There is a low probability of corruption of btree + and GIN indexes. There is a much higher probability of corruption of + table visibility maps. Fortunately, visibility maps are + non-critical data in 9.1, so the worst consequence of such corruption + in 9.1 installations is transient inefficiency of vacuuming. Table + data proper cannot be corrupted by this bug. + + + + While no index corruption due to this bug is known to have occurred + in the field, as a precautionary measure it is recommended that + production installations REINDEX all btree and GIN + indexes at a convenient time after upgrading to 9.1.6. + + + + Also, if you intend to do an in-place upgrade to 9.2.X, before doing + so it is recommended to perform a VACUUM of all tables + while having vacuum_freeze_table_age + set to zero. This will ensure that any lingering wrong data in the + visibility maps is corrected before 9.2.X can depend on it. vacuum_cost_delay + can be adjusted to reduce the performance impact of vacuuming, while + causing it to take longer to finish. + + + + + + Fix planner's assignment of executor parameters, and fix executor's + rescan logic for CTE plan nodes (Tom Lane) + + + + These errors could result in wrong answers from queries that scan the + same WITH subquery multiple times. + + + + + + Fix misbehavior when default_transaction_isolation + is set to serializable (Kevin Grittner, Tom Lane, Heikki + Linnakangas) + + + + Symptoms include crashes at process start on Windows, and crashes in + hot standby operation. + + + + + + Improve selectivity estimation for text search queries involving + prefixes, i.e. word:* patterns (Tom Lane) + + + + + + + + + Improve page-splitting decisions in GiST indexes (Alexander Korotkov, + Robert Haas, Tom Lane) + + + + Multi-column GiST indexes might suffer unexpected bloat due to this + error. + + + + + + Fix cascading privilege revoke to stop if privileges are still held + (Tom Lane) + + + + If we revoke a grant option from some role X, but + X still holds that option via a grant from someone + else, we should not recursively revoke the corresponding privilege + from role(s) Y that X had granted it + to. + + + + + + Disallow extensions from containing the schema they are assigned to + (Thom Brown) + + + + This situation creates circular dependencies that confuse + pg_dump and probably other things. It's confusing + for humans too, so disallow it. + + + + + + Improve error messages for Hot Standby misconfiguration errors + (Gurjeet Singh) + + + + + + Make configure probe for mbstowcs_l (Tom + Lane) + + + + This fixes build failures on some versions of AIX. + + + + + + Fix handling of SIGFPE when PL/Perl is in use (Andres Freund) + + + + Perl resets the process's SIGFPE handler to + SIG_IGN, which could result in crashes later on. Restore + the normal Postgres signal handler after initializing PL/Perl. + + + + + + Prevent PL/Perl from crashing if a recursive PL/Perl function is + redefined while being executed (Tom Lane) + + + + + + Work around possible misoptimization in PL/Perl (Tom Lane) + + + + Some Linux distributions contain an incorrect version of + pthread.h that results in incorrect compiled code in + PL/Perl, leading to crashes if a PL/Perl function calls another one + that throws an error. + + + + + + Fix bugs in contrib/pg_trgm's LIKE pattern + analysis code (Fujii Masao) + + + + LIKE queries using a trigram index could produce wrong + results if the pattern contained LIKE escape characters. + + + + + + Fix pg_upgrade's handling of line endings on Windows + (Andrew Dunstan) + + + + Previously, pg_upgrade might add or remove carriage + returns in places such as function bodies. + + + + + + On Windows, make pg_upgrade use backslash path + separators in the scripts it emits (Andrew Dunstan) + + + + + + Remove unnecessary dependency on pg_config from + pg_upgrade (Peter Eisentraut) + + + + + + Update time zone data files to tzdata release 2012f + for DST law changes in Fiji + + + + + + + + + + Release 9.1.5 + + + Release Date + 2012-08-17 + + + + This release contains a variety of fixes from 9.1.4. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.5 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you are upgrading from a version earlier than 9.1.4, + see the release notes for 9.1.4. + + + + + + Changes + + + + + + Prevent access to external files/URLs via XML entity references + (Noah Misch, Tom Lane) + + + + xml_parse() would attempt to fetch external files or + URLs as needed to resolve DTD and entity references in an XML value, + thus allowing unprivileged database users to attempt to fetch data + with the privileges of the database server. While the external data + wouldn't get returned directly to the user, portions of it could be + exposed in error messages if the data didn't parse as valid XML; and + in any case the mere ability to check existence of a file might be + useful to an attacker. (CVE-2012-3489) + + + + + + Prevent access to external files/URLs via contrib/xml2's + xslt_process() (Peter Eisentraut) + + + + libxslt offers the ability to read and write both + files and URLs through stylesheet commands, thus allowing + unprivileged database users to both read and write data with the + privileges of the database server. Disable that through proper use + of libxslt's security options. (CVE-2012-3488) + + + + Also, remove xslt_process()'s ability to fetch documents + and stylesheets from external files/URLs. While this was a + documented feature, it was long regarded as a bad idea. + The fix for CVE-2012-3489 broke that capability, and rather than + expend effort on trying to fix it, we're just going to summarily + remove it. + + + + + + Prevent too-early recycling of btree index pages (Noah Misch) + + + + When we allowed read-only transactions to skip assigning XIDs, we + introduced the possibility that a deleted btree page could be + recycled while a read-only transaction was still in flight to it. + This would result in incorrect index search results. The probability + of such an error occurring in the field seems very low because of the + timing requirements, but nonetheless it should be fixed. + + + + + + Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane) + + + + If ALTER SEQUENCE was executed on a freshly created or + reset sequence, and then precisely one nextval() call + was made on it, and then the server crashed, WAL replay would restore + the sequence to a state in which it appeared that no + nextval() had been done, thus allowing the first + sequence value to be returned again by the next + nextval() call. In particular this could manifest for + serial columns, since creation of a serial column's sequence + includes an ALTER SEQUENCE OWNED BY step. + + + + + + Fix race condition in enum-type value comparisons (Robert + Haas, Tom Lane) + + + + Comparisons could fail when encountering an enum value added since + the current query started. + + + + + + Fix txid_current() to report the correct epoch when not + in hot standby (Heikki Linnakangas) + + + + This fixes a regression introduced in the previous minor release. + + + + + + Prevent selection of unsuitable replication connections as + the synchronous standby (Fujii Masao) + + + + The master might improperly choose pseudo-servers such as + pg_receivexlog or pg_basebackup + as the synchronous standby, and then wait indefinitely for them. + + + + + + Fix bug in startup of Hot Standby when a master transaction has many + subtransactions (Andres Freund) + + + + This mistake led to failures reported as out-of-order XID + insertion in KnownAssignedXids. + + + + + + Ensure the backup_label file is fsync'd after + pg_start_backup() (Dave Kerr) + + + + + + Fix timeout handling in walsender processes (Tom Lane) + + + + WAL sender background processes neglected to establish a + SIGALRM handler, meaning they would wait forever in + some corner cases where a timeout ought to happen. + + + + + + Wake walsenders after each background flush by walwriter (Andres + Freund, Simon Riggs) + + + + This greatly reduces replication delay when the workload contains + only asynchronously-committed transactions. + + + + + + Fix LISTEN/NOTIFY to cope better with I/O + problems, such as out of disk space (Tom Lane) + + + + After a write failure, all subsequent attempts to send more + NOTIFY messages would fail with messages like + Could not read from file "pg_notify/nnnn" at + offset nnnnn: Success. + + + + + + Only allow autovacuum to be auto-canceled by a directly blocked + process (Tom Lane) + + + + The original coding could allow inconsistent behavior in some cases; + in particular, an autovacuum could get canceled after less than + deadlock_timeout grace period. + + + + + + Improve logging of autovacuum cancels (Robert Haas) + + + + + + Fix log collector so that log_truncate_on_rotation works + during the very first log rotation after server start (Tom Lane) + + + + + + Fix WITH attached to a nested set operation + (UNION/INTERSECT/EXCEPT) + (Tom Lane) + + + + + + Ensure that a whole-row reference to a subquery doesn't include any + extra GROUP BY or ORDER BY columns (Tom Lane) + + + + + + Fix dependencies generated during ALTER TABLE ... ADD + CONSTRAINT USING INDEX (Tom Lane) + + + + This command left behind a redundant pg_depend entry + for the index, which could confuse later operations, notably + ALTER TABLE ... ALTER COLUMN TYPE on one of the indexed + columns. + + + + + + Fix REASSIGN OWNED to work on extensions (Alvaro Herrera) + + + + + + Disallow copying whole-row references in CHECK + constraints and index definitions during CREATE TABLE + (Tom Lane) + + + + This situation can arise in CREATE TABLE with + LIKE or INHERITS. The copied whole-row + variable was incorrectly labeled with the row type of the original + table not the new one. Rejecting the case seems reasonable for + LIKE, since the row types might well diverge later. For + INHERITS we should ideally allow it, with an implicit + coercion to the parent table's row type; but that will require more + work than seems safe to back-patch. + + + + + + Fix memory leak in ARRAY(SELECT ...) subqueries (Heikki + Linnakangas, Tom Lane) + + + + + + Fix planner to pass correct collation to operator selectivity + estimators (Tom Lane) + + + + This was not previously required by any core selectivity estimation + function, but third-party code might need it. + + + + + + Fix extraction of common prefixes from regular expressions (Tom Lane) + + + + The code could get confused by quantified parenthesized + subexpressions, such as ^(foo)?bar. This would lead to + incorrect index optimization of searches for such patterns. + + + + + + Fix bugs with parsing signed + hh:mm and + hh:mm:ss + fields in interval constants (Amit Kapila, Tom Lane) + + + + + + Fix pg_dump to better handle views containing partial + GROUP BY lists (Tom Lane) + + + + A view that lists only a primary key column in GROUP BY, + but uses other table columns as if they were grouped, gets marked as + depending on the primary key. Improper handling of such primary key + dependencies in pg_dump resulted in poorly-ordered + dumps, which at best would be inefficient to restore and at worst + could result in outright failure of a parallel + pg_restore run. + + + + + + In PL/Perl, avoid setting UTF8 flag when in SQL_ASCII encoding + (Alex Hunsaker, Kyotaro Horiguchi, Alvaro Herrera) + + + + + + Use Postgres' encoding conversion functions, not Python's, when + converting a Python Unicode string to the server encoding in + PL/Python (Jan Urbanski) + + + + This avoids some corner-case problems, notably that Python doesn't + support all the encodings Postgres does. A notable functional change + is that if the server encoding is SQL_ASCII, you will get the UTF-8 + representation of the string; formerly, any non-ASCII characters in + the string would result in an error. + + + + + + Fix mapping of PostgreSQL encodings to Python encodings in PL/Python + (Jan Urbanski) + + + + + + Report errors properly in contrib/xml2's + xslt_process() (Tom Lane) + + + + + + Update time zone data files to tzdata release 2012e + for DST law changes in Morocco and Tokelau + + + + + + + + + + Release 9.1.4 + + + Release Date + 2012-06-04 + + + + This release contains a variety of fixes from 9.1.3. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.4 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you use the citext data type, and you upgraded + from a previous major release by running pg_upgrade, + you should run CREATE EXTENSION citext FROM unpackaged + to avoid collation-related failures in citext operations. + The same is necessary if you restore a dump from a pre-9.1 database + that contains an instance of the citext data type. + If you've already run the CREATE EXTENSION command before + upgrading to 9.1.4, you will instead need to do manual catalog updates + as explained in the third changelog item below. + + + + Also, if you are upgrading from a version earlier than 9.1.2, + see the release notes for 9.1.2. + + + + + + Changes + + + + + + Fix incorrect password transformation in + contrib/pgcrypto's DES crypt() function + (Solar Designer) + + + + If a password string contained the byte value 0x80, the + remainder of the password was ignored, causing the password to be much + weaker than it appeared. With this fix, the rest of the string is + properly included in the DES hash. Any stored password values that are + affected by this bug will thus no longer match, so the stored values may + need to be updated. (CVE-2012-2143) + + + + + + Ignore SECURITY DEFINER and SET attributes for + a procedural language's call handler (Tom Lane) + + + + Applying such attributes to a call handler could crash the server. + (CVE-2012-2655) + + + + + + Make contrib/citext's upgrade script fix collations of + citext arrays and domains over citext + (Tom Lane) + + + + Release 9.1.2 provided a fix for collations of citext columns + and indexes in databases upgraded or reloaded from pre-9.1 + installations, but that fix was incomplete: it neglected to handle arrays + and domains over citext. This release extends the module's + upgrade script to handle these cases. As before, if you have already + run the upgrade script, you'll need to run the collation update + commands by hand instead. See the 9.1.2 release notes for more + information about doing this. + + + + + + Allow numeric timezone offsets in timestamp input to be up to + 16 hours away from UTC (Tom Lane) + + + + Some historical time zones have offsets larger than 15 hours, the + previous limit. This could result in dumped data values being rejected + during reload. + + + + + + Fix timestamp conversion to cope when the given time is exactly the + last DST transition time for the current timezone (Tom Lane) + + + + This oversight has been there a long time, but was not noticed + previously because most DST-using zones are presumed to have an + indefinite sequence of future DST transitions. + + + + + + Fix text to name and char to name + casts to perform string truncation correctly in multibyte encodings + (Karl Schnaitter) + + + + + + Fix memory copying bug in to_tsquery() (Heikki Linnakangas) + + + + + + Ensure txid_current() reports the correct epoch when + executed in hot standby (Simon Riggs) + + + + + + Fix planner's handling of outer PlaceHolderVars within subqueries (Tom + Lane) + + + + This bug concerns sub-SELECTs that reference variables coming from the + nullable side of an outer join of the surrounding query. + In 9.1, queries affected by this bug would fail with ERROR: + Upper-level PlaceHolderVar found where not expected. But in 9.0 and + 8.4, you'd silently get possibly-wrong answers, since the value + transmitted into the subquery wouldn't go to null when it should. + + + + + + Fix planning of UNION ALL subqueries with output columns + that are not simple variables (Tom Lane) + + + + Planning of such cases got noticeably worse in 9.1 as a result of a + misguided fix for MergeAppend child's targetlist doesn't match + MergeAppend errors. Revert that fix and do it another way. + + + + + + Fix slow session startup when pg_attribute is very large + (Tom Lane) + + + + If pg_attribute exceeds one-fourth of + shared_buffers, cache rebuilding code that is sometimes + needed during session start would trigger the synchronized-scan logic, + causing it to take many times longer than normal. The problem was + particularly acute if many new sessions were starting at once. + + + + + + Ensure sequential scans check for query cancel reasonably often (Merlin + Moncure) + + + + A scan encountering many consecutive pages that contain no live tuples + would not respond to interrupts meanwhile. + + + + + + Ensure the Windows implementation of PGSemaphoreLock() + clears ImmediateInterruptOK before returning (Tom Lane) + + + + This oversight meant that a query-cancel interrupt received later + in the same query could be accepted at an unsafe time, with + unpredictable but not good consequences. + + + + + + Show whole-row variables safely when printing views or rules + (Abbas Butt, Tom Lane) + + + + Corner cases involving ambiguous names (that is, the name could be + either a table or column name of the query) were printed in an + ambiguous way, risking that the view or rule would be interpreted + differently after dump and reload. Avoid the ambiguous case by + attaching a no-op cast. + + + + + + Fix COPY FROM to properly handle null marker strings that + correspond to invalid encoding (Tom Lane) + + + + A null marker string such as E'\\0' should work, and did + work in the past, but the case got broken in 8.4. + + + + + + Fix EXPLAIN VERBOSE for writable CTEs containing + RETURNING clauses (Tom Lane) + + + + + + Fix PREPARE TRANSACTION to work correctly in the presence + of advisory locks (Tom Lane) + + + + Historically, PREPARE TRANSACTION has simply ignored any + session-level advisory locks the session holds, but this case was + accidentally broken in 9.1. + + + + + + Fix truncation of unlogged tables (Robert Haas) + + + + + + Ignore missing schemas during non-interactive assignments of + search_path (Tom Lane) + + + + This re-aligns 9.1's behavior with that of older branches. Previously + 9.1 would throw an error for nonexistent schemas mentioned in + search_path settings obtained from places such as + ALTER DATABASE SET. + + + + + + Fix bugs with temporary or transient tables used in extension scripts + (Tom Lane) + + + + This includes cases such as a rewriting ALTER TABLE within + an extension update script, since that uses a transient table behind + the scenes. + + + + + + Ensure autovacuum worker processes perform stack depth checking + properly (Heikki Linnakangas) + + + + Previously, infinite recursion in a function invoked by + auto-ANALYZE could crash worker processes. + + + + + + Fix logging collector to not lose log coherency under high load (Andrew + Dunstan) + + + + The collector previously could fail to reassemble large messages if it + got too busy. + + + + + + Fix logging collector to ensure it will restart file rotation + after receiving SIGHUP (Tom Lane) + + + + + + Fix too many LWLocks taken failure in GiST indexes (Heikki + Linnakangas) + + + + + + Fix WAL replay logic for GIN indexes to not fail if the index was + subsequently dropped (Tom Lane) + + + + + + Correctly detect SSI conflicts of prepared transactions after a crash + (Dan Ports) + + + + + + Avoid synchronous replication delay when committing a transaction that + only modified temporary tables (Heikki Linnakangas) + + + + In such a case the transaction's commit record need not be flushed to + standby servers, but some of the code didn't know that and waited for + it to happen anyway. + + + + + + Fix error handling in pg_basebackup + (Thomas Ogrisegg, Fujii Masao) + + + + + + Fix walsender to not go into a busy loop if connection + is terminated (Fujii Masao) + + + + + + Fix memory leak in PL/pgSQL's RETURN NEXT command (Joe + Conway) + + + + + + Fix PL/pgSQL's GET DIAGNOSTICS command when the target + is the function's first variable (Tom Lane) + + + + + + Ensure that PL/Perl package-qualifies the _TD variable + (Alex Hunsaker) + + + + This bug caused trigger invocations to fail when they are nested + within a function invocation that changes the current package. + + + + + + Fix PL/Python functions returning composite types to accept a string + for their result value (Jan Urbanski) + + + + This case was accidentally broken by the 9.1 additions to allow a + composite result value to be supplied in other formats, such as + dictionaries. + + + + + + Fix potential access off the end of memory in psql's + expanded display (\x) mode (Peter Eisentraut) + + + + + + Fix several performance problems in pg_dump when + the database contains many objects (Jeff Janes, Tom Lane) + + + + pg_dump could get very slow if the database contained + many schemas, or if many objects are in dependency loops, or if there + are many owned sequences. + + + + + + Fix memory and file descriptor leaks in pg_restore + when reading a directory-format archive (Peter Eisentraut) + + + + + + Fix pg_upgrade for the case that a database stored in a + non-default tablespace contains a table in the cluster's default + tablespace (Bruce Momjian) + + + + + + In ecpg, fix rare memory leaks and possible overwrite + of one byte after the sqlca_t structure (Peter Eisentraut) + + + + + + Fix contrib/dblink's dblink_exec() to not leak + temporary database connections upon error (Tom Lane) + + + + + + Fix contrib/dblink to report the correct connection name in + error messages (Kyotaro Horiguchi) + + + + + + Fix contrib/vacuumlo to use multiple transactions when + dropping many large objects (Tim Lewis, Robert Haas, Tom Lane) + + + + This change avoids exceeding max_locks_per_transaction when + many objects need to be dropped. The behavior can be adjusted with the + new -l (limit) option. + + + + + + Update time zone data files to tzdata release 2012c + for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland + Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; + also historical corrections for Canada. + + + + + + + + + + Release 9.1.13 + + + Release Date + 2014-03-20 + + + + This release contains a variety of fixes from 9.1.12. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.13 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you are upgrading from a version earlier than 9.1.11, + see . + + + + + + Changes + + + + + + Restore GIN metapages unconditionally to avoid torn-page risk + (Heikki Linnakangas) + + + + Although this oversight could theoretically result in a corrupted + index, it is unlikely to have caused any problems in practice, since + the active part of a GIN metapage is smaller than a standard 512-byte + disk sector. + + + + + + Avoid race condition in checking transaction commit status during + receipt of a NOTIFY message (Marko Tiikkaja) + + + + This prevents a scenario wherein a sufficiently fast client might + respond to a notification before database updates made by the + notifier have become visible to the recipient. + + + + + + Allow regular-expression operators to be terminated early by query + cancel requests (Tom Lane) + + + + This prevents scenarios wherein a pathological regular expression + could lock up a server process uninterruptably for a long time. + + + + + + Remove incorrect code that tried to allow OVERLAPS with + single-element row arguments (Joshua Yanovski) + + + + This code never worked correctly, and since the case is neither + specified by the SQL standard nor documented, it seemed better to + remove it than fix it. + + + + + + Avoid getting more than AccessShareLock when de-parsing a + rule or view (Dean Rasheed) + + + + This oversight resulted in pg_dump unexpectedly + acquiring RowExclusiveLock locks on tables mentioned as + the targets of INSERT/UPDATE/DELETE + commands in rules. While usually harmless, that could interfere with + concurrent transactions that tried to acquire, for example, + ShareLock on those tables. + + + + + + Improve performance of index endpoint probes during planning (Tom Lane) + + + + This change fixes a significant performance problem that occurred + when there were many not-yet-committed rows at the end of the index, + which is a common situation for indexes on sequentially-assigned + values such as timestamps or sequence-generated identifiers. + + + + + + Fix walsender's failure to shut down cleanly when client + is pg_receivexlog (Fujii Masao) + + + + + + Fix test to see if hot standby connections can be allowed immediately + after a crash (Heikki Linnakangas) + + + + + + Prevent interrupts while reporting non-ERROR messages + (Tom Lane) + + + + This guards against rare server-process freezeups due to recursive + entry to syslog(), and perhaps other related problems. + + + + + + Fix memory leak in PL/Perl when returning a composite result, including + multiple-OUT-parameter cases (Alex Hunsaker) + + + + + + Prevent intermittent could not reserve shared memory region + failures on recent Windows versions (MauMau) + + + + + + Update time zone data files to tzdata release 2014a + for DST law changes in Fiji and Turkey, plus historical changes in + Israel and Ukraine. + + + + + + + + + + + + + Release 9.1.12 + + + Release Date + 2014-02-20 + + + + This release contains a variety of fixes from 9.1.11. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.12 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you are upgrading from a version earlier than 9.1.11, + see . + + + + + + Changes + + + + + + Shore up GRANT ... WITH ADMIN OPTION restrictions + (Noah Misch) + + + + Granting a role without ADMIN OPTION is supposed to + prevent the grantee from adding or removing members from the granted + role, but this restriction was easily bypassed by doing SET + ROLE first. The security impact is mostly that a role member can + revoke the access of others, contrary to the wishes of his grantor. + Unapproved role member additions are a lesser concern, since an + uncooperative role member could provide most of his rights to others + anyway by creating views or SECURITY DEFINER functions. + (CVE-2014-0060) + + + + + + Prevent privilege escalation via manual calls to PL validator + functions (Andres Freund) + + + + The primary role of PL validator functions is to be called implicitly + during CREATE FUNCTION, but they are also normal SQL + functions that a user can call explicitly. Calling a validator on + a function actually written in some other language was not checked + for and could be exploited for privilege-escalation purposes. + The fix involves adding a call to a privilege-checking function in + each validator function. Non-core procedural languages will also + need to make this change to their own validator functions, if any. + (CVE-2014-0061) + + + + + + Avoid multiple name lookups during table and index DDL + (Robert Haas, Andres Freund) + + + + If the name lookups come to different conclusions due to concurrent + activity, we might perform some parts of the DDL on a different table + than other parts. At least in the case of CREATE INDEX, + this can be used to cause the permissions checks to be performed + against a different table than the index creation, allowing for a + privilege escalation attack. + (CVE-2014-0062) + + + + + + Prevent buffer overrun with long datetime strings (Noah Misch) + + + + The MAXDATELEN constant was too small for the longest + possible value of type interval, allowing a buffer overrun + in interval_out(). Although the datetime input + functions were more careful about avoiding buffer overrun, the limit + was short enough to cause them to reject some valid inputs, such as + input containing a very long timezone name. The ecpg + library contained these vulnerabilities along with some of its own. + (CVE-2014-0063) + + + + + + Prevent buffer overrun due to integer overflow in size calculations + (Noah Misch, Heikki Linnakangas) + + + + Several functions, mostly type input functions, calculated an + allocation size without checking for overflow. If overflow did + occur, a too-small buffer would be allocated and then written past. + (CVE-2014-0064) + + + + + + Prevent overruns of fixed-size buffers + (Peter Eisentraut, Jozef Mlich) + + + + Use strlcpy() and related functions to provide a clear + guarantee that fixed-size buffers are not overrun. Unlike the + preceding items, it is unclear whether these cases really represent + live issues, since in most cases there appear to be previous + constraints on the size of the input string. Nonetheless it seems + prudent to silence all Coverity warnings of this type. + (CVE-2014-0065) + + + + + + Avoid crashing if crypt() returns NULL (Honza Horak, + Bruce Momjian) + + + + There are relatively few scenarios in which crypt() + could return NULL, but contrib/chkpass would crash + if it did. One practical case in which this could be an issue is + if libc is configured to refuse to execute unapproved + hashing algorithms (e.g., FIPS mode). + (CVE-2014-0066) + + + + + + Document risks of make check in the regression testing + instructions (Noah Misch, Tom Lane) + + + + Since the temporary server started by make check + uses trust authentication, another user on the same machine + could connect to it as database superuser, and then potentially + exploit the privileges of the operating-system user who started the + tests. A future release will probably incorporate changes in the + testing procedure to prevent this risk, but some public discussion is + needed first. So for the moment, just warn people against using + make check when there are untrusted users on the + same machine. + (CVE-2014-0067) + + + + + + Fix possible mis-replay of WAL records when some segments of a + relation aren't full size (Greg Stark, Tom Lane) + + + + The WAL update could be applied to the wrong page, potentially many + pages past where it should have been. Aside from corrupting data, + this error has been observed to result in significant bloat + of standby servers compared to their masters, due to updates being + applied far beyond where the end-of-file should have been. This + failure mode does not appear to be a significant risk during crash + recovery, only when initially synchronizing a standby created from a + base backup taken from a quickly-changing master. + + + + + + Fix bug in determining when recovery has reached consistency + (Tomonari Katsumata, Heikki Linnakangas) + + + + In some cases WAL replay would mistakenly conclude that the database + was already consistent at the start of replay, thus possibly allowing + hot-standby queries before the database was really consistent. Other + symptoms such as PANIC: WAL contains references to invalid + pages were also possible. + + + + + + Fix improper locking of btree index pages while replaying + a VACUUM operation in hot-standby mode (Andres Freund, + Heikki Linnakangas, Tom Lane) + + + + This error could result in PANIC: WAL contains references to + invalid pages failures. + + + + + + Ensure that insertions into non-leaf GIN index pages write a full-page + WAL record when appropriate (Heikki Linnakangas) + + + + The previous coding risked index corruption in the event of a + partial-page write during a system crash. + + + + + + When pause_at_recovery_target + and recovery_target_inclusive are both set, ensure the + target record is applied before pausing, not after (Heikki + Linnakangas) + + + + + + Fix race conditions during server process exit (Robert Haas) + + + + Ensure that signal handlers don't attempt to use the + process's MyProc pointer after it's no longer valid. + + + + + + Fix race conditions in walsender shutdown logic and walreceiver + SIGHUP signal handler (Tom Lane) + + + + + + Fix unsafe references to errno within error reporting + logic (Christian Kruse) + + + + This would typically lead to odd behaviors such as missing or + inappropriate HINT fields. + + + + + + Fix possible crashes from using ereport() too early + during server startup (Tom Lane) + + + + The principal case we've seen in the field is a crash if the server + is started in a directory it doesn't have permission to read. + + + + + + Clear retry flags properly in OpenSSL socket write + function (Alexander Kukushkin) + + + + This omission could result in a server lockup after unexpected loss + of an SSL-encrypted connection. + + + + + + Fix length checking for Unicode identifiers (U&"..." + syntax) containing escapes (Tom Lane) + + + + A spurious truncation warning would be printed for such identifiers + if the escaped form of the identifier was too long, but the + identifier actually didn't need truncation after de-escaping. + + + + + + Allow keywords that are type names to be used in lists of roles + (Stephen Frost) + + + + A previous patch allowed such keywords to be used without quoting + in places such as role identifiers; but it missed cases where a + list of role identifiers was permitted, such as DROP ROLE. + + + + + + Fix parser crash for EXISTS(SELECT * FROM + zero_column_table) (Tom Lane) + + + + + + Fix possible crash due to invalid plan for nested sub-selects, such + as WHERE (... x IN (SELECT ...) ...) IN (SELECT ...) + (Tom Lane) + + + + + + Ensure that ANALYZE creates statistics for a table column + even when all the values in it are too wide (Tom Lane) + + + + ANALYZE intentionally omits very wide values from its + histogram and most-common-values calculations, but it neglected to do + something sane in the case that all the sampled entries are too wide. + + + + + + In ALTER TABLE ... SET TABLESPACE, allow the database's + default tablespace to be used without a permissions check + (Stephen Frost) + + + + CREATE TABLE has always allowed such usage, + but ALTER TABLE didn't get the memo. + + + + + + Fix cannot accept a set error when some arms of + a CASE return a set and others don't (Tom Lane) + + + + + + Fix checks for all-zero client addresses in pgstat functions (Kevin + Grittner) + + + + + + Fix possible misclassification of multibyte characters by the text + search parser (Tom Lane) + + + + Non-ASCII characters could be misclassified when using C locale with + a multibyte encoding. On Cygwin, non-C locales could fail as well. + + + + + + Fix possible misbehavior in plainto_tsquery() + (Heikki Linnakangas) + + + + Use memmove() not memcpy() for copying + overlapping memory regions. There have been no field reports of + this actually causing trouble, but it's certainly risky. + + + + + + Fix placement of permissions checks in pg_start_backup() + and pg_stop_backup() (Andres Freund, Magnus Hagander) + + + + The previous coding might attempt to do catalog access when it + shouldn't. + + + + + + Accept SHIFT_JIS as an encoding name for locale checking + purposes (Tatsuo Ishii) + + + + + + Fix misbehavior of PQhost() on Windows (Fujii Masao) + + + + It should return localhost if no host has been specified. + + + + + + Improve error handling in libpq and psql + for failures during COPY TO STDOUT/FROM STDIN (Tom Lane) + + + + In particular this fixes an infinite loop that could occur in 9.2 and + up if the server connection was lost during COPY FROM + STDIN. Variants of that scenario might be possible in older + versions, or with other client applications. + + + + + + Fix possible incorrect printing of filenames + in pg_basebackup's verbose mode (Magnus Hagander) + + + + + + Avoid including tablespaces inside PGDATA twice in base backups + (Dimitri Fontaine, Magnus Hagander) + + + + + + Fix misaligned descriptors in ecpg (MauMau) + + + + + + In ecpg, handle lack of a hostname in the connection + parameters properly (Michael Meskes) + + + + + + Fix performance regression in contrib/dblink connection + startup (Joe Conway) + + + + Avoid an unnecessary round trip when client and server encodings match. + + + + + + In contrib/isn, fix incorrect calculation of the check + digit for ISMN values (Fabien Coelho) + + + + + + Ensure client-code-only installation procedure works as documented + (Peter Eisentraut) + + + + + + In Mingw and Cygwin builds, install the libpq DLL + in the bin directory (Andrew Dunstan) + + + + This duplicates what the MSVC build has long done. It should fix + problems with programs like psql failing to start + because they can't find the DLL. + + + + + + Avoid using the deprecated dllwrap tool in Cygwin builds + (Marco Atzeri) + + + + + + Don't generate plain-text HISTORY + and src/test/regress/README files anymore (Tom Lane) + + + + These text files duplicated the main HTML and PDF documentation + formats. The trouble involved in maintaining them greatly outweighs + the likely audience for plain-text format. Distribution tarballs + will still contain files by these names, but they'll just be stubs + directing the reader to consult the main documentation. + The plain-text INSTALL file will still be maintained, as + there is arguably a use-case for that. + + + + + + Update time zone data files to tzdata release 2013i + for DST law changes in Jordan and historical changes in Cuba. + + + + In addition, the zones Asia/Riyadh87, + Asia/Riyadh88, and Asia/Riyadh89 have been + removed, as they are no longer maintained by IANA, and never + represented actual civil timekeeping practice. + + + + + + + + + + Release 9.1.11 + + + Release Date + 2013-12-05 + + + + This release contains a variety of fixes from 9.1.10. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.11 + + + A dump/restore is not required for those running 9.1.X. + + + + However, this release corrects a number of potential data corruption + issues. See the first two changelog entries below to find out whether + your installation has been affected and what steps you can take if so. + + + + Also, if you are upgrading from a version earlier than 9.1.9, + see . + + + + + + Changes + + + + + + Fix VACUUM's tests to see whether it can + update relfrozenxid (Andres Freund) + + + + In some cases VACUUM (either manual or autovacuum) could + incorrectly advance a table's relfrozenxid value, + allowing tuples to escape freezing, causing those rows to become + invisible once 2^31 transactions have elapsed. The probability of + data loss is fairly low since multiple incorrect advancements would + need to happen before actual loss occurs, but it's not zero. Users + upgrading from releases 9.0.4 or 8.4.8 or earlier are not affected, but + all later versions contain the bug. + + + + The issue can be ameliorated by, after upgrading, vacuuming all tables + in all databases while having vacuum_freeze_table_age + set to zero. This will fix any latent corruption but will not be able + to fix all pre-existing data errors. However, an installation can be + presumed safe after performing this vacuuming if it has executed fewer + than 2^31 update transactions in its lifetime (check this with + SELECT txid_current() < 2^31). + + + + + + Fix initialization of pg_clog and pg_subtrans + during hot standby startup (Andres Freund, Heikki Linnakangas) + + + + This bug can cause data loss on standby servers at the moment they + start to accept hot-standby queries, by marking committed transactions + as uncommitted. The likelihood of such corruption is small unless, at + the time of standby startup, the primary server has executed many + updating transactions since its last checkpoint. Symptoms include + missing rows, rows that should have been deleted being still visible, + and obsolete versions of updated rows being still visible alongside + their newer versions. + + + + This bug was introduced in versions 9.3.0, 9.2.5, 9.1.10, and 9.0.14. + Standby servers that have only been running earlier releases are not + at risk. It's recommended that standby servers that have ever run any + of the buggy releases be re-cloned from the primary (e.g., with a new + base backup) after upgrading. + + + + + + Truncate pg_multixact contents during WAL replay + (Andres Freund) + + + + This avoids ever-increasing disk space consumption in standby servers. + + + + + + Fix race condition in GIN index posting tree page deletion (Heikki + Linnakangas) + + + + This could lead to transient wrong answers or query failures. + + + + + + Avoid flattening a subquery whose SELECT list contains a + volatile function wrapped inside a sub-SELECT (Tom Lane) + + + + This avoids unexpected results due to extra evaluations of the + volatile function. + + + + + + Fix planner's processing of non-simple-variable subquery outputs + nested within outer joins (Tom Lane) + + + + This error could lead to incorrect plans for queries involving + multiple levels of subqueries within JOIN syntax. + + + + + + Fix incorrect generation of optimized MIN()/MAX() plans for + inheritance trees (Tom Lane) + + + + The planner could fail in cases where the MIN()/MAX() argument was an + expression rather than a simple variable. + + + + + + Fix premature deletion of temporary files (Andres Freund) + + + + + + Fix possible read past end of memory in rule printing (Peter Eisentraut) + + + + + + Fix array slicing of int2vector and oidvector values + (Tom Lane) + + + + Expressions of this kind are now implicitly promoted to + regular int2 or oid arrays. + + + + + + Fix incorrect behaviors when using a SQL-standard, simple GMT offset + timezone (Tom Lane) + + + + In some cases, the system would use the simple GMT offset value when + it should have used the regular timezone setting that had prevailed + before the simple offset was selected. This change also causes + the timeofday function to honor the simple GMT offset + zone. + + + + + + Prevent possible misbehavior when logging translations of Windows + error codes (Tom Lane) + + + + + + Properly quote generated command lines in pg_ctl + (Naoya Anzai and Tom Lane) + + + + This fix applies only to Windows. + + + + + + Fix pg_dumpall to work when a source database + sets default_transaction_read_only + via ALTER DATABASE SET (Kevin Grittner) + + + + Previously, the generated script would fail during restore. + + + + + + Make ecpg search for quoted cursor names + case-sensitively (Zoltán Böszörményi) + + + + + + Fix ecpg's processing of lists of variables + declared varchar (Zoltán Böszörményi) + + + + + + Make contrib/lo defend against incorrect trigger definitions + (Marc Cousin) + + + + + + Update time zone data files to tzdata release 2013h + for DST law changes in Argentina, Brazil, Jordan, Libya, + Liechtenstein, Morocco, and Palestine. Also, new timezone + abbreviations WIB, WIT, WITA for Indonesia. + + + + + + + + + + Release 9.1.10 + + + Release Date + 2013-10-10 + + + + This release contains a variety of fixes from 9.1.9. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.10 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you are upgrading from a version earlier than 9.1.9, + see . + + + + + + Changes + + + + + + Prevent corruption of multi-byte characters when attempting to + case-fold identifiers (Andrew Dunstan) + + + + PostgreSQL case-folds non-ASCII characters only + when using a single-byte server encoding. + + + + + + Fix checkpoint memory leak in background writer when wal_level = + hot_standby (Naoya Anzai) + + + + + + Fix memory leak caused by lo_open() failure + (Heikki Linnakangas) + + + + + + Fix memory overcommit bug when work_mem is using more + than 24GB of memory (Stephen Frost) + + + + + + Serializable snapshot fixes (Kevin Grittner, Heikki Linnakangas) + + + + + + Fix deadlock bug in libpq when using SSL (Stephen Frost) + + + + + + Fix possible SSL state corruption in threaded libpq applications + (Nick Phillips, Stephen Frost) + + + + + + Properly compute row estimates for boolean columns containing many NULL + values (Andrew Gierth) + + + + Previously tests like col IS NOT TRUE and col IS + NOT FALSE did not properly factor in NULL values when estimating + plan costs. + + + + + + Prevent pushing down WHERE clauses into unsafe + UNION/INTERSECT subqueries (Tom Lane) + + + + Subqueries of a UNION or INTERSECT that + contain set-returning functions or volatile functions in their + SELECT lists could be improperly optimized, leading to + run-time errors or incorrect query results. + + + + + + Fix rare case of failed to locate grouping columns + planner failure (Tom Lane) + + + + + + Fix pg_dump of foreign tables with dropped columns (Andrew Dunstan) + + + + Previously such cases could cause a pg_upgrade error. + + + + + + Reorder pg_dump processing of extension-related + rules and event triggers (Joe Conway) + + + + + + Force dumping of extension tables if specified by pg_dump + -t or -n (Joe Conway) + + + + + + Improve view dumping code's handling of dropped columns in referenced + tables (Tom Lane) + + + + + + Fix pg_restore -l with the directory archive to display + the correct format name (Fujii Masao) + + + + + + Properly record index comments created using UNIQUE + and PRIMARY KEY syntax (Andres Freund) + + + + This fixes a parallel pg_restore failure. + + + + + + Properly guarantee transmission of WAL files before clean switchover + (Fujii Masao) + + + + Previously, the streaming replication connection might close before all + WAL files had been replayed on the standby. + + + + + + Fix WAL segment timeline handling during recovery (Mitsumasa Kondo, + Heikki Linnakangas) + + + + WAL file recycling during standby recovery could lead to premature + recovery completion, resulting in data loss. + + + + + + Fix REINDEX TABLE and REINDEX DATABASE + to properly revalidate constraints and mark invalidated indexes as + valid (Noah Misch) + + + + REINDEX INDEX has always worked properly. + + + + + + Fix possible deadlock during concurrent CREATE INDEX + CONCURRENTLY operations (Tom Lane) + + + + + + Fix regexp_matches() handling of zero-length matches + (Jeevan Chalke) + + + + Previously, zero-length matches like '^' could return too many matches. + + + + + + Fix crash for overly-complex regular expressions (Heikki Linnakangas) + + + + + + Fix regular expression match failures for back references combined with + non-greedy quantifiers (Jeevan Chalke) + + + + + + Prevent CREATE FUNCTION from checking SET + variables unless function body checking is enabled (Tom Lane) + + + + + + Allow ALTER DEFAULT PRIVILEGES to operate on schemas + without requiring CREATE permission (Tom Lane) + + + + + + Loosen restriction on keywords used in queries (Tom Lane) + + + + Specifically, lessen keyword restrictions for role names, language + names, EXPLAIN and COPY options, and + SET values. This allows COPY ... (FORMAT + BINARY) to work as expected; previously BINARY needed + to be quoted. + + + + + + Fix pgp_pub_decrypt() so it works for secret keys with + passwords (Marko Kreen) + + + + + + Make pg_upgrade use pg_dump + --quote-all-identifiers to avoid problems with keyword changes + between releases (Tom Lane) + + + + + + Remove rare inaccurate warning during vacuum of index-less tables + (Heikki Linnakangas) + + + + + + Ensure that VACUUM ANALYZE still runs the ANALYZE phase + if its attempt to truncate the file is cancelled due to lock conflicts + (Kevin Grittner) + + + + + + Avoid possible failure when performing transaction control commands (e.g + ROLLBACK) in prepared queries (Tom Lane) + + + + + + Ensure that floating-point data input accepts standard spellings + of infinity on all platforms (Tom Lane) + + + + The C99 standard says that allowable spellings are inf, + +inf, -inf, infinity, + +infinity, and -infinity. Make sure we + recognize these even if the platform's strtod function + doesn't. + + + + + + Expand ability to compare rows to records and arrays (Rafal Rzepecki, + Tom Lane) + + + + + + Update time zone data files to tzdata release 2013d + for DST law changes in Israel, Morocco, Palestine, and Paraguay. + Also, historical zone data corrections for Macquarie Island. + + + + + + + + + + Release 9.1.9 + + + Release Date + 2013-04-04 + + + + This release contains a variety of fixes from 9.1.8. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.9 + + + A dump/restore is not required for those running 9.1.X. + + + + However, this release corrects several errors in management of GiST + indexes. After installing this update, it is advisable to + REINDEX any GiST indexes that meet one or more of the + conditions described below. + + + + Also, if you are upgrading from a version earlier than 9.1.6, + see . + + + + + + Changes + + + + + + Fix insecure parsing of server command-line switches (Mitsumasa + Kondo, Kyotaro Horiguchi) + + + + A connection request containing a database name that begins with + - could be crafted to damage or destroy + files within the server's data directory, even if the request is + eventually rejected. (CVE-2013-1899) + + + + + + Reset OpenSSL randomness state in each postmaster child process + (Marko Kreen) + + + + This avoids a scenario wherein random numbers generated by + contrib/pgcrypto functions might be relatively easy for + another database user to guess. The risk is only significant when + the postmaster is configured with ssl = on + but most connections don't use SSL encryption. (CVE-2013-1900) + + + + + + Make REPLICATION privilege checks test current user not authenticated + user (Noah Misch) + + + + An unprivileged database user could exploit this mistake to call + pg_start_backup() or pg_stop_backup(), + thus possibly interfering with creation of routine backups. + (CVE-2013-1901) + + + + + + Fix GiST indexes to not use fuzzy geometric comparisons when + it's not appropriate to do so (Alexander Korotkov) + + + + The core geometric types perform comparisons using fuzzy + equality, but gist_box_same must do exact comparisons, + else GiST indexes using it might become inconsistent. After installing + this update, users should REINDEX any GiST indexes on + box, polygon, circle, or point + columns, since all of these use gist_box_same. + + + + + + Fix erroneous range-union and penalty logic in GiST indexes that use + contrib/btree_gist for variable-width data types, that is + text, bytea, bit, and numeric + columns (Tom Lane) + + + + These errors could result in inconsistent indexes in which some keys + that are present would not be found by searches, and also in useless + index bloat. Users are advised to REINDEX such indexes + after installing this update. + + + + + + Fix bugs in GiST page splitting code for multi-column indexes + (Tom Lane) + + + + These errors could result in inconsistent indexes in which some keys + that are present would not be found by searches, and also in indexes + that are unnecessarily inefficient to search. Users are advised to + REINDEX multi-column GiST indexes after installing this + update. + + + + + + Fix gist_point_consistent + to handle fuzziness consistently (Alexander Korotkov) + + + + Index scans on GiST indexes on point columns would sometimes + yield results different from a sequential scan, because + gist_point_consistent disagreed with the underlying + operator code about whether to do comparisons exactly or fuzzily. + + + + + + Fix buffer leak in WAL replay (Heikki Linnakangas) + + + + This bug could result in incorrect local pin count errors + during replay, making recovery impossible. + + + + + + Fix race condition in DELETE RETURNING (Tom Lane) + + + + Under the right circumstances, DELETE RETURNING could + attempt to fetch data from a shared buffer that the current process + no longer has any pin on. If some other process changed the buffer + meanwhile, this would lead to garbage RETURNING output, or + even a crash. + + + + + + Fix infinite-loop risk in regular expression compilation (Tom Lane, + Don Porter) + + + + + + Fix potential null-pointer dereference in regular expression compilation + (Tom Lane) + + + + + + Fix to_char() to use ASCII-only case-folding rules where + appropriate (Tom Lane) + + + + This fixes misbehavior of some template patterns that should be + locale-independent, but mishandled I and + i in Turkish locales. + + + + + + Fix unwanted rejection of timestamp 1999-12-31 24:00:00 + (Tom Lane) + + + + + + Fix logic error when a single transaction does UNLISTEN + then LISTEN (Tom Lane) + + + + The session wound up not listening for notify events at all, though it + surely should listen in this case. + + + + + + Fix possible planner crash after columns have been added to a view + that's depended on by another view (Tom Lane) + + + + + + Remove useless picksplit doesn't support secondary split log + messages (Josh Hansen, Tom Lane) + + + + This message seems to have been added in expectation of code that was + never written, and probably never will be, since GiST's default + handling of secondary splits is actually pretty good. So stop nagging + end users about it. + + + + + + Fix possible failure to send a session's last few transaction + commit/abort counts to the statistics collector (Tom Lane) + + + + + + Eliminate memory leaks in PL/Perl's spi_prepare() function + (Alex Hunsaker, Tom Lane) + + + + + + Fix pg_dumpall to handle database names containing + = correctly (Heikki Linnakangas) + + + + + + Avoid crash in pg_dump when an incorrect connection + string is given (Heikki Linnakangas) + + + + + + Ignore invalid indexes in pg_dump and + pg_upgrade (Michael Paquier, Bruce Momjian) + + + + Dumping invalid indexes can cause problems at restore time, for example + if the reason the index creation failed was because it tried to enforce + a uniqueness condition not satisfied by the table's data. Also, if the + index creation is in fact still in progress, it seems reasonable to + consider it to be an uncommitted DDL change, which + pg_dump wouldn't be expected to dump anyway. + pg_upgrade now also skips invalid indexes rather than + failing. + + + + + + In pg_basebackup, include only the current server + version's subdirectory when backing up a tablespace (Heikki + Linnakangas) + + + + + + Add a server version check in pg_basebackup and + pg_receivexlog, so they fail cleanly with version + combinations that won't work (Heikki Linnakangas) + + + + + + Fix contrib/pg_trgm's similarity() function + to return zero for trigram-less strings (Tom Lane) + + + + Previously it returned NaN due to internal division by zero. + + + + + + Update time zone data files to tzdata release 2013b + for DST law changes in Chile, Haiti, Morocco, Paraguay, and some + Russian areas. Also, historical zone data corrections for numerous + places. + + + + Also, update the time zone abbreviation files for recent changes in + Russia and elsewhere: CHOT, GET, + IRKT, KGT, KRAT, MAGT, + MAWT, MSK, NOVT, OMST, + TKT, VLAT, WST, YAKT, + YEKT now follow their current meanings, and + VOLT (Europe/Volgograd) and MIST + (Antarctica/Macquarie) are added to the default abbreviations list. + + + + + + + + + + Release 9.1.8 + + + Release Date + 2013-02-07 + + + + This release contains a variety of fixes from 9.1.7. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.8 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you are upgrading from a version earlier than 9.1.6, + see . + + + + + + Changes + + + + + + Prevent execution of enum_recv from SQL (Tom Lane) + + + + The function was misdeclared, allowing a simple SQL command to crash the + server. In principle an attacker might be able to use it to examine the + contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP) + for reporting this issue. (CVE-2013-0255) + + + + + + Fix multiple problems in detection of when a consistent database + state has been reached during WAL replay (Fujii Masao, Heikki + Linnakangas, Simon Riggs, Andres Freund) + + + + + + Update minimum recovery point when truncating a relation file (Heikki + Linnakangas) + + + + Once data has been discarded, it's no longer safe to stop recovery at + an earlier point in the timeline. + + + + + + Fix recycling of WAL segments after changing recovery target timeline + (Heikki Linnakangas) + + + + + + Fix missing cancellations in hot standby mode (Noah Misch, Simon Riggs) + + + + The need to cancel conflicting hot-standby queries would sometimes be + missed, allowing those queries to see inconsistent data. + + + + + + Prevent recovery pause feature from pausing before users can connect + (Tom Lane) + + + + + + Fix SQL grammar to allow subscripting or field selection from a + sub-SELECT result (Tom Lane) + + + + + + Fix performance problems with autovacuum truncation in busy workloads + (Jan Wieck) + + + + Truncation of empty pages at the end of a table requires exclusive + lock, but autovacuum was coded to fail (and release the table lock) + when there are conflicting lock requests. Under load, it is easily + possible that truncation would never occur, resulting in table bloat. + Fix by performing a partial truncation, releasing the lock, then + attempting to re-acquire the lock and continue. This fix also greatly + reduces the average time before autovacuum releases the lock after a + conflicting request arrives. + + + + + + Protect against race conditions when scanning + pg_tablespace (Stephen Frost, Tom Lane) + + + + CREATE DATABASE and DROP DATABASE could + misbehave if there were concurrent updates of + pg_tablespace entries. + + + + + + Prevent DROP OWNED from trying to drop whole databases or + tablespaces (Álvaro Herrera) + + + + For safety, ownership of these objects must be reassigned, not dropped. + + + + + + Fix error in vacuum_freeze_table_age + implementation (Andres Freund) + + + + In installations that have existed for more than vacuum_freeze_min_age + transactions, this mistake prevented autovacuum from using partial-table + scans, so that a full-table scan would always happen instead. + + + + + + Prevent misbehavior when a RowExpr or XmlExpr + is parse-analyzed twice (Andres Freund, Tom Lane) + + + + This mistake could be user-visible in contexts such as + CREATE TABLE LIKE INCLUDING INDEXES. + + + + + + Improve defenses against integer overflow in hashtable sizing + calculations (Jeff Davis) + + + + + + Fix failure to ignore leftover temporary tables after a server crash + (Tom Lane) + + + + + + Reject out-of-range dates in to_date() (Hitoshi Harada) + + + + + + Fix pg_extension_config_dump() to handle + extension-update cases properly (Tom Lane) + + + + This function will now replace any existing entry for the target + table, making it usable in extension update scripts. + + + + + + Fix PL/Python's handling of functions used as triggers on multiple + tables (Andres Freund) + + + + + + Ensure that non-ASCII prompt strings are translated to the correct + code page on Windows (Alexander Law, Noah Misch) + + + + This bug affected psql and some other client programs. + + + + + + Fix possible crash in psql's \? command + when not connected to a database (Meng Qingzhong) + + + + + + Fix possible error if a relation file is removed while + pg_basebackup is running (Heikki Linnakangas) + + + + + + Make pg_dump exclude data of unlogged tables when + running on a hot-standby server (Magnus Hagander) + + + + This would fail anyway because the data is not available on the standby + server, so it seems most convenient to assume + + + + + + Fix pg_upgrade to deal with invalid indexes safely + (Bruce Momjian) + + + + + + Fix one-byte buffer overrun in libpq's + PQprintTuples (Xi Wang) + + + + This ancient function is not used anywhere by + PostgreSQL itself, but it might still be used by some + client code. + + + + + + Make ecpglib use translated messages properly + (Chen Huajun) + + + + + + Properly install ecpg_compat and + pgtypes libraries on MSVC (Jiang Guiqing) + + + + + + Include our version of isinf() in + libecpg if it's not provided by the system + (Jiang Guiqing) + + + + + + Rearrange configure's tests for supplied functions so it is not + fooled by bogus exports from libedit/libreadline (Christoph Berg) + + + + + + Ensure Windows build number increases over time (Magnus Hagander) + + + + + + Make pgxs build executables with the right + .exe suffix when cross-compiling for Windows + (Zoltan Boszormenyi) + + + + + + Add new timezone abbreviation FET (Tom Lane) + + + + This is now used in some eastern-European time zones. + + + + + + + + + + Release 9.1.7 + + + Release Date + 2012-12-06 + + + + This release contains a variety of fixes from 9.1.6. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.7 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you are upgrading from a version earlier than 9.1.6, + see . + + + + + + Changes + + + + + + Fix multiple bugs associated with CREATE INDEX + CONCURRENTLY (Andres Freund, Tom Lane) + + + + Fix CREATE INDEX CONCURRENTLY to use + in-place updates when changing the state of an index's + pg_index row. This prevents race conditions that could + cause concurrent sessions to miss updating the target index, thus + resulting in corrupt concurrently-created indexes. + + + + Also, fix various other operations to ensure that they ignore + invalid indexes resulting from a failed CREATE INDEX + CONCURRENTLY command. The most important of these is + VACUUM, because an auto-vacuum could easily be launched + on the table before corrective action can be taken to fix or remove + the invalid index. + + + + + + Fix buffer locking during WAL replay (Tom Lane) + + + + The WAL replay code was insufficiently careful about locking buffers + when replaying WAL records that affect more than one page. This could + result in hot standby queries transiently seeing inconsistent states, + resulting in wrong answers or unexpected failures. + + + + + + Fix an error in WAL generation logic for GIN indexes (Tom Lane) + + + + This could result in index corruption, if a torn-page failure occurred. + + + + + + Properly remove startup process's virtual XID lock when promoting a + hot standby server to normal running (Simon Riggs) + + + + This oversight could prevent subsequent execution of certain + operations such as CREATE INDEX CONCURRENTLY. + + + + + + Avoid bogus out-of-sequence timeline ID errors in standby + mode (Heikki Linnakangas) + + + + + + Prevent the postmaster from launching new child processes after it's + received a shutdown signal (Tom Lane) + + + + This mistake could result in shutdown taking longer than it should, or + even never completing at all without additional user action. + + + + + + Avoid corruption of internal hash tables when out of memory + (Hitoshi Harada) + + + + + + Prevent file descriptors for dropped tables from being held open past + transaction end (Tom Lane) + + + + This should reduce problems with long-since-dropped tables continuing + to occupy disk space. + + + + + + Prevent database-wide crash and restart when a new child process is + unable to create a pipe for its latch (Tom Lane) + + + + Although the new process must fail, there is no good reason to force a + database-wide restart, so avoid that. This improves robustness when + the kernel is nearly out of file descriptors. + + + + + + Fix planning of non-strict equivalence clauses above outer joins + (Tom Lane) + + + + The planner could derive incorrect constraints from a clause equating + a non-strict construct to something else, for example + WHERE COALESCE(foo, 0) = 0 + when foo is coming from the nullable side of an outer join. + + + + + + Fix SELECT DISTINCT with index-optimized + MIN/MAX on an inheritance tree (Tom Lane) + + + + The planner would fail with failed to re-find MinMaxAggInfo + record given this combination of factors. + + + + + + Improve planner's ability to prove exclusion constraints from + equivalence classes (Tom Lane) + + + + + + Fix partial-row matching in hashed subplans to handle cross-type cases + correctly (Tom Lane) + + + + This affects multicolumn NOT IN subplans, such as + WHERE (a, b) NOT IN (SELECT x, y FROM ...) + when for instance b and y are int4 + and int8 respectively. This mistake led to wrong answers + or crashes depending on the specific datatypes involved. + + + + + + Acquire buffer lock when re-fetching the old tuple for an + AFTER ROW UPDATE/DELETE trigger (Andres Freund) + + + + In very unusual circumstances, this oversight could result in passing + incorrect data to a trigger WHEN condition, or to the + precheck logic for a foreign-key enforcement trigger. That could + result in a crash, or in an incorrect decision about whether to + fire the trigger. + + + + + + Fix ALTER COLUMN TYPE to handle inherited check + constraints properly (Pavan Deolasee) + + + + This worked correctly in pre-8.4 releases, and now works correctly + in 8.4 and later. + + + + + + Fix ALTER EXTENSION SET SCHEMA's failure to move some + subsidiary objects into the new schema (Álvaro Herrera, Dimitri + Fontaine) + + + + + + Fix REASSIGN OWNED to handle grants on tablespaces + (Álvaro Herrera) + + + + + + Ignore incorrect pg_attribute entries for system + columns for views (Tom Lane) + + + + Views do not have any system columns. However, we forgot to + remove such entries when converting a table to a view. That's fixed + properly for 9.3 and later, but in previous branches we need to defend + against existing mis-converted views. + + + + + + Fix rule printing to dump INSERT INTO table + DEFAULT VALUES correctly (Tom Lane) + + + + + + Guard against stack overflow when there are too many + UNION/INTERSECT/EXCEPT clauses + in a query (Tom Lane) + + + + + + Prevent platform-dependent failures when dividing the minimum possible + integer value by -1 (Xi Wang, Tom Lane) + + + + + + Fix possible access past end of string in date parsing + (Hitoshi Harada) + + + + + + Fix failure to advance XID epoch if XID wraparound happens during a + checkpoint and wal_level is hot_standby + (Tom Lane, Andres Freund) + + + + While this mistake had no particular impact on + PostgreSQL itself, it was bad for + applications that rely on txid_current() and related + functions: the TXID value would appear to go backwards. + + + + + + Fix display of + pg_stat_replication.sync_state at a + page boundary (Kyotaro Horiguchi) + + + + + + Produce an understandable error message if the length of the path name + for a Unix-domain socket exceeds the platform-specific limit + (Tom Lane, Andrew Dunstan) + + + + Formerly, this would result in something quite unhelpful, such as + Non-recoverable failure in name resolution. + + + + + + Fix memory leaks when sending composite column values to the client + (Tom Lane) + + + + + + Make pg_ctl more robust about reading the + postmaster.pid file (Heikki Linnakangas) + + + + Fix race conditions and possible file descriptor leakage. + + + + + + Fix possible crash in psql if incorrectly-encoded data + is presented and the client_encoding setting is a + client-only encoding, such as SJIS (Jiang Guiqing) + + + + + + Make pg_dump dump SEQUENCE SET items in + the data not pre-data section of the archive (Tom Lane) + + + + This change fixes dumping of sequences that are marked as extension + configuration tables. + + + + + + Fix bugs in the restore.sql script emitted by + pg_dump in tar output format (Tom Lane) + + + + The script would fail outright on tables whose names include + upper-case characters. Also, make the script capable of restoring + data in + + + + + Fix pg_restore to accept POSIX-conformant + tar files (Brian Weaver, Tom Lane) + + + + The original coding of pg_dump's tar + output mode produced files that are not fully conformant with the + POSIX standard. This has been corrected for version 9.3. This + patch updates previous branches so that they will accept both the + incorrect and the corrected formats, in hopes of avoiding + compatibility problems when 9.3 comes out. + + + + + + Fix tar files emitted by pg_basebackup to + be POSIX conformant (Brian Weaver, Tom Lane) + + + + + + Fix pg_resetxlog to locate postmaster.pid + correctly when given a relative path to the data directory (Tom Lane) + + + + This mistake could lead to pg_resetxlog not noticing + that there is an active postmaster using the data directory. + + + + + + Fix libpq's lo_import() and + lo_export() functions to report file I/O errors properly + (Tom Lane) + + + + + + Fix ecpg's processing of nested structure pointer + variables (Muhammad Usama) + + + + + + Fix ecpg's ecpg_get_data function to + handle arrays properly (Michael Meskes) + + + + + + Make contrib/pageinspect's btree page inspection + functions take buffer locks while examining pages (Tom Lane) + + + + + + Ensure that make install for an extension creates the + extension installation directory (Cédric Villemain) + + + + Previously, this step was missed if MODULEDIR was set in + the extension's Makefile. + + + + + + Fix pgxs support for building loadable modules on AIX + (Tom Lane) + + + + Building modules outside the original source tree didn't work on AIX. + + + + + + Update time zone data files to tzdata release 2012j + for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western + Samoa, and portions of Brazil. + + + + + + + + + + Release 9.1.6 + + + Release Date + 2012-09-24 + + + + This release contains a variety of fixes from 9.1.5. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.6 + + + A dump/restore is not required for those running 9.1.X. + + + + However, you may need to perform REINDEX operations to + recover from the effects of the data corruption bug described in the + first changelog item below. + + + + Also, if you are upgrading from a version earlier than 9.1.4, + see . + + + + + + Changes + + + + + + Fix persistence marking of shared buffers during WAL replay + (Jeff Davis) + + + + This mistake can result in buffers not being written out during + checkpoints, resulting in data corruption if the server later crashes + without ever having written those buffers. Corruption can occur on + any server following crash recovery, but it is significantly more + likely to occur on standby slave servers since those perform much + more WAL replay. There is a low probability of corruption of btree + and GIN indexes. There is a much higher probability of corruption of + table visibility maps. Fortunately, visibility maps are + non-critical data in 9.1, so the worst consequence of such corruption + in 9.1 installations is transient inefficiency of vacuuming. Table + data proper cannot be corrupted by this bug. + + + + While no index corruption due to this bug is known to have occurred + in the field, as a precautionary measure it is recommended that + production installations REINDEX all btree and GIN + indexes at a convenient time after upgrading to 9.1.6. + + + + Also, if you intend to do an in-place upgrade to 9.2.X, before doing + so it is recommended to perform a VACUUM of all tables + while having vacuum_freeze_table_age + set to zero. This will ensure that any lingering wrong data in the + visibility maps is corrected before 9.2.X can depend on it. vacuum_cost_delay + can be adjusted to reduce the performance impact of vacuuming, while + causing it to take longer to finish. + + + + + + Fix planner's assignment of executor parameters, and fix executor's + rescan logic for CTE plan nodes (Tom Lane) + + + + These errors could result in wrong answers from queries that scan the + same WITH subquery multiple times. + + + + + + Fix misbehavior when default_transaction_isolation + is set to serializable (Kevin Grittner, Tom Lane, Heikki + Linnakangas) + + + + Symptoms include crashes at process start on Windows, and crashes in + hot standby operation. + + + + + + Improve selectivity estimation for text search queries involving + prefixes, i.e. word:* patterns (Tom Lane) + + + + + + + + + Improve page-splitting decisions in GiST indexes (Alexander Korotkov, + Robert Haas, Tom Lane) + + + + Multi-column GiST indexes might suffer unexpected bloat due to this + error. + + + + + + Fix cascading privilege revoke to stop if privileges are still held + (Tom Lane) + + + + If we revoke a grant option from some role X, but + X still holds that option via a grant from someone + else, we should not recursively revoke the corresponding privilege + from role(s) Y that X had granted it + to. + + + + + + Disallow extensions from containing the schema they are assigned to + (Thom Brown) + + + + This situation creates circular dependencies that confuse + pg_dump and probably other things. It's confusing + for humans too, so disallow it. + + + + + + Improve error messages for Hot Standby misconfiguration errors + (Gurjeet Singh) + + + + + + Make configure probe for mbstowcs_l (Tom + Lane) + + + + This fixes build failures on some versions of AIX. + + + + + + Fix handling of SIGFPE when PL/Perl is in use (Andres Freund) + + + + Perl resets the process's SIGFPE handler to + SIG_IGN, which could result in crashes later on. Restore + the normal Postgres signal handler after initializing PL/Perl. + + + + + + Prevent PL/Perl from crashing if a recursive PL/Perl function is + redefined while being executed (Tom Lane) + + + + + + Work around possible misoptimization in PL/Perl (Tom Lane) + + + + Some Linux distributions contain an incorrect version of + pthread.h that results in incorrect compiled code in + PL/Perl, leading to crashes if a PL/Perl function calls another one + that throws an error. + + + + + + Fix bugs in contrib/pg_trgm's LIKE pattern + analysis code (Fujii Masao) + + + + LIKE queries using a trigram index could produce wrong + results if the pattern contained LIKE escape characters. + + + + + + Fix pg_upgrade's handling of line endings on Windows + (Andrew Dunstan) + + + + Previously, pg_upgrade might add or remove carriage + returns in places such as function bodies. + + + + + + On Windows, make pg_upgrade use backslash path + separators in the scripts it emits (Andrew Dunstan) + + + + + + Remove unnecessary dependency on pg_config from + pg_upgrade (Peter Eisentraut) + + + + + + Update time zone data files to tzdata release 2012f + for DST law changes in Fiji + + + + + + + + + + Release 9.1.5 + + + Release Date + 2012-08-17 + + + + This release contains a variety of fixes from 9.1.4. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.5 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you are upgrading from a version earlier than 9.1.4, + see . + + + + + + Changes + + + + + + Prevent access to external files/URLs via XML entity references + (Noah Misch, Tom Lane) + + + + xml_parse() would attempt to fetch external files or + URLs as needed to resolve DTD and entity references in an XML value, + thus allowing unprivileged database users to attempt to fetch data + with the privileges of the database server. While the external data + wouldn't get returned directly to the user, portions of it could be + exposed in error messages if the data didn't parse as valid XML; and + in any case the mere ability to check existence of a file might be + useful to an attacker. (CVE-2012-3489) + + + + + + Prevent access to external files/URLs via contrib/xml2's + xslt_process() (Peter Eisentraut) + + + + libxslt offers the ability to read and write both + files and URLs through stylesheet commands, thus allowing + unprivileged database users to both read and write data with the + privileges of the database server. Disable that through proper use + of libxslt's security options. (CVE-2012-3488) + + + + Also, remove xslt_process()'s ability to fetch documents + and stylesheets from external files/URLs. While this was a + documented feature, it was long regarded as a bad idea. + The fix for CVE-2012-3489 broke that capability, and rather than + expend effort on trying to fix it, we're just going to summarily + remove it. + + + + + + Prevent too-early recycling of btree index pages (Noah Misch) + + + + When we allowed read-only transactions to skip assigning XIDs, we + introduced the possibility that a deleted btree page could be + recycled while a read-only transaction was still in flight to it. + This would result in incorrect index search results. The probability + of such an error occurring in the field seems very low because of the + timing requirements, but nonetheless it should be fixed. + + + + + + Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane) + + + + If ALTER SEQUENCE was executed on a freshly created or + reset sequence, and then precisely one nextval() call + was made on it, and then the server crashed, WAL replay would restore + the sequence to a state in which it appeared that no + nextval() had been done, thus allowing the first + sequence value to be returned again by the next + nextval() call. In particular this could manifest for + serial columns, since creation of a serial column's sequence + includes an ALTER SEQUENCE OWNED BY step. + + + + + + Fix race condition in enum-type value comparisons (Robert + Haas, Tom Lane) + + + + Comparisons could fail when encountering an enum value added since + the current query started. + + + + + + Fix txid_current() to report the correct epoch when not + in hot standby (Heikki Linnakangas) + + + + This fixes a regression introduced in the previous minor release. + + + + + + Prevent selection of unsuitable replication connections as + the synchronous standby (Fujii Masao) + + + + The master might improperly choose pseudo-servers such as + pg_receivexlog or pg_basebackup + as the synchronous standby, and then wait indefinitely for them. + + + + + + Fix bug in startup of Hot Standby when a master transaction has many + subtransactions (Andres Freund) + + + + This mistake led to failures reported as out-of-order XID + insertion in KnownAssignedXids. + + + + + + Ensure the backup_label file is fsync'd after + pg_start_backup() (Dave Kerr) + + + + + + Fix timeout handling in walsender processes (Tom Lane) + + + + WAL sender background processes neglected to establish a + SIGALRM handler, meaning they would wait forever in + some corner cases where a timeout ought to happen. + + + + + + Wake walsenders after each background flush by walwriter (Andres + Freund, Simon Riggs) + + + + This greatly reduces replication delay when the workload contains + only asynchronously-committed transactions. + + + + + + Fix LISTEN/NOTIFY to cope better with I/O + problems, such as out of disk space (Tom Lane) + + + + After a write failure, all subsequent attempts to send more + NOTIFY messages would fail with messages like + Could not read from file "pg_notify/nnnn" at + offset nnnnn: Success. + + + + + + Only allow autovacuum to be auto-canceled by a directly blocked + process (Tom Lane) + + + + The original coding could allow inconsistent behavior in some cases; + in particular, an autovacuum could get canceled after less than + deadlock_timeout grace period. + + + + + + Improve logging of autovacuum cancels (Robert Haas) + + + + + + Fix log collector so that log_truncate_on_rotation works + during the very first log rotation after server start (Tom Lane) + + + + + + Fix WITH attached to a nested set operation + (UNION/INTERSECT/EXCEPT) + (Tom Lane) + + + + + + Ensure that a whole-row reference to a subquery doesn't include any + extra GROUP BY or ORDER BY columns (Tom Lane) + + + + + + Fix dependencies generated during ALTER TABLE ... ADD + CONSTRAINT USING INDEX (Tom Lane) + + + + This command left behind a redundant pg_depend entry + for the index, which could confuse later operations, notably + ALTER TABLE ... ALTER COLUMN TYPE on one of the indexed + columns. + + + + + + Fix REASSIGN OWNED to work on extensions (Alvaro Herrera) + + + + + + Disallow copying whole-row references in CHECK + constraints and index definitions during CREATE TABLE + (Tom Lane) + + + + This situation can arise in CREATE TABLE with + LIKE or INHERITS. The copied whole-row + variable was incorrectly labeled with the row type of the original + table not the new one. Rejecting the case seems reasonable for + LIKE, since the row types might well diverge later. For + INHERITS we should ideally allow it, with an implicit + coercion to the parent table's row type; but that will require more + work than seems safe to back-patch. + + + + + + Fix memory leak in ARRAY(SELECT ...) subqueries (Heikki + Linnakangas, Tom Lane) + + + + + + Fix planner to pass correct collation to operator selectivity + estimators (Tom Lane) + + + + This was not previously required by any core selectivity estimation + function, but third-party code might need it. + + + + + + Fix extraction of common prefixes from regular expressions (Tom Lane) + + + + The code could get confused by quantified parenthesized + subexpressions, such as ^(foo)?bar. This would lead to + incorrect index optimization of searches for such patterns. + + + + + + Fix bugs with parsing signed + hh:mm and + hh:mm:ss + fields in interval constants (Amit Kapila, Tom Lane) + + + + + + Fix pg_dump to better handle views containing partial + GROUP BY lists (Tom Lane) + + + + A view that lists only a primary key column in GROUP BY, + but uses other table columns as if they were grouped, gets marked as + depending on the primary key. Improper handling of such primary key + dependencies in pg_dump resulted in poorly-ordered + dumps, which at best would be inefficient to restore and at worst + could result in outright failure of a parallel + pg_restore run. + + + + + + In PL/Perl, avoid setting UTF8 flag when in SQL_ASCII encoding + (Alex Hunsaker, Kyotaro Horiguchi, Alvaro Herrera) + + + + + + Use Postgres' encoding conversion functions, not Python's, when + converting a Python Unicode string to the server encoding in + PL/Python (Jan Urbanski) + + + + This avoids some corner-case problems, notably that Python doesn't + support all the encodings Postgres does. A notable functional change + is that if the server encoding is SQL_ASCII, you will get the UTF-8 + representation of the string; formerly, any non-ASCII characters in + the string would result in an error. + + + + + + Fix mapping of PostgreSQL encodings to Python encodings in PL/Python + (Jan Urbanski) + + + + + + Report errors properly in contrib/xml2's + xslt_process() (Tom Lane) + + + + + + Update time zone data files to tzdata release 2012e + for DST law changes in Morocco and Tokelau + + + + + + + + + + Release 9.1.4 + + + Release Date + 2012-06-04 + + + + This release contains a variety of fixes from 9.1.3. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.4 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you use the citext data type, and you upgraded + from a previous major release by running pg_upgrade, + you should run CREATE EXTENSION citext FROM unpackaged + to avoid collation-related failures in citext operations. + The same is necessary if you restore a dump from a pre-9.1 database + that contains an instance of the citext data type. + If you've already run the CREATE EXTENSION command before + upgrading to 9.1.4, you will instead need to do manual catalog updates + as explained in the third changelog item below. + + + + Also, if you are upgrading from a version earlier than 9.1.2, + see . + + + + + + Changes + + + + + + Fix incorrect password transformation in + contrib/pgcrypto's DES crypt() function + (Solar Designer) + + + + If a password string contained the byte value 0x80, the + remainder of the password was ignored, causing the password to be much + weaker than it appeared. With this fix, the rest of the string is + properly included in the DES hash. Any stored password values that are + affected by this bug will thus no longer match, so the stored values may + need to be updated. (CVE-2012-2143) + + + + + + Ignore SECURITY DEFINER and SET attributes for + a procedural language's call handler (Tom Lane) + + + + Applying such attributes to a call handler could crash the server. + (CVE-2012-2655) + + + + + + Make contrib/citext's upgrade script fix collations of + citext arrays and domains over citext + (Tom Lane) + + + + Release 9.1.2 provided a fix for collations of citext columns + and indexes in databases upgraded or reloaded from pre-9.1 + installations, but that fix was incomplete: it neglected to handle arrays + and domains over citext. This release extends the module's + upgrade script to handle these cases. As before, if you have already + run the upgrade script, you'll need to run the collation update + commands by hand instead. See the 9.1.2 release notes for more + information about doing this. + + + + + + Allow numeric timezone offsets in timestamp input to be up to + 16 hours away from UTC (Tom Lane) + + + + Some historical time zones have offsets larger than 15 hours, the + previous limit. This could result in dumped data values being rejected + during reload. + + + + + + Fix timestamp conversion to cope when the given time is exactly the + last DST transition time for the current timezone (Tom Lane) + + + + This oversight has been there a long time, but was not noticed + previously because most DST-using zones are presumed to have an + indefinite sequence of future DST transitions. + + + + + + Fix text to name and char to name + casts to perform string truncation correctly in multibyte encodings + (Karl Schnaitter) + + + + + + Fix memory copying bug in to_tsquery() (Heikki Linnakangas) + + + + + + Ensure txid_current() reports the correct epoch when + executed in hot standby (Simon Riggs) + + + + + + Fix planner's handling of outer PlaceHolderVars within subqueries (Tom + Lane) + + + + This bug concerns sub-SELECTs that reference variables coming from the + nullable side of an outer join of the surrounding query. + In 9.1, queries affected by this bug would fail with ERROR: + Upper-level PlaceHolderVar found where not expected. But in 9.0 and + 8.4, you'd silently get possibly-wrong answers, since the value + transmitted into the subquery wouldn't go to null when it should. + + + + + + Fix planning of UNION ALL subqueries with output columns + that are not simple variables (Tom Lane) + + + + Planning of such cases got noticeably worse in 9.1 as a result of a + misguided fix for MergeAppend child's targetlist doesn't match + MergeAppend errors. Revert that fix and do it another way. + + + + + + Fix slow session startup when pg_attribute is very large + (Tom Lane) + + + + If pg_attribute exceeds one-fourth of + shared_buffers, cache rebuilding code that is sometimes + needed during session start would trigger the synchronized-scan logic, + causing it to take many times longer than normal. The problem was + particularly acute if many new sessions were starting at once. + + + + + + Ensure sequential scans check for query cancel reasonably often (Merlin + Moncure) + + + + A scan encountering many consecutive pages that contain no live tuples + would not respond to interrupts meanwhile. + + + + + + Ensure the Windows implementation of PGSemaphoreLock() + clears ImmediateInterruptOK before returning (Tom Lane) + + + + This oversight meant that a query-cancel interrupt received later + in the same query could be accepted at an unsafe time, with + unpredictable but not good consequences. + + + + + + Show whole-row variables safely when printing views or rules + (Abbas Butt, Tom Lane) + + + + Corner cases involving ambiguous names (that is, the name could be + either a table or column name of the query) were printed in an + ambiguous way, risking that the view or rule would be interpreted + differently after dump and reload. Avoid the ambiguous case by + attaching a no-op cast. + + + + + + Fix COPY FROM to properly handle null marker strings that + correspond to invalid encoding (Tom Lane) + + + + A null marker string such as E'\\0' should work, and did + work in the past, but the case got broken in 8.4. + + + + + + Fix EXPLAIN VERBOSE for writable CTEs containing + RETURNING clauses (Tom Lane) + + + + + + Fix PREPARE TRANSACTION to work correctly in the presence + of advisory locks (Tom Lane) + + + + Historically, PREPARE TRANSACTION has simply ignored any + session-level advisory locks the session holds, but this case was + accidentally broken in 9.1. + + + + + + Fix truncation of unlogged tables (Robert Haas) + + + + + + Ignore missing schemas during non-interactive assignments of + search_path (Tom Lane) + + + + This re-aligns 9.1's behavior with that of older branches. Previously + 9.1 would throw an error for nonexistent schemas mentioned in + search_path settings obtained from places such as + ALTER DATABASE SET. + + + + + + Fix bugs with temporary or transient tables used in extension scripts + (Tom Lane) + + + + This includes cases such as a rewriting ALTER TABLE within + an extension update script, since that uses a transient table behind + the scenes. + + + + + + Ensure autovacuum worker processes perform stack depth checking + properly (Heikki Linnakangas) + + + + Previously, infinite recursion in a function invoked by + auto-ANALYZE could crash worker processes. + + + + + + Fix logging collector to not lose log coherency under high load (Andrew + Dunstan) + + + + The collector previously could fail to reassemble large messages if it + got too busy. + + + + + + Fix logging collector to ensure it will restart file rotation + after receiving SIGHUP (Tom Lane) + + + + + + Fix too many LWLocks taken failure in GiST indexes (Heikki + Linnakangas) + + + + + + Fix WAL replay logic for GIN indexes to not fail if the index was + subsequently dropped (Tom Lane) + + + + + + Correctly detect SSI conflicts of prepared transactions after a crash + (Dan Ports) + + + + + + Avoid synchronous replication delay when committing a transaction that + only modified temporary tables (Heikki Linnakangas) + + + + In such a case the transaction's commit record need not be flushed to + standby servers, but some of the code didn't know that and waited for + it to happen anyway. + + + + + + Fix error handling in pg_basebackup + (Thomas Ogrisegg, Fujii Masao) + + + + + + Fix walsender to not go into a busy loop if connection + is terminated (Fujii Masao) + + + + + + Fix memory leak in PL/pgSQL's RETURN NEXT command (Joe + Conway) + + + + + + Fix PL/pgSQL's GET DIAGNOSTICS command when the target + is the function's first variable (Tom Lane) + + + + + + Ensure that PL/Perl package-qualifies the _TD variable + (Alex Hunsaker) + + + + This bug caused trigger invocations to fail when they are nested + within a function invocation that changes the current package. + + + + + + Fix PL/Python functions returning composite types to accept a string + for their result value (Jan Urbanski) + + + + This case was accidentally broken by the 9.1 additions to allow a + composite result value to be supplied in other formats, such as + dictionaries. + + + + + + Fix potential access off the end of memory in psql's + expanded display (\x) mode (Peter Eisentraut) + + + + + + Fix several performance problems in pg_dump when + the database contains many objects (Jeff Janes, Tom Lane) + + + + pg_dump could get very slow if the database contained + many schemas, or if many objects are in dependency loops, or if there + are many owned sequences. + + + + + + Fix memory and file descriptor leaks in pg_restore + when reading a directory-format archive (Peter Eisentraut) + + + + + + Fix pg_upgrade for the case that a database stored in a + non-default tablespace contains a table in the cluster's default + tablespace (Bruce Momjian) + + + + + + In ecpg, fix rare memory leaks and possible overwrite + of one byte after the sqlca_t structure (Peter Eisentraut) + + + + + + Fix contrib/dblink's dblink_exec() to not leak + temporary database connections upon error (Tom Lane) + + + + + + Fix contrib/dblink to report the correct connection name in + error messages (Kyotaro Horiguchi) + + + + + + Fix contrib/vacuumlo to use multiple transactions when + dropping many large objects (Tim Lewis, Robert Haas, Tom Lane) + + + + This change avoids exceeding max_locks_per_transaction when + many objects need to be dropped. The behavior can be adjusted with the + new -l (limit) option. + + + + + + Update time zone data files to tzdata release 2012c + for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland + Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; + also historical corrections for Canada. + + + + + + + + + + Release 9.1.3 + + + Release Date + 2012-02-27 + + + + This release contains a variety of fixes from 9.1.2. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.3 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you are upgrading from a version earlier than 9.1.2, + see . + + + + + + Changes + + + + + + Require execute permission on the trigger function for + CREATE TRIGGER (Robert Haas) + + + + This missing check could allow another user to execute a trigger + function with forged input data, by installing it on a table he owns. + This is only of significance for trigger functions marked + SECURITY DEFINER, since otherwise trigger functions run + as the table owner anyway. (CVE-2012-0866) + + + + + + Remove arbitrary limitation on length of common name in SSL + certificates (Heikki Linnakangas) + + + + Both libpq and the server truncated the common name + extracted from an SSL certificate at 32 bytes. Normally this would + cause nothing worse than an unexpected verification failure, but there + are some rather-implausible scenarios in which it might allow one + certificate holder to impersonate another. The victim would have to + have a common name exactly 32 bytes long, and the attacker would have + to persuade a trusted CA to issue a certificate in which the common + name has that string as a prefix. Impersonating a server would also + require some additional exploit to redirect client connections. + (CVE-2012-0867) + + + + + + Convert newlines to spaces in names written in pg_dump + comments (Robert Haas) + + + + pg_dump was incautious about sanitizing object names + that are emitted within SQL comments in its output script. A name + containing a newline would at least render the script syntactically + incorrect. Maliciously crafted object names could present a SQL + injection risk when the script is reloaded. (CVE-2012-0868) + + + + + + Fix btree index corruption from insertions concurrent with vacuuming + (Tom Lane) + + + + An index page split caused by an insertion could sometimes cause a + concurrently-running VACUUM to miss removing index entries + that it should remove. After the corresponding table rows are removed, + the dangling index entries would cause errors (such as could not + read block N in file ...) or worse, silently wrong query results + after unrelated rows are re-inserted at the now-free table locations. + This bug has been present since release 8.2, but occurs so infrequently + that it was not diagnosed until now. If you have reason to suspect + that it has happened in your database, reindexing the affected index + will fix things. + + + + + + Fix transient zeroing of shared buffers during WAL replay (Tom Lane) + + + + The replay logic would sometimes zero and refill a shared buffer, so + that the contents were transiently invalid. In hot standby mode this + can result in a query that's executing in parallel seeing garbage data. + Various symptoms could result from that, but the most common one seems + to be invalid memory alloc request size. + + + + + + Fix handling of data-modifying WITH subplans in + READ COMMITTED rechecking (Tom Lane) + + + + A WITH clause containing + INSERT/UPDATE/DELETE would crash + if the parent UPDATE or DELETE command needed + to be re-evaluated at one or more rows due to concurrent updates + in READ COMMITTED mode. + + + + + + Fix corner case in SSI transaction cleanup + (Dan Ports) + + + + When finishing up a read-write serializable transaction, + a crash could occur if all remaining active serializable transactions + are read-only. + + + + + + Fix postmaster to attempt restart after a hot-standby crash (Tom Lane) + + + + A logic error caused the postmaster to terminate, rather than attempt + to restart the cluster, if any backend process crashed while operating + in hot standby mode. + + + + + + Fix CLUSTER/VACUUM FULL handling of toast + values owned by recently-updated rows (Tom Lane) + + + + This oversight could lead to duplicate key value violates unique + constraint errors being reported against the toast table's index + during one of these commands. + + + + + + Update per-column permissions, not only per-table permissions, when + changing table owner (Tom Lane) + + + + Failure to do this meant that any previously granted column permissions + were still shown as having been granted by the old owner. This meant + that neither the new owner nor a superuser could revoke the + now-untraceable-to-table-owner permissions. + + + + + + Support foreign data wrappers and foreign servers in + REASSIGN OWNED (Alvaro Herrera) + + + + This command failed with unexpected classid errors if + it needed to change the ownership of any such objects. + + + + + + Allow non-existent values for some settings in ALTER + USER/DATABASE SET (Heikki Linnakangas) + + + + Allow default_text_search_config, + default_tablespace, and temp_tablespaces to be + set to names that are not known. This is because they might be known + in another database where the setting is intended to be used, or for the + tablespace cases because the tablespace might not be created yet. The + same issue was previously recognized for search_path, and + these settings now act like that one. + + + + + + Fix unsupported node type error caused by COLLATE + in an INSERT expression (Tom Lane) + + + + + + Avoid crashing when we have problems deleting table files post-commit + (Tom Lane) + + + + Dropping a table should lead to deleting the underlying disk files only + after the transaction commits. In event of failure then (for instance, + because of wrong file permissions) the code is supposed to just emit a + warning message and go on, since it's too late to abort the + transaction. This logic got broken as of release 8.4, causing such + situations to result in a PANIC and an unrestartable database. + + + + + + Recover from errors occurring during WAL replay of DROP + TABLESPACE (Tom Lane) + + + + Replay will attempt to remove the tablespace's directories, but there + are various reasons why this might fail (for example, incorrect + ownership or permissions on those directories). Formerly the replay + code would panic, rendering the database unrestartable without manual + intervention. It seems better to log the problem and continue, since + the only consequence of failure to remove the directories is some + wasted disk space. + + + + + + Fix race condition in logging AccessExclusiveLocks for hot standby + (Simon Riggs) + + + + Sometimes a lock would be logged as being held by transaction + zero. This is at least known to produce assertion failures on + slave servers, and might be the cause of more serious problems. + + + + + + Track the OID counter correctly during WAL replay, even when it wraps + around (Tom Lane) + + + + Previously the OID counter would remain stuck at a high value until the + system exited replay mode. The practical consequences of that are + usually nil, but there are scenarios wherein a standby server that's + been promoted to master might take a long time to advance the OID + counter to a reasonable value once values are needed. + + + + + + Prevent emitting misleading consistent recovery state reached + log message at the beginning of crash recovery (Heikki Linnakangas) + + + + + + Fix initial value of + pg_stat_replication.replay_location + (Fujii Masao) + + + + Previously, the value shown would be wrong until at least one WAL + record had been replayed. + + + + + + Fix regular expression back-references with * attached + (Tom Lane) + + + + Rather than enforcing an exact string match, the code would effectively + accept any string that satisfies the pattern sub-expression referenced + by the back-reference symbol. + + + + A similar problem still afflicts back-references that are embedded in a + larger quantified expression, rather than being the immediate subject + of the quantifier. This will be addressed in a future + PostgreSQL release. + + + + + + Fix recently-introduced memory leak in processing of + inet/cidr values (Heikki Linnakangas) + + + + A patch in the December 2011 releases of PostgreSQL + caused memory leakage in these operations, which could be significant + in scenarios such as building a btree index on such a column. + + + + + + Fix planner's ability to push down index-expression restrictions + through UNION ALL (Tom Lane) + + + + This type of optimization was inadvertently disabled by a fix for + another problem in 9.1.2. + + + + + + Fix planning of WITH clauses referenced in + UPDATE/DELETE on an inherited table + (Tom Lane) + + + + This bug led to could not find plan for CTE failures. + + + + + + Fix GIN cost estimation to handle column IN (...) + index conditions (Marti Raudsepp) + + + + This oversight would usually lead to crashes if such a condition could + be used with a GIN index. + + + + + + Prevent assertion failure when exiting a session with an open, failed + transaction (Tom Lane) + + + + This bug has no impact on normal builds with asserts not enabled. + + + + + + Fix dangling pointer after CREATE TABLE AS/SELECT + INTO in a SQL-language function (Tom Lane) + + + + In most cases this only led to an assertion failure in assert-enabled + builds, but worse consequences seem possible. + + + + + + Avoid double close of file handle in syslogger on Windows (MauMau) + + + + Ordinarily this error was invisible, but it would cause an exception + when running on a debug version of Windows. + + + + + + Fix I/O-conversion-related memory leaks in plpgsql + (Andres Freund, Jan Urbanski, Tom Lane) + + + + Certain operations would leak memory until the end of the current + function. + + + + + + Work around bug in perl's SvPVutf8() function (Andrew Dunstan) + + + + This function crashes when handed a typeglob or certain read-only + objects such as $^V. Make plperl avoid passing those to + it. + + + + + + In pg_dump, don't dump contents of an extension's + configuration tables if the extension itself is not being dumped + (Tom Lane) + + + + + + Improve pg_dump's handling of inherited table columns + (Tom Lane) + + + + pg_dump mishandled situations where a child column has + a different default expression than its parent column. If the default + is textually identical to the parent's default, but not actually the + same (for instance, because of schema search path differences) it would + not be recognized as different, so that after dump and restore the + child would be allowed to inherit the parent's default. Child columns + that are NOT NULL where their parent is not could also be + restored subtly incorrectly. + + + + + + Fix pg_restore's direct-to-database mode for + INSERT-style table data (Tom Lane) + + + + Direct-to-database restores from archive files made with + + + + + + Teach pg_upgrade to handle renaming of + plpython's shared library (Bruce Momjian) + + + + Upgrading a pre-9.1 database that included plpython would fail because + of this oversight. + + + + + + Allow pg_upgrade to process tables containing + regclass columns (Bruce Momjian) + + + + Since pg_upgrade now takes care to preserve + pg_class OIDs, there was no longer any reason for this + restriction. + + + + + + Make libpq ignore ENOTDIR errors + when looking for an SSL client certificate file + (Magnus Hagander) + + + + This allows SSL connections to be established, though without a + certificate, even when the user's home directory is set to something + like /dev/null. + + + + + + Fix some more field alignment issues in ecpg's SQLDA area + (Zoltan Boszormenyi) + + + + + + Allow AT option in ecpg + DEALLOCATE statements (Michael Meskes) + + + + The infrastructure to support this has been there for awhile, but + through an oversight there was still an error check rejecting the case. + + + + + + Do not use the variable name when defining a varchar structure in ecpg + (Michael Meskes) + + + + + + Fix contrib/auto_explain's JSON output mode to produce + valid JSON (Andrew Dunstan) + + + + The output used brackets at the top level, when it should have used + braces. + + + + + + Fix error in contrib/intarray's int[] & + int[] operator (Guillaume Lelarge) + + + + If the smallest integer the two input arrays have in common is 1, + and there are smaller values in either array, then 1 would be + incorrectly omitted from the result. + + + + + + Fix error detection in contrib/pgcrypto's + encrypt_iv() and decrypt_iv() + (Marko Kreen) + + + + These functions failed to report certain types of invalid-input errors, + and would instead return random garbage values for incorrect input. + + + + + + Fix one-byte buffer overrun in contrib/test_parser + (Paul Guyot) + + + + The code would try to read one more byte than it should, which would + crash in corner cases. + Since contrib/test_parser is only example code, this is + not a security issue in itself, but bad example code is still bad. + + + + + + Use __sync_lock_test_and_set() for spinlocks on ARM, if + available (Martin Pitt) + + + + This function replaces our previous use of the SWPB + instruction, which is deprecated and not available on ARMv6 and later. + Reports suggest that the old code doesn't fail in an obvious way on + recent ARM boards, but simply doesn't interlock concurrent accesses, + leading to bizarre failures in multiprocess operation. + + + + + + Use + + + This prevents assorted scenarios wherein recent versions of gcc will + produce creative results. + + + + + + Allow use of threaded Python on FreeBSD (Chris Rees) + + + + Our configure script previously believed that this combination wouldn't + work; but FreeBSD fixed the problem, so remove that error check. + + + + + + Allow MinGW builds to use standardly-named OpenSSL libraries + (Tomasz Ostrowski) + + + + + + + + + + Release 9.1.2 + + + Release Date + 2011-12-05 + + + + This release contains a variety of fixes from 9.1.1. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.2 + + + A dump/restore is not required for those running 9.1.X. + + + + However, a longstanding error was discovered in the definition of the + information_schema.referential_constraints view. If you + rely on correct results from that view, you should replace its + definition as explained in the first changelog item below. + + + + Also, if you use the citext data type, and you upgraded + from a previous major release by running pg_upgrade, + you should run CREATE EXTENSION citext FROM unpackaged + to avoid collation-related failures in citext operations. + The same is necessary if you restore a dump from a pre-9.1 database + that contains an instance of the citext data type. + If you've already run the CREATE EXTENSION command before + upgrading to 9.1.2, you will instead need to do manual catalog updates + as explained in the second changelog item. + + + + + + Changes + + + + + + Fix bugs in information_schema.referential_constraints view + (Tom Lane) + + + + This view was being insufficiently careful about matching the + foreign-key constraint to the depended-on primary or unique key + constraint. That could result in failure to show a foreign key + constraint at all, or showing it multiple times, or claiming that it + depends on a different constraint than the one it really does. + + + + Since the view definition is installed by initdb, + merely upgrading will not fix the problem. If you need to fix this + in an existing installation, you can (as a superuser) drop the + information_schema schema then re-create it by sourcing + SHAREDIR/information_schema.sql. + (Run pg_config --sharedir if you're uncertain where + SHAREDIR is.) This must be repeated in each database + to be fixed. + + + + + + Make contrib/citext's upgrade script fix collations of + citext columns and indexes (Tom Lane) + + + + Existing citext columns and indexes aren't correctly marked as + being of a collatable data type during pg_upgrade from + a pre-9.1 server, or when a pre-9.1 dump containing the citext + type is loaded into a 9.1 server. + That leads to operations on these columns failing with errors + such as could not determine which collation to use for string + comparison. This change allows them to be fixed by the same + script that upgrades the citext module into a proper 9.1 + extension during CREATE EXTENSION citext FROM unpackaged. + + + + If you have a previously-upgraded database that is suffering from this + problem, and you already ran the CREATE EXTENSION command, + you can manually run (as superuser) the UPDATE commands + found at the end of + SHAREDIR/extension/citext--unpackaged--1.0.sql. + (Run pg_config --sharedir if you're uncertain where + SHAREDIR is.) + There is no harm in doing this again if unsure. + + + + + + Fix possible crash during UPDATE or DELETE that + joins to the output of a scalar-returning function (Tom Lane) + + + + A crash could only occur if the target row had been concurrently + updated, so this problem surfaced only intermittently. + + + + + + Fix incorrect replay of WAL records for GIN index updates + (Tom Lane) + + + + This could result in transiently failing to find index entries after + a crash, or on a hot-standby server. The problem would be repaired + by the next VACUUM of the index, however. + + + + + + Fix TOAST-related data corruption during CREATE TABLE dest AS + SELECT * FROM src or INSERT INTO dest SELECT * FROM src + (Tom Lane) + + + + If a table has been modified by ALTER TABLE ADD COLUMN, + attempts to copy its data verbatim to another table could produce + corrupt results in certain corner cases. + The problem can only manifest in this precise form in 8.4 and later, + but we patched earlier versions as well in case there are other code + paths that could trigger the same bug. + + + + + + Fix possible failures during hot standby startup (Simon Riggs) + + + + + + Start hot standby faster when initial snapshot is incomplete + (Simon Riggs) + + + + + + Fix race condition during toast table access from stale syscache entries + (Tom Lane) + + + + The typical symptom was transient errors like missing chunk + number 0 for toast value NNNNN in pg_toast_2619, where the cited + toast table would always belong to a system catalog. + + + + + + Track dependencies of functions on items used in parameter default + expressions (Tom Lane) + + + + Previously, a referenced object could be dropped without having dropped + or modified the function, leading to misbehavior when the function was + used. Note that merely installing this update will not fix the missing + dependency entries; to do that, you'd need to CREATE OR + REPLACE each such function afterwards. If you have functions whose + defaults depend on non-built-in objects, doing so is recommended. + + + + + + Fix incorrect management of placeholder variables in nestloop joins + (Tom Lane) + + + + This bug is known to lead to variable not found in subplan target + list planner errors, and could possibly result in wrong query output + when outer joins are involved. + + + + + + Fix window functions that sort by expressions involving aggregates + (Tom Lane) + + + + Previously these could fail with could not find pathkey item to + sort planner errors. + + + + + + Fix MergeAppend child's targetlist doesn't match MergeAppend + planner errors (Tom Lane) + + + + + + Fix index matching for operators with both collatable and noncollatable + inputs (Tom Lane) + + + + In 9.1.0, an indexable operator that has a non-collatable left-hand + input type and a collatable right-hand input type would not be + recognized as matching the left-hand column's index. An example is + the hstore ? text operator. + + + + + + Allow inlining of set-returning SQL functions with multiple OUT + parameters (Tom Lane) + + + + + + Don't trust deferred-unique indexes for join removal (Tom Lane and Marti + Raudsepp) + + + + A deferred uniqueness constraint might not hold intra-transaction, + so assuming that it does could give incorrect query results. + + + + + + Make DatumGetInetP() unpack inet datums that have a 1-byte + header, and add a new macro, DatumGetInetPP(), that does + not (Heikki Linnakangas) + + + + This change affects no core code, but might prevent crashes in add-on + code that expects DatumGetInetP() to produce an unpacked + datum as per usual convention. + + + + + + Improve locale support in money type's input and output + (Tom Lane) + + + + Aside from not supporting all standard + lc_monetary + formatting options, the input and output functions were inconsistent, + meaning there were locales in which dumped money values could + not be re-read. + + + + + + Don't let transform_null_equals + affect CASE foo WHEN NULL ... constructs + (Heikki Linnakangas) + + + + transform_null_equals is only supposed to affect + foo = NULL expressions written directly by the user, not + equality checks generated internally by this form of CASE. + + + + + + Change foreign-key trigger creation order to better support + self-referential foreign keys (Tom Lane) + + + + For a cascading foreign key that references its own table, a row update + will fire both the ON UPDATE trigger and the + CHECK trigger as one event. The ON UPDATE + trigger must execute first, else the CHECK will check a + non-final state of the row and possibly throw an inappropriate error. + However, the firing order of these triggers is determined by their + names, which generally sort in creation order since the triggers have + auto-generated names following the convention + RI_ConstraintTrigger_NNNN. A proper fix would require + modifying that convention, which we will do in 9.2, but it seems risky + to change it in existing releases. So this patch just changes the + creation order of the triggers. Users encountering this type of error + should drop and re-create the foreign key constraint to get its + triggers into the right order. + + + + + + Fix IF EXISTS to work correctly in DROP OPERATOR + FAMILY (Robert Haas) + + + + + + Disallow dropping of an extension from within its own script + (Tom Lane) + + + + This prevents odd behavior in case of incorrect management of extension + dependencies. + + + + + + Don't mark auto-generated types as extension members (Robert Haas) + + + + Relation rowtypes and automatically-generated array types do not need to + have their own extension membership entries in pg_depend, + and creating such entries complicates matters for extension upgrades. + + + + + + Cope with invalid pre-existing search_path settings during + CREATE EXTENSION (Tom Lane) + + + + + + Avoid floating-point underflow while tracking buffer allocation rate + (Greg Matthews) + + + + While harmless in itself, on certain platforms this would result in + annoying kernel log messages. + + + + + + Prevent autovacuum transactions from running in serializable mode + (Tom Lane) + + + + Autovacuum formerly used the cluster-wide default transaction isolation + level, but there is no need for it to use anything higher than READ + COMMITTED, and using SERIALIZABLE could result in unnecessary delays + for other processes. + + + + + + Ensure walsender processes respond promptly to SIGTERM + (Magnus Hagander) + + + + + + Exclude postmaster.opts from base backups + (Magnus Hagander) + + + + + + Preserve configuration file name and line number values when starting + child processes under Windows (Tom Lane) + + + + Formerly, these would not be displayed correctly in the + pg_settings view. + + + + + + Fix incorrect field alignment in ecpg's SQLDA area + (Zoltan Boszormenyi) + + + + + + Preserve blank lines within commands in psql's command + history (Robert Haas) + + + + The former behavior could cause problems if an empty line was removed + from within a string literal, for example. + + + + + + Avoid platform-specific infinite loop in pg_dump + (Steve Singer) + + + + + + Fix compression of plain-text output format in pg_dump + (Adrian Klaver and Tom Lane) + + + + pg_dump has historically understood -Z with + no -F switch to mean that it should emit a gzip-compressed + version of its plain text output. Restore that behavior. + + + + + + Fix pg_dump to dump user-defined casts between + auto-generated types, such as table rowtypes (Tom Lane) + + + + + + Fix missed quoting of foreign server names in pg_dump + (Tom Lane) + + + + + + Assorted fixes for pg_upgrade (Bruce Momjian) + + + + Handle exclusion constraints correctly, avoid failures on Windows, + don't complain about mismatched toast table names in 8.4 databases. + + + + + + In PL/pgSQL, allow foreign tables to define row types + (Alexander Soudakov) + + + + + + Fix up conversions of PL/Perl functions' results + (Alex Hunsaker and Tom Lane) + + + + Restore the pre-9.1 behavior that PL/Perl functions returning + void ignore the result value of their last Perl statement; + 9.1.0 would throw an error if that statement returned a reference. + Also, make sure it works to return a string value for a composite type, + so long as the string meets the type's input format. + In addition, throw errors for attempts to return Perl arrays or hashes + when the function's declared result type is not an array or composite + type, respectively. (Pre-9.1 versions rather uselessly returned + strings like ARRAY(0x221a9a0) or + HASH(0x221aa90) in such cases.) + + + + + + Ensure PL/Perl strings are always correctly UTF8-encoded + (Amit Khandekar and Alex Hunsaker) + + + + + + Use the preferred version of xsubpp to build PL/Perl, + not necessarily the operating system's main copy + (David Wheeler and Alex Hunsaker) + + + + + + Correctly propagate SQLSTATE in PL/Python exceptions + (Mika Eloranta and Jan Urbanski) + + + + + + Do not install PL/Python extension files for Python major versions + other than the one built against (Peter Eisentraut) + + + + + + Change all the contrib extension script files to report + a useful error message if they are fed to psql + (Andrew Dunstan and Tom Lane) + + + + This should help teach people about the new method of using + CREATE EXTENSION to load these files. In most cases, + sourcing the scripts directly would fail anyway, but with + harder-to-interpret messages. + + + + + + Fix incorrect coding in contrib/dict_int and + contrib/dict_xsyn (Tom Lane) + + + + Some functions incorrectly assumed that memory returned by + palloc() is guaranteed zeroed. + + + + + + Remove contrib/sepgsql tests from the regular regression + test mechanism (Tom Lane) + + + + Since these tests require root privileges for setup, they're impractical + to run automatically. Switch over to a manual approach instead, and + provide a testing script to help with that. + + + + + + Fix assorted errors in contrib/unaccent's configuration + file parsing (Tom Lane) + + + + + + Honor query cancel interrupts promptly in pgstatindex() + (Robert Haas) + + + + + + Fix incorrect quoting of log file name in Mac OS X start script + (Sidar Lopez) + + + + + + Revert unintentional enabling of WAL_DEBUG (Robert Haas) + + + + Fortunately, as debugging tools go, this one is pretty cheap; + but it's not intended to be enabled by default, so revert. + + + + + + Ensure VPATH builds properly install all server header files + (Peter Eisentraut) + + + + + + Shorten file names reported in verbose error messages (Peter Eisentraut) + + + + Regular builds have always reported just the name of the C file + containing the error message call, but VPATH builds formerly + reported an absolute path name. + + + + + + Fix interpretation of Windows timezone names for Central America + (Tom Lane) + + + + Map Central America Standard Time to CST6, not + CST6CDT, because DST is generally not observed anywhere in + Central America. + + + + + + Update time zone data files to tzdata release 2011n + for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa; + also historical corrections for Alaska and British East Africa. + + + + + + + + + + Release 9.1.1 + + + Release Date + 2011-09-26 + + + + This release contains a small number of fixes from 9.1.0. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.1 + + + A dump/restore is not required for those running 9.1.X. + + + + + + Changes + + + + + + Make pg_options_to_table return NULL for an option with no + value (Tom Lane) + + + + Previously such cases would result in a server crash. + + + + + + Fix memory leak at end of a GiST index scan (Tom Lane) + + + + Commands that perform many separate GiST index scans, such as + verification of a new GiST-based exclusion constraint on a table + already containing many rows, could transiently require large amounts of + memory due to this leak. + + + + + + Fix explicit reference to pg_temp schema in CREATE + TEMPORARY TABLE (Robert Haas) + + + + This used to be allowed, but failed in 9.1.0. + + + + + + + + Release 9.1 Release Date - 2011-??-?? + 2011-09-12 - CURRENT AS OF 2011-06-09 - Overview - This release of - PostgreSQL adds numerous major features, including: + This release shows PostgreSQL moving beyond the + traditional relational-database feature set with new, ground-breaking + functionality that is unique to PostgreSQL. + The streaming replication feature introduced in release 9.0 is + significantly enhanced by adding a synchronous-replication option, + streaming backups, and monitoring improvements. + Major enhancements include: - - (summary to be added) - + + + + + + + Allow synchronous + replication + + + + + + Add support for foreign + tables + + + + + + Add per-column collation support + + + + + + Add extensions which + simplify packaging of additions to PostgreSQL + + + + + + Add a true serializable isolation level + + + + + + Support unlogged tables using the UNLOGGED + option in CREATE + TABLE + + + + + + Allow data-modification commands + (INSERT/UPDATE/DELETE) in + WITH clauses + + + + + + Add nearest-neighbor (order-by-operator) searching to GiST indexes + + + + + + Add a SECURITY + LABEL command and support for + SELinux permissions control + + + + + + Update the PL/Python server-side + language + + + + The above items are explained in more detail in the sections below. @@ -66,6 +7310,17 @@ strings are the proper way to embed backslash escapes in strings and are unaffected by this change. + + + + This change can break applications that are not expecting it and + do their own string escaping according to the old rules. The + consequences could be as severe as introducing SQL-injection security + holes. Be sure to test applications that are exposed to untrusted + input, to ensure that they correctly handle single quotes and + backslashes in text strings. + + @@ -171,7 +7426,7 @@ Require superuser or CREATEROLE permissions in order to - set role comments (Tom Lane) + set comments on roles (Tom Lane) @@ -192,8 +7447,8 @@ - Previously pg_last_xlog_receive_location() could - move backward when streaming replication is restarted. + Previously, the value of pg_last_xlog_receive_location() + could move backward when streaming replication is restarted. @@ -205,7 +7460,7 @@ - Previously replication connections were always logged. + Previously, replication connections were always logged. @@ -276,6 +7531,32 @@ + + Contrib + + + + + + All contrib modules are now installed with CREATE EXTENSION + rather than by manually invoking their SQL scripts + (Dimitri Fontaine, Tom Lane) + + + + To update an existing database containing the 9.0 version of a contrib + module, use CREATE EXTENSION ... FROM unpackaged + to wrap the existing contrib module's objects into an extension. When + updating from a pre-9.0 version, drop the contrib module's objects + using its old uninstall script, then use CREATE EXTENSION. + + + + + + + Other Incompatibilities @@ -303,7 +7584,8 @@ - Treat ECPG cursor names as case-insensitive (Zoltan Boszormenyi) + Treat ECPG cursor names as case-insensitive + (Zoltan Boszormenyi) @@ -314,9 +7596,12 @@ Changes - - Version 9.1 has ... - + + + Below you will find a detailed account of the changes between + PostgreSQL 9.1 and the previous major + release. + Server @@ -328,8 +7613,7 @@ - Support unlogged tables using the UNLOGGED + Support unlogged tables using the UNLOGGED option in CREATE TABLE (Robert Haas) @@ -360,8 +7644,11 @@ - Merge duplicate fsync requests on busy systems (Robert Haas, - Greg Smith) + Merge duplicate fsync requests (Robert Haas, Greg Smith) + + + + This greatly improves performance under heavy write loads. @@ -385,6 +7672,19 @@ + + + Avoid leaving data files open after blind writes + (Alvaro Herrera) + + + + This fixes scenarios in which backends might hold files open long + after they were deleted, preventing the kernel from reclaiming + disk space. + + + @@ -491,7 +7791,9 @@ - The old term is still accepted for backward compatibility. + The old term is still accepted for backward compatibility, but since + the two methods are fundamentally different, it seemed better to adopt + different names for them. @@ -528,7 +7830,7 @@ - New details show WAL file and sync activity. + New details include WAL file and sync activity. @@ -541,6 +7843,18 @@ + + + Reduce the default maximum line length for syslog + logging to 900 bytes plus prefixes (Noah Misch) + + + + This avoids truncation of long log lines on syslog implementations + that have a 1KB length limit, rather than the more common 2KB. + + + @@ -615,14 +7929,14 @@ - Allow auto-tuning of wal_buffers (Greg Smith) - wal_buffers is now auto-tuned by default based on - the size of shared_buffers. + By default, the value of wal_buffers is now chosen + automatically based on the value of shared_buffers. @@ -662,8 +7976,8 @@ - This allows the primary to wait for a standby to write the transaction - information to disk before acknowledging the commit. + This allows the primary server to wait for a standby to write a + transaction's information to disk before acknowledging the commit. One standby at a time can take the role of the synchronous standby, as controlled by the synchronous_standby_names @@ -676,8 +7990,8 @@ - Add protocol support for sending file system backups to standbys using - the streaming replication network connection (Magnus Hagander, + Add protocol support for sending file system backups to standby servers + using the streaming replication network connection (Magnus Hagander, Heikki Linnakangas) @@ -690,7 +8004,7 @@ Add - replication_timeout + replication_timeout setting (Fujii Masao, Heikki Linnakangas) @@ -714,7 +8028,7 @@ - Add replication permission + Add a replication permission for roles (Magnus Hagander) @@ -779,7 +8093,7 @@ - This helps avoid cancelling long-running queries on the standby. + This helps avoid canceling long-running queries on the standby. @@ -813,7 +8127,7 @@ Increase the maximum values for max_standby_archive_delay and - max_standby_streaming_delay. + max_standby_streaming_delay @@ -846,8 +8160,7 @@ - Add functions to control streaming replication replay (Simon - Riggs) + Add functions to control streaming replication replay (Simon Riggs) @@ -908,8 +8221,8 @@ - This allows external cluster management software to take control - of whether servers restart or not. + This allows external cluster management software to control + whether the database server restarts or not. @@ -940,15 +8253,15 @@ Add a true serializable isolation - level (Kevin Grittner, Dan Ports) + linkend="xact-serializable">serializable isolation level + (Kevin Grittner, Dan Ports) Previously, asking for serializable isolation guaranteed only that a single MVCC snapshot would be used for the entire transaction, which allowed certain documented anomalies. The old snapshot isolation - behavior is still accessible by requesting the REPEATABLE READ isolation level. @@ -957,7 +8270,7 @@ Allow data-modification commands - (INSERT/UPDATE/DELETE) in + (INSERT/UPDATE/DELETE) in WITH clauses (Marko Tiikkaja, Hitoshi Harada) @@ -985,7 +8298,7 @@ - Some other database system already allowed this behavior, and + The SQL standard allows this behavior, and because of the primary key, the result is unambiguous. @@ -1010,9 +8323,9 @@ - Previously EXPLAIN ANALYZE used a slightly different - snapshot for queries involving rules. The EXPLAIN ANALYZE - behavior was judged to be more logical. + Previously EXPLAIN ANALYZE used slightly different + snapshot timing for queries involving rules. The + EXPLAIN ANALYZE behavior was judged to be more logical. @@ -1031,7 +8344,8 @@ - Previously collation could only be set at database creation. + Previously collation (the sort ordering of text strings) could only be + chosen at database creation. Collation can now be set per column, domain, index, or expression, via the SQL-standard COLLATE clause. @@ -1174,8 +8488,8 @@ - The new option is called NOT VALID, which can - later be modified to VALIDATED and validation + The new option is called NOT VALID. The constraint's + state can later be modified to VALIDATED and validation checks performed. Together these allow you to add a foreign key with minimal impact on read and write operations. @@ -1211,14 +8525,14 @@ Fix possible tuple concurrently updated error - when two backends attempted to add an inheritance + when two backends attempt to add an inheritance child to the same table at the same time (Robert Haas) ALTER TABLE - now takes a stronger lock on the parent table, so that both children do - not try to update it simultaneously. + now takes a stronger lock on the parent table, so that the sessions + cannot try to update it simultaneously. @@ -1260,8 +8574,8 @@ - This is similar to the existing session-level advisory locks, - but the locks are automatically released at transaction end. + These are similar to the existing session-level advisory locks, + but such locks are automatically released at transaction end. @@ -1352,11 +8666,11 @@ Prevent autovacuum from - waiting if it cannot acquire a lock (Robert Haas) + waiting if it cannot acquire a table lock (Robert Haas) - It will try to vacuum later. + It will try to vacuum that table later. @@ -1394,6 +8708,12 @@ This allows GiST indexes to quickly return the N closest values in a query with LIMIT. + For example + point '(101,456)' LIMIT 10; +]]> + + finds the ten places closest to a given target point. @@ -1452,7 +8772,7 @@ Previously all numeric values had four-byte headers; - this saves on disk storage. + this change saves on disk storage. @@ -1520,7 +8840,7 @@ Add support for casting from int4 and int8 - to numeric (Joey Adams) + to money (Joey Adams) @@ -1590,9 +8910,9 @@ Add SQL function format(text), which - behaves like C's printf() (Pavel Stehule, Robert - Haas) + linkend="format">format(text, ...), which + behaves analogously to C's printf() (Pavel Stehule, + Robert Haas) @@ -1742,20 +9062,6 @@ - - - Minimize lock levels for CREATE TRIGGER - and many ALTER - TABLE and CREATE - RULE operations (Simon Riggs) - - - - This improves database availability when altering active databases. - - - @@ -1773,7 +9079,7 @@ Add FOREACH IN - ARRAY to PL/pgSQL + ARRAY to PL/pgSQL (Pavel Stehule) @@ -1884,7 +9190,7 @@ - Add PL/Python explicit subtransactions (Jan Urbanski) + Add explicit subtransactions to PL/Python (Jan Urbanski) @@ -1894,7 +9200,7 @@ - The functions are plpy.quote_ident, plpy.quote_literal, and - Add @@ -1996,7 +9302,7 @@ This is passed to the editor according to the - EDITOR_LINENUMBER_SWITCH psql variable. + PSQL_EDITOR_LINENUMBER_ARG environment variable. @@ -2129,7 +9435,8 @@ - Add a libpq connection option client_encoding + Add a libpq connection option client_encoding which behaves like the PGCLIENTENCODING environment variable (Heikki Linnakangas) @@ -2156,10 +9463,11 @@ - Allow libpq database clients to - check the user name of the server process using requirepeer - when connecting via Unix-domain sockets + connection option (Peter Eisentraut) @@ -2194,8 +9502,16 @@ - Allow ECPG to accept dynamic cursor names even in - WHERE CURRENT OF clauses + Allow ECPG to accept dynamic cursor names even in + WHERE CURRENT OF clauses + (Zoltan Boszormenyi) + + + + + + Make ecpglib write double values with a + precision of 15 digits, not 14 as formerly (Akira Kurosawa) @@ -2344,8 +9660,8 @@ - Add latches to the source code to wait for events (Heikki - Linnakangas) + Add latches to the source code to support waiting for events (Heikki + Linnakangas) @@ -2415,6 +9731,13 @@ + + + Improve support for building with + Clang (Peter Eisentraut) + + + @@ -2455,7 +9778,7 @@ - Modify contrib modules and stored procedure + Modify contrib modules and procedural languages to install via the new extension mechanism (Tom Lane, Dimitri Fontaine) @@ -2476,7 +9799,7 @@ - Add nearest-neighbor support to contrib/pg_trgm and contrib/btree_gist (Teodor Sigaev) @@ -2587,7 +9910,7 @@ Add contrib/sepgsql - to interface permission checks with SE-Linux (KaiGai Kohei) + to interface permission checks with SELinux (KaiGai Kohei) @@ -2613,7 +9936,7 @@ - Add dummy_seclabel + Add dummy_seclabel contrib module (KaiGai Kohei) @@ -2723,8 +10046,8 @@ - Extensive ECPG documentation - improvements (Satoshi Nagayasu) + Extensive ECPG + documentation improvements (Satoshi Nagayasu) @@ -2779,7 +10102,7 @@ - Merge docs for CREATE CONSTRAINT TRIGGER and CREATE CONSTRAINT TRIGGER and CREATE TRIGGER (Alvaro Herrera) @@ -2803,6 +10126,20 @@ + + + Handle non-ASCII characters consistently in HISTORY file + (Peter Eisentraut) + + + + While the HISTORY file is in English, we do have to deal + with non-ASCII letters in contributor names. These are now + transliterated so that they are reasonably legible without assumptions + about character set. + + + diff --git a/doc-xc/src/sgml/release-old.sgmlin b/doc-xc/src/sgml/release-old.sgmlin index f03683ec3f..b7e997c23e 100644 --- a/doc-xc/src/sgml/release-old.sgmlin +++ b/doc-xc/src/sgml/release-old.sgmlin @@ -25,8 +25,8 @@ A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.13, see the release - notes for 7.3.13. + if you are upgrading from a version earlier than 7.3.13, + see . @@ -130,8 +130,8 @@ A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.13, see the release - notes for 7.3.13. + if you are upgrading from a version earlier than 7.3.13, + see . @@ -192,8 +192,8 @@ A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.13, see the release - notes for 7.3.13. + if you are upgrading from a version earlier than 7.3.13, + see . @@ -248,8 +248,8 @@ A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.13, see the release - notes for 7.3.13. + if you are upgrading from a version earlier than 7.3.13, + see . @@ -309,8 +309,8 @@ A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.13, see the release - notes for 7.3.13. + if you are upgrading from a version earlier than 7.3.13, + see . @@ -365,8 +365,8 @@ A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.13, see the release - notes for 7.3.13. + if you are upgrading from a version earlier than 7.3.13, + see . @@ -408,8 +408,8 @@ A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.13, see the release - notes for 7.3.13. + if you are upgrading from a version earlier than 7.3.13, + see . @@ -499,8 +499,8 @@ Fuhr) A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.13, see the release - notes for 7.3.13. + if you are upgrading from a version earlier than 7.3.13, + see . @@ -556,8 +556,8 @@ and isinf during configure (Tom) A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.10, see the release - notes for 7.3.10. + if you are upgrading from a version earlier than 7.3.10, + see . Also, you might need to REINDEX indexes on textual columns after updating, if you are affected by the locale or plperl issues described below. @@ -618,8 +618,8 @@ what's actually returned by the query (Joe) A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.10, see the release - notes for 7.3.10. + if you are upgrading from a version earlier than 7.3.10, + see . @@ -665,8 +665,8 @@ table has been dropped A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.10, see the release - notes for 7.3.10. + if you are upgrading from a version earlier than 7.3.10, + see . diff --git a/doc-xc/src/sgml/release-xc-1.0.sgmlin b/doc-xc/src/sgml/release-xc-1.0.sgmlin new file mode 100644 index 0000000000..76eb1d0563 --- /dev/null +++ b/doc-xc/src/sgml/release-xc-1.0.sgmlin @@ -0,0 +1,1740 @@ + + + + + Release 1.0.4 + + + Release Date + 2014-04-04 + + + + This release contains fixes in PostgreSQL up to 9.1.13, as well as a couple + of fixes in Postgres-XC. + For informations about new feature in the 1.0 major release, see + . + For information about fixes in the 1.0.1 and 1.0.2 minor releases, see + and + respectively. + + + + Migrations to Version 1.0.4 + + + A dump/restore is not required for those running 1.0.x. + + + + + + Changes + + + + + + Fixed a but that alter node and create node does not work together another drop node or alter node which + disables current primary node. By Koichi Suzuki + + + + + + Now TEMP object can be used within implicit 2PC transactions. + Regression test changes accordingly. + By Koichi Suzuki. + + + + + + Improvement of statment cancellation behavior consisitent. + This reduces the chance of random failure in the regression test. + By Masataka Saito. + + + + + + Fixes PGXC blocked by acquiring TwoPhaseStateLock. + Reported by ZhangJulian. + + + + + + Fix for coordinator overshoot in COPY. + By Koichi Suzuki. + + + + + + Fix an issue that GTM Proxy doesn't send status in response of COMMIT or ROLLBACK. + By Masataka Saito. + + + + + + Fix an issue that a GTM Proxy sends MSG_BACKEND_DISCONNECT command with wrong proxy connection ID. + By Masataka Saito. + + + + + + Fix the issue that a GTM Proxy sends error responses via unrelated connection. + By Masataka Saito. + + + + + + Specify that EXECUTE DIRECT query needs to be a string literal. + By Tomonari Katsumata. + + + + + + Replace strndup calls by strdup in makesgml. + By Michael Paquier. + + + + + + Correct incorrect return results of GTM-Proxy code. + By Michael Paquier. + + + + + + Fix ALTER SCHEMA bug when renaming dependent objects only occurs in + release 1.0. + Reported by Andrei Martsinchyk. + Fixed by Michael Paquier. + + + + + + Fix message level when GTM master connects to GTM standby. + Reported by Nikhil Sontakke. + Fixed by Koichi Suzuki. + + + + + + Fix of potential memory leak at GTM. + By Nikhil Sontakke. + Reviewed by Koichi Suzuki. + + + + + + Fix GTM bug to craete more than 1024 sequences. + By Koichi Suzuki. + + + + + + Fix initdb usage and error message Bug ID: 3614712. + By Masataka Saito. + + + + + + Fix a documentation bug about CREATE NODE. + By Masataka Saito. + + + + + + Fix GTM bug when GTM Proxy requested multiple GXIDs. + Reported and fixed by Nikhil Sontakke. + + + + + + Fix disconnect handling at GTM proxy. + Reported and fixed by Andrei Martsinchyk. + + + + + + + + + + + + Release 1.0.3 + + + Release Date + 2013-04-27 + + + + This release contains fixes in PostgreSQL 9.1.8 and PostgreSQL 9.1.9, as well as a couple + of fixes in Postgres-XC. + For informations about new feature in the 1.0 major release, see + . + For information about fixes in the 1.0.1 and 1.0.2 minor releases, see + and + respectively. + + + + Migrations to Version 1.0.3 + + + A dump/restore is not required for those running 1.0.x. + + + + + + Changes + + + + + + Fixed behavior of gtm_ctl -w start command behavior to be + the same as those of pg_ctl. Nikhil Sontakke provided the + original fix. + + + + + + Fixed typo in max_coordinators and max_datanodes + description in the document, by Michael Paquier. + + + + + + Fixed gtm slave crash. Nikhil Sontakke reported this possiblity and provided + the fix. + + + + + + + + + + + Release 1.0.2 + + + Release Date + 2013-02-05 + + + + This release contains a variety of fixes from 1.0.1. + For information about new features in the 1.0 major release, see + . + + + + Migration to Version 1.0.2 + + + A dump/restore is not required for those running 1.0.X. + + + + + + Changes + + + + + + Fix for bug 3602944: Fixed gtm_ctl to solve + the PATH dependency. (Nikhil Sontakke) + + + + + + Fix for bug 3601255: Fixed the planner to disable FQS for all + the OUTER joins. + (Ashutosh Bapat) + + + + + + Fix for bug 3600220: Fixed coordinator/datanode to unregister + themselves from GTM while restarting after + "-m immediate" shutdown. + (Koichi Suzuki) + + + + + + Fixed gtm_ctl for "status" + command with "-Z gtm" to show the status correctly. + (Koichi Suzuki) + + + + Now for -Z gtm option, + gtm_ctl status displays if it runs as + master or slave. + + + + + + Rebased from PostgreSQL 9.1.6 to 9.1.7, and fixed several regression + test failures, which had been newly introduced during the rebase. + (Satoshi Nagayasu) + + + + + + Fix for bug 3597414: Fixed the planner for JOIN between two distributed + tables to be pushable when on only one node. + (Ashutosh Bapat) + + + + + + Fix for bug 3598637: Fixed GTM standby to avoid occasional crash. + (Koichi Suzuki) + + + + + + Fixed GTM to deal with a promoted master correctly while restarting. + (Nikhil Sontakke, Koichi Suzuki) + + + + + + Fix for bug 3583921: Fixed coordinator slave (and possibly datanode too) + to avoid crash due to "too many KnownAssignedXids". + (Koichi Suzuki) + + + + + + Fix for bug 3598030: Fixed to allow commit/abort transactions while + connecting to the datanode directly. + + + + + + Fix for bug 3591285: Fixed autovacuum crash in datanode. + (Koichi Suzuki) + + + + + + Fix for bug 3571154: Fixed GTM proxy error while reconnecting. + (Koichi Suzuki) + + + + + + Fixed libgtmclient.a to surpress debug messages. + (Koichi Suzuki) + + + + + + Fixed GTM proxy to have appropriate default values (retry count and + retry interval) for GTM proxy HA. + (Koichi Suzuki) + + + + + + Fix for bug 3588869: Fixed GTM proxy to avoid stall while reconnecting. + (Koichi Suzuki) + + + + + + Fixed to enforce autocommit when running ALTER DATABASE SET + TABLESPACE. + (Michael Paquier) + + + + + + Fixed pgxc_clean for -s, + --status option working correctly. + (Koichi Suzuki) + + + + + + Fixed "SET XC_MAINTENANCE_MODE = ON" to ignore + "template0" database. + (Koichi Suzuki) + + + + + + Fixed GTM and GTM proxy for inaccurate default values of the port number. + (Koichi Suzuki) + + + + + + Added GTM header files in installation to allow compiling server modules. + (Michael Paquier) + + + + + + Added support to create cached plans for XC-specific DDL commands. + (Michael Paquier) + + + + This allows to use cached plans or prepared queries for following + commands: CREATE NODE, ALTER NODE, + DROP NODE, CREATE NODE GROUP, + DROP NODE GROUP, CLEAN CONNECTION. + + + + + + Fixed CREATE NODE GROUP/DROP NODE + GROUP commands to stop query pushdown to remote nodes. + (Michael Paquier) + + + + + + Fixed memory allocation issues pointed by ElectricFence (libefence). + (Michael Paquier) + + + + + + Fixed memory corruption in GTM/backend buffer for snapshots and + transaction IDs. + (Michael Paquier) + + + + + + Fixed COPY command to deal with quoted column names. + (Nikhil Sontakke, Michael Paquier) + + + + + + Fixed to ignore automatically generated regression outputs specific + to Postgres-XC. + (Michael Paquier) + + + + + + Fixed COPY command to avoid crash when involving + relation with no locator data. + (Michael Paquier) + + + + + + Fixed ALTER NODE to allow modifying primary node data. + (Michael Paquier) + + + + + + Fixed compilation error in pg_dump. + (Michael Paquier) + + + + + + Changed current value management of sequences to make it consistent + with vanilla. + (Michael Paquier) + + + + + + Fixed pg_dump to get consistent sequence dump value. + (Nikkhil Sontakke, Michael Paquier) + + + + + + Fixed and improved docs for several XC-specific commands, options and + parameters. + (Koichi Suzuki, Michael Paquier) + + + + + + + + + + + Release 1.0.1 + + + Release Date + 2012-09-05 + + + + This release contains a variety of fixes from 1.0.0. + For information about new features in the 1.0 major release, see + . + + + + Migration to Version 1.0.1 + + + A dump/restore is not required for those running 1.0.X. + + + + + + Changes + + + + + + Make data ordering consistent in query for test join.sql (Michael Paquier) + + + + Regression test join failed occasionally depending on the cluster + configuration. + + + + + + Fix for sequence removal on GTM when related database is dropped + (Michael Paquier, Dimitrije Radojevic) + + + + There was an error on GTM side when comparing sequence key strings + related to key size when sequence drop is based on a sequence key type + GTM_SEQ_DB_NAME. + + + + + + Fix for INSERT SELECT for partially replicated tables. + Remote DML planning was not taking into account the node list + to be used on a relation when modifying data on it. (Michael Paquier) + + + + + + Push -l option of gtm_ctl to gtm (Michael Meskes). + + + + This avoids to have an empty output file when gtm_ctl has a log file defined + and change log file name of GTM according to what is given by gtm_ctl + + + + + + Fix for crash at gtm_proxy startup in 32b-linux machines (Koichi Suzuki, Plexo Rama) + + + + This fix adds an additional boolean flag in GTM-Proxy thread info + to make it similar to the one used in GTM. The problem which was + happening was that GTM-Proxy tried to use the memory structure of + the thread info of GTM. + Crash problems are solved but we should find in the future a smarter + way to manage GTM and GTM-Proxy memory allocation APIs as they are + now strongly dependant on each other and we may find similar issues + if some new developments are done on GTM and/or GTM-Proxy. + + + + + + Activate gtm_ctl status (Koichi Suzuki, Michael Paquier) + + + + gtm_ctl can control the status of a GTM server like + pg_ctl does with PostgreSQL instances (in the case of + Postgres-XC Coordinator and Datanode). + + + + + + Fix for incorrect COPY for partially distributed tables (Michael Paquier) + + + + When a table was distributed on a portion of nodes. COPY process + was not correctly choosing the output node during a COPY TO. This + problem has been put into light by a case where table was replicated + without using the first datanode of the cluster. It happened that + there was the same problem for hash/modulo tables as well. + A test case in xc_copy has been added to cover this problem, and + a small portion managing COPY TO in execRemote.c has been cleaned. + + + + + + Correct whitespaces, format and message format in gtm_client.c (Andrei Martsinchyk) + + + + This had consequences on the data types of the values sent by + GTM which was not matching those GTM Standby was trying to read. + + + + + + Solve SEGENV for GTM-Standby (Andrei Martsinchyk) + + + + Wrong variable was referenced when writing terminating null at the + end of a string. It caused seg faults, because the referenced variable + was not initialized yet. + + + + + + Introduce new GTM thread status managing thread backup (Andrei Martsinchyk) + + + + In the case of a GTM standby crash during the initial backup, the + master GTM remained locked. The origin of this problem was during + GTM backup process, where GTM locks all its threads one by one, + performs a backup and then releases everything. + This commit adds an additional control layer able to detect the + thread status during backup. The new status GTM_THREAD_BACKUP is + introduced for this purpose. Once backup is performed, the thread + status is changed to GTM_THREAD_RUNNING. + Hence, if the handler (GTM) is invoked upon sudden disconnection for + backend (here GTM-Standby) disconnect of its connection and it sees + that the current thread has status GTM_THREAD_BACKUP it goes ahead + and releases the locks. + + + + + + Release GTM thread lock before exit (Andrei Martsinchyk) + + + + This avoid to have another thread waiting for it, as it is possible + it waits for it. + + + + + + Block GXID generation on standbys (Andrei Martsinchyk) + + + + If a node accidentally connects to the Standby and reconnects to the + Master afterwards, it will get an inconsistent GXID value since GTM + Master is not aware of GXIDs generated by GTM Standby. + + + + + + validate_part_col_updatable was falsely assuming that the table with no + location info is as good as non-existent table. This assumption is not true for + catalogs or coordinator only tables. In such cases, this function should not look for any + distribution column, since one can not exist for a table local to the + coordinator (Ashutosh Bapat) + + + + + + Fix for bug 3556031: pgadmin3 connection error (Michael Paquier) + + + + pgadmin3 parses the output of SELECT version() to determine + the server version it is connecting to. For Postgres-XC, this + output result was changed and completed with Postgres-XC and + PostgreSQL version. pgadmin thought that the version of server + was the one of Postgres-XC, meaning 1.0 for 1.0 stable + and 1.1 for master branch. In consequence to that, SQL queries with + very old catalog were run to server, and of course errors were reported + to client and pgadmin could not work correctly. + This is solved with changing back version() to its former output. + An additional function pgxc_version() is added to provide a way + for application to inform about Postgres-XC version and + the PostgreSQL version it is based on. + + + + + + Refactoring of pg_regress.c due to bugs with O2 compilation (Michael Paquier) + + + + When code was being compiled with O2, initialization and start-up + of GTM was done twice, creating errors in log files. + In consequence, functions related to start and initialization of + PGXC nodes and GTM are unified to clarify code and additional checks + are added to verify that nodes have been correctly started. + + + + + + Fix compilation flag O2 not set in CFLAGS at configure step by default (Michael Paquier) + + + + The flag -DPGXC is mandatory for correct compilation and is set once + all the compilation flags have been determined. + + + + + + Block EXECUTE DIRECT when used from a Datanode (Michael Paquier) + + + + This caused the Datanode to crash, and it is however a functionality + only usable by Coordinators. + + + + + + Fix snapshot management on slave nodes and on Datanodes accessed directly by + applications (Michael Paquier) + + + + A slave node session acquires its snapshot directly from WAL like + PostgreSQL does. Also, a Datanode is now able to get a global snapshot directly + from GTM, avoiding WARNING messages that a snapshot is not available. + + + + Queries interacting with remote nodes running on slave nodes are blocked. + Such queries need a global snapshot and a new transaction ID, but sessions + on slave nodes cannot acquire that. + + + + + + Correct query generation of COPY with quoted table names (Nikhil Sontakke) + + + + + + Fix race condition in GXID generation for autovacuum wraparound (Michael Paquier) + + + + When an autovacuum wraparound begins, a global snapshot with a + global GXID is obtained from GTM. After getting this snapshot, + the code checks for wraparound conditions. Before this check, the + lock on GXID generation is released and then taken back. Just after + taking back the lock the GXID is updated to the latest value in cache. + However, during this time it is possible that ShmemVariableCache->nextXid + is updated by another local session that obtained a transaction ID + from GTM. GXID generation concurrency is managed globally at GTM, so we + cannot rely here on the local ShmemVariableCache->nextXid to update the + GXID of autovacuum. Updating it to a wrong value makes is async with GTM + information and such autovacuum is not able to gather a global snapshot + correctly, making the autovacuum session inconsistent with the other global + sessions. This could fatally crash a node under certain conditions like + GXID being updated concurrently by multiple sessions at the same time + during the wraparound condition checks. + + + + + + Fix for DDL ALTER ROLE ... REPLICATION not recognized (Nikhil Sontakke) + + + + PostgreSQL 9.1 code uses the word REPLICATION in + ALTER TABLE as a portion of IDENT. However it is a + reserved keyword in Postgres-XC due to its use in clause DISTRIBUTE BY, + extension of CREATE TABLE and ALTER TABLE. + So here what is done is completing deparsing of ALTER ROLE to use + REPLICATION as a normal reserved keyword. + + + + + + Fix GTM startup with "*" set as listen_addresses on OSX (Michael Paquier) + + + + On OSX, GTM was not able to start with default parameter values. + This had side effects on regressions with make check, making impossible + to run a simple default regression test. + + + + + + + + + + + Release 1.0 + + + Release Date + 2012-06-07 + + + + Overview + + + Postgres-XC 1.0 is a symetric (multi-master, read and write-scalable) + shared-nothing cluster based on PostgreSQL. This release version is based on + PostgreSQL 9.1. + + + + Currently the only architectures supported are 64 bit Linux operating systems. + + + + This release of Postgres-XC is the first major release and + contains the following features, characteristics and enhancements: + + + + + + + Support and extensions for existing features of PostgreSQL in a cluster-wide environment. + + + + + + SQL extensions and functionalities exclusive to Postgres-XC for management + and operations related to a cluster, which add a node-level granularity for + cluster operations. + + + + + + Creation of Global Transaction Manager (GTM), which is a centralized component + providing cluster-wide Multi-version Concurrency Control (MVCC). + + + + + + Creation of mechanisms exclusive to Postgres-XC and enhancements of existing + internal mechanisms of PostgreSQL, which are related to connection pooling, + global transaction management, query planning, rewriting, analyzing and execution. + + + + + + Restrictions related to existing features in PostgreSQL and currently not supported by + Postgres-XC. + + + + + + The above items are explained in more detail in the sections below. + + + + The original overall architecture and design of Postgres-XC is by Koichi Suzuki, Mason Sharp, + Pavan Deolasee, Andrei Martsinchyk and Michael Paquier. Koichi Suzuki is the original project lead. + + + + + + + Details + + + This section is divided into the following parts: + + + + + + Existing standard features supported and related extensions + + + + + SQL extensions exclusive to Postgres-XC + + + + + Internal mechanisms exclusive to Postgres-XC + + + + + Global transaction management features + + + + + Restrictions + + + + + + Existing standard features supported and related extensions + + + This is an exhaustive list of all the features included in PostgreSQL + and currently supported in Postgres-XC. Some features have needed extensions. + In this case, the contributors are specified. If not listed in the restrictions, + all the PostgreSQL standard functionalities are supported and are expected to work. + + + + + + + List of all the CREATE/ALTER/DROP SQL commands supported. All the features listed + here work like native PostgreSQL. Extensions may have been added to make them usable + in a cluster environment. + + + CREATE USER, + ALTER USER, + DROP USER, + CREATE AGGREGATE, + ALTER AGGREGATE, + DROP AGGREGATE, + CREATE COLLATION, + ALTER COLLATION, + DROP COLLATION, + CREATE CONVERSION, + ALTER CONVERSION, + DROP CONVERSION, + CREATE DATABASE, + ALTER DATABASE, + DROP DATABASE, + ALTER DEFAULT PRIVILEGES, + CREATE DOMAIN, + ALTER DOMAIN, + DROP DOMAIN, + CREATE FUNCTION, + ALTER FUNCTION, + DROP FUNCTION, + CREATE GROUP, + ALTER GROUP, + DROP GROUP, + CREATE INDEX, + ALTER INDEX, + DROP INDEX, + CREATE LANGUAGE, + ALTER LANGUAGE, + DROP LANGUAGE, + CREATE OPERATOR CLASS, + ALTER OPERATOR CLASS, + DROP OPERATOR CLASS, + CREATE OPERATOR FAMILY, + ALTER OPERATOR FAMILY, + DROP OPERATOR FAMILY, + CREATE ROLE, + ALTER ROLE, + DROP ROLE, + CREATE SCHEMA, + ALTER SCHEMA, + DROP SCHEMA, + CREATE SEQUENCE, + ALTER SEQUENCE, + DROP SEQUENCE, + CREATE TABLE, + ALTER TABLE, + DROP TABLE, + CREATE TABLESPACE, + ALTER TABLESPACE, + DROP TABLESPACE, + CREATE TEXT SEARCH CONFIGURATION, + ALTER TEXT SEARCH CONFIGURATION, + DROP TEXT SEARCH CONFIGURATION, + CREATE TEXT SEARCH DICTIONARY, + ALTER TEXT SEARCH DICTIONARY, + DROP TEXT SEARCH DICTIONARY, + CREATE TEXT SEARCH PARSER, + ALTER TEXT SEARCH PARSER, + DROP TEXT SEARCH PARSER, + CREATE TEXT SEARCH TEMPLATE, + ALTER TEXT SEARCH TEMPLATE, + DROP TEXT SEARCH TEMPLATE, + CREATE TYPE, + ALTER TYPE, + DROP TYPE, + CREATE USER, + ALTER USER, + DROP USER, + CREATE VIEW, + ALTER VIEW, + DROP VIEW, + CREATE CAST, + DROP CAST, + CREATE RULE, + DROP RULE, + CREATE TABLE AS, + + + + List of other supported SQL + + ANALYZE, + BEGIN, + CHECKPOINT, + CLOSE, + CLUSTER, + COMMENT, + COMMIT, + COMMIT PREPARED, + COPY, + DEALLOCATE, + DECLARE, + DELETE, + DISCARD, + DO, + END, + EXECUTE, + EXPLAIN, + FETCH, + GRANT, + INSERT, + LOAD, + LOCK, + MOVE, + PREPARE, + PREPARE TRANSACTION, + REASSIGN OWNED, + REINDEX, + RESET, + REVOKE, + ROLLBACK, + ROLLBACK PREPARED, + SELECT, + SELECT INTO, + SET, + SET CONSTRAINTS, + SET ROLE, + SET SESSION AUTHORIZATION, + SHOW, + START TRANSACTION, + TRUNCATE, + UPDATE, + VACUUM, + VALUES + + + + + + HOT-Standby and streaming replication, working as in native PostgreSQL, + at the Coordinator and Datanode level. + + + + + + pg_dump (Michael Paquier): extension to manage table distribution type + in a dump. + + + + + + initdb (Michael Paquier): addition of a new mandatory option to specify + a node name when initializing it. This adds a parameter (pgxc_node_name) to the + node's postgresql.conf file that the node uses to identify itself. + + + + + + ORDER BY, LIMIT, OFFSET clauses: + those clauses can be evaluated directly on Datanodes or on Coordinators depending on how + query is shippable or not to remote nodes (Andrei Martsinchyk). + + + + + + Table distribution definition (Mason Sharp, Abbas Butt, Michael Paquier): + CREATE TABLE has been extended with DISTRIBUTE BY + to be able to specify the table distribution at table creation. Distribution is tuple-based. + Four types are supported: replication, hash-distribution, modulo-distribution and round + robin. + + + The node list where table data is stored can also be defined with the extension TO NODE + or TO GROUP. + + + All the distribution data is stored in catalog pgxc_node + . + + + + + + JOIN clauses (Mason Sharp, Andrei Martsinchyk): extension to generate a remote join plan + depending on the quals used in queries and table distribution types. This remote join plan + can be reduced depending on distribution types or nodes where table data is located. + + + + + + GROUP BY clause (Ashutosh Bapat): some optimizations have been added in planner to evaluate if a clause + can be shipped to remote nodes or not. + + + + + + Window functions (Ashutosh Bapat): such functions are not shipped to remote nodes and are exclusively + evaluated on Coordinator + + + + + + INSERT with multiple values (Wang Diancheng, Pavan Deolasee): this feature + has been extended to manage the case of distributed tables by hash, modulo or round robin. + + + + + + Aggregate functions (Andrei Martsinchyk, Ashutosh Bapat): a collection function is determined on Coordinator to collect + correctly the results from Datanodes. + + + + + + SELECT FOR UPDATE (Abbas Butt). The implementation is not the most performant + as in the case of a join on native PostgreSQL, where locks are taken on the tuples where join + condition is achieved, but instead locks are taken on all the tuples used to evaluate the join condition. + + + + + + SERIAL types (Michael Paquier): they behave like native PostgreSQL, but an extension has been + added to create the table having SERIAL columns in cluster correctly. + + + + + + TABLESPACE (Michael Paquier): an extension has been made to allow nodes to share + the same tablespace repository even if those nodes are on the same server. It is + possible to use EXECUTE DIRECT + with CREATE TABLESPACE + and DROP TABLESPACE to + choose the tablespace folder for each node. + + + + + + INSERT SELECT (Pavan Deolasee): extensions have + been done to manage that for all the table distribution types. + + + + + + PREPARE and EXECUTE (Andrei Martsinchyk, Ashutosh Bapat): + extensions have been done to send parse and bind parameters to remote Datanodes. Those functions + behave like in vanilla. + + + + + + EXPLAIN (Andrei Martsinchyk, Ashutosh Bapat, Michael Paquier): Addition of options to + print the nodes involved in query, as well as extensions to print remote queries for remote node plans. + + + + + + COPY (Andrei Martsinchyk, Amit Khandekar): some extension has been + added to copy data to remote nodes depending on table distribution. Support for + BINARY and DEFAULT columns using non-shippable + expressions as default expressions are also supported. + + + + + + CREATE TABLE AS and SELECT INTO (Pavan Deolasee): + Support is extended with remote node planning and table distributions. Table distribution + can be specified for CREATE TABLE AS. SELECT INTO + uses the default distribution type, i.e distribution by hash on the first + column found as hashable or round robin if nothing can be used as a distribution key. + + + + + + Session parameters (Michael Paquier): session and local parameters are all supported. + Those parameters are managed with connection pooling. Connections with user-customized session + parameters are locked in session and not pulled back to pool. When a session finishes, session + parameter reset is made on each connection that was used by session and then pulled back to + connection pool. + + + + + + Sequence consistency in transaction blocks (Michael Paquier): As sequence values + are evaluated in Global Transaction Manager, a callback mechanism for the following + cases has been created. + + + + + + Drop a sequence on GTM when the transaction that created this sequence aborts. + + + + + Drop a sequence on GTM when the transaction that dropped this sequence commits. + + + + + Fallback to its former name a sequence whose name has been modified in a transaction + that aborts. + + + + + + + + + System functions (Amit Khandekar and Koichi Suzuki): most of them are working like native but some extensions have been + added for relation-size functions (pg_relation_size(), pg_tablespace_size() + , pg_database_size()) and locking functions. + + + + + + New configuration parameters in postgresql.conf + + + + + pooler_port + Port opened by pooler to which backends can connect to communicate with + + + min_pool_size + Minimum number of connections in pool + + + max_pool_size + Maximum number of connections in pool + + + persistent_Datanode_connections + On/off switch to make sessions keep the same connections when used. + This may be useful in lower concurrency environments with many session + parameters set. + + + + max_coordinators + Maximum number of Coordinators that can be defined in local node + + + max_datanodes + Maximum number of Datanodes that can be defined in local node + + + gtm_host + Host to connect to GTM + + + gtm_port + Port to connect to GTM + + + pgxc_node_name + Name of the local node. This is currently set by initdb. + + + strict_statement_checking + Forbid unsafe SQL + + + enforce_two_phase_commit + Control parameter used for temporary objects to enforce the use of autocommit on transactions + that used temporary objects if disabled. + + + + + + + + + SQL extensions exclusive to <productname>Postgres-XC</> + + + This section lists all the new SQL functionalities and system functions that are exclusive to Postgres-XC + and can be used to manage a cluster environment. + + + + + + CREATE NODE, + ALTER NODE, + DROP NODE (Michael Paquier, Abbas Butt) + + + These SQL commands are used to manage cluster node information in catalog + pgxc_node. + + + These commands run only on the local node where they are run, and running them on Datanodes + make no sense as this catalog data is used only by Coordinator to identify remote nodes + and by connection pooling to get necessary remote connection information. + + + + + + CREATE NODE GROUP, + DROP NODE GROUP (Michael Paquier, Abbas Butt) + + + CREATE NODE GROUP and DROP NODE GROUP manage the node groups that + can be used when creating a table with the extension TO GROUP of CREATE TABLE. + + + + + + CREATE BARRIER (Pavan Deolasee) + + + When specified with an ID, this command allows to register in all of the nodes of the cluster + a common and consistent time point to be able to recover all the nodes consistently back to + this point. Internally, a barrier is written in the WAL file of all of the nodes. + + + recovery_target_barrier in recovery.conf can be used to recover + a node to a given barrier ID. + + + + + + CLEAN CONNECTION (Michael Paquier) + + + CLEAN CONNECTION is a connection pooling utility able to drop connections on chosen node(s) + for a given database or/and user. + + + + + + pgxc_pool_check(), pgxc_pool_reload() (Michael Paquier, Abbas Butt) + + + Those system functions can be used to check or update the data cached in pooler with + pgxc_node. pgxc_pool_check() + checks if the connection information is consistent between pooler cache and catalogs. + pgxc_pool_reload() updates the connection information cached in pool. + + + + + + EXECUTE DIRECT (Andrei Martsinchyk, Michael Paquier) + + + EXECUTE DIRECT can be used to launch a query directly to a given node. Only a single node + can be targetted at the same time. + + + INSERT, UPDATE and DELETE are not authorized. + + + Utilities are basically forbidden but some are authorized for cluster management purposes. + + + + + + + + + Internal mechanisms exclusive to <productname>Postgres-XC</> + + + + + Connection pooling (Andrei Martsinchyk, Michael Paquier) + + + + Connection pooling is added on Coordinator to dynamically manage + and with a minimum cost connections to remote nodes. This pooler + uses data of catalog pgxc_node + . It is a separate process that is forked off of the postmaster. + + + + Connection pools are divided per both user and database for security reasons. + + + + + + Fast-query shipping (Mason Sharp, Ashutosh Bapat, Andrei Martsinchyk) + + + + Fast-query shipping (FQS) is an additional planner exclusive to + Postgres-XC designed to determine as fast as possible if a query can be + completely shipped to Datanodes depending on its parsed content. A fallback + to standard planner is made if query cannot be shipped as-is. + + + + + + Remote query planning, standard and remote join (Mason Sharp, Andrei Martsinchyk, Pavan Deolasee, Ashutosh Bapat) + + + + This additional planner can build a plan to replace the PostgreSQL + scan plan by a RemoteQuery plan able to scan remote nodes in executor. This includes + plans to be able to build remote joins, reducible join functionalities are also included. + + + + + + Remote INSERT, UPDATE, DELETE planning (Pavan Deolasee, Michael Paquier) + + + This additional planner can be used by PostgreSQL standard planner + to generate plans for DML queries to remote nodes. Those plans are placed on top + of an inner scan plan. + + + + + + Remode node location identification and data (Michael Paquier, Abbas Butt) + + + Nodes use their names as unique identifiers in the cluster and use the information + stored in pgxc_node + to define the location of remote node to be used. Cluster nodes + can also be defined as groups stored in pgxc_group + . + + + + + + + + + Global Transaction Manager (Pavan Deolasee, with input from Koichi Suzuki and Mason Sharp) + + + Global Transaction manager (GTM) is a module exclusive to Postgres-XC + able to maintain the same level of MVCC as vanilla PostgreSQL by + distributing global transaction ID and global snapshot. GTM is also used to store global + information about two-phase commit transactions when external application requested + it. Sequence information (name, values) is managed directly in GTM. + + + + This section lists all the modules and extensions related to GTM. + + + + GTM-Proxy can be used between Postgres-XC + nodes and GTM to control the number of messages by grouping them. + + + + GTM-Standby is a solution that prevents GTM single point + of failure. (Koichi Suzuki) + + + + + + initgtm (Michael Paquier) + + + Module that can initialize GTM data folder. Can be used to initialize GTM or GTM-Proxy. + + + + + + gtm.conf (Koichi Suzuki) + + + Configuration file of GTM. More details about configuration parameters here. + + + + + + gtm_proxy.conf (Koichi Suzuki) + + + Configuration file of GTM Proxy. More details about configuration parameters here. + + + + + + gtm_ctl + + + Module similar to pg_ctl able to control GTM, GTM-Standby and GTM-Proxy in similar ways. + pg_ctl can be used to reconnect GTM-Proxy to a new GTM and to failover a GTM-Standy to become + a primary GTM. + + + + + + + + + Restrictions + + + + List of all the unsupported SQL commands + + CREATE EXTENSION, + ALTER EXTENSION, + DROP EXTENSION, + CREATE FOREIGN DATA WRAPPER, + ALTER FOREIGN DATA WRAPPER, + DROP FOREIGN DATA WRAPPER, + CREATE FOREIGN TABLE, + ALTER FOREIGN TABLE, + DROP FOREIGN TABLE, + ALTER LARGE OBJECT, + CREATE SERVER, + ALTER SERVER, + DROP SERVER, + CREATE TRIGGER, + ALTER TRIGGER, + DROP TRIGGER, + CREATE USER MAPPING, + ALTER USER MAPPING, + DROP USER MAPPING, + LISTEN, + NOTIFY, + RELEASE SAVEPOINT, + ROLLBACK TO SAVEPOINT, + SAVEPOINT, + SECURITY LABEL, + UNLISTEN, + + + + + + Table distribution definition cannot be changed. + + + + + + Distribution key of a table cannot be updated. + + + + + + Utilities cannot be used in SQL functions. + + + + + + DML cannot be used in plpgsql functions. + + + + + + CREATE TABLE AS EXECUTE is not supported. + + + + + + WHERE CURRENT OF is not supported. + + + + + + RETURNING is not supported. + + + + + + In cursors, MOVE BACKWARD works only if SCROLL + is used in CURSOR + + + + + + WITH HOLD cursors are not supported. + + + + + + Statictics are not managed globally. When requesting statistics + only the data related to node directly connected to is taken into account. + + + + + + Barriers have no timeout functionalities, meaning that if a 2PC transaction is + stuck forever, barrier will be stuck too. + + + + + + + + + + + Acknowledgement + + + + NTT Open Source Software Center + + + EnterpriseDB + + + + + diff --git a/doc-xc/src/sgml/release.sgmlin b/doc-xc/src/sgml/release.sgmlin index 15f273c740..3a5c15ad6a 100644 --- a/doc-xc/src/sgml/release.sgmlin +++ b/doc-xc/src/sgml/release.sgmlin @@ -29,9 +29,7 @@ non-ASCII characters convert to HTML4 entity (&) escapes wrap long lines -For new features, add links to the documentation sections. Use -not just so that generate_history.pl can remove it, so HISTORY.html -can be created without links to the main documentation. Don't use . +For new features, add links to the documentation sections. --> @@ -40,7 +38,12 @@ can be created without links to the main documentation. Don't use . The release notes contain the significant changes in each + + Postgres-XC release, with major features and migration + + PostgreSQL release, with major features and migration + issues listed at the top. The release notes do not contain changes that affect only a few users or changes that are internal and therefore not user-visible. For example, the optimizer is improved in almost every @@ -48,6 +51,19 @@ can be created without links to the main documentation. Don't use . faster queries. + + + A complete list of changes for each release can be obtained by + viewing the Git logs for each release. + The + postgres-xc-committers + email list records all source code changes as well. There is also + a web + interface that shows changes to specific files. + + + A complete list of changes for each release can be obtained by viewing the Git logs for each release. @@ -57,6 +73,7 @@ can be created without links to the main documentation. Don't use . a web interface that shows changes to specific files. + The name appearing next to each item represents the major developer for @@ -71,6 +88,10 @@ can be created without links to the main documentation. Don't use . The reason for splitting the release notes this way is so that appropriate subsets can easily be copied into back branches. --> + +&release-xc-1.0; + + &release-9.1; &release-9.0; &release-8.4; @@ -80,5 +101,6 @@ can be created without links to the main documentation. Don't use . &release-8.0; &release-7.4; &release-old; + diff --git a/doc-xc/src/sgml/runtime.sgmlin b/doc-xc/src/sgml/runtime.sgmlin index 1d9858e2b3..a2789635f3 100644 --- a/doc-xc/src/sgml/runtime.sgmlin +++ b/doc-xc/src/sgml/runtime.sgmlin @@ -78,7 +78,7 @@ &xconly; You should initialize database cluster for - each coordinator and data node. + each Coordinator and Datanode. &common; @@ -94,15 +94,21 @@ linkend="app-initdb">,initdb which is installed with PostgreSQL. The desired + file system location of your database cluster is indicated by the + option, for example: + +$ initdb -D /usr/local/pgsql/data + installed with Postgres-XC. The desired - file system location of your database cluster is indicated by the - option, for example: + option. You also need to define a node name for + the cluster element initialized, for example: -$ initdb -D /usr/local/pgsql/data +$ initdb -D /usr/local/pgsql/data --nodename foo + Note that you must execute this command while logged into the PostgreSQL user account, which is @@ -114,7 +120,7 @@ Postgres-XC user account, which is described in the previous section. You should assign separate data directory to - each coordinator and datanode if you + each Coordinator and Datanode if you are configuring them in a same server. @@ -125,23 +131,33 @@ the environment variable PGDATA. PGDATA - + - If you configure multiple coordinator - and/or data node, you cannot + If you configure multiple Coordinator + and/or Datanode, you cannot share PGDATA among them and you must - specifydata directory explicitly. + specify data directory explicitly. + + + is mandatory for all the nodes at initialization - + &common; Alternatively, you can run initdb via the programpg_ctl like so: + $ pg_ctl -D /usr/local/pgsql/data initdb + + + +$ pg_ctl -D /usr/local/pgsql/data -o '--nodename foo' initdb + + This may be more intuitive if you are using pg_ctl for starting and stopping the server (see ), so @@ -166,7 +182,7 @@ root# mkdir /usr/local/pgsql/data root# chown postgres /usr/local/pgsql/data root# su postgres -postgres$ initdb -D /usr/local/pgsql/data +postgres$ initdb -D /usr/local/pgsql/data --nodename foo @@ -287,9 +303,7 @@ postgres$ initdb -D /usr/local/pgsql/data Datanode. You must configure and start each of them. Following sections will give you how to configure and start them. - Other components such - as pgxc_config, XCM, pgxc_clean, xc_watcher - and GTM-Standby will be described in high-availability + pgxc_clean and GTM-Standby are described in high-availability sections. @@ -303,10 +317,10 @@ postgres$ initdb -D /usr/local/pgsql/data initialize these database. Coordinator holds just database catalog and temporary data store. Datanode holds most of your data. - First of all, you should determine how many coordinators/datanodes + First of all, you should determine how many Coordinators/Datanodes to run and where they should run. - It is a good convention that you run a coordinator where you run a - datanode. + It is a good convention that you run a Coordinator where you run a + Datanode. In this case, you should run GTM-Proxy on the same server too. It simplifies XC configuration and help to make @@ -314,7 +328,7 @@ postgres$ initdb -D /usr/local/pgsql/data - Both coordinator and datanode have their + Both Coordinator and Datanode have their own databases, essentially PostgreSQL databases. They are separate and you should initialize them separately. @@ -326,8 +340,8 @@ postgres$ initdb -D /usr/local/pgsql/data GTM provides global transaction management feature to all the other components in Postgres-XC database cluster. - Because GTM handles transaction requirements from all - the coordinators and datanodes, it is highly advised to run this + Because GTM handles transaction requirements from all + the Coordinators and Datanodes, it is highly advised to run this in a separate server. @@ -342,16 +356,16 @@ postgres$ initdb -D /usr/local/pgsql/data - Because GTM receives all the request to begin/end + Because GTM receives all the request to begin/end transactions and to refer to sequence values, you should - run GTM in a separate server. If you - run GTM in the same server as datanode or - coordinator, it will become harder to make workload reasonably + run GTM in a separate server. If you + run GTM in the same server as Datanode or + Coordinator, it will become harder to make workload reasonably balanced. - Then, you should determine GTM's working directory. - Please create this directory before you run GTM. + Then, you should determine GTM's working directory. + Please create this directory before you run GTM. @@ -361,7 +375,7 @@ postgres$ initdb -D /usr/local/pgsql/data Next, you should determine listen address and port - of GTM. + of GTM. Listen address can be either the IP address or host name which receives request from other component, typically GTM-Proxy. @@ -373,12 +387,12 @@ postgres$ initdb -D /usr/local/pgsql/data GTM id - You have a chance to run more than one GTMs in + You have a chance to run more than one GTM in one Postgres-XC cluster. - For example, if you need a backup of GTM in + For example, if you need a backup of GTM in high-availability environment, you need to run - two GTMs. - You should give unique GTM id to each of such GTMs. + two GTMs. + You should give unique GTM id to each of such GTMs. GTM id value begins with one. @@ -387,19 +401,31 @@ postgres$ initdb -D /usr/local/pgsql/data - When they're determined, you can start GTM as follows: + When this is determined, you can initialize GTM with the command , + for example: + +$ initgtm -Z gtm -D /usr/local/pgsql/data_gtm + + + + + All the parameters related to GTM can be modified in gtm.conf + located in data folder initialized by initgtm. + + + + Then you can start GTM as follows: -$ gtm -D /usr/local/pgsql/gtm -i 1 -h localhost -p 20001 +$ gtm -D /usr/local/pgsql/data_gtm - where - Or you can start GTM using gtm_ctl like: + Alternatively, GTM can be started using gtm_ctl, for example: -$ gtm_ctl -S gtm start -D /usr/local/pgsql/gtm -o "-i 1 -h gtm -p 20001" +$ gtm_ctl -Z gtm start -D /usr/local/pgsql/data_gtm @@ -408,14 +434,9 @@ $ gtm_ctl -S gtm start -D /usr/local/pgsql/gtm -o "-i 1 -h gtm -p 200 Starting GTM-Proxy &xconly; - To be honest, you don't have to run GTM-Proxy if you - just want to test Postgres-XC. - On the other hand, because GTM has to handle so many - requirements and deliver responses to them, GTM's - workload becomes an issue. - Because GTM-Proxy groups requirements and response - from coordinators and datanode, it is - important to keep GTM workload in reasonable level. + GTM-Proxy is not a mandatory component of Postgres-XC cluster but + it can be used to group messages between GTM and cluster nodes, + reducing worload and the number of packages exchanged through network. @@ -427,34 +448,44 @@ $ gtm_ctl -S gtm start -D /usr/local/pgsql/gtm -o "-i 1 -h gtm -p 200 You should also use GTM's address and port to start GTM-Proxy. + + Then, you need first to initialize GTM-Proxy with initgtm, + for example: + +$ initgtm -Z gtm_proxy -D /usr/local/pgsql/data_gtm_proxy + + + + + All the parameters related to GTM-Proxy can be modified in gtm_proxy.conf + located in data folder initialized by initgtm. + + Then, you can start GTM-Proxy like: -$ gtm_proxy -D /usr/local/pgsql/gtm_proxy -i 1 -h server1 -p 20002 -n 2 -s gtm -t 20001 +$ gtm_proxy -D /usr/local/pgsql/data_gtm_proxy where - Or you can start GTM-Proxy using gtm_ctl + Alternatively, you can start GTM-Proxy using gtm_ctl as follows: -$ gtm_ctl start -S gtm_proxy -i 1 -D /usr/local/pgsql/gtm_proxy -i 1 -o "-1 1 -h server1 -p 20002 -n 2 -s gtm -t 20001" +$ gtm_ctl start -Z gtm_proxy -D /usr/local/pgsql/data_gtm_proxy - + Configuring Datanode &xconly; - Before starting coordinator or datanode, you must configure them. - You can configure coordinator or datanode by + Before starting Coordinator or Datanode, you must configure them. + You can configure Coordinator or Datanode by editing postgresql.conf file located at their working directory as you specified by @@ -475,12 +506,12 @@ $ gtm_ctl start -S gtm_proxy -i 1 -D /usr/local/pgsql/gtm_proxy -i 1 This value is not just a number of connections you expect to each - coordinator. - Each coordinator backend has a chance to connect to all the - datanode. - You should specify number of total connections whole coordinator + Coordinator. + Each Coordinator backend has a chance to connect to all the + Datanode. + You should specify number of total connections whole Coordinator may accept. - For example, if you have five coordinators and each of them may + For example, if you have five Coordinators and each of them may accept forty connections, you should specify 200 as this parameter value. @@ -492,8 +523,8 @@ $ gtm_ctl start -S gtm_proxy -i 1 -D /usr/local/pgsql/gtm_proxy -i 1 Even though your application does not intend to - issue PREPARE TRANSACTION, coordinator may issue this - internally when more than one datanode are involved. + issue PREPARE TRANSACTION, Coordinator may issue this + internally when more than one Datanode are involved. You should specify this parameter the same value as max_connections. @@ -504,7 +535,7 @@ $ gtm_ctl start -S gtm_proxy -i 1 -D /usr/local/pgsql/gtm_proxy -i 1 pgxc_node_name - GTM needs to identify each datanode, as specified by + GTM needs to identify each Datanode, as specified by this parameter. The value should be unique and start with one. @@ -515,8 +546,8 @@ $ gtm_ctl start -S gtm_proxy -i 1 -D /usr/local/pgsql/gtm_proxy -i 1 port - Because both coordinator and datanode may run on the same server, - you may want to assign separate port number to the datanode. + Because both Coordinator and Datanode may run on the same server, + you may want to assign separate port number to the Datanode. @@ -547,11 +578,11 @@ $ gtm_ctl start -S gtm_proxy -i 1 -D /usr/local/pgsql/gtm_proxy -i 1 - + Configuring Coordinator &xconly; - Although coordinator and datanode shares the same binary, their + Although Coordinator and Datanode shares the same binary, their configuration is a little different due to their functionalities. @@ -561,9 +592,9 @@ $ gtm_ctl start -S gtm_proxy -i 1 -D /usr/local/pgsql/gtm_proxy -i 1 max_connections - You don't have to take other coordinator or datanode into + You don't have to take other Coordinator or Datanode into account. - Just specify the number of connections the coordinator accepts + Just specify the number of connections the Coordinator accepts from applications. @@ -573,7 +604,7 @@ $ gtm_ctl start -S gtm_proxy -i 1 -D /usr/local/pgsql/gtm_proxy -i 1 max_prepared_transactions - Specify at least total number of coordinators in the cluster. + Specify at least total number of Coordinators in the cluster. @@ -582,7 +613,7 @@ $ gtm_ctl start -S gtm_proxy -i 1 -D /usr/local/pgsql/gtm_proxy -i 1 pgxc_node_name - GTM needs to identify each datanode, as specified by + GTM needs to identify each Datanode, as specified by this parameter. @@ -592,8 +623,8 @@ $ gtm_ctl start -S gtm_proxy -i 1 -D /usr/local/pgsql/gtm_proxy -i 1 port - Because both coordinator and datanode may run on the same server, - you may want to assign separate port number to the coordinator. + Because both Coordinator and Datanode may run on the same server, + you may want to assign separate port number to the Coordinator. It may be convenient to use default value of PostgreSQL listen port. @@ -685,47 +716,41 @@ $ gtm_ctl start -S gtm_proxy -i 1 -D /usr/local/pgsql/gtm_proxy -i 1 - + Starting Datanodes Now you can start central component - of Postgres-XC, datanode and coordinator. + of Postgres-XC, Datanode and Coordinator. If you're familiar with starting PostgreSQL database server, this step is very similar to PostgreSQL. - You can start a datanode as follows: + You can start a Datanode as follows: -$ postgres -X -D /usr/local/pgsql/datanode -i +$ postgres -X -D /usr/local/pgsql/data - - - You should start all the datanodes you configured. + Datanode. You may need to specify - + Starting Coordinators &xconly; - You can start a coordinator as follows: + You can start a Coordinator as follows: -$ postgres -C -D /usr/local/pgsql/datanode -i +$ postgres -C -D /usr/local/pgsql/Datanode - - - You should start all the coordinators you configured. + Coordinator. You may need to specify @@ -806,10 +831,10 @@ pg_ctl start -l logfile rc.d directories. Whatever you do, the server must be run by the PostgreSQL user account and not by root or any other user. Therefore you - probably should form your commands using su -c '...' - postgres. For example: + probably should form your commands using + su postgres -c '...'. For example: -su -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog' postgres +su postgres -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog' @@ -835,7 +860,7 @@ su -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog' postgres OpenBSDstart script if [ -x /usr/local/pgsql/bin/pg_ctl -a -x /usr/local/pgsql/bin/postgres ]; then - su - -c '/usr/local/pgsql/bin/pg_ctl start -l /var/postgresql/log -s' postgres + su -l postgres -c '/usr/local/pgsql/bin/pg_ctl start -s -l /var/postgresql/log -D /usr/local/pgsql/data' echo -n ' postgresql' fi @@ -1910,13 +1935,14 @@ default:\ way that the kernel implements memory overcommit, the kernel might - terminate the PostgreSQL server (the + terminate the PostgreSQL postmaster (the - terminate the Postgres-XC server (the + terminate the Postgres-XC postmaster (the - master server process) if the memory demands of - another process cause the system to run out of virtual memory. + master server process) if the memory demands of either + PostgreSQL or another process cause the + system to run out of virtual memory. @@ -1953,6 +1979,24 @@ Out of Memory: Killed process 12345 (postgres). swap space are exhausted. + + + If PostgreSQL itself is the cause of the + + + If Postgres-XC itself is the cause of the + + system running out of memory, you can avoid the problem by changing + your configuration. In some cases, it may help to lower memory-related + configuration parameters, particularly + shared_buffers + and work_mem. In + other cases, the problem may be caused by allowing too many connections + to the database server itself. In many cases, it may be better to reduce + max_connections + and instead make use of external connection-pooling software. + + On Linux 2.6 and later, it is possible to modify the kernel's behavior so that it will not overcommit memory. @@ -2023,13 +2067,13 @@ echo -17 > /proc/self/oom_adj &xconly; - This section describes how to shutdown each coordinator and - datanode. - Please note that you should shutdown coordinator first and then - datanodes, GTM-Proxy and GTM. + This section describes how to shutdown each Coordinator and + Datanode. + Please note that you should shutdown Coordinator first and then + Datanodes, GTM-Proxy and GTM. - + Shutting Down Coordinators and Datanodes @@ -2181,7 +2225,7 @@ $ kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid` - Because Postgres-XC's coordinators and datanodes + Because Postgres-XC's Coordinators and Datanodes are essentially PostgreSQL servers, you can follw the steps described below to upgrade each of them. Please note that you should do this manually. @@ -2500,7 +2544,7 @@ pg_dumpall -p 5432 | psql -d postgres -p 5433 While the server is running, it is not possible for a malicious user - While coordinators and datanodes are running, it is not possible for a malicious user + While Coordinators and Datanodes are running, it is not possible for a malicious user to take the place of the normal database server. However, when the server is down, it is possible for a local user to spoof the normal diff --git a/doc-xc/src/sgml/spi.sgmlin b/doc-xc/src/sgml/spi.sgmlin index 97fc78e0fc..86120acfc0 100644 --- a/doc-xc/src/sgml/spi.sgmlin +++ b/doc-xc/src/sgml/spi.sgmlin @@ -319,13 +319,24 @@ int SPI_execute(const char * command, bool rea If count is zero then the command is executed for all rows that it applies to. If count - is greater than 0, then the number of rows for which the command - will be executed is restricted (much like a - LIMIT clause). For example: + is greater than zero, then no more than count rows + will be retrieved; execution stops when the count is reached, much like + adding a LIMIT clause to the query. For example, + +SPI_execute("SELECT * FROM foo", true, 5); + + will retrieve at most 5 rows from the table. Note that such a limit + is only effective when the command actually returns rows. For example, SPI_execute("INSERT INTO foo SELECT * FROM bar", false, 5); - will allow at most 5 rows to be inserted into the table. + inserts all rows from bar, ignoring the + count parameter. However, with + +SPI_execute("INSERT INTO foo SELECT * FROM bar RETURNING *", false, 5); + + at most 5 rows would be inserted, since execution would stop after the + fifth RETURNING result row is retrieved. @@ -334,7 +345,8 @@ SPI_execute("INSERT INTO foo SELECT * FROM bar", false, 5); whole string will be parsed and planned before execution begins. SPI_execute returns the result for the command executed last. The count - limit applies to each command separately, but it is not applied to + limit applies to each command separately (even though only the last + result will actually be returned). The limit is not applied to any hidden commands generated by rules. @@ -438,7 +450,8 @@ typedef struct long count - maximum number of rows to process or return + maximum number of rows to return, + or 0 for no limit @@ -614,15 +627,12 @@ typedef struct Notes - The functions SPI_execute, - SPI_exec, - SPI_execute_plan, and - SPI_execp change both + All SPI query-execution functions set both SPI_processed and SPI_tuptable (just the pointer, not the contents of the structure). Save these two global variables into local procedure variables if you need to access the result table of - SPI_execute or a related function + SPI_execute or another query-execution function across later calls. @@ -677,7 +687,8 @@ int SPI_exec(const char * command, long count< long count - maximum number of rows to process or return + maximum number of rows to return, + or 0 for no limit @@ -816,7 +827,8 @@ int SPI_execute_with_args(const char *command, long count - maximum number of rows to process or return + maximum number of rows to return, + or 0 for no limit @@ -1434,7 +1446,8 @@ int SPI_execute_plan(SPIPlanPtr plan, Datum * long count - maximum number of rows to process or return + maximum number of rows to return, + or 0 for no limit @@ -1553,7 +1566,8 @@ int SPI_execute_plan_with_paramlist(SPIPlanPtr plan, long count - maximum number of rows to process or return + maximum number of rows to return, + or 0 for no limit @@ -1653,7 +1667,8 @@ int SPI_execp(SPIPlanPtr plan, Datum * values< long count - maximum number of rows to process or return + maximum number of rows to return, + or 0 for no limit diff --git a/doc-xc/src/sgml/standalone-install.sgmlin b/doc-xc/src/sgml/standalone-install.sgmlin index c94b397a9d..1942f9dc4c 100644 --- a/doc-xc/src/sgml/standalone-install.sgmlin +++ b/doc-xc/src/sgml/standalone-install.sgmlin @@ -2,21 +2,7 @@ You should run GTM in a separate server because GTM has to take - care of transaction requirements from all the coordinators and - datanodes. To group multiple requirements and responses from - coordinator and datanode running on the same server, you can + care of transaction requirements from all the Coordinators and + Datanodes. To group multiple requirements and responses from + Coordinator and Datanode running on the same server, you can configure GTM-Proxy. GTM-Proxy reduces the number of interaction and the amount of data to GTM. GTM-Proxy also helps to take care of GTM failure. - It is a good convention to run both coordinator and datanode in a + It is a good convention to run both Coordinator and Datanode in a same server because we don't have to worry about workload balance between the two. You can have any number of servers where these - two components are running. Because both coordinator and datanode + two components are running. Because both Coordinator and Datanode are essentially PostgreSQL database, you should configure them to avoid resource conflict. It is very important to assign them different working directory and port number. - Postgres-XC allow multiple coordinators which accept statments + Postgres-XC allow multiple Coordinators which accept statments from applications independently but in an integrated way. Any - writes from any coordinator is available from any other - coordinators. They acts as if they are single database. - Coordinator's role is to accept statments, find what datanodes are - involved, Ode-compose incoming statements for each datanode if - needed, proxy statements to target datanode, collect the results + writes from any Coordinator is available from any other + Coordinators. They acts as if they are single database. + Coordinator's role is to accept statments, find what Datanodes are + involved, Ode-compose incoming statements for each Datanode if + needed, proxy statements to target Datanode, collect the results and write them back to applications. Coordinator does not store any user data. It stores only catalog data to determine how to decompose the statement, where the target - datanodes are, among others. Therefore, you don't have to worry - about coordinator failure much. When the coordinator fails, you + Datanodes are, among others. Therefore, you don't have to worry + about Coordinator failure much. When the Coordinator fails, you can just switch to the other one. @@ -182,7 +182,7 @@ (programs): - As described above, coordinator and datanode + As described above, Coordinator and Datanode of Postgres-XC are essentially PostgreSQL database servers. In database jargon, PostgreSQL uses a client/server @@ -287,7 +287,7 @@ The first test to see whether you can access the database server is to try to create a database. Running - Postgres-XC servers (coordinators and datanodes) can manage many + Postgres-XC servers (Coordinators and Datanodes) can manage many databases. Typically, a separate database is used for each project or for each user. @@ -414,7 +414,7 @@ createdb: database creation failed: ERROR: permission denied to create database createdb: database creation failed: ERROR: source database "template1" is being accessed by other users DETAIL: There are 1 other session(s) using the database. - This means that at least one of the coordinator pooler still holds a connection to template1 database to one of the datanodes. To release them, you should do the following as the database superuser. + This means that at least one of the Coordinator pooler still holds a connection to template1 database to one of the Datanodes. To release them, you should do the following as the database superuser. $ psql ... diff --git a/doc-xc/src/sgml/stylesheet.xsl b/doc-xc/src/sgml/stylesheet.xsl index 19cb5b0f64..2911af0f59 100644 --- a/doc-xc/src/sgml/stylesheet.xsl +++ b/doc-xc/src/sgml/stylesheet.xsl @@ -9,7 +9,7 @@ - + diff --git a/doc-xc/src/sgml/syntax.sgmlin b/doc-xc/src/sgml/syntax.sgmlin index a3b19521b5..c875d3aab4 100644 --- a/doc-xc/src/sgml/syntax.sgmlin +++ b/doc-xc/src/sgml/syntax.sgmlin @@ -1787,9 +1787,6 @@ SELECT string_agg(a ORDER BY a, ',') FROM table; -- incorrect - - - Window Function Calls @@ -1814,10 +1811,10 @@ SELECT string_agg(a ORDER BY a, ',') FROM table; -- incorrect The syntax of a window function call is one of the following: -function_name (expression , expression ... ) OVER ( window_definition ) function_name (expression , expression ... ) OVER window_name -function_name ( * ) OVER ( window_definition ) +function_name (expression , expression ... ) OVER ( window_definition ) function_name ( * ) OVER window_name +function_name ( * ) OVER ( window_definition ) where window_definition has the syntax @@ -1854,15 +1851,14 @@ UNBOUNDED FOLLOWING names or numbers. window_name is a reference to a named window specification defined in the query's WINDOW clause. - Named window specifications are usually referenced with just - OVER window_name, but it is - also possible to write a window name inside the parentheses and then - optionally supply an ordering clause and/or frame clause (the referenced - window must lack these clauses, if they are supplied here). - This latter syntax follows the same rules as modifying an existing - window name within the WINDOW clause; see the - reference - page for details. + Alternatively, a full window_definition can + be given within parentheses, using the same syntax as for defining a + named window in the WINDOW clause; see the + reference page for details. It's worth + pointing out that OVER wname is not exactly equivalent to + OVER (wname); the latter implies copying and modifying the + window definition, and will be rejected if the referenced window + specification includes a frame clause. @@ -1930,8 +1926,6 @@ UNBOUNDED FOLLOWING - - Type Casts @@ -2606,6 +2600,13 @@ SELECT concat_lower_or_upper('Hello', 'World', uppercase := true); having numerous parameters that have default values, named or mixed notation can save a great deal of writing and reduce chances for error. + + + + Named and mixed call notations can currently be used only with regular + functions, not with aggregate functions or window functions. + + diff --git a/doc-xc/src/sgml/textsearch.sgmlin b/doc-xc/src/sgml/textsearch.sgmlin index 1680781374..d81930903f 100644 --- a/doc-xc/src/sgml/textsearch.sgmlin +++ b/doc-xc/src/sgml/textsearch.sgmlin @@ -934,7 +934,7 @@ ts_rank( weights fl - Standard ranking function. + Ranks vectors based on the frequency of their matching lexemes. diff --git a/doc-xc/src/sgml/wal.sgmlin b/doc-xc/src/sgml/wal.sgmlin index 274705ede2..3e714b5f60 100644 --- a/doc-xc/src/sgml/wal.sgmlin +++ b/doc-xc/src/sgml/wal.sgmlin @@ -416,7 +416,7 @@ committing at about the same time. Setting commit_delay can only help when there are many concurrently committing transactions, and it is difficult to tune it to a value that actually helps rather - than hurt throughput. + than hurts throughput. @@ -584,9 +584,7 @@ from having to do writes. On such systems one should increase the number of WAL buffers by modifying the configuration parameter . The default number of WAL - buffers is 8. Increasing this value will - correspondingly increase shared memory usage. When + linkend="guc-wal-buffers">. When is set and the system is very busy, setting this value higher will help smooth response times during the period immediately following each checkpoint. @@ -760,24 +758,24 @@ - User must connect to one of the coordinators and issue the + User must connect to one of the Coordinators and issue the BARRIER command, optionally followed by an identifier. If user does not specify an identifier, an unique identifier will be generated and returned to the caller. Upon - receiving the BARRIER command, the coordinator + receiving the BARRIER command, the Coordinator temporarily pauses any new two-phase commits. It also communicates with - other coordinators to ensure that there are no in-progress two-phase + other Coordinators to ensure that there are no in-progress two-phase commits in the cluster. At that point, a barrier WAL record along with the user-given or system-generated BARRIER identifier - is writtent to the WAL stream of all data nodes and - the coordinators. + is writtent to the WAL stream of all Datanodes and + the Coordinators. User can create as many barriers as she wants to. At the time of point-in-time-recovery, same barrier id must be specified in the - recovery.conf files of all the coordinators and - data nodes. When every node in the cluster recovers to the same barrier + recovery.conf files of all the Coordinators and + Datanodes. When every node in the cluster recovers to the same barrier id, a cluster-wide consistent state is reached. Its important that the recovery must be started from a backup taken before the barrier was generated. If no matching barrier record is found, either because diff --git a/doc-xc/src/sgml/xaggr.sgmlin b/doc-xc/src/sgml/xaggr.sgmlin index 2eecc93b2f..22d18d259e 100644 --- a/doc-xc/src/sgml/xaggr.sgmlin +++ b/doc-xc/src/sgml/xaggr.sgmlin @@ -124,7 +124,7 @@ SELECT sum(a) FROM test_complex; In Postgres-XC, a user can provide collection function if distributed aggregation is expected for improving performance. The collection function essentially combines the state transition results produced - at different data nodes. Without a final function the result produced by the + at different Datanodes. Without a final function the result produced by the collection function is the result of aggregate. Above definition of aggregate sum for complex number data type can be modified to have a collection function as follows diff --git a/doc-xc/src/sgml/xc-constraint.sgmlin b/doc-xc/src/sgml/xc-constraint.sgmlin new file mode 100644 index 0000000000..f89f8627ea --- /dev/null +++ b/doc-xc/src/sgml/xc-constraint.sgmlin @@ -0,0 +1,8 @@ + + + +Postgres-XC supports constraints only enforceable locally. +You should not specify any constraint which need to refer to rows at remote node. + + + diff --git a/doc-xc/src/sgml/xml2.sgmlin b/doc-xc/src/sgml/xml2.sgmlin index fdb753696b..6ace0fd0d0 100644 --- a/doc-xc/src/sgml/xml2.sgmlin +++ b/doc-xc/src/sgml/xml2.sgmlin @@ -24,11 +24,11 @@ That functionality covers XML syntax checking and XPath queries, which is what this module does, and more, but the API is not at all compatible. It is planned that this module will be - removed in PostgreSQL 8.4 in favor of the newer standard API, so + removed in a future version of PostgreSQL in favor of the newer standard API, so you are encouraged to try converting your applications. If you find that some of the functionality of this module is not available in an adequate form with the newer API, please explain - your issue to pgsql-hackers@postgresql.org so that the deficiency + your issue to pgsql-hackers@postgresql.org so that the deficiency can be addressed. diff --git a/doc/README.mb.big5 b/doc/README.mb.big5 deleted file mode 100644 index 529af95591..0000000000 --- a/doc/README.mb.big5 +++ /dev/null @@ -1,326 +0,0 @@ -PostgreSQL 7.0.1 multi-byte (MB) support README May 20 2000 - - Tatsuo Ishii - ishii@postgresql.org - http://www.sra.co.jp/people/t-ishii/PostgreSQL/ - -[��] 1. �P�¥ۤ��F�� (Tatsuo Ishii) ����! - 2. �����������ҵL, ��Ķ�Y�����~, ���p�� cch@cc.kmu.edu.tw - - -0. ²�� - -MB �䴩�O���F�� PostgreSQL ��B�z�h�줸�զr�� (multi-byte character), -�Ҧp: EUC (Extended Unix Code), Unicode (�Τ@�X) �M Mule internal code -(�h��y�����X). �b MB ���䴩�U, �A�i�H�b���W���ܦ� (regexp), LIKE �� -��L�@�Ǩ禡���ϥΦh�줸�զr��. �w�]���s�X�t�Υi���M��A�w�� PostgreSQL -�ɪ� initdb(1) �R�O, ��i�� createdb(1) �R�O�Ϋإ߸�Ʈw�� SQL �R�O�M�w. -�ҥH�A�i�H���h�Ӥ��P�s�X�t�Ϊ���Ʈw. - -MB �䴩�]�ѨM�F�@�� 8 �줸��줸�զr���� (�]�t ISO-8859-1) ���������D, -(�ڨèS�����Ҧ����������D���ѨM�F, �ڥu�O�T�{�F�j�k���հ��榨�\, -�Ӥ@�Ǫk�y�r���b MB �׸ɤU�i�H�ϥ�. �p�G�A�b�ϥ� 8 �줸�r���ɵo�{�F -������D, �гq����) - -1. �p��ϥ� - -�sĶ PostgreSQL �e, ���� configure �ɨϥ� multibyte ���ﶵ - - % ./configure --enable-multibyte[=encoding_system] - % ./configure --enable-multibyte[=�s�X�t��] - -�䤤���s�X�t�Υi�H���w���U���䤤���@: - - SQL_ASCII ASCII - EUC_JP Japanese EUC - EUC_CN Chinese EUC - EUC_KR Korean EUC - EUC_TW Taiwan EUC - UNICODE Unicode(UTF-8) - MULE_INTERNAL Mule internal - LATIN1 ISO 8859-1 English and some European languages - LATIN2 ISO 8859-2 English and some European languages - LATIN3 ISO 8859-3 English and some European languages - LATIN4 ISO 8859-4 English and some European languages - LATIN5 ISO 8859-5 English and some European languages - KOI8 KOI8-R - WIN Windows CP1251 - ALT Windows CP866 - -�Ҧp: - - % ./configure --enable-multibyte=EUC_JP - -�p�G�ٲ����w�s�X�t��, ����w�]�ȴN�O SQL_ASCII. - -2. �p��]�w�s�X - -initdb �R�O�w�q PostgresSQL �w�˫᪺�w�]�s�X, �Ҧp: - - % initdb -E EUC_JP - -�N�w�]���s�X�]�w�� EUC_JP (Extended Unix Code for Japanese), �p�G�A���w -�������r��, �A�]�i�H�� "--encoding" �Ӥ��� "-E". �p�G�S���ϥ� -E �� ---encoding ���ﶵ, ����sö�ɪ��]�w�|�����w�]��. - -�A�i�H�إߨϥΤ��P�s�X����Ʈw: - - % createdb -E EUC_KR korean - -�o�өR�O�|�إߤ@�ӥs�� "korean" ����Ʈw, �Ө�ĥ� EUC_KR �s�X. -�t�~���@�Ӥ�k, �O�ϥ� SQL �R�O, �]�i�H�F��P�˪��ت�: - - CREATE DATABASE korean WITH ENCODING = 'EUC_KR'; - -�b pg_database �t�γW��� (system catalog) �����@�� "encoding" �����, -�N�O�ΨӬ����@�Ӹ�Ʈw���s�X. �A�i�H�� psql -l �ζi�J psql ��� \l �� -�R�O�Ӭd�ݸ�Ʈw�ĥΦ�ؽs�X: - -$ psql -l - List of databases - Database | Owner | Encoding ----------------+---------+--------------- - euc_cn | t-ishii | EUC_CN - euc_jp | t-ishii | EUC_JP - euc_kr | t-ishii | EUC_KR - euc_tw | t-ishii | EUC_TW - mule_internal | t-ishii | MULE_INTERNAL - regression | t-ishii | SQL_ASCII - template1 | t-ishii | EUC_JP - test | t-ishii | EUC_JP - unicode | t-ishii | UNICODE -(9 rows) - -3. �e�ݻP��ݽs�X���۰��ഫ - -[��: �e�ݪx���Ȥ�ݪ��{��, �i��O psql �R�O��Ķ��, �αĥ� libpq �� C -�{��, Perl �{��, �Ϊ̬O�z�L ODBC ���������ε{��. �ӫ�ݴN�O�� PostgreSQL -��Ʈw�����A�{��] - -PostgreSQL �䴩�Y�ǽs�X�b�e�ݻP��ݶ����۰��ഫ: [��: �o�̩ҿת��۰� -�ഫ�O���A�b�e�ݤΫ�ݩҫŧi�ĥΪ��s�X���P, ���u�n PostgreSQL �䴩�o -��ؽs�X�����ഫ, ���򥦷|���A�b�s���e���ഫ] - - encoding of backend available encoding of frontend - -------------------------------------------------------------------- - EUC_JP EUC_JP, SJIS - - EUC_TW EUC_TW, BIG5 - - LATIN2 LATIN2, WIN1250 - - LATIN5 LATIN5, WIN, ALT - - MULE_INTERNAL EUC_JP, SJIS, EUC_KR, EUC_CN, - EUC_TW, BIG5, LATIN1 to LATIN5, - WIN, ALT, WIN1250 - -�b�Ұʦ۰ʽs�X�ഫ���e, �A�����i�D PostgreSQL �A�n�b�e�ݱĥΦ�ؽs�X. -���n�X�Ӥ�k�i�H�F��o�ӥت�: - -o �b psql �R�O��Ķ�����ϥ� \encoding �o�өR�O - -\encoding �o�өR�O�i�H���A���W�����e�ݽs�X, �Ҧp, �A�n�N�e�ݽs�X������ SJIS, -����Х�: - - \encoding SJIS - -o �ϥ� libpq [��: PostgreSQL ��Ʈw�� C API �{���w] ���禡 - -psql �� \encoding �R�O���u�O�h�I�s PQsetClientEncoding() �o�Ө禡�ӹF��ت�. - - int PQsetClientEncoding(PGconn *conn, const char *encoding) - -�W���� conn �o�ӰѼƥN���@�ӹ��ݪ��s�u, encoding �o�ӰѼƭn��A�Q�Ϊ��s�X, -���p�����\�a�]�w�F�s�X, �K�|�Ǧ^ 0 ��, ���Ѫ��ܶǦ^ -1. �ܩ�ثe�s�u���s�X�i -�Q�ΥH�U�禡�d��: - - int PQclientEncoding(const PGconn *conn) - -�o�̭n�`�N���O: �o�Ө禡�Ǧ^���O�s�X���N�� (encoding id, �O�Ӿ�ƭ�), -�Ӥ��O�s�X���W�٦r�� (�p "EUC_JP"), �p�G�A�n�ѽs�X�N���o���s�X�W��, -�����I�s: - -char *pg_encoding_to_char(int encoding_id) - -o �ϥ� PGCLIENTENCODING �o�������ܼ� - -�p�G�e�ݩ��]�w�F PGCLIENTENCODING �o�@�������ܼ�, �����ݷ|���s�X�۰��ഫ. - -[��] PostgreSQL 7.0.0 ~ 7.0.3 ���� bug -- ���{�o�������ܼ� - -o �ϥ� SET CLIENT_ENCODING TO �o�� SQL ���R�O - -�n�]�w�e�ݪ��s�X�i�H�ΥH�U�o�� SQL �R�O: - - SET CLIENT_ENCODING TO 'encoding'; - -�A�]�i�H�ϥ� SQL92 ���y�k "SET NAMES" �F��P�˪��ت�: - - SET NAMES 'encoding'; - -�d�ߥثe���e�ݽs�X�i�H�ΥH�U�o�� SQL �R�O: - - SHOW CLIENT_ENCODING; - -��������ӹw�]���s�X, �ΥH�U�o�� SQL �R�O: - - RESET CLIENT_ENCODING; - -[��] �ϥ� psql �R�O��Ķ����, ��ij���n�γo�Ӥ�k, �Х� \encoding - -4. ���� Unicode (�Τ@�X) - -�Τ@�X�M��L�s�X�����ഫ�i��n�b 7.1 ����~�|��{. - -5. �p�G�L�k�ഫ�|�o�ͤ����? - -���]�A�b��ݿ�ܤF EUC_JP �o�ӽs�X, �e�ݨϥ� LATIN1, (�Y�Ǥ��r���L�k�ഫ�� -LATIN1) �b�o�Ӫ��p�U, �Y�Ӧr���Y�����ন LATIN1 �r����, �N�|�Q�ন�H�U������: - - (�Q���i���) - -6. �ѦҸ�� - -These are good sources to start learning various kind of encoding -systems. - -ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/cjk.inf - Detailed explanations of EUC_JP, EUC_CN, EUC_KR, EUC_TW - appear in section 3.2. - -Unicode: http://www.unicode.org/ - The homepage of UNICODE. - - RFC 3629 - UTF-8 is defined here. - -5. History - -May 20, 2000 - * SJIS UDC (NEC selection IBM kanji) support contributed - by Eiji Tokuya - * Changes above will appear in 7.0.1 - -Mar 22, 2000 - * Add new libpq functions PQsetClientEncoding, PQclientEncoding - * ./configure --with-mb=EUC_JP - now deprecated. use - ./configure --enable-multibyte=EUC_JP - instead - * Add SQL_ASCII regression test case - * Add SJIS User Defined Character (UDC) support - * All of above will appear in 7.0 - -July 11, 1999 - * Add support for WIN1250 (Windows Czech) as a client encoding - (contributed by Pavel Behal) - * fix some compiler warnings (contributed by Tomoaki Nishiyama) - -Mar 23, 1999 - * Add support for KOI8(KOI8-R), WIN(CP1251), ALT(CP866) - (thanks Oleg Broytmann for testing) - * Fix problem with MB and locale - -Jan 26, 1999 - * Add support for Big5 for fronend encoding - (you need to create a database with EUC_TW to use Big5) - * Add regression test case for EUC_TW - (contributed by Jonah Kuo ) - -Dec 15, 1998 - * Bugs related to SQL_ASCII support fixed - -Nov 5, 1998 - * 6.4 release. In this version, pg_database has "encoding" - column that represents the database encoding - -Jul 22, 1998 - * determine encoding at initdb/createdb rather than compile time - * support for PGCLIENTENCODING when issuing COPY command - * support for SQL92 syntax "SET NAMES" - * support for LATIN2-5 - * add UNICODE regression test case - * new test suite for MB - * clean up source files - -Jun 5, 1998 - * add support for the encoding translation between the backend - and the frontend - * new command SET CLIENT_ENCODING etc. added - * add support for LATIN1 character set - * enhance 8 bit cleaness - -April 21, 1998 some enhancements/fixes - * character_length(), position(), substring() are now aware of - multi-byte characters - * add octet_length() - * add --with-mb option to configure - * new regression tests for EUC_KR - (contributed by "Soonmyung. Hong" ) - * add some test cases to the EUC_JP regression test - * fix problem in regress/regress.sh in case of System V - * fix toupper(), tolower() to handle 8bit chars - -Mar 25, 1998 MB PL2 is incorporated into PostgreSQL 6.3.1 - -Mar 10, 1998 PL2 released - * add regression test for EUC_JP, EUC_CN and MULE_INTERNAL - * add an English document (this file) - * fix problems concerning 8-bit single byte characters - -Mar 1, 1998 PL1 released - -Appendix: - -[Here is a good documentation explaining how to use WIN1250 on -Windows/ODBC from Pavel Behal. Please note that Installation step 1) -is not necceary in 6.5.1 -- Tatsuo] - -Version: 0.91 for PgSQL 6.5 -Author: Pavel Behal -Revised by: Tatsuo Ishii -Email: behal@opf.slu.cz -Licence: The Same as PostgreSQL - -Sorry for my Eglish and C code, I'm not native :-) - -!!!!!!!!!!!!!!!!!!!!!!!!! NO WARRANTY !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -Instalation: ------------- -1) Change three affected files in source directories - (I don't have time to create proper patch diffs, I don't know how) -2) Compile with enabled locale and multibyte set to LATIN2 -3) Setup properly your instalation, do not forget to create locale - variables in your profile (environment). Ex. (may not be exactly true): - LC_ALL=cs_CZ.ISO8859-2 - LC_COLLATE=cs_CZ.ISO8859-2 - LC_CTYPE=cs_CZ.ISO8859-2 - LC_MONETARY=cs_CZ.ISO8859-2 - LC_NUMERIC=cs_CZ.ISO8859-2 - LC_TIME=cs_CZ.ISO8859-2 -4) You have to start the postmaster with locales set! -5) Try it with Czech language, it have to sort -5) Install ODBC driver for PgSQL into your M$ Windows -6) Setup properly your data source. Include this line in your ODBC - configuration dialog in field "Connect Settings:" : - SET CLIENT_ENCODING = 'WIN1250'; -7) Now try it again, but in Windows with ODBC. - -Description: ------------- -- Depends on proper system locales, tested with RH6.0 and Slackware 3.6, - with cs_CZ.iso8859-2 loacle -- Never try to set-up server multibyte database encoding to WIN1250, - always use LATIN2 instead. There is not WIN1250 locale in Unix -- WIN1250 encoding is useable only for M$W ODBC clients. The characters are - on thy fly re-coded, to be displayed and stored back properly - -Important: ----------- -- it reorders your sort order depending on your LC_... setting, so don't be - confused with regression tests, they don't use locale -- "ch" is corectly sorted only in some newer locales (Ex. RH6.0) -- you have to insert money as '162,50' (with comma in aphostrophes!) -- not tested properly diff --git a/doc/README.mb.jp b/doc/README.mb.jp deleted file mode 100644 index 7cafb2426e..0000000000 --- a/doc/README.mb.jp +++ /dev/null @@ -1,814 +0,0 @@ -PostgreSQL 7.3 multi-byte (MB) support README 2002/10/21 $B:n@.(B - - $B@P0fC#IW(B - ishii@postgresql.org - -$B"#$O$8$a$K(B - - PostgreSQL $B$K$*$1$k%^%k%A%P%$%H%5%]!<%H$O0J2<$N$h$&$JFCD'$r;}$C$F$$$^$9!%(B - - 1. $B%^%k%A%P%$%HJ8;z$H$7$F!$F|K\8l!$Cf9q8l$J$I$N3F9q$N(B EUC$B!$(BUnicode$B!$(B - mule internal code, ISO-8859-* $B$,%G!<%?%Y!<%9:n@.;~$KA*Br2DG=!%(B - $B%G!<%?%Y!<%9$K$O$3$N%(%s%3!<%G%#%s%0$N$^$^3JG<$5$l$^$9!%(B - 2. $B%F!<%V%kL>$K%^%k%A%P%$%HJ8;z$,;HMQ2DG=(B - 3. $B%+%i%`L>$K%^%k%A%P%$%HJ8;z$,;HMQ2DG=(B - 4. $B%G!<%?$=$N$b$N$K$b%^%k%A%P%$%HJ8;z$,;HMQ2DG=(B - 5. $B%^%k%A%P%$%HJ8;z$N@55,I=8=8!:w$,;HMQ2DG=(B - 6. $B%^%k%A%P%$%HJ8;z$N(B LIKE $B8!:w$,;HMQ2DG=(B - 7. character_length(), position(), substring() $B$J$I$NJ8;zNs4X?t$G(B - $B$N%^%k%A%P%$%H%5%]!<%H(B - 8. $B%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$,%P%C%/%(%s%IB&$H0[$k>l9g$K!$(B - $B<+F0E*$K%(%s%3!<%G%#%s%0JQ49$r9T$J$$$^$9!%(B - 9. $B%f!<%6Dj5A$N%(%s%3!<%G%#%s%0JQ49$r:n@.2DG=!%(B - - $B%^%k%A%P%$%H%5%]!<%H$,07$&$3$H$N$G$-$k%(%s%3!<%G%#%s%0$O0J2<$K$J$j$^(B - $B$9!%(B - - SQL_ASCII ASCII - EUC_JP $BF|K\8l(B EUC - EUC_CN GB $B$r%Y!<%9$K$7$?CfJ8(BEUC$B!%(Bcode set 2 $B$O(B - SS2+2$B%P%$%H%3!<%I(B = 3$B%P%$%HI=8=$G$9!%(B - EUC_KR $B4Z9q8l(B EUC$B!%(B - JOHAB $B%O%s%0%k%Y!<%9$N4Z9q8l(BEUC. - EUC_TW $BBfOQ$N(B EUC$B!%(Bcode set 2 $B$O(B - SS2+$BLLHV9f(B+2$B%P%$%H%3!<%I(B = 4$B%P%$%HI=8=$G$9!%(B - UNICODE UTF-8$B!%$?$@$7%5%]!<%H$9$k$N$O(B UCS-2 $B$NHO0O!$(B - $B$9$J$o$A(B 0xffff $B$^$G$G$9!%(B - MULE_INTERNAL mule $B$NFbIt%3!<%I!%$?$@$7!$(BType N $B$NITDjD9J8;z$O(B - $B%5%]!<%H$7$F$$$^$;$s!%(B - LATIN1 $B$+$i(B LATIN10$B$^$G(B - ISO_8859_1 $B$+$i(B 16$B$^$G(B - $B%-%j%kJ8;z(B KOI8(KOI8-R), WIN(CP1251), ALT(CP866)$B$r%5%]!<%H(B - $B$7$F$$$^$9!%$b$A$m$s(B ISO 8859-5 $B$b;HMQ2DG=$G$9!%(B - $B$3$N>l9g!$(B"LATIN5" $B$H$7$F;XDj$7$F2<$5$$!%(B - WIN1256 $B%"%i%V=t9q8l(BWindows$BMQ%(%s%3!<%G%#%s%0(B. - TCVN $B%Y%H%J%`8l(B."ABC"$B$d(B"VSCII"$B$b;HMQ2DG=(B. - WIN874 $B%?%$8l(B. - - $B%U%m%s%H%(%s%IB&$G$O$5$i$K0J2<$N%(%s%3!<%G%#%s%0$,;HMQ$G$-$^$9!%(B - - SJIS $B%7%U%H(BJIS(MS932$B$H$[$\8_49(B) - BIG5 $BBfOQ$d9a9A$G;HMQ$5$l$F$$$kCf9q8l!%(BEUC_TW$B$H8_49(B - $B@-$,$"$j$^$9!%(B - GBK Windows-936 - UHC Windows-949 - WIN1250 Windows-1250 - GB18030 GB18030 - -$B"#F|K\8l$r;HMQ$9$k$3$H$N$G$-$k%(%s%3!<%G%#%s%0(B - - $BA*Br$NL\0B$H$7$F$O!$1Q8l$HF|K\8l$7$+;H$o$J$$>l9g$O(B EUC_JP($BF1MM$K!$Cf(B - $B9q8l$7$+;H$o$J$$>l9g$O(B EUC_CN... $B$J$I$H$J$j$^$9(B)$B!$$=$NB>$N8@8l$b;H$$$?(B - $B$$>l9g$O(B UNICODE $B$b$7$/$O(B MULE_INTERNAL $B$H$J$k$G$7$g$&!%(B - - $BCm0U!'(BMULE_INTERNAL $B$rA*$V$H!$$?$/$5$s$NJ8;z=89g$KBP1~$G$-$FJXMx$G$9(B - $B$,!$@55,I=8=$GJ#?t$NJ8;z=89g$K$^$?$,$k$h$&$JHO0O;XDj(B($B$?$H$($P!$(B[a-$BHO(B] - $B$H$+!$(B[abc$BHO0O(B]$B$N$h$&$J(B)$B$O;H$($^$;$s!%J#?t$NHO0O;XDj$G0[$J$kJ8;z=89g(B - $B$r;H$&$N$O9=$$$^$;$s(B($B$?$H$($P(B [abc][$BHO(B-$B0O(B])$B!%$^$?!$(B[^a] $B$N$h$&$JI=8=(B - $B$O!$(B"a" $B$NB0$9$kJ8;z=89g(B($B$3$N>l9g!$(BUS-ASCII)$B$K$*$$$F(B "a" $B0J30$G$"$k(B - $B$3$H$rI=$7$^$9!%7h$7$F4A;z$dJ?2>L>$J$I(B "a" $B0J30$r$9$Y$FI=$9$o$1$G$O(B - $B$J$$$3$H$KCm0U$7$F2<$5$$!%(B - -$B"#%$%s%9%H!<%k(B - - PostgreSQL 7.3$B$+$i$O(Bconfigure$B$N%*%W%7%g%s;XDj$NM-L5$K4X$o$i$:!$%^%k(B - $B%A%P%$%H%5%]!<%H$,M-8z$K$J$C$F$$$^$9$N$G!$FC$K(Bconifgure$B;~$K%^%k%A%P(B - $B%$%HMQ$NFCJL$J%*%W%7%g%s$r;XDj$9$kI,MW$O$"$j$^$;$s!%(B - -$B"#(Binitdb/createdb/create database $B$K$*$1$k%(%s%3!<%G%#%s%0$N;XDj$K$D$$$F(B - - initdb $B$G$O0J2<$N%*%W%7%g%s$G%(%s%3!<%G%#%s%0$,;XDj$G$-$^$9!%(B - - -E $B%(%s%3!<%G%#%s%0(B - --encoding=$B%(%s%3!<%G%#%s%0(B - - $B$3$3$G;XDj$7$?%(%s%3!<%G%#%s%0$O!$0J8e(B createdb/create database $B$G%((B - $B%s%3!<%G%#%s%0$r>JN,$7$?>l9g$K@_Dj$5$l$k%(%s%3!<%G%#%s%0$K$J$j$^$9!%(B - -E $B$^$?$O(B --encoding $B%*%W%7%g%s$r>JN,$7$?>l9g$O!$%(%s%3!<%G%#%s%0$H(B - $B$7$F(BSQL_ASCII$B$,:NMQ$5$l$F$7$^$&$N$G!$F|K\8l$r%G%U%)%k%H$G;HMQ$9$k>l(B - $B9g$O!$(B - - -E EUC_JP - - $B$"$k$$$O(B - - --encoding=EUC_JP - - $B$H$7$FI,$:L@<(E*$K%(%s%3!<%G%#%s%0$r;XDj$7$F$/$@$5$$!%(B - - $B$J$*!$(BPostgreSQL 7.3$B0J9_%m%1!<%k%5%]!<%H$,I,$:M-8z$K$J$C$F$$$^$9$,!$(B - $B$3$l$OF|K\8l$J$I$r;HMQ$9$k:]$K$O2?$N%a%C%j%H$b$J$$$P$+$j$G$J$/!$>c32(B - $B$N860x$K$J$C$?$j!$(BLIKE$B8!:w$d@55,I=8=8!:w$G%$%s%G%C%/%9$,M-8z$K$J$i$J(B - $B$$$J$I$NLdBj$r0z$-5/$3$9$N$G!$L58z$K$7$F$*$/$3$H$r$*$9$9$a$7$^$9!%%m(B - $B%1!<%k%5%]!<%H$rL58z$K$9$k$?$a$K$O!$(B - - --no-locale - - $B%*%W%7%g%s$r;XDj$7$^$9!%(B - - createdb $B$G$O0J2<$N%*%W%7%g%s$G%(%s%3!<%G%#%s%0$,;XDj$G$-$^$9!%(B - - -E $B%(%s%3!<%G%#%s%0(B - --encoding=$B%(%s%3!<%G%#%s%0(B - - create database $B$G$O0J2<$N%*%W%7%g%s$G%(%s%3!<%G%#%s%0$,;XDj$G$-$^$9!%(B - - CREATE DATABASE dbanme WITH ENCODING = '$B%(%s%3!<%G%#%s%0(B'; - - LOCATION $B$rF1;~$K;XDj$9$k>l9g$O0J2<$N$h$&$K$J$j$^$9!%(B - - CREATE DATABASE dbanme WITH LOCATION = 'path' ENCODING = '$B%(%s%3!<%G%#%s%0(B'; - - createdb/create database $B$G$O!$%(%s%3!<%G%#%s%0;XDj$r>JN,$7$?>l9g$O!$(Binitdb - $B$G;XDj$7$?%(%s%3!<%G%#%s%0$,:NMQ$5$l$^$9!%$3$l$O!$(Binitdb $B$,:n@.$9$k(B - $B%F%s%W%l!<%H%G!<%?%Y!<%9(B(template1)$B$N(B encoding $B%"%H%j%S%e!<%H$r7Q>5(B - $B$9$k$+$i$G$9!%(B - - $B%G!<%?%Y!<%9$N%(%s%3!<%G%#%s%0$O!$(Bpsql -l$B!$(Bpsql $B$N(B \l $B$G;2>H$G$-$^$9!%(B - -$ psql -l - List of databases - Database | Owner | Encoding ----------------+---------+--------------- - euc_cn | t-ishii | EUC_CN - euc_jp | t-ishii | EUC_JP - euc_kr | t-ishii | EUC_KR - euc_tw | t-ishii | EUC_TW - mule_internal | t-ishii | MULE_INTERNAL - regression | t-ishii | SQL_ASCII - template1 | t-ishii | EUC_JP - test | t-ishii | EUC_JP - unicode | t-ishii | UNICODE -(9 rows) - -$B"#J8;z7?$N%G!<%?7?$K$D$$$F(B - - 7.2$B$G$O!$(BCHAR(n)$B$H(BVARCHAR(n)$B$N(B n $B$OJ8;z?t$r0UL#$7$^$9!%(Bn $B$,%P%$%H?t$r(B - $B0UL#$9$k(B 7.1 $B0JA0$H$O0[$J$j$^$9$N$G$4Cm0U2<$5$$!%(B - - $BNc$r<($7$^$9!%(B - - 7.2$B$G$O!$(BCHAR(1)$B$K(B"$B$"(B"$B$r3JG<$G$-$^$9$,!$(B7.1$B0JA0$G$O3JG<$G$-$^$;$s$3(B - $B$l$O!$(B"$B$"(B"$B$r3JG<$9$k$?$a$K>/$J$/$H$b(B2$B%P%$%H0J>e$rMW$9$k$+$i$G$9!%(B - $B5U$K!$(B"a" $B$O(B1$B%P%$%H$7$+>CHq$7$J$$$?$a!$(B7.1$B$G$b(B CHAR(1) $B$K3JG<$G$-$^(B - $B$9!%(B - - $B$J$*!$(B7.2$B$G$O!$(B7.1$B$^$G$H0[$J$j!$(BCHAR(n)$B$K3JG<$G$-$J$$(B n $BJ8;z$h$jBg$-(B - $B$$J8;zNs$O(B n $BJ8;z$G@Z$jl9g!$<+F0E*$K%P%C%/%(%s%I$G%(%s%3!<%G%#%s%0JQ49$,9T$o$l$^$9!%(B - - $B%P%C%/%(%s%I$N%(%s%3!<%G%#%s%0(B $B5vMF$5$l$k%U%m%s%H%(%s%I$N(B - $B%(%s%3!<%G%#%s%0(B - ---------------------------------------------------------------- - EUC_JP EUC_JP, SJIS, UNICODE - - EUC_TW EUC_TW, BIG5, UNICODE - - EUC_CN EUC_CN, UNICODE - - EUC_KR EUC_KR, UNICODE - - JOHAB JOHAB, UNICODE - - LATIN1,3,4 LATIN1,3,4, UNICODE - - LATIN2 LATIN2, WIN1250, UNICODE - - LATIN5 LATIN5, WIN, ALT, UNICODE - - LATIN6,7,8,9,10 LATIN6,7,8,9,10, UNICODE - - ISO_8859_5,6,7,8 ISO_8859_5,6,7,8, UNICODE - - WIN1256 WIN1256, UNICODE - - TCVN TCVN, UNICODE - - WIN874 WIN874, UNICODE - - MULE_INTERNAL EUC_JP, SJIS, EUC_KR, EUC_CN, - EUC_TW, BIG5, LATIN1$B$+$i(B5, - WIN, ALT, WIN1250 - - UNICODE EUC_JP, SJIS, EUC_KR, UHC, - EUC_CN, GBK, EUC_TW, BIG5, - LATIN1$B$+$i(B10, ISO_8859_5$B$+$i(B8, - WIN, ALT, WIN1250, WIN1256, - TCVN, WIN874, JOHAB - ---------------------------------------------------------------- - - $B%P%C%/%(%s%I$H%U%m%s%H%(%s%I$N%(%s%3!<%G%#%s%0$,0[$J$k>l9g!$$=$N$3$H(B - $B$r%P%C%/%(%s%I$KEA$($kI,MW$,$"$j$^$9!%$=$N$?$a$NJ}K!$,$$$/$D$+$"$j$^(B - $B$9!%(B - -o psql $B$N(B \encoding $B%3%^%s%I$r;H$&J}K!(B - - psql$B$G$O!$(B\encoding$B%3%^%s%I$r;H$C$FF0E*$K%U%m%s%H%(%s%IB&$NJ8;z%3!<(B - $B%I$r@ZBX$($k$3$H$,$G$-$^$9!%Nc(B: - - \encoding SJIS - -o libpq $B$N4X?t(B PQsetClientEncoding $B$r;H$&J}K!(B - - 7.0 $B$+$i?7$7$$(B libpq $B4X?t(B PQsetClientEncoding $B$,DI2C$5$l$F$$$^$9!%(B - - PQsetClientEncoding(PGconn *conn, const char *encoding) - - $B$3$N4X?t$r;H$($P!$%3%M%/%7%g%sKh$K%(%s%3!<%G%#%s%0$r@ZBX$($k$3$H$,$G(B - $B$-$^$9!%8=:_$N%(%s%3!<%G%#%s%0$NLd$$9g$o$;$O(B - - int PQclientEncoding(const PGconn *conn) - - $B$G$9!%(B - -o postgresql.conf $B$G@_Dj$9$kJ}K!(B - - $B%U%m%s%H%(%s%I$N%G%U%)%k%H%(%s%3!<%G%#%s%0$r;XDj$9$k$K$O!$(B - postgresql.conf $B$N(B client_encoding $B$r;XDj$7$^$9!%;XDjNc(B: - - client_encoding = SJIS - -o $B4D6-JQ?t(B PGCLIENTENCODING $B$r;H$&J}K!(B - - (1) postmaster $B5/F0;~$K4D6-JQ?t$r@_Dj$9$kJ}K!(B - - $B4D6-JQ?t(B PGCLIENTENCODING $B$r@_Dj$9$k$3$H$K$h$j!$(B postgresql.conf $B$G(B - $B%(%s%3!<%G%#%s%0$r;XDj$9$k$N$HF1$88z2L$,F@$i$l$^$9!%$?$@$7!$$3$l$ONr(B - $B;KE*7P0^$+$i;D$5$l$F$$$k5!G=$G!$:#8e$O$3$N5!G=$rMxMQ$7$J$$$3$H$r$*$9(B - $B$9$a$7$^$9!%@_DjNc(B: - - export PGCLIENTENCODING=SJIS postmaster -S - - (2) $B%/%i%$%"%s%H!$%U%m%s%H%(%s%IKh$K%(%s%3!<%G%#%s%0$r@_Dj$7$?$$>l9g(B - - $B$=$N%U%m%s%H%(%s%I(B($B$?$H$($P(B psql)$B$r5/F0$9$kA0$K4D6-JQ?t(B - PGCLIENTENCODING $B$r@_Dj$7$^$9!%(B - -o set client_encoding $B%3%^%s%I$r;H$&J}K!(B - - SET CLIENT_ENCODING SQL$B%3%^%s%I$r;H$C$FF0E*$K%U%m%s%H%(%s%I$N%(%s%3!<(B - $B%G%#%s%0$rJQ99$G$-$^$9!%Nc(B: - - SET CLIENT_ENCODING TO SJIS; - -$B"#8=:_@_Dj$5$l$F$$$k%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$rD4$Y$k(B - - $B8=:_@_Dj$5$l$F$$$k%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$O(B - - show client_encoding; - - $B$G;2>H$G$-$^$9(B($B>.J8;z$GI=<($5$l$^$9(B)$B!%(B - -$B"#%G%U%)%k%H$N%(%s%3!<%G%#%s%0$X$NI|5"(B - - SQL$B%3%^%s%I(B: - - RESET CLIENT_ENCODING; - - $B$O!$%G%U%)%k%H$N%U%m%s%H%(%s%I%(%s%3!<%G%#%s%0@_Dj$KI|5"$5$;$^$9!%(B - postmaster$B$rN)$A>e$2$k$H$-$K(B postgresql.conf $B$N(B client_encoding $B$d4D(B - $B6-JQ?t(B PGCLIENTENCODING $B$,@_Dj$5$l$F$$$k$H$=$N%(%s%3!<%G%#%s%0$K!$$=(B - $B$&$G$J$1$l$P%G!<%?%Y!<%9$N%(%s%3!<%G%#%s%0$HF1$8$K$J$j$^$9!%(B - -$B"#L@<(E*$J%(%s%3!<%G%#%s%0JQ49(B - - 7.2$B$G$O!$(Bconvert$B$H$$$&4X?t$r;H$$!$L@<(E*$J%(%s%3!<%G%#%s%0JQ49$,$G$-(B - $B$^$9!%(B - - convert(string text, [src_encoding name,] dest_encoding name) - - $B$3$3$G(Bsrc_encoding$B$O(Btext$B$N%(%s%3!<%G%#%s%0L>$G$9!%>JN,$9$k$H!$%G!<%?(B - $B%Y!<%9%(%s%3!<%G%#%s%0L>$HF1$8$G$"$k$H8+$J$5$l$^$9!%(Bdest_encoding$B$O!$(B - $BJQ498e$N%(%s%3!<%G%#%s%0L>$G$9!%(B - - $BNc$r<($7$^$9!%(B - - SELECT convert(text, EUC_JP) FROM unicode_tbl; - - $B$O!$(BUnicode$B$N%F!<%V%k(Bunicode_tbl$B$N(Btext$BNs$r(BEUC_JP$B$KJQ49$7$FJV$7$^$9!%(B - - 7.3$B$G$O$5$i$K(BSQL$BI8=`$N(BCONVERT$B4X?t$,;H$($^$9!%(BSQL$BI8=`$N(BCONVERT$B$O(B - PostgreSQL$B$N(BCONVERT$B$H5!G=$O$[$H$s$IF1$8$G$9$,!$8F$S=P$77A<0$,0[$j$^(B - $B$9!%(B - - SELECT convert(text using euc_jp_to_utf8) FROM unicode_tbl; - - "using" $B$N8e$N0z?t$O!V%3%s%P!<%8%g%sL>!W$G$9!%$3$NNc$G$O!$(BEUC_JP $B$+(B - $B$i(B UTF-8 $B$KJQ49$9$k%3%s%P!<%8%g%s$r;XDj$7$F$$$^$9!%Dj5A:Q$N%3%s%P!<(B - $B%8%g%s$K$D$$$F$O!$%f!<%6!<%:%,%$%I$N(B "String Functions and - Operators" $B$NI=(B"Built-in Conversions" $B$r8+$F$/$@$5$$!%(B - -$B"#%(%s%3!<%G%#%s%0JQ49ITG=$N>l9g$N=hM}(B - - $B%P%C%/%(%s%IB&$N%(%s%3!<%G%#%s%0$H%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0(B - $B$,$$$D$bAj8_JQ49$G$-$k$H$O8B$j$^$;$s!%6KC<$JOC!$%P%C%/%(%s%IB&$,(B - EUC_JP $B$J$N$K!$%U%m%s%H%(%s%IB&$,(B EUC_KR $B$@$C$?$i$I$&$J$k$G$7$g$&!%(B - $B$3$N>l9g(B PostgreSQL $B$OJQ49$G$-$J$$%3!<%I$r(B 16$B?JI=8=$KJQ49$7$^$9!%(B - $B$?$H$($P!$(B"(bdae)" $B$N$h$&$K!%$J$*!$$3$N(B 16$B?JI=8=$O(B mule - internal code $B$N%3!<%I$G$"$k$3$H$KCm0U$7$F2<$5$$!%$3$l$O!$D>@\%U%m%s(B - $B%H%(%s%I(B <--> $B%P%C%/%(%s%I$N%(%s%3!<%G%#%s%0$rJQ49$9$k$N$G$O$J$/!$0l(B - $BEYFbItI=8=$G$"$k(B mule internal code $B$r7PM3$7$F$$$k$?$a$G$9!%(B - - $B$J$*!$(BUnicode$B$H$=$l0J30$N%(%s%3!<%G%#%s%0$NJQ49$@$1$ONc30$G!$(BNOTICE - $B%a%C%;!<%8$,I=<($5$l!$JQ49ITG=$NJ8;z$OL5;k$5$l$^$9!%(B - -$B"#%G%U%)%k%H%3%s%P!<%8%g%s(B - - $B%G%U%)%k%H%3%s%P!<%8%g%s$O!$%P%C%/%(%s%I$H%U%m%s%H%(%s%I$H$N4V$N%(%s(B - $B%3!<%G%#%s%0$N<+F0JQ49$K;H$o$l$kFCJL$J%3%s%P!<%8%g%s$G$9!%%G%U%)%k%H(B - $B%3%s%P!<%8%g%s$O3F!9$N(B{$B%9%-!<%^!$%=!<%9%(%s%3!<%G%#%s%0!$%G%9%F%#%M!<(B - $B%7%g%s%(%s%3!<%G%#%s%0(B}$B$NAH$_9g$o$;$K$*$$$F!$$?$@0l8D$@$1B8:_$7$^$9!%(B - $B>e5-$G@bL@$7$?AH$_9~$_:Q$N%3%s%P!<%8%g%s$O!$(Bpg_catalog$B%9%-!<%^$K$*$$(B - $B$FDj5A$5$l$F$*$j!$%9%-!<%^%5!<%A%Q%9$N@_Dj$K4X$o$i$:I,$:MxMQ$G$-$k%3(B - $B%s%P!<%8%g%s$K$J$C$F$$$^$9!%(B - - $B5U$K8@$&$H!$(B pg_catalog $B0J30$N%9%-!<%^$K%G%U%)%k%H%3%s%P!<%8%g%s$r:n(B - $B@.$9$k$3$H$K$h$j!$%G%U%)%k%H%3%s%P!<%8%g%s$r<+M3$KA*Br$9$k$3$H$b$G$-(B - $B$k$o$1$G$9!%$?$H$($P(B SJIS $B$H$NJQ49$K$*$$$F!$(BPostgreSQL $B$,MQ0U$7$F$$(B - $B$k(B MS932$B8_49(B $B$NJQ49$G$O$J$/!$(BJIS $B5,3J$N%7%U%H%8%9$KAjEv$9$kJQ49$r9T(B - $B$&$h$&$J%3%s%P!<%8%g%s$r:n@.$9$k$3$H$b2DG=$G$9!%(B - -$B"#%f!<%6Dj5A%3%s%P!<%8%g%s$N:n@.(B - - PostgreSQL 7.3$B0J9_!$%f!<%6Dj5A$N%3%s%P!<%8%g%s$r:n@.$G$-$k$h$&$K$J$C(B - $B$F$$$^$9!%%3%s%P!<%8%g%s$NDj5A$O(B CREATE CONVERSION $B$H$$$&(B SQL $B%3%^%s(B - $B%I$r;H$C$F9T$$$^$9!%(B - - CREATE [DEFAULT] CONVERSION conversion_name - FOR source_encoding - TO dest_encoding FROM funcname - - $B>\:Y$O%j%U%!%l%s%9%^%K%e%"%k$r$4Mw2<$5$$!%(B - -$B"#(BSJIS$B%f!<%6Dj5AJ8;z$X$NBP1~(B - - 7.0 $B$+$i(B SJIS$B%f!<%6Dj5AJ8;z(B (UDC) $B$KBP1~$7$F$$$^$9!%(BUDC $B$r$I$&07$&$+(B - $B$H8@$&$3$H$K$D$$$FCf>r$5$s(B(nak@email.com)$B$+$iLdBjDs5/$H>\:Y$J2r@b$r(B - $BD:$-$^$7$?$N$G!$;29M$N$?$a$K$3$N%I%-%e%a%s%H$N:G8e$KIU$1$F$*$-$^$9!%(B - $B$^$?!$$3$NLdBj$K$D$$$F$O!$(BPostgreSQL$BF|K\8l%a!<%j%s%0%j%9%H$N(B - [pgsql-jp 12288] (1999/12/17$BIU(B)$B$H(B [pgsql-jp 12486] (2000/1/5$BIU(B) $B$+$i(B - $B;O$^$k%9%l%C%I$G5DO@$r8+$k$3$H$,$G$-$^$9(B($B%a!<%k$N%"!<%+%$%V$O(B - http://www.sra.co.jp/people/t-ishii/PostgreSQL/ $B$G;2>H$G$-$^$9(B)$B!%(B - - $B$3$3$G$O!$$=$l$i$N5DO@$r$U$^$(!$4JC1$K2r@b$7$^$9!%(B - - PostgreSQL$B$G$O!$F|K\8l$r;HMQ$9$k:]$K%P%C%/%(%s%IB&$N%(%s%3!<%G%#%s%0(B - $B$r(B EUC_JP $B$^$?$O(B MULE_INTERNAL or Unicode $B$K$9$kI,MW$,$"$j$^$9!%(B - MULE_INTERNAL $B$O(B EUC_JP $B$KJ8;z=89g$rI=$9%3!<%I$rIU$1$?$b$N$J$N$G!$K\(B - $B SJIS $BJQ49$O8=:_$N$H$3$m%5%]!<%H(B - $B$5$l$F$$$^$;$s$N$GL5;k$7$^$9!%$7$?$,$C$F!$$3$3$G$O(B EUC_JP $B$H(B SJIS $B$N(B - $BAj8_JQ49$N$_$r9M$($^$9!%(B - - $BM=HwCN<1(B - - $B0l8}$K(B EUC_JP $B$H$$$C$F$b!$e5-(B JIS $B5,3J$GDj5A$5$l$F$$(B - $B$J$$J8;z%3!<%I$,0lItMxMQ$5$l$F$*$j!$$3$NItJ,(B (UDC) $B$O=>Mh(B PostgreSQL - $B$G$OA4$/9MN8$5$l$F$$$^$;$s$G$7$?!%>N(B) - 95$B!A(B104 $B6h(B $B"+"*(B $BF|K\8l(B EUC / G1 (JIS X 0208) 85$B!A(B95 $B6h(B - - - SJIS $B%f!<%6Dj5AJ8;zNN0h(B B ($B2>>N(B) - 105$B!A(B114 $B6h(B $B"+"*(B $BF|K\8l(B EUC / G3 (JIS X 0212) 85$B!A(B95 $B6h(B - - (2) IBM $B3HD%J8;zNN0h(B (SJIS 115$B!A(B120 $B6h(B) - - $BJQ49%F!<%V%k$K$h$C$F(B G1 (JIS X 0208)$B$H!$(BG3 (JIS X 0212)$B$KJQ49$5$l$^(B - $B$9!%$J$*!$$3$NJQ49$K$*$$$F$O!$(BSJIS --> EUC_JP $B$GJQ49$7!$:F$S(B EUC_JP -- - > SJIS $B$KJQ49$9$k$H85$N(B SJIS $B$KLa$i$J$$$3$H$,$"$j$^$9!%$^$?!$(BEUC_JP -- - > SJIS $B$NJQ49$G$O!$$9$Y$F$NJ8;z$rJQ49$G$-$k$o$1$G$O$J$$$N$G!$$=$N>l(B - $B9g$OJQ49ITG=J8;z$H$7$F!V".!W$KCV$-49$($^$9!%(B - - *$B6H3&CDBN$Nr$5$s(B - (nak@email.com)$B$+$iLdBjDs5/$H>\:Y$J2r@b$rD:$-$^$7$?!%(B - -$B"#(BUnicode$B$H$=$l0J30$N%(%s%3!<%G%#%s%0$H$NAj8_JQ49$K$D$$$F(B - - PostgreSQL 7.1$B$+$i(BUnicode$B$H$=$l0J30$N%(%s%3!<%G%#%s%0$H$NAj8_JQ49$,(B - $B2DG=$K$J$j$^$7$?!%$3$NJQ49$O$4$/0lIt$NJ8;z%3!<%I(B(ISO 8859-1)$B$r$N$>$-!$(B - $B%m%8%C%/$K$h$kJQ49$,$G$-$J$$$?$a!$JQ49$N:]$K$O%F!<%V%k$,I,MW$K$J$j$^(B - $B$9!%(BPostgreSQL$B$Ne!$MxMQ$7$F$$$^$9(B)$B!%(BUnicode - organization$B$NDs6!$9$kJQ49%F!<%V%k$O:FG[I[$,5v2D$5$l$F$$$J$$$?$a!$(B - PostgreSQL$B$N%=!<%9%3!<%I$K$O4^$^$l$F$$$^$;$s!%0J2r$5$s(B - (nak@email.com)$B$+$i$$$?$@$$$?LdBjDs5/$H2r@b$G$9!%(B - --------------------------- $B0zMQ3+;O(B ---------------------------------- ---- -1. SJIS $B%3!<%I$NHO0O(B - - 1 $B%P%$%HL\(B 0x81 - 0x9F$B!$(B0xE0 - 0xFC - 2 $B%P%$%HL\(B 0x40 - 0x7E$B!$(B0x80 - 0xFC - - $B$$$o$f$k!V30;zNN0h!W$NHO0O(B: - - - X0208 $B6&DL<+M3NN0h(B - - |-------------------- - | 85 $B6h(B 0xEB40 $B!A(B - |... - |-------------------- - | 89 $B6h(B 0xED40 $B!A(B ; 89$B!A(B92 $B6h$O(B - |... ; $B!V(BNEC $BA*Dj(B IBM $B3HD%J8;zNN0h!W(B - |-------------------- ; $B$H8F$P$l$k(B - | 93 $B6h(B 0xEF40 $B!A(B - | 94 $B6h(B 0xEF9F $B!A(B 0xEFFC - - - $B%f!<%6Dj5AJ8;zNN0h(B - - |-------------------- - | 95 $B6h(B 0xF040 $B!A(B ; 95$B!A(B104 $B6h(B - |... ; $B!V%f!<%6Dj5AJ8;zNN0h(B A$B!W(B($B2>>N(B) - |-------------------- - |105 $B6h(B 0xF540 $B!A(B ; 105$B!A(B114 $B6h(B - |... ; $B!V%f!<%6Dj5AJ8;zNN0h(B B$B!W(B($B2>>N(B) - |-------------------- - |115 $B6h(B 0xFA40 $B!A(B ; 115$B!A(B120 $B6h$O0lHL$K(B - |... ; $B!V(BIBM $B3HD%J8;zNN0h!W(B - |120 $B6h(B ... ; $B$H8F$P$l$k(B - |-------------------- - ---- -2. i-mode $BC\:Y$O(B -$B8e=R$N;29M;qNA$r$4Mw$$$?$@$/$H$7$F!$$3$3$G$O$=$N%k!<%k$r(B -$B4JC1$K$4@bL@$$$?$7$^$9!%(B - - - SJIS $B%f!<%6Dj5AJ8;zNN0h(B A ($B2>>N(B) - 95$B!A(B104 $B6h(B $B"+"*(B $BF|K\8l(B EUC / G1 85$B!A(B95 $B6h(B - - $B$?$H$($P(B SJIS $B$N(B (95, 1) = 0xF040 $B$O(B - EUC $B$N(B 0xF5A1 $B$K$J$j$^$9!%(B - - - SJIS $B%f!<%6Dj5AJ8;zNN0h(B B ($B2>>N(B) - 105$B!A(B114 $B6h(B $B"+"*(B $BF|K\8l(B EUC / G3 85$B!A(B95 $B6h(B - - $B$?$H$($P(B SJIS $B$N(B (105, 1) = 0xF540 $B$O(B - EUC $B$N(B 0x8FF5A1 $B$K$J$j$^$9!%(B - - - IBM $B3HD%J8;zNN0h(B - 115$B!A(B120 $B6h(B - - JIS X 0208 ($BF|K\8l(B EUC / G1)$B!$(BJIS X 0212 - ($BF|K\8l(B EUC / G3) $B$K3:Ev$9$kJ8;z$,$"$k>l9g(B - $B$O$=$NJ8;z$K%^%C%T%s%0!%$=$&$G$J$$>l9g$O(B - $BF|K\8l(B EUC / G3 83$B!A(B84 $B6h$r!$6hE@%3!<%I$N>e0L(B - $B$+$i=g$K3d$jEv$F$F$$$/(B ($BJQ49%F!<%V%kJ}<0(B) - -$B$3$N;EMM$O!$9-$/;H$o$l$F$$$k(B SJIS $B$H(B EUC $B$N%^%C%T%s%0$,%Y%s%@$K(B -$B$h$C$F0[$J$k$?$a!$Aj8_1?MQ$N:]$KLdBj$K$J$C$F$$$k$3$H$+$i!$(B1996 -$BG/$K(B OSF $BF|K\%Y%s%@6(5D2q$,8!F$:n@.$7$?Js9p=q$,%Y!<%9$K$J$C$F$$(B -$B$k$h$&$G$9!%(B - -Solaris $B$N%I%-%e%a%s%H$K$O!V(BTOG $BF|K\%Y%s%@6(5D2q?d>)(B EUC$B!&%7%U%H(B -JIS $B%3!<%IJQ49;EMM!W$K$b$H$E$/$H=q$$$F$"$j!$(BSolaris 2.6 $B$+$iF3F~(B -$B$7$F$$$k$N$@$=$&$G!$;d$+$i8+$l$P;ve$NI8=`$H9M$($F$bIT<+A3$G$O(B -$B$J$$$H46$8$^$9!%(B - -$B$J$*!$>/$J$/$H$b(B 1996 $BG/Ev;~$K$*$$$F$O!$(BOracle $B$d(B Sybase $B$O(B -SJIS $B$N%f!<%6Dj5A(B/$B%Y%s%@Dj5AJ8;zNN0h$r(B EUC $B$KJQ49$9$k:]!$H=JLIT(B -$B2DG=J8;z$H$7$F07$C$F$$$k$i$7$$$H$$$&$3$H$bJdB-$7$F$*$-$^$9!%(B - ---- -[$B;29M;qNA(B] - -// URL $B$,D9$$$N$G!$ESCf$G@Z$l$J$$$H$$$$$N$G$9$,(B... - --$B!VF|K\8l(B EUC$B!&%7%U%H(B JIS $B%3!<%IJQ49;EMM$H%3!<%I7O.$5$/$J$C$F$$$^$9!%$^$?!$(B - SQL$BI8=`$N(BCONVERT$B4X?t$rDI2C$7$^$7$?!%(B - * $B$$$/$D$+%(%s%3!<%G%#%s%0$,DI2C$5$l$F$$$^$9!%(B - * $B0J>e!$(B7.3$B$KH?1G$5$l$^$9!%(B - - 2001/10/01 - * CONVERT$B$NDI2C!%(Blpad/rpad/trim/btrim/ltrim/rtrim/translate$B$N(B - $B%^%k%A%P%$%HBP1~DI2C!%(Bchar/varchar$B$G%P%$%H?t$G$O$J$/!$J8;z?t(B - $B$G%5%$%:$rDj5A$9$k$h$&$KJQ99!%0J>e!$(B7.2$B$KH?1G$5$l$^$9!%(B - - 2001/2/15 - * $BFA2H(B@$B;06(1?M"%5!<%S%9$5$s$+$i!$(BCP932.TXT$B$h$j@8@.$7$?(BSJIS$BMQ$N(B - $BJQ49%F!<%V%k$rDs6!$7$F$$$?$@$-$^$7$?!%(B7.1$B$KH?1G$5$l$^$9!%(B - - 2001/1/6 - * UNICODE$B$HB>$N%(%s%3!<%G%#%s%0$H$NAj8_JQ495!G=$rDI2C!%(B - * 7.1$B$KH?1G$5$l$^$9!%(B - - 2000/5/20 - * NEC $BA*Dj(B IBM $B4A;zBP1~$rDI2C$7$^$7$?!%$3$l$O(B $BFA2H(B@$B;06(1?M"%5!<%S%9(B - $B$5$s$+$i$N(B contribute $B$G$9!%(B - * $B$3$l$i$O!$(B7.0.1 $B$KH?1G$5$l$^$9!%(B - - 2000/3/22 - * PQsetClientEncoding, PQclientEncoding $B$r(Blibpq $B4X?t$KDI2C!$(B - $B%3%M%/%7%g%sKh$K%(%s%3!<%G%#%s%0$rJQ992DG=$K!%(B - * SJIS $B%f!<%6Dj5AJ8;z(B (UDC) $B$X$NBP1~(B - * ./configure --with-mb=EUC_JP $B$+$i(B - ./configure --enable-multibyte=EUC_JP $B$KJQ99(B - * SQL_ASCII $B$N(B regression test $BDI2C(B - * $B$3$l$i$O(B 7.0 $B$KH?1G$5$l$^$9!%(B - - 1999/7/11 WIN1250(Windows$BMQ$N%A%'%38l(B)$B%5%]!<%H$rDI2C$7$^$7$?!%(B - * WIN1250 $B$,%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$H$7$FMxMQ$G$-$k$h(B - $B$&$K$J$j$^$7$?!%$3$N>l9g!$%P%C%/%(%s%IB&$N%(%s%3!<%G%#%s%0$O(B - LATIN2 $B$^$?$O(B MULE_INTERNAL $B$H$7$^$9!%(B - (contributed by Pavel Behal) - * backend/utils/mb/conv.c$B$K$*$1$k7?$NIT@09g$r=$@5$7$^$7$?!%(B - (contributed by Tomoaki Nishiyama) - * $B$3$l$i$O(B6.5.1$B$KH?1G$5$l$^$9!%(B - - 1999/3/23 $B%-%j%kJ8;z%5%]!<%HDI2CB>(B(6.5 $B$KH?1G:Q(B) - * $B%(%s%3!<%G%#%s%0$H$7$F(B KOI8(KOI8-R), WIN(CP1251), ALT(CP866) $B$r(B - $B%5%]!<%H$7$F$$$^$9!%$3$l$i$O!$%U%m%s%H%(%s%I!$%P%C%/%(%s%I!$(B - $B$I$A$i$N%(%s%3!<%G%#%s%0$H$7$F$b;HMQ2DG=$G$"$j!$%(%s%3!<%G%#%s%0$N(B - $BAj8_JQ49$,2DG=$G$9!%$^$?!$=>Mh$+$i%5%]!<%H$7$F$$$k(B ISO 8859-5 $B$b(B - $BF1MM$K;HMQ2DG=$G$9!%(B - $B%-%j%kJ8;z%5%]!<%H$O!$(BOleg Broytmann $B;a$N(B - $B%j%/%(%9%H5Z$S6(NO$K$h$jMh$+$i$"$k(B - RCODE $B%5%]!<%H$N5!G=$rl9g$KBgJ8;z!?>.J8;z$rL5;k$7$?(B - $B@55,I=8=8!:w$,@5>o$KF0:n$7$J$$%P%0$r=$@5(B - - 1999/1/26 Big5 $B%5%]!<%HDI2C(B(6.4.2-patched/6.5 $B$KH?1G:Q(B) - * Big5 $B$,%U%m%s%H%(%s%IB&$N%(%s%3!<%G%#%s%0$H$7$FMxMQ$G$-$k$h(B - $B$&$K$J$j$^$7$?!%$3$N>l9g!$%P%C%/%(%s%IB&$N%(%s%3!<%G%#%s%0$O(B - EUC_TW $B$^$?$O(B MULE_INTERNAL $B$H$7$^$9!%(B - * EUC_TW $B$N(B regression test $B%1!<%9$rDI2C(B - (contributed by Jonah Kuo ) - - 1998/12/16 $BK\%I%-%e%a%s%H=$@5(B(6.4.2 $B$KH?1G:Q(B)$B!%(B - * Makefile.custom $B$G(B MB=EUC_JP $B$J$I$H@_Dj$9$kJ}K!$O(B 6.4 $B0J9_(B - $B%5%]!<%H$5$l$F$$$J$$$N$G:o=|$7$?!%(B - * $BJ8;z%3!<%I(B $B"*(B $B%(%s%3!<%G%#%s%0!$%/%i%$%"%s%H"*%U%m%s%H%(%s%I(B - $B%5!<%P"*%P%C%/%(%s%I(B $B$K$=$l$>$l8l6g$r=$@5!%(B - - 1998/12/15 6.4 $B8~$1%P%0=$@5%Q%C%A%j%j!<%9(B(6.4.2 $B$KH?1G:Q(B)$B!%(B - * SQL_ASCII $B%5%]!<%H$N%P%0=$@5(B - - 1998/11/21 6.4 $B8~$1%P%0=$@5%Q%C%A%j%j!<%9(B(6.4.2 $B$KH?1G:Q(B)$B!%(B - * BINARY CURSOR $B$NLdBj$r=$@5(B - * pg_dumpall $B$N%P%0=$@5(B - - 1998/11/5 6.4 $B%j%j!<%9!%(B - * pg_database $B$N(B encoding $B%+%i%`$,(B MB $B$,M-8z$G$J$$$H$-$K$b(B - $BDI2C$5$l$k$h$&$K$J$C$?!%$=$N$?$a!$(BMB $B$,M-8z$G$J$$$H$-$K$O!$(B - ASCII $B$N%(%s%3!<%G%#%s%0$rI=$9(B SQL_ASCII $B$r?7$7$$%(%s%3!<%G%#%s%0(B - $B$H$7$FDI2C$7$?!%$3$l$K$H$b$J$$!$%(%s%3!<%G%#%s%0L>$KBP1~$9$k(B - $B%(%s%3!<%G%#%s%0(BID$B$,(B SQL_ASCII $B$r(B 0 $B$H$9$kHV9f$KJQ99$K$J$C$?!%(B - - 1998/7/22 6.4 $B&A8~$1$K%Q%C%A$r%j%j!<%9!%(B - * initdb/createdb/create database $B$G%P%C%/%(%s%IB&$N(B - $B%(%s%3!<%G%#%s%0$r@_Dj$-$k5!G=l=j$rBgI}8+D>$7!%(BMB $B4X78$O(B - include/mb, backend/utils/mb $B$KCV$/$h$&$K$7$?(B - - 1998/5/25 $B%P%0=$@5(B(mb_b3.patch $B$H$7$F(B pgsql-jp ML $B$K%j%j!<%9!$(B - $BK\2H$G$O(B 6.4 snapshot $B$K$7I,MW(B - * configure $B$N%*%W%7%g%s$K(B MB $B%5%]!<%HDI2C(B - (ex. configure --with-mb=EUC_JP) - * EUC_KR $B$N(B regression test $BDI2C(B - ("Soonmyung. Hong" $B$5$sDs6!(B) - * EUC_JP $B$N(B regression test $B$K(B character_length(), position(), - substring(), octet_length() $BDI2C(B - * regress.sh $B$N(B SystemV $B$K$*$1$kHs8_49@-=$@5(B - * toupper(), tolower() $B$K(B 8bit $BJ8;z$,EO$k$HMn$A$k$3$H$,(B - $B$"$k$N$r=$@5(B - - 1998/3/25 PostgreSQL 6.3.1 $B%j%j!<%9!$(BMB PL2 $B$,l9g$KH/@8$9$k%P%0$r=$@5(B - - 1998/3/1 PL1 $B$r%j%j!<%9(B - -$B0J>e!%(B diff --git a/doc/bug.template b/doc/bug.template index f921883ecb..63ac44bba4 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.1beta2): PostgreSQL 9.1beta2 + PostgreSQL version (example: PostgreSQL 9.1.13): PostgreSQL 9.1.13 Compiler used (example: gcc 3.3.5) : diff --git a/doc/src/sgml/.gitignore b/doc/src/sgml/.gitignore index e1b84b490f..2f0329c15f 100644 --- a/doc/src/sgml/.gitignore +++ b/doc/src/sgml/.gitignore @@ -6,9 +6,7 @@ /man7/ /man-stamp # Other popular build targets -/HISTORY /INSTALL -/regress_README /postgres-US.pdf /postgres-A4.pdf /postgres.html @@ -22,9 +20,7 @@ /HTML.index # Assorted byproducts from building the above /postgres.xml -/HISTORY.html /INSTALL.html -/regress_README.html /postgres-US.aux /postgres-US.log /postgres-US.out diff --git a/doc/src/sgml/Makefile b/doc/src/sgml/Makefile index c5078a8080..6c8489dfaa 100644 --- a/doc/src/sgml/Makefile +++ b/doc/src/sgml/Makefile @@ -206,27 +206,23 @@ postgres.pdf: ## JADE.text = $(JADE) $(JADEFLAGS) $(SGMLINCLUDE) $(CATALOG) -d stylesheet.dsl -i output-text -t sgml +ICONV = iconv LYNX = lynx -INSTALL HISTORY regress_README: % : %.html - $(PERL) -p -e 's/ $@ +# The documentation may contain non-ASCII characters (mostly for +# contributor names), which lynx converts to the encoding determined +# by the current locale. To get text output that is deterministic and +# easily readable by everyone, we make lynx produce LATIN1 and then +# convert that to ASCII with transliteration for the non-ASCII characters. +# Official releases were historically built on FreeBSD, which has limited +# locale support and is very picky about locale name spelling. The +# below has been finely tuned to run on FreeBSD and Linux/glibc. +INSTALL: % : %.html + $(PERL) -p -e 's/ $@ INSTALL.html: standalone-install.sgml installation.sgml version.sgml $(JADE.text) -V nochunks standalone-install.sgml installation.sgml > $@ -HISTORY.html: generate_history.pl $(wildcard $(srcdir)/release*.sgml) - $(PERL) $< "$(srcdir)" release.sgml >tempfile_HISTORY.sgml - $(JADE.text) -V nochunks tempfile_HISTORY.sgml > $@ - rm tempfile_HISTORY.sgml - -regress_README.html: regress.sgml - ( echo ''; \ - echo ' ]>'; \ - cat $< ) >tempfile_regress_README.sgml - $(JADE.text) -V nochunks tempfile_regress_README.sgml > $@ - rm tempfile_regress_README.sgml - ## ## XSLT processing @@ -354,13 +350,13 @@ check-tabs: # This allows removing some files from the distribution tarballs while # keeping the dependencies satisfied. .SECONDARY: postgres.xml $(GENERATED_SGML) HTML.index -.SECONDARY: INSTALL.html HISTORY.html regress_README.html +.SECONDARY: INSTALL.html .SECONDARY: %-A4.tex-ps %-US.tex-ps %-A4.tex-pdf %-US.tex-pdf clean: # text --- these are shipped, but not in this directory - rm -f INSTALL HISTORY regress_README - rm -f INSTALL.html HISTORY.html regress_README.html + rm -f INSTALL + rm -f INSTALL.html # single-page output rm -f postgres.html postgres.txt # print diff --git a/doc/src/sgml/auth-delay.sgml b/doc/src/sgml/auth-delay.sgml index b91a7ecda7..e377c980ca 100644 --- a/doc/src/sgml/auth-delay.sgml +++ b/doc/src/sgml/auth-delay.sgml @@ -17,7 +17,7 @@ - In order to function, this module must be loaded via + In order to function, this module must be loaded via in postgresql.conf. diff --git a/doc/src/sgml/auto-explain.sgml b/doc/src/sgml/auto-explain.sgml index b16f9064ff..35c51cd5f2 100644 --- a/doc/src/sgml/auto-explain.sgml +++ b/doc/src/sgml/auto-explain.sgml @@ -79,7 +79,7 @@ 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 extremely negative impact on performance. + get logged. This can have an extremely negative impact on performance. diff --git a/doc/src/sgml/backup.sgml b/doc/src/sgml/backup.sgml index 03180cf108..bbbcd0d551 100644 --- a/doc/src/sgml/backup.sgml +++ b/doc/src/sgml/backup.sgml @@ -579,7 +579,7 @@ tar -cf backup.tar /usr/local/pgsql/data character in the command. The simplest useful command is something like: -archive_command = 'cp -i %p /mnt/server/archivedir/%f </dev/null' # Unix +archive_command = 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f' # Unix archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"' # Windows which will copy archivable WAL segments to the directory @@ -588,7 +588,7 @@ archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"' # Windows %p and %f parameters have been replaced, the actual command executed might look like this: -cp -i pg_xlog/00000001000000A900000065 /mnt/server/archivedir/00000001000000A900000065 </dev/null +test ! -f /mnt/server/archivedir/00000001000000A900000065 && cp pg_xlog/00000001000000A900000065 /mnt/server/archivedir/00000001000000A900000065 A similar command will be generated for each new file to be archived. @@ -617,18 +617,19 @@ cp -i pg_xlog/00000001000000A900000065 /mnt/server/archivedir/00000001000000A900 preserve the integrity of your archive in case of administrator error (such as sending the output of two different servers to the same archive directory). + + + It is advisable to test your proposed archive command to ensure that it indeed does not overwrite an existing file, and that it returns - nonzero status in this case. On many Unix platforms, cp - -i causes copy to prompt before overwriting a file, and - < /dev/null causes the prompt (and overwriting) to - fail. If your platform does not support this behavior, you should - add a command to test for the existence of the archive file. For - example, something like: - -archive_command = 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f' - - works correctly on most Unix variants. + nonzero status in this case. + The example command above for Unix ensures this by including a separate + test step. On some Unix platforms, cp has + switches such as @@ -868,7 +869,11 @@ SELECT pg_stop_backup(); of mistakes when restoring. This is easy to arrange if pg_xlog/ is a symbolic link pointing to someplace outside the cluster directory, which is a common setup anyway for performance - reasons. + reasons. You might also want to exclude postmaster.pid + and postmaster.opts, which record information + about the running postmaster, not about the + postmaster which will eventually use this backup. + (These files can confuse pg_ctl.) @@ -1212,7 +1217,7 @@ restore_command = 'cp /mnt/server/archivedir/%f %p' on, and set up an archive_command that performs archiving only when a switch file exists. For example: -archive_command = 'test ! -f /var/lib/pgsql/backup_in_progress || cp -i %p /var/lib/pgsql/archive/%f < /dev/null' +archive_command = 'test ! -f /var/lib/pgsql/backup_in_progress || (test ! -f /var/lib/pgsql/archive/%f && cp %p /var/lib/pgsql/archive/%f)' This command will perform archiving when /var/lib/pgsql/backup_in_progress exists, and otherwise @@ -1239,6 +1244,11 @@ tar -rf /var/lib/pgsql/backup.tar /var/lib/pgsql/archive/ Please remember to add error handling to your backup scripts. + + + + Compressed Archive Logs + If archive storage size is a concern, use pg_compresslog, , to @@ -1265,16 +1275,13 @@ restore_command = 'gunzip < /mnt/server/archivedir/%f | pg_decompresslog - %p archive_command, so that their postgresql.conf entry looks very simple: -archive_command = 'local_backup_script.sh' +archive_command = 'local_backup_script.sh "%p" "%f"' Using a separate script file is advisable any time you want to use more than a single command in the archiving process. This allows all complexity to be managed within the script, which can be written in a popular scripting language such as bash or perl. - Any messages written to stderr from the script will appear - in the database server log, allowing complex configurations to be - diagnosed easily if they fail. @@ -1303,6 +1310,16 @@ archive_command = 'local_backup_script.sh' + + + + When using an archive_command script, it's desirable + to enable . + Any messages written to stderr from the script will then + appear in the database server log, allowing complex configurations to + be diagnosed easily if they fail. + + diff --git a/doc/src/sgml/catalogs.sgml b/doc/src/sgml/catalogs.sgml index 8504555bac..d115589c53 100644 --- a/doc/src/sgml/catalogs.sgml +++ b/doc/src/sgml/catalogs.sgml @@ -1263,7 +1263,7 @@ bool Role can log in. That is, this role can be given as the initial - session authorization identifier. + session authorization identifier @@ -1274,7 +1274,7 @@ Role is a replication role. That is, this role can initiate streaming replication (see ) and set/unset the system backup mode using pg_start_backup and - pg_stop_backup. + pg_stop_backup @@ -1898,7 +1898,8 @@ convalidated bool - Has the constraint been validated? Can only be false for foreign keys + Has the constraint been validated? + Currently, can only be false for foreign keys @@ -4588,7 +4589,7 @@ ev_attr int2 - The column this rule is for (currently, always zero to + The column this rule is for (currently, always -1 to indicate the whole table) @@ -4668,8 +4669,9 @@ The catalog pg_seclabel stores security - labels on database objects. See the - statement. + labels on database objects. Security labels can be manipulated + with the command. For an easier + way to view security labels, see . @@ -6883,6 +6885,8 @@ in the same way as in pg_description or pg_depend). Also, the right to extend a relation is represented as a separate lockable object. + Also, advisory locks can be taken on numbers that have + user-defined meanings.
@@ -6983,9 +6987,7 @@ any OID column OID of the object within its system catalog, or null if the - object is not a general database object. - For advisory locks it is used to distinguish the two key - spaces (1 for an int8 key, 2 for two int4 keys). + object is not a general database object @@ -6993,10 +6995,11 @@ smallint - For a table column, this is the column number (the + Column number targeted by the lock (the classid and objid refer to the - table itself). For all other object types, this column is - zero. Null if the object is not a general database object + table itself), + or zero if the target is some other general database object, + or null if the target is not a general database object @@ -7013,7 +7016,7 @@ Process ID of the server process holding or awaiting this - lock. Null if the lock is held by a prepared transaction. + lock, or null if the lock is held by a prepared transaction @@ -7066,7 +7069,8 @@ Advisory locks can be acquired on keys consisting of either a single - bigint value or two integer values. A bigint key is displayed with its + bigint value or two integer values. + A bigint key is displayed with its high-order half in the classid column, its low-order half in the objid column, and objsubid equal to 1. Integer keys are displayed with the first key in the @@ -7076,16 +7080,6 @@ so the database column is meaningful for an advisory lock. - - When the pg_locks view is accessed, the - internal lock manager data structures are momentarily locked, and - a copy is made for the view to display. This ensures that the - view produces a consistent set of results, while not blocking - normal lock manager operations longer than necessary. Nonetheless - there could be some impact on database performance if this view is - frequently accessed. - - pg_locks provides a global view of all locks in the database cluster, not only those relevant to the current database. @@ -7110,6 +7104,21 @@ but it continues to hold the locks it acquired while running.) + + The pg_locks view displays data from both the + regular lock manager and the predicate lock manager, which are + separate systems. When this view is accessed, the internal data + structures of each lock manager are momentarily locked, and copies are + made for the view to display. Each lock manager will therefore + produce a consistent set of results, but as we do not lock both lock + managers simultaneously, it is possible for locks to be taken or + released after we interrogate the regular lock manager and before we + interrogate the predicate lock manager. Each lock manager is only + locked for the minimum possible time so as to reduce the performance + impact of querying this view, but there could nevertheless be some + impact on database performance if it is frequently accessed. + + @@ -7364,7 +7373,7 @@ Role can update system catalogs directly. (Even a superuser cannot do - this unless this column is true.) + this unless this column is true) @@ -7378,6 +7387,18 @@ + + rolreplication + bool + + + Role is a replication role. That is, this role can initiate streaming + replication (see ) and set/unset + the system backup mode using pg_start_backup and + pg_stop_backup + + + rolconnlimit int4 @@ -7403,6 +7424,13 @@ null if no expiration + + rolconfig + text[] + + Role-specific defaults for run-time configuration variables + + oid oid @@ -8199,7 +8227,9 @@ The view pg_timezone_names provides a list of time zone names that are recognized by SET TIMEZONE, along with their associated abbreviations, UTC offsets, - and daylight-savings status. + and daylight-savings status. (Technically, + PostgreSQL uses UT1 rather + than UTC because leap seconds are not handled.) Unlike the abbreviations shown in pg_timezone_abbrevs, many of these names imply a set of daylight-savings transition date rules. Therefore, the associated information changes across local DST diff --git a/doc/src/sgml/charset.sgml b/doc/src/sgml/charset.sgml index 6b0793e219..afdc8a3661 100644 --- a/doc/src/sgml/charset.sgml +++ b/doc/src/sgml/charset.sgml @@ -1499,17 +1499,6 @@ RESET client_encoding; systems. - - - - - - An extensive collection of documents about character sets, encodings, - and code pages. - - - - CJKV Information Processing: Chinese, Japanese, Korean & Vietnamese Computing diff --git a/doc/src/sgml/client-auth.sgml b/doc/src/sgml/client-auth.sgml index 77c541b6cb..33da89c40c 100644 --- a/doc/src/sgml/client-auth.sgml +++ b/doc/src/sgml/client-auth.sgml @@ -231,7 +231,7 @@ hostnossl database user An IP address is specified in standard dotted decimal notation with 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 must + IP address that must match. Bits to the right of this should be zero in the given IP address. There must not be any white space between the IP address, the /, and the CIDR mask length. @@ -990,7 +990,9 @@ omicron bryanh guest1 Kerberos when possible and automatically fall back to NTLM in other cases. SSPI authentication only works when both - server and client are running Windows. + server and client are running Windows, + or, on non-Windows platforms, when GSSAPI + is available. @@ -1363,8 +1365,8 @@ omicron bryanh guest1 In the second mode, the server first binds to the LDAP directory with - a fixed user name and password, specified with ldapbinduser - and ldapbinddn, and performs a search for the user trying + a fixed user name and password, specified with ldapbinddn + and ldapbindpasswd, and performs a search for the user trying to log in to the database. If no user and password is configured, an anonymous bind will be attempted to the directory. The search will be performed over the subtree at ldapbasedn, and will try to @@ -1385,7 +1387,8 @@ omicron bryanh guest1 ldapserver - Name or IP of LDAP server to connect to. + Names or IP addresses of LDAP servers to connect to. Multiple + servers may be specified, separated by spaces. diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 39819695d1..d3ac7c5230 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -259,7 +259,7 @@ SET ENABLE_SEQSCAN TO OFF; - Specifies the name of an additional process-id (PID) file that the + Specifies the name of an additional process-ID (PID) file that the server should create for use by server administration programs. This parameter can only be set at server start. @@ -555,8 +555,9 @@ SET ENABLE_SEQSCAN TO OFF; an otherwise idle connection. A value of 0 uses the system default. This parameter is supported only on systems that support the TCP_KEEPIDLE or TCP_KEEPALIVE symbols, and on - Windows; on other systems, it must be zero. This parameter is ignored - for connections made via a Unix-domain socket. + Windows; on other systems, it must be zero. + In sessions connected via a Unix-domain socket, this parameter is + ignored and always reads as zero. @@ -578,8 +579,9 @@ SET ENABLE_SEQSCAN TO OFF; otherwise idle connection. A value of 0 uses the system default. This parameter is supported only on systems that support the TCP_KEEPINTVL symbol, and on Windows; on other systems, it - must be zero. This parameter is ignored for connections made via a - Unix-domain socket. + must be zero. + In sessions connected via a Unix-domain socket, this parameter is + ignored and always reads as zero. @@ -600,8 +602,9 @@ SET ENABLE_SEQSCAN TO OFF; Specifies the number of keepalive packets to send on an otherwise idle connection. A value of 0 uses the system default. This parameter is supported only on systems that support the TCP_KEEPCNT - symbol; on other systems, it must be zero. This parameter is ignored - for connections made via a Unix-domain socket. + symbol; on other systems, it must be zero. + In sessions connected via a Unix-domain socket, this parameter is + ignored and always reads as zero. @@ -1420,11 +1423,18 @@ SET ENABLE_SEQSCAN TO OFF; This parameter can only be set at server start. - In minimal level, WAL-logging of some bulk operations, like - CREATE INDEX, CLUSTER and COPY on - a table that was created or truncated in the same transaction can be - safely skipped, which can make those operations much faster (see - ). But minimal WAL does not contain + In minimal level, WAL-logging of some bulk + operations can be safely skipped, which can make those + operations much faster (see ). + Operations in which this optimization can be applied include: + + CREATE TABLE AS + CREATE INDEX + CLUSTER + COPY into tables that were created or truncated in the same + transaction + + But minimal WAL does not contain enough information to reconstruct the data from a base backup and the WAL logs, so either archive or hot_standby level must be used to enable @@ -1447,10 +1457,10 @@ SET ENABLE_SEQSCAN TO OFF; + fsync (boolean) fsync configuration parameter - fsync (boolean) If this parameter is on, the PostgreSQL server @@ -1499,7 +1509,7 @@ SET ENABLE_SEQSCAN TO OFF; - synchronous_commit (boolean) + synchronous_commit (enum) synchronous_commit configuration parameter @@ -1604,10 +1614,10 @@ SET ENABLE_SEQSCAN TO OFF; + full_page_writes (boolean) full_page_writes configuration parameter - full_page_writes (boolean) When this parameter is on, the PostgreSQL server @@ -1844,9 +1854,9 @@ SET ENABLE_SEQSCAN TO OFF; archive_mode and archive_command are separate variables so that archive_command can be changed without leaving archiving mode. - This parameter can only be set at server start. wal_level - must be set to archive or hot_standby to - enable archive_mode. + This parameter can only be set at server start. + archive_mode cannot be enabled when + wal_level is set to minimal. @@ -1911,7 +1921,10 @@ SET ENABLE_SEQSCAN TO OFF; files. Therefore, it is unwise to use a very short archive_timeout — it will bloat your archive storage. archive_timeout settings of a minute or so are - usually reasonable. This parameter can only be set in the + usually reasonable. You should consider using streaming replication, + instead of archiving, if you want data to be copied off the master + server more quickly than that. + This parameter can only be set in the postgresql.conf file or on the server command line. @@ -1920,14 +1933,32 @@ SET ENABLE_SEQSCAN TO OFF; - - Streaming Replication + + + + Replication + + + These settings control the behavior of the built-in + streaming replication feature (see + ). + Some parameters must be set on the master server, while others must be + set on the standby server(s) that will receive replication data. + + + + Master Server - These settings control the behavior of the built-in - streaming replication feature. - These parameters would be set on the primary server that is + These parameters can be set on the primary server that is to send replication data to one or more standby servers. + Note that in addition to these parameters, + must be set appropriately on the master + server, and you will typically want to enable WAL archiving as + well (see ). + The values of these parameters on standby servers are irrelevant, + although you may wish to set them there in preparation for the + possibility of a standby becoming the master. @@ -1938,12 +1969,16 @@ SET ENABLE_SEQSCAN TO OFF; - Specifies the maximum number of concurrent connections from standby - servers or streaming base backup clients (i.e., the maximum number of - simultaneously running WAL sender - processes). The default is zero. This parameter can only be set at - server start. wal_level must be set to archive - or hot_standby to allow connections from standby servers. + Specifies the maximum number of concurrent connections from + standby servers or streaming base backup clients (i.e., the + maximum number of simultaneously running WAL sender + processes). The default is zero, meaning replication is + disabled. WAL sender processes count towards the total number + of connections, so the parameter cannot be set higher than + . This parameter can only + be set at server start. wal_level must be set + to archive or hot_standby to allow + connections from standby servers. @@ -1995,7 +2030,7 @@ SET ENABLE_SEQSCAN TO OFF; pg_xlog; the system might need to retain more segments for WAL archival or to recover from a checkpoint. If wal_keep_segments is zero (the default), the system - doesn't keep any extra segments for standby purposes, and the number + doesn't keep any extra segments for standby purposes, so the number of old WAL segments available to standby servers is a function of the location of the previous checkpoint and status of WAL archiving. This parameter has no effect on restartpoints. @@ -2057,20 +2092,7 @@ SET ENABLE_SEQSCAN TO OFF; - - - - - Synchronous Replication - - These settings control the behavior of the built-in - synchronous replication feature. - These parameters would be set on the primary server that is - to send replication data to one or more standby servers. - - - synchronous_standby_names (string) @@ -2078,47 +2100,60 @@ SET ENABLE_SEQSCAN TO OFF; - Specifies a priority ordered list of standby names that can offer - synchronous replication. At any one time there will be at most one - synchronous standby that will wake sleeping users following commit. - The synchronous standby will be the first named standby that is - both currently connected and streaming in real-time to the standby - (as shown by a state of "STREAMING"). Other standby servers - with listed later will become potential synchronous standbys. - If the current synchronous standby disconnects for whatever reason - it will be replaced immediately with the next highest priority standby. + Specifies a comma-separated list of standby names that can support + synchronous replication, as described in + . + At any one time there will be at most one active synchronous standby; + transactions waiting for commit will be allowed to proceed after + this standby server confirms receipt of their data. + The synchronous standby will be the first standby named in this list + that is both currently connected and streaming data in real-time + (as shown by a state of streaming in the + + pg_stat_replication view). + Other standby servers appearing later in this list represent potential + synchronous standbys. + If the current synchronous standby disconnects for whatever reason, + it will be replaced immediately with the next-highest-priority standby. Specifying more than one standby name can allow very high availability. - The standby name is currently taken as the application_name of the - standby, as set in the primary_conninfo on the standby. Names are - not enforced for uniqueness. In case of duplicates one of the standbys - will be chosen to be the synchronous standby, though exactly which - one is indeterminate. - The special entry * matches any application_name, including - the default application name of walreceiver. + 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 + 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. + The special entry * matches any + application_name, including the default application name + of walreceiver. - If no synchronous standby names are specified, then synchronous - replication is not enabled and transaction commit will never wait for + If no synchronous standby names are specified here, then synchronous + replication is not enabled and transaction commits will not wait for replication. This is the default configuration. Even when synchronous replication is enabled, individual transactions can be configured not to wait for replication by setting the parameter to local or off. + + This parameter can only be set in the postgresql.conf + file or on the server command line. + - - Standby Servers + + Standby Servers These settings control the behavior of a standby server that is - to receive replication data. + to receive replication data. Their values on the master server + are irrelevant. @@ -2207,13 +2242,16 @@ SET ENABLE_SEQSCAN TO OFF; - Specifies the minimum frequency, in seconds, for the WAL receiver + Specifies the minimum frequency for the WAL receiver process on the standby to send information about replication progress - to the primary, where they can be seen using the - pg_stat_replication view. The standby will report + to the primary, where it can be seen using the + + pg_stat_replication view. The standby will report the last transaction log position it has written, the last position it - has flushed to disk, and the last position it has applied. Updates are - sent each time the write or flush positions changed, or at least as + has flushed to disk, and the last position it has applied. + This parameter's + value is the maximum interval, in seconds, between reports. Updates are + sent each time the write or flush positions change, or at least as often as specified by this parameter. Thus, the apply position may lag slightly behind the true position. Setting this parameter to zero disables status updates completely. This parameter can only be set in @@ -2239,8 +2277,10 @@ SET ENABLE_SEQSCAN TO OFF; about queries currently executing on the standby. This parameter can be used to eliminate query cancels caused by cleanup records, but can cause database bloat on the primary for some workloads. - The default value is off. Feedback messages will not - be sent more frequently than once per wal_receiver_status_interval. + Feedback messages will not be sent more frequently than once per + wal_receiver_status_interval. The default value is + off. This parameter can only be set in the + postgresql.conf file or on the server command line. @@ -2589,14 +2629,14 @@ SET ENABLE_SEQSCAN TO OFF; planning using heuristic searching. This reduces planning time for complex queries (those joining many relations), at the cost of producing plans that are sometimes inferior to those found by the normal - exhaustive-search algorithm. Also, GEQO's searching is randomized and - therefore its plans may vary nondeterministically. + exhaustive-search algorithm. For more information see . + geqo (boolean) genetic query optimization @@ -2607,7 +2647,6 @@ SET ENABLE_SEQSCAN TO OFF; geqo configuration parameter - geqo (boolean) Enables or disables genetic query optimization. @@ -2629,9 +2668,11 @@ SET ENABLE_SEQSCAN TO OFF; this many FROM items involved. (Note that a FULL OUTER JOIN construct counts as only one FROM item.) The default is 12. For simpler queries it is usually best - to use the deterministic, exhaustive planner, but for queries with - many tables the deterministic planner takes too long, often - longer than the penalty of executing a suboptimal plan. + to use the regular, exhaustive-search planner, but for queries with + many tables the exhaustive search takes too long, often + longer than the penalty of executing a suboptimal plan. Thus, + a threshold on the size of the query is a convenient way to manage + use of GEQO. @@ -2843,7 +2884,7 @@ SELECT * FROM parent WHERE key = 2400; Setting this value to or more - may trigger use of the GEQO planner, resulting in nondeterministic + may trigger use of the GEQO planner, resulting in non-optimal plans. See . @@ -2878,7 +2919,7 @@ SELECT * FROM parent WHERE key = 2400; Setting this value to or more - may trigger use of the GEQO planner, resulting in nondeterministic + may trigger use of the GEQO planner, resulting in non-optimal plans. See . @@ -2928,7 +2969,7 @@ SELECT * FROM parent WHERE key = 2400; value (CSV) format, which is convenient for loading logs into programs. See for details. - logging_collector must be enabled to generate + must be enabled to generate CSV-format log output. @@ -2960,24 +3001,39 @@ local0.* /var/log/postgresql - This parameter captures plain and CSV-format log messages - sent to stderr and redirects them into log files. + This parameter enables the logging collector, which + is a background process that captures log messages + sent to stderr and redirects them into log files. This approach is often more useful than logging to syslog, since some types of messages - might not appear in syslog output (a common example - is dynamic-linker failure messages). + might not appear in syslog output. (One common + example is dynamic-linker failure messages; another is error messages + produced by scripts such as archive_command.) This parameter can only be set at server start. + + + It is possible to log to stderr without using the + logging collector; the log messages will just go to wherever the + server's stderr is directed. However, that method is + only suitable for low log volumes, since it provides no convenient + way to rotate log files. Also, on some platforms not using the + logging collector can result in lost or garbled log output, because + multiple processes writing concurrently to the same log file can + overwrite each other's output. + + + The logging collector is designed to never lose messages. This means that in case of extremely high load, server processes could be - blocked due to trying to send additional log messages when the + blocked while trying to send additional log messages when the collector has fallen behind. In contrast, syslog - prefers to drop messages if it cannot write them, which means it's - less reliable in those cases but it will not block the rest of the - system. + prefers to drop messages if it cannot write them, which means it + may fail to log some messages in such cases but it will not block + the rest of the system. @@ -3016,6 +3072,10 @@ local0.* /var/log/postgresql any time-zone-dependent %-escapes, the computation is done in the zone specified by .) + The supported %-escapes are similar to those + listed in the Open Group's strftime + specification. Note that the system's strftime is not used directly, so platform-specific (nonstandard) extensions do not work. @@ -3180,7 +3240,7 @@ local0.* /var/log/postgresql syslog_ident (string) - syslog_identity configuration parameter + syslog_ident configuration parameter @@ -4485,9 +4545,11 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; The current effective value of the search path can be examined via the SQL function - current_schemas(). This is not quite the same as + current_schemas + (see ). + This is not quite the same as examining the value of search_path, since - current_schemas() shows how the items + current_schemas shows how the items appearing in search_path were resolved. @@ -4595,14 +4657,17 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; This parameter is normally on. When set to off, it disables validation of the function body string during . Disabling validation is - occasionally useful to avoid problems such as forward references - when restoring function definitions from a dump. + linkend="sql-createfunction">. Disabling validation avoids side + effects of the validation process and avoids false positives due + to problems such as forward references. Set this parameter + to off before loading functions on behalf of other + users; pg_dump does so automatically. + default_transaction_isolation (enum) transaction isolation level setting default @@ -4610,7 +4675,6 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; default_transaction_isolation configuration parameter - default_transaction_isolation (enum) Each SQL transaction has an isolation level, which can be @@ -4629,6 +4693,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; + default_transaction_read_only (boolean) read-only transaction setting default @@ -4636,8 +4701,6 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; default_transaction_read_only configuration parameter - - default_transaction_read_only (boolean) A read-only SQL transaction cannot alter non-temporary tables. @@ -4652,6 +4715,7 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; + default_transaction_deferrable (boolean) deferrable transaction setting default @@ -4659,8 +4723,6 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; default_transaction_deferrable configuration parameter - - default_transaction_deferrable (boolean) When running at the serializable isolation level, @@ -4943,6 +5005,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; + extra_float_digits (integer) significant digits @@ -4953,8 +5016,6 @@ SET XML OPTION { DOCUMENT | CONTENT }; extra_float_digits configuration parameter - - extra_float_digits (integer) This parameter adjusts the number of digits displayed for @@ -4965,6 +5026,7 @@ SET XML OPTION { DOCUMENT | CONTENT }; partially-significant digits; this is especially useful for dumping float data that needs to be restored exactly. Or it can be set negative to suppress unwanted digits. + See also . @@ -5196,7 +5258,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' - Unlike local_preload_libraries, there is no + Unlike , there is no performance advantage to loading a library at session start rather than when it is first used. Rather, the intent of this feature is to allow debugging or performance-measurement @@ -5230,6 +5292,7 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' + deadlock_timeout (integer) deadlock timeout during @@ -5241,8 +5304,6 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' deadlock_timeout configuration parameter - - deadlock_timeout (integer) This is the amount of time, in milliseconds, to wait on a lock @@ -5515,11 +5576,23 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' inheritance - This controls the inheritance semantics. If turned off, - subtables are not accessed by various commands by default; basically - an implied ONLY key word. This was added for - compatibility with releases prior to 7.1. See - for more information. + This setting controls whether undecorated table references are + considered to include inheritance child tables. The default is + on, which means child tables are included (thus, + a * suffix is assumed by default). If turned + off, child tables are not included (thus, an + ONLY prefix is assumed). The SQL standard + requires child tables to be included, so the off setting + is not spec-compliant, but it is provided for compatibility with + PostgreSQL releases prior to 7.1. + See for more information. + + + + Turning sql_inheritance off is deprecated, because that + behavior has been found to be error-prone as well as contrary to SQL + standard. Discussions of inheritance behavior elsewhere in this + manual generally assume that it is on. @@ -6166,11 +6239,7 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1) If on, emit information about user lock usage. Output is the same - as for trace_locks, only for user locks. - - - User locks were removed as of PostgreSQL version 8.2. This option - currently has no effect. + as for trace_locks, only for advisory locks. This parameter is only available if the LOCK_DEBUG diff --git a/doc/src/sgml/datatype.sgml b/doc/src/sgml/datatype.sgml index ab8eb2d30b..10ec158098 100644 --- a/doc/src/sgml/datatype.sgml +++ b/doc/src/sgml/datatype.sgml @@ -549,7 +549,7 @@ NUMERIC type is more akin to varchar(n) than to char(n).) The actual storage requirement is two bytes for each group of four decimal digits, - plus five to eight bytes overhead. + plus three to eight bytes overhead. @@ -672,6 +672,17 @@ NUMERIC from zero will cause an underflow error. + + + The setting controls the + number of extra significant digits included when a floating point + value is converted to text for output. With the default value of + 0, the output is the same on every platform + supported by PostgreSQL. Increasing it will produce output that + more accurately represents the stored value, but may be unportable. + + + not a number double precision @@ -802,6 +813,20 @@ ALTER SEQUENCE tablename_ + + + Because smallserial, serial and + bigserial are implemented using sequences, there may + be "holes" or gaps in the sequence of values which appears in the + column, even if no rows are ever deleted. A value allocated + from the sequence is still "used up" even if a row containing that + value is never successfully inserted into the table column. This + may happen, for example, if the inserting transaction rolls back. + See nextval() in + for details. + + + Prior to PostgreSQL 7.3, serial @@ -3875,7 +3900,7 @@ SELECT to_tsvector( 'postgraduate' ) @@ to_tsquery( 'postgres:*' ); t (1 row) - because postgres gets stemmed to postgr: + because postgres gets stemmed to postgr: SELECT to_tsquery('postgres:*'); to_tsquery diff --git a/doc/src/sgml/dblink.sgml b/doc/src/sgml/dblink.sgml index 22551402e3..855495c54d 100644 --- a/doc/src/sgml/dblink.sgml +++ b/doc/src/sgml/dblink.sgml @@ -76,8 +76,7 @@ dblink_connect(text connname, text connstr) returns text connstr - - libpq-style connection info string, for example + libpq-style connection info string, for example hostaddr=127.0.0.1 port=5432 dbname=mydb user=postgres password=mypasswd. For details see PQconnectdb in @@ -114,7 +113,7 @@ dblink_connect(text connname, text connstr) returns text - Example + Examples SELECT dblink_connect('dbname=postgres'); @@ -285,7 +284,7 @@ dblink_disconnect(text connname) returns text - Example + Examples SELECT dblink_disconnect(); @@ -447,12 +446,11 @@ CREATE VIEW myremote_pg_proc AS AS t1(proname name, prosrc text); SELECT * FROM myremote_pg_proc WHERE proname LIKE 'bytea%'; - - + - Example + Examples SELECT * FROM dblink('dbname=postgres', 'select proname, prosrc from pg_proc') @@ -620,7 +618,7 @@ dblink_exec(text sql [, bool fail_on_error]) returns text - Example + Examples SELECT dblink_connect('dbname=dblink_test_standby'); @@ -761,7 +759,7 @@ dblink_open(text connname, text cursorname, text sql [, bool fail_on_error]) ret - Example + Examples SELECT dblink_connect('dbname=postgres'); @@ -878,7 +876,7 @@ dblink_fetch(text connname, text cursorname, int howmany [, bool fail_on_error]) - Example + Examples SELECT dblink_connect('dbname=postgres'); @@ -1011,7 +1009,7 @@ dblink_close(text connname, text cursorname [, bool fail_on_error]) returns text - Example + Examples SELECT dblink_connect('dbname=postgres'); @@ -1068,7 +1066,7 @@ dblink_get_connections() returns text[] - Example + Examples SELECT dblink_get_connections(); @@ -1127,7 +1125,7 @@ dblink_error_message(text connname) returns text - Example + Examples SELECT dblink_error_message('dtest1'); @@ -1205,7 +1203,7 @@ dblink_send_query(text connname, text sql) returns int - Example + Examples SELECT dblink_send_query('dtest1', 'SELECT * FROM foo WHERE f1 < 3'); @@ -1264,7 +1262,7 @@ dblink_is_busy(text connname) returns int - Example + Examples SELECT dblink_is_busy('dtest1'); @@ -1324,7 +1322,7 @@ dblink_get_notify(text connname) returns setof (notify_name text, be_pid int, ex - Example + Examples SELECT dblink_exec('LISTEN virtual'); @@ -1437,7 +1435,7 @@ dblink_get_result(text connname [, bool fail_on_error]) returns setof record - Example + Examples contrib_regression=# SELECT dblink_connect('dtest1', 'dbname=contrib_regression'); @@ -1554,7 +1552,7 @@ dblink_cancel_query(text connname) returns text - Example + Examples SELECT dblink_cancel_query('dtest1'); @@ -1628,7 +1626,7 @@ CREATE TYPE dblink_pkey_results AS (position int, colname text); - Example + Examples CREATE TABLE foobar ( @@ -1769,7 +1767,7 @@ dblink_build_sql_insert(text relname, - Example + Examples SELECT dblink_build_sql_insert('foo', '1 2', 2, '{"1", "a"}', '{"1", "b''a"}'); @@ -1883,7 +1881,7 @@ dblink_build_sql_delete(text relname, - Example + Examples SELECT dblink_build_sql_delete('"MyFoo"', '1 2', 2, '{"1", "b"}'); @@ -2016,7 +2014,7 @@ dblink_build_sql_update(text relname, - Example + Examples SELECT dblink_build_sql_update('foo', '1 2', 2, '{"1", "a"}', '{"1", "b"}'); diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml index 9709dd613f..58b8622b6e 100644 --- a/doc/src/sgml/ddl.sgml +++ b/doc/src/sgml/ddl.sgml @@ -2062,6 +2062,23 @@ SELECT name, altitude ONLY keyword. + + You can also write the table name with a trailing * + to explicitly specify that descendant tables are included: + + +SELECT name, altitude + FROM cities* + WHERE altitude > 500; + + + Writing * is not necessary, since this behavior is + the default (unless you have changed the setting of the + configuration option). + However writing * might be useful to emphasize that + additional tables will be searched. + + In some cases you might wish to know which table a particular row originated from. There is a system column called @@ -2209,15 +2226,15 @@ VALUES ('New York', NULL, NULL, 'NY'); data modification, or schema modification (e.g., SELECT, UPDATE, DELETE, most variants of ALTER TABLE, but - not INSERT and ALTER TABLE ... + not INSERT or ALTER TABLE ... RENAME) typically default to including child tables and support the ONLY notation to exclude them. Commands that do database maintenance and tuning (e.g., REINDEX, VACUUM) - typically only work on individual, physical tables and do no + typically only work on individual, physical tables and do not support recursing over inheritance hierarchies. The respective - behavior of each individual command is documented in the reference - part (). + behavior of each individual command is documented in its reference + page (). @@ -2267,18 +2284,6 @@ VALUES ('New York', NULL, NULL, 'NY'); inheritance is useful for your application. - - Deprecated - - In releases of PostgreSQL prior to 7.1, the - default behavior was not to include child tables in queries. This was - found to be error prone and also in violation of the SQL - standard. You can get the pre-7.1 behavior by turning off the - configuration - option. - - - @@ -2332,8 +2337,9 @@ VALUES ('New York', NULL, NULL, 'NY'); Bulk loads and deletes can be accomplished by adding or removing partitions, if that requirement is planned into the partitioning design. - ALTER TABLE is far faster than a bulk operation. - It also entirely avoids the VACUUM + ALTER TABLE NO INHERIT and DROP TABLE are + both far faster than a bulk operation. + These commands also entirely avoid the VACUUM overhead caused by a bulk DELETE. @@ -3007,6 +3013,9 @@ ANALYZE measurement; foreign table + + user mapping + PostgreSQL implements portions of the SQL/MED @@ -3021,10 +3030,11 @@ ANALYZE measurement; foreign data wrapper. A foreign data wrapper is a library that can communicate with an external data source, hiding the details of connecting to the data source and fetching data from it. There - are several foreign data wrappers available, which can for example read - plain data files residing on the server, or connect to another PostgreSQL - instance. If none of the existing foreign data wrappers suit your needs, - you can write your own; see . + is a foreign data wrapper available as a contrib module, + which can read plain data files residing on the server. Other kind of + foreign data wrappers might be found as third party products. If none of + the existing foreign data wrappers suit your needs, you can write your + own; see . @@ -3035,8 +3045,15 @@ ANALYZE measurement; tables, which define the structure of the remote data. A foreign table can be used in queries just like a normal table, but a foreign table has no storage in the PostgreSQL server. Whenever it is - used, PostgreSQL asks the foreign data wrapper to fetch the data from the - external source. + used, PostgreSQL asks the foreign data wrapper + to fetch the data from the external source. + + + + Accessing remote data may require authentication at the external + data source. This information can be provided by a + user mapping, which can provide additional options based + on the current PostgreSQL role. diff --git a/doc/src/sgml/dfunc.sgml b/doc/src/sgml/dfunc.sgml index bc29fb18cb..9fd3511b4d 100644 --- a/doc/src/sgml/dfunc.sgml +++ b/doc/src/sgml/dfunc.sgml @@ -154,8 +154,8 @@ cc -shared -o foo.so foo.o - MacOS X - MacOS Xshared library + Mac OS X + Mac OS Xshared library Here is an example. It assumes the developer tools are installed. diff --git a/doc/src/sgml/docguide.sgml b/doc/src/sgml/docguide.sgml index 7bbe3246e7..546ec67188 100644 --- a/doc/src/sgml/docguide.sgml +++ b/doc/src/sgml/docguide.sgml @@ -106,7 +106,7 @@ - DocBook DSSSL Stylesheets + DocBook DSSSL Stylesheets These contain the processing instructions for converting the @@ -117,7 +117,7 @@ - DocBook XSL Stylesheets + DocBook XSL Stylesheets This is another stylesheet for converting DocBook to other @@ -240,8 +240,9 @@ It's possible that the ports do not update the main catalog file - in /usr/local/share/sgml/catalog.ports or order - isn't proper . Be sure to have the following lines in beginning of file: + in /usr/local/share/sgml/catalog.ports or that the + order isn't proper. Be sure to have the following lines in the beginning + of the file: CATALOG "openjade/catalog" CATALOG "iso8879/catalog" @@ -926,26 +927,19 @@ save_size.pdfjadetex = 15000 Plain Text Files - Several files are distributed as plain text, for reading during - the installation process. The INSTALL file + The installation instructions are also distributed as plain text, + in case they are needed in a situation where better reading tools + are not available. The INSTALL file corresponds to , with some minor changes to account for the different context. To recreate the file, change to the directory doc/src/sgml - and enter gmake INSTALL. This will create - a file INSTALL.html that can be saved as text - with Netscape Navigator and put into - the place of the existing file. - Netscape seems to offer the best - quality for HTML to text conversions (over - lynx and - w3m). + and enter gmake INSTALL. - The file HISTORY can be created similarly, - using the command gmake HISTORY. For the - file src/test/regress/README the command is - gmake regress_README. + In the past, the release notes and regression testing instructions + were also distributed as plain text, but this practice has been + discontinued. diff --git a/doc/src/sgml/dummy-seclabel.sgml b/doc/src/sgml/dummy-seclabel.sgml index 28d19d2409..d064705f2a 100644 --- a/doc/src/sgml/dummy-seclabel.sgml +++ b/doc/src/sgml/dummy-seclabel.sgml @@ -1,4 +1,4 @@ - + dummy_seclabel @@ -40,7 +40,7 @@ # postgresql.conf -shared_preload_libraries = 'dummy_label' +shared_preload_libraries = 'dummy_seclabel' diff --git a/doc/src/sgml/ecpg.sgml b/doc/src/sgml/ecpg.sgml index def250c156..f05a44797f 100644 --- a/doc/src/sgml/ecpg.sgml +++ b/doc/src/sgml/ecpg.sgml @@ -760,11 +760,6 @@ do normal clauses. - - Both of these methods only allow retrieving one row at a time. If - you need to process result sets that potentially contain more than - one row, you need to use a cursor, as shown in the second example. - @@ -940,20 +935,6 @@ struct varchar_var { int len; char arr[180]; } var; is used. - - Two or more VARCHAR host variables cannot be defined - in single line statement. The following code will confuse - the ecpg preprocessor: - -VARCHAR v1[128], v2[128]; /* WRONG */ - - Two variables should be defined in separate statements like this: - -VARCHAR v1[128]; -VARCHAR v2[128]; - - - VARCHAR can be written in upper or lower case, but not in mixed case. @@ -1038,7 +1019,7 @@ ts = 2010-06-27 18:03:56.949343 In addition, the DATE type can be handled in the same way. The - program has to include pg_types_date.h, declare a host variable + program has to include pgtypes_date.h, declare a host variable as the date type and convert a DATE value into a text form using PGTYPESdate_to_asc() function. For more details about the pgtypes library functions, see . @@ -7680,9 +7661,9 @@ VAR varname IS ctype Description - The VAR command defines a host variable. It - is equivalent to an ordinary C variable definition inside a - declare section. + The VAR command assigns a new C data type + to a host variable. The host variable must be previously + declared in a declare section. @@ -7714,8 +7695,10 @@ VAR varname IS ctype Examples -EXEC SQL VAR vc IS VARCHAR[10]; -EXEC SQL VAR boolvar IS bool; +Exec sql begin declare section; +short a; +exec sql end declare section; +EXEC SQL VAR a IS int; @@ -9424,7 +9407,7 @@ risnull(CINTTYPE, (char *) &i); Functions return this value if a parsing routine is passed extra - characters is cannot parse. Internally it is defined as -1264 (the + characters it cannot parse. Internally it is defined as -1264 (the Informix definition). diff --git a/doc/src/sgml/extend.sgml b/doc/src/sgml/extend.sgml index ab538cb500..b571b5f66b 100644 --- a/doc/src/sgml/extend.sgml +++ b/doc/src/sgml/extend.sgml @@ -352,6 +352,12 @@ extension.) Also notice that while a table can be a member of an extension, its subsidiary objects such as indexes are not directly considered members of the extension. + Another important point is that schemas can belong to extensions, but not + vice versa: an extension as such has an unqualified name and does not + exist within any schema. The extension's member objects, + however, will belong to schemas whenever appropriate for their object + types. It may or may not be appropriate for an extension to own the + schema(s) its member objects are within. @@ -522,6 +528,17 @@ script files are implicitly executed within a transaction block. + + An extension's SQL script files can also contain lines + beginning with \echo, which will be ignored (treated as + comments) by the extension mechanism. This provision is commonly used + to throw an error if the script file is fed to psql + rather than being loaded via CREATE EXTENSION (see example + script below). Without that, users might accidentally load the + extension's contents as loose objects rather than as an + extension, a state of affairs that's a bit tedious to recover from. + + While the script files can contain any characters allowed by the specified encoding, control files should contain only plain ASCII, because there @@ -647,6 +664,10 @@ SET LOCAL search_path TO @extschema@; and reload. + + pg_extension_config_dump + + To solve this problem, an extension's script file can mark a table it has created as a configuration table, which will cause @@ -685,6 +706,14 @@ SELECT pg_catalog.pg_extension_config_dump('my_config', 'WHERE NOT standard_entr be modified by users, can be handled by creating triggers on the configuration table to ensure that modified rows are marked correctly. + + + You can alter the filter condition associated with a configuration table + by calling pg_extension_config_dump again. (This would + typically be useful in an extension update script.) The only way to mark + a table as no longer a configuration table is to dissociate it from the + extension with ALTER EXTENSION ... DROP TABLE. + @@ -808,6 +837,9 @@ SELECT * FROM pg_extension_update_paths('extension_name'); The script file pair--1.0.sql looks like this: + + REGRESS_OPTS + + + additional switches to pass to pg_regress + + + + EXTRA_CLEAN diff --git a/doc/src/sgml/external-projects.sgml b/doc/src/sgml/external-projects.sgml index ef516b4214..324abafbc7 100644 --- a/doc/src/sgml/external-projects.sgml +++ b/doc/src/sgml/external-projects.sgml @@ -10,19 +10,6 @@ efficiently developed separately from the core project. - - To help our community with the development of their external projects, we - have created PgFoundry, a - website that provides hosting for PostgreSQL-related - projects that are maintained outside the core PostgreSQL - distribution. PgFoundry is built using the GForge software project and is - similar to SourceForge.net in its - feature set, providing mailing lists, forums, bug tracking, SCM, and web - hosting. If you have a PostgreSQL-related open source - project that you would like to have hosted at PgFoundry, please feel free - to create a new project there. - - Client Interfaces @@ -102,24 +89,17 @@ http://npgsql.projects.postgresql.org/ - - ODBCng - ODBC - An alternative ODBC driver - http://projects.commandprompt.com/public/odbcng/ - - pgtclng Tcl - http://pgfoundry.org/projects/pgtclng/ + http://sourceforge.net/projects/pgtclng/ psqlODBC ODBC - The most commonly-used ODBC driver + ODBC driver http://psqlodbc.projects.postgresql.org/ @@ -127,7 +107,7 @@ psycopgPythonDB API 2.0-compliant - http://www.initd.org/ + diff --git a/doc/src/sgml/fdwhandler.sgml b/doc/src/sgml/fdwhandler.sgml index fc07f129b7..76ff243f5d 100644 --- a/doc/src/sgml/fdwhandler.sgml +++ b/doc/src/sgml/fdwhandler.sgml @@ -17,37 +17,6 @@ to write a new foreign data wrapper. - - The FDW author needs to implement a handler function, and optionally - a validator function. Both functions must be written in a compiled - language such as C, using the version-1 interface. - For details on C language calling conventions and dynamic loading, - see . - - - - The handler function simply returns a struct of function pointers to - callback functions that will be called by the planner and executor. - Most of the effort in writing an FDW is in implementing these callback - functions. - The handler function must be registered with - PostgreSQL as taking no arguments and returning - the special pseudo-type fdw_handler. - The callback functions are plain C functions and are not visible or - callable at the SQL level. - - - - The validator function is responsible for validating options given in the - CREATE FOREIGN DATA WRAPPER, CREATE - SERVER and CREATE FOREIGN TABLE commands. - The validator function must be registered as taking two arguments, a text - array containing the options to be validated, and an OID representing the - type of object the options are associated with (in the form of the OID - of the system catalog the object would be stored in). If no validator - function is supplied, the options are not checked at object creation time. - - The foreign data wrappers included in the standard distribution are good references when trying to write your own. Look into the @@ -65,7 +34,51 @@ - + + Foreign Data Wrapper Functions + + + The FDW author needs to implement a handler function, and optionally + a validator function. Both functions must be written in a compiled + language such as C, using the version-1 interface. + For details on C language calling conventions and dynamic loading, + see . + + + + The handler function simply returns a struct of function pointers to + callback functions that will be called by the planner and executor. + Most of the effort in writing an FDW is in implementing these callback + functions. + The handler function must be registered with + PostgreSQL as taking no arguments and + returning the special pseudo-type fdw_handler. The + callback functions are plain C functions and are not visible or + callable at the SQL level. The callback functions are described in + . + + + + The validator function is responsible for validating options given in + CREATE and ALTER commands for its + foreign data wrapper, as well as foreign servers, user mappings, and + foreign tables using the wrapper. + The validator function must be registered as taking two arguments, a + text array containing the options to be validated, and an OID + representing the type of object the options are associated with (in + the form of the OID of the system catalog the object would be stored + in, either + ForeignDataWrapperRelationId, + ForeignServerRelationId, + UserMappingRelationId, + or ForeignTableRelationId). + If no validator function is supplied, options are not checked at object + creation time or object alteration time. + + + + + Foreign Data Wrapper Callback Routines @@ -139,7 +152,9 @@ BeginForeignScan (ForeignScanState *node, Begin executing a foreign scan. This is called during executor startup. - It should perform any initialization needed before the scan can start. + It should perform any initialization needed before the scan can start, + but not start executing the actual scan (that should be done upon the + first call to IterateForeignScan). The ForeignScanState node has already been created, but its fdw_state field is still NULL. Information about the table to scan is accessible through the @@ -179,6 +194,17 @@ IterateForeignScan (ForeignScanState *node); are not needed, you should insert nulls in those column positions. + + Note that PostgreSQL's executor doesn't care + whether the rows returned violate the NOT NULL + constraints which were defined on the foreign table columns - but the + planner does care, and may optimize queries incorrectly if + NULL values are present in a column declared not to contain + them. If a NULL value is encountered when the user has + declared that none should be present, it may be appropriate to raise an + error (just as you would need to do in the case of a data type mismatch). + + void diff --git a/doc/src/sgml/features.sgml b/doc/src/sgml/features.sgml index fbaeca6ed3..01d3ed91c5 100644 --- a/doc/src/sgml/features.sgml +++ b/doc/src/sgml/features.sgml @@ -22,9 +22,7 @@ PostgreSQL development aims for conformance with the latest official version of the standard where such conformance does not contradict traditional features or common - sense. The PostgreSQL project is not represented in the ISO/IEC - 9075 Working Group during the preparation of the SQL standard - releases, but even so, many of the features required by the SQL + sense. Many of the features required by the SQL standard are supported, though sometimes with slightly differing syntax or function. Further moves towards conformance can be expected over time. diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index 8f223d6891..dff45afe33 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -1482,15 +1482,15 @@ decode decode(string text, - type text) + format text) bytea - Decode binary data from string previously - encoded with encode. Parameter type is same as in encode. + Decode binary data from textual representation in string. + Options for format are same as in encode. decode('MTIzAAE=', 'base64') - 123\000\001 + \x3132330001 @@ -1499,13 +1499,14 @@ encode encode(data bytea, - type text) + format text) text - Encode binary data to different representation. Supported - types are: base64, hex, escape. - Escape merely outputs null bytes as \000 and + Encode binary data into a textual representation. Supported + formats are: base64, hex, escape. + escape converts zero bytes and high-bit-set bytes to + octal sequences (\nnn) and doubles backslashes. encode(E'123\\000\\001', 'base64') @@ -1523,7 +1524,7 @@ text Format a string. This function is similar to the C function - sprintf; but only the following conversions + sprintf; but only the following conversion specifications are recognized: %s interpolates the corresponding argument as a string; %I escapes its argument as an SQL identifier; %L escapes its argument as an @@ -1587,7 +1588,7 @@ - length(stringbytea, + length(string bytea, encoding name ) int @@ -1707,7 +1708,7 @@ quote_nullable is often more suitable. See also . - quote_literal('O\'Reilly') + quote_literal(E'O\'Reilly') 'O''Reilly' @@ -2800,7 +2801,7 @@ - ut8_to_euc_jis_2004 + utf8_to_euc_jis_2004 UTF8 EUC_JIS_2004 @@ -2812,7 +2813,7 @@ - ut8_to_shift_jis_2004 + utf8_to_shift_jis_2004 UTF8 SHIFT_JIS_2004 @@ -2859,6 +2860,14 @@ (see ). + + + The sample results shown on this page assume that the server parameter + bytea_output is set + to escape (the traditional PostgreSQL format). + + +
<acronym>SQL</acronym> Binary String Functions and Operators @@ -3012,12 +3021,12 @@ decode decode(string text, - type text) + format text) bytea - Decode binary string from string previously - encoded with encode. Parameter type is same as in encode. + Decode binary data from textual representation in string. + Options for format are same as in encode. decode(E'123\\000456', 'escape') 123\000456 @@ -3028,13 +3037,16 @@ encode - encode(string bytea, - type text) + encode(data bytea, + format text) text - Encode binary string to ASCII-only representation. Supported - types are: base64, hex, escape. + Encode binary data into a textual representation. Supported + formats are: base64, hex, escape. + escape converts zero bytes and high-bit-set bytes to + octal sequences (\nnn) and + doubles backslashes. encode(E'123\\000456'::bytea, 'escape') 123\000456 @@ -3360,8 +3372,8 @@ cast(-44 as bit(12)) 111111010100 LIKE pattern matching always covers the entire - string. Therefore, to match a sequence anywhere within a string, the - pattern must start and end with a percent sign. + string. Therefore, if it's desired to match a sequence anywhere within + a string, the pattern must start and end with a percent sign. @@ -3374,17 +3386,13 @@ cast(-44 as bit(12)) 111111010100 character itself, write two escape characters. - - Note that the backslash already has a special meaning in string literals, - so to write a pattern constant that contains a backslash you must write two - backslashes in an SQL statement (assuming escape string syntax is used, see - ). Thus, writing a pattern that - actually matches a literal backslash means writing four backslashes in the - statement. You can avoid this by selecting a different escape character - with ESCAPE; then a backslash is not special to - LIKE anymore. (But backslash is still special to the - string literal parser, so you still need two of them to match a backslash.) - + + + If you have turned off, + any backslashes you write in literal string constants will need to be + doubled. See for more information. + + It's also possible to select no escape character by writing @@ -3712,8 +3720,7 @@ substring('foobar' from 'o(.)b') o inserted, and it can contain \& to indicate that the substring matching the entire pattern should be inserted. Write \\ if you need to put a literal backslash in the replacement - text. (As always, remember to double backslashes written in literal - constant strings, assuming escape string syntax is used.) + text. The flags parameter is an optional text string containing zero or more single-letter flags that change the function's behavior. Flag i specifies case-insensitive @@ -4023,16 +4030,14 @@ SELECT foo FROM regexp_split_to_table('the quick brown fox', E'\\s*') AS foo;
- An RE cannot end with \. + An RE cannot end with a backslash (\). - Remember that the backslash (\) already has a special - meaning in PostgreSQL string literals. - To write a pattern constant that contains a backslash, - you must write two backslashes in the statement, assuming escape - string syntax is used (see ). + If you have turned off, + any backslashes you write in literal string constants will need to be + doubled. See for more information. @@ -5533,10 +5538,8 @@ SELECT SUBSTRING('XY1234Z', 'Y*?([0-9]{1,3})'); If you want to have a double quote in the output you must - precede it with a backslash, for example E'\\"YYYY - Month\\"'. - (Two backslashes are necessary because the backslash - has special meaning when using the escape string syntax.) + precede it with a backslash, for example '\"YYYY + Month\"'. @@ -6890,7 +6893,9 @@ SELECT EXTRACT(SECOND FROM TIME '17:12:28.5'); The time zone offset from UTC, measured in seconds. Positive values correspond to time zones east of UTC, negative values to - zones west of UTC. + zones west of UTC. (Technically, + PostgreSQL uses UT1 because + leap seconds are not handled.) @@ -6918,16 +6923,19 @@ SELECT EXTRACT(SECOND FROM TIME '17:12:28.5'); The number of the week of the year that the day is in. By definition - (ISO 8601), the first week of a year - contains January 4 of that year. (The ISO-8601 - week starts on Monday.) In other words, the first Thursday of - a year is in week 1 of that year. + (ISO 8601), 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. - Because of this, it is possible for early January dates to be part of the - 52nd or 53rd week of the previous 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 2005. + 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 + 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 + 2005, while 2012-12-31 is part of the first week of 2013. + It's recommended to use the isoyear field together with + week to get consistent results. @@ -7853,7 +7861,7 @@ CREATE TYPE rainbow AS ENUM ('red', 'orange', 'yellow', 'green', 'blue', 'purple path(polygon) - point + path polygon to path path(polygon '((0,0),(1,1),(2,0))') @@ -9615,12 +9623,11 @@ table2-mapping - This section describes PostgreSQL's - functions for operating on sequence objects. - Sequence objects (also called sequence generators or just - sequences) are special single-row tables created with sequence + objects, also called sequence generators or just sequences. + Sequence objects are special single-row tables created with . - A sequence object is usually used to generate unique identifiers + Sequence objects are commonly used to generate unique identifiers for rows of a table. The sequence functions, listed in , provide simple, multiuser-safe methods for obtaining successive sequence values from sequence @@ -9740,6 +9747,27 @@ nextval('foo'::text) foo is looked up at execute nextval concurrently, each will safely receive a distinct sequence value. + + + If a sequence object has been created with default parameters, + successive nextval calls will return successive + values beginning with 1. Other behaviors can be obtained by using + special parameters in the command; + see its command reference page for more information. + + + + + To avoid blocking concurrent transactions that obtain numbers from the + same sequence, a nextval operation is never + rolled back; that is, once a value has been fetched it is considered + used, even if the transaction that did the + nextval later aborts. This means that aborted + transactions might leave unused holes in the sequence + of assigned values. + + + @@ -9803,31 +9831,18 @@ SELECT setval('foo', 42, false); Next nextval wi The result returned by setval is just the value of its second argument. + + + Because sequences are non-transactional, changes made by + setval are not undone if the transaction rolls + back. + + - - If a sequence object has been created with default parameters, - successive nextval calls will return successive values - beginning with 1. Other behaviors can be obtained by using - special parameters in the command; - see its command reference page for more information. - - - - - To avoid blocking concurrent transactions that obtain numbers from the - same sequence, a nextval operation is never rolled back; - that is, once a value has been fetched it is considered used, even if the - transaction that did the nextval later aborts. This means - that aborted transactions might leave unused holes in the - sequence of assigned values. setval operations are never - rolled back, either. - - -
@@ -9965,6 +9980,16 @@ SELECT a, 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. + + @@ -14766,7 +14791,7 @@ SELECT (pg_stat_file('filename')).modification; pg_advisory_xact_lock_shared(key1 int, key2 int) void - Obtain shared advisory lock for the current transaction + Obtain shared transaction level advisory lock @@ -14835,11 +14860,10 @@ SELECT (pg_stat_file('filename')).modification; pg_advisory_lock locks an application-defined resource, which can be identified either by a single 64-bit key value or two 32-bit key values (note that these two key spaces do not overlap). - The key type is specified in pg_locks.objid. If - another session already holds a lock on the same resource, the - function will wait until the resource becomes available. The lock + If another session already holds a lock on the same resource identifier, + this function will wait until the resource becomes available. The lock is exclusive. Multiple lock requests stack, so that if the same resource - is locked three times it must be also unlocked three times to be + is locked three times it must then be unlocked three times to be released for other sessions' use. @@ -14874,70 +14898,70 @@ SELECT (pg_stat_file('filename')).modification; - pg_advisory_xact_lock + pg_advisory_unlock - pg_advisory_xact_lock works the same as - pg_advisory_lock, expect the lock is automatically released - at the end of the current transaction and can not be released explicitly. + pg_advisory_unlock will release a previously-acquired + exclusive session level advisory lock. It + returns true if the lock is successfully released. + If the lock was not held, it will return false, + and in addition, an SQL warning will be reported by the server. - pg_advisory_xact_lock_shared + pg_advisory_unlock_shared - pg_advisory_xact_lock_shared works the same as - pg_advisory_lock_shared, expect the lock is automatically released - at the end of the current transaction and can not be released explicitly. + pg_advisory_unlock_shared works the same as + pg_advisory_unlock, + except it releases a shared session level advisory lock. - pg_try_advisory_xact_lock + pg_advisory_unlock_all - pg_try_advisory_xact_lock works the same as - pg_try_advisory_lock, expect the lock, if acquired, - is automatically released at the end of the current transaction and - can not be released explicitly. + pg_advisory_unlock_all will release all session level advisory + locks held by the current session. (This function is implicitly invoked + at session end, even if the client disconnects ungracefully.) - pg_try_advisory_xact_lock_shared + pg_advisory_xact_lock - pg_try_advisory_xact_lock_shared works the same as - pg_try_advisory_lock_shared, expect the lock, if acquired, - is automatically released at the end of the current transaction and - can not be released explicitly. + pg_advisory_xact_lock works the same as + pg_advisory_lock, except the lock is automatically released + at the end of the current transaction and cannot be released explicitly. - pg_advisory_unlock + pg_advisory_xact_lock_shared - pg_advisory_unlock will release a previously-acquired - exclusive session level advisory lock. It - returns true if the lock is successfully released. - If the lock was not held, it will return false, - and in addition, an SQL warning will be raised by the server. + pg_advisory_xact_lock_shared works the same as + pg_advisory_lock_shared, except the lock is automatically released + at the end of the current transaction and cannot be released explicitly. - pg_advisory_unlock_shared + pg_try_advisory_xact_lock - pg_advisory_unlock_shared works the same as - pg_advisory_unlock, - except it releases a shared session level advisory lock. + pg_try_advisory_xact_lock works the same as + pg_try_advisory_lock, except the lock, if acquired, + is automatically released at the end of the current transaction and + cannot be released explicitly. - pg_advisory_unlock_all + pg_try_advisory_xact_lock_shared - pg_advisory_unlock_all will release all session level advisory - locks held by the current session. (This function is implicitly invoked - at session end, even if the client disconnects ungracefully.) + pg_try_advisory_xact_lock_shared works the same as + pg_try_advisory_lock_shared, except the lock, if acquired, + is automatically released at the end of the current transaction and + cannot be released explicitly. diff --git a/doc/src/sgml/generate_history.pl b/doc/src/sgml/generate_history.pl deleted file mode 100644 index a6c0bd77c2..0000000000 --- a/doc/src/sgml/generate_history.pl +++ /dev/null @@ -1,58 +0,0 @@ -#! /usr/bin/perl -w - -# generate_history.pl -- flatten release notes for use as HISTORY file -# -# Usage: generate_history.pl srcdir release.sgml >output.sgml -# -# The main point of this script is to strip out references, which -# generally point into the rest of the documentation and so can't be used -# in a standalone build of the release notes. To make sure this is done -# everywhere, we have to fold in the sub-files of the release notes. -# -# doc/src/sgml/generate_history.pl - -use strict; - -my $srcdir = shift; -die "$0: missing required argument: srcdir\n" if !defined($srcdir); -my $infile = shift; -die "$0: missing required argument: inputfile\n" if !defined($infile); - -# Emit DOCTYPE header so that the output is a self-contained SGML document -print "\n"; - -process_file($infile); - -exit 0; - -sub process_file { - my $filename = shift; - - local *FILE; # need a local filehandle so we can recurse - - my $f = $srcdir . '/' . $filename; - open(FILE, $f) || die "could not read $f: $!\n"; - - while () { - # Recursively expand sub-files of the release notes - if (m/^&(release-.*);$/) { - process_file($1 . ".sgml"); - next; - } - - # Remove tags, which might span multiple lines - while (m/]*>//) { - next; - } - # incomplete tag, so slurp another line - $_ .= ; - } - - # Remove too - s|||g; - - print; - } - close(FILE); -} diff --git a/doc/src/sgml/high-availability.sgml b/doc/src/sgml/high-availability.sgml index 80665a5cb2..605749d70c 100644 --- a/doc/src/sgml/high-availability.sgml +++ b/doc/src/sgml/high-availability.sgml @@ -738,13 +738,14 @@ archive_cleanup_command = 'pg_archivecleanup /path/to/archive %r' - Streaming replication is asynchronous, so there is still a small delay - between committing a transaction in the primary and for the changes to - become visible in the standby. The delay is however much smaller than with - file-based log shipping, typically under one second assuming the standby - is powerful enough to keep up with the load. With streaming replication, - archive_timeout is not required to reduce the data loss - window. + Streaming replication is asynchronous by default + (see ), in which case there is + a small delay between committing a transaction in the primary and the + changes becoming visible in the standby. This delay is however much + smaller than with file-based log shipping, typically under one second + assuming the standby is powerful enough to keep up with the load. With + streaming replication, archive_timeout is not required to + reduce the data loss window. @@ -872,7 +873,7 @@ primary_conninfo = 'host=192.168.1.50 port=5432 user=foo password=foopass' pg_stat_replication view. Large differences between pg_current_xlog_location and sent_location field might indicate that the master server is under heavy load, while - differences between sent_location and + differences between sent_location and pg_last_xlog_receive_location on the standby might indicate network delay, or that the standby is under heavy load. @@ -1028,14 +1029,14 @@ primary_conninfo = 'host=192.168.1.50 port=5432 user=foo password=foopass' When a standby first attaches to the primary, it will not yet be properly - synchronized. This is described as CATCHUP mode. Once + synchronized. This is described as catchup mode. Once the lag between standby and primary reaches zero for the first time - we move to real-time STREAMING state. + we move to real-time streaming state. The catch-up duration may be long immediately after the standby has been created. If the standby is shut down, then the catch-up period will increase according to the length of time the standby has been down. The standby is only able to become a synchronous standby - once it has reached STREAMING state. + once it has reached streaming state. @@ -1585,7 +1586,7 @@ if (!triggered) There are also additional types of conflict that can occur with Hot Standby. These conflicts are hard conflicts in the sense that queries - might need to be cancelled and, in some cases, sessions disconnected to resolve them. + might need to be canceled and, in some cases, sessions disconnected to resolve them. The user is provided with several ways to handle these conflicts. Conflict cases include: @@ -1682,7 +1683,7 @@ if (!triggered) Once the delay specified by max_standby_archive_delay or max_standby_streaming_delay has been exceeded, conflicting - queries will be cancelled. This usually results just in a cancellation + queries will be canceled. This usually results just in a cancellation error, although in the case of replaying a DROP DATABASE the entire conflicting session will be terminated. Also, if the conflict is over a lock held by an idle transaction, the conflicting session is @@ -1690,10 +1691,10 @@ if (!triggered) - Cancelled queries may be retried immediately (after beginning a new + Canceled queries may be retried immediately (after beginning a new transaction, of course). Since query cancellation depends on the nature of the WAL records being replayed, a query that was - cancelled may well succeed if it is executed again. + canceled may well succeed if it is executed again. @@ -1751,7 +1752,7 @@ if (!triggered) Another option is to increase on the primary server, so that dead rows will not be cleaned up as quickly as they normally would be. This will allow more time for queries to - execute before they are cancelled on the standby, without having to set + execute before they are canceled on the standby, without having to set a high max_standby_streaming_delay. However it is difficult to guarantee any specific execution-time window with this approach, since vacuum_defer_cleanup_age is measured in @@ -1981,7 +1982,7 @@ LOG: database system is ready to accept read only connections DROP TABLESPACE can only succeed if the tablespace is empty. Some standby users may be actively using the tablespace via their temp_tablespaces parameter. If there are temporary files in the - tablespace, all active queries are cancelled to ensure that temporary + tablespace, all active queries are canceled to ensure that temporary files are removed, so the tablespace can be removed and WAL replay can continue. diff --git a/doc/src/sgml/indexam.sgml b/doc/src/sgml/indexam.sgml index c7e997793d..bb94258385 100644 --- a/doc/src/sgml/indexam.sgml +++ b/doc/src/sgml/indexam.sgml @@ -712,7 +712,7 @@ amrestrpos (IndexScanDesc scan); read-write conflict with the insert of any tuple into that index by a concurrent serializable transaction. If certain patterns of read-write conflicts are detected among a set of concurrent serializable - transactions, one of those transactions may be cancelled to protect data + transactions, one of those transactions may be canceled to protect data integrity. When the flag is set, it indicates that the index access method implements finer-grained predicate locking, which will tend to reduce the frequency of such transaction cancellations. diff --git a/doc/src/sgml/indices.sgml b/doc/src/sgml/indices.sgml index 2dedb153c0..fa479e6ab8 100644 --- a/doc/src/sgml/indices.sgml +++ b/doc/src/sgml/indices.sgml @@ -196,8 +196,10 @@ CREATE INDEX name ON table Hash index operations are not presently WAL-logged, so hash indexes might need to be rebuilt with REINDEX - after a database crash. They are also not replicated over streaming or - file-based replication. + after a database crash if there were unwritten changes. + Also, changes to hash indexes are not replicated over streaming or + file-based replication after the initial base backup, so they + give wrong answers to queries that subsequently use them. For these reasons, hash index use is presently discouraged. diff --git a/doc/src/sgml/information_schema.sgml b/doc/src/sgml/information_schema.sgml index 6df69db4aa..c2f33afab2 100644 --- a/doc/src/sgml/information_schema.sgml +++ b/doc/src/sgml/information_schema.sgml @@ -379,6 +379,42 @@ + + character_set_catalog + sql_identifier + Applies to a feature not available in PostgreSQL + + + + character_set_schema + sql_identifier + Applies to a feature not available in PostgreSQL + + + + character_set_name + sql_identifier + Applies to a feature not available in PostgreSQL + + + + collation_catalog + sql_identifier + Not yet implemented + + + + collation_schema + sql_identifier + Not yet implemented + + + + collation_name + sql_identifier + Not yet implemented + + numeric_precision cardinal_number @@ -1321,19 +1357,19 @@ collation_catalog sql_identifier - Applies to a feature not available in PostgreSQL + Not yet implemented collation_schema sql_identifier - Applies to a feature not available in PostgreSQL + Not yet implemented collation_name sql_identifier - Applies to a feature not available in PostgreSQL + Not yet implemented @@ -1996,19 +2032,19 @@ collation_catalog sql_identifier - Applies to a feature not available in PostgreSQL + Not yet implemented collation_schema sql_identifier - Applies to a feature not available in PostgreSQL + Not yet implemented collation_name sql_identifier - Applies to a feature not available in PostgreSQL + Not yet implemented @@ -2273,19 +2309,19 @@ ORDER BY c.ordinal_position; collation_catalog sql_identifier - Applies to a feature not available in PostgreSQL + Not yet implemented collation_schema sql_identifier - Applies to a feature not available in PostgreSQL + Not yet implemented collation_name sql_identifier - Applies to a feature not available in PostgreSQL + Not yet implemented @@ -3023,19 +3059,19 @@ ORDER BY c.ordinal_position; collation_catalog sql_identifier - Applies to a feature not available in PostgreSQL + Always null, since this information is not applied to parameter data types in PostgreSQL collation_schema sql_identifier - Applies to a feature not available in PostgreSQL + Always null, since this information is not applied to parameter data types in PostgreSQL collation_name sql_identifier - Applies to a feature not available in PostgreSQL + Always null, since this information is not applied to parameter data types in PostgreSQL @@ -3835,19 +3871,19 @@ ORDER BY c.ordinal_position; collation_catalog sql_identifier - Applies to a feature not available in PostgreSQL + Always null, since this information is not applied to return data types in PostgreSQL collation_schema sql_identifier - Applies to a feature not available in PostgreSQL + Always null, since this information is not applied to return data types in PostgreSQL collation_name sql_identifier - Applies to a feature not available in PostgreSQL + Always null, since this information is not applied to return data types in PostgreSQL @@ -4619,6 +4655,11 @@ ORDER BY c.ordinal_position; embedded SQL in C; that is all you will learn from this table. + + This table was removed from the SQL standard in SQL:2008, so there + are no entries referring to standards later than SQL:2003. + + <literal>sql_languages</literal> Columns @@ -4646,8 +4687,7 @@ ORDER BY c.ordinal_position; character_data The year the standard referenced in - sql_language_source was approved; currently - 2003 + sql_language_source was approved. diff --git a/doc/src/sgml/install-windows.sgml b/doc/src/sgml/install-windows.sgml index cb8bca9c63..f96b174fcc 100644 --- a/doc/src/sgml/install-windows.sgml +++ b/doc/src/sgml/install-windows.sgml @@ -20,7 +20,7 @@ There are several different ways of building PostgreSQL on Windows. The simplest way to build with Microsoft tools is to install a supported version of the - Microsoft Platform SDK and use use the included + Microsoft Platform SDK and use the included compiler. It is also possible to build with the full Microsoft Visual C++ 2005 or 2008. In some cases that requires the installation of the Platform SDK @@ -49,8 +49,8 @@ and . To produce native 64 bit binaries in these environments, use the tools from MinGW-w64. These tools can also be used to - cross-compile for 32 bit and 64 bit Windows - targets on other hosts, such as Linux and + cross-compile for 32 bit and 64 bit Windows + targets on other hosts, such as Linux and Darwin. Cygwin is not recommended for running a production server, and it should only be used for running on @@ -61,7 +61,7 @@ - Native builds of psql don't support command + Native builds of psql don't support command line editing. The Cygwin build does support command line editing, so it should be used where psql is needed for interactive use on Windows. @@ -170,7 +170,7 @@ $ENV{PATH}=$ENV{PATH} . ';c:\some\where\bison\bin'; ActiveState Perl is required to run the build generation scripts. MinGW or Cygwin Perl will not work. It must also be present in the PATH. Binaries can be downloaded from - (Note: version 5.8 is required, + (Note: version 5.8 or later is required, the free Standard Distribution is sufficient). diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml index 0410cff4ac..90f076036f 100644 --- a/doc/src/sgml/installation.sgml +++ b/doc/src/sgml/installation.sgml @@ -2301,7 +2301,7 @@ createlang: language installation failed: ERROR: could not load library "/opt/d - <ulink url=" http://www.redbooks.ibm.com/abstracts/sg245674.html?Open">Developing and Porting C and C++ Applications on AIX</ulink> + <ulink url="http://www.redbooks.ibm.com/abstracts/sg245674.html?Open">Developing and Porting C and C++ Applications on AIX</ulink> IBM Redbook @@ -2802,15 +2802,6 @@ MANPATH=/usr/lib/scohelp/%L/man:/usr/dt/man:/usr/man:/usr/share/man:scohelp:/usr below. - - Note that PostgreSQL is bundled with Solaris 10 (from update 2). - Official packages are also available on - . - Packages for older Solaris versions (8, 9) you can be obtained - from or - . - - Required Tools diff --git a/doc/src/sgml/keywords.sgml b/doc/src/sgml/keywords.sgml index 9c49e07153..d9f528e6fd 100644 --- a/doc/src/sgml/keywords.sgml +++ b/doc/src/sgml/keywords.sgml @@ -82,7 +82,7 @@
<acronym>SQL</acronym> Key Words - + Key Word diff --git a/doc/src/sgml/legal.sgml b/doc/src/sgml/legal.sgml index 4531686341..98d9d12bd5 100644 --- a/doc/src/sgml/legal.sgml +++ b/doc/src/sgml/legal.sgml @@ -1,7 +1,7 @@ - 1996-2011 + 1996-2014 The PostgreSQL Global Development Group @@ -9,7 +9,7 @@ Legal Notice - PostgreSQL is Copyright © 1996-2011 + PostgreSQL is Copyright © 1996-2014 by the PostgreSQL Global Development Group and is distributed under the terms of the license of the University of California below. diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml index b359000ab3..99653a9ed5 100644 --- a/doc/src/sgml/libpq.sgml +++ b/doc/src/sgml/libpq.sgml @@ -62,7 +62,7 @@ return a non-null object pointer, unless perhaps there is too little memory even to allocate the PGconn object. The PQstatus function should be called to check - whether a connection was successfully made before queries are sent + the return value for a successful connection before queries are sent via the connection object. @@ -363,7 +363,7 @@ PGconn *PQconnectdbParams(const char **keywords, const char **values, int expand client's connection to the server is considered dead. A value of zero uses the system default. This parameter is ignored for connections made via a Unix-domain socket, or if keepalives are disabled. - It is only supported on systems where the TCP_KEEPINTVL + It is only supported on systems where the TCP_KEEPCNT socket option is available; on other systems, it has no effect. @@ -420,7 +420,9 @@ PGconn *PQconnectdbParams(const char **keywords, const char **values, int expand require - only try an SSL connection + only try an SSL connection. If a root CA + file is present, verify the certificate in the same way as + if verify-ca was specified @@ -1748,8 +1750,10 @@ PGresult *PQexec(PGconn *conn, const char *command); Returns a PGresult pointer or possibly a null pointer. A non-null pointer will generally be returned except in out-of-memory conditions or serious errors such as inability to send - the command to the server. If a null pointer is returned, it should - be treated like a PGRES_FATAL_ERROR result. Use + the command to the server. The PQresultStatus function + should be called to check the return value for any errors (including + the value of a null pointer, in which case it will return + PGRES_FATAL_ERROR). Use PQerrorMessage to get more information about such errors. @@ -2389,11 +2393,11 @@ char *PQresultErrorField(const PGresult *res, int fieldcode); + PG_DIAG_SQLSTATE error codes libpq - PG_DIAG_SQLSTATE The SQLSTATE code for the error. The SQLSTATE code identifies @@ -4088,7 +4092,7 @@ int PQflush(PGconn *conn); - Cancelling Queries in Progress + Canceling Queries in Progress canceling @@ -6116,7 +6120,7 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) break; } - /* unknown event id, just return TRUE. */ + /* unknown event ID, just return TRUE. */ default: break; } @@ -6494,6 +6498,8 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough) hostname:port:database:username:password + (You can add a reminder comment to the file by copying the line above and + preceding it with #.) Each of the first four fields can be a literal value, or *, which matches anything. The password field from the first line that matches the current connection parameters will be @@ -6730,6 +6736,18 @@ ldap://ldap.acme.com/cn=dbserver,cn=hosts?pgconnectinfo?base?(objectclass=*) the connection parameters sslrootcert and sslcrl or the environment variables PGSSLROOTCERT and PGSSLCRL. + + + + 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 + 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. + + @@ -6866,7 +6884,7 @@ ldap://ldap.acme.com/cn=dbserver,cn=hosts?pgconnectinfo?base?(objectclass=*) - disabled + disable No No I don't care about security, and I don't want to pay the overhead @@ -7143,8 +7161,12 @@ int PQisthreadsafe(); - PGresult objects are read-only after creation, and so - can be passed around freely between threads. + PGresult objects are normally read-only after creation, + and so can be passed around freely between threads. However, if you use + any of the PGresult-modifying functions described in + or , it's up + to you to avoid concurrent operations on the same PGresult, + too. @@ -7553,7 +7575,7 @@ main(int argc, char **argv) while ((notify = PQnotifies(conn)) != NULL) { fprintf(stderr, - "ASYNC NOTIFY of '%s' received from backend pid %d\n", + "ASYNC NOTIFY of '%s' received from backend PID %d\n", notify->relname, notify->be_pid); PQfreemem(notify); nnotifies++; diff --git a/doc/src/sgml/lobj.sgml b/doc/src/sgml/lobj.sgml index 291409fde0..1b1a9aaa27 100644 --- a/doc/src/sgml/lobj.sgml +++ b/doc/src/sgml/lobj.sgml @@ -456,6 +456,14 @@ SELECT lo_export(image.raster, '/tmp/motd') FROM image The client-side functions do not require superuser privilege. + + The functionality of lo_read and + lo_write is also available via server-side calls, + but the names of the server-side functions differ from the client side + interfaces in that they do not contain underscores. You must call + these functions as loread and lowrite. + + diff --git a/doc/src/sgml/maintenance.sgml b/doc/src/sgml/maintenance.sgml index 03cc6c987a..ba8323c094 100644 --- a/doc/src/sgml/maintenance.sgml +++ b/doc/src/sgml/maintenance.sgml @@ -359,7 +359,7 @@ as FrozenXID. This XID does not follow the normal XID comparison rules and is always considered older than every normal XID. Normal XIDs are - compared using modulo-231 arithmetic. This means + compared using modulo-232 arithmetic. This means that for every normal XID, there are two billion XIDs that are older and two billion that are newer; another way to say it is that the normal XID space is circular with no @@ -450,8 +450,8 @@ will take more space, because it must store the commit status of all transactions back to the autovacuum_freeze_max_age horizon. The commit status uses two bits per transaction, so if - autovacuum_freeze_max_age is set to its maximum allowed value of - a little less than two billion, pg_clog can be expected to + autovacuum_freeze_max_age is set to its maximum allowed + value of two billion, pg_clog can be expected to grow to about half a gigabyte. If this is trivial compared to your total database size, setting autovacuum_freeze_max_age to its maximum allowed value is recommended. Otherwise, set it depending @@ -492,7 +492,12 @@ examine this information is to execute queries such as: -SELECT relname, age(relfrozenxid) FROM pg_class WHERE relkind = 'r'; +SELECT c.oid::regclass as table_name, + greatest(age(c.relfrozenxid),age(t.relfrozenxid)) as age +FROM pg_class c +LEFT JOIN pg_class t ON c.reltoastrelid = t.oid +WHERE c.relkind = 'r'; + SELECT datname, age(datfrozenxid) FROM pg_database; diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml index 553c16873f..fb934cbe9c 100644 --- a/doc/src/sgml/monitoring.sgml +++ b/doc/src/sgml/monitoring.sgml @@ -282,7 +282,7 @@ postgres: user database host @@ -290,7 +290,7 @@ postgres: user database host pg_stat_database_conflictspg_stat_database_conflicts One row per database, showing database OID, database name and - the number of queries that have been cancelled in this database due to + the number of queries that have been canceled in this database due to dropped tablespaces, lock timeouts, old snapshots, pinned buffers and deadlocks. Will only contain information on standby servers, since conflicts do not occur on master servers. @@ -639,7 +639,7 @@ postgres: user database host pg_stat_get_db_conflict_tablespace(oid) bigint - Number of queries cancelled because of recovery conflict with dropped tablespaces in database + Number of queries canceled because of recovery conflict with dropped tablespaces in database @@ -647,7 +647,7 @@ postgres: user database host pg_stat_get_db_conflict_lock(oid) bigint - Number of queries cancelled because of recovery conflict with locks in database + Number of queries canceled because of recovery conflict with locks in database @@ -655,7 +655,7 @@ postgres: user database host pg_stat_get_db_conflict_snapshot(oid) bigint - Number of queries cancelled because of recovery conflict with old snapshots in database + Number of queries canceled because of recovery conflict with old snapshots in database @@ -663,7 +663,7 @@ postgres: user database host pg_stat_get_db_conflict_bufferpin(oid) bigint - Number of queries cancelled because of recovery conflict with pinned buffers in database + Number of queries canceled because of recovery conflict with pinned buffers in database @@ -671,7 +671,7 @@ postgres: user database host pg_stat_get_db_conflict_startup_deadlock(oid) bigint - Number of queries cancelled because of recovery conflict with deadlocks in database + Number of queries canceled because of recovery conflict with deadlocks in database @@ -1179,6 +1179,15 @@ postgres: user database host + + pg_stat_get_wal_senders() + setof record + + One record for each active wal sender. The fields returned are a subset + of those in the pg_stat_replication view. + + + pg_stat_clear_snapshot() void diff --git a/doc/src/sgml/mvcc.sgml b/doc/src/sgml/mvcc.sgml index e688176acb..37237f037f 100644 --- a/doc/src/sgml/mvcc.sgml +++ b/doc/src/sgml/mvcc.sgml @@ -101,7 +101,7 @@ - The phenomena which are prohibited are various levels are: + The phenomena which are prohibited at various levels are: @@ -155,7 +155,7 @@
- <acronym>SQL</acronym> Transaction Isolation Levels + Standard <acronym>SQL</acronym> Transaction Isolation Levels @@ -547,7 +547,7 @@ SELECT SUM(value) FROM mytab WHERE class = 2; If either transaction were running at the Repeatable Read isolation level, both would be allowed to commit; but since there is no serial order of execution consistent with the result, using Serializable transactions will allow one - transaction to commit and and will roll the other back with this message: + transaction to commit and will roll the other back with this message: ERROR: could not serialize access due to read/write dependencies among transactions @@ -658,6 +658,26 @@ ERROR: could not serialize access due to read/write dependencies among transact protections automatically provided by Serializable transactions. + + + When the system is forced to combine multiple page-level predicate + locks into a single relation-level predicate lock because the predicate + lock table is short of memory, an increase in the rate of serialization + failures may occur. You can avoid this by increasing + . + + + + + A sequential scan will always necessitate a relation-level predicate + lock. This can result in an increased rate of serialization failures. + It may be helpful to encourage the use of index scans by reducing + and/or increasing + . Be sure to weigh any decrease + in transaction rollbacks and restarts against any overall change in + query execution time. + + @@ -858,9 +878,8 @@ ERROR: could not serialize access due to read/write dependencies among transact - Acquired by CREATE TRIGGER, - CREATE RULE (except for ON SELECT - rules) and some forms of ALTER TABLE. + This lock mode is not automatically acquired by any + PostgreSQL command. @@ -905,10 +924,10 @@ ERROR: could not serialize access due to read/write dependencies among transact - Acquired by the DROP TABLE, + Acquired by the ALTER TABLE, DROP TABLE, TRUNCATE, REINDEX, CLUSTER, and VACUUM FULL - commands, and some forms of ALTER TABLE. + commands. This is also the default lock mode for LOCK TABLE statements that do not specify a mode explicitly. @@ -1188,6 +1207,10 @@ UPDATE accounts SET balance = balance - 100.00 WHERE acctnum = 22222; Advisory Locks + + advisory lock + + lock advisory @@ -1199,35 +1222,51 @@ UPDATE accounts SET balance = balance - 100.00 WHERE acctnum = 22222; called advisory locks, because the system does not enforce their use — it is up to the application to use them correctly. Advisory locks can be useful for locking strategies - that are an awkward fit for the MVCC model. + 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 + 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 + cleaned up by the server at the end of the session. + - There are two different types of advisory locks in - PostgreSQL: session level and transaction level. - Once acquired, a session level advisory lock is held until explicitly - released or the session ends. Unlike standard locks, session level - advisory locks do not honor transaction semantics: a lock acquired during - a transaction that is later rolled back will still be held following the - rollback, and likewise an unlock is effective even if the calling - transaction fails later. The same session level lock can be acquired - multiple times by its owning process: for each lock request there must be - a corresponding unlock request before the lock is actually released. (If a - session already holds a given lock, additional requests will always succeed, - even if other sessions are awaiting the lock.) Transaction level locks on - the other hand behave more like regular locks; they are automatically - released at the end of the transaction, and can not be explicitly unlocked. - Session and transaction level locks share the same lock space, which means - that a transaction level lock will prevent another session from obtaining - a session level lock on that same resource and vice versa. - Like all locks in PostgreSQL, a complete list of - advisory locks currently held by any session can be found in the - pg_locks - system view. + There are two ways to acquire an advisory lock in + PostgreSQL: at session level or at + transaction level. + Once acquired at session level, an advisory lock is held until + explicitly released or the session ends. Unlike standard lock requests, + session-level advisory lock requests do not honor transaction semantics: + a lock acquired during a transaction that is later rolled back will still + be held following the rollback, and likewise an unlock is effective even + if the calling transaction fails later. A lock can be acquired multiple + times by its owning process; for each completed lock request there must + be a corresponding unlock request before the lock is actually released. + Transaction-level lock requests, on the other hand, behave more like + regular lock requests: they are automatically released at the end of the + transaction, and there is no explicit unlock operation. This behavior + is often more convenient than the session-level behavior for short-term + usage of an advisory lock. + Session-level and transaction-level lock requests for the same advisory + lock identifier will block each other in the expected way. + If a session already holds a given advisory lock, additional requests by + it will always succeed, even if other sessions are awaiting the lock; this + statement is true regardless of whether the existing lock hold and new + request are at session level or transaction level. - Advisory locks are allocated out of a shared memory pool whose size - is defined by the configuration variables + Like all locks in + PostgreSQL, a complete list of advisory locks + currently held by any session can be found in the pg_locks system + view. + + + + Both advisory locks and regular locks are stored in a shared memory + pool whose size is defined by the configuration variables and . Care must be taken not to exhaust this @@ -1238,13 +1277,7 @@ UPDATE accounts SET balance = balance - 100.00 WHERE acctnum = 22222; - A common use of advisory locks is to emulate pessimistic 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 MVCC bloat, and can be automatically - cleaned up by the server at the end of the session. - In certain cases using this advisory locking method, especially in queries + In certain cases using advisory locking methods, especially in queries involving explicit ordering and LIMIT clauses, care must be taken to control the locks acquired because of the order in which SQL expressions are evaluated. For example: diff --git a/doc/src/sgml/nls.sgml b/doc/src/sgml/nls.sgml index 778bb4b044..5bac66e9d2 100644 --- a/doc/src/sgml/nls.sgml +++ b/doc/src/sgml/nls.sgml @@ -160,7 +160,7 @@ msgstr "another translated" can also be named language_region.po where region is the - + ISO 3166-1 two-letter country code (in upper case), e.g., pt_BR.po for Portuguese in Brazil. If you diff --git a/doc/src/sgml/pgtrgm.sgml b/doc/src/sgml/pgtrgm.sgml index 18f0f3eba0..30e535557c 100644 --- a/doc/src/sgml/pgtrgm.sgml +++ b/doc/src/sgml/pgtrgm.sgml @@ -9,7 +9,8 @@ The pg_trgm module provides functions and operators - for determining the similarity of text based on trigram matching, as + for determining the similarity of ASCII + alphanumeric text based on trigram matching, as well as index operator classes that support fast searching for similar strings. diff --git a/doc/src/sgml/pgupgrade.sgml b/doc/src/sgml/pgupgrade.sgml index 8bd5f74178..6012523dbc 100644 --- a/doc/src/sgml/pgupgrade.sgml +++ b/doc/src/sgml/pgupgrade.sgml @@ -105,7 +105,7 @@ - link instead of copying files to new cluster + use hard links instead of copying files to the new cluster @@ -253,10 +253,10 @@ gmake prefix=/usr/local/pgsql.new install pg_upgrade will connect to the old and new servers several times, - so you might want to set authentication to trust in - pg_hba.conf, or if using md5 authentication, - use a ~/.pgpass file (see ) - to avoid being prompted repeatedly for a password. + so you might want to set authentication to trust + or peer in pg_hba.conf, or if using + md5 authentication, use a ~/.pgpass file + (see ). @@ -292,12 +292,18 @@ NET STOP pgsql-8.3 (PostgreSQL 8.3 and older used a different s Always run the pg_upgrade binary of the new server, not the old one. pg_upgrade requires the specification of the old and new cluster's - data and executable (bin) directories. You can also specify separate + data and executable (bin) directories. You can also specify user and port values, and whether you want the data linked instead of - copied (the default). If you use linking, the upgrade will be much - faster (no data copying), but you will no longer be able to access your - old cluster once you start the new cluster after the upgrade. See - pg_upgrade --help for a full list of options. + copied (the default). + + + + If you use link mode, the upgrade will be much faster (no file + copying), but you will not be able to access your old cluster + once you start the new cluster after the upgrade. Link mode also + requires that the old and new cluster data directories be in the + same file system. See pg_upgrade --help for a full + list of options. @@ -329,6 +335,9 @@ pg_upgrade.exe Obviously, no one should be accessing the clusters during the upgrade. + Consider using a non-default port number, e.g. 50432, for old + and new clusters to avoid unintended client connections during + the upgrade. @@ -476,6 +485,11 @@ psql --username postgres --file script.sql postgres You must drop any such columns and upgrade them manually. + + pg_upgrade will not work if the ltree + contrib module is installed in a database. + + pg_upgrade will require a table rebuild if: @@ -527,7 +541,7 @@ psql --username postgres --file script.sql postgres pg_upgrade does not support upgrading of databases containing these reg* OID-referencing system data types: regproc, regprocedure, regoper, - regoperator, regclass, regconfig, and + regoperator, regconfig, and regdictionary. (regtype can be upgraded.) diff --git a/doc/src/sgml/plhandler.sgml b/doc/src/sgml/plhandler.sgml index 20021bce65..e294363353 100644 --- a/doc/src/sgml/plhandler.sgml +++ b/doc/src/sgml/plhandler.sgml @@ -179,7 +179,10 @@ CREATE LANGUAGE plsample or updated a function written in the procedural language. The passed-in OID is the OID of the function's pg_proc row. The validator must fetch this row in the usual way, and do - whatever checking is appropriate. Typical checks include verifying + whatever checking is appropriate. + First, call CheckFunctionValidatorAccess() to diagnose + explicit calls to the validator that the user could not achieve through + CREATE FUNCTION. Typical checks then include verifying that the function's argument and result types are supported by the language, and that the function's body is syntactically correct in the language. If the validator finds the function to be okay, @@ -192,15 +195,24 @@ CREATE LANGUAGE plsample Validator functions should typically honor the parameter: if it is turned off then - any expensive or context-sensitive checking should be skipped. - In particular, this parameter is turned off by pg_dump - so that it can load procedural language functions without worrying - about possible dependencies of the function bodies on other database - objects. (Because of this requirement, the call handler should avoid + any expensive or context-sensitive checking should be skipped. If the + language provides for code execution at compilation time, the validator + must suppress checks that would induce such execution. In particular, + this parameter is turned off by pg_dump so that it can + load procedural language functions without worrying about side effects or + dependencies of the function bodies on other database objects. + (Because of this requirement, the call handler should avoid assuming that the validator has fully checked the function. The point of having a validator is not to let the call handler omit checks, but to notify the user immediately if there are obvious errors in a CREATE FUNCTION command.) + While the choice of exactly what to check is mostly left to the + discretion of the validator function, note that the core + CREATE FUNCTION code only executes SET clauses + attached to a function when check_function_bodies is on. + Therefore, checks whose results might be affected by GUC parameters + definitely should be skipped when check_function_bodies is + off, to avoid false failures when reloading a dump. diff --git a/doc/src/sgml/plpgsql.sgml b/doc/src/sgml/plpgsql.sgml index eea6ec58e3..0a9d71ef41 100644 --- a/doc/src/sgml/plpgsql.sgml +++ b/doc/src/sgml/plpgsql.sgml @@ -940,6 +940,9 @@ PERFORM query; result. Write the query the same way you would write an SQL SELECT command, but replace the initial keyword SELECT with PERFORM. + For WITH queries, use PERFORM and then + place the query in parentheses. (In this case, the query can only + return one row.) PL/pgSQL variables will be substituted into the query just as for commands that return no result, and the plan is cached in the same way. Also, the special variable @@ -3174,7 +3177,7 @@ RAISE NOTICE 'Calling cs_create_job(%)', v_job_id; and hint: RAISE EXCEPTION 'Nonexistent ID --> %', user_id - USING HINT = 'Please check your user id'; + USING HINT = 'Please check your user ID'; diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml index d3de330916..e743880930 100644 --- a/doc/src/sgml/protocol.sgml +++ b/doc/src/sgml/protocol.sgml @@ -1142,7 +1142,7 @@ - Cancelling Requests in Progress + Canceling Requests in Progress During the processing of a query, the frontend might request @@ -1726,9 +1726,11 @@ The commands accepted in walsender mode are: After the second regular result set, one or more CopyResponse results will be sent, one for PGDATA and one for each additional tablespace other than pg_default and pg_global. The data in - the CopyResponse results will be a tar format (using ustar00 - extensions) dump of the tablespace contents. After the tar data is - complete, a final ordinary result set will be sent. + the CopyResponse results will be a tar format (following the + ustar interchange format specified in the POSIX 1003.1-2008 + standard) dump of the tablespace contents, except that the two trailing + blocks of zeroes specified in the standard are omitted. + After the tar data is complete, a final ordinary result set will be sent. @@ -1742,6 +1744,11 @@ The commands accepted in walsender mode are: postmaster.pid + + + postmaster.opts + + pg_xlog, including subdirectories. If the backup is run diff --git a/doc/src/sgml/queries.sgml b/doc/src/sgml/queries.sgml index b3cf39a39b..e0a6a22c4e 100644 --- a/doc/src/sgml/queries.sgml +++ b/doc/src/sgml/queries.sgml @@ -140,6 +140,16 @@ FROM table_reference , table_r — any columns added in subtables are ignored. + + Instead of writing ONLY before the table name, you can write + * after the table name to explicitly specify that descendant + tables are included. Writing * is not necessary since that + behavior is the default (unless you have changed the setting of the configuration option). However writing + * might be useful to emphasize that additional tables will be + searched. + + Joined Tables @@ -266,7 +276,9 @@ FROM table_reference , table_r 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. + only once in the output table. If there are no common + columns, NATURAL behaves like + CROSS JOIN. diff --git a/doc/src/sgml/recovery-config.sgml b/doc/src/sgml/recovery-config.sgml index de6090520d..86470242ea 100644 --- a/doc/src/sgml/recovery-config.sgml +++ b/doc/src/sgml/recovery-config.sgml @@ -11,7 +11,8 @@ This chapter describes the settings available in the - recovery.conf file. They apply only for the duration of the + recovery.confrecovery.conf + file. They apply only for the duration of the recovery. They must be reset for any subsequent recovery you wish to perform. They cannot be changed once recovery has begun. @@ -325,7 +326,7 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows of the primary server, as well as the port number if it is not the same as the standby server's default. Also specify a user name corresponding to a role that has the - SUPERUSER and LOGIN privileges on the + REPLICATION and LOGIN privileges on the primary (see ). A password needs to be provided too, if the primary demands password diff --git a/doc/src/sgml/ref/abort.sgml b/doc/src/sgml/ref/abort.sgml index 2bfc724be5..246e8f8126 100644 --- a/doc/src/sgml/ref/abort.sgml +++ b/doc/src/sgml/ref/abort.sgml @@ -75,8 +75,7 @@ ABORT [ WORK | TRANSACTION ] To abort all changes: ABORT; - - + diff --git a/doc/src/sgml/ref/alter_aggregate.sgml b/doc/src/sgml/ref/alter_aggregate.sgml index 618c432a79..26c5dc0175 100644 --- a/doc/src/sgml/ref/alter_aggregate.sgml +++ b/doc/src/sgml/ref/alter_aggregate.sgml @@ -125,8 +125,7 @@ ALTER AGGREGATE myavg(integer) OWNER TO joe; integer into schema myschema: ALTER AGGREGATE myavg(integer) SET SCHEMA myschema; - - + diff --git a/doc/src/sgml/ref/alter_collation.sgml b/doc/src/sgml/ref/alter_collation.sgml index 3aef656a0e..ebb30b8860 100644 --- a/doc/src/sgml/ref/alter_collation.sgml +++ b/doc/src/sgml/ref/alter_collation.sgml @@ -104,8 +104,7 @@ ALTER COLLATION "de_DE" RENAME TO german; joe: ALTER COLLATION "en_US" OWNER TO joe; - - + diff --git a/doc/src/sgml/ref/alter_conversion.sgml b/doc/src/sgml/ref/alter_conversion.sgml index 4f2269b849..4cc335b18e 100644 --- a/doc/src/sgml/ref/alter_conversion.sgml +++ b/doc/src/sgml/ref/alter_conversion.sgml @@ -104,8 +104,7 @@ ALTER CONVERSION iso_8859_1_to_utf8 RENAME TO latin1_to_unicode; joe: ALTER CONVERSION iso_8859_1_to_utf8 OWNER TO joe; - - + diff --git a/doc/src/sgml/ref/alter_database.sgml b/doc/src/sgml/ref/alter_database.sgml index 5a975adf5c..360732fd35 100644 --- a/doc/src/sgml/ref/alter_database.sgml +++ b/doc/src/sgml/ref/alter_database.sgml @@ -190,8 +190,7 @@ ALTER DATABASE name RESET ALL ALTER DATABASE test SET enable_indexscan TO off; - - + diff --git a/doc/src/sgml/ref/alter_default_privileges.sgml b/doc/src/sgml/ref/alter_default_privileges.sgml index cc4f3636a2..f67cfc7116 100644 --- a/doc/src/sgml/ref/alter_default_privileges.sgml +++ b/doc/src/sgml/ref/alter_default_privileges.sgml @@ -111,8 +111,8 @@ REVOKE [ GRANT OPTION FOR ] schema_name - The name of an existing schema. Each target_role - must have CREATE privileges for each specified schema. + The name of an existing schema. If specified, the default privileges + are altered for objects later created in that schema. If IN SCHEMA is omitted, the global default privileges are altered. @@ -187,8 +187,7 @@ ALTER DEFAULT PRIVILEGES IN SCHEMA myschema REVOKE INSERT ON TABLES FROM webuser ALTER DEFAULT PRIVILEGES FOR ROLE admin REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC; - - + diff --git a/doc/src/sgml/ref/alter_domain.sgml b/doc/src/sgml/ref/alter_domain.sgml index 2a5a935edc..90c8d5165e 100644 --- a/doc/src/sgml/ref/alter_domain.sgml +++ b/doc/src/sgml/ref/alter_domain.sgml @@ -241,8 +241,7 @@ ALTER DOMAIN zipcode DROP CONSTRAINT zipchk; To move the domain into a different schema: ALTER DOMAIN zipcode SET SCHEMA customers; - - + diff --git a/doc/src/sgml/ref/alter_extension.sgml b/doc/src/sgml/ref/alter_extension.sgml index e8c9608666..cbe5043fef 100644 --- a/doc/src/sgml/ref/alter_extension.sgml +++ b/doc/src/sgml/ref/alter_extension.sgml @@ -241,6 +241,18 @@ ALTER EXTENSION extension_name DROP + + left_type + right_type + + + The data type(s) of the operator's arguments (optionally + schema-qualified). Write NONE for the missing argument + of a prefix or postfix operator. + + + + PROCEDURAL @@ -276,7 +288,15 @@ ALTER EXTENSION hstore SET SCHEMA utils; To add an existing function to the hstore extension: ALTER EXTENSION hstore ADD FUNCTION populate_record(anyelement, hstore); - + + + + + Compatibility + + + ALTER EXTENSION is a PostgreSQL + extension. diff --git a/doc/src/sgml/ref/alter_foreign_data_wrapper.sgml b/doc/src/sgml/ref/alter_foreign_data_wrapper.sgml index af56ed7561..59cf9c65e7 100644 --- a/doc/src/sgml/ref/alter_foreign_data_wrapper.sgml +++ b/doc/src/sgml/ref/alter_foreign_data_wrapper.sgml @@ -141,8 +141,7 @@ ALTER FOREIGN DATA WRAPPER dbi OPTIONS (ADD foo '1', DROP 'bar'); to bob.myvalidator: ALTER FOREIGN DATA WRAPPER dbi VALIDATOR bob.myvalidator; - - + diff --git a/doc/src/sgml/ref/alter_foreign_table.sgml b/doc/src/sgml/ref/alter_foreign_table.sgml index c2ebdac847..c52fc71736 100644 --- a/doc/src/sgml/ref/alter_foreign_table.sgml +++ b/doc/src/sgml/ref/alter_foreign_table.sgml @@ -32,7 +32,7 @@ ALTER FOREIGN TABLE name where action is one of: - ADD [ COLUMN ] column type + ADD [ COLUMN ] column type [ NULL | NOT NULL ] DROP [ COLUMN ] [ IF EXISTS ] column [ RESTRICT | CASCADE ] ALTER [ COLUMN ] column [ SET DATA ] TYPE type ALTER [ COLUMN ] column { SET | DROP } NOT NULL @@ -125,7 +125,7 @@ ALTER FOREIGN TABLE name OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] ) - Change options for the foreign table or the column of the foreign table. + Change options for the foreign table. ADD, SET, and DROP specify the action to be performed. ADD is assumed if no operation is explicitly specified. Option names must be @@ -150,8 +150,6 @@ ALTER FOREIGN TABLE name You must own the table to use ALTER FOREIGN TABLE. To change the schema of a foreign table, you must also have CREATE privilege on the new schema. - 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 owning role, and that role must have CREATE privilege on the table's schema. (These restrictions enforce that altering the owner @@ -260,12 +258,11 @@ ALTER FOREIGN TABLE name - Consistency with the foreign server is not checked when a column is - added or removed with ADD COLUMN or - DROP COLUMN, a system oid column is added - or removed, a CHECK or NOT NULL constraint is - added, or column type is changed with SET DATA TYPE. It is the - user's responsibility to ensure that the table definition matches the + Consistency with the foreign server is not checked when a column is added + or removed with ADD COLUMN or + DROP COLUMN, a NOT NULL constraint is + added, or a column type is changed with SET DATA TYPE. It is + the user's responsibility to ensure that the table definition matches the remote side. @@ -289,8 +286,7 @@ ALTER FOREIGN TABLE distributors ALTER COLUMN street SET NOT NULL; To change options of a foreign table: ALTER FOREIGN TABLE myschema.distributors OPTIONS (ADD opt1 'value', SET opt2, 'value2', DROP opt3 'value3'); - - + diff --git a/doc/src/sgml/ref/alter_function.sgml b/doc/src/sgml/ref/alter_function.sgml index 22233af4aa..acb3e4fb93 100644 --- a/doc/src/sgml/ref/alter_function.sgml +++ b/doc/src/sgml/ref/alter_function.sgml @@ -153,8 +153,7 @@ ALTER FUNCTION name ( [ [ name SET SCHEMA serial, at 105: ALTER SEQUENCE serial RESTART WITH 105; - - + diff --git a/doc/src/sgml/ref/alter_server.sgml b/doc/src/sgml/ref/alter_server.sgml index ab4731a434..c27b4c06a1 100644 --- a/doc/src/sgml/ref/alter_server.sgml +++ b/doc/src/sgml/ref/alter_server.sgml @@ -100,8 +100,7 @@ ALTER SERVER foo OPTIONS (host 'foo', dbname 'foodb'); change host option: ALTER SERVER foo VERSION '8.4' OPTIONS (SET host 'baz'); - - + diff --git a/doc/src/sgml/ref/alter_table.sgml b/doc/src/sgml/ref/alter_table.sgml index 4e02438483..4e082eaa63 100644 --- a/doc/src/sgml/ref/alter_table.sgml +++ b/doc/src/sgml/ref/alter_table.sgml @@ -42,9 +42,8 @@ ALTER TABLE name ALTER [ COLUMN ] column SET ( attribute_option = value [, ... ] ) ALTER [ COLUMN ] column RESET ( attribute_option [, ... ] ) ALTER [ COLUMN ] column SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN } - ADD table_constraint - ADD table_constraint_using_index ADD table_constraint [ NOT VALID ] + ADD table_constraint_using_index VALIDATE CONSTRAINT constraint_name DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ] DISABLE TRIGGER [ trigger_name | ALL | USER ] @@ -235,27 +234,21 @@ ALTER TABLE name - ADD table_constraint - [ NOT VALID ] + ADD table_constraint [ NOT VALID ] This form adds a new constraint to a table using the same syntax as - . Newly added foreign key constraints can - also be defined as NOT VALID to avoid the - potentially lengthy initial check that must otherwise be performed. - Constraint checks are skipped at create table time, so - does not contain this option. - - - - - - VALIDATE CONSTRAINT - - - This form validates a foreign key constraint that was previously created - as NOT VALID. Constraints already marked valid do not - cause an error response. + , plus the option NOT + VALID, which is currently only allowed for foreign key + constraints. + If the constraint is marked NOT VALID, the + potentially-lengthy initial check to verify that all rows in the table + satisfy the constraint is skipped. The constraint will still be + enforced against subsequent inserts or updates (that is, they'll fail + unless there is a matching row in the referenced table). But the + database will not assume that the constraint holds for all rows in + the table, until it is validated by using the VALIDATE + CONSTRAINT option. @@ -311,6 +304,25 @@ ALTER TABLE name + + VALIDATE CONSTRAINT + + + This form validates a foreign key constraint that was previously created + as NOT VALID, by scanning the table to ensure there + are no unmatched rows. Nothing happens if the constraint is + already marked valid. + + + Validation can be a long process on larger tables and currently requires + an ACCESS EXCLUSIVE lock. The value of separating + validation from initial creation is that you can defer validation to less + busy times, or can be used to give additional time to correct pre-existing + errors while preventing new errors. + + + + DROP CONSTRAINT [ IF EXISTS ] @@ -596,10 +608,12 @@ ALTER TABLE name name - The name (possibly schema-qualified) of an existing table to - alter. If ONLY is specified, only that table is - altered. If ONLY is not specified, the table and any - descendant tables are altered. + The name (optionally schema-qualified) of an existing table to + alter. If ONLY is specified before the table name, only + that table is altered. If ONLY is not specified, the table + and all its descendant tables (if any) are altered. Optionally, + * can be specified after the table name to explicitly + indicate that descendant tables are included. @@ -981,7 +995,7 @@ ALTER TABLE distributors DROP CONSTRAINT zipchk; - To remove a check constraint from a table only: + To remove a check constraint from one table only: ALTER TABLE ONLY distributors DROP CONSTRAINT zipchk; @@ -1031,8 +1045,7 @@ ALTER TABLE myschema.distributors SET SCHEMA yourschema; CREATE UNIQUE INDEX CONCURRENTLY dist_id_temp_idx ON distributors (dist_id); ALTER TABLE distributors DROP CONSTRAINT distributors_pkey, ADD CONSTRAINT distributors_pkey PRIMARY KEY USING INDEX dist_id_temp_idx; - - + diff --git a/doc/src/sgml/ref/alter_tablespace.sgml b/doc/src/sgml/ref/alter_tablespace.sgml index 0cfc26437d..ed04d8437f 100644 --- a/doc/src/sgml/ref/alter_tablespace.sgml +++ b/doc/src/sgml/ref/alter_tablespace.sgml @@ -111,8 +111,7 @@ ALTER TABLESPACE index_space RENAME TO fast_raid; Change the owner of tablespace index_space: ALTER TABLESPACE index_space OWNER TO mary; - - + diff --git a/doc/src/sgml/ref/alter_trigger.sgml b/doc/src/sgml/ref/alter_trigger.sgml index 2f943ee9c2..90c2e3d141 100644 --- a/doc/src/sgml/ref/alter_trigger.sgml +++ b/doc/src/sgml/ref/alter_trigger.sgml @@ -92,8 +92,7 @@ ALTER TRIGGER name ON ALTER TRIGGER emp_stamp ON emp RENAME TO emp_track_chgs; - - + diff --git a/doc/src/sgml/ref/alter_type.sgml b/doc/src/sgml/ref/alter_type.sgml index a417c0d01b..5ba3fd3bb5 100644 --- a/doc/src/sgml/ref/alter_type.sgml +++ b/doc/src/sgml/ref/alter_type.sgml @@ -25,8 +25,8 @@ PostgreSQL documentation ALTER TYPE name action [, ... ] ALTER TYPE name OWNER TO new_owner -ALTER TYPE name RENAME ATTRIBUTE attribute_name TO new_attribute_name -ALTER TYPE name RENAME TO new_name [ CASCADE | RESTRICT ] +ALTER TYPE name RENAME ATTRIBUTE attribute_name TO new_attribute_name [ CASCADE | RESTRICT ] +ALTER TYPE name RENAME TO new_name ALTER TYPE name SET SCHEMA new_schema ALTER TYPE name ADD VALUE new_enum_value [ { BEFORE | AFTER } existing_enum_value ] @@ -313,8 +313,7 @@ ALTER TYPE compfoo ADD ATTRIBUTE f3 int; To add a new value to an enum type in a particular sort position: ALTER TYPE colors ADD VALUE 'orange' AFTER 'red'; - - + diff --git a/doc/src/sgml/ref/alter_user_mapping.sgml b/doc/src/sgml/ref/alter_user_mapping.sgml index d18fe36199..3245f83e08 100644 --- a/doc/src/sgml/ref/alter_user_mapping.sgml +++ b/doc/src/sgml/ref/alter_user_mapping.sgml @@ -92,8 +92,7 @@ ALTER USER MAPPING FOR { user_name Change the password for user mapping bob, server foo: ALTER USER MAPPING FOR bob SERVER foo OPTIONS (user 'bob', password 'public'); - - + diff --git a/doc/src/sgml/ref/alter_view.sgml b/doc/src/sgml/ref/alter_view.sgml index 0d509319a3..c3839057c0 100644 --- a/doc/src/sgml/ref/alter_view.sgml +++ b/doc/src/sgml/ref/alter_view.sgml @@ -123,8 +123,7 @@ ALTER VIEW name SET SCHEMA bar: ALTER VIEW foo RENAME TO bar; - - + diff --git a/doc/src/sgml/ref/begin.sgml b/doc/src/sgml/ref/begin.sgml index 4c6a2b4a2c..acd823206a 100644 --- a/doc/src/sgml/ref/begin.sgml +++ b/doc/src/sgml/ref/begin.sgml @@ -122,8 +122,7 @@ BEGIN [ WORK | TRANSACTION ] [ transaction_mode BEGIN; - - + diff --git a/doc/src/sgml/ref/close.sgml b/doc/src/sgml/ref/close.sgml index 25e3c817eb..4af6af7492 100644 --- a/doc/src/sgml/ref/close.sgml +++ b/doc/src/sgml/ref/close.sgml @@ -107,8 +107,7 @@ CLOSE { name | ALL } Close the cursor liahona: CLOSE liahona; - - + diff --git a/doc/src/sgml/ref/cluster.sgml b/doc/src/sgml/ref/cluster.sgml index addf652065..339990fa4d 100644 --- a/doc/src/sgml/ref/cluster.sgml +++ b/doc/src/sgml/ref/cluster.sgml @@ -197,8 +197,7 @@ CLUSTER employees; Cluster all tables in the database that have previously been clustered: CLUSTER; - - + diff --git a/doc/src/sgml/ref/clusterdb.sgml b/doc/src/sgml/ref/clusterdb.sgml index 081f398706..c80cbac517 100644 --- a/doc/src/sgml/ref/clusterdb.sgml +++ b/doc/src/sgml/ref/clusterdb.sgml @@ -293,8 +293,7 @@ PostgreSQL documentation xyzzy: $ clusterdb --table foo xyzzy - - + diff --git a/doc/src/sgml/ref/comment.sgml b/doc/src/sgml/ref/comment.sgml index ab12614f84..1c8b37c832 100644 --- a/doc/src/sgml/ref/comment.sgml +++ b/doc/src/sgml/ref/comment.sgml @@ -26,7 +26,7 @@ COMMENT ON AGGREGATE agg_name (agg_type [, ...] ) | CAST (source_type AS target_type) | COLLATION object_name | - COLUMN table_name.column_name | + COLUMN relation_name.column_name | CONSTRAINT constraint_name ON table_name | CONVERSION object_name | DATABASE object_name | @@ -98,7 +98,7 @@ COMMENT ON object_name - table_name.column_name + relation_name.column_name agg_name constraint_name function_name @@ -111,6 +111,9 @@ COMMENT ON aggregates, collations, conversions, domains, foreign tables, functions, indexes, operators, operator classes, operator families, sequences, text search objects, types, and views can be schema-qualified. + When commenting on a column, + relation_name must refer + to a table, view, composite type, or foreign table. @@ -293,8 +296,7 @@ COMMENT ON TEXT SEARCH TEMPLATE snowball IS 'Snowball stemmer'; COMMENT ON TRIGGER my_trigger ON my_table IS 'Used for RI'; COMMENT ON TYPE complex IS 'Complex number data type'; COMMENT ON VIEW my_view IS 'View of departmental costs'; - - + diff --git a/doc/src/sgml/ref/commit.sgml b/doc/src/sgml/ref/commit.sgml index 1a039c2e3e..40147a5476 100644 --- a/doc/src/sgml/ref/commit.sgml +++ b/doc/src/sgml/ref/commit.sgml @@ -72,8 +72,7 @@ COMMIT [ WORK | TRANSACTION ] To commit the current transaction and make all changes permanent: COMMIT; - - + diff --git a/doc/src/sgml/ref/commit_prepared.sgml b/doc/src/sgml/ref/commit_prepared.sgml index 930435d81a..2af677fcb0 100644 --- a/doc/src/sgml/ref/commit_prepared.sgml +++ b/doc/src/sgml/ref/commit_prepared.sgml @@ -79,8 +79,7 @@ COMMIT PREPARED transaction_id COMMIT PREPARED 'foobar'; - - + diff --git a/doc/src/sgml/ref/copy.sgml b/doc/src/sgml/ref/copy.sgml index 6429a4ef0d..8a2038f76c 100644 --- a/doc/src/sgml/ref/copy.sgml +++ b/doc/src/sgml/ref/copy.sgml @@ -40,7 +40,7 @@ COPY { table_name [ ( quote_character' ESCAPE 'escape_character' FORCE_QUOTE { ( column [, ...] ) | * } - FORCE_NOT_NULL ( column [, ...] ) | + FORCE_NOT_NULL ( column [, ...] ) ENCODING 'encoding_name' @@ -703,8 +703,7 @@ only one flag bit is defined, and the rest must be zero: - - + @@ -850,8 +849,7 @@ ZW ZIMBABWE 0000140 \0 002 Z M \0 \0 \0 006 Z A M B I A 377 377 0000160 377 377 \0 003 \0 \0 \0 002 Z W \0 \0 \0 \b Z I 0000200 M B A B W E 377 377 377 377 377 377 - - + @@ -910,7 +908,6 @@ COPY [ BINARY ] table_name [ WITH O TO { 'filename' | STDOUT } [ [USING] DELIMITERS 'delimiter' ] [ WITH NULL AS 'null string' ] - - + diff --git a/doc/src/sgml/ref/create_conversion.sgml b/doc/src/sgml/ref/create_conversion.sgml index 4a37191222..084b60c4c1 100644 --- a/doc/src/sgml/ref/create_conversion.sgml +++ b/doc/src/sgml/ref/create_conversion.sgml @@ -113,8 +113,7 @@ conv_proc( internal, -- destination (fill with a null terminated C string) integer -- source string length ) RETURNS void; - - + @@ -141,8 +140,7 @@ conv_proc( LATIN1 using myfunc: CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc; - - + diff --git a/doc/src/sgml/ref/create_database.sgml b/doc/src/sgml/ref/create_database.sgml index 2c34c11cae..6479240470 100644 --- a/doc/src/sgml/ref/create_database.sgml +++ b/doc/src/sgml/ref/create_database.sgml @@ -46,14 +46,6 @@ CREATE DATABASE name See . - - Normally, the creator becomes the owner of the new database. - Superusers can create databases owned by other users, by using the - OWNER clause. They can even create databases owned by - users with no special privileges. Non-superusers with CREATEDB - privilege can only create databases owned by themselves. - - By default, the new database will be created by cloning the standard system database template1. A different template can be @@ -81,12 +73,14 @@ CREATE DATABASE name - use_name + user_name - The name of the database user who will own the new database, + The role name of the user who will own the new database, or DEFAULT to use the default (namely, the - user executing the command). + user executing the command). To create a database owned by another + role, you must be a direct or indirect member of that role, + or be a superuser. diff --git a/doc/src/sgml/ref/create_domain.sgml b/doc/src/sgml/ref/create_domain.sgml index 8db90f911f..0f901d78ee 100644 --- a/doc/src/sgml/ref/create_domain.sgml +++ b/doc/src/sgml/ref/create_domain.sgml @@ -162,8 +162,7 @@ CREATE DOMAIN name [ AS ] CHECK (expression) - - CHECK clauses specify integrity constraints or tests + CHECK clauses specify integrity constraints or tests which values of the domain must satisfy. Each constraint must be an expression producing a Boolean result. It should use the key word VALUE @@ -190,8 +189,8 @@ CREATE DOMAIN name [ AS ] CREATE DOMAIN us_postal_code AS TEXT CHECK( - VALUE ~ '^\\d{5}$' -OR VALUE ~ '^\\d{5}-\\d{4}$' + VALUE ~ '^\d{5}$' +OR VALUE ~ '^\d{5}-\d{4}$' ); CREATE TABLE us_snail_addy ( @@ -202,8 +201,7 @@ CREATE TABLE us_snail_addy ( city TEXT NOT NULL, postal us_postal_code NOT NULL ); - - + diff --git a/doc/src/sgml/ref/create_extension.sgml b/doc/src/sgml/ref/create_extension.sgml index 7670d76f89..9c9bf6ff7d 100644 --- a/doc/src/sgml/ref/create_extension.sgml +++ b/doc/src/sgml/ref/create_extension.sgml @@ -22,7 +22,7 @@ PostgreSQL documentation CREATE EXTENSION [ IF NOT EXISTS ] extension_name - [ WITH ] [ SCHEMA schema ] + [ WITH ] [ SCHEMA schema_name ] [ VERSION version ] [ FROM old_version ] @@ -85,7 +85,7 @@ CREATE EXTENSION [ IF NOT EXISTS ] extension_name - schema + schema_name The name of the schema in which to install the extension's @@ -94,6 +94,12 @@ CREATE EXTENSION [ IF NOT EXISTS ] extension_name If not specified, and the extension's control file does not specify a schema either, the current default object creation schema is used. + + Remember that the extension itself is not considered to be within any + schema: extensions have unqualified names that must be unique + database-wide. But objects belonging to the extension can be within + schemas. + @@ -111,8 +117,7 @@ CREATE EXTENSION [ IF NOT EXISTS ] extension_name old_version - - FROM old_version + FROM old_version must be specified when, and only when, you are attempting to install an extension that replaces an old style module that is just a collection of objects not packaged into an extension. This option diff --git a/doc/src/sgml/ref/create_foreign_data_wrapper.sgml b/doc/src/sgml/ref/create_foreign_data_wrapper.sgml index 3093ebcb4a..804fb47c68 100644 --- a/doc/src/sgml/ref/create_foreign_data_wrapper.sgml +++ b/doc/src/sgml/ref/create_foreign_data_wrapper.sgml @@ -62,8 +62,7 @@ CREATE FOREIGN DATA WRAPPER name HANDLER handler_function - - handler_function is the + handler_function is the name of a previously registered function that will be called to retrieve the execution functions for foreign tables. The handler function must take no arguments, and @@ -81,8 +80,7 @@ CREATE FOREIGN DATA WRAPPER name VALIDATOR validator_function - - validator_function is the + validator_function is the name of a previously registered function that will be called to check the generic options given to the foreign-data wrapper, as well as options for foreign servers and user mappings using the @@ -157,8 +155,7 @@ CREATE FOREIGN DATA WRAPPER file HANDLER file_fdw_handler; CREATE FOREIGN DATA WRAPPER mywrapper OPTIONS (debug 'true'); - - + diff --git a/doc/src/sgml/ref/create_foreign_table.sgml b/doc/src/sgml/ref/create_foreign_table.sgml index ad91072bd1..f52fd8c8e0 100644 --- a/doc/src/sgml/ref/create_foreign_table.sgml +++ b/doc/src/sgml/ref/create_foreign_table.sgml @@ -167,8 +167,7 @@ CREATE FOREIGN TABLE films ( len interval hour to minute ) SERVER film_server; - - + diff --git a/doc/src/sgml/ref/create_function.sgml b/doc/src/sgml/ref/create_function.sgml index cd6ac69eb6..4a3bde5a49 100644 --- a/doc/src/sgml/ref/create_function.sgml +++ b/doc/src/sgml/ref/create_function.sgml @@ -129,7 +129,7 @@ CREATE [ OR REPLACE ] FUNCTION - The name of an argument. Some languages (currently only PL/pgSQL) let + The name of an argument. Some languages (including PL/pgSQL, but currently not SQL) let you use the name in the function body. For other languages the name of an input argument is just extra documentation, so far as the function itself is concerned; but you can use input argument names @@ -259,8 +259,7 @@ CREATE [ OR REPLACE ] FUNCTION WINDOW - - WINDOW indicates that the function is a + WINDOW indicates that the function is a window function rather than a plain function. This is currently only useful for functions written in C. The WINDOW attribute cannot be changed when @@ -282,8 +281,7 @@ CREATE [ OR REPLACE ] FUNCTION VOLATILE is the default assumption. - - IMMUTABLE indicates that the function + IMMUTABLE indicates that the function cannot modify the database and always returns the same result when given the same argument values; that is, it does not do database lookups or otherwise use information not @@ -292,8 +290,7 @@ CREATE [ OR REPLACE ] FUNCTION immediately replaced with the function value. - - STABLE indicates that the function + STABLE indicates that the function cannot modify the database, and that within a single table scan it will consistently return the same result for the same argument values, but that its @@ -306,8 +303,7 @@ CREATE [ OR REPLACE ] FUNCTION as stable, since their values do not change within a transaction. - - VOLATILE indicates that the function value can + VOLATILE indicates that the function value can change even within a single table scan, so no optimizations can be made. Relatively few database functions are volatile in this sense; some examples are random(), currval(), @@ -329,16 +325,14 @@ CREATE [ OR REPLACE ] FUNCTION STRICT - - CALLED ON NULL INPUT (the default) indicates + CALLED ON NULL INPUT (the default) indicates that the function will be called normally when some of its arguments are null. It is then the function author's responsibility to check for null values if necessary and respond appropriately. - - RETURNS NULL ON NULL INPUT or + RETURNS NULL ON NULL INPUT or STRICT indicates that the function always returns null whenever any of its arguments are null. If this parameter is specified, the function is not executed when there @@ -353,8 +347,7 @@ CREATE [ OR REPLACE ] FUNCTION EXTERNAL SECURITY DEFINER - - SECURITY INVOKER indicates that the function + SECURITY INVOKER indicates that the function is to be executed with the privileges of the user that calls it. That is the default. SECURITY DEFINER specifies that the function is to be executed with the @@ -499,8 +492,7 @@ CREATE [ OR REPLACE ] FUNCTION isCachable - - isCachable is an obsolete equivalent of + isCachable is an obsolete equivalent of IMMUTABLE; it's still accepted for backwards-compatibility reasons. @@ -565,12 +557,13 @@ CREATE FUNCTION foo(int, int default 42) ... The full SQL type syntax is allowed for - input arguments and return value. However, some details of the - type specification (e.g., the precision field for - type numeric) are the responsibility of the - underlying function implementation and are silently swallowed - (i.e., not recognized or - enforced) by the CREATE FUNCTION command. + declaring a function's arguments and return value. However, + parenthesized type modifiers (e.g., the precision field for + type numeric) are discarded by CREATE FUNCTION. + Thus for example + CREATE FUNCTION foo (varchar(10)) ... + is exactly the same as + CREATE FUNCTION foo (varchar) .... diff --git a/doc/src/sgml/ref/create_index.sgml b/doc/src/sgml/ref/create_index.sgml index 43b6499603..8a59a9fd82 100644 --- a/doc/src/sgml/ref/create_index.sgml +++ b/doc/src/sgml/ref/create_index.sgml @@ -379,9 +379,17 @@ CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ name - In a concurrent index build, the index is actually entered into the - system catalogs in one transaction, then the two table scans occur in a - second and third transaction. + 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 . + + + If a problem arises while scanning the table, such as a uniqueness violation in a unique index, the CREATE INDEX command will fail but leave behind an invalid index. This index @@ -443,6 +451,18 @@ Indexes: they can be useful. + + + Hash index operations are not presently WAL-logged, + so hash indexes might need to be rebuilt with REINDEX + after a database crash if there were unwritten changes. + Also, changes to hash indexes are not replicated over streaming or + file-based replication after the initial base backup, so they + give wrong answers to queries that subsequently use them. + For these reasons, hash index use is presently discouraged. + + + Currently, only the B-tree, GiST and GIN index methods support multicolumn indexes. Up to 32 fields can be specified by default. @@ -589,8 +609,7 @@ SELECT * FROM points To create an index without locking out writes to the table: CREATE INDEX CONCURRENTLY sales_quantity_index ON sales_table (quantity); - - + diff --git a/doc/src/sgml/ref/create_language.sgml b/doc/src/sgml/ref/create_language.sgml index 13c3baf993..6e72892375 100644 --- a/doc/src/sgml/ref/create_language.sgml +++ b/doc/src/sgml/ref/create_language.sgml @@ -118,8 +118,7 @@ CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE HANDLER call_handler - - call_handler is + call_handler is the name of a previously registered function that will be called to execute the procedural language's functions. The call handler for a procedural language must be written in a compiled @@ -178,8 +176,7 @@ CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE inline_handler - - inline_handler is the + inline_handler is the name of a previously registered function that will be called to execute an anonymous code block ( command) @@ -199,8 +196,7 @@ CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE valfunction - - valfunction is the + valfunction is the name of a previously registered function that will be called when a new function in the language is created, to validate the new function. @@ -309,8 +305,7 @@ CREATE FUNCTION plsample_call_handler() RETURNS language_handler LANGUAGE C; CREATE LANGUAGE plsample HANDLER plsample_call_handler; - - + diff --git a/doc/src/sgml/ref/create_operator.sgml b/doc/src/sgml/ref/create_operator.sgml index 90da092450..28b5e7e0da 100644 --- a/doc/src/sgml/ref/create_operator.sgml +++ b/doc/src/sgml/ref/create_operator.sgml @@ -52,8 +52,7 @@ CREATE OPERATOR name ( There are a few restrictions on your choice of name: - - -- and /* cannot appear anywhere in an operator name, + -- and /* cannot appear anywhere in an operator name, since they will be taken as the start of a comment. @@ -215,8 +214,7 @@ CREATE OPERATOR name ( arguments, use the OPERATOR() syntax, for example: COMMUTATOR = OPERATOR(myschema.===) , - - + @@ -266,8 +264,7 @@ CREATE OPERATOR === ( JOIN = area_join_procedure, HASHES, MERGES ); - - + diff --git a/doc/src/sgml/ref/create_role.sgml b/doc/src/sgml/ref/create_role.sgml index 43bec5d8e1..5a939346e7 100644 --- a/doc/src/sgml/ref/create_role.sgml +++ b/doc/src/sgml/ref/create_role.sgml @@ -268,8 +268,7 @@ CREATE ROLE name [ [ WITH ] IN GROUP role_name - - IN GROUP is an obsolete spelling of + IN GROUP is an obsolete spelling of IN ROLE. @@ -438,8 +437,7 @@ CREATE ROLE miriam WITH LOGIN PASSWORD 'jw8s0F4' VALID UNTIL '2005-01-01'; Create a role that can create databases and manage roles: CREATE ROLE admin WITH CREATEDB CREATEROLE; - - + diff --git a/doc/src/sgml/ref/create_rule.sgml b/doc/src/sgml/ref/create_rule.sgml index e7c88497d6..8bccf7f1f1 100644 --- a/doc/src/sgml/ref/create_rule.sgml +++ b/doc/src/sgml/ref/create_rule.sgml @@ -149,8 +149,7 @@ CREATE [ OR REPLACE ] RULE name AS - - INSTEAD indicates that the commands should be + INSTEAD indicates that the commands should be executed instead of the original command. @@ -159,8 +158,7 @@ CREATE [ OR REPLACE ] RULE name AS - - ALSO indicates that the commands should be + ALSO indicates that the commands should be executed in addition to the original command. diff --git a/doc/src/sgml/ref/create_schema.sgml b/doc/src/sgml/ref/create_schema.sgml index 89a624eda2..399e30df7d 100644 --- a/doc/src/sgml/ref/create_schema.sgml +++ b/doc/src/sgml/ref/create_schema.sgml @@ -65,7 +65,8 @@ CREATE SCHEMA AUTHORIZATION user_nameschema_name - The name of a schema to be created. If this is omitted, the user name + The name of a schema to be created. If this is omitted, the + user_name is used as the schema name. The name cannot begin with pg_, as such names are reserved for system schemas. @@ -77,9 +78,10 @@ CREATE SCHEMA AUTHORIZATION user_nameuser_name - The name of the user who will own the schema. If omitted, - defaults to the user executing the command. Only superusers - can create schemas owned by users other than themselves. + The role name of the user who will own the new schema. If omitted, + defaults to the user executing the command. To create a schema + owned by another role, you must be a direct or indirect member of + that role, or be a superuser. @@ -147,8 +149,7 @@ CREATE SCHEMA hollywood; CREATE TABLE hollywood.films (title text, release date, awards text[]); CREATE VIEW hollywood.winners AS SELECT title, release FROM hollywood.films WHERE awards IS NOT NULL; - - + @@ -176,7 +177,8 @@ CREATE VIEW hollywood.winners AS all objects within it. PostgreSQL allows schemas to contain objects owned by users other than the schema owner. This can happen only if the schema owner grants the - CREATE privilege on his schema to someone else. + CREATE privilege on his schema to someone else, or a + superuser chooses to create objects in it. diff --git a/doc/src/sgml/ref/create_sequence.sgml b/doc/src/sgml/ref/create_sequence.sgml index f36b616db0..367f440b6c 100644 --- a/doc/src/sgml/ref/create_sequence.sgml +++ b/doc/src/sgml/ref/create_sequence.sgml @@ -318,8 +318,7 @@ BEGIN; COPY distributors FROM 'input_file'; SELECT setval('serial', max(id)) FROM distributors; END; - - + @@ -348,8 +347,7 @@ END; extension. - - + diff --git a/doc/src/sgml/ref/create_server.sgml b/doc/src/sgml/ref/create_server.sgml index f923dc84c8..be9be50b69 100644 --- a/doc/src/sgml/ref/create_server.sgml +++ b/doc/src/sgml/ref/create_server.sgml @@ -136,8 +136,7 @@ CREATE SERVER foo FOREIGN DATA WRAPPER "default"; foreign-data wrapper pgsql: CREATE SERVER myserver FOREIGN DATA WRAPPER pgsql OPTIONS (host 'foo', dbname 'foodb', port '5432'); - - + diff --git a/doc/src/sgml/ref/create_table.sgml b/doc/src/sgml/ref/create_table.sgml index 0fbe116097..faff45900c 100644 --- a/doc/src/sgml/ref/create_table.sgml +++ b/doc/src/sgml/ref/create_table.sgml @@ -288,8 +288,7 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXI error will be reported. - - CHECK constraints are merged in essentially the same way as + CHECK constraints are merged in essentially the same way as columns: if multiple parent tables and/or the new table definition contain identically-named CHECK constraints, these constraints must all have the same check expression, or an error will be @@ -340,8 +339,7 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXI table, unless the INCLUDING INDEXES clause is specified. - - STORAGE settings for the copied column definitions will only + STORAGE settings for the copied column definitions will only be copied if INCLUDING STORAGE is specified. The default behavior is to exclude STORAGE settings, resulting in the copied columns in the new table having type-specific default @@ -354,8 +352,7 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXI is specified. The default behavior is to exclude comments, resulting in the copied columns and constraints in the new table having no comments. - - INCLUDING ALL is an abbreviated form of + INCLUDING ALL is an abbreviated form of INCLUDING DEFAULTS INCLUDING CONSTRAINTS INCLUDING INDEXES INCLUDING STORAGE INCLUDING COMMENTS. @@ -798,8 +795,7 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXI - - + @@ -1061,9 +1057,7 @@ CREATE TABLE films ( kind varchar(10), len interval hour to minute ); - - CREATE TABLE distributors ( did integer PRIMARY KEY DEFAULT nextval('serial'), name varchar(40) NOT NULL CHECK (name <> '') @@ -1151,9 +1145,7 @@ CREATE TABLE distributors ( name varchar(40), PRIMARY KEY(did) ); - - CREATE TABLE distributors ( did integer PRIMARY KEY, name varchar(40) @@ -1259,8 +1251,7 @@ CREATE TABLE employees OF employee_type ( PRIMARY KEY (name), salary WITH OPTIONS DEFAULT 1000 ); - - + diff --git a/doc/src/sgml/ref/create_table_as.sgml b/doc/src/sgml/ref/create_table_as.sgml index ff71078d1e..e4797b6547 100644 --- a/doc/src/sgml/ref/create_table_as.sgml +++ b/doc/src/sgml/ref/create_table_as.sgml @@ -183,8 +183,7 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE - - + @@ -291,8 +290,7 @@ PREPARE recentfilms(date) AS SELECT * FROM films WHERE date_prod > $1; CREATE TEMP TABLE films_recent WITH (OIDS) ON COMMIT DROP AS EXECUTE recentfilms('2002-01-01'); - - + @@ -319,8 +317,7 @@ CREATE TEMP TABLE films_recent WITH (OIDS) ON COMMIT DROP AS - - PostgreSQL handles temporary tables in a way + PostgreSQL handles temporary tables in a way rather different from the standard; see for details. @@ -341,8 +338,7 @@ CREATE TEMP TABLE films_recent WITH (OIDS) ON COMMIT DROP AS is an extension. - - + diff --git a/doc/src/sgml/ref/create_tablespace.sgml b/doc/src/sgml/ref/create_tablespace.sgml index beda4540c8..89c89072ae 100644 --- a/doc/src/sgml/ref/create_tablespace.sgml +++ b/doc/src/sgml/ref/create_tablespace.sgml @@ -118,8 +118,7 @@ CREATE TABLESPACE dbspace LOCATION '/data/dbs'; owned by user genevieve: CREATE TABLESPACE indexspace OWNER genevieve LOCATION '/data/indexes'; - - + diff --git a/doc/src/sgml/ref/create_trigger.sgml b/doc/src/sgml/ref/create_trigger.sgml index 8e502d94e4..aed07a9dfb 100644 --- a/doc/src/sgml/ref/create_trigger.sgml +++ b/doc/src/sgml/ref/create_trigger.sgml @@ -235,8 +235,7 @@ UPDATE OF column_name1 [, column_name2UPDATE command. - - INSTEAD OF UPDATE events do not support lists of columns. + INSTEAD OF UPDATE events do not support lists of columns. @@ -311,8 +310,7 @@ UPDATE OF column_name1 [, column_name2DELETE triggers cannot refer to NEW. - - INSTEAD OF triggers do not support WHEN + INSTEAD OF triggers do not support WHEN conditions. @@ -364,7 +362,8 @@ UPDATE OF column_name1 [, column_name2 To create a trigger on a table, the user must have the - TRIGGER privilege on the table. + TRIGGER privilege on the table. The user must + also have EXECUTE privilege on the trigger function. @@ -502,8 +501,7 @@ CREATE TRIGGER view_insert - - PostgreSQL only allows the execution + PostgreSQL only allows the execution of a user-defined function for the triggered action. The standard allows the execution of a number of other SQL commands, such as CREATE TABLE, as the triggered action. This diff --git a/doc/src/sgml/ref/create_user_mapping.sgml b/doc/src/sgml/ref/create_user_mapping.sgml index c9606280fb..c7cc4ce574 100644 --- a/doc/src/sgml/ref/create_user_mapping.sgml +++ b/doc/src/sgml/ref/create_user_mapping.sgml @@ -94,8 +94,7 @@ CREATE USER MAPPING FOR { user_name Create a user mapping for user bob, server foo: CREATE USER MAPPING FOR bob SERVER foo OPTIONS (user 'bob', password 'secret'); - - + diff --git a/doc/src/sgml/ref/create_view.sgml b/doc/src/sgml/ref/create_view.sgml index 417f8c38e7..77fc6c489c 100644 --- a/doc/src/sgml/ref/create_view.sgml +++ b/doc/src/sgml/ref/create_view.sgml @@ -117,9 +117,12 @@ CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW n Currently, views are read only: the system will not allow an insert, update, or delete on a view. You can get the effect of an updatable - view by creating rules that rewrite inserts, etc. on the view into + view by creating INSTEAD triggers on the view, which + must convert attempted inserts, etc. on the view into appropriate actions on other tables. For more information see - . + . Another possibility is to create + rules (see ), but in practice triggers + are easier to understand and use correctly. diff --git a/doc/src/sgml/ref/createdb.sgml b/doc/src/sgml/ref/createdb.sgml index 9c8171d049..3e50173e22 100644 --- a/doc/src/sgml/ref/createdb.sgml +++ b/doc/src/sgml/ref/createdb.sgml @@ -352,8 +352,7 @@ PostgreSQL documentation $ createdb -p 5000 -h eden -E LATIN1 -e demo CREATE DATABASE demo ENCODING 'LATIN1'; - - + diff --git a/doc/src/sgml/ref/declare.sgml b/doc/src/sgml/ref/declare.sgml index f2b75b7aca..d500faaa74 100644 --- a/doc/src/sgml/ref/declare.sgml +++ b/doc/src/sgml/ref/declare.sgml @@ -91,8 +91,7 @@ DECLARE name [ BINARY ] [ INSENSITI SCROLL NO SCROLL - - SCROLL specifies that the cursor can be used + SCROLL specifies that the cursor can be used to retrieve rows in a nonsequential fashion (e.g., backward). Depending upon the complexity of the query's execution plan, specifying SCROLL might impose @@ -110,8 +109,7 @@ DECLARE name [ BINARY ] [ INSENSITI WITH HOLD WITHOUT HOLD - - WITH HOLD specifies that the cursor can + WITH HOLD specifies that the cursor can continue to be used after the transaction that created it successfully commits. WITHOUT HOLD specifies that the cursor cannot be used outside of the transaction that diff --git a/doc/src/sgml/ref/delete.sgml b/doc/src/sgml/ref/delete.sgml index 9406f4e3af..77952065b3 100644 --- a/doc/src/sgml/ref/delete.sgml +++ b/doc/src/sgml/ref/delete.sgml @@ -22,7 +22,7 @@ PostgreSQL documentation [ WITH [ RECURSIVE ] with_query [, ...] ] -DELETE FROM [ ONLY ] table [ [ AS ] alias ] +DELETE FROM [ ONLY ] table [ * ] [ [ AS ] alias ] [ USING using_list ] [ WHERE condition | WHERE CURRENT OF cursor_name ] [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ] @@ -47,13 +47,6 @@ DELETE FROM [ ONLY ] table [ [ AS ] - - By default, DELETE will delete rows in the - specified table and all its child tables. If you wish to delete only - from the specific table mentioned, you must use the - ONLY clause. - - There are two ways to delete rows in a table using information contained in other tables in the database: using sub-selects, or @@ -96,21 +89,17 @@ DELETE FROM [ ONLY ] table [ [ AS ] - - ONLY - - - If specified, delete rows from the named table only. When not - specified, any tables inheriting from the named table are also processed. - - - - table - The name (optionally schema-qualified) of an existing table. + The name (optionally schema-qualified) of the table to delete rows + from. If ONLY is specified before the table name, + matching rows are deleted from the named table only. If + ONLY is not specified, matching rows are also deleted + from any tables inheriting from the named table. Optionally, + * can be specified after the table name to explicitly + indicate that descendant tables are included. @@ -275,8 +264,7 @@ DELETE FROM tasks WHERE status = 'DONE' RETURNING *; c_tasks is currently positioned: DELETE FROM tasks WHERE CURRENT OF c_tasks; - - + diff --git a/doc/src/sgml/ref/discard.sgml b/doc/src/sgml/ref/discard.sgml index 74a2ce3b4e..65ebbae138 100644 --- a/doc/src/sgml/ref/discard.sgml +++ b/doc/src/sgml/ref/discard.sgml @@ -83,8 +83,7 @@ UNLISTEN *; SELECT pg_advisory_unlock_all(); DISCARD PLANS; DISCARD TEMP; - - + diff --git a/doc/src/sgml/ref/do.sgml b/doc/src/sgml/ref/do.sgml index 47f144f795..5f43d1cf52 100644 --- a/doc/src/sgml/ref/do.sgml +++ b/doc/src/sgml/ref/do.sgml @@ -107,9 +107,9 @@ BEGIN EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser'; END LOOP; END$$; - - + + Compatibility diff --git a/doc/src/sgml/ref/drop_aggregate.sgml b/doc/src/sgml/ref/drop_aggregate.sgml index 400b4d70eb..dd8aafa74d 100644 --- a/doc/src/sgml/ref/drop_aggregate.sgml +++ b/doc/src/sgml/ref/drop_aggregate.sgml @@ -99,8 +99,7 @@ DROP AGGREGATE [ IF EXISTS ] name ( integer: DROP AGGREGATE myavg(integer); - - + diff --git a/doc/src/sgml/ref/drop_cast.sgml b/doc/src/sgml/ref/drop_cast.sgml index 139e89daca..589c6ac39b 100644 --- a/doc/src/sgml/ref/drop_cast.sgml +++ b/doc/src/sgml/ref/drop_cast.sgml @@ -92,8 +92,7 @@ DROP CAST [ IF EXISTS ] (source_type AS To drop the cast from type text to type int: DROP CAST (text AS int); - - + diff --git a/doc/src/sgml/ref/drop_collation.sgml b/doc/src/sgml/ref/drop_collation.sgml index 0afcaaf2de..64a48eec2b 100644 --- a/doc/src/sgml/ref/drop_collation.sgml +++ b/doc/src/sgml/ref/drop_collation.sgml @@ -84,8 +84,7 @@ DROP COLLATION [ IF EXISTS ] name [ CASCADE | RESTRIC To drop the collation named german: DROP COLLATION german; - - + diff --git a/doc/src/sgml/ref/drop_conversion.sgml b/doc/src/sgml/ref/drop_conversion.sgml index 79e159dcbd..6f866438fb 100644 --- a/doc/src/sgml/ref/drop_conversion.sgml +++ b/doc/src/sgml/ref/drop_conversion.sgml @@ -77,8 +77,7 @@ DROP CONVERSION [ IF EXISTS ] name [ CASCADE | RESTRI To drop the conversion named myname: DROP CONVERSION myname; - - + diff --git a/doc/src/sgml/ref/drop_domain.sgml b/doc/src/sgml/ref/drop_domain.sgml index 689633f6dd..b7b9a167c1 100644 --- a/doc/src/sgml/ref/drop_domain.sgml +++ b/doc/src/sgml/ref/drop_domain.sgml @@ -87,8 +87,7 @@ DROP DOMAIN [ IF EXISTS ] name [, . DROP DOMAIN box; - - + diff --git a/doc/src/sgml/ref/drop_foreign_data_wrapper.sgml b/doc/src/sgml/ref/drop_foreign_data_wrapper.sgml index 0ac0722f3d..18fa4fe4a5 100644 --- a/doc/src/sgml/ref/drop_foreign_data_wrapper.sgml +++ b/doc/src/sgml/ref/drop_foreign_data_wrapper.sgml @@ -87,8 +87,7 @@ DROP FOREIGN DATA WRAPPER [ IF EXISTS ] namedbi: DROP FOREIGN DATA WRAPPER dbi; - - + diff --git a/doc/src/sgml/ref/drop_foreign_table.sgml b/doc/src/sgml/ref/drop_foreign_table.sgml index 71f26465bb..1f66126a33 100644 --- a/doc/src/sgml/ref/drop_foreign_table.sgml +++ b/doc/src/sgml/ref/drop_foreign_table.sgml @@ -21,7 +21,7 @@ DROP FOREIGN TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ] - + Description @@ -30,7 +30,7 @@ DROP FOREIGN TABLE [ IF EXISTS ] name - + Parameters @@ -80,15 +80,14 @@ DROP FOREIGN TABLE [ IF EXISTS ] nameExamples - To destroy two foreign tables, films and + To destroy two foreign tables, films and distributors: DROP FOREIGN TABLE films, distributors; - - + - + Compatibility diff --git a/doc/src/sgml/ref/drop_function.sgml b/doc/src/sgml/ref/drop_function.sgml index a26b4ff66c..2d0048be28 100644 --- a/doc/src/sgml/ref/drop_function.sgml +++ b/doc/src/sgml/ref/drop_function.sgml @@ -132,8 +132,7 @@ DROP FUNCTION [ IF EXISTS ] name ( DROP FUNCTION sqrt(integer); - - + diff --git a/doc/src/sgml/ref/drop_index.sgml b/doc/src/sgml/ref/drop_index.sgml index fb4ce2bf9c..7177ef2d81 100644 --- a/doc/src/sgml/ref/drop_index.sgml +++ b/doc/src/sgml/ref/drop_index.sgml @@ -87,8 +87,7 @@ DROP INDEX [ IF EXISTS ] name [, .. DROP INDEX title_idx; - - + diff --git a/doc/src/sgml/ref/drop_language.sgml b/doc/src/sgml/ref/drop_language.sgml index 21c9e5aced..c2cb7045de 100644 --- a/doc/src/sgml/ref/drop_language.sgml +++ b/doc/src/sgml/ref/drop_language.sgml @@ -100,8 +100,7 @@ DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] name DROP LANGUAGE plsample; - - + diff --git a/doc/src/sgml/ref/drop_operator.sgml b/doc/src/sgml/ref/drop_operator.sgml index aa227ab8d8..3091454fdc 100644 --- a/doc/src/sgml/ref/drop_operator.sgml +++ b/doc/src/sgml/ref/drop_operator.sgml @@ -123,8 +123,7 @@ DROP OPERATOR ~ (none, bit); for type bigint: DROP OPERATOR ! (bigint, none); - - + diff --git a/doc/src/sgml/ref/drop_owned.sgml b/doc/src/sgml/ref/drop_owned.sgml index a453af58d1..48cf0fa535 100644 --- a/doc/src/sgml/ref/drop_owned.sgml +++ b/doc/src/sgml/ref/drop_owned.sgml @@ -29,10 +29,11 @@ DROP OWNED BY name [, ...] [ CASCAD Description - DROP OWNED drops all the objects in the current + DROP OWNED drops all the objects within the current database that are owned by one of the specified roles. Any privileges granted to the given roles on objects in the current - database will also be revoked. + database and on shared objects (databases, tablespaces) will also be + revoked. @@ -93,7 +94,7 @@ DROP OWNED BY name [, ...] [ CASCAD - Databases owned by the role(s) will not be removed. + Databases and tablespaces owned by the role(s) will not be removed. diff --git a/doc/src/sgml/ref/drop_role.sgml b/doc/src/sgml/ref/drop_role.sgml index a3a999437c..92c0fb863d 100644 --- a/doc/src/sgml/ref/drop_role.sgml +++ b/doc/src/sgml/ref/drop_role.sgml @@ -96,8 +96,7 @@ DROP ROLE [ IF EXISTS ] name [, ... To drop a role: DROP ROLE jonathan; - - + diff --git a/doc/src/sgml/ref/drop_rule.sgml b/doc/src/sgml/ref/drop_rule.sgml index fd24c70127..b7ff6e6078 100644 --- a/doc/src/sgml/ref/drop_rule.sgml +++ b/doc/src/sgml/ref/drop_rule.sgml @@ -96,8 +96,7 @@ DROP RULE [ IF EXISTS ] name ON DROP RULE newrule ON mytable; - - + diff --git a/doc/src/sgml/ref/drop_schema.sgml b/doc/src/sgml/ref/drop_schema.sgml index 50fb09b965..15dbc40817 100644 --- a/doc/src/sgml/ref/drop_schema.sgml +++ b/doc/src/sgml/ref/drop_schema.sgml @@ -93,8 +93,7 @@ DROP SCHEMA [ IF EXISTS ] name [, . DROP SCHEMA mystuff CASCADE; - - + diff --git a/doc/src/sgml/ref/drop_sequence.sgml b/doc/src/sgml/ref/drop_sequence.sgml index 84a8ca188b..f810b5976c 100644 --- a/doc/src/sgml/ref/drop_sequence.sgml +++ b/doc/src/sgml/ref/drop_sequence.sgml @@ -86,8 +86,7 @@ DROP SEQUENCE [ IF EXISTS ] name [, DROP SEQUENCE serial; - - + diff --git a/doc/src/sgml/ref/drop_server.sgml b/doc/src/sgml/ref/drop_server.sgml index af08655a1d..6a64e83ebe 100644 --- a/doc/src/sgml/ref/drop_server.sgml +++ b/doc/src/sgml/ref/drop_server.sgml @@ -87,8 +87,7 @@ DROP SERVER [ IF EXISTS ] server_namefoo if it exists: DROP SERVER IF EXISTS foo; - - + diff --git a/doc/src/sgml/ref/drop_table.sgml b/doc/src/sgml/ref/drop_table.sgml index 7fa7e32ee0..26fe76e1f8 100644 --- a/doc/src/sgml/ref/drop_table.sgml +++ b/doc/src/sgml/ref/drop_table.sgml @@ -100,8 +100,7 @@ DROP TABLE [ IF EXISTS ] name [, .. DROP TABLE films, distributors; - - + diff --git a/doc/src/sgml/ref/drop_tablespace.sgml b/doc/src/sgml/ref/drop_tablespace.sgml index aa80be3c6f..107e049c8c 100644 --- a/doc/src/sgml/ref/drop_tablespace.sgml +++ b/doc/src/sgml/ref/drop_tablespace.sgml @@ -86,8 +86,7 @@ DROP TABLESPACE [ IF EXISTS ] tablespace_namemystuff from the system: DROP TABLESPACE mystuff; - - + diff --git a/doc/src/sgml/ref/drop_trigger.sgml b/doc/src/sgml/ref/drop_trigger.sgml index 444c928d1e..2fcc690db7 100644 --- a/doc/src/sgml/ref/drop_trigger.sgml +++ b/doc/src/sgml/ref/drop_trigger.sgml @@ -99,8 +99,7 @@ DROP TRIGGER [ IF EXISTS ] name ON DROP TRIGGER if_dist_exists ON films; - - + diff --git a/doc/src/sgml/ref/drop_type.sgml b/doc/src/sgml/ref/drop_type.sgml index 9de13068a7..c3ddfa5f42 100644 --- a/doc/src/sgml/ref/drop_type.sgml +++ b/doc/src/sgml/ref/drop_type.sgml @@ -86,8 +86,7 @@ DROP TYPE [ IF EXISTS ] name [, ... To remove the data type box: DROP TYPE box; - - + diff --git a/doc/src/sgml/ref/drop_user_mapping.sgml b/doc/src/sgml/ref/drop_user_mapping.sgml index 747d7cbd2e..de21bfe5d7 100644 --- a/doc/src/sgml/ref/drop_user_mapping.sgml +++ b/doc/src/sgml/ref/drop_user_mapping.sgml @@ -85,8 +85,7 @@ DROP USER MAPPING [ IF EXISTS ] FOR { user_namebob, server foo if it exists: DROP USER MAPPING IF EXISTS FOR bob SERVER foo; - - + diff --git a/doc/src/sgml/ref/drop_view.sgml b/doc/src/sgml/ref/drop_view.sgml index 5d7e413c0b..51b82664cb 100644 --- a/doc/src/sgml/ref/drop_view.sgml +++ b/doc/src/sgml/ref/drop_view.sgml @@ -86,8 +86,7 @@ DROP VIEW [ IF EXISTS ] name [, ... This command will remove the view called kinds: DROP VIEW kinds; - - + diff --git a/doc/src/sgml/ref/dropdb.sgml b/doc/src/sgml/ref/dropdb.sgml index 1aa76cdb57..e20bcdb53f 100644 --- a/doc/src/sgml/ref/dropdb.sgml +++ b/doc/src/sgml/ref/dropdb.sgml @@ -253,8 +253,7 @@ PostgreSQL documentation Database "demo" will be permanently deleted. Are you sure? (y/n) y DROP DATABASE demo; - - + diff --git a/doc/src/sgml/ref/droplang.sgml b/doc/src/sgml/ref/droplang.sgml index 0ad640b0b4..04c3a609e5 100644 --- a/doc/src/sgml/ref/droplang.sgml +++ b/doc/src/sgml/ref/droplang.sgml @@ -271,8 +271,7 @@ PostgreSQL documentation To remove the language pltcl: $ droplang pltcl dbname - - + diff --git a/doc/src/sgml/ref/dropuser.sgml b/doc/src/sgml/ref/dropuser.sgml index 3089a21954..c158103913 100644 --- a/doc/src/sgml/ref/dropuser.sgml +++ b/doc/src/sgml/ref/dropuser.sgml @@ -254,8 +254,7 @@ PostgreSQL documentation Role "joe" will be permanently removed. Are you sure? (y/n) y DROP ROLE joe; - - + diff --git a/doc/src/sgml/ref/ecpg-ref.sgml b/doc/src/sgml/ref/ecpg-ref.sgml index 2bbd476158..9c13e93a27 100644 --- a/doc/src/sgml/ref/ecpg-ref.sgml +++ b/doc/src/sgml/ref/ecpg-ref.sgml @@ -166,8 +166,7 @@ PostgreSQL documentation - - + @@ -253,8 +252,7 @@ PostgreSQL documentation ecpg prog1.pgc cc -I/usr/local/pgsql/include -c prog1.c cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg - - + diff --git a/doc/src/sgml/ref/end.sgml b/doc/src/sgml/ref/end.sgml index 85248b4c2f..b60cb2c48b 100644 --- a/doc/src/sgml/ref/end.sgml +++ b/doc/src/sgml/ref/end.sgml @@ -74,8 +74,7 @@ END [ WORK | TRANSACTION ] To commit the current transaction and make all changes permanent: END; - - + diff --git a/doc/src/sgml/ref/explain.sgml b/doc/src/sgml/ref/explain.sgml index 3d7d13c0c1..ce5e4dada2 100644 --- a/doc/src/sgml/ref/explain.sgml +++ b/doc/src/sgml/ref/explain.sgml @@ -159,7 +159,7 @@ ROLLBACK; materialized plans, respectively. The number of blocks shown for an upper-level node includes those used by all its child nodes. In text format, only non-zero values are printed. This parameter may only be - used with ANALYZE parameter. It defaults to + used with the ANALYZE parameter. It defaults to FALSE. diff --git a/doc/src/sgml/ref/fetch.sgml b/doc/src/sgml/ref/fetch.sgml index b78fed267b..cc49b6f0ce 100644 --- a/doc/src/sgml/ref/fetch.sgml +++ b/doc/src/sgml/ref/fetch.sgml @@ -111,8 +111,7 @@ FETCH [ direction [ FROM | IN ] ] < direction - - direction defines + direction defines the fetch direction and number of rows to fetch. It can be one of the following: @@ -266,16 +265,14 @@ FETCH [ direction [ FROM | IN ] ] < - - + count - - count is a + count is a possibly-signed integer constant, determining the location or number of rows to fetch. For FORWARD and BACKWARD cases, specifying a negative - + diff --git a/doc/src/sgml/ref/grant.sgml b/doc/src/sgml/ref/grant.sgml index 689aba5104..50020fa710 100644 --- a/doc/src/sgml/ref/grant.sgml +++ b/doc/src/sgml/ref/grant.sgml @@ -378,11 +378,13 @@ GRANT role_name [, ...] TO If WITH ADMIN OPTION is specified, the member can in turn grant membership in the role to others, and revoke membership - in the role as well. Without the admin option, ordinary users cannot do - that. However, - database superusers can grant or revoke membership in any role to anyone. - Roles having CREATEROLE privilege can grant or revoke - membership in any role that is not a superuser. + in the role as well. Without the admin option, ordinary users cannot + do that. A role is not considered to hold WITH ADMIN + OPTION on itself, but it may grant or revoke membership in + itself from a database session where the session user matches the + role. Database superusers can grant or revoke membership in any role + to anyone. Roles having CREATEROLE privilege can grant + or revoke membership in any role that is not a superuser. @@ -586,8 +588,7 @@ GRANT ALL PRIVILEGES ON kinds TO manuel; GRANT admins TO joe; - - + diff --git a/doc/src/sgml/ref/initdb.sgml b/doc/src/sgml/ref/initdb.sgml index d816c21c08..4a64d355e2 100644 --- a/doc/src/sgml/ref/initdb.sgml +++ b/doc/src/sgml/ref/initdb.sgml @@ -185,6 +185,15 @@ PostgreSQL documentation + + + + + Equivalent to . + + + + @@ -194,6 +203,17 @@ PostgreSQL documentation + + + + + + Sets the default text search configuration. + See for further information. + + + + diff --git a/doc/src/sgml/ref/insert.sgml b/doc/src/sgml/ref/insert.sgml index a5c0d5a0a6..6aae3396d2 100644 --- a/doc/src/sgml/ref/insert.sgml +++ b/doc/src/sgml/ref/insert.sgml @@ -312,8 +312,7 @@ WITH upd AS ( RETURNING * ) INSERT INTO employees_log SELECT *, current_timestamp FROM upd; - - + diff --git a/doc/src/sgml/ref/listen.sgml b/doc/src/sgml/ref/listen.sgml index 98091c2856..7287d3fc29 100644 --- a/doc/src/sgml/ref/listen.sgml +++ b/doc/src/sgml/ref/listen.sgml @@ -113,8 +113,7 @@ LISTEN channel LISTEN virtual; NOTIFY virtual; Asynchronous notification "virtual" received from server process with PID 8448. - - + diff --git a/doc/src/sgml/ref/lock.sgml b/doc/src/sgml/ref/lock.sgml index 9b464580aa..05acbc4f60 100644 --- a/doc/src/sgml/ref/lock.sgml +++ b/doc/src/sgml/ref/lock.sgml @@ -21,7 +21,7 @@ PostgreSQL documentation -LOCK [ TABLE ] [ ONLY ] name [, ...] [ IN lockmode MODE ] [ NOWAIT ] +LOCK [ TABLE ] [ ONLY ] name [ * ] [, ...] [ IN lockmode MODE ] [ NOWAIT ] where lockmode is one of: @@ -111,9 +111,11 @@ LOCK [ TABLE ] [ ONLY ] name [, ... The name (optionally schema-qualified) of an existing table to - lock. If ONLY is specified, only that table is - locked. If ONLY is not specified, the table and all - its descendant tables (if any) are locked. + lock. If ONLY is specified before the table name, only that + table is locked. If ONLY is not specified, the table and all + its descendant tables (if any) are locked. Optionally, * + can be specified after the table name to explicitly indicate that + descendant tables are included. @@ -222,8 +224,7 @@ DELETE FROM films_user_comments WHERE id IN (SELECT id FROM films WHERE rating < 5); DELETE FROM films WHERE rating < 5; COMMIT WORK; - - + diff --git a/doc/src/sgml/ref/notify.sgml b/doc/src/sgml/ref/notify.sgml index 330b2cd56d..4480706293 100644 --- a/doc/src/sgml/ref/notify.sgml +++ b/doc/src/sgml/ref/notify.sgml @@ -204,8 +204,7 @@ Asynchronous notification "virtual" with payload "This is the payload" received LISTEN foo; SELECT pg_notify('fo' || 'o', 'pay' || 'load'); Asynchronous notification "foo" with payload "payload" received from server process with PID 14728. - - + diff --git a/doc/src/sgml/ref/pg_basebackup.sgml b/doc/src/sgml/ref/pg_basebackup.sgml index 47dce43b19..2528004541 100644 --- a/doc/src/sgml/ref/pg_basebackup.sgml +++ b/doc/src/sgml/ref/pg_basebackup.sgml @@ -138,8 +138,7 @@ PostgreSQL documentation - - + @@ -230,8 +229,8 @@ PostgreSQL documentation the backup, this is only an approximation and may not end at exactly 100%. In particular, when WAL log is included in the backup, the total amount of data cannot be estimated in advance, and - in this case the progress report will only count towards the total - amount of data without WAL. + in this case the estimated target size will increase once it passes the + total estimate without WAL. When this is enabled, the backup will start by enumerating the size of @@ -324,7 +323,7 @@ PostgreSQL documentation This option is never essential, since - pg_bsaebackup will automatically prompt + pg_basebackup will automatically prompt for a password if the server demands password authentication. However, pg_basebackup will waste a connection attempt finding out that the server wants a password. diff --git a/doc/src/sgml/ref/pg_ctl-ref.sgml b/doc/src/sgml/ref/pg_ctl-ref.sgml index 10105e2524..07836e718f 100644 --- a/doc/src/sgml/ref/pg_ctl-ref.sgml +++ b/doc/src/sgml/ref/pg_ctl-ref.sgml @@ -519,8 +519,7 @@ PostgreSQL documentation running without fsync, use: $ pg_ctl -o "-F -p 5433" start - - + @@ -534,8 +533,7 @@ PostgreSQL documentation how the server shuts down: $ pg_ctl stop -m fast - - + @@ -564,8 +562,7 @@ PostgreSQL documentation To restart using port 5433, disabling fsync upon restart: $ pg_ctl -o "-F -p 5433" restart - - + diff --git a/doc/src/sgml/ref/pg_dump.sgml b/doc/src/sgml/ref/pg_dump.sgml index c24cc394d6..f5733b10c3 100644 --- a/doc/src/sgml/ref/pg_dump.sgml +++ b/doc/src/sgml/ref/pg_dump.sgml @@ -268,10 +268,7 @@ PostgreSQL documentation - - - - + @@ -681,7 +678,8 @@ PostgreSQL documentation Do not dump the contents of unlogged tables. This option has no effect on whether or not the table definitions (schema) are dumped; - it only suppresses dumping the table data. + it only suppresses dumping the table data. Data in unlogged tables + is always excluded when dumping from a standby server. @@ -1075,8 +1073,7 @@ CREATE DATABASE foo WITH TEMPLATE template0; $ pg_dump -t '"MixedCaseName"' mydb > mytab.sql - - + diff --git a/doc/src/sgml/ref/pg_restore.sgml b/doc/src/sgml/ref/pg_restore.sgml index be4851b657..be11d176cd 100644 --- a/doc/src/sgml/ref/pg_restore.sgml +++ b/doc/src/sgml/ref/pg_restore.sgml @@ -197,8 +197,7 @@ - - + @@ -286,8 +285,7 @@ if filtering switches such as : SELECT setseed(value); - - + TIME ZONE - - SET TIME ZONE value is an alias + SET TIME ZONE value is an alias for SET timezone TO value. The syntax SET TIME ZONE allows special syntax for the time zone specification. Here are examples of valid @@ -302,8 +298,7 @@ SET TIME ZONE 'PST8PDT'; Set the time zone for Italy: SET TIME ZONE 'Europe/Rome'; - - + diff --git a/doc/src/sgml/ref/set_transaction.sgml b/doc/src/sgml/ref/set_transaction.sgml index f864bbf6a6..e28a7e1cde 100644 --- a/doc/src/sgml/ref/set_transaction.sgml +++ b/doc/src/sgml/ref/set_transaction.sgml @@ -143,7 +143,7 @@ SET SESSION CHARACTERISTICS AS TRANSACTION transa transaction, the transaction may block when first acquiring its snapshot, after which it is able to run without the normal overhead of a SERIALIZABLE transaction and without any risk of - contributing to or being cancelled by a serialization failure. This mode + contributing to or being canceled by a serialization failure. This mode is well suited for long-running reports or backups. diff --git a/doc/src/sgml/ref/show.sgml b/doc/src/sgml/ref/show.sgml index ca26bb2687..4a6a3fc7fe 100644 --- a/doc/src/sgml/ref/show.sgml +++ b/doc/src/sgml/ref/show.sgml @@ -109,8 +109,7 @@ SHOW ALL - - + @@ -177,8 +176,7 @@ SHOW ALL; xmloption | content | Sets whether XML data in implicit parsing ... zero_damaged_pages | off | Continues processing past damaged page headers. (196 rows) - - + diff --git a/doc/src/sgml/ref/truncate.sgml b/doc/src/sgml/ref/truncate.sgml index 9f12ca4b3b..7b9c2f3012 100644 --- a/doc/src/sgml/ref/truncate.sgml +++ b/doc/src/sgml/ref/truncate.sgml @@ -21,7 +21,7 @@ PostgreSQL documentation -TRUNCATE [ TABLE ] [ ONLY ] name [, ... ] +TRUNCATE [ TABLE ] [ ONLY ] name [ * ] [, ... ] [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ] @@ -47,10 +47,12 @@ TRUNCATE [ TABLE ] [ ONLY ] name [, name - The name (optionally schema-qualified) of a table to be - truncated. If ONLY is specified, only that table is - truncated. If ONLY is not specified, the table and - all its descendant tables (if any) are truncated. + The name (optionally schema-qualified) of a table to truncate. + If ONLY is specified before the table name, only that table + is truncated. If ONLY is not specified, the table and all + its descendant tables (if any) are truncated. Optionally, * + can be specified after the table name to explicitly indicate that + descendant tables are included. @@ -206,8 +208,7 @@ TRUNCATE bigtable, fattable RESTART IDENTITY; TRUNCATE othertable CASCADE; - - + diff --git a/doc/src/sgml/ref/unlisten.sgml b/doc/src/sgml/ref/unlisten.sgml index ad3b9a12af..c6436829d6 100644 --- a/doc/src/sgml/ref/unlisten.sgml +++ b/doc/src/sgml/ref/unlisten.sgml @@ -111,8 +111,7 @@ Asynchronous notification "virtual" received from server process with PID 8448. UNLISTEN virtual; NOTIFY virtual; -- no NOTIFY event is received - - + diff --git a/doc/src/sgml/ref/update.sgml b/doc/src/sgml/ref/update.sgml index 5968db1f6f..0367522ce8 100644 --- a/doc/src/sgml/ref/update.sgml +++ b/doc/src/sgml/ref/update.sgml @@ -22,7 +22,7 @@ PostgreSQL documentation [ WITH [ RECURSIVE ] with_query [, ...] ] -UPDATE [ ONLY ] table [ [ AS ] alias ] +UPDATE [ ONLY ] table [ * ] [ [ AS ] alias ] SET { column = { expression | DEFAULT } | ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...] [ FROM from_list ] @@ -41,13 +41,6 @@ UPDATE [ ONLY ] table [ [ AS ] - - By default, UPDATE will update rows in the - specified table and all its subtables. If you wish to only update - the specific table mentioned, you must use the ONLY - clause. - - There are two ways to modify a table using information contained in other tables in the database: using sub-selects, or specifying @@ -97,6 +90,11 @@ UPDATE [ ONLY ] table [ [ AS ] The name (optionally schema-qualified) of the table to update. + If ONLY is specified before the table name, matching rows + are updated in the named table only. If ONLY is not + specified, matching rows are also updated in any tables inheriting from + the named table. Optionally, * can be specified after the + table name to explicitly indicate that descendant tables are included. @@ -348,8 +346,7 @@ COMMIT; c_films is currently positioned: UPDATE films SET kind = 'Dramatic' WHERE CURRENT OF c_films; - - + diff --git a/doc/src/sgml/ref/vacuum.sgml b/doc/src/sgml/ref/vacuum.sgml index 87283bca50..f05babc76a 100644 --- a/doc/src/sgml/ref/vacuum.sgml +++ b/doc/src/sgml/ref/vacuum.sgml @@ -254,8 +254,7 @@ CPU 0.07s/0.39u sec elapsed 1.56 sec. INFO: analyzing "public.onek" INFO: "onek": 36 pages, 1000 rows sampled, 1000 estimated total rows VACUUM - - + diff --git a/doc/src/sgml/ref/vacuumdb.sgml b/doc/src/sgml/ref/vacuumdb.sgml index e9022fe947..4effa4188a 100644 --- a/doc/src/sgml/ref/vacuumdb.sgml +++ b/doc/src/sgml/ref/vacuumdb.sgml @@ -369,8 +369,7 @@ PostgreSQL documentation bar of the table for the optimizer: $ vacuumdb --analyze --verbose --table 'foo(bar)' xyzzy - - + diff --git a/doc/src/sgml/ref/values.sgml b/doc/src/sgml/ref/values.sgml index 552c80cf06..1f0e9a8ba1 100644 --- a/doc/src/sgml/ref/values.sgml +++ b/doc/src/sgml/ref/values.sgml @@ -214,8 +214,7 @@ UPDATE employees SET salary = salary * v.increase SELECT * FROM machines WHERE ip_address IN (VALUES('192.168.0.1'::inet), ('192.168.0.10'), ('192.168.1.43')); - - + @@ -230,8 +229,7 @@ WHERE ip_address IN (VALUES('192.168.0.1'::inet), ('192.168.0.10'), ('192.168.1. Compatibility - - VALUES conforms to the SQL standard. + VALUES conforms to the SQL standard. LIMIT and OFFSET are PostgreSQL extensions; see also under . diff --git a/doc/src/sgml/regress.sgml b/doc/src/sgml/regress.sgml index 60250bb7a9..466b492d25 100644 --- a/doc/src/sgml/regress.sgml +++ b/doc/src/sgml/regress.sgml @@ -28,7 +28,7 @@ sequential mode for running the tests. The sequential method runs each test script alone, while the parallel method starts up multiple server processes to run groups - of tests in parallel. Parallel testing gives confidence that + of tests in parallel. Parallel testing adds confidence that interprocess communication and locking are working correctly. @@ -43,9 +43,7 @@ gmake check in the top-level directory. (Or you can change to src/test/regress and run the command there.) - This will first build several auxiliary files, such as - sample user-defined trigger functions, and then run the test driver - script. At the end you should see something like: + At the end you should see something like: ======================= @@ -58,25 +56,31 @@ gmake check failure represents a serious problem. + - Because this test method runs a temporary server, it will not work - when you are the root user (since the server will not start as root). - If you already did the build as root, you do not have to start all - over. Instead, make the regression test directory writable by - some other user, log in as that user, and restart the tests. - For example: - -root# chmod -R a+w src/test/regress -root# su - joeuser -joeuser$ cd top-level build directory -joeuser$ gmake check - - (The only possible security risk here is that other - users might be able to alter the regression test results behind - your back. Use common sense when managing user permissions.) + This test method starts a temporary server, which is configured to accept + any connection originating 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 gmake + 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. + + - Alternatively, run the tests after installation. + 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 + root. Recommended procedure is not to do the build as root, or else to + perform testing after completing the installation. @@ -113,9 +117,9 @@ gmake MAX_CONNECTIONS=10 check Running the Tests Against an Existing Installation - To run the tests after installation)]]>, + To run the tests after installation (see ), initialize a data area and start the - server, , ]]> then type: + server as explained in , then type: gmake installcheck @@ -125,73 +129,89 @@ gmake installcheck-parallel The tests will expect to contact the server at the local host and the default port number, unless directed otherwise by PGHOST and - PGPORT environment variables. - - - - The source distribution also contains regression tests for the optional - procedural languages and for some of the contrib modules. - At present, these tests can be used only against an already-installed - server. To run the tests for all procedural languages that have been - built and installed, change to the src/pl directory of the - build tree and type: - -gmake installcheck - - You can also do this in any of the subdirectories of src/pl - to run tests for just one procedural language. To run the tests for all - contrib modules that have them, change to the - contrib directory of the build tree and type: - -gmake installcheck - - The contrib modules must have been built and installed first. - You can also do this in a subdirectory of contrib to run - the tests for just one module. + PGPORT environment variables. The tests will be run in a + database named regression; any existing database by this name + will be dropped. + The tests will also transiently create some cluster-wide objects, such as + user identities named regressuserN. - Testing Hot Standby + Additional Test Suites - The source distribution also contains regression tests of the static - behaviour of Hot Standby. These tests require a running primary server - and a running standby server that is accepting new WAL changes from the - primary using either file-based log shipping or streaming replication. - Those servers are not automatically created for you, nor is the setup - documented here. Please check the various sections of the documentation already - devoted to the required commands and related issues. + The gmake check and gmake installcheck commands + run only the core regression tests, which test built-in + functionality of the PostgreSQL server. The source + distribution also contains additional test suites, most of them having + to do with add-on functionality such as optional procedural languages. - First create a database called "regression" on the primary. + To run all test suites applicable to the modules that have been selected + to be built, including the core tests, type one of these commands at the + top of the build tree: -psql -h primary -c "CREATE DATABASE regression" - - Next, run a preparatory script on the primary in the regression database: - src/test/regress/sql/hs_primary_setup.sql, and - allow for the changes to propagate to the standby, for example - -psql -h primary -f src/test/regress/sql/hs_primary_setup.sql regression - - Now confirm that the default connection for the tester is the standby - server under test and then run the standbycheck target from the regression - directory: - -cd src/test/regress -gmake standbycheck +gmake check-world +gmake installcheck-world + These commands run the tests using temporary servers or an + already-installed server, respectively, just as previously explained + for gmake check and gmake installcheck. Other + considerations are the same as previously explained for each method. + Note that gmake check-world builds a separate temporary + installation tree for each tested module, so it requires a great deal + more time and disk space than gmake installcheck-world. - Some extreme behaviours can also be generated on the primary using the - script: src/test/regress/sql/hs_primary_extremes.sql - to allow the behaviour of the standby to be tested. + Alternatively, you can run individual test suites by typing + gmake check or gmake installcheck in the appropriate + subdirectory of the build tree. Keep in mind that gmake + installcheck assumes you've installed the relevant module(s), not + only the core server. - Additional automated testing may be available in later releases. + The additional tests that can be invoked this way include: + + + + + + Regression tests for optional procedural languages (other than + PL/pgSQL, which is tested by the core tests). + These are located under src/pl. + + + + + Regression tests for contrib modules, + located under contrib. + Not all contrib modules have tests. + + + + + Regression tests for the ECPG interface library, + located in src/interfaces/ecpg/test. + + + + + Tests stressing behavior of concurrent sessions, + located in src/test/isolation. + + + + + + When using installcheck mode, these tests will destroy any + existing databases named pl_regression, + contrib_regression, isolationtest, + regress1, or connectdb, as well as + regression. @@ -199,7 +219,7 @@ gmake standbycheck Locale and Encoding - By default, the tests against a temporary installation use the + By default, tests using a temporary installation use the locale defined in the current environment and the corresponding database encoding as determined by initdb. It can be useful to test different locales by setting the appropriate @@ -232,8 +252,9 @@ gmake check LANG=C ENCODING=EUC_JP - The encoding can be set for tests against a temporary or an - existing installation. + The database encoding can be set for tests against either a temporary or + an existing installation, though in the latter case it must be + compatible with the installation's locale. @@ -241,7 +262,7 @@ gmake check LANG=C ENCODING=EUC_JP Extra Tests - The regression test suite contains a few test files that are not + The core regression test suite contains a few test files that are not run by default, because they might be platform-dependent or take a very long time to run. You can run these or other extra test files by setting the variable EXTRA_TESTS. For @@ -257,6 +278,52 @@ gmake check EXTRA_TESTS=collate.linux.utf8 LANG=en_US.utf8 platforms, and only when run in a database that uses UTF-8 encoding. + + + Testing Hot Standby + + + The source distribution also contains regression tests for the static + behavior of Hot Standby. These tests require a running primary server + and a running standby server that is accepting new WAL changes from the + primary (using either file-based log shipping or streaming replication). + Those servers are not automatically created for you, nor is replication + setup documented here. Please check the various sections of the + documentation devoted to the required commands and related issues. + + + + To run the Hot Standby tests, first create a database + called regression on the primary: + +psql -h primary -c "CREATE DATABASE regression" + + Next, run the preparatory script + src/test/regress/sql/hs_primary_setup.sql + on the primary in the regression database, for example: + +psql -h primary -f src/test/regress/sql/hs_primary_setup.sql regression + + Allow these changes to propagate to the standby. + + + + Now arrange for the default database connection to be to the standby + server under test (for example, by setting the PGHOST and + PGPORT environment variables). + Finally, run gmake standbycheck in the regression directory: + +cd src/test/regress +gmake standbycheck + + + + + Some extreme behaviors can also be generated on the primary using the + script src/test/regress/sql/hs_primary_extremes.sql + to allow the behavior of the standby to be tested. + + @@ -285,8 +352,10 @@ gmake check EXTRA_TESTS=collate.linux.utf8 LANG=en_US.utf8 file against the reference outputs stored in the src/test/regress/expected directory. Any differences are saved for your inspection in - src/test/regress/regression.diffs. (Or you - can run diff yourself, if you prefer.) + src/test/regress/regression.diffs. + (When running a test suite other than the core tests, these files + of course appear in the relevant subdirectory, + not src/test/regress.) @@ -328,7 +397,7 @@ gmake check EXTRA_TESTS=collate.linux.utf8 LANG=en_US.utf8 To run the tests in a different locale when using the temporary-installation method, pass the appropriate locale-related environment variables on - the make command line, for example: + the gmake command line, for example: gmake check LANG=de_DE.utf8 @@ -348,7 +417,7 @@ gmake check NO_LOCALE=1 - In general, it is nevertheless advisable to try to run the + In general, it is advisable to try to run the regression tests in the locale setup that is wanted for production use, as this will exercise the locale- and encoding-related code portions that will actually be used in @@ -382,7 +451,7 @@ gmake check NO_LOCALE=1 results involving mathematical functions of double precision columns have been observed. The float8 and geometry tests are particularly prone to small differences - across platforms, or even with different compiler optimization setting. + across platforms, or even with different compiler optimization settings. Human eyeball comparison is needed to determine the real significance of these differences which are usually 10 places to the right of the decimal point. @@ -444,14 +513,19 @@ exclusion of those that don't. If the errors test results in a server crash at the select infinite_recurse() command, it means that the platform's limit on process stack size is smaller than the - ]]> - max_stack_depth]]> - parameter indicates. This + parameter indicates. This can be fixed by running the server under a higher stack size limit (4MB is recommended with the default value of max_stack_depth). If you are unable to do that, an alternative is to reduce the value of max_stack_depth. + + + On platforms supporting getrlimit(), the server should + automatically choose a safe value of max_stack_depth; + so unless you've manually overridden this setting, a failure of this + kind is a reportable bug. + @@ -459,7 +533,7 @@ exclusion of those that don't. The random test script is intended to produce - random results. In rare cases, this causes the random regression + random results. In very rare cases, this causes that regression test to fail. Typing: diff results/random.out expected/random.out @@ -468,6 +542,18 @@ diff results/random.out expected/random.out not worry unless the random test fails repeatedly. + + + Configuration Parameters + + + When running the tests against an existing installation, some non-default + parameter settings could cause the tests to fail. For example, changing + parameters such as enable_seqscan or + enable_indexscan could cause plan changes that would + affect the results of tests that use EXPLAIN. + + diff --git a/doc/src/sgml/release-7.4.sgml b/doc/src/sgml/release-7.4.sgml index ee8184b16c..2ad8b5fd42 100644 --- a/doc/src/sgml/release-7.4.sgml +++ b/doc/src/sgml/release-7.4.sgml @@ -27,7 +27,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.26, - see the release notes for 7.4.26. + see . @@ -161,7 +161,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.26, - see the release notes for 7.4.26. + see . @@ -305,7 +305,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.26, - see the release notes for 7.4.26. + see . @@ -418,7 +418,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.26, - see the release notes for 7.4.26. + see . @@ -465,7 +465,7 @@ - This fix prevents a PANIC if a VACUUM FULL is cancelled + This fix prevents a PANIC if a VACUUM FULL is canceled after it's already committed its tuple movements, as well as transient errors if a plain VACUUM is interrupted after having truncated the table. @@ -540,7 +540,7 @@ However, if you have any hash indexes on interval columns, you must REINDEX them after updating to 7.4.26. Also, if you are upgrading from a version earlier than 7.4.11, - see the release notes for 7.4.11. + see . @@ -668,7 +668,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.11, - see the release notes for 7.4.11. + see . @@ -748,7 +748,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.11, - see the release notes for 7.4.11. + see . @@ -834,7 +834,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.11, - see the release notes for 7.4.11. + see . @@ -918,7 +918,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.11, - see the release notes for 7.4.11. + see . @@ -994,7 +994,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.11, - see the release notes for 7.4.11. + see . @@ -1048,7 +1048,7 @@ A dump/restore is not required for those running 7.4.X. However, if you are upgrading from a version earlier than 7.4.11, - see the release notes for 7.4.11. + see . @@ -1149,7 +1149,7 @@ - An explictly casted constant would be shown incorrectly. This could + An explicitly casted constant would be shown incorrectly. This could for example lead to corruption of a view definition during dump and reload. @@ -1193,8 +1193,8 @@ A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, see the release - notes for 7.4.11. + if you are upgrading from a version earlier than 7.4.11, + see . @@ -1346,8 +1346,8 @@ A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, see the release - notes for 7.4.11. + if you are upgrading from a version earlier than 7.4.11, + see . @@ -1423,8 +1423,8 @@ A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, see the release - notes for 7.4.11. + if you are upgrading from a version earlier than 7.4.11, + see . @@ -1494,8 +1494,8 @@ A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, see the release - notes for 7.4.11. + if you are upgrading from a version earlier than 7.4.11, + see . @@ -1564,8 +1564,8 @@ A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, see the release - notes for 7.4.11. + if you are upgrading from a version earlier than 7.4.11, + see . @@ -1653,8 +1653,8 @@ A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, see the release - notes for 7.4.11. + if you are upgrading from a version earlier than 7.4.11, + see . @@ -1701,8 +1701,8 @@ ANYARRAY A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, see the release - notes for 7.4.11. + if you are upgrading from a version earlier than 7.4.11, + see . @@ -1807,8 +1807,8 @@ Fuhr) A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.11, see the release - notes for 7.4.11. + if you are upgrading from a version earlier than 7.4.11, + see . @@ -1870,8 +1870,8 @@ and isinf during configure (Tom) A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.8, see the release - notes for 7.4.8. + if you are upgrading from a version earlier than 7.4.8, + see . Also, you might need to REINDEX indexes on textual columns after updating, if you are affected by the locale or plperl issues described below. @@ -1937,8 +1937,8 @@ what's actually returned by the query (Joe) A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.8, see the release - notes for 7.4.8. + if you are upgrading from a version earlier than 7.4.8, + see . @@ -1990,8 +1990,8 @@ table has been dropped A dump/restore is not required for those running 7.4.X. However, - if you are upgrading from a version earlier than 7.4.8, see the release - notes for 7.4.8. + if you are upgrading from a version earlier than 7.4.8, + see . diff --git a/doc/src/sgml/release-8.0.sgml b/doc/src/sgml/release-8.0.sgml index 469a76d893..299c34e0f0 100644 --- a/doc/src/sgml/release-8.0.sgml +++ b/doc/src/sgml/release-8.0.sgml @@ -27,7 +27,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.22, - see the release notes for 8.0.22. + see . @@ -231,7 +231,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.22, - see the release notes for 8.0.22. + see . @@ -391,7 +391,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.22, - see the release notes for 8.0.22. + see . @@ -562,7 +562,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.22, - see the release notes for 8.0.22. + see . @@ -609,7 +609,7 @@ - This fix prevents a PANIC if a VACUUM FULL is cancelled + This fix prevents a PANIC if a VACUUM FULL is canceled after it's already committed its tuple movements, as well as transient errors if a plain VACUUM is interrupted after having truncated the table. @@ -719,7 +719,7 @@ However, if you have any hash indexes on interval columns, you must REINDEX them after updating to 8.0.22. Also, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. + see . @@ -881,7 +881,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. + see . @@ -961,7 +961,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. + see . @@ -1047,7 +1047,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. + see . @@ -1158,7 +1158,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. + see . @@ -1292,7 +1292,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. + see . @@ -1346,7 +1346,7 @@ A dump/restore is not required for those running 8.0.X. However, if you are upgrading from a version earlier than 8.0.6, - see the release notes for 8.0.6. + see . @@ -1539,7 +1539,7 @@ - An explictly casted constant would be shown incorrectly. This could + An explicitly casted constant would be shown incorrectly. This could for example lead to corruption of a view definition during dump and reload. @@ -1592,8 +1592,8 @@ A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. + if you are upgrading from a version earlier than 8.0.6, + see . @@ -1798,8 +1798,8 @@ A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. + if you are upgrading from a version earlier than 8.0.6, + see . @@ -1907,8 +1907,8 @@ A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. + if you are upgrading from a version earlier than 8.0.6, + see . @@ -1983,8 +1983,8 @@ A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. + if you are upgrading from a version earlier than 8.0.6, + see . @@ -2026,8 +2026,8 @@ A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. + if you are upgrading from a version earlier than 8.0.6, + see . @@ -2096,8 +2096,8 @@ A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. + if you are upgrading from a version earlier than 8.0.6, + see . @@ -2215,8 +2215,8 @@ A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. + if you are upgrading from a version earlier than 8.0.6, + see . @@ -2272,8 +2272,8 @@ Wieland) A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. + if you are upgrading from a version earlier than 8.0.6, + see . @@ -2385,8 +2385,8 @@ Fuhr) A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.6, see the release - notes for 8.0.6. + if you are upgrading from a version earlier than 8.0.6, + see . @@ -2484,8 +2484,8 @@ and isinf during configure (Tom) A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.3, see the release - notes for 8.0.3. + if you are upgrading from a version earlier than 8.0.3, + see . Also, you might need to REINDEX indexes on textual columns after updating, if you are affected by the locale or plperl issues described below. @@ -2569,8 +2569,8 @@ what's actually returned by the query (Joe) A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.3, see the release - notes for 8.0.3. + if you are upgrading from a version earlier than 8.0.3, + see . @@ -2651,8 +2651,8 @@ to subquery results A dump/restore is not required for those running 8.0.X. However, - if you are upgrading from a version earlier than 8.0.3, see the release - notes for 8.0.3. + if you are upgrading from a version earlier than 8.0.3, + see . diff --git a/doc/src/sgml/release-8.1.sgml b/doc/src/sgml/release-8.1.sgml index 4e1a0c5dd0..0cb5587e9b 100644 --- a/doc/src/sgml/release-8.1.sgml +++ b/doc/src/sgml/release-8.1.sgml @@ -27,7 +27,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.18, - see the release notes for 8.1.18. + see . @@ -246,7 +246,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.18, - see the release notes for 8.1.18. + see . @@ -458,7 +458,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.18, - see the release notes for 8.1.18. + see . @@ -612,7 +612,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.18, - see the release notes for 8.1.18. + see . @@ -802,7 +802,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.18, - see the release notes for 8.1.18. + see . @@ -849,7 +849,7 @@ - This fix prevents a PANIC if a VACUUM FULL is cancelled + This fix prevents a PANIC if a VACUUM FULL is canceled after it's already committed its tuple movements, as well as transient errors if a plain VACUUM is interrupted after having truncated the table. @@ -985,7 +985,7 @@ However, if you have any hash indexes on interval columns, you must REINDEX them after updating to 8.1.18. Also, if you are upgrading from a version earlier than 8.1.15, - see the release notes for 8.1.15. + see . @@ -1147,7 +1147,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.15, - see the release notes for 8.1.15. + see . @@ -1270,7 +1270,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.15, - see the release notes for 8.1.15. + see . @@ -1390,7 +1390,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. Also, if you were running a previous + see . Also, if you were running a previous 8.1.X release, it is recommended to REINDEX all GiST indexes after the upgrade. @@ -1542,7 +1542,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -1718,7 +1718,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -1785,7 +1785,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -1991,7 +1991,7 @@ - An explictly casted constant would be shown incorrectly. This could + An explicitly casted constant would be shown incorrectly. This could for example lead to corruption of a view definition during dump and reload. @@ -2045,7 +2045,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -2287,7 +2287,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -2409,7 +2409,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -2499,7 +2499,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -2542,7 +2542,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -2643,7 +2643,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -2793,7 +2793,7 @@ A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -2871,7 +2871,7 @@ compilers (Hiroshi Saito) A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -3025,7 +3025,7 @@ documented (Tom) A dump/restore is not required for those running 8.1.X. However, if you are upgrading from a version earlier than 8.1.2, - see the release notes for 8.1.2. + see . @@ -4203,7 +4203,7 @@ psql -t -f fixseq.sql db1 | psql -e db1 While the statement_timeout configuration parameter allows a query taking more than a certain amount of - time to be cancelled, the NOWAIT option allows a + time to be canceled, the NOWAIT option allows a query to be canceled as soon as a SELECT ... FOR UPDATE/SHARE command cannot immediately acquire a row lock. diff --git a/doc/src/sgml/release-8.2.sgml b/doc/src/sgml/release-8.2.sgml index 0a9ee5031a..d1881fdf94 100644 --- a/doc/src/sgml/release-8.2.sgml +++ b/doc/src/sgml/release-8.2.sgml @@ -1,6 +1,541 @@ + + Release 8.2.23 + + + Release Date + 2011-12-05 + + + + This release contains a variety of fixes from 8.2.22. + For information about new features in the 8.2 major release, see + . + + + + This is expected to be the last PostgreSQL release + in the 8.2.X series. Users are encouraged to update to a newer + release branch soon. + + + + Migration to Version 8.2.23 + + + A dump/restore is not required for those running 8.2.X. + + + + However, a longstanding error was discovered in the definition of the + information_schema.referential_constraints view. If you + rely on correct results from that view, you should replace its + definition as explained in the first changelog item below. + + + + Also, if you are upgrading from a version earlier than 8.2.14, + see . + + + + + + Changes + + + + + + Fix bugs in information_schema.referential_constraints view + (Tom Lane) + + + + This view was being insufficiently careful about matching the + foreign-key constraint to the depended-on primary or unique key + constraint. That could result in failure to show a foreign key + constraint at all, or showing it multiple times, or claiming that it + depends on a different constraint than the one it really does. + + + + Since the view definition is installed by initdb, + merely upgrading will not fix the problem. If you need to fix this + in an existing installation, you can (as a superuser) drop the + information_schema schema then re-create it by sourcing + SHAREDIR/information_schema.sql. + (Run pg_config --sharedir if you're uncertain where + SHAREDIR is.) This must be repeated in each database + to be fixed. + + + + + + Fix TOAST-related data corruption during CREATE TABLE dest AS + SELECT * FROM src or INSERT INTO dest SELECT * FROM src + (Tom Lane) + + + + If a table has been modified by ALTER TABLE ADD COLUMN, + attempts to copy its data verbatim to another table could produce + corrupt results in certain corner cases. + The problem can only manifest in this precise form in 8.4 and later, + but we patched earlier versions as well in case there are other code + paths that could trigger the same bug. + + + + + + Fix race condition during toast table access from stale syscache entries + (Tom Lane) + + + + The typical symptom was transient errors like missing chunk + number 0 for toast value NNNNN in pg_toast_2619, where the cited + toast table would always belong to a system catalog. + + + + + + Improve locale support in money type's input and output + (Tom Lane) + + + + Aside from not supporting all standard + lc_monetary + formatting options, the input and output functions were inconsistent, + meaning there were locales in which dumped money values could + not be re-read. + + + + + + Don't let transform_null_equals + affect CASE foo WHEN NULL ... constructs + (Heikki Linnakangas) + + + + transform_null_equals is only supposed to affect + foo = NULL expressions written directly by the user, not + equality checks generated internally by this form of CASE. + + + + + + Change foreign-key trigger creation order to better support + self-referential foreign keys (Tom Lane) + + + + For a cascading foreign key that references its own table, a row update + will fire both the ON UPDATE trigger and the + CHECK trigger as one event. The ON UPDATE + trigger must execute first, else the CHECK will check a + non-final state of the row and possibly throw an inappropriate error. + However, the firing order of these triggers is determined by their + names, which generally sort in creation order since the triggers have + auto-generated names following the convention + RI_ConstraintTrigger_NNNN. A proper fix would require + modifying that convention, which we will do in 9.2, but it seems risky + to change it in existing releases. So this patch just changes the + creation order of the triggers. Users encountering this type of error + should drop and re-create the foreign key constraint to get its + triggers into the right order. + + + + + + Preserve blank lines within commands in psql's command + history (Robert Haas) + + + + The former behavior could cause problems if an empty line was removed + from within a string literal, for example. + + + + + + Use the preferred version of xsubpp to build PL/Perl, + not necessarily the operating system's main copy + (David Wheeler and Alex Hunsaker) + + + + + + Honor query cancel interrupts promptly in pgstatindex() + (Robert Haas) + + + + + + Ensure VPATH builds properly install all server header files + (Peter Eisentraut) + + + + + + Shorten file names reported in verbose error messages (Peter Eisentraut) + + + + Regular builds have always reported just the name of the C file + containing the error message call, but VPATH builds formerly + reported an absolute path name. + + + + + + Fix interpretation of Windows timezone names for Central America + (Tom Lane) + + + + Map Central America Standard Time to CST6, not + CST6CDT, because DST is generally not observed anywhere in + Central America. + + + + + + Update time zone data files to tzdata release 2011n + for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa; + also historical corrections for Alaska and British East Africa. + + + + + + + + + + Release 8.2.22 + + + Release Date + 2011-09-26 + + + + This release contains a variety of fixes from 8.2.21. + For information about new features in the 8.2 major release, see + . + + + + The PostgreSQL community will stop releasing updates + for the 8.2.X release series in December 2011. + Users are encouraged to update to a newer release branch soon. + + + + Migration to Version 8.2.22 + + + A dump/restore is not required for those running 8.2.X. + However, if you are upgrading from a version earlier than 8.2.14, + see . + + + + + + Changes + + + + + + Fix multiple bugs in GiST index page split processing (Heikki + Linnakangas) + + + + The probability of occurrence was low, but these could lead to index + corruption. + + + + + + Avoid possibly accessing off the end of memory in ANALYZE + (Noah Misch) + + + + This fixes a very-low-probability server crash scenario. + + + + + + Fix race condition in relcache init file invalidation (Tom Lane) + + + + There was a window wherein a new backend process could read a stale init + file but miss the inval messages that would tell it the data is stale. + The result would be bizarre failures in catalog accesses, typically + could not read block 0 in file ... later during startup. + + + + + + Fix memory leak at end of a GiST index scan (Tom Lane) + + + + Commands that perform many separate GiST index scans, such as + verification of a new GiST-based exclusion constraint on a table + already containing many rows, could transiently require large amounts of + memory due to this leak. + + + + + + Fix performance problem when constructing a large, lossy bitmap + (Tom Lane) + + + + + + Fix array- and path-creating functions to ensure padding bytes are + zeroes (Tom Lane) + + + + This avoids some situations where the planner will think that + semantically-equal constants are not equal, resulting in poor + optimization. + + + + + + Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane) + + + + This could lead to loss of committed transactions after a server crash. + + + + + + Fix dump bug for VALUES in a view (Tom Lane) + + + + + + Disallow SELECT FOR UPDATE/SHARE on sequences (Tom Lane) + + + + This operation doesn't work as expected and can lead to failures. + + + + + + Defend against integer overflow when computing size of a hash table (Tom + Lane) + + + + + + Fix portability bugs in use of credentials control messages for + peer authentication (Tom Lane) + + + + + + Fix typo in pg_srand48 seed initialization (Andres Freund) + + + + This led to failure to use all bits of the provided seed. This function + is not used on most platforms (only those without srandom), + and the potential security exposure from a less-random-than-expected + seed seems minimal in any case. + + + + + + Avoid integer overflow when the sum of LIMIT and + OFFSET values exceeds 2^63 (Heikki Linnakangas) + + + + + + Add overflow checks to int4 and int8 versions of + generate_series() (Robert Haas) + + + + + + Fix trailing-zero removal in to_char() (Marti Raudsepp) + + + + In a format with FM and no digit positions + after the decimal point, zeroes to the left of the decimal point could + be removed incorrectly. + + + + + + Fix pg_size_pretty() to avoid overflow for inputs close to + 2^63 (Tom Lane) + + + + + + Fix psql's counting of script file line numbers during + COPY from a different file (Tom Lane) + + + + + + Fix pg_restore's direct-to-database mode for + standard_conforming_strings (Tom Lane) + + + + pg_restore could emit incorrect commands when restoring + directly to a database server from an archive file that had been made + with standard_conforming_strings set to on. + + + + + + Fix write-past-buffer-end and memory leak in libpq's + LDAP service lookup code (Albe Laurenz) + + + + + + In libpq, avoid failures when using nonblocking I/O + and an SSL connection (Martin Pihlak, Tom Lane) + + + + + + Improve libpq's handling of failures during connection startup + (Tom Lane) + + + + In particular, the response to a server report of fork() + failure during SSL connection startup is now saner. + + + + + + Make ecpglib write double values with 15 digits + precision (Akira Kurosawa) + + + + + + Apply upstream fix for blowfish signed-character bug (CVE-2011-2483) + (Tom Lane) + + + + contrib/pg_crypto's blowfish encryption code could give + wrong results on platforms where char is signed (which is most), + leading to encrypted passwords being weaker than they should be. + + + + + + Fix memory leak in contrib/seg (Heikki Linnakangas) + + + + + + Fix pgstatindex() to give consistent results for empty + indexes (Tom Lane) + + + + + + Allow building with perl 5.14 (Alex Hunsaker) + + + + + + Update configure script's method for probing existence of system + functions (Tom Lane) + + + + The version of autoconf we used in 8.3 and 8.2 could be fooled by + compilers that perform link-time optimization. + + + + + + Fix assorted issues with build and install file paths containing spaces + (Tom Lane) + + + + + + Update time zone data files to tzdata release 2011i + for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan. + + + + + + + + Release 8.2.21 @@ -21,7 +556,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.14, - see the release notes for 8.2.14. + see . @@ -153,7 +688,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.14, - see the release notes for 8.2.14. + see . @@ -285,7 +820,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.14, - see the release notes for 8.2.14. + see . @@ -529,7 +1064,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.14, - see the release notes for 8.2.14. + see . @@ -815,7 +1350,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.14, - see the release notes for 8.2.14. + see . @@ -1016,7 +1551,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.14, - see the release notes for 8.2.14. + see . @@ -1287,7 +1822,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.14, - see the release notes for 8.2.14. + see . @@ -1334,7 +1869,7 @@ - This fix prevents a PANIC if a VACUUM FULL is cancelled + This fix prevents a PANIC if a VACUUM FULL is canceled after it's already committed its tuple movements, as well as transient errors if a plain VACUUM is interrupted after having truncated the table. @@ -1533,7 +2068,7 @@ However, if you have any hash indexes on interval columns, you must REINDEX them after updating to 8.2.14. Also, if you are upgrading from a version earlier than 8.2.11, - see the release notes for 8.2.11. + see . @@ -1761,7 +2296,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.11, - see the release notes for 8.2.11. + see . @@ -1927,7 +2462,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.11, - see the release notes for 8.2.11. + see . @@ -2106,7 +2641,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.7, - see the release notes for 8.2.7. Also, if you were running a previous + see . Also, if you were running a previous 8.2.X release, it is recommended to REINDEX all GiST indexes after the upgrade. @@ -2290,7 +2825,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.7, - see the release notes for 8.2.7. + see . @@ -2522,7 +3057,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.7, - see the release notes for 8.2.7. + see . @@ -2589,7 +3124,7 @@ A dump/restore is not required for those running 8.2.X. However, if you are upgrading from a version earlier than 8.2.7, - see the release notes for 8.2.7. + see . @@ -3009,7 +3544,7 @@ - An explictly casted constant would be shown incorrectly. This could + An explicitly casted constant would be shown incorrectly. This could for example lead to corruption of a view definition during dump and reload. diff --git a/doc/src/sgml/release-8.3.sgml b/doc/src/sgml/release-8.3.sgml index bccc141a54..3ce96f1f2a 100644 --- a/doc/src/sgml/release-8.3.sgml +++ b/doc/src/sgml/release-8.3.sgml @@ -1,6 +1,1959 @@ + + Release 8.3.23 + + + Release Date + 2013-02-07 + + + + This release contains a variety of fixes from 8.3.22. + For information about new features in the 8.3 major release, see + . + + + + This is expected to be the last PostgreSQL release + in the 8.3.X series. Users are encouraged to update to a newer + release branch soon. + + + + Migration to Version 8.3.23 + + + A dump/restore is not required for those running 8.3.X. + + + + However, if you are upgrading from a version earlier than 8.3.17, + see . + + + + + + Changes + + + + + + Prevent execution of enum_recv from SQL (Tom Lane) + + + + The function was misdeclared, allowing a simple SQL command to crash the + server. In principle an attacker might be able to use it to examine the + contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP) + for reporting this issue. (CVE-2013-0255) + + + + + + Fix SQL grammar to allow subscripting or field selection from a + sub-SELECT result (Tom Lane) + + + + + + Protect against race conditions when scanning + pg_tablespace (Stephen Frost, Tom Lane) + + + + CREATE DATABASE and DROP DATABASE could + misbehave if there were concurrent updates of + pg_tablespace entries. + + + + + + Prevent DROP OWNED from trying to drop whole databases or + tablespaces (Álvaro Herrera) + + + + For safety, ownership of these objects must be reassigned, not dropped. + + + + + + Prevent misbehavior when a RowExpr or XmlExpr + is parse-analyzed twice (Andres Freund, Tom Lane) + + + + This mistake could be user-visible in contexts such as + CREATE TABLE LIKE INCLUDING INDEXES. + + + + + + Improve defenses against integer overflow in hashtable sizing + calculations (Jeff Davis) + + + + + + Ensure that non-ASCII prompt strings are translated to the correct + code page on Windows (Alexander Law, Noah Misch) + + + + This bug affected psql and some other client programs. + + + + + + Fix possible crash in psql's \? command + when not connected to a database (Meng Qingzhong) + + + + + + Fix one-byte buffer overrun in libpq's + PQprintTuples (Xi Wang) + + + + This ancient function is not used anywhere by + PostgreSQL itself, but it might still be used by some + client code. + + + + + + Rearrange configure's tests for supplied functions so it is not + fooled by bogus exports from libedit/libreadline (Christoph Berg) + + + + + + Ensure Windows build number increases over time (Magnus Hagander) + + + + + + Make pgxs build executables with the right + .exe suffix when cross-compiling for Windows + (Zoltan Boszormenyi) + + + + + + Add new timezone abbreviation FET (Tom Lane) + + + + This is now used in some eastern-European time zones. + + + + + + + + + + Release 8.3.22 + + + Release Date + 2012-12-06 + + + + This release contains a variety of fixes from 8.3.21. + For information about new features in the 8.3 major release, see + . + + + + The PostgreSQL community will stop releasing updates + for the 8.3.X release series in February 2013. + Users are encouraged to update to a newer release branch soon. + + + + Migration to Version 8.3.22 + + + A dump/restore is not required for those running 8.3.X. + + + + However, if you are upgrading from a version earlier than 8.3.17, + see . + + + + + + Changes + + + + + + Fix multiple bugs associated with CREATE INDEX + CONCURRENTLY (Andres Freund, Tom Lane) + + + + Fix CREATE INDEX CONCURRENTLY to use + in-place updates when changing the state of an index's + pg_index row. This prevents race conditions that could + cause concurrent sessions to miss updating the target index, thus + resulting in corrupt concurrently-created indexes. + + + + Also, fix various other operations to ensure that they ignore + invalid indexes resulting from a failed CREATE INDEX + CONCURRENTLY command. The most important of these is + VACUUM, because an auto-vacuum could easily be launched + on the table before corrective action can be taken to fix or remove + the invalid index. + + + + + + Avoid corruption of internal hash tables when out of memory + (Hitoshi Harada) + + + + + + Fix planning of non-strict equivalence clauses above outer joins + (Tom Lane) + + + + The planner could derive incorrect constraints from a clause equating + a non-strict construct to something else, for example + WHERE COALESCE(foo, 0) = 0 + when foo is coming from the nullable side of an outer join. + + + + + + Improve planner's ability to prove exclusion constraints from + equivalence classes (Tom Lane) + + + + + + Fix partial-row matching in hashed subplans to handle cross-type cases + correctly (Tom Lane) + + + + This affects multicolumn NOT IN subplans, such as + WHERE (a, b) NOT IN (SELECT x, y FROM ...) + when for instance b and y are int4 + and int8 respectively. This mistake led to wrong answers + or crashes depending on the specific datatypes involved. + + + + + + Acquire buffer lock when re-fetching the old tuple for an + AFTER ROW UPDATE/DELETE trigger (Andres Freund) + + + + In very unusual circumstances, this oversight could result in passing + incorrect data to the precheck logic for a foreign-key enforcement + trigger. That could result in a crash, or in an incorrect decision + about whether to fire the trigger. + + + + + + Fix REASSIGN OWNED to handle grants on tablespaces + (Álvaro Herrera) + + + + + + Ignore incorrect pg_attribute entries for system + columns for views (Tom Lane) + + + + Views do not have any system columns. However, we forgot to + remove such entries when converting a table to a view. That's fixed + properly for 9.3 and later, but in previous branches we need to defend + against existing mis-converted views. + + + + + + Fix rule printing to dump INSERT INTO table + DEFAULT VALUES correctly (Tom Lane) + + + + + + Guard against stack overflow when there are too many + UNION/INTERSECT/EXCEPT clauses + in a query (Tom Lane) + + + + + + Prevent platform-dependent failures when dividing the minimum possible + integer value by -1 (Xi Wang, Tom Lane) + + + + + + Fix possible access past end of string in date parsing + (Hitoshi Harada) + + + + + + Produce an understandable error message if the length of the path name + for a Unix-domain socket exceeds the platform-specific limit + (Tom Lane, Andrew Dunstan) + + + + Formerly, this would result in something quite unhelpful, such as + Non-recoverable failure in name resolution. + + + + + + Fix memory leaks when sending composite column values to the client + (Tom Lane) + + + + + + Make pg_ctl more robust about reading the + postmaster.pid file (Heikki Linnakangas) + + + + Fix race conditions and possible file descriptor leakage. + + + + + + Fix possible crash in psql if incorrectly-encoded data + is presented and the client_encoding setting is a + client-only encoding, such as SJIS (Jiang Guiqing) + + + + + + Fix bugs in the restore.sql script emitted by + pg_dump in tar output format (Tom Lane) + + + + The script would fail outright on tables whose names include + upper-case characters. Also, make the script capable of restoring + data in + + + + + Fix pg_restore to accept POSIX-conformant + tar files (Brian Weaver, Tom Lane) + + + + The original coding of pg_dump's tar + output mode produced files that are not fully conformant with the + POSIX standard. This has been corrected for version 9.3. This + patch updates previous branches so that they will accept both the + incorrect and the corrected formats, in hopes of avoiding + compatibility problems when 9.3 comes out. + + + + + + Fix pg_resetxlog to locate postmaster.pid + correctly when given a relative path to the data directory (Tom Lane) + + + + This mistake could lead to pg_resetxlog not noticing + that there is an active postmaster using the data directory. + + + + + + Fix libpq's lo_import() and + lo_export() functions to report file I/O errors properly + (Tom Lane) + + + + + + Fix ecpg's processing of nested structure pointer + variables (Muhammad Usama) + + + + + + Make contrib/pageinspect's btree page inspection + functions take buffer locks while examining pages (Tom Lane) + + + + + + Fix pgxs support for building loadable modules on AIX + (Tom Lane) + + + + Building modules outside the original source tree didn't work on AIX. + + + + + + Update time zone data files to tzdata release 2012j + for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western + Samoa, and portions of Brazil. + + + + + + + + + + Release 8.3.21 + + + Release Date + 2012-09-24 + + + + This release contains a variety of fixes from 8.3.20. + For information about new features in the 8.3 major release, see + . + + + + The PostgreSQL community will stop releasing updates + for the 8.3.X release series in February 2013. + Users are encouraged to update to a newer release branch soon. + + + + Migration to Version 8.3.21 + + + A dump/restore is not required for those running 8.3.X. + + + + However, if you are upgrading from a version earlier than 8.3.17, + see . + + + + + + Changes + + + + + + Improve page-splitting decisions in GiST indexes (Alexander Korotkov, + Robert Haas, Tom Lane) + + + + Multi-column GiST indexes might suffer unexpected bloat due to this + error. + + + + + + Fix cascading privilege revoke to stop if privileges are still held + (Tom Lane) + + + + If we revoke a grant option from some role X, but + X still holds that option via a grant from someone + else, we should not recursively revoke the corresponding privilege + from role(s) Y that X had granted it + to. + + + + + + Fix handling of SIGFPE when PL/Perl is in use (Andres Freund) + + + + Perl resets the process's SIGFPE handler to + SIG_IGN, which could result in crashes later on. Restore + the normal Postgres signal handler after initializing PL/Perl. + + + + + + Prevent PL/Perl from crashing if a recursive PL/Perl function is + redefined while being executed (Tom Lane) + + + + + + Work around possible misoptimization in PL/Perl (Tom Lane) + + + + Some Linux distributions contain an incorrect version of + pthread.h that results in incorrect compiled code in + PL/Perl, leading to crashes if a PL/Perl function calls another one + that throws an error. + + + + + + Update time zone data files to tzdata release 2012f + for DST law changes in Fiji + + + + + + + + + + Release 8.3.20 + + + Release Date + 2012-08-17 + + + + This release contains a variety of fixes from 8.3.19. + For information about new features in the 8.3 major release, see + . + + + + The PostgreSQL community will stop releasing updates + for the 8.3.X release series in February 2013. + Users are encouraged to update to a newer release branch soon. + + + + Migration to Version 8.3.20 + + + A dump/restore is not required for those running 8.3.X. + + + + However, if you are upgrading from a version earlier than 8.3.17, + see . + + + + + + Changes + + + + + + Prevent access to external files/URLs via XML entity references + (Noah Misch, Tom Lane) + + + + xml_parse() would attempt to fetch external files or + URLs as needed to resolve DTD and entity references in an XML value, + thus allowing unprivileged database users to attempt to fetch data + with the privileges of the database server. While the external data + wouldn't get returned directly to the user, portions of it could be + exposed in error messages if the data didn't parse as valid XML; and + in any case the mere ability to check existence of a file might be + useful to an attacker. (CVE-2012-3489) + + + + + + Prevent access to external files/URLs via contrib/xml2's + xslt_process() (Peter Eisentraut) + + + + libxslt offers the ability to read and write both + files and URLs through stylesheet commands, thus allowing + unprivileged database users to both read and write data with the + privileges of the database server. Disable that through proper use + of libxslt's security options. (CVE-2012-3488) + + + + Also, remove xslt_process()'s ability to fetch documents + and stylesheets from external files/URLs. While this was a + documented feature, it was long regarded as a bad idea. + The fix for CVE-2012-3489 broke that capability, and rather than + expend effort on trying to fix it, we're just going to summarily + remove it. + + + + + + Prevent too-early recycling of btree index pages (Noah Misch) + + + + When we allowed read-only transactions to skip assigning XIDs, we + introduced the possibility that a deleted btree page could be + recycled while a read-only transaction was still in flight to it. + This would result in incorrect index search results. The probability + of such an error occurring in the field seems very low because of the + timing requirements, but nonetheless it should be fixed. + + + + + + Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane) + + + + If ALTER SEQUENCE was executed on a freshly created or + reset sequence, and then precisely one nextval() call + was made on it, and then the server crashed, WAL replay would restore + the sequence to a state in which it appeared that no + nextval() had been done, thus allowing the first + sequence value to be returned again by the next + nextval() call. In particular this could manifest for + serial columns, since creation of a serial column's sequence + includes an ALTER SEQUENCE OWNED BY step. + + + + + + Ensure the backup_label file is fsync'd after + pg_start_backup() (Dave Kerr) + + + + + + Back-patch 9.1 improvement to compress the fsync request queue + (Robert Haas) + + + + This improves performance during checkpoints. The 9.1 change + has now seen enough field testing to seem safe to back-patch. + + + + + + Only allow autovacuum to be auto-canceled by a directly blocked + process (Tom Lane) + + + + The original coding could allow inconsistent behavior in some cases; + in particular, an autovacuum could get canceled after less than + deadlock_timeout grace period. + + + + + + Improve logging of autovacuum cancels (Robert Haas) + + + + + + Fix log collector so that log_truncate_on_rotation works + during the very first log rotation after server start (Tom Lane) + + + + + + Ensure that a whole-row reference to a subquery doesn't include any + extra GROUP BY or ORDER BY columns (Tom Lane) + + + + + + Disallow copying whole-row references in CHECK + constraints and index definitions during CREATE TABLE + (Tom Lane) + + + + This situation can arise in CREATE TABLE with + LIKE or INHERITS. The copied whole-row + variable was incorrectly labeled with the row type of the original + table not the new one. Rejecting the case seems reasonable for + LIKE, since the row types might well diverge later. For + INHERITS we should ideally allow it, with an implicit + coercion to the parent table's row type; but that will require more + work than seems safe to back-patch. + + + + + + Fix memory leak in ARRAY(SELECT ...) subqueries (Heikki + Linnakangas, Tom Lane) + + + + + + Fix extraction of common prefixes from regular expressions (Tom Lane) + + + + The code could get confused by quantified parenthesized + subexpressions, such as ^(foo)?bar. This would lead to + incorrect index optimization of searches for such patterns. + + + + + + Report errors properly in contrib/xml2's + xslt_process() (Tom Lane) + + + + + + Update time zone data files to tzdata release 2012e + for DST law changes in Morocco and Tokelau + + + + + + + + + + Release 8.3.19 + + + Release Date + 2012-06-04 + + + + This release contains a variety of fixes from 8.3.18. + For information about new features in the 8.3 major release, see + . + + + + Migration to Version 8.3.19 + + + A dump/restore is not required for those running 8.3.X. + + + + However, if you are upgrading from a version earlier than 8.3.17, + see . + + + + + + Changes + + + + + + Fix incorrect password transformation in + contrib/pgcrypto's DES crypt() function + (Solar Designer) + + + + If a password string contained the byte value 0x80, the + remainder of the password was ignored, causing the password to be much + weaker than it appeared. With this fix, the rest of the string is + properly included in the DES hash. Any stored password values that are + affected by this bug will thus no longer match, so the stored values may + need to be updated. (CVE-2012-2143) + + + + + + Ignore SECURITY DEFINER and SET attributes for + a procedural language's call handler (Tom Lane) + + + + Applying such attributes to a call handler could crash the server. + (CVE-2012-2655) + + + + + + Allow numeric timezone offsets in timestamp input to be up to + 16 hours away from UTC (Tom Lane) + + + + Some historical time zones have offsets larger than 15 hours, the + previous limit. This could result in dumped data values being rejected + during reload. + + + + + + Fix timestamp conversion to cope when the given time is exactly the + last DST transition time for the current timezone (Tom Lane) + + + + This oversight has been there a long time, but was not noticed + previously because most DST-using zones are presumed to have an + indefinite sequence of future DST transitions. + + + + + + Fix text to name and char to name + casts to perform string truncation correctly in multibyte encodings + (Karl Schnaitter) + + + + + + Fix memory copying bug in to_tsquery() (Heikki Linnakangas) + + + + + + Fix slow session startup when pg_attribute is very large + (Tom Lane) + + + + If pg_attribute exceeds one-fourth of + shared_buffers, cache rebuilding code that is sometimes + needed during session start would trigger the synchronized-scan logic, + causing it to take many times longer than normal. The problem was + particularly acute if many new sessions were starting at once. + + + + + + Ensure sequential scans check for query cancel reasonably often (Merlin + Moncure) + + + + A scan encountering many consecutive pages that contain no live tuples + would not respond to interrupts meanwhile. + + + + + + Ensure the Windows implementation of PGSemaphoreLock() + clears ImmediateInterruptOK before returning (Tom Lane) + + + + This oversight meant that a query-cancel interrupt received later + in the same query could be accepted at an unsafe time, with + unpredictable but not good consequences. + + + + + + Show whole-row variables safely when printing views or rules + (Abbas Butt, Tom Lane) + + + + Corner cases involving ambiguous names (that is, the name could be + either a table or column name of the query) were printed in an + ambiguous way, risking that the view or rule would be interpreted + differently after dump and reload. Avoid the ambiguous case by + attaching a no-op cast. + + + + + + Ensure autovacuum worker processes perform stack depth checking + properly (Heikki Linnakangas) + + + + Previously, infinite recursion in a function invoked by + auto-ANALYZE could crash worker processes. + + + + + + Fix logging collector to not lose log coherency under high load (Andrew + Dunstan) + + + + The collector previously could fail to reassemble large messages if it + got too busy. + + + + + + Fix logging collector to ensure it will restart file rotation + after receiving SIGHUP (Tom Lane) + + + + + + Fix PL/pgSQL's GET DIAGNOSTICS command when the target + is the function's first variable (Tom Lane) + + + + + + Fix several performance problems in pg_dump when + the database contains many objects (Jeff Janes, Tom Lane) + + + + pg_dump could get very slow if the database contained + many schemas, or if many objects are in dependency loops, or if there + are many owned sequences. + + + + + + Fix contrib/dblink's dblink_exec() to not leak + temporary database connections upon error (Tom Lane) + + + + + + Update time zone data files to tzdata release 2012c + for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland + Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; + also historical corrections for Canada. + + + + + + + + + + Release 8.3.18 + + + Release Date + 2012-02-27 + + + + This release contains a variety of fixes from 8.3.17. + For information about new features in the 8.3 major release, see + . + + + + Migration to Version 8.3.18 + + + A dump/restore is not required for those running 8.3.X. + + + + However, if you are upgrading from a version earlier than 8.3.17, + see . + + + + + + Changes + + + + + + Require execute permission on the trigger function for + CREATE TRIGGER (Robert Haas) + + + + This missing check could allow another user to execute a trigger + function with forged input data, by installing it on a table he owns. + This is only of significance for trigger functions marked + SECURITY DEFINER, since otherwise trigger functions run + as the table owner anyway. (CVE-2012-0866) + + + + + + Convert newlines to spaces in names written in pg_dump + comments (Robert Haas) + + + + pg_dump was incautious about sanitizing object names + that are emitted within SQL comments in its output script. A name + containing a newline would at least render the script syntactically + incorrect. Maliciously crafted object names could present a SQL + injection risk when the script is reloaded. (CVE-2012-0868) + + + + + + Fix btree index corruption from insertions concurrent with vacuuming + (Tom Lane) + + + + An index page split caused by an insertion could sometimes cause a + concurrently-running VACUUM to miss removing index entries + that it should remove. After the corresponding table rows are removed, + the dangling index entries would cause errors (such as could not + read block N in file ...) or worse, silently wrong query results + after unrelated rows are re-inserted at the now-free table locations. + This bug has been present since release 8.2, but occurs so infrequently + that it was not diagnosed until now. If you have reason to suspect + that it has happened in your database, reindexing the affected index + will fix things. + + + + + + Allow non-existent values for some settings in ALTER + USER/DATABASE SET (Heikki Linnakangas) + + + + Allow default_text_search_config, + default_tablespace, and temp_tablespaces to be + set to names that are not known. This is because they might be known + in another database where the setting is intended to be used, or for the + tablespace cases because the tablespace might not be created yet. The + same issue was previously recognized for search_path, and + these settings now act like that one. + + + + + + Track the OID counter correctly during WAL replay, even when it wraps + around (Tom Lane) + + + + Previously the OID counter would remain stuck at a high value until the + system exited replay mode. The practical consequences of that are + usually nil, but there are scenarios wherein a standby server that's + been promoted to master might take a long time to advance the OID + counter to a reasonable value once values are needed. + + + + + + Fix regular expression back-references with * attached + (Tom Lane) + + + + Rather than enforcing an exact string match, the code would effectively + accept any string that satisfies the pattern sub-expression referenced + by the back-reference symbol. + + + + A similar problem still afflicts back-references that are embedded in a + larger quantified expression, rather than being the immediate subject + of the quantifier. This will be addressed in a future + PostgreSQL release. + + + + + + Fix recently-introduced memory leak in processing of + inet/cidr values (Heikki Linnakangas) + + + + A patch in the December 2011 releases of PostgreSQL + caused memory leakage in these operations, which could be significant + in scenarios such as building a btree index on such a column. + + + + + + Avoid double close of file handle in syslogger on Windows (MauMau) + + + + Ordinarily this error was invisible, but it would cause an exception + when running on a debug version of Windows. + + + + + + Fix I/O-conversion-related memory leaks in plpgsql + (Andres Freund, Jan Urbanski, Tom Lane) + + + + Certain operations would leak memory until the end of the current + function. + + + + + + Improve pg_dump's handling of inherited table columns + (Tom Lane) + + + + pg_dump mishandled situations where a child column has + a different default expression than its parent column. If the default + is textually identical to the parent's default, but not actually the + same (for instance, because of schema search path differences) it would + not be recognized as different, so that after dump and restore the + child would be allowed to inherit the parent's default. Child columns + that are NOT NULL where their parent is not could also be + restored subtly incorrectly. + + + + + + Fix pg_restore's direct-to-database mode for + INSERT-style table data (Tom Lane) + + + + Direct-to-database restores from archive files made with + + + + + + Fix error in contrib/intarray's int[] & + int[] operator (Guillaume Lelarge) + + + + If the smallest integer the two input arrays have in common is 1, + and there are smaller values in either array, then 1 would be + incorrectly omitted from the result. + + + + + + Fix error detection in contrib/pgcrypto's + encrypt_iv() and decrypt_iv() + (Marko Kreen) + + + + These functions failed to report certain types of invalid-input errors, + and would instead return random garbage values for incorrect input. + + + + + + Fix one-byte buffer overrun in contrib/test_parser + (Paul Guyot) + + + + The code would try to read one more byte than it should, which would + crash in corner cases. + Since contrib/test_parser is only example code, this is + not a security issue in itself, but bad example code is still bad. + + + + + + Use __sync_lock_test_and_set() for spinlocks on ARM, if + available (Martin Pitt) + + + + This function replaces our previous use of the SWPB + instruction, which is deprecated and not available on ARMv6 and later. + Reports suggest that the old code doesn't fail in an obvious way on + recent ARM boards, but simply doesn't interlock concurrent accesses, + leading to bizarre failures in multiprocess operation. + + + + + + Use + + + This prevents assorted scenarios wherein recent versions of gcc will + produce creative results. + + + + + + Allow use of threaded Python on FreeBSD (Chris Rees) + + + + Our configure script previously believed that this combination wouldn't + work; but FreeBSD fixed the problem, so remove that error check. + + + + + + + + + + Release 8.3.17 + + + Release Date + 2011-12-05 + + + + This release contains a variety of fixes from 8.3.16. + For information about new features in the 8.3 major release, see + . + + + + Migration to Version 8.3.17 + + + A dump/restore is not required for those running 8.3.X. + + + + However, a longstanding error was discovered in the definition of the + information_schema.referential_constraints view. If you + rely on correct results from that view, you should replace its + definition as explained in the first changelog item below. + + + + Also, if you are upgrading from a version earlier than 8.3.8, + see . + + + + + + Changes + + + + + + Fix bugs in information_schema.referential_constraints view + (Tom Lane) + + + + This view was being insufficiently careful about matching the + foreign-key constraint to the depended-on primary or unique key + constraint. That could result in failure to show a foreign key + constraint at all, or showing it multiple times, or claiming that it + depends on a different constraint than the one it really does. + + + + Since the view definition is installed by initdb, + merely upgrading will not fix the problem. If you need to fix this + in an existing installation, you can (as a superuser) drop the + information_schema schema then re-create it by sourcing + SHAREDIR/information_schema.sql. + (Run pg_config --sharedir if you're uncertain where + SHAREDIR is.) This must be repeated in each database + to be fixed. + + + + + + Fix TOAST-related data corruption during CREATE TABLE dest AS + SELECT * FROM src or INSERT INTO dest SELECT * FROM src + (Tom Lane) + + + + If a table has been modified by ALTER TABLE ADD COLUMN, + attempts to copy its data verbatim to another table could produce + corrupt results in certain corner cases. + The problem can only manifest in this precise form in 8.4 and later, + but we patched earlier versions as well in case there are other code + paths that could trigger the same bug. + + + + + + Fix race condition during toast table access from stale syscache entries + (Tom Lane) + + + + The typical symptom was transient errors like missing chunk + number 0 for toast value NNNNN in pg_toast_2619, where the cited + toast table would always belong to a system catalog. + + + + + + Make DatumGetInetP() unpack inet datums that have a 1-byte + header, and add a new macro, DatumGetInetPP(), that does + not (Heikki Linnakangas) + + + + This change affects no core code, but might prevent crashes in add-on + code that expects DatumGetInetP() to produce an unpacked + datum as per usual convention. + + + + + + Improve locale support in money type's input and output + (Tom Lane) + + + + Aside from not supporting all standard + lc_monetary + formatting options, the input and output functions were inconsistent, + meaning there were locales in which dumped money values could + not be re-read. + + + + + + Don't let transform_null_equals + affect CASE foo WHEN NULL ... constructs + (Heikki Linnakangas) + + + + transform_null_equals is only supposed to affect + foo = NULL expressions written directly by the user, not + equality checks generated internally by this form of CASE. + + + + + + Change foreign-key trigger creation order to better support + self-referential foreign keys (Tom Lane) + + + + For a cascading foreign key that references its own table, a row update + will fire both the ON UPDATE trigger and the + CHECK trigger as one event. The ON UPDATE + trigger must execute first, else the CHECK will check a + non-final state of the row and possibly throw an inappropriate error. + However, the firing order of these triggers is determined by their + names, which generally sort in creation order since the triggers have + auto-generated names following the convention + RI_ConstraintTrigger_NNNN. A proper fix would require + modifying that convention, which we will do in 9.2, but it seems risky + to change it in existing releases. So this patch just changes the + creation order of the triggers. Users encountering this type of error + should drop and re-create the foreign key constraint to get its + triggers into the right order. + + + + + + Avoid floating-point underflow while tracking buffer allocation rate + (Greg Matthews) + + + + While harmless in itself, on certain platforms this would result in + annoying kernel log messages. + + + + + + Preserve blank lines within commands in psql's command + history (Robert Haas) + + + + The former behavior could cause problems if an empty line was removed + from within a string literal, for example. + + + + + + Fix pg_dump to dump user-defined casts between + auto-generated types, such as table rowtypes (Tom Lane) + + + + + + Use the preferred version of xsubpp to build PL/Perl, + not necessarily the operating system's main copy + (David Wheeler and Alex Hunsaker) + + + + + + Fix incorrect coding in contrib/dict_int and + contrib/dict_xsyn (Tom Lane) + + + + Some functions incorrectly assumed that memory returned by + palloc() is guaranteed zeroed. + + + + + + Honor query cancel interrupts promptly in pgstatindex() + (Robert Haas) + + + + + + Ensure VPATH builds properly install all server header files + (Peter Eisentraut) + + + + + + Shorten file names reported in verbose error messages (Peter Eisentraut) + + + + Regular builds have always reported just the name of the C file + containing the error message call, but VPATH builds formerly + reported an absolute path name. + + + + + + Fix interpretation of Windows timezone names for Central America + (Tom Lane) + + + + Map Central America Standard Time to CST6, not + CST6CDT, because DST is generally not observed anywhere in + Central America. + + + + + + Update time zone data files to tzdata release 2011n + for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa; + also historical corrections for Alaska and British East Africa. + + + + + + + + + + Release 8.3.16 + + + Release Date + 2011-09-26 + + + + This release contains a variety of fixes from 8.3.15. + For information about new features in the 8.3 major release, see + . + + + + Migration to Version 8.3.16 + + + A dump/restore is not required for those running 8.3.X. + However, if you are upgrading from a version earlier than 8.3.8, + see . + + + + + + Changes + + + + + + Fix bugs in indexing of in-doubt HOT-updated tuples (Tom Lane) + + + + These bugs could result in index corruption after reindexing a system + catalog. They are not believed to affect user indexes. + + + + + + Fix multiple bugs in GiST index page split processing (Heikki + Linnakangas) + + + + The probability of occurrence was low, but these could lead to index + corruption. + + + + + + Fix possible buffer overrun in tsvector_concat() + (Tom Lane) + + + + The function could underestimate the amount of memory needed for its + result, leading to server crashes. + + + + + + Fix crash in xml_recv when processing a + standalone parameter (Tom Lane) + + + + + + Avoid possibly accessing off the end of memory in ANALYZE + and in SJIS-2004 encoding conversion (Noah Misch) + + + + This fixes some very-low-probability server crash scenarios. + + + + + + Fix race condition in relcache init file invalidation (Tom Lane) + + + + There was a window wherein a new backend process could read a stale init + file but miss the inval messages that would tell it the data is stale. + The result would be bizarre failures in catalog accesses, typically + could not read block 0 in file ... later during startup. + + + + + + Fix memory leak at end of a GiST index scan (Tom Lane) + + + + Commands that perform many separate GiST index scans, such as + verification of a new GiST-based exclusion constraint on a table + already containing many rows, could transiently require large amounts of + memory due to this leak. + + + + + + Fix performance problem when constructing a large, lossy bitmap + (Tom Lane) + + + + + + Fix array- and path-creating functions to ensure padding bytes are + zeroes (Tom Lane) + + + + This avoids some situations where the planner will think that + semantically-equal constants are not equal, resulting in poor + optimization. + + + + + + Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane) + + + + This could lead to loss of committed transactions after a server crash. + + + + + + Fix dump bug for VALUES in a view (Tom Lane) + + + + + + Disallow SELECT FOR UPDATE/SHARE on sequences (Tom Lane) + + + + This operation doesn't work as expected and can lead to failures. + + + + + + Defend against integer overflow when computing size of a hash table (Tom + Lane) + + + + + + Fix cases where CLUSTER might attempt to access + already-removed TOAST data (Tom Lane) + + + + + + Fix portability bugs in use of credentials control messages for + peer authentication (Tom Lane) + + + + + + Fix SSPI login when multiple roundtrips are required (Ahmed Shinwari, + Magnus Hagander) + + + + The typical symptom of this problem was The function requested is + not supported errors during SSPI login. + + + + + + Fix typo in pg_srand48 seed initialization (Andres Freund) + + + + This led to failure to use all bits of the provided seed. This function + is not used on most platforms (only those without srandom), + and the potential security exposure from a less-random-than-expected + seed seems minimal in any case. + + + + + + Avoid integer overflow when the sum of LIMIT and + OFFSET values exceeds 2^63 (Heikki Linnakangas) + + + + + + Add overflow checks to int4 and int8 versions of + generate_series() (Robert Haas) + + + + + + Fix trailing-zero removal in to_char() (Marti Raudsepp) + + + + In a format with FM and no digit positions + after the decimal point, zeroes to the left of the decimal point could + be removed incorrectly. + + + + + + Fix pg_size_pretty() to avoid overflow for inputs close to + 2^63 (Tom Lane) + + + + + + In pg_ctl, support silent mode for service registrations + on Windows (MauMau) + + + + + + Fix psql's counting of script file line numbers during + COPY from a different file (Tom Lane) + + + + + + Fix pg_restore's direct-to-database mode for + standard_conforming_strings (Tom Lane) + + + + pg_restore could emit incorrect commands when restoring + directly to a database server from an archive file that had been made + with standard_conforming_strings set to on. + + + + + + Fix write-past-buffer-end and memory leak in libpq's + LDAP service lookup code (Albe Laurenz) + + + + + + In libpq, avoid failures when using nonblocking I/O + and an SSL connection (Martin Pihlak, Tom Lane) + + + + + + Improve libpq's handling of failures during connection startup + (Tom Lane) + + + + In particular, the response to a server report of fork() + failure during SSL connection startup is now saner. + + + + + + Improve libpq's error reporting for SSL failures (Tom + Lane) + + + + + + Make ecpglib write double values with 15 digits + precision (Akira Kurosawa) + + + + + + In ecpglib, be sure LC_NUMERIC setting is + restored after an error (Michael Meskes) + + + + + + Apply upstream fix for blowfish signed-character bug (CVE-2011-2483) + (Tom Lane) + + + + contrib/pg_crypto's blowfish encryption code could give + wrong results on platforms where char is signed (which is most), + leading to encrypted passwords being weaker than they should be. + + + + + + Fix memory leak in contrib/seg (Heikki Linnakangas) + + + + + + Fix pgstatindex() to give consistent results for empty + indexes (Tom Lane) + + + + + + Allow building with perl 5.14 (Alex Hunsaker) + + + + + + Update configure script's method for probing existence of system + functions (Tom Lane) + + + + The version of autoconf we used in 8.3 and 8.2 could be fooled by + compilers that perform link-time optimization. + + + + + + Fix assorted issues with build and install file paths containing spaces + (Tom Lane) + + + + + + Update time zone data files to tzdata release 2011i + for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan. + + + + + + + + Release 8.3.15 @@ -21,7 +1974,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.8, - see the release notes for 8.3.8. + see . @@ -184,7 +2137,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.8, - see the release notes for 8.3.8. + see . @@ -316,7 +2269,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.8, - see the release notes for 8.3.8. + see . @@ -594,7 +2547,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.8, - see the release notes for 8.3.8. + see . @@ -957,7 +2910,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.8, - see the release notes for 8.3.8. + see . @@ -1186,7 +3139,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.8, - see the release notes for 8.3.8. + see . @@ -1513,7 +3466,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.8, - see the release notes for 8.3.8. + see . @@ -1566,7 +3519,7 @@ - This fix prevents a PANIC if a VACUUM FULL is cancelled + This fix prevents a PANIC if a VACUUM FULL is canceled after it's already committed its tuple movements, as well as transient errors if a plain VACUUM is interrupted after having truncated the table. @@ -1848,7 +3801,7 @@ However, if you have any hash indexes on interval columns, you must REINDEX them after updating to 8.3.8. Also, if you are upgrading from a version earlier than 8.3.5, - see the release notes for 8.3.5. + see . @@ -2136,7 +4089,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.5, - see the release notes for 8.3.5. + see . @@ -2359,7 +4312,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.5, - see the release notes for 8.3.5. + see . @@ -2653,7 +4606,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.1, - see the release notes for 8.3.1. Also, if you were running a previous + see . Also, if you were running a previous 8.3.X release, it is recommended to REINDEX all GiST indexes after the upgrade. @@ -2908,7 +4861,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.1, - see the release notes for 8.3.1. + see . @@ -3262,7 +5215,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.1, - see the release notes for 8.3.1. + see . @@ -3329,7 +5282,7 @@ A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.1, - see the release notes for 8.3.1. + see . diff --git a/doc/src/sgml/release-8.4.sgml b/doc/src/sgml/release-8.4.sgml index e4fddd44e6..0ed8cebe37 100644 --- a/doc/src/sgml/release-8.4.sgml +++ b/doc/src/sgml/release-8.4.sgml @@ -1,6 +1,3566 @@ + + Release 8.4.21 + + + Release Date + 2014-03-20 + + + + This release contains a variety of fixes from 8.4.20. + For information about new features in the 8.4 major release, see + . + + + + The PostgreSQL community will stop releasing updates + for the 8.4.X release series in July 2014. + Users are encouraged to update to a newer release branch soon. + + + + Migration to Version 8.4.21 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.19, + see . + + + + + + Changes + + + + + + Restore GIN metapages unconditionally to avoid torn-page risk + (Heikki Linnakangas) + + + + Although this oversight could theoretically result in a corrupted + index, it is unlikely to have caused any problems in practice, since + the active part of a GIN metapage is smaller than a standard 512-byte + disk sector. + + + + + + Allow regular-expression operators to be terminated early by query + cancel requests (Tom Lane) + + + + This prevents scenarios wherein a pathological regular expression + could lock up a server process uninterruptably for a long time. + + + + + + Remove incorrect code that tried to allow OVERLAPS with + single-element row arguments (Joshua Yanovski) + + + + This code never worked correctly, and since the case is neither + specified by the SQL standard nor documented, it seemed better to + remove it than fix it. + + + + + + Avoid getting more than AccessShareLock when de-parsing a + rule or view (Dean Rasheed) + + + + This oversight resulted in pg_dump unexpectedly + acquiring RowExclusiveLock locks on tables mentioned as + the targets of INSERT/UPDATE/DELETE + commands in rules. While usually harmless, that could interfere with + concurrent transactions that tried to acquire, for example, + ShareLock on those tables. + + + + + + Prevent interrupts while reporting non-ERROR messages + (Tom Lane) + + + + This guards against rare server-process freezeups due to recursive + entry to syslog(), and perhaps other related problems. + + + + + + Update time zone data files to tzdata release 2014a + for DST law changes in Fiji and Turkey, plus historical changes in + Israel and Ukraine. + + + + + + + + + + + + + Release 8.4.20 + + + Release Date + 2014-02-20 + + + + This release contains a variety of fixes from 8.4.19. + For information about new features in the 8.4 major release, see + . + + + + The PostgreSQL community will stop releasing updates + for the 8.4.X release series in July 2014. + Users are encouraged to update to a newer release branch soon. + + + + Migration to Version 8.4.20 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.19, + see . + + + + + + Changes + + + + + + Shore up GRANT ... WITH ADMIN OPTION restrictions + (Noah Misch) + + + + Granting a role without ADMIN OPTION is supposed to + prevent the grantee from adding or removing members from the granted + role, but this restriction was easily bypassed by doing SET + ROLE first. The security impact is mostly that a role member can + revoke the access of others, contrary to the wishes of his grantor. + Unapproved role member additions are a lesser concern, since an + uncooperative role member could provide most of his rights to others + anyway by creating views or SECURITY DEFINER functions. + (CVE-2014-0060) + + + + + + Prevent privilege escalation via manual calls to PL validator + functions (Andres Freund) + + + + The primary role of PL validator functions is to be called implicitly + during CREATE FUNCTION, but they are also normal SQL + functions that a user can call explicitly. Calling a validator on + a function actually written in some other language was not checked + for and could be exploited for privilege-escalation purposes. + The fix involves adding a call to a privilege-checking function in + each validator function. Non-core procedural languages will also + need to make this change to their own validator functions, if any. + (CVE-2014-0061) + + + + + + Avoid multiple name lookups during table and index DDL + (Robert Haas, Andres Freund) + + + + If the name lookups come to different conclusions due to concurrent + activity, we might perform some parts of the DDL on a different table + than other parts. At least in the case of CREATE INDEX, + this can be used to cause the permissions checks to be performed + against a different table than the index creation, allowing for a + privilege escalation attack. + (CVE-2014-0062) + + + + + + Prevent buffer overrun with long datetime strings (Noah Misch) + + + + The MAXDATELEN constant was too small for the longest + possible value of type interval, allowing a buffer overrun + in interval_out(). Although the datetime input + functions were more careful about avoiding buffer overrun, the limit + was short enough to cause them to reject some valid inputs, such as + input containing a very long timezone name. The ecpg + library contained these vulnerabilities along with some of its own. + (CVE-2014-0063) + + + + + + Prevent buffer overrun due to integer overflow in size calculations + (Noah Misch, Heikki Linnakangas) + + + + Several functions, mostly type input functions, calculated an + allocation size without checking for overflow. If overflow did + occur, a too-small buffer would be allocated and then written past. + (CVE-2014-0064) + + + + + + Prevent overruns of fixed-size buffers + (Peter Eisentraut, Jozef Mlich) + + + + Use strlcpy() and related functions to provide a clear + guarantee that fixed-size buffers are not overrun. Unlike the + preceding items, it is unclear whether these cases really represent + live issues, since in most cases there appear to be previous + constraints on the size of the input string. Nonetheless it seems + prudent to silence all Coverity warnings of this type. + (CVE-2014-0065) + + + + + + Avoid crashing if crypt() returns NULL (Honza Horak, + Bruce Momjian) + + + + There are relatively few scenarios in which crypt() + could return NULL, but contrib/chkpass would crash + if it did. One practical case in which this could be an issue is + if libc is configured to refuse to execute unapproved + hashing algorithms (e.g., FIPS mode). + (CVE-2014-0066) + + + + + + Document risks of make check in the regression testing + instructions (Noah Misch, Tom Lane) + + + + Since the temporary server started by make check + uses trust authentication, another user on the same machine + could connect to it as database superuser, and then potentially + exploit the privileges of the operating-system user who started the + tests. A future release will probably incorporate changes in the + testing procedure to prevent this risk, but some public discussion is + needed first. So for the moment, just warn people against using + make check when there are untrusted users on the + same machine. + (CVE-2014-0067) + + + + + + Fix possible mis-replay of WAL records when some segments of a + relation aren't full size (Greg Stark, Tom Lane) + + + + The WAL update could be applied to the wrong page, potentially many + pages past where it should have been. Aside from corrupting data, + this error has been observed to result in significant bloat + of standby servers compared to their masters, due to updates being + applied far beyond where the end-of-file should have been. This + failure mode does not appear to be a significant risk during crash + recovery, only when initially synchronizing a standby created from a + base backup taken from a quickly-changing master. + + + + + + Ensure that insertions into non-leaf GIN index pages write a full-page + WAL record when appropriate (Heikki Linnakangas) + + + + The previous coding risked index corruption in the event of a + partial-page write during a system crash. + + + + + + Fix race conditions during server process exit (Robert Haas) + + + + Ensure that signal handlers don't attempt to use the + process's MyProc pointer after it's no longer valid. + + + + + + Fix unsafe references to errno within error reporting + logic (Christian Kruse) + + + + This would typically lead to odd behaviors such as missing or + inappropriate HINT fields. + + + + + + Fix possible crashes from using ereport() too early + during server startup (Tom Lane) + + + + The principal case we've seen in the field is a crash if the server + is started in a directory it doesn't have permission to read. + + + + + + Clear retry flags properly in OpenSSL socket write + function (Alexander Kukushkin) + + + + This omission could result in a server lockup after unexpected loss + of an SSL-encrypted connection. + + + + + + Fix length checking for Unicode identifiers (U&"..." + syntax) containing escapes (Tom Lane) + + + + A spurious truncation warning would be printed for such identifiers + if the escaped form of the identifier was too long, but the + identifier actually didn't need truncation after de-escaping. + + + + + + Fix possible crash due to invalid plan for nested sub-selects, such + as WHERE (... x IN (SELECT ...) ...) IN (SELECT ...) + (Tom Lane) + + + + + + Ensure that ANALYZE creates statistics for a table column + even when all the values in it are too wide (Tom Lane) + + + + ANALYZE intentionally omits very wide values from its + histogram and most-common-values calculations, but it neglected to do + something sane in the case that all the sampled entries are too wide. + + + + + + In ALTER TABLE ... SET TABLESPACE, allow the database's + default tablespace to be used without a permissions check + (Stephen Frost) + + + + CREATE TABLE has always allowed such usage, + but ALTER TABLE didn't get the memo. + + + + + + Fix cannot accept a set error when some arms of + a CASE return a set and others don't (Tom Lane) + + + + + + Fix checks for all-zero client addresses in pgstat functions (Kevin + Grittner) + + + + + + Fix possible misclassification of multibyte characters by the text + search parser (Tom Lane) + + + + Non-ASCII characters could be misclassified when using C locale with + a multibyte encoding. On Cygwin, non-C locales could fail as well. + + + + + + Fix possible misbehavior in plainto_tsquery() + (Heikki Linnakangas) + + + + Use memmove() not memcpy() for copying + overlapping memory regions. There have been no field reports of + this actually causing trouble, but it's certainly risky. + + + + + + Accept SHIFT_JIS as an encoding name for locale checking + purposes (Tatsuo Ishii) + + + + + + Fix misbehavior of PQhost() on Windows (Fujii Masao) + + + + It should return localhost if no host has been specified. + + + + + + Improve error handling in libpq and psql + for failures during COPY TO STDOUT/FROM STDIN (Tom Lane) + + + + In particular this fixes an infinite loop that could occur in 9.2 and + up if the server connection was lost during COPY FROM + STDIN. Variants of that scenario might be possible in older + versions, or with other client applications. + + + + + + Fix misaligned descriptors in ecpg (MauMau) + + + + + + In ecpg, handle lack of a hostname in the connection + parameters properly (Michael Meskes) + + + + + + Fix performance regression in contrib/dblink connection + startup (Joe Conway) + + + + Avoid an unnecessary round trip when client and server encodings match. + + + + + + In contrib/isn, fix incorrect calculation of the check + digit for ISMN values (Fabien Coelho) + + + + + + Ensure client-code-only installation procedure works as documented + (Peter Eisentraut) + + + + + + In Mingw and Cygwin builds, install the libpq DLL + in the bin directory (Andrew Dunstan) + + + + This duplicates what the MSVC build has long done. It should fix + problems with programs like psql failing to start + because they can't find the DLL. + + + + + + Don't generate plain-text HISTORY + and src/test/regress/README files anymore (Tom Lane) + + + + These text files duplicated the main HTML and PDF documentation + formats. The trouble involved in maintaining them greatly outweighs + the likely audience for plain-text format. Distribution tarballs + will still contain files by these names, but they'll just be stubs + directing the reader to consult the main documentation. + The plain-text INSTALL file will still be maintained, as + there is arguably a use-case for that. + + + + + + Update time zone data files to tzdata release 2013i + for DST law changes in Jordan and historical changes in Cuba. + + + + In addition, the zones Asia/Riyadh87, + Asia/Riyadh88, and Asia/Riyadh89 have been + removed, as they are no longer maintained by IANA, and never + represented actual civil timekeeping practice. + + + + + + + + + + Release 8.4.19 + + + Release Date + 2013-12-05 + + + + This release contains a variety of fixes from 8.4.18. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.19 + + + A dump/restore is not required for those running 8.4.X. + + + + However, this release corrects a potential data corruption + issue. See the first changelog entry below to find out whether + your installation has been affected and what steps you can take if so. + + + + Also, if you are upgrading from a version earlier than 8.4.17, + see . + + + + + + Changes + + + + + + Fix VACUUM's tests to see whether it can + update relfrozenxid (Andres Freund) + + + + In some cases VACUUM (either manual or autovacuum) could + incorrectly advance a table's relfrozenxid value, + allowing tuples to escape freezing, causing those rows to become + invisible once 2^31 transactions have elapsed. The probability of + data loss is fairly low since multiple incorrect advancements would + need to happen before actual loss occurs, but it's not zero. Users + upgrading from release 8.4.8 or earlier are not affected, but all later + versions contain the bug. + + + + The issue can be ameliorated by, after upgrading, vacuuming all tables + in all databases while having vacuum_freeze_table_age + set to zero. This will fix any latent corruption but will not be able + to fix all pre-existing data errors. However, an installation can be + presumed safe after performing this vacuuming if it has executed fewer + than 2^31 update transactions in its lifetime (check this with + SELECT txid_current() < 2^31). + + + + + + Fix race condition in GIN index posting tree page deletion (Heikki + Linnakangas) + + + + This could lead to transient wrong answers or query failures. + + + + + + Avoid flattening a subquery whose SELECT list contains a + volatile function wrapped inside a sub-SELECT (Tom Lane) + + + + This avoids unexpected results due to extra evaluations of the + volatile function. + + + + + + Fix planner's processing of non-simple-variable subquery outputs + nested within outer joins (Tom Lane) + + + + This error could lead to incorrect plans for queries involving + multiple levels of subqueries within JOIN syntax. + + + + + + Fix premature deletion of temporary files (Andres Freund) + + + + + + Fix possible read past end of memory in rule printing (Peter Eisentraut) + + + + + + Fix array slicing of int2vector and oidvector values + (Tom Lane) + + + + Expressions of this kind are now implicitly promoted to + regular int2 or oid arrays. + + + + + + Fix incorrect behaviors when using a SQL-standard, simple GMT offset + timezone (Tom Lane) + + + + In some cases, the system would use the simple GMT offset value when + it should have used the regular timezone setting that had prevailed + before the simple offset was selected. This change also causes + the timeofday function to honor the simple GMT offset + zone. + + + + + + Prevent possible misbehavior when logging translations of Windows + error codes (Tom Lane) + + + + + + Properly quote generated command lines in pg_ctl + (Naoya Anzai and Tom Lane) + + + + This fix applies only to Windows. + + + + + + Fix pg_dumpall to work when a source database + sets default_transaction_read_only + via ALTER DATABASE SET (Kevin Grittner) + + + + Previously, the generated script would fail during restore. + + + + + + Fix ecpg's processing of lists of variables + declared varchar (Zoltán Böszörményi) + + + + + + Make contrib/lo defend against incorrect trigger definitions + (Marc Cousin) + + + + + + Update time zone data files to tzdata release 2013h + for DST law changes in Argentina, Brazil, Jordan, Libya, + Liechtenstein, Morocco, and Palestine. Also, new timezone + abbreviations WIB, WIT, WITA for Indonesia. + + + + + + + + + + Release 8.4.18 + + + Release Date + 2013-10-10 + + + + This release contains a variety of fixes from 8.4.17. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.18 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.17, + see . + + + + + + Changes + + + + + + Prevent corruption of multi-byte characters when attempting to + case-fold identifiers (Andrew Dunstan) + + + + PostgreSQL case-folds non-ASCII characters only + when using a single-byte server encoding. + + + + + + Fix memory leak caused by lo_open() failure + (Heikki Linnakangas) + + + + + + Fix memory overcommit bug when work_mem is using more + than 24GB of memory (Stephen Frost) + + + + + + Fix deadlock bug in libpq when using SSL (Stephen Frost) + + + + + + Properly compute row estimates for boolean columns containing many NULL + values (Andrew Gierth) + + + + Previously tests like col IS NOT TRUE and col IS + NOT FALSE did not properly factor in NULL values when estimating + plan costs. + + + + + + Prevent pushing down WHERE clauses into unsafe + UNION/INTERSECT subqueries (Tom Lane) + + + + Subqueries of a UNION or INTERSECT that + contain set-returning functions or volatile functions in their + SELECT lists could be improperly optimized, leading to + run-time errors or incorrect query results. + + + + + + Fix rare case of failed to locate grouping columns + planner failure (Tom Lane) + + + + + + Improve view dumping code's handling of dropped columns in referenced + tables (Tom Lane) + + + + + + Fix possible deadlock during concurrent CREATE INDEX + CONCURRENTLY operations (Tom Lane) + + + + + + Fix regexp_matches() handling of zero-length matches + (Jeevan Chalke) + + + + Previously, zero-length matches like '^' could return too many matches. + + + + + + Fix crash for overly-complex regular expressions (Heikki Linnakangas) + + + + + + Fix regular expression match failures for back references combined with + non-greedy quantifiers (Jeevan Chalke) + + + + + + Prevent CREATE FUNCTION from checking SET + variables unless function body checking is enabled (Tom Lane) + + + + + + Fix pgp_pub_decrypt() so it works for secret keys with + passwords (Marko Kreen) + + + + + + Remove rare inaccurate warning during vacuum of index-less tables + (Heikki Linnakangas) + + + + + + Avoid possible failure when performing transaction control commands (e.g + ROLLBACK) in prepared queries (Tom Lane) + + + + + + Ensure that floating-point data input accepts standard spellings + of infinity on all platforms (Tom Lane) + + + + The C99 standard says that allowable spellings are inf, + +inf, -inf, infinity, + +infinity, and -infinity. Make sure we + recognize these even if the platform's strtod function + doesn't. + + + + + + Expand ability to compare rows to records and arrays (Rafal Rzepecki, + Tom Lane) + + + + + + Update time zone data files to tzdata release 2013d + for DST law changes in Israel, Morocco, Palestine, and Paraguay. + Also, historical zone data corrections for Macquarie Island. + + + + + + + + + + Release 8.4.17 + + + Release Date + 2013-04-04 + + + + This release contains a variety of fixes from 8.4.16. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.17 + + + A dump/restore is not required for those running 8.4.X. + + + + However, this release corrects several errors in management of GiST + indexes. After installing this update, it is advisable to + REINDEX any GiST indexes that meet one or more of the + conditions described below. + + + + Also, if you are upgrading from a version earlier than 8.4.10, + see . + + + + + + Changes + + + + + + Reset OpenSSL randomness state in each postmaster child process + (Marko Kreen) + + + + This avoids a scenario wherein random numbers generated by + contrib/pgcrypto functions might be relatively easy for + another database user to guess. The risk is only significant when + the postmaster is configured with ssl = on + but most connections don't use SSL encryption. (CVE-2013-1900) + + + + + + Fix GiST indexes to not use fuzzy geometric comparisons when + it's not appropriate to do so (Alexander Korotkov) + + + + The core geometric types perform comparisons using fuzzy + equality, but gist_box_same must do exact comparisons, + else GiST indexes using it might become inconsistent. After installing + this update, users should REINDEX any GiST indexes on + box, polygon, circle, or point + columns, since all of these use gist_box_same. + + + + + + Fix erroneous range-union and penalty logic in GiST indexes that use + contrib/btree_gist for variable-width data types, that is + text, bytea, bit, and numeric + columns (Tom Lane) + + + + These errors could result in inconsistent indexes in which some keys + that are present would not be found by searches, and also in useless + index bloat. Users are advised to REINDEX such indexes + after installing this update. + + + + + + Fix bugs in GiST page splitting code for multi-column indexes + (Tom Lane) + + + + These errors could result in inconsistent indexes in which some keys + that are present would not be found by searches, and also in indexes + that are unnecessarily inefficient to search. Users are advised to + REINDEX multi-column GiST indexes after installing this + update. + + + + + + Fix infinite-loop risk in regular expression compilation (Tom Lane, + Don Porter) + + + + + + Fix potential null-pointer dereference in regular expression compilation + (Tom Lane) + + + + + + Fix to_char() to use ASCII-only case-folding rules where + appropriate (Tom Lane) + + + + This fixes misbehavior of some template patterns that should be + locale-independent, but mishandled I and + i in Turkish locales. + + + + + + Fix unwanted rejection of timestamp 1999-12-31 24:00:00 + (Tom Lane) + + + + + + Remove useless picksplit doesn't support secondary split log + messages (Josh Hansen, Tom Lane) + + + + This message seems to have been added in expectation of code that was + never written, and probably never will be, since GiST's default + handling of secondary splits is actually pretty good. So stop nagging + end users about it. + + + + + + Fix possible failure to send a session's last few transaction + commit/abort counts to the statistics collector (Tom Lane) + + + + + + Eliminate memory leaks in PL/Perl's spi_prepare() function + (Alex Hunsaker, Tom Lane) + + + + + + Fix pg_dumpall to handle database names containing + = correctly (Heikki Linnakangas) + + + + + + Avoid crash in pg_dump when an incorrect connection + string is given (Heikki Linnakangas) + + + + + + Ignore invalid indexes in pg_dump (Michael Paquier) + + + + Dumping invalid indexes can cause problems at restore time, for example + if the reason the index creation failed was because it tried to enforce + a uniqueness condition not satisfied by the table's data. Also, if the + index creation is in fact still in progress, it seems reasonable to + consider it to be an uncommitted DDL change, which + pg_dump wouldn't be expected to dump anyway. + + + + + + Fix contrib/pg_trgm's similarity() function + to return zero for trigram-less strings (Tom Lane) + + + + Previously it returned NaN due to internal division by zero. + + + + + + Update time zone data files to tzdata release 2013b + for DST law changes in Chile, Haiti, Morocco, Paraguay, and some + Russian areas. Also, historical zone data corrections for numerous + places. + + + + Also, update the time zone abbreviation files for recent changes in + Russia and elsewhere: CHOT, GET, + IRKT, KGT, KRAT, MAGT, + MAWT, MSK, NOVT, OMST, + TKT, VLAT, WST, YAKT, + YEKT now follow their current meanings, and + VOLT (Europe/Volgograd) and MIST + (Antarctica/Macquarie) are added to the default abbreviations list. + + + + + + + + + + Release 8.4.16 + + + Release Date + 2013-02-07 + + + + This release contains a variety of fixes from 8.4.15. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.16 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.10, + see . + + + + + + Changes + + + + + + Prevent execution of enum_recv from SQL (Tom Lane) + + + + The function was misdeclared, allowing a simple SQL command to crash the + server. In principle an attacker might be able to use it to examine the + contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP) + for reporting this issue. (CVE-2013-0255) + + + + + + Update minimum recovery point when truncating a relation file (Heikki + Linnakangas) + + + + Once data has been discarded, it's no longer safe to stop recovery at + an earlier point in the timeline. + + + + + + Fix SQL grammar to allow subscripting or field selection from a + sub-SELECT result (Tom Lane) + + + + + + Protect against race conditions when scanning + pg_tablespace (Stephen Frost, Tom Lane) + + + + CREATE DATABASE and DROP DATABASE could + misbehave if there were concurrent updates of + pg_tablespace entries. + + + + + + Prevent DROP OWNED from trying to drop whole databases or + tablespaces (Álvaro Herrera) + + + + For safety, ownership of these objects must be reassigned, not dropped. + + + + + + Fix error in vacuum_freeze_table_age + implementation (Andres Freund) + + + + In installations that have existed for more than vacuum_freeze_min_age + transactions, this mistake prevented autovacuum from using partial-table + scans, so that a full-table scan would always happen instead. + + + + + + Prevent misbehavior when a RowExpr or XmlExpr + is parse-analyzed twice (Andres Freund, Tom Lane) + + + + This mistake could be user-visible in contexts such as + CREATE TABLE LIKE INCLUDING INDEXES. + + + + + + Improve defenses against integer overflow in hashtable sizing + calculations (Jeff Davis) + + + + + + Reject out-of-range dates in to_date() (Hitoshi Harada) + + + + + + Ensure that non-ASCII prompt strings are translated to the correct + code page on Windows (Alexander Law, Noah Misch) + + + + This bug affected psql and some other client programs. + + + + + + Fix possible crash in psql's \? command + when not connected to a database (Meng Qingzhong) + + + + + + Fix one-byte buffer overrun in libpq's + PQprintTuples (Xi Wang) + + + + This ancient function is not used anywhere by + PostgreSQL itself, but it might still be used by some + client code. + + + + + + Make ecpglib use translated messages properly + (Chen Huajun) + + + + + + Properly install ecpg_compat and + pgtypes libraries on MSVC (Jiang Guiqing) + + + + + + Rearrange configure's tests for supplied functions so it is not + fooled by bogus exports from libedit/libreadline (Christoph Berg) + + + + + + Ensure Windows build number increases over time (Magnus Hagander) + + + + + + Make pgxs build executables with the right + .exe suffix when cross-compiling for Windows + (Zoltan Boszormenyi) + + + + + + Add new timezone abbreviation FET (Tom Lane) + + + + This is now used in some eastern-European time zones. + + + + + + + + + + Release 8.4.15 + + + Release Date + 2012-12-06 + + + + This release contains a variety of fixes from 8.4.14. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.15 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.10, + see . + + + + + + Changes + + + + + + Fix multiple bugs associated with CREATE INDEX + CONCURRENTLY (Andres Freund, Tom Lane) + + + + Fix CREATE INDEX CONCURRENTLY to use + in-place updates when changing the state of an index's + pg_index row. This prevents race conditions that could + cause concurrent sessions to miss updating the target index, thus + resulting in corrupt concurrently-created indexes. + + + + Also, fix various other operations to ensure that they ignore + invalid indexes resulting from a failed CREATE INDEX + CONCURRENTLY command. The most important of these is + VACUUM, because an auto-vacuum could easily be launched + on the table before corrective action can be taken to fix or remove + the invalid index. + + + + + + Avoid corruption of internal hash tables when out of memory + (Hitoshi Harada) + + + + + + Fix planning of non-strict equivalence clauses above outer joins + (Tom Lane) + + + + The planner could derive incorrect constraints from a clause equating + a non-strict construct to something else, for example + WHERE COALESCE(foo, 0) = 0 + when foo is coming from the nullable side of an outer join. + + + + + + Improve planner's ability to prove exclusion constraints from + equivalence classes (Tom Lane) + + + + + + Fix partial-row matching in hashed subplans to handle cross-type cases + correctly (Tom Lane) + + + + This affects multicolumn NOT IN subplans, such as + WHERE (a, b) NOT IN (SELECT x, y FROM ...) + when for instance b and y are int4 + and int8 respectively. This mistake led to wrong answers + or crashes depending on the specific datatypes involved. + + + + + + Acquire buffer lock when re-fetching the old tuple for an + AFTER ROW UPDATE/DELETE trigger (Andres Freund) + + + + In very unusual circumstances, this oversight could result in passing + incorrect data to the precheck logic for a foreign-key enforcement + trigger. That could result in a crash, or in an incorrect decision + about whether to fire the trigger. + + + + + + Fix ALTER COLUMN TYPE to handle inherited check + constraints properly (Pavan Deolasee) + + + + This worked correctly in pre-8.4 releases, and now works correctly + in 8.4 and later. + + + + + + Fix REASSIGN OWNED to handle grants on tablespaces + (Álvaro Herrera) + + + + + + Ignore incorrect pg_attribute entries for system + columns for views (Tom Lane) + + + + Views do not have any system columns. However, we forgot to + remove such entries when converting a table to a view. That's fixed + properly for 9.3 and later, but in previous branches we need to defend + against existing mis-converted views. + + + + + + Fix rule printing to dump INSERT INTO table + DEFAULT VALUES correctly (Tom Lane) + + + + + + Guard against stack overflow when there are too many + UNION/INTERSECT/EXCEPT clauses + in a query (Tom Lane) + + + + + + Prevent platform-dependent failures when dividing the minimum possible + integer value by -1 (Xi Wang, Tom Lane) + + + + + + Fix possible access past end of string in date parsing + (Hitoshi Harada) + + + + + + Produce an understandable error message if the length of the path name + for a Unix-domain socket exceeds the platform-specific limit + (Tom Lane, Andrew Dunstan) + + + + Formerly, this would result in something quite unhelpful, such as + Non-recoverable failure in name resolution. + + + + + + Fix memory leaks when sending composite column values to the client + (Tom Lane) + + + + + + Make pg_ctl more robust about reading the + postmaster.pid file (Heikki Linnakangas) + + + + Fix race conditions and possible file descriptor leakage. + + + + + + Fix possible crash in psql if incorrectly-encoded data + is presented and the client_encoding setting is a + client-only encoding, such as SJIS (Jiang Guiqing) + + + + + + Fix bugs in the restore.sql script emitted by + pg_dump in tar output format (Tom Lane) + + + + The script would fail outright on tables whose names include + upper-case characters. Also, make the script capable of restoring + data in + + + + + Fix pg_restore to accept POSIX-conformant + tar files (Brian Weaver, Tom Lane) + + + + The original coding of pg_dump's tar + output mode produced files that are not fully conformant with the + POSIX standard. This has been corrected for version 9.3. This + patch updates previous branches so that they will accept both the + incorrect and the corrected formats, in hopes of avoiding + compatibility problems when 9.3 comes out. + + + + + + Fix pg_resetxlog to locate postmaster.pid + correctly when given a relative path to the data directory (Tom Lane) + + + + This mistake could lead to pg_resetxlog not noticing + that there is an active postmaster using the data directory. + + + + + + Fix libpq's lo_import() and + lo_export() functions to report file I/O errors properly + (Tom Lane) + + + + + + Fix ecpg's processing of nested structure pointer + variables (Muhammad Usama) + + + + + + Make contrib/pageinspect's btree page inspection + functions take buffer locks while examining pages (Tom Lane) + + + + + + Fix pgxs support for building loadable modules on AIX + (Tom Lane) + + + + Building modules outside the original source tree didn't work on AIX. + + + + + + Update time zone data files to tzdata release 2012j + for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western + Samoa, and portions of Brazil. + + + + + + + + + + Release 8.4.14 + + + Release Date + 2012-09-24 + + + + This release contains a variety of fixes from 8.4.13. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.14 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.10, + see . + + + + + + Changes + + + + + + Fix planner's assignment of executor parameters, and fix executor's + rescan logic for CTE plan nodes (Tom Lane) + + + + These errors could result in wrong answers from queries that scan the + same WITH subquery multiple times. + + + + + + Improve page-splitting decisions in GiST indexes (Alexander Korotkov, + Robert Haas, Tom Lane) + + + + Multi-column GiST indexes might suffer unexpected bloat due to this + error. + + + + + + Fix cascading privilege revoke to stop if privileges are still held + (Tom Lane) + + + + If we revoke a grant option from some role X, but + X still holds that option via a grant from someone + else, we should not recursively revoke the corresponding privilege + from role(s) Y that X had granted it + to. + + + + + + Fix handling of SIGFPE when PL/Perl is in use (Andres Freund) + + + + Perl resets the process's SIGFPE handler to + SIG_IGN, which could result in crashes later on. Restore + the normal Postgres signal handler after initializing PL/Perl. + + + + + + Prevent PL/Perl from crashing if a recursive PL/Perl function is + redefined while being executed (Tom Lane) + + + + + + Work around possible misoptimization in PL/Perl (Tom Lane) + + + + Some Linux distributions contain an incorrect version of + pthread.h that results in incorrect compiled code in + PL/Perl, leading to crashes if a PL/Perl function calls another one + that throws an error. + + + + + + Update time zone data files to tzdata release 2012f + for DST law changes in Fiji + + + + + + + + + + Release 8.4.13 + + + Release Date + 2012-08-17 + + + + This release contains a variety of fixes from 8.4.12. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.13 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.10, + see . + + + + + + Changes + + + + + + Prevent access to external files/URLs via XML entity references + (Noah Misch, Tom Lane) + + + + xml_parse() would attempt to fetch external files or + URLs as needed to resolve DTD and entity references in an XML value, + thus allowing unprivileged database users to attempt to fetch data + with the privileges of the database server. While the external data + wouldn't get returned directly to the user, portions of it could be + exposed in error messages if the data didn't parse as valid XML; and + in any case the mere ability to check existence of a file might be + useful to an attacker. (CVE-2012-3489) + + + + + + Prevent access to external files/URLs via contrib/xml2's + xslt_process() (Peter Eisentraut) + + + + libxslt offers the ability to read and write both + files and URLs through stylesheet commands, thus allowing + unprivileged database users to both read and write data with the + privileges of the database server. Disable that through proper use + of libxslt's security options. (CVE-2012-3488) + + + + Also, remove xslt_process()'s ability to fetch documents + and stylesheets from external files/URLs. While this was a + documented feature, it was long regarded as a bad idea. + The fix for CVE-2012-3489 broke that capability, and rather than + expend effort on trying to fix it, we're just going to summarily + remove it. + + + + + + Prevent too-early recycling of btree index pages (Noah Misch) + + + + When we allowed read-only transactions to skip assigning XIDs, we + introduced the possibility that a deleted btree page could be + recycled while a read-only transaction was still in flight to it. + This would result in incorrect index search results. The probability + of such an error occurring in the field seems very low because of the + timing requirements, but nonetheless it should be fixed. + + + + + + Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane) + + + + If ALTER SEQUENCE was executed on a freshly created or + reset sequence, and then precisely one nextval() call + was made on it, and then the server crashed, WAL replay would restore + the sequence to a state in which it appeared that no + nextval() had been done, thus allowing the first + sequence value to be returned again by the next + nextval() call. In particular this could manifest for + serial columns, since creation of a serial column's sequence + includes an ALTER SEQUENCE OWNED BY step. + + + + + + Ensure the backup_label file is fsync'd after + pg_start_backup() (Dave Kerr) + + + + + + Back-patch 9.1 improvement to compress the fsync request queue + (Robert Haas) + + + + This improves performance during checkpoints. The 9.1 change + has now seen enough field testing to seem safe to back-patch. + + + + + + Only allow autovacuum to be auto-canceled by a directly blocked + process (Tom Lane) + + + + The original coding could allow inconsistent behavior in some cases; + in particular, an autovacuum could get canceled after less than + deadlock_timeout grace period. + + + + + + Improve logging of autovacuum cancels (Robert Haas) + + + + + + Fix log collector so that log_truncate_on_rotation works + during the very first log rotation after server start (Tom Lane) + + + + + + Fix WITH attached to a nested set operation + (UNION/INTERSECT/EXCEPT) + (Tom Lane) + + + + + + Ensure that a whole-row reference to a subquery doesn't include any + extra GROUP BY or ORDER BY columns (Tom Lane) + + + + + + Disallow copying whole-row references in CHECK + constraints and index definitions during CREATE TABLE + (Tom Lane) + + + + This situation can arise in CREATE TABLE with + LIKE or INHERITS. The copied whole-row + variable was incorrectly labeled with the row type of the original + table not the new one. Rejecting the case seems reasonable for + LIKE, since the row types might well diverge later. For + INHERITS we should ideally allow it, with an implicit + coercion to the parent table's row type; but that will require more + work than seems safe to back-patch. + + + + + + Fix memory leak in ARRAY(SELECT ...) subqueries (Heikki + Linnakangas, Tom Lane) + + + + + + Fix extraction of common prefixes from regular expressions (Tom Lane) + + + + The code could get confused by quantified parenthesized + subexpressions, such as ^(foo)?bar. This would lead to + incorrect index optimization of searches for such patterns. + + + + + + Fix bugs with parsing signed + hh:mm and + hh:mm:ss + fields in interval constants (Amit Kapila, Tom Lane) + + + + + + Report errors properly in contrib/xml2's + xslt_process() (Tom Lane) + + + + + + Update time zone data files to tzdata release 2012e + for DST law changes in Morocco and Tokelau + + + + + + + + + + Release 8.4.12 + + + Release Date + 2012-06-04 + + + + This release contains a variety of fixes from 8.4.11. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.12 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.10, + see . + + + + + + Changes + + + + + + Fix incorrect password transformation in + contrib/pgcrypto's DES crypt() function + (Solar Designer) + + + + If a password string contained the byte value 0x80, the + remainder of the password was ignored, causing the password to be much + weaker than it appeared. With this fix, the rest of the string is + properly included in the DES hash. Any stored password values that are + affected by this bug will thus no longer match, so the stored values may + need to be updated. (CVE-2012-2143) + + + + + + Ignore SECURITY DEFINER and SET attributes for + a procedural language's call handler (Tom Lane) + + + + Applying such attributes to a call handler could crash the server. + (CVE-2012-2655) + + + + + + Allow numeric timezone offsets in timestamp input to be up to + 16 hours away from UTC (Tom Lane) + + + + Some historical time zones have offsets larger than 15 hours, the + previous limit. This could result in dumped data values being rejected + during reload. + + + + + + Fix timestamp conversion to cope when the given time is exactly the + last DST transition time for the current timezone (Tom Lane) + + + + This oversight has been there a long time, but was not noticed + previously because most DST-using zones are presumed to have an + indefinite sequence of future DST transitions. + + + + + + Fix text to name and char to name + casts to perform string truncation correctly in multibyte encodings + (Karl Schnaitter) + + + + + + Fix memory copying bug in to_tsquery() (Heikki Linnakangas) + + + + + + Fix planner's handling of outer PlaceHolderVars within subqueries (Tom + Lane) + + + + This bug concerns sub-SELECTs that reference variables coming from the + nullable side of an outer join of the surrounding query. + In 9.1, queries affected by this bug would fail with ERROR: + Upper-level PlaceHolderVar found where not expected. But in 9.0 and + 8.4, you'd silently get possibly-wrong answers, since the value + transmitted into the subquery wouldn't go to null when it should. + + + + + + Fix slow session startup when pg_attribute is very large + (Tom Lane) + + + + If pg_attribute exceeds one-fourth of + shared_buffers, cache rebuilding code that is sometimes + needed during session start would trigger the synchronized-scan logic, + causing it to take many times longer than normal. The problem was + particularly acute if many new sessions were starting at once. + + + + + + Ensure sequential scans check for query cancel reasonably often (Merlin + Moncure) + + + + A scan encountering many consecutive pages that contain no live tuples + would not respond to interrupts meanwhile. + + + + + + Ensure the Windows implementation of PGSemaphoreLock() + clears ImmediateInterruptOK before returning (Tom Lane) + + + + This oversight meant that a query-cancel interrupt received later + in the same query could be accepted at an unsafe time, with + unpredictable but not good consequences. + + + + + + Show whole-row variables safely when printing views or rules + (Abbas Butt, Tom Lane) + + + + Corner cases involving ambiguous names (that is, the name could be + either a table or column name of the query) were printed in an + ambiguous way, risking that the view or rule would be interpreted + differently after dump and reload. Avoid the ambiguous case by + attaching a no-op cast. + + + + + + Fix COPY FROM to properly handle null marker strings that + correspond to invalid encoding (Tom Lane) + + + + A null marker string such as E'\\0' should work, and did + work in the past, but the case got broken in 8.4. + + + + + + Ensure autovacuum worker processes perform stack depth checking + properly (Heikki Linnakangas) + + + + Previously, infinite recursion in a function invoked by + auto-ANALYZE could crash worker processes. + + + + + + Fix logging collector to not lose log coherency under high load (Andrew + Dunstan) + + + + The collector previously could fail to reassemble large messages if it + got too busy. + + + + + + Fix logging collector to ensure it will restart file rotation + after receiving SIGHUP (Tom Lane) + + + + + + Fix WAL replay logic for GIN indexes to not fail if the index was + subsequently dropped (Tom Lane) + + + + + + Fix memory leak in PL/pgSQL's RETURN NEXT command (Joe + Conway) + + + + + + Fix PL/pgSQL's GET DIAGNOSTICS command when the target + is the function's first variable (Tom Lane) + + + + + + Fix potential access off the end of memory in psql's + expanded display (\x) mode (Peter Eisentraut) + + + + + + Fix several performance problems in pg_dump when + the database contains many objects (Jeff Janes, Tom Lane) + + + + pg_dump could get very slow if the database contained + many schemas, or if many objects are in dependency loops, or if there + are many owned sequences. + + + + + + Fix contrib/dblink's dblink_exec() to not leak + temporary database connections upon error (Tom Lane) + + + + + + Fix contrib/dblink to report the correct connection name in + error messages (Kyotaro Horiguchi) + + + + + + Update time zone data files to tzdata release 2012c + for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland + Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; + also historical corrections for Canada. + + + + + + + + + + Release 8.4.11 + + + Release Date + 2012-02-27 + + + + This release contains a variety of fixes from 8.4.10. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.11 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.10, + see . + + + + + + Changes + + + + + + Require execute permission on the trigger function for + CREATE TRIGGER (Robert Haas) + + + + This missing check could allow another user to execute a trigger + function with forged input data, by installing it on a table he owns. + This is only of significance for trigger functions marked + SECURITY DEFINER, since otherwise trigger functions run + as the table owner anyway. (CVE-2012-0866) + + + + + + Remove arbitrary limitation on length of common name in SSL + certificates (Heikki Linnakangas) + + + + Both libpq and the server truncated the common name + extracted from an SSL certificate at 32 bytes. Normally this would + cause nothing worse than an unexpected verification failure, but there + are some rather-implausible scenarios in which it might allow one + certificate holder to impersonate another. The victim would have to + have a common name exactly 32 bytes long, and the attacker would have + to persuade a trusted CA to issue a certificate in which the common + name has that string as a prefix. Impersonating a server would also + require some additional exploit to redirect client connections. + (CVE-2012-0867) + + + + + + Convert newlines to spaces in names written in pg_dump + comments (Robert Haas) + + + + pg_dump was incautious about sanitizing object names + that are emitted within SQL comments in its output script. A name + containing a newline would at least render the script syntactically + incorrect. Maliciously crafted object names could present a SQL + injection risk when the script is reloaded. (CVE-2012-0868) + + + + + + Fix btree index corruption from insertions concurrent with vacuuming + (Tom Lane) + + + + An index page split caused by an insertion could sometimes cause a + concurrently-running VACUUM to miss removing index entries + that it should remove. After the corresponding table rows are removed, + the dangling index entries would cause errors (such as could not + read block N in file ...) or worse, silently wrong query results + after unrelated rows are re-inserted at the now-free table locations. + This bug has been present since release 8.2, but occurs so infrequently + that it was not diagnosed until now. If you have reason to suspect + that it has happened in your database, reindexing the affected index + will fix things. + + + + + + Update per-column permissions, not only per-table permissions, when + changing table owner (Tom Lane) + + + + Failure to do this meant that any previously granted column permissions + were still shown as having been granted by the old owner. This meant + that neither the new owner nor a superuser could revoke the + now-untraceable-to-table-owner permissions. + + + + + + Allow non-existent values for some settings in ALTER + USER/DATABASE SET (Heikki Linnakangas) + + + + Allow default_text_search_config, + default_tablespace, and temp_tablespaces to be + set to names that are not known. This is because they might be known + in another database where the setting is intended to be used, or for the + tablespace cases because the tablespace might not be created yet. The + same issue was previously recognized for search_path, and + these settings now act like that one. + + + + + + Avoid crashing when we have problems deleting table files post-commit + (Tom Lane) + + + + Dropping a table should lead to deleting the underlying disk files only + after the transaction commits. In event of failure then (for instance, + because of wrong file permissions) the code is supposed to just emit a + warning message and go on, since it's too late to abort the + transaction. This logic got broken as of release 8.4, causing such + situations to result in a PANIC and an unrestartable database. + + + + + + Track the OID counter correctly during WAL replay, even when it wraps + around (Tom Lane) + + + + Previously the OID counter would remain stuck at a high value until the + system exited replay mode. The practical consequences of that are + usually nil, but there are scenarios wherein a standby server that's + been promoted to master might take a long time to advance the OID + counter to a reasonable value once values are needed. + + + + + + Fix regular expression back-references with * attached + (Tom Lane) + + + + Rather than enforcing an exact string match, the code would effectively + accept any string that satisfies the pattern sub-expression referenced + by the back-reference symbol. + + + + A similar problem still afflicts back-references that are embedded in a + larger quantified expression, rather than being the immediate subject + of the quantifier. This will be addressed in a future + PostgreSQL release. + + + + + + Fix recently-introduced memory leak in processing of + inet/cidr values (Heikki Linnakangas) + + + + A patch in the December 2011 releases of PostgreSQL + caused memory leakage in these operations, which could be significant + in scenarios such as building a btree index on such a column. + + + + + + Fix dangling pointer after CREATE TABLE AS/SELECT + INTO in a SQL-language function (Tom Lane) + + + + In most cases this only led to an assertion failure in assert-enabled + builds, but worse consequences seem possible. + + + + + + Avoid double close of file handle in syslogger on Windows (MauMau) + + + + Ordinarily this error was invisible, but it would cause an exception + when running on a debug version of Windows. + + + + + + Fix I/O-conversion-related memory leaks in plpgsql + (Andres Freund, Jan Urbanski, Tom Lane) + + + + Certain operations would leak memory until the end of the current + function. + + + + + + Improve pg_dump's handling of inherited table columns + (Tom Lane) + + + + pg_dump mishandled situations where a child column has + a different default expression than its parent column. If the default + is textually identical to the parent's default, but not actually the + same (for instance, because of schema search path differences) it would + not be recognized as different, so that after dump and restore the + child would be allowed to inherit the parent's default. Child columns + that are NOT NULL where their parent is not could also be + restored subtly incorrectly. + + + + + + Fix pg_restore's direct-to-database mode for + INSERT-style table data (Tom Lane) + + + + Direct-to-database restores from archive files made with + + + + + + Allow AT option in ecpg + DEALLOCATE statements (Michael Meskes) + + + + The infrastructure to support this has been there for awhile, but + through an oversight there was still an error check rejecting the case. + + + + + + Fix error in contrib/intarray's int[] & + int[] operator (Guillaume Lelarge) + + + + If the smallest integer the two input arrays have in common is 1, + and there are smaller values in either array, then 1 would be + incorrectly omitted from the result. + + + + + + Fix error detection in contrib/pgcrypto's + encrypt_iv() and decrypt_iv() + (Marko Kreen) + + + + These functions failed to report certain types of invalid-input errors, + and would instead return random garbage values for incorrect input. + + + + + + Fix one-byte buffer overrun in contrib/test_parser + (Paul Guyot) + + + + The code would try to read one more byte than it should, which would + crash in corner cases. + Since contrib/test_parser is only example code, this is + not a security issue in itself, but bad example code is still bad. + + + + + + Use __sync_lock_test_and_set() for spinlocks on ARM, if + available (Martin Pitt) + + + + This function replaces our previous use of the SWPB + instruction, which is deprecated and not available on ARMv6 and later. + Reports suggest that the old code doesn't fail in an obvious way on + recent ARM boards, but simply doesn't interlock concurrent accesses, + leading to bizarre failures in multiprocess operation. + + + + + + Use + + + This prevents assorted scenarios wherein recent versions of gcc will + produce creative results. + + + + + + Allow use of threaded Python on FreeBSD (Chris Rees) + + + + Our configure script previously believed that this combination wouldn't + work; but FreeBSD fixed the problem, so remove that error check. + + + + + + + + + + Release 8.4.10 + + + Release Date + 2011-12-05 + + + + This release contains a variety of fixes from 8.4.9. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.10 + + + A dump/restore is not required for those running 8.4.X. + + + + However, a longstanding error was discovered in the definition of the + information_schema.referential_constraints view. If you + rely on correct results from that view, you should replace its + definition as explained in the first changelog item below. + + + + Also, if you are upgrading from a version earlier than 8.4.8, + see . + + + + + + Changes + + + + + + Fix bugs in information_schema.referential_constraints view + (Tom Lane) + + + + This view was being insufficiently careful about matching the + foreign-key constraint to the depended-on primary or unique key + constraint. That could result in failure to show a foreign key + constraint at all, or showing it multiple times, or claiming that it + depends on a different constraint than the one it really does. + + + + Since the view definition is installed by initdb, + merely upgrading will not fix the problem. If you need to fix this + in an existing installation, you can (as a superuser) drop the + information_schema schema then re-create it by sourcing + SHAREDIR/information_schema.sql. + (Run pg_config --sharedir if you're uncertain where + SHAREDIR is.) This must be repeated in each database + to be fixed. + + + + + + Fix incorrect replay of WAL records for GIN index updates + (Tom Lane) + + + + This could result in transiently failing to find index entries after + a crash, or on a hot-standby server. The problem would be repaired + by the next VACUUM of the index, however. + + + + + + Fix TOAST-related data corruption during CREATE TABLE dest AS + SELECT * FROM src or INSERT INTO dest SELECT * FROM src + (Tom Lane) + + + + If a table has been modified by ALTER TABLE ADD COLUMN, + attempts to copy its data verbatim to another table could produce + corrupt results in certain corner cases. + The problem can only manifest in this precise form in 8.4 and later, + but we patched earlier versions as well in case there are other code + paths that could trigger the same bug. + + + + + + Fix race condition during toast table access from stale syscache entries + (Tom Lane) + + + + The typical symptom was transient errors like missing chunk + number 0 for toast value NNNNN in pg_toast_2619, where the cited + toast table would always belong to a system catalog. + + + + + + Track dependencies of functions on items used in parameter default + expressions (Tom Lane) + + + + Previously, a referenced object could be dropped without having dropped + or modified the function, leading to misbehavior when the function was + used. Note that merely installing this update will not fix the missing + dependency entries; to do that, you'd need to CREATE OR + REPLACE each such function afterwards. If you have functions whose + defaults depend on non-built-in objects, doing so is recommended. + + + + + + Allow inlining of set-returning SQL functions with multiple OUT + parameters (Tom Lane) + + + + + + Make DatumGetInetP() unpack inet datums that have a 1-byte + header, and add a new macro, DatumGetInetPP(), that does + not (Heikki Linnakangas) + + + + This change affects no core code, but might prevent crashes in add-on + code that expects DatumGetInetP() to produce an unpacked + datum as per usual convention. + + + + + + Improve locale support in money type's input and output + (Tom Lane) + + + + Aside from not supporting all standard + lc_monetary + formatting options, the input and output functions were inconsistent, + meaning there were locales in which dumped money values could + not be re-read. + + + + + + Don't let transform_null_equals + affect CASE foo WHEN NULL ... constructs + (Heikki Linnakangas) + + + + transform_null_equals is only supposed to affect + foo = NULL expressions written directly by the user, not + equality checks generated internally by this form of CASE. + + + + + + Change foreign-key trigger creation order to better support + self-referential foreign keys (Tom Lane) + + + + For a cascading foreign key that references its own table, a row update + will fire both the ON UPDATE trigger and the + CHECK trigger as one event. The ON UPDATE + trigger must execute first, else the CHECK will check a + non-final state of the row and possibly throw an inappropriate error. + However, the firing order of these triggers is determined by their + names, which generally sort in creation order since the triggers have + auto-generated names following the convention + RI_ConstraintTrigger_NNNN. A proper fix would require + modifying that convention, which we will do in 9.2, but it seems risky + to change it in existing releases. So this patch just changes the + creation order of the triggers. Users encountering this type of error + should drop and re-create the foreign key constraint to get its + triggers into the right order. + + + + + + Avoid floating-point underflow while tracking buffer allocation rate + (Greg Matthews) + + + + While harmless in itself, on certain platforms this would result in + annoying kernel log messages. + + + + + + Preserve configuration file name and line number values when starting + child processes under Windows (Tom Lane) + + + + Formerly, these would not be displayed correctly in the + pg_settings view. + + + + + + Preserve blank lines within commands in psql's command + history (Robert Haas) + + + + The former behavior could cause problems if an empty line was removed + from within a string literal, for example. + + + + + + Fix pg_dump to dump user-defined casts between + auto-generated types, such as table rowtypes (Tom Lane) + + + + + + Use the preferred version of xsubpp to build PL/Perl, + not necessarily the operating system's main copy + (David Wheeler and Alex Hunsaker) + + + + + + Fix incorrect coding in contrib/dict_int and + contrib/dict_xsyn (Tom Lane) + + + + Some functions incorrectly assumed that memory returned by + palloc() is guaranteed zeroed. + + + + + + Honor query cancel interrupts promptly in pgstatindex() + (Robert Haas) + + + + + + Ensure VPATH builds properly install all server header files + (Peter Eisentraut) + + + + + + Shorten file names reported in verbose error messages (Peter Eisentraut) + + + + Regular builds have always reported just the name of the C file + containing the error message call, but VPATH builds formerly + reported an absolute path name. + + + + + + Fix interpretation of Windows timezone names for Central America + (Tom Lane) + + + + Map Central America Standard Time to CST6, not + CST6CDT, because DST is generally not observed anywhere in + Central America. + + + + + + Update time zone data files to tzdata release 2011n + for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa; + also historical corrections for Alaska and British East Africa. + + + + + + + + + + Release 8.4.9 + + + Release Date + 2011-09-26 + + + + This release contains a variety of fixes from 8.4.8. + For information about new features in the 8.4 major release, see + . + + + + Migration to Version 8.4.9 + + + A dump/restore is not required for those running 8.4.X. + + + + However, if you are upgrading from a version earlier than 8.4.8, + see . + + + + + + Changes + + + + + + Fix bugs in indexing of in-doubt HOT-updated tuples (Tom Lane) + + + + These bugs could result in index corruption after reindexing a system + catalog. They are not believed to affect user indexes. + + + + + + Fix multiple bugs in GiST index page split processing (Heikki + Linnakangas) + + + + The probability of occurrence was low, but these could lead to index + corruption. + + + + + + Fix possible buffer overrun in tsvector_concat() + (Tom Lane) + + + + The function could underestimate the amount of memory needed for its + result, leading to server crashes. + + + + + + Fix crash in xml_recv when processing a + standalone parameter (Tom Lane) + + + + + + Make pg_options_to_table return NULL for an option with no + value (Tom Lane) + + + + Previously such cases would result in a server crash. + + + + + + Avoid possibly accessing off the end of memory in ANALYZE + and in SJIS-2004 encoding conversion (Noah Misch) + + + + This fixes some very-low-probability server crash scenarios. + + + + + + Prevent intermittent hang in interactions of startup process with + bgwriter process (Simon Riggs) + + + + This affected recovery in non-hot-standby cases. + + + + + + Fix race condition in relcache init file invalidation (Tom Lane) + + + + There was a window wherein a new backend process could read a stale init + file but miss the inval messages that would tell it the data is stale. + The result would be bizarre failures in catalog accesses, typically + could not read block 0 in file ... later during startup. + + + + + + Fix memory leak at end of a GiST index scan (Tom Lane) + + + + Commands that perform many separate GiST index scans, such as + verification of a new GiST-based exclusion constraint on a table + already containing many rows, could transiently require large amounts of + memory due to this leak. + + + + + + Fix incorrect memory accounting (leading to possible memory bloat) in + tuplestores supporting holdable cursors and plpgsql's RETURN + NEXT command (Tom Lane) + + + + + + Fix performance problem when constructing a large, lossy bitmap + (Tom Lane) + + + + + + Fix join selectivity estimation for unique columns (Tom Lane) + + + + This fixes an erroneous planner heuristic that could lead to poor + estimates of the result size of a join. + + + + + + Fix nested PlaceHolderVar expressions that appear only in sub-select + target lists (Tom Lane) + + + + This mistake could result in outputs of an outer join incorrectly + appearing as NULL. + + + + + + Allow nested EXISTS queries to be optimized properly (Tom + Lane) + + + + + + Fix array- and path-creating functions to ensure padding bytes are + zeroes (Tom Lane) + + + + This avoids some situations where the planner will think that + semantically-equal constants are not equal, resulting in poor + optimization. + + + + + + Fix EXPLAIN to handle gating Result nodes within + inner-indexscan subplans (Tom Lane) + + + + The usual symptom of this oversight was bogus varno errors. + + + + + + Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane) + + + + This could lead to loss of committed transactions after a server crash. + + + + + + Fix dump bug for VALUES in a view (Tom Lane) + + + + + + Disallow SELECT FOR UPDATE/SHARE on sequences (Tom Lane) + + + + This operation doesn't work as expected and can lead to failures. + + + + + + Fix VACUUM so that it always updates + pg_class.reltuples/relpages (Tom + Lane) + + + + This fixes some scenarios where autovacuum could make increasingly poor + decisions about when to vacuum tables. + + + + + + Defend against integer overflow when computing size of a hash table (Tom + Lane) + + + + + + Fix cases where CLUSTER might attempt to access + already-removed TOAST data (Tom Lane) + + + + + + Fix portability bugs in use of credentials control messages for + peer authentication (Tom Lane) + + + + + + Fix SSPI login when multiple roundtrips are required (Ahmed Shinwari, + Magnus Hagander) + + + + The typical symptom of this problem was The function requested is + not supported errors during SSPI login. + + + + + + Throw an error if pg_hba.conf contains hostssl + but SSL is disabled (Tom Lane) + + + + This was concluded to be more user-friendly than the previous behavior + of silently ignoring such lines. + + + + + + Fix typo in pg_srand48 seed initialization (Andres Freund) + + + + This led to failure to use all bits of the provided seed. This function + is not used on most platforms (only those without srandom), + and the potential security exposure from a less-random-than-expected + seed seems minimal in any case. + + + + + + Avoid integer overflow when the sum of LIMIT and + OFFSET values exceeds 2^63 (Heikki Linnakangas) + + + + + + Add overflow checks to int4 and int8 versions of + generate_series() (Robert Haas) + + + + + + Fix trailing-zero removal in to_char() (Marti Raudsepp) + + + + In a format with FM and no digit positions + after the decimal point, zeroes to the left of the decimal point could + be removed incorrectly. + + + + + + Fix pg_size_pretty() to avoid overflow for inputs close to + 2^63 (Tom Lane) + + + + + + Weaken plpgsql's check for typmod matching in record values (Tom Lane) + + + + An overly enthusiastic check could lead to discarding length modifiers + that should have been kept. + + + + + + Correctly handle quotes in locale names during initdb + (Heikki Linnakangas) + + + + The case can arise with some Windows locales, such as People's + Republic of China. + + + + + + Fix pg_upgrade to preserve toast tables' relfrozenxids + during an upgrade from 8.3 (Bruce Momjian) + + + + Failure to do this could lead to pg_clog files being + removed too soon after the upgrade. + + + + + + In pg_ctl, support silent mode for service registrations + on Windows (MauMau) + + + + + + Fix psql's counting of script file line numbers during + COPY from a different file (Tom Lane) + + + + + + Fix pg_restore's direct-to-database mode for + standard_conforming_strings (Tom Lane) + + + + pg_restore could emit incorrect commands when restoring + directly to a database server from an archive file that had been made + with standard_conforming_strings set to on. + + + + + + Be more user-friendly about unsupported cases for parallel + pg_restore (Tom Lane) + + + + This change ensures that such cases are detected and reported before + any restore actions have been taken. + + + + + + Fix write-past-buffer-end and memory leak in libpq's + LDAP service lookup code (Albe Laurenz) + + + + + + In libpq, avoid failures when using nonblocking I/O + and an SSL connection (Martin Pihlak, Tom Lane) + + + + + + Improve libpq's handling of failures during connection startup + (Tom Lane) + + + + In particular, the response to a server report of fork() + failure during SSL connection startup is now saner. + + + + + + Improve libpq's error reporting for SSL failures (Tom + Lane) + + + + + + Fix PQsetvalue() to avoid possible crash when adding a new + tuple to a PGresult originally obtained from a server + query (Andrew Chernow) + + + + + + Make ecpglib write double values with 15 digits + precision (Akira Kurosawa) + + + + + + In ecpglib, be sure LC_NUMERIC setting is + restored after an error (Michael Meskes) + + + + + + Apply upstream fix for blowfish signed-character bug (CVE-2011-2483) + (Tom Lane) + + + + contrib/pg_crypto's blowfish encryption code could give + wrong results on platforms where char is signed (which is most), + leading to encrypted passwords being weaker than they should be. + + + + + + Fix memory leak in contrib/seg (Heikki Linnakangas) + + + + + + Fix pgstatindex() to give consistent results for empty + indexes (Tom Lane) + + + + + + Allow building with perl 5.14 (Alex Hunsaker) + + + + + + Update configure script's method for probing existence of system + functions (Tom Lane) + + + + The version of autoconf we used in 8.3 and 8.2 could be fooled by + compilers that perform link-time optimization. + + + + + + Fix assorted issues with build and install file paths containing spaces + (Tom Lane) + + + + + + Update time zone data files to tzdata release 2011i + for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan. + + + + + + + + Release 8.4.8 @@ -35,7 +3595,7 @@ Also, if you are upgrading from a version earlier than 8.4.2, - see the release notes for 8.4.2. + see . @@ -269,7 +3829,7 @@ A dump/restore is not required for those running 8.4.X. However, if you are upgrading from a version earlier than 8.4.2, - see the release notes for 8.4.2. + see . @@ -401,7 +3961,7 @@ A dump/restore is not required for those running 8.4.X. However, if you are upgrading from a version earlier than 8.4.2, - see the release notes for 8.4.2. + see . @@ -712,7 +4272,7 @@ A dump/restore is not required for those running 8.4.X. However, if you are upgrading from a version earlier than 8.4.2, - see the release notes for 8.4.2. + see . @@ -1234,7 +4794,7 @@ A dump/restore is not required for those running 8.4.X. However, if you are upgrading from a version earlier than 8.4.2, - see the release notes for 8.4.2. + see . @@ -1525,7 +5085,7 @@ A dump/restore is not required for those running 8.4.X. However, if you are upgrading from a version earlier than 8.4.2, - see the release notes for 8.4.2. + see . @@ -2062,7 +5622,7 @@ - This fix prevents a PANIC if a VACUUM FULL is cancelled + This fix prevents a PANIC if a VACUUM FULL is canceled after it's already committed its tuple movements, as well as transient errors if a plain VACUUM is interrupted after having truncated the table. diff --git a/doc/src/sgml/release-9.0.sgml b/doc/src/sgml/release-9.0.sgml index 4b232f065f..377e970429 100644 --- a/doc/src/sgml/release-9.0.sgml +++ b/doc/src/sgml/release-9.0.sgml @@ -1,6 +1,4422 @@ + + Release 9.0.17 + + + Release Date + 2014-03-20 + + + + This release contains a variety of fixes from 9.0.16. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.17 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.15, + see . + + + + + + Changes + + + + + + Restore GIN metapages unconditionally to avoid torn-page risk + (Heikki Linnakangas) + + + + Although this oversight could theoretically result in a corrupted + index, it is unlikely to have caused any problems in practice, since + the active part of a GIN metapage is smaller than a standard 512-byte + disk sector. + + + + + + Avoid race condition in checking transaction commit status during + receipt of a NOTIFY message (Marko Tiikkaja) + + + + This prevents a scenario wherein a sufficiently fast client might + respond to a notification before database updates made by the + notifier have become visible to the recipient. + + + + + + Allow regular-expression operators to be terminated early by query + cancel requests (Tom Lane) + + + + This prevents scenarios wherein a pathological regular expression + could lock up a server process uninterruptably for a long time. + + + + + + Remove incorrect code that tried to allow OVERLAPS with + single-element row arguments (Joshua Yanovski) + + + + This code never worked correctly, and since the case is neither + specified by the SQL standard nor documented, it seemed better to + remove it than fix it. + + + + + + Avoid getting more than AccessShareLock when de-parsing a + rule or view (Dean Rasheed) + + + + This oversight resulted in pg_dump unexpectedly + acquiring RowExclusiveLock locks on tables mentioned as + the targets of INSERT/UPDATE/DELETE + commands in rules. While usually harmless, that could interfere with + concurrent transactions that tried to acquire, for example, + ShareLock on those tables. + + + + + + Improve performance of index endpoint probes during planning (Tom Lane) + + + + This change fixes a significant performance problem that occurred + when there were many not-yet-committed rows at the end of the index, + which is a common situation for indexes on sequentially-assigned + values such as timestamps or sequence-generated identifiers. + + + + + + Fix test to see if hot standby connections can be allowed immediately + after a crash (Heikki Linnakangas) + + + + + + Prevent interrupts while reporting non-ERROR messages + (Tom Lane) + + + + This guards against rare server-process freezeups due to recursive + entry to syslog(), and perhaps other related problems. + + + + + + Prevent intermittent could not reserve shared memory region + failures on recent Windows versions (MauMau) + + + + + + Update time zone data files to tzdata release 2014a + for DST law changes in Fiji and Turkey, plus historical changes in + Israel and Ukraine. + + + + + + + + + + + + + Release 9.0.16 + + + Release Date + 2014-02-20 + + + + This release contains a variety of fixes from 9.0.15. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.16 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.15, + see . + + + + + + Changes + + + + + + Shore up GRANT ... WITH ADMIN OPTION restrictions + (Noah Misch) + + + + Granting a role without ADMIN OPTION is supposed to + prevent the grantee from adding or removing members from the granted + role, but this restriction was easily bypassed by doing SET + ROLE first. The security impact is mostly that a role member can + revoke the access of others, contrary to the wishes of his grantor. + Unapproved role member additions are a lesser concern, since an + uncooperative role member could provide most of his rights to others + anyway by creating views or SECURITY DEFINER functions. + (CVE-2014-0060) + + + + + + Prevent privilege escalation via manual calls to PL validator + functions (Andres Freund) + + + + The primary role of PL validator functions is to be called implicitly + during CREATE FUNCTION, but they are also normal SQL + functions that a user can call explicitly. Calling a validator on + a function actually written in some other language was not checked + for and could be exploited for privilege-escalation purposes. + The fix involves adding a call to a privilege-checking function in + each validator function. Non-core procedural languages will also + need to make this change to their own validator functions, if any. + (CVE-2014-0061) + + + + + + Avoid multiple name lookups during table and index DDL + (Robert Haas, Andres Freund) + + + + If the name lookups come to different conclusions due to concurrent + activity, we might perform some parts of the DDL on a different table + than other parts. At least in the case of CREATE INDEX, + this can be used to cause the permissions checks to be performed + against a different table than the index creation, allowing for a + privilege escalation attack. + (CVE-2014-0062) + + + + + + Prevent buffer overrun with long datetime strings (Noah Misch) + + + + The MAXDATELEN constant was too small for the longest + possible value of type interval, allowing a buffer overrun + in interval_out(). Although the datetime input + functions were more careful about avoiding buffer overrun, the limit + was short enough to cause them to reject some valid inputs, such as + input containing a very long timezone name. The ecpg + library contained these vulnerabilities along with some of its own. + (CVE-2014-0063) + + + + + + Prevent buffer overrun due to integer overflow in size calculations + (Noah Misch, Heikki Linnakangas) + + + + Several functions, mostly type input functions, calculated an + allocation size without checking for overflow. If overflow did + occur, a too-small buffer would be allocated and then written past. + (CVE-2014-0064) + + + + + + Prevent overruns of fixed-size buffers + (Peter Eisentraut, Jozef Mlich) + + + + Use strlcpy() and related functions to provide a clear + guarantee that fixed-size buffers are not overrun. Unlike the + preceding items, it is unclear whether these cases really represent + live issues, since in most cases there appear to be previous + constraints on the size of the input string. Nonetheless it seems + prudent to silence all Coverity warnings of this type. + (CVE-2014-0065) + + + + + + Avoid crashing if crypt() returns NULL (Honza Horak, + Bruce Momjian) + + + + There are relatively few scenarios in which crypt() + could return NULL, but contrib/chkpass would crash + if it did. One practical case in which this could be an issue is + if libc is configured to refuse to execute unapproved + hashing algorithms (e.g., FIPS mode). + (CVE-2014-0066) + + + + + + Document risks of make check in the regression testing + instructions (Noah Misch, Tom Lane) + + + + Since the temporary server started by make check + uses trust authentication, another user on the same machine + could connect to it as database superuser, and then potentially + exploit the privileges of the operating-system user who started the + tests. A future release will probably incorporate changes in the + testing procedure to prevent this risk, but some public discussion is + needed first. So for the moment, just warn people against using + make check when there are untrusted users on the + same machine. + (CVE-2014-0067) + + + + + + Fix possible mis-replay of WAL records when some segments of a + relation aren't full size (Greg Stark, Tom Lane) + + + + The WAL update could be applied to the wrong page, potentially many + pages past where it should have been. Aside from corrupting data, + this error has been observed to result in significant bloat + of standby servers compared to their masters, due to updates being + applied far beyond where the end-of-file should have been. This + failure mode does not appear to be a significant risk during crash + recovery, only when initially synchronizing a standby created from a + base backup taken from a quickly-changing master. + + + + + + Fix bug in determining when recovery has reached consistency + (Tomonari Katsumata, Heikki Linnakangas) + + + + In some cases WAL replay would mistakenly conclude that the database + was already consistent at the start of replay, thus possibly allowing + hot-standby queries before the database was really consistent. Other + symptoms such as PANIC: WAL contains references to invalid + pages were also possible. + + + + + + Fix improper locking of btree index pages while replaying + a VACUUM operation in hot-standby mode (Andres Freund, + Heikki Linnakangas, Tom Lane) + + + + This error could result in PANIC: WAL contains references to + invalid pages failures. + + + + + + Ensure that insertions into non-leaf GIN index pages write a full-page + WAL record when appropriate (Heikki Linnakangas) + + + + The previous coding risked index corruption in the event of a + partial-page write during a system crash. + + + + + + Fix race conditions during server process exit (Robert Haas) + + + + Ensure that signal handlers don't attempt to use the + process's MyProc pointer after it's no longer valid. + + + + + + Fix unsafe references to errno within error reporting + logic (Christian Kruse) + + + + This would typically lead to odd behaviors such as missing or + inappropriate HINT fields. + + + + + + Fix possible crashes from using ereport() too early + during server startup (Tom Lane) + + + + The principal case we've seen in the field is a crash if the server + is started in a directory it doesn't have permission to read. + + + + + + Clear retry flags properly in OpenSSL socket write + function (Alexander Kukushkin) + + + + This omission could result in a server lockup after unexpected loss + of an SSL-encrypted connection. + + + + + + Fix length checking for Unicode identifiers (U&"..." + syntax) containing escapes (Tom Lane) + + + + A spurious truncation warning would be printed for such identifiers + if the escaped form of the identifier was too long, but the + identifier actually didn't need truncation after de-escaping. + + + + + + Allow keywords that are type names to be used in lists of roles + (Stephen Frost) + + + + A previous patch allowed such keywords to be used without quoting + in places such as role identifiers; but it missed cases where a + list of role identifiers was permitted, such as DROP ROLE. + + + + + + Fix possible crash due to invalid plan for nested sub-selects, such + as WHERE (... x IN (SELECT ...) ...) IN (SELECT ...) + (Tom Lane) + + + + + + Ensure that ANALYZE creates statistics for a table column + even when all the values in it are too wide (Tom Lane) + + + + ANALYZE intentionally omits very wide values from its + histogram and most-common-values calculations, but it neglected to do + something sane in the case that all the sampled entries are too wide. + + + + + + In ALTER TABLE ... SET TABLESPACE, allow the database's + default tablespace to be used without a permissions check + (Stephen Frost) + + + + CREATE TABLE has always allowed such usage, + but ALTER TABLE didn't get the memo. + + + + + + Fix cannot accept a set error when some arms of + a CASE return a set and others don't (Tom Lane) + + + + + + Fix checks for all-zero client addresses in pgstat functions (Kevin + Grittner) + + + + + + Fix possible misclassification of multibyte characters by the text + search parser (Tom Lane) + + + + Non-ASCII characters could be misclassified when using C locale with + a multibyte encoding. On Cygwin, non-C locales could fail as well. + + + + + + Fix possible misbehavior in plainto_tsquery() + (Heikki Linnakangas) + + + + Use memmove() not memcpy() for copying + overlapping memory regions. There have been no field reports of + this actually causing trouble, but it's certainly risky. + + + + + + Accept SHIFT_JIS as an encoding name for locale checking + purposes (Tatsuo Ishii) + + + + + + Fix misbehavior of PQhost() on Windows (Fujii Masao) + + + + It should return localhost if no host has been specified. + + + + + + Improve error handling in libpq and psql + for failures during COPY TO STDOUT/FROM STDIN (Tom Lane) + + + + In particular this fixes an infinite loop that could occur in 9.2 and + up if the server connection was lost during COPY FROM + STDIN. Variants of that scenario might be possible in older + versions, or with other client applications. + + + + + + Fix misaligned descriptors in ecpg (MauMau) + + + + + + In ecpg, handle lack of a hostname in the connection + parameters properly (Michael Meskes) + + + + + + Fix performance regression in contrib/dblink connection + startup (Joe Conway) + + + + Avoid an unnecessary round trip when client and server encodings match. + + + + + + In contrib/isn, fix incorrect calculation of the check + digit for ISMN values (Fabien Coelho) + + + + + + Ensure client-code-only installation procedure works as documented + (Peter Eisentraut) + + + + + + In Mingw and Cygwin builds, install the libpq DLL + in the bin directory (Andrew Dunstan) + + + + This duplicates what the MSVC build has long done. It should fix + problems with programs like psql failing to start + because they can't find the DLL. + + + + + + Avoid using the deprecated dllwrap tool in Cygwin builds + (Marco Atzeri) + + + + + + Don't generate plain-text HISTORY + and src/test/regress/README files anymore (Tom Lane) + + + + These text files duplicated the main HTML and PDF documentation + formats. The trouble involved in maintaining them greatly outweighs + the likely audience for plain-text format. Distribution tarballs + will still contain files by these names, but they'll just be stubs + directing the reader to consult the main documentation. + The plain-text INSTALL file will still be maintained, as + there is arguably a use-case for that. + + + + + + Update time zone data files to tzdata release 2013i + for DST law changes in Jordan and historical changes in Cuba. + + + + In addition, the zones Asia/Riyadh87, + Asia/Riyadh88, and Asia/Riyadh89 have been + removed, as they are no longer maintained by IANA, and never + represented actual civil timekeeping practice. + + + + + + + + + + Release 9.0.15 + + + Release Date + 2013-12-05 + + + + This release contains a variety of fixes from 9.0.14. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.15 + + + A dump/restore is not required for those running 9.0.X. + + + + However, this release corrects a number of potential data corruption + issues. See the first two changelog entries below to find out whether + your installation has been affected and what steps you can take if so. + + + + Also, if you are upgrading from a version earlier than 9.0.13, + see . + + + + + + Changes + + + + + + Fix VACUUM's tests to see whether it can + update relfrozenxid (Andres Freund) + + + + In some cases VACUUM (either manual or autovacuum) could + incorrectly advance a table's relfrozenxid value, + allowing tuples to escape freezing, causing those rows to become + invisible once 2^31 transactions have elapsed. The probability of + data loss is fairly low since multiple incorrect advancements would + need to happen before actual loss occurs, but it's not zero. Users + upgrading from releases 9.0.4 or 8.4.8 or earlier are not affected, but + all later versions contain the bug. + + + + The issue can be ameliorated by, after upgrading, vacuuming all tables + in all databases while having vacuum_freeze_table_age + set to zero. This will fix any latent corruption but will not be able + to fix all pre-existing data errors. However, an installation can be + presumed safe after performing this vacuuming if it has executed fewer + than 2^31 update transactions in its lifetime (check this with + SELECT txid_current() < 2^31). + + + + + + Fix initialization of pg_clog and pg_subtrans + during hot standby startup (Andres Freund, Heikki Linnakangas) + + + + This bug can cause data loss on standby servers at the moment they + start to accept hot-standby queries, by marking committed transactions + as uncommitted. The likelihood of such corruption is small unless, at + the time of standby startup, the primary server has executed many + updating transactions since its last checkpoint. Symptoms include + missing rows, rows that should have been deleted being still visible, + and obsolete versions of updated rows being still visible alongside + their newer versions. + + + + This bug was introduced in versions 9.3.0, 9.2.5, 9.1.10, and 9.0.14. + Standby servers that have only been running earlier releases are not + at risk. It's recommended that standby servers that have ever run any + of the buggy releases be re-cloned from the primary (e.g., with a new + base backup) after upgrading. + + + + + + Truncate pg_multixact contents during WAL replay + (Andres Freund) + + + + This avoids ever-increasing disk space consumption in standby servers. + + + + + + Fix race condition in GIN index posting tree page deletion (Heikki + Linnakangas) + + + + This could lead to transient wrong answers or query failures. + + + + + + Avoid flattening a subquery whose SELECT list contains a + volatile function wrapped inside a sub-SELECT (Tom Lane) + + + + This avoids unexpected results due to extra evaluations of the + volatile function. + + + + + + Fix planner's processing of non-simple-variable subquery outputs + nested within outer joins (Tom Lane) + + + + This error could lead to incorrect plans for queries involving + multiple levels of subqueries within JOIN syntax. + + + + + + Fix premature deletion of temporary files (Andres Freund) + + + + + + Fix possible read past end of memory in rule printing (Peter Eisentraut) + + + + + + Fix array slicing of int2vector and oidvector values + (Tom Lane) + + + + Expressions of this kind are now implicitly promoted to + regular int2 or oid arrays. + + + + + + Fix incorrect behaviors when using a SQL-standard, simple GMT offset + timezone (Tom Lane) + + + + In some cases, the system would use the simple GMT offset value when + it should have used the regular timezone setting that had prevailed + before the simple offset was selected. This change also causes + the timeofday function to honor the simple GMT offset + zone. + + + + + + Prevent possible misbehavior when logging translations of Windows + error codes (Tom Lane) + + + + + + Properly quote generated command lines in pg_ctl + (Naoya Anzai and Tom Lane) + + + + This fix applies only to Windows. + + + + + + Fix pg_dumpall to work when a source database + sets default_transaction_read_only + via ALTER DATABASE SET (Kevin Grittner) + + + + Previously, the generated script would fail during restore. + + + + + + Fix ecpg's processing of lists of variables + declared varchar (Zoltán Böszörményi) + + + + + + Make contrib/lo defend against incorrect trigger definitions + (Marc Cousin) + + + + + + Update time zone data files to tzdata release 2013h + for DST law changes in Argentina, Brazil, Jordan, Libya, + Liechtenstein, Morocco, and Palestine. Also, new timezone + abbreviations WIB, WIT, WITA for Indonesia. + + + + + + + + + + Release 9.0.14 + + + Release Date + 2013-10-10 + + + + This release contains a variety of fixes from 9.0.13. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.14 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.13, + see . + + + + + + Changes + + + + + + Prevent corruption of multi-byte characters when attempting to + case-fold identifiers (Andrew Dunstan) + + + + PostgreSQL case-folds non-ASCII characters only + when using a single-byte server encoding. + + + + + + Fix checkpoint memory leak in background writer when wal_level = + hot_standby (Naoya Anzai) + + + + + + Fix memory leak caused by lo_open() failure + (Heikki Linnakangas) + + + + + + Fix memory overcommit bug when work_mem is using more + than 24GB of memory (Stephen Frost) + + + + + + Fix deadlock bug in libpq when using SSL (Stephen Frost) + + + + + + Fix possible SSL state corruption in threaded libpq applications + (Nick Phillips, Stephen Frost) + + + + + + Properly compute row estimates for boolean columns containing many NULL + values (Andrew Gierth) + + + + Previously tests like col IS NOT TRUE and col IS + NOT FALSE did not properly factor in NULL values when estimating + plan costs. + + + + + + Prevent pushing down WHERE clauses into unsafe + UNION/INTERSECT subqueries (Tom Lane) + + + + Subqueries of a UNION or INTERSECT that + contain set-returning functions or volatile functions in their + SELECT lists could be improperly optimized, leading to + run-time errors or incorrect query results. + + + + + + Fix rare case of failed to locate grouping columns + planner failure (Tom Lane) + + + + + + Improve view dumping code's handling of dropped columns in referenced + tables (Tom Lane) + + + + + + Properly record index comments created using UNIQUE + and PRIMARY KEY syntax (Andres Freund) + + + + This fixes a parallel pg_restore failure. + + + + + + Fix REINDEX TABLE and REINDEX DATABASE + to properly revalidate constraints and mark invalidated indexes as + valid (Noah Misch) + + + + REINDEX INDEX has always worked properly. + + + + + + Fix possible deadlock during concurrent CREATE INDEX + CONCURRENTLY operations (Tom Lane) + + + + + + Fix regexp_matches() handling of zero-length matches + (Jeevan Chalke) + + + + Previously, zero-length matches like '^' could return too many matches. + + + + + + Fix crash for overly-complex regular expressions (Heikki Linnakangas) + + + + + + Fix regular expression match failures for back references combined with + non-greedy quantifiers (Jeevan Chalke) + + + + + + Prevent CREATE FUNCTION from checking SET + variables unless function body checking is enabled (Tom Lane) + + + + + + Allow ALTER DEFAULT PRIVILEGES to operate on schemas + without requiring CREATE permission (Tom Lane) + + + + + + Loosen restriction on keywords used in queries (Tom Lane) + + + + Specifically, lessen keyword restrictions for role names, language + names, EXPLAIN and COPY options, and + SET values. This allows COPY ... (FORMAT + BINARY) to work as expected; previously BINARY needed + to be quoted. + + + + + + Fix pgp_pub_decrypt() so it works for secret keys with + passwords (Marko Kreen) + + + + + + Remove rare inaccurate warning during vacuum of index-less tables + (Heikki Linnakangas) + + + + + + Ensure that VACUUM ANALYZE still runs the ANALYZE phase + if its attempt to truncate the file is cancelled due to lock conflicts + (Kevin Grittner) + + + + + + Avoid possible failure when performing transaction control commands (e.g + ROLLBACK) in prepared queries (Tom Lane) + + + + + + Ensure that floating-point data input accepts standard spellings + of infinity on all platforms (Tom Lane) + + + + The C99 standard says that allowable spellings are inf, + +inf, -inf, infinity, + +infinity, and -infinity. Make sure we + recognize these even if the platform's strtod function + doesn't. + + + + + + Expand ability to compare rows to records and arrays (Rafal Rzepecki, + Tom Lane) + + + + + + Update time zone data files to tzdata release 2013d + for DST law changes in Israel, Morocco, Palestine, and Paraguay. + Also, historical zone data corrections for Macquarie Island. + + + + + + + + + + Release 9.0.13 + + + Release Date + 2013-04-04 + + + + This release contains a variety of fixes from 9.0.12. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.13 + + + A dump/restore is not required for those running 9.0.X. + + + + However, this release corrects several errors in management of GiST + indexes. After installing this update, it is advisable to + REINDEX any GiST indexes that meet one or more of the + conditions described below. + + + + Also, if you are upgrading from a version earlier than 9.0.6, + see . + + + + + + Changes + + + + + + Fix insecure parsing of server command-line switches (Mitsumasa + Kondo, Kyotaro Horiguchi) + + + + A connection request containing a database name that begins with + - could be crafted to damage or destroy + files within the server's data directory, even if the request is + eventually rejected. (CVE-2013-1899) + + + + + + Reset OpenSSL randomness state in each postmaster child process + (Marko Kreen) + + + + This avoids a scenario wherein random numbers generated by + contrib/pgcrypto functions might be relatively easy for + another database user to guess. The risk is only significant when + the postmaster is configured with ssl = on + but most connections don't use SSL encryption. (CVE-2013-1900) + + + + + + Fix GiST indexes to not use fuzzy geometric comparisons when + it's not appropriate to do so (Alexander Korotkov) + + + + The core geometric types perform comparisons using fuzzy + equality, but gist_box_same must do exact comparisons, + else GiST indexes using it might become inconsistent. After installing + this update, users should REINDEX any GiST indexes on + box, polygon, circle, or point + columns, since all of these use gist_box_same. + + + + + + Fix erroneous range-union and penalty logic in GiST indexes that use + contrib/btree_gist for variable-width data types, that is + text, bytea, bit, and numeric + columns (Tom Lane) + + + + These errors could result in inconsistent indexes in which some keys + that are present would not be found by searches, and also in useless + index bloat. Users are advised to REINDEX such indexes + after installing this update. + + + + + + Fix bugs in GiST page splitting code for multi-column indexes + (Tom Lane) + + + + These errors could result in inconsistent indexes in which some keys + that are present would not be found by searches, and also in indexes + that are unnecessarily inefficient to search. Users are advised to + REINDEX multi-column GiST indexes after installing this + update. + + + + + + Fix gist_point_consistent + to handle fuzziness consistently (Alexander Korotkov) + + + + Index scans on GiST indexes on point columns would sometimes + yield results different from a sequential scan, because + gist_point_consistent disagreed with the underlying + operator code about whether to do comparisons exactly or fuzzily. + + + + + + Fix buffer leak in WAL replay (Heikki Linnakangas) + + + + This bug could result in incorrect local pin count errors + during replay, making recovery impossible. + + + + + + Fix race condition in DELETE RETURNING (Tom Lane) + + + + Under the right circumstances, DELETE RETURNING could + attempt to fetch data from a shared buffer that the current process + no longer has any pin on. If some other process changed the buffer + meanwhile, this would lead to garbage RETURNING output, or + even a crash. + + + + + + Fix infinite-loop risk in regular expression compilation (Tom Lane, + Don Porter) + + + + + + Fix potential null-pointer dereference in regular expression compilation + (Tom Lane) + + + + + + Fix to_char() to use ASCII-only case-folding rules where + appropriate (Tom Lane) + + + + This fixes misbehavior of some template patterns that should be + locale-independent, but mishandled I and + i in Turkish locales. + + + + + + Fix unwanted rejection of timestamp 1999-12-31 24:00:00 + (Tom Lane) + + + + + + Fix logic error when a single transaction does UNLISTEN + then LISTEN (Tom Lane) + + + + The session wound up not listening for notify events at all, though it + surely should listen in this case. + + + + + + Remove useless picksplit doesn't support secondary split log + messages (Josh Hansen, Tom Lane) + + + + This message seems to have been added in expectation of code that was + never written, and probably never will be, since GiST's default + handling of secondary splits is actually pretty good. So stop nagging + end users about it. + + + + + + Fix possible failure to send a session's last few transaction + commit/abort counts to the statistics collector (Tom Lane) + + + + + + Eliminate memory leaks in PL/Perl's spi_prepare() function + (Alex Hunsaker, Tom Lane) + + + + + + Fix pg_dumpall to handle database names containing + = correctly (Heikki Linnakangas) + + + + + + Avoid crash in pg_dump when an incorrect connection + string is given (Heikki Linnakangas) + + + + + + Ignore invalid indexes in pg_dump and + pg_upgrade (Michael Paquier, Bruce Momjian) + + + + Dumping invalid indexes can cause problems at restore time, for example + if the reason the index creation failed was because it tried to enforce + a uniqueness condition not satisfied by the table's data. Also, if the + index creation is in fact still in progress, it seems reasonable to + consider it to be an uncommitted DDL change, which + pg_dump wouldn't be expected to dump anyway. + pg_upgrade now also skips invalid indexes rather than + failing. + + + + + + Fix contrib/pg_trgm's similarity() function + to return zero for trigram-less strings (Tom Lane) + + + + Previously it returned NaN due to internal division by zero. + + + + + + Update time zone data files to tzdata release 2013b + for DST law changes in Chile, Haiti, Morocco, Paraguay, and some + Russian areas. Also, historical zone data corrections for numerous + places. + + + + Also, update the time zone abbreviation files for recent changes in + Russia and elsewhere: CHOT, GET, + IRKT, KGT, KRAT, MAGT, + MAWT, MSK, NOVT, OMST, + TKT, VLAT, WST, YAKT, + YEKT now follow their current meanings, and + VOLT (Europe/Volgograd) and MIST + (Antarctica/Macquarie) are added to the default abbreviations list. + + + + + + + + + + Release 9.0.12 + + + Release Date + 2013-02-07 + + + + This release contains a variety of fixes from 9.0.11. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.12 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.6, + see . + + + + + + Changes + + + + + + Prevent execution of enum_recv from SQL (Tom Lane) + + + + The function was misdeclared, allowing a simple SQL command to crash the + server. In principle an attacker might be able to use it to examine the + contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP) + for reporting this issue. (CVE-2013-0255) + + + + + + Fix multiple problems in detection of when a consistent database + state has been reached during WAL replay (Fujii Masao, Heikki + Linnakangas, Simon Riggs, Andres Freund) + + + + + + Update minimum recovery point when truncating a relation file (Heikki + Linnakangas) + + + + Once data has been discarded, it's no longer safe to stop recovery at + an earlier point in the timeline. + + + + + + Fix missing cancellations in hot standby mode (Noah Misch, Simon Riggs) + + + + The need to cancel conflicting hot-standby queries would sometimes be + missed, allowing those queries to see inconsistent data. + + + + + + Fix SQL grammar to allow subscripting or field selection from a + sub-SELECT result (Tom Lane) + + + + + + Fix performance problems with autovacuum truncation in busy workloads + (Jan Wieck) + + + + Truncation of empty pages at the end of a table requires exclusive + lock, but autovacuum was coded to fail (and release the table lock) + when there are conflicting lock requests. Under load, it is easily + possible that truncation would never occur, resulting in table bloat. + Fix by performing a partial truncation, releasing the lock, then + attempting to re-acquire the lock and continue. This fix also greatly + reduces the average time before autovacuum releases the lock after a + conflicting request arrives. + + + + + + Protect against race conditions when scanning + pg_tablespace (Stephen Frost, Tom Lane) + + + + CREATE DATABASE and DROP DATABASE could + misbehave if there were concurrent updates of + pg_tablespace entries. + + + + + + Prevent DROP OWNED from trying to drop whole databases or + tablespaces (Álvaro Herrera) + + + + For safety, ownership of these objects must be reassigned, not dropped. + + + + + + Fix error in vacuum_freeze_table_age + implementation (Andres Freund) + + + + In installations that have existed for more than vacuum_freeze_min_age + transactions, this mistake prevented autovacuum from using partial-table + scans, so that a full-table scan would always happen instead. + + + + + + Prevent misbehavior when a RowExpr or XmlExpr + is parse-analyzed twice (Andres Freund, Tom Lane) + + + + This mistake could be user-visible in contexts such as + CREATE TABLE LIKE INCLUDING INDEXES. + + + + + + Improve defenses against integer overflow in hashtable sizing + calculations (Jeff Davis) + + + + + + Reject out-of-range dates in to_date() (Hitoshi Harada) + + + + + + Ensure that non-ASCII prompt strings are translated to the correct + code page on Windows (Alexander Law, Noah Misch) + + + + This bug affected psql and some other client programs. + + + + + + Fix possible crash in psql's \? command + when not connected to a database (Meng Qingzhong) + + + + + + Fix pg_upgrade to deal with invalid indexes safely + (Bruce Momjian) + + + + + + Fix one-byte buffer overrun in libpq's + PQprintTuples (Xi Wang) + + + + This ancient function is not used anywhere by + PostgreSQL itself, but it might still be used by some + client code. + + + + + + Make ecpglib use translated messages properly + (Chen Huajun) + + + + + + Properly install ecpg_compat and + pgtypes libraries on MSVC (Jiang Guiqing) + + + + + + Include our version of isinf() in + libecpg if it's not provided by the system + (Jiang Guiqing) + + + + + + Rearrange configure's tests for supplied functions so it is not + fooled by bogus exports from libedit/libreadline (Christoph Berg) + + + + + + Ensure Windows build number increases over time (Magnus Hagander) + + + + + + Make pgxs build executables with the right + .exe suffix when cross-compiling for Windows + (Zoltan Boszormenyi) + + + + + + Add new timezone abbreviation FET (Tom Lane) + + + + This is now used in some eastern-European time zones. + + + + + + + + + + Release 9.0.11 + + + Release Date + 2012-12-06 + + + + This release contains a variety of fixes from 9.0.10. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.11 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.6, + see . + + + + + + Changes + + + + + + Fix multiple bugs associated with CREATE INDEX + CONCURRENTLY (Andres Freund, Tom Lane) + + + + Fix CREATE INDEX CONCURRENTLY to use + in-place updates when changing the state of an index's + pg_index row. This prevents race conditions that could + cause concurrent sessions to miss updating the target index, thus + resulting in corrupt concurrently-created indexes. + + + + Also, fix various other operations to ensure that they ignore + invalid indexes resulting from a failed CREATE INDEX + CONCURRENTLY command. The most important of these is + VACUUM, because an auto-vacuum could easily be launched + on the table before corrective action can be taken to fix or remove + the invalid index. + + + + + + Fix buffer locking during WAL replay (Tom Lane) + + + + The WAL replay code was insufficiently careful about locking buffers + when replaying WAL records that affect more than one page. This could + result in hot standby queries transiently seeing inconsistent states, + resulting in wrong answers or unexpected failures. + + + + + + Fix an error in WAL generation logic for GIN indexes (Tom Lane) + + + + This could result in index corruption, if a torn-page failure occurred. + + + + + + Properly remove startup process's virtual XID lock when promoting a + hot standby server to normal running (Simon Riggs) + + + + This oversight could prevent subsequent execution of certain + operations such as CREATE INDEX CONCURRENTLY. + + + + + + Avoid bogus out-of-sequence timeline ID errors in standby + mode (Heikki Linnakangas) + + + + + + Prevent the postmaster from launching new child processes after it's + received a shutdown signal (Tom Lane) + + + + This mistake could result in shutdown taking longer than it should, or + even never completing at all without additional user action. + + + + + + Avoid corruption of internal hash tables when out of memory + (Hitoshi Harada) + + + + + + Fix planning of non-strict equivalence clauses above outer joins + (Tom Lane) + + + + The planner could derive incorrect constraints from a clause equating + a non-strict construct to something else, for example + WHERE COALESCE(foo, 0) = 0 + when foo is coming from the nullable side of an outer join. + + + + + + Improve planner's ability to prove exclusion constraints from + equivalence classes (Tom Lane) + + + + + + Fix partial-row matching in hashed subplans to handle cross-type cases + correctly (Tom Lane) + + + + This affects multicolumn NOT IN subplans, such as + WHERE (a, b) NOT IN (SELECT x, y FROM ...) + when for instance b and y are int4 + and int8 respectively. This mistake led to wrong answers + or crashes depending on the specific datatypes involved. + + + + + + Acquire buffer lock when re-fetching the old tuple for an + AFTER ROW UPDATE/DELETE trigger (Andres Freund) + + + + In very unusual circumstances, this oversight could result in passing + incorrect data to the precheck logic for a foreign-key enforcement + trigger. That could result in a crash, or in an incorrect decision + about whether to fire the trigger. + + + + + + Fix ALTER COLUMN TYPE to handle inherited check + constraints properly (Pavan Deolasee) + + + + This worked correctly in pre-8.4 releases, and now works correctly + in 8.4 and later. + + + + + + Fix REASSIGN OWNED to handle grants on tablespaces + (Álvaro Herrera) + + + + + + Ignore incorrect pg_attribute entries for system + columns for views (Tom Lane) + + + + Views do not have any system columns. However, we forgot to + remove such entries when converting a table to a view. That's fixed + properly for 9.3 and later, but in previous branches we need to defend + against existing mis-converted views. + + + + + + Fix rule printing to dump INSERT INTO table + DEFAULT VALUES correctly (Tom Lane) + + + + + + Guard against stack overflow when there are too many + UNION/INTERSECT/EXCEPT clauses + in a query (Tom Lane) + + + + + + Prevent platform-dependent failures when dividing the minimum possible + integer value by -1 (Xi Wang, Tom Lane) + + + + + + Fix possible access past end of string in date parsing + (Hitoshi Harada) + + + + + + Fix failure to advance XID epoch if XID wraparound happens during a + checkpoint and wal_level is hot_standby + (Tom Lane, Andres Freund) + + + + While this mistake had no particular impact on + PostgreSQL itself, it was bad for + applications that rely on txid_current() and related + functions: the TXID value would appear to go backwards. + + + + + + Produce an understandable error message if the length of the path name + for a Unix-domain socket exceeds the platform-specific limit + (Tom Lane, Andrew Dunstan) + + + + Formerly, this would result in something quite unhelpful, such as + Non-recoverable failure in name resolution. + + + + + + Fix memory leaks when sending composite column values to the client + (Tom Lane) + + + + + + Make pg_ctl more robust about reading the + postmaster.pid file (Heikki Linnakangas) + + + + Fix race conditions and possible file descriptor leakage. + + + + + + Fix possible crash in psql if incorrectly-encoded data + is presented and the client_encoding setting is a + client-only encoding, such as SJIS (Jiang Guiqing) + + + + + + Fix bugs in the restore.sql script emitted by + pg_dump in tar output format (Tom Lane) + + + + The script would fail outright on tables whose names include + upper-case characters. Also, make the script capable of restoring + data in + + + + + Fix pg_restore to accept POSIX-conformant + tar files (Brian Weaver, Tom Lane) + + + + The original coding of pg_dump's tar + output mode produced files that are not fully conformant with the + POSIX standard. This has been corrected for version 9.3. This + patch updates previous branches so that they will accept both the + incorrect and the corrected formats, in hopes of avoiding + compatibility problems when 9.3 comes out. + + + + + + Fix pg_resetxlog to locate postmaster.pid + correctly when given a relative path to the data directory (Tom Lane) + + + + This mistake could lead to pg_resetxlog not noticing + that there is an active postmaster using the data directory. + + + + + + Fix libpq's lo_import() and + lo_export() functions to report file I/O errors properly + (Tom Lane) + + + + + + Fix ecpg's processing of nested structure pointer + variables (Muhammad Usama) + + + + + + Fix ecpg's ecpg_get_data function to + handle arrays properly (Michael Meskes) + + + + + + Make contrib/pageinspect's btree page inspection + functions take buffer locks while examining pages (Tom Lane) + + + + + + Fix pgxs support for building loadable modules on AIX + (Tom Lane) + + + + Building modules outside the original source tree didn't work on AIX. + + + + + + Update time zone data files to tzdata release 2012j + for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western + Samoa, and portions of Brazil. + + + + + + + + + + Release 9.0.10 + + + Release Date + 2012-09-24 + + + + This release contains a variety of fixes from 9.0.9. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.10 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.6, + see . + + + + + + Changes + + + + + + Fix planner's assignment of executor parameters, and fix executor's + rescan logic for CTE plan nodes (Tom Lane) + + + + These errors could result in wrong answers from queries that scan the + same WITH subquery multiple times. + + + + + + Improve page-splitting decisions in GiST indexes (Alexander Korotkov, + Robert Haas, Tom Lane) + + + + Multi-column GiST indexes might suffer unexpected bloat due to this + error. + + + + + + Fix cascading privilege revoke to stop if privileges are still held + (Tom Lane) + + + + If we revoke a grant option from some role X, but + X still holds that option via a grant from someone + else, we should not recursively revoke the corresponding privilege + from role(s) Y that X had granted it + to. + + + + + + Improve error messages for Hot Standby misconfiguration errors + (Gurjeet Singh) + + + + + + Fix handling of SIGFPE when PL/Perl is in use (Andres Freund) + + + + Perl resets the process's SIGFPE handler to + SIG_IGN, which could result in crashes later on. Restore + the normal Postgres signal handler after initializing PL/Perl. + + + + + + Prevent PL/Perl from crashing if a recursive PL/Perl function is + redefined while being executed (Tom Lane) + + + + + + Work around possible misoptimization in PL/Perl (Tom Lane) + + + + Some Linux distributions contain an incorrect version of + pthread.h that results in incorrect compiled code in + PL/Perl, leading to crashes if a PL/Perl function calls another one + that throws an error. + + + + + + Fix pg_upgrade's handling of line endings on Windows + (Andrew Dunstan) + + + + Previously, pg_upgrade might add or remove carriage + returns in places such as function bodies. + + + + + + On Windows, make pg_upgrade use backslash path + separators in the scripts it emits (Andrew Dunstan) + + + + + + Update time zone data files to tzdata release 2012f + for DST law changes in Fiji + + + + + + + + + + Release 9.0.9 + + + Release Date + 2012-08-17 + + + + This release contains a variety of fixes from 9.0.8. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.9 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.6, + see . + + + + + + Changes + + + + + + Prevent access to external files/URLs via XML entity references + (Noah Misch, Tom Lane) + + + + xml_parse() would attempt to fetch external files or + URLs as needed to resolve DTD and entity references in an XML value, + thus allowing unprivileged database users to attempt to fetch data + with the privileges of the database server. While the external data + wouldn't get returned directly to the user, portions of it could be + exposed in error messages if the data didn't parse as valid XML; and + in any case the mere ability to check existence of a file might be + useful to an attacker. (CVE-2012-3489) + + + + + + Prevent access to external files/URLs via contrib/xml2's + xslt_process() (Peter Eisentraut) + + + + libxslt offers the ability to read and write both + files and URLs through stylesheet commands, thus allowing + unprivileged database users to both read and write data with the + privileges of the database server. Disable that through proper use + of libxslt's security options. (CVE-2012-3488) + + + + Also, remove xslt_process()'s ability to fetch documents + and stylesheets from external files/URLs. While this was a + documented feature, it was long regarded as a bad idea. + The fix for CVE-2012-3489 broke that capability, and rather than + expend effort on trying to fix it, we're just going to summarily + remove it. + + + + + + Prevent too-early recycling of btree index pages (Noah Misch) + + + + When we allowed read-only transactions to skip assigning XIDs, we + introduced the possibility that a deleted btree page could be + recycled while a read-only transaction was still in flight to it. + This would result in incorrect index search results. The probability + of such an error occurring in the field seems very low because of the + timing requirements, but nonetheless it should be fixed. + + + + + + Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane) + + + + If ALTER SEQUENCE was executed on a freshly created or + reset sequence, and then precisely one nextval() call + was made on it, and then the server crashed, WAL replay would restore + the sequence to a state in which it appeared that no + nextval() had been done, thus allowing the first + sequence value to be returned again by the next + nextval() call. In particular this could manifest for + serial columns, since creation of a serial column's sequence + includes an ALTER SEQUENCE OWNED BY step. + + + + + + Fix txid_current() to report the correct epoch when not + in hot standby (Heikki Linnakangas) + + + + This fixes a regression introduced in the previous minor release. + + + + + + Fix bug in startup of Hot Standby when a master transaction has many + subtransactions (Andres Freund) + + + + This mistake led to failures reported as out-of-order XID + insertion in KnownAssignedXids. + + + + + + Ensure the backup_label file is fsync'd after + pg_start_backup() (Dave Kerr) + + + + + + Fix timeout handling in walsender processes (Tom Lane) + + + + WAL sender background processes neglected to establish a + SIGALRM handler, meaning they would wait forever in + some corner cases where a timeout ought to happen. + + + + + + Back-patch 9.1 improvement to compress the fsync request queue + (Robert Haas) + + + + This improves performance during checkpoints. The 9.1 change + has now seen enough field testing to seem safe to back-patch. + + + + + + Fix LISTEN/NOTIFY to cope better with I/O + problems, such as out of disk space (Tom Lane) + + + + After a write failure, all subsequent attempts to send more + NOTIFY messages would fail with messages like + Could not read from file "pg_notify/nnnn" at + offset nnnnn: Success. + + + + + + Only allow autovacuum to be auto-canceled by a directly blocked + process (Tom Lane) + + + + The original coding could allow inconsistent behavior in some cases; + in particular, an autovacuum could get canceled after less than + deadlock_timeout grace period. + + + + + + Improve logging of autovacuum cancels (Robert Haas) + + + + + + Fix log collector so that log_truncate_on_rotation works + during the very first log rotation after server start (Tom Lane) + + + + + + Fix WITH attached to a nested set operation + (UNION/INTERSECT/EXCEPT) + (Tom Lane) + + + + + + Ensure that a whole-row reference to a subquery doesn't include any + extra GROUP BY or ORDER BY columns (Tom Lane) + + + + + + Disallow copying whole-row references in CHECK + constraints and index definitions during CREATE TABLE + (Tom Lane) + + + + This situation can arise in CREATE TABLE with + LIKE or INHERITS. The copied whole-row + variable was incorrectly labeled with the row type of the original + table not the new one. Rejecting the case seems reasonable for + LIKE, since the row types might well diverge later. For + INHERITS we should ideally allow it, with an implicit + coercion to the parent table's row type; but that will require more + work than seems safe to back-patch. + + + + + + Fix memory leak in ARRAY(SELECT ...) subqueries (Heikki + Linnakangas, Tom Lane) + + + + + + Fix extraction of common prefixes from regular expressions (Tom Lane) + + + + The code could get confused by quantified parenthesized + subexpressions, such as ^(foo)?bar. This would lead to + incorrect index optimization of searches for such patterns. + + + + + + Fix bugs with parsing signed + hh:mm and + hh:mm:ss + fields in interval constants (Amit Kapila, Tom Lane) + + + + + + Use Postgres' encoding conversion functions, not Python's, when + converting a Python Unicode string to the server encoding in + PL/Python (Jan Urbanski) + + + + This avoids some corner-case problems, notably that Python doesn't + support all the encodings Postgres does. A notable functional change + is that if the server encoding is SQL_ASCII, you will get the UTF-8 + representation of the string; formerly, any non-ASCII characters in + the string would result in an error. + + + + + + Fix mapping of PostgreSQL encodings to Python encodings in PL/Python + (Jan Urbanski) + + + + + + Report errors properly in contrib/xml2's + xslt_process() (Tom Lane) + + + + + + Update time zone data files to tzdata release 2012e + for DST law changes in Morocco and Tokelau + + + + + + + + + + Release 9.0.8 + + + Release Date + 2012-06-04 + + + + This release contains a variety of fixes from 9.0.7. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.8 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.6, + see . + + + + + + Changes + + + + + + Fix incorrect password transformation in + contrib/pgcrypto's DES crypt() function + (Solar Designer) + + + + If a password string contained the byte value 0x80, the + remainder of the password was ignored, causing the password to be much + weaker than it appeared. With this fix, the rest of the string is + properly included in the DES hash. Any stored password values that are + affected by this bug will thus no longer match, so the stored values may + need to be updated. (CVE-2012-2143) + + + + + + Ignore SECURITY DEFINER and SET attributes for + a procedural language's call handler (Tom Lane) + + + + Applying such attributes to a call handler could crash the server. + (CVE-2012-2655) + + + + + + Allow numeric timezone offsets in timestamp input to be up to + 16 hours away from UTC (Tom Lane) + + + + Some historical time zones have offsets larger than 15 hours, the + previous limit. This could result in dumped data values being rejected + during reload. + + + + + + Fix timestamp conversion to cope when the given time is exactly the + last DST transition time for the current timezone (Tom Lane) + + + + This oversight has been there a long time, but was not noticed + previously because most DST-using zones are presumed to have an + indefinite sequence of future DST transitions. + + + + + + Fix text to name and char to name + casts to perform string truncation correctly in multibyte encodings + (Karl Schnaitter) + + + + + + Fix memory copying bug in to_tsquery() (Heikki Linnakangas) + + + + + + Ensure txid_current() reports the correct epoch when + executed in hot standby (Simon Riggs) + + + + + + Fix planner's handling of outer PlaceHolderVars within subqueries (Tom + Lane) + + + + This bug concerns sub-SELECTs that reference variables coming from the + nullable side of an outer join of the surrounding query. + In 9.1, queries affected by this bug would fail with ERROR: + Upper-level PlaceHolderVar found where not expected. But in 9.0 and + 8.4, you'd silently get possibly-wrong answers, since the value + transmitted into the subquery wouldn't go to null when it should. + + + + + + Fix slow session startup when pg_attribute is very large + (Tom Lane) + + + + If pg_attribute exceeds one-fourth of + shared_buffers, cache rebuilding code that is sometimes + needed during session start would trigger the synchronized-scan logic, + causing it to take many times longer than normal. The problem was + particularly acute if many new sessions were starting at once. + + + + + + Ensure sequential scans check for query cancel reasonably often (Merlin + Moncure) + + + + A scan encountering many consecutive pages that contain no live tuples + would not respond to interrupts meanwhile. + + + + + + Ensure the Windows implementation of PGSemaphoreLock() + clears ImmediateInterruptOK before returning (Tom Lane) + + + + This oversight meant that a query-cancel interrupt received later + in the same query could be accepted at an unsafe time, with + unpredictable but not good consequences. + + + + + + Show whole-row variables safely when printing views or rules + (Abbas Butt, Tom Lane) + + + + Corner cases involving ambiguous names (that is, the name could be + either a table or column name of the query) were printed in an + ambiguous way, risking that the view or rule would be interpreted + differently after dump and reload. Avoid the ambiguous case by + attaching a no-op cast. + + + + + + Fix COPY FROM to properly handle null marker strings that + correspond to invalid encoding (Tom Lane) + + + + A null marker string such as E'\\0' should work, and did + work in the past, but the case got broken in 8.4. + + + + + + Ensure autovacuum worker processes perform stack depth checking + properly (Heikki Linnakangas) + + + + Previously, infinite recursion in a function invoked by + auto-ANALYZE could crash worker processes. + + + + + + Fix logging collector to not lose log coherency under high load (Andrew + Dunstan) + + + + The collector previously could fail to reassemble large messages if it + got too busy. + + + + + + Fix logging collector to ensure it will restart file rotation + after receiving SIGHUP (Tom Lane) + + + + + + Fix WAL replay logic for GIN indexes to not fail if the index was + subsequently dropped (Tom Lane) + + + + + + Fix memory leak in PL/pgSQL's RETURN NEXT command (Joe + Conway) + + + + + + Fix PL/pgSQL's GET DIAGNOSTICS command when the target + is the function's first variable (Tom Lane) + + + + + + Fix potential access off the end of memory in psql's + expanded display (\x) mode (Peter Eisentraut) + + + + + + Fix several performance problems in pg_dump when + the database contains many objects (Jeff Janes, Tom Lane) + + + + pg_dump could get very slow if the database contained + many schemas, or if many objects are in dependency loops, or if there + are many owned sequences. + + + + + + Fix pg_upgrade for the case that a database stored in a + non-default tablespace contains a table in the cluster's default + tablespace (Bruce Momjian) + + + + + + In ecpg, fix rare memory leaks and possible overwrite + of one byte after the sqlca_t structure (Peter Eisentraut) + + + + + + Fix contrib/dblink's dblink_exec() to not leak + temporary database connections upon error (Tom Lane) + + + + + + Fix contrib/dblink to report the correct connection name in + error messages (Kyotaro Horiguchi) + + + + + + Fix contrib/vacuumlo to use multiple transactions when + dropping many large objects (Tim Lewis, Robert Haas, Tom Lane) + + + + This change avoids exceeding max_locks_per_transaction when + many objects need to be dropped. The behavior can be adjusted with the + new -l (limit) option. + + + + + + Update time zone data files to tzdata release 2012c + for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland + Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; + also historical corrections for Canada. + + + + + + + + + + Release 9.0.7 + + + Release Date + 2012-02-27 + + + + This release contains a variety of fixes from 9.0.6. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.7 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.6, + see . + + + + + + Changes + + + + + + Require execute permission on the trigger function for + CREATE TRIGGER (Robert Haas) + + + + This missing check could allow another user to execute a trigger + function with forged input data, by installing it on a table he owns. + This is only of significance for trigger functions marked + SECURITY DEFINER, since otherwise trigger functions run + as the table owner anyway. (CVE-2012-0866) + + + + + + Remove arbitrary limitation on length of common name in SSL + certificates (Heikki Linnakangas) + + + + Both libpq and the server truncated the common name + extracted from an SSL certificate at 32 bytes. Normally this would + cause nothing worse than an unexpected verification failure, but there + are some rather-implausible scenarios in which it might allow one + certificate holder to impersonate another. The victim would have to + have a common name exactly 32 bytes long, and the attacker would have + to persuade a trusted CA to issue a certificate in which the common + name has that string as a prefix. Impersonating a server would also + require some additional exploit to redirect client connections. + (CVE-2012-0867) + + + + + + Convert newlines to spaces in names written in pg_dump + comments (Robert Haas) + + + + pg_dump was incautious about sanitizing object names + that are emitted within SQL comments in its output script. A name + containing a newline would at least render the script syntactically + incorrect. Maliciously crafted object names could present a SQL + injection risk when the script is reloaded. (CVE-2012-0868) + + + + + + Fix btree index corruption from insertions concurrent with vacuuming + (Tom Lane) + + + + An index page split caused by an insertion could sometimes cause a + concurrently-running VACUUM to miss removing index entries + that it should remove. After the corresponding table rows are removed, + the dangling index entries would cause errors (such as could not + read block N in file ...) or worse, silently wrong query results + after unrelated rows are re-inserted at the now-free table locations. + This bug has been present since release 8.2, but occurs so infrequently + that it was not diagnosed until now. If you have reason to suspect + that it has happened in your database, reindexing the affected index + will fix things. + + + + + + Fix transient zeroing of shared buffers during WAL replay (Tom Lane) + + + + The replay logic would sometimes zero and refill a shared buffer, so + that the contents were transiently invalid. In hot standby mode this + can result in a query that's executing in parallel seeing garbage data. + Various symptoms could result from that, but the most common one seems + to be invalid memory alloc request size. + + + + + + Fix postmaster to attempt restart after a hot-standby crash (Tom Lane) + + + + A logic error caused the postmaster to terminate, rather than attempt + to restart the cluster, if any backend process crashed while operating + in hot standby mode. + + + + + + Fix CLUSTER/VACUUM FULL handling of toast + values owned by recently-updated rows (Tom Lane) + + + + This oversight could lead to duplicate key value violates unique + constraint errors being reported against the toast table's index + during one of these commands. + + + + + + Update per-column permissions, not only per-table permissions, when + changing table owner (Tom Lane) + + + + Failure to do this meant that any previously granted column permissions + were still shown as having been granted by the old owner. This meant + that neither the new owner nor a superuser could revoke the + now-untraceable-to-table-owner permissions. + + + + + + Support foreign data wrappers and foreign servers in + REASSIGN OWNED (Alvaro Herrera) + + + + This command failed with unexpected classid errors if + it needed to change the ownership of any such objects. + + + + + + Allow non-existent values for some settings in ALTER + USER/DATABASE SET (Heikki Linnakangas) + + + + Allow default_text_search_config, + default_tablespace, and temp_tablespaces to be + set to names that are not known. This is because they might be known + in another database where the setting is intended to be used, or for the + tablespace cases because the tablespace might not be created yet. The + same issue was previously recognized for search_path, and + these settings now act like that one. + + + + + + Avoid crashing when we have problems deleting table files post-commit + (Tom Lane) + + + + Dropping a table should lead to deleting the underlying disk files only + after the transaction commits. In event of failure then (for instance, + because of wrong file permissions) the code is supposed to just emit a + warning message and go on, since it's too late to abort the + transaction. This logic got broken as of release 8.4, causing such + situations to result in a PANIC and an unrestartable database. + + + + + + Recover from errors occurring during WAL replay of DROP + TABLESPACE (Tom Lane) + + + + Replay will attempt to remove the tablespace's directories, but there + are various reasons why this might fail (for example, incorrect + ownership or permissions on those directories). Formerly the replay + code would panic, rendering the database unrestartable without manual + intervention. It seems better to log the problem and continue, since + the only consequence of failure to remove the directories is some + wasted disk space. + + + + + + Fix race condition in logging AccessExclusiveLocks for hot standby + (Simon Riggs) + + + + Sometimes a lock would be logged as being held by transaction + zero. This is at least known to produce assertion failures on + slave servers, and might be the cause of more serious problems. + + + + + + Track the OID counter correctly during WAL replay, even when it wraps + around (Tom Lane) + + + + Previously the OID counter would remain stuck at a high value until the + system exited replay mode. The practical consequences of that are + usually nil, but there are scenarios wherein a standby server that's + been promoted to master might take a long time to advance the OID + counter to a reasonable value once values are needed. + + + + + + Prevent emitting misleading consistent recovery state reached + log message at the beginning of crash recovery (Heikki Linnakangas) + + + + + + Fix initial value of + pg_stat_replication.replay_location + (Fujii Masao) + + + + Previously, the value shown would be wrong until at least one WAL + record had been replayed. + + + + + + Fix regular expression back-references with * attached + (Tom Lane) + + + + Rather than enforcing an exact string match, the code would effectively + accept any string that satisfies the pattern sub-expression referenced + by the back-reference symbol. + + + + A similar problem still afflicts back-references that are embedded in a + larger quantified expression, rather than being the immediate subject + of the quantifier. This will be addressed in a future + PostgreSQL release. + + + + + + Fix recently-introduced memory leak in processing of + inet/cidr values (Heikki Linnakangas) + + + + A patch in the December 2011 releases of PostgreSQL + caused memory leakage in these operations, which could be significant + in scenarios such as building a btree index on such a column. + + + + + + Fix dangling pointer after CREATE TABLE AS/SELECT + INTO in a SQL-language function (Tom Lane) + + + + In most cases this only led to an assertion failure in assert-enabled + builds, but worse consequences seem possible. + + + + + + Avoid double close of file handle in syslogger on Windows (MauMau) + + + + Ordinarily this error was invisible, but it would cause an exception + when running on a debug version of Windows. + + + + + + Fix I/O-conversion-related memory leaks in plpgsql + (Andres Freund, Jan Urbanski, Tom Lane) + + + + Certain operations would leak memory until the end of the current + function. + + + + + + Improve pg_dump's handling of inherited table columns + (Tom Lane) + + + + pg_dump mishandled situations where a child column has + a different default expression than its parent column. If the default + is textually identical to the parent's default, but not actually the + same (for instance, because of schema search path differences) it would + not be recognized as different, so that after dump and restore the + child would be allowed to inherit the parent's default. Child columns + that are NOT NULL where their parent is not could also be + restored subtly incorrectly. + + + + + + Fix pg_restore's direct-to-database mode for + INSERT-style table data (Tom Lane) + + + + Direct-to-database restores from archive files made with + + + + + + Allow pg_upgrade to process tables containing + regclass columns (Bruce Momjian) + + + + Since pg_upgrade now takes care to preserve + pg_class OIDs, there was no longer any reason for this + restriction. + + + + + + Make libpq ignore ENOTDIR errors + when looking for an SSL client certificate file + (Magnus Hagander) + + + + This allows SSL connections to be established, though without a + certificate, even when the user's home directory is set to something + like /dev/null. + + + + + + Fix some more field alignment issues in ecpg's SQLDA area + (Zoltan Boszormenyi) + + + + + + Allow AT option in ecpg + DEALLOCATE statements (Michael Meskes) + + + + The infrastructure to support this has been there for awhile, but + through an oversight there was still an error check rejecting the case. + + + + + + Do not use the variable name when defining a varchar structure in ecpg + (Michael Meskes) + + + + + + Fix contrib/auto_explain's JSON output mode to produce + valid JSON (Andrew Dunstan) + + + + The output used brackets at the top level, when it should have used + braces. + + + + + + Fix error in contrib/intarray's int[] & + int[] operator (Guillaume Lelarge) + + + + If the smallest integer the two input arrays have in common is 1, + and there are smaller values in either array, then 1 would be + incorrectly omitted from the result. + + + + + + Fix error detection in contrib/pgcrypto's + encrypt_iv() and decrypt_iv() + (Marko Kreen) + + + + These functions failed to report certain types of invalid-input errors, + and would instead return random garbage values for incorrect input. + + + + + + Fix one-byte buffer overrun in contrib/test_parser + (Paul Guyot) + + + + The code would try to read one more byte than it should, which would + crash in corner cases. + Since contrib/test_parser is only example code, this is + not a security issue in itself, but bad example code is still bad. + + + + + + Use __sync_lock_test_and_set() for spinlocks on ARM, if + available (Martin Pitt) + + + + This function replaces our previous use of the SWPB + instruction, which is deprecated and not available on ARMv6 and later. + Reports suggest that the old code doesn't fail in an obvious way on + recent ARM boards, but simply doesn't interlock concurrent accesses, + leading to bizarre failures in multiprocess operation. + + + + + + Use + + + This prevents assorted scenarios wherein recent versions of gcc will + produce creative results. + + + + + + Allow use of threaded Python on FreeBSD (Chris Rees) + + + + Our configure script previously believed that this combination wouldn't + work; but FreeBSD fixed the problem, so remove that error check. + + + + + + + + + + Release 9.0.6 + + + Release Date + 2011-12-05 + + + + This release contains a variety of fixes from 9.0.5. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.6 + + + A dump/restore is not required for those running 9.0.X. + + + + However, a longstanding error was discovered in the definition of the + information_schema.referential_constraints view. If you + rely on correct results from that view, you should replace its + definition as explained in the first changelog item below. + + + + Also, if you are upgrading from a version earlier than 9.0.4, + see . + + + + + + Changes + + + + + + Fix bugs in information_schema.referential_constraints view + (Tom Lane) + + + + This view was being insufficiently careful about matching the + foreign-key constraint to the depended-on primary or unique key + constraint. That could result in failure to show a foreign key + constraint at all, or showing it multiple times, or claiming that it + depends on a different constraint than the one it really does. + + + + Since the view definition is installed by initdb, + merely upgrading will not fix the problem. If you need to fix this + in an existing installation, you can (as a superuser) drop the + information_schema schema then re-create it by sourcing + SHAREDIR/information_schema.sql. + (Run pg_config --sharedir if you're uncertain where + SHAREDIR is.) This must be repeated in each database + to be fixed. + + + + + + Fix possible crash during UPDATE or DELETE that + joins to the output of a scalar-returning function (Tom Lane) + + + + A crash could only occur if the target row had been concurrently + updated, so this problem surfaced only intermittently. + + + + + + Fix incorrect replay of WAL records for GIN index updates + (Tom Lane) + + + + This could result in transiently failing to find index entries after + a crash, or on a hot-standby server. The problem would be repaired + by the next VACUUM of the index, however. + + + + + + Fix TOAST-related data corruption during CREATE TABLE dest AS + SELECT * FROM src or INSERT INTO dest SELECT * FROM src + (Tom Lane) + + + + If a table has been modified by ALTER TABLE ADD COLUMN, + attempts to copy its data verbatim to another table could produce + corrupt results in certain corner cases. + The problem can only manifest in this precise form in 8.4 and later, + but we patched earlier versions as well in case there are other code + paths that could trigger the same bug. + + + + + + Fix possible failures during hot standby startup (Simon Riggs) + + + + + + Start hot standby faster when initial snapshot is incomplete + (Simon Riggs) + + + + + + Fix race condition during toast table access from stale syscache entries + (Tom Lane) + + + + The typical symptom was transient errors like missing chunk + number 0 for toast value NNNNN in pg_toast_2619, where the cited + toast table would always belong to a system catalog. + + + + + + Track dependencies of functions on items used in parameter default + expressions (Tom Lane) + + + + Previously, a referenced object could be dropped without having dropped + or modified the function, leading to misbehavior when the function was + used. Note that merely installing this update will not fix the missing + dependency entries; to do that, you'd need to CREATE OR + REPLACE each such function afterwards. If you have functions whose + defaults depend on non-built-in objects, doing so is recommended. + + + + + + Allow inlining of set-returning SQL functions with multiple OUT + parameters (Tom Lane) + + + + + + Don't trust deferred-unique indexes for join removal (Tom Lane and Marti + Raudsepp) + + + + A deferred uniqueness constraint might not hold intra-transaction, + so assuming that it does could give incorrect query results. + + + + + + Make DatumGetInetP() unpack inet datums that have a 1-byte + header, and add a new macro, DatumGetInetPP(), that does + not (Heikki Linnakangas) + + + + This change affects no core code, but might prevent crashes in add-on + code that expects DatumGetInetP() to produce an unpacked + datum as per usual convention. + + + + + + Improve locale support in money type's input and output + (Tom Lane) + + + + Aside from not supporting all standard + lc_monetary + formatting options, the input and output functions were inconsistent, + meaning there were locales in which dumped money values could + not be re-read. + + + + + + Don't let transform_null_equals + affect CASE foo WHEN NULL ... constructs + (Heikki Linnakangas) + + + + transform_null_equals is only supposed to affect + foo = NULL expressions written directly by the user, not + equality checks generated internally by this form of CASE. + + + + + + Change foreign-key trigger creation order to better support + self-referential foreign keys (Tom Lane) + + + + For a cascading foreign key that references its own table, a row update + will fire both the ON UPDATE trigger and the + CHECK trigger as one event. The ON UPDATE + trigger must execute first, else the CHECK will check a + non-final state of the row and possibly throw an inappropriate error. + However, the firing order of these triggers is determined by their + names, which generally sort in creation order since the triggers have + auto-generated names following the convention + RI_ConstraintTrigger_NNNN. A proper fix would require + modifying that convention, which we will do in 9.2, but it seems risky + to change it in existing releases. So this patch just changes the + creation order of the triggers. Users encountering this type of error + should drop and re-create the foreign key constraint to get its + triggers into the right order. + + + + + + Avoid floating-point underflow while tracking buffer allocation rate + (Greg Matthews) + + + + While harmless in itself, on certain platforms this would result in + annoying kernel log messages. + + + + + + Preserve configuration file name and line number values when starting + child processes under Windows (Tom Lane) + + + + Formerly, these would not be displayed correctly in the + pg_settings view. + + + + + + Fix incorrect field alignment in ecpg's SQLDA area + (Zoltan Boszormenyi) + + + + + + Preserve blank lines within commands in psql's command + history (Robert Haas) + + + + The former behavior could cause problems if an empty line was removed + from within a string literal, for example. + + + + + + Fix pg_dump to dump user-defined casts between + auto-generated types, such as table rowtypes (Tom Lane) + + + + + + Assorted fixes for pg_upgrade (Bruce Momjian) + + + + Handle exclusion constraints correctly, avoid failures on Windows, + don't complain about mismatched toast table names in 8.4 databases. + + + + + + Use the preferred version of xsubpp to build PL/Perl, + not necessarily the operating system's main copy + (David Wheeler and Alex Hunsaker) + + + + + + Fix incorrect coding in contrib/dict_int and + contrib/dict_xsyn (Tom Lane) + + + + Some functions incorrectly assumed that memory returned by + palloc() is guaranteed zeroed. + + + + + + Fix assorted errors in contrib/unaccent's configuration + file parsing (Tom Lane) + + + + + + Honor query cancel interrupts promptly in pgstatindex() + (Robert Haas) + + + + + + Fix incorrect quoting of log file name in Mac OS X start script + (Sidar Lopez) + + + + + + Ensure VPATH builds properly install all server header files + (Peter Eisentraut) + + + + + + Shorten file names reported in verbose error messages (Peter Eisentraut) + + + + Regular builds have always reported just the name of the C file + containing the error message call, but VPATH builds formerly + reported an absolute path name. + + + + + + Fix interpretation of Windows timezone names for Central America + (Tom Lane) + + + + Map Central America Standard Time to CST6, not + CST6CDT, because DST is generally not observed anywhere in + Central America. + + + + + + Update time zone data files to tzdata release 2011n + for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa; + also historical corrections for Alaska and British East Africa. + + + + + + + + + + Release 9.0.5 + + + Release Date + 2011-09-26 + + + + This release contains a variety of fixes from 9.0.4. + For information about new features in the 9.0 major release, see + . + + + + Migration to Version 9.0.5 + + + A dump/restore is not required for those running 9.0.X. + + + + However, if you are upgrading from a version earlier than 9.0.4, + see . + + + + + + Changes + + + + + + Fix catalog cache invalidation after a VACUUM FULL or + CLUSTER on a system catalog (Tom Lane) + + + + In some cases the relocation of a system catalog row to another place + would not be recognized by concurrent server processes, allowing catalog + corruption to occur if they then tried to update that row. The + worst-case outcome could be as bad as complete loss of a table. + + + + + + Fix incorrect order of operations during sinval reset processing, + and ensure that TOAST OIDs are preserved in system catalogs (Tom + Lane) + + + + These mistakes could lead to transient failures after a VACUUM + FULL or CLUSTER on a system catalog. + + + + + + Fix bugs in indexing of in-doubt HOT-updated tuples (Tom Lane) + + + + These bugs could result in index corruption after reindexing a system + catalog. They are not believed to affect user indexes. + + + + + + Fix multiple bugs in GiST index page split processing (Heikki + Linnakangas) + + + + The probability of occurrence was low, but these could lead to index + corruption. + + + + + + Fix possible buffer overrun in tsvector_concat() + (Tom Lane) + + + + The function could underestimate the amount of memory needed for its + result, leading to server crashes. + + + + + + Fix crash in xml_recv when processing a + standalone parameter (Tom Lane) + + + + + + Make pg_options_to_table return NULL for an option with no + value (Tom Lane) + + + + Previously such cases would result in a server crash. + + + + + + Avoid possibly accessing off the end of memory in ANALYZE + and in SJIS-2004 encoding conversion (Noah Misch) + + + + This fixes some very-low-probability server crash scenarios. + + + + + + Protect pg_stat_reset_shared() against NULL input (Magnus + Hagander) + + + + + + Fix possible failure when a recovery conflict deadlock is detected + within a sub-transaction (Tom Lane) + + + + + + Avoid spurious conflicts while recycling btree index pages during hot + standby (Noah Misch, Simon Riggs) + + + + + + Shut down WAL receiver if it's still running at end of recovery (Heikki + Linnakangas) + + + + The postmaster formerly panicked in this situation, but it's actually a + legitimate case. + + + + + + Fix race condition in relcache init file invalidation (Tom Lane) + + + + There was a window wherein a new backend process could read a stale init + file but miss the inval messages that would tell it the data is stale. + The result would be bizarre failures in catalog accesses, typically + could not read block 0 in file ... later during startup. + + + + + + Fix memory leak at end of a GiST index scan (Tom Lane) + + + + Commands that perform many separate GiST index scans, such as + verification of a new GiST-based exclusion constraint on a table + already containing many rows, could transiently require large amounts of + memory due to this leak. + + + + + + Fix memory leak when encoding conversion has to be done on incoming + command strings and LISTEN is active (Tom Lane) + + + + + + Fix incorrect memory accounting (leading to possible memory bloat) in + tuplestores supporting holdable cursors and plpgsql's RETURN + NEXT command (Tom Lane) + + + + + + Fix trigger WHEN conditions when both BEFORE and + AFTER triggers exist (Tom Lane) + + + + Evaluation of WHEN conditions for AFTER ROW + UPDATE triggers could crash if there had been a BEFORE + ROW trigger fired for the same update. + + + + + + Fix performance problem when constructing a large, lossy bitmap + (Tom Lane) + + + + + + Fix join selectivity estimation for unique columns (Tom Lane) + + + + This fixes an erroneous planner heuristic that could lead to poor + estimates of the result size of a join. + + + + + + Fix nested PlaceHolderVar expressions that appear only in sub-select + target lists (Tom Lane) + + + + This mistake could result in outputs of an outer join incorrectly + appearing as NULL. + + + + + + Allow the planner to assume that empty parent tables really are empty + (Tom Lane) + + + + Normally an empty table is assumed to have a certain minimum size for + planning purposes; but this heuristic seems to do more harm than good + for the parent table of an inheritance hierarchy, which often is + permanently empty. + + + + + + Allow nested EXISTS queries to be optimized properly (Tom + Lane) + + + + + + Fix array- and path-creating functions to ensure padding bytes are + zeroes (Tom Lane) + + + + This avoids some situations where the planner will think that + semantically-equal constants are not equal, resulting in poor + optimization. + + + + + + Fix EXPLAIN to handle gating Result nodes within + inner-indexscan subplans (Tom Lane) + + + + The usual symptom of this oversight was bogus varno errors. + + + + + + Fix btree preprocessing of indexedcol IS + NULL conditions (Dean Rasheed) + + + + Such a condition is unsatisfiable if combined with any other type of + btree-indexable condition on the same index column. The case was + handled incorrectly in 9.0.0 and later, leading to query output where + there should be none. + + + + + + Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane) + + + + This could lead to loss of committed transactions after a server crash. + + + + + + Fix dump bug for VALUES in a view (Tom Lane) + + + + + + Disallow SELECT FOR UPDATE/SHARE on sequences (Tom Lane) + + + + This operation doesn't work as expected and can lead to failures. + + + + + + Fix VACUUM so that it always updates + pg_class.reltuples/relpages (Tom + Lane) + + + + This fixes some scenarios where autovacuum could make increasingly poor + decisions about when to vacuum tables. + + + + + + Defend against integer overflow when computing size of a hash table (Tom + Lane) + + + + + + Fix cases where CLUSTER might attempt to access + already-removed TOAST data (Tom Lane) + + + + + + Fix premature timeout failures during initial authentication transaction + (Tom Lane) + + + + + + Fix portability bugs in use of credentials control messages for + peer authentication (Tom Lane) + + + + + + Fix SSPI login when multiple roundtrips are required (Ahmed Shinwari, + Magnus Hagander) + + + + The typical symptom of this problem was The function requested is + not supported errors during SSPI login. + + + + + + Fix failure when adding a new variable of a custom variable class to + postgresql.conf (Tom Lane) + + + + + + Throw an error if pg_hba.conf contains hostssl + but SSL is disabled (Tom Lane) + + + + This was concluded to be more user-friendly than the previous behavior + of silently ignoring such lines. + + + + + + Fix failure when DROP OWNED BY attempts to remove default + privileges on sequences (Shigeru Hanada) + + + + + + Fix typo in pg_srand48 seed initialization (Andres Freund) + + + + This led to failure to use all bits of the provided seed. This function + is not used on most platforms (only those without srandom), + and the potential security exposure from a less-random-than-expected + seed seems minimal in any case. + + + + + + Avoid integer overflow when the sum of LIMIT and + OFFSET values exceeds 2^63 (Heikki Linnakangas) + + + + + + Add overflow checks to int4 and int8 versions of + generate_series() (Robert Haas) + + + + + + Fix trailing-zero removal in to_char() (Marti Raudsepp) + + + + In a format with FM and no digit positions + after the decimal point, zeroes to the left of the decimal point could + be removed incorrectly. + + + + + + Fix pg_size_pretty() to avoid overflow for inputs close to + 2^63 (Tom Lane) + + + + + + Weaken plpgsql's check for typmod matching in record values (Tom Lane) + + + + An overly enthusiastic check could lead to discarding length modifiers + that should have been kept. + + + + + + Correctly handle quotes in locale names during initdb + (Heikki Linnakangas) + + + + The case can arise with some Windows locales, such as People's + Republic of China. + + + + + + In pg_upgrade, avoid dumping orphaned temporary tables + (Bruce Momjian) + + + + This prevents situations wherein table OID assignments could get out of + sync between old and new installations. + + + + + + Fix pg_upgrade to preserve toast tables' relfrozenxids + during an upgrade from 8.3 (Bruce Momjian) + + + + Failure to do this could lead to pg_clog files being + removed too soon after the upgrade. + + + + + + In pg_upgrade, fix the -l (log) option to + work on Windows (Bruce Momjian) + + + + + + In pg_ctl, support silent mode for service registrations + on Windows (MauMau) + + + + + + Fix psql's counting of script file line numbers during + COPY from a different file (Tom Lane) + + + + + + Fix pg_restore's direct-to-database mode for + standard_conforming_strings (Tom Lane) + + + + pg_restore could emit incorrect commands when restoring + directly to a database server from an archive file that had been made + with standard_conforming_strings set to on. + + + + + + Be more user-friendly about unsupported cases for parallel + pg_restore (Tom Lane) + + + + This change ensures that such cases are detected and reported before + any restore actions have been taken. + + + + + + Fix write-past-buffer-end and memory leak in libpq's + LDAP service lookup code (Albe Laurenz) + + + + + + In libpq, avoid failures when using nonblocking I/O + and an SSL connection (Martin Pihlak, Tom Lane) + + + + + + Improve libpq's handling of failures during connection startup + (Tom Lane) + + + + In particular, the response to a server report of fork() + failure during SSL connection startup is now saner. + + + + + + Improve libpq's error reporting for SSL failures (Tom + Lane) + + + + + + Fix PQsetvalue() to avoid possible crash when adding a new + tuple to a PGresult originally obtained from a server + query (Andrew Chernow) + + + + + + Make ecpglib write double values with 15 digits + precision (Akira Kurosawa) + + + + + + In ecpglib, be sure LC_NUMERIC setting is + restored after an error (Michael Meskes) + + + + + + Apply upstream fix for blowfish signed-character bug (CVE-2011-2483) + (Tom Lane) + + + + contrib/pg_crypto's blowfish encryption code could give + wrong results on platforms where char is signed (which is most), + leading to encrypted passwords being weaker than they should be. + + + + + + Fix memory leak in contrib/seg (Heikki Linnakangas) + + + + + + Fix pgstatindex() to give consistent results for empty + indexes (Tom Lane) + + + + + + Allow building with perl 5.14 (Alex Hunsaker) + + + + + + Fix assorted issues with build and install file paths containing spaces + (Tom Lane) + + + + + + Update time zone data files to tzdata release 2011i + for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan. + + + + + + + + Release 9.0.4 diff --git a/doc/src/sgml/release-9.1.sgml b/doc/src/sgml/release-9.1.sgml index 2d6c8edf9b..373503d91f 100644 --- a/doc/src/sgml/release-9.1.sgml +++ b/doc/src/sgml/release-9.1.sgml @@ -1,27 +1,5020 @@ + + Release 9.1.13 + + + Release Date + 2014-03-20 + + + + This release contains a variety of fixes from 9.1.12. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.13 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you are upgrading from a version earlier than 9.1.11, + see . + + + + + + Changes + + + + + + Restore GIN metapages unconditionally to avoid torn-page risk + (Heikki Linnakangas) + + + + Although this oversight could theoretically result in a corrupted + index, it is unlikely to have caused any problems in practice, since + the active part of a GIN metapage is smaller than a standard 512-byte + disk sector. + + + + + + Avoid race condition in checking transaction commit status during + receipt of a NOTIFY message (Marko Tiikkaja) + + + + This prevents a scenario wherein a sufficiently fast client might + respond to a notification before database updates made by the + notifier have become visible to the recipient. + + + + + + Allow regular-expression operators to be terminated early by query + cancel requests (Tom Lane) + + + + This prevents scenarios wherein a pathological regular expression + could lock up a server process uninterruptably for a long time. + + + + + + Remove incorrect code that tried to allow OVERLAPS with + single-element row arguments (Joshua Yanovski) + + + + This code never worked correctly, and since the case is neither + specified by the SQL standard nor documented, it seemed better to + remove it than fix it. + + + + + + Avoid getting more than AccessShareLock when de-parsing a + rule or view (Dean Rasheed) + + + + This oversight resulted in pg_dump unexpectedly + acquiring RowExclusiveLock locks on tables mentioned as + the targets of INSERT/UPDATE/DELETE + commands in rules. While usually harmless, that could interfere with + concurrent transactions that tried to acquire, for example, + ShareLock on those tables. + + + + + + Improve performance of index endpoint probes during planning (Tom Lane) + + + + This change fixes a significant performance problem that occurred + when there were many not-yet-committed rows at the end of the index, + which is a common situation for indexes on sequentially-assigned + values such as timestamps or sequence-generated identifiers. + + + + + + Fix walsender's failure to shut down cleanly when client + is pg_receivexlog (Fujii Masao) + + + + + + Fix test to see if hot standby connections can be allowed immediately + after a crash (Heikki Linnakangas) + + + + + + Prevent interrupts while reporting non-ERROR messages + (Tom Lane) + + + + This guards against rare server-process freezeups due to recursive + entry to syslog(), and perhaps other related problems. + + + + + + Fix memory leak in PL/Perl when returning a composite result, including + multiple-OUT-parameter cases (Alex Hunsaker) + + + + + + Prevent intermittent could not reserve shared memory region + failures on recent Windows versions (MauMau) + + + + + + Update time zone data files to tzdata release 2014a + for DST law changes in Fiji and Turkey, plus historical changes in + Israel and Ukraine. + + + + + + + + + + + + + Release 9.1.12 + + + Release Date + 2014-02-20 + + + + This release contains a variety of fixes from 9.1.11. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.12 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you are upgrading from a version earlier than 9.1.11, + see . + + + + + + Changes + + + + + + Shore up GRANT ... WITH ADMIN OPTION restrictions + (Noah Misch) + + + + Granting a role without ADMIN OPTION is supposed to + prevent the grantee from adding or removing members from the granted + role, but this restriction was easily bypassed by doing SET + ROLE first. The security impact is mostly that a role member can + revoke the access of others, contrary to the wishes of his grantor. + Unapproved role member additions are a lesser concern, since an + uncooperative role member could provide most of his rights to others + anyway by creating views or SECURITY DEFINER functions. + (CVE-2014-0060) + + + + + + Prevent privilege escalation via manual calls to PL validator + functions (Andres Freund) + + + + The primary role of PL validator functions is to be called implicitly + during CREATE FUNCTION, but they are also normal SQL + functions that a user can call explicitly. Calling a validator on + a function actually written in some other language was not checked + for and could be exploited for privilege-escalation purposes. + The fix involves adding a call to a privilege-checking function in + each validator function. Non-core procedural languages will also + need to make this change to their own validator functions, if any. + (CVE-2014-0061) + + + + + + Avoid multiple name lookups during table and index DDL + (Robert Haas, Andres Freund) + + + + If the name lookups come to different conclusions due to concurrent + activity, we might perform some parts of the DDL on a different table + than other parts. At least in the case of CREATE INDEX, + this can be used to cause the permissions checks to be performed + against a different table than the index creation, allowing for a + privilege escalation attack. + (CVE-2014-0062) + + + + + + Prevent buffer overrun with long datetime strings (Noah Misch) + + + + The MAXDATELEN constant was too small for the longest + possible value of type interval, allowing a buffer overrun + in interval_out(). Although the datetime input + functions were more careful about avoiding buffer overrun, the limit + was short enough to cause them to reject some valid inputs, such as + input containing a very long timezone name. The ecpg + library contained these vulnerabilities along with some of its own. + (CVE-2014-0063) + + + + + + Prevent buffer overrun due to integer overflow in size calculations + (Noah Misch, Heikki Linnakangas) + + + + Several functions, mostly type input functions, calculated an + allocation size without checking for overflow. If overflow did + occur, a too-small buffer would be allocated and then written past. + (CVE-2014-0064) + + + + + + Prevent overruns of fixed-size buffers + (Peter Eisentraut, Jozef Mlich) + + + + Use strlcpy() and related functions to provide a clear + guarantee that fixed-size buffers are not overrun. Unlike the + preceding items, it is unclear whether these cases really represent + live issues, since in most cases there appear to be previous + constraints on the size of the input string. Nonetheless it seems + prudent to silence all Coverity warnings of this type. + (CVE-2014-0065) + + + + + + Avoid crashing if crypt() returns NULL (Honza Horak, + Bruce Momjian) + + + + There are relatively few scenarios in which crypt() + could return NULL, but contrib/chkpass would crash + if it did. One practical case in which this could be an issue is + if libc is configured to refuse to execute unapproved + hashing algorithms (e.g., FIPS mode). + (CVE-2014-0066) + + + + + + Document risks of make check in the regression testing + instructions (Noah Misch, Tom Lane) + + + + Since the temporary server started by make check + uses trust authentication, another user on the same machine + could connect to it as database superuser, and then potentially + exploit the privileges of the operating-system user who started the + tests. A future release will probably incorporate changes in the + testing procedure to prevent this risk, but some public discussion is + needed first. So for the moment, just warn people against using + make check when there are untrusted users on the + same machine. + (CVE-2014-0067) + + + + + + Fix possible mis-replay of WAL records when some segments of a + relation aren't full size (Greg Stark, Tom Lane) + + + + The WAL update could be applied to the wrong page, potentially many + pages past where it should have been. Aside from corrupting data, + this error has been observed to result in significant bloat + of standby servers compared to their masters, due to updates being + applied far beyond where the end-of-file should have been. This + failure mode does not appear to be a significant risk during crash + recovery, only when initially synchronizing a standby created from a + base backup taken from a quickly-changing master. + + + + + + Fix bug in determining when recovery has reached consistency + (Tomonari Katsumata, Heikki Linnakangas) + + + + In some cases WAL replay would mistakenly conclude that the database + was already consistent at the start of replay, thus possibly allowing + hot-standby queries before the database was really consistent. Other + symptoms such as PANIC: WAL contains references to invalid + pages were also possible. + + + + + + Fix improper locking of btree index pages while replaying + a VACUUM operation in hot-standby mode (Andres Freund, + Heikki Linnakangas, Tom Lane) + + + + This error could result in PANIC: WAL contains references to + invalid pages failures. + + + + + + Ensure that insertions into non-leaf GIN index pages write a full-page + WAL record when appropriate (Heikki Linnakangas) + + + + The previous coding risked index corruption in the event of a + partial-page write during a system crash. + + + + + + When pause_at_recovery_target + and recovery_target_inclusive are both set, ensure the + target record is applied before pausing, not after (Heikki + Linnakangas) + + + + + + Fix race conditions during server process exit (Robert Haas) + + + + Ensure that signal handlers don't attempt to use the + process's MyProc pointer after it's no longer valid. + + + + + + Fix race conditions in walsender shutdown logic and walreceiver + SIGHUP signal handler (Tom Lane) + + + + + + Fix unsafe references to errno within error reporting + logic (Christian Kruse) + + + + This would typically lead to odd behaviors such as missing or + inappropriate HINT fields. + + + + + + Fix possible crashes from using ereport() too early + during server startup (Tom Lane) + + + + The principal case we've seen in the field is a crash if the server + is started in a directory it doesn't have permission to read. + + + + + + Clear retry flags properly in OpenSSL socket write + function (Alexander Kukushkin) + + + + This omission could result in a server lockup after unexpected loss + of an SSL-encrypted connection. + + + + + + Fix length checking for Unicode identifiers (U&"..." + syntax) containing escapes (Tom Lane) + + + + A spurious truncation warning would be printed for such identifiers + if the escaped form of the identifier was too long, but the + identifier actually didn't need truncation after de-escaping. + + + + + + Allow keywords that are type names to be used in lists of roles + (Stephen Frost) + + + + A previous patch allowed such keywords to be used without quoting + in places such as role identifiers; but it missed cases where a + list of role identifiers was permitted, such as DROP ROLE. + + + + + + Fix parser crash for EXISTS(SELECT * FROM + zero_column_table) (Tom Lane) + + + + + + Fix possible crash due to invalid plan for nested sub-selects, such + as WHERE (... x IN (SELECT ...) ...) IN (SELECT ...) + (Tom Lane) + + + + + + Ensure that ANALYZE creates statistics for a table column + even when all the values in it are too wide (Tom Lane) + + + + ANALYZE intentionally omits very wide values from its + histogram and most-common-values calculations, but it neglected to do + something sane in the case that all the sampled entries are too wide. + + + + + + In ALTER TABLE ... SET TABLESPACE, allow the database's + default tablespace to be used without a permissions check + (Stephen Frost) + + + + CREATE TABLE has always allowed such usage, + but ALTER TABLE didn't get the memo. + + + + + + Fix cannot accept a set error when some arms of + a CASE return a set and others don't (Tom Lane) + + + + + + Fix checks for all-zero client addresses in pgstat functions (Kevin + Grittner) + + + + + + Fix possible misclassification of multibyte characters by the text + search parser (Tom Lane) + + + + Non-ASCII characters could be misclassified when using C locale with + a multibyte encoding. On Cygwin, non-C locales could fail as well. + + + + + + Fix possible misbehavior in plainto_tsquery() + (Heikki Linnakangas) + + + + Use memmove() not memcpy() for copying + overlapping memory regions. There have been no field reports of + this actually causing trouble, but it's certainly risky. + + + + + + Fix placement of permissions checks in pg_start_backup() + and pg_stop_backup() (Andres Freund, Magnus Hagander) + + + + The previous coding might attempt to do catalog access when it + shouldn't. + + + + + + Accept SHIFT_JIS as an encoding name for locale checking + purposes (Tatsuo Ishii) + + + + + + Fix misbehavior of PQhost() on Windows (Fujii Masao) + + + + It should return localhost if no host has been specified. + + + + + + Improve error handling in libpq and psql + for failures during COPY TO STDOUT/FROM STDIN (Tom Lane) + + + + In particular this fixes an infinite loop that could occur in 9.2 and + up if the server connection was lost during COPY FROM + STDIN. Variants of that scenario might be possible in older + versions, or with other client applications. + + + + + + Fix possible incorrect printing of filenames + in pg_basebackup's verbose mode (Magnus Hagander) + + + + + + Avoid including tablespaces inside PGDATA twice in base backups + (Dimitri Fontaine, Magnus Hagander) + + + + + + Fix misaligned descriptors in ecpg (MauMau) + + + + + + In ecpg, handle lack of a hostname in the connection + parameters properly (Michael Meskes) + + + + + + Fix performance regression in contrib/dblink connection + startup (Joe Conway) + + + + Avoid an unnecessary round trip when client and server encodings match. + + + + + + In contrib/isn, fix incorrect calculation of the check + digit for ISMN values (Fabien Coelho) + + + + + + Ensure client-code-only installation procedure works as documented + (Peter Eisentraut) + + + + + + In Mingw and Cygwin builds, install the libpq DLL + in the bin directory (Andrew Dunstan) + + + + This duplicates what the MSVC build has long done. It should fix + problems with programs like psql failing to start + because they can't find the DLL. + + + + + + Avoid using the deprecated dllwrap tool in Cygwin builds + (Marco Atzeri) + + + + + + Don't generate plain-text HISTORY + and src/test/regress/README files anymore (Tom Lane) + + + + These text files duplicated the main HTML and PDF documentation + formats. The trouble involved in maintaining them greatly outweighs + the likely audience for plain-text format. Distribution tarballs + will still contain files by these names, but they'll just be stubs + directing the reader to consult the main documentation. + The plain-text INSTALL file will still be maintained, as + there is arguably a use-case for that. + + + + + + Update time zone data files to tzdata release 2013i + for DST law changes in Jordan and historical changes in Cuba. + + + + In addition, the zones Asia/Riyadh87, + Asia/Riyadh88, and Asia/Riyadh89 have been + removed, as they are no longer maintained by IANA, and never + represented actual civil timekeeping practice. + + + + + + + + + + Release 9.1.11 + + + Release Date + 2013-12-05 + + + + This release contains a variety of fixes from 9.1.10. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.11 + + + A dump/restore is not required for those running 9.1.X. + + + + However, this release corrects a number of potential data corruption + issues. See the first two changelog entries below to find out whether + your installation has been affected and what steps you can take if so. + + + + Also, if you are upgrading from a version earlier than 9.1.9, + see . + + + + + + Changes + + + + + + Fix VACUUM's tests to see whether it can + update relfrozenxid (Andres Freund) + + + + In some cases VACUUM (either manual or autovacuum) could + incorrectly advance a table's relfrozenxid value, + allowing tuples to escape freezing, causing those rows to become + invisible once 2^31 transactions have elapsed. The probability of + data loss is fairly low since multiple incorrect advancements would + need to happen before actual loss occurs, but it's not zero. Users + upgrading from releases 9.0.4 or 8.4.8 or earlier are not affected, but + all later versions contain the bug. + + + + The issue can be ameliorated by, after upgrading, vacuuming all tables + in all databases while having vacuum_freeze_table_age + set to zero. This will fix any latent corruption but will not be able + to fix all pre-existing data errors. However, an installation can be + presumed safe after performing this vacuuming if it has executed fewer + than 2^31 update transactions in its lifetime (check this with + SELECT txid_current() < 2^31). + + + + + + Fix initialization of pg_clog and pg_subtrans + during hot standby startup (Andres Freund, Heikki Linnakangas) + + + + This bug can cause data loss on standby servers at the moment they + start to accept hot-standby queries, by marking committed transactions + as uncommitted. The likelihood of such corruption is small unless, at + the time of standby startup, the primary server has executed many + updating transactions since its last checkpoint. Symptoms include + missing rows, rows that should have been deleted being still visible, + and obsolete versions of updated rows being still visible alongside + their newer versions. + + + + This bug was introduced in versions 9.3.0, 9.2.5, 9.1.10, and 9.0.14. + Standby servers that have only been running earlier releases are not + at risk. It's recommended that standby servers that have ever run any + of the buggy releases be re-cloned from the primary (e.g., with a new + base backup) after upgrading. + + + + + + Truncate pg_multixact contents during WAL replay + (Andres Freund) + + + + This avoids ever-increasing disk space consumption in standby servers. + + + + + + Fix race condition in GIN index posting tree page deletion (Heikki + Linnakangas) + + + + This could lead to transient wrong answers or query failures. + + + + + + Avoid flattening a subquery whose SELECT list contains a + volatile function wrapped inside a sub-SELECT (Tom Lane) + + + + This avoids unexpected results due to extra evaluations of the + volatile function. + + + + + + Fix planner's processing of non-simple-variable subquery outputs + nested within outer joins (Tom Lane) + + + + This error could lead to incorrect plans for queries involving + multiple levels of subqueries within JOIN syntax. + + + + + + Fix incorrect generation of optimized MIN()/MAX() plans for + inheritance trees (Tom Lane) + + + + The planner could fail in cases where the MIN()/MAX() argument was an + expression rather than a simple variable. + + + + + + Fix premature deletion of temporary files (Andres Freund) + + + + + + Fix possible read past end of memory in rule printing (Peter Eisentraut) + + + + + + Fix array slicing of int2vector and oidvector values + (Tom Lane) + + + + Expressions of this kind are now implicitly promoted to + regular int2 or oid arrays. + + + + + + Fix incorrect behaviors when using a SQL-standard, simple GMT offset + timezone (Tom Lane) + + + + In some cases, the system would use the simple GMT offset value when + it should have used the regular timezone setting that had prevailed + before the simple offset was selected. This change also causes + the timeofday function to honor the simple GMT offset + zone. + + + + + + Prevent possible misbehavior when logging translations of Windows + error codes (Tom Lane) + + + + + + Properly quote generated command lines in pg_ctl + (Naoya Anzai and Tom Lane) + + + + This fix applies only to Windows. + + + + + + Fix pg_dumpall to work when a source database + sets default_transaction_read_only + via ALTER DATABASE SET (Kevin Grittner) + + + + Previously, the generated script would fail during restore. + + + + + + Make ecpg search for quoted cursor names + case-sensitively (Zoltán Böszörményi) + + + + + + Fix ecpg's processing of lists of variables + declared varchar (Zoltán Böszörményi) + + + + + + Make contrib/lo defend against incorrect trigger definitions + (Marc Cousin) + + + + + + Update time zone data files to tzdata release 2013h + for DST law changes in Argentina, Brazil, Jordan, Libya, + Liechtenstein, Morocco, and Palestine. Also, new timezone + abbreviations WIB, WIT, WITA for Indonesia. + + + + + + + + + + Release 9.1.10 + + + Release Date + 2013-10-10 + + + + This release contains a variety of fixes from 9.1.9. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.10 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you are upgrading from a version earlier than 9.1.9, + see . + + + + + + Changes + + + + + + Prevent corruption of multi-byte characters when attempting to + case-fold identifiers (Andrew Dunstan) + + + + PostgreSQL case-folds non-ASCII characters only + when using a single-byte server encoding. + + + + + + Fix checkpoint memory leak in background writer when wal_level = + hot_standby (Naoya Anzai) + + + + + + Fix memory leak caused by lo_open() failure + (Heikki Linnakangas) + + + + + + Fix memory overcommit bug when work_mem is using more + than 24GB of memory (Stephen Frost) + + + + + + Serializable snapshot fixes (Kevin Grittner, Heikki Linnakangas) + + + + + + Fix deadlock bug in libpq when using SSL (Stephen Frost) + + + + + + Fix possible SSL state corruption in threaded libpq applications + (Nick Phillips, Stephen Frost) + + + + + + Properly compute row estimates for boolean columns containing many NULL + values (Andrew Gierth) + + + + Previously tests like col IS NOT TRUE and col IS + NOT FALSE did not properly factor in NULL values when estimating + plan costs. + + + + + + Prevent pushing down WHERE clauses into unsafe + UNION/INTERSECT subqueries (Tom Lane) + + + + Subqueries of a UNION or INTERSECT that + contain set-returning functions or volatile functions in their + SELECT lists could be improperly optimized, leading to + run-time errors or incorrect query results. + + + + + + Fix rare case of failed to locate grouping columns + planner failure (Tom Lane) + + + + + + Fix pg_dump of foreign tables with dropped columns (Andrew Dunstan) + + + + Previously such cases could cause a pg_upgrade error. + + + + + + Reorder pg_dump processing of extension-related + rules and event triggers (Joe Conway) + + + + + + Force dumping of extension tables if specified by pg_dump + -t or -n (Joe Conway) + + + + + + Improve view dumping code's handling of dropped columns in referenced + tables (Tom Lane) + + + + + + Fix pg_restore -l with the directory archive to display + the correct format name (Fujii Masao) + + + + + + Properly record index comments created using UNIQUE + and PRIMARY KEY syntax (Andres Freund) + + + + This fixes a parallel pg_restore failure. + + + + + + Properly guarantee transmission of WAL files before clean switchover + (Fujii Masao) + + + + Previously, the streaming replication connection might close before all + WAL files had been replayed on the standby. + + + + + + Fix WAL segment timeline handling during recovery (Mitsumasa Kondo, + Heikki Linnakangas) + + + + WAL file recycling during standby recovery could lead to premature + recovery completion, resulting in data loss. + + + + + + Fix REINDEX TABLE and REINDEX DATABASE + to properly revalidate constraints and mark invalidated indexes as + valid (Noah Misch) + + + + REINDEX INDEX has always worked properly. + + + + + + Fix possible deadlock during concurrent CREATE INDEX + CONCURRENTLY operations (Tom Lane) + + + + + + Fix regexp_matches() handling of zero-length matches + (Jeevan Chalke) + + + + Previously, zero-length matches like '^' could return too many matches. + + + + + + Fix crash for overly-complex regular expressions (Heikki Linnakangas) + + + + + + Fix regular expression match failures for back references combined with + non-greedy quantifiers (Jeevan Chalke) + + + + + + Prevent CREATE FUNCTION from checking SET + variables unless function body checking is enabled (Tom Lane) + + + + + + Allow ALTER DEFAULT PRIVILEGES to operate on schemas + without requiring CREATE permission (Tom Lane) + + + + + + Loosen restriction on keywords used in queries (Tom Lane) + + + + Specifically, lessen keyword restrictions for role names, language + names, EXPLAIN and COPY options, and + SET values. This allows COPY ... (FORMAT + BINARY) to work as expected; previously BINARY needed + to be quoted. + + + + + + Fix pgp_pub_decrypt() so it works for secret keys with + passwords (Marko Kreen) + + + + + + Make pg_upgrade use pg_dump + --quote-all-identifiers to avoid problems with keyword changes + between releases (Tom Lane) + + + + + + Remove rare inaccurate warning during vacuum of index-less tables + (Heikki Linnakangas) + + + + + + Ensure that VACUUM ANALYZE still runs the ANALYZE phase + if its attempt to truncate the file is cancelled due to lock conflicts + (Kevin Grittner) + + + + + + Avoid possible failure when performing transaction control commands (e.g + ROLLBACK) in prepared queries (Tom Lane) + + + + + + Ensure that floating-point data input accepts standard spellings + of infinity on all platforms (Tom Lane) + + + + The C99 standard says that allowable spellings are inf, + +inf, -inf, infinity, + +infinity, and -infinity. Make sure we + recognize these even if the platform's strtod function + doesn't. + + + + + + Expand ability to compare rows to records and arrays (Rafal Rzepecki, + Tom Lane) + + + + + + Update time zone data files to tzdata release 2013d + for DST law changes in Israel, Morocco, Palestine, and Paraguay. + Also, historical zone data corrections for Macquarie Island. + + + + + + + + + + Release 9.1.9 + + + Release Date + 2013-04-04 + + + + This release contains a variety of fixes from 9.1.8. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.9 + + + A dump/restore is not required for those running 9.1.X. + + + + However, this release corrects several errors in management of GiST + indexes. After installing this update, it is advisable to + REINDEX any GiST indexes that meet one or more of the + conditions described below. + + + + Also, if you are upgrading from a version earlier than 9.1.6, + see . + + + + + + Changes + + + + + + Fix insecure parsing of server command-line switches (Mitsumasa + Kondo, Kyotaro Horiguchi) + + + + A connection request containing a database name that begins with + - could be crafted to damage or destroy + files within the server's data directory, even if the request is + eventually rejected. (CVE-2013-1899) + + + + + + Reset OpenSSL randomness state in each postmaster child process + (Marko Kreen) + + + + This avoids a scenario wherein random numbers generated by + contrib/pgcrypto functions might be relatively easy for + another database user to guess. The risk is only significant when + the postmaster is configured with ssl = on + but most connections don't use SSL encryption. (CVE-2013-1900) + + + + + + Make REPLICATION privilege checks test current user not authenticated + user (Noah Misch) + + + + An unprivileged database user could exploit this mistake to call + pg_start_backup() or pg_stop_backup(), + thus possibly interfering with creation of routine backups. + (CVE-2013-1901) + + + + + + Fix GiST indexes to not use fuzzy geometric comparisons when + it's not appropriate to do so (Alexander Korotkov) + + + + The core geometric types perform comparisons using fuzzy + equality, but gist_box_same must do exact comparisons, + else GiST indexes using it might become inconsistent. After installing + this update, users should REINDEX any GiST indexes on + box, polygon, circle, or point + columns, since all of these use gist_box_same. + + + + + + Fix erroneous range-union and penalty logic in GiST indexes that use + contrib/btree_gist for variable-width data types, that is + text, bytea, bit, and numeric + columns (Tom Lane) + + + + These errors could result in inconsistent indexes in which some keys + that are present would not be found by searches, and also in useless + index bloat. Users are advised to REINDEX such indexes + after installing this update. + + + + + + Fix bugs in GiST page splitting code for multi-column indexes + (Tom Lane) + + + + These errors could result in inconsistent indexes in which some keys + that are present would not be found by searches, and also in indexes + that are unnecessarily inefficient to search. Users are advised to + REINDEX multi-column GiST indexes after installing this + update. + + + + + + Fix gist_point_consistent + to handle fuzziness consistently (Alexander Korotkov) + + + + Index scans on GiST indexes on point columns would sometimes + yield results different from a sequential scan, because + gist_point_consistent disagreed with the underlying + operator code about whether to do comparisons exactly or fuzzily. + + + + + + Fix buffer leak in WAL replay (Heikki Linnakangas) + + + + This bug could result in incorrect local pin count errors + during replay, making recovery impossible. + + + + + + Fix race condition in DELETE RETURNING (Tom Lane) + + + + Under the right circumstances, DELETE RETURNING could + attempt to fetch data from a shared buffer that the current process + no longer has any pin on. If some other process changed the buffer + meanwhile, this would lead to garbage RETURNING output, or + even a crash. + + + + + + Fix infinite-loop risk in regular expression compilation (Tom Lane, + Don Porter) + + + + + + Fix potential null-pointer dereference in regular expression compilation + (Tom Lane) + + + + + + Fix to_char() to use ASCII-only case-folding rules where + appropriate (Tom Lane) + + + + This fixes misbehavior of some template patterns that should be + locale-independent, but mishandled I and + i in Turkish locales. + + + + + + Fix unwanted rejection of timestamp 1999-12-31 24:00:00 + (Tom Lane) + + + + + + Fix logic error when a single transaction does UNLISTEN + then LISTEN (Tom Lane) + + + + The session wound up not listening for notify events at all, though it + surely should listen in this case. + + + + + + Fix possible planner crash after columns have been added to a view + that's depended on by another view (Tom Lane) + + + + + + Remove useless picksplit doesn't support secondary split log + messages (Josh Hansen, Tom Lane) + + + + This message seems to have been added in expectation of code that was + never written, and probably never will be, since GiST's default + handling of secondary splits is actually pretty good. So stop nagging + end users about it. + + + + + + Fix possible failure to send a session's last few transaction + commit/abort counts to the statistics collector (Tom Lane) + + + + + + Eliminate memory leaks in PL/Perl's spi_prepare() function + (Alex Hunsaker, Tom Lane) + + + + + + Fix pg_dumpall to handle database names containing + = correctly (Heikki Linnakangas) + + + + + + Avoid crash in pg_dump when an incorrect connection + string is given (Heikki Linnakangas) + + + + + + Ignore invalid indexes in pg_dump and + pg_upgrade (Michael Paquier, Bruce Momjian) + + + + Dumping invalid indexes can cause problems at restore time, for example + if the reason the index creation failed was because it tried to enforce + a uniqueness condition not satisfied by the table's data. Also, if the + index creation is in fact still in progress, it seems reasonable to + consider it to be an uncommitted DDL change, which + pg_dump wouldn't be expected to dump anyway. + pg_upgrade now also skips invalid indexes rather than + failing. + + + + + + In pg_basebackup, include only the current server + version's subdirectory when backing up a tablespace (Heikki + Linnakangas) + + + + + + Add a server version check in pg_basebackup and + pg_receivexlog, so they fail cleanly with version + combinations that won't work (Heikki Linnakangas) + + + + + + Fix contrib/pg_trgm's similarity() function + to return zero for trigram-less strings (Tom Lane) + + + + Previously it returned NaN due to internal division by zero. + + + + + + Update time zone data files to tzdata release 2013b + for DST law changes in Chile, Haiti, Morocco, Paraguay, and some + Russian areas. Also, historical zone data corrections for numerous + places. + + + + Also, update the time zone abbreviation files for recent changes in + Russia and elsewhere: CHOT, GET, + IRKT, KGT, KRAT, MAGT, + MAWT, MSK, NOVT, OMST, + TKT, VLAT, WST, YAKT, + YEKT now follow their current meanings, and + VOLT (Europe/Volgograd) and MIST + (Antarctica/Macquarie) are added to the default abbreviations list. + + + + + + + + + + Release 9.1.8 + + + Release Date + 2013-02-07 + + + + This release contains a variety of fixes from 9.1.7. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.8 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you are upgrading from a version earlier than 9.1.6, + see . + + + + + + Changes + + + + + + Prevent execution of enum_recv from SQL (Tom Lane) + + + + The function was misdeclared, allowing a simple SQL command to crash the + server. In principle an attacker might be able to use it to examine the + contents of server memory. Our thanks to Sumit Soni (via Secunia SVCRP) + for reporting this issue. (CVE-2013-0255) + + + + + + Fix multiple problems in detection of when a consistent database + state has been reached during WAL replay (Fujii Masao, Heikki + Linnakangas, Simon Riggs, Andres Freund) + + + + + + Update minimum recovery point when truncating a relation file (Heikki + Linnakangas) + + + + Once data has been discarded, it's no longer safe to stop recovery at + an earlier point in the timeline. + + + + + + Fix recycling of WAL segments after changing recovery target timeline + (Heikki Linnakangas) + + + + + + Fix missing cancellations in hot standby mode (Noah Misch, Simon Riggs) + + + + The need to cancel conflicting hot-standby queries would sometimes be + missed, allowing those queries to see inconsistent data. + + + + + + Prevent recovery pause feature from pausing before users can connect + (Tom Lane) + + + + + + Fix SQL grammar to allow subscripting or field selection from a + sub-SELECT result (Tom Lane) + + + + + + Fix performance problems with autovacuum truncation in busy workloads + (Jan Wieck) + + + + Truncation of empty pages at the end of a table requires exclusive + lock, but autovacuum was coded to fail (and release the table lock) + when there are conflicting lock requests. Under load, it is easily + possible that truncation would never occur, resulting in table bloat. + Fix by performing a partial truncation, releasing the lock, then + attempting to re-acquire the lock and continue. This fix also greatly + reduces the average time before autovacuum releases the lock after a + conflicting request arrives. + + + + + + Protect against race conditions when scanning + pg_tablespace (Stephen Frost, Tom Lane) + + + + CREATE DATABASE and DROP DATABASE could + misbehave if there were concurrent updates of + pg_tablespace entries. + + + + + + Prevent DROP OWNED from trying to drop whole databases or + tablespaces (Álvaro Herrera) + + + + For safety, ownership of these objects must be reassigned, not dropped. + + + + + + Fix error in vacuum_freeze_table_age + implementation (Andres Freund) + + + + In installations that have existed for more than vacuum_freeze_min_age + transactions, this mistake prevented autovacuum from using partial-table + scans, so that a full-table scan would always happen instead. + + + + + + Prevent misbehavior when a RowExpr or XmlExpr + is parse-analyzed twice (Andres Freund, Tom Lane) + + + + This mistake could be user-visible in contexts such as + CREATE TABLE LIKE INCLUDING INDEXES. + + + + + + Improve defenses against integer overflow in hashtable sizing + calculations (Jeff Davis) + + + + + + Fix failure to ignore leftover temporary tables after a server crash + (Tom Lane) + + + + + + Reject out-of-range dates in to_date() (Hitoshi Harada) + + + + + + Fix pg_extension_config_dump() to handle + extension-update cases properly (Tom Lane) + + + + This function will now replace any existing entry for the target + table, making it usable in extension update scripts. + + + + + + Fix PL/Python's handling of functions used as triggers on multiple + tables (Andres Freund) + + + + + + Ensure that non-ASCII prompt strings are translated to the correct + code page on Windows (Alexander Law, Noah Misch) + + + + This bug affected psql and some other client programs. + + + + + + Fix possible crash in psql's \? command + when not connected to a database (Meng Qingzhong) + + + + + + Fix possible error if a relation file is removed while + pg_basebackup is running (Heikki Linnakangas) + + + + + + Make pg_dump exclude data of unlogged tables when + running on a hot-standby server (Magnus Hagander) + + + + This would fail anyway because the data is not available on the standby + server, so it seems most convenient to assume + + + + + + Fix pg_upgrade to deal with invalid indexes safely + (Bruce Momjian) + + + + + + Fix one-byte buffer overrun in libpq's + PQprintTuples (Xi Wang) + + + + This ancient function is not used anywhere by + PostgreSQL itself, but it might still be used by some + client code. + + + + + + Make ecpglib use translated messages properly + (Chen Huajun) + + + + + + Properly install ecpg_compat and + pgtypes libraries on MSVC (Jiang Guiqing) + + + + + + Include our version of isinf() in + libecpg if it's not provided by the system + (Jiang Guiqing) + + + + + + Rearrange configure's tests for supplied functions so it is not + fooled by bogus exports from libedit/libreadline (Christoph Berg) + + + + + + Ensure Windows build number increases over time (Magnus Hagander) + + + + + + Make pgxs build executables with the right + .exe suffix when cross-compiling for Windows + (Zoltan Boszormenyi) + + + + + + Add new timezone abbreviation FET (Tom Lane) + + + + This is now used in some eastern-European time zones. + + + + + + + + + + Release 9.1.7 + + + Release Date + 2012-12-06 + + + + This release contains a variety of fixes from 9.1.6. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.7 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you are upgrading from a version earlier than 9.1.6, + see . + + + + + + Changes + + + + + + Fix multiple bugs associated with CREATE INDEX + CONCURRENTLY (Andres Freund, Tom Lane) + + + + Fix CREATE INDEX CONCURRENTLY to use + in-place updates when changing the state of an index's + pg_index row. This prevents race conditions that could + cause concurrent sessions to miss updating the target index, thus + resulting in corrupt concurrently-created indexes. + + + + Also, fix various other operations to ensure that they ignore + invalid indexes resulting from a failed CREATE INDEX + CONCURRENTLY command. The most important of these is + VACUUM, because an auto-vacuum could easily be launched + on the table before corrective action can be taken to fix or remove + the invalid index. + + + + + + Fix buffer locking during WAL replay (Tom Lane) + + + + The WAL replay code was insufficiently careful about locking buffers + when replaying WAL records that affect more than one page. This could + result in hot standby queries transiently seeing inconsistent states, + resulting in wrong answers or unexpected failures. + + + + + + Fix an error in WAL generation logic for GIN indexes (Tom Lane) + + + + This could result in index corruption, if a torn-page failure occurred. + + + + + + Properly remove startup process's virtual XID lock when promoting a + hot standby server to normal running (Simon Riggs) + + + + This oversight could prevent subsequent execution of certain + operations such as CREATE INDEX CONCURRENTLY. + + + + + + Avoid bogus out-of-sequence timeline ID errors in standby + mode (Heikki Linnakangas) + + + + + + Prevent the postmaster from launching new child processes after it's + received a shutdown signal (Tom Lane) + + + + This mistake could result in shutdown taking longer than it should, or + even never completing at all without additional user action. + + + + + + Avoid corruption of internal hash tables when out of memory + (Hitoshi Harada) + + + + + + Prevent file descriptors for dropped tables from being held open past + transaction end (Tom Lane) + + + + This should reduce problems with long-since-dropped tables continuing + to occupy disk space. + + + + + + Prevent database-wide crash and restart when a new child process is + unable to create a pipe for its latch (Tom Lane) + + + + Although the new process must fail, there is no good reason to force a + database-wide restart, so avoid that. This improves robustness when + the kernel is nearly out of file descriptors. + + + + + + Fix planning of non-strict equivalence clauses above outer joins + (Tom Lane) + + + + The planner could derive incorrect constraints from a clause equating + a non-strict construct to something else, for example + WHERE COALESCE(foo, 0) = 0 + when foo is coming from the nullable side of an outer join. + + + + + + Fix SELECT DISTINCT with index-optimized + MIN/MAX on an inheritance tree (Tom Lane) + + + + The planner would fail with failed to re-find MinMaxAggInfo + record given this combination of factors. + + + + + + Improve planner's ability to prove exclusion constraints from + equivalence classes (Tom Lane) + + + + + + Fix partial-row matching in hashed subplans to handle cross-type cases + correctly (Tom Lane) + + + + This affects multicolumn NOT IN subplans, such as + WHERE (a, b) NOT IN (SELECT x, y FROM ...) + when for instance b and y are int4 + and int8 respectively. This mistake led to wrong answers + or crashes depending on the specific datatypes involved. + + + + + + Acquire buffer lock when re-fetching the old tuple for an + AFTER ROW UPDATE/DELETE trigger (Andres Freund) + + + + In very unusual circumstances, this oversight could result in passing + incorrect data to a trigger WHEN condition, or to the + precheck logic for a foreign-key enforcement trigger. That could + result in a crash, or in an incorrect decision about whether to + fire the trigger. + + + + + + Fix ALTER COLUMN TYPE to handle inherited check + constraints properly (Pavan Deolasee) + + + + This worked correctly in pre-8.4 releases, and now works correctly + in 8.4 and later. + + + + + + Fix ALTER EXTENSION SET SCHEMA's failure to move some + subsidiary objects into the new schema (Álvaro Herrera, Dimitri + Fontaine) + + + + + + Fix REASSIGN OWNED to handle grants on tablespaces + (Álvaro Herrera) + + + + + + Ignore incorrect pg_attribute entries for system + columns for views (Tom Lane) + + + + Views do not have any system columns. However, we forgot to + remove such entries when converting a table to a view. That's fixed + properly for 9.3 and later, but in previous branches we need to defend + against existing mis-converted views. + + + + + + Fix rule printing to dump INSERT INTO table + DEFAULT VALUES correctly (Tom Lane) + + + + + + Guard against stack overflow when there are too many + UNION/INTERSECT/EXCEPT clauses + in a query (Tom Lane) + + + + + + Prevent platform-dependent failures when dividing the minimum possible + integer value by -1 (Xi Wang, Tom Lane) + + + + + + Fix possible access past end of string in date parsing + (Hitoshi Harada) + + + + + + Fix failure to advance XID epoch if XID wraparound happens during a + checkpoint and wal_level is hot_standby + (Tom Lane, Andres Freund) + + + + While this mistake had no particular impact on + PostgreSQL itself, it was bad for + applications that rely on txid_current() and related + functions: the TXID value would appear to go backwards. + + + + + + Fix display of + pg_stat_replication.sync_state at a + page boundary (Kyotaro Horiguchi) + + + + + + Produce an understandable error message if the length of the path name + for a Unix-domain socket exceeds the platform-specific limit + (Tom Lane, Andrew Dunstan) + + + + Formerly, this would result in something quite unhelpful, such as + Non-recoverable failure in name resolution. + + + + + + Fix memory leaks when sending composite column values to the client + (Tom Lane) + + + + + + Make pg_ctl more robust about reading the + postmaster.pid file (Heikki Linnakangas) + + + + Fix race conditions and possible file descriptor leakage. + + + + + + Fix possible crash in psql if incorrectly-encoded data + is presented and the client_encoding setting is a + client-only encoding, such as SJIS (Jiang Guiqing) + + + + + + Make pg_dump dump SEQUENCE SET items in + the data not pre-data section of the archive (Tom Lane) + + + + This change fixes dumping of sequences that are marked as extension + configuration tables. + + + + + + Fix bugs in the restore.sql script emitted by + pg_dump in tar output format (Tom Lane) + + + + The script would fail outright on tables whose names include + upper-case characters. Also, make the script capable of restoring + data in + + + + + Fix pg_restore to accept POSIX-conformant + tar files (Brian Weaver, Tom Lane) + + + + The original coding of pg_dump's tar + output mode produced files that are not fully conformant with the + POSIX standard. This has been corrected for version 9.3. This + patch updates previous branches so that they will accept both the + incorrect and the corrected formats, in hopes of avoiding + compatibility problems when 9.3 comes out. + + + + + + Fix tar files emitted by pg_basebackup to + be POSIX conformant (Brian Weaver, Tom Lane) + + + + + + Fix pg_resetxlog to locate postmaster.pid + correctly when given a relative path to the data directory (Tom Lane) + + + + This mistake could lead to pg_resetxlog not noticing + that there is an active postmaster using the data directory. + + + + + + Fix libpq's lo_import() and + lo_export() functions to report file I/O errors properly + (Tom Lane) + + + + + + Fix ecpg's processing of nested structure pointer + variables (Muhammad Usama) + + + + + + Fix ecpg's ecpg_get_data function to + handle arrays properly (Michael Meskes) + + + + + + Make contrib/pageinspect's btree page inspection + functions take buffer locks while examining pages (Tom Lane) + + + + + + Ensure that make install for an extension creates the + extension installation directory (Cédric Villemain) + + + + Previously, this step was missed if MODULEDIR was set in + the extension's Makefile. + + + + + + Fix pgxs support for building loadable modules on AIX + (Tom Lane) + + + + Building modules outside the original source tree didn't work on AIX. + + + + + + Update time zone data files to tzdata release 2012j + for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western + Samoa, and portions of Brazil. + + + + + + + + + + Release 9.1.6 + + + Release Date + 2012-09-24 + + + + This release contains a variety of fixes from 9.1.5. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.6 + + + A dump/restore is not required for those running 9.1.X. + + + + However, you may need to perform REINDEX operations to + recover from the effects of the data corruption bug described in the + first changelog item below. + + + + Also, if you are upgrading from a version earlier than 9.1.4, + see . + + + + + + Changes + + + + + + Fix persistence marking of shared buffers during WAL replay + (Jeff Davis) + + + + This mistake can result in buffers not being written out during + checkpoints, resulting in data corruption if the server later crashes + without ever having written those buffers. Corruption can occur on + any server following crash recovery, but it is significantly more + likely to occur on standby slave servers since those perform much + more WAL replay. There is a low probability of corruption of btree + and GIN indexes. There is a much higher probability of corruption of + table visibility maps. Fortunately, visibility maps are + non-critical data in 9.1, so the worst consequence of such corruption + in 9.1 installations is transient inefficiency of vacuuming. Table + data proper cannot be corrupted by this bug. + + + + While no index corruption due to this bug is known to have occurred + in the field, as a precautionary measure it is recommended that + production installations REINDEX all btree and GIN + indexes at a convenient time after upgrading to 9.1.6. + + + + Also, if you intend to do an in-place upgrade to 9.2.X, before doing + so it is recommended to perform a VACUUM of all tables + while having vacuum_freeze_table_age + set to zero. This will ensure that any lingering wrong data in the + visibility maps is corrected before 9.2.X can depend on it. vacuum_cost_delay + can be adjusted to reduce the performance impact of vacuuming, while + causing it to take longer to finish. + + + + + + Fix planner's assignment of executor parameters, and fix executor's + rescan logic for CTE plan nodes (Tom Lane) + + + + These errors could result in wrong answers from queries that scan the + same WITH subquery multiple times. + + + + + + Fix misbehavior when default_transaction_isolation + is set to serializable (Kevin Grittner, Tom Lane, Heikki + Linnakangas) + + + + Symptoms include crashes at process start on Windows, and crashes in + hot standby operation. + + + + + + Improve selectivity estimation for text search queries involving + prefixes, i.e. word:* patterns (Tom Lane) + + + + + + + + + Improve page-splitting decisions in GiST indexes (Alexander Korotkov, + Robert Haas, Tom Lane) + + + + Multi-column GiST indexes might suffer unexpected bloat due to this + error. + + + + + + Fix cascading privilege revoke to stop if privileges are still held + (Tom Lane) + + + + If we revoke a grant option from some role X, but + X still holds that option via a grant from someone + else, we should not recursively revoke the corresponding privilege + from role(s) Y that X had granted it + to. + + + + + + Disallow extensions from containing the schema they are assigned to + (Thom Brown) + + + + This situation creates circular dependencies that confuse + pg_dump and probably other things. It's confusing + for humans too, so disallow it. + + + + + + Improve error messages for Hot Standby misconfiguration errors + (Gurjeet Singh) + + + + + + Make configure probe for mbstowcs_l (Tom + Lane) + + + + This fixes build failures on some versions of AIX. + + + + + + Fix handling of SIGFPE when PL/Perl is in use (Andres Freund) + + + + Perl resets the process's SIGFPE handler to + SIG_IGN, which could result in crashes later on. Restore + the normal Postgres signal handler after initializing PL/Perl. + + + + + + Prevent PL/Perl from crashing if a recursive PL/Perl function is + redefined while being executed (Tom Lane) + + + + + + Work around possible misoptimization in PL/Perl (Tom Lane) + + + + Some Linux distributions contain an incorrect version of + pthread.h that results in incorrect compiled code in + PL/Perl, leading to crashes if a PL/Perl function calls another one + that throws an error. + + + + + + Fix bugs in contrib/pg_trgm's LIKE pattern + analysis code (Fujii Masao) + + + + LIKE queries using a trigram index could produce wrong + results if the pattern contained LIKE escape characters. + + + + + + Fix pg_upgrade's handling of line endings on Windows + (Andrew Dunstan) + + + + Previously, pg_upgrade might add or remove carriage + returns in places such as function bodies. + + + + + + On Windows, make pg_upgrade use backslash path + separators in the scripts it emits (Andrew Dunstan) + + + + + + Remove unnecessary dependency on pg_config from + pg_upgrade (Peter Eisentraut) + + + + + + Update time zone data files to tzdata release 2012f + for DST law changes in Fiji + + + + + + + + + + Release 9.1.5 + + + Release Date + 2012-08-17 + + + + This release contains a variety of fixes from 9.1.4. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.5 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you are upgrading from a version earlier than 9.1.4, + see . + + + + + + Changes + + + + + + Prevent access to external files/URLs via XML entity references + (Noah Misch, Tom Lane) + + + + xml_parse() would attempt to fetch external files or + URLs as needed to resolve DTD and entity references in an XML value, + thus allowing unprivileged database users to attempt to fetch data + with the privileges of the database server. While the external data + wouldn't get returned directly to the user, portions of it could be + exposed in error messages if the data didn't parse as valid XML; and + in any case the mere ability to check existence of a file might be + useful to an attacker. (CVE-2012-3489) + + + + + + Prevent access to external files/URLs via contrib/xml2's + xslt_process() (Peter Eisentraut) + + + + libxslt offers the ability to read and write both + files and URLs through stylesheet commands, thus allowing + unprivileged database users to both read and write data with the + privileges of the database server. Disable that through proper use + of libxslt's security options. (CVE-2012-3488) + + + + Also, remove xslt_process()'s ability to fetch documents + and stylesheets from external files/URLs. While this was a + documented feature, it was long regarded as a bad idea. + The fix for CVE-2012-3489 broke that capability, and rather than + expend effort on trying to fix it, we're just going to summarily + remove it. + + + + + + Prevent too-early recycling of btree index pages (Noah Misch) + + + + When we allowed read-only transactions to skip assigning XIDs, we + introduced the possibility that a deleted btree page could be + recycled while a read-only transaction was still in flight to it. + This would result in incorrect index search results. The probability + of such an error occurring in the field seems very low because of the + timing requirements, but nonetheless it should be fixed. + + + + + + Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane) + + + + If ALTER SEQUENCE was executed on a freshly created or + reset sequence, and then precisely one nextval() call + was made on it, and then the server crashed, WAL replay would restore + the sequence to a state in which it appeared that no + nextval() had been done, thus allowing the first + sequence value to be returned again by the next + nextval() call. In particular this could manifest for + serial columns, since creation of a serial column's sequence + includes an ALTER SEQUENCE OWNED BY step. + + + + + + Fix race condition in enum-type value comparisons (Robert + Haas, Tom Lane) + + + + Comparisons could fail when encountering an enum value added since + the current query started. + + + + + + Fix txid_current() to report the correct epoch when not + in hot standby (Heikki Linnakangas) + + + + This fixes a regression introduced in the previous minor release. + + + + + + Prevent selection of unsuitable replication connections as + the synchronous standby (Fujii Masao) + + + + The master might improperly choose pseudo-servers such as + pg_receivexlog or pg_basebackup + as the synchronous standby, and then wait indefinitely for them. + + + + + + Fix bug in startup of Hot Standby when a master transaction has many + subtransactions (Andres Freund) + + + + This mistake led to failures reported as out-of-order XID + insertion in KnownAssignedXids. + + + + + + Ensure the backup_label file is fsync'd after + pg_start_backup() (Dave Kerr) + + + + + + Fix timeout handling in walsender processes (Tom Lane) + + + + WAL sender background processes neglected to establish a + SIGALRM handler, meaning they would wait forever in + some corner cases where a timeout ought to happen. + + + + + + Wake walsenders after each background flush by walwriter (Andres + Freund, Simon Riggs) + + + + This greatly reduces replication delay when the workload contains + only asynchronously-committed transactions. + + + + + + Fix LISTEN/NOTIFY to cope better with I/O + problems, such as out of disk space (Tom Lane) + + + + After a write failure, all subsequent attempts to send more + NOTIFY messages would fail with messages like + Could not read from file "pg_notify/nnnn" at + offset nnnnn: Success. + + + + + + Only allow autovacuum to be auto-canceled by a directly blocked + process (Tom Lane) + + + + The original coding could allow inconsistent behavior in some cases; + in particular, an autovacuum could get canceled after less than + deadlock_timeout grace period. + + + + + + Improve logging of autovacuum cancels (Robert Haas) + + + + + + Fix log collector so that log_truncate_on_rotation works + during the very first log rotation after server start (Tom Lane) + + + + + + Fix WITH attached to a nested set operation + (UNION/INTERSECT/EXCEPT) + (Tom Lane) + + + + + + Ensure that a whole-row reference to a subquery doesn't include any + extra GROUP BY or ORDER BY columns (Tom Lane) + + + + + + Fix dependencies generated during ALTER TABLE ... ADD + CONSTRAINT USING INDEX (Tom Lane) + + + + This command left behind a redundant pg_depend entry + for the index, which could confuse later operations, notably + ALTER TABLE ... ALTER COLUMN TYPE on one of the indexed + columns. + + + + + + Fix REASSIGN OWNED to work on extensions (Alvaro Herrera) + + + + + + Disallow copying whole-row references in CHECK + constraints and index definitions during CREATE TABLE + (Tom Lane) + + + + This situation can arise in CREATE TABLE with + LIKE or INHERITS. The copied whole-row + variable was incorrectly labeled with the row type of the original + table not the new one. Rejecting the case seems reasonable for + LIKE, since the row types might well diverge later. For + INHERITS we should ideally allow it, with an implicit + coercion to the parent table's row type; but that will require more + work than seems safe to back-patch. + + + + + + Fix memory leak in ARRAY(SELECT ...) subqueries (Heikki + Linnakangas, Tom Lane) + + + + + + Fix planner to pass correct collation to operator selectivity + estimators (Tom Lane) + + + + This was not previously required by any core selectivity estimation + function, but third-party code might need it. + + + + + + Fix extraction of common prefixes from regular expressions (Tom Lane) + + + + The code could get confused by quantified parenthesized + subexpressions, such as ^(foo)?bar. This would lead to + incorrect index optimization of searches for such patterns. + + + + + + Fix bugs with parsing signed + hh:mm and + hh:mm:ss + fields in interval constants (Amit Kapila, Tom Lane) + + + + + + Fix pg_dump to better handle views containing partial + GROUP BY lists (Tom Lane) + + + + A view that lists only a primary key column in GROUP BY, + but uses other table columns as if they were grouped, gets marked as + depending on the primary key. Improper handling of such primary key + dependencies in pg_dump resulted in poorly-ordered + dumps, which at best would be inefficient to restore and at worst + could result in outright failure of a parallel + pg_restore run. + + + + + + In PL/Perl, avoid setting UTF8 flag when in SQL_ASCII encoding + (Alex Hunsaker, Kyotaro Horiguchi, Alvaro Herrera) + + + + + + Use Postgres' encoding conversion functions, not Python's, when + converting a Python Unicode string to the server encoding in + PL/Python (Jan Urbanski) + + + + This avoids some corner-case problems, notably that Python doesn't + support all the encodings Postgres does. A notable functional change + is that if the server encoding is SQL_ASCII, you will get the UTF-8 + representation of the string; formerly, any non-ASCII characters in + the string would result in an error. + + + + + + Fix mapping of PostgreSQL encodings to Python encodings in PL/Python + (Jan Urbanski) + + + + + + Report errors properly in contrib/xml2's + xslt_process() (Tom Lane) + + + + + + Update time zone data files to tzdata release 2012e + for DST law changes in Morocco and Tokelau + + + + + + + + + + Release 9.1.4 + + + Release Date + 2012-06-04 + + + + This release contains a variety of fixes from 9.1.3. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.4 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you use the citext data type, and you upgraded + from a previous major release by running pg_upgrade, + you should run CREATE EXTENSION citext FROM unpackaged + to avoid collation-related failures in citext operations. + The same is necessary if you restore a dump from a pre-9.1 database + that contains an instance of the citext data type. + If you've already run the CREATE EXTENSION command before + upgrading to 9.1.4, you will instead need to do manual catalog updates + as explained in the third changelog item below. + + + + Also, if you are upgrading from a version earlier than 9.1.2, + see . + + + + + + Changes + + + + + + Fix incorrect password transformation in + contrib/pgcrypto's DES crypt() function + (Solar Designer) + + + + If a password string contained the byte value 0x80, the + remainder of the password was ignored, causing the password to be much + weaker than it appeared. With this fix, the rest of the string is + properly included in the DES hash. Any stored password values that are + affected by this bug will thus no longer match, so the stored values may + need to be updated. (CVE-2012-2143) + + + + + + Ignore SECURITY DEFINER and SET attributes for + a procedural language's call handler (Tom Lane) + + + + Applying such attributes to a call handler could crash the server. + (CVE-2012-2655) + + + + + + Make contrib/citext's upgrade script fix collations of + citext arrays and domains over citext + (Tom Lane) + + + + Release 9.1.2 provided a fix for collations of citext columns + and indexes in databases upgraded or reloaded from pre-9.1 + installations, but that fix was incomplete: it neglected to handle arrays + and domains over citext. This release extends the module's + upgrade script to handle these cases. As before, if you have already + run the upgrade script, you'll need to run the collation update + commands by hand instead. See the 9.1.2 release notes for more + information about doing this. + + + + + + Allow numeric timezone offsets in timestamp input to be up to + 16 hours away from UTC (Tom Lane) + + + + Some historical time zones have offsets larger than 15 hours, the + previous limit. This could result in dumped data values being rejected + during reload. + + + + + + Fix timestamp conversion to cope when the given time is exactly the + last DST transition time for the current timezone (Tom Lane) + + + + This oversight has been there a long time, but was not noticed + previously because most DST-using zones are presumed to have an + indefinite sequence of future DST transitions. + + + + + + Fix text to name and char to name + casts to perform string truncation correctly in multibyte encodings + (Karl Schnaitter) + + + + + + Fix memory copying bug in to_tsquery() (Heikki Linnakangas) + + + + + + Ensure txid_current() reports the correct epoch when + executed in hot standby (Simon Riggs) + + + + + + Fix planner's handling of outer PlaceHolderVars within subqueries (Tom + Lane) + + + + This bug concerns sub-SELECTs that reference variables coming from the + nullable side of an outer join of the surrounding query. + In 9.1, queries affected by this bug would fail with ERROR: + Upper-level PlaceHolderVar found where not expected. But in 9.0 and + 8.4, you'd silently get possibly-wrong answers, since the value + transmitted into the subquery wouldn't go to null when it should. + + + + + + Fix planning of UNION ALL subqueries with output columns + that are not simple variables (Tom Lane) + + + + Planning of such cases got noticeably worse in 9.1 as a result of a + misguided fix for MergeAppend child's targetlist doesn't match + MergeAppend errors. Revert that fix and do it another way. + + + + + + Fix slow session startup when pg_attribute is very large + (Tom Lane) + + + + If pg_attribute exceeds one-fourth of + shared_buffers, cache rebuilding code that is sometimes + needed during session start would trigger the synchronized-scan logic, + causing it to take many times longer than normal. The problem was + particularly acute if many new sessions were starting at once. + + + + + + Ensure sequential scans check for query cancel reasonably often (Merlin + Moncure) + + + + A scan encountering many consecutive pages that contain no live tuples + would not respond to interrupts meanwhile. + + + + + + Ensure the Windows implementation of PGSemaphoreLock() + clears ImmediateInterruptOK before returning (Tom Lane) + + + + This oversight meant that a query-cancel interrupt received later + in the same query could be accepted at an unsafe time, with + unpredictable but not good consequences. + + + + + + Show whole-row variables safely when printing views or rules + (Abbas Butt, Tom Lane) + + + + Corner cases involving ambiguous names (that is, the name could be + either a table or column name of the query) were printed in an + ambiguous way, risking that the view or rule would be interpreted + differently after dump and reload. Avoid the ambiguous case by + attaching a no-op cast. + + + + + + Fix COPY FROM to properly handle null marker strings that + correspond to invalid encoding (Tom Lane) + + + + A null marker string such as E'\\0' should work, and did + work in the past, but the case got broken in 8.4. + + + + + + Fix EXPLAIN VERBOSE for writable CTEs containing + RETURNING clauses (Tom Lane) + + + + + + Fix PREPARE TRANSACTION to work correctly in the presence + of advisory locks (Tom Lane) + + + + Historically, PREPARE TRANSACTION has simply ignored any + session-level advisory locks the session holds, but this case was + accidentally broken in 9.1. + + + + + + Fix truncation of unlogged tables (Robert Haas) + + + + + + Ignore missing schemas during non-interactive assignments of + search_path (Tom Lane) + + + + This re-aligns 9.1's behavior with that of older branches. Previously + 9.1 would throw an error for nonexistent schemas mentioned in + search_path settings obtained from places such as + ALTER DATABASE SET. + + + + + + Fix bugs with temporary or transient tables used in extension scripts + (Tom Lane) + + + + This includes cases such as a rewriting ALTER TABLE within + an extension update script, since that uses a transient table behind + the scenes. + + + + + + Ensure autovacuum worker processes perform stack depth checking + properly (Heikki Linnakangas) + + + + Previously, infinite recursion in a function invoked by + auto-ANALYZE could crash worker processes. + + + + + + Fix logging collector to not lose log coherency under high load (Andrew + Dunstan) + + + + The collector previously could fail to reassemble large messages if it + got too busy. + + + + + + Fix logging collector to ensure it will restart file rotation + after receiving SIGHUP (Tom Lane) + + + + + + Fix too many LWLocks taken failure in GiST indexes (Heikki + Linnakangas) + + + + + + Fix WAL replay logic for GIN indexes to not fail if the index was + subsequently dropped (Tom Lane) + + + + + + Correctly detect SSI conflicts of prepared transactions after a crash + (Dan Ports) + + + + + + Avoid synchronous replication delay when committing a transaction that + only modified temporary tables (Heikki Linnakangas) + + + + In such a case the transaction's commit record need not be flushed to + standby servers, but some of the code didn't know that and waited for + it to happen anyway. + + + + + + Fix error handling in pg_basebackup + (Thomas Ogrisegg, Fujii Masao) + + + + + + Fix walsender to not go into a busy loop if connection + is terminated (Fujii Masao) + + + + + + Fix memory leak in PL/pgSQL's RETURN NEXT command (Joe + Conway) + + + + + + Fix PL/pgSQL's GET DIAGNOSTICS command when the target + is the function's first variable (Tom Lane) + + + + + + Ensure that PL/Perl package-qualifies the _TD variable + (Alex Hunsaker) + + + + This bug caused trigger invocations to fail when they are nested + within a function invocation that changes the current package. + + + + + + Fix PL/Python functions returning composite types to accept a string + for their result value (Jan Urbanski) + + + + This case was accidentally broken by the 9.1 additions to allow a + composite result value to be supplied in other formats, such as + dictionaries. + + + + + + Fix potential access off the end of memory in psql's + expanded display (\x) mode (Peter Eisentraut) + + + + + + Fix several performance problems in pg_dump when + the database contains many objects (Jeff Janes, Tom Lane) + + + + pg_dump could get very slow if the database contained + many schemas, or if many objects are in dependency loops, or if there + are many owned sequences. + + + + + + Fix memory and file descriptor leaks in pg_restore + when reading a directory-format archive (Peter Eisentraut) + + + + + + Fix pg_upgrade for the case that a database stored in a + non-default tablespace contains a table in the cluster's default + tablespace (Bruce Momjian) + + + + + + In ecpg, fix rare memory leaks and possible overwrite + of one byte after the sqlca_t structure (Peter Eisentraut) + + + + + + Fix contrib/dblink's dblink_exec() to not leak + temporary database connections upon error (Tom Lane) + + + + + + Fix contrib/dblink to report the correct connection name in + error messages (Kyotaro Horiguchi) + + + + + + Fix contrib/vacuumlo to use multiple transactions when + dropping many large objects (Tim Lewis, Robert Haas, Tom Lane) + + + + This change avoids exceeding max_locks_per_transaction when + many objects need to be dropped. The behavior can be adjusted with the + new -l (limit) option. + + + + + + Update time zone data files to tzdata release 2012c + for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland + Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; + also historical corrections for Canada. + + + + + + + + + + Release 9.1.3 + + + Release Date + 2012-02-27 + + + + This release contains a variety of fixes from 9.1.2. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.3 + + + A dump/restore is not required for those running 9.1.X. + + + + However, if you are upgrading from a version earlier than 9.1.2, + see . + + + + + + Changes + + + + + + Require execute permission on the trigger function for + CREATE TRIGGER (Robert Haas) + + + + This missing check could allow another user to execute a trigger + function with forged input data, by installing it on a table he owns. + This is only of significance for trigger functions marked + SECURITY DEFINER, since otherwise trigger functions run + as the table owner anyway. (CVE-2012-0866) + + + + + + Remove arbitrary limitation on length of common name in SSL + certificates (Heikki Linnakangas) + + + + Both libpq and the server truncated the common name + extracted from an SSL certificate at 32 bytes. Normally this would + cause nothing worse than an unexpected verification failure, but there + are some rather-implausible scenarios in which it might allow one + certificate holder to impersonate another. The victim would have to + have a common name exactly 32 bytes long, and the attacker would have + to persuade a trusted CA to issue a certificate in which the common + name has that string as a prefix. Impersonating a server would also + require some additional exploit to redirect client connections. + (CVE-2012-0867) + + + + + + Convert newlines to spaces in names written in pg_dump + comments (Robert Haas) + + + + pg_dump was incautious about sanitizing object names + that are emitted within SQL comments in its output script. A name + containing a newline would at least render the script syntactically + incorrect. Maliciously crafted object names could present a SQL + injection risk when the script is reloaded. (CVE-2012-0868) + + + + + + Fix btree index corruption from insertions concurrent with vacuuming + (Tom Lane) + + + + An index page split caused by an insertion could sometimes cause a + concurrently-running VACUUM to miss removing index entries + that it should remove. After the corresponding table rows are removed, + the dangling index entries would cause errors (such as could not + read block N in file ...) or worse, silently wrong query results + after unrelated rows are re-inserted at the now-free table locations. + This bug has been present since release 8.2, but occurs so infrequently + that it was not diagnosed until now. If you have reason to suspect + that it has happened in your database, reindexing the affected index + will fix things. + + + + + + Fix transient zeroing of shared buffers during WAL replay (Tom Lane) + + + + The replay logic would sometimes zero and refill a shared buffer, so + that the contents were transiently invalid. In hot standby mode this + can result in a query that's executing in parallel seeing garbage data. + Various symptoms could result from that, but the most common one seems + to be invalid memory alloc request size. + + + + + + Fix handling of data-modifying WITH subplans in + READ COMMITTED rechecking (Tom Lane) + + + + A WITH clause containing + INSERT/UPDATE/DELETE would crash + if the parent UPDATE or DELETE command needed + to be re-evaluated at one or more rows due to concurrent updates + in READ COMMITTED mode. + + + + + + Fix corner case in SSI transaction cleanup + (Dan Ports) + + + + When finishing up a read-write serializable transaction, + a crash could occur if all remaining active serializable transactions + are read-only. + + + + + + Fix postmaster to attempt restart after a hot-standby crash (Tom Lane) + + + + A logic error caused the postmaster to terminate, rather than attempt + to restart the cluster, if any backend process crashed while operating + in hot standby mode. + + + + + + Fix CLUSTER/VACUUM FULL handling of toast + values owned by recently-updated rows (Tom Lane) + + + + This oversight could lead to duplicate key value violates unique + constraint errors being reported against the toast table's index + during one of these commands. + + + + + + Update per-column permissions, not only per-table permissions, when + changing table owner (Tom Lane) + + + + Failure to do this meant that any previously granted column permissions + were still shown as having been granted by the old owner. This meant + that neither the new owner nor a superuser could revoke the + now-untraceable-to-table-owner permissions. + + + + + + Support foreign data wrappers and foreign servers in + REASSIGN OWNED (Alvaro Herrera) + + + + This command failed with unexpected classid errors if + it needed to change the ownership of any such objects. + + + + + + Allow non-existent values for some settings in ALTER + USER/DATABASE SET (Heikki Linnakangas) + + + + Allow default_text_search_config, + default_tablespace, and temp_tablespaces to be + set to names that are not known. This is because they might be known + in another database where the setting is intended to be used, or for the + tablespace cases because the tablespace might not be created yet. The + same issue was previously recognized for search_path, and + these settings now act like that one. + + + + + + Fix unsupported node type error caused by COLLATE + in an INSERT expression (Tom Lane) + + + + + + Avoid crashing when we have problems deleting table files post-commit + (Tom Lane) + + + + Dropping a table should lead to deleting the underlying disk files only + after the transaction commits. In event of failure then (for instance, + because of wrong file permissions) the code is supposed to just emit a + warning message and go on, since it's too late to abort the + transaction. This logic got broken as of release 8.4, causing such + situations to result in a PANIC and an unrestartable database. + + + + + + Recover from errors occurring during WAL replay of DROP + TABLESPACE (Tom Lane) + + + + Replay will attempt to remove the tablespace's directories, but there + are various reasons why this might fail (for example, incorrect + ownership or permissions on those directories). Formerly the replay + code would panic, rendering the database unrestartable without manual + intervention. It seems better to log the problem and continue, since + the only consequence of failure to remove the directories is some + wasted disk space. + + + + + + Fix race condition in logging AccessExclusiveLocks for hot standby + (Simon Riggs) + + + + Sometimes a lock would be logged as being held by transaction + zero. This is at least known to produce assertion failures on + slave servers, and might be the cause of more serious problems. + + + + + + Track the OID counter correctly during WAL replay, even when it wraps + around (Tom Lane) + + + + Previously the OID counter would remain stuck at a high value until the + system exited replay mode. The practical consequences of that are + usually nil, but there are scenarios wherein a standby server that's + been promoted to master might take a long time to advance the OID + counter to a reasonable value once values are needed. + + + + + + Prevent emitting misleading consistent recovery state reached + log message at the beginning of crash recovery (Heikki Linnakangas) + + + + + + Fix initial value of + pg_stat_replication.replay_location + (Fujii Masao) + + + + Previously, the value shown would be wrong until at least one WAL + record had been replayed. + + + + + + Fix regular expression back-references with * attached + (Tom Lane) + + + + Rather than enforcing an exact string match, the code would effectively + accept any string that satisfies the pattern sub-expression referenced + by the back-reference symbol. + + + + A similar problem still afflicts back-references that are embedded in a + larger quantified expression, rather than being the immediate subject + of the quantifier. This will be addressed in a future + PostgreSQL release. + + + + + + Fix recently-introduced memory leak in processing of + inet/cidr values (Heikki Linnakangas) + + + + A patch in the December 2011 releases of PostgreSQL + caused memory leakage in these operations, which could be significant + in scenarios such as building a btree index on such a column. + + + + + + Fix planner's ability to push down index-expression restrictions + through UNION ALL (Tom Lane) + + + + This type of optimization was inadvertently disabled by a fix for + another problem in 9.1.2. + + + + + + Fix planning of WITH clauses referenced in + UPDATE/DELETE on an inherited table + (Tom Lane) + + + + This bug led to could not find plan for CTE failures. + + + + + + Fix GIN cost estimation to handle column IN (...) + index conditions (Marti Raudsepp) + + + + This oversight would usually lead to crashes if such a condition could + be used with a GIN index. + + + + + + Prevent assertion failure when exiting a session with an open, failed + transaction (Tom Lane) + + + + This bug has no impact on normal builds with asserts not enabled. + + + + + + Fix dangling pointer after CREATE TABLE AS/SELECT + INTO in a SQL-language function (Tom Lane) + + + + In most cases this only led to an assertion failure in assert-enabled + builds, but worse consequences seem possible. + + + + + + Avoid double close of file handle in syslogger on Windows (MauMau) + + + + Ordinarily this error was invisible, but it would cause an exception + when running on a debug version of Windows. + + + + + + Fix I/O-conversion-related memory leaks in plpgsql + (Andres Freund, Jan Urbanski, Tom Lane) + + + + Certain operations would leak memory until the end of the current + function. + + + + + + Work around bug in perl's SvPVutf8() function (Andrew Dunstan) + + + + This function crashes when handed a typeglob or certain read-only + objects such as $^V. Make plperl avoid passing those to + it. + + + + + + In pg_dump, don't dump contents of an extension's + configuration tables if the extension itself is not being dumped + (Tom Lane) + + + + + + Improve pg_dump's handling of inherited table columns + (Tom Lane) + + + + pg_dump mishandled situations where a child column has + a different default expression than its parent column. If the default + is textually identical to the parent's default, but not actually the + same (for instance, because of schema search path differences) it would + not be recognized as different, so that after dump and restore the + child would be allowed to inherit the parent's default. Child columns + that are NOT NULL where their parent is not could also be + restored subtly incorrectly. + + + + + + Fix pg_restore's direct-to-database mode for + INSERT-style table data (Tom Lane) + + + + Direct-to-database restores from archive files made with + + + + + + Teach pg_upgrade to handle renaming of + plpython's shared library (Bruce Momjian) + + + + Upgrading a pre-9.1 database that included plpython would fail because + of this oversight. + + + + + + Allow pg_upgrade to process tables containing + regclass columns (Bruce Momjian) + + + + Since pg_upgrade now takes care to preserve + pg_class OIDs, there was no longer any reason for this + restriction. + + + + + + Make libpq ignore ENOTDIR errors + when looking for an SSL client certificate file + (Magnus Hagander) + + + + This allows SSL connections to be established, though without a + certificate, even when the user's home directory is set to something + like /dev/null. + + + + + + Fix some more field alignment issues in ecpg's SQLDA area + (Zoltan Boszormenyi) + + + + + + Allow AT option in ecpg + DEALLOCATE statements (Michael Meskes) + + + + The infrastructure to support this has been there for awhile, but + through an oversight there was still an error check rejecting the case. + + + + + + Do not use the variable name when defining a varchar structure in ecpg + (Michael Meskes) + + + + + + Fix contrib/auto_explain's JSON output mode to produce + valid JSON (Andrew Dunstan) + + + + The output used brackets at the top level, when it should have used + braces. + + + + + + Fix error in contrib/intarray's int[] & + int[] operator (Guillaume Lelarge) + + + + If the smallest integer the two input arrays have in common is 1, + and there are smaller values in either array, then 1 would be + incorrectly omitted from the result. + + + + + + Fix error detection in contrib/pgcrypto's + encrypt_iv() and decrypt_iv() + (Marko Kreen) + + + + These functions failed to report certain types of invalid-input errors, + and would instead return random garbage values for incorrect input. + + + + + + Fix one-byte buffer overrun in contrib/test_parser + (Paul Guyot) + + + + The code would try to read one more byte than it should, which would + crash in corner cases. + Since contrib/test_parser is only example code, this is + not a security issue in itself, but bad example code is still bad. + + + + + + Use __sync_lock_test_and_set() for spinlocks on ARM, if + available (Martin Pitt) + + + + This function replaces our previous use of the SWPB + instruction, which is deprecated and not available on ARMv6 and later. + Reports suggest that the old code doesn't fail in an obvious way on + recent ARM boards, but simply doesn't interlock concurrent accesses, + leading to bizarre failures in multiprocess operation. + + + + + + Use + + + This prevents assorted scenarios wherein recent versions of gcc will + produce creative results. + + + + + + Allow use of threaded Python on FreeBSD (Chris Rees) + + + + Our configure script previously believed that this combination wouldn't + work; but FreeBSD fixed the problem, so remove that error check. + + + + + + Allow MinGW builds to use standardly-named OpenSSL libraries + (Tomasz Ostrowski) + + + + + + + + + + Release 9.1.2 + + + Release Date + 2011-12-05 + + + + This release contains a variety of fixes from 9.1.1. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.2 + + + A dump/restore is not required for those running 9.1.X. + + + + However, a longstanding error was discovered in the definition of the + information_schema.referential_constraints view. If you + rely on correct results from that view, you should replace its + definition as explained in the first changelog item below. + + + + Also, if you use the citext data type, and you upgraded + from a previous major release by running pg_upgrade, + you should run CREATE EXTENSION citext FROM unpackaged + to avoid collation-related failures in citext operations. + The same is necessary if you restore a dump from a pre-9.1 database + that contains an instance of the citext data type. + If you've already run the CREATE EXTENSION command before + upgrading to 9.1.2, you will instead need to do manual catalog updates + as explained in the second changelog item. + + + + + + Changes + + + + + + Fix bugs in information_schema.referential_constraints view + (Tom Lane) + + + + This view was being insufficiently careful about matching the + foreign-key constraint to the depended-on primary or unique key + constraint. That could result in failure to show a foreign key + constraint at all, or showing it multiple times, or claiming that it + depends on a different constraint than the one it really does. + + + + Since the view definition is installed by initdb, + merely upgrading will not fix the problem. If you need to fix this + in an existing installation, you can (as a superuser) drop the + information_schema schema then re-create it by sourcing + SHAREDIR/information_schema.sql. + (Run pg_config --sharedir if you're uncertain where + SHAREDIR is.) This must be repeated in each database + to be fixed. + + + + + + Make contrib/citext's upgrade script fix collations of + citext columns and indexes (Tom Lane) + + + + Existing citext columns and indexes aren't correctly marked as + being of a collatable data type during pg_upgrade from + a pre-9.1 server, or when a pre-9.1 dump containing the citext + type is loaded into a 9.1 server. + That leads to operations on these columns failing with errors + such as could not determine which collation to use for string + comparison. This change allows them to be fixed by the same + script that upgrades the citext module into a proper 9.1 + extension during CREATE EXTENSION citext FROM unpackaged. + + + + If you have a previously-upgraded database that is suffering from this + problem, and you already ran the CREATE EXTENSION command, + you can manually run (as superuser) the UPDATE commands + found at the end of + SHAREDIR/extension/citext--unpackaged--1.0.sql. + (Run pg_config --sharedir if you're uncertain where + SHAREDIR is.) + There is no harm in doing this again if unsure. + + + + + + Fix possible crash during UPDATE or DELETE that + joins to the output of a scalar-returning function (Tom Lane) + + + + A crash could only occur if the target row had been concurrently + updated, so this problem surfaced only intermittently. + + + + + + Fix incorrect replay of WAL records for GIN index updates + (Tom Lane) + + + + This could result in transiently failing to find index entries after + a crash, or on a hot-standby server. The problem would be repaired + by the next VACUUM of the index, however. + + + + + + Fix TOAST-related data corruption during CREATE TABLE dest AS + SELECT * FROM src or INSERT INTO dest SELECT * FROM src + (Tom Lane) + + + + If a table has been modified by ALTER TABLE ADD COLUMN, + attempts to copy its data verbatim to another table could produce + corrupt results in certain corner cases. + The problem can only manifest in this precise form in 8.4 and later, + but we patched earlier versions as well in case there are other code + paths that could trigger the same bug. + + + + + + Fix possible failures during hot standby startup (Simon Riggs) + + + + + + Start hot standby faster when initial snapshot is incomplete + (Simon Riggs) + + + + + + Fix race condition during toast table access from stale syscache entries + (Tom Lane) + + + + The typical symptom was transient errors like missing chunk + number 0 for toast value NNNNN in pg_toast_2619, where the cited + toast table would always belong to a system catalog. + + + + + + Track dependencies of functions on items used in parameter default + expressions (Tom Lane) + + + + Previously, a referenced object could be dropped without having dropped + or modified the function, leading to misbehavior when the function was + used. Note that merely installing this update will not fix the missing + dependency entries; to do that, you'd need to CREATE OR + REPLACE each such function afterwards. If you have functions whose + defaults depend on non-built-in objects, doing so is recommended. + + + + + + Fix incorrect management of placeholder variables in nestloop joins + (Tom Lane) + + + + This bug is known to lead to variable not found in subplan target + list planner errors, and could possibly result in wrong query output + when outer joins are involved. + + + + + + Fix window functions that sort by expressions involving aggregates + (Tom Lane) + + + + Previously these could fail with could not find pathkey item to + sort planner errors. + + + + + + Fix MergeAppend child's targetlist doesn't match MergeAppend + planner errors (Tom Lane) + + + + + + Fix index matching for operators with both collatable and noncollatable + inputs (Tom Lane) + + + + In 9.1.0, an indexable operator that has a non-collatable left-hand + input type and a collatable right-hand input type would not be + recognized as matching the left-hand column's index. An example is + the hstore ? text operator. + + + + + + Allow inlining of set-returning SQL functions with multiple OUT + parameters (Tom Lane) + + + + + + Don't trust deferred-unique indexes for join removal (Tom Lane and Marti + Raudsepp) + + + + A deferred uniqueness constraint might not hold intra-transaction, + so assuming that it does could give incorrect query results. + + + + + + Make DatumGetInetP() unpack inet datums that have a 1-byte + header, and add a new macro, DatumGetInetPP(), that does + not (Heikki Linnakangas) + + + + This change affects no core code, but might prevent crashes in add-on + code that expects DatumGetInetP() to produce an unpacked + datum as per usual convention. + + + + + + Improve locale support in money type's input and output + (Tom Lane) + + + + Aside from not supporting all standard + lc_monetary + formatting options, the input and output functions were inconsistent, + meaning there were locales in which dumped money values could + not be re-read. + + + + + + Don't let transform_null_equals + affect CASE foo WHEN NULL ... constructs + (Heikki Linnakangas) + + + + transform_null_equals is only supposed to affect + foo = NULL expressions written directly by the user, not + equality checks generated internally by this form of CASE. + + + + + + Change foreign-key trigger creation order to better support + self-referential foreign keys (Tom Lane) + + + + For a cascading foreign key that references its own table, a row update + will fire both the ON UPDATE trigger and the + CHECK trigger as one event. The ON UPDATE + trigger must execute first, else the CHECK will check a + non-final state of the row and possibly throw an inappropriate error. + However, the firing order of these triggers is determined by their + names, which generally sort in creation order since the triggers have + auto-generated names following the convention + RI_ConstraintTrigger_NNNN. A proper fix would require + modifying that convention, which we will do in 9.2, but it seems risky + to change it in existing releases. So this patch just changes the + creation order of the triggers. Users encountering this type of error + should drop and re-create the foreign key constraint to get its + triggers into the right order. + + + + + + Fix IF EXISTS to work correctly in DROP OPERATOR + FAMILY (Robert Haas) + + + + + + Disallow dropping of an extension from within its own script + (Tom Lane) + + + + This prevents odd behavior in case of incorrect management of extension + dependencies. + + + + + + Don't mark auto-generated types as extension members (Robert Haas) + + + + Relation rowtypes and automatically-generated array types do not need to + have their own extension membership entries in pg_depend, + and creating such entries complicates matters for extension upgrades. + + + + + + Cope with invalid pre-existing search_path settings during + CREATE EXTENSION (Tom Lane) + + + + + + Avoid floating-point underflow while tracking buffer allocation rate + (Greg Matthews) + + + + While harmless in itself, on certain platforms this would result in + annoying kernel log messages. + + + + + + Prevent autovacuum transactions from running in serializable mode + (Tom Lane) + + + + Autovacuum formerly used the cluster-wide default transaction isolation + level, but there is no need for it to use anything higher than READ + COMMITTED, and using SERIALIZABLE could result in unnecessary delays + for other processes. + + + + + + Ensure walsender processes respond promptly to SIGTERM + (Magnus Hagander) + + + + + + Exclude postmaster.opts from base backups + (Magnus Hagander) + + + + + + Preserve configuration file name and line number values when starting + child processes under Windows (Tom Lane) + + + + Formerly, these would not be displayed correctly in the + pg_settings view. + + + + + + Fix incorrect field alignment in ecpg's SQLDA area + (Zoltan Boszormenyi) + + + + + + Preserve blank lines within commands in psql's command + history (Robert Haas) + + + + The former behavior could cause problems if an empty line was removed + from within a string literal, for example. + + + + + + Avoid platform-specific infinite loop in pg_dump + (Steve Singer) + + + + + + Fix compression of plain-text output format in pg_dump + (Adrian Klaver and Tom Lane) + + + + pg_dump has historically understood -Z with + no -F switch to mean that it should emit a gzip-compressed + version of its plain text output. Restore that behavior. + + + + + + Fix pg_dump to dump user-defined casts between + auto-generated types, such as table rowtypes (Tom Lane) + + + + + + Fix missed quoting of foreign server names in pg_dump + (Tom Lane) + + + + + + Assorted fixes for pg_upgrade (Bruce Momjian) + + + + Handle exclusion constraints correctly, avoid failures on Windows, + don't complain about mismatched toast table names in 8.4 databases. + + + + + + In PL/pgSQL, allow foreign tables to define row types + (Alexander Soudakov) + + + + + + Fix up conversions of PL/Perl functions' results + (Alex Hunsaker and Tom Lane) + + + + Restore the pre-9.1 behavior that PL/Perl functions returning + void ignore the result value of their last Perl statement; + 9.1.0 would throw an error if that statement returned a reference. + Also, make sure it works to return a string value for a composite type, + so long as the string meets the type's input format. + In addition, throw errors for attempts to return Perl arrays or hashes + when the function's declared result type is not an array or composite + type, respectively. (Pre-9.1 versions rather uselessly returned + strings like ARRAY(0x221a9a0) or + HASH(0x221aa90) in such cases.) + + + + + + Ensure PL/Perl strings are always correctly UTF8-encoded + (Amit Khandekar and Alex Hunsaker) + + + + + + Use the preferred version of xsubpp to build PL/Perl, + not necessarily the operating system's main copy + (David Wheeler and Alex Hunsaker) + + + + + + Correctly propagate SQLSTATE in PL/Python exceptions + (Mika Eloranta and Jan Urbanski) + + + + + + Do not install PL/Python extension files for Python major versions + other than the one built against (Peter Eisentraut) + + + + + + Change all the contrib extension script files to report + a useful error message if they are fed to psql + (Andrew Dunstan and Tom Lane) + + + + This should help teach people about the new method of using + CREATE EXTENSION to load these files. In most cases, + sourcing the scripts directly would fail anyway, but with + harder-to-interpret messages. + + + + + + Fix incorrect coding in contrib/dict_int and + contrib/dict_xsyn (Tom Lane) + + + + Some functions incorrectly assumed that memory returned by + palloc() is guaranteed zeroed. + + + + + + Remove contrib/sepgsql tests from the regular regression + test mechanism (Tom Lane) + + + + Since these tests require root privileges for setup, they're impractical + to run automatically. Switch over to a manual approach instead, and + provide a testing script to help with that. + + + + + + Fix assorted errors in contrib/unaccent's configuration + file parsing (Tom Lane) + + + + + + Honor query cancel interrupts promptly in pgstatindex() + (Robert Haas) + + + + + + Fix incorrect quoting of log file name in Mac OS X start script + (Sidar Lopez) + + + + + + Revert unintentional enabling of WAL_DEBUG (Robert Haas) + + + + Fortunately, as debugging tools go, this one is pretty cheap; + but it's not intended to be enabled by default, so revert. + + + + + + Ensure VPATH builds properly install all server header files + (Peter Eisentraut) + + + + + + Shorten file names reported in verbose error messages (Peter Eisentraut) + + + + Regular builds have always reported just the name of the C file + containing the error message call, but VPATH builds formerly + reported an absolute path name. + + + + + + Fix interpretation of Windows timezone names for Central America + (Tom Lane) + + + + Map Central America Standard Time to CST6, not + CST6CDT, because DST is generally not observed anywhere in + Central America. + + + + + + Update time zone data files to tzdata release 2011n + for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa; + also historical corrections for Alaska and British East Africa. + + + + + + + + + + Release 9.1.1 + + + Release Date + 2011-09-26 + + + + This release contains a small number of fixes from 9.1.0. + For information about new features in the 9.1 major release, see + . + + + + Migration to Version 9.1.1 + + + A dump/restore is not required for those running 9.1.X. + + + + + + Changes + + + + + + Make pg_options_to_table return NULL for an option with no + value (Tom Lane) + + + + Previously such cases would result in a server crash. + + + + + + Fix memory leak at end of a GiST index scan (Tom Lane) + + + + Commands that perform many separate GiST index scans, such as + verification of a new GiST-based exclusion constraint on a table + already containing many rows, could transiently require large amounts of + memory due to this leak. + + + + + + Fix explicit reference to pg_temp schema in CREATE + TEMPORARY TABLE (Robert Haas) + + + + This used to be allowed, but failed in 9.1.0. + + + + + + + + Release 9.1 Release Date - 2011-??-?? + 2011-09-12 - CURRENT AS OF 2011-06-09 - Overview - This release of - PostgreSQL adds numerous major features, including: + This release shows PostgreSQL moving beyond the + traditional relational-database feature set with new, ground-breaking + functionality that is unique to PostgreSQL. + The streaming replication feature introduced in release 9.0 is + significantly enhanced by adding a synchronous-replication option, + streaming backups, and monitoring improvements. + Major enhancements include: - - (summary to be added) - + + + + + + + Allow synchronous + replication + + + + + + Add support for foreign + tables + + + + + + Add per-column collation support + + + + + + Add extensions which + simplify packaging of additions to PostgreSQL + + + + + + Add a true serializable isolation level + + + + + + Support unlogged tables using the UNLOGGED + option in CREATE + TABLE + + + + + + Allow data-modification commands + (INSERT/UPDATE/DELETE) in + WITH clauses + + + + + + Add nearest-neighbor (order-by-operator) searching to GiST indexes + + + + + + Add a SECURITY + LABEL command and support for + SELinux permissions control + + + + + + Update the PL/Python server-side + language + + + + The above items are explained in more detail in the sections below. @@ -66,6 +5059,17 @@ strings are the proper way to embed backslash escapes in strings and are unaffected by this change. + + + + This change can break applications that are not expecting it and + do their own string escaping according to the old rules. The + consequences could be as severe as introducing SQL-injection security + holes. Be sure to test applications that are exposed to untrusted + input, to ensure that they correctly handle single quotes and + backslashes in text strings. + + @@ -171,7 +5175,7 @@ Require superuser or CREATEROLE permissions in order to - set role comments (Tom Lane) + set comments on roles (Tom Lane) @@ -192,8 +5196,8 @@ - Previously pg_last_xlog_receive_location() could - move backward when streaming replication is restarted. + Previously, the value of pg_last_xlog_receive_location() + could move backward when streaming replication is restarted. @@ -205,7 +5209,7 @@ - Previously replication connections were always logged. + Previously, replication connections were always logged. @@ -276,6 +5280,32 @@ + + Contrib + + + + + + All contrib modules are now installed with CREATE EXTENSION + rather than by manually invoking their SQL scripts + (Dimitri Fontaine, Tom Lane) + + + + To update an existing database containing the 9.0 version of a contrib + module, use CREATE EXTENSION ... FROM unpackaged + to wrap the existing contrib module's objects into an extension. When + updating from a pre-9.0 version, drop the contrib module's objects + using its old uninstall script, then use CREATE EXTENSION. + + + + + + + Other Incompatibilities @@ -303,7 +5333,8 @@ - Treat ECPG cursor names as case-insensitive (Zoltan Boszormenyi) + Treat ECPG cursor names as case-insensitive + (Zoltan Boszormenyi) @@ -314,9 +5345,12 @@ Changes - - Version 9.1 has ... - + + + Below you will find a detailed account of the changes between + PostgreSQL 9.1 and the previous major + release. + Server @@ -328,8 +5362,7 @@ - Support unlogged tables using the UNLOGGED + Support unlogged tables using the UNLOGGED option in CREATE TABLE (Robert Haas) @@ -360,8 +5393,11 @@ - Merge duplicate fsync requests on busy systems (Robert Haas, - Greg Smith) + Merge duplicate fsync requests (Robert Haas, Greg Smith) + + + + This greatly improves performance under heavy write loads. @@ -385,6 +5421,19 @@ + + + Avoid leaving data files open after blind writes + (Alvaro Herrera) + + + + This fixes scenarios in which backends might hold files open long + after they were deleted, preventing the kernel from reclaiming + disk space. + + + @@ -491,7 +5540,9 @@ - The old term is still accepted for backward compatibility. + The old term is still accepted for backward compatibility, but since + the two methods are fundamentally different, it seemed better to adopt + different names for them. @@ -528,7 +5579,7 @@ - New details show WAL file and sync activity. + New details include WAL file and sync activity. @@ -541,6 +5592,18 @@ + + + Reduce the default maximum line length for syslog + logging to 900 bytes plus prefixes (Noah Misch) + + + + This avoids truncation of long log lines on syslog implementations + that have a 1KB length limit, rather than the more common 2KB. + + + @@ -615,14 +5678,14 @@ - Allow auto-tuning of wal_buffers (Greg Smith) - wal_buffers is now auto-tuned by default based on - the size of shared_buffers. + By default, the value of wal_buffers is now chosen + automatically based on the value of shared_buffers. @@ -662,8 +5725,8 @@ - This allows the primary to wait for a standby to write the transaction - information to disk before acknowledging the commit. + This allows the primary server to wait for a standby to write a + transaction's information to disk before acknowledging the commit. One standby at a time can take the role of the synchronous standby, as controlled by the synchronous_standby_names @@ -676,8 +5739,8 @@ - Add protocol support for sending file system backups to standbys using - the streaming replication network connection (Magnus Hagander, + Add protocol support for sending file system backups to standby servers + using the streaming replication network connection (Magnus Hagander, Heikki Linnakangas) @@ -690,7 +5753,7 @@ Add - replication_timeout + replication_timeout setting (Fujii Masao, Heikki Linnakangas) @@ -714,7 +5777,7 @@ - Add replication permission + Add a replication permission for roles (Magnus Hagander) @@ -779,7 +5842,7 @@ - This helps avoid cancelling long-running queries on the standby. + This helps avoid canceling long-running queries on the standby. @@ -813,7 +5876,7 @@ Increase the maximum values for max_standby_archive_delay and - max_standby_streaming_delay. + max_standby_streaming_delay @@ -846,8 +5909,7 @@ - Add functions to control streaming replication replay (Simon - Riggs) + Add functions to control streaming replication replay (Simon Riggs) @@ -908,8 +5970,8 @@ - This allows external cluster management software to take control - of whether servers restart or not. + This allows external cluster management software to control + whether the database server restarts or not. @@ -940,15 +6002,15 @@ Add a true serializable isolation - level (Kevin Grittner, Dan Ports) + linkend="xact-serializable">serializable isolation level + (Kevin Grittner, Dan Ports) Previously, asking for serializable isolation guaranteed only that a single MVCC snapshot would be used for the entire transaction, which allowed certain documented anomalies. The old snapshot isolation - behavior is still accessible by requesting the REPEATABLE READ isolation level. @@ -957,7 +6019,7 @@ Allow data-modification commands - (INSERT/UPDATE/DELETE) in + (INSERT/UPDATE/DELETE) in WITH clauses (Marko Tiikkaja, Hitoshi Harada) @@ -985,7 +6047,7 @@ - Some other database system already allowed this behavior, and + The SQL standard allows this behavior, and because of the primary key, the result is unambiguous. @@ -1010,9 +6072,9 @@ - Previously EXPLAIN ANALYZE used a slightly different - snapshot for queries involving rules. The EXPLAIN ANALYZE - behavior was judged to be more logical. + Previously EXPLAIN ANALYZE used slightly different + snapshot timing for queries involving rules. The + EXPLAIN ANALYZE behavior was judged to be more logical. @@ -1031,7 +6093,8 @@ - Previously collation could only be set at database creation. + Previously collation (the sort ordering of text strings) could only be + chosen at database creation. Collation can now be set per column, domain, index, or expression, via the SQL-standard COLLATE clause. @@ -1174,8 +6237,8 @@ - The new option is called NOT VALID, which can - later be modified to VALIDATED and validation + The new option is called NOT VALID. The constraint's + state can later be modified to VALIDATED and validation checks performed. Together these allow you to add a foreign key with minimal impact on read and write operations. @@ -1211,14 +6274,14 @@ Fix possible tuple concurrently updated error - when two backends attempted to add an inheritance + when two backends attempt to add an inheritance child to the same table at the same time (Robert Haas) ALTER TABLE - now takes a stronger lock on the parent table, so that both children do - not try to update it simultaneously. + now takes a stronger lock on the parent table, so that the sessions + cannot try to update it simultaneously. @@ -1260,8 +6323,8 @@ - This is similar to the existing session-level advisory locks, - but the locks are automatically released at transaction end. + These are similar to the existing session-level advisory locks, + but such locks are automatically released at transaction end. @@ -1352,11 +6415,11 @@ Prevent autovacuum from - waiting if it cannot acquire a lock (Robert Haas) + waiting if it cannot acquire a table lock (Robert Haas) - It will try to vacuum later. + It will try to vacuum that table later. @@ -1394,6 +6457,12 @@ This allows GiST indexes to quickly return the N closest values in a query with LIMIT. + For example + point '(101,456)' LIMIT 10; +]]> + + finds the ten places closest to a given target point. @@ -1452,7 +6521,7 @@ Previously all numeric values had four-byte headers; - this saves on disk storage. + this change saves on disk storage. @@ -1520,7 +6589,7 @@ Add support for casting from int4 and int8 - to numeric (Joey Adams) + to money (Joey Adams) @@ -1590,9 +6659,9 @@ Add SQL function format(text), which - behaves like C's printf() (Pavel Stehule, Robert - Haas) + linkend="format">format(text, ...), which + behaves analogously to C's printf() (Pavel Stehule, + Robert Haas) @@ -1742,20 +6811,6 @@ - - - Minimize lock levels for CREATE TRIGGER - and many ALTER - TABLE and CREATE - RULE operations (Simon Riggs) - - - - This improves database availability when altering active databases. - - - @@ -1773,7 +6828,7 @@ Add FOREACH IN - ARRAY to PL/pgSQL + ARRAY to PL/pgSQL (Pavel Stehule) @@ -1884,7 +6939,7 @@ - Add PL/Python explicit subtransactions (Jan Urbanski) + Add explicit subtransactions to PL/Python (Jan Urbanski) @@ -1894,7 +6949,7 @@ - The functions are plpy.quote_ident, plpy.quote_literal, and - Add @@ -1996,7 +7051,7 @@ This is passed to the editor according to the - EDITOR_LINENUMBER_SWITCH psql variable. + PSQL_EDITOR_LINENUMBER_ARG environment variable. @@ -2129,7 +7184,8 @@ - Add a libpq connection option client_encoding + Add a libpq connection option client_encoding which behaves like the PGCLIENTENCODING environment variable (Heikki Linnakangas) @@ -2156,10 +7212,11 @@ - Allow libpq database clients to - check the user name of the server process using requirepeer - when connecting via Unix-domain sockets + connection option (Peter Eisentraut) @@ -2194,8 +7251,16 @@ - Allow ECPG to accept dynamic cursor names even in - WHERE CURRENT OF clauses + Allow ECPG to accept dynamic cursor names even in + WHERE CURRENT OF clauses + (Zoltan Boszormenyi) + + + + + + Make ecpglib write double values with a + precision of 15 digits, not 14 as formerly (Akira Kurosawa) @@ -2344,8 +7409,8 @@ - Add latches to the source code to wait for events (Heikki - Linnakangas) + Add latches to the source code to support waiting for events (Heikki + Linnakangas) @@ -2415,6 +7480,13 @@ + + + Improve support for building with + Clang (Peter Eisentraut) + + + @@ -2455,7 +7527,7 @@ - Modify contrib modules and stored procedure + Modify contrib modules and procedural languages to install via the new extension mechanism (Tom Lane, Dimitri Fontaine) @@ -2476,7 +7548,7 @@ - Add nearest-neighbor support to contrib/pg_trgm and contrib/btree_gist (Teodor Sigaev) @@ -2587,7 +7659,7 @@ Add contrib/sepgsql - to interface permission checks with SE-Linux (KaiGai Kohei) + to interface permission checks with SELinux (KaiGai Kohei) @@ -2613,7 +7685,7 @@ - Add dummy_seclabel + Add dummy_seclabel contrib module (KaiGai Kohei) @@ -2723,8 +7795,8 @@ - Extensive ECPG documentation - improvements (Satoshi Nagayasu) + Extensive ECPG + documentation improvements (Satoshi Nagayasu) @@ -2779,7 +7851,7 @@ - Merge docs for CREATE CONSTRAINT TRIGGER and CREATE CONSTRAINT TRIGGER and CREATE TRIGGER (Alvaro Herrera) @@ -2803,6 +7875,20 @@ + + + Handle non-ASCII characters consistently in HISTORY file + (Peter Eisentraut) + + + + While the HISTORY file is in English, we do have to deal + with non-ASCII letters in contributor names. These are now + transliterated so that they are reasonably legible without assumptions + about character set. + + + diff --git a/doc/src/sgml/release-old.sgml b/doc/src/sgml/release-old.sgml index f03683ec3f..1c42f1ba7d 100644 --- a/doc/src/sgml/release-old.sgml +++ b/doc/src/sgml/release-old.sgml @@ -25,8 +25,8 @@ A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.13, see the release - notes for 7.3.13. + if you are upgrading from a version earlier than 7.3.13, + see . @@ -130,8 +130,8 @@ A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.13, see the release - notes for 7.3.13. + if you are upgrading from a version earlier than 7.3.13, + see . @@ -192,8 +192,8 @@ A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.13, see the release - notes for 7.3.13. + if you are upgrading from a version earlier than 7.3.13, + see . @@ -248,8 +248,8 @@ A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.13, see the release - notes for 7.3.13. + if you are upgrading from a version earlier than 7.3.13, + see . @@ -309,8 +309,8 @@ A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.13, see the release - notes for 7.3.13. + if you are upgrading from a version earlier than 7.3.13, + see . @@ -365,8 +365,8 @@ A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.13, see the release - notes for 7.3.13. + if you are upgrading from a version earlier than 7.3.13, + see . @@ -408,8 +408,8 @@ A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.13, see the release - notes for 7.3.13. + if you are upgrading from a version earlier than 7.3.13, + see . @@ -499,8 +499,8 @@ Fuhr) A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.13, see the release - notes for 7.3.13. + if you are upgrading from a version earlier than 7.3.13, + see . @@ -556,8 +556,8 @@ and isinf during configure (Tom) A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.10, see the release - notes for 7.3.10. + if you are upgrading from a version earlier than 7.3.10, + see . Also, you might need to REINDEX indexes on textual columns after updating, if you are affected by the locale or plperl issues described below. @@ -618,8 +618,8 @@ what's actually returned by the query (Joe) A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.10, see the release - notes for 7.3.10. + if you are upgrading from a version earlier than 7.3.10, + see . @@ -665,8 +665,8 @@ table has been dropped A dump/restore is not required for those running 7.3.X. However, - if you are upgrading from a version earlier than 7.3.10, see the release - notes for 7.3.10. + if you are upgrading from a version earlier than 7.3.10, + see . @@ -3299,7 +3299,7 @@ New BeOS port (David Reid, Cyril Velter) Add proofreader's changes to docs (Addison-Wesley, Bruce) New Alpha spinlock code (Adriaan Joubert, Compaq) UnixWare port overhaul (Peter E) -New Darwin/MacOS X port (Peter Bierman, Bruce Hartzler) +New Darwin/Mac OS X port (Peter Bierman, Bruce Hartzler) New FreeBSD Alpha port (Alfred) Overhaul shared memory segments (Tom) Add IBM S/390 support (Neale Ferguson) diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml index 15f273c740..766d3e30ee 100644 --- a/doc/src/sgml/release.sgml +++ b/doc/src/sgml/release.sgml @@ -29,9 +29,7 @@ non-ASCII characters convert to HTML4 entity (&) escapes wrap long lines -For new features, add links to the documentation sections. Use -not just so that generate_history.pl can remove it, so HISTORY.html -can be created without links to the main documentation. Don't use . +For new features, add links to the documentation sections. --> @@ -66,7 +64,6 @@ can be created without links to the main documentation. Don't use . on - Last, kick the regression test from the unconfined_t domain. - - - - The id command tells us the current working domain. - Confirm your shell is now performing with the unconfined_t - domain as follows. + Fourth, verify your shell is operating in the unconfined_t + domain: $ id -Z @@ -184,15 +220,34 @@ unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 - If pg_regress fails to launch the psql command, - you may need to ensure that the psql command is labeled - as bin_t. If it is not, the restorecon command can - often be used to fix up security labels within the - PostgreSQL installation directory. + Finally, run the regression test script: + + +$ ./test_sepgsql + + + + This script will attempt to verify that you have done all the configuration + steps correctly, and then it will run the regression tests for the + sepgsql module. + + + + After completing the tests, it's recommended you disable + the sepgsql_regression_test_mode parameter: -$ restorecon -R /usr/local/pgsql/ +$ sudo setsebool sepgsql_regression_test_mode off + + + + You might prefer to remove the sepgsql-regtest policy + entirely: + + + +$ sudo semodule -r sepgsql-regtest @@ -207,7 +262,7 @@ $ restorecon -R /usr/local/pgsql/ - This parameter enables SE-PostgreSQL to function + This parameter enables sepgsql to function in permissive mode, regardless of the system setting. The default is off. This parameter can only be set in the postgresql.conf @@ -215,8 +270,8 @@ $ restorecon -R /usr/local/pgsql/ - When this parameter is on, SE-PostgreSQL functions - in permissive mode, even if the platform system is working in enforcing + When this parameter is on, sepgsql functions + in permissive mode, even if SELinux in general is working in enforcing mode. This parameter is primarily useful for testing purposes. @@ -229,9 +284,10 @@ $ restorecon -R /usr/local/pgsql/ - This parameter enables the printing of audit messages independent from - the policy setting. - The default is off (according to the security policy setting). + This parameter enables the printing of audit messages regardless of + the system policy settings. + The default is off, which means that messages will be printed according + to the system settings. @@ -256,19 +312,20 @@ $ restorecon -R /usr/local/pgsql/ Controlled Object Classes The security model of SELinux describes all the access - control rules as a relationship between a subject entity (typically, - it is a client of database) and an object entity, each of which is + control rules as relationships between a subject entity (typically, + a client of the database) and an object entity (such as a database + object), each of which is identified by a security label. If access to an unlabelled object is attempted, the object is treated as if it were assigned the label unlabeled_t. - Currently, sepgsql allows security labels to be + Currently, sepgsql allows security labels to be assigned to schemas, tables, columns, sequences, views, and functions. - When sepgsql is in use, security labels are + When sepgsql is in use, security labels are automatically assigned to supported database objects at creation time. - This label is called as a default security label, being decided according + This label is called a default security label, and is decided according to the system security policy, which takes as input the creator's label and the label assigned to the new object's parent object. @@ -277,9 +334,9 @@ $ restorecon -R /usr/local/pgsql/ A new database object basically inherits the security label of the parent object, except when the security policy has special rules known as type-transition rules, in which case a different label may be applied. - For schemas, the parent object is the current database; for columns, it - is the corresponding table; for tables, sequences, views, and functions, - it is the containing schema. + For schemas, the parent object is the current database; for tables, + sequences, views, and functions, it is the containing schema; for columns, + it is the containing table. @@ -289,41 +346,29 @@ $ restorecon -R /usr/local/pgsql/ For tables, db_table:select, db_table:insert, db_table:update or db_table:delete is - checked for all the referenced target tables depending on the sort of + checked for all the referenced target tables depending on the kind of statement; in addition, db_table:select is also checked for all the tables that contain the columns referenced in the WHERE or RETURNING clause, as a data source - of UPDATE, and so on. - + of UPDATE, and so on. For example, consider: - UPDATE t1 SET x = 2, y = md5sum(y) WHERE z = 100; - In this case, we must have db_table:select in addition to + In this case we must have db_table:select in addition to db_table:update, because t1.a is referenced within the WHERE clause. Column-level permissions will also be checked for each referenced column. - - The client must be allowed to access all referenced tables and - columns, even if they originated from views which were then expanded, - so that we apply consistent access control rules independent of the manner - in which the table contents are referenced. - - For columns, db_column:select is checked on - not only the columns being read using SELECT, but being + not only the columns being read using SELECT, but those being referenced in other DML statements. - - - Of course, it also checks db_column:update or - db_column:insert on the column being modified by + db_column:insert on columns being modified by UPDATE or INSERT. @@ -331,11 +376,11 @@ UPDATE t1 SET x = 2, y = md5sum(y) WHERE z = 100; UPDATE t1 SET x = 2, y = md5sum(y) WHERE z = 100; - In this case, it checks db_column:update on - the t1.x being updated, db_column:{select update} - on the t1.y being updated and referenced, - and db_column:select on the t1.z being only - referenced in the WHERE clause. + In this case, it checks db_column:update on the column + t1.x being updated, db_column:{select update} + on the column t1.y being updated and referenced, and + db_column:select on the column t1.z, since that is + only referenced in the WHERE clause. db_table:{select update} will also be checked at the table level. @@ -348,43 +393,50 @@ UPDATE t1 SET x = 2, y = md5sum(y) WHERE z = 100; - For views, db_view:expand shall be checked, then any other - corresponding permissions shall be also checked on the objects being + For views, db_view:expand will be checked, then any other + required permissions will be checked on the objects being expanded from the view, individually. - For functions, db_procedure:{execute} is defined, but not + For functions, db_procedure:{execute} is defined, but is not checked in this version. + + The client must be allowed to access all referenced tables and + columns, even if they originated from views which were then expanded, + so that we apply consistent access control rules independent of the manner + in which the table contents are referenced. + + The default database privilege system allows database superusers to modify system catalogs using DML commands, and reference or modify toast tables. These operations are prohibited when - sepgsql is enabled. + sepgsql is enabled. DDL Permissions - On command, setattr and - relabelfrom shall be checked on the object being relabeled - with an old security label, then relabelto on the supplied + When is executed, setattr + and relabelfrom will be checked on the object being relabeled + with its old security label, then relabelto with the supplied new security label. In the case where multiple label providers are installed and the user tries - to set a security label, but is not managed by SELinux, + to set a security label, but it is not managed by SELinux, only setattr should be checked here. - This is currently not checked due to implementation restrictions. + This is currently not done due to implementation restrictions. - Trusted Procedure + Trusted Procedures Trusted procedures are similar to security definer functions or set-uid commands. SELinux provides a feature to allow trusted @@ -433,9 +485,9 @@ postgres=# SELECT cid, cname, show_credit(cid) FROM customer; In this case, a regular user cannot reference customer.credit - directly, but a trusted procedure show_credit enables us - to print the credit card number of customers with some of the digits masked - out. + directly, but a trusted procedure show_credit allows him + to print the credit card numbers of customers with some of the digits + masked out. @@ -453,16 +505,6 @@ postgres=# SELECT cid, cname, show_credit(cid) FROM customer; Limitations - - Userspace access vector cache - - - sepgsql does not yet support an access vector cache. - This would likely improve performance. - - - - Data Definition Language (DDL) Permissions @@ -486,7 +528,7 @@ postgres=# SELECT cid, cname, show_credit(cid) FROM customer; PostgreSQL does not support row-level access; therefore, - sepgsql does not support it either. + sepgsql does not support it either. @@ -495,11 +537,11 @@ postgres=# SELECT cid, cname, show_credit(cid) FROM customer; Covert channels - sepgsql never tries to hide existence of - a certain object, even if the user is not allowed to the reference. + sepgsql does not try to hide the existence of + a certain object, even if the user is not allowed to reference it. For example, we can infer the existence of an invisible object as a result of primary key conflicts, foreign key violations, and so on, - even if we cannot reference contents of these objects. The existence + even if we cannot obtain the contents of the object. The existence of a top secret table cannot be hidden; we only hope to conceal its contents. @@ -515,7 +557,7 @@ postgres=# SELECT cid, cname, show_credit(cid) FROM customer; SE-PostgreSQL Introduction - This wiki page provides a brief-overview, security design, architecture, + This wiki page provides a brief overview, security design, architecture, administration and upcoming features. diff --git a/doc/src/sgml/sources.sgml b/doc/src/sgml/sources.sgml index ac8f462de0..4ed83d6189 100644 --- a/doc/src/sgml/sources.sgml +++ b/doc/src/sgml/sources.sgml @@ -214,13 +214,12 @@ ereport(ERROR, - errdetail_log(const char *msg, ...) is the same as - errdetail except that this string goes only to the server - log, never to the client. If both errdetail and - errdetail_log are used then one string goes to the client - and the other to the log. This is useful for error details that are - too security-sensitive or too bulky to include in the report - sent to the client. + errdetail_internal(const char *msg, ...) is the same + as errdetail, except that the message string will not be + translated nor included in the internationalization message dictionary. + This should be used for detail messages that are not worth expending + translation effort on, for instance because they are too technical to be + useful to most users. @@ -231,6 +230,18 @@ ereport(ERROR, For more information see . + + + errdetail_log(const char *msg, ...) is the same as + errdetail except that this string goes only to the server + log, never to the client. If both errdetail (or one of + its equivalents above) and + errdetail_log are used then one string goes to the client + and the other to the log. This is useful for error details that are + too security-sensitive or too bulky to include in the report + sent to the client. + + errhint(const char *msg, ...) supplies an optional diff --git a/doc/src/sgml/spi.sgml b/doc/src/sgml/spi.sgml index 512c96f9bd..7a61802eb2 100644 --- a/doc/src/sgml/spi.sgml +++ b/doc/src/sgml/spi.sgml @@ -316,13 +316,24 @@ int SPI_execute(const char * command, bool rea If count is zero then the command is executed for all rows that it applies to. If count - is greater than 0, then the number of rows for which the command - will be executed is restricted (much like a - LIMIT clause). For example: + is greater than zero, then no more than count rows + will be retrieved; execution stops when the count is reached, much like + adding a LIMIT clause to the query. For example, + +SPI_execute("SELECT * FROM foo", true, 5); + + will retrieve at most 5 rows from the table. Note that such a limit + is only effective when the command actually returns rows. For example, SPI_execute("INSERT INTO foo SELECT * FROM bar", false, 5); - will allow at most 5 rows to be inserted into the table. + inserts all rows from bar, ignoring the + count parameter. However, with + +SPI_execute("INSERT INTO foo SELECT * FROM bar RETURNING *", false, 5); + + at most 5 rows would be inserted, since execution would stop after the + fifth RETURNING result row is retrieved. @@ -331,7 +342,8 @@ SPI_execute("INSERT INTO foo SELECT * FROM bar", false, 5); whole string will be parsed and planned before execution begins. SPI_execute returns the result for the command executed last. The count - limit applies to each command separately, but it is not applied to + limit applies to each command separately (even though only the last + result will actually be returned). The limit is not applied to any hidden commands generated by rules. @@ -392,8 +404,7 @@ typedef struct TupleDesc tupdesc; /* row descriptor */ HeapTuple *vals; /* rows */ } SPITupleTable; - - vals is an array of pointers to rows. (The number +vals is an array of pointers to rows. (The number of valid entries is given by SPI_processed.) tupdesc is a row descriptor which you can pass to SPI functions dealing with rows. tuptabcxt, @@ -425,9 +436,7 @@ typedef struct bool read_only - - true for read-only execution - + true for read-only execution @@ -435,7 +444,8 @@ typedef struct long count - maximum number of rows to process or return + maximum number of rows to return, + or 0 for no limit @@ -611,15 +621,12 @@ typedef struct Notes - The functions SPI_execute, - SPI_exec, - SPI_execute_plan, and - SPI_execp change both + All SPI query-execution functions set both SPI_processed and SPI_tuptable (just the pointer, not the contents of the structure). Save these two global variables into local procedure variables if you need to access the result table of - SPI_execute or a related function + SPI_execute or another query-execution function across later calls. @@ -674,7 +681,8 @@ int SPI_exec(const char * command, long count< long count - maximum number of rows to process or return + maximum number of rows to return, + or 0 for no limit @@ -803,9 +811,7 @@ int SPI_execute_with_args(const char *command, bool read_only - - true for read-only execution - + true for read-only execution @@ -813,7 +819,8 @@ int SPI_execute_with_args(const char *command, long count - maximum number of rows to process or return + maximum number of rows to return, + or 0 for no limit @@ -1231,7 +1238,7 @@ Oid SPI_getargtypeid(SPIPlanPtr plan, int argI SPI_getargtypeid returns the OID representing the type - id for the argIndex'th argument of a plan prepared by + for the argIndex'th argument of a plan prepared by SPI_prepare. First argument is at index zero. @@ -1263,7 +1270,7 @@ Oid SPI_getargtypeid(SPIPlanPtr plan, int argI Return Value - The type id of the argument at the given index. + The type OID of the argument at the given index. If the plan is NULL or invalid, or argIndex is less than 0 or not less than the number of arguments declared for the @@ -1421,9 +1428,7 @@ int SPI_execute_plan(SPIPlanPtr plan, Datum * bool read_only - - true for read-only execution - + true for read-only execution @@ -1431,7 +1436,8 @@ int SPI_execute_plan(SPIPlanPtr plan, Datum * long count - maximum number of rows to process or return + maximum number of rows to return, + or 0 for no limit @@ -1540,9 +1546,7 @@ int SPI_execute_plan_with_paramlist(SPIPlanPtr plan, bool read_only - - true for read-only execution - + true for read-only execution @@ -1550,7 +1554,8 @@ int SPI_execute_plan_with_paramlist(SPIPlanPtr plan, long count - maximum number of rows to process or return + maximum number of rows to return, + or 0 for no limit @@ -1650,7 +1655,8 @@ int SPI_execp(SPIPlanPtr plan, Datum * values< long count - maximum number of rows to process or return + maximum number of rows to return, + or 0 for no limit @@ -1777,9 +1783,7 @@ Portal SPI_cursor_open(const char * name, SPIPlanPtr bool read_only - - true for read-only execution - + true for read-only execution @@ -1915,9 +1919,7 @@ Portal SPI_cursor_open_with_args(const char *name, bool read_only - - true for read-only execution - + true for read-only execution @@ -2022,9 +2024,7 @@ Portal SPI_cursor_open_with_paramlist(const char *name, bool read_only - - true for read-only execution - + true for read-only execution diff --git a/doc/src/sgml/standalone-install.sgml b/doc/src/sgml/standalone-install.sgml index c94b397a9d..1942f9dc4c 100644 --- a/doc/src/sgml/standalone-install.sgml +++ b/doc/src/sgml/standalone-install.sgml @@ -2,21 +2,7 @@ postmaster.pid - A lock file recording the current postmaster process id (PID), + A lock file recording the current postmaster process ID (PID), cluster data directory path, postmaster start timestamp, port number, diff --git a/doc/src/sgml/stylesheet-man.xsl b/doc/src/sgml/stylesheet-man.xsl index 8c614ca754..822b082522 100644 --- a/doc/src/sgml/stylesheet-man.xsl +++ b/doc/src/sgml/stylesheet-man.xsl @@ -8,19 +8,6 @@ - - - - 0 diff --git a/doc/src/sgml/stylesheet.dsl b/doc/src/sgml/stylesheet.dsl index 637758ff42..232fa58e51 100644 --- a/doc/src/sgml/stylesheet.dsl +++ b/doc/src/sgml/stylesheet.dsl @@ -298,8 +298,6 @@ (nav-banner elemnode))))) (r2? (or (not (node-list-empty? prev)) (not (node-list-empty? next)) - (not (node-list-empty? prevsib)) - (not (node-list-empty? nextsib)) (nav-context? elemnode))) (r2-sosofo (make element gi: "TR" (make element gi: "TD" @@ -323,15 +321,9 @@ (list "WIDTH" "10%") (list "ALIGN" "left") (list "VALIGN" "top")) - (if (node-list-empty? prevsib) - (make entity-ref name: "nbsp") - (make element gi: "A" - attributes: (list - (list "TITLE" (element-title-string prevsib)) - (list "HREF" - (href-to - prevsib))) - (gentext-nav-prev-sibling prevsib)))) + (if (nav-up? elemnode) + (nav-up elemnode) + (nav-home-link elemnode))) (make element gi: "TD" attributes: (list (list "WIDTH" "60%") @@ -340,21 +332,7 @@ (nav-context elemnode)) (make element gi: "TD" attributes: (list - (list "WIDTH" "10%") - (list "ALIGN" "right") - (list "VALIGN" "top")) - (if (node-list-empty? nextsib) - (make entity-ref name: "nbsp") - (make element gi: "A" - attributes: (list - (list "TITLE" (element-title-string nextsib)) - (list "HREF" - (href-to - nextsib))) - (gentext-nav-next-sibling nextsib)))) - (make element gi: "TD" - attributes: (list - (list "WIDTH" "10%") + (list "WIDTH" "20%") (list "ALIGN" "right") (list "VALIGN" "top")) (if (node-list-empty? next) diff --git a/doc/src/sgml/stylesheet.xsl b/doc/src/sgml/stylesheet.xsl index 19cb5b0f64..2911af0f59 100644 --- a/doc/src/sgml/stylesheet.xsl +++ b/doc/src/sgml/stylesheet.xsl @@ -9,7 +9,7 @@ - + diff --git a/doc/src/sgml/syntax.sgml b/doc/src/sgml/syntax.sgml index f6c4a4defa..863de8852b 100644 --- a/doc/src/sgml/syntax.sgml +++ b/doc/src/sgml/syntax.sgml @@ -1709,10 +1709,10 @@ SELECT string_agg(a ORDER BY a, ',') FROM table; -- incorrect The syntax of a window function call is one of the following: -function_name (expression , expression ... ) OVER ( window_definition ) function_name (expression , expression ... ) OVER window_name -function_name ( * ) OVER ( window_definition ) +function_name (expression , expression ... ) OVER ( window_definition ) function_name ( * ) OVER window_name +function_name ( * ) OVER ( window_definition ) where window_definition has the syntax @@ -1749,15 +1749,14 @@ UNBOUNDED FOLLOWING names or numbers. window_name is a reference to a named window specification defined in the query's WINDOW clause. - Named window specifications are usually referenced with just - OVER window_name, but it is - also possible to write a window name inside the parentheses and then - optionally supply an ordering clause and/or frame clause (the referenced - window must lack these clauses, if they are supplied here). - This latter syntax follows the same rules as modifying an existing - window name within the WINDOW clause; see the - reference - page for details. + Alternatively, a full window_definition can + be given within parentheses, using the same syntax as for defining a + named window in the WINDOW clause; see the + reference page for details. It's worth + pointing out that OVER wname is not exactly equivalent to + OVER (wname); the latter implies copying and modifying the + window definition, and will be rejected if the referenced window + specification includes a frame clause. @@ -2465,6 +2464,13 @@ SELECT concat_lower_or_upper('Hello', 'World', uppercase := true); having numerous parameters that have default values, named or mixed notation can save a great deal of writing and reduce chances for error. + + + + Named and mixed call notations can currently be used only with regular + functions, not with aggregate functions or window functions. + + diff --git a/doc/src/sgml/textsearch.sgml b/doc/src/sgml/textsearch.sgml index dba5bd6603..a92ed0ea4e 100644 --- a/doc/src/sgml/textsearch.sgml +++ b/doc/src/sgml/textsearch.sgml @@ -867,7 +867,7 @@ ts_rank( weights fl - Standard ranking function. + Ranks vectors based on the frequency of their matching lexemes. diff --git a/doc/src/sgml/trigger.sgml b/doc/src/sgml/trigger.sgml index 7a8a496d4c..a2ee28320d 100644 --- a/doc/src/sgml/trigger.sgml +++ b/doc/src/sgml/trigger.sgml @@ -582,7 +582,7 @@ typedef struct Trigger char *tgname; Oid tgfoid; int16 tgtype; - bool tgenabled; + char tgenabled; bool tgisinternal; Oid tgconstrrelid; Oid tgconstrindid; diff --git a/doc/src/sgml/typeconv.sgml b/doc/src/sgml/typeconv.sgml index f233e9d712..cca45eb569 100644 --- a/doc/src/sgml/typeconv.sgml +++ b/doc/src/sgml/typeconv.sgml @@ -758,9 +758,11 @@ cast is a cast from that type to itself. If one is found in the pg_cast catalog, apply it to the expression before storing into the destination column. The implementation function for such a cast always takes an extra parameter of type integer, which receives -the destination column's declared length (actually, its -atttypmod value; the interpretation of -atttypmod varies for different data types). The cast function +the destination column's atttypmod value (typically its +declared length, although the interpretation of atttypmod +varies for different data types), and it may take a third boolean +parameter that says whether the cast is explicit or implicit. The cast +function is responsible for applying any length-dependent semantics such as size checking or truncation. @@ -772,17 +774,17 @@ checking or truncation. <type>character</type> Storage Type Conversion -For a target column declared as character(20) the following statement -ensures that the stored value is sized correctly: +For a target column declared as character(20) the following +statement shows that the stored value is sized correctly: CREATE TABLE vv (v character(20)); INSERT INTO vv SELECT 'abc' || 'def'; -SELECT v, length(v) FROM vv; +SELECT v, octet_length(v) FROM vv; - v | length -----------------------+-------- - abcdef | 20 + v | octet_length +----------------------+-------------- + abcdef | 20 (1 row) @@ -796,7 +798,7 @@ char, the internal name of the character data type) to match the column type. (Since the conversion from text to bpchar is binary-coercible, this conversion does not insert any real function call.) Finally, the sizing function -bpchar(bpchar, integer) is found in the system catalog +bpchar(bpchar, integer, boolean) is found in the system catalog and applied to the operator's result and the stored column length. This type-specific function performs the required length check and addition of padding spaces. diff --git a/doc/src/sgml/vacuumlo.sgml b/doc/src/sgml/vacuumlo.sgml index 471a6ca32b..97753de6c0 100644 --- a/doc/src/sgml/vacuumlo.sgml +++ b/doc/src/sgml/vacuumlo.sgml @@ -49,6 +49,19 @@ vacuumlo [options] database [database2 ... databaseN] + + limit + + + Remove no more than limit large objects per + transaction (default 1000). Since the server acquires a lock per LO + removed, removing too many LOs in one transaction risks exceeding + . Set the limit to + zero if you want all removals done in a single transaction. + + + + username @@ -110,18 +123,19 @@ vacuumlo [options] database [database2 ... databaseN] Method - First, it builds a temporary table which contains all of the OIDs of the - large objects in that database. + First, vacuumlo builds a temporary table which contains all + of the OIDs of the large objects in the selected database. It then scans through all columns in the database that are of type oid or lo, and removes matching entries from the - temporary table. + temporary table. (Note: only types with these names are considered; + in particular, domains over them are not considered.) - The remaining entries in the temp table identify orphaned LOs. + The remaining entries in the temporary table identify orphaned LOs. These are removed. diff --git a/doc/src/sgml/wal.sgml b/doc/src/sgml/wal.sgml index 4d111903a7..8e05f92713 100644 --- a/doc/src/sgml/wal.sgml +++ b/doc/src/sgml/wal.sgml @@ -87,7 +87,9 @@ On FreeBSD, IDE drives can be queried using atacontrol and write caching turned off using hw.ata.wc=0 in /boot/loader.conf; - SCSI drives use sdparm. + SCSI drives can be queried using camcontrol identify, + and the write cache both queried and changed using + sdparm when available. @@ -376,7 +378,7 @@ committing at about the same time. Setting commit_delay can only help when there are many concurrently committing transactions, and it is difficult to tune it to a value that actually helps rather - than hurt throughput. + than hurts throughput. @@ -538,9 +540,7 @@ from having to do writes. On such systems one should increase the number of WAL buffers by modifying the configuration parameter . The default number of WAL - buffers is 8. Increasing this value will - correspondingly increase shared memory usage. When + linkend="guc-wal-buffers">. When is set and the system is very busy, setting this value higher will help smooth response times during the period immediately following each checkpoint. diff --git a/doc/src/sgml/xml2.sgml b/doc/src/sgml/xml2.sgml index 47bac31f0c..adc923bacc 100644 --- a/doc/src/sgml/xml2.sgml +++ b/doc/src/sgml/xml2.sgml @@ -21,11 +21,11 @@ That functionality covers XML syntax checking and XPath queries, which is what this module does, and more, but the API is not at all compatible. It is planned that this module will be - removed in PostgreSQL 8.4 in favor of the newer standard API, so + removed in a future version of PostgreSQL in favor of the newer standard API, so you are encouraged to try converting your applications. If you find that some of the functionality of this module is not available in an adequate form with the newer API, please explain - your issue to pgsql-hackers@postgresql.org so that the deficiency + your issue to pgsql-hackers@postgresql.org so that the deficiency can be addressed. @@ -436,14 +436,6 @@ xslt_process(text document, text stylesheet, text paramlist) returns text contain commas! - - Also note that if either the document or stylesheet values do not - begin with a < then they will be treated as URLs and libxslt will - fetch them. It follows that you can use xslt_process as a - means to fetch the contents of URLs — you should be aware of the - security implications of this. - - There is also a two-parameter version of xslt_process which does not pass any parameters to the transformation. diff --git a/src/Makefile b/src/Makefile index 84f96c4969..4d7928395a 100644 --- a/src/Makefile +++ b/src/Makefile @@ -17,6 +17,7 @@ SUBDIRS = \ timezone \ gtm \ interfaces \ + pgxc \ backend \ backend/utils/mb/conversion_procs \ backend/snowball \ @@ -25,8 +26,7 @@ SUBDIRS = \ bin \ pl \ makefiles \ - test/regress \ - pgxc/bin/pgxc_clean + test/regress # There are too many interdependencies between the subdirectories, so # don't attempt parallel make here. diff --git a/src/Makefile.global.in b/src/Makefile.global.in index 712ac58696..fe8ba7852f 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -19,6 +19,8 @@ # Meta configuration standard_targets = all install installdirs uninstall distprep clean distclean maintainer-clean coverage check installcheck maintainer-check +# these targets should recurse even into subdirectories not being built: +standard_always_targets = distprep clean distclean maintainer-clean .PHONY: $(standard_targets) install-strip html man installcheck-parallel @@ -265,7 +267,7 @@ X = @EXEEXT@ ifneq (@PERL@,) # quoted to protect pathname with spaces - PERL = "@PERL@" + PERL = '@PERL@' else PERL = $(missing) perl endif @@ -431,6 +433,15 @@ submake-libpgport: PL_TESTDB = pl_regression CONTRIB_TESTDB = contrib_regression +ifneq ($(MODULE_big),) + CONTRIB_TESTDB_MODULE = contrib_regression_$(MODULE_big) +else + ifneq ($(MODULES),) + CONTRIB_TESTDB_MODULE = contrib_regression_$(MODULES) + else + CONTRIB_TESTDB_MODULE = contrib_regression + endif +endif ifdef NO_LOCALE NOLOCALE += --no-locale @@ -439,7 +450,7 @@ endif pg_regress_locale_flags = $(if $(ENCODING),--encoding=$(ENCODING)) $(NOLOCALE) pg_regress_check = $(top_builddir)/src/test/regress/pg_regress --inputdir=$(srcdir) --temp-install=./tmp_check --top-builddir=$(top_builddir) $(pg_regress_locale_flags) -pg_regress_installcheck = $(top_builddir)/src/test/regress/pg_regress --inputdir=$(srcdir) --psqldir=$(PSQLDIR) $(pg_regress_locale_flags) +pg_regress_installcheck = $(top_builddir)/src/test/regress/pg_regress --inputdir=$(srcdir) --psqldir='$(PSQLDIR)' $(pg_regress_locale_flags) pg_regress_clean_files = results/ regression.diffs regression.out tmp_check/ log/ @@ -605,6 +616,16 @@ endef # $3: target to run in subdir (defaults to current element of $1) recurse = $(foreach target,$(if $1,$1,$(standard_targets)),$(foreach subdir,$(if $2,$2,$(SUBDIRS)),$(eval $(call _create_recursive_target,$(target),$(subdir),$(if $3,$3,$(target)))))) +# If a makefile's list of SUBDIRS varies depending on configuration, then +# any subdirectories excluded from SUBDIRS should instead be added to +# ALWAYS_SUBDIRS, and then it must call recurse_always as well as recurse. +# This ensures that distprep, distclean, etc will apply to all subdirectories. +# In the normal case all arguments will be defaulted. +# $1: targets to make recursive (defaults to standard_always_targets) +# $2: list of subdirs (defaults to ALWAYS_SUBDIRS variable) +# $3: target to run in subdir (defaults to current element of $1) +recurse_always = $(foreach target,$(if $1,$1,$(standard_always_targets)),$(foreach subdir,$(if $2,$2,$(ALWAYS_SUBDIRS)),$(eval $(call _create_recursive_target,$(target),$(subdir),$(if $3,$3,$(target)))))) + ########################################################################## # diff --git a/src/Makefile.shlib b/src/Makefile.shlib index a5cf6c6c16..8c07bb458d 100644 --- a/src/Makefile.shlib +++ b/src/Makefile.shlib @@ -130,7 +130,7 @@ ifeq ($(PORTNAME), darwin) ifneq ($(SO_MAJOR_VERSION), 0) version_link = -compatibility_version $(SO_MAJOR_VERSION) -current_version $(SO_MAJOR_VERSION).$(SO_MINOR_VERSION) endif - LINK.shared = $(COMPILER) -dynamiclib -install_name $(libdir)/lib$(NAME).$(SO_MAJOR_VERSION)$(DLSUFFIX) $(version_link) $(exported_symbols_list) -multiply_defined suppress + LINK.shared = $(COMPILER) -dynamiclib -install_name '$(libdir)/lib$(NAME).$(SO_MAJOR_VERSION)$(DLSUFFIX)' $(version_link) $(exported_symbols_list) -multiply_defined suppress -undefined suppress -flat_namespace shlib = lib$(NAME).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)$(DLSUFFIX) shlib_major = lib$(NAME).$(SO_MAJOR_VERSION)$(DLSUFFIX) else @@ -309,6 +309,7 @@ ifeq ($(PORTNAME), unixware) endif ifeq ($(PORTNAME), cygwin) + LINK.shared = $(CC) -shared ifdef SO_MAJOR_VERSION shlib = cyg$(NAME)$(DLSUFFIX) endif @@ -399,6 +400,16 @@ else # PORTNAME == cygwin || PORTNAME == win32 # If SHLIB_EXPORTS is set, the rules below will build a .def file from # that. Else we build a temporary one here. +ifeq ($(PORTNAME), cygwin) +$(shlib): $(OBJS) | $(SHLIB_PREREQS) + $(CC) $(CFLAGS) -shared -o $@ $(OBJS) $(LDFLAGS) $(LDFLAGS_SL) $(SHLIB_LINK) $(LIBS) $(LDAP_LIBS_BE) + +$(stlib): $(OBJS) | $(SHLIB_PREREQS) + $(LINK.static) $@ $^ + $(RANLIB) $@ + + +else ifeq (,$(SHLIB_EXPORTS)) DLL_DEFFILE = lib$(NAME)dll.def exports_file = $(DLL_DEFFILE) @@ -415,6 +426,7 @@ $(shlib): $(OBJS) $(DLL_DEFFILE) | $(SHLIB_PREREQS) $(stlib): $(shlib) $(DLL_DEFFILE) | $(SHLIB_PREREQS) $(DLLTOOL) --dllname $(shlib) $(DLLTOOL_LIBFLAGS) --def $(DLL_DEFFILE) --output-lib $@ +endif # PORTNAME == cgywin endif # PORTNAME == cygwin || PORTNAME == win32 endif # enable_shared diff --git a/src/backend/Makefile b/src/backend/Makefile index ecca4cf36d..f165e92f1c 100644 --- a/src/backend/Makefile +++ b/src/backend/Makefile @@ -182,27 +182,28 @@ utils/probes.h: utils/probes.d # For headers generated during regular builds, we prefer a relative symlink. $(top_builddir)/src/include/parser/gram.h: parser/gram.h - prereqdir=`cd $(dir $<) >/dev/null && pwd` && \ - cd $(dir $@) && rm -f $(notdir $@) && \ + prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \ + cd '$(dir $@)' && rm -f $(notdir $@) && \ $(LN_S) "$$prereqdir/$(notdir $<)" . $(top_builddir)/src/include/catalog/schemapg.h: catalog/schemapg.h - prereqdir=`cd $(dir $<) >/dev/null && pwd` && \ - cd $(dir $@) && rm -f $(notdir $@) && \ + prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \ + cd '$(dir $@)' && rm -f $(notdir $@) && \ $(LN_S) "$$prereqdir/$(notdir $<)" . $(top_builddir)/src/include/utils/errcodes.h: utils/errcodes.h - cd $(dir $@) && rm -f $(notdir $@) && \ - $(LN_S) ../../../$(subdir)/utils/errcodes.h . + prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \ + cd '$(dir $@)' && rm -f $(notdir $@) && \ + $(LN_S) "$$prereqdir/$(notdir $<)" . $(top_builddir)/src/include/utils/fmgroids.h: utils/fmgroids.h - prereqdir=`cd $(dir $<) >/dev/null && pwd` && \ - cd $(dir $@) && rm -f $(notdir $@) && \ + prereqdir=`cd '$(dir $<)' >/dev/null && pwd` && \ + cd '$(dir $@)' && rm -f $(notdir $@) && \ $(LN_S) "$$prereqdir/$(notdir $<)" . $(top_builddir)/src/include/utils/probes.h: utils/probes.h - cd $(dir $@) && rm -f $(notdir $@) && \ - $(LN_S) ../../../$(subdir)/utils/probes.h . + cd '$(dir $@)' && rm -f $(notdir $@) && \ + $(LN_S) "../../../$(subdir)/utils/probes.h" . utils/probes.o: utils/probes.d $(SUBDIROBJS) @@ -251,6 +252,7 @@ else endif ifeq ($(MAKE_EXPORTS), true) $(INSTALL_DATA) $(POSTGRES_IMP) '$(DESTDIR)$(pkglibdir)/$(POSTGRES_IMP)' + $(INSTALL_PROGRAM) $(MKLDEXPORT) '$(DESTDIR)$(pgxsdir)/$(MKLDEXPORT_DIR)/mkldexport.sh' endif .PHONY: install-bin @@ -269,6 +271,7 @@ endif endif ifeq ($(MAKE_EXPORTS), true) $(MKDIR_P) '$(DESTDIR)$(pkglibdir)' + $(MKDIR_P) '$(DESTDIR)$(pgxsdir)/$(MKLDEXPORT_DIR)' endif @@ -278,6 +281,7 @@ uninstall: rm -f '$(DESTDIR)$(bindir)/postgres$(X)' '$(DESTDIR)$(bindir)/postmaster' ifeq ($(MAKE_EXPORTS), true) rm -f '$(DESTDIR)$(pkglibdir)/$(POSTGRES_IMP)' + rm -f '$(DESTDIR)$(pgxsdir)/$(MKLDEXPORT_DIR)/mkldexport.sh' endif ifeq ($(PORTNAME), cygwin) ifeq ($(MAKE_DLL), true) diff --git a/src/backend/access/common/printtup.c b/src/backend/access/common/printtup.c index 8b5f4a862f..6cf4102712 100644 --- a/src/backend/access/common/printtup.c +++ b/src/backend/access/common/printtup.c @@ -312,7 +312,7 @@ printtup(TupleTableSlot *slot, DestReceiver *self) /* * If we are having DataRow-based tuple we do not have to encode attribute * values, just send over the DataRow message as we received it from the - * data node + * Datanode */ if (slot->tts_dataRow) { diff --git a/src/backend/access/common/tupdesc.c b/src/backend/access/common/tupdesc.c index 16979c4ea7..014fc3babf 100644 --- a/src/backend/access/common/tupdesc.c +++ b/src/backend/access/common/tupdesc.c @@ -430,6 +430,12 @@ equalTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2) * This function initializes a single attribute structure in * a previously allocated tuple descriptor. * + * If attributeName is NULL, the attname field is set to an empty string + * (this is for cases where we don't know or need a name for the field). + * Also, some callers use this function to change the datatype-related fields + * in an existing tupdesc; they pass attributeName = NameStr(att->attname) + * to indicate that the attname field shouldn't be modified. + * * Note that attcollation is set to the default for the specified datatype. * If a nondefault collation is needed, insert it afterwards using * TupleDescInitEntryCollation. @@ -463,12 +469,12 @@ TupleDescInitEntry(TupleDesc desc, /* * Note: attributeName can be NULL, because the planner doesn't always * fill in valid resname values in targetlists, particularly for resjunk - * attributes. + * attributes. Also, do nothing if caller wants to re-use the old attname. */ - if (attributeName != NULL) - namestrcpy(&(att->attname), attributeName); - else + if (attributeName == NULL) MemSet(NameStr(att->attname), 0, NAMEDATALEN); + else if (attributeName != NameStr(att->attname)) + namestrcpy(&(att->attname), attributeName); att->attstattarget = -1; att->attcacheoff = -1; diff --git a/src/backend/access/gin/README b/src/backend/access/gin/README index 67159d8529..a2634a0927 100644 --- a/src/backend/access/gin/README +++ b/src/backend/access/gin/README @@ -210,6 +210,56 @@ fit on one pending-list page must have those pages to itself, even if this results in wasting much of the space on the preceding page and the last page for the tuple.) +Concurrency +----------- + +The entry tree and each posting tree is a B-tree, with right-links connecting +sibling pages at the same level. This is the same structure that is used in +the regular B-tree indexam (invented by Lehman & Yao), but we don't support +scanning a GIN trees backwards, so we don't need left-links. + +To avoid deadlocks, B-tree pages must always be locked in the same order: +left to right, and bottom to top. When searching, the tree is traversed from +top to bottom, so the lock on the parent page must be released before +descending to the next level. Concurrent page splits move the keyspace to +right, so after following a downlink, the page actually containing the key +we're looking for might be somewhere to the right of the page we landed on. +In that case, we follow the right-links until we find the page we're looking +for. + +To delete a page, the page's left sibling, the target page, and its parent, +are locked in that order, and the page is marked as deleted. However, a +concurrent search might already have read a pointer to the page, and might be +just about to follow it. A page can be reached via the right-link of its left +sibling, or via its downlink in the parent. + +To prevent a backend from reaching a deleted page via a right-link, when +following a right-link the lock on the previous page is not released until +the lock on next page has been acquired. + +The downlink is more tricky. A search descending the tree must release the +lock on the parent page before locking the child, or it could deadlock with +a concurrent split of the child page; a page split locks the parent, while +already holding a lock on the child page. However, posting trees are only +fully searched from left to right, starting from the leftmost leaf. (The +tree-structure is only needed by insertions, to quickly find the correct +insert location). So as long as we don't delete the leftmost page on each +level, a search can never follow a downlink to page that's about to be +deleted. + +The previous paragraph's reasoning only applies to searches, and only to +posting trees. To protect from inserters following a downlink to a deleted +page, vacuum simply locks out all concurrent insertions to the posting tree, +by holding a super-exclusive lock on the posting tree root. Inserters hold a +pin on the root page, but searches do not, so while new searches cannot begin +while root page is locked, any already-in-progress scans can continue +concurrently with vacuum. In the entry tree, we never delete pages. + +(This is quite different from the mechanism the btree indexam uses to make +page-deletions safe; it stamps the deleted pages with an XID and keeps the +deleted pages around with the right-link intact until all concurrent scans +have finished.) + Limitations ----------- diff --git a/src/backend/access/gin/ginbtree.c b/src/backend/access/gin/ginbtree.c index 739fa8afff..d65911c183 100644 --- a/src/backend/access/gin/ginbtree.c +++ b/src/backend/access/gin/ginbtree.c @@ -113,10 +113,8 @@ ginFindLeafPage(GinBtree btree, GinBtreeStack *stack) /* rightmost page */ break; + stack->buffer = ginStepRight(stack->buffer, btree->index, access); stack->blkno = rightlink; - LockBuffer(stack->buffer, GIN_UNLOCK); - stack->buffer = ReleaseAndReadBuffer(stack->buffer, btree->index, stack->blkno); - LockBuffer(stack->buffer, access); page = BufferGetPage(stack->buffer); } @@ -152,6 +150,41 @@ ginFindLeafPage(GinBtree btree, GinBtreeStack *stack) return NULL; } +/* + * Step right from current page. + * + * The next page is locked first, before releasing the current page. This is + * crucial to protect from concurrent page deletion (see comment in + * ginDeletePage). + */ +Buffer +ginStepRight(Buffer buffer, Relation index, int lockmode) +{ + Buffer nextbuffer; + Page page = BufferGetPage(buffer); + bool isLeaf = GinPageIsLeaf(page); + bool isData = GinPageIsData(page); + BlockNumber blkno = GinPageGetOpaque(page)->rightlink; + + nextbuffer = ReadBuffer(index, blkno); + LockBuffer(nextbuffer, lockmode); + UnlockReleaseBuffer(buffer); + + /* Sanity check that the page we stepped to is of similar kind. */ + page = BufferGetPage(nextbuffer); + if (isLeaf != GinPageIsLeaf(page) || isData != GinPageIsData(page)) + elog(ERROR, "right sibling of GIN page is of different type"); + + /* + * Given the proper lock sequence above, we should never land on a + * deleted page. + */ + if (GinPageIsDeleted(page)) + elog(ERROR, "right sibling of GIN page was deleted"); + + return nextbuffer; +} + void freeGinBtreeStack(GinBtreeStack *stack) { @@ -240,12 +273,12 @@ ginFindParents(GinBtree btree, GinBtreeStack *stack, while ((offset = btree->findChildPtr(btree, page, stack->blkno, InvalidOffsetNumber)) == InvalidOffsetNumber) { blkno = GinPageGetOpaque(page)->rightlink; - LockBuffer(buffer, GIN_UNLOCK); - ReleaseBuffer(buffer); if (blkno == InvalidBlockNumber) + { + UnlockReleaseBuffer(buffer); break; - buffer = ReadBuffer(btree->index, blkno); - LockBuffer(buffer, GIN_EXCLUSIVE); + } + buffer = ginStepRight(buffer, btree->index, GIN_EXCLUSIVE); page = BufferGetPage(buffer); } @@ -448,23 +481,21 @@ ginInsertValue(GinBtree btree, GinBtreeStack *stack, GinStatsData *buildStats) { BlockNumber rightlink = GinPageGetOpaque(page)->rightlink; - LockBuffer(parent->buffer, GIN_UNLOCK); - if (rightlink == InvalidBlockNumber) { /* * rightmost page, but we don't find parent, we should use * plain search... */ + LockBuffer(parent->buffer, GIN_UNLOCK); ginFindParents(btree, stack, rootBlkno); parent = stack->parent; page = BufferGetPage(parent->buffer); break; } + parent->buffer = ginStepRight(parent->buffer, btree->index, GIN_EXCLUSIVE); parent->blkno = rightlink; - parent->buffer = ReleaseAndReadBuffer(parent->buffer, btree->index, parent->blkno); - LockBuffer(parent->buffer, GIN_EXCLUSIVE); page = BufferGetPage(parent->buffer); } diff --git a/src/backend/access/gin/gindatapage.c b/src/backend/access/gin/gindatapage.c index 41dbe9fd11..54966e411e 100644 --- a/src/backend/access/gin/gindatapage.c +++ b/src/backend/access/gin/gindatapage.c @@ -382,7 +382,6 @@ dataPlaceToPage(GinBtree btree, Buffer buf, OffsetNumber off, XLogRecData **prda { Page page = BufferGetPage(buf); int sizeofitem = GinSizeOfDataPageItem(page); - int cnt = 0; /* these must be static so they can be returned to caller */ static XLogRecData rdata[3]; @@ -402,32 +401,25 @@ dataPlaceToPage(GinBtree btree, Buffer buf, OffsetNumber off, XLogRecData **prda data.isLeaf = GinPageIsLeaf(page) ? TRUE : FALSE; /* - * Prevent full page write if child's split occurs. That is needed to - * remove incomplete splits while replaying WAL - * - * data.updateBlkno contains new block number (of newly created right - * page) for recently splited page. + * For incomplete-split tracking, we need updateBlkno information and the + * inserted item even when we make a full page image of the page, so put + * the buffer reference in a separate XLogRecData entry. */ - if (data.updateBlkno == InvalidBlockNumber) - { - rdata[0].buffer = buf; - rdata[0].buffer_std = FALSE; - rdata[0].data = NULL; - rdata[0].len = 0; - rdata[0].next = &rdata[1]; - cnt++; - } + rdata[0].buffer = buf; + rdata[0].buffer_std = FALSE; + rdata[0].data = NULL; + rdata[0].len = 0; + rdata[0].next = &rdata[1]; - rdata[cnt].buffer = InvalidBuffer; - rdata[cnt].data = (char *) &data; - rdata[cnt].len = sizeof(ginxlogInsert); - rdata[cnt].next = &rdata[cnt + 1]; - cnt++; + rdata[1].buffer = InvalidBuffer; + rdata[1].data = (char *) &data; + rdata[1].len = sizeof(ginxlogInsert); + rdata[1].next = &rdata[2]; - rdata[cnt].buffer = InvalidBuffer; - rdata[cnt].data = (GinPageIsLeaf(page)) ? ((char *) (btree->items + btree->curitem)) : ((char *) &(btree->pitem)); - rdata[cnt].len = sizeofitem; - rdata[cnt].next = NULL; + rdata[2].buffer = InvalidBuffer; + rdata[2].data = (GinPageIsLeaf(page)) ? ((char *) (btree->items + btree->curitem)) : ((char *) &(btree->pitem)); + rdata[2].len = sizeofitem; + rdata[2].next = NULL; if (GinPageIsLeaf(page)) { @@ -443,7 +435,7 @@ dataPlaceToPage(GinBtree btree, Buffer buf, OffsetNumber off, XLogRecData **prda btree->curitem++; } data.nitem = btree->curitem - savedPos; - rdata[cnt].len = sizeofitem * data.nitem; + rdata[2].len = sizeofitem * data.nitem; } else { diff --git a/src/backend/access/gin/ginentrypage.c b/src/backend/access/gin/ginentrypage.c index fa134f9fc3..97cd755e3e 100644 --- a/src/backend/access/gin/ginentrypage.c +++ b/src/backend/access/gin/ginentrypage.c @@ -487,7 +487,6 @@ entryPlaceToPage(GinBtree btree, Buffer buf, OffsetNumber off, XLogRecData **prd { Page page = BufferGetPage(buf); OffsetNumber placed; - int cnt = 0; /* these must be static so they can be returned to caller */ static XLogRecData rdata[3]; @@ -510,32 +509,25 @@ entryPlaceToPage(GinBtree btree, Buffer buf, OffsetNumber off, XLogRecData **prd data.isLeaf = GinPageIsLeaf(page) ? TRUE : FALSE; /* - * Prevent full page write if child's split occurs. That is needed to - * remove incomplete splits while replaying WAL - * - * data.updateBlkno contains new block number (of newly created right - * page) for recently splited page. + * For incomplete-split tracking, we need updateBlkno information and the + * inserted item even when we make a full page image of the page, so put + * the buffer reference in a separate XLogRecData entry. */ - if (data.updateBlkno == InvalidBlockNumber) - { - rdata[0].buffer = buf; - rdata[0].buffer_std = TRUE; - rdata[0].data = NULL; - rdata[0].len = 0; - rdata[0].next = &rdata[1]; - cnt++; - } - - rdata[cnt].buffer = InvalidBuffer; - rdata[cnt].data = (char *) &data; - rdata[cnt].len = sizeof(ginxlogInsert); - rdata[cnt].next = &rdata[cnt + 1]; - cnt++; + rdata[0].buffer = buf; + rdata[0].buffer_std = TRUE; + rdata[0].data = NULL; + rdata[0].len = 0; + rdata[0].next = &rdata[1]; - rdata[cnt].buffer = InvalidBuffer; - rdata[cnt].data = (char *) btree->entry; - rdata[cnt].len = IndexTupleSize(btree->entry); - rdata[cnt].next = NULL; + rdata[1].buffer = InvalidBuffer; + rdata[1].data = (char *) &data; + rdata[1].len = sizeof(ginxlogInsert); + rdata[1].next = &rdata[2]; + + rdata[2].buffer = InvalidBuffer; + rdata[2].data = (char *) btree->entry; + rdata[2].len = IndexTupleSize(btree->entry); + rdata[2].next = NULL; btree->entry = NULL; } diff --git a/src/backend/access/gin/ginfast.c b/src/backend/access/gin/ginfast.c index 82419e37ac..704f471036 100644 --- a/src/backend/access/gin/ginfast.c +++ b/src/backend/access/gin/ginfast.c @@ -291,7 +291,7 @@ ginHeapTupleFastInsert(GinState *ginstate, GinTupleCollector *collector) if (metadata->head == InvalidBlockNumber) { /* - * Main list is empty, so just copy sublist into main list + * Main list is empty, so just insert sublist as main list */ START_CRIT_SECTION(); @@ -314,6 +314,14 @@ ginHeapTupleFastInsert(GinState *ginstate, GinTupleCollector *collector) LockBuffer(buffer, GIN_EXCLUSIVE); page = BufferGetPage(buffer); + rdata[0].next = rdata + 1; + + rdata[1].buffer = buffer; + rdata[1].buffer_std = true; + rdata[1].data = NULL; + rdata[1].len = 0; + rdata[1].next = NULL; + Assert(GinPageGetOpaque(page)->rightlink == InvalidBlockNumber); START_CRIT_SECTION(); diff --git a/src/backend/access/gin/ginget.c b/src/backend/access/gin/ginget.c index 866785837f..4fe87eb46a 100644 --- a/src/backend/access/gin/ginget.c +++ b/src/backend/access/gin/ginget.c @@ -107,16 +107,11 @@ moveRightIfItNeeded(GinBtreeData *btree, GinBtreeStack *stack) /* * We scanned the whole page, so we should take right page */ - stack->blkno = GinPageGetOpaque(page)->rightlink; - if (GinPageRightMost(page)) return false; /* no more pages */ - LockBuffer(stack->buffer, GIN_UNLOCK); - stack->buffer = ReleaseAndReadBuffer(stack->buffer, - btree->index, - stack->blkno); - LockBuffer(stack->buffer, GIN_SHARE); + stack->buffer = ginStepRight(stack->buffer, btree->index, GIN_SHARE); + stack->blkno = BufferGetBlockNumber(stack->buffer); stack->off = FirstOffsetNumber; } @@ -134,7 +129,6 @@ scanPostingTree(Relation index, GinScanEntry scanEntry, GinPostingTreeScan *gdi; Buffer buffer; Page page; - BlockNumber blkno; /* Descend to the leftmost leaf page */ gdi = ginPrepareScanPostingTree(index, rootPostingTree, TRUE); @@ -164,10 +158,7 @@ scanPostingTree(Relation index, GinScanEntry scanEntry, if (GinPageRightMost(page)) break; /* no more pages */ - blkno = GinPageGetOpaque(page)->rightlink; - LockBuffer(buffer, GIN_UNLOCK); - buffer = ReleaseAndReadBuffer(buffer, index, blkno); - LockBuffer(buffer, GIN_SHARE); + buffer = ginStepRight(buffer, index, GIN_SHARE); } UnlockReleaseBuffer(buffer); @@ -546,7 +537,6 @@ static void entryGetNextItem(GinState *ginstate, GinScanEntry entry) { Page page; - BlockNumber blkno; for (;;) { @@ -564,23 +554,18 @@ entryGetNextItem(GinState *ginstate, GinScanEntry entry) * It's needed to go by right link. During that we should refind * first ItemPointer greater that stored */ - - blkno = GinPageGetOpaque(page)->rightlink; - - LockBuffer(entry->buffer, GIN_UNLOCK); - if (blkno == InvalidBlockNumber) + if (GinPageRightMost(page)) { - ReleaseBuffer(entry->buffer); + UnlockReleaseBuffer(entry->buffer); ItemPointerSetInvalid(&entry->curItem); entry->buffer = InvalidBuffer; entry->isFinished = TRUE; return; } - entry->buffer = ReleaseAndReadBuffer(entry->buffer, - ginstate->index, - blkno); - LockBuffer(entry->buffer, GIN_SHARE); + entry->buffer = ginStepRight(entry->buffer, + ginstate->index, + GIN_SHARE); page = BufferGetPage(entry->buffer); entry->offset = InvalidOffsetNumber; diff --git a/src/backend/access/gin/ginvacuum.c b/src/backend/access/gin/ginvacuum.c index 79c54f16b8..3308bb2e62 100644 --- a/src/backend/access/gin/ginvacuum.c +++ b/src/backend/access/gin/ginvacuum.c @@ -240,6 +240,9 @@ ginVacuumPostingTreeLeaves(GinVacuumState *gvs, BlockNumber blkno, bool isRoot, return hasVoidPage; } +/* + * Delete a posting tree page. + */ static void ginDeletePage(GinVacuumState *gvs, BlockNumber deleteBlkno, BlockNumber leftBlkno, BlockNumber parentBlkno, OffsetNumber myoff, bool isParentRoot) @@ -249,39 +252,35 @@ ginDeletePage(GinVacuumState *gvs, BlockNumber deleteBlkno, BlockNumber leftBlkn Buffer pBuffer; Page page, parentPage; + BlockNumber rightlink; + /* + * Lock the pages in the same order as an insertion would, to avoid + * deadlocks: left, then right, then parent. + */ + lBuffer = ReadBufferExtended(gvs->index, MAIN_FORKNUM, leftBlkno, + RBM_NORMAL, gvs->strategy); dBuffer = ReadBufferExtended(gvs->index, MAIN_FORKNUM, deleteBlkno, RBM_NORMAL, gvs->strategy); - - if (leftBlkno != InvalidBlockNumber) - lBuffer = ReadBufferExtended(gvs->index, MAIN_FORKNUM, leftBlkno, - RBM_NORMAL, gvs->strategy); - else - lBuffer = InvalidBuffer; - pBuffer = ReadBufferExtended(gvs->index, MAIN_FORKNUM, parentBlkno, RBM_NORMAL, gvs->strategy); + LockBuffer(lBuffer, GIN_EXCLUSIVE); LockBuffer(dBuffer, GIN_EXCLUSIVE); if (!isParentRoot) /* parent is already locked by * LockBufferForCleanup() */ LockBuffer(pBuffer, GIN_EXCLUSIVE); - if (leftBlkno != InvalidBlockNumber) - LockBuffer(lBuffer, GIN_EXCLUSIVE); START_CRIT_SECTION(); - if (leftBlkno != InvalidBlockNumber) - { - BlockNumber rightlink; - - page = BufferGetPage(dBuffer); - rightlink = GinPageGetOpaque(page)->rightlink; + /* Unlink the page by changing left sibling's rightlink */ + page = BufferGetPage(dBuffer); + rightlink = GinPageGetOpaque(page)->rightlink; - page = BufferGetPage(lBuffer); - GinPageGetOpaque(page)->rightlink = rightlink; - } + page = BufferGetPage(lBuffer); + GinPageGetOpaque(page)->rightlink = rightlink; + /* Delete downlink from parent */ parentPage = BufferGetPage(pBuffer); #ifdef USE_ASSERT_CHECKING do @@ -366,10 +365,7 @@ ginDeletePage(GinVacuumState *gvs, BlockNumber deleteBlkno, BlockNumber leftBlkn if (!isParentRoot) LockBuffer(pBuffer, GIN_UNLOCK); ReleaseBuffer(pBuffer); - - if (leftBlkno != InvalidBlockNumber) - UnlockReleaseBuffer(lBuffer); - + UnlockReleaseBuffer(lBuffer); UnlockReleaseBuffer(dBuffer); END_CRIT_SECTION(); @@ -437,15 +433,12 @@ ginScanToDelete(GinVacuumState *gvs, BlockNumber blkno, bool isRoot, DataPageDel if (GinPageGetOpaque(page)->maxoff < FirstOffsetNumber) { - if (!(me->leftBlkno == InvalidBlockNumber && GinPageRightMost(page))) + /* we never delete the left- or rightmost branch */ + if (me->leftBlkno != InvalidBlockNumber && !GinPageRightMost(page)) { - /* we never delete right most branch */ Assert(!isRoot); - if (GinPageGetOpaque(page)->maxoff < FirstOffsetNumber) - { - ginDeletePage(gvs, blkno, me->leftBlkno, me->parent->blkno, myoff, me->parent->isRoot); - meDelete = TRUE; - } + ginDeletePage(gvs, blkno, me->leftBlkno, me->parent->blkno, myoff, me->parent->isRoot); + meDelete = TRUE; } } diff --git a/src/backend/access/gin/ginxlog.c b/src/backend/access/gin/ginxlog.c index c954bcb12f..bfd3224144 100644 --- a/src/backend/access/gin/ginxlog.c +++ b/src/backend/access/gin/ginxlog.c @@ -59,9 +59,12 @@ forgetIncompleteSplit(RelFileNode node, BlockNumber leftBlkno, BlockNumber updat { ginIncompleteSplit *split = (ginIncompleteSplit *) lfirst(l); - if (RelFileNodeEquals(node, split->node) && leftBlkno == split->leftBlkno && updateBlkno == split->rightBlkno) + if (RelFileNodeEquals(node, split->node) && + leftBlkno == split->leftBlkno && + updateBlkno == split->rightBlkno) { incomplete_splits = list_delete_ptr(incomplete_splits, split); + pfree(split); break; } } @@ -75,6 +78,9 @@ ginRedoCreateIndex(XLogRecPtr lsn, XLogRecord *record) MetaBuffer; Page page; + /* Backup blocks are not used in create_index records */ + Assert(!(record->xl_info & XLR_BKP_BLOCK_MASK)); + MetaBuffer = XLogReadBuffer(*node, GIN_METAPAGE_BLKNO, true); Assert(BufferIsValid(MetaBuffer)); page = (Page) BufferGetPage(MetaBuffer); @@ -107,6 +113,9 @@ ginRedoCreatePTree(XLogRecPtr lsn, XLogRecord *record) Buffer buffer; Page page; + /* Backup blocks are not used in create_ptree records */ + Assert(!(record->xl_info & XLR_BKP_BLOCK_MASK)); + buffer = XLogReadBuffer(data->node, data->blkno, true); Assert(BufferIsValid(buffer)); page = (Page) BufferGetPage(buffer); @@ -157,9 +166,12 @@ ginRedoInsert(XLogRecPtr lsn, XLogRecord *record) } } - /* nothing else to do if page was backed up */ - if (record->xl_info & XLR_BKP_BLOCK_1) + /* If we have a full-page image, restore it and we're done */ + if (record->xl_info & XLR_BKP_BLOCK(0)) + { + (void) RestoreBackupBlock(lsn, record, 0, false, false); return; + } buffer = XLogReadBuffer(data->node, data->blkno, false); if (!BufferIsValid(buffer)) @@ -254,6 +266,9 @@ ginRedoSplit(XLogRecPtr lsn, XLogRecord *record) if (data->isData) flags |= GIN_DATA; + /* Backup blocks are not used in split records */ + Assert(!(record->xl_info & XLR_BKP_BLOCK_MASK)); + lbuffer = XLogReadBuffer(data->node, data->lblkno, true); Assert(BufferIsValid(lbuffer)); lpage = (Page) BufferGetPage(lbuffer); @@ -367,9 +382,12 @@ ginRedoVacuumPage(XLogRecPtr lsn, XLogRecord *record) Buffer buffer; Page page; - /* nothing to do if page was backed up (and no info to do it with) */ - if (record->xl_info & XLR_BKP_BLOCK_1) + /* If we have a full-page image, restore it and we're done */ + if (record->xl_info & XLR_BKP_BLOCK(0)) + { + (void) RestoreBackupBlock(lsn, record, 0, false, false); return; + } buffer = XLogReadBuffer(data->node, data->blkno, false); if (!BufferIsValid(buffer)) @@ -418,33 +436,38 @@ static void ginRedoDeletePage(XLogRecPtr lsn, XLogRecord *record) { ginxlogDeletePage *data = (ginxlogDeletePage *) XLogRecGetData(record); - Buffer buffer; + Buffer dbuffer; + Buffer pbuffer; + Buffer lbuffer; Page page; - if (!(record->xl_info & XLR_BKP_BLOCK_1)) + if (record->xl_info & XLR_BKP_BLOCK(0)) + dbuffer = RestoreBackupBlock(lsn, record, 0, false, true); + else { - buffer = XLogReadBuffer(data->node, data->blkno, false); - if (BufferIsValid(buffer)) + dbuffer = XLogReadBuffer(data->node, data->blkno, false); + if (BufferIsValid(dbuffer)) { - page = BufferGetPage(buffer); + page = BufferGetPage(dbuffer); if (!XLByteLE(lsn, PageGetLSN(page))) { Assert(GinPageIsData(page)); GinPageGetOpaque(page)->flags = GIN_DELETED; PageSetLSN(page, lsn); PageSetTLI(page, ThisTimeLineID); - MarkBufferDirty(buffer); + MarkBufferDirty(dbuffer); } - UnlockReleaseBuffer(buffer); } } - if (!(record->xl_info & XLR_BKP_BLOCK_2)) + if (record->xl_info & XLR_BKP_BLOCK(1)) + pbuffer = RestoreBackupBlock(lsn, record, 1, false, true); + else { - buffer = XLogReadBuffer(data->node, data->parentBlkno, false); - if (BufferIsValid(buffer)) + pbuffer = XLogReadBuffer(data->node, data->parentBlkno, false); + if (BufferIsValid(pbuffer)) { - page = BufferGetPage(buffer); + page = BufferGetPage(pbuffer); if (!XLByteLE(lsn, PageGetLSN(page))) { Assert(GinPageIsData(page)); @@ -452,29 +475,35 @@ ginRedoDeletePage(XLogRecPtr lsn, XLogRecord *record) GinPageDeletePostingItem(page, data->parentOffset); PageSetLSN(page, lsn); PageSetTLI(page, ThisTimeLineID); - MarkBufferDirty(buffer); + MarkBufferDirty(pbuffer); } - UnlockReleaseBuffer(buffer); } } - if (!(record->xl_info & XLR_BKP_BLOCK_3) && data->leftBlkno != InvalidBlockNumber) + if (record->xl_info & XLR_BKP_BLOCK(2)) + (void) RestoreBackupBlock(lsn, record, 2, false, false); + else if (data->leftBlkno != InvalidBlockNumber) { - buffer = XLogReadBuffer(data->node, data->leftBlkno, false); - if (BufferIsValid(buffer)) + lbuffer = XLogReadBuffer(data->node, data->leftBlkno, false); + if (BufferIsValid(lbuffer)) { - page = BufferGetPage(buffer); + page = BufferGetPage(lbuffer); if (!XLByteLE(lsn, PageGetLSN(page))) { Assert(GinPageIsData(page)); GinPageGetOpaque(page)->rightlink = data->rightLink; PageSetLSN(page, lsn); PageSetTLI(page, ThisTimeLineID); - MarkBufferDirty(buffer); + MarkBufferDirty(lbuffer); } - UnlockReleaseBuffer(buffer); + UnlockReleaseBuffer(lbuffer); } } + + if (BufferIsValid(pbuffer)) + UnlockReleaseBuffer(pbuffer); + if (BufferIsValid(dbuffer)) + UnlockReleaseBuffer(dbuffer); } static void @@ -485,25 +514,29 @@ ginRedoUpdateMetapage(XLogRecPtr lsn, XLogRecord *record) Page metapage; Buffer buffer; + /* + * Restore the metapage. This is essentially the same as a full-page image, + * so restore the metapage unconditionally without looking at the LSN, to + * avoid torn page hazards. + */ metabuffer = XLogReadBuffer(data->node, GIN_METAPAGE_BLKNO, false); if (!BufferIsValid(metabuffer)) - elog(PANIC, "GIN metapage disappeared"); + return; /* assume index was deleted, nothing to do */ metapage = BufferGetPage(metabuffer); - if (!XLByteLE(lsn, PageGetLSN(metapage))) - { - memcpy(GinPageGetMeta(metapage), &data->metadata, sizeof(GinMetaPageData)); - PageSetLSN(metapage, lsn); - PageSetTLI(metapage, ThisTimeLineID); - MarkBufferDirty(metabuffer); - } + memcpy(GinPageGetMeta(metapage), &data->metadata, sizeof(GinMetaPageData)); + PageSetLSN(metapage, lsn); + PageSetTLI(metapage, ThisTimeLineID); + MarkBufferDirty(metabuffer); if (data->ntuples > 0) { /* * insert into tail page */ - if (!(record->xl_info & XLR_BKP_BLOCK_1)) + if (record->xl_info & XLR_BKP_BLOCK(0)) + (void) RestoreBackupBlock(lsn, record, 0, false, false); + else { buffer = XLogReadBuffer(data->node, data->metadata.tail, false); if (BufferIsValid(buffer)) @@ -529,6 +562,8 @@ ginRedoUpdateMetapage(XLogRecPtr lsn, XLogRecord *record) elog(ERROR, "failed to add item to index page"); tuples = (IndexTuple) (((char *) tuples) + tupsize); + + off++; } /* @@ -549,20 +584,25 @@ ginRedoUpdateMetapage(XLogRecPtr lsn, XLogRecord *record) /* * New tail */ - buffer = XLogReadBuffer(data->node, data->prevTail, false); - if (BufferIsValid(buffer)) + if (record->xl_info & XLR_BKP_BLOCK(0)) + (void) RestoreBackupBlock(lsn, record, 0, false, false); + else { - Page page = BufferGetPage(buffer); - - if (!XLByteLE(lsn, PageGetLSN(page))) + buffer = XLogReadBuffer(data->node, data->prevTail, false); + if (BufferIsValid(buffer)) { - GinPageGetOpaque(page)->rightlink = data->newRightlink; + Page page = BufferGetPage(buffer); - PageSetLSN(page, lsn); - PageSetTLI(page, ThisTimeLineID); - MarkBufferDirty(buffer); + if (!XLByteLE(lsn, PageGetLSN(page))) + { + GinPageGetOpaque(page)->rightlink = data->newRightlink; + + PageSetLSN(page, lsn); + PageSetTLI(page, ThisTimeLineID); + MarkBufferDirty(buffer); + } + UnlockReleaseBuffer(buffer); } - UnlockReleaseBuffer(buffer); } } @@ -581,8 +621,12 @@ ginRedoInsertListPage(XLogRecPtr lsn, XLogRecord *record) tupsize; IndexTuple tuples = (IndexTuple) (XLogRecGetData(record) + sizeof(ginxlogInsertListPage)); - if (record->xl_info & XLR_BKP_BLOCK_1) + /* If we have a full-page image, restore it and we're done */ + if (record->xl_info & XLR_BKP_BLOCK(0)) + { + (void) RestoreBackupBlock(lsn, record, 0, false, false); return; + } buffer = XLogReadBuffer(data->node, data->blkno, true); Assert(BufferIsValid(buffer)); @@ -628,19 +672,29 @@ ginRedoDeleteListPages(XLogRecPtr lsn, XLogRecord *record) Page metapage; int i; + /* Backup blocks are not used in delete_listpage records */ + Assert(!(record->xl_info & XLR_BKP_BLOCK_MASK)); + metabuffer = XLogReadBuffer(data->node, GIN_METAPAGE_BLKNO, false); if (!BufferIsValid(metabuffer)) - elog(PANIC, "GIN metapage disappeared"); + return; /* assume index was deleted, nothing to do */ metapage = BufferGetPage(metabuffer); - if (!XLByteLE(lsn, PageGetLSN(metapage))) - { - memcpy(GinPageGetMeta(metapage), &data->metadata, sizeof(GinMetaPageData)); - PageSetLSN(metapage, lsn); - PageSetTLI(metapage, ThisTimeLineID); - MarkBufferDirty(metabuffer); - } + memcpy(GinPageGetMeta(metapage), &data->metadata, sizeof(GinMetaPageData)); + PageSetLSN(metapage, lsn); + PageSetTLI(metapage, ThisTimeLineID); + MarkBufferDirty(metabuffer); + /* + * In normal operation, shiftList() takes exclusive lock on all the + * pages-to-be-deleted simultaneously. During replay, however, it should + * be all right to lock them one at a time. This is dependent on the fact + * that we are deleting pages from the head of the list, and that readers + * share-lock the next page before releasing the one they are on. So we + * cannot get past a reader that is on, or due to visit, any page we are + * going to delete. New incoming readers will block behind our metapage + * lock and then see a fully updated page list. + */ for (i = 0; i < data->ndeleted; i++) { Buffer buffer = XLogReadBuffer(data->node, data->toDelete[i], false); @@ -673,8 +727,6 @@ gin_redo(XLogRecPtr lsn, XLogRecord *record) * GIN indexes do not require any conflict processing. */ - RestoreBkpBlocks(lsn, record, false); - topCtx = MemoryContextSwitchTo(opCtx); switch (info) { @@ -743,9 +795,7 @@ gin_desc(StringInfo buf, uint8 xl_info, char *rec) (((ginxlogInsert *) rec)->isData) ? 'T' : 'F', (((ginxlogInsert *) rec)->isLeaf) ? 'T' : 'F', (((ginxlogInsert *) rec)->isDelete) ? 'T' : 'F', - ((ginxlogInsert *) rec)->updateBlkno - ); - + ((ginxlogInsert *) rec)->updateBlkno); break; case XLOG_GIN_SPLIT: appendStringInfo(buf, "Page split, "); @@ -762,7 +812,7 @@ gin_desc(StringInfo buf, uint8 xl_info, char *rec) break; case XLOG_GIN_UPDATE_META_PAGE: appendStringInfo(buf, "Update metapage, "); - desc_node(buf, ((ginxlogUpdateMeta *) rec)->node, ((ginxlogUpdateMeta *) rec)->metadata.tail); + desc_node(buf, ((ginxlogUpdateMeta *) rec)->node, GIN_METAPAGE_BLKNO); break; case XLOG_GIN_INSERT_LISTPAGE: appendStringInfo(buf, "Insert new list page, "); @@ -770,7 +820,7 @@ gin_desc(StringInfo buf, uint8 xl_info, char *rec) break; case XLOG_GIN_DELETE_LISTPAGE: appendStringInfo(buf, "Delete list pages (%d), ", ((ginxlogDeleteListPages *) rec)->ndeleted); - desc_node(buf, ((ginxlogDeleteListPages *) rec)->node, ((ginxlogDeleteListPages *) rec)->metadata.head); + desc_node(buf, ((ginxlogDeleteListPages *) rec)->node, GIN_METAPAGE_BLKNO); break; default: elog(PANIC, "gin_desc: unknown op code %u", info); diff --git a/src/backend/access/gist/gist.c b/src/backend/access/gist/gist.c index 8227bfdb88..7dbc5dd08e 100644 --- a/src/backend/access/gist/gist.c +++ b/src/backend/access/gist/gist.c @@ -51,12 +51,15 @@ static void gistdoinsert(Relation r, Size freespace, GISTSTATE *GISTstate); static void gistfixsplit(GISTInsertState *state, GISTSTATE *giststate); +static bool gistinserttuple(GISTInsertState *state, GISTInsertStack *stack, + GISTSTATE *giststate, IndexTuple tuple, OffsetNumber oldoffnum); static bool gistinserttuples(GISTInsertState *state, GISTInsertStack *stack, GISTSTATE *giststate, IndexTuple *tuples, int ntup, OffsetNumber oldoffnum, - Buffer leftchild); + Buffer leftchild, Buffer rightchild, + bool unlockbuf, bool unlockleftchild); static void gistfinishsplit(GISTInsertState *state, GISTInsertStack *stack, - GISTSTATE *giststate, List *splitinfo); + GISTSTATE *giststate, List *splitinfo, bool releasebuf); #define ROTATEDIST(d) do { \ @@ -113,6 +116,16 @@ gistbuild(PG_FUNCTION_ARGS) elog(ERROR, "index \"%s\" already contains data", RelationGetRelationName(index)); + /* + * We can't yet handle unlogged GiST indexes, because we depend on LSNs. + * This is duplicative of an error in gistbuildempty, but we want to check + * here so as to throw error before doing all the index-build work. + */ + if (heap->rd_rel->relpersistence == RELPERSISTENCE_UNLOGGED) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("unlogged GiST indexes are not supported"))); + /* no locking is needed */ initGISTstate(&buildstate.giststate, index); @@ -714,7 +727,7 @@ gistdoinsert(Relation r, IndexTuple itup, Size freespace, GISTSTATE *giststate) ereport(ERROR, (errmsg("index \"%s\" contains an inner tuple marked as invalid", RelationGetRelationName(r)), - errdetail("This is caused by an incomplete page split at crash recovery before upgrading to 9.1."), + errdetail("This is caused by an incomplete page split at crash recovery before upgrading to PostgreSQL 9.1."), errhint("Please REINDEX it."))); /* @@ -745,15 +758,15 @@ gistdoinsert(Relation r, IndexTuple itup, Size freespace, GISTSTATE *giststate) /* * Update the tuple. * - * We still hold the lock after gistinserttuples(), but it + * We still hold the lock after gistinserttuple(), but it * might have to split the page to make the updated tuple fit. * In that case the updated tuple might migrate to the other * half of the split, so we have to go back to the parent and * descend back to the half that's a better fit for the new * tuple. */ - if (gistinserttuples(&state, stack, giststate, &newtup, 1, - stack->childoffnum, InvalidBuffer)) + if (gistinserttuple(&state, stack, giststate, newtup, + stack->childoffnum)) { /* * If this was a root split, the root page continues to be @@ -838,8 +851,8 @@ gistdoinsert(Relation r, IndexTuple itup, Size freespace, GISTSTATE *giststate) /* now state.stack->(page, buffer and blkno) points to leaf page */ - gistinserttuples(&state, stack, giststate, &itup, 1, - InvalidOffsetNumber, InvalidBuffer); + gistinserttuple(&state, stack, giststate, itup, + InvalidOffsetNumber); LockBuffer(stack->buffer, GIST_UNLOCK); /* Release any pins we might still hold before exiting */ @@ -883,9 +896,12 @@ gistFindPath(Relation r, BlockNumber child) if (GistPageIsLeaf(page)) { - /* we can safety go away, follows only leaf pages */ + /* + * Because we scan the index top-down, all the rest of the pages + * in the queue must be leaf pages as well. + */ UnlockReleaseBuffer(buffer); - return NULL; + break; } top->lsn = PageGetLSN(page); @@ -900,14 +916,25 @@ gistFindPath(Relation r, BlockNumber child) if (top->parent && XLByteLT(top->parent->lsn, GistPageGetOpaque(page)->nsn) && GistPageGetOpaque(page)->rightlink != InvalidBlockNumber /* sanity check */ ) { - /* page splited while we thinking of... */ + /* + * Page was split while we looked elsewhere. We didn't see the + * downlink to the right page when we scanned the parent, so + * add it to the queue now. + * + * Put the right page ahead of the queue, so that we visit it + * next. That's important, because if this is the lowest internal + * level, just above leaves, we might already have queued up some + * leaf pages, and we assume that there can't be any non-leaf + * pages behind leaf pages. + */ ptr = (GISTInsertStack *) palloc0(sizeof(GISTInsertStack)); ptr->blkno = GistPageGetOpaque(page)->rightlink; ptr->childoffnum = InvalidOffsetNumber; - ptr->parent = top; - ptr->next = NULL; - tail->next = ptr; - tail = ptr; + ptr->parent = top->parent; + ptr->next = top->next; + top->next = ptr; + if (tail == top) + tail = ptr; } maxoff = PageGetMaxOffsetNumber(page); @@ -963,7 +990,9 @@ gistFindPath(Relation r, BlockNumber child) top = top->next; } - return NULL; + elog(ERROR, "failed to re-find parent of a page in index \"%s\", block %u", + RelationGetRelationName(r), child); + return NULL; /* keep compiler quiet */ } /* @@ -1034,7 +1063,6 @@ gistFindCorrectParent(Relation r, GISTInsertStack *child) /* ok, find new path */ ptr = parent = gistFindPath(r, child->blkno); - Assert(ptr != NULL); /* read all buffers as expected by caller */ /* note we don't lock them or gistcheckpage them here! */ @@ -1165,49 +1193,104 @@ gistfixsplit(GISTInsertState *state, GISTSTATE *giststate) } /* Insert the downlinks */ - gistfinishsplit(state, stack, giststate, splitinfo); + gistfinishsplit(state, stack, giststate, splitinfo, false); } /* - * Insert tuples to stack->buffer. If 'oldoffnum' is valid, the new tuples - * replace an old tuple at oldoffnum. The caller must hold an exclusive lock - * on the page. + * Insert or replace a tuple in stack->buffer. If 'oldoffnum' is valid, the + * tuple at 'oldoffnum' is replaced, otherwise the tuple is inserted as new. + * 'stack' represents the path from the root to the page being updated. * - * If leftchild is valid, we're inserting/updating the downlink for the - * page to the right of leftchild. We clear the F_FOLLOW_RIGHT flag and - * update NSN on leftchild, atomically with the insertion of the downlink. + * The caller must hold an exclusive lock on stack->buffer. The lock is still + * held on return, but the page might not contain the inserted tuple if the + * page was split. The function returns true if the page was split, false + * otherwise. + */ +static bool +gistinserttuple(GISTInsertState *state, GISTInsertStack *stack, + GISTSTATE *giststate, IndexTuple tuple, OffsetNumber oldoffnum) +{ + return gistinserttuples(state, stack, giststate, &tuple, 1, oldoffnum, + InvalidBuffer, InvalidBuffer, false, false); +} + +/* ---------------- + * An extended workhorse version of gistinserttuple(). This version allows + * inserting multiple tuples, or replacing a single tuple with multiple tuples. + * This is used to recursively update the downlinks in the parent when a page + * is split. * - * Returns 'true' if the page had to be split. On return, we will continue - * to hold an exclusive lock on state->stack->buffer, but if we had to split - * the page, it might not contain the tuple we just inserted/updated. + * If leftchild and rightchild are valid, we're inserting/replacing the + * downlink for rightchild, and leftchild is its left sibling. We clear the + * F_FOLLOW_RIGHT flag and update NSN on leftchild, atomically with the + * insertion of the downlink. + * + * To avoid holding locks for longer than necessary, when recursing up the + * tree to update the parents, the locking is a bit peculiar here. On entry, + * the caller must hold an exclusive lock on stack->buffer, as well as + * leftchild and rightchild if given. On return: + * + * - Lock on stack->buffer is released, if 'unlockbuf' is true. The page is + * always kept pinned, however. + * - Lock on 'leftchild' is released, if 'unlockleftchild' is true. The page + * is kept pinned. + * - Lock and pin on 'rightchild' are always released. + * + * Returns 'true' if the page had to be split. Note that if the page had + * be split, the inserted/updated might've been inserted to a right sibling + * of stack->buffer instead of stack->buffer itself. */ static bool gistinserttuples(GISTInsertState *state, GISTInsertStack *stack, GISTSTATE *giststate, IndexTuple *tuples, int ntup, OffsetNumber oldoffnum, - Buffer leftchild) + Buffer leftchild, Buffer rightchild, + bool unlockbuf, bool unlockleftchild) { List *splitinfo; bool is_split; + /* Insert the tuple(s) to the page, splitting the page if necessary */ is_split = gistplacetopage(state, giststate, stack->buffer, tuples, ntup, oldoffnum, - leftchild, - &splitinfo); + leftchild, &splitinfo); + + /* + * Before recursing up in case the page was split, release locks on the + * child pages. We don't need to keep them locked when updating the + * parent. + */ + if (BufferIsValid(rightchild)) + UnlockReleaseBuffer(rightchild); + if (BufferIsValid(leftchild) && unlockleftchild) + LockBuffer(leftchild, GIST_UNLOCK); + + /* + * If we had to split, insert/update the downlinks in the parent. If the + * caller requested us to release the lock on stack->buffer, tell + * gistfinishsplit() to do that as soon as it's safe to do so. If we + * didn't have to split, release it ourselves. + */ if (splitinfo) - gistfinishsplit(state, stack, giststate, splitinfo); + gistfinishsplit(state, stack, giststate, splitinfo, unlockbuf); + else if (unlockbuf) + LockBuffer(stack->buffer, GIST_UNLOCK); return is_split; } /* - * Finish an incomplete split by inserting/updating the downlinks in - * parent page. 'splitinfo' contains all the child pages, exclusively-locked, - * involved in the split, from left-to-right. + * Finish an incomplete split by inserting/updating the downlinks in parent + * page. 'splitinfo' contains all the child pages involved in the split, + * from left-to-right. + * + * On entry, the caller must hold a lock on stack->buffer and all the child + * pages in 'splitinfo'. If 'unlockbuf' is true, the lock on stack->buffer is + * released on return. The child pages are always unlocked and unpinned. */ static void gistfinishsplit(GISTInsertState *state, GISTInsertStack *stack, - GISTSTATE *giststate, List *splitinfo) + GISTSTATE *giststate, List *splitinfo, bool unlockbuf) { ListCell *lc; List *reversed; @@ -1236,6 +1319,10 @@ gistfinishsplit(GISTInsertState *state, GISTInsertStack *stack, LockBuffer(stack->parent->buffer, GIST_EXCLUSIVE); gistFindCorrectParent(state->r, stack); + /* + * insert downlinks for the siblings from right to left, until there are + * only two siblings left. + */ while (list_length(reversed) > 2) { right = (GISTPageSplitInfo *) linitial(reversed); @@ -1244,7 +1331,7 @@ gistfinishsplit(GISTInsertState *state, GISTInsertStack *stack, if (gistinserttuples(state, stack->parent, giststate, &right->downlink, 1, InvalidOffsetNumber, - left->buf)) + left->buf, right->buf, false, false)) { /* * If the parent page was split, need to relocate the original @@ -1252,7 +1339,7 @@ gistfinishsplit(GISTInsertState *state, GISTInsertStack *stack, */ gistFindCorrectParent(state->r, stack); } - UnlockReleaseBuffer(right->buf); + /* gistinserttuples() released the lock on right->buf. */ reversed = list_delete_first(reversed); } @@ -1269,9 +1356,10 @@ gistfinishsplit(GISTInsertState *state, GISTInsertStack *stack, gistinserttuples(state, stack->parent, giststate, tuples, 2, stack->parent->childoffnum, - left->buf); - LockBuffer(stack->parent->buffer, GIST_UNLOCK); - UnlockReleaseBuffer(right->buf); + left->buf, right->buf, + true, /* Unlock parent */ + unlockbuf /* Unlock stack->buffer if caller wants that */ + ); Assert(left->buf == stack->buffer); } @@ -1290,18 +1378,12 @@ gistSplit(Relation r, IndexTuple *lvectup, *rvectup; GistSplitVector v; - GistEntryVector *entryvec; int i; SplitedPageLayout *res = NULL; - /* generate the item array */ - entryvec = palloc(GEVHDRSZ + (len + 1) * sizeof(GISTENTRY)); - entryvec->n = len + 1; - 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, entryvec, 0); + gistSplitByKey(r, page, itup, len, giststate, &v, 0); /* form left and right vector */ lvectup = (IndexTuple *) palloc(sizeof(IndexTuple) * (len + 1)); diff --git a/src/backend/access/gist/gistproc.c b/src/backend/access/gist/gistproc.c index 43c4b1251b..27cc86c92e 100644 --- a/src/backend/access/gist/gistproc.c +++ b/src/backend/access/gist/gistproc.c @@ -537,7 +537,12 @@ gist_box_picksplit(PG_FUNCTION_ARGS) /* * Equality method * - * This is used for both boxes and points. + * This is used for boxes, points, circles, and polygons, all of which store + * boxes as GiST index entries. + * + * Returns true only when boxes are exactly the same. We can't use fuzzy + * comparisons here without breaking index consistency; therefore, this isn't + * equivalent to box_same(). */ Datum gist_box_same(PG_FUNCTION_ARGS) @@ -547,11 +552,10 @@ gist_box_same(PG_FUNCTION_ARGS) bool *result = (bool *) PG_GETARG_POINTER(2); if (b1 && b2) - *result = DatumGetBool(DirectFunctionCall2(box_same, - PointerGetDatum(b1), - PointerGetDatum(b2))); + *result = (b1->low.x == b2->low.x && b1->low.y == b2->low.y && + b1->high.x == b2->high.x && b1->high.y == b2->high.y); else - *result = (b1 == NULL && b2 == NULL) ? TRUE : FALSE; + *result = (b1 == NULL && b2 == NULL); PG_RETURN_POINTER(result); } @@ -997,13 +1001,16 @@ gist_point_consistent_internal(StrategyNumber strategy, case RTSameStrategyNumber: if (isLeaf) { - result = FPeq(key->low.x, query->x) - && FPeq(key->low.y, query->y); + /* key.high must equal key.low, so we can disregard it */ + result = (FPeq(key->low.x, query->x) && + FPeq(key->low.y, query->y)); } else { - result = (query->x <= key->high.x && query->x >= key->low.x && - query->y <= key->high.y && query->y >= key->low.y); + result = (FPle(query->x, key->high.x) && + FPge(query->x, key->low.x) && + FPle(query->y, key->high.y) && + FPge(query->y, key->low.y)); } break; default: @@ -1038,12 +1045,31 @@ gist_point_consistent(PG_FUNCTION_ARGS) *recheck = false; break; case BoxStrategyNumberGroup: - result = DatumGetBool(DirectFunctionCall5( - gist_box_consistent, - PointerGetDatum(entry), - PG_GETARG_DATUM(1), - Int16GetDatum(RTOverlapStrategyNumber), - 0, PointerGetDatum(recheck))); + { + /* + * The only operator in this group is point <@ box (on_pb), so + * we needn't examine strategy again. + * + * For historical reasons, on_pb uses exact rather than fuzzy + * comparisons. We could use box_overlap when at an internal + * page, but that would lead to possibly visiting child pages + * uselessly, because box_overlap uses fuzzy comparisons. + * Instead we write a non-fuzzy overlap test. The same code + * will also serve for leaf-page tests, since leaf keys have + * high == low. + */ + BOX *query, + *key; + + query = PG_GETARG_BOX_P(1); + key = DatumGetBoxP(entry->key); + + result = (key->high.x >= query->low.x && + key->low.x <= query->high.x && + key->high.y >= query->low.y && + key->low.y <= query->high.y); + *recheck = false; + } break; case PolygonStrategyNumberGroup: { diff --git a/src/backend/access/gist/gistscan.c b/src/backend/access/gist/gistscan.c index 5662a3a4aa..92405283d0 100644 --- a/src/backend/access/gist/gistscan.c +++ b/src/backend/access/gist/gistscan.c @@ -242,6 +242,7 @@ gistendscan(PG_FUNCTION_ARGS) GISTScanOpaque so = (GISTScanOpaque) scan->opaque; freeGISTstate(so->giststate); + pfree(so->giststate); MemoryContextDelete(so->queueCxt); MemoryContextDelete(so->tempCxt); pfree(so->tmpTreeItem); diff --git a/src/backend/access/gist/gistsplit.c b/src/backend/access/gist/gistsplit.c index bd846cecca..67741b6ca7 100644 --- a/src/backend/access/gist/gistsplit.c +++ b/src/backend/access/gist/gistsplit.c @@ -1,7 +1,18 @@ /*------------------------------------------------------------------------- * * gistsplit.c - * Split page algorithm + * Multi-column page splitting algorithm + * + * This file is concerned with making good page-split decisions in multi-column + * GiST indexes. The opclass-specific picksplit functions can only be expected + * to produce answers based on a single column. We first run the picksplit + * function for column 1; then, if there are more columns, we check if any of + * the tuples are "don't cares" so far as the column 1 split is concerned + * (that is, they could go to either side for no additional penalty). If so, + * we try to redistribute those tuples on the basis of the next column. + * Repeat till we're out of columns. + * + * gistSplitByKey() is the entry point to this file. * * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group @@ -19,21 +30,22 @@ typedef struct { - Datum *attr; - int len; OffsetNumber *entries; + int len; + Datum *attr; bool *isnull; - bool *equiv; + bool *dontcare; } GistSplitUnion; /* - * Forms unions of subkeys after page split, but - * uses only tuples aren't in groups of equalent tuples + * Form unions of subkeys in itvec[] entries listed in gsvp->entries[], + * ignoring any tuples that are marked in gsvp->dontcare[]. Subroutine for + * gistunionsubkey. */ static void gistunionsubkeyvec(GISTSTATE *giststate, IndexTuple *itvec, - GistSplitUnion *gsvp, int startkey) + GistSplitUnion *gsvp) { IndexTuple *cleanedItVec; int i, @@ -43,128 +55,157 @@ gistunionsubkeyvec(GISTSTATE *giststate, IndexTuple *itvec, for (i = 0; i < gsvp->len; i++) { - if (gsvp->equiv && gsvp->equiv[gsvp->entries[i]]) + if (gsvp->dontcare && gsvp->dontcare[gsvp->entries[i]]) continue; cleanedItVec[cleanedLen++] = itvec[gsvp->entries[i] - 1]; } - gistMakeUnionItVec(giststate, cleanedItVec, cleanedLen, startkey, + gistMakeUnionItVec(giststate, cleanedItVec, cleanedLen, gsvp->attr, gsvp->isnull); pfree(cleanedItVec); } /* - * unions subkeys for after user picksplit over attno-1 column + * Recompute unions of left- and right-side subkeys after a page split, + * ignoring any tuples that are marked in spl->spl_dontcare[]. + * + * Note: we always recompute union keys for all index columns. In some cases + * this might represent duplicate work for the leftmost column(s), but it's + * not safe to assume that "zero penalty to move a tuple" means "the union + * key doesn't change at all". Penalty functions aren't 100% accurate. */ static void -gistunionsubkey(GISTSTATE *giststate, IndexTuple *itvec, GistSplitVector *spl, int attno) +gistunionsubkey(GISTSTATE *giststate, IndexTuple *itvec, GistSplitVector *spl) { GistSplitUnion gsvp; - gsvp.equiv = spl->spl_equiv; + gsvp.dontcare = spl->spl_dontcare; - gsvp.attr = spl->spl_lattr; - gsvp.len = spl->splitVector.spl_nleft; gsvp.entries = spl->splitVector.spl_left; + gsvp.len = spl->splitVector.spl_nleft; + gsvp.attr = spl->spl_lattr; gsvp.isnull = spl->spl_lisnull; - gistunionsubkeyvec(giststate, itvec, &gsvp, attno); + gistunionsubkeyvec(giststate, itvec, &gsvp); - gsvp.attr = spl->spl_rattr; - gsvp.len = spl->splitVector.spl_nright; gsvp.entries = spl->splitVector.spl_right; + gsvp.len = spl->splitVector.spl_nright; + gsvp.attr = spl->spl_rattr; gsvp.isnull = spl->spl_risnull; - gistunionsubkeyvec(giststate, itvec, &gsvp, attno); + gistunionsubkeyvec(giststate, itvec, &gsvp); } /* - * find group in vector with equivalent value + * Find tuples that are "don't cares", that is could be moved to the other + * side of the split with zero penalty, so far as the attno column is + * concerned. + * + * Don't-care tuples are marked by setting the corresponding entry in + * spl->spl_dontcare[] to "true". Caller must have initialized that array + * to zeroes. + * + * Returns number of don't-cares found. */ static int -gistfindgroup(Relation r, GISTSTATE *giststate, GISTENTRY *valvec, GistSplitVector *spl, int attno) +findDontCares(Relation r, GISTSTATE *giststate, GISTENTRY *valvec, + GistSplitVector *spl, int attno) { int i; GISTENTRY entry; - int len = 0; + int NumDontCare = 0; /* - * attno key is always not null (see gistSplitByKey), so we may not check - * for nulls + * First, search the left-side tuples to see if any have zero penalty to + * be added to the right-side union key. + * + * attno column is known all-not-null (see gistSplitByKey), so we need not + * check for nulls */ - gistentryinit(entry, spl->splitVector.spl_rdatum, r, NULL, (OffsetNumber) 0, FALSE); + gistentryinit(entry, spl->splitVector.spl_rdatum, r, NULL, + (OffsetNumber) 0, FALSE); for (i = 0; i < spl->splitVector.spl_nleft; i++) { + int j = spl->splitVector.spl_left[i]; float penalty = gistpenalty(giststate, attno, &entry, false, - &valvec[spl->splitVector.spl_left[i]], false); + &valvec[j], false); if (penalty == 0.0) { - spl->spl_equiv[spl->splitVector.spl_left[i]] = true; - len++; + spl->spl_dontcare[j] = true; + NumDontCare++; } } - gistentryinit(entry, spl->splitVector.spl_ldatum, r, NULL, (OffsetNumber) 0, FALSE); + /* And conversely for the right-side tuples */ + gistentryinit(entry, spl->splitVector.spl_ldatum, r, NULL, + (OffsetNumber) 0, FALSE); for (i = 0; i < spl->splitVector.spl_nright; i++) { + int j = spl->splitVector.spl_right[i]; float penalty = gistpenalty(giststate, attno, &entry, false, - &valvec[spl->splitVector.spl_right[i]], false); + &valvec[j], false); if (penalty == 0.0) { - spl->spl_equiv[spl->splitVector.spl_right[i]] = true; - len++; + spl->spl_dontcare[j] = true; + NumDontCare++; } } - return len; + return NumDontCare; } +/* + * Remove tuples that are marked don't-cares from the tuple index array a[] + * of length *len. This is applied separately to the spl_left and spl_right + * arrays. + */ static void -cleanupOffsets(OffsetNumber *a, int *len, bool *equiv, int *LenEquiv) +removeDontCares(OffsetNumber *a, int *len, const bool *dontcare) { - int curlen, + int origlen, + newlen, i; OffsetNumber *curwpos; - curlen = *len; + origlen = newlen = *len; curwpos = a; - for (i = 0; i < *len; i++) + for (i = 0; i < origlen; i++) { - if (equiv[a[i]] == FALSE) + OffsetNumber ai = a[i]; + + if (dontcare[ai] == FALSE) { - *curwpos = a[i]; + /* re-emit item into a[] */ + *curwpos = ai; curwpos++; } else - { - /* corner case: we shouldn't make void array */ - if (curlen == 1) - { - equiv[a[i]] = FALSE; /* mark item as non-equivalent */ - i--; /* redo the same */ - *LenEquiv -= 1; - continue; - } - else - curlen--; - } + newlen--; } - *len = curlen; + *len = newlen; } +/* + * Place a single don't-care tuple into either the left or right side of the + * split, according to which has least penalty for merging the tuple into + * the previously-computed union keys. We need consider only columns starting + * at attno. + */ static void -placeOne(Relation r, GISTSTATE *giststate, GistSplitVector *v, IndexTuple itup, OffsetNumber off, int attno) +placeOne(Relation r, GISTSTATE *giststate, GistSplitVector *v, + IndexTuple itup, OffsetNumber off, int attno) { GISTENTRY identry[INDEX_MAX_KEYS]; bool isnull[INDEX_MAX_KEYS]; bool toLeft = true; - gistDeCompressAtt(giststate, r, itup, NULL, (OffsetNumber) 0, identry, isnull); + gistDeCompressAtt(giststate, r, itup, NULL, (OffsetNumber) 0, + identry, isnull); for (; attno < giststate->tupdesc->natts; attno++) { @@ -173,9 +214,11 @@ placeOne(Relation r, GISTSTATE *giststate, GistSplitVector *v, IndexTuple itup, GISTENTRY entry; gistentryinit(entry, v->spl_lattr[attno], r, NULL, 0, FALSE); - lpenalty = gistpenalty(giststate, attno, &entry, v->spl_lisnull[attno], identry + attno, isnull[attno]); + lpenalty = gistpenalty(giststate, attno, &entry, v->spl_lisnull[attno], + identry + attno, isnull[attno]); gistentryinit(entry, v->spl_rattr[attno], r, NULL, 0, FALSE); - rpenalty = gistpenalty(giststate, attno, &entry, v->spl_risnull[attno], identry + attno, isnull[attno]); + rpenalty = gistpenalty(giststate, attno, &entry, v->spl_risnull[attno], + identry + attno, isnull[attno]); if (lpenalty != rpenalty) { @@ -199,13 +242,21 @@ do { \ } while(0) /* - * adjust left and right unions according to splits by previous - * split by firsts columns. This function is called only in case - * when pickSplit doesn't support subspplit. + * Clean up when we did a secondary split but the user-defined PickSplit + * method didn't support it (leaving spl_ldatum_exists or spl_rdatum_exists + * true). + * + * We consider whether to swap the left and right outputs of the secondary + * split; this can be worthwhile if the penalty for merging those tuples into + * the previously chosen sets is less that way. + * + * In any case we must update the union datums for the current column by + * adding in the previous union keys (oldL/oldR), since the user-defined + * PickSplit method didn't do so. */ - static void -supportSecondarySplit(Relation r, GISTSTATE *giststate, int attno, GIST_SPLITVEC *sv, Datum oldL, Datum oldR) +supportSecondarySplit(Relation r, GISTSTATE *giststate, int attno, + GIST_SPLITVEC *sv, Datum oldL, Datum oldR) { bool leaveOnLeft = true, tmpBool; @@ -231,7 +282,6 @@ supportSecondarySplit(Relation r, GISTSTATE *giststate, int attno, GIST_SPLITVEC if (penalty1 > penalty2) leaveOnLeft = false; - } else { @@ -240,10 +290,15 @@ supportSecondarySplit(Relation r, GISTSTATE *giststate, int attno, GIST_SPLITVEC penalty2; /* - * there is only one previously defined union, so we just choose swap - * or not by lowest penalty + * There is only one previously defined union, so we just choose swap + * or not by lowest penalty for that side. We can only get here if a + * secondary split happened to have all NULLs in its column in the + * tuples that the outer recursion level had assigned to one side. + * (Note that the null checks in gistSplitByKey don't prevent the + * case, because they'll only be checking tuples that were considered + * don't-cares at the outer recursion level, not the tuples that went + * into determining the passed-down left and right union keys.) */ - penalty1 = gistpenalty(giststate, attno, entry1, false, &entrySL, false); penalty2 = gistpenalty(giststate, attno, entry1, false, &entrySR, false); @@ -281,10 +336,9 @@ supportSecondarySplit(Relation r, GISTSTATE *giststate, int attno, GIST_SPLITVEC } /* - * Trivial picksplit implementaion. Function called only - * if user-defined picksplit puts all keys to the one page. - * That is a bug of user-defined picksplit but we'd like - * to "fix" that. + * Trivial picksplit implementation. Function called only + * if user-defined picksplit puts all keys on the same side of the split. + * That is a bug of user-defined picksplit but we don't want to fail. */ static void genericPickSplit(GISTSTATE *giststate, GistEntryVector *entryvec, GIST_SPLITVEC *v, int attno) @@ -317,9 +371,8 @@ genericPickSplit(GISTSTATE *giststate, GistEntryVector *entryvec, GIST_SPLITVEC } /* - * Form unions of each page + * Form union datums for each side */ - evec = palloc(sizeof(GISTENTRY) * entryvec->n + GEVHDRSZ); evec->n = v->spl_nleft; @@ -340,12 +393,23 @@ genericPickSplit(GISTSTATE *giststate, GistEntryVector *entryvec, GIST_SPLITVEC } /* - * Calls user picksplit method for attno columns to split vector to - * two vectors. May use attno+n columns data to - * get better split. - * Returns TRUE and v->spl_equiv = NULL if left and right unions of attno columns are the same, - * so caller may find better split - * Returns TRUE and v->spl_equiv != NULL if there is tuples which may be freely moved + * Calls user picksplit method for attno column to split tuples into + * two vectors. + * + * Returns FALSE if split is complete (there are no more index columns, or + * there is no need to consider them because split is optimal already). + * + * Returns TRUE and v->spl_dontcare = NULL if the picksplit result is + * degenerate (all tuples seem to be don't-cares), so we should just + * disregard this column and split on the next column(s) instead. + * + * Returns TRUE and v->spl_dontcare != NULL if there are don't-care tuples + * that could be relocated based on the next column(s). The don't-care + * tuples have been removed from the split and must be reinserted by caller. + * There is at least one non-don't-care tuple on each side of the split, + * and union keys for all columns are updated to include just those tuples. + * + * A TRUE result implies there is at least one more index column. */ static bool gistUserPicksplit(Relation r, GistEntryVector *entryvec, int attno, GistSplitVector *v, @@ -354,15 +418,18 @@ gistUserPicksplit(Relation r, GistEntryVector *entryvec, int attno, GistSplitVec GIST_SPLITVEC *sv = &v->splitVector; /* - * now let the user-defined picksplit function set up the split vector; in - * entryvec there is no null value!! + * Prepare spl_ldatum/spl_rdatum/spl_ldatum_exists/spl_rdatum_exists in + * case we are doing a secondary split (see comments in gist.h). */ - sv->spl_ldatum_exists = (v->spl_lisnull[attno]) ? false : true; sv->spl_rdatum_exists = (v->spl_risnull[attno]) ? false : true; sv->spl_ldatum = v->spl_lattr[attno]; sv->spl_rdatum = v->spl_rattr[attno]; + /* + * Let the opclass-specific PickSplit method do its thing. Note that at + * this point we know there are no null keys in the entryvec. + */ FunctionCall2Coll(&giststate->picksplitFn[attno], giststate->supportCollation[attno], PointerGetDatum(entryvec), @@ -370,6 +437,10 @@ gistUserPicksplit(Relation r, GistEntryVector *entryvec, int attno, GistSplitVec if (sv->spl_nleft == 0 || sv->spl_nright == 0) { + /* + * User-defined picksplit failed to create an actual split, ie it put + * everything on the same side. Complain but cope. + */ ereport(DEBUG1, (errcode(ERRCODE_INTERNAL_ERROR), errmsg("picksplit method for column %d of index \"%s\" failed", @@ -377,107 +448,130 @@ gistUserPicksplit(Relation r, GistEntryVector *entryvec, int attno, GistSplitVec errhint("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."))); /* - * Reinit GIST_SPLITVEC. Although that fields are not used by - * genericPickSplit(), let us set up it for further processing + * Reinit GIST_SPLITVEC. Although these fields are not used by + * genericPickSplit(), set them up for further processing */ sv->spl_ldatum_exists = (v->spl_lisnull[attno]) ? false : true; sv->spl_rdatum_exists = (v->spl_risnull[attno]) ? false : true; sv->spl_ldatum = v->spl_lattr[attno]; sv->spl_rdatum = v->spl_rattr[attno]; + /* Do a generic split */ genericPickSplit(giststate, entryvec, sv, attno); - - if (sv->spl_ldatum_exists || sv->spl_rdatum_exists) - supportSecondarySplit(r, giststate, attno, sv, v->spl_lattr[attno], v->spl_rattr[attno]); } else { - /* compatibility with old code */ + /* hack for compatibility with old picksplit API */ if (sv->spl_left[sv->spl_nleft - 1] == InvalidOffsetNumber) sv->spl_left[sv->spl_nleft - 1] = (OffsetNumber) (entryvec->n - 1); if (sv->spl_right[sv->spl_nright - 1] == InvalidOffsetNumber) sv->spl_right[sv->spl_nright - 1] = (OffsetNumber) (entryvec->n - 1); - - if (sv->spl_ldatum_exists || sv->spl_rdatum_exists) - { - elog(LOG, "picksplit method for column %d of index \"%s\" doesn't support secondary split", - attno + 1, RelationGetRelationName(r)); - - supportSecondarySplit(r, giststate, attno, sv, v->spl_lattr[attno], v->spl_rattr[attno]); - } } + /* Clean up if PickSplit didn't take care of a secondary split */ + if (sv->spl_ldatum_exists || sv->spl_rdatum_exists) + supportSecondarySplit(r, giststate, attno, sv, + v->spl_lattr[attno], v->spl_rattr[attno]); + + /* emit union datums computed by PickSplit back to v arrays */ v->spl_lattr[attno] = sv->spl_ldatum; v->spl_rattr[attno] = sv->spl_rdatum; v->spl_lisnull[attno] = false; v->spl_risnull[attno] = false; /* - * if index is multikey, then we must to try get smaller bounding box for - * subkey(s) + * If index columns remain, then consider whether we can improve the split + * by using them. */ - v->spl_equiv = NULL; + v->spl_dontcare = NULL; - if (giststate->tupdesc->natts > 1 && attno + 1 != giststate->tupdesc->natts) + if (attno + 1 < giststate->tupdesc->natts) { - if (gistKeyIsEQ(giststate, attno, sv->spl_ldatum, sv->spl_rdatum)) - { - /* - * Left and right key's unions are equial, so we can get better - * split by following columns. Note, unions for attno columns are - * already done. - */ + int NumDontCare; + /* + * Make a quick check to see if left and right union keys are equal; + * if so, the split is certainly degenerate, so tell caller to + * re-split with the next column. + */ + if (gistKeyIsEQ(giststate, attno, sv->spl_ldatum, sv->spl_rdatum)) return true; - } - else - { - int LenEquiv; - v->spl_equiv = (bool *) palloc0(sizeof(bool) * (entryvec->n + 1)); + /* + * Locate don't-care tuples, if any. If there are none, the split is + * optimal, so just fall out and return false. + */ + v->spl_dontcare = (bool *) palloc0(sizeof(bool) * (entryvec->n + 1)); - LenEquiv = gistfindgroup(r, giststate, entryvec->vector, v, attno); + NumDontCare = findDontCares(r, giststate, entryvec->vector, v, attno); + if (NumDontCare > 0) + { /* - * if possible, we should distribute equivalent tuples + * Remove don't-cares from spl_left[] and spl_right[]. */ - if (LenEquiv == 0) + removeDontCares(sv->spl_left, &sv->spl_nleft, v->spl_dontcare); + removeDontCares(sv->spl_right, &sv->spl_nright, v->spl_dontcare); + + /* + * If all tuples on either side were don't-cares, the split is + * degenerate, and we're best off to ignore it and split on the + * next column. (We used to try to press on with a secondary + * split by forcing a random tuple on each side to be treated as + * non-don't-care, but it seems unlikely that that technique + * really gives a better result. Note that we don't want to try a + * secondary split with empty left or right primary split sides, + * because then there is no union key on that side for the + * PickSplit function to try to expand, so it can have no good + * figure of merit for what it's doing. Also note that this check + * ensures we can't produce a bogus one-side-only split in the + * NumDontCare == 1 special case below.) + */ + if (sv->spl_nleft == 0 || sv->spl_nright == 0) { - gistunionsubkey(giststate, itup, v, attno + 1); + v->spl_dontcare = NULL; + return true; } - else + + /* + * Recompute union keys, considering only non-don't-care tuples. + * NOTE: this will set union keys for remaining index columns, + * which will cause later calls of gistUserPicksplit to pass those + * values down to user-defined PickSplit methods with + * spl_ldatum_exists/spl_rdatum_exists set true. + */ + gistunionsubkey(giststate, itup, v); + + if (NumDontCare == 1) { - cleanupOffsets(sv->spl_left, &sv->spl_nleft, v->spl_equiv, &LenEquiv); - cleanupOffsets(sv->spl_right, &sv->spl_nright, v->spl_equiv, &LenEquiv); + /* + * If there's only one don't-care tuple then we can't do a + * PickSplit on it, so just choose whether to send it left or + * right by comparing penalties. We needed the + * gistunionsubkey step anyway so that we have appropriate + * union keys for figuring the penalties. + */ + OffsetNumber toMove; - gistunionsubkey(giststate, itup, v, attno + 1); - if (LenEquiv == 1) + /* find it ... */ + for (toMove = FirstOffsetNumber; toMove < entryvec->n; toMove++) { - /* - * In case with one tuple we just choose left-right by - * penalty. It's simplify user-defined pickSplit - */ - OffsetNumber toMove = InvalidOffsetNumber; - - for (toMove = FirstOffsetNumber; toMove < entryvec->n; toMove++) - if (v->spl_equiv[toMove]) - break; - Assert(toMove < entryvec->n); - - placeOne(r, giststate, v, itup[toMove - 1], toMove, attno + 1); - - /* - * redo gistunionsubkey(): it will not degradate - * performance, because it's very rarely - */ - v->spl_equiv = NULL; - gistunionsubkey(giststate, itup, v, attno + 1); - - return false; + if (v->spl_dontcare[toMove]) + break; } - else if (LenEquiv > 1) - return true; + Assert(toMove < entryvec->n); + + /* ... and assign it to cheaper side */ + placeOne(r, giststate, v, itup[toMove - 1], toMove, attno + 1); + + /* + * At this point the union keys are wrong, but we don't care + * because we're done splitting. The outermost recursion + * level of gistSplitByKey will fix things before returning. + */ } + else + return true; } } @@ -485,7 +579,7 @@ gistUserPicksplit(Relation r, GistEntryVector *entryvec, int attno, GistSplitVec } /* - * simple split page + * simply split page in half */ static void gistSplitHalf(GIST_SPLITVEC *v, int len) @@ -500,26 +594,53 @@ gistSplitHalf(GIST_SPLITVEC *v, int len) v->spl_right[v->spl_nright++] = i; else v->spl_left[v->spl_nleft++] = i; + + /* we need not compute union keys, caller took care of it */ } /* - * trys to split page by attno key, in a case of null - * values move its to separate page. + * gistSplitByKey: main entry point for page-splitting algorithm + * + * r: index relation + * page: page being split + * itup: array of IndexTuples to be processed + * len: number of IndexTuples to be processed (must be at least 2) + * giststate: additional info about index + * v: working state and output area + * attno: column we are working on (zero-based index) + * + * Outside caller must initialize v->spl_lisnull and v->spl_risnull arrays + * to all-TRUE. On return, spl_left/spl_nleft contain indexes of tuples + * to go left, spl_right/spl_nright contain indexes of tuples to go right, + * spl_lattr/spl_lisnull contain left-side union key values, and + * spl_rattr/spl_risnull contain right-side union key values. Other fields + * in this struct are workspace for this file. + * + * Outside caller must pass zero for attno. The function may internally + * recurse to the next column by passing attno+1. */ void -gistSplitByKey(Relation r, Page page, IndexTuple *itup, int len, GISTSTATE *giststate, - GistSplitVector *v, GistEntryVector *entryvec, int attno) +gistSplitByKey(Relation r, Page page, IndexTuple *itup, int len, + GISTSTATE *giststate, GistSplitVector *v, int attno) { - int i; - static OffsetNumber offNullTuples[MaxOffsetNumber]; + GistEntryVector *entryvec; + OffsetNumber *offNullTuples; int nOffNullTuples = 0; + int i; + + /* generate the item array, and identify tuples with null keys */ + /* note that entryvec->vector[0] goes unused in this code */ + entryvec = palloc(GEVHDRSZ + (len + 1) * sizeof(GISTENTRY)); + entryvec->n = len + 1; + offNullTuples = (OffsetNumber *) palloc(len * sizeof(OffsetNumber)); for (i = 1; i <= len; i++) { Datum datum; bool IsNull; - datum = index_getattr(itup[i - 1], attno + 1, giststate->tupdesc, &IsNull); + datum = index_getattr(itup[i - 1], attno + 1, giststate->tupdesc, + &IsNull); gistdentryinit(giststate, attno, &(entryvec->vector[i]), datum, r, page, i, FALSE, IsNull); @@ -530,24 +651,24 @@ gistSplitByKey(Relation r, Page page, IndexTuple *itup, int len, GISTSTATE *gist if (nOffNullTuples == len) { /* - * Corner case: All keys in attno column are null, we should try to - * split by keys in next column. It all keys in all columns are NULL - * just split page half by half + * Corner case: All keys in attno column are null, so just transfer + * our attention to the next column. If there's no next column, just + * split page in half. */ v->spl_risnull[attno] = v->spl_lisnull[attno] = TRUE; - if (attno + 1 == r->rd_att->natts) - gistSplitHalf(&v->splitVector, len); + if (attno + 1 < giststate->tupdesc->natts) + gistSplitByKey(r, page, itup, len, giststate, v, attno + 1); else - gistSplitByKey(r, page, itup, len, giststate, v, entryvec, attno + 1); + gistSplitHalf(&v->splitVector, len); } else if (nOffNullTuples > 0) { int j = 0; /* - * We don't want to mix NULLs and not-NULLs keys on one page, so move - * nulls to right page + * We don't want to mix NULL and not-NULL keys on one page, so split + * nulls to right page and not-nulls to left. */ v->splitVector.spl_right = offNullTuples; v->splitVector.spl_nright = nOffNullTuples; @@ -561,65 +682,98 @@ gistSplitByKey(Relation r, Page page, IndexTuple *itup, int len, GISTSTATE *gist else v->splitVector.spl_left[v->splitVector.spl_nleft++] = i; - v->spl_equiv = NULL; - gistunionsubkey(giststate, itup, v, attno); + /* Compute union keys, unless outer recursion level will handle it */ + if (attno == 0 && giststate->tupdesc->natts == 1) + { + v->spl_dontcare = NULL; + gistunionsubkey(giststate, itup, v); + } } else { /* - * all keys are not-null + * All keys are not-null, so apply user-defined PickSplit method */ - entryvec->n = len + 1; - - if (gistUserPicksplit(r, entryvec, attno, v, itup, len, giststate) && attno + 1 != r->rd_att->natts) + if (gistUserPicksplit(r, entryvec, attno, v, itup, len, giststate)) { /* - * Splitting on attno column is not optimized: there is a tuples - * which can be freely left or right page, we will try to split - * page by following columns + * Splitting on attno column is not optimal, so consider + * redistributing don't-care tuples according to the next column */ - if (v->spl_equiv == NULL) + Assert(attno + 1 < giststate->tupdesc->natts); + + if (v->spl_dontcare == NULL) { /* - * simple case: left and right keys for attno column are - * equial + * This split was actually degenerate, so ignore it altogether + * and just split according to the next column. */ - gistSplitByKey(r, page, itup, len, giststate, v, entryvec, attno + 1); + gistSplitByKey(r, page, itup, len, giststate, v, attno + 1); } else { - /* we should clean up vector from already distributed tuples */ - IndexTuple *newitup = (IndexTuple *) palloc((len + 1) * sizeof(IndexTuple)); - OffsetNumber *map = (OffsetNumber *) palloc((len + 1) * sizeof(IndexTuple)); + /* + * Form an array of just the don't-care tuples to pass to a + * recursive invocation of this function for the next column. + */ + IndexTuple *newitup = (IndexTuple *) palloc(len * sizeof(IndexTuple)); + OffsetNumber *map = (OffsetNumber *) palloc(len * sizeof(OffsetNumber)); int newlen = 0; - GIST_SPLITVEC backupSplit = v->splitVector; + GIST_SPLITVEC backupSplit; for (i = 0; i < len; i++) - if (v->spl_equiv[i + 1]) + { + if (v->spl_dontcare[i + 1]) { + newitup[newlen] = itup[i]; map[newlen] = i + 1; - newitup[newlen++] = itup[i]; + newlen++; } + } Assert(newlen > 0); + /* + * Make a backup copy of v->splitVector, since the recursive + * call will overwrite that with its own result. + */ + backupSplit = v->splitVector; backupSplit.spl_left = (OffsetNumber *) palloc(sizeof(OffsetNumber) * len); memcpy(backupSplit.spl_left, v->splitVector.spl_left, sizeof(OffsetNumber) * v->splitVector.spl_nleft); backupSplit.spl_right = (OffsetNumber *) palloc(sizeof(OffsetNumber) * len); memcpy(backupSplit.spl_right, v->splitVector.spl_right, sizeof(OffsetNumber) * v->splitVector.spl_nright); - gistSplitByKey(r, page, newitup, newlen, giststate, v, entryvec, attno + 1); + /* Recursively decide how to split the don't-care tuples */ + gistSplitByKey(r, page, newitup, newlen, giststate, v, attno + 1); - /* merge result of subsplit */ + /* Merge result of subsplit with non-don't-care tuples */ for (i = 0; i < v->splitVector.spl_nleft; i++) backupSplit.spl_left[backupSplit.spl_nleft++] = map[v->splitVector.spl_left[i] - 1]; for (i = 0; i < v->splitVector.spl_nright; i++) backupSplit.spl_right[backupSplit.spl_nright++] = map[v->splitVector.spl_right[i] - 1]; v->splitVector = backupSplit; - /* reunion left and right datums */ - gistunionsubkey(giststate, itup, v, attno); } } } + + /* + * If we're handling a multicolumn index, at the end of the recursion + * recompute the left and right union datums for all index columns. This + * makes sure we hand back correct union datums in all corner cases, + * including when we haven't processed all columns to start with, or when + * a secondary split moved "don't care" tuples from one side to the other + * (we really shouldn't assume that that didn't change the union datums). + * + * Note: when we're in an internal recursion (attno > 0), we do not worry + * about whether the union datums we return with are sensible, since + * calling levels won't care. Also, in a single-column index, we expect + * that PickSplit (or the special cases above) produced correct union + * datums. + */ + if (attno == 0 && giststate->tupdesc->natts > 1) + { + v->spl_dontcare = NULL; + gistunionsubkey(giststate, itup, v); + } } diff --git a/src/backend/access/gist/gistutil.c b/src/backend/access/gist/gistutil.c index 1754a10369..806f229800 100644 --- a/src/backend/access/gist/gistutil.c +++ b/src/backend/access/gist/gistutil.c @@ -23,12 +23,6 @@ #include "storage/bufmgr.h" #include "utils/rel.h" -/* - * static *S used for temrorary storage (saves stack and palloc() call) - */ - -static Datum attrS[INDEX_MAX_KEYS]; -static bool isnullS[INDEX_MAX_KEYS]; /* * Write itup vector to page, has no control of free space. @@ -150,12 +144,12 @@ gistfillitupvec(IndexTuple *vec, int veclen, int *memlen) } /* - * Make unions of keys in IndexTuple vector, return FALSE if itvec contains - * invalid tuple. Resulting Datums aren't compressed. + * Make unions of keys in IndexTuple vector (one union datum per index column). + * Union Datums are returned into the attr/isnull arrays. + * Resulting Datums aren't compressed. */ - void -gistMakeUnionItVec(GISTSTATE *giststate, IndexTuple *itvec, int len, int startkey, +gistMakeUnionItVec(GISTSTATE *giststate, IndexTuple *itvec, int len, Datum *attr, bool *isnull) { int i; @@ -164,19 +158,12 @@ gistMakeUnionItVec(GISTSTATE *giststate, IndexTuple *itvec, int len, int startke evec = (GistEntryVector *) palloc((len + 2) * sizeof(GISTENTRY) + GEVHDRSZ); - for (i = startkey; i < giststate->tupdesc->natts; i++) + for (i = 0; i < giststate->tupdesc->natts; i++) { int j; + /* Collect non-null datums for this column */ evec->n = 0; - if (!isnull[i]) - { - gistentryinit(evec->vector[evec->n], attr[i], - NULL, NULL, (OffsetNumber) 0, - FALSE); - evec->n++; - } - for (j = 0; j < len; j++) { Datum datum; @@ -194,7 +181,7 @@ gistMakeUnionItVec(GISTSTATE *giststate, IndexTuple *itvec, int len, int startke evec->n++; } - /* If this tuple vector was all NULLs, the union is NULL */ + /* If this column was all NULLs, the union is NULL */ if (evec->n == 0) { attr[i] = (Datum) 0; @@ -204,6 +191,7 @@ gistMakeUnionItVec(GISTSTATE *giststate, IndexTuple *itvec, int len, int startke { if (evec->n == 1) { + /* unionFn may expect at least two inputs */ evec->n = 2; evec->vector[1] = evec->vector[0]; } @@ -226,11 +214,12 @@ gistMakeUnionItVec(GISTSTATE *giststate, IndexTuple *itvec, int len, int startke IndexTuple gistunion(Relation r, IndexTuple *itvec, int len, GISTSTATE *giststate) { - memset(isnullS, TRUE, sizeof(bool) * giststate->tupdesc->natts); + Datum attr[INDEX_MAX_KEYS]; + bool isnull[INDEX_MAX_KEYS]; - gistMakeUnionItVec(giststate, itvec, len, 0, attrS, isnullS); + gistMakeUnionItVec(giststate, itvec, len, attr, isnull); - return gistFormTuple(giststate, r, attrS, isnullS, false); + return gistFormTuple(giststate, r, attr, isnull, false); } /* @@ -242,12 +231,15 @@ gistMakeUnionKey(GISTSTATE *giststate, int attno, GISTENTRY *entry2, bool isnull2, Datum *dst, bool *dstisnull) { - + /* we need a GistEntryVector with room for exactly 2 elements */ + union + { + GistEntryVector gev; + char padding[2 * sizeof(GISTENTRY) + GEVHDRSZ]; + } storage; + GistEntryVector *evec = &storage.gev; int dstsize; - static char storage[2 * sizeof(GISTENTRY) + GEVHDRSZ]; - GistEntryVector *evec = (GistEntryVector *) storage; - evec->n = 2; if (isnull1 && isnull2) @@ -323,6 +315,8 @@ gistgetadjusted(Relation r, IndexTuple oldtup, IndexTuple addtup, GISTSTATE *gis addentries[INDEX_MAX_KEYS]; bool oldisnull[INDEX_MAX_KEYS], addisnull[INDEX_MAX_KEYS]; + Datum attr[INDEX_MAX_KEYS]; + bool isnull[INDEX_MAX_KEYS]; IndexTuple newtup = NULL; int i; @@ -337,19 +331,20 @@ gistgetadjusted(Relation r, IndexTuple oldtup, IndexTuple addtup, GISTSTATE *gis gistMakeUnionKey(giststate, i, oldentries + i, oldisnull[i], addentries + i, addisnull[i], - attrS + i, isnullS + i); + attr + i, isnull + i); if (neednew) /* we already need new key, so we can skip check */ continue; - if (isnullS[i]) + if (isnull[i]) /* union of key may be NULL if and only if both keys are NULL */ continue; if (!addisnull[i]) { - if (oldisnull[i] || gistKeyIsEQ(giststate, i, oldentries[i].key, attrS[i]) == false) + if (oldisnull[i] || + !gistKeyIsEQ(giststate, i, oldentries[i].key, attr[i])) neednew = true; } } @@ -357,7 +352,7 @@ gistgetadjusted(Relation r, IndexTuple oldtup, IndexTuple addtup, GISTSTATE *gis if (neednew) { /* need to update key */ - newtup = gistFormTuple(giststate, r, attrS, isnullS, false); + newtup = gistFormTuple(giststate, r, attr, isnull, false); newtup->t_tid = oldtup->t_tid; } @@ -365,72 +360,120 @@ gistgetadjusted(Relation r, IndexTuple oldtup, IndexTuple addtup, GISTSTATE *gis } /* - * find entry with lowest penalty + * Search an upper index page for the entry with lowest penalty for insertion + * of the new index key contained in "it". + * + * Returns the index of the page entry to insert into. */ OffsetNumber gistchoose(Relation r, Page p, IndexTuple it, /* it has compressed entry */ GISTSTATE *giststate) { + OffsetNumber result; OffsetNumber maxoff; OffsetNumber i; - OffsetNumber which; - float sum_grow, - which_grow[INDEX_MAX_KEYS]; + float best_penalty[INDEX_MAX_KEYS]; GISTENTRY entry, identry[INDEX_MAX_KEYS]; bool isnull[INDEX_MAX_KEYS]; - maxoff = PageGetMaxOffsetNumber(p); - *which_grow = -1.0; - which = InvalidOffsetNumber; - sum_grow = 1; + Assert(!GistPageIsLeaf(p)); + gistDeCompressAtt(giststate, r, it, NULL, (OffsetNumber) 0, identry, isnull); + /* we'll return FirstOffsetNumber if page is empty (shouldn't happen) */ + result = FirstOffsetNumber; + + /* + * The index may have multiple columns, and there's a penalty value for + * each column. The penalty associated with a column that appears earlier + * in the index definition is strictly more important than the penalty of + * a column that appears later in the index definition. + * + * best_penalty[j] is the best penalty we have seen so far for column j, + * or -1 when we haven't yet examined column j. Array entries to the + * right of the first -1 are undefined. + */ + best_penalty[0] = -1; + + /* + * Loop over tuples on page. + */ + maxoff = PageGetMaxOffsetNumber(p); Assert(maxoff >= FirstOffsetNumber); - Assert(!GistPageIsLeaf(p)); - for (i = FirstOffsetNumber; i <= maxoff && sum_grow; i = OffsetNumberNext(i)) + for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i)) { - int j; IndexTuple itup = (IndexTuple) PageGetItem(p, PageGetItemId(p, i)); + bool zero_penalty; + int j; + + zero_penalty = true; - sum_grow = 0; + /* Loop over index attributes. */ for (j = 0; j < r->rd_att->natts; j++) { Datum datum; float usize; bool IsNull; + /* Compute penalty for this column. */ datum = index_getattr(itup, j + 1, giststate->tupdesc, &IsNull); gistdentryinit(giststate, j, &entry, datum, r, p, i, FALSE, IsNull); usize = gistpenalty(giststate, j, &entry, IsNull, &identry[j], isnull[j]); + if (usize > 0) + zero_penalty = false; - if (which_grow[j] < 0 || usize < which_grow[j]) + if (best_penalty[j] < 0 || usize < best_penalty[j]) { - which = i; - which_grow[j] = usize; - if (j < r->rd_att->natts - 1 && i == FirstOffsetNumber) - which_grow[j + 1] = -1; - sum_grow += which_grow[j]; + /* + * New best penalty for column. Tentatively select this tuple + * as the target, and record the best penalty. Then reset the + * next column's penalty to "unknown" (and indirectly, the + * same for all the ones to its right). This will force us to + * adopt this tuple's penalty values as the best for all the + * remaining columns during subsequent loop iterations. + */ + result = i; + best_penalty[j] = usize; + + if (j < r->rd_att->natts - 1) + best_penalty[j + 1] = -1; + } + else if (best_penalty[j] == usize) + { + /* + * The current tuple is exactly as good for this column as the + * best tuple seen so far. The next iteration of this loop + * will compare the next column. + */ } - else if (which_grow[j] == usize) - sum_grow += usize; else { - sum_grow = 1; + /* + * The current tuple is worse for this column than the best + * tuple seen so far. Skip the remaining columns and move on + * to the next tuple, if any. + */ + zero_penalty = false; /* so outer loop won't exit */ break; } } - } - if (which == InvalidOffsetNumber) - which = FirstOffsetNumber; + /* + * If we find a tuple with zero penalty for all columns, there's no + * need to examine remaining tuples; just break out of the loop and + * return it. + */ + if (zero_penalty) + break; + } - return which; + return result; } /* diff --git a/src/backend/access/gist/gistvacuum.c b/src/backend/access/gist/gistvacuum.c index 33e6f34154..50c6270b00 100644 --- a/src/backend/access/gist/gistvacuum.c +++ b/src/backend/access/gist/gistvacuum.c @@ -270,7 +270,7 @@ gistbulkdelete(PG_FUNCTION_ARGS) ereport(LOG, (errmsg("index \"%s\" contains an inner tuple marked as invalid", RelationGetRelationName(rel)), - errdetail("This is caused by an incomplete page split at crash recovery before upgrading to 9.1."), + errdetail("This is caused by an incomplete page split at crash recovery before upgrading to PostgreSQL 9.1."), errhint("Please REINDEX it."))); } } diff --git a/src/backend/access/gist/gistxlog.c b/src/backend/access/gist/gistxlog.c index 02c4ec3a6f..b7de92c886 100644 --- a/src/backend/access/gist/gistxlog.c +++ b/src/backend/access/gist/gistxlog.c @@ -35,35 +35,48 @@ typedef struct static MemoryContext opCtx; /* working memory for operations */ /* - * Replay the clearing of F_FOLLOW_RIGHT flag. + * Replay the clearing of F_FOLLOW_RIGHT flag on a child page. + * + * Even if the WAL record includes a full-page image, we have to update the + * follow-right flag, because that change is not included in the full-page + * image. To be sure that the intermediate state with the wrong flag value is + * not visible to concurrent Hot Standby queries, this function handles + * restoring the full-page image as well as updating the flag. (Note that + * we never need to do anything else to the child page in the current WAL + * action.) */ static void -gistRedoClearFollowRight(RelFileNode node, XLogRecPtr lsn, - BlockNumber leftblkno) +gistRedoClearFollowRight(XLogRecPtr lsn, XLogRecord *record, int block_index, + RelFileNode node, BlockNumber childblkno) { Buffer buffer; + Page page; - buffer = XLogReadBuffer(node, leftblkno, false); - if (BufferIsValid(buffer)) + if (record->xl_info & XLR_BKP_BLOCK(block_index)) + buffer = RestoreBackupBlock(lsn, record, block_index, false, true); + else { - Page page = (Page) BufferGetPage(buffer); + buffer = XLogReadBuffer(node, childblkno, false); + if (!BufferIsValid(buffer)) + return; /* page was deleted, nothing to do */ + } + page = (Page) BufferGetPage(buffer); - /* - * Note that we still update the page even if page LSN is equal to the - * LSN of this record, because the updated NSN is not included in the - * full page image. - */ - if (!XLByteLT(lsn, PageGetLSN(page))) - { - GistPageGetOpaque(page)->nsn = lsn; - GistClearFollowRight(page); + /* + * Note that we still update the page even if page LSN is equal to the LSN + * of this record, because the updated NSN is not included in the full + * page image. + */ + if (!XLByteLT(lsn, PageGetLSN(page))) + { + GistPageGetOpaque(page)->nsn = lsn; + GistClearFollowRight(page); - PageSetLSN(page, lsn); - PageSetTLI(page, ThisTimeLineID); - MarkBufferDirty(buffer); - } - UnlockReleaseBuffer(buffer); + PageSetLSN(page, lsn); + PageSetTLI(page, ThisTimeLineID); + MarkBufferDirty(buffer); } + UnlockReleaseBuffer(buffer); } /* @@ -78,18 +91,37 @@ gistRedoPageUpdateRecord(XLogRecPtr lsn, XLogRecord *record) Page page; char *data; + /* + * We need to acquire and hold lock on target page while updating the left + * child page. If we have a full-page image of target page, getting the + * lock is a side-effect of restoring that image. Note that even if the + * target page no longer exists, we'll still attempt to replay the change + * on the child page. + */ + if (record->xl_info & XLR_BKP_BLOCK(0)) + buffer = RestoreBackupBlock(lsn, record, 0, false, true); + else + buffer = XLogReadBuffer(xldata->node, xldata->blkno, false); + + /* Fix follow-right data on left child page */ if (BlockNumberIsValid(xldata->leftchild)) - gistRedoClearFollowRight(xldata->node, lsn, xldata->leftchild); + gistRedoClearFollowRight(lsn, record, 1, + xldata->node, xldata->leftchild); - /* nothing more to do if page was backed up (and no info to do it with) */ - if (record->xl_info & XLR_BKP_BLOCK_1) + /* Done if target page no longer exists */ + if (!BufferIsValid(buffer)) return; - buffer = XLogReadBuffer(xldata->node, xldata->blkno, false); - if (!BufferIsValid(buffer)) + /* nothing more to do if page was backed up (and no info to do it with) */ + if (record->xl_info & XLR_BKP_BLOCK(0)) + { + UnlockReleaseBuffer(buffer); return; + } + page = (Page) BufferGetPage(buffer); + /* nothing more to do if change already applied */ if (XLByteLE(lsn, PageGetLSN(page))) { UnlockReleaseBuffer(buffer); @@ -143,13 +175,16 @@ gistRedoPageUpdateRecord(XLogRecPtr lsn, XLogRecord *record) GistClearTuplesDeleted(page); } - if (!GistPageIsLeaf(page) && PageGetMaxOffsetNumber(page) == InvalidOffsetNumber && xldata->blkno == GIST_ROOT_BLKNO) - + if (!GistPageIsLeaf(page) && + PageGetMaxOffsetNumber(page) == InvalidOffsetNumber && + xldata->blkno == GIST_ROOT_BLKNO) + { /* * all links on non-leaf root page was deleted by vacuum full, so root * page becomes a leaf */ GistPageSetLeaf(page); + } GistPageGetOpaque(page)->rightlink = InvalidBlockNumber; PageSetLSN(page, lsn); @@ -158,30 +193,6 @@ gistRedoPageUpdateRecord(XLogRecPtr lsn, XLogRecord *record) UnlockReleaseBuffer(buffer); } -static void -gistRedoPageDeleteRecord(XLogRecPtr lsn, XLogRecord *record) -{ - gistxlogPageDelete *xldata = (gistxlogPageDelete *) XLogRecGetData(record); - Buffer buffer; - Page page; - - /* nothing else to do if page was backed up (and no info to do it with) */ - if (record->xl_info & XLR_BKP_BLOCK_1) - return; - - buffer = XLogReadBuffer(xldata->node, xldata->blkno, false); - if (!BufferIsValid(buffer)) - return; - - page = (Page) BufferGetPage(buffer); - GistPageSetDeleted(page); - - PageSetLSN(page, lsn); - PageSetTLI(page, ThisTimeLineID); - MarkBufferDirty(buffer); - UnlockReleaseBuffer(buffer); -} - static void decodePageSplitRecord(PageSplitRecord *decoded, XLogRecord *record) { @@ -218,15 +229,22 @@ gistRedoPageSplitRecord(XLogRecPtr lsn, XLogRecord *record) { gistxlogPageSplit *xldata = (gistxlogPageSplit *) XLogRecGetData(record); PageSplitRecord xlrec; + Buffer firstbuffer = InvalidBuffer; Buffer buffer; Page page; int i; bool isrootsplit = false; - if (BlockNumberIsValid(xldata->leftchild)) - gistRedoClearFollowRight(xldata->node, lsn, xldata->leftchild); decodePageSplitRecord(&xlrec, record); + /* + * We must hold lock on the first-listed page throughout the action, + * including while updating the left child page (if any). We can unlock + * remaining pages in the list as soon as they've been written, because + * there is no path for concurrent queries to reach those pages without + * first visiting the first-listed page. + */ + /* loop around all pages */ for (i = 0; i < xlrec.data->npage; i++) { @@ -275,8 +293,20 @@ gistRedoPageSplitRecord(XLogRecPtr lsn, XLogRecord *record) PageSetLSN(page, lsn); PageSetTLI(page, ThisTimeLineID); MarkBufferDirty(buffer); - UnlockReleaseBuffer(buffer); + + if (i == 0) + firstbuffer = buffer; + else + UnlockReleaseBuffer(buffer); } + + /* Fix follow-right data on left child page, if any */ + if (BlockNumberIsValid(xldata->leftchild)) + gistRedoClearFollowRight(lsn, record, 0, + xldata->node, xldata->leftchild); + + /* Finally, release lock on the first page */ + UnlockReleaseBuffer(firstbuffer); } static void @@ -286,6 +316,9 @@ gistRedoCreateIndex(XLogRecPtr lsn, XLogRecord *record) Buffer buffer; Page page; + /* Backup blocks are not used in create_index records */ + Assert(!(record->xl_info & XLR_BKP_BLOCK_MASK)); + buffer = XLogReadBuffer(*node, GIST_ROOT_BLKNO, true); Assert(BufferIsValid(buffer)); page = (Page) BufferGetPage(buffer); @@ -310,7 +343,6 @@ gist_redo(XLogRecPtr lsn, XLogRecord *record) * implement a similar optimization we have in b-tree, and remove killed * tuples outside VACUUM, we'll need to handle that here. */ - RestoreBkpBlocks(lsn, record, false); oldCxt = MemoryContextSwitchTo(opCtx); switch (info) @@ -318,9 +350,6 @@ gist_redo(XLogRecPtr lsn, XLogRecord *record) case XLOG_GIST_PAGE_UPDATE: gistRedoPageUpdateRecord(lsn, record); break; - case XLOG_GIST_PAGE_DELETE: - gistRedoPageDeleteRecord(lsn, record); - break; case XLOG_GIST_PAGE_SPLIT: gistRedoPageSplitRecord(lsn, record); break; @@ -349,14 +378,6 @@ out_gistxlogPageUpdate(StringInfo buf, gistxlogPageUpdate *xlrec) appendStringInfo(buf, "; block number %u", xlrec->blkno); } -static void -out_gistxlogPageDelete(StringInfo buf, gistxlogPageDelete *xlrec) -{ - appendStringInfo(buf, "page_delete: rel %u/%u/%u; blkno %u", - xlrec->node.spcNode, xlrec->node.dbNode, xlrec->node.relNode, - xlrec->blkno); -} - static void out_gistxlogPageSplit(StringInfo buf, gistxlogPageSplit *xlrec) { @@ -377,9 +398,6 @@ gist_desc(StringInfo buf, uint8 xl_info, char *rec) appendStringInfo(buf, "page_update: "); out_gistxlogPageUpdate(buf, (gistxlogPageUpdate *) rec); break; - case XLOG_GIST_PAGE_DELETE: - out_gistxlogPageDelete(buf, (gistxlogPageDelete *) rec); - break; case XLOG_GIST_PAGE_SPLIT: out_gistxlogPageSplit(buf, (gistxlogPageSplit *) rec); break; @@ -499,37 +517,30 @@ gistXLogUpdate(RelFileNode node, Buffer buffer, Buffer leftchildbuf) { XLogRecData *rdata; - gistxlogPageUpdate *xlrec; + gistxlogPageUpdate xlrec; int cur, i; XLogRecPtr recptr; - rdata = (XLogRecData *) palloc(sizeof(XLogRecData) * (4 + ituplen)); - xlrec = (gistxlogPageUpdate *) palloc(sizeof(gistxlogPageUpdate)); + rdata = (XLogRecData *) palloc(sizeof(XLogRecData) * (3 + ituplen)); - xlrec->node = node; - xlrec->blkno = BufferGetBlockNumber(buffer); - xlrec->ntodelete = ntodelete; - xlrec->leftchild = + xlrec.node = node; + xlrec.blkno = BufferGetBlockNumber(buffer); + xlrec.ntodelete = ntodelete; + xlrec.leftchild = BufferIsValid(leftchildbuf) ? BufferGetBlockNumber(leftchildbuf) : InvalidBlockNumber; - rdata[0].buffer = buffer; - rdata[0].buffer_std = true; - rdata[0].data = NULL; - rdata[0].len = 0; + rdata[0].data = (char *) &xlrec; + rdata[0].len = sizeof(gistxlogPageUpdate); + rdata[0].buffer = InvalidBuffer; rdata[0].next = &(rdata[1]); - rdata[1].data = (char *) xlrec; - rdata[1].len = sizeof(gistxlogPageUpdate); - rdata[1].buffer = InvalidBuffer; - rdata[1].next = &(rdata[2]); - - rdata[2].data = (char *) todelete; - rdata[2].len = sizeof(OffsetNumber) * ntodelete; - rdata[2].buffer = buffer; - rdata[2].buffer_std = true; + rdata[1].data = (char *) todelete; + rdata[1].len = sizeof(OffsetNumber) * ntodelete; + rdata[1].buffer = buffer; + rdata[1].buffer_std = true; - cur = 3; + cur = 2; /* new tuples */ for (i = 0; i < ituplen; i++) diff --git a/src/backend/access/heap/README.HOT b/src/backend/access/heap/README.HOT index f12cad44e5..7cbc6a1d7e 100644 --- a/src/backend/access/heap/README.HOT +++ b/src/backend/access/heap/README.HOT @@ -386,6 +386,12 @@ from the index, as well as ensuring that no one can see any inconsistent rows in a broken HOT chain (the first condition is stronger than the second). Finally, we can mark the index valid for searches. +Note that we do not need to set pg_index.indcheckxmin in this code path, +because we have outwaited any transactions that would need to avoid using +the index. (indcheckxmin is only needed because non-concurrent CREATE +INDEX doesn't want to wait; its stronger lock would create too much risk of +deadlock if it did.) + Limitations and Restrictions ---------------------------- diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index e32805716a..a1053e657c 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -222,6 +222,13 @@ heapgetpage(HeapScanDesc scan, BlockNumber page) scan->rs_cbuf = InvalidBuffer; } + /* + * Be sure to check for interrupts at least once per page. Checks at + * higher code levels won't be able to stop a seqscan that encounters + * many pages' worth of consecutive dead tuples. + */ + CHECK_FOR_INTERRUPTS(); + /* read page using selected strategy */ scan->rs_cbuf = ReadBufferExtended(scan->rs_rd, MAIN_FORKNUM, page, RBM_NORMAL, scan->rs_strategy); @@ -277,7 +284,8 @@ heapgetpage(HeapScanDesc scan, BlockNumber page) else valid = HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer); - CheckForSerializableConflictOut(valid, scan->rs_rd, &loctup, buffer); + CheckForSerializableConflictOut(valid, scan->rs_rd, &loctup, + buffer, snapshot); if (valid) scan->rs_vistuples[ntup++] = lineoff; @@ -472,7 +480,8 @@ heapgettup(HeapScanDesc scan, snapshot, scan->rs_cbuf); - CheckForSerializableConflictOut(valid, scan->rs_rd, tuple, scan->rs_cbuf); + CheckForSerializableConflictOut(valid, scan->rs_rd, tuple, + scan->rs_cbuf, snapshot); if (valid && key != NULL) HeapKeyTest(tuple, RelationGetDescr(scan->rs_rd), @@ -480,8 +489,6 @@ heapgettup(HeapScanDesc scan, if (valid) { - if (!scan->rs_relpredicatelocked) - PredicateLockTuple(scan->rs_rd, tuple); LockBuffer(scan->rs_cbuf, BUFFER_LOCK_UNLOCK); return; } @@ -749,16 +756,12 @@ heapgettup_pagemode(HeapScanDesc scan, nkeys, key, valid); if (valid) { - if (!scan->rs_relpredicatelocked) - PredicateLockTuple(scan->rs_rd, tuple); scan->rs_cindex = lineindex; return; } } else { - if (!scan->rs_relpredicatelocked) - PredicateLockTuple(scan->rs_rd, tuple); scan->rs_cindex = lineindex; return; } @@ -1225,13 +1228,26 @@ heap_beginscan_internal(Relation relation, Snapshot snapshot, scan->rs_strategy = NULL; /* set in initscan */ scan->rs_allow_strat = allow_strat; scan->rs_allow_sync = allow_sync; - scan->rs_relpredicatelocked = false; /* * we can use page-at-a-time mode if it's an MVCC-safe snapshot */ scan->rs_pageatatime = IsMVCCSnapshot(snapshot); + /* + * For a seqscan in a serializable transaction, acquire a predicate lock + * on the entire relation. This is required not only to lock all the + * matching tuples, but also to conflict with new insertions into the + * table. In an indexscan, we take page locks on the index pages covering + * the range specified in the scan qual, but in a heap scan there is + * nothing more fine-grained to lock. A bitmap scan is a different story, + * there we have already scanned the index and locked the index pages + * covering the predicate. But in that case we still have to lock any + * matching heap tuples. + */ + if (!is_bitmapscan) + PredicateLockRelation(relation, snapshot); + /* we only need to set this up once */ scan->rs_ctup.t_tableOid = RelationGetRelid(relation); @@ -1480,9 +1496,9 @@ heap_fetch(Relation relation, valid = HeapTupleSatisfiesVisibility(tuple, snapshot, buffer); if (valid) - PredicateLockTuple(relation, tuple); + PredicateLockTuple(relation, tuple, snapshot); - CheckForSerializableConflictOut(valid, relation, tuple, buffer); + CheckForSerializableConflictOut(valid, relation, tuple, buffer, snapshot); LockBuffer(buffer, BUFFER_LOCK_UNLOCK); @@ -1583,6 +1599,7 @@ heap_hot_search_buffer(ItemPointer tid, Relation relation, Buffer buffer, heapTuple.t_xc_node_id = PGXCNodeIdentifier; #endif heapTuple.t_self = *tid; + ItemPointerSetOffsetNumber(&heapTuple.t_self, offnum); /* * Shouldn't see a HEAP_ONLY tuple at chain start. @@ -1601,11 +1618,12 @@ heap_hot_search_buffer(ItemPointer tid, Relation relation, Buffer buffer, /* If it's visible per the snapshot, we must return it */ valid = HeapTupleSatisfiesVisibility(&heapTuple, snapshot, buffer); - CheckForSerializableConflictOut(valid, relation, &heapTuple, buffer); + CheckForSerializableConflictOut(valid, relation, &heapTuple, buffer, + snapshot); if (valid) { ItemPointerSetOffsetNumber(tid, offnum); - PredicateLockTuple(relation, &heapTuple); + PredicateLockTuple(relation, &heapTuple, snapshot); if (all_dead) *all_dead = false; return true; @@ -1763,7 +1781,7 @@ heap_get_latest_tid(Relation relation, * result candidate. */ valid = HeapTupleSatisfiesVisibility(&tp, snapshot, buffer); - CheckForSerializableConflictOut(valid, relation, &tp, buffer); + CheckForSerializableConflictOut(valid, relation, &tp, buffer, snapshot); if (valid) *tid = ctid; @@ -1927,17 +1945,22 @@ heap_insert(Relation relation, HeapTuple tup, CommandId cid, else heaptup = tup; + /* + * 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. + * + * 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. + */ + CheckForSerializableConflictIn(relation, NULL, InvalidBuffer); + /* Find buffer to insert this tuple into */ buffer = RelationGetBufferForTuple(relation, heaptup->t_len, InvalidBuffer, options, bistate); - /* - * We're about to do the actual insert -- check for conflict at the - * relation or buffer level first, to avoid possibly having to roll back - * work we've just done. - */ - CheckForSerializableConflictIn(relation, NULL, buffer); - /* NO EREPORT(ERROR) from here till changes are logged */ START_CRIT_SECTION(); @@ -4202,6 +4225,9 @@ heap_xlog_cleanup_info(XLogRecPtr lsn, XLogRecord *record) * conflict processing to occur before we begin index vacuum actions. see * vacuumlazy.c and also comments in btvacuumpage() */ + + /* Backup blocks are not used in cleanup_info records */ + Assert(!(record->xl_info & XLR_BKP_BLOCK_MASK)); } /* @@ -4234,10 +4260,15 @@ heap_xlog_clean(XLogRecPtr lsn, XLogRecord *record) ResolveRecoveryConflictWithSnapshot(xlrec->latestRemovedXid, xlrec->node); - RestoreBkpBlocks(lsn, record, true); - - if (record->xl_info & XLR_BKP_BLOCK_1) + /* + * If we have a full-page image, restore it (using a cleanup lock) and + * we're done. + */ + if (record->xl_info & XLR_BKP_BLOCK(0)) + { + (void) RestoreBackupBlock(lsn, record, 0, true, false); return; + } buffer = XLogReadBufferExtended(xlrec->node, MAIN_FORKNUM, xlrec->block, RBM_NORMAL); if (!BufferIsValid(buffer)) @@ -4303,15 +4334,16 @@ heap_xlog_freeze(XLogRecPtr lsn, XLogRecord *record) if (InHotStandby) ResolveRecoveryConflictWithSnapshot(cutoff_xid, xlrec->node); - RestoreBkpBlocks(lsn, record, false); - - if (record->xl_info & XLR_BKP_BLOCK_1) + /* If we have a full-page image, restore it and we're done */ + if (record->xl_info & XLR_BKP_BLOCK(0)) + { + (void) RestoreBackupBlock(lsn, record, 0, false, false); return; + } - buffer = XLogReadBufferExtended(xlrec->node, MAIN_FORKNUM, xlrec->block, RBM_NORMAL); + buffer = XLogReadBuffer(xlrec->node, xlrec->block, false); if (!BufferIsValid(buffer)) return; - LockBufferForCleanup(buffer); page = (Page) BufferGetPage(buffer); if (XLByteLE(lsn, PageGetLSN(page))) @@ -4352,6 +4384,9 @@ heap_xlog_newpage(XLogRecPtr lsn, XLogRecord *record) Buffer buffer; Page page; + /* Backup blocks are not used in newpage records */ + Assert(!(record->xl_info & XLR_BKP_BLOCK_MASK)); + /* * Note: the NEWPAGE log record is used for both heaps and indexes, so do * not do anything that assumes we are touching a heap. @@ -4404,8 +4439,12 @@ heap_xlog_delete(XLogRecPtr lsn, XLogRecord *record) FreeFakeRelcacheEntry(reln); } - if (record->xl_info & XLR_BKP_BLOCK_1) + /* If we have a full-page image, restore it and we're done */ + if (record->xl_info & XLR_BKP_BLOCK(0)) + { + (void) RestoreBackupBlock(lsn, record, 0, false, false); return; + } buffer = XLogReadBuffer(xlrec->target.node, blkno, false); if (!BufferIsValid(buffer)) @@ -4482,8 +4521,12 @@ heap_xlog_insert(XLogRecPtr lsn, XLogRecord *record) FreeFakeRelcacheEntry(reln); } - if (record->xl_info & XLR_BKP_BLOCK_1) + /* If we have a full-page image, restore it and we're done */ + if (record->xl_info & XLR_BKP_BLOCK(0)) + { + (void) RestoreBackupBlock(lsn, record, 0, false, false); return; + } if (record->xl_info & XLOG_HEAP_INIT_PAGE) { @@ -4565,9 +4608,10 @@ static void heap_xlog_update(XLogRecPtr lsn, XLogRecord *record, bool hot_update) { xl_heap_update *xlrec = (xl_heap_update *) XLogRecGetData(record); - Buffer buffer; bool samepage = (ItemPointerGetBlockNumber(&(xlrec->newtid)) == ItemPointerGetBlockNumber(&(xlrec->target.tid))); + Buffer obuffer, + nbuffer; Page page; OffsetNumber offnum; ItemId lp = NULL; @@ -4595,27 +4639,44 @@ heap_xlog_update(XLogRecPtr lsn, XLogRecord *record, bool hot_update) FreeFakeRelcacheEntry(reln); } - if (record->xl_info & XLR_BKP_BLOCK_1) + /* + * In normal operation, it is important to lock the two pages in + * page-number order, to avoid possible deadlocks against other update + * operations going the other way. However, during WAL replay there can + * be no other update happening, so we don't need to worry about that. But + * we *do* need to worry that we don't expose an inconsistent state to Hot + * Standby queries --- so the original page can't be unlocked before we've + * added the new tuple to the new page. + */ + + if (record->xl_info & XLR_BKP_BLOCK(0)) { + obuffer = RestoreBackupBlock(lsn, record, 0, false, true); if (samepage) - return; /* backup block covered both changes */ + { + /* backup block covered both changes, so we're done */ + UnlockReleaseBuffer(obuffer); + return; + } goto newt; } /* Deal with old tuple version */ - buffer = XLogReadBuffer(xlrec->target.node, - ItemPointerGetBlockNumber(&(xlrec->target.tid)), - false); - if (!BufferIsValid(buffer)) + obuffer = XLogReadBuffer(xlrec->target.node, + ItemPointerGetBlockNumber(&(xlrec->target.tid)), + false); + if (!BufferIsValid(obuffer)) goto newt; - page = (Page) BufferGetPage(buffer); + page = (Page) BufferGetPage(obuffer); if (XLByteLE(lsn, PageGetLSN(page))) /* changes are applied */ { - UnlockReleaseBuffer(buffer); if (samepage) + { + UnlockReleaseBuffer(obuffer); return; + } goto newt; } @@ -4653,11 +4714,14 @@ heap_xlog_update(XLogRecPtr lsn, XLogRecord *record, bool hot_update) * is already applied */ if (samepage) + { + nbuffer = obuffer; goto newsame; + } + PageSetLSN(page, lsn); PageSetTLI(page, ThisTimeLineID); - MarkBufferDirty(buffer); - UnlockReleaseBuffer(buffer); + MarkBufferDirty(obuffer); /* Deal with new tuple */ @@ -4675,31 +4739,42 @@ newt:; FreeFakeRelcacheEntry(reln); } - if (record->xl_info & XLR_BKP_BLOCK_2) + if (record->xl_info & XLR_BKP_BLOCK(1)) + { + (void) RestoreBackupBlock(lsn, record, 1, false, false); + if (BufferIsValid(obuffer)) + UnlockReleaseBuffer(obuffer); return; + } if (record->xl_info & XLOG_HEAP_INIT_PAGE) { - buffer = XLogReadBuffer(xlrec->target.node, - ItemPointerGetBlockNumber(&(xlrec->newtid)), - true); - Assert(BufferIsValid(buffer)); - page = (Page) BufferGetPage(buffer); + nbuffer = XLogReadBuffer(xlrec->target.node, + ItemPointerGetBlockNumber(&(xlrec->newtid)), + true); + Assert(BufferIsValid(nbuffer)); + page = (Page) BufferGetPage(nbuffer); - PageInit(page, BufferGetPageSize(buffer), 0); + PageInit(page, BufferGetPageSize(nbuffer), 0); } else { - buffer = XLogReadBuffer(xlrec->target.node, - ItemPointerGetBlockNumber(&(xlrec->newtid)), - false); - if (!BufferIsValid(buffer)) + nbuffer = XLogReadBuffer(xlrec->target.node, + ItemPointerGetBlockNumber(&(xlrec->newtid)), + false); + if (!BufferIsValid(nbuffer)) + { + if (BufferIsValid(obuffer)) + UnlockReleaseBuffer(obuffer); return; - page = (Page) BufferGetPage(buffer); + } + page = (Page) BufferGetPage(nbuffer); if (XLByteLE(lsn, PageGetLSN(page))) /* changes are applied */ { - UnlockReleaseBuffer(buffer); + UnlockReleaseBuffer(nbuffer); + if (BufferIsValid(obuffer)) + UnlockReleaseBuffer(obuffer); return; } } @@ -4744,11 +4819,14 @@ newsame:; PageSetLSN(page, lsn); PageSetTLI(page, ThisTimeLineID); - MarkBufferDirty(buffer); - UnlockReleaseBuffer(buffer); + MarkBufferDirty(nbuffer); + UnlockReleaseBuffer(nbuffer); + + if (BufferIsValid(obuffer) && obuffer != nbuffer) + UnlockReleaseBuffer(obuffer); /* - * If the page is running low on free space, update the FSM as well. + * If the new page is running low on free space, update the FSM as well. * Arbitrarily, our definition of "low" is less than 20%. We can't do much * better than that without knowing the fill-factor for the table. * @@ -4764,7 +4842,8 @@ newsame:; */ if (!hot_update && freespace < BLCKSZ / 5) XLogRecordPageWithFreeSpace(xlrec->target.node, - ItemPointerGetBlockNumber(&(xlrec->newtid)), freespace); + ItemPointerGetBlockNumber(&(xlrec->newtid)), + freespace); } static void @@ -4777,8 +4856,12 @@ heap_xlog_lock(XLogRecPtr lsn, XLogRecord *record) ItemId lp = NULL; HeapTupleHeader htup; - if (record->xl_info & XLR_BKP_BLOCK_1) + /* If we have a full-page image, restore it and we're done */ + if (record->xl_info & XLR_BKP_BLOCK(0)) + { + (void) RestoreBackupBlock(lsn, record, 0, false, false); return; + } buffer = XLogReadBuffer(xlrec->target.node, ItemPointerGetBlockNumber(&(xlrec->target.tid)), @@ -4836,8 +4919,12 @@ heap_xlog_inplace(XLogRecPtr lsn, XLogRecord *record) uint32 oldlen; uint32 newlen; - if (record->xl_info & XLR_BKP_BLOCK_1) + /* If we have a full-page image, restore it and we're done */ + if (record->xl_info & XLR_BKP_BLOCK(0)) + { + (void) RestoreBackupBlock(lsn, record, 0, false, false); return; + } buffer = XLogReadBuffer(xlrec->target.node, ItemPointerGetBlockNumber(&(xlrec->target.tid)), @@ -4886,8 +4973,6 @@ heap_redo(XLogRecPtr lsn, XLogRecord *record) * required. The ones in heap2 rmgr do. */ - RestoreBkpBlocks(lsn, record, false); - switch (info & XLOG_HEAP_OPMASK) { case XLOG_HEAP_INSERT: @@ -4921,11 +5006,6 @@ heap2_redo(XLogRecPtr lsn, XLogRecord *record) { uint8 info = record->xl_info & ~XLR_INFO_MASK; - /* - * Note that RestoreBkpBlocks() is called after conflict processing within - * each record type handling function. - */ - switch (info & XLOG_HEAP_OPMASK) { case XLOG_HEAP2_FREEZE: diff --git a/src/backend/access/heap/pruneheap.c b/src/backend/access/heap/pruneheap.c index 0cfa866108..1eec845471 100644 --- a/src/backend/access/heap/pruneheap.c +++ b/src/backend/access/heap/pruneheap.c @@ -173,7 +173,7 @@ heap_page_prune(Relation relation, Buffer buffer, TransactionId OldestXmin, * initialize the rest of our working state. */ prstate.new_prune_xid = InvalidTransactionId; - prstate.latestRemovedXid = InvalidTransactionId; + prstate.latestRemovedXid = *latestRemovedXid; prstate.nredirected = prstate.ndead = prstate.nunused = 0; memset(prstate.marked, 0, sizeof(prstate.marked)); diff --git a/src/backend/access/heap/tuptoaster.c b/src/backend/access/heap/tuptoaster.c index c028e2fd88..e7a1050290 100644 --- a/src/backend/access/heap/tuptoaster.c +++ b/src/backend/access/heap/tuptoaster.c @@ -74,7 +74,10 @@ do { \ static void toast_delete_datum(Relation rel, Datum value); -static Datum toast_save_datum(Relation rel, Datum value, int options); +static Datum toast_save_datum(Relation rel, Datum value, + struct varlena *oldexternal, int options); +static bool toastrel_valueid_exists(Relation toastrel, Oid valueid); +static bool toastid_valueid_exists(Oid toastrelid, Oid valueid); static struct varlena *toast_fetch_datum(struct varlena * attr); static struct varlena *toast_fetch_datum_slice(struct varlena * attr, int32 sliceoffset, int32 length); @@ -431,6 +434,7 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup, bool toast_oldisnull[MaxHeapAttributeNumber]; Datum toast_values[MaxHeapAttributeNumber]; Datum toast_oldvalues[MaxHeapAttributeNumber]; + struct varlena *toast_oldexternal[MaxHeapAttributeNumber]; int32 toast_sizes[MaxHeapAttributeNumber]; bool toast_free[MaxHeapAttributeNumber]; bool toast_delold[MaxHeapAttributeNumber]; @@ -466,6 +470,7 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup, * ---------- */ memset(toast_action, ' ', numAttrs * sizeof(char)); + memset(toast_oldexternal, 0, numAttrs * sizeof(struct varlena *)); memset(toast_free, 0, numAttrs * sizeof(bool)); memset(toast_delold, 0, numAttrs * sizeof(bool)); @@ -550,6 +555,7 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup, */ if (VARATT_IS_EXTERNAL(new_value)) { + toast_oldexternal[i] = new_value; if (att[i]->attstorage == 'p') new_value = heap_tuple_untoast_attr(new_value); else @@ -592,7 +598,6 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup, if (newtup->t_data->t_infomask & HEAP_HASOID) hoff += sizeof(Oid); hoff = MAXALIGN(hoff); - Assert(hoff == newtup->t_data->t_hoff); /* now convert to a limit on the tuple data size */ maxDataLen = TOAST_TUPLE_TARGET - hoff; @@ -676,7 +681,8 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup, { old_value = toast_values[i]; toast_action[i] = 'p'; - toast_values[i] = toast_save_datum(rel, toast_values[i], options); + toast_values[i] = toast_save_datum(rel, toast_values[i], + toast_oldexternal[i], options); if (toast_free[i]) pfree(DatumGetPointer(old_value)); toast_free[i] = true; @@ -726,7 +732,8 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup, i = biggest_attno; old_value = toast_values[i]; toast_action[i] = 'p'; - toast_values[i] = toast_save_datum(rel, toast_values[i], options); + toast_values[i] = toast_save_datum(rel, toast_values[i], + toast_oldexternal[i], options); if (toast_free[i]) pfree(DatumGetPointer(old_value)); toast_free[i] = true; @@ -839,7 +846,8 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup, i = biggest_attno; old_value = toast_values[i]; toast_action[i] = 'p'; - toast_values[i] = toast_save_datum(rel, toast_values[i], options); + toast_values[i] = toast_save_datum(rel, toast_values[i], + toast_oldexternal[i], options); if (toast_free[i]) pfree(DatumGetPointer(old_value)); toast_free[i] = true; @@ -856,29 +864,35 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup, { HeapTupleHeader olddata = newtup->t_data; HeapTupleHeader new_data; - int32 new_len; + int32 new_header_len; int32 new_data_len; + int32 new_tuple_len; /* - * Calculate the new size of the tuple. Header size should not - * change, but data size might. + * Calculate the new size of the tuple. + * + * Note: we used to assume here that the old tuple's t_hoff must equal + * the new_header_len value, but that was incorrect. The old tuple + * might have a smaller-than-current natts, if there's been an ALTER + * TABLE ADD COLUMN since it was stored; and that would lead to a + * different conclusion about the size of the null bitmap, or even + * whether there needs to be one at all. */ - new_len = offsetof(HeapTupleHeaderData, t_bits); + new_header_len = offsetof(HeapTupleHeaderData, t_bits); if (has_nulls) - new_len += BITMAPLEN(numAttrs); + new_header_len += BITMAPLEN(numAttrs); if (olddata->t_infomask & HEAP_HASOID) - new_len += sizeof(Oid); - new_len = MAXALIGN(new_len); - Assert(new_len == olddata->t_hoff); + new_header_len += sizeof(Oid); + new_header_len = MAXALIGN(new_header_len); new_data_len = heap_compute_data_size(tupleDesc, toast_values, toast_isnull); - new_len += new_data_len; + new_tuple_len = new_header_len + new_data_len; /* * Allocate and zero the space needed, and fill HeapTupleData fields. */ - result_tuple = (HeapTuple) palloc0(HEAPTUPLESIZE + new_len); - result_tuple->t_len = new_len; + result_tuple = (HeapTuple) palloc0(HEAPTUPLESIZE + new_tuple_len); + result_tuple->t_len = new_tuple_len; result_tuple->t_self = newtup->t_self; result_tuple->t_tableOid = newtup->t_tableOid; #ifdef PGXC @@ -889,14 +903,19 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup, result_tuple->t_data = new_data; /* - * Put the existing tuple header and the changed values into place + * Copy the existing tuple header, but adjust natts and t_hoff. */ - memcpy(new_data, olddata, olddata->t_hoff); + memcpy(new_data, olddata, offsetof(HeapTupleHeaderData, t_bits)); + HeapTupleHeaderSetNatts(new_data, numAttrs); + new_data->t_hoff = new_header_len; + if (olddata->t_infomask & HEAP_HASOID) + HeapTupleHeaderSetOid(new_data, HeapTupleHeaderGetOid(olddata)); + /* Copy over the data, and fill the null bitmap if needed */ heap_fill_tuple(tupleDesc, toast_values, toast_isnull, - (char *) new_data + olddata->t_hoff, + (char *) new_data + new_header_len, new_data_len, &(new_data->t_infomask), has_nulls ? new_data->t_bits : NULL); @@ -924,6 +943,90 @@ toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup, } +/* ---------- + * toast_flatten_tuple - + * + * "Flatten" a tuple to contain no out-of-line toasted fields. + * (This does not eliminate compressed or short-header datums.) + * ---------- + */ +HeapTuple +toast_flatten_tuple(HeapTuple tup, TupleDesc tupleDesc) +{ + HeapTuple new_tuple; + Form_pg_attribute *att = tupleDesc->attrs; + int numAttrs = tupleDesc->natts; + int i; + Datum toast_values[MaxTupleAttributeNumber]; + bool toast_isnull[MaxTupleAttributeNumber]; + bool toast_free[MaxTupleAttributeNumber]; + + /* + * Break down the tuple into fields. + */ + Assert(numAttrs <= MaxTupleAttributeNumber); + heap_deform_tuple(tup, tupleDesc, toast_values, toast_isnull); + + memset(toast_free, 0, numAttrs * sizeof(bool)); + + for (i = 0; i < numAttrs; i++) + { + /* + * Look at non-null varlena attributes + */ + if (!toast_isnull[i] && att[i]->attlen == -1) + { + struct varlena *new_value; + + new_value = (struct varlena *) DatumGetPointer(toast_values[i]); + if (VARATT_IS_EXTERNAL(new_value)) + { + new_value = toast_fetch_datum(new_value); + toast_values[i] = PointerGetDatum(new_value); + toast_free[i] = true; + } + } + } + + /* + * Form the reconfigured tuple. + */ + new_tuple = heap_form_tuple(tupleDesc, toast_values, toast_isnull); + + /* + * Be sure to copy the tuple's OID and identity fields. We also make a + * point of copying visibility info, just in case anybody looks at those + * fields in a syscache entry. + */ + if (tupleDesc->tdhasoid) + HeapTupleSetOid(new_tuple, HeapTupleGetOid(tup)); + + new_tuple->t_self = tup->t_self; + new_tuple->t_tableOid = tup->t_tableOid; +#ifdef PGXC + new_tuple->t_xc_node_id = tup->t_xc_node_id; +#endif + + new_tuple->t_data->t_choice = tup->t_data->t_choice; + new_tuple->t_data->t_ctid = tup->t_data->t_ctid; + new_tuple->t_data->t_infomask &= ~HEAP_XACT_MASK; + new_tuple->t_data->t_infomask |= + tup->t_data->t_infomask & HEAP_XACT_MASK; + new_tuple->t_data->t_infomask2 &= ~HEAP2_XACT_MASK; + new_tuple->t_data->t_infomask2 |= + tup->t_data->t_infomask2 & HEAP2_XACT_MASK; + + /* + * Free allocated temp values + */ + for (i = 0; i < numAttrs; i++) + if (toast_free[i]) + pfree(DatumGetPointer(toast_values[i])); + + return new_tuple; +} + + /* ---------- * toast_flatten_tuple_attribute - * @@ -943,8 +1046,9 @@ toast_flatten_tuple_attribute(Datum value, TupleDesc tupleDesc; HeapTupleHeader olddata; HeapTupleHeader new_data; - int32 new_len; + int32 new_header_len; int32 new_data_len; + int32 new_tuple_len; HeapTupleData tmptup; Form_pg_attribute *att; int numAttrs; @@ -1018,33 +1122,39 @@ toast_flatten_tuple_attribute(Datum value, } /* - * Calculate the new size of the tuple. Header size should not change, - * but data size might. + * Calculate the new size of the tuple. + * + * This should match the reconstruction code in toast_insert_or_update. */ - new_len = offsetof(HeapTupleHeaderData, t_bits); + new_header_len = offsetof(HeapTupleHeaderData, t_bits); if (has_nulls) - new_len += BITMAPLEN(numAttrs); + new_header_len += BITMAPLEN(numAttrs); if (olddata->t_infomask & HEAP_HASOID) - new_len += sizeof(Oid); - new_len = MAXALIGN(new_len); - Assert(new_len == olddata->t_hoff); + new_header_len += sizeof(Oid); + new_header_len = MAXALIGN(new_header_len); new_data_len = heap_compute_data_size(tupleDesc, toast_values, toast_isnull); - new_len += new_data_len; + new_tuple_len = new_header_len + new_data_len; - new_data = (HeapTupleHeader) palloc0(new_len); + new_data = (HeapTupleHeader) palloc0(new_tuple_len); /* - * Put the tuple header and the changed values into place + * Copy the existing tuple header, but adjust natts and t_hoff. */ - memcpy(new_data, olddata, olddata->t_hoff); + memcpy(new_data, olddata, offsetof(HeapTupleHeaderData, t_bits)); + HeapTupleHeaderSetNatts(new_data, numAttrs); + new_data->t_hoff = new_header_len; + if (olddata->t_infomask & HEAP_HASOID) + HeapTupleHeaderSetOid(new_data, HeapTupleHeaderGetOid(olddata)); - HeapTupleHeaderSetDatumLength(new_data, new_len); + /* Reset the datum length field, too */ + HeapTupleHeaderSetDatumLength(new_data, new_tuple_len); + /* Copy over the data, and fill the null bitmap if needed */ heap_fill_tuple(tupleDesc, toast_values, toast_isnull, - (char *) new_data + olddata->t_hoff, + (char *) new_data + new_header_len, new_data_len, &(new_data->t_infomask), has_nulls ? new_data->t_bits : NULL); @@ -1124,10 +1234,16 @@ toast_compress_datum(Datum value) * * Save one single datum into the secondary relation and return * a Datum reference for it. + * + * rel: the main relation we're working with (not the toast rel!) + * value: datum to be pushed to toast storage + * oldexternal: if not NULL, toast pointer previously representing the datum + * options: options to be passed to heap_insert() for toast rows * ---------- */ static Datum -toast_save_datum(Relation rel, Datum value, int options) +toast_save_datum(Relation rel, Datum value, + struct varlena *oldexternal, int options) { Relation toastrel; Relation toastidx; @@ -1206,11 +1322,82 @@ toast_save_datum(Relation rel, Datum value, int options) toast_pointer.va_toastrelid = RelationGetRelid(toastrel); /* - * Choose an unused OID within the toast table for this toast value. + * Choose an OID to use as the value ID for this toast value. + * + * Normally we just choose an unused OID within the toast table. But + * during table-rewriting operations where we are preserving an existing + * toast table OID, we want to preserve toast value OIDs too. So, if + * rd_toastoid is set and we had a prior external value from that same + * toast table, re-use its value ID. If we didn't have a prior external + * value (which is a corner case, but possible if the table's attstorage + * options have been changed), we have to pick a value ID that doesn't + * conflict with either new or existing toast value OIDs. */ - toast_pointer.va_valueid = GetNewOidWithIndex(toastrel, - RelationGetRelid(toastidx), - (AttrNumber) 1); + if (!OidIsValid(rel->rd_toastoid)) + { + /* normal case: just choose an unused OID */ + toast_pointer.va_valueid = + GetNewOidWithIndex(toastrel, + RelationGetRelid(toastidx), + (AttrNumber) 1); + } + else + { + /* rewrite case: check to see if value was in old toast table */ + toast_pointer.va_valueid = InvalidOid; + if (oldexternal != NULL) + { + struct varatt_external old_toast_pointer; + + Assert(VARATT_IS_EXTERNAL(oldexternal)); + /* Must copy to access aligned fields */ + VARATT_EXTERNAL_GET_POINTER(old_toast_pointer, oldexternal); + if (old_toast_pointer.va_toastrelid == rel->rd_toastoid) + { + /* This value came from the old toast table; reuse its OID */ + toast_pointer.va_valueid = old_toast_pointer.va_valueid; + + /* + * There is a corner case here: the table rewrite might have + * to copy both live and recently-dead versions of a row, and + * those versions could easily reference the same toast value. + * When we copy the second or later version of such a row, + * reusing the OID will mean we select an OID that's already + * in the new toast table. Check for that, and if so, just + * fall through without writing the data again. + * + * While annoying and ugly-looking, this is a good thing + * because it ensures that we wind up with only one copy of + * the toast value when there is only one copy in the old + * toast table. Before we detected this case, we'd have made + * multiple copies, wasting space; and what's worse, the + * copies belonging to already-deleted heap tuples would not + * be reclaimed by VACUUM. + */ + if (toastrel_valueid_exists(toastrel, + toast_pointer.va_valueid)) + { + /* Match, so short-circuit the data storage loop below */ + data_todo = 0; + } + } + } + if (toast_pointer.va_valueid == InvalidOid) + { + /* + * new value; must choose an OID that doesn't conflict in either + * old or new toast table + */ + do + { + toast_pointer.va_valueid = + GetNewOidWithIndex(toastrel, + RelationGetRelid(toastidx), + (AttrNumber) 1); + } while (toastid_valueid_exists(rel->rd_toastoid, + toast_pointer.va_valueid)); + } + } /* * Initialize constant parts of the tuple data @@ -1345,6 +1532,63 @@ toast_delete_datum(Relation rel, Datum value) } +/* ---------- + * toastrel_valueid_exists - + * + * Test whether a toast value with the given ID exists in the toast relation + * ---------- + */ +static bool +toastrel_valueid_exists(Relation toastrel, Oid valueid) +{ + bool result = false; + ScanKeyData toastkey; + SysScanDesc toastscan; + + /* + * Setup a scan key to find chunks with matching va_valueid + */ + ScanKeyInit(&toastkey, + (AttrNumber) 1, + BTEqualStrategyNumber, F_OIDEQ, + ObjectIdGetDatum(valueid)); + + /* + * Is there any such chunk? + */ + toastscan = systable_beginscan(toastrel, toastrel->rd_rel->reltoastidxid, + true, SnapshotToast, 1, &toastkey); + + if (systable_getnext(toastscan) != NULL) + result = true; + + systable_endscan(toastscan); + + return result; +} + +/* ---------- + * toastid_valueid_exists - + * + * As above, but work from toast rel's OID not an open relation + * ---------- + */ +static bool +toastid_valueid_exists(Oid toastrelid, Oid valueid) +{ + bool result; + Relation toastrel; + + toastrel = heap_open(toastrelid, AccessShareLock); + + result = toastrel_valueid_exists(toastrel, valueid); + + heap_close(toastrel, AccessShareLock); + + return result; +} + + /* ---------- * toast_fetch_datum - * diff --git a/src/backend/access/heap/visibilitymap.c b/src/backend/access/heap/visibilitymap.c index 58bab7df10..4b83315263 100644 --- a/src/backend/access/heap/visibilitymap.c +++ b/src/backend/access/heap/visibilitymap.c @@ -352,11 +352,15 @@ visibilitymap_truncate(Relation rel, BlockNumber nheapblocks) /* Clear out the unwanted bytes. */ MemSet(&map[truncByte + 1], 0, MAPSIZE - (truncByte + 1)); - /* + /*---- * Mask out the unwanted bits of the last remaining byte. * - * ((1 << 0) - 1) = 00000000 ((1 << 1) - 1) = 00000001 ... ((1 << 6) - - * 1) = 00111111 ((1 << 7) - 1) = 01111111 + * ((1 << 0) - 1) = 00000000 + * ((1 << 1) - 1) = 00000001 + * ... + * ((1 << 6) - 1) = 00111111 + * ((1 << 7) - 1) = 01111111 + *---- */ map[truncByte] &= (1 << truncBit) - 1; diff --git a/src/backend/access/index/genam.c b/src/backend/access/index/genam.c index db04e26a65..f03e88afdc 100644 --- a/src/backend/access/index/genam.c +++ b/src/backend/access/index/genam.c @@ -291,7 +291,16 @@ systable_beginscan(Relation heapRelation, } else { - sysscan->scan = heap_beginscan(heapRelation, snapshot, nkeys, key); + /* + * We disallow synchronized scans when forced to use a heapscan on a + * catalog. In most cases the desired rows are near the front, so + * that the unpredictable start point of a syncscan is a serious + * disadvantage; and there are no compensating advantages, because + * it's unlikely that such scans will occur in parallel. + */ + sysscan->scan = heap_beginscan_strat(heapRelation, snapshot, + nkeys, key, + true, false); sysscan->iscan = NULL; } diff --git a/src/backend/access/index/indexam.c b/src/backend/access/index/indexam.c index badff24541..9360407d1f 100644 --- a/src/backend/access/index/indexam.c +++ b/src/backend/access/index/indexam.c @@ -130,7 +130,7 @@ do { \ } while(0) static IndexScanDesc index_beginscan_internal(Relation indexRelation, - int nkeys, int norderbys); + int nkeys, int norderbys, Snapshot snapshot); /* ---------------------------------------------------------------- @@ -238,7 +238,7 @@ index_beginscan(Relation heapRelation, { IndexScanDesc scan; - scan = index_beginscan_internal(indexRelation, nkeys, norderbys); + scan = index_beginscan_internal(indexRelation, nkeys, norderbys, snapshot); /* * Save additional parameters into the scandesc. Everything else was set @@ -263,7 +263,7 @@ index_beginscan_bitmap(Relation indexRelation, { IndexScanDesc scan; - scan = index_beginscan_internal(indexRelation, nkeys, 0); + scan = index_beginscan_internal(indexRelation, nkeys, 0, snapshot); /* * Save additional parameters into the scandesc. Everything else was set @@ -279,7 +279,7 @@ index_beginscan_bitmap(Relation indexRelation, */ static IndexScanDesc index_beginscan_internal(Relation indexRelation, - int nkeys, int norderbys) + int nkeys, int norderbys, Snapshot snapshot) { IndexScanDesc scan; FmgrInfo *procedure; @@ -288,7 +288,7 @@ index_beginscan_internal(Relation indexRelation, GET_REL_PROCEDURE(ambeginscan); if (!(indexRelation->rd_am->ampredlocks)) - PredicateLockRelation(indexRelation); + PredicateLockRelation(indexRelation, snapshot); /* * We hold a reference count to the relcache entry throughout the scan. @@ -610,7 +610,8 @@ index_getnext(IndexScanDesc scan, ScanDirection direction) scan->xs_cbuf); CheckForSerializableConflictOut(valid, scan->heapRelation, - heapTuple, scan->xs_cbuf); + heapTuple, scan->xs_cbuf, + scan->xs_snapshot); if (valid) { @@ -632,7 +633,7 @@ index_getnext(IndexScanDesc scan, ScanDirection direction) else scan->xs_next_hot = InvalidOffsetNumber; - PredicateLockTuple(scan->heapRelation, heapTuple); + PredicateLockTuple(scan->heapRelation, heapTuple, scan->xs_snapshot); LockBuffer(scan->xs_cbuf, BUFFER_LOCK_UNLOCK); diff --git a/src/backend/access/nbtree/README b/src/backend/access/nbtree/README index 561ffbb9d4..6932c2b549 100644 --- a/src/backend/access/nbtree/README +++ b/src/backend/access/nbtree/README @@ -261,12 +261,14 @@ we need to be sure we don't miss or re-scan any items. A deleted page can only be reclaimed once there is no scan or search that has a reference to it; until then, it must stay in place with its -right-link undisturbed. We implement this by waiting until all -transactions that were running at the time of deletion are dead; which is +right-link undisturbed. We implement this by waiting until all active +snapshots and registered snapshots as of the deletion are gone; which is overly strong, but is simple to implement within Postgres. When marked dead, a deleted page is labeled with the next-transaction counter value. VACUUM can reclaim the page for re-use when this transaction number is -older than the oldest open transaction. +older than RecentGlobalXmin. As collateral damage, this implementation +also waits for running XIDs with no snapshots and for snapshots taken +until the next transaction to allocate an XID commits. Reclaiming a page doesn't actually change its state on disk --- we simply record it in the shared-memory free space map, from which it will be diff --git a/src/backend/access/nbtree/nbtpage.c b/src/backend/access/nbtree/nbtpage.c index 58f47e7b64..d782d55aa4 100644 --- a/src/backend/access/nbtree/nbtpage.c +++ b/src/backend/access/nbtree/nbtpage.c @@ -693,7 +693,7 @@ _bt_page_recyclable(Page page) */ opaque = (BTPageOpaque) PageGetSpecialPointer(page); if (P_ISDELETED(opaque) && - TransactionIdPrecedesOrEquals(opaque->btpo.xact, RecentXmin)) + TransactionIdPrecedes(opaque->btpo.xact, RecentGlobalXmin)) return true; return false; } @@ -811,11 +811,9 @@ _bt_delitems_delete(Relation rel, Buffer buf, PageIndexMultiDelete(page, itemnos, nitems); /* - * We can clear the vacuum cycle ID since this page has certainly been - * processed by the current vacuum scan. + * Unlike _bt_delitems_vacuum, we *must not* clear the vacuum cycle ID, + * because this is not called by VACUUM. */ - opaque = (BTPageOpaque) PageGetSpecialPointer(page); - opaque->btpo_cycleid = 0; /* * Mark the page as not containing any LP_DEAD items. This is not @@ -824,6 +822,7 @@ _bt_delitems_delete(Relation rel, Buffer buf, * true and it doesn't seem worth an additional page scan to check it. * Remember that BTP_HAS_GARBAGE is only a hint anyway. */ + opaque = (BTPageOpaque) PageGetSpecialPointer(page); opaque->btpo_flags &= ~BTP_HAS_GARBAGE; MarkBufferDirty(buf); @@ -1347,7 +1346,13 @@ _bt_pagedel(Relation rel, Buffer buf, BTStack stack) /* * Mark the page itself deleted. It can be recycled when all current - * transactions are gone. + * transactions are gone. Storing GetTopTransactionId() would work, but + * we're in VACUUM and would not otherwise have an XID. Having already + * updated links to the target, ReadNewTransactionId() suffices as an + * upper bound. Any scan having retained a now-stale link is advertising + * in its PGPROC an xmin less than or equal to the value we read here. It + * will continue to do so, holding back RecentGlobalXmin, for the duration + * of that scan. */ page = BufferGetPage(buf); opaque = (BTPageOpaque) PageGetSpecialPointer(page); diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c index 6a7ddd7db4..e761ee771a 100644 --- a/src/backend/access/nbtree/nbtree.c +++ b/src/backend/access/nbtree/nbtree.c @@ -29,7 +29,6 @@ #include "storage/indexfsm.h" #include "storage/ipc.h" #include "storage/lmgr.h" -#include "storage/predicate.h" #include "storage/smgr.h" #include "tcop/tcopprot.h" #include "utils/memutils.h" @@ -60,8 +59,8 @@ typedef struct IndexBulkDeleteCallback callback; void *callback_state; BTCycleId cycleid; - BlockNumber lastBlockVacuumed; /* last blkno reached by Vacuum scan */ - BlockNumber lastUsedPage; /* blkno of last non-recyclable page */ + BlockNumber lastBlockVacuumed; /* highest blkno actually vacuumed */ + BlockNumber lastBlockLocked; /* highest blkno we've cleanup-locked */ BlockNumber totFreePages; /* true total # of free pages */ MemoryContext pagedelcontext; } BTVacState; @@ -666,7 +665,7 @@ btvacuumscan(IndexVacuumInfo *info, IndexBulkDeleteResult *stats, vstate.callback_state = callback_state; vstate.cycleid = cycleid; vstate.lastBlockVacuumed = BTREE_METAPAGE; /* Initialise at first block */ - vstate.lastUsedPage = BTREE_METAPAGE; + vstate.lastBlockLocked = BTREE_METAPAGE; vstate.totFreePages = 0; /* Create a temporary memory context to run _bt_pagedel in */ @@ -722,27 +721,30 @@ btvacuumscan(IndexVacuumInfo *info, IndexBulkDeleteResult *stats, } /* - * InHotStandby we need to scan right up to the end of the index for - * correct locking, so we may need to write a WAL record for the final - * block in the index if it was not vacuumed. It's possible that VACUUMing - * has actually removed zeroed pages at the end of the index so we need to - * take care to issue the record for last actual block and not for the - * last block that was scanned. Ignore empty indexes. + * If the WAL is replayed in hot standby, the replay process needs to get + * cleanup locks on all index leaf pages, just as we've been doing here. + * However, we won't issue any WAL records about pages that have no items + * to be deleted. For pages between pages we've vacuumed, the replay code + * will take locks under the direction of the lastBlockVacuumed fields in + * the XLOG_BTREE_VACUUM WAL records. To cover pages after the last one + * we vacuum, we need to issue a dummy XLOG_BTREE_VACUUM WAL record + * against the last leaf page in the index, if that one wasn't vacuumed. */ if (XLogStandbyInfoActive() && - num_pages > 1 && vstate.lastBlockVacuumed < (num_pages - 1)) + vstate.lastBlockVacuumed < vstate.lastBlockLocked) { Buffer buf; /* - * We can't use _bt_getbuf() here because it always applies - * _bt_checkpage(), which will barf on an all-zero page. We want to - * recycle all-zero pages, not fail. Also, we want to use a - * nondefault buffer access strategy. + * The page should be valid, but we can't use _bt_getbuf() because we + * want to use a nondefault buffer access strategy. Since we aren't + * going to delete any items, getting cleanup lock again is probably + * overkill, but for consistency do that anyway. */ - buf = ReadBufferExtended(rel, MAIN_FORKNUM, num_pages - 1, RBM_NORMAL, - info->strategy); + buf = ReadBufferExtended(rel, MAIN_FORKNUM, vstate.lastBlockLocked, + RBM_NORMAL, info->strategy); LockBufferForCleanup(buf); + _bt_checkpage(rel, buf); _bt_delitems_vacuum(rel, buf, NULL, 0, vstate.lastBlockVacuumed); _bt_relbuf(rel, buf); } @@ -817,10 +819,6 @@ btvacuumpage(BTVacState *vstate, BlockNumber blkno, BlockNumber orig_blkno) } } - /* If the page is in use, update lastUsedPage */ - if (!_bt_page_recyclable(page) && vstate->lastUsedPage < blkno) - vstate->lastUsedPage = blkno; - /* Page is valid, see what to do with it */ if (_bt_page_recyclable(page)) { @@ -856,6 +854,13 @@ btvacuumpage(BTVacState *vstate, BlockNumber blkno, BlockNumber orig_blkno) LockBuffer(buf, BUFFER_LOCK_UNLOCK); LockBufferForCleanup(buf); + /* + * Remember highest leaf page number we've taken cleanup lock on; see + * notes in btvacuumscan + */ + if (blkno > vstate->lastBlockLocked) + vstate->lastBlockLocked = blkno; + /* * Check whether we need to recurse back to earlier pages. What we * are concerned about is a page split that happened since we started @@ -922,18 +927,26 @@ btvacuumpage(BTVacState *vstate, BlockNumber blkno, BlockNumber orig_blkno) */ if (ndeletable > 0) { - BlockNumber lastBlockVacuumed = BufferGetBlockNumber(buf); - - _bt_delitems_vacuum(rel, buf, deletable, ndeletable, vstate->lastBlockVacuumed); + /* + * Notice that the issued XLOG_BTREE_VACUUM WAL record includes an + * instruction to the replay code to get cleanup lock on all pages + * between the previous lastBlockVacuumed and this page. This + * ensures that WAL replay locks all leaf pages at some point. + * + * Since we can visit leaf pages out-of-order when recursing, + * replay might end up locking such pages an extra time, but it + * doesn't seem worth the amount of bookkeeping it'd take to avoid + * that. + */ + _bt_delitems_vacuum(rel, buf, deletable, ndeletable, + vstate->lastBlockVacuumed); /* - * Keep track of the block number of the lastBlockVacuumed, so we - * can scan those blocks as well during WAL replay. This then - * provides concurrency protection and allows btrees to be used - * while in recovery. + * Remember highest leaf page number we've issued a + * XLOG_BTREE_VACUUM WAL record for. */ - if (lastBlockVacuumed > vstate->lastBlockVacuumed) - vstate->lastBlockVacuumed = lastBlockVacuumed; + if (blkno > vstate->lastBlockVacuumed) + vstate->lastBlockVacuumed = blkno; stats->tuples_removed += ndeletable; /* must recompute maxoff */ diff --git a/src/backend/access/nbtree/nbtsearch.c b/src/backend/access/nbtree/nbtsearch.c index 2ce2bc2f00..5c00fac533 100644 --- a/src/backend/access/nbtree/nbtsearch.c +++ b/src/backend/access/nbtree/nbtsearch.c @@ -64,10 +64,7 @@ _bt_search(Relation rel, int keysz, ScanKey scankey, bool nextkey, /* If index is empty and access = BT_READ, no root page is created. */ if (!BufferIsValid(*bufP)) - { - PredicateLockRelation(rel); /* Nothing finer to lock exists. */ return (BTStack) NULL; - } /* Loop iterates once per level descended in the tree */ for (;;) @@ -92,11 +89,7 @@ _bt_search(Relation rel, int keysz, ScanKey scankey, bool nextkey, page = BufferGetPage(*bufP); opaque = (BTPageOpaque) PageGetSpecialPointer(page); if (P_ISLEAF(opaque)) - { - if (access == BT_READ) - PredicateLockPage(rel, BufferGetBlockNumber(*bufP)); break; - } /* * Find the appropriate item on the internal page, and get the child @@ -855,9 +848,16 @@ _bt_first(IndexScanDesc scan, ScanDirection dir) if (!BufferIsValid(buf)) { - /* Only get here if index is completely empty */ + /* + * We only get here if the index is completely empty. Lock relation + * because nothing finer to lock exists. + */ + PredicateLockRelation(rel, scan->xs_snapshot); return false; } + else + PredicateLockPage(rel, BufferGetBlockNumber(buf), + scan->xs_snapshot); /* initialize moreLeft/moreRight appropriately for scan direction */ if (ScanDirectionIsForward(dir)) @@ -1153,7 +1153,7 @@ _bt_steppage(IndexScanDesc scan, ScanDirection dir) opaque = (BTPageOpaque) PageGetSpecialPointer(page); if (!P_IGNORE(opaque)) { - PredicateLockPage(rel, blkno); + PredicateLockPage(rel, blkno, scan->xs_snapshot); /* see if there are any matches on this page */ /* note that this will clear moreRight if we can stop */ if (_bt_readpage(scan, dir, P_FIRSTDATAKEY(opaque))) @@ -1201,7 +1201,7 @@ _bt_steppage(IndexScanDesc scan, ScanDirection dir) opaque = (BTPageOpaque) PageGetSpecialPointer(page); if (!P_IGNORE(opaque)) { - PredicateLockPage(rel, BufferGetBlockNumber(so->currPos.buf)); + PredicateLockPage(rel, BufferGetBlockNumber(so->currPos.buf), scan->xs_snapshot); /* see if there are any matches on this page */ /* note that this will clear moreLeft if we can stop */ if (_bt_readpage(scan, dir, PageGetMaxOffsetNumber(page))) @@ -1363,11 +1363,7 @@ _bt_get_endpoint(Relation rel, uint32 level, bool rightmost) buf = _bt_gettrueroot(rel); if (!BufferIsValid(buf)) - { - /* empty index... */ - PredicateLockRelation(rel); /* Nothing finer to lock exists. */ return InvalidBuffer; - } page = BufferGetPage(buf); opaque = (BTPageOpaque) PageGetSpecialPointer(page); @@ -1444,13 +1440,16 @@ _bt_endpoint(IndexScanDesc scan, ScanDirection dir) if (!BufferIsValid(buf)) { - /* empty index... */ - PredicateLockRelation(rel); /* Nothing finer to lock exists. */ + /* + * Empty index. Lock the whole relation, as nothing finer to lock + * exists. + */ + PredicateLockRelation(rel, scan->xs_snapshot); so->currPos.buf = InvalidBuffer; return false; } - PredicateLockPage(rel, BufferGetBlockNumber(buf)); + PredicateLockPage(rel, BufferGetBlockNumber(buf), scan->xs_snapshot); page = BufferGetPage(buf); opaque = (BTPageOpaque) PageGetSpecialPointer(page); Assert(P_ISLEAF(opaque)); diff --git a/src/backend/access/nbtree/nbtutils.c b/src/backend/access/nbtree/nbtutils.c index 2e896a258f..f87eadcdec 100644 --- a/src/backend/access/nbtree/nbtutils.c +++ b/src/backend/access/nbtree/nbtutils.c @@ -325,8 +325,14 @@ _bt_preprocess_keys(IndexScanDesc scan) /* * If = has been specified, all other keys can be eliminated as - * redundant. In case of key > 2 && key == 1 we can set qual_ok - * to false and abandon further processing. + * redundant. If we have a case like key = 1 AND key > 2, we can + * set qual_ok to false and abandon further processing. + * + * We also have to deal with the case of "key IS NULL", which is + * unsatisfiable in combination with any other index condition. + * By the time we get here, that's been classified as an equality + * check, and we've rejected any combination of it with a regular + * equality condition; but not with other types of conditions. */ if (xform[BTEqualStrategyNumber - 1]) { @@ -339,6 +345,13 @@ _bt_preprocess_keys(IndexScanDesc scan) if (!chk || j == (BTEqualStrategyNumber - 1)) continue; + if (eq->sk_flags & SK_SEARCHNULL) + { + /* IS NULL is contradictory to anything else */ + so->qual_ok = false; + return; + } + if (_bt_compare_scankey_args(scan, chk, eq, chk, &test_result)) { diff --git a/src/backend/access/nbtree/nbtxlog.c b/src/backend/access/nbtree/nbtxlog.c index 2775ae6d29..f0fe8a3892 100644 --- a/src/backend/access/nbtree/nbtxlog.c +++ b/src/backend/access/nbtree/nbtxlog.c @@ -220,10 +220,9 @@ btree_xlog_insert(bool isleaf, bool ismeta, datalen -= sizeof(xl_btree_metadata); } - if ((record->xl_info & XLR_BKP_BLOCK_1) && !ismeta && isleaf) - return; /* nothing to do */ - - if (!(record->xl_info & XLR_BKP_BLOCK_1)) + if (record->xl_info & XLR_BKP_BLOCK(0)) + (void) RestoreBackupBlock(lsn, record, 0, false, false); + else { buffer = XLogReadBuffer(xlrec->target.node, ItemPointerGetBlockNumber(&(xlrec->target.tid)), @@ -251,6 +250,13 @@ btree_xlog_insert(bool isleaf, bool ismeta, } } + /* + * Note: in normal operation, we'd update the metapage while still holding + * lock on the page we inserted into. But during replay it's not + * necessary to hold that lock, since no other index updates can be + * happening concurrently, and readers will cope fine with following an + * obsolete link from the metapage. + */ if (ismeta) _bt_restore_meta(xlrec->target.node, lsn, md.root, md.level, @@ -292,7 +298,7 @@ btree_xlog_split(bool onleft, bool isroot, forget_matching_split(xlrec->node, downlink, false); /* Extract left hikey and its size (still assuming 16-bit alignment) */ - if (!(record->xl_info & XLR_BKP_BLOCK_1)) + if (!(record->xl_info & XLR_BKP_BLOCK(0))) { /* We assume 16-bit alignment is enough for IndexTupleSize */ left_hikey = (Item) datapos; @@ -312,7 +318,7 @@ btree_xlog_split(bool onleft, bool isroot, datalen -= sizeof(OffsetNumber); } - if (onleft && !(record->xl_info & XLR_BKP_BLOCK_1)) + if (onleft && !(record->xl_info & XLR_BKP_BLOCK(0))) { /* * We assume that 16-bit alignment is enough to apply IndexTupleSize @@ -325,7 +331,7 @@ btree_xlog_split(bool onleft, bool isroot, datalen -= newitemsz; } - /* Reconstruct right (new) sibling from scratch */ + /* Reconstruct right (new) sibling page from scratch */ rbuf = XLogReadBuffer(xlrec->node, xlrec->rightsib, true); Assert(BufferIsValid(rbuf)); rpage = (Page) BufferGetPage(rbuf); @@ -359,18 +365,21 @@ btree_xlog_split(bool onleft, bool isroot, /* don't release the buffer yet; we touch right page's first item below */ - /* - * Reconstruct left (original) sibling if needed. Note that this code - * ensures that the items remaining on the left page are in the correct - * item number order, but it does not reproduce the physical order they - * would have had. Is this worth changing? See also _bt_restore_page(). - */ - if (!(record->xl_info & XLR_BKP_BLOCK_1)) + /* Now reconstruct left (original) sibling page */ + if (record->xl_info & XLR_BKP_BLOCK(0)) + (void) RestoreBackupBlock(lsn, record, 0, false, false); + else { Buffer lbuf = XLogReadBuffer(xlrec->node, xlrec->leftsib, false); if (BufferIsValid(lbuf)) { + /* + * Note that this code ensures that the items remaining on the + * left page are in the correct item number order, but it does not + * reproduce the physical order they would have had. Is this + * worth changing? See also _bt_restore_page(). + */ Page lpage = (Page) BufferGetPage(lbuf); BTPageOpaque lopaque = (BTPageOpaque) PageGetSpecialPointer(lpage); @@ -434,8 +443,17 @@ btree_xlog_split(bool onleft, bool isroot, /* We no longer need the right buffer */ UnlockReleaseBuffer(rbuf); - /* Fix left-link of the page to the right of the new right sibling */ - if (xlrec->rnext != P_NONE && !(record->xl_info & XLR_BKP_BLOCK_2)) + /* + * Fix left-link of the page to the right of the new right sibling. + * + * Note: in normal operation, we do this while still holding lock on the + * two split pages. However, that's not necessary for correctness in WAL + * replay, because no other index update can be in progress, and readers + * will cope properly when following an obsolete left-link. + */ + if (record->xl_info & XLR_BKP_BLOCK(1)) + (void) RestoreBackupBlock(lsn, record, 1, false, false); + else if (xlrec->rnext != P_NONE) { Buffer buffer = XLogReadBuffer(xlrec->node, xlrec->rnext, false); @@ -465,36 +483,53 @@ btree_xlog_split(bool onleft, bool isroot, static void btree_xlog_vacuum(XLogRecPtr lsn, XLogRecord *record) { - xl_btree_vacuum *xlrec; + xl_btree_vacuum *xlrec = (xl_btree_vacuum *) XLogRecGetData(record); Buffer buffer; Page page; BTPageOpaque opaque; - xlrec = (xl_btree_vacuum *) XLogRecGetData(record); - /* - * If queries might be active then we need to ensure every block is + * If queries might be active then we need to ensure every leaf page is * unpinned between the lastBlockVacuumed and the current block, if there - * are any. This ensures that every block in the index is touched during - * VACUUM as required to ensure scans work correctly. + * are any. This prevents replay of the VACUUM from reaching the stage of + * removing heap tuples while there could still be indexscans "in flight" + * to those particular tuples (see nbtree/README). + * + * It might be worth checking if there are actually any backends running; + * if not, we could just skip this. + * + * Since VACUUM can visit leaf pages out-of-order, it might issue records + * with lastBlockVacuumed >= block; that's not an error, it just means + * nothing to do now. + * + * Note: since we touch all pages in the range, we will lock non-leaf + * pages, and also any empty (all-zero) pages that may be in the index. It + * doesn't seem worth the complexity to avoid that. But it's important + * that HotStandbyActiveInReplay() will not return true if the database + * isn't yet consistent; so we need not fear reading still-corrupt blocks + * here during crash recovery. */ - if (standbyState == STANDBY_SNAPSHOT_READY && - (xlrec->lastBlockVacuumed + 1) != xlrec->block) + if (HotStandbyActiveInReplay()) { - BlockNumber blkno = xlrec->lastBlockVacuumed + 1; + BlockNumber blkno; - for (; blkno < xlrec->block; blkno++) + for (blkno = xlrec->lastBlockVacuumed + 1; blkno < xlrec->block; blkno++) { /* + * We use RBM_NORMAL_NO_LOG mode because it's not an error + * condition to see all-zero pages. The original btvacuumpage + * scan would have skipped over all-zero pages, noting them in FSM + * but not bothering to initialize them just yet; so we mustn't + * throw an error here. (We could skip acquiring the cleanup lock + * if PageIsNew, but it's probably not worth the cycles to test.) + * * XXX we don't actually need to read the block, we just need to * confirm it is unpinned. If we had a special call into the * buffer manager we could optimise this so that if the block is * not in shared_buffers we confirm it as unpinned. - * - * Another simple optimization would be to check if there's any - * backends running; if not, we could just skip this. */ - buffer = XLogReadBufferExtended(xlrec->node, MAIN_FORKNUM, blkno, RBM_NORMAL); + buffer = XLogReadBufferExtended(xlrec->node, MAIN_FORKNUM, blkno, + RBM_NORMAL_NO_LOG); if (BufferIsValid(buffer)) { LockBufferForCleanup(buffer); @@ -504,13 +539,14 @@ btree_xlog_vacuum(XLogRecPtr lsn, XLogRecord *record) } /* - * If the block was restored from a full page image, nothing more to do. - * The RestoreBkpBlocks() call already pinned and took cleanup lock on it. - * XXX: Perhaps we should call RestoreBkpBlocks() *after* the loop above, - * to make the disk access more sequential. + * If we have a full-page image, restore it (using a cleanup lock) and + * we're done. */ - if (record->xl_info & XLR_BKP_BLOCK_1) + if (record->xl_info & XLR_BKP_BLOCK(0)) + { + (void) RestoreBackupBlock(lsn, record, 0, true, false); return; + } /* * Like in btvacuumpage(), we need to take a cleanup lock on every leaf @@ -565,9 +601,8 @@ btree_xlog_vacuum(XLogRecPtr lsn, XLogRecord *record) * XXX optimise later with something like XLogPrefetchBuffer() */ static TransactionId -btree_xlog_delete_get_latestRemovedXid(XLogRecord *record) +btree_xlog_delete_get_latestRemovedXid(xl_btree_delete *xlrec) { - xl_btree_delete *xlrec = (xl_btree_delete *) XLogRecGetData(record); OffsetNumber *unused; Buffer ibuffer, hbuffer; @@ -687,15 +722,35 @@ btree_xlog_delete_get_latestRemovedXid(XLogRecord *record) static void btree_xlog_delete(XLogRecPtr lsn, XLogRecord *record) { - xl_btree_delete *xlrec; + xl_btree_delete *xlrec = (xl_btree_delete *) XLogRecGetData(record); Buffer buffer; Page page; BTPageOpaque opaque; - if (record->xl_info & XLR_BKP_BLOCK_1) - return; + /* + * If we have any conflict processing to do, it must happen before we + * update the page. + * + * Btree delete records can conflict with standby queries. You might + * think that vacuum records would conflict as well, but we've handled + * that already. XLOG_HEAP2_CLEANUP_INFO records provide the highest xid + * cleaned by the vacuum of the heap and so we can resolve any conflicts + * just once when that arrives. After that we know that no conflicts + * exist from individual btree vacuum records on that index. + */ + if (InHotStandby) + { + TransactionId latestRemovedXid = btree_xlog_delete_get_latestRemovedXid(xlrec); - xlrec = (xl_btree_delete *) XLogRecGetData(record); + ResolveRecoveryConflictWithSnapshot(latestRemovedXid, xlrec->node); + } + + /* If we have a full-page image, restore it and we're done */ + if (record->xl_info & XLR_BKP_BLOCK(0)) + { + (void) RestoreBackupBlock(lsn, record, 0, false, false); + return; + } /* * We don't need to take a cleanup lock to apply these changes. See @@ -751,8 +806,18 @@ btree_xlog_delete_page(uint8 info, XLogRecPtr lsn, XLogRecord *record) leftsib = xlrec->leftblk; rightsib = xlrec->rightblk; + /* + * In normal operation, we would lock all the pages this WAL record + * touches before changing any of them. In WAL replay, it should be okay + * to lock just one page at a time, since no concurrent index updates can + * be happening, and readers should not care whether they arrive at the + * target page or not (since it's surely empty). + */ + /* parent page */ - if (!(record->xl_info & XLR_BKP_BLOCK_1)) + if (record->xl_info & XLR_BKP_BLOCK(0)) + (void) RestoreBackupBlock(lsn, record, 0, false, false); + else { buffer = XLogReadBuffer(xlrec->target.node, parent, false); if (BufferIsValid(buffer)) @@ -798,7 +863,9 @@ btree_xlog_delete_page(uint8 info, XLogRecPtr lsn, XLogRecord *record) } /* Fix left-link of right sibling */ - if (!(record->xl_info & XLR_BKP_BLOCK_2)) + if (record->xl_info & XLR_BKP_BLOCK(1)) + (void) RestoreBackupBlock(lsn, record, 1, false, false); + else { buffer = XLogReadBuffer(xlrec->target.node, rightsib, false); if (BufferIsValid(buffer)) @@ -822,7 +889,9 @@ btree_xlog_delete_page(uint8 info, XLogRecPtr lsn, XLogRecord *record) } /* Fix right-link of left sibling, if any */ - if (!(record->xl_info & XLR_BKP_BLOCK_3)) + if (record->xl_info & XLR_BKP_BLOCK(2)) + (void) RestoreBackupBlock(lsn, record, 2, false, false); + else { if (leftsib != P_NONE) { @@ -896,6 +965,9 @@ btree_xlog_newroot(XLogRecPtr lsn, XLogRecord *record) BTPageOpaque pageop; BlockNumber downlink = 0; + /* Backup blocks are not used in newroot records */ + Assert(!(record->xl_info & XLR_BKP_BLOCK_MASK)); + buffer = XLogReadBuffer(xlrec->node, xlrec->rootblk, true); Assert(BufferIsValid(buffer)); page = (Page) BufferGetPage(buffer); @@ -937,59 +1009,36 @@ btree_xlog_newroot(XLogRecPtr lsn, XLogRecord *record) forget_matching_split(xlrec->node, downlink, true); } - -void -btree_redo(XLogRecPtr lsn, XLogRecord *record) +static void +btree_xlog_reuse_page(XLogRecPtr lsn, XLogRecord *record) { - uint8 info = record->xl_info & ~XLR_INFO_MASK; + xl_btree_reuse_page *xlrec = (xl_btree_reuse_page *) XLogRecGetData(record); + /* + * Btree reuse_page records exist to provide a conflict point when we + * reuse pages in the index via the FSM. That's all they do though. + * + * latestRemovedXid was the page's btpo.xact. The btpo.xact < + * RecentGlobalXmin test in _bt_page_recyclable() conceptually mirrors the + * pgxact->xmin > limitXmin test in GetConflictingVirtualXIDs(). + * Consequently, one XID value achieves the same exclusion effect on + * master and standby. + */ if (InHotStandby) { - switch (info) - { - case XLOG_BTREE_DELETE: - - /* - * Btree delete records can conflict with standby queries. You - * might think that vacuum records would conflict as well, but - * we've handled that already. XLOG_HEAP2_CLEANUP_INFO records - * provide the highest xid cleaned by the vacuum of the heap - * and so we can resolve any conflicts just once when that - * arrives. After that any we know that no conflicts exist - * from individual btree vacuum records on that index. - */ - { - TransactionId latestRemovedXid = btree_xlog_delete_get_latestRemovedXid(record); - xl_btree_delete *xlrec = (xl_btree_delete *) XLogRecGetData(record); - - ResolveRecoveryConflictWithSnapshot(latestRemovedXid, xlrec->node); - } - break; - - case XLOG_BTREE_REUSE_PAGE: - - /* - * Btree reuse page records exist to provide a conflict point - * when we reuse pages in the index via the FSM. That's all it - * does though. - */ - { - xl_btree_reuse_page *xlrec = (xl_btree_reuse_page *) XLogRecGetData(record); + ResolveRecoveryConflictWithSnapshot(xlrec->latestRemovedXid, + xlrec->node); + } - ResolveRecoveryConflictWithSnapshot(xlrec->latestRemovedXid, xlrec->node); - } - return; + /* Backup blocks are not used in reuse_page records */ + Assert(!(record->xl_info & XLR_BKP_BLOCK_MASK)); +} - default: - break; - } - } - /* - * Vacuum needs to pin and take cleanup lock on every leaf page, a regular - * exclusive lock is enough for all other purposes. - */ - RestoreBkpBlocks(lsn, record, (info == XLOG_BTREE_VACUUM)); +void +btree_redo(XLogRecPtr lsn, XLogRecord *record) +{ + uint8 info = record->xl_info & ~XLR_INFO_MASK; switch (info) { @@ -1029,7 +1078,7 @@ btree_redo(XLogRecPtr lsn, XLogRecord *record) btree_xlog_newroot(lsn, record); break; case XLOG_BTREE_REUSE_PAGE: - /* Handled above before restoring bkp block */ + btree_xlog_reuse_page(lsn, record); break; default: elog(PANIC, "btree_redo: unknown op code %u", info); diff --git a/src/backend/access/transam/README b/src/backend/access/transam/README index eaac1393b8..c4dfa11c56 100644 --- a/src/backend/access/transam/README +++ b/src/backend/access/transam/README @@ -438,8 +438,9 @@ critical section.) 4. Mark the shared buffer(s) as dirty with MarkBufferDirty(). (This must happen before the WAL record is inserted; see notes in SyncOneBuffer().) -5. Build a WAL log record and pass it to XLogInsert(); then update the page's -LSN and TLI using the returned XLOG location. For instance, +5. If the relation requires WAL-logging, build a WAL log record and pass it +to XLogInsert(); then update the page's LSN and TLI using the returned XLOG +location. For instance, recptr = XLogInsert(rmgr_id, info, rdata); @@ -466,9 +467,9 @@ which buffers were handled that way --- otherwise they may be misled about what the XLOG record actually contains. XLOG records that describe multi-page changes therefore require some care to design: you must be certain that you know what data is indicated by each "BKP" bit. An example of the trickiness -is that in a HEAP_UPDATE record, BKP(1) normally is associated with the source -page and BKP(2) is associated with the destination page --- but if these are -the same page, only BKP(1) would have been set. +is that in a HEAP_UPDATE record, BKP(0) normally is associated with the source +page and BKP(1) is associated with the destination page --- but if these are +the same page, only BKP(0) would have been set. For this reason as well as the risk of deadlocking on buffer locks, it's best to design WAL records so that they reflect small atomic actions involving just @@ -498,13 +499,20 @@ incrementally update the page, the rdata array *must* mention the buffer ID at least once; otherwise there is no defense against torn-page problems. The standard replay-routine pattern for this case is - if (record->xl_info & XLR_BKP_BLOCK_n) - << do nothing, page was rewritten from logged copy >>; + if (record->xl_info & XLR_BKP_BLOCK(N)) + { + /* apply the change from the full-page image */ + (void) RestoreBackupBlock(lsn, record, N, false, false); + return; + } reln = XLogOpenRelation(rnode); buffer = XLogReadBuffer(reln, blkno, false); if (!BufferIsValid(buffer)) - << do nothing, page has been deleted >>; + { + /* page has been deleted, so we need do nothing */ + return; + } page = (Page) BufferGetPage(buffer); if (XLByteLE(lsn, PageGetLSN(page))) @@ -522,13 +530,42 @@ The standard replay-routine pattern for this case is UnlockReleaseBuffer(buffer); As noted above, for a multi-page update you need to be able to determine -which XLR_BKP_BLOCK_n flag applies to each page. If a WAL record reflects +which XLR_BKP_BLOCK(N) flag applies to each page. If a WAL record reflects a combination of fully-rewritable and incremental updates, then the rewritable -pages don't count for the XLR_BKP_BLOCK_n numbering. (XLR_BKP_BLOCK_n is -associated with the n'th distinct buffer ID seen in the "rdata" array, and +pages don't count for the XLR_BKP_BLOCK(N) numbering. (XLR_BKP_BLOCK(N) is +associated with the N'th distinct buffer ID seen in the "rdata" array, and per the above discussion, fully-rewritable buffers shouldn't be mentioned in "rdata".) +When replaying a WAL record that describes changes on multiple pages, you +must be careful to lock the pages properly to prevent concurrent Hot Standby +queries from seeing an inconsistent state. If this requires that two +or more buffer locks be held concurrently, the coding pattern shown above +is too simplistic, since it assumes the routine can exit as soon as it's +known the current page requires no modification. Instead, you might have +something like + + if (record->xl_info & XLR_BKP_BLOCK(0)) + { + /* apply the change from the full-page image */ + buffer0 = RestoreBackupBlock(lsn, record, 0, false, true); + } + else + { + buffer0 = XLogReadBuffer(rnode, blkno, false); + if (BufferIsValid(buffer0)) + { + ... apply the change if not already done ... + MarkBufferDirty(buffer0); + } + } + + ... similarly apply the changes for remaining pages ... + + /* and now we can release the lock on the first page */ + if (BufferIsValid(buffer0)) + UnlockReleaseBuffer(buffer0); + Due to all these constraints, complex changes (such as a multilevel index insertion) normally need to be described by a series of atomic-action WAL records. What do you do if the intermediate states are not self-consistent? diff --git a/src/backend/access/transam/clog.c b/src/backend/access/transam/clog.c index 606f5f2ba9..9e32582e3c 100644 --- a/src/backend/access/transam/clog.c +++ b/src/backend/access/transam/clog.c @@ -25,7 +25,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/backend/access/transam/clog.c * @@ -501,6 +501,25 @@ StartupCLOG(void) */ ClogCtl->shared->latest_page_number = pageno; + LWLockRelease(CLogControlLock); +} + +/* + * This must be called ONCE at the end of startup/recovery. + */ +void +TrimCLOG(void) +{ + TransactionId xid = ShmemVariableCache->nextXid; + int pageno = TransactionIdToPage(xid); + + LWLockAcquire(CLogControlLock, LW_EXCLUSIVE); + + /* + * Re-Initialize our idea of the latest page number. + */ + ClogCtl->shared->latest_page_number = pageno; + /* * Zero out the remainder of the current clog page. Under normal * circumstances it should be zeroes already, but it seems at least @@ -622,7 +641,7 @@ ExtendCLOG(TransactionId newestXact) #endif /* Zero the page and make an XLOG entry about it */ - ZeroCLOGPage(pageno, !InRecovery); + ZeroCLOGPage(pageno, true); LWLockRelease(CLogControlLock); } diff --git a/src/backend/access/transam/gtm.c b/src/backend/access/transam/gtm.c index 27acfb202d..04379cff12 100644 --- a/src/backend/access/transam/gtm.c +++ b/src/backend/access/transam/gtm.c @@ -1,8 +1,8 @@ /*------------------------------------------------------------------------- * * gtm.c - * - * Module interfacing with GTM + * + * Module interfacing with GTM * * *------------------------------------------------------------------------- @@ -26,6 +26,9 @@ extern bool FirstSnapshotSet; static GTM_Conn *conn; +/* Used to check if needed to commit/abort at datanodes */ +GlobalTransactionId currentGxid = InvalidGlobalTransactionId; + bool IsGTMConnected() { @@ -123,7 +126,7 @@ BeginTranGTM(GTM_Timestamp *timestamp) if (conn) xid = begin_transaction(conn, GTM_ISOLATION_RC, timestamp); - /* If something went wrong (timeout), try and reset GTM connection + /* If something went wrong (timeout), try and reset GTM connection * and retry. This is safe at the beginning of a transaction. */ if (!TransactionIdIsValid(xid)) @@ -133,6 +136,7 @@ BeginTranGTM(GTM_Timestamp *timestamp) if (conn) xid = begin_transaction(conn, GTM_ISOLATION_RC, timestamp); } + currentGxid = xid; return xid; } @@ -157,21 +161,23 @@ BeginTranAutovacuumGTM(void) if (conn) xid = begin_transaction_autovacuum(conn, GTM_ISOLATION_RC); } + currentGxid = xid; return xid; } int CommitTranGTM(GlobalTransactionId gxid) { - int ret; + int ret = -1; if (!GlobalTransactionIdIsValid(gxid)) return 0; CheckConnection(); - ret = commit_transaction(conn, gxid); + if (conn) + ret = commit_transaction(conn, gxid); /* - * If something went wrong (timeout), try and reset GTM connection. + * If something went wrong (timeout), try and reset GTM connection. * We will close the transaction locally anyway, and closing GTM will force * it to be closed on GTM. */ @@ -185,6 +191,7 @@ CommitTranGTM(GlobalTransactionId gxid) if (IsAutoVacuumWorkerProcess() || IsAutoVacuumLauncherProcess()) CloseGTM(); + currentGxid = InvalidGlobalTransactionId; return ret; } @@ -195,12 +202,13 @@ CommitTranGTM(GlobalTransactionId gxid) int CommitPreparedTranGTM(GlobalTransactionId gxid, GlobalTransactionId prepared_gxid) { - int ret = 0; + int ret = -1; if (!GlobalTransactionIdIsValid(gxid) || !GlobalTransactionIdIsValid(prepared_gxid)) return ret; CheckConnection(); - ret = commit_prepared_transaction(conn, gxid, prepared_gxid); + if (conn) + ret = commit_prepared_transaction(conn, gxid, prepared_gxid); /* * If something went wrong (timeout), try and reset GTM connection. @@ -213,6 +221,7 @@ CommitPreparedTranGTM(GlobalTransactionId gxid, GlobalTransactionId prepared_gxi CloseGTM(); InitGTM(); } + currentGxid = InvalidGlobalTransactionId; return ret; } @@ -229,7 +238,7 @@ RollbackTranGTM(GlobalTransactionId gxid) ret = abort_transaction(conn, gxid); /* - * If something went wrong (timeout), try and reset GTM connection. + * If something went wrong (timeout), try and reset GTM connection. * We will abort the transaction locally anyway, and closing GTM will force * it to end on GTM. */ @@ -238,6 +247,8 @@ RollbackTranGTM(GlobalTransactionId gxid) CloseGTM(); InitGTM(); } + + currentGxid = InvalidGlobalTransactionId; return ret; } @@ -246,13 +257,14 @@ StartPreparedTranGTM(GlobalTransactionId gxid, char *gid, char *nodestring) { - int ret = 0; + int ret = -1; if (!GlobalTransactionIdIsValid(gxid)) return 0; CheckConnection(); - ret = start_prepared_transaction(conn, gxid, gid, nodestring); + if (conn) + ret = start_prepared_transaction(conn, gxid, gid, nodestring); /* * If something went wrong (timeout), try and reset GTM connection. @@ -271,15 +283,16 @@ StartPreparedTranGTM(GlobalTransactionId gxid, int PrepareTranGTM(GlobalTransactionId gxid) { - int ret; + int ret = -1; if (!GlobalTransactionIdIsValid(gxid)) return 0; CheckConnection(); - ret = prepare_transaction(conn, gxid); + if (conn) + ret = prepare_transaction(conn, gxid); /* - * If something went wrong (timeout), try and reset GTM connection. + * If something went wrong (timeout), try and reset GTM connection. * We will close the transaction locally anyway, and closing GTM will force * it to be closed on GTM. */ @@ -288,6 +301,7 @@ PrepareTranGTM(GlobalTransactionId gxid) CloseGTM(); InitGTM(); } + currentGxid = InvalidGlobalTransactionId; return ret; } @@ -298,11 +312,12 @@ GetGIDDataGTM(char *gid, GlobalTransactionId *prepared_gxid, char **nodestring) { - int ret = 0; + int ret = -1; CheckConnection(); - ret = get_gid_data(conn, GTM_ISOLATION_RC, gid, gxid, - prepared_gxid, nodestring); + if (conn) + ret = get_gid_data(conn, GTM_ISOLATION_RC, gid, gxid, + prepared_gxid, nodestring); /* * If something went wrong (timeout), try and reset GTM connection. @@ -343,7 +358,7 @@ CreateSequenceGTM(char *seqname, GTM_Sequence increment, GTM_Sequence minval, { GTM_SequenceKeyData seqkey; CheckConnection(); - seqkey.gsk_keylen = strlen(seqname); + seqkey.gsk_keylen = strlen(seqname) + 1; seqkey.gsk_key = seqname; return conn ? open_sequence(conn, &seqkey, increment, minval, maxval, startval, cycle) : 0; @@ -358,34 +373,12 @@ AlterSequenceGTM(char *seqname, GTM_Sequence increment, GTM_Sequence minval, { GTM_SequenceKeyData seqkey; CheckConnection(); - seqkey.gsk_keylen = strlen(seqname); + seqkey.gsk_keylen = strlen(seqname) + 1; seqkey.gsk_key = seqname; return conn ? alter_sequence(conn, &seqkey, increment, minval, maxval, startval, lastval, cycle, is_restart) : 0; } -/* - * get the current sequence value - */ - -GTM_Sequence -GetCurrentValGTM(char *seqname) -{ - GTM_Sequence ret = -1; - GTM_SequenceKeyData seqkey; - CheckConnection(); - seqkey.gsk_keylen = strlen(seqname); - seqkey.gsk_key = seqname; - - if (conn) - ret = get_current(conn, &seqkey); - if (ret < 0) - { - CloseGTM(); - InitGTM(); - } - return ret; -} /* * Get the next sequence value @@ -396,7 +389,7 @@ GetNextValGTM(char *seqname) GTM_Sequence ret = -1; GTM_SequenceKeyData seqkey; CheckConnection(); - seqkey.gsk_keylen = strlen(seqname); + seqkey.gsk_keylen = strlen(seqname) + 1; seqkey.gsk_key = seqname; if (conn) @@ -417,7 +410,7 @@ SetValGTM(char *seqname, GTM_Sequence nextval, bool iscalled) { GTM_SequenceKeyData seqkey; CheckConnection(); - seqkey.gsk_keylen = strlen(seqname); + seqkey.gsk_keylen = strlen(seqname) + 1; seqkey.gsk_key = seqname; return conn ? set_val(conn, &seqkey, nextval, iscalled) : -1; @@ -435,7 +428,7 @@ DropSequenceGTM(char *name, GTM_SequenceKeyType type) { GTM_SequenceKeyData seqkey; CheckConnection(); - seqkey.gsk_keylen = strlen(name); + seqkey.gsk_keylen = strlen(name) + 1; seqkey.gsk_key = name; seqkey.gsk_type = type; @@ -450,9 +443,9 @@ RenameSequenceGTM(char *seqname, const char *newseqname) { GTM_SequenceKeyData seqkey, newseqkey; CheckConnection(); - seqkey.gsk_keylen = strlen(seqname); + seqkey.gsk_keylen = strlen(seqname) + 1; seqkey.gsk_key = seqname; - newseqkey.gsk_keylen = strlen(newseqname); + newseqkey.gsk_keylen = strlen(newseqname) + 1; newseqkey.gsk_key = (char *) newseqname; return conn ? rename_sequence(conn, &seqkey, &newseqkey) : -1; diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c index bb3afd6000..9e4ecdc3bb 100644 --- a/src/backend/access/transam/multixact.c +++ b/src/backend/access/transam/multixact.c @@ -827,6 +827,10 @@ GetNewMultiXactId(int nxids, MultiXactOffset *offset) /* MultiXactIdSetOldestMember() must have been called already */ Assert(MultiXactIdIsValid(OldestMemberMXactId[MyBackendId])); + /* safety check, we should never get this far in a HS slave */ + if (RecoveryInProgress()) + elog(ERROR, "cannot assign MultiXactIds during recovery"); + LWLockAcquire(MultiXactGenLock, LW_EXCLUSIVE); /* Handle wraparound of the nextMXact counter */ @@ -914,6 +918,10 @@ GetMultiXactIdMembers(MultiXactId multi, TransactionId **xids) Assert(MultiXactIdIsValid(multi)); + /* safety check, we should never get this far in a HS slave */ + if (RecoveryInProgress()) + elog(ERROR, "cannot GetMultiXactIdMembers() during recovery"); + /* See if the MultiXactId is in the local cache */ length = mXactCacheGetById(multi, xids); if (length >= 0) @@ -1513,14 +1521,37 @@ ZeroMultiXactMemberPage(int pageno, bool writeXlog) * This must be called ONCE during postmaster or standalone-backend startup. * * StartupXLOG has already established nextMXact/nextOffset by calling - * MultiXactSetNextMXact and/or MultiXactAdvanceNextMXact. Note that we - * may already have replayed WAL data into the SLRU files. - * - * We don't need any locks here, really; the SLRU locks are taken - * only because slru.c expects to be called with locks held. + * MultiXactSetNextMXact and/or MultiXactAdvanceNextMXact, but we haven't yet + * replayed WAL. */ void StartupMultiXact(void) +{ + MultiXactId multi = MultiXactState->nextMXact; + MultiXactOffset offset = MultiXactState->nextOffset; + int pageno; + + /* + * Initialize our idea of the latest page number. + */ + pageno = MultiXactIdToOffsetPage(multi); + MultiXactOffsetCtl->shared->latest_page_number = pageno; + + /* + * Initialize our idea of the latest page number. + */ + pageno = MXOffsetToMemberPage(offset); + MultiXactMemberCtl->shared->latest_page_number = pageno; +} + +/* + * This must be called ONCE at the end of startup/recovery. + * + * We don't need any locks here, really; the SLRU locks are taken only because + * slru.c expects to be called with locks held. + */ +void +TrimMultiXact(void) { MultiXactId multi = MultiXactState->nextMXact; MultiXactOffset offset = MultiXactState->nextOffset; @@ -1531,7 +1562,7 @@ StartupMultiXact(void) LWLockAcquire(MultiXactOffsetControlLock, LW_EXCLUSIVE); /* - * Initialize our idea of the latest page number. + * (Re-)Initialize our idea of the latest page number. */ pageno = MultiXactIdToOffsetPage(multi); MultiXactOffsetCtl->shared->latest_page_number = pageno; @@ -1561,14 +1592,14 @@ StartupMultiXact(void) LWLockAcquire(MultiXactMemberControlLock, LW_EXCLUSIVE); /* - * Initialize our idea of the latest page number. + * (Re-)Initialize our idea of the latest page number. */ pageno = MXOffsetToMemberPage(offset); MultiXactMemberCtl->shared->latest_page_number = pageno; /* * Zero out the remainder of the current members page. See notes in - * StartupCLOG() for motivation. + * TrimCLOG() for motivation. */ entryno = MXOffsetToMemberEntry(offset); if (entryno != 0) @@ -1640,14 +1671,9 @@ CheckPointMultiXact(void) /* * Truncate the SLRU files. This could be done at any time, but - * checkpoint seems a reasonable place for it. There is one exception: if - * we are called during xlog recovery, then shared->latest_page_number - * isn't valid (because StartupMultiXact hasn't been called yet) and so - * SimpleLruTruncate would get confused. It seems best not to risk - * removing any data during recovery anyway, so don't truncate. + * checkpoint seems a reasonable place for it. */ - if (!RecoveryInProgress()) - TruncateMultiXact(); + TruncateMultiXact(); TRACE_POSTGRESQL_MULTIXACT_CHECKPOINT_DONE(true); } diff --git a/src/backend/access/transam/subtrans.c b/src/backend/access/transam/subtrans.c index 10dae9cea7..a5b68cea73 100644 --- a/src/backend/access/transam/subtrans.c +++ b/src/backend/access/transam/subtrans.c @@ -21,7 +21,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/backend/access/transam/subtrans.c * diff --git a/src/backend/access/transam/transam.c b/src/backend/access/transam/transam.c index 33dcec425a..7df7febeb0 100644 --- a/src/backend/access/transam/transam.c +++ b/src/backend/access/transam/transam.c @@ -333,7 +333,7 @@ TransactionIdPrecedes(TransactionId id1, TransactionId id2) { /* * If either ID is a permanent XID then we can just do unsigned - * comparison. If both are normal, do a modulo-2^31 comparison. + * comparison. If both are normal, do a modulo-2^32 comparison. */ int32 diff; diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c index 1d99fd88bf..a2d1ee8902 100644 --- a/src/backend/access/transam/twophase.c +++ b/src/backend/access/transam/twophase.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * IDENTIFICATION * src/backend/access/transam/twophase.c @@ -408,6 +408,9 @@ LockGXact(const char *gid, Oid user) { int i; +#ifdef PGXC + GetTopTransactionId(); +#endif LWLockAcquire(TwoPhaseStateLock, LW_EXCLUSIVE); for (i = 0; i < TwoPhaseState->numPrepXacts; i++) @@ -461,7 +464,7 @@ LockGXact(const char *gid, Oid user) #ifdef PGXC /* - * In PGXC, if xc_maintenance_mode is on, COMMIT/ROLLBACK PREPARED may be issued to the + * In PGXC, if xc_maintenance_mode is on, COMMIT/ROLLBACK PREPARED may be issued to the * node where the given xid does not exist. */ if (!xc_maintenance_mode) @@ -1257,15 +1260,6 @@ StandbyTransactionIdIsPrepared(TransactionId xid) /* * FinishPreparedTransaction: execute COMMIT PREPARED or ROLLBACK PREPARED - * - *(The following comment is only for Postgres-XC) - * - * With regard to xc_maintenance_mode related to pgxc_clean, COMMIT/ROLLBACK PREPARED - * might be called in the node where the transaction with given gid does not exist. - * This may happen at the originating coordinator. In this case, we should - * skip to handle two-phase file. - * - * Please note that we don't have to write commit/abort log to WAL in this case. */ void FinishPreparedTransaction(const char *gid, bool isCommit) @@ -1293,9 +1287,9 @@ FinishPreparedTransaction(const char *gid, bool isCommit) /* * LockGXact returns NULL if this node does not contain given two-phase * TXN. This can happen when COMMIT/ROLLBACK PREPARED is issued at - * the originating coordinator for cleanup. + * the originating Coordinator for cleanup. * In this case, no local handling is needed. Only report to GTM - * is needed and this has already been handled in + * is needed and this has already been handled in * FinishRemotePreparedTransaction(). * * Second predicate may not be necessary. It is just in case. @@ -1387,8 +1381,7 @@ FinishPreparedTransaction(const char *gid, bool isCommit) for (fork = 0; fork <= MAX_FORKNUM; fork++) { - if (smgrexists(srel, fork)) - smgrdounlink(srel, fork, false); + smgrdounlink(srel, fork, false); } smgrclose(srel); } @@ -1400,10 +1393,10 @@ FinishPreparedTransaction(const char *gid, bool isCommit) * after we send the SI messages. See AtEOXact_Inval() */ if (hdr->initfileinval) - RelationCacheInitFileInvalidate(true); + RelationCacheInitFilePreInvalidate(); SendSharedInvalidMessages(invalmsgs, hdr->ninvalmsgs); if (hdr->initfileinval) - RelationCacheInitFileInvalidate(false); + RelationCacheInitFilePostInvalidate(); /* And now do the callbacks */ if (isCommit) diff --git a/src/backend/access/transam/twophase_rmgr.c b/src/backend/access/transam/twophase_rmgr.c index 47c15af241..eeb445da9d 100644 --- a/src/backend/access/transam/twophase_rmgr.c +++ b/src/backend/access/transam/twophase_rmgr.c @@ -25,34 +25,34 @@ const TwoPhaseCallback twophase_recover_callbacks[TWOPHASE_RM_MAX_ID + 1] = { NULL, /* END ID */ lock_twophase_recover, /* Lock */ - predicatelock_twophase_recover, /* PredicateLock */ NULL, /* pgstat */ - multixact_twophase_recover /* MultiXact */ + multixact_twophase_recover, /* MultiXact */ + predicatelock_twophase_recover /* PredicateLock */ }; const TwoPhaseCallback twophase_postcommit_callbacks[TWOPHASE_RM_MAX_ID + 1] = { NULL, /* END ID */ lock_twophase_postcommit, /* Lock */ - NULL, /* PredicateLock */ pgstat_twophase_postcommit, /* pgstat */ - multixact_twophase_postcommit /* MultiXact */ + multixact_twophase_postcommit, /* MultiXact */ + NULL /* PredicateLock */ }; const TwoPhaseCallback twophase_postabort_callbacks[TWOPHASE_RM_MAX_ID + 1] = { NULL, /* END ID */ lock_twophase_postabort, /* Lock */ - NULL, /* PredicateLock */ pgstat_twophase_postabort, /* pgstat */ - multixact_twophase_postabort /* MultiXact */ + multixact_twophase_postabort, /* MultiXact */ + NULL /* PredicateLock */ }; const TwoPhaseCallback twophase_standby_recover_callbacks[TWOPHASE_RM_MAX_ID + 1] = { NULL, /* END ID */ lock_twophase_standby_recover, /* Lock */ - NULL, /* PredicateLock */ NULL, /* pgstat */ - NULL /* MultiXact */ + NULL, /* MultiXact */ + NULL /* PredicateLock */ }; diff --git a/src/backend/access/transam/varsup.c b/src/backend/access/transam/varsup.c index 2f6b9fad42..fe069bd58d 100644 --- a/src/backend/access/transam/varsup.c +++ b/src/backend/access/transam/varsup.c @@ -4,7 +4,7 @@ * postgres OID & XID variables support routines * * Copyright (c) 2000-2011, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * IDENTIFICATION * src/backend/access/transam/varsup.c @@ -42,7 +42,7 @@ VariableCache ShmemVariableCache = NULL; static TransactionId next_xid = InvalidTransactionId; static bool force_get_xid_from_gtm = false; -/* +/* * Set next transaction id to use */ void @@ -52,11 +52,11 @@ SetNextTransactionId(TransactionId xid) next_xid = xid; } -/* - * Allow force of getting XID from GTM +/* + * Allow force of getting XID from GTM * Useful for explicit VACUUM (autovacuum already handled) */ -void +void SetForceXidFromGTM(bool value) { force_get_xid_from_gtm = value; @@ -66,7 +66,7 @@ SetForceXidFromGTM(bool value) * See if we should force using GTM * Useful for explicit VACUUM (autovacuum already handled) */ -bool +bool GetForceXidFromGTM(void) { return force_get_xid_from_gtm; @@ -113,15 +113,12 @@ GetNewTransactionId(bool isSubXact) elog(ERROR, "cannot assign TransactionIds during recovery"); #ifdef PGXC - if (IS_PGXC_COORDINATOR && !IsConnFromCoord()) + if (IS_PGXC_COORDINATOR && !IsConnFromCoord() || IsPGXCNodeXactDatanodeDirect()) { /* - * Get XID from GTM before acquiring the lock. - * The rest of the code will handle it if after obtaining XIDs, - * the lock is acquired in a different order. - * This will help with GTM connection issues- we will not - * block all other processes. - * GXID can just be obtained from a remote Coordinator + * Get XID from GTM before acquiring the lock as concurrent connections are + * being handled on GTM side even if the lock is acquired in a different + * order. */ if (IsAutoVacuumWorkerProcess() && (MyProc->vacuumFlags & PROC_IN_VACUUM)) xid = (TransactionId) BeginTranAutovacuumGTM(); @@ -134,11 +131,17 @@ GetNewTransactionId(bool isSubXact) LWLockAcquire(XidGenLock, LW_EXCLUSIVE); #ifdef PGXC - /* Only remote Coordinator can go a GXID */ - if (IS_PGXC_COORDINATOR && !IsConnFromCoord()) + /* Only remote Coordinator or a Datanode accessed directly by an application can get a GXID */ + if (IS_PGXC_COORDINATOR && !IsConnFromCoord() || IsPGXCNodeXactDatanodeDirect()) { - if (TransactionIdIsValid(xid)) + if (TransactionIdIsValid(xid)) { + /* Log some information about the new transaction ID obtained */ + if (IsAutoVacuumWorkerProcess() && (MyProc->vacuumFlags & PROC_IN_VACUUM)) + elog(DEBUG1, "Assigned new transaction ID from GTM for autovacuum = %d", xid); + else + elog(DEBUG1, "Assigned new transaction ID from GTM = %d", xid); + if (!TransactionIdFollowsOrEquals(xid, ShmemVariableCache->nextXid)) { increment_xid = false; @@ -150,25 +153,29 @@ GetNewTransactionId(bool isSubXact) ShmemVariableCache->nextXid = xid; } else - { + { ereport(WARNING, (errmsg("Xid is invalid."))); - + /* Problem is already reported, so just remove lock and return */ LWLockRelease(XidGenLock); return xid; - } + } } else if(IS_PGXC_DATANODE || IsConnFromCoord()) { if (IsAutoVacuumWorkerProcess()) { /* - * Get gxid directly from GTM. - * We use a separate function so that GTM knows to exclude it from - * other snapshots. + * For an autovacuum worker process, get transaction ID directly from GTM. + * If this vacuum process is a vacuum analyze, its GXID has to be excluded + * from snapshots so use a special function for this purpose. + * For a simple worker get transaction ID like a normal transaction would do. */ - next_xid = (TransactionId) BeginTranAutovacuumGTM(); + if (MyProc->vacuumFlags & PROC_IN_VACUUM) + next_xid = (TransactionId) BeginTranAutovacuumGTM(); + else + next_xid = (TransactionId) BeginTranGTM(timestamp); } else if (GetForceXidFromGTM()) { @@ -183,14 +190,14 @@ GetNewTransactionId(bool isSubXact) elog(DEBUG1, "TransactionId = %d", next_xid); next_xid = InvalidTransactionId; /* reset */ if (!TransactionIdFollowsOrEquals(xid, ShmemVariableCache->nextXid)) - { + { /* This should be ok, due to concurrency from multiple coords * passing down the xids. - * We later do not want to bother incrementing the value + * We later do not want to bother incrementing the value * in shared memory though. */ increment_xid = false; - elog(DEBUG1, "xid (%d) does not follow ShmemVariableCache->nextXid (%d)", + elog(DEBUG1, "xid (%d) does not follow ShmemVariableCache->nextXid (%d)", xid, ShmemVariableCache->nextXid); } else @@ -199,13 +206,12 @@ GetNewTransactionId(bool isSubXact) else { /* Fallback to default */ - elog(LOG, "Falling back to local Xid. Was = %d, now is = %d", + elog(LOG, "Falling back to local Xid. Was = %d, now is = %d", next_xid, ShmemVariableCache->nextXid); xid = ShmemVariableCache->nextXid; - } } -#else +#else xid = ShmemVariableCache->nextXid; #endif /* PGXC */ @@ -289,7 +295,16 @@ GetNewTransactionId(bool isSubXact) /* Re-acquire lock and start over */ LWLockAcquire(XidGenLock, LW_EXCLUSIVE); + +#ifndef PGXC + /* + * In the case of Postgres-XC, transaction ID is managed globally at GTM level, + * so updating the GXID here based on the cache that might have been changed + * by another session when checking for wraparound errors at this local node + * level breaks transaction ID consistency of cluster. + */ xid = ShmemVariableCache->nextXid; +#endif } /* * If we are allocating the first XID of a new page of the commit log, @@ -310,7 +325,7 @@ GetNewTransactionId(bool isSubXact) * more XIDs until there is CLOG space for them. */ #ifdef PGXC /* defined(PGXC_COORD) || defined(PGXC_DATANODE) */ - /* We may not be at the max, which is ok. Do not bother to increment. + /* We may not be at the max, which is ok. Do not bother to increment. * We get this externally anyway, so it should not be needed in theory... */ if (increment_xid) @@ -596,18 +611,18 @@ GetNewObjectId(void) * iterations in GetNewOid.) Note we are relying on unsigned comparison. * * During initdb, we start the OID generator at FirstBootstrapObjectId, so - * we only enforce wrapping to that point when in bootstrap or standalone - * mode. The first time through this routine after normal postmaster - * start, the counter will be forced up to FirstNormalObjectId. This - * mechanism leaves the OIDs between FirstBootstrapObjectId and - * FirstNormalObjectId available for automatic assignment during initdb, - * while ensuring they will never conflict with user-assigned OIDs. + * we only wrap if before that point when in bootstrap or standalone mode. + * The first time through this routine after normal postmaster start, the + * counter will be forced up to FirstNormalObjectId. This mechanism + * leaves the OIDs between FirstBootstrapObjectId and FirstNormalObjectId + * available for automatic assignment during initdb, while ensuring they + * will never conflict with user-assigned OIDs. */ if (ShmemVariableCache->nextOid < ((Oid) FirstNormalObjectId)) { if (IsPostmasterEnvironment) { - /* wraparound in normal environment */ + /* wraparound, or first post-initdb assignment, in normal mode */ ShmemVariableCache->nextOid = FirstNormalObjectId; ShmemVariableCache->oidCount = 0; } @@ -616,8 +631,8 @@ GetNewObjectId(void) /* we may be bootstrapping, so don't enforce the full range */ if (ShmemVariableCache->nextOid < ((Oid) FirstBootstrapObjectId)) { - /* wraparound in standalone environment? */ - ShmemVariableCache->nextOid = FirstBootstrapObjectId; + /* wraparound in standalone mode (unlikely but possible) */ + ShmemVariableCache->nextOid = FirstNormalObjectId; ShmemVariableCache->oidCount = 0; } } diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index d2f00a1b76..2a26d924fb 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -7,7 +7,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -148,7 +148,7 @@ typedef struct TransactionStateData GlobalTransactionId auxilliaryTransactionId; bool isLocalParameterUsed; /* Check if a local parameter is active * in transaction block (SET LOCAL, DEFERRED) */ -#else +#else TransactionId transactionId; /* my XID, or Invalid if none */ #endif SubTransactionId subTransactionId; /* my subxact ID */ @@ -183,7 +183,7 @@ static TransactionStateData TopTransactionStateData = { 0, /* prepared global transaction id */ 0, /* commit prepared global transaction id */ false, /* isLocalParameterUsed */ -#else +#else 0, /* transaction id */ #endif 0, /* subtransaction id */ @@ -644,7 +644,7 @@ GetTopGlobalTransactionId() return s->topGlobalTransansactionId; } -GlobalTransactionId +GlobalTransactionId GetAuxilliaryTransactionId() { TransactionState s = CurrentTransactionState; @@ -1333,7 +1333,8 @@ RecordTransactionCommit(void) * Note that at this stage we have marked clog, but still show as running * in the procarray and continue to hold locks. */ - SyncRepWaitForLSN(XactLastRecEnd); + if (wrote_xlog) + SyncRepWaitForLSN(XactLastRecEnd); /* Reset XactLastRecEnd until the next transaction writes something */ XactLastRecEnd.xrecoff = 0; @@ -1884,7 +1885,7 @@ StartTransaction(void) */ if (DefaultXactIsoLevel == XACT_SERIALIZABLE) DefaultXactIsoLevel = XACT_REPEATABLE_READ; -#endif +#endif XactIsoLevel = DefaultXactIsoLevel; forceSyncCommit = false; MyXactAccessedTempRel = false; @@ -1987,6 +1988,9 @@ CommitTransaction(void) { TransactionState s = CurrentTransactionState; TransactionId latestXid; +#ifdef PGXC + bool isImplicit = !(s->blockState == TBLOCK_PREPARE); +#endif ShowTransactionState("CommitTransaction"); @@ -1998,14 +2002,14 @@ CommitTransaction(void) TransStateAsString(s->state)); Assert(s->parent == NULL); -#ifdef PGXC +#ifdef PGXC /* - * If we are a coordinator and currently serving the client, + * If we are a Coordinator and currently serving the client, * we must run a 2PC if more than one nodes are involved in this * transaction. We first prepare on the remote nodes and if everything goes * right, we commit locally and then commit on the remote nodes. We must - * also be careful to prepare locally on this coordinator only if the - * local coordinator has done some write activity. + * also be careful to prepare locally on this Coordinator only if the + * local Coordinator has done some write activity. * * If there are any errors, they will be reported via ereport and the * transaction will be aborted. @@ -2031,7 +2035,7 @@ CommitTransaction(void) */ if (IsOnCommitActions() || ExecIsTempObjectIncluded()) { - if (!EnforceTwoPhaseCommit) + if (!EnforceTwoPhaseCommit || isImplicit) ExecSetTempObjectIncluded(); else ereport(ERROR, @@ -2079,7 +2083,7 @@ CommitTransaction(void) s->auxilliaryTransactionId = InvalidGlobalTransactionId; } } -#endif +#endif /* * Do pre-commit processing that involves calling user-defined code, such @@ -2136,7 +2140,7 @@ CommitTransaction(void) */ PreCommit_Notify(); -#ifdef PGXC +#ifdef PGXC if (IS_PGXC_COORDINATOR && !IsConnFromCoord()) { /* @@ -2272,7 +2276,7 @@ CommitTransaction(void) AtEOXact_SPI(true); AtEOXact_on_commit_actions(true); AtEOXact_Namespace(true); - /* smgrcommit already done */ + AtEOXact_SMgr(); AtEOXact_Files(); AtEOXact_ComboCid(); AtEOXact_HashTables(true); @@ -2337,7 +2341,7 @@ AtEOXact_GlobalTxn(bool commit) if (IS_PGXC_COORDINATOR && !IsConnFromCoord()) { - if (commit) + if (commit) { if (GlobalTransactionIdIsValid(s->auxilliaryTransactionId) && GlobalTransactionIdIsValid(s->topGlobalTransansactionId)) @@ -2350,7 +2354,7 @@ AtEOXact_GlobalTxn(bool commit) } else { - /* + /* * XXX Why don't we have a single API to abort both the GXIDs * together ? */ @@ -2371,8 +2375,15 @@ AtEOXact_GlobalTxn(bool commit) else RollbackTranGTM(s->topGlobalTransansactionId); } + else if (GlobalTransactionIdIsValid(currentGxid)) + { + if (commit) + CommitTranGTM(currentGxid); + else + RollbackTranGTM(currentGxid); + } } - + s->topGlobalTransansactionId = InvalidGlobalTransactionId; s->auxilliaryTransactionId = InvalidGlobalTransactionId; @@ -2400,7 +2411,7 @@ PrepareTransaction(void) #ifdef PGXC bool isImplicit = !(s->blockState == TBLOCK_PREPARE); char *nodestring; -#endif +#endif ShowTransactionState("PrepareTransaction"); @@ -2494,7 +2505,11 @@ PrepareTransaction(void) * cases, such as a temp table created and dropped all within the * transaction. That seems to require much more bookkeeping though. */ +#ifdef PGXC + if (MyXactAccessedTempRel && !isImplicit) +#else if (MyXactAccessedTempRel) +#endif ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("cannot PREPARE a transaction that has operated on temporary tables"))); @@ -2619,7 +2634,7 @@ PrepareTransaction(void) AtEOXact_SPI(true); AtEOXact_on_commit_actions(true); AtEOXact_Namespace(true); - /* smgrcommit already done */ + AtEOXact_SMgr(); AtEOXact_Files(); AtEOXact_ComboCid(); AtEOXact_HashTables(true); @@ -2686,7 +2701,7 @@ AbortTransaction(void) TransactionState s = CurrentTransactionState; TransactionId latestXid; -#ifdef PGXC +#ifdef PGXC /* * Save the current top transaction ID. We need this to close the * transaction at the GTM at thr end @@ -2826,6 +2841,7 @@ AbortTransaction(void) AtEOXact_SPI(false); AtEOXact_on_commit_actions(false); AtEOXact_Namespace(false); + AtEOXact_SMgr(); AtEOXact_Files(); AtEOXact_ComboCid(); AtEOXact_HashTables(false); @@ -2834,7 +2850,7 @@ AbortTransaction(void) pgstat_report_xact_timestamp(0); } -#ifdef PGXC +#ifdef PGXC ForgetTransactionLocalNode(); #endif /* @@ -2842,7 +2858,7 @@ AbortTransaction(void) */ RESUME_INTERRUPTS(); -#ifdef PGXC +#ifdef PGXC AtEOXact_GlobalTxn(false); AtEOXact_Remote(); #endif @@ -4358,7 +4374,24 @@ AbortOutOfAnyTransaction(void) switch (s->blockState) { case TBLOCK_DEFAULT: - /* Not in a transaction, do nothing */ + if (s->state == TRANS_DEFAULT) + { + /* Not in a transaction, do nothing */ + } + else + { + /* + * We can get here after an error during transaction start + * (state will be TRANS_START). Need to clean up the + * incompletely started transaction. First, adjust the + * low-level state to suppress warning message from + * AbortTransaction. + */ + if (s->state == TRANS_START) + s->state = TRANS_INPROGRESS; + AbortTransaction(); + CleanupTransaction(); + } break; case TBLOCK_STARTED: case TBLOCK_BEGIN: @@ -5106,28 +5139,46 @@ xact_redo_commit(xl_xact_commit *xlrec, TransactionId xid, XLogRecPtr lsn) } /* Make sure files supposed to be dropped are dropped */ - for (i = 0; i < xlrec->nrels; i++) + if (xlrec->nrels > 0) { - SMgrRelation srel = smgropen(xlrec->xnodes[i], InvalidBackendId); - ForkNumber fork; + /* + * First update minimum recovery point to cover this WAL record. Once + * a relation is deleted, there's no going back. The buffer manager + * enforces the WAL-first rule for normal updates to relation files, + * so that the minimum recovery point is always updated before the + * corresponding change in the data file is flushed to disk, but we + * have to do the same here since we're bypassing the buffer manager. + * + * Doing this before deleting the files means that if a deletion fails + * for some reason, you cannot start up the system even after restart, + * until you fix the underlying situation so that the deletion will + * succeed. Alternatively, we could update the minimum recovery point + * after deletion, but that would leave a small window where the + * WAL-first rule would be violated. + */ + XLogFlush(lsn); - for (fork = 0; fork <= MAX_FORKNUM; fork++) + for (i = 0; i < xlrec->nrels; i++) { - if (smgrexists(srel, fork)) + SMgrRelation srel = smgropen(xlrec->xnodes[i], InvalidBackendId); + ForkNumber fork; + + for (fork = 0; fork <= MAX_FORKNUM; fork++) { XLogDropRelation(xlrec->xnodes[i], fork); smgrdounlink(srel, fork, true); } + smgrclose(srel); } - smgrclose(srel); } /* * We issue an XLogFlush() for the same reason we emit ForceSyncCommit() - * in normal operation. For example, in DROP DATABASE, we delete all the - * files belonging to the database, and then commit the transaction. If we - * crash after all the files have been deleted but before the commit, you - * have an entry in pg_database without any files. To minimize the window + * in normal operation. For example, in CREATE DATABASE, we copy all files + * from the template database, and then commit the transaction. If we + * crash after all the files have been copied but before the commit, you + * have files in the data directory without an entry in pg_database. To + * minimize the window * for that, we use ForceSyncCommit() to rush the commit record to disk as * quick as possible. We have the same window during recovery, and forcing * an XLogFlush() (which updates minRecoveryPoint during recovery) helps @@ -5218,11 +5269,8 @@ xact_redo_abort(xl_xact_abort *xlrec, TransactionId xid) for (fork = 0; fork <= MAX_FORKNUM; fork++) { - if (smgrexists(srel, fork)) - { - XLogDropRelation(xlrec->xnodes[i], fork); - smgrdounlink(srel, fork, true); - } + XLogDropRelation(xlrec->xnodes[i], fork); + smgrdounlink(srel, fork, true); } smgrclose(srel); } @@ -5483,4 +5531,27 @@ IsXidImplicit(const char *xid) return false; return true; } + +/* + * IsPGXCNodeXactDatanodeDirect + * Determine if a Postgres-XC node session + * is being accessed directly by an application. + */ +bool +IsPGXCNodeXactDatanodeDirect(void) +{ + /* + * For the time being a Postgres-XC session is considered + * as being connected directly under very specific conditions. + * + * IsPostmasterEnvironment - checks for initdb and standalone + * IsNormalProcessingMode() - checks for new connections + * IsAutoVacuumLauncherProcess - checks for autovacuum launcher process + */ + return IS_PGXC_DATANODE && + IsPostmasterEnvironment && + IsNormalProcessingMode() && + !IsAutoVacuumLauncherProcess() && + !IsConnFromCoord(); +} #endif diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 11512e0048..0f3a643ba4 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -444,10 +444,14 @@ typedef struct XLogCtlData XLogRecPtr lastCheckPointRecPtr; CheckPoint lastCheckPoint; - /* end+1 of the last record replayed (or being replayed) */ + /* + * lastReplayedEndRecPtr points to end+1 of the last record successfully + * replayed. When we're currently replaying a record, ie. in a redo + * function, replayEndRecPtr points to the end+1 of the record being + * replayed, otherwise it's equal to lastReplayedEndRecPtr. + */ + XLogRecPtr lastReplayedEndRecPtr; XLogRecPtr replayEndRecPtr; - /* end+1 of the last record replayed */ - XLogRecPtr recoveryLastRecPtr; /* timestamp of last COMMIT/ABORT record replayed (or being replayed) */ TimestampTz recoveryLastXTime; /* Are we requested to pause recovery? */ @@ -554,11 +558,18 @@ static uint32 readRecordBufSize = 0; static XLogRecPtr ReadRecPtr; /* start of last record read */ static XLogRecPtr EndRecPtr; /* end+1 of last record read */ static TimeLineID lastPageTLI = 0; +static TimeLineID lastSegmentTLI = 0; static XLogRecPtr minRecoveryPoint; /* local copy of * ControlFile->minRecoveryPoint */ static bool updateMinRecoveryPoint = true; -static bool reachedMinRecoveryPoint = false; + +/* + * Have we reached a consistent database state? In crash recovery, we have + * to replay all the WAL, so reachedConsistency is never set. During archive + * recovery, the database is consistent once minRecoveryPoint is reached. + */ +static bool reachedConsistency = false; static bool InRedo = false; @@ -645,7 +656,7 @@ static void CleanupBackupHistory(void); static void UpdateMinRecoveryPoint(XLogRecPtr lsn, bool force); static XLogRecord *ReadRecord(XLogRecPtr *RecPtr, int emode, bool fetching_ckpt); static void CheckRecoveryConsistency(void); -static bool ValidXLOGHeader(XLogPageHeader hdr, int emode); +static bool ValidXLOGHeader(XLogPageHeader hdr, int emode, bool segmentonly); static XLogRecord *ReadCheckpointRecord(XLogRecPtr RecPtr, int whichChkpt); static List *readTimeLineHistory(TimeLineID targetTLI); static bool existsTimeLineHistory(TimeLineID probeTLI); @@ -663,7 +674,8 @@ static bool CheckForStandbyTrigger(void); static void xlog_outrec(StringInfo buf, XLogRecord *record); #endif static void pg_start_backup_callback(int code, Datum arg); -static bool read_backup_label(XLogRecPtr *checkPointLoc); +static bool read_backup_label(XLogRecPtr *checkPointLoc, + bool *backupEndRequired); static void rm_redo_error_callback(void *arg); static int get_sync_bit(int method); @@ -923,8 +935,8 @@ begin:; * loop, write_len includes the backup block data. * * Also set the appropriate info bits to show which buffers were backed - * up. The i'th XLR_SET_BKP_BLOCK bit corresponds to the i'th distinct - * buffer value (ignoring InvalidBuffer) appearing in the rdata chain. + * up. The XLR_BKP_BLOCK(N) bit corresponds to the N'th distinct buffer + * value (ignoring InvalidBuffer) appearing in the rdata chain. */ write_len = len; for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) @@ -935,7 +947,7 @@ begin:; if (!dtbuf_bkp[i]) continue; - info |= XLR_SET_BKP_BLOCK(i); + info |= XLR_BKP_BLOCK(i); bkpb = &(dtbuf_xlg[i]); page = (char *) BufferGetBlock(dtbuf[i]); @@ -2165,6 +2177,7 @@ XLogBackgroundFlush(void) { XLogRecPtr WriteRqstPtr; bool flexible = true; + bool wrote_something = false; /* XLOG doesn't need flushing during recovery */ if (RecoveryInProgress()) @@ -2233,10 +2246,18 @@ XLogBackgroundFlush(void) WriteRqst.Write = WriteRqstPtr; WriteRqst.Flush = WriteRqstPtr; XLogWrite(WriteRqst, flexible, false); + wrote_something = true; } LWLockRelease(WALWriteLock); END_CRIT_SECTION(); + + /* + * If we wrote something then we have something to send to standbys also, + * otherwise the replication delay become around 7s with just async commit. + */ + if (wrote_something) + WalSndWakeup(); } /* @@ -3225,11 +3246,10 @@ ExecuteRecoveryCommand(char *command, char *commandName, bool failOnSignal) */ signaled = WIFSIGNALED(rc) || WEXITSTATUS(rc) > 125; - /* - * translator: First %s represents a recovery.conf parameter name like - * "recovery_end_command", and the 2nd is the value of that parameter. - */ ereport((signaled && failOnSignal) ? FATAL : WARNING, + /*------ + translator: First %s represents a recovery.conf parameter name like + "recovery_end_command", and the 2nd is the value of that parameter. */ (errmsg("%s \"%s\": return code %d", commandName, command, rc))); } @@ -3549,9 +3569,16 @@ CleanupBackupHistory(void) } /* - * Restore the backup blocks present in an XLOG record, if any. + * Restore a full-page image from a backup block attached to an XLOG record. * - * We assume all of the record has been read into memory at *record. + * lsn: LSN of the XLOG record being replayed + * record: the complete XLOG record + * block_index: which backup block to restore (0 .. XLR_MAX_BKP_BLOCKS - 1) + * get_cleanup_lock: TRUE to get a cleanup rather than plain exclusive lock + * keep_buffer: TRUE to return the buffer still locked and pinned + * + * Returns the buffer number containing the page. Note this is not terribly + * useful unless keep_buffer is specified as TRUE. * * Note: when a backup block is available in XLOG, we restore it * unconditionally, even if the page in the database appears newer. @@ -3562,15 +3589,20 @@ CleanupBackupHistory(void) * modifications of the page that appear in XLOG, rather than possibly * ignoring them as already applied, but that's not a huge drawback. * - * If 'cleanup' is true, a cleanup lock is used when restoring blocks. - * Otherwise, a normal exclusive lock is used. During crash recovery, that's - * just pro forma because there can't be any regular backends in the system, - * but in hot standby mode the distinction is important. The 'cleanup' - * argument applies to all backup blocks in the WAL record, that suffices for - * now. + * If 'get_cleanup_lock' is true, a cleanup lock is obtained on the buffer, + * else a normal exclusive lock is used. During crash recovery, that's just + * pro forma because there can't be any regular backends in the system, but + * in hot standby mode the distinction is important. + * + * If 'keep_buffer' is true, return without releasing the buffer lock and pin; + * then caller is responsible for doing UnlockReleaseBuffer() later. This + * is needed in some cases when replaying XLOG records that touch multiple + * pages, to prevent inconsistent states from being visible to other backends. + * (Again, that's only important in hot standby mode.) */ -void -RestoreBkpBlocks(XLogRecPtr lsn, XLogRecord *record, bool cleanup) +Buffer +RestoreBackupBlock(XLogRecPtr lsn, XLogRecord *record, int block_index, + bool get_cleanup_lock, bool keep_buffer) { Buffer buffer; Page page; @@ -3578,49 +3610,59 @@ RestoreBkpBlocks(XLogRecPtr lsn, XLogRecord *record, bool cleanup) char *blk; int i; - if (!(record->xl_info & XLR_BKP_BLOCK_MASK)) - return; - + /* Locate requested BkpBlock in the record */ blk = (char *) XLogRecGetData(record) + record->xl_len; for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) { - if (!(record->xl_info & XLR_SET_BKP_BLOCK(i))) + if (!(record->xl_info & XLR_BKP_BLOCK(i))) continue; memcpy(&bkpb, blk, sizeof(BkpBlock)); blk += sizeof(BkpBlock); - buffer = XLogReadBufferExtended(bkpb.node, bkpb.fork, bkpb.block, - RBM_ZERO); - Assert(BufferIsValid(buffer)); - if (cleanup) - LockBufferForCleanup(buffer); - else - LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); + if (i == block_index) + { + /* Found it, apply the update */ + buffer = XLogReadBufferExtended(bkpb.node, bkpb.fork, bkpb.block, + RBM_ZERO); + Assert(BufferIsValid(buffer)); + if (get_cleanup_lock) + LockBufferForCleanup(buffer); + else + LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE); - page = (Page) BufferGetPage(buffer); + page = (Page) BufferGetPage(buffer); - if (bkpb.hole_length == 0) - { - memcpy((char *) page, blk, BLCKSZ); - } - else - { - /* must zero-fill the hole */ - MemSet((char *) page, 0, BLCKSZ); - memcpy((char *) page, blk, bkpb.hole_offset); - memcpy((char *) page + (bkpb.hole_offset + bkpb.hole_length), - blk + bkpb.hole_offset, - BLCKSZ - (bkpb.hole_offset + bkpb.hole_length)); - } + if (bkpb.hole_length == 0) + { + memcpy((char *) page, blk, BLCKSZ); + } + else + { + memcpy((char *) page, blk, bkpb.hole_offset); + /* must zero-fill the hole */ + MemSet((char *) page + bkpb.hole_offset, 0, bkpb.hole_length); + memcpy((char *) page + (bkpb.hole_offset + bkpb.hole_length), + blk + bkpb.hole_offset, + BLCKSZ - (bkpb.hole_offset + bkpb.hole_length)); + } + + PageSetLSN(page, lsn); + PageSetTLI(page, ThisTimeLineID); + MarkBufferDirty(buffer); - PageSetLSN(page, lsn); - PageSetTLI(page, ThisTimeLineID); - MarkBufferDirty(buffer); - UnlockReleaseBuffer(buffer); + if (!keep_buffer) + UnlockReleaseBuffer(buffer); + + return buffer; + } blk += BLCKSZ - bkpb.hole_length; } + + /* Caller specified a bogus block_index */ + elog(ERROR, "failed to restore block_index %d", block_index); + return InvalidBuffer; /* keep compiler quiet */ } /* @@ -3649,7 +3691,7 @@ RecordIsValid(XLogRecord *record, XLogRecPtr recptr, int emode) { uint32 blen; - if (!(record->xl_info & XLR_SET_BKP_BLOCK(i))) + if (!(record->xl_info & XLR_BKP_BLOCK(i))) continue; memcpy(&bkpb, blk, sizeof(BkpBlock)); @@ -3739,7 +3781,7 @@ ReadRecord(XLogRecPtr *RecPtr, int emode, bool fetching_ckpt) if (XLOG_BLCKSZ - (RecPtr->xrecoff % XLOG_BLCKSZ) < SizeOfXLogRecord) NextLogPage(*RecPtr); - /* Check for crossing of xlog segment boundary */ + /* Check for crossing of xlog logid boundary */ if (RecPtr->xrecoff >= XLogFileSize) { (RecPtr->xlogid)++; @@ -3770,7 +3812,7 @@ ReadRecord(XLogRecPtr *RecPtr, int emode, bool fetching_ckpt) * to go backwards (but we can't reset that variable right here, since * we might not change files at all). */ - lastPageTLI = 0; /* see comment in ValidXLOGHeader */ + lastPageTLI = lastSegmentTLI = 0; /* see comment in ValidXLOGHeader */ randAccess = true; /* allow curFileTLI to go backwards too */ } @@ -4033,7 +4075,7 @@ ReadRecord(XLogRecPtr *RecPtr, int emode, bool fetching_ckpt) * ReadRecord. It's not intended for use from anywhere else. */ static bool -ValidXLOGHeader(XLogPageHeader hdr, int emode) +ValidXLOGHeader(XLogPageHeader hdr, int emode, bool segmentonly) { XLogRecPtr recaddr; @@ -4128,18 +4170,31 @@ ValidXLOGHeader(XLogPageHeader hdr, int emode) * successive pages of a consistent WAL sequence. * * Of course this check should only be applied when advancing sequentially - * across pages; therefore ReadRecord resets lastPageTLI to zero when - * going to a random page. + * across pages; therefore ReadRecord resets lastPageTLI and + * lastSegmentTLI to zero when going to a random page. + * + * Sometimes we re-open a segment that's already been partially replayed. + * In that case we cannot perform the normal TLI check: if there is a + * timeline switch within the segment, the first page has a smaller TLI + * than later pages following the timeline switch, and we might've read + * them already. As a weaker test, we still check that it's not smaller + * than the TLI we last saw at the beginning of a segment. Pass + * segmentonly = true when re-validating the first page like that, and the + * page you're actually interested in comes later. */ - if (hdr->xlp_tli < lastPageTLI) + if (hdr->xlp_tli < (segmentonly ? lastSegmentTLI : lastPageTLI)) { ereport(emode_for_corrupt_record(emode, recaddr), (errmsg("out-of-sequence timeline ID %u (after %u) in log file %u, segment %u, offset %u", - hdr->xlp_tli, lastPageTLI, + hdr->xlp_tli, + segmentonly ? lastSegmentTLI : lastPageTLI, readId, readSeg, readOff))); return false; } lastPageTLI = hdr->xlp_tli; + if (readOff == 0) + lastSegmentTLI = hdr->xlp_tli; + return true; } @@ -5272,22 +5327,22 @@ readRecoveryCommandFile(void) { recoveryRestoreCommand = pstrdup(item->value); ereport(DEBUG2, - (errmsg("restore_command = '%s'", - recoveryRestoreCommand))); + (errmsg_internal("restore_command = '%s'", + recoveryRestoreCommand))); } else if (strcmp(item->name, "recovery_end_command") == 0) { recoveryEndCommand = pstrdup(item->value); ereport(DEBUG2, - (errmsg("recovery_end_command = '%s'", - recoveryEndCommand))); + (errmsg_internal("recovery_end_command = '%s'", + recoveryEndCommand))); } else if (strcmp(item->name, "archive_cleanup_command") == 0) { archiveCleanupCommand = pstrdup(item->value); ereport(DEBUG2, - (errmsg("archive_cleanup_command = '%s'", - archiveCleanupCommand))); + (errmsg_internal("archive_cleanup_command = '%s'", + archiveCleanupCommand))); } else if (strcmp(item->name, "pause_at_recovery_target") == 0) { @@ -5296,7 +5351,8 @@ readRecoveryCommandFile(void) (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("parameter \"%s\" requires a Boolean value", "pause_at_recovery_target"))); ereport(DEBUG2, - (errmsg("pause_at_recovery_target = '%s'", item->value))); + (errmsg_internal("pause_at_recovery_target = '%s'", + item->value))); } else if (strcmp(item->name, "recovery_target_timeline") == 0) { @@ -5314,10 +5370,10 @@ readRecoveryCommandFile(void) } if (rtli) ereport(DEBUG2, - (errmsg("recovery_target_timeline = %u", rtli))); + (errmsg_internal("recovery_target_timeline = %u", rtli))); else ereport(DEBUG2, - (errmsg("recovery_target_timeline = latest"))); + (errmsg_internal("recovery_target_timeline = latest"))); } else if (strcmp(item->name, "recovery_target_xid") == 0) { @@ -5328,8 +5384,8 @@ readRecoveryCommandFile(void) (errmsg("recovery_target_xid is not a valid number: \"%s\"", item->value))); ereport(DEBUG2, - (errmsg("recovery_target_xid = %u", - recoveryTargetXid))); + (errmsg_internal("recovery_target_xid = %u", + recoveryTargetXid))); recoveryTarget = RECOVERY_TARGET_XID; } else if (strcmp(item->name, "recovery_target_time") == 0) @@ -5352,8 +5408,8 @@ readRecoveryCommandFile(void) ObjectIdGetDatum(InvalidOid), Int32GetDatum(-1))); ereport(DEBUG2, - (errmsg("recovery_target_time = '%s'", - timestamptz_to_str(recoveryTargetTime)))); + (errmsg_internal("recovery_target_time = '%s'", + timestamptz_to_str(recoveryTargetTime)))); } #ifdef PGXC else if (strcmp(item->name, "recovery_target_barrier") == 0) @@ -5376,11 +5432,12 @@ readRecoveryCommandFile(void) if (strlen(recoveryTargetName) >= MAXFNAMELEN) ereport(FATAL, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("recovery_target_name is too long (maximum %d characters)", MAXFNAMELEN - 1))); + errmsg("recovery_target_name is too long (maximum %d characters)", + MAXFNAMELEN - 1))); ereport(DEBUG2, - (errmsg("recovery_target_name = '%s'", - recoveryTargetName))); + (errmsg_internal("recovery_target_name = '%s'", + recoveryTargetName))); } else if (strcmp(item->name, "recovery_target_inclusive") == 0) { @@ -5390,32 +5447,35 @@ readRecoveryCommandFile(void) if (!parse_bool(item->value, &recoveryTargetInclusive)) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("parameter \"%s\" requires a Boolean value", "recovery_target_inclusive"))); + errmsg("parameter \"%s\" requires a Boolean value", + "recovery_target_inclusive"))); ereport(DEBUG2, - (errmsg("recovery_target_inclusive = %s", item->value))); + (errmsg_internal("recovery_target_inclusive = %s", + item->value))); } else if (strcmp(item->name, "standby_mode") == 0) { if (!parse_bool(item->value, &StandbyMode)) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("parameter \"%s\" requires a Boolean value", "standby_mode"))); + errmsg("parameter \"%s\" requires a Boolean value", + "standby_mode"))); ereport(DEBUG2, - (errmsg("standby_mode = '%s'", item->value))); + (errmsg_internal("standby_mode = '%s'", item->value))); } else if (strcmp(item->name, "primary_conninfo") == 0) { PrimaryConnInfo = pstrdup(item->value); ereport(DEBUG2, - (errmsg("primary_conninfo = '%s'", - PrimaryConnInfo))); + (errmsg_internal("primary_conninfo = '%s'", + PrimaryConnInfo))); } else if (strcmp(item->name, "trigger_file") == 0) { TriggerFile = pstrdup(item->value); ereport(DEBUG2, - (errmsg("trigger_file = '%s'", - TriggerFile))); + (errmsg_internal("trigger_file = '%s'", + TriggerFile))); } else ereport(FATAL, @@ -5663,7 +5723,7 @@ recoveryStopsHere(XLogRecord *record, bool *includeThis) recordRestorePointData = (xl_restore_point *) XLogRecGetData(record); recordXtime = recordRestorePointData->rp_time; - strncpy(recordRPName, recordRestorePointData->rp_name, MAXFNAMELEN); + strlcpy(recordRPName, recordRestorePointData->rp_name, MAXFNAMELEN); } else return false; @@ -5773,7 +5833,7 @@ recoveryStopsHere(XLogRecord *record, bool *includeThis) } else { - strncpy(recoveryStopName, recordRPName, MAXFNAMELEN); + strlcpy(recoveryStopName, recordRPName, MAXFNAMELEN); ereport(LOG, (errmsg("recovery stopping at restore point \"%s\", time %s", @@ -5807,13 +5867,19 @@ recoveryStopsHere(XLogRecord *record, bool *includeThis) } /* - * Recheck shared recoveryPause by polling. + * Wait until shared recoveryPause flag is cleared. * - * XXX Can also be done with shared latch. + * XXX Could also be done with shared latch, avoiding the pg_usleep loop. + * Probably not worth the trouble though. This state shouldn't be one that + * anyone cares about server power consumption in. */ static void recoveryPausesHere(void) { + /* Don't pause unless users can connect! */ + if (!LocalHotStandbyActive) + return; + ereport(LOG, (errmsg("recovery has paused"), errhint("Execute pg_xlog_replay_resume() to continue."))); @@ -5999,9 +6065,10 @@ GetXLogReceiptTime(TimestampTz *rtime, bool *fromStream) */ #define RecoveryRequiresIntParameter(param_name, currValue, minValue) \ do { \ - if (currValue < minValue) \ + if ((currValue) < (minValue)) \ ereport(ERROR, \ - (errmsg("hot standby is not possible because " \ + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), \ + errmsg("hot standby is not possible because " \ "%s = %d is a lower setting than on the master server " \ "(its value was %d)", \ param_name, \ @@ -6042,10 +6109,10 @@ CheckRequiredParameterValues(void) RecoveryRequiresIntParameter("max_connections", MaxConnections, ControlFile->MaxConnections); - RecoveryRequiresIntParameter("max_prepared_xacts", + RecoveryRequiresIntParameter("max_prepared_transactions", max_prepared_xacts, ControlFile->max_prepared_xacts); - RecoveryRequiresIntParameter("max_locks_per_xact", + RecoveryRequiresIntParameter("max_locks_per_transaction", max_locks_per_xact, ControlFile->max_locks_per_xact); } @@ -6070,6 +6137,7 @@ StartupXLOG(void) XLogRecord *record; uint32 freespace; TransactionId oldestActiveXID; + bool backupEndRequired = false; /* * Read control file and check XLOG status looks valid. @@ -6170,7 +6238,7 @@ StartupXLOG(void) * see them */ XLogCtl->RecoveryTargetTLI = recoveryTargetTLI; - strncpy(XLogCtl->archiveCleanupCommand, + strlcpy(XLogCtl->archiveCleanupCommand, archiveCleanupCommand ? archiveCleanupCommand : "", sizeof(XLogCtl->archiveCleanupCommand)); @@ -6209,7 +6277,7 @@ StartupXLOG(void) if (StandbyMode) OwnLatch(&XLogCtl->recoveryWakeupLatch); - if (read_backup_label(&checkPointLoc)) + if (read_backup_label(&checkPointLoc, &backupEndRequired)) { /* * When a backup_label file is present, we want to roll forward from @@ -6312,11 +6380,20 @@ StartupXLOG(void) ereport(PANIC, (errmsg("invalid next transaction ID"))); + /* initialize shared memory variables from the checkpoint record */ ShmemVariableCache->nextXid = checkPoint.nextXid; ShmemVariableCache->nextOid = checkPoint.nextOid; ShmemVariableCache->oidCount = 0; MultiXactSetNextMXact(checkPoint.nextMulti, checkPoint.nextMultiOffset); SetTransactionIdLimit(checkPoint.oldestXid, checkPoint.oldestXidDB); + XLogCtl->ckptXidEpoch = checkPoint.nextXidEpoch; + XLogCtl->ckptXid = checkPoint.nextXid; + + /* + * Startup MultiXact. We need to do this early because we need its state + * initialized because we attempt truncation during restartpoints. + */ + StartupMultiXact(); /* * We must replay WAL entries using the same TimeLineID they were created @@ -6385,10 +6462,17 @@ StartupXLOG(void) } /* - * set backupStartPoint if we're starting recovery from a base backup + * Set backupStartPoint if we're starting recovery from a base backup. + * However, if there was no recovery.conf, and the backup was taken + * with pg_start_backup(), we don't know if the server crashed before + * the backup was finished and we're doing crash recovery on the + * original server, or if we're restoring from the base backup. We + * have to assume we're doing crash recovery in that case, or the + * database would refuse to start up after a crash. */ - if (haveBackupLabel) + if ((InArchiveRecovery && haveBackupLabel) || backupEndRequired) ControlFile->backupStartPoint = checkPoint.redo; + ControlFile->time = (pg_time_t) time(NULL); /* No need to hold ControlFileLock yet, we aren't up far enough */ UpdateControlFile(); @@ -6452,10 +6536,16 @@ StartupXLOG(void) oldestActiveXID = checkPoint.oldestActiveXid; Assert(TransactionIdIsValid(oldestActiveXID)); - /* Startup commit log and related stuff */ + /* Tell procarray about the range of xids it has to deal with */ + ProcArrayInitRecovery(ShmemVariableCache->nextXid); + + /* + * Startup commit log and subtrans only. MultiXact has already + * been started up and other SLRUs are not maintained during + * recovery and need not be started yet. + */ StartupCLOG(); StartupSUBTRANS(oldestActiveXID); - StartupMultiXact(); /* * If we're beginning at a shutdown checkpoint, we know that @@ -6498,20 +6588,16 @@ StartupXLOG(void) } /* - * Initialize shared replayEndRecPtr, recoveryLastRecPtr, and - * recoveryLastXTime. - * - * This is slightly confusing if we're starting from an online - * checkpoint; we've just read and replayed the chekpoint record, but - * we're going to start replay from its redo pointer, which precedes - * the location of the checkpoint record itself. So even though the - * last record we've replayed is indeed ReadRecPtr, we haven't - * replayed all the preceding records yet. That's OK for the current - * use of these variables. + * Initialize shared variables for tracking progress of WAL replay, + * as if we had just replayed the record before the REDO location + * (or the checkpoint record itself, if it's a shutdown checkpoint). */ SpinLockAcquire(&xlogctl->info_lck); - xlogctl->replayEndRecPtr = ReadRecPtr; - xlogctl->recoveryLastRecPtr = ReadRecPtr; + if (XLByteLT(checkPoint.redo, RecPtr)) + xlogctl->replayEndRecPtr = checkPoint.redo; + else + xlogctl->replayEndRecPtr = EndRecPtr; + xlogctl->lastReplayedEndRecPtr = xlogctl->replayEndRecPtr; xlogctl->recoveryLastXTime = 0; xlogctl->recoveryPause = false; SpinLockRelease(&xlogctl->info_lck); @@ -6563,7 +6649,6 @@ StartupXLOG(void) { bool recoveryContinue = true; bool recoveryApply = true; - bool recoveryPause = false; ErrorContextCallback errcontext; TimestampTz xtime; @@ -6602,25 +6687,31 @@ StartupXLOG(void) /* Handle interrupt signals of startup process */ HandleStartupProcInterrupts(); - /* Allow read-only connections if we're consistent now */ - CheckRecoveryConsistency(); + /* + * Pause WAL replay, if requested by a hot-standby session via + * SetRecoveryPause(). + * + * Note that we intentionally don't take the info_lck spinlock + * here. We might therefore read a slightly stale value of + * the recoveryPause flag, but it can't be very stale (no + * worse than the last spinlock we did acquire). Since a + * pause request is a pretty asynchronous thing anyway, + * possibly responding to it one WAL record later than we + * otherwise would is a minor issue, so it doesn't seem worth + * adding another spinlock cycle to prevent that. + */ + if (xlogctl->recoveryPause) + recoveryPausesHere(); /* * Have we reached our recovery target? */ if (recoveryStopsHere(record, &recoveryApply)) { - /* - * Pause only if users can connect to send a resume - * message - */ - if (recoveryPauseAtTarget && standbyState == STANDBY_SNAPSHOT_READY) - { - SetRecoveryPause(true); - recoveryPausesHere(); - } reachedStopPoint = true; /* see below */ recoveryContinue = false; + + /* Exit loop if we reached non-inclusive recovery target */ if (!recoveryApply) break; } @@ -6645,15 +6736,8 @@ StartupXLOG(void) */ SpinLockAcquire(&xlogctl->info_lck); xlogctl->replayEndRecPtr = EndRecPtr; - recoveryPause = xlogctl->recoveryPause; SpinLockRelease(&xlogctl->info_lck); - /* - * Pause only if users can connect to send a resume message - */ - if (recoveryPause && standbyState == STANDBY_SNAPSHOT_READY) - recoveryPausesHere(); - /* * If we are attempting to enter Hot Standby mode, process * XIDs we see @@ -6668,22 +6752,37 @@ StartupXLOG(void) error_context_stack = errcontext.previous; /* - * Update shared recoveryLastRecPtr after this record has been - * replayed. + * Update lastReplayedEndRecPtr after this record has been + * successfully replayed. */ SpinLockAcquire(&xlogctl->info_lck); - xlogctl->recoveryLastRecPtr = EndRecPtr; + xlogctl->lastReplayedEndRecPtr = EndRecPtr; SpinLockRelease(&xlogctl->info_lck); + /* Remember this record as the last-applied one */ LastRec = ReadRecPtr; + /* Allow read-only connections if we're consistent now */ + CheckRecoveryConsistency(); + + /* Exit loop if we reached inclusive recovery target */ + if (!recoveryContinue) + break; + + /* Else, try to fetch the next WAL record */ record = ReadRecord(NULL, LOG, false); - } while (record != NULL && recoveryContinue); + } while (record != NULL); /* * end of main redo apply loop */ + if (recoveryPauseAtTarget && reachedStopPoint) + { + SetRecoveryPause(true); + recoveryPausesHere(); + } + ereport(LOG, (errmsg("redo done at %X/%X", ReadRecPtr.xlogid, ReadRecPtr.xrecoff))); @@ -6751,23 +6850,15 @@ StartupXLOG(void) /* * Ran off end of WAL before reaching end-of-backup WAL record, or - * minRecoveryPoint. That's usually a bad sign, indicating that you - * tried to recover from an online backup but never called - * pg_stop_backup(), or you didn't archive all the WAL up to that - * point. However, this also happens in crash recovery, if the system - * crashes while an online backup is in progress. We must not treat - * that as an error, or the database will refuse to start up. + * minRecoveryPoint. */ - if (InArchiveRecovery) - { - if (!XLogRecPtrIsInvalid(ControlFile->backupStartPoint)) - ereport(FATAL, - (errmsg("WAL ends before end of online backup"), - errhint("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."))); - else - ereport(FATAL, - (errmsg("WAL ends before consistent recovery point"))); - } + if (!XLogRecPtrIsInvalid(ControlFile->backupStartPoint)) + ereport(FATAL, + (errmsg("WAL ends before end of online backup"), + errhint("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."))); + else + ereport(FATAL, + (errmsg("WAL ends before consistent recovery point"))); } /* @@ -6943,25 +7034,26 @@ StartupXLOG(void) /* start the archive_timeout timer running */ XLogCtl->Write.lastSegSwitchTime = (pg_time_t) time(NULL); - /* initialize shared-memory copy of latest checkpoint XID/epoch */ - XLogCtl->ckptXidEpoch = ControlFile->checkPointCopy.nextXidEpoch; - XLogCtl->ckptXid = ControlFile->checkPointCopy.nextXid; - /* also initialize latestCompletedXid, to nextXid - 1 */ ShmemVariableCache->latestCompletedXid = ShmemVariableCache->nextXid; TransactionIdRetreat(ShmemVariableCache->latestCompletedXid); /* - * Start up the commit log and related stuff, too. In hot standby mode we - * did this already before WAL replay. + * Start up the commit log and subtrans, if not already done for + * hot standby. */ if (standbyState == STANDBY_DISABLED) { StartupCLOG(); StartupSUBTRANS(oldestActiveXID); - StartupMultiXact(); } + /* + * Perform end of recovery actions for any SLRUs that need it. + */ + TrimMultiXact(); + TrimCLOG(); + /* Reload shared-memory state for prepared transactions */ RecoverPreparedTransactions(); @@ -7021,17 +7113,25 @@ StartupXLOG(void) static void CheckRecoveryConsistency(void) { + /* + * During crash recovery, we don't reach a consistent state until we've + * replayed all the WAL. + */ + if (XLogRecPtrIsInvalid(minRecoveryPoint)) + return; + /* * Have we passed our safe starting point? */ - if (!reachedMinRecoveryPoint && - XLByteLE(minRecoveryPoint, EndRecPtr) && + if (!reachedConsistency && + XLByteLE(minRecoveryPoint, XLogCtl->lastReplayedEndRecPtr) && XLogRecPtrIsInvalid(ControlFile->backupStartPoint)) { - reachedMinRecoveryPoint = true; + reachedConsistency = true; ereport(LOG, (errmsg("consistent recovery state reached at %X/%X", - EndRecPtr.xlogid, EndRecPtr.xrecoff))); + XLogCtl->lastReplayedEndRecPtr.xlogid, + XLogCtl->lastReplayedEndRecPtr.xrecoff))); } /* @@ -7041,7 +7141,7 @@ CheckRecoveryConsistency(void) */ if (standbyState == STANDBY_SNAPSHOT_READY && !LocalHotStandbyActive && - reachedMinRecoveryPoint && + reachedConsistency && IsUnderPostmaster) { /* use volatile pointer to prevent code rearrangement */ @@ -7105,7 +7205,8 @@ RecoveryInProgress(void) * true. Postmaster knows this by way of signal, not via shared memory. * * Unlike testing standbyState, this works in any process that's connected to - * shared memory. + * shared memory. (And note that standbyState alone doesn't tell the truth + * anyway.) */ bool HotStandbyActive(void) @@ -7131,6 +7232,16 @@ HotStandbyActive(void) } } +/* + * Like HotStandbyActive(), but to be used only in WAL replay code, + * where we don't need to ask any other process what the state is. + */ +bool +HotStandbyActiveInReplay(void) +{ + return LocalHotStandbyActive; +} + /* * Is this process allowed to insert new WAL records? * @@ -7667,6 +7778,16 @@ CreateCheckPoint(int flags) MemSet(&checkPoint, 0, sizeof(checkPoint)); checkPoint.time = (pg_time_t) time(NULL); + /* + * For Hot Standby, derive the oldestActiveXid before we fix the redo pointer. + * This allows us to begin accumulating changes to assemble our starting + * snapshot of locks and transactions. + */ + if (!shutdown && XLogStandbyInfoActive()) + checkPoint.oldestActiveXid = GetOldestActiveTransactionId(); + else + checkPoint.oldestActiveXid = InvalidTransactionId; + /* * We must hold WALInsertLock while examining insert state to determine * the checkpoint REDO pointer. @@ -7849,13 +7970,9 @@ CreateCheckPoint(int flags) * * If we are shutting down, or Startup process is completing crash * recovery we don't need to write running xact data. - * - * Update checkPoint.nextXid since we have a later value */ if (!shutdown && XLogStandbyInfoActive()) - LogStandbySnapshot(&checkPoint.oldestActiveXid, &checkPoint.nextXid); - else - checkPoint.oldestActiveXid = InvalidTransactionId; + LogStandbySnapshot(); START_CRIT_SECTION(); @@ -8068,7 +8185,8 @@ RecoveryRestartPoint(const CheckPoint *checkPoint) if (RmgrTable[rmid].rm_safe_restartpoint != NULL) if (!(RmgrTable[rmid].rm_safe_restartpoint())) { - elog(trace_recovery(DEBUG2), "RM %d not safe to record restart point at %X/%X", + elog(trace_recovery(DEBUG2), + "RM %d not safe to record restart point at %X/%X", rmid, checkPoint->redo.xlogid, checkPoint->redo.xrecoff); @@ -8240,6 +8358,21 @@ CreateRestartPoint(int flags) endptr = GetWalRcvWriteRecPtr(NULL); PrevLogSeg(_logId, _logSeg); + + /* + * Update ThisTimeLineID to the timeline we're currently replaying, + * so that we install any recycled segments on that timeline. + * + * There is no guarantee that the WAL segments will be useful on the + * current timeline; if recovery proceeds to a new timeline right + * after this, the pre-allocated WAL segments on this timeline will + * not be used, and will go wasted until recycled on the next + * restartpoint. We'll live with that. + */ + SpinLockAcquire(&xlogctl->info_lck); + ThisTimeLineID = XLogCtl->lastCheckPoint.ThisTimeLineID; + SpinLockRelease(&xlogctl->info_lck); + RemoveOldXlogFiles(_logId, _logSeg, endptr); /* @@ -8355,7 +8488,7 @@ XLogRestorePoint(const char *rpName) xl_restore_point xlrec; xlrec.rp_time = GetCurrentTimestamp(); - strncpy(xlrec.rp_name, rpName, MAXFNAMELEN); + strlcpy(xlrec.rp_name, rpName, MAXFNAMELEN); rdata.buffer = InvalidBuffer; rdata.data = (char *) &xlrec; @@ -8434,12 +8567,15 @@ xlog_redo(XLogRecPtr lsn, XLogRecord *record) { Oid nextOid; + /* + * We used to try to take the maximum of ShmemVariableCache->nextOid + * and the recorded nextOid, but that fails if the OID counter wraps + * around. Since no OID allocation should be happening during replay + * anyway, better to just believe the record exactly. + */ memcpy(&nextOid, XLogRecGetData(record), sizeof(Oid)); - if (ShmemVariableCache->nextOid < nextOid) - { - ShmemVariableCache->nextOid = nextOid; - ShmemVariableCache->oidCount = 0; - } + ShmemVariableCache->nextOid = nextOid; + ShmemVariableCache->oidCount = 0; } else if (info == XLOG_CHECKPOINT_SHUTDOWN) { @@ -8456,13 +8592,13 @@ xlog_redo(XLogRecPtr lsn, XLogRecord *record) /* * If we see a shutdown checkpoint while waiting for an end-of-backup - * record, the backup was cancelled and the end-of-backup record will + * record, the backup was canceled and the end-of-backup record will * never arrive. */ if (InArchiveRecovery && !XLogRecPtrIsInvalid(ControlFile->backupStartPoint)) ereport(ERROR, - (errmsg("online backup was cancelled, recovery cannot continue"))); + (errmsg("online backup was canceled, recovery cannot continue"))); /* * If we see a shutdown checkpoint, we know that nothing was running @@ -8505,6 +8641,17 @@ xlog_redo(XLogRecPtr lsn, XLogRecord *record) ControlFile->checkPointCopy.nextXidEpoch = checkPoint.nextXidEpoch; ControlFile->checkPointCopy.nextXid = checkPoint.nextXid; + /* Update shared-memory copy of checkpoint XID/epoch */ + { + /* use volatile pointer to prevent code rearrangement */ + volatile XLogCtlData *xlogctl = XLogCtl; + + SpinLockAcquire(&xlogctl->info_lck); + xlogctl->ckptXidEpoch = checkPoint.nextXidEpoch; + xlogctl->ckptXid = checkPoint.nextXid; + SpinLockRelease(&xlogctl->info_lck); + } + /* * TLI may change in a shutdown checkpoint, but it shouldn't decrease */ @@ -8527,15 +8674,13 @@ xlog_redo(XLogRecPtr lsn, XLogRecord *record) CheckPoint checkPoint; memcpy(&checkPoint, XLogRecGetData(record), sizeof(CheckPoint)); - /* In an ONLINE checkpoint, treat the counters like NEXTOID */ + /* In an ONLINE checkpoint, treat the XID counter as a minimum */ if (TransactionIdPrecedes(ShmemVariableCache->nextXid, checkPoint.nextXid)) ShmemVariableCache->nextXid = checkPoint.nextXid; - if (ShmemVariableCache->nextOid < checkPoint.nextOid) - { - ShmemVariableCache->nextOid = checkPoint.nextOid; - ShmemVariableCache->oidCount = 0; - } + /* ... but still treat OID counter as exact */ + ShmemVariableCache->nextOid = checkPoint.nextOid; + ShmemVariableCache->oidCount = 0; MultiXactAdvanceNextMXact(checkPoint.nextMulti, checkPoint.nextMultiOffset); if (TransactionIdPrecedes(ShmemVariableCache->oldestXid, @@ -8547,6 +8692,17 @@ xlog_redo(XLogRecPtr lsn, XLogRecord *record) ControlFile->checkPointCopy.nextXidEpoch = checkPoint.nextXidEpoch; ControlFile->checkPointCopy.nextXid = checkPoint.nextXid; + /* Update shared-memory copy of checkpoint XID/epoch */ + { + /* use volatile pointer to prevent code rearrangement */ + volatile XLogCtlData *xlogctl = XLogCtl; + + SpinLockAcquire(&xlogctl->info_lck); + xlogctl->ckptXidEpoch = checkPoint.nextXidEpoch; + xlogctl->ckptXid = checkPoint.nextXid; + SpinLockRelease(&xlogctl->info_lck); + } + /* TLI should not change in an on-line checkpoint */ if (checkPoint.ThisTimeLineID != ThisTimeLineID) ereport(PANIC, @@ -8729,8 +8885,8 @@ xlog_outrec(StringInfo buf, XLogRecord *record) for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) { - if (record->xl_info & XLR_SET_BKP_BLOCK(i)) - appendStringInfo(buf, "; bkpb%d", i + 1); + if (record->xl_info & XLR_BKP_BLOCK(i)) + appendStringInfo(buf, "; bkpb%d", i); } appendStringInfo(buf, ": %s", RmgrTable[record->xl_rmid].rm_name); @@ -8890,6 +9046,11 @@ pg_start_backup(PG_FUNCTION_ARGS) backupidstr = text_to_cstring(backupid); + if (!superuser() && !has_rolreplication(GetUserId())) + ereport(ERROR, + (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), + errmsg("must be superuser or replication role to run a backup"))); + startpoint = do_pg_start_backup(backupidstr, fast, NULL); snprintf(startxlogstr, sizeof(startxlogstr), "%X/%X", @@ -8917,6 +9078,9 @@ pg_start_backup(PG_FUNCTION_ARGS) * * Every successfully started non-exclusive backup must be stopped by calling * do_pg_stop_backup() or do_pg_abort_backup(). + * + * It is the responsibility of the caller of this function to verify the + * permissions of the calling user! */ XLogRecPtr do_pg_start_backup(const char *backupidstr, bool fast, char **labelfile) @@ -8933,11 +9097,6 @@ do_pg_start_backup(const char *backupidstr, bool fast, char **labelfile) FILE *fp; StringInfoData labelfbuf; - if (!superuser() && !is_authenticated_user_replication_role()) - ereport(ERROR, - (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - errmsg("must be superuser or replication role to run a backup"))); - if (RecoveryInProgress()) ereport(ERROR, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), @@ -9071,6 +9230,8 @@ do_pg_start_backup(const char *backupidstr, bool fast, char **labelfile) startpoint.xlogid, startpoint.xrecoff, xlogfilename); appendStringInfo(&labelfbuf, "CHECKPOINT LOCATION: %X/%X\n", checkpointloc.xlogid, checkpointloc.xrecoff); + appendStringInfo(&labelfbuf, "BACKUP METHOD: %s\n", + exclusive ? "pg_start_backup" : "streamed"); appendStringInfo(&labelfbuf, "START TIME: %s\n", strfbuf); appendStringInfo(&labelfbuf, "LABEL: %s\n", backupidstr); @@ -9107,7 +9268,8 @@ do_pg_start_backup(const char *backupidstr, bool fast, char **labelfile) errmsg("could not create file \"%s\": %m", BACKUP_LABEL_FILE))); fwrite(labelfbuf.data, labelfbuf.len, 1, fp); - if (fflush(fp) || ferror(fp) || FreeFile(fp)) + + if (fflush(fp) || ferror(fp) || pg_fsync(fileno(fp)) != 0 || FreeFile(fp)) ereport(ERROR, (errcode_for_file_access(), errmsg("could not write file \"%s\": %m", @@ -9171,6 +9333,11 @@ pg_stop_backup(PG_FUNCTION_ARGS) XLogRecPtr stoppoint; char stopxlogstr[MAXFNAMELEN]; + if (!superuser() && !has_rolreplication(GetUserId())) + ereport(ERROR, + (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), + errmsg("must be superuser or replication role to run a backup"))); + stoppoint = do_pg_stop_backup(NULL, true); snprintf(stopxlogstr, sizeof(stopxlogstr), "%X/%X", @@ -9184,6 +9351,9 @@ pg_stop_backup(PG_FUNCTION_ARGS) * If labelfile is NULL, this stops an exclusive backup. Otherwise this stops * the non-exclusive backup specified by 'labelfile'. + * + * It is the responsibility of the caller of this function to verify the + * permissions of the calling user! */ XLogRecPtr do_pg_stop_backup(char *labelfile, bool waitforarchive) @@ -9209,11 +9379,6 @@ do_pg_stop_backup(char *labelfile, bool waitforarchive) bool reported_waiting = false; char *remaining; - if (!superuser() && !is_authenticated_user_replication_role()) - ereport(ERROR, - (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - (errmsg("must be superuser or replication role to run a backup")))); - if (RecoveryInProgress()) ereport(ERROR, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), @@ -9418,7 +9583,7 @@ do_pg_stop_backup(char *labelfile, bool waitforarchive) (errmsg("pg_stop_backup still waiting for all required WAL segments to be archived (%d seconds elapsed)", waits), errhint("Check that your archive_command is executing properly. " - "pg_stop_backup can be cancelled safely, " + "pg_stop_backup can be canceled safely, " "but the database backup will not be usable without all the WAL segments."))); } } @@ -9636,7 +9801,7 @@ GetXLogReplayRecPtr(void) XLogRecPtr recptr; SpinLockAcquire(&xlogctl->info_lck); - recptr = xlogctl->recoveryLastRecPtr; + recptr = xlogctl->lastReplayedEndRecPtr; SpinLockRelease(&xlogctl->info_lck); return recptr; @@ -9800,15 +9965,19 @@ pg_xlogfile_name(PG_FUNCTION_ARGS) * * Returns TRUE if a backup_label was found (and fills the checkpoint * location and its REDO location into *checkPointLoc and RedoStartLSN, - * respectively); returns FALSE if not. + * respectively); returns FALSE if not. If this backup_label came from a + * streamed backup, *backupEndRequired is set to TRUE. */ static bool -read_backup_label(XLogRecPtr *checkPointLoc) +read_backup_label(XLogRecPtr *checkPointLoc, bool *backupEndRequired) { char startxlogfilename[MAXFNAMELEN]; TimeLineID tli; FILE *lfp; char ch; + char backuptype[20]; + + *backupEndRequired = false; /* * See if label file is present @@ -9841,6 +10010,16 @@ read_backup_label(XLogRecPtr *checkPointLoc) ereport(FATAL, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), errmsg("invalid data in file \"%s\"", BACKUP_LABEL_FILE))); + /* + * BACKUP METHOD line didn't exist in 9.1beta3 and earlier, so don't + * error out if it doesn't exist. + */ + if (fscanf(lfp, "BACKUP METHOD: %19s", backuptype) == 1) + { + if (strcmp(backuptype, "streamed") == 0) + *backupEndRequired = true; + } + if (ferror(lfp) || FreeFile(lfp)) ereport(FATAL, (errcode_for_file_access(), @@ -9900,13 +10079,13 @@ CancelBackup(void) if (stat(BACKUP_LABEL_FILE, &stat_buf) < 0) return; - /* remove leftover file from previously cancelled backup if it exists */ + /* remove leftover file from previously canceled backup if it exists */ unlink(BACKUP_LABEL_OLD); if (rename(BACKUP_LABEL_FILE, BACKUP_LABEL_OLD) == 0) { ereport(LOG, - (errmsg("online backup mode cancelled"), + (errmsg("online backup mode canceled"), errdetail("\"%s\" was renamed to \"%s\".", BACKUP_LABEL_FILE, BACKUP_LABEL_OLD))); } @@ -9914,7 +10093,7 @@ CancelBackup(void) { ereport(WARNING, (errcode_for_file_access(), - errmsg("online backup mode was not cancelled"), + errmsg("online backup mode was not canceled"), errdetail("Could not rename \"%s\" to \"%s\": %m.", BACKUP_LABEL_FILE, BACKUP_LABEL_OLD))); } @@ -9962,34 +10141,50 @@ startupproc_quickdie(SIGNAL_ARGS) static void StartupProcSigUsr1Handler(SIGNAL_ARGS) { + int save_errno = errno; + latch_sigusr1_handler(); + + errno = save_errno; } /* SIGUSR2: set flag to finish recovery */ static void StartupProcTriggerHandler(SIGNAL_ARGS) { + int save_errno = errno; + promote_triggered = true; WakeupRecovery(); + + errno = save_errno; } /* SIGHUP: set flag to re-read config file at next convenient time */ static void StartupProcSigHupHandler(SIGNAL_ARGS) { + int save_errno = errno; + got_SIGHUP = true; WakeupRecovery(); + + errno = save_errno; } /* SIGTERM: set flag to abort redo and exit */ static void StartupProcShutdownHandler(SIGNAL_ARGS) { + int save_errno = errno; + if (in_restore_command) proc_exit(1); else shutdown_requested = true; WakeupRecovery(); + + errno = save_errno; } /* Handle SIGHUP and SIGTERM signals of startup process */ @@ -10242,7 +10437,7 @@ XLogPageRead(XLogRecPtr *RecPtr, int emode, bool fetching_ckpt, /* * Wait for more WAL to arrive, or timeout to be reached */ - WaitLatch(&XLogCtl->recoveryWakeupLatch, 5000000L); + WaitLatch(&XLogCtl->recoveryWakeupLatch, 5000L); ResetLatch(&XLogCtl->recoveryWakeupLatch); } else @@ -10416,7 +10611,7 @@ XLogPageRead(XLogRecPtr *RecPtr, int emode, bool fetching_ckpt, readId, readSeg, readOff))); goto next_record_is_invalid; } - if (!ValidXLOGHeader((XLogPageHeader) readBuf, emode)) + if (!ValidXLOGHeader((XLogPageHeader) readBuf, emode, true)) goto next_record_is_invalid; } @@ -10438,7 +10633,7 @@ XLogPageRead(XLogRecPtr *RecPtr, int emode, bool fetching_ckpt, readId, readSeg, readOff))); goto next_record_is_invalid; } - if (!ValidXLOGHeader((XLogPageHeader) readBuf, emode)) + if (!ValidXLOGHeader((XLogPageHeader) readBuf, emode, false)) goto next_record_is_invalid; Assert(targetId == readId); diff --git a/src/backend/access/transam/xlogutils.c b/src/backend/access/transam/xlogutils.c index cbb61bb899..3593a4e384 100644 --- a/src/backend/access/transam/xlogutils.c +++ b/src/backend/access/transam/xlogutils.c @@ -264,6 +264,10 @@ XLogReadBuffer(RelFileNode rnode, BlockNumber blkno, bool init) * * 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_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 + * to imply that the page should be dropped or truncated later. */ Buffer XLogReadBufferExtended(RelFileNode rnode, ForkNumber forknum, @@ -304,19 +308,27 @@ XLogReadBufferExtended(RelFileNode rnode, ForkNumber forknum, log_invalid_page(rnode, forknum, blkno, false); return InvalidBuffer; } + if (mode == RBM_NORMAL_NO_LOG) + return InvalidBuffer; /* OK to extend the file */ /* we do this in recovery only - no rel-extension lock needed */ Assert(InRecovery); buffer = InvalidBuffer; - while (blkno >= lastblock) + do { if (buffer != InvalidBuffer) ReleaseBuffer(buffer); buffer = ReadBufferWithoutRelcache(rnode, forknum, P_NEW, mode, NULL); - lastblock++; } - Assert(BufferGetBlockNumber(buffer) == blkno); + while (BufferGetBlockNumber(buffer) < blkno); + /* Handle the corner case that P_NEW returns non-consecutive pages */ + if (BufferGetBlockNumber(buffer) != blkno) + { + ReleaseBuffer(buffer); + buffer = ReadBufferWithoutRelcache(rnode, forknum, blkno, + mode, NULL); + } } if (mode == RBM_NORMAL) @@ -371,6 +383,8 @@ CreateFakeRelcacheEntry(RelFileNode rnode) FakeRelCacheEntry fakeentry; Relation rel; + Assert(InRecovery); + /* Allocate the Relation struct and all related space in one block. */ fakeentry = palloc0(sizeof(FakeRelCacheEntryData)); rel = (Relation) fakeentry; @@ -380,6 +394,9 @@ CreateFakeRelcacheEntry(RelFileNode rnode) /* We will never be working with temp rels during recovery */ rel->rd_backend = InvalidBackendId; + /* It must be a permanent table if we're in recovery. */ + rel->rd_rel->relpersistence = RELPERSISTENCE_PERMANENT; + /* We don't know the name of the relation; use relfilenode instead */ sprintf(RelationGetRelationName(rel), "%u", rnode.relNode); @@ -404,6 +421,9 @@ CreateFakeRelcacheEntry(RelFileNode rnode) void FreeFakeRelcacheEntry(Relation fakerel) { + /* make sure the fakerel is not referenced by the SmgrRelation anymore */ + if (fakerel->rd_smgr != NULL) + smgrclearowner(&fakerel->rd_smgr, fakerel->rd_smgr); pfree(fakerel); } diff --git a/src/backend/bootstrap/bootparse.y b/src/backend/bootstrap/bootparse.y index a9d2428698..c6b755628b 100644 --- a/src/backend/bootstrap/bootparse.y +++ b/src/backend/bootstrap/bootparse.y @@ -27,6 +27,7 @@ #include "bootstrap/bootstrap.h" #include "catalog/catalog.h" #include "catalog/heap.h" +#include "catalog/namespace.h" #include "catalog/pg_am.h" #include "catalog/pg_attribute.h" #include "catalog/pg_authid.h" @@ -248,7 +249,7 @@ Boot_CreateStmt: (Datum) 0, false, true); - elog(DEBUG4, "relation created with oid %u", id); + elog(DEBUG4, "relation created with OID %u", id); } do_end(); } @@ -279,9 +280,14 @@ Boot_InsertStmt: Boot_DeclareIndexStmt: XDECLARE INDEX boot_ident oidspec ON boot_ident USING boot_ident LPAREN boot_index_params RPAREN { + Oid relationId; + do_start(); - DefineIndex(makeRangeVar(NULL, $6, -1), + relationId = RangeVarGetRelid(makeRangeVar(NULL, $6, -1), + false); + + DefineIndex(relationId, $3, $4, $8, @@ -297,9 +303,14 @@ Boot_DeclareIndexStmt: Boot_DeclareUniqueIndexStmt: XDECLARE UNIQUE INDEX boot_ident oidspec ON boot_ident USING boot_ident LPAREN boot_index_params RPAREN { + Oid relationId; + do_start(); - DefineIndex(makeRangeVar(NULL, $7, -1), + relationId = RangeVarGetRelid(makeRangeVar(NULL, $7, -1), + false); + + DefineIndex(relationId, $4, $5, $9, diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c index 77423fa412..0e3f57cd94 100644 --- a/src/backend/bootstrap/bootstrap.c +++ b/src/backend/bootstrap/bootstrap.c @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * IDENTIFICATION * src/backend/bootstrap/bootstrap.c @@ -205,14 +205,6 @@ AuxiliaryProcessMain(int argc, char *argv[]) MyStartTime = time(NULL); - /* - * Fire up essential subsystems: error and memory management - * - * If we are running under the postmaster, this is done already. - */ - if (!IsUnderPostmaster) - MemoryContextInit(); - /* Compute paths, if we didn't inherit them from postmaster */ if (my_exec_path[0] == '\0') { diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c index df32731b87..cf5e5f03a6 100644 --- a/src/backend/catalog/aclchk.c +++ b/src/backend/catalog/aclchk.c @@ -992,27 +992,26 @@ SetDefaultACLsInSchemas(InternalDefaultACL *iacls, List *nspnames) } else { - /* Look up the schema OIDs and do permissions checks */ + /* Look up the schema OIDs and set permissions for each one */ ListCell *nspcell; foreach(nspcell, nspnames) { char *nspname = strVal(lfirst(nspcell)); - AclResult aclresult; - /* - * Note that we must do the permissions check against the target - * role not the calling user. We require CREATE privileges, since - * without CREATE you won't be able to do anything using the - * default privs anyway. - */ iacls->nspid = get_namespace_oid(nspname, false); - aclresult = pg_namespace_aclcheck(iacls->nspid, iacls->roleid, - ACL_CREATE); - if (aclresult != ACLCHECK_OK) - aclcheck_error(aclresult, ACL_KIND_NAMESPACE, - nspname); + /* + * We used to insist that the target role have CREATE privileges + * on the schema, since without that it wouldn't be able to create + * an object for which these default privileges would apply. + * However, this check proved to be more confusing than helpful, + * and it also caused certain database states to not be + * dumpable/restorable, since revoking CREATE doesn't cause + * default privileges for the schema to go away. So now, we just + * allow the ALTER; if the user lacks CREATE he'll find out when + * he tries to create an object. + */ SetDefaultACL(iacls); } diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c index f426ecf118..916e5c81f6 100644 --- a/src/backend/catalog/dependency.c +++ b/src/backend/catalog/dependency.c @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * IDENTIFICATION * src/backend/catalog/dependency.c @@ -108,6 +108,7 @@ typedef struct #define DEPFLAG_AUTO 0x0004 /* reached via auto dependency */ #define DEPFLAG_INTERNAL 0x0008 /* reached via internal dependency */ #define DEPFLAG_EXTENSION 0x0010 /* reached via extension dependency */ +#define DEPFLAG_REVERSE 0x0020 /* reverse internal/extension link */ /* expansible list of ObjectAddresses */ @@ -203,6 +204,9 @@ static void add_exact_object_address_extra(const ObjectAddress *object, static bool object_address_present_add_flags(const ObjectAddress *object, int flags, ObjectAddresses *addrs); +static bool stack_address_present_add_flags(const ObjectAddress *object, + int flags, + ObjectAddressStack *stack); static void getRelationDescription(StringInfo buffer, Oid relid); static void getOpFamilyDescription(StringInfo buffer, Oid opfid); @@ -432,7 +436,7 @@ performRename(const ObjectAddress *object, const char *oldname, const char *newn NULL, /* empty stack */ targetObjects, NULL, - depRel); + &depRel); /* Check Objects one by one to see if some of them have to be renamed on GTM */ for (i = 0; i < targetObjects->numrefs; i++) @@ -562,7 +566,6 @@ findDependentObjects(const ObjectAddress *object, ObjectAddress otherObject; ObjectAddressStack mystack; ObjectAddressExtra extra; - ObjectAddressStack *stackptr; /* * If the target object is already being visited in an outer recursion @@ -580,27 +583,8 @@ findDependentObjects(const ObjectAddress *object, * auto dependency, too, if we had to. However there are no known cases * where that would be necessary. */ - for (stackptr = stack; stackptr; stackptr = stackptr->next) - { - if (object->classId == stackptr->object->classId && - object->objectId == stackptr->object->objectId) - { - if (object->objectSubId == stackptr->object->objectSubId) - { - stackptr->flags |= flags; - return; - } - - /* - * Could visit column with whole table already on stack; this is - * the same case noted in object_address_present_add_flags(). - * (It's not clear this can really happen, but we might as well - * check.) - */ - if (stackptr->object->objectSubId == 0) - return; - } - } + if (stack_address_present_add_flags(object, flags, stack)) + return; /* * It's also possible that the target object has already been completely @@ -616,12 +600,13 @@ findDependentObjects(const ObjectAddress *object, /* * The target object might be internally dependent on some other object - * (its "owner"). If so, and if we aren't recursing from the owning - * object, we have to transform this deletion request into a deletion - * request of the owning object. (We'll eventually recurse back to this - * object, but the owning object has to be visited first so it will be - * deleted after.) The way to find out about this is to scan the - * pg_depend entries that show what this object depends on. + * (its "owner"), and/or be a member of an extension (also considered its + * owner). If so, and if we aren't recursing from the owning object, we + * have to transform this deletion request into a deletion request of the + * owning object. (We'll eventually recurse back to this object, but the + * owning object has to be visited first so it will be deleted after.) + * The way to find out about this is to scan the pg_depend entries that + * show what this object depends on. */ ScanKeyInit(&key[0], Anum_pg_depend_classid, @@ -667,17 +652,21 @@ findDependentObjects(const ObjectAddress *object, * another object, or is part of the extension that is the * other object. We have three cases: * - * 1. At the outermost recursion level, disallow the DROP. (We - * just ereport here, rather than proceeding, since no other - * dependencies are likely to be interesting.) However, if - * the other object is listed in pendingObjects, just release - * the caller's lock and return; we'll eventually complete the - * DROP when we reach that entry in the pending list. + * 1. At the outermost recursion level, we normally disallow + * the DROP. (We just ereport here, rather than proceeding, + * since no other dependencies are likely to be interesting.) + * However, there are exceptions. */ if (stack == NULL) { char *otherObjDesc; + /* + * Exception 1a: if the owning object is listed in + * pendingObjects, just release the caller's lock and + * return. We'll eventually complete the DROP when we + * reach that entry in the pending list. + */ if (pendingObjects && object_address_present(&otherObject, pendingObjects)) { @@ -686,6 +675,21 @@ findDependentObjects(const ObjectAddress *object, ReleaseDeletionLock(object); return; } + + /* + * Exception 1b: if the owning object is the extension + * currently being created/altered, it's okay to continue + * with the deletion. This allows dropping of an + * extension's objects within the extension's scripts, + * as well as corner cases such as dropping a transient + * object created within such a script. + */ + if (creating_extension && + otherObject.classId == ExtensionRelationId && + otherObject.objectId == CurrentExtensionObject) + break; + + /* No exception applies, so throw the error */ otherObjDesc = getObjectDescription(&otherObject); ereport(ERROR, (errcode(ERRCODE_DEPENDENT_OBJECTS_STILL_EXIST), @@ -698,31 +702,31 @@ findDependentObjects(const ObjectAddress *object, /* * 2. When recursing from the other end of this dependency, - * it's okay to continue with the deletion. This holds when + * it's okay to continue with the deletion. This holds when * recursing from a whole object that includes the nominal - * other end as a component, too. + * other end as a component, too. Since there can be more + * than one "owning" object, we have to allow matches that + * are more than one level down in the stack. */ - if (stack->object->classId == otherObject.classId && - stack->object->objectId == otherObject.objectId && - (stack->object->objectSubId == otherObject.objectSubId || - stack->object->objectSubId == 0)) + if (stack_address_present_add_flags(&otherObject, 0, stack)) break; /* - * 3. When recursing from anyplace else, transform this - * deletion request into a delete of the other object. + * 3. Not all the owning objects have been visited, so + * transform this deletion request into a delete of this + * owning object. * * First, release caller's lock on this object and get - * deletion lock on the other object. (We must release + * deletion lock on the owning object. (We must release * caller's lock to avoid deadlock against a concurrent - * deletion of the other object.) + * deletion of the owning object.) */ ReleaseDeletionLock(object); AcquireDeletionLock(&otherObject); /* - * The other object might have been deleted while we waited to - * lock it; if so, neither it nor the current object are + * The owning object might have been deleted while we waited + * to lock it; if so, neither it nor the current object are * interesting anymore. We test this by checking the * pg_depend entry (see notes below). */ @@ -734,13 +738,18 @@ findDependentObjects(const ObjectAddress *object, } /* - * Okay, recurse to the other object instead of proceeding. We - * treat this exactly as if the original reference had linked - * to that object instead of this one; hence, pass through the - * same flags and stack. + * Okay, recurse to the owning object instead of proceeding. + * + * We do not need to stack the current object; we want the + * traversal order to be as if the original reference had + * linked to the owning object instead of this one. + * + * The dependency type is a "reverse" dependency: we need to + * delete the owning object if this one is to be deleted, but + * this linkage is never a reason for an automatic deletion. */ findDependentObjects(&otherObject, - flags, + DEPFLAG_REVERSE, stack, targetObjects, pendingObjects, @@ -1190,7 +1199,7 @@ doDeletion(const ObjectAddress *object) if (!IsTempSequence(object->objectId)) { /* - * The sequence has already been removed from coordinator, + * The sequence has already been removed from Coordinator, * finish the stuff on GTM too */ @@ -2190,6 +2199,43 @@ object_address_present_add_flags(const ObjectAddress *object, return false; } +/* + * Similar to above, except we search an ObjectAddressStack. + */ +static bool +stack_address_present_add_flags(const ObjectAddress *object, + int flags, + ObjectAddressStack *stack) +{ + ObjectAddressStack *stackptr; + + for (stackptr = stack; stackptr; stackptr = stackptr->next) + { + const ObjectAddress *thisobj = stackptr->object; + + if (object->classId == thisobj->classId && + object->objectId == thisobj->objectId) + { + if (object->objectSubId == thisobj->objectSubId) + { + stackptr->flags |= flags; + return true; + } + + /* + * 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; +} + /* * Record multiple dependencies from an ObjectAddresses array, after first * removing any duplicates. @@ -2604,12 +2650,11 @@ getObjectDescription(const ObjectAddress *object) initStringInfo(&opfam); getOpFamilyDescription(&opfam, amopForm->amopfamily); - /* - * 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. - */ + /*------ + 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. */ appendStringInfo(&buffer, _("operator %d (%s, %s) of %s: %s"), amopForm->amopstrategy, format_type_be(amopForm->amoplefttype), @@ -2655,12 +2700,11 @@ getObjectDescription(const ObjectAddress *object) initStringInfo(&opfam); getOpFamilyDescription(&opfam, amprocForm->amprocfamily); - /* - * 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. - */ + /*------ + 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. */ appendStringInfo(&buffer, _("function %d (%s, %s) of %s: %s"), amprocForm->amprocnum, format_type_be(amprocForm->amproclefttype), diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index 67a8fcb8a9..8c28f9405b 100644 --- a/src/backend/catalog/heap.c +++ b/src/backend/catalog/heap.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -995,9 +995,12 @@ AddRelationDistribution(Oid relid, switch (distributeby->disttype) { case DISTTYPE_HASH: - /* User specified hash column, validate */ + /* + * Validate user-specified hash column. + * System columns cannot be used. + */ attnum = get_attnum(relid, distributeby->colname); - if (!attnum) + if (attnum <= 0 && attnum >= -(int) lengthof(SysAtt)) { ereport(ERROR, (errcode(ERRCODE_INVALID_TABLE_DEFINITION), @@ -1015,9 +1018,12 @@ AddRelationDistribution(Oid relid, break; case DISTTYPE_MODULO: - /* User specified modulo column, validate */ + /* + * Validate user specified modulo column. + * System columns cannot be used. + */ attnum = get_attnum(relid, distributeby->colname); - if (!attnum) + if (attnum <= 0 && attnum >= -(int) lengthof(SysAtt)) { ereport(ERROR, (errcode(ERRCODE_INVALID_TABLE_DEFINITION), @@ -1264,10 +1270,12 @@ AddNewRelationType(const char *typeName, * reltablespace: OID of tablespace it goes in * relid: OID to assign to new rel, or InvalidOid to select a new OID * reltypeid: OID to assign to rel's rowtype, or InvalidOid to select one + * reloftypeid: if a typed table, OID of underlying type; else InvalidOid * ownerid: OID of new rel's owner * tupdesc: tuple descriptor (source of column definitions) * cooked_constraints: list of precooked check constraints and defaults * relkind: relkind for new rel + * relpersistence: rel's persistence status (permanent, temp, or unlogged) * shared_relation: TRUE if it's to be a shared relation * mapped_relation: TRUE if the relation will use the relfilenode map * oidislocal: TRUE if oid column (if any) should be marked attislocal @@ -1541,6 +1549,10 @@ heap_create_with_catalog(const char *relname, * should they have any ACL entries. The same applies for extension * dependencies. * + * If it's a temp table, we do not make it an extension member; this + * prevents the unintuitive result that deletion of the temp table at + * session end would make the whole extension go away. + * * Also, skip this in bootstrap mode, since we don't make dependencies * while bootstrapping. */ @@ -1561,7 +1573,8 @@ heap_create_with_catalog(const char *relname, recordDependencyOnOwner(RelationRelationId, relid, ownerid); - recordDependencyOnCurrentExtension(&myself); + if (relpersistence != RELPERSISTENCE_TEMP) + recordDependencyOnCurrentExtension(&myself, false); if (reloftypeid) { @@ -1602,23 +1615,10 @@ heap_create_with_catalog(const char *relname, if (oncommit != ONCOMMIT_NOOP) register_on_commit_action(relid, oncommit); - /* - * If this is an unlogged relation, it needs an init fork so that it can - * be correctly reinitialized on restart. Since we're going to do an - * immediate sync, we ony need to xlog this if archiving or streaming is - * enabled. And the immediate sync is required, because otherwise there's - * no guarantee that this will hit the disk before the next checkpoint - * moves the redo pointer. - */ if (relpersistence == RELPERSISTENCE_UNLOGGED) { Assert(relkind == RELKIND_RELATION || relkind == RELKIND_TOASTVALUE); - - smgrcreate(new_rel_desc->rd_smgr, INIT_FORKNUM, false); - if (XLogIsNeeded()) - log_smgrcreate(&new_rel_desc->rd_smgr->smgr_rnode.node, - INIT_FORKNUM); - smgrimmedsync(new_rel_desc->rd_smgr, INIT_FORKNUM); + heap_create_init_fork(new_rel_desc); } /* @@ -1631,6 +1631,22 @@ heap_create_with_catalog(const char *relname, return relid; } +/* + * Set up an init fork for an unlogged table so that it can be correctly + * reinitialized on restart. Since we're going to do an immediate sync, we + * only need to xlog this if archiving or streaming is enabled. And the + * immediate sync is required, because otherwise there's no guarantee that + * this will hit the disk before the next checkpoint moves the redo pointer. + */ +void +heap_create_init_fork(Relation rel) +{ + RelationOpenSmgr(rel); + smgrcreate(rel->rd_smgr, INIT_FORKNUM, false); + if (XLogIsNeeded()) + log_smgrcreate(&rel->rd_smgr->smgr_rnode.node, INIT_FORKNUM); + smgrimmedsync(rel->rd_smgr, INIT_FORKNUM); +} /* * RelationRemoveInheritance @@ -2192,7 +2208,9 @@ StoreRelCheck(Relation rel, char *ccname, Node *expr, * in check constraints; it would fail to examine the contents of * subselects. */ - varList = pull_var_clause(expr, PVC_REJECT_PLACEHOLDERS); + varList = pull_var_clause(expr, + PVC_REJECT_AGGREGATES, + PVC_REJECT_PLACEHOLDERS); keycount = list_length(varList); if (keycount > 0) @@ -2488,7 +2506,9 @@ AddRelationNewConstraints(Relation rel, List *vars; char *colname; - vars = pull_var_clause(expr, PVC_REJECT_PLACEHOLDERS); + vars = pull_var_clause(expr, + PVC_REJECT_AGGREGATES, + PVC_REJECT_PLACEHOLDERS); /* eliminate duplicates */ vars = list_union(NIL, vars); diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index 39ba4869af..4e6222b3ba 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -115,7 +115,6 @@ static void validate_index_heapscan(Relation heapRelation, IndexInfo *indexInfo, Snapshot snapshot, v_i_state *state); -static Oid IndexGetRelation(Oid indexId); static bool ReindexIsCurrentlyProcessingIndex(Oid indexOid); static void SetReindexProcessing(Oid heapOid, Oid indexOid); static void ResetReindexProcessing(void); @@ -129,6 +128,10 @@ static void ResetReindexPending(void); * See whether an existing relation has a primary key. * * Caller must have suitable lock on the relation. + * + * Note: we intentionally do not check IndexIsValid here; that's because this + * is used to enforce the rule that there can be only one indisprimary index, + * and we want that to be true even if said index is invalid. */ static bool relationHasPrimaryKey(Relation rel) @@ -926,6 +929,7 @@ index_create(Relation heapRelation, initdeferred, false, /* already marked primary */ false, /* pg_index entry is OK */ + false, /* no old dependencies */ allow_system_table_mods); } else @@ -1093,6 +1097,8 @@ index_create(Relation heapRelation, * initdeferred: constraint is INITIALLY DEFERRED * mark_as_primary: if true, set flags to mark index as primary key * update_pgindex: if true, update pg_index row (else caller's done that) + * remove_old_dependencies: if true, remove existing dependencies of index + * on table's columns * allow_system_table_mods: allow table to be a system catalog */ void @@ -1105,6 +1111,7 @@ index_constraint_create(Relation heapRelation, bool initdeferred, bool mark_as_primary, bool update_pgindex, + bool remove_old_dependencies, bool allow_system_table_mods) { Oid namespaceId = RelationGetNamespace(heapRelation); @@ -1128,6 +1135,19 @@ index_constraint_create(Relation heapRelation, constraintType != CONSTRAINT_EXCLUSION) elog(ERROR, "constraints cannot have index expressions"); + /* + * If we're manufacturing a constraint for a pre-existing index, we need + * to get rid of the existing auto dependencies for the index (the ones + * that index_create() would have made instead of calling this function). + * + * Note: this code would not necessarily do the right thing if the index + * has any expressions or predicate, but we'd never be turning such an + * index into a UNIQUE or PRIMARY KEY constraint. + */ + if (remove_old_dependencies) + deleteDependencyRecordsForClass(RelationRelationId, indexRelationId, + RelationRelationId, DEPENDENCY_AUTO); + /* * Construct a pg_constraint entry. */ @@ -1161,12 +1181,8 @@ index_constraint_create(Relation heapRelation, /* * Register the index as internally dependent on the constraint. * - * Note that the constraint has a dependency on the table, so when this - * path is taken we do not need any direct dependency from the index to - * the table. (But if one exists, no great harm is done, either. So in - * the case where we're manufacturing a constraint for a pre-existing - * index, we don't bother to try to get rid of the existing index->table - * dependency.) + * Note that the constraint has a dependency on the table, so we don't + * need (or want) any direct dependency from the index to the table. */ myself.classId = RelationRelationId; myself.objectId = indexRelationId; @@ -1185,18 +1201,13 @@ index_constraint_create(Relation heapRelation, */ if (deferrable) { - RangeVar *heapRel; CreateTrigStmt *trigger; - heapRel = makeRangeVar(get_namespace_name(namespaceId), - pstrdup(RelationGetRelationName(heapRelation)), - -1); - trigger = makeNode(CreateTrigStmt); trigger->trigname = (constraintType == CONSTRAINT_PRIMARY) ? "PK_ConstraintTrigger" : "Unique_ConstraintTrigger"; - trigger->relation = heapRel; + trigger->relation = NULL; trigger->funcname = SystemFuncName("unique_key_recheck"); trigger->args = NIL; trigger->row = true; @@ -1209,7 +1220,8 @@ index_constraint_create(Relation heapRelation, trigger->initdeferred = initdeferred; trigger->constrrel = NULL; - (void) CreateTrigger(trigger, NULL, conOid, indexRelationId, true); + (void) CreateTrigger(trigger, NULL, RelationGetRelid(heapRelation), + InvalidOid, conOid, indexRelationId, true); } /* @@ -1234,8 +1246,9 @@ index_constraint_create(Relation heapRelation, * Note: since this is a transactional update, it's unsafe against * concurrent SnapshotNow scans of pg_index. When making an existing * index into a constraint, caller must have a table lock that prevents - * concurrent table updates, and there is a risk that concurrent readers - * of the table will miss seeing this index at all. + * concurrent table updates; if it's less than a full exclusive lock, + * there is a risk that concurrent readers of the table will miss seeing + * this index at all. */ if (update_pgindex && (mark_as_primary || deferrable)) { @@ -1437,7 +1450,7 @@ BuildIndexInfo(Relation index) /* other info */ ii->ii_Unique = indexStruct->indisunique; - ii->ii_ReadyForInserts = indexStruct->indisready; + ii->ii_ReadyForInserts = IndexIsReady(indexStruct); /* initialize index-build state to default */ ii->ii_Concurrent = false; @@ -1776,8 +1789,20 @@ index_build(Relation heapRelation, * index's usability horizon. Moreover, we *must not* try to change the * index's pg_index entry while reindexing pg_index itself, and this * optimization nicely prevents that. - */ - if (indexInfo->ii_BrokenHotChain && !isreindex) + * + * We also need not set indcheckxmin during a concurrent index build, + * because we won't set indisvalid true until all transactions that care + * about the broken HOT chains are gone. + * + * Therefore, this code path can only be taken during non-concurrent + * CREATE INDEX. Thus the fact that heap_update will set the pg_index + * tuple's xmin doesn't matter, because that tuple was created in the + * current transaction anyway. That also means we don't need to worry + * about any concurrent readers of the tuple; no other transaction can see + * it yet. + */ + if (indexInfo->ii_BrokenHotChain && !isreindex && + !indexInfo->ii_Concurrent) { Oid indexId = RelationGetRelid(indexRelation); Relation pg_index; @@ -2740,11 +2765,70 @@ validate_index_heapscan(Relation heapRelation, } +/* + * index_set_state_flags - adjust pg_index state flags + * + * This is used during CREATE INDEX CONCURRENTLY to adjust the pg_index + * flags that denote the index's state. We must use an in-place update of + * the pg_index tuple, because we do not have exclusive lock on the parent + * table and so other sessions might concurrently be doing SnapshotNow scans + * of pg_index to identify the table's indexes. A transactional update would + * risk somebody not seeing the index at all. Because the update is not + * transactional and will not roll back on error, this must only be used as + * the last step in a transaction that has not made any transactional catalog + * updates! + * + * Note that heap_inplace_update does send a cache inval message for the + * tuple, so other sessions will hear about the update as soon as we commit. + */ +void +index_set_state_flags(Oid indexId, IndexStateFlagsAction action) +{ + Relation pg_index; + HeapTuple indexTuple; + Form_pg_index indexForm; + + /* Assert that current xact hasn't done any transactional updates */ + Assert(GetTopTransactionIdIfAny() == InvalidTransactionId); + + /* Open pg_index and fetch a writable copy of the index's tuple */ + pg_index = heap_open(IndexRelationId, RowExclusiveLock); + + indexTuple = SearchSysCacheCopy1(INDEXRELID, + ObjectIdGetDatum(indexId)); + if (!HeapTupleIsValid(indexTuple)) + elog(ERROR, "cache lookup failed for index %u", indexId); + indexForm = (Form_pg_index) GETSTRUCT(indexTuple); + + /* Perform the requested state change on the copy */ + switch (action) + { + case INDEX_CREATE_SET_READY: + /* Set indisready during a CREATE INDEX CONCURRENTLY sequence */ + Assert(!indexForm->indisready); + Assert(!indexForm->indisvalid); + indexForm->indisready = true; + break; + case INDEX_CREATE_SET_VALID: + /* Set indisvalid during a CREATE INDEX CONCURRENTLY sequence */ + Assert(indexForm->indisready); + Assert(!indexForm->indisvalid); + indexForm->indisvalid = true; + break; + } + + /* ... and write it back in-place */ + heap_inplace_update(pg_index, indexTuple); + + heap_close(pg_index, RowExclusiveLock); +} + + /* * IndexGetRelation: given an index's relation OID, get the OID of the * relation it is an index on. Uses the system cache. */ -static Oid +Oid IndexGetRelation(Oid indexId) { HeapTuple tuple; @@ -2769,12 +2853,9 @@ void reindex_index(Oid indexId, bool skip_constraint_checks) { Relation iRel, - heapRelation, - pg_index; + heapRelation; Oid heapId; IndexInfo *indexInfo; - HeapTuple indexTuple; - Form_pg_index indexForm; volatile bool skipped_constraint = false; /* @@ -2854,25 +2935,39 @@ reindex_index(Oid indexId, bool skip_constraint_checks) * * We can also reset indcheckxmin, because we have now done a * non-concurrent index build, *except* in the case where index_build - * found some still-broken HOT chains. If it did, we normally leave - * indcheckxmin alone (note that index_build won't have changed it, - * because this is a reindex). But if the index was invalid or not ready - * and there were broken HOT chains, it seems best to force indcheckxmin - * true, because the normal argument that the HOT chains couldn't conflict - * with the index is suspect for an invalid index. + * found some still-broken HOT chains. If it did, and we don't have to + * change any of the other flags, we just leave indcheckxmin alone (note + * that index_build won't have changed it, because this is a reindex). + * This is okay and desirable because not updating the tuple leaves the + * index's usability horizon (recorded as the tuple's xmin value) the same + * as it was. * - * Note that it is important to not update the pg_index entry if we don't - * have to, because updating it will move the index's usability horizon - * (recorded as the tuple's xmin value) if indcheckxmin is true. We don't - * really want REINDEX to move the usability horizon forward ever, but we - * have no choice if we are to fix indisvalid or indisready. Of course, - * clearing indcheckxmin eliminates the issue, so we're happy to do that - * if we can. Another reason for caution here is that while reindexing - * pg_index itself, we must not try to update it. We assume that - * pg_index's indexes will always have these flags in their clean state. + * But, if the index was invalid/not-ready and there were broken HOT + * chains, we had better force indcheckxmin true, because the normal + * argument that the HOT chains couldn't conflict with the index is + * suspect for an invalid index. In this case advancing the usability + * horizon is appropriate. + * + * Note that if we have to update the tuple, there is a risk of concurrent + * transactions not seeing it during their SnapshotNow scans of pg_index. + * While not especially desirable, this is safe because no such + * transaction could be trying to update the table (since we have + * ShareLock on it). The worst case is that someone might transiently + * fail to use the index for a query --- but it was probably unusable + * before anyway, if we are updating the tuple. + * + * Another reason for avoiding unnecessary updates here is that while + * reindexing pg_index itself, we must not try to update tuples in it. + * pg_index's indexes should always have these flags in their clean state, + * so that won't happen. */ if (!skipped_constraint) { + Relation pg_index; + HeapTuple indexTuple; + Form_pg_index indexForm; + bool index_bad; + pg_index = heap_open(IndexRelationId, RowExclusiveLock); indexTuple = SearchSysCacheCopy1(INDEXRELID, @@ -2881,17 +2976,28 @@ reindex_index(Oid indexId, bool skip_constraint_checks) elog(ERROR, "cache lookup failed for index %u", indexId); indexForm = (Form_pg_index) GETSTRUCT(indexTuple); - if (!indexForm->indisvalid || !indexForm->indisready || + index_bad = (!indexForm->indisvalid || + !indexForm->indisready); + if (index_bad || (indexForm->indcheckxmin && !indexInfo->ii_BrokenHotChain)) { if (!indexInfo->ii_BrokenHotChain) indexForm->indcheckxmin = false; - else if (!indexForm->indisvalid || !indexForm->indisready) + else if (index_bad) indexForm->indcheckxmin = true; indexForm->indisvalid = true; indexForm->indisready = true; simple_heap_update(pg_index, &indexTuple->t_self, indexTuple); CatalogUpdateIndexes(pg_index, indexTuple); + + /* + * Invalidate the relcache for the table, so that after we commit + * all sessions will refresh the table's index list. This ensures + * that if anyone misses seeing the pg_index row during this + * update, they'll refresh their list before attempting any update + * on the table. + */ + CacheInvalidateRelcache(heapRelation); } heap_close(pg_index, RowExclusiveLock); diff --git a/src/backend/catalog/information_schema.sql b/src/backend/catalog/information_schema.sql index 452a0ead44..342b704054 100644 --- a/src/backend/catalog/information_schema.sql +++ b/src/backend/catalog/information_schema.sql @@ -1158,20 +1158,24 @@ CREATE VIEW referential_constraints AS FROM (pg_namespace ncon INNER JOIN pg_constraint con ON ncon.oid = con.connamespace - INNER JOIN pg_class c ON con.conrelid = c.oid) - LEFT JOIN - (pg_constraint pkc - INNER JOIN pg_namespace npkc ON pkc.connamespace = npkc.oid) - ON con.confrelid = pkc.conrelid - AND _pg_keysequal(con.confkey, pkc.conkey) - - WHERE c.relkind = 'r' - AND con.contype = 'f' - AND (pkc.contype IN ('p', 'u') OR pkc.contype IS NULL) - AND (pg_has_role(c.relowner, 'USAGE') - -- SELECT privilege omitted, per SQL standard - OR has_table_privilege(c.oid, 'INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER') - OR has_any_column_privilege(c.oid, 'INSERT, UPDATE, REFERENCES') ); + INNER JOIN pg_class c ON con.conrelid = c.oid AND con.contype = 'f') + LEFT JOIN pg_depend d1 -- find constraint's dependency on an index + ON d1.objid = con.oid AND d1.classid = 'pg_constraint'::regclass + AND d1.refclassid = 'pg_class'::regclass AND d1.refobjsubid = 0 + LEFT JOIN pg_depend d2 -- find pkey/unique constraint for that index + ON d2.refclassid = 'pg_constraint'::regclass + AND d2.classid = 'pg_class'::regclass + AND d2.objid = d1.refobjid AND d2.objsubid = 0 + AND d2.deptype = 'i' + LEFT JOIN pg_constraint pkc ON pkc.oid = d2.refobjid + AND pkc.contype IN ('p', 'u') + AND pkc.conrelid = con.confrelid + LEFT JOIN pg_namespace npkc ON pkc.connamespace = npkc.oid + + WHERE pg_has_role(c.relowner, 'USAGE') + -- SELECT privilege omitted, per SQL standard + OR has_table_privilege(c.oid, 'INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER') + OR has_any_column_privilege(c.oid, 'INSERT, UPDATE, REFERENCES') ; GRANT SELECT ON referential_constraints TO PUBLIC; diff --git a/src/backend/catalog/namespace.c b/src/backend/catalog/namespace.c index ac3bed37e1..707270d064 100644 --- a/src/backend/catalog/namespace.c +++ b/src/backend/catalog/namespace.c @@ -225,7 +225,6 @@ Datum pg_is_other_temp_schema(PG_FUNCTION_ARGS); Oid RangeVarGetRelid(const RangeVar *relation, bool failOK) { - Oid namespaceId; Oid relId; /* @@ -251,17 +250,27 @@ RangeVarGetRelid(const RangeVar *relation, bool failOK) */ if (relation->relpersistence == RELPERSISTENCE_TEMP) { - if (relation->schemaname) - ereport(ERROR, - (errcode(ERRCODE_INVALID_TABLE_DEFINITION), - errmsg("temporary tables cannot specify a schema name"))); - if (OidIsValid(myTempNamespace)) + if (!OidIsValid(myTempNamespace)) + relId = InvalidOid; /* this probably can't happen? */ + else + { + if (relation->schemaname) + { + Oid namespaceId; + namespaceId = LookupExplicitNamespace(relation->schemaname); + if (namespaceId != myTempNamespace) + ereport(ERROR, + (errcode(ERRCODE_INVALID_TABLE_DEFINITION), + errmsg("temporary tables cannot specify a schema name"))); + } + relId = get_relname_relid(relation->relname, myTempNamespace); - else /* this probably can't happen? */ - relId = InvalidOid; + } } else if (relation->schemaname) { + Oid namespaceId; + /* use exact schema given */ namespaceId = LookupExplicitNamespace(relation->schemaname); relId = get_relname_relid(relation->relname, namespaceId); @@ -315,19 +324,6 @@ RangeVarGetCreationNamespace(const RangeVar *newRelation) newRelation->relname))); } - if (newRelation->relpersistence == RELPERSISTENCE_TEMP) - { - /* TEMP tables are created in our backend-local temp namespace */ - if (newRelation->schemaname) - ereport(ERROR, - (errcode(ERRCODE_INVALID_TABLE_DEFINITION), - errmsg("temporary tables cannot specify a schema name"))); - /* Initialize temp namespace if first time through */ - if (!OidIsValid(myTempNamespace)) - InitTempTableNamespace(); - return myTempNamespace; - } - if (newRelation->schemaname) { /* check for pg_temp alias */ @@ -342,6 +338,13 @@ RangeVarGetCreationNamespace(const RangeVar *newRelation) namespaceId = get_namespace_oid(newRelation->schemaname, false); /* we do not check for USAGE rights here! */ } + else if (newRelation->relpersistence == RELPERSISTENCE_TEMP) + { + /* Initialize temp namespace if first time through */ + if (!OidIsValid(myTempNamespace)) + InitTempTableNamespace(); + return myTempNamespace; + } else { /* use the default creation namespace */ @@ -393,6 +396,44 @@ RangeVarGetAndCheckCreationNamespace(const RangeVar *newRelation) return namespaceId; } +/* + * Adjust the relpersistence for an about-to-be-created relation based on the + * creation namespace, and throw an error for invalid combinations. + */ +void +RangeVarAdjustRelationPersistence(RangeVar *newRelation, Oid nspid) +{ + switch (newRelation->relpersistence) + { + case RELPERSISTENCE_TEMP: + if (!isTempOrToastNamespace(nspid)) + { + if (isAnyTempNamespace(nspid)) + ereport(ERROR, + (errcode(ERRCODE_INVALID_TABLE_DEFINITION), + errmsg("cannot create relations in temporary schemas of other sessions"))); + else + ereport(ERROR, + (errcode(ERRCODE_INVALID_TABLE_DEFINITION), + errmsg("cannot create temporary relation in non-temporary schema"))); + } + break; + case RELPERSISTENCE_PERMANENT: + if (isTempOrToastNamespace(nspid)) + newRelation->relpersistence = RELPERSISTENCE_TEMP; + else if (isAnyTempNamespace(nspid)) + ereport(ERROR, + (errcode(ERRCODE_INVALID_TABLE_DEFINITION), + errmsg("cannot create relations in temporary schemas of other sessions"))); + break; + default: + if (isAnyTempNamespace(nspid)) + ereport(ERROR, + (errcode(ERRCODE_INVALID_TABLE_DEFINITION), + errmsg("only temporary relations may be created in temporary schemas"))); + } +} + /* * RelnameGetRelid * Try to resolve an unqualified relation name. @@ -3288,7 +3329,8 @@ InitTempTableNamespace(void) * temp tables. This works because the places that access the temp * namespace for my own backend skip permissions checks on it. */ - namespaceId = NamespaceCreate(namespaceName, BOOTSTRAP_SUPERUSERID); + namespaceId = NamespaceCreate(namespaceName, BOOTSTRAP_SUPERUSERID, + true); /* Advance command counter to make namespace visible */ CommandCounterIncrement(); } @@ -3312,7 +3354,8 @@ InitTempTableNamespace(void) toastspaceId = get_namespace_oid(namespaceName, true); if (!OidIsValid(toastspaceId)) { - toastspaceId = NamespaceCreate(namespaceName, BOOTSTRAP_SUPERUSERID); + toastspaceId = NamespaceCreate(namespaceName, BOOTSTRAP_SUPERUSERID, + true); /* Advance command counter to make namespace visible */ CommandCounterIncrement(); } @@ -3538,8 +3581,10 @@ check_search_path(char **newval, void **extra, GucSource source) /* * If we aren't inside a transaction, we cannot do database access so * cannot verify the individual names. Must accept the list on faith. + * Also, if the value is coming from a noninteractive source, accept it + * anyway. */ - if (IsTransactionState()) + if (IsTransactionState() && source >= PGC_S_INTERACTIVE) { /* * Verify that all the names are either valid namespace names or diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c index bf25091582..403bd9e283 100644 --- a/src/backend/catalog/objectaddress.c +++ b/src/backend/catalog/objectaddress.c @@ -463,6 +463,11 @@ get_object_address_relobject(ObjectType objtype, List *objname, Relation *relp) address.classId = RewriteRelationId; address.objectId = get_rewrite_oid_without_relid(depname, &reloid); address.objectSubId = 0; + + /* + * Caller is expecting to get back the relation, even though we + * didn't end up using it to find the rule. + */ relation = heap_open(reloid, AccessShareLock); } else @@ -521,6 +526,10 @@ get_object_address_attribute(ObjectType objtype, List *objname, const char *attname; /* Extract relation name and open relation. */ + if (list_length(objname) < 2) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("column name must be qualified"))); attname = strVal(lfirst(list_tail(objname))); relname = list_truncate(list_copy(objname), list_length(objname) - 1); relation = relation_openrv(makeRangeVarFromNameList(relname), lockmode); diff --git a/src/backend/catalog/pg_collation.c b/src/backend/catalog/pg_collation.c index 5b92a4c0c2..383f36ef1d 100644 --- a/src/backend/catalog/pg_collation.c +++ b/src/backend/catalog/pg_collation.c @@ -131,7 +131,7 @@ CollationCreate(const char *collname, Oid collnamespace, collowner); /* dependency on extension */ - recordDependencyOnCurrentExtension(&myself); + recordDependencyOnCurrentExtension(&myself, false); /* Post creation hook for new collation */ InvokeObjectAccessHook(OAT_POST_CREATE, diff --git a/src/backend/catalog/pg_constraint.c b/src/backend/catalog/pg_constraint.c index 69979942af..79c5cfa345 100644 --- a/src/backend/catalog/pg_constraint.c +++ b/src/backend/catalog/pg_constraint.c @@ -675,7 +675,7 @@ RenameConstraintById(Oid conId, const char *newname) */ void AlterConstraintNamespaces(Oid ownerId, Oid oldNspId, - Oid newNspId, bool isType) + Oid newNspId, bool isType, ObjectAddresses *objsMoved) { Relation conRel; ScanKeyData key[1]; @@ -708,6 +708,14 @@ AlterConstraintNamespaces(Oid ownerId, Oid oldNspId, while (HeapTupleIsValid((tup = systable_getnext(scan)))) { Form_pg_constraint conform = (Form_pg_constraint) GETSTRUCT(tup); + ObjectAddress thisobj; + + thisobj.classId = ConstraintRelationId; + thisobj.objectId = HeapTupleGetOid(tup); + thisobj.objectSubId = 0; + + if (object_address_present(&thisobj, objsMoved)) + continue; if (conform->connamespace == oldNspId) { @@ -725,6 +733,8 @@ AlterConstraintNamespaces(Oid ownerId, Oid oldNspId, * changeDependencyFor(). */ } + + add_exact_object_address(&thisobj, objsMoved); } systable_endscan(scan); @@ -732,6 +742,25 @@ AlterConstraintNamespaces(Oid ownerId, Oid oldNspId, heap_close(conRel, RowExclusiveLock); } +/* + * get_constraint_relation_oids + * Find the IDs of the relations to which a constraint refers. + */ +void +get_constraint_relation_oids(Oid constraint_oid, Oid *conrelid, Oid *confrelid) +{ + HeapTuple tup; + Form_pg_constraint con; + + tup = SearchSysCache1(CONSTROID, ObjectIdGetDatum(constraint_oid)); + if (!HeapTupleIsValid(tup)) /* should not happen */ + elog(ERROR, "cache lookup failed for constraint %u", constraint_oid); + con = (Form_pg_constraint) GETSTRUCT(tup); + *conrelid = con->conrelid; + *confrelid = con->confrelid; + ReleaseSysCache(tup); +} + /* * get_constraint_oid * Find a constraint on the specified relation with the specified name. diff --git a/src/backend/catalog/pg_conversion.c b/src/backend/catalog/pg_conversion.c index 1ef6a9d24e..c84dbc6ae4 100644 --- a/src/backend/catalog/pg_conversion.c +++ b/src/backend/catalog/pg_conversion.c @@ -133,7 +133,7 @@ ConversionCreate(const char *conname, Oid connamespace, conowner); /* dependency on extension */ - recordDependencyOnCurrentExtension(&myself); + recordDependencyOnCurrentExtension(&myself, false); /* Post creation hook for new conversion */ InvokeObjectAccessHook(OAT_POST_CREATE, diff --git a/src/backend/catalog/pg_depend.c b/src/backend/catalog/pg_depend.c index 67aad86d4e..c1a4340190 100644 --- a/src/backend/catalog/pg_depend.c +++ b/src/backend/catalog/pg_depend.c @@ -130,14 +130,44 @@ recordMultipleDependencies(const ObjectAddress *depender, * * This must be called during creation of any user-definable object type * that could be a member of an extension. + * + * If isReplace is true, the object already existed (or might have already + * existed), so we must check for a pre-existing extension membership entry. + * Passing false is a guarantee that the object is newly created, and so + * could not already be a member of any extension. */ void -recordDependencyOnCurrentExtension(const ObjectAddress *object) +recordDependencyOnCurrentExtension(const ObjectAddress *object, + bool isReplace) { + /* Only whole objects can be extension members */ + Assert(object->objectSubId == 0); + if (creating_extension) { ObjectAddress extension; + /* Only need to check for existing membership if isReplace */ + if (isReplace) + { + Oid oldext; + + oldext = getExtensionOfObject(object->classId, object->objectId); + if (OidIsValid(oldext)) + { + /* If already a member of this extension, nothing to do */ + if (oldext == CurrentExtensionObject) + return; + /* Already a member of some other extension, so reject */ + ereport(ERROR, + (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), + errmsg("%s is already a member of extension \"%s\"", + getObjectDescription(object), + get_extension_name(oldext)))); + } + } + + /* OK, record it as a member of CurrentExtensionObject */ extension.classId = ExtensionRelationId; extension.objectId = CurrentExtensionObject; extension.objectSubId = 0; diff --git a/src/backend/catalog/pg_namespace.c b/src/backend/catalog/pg_namespace.c index 172f99196c..45762c25b9 100644 --- a/src/backend/catalog/pg_namespace.c +++ b/src/backend/catalog/pg_namespace.c @@ -26,10 +26,18 @@ /* ---------------- * NamespaceCreate + * + * Create a namespace (schema) with the given name and owner OID. + * + * If isTemp is true, this schema is a per-backend schema for holding + * temporary tables. Currently, the only effect of that is to prevent it + * from being linked as a member of any active extension. (If someone + * does CREATE TEMP TABLE in an extension script, we don't want the temp + * schema to become part of the extension.) * --------------- */ Oid -NamespaceCreate(const char *nspName, Oid ownerId) +NamespaceCreate(const char *nspName, Oid ownerId, bool isTemp) { Relation nspdesc; HeapTuple tup; @@ -82,8 +90,9 @@ NamespaceCreate(const char *nspName, Oid ownerId) /* dependency on owner */ recordDependencyOnOwner(NamespaceRelationId, nspoid, ownerId); - /* dependency on extension */ - recordDependencyOnCurrentExtension(&myself); + /* dependency on extension ... but not for magic temp schemas */ + if (!isTemp) + recordDependencyOnCurrentExtension(&myself, false); /* Post creation hook for new schema */ InvokeObjectAccessHook(OAT_POST_CREATE, NamespaceRelationId, nspoid, 0); diff --git a/src/backend/catalog/pg_operator.c b/src/backend/catalog/pg_operator.c index ccd0fe1997..88410e5090 100644 --- a/src/backend/catalog/pg_operator.c +++ b/src/backend/catalog/pg_operator.c @@ -776,8 +776,11 @@ makeOperatorDependencies(HeapTuple tuple) myself.objectId = HeapTupleGetOid(tuple); myself.objectSubId = 0; - /* In case we are updating a shell, delete any existing entries */ - deleteDependencyRecordsFor(myself.classId, myself.objectId, false); + /* + * In case we are updating a shell, delete any existing entries, except + * for extension membership which should remain the same. + */ + deleteDependencyRecordsFor(myself.classId, myself.objectId, true); deleteSharedDependencyRecordsFor(myself.classId, myself.objectId, 0); /* Dependency on namespace */ @@ -857,5 +860,5 @@ makeOperatorDependencies(HeapTuple tuple) oper->oprowner); /* Dependency on extension */ - recordDependencyOnCurrentExtension(&myself); + recordDependencyOnCurrentExtension(&myself, true); } diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c index a3c6bca2d3..15f3115ceb 100644 --- a/src/backend/catalog/pg_proc.c +++ b/src/backend/catalog/pg_proc.c @@ -290,6 +290,12 @@ ProcedureCreate(const char *procedureName, } } + /* Guard against a case the planner doesn't handle yet */ + if (isWindowFunc && parameterDefaults != NIL) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("window functions cannot have default arguments"))); + /* * All seems OK; prepare the data to be inserted into pg_proc. */ @@ -567,8 +573,7 @@ ProcedureCreate(const char *procedureName, * Create dependencies for the new function. If we are updating an * existing function, first delete any existing pg_depend entries. * (However, since we are not changing ownership or permissions, the - * shared dependencies do *not* need to change, and we leave them alone. - * We also don't change any pre-existing extension-membership dependency.) + * shared dependencies do *not* need to change, and we leave them alone.) */ if (is_update) deleteDependencyRecordsFor(ProcedureRelationId, retval, true); @@ -604,6 +609,11 @@ ProcedureCreate(const char *procedureName, recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL); } + /* dependency on parameter default expressions */ + if (parameterDefaults) + recordDependencyOnExpr(&myself, (Node *) parameterDefaults, + NIL, DEPENDENCY_NORMAL); + /* dependency on owner */ if (!is_update) recordDependencyOnOwner(ProcedureRelationId, retval, proowner); @@ -622,8 +632,7 @@ ProcedureCreate(const char *procedureName, } /* dependency on extension */ - if (!is_update) - recordDependencyOnCurrentExtension(&myself); + recordDependencyOnCurrentExtension(&myself, is_update); heap_freetuple(tup); @@ -635,24 +644,34 @@ ProcedureCreate(const char *procedureName, /* Verify function body */ if (OidIsValid(languageValidator)) { - ArrayType *set_items; - int save_nestlevel; + ArrayType *set_items = NULL; + int save_nestlevel = 0; /* Advance command counter so new tuple can be seen by validator */ CommandCounterIncrement(); - /* Set per-function configuration parameters */ - set_items = (ArrayType *) DatumGetPointer(proconfig); - if (set_items) /* Need a new GUC nesting level */ + /* + * Set per-function configuration parameters so that the validation is + * done with the environment the function expects. However, if + * check_function_bodies is off, we don't do this, because that would + * create dump ordering hazards that pg_dump doesn't know how to deal + * with. (For example, a SET clause might refer to a not-yet-created + * text search configuration.) This means that the validator + * shouldn't complain about anything that might depend on a GUC + * parameter when check_function_bodies is off. + */ + if (check_function_bodies) { - save_nestlevel = NewGUCNestLevel(); - ProcessGUCArray(set_items, - (superuser() ? PGC_SUSET : PGC_USERSET), - PGC_S_SESSION, - GUC_ACTION_SAVE); + set_items = (ArrayType *) DatumGetPointer(proconfig); + if (set_items) /* Need a new GUC nesting level */ + { + save_nestlevel = NewGUCNestLevel(); + ProcessGUCArray(set_items, + (superuser() ? PGC_SUSET : PGC_USERSET), + PGC_S_SESSION, + GUC_ACTION_SAVE); + } } - else - save_nestlevel = 0; /* keep compiler quiet */ OidFunctionCall1(languageValidator, ObjectIdGetDatum(retval)); @@ -680,6 +699,9 @@ fmgr_internal_validator(PG_FUNCTION_ARGS) Datum tmp; char *prosrc; + if (!CheckFunctionValidatorAccess(fcinfo->flinfo->fn_oid, funcoid)) + PG_RETURN_VOID(); + /* * We do not honor check_function_bodies since it's unlikely the function * name will be found later if it isn't there now. @@ -725,6 +747,9 @@ fmgr_c_validator(PG_FUNCTION_ARGS) char *prosrc; char *probin; + if (!CheckFunctionValidatorAccess(fcinfo->flinfo->fn_oid, funcoid)) + PG_RETURN_VOID(); + /* * It'd be most consistent to skip the check if !check_function_bodies, * but the purpose of that switch is to be helpful for pg_dump loading, @@ -776,6 +801,9 @@ fmgr_sql_validator(PG_FUNCTION_ARGS) bool haspolyarg; int i; + if (!CheckFunctionValidatorAccess(fcinfo->flinfo->fn_oid, funcoid)) + PG_RETURN_VOID(); + tuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcoid)); if (!HeapTupleIsValid(tuple)) elog(ERROR, "cache lookup failed for function %u", funcoid); @@ -857,6 +885,18 @@ fmgr_sql_validator(PG_FUNCTION_ARGS) Node *parsetree = (Node *) lfirst(lc); List *querytree_sublist; +#ifdef PGXC + /* Block CTAS in SQL functions */ + if (IsA(parsetree, SelectStmt)) + { + SelectStmt *stmt = (SelectStmt *) parsetree; + if (stmt->intoClause) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("In XC, SQL functions cannot contain utility statements"))); + } +#endif + querytree_sublist = pg_analyze_and_rewrite_params(parsetree, prosrc, (ParserSetupHook) sql_fn_parser_setup, diff --git a/src/backend/catalog/pg_shdepend.c b/src/backend/catalog/pg_shdepend.c index 8c8e7b276d..91e26f4e15 100644 --- a/src/backend/catalog/pg_shdepend.c +++ b/src/backend/catalog/pg_shdepend.c @@ -25,6 +25,9 @@ #include "catalog/pg_conversion.h" #include "catalog/pg_database.h" #include "catalog/pg_default_acl.h" +#include "catalog/pg_extension.h" +#include "catalog/pg_foreign_data_wrapper.h" +#include "catalog/pg_foreign_server.h" #include "catalog/pg_language.h" #include "catalog/pg_largeobject.h" #include "catalog/pg_namespace.h" @@ -39,6 +42,7 @@ #include "commands/collationcmds.h" #include "commands/conversioncmds.h" #include "commands/defrem.h" +#include "commands/extension.h" #include "commands/proclang.h" #include "commands/schemacmds.h" #include "commands/tablecmds.h" @@ -1210,8 +1214,12 @@ shdepDropOwned(List *roleids, DropBehavior behavior) Form_pg_shdepend sdepForm = (Form_pg_shdepend) GETSTRUCT(tuple); ObjectAddress obj; - /* We only operate on objects in the current database */ - if (sdepForm->dbid != MyDatabaseId) + /* + * We only operate on shared objects and objects in the current + * database + */ + if (sdepForm->dbid != MyDatabaseId && + sdepForm->dbid != InvalidOid) continue; switch (sdepForm->deptype) @@ -1227,11 +1235,14 @@ shdepDropOwned(List *roleids, DropBehavior behavior) sdepForm->objid); break; case SHARED_DEPENDENCY_OWNER: - /* Save it for deletion below */ - obj.classId = sdepForm->classid; - obj.objectId = sdepForm->objid; - obj.objectSubId = sdepForm->objsubid; - add_exact_object_address(&obj, deleteobjs); + /* If a local object, save it for deletion below */ + if (sdepForm->dbid == MyDatabaseId) + { + obj.classId = sdepForm->classid; + obj.objectId = sdepForm->objid; + obj.objectSubId = sdepForm->objsubid; + add_exact_object_address(&obj, deleteobjs); + } break; } } @@ -1284,8 +1295,7 @@ shdepReassignOwned(List *roleids, Oid newrole) ereport(ERROR, (errcode(ERRCODE_DEPENDENT_OBJECTS_STILL_EXIST), - errmsg("cannot drop objects owned by %s because they are " - "required by the database system", + errmsg("cannot reassign ownership of objects owned by %s because they are required by the database system", getObjectDescription(&obj)))); /* @@ -1383,6 +1393,18 @@ shdepReassignOwned(List *roleids, Oid newrole) AlterOpFamilyOwner_oid(sdepForm->objid, newrole); break; + case ForeignServerRelationId: + AlterForeignServerOwner_oid(sdepForm->objid, newrole); + break; + + case ForeignDataWrapperRelationId: + AlterForeignDataWrapperOwner_oid(sdepForm->objid, newrole); + break; + + case ExtensionRelationId: + AlterExtensionOwner_oid(sdepForm->objid, newrole); + break; + default: elog(ERROR, "unexpected classid %u", sdepForm->classid); break; diff --git a/src/backend/catalog/pg_type.c b/src/backend/catalog/pg_type.c index de5c63defe..95b17d764e 100644 --- a/src/backend/catalog/pg_type.c +++ b/src/backend/catalog/pg_type.c @@ -484,7 +484,11 @@ TypeCreate(Oid newTypeOid, * * If rebuild is true, we remove existing dependencies and rebuild them * from scratch. This is needed for ALTER TYPE, and also when replacing - * a shell type. We don't remove/rebuild extension dependencies, though. + * a shell type. We don't remove an existing extension dependency, though. + * (That means an extension can't absorb a shell type created in another + * extension, nor ALTER a type created by another extension. Also, if it + * replaces a free-standing shell type or ALTERs a free-standing type, + * that type will become a member of the extension.) */ void GenerateTypeDependencies(Oid typeNamespace, @@ -509,6 +513,7 @@ GenerateTypeDependencies(Oid typeNamespace, ObjectAddress myself, referenced; + /* If rebuild, first flush old dependencies, except extension deps */ if (rebuild) { deleteDependencyRecordsFor(TypeRelationId, typeObjectId, true); @@ -520,12 +525,12 @@ GenerateTypeDependencies(Oid typeNamespace, myself.objectSubId = 0; /* - * Make dependency on namespace and shared dependency on owner. + * Make dependencies on namespace, owner, extension. * * For a relation rowtype (that's not a composite type), we should skip * these because we'll depend on them indirectly through the pg_class * entry. Likewise, skip for implicit arrays since we'll depend on them - * through the element type. The same goes for extension membership. + * through the element type. */ if ((!OidIsValid(relationOid) || relationKind == RELKIND_COMPOSITE_TYPE) && !isImplicitArray) @@ -537,9 +542,7 @@ GenerateTypeDependencies(Oid typeNamespace, recordDependencyOnOwner(TypeRelationId, typeObjectId, owner); - /* dependency on extension */ - if (!rebuild) - recordDependencyOnCurrentExtension(&myself); + recordDependencyOnCurrentExtension(&myself, rebuild); } /* Normal dependencies on the I/O functions */ diff --git a/src/backend/catalog/pgxc_class.c b/src/backend/catalog/pgxc_class.c index 535af96ab9..07a979edc6 100644 --- a/src/backend/catalog/pgxc_class.c +++ b/src/backend/catalog/pgxc_class.c @@ -4,7 +4,7 @@ * routines to support manipulation of the pgxc_class relation * * Copyright (c) 1996-2010, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * *------------------------------------------------------------------------- diff --git a/src/backend/catalog/storage.c b/src/backend/catalog/storage.c index 57987be2c0..1877395b65 100644 --- a/src/backend/catalog/storage.c +++ b/src/backend/catalog/storage.c @@ -360,8 +360,7 @@ smgrDoPendingDeletes(bool isCommit) srel = smgropen(pending->relnode, pending->backend); for (i = 0; i <= MAX_FORKNUM; i++) { - if (smgrexists(srel, i)) - smgrdounlink(srel, i, false); + smgrdounlink(srel, i, false); } smgrclose(srel); } @@ -509,6 +508,24 @@ smgr_redo(XLogRecPtr lsn, XLogRecord *record) */ smgrcreate(reln, MAIN_FORKNUM, true); + /* + * Before we perform the truncation, update minimum recovery point + * to cover this WAL record. Once the relation is truncated, there's + * no going back. The buffer manager enforces the WAL-first rule + * for normal updates to relation files, so that the minimum recovery + * point is always updated before the corresponding change in the + * data file is flushed to disk. We have to do the same manually + * here. + * + * Doing this before the truncation means that if the truncation fails + * for some reason, you cannot start up the system even after restart, + * until you fix the underlying situation so that the truncation will + * succeed. Alternatively, we could update the minimum recovery point + * after truncation, but that would leave a small window where the + * WAL-first rule could be violated. + */ + XLogFlush(lsn); + smgrtruncate(reln, MAIN_FORKNUM, xlrec->blkno); /* Also tell xlogutils.c about it */ diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c index b059f9d784..6ef33f9492 100644 --- a/src/backend/catalog/toasting.c +++ b/src/backend/catalog/toasting.c @@ -59,11 +59,13 @@ AlterTableCreateToastTable(Oid relOid, Datum reloptions) Relation rel; /* - * Grab a DDL-exclusive lock on the target table, since we'll update the - * pg_class tuple. This is redundant for all present users. Tuple - * toasting behaves safely in the face of a concurrent TOAST table add. + * Grab an exclusive lock on the target table, since we'll update its + * pg_class tuple. This is redundant for all present uses, since caller + * will have such a lock already. But the lock is needed to ensure that + * concurrent readers of the pg_class tuple won't have visibility issues, + * so let's be safe. */ - rel = heap_open(relOid, ShareUpdateExclusiveLock); + rel = heap_open(relOid, AccessExclusiveLock); /* create_toast_table does all the work */ (void) create_toast_table(rel, InvalidOid, InvalidOid, reloptions); @@ -197,7 +199,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid, Datum reloptio * Toast tables for regular relations go in pg_toast; those for temp * relations go into the per-backend temp-toast-table namespace. */ - if (RelationUsesTempNamespace(rel)) + if (isTempOrToastNamespace(rel->rd_rel->relnamespace)) namespaceid = GetTempToastNamespace(); else namespaceid = PG_TOAST_NAMESPACE; diff --git a/src/backend/commands/alter.c b/src/backend/commands/alter.c index 215e21cae0..91df1a0aca 100644 --- a/src/backend/commands/alter.c +++ b/src/backend/commands/alter.c @@ -105,9 +105,8 @@ ExecRenameStmt(RenameStmt *stmt) { Oid relid; - CheckRelationOwnership(stmt->relation, true); - relid = RangeVarGetRelid(stmt->relation, false); + CheckRelationOwnership(relid, true); switch (stmt->renameType) { @@ -223,7 +222,6 @@ ExecAlterObjectSchemaStmt(AlterObjectSchemaStmt *stmt) case OBJECT_TABLE: case OBJECT_VIEW: case OBJECT_FOREIGN_TABLE: - CheckRelationOwnership(stmt->relation, true); AlterTableNamespace(stmt->relation, stmt->newschema, stmt->objectType, AccessExclusiveLock); break; @@ -270,7 +268,8 @@ ExecAlterObjectSchemaStmt(AlterObjectSchemaStmt *stmt) * object doesn't have a schema. */ Oid -AlterObjectNamespace_oid(Oid classId, Oid objid, Oid nspOid) +AlterObjectNamespace_oid(Oid classId, Oid objid, Oid nspOid, + ObjectAddresses *objsMoved) { Oid oldNspOid = InvalidOid; ObjectAddress dep; @@ -284,20 +283,11 @@ AlterObjectNamespace_oid(Oid classId, Oid objid, Oid nspOid) case OCLASS_CLASS: { Relation rel; - Relation classRel; rel = relation_open(objid, AccessExclusiveLock); oldNspOid = RelationGetNamespace(rel); - classRel = heap_open(RelationRelationId, RowExclusiveLock); - - AlterRelationNamespaceInternal(classRel, - objid, - oldNspOid, - nspOid, - true); - - heap_close(classRel, RowExclusiveLock); + AlterTableNamespaceInternal(rel, oldNspOid, nspOid, objsMoved); relation_close(rel, NoLock); break; @@ -308,7 +298,7 @@ AlterObjectNamespace_oid(Oid classId, Oid objid, Oid nspOid) break; case OCLASS_TYPE: - oldNspOid = AlterTypeNamespace_oid(objid, nspOid); + oldNspOid = AlterTypeNamespace_oid(objid, nspOid, objsMoved); break; case OCLASS_COLLATION: @@ -420,7 +410,7 @@ AlterObjectNamespace(Relation rel, int oidCacheId, int nameCacheId, if (Anum_owner <= 0) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), - (errmsg("must be superuser to SET SCHEMA of %s", + (errmsg("must be superuser to set schema of %s", getObjectDescriptionOids(classId, objid))))); /* Otherwise, must be owner of the existing object */ diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c index 57188bc25a..b1521be70e 100644 --- a/src/backend/commands/analyze.c +++ b/src/backend/commands/analyze.c @@ -266,7 +266,6 @@ do_analyze_rel(Relation onerel, VacuumStmt *vacstmt, bool inh) Relation *Irel; int nindexes; bool hasindex; - bool analyzableindex; VacAttrStats **vacattrstats; AnlIndexData *indexdata; int targrows, @@ -380,7 +379,6 @@ do_analyze_rel(Relation onerel, VacuumStmt *vacstmt, bool inh) } hasindex = (nindexes > 0); indexdata = NULL; - analyzableindex = false; if (hasindex) { indexdata = (AnlIndexData *) palloc0(nindexes * sizeof(AnlIndexData)); @@ -414,10 +412,7 @@ do_analyze_rel(Relation onerel, VacuumStmt *vacstmt, bool inh) thisdata->vacattrstats[tcnt] = examine_attribute(Irel[ind], i + 1, indexkey); if (thisdata->vacattrstats[tcnt] != NULL) - { tcnt++; - analyzableindex = true; - } } } thisdata->attr_cnt = tcnt; @@ -425,16 +420,11 @@ do_analyze_rel(Relation onerel, VacuumStmt *vacstmt, bool inh) } } - /* - * Quit if no analyzable columns. - */ - if (attr_cnt <= 0 && !analyzableindex) - goto cleanup; - /* * Determine how many rows we need to sample, using the worst case from * all analyzable columns. We use a lower bound of 100 rows to avoid - * possible overflow in Vitter's algorithm. + * possible overflow in Vitter's algorithm. (Note: that will also be + * the target in the corner case where there are no analyzable columns.) */ targrows = 100; for (i = 0; i < attr_cnt; i++) @@ -573,9 +563,6 @@ do_analyze_rel(Relation onerel, VacuumStmt *vacstmt, bool inh) if (!inh) pgstat_report_analyze(onerel, totalrows, totaldeadrows); - /* We skip to here if there were no analyzable columns */ -cleanup: - /* If this isn't part of VACUUM ANALYZE, let index AMs do cleanup */ if (!(vacstmt->options & VACOPT_VACUUM)) { @@ -858,12 +845,11 @@ examine_attribute(Relation onerel, int attnum, Node *index_expr) stats->attrtypmod = attr->atttypmod; } - typtuple = SearchSysCache1(TYPEOID, ObjectIdGetDatum(stats->attrtypid)); + typtuple = SearchSysCacheCopy1(TYPEOID, + ObjectIdGetDatum(stats->attrtypid)); if (!HeapTupleIsValid(typtuple)) elog(ERROR, "cache lookup failed for type %u", stats->attrtypid); - stats->attrtype = (Form_pg_type) palloc(sizeof(FormData_pg_type)); - memcpy(stats->attrtype, GETSTRUCT(typtuple), sizeof(FormData_pg_type)); - ReleaseSysCache(typtuple); + stats->attrtype = (Form_pg_type) GETSTRUCT(typtuple); stats->anl_context = anl_context; stats->tupattnum = attnum; @@ -892,7 +878,7 @@ examine_attribute(Relation onerel, int attnum, Node *index_expr) if (!ok || stats->compute_stats == NULL || stats->minrows <= 0) { - pfree(stats->attrtype); + heap_freetuple(typtuple); pfree(stats->attr); pfree(stats); return NULL; @@ -2683,7 +2669,21 @@ compute_scalar_stats(VacAttrStatsP stats, slot_idx++; } } - else if (nonnull_cnt == 0 && null_cnt > 0) + else if (nonnull_cnt > 0) + { + /* We found some non-null values, but they were all too wide */ + Assert(nonnull_cnt == toowide_cnt); + stats->stats_valid = true; + /* Do the simple null-frac and width stats */ + stats->stanullfrac = (double) null_cnt / (double) samplerows; + if (is_varwidth) + stats->stawidth = total_width / (double) nonnull_cnt; + else + stats->stawidth = stats->attrtype->typlen; + /* Assume all too-wide values are distinct, so it's a unique column */ + stats->stadistinct = -1.0; + } + else if (null_cnt > 0) { /* We found only nulls; assume the column is entirely null */ stats->stats_valid = true; diff --git a/src/backend/commands/async.c b/src/backend/commands/async.c index 02f8f9cd63..80dda9bf31 100644 --- a/src/backend/commands/async.c +++ b/src/backend/commands/async.c @@ -126,6 +126,7 @@ #include "miscadmin.h" #include "storage/ipc.h" #include "storage/lmgr.h" +#include "storage/procarray.h" #include "storage/procsignal.h" #include "storage/sinval.h" #include "tcop/tcopprot.h" @@ -349,12 +350,12 @@ static volatile sig_atomic_t notifyInterruptOccurred = 0; /* True if we've registered an on_shmem_exit cleanup */ static bool unlistenExitRegistered = false; +/* True if we're currently registered as a listener in asyncQueueControl */ +static bool amRegisteredListener = false; + /* has this backend sent notifications in the current transaction? */ static bool backendHasSentNotifications = false; -/* has this backend executed its first LISTEN in the current transaction? */ -static bool backendHasExecutedInitialListen = false; - /* GUC parameter */ bool Trace_notify = false; @@ -745,6 +746,7 @@ static void Async_UnlistenOnExit(int code, Datum arg) { Exec_UnlistenAllCommit(); + asyncQueueUnregister(); } /* @@ -789,8 +791,6 @@ PreCommit_Notify(void) if (Trace_notify) elog(DEBUG1, "PreCommit_Notify"); - Assert(backendHasExecutedInitialListen == false); - /* Preflight for any pending listen/unlisten actions */ foreach(p, pendingActions) { @@ -913,11 +913,9 @@ AtCommit_Notify(void) } } - /* - * If we did an initial LISTEN, listenChannels now has the entry, so we no - * longer need or want the flag to be set. - */ - backendHasExecutedInitialListen = false; + /* If no longer listening to anything, get out of listener array */ + if (amRegisteredListener && listenChannels == NIL) + asyncQueueUnregister(); /* And clean up */ ClearPendingActionsAndNotifies(); @@ -935,19 +933,12 @@ Exec_ListenPreCommit(void) * Nothing to do if we are already listening to something, nor if we * already ran this routine in this transaction. */ - if (listenChannels != NIL || backendHasExecutedInitialListen) + if (amRegisteredListener) return; if (Trace_notify) elog(DEBUG1, "Exec_ListenPreCommit(%d)", MyProcPid); - /* - * We need this variable to detect an aborted initial LISTEN. In that case - * we would set up our pointer but not listen on any channel. This flag - * gets cleared in AtCommit_Notify or AtAbort_Notify(). - */ - backendHasExecutedInitialListen = true; - /* * Before registering, make sure we will unlisten before dying. (Note: * this action does not get undone if we abort later.) @@ -971,6 +962,9 @@ Exec_ListenPreCommit(void) QUEUE_BACKEND_PID(MyBackendId) = MyProcPid; LWLockRelease(AsyncQueueLock); + /* Now we are listed in the global array, so remember we're listening */ + amRegisteredListener = true; + /* * Try to move our pointer forward as far as possible. This will skip over * already-committed notifications. Still, we could get notifications that @@ -1043,10 +1037,6 @@ Exec_UnlistenCommit(const char *channel) * We do not complain about unlistening something not being listened; * should we? */ - - /* If no longer listening to anything, get out of listener array */ - if (listenChannels == NIL) - asyncQueueUnregister(); } /* @@ -1062,8 +1052,6 @@ Exec_UnlistenAllCommit(void) list_free_deep(listenChannels); listenChannels = NIL; - - asyncQueueUnregister(); } /* @@ -1181,6 +1169,9 @@ asyncQueueUnregister(void) Assert(listenChannels == NIL); /* else caller error */ + if (!amRegisteredListener) /* nothing to do */ + return; + LWLockAcquire(AsyncQueueLock, LW_SHARED); /* check if entry is valid and oldest ... */ advanceTail = (MyProcPid == QUEUE_BACKEND_PID(MyBackendId)) && @@ -1189,6 +1180,9 @@ asyncQueueUnregister(void) QUEUE_BACKEND_PID(MyBackendId) = InvalidPid; LWLockRelease(AsyncQueueLock); + /* mark ourselves as no longer listed in the global array */ + amRegisteredListener = false; + /* If we were the laziest backend, try to advance the tail pointer */ if (advanceTail) asyncQueueAdvanceTail(); @@ -1306,6 +1300,7 @@ static ListCell * asyncQueueAddEntries(ListCell *nextNotify) { AsyncQueueEntry qe; + QueuePosition queue_head; int pageno; int offset; int slotno; @@ -1313,8 +1308,21 @@ asyncQueueAddEntries(ListCell *nextNotify) /* We hold both AsyncQueueLock and AsyncCtlLock during this operation */ LWLockAcquire(AsyncCtlLock, LW_EXCLUSIVE); + /* + * We work with a local copy of QUEUE_HEAD, which we write back to shared + * memory upon exiting. The reason for this is that if we have to advance + * to a new page, SimpleLruZeroPage might fail (out of disk space, for + * instance), and we must not advance QUEUE_HEAD if it does. (Otherwise, + * subsequent insertions would try to put entries into a page that slru.c + * thinks doesn't exist yet.) So, use a local position variable. Note + * that if we do fail, any already-inserted queue entries are forgotten; + * this is okay, since they'd be useless anyway after our transaction + * rolls back. + */ + queue_head = QUEUE_HEAD; + /* Fetch the current page */ - pageno = QUEUE_POS_PAGE(QUEUE_HEAD); + pageno = QUEUE_POS_PAGE(queue_head); slotno = SimpleLruReadPage(AsyncCtl, pageno, true, InvalidTransactionId); /* Note we mark the page dirty before writing in it */ AsyncCtl->shared->page_dirty[slotno] = true; @@ -1326,7 +1334,7 @@ asyncQueueAddEntries(ListCell *nextNotify) /* Construct a valid queue entry in local variable qe */ asyncQueueNotificationToEntry(n, &qe); - offset = QUEUE_POS_OFFSET(QUEUE_HEAD); + offset = QUEUE_POS_OFFSET(queue_head); /* Check whether the entry really fits on the current page */ if (offset + qe.length <= QUEUE_PAGESIZE) @@ -1352,8 +1360,8 @@ asyncQueueAddEntries(ListCell *nextNotify) &qe, qe.length); - /* Advance QUEUE_HEAD appropriately, and note if page is full */ - if (asyncQueueAdvance(&(QUEUE_HEAD), qe.length)) + /* Advance queue_head appropriately, and detect if page is full */ + if (asyncQueueAdvance(&(queue_head), qe.length)) { /* * Page is full, so we're done here, but first fill the next page @@ -1363,12 +1371,15 @@ asyncQueueAddEntries(ListCell *nextNotify) * asyncQueueIsFull() ensured that there is room to create this * page without overrunning the queue. */ - slotno = SimpleLruZeroPage(AsyncCtl, QUEUE_POS_PAGE(QUEUE_HEAD)); + slotno = SimpleLruZeroPage(AsyncCtl, QUEUE_POS_PAGE(queue_head)); /* And exit the loop */ break; } } + /* Success, so update the global QUEUE_HEAD */ + QUEUE_HEAD = queue_head; + LWLockRelease(AsyncCtlLock); return nextNotify; @@ -1528,21 +1539,12 @@ void AtAbort_Notify(void) { /* - * If we LISTEN but then roll back the transaction we have set our pointer - * but have not made any entry in listenChannels. In that case, remove our - * pointer again. + * If we LISTEN but then roll back the transaction after PreCommit_Notify, + * we have registered as a listener but have not made any entry in + * listenChannels. In that case, deregister again. */ - if (backendHasExecutedInitialListen) - { - /* - * Checking listenChannels should be redundant but it can't hurt doing - * it for safety reasons. - */ - if (listenChannels == NIL) - asyncQueueUnregister(); - - backendHasExecutedInitialListen = false; - } + if (amRegisteredListener && listenChannels == NIL) + asyncQueueUnregister(); /* And clean up */ ClearPendingActionsAndNotifies(); @@ -1672,11 +1674,15 @@ HandleNotifyInterrupt(void) /* * We may be called while ImmediateInterruptOK is true; turn it off - * while messing with the NOTIFY state. (We would have to save and - * restore it anyway, because PGSemaphore operations inside - * ProcessIncomingNotify() might reset it.) + * while messing with the NOTIFY state. This prevents problems if + * SIGINT or similar arrives while we're working. Just to be real + * sure, bump the interrupt holdoff counter as well. That way, even + * if something inside ProcessIncomingNotify() transiently sets + * ImmediateInterruptOK (eg while waiting on a lock), we won't get + * interrupted until we're done with the notify interrupt. */ ImmediateInterruptOK = false; + HOLD_INTERRUPTS(); /* * I'm not sure whether some flavors of Unix might allow another @@ -1706,8 +1712,10 @@ HandleNotifyInterrupt(void) } /* - * Restore ImmediateInterruptOK, and check for interrupts if needed. + * Restore the holdoff level and ImmediateInterruptOK, and check for + * interrupts if needed. */ + RESUME_INTERRUPTS(); ImmediateInterruptOK = save_ImmediateInterruptOK; if (save_ImmediateInterruptOK) CHECK_FOR_INTERRUPTS(); @@ -1994,7 +2002,27 @@ asyncQueueProcessPageEntries(QueuePosition *current, /* Ignore messages destined for other databases */ if (qe->dboid == MyDatabaseId) { - if (TransactionIdDidCommit(qe->xid)) + if (TransactionIdIsInProgress(qe->xid)) + { + /* + * The source transaction is still in progress, so we can't + * process this message yet. Break out of the loop, but first + * back up *current so we will reprocess the message next + * time. (Note: it is unlikely but not impossible for + * TransactionIdDidCommit to fail, so we can't really avoid + * this advance-then-back-up behavior when dealing with an + * uncommitted message.) + * + * Note that we must test TransactionIdIsInProgress before we + * test TransactionIdDidCommit, else we might return a message + * from a transaction that is not yet visible to snapshots; + * compare the comments at the head of tqual.c. + */ + *current = thisentry; + reachedStop = true; + break; + } + else if (TransactionIdDidCommit(qe->xid)) { /* qe->data is the null-terminated channel name */ char *channel = qe->data; @@ -2007,27 +2035,12 @@ asyncQueueProcessPageEntries(QueuePosition *current, NotifyMyFrontEnd(channel, payload, qe->srcPid); } } - else if (TransactionIdDidAbort(qe->xid)) - { - /* - * If the source transaction aborted, we just ignore its - * notifications. - */ - } else { /* - * The transaction has neither committed nor aborted so far, - * so we can't process its message yet. Break out of the - * loop, but first back up *current so we will reprocess the - * message next time. (Note: it is unlikely but not - * impossible for TransactionIdDidCommit to fail, so we can't - * really avoid this advance-then-back-up behavior when - * dealing with an uncommitted message.) + * The source transaction aborted or crashed, so we just + * ignore its notifications. */ - *current = thisentry; - reachedStop = true; - break; } } diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c index c020dc2e4e..81e7282526 100644 --- a/src/backend/commands/cluster.c +++ b/src/backend/commands/cluster.c @@ -454,7 +454,7 @@ check_index_is_clusterable(Relation OldHeap, Oid indexOid, bool recheck, LOCKMOD * might put recently-dead tuples out-of-order in the new table, and there * is little harm in that.) */ - if (!OldIndex->rd_index->indisvalid) + if (!IndexIsValid(OldIndex->rd_index)) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("cannot cluster on invalid index \"%s\"", @@ -468,6 +468,11 @@ check_index_is_clusterable(Relation OldHeap, Oid indexOid, bool recheck, LOCKMOD * mark_index_clustered: mark the specified index as the one clustered on * * With indexOid == InvalidOid, will mark all indexes of rel not-clustered. + * + * Note: we do transactional updates of the pg_index rows, which are unsafe + * against concurrent SnapshotNow scans of pg_index. Therefore this is unsafe + * to execute with less than full exclusive lock on the parent table; + * otherwise concurrent executions of RelationGetIndexList could miss indexes. */ void mark_index_clustered(Relation rel, Oid indexOid) @@ -523,6 +528,9 @@ mark_index_clustered(Relation rel, Oid indexOid) } else if (thisIndexOid == indexOid) { + /* this was checked earlier, but let's be real sure */ + if (!IndexIsValid(indexForm)) + elog(ERROR, "cannot cluster on invalid index %u", indexOid); indexForm->indisclustered = true; simple_heap_update(pg_index, &indexTuple->t_self, indexTuple); CatalogUpdateIndexes(pg_index, indexTuple); @@ -800,12 +808,19 @@ copy_heap_data(Oid OIDNewHeap, Oid OIDOldHeap, Oid OIDOldIndex, * When doing swap by content, any toast pointers written into NewHeap * must use the old toast table's OID, because that's where the toast * data will eventually be found. Set this up by setting rd_toastoid. + * This also tells toast_save_datum() to preserve the toast value + * OIDs, which we want so as not to invalidate toast pointers in + * system catalog caches, and to avoid making multiple copies of a + * single toast value. + * * Note that we must hold NewHeap open until we are done writing data, * since the relcache will not guarantee to remember this setting once * the relation is closed. Also, this technique depends on the fact * that no one will try to read from the NewHeap until after we've * finished writing it and swapping the rels --- otherwise they could - * follow the toast pointers to the wrong place. + * follow the toast pointers to the wrong place. (It would actually + * work for values copied over from the old toast table, but not for + * any values that we toast which were previously not toasted.) */ NewHeap->rd_toastoid = OldHeap->rd_rel->reltoastrelid; } diff --git a/src/backend/commands/collationcmds.c b/src/backend/commands/collationcmds.c index 7f8a108374..7ef33b77b4 100644 --- a/src/backend/commands/collationcmds.c +++ b/src/backend/commands/collationcmds.c @@ -123,7 +123,7 @@ DefineCollation(List *names, List *parameters) if (!collcollate) ereport(ERROR, (errcode(ERRCODE_INVALID_OBJECT_DEFINITION), - errmsg("parameter \"lc_collate\" parameter must be specified"))); + errmsg("parameter \"lc_collate\" must be specified"))); if (!collctype) ereport(ERROR, diff --git a/src/backend/commands/comment.c b/src/backend/commands/comment.c index 456d161b9d..908705e91e 100644 --- a/src/backend/commands/comment.c +++ b/src/backend/commands/comment.c @@ -5,7 +5,7 @@ * PostgreSQL object comments utility code. * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * IDENTIFICATION * src/backend/commands/comment.c diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c index 911958626b..ea29b5dcfd 100644 --- a/src/backend/commands/copy.c +++ b/src/backend/commands/copy.c @@ -199,9 +199,9 @@ typedef struct CopyStateData int raw_buf_len; /* total # of bytes stored */ #ifdef PGXC /* - * On coordinator we need to rewrite query. - * While client may submit a copy command dealing with file, data nodes - * always send/receive data to/from the coordinator. So we can not use + * On Coordinator we need to rewrite query. + * While client may submit a copy command dealing with file, Datanodes + * always send/receive data to/from the Coordinator. So we can not use * original statement and should rewrite statement, specifing STDIN/STDOUT * as copy source or destination */ @@ -214,7 +214,7 @@ typedef struct CopyStateData RelationLocInfo *rel_loc; /* the locator key */ int idx_dist_by_col; /* index of the distributed by column */ - PGXCNodeHandle **connections; /* Involved data node connections */ + PGXCNodeHandle **connections; /* Involved Datanode connections */ TupleDesc tupDesc; /* for INSERT SELECT */ #endif } CopyStateData; @@ -772,9 +772,9 @@ CopyLoadRawBuf(CopyState cstate) * When rewriting query to be sent down to nodes we should escape special * characters, that may present in the value. The characters are backslash(\) * and single quote ('). These characters are escaped by doubling. We do not - * have to escape characters like \t, \v, \b, etc. because datanode interprets + * have to escape characters like \t, \v, \b, etc. because Datanode interprets * them properly. - * We use E'...' syntax for litherals containing backslashes. + * We use E'...' syntax for literals containing backslashes. */ static void CopyQuoteStr(StringInfo query_buf, char *value) @@ -812,52 +812,6 @@ CopyQuoteStr(StringInfo query_buf, char *value) APPENDSOFAR; appendStringInfoChar(query_buf, '\''); } - -/* - * CopyQuoteIdentifier determine if identifier needs to be quoted and surround - * it with double quotes - */ -static void -CopyQuoteIdentifier(StringInfo query_buf, char *value) -{ - char *start = value; - char *current = value; - char c; - int len = strlen(value); - bool need_quote = (strspn(value, "_abcdefghijklmnopqrstuvwxyz0123456789") < len) - || (strchr("_abcdefghijklmnopqrstuvwxyz", value[0]) == NULL); - - if (need_quote) - { - appendStringInfoChar(query_buf, '"'); - -#define APPENDSOFAR \ - if (current > start) \ - appendBinaryStringInfo(query_buf, start, current - start) - - while ((c = *current) != '\0') - { - switch (c) - { - case '"': - APPENDSOFAR; - /* Double current */ - appendStringInfoChar(query_buf, c); - /* Second current will be appended next time */ - start = current; - /* fallthru */ - default: - current++; - } - } - APPENDSOFAR; - appendStringInfoChar(query_buf, '"'); - } - else - { - appendBinaryStringInfo(query_buf, value, len); - } -} #endif @@ -946,7 +900,7 @@ DoCopy(const CopyStmt *stmt, const char *queryString) if (is_from) { /* check read-only transaction */ - if (XactReadOnly && rel->rd_backend != MyBackendId) + if (XactReadOnly && !rel->rd_islocaltemp) PreventCommandIfReadOnly("COPY FROM"); cstate = BeginCopyFrom(rel, stmt->filename, @@ -1506,13 +1460,12 @@ BeginCopy(bool is_from, if (cstate->rel_loc) { cstate->connections = DataNodeCopyBegin(cstate->query_buf.data, - exec_nodes->nodeList, - GetActiveSnapshot(), - is_from); + exec_nodes->nodeList, + GetActiveSnapshot()); if (!cstate->connections) ereport(ERROR, (errcode(ERRCODE_CONNECTION_EXCEPTION), - errmsg("Failed to initialize data nodes for COPY"))); + errmsg("Failed to initialize Datanodes for COPY"))); } } #endif @@ -1853,7 +1806,7 @@ CopyTo(CopyState cstate) #ifdef PGXC /* - * In PGXC, it is not necessary for a datanode to generate + * In PGXC, it is not necessary for a Datanode to generate * the trailer as Coordinator is in charge of it */ if (cstate->binary && IS_PGXC_COORDINATOR) @@ -2225,7 +2178,7 @@ CopyFrom(CopyState cstate) #ifdef PGXC /* - * Send the data row as-is to the datanodes. If default values + * Send the data row as-is to the Datanodes. If default values * are to be inserted, append them onto the data row. */ @@ -2260,7 +2213,7 @@ CopyFrom(CopyState cstate) cstate->connections)) ereport(ERROR, (errcode(ERRCODE_CONNECTION_EXCEPTION), - errmsg("Copy failed on a data node"))); + errmsg("Copy failed on a Datanode"))); processed++; } else @@ -2456,9 +2409,9 @@ BeginCopyFrom(Relation rel, if (IS_PGXC_COORDINATOR) { /* - * If default expr is shippable to datanode, don't include - * default values in the data row sent to the datanode; let - * the datanode insert the default values. + * If default expr is shippable to Datanode, don't include + * default values in the data row sent to the Datanode; let + * the Datanode insert the default values. */ Expr *planned_defexpr = expression_planner((Expr *) defexpr); if (!is_foreign_expr((Node*)planned_defexpr, NULL)) @@ -2814,7 +2767,7 @@ NextCopyFrom(CopyState cstate, ExprContext *econtext, resetStringInfo(&cstate->line_buf); enlargeStringInfo(&cstate->line_buf, sizeof(uint16)); - /* Receive field count directly from datanodes */ + /* Receive field count directly from Datanodes */ fld_count = htons(fld_count); appendBinaryStringInfo(&cstate->line_buf, (char *) &fld_count, sizeof(uint16)); } @@ -2847,7 +2800,7 @@ NextCopyFrom(CopyState cstate, ExprContext *econtext, resetStringInfo(&cstate->line_buf); enlargeStringInfo(&cstate->line_buf, sizeof(uint16)); - /* Receive field count directly from datanodes */ + /* Receive field count directly from Datanodes */ fld_count = htons(fld_count); appendBinaryStringInfo(&cstate->line_buf, (char *) &fld_count, sizeof(uint16)); } @@ -2960,7 +2913,7 @@ NextCopyFrom(CopyState cstate, ExprContext *econtext, * 2. converts each default value into its output form, * 3. then appends it into cstate->defval_buf buffer. * This buffer would later be appended into the final data row that is sent to - * the datanodes. + * the Datanodes. * So for e.g., for a table : * tab (id1 int, v varchar, id2 default nextval('tab_id2_seq'::regclass), id3 ) * with the user-supplied data : "2 | abcd", @@ -2989,7 +2942,7 @@ append_defvals(Datum *values, CopyState cstate) * For using the values in their output form, it is not sufficient * to just call its output function. The format should match * that of COPY because after all we are going to send this value as - * an input data row to the datanode using COPY FROM syntax. So we call + * an input data row to the Datanode using COPY FROM syntax. So we call * exactly those functions that are used to output the values in case * of COPY TO. For instace, CopyAttributeOutText() takes care of * escaping, CopySendInt32 take care of byte ordering, etc. All these @@ -3598,7 +3551,17 @@ CopyReadAttributesText(CopyState cstate) start_ptr = cur_ptr; cstate->raw_fields[fieldno] = output_ptr; - /* Scan data for field */ + /* + * Scan data for field. + * + * Note that in this loop, we are scanning to locate the end of field + * and also speculatively performing de-escaping. Once we find the + * end-of-field, we can match the raw field contents against the null + * marker string. Only after that comparison fails do we know that + * de-escaping is actually the right thing to do; therefore we *must + * not* throw any syntax errors before we've done the null-marker + * check. + */ for (;;) { char c; @@ -3711,26 +3674,29 @@ CopyReadAttributesText(CopyState cstate) *output_ptr++ = c; } - /* Terminate attribute value in output area */ - *output_ptr++ = '\0'; - - /* - * If we de-escaped a non-7-bit-ASCII char, make sure we still have - * valid data for the db encoding. Avoid calling strlen here for the - * sake of efficiency. - */ - if (saw_non_ascii) - { - char *fld = cstate->raw_fields[fieldno]; - - pg_verifymbstr(fld, output_ptr - (fld + 1), false); - } - /* Check whether raw input matched null marker */ input_len = end_ptr - start_ptr; if (input_len == cstate->null_print_len && strncmp(start_ptr, cstate->null_print, input_len) == 0) cstate->raw_fields[fieldno] = NULL; + else + { + /* + * At this point we know the field is supposed to contain data. + * + * If we de-escaped any non-7-bit-ASCII chars, make sure the + * resulting string is valid data for the db encoding. + */ + if (saw_non_ascii) + { + char *fld = cstate->raw_fields[fieldno]; + + pg_verifymbstr(fld, output_ptr - fld, false); + } + } + + /* Terminate attribute value in output area */ + *output_ptr++ = '\0'; fieldno++; /* Done if we hit EOL instead of a delim */ @@ -4387,7 +4353,6 @@ static ExecNodes* build_copy_statement(CopyState cstate, List *attnamelist, TupleDesc tupDesc, bool is_from, List *force_quote, List *force_notnull) { - char *pPartByCol; ExecNodes *exec_nodes = makeNode(ExecNodes); int attnum; List *attnums = CopyGetAttnums(tupDesc, cstate->rel, attnamelist); @@ -4396,31 +4361,34 @@ build_copy_statement(CopyState cstate, List *attnamelist, /* * If target table does not exists on nodes (e.g. system table) * the location info returned is NULL. This is the criteria, when - * we need to run Copy on coordinator + * we need to run COPY on Coordinator */ cstate->rel_loc = GetRelationLocInfo(RelationGetRelid(cstate->rel)); - pPartByCol = GetRelationDistColumn(cstate->rel_loc); if (cstate->rel_loc) { + exec_nodes = makeNode(ExecNodes); + /* - * Pick up one node only - * This case corresponds to a replicated table with COPY TO - * + * Pick up one node only. This case corresponds to a replicated table + * with COPY TO. */ if (!is_from && cstate->rel_loc->locatorType == 'R') exec_nodes->nodeList = GetAnyDataNode(cstate->rel_loc->nodeList); else { /* All nodes necessary */ - exec_nodes->nodeList = list_concat(exec_nodes->nodeList, cstate->rel_loc->nodeList); + exec_nodes->nodeList = list_concat(exec_nodes->nodeList, + cstate->rel_loc->nodeList); } } cstate->idx_dist_by_col = -1; - if (pPartByCol) + if (cstate->rel_loc && cstate->rel_loc->partAttrNum != 0) { ListCell *cur; + char *pPartByCol = GetRelationDistColumn(cstate->rel_loc); + foreach(cur, attnums) { attnum = lfirst_int(cur); @@ -4433,14 +4401,15 @@ build_copy_statement(CopyState cstate, List *attnamelist, } /* - * Build up query string for the data nodes, it should match + * Build up query string for the Datanodes, it should match * to original string, but should have STDIN/STDOUT instead * of filename. */ initStringInfo(&cstate->query_buf); appendStringInfoString(&cstate->query_buf, "COPY "); - appendStringInfo(&cstate->query_buf, "%s", RelationGetRelationName(cstate->rel)); + appendStringInfo(&cstate->query_buf, "%s", + quote_identifier(RelationGetRelationName(cstate->rel))); if (attnamelist) { @@ -4451,7 +4420,8 @@ build_copy_statement(CopyState cstate, List *attnamelist, { if (prev) appendStringInfoString(&cstate->query_buf, ", "); - CopyQuoteIdentifier(&cstate->query_buf, strVal(lfirst(cell))); + appendStringInfoString(&cstate->query_buf, + quote_identifier(strVal(lfirst(cell)))); prev = cell; } @@ -4475,8 +4445,8 @@ build_copy_statement(CopyState cstate, List *attnamelist, !is_foreign_expr((Node*)expression_planner(defexpr), NULL)) { appendStringInfoString(&cstate->query_buf, ", "); - CopyQuoteIdentifier(&cstate->query_buf, - NameStr(tupDesc->attrs[attnum - 1]->attname)); + appendStringInfoString(&cstate->query_buf, + quote_identifier(NameStr(tupDesc->attrs[attnum - 1]->attname))); } } } @@ -4542,7 +4512,8 @@ build_copy_statement(CopyState cstate, List *attnamelist, { if (prev) appendStringInfoString(&cstate->query_buf, ", "); - CopyQuoteIdentifier(&cstate->query_buf, strVal(lfirst(cell))); + appendStringInfoString(&cstate->query_buf, + quote_identifier(strVal(lfirst(cell)))); prev = cell; } } @@ -4556,7 +4527,8 @@ build_copy_statement(CopyState cstate, List *attnamelist, { if (prev) appendStringInfoString(&cstate->query_buf, ", "); - CopyQuoteIdentifier(&cstate->query_buf, strVal(lfirst(cell))); + appendStringInfoString(&cstate->query_buf, + quote_identifier(strVal(lfirst(cell)))); prev = cell; } } diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c index 8f6ee8ac68..5e8d46be84 100644 --- a/src/backend/commands/dbcommands.c +++ b/src/backend/commands/dbcommands.c @@ -135,6 +135,7 @@ createdb(const CreatedbStmt *stmt) int notherbackends; int npreparedxacts; createdb_failure_params fparms; + Snapshot snapshot; /* Extract options from the statement node tree */ foreach(option, stmt->options) @@ -535,6 +536,29 @@ createdb(const CreatedbStmt *stmt) */ RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_FORCE | CHECKPOINT_WAIT); + /* + * Take an MVCC snapshot to use while scanning through pg_tablespace. For + * safety, register the snapshot (this prevents it from changing if + * something else were to request a snapshot during the loop). + * + * Traversing pg_tablespace with an MVCC snapshot is necessary to provide + * us with a consistent view of the tablespaces that exist. Using + * SnapshotNow here would risk seeing the same tablespace multiple times, + * or worse not seeing a tablespace at all, if its tuple is moved around + * by a concurrent update (eg an ACL change). + * + * Inconsistency of this sort is inherent to all SnapshotNow scans, unless + * some lock is held to prevent concurrent updates of the rows being + * sought. There should be a generic fix for that, but in the meantime + * it's worth fixing this case in particular because we are doing very + * heavyweight operations within the scan, so that the elapsed time for + * the scan is vastly longer than for most other catalog scans. That + * means there's a much wider window for concurrent updates to cause + * trouble here than anywhere else. XXX this code should be changed + * whenever a generic fix is implemented. + */ + snapshot = RegisterSnapshot(GetLatestSnapshot()); + /* * Once we start copying subdirectories, we need to be able to clean 'em * up if we fail. Use an ENSURE block to make sure this happens. (This @@ -552,7 +576,7 @@ createdb(const CreatedbStmt *stmt) * each one to the new database. */ rel = heap_open(TableSpaceRelationId, AccessShareLock); - scan = heap_beginscan(rel, SnapshotNow, 0, NULL); + scan = heap_beginscan(rel, snapshot, 0, NULL); while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL) { Oid srctablespace = HeapTupleGetOid(tuple); @@ -656,6 +680,9 @@ createdb(const CreatedbStmt *stmt) } PG_END_ENSURE_ERROR_CLEANUP(createdb_failure_callback, PointerGetDatum(&fparms)); + + /* Free our snapshot */ + UnregisterSnapshot(snapshot); } /* @@ -884,7 +911,7 @@ dropdb(const char *dbname, bool missing_ok) * according to pg_database, which is not good. */ ForceSyncCommit(); - + #ifdef PGXC /* Drop sequences on gtm that are on the database dropped. */ if (IS_PGXC_COORDINATOR && !IsConnFromCoord()) @@ -976,6 +1003,25 @@ RenameDatabase(const char *oldname, const char *newname) heap_close(rel, NoLock); } +#ifdef PGXC +/* + * IsSetTableSpace: + * Returns true if it is ALTER DATABASE SET TABLESPACE + */ +bool +IsSetTableSpace(AlterDatabaseStmt *stmt) +{ + ListCell *option; + /* Handle the SET TABLESPACE option separately */ + foreach(option, stmt->options) + { + DefElem *defel = (DefElem *) lfirst(option); + if (strcmp(defel->defname, "tablespace") == 0) + return true; + } + return false; +} +#endif /* * ALTER DATABASE SET TABLESPACE @@ -1697,9 +1743,20 @@ remove_dbtablespaces(Oid db_id) Relation rel; HeapScanDesc scan; HeapTuple tuple; + Snapshot snapshot; + + /* + * As in createdb(), we'd better use an MVCC snapshot here, since this + * scan can run for a long time. Duplicate visits to tablespaces would be + * harmless, but missing a tablespace could result in permanently leaked + * files. + * + * XXX change this when a generic fix for SnapshotNow races is implemented + */ + snapshot = RegisterSnapshot(GetLatestSnapshot()); rel = heap_open(TableSpaceRelationId, AccessShareLock); - scan = heap_beginscan(rel, SnapshotNow, 0, NULL); + scan = heap_beginscan(rel, snapshot, 0, NULL); while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL) { Oid dsttablespace = HeapTupleGetOid(tuple); @@ -1745,6 +1802,7 @@ remove_dbtablespaces(Oid db_id) heap_endscan(scan); heap_close(rel, AccessShareLock); + UnregisterSnapshot(snapshot); } /* @@ -1766,9 +1824,19 @@ check_db_file_conflict(Oid db_id) Relation rel; HeapScanDesc scan; HeapTuple tuple; + Snapshot snapshot; + + /* + * As in createdb(), we'd better use an MVCC snapshot here; missing a + * tablespace could result in falsely reporting the OID is unique, with + * disastrous future consequences per the comment above. + * + * XXX change this when a generic fix for SnapshotNow races is implemented + */ + snapshot = RegisterSnapshot(GetLatestSnapshot()); rel = heap_open(TableSpaceRelationId, AccessShareLock); - scan = heap_beginscan(rel, SnapshotNow, 0, NULL); + scan = heap_beginscan(rel, snapshot, 0, NULL); while ((tuple = heap_getnext(scan, ForwardScanDirection)) != NULL) { Oid dsttablespace = HeapTupleGetOid(tuple); @@ -1794,6 +1862,8 @@ check_db_file_conflict(Oid db_id) heap_endscan(scan); heap_close(rel, AccessShareLock); + UnregisterSnapshot(snapshot); + return result; } diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c index 877bc4ae72..7ab3b85194 100644 --- a/src/backend/commands/extension.c +++ b/src/backend/commands/extension.c @@ -33,6 +33,7 @@ #include "catalog/indexing.h" #include "catalog/namespace.h" #include "catalog/objectaccess.h" +#include "catalog/pg_collation.h" #include "catalog/pg_depend.h" #include "catalog/pg_extension.h" #include "catalog/pg_namespace.h" @@ -40,6 +41,7 @@ #include "commands/alter.h" #include "commands/comment.h" #include "commands/extension.h" +#include "commands/schemacmds.h" #include "commands/trigger.h" #include "executor/executor.h" #include "funcapi.h" @@ -626,7 +628,7 @@ read_extension_aux_control_file(const ExtensionControlFile *pcontrol, } /* - * Read a SQL script file into a string, and convert to database encoding + * Read an SQL script file into a string, and convert to database encoding */ static char * read_extension_script_file(const ExtensionControlFile *control, @@ -752,7 +754,7 @@ execute_sql_string(const char *sql, const char *filename) false, /* not top level */ dest, #ifdef PGXC - false, + true, /* this is created at remote node level */ #endif /* PGXC */ NULL); } @@ -778,9 +780,7 @@ execute_extension_script(Oid extensionOid, ExtensionControlFile *control, const char *schemaName, Oid schemaOid) { char *filename; - char *save_client_min_messages, - *save_log_min_messages, - *save_search_path; + int save_nestlevel; StringInfoData pathbuf; ListCell *lc; @@ -812,22 +812,20 @@ execute_extension_script(Oid extensionOid, ExtensionControlFile *control, * so that we won't spam the user with useless NOTICE messages from common * script actions like creating shell types. * - * We use the equivalent of SET LOCAL to ensure the setting is undone upon - * error. + * We use the equivalent of a function SET option to allow the setting to + * persist for exactly the duration of the script execution. guc.c also + * takes care of undoing the setting on error. */ - save_client_min_messages = - pstrdup(GetConfigOption("client_min_messages", false)); + save_nestlevel = NewGUCNestLevel(); + if (client_min_messages < WARNING) (void) set_config_option("client_min_messages", "warning", PGC_USERSET, PGC_S_SESSION, - GUC_ACTION_LOCAL, true); - - save_log_min_messages = - pstrdup(GetConfigOption("log_min_messages", false)); + GUC_ACTION_SAVE, true); if (log_min_messages < WARNING) (void) set_config_option("log_min_messages", "warning", PGC_SUSET, PGC_S_SESSION, - GUC_ACTION_LOCAL, true); + GUC_ACTION_SAVE, true); /* * Set up the search path to contain the target schema, then the schemas @@ -836,10 +834,9 @@ execute_extension_script(Oid extensionOid, ExtensionControlFile *control, * * Note: it might look tempting to use PushOverrideSearchPath for this, * but we cannot do that. We have to actually set the search_path GUC in - * case the extension script examines or changes it. + * case the extension script examines or changes it. In any case, the + * GUC_ACTION_SAVE method is just as convenient. */ - save_search_path = pstrdup(GetConfigOption("search_path", false)); - initStringInfo(&pathbuf); appendStringInfoString(&pathbuf, quote_identifier(schemaName)); foreach(lc, requiredSchemas) @@ -853,7 +850,7 @@ execute_extension_script(Oid extensionOid, ExtensionControlFile *control, (void) set_config_option("search_path", pathbuf.data, PGC_USERSET, PGC_S_SESSION, - GUC_ACTION_LOCAL, true); + GUC_ACTION_SAVE, true); /* * Set creating_extension and related variables so that @@ -864,26 +861,39 @@ execute_extension_script(Oid extensionOid, ExtensionControlFile *control, CurrentExtensionObject = extensionOid; PG_TRY(); { - char *sql = read_extension_script_file(control, filename); + char *c_sql = read_extension_script_file(control, filename); + Datum t_sql; + + /* We use various functions that want to operate on text datums */ + t_sql = CStringGetTextDatum(c_sql); + + /* + * Reduce any lines beginning with "\echo" to empty. This allows + * scripts to contain messages telling people not to run them via + * psql, which has been found to be necessary due to old habits. + */ + t_sql = DirectFunctionCall4Coll(textregexreplace, + C_COLLATION_OID, + t_sql, + CStringGetTextDatum("^\\\\echo.*$"), + CStringGetTextDatum(""), + CStringGetTextDatum("ng")); /* * If it's not relocatable, substitute the target schema name for * occcurrences of @extschema@. * - * For a relocatable extension, we just run the script as-is. There - * cannot be any need for @extschema@, else it wouldn't be - * relocatable. + * For a relocatable extension, we needn't do this. There cannot be + * any need for @extschema@, else it wouldn't be relocatable. */ if (!control->relocatable) { const char *qSchemaName = quote_identifier(schemaName); - sql = text_to_cstring( - DatumGetTextPP( - DirectFunctionCall3(replace_text, - CStringGetTextDatum(sql), - CStringGetTextDatum("@extschema@"), - CStringGetTextDatum(qSchemaName)))); + t_sql = DirectFunctionCall3(replace_text, + t_sql, + CStringGetTextDatum("@extschema@"), + CStringGetTextDatum(qSchemaName)); } /* @@ -892,15 +902,16 @@ execute_extension_script(Oid extensionOid, ExtensionControlFile *control, */ if (control->module_pathname) { - sql = text_to_cstring( - DatumGetTextPP( - DirectFunctionCall3(replace_text, - CStringGetTextDatum(sql), - CStringGetTextDatum("MODULE_PATHNAME"), - CStringGetTextDatum(control->module_pathname)))); + t_sql = DirectFunctionCall3(replace_text, + t_sql, + CStringGetTextDatum("MODULE_PATHNAME"), + CStringGetTextDatum(control->module_pathname)); } - execute_sql_string(sql, filename); + /* And now back to C string */ + c_sql = text_to_cstring(DatumGetTextPP(t_sql)); + + execute_sql_string(c_sql, filename); } PG_CATCH(); { @@ -914,18 +925,9 @@ execute_extension_script(Oid extensionOid, ExtensionControlFile *control, CurrentExtensionObject = InvalidOid; /* - * Restore GUC variables for the remainder of the current transaction. - * Again use SET LOCAL, so we won't affect the session value. + * Restore the GUC variables we set above. */ - (void) set_config_option("search_path", save_search_path, - PGC_USERSET, PGC_S_SESSION, - GUC_ACTION_LOCAL, true); - (void) set_config_option("client_min_messages", save_client_min_messages, - PGC_USERSET, PGC_S_SESSION, - GUC_ACTION_LOCAL, true); - (void) set_config_option("log_min_messages", save_log_min_messages, - PGC_SUSET, PGC_S_SESSION, - GUC_ACTION_LOCAL, true); + AtEOXact_GUC(true, save_nestlevel); } /* @@ -1372,9 +1374,22 @@ CreateExtension(CreateExtensionStmt *stmt) if (schemaOid == InvalidOid) { - schemaOid = NamespaceCreate(schemaName, extowner); - /* Advance cmd counter to make the namespace visible */ - CommandCounterIncrement(); + CreateSchemaStmt *csstmt = makeNode(CreateSchemaStmt); + + csstmt->schemaname = schemaName; + csstmt->authid = NULL; /* will be created by current user */ + csstmt->schemaElts = NIL; +#ifdef PGXC + CreateSchemaCommand(csstmt, NULL, true); +#else + CreateSchemaCommand(csstmt, NULL); +#endif + + /* + * CreateSchemaCommand includes CommandCounterIncrement, so new + * schema is now visible + */ + schemaOid = get_namespace_oid(schemaName, false); } } else @@ -1385,12 +1400,16 @@ CreateExtension(CreateExtensionStmt *stmt) */ List *search_path = fetch_search_path(false); - if (search_path == NIL) /* probably can't happen */ - elog(ERROR, "there is no default creation target"); + if (search_path == NIL) /* nothing valid in search_path? */ + ereport(ERROR, + (errcode(ERRCODE_UNDEFINED_SCHEMA), + errmsg("no schema has been selected to create in"))); schemaOid = linitial_oid(search_path); schemaName = get_namespace_name(schemaOid); if (schemaName == NULL) /* recently-deleted namespace? */ - elog(ERROR, "there is no default creation target"); + ereport(ERROR, + (errcode(ERRCODE_UNDEFINED_SCHEMA), + errmsg("no schema has been selected to create in"))); list_free(search_path); } @@ -1634,6 +1653,23 @@ RemoveExtensionById(Oid extId) HeapTuple tuple; ScanKeyData entry[1]; + /* + * Disallow deletion of any extension that's currently open for insertion; + * else subsequent executions of recordDependencyOnCurrentExtension() + * could create dangling pg_depend records that refer to a no-longer-valid + * pg_extension OID. This is needed not so much because we think people + * might write "DROP EXTENSION foo" in foo's own script files, as because + * errors in dependency management in extension script files could give + * rise to cases where an extension is dropped as a result of recursing + * from some contained object. Because of that, we must test for the case + * here, not at some higher level of the DROP EXTENSION command. + */ + if (extId == CurrentExtensionObject) + ereport(ERROR, + (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), + errmsg("cannot drop extension \"%s\" because it is being modified", + get_extension_name(extId)))); + rel = heap_open(ExtensionRelationId, RowExclusiveLock); ScanKeyInit(&entry[0], @@ -2087,6 +2123,7 @@ pg_extension_config_dump(PG_FUNCTION_ARGS) HeapTuple extTup; Datum arrayDatum; Datum elementDatum; + int arrayLength; int arrayIndex; bool isnull; Datum repl_val[Natts_pg_extension]; @@ -2102,12 +2139,12 @@ pg_extension_config_dump(PG_FUNCTION_ARGS) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("pg_extension_config_dump() can only be called " - "from a SQL script executed by CREATE EXTENSION"))); + "from an SQL script executed by CREATE EXTENSION"))); /* * Check that the table exists and is a member of the extension being - * created. This ensures that we don't need to register a dependency to - * protect the extconfig entry. + * created. This ensures that we don't need to register an additional + * dependency to protect the extconfig entry. */ tablename = get_rel_name(tableoid); if (tablename == NULL) @@ -2124,6 +2161,9 @@ pg_extension_config_dump(PG_FUNCTION_ARGS) /* * Add the table OID and WHERE condition to the extension's extconfig and * extcondition arrays. + * + * If the table is already in extconfig, treat this as an update of the + * WHERE condition. */ /* Find the pg_extension tuple */ @@ -2154,18 +2194,41 @@ pg_extension_config_dump(PG_FUNCTION_ARGS) RelationGetDescr(extRel), &isnull); if (isnull) { + /* Previously empty extconfig, so build 1-element array */ + arrayLength = 0; + arrayIndex = 1; + a = construct_array(&elementDatum, 1, OIDOID, sizeof(Oid), true, 'i'); } else { + /* Modify or extend existing extconfig array */ + Oid *arrayData; + int i; + a = DatumGetArrayTypeP(arrayDatum); - Assert(ARR_ELEMTYPE(a) == OIDOID); - Assert(ARR_NDIM(a) == 1); - Assert(ARR_LBOUND(a)[0] == 1); - arrayIndex = ARR_DIMS(a)[0] + 1; /* add after end */ + arrayLength = ARR_DIMS(a)[0]; + if (ARR_NDIM(a) != 1 || + ARR_LBOUND(a)[0] != 1 || + arrayLength < 0 || + ARR_HASNULL(a) || + ARR_ELEMTYPE(a) != OIDOID) + elog(ERROR, "extconfig is not a 1-D Oid array"); + arrayData = (Oid *) ARR_DATA_PTR(a); + + arrayIndex = arrayLength + 1; /* set up to add after end */ + + for (i = 0; i < arrayLength; i++) + { + if (arrayData[i] == tableoid) + { + arrayIndex = i + 1; /* replace this element instead */ + break; + } + } a = array_set(a, 1, &arrayIndex, elementDatum, @@ -2185,6 +2248,9 @@ pg_extension_config_dump(PG_FUNCTION_ARGS) RelationGetDescr(extRel), &isnull); if (isnull) { + if (arrayLength != 0) + elog(ERROR, "extconfig and extcondition arrays do not match"); + a = construct_array(&elementDatum, 1, TEXTOID, -1, false, 'i'); @@ -2192,12 +2258,16 @@ pg_extension_config_dump(PG_FUNCTION_ARGS) else { a = DatumGetArrayTypeP(arrayDatum); - Assert(ARR_ELEMTYPE(a) == TEXTOID); - Assert(ARR_NDIM(a) == 1); - Assert(ARR_LBOUND(a)[0] == 1); - arrayIndex = ARR_DIMS(a)[0] + 1; /* add after end */ + if (ARR_NDIM(a) != 1 || + ARR_LBOUND(a)[0] != 1 || + ARR_HASNULL(a) || + ARR_ELEMTYPE(a) != TEXTOID) + elog(ERROR, "extcondition is not a 1-D text array"); + if (ARR_DIMS(a)[0] != arrayLength) + elog(ERROR, "extconfig and extcondition arrays do not match"); + /* Add or replace at same index as in extconfig */ a = array_set(a, 1, &arrayIndex, elementDatum, false, @@ -2222,6 +2292,182 @@ pg_extension_config_dump(PG_FUNCTION_ARGS) PG_RETURN_VOID(); } +/* + * extension_config_remove + * + * Remove the specified table OID from extension's extconfig, if present. + * This is not currently exposed as a function, but it could be; + * for now, we just invoke it from ALTER EXTENSION DROP. + */ +static void +extension_config_remove(Oid extensionoid, Oid tableoid) +{ + Relation extRel; + ScanKeyData key[1]; + SysScanDesc extScan; + HeapTuple extTup; + Datum arrayDatum; + int arrayLength; + int arrayIndex; + bool isnull; + Datum repl_val[Natts_pg_extension]; + bool repl_null[Natts_pg_extension]; + bool repl_repl[Natts_pg_extension]; + ArrayType *a; + + /* Find the pg_extension tuple */ + extRel = heap_open(ExtensionRelationId, RowExclusiveLock); + + ScanKeyInit(&key[0], + ObjectIdAttributeNumber, + BTEqualStrategyNumber, F_OIDEQ, + ObjectIdGetDatum(extensionoid)); + + extScan = systable_beginscan(extRel, ExtensionOidIndexId, true, + SnapshotNow, 1, key); + + extTup = systable_getnext(extScan); + + if (!HeapTupleIsValid(extTup)) /* should not happen */ + elog(ERROR, "extension with oid %u does not exist", + extensionoid); + + /* Search extconfig for the tableoid */ + arrayDatum = heap_getattr(extTup, Anum_pg_extension_extconfig, + RelationGetDescr(extRel), &isnull); + if (isnull) + { + /* nothing to do */ + a = NULL; + arrayLength = 0; + arrayIndex = -1; + } + else + { + Oid *arrayData; + int i; + + a = DatumGetArrayTypeP(arrayDatum); + + arrayLength = ARR_DIMS(a)[0]; + if (ARR_NDIM(a) != 1 || + ARR_LBOUND(a)[0] != 1 || + arrayLength < 0 || + ARR_HASNULL(a) || + ARR_ELEMTYPE(a) != OIDOID) + elog(ERROR, "extconfig is not a 1-D Oid array"); + arrayData = (Oid *) ARR_DATA_PTR(a); + + arrayIndex = -1; /* flag for no deletion needed */ + + for (i = 0; i < arrayLength; i++) + { + if (arrayData[i] == tableoid) + { + arrayIndex = i; /* index to remove */ + break; + } + } + } + + /* If tableoid is not in extconfig, nothing to do */ + if (arrayIndex < 0) + { + systable_endscan(extScan); + heap_close(extRel, RowExclusiveLock); + return; + } + + /* Modify or delete the extconfig value */ + memset(repl_val, 0, sizeof(repl_val)); + memset(repl_null, false, sizeof(repl_null)); + memset(repl_repl, false, sizeof(repl_repl)); + + if (arrayLength <= 1) + { + /* removing only element, just set array to null */ + repl_null[Anum_pg_extension_extconfig - 1] = true; + } + else + { + /* squeeze out the target element */ + Datum *dvalues; + bool *dnulls; + int nelems; + int i; + + deconstruct_array(a, OIDOID, sizeof(Oid), true, 'i', + &dvalues, &dnulls, &nelems); + + /* We already checked there are no nulls, so ignore dnulls */ + for (i = arrayIndex; i < arrayLength - 1; i++) + dvalues[i] = dvalues[i + 1]; + + a = construct_array(dvalues, arrayLength - 1, + OIDOID, sizeof(Oid), true, 'i'); + + repl_val[Anum_pg_extension_extconfig - 1] = PointerGetDatum(a); + } + repl_repl[Anum_pg_extension_extconfig - 1] = true; + + /* Modify or delete the extcondition value */ + arrayDatum = heap_getattr(extTup, Anum_pg_extension_extcondition, + RelationGetDescr(extRel), &isnull); + if (isnull) + { + elog(ERROR, "extconfig and extcondition arrays do not match"); + } + else + { + a = DatumGetArrayTypeP(arrayDatum); + + if (ARR_NDIM(a) != 1 || + ARR_LBOUND(a)[0] != 1 || + ARR_HASNULL(a) || + ARR_ELEMTYPE(a) != TEXTOID) + elog(ERROR, "extcondition is not a 1-D text array"); + if (ARR_DIMS(a)[0] != arrayLength) + elog(ERROR, "extconfig and extcondition arrays do not match"); + } + + if (arrayLength <= 1) + { + /* removing only element, just set array to null */ + repl_null[Anum_pg_extension_extcondition - 1] = true; + } + else + { + /* squeeze out the target element */ + Datum *dvalues; + bool *dnulls; + int nelems; + int i; + + deconstruct_array(a, TEXTOID, -1, false, 'i', + &dvalues, &dnulls, &nelems); + + /* We already checked there are no nulls, so ignore dnulls */ + for (i = arrayIndex; i < arrayLength - 1; i++) + dvalues[i] = dvalues[i + 1]; + + a = construct_array(dvalues, arrayLength - 1, + TEXTOID, -1, false, 'i'); + + repl_val[Anum_pg_extension_extcondition - 1] = PointerGetDatum(a); + } + repl_repl[Anum_pg_extension_extcondition - 1] = true; + + extTup = heap_modify_tuple(extTup, RelationGetDescr(extRel), + repl_val, repl_null, repl_repl); + + simple_heap_update(extRel, &extTup->t_self, extTup); + CatalogUpdateIndexes(extRel, extTup); + + systable_endscan(extScan); + + heap_close(extRel, RowExclusiveLock); +} + /* * Execute ALTER EXTENSION SET SCHEMA */ @@ -2241,6 +2487,7 @@ AlterExtensionNamespace(List *names, const char *newschema) Relation depRel; SysScanDesc depScan; HeapTuple depTup; + ObjectAddresses *objsMoved; if (list_length(names) != 1) ereport(ERROR, @@ -2265,6 +2512,17 @@ AlterExtensionNamespace(List *names, const char *newschema) if (aclresult != ACLCHECK_OK) aclcheck_error(aclresult, ACL_KIND_NAMESPACE, newschema); + /* + * If the schema is currently a member of the extension, disallow moving + * the extension into the schema. That would create a dependency loop. + */ + if (getExtensionOfObject(NamespaceRelationId, nspOid) == extensionOid) + ereport(ERROR, + (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), + errmsg("cannot move extension \"%s\" into schema \"%s\" " + "because the extension contains the schema", + extensionName, newschema))); + /* Locate the pg_extension tuple */ extRel = heap_open(ExtensionRelationId, RowExclusiveLock); @@ -2304,6 +2562,8 @@ AlterExtensionNamespace(List *names, const char *newschema) errmsg("extension \"%s\" does not support SET SCHEMA", NameStr(extForm->extname)))); + objsMoved = new_object_addresses(); + /* * Scan pg_depend to find objects that depend directly on the extension, * and alter each one's schema. @@ -2343,9 +2603,11 @@ AlterExtensionNamespace(List *names, const char *newschema) if (dep.objectSubId != 0) /* should not happen */ elog(ERROR, "extension should not have a sub-object dependency"); + /* Relocate the object */ dep_oldNspOid = AlterObjectNamespace_oid(dep.classId, dep.objectId, - nspOid); + nspOid, + objsMoved); /* * Remember previous namespace of first object that has one @@ -2729,6 +2991,19 @@ ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt) getObjectDescription(&object), get_extension_name(oldExtension)))); + /* + * Prevent a schema from being added to an extension if the schema + * contains the extension. That would create a dependency loop. + */ + if (object.classId == NamespaceRelationId && + object.objectId == get_extension_schema(extension.objectId)) + ereport(ERROR, + (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), + errmsg("cannot add schema \"%s\" to extension \"%s\" " + "because the schema contains the extension", + get_namespace_name(object.objectId), + stmt->extname))); + /* * OK, add the dependency. */ @@ -2753,6 +3028,13 @@ ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt) ExtensionRelationId, DEPENDENCY_EXTENSION) != 1) elog(ERROR, "unexpected number of extension dependency records"); + + /* + * If it's a relation, it might have an entry in the extension's + * extconfig array, which we must remove. + */ + if (object.classId == RelationRelationId) + extension_config_remove(extension.objectId, object.objectId); } /* @@ -2764,3 +3046,95 @@ ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt) if (relation != NULL) relation_close(relation, NoLock); } + +/* + * AlterExtensionOwner_internal + * + * Internal routine for changing the owner of an extension. rel must be + * pg_extension, already open and suitably locked; it will not be closed. + * + * Note that this only changes ownership of the extension itself; it doesn't + * change the ownership of objects it contains. Since this function is + * currently only called from REASSIGN OWNED, this restriction is okay because + * said objects would also be affected by our caller. But it's not enough for + * a full-fledged ALTER OWNER implementation, so beware. + */ +static void +AlterExtensionOwner_internal(Relation rel, Oid extensionOid, Oid newOwnerId) +{ + Form_pg_extension extForm; + HeapTuple tup; + SysScanDesc scandesc; + ScanKeyData entry[1]; + + Assert(RelationGetRelid(rel) == ExtensionRelationId); + + ScanKeyInit(&entry[0], + ObjectIdAttributeNumber, + BTEqualStrategyNumber, F_OIDEQ, + ObjectIdGetDatum(extensionOid)); + + scandesc = systable_beginscan(rel, ExtensionOidIndexId, true, + SnapshotNow, 1, entry); + + /* We assume that there can be at most one matching tuple */ + tup = systable_getnext(scandesc); + if (!HeapTupleIsValid(tup)) /* should not happen */ + elog(ERROR, "cache lookup failed for extension %u", extensionOid); + + tup = heap_copytuple(tup); + systable_endscan(scandesc); + + extForm = (Form_pg_extension) GETSTRUCT(tup); + + /* + * If the new owner is the same as the existing owner, consider the + * command to have succeeded. This is for dump restoration purposes. + */ + if (extForm->extowner != newOwnerId) + { + /* Superusers can always do it */ + if (!superuser()) + { + /* Otherwise, must be owner of the existing object */ + if (!pg_extension_ownercheck(HeapTupleGetOid(tup), GetUserId())) + aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_EXTENSION, + NameStr(extForm->extname)); + + /* Must be able to become new owner */ + check_is_member_of_role(GetUserId(), newOwnerId); + + /* no privilege checks on namespace are required */ + } + + /* + * Modify the owner --- okay to scribble on tup because it's a copy + */ + extForm->extowner = newOwnerId; + + simple_heap_update(rel, &tup->t_self, tup); + + CatalogUpdateIndexes(rel, tup); + + /* Update owner dependency reference */ + changeDependencyOnOwner(ExtensionRelationId, extensionOid, + newOwnerId); + } + + heap_freetuple(tup); +} + +/* + * Change extension owner, by OID + */ +void +AlterExtensionOwner_oid(Oid extensionOid, Oid newOwnerId) +{ + Relation rel; + + rel = heap_open(ExtensionRelationId, RowExclusiveLock); + + AlterExtensionOwner_internal(rel, extensionOid, newOwnerId); + + heap_close(rel, NoLock); +} diff --git a/src/backend/commands/foreigncmds.c b/src/backend/commands/foreigncmds.c index 21d52e06ba..8213ec5f0f 100644 --- a/src/backend/commands/foreigncmds.c +++ b/src/backend/commands/foreigncmds.c @@ -165,8 +165,18 @@ transformGenericOptions(Oid catalogId, result = optionListToArray(resultOptions); - if (OidIsValid(fdwvalidator) && DatumGetPointer(result) != NULL) - OidFunctionCall2(fdwvalidator, result, ObjectIdGetDatum(catalogId)); + if (OidIsValid(fdwvalidator)) + { + Datum valarg = result; + + /* + * Pass a null options list as an empty array, so that validators + * don't have to be declared non-strict to handle the case. + */ + if (DatumGetPointer(valarg) == NULL) + valarg = PointerGetDatum(construct_empty_array(TEXTOID)); + OidFunctionCall2(fdwvalidator, valarg, ObjectIdGetDatum(catalogId)); + } return result; } @@ -192,25 +202,24 @@ GetUserOidFromMapping(const char *username, bool missing_ok) /* - * Change foreign-data wrapper owner. + * Internal workhorse for changing a data wrapper's owner. * * Allow this only for superusers; also the new owner must be a * superuser. */ -void -AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId) +static void +AlterForeignDataWrapperOwner_internal(Relation rel, HeapTuple tup, Oid newOwnerId) { - HeapTuple tup; - Relation rel; - Oid fdwId; Form_pg_foreign_data_wrapper form; + form = (Form_pg_foreign_data_wrapper) GETSTRUCT(tup); + /* Must be a superuser to change a FDW owner */ if (!superuser()) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), errmsg("permission denied to change owner of foreign-data wrapper \"%s\"", - name), + NameStr(form->fdwname)), errhint("Must be superuser to change owner of a foreign-data wrapper."))); /* New owner must also be a superuser */ @@ -218,21 +227,9 @@ AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), errmsg("permission denied to change owner of foreign-data wrapper \"%s\"", - name), + NameStr(form->fdwname)), errhint("The owner of a foreign-data wrapper must be a superuser."))); - rel = heap_open(ForeignDataWrapperRelationId, RowExclusiveLock); - - tup = SearchSysCacheCopy1(FOREIGNDATAWRAPPERNAME, CStringGetDatum(name)); - - if (!HeapTupleIsValid(tup)) - ereport(ERROR, - (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("foreign-data wrapper \"%s\" does not exist", name))); - - fdwId = HeapTupleGetOid(tup); - form = (Form_pg_foreign_data_wrapper) GETSTRUCT(tup); - if (form->fdwowner != newOwnerId) { form->fdwowner = newOwnerId; @@ -242,38 +239,73 @@ AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId) /* Update owner dependency reference */ changeDependencyOnOwner(ForeignDataWrapperRelationId, - fdwId, + HeapTupleGetOid(tup), newOwnerId); } +} + +/* + * Change foreign-data wrapper owner -- by name + * + * Note restrictions in the "_internal" function, above. + */ +void +AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId) +{ + HeapTuple tup; + Relation rel; + + rel = heap_open(ForeignDataWrapperRelationId, RowExclusiveLock); + + tup = SearchSysCacheCopy1(FOREIGNDATAWRAPPERNAME, CStringGetDatum(name)); + + if (!HeapTupleIsValid(tup)) + ereport(ERROR, + (errcode(ERRCODE_UNDEFINED_OBJECT), + errmsg("foreign-data wrapper \"%s\" does not exist", name))); + + AlterForeignDataWrapperOwner_internal(rel, tup, newOwnerId); heap_freetuple(tup); heap_close(rel, RowExclusiveLock); } - /* - * Change foreign server owner + * Change foreign-data wrapper owner -- by OID + * + * Note restrictions in the "_internal" function, above. */ void -AlterForeignServerOwner(const char *name, Oid newOwnerId) +AlterForeignDataWrapperOwner_oid(Oid fwdId, Oid newOwnerId) { HeapTuple tup; Relation rel; - Oid srvId; - AclResult aclresult; - Form_pg_foreign_server form; - rel = heap_open(ForeignServerRelationId, RowExclusiveLock); + rel = heap_open(ForeignDataWrapperRelationId, RowExclusiveLock); - tup = SearchSysCacheCopy1(FOREIGNSERVERNAME, CStringGetDatum(name)); + tup = SearchSysCacheCopy1(FOREIGNDATAWRAPPEROID, ObjectIdGetDatum(fwdId)); if (!HeapTupleIsValid(tup)) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("server \"%s\" does not exist", name))); + errmsg("foreign-data wrapper with OID %u does not exist", fwdId))); + + AlterForeignDataWrapperOwner_internal(rel, tup, newOwnerId); + + heap_freetuple(tup); + + heap_close(rel, RowExclusiveLock); +} + +/* + * Internal workhorse for changing a foreign server's owner + */ +static void +AlterForeignServerOwner_internal(Relation rel, HeapTuple tup, Oid newOwnerId) +{ + Form_pg_foreign_server form; - srvId = HeapTupleGetOid(tup); form = (Form_pg_foreign_server) GETSTRUCT(tup); if (form->srvowner != newOwnerId) @@ -281,10 +313,15 @@ AlterForeignServerOwner(const char *name, Oid newOwnerId) /* Superusers can always do it */ if (!superuser()) { + Oid srvId; + AclResult aclresult; + + srvId = HeapTupleGetOid(tup); + /* Must be owner */ if (!pg_foreign_server_ownercheck(srvId, GetUserId())) aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_FOREIGN_SERVER, - name); + NameStr(form->srvname)); /* Must be able to become new owner */ check_is_member_of_role(GetUserId(), newOwnerId); @@ -308,12 +345,57 @@ AlterForeignServerOwner(const char *name, Oid newOwnerId) changeDependencyOnOwner(ForeignServerRelationId, HeapTupleGetOid(tup), newOwnerId); } +} + +/* + * Change foreign server owner -- by name + */ +void +AlterForeignServerOwner(const char *name, Oid newOwnerId) +{ + HeapTuple tup; + Relation rel; + + rel = heap_open(ForeignServerRelationId, RowExclusiveLock); + + tup = SearchSysCacheCopy1(FOREIGNSERVERNAME, CStringGetDatum(name)); + + if (!HeapTupleIsValid(tup)) + ereport(ERROR, + (errcode(ERRCODE_UNDEFINED_OBJECT), + errmsg("server \"%s\" does not exist", name))); + + AlterForeignServerOwner_internal(rel, tup, newOwnerId); heap_freetuple(tup); heap_close(rel, RowExclusiveLock); } +/* + * Change foreign server owner -- by OID + */ +void +AlterForeignServerOwner_oid(Oid srvId, Oid newOwnerId) +{ + HeapTuple tup; + Relation rel; + + rel = heap_open(ForeignServerRelationId, RowExclusiveLock); + + tup = SearchSysCacheCopy1(FOREIGNSERVEROID, ObjectIdGetDatum(srvId)); + + if (!HeapTupleIsValid(tup)) + ereport(ERROR, + (errcode(ERRCODE_UNDEFINED_OBJECT), + errmsg("foreign server with OID %u does not exist", srvId))); + + AlterForeignServerOwner_internal(rel, tup, newOwnerId); + + heap_freetuple(tup); + + heap_close(rel, RowExclusiveLock); +} /* * Convert a handler function name passed from the parser to an Oid. @@ -422,6 +504,8 @@ CreateForeignDataWrapper(CreateFdwStmt *stmt) ObjectAddress myself; ObjectAddress referenced; + rel = heap_open(ForeignDataWrapperRelationId, RowExclusiveLock); + /* Must be super user */ if (!superuser()) ereport(ERROR, @@ -445,8 +529,6 @@ CreateForeignDataWrapper(CreateFdwStmt *stmt) /* * Insert tuple into pg_foreign_data_wrapper. */ - rel = heap_open(ForeignDataWrapperRelationId, RowExclusiveLock); - memset(values, 0, sizeof(values)); memset(nulls, false, sizeof(nulls)); @@ -505,7 +587,7 @@ CreateForeignDataWrapper(CreateFdwStmt *stmt) recordDependencyOnOwner(ForeignDataWrapperRelationId, fdwId, ownerId); /* dependency on extension */ - recordDependencyOnCurrentExtension(&myself); + recordDependencyOnCurrentExtension(&myself, false); /* Post creation hook for new foreign data wrapper */ InvokeObjectAccessHook(OAT_POST_CREATE, @@ -535,6 +617,8 @@ AlterForeignDataWrapper(AlterFdwStmt *stmt) Oid fdwhandler; Oid fdwvalidator; + rel = heap_open(ForeignDataWrapperRelationId, RowExclusiveLock); + /* Must be super user */ if (!superuser()) ereport(ERROR, @@ -625,9 +709,6 @@ AlterForeignDataWrapper(AlterFdwStmt *stmt) } /* Everything looks good - update the tuple */ - - rel = heap_open(ForeignDataWrapperRelationId, RowExclusiveLock); - tp = heap_modify_tuple(tp, RelationGetDescr(rel), repl_val, repl_null, repl_repl); @@ -763,6 +844,8 @@ CreateForeignServer(CreateForeignServerStmt *stmt) ObjectAddress referenced; ForeignDataWrapper *fdw; + rel = heap_open(ForeignServerRelationId, RowExclusiveLock); + /* For now the owner cannot be specified on create. Use effective user ID. */ ownerId = GetUserId(); @@ -788,8 +871,6 @@ CreateForeignServer(CreateForeignServerStmt *stmt) /* * Insert tuple into pg_foreign_server. */ - rel = heap_open(ForeignServerRelationId, RowExclusiveLock); - memset(values, 0, sizeof(values)); memset(nulls, false, sizeof(nulls)); @@ -847,7 +928,7 @@ CreateForeignServer(CreateForeignServerStmt *stmt) recordDependencyOnOwner(ForeignServerRelationId, srvId, ownerId); /* dependency on extension */ - recordDependencyOnCurrentExtension(&myself); + recordDependencyOnCurrentExtension(&myself, false); /* Post creation hook for new foreign server */ InvokeObjectAccessHook(OAT_POST_CREATE, ForeignServerRelationId, srvId, 0); @@ -870,6 +951,8 @@ AlterForeignServer(AlterForeignServerStmt *stmt) Oid srvId; Form_pg_foreign_server srvForm; + rel = heap_open(ForeignServerRelationId, RowExclusiveLock); + tp = SearchSysCacheCopy1(FOREIGNSERVERNAME, CStringGetDatum(stmt->servername)); @@ -935,9 +1018,6 @@ AlterForeignServer(AlterForeignServerStmt *stmt) } /* Everything looks good - update the tuple */ - - rel = heap_open(ForeignServerRelationId, RowExclusiveLock); - tp = heap_modify_tuple(tp, RelationGetDescr(rel), repl_val, repl_null, repl_repl); @@ -1058,6 +1138,8 @@ CreateUserMapping(CreateUserMappingStmt *stmt) ForeignServer *srv; ForeignDataWrapper *fdw; + rel = heap_open(UserMappingRelationId, RowExclusiveLock); + useId = GetUserOidFromMapping(stmt->username, false); /* Check that the server exists. */ @@ -1083,8 +1165,6 @@ CreateUserMapping(CreateUserMappingStmt *stmt) /* * Insert tuple into pg_user_mapping. */ - rel = heap_open(UserMappingRelationId, RowExclusiveLock); - memset(values, 0, sizeof(values)); memset(nulls, false, sizeof(nulls)); @@ -1127,7 +1207,7 @@ CreateUserMapping(CreateUserMappingStmt *stmt) } /* dependency on extension */ - recordDependencyOnCurrentExtension(&myself); + recordDependencyOnCurrentExtension(&myself, false); /* Post creation hook for new user mapping */ InvokeObjectAccessHook(OAT_POST_CREATE, UserMappingRelationId, umId, 0); @@ -1151,6 +1231,8 @@ AlterUserMapping(AlterUserMappingStmt *stmt) Oid umId; ForeignServer *srv; + rel = heap_open(UserMappingRelationId, RowExclusiveLock); + useId = GetUserOidFromMapping(stmt->username, false); srv = GetForeignServerByName(stmt->servername, false); @@ -1208,9 +1290,6 @@ AlterUserMapping(AlterUserMappingStmt *stmt) } /* Everything looks good - update the tuple */ - - rel = heap_open(UserMappingRelationId, RowExclusiveLock); - tp = heap_modify_tuple(tp, RelationGetDescr(rel), repl_val, repl_null, repl_repl); @@ -1334,11 +1413,13 @@ CreateForeignTable(CreateForeignTableStmt *stmt, Oid relid) ForeignServer *server; /* - * Advance command counter to ensure the pg_attribute tuple visible; the - * tuple might be updated to add constraints in previous step. + * Advance command counter to ensure the pg_attribute tuple is visible; + * the tuple might be updated to add constraints in previous step. */ CommandCounterIncrement(); + ftrel = heap_open(ForeignTableRelationId, RowExclusiveLock); + /* * For now the owner cannot be specified on create. Use effective user ID. */ @@ -1358,8 +1439,6 @@ CreateForeignTable(CreateForeignTableStmt *stmt, Oid relid) /* * Insert tuple into pg_foreign_table. */ - ftrel = heap_open(ForeignTableRelationId, RowExclusiveLock); - memset(values, 0, sizeof(values)); memset(nulls, false, sizeof(nulls)); diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c index 03da168ff2..54b2054188 100644 --- a/src/backend/commands/functioncmds.c +++ b/src/backend/commands/functioncmds.c @@ -963,7 +963,6 @@ CreateFunction(CreateFunctionStmt *stmt, const char *queryString) prorows); } - /* * RemoveFunction * Deletes a function. @@ -1489,6 +1488,7 @@ CreateCast(CreateCastStmt *stmt) char sourcetyptype; char targettyptype; Oid funcid; + Oid castid; int nargs; char castcontext; char castmethod; @@ -1734,13 +1734,13 @@ CreateCast(CreateCastStmt *stmt) tuple = heap_form_tuple(RelationGetDescr(relation), values, nulls); - simple_heap_insert(relation, tuple); + castid = simple_heap_insert(relation, tuple); CatalogUpdateIndexes(relation, tuple); /* make dependency entries */ myself.classId = CastRelationId; - myself.objectId = HeapTupleGetOid(tuple); + myself.objectId = castid; myself.objectSubId = 0; /* dependency on source type */ @@ -1765,11 +1765,10 @@ CreateCast(CreateCastStmt *stmt) } /* dependency on extension */ - recordDependencyOnCurrentExtension(&myself); + recordDependencyOnCurrentExtension(&myself, false); /* Post creation hook for new cast */ - InvokeObjectAccessHook(OAT_POST_CREATE, - CastRelationId, myself.objectId, 0); + InvokeObjectAccessHook(OAT_POST_CREATE, CastRelationId, castid, 0); heap_freetuple(tuple); diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c index 894cb2ed31..4852eda84e 100644 --- a/src/backend/commands/indexcmds.c +++ b/src/backend/commands/indexcmds.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -81,7 +81,8 @@ static char *ChooseIndexNameAddition(List *colnames); * DefineIndex * Creates a new index. * - * 'heapRelation': the relation the index will apply to. + * 'relationId': the OID of the heap relation on which the index is to be + * created * 'indexRelationName': the name for the new index, or NULL to indicate * that a nonconflicting default name should be picked. * 'indexRelationId': normally InvalidOid, but during bootstrap can be @@ -110,7 +111,7 @@ static char *ChooseIndexNameAddition(List *colnames); * 'concurrent': avoid blocking writers to the table while building. */ void -DefineIndex(RangeVar *heapRelation, +DefineIndex(Oid relationId, char *indexRelationName, Oid indexRelationId, char *accessMethodName, @@ -133,7 +134,6 @@ DefineIndex(RangeVar *heapRelation, Oid *collationObjectId; Oid *classObjectId; Oid accessMethodId; - Oid relationId; Oid namespaceId; Oid tablespaceId; List *indexColNames; @@ -147,15 +147,14 @@ DefineIndex(RangeVar *heapRelation, int16 *coloptions; IndexInfo *indexInfo; int numberOfAttributes; + TransactionId limitXmin; VirtualTransactionId *old_lockholders; VirtualTransactionId *old_snapshots; int n_old_snapshots; LockRelId heaprelid; LOCKTAG heaplocktag; + LOCKMODE lockmode; Snapshot snapshot; - Relation pg_index; - HeapTuple indexTuple; - Form_pg_index indexForm; int i; /* @@ -173,14 +172,18 @@ DefineIndex(RangeVar *heapRelation, INDEX_MAX_KEYS))); /* - * Open heap relation, acquire a suitable lock on it, remember its OID - * * Only SELECT ... FOR UPDATE/SHARE are allowed while doing a standard * index build; but for concurrent builds we allow INSERT/UPDATE/DELETE * (but not VACUUM). + * + * NB: Caller is responsible for making sure that relationId refers + * to the relation on which the index should be built; except in bootstrap + * mode, this will typically require the caller to have already locked + * the relation. To avoid lock upgrade hazards, that lock should be at + * least as strong as the one we take here. */ - rel = heap_openrv(heapRelation, - (concurrent ? ShareUpdateExclusiveLock : ShareLock)); + lockmode = concurrent ? ShareUpdateExclusiveLock : ShareLock; + rel = heap_open(relationId, lockmode); relationId = RelationGetRelid(rel); namespaceId = RelationGetNamespace(rel); @@ -198,12 +201,12 @@ DefineIndex(RangeVar *heapRelation, ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), errmsg("cannot create index on foreign table \"%s\"", - heapRelation->relname))); + RelationGetRelationName(rel)))); else ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), errmsg("\"%s\" is not a table", - heapRelation->relname))); + RelationGetRelationName(rel)))); } /* @@ -534,7 +537,7 @@ DefineIndex(RangeVar *heapRelation, */ /* Open and lock the parent heap relation */ - rel = heap_openrv(heapRelation, ShareUpdateExclusiveLock); + rel = heap_open(relationId, ShareUpdateExclusiveLock); /* And the target index relation */ indexRelation = index_open(indexRelationId, RowExclusiveLock); @@ -560,23 +563,7 @@ DefineIndex(RangeVar *heapRelation, * commit this transaction, any new transactions that open the table must * insert new entries into the index for insertions and non-HOT updates. */ - pg_index = heap_open(IndexRelationId, RowExclusiveLock); - - indexTuple = SearchSysCacheCopy1(INDEXRELID, - ObjectIdGetDatum(indexRelationId)); - if (!HeapTupleIsValid(indexTuple)) - elog(ERROR, "cache lookup failed for index %u", indexRelationId); - indexForm = (Form_pg_index) GETSTRUCT(indexTuple); - - Assert(!indexForm->indisready); - Assert(!indexForm->indisvalid); - - indexForm->indisready = true; - - simple_heap_update(pg_index, &indexTuple->t_self, indexTuple); - CatalogUpdateIndexes(pg_index, indexTuple); - - heap_close(pg_index, RowExclusiveLock); + index_set_state_flags(indexRelationId, INDEX_CREATE_SET_READY); /* we can do away with our snapshot */ PopActiveSnapshot(); @@ -624,6 +611,18 @@ DefineIndex(RangeVar *heapRelation, */ validate_index(relationId, indexRelationId, snapshot); + /* + * Drop the reference snapshot. We must do this before waiting out other + * snapshot holders, else we will deadlock against other processes also + * doing CREATE INDEX CONCURRENTLY, which would see our snapshot as one + * they must wait for. But first, save the snapshot's xmin to use as + * limitXmin for GetCurrentVirtualXIDs(). + */ + limitXmin = snapshot->xmin; + + PopActiveSnapshot(); + UnregisterSnapshot(snapshot); + /* * The index is now valid in the sense that it contains all currently * interesting tuples. But since it might not contain tuples deleted just @@ -656,7 +655,7 @@ DefineIndex(RangeVar *heapRelation, * GetCurrentVirtualXIDs. If, during any iteration, a particular vxid * doesn't show up in the output, we know we can forget about it. */ - old_snapshots = GetCurrentVirtualXIDs(snapshot->xmin, true, false, + old_snapshots = GetCurrentVirtualXIDs(limitXmin, true, false, PROC_IS_AUTOVACUUM | PROC_IN_VACUUM, &n_old_snapshots); @@ -673,7 +672,7 @@ DefineIndex(RangeVar *heapRelation, int j; int k; - newer_snapshots = GetCurrentVirtualXIDs(snapshot->xmin, + newer_snapshots = GetCurrentVirtualXIDs(limitXmin, true, false, PROC_IS_AUTOVACUUM | PROC_IN_VACUUM, &n_newer_snapshots); @@ -700,23 +699,7 @@ DefineIndex(RangeVar *heapRelation, /* * Index can now be marked valid -- update its pg_index entry */ - pg_index = heap_open(IndexRelationId, RowExclusiveLock); - - indexTuple = SearchSysCacheCopy1(INDEXRELID, - ObjectIdGetDatum(indexRelationId)); - if (!HeapTupleIsValid(indexTuple)) - elog(ERROR, "cache lookup failed for index %u", indexRelationId); - indexForm = (Form_pg_index) GETSTRUCT(indexTuple); - - Assert(indexForm->indisready); - Assert(!indexForm->indisvalid); - - indexForm->indisvalid = true; - - simple_heap_update(pg_index, &indexTuple->t_self, indexTuple); - CatalogUpdateIndexes(pg_index, indexTuple); - - heap_close(pg_index, RowExclusiveLock); + index_set_state_flags(indexRelationId, INDEX_CREATE_SET_VALID); /* * The pg_index update will cause backends (including this one) to update @@ -724,16 +707,10 @@ DefineIndex(RangeVar *heapRelation, * relcache inval on the parent table to force replanning of cached plans. * Otherwise existing sessions might fail to use the new index where it * would be useful. (Note that our earlier commits did not create reasons - * to replan; relcache flush on the index itself was sufficient.) + * to replan; so relcache flush on the index itself was sufficient.) */ CacheInvalidateRelcacheByRelid(heaprelid.relId); - /* we can now do away with our active snapshot */ - PopActiveSnapshot(); - - /* And we can remove the validating snapshot too */ - UnregisterSnapshot(snapshot); - /* * Last thing to do is release the session-level lock on the parent table. */ @@ -1610,7 +1587,9 @@ ReindexTable(RangeVar *relation) ReleaseSysCache(tuple); - if (!reindex_relation(heapOid, REINDEX_REL_PROCESS_TOAST)) + if (!reindex_relation(heapOid, + REINDEX_REL_PROCESS_TOAST | + REINDEX_REL_CHECK_CONSTRAINTS)) ereport(NOTICE, (errmsg("table \"%s\" has no indexes", relation->relname))); @@ -1723,7 +1702,9 @@ ReindexDatabase(const char *databaseName, bool do_system, bool do_user) StartTransactionCommand(); /* functions in indexes may want a snapshot set */ PushActiveSnapshot(GetTransactionSnapshot()); - if (reindex_relation(relid, REINDEX_REL_PROCESS_TOAST)) + if (reindex_relation(relid, + REINDEX_REL_PROCESS_TOAST | + REINDEX_REL_CHECK_CONSTRAINTS)) ereport(NOTICE, (errmsg("table \"%s.%s\" was reindexed", get_namespace_name(get_rel_namespace(relid)), diff --git a/src/backend/commands/opclasscmds.c b/src/backend/commands/opclasscmds.c index aff5ac6ec4..8bad626c83 100644 --- a/src/backend/commands/opclasscmds.c +++ b/src/backend/commands/opclasscmds.c @@ -310,7 +310,7 @@ CreateOpFamily(char *amname, char *opfname, Oid namespaceoid, Oid amoid) recordDependencyOnOwner(OperatorFamilyRelationId, opfamilyoid, GetUserId()); /* dependency on extension */ - recordDependencyOnCurrentExtension(&myself); + recordDependencyOnCurrentExtension(&myself, false); /* Post creation hook for new operator family */ InvokeObjectAccessHook(OAT_POST_CREATE, @@ -713,7 +713,7 @@ DefineOpClass(CreateOpClassStmt *stmt) recordDependencyOnOwner(OperatorClassRelationId, opclassoid, GetUserId()); /* dependency on extension */ - recordDependencyOnCurrentExtension(&myself); + recordDependencyOnCurrentExtension(&myself, false); /* Post creation hook for new operator class */ InvokeObjectAccessHook(OAT_POST_CREATE, @@ -1614,10 +1614,9 @@ RemoveOpFamily(RemoveOpFamilyStmt *stmt) tuple = OpFamilyCacheLookup(amID, stmt->opfamilyname, stmt->missing_ok); if (!HeapTupleIsValid(tuple)) { - ereport(ERROR, - (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("operator family \"%s\" does not exist for access method \"%s\"", - NameListToString(stmt->opfamilyname), stmt->amname))); + ereport(NOTICE, + (errmsg("operator family \"%s\" does not exist for access method \"%s\", skipping", + NameListToString(stmt->opfamilyname), stmt->amname))); return; } diff --git a/src/backend/commands/portalcmds.c b/src/backend/commands/portalcmds.c index 89086aa371..314f91501d 100644 --- a/src/backend/commands/portalcmds.c +++ b/src/backend/commands/portalcmds.c @@ -224,7 +224,7 @@ PerformPortalClose(const char *name) } /* - * Note: PortalCleanup is called as a side-effect + * Note: PortalCleanup is called as a side-effect, if not already done. */ PortalDrop(portal, false); } @@ -234,6 +234,10 @@ PerformPortalClose(const char *name) * * Clean up a portal when it's dropped. This is the standard cleanup hook * for portals. + * + * Note: if portal->status is PORTAL_FAILED, we are probably being called + * during error abort, and must be careful to avoid doing anything that + * is likely to fail again. */ void PortalCleanup(Portal portal) @@ -270,7 +274,8 @@ PortalCleanup(Portal portal) saveResourceOwner = CurrentResourceOwner; PG_TRY(); { - CurrentResourceOwner = portal->resowner; + if (portal->resowner) + CurrentResourceOwner = portal->resowner; ExecutorFinish(queryDesc); ExecutorEnd(queryDesc); FreeQueryDesc(queryDesc); @@ -345,7 +350,8 @@ PersistHoldablePortal(Portal portal) PG_TRY(); { ActivePortal = portal; - CurrentResourceOwner = portal->resowner; + if (portal->resowner) + CurrentResourceOwner = portal->resowner; PortalContext = PortalGetHeapMemory(portal); MemoryContextSwitchTo(PortalContext); @@ -420,7 +426,7 @@ PersistHoldablePortal(Portal portal) PG_CATCH(); { /* Uncaught error while executing portal: mark it dead */ - portal->status = PORTAL_FAILED; + MarkPortalFailed(portal); /* Restore global vars and propagate error */ ActivePortal = saveActivePortal; diff --git a/src/backend/commands/prepare.c b/src/backend/commands/prepare.c index 83d3c6357b..f1bcd04220 100644 --- a/src/backend/commands/prepare.c +++ b/src/backend/commands/prepare.c @@ -50,7 +50,7 @@ static HTAB *prepared_queries = NULL; #ifdef PGXC /* - * The hash table where datanode prepared statements are stored. + * The hash table where Datanode prepared statements are stored. * The keys are statement names referenced from cached RemoteQuery nodes; the * entries are DatanodeStatement structs */ @@ -460,7 +460,7 @@ InitQueryHashTable(void) #ifdef PGXC /* * Assign the statement name for all the RemoteQueries in the plan tree, so - * they use datanode statements + * they use Datanode statements */ int SetRemoteStatementName(Plan *plan, const char *stmt_name, int num_params, @@ -986,7 +986,7 @@ FetchDatanodeStatement(const char *stmt_name, bool throwError) } /* - * Drop datanode statement and close it on nodes if active + * Drop Datanode statement and close it on nodes if active */ void DropDatanodeStatement(const char *stmt_name) @@ -1012,8 +1012,8 @@ DropDatanodeStatement(const char *stmt_name) /* - * Return true if there is at least one active datanode statement, so acquired - * datanode connections should not be released + * Return true if there is at least one active Datanode statement, so acquired + * Datanode connections should not be released */ bool HaveActiveDatanodeStatements(void) @@ -1042,9 +1042,9 @@ HaveActiveDatanodeStatements(void) /* - * Mark datanode statement as active on specified node + * Mark Datanode statement as active on specified node * Return true if statement has already been active on the node and can be used - * Returns falsee if statement has not been active on the node and should be + * Returns false if statement has not been active on the node and should be * prepared on the node */ bool diff --git a/src/backend/commands/proclang.c b/src/backend/commands/proclang.c index b36f31ee6d..98770c5a61 100644 --- a/src/backend/commands/proclang.c +++ b/src/backend/commands/proclang.c @@ -388,8 +388,7 @@ create_proc_lang(const char *languageName, bool replace, * Create dependencies for the new language. If we are updating an * existing language, first delete any existing pg_depend entries. * (However, since we are not changing ownership or permissions, the - * shared dependencies do *not* need to change, and we leave them alone. - * We also don't change any pre-existing extension-membership dependency.) + * shared dependencies do *not* need to change, and we leave them alone.) */ myself.classId = LanguageRelationId; myself.objectId = HeapTupleGetOid(tup); @@ -404,8 +403,7 @@ create_proc_lang(const char *languageName, bool replace, languageOwner); /* dependency on extension */ - if (!is_update) - recordDependencyOnCurrentExtension(&myself); + recordDependencyOnCurrentExtension(&myself, is_update); /* dependency on the PL handler function */ referenced.classId = ProcedureRelationId; diff --git a/src/backend/commands/schemacmds.c b/src/backend/commands/schemacmds.c index e6449afea8..a796674760 100644 --- a/src/backend/commands/schemacmds.c +++ b/src/backend/commands/schemacmds.c @@ -103,7 +103,7 @@ CreateSchemaCommand(CreateSchemaStmt *stmt, const char *queryString) save_sec_context | SECURITY_LOCAL_USERID_CHANGE); /* Create the schema's namespace */ - namespaceId = NamespaceCreate(schemaName, owner_uid); + namespaceId = NamespaceCreate(schemaName, owner_uid, false); /* Advance cmd counter to make the namespace visible */ CommandCounterIncrement(); diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c index 875399b08f..0335dc5067 100644 --- a/src/backend/commands/sequence.c +++ b/src/backend/commands/sequence.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -49,7 +49,7 @@ /* * We don't want to log each fetching of a value from a sequence, * so we pre-log a few fetches in advance. In the event of - * crash we can lose as much as we pre-logged. + * crash we can lose (skip over) as many values as we pre-logged. */ #define SEQ_LOG_VALS 32 @@ -84,7 +84,7 @@ typedef struct SeqTableData int64 cached; /* last value already cached for nextval */ /* if last != cached, we have not used up all the cached values */ int64 increment; /* copy of sequence's increment field */ - /* note that increment is zero until we first do read_info() */ + /* note that increment is zero until we first do read_seq_tuple() */ } SeqTableData; typedef SeqTableData *SeqTable; @@ -122,7 +122,8 @@ static void fill_seq_with_data(Relation rel, HeapTuple tuple); static int64 nextval_internal(Oid relid); static Relation open_share_lock(SeqTable seq); static void init_sequence(Oid relid, SeqTable *p_elm, Relation *p_rel); -static Form_pg_sequence read_info(SeqTable elm, Relation rel, Buffer *buf); +static Form_pg_sequence read_seq_tuple(SeqTable elm, Relation rel, + Buffer *buf, HeapTuple seqtuple); #ifdef PGXC static void init_params(List *options, bool isInit, Form_pg_sequence new, List **owned_by, bool *is_restart); @@ -248,7 +249,7 @@ DefineSequence(CreateSeqStmt *seq) case SEQ_COL_LOG: coldef->typeName = makeTypeNameFromOid(INT8OID, -1); coldef->colname = "log_cnt"; - value[i - 1] = Int64GetDatum((int64) 1); + value[i - 1] = Int64GetDatum((int64) 0); break; case SEQ_COL_CYCLE: coldef->typeName = makeTypeNameFromOid(BOOLOID, -1); @@ -307,7 +308,7 @@ DefineSequence(CreateSeqStmt *seq) if (CreateSequenceGTM(seqname, increment, min_value, - max_value, + max_value, start_value, cycle) < 0) { ereport(ERROR, @@ -342,10 +343,8 @@ ResetSequence(Oid seq_relid) SeqTable elm; Form_pg_sequence seq; Buffer buf; - Page page; + HeapTupleData seqtuple; HeapTuple tuple; - HeapTupleData tupledata; - ItemId lp; /* * Read the old sequence. This does a bit more work than really @@ -353,18 +352,12 @@ ResetSequence(Oid seq_relid) * indeed a sequence. */ init_sequence(seq_relid, &elm, &seq_rel); - seq = read_info(elm, seq_rel, &buf); + (void) read_seq_tuple(elm, seq_rel, &buf, &seqtuple); /* * Copy the existing sequence tuple. */ - page = BufferGetPage(buf); - lp = PageGetItemId(page, FirstOffsetNumber); - Assert(ItemIdIsNormal(lp)); - - tupledata.t_data = (HeapTupleHeader) PageGetItem(page, lp); - tupledata.t_len = ItemIdGetLength(lp); - tuple = heap_copytuple(&tupledata); + tuple = heap_copytuple(&seqtuple); /* Now we're done with the old page */ UnlockReleaseBuffer(buf); @@ -376,7 +369,7 @@ ResetSequence(Oid seq_relid) seq = (Form_pg_sequence) GETSTRUCT(tuple); seq->last_value = seq->start_value; seq->is_called = false; - seq->log_cnt = 1; + seq->log_cnt = 0; /* * Create a new storage file for the sequence. We want to keep the @@ -473,12 +466,6 @@ fill_seq_with_data(Relation rel, HeapTuple tuple) xl_seq_rec xlrec; XLogRecPtr recptr; XLogRecData rdata[2]; - Form_pg_sequence newseq = (Form_pg_sequence) GETSTRUCT(tuple); - - /* We do not log first nextval call, so "advance" sequence here */ - /* Note we are scribbling on local tuple, not the disk buffer */ - newseq->is_called = true; - newseq->log_cnt = 0; xlrec.node = rel->rd_node; rdata[0].data = (char *) &xlrec; @@ -514,7 +501,7 @@ AlterSequence(AlterSeqStmt *stmt) SeqTable elm; Relation seqrel; Buffer buf; - Page page; + HeapTupleData seqtuple; Form_pg_sequence seq; FormData_pg_sequence new; List *owned_by; @@ -538,8 +525,7 @@ AlterSequence(AlterSeqStmt *stmt) stmt->sequence->relname); /* lock page' buffer and read tuple into new sequence structure */ - seq = read_info(elm, seqrel, &buf); - page = BufferGetPage(buf); + seq = read_seq_tuple(elm, seqrel, &buf, &seqtuple); /* Copy old values of options into workspace */ memcpy(&new, seq, sizeof(FormData_pg_sequence)); @@ -556,6 +542,8 @@ AlterSequence(AlterSeqStmt *stmt) elm->cached = elm->last; /* Now okay to update the on-disk tuple */ + START_CRIT_SECTION(); + memcpy(seq, &new, sizeof(FormData_pg_sequence)); #ifdef PGXC @@ -567,8 +555,6 @@ AlterSequence(AlterSeqStmt *stmt) cycle = new.is_cycled; #endif - START_CRIT_SECTION(); - MarkBufferDirty(buf); /* XLOG stuff */ @@ -577,6 +563,7 @@ AlterSequence(AlterSeqStmt *stmt) xl_seq_rec xlrec; XLogRecPtr recptr; XLogRecData rdata[2]; + Page page = BufferGetPage(buf); xlrec.node = seqrel->rd_node; rdata[0].data = (char *) &xlrec; @@ -584,9 +571,8 @@ AlterSequence(AlterSeqStmt *stmt) rdata[0].buffer = InvalidBuffer; rdata[0].next = &(rdata[1]); - rdata[1].data = (char *) page + ((PageHeader) page)->pd_upper; - rdata[1].len = ((PageHeader) page)->pd_special - - ((PageHeader) page)->pd_upper; + rdata[1].data = (char *) seqtuple.t_data; + rdata[1].len = seqtuple.t_len; rdata[1].buffer = InvalidBuffer; rdata[1].next = NULL; @@ -668,6 +654,7 @@ nextval_internal(Oid relid) Relation seqrel; Buffer buf; Page page; + HeapTupleData seqtuple; Form_pg_sequence seq; int64 incby, maxv, @@ -695,7 +682,7 @@ nextval_internal(Oid relid) RelationGetRelationName(seqrel)))); /* read-only transactions may only modify temp sequences */ - if (seqrel->rd_backend != MyBackendId) + if (!seqrel->rd_islocaltemp) PreventCommandIfReadOnly("nextval()"); #ifdef PGXC @@ -713,7 +700,7 @@ nextval_internal(Oid relid) } /* lock page' buffer and read tuple */ - seq = read_info(elm, seqrel, &buf); + seq = read_seq_tuple(elm, seqrel, &buf, &seqtuple); page = BufferGetPage(buf); #ifdef PGXC /* PGXC_COORD */ @@ -758,9 +745,8 @@ nextval_internal(Oid relid) if (!seq->is_called) { - rescnt++; /* last_value if not called */ + rescnt++; /* return last_value if not is_called */ fetch--; - log--; } /* @@ -773,7 +759,7 @@ nextval_internal(Oid relid) * checkpoint would fail to advance the sequence past the logged values. * In this case we may as well fetch extra values. */ - if (log < fetch) + if (log < fetch || !seq->is_called) { /* forced log to satisfy local demand for values */ fetch = log = fetch + SEQ_LOG_VALS; @@ -891,8 +877,18 @@ nextval_internal(Oid relid) last_used_seq = elm; + /* ready to change the on-disk (or really, in-buffer) tuple */ START_CRIT_SECTION(); + /* + * We must mark the buffer dirty before doing XLogInsert(); see notes in + * SyncOneBuffer(). However, we don't apply the desired changes just yet. + * This looks like a violation of the buffer update protocol, but it is + * in fact safe because we hold exclusive lock on the buffer. Any other + * process, including a checkpoint, that tries to examine the buffer + * contents will block until we release the lock, and then will see the + * final state that we install below. + */ MarkBufferDirty(buf); /* XLOG stuff */ @@ -902,20 +898,26 @@ nextval_internal(Oid relid) XLogRecPtr recptr; XLogRecData rdata[2]; - xlrec.node = seqrel->rd_node; - rdata[0].data = (char *) &xlrec; - rdata[0].len = sizeof(xl_seq_rec); - rdata[0].buffer = InvalidBuffer; - rdata[0].next = &(rdata[1]); + /* + * We don't log the current state of the tuple, but rather the state + * as it would appear after "log" more fetches. This lets us skip + * that many future WAL records, at the cost that we lose those + * sequence values if we crash. + */ /* set values that will be saved in xlog */ seq->last_value = next; seq->is_called = true; seq->log_cnt = 0; - rdata[1].data = (char *) page + ((PageHeader) page)->pd_upper; - rdata[1].len = ((PageHeader) page)->pd_special - - ((PageHeader) page)->pd_upper; + xlrec.node = seqrel->rd_node; + rdata[0].data = (char *) &xlrec; + rdata[0].len = sizeof(xl_seq_rec); + rdata[0].buffer = InvalidBuffer; + rdata[0].next = &(rdata[1]); + + rdata[1].data = (char *) seqtuple.t_data; + rdata[1].len = seqtuple.t_len; rdata[1].buffer = InvalidBuffer; rdata[1].next = NULL; @@ -925,7 +927,7 @@ nextval_internal(Oid relid) PageSetTLI(page, ThisTimeLineID); } - /* update on-disk data */ + /* Now update sequence tuple to the intended final state */ seq->last_value = last; /* last fetched number */ seq->is_called = true; seq->log_cnt = log; /* how much is logged */ @@ -970,25 +972,7 @@ currval_oid(PG_FUNCTION_ARGS) errmsg("currval of sequence \"%s\" is not yet defined in this session", RelationGetRelationName(seqrel)))); -#ifdef PGXC - if (IS_PGXC_COORDINATOR && - seqrel->rd_backend != MyBackendId) - { - char *seqname = GetGlobalSeqName(seqrel, NULL, NULL); - - result = (int64) GetCurrentValGTM(seqname); - if (result < 0) - ereport(ERROR, - (errcode(ERRCODE_CONNECTION_FAILURE), - errmsg("GTM error, could not obtain sequence value"))); - pfree(seqname); - } - else { -#endif result = elm->last; -#ifdef PGXC - } -#endif relation_close(seqrel, NoLock); PG_RETURN_INT64(result); @@ -1048,6 +1032,7 @@ do_setval(Oid relid, int64 next, bool iscalled) SeqTable elm; Relation seqrel; Buffer buf; + HeapTupleData seqtuple; Form_pg_sequence seq; #ifdef PGXC bool is_temp; @@ -1063,7 +1048,7 @@ do_setval(Oid relid, int64 next, bool iscalled) RelationGetRelationName(seqrel)))); /* read-only transactions may only modify temp sequences */ - if (seqrel->rd_backend != MyBackendId) + if (!seqrel->rd_islocaltemp) PreventCommandIfReadOnly("setval()"); #ifdef PGXC @@ -1071,7 +1056,7 @@ do_setval(Oid relid, int64 next, bool iscalled) #endif /* lock page' buffer and read tuple */ - seq = read_info(elm, seqrel, &buf); + seq = read_seq_tuple(elm, seqrel, &buf, &seqtuple); if ((next < seq->min_value) || (next > seq->max_value)) { @@ -1126,8 +1111,13 @@ do_setval(Oid relid, int64 next, bool iscalled) /* In any case, forget any future cached numbers */ elm->cached = elm->last; + /* ready to change the on-disk (or really, in-buffer) tuple */ START_CRIT_SECTION(); + seq->last_value = next; /* last fetched number */ + seq->is_called = iscalled; + seq->log_cnt = 0; + MarkBufferDirty(buf); /* XLOG stuff */ @@ -1144,14 +1134,8 @@ do_setval(Oid relid, int64 next, bool iscalled) rdata[0].buffer = InvalidBuffer; rdata[0].next = &(rdata[1]); - /* set values that will be saved in xlog */ - seq->last_value = next; - seq->is_called = true; - seq->log_cnt = 0; - - rdata[1].data = (char *) page + ((PageHeader) page)->pd_upper; - rdata[1].len = ((PageHeader) page)->pd_special - - ((PageHeader) page)->pd_upper; + rdata[1].data = (char *) seqtuple.t_data; + rdata[1].len = seqtuple.t_len; rdata[1].buffer = InvalidBuffer; rdata[1].next = NULL; @@ -1161,11 +1145,6 @@ do_setval(Oid relid, int64 next, bool iscalled) PageSetTLI(page, ThisTimeLineID); } - /* save info in sequence relation */ - seq->last_value = next; /* last fetched number */ - seq->is_called = iscalled; - seq->log_cnt = (iscalled) ? 0 : 1; - END_CRIT_SECTION(); #ifdef PGXC @@ -1322,13 +1301,20 @@ init_sequence(Oid relid, SeqTable *p_elm, Relation *p_rel) } -/* Given an opened relation, lock the page buffer and find the tuple */ +/* + * Given an opened sequence relation, lock the page buffer and find the tuple + * + * *buf receives the reference to the pinned-and-ex-locked buffer + * *seqtuple receives the reference to the sequence tuple proper + * (this arg should point to a local variable of type HeapTupleData) + * + * Function's return value points to the data payload of the tuple + */ static Form_pg_sequence -read_info(SeqTable elm, Relation rel, Buffer *buf) +read_seq_tuple(SeqTable elm, Relation rel, Buffer *buf, HeapTuple seqtuple) { Page page; ItemId lp; - HeapTupleData tuple; sequence_magic *sm; Form_pg_sequence seq; @@ -1344,7 +1330,10 @@ read_info(SeqTable elm, Relation rel, Buffer *buf) lp = PageGetItemId(page, FirstOffsetNumber); Assert(ItemIdIsNormal(lp)); - tuple.t_data = (HeapTupleHeader) PageGetItem(page, lp); + + /* Note we currently only bother to set these two fields of *seqtuple */ + seqtuple->t_data = (HeapTupleHeader) PageGetItem(page, lp); + seqtuple->t_len = ItemIdGetLength(lp); /* * Previous releases of Postgres neglected to prevent SELECT FOR UPDATE on @@ -1354,15 +1343,15 @@ read_info(SeqTable elm, Relation rel, Buffer *buf) * bit update, ie, don't bother to WAL-log it, since we can certainly do * this again if the update gets lost. */ - if (HeapTupleHeaderGetXmax(tuple.t_data) != InvalidTransactionId) + if (HeapTupleHeaderGetXmax(seqtuple->t_data) != InvalidTransactionId) { - HeapTupleHeaderSetXmax(tuple.t_data, InvalidTransactionId); - tuple.t_data->t_infomask &= ~HEAP_XMAX_COMMITTED; - tuple.t_data->t_infomask |= HEAP_XMAX_INVALID; + HeapTupleHeaderSetXmax(seqtuple->t_data, InvalidTransactionId); + seqtuple->t_data->t_infomask &= ~HEAP_XMAX_COMMITTED; + seqtuple->t_data->t_infomask |= HEAP_XMAX_INVALID; SetBufferCommitInfoNeedsSave(*buf); } - seq = (Form_pg_sequence) GETSTRUCT(&tuple); + seq = (Form_pg_sequence) GETSTRUCT(seqtuple); /* this is a handy place to update our copy of the increment */ elm->increment = seq->increment_by; @@ -1475,6 +1464,13 @@ init_params(List *options, bool isInit, defel->defname); } + /* + * We must reset log_cnt when isInit or when changing any parameters + * that would affect future nextval allocations. + */ + if (isInit) + new->log_cnt = 0; + /* INCREMENT BY */ if (increment_by != NULL) { @@ -1483,6 +1479,7 @@ init_params(List *options, bool isInit, ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("INCREMENT must not be zero"))); + new->log_cnt = 0; } else if (isInit) new->increment_by = 1; @@ -1492,30 +1489,39 @@ init_params(List *options, bool isInit, { new->is_cycled = intVal(is_cycled->arg); Assert(BoolIsValid(new->is_cycled)); + new->log_cnt = 0; } else if (isInit) new->is_cycled = false; /* MAXVALUE (null arg means NO MAXVALUE) */ if (max_value != NULL && max_value->arg) + { new->max_value = defGetInt64(max_value); + new->log_cnt = 0; + } else if (isInit || max_value != NULL) { if (new->increment_by > 0) new->max_value = SEQ_MAXVALUE; /* ascending seq */ else new->max_value = -1; /* descending seq */ + new->log_cnt = 0; } /* MINVALUE (null arg means NO MINVALUE) */ if (min_value != NULL && min_value->arg) + { new->min_value = defGetInt64(min_value); + new->log_cnt = 0; + } else if (isInit || min_value != NULL) { if (new->increment_by > 0) new->min_value = 1; /* ascending seq */ else new->min_value = SEQ_MINVALUE; /* descending seq */ + new->log_cnt = 0; } /* crosscheck min/max */ @@ -1580,13 +1586,12 @@ init_params(List *options, bool isInit, *is_restart = true; #endif new->is_called = false; - new->log_cnt = 1; + new->log_cnt = 0; } else if (isInit) { new->last_value = new->start_value; new->is_called = false; - new->log_cnt = 1; } /* crosscheck RESTART (or current value, if changing MIN/MAX) */ @@ -1629,6 +1634,7 @@ init_params(List *options, bool isInit, errmsg("CACHE (%s) must be greater than zero", buf))); } + new->log_cnt = 0; } else if (isInit) new->cache_value = 1; @@ -1809,6 +1815,7 @@ pg_sequence_parameters(PG_FUNCTION_ARGS) SeqTable elm; Relation seqrel; Buffer buf; + HeapTupleData seqtuple; Form_pg_sequence seq; /* open and AccessShareLock sequence */ @@ -1836,7 +1843,7 @@ pg_sequence_parameters(PG_FUNCTION_ARGS) memset(isnull, 0, sizeof(isnull)); - seq = read_info(elm, seqrel, &buf); + seq = read_seq_tuple(elm, seqrel, &buf, &seqtuple); values[0] = Int64GetDatum(seq->start_value); values[1] = Int64GetDatum(seq->min_value); @@ -1857,6 +1864,7 @@ seq_redo(XLogRecPtr lsn, XLogRecord *record) uint8 info = record->xl_info & ~XLR_INFO_MASK; Buffer buffer; Page page; + Page localpage; char *item; Size itemsz; xl_seq_rec *xlrec = (xl_seq_rec *) XLogRecGetData(record); @@ -1872,23 +1880,37 @@ seq_redo(XLogRecPtr lsn, XLogRecord *record) Assert(BufferIsValid(buffer)); page = (Page) BufferGetPage(buffer); - /* Always reinit the page and reinstall the magic number */ - /* See comments in DefineSequence */ - PageInit((Page) page, BufferGetPageSize(buffer), sizeof(sequence_magic)); - sm = (sequence_magic *) PageGetSpecialPointer(page); + /* + * We must always reinit the page and reinstall the magic number (see + * comments in fill_seq_with_data). However, since this WAL record type + * is also used for updating sequences, it's possible that a hot-standby + * backend is examining the page concurrently; so we mustn't transiently + * trash the buffer. The solution is to build the correct new page + * contents in local workspace and then memcpy into the buffer. Then + * only bytes that are supposed to change will change, even transiently. + * We must palloc the local page for alignment reasons. + */ + localpage = (Page) palloc(BufferGetPageSize(buffer)); + + PageInit(localpage, BufferGetPageSize(buffer), sizeof(sequence_magic)); + sm = (sequence_magic *) PageGetSpecialPointer(localpage); sm->magic = SEQ_MAGIC; item = (char *) xlrec + sizeof(xl_seq_rec); itemsz = record->xl_len - sizeof(xl_seq_rec); - itemsz = MAXALIGN(itemsz); - if (PageAddItem(page, (Item) item, itemsz, + + if (PageAddItem(localpage, (Item) item, itemsz, FirstOffsetNumber, false, false) == InvalidOffsetNumber) elog(PANIC, "seq_redo: failed to add item to page"); - PageSetLSN(page, lsn); - PageSetTLI(page, ThisTimeLineID); + PageSetLSN(localpage, lsn); + PageSetTLI(localpage, ThisTimeLineID); + + memcpy(page, localpage, BufferGetPageSize(buffer)); MarkBufferDirty(buffer); UnlockReleaseBuffer(buffer); + + pfree(localpage); } void diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 02042e6eb0..c32a9ef1a8 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -68,11 +68,13 @@ #include "parser/parser.h" #include "rewrite/rewriteDefine.h" #include "rewrite/rewriteHandler.h" +#include "rewrite/rewriteManip.h" #include "storage/bufmgr.h" #include "storage/lmgr.h" #include "storage/lock.h" #include "storage/predicate.h" #include "storage/smgr.h" +#include "tcop/utility.h" #include "utils/acl.h" #include "utils/builtins.h" #include "utils/fmgroids.h" @@ -252,7 +254,6 @@ static void truncate_check_rel(Relation rel); static List *MergeAttributes(List *schema, List *supers, char relpersistence, List **supOids, List **supconstr, int *supOidCount); static bool MergeCheckConstraint(List *constraints, char *name, Node *expr); -static bool change_varattnos_walker(Node *node, const AttrNumber *newattno); static void MergeAttributesIntoExisting(Relation child_rel, Relation parent_rel); static void MergeConstraintsIntoExisting(Relation child_rel, Relation parent_rel); static void StoreCatalogInheritance(Oid relationId, List *supers); @@ -261,11 +262,11 @@ static void StoreCatalogInheritance1(Oid relationId, Oid parentOid, static int findAttrByName(const char *attributeName, List *schema); static void setRelhassubclassInRelation(Oid relationId, bool relhassubclass); static void AlterIndexNamespaces(Relation classRel, Relation rel, - Oid oldNspOid, Oid newNspOid); + Oid oldNspOid, Oid newNspOid, ObjectAddresses *objsMoved); static void AlterSeqNamespaces(Relation classRel, Relation rel, - Oid oldNspOid, Oid newNspOid, - const char *newNspName, LOCKMODE lockmode); -static void ATExecValidateConstraint(Relation rel, const char *constrName); + Oid oldNspOid, Oid newNspOid, ObjectAddresses *objsMoved, + LOCKMODE lockmode); +static void ATExecValidateConstraint(Relation rel, char *constrName); static int transformColumnNameList(Oid relId, List *colList, int16 *attnums, Oid *atttypids); static int transformFkeyGetPrimaryKey(Relation pkrel, Oid *indexOid, @@ -279,7 +280,8 @@ static void checkFkeyPermissions(Relation rel, int16 *attnums, int natts); static void validateForeignKeyConstraint(char *conname, Relation rel, Relation pkrel, Oid pkindOid, Oid constraintOid); -static void createForeignKeyTriggers(Relation rel, Constraint *fkconstraint, +static void createForeignKeyTriggers(Relation rel, Oid refRelOid, + Constraint *fkconstraint, Oid constraintOid, Oid indexOid); static void ATController(Relation rel, List *cmds, bool recurse, LOCKMODE lockmode); static void ATPrepCmd(List **wqueue, Relation rel, AlterTableCmd *cmd, @@ -330,13 +332,15 @@ static void ATExecAddIndex(AlteredTableInfo *tab, Relation rel, IndexStmt *stmt, bool is_rebuild, LOCKMODE lockmode); static void ATExecAddConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel, - Constraint *newConstraint, bool recurse, LOCKMODE lockmode); + Constraint *newConstraint, bool recurse, bool is_readd, + LOCKMODE lockmode); static void ATExecAddIndexConstraint(AlteredTableInfo *tab, Relation rel, IndexStmt *stmt, LOCKMODE lockmode); static void ATAddCheckConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel, Constraint *constr, - bool recurse, bool recursing, LOCKMODE lockmode); + bool recurse, bool recursing, bool is_readd, + LOCKMODE lockmode); static void ATAddForeignKeyConstraint(AlteredTableInfo *tab, Relation rel, Constraint *fkconstraint, LOCKMODE lockmode); static void ATExecDropConstraint(Relation rel, const char *constrName, @@ -351,7 +355,10 @@ static bool ATColumnChangeRequiresRewrite(Node *expr, AttrNumber varattno); static void ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel, AlterTableCmd *cmd, LOCKMODE lockmode); static void ATPostAlterTypeCleanup(List **wqueue, AlteredTableInfo *tab, LOCKMODE lockmode); -static void ATPostAlterTypeParse(char *cmd, List **wqueue, LOCKMODE lockmode); +static void ATPostAlterTypeParse(Oid oldRelId, Oid refRelId, char *cmd, + List **wqueue, LOCKMODE lockmode); +static void change_owner_fix_column_acls(Oid relationOid, + Oid oldOwnerId, Oid newOwnerId); static void change_owner_recurse_to_sequences(Oid relationOid, Oid newOwnerId, LOCKMODE lockmode); static void ATExecClusterOn(Relation rel, const char *indexName, LOCKMODE lockmode); @@ -438,6 +445,13 @@ DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId) (errcode(ERRCODE_WRONG_OBJECT_TYPE), errmsg("constraints on foreign tables are not supported"))); + /* + * Look up the namespace in which we are supposed to create the relation, + * and check we have permission to create there. + */ + namespaceId = RangeVarGetAndCheckCreationNamespace(stmt->relation); + RangeVarAdjustRelationPersistence(stmt->relation, namespaceId); + /* * Security check: disallow creating temp tables from security-restricted * code. This is needed because calling code might not expect untrusted @@ -449,12 +463,6 @@ DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId) (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), errmsg("cannot create temporary table within security-restricted operation"))); - /* - * Look up the namespace in which we are supposed to create the relation, - * and check we have permission to create there. - */ - namespaceId = RangeVarGetAndCheckCreationNamespace(stmt->relation); - /* * Select tablespace to use. If not specified, use default tablespace * (which may in turn default to database's default). @@ -1080,6 +1088,8 @@ ExecuteTruncate(TruncateStmt *stmt) * deletion at commit. */ RelationSetNewRelfilenode(rel, RecentXmin); + if (rel->rd_rel->relpersistence == RELPERSISTENCE_UNLOGGED) + heap_create_init_fork(rel); heap_relid = RelationGetRelid(rel); toast_relid = rel->rd_rel->reltoastrelid; @@ -1091,6 +1101,8 @@ ExecuteTruncate(TruncateStmt *stmt) { rel = relation_open(toast_relid, AccessExclusiveLock); RelationSetNewRelfilenode(rel, RecentXmin); + if (rel->rd_rel->relpersistence == RELPERSISTENCE_UNLOGGED) + heap_create_init_fork(rel); heap_close(rel, NoLock); } @@ -1377,13 +1389,20 @@ MergeAttributes(List *schema, List *supers, char relpersistence, errmsg("inherited relation \"%s\" is not a table", parent->relname))); /* Permanent rels cannot inherit from temporary ones */ - if (relpersistence != RELPERSISTENCE_TEMP - && RelationUsesTempNamespace(relation)) + if (relpersistence != RELPERSISTENCE_TEMP && + relation->rd_rel->relpersistence == RELPERSISTENCE_TEMP) ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), errmsg("cannot inherit from temporary relation \"%s\"", parent->relname))); + /* If existing rel is temp, it must belong to this session */ + if (relation->rd_rel->relpersistence == RELPERSISTENCE_TEMP && + !relation->rd_islocaltemp) + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("cannot inherit from temporary relation of another session"))); + /* * We should have an UNDER permission flag for this, but for now, * demand that creator of a child table own the parent. @@ -1415,7 +1434,7 @@ MergeAttributes(List *schema, List *supers, char relpersistence, * parents after the first one, nor if we have dropped columns.) */ newattno = (AttrNumber *) - palloc(tupleDesc->natts * sizeof(AttrNumber)); + palloc0(tupleDesc->natts * sizeof(AttrNumber)); for (parent_attno = 1; parent_attno <= tupleDesc->natts; parent_attno++) @@ -1429,15 +1448,7 @@ MergeAttributes(List *schema, List *supers, char relpersistence, * Ignore dropped columns in the parent. */ if (attribute->attisdropped) - { - /* - * change_varattnos_of_a_node asserts that this is greater - * than zero, so if anything tries to use it, we should find - * out. - */ - newattno[parent_attno - 1] = 0; - continue; - } + continue; /* leave newattno entry as zero */ /* * Does it conflict with some previously inherited column? @@ -1575,10 +1586,26 @@ MergeAttributes(List *schema, List *supers, char relpersistence, { char *name = check[i].ccname; Node *expr; + bool found_whole_row; + + /* Adjust Vars to match new table's column numbering */ + expr = map_variable_attnos(stringToNode(check[i].ccbin), + 1, 0, + newattno, tupleDesc->natts, + &found_whole_row); - /* adjust varattnos of ccbin here */ - expr = stringToNode(check[i].ccbin); - change_varattnos_of_a_node(expr, newattno); + /* + * For the moment we have to reject whole-row variables. + * We could convert them, if we knew the new table's rowtype + * OID, but that hasn't been assigned yet. + */ + if (found_whole_row) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot convert whole-row table reference"), + errdetail("Constraint \"%s\" contains a whole-row reference to table \"%s\".", + name, + RelationGetRelationName(relation)))); /* check for duplicate */ if (!MergeCheckConstraint(constraints, name, expr)) @@ -1779,101 +1806,6 @@ MergeCheckConstraint(List *constraints, char *name, Node *expr) } -/* - * Replace varattno values in an expression tree according to the given - * map array, that is, varattno N is replaced by newattno[N-1]. It is - * caller's responsibility to ensure that the array is long enough to - * define values for all user varattnos present in the tree. System column - * attnos remain unchanged. - * - * Note that the passed node tree is modified in-place! - */ -void -change_varattnos_of_a_node(Node *node, const AttrNumber *newattno) -{ - /* no setup needed, so away we go */ - (void) change_varattnos_walker(node, newattno); -} - -static bool -change_varattnos_walker(Node *node, const AttrNumber *newattno) -{ - if (node == NULL) - return false; - if (IsA(node, Var)) - { - Var *var = (Var *) node; - - if (var->varlevelsup == 0 && var->varno == 1 && - var->varattno > 0) - { - /* - * ??? the following may be a problem when the node is multiply - * referenced though stringToNode() doesn't create such a node - * currently. - */ - Assert(newattno[var->varattno - 1] > 0); - var->varattno = var->varoattno = newattno[var->varattno - 1]; - } - return false; - } - return expression_tree_walker(node, change_varattnos_walker, - (void *) newattno); -} - -/* - * Generate a map for change_varattnos_of_a_node from old and new TupleDesc's, - * matching according to column name. - */ -AttrNumber * -varattnos_map(TupleDesc olddesc, TupleDesc newdesc) -{ - AttrNumber *attmap; - int i, - j; - - attmap = (AttrNumber *) palloc0(sizeof(AttrNumber) * olddesc->natts); - for (i = 1; i <= olddesc->natts; i++) - { - if (olddesc->attrs[i - 1]->attisdropped) - continue; /* leave the entry as zero */ - - for (j = 1; j <= newdesc->natts; j++) - { - if (strcmp(NameStr(olddesc->attrs[i - 1]->attname), - NameStr(newdesc->attrs[j - 1]->attname)) == 0) - { - attmap[i - 1] = j; - break; - } - } - } - return attmap; -} - -/* - * Generate a map for change_varattnos_of_a_node from a TupleDesc and a list - * of ColumnDefs - */ -AttrNumber * -varattnos_map_schema(TupleDesc old, List *schema) -{ - AttrNumber *attmap; - int i; - - attmap = (AttrNumber *) palloc0(sizeof(AttrNumber) * old->natts); - for (i = 1; i <= old->natts; i++) - { - if (old->attrs[i - 1]->attisdropped) - continue; /* leave the entry as zero */ - - attmap[i - 1] = findAttrByName(NameStr(old->attrs[i - 1]->attname), - schema); - } - return attmap; -} - - /* * StoreCatalogInheritance * Updates the system catalogs with proper inheritance information. @@ -2496,15 +2428,13 @@ CheckTableNotInUse(Relation rel, const char *stmt) * rather than reassess it at lower levels. */ void -AlterTable(AlterTableStmt *stmt) +AlterTable(Oid relid, AlterTableStmt *stmt) { Relation rel; LOCKMODE lockmode = AlterTableGetLockLevel(stmt->cmds); - /* - * Acquire same level of lock as already acquired during parsing. - */ - rel = relation_openrv(stmt->relation, lockmode); + /* Caller is required to provide an adequate lock. */ + rel = relation_open(relid, NoLock); CheckTableNotInUse(rel, "ALTER TABLE"); @@ -2619,6 +2549,31 @@ AlterTableInternal(Oid relid, List *cmds, bool recurse) LOCKMODE AlterTableGetLockLevel(List *cmds) { + /* + * Late in 9.1 dev cycle a number of issues were uncovered with access + * to catalog relations, leading to the decision to re-enforce all DDL + * at AccessExclusiveLock level by default. + * + * The issues are that there is a pervasive assumption in the code that + * the catalogs will not be read unless an AccessExclusiveLock is held. + * If that rule is relaxed, we must protect against a number of potential + * effects - infrequent, but proven possible with test cases where + * multiple DDL operations occur in a stream against frequently accessed + * tables. + * + * 1. Catalog tables are read using SnapshotNow, which has a race bug + * that allows a scan to return no valid rows even when one is present + * in the case of a commit of a concurrent update of the catalog table. + * SnapshotNow also ignores transactions in progress, so takes the + * latest committed version without waiting for the latest changes. + * + * 2. Relcache needs to be internally consistent, so unless we lock the + * definition during reads we have no way to guarantee that. + * + * 3. Catcache access isn't coordinated at all so refreshes can occur at + * any time. + */ +#ifdef REDUCED_ALTER_TABLE_LOCK_LEVELS ListCell *lcmd; LOCKMODE lockmode = ShareUpdateExclusiveLock; @@ -2662,6 +2617,7 @@ AlterTableGetLockLevel(List *cmds) case AT_ColumnDefault: case AT_ProcessedConstraint: /* becomes AT_AddConstraint */ case AT_AddConstraintRecurse: /* becomes AT_AddConstraint */ + case AT_ReAddConstraint: /* becomes AT_AddConstraint */ case AT_EnableTrig: case AT_EnableAlwaysTrig: case AT_EnableReplicaTrig: @@ -2767,6 +2723,9 @@ AlterTableGetLockLevel(List *cmds) if (cmd_lockmode > lockmode) lockmode = cmd_lockmode; } +#else + LOCKMODE lockmode = AccessExclusiveLock; +#endif return lockmode; } @@ -3140,11 +3099,15 @@ ATExecCmd(List **wqueue, AlteredTableInfo *tab, Relation rel, break; case AT_AddConstraint: /* ADD CONSTRAINT */ ATExecAddConstraint(wqueue, tab, rel, (Constraint *) cmd->def, - false, lockmode); + false, false, lockmode); break; case AT_AddConstraintRecurse: /* ADD CONSTRAINT with recursion */ ATExecAddConstraint(wqueue, tab, rel, (Constraint *) cmd->def, - true, lockmode); + true, false, lockmode); + break; + case AT_ReAddConstraint: /* Re-add pre-existing check constraint */ + ATExecAddConstraint(wqueue, tab, rel, (Constraint *) cmd->def, + false, true, lockmode); break; case AT_AddIndexConstraint: /* ADD CONSTRAINT USING INDEX */ ATExecAddIndexConstraint(tab, rel, (IndexStmt *) cmd->def, lockmode); @@ -3413,8 +3376,8 @@ ATRewriteTables(List **wqueue, LOCKMODE lockmode) /* * In PGXC, do not check the FK constraints on the Coordinator, and just return * That is because a SELECT is generated whose plan will try and use - * the data nodes. We (currently) do not want to do that on the Coordinator, - * when the command is passed down to the data nodes it will + * the Datanodes. We (currently) do not want to do that on the Coordinator, + * when the command is passed down to the Datanodes it will * peform the check locally. * This issue was introduced when we added multi-step handling, * it caused foreign key constraints to fail. @@ -3446,14 +3409,12 @@ ATRewriteTables(List **wqueue, LOCKMODE lockmode) Relation refrel; if (rel == NULL) + { /* Long since locked, no need for another */ rel = heap_open(tab->relid, NoLock); + } - /* - * We're adding a trigger to both tables, so the lock level - * here should sensibly reflect that. - */ - refrel = heap_open(con->refrelid, ShareRowExclusiveLock); + refrel = heap_open(con->refrelid, RowShareLock); validateForeignKeyConstraint(fkconstraint->conname, rel, refrel, con->refindid, @@ -4032,28 +3993,28 @@ find_composite_type_dependencies(Oid typeOid, Relation origRelation, if (origTypeName) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("cannot alter type \"%s\" because column \"%s\".\"%s\" uses it", + errmsg("cannot alter type \"%s\" because column \"%s.%s\" uses it", origTypeName, RelationGetRelationName(rel), NameStr(att->attname)))); else if (origRelation->rd_rel->relkind == RELKIND_COMPOSITE_TYPE) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("cannot alter type \"%s\" because column \"%s\".\"%s\" uses it", + errmsg("cannot alter type \"%s\" because column \"%s.%s\" uses it", RelationGetRelationName(origRelation), RelationGetRelationName(rel), NameStr(att->attname)))); else if (origRelation->rd_rel->relkind == RELKIND_FOREIGN_TABLE) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("cannot alter foreign table \"%s\" because column \"%s\".\"%s\" uses its rowtype", + errmsg("cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type", RelationGetRelationName(origRelation), RelationGetRelationName(rel), NameStr(att->attname)))); else ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("cannot alter table \"%s\" because column \"%s\".\"%s\" uses its rowtype", + errmsg("cannot alter table \"%s\" because column \"%s.%s\" uses its row type", RelationGetRelationName(origRelation), RelationGetRelationName(rel), NameStr(att->attname)))); @@ -4641,6 +4602,8 @@ ATExecDropNotNull(Relation rel, const char *colName, LOCKMODE lockmode) /* * Check that the attribute is not in a primary key + * + * Note: we'll throw error even if the pkey index is not valid. */ /* Loop over all indexes on the relation */ @@ -5257,7 +5220,7 @@ ATExecAddIndex(AlteredTableInfo *tab, Relation rel, /* The IndexStmt has already been through transformIndexStmt */ - DefineIndex(stmt->relation, /* relation */ + DefineIndex(RelationGetRelid(rel), /* relation */ stmt->idxname, /* index name */ InvalidOid, /* no predefined OID */ stmt->accessMethod, /* am name */ @@ -5343,7 +5306,8 @@ ATExecAddIndexConstraint(AlteredTableInfo *tab, Relation rel, stmt->deferrable, stmt->initdeferred, stmt->primary, - true, + true, /* update pg_index */ + true, /* remove old dependencies */ allowSystemTableMods); index_close(indexRel, NoLock); @@ -5354,7 +5318,8 @@ ATExecAddIndexConstraint(AlteredTableInfo *tab, Relation rel, */ static void ATExecAddConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel, - Constraint *newConstraint, bool recurse, LOCKMODE lockmode) + Constraint *newConstraint, bool recurse, bool is_readd, + LOCKMODE lockmode) { Assert(IsA(newConstraint, Constraint)); @@ -5367,7 +5332,8 @@ ATExecAddConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel, { case CONSTR_CHECK: ATAddCheckConstraint(wqueue, tab, rel, - newConstraint, recurse, false, lockmode); + newConstraint, recurse, false, is_readd, + lockmode); break; case CONSTR_FOREIGN: @@ -5419,11 +5385,18 @@ 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, Constraint *constr, bool recurse, bool recursing, - LOCKMODE lockmode) + bool is_readd, LOCKMODE lockmode) { List *newcons; ListCell *lcon; @@ -5482,6 +5455,13 @@ ATAddCheckConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel, if (newcons == NIL) return; + /* + * Also, in a re-add operation, we don't need to recurse (that will be + * handled at higher levels). + */ + if (is_readd) + return; + /* * Propagate to children as appropriate. Unlike most other ALTER * routines, we have to do this one level of recursion at a time; we can't @@ -5513,7 +5493,7 @@ ATAddCheckConstraint(List **wqueue, AlteredTableInfo *tab, Relation rel, /* Recurse to child */ ATAddCheckConstraint(wqueue, childtab, childrel, - constr, recurse, true, lockmode); + constr, recurse, true, is_readd, lockmode); heap_close(childrel, NoLock); } @@ -5545,7 +5525,17 @@ ATAddForeignKeyConstraint(AlteredTableInfo *tab, Relation rel, Oid indexOid; Oid constrOid; - pkrel = heap_openrv(fkconstraint->pktable, lockmode); + /* + * Grab an exclusive lock on the pk table, so that someone doesn't delete + * rows out from under us. (Although a lesser lock would do for that + * purpose, we'll need exclusive lock anyway to add triggers to the pk + * table; trying to start with a lesser lock will just create a risk of + * deadlock.) + */ + if (OidIsValid(fkconstraint->old_pktable_oid)) + pkrel = heap_open(fkconstraint->old_pktable_oid, AccessExclusiveLock); + else + pkrel = heap_openrv(fkconstraint->pktable, AccessExclusiveLock); /* * Validity checks (permission checks wait till we have the column @@ -5591,6 +5581,10 @@ ATAddForeignKeyConstraint(AlteredTableInfo *tab, Relation rel, ereport(ERROR, (errcode(ERRCODE_INVALID_TABLE_DEFINITION), errmsg("constraints on temporary tables may reference only temporary tables"))); + if (!pkrel->rd_islocaltemp || !rel->rd_islocaltemp) + ereport(ERROR, + (errcode(ERRCODE_INVALID_TABLE_DEFINITION), + errmsg("constraints on temporary tables must involve temporary tables of this session"))); break; } @@ -5789,12 +5783,13 @@ ATAddForeignKeyConstraint(AlteredTableInfo *tab, Relation rel, /* * Create the triggers that will enforce the constraint. */ - createForeignKeyTriggers(rel, fkconstraint, constrOid, indexOid); + createForeignKeyTriggers(rel, RelationGetRelid(pkrel), fkconstraint, + constrOid, indexOid); /* - * Tell Phase 3 to check that the constraint is satisfied by existing rows - * We can skip this during table creation or if requested explicitly by - * specifying NOT VALID on an alter table statement. + * Tell Phase 3 to check that the constraint is satisfied by existing rows. + * We can skip this during table creation, or if requested explicitly by + * specifying NOT VALID in an ADD FOREIGN KEY command. */ if (!fkconstraint->skip_validation) { @@ -5821,7 +5816,7 @@ ATAddForeignKeyConstraint(AlteredTableInfo *tab, Relation rel, * ALTER TABLE VALIDATE CONSTRAINT */ static void -ATExecValidateConstraint(Relation rel, const char *constrName) +ATExecValidateConstraint(Relation rel, char *constrName) { Relation conrel; SysScanDesc scan; @@ -5876,7 +5871,7 @@ ATExecValidateConstraint(Relation rel, const char *constrName) */ refrel = heap_open(con->confrelid, RowShareLock); - validateForeignKeyConstraint((char *) constrName, rel, refrel, + validateForeignKeyConstraint(constrName, rel, refrel, con->conindid, conid); @@ -5896,6 +5891,7 @@ ATExecValidateConstraint(Relation rel, const char *constrName) heap_close(conrel, RowExclusiveLock); } + /* * transformColumnNameList - transform list of column names * @@ -5964,7 +5960,7 @@ transformFkeyGetPrimaryKey(Relation pkrel, Oid *indexOid, /* * Get the list of index OIDs for the table from the relcache, and look up * each one in the pg_index syscache until we find one marked primary key - * (hopefully there isn't more than one such). + * (hopefully there isn't more than one such). Insist it's valid, too. */ *indexOid = InvalidOid; @@ -5978,7 +5974,7 @@ transformFkeyGetPrimaryKey(Relation pkrel, Oid *indexOid, if (!HeapTupleIsValid(indexTuple)) elog(ERROR, "cache lookup failed for index %u", indexoid); indexStruct = (Form_pg_index) GETSTRUCT(indexTuple); - if (indexStruct->indisprimary) + if (indexStruct->indisprimary && IndexIsValid(indexStruct)) { /* * Refuse to use a deferrable primary key. This is per SQL spec, @@ -6076,10 +6072,12 @@ transformFkeyCheckAttrs(Relation pkrel, /* * Must have the right number of columns; must be unique and not a - * partial index; forget it if there are any expressions, too + * partial index; forget it if there are any expressions, too. Invalid + * indexes are out as well. */ if (indexStruct->indnatts == numattrs && indexStruct->indisunique && + IndexIsValid(indexStruct) && heap_attisnull(indexTuple, Anum_pg_index_indpred) && heap_attisnull(indexTuple, Anum_pg_index_indexprs)) { @@ -6275,14 +6273,14 @@ validateForeignKeyConstraint(char *conname, } static void -CreateFKCheckTrigger(RangeVar *myRel, Constraint *fkconstraint, +CreateFKCheckTrigger(Oid myRelOid, Oid refRelOid, Constraint *fkconstraint, Oid constraintOid, Oid indexOid, bool on_insert) { CreateTrigStmt *fk_trigger; fk_trigger = makeNode(CreateTrigStmt); fk_trigger->trigname = "RI_ConstraintTrigger"; - fk_trigger->relation = myRel; + fk_trigger->relation = NULL; fk_trigger->row = true; fk_trigger->timing = TRIGGER_TYPE_AFTER; @@ -6303,10 +6301,11 @@ CreateFKCheckTrigger(RangeVar *myRel, Constraint *fkconstraint, fk_trigger->isconstraint = true; fk_trigger->deferrable = fkconstraint->deferrable; fk_trigger->initdeferred = fkconstraint->initdeferred; - fk_trigger->constrrel = fkconstraint->pktable; + fk_trigger->constrrel = NULL; fk_trigger->args = NIL; - (void) CreateTrigger(fk_trigger, NULL, constraintOid, indexOid, true); + (void) CreateTrigger(fk_trigger, NULL, myRelOid, refRelOid, constraintOid, + indexOid, true); /* Make changes-so-far visible */ CommandCounterIncrement(); @@ -6316,43 +6315,31 @@ CreateFKCheckTrigger(RangeVar *myRel, Constraint *fkconstraint, * Create the triggers that implement an FK constraint. */ static void -createForeignKeyTriggers(Relation rel, Constraint *fkconstraint, +createForeignKeyTriggers(Relation rel, Oid refRelOid, Constraint *fkconstraint, Oid constraintOid, Oid indexOid) { - RangeVar *myRel; + Oid myRelOid; CreateTrigStmt *fk_trigger; - /* - * Reconstruct a RangeVar for my relation (not passed in, unfortunately). - */ - myRel = makeRangeVar(get_namespace_name(RelationGetNamespace(rel)), - pstrdup(RelationGetRelationName(rel)), - -1); + myRelOid = RelationGetRelid(rel); /* Make changes-so-far visible */ CommandCounterIncrement(); - /* - * Build and execute a CREATE CONSTRAINT TRIGGER statement for the CHECK - * action for both INSERTs and UPDATEs on the referencing table. - */ - CreateFKCheckTrigger(myRel, fkconstraint, constraintOid, indexOid, true); - CreateFKCheckTrigger(myRel, fkconstraint, constraintOid, indexOid, false); - /* * Build and execute a CREATE CONSTRAINT TRIGGER statement for the ON * DELETE action on the referenced table. */ fk_trigger = makeNode(CreateTrigStmt); fk_trigger->trigname = "RI_ConstraintTrigger"; - fk_trigger->relation = fkconstraint->pktable; + fk_trigger->relation = NULL; fk_trigger->row = true; fk_trigger->timing = TRIGGER_TYPE_AFTER; fk_trigger->events = TRIGGER_TYPE_DELETE; fk_trigger->columns = NIL; fk_trigger->whenClause = NULL; fk_trigger->isconstraint = true; - fk_trigger->constrrel = myRel; + fk_trigger->constrrel = NULL; switch (fkconstraint->fk_del_action) { case FKCONSTR_ACTION_NOACTION: @@ -6387,7 +6374,8 @@ createForeignKeyTriggers(Relation rel, Constraint *fkconstraint, } fk_trigger->args = NIL; - (void) CreateTrigger(fk_trigger, NULL, constraintOid, indexOid, true); + (void) CreateTrigger(fk_trigger, NULL, refRelOid, myRelOid, constraintOid, + indexOid, true); /* Make changes-so-far visible */ CommandCounterIncrement(); @@ -6398,14 +6386,14 @@ createForeignKeyTriggers(Relation rel, Constraint *fkconstraint, */ fk_trigger = makeNode(CreateTrigStmt); fk_trigger->trigname = "RI_ConstraintTrigger"; - fk_trigger->relation = fkconstraint->pktable; + fk_trigger->relation = NULL; fk_trigger->row = true; fk_trigger->timing = TRIGGER_TYPE_AFTER; fk_trigger->events = TRIGGER_TYPE_UPDATE; fk_trigger->columns = NIL; fk_trigger->whenClause = NULL; fk_trigger->isconstraint = true; - fk_trigger->constrrel = myRel; + fk_trigger->constrrel = NULL; switch (fkconstraint->fk_upd_action) { case FKCONSTR_ACTION_NOACTION: @@ -6440,7 +6428,31 @@ createForeignKeyTriggers(Relation rel, Constraint *fkconstraint, } fk_trigger->args = NIL; - (void) CreateTrigger(fk_trigger, NULL, constraintOid, indexOid, true); + (void) CreateTrigger(fk_trigger, NULL, refRelOid, myRelOid, constraintOid, + indexOid, true); + + /* Make changes-so-far visible */ + CommandCounterIncrement(); + + /* + * Build and execute CREATE CONSTRAINT TRIGGER statements for the CHECK + * action for both INSERTs and UPDATEs on the referencing table. + * + * Note: for a self-referential FK (referencing and referenced tables are + * the same), it is important that the ON UPDATE action fires before the + * CHECK action, since both triggers will fire on the same row during an + * UPDATE event; otherwise the CHECK trigger will be checking a non-final + * state of the row. Because triggers fire in name order, we are + * effectively relying on the OIDs of the triggers to sort correctly as + * text. This will work except when the OID counter wraps around or adds + * a digit, eg "99999" sorts after "100000". That is infrequent enough, + * and the use of self-referential FKs is rare enough, that we live with + * it for now. There will be a real fix in PG 9.2. + */ + CreateFKCheckTrigger(myRelOid, refRelOid, fkconstraint, constraintOid, + indexOid, true); + CreateFKCheckTrigger(myRelOid, refRelOid, fkconstraint, constraintOid, + indexOid, false); } /* @@ -6713,7 +6725,7 @@ ATPrepAlterColumnType(List **wqueue, * expression, else just take the old value and try to coerce it. We * do this first so that type incompatibility can be detected before * we waste effort, and because we need the expression to be parsed - * against the original table rowtype. + * against the original table row type. */ if (transform) { @@ -6787,7 +6799,8 @@ ATPrepAlterColumnType(List **wqueue, else if (transform) ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), - errmsg("ALTER TYPE USING is only supported on plain tables"))); + errmsg("\"%s\" is not a table", + RelationGetRelationName(rel)))); if (tab->relkind == RELKIND_COMPOSITE_TYPE || tab->relkind == RELKIND_FOREIGN_TABLE) @@ -7237,7 +7250,8 @@ static void ATPostAlterTypeCleanup(List **wqueue, AlteredTableInfo *tab, LOCKMODE lockmode) { ObjectAddress obj; - ListCell *l; + ListCell *def_item; + ListCell *oid_item; /* * Re-parse the index and constraint definitions, and attach them to the @@ -7246,11 +7260,36 @@ ATPostAlterTypeCleanup(List **wqueue, AlteredTableInfo *tab, LOCKMODE lockmode) * lock on the table the constraint is attached to, and we need to get * that before dropping. It's safe because the parser won't actually look * at the catalogs to detect the existing entry. + * + * We can't rely on the output of deparsing to tell us which relation + * to operate on, because concurrent activity might have made the name + * resolve differently. Instead, we've got to use the OID of the + * constraint or index we're processing to figure out which relation + * to operate on. */ - foreach(l, tab->changedIndexDefs) - ATPostAlterTypeParse((char *) lfirst(l), wqueue, lockmode); - foreach(l, tab->changedConstraintDefs) - ATPostAlterTypeParse((char *) lfirst(l), wqueue, lockmode); + forboth(oid_item, tab->changedConstraintOids, + def_item, tab->changedConstraintDefs) + { + Oid oldId = lfirst_oid(oid_item); + Oid relid; + Oid confrelid; + + get_constraint_relation_oids(oldId, &relid, &confrelid); + ATPostAlterTypeParse(relid, confrelid, + (char *) lfirst(def_item), + wqueue, lockmode); + } + forboth(oid_item, tab->changedIndexOids, + def_item, tab->changedIndexDefs) + { + Oid oldId = lfirst_oid(oid_item); + Oid relid; + + relid = IndexGetRelation(oldId); + ATPostAlterTypeParse(relid, InvalidOid, + (char *) lfirst(def_item), + wqueue, lockmode); + } /* * Now we can drop the existing constraints and indexes --- constraints @@ -7260,18 +7299,18 @@ ATPostAlterTypeCleanup(List **wqueue, AlteredTableInfo *tab, LOCKMODE lockmode) * should be okay to use DROP_RESTRICT here, since nothing else should be * depending on these objects. */ - foreach(l, tab->changedConstraintOids) + foreach(oid_item, tab->changedConstraintOids) { obj.classId = ConstraintRelationId; - obj.objectId = lfirst_oid(l); + obj.objectId = lfirst_oid(oid_item); obj.objectSubId = 0; performDeletion(&obj, DROP_RESTRICT); } - foreach(l, tab->changedIndexOids) + foreach(oid_item, tab->changedIndexOids) { obj.classId = RelationRelationId; - obj.objectId = lfirst_oid(l); + obj.objectId = lfirst_oid(oid_item); obj.objectSubId = 0; performDeletion(&obj, DROP_RESTRICT); } @@ -7283,11 +7322,13 @@ ATPostAlterTypeCleanup(List **wqueue, AlteredTableInfo *tab, LOCKMODE lockmode) } static void -ATPostAlterTypeParse(char *cmd, List **wqueue, LOCKMODE lockmode) +ATPostAlterTypeParse(Oid oldRelId, Oid refRelId, char *cmd, List **wqueue, + LOCKMODE lockmode) { List *raw_parsetree_list; List *querytree_list; ListCell *list_item; + Relation rel; /* * We expect that we will get only ALTER TABLE and CREATE INDEX @@ -7303,24 +7344,32 @@ ATPostAlterTypeParse(char *cmd, List **wqueue, LOCKMODE lockmode) if (IsA(stmt, IndexStmt)) querytree_list = lappend(querytree_list, - transformIndexStmt((IndexStmt *) stmt, + transformIndexStmt(oldRelId, + (IndexStmt *) stmt, cmd)); else if (IsA(stmt, AlterTableStmt)) querytree_list = list_concat(querytree_list, - transformAlterTableStmt((AlterTableStmt *) stmt, + transformAlterTableStmt(oldRelId, + (AlterTableStmt *) stmt, cmd)); else querytree_list = lappend(querytree_list, stmt); } + /* Caller should already have acquired whatever lock we need. */ + rel = relation_open(oldRelId, NoLock); + /* * Attach each generated command to the proper place in the work queue. * Note this could result in creation of entirely new work-queue entries. + * + * Also note that we have to tweak the command subtypes, because it turns + * out that re-creation of indexes and constraints has to act a bit + * differently from initial creation. */ foreach(list_item, querytree_list) { Node *stm = (Node *) lfirst(list_item); - Relation rel; AlteredTableInfo *tab; switch (nodeTag(stm)) @@ -7330,14 +7379,12 @@ ATPostAlterTypeParse(char *cmd, List **wqueue, LOCKMODE lockmode) IndexStmt *stmt = (IndexStmt *) stm; AlterTableCmd *newcmd; - rel = relation_openrv(stmt->relation, lockmode); tab = ATGetQueueEntry(wqueue, rel); newcmd = makeNode(AlterTableCmd); newcmd->subtype = AT_ReAddIndex; newcmd->def = (Node *) stmt; tab->subcmds[AT_PASS_OLD_INDEX] = lappend(tab->subcmds[AT_PASS_OLD_INDEX], newcmd); - relation_close(rel, NoLock); break; } case T_AlterTableStmt: @@ -7345,7 +7392,6 @@ ATPostAlterTypeParse(char *cmd, List **wqueue, LOCKMODE lockmode) AlterTableStmt *stmt = (AlterTableStmt *) stm; ListCell *lcmd; - rel = relation_openrv(stmt->relation, lockmode); tab = ATGetQueueEntry(wqueue, rel); foreach(lcmd, stmt->cmds) { @@ -7359,6 +7405,7 @@ ATPostAlterTypeParse(char *cmd, List **wqueue, LOCKMODE lockmode) lappend(tab->subcmds[AT_PASS_OLD_INDEX], cmd); break; case AT_AddConstraint: + cmd->subtype = AT_ReAddConstraint; tab->subcmds[AT_PASS_OLD_CONSTR] = lappend(tab->subcmds[AT_PASS_OLD_CONSTR], cmd); break; @@ -7367,7 +7414,6 @@ ATPostAlterTypeParse(char *cmd, List **wqueue, LOCKMODE lockmode) (int) cmd->subtype); } } - relation_close(rel, NoLock); break; } default: @@ -7375,8 +7421,9 @@ ATPostAlterTypeParse(char *cmd, List **wqueue, LOCKMODE lockmode) (int) nodeTag(stm)); } } -} + relation_close(rel, NoLock); +} /* * ALTER TABLE OWNER @@ -7546,6 +7593,14 @@ ATExecChangeOwner(Oid relationOid, Oid newOwnerId, bool recursing, LOCKMODE lock heap_freetuple(newtuple); + /* + * We must similarly update any per-column ACLs to reflect the new + * owner; for neatness reasons that's split out as a subroutine. + */ + change_owner_fix_column_acls(relationOid, + tuple_class->relowner, + newOwnerId); + /* * Update owner dependency reference, if any. A composite type has * none, because it's tracked for the pg_type entry instead of here; @@ -7558,7 +7613,7 @@ ATExecChangeOwner(Oid relationOid, Oid newOwnerId, bool recursing, LOCKMODE lock newOwnerId); /* - * Also change the ownership of the table's rowtype, if it has one + * 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, @@ -7602,6 +7657,71 @@ ATExecChangeOwner(Oid relationOid, Oid newOwnerId, bool recursing, LOCKMODE lock relation_close(target_rel, NoLock); } +/* + * change_owner_fix_column_acls + * + * Helper function for ATExecChangeOwner. Scan the columns of the table + * and fix any non-null column ACLs to reflect the new owner. + */ +static void +change_owner_fix_column_acls(Oid relationOid, Oid oldOwnerId, Oid newOwnerId) +{ + Relation attRelation; + SysScanDesc scan; + ScanKeyData key[1]; + HeapTuple attributeTuple; + + attRelation = heap_open(AttributeRelationId, RowExclusiveLock); + ScanKeyInit(&key[0], + Anum_pg_attribute_attrelid, + BTEqualStrategyNumber, F_OIDEQ, + ObjectIdGetDatum(relationOid)); + scan = systable_beginscan(attRelation, AttributeRelidNumIndexId, + true, SnapshotNow, 1, key); + while (HeapTupleIsValid(attributeTuple = systable_getnext(scan))) + { + Form_pg_attribute att = (Form_pg_attribute) GETSTRUCT(attributeTuple); + Datum repl_val[Natts_pg_attribute]; + bool repl_null[Natts_pg_attribute]; + bool repl_repl[Natts_pg_attribute]; + Acl *newAcl; + Datum aclDatum; + bool isNull; + HeapTuple newtuple; + + /* Ignore dropped columns */ + if (att->attisdropped) + continue; + + aclDatum = heap_getattr(attributeTuple, + Anum_pg_attribute_attacl, + RelationGetDescr(attRelation), + &isNull); + /* Null ACLs do not require changes */ + if (isNull) + continue; + + memset(repl_null, false, sizeof(repl_null)); + memset(repl_repl, false, sizeof(repl_repl)); + + newAcl = aclnewowner(DatumGetAclP(aclDatum), + oldOwnerId, newOwnerId); + repl_repl[Anum_pg_attribute_attacl - 1] = true; + repl_val[Anum_pg_attribute_attacl - 1] = PointerGetDatum(newAcl); + + newtuple = heap_modify_tuple(attributeTuple, + RelationGetDescr(attRelation), + repl_val, repl_null, repl_repl); + + simple_heap_update(attRelation, &newtuple->t_self, newtuple); + CatalogUpdateIndexes(attRelation, newtuple); + + heap_freetuple(newtuple); + } + systable_endscan(scan); + heap_close(attRelation, RowExclusiveLock); +} + /* * change_owner_recurse_to_sequences * @@ -7715,21 +7835,26 @@ static void ATPrepSetTableSpace(AlteredTableInfo *tab, Relation rel, char *tablespacename, LOCKMODE lockmode) { Oid tablespaceId; - AclResult aclresult; /* Check that the tablespace exists */ tablespaceId = get_tablespace_oid(tablespacename, false); - /* Check its permissions */ - aclresult = pg_tablespace_aclcheck(tablespaceId, GetUserId(), ACL_CREATE); - if (aclresult != ACLCHECK_OK) - aclcheck_error(aclresult, ACL_KIND_TABLESPACE, tablespacename); + /* Check permissions except when moving to database's default */ + if (OidIsValid(tablespaceId) && tablespaceId != MyDatabaseTableSpace) + { + AclResult aclresult; + + aclresult = pg_tablespace_aclcheck(tablespaceId, GetUserId(), ACL_CREATE); + if (aclresult != ACLCHECK_OK) + aclcheck_error(aclresult, ACL_KIND_TABLESPACE, tablespacename); + } /* Save info for Phase 3 to do the real work */ if (OidIsValid(tab->newTableSpace)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cannot have multiple SET TABLESPACE subcommands"))); + tab->newTableSpace = tablespaceId; } @@ -8137,13 +8262,27 @@ ATExecAddInherit(Relation child_rel, RangeVar *parent, LOCKMODE lockmode) ATSimplePermissions(parent_rel, ATT_TABLE); /* Permanent rels cannot inherit from temporary ones */ - if (RelationUsesTempNamespace(parent_rel) - && !RelationUsesTempNamespace(child_rel)) + if (parent_rel->rd_rel->relpersistence == RELPERSISTENCE_TEMP && + child_rel->rd_rel->relpersistence != RELPERSISTENCE_TEMP) ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), errmsg("cannot inherit from temporary relation \"%s\"", RelationGetRelationName(parent_rel)))); + /* If parent rel is temp, it must belong to this session */ + if (parent_rel->rd_rel->relpersistence == RELPERSISTENCE_TEMP && + !parent_rel->rd_islocaltemp) + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("cannot inherit from temporary relation of another session"))); + + /* Ditto for the child */ + if (child_rel->rd_rel->relpersistence == RELPERSISTENCE_TEMP && + !child_rel->rd_islocaltemp) + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("cannot inherit to temporary relation of another session"))); + /* * Check for duplicates in the list of parents, and determine the highest * inhseqno already present; we'll use the next one for the new parent. @@ -8993,7 +9132,8 @@ ATCheckCmd(Relation rel, AlterTableCmd *cmd) /* * Execute ALTER TABLE SET SCHEMA * - * Note: caller must have checked ownership of the relation already + * WARNING WARNING WARNING: In previous *minor* releases the caller was + * responsible for checking ownership of the relation, but now we do it here. */ void AlterTableNamespace(RangeVar *relation, const char *newschema, @@ -9003,11 +9143,12 @@ AlterTableNamespace(RangeVar *relation, const char *newschema, Oid relid; Oid oldNspOid; Oid nspOid; - Relation classRel; + ObjectAddresses *objsMoved; rel = relation_openrv(relation, lockmode); relid = RelationGetRelid(rel); + CheckRelationOwnership(relid, true); oldNspOid = RelationGetNamespace(rel); /* Check relation type against type specified in the ALTER command */ @@ -9095,20 +9236,44 @@ AlterTableNamespace(RangeVar *relation, const char *newschema, /* common checks on switching namespaces */ CheckSetNamespace(oldNspOid, nspOid, RelationRelationId, relid); + objsMoved = new_object_addresses(); + AlterTableNamespaceInternal(rel, oldNspOid, nspOid, objsMoved); + free_object_addresses(objsMoved); + + /* close rel, but keep lock until commit */ + relation_close(rel, NoLock); +} + +/* + * The guts of relocating a table to another namespace: besides moving + * the table itself, its dependent objects are relocated to the new schema. + */ +void +AlterTableNamespaceInternal(Relation rel, Oid oldNspOid, Oid nspOid, + ObjectAddresses *objsMoved) +{ + Relation classRel; + + Assert(objsMoved != NULL); + /* OK, modify the pg_class row and pg_depend entry */ classRel = heap_open(RelationRelationId, RowExclusiveLock); - AlterRelationNamespaceInternal(classRel, relid, oldNspOid, nspOid, true); + AlterRelationNamespaceInternal(classRel, RelationGetRelid(rel), oldNspOid, + nspOid, true, objsMoved); - /* Fix the table's rowtype too */ - AlterTypeNamespaceInternal(rel->rd_rel->reltype, nspOid, false, false); + /* Fix the table's row type too */ + AlterTypeNamespaceInternal(rel->rd_rel->reltype, + nspOid, false, false, objsMoved); /* Fix other dependent stuff */ if (rel->rd_rel->relkind == RELKIND_RELATION) { - AlterIndexNamespaces(classRel, rel, oldNspOid, nspOid); - AlterSeqNamespaces(classRel, rel, oldNspOid, nspOid, newschema, lockmode); - AlterConstraintNamespaces(relid, oldNspOid, nspOid, false); + AlterIndexNamespaces(classRel, rel, oldNspOid, nspOid, objsMoved); + AlterSeqNamespaces(classRel, rel, oldNspOid, nspOid, + objsMoved, AccessExclusiveLock); + AlterConstraintNamespaces(RelationGetRelid(rel), oldNspOid, nspOid, + false, objsMoved); } heap_close(classRel, RowExclusiveLock); @@ -9118,10 +9283,10 @@ AlterTableNamespace(RangeVar *relation, const char *newschema, if (IS_PGXC_COORDINATOR && !IsConnFromCoord() && rel->rd_rel->relkind == RELKIND_SEQUENCE && - !IsTempSequence(relid)) + !IsTempSequence(RelationGetRelid(rel))) { char *seqname = GetGlobalSeqName(rel, NULL, NULL); - char *newseqname = GetGlobalSeqName(rel, NULL, newschema); + char *newseqname = GetGlobalSeqName(rel, NULL, get_namespace_name(nspOid)); /* We also need to rename it on the GTM */ if (RenameSequenceGTM(seqname, newseqname) < 0) @@ -9136,9 +9301,6 @@ AlterTableNamespace(RangeVar *relation, const char *newschema, pfree(newseqname); } #endif - - /* close rel, but keep lock until commit */ - relation_close(rel, NoLock); } /* @@ -9149,10 +9311,11 @@ AlterTableNamespace(RangeVar *relation, const char *newschema, void AlterRelationNamespaceInternal(Relation classRel, Oid relOid, Oid oldNspOid, Oid newNspOid, - bool hasDependEntry) + bool hasDependEntry, ObjectAddresses *objsMoved) { HeapTuple classTup; Form_pg_class classForm; + ObjectAddress thisobj; classTup = SearchSysCacheCopy1(RELOID, ObjectIdGetDatum(relOid)); if (!HeapTupleIsValid(classTup)) @@ -9161,27 +9324,39 @@ AlterRelationNamespaceInternal(Relation classRel, Oid relOid, Assert(classForm->relnamespace == oldNspOid); - /* check for duplicate name (more friendly than unique-index failure) */ - if (get_relname_relid(NameStr(classForm->relname), - newNspOid) != InvalidOid) - ereport(ERROR, - (errcode(ERRCODE_DUPLICATE_TABLE), - errmsg("relation \"%s\" already exists in schema \"%s\"", - NameStr(classForm->relname), - get_namespace_name(newNspOid)))); + thisobj.classId = RelationRelationId; + thisobj.objectId = relOid; + thisobj.objectSubId = 0; - /* classTup is a copy, so OK to scribble on */ - classForm->relnamespace = newNspOid; + /* + * Do nothing when there's nothing to do. + */ + if (!object_address_present(&thisobj, objsMoved)) + { + /* check for duplicate name (more friendly than unique-index failure) */ + if (get_relname_relid(NameStr(classForm->relname), + newNspOid) != InvalidOid) + ereport(ERROR, + (errcode(ERRCODE_DUPLICATE_TABLE), + errmsg("relation \"%s\" already exists in schema \"%s\"", + NameStr(classForm->relname), + get_namespace_name(newNspOid)))); + + /* classTup is a copy, so OK to scribble on */ + classForm->relnamespace = newNspOid; - simple_heap_update(classRel, &classTup->t_self, classTup); - CatalogUpdateIndexes(classRel, classTup); + simple_heap_update(classRel, &classTup->t_self, classTup); + CatalogUpdateIndexes(classRel, classTup); - /* Update dependency on schema if caller said so */ - if (hasDependEntry && - changeDependencyFor(RelationRelationId, relOid, - NamespaceRelationId, oldNspOid, newNspOid) != 1) - elog(ERROR, "failed to change schema dependency for relation \"%s\"", - NameStr(classForm->relname)); + /* Update dependency on schema if caller said so */ + if (hasDependEntry && + changeDependencyFor(RelationRelationId, relOid, + NamespaceRelationId, oldNspOid, newNspOid) != 1) + elog(ERROR, "failed to change schema dependency for relation \"%s\"", + NameStr(classForm->relname)); + + add_exact_object_address(&thisobj, objsMoved); + } heap_freetuple(classTup); } @@ -9194,7 +9369,7 @@ AlterRelationNamespaceInternal(Relation classRel, Oid relOid, */ static void AlterIndexNamespaces(Relation classRel, Relation rel, - Oid oldNspOid, Oid newNspOid) + Oid oldNspOid, Oid newNspOid, ObjectAddresses *objsMoved) { List *indexList; ListCell *l; @@ -9204,15 +9379,27 @@ AlterIndexNamespaces(Relation classRel, Relation rel, foreach(l, indexList) { Oid indexOid = lfirst_oid(l); + ObjectAddress thisobj; + + thisobj.classId = RelationRelationId; + thisobj.objectId = indexOid; + thisobj.objectSubId = 0; /* * Note: currently, the index will not have its own dependency on the * namespace, so we don't need to do changeDependencyFor(). There's no - * rowtype in pg_type, either. + * row type in pg_type, either. + * + * XXX this objsMoved test may be pointless -- surely we have a single + * dependency link from a relation to each index? */ - AlterRelationNamespaceInternal(classRel, indexOid, - oldNspOid, newNspOid, - false); + if (!object_address_present(&thisobj, objsMoved)) + { + AlterRelationNamespaceInternal(classRel, indexOid, + oldNspOid, newNspOid, + false, objsMoved); + add_exact_object_address(&thisobj, objsMoved); + } } list_free(indexList); @@ -9227,7 +9414,8 @@ AlterIndexNamespaces(Relation classRel, Relation rel, */ static void AlterSeqNamespaces(Relation classRel, Relation rel, - Oid oldNspOid, Oid newNspOid, const char *newNspName, LOCKMODE lockmode) + Oid oldNspOid, Oid newNspOid, ObjectAddresses *objsMoved, + LOCKMODE lockmode) { Relation depRel; SysScanDesc scan; @@ -9279,14 +9467,14 @@ AlterSeqNamespaces(Relation classRel, Relation rel, /* Fix the pg_class and pg_depend entries */ AlterRelationNamespaceInternal(classRel, depForm->objid, oldNspOid, newNspOid, - true); + true, objsMoved); /* * Sequences have entries in pg_type. We need to be careful to move * them to the new namespace, too. */ AlterTypeNamespaceInternal(RelationGetForm(seqRel)->reltype, - newNspOid, false, false); + newNspOid, false, false, objsMoved); #ifdef PGXC /* Change also this sequence name on GTM */ @@ -9295,7 +9483,7 @@ AlterSeqNamespaces(Relation classRel, Relation rel, !IsTempSequence(RelationGetRelid(seqRel))) { char *seqname = GetGlobalSeqName(seqRel, NULL, NULL); - char *newseqname = GetGlobalSeqName(seqRel, NULL, newNspName); + char *newseqname = GetGlobalSeqName(seqRel, NULL, get_namespace_name(newNspOid)); /* We also need to rename it on the GTM */ if (RenameSequenceGTM(seqname, newseqname) < 0) diff --git a/src/backend/commands/tablespace.c b/src/backend/commands/tablespace.c index 4964cb749b..147fbeec02 100644 --- a/src/backend/commands/tablespace.c +++ b/src/backend/commands/tablespace.c @@ -660,9 +660,13 @@ create_tablespace_directories(const char *location, const Oid tablespaceoid) /* * destroy_tablespace_directories * - * Attempt to remove filesystem infrastructure + * Attempt to remove filesystem infrastructure for the tablespace. * - * 'redo' indicates we are redoing a drop from XLOG; okay if nothing there + * 'redo' indicates we are redoing a drop from XLOG; in that case we should + * not throw an ERROR for problems, just LOG them. The worst consequence of + * not removing files here would be failure to release some disk space, which + * does not justify throwing an error that would require manual intervention + * to get the database running again. * * Returns TRUE if successful, FALSE if some subdirectory is not empty */ @@ -708,8 +712,9 @@ destroy_tablespace_directories(Oid tablespaceoid, bool redo) * with a warning. This is because even though ProcessUtility disallows * DROP TABLESPACE in a transaction block, it's possible that a previous * DROP failed and rolled back after removing the tablespace directories - * and symlink. We want to allow a new DROP attempt to succeed at - * removing the catalog entries, so we should not give a hard error here. + * and/or symlink. We want to allow a new DROP attempt to succeed at + * removing the catalog entries (and symlink if still present), so we + * should not give a hard error here. */ dirdesc = AllocateDir(linkloc_with_version_dir); if (dirdesc == NULL) @@ -721,8 +726,18 @@ destroy_tablespace_directories(Oid tablespaceoid, bool redo) (errcode_for_file_access(), errmsg("could not open directory \"%s\": %m", linkloc_with_version_dir))); + /* The symlink might still exist, so go try to remove it */ + goto remove_symlink; + } + else if (redo) + { + /* in redo, just log other types of error */ + ereport(LOG, + (errcode_for_file_access(), + errmsg("could not open directory \"%s\": %m", + linkloc_with_version_dir))); pfree(linkloc_with_version_dir); - return true; + return false; } /* else let ReadDir report the error */ } @@ -737,7 +752,7 @@ destroy_tablespace_directories(Oid tablespaceoid, bool redo) sprintf(subfile, "%s/%s", linkloc_with_version_dir, de->d_name); /* This check is just to deliver a friendlier error message */ - if (!directory_is_empty(subfile)) + if (!redo && !directory_is_empty(subfile)) { FreeDir(dirdesc); pfree(subfile); @@ -747,7 +762,7 @@ destroy_tablespace_directories(Oid tablespaceoid, bool redo) /* remove empty directory */ if (rmdir(subfile) < 0) - ereport(ERROR, + ereport(redo ? LOG : ERROR, (errcode_for_file_access(), errmsg("could not remove directory \"%s\": %m", subfile))); @@ -759,23 +774,32 @@ destroy_tablespace_directories(Oid tablespaceoid, bool redo) /* remove version directory */ if (rmdir(linkloc_with_version_dir) < 0) - ereport(ERROR, + { + ereport(redo ? LOG : ERROR, (errcode_for_file_access(), errmsg("could not remove directory \"%s\": %m", linkloc_with_version_dir))); + pfree(linkloc_with_version_dir); + return false; + } /* * Try to remove the symlink. We must however deal with the possibility * that it's a directory instead of a symlink --- this could happen during * WAL replay (see TablespaceCreateDbspace), and it is also the case on * Windows where junction points lstat() as directories. + * + * Note: in the redo case, we'll return true if this final step fails; + * there's no point in retrying it. Also, ENOENT should provoke no more + * than a warning. */ +remove_symlink: linkloc = pstrdup(linkloc_with_version_dir); get_parent_directory(linkloc); if (lstat(linkloc, &st) == 0 && S_ISDIR(st.st_mode)) { if (rmdir(linkloc) < 0) - ereport(ERROR, + ereport(redo ? LOG : ERROR, (errcode_for_file_access(), errmsg("could not remove directory \"%s\": %m", linkloc))); @@ -783,10 +807,14 @@ destroy_tablespace_directories(Oid tablespaceoid, bool redo) else { if (unlink(linkloc) < 0) - ereport(ERROR, + { + int saved_errno = errno; + + ereport(redo ? LOG : (saved_errno == ENOENT ? WARNING : ERROR), (errcode_for_file_access(), errmsg("could not remove symbolic link \"%s\": %m", linkloc))); + } } pfree(linkloc_with_version_dir); @@ -1074,9 +1102,27 @@ check_default_tablespace(char **newval, void **extra, GucSource source) if (**newval != '\0' && !OidIsValid(get_tablespace_oid(*newval, true))) { - GUC_check_errdetail("Tablespace \"%s\" does not exist.", - *newval); - return false; + /* + * When source == PGC_S_TEST, we are checking the argument of an + * ALTER DATABASE SET or ALTER USER SET command. pg_dumpall dumps + * all roles before tablespaces, so if we're restoring a + * pg_dumpall script the tablespace might not yet exist, but will + * be created later. Because of that, issue a NOTICE if source == + * PGC_S_TEST, but accept the value anyway. + */ + if (source == PGC_S_TEST) + { + ereport(NOTICE, + (errcode(ERRCODE_UNDEFINED_OBJECT), + errmsg("tablespace \"%s\" does not exist", + *newval))); + } + else + { + GUC_check_errdetail("Tablespace \"%s\" does not exist.", + *newval); + return false; + } } } @@ -1191,12 +1237,25 @@ check_temp_tablespaces(char **newval, void **extra, GucSource source) } /* - * In an interactive SET command, we ereport for bad info. - * Otherwise, silently ignore any bad list elements. + * In an interactive SET command, we ereport for bad info. When + * source == PGC_S_TEST, we are checking the argument of an ALTER + * DATABASE SET or ALTER USER SET command. pg_dumpall dumps all + * roles before tablespaces, so if we're restoring a pg_dumpall + * script the tablespace might not yet exist, but will be created + * later. Because of that, issue a NOTICE if source == PGC_S_TEST, + * but accept the value anyway. Otherwise, silently ignore any + * bad list elements. */ - curoid = get_tablespace_oid(curname, source < PGC_S_INTERACTIVE); + curoid = get_tablespace_oid(curname, source <= PGC_S_TEST); if (curoid == InvalidOid) + { + if (source == PGC_S_TEST) + ereport(NOTICE, + (errcode(ERRCODE_UNDEFINED_OBJECT), + errmsg("tablespace \"%s\" does not exist", + curname))); continue; + } /* * Allow explicit specification of database's default tablespace @@ -1463,14 +1522,19 @@ tblspc_redo(XLogRecPtr lsn, XLogRecord *record) xl_tblspc_drop_rec *xlrec = (xl_tblspc_drop_rec *) XLogRecGetData(record); /* - * If we issued a WAL record for a drop tablespace it is because there - * were no files in it at all. That means that no permanent objects - * can exist in it at this point. + * If we issued a WAL record for a drop tablespace it implies that + * there were no files in it at all when the DROP was done. That means + * that no permanent objects can exist in it at this point. * * It is possible for standby users to be using this tablespace as a * location for their temporary files, so if we fail to remove all * files then do conflict processing and try again, if currently * enabled. + * + * Other possible reasons for failure include bollixed file permissions + * on a standby server when they were okay on the primary, etc etc. + * There's not much we can do about that, so just remove what we can + * and press on. */ if (!destroy_tablespace_directories(xlrec->ts_id, true)) { @@ -1478,15 +1542,18 @@ tblspc_redo(XLogRecPtr lsn, XLogRecord *record) /* * If we did recovery processing then hopefully the backends who - * wrote temp files should have cleaned up and exited by now. So - * lets recheck before we throw an error. If !process_conflicts - * then this will just fail again. + * wrote temp files should have cleaned up and exited by now. So + * retry before complaining. If we fail again, this is just a LOG + * condition, because it's not worth throwing an ERROR for (as + * that would crash the database and require manual intervention + * before we could get past this WAL record on restart). */ if (!destroy_tablespace_directories(xlrec->ts_id, true)) - ereport(ERROR, + ereport(LOG, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), - errmsg("tablespace %u is not empty", - xlrec->ts_id))); + errmsg("directories for tablespace %u could not be removed", + xlrec->ts_id), + errhint("You can remove the directories manually if necessary."))); } } else @@ -1502,14 +1569,14 @@ tblspc_desc(StringInfo buf, uint8 xl_info, char *rec) { xl_tblspc_create_rec *xlrec = (xl_tblspc_create_rec *) rec; - appendStringInfo(buf, "create ts: %u \"%s\"", + appendStringInfo(buf, "create tablespace: %u \"%s\"", xlrec->ts_id, xlrec->ts_path); } else if (info == XLOG_TBLSPC_DROP) { xl_tblspc_drop_rec *xlrec = (xl_tblspc_drop_rec *) rec; - appendStringInfo(buf, "drop ts: %u", xlrec->ts_id); + appendStringInfo(buf, "drop tablespace: %u", xlrec->ts_id); } else appendStringInfo(buf, "UNKNOWN"); diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index 012107a3da..3b2657b91d 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -95,6 +95,13 @@ static void AfterTriggerSaveEvent(EState *estate, ResultRelInfo *relinfo, * queryString is the source text of the CREATE TRIGGER command. * This must be supplied if a whenClause is specified, else it can be NULL. * + * relOid, if nonzero, is the relation on which the trigger should be + * created. If zero, the name provided in the statement will be looked up. + * + * refRelOid, if nonzero, is the relation to which the constraint trigger + * refers. If zero, the constraint relation name provided in the statement + * will be looked up as needed. + * * constraintOid, if nonzero, says that this trigger is being created * internally to implement that constraint. A suitable pg_depend entry will * be made to link the trigger to that constraint. constraintOid is zero when @@ -109,15 +116,15 @@ static void AfterTriggerSaveEvent(EState *estate, ResultRelInfo *relinfo, * if TRUE causes us to modify the given trigger name to ensure uniqueness. * * When isInternal is not true we require ACL_TRIGGER permissions on the - * relation. For internal triggers the caller must apply any required - * permission checks. + * relation, as well as ACL_EXECUTE on the trigger function. For internal + * triggers the caller must apply any required permission checks. * * Note: can return InvalidOid if we decided to not create a trigger at all, * but a foreign-key constraint. This is a kluge for backwards compatibility. */ Oid CreateTrigger(CreateTrigStmt *stmt, const char *queryString, - Oid constraintOid, Oid indexOid, + Oid relOid, Oid refRelOid, Oid constraintOid, Oid indexOid, bool isInternal) { int16 tgtype; @@ -146,14 +153,10 @@ CreateTrigger(CreateTrigStmt *stmt, const char *queryString, ObjectAddress myself, referenced; - /* - * ShareRowExclusiveLock is sufficient to prevent concurrent write - * activity to the relation, and thus to lock out any operations that - * might want to fire triggers on the relation. If we had ON SELECT - * triggers we would need to take an AccessExclusiveLock to add one of - * those, just as we do with ON SELECT rules. - */ - rel = heap_openrv(stmt->relation, ShareRowExclusiveLock); + if (OidIsValid(relOid)) + rel = heap_open(relOid, AccessExclusiveLock); + else + rel = heap_openrv(stmt->relation, AccessExclusiveLock); /* * Triggers must be on tables or views, and there are additional @@ -202,8 +205,13 @@ CreateTrigger(CreateTrigStmt *stmt, const char *queryString, errmsg("permission denied: \"%s\" is a system catalog", RelationGetRelationName(rel)))); - if (stmt->isconstraint && stmt->constrrel != NULL) - constrrelid = RangeVarGetRelid(stmt->constrrel, false); + if (stmt->isconstraint) + { + if (OidIsValid(refRelOid)) + constrrelid = refRelOid; + else if (stmt->constrrel != NULL) + constrrelid = RangeVarGetRelid(stmt->constrrel, false); + } /* permission checks */ if (!isInternal) @@ -312,7 +320,9 @@ CreateTrigger(CreateTrigStmt *stmt, const char *queryString, * subselects in WHEN clauses; it would fail to examine the contents * of subselects. */ - varList = pull_var_clause(whenClause, PVC_REJECT_PLACEHOLDERS); + varList = pull_var_clause(whenClause, + PVC_REJECT_AGGREGATES, + PVC_REJECT_PLACEHOLDERS); foreach(lc, varList) { Var *var = (Var *) lfirst(lc); @@ -374,6 +384,13 @@ CreateTrigger(CreateTrigStmt *stmt, const char *queryString, * Find and validate the trigger function. */ funcoid = LookupFuncName(stmt->funcname, 0, fargtypes, false); + if (!isInternal) + { + aclresult = pg_proc_aclcheck(funcoid, GetUserId(), ACL_EXECUTE); + if (aclresult != ACLCHECK_OK) + aclcheck_error(aclresult, ACL_KIND_PROC, + NameListToString(stmt->funcname)); + } funcrettype = get_func_rettype(funcoid); if (funcrettype != TRIGGEROID) { @@ -483,7 +500,7 @@ CreateTrigger(CreateTrigStmt *stmt, const char *queryString, * can skip this for internally generated triggers, since the name * modification above should be sufficient. * - * NOTE that this is cool only because we have ShareRowExclusiveLock on + * NOTE that this is cool only because we have AccessExclusiveLock on * the relation, so the trigger set won't be changing underneath us. */ if (!isInternal) @@ -502,7 +519,7 @@ CreateTrigger(CreateTrigStmt *stmt, const char *queryString, ereport(ERROR, (errcode(ERRCODE_DUPLICATE_OBJECT), errmsg("trigger \"%s\" for relation \"%s\" already exists", - trigname, stmt->relation->relname))); + trigname, RelationGetRelationName(rel)))); } systable_endscan(tgscan); } @@ -899,7 +916,7 @@ ConvertTriggerToFK(CreateTrigStmt *stmt, Oid funcoid) ereport(NOTICE, (errmsg("ignoring incomplete trigger group for constraint \"%s\" %s", constr_name, buf.data), - errdetail("%s", _(funcdescr[funcnum])))); + errdetail_internal("%s", _(funcdescr[funcnum])))); oldContext = MemoryContextSwitchTo(TopMemoryContext); info = (OldTriggerInfo *) palloc0(sizeof(OldTriggerInfo)); info->args = copyObject(stmt->args); @@ -915,7 +932,7 @@ ConvertTriggerToFK(CreateTrigStmt *stmt, Oid funcoid) ereport(NOTICE, (errmsg("ignoring incomplete trigger group for constraint \"%s\" %s", constr_name, buf.data), - errdetail("%s", _(funcdescr[funcnum])))); + errdetail_internal("%s", _(funcdescr[funcnum])))); } else { @@ -927,7 +944,7 @@ ConvertTriggerToFK(CreateTrigStmt *stmt, Oid funcoid) ereport(NOTICE, (errmsg("converting trigger group into constraint \"%s\" %s", constr_name, buf.data), - errdetail("%s", _(funcdescr[funcnum])))); + errdetail_internal("%s", _(funcdescr[funcnum])))); fkcon->contype = CONSTR_FOREIGN; fkcon->location = -1; if (funcnum == 2) @@ -1009,6 +1026,8 @@ ConvertTriggerToFK(CreateTrigStmt *stmt, Oid funcoid) } fkcon->deferrable = stmt->deferrable; fkcon->initdeferred = stmt->initdeferred; + fkcon->skip_validation = false; + fkcon->initially_valid = true; /* ... and execute it */ ProcessUtility((Node *) atstmt, @@ -1089,14 +1108,11 @@ RemoveTriggerById(Oid trigOid) elog(ERROR, "could not find tuple for trigger %u", trigOid); /* - * Open and lock the relation the trigger belongs to. As in - * CreateTrigger, this is sufficient to lock out all operations that could - * fire or add triggers; but it would need to be revisited if we had ON - * SELECT triggers. + * Open and exclusive-lock the relation the trigger belongs to. */ relid = ((Form_pg_trigger) GETSTRUCT(tup))->tgrelid; - rel = heap_open(relid, ShareRowExclusiveLock); + rel = heap_open(relid, AccessExclusiveLock); if (rel->rd_rel->relkind != RELKIND_RELATION && rel->rd_rel->relkind != RELKIND_VIEW) @@ -2639,6 +2655,16 @@ ltrmark:; buffer = ReadBuffer(relation, ItemPointerGetBlockNumber(tid)); + /* + * Although we already know this tuple is valid, we must lock the + * buffer to ensure that no one has a buffer cleanup lock; otherwise + * they might move the tuple while we try to copy it. But we can + * release the lock before actually doing the heap_copytuple call, + * since holding pin is sufficient to prevent anyone from getting a + * cleanup lock they don't already hold. + */ + LockBuffer(buffer, BUFFER_LOCK_SHARE); + page = BufferGetPage(buffer); lp = PageGetItemId(page, ItemPointerGetOffsetNumber(tid)); @@ -2651,6 +2677,8 @@ ltrmark:; #ifdef PGXC tuple.t_xc_node_id = PGXCNodeIdentifier; #endif + + LockBuffer(buffer, BUFFER_LOCK_UNLOCK); } result = heap_copytuple(&tuple); @@ -2771,13 +2799,13 @@ TriggerEnabled(EState *estate, ResultRelInfo *relinfo, } if (HeapTupleIsValid(newtup)) { - if (estate->es_trig_tuple_slot == NULL) + if (estate->es_trig_newtup_slot == NULL) { oldContext = MemoryContextSwitchTo(estate->es_query_cxt); - estate->es_trig_tuple_slot = ExecInitExtraTupleSlot(estate); + estate->es_trig_newtup_slot = ExecInitExtraTupleSlot(estate); MemoryContextSwitchTo(oldContext); } - newslot = estate->es_trig_tuple_slot; + newslot = estate->es_trig_newtup_slot; if (newslot->tts_tupleDescriptor != tupdesc) ExecSetSlotDescriptor(newslot, tupdesc); ExecStoreTuple(newtup, newslot, InvalidBuffer, false); diff --git a/src/backend/commands/tsearchcmds.c b/src/backend/commands/tsearchcmds.c index 3355eaafda..deac1062ef 100644 --- a/src/backend/commands/tsearchcmds.c +++ b/src/backend/commands/tsearchcmds.c @@ -142,7 +142,7 @@ makeParserDependencies(HeapTuple tuple) recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL); /* dependency on extension */ - recordDependencyOnCurrentExtension(&myself); + recordDependencyOnCurrentExtension(&myself, false); /* dependencies on functions */ referenced.classId = ProcedureRelationId; @@ -479,7 +479,7 @@ makeDictionaryDependencies(HeapTuple tuple) recordDependencyOnOwner(myself.classId, myself.objectId, dict->dictowner); /* dependency on extension */ - recordDependencyOnCurrentExtension(&myself); + recordDependencyOnCurrentExtension(&myself, false); /* dependency on template */ referenced.classId = TSTemplateRelationId; @@ -1069,7 +1069,7 @@ makeTSTemplateDependencies(HeapTuple tuple) recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL); /* dependency on extension */ - recordDependencyOnCurrentExtension(&myself); + recordDependencyOnCurrentExtension(&myself, false); /* dependencies on functions */ referenced.classId = ProcedureRelationId; @@ -1417,8 +1417,7 @@ makeConfigurationDependencies(HeapTuple tuple, bool removeOld, recordDependencyOnOwner(myself.classId, myself.objectId, cfg->cfgowner); /* dependency on extension */ - if (!removeOld) - recordDependencyOnCurrentExtension(&myself); + recordDependencyOnCurrentExtension(&myself, removeOld); /* dependency on parser */ referenced.classId = TSParserRelationId; diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c index 66c11de672..4943411de0 100644 --- a/src/backend/commands/typecmds.c +++ b/src/backend/commands/typecmds.c @@ -1609,6 +1609,7 @@ DefineCompositeType(const RangeVar *typevar, List *coldeflist) * instead of below about a "relation". */ typeNamespace = RangeVarGetCreationNamespace(createStmt->relation); + RangeVarAdjustRelationPersistence(createStmt->relation, typeNamespace); old_type_oid = GetSysCacheOid2(TYPENAMENSP, CStringGetDatum(createStmt->relation->relname), @@ -2805,6 +2806,7 @@ AlterTypeNamespace(List *names, const char *newschema) TypeName *typename; Oid typeOid; Oid nspOid; + ObjectAddresses *objsMoved; /* Make a TypeName so we can use standard type lookup machinery */ typename = makeTypeNameFromNameList(names); @@ -2813,11 +2815,13 @@ AlterTypeNamespace(List *names, const char *newschema) /* get schema OID and check its permissions */ nspOid = LookupCreationNamespace(newschema); - AlterTypeNamespace_oid(typeOid, nspOid); + objsMoved = new_object_addresses(); + AlterTypeNamespace_oid(typeOid, nspOid, objsMoved); + free_object_addresses(objsMoved); } Oid -AlterTypeNamespace_oid(Oid typeOid, Oid nspOid) +AlterTypeNamespace_oid(Oid typeOid, Oid nspOid, ObjectAddresses *objsMoved) { Oid elemOid; @@ -2837,7 +2841,7 @@ AlterTypeNamespace_oid(Oid typeOid, Oid nspOid) format_type_be(elemOid)))); /* and do the work */ - return AlterTypeNamespaceInternal(typeOid, nspOid, false, true); + return AlterTypeNamespaceInternal(typeOid, nspOid, false, true, objsMoved); } /* @@ -2858,7 +2862,8 @@ AlterTypeNamespace_oid(Oid typeOid, Oid nspOid) Oid AlterTypeNamespaceInternal(Oid typeOid, Oid nspOid, bool isImplicitArray, - bool errorOnTableType) + bool errorOnTableType, + ObjectAddresses *objsMoved) { Relation rel; HeapTuple tup; @@ -2866,6 +2871,17 @@ AlterTypeNamespaceInternal(Oid typeOid, Oid nspOid, Oid oldNspOid; Oid arrayOid; bool isCompositeType; + ObjectAddress thisobj; + + /* + * Make sure we haven't moved this object previously. + */ + thisobj.classId = TypeRelationId; + thisobj.objectId = typeOid; + thisobj.objectSubId = 0; + + if (object_address_present(&thisobj, objsMoved)) + return InvalidOid; rel = heap_open(TypeRelationId, RowExclusiveLock); @@ -2926,7 +2942,7 @@ AlterTypeNamespaceInternal(Oid typeOid, Oid nspOid, AlterRelationNamespaceInternal(classRel, typform->typrelid, oldNspOid, nspOid, - false); + false, objsMoved); heap_close(classRel, RowExclusiveLock); @@ -2935,13 +2951,14 @@ AlterTypeNamespaceInternal(Oid typeOid, Oid nspOid, * currently support this, but probably will someday). */ AlterConstraintNamespaces(typform->typrelid, oldNspOid, - nspOid, false); + nspOid, false, objsMoved); } else { /* If it's a domain, it might have constraints */ if (typform->typtype == TYPTYPE_DOMAIN) - AlterConstraintNamespaces(typeOid, oldNspOid, nspOid, true); + AlterConstraintNamespaces(typeOid, oldNspOid, nspOid, true, + objsMoved); } /* @@ -2959,9 +2976,11 @@ AlterTypeNamespaceInternal(Oid typeOid, Oid nspOid, heap_close(rel, RowExclusiveLock); + add_exact_object_address(&thisobj, objsMoved); + /* Recursively alter the associated array type, if any */ if (OidIsValid(arrayOid)) - AlterTypeNamespaceInternal(arrayOid, nspOid, true, true); + AlterTypeNamespaceInternal(arrayOid, nspOid, true, true, objsMoved); return oldNspOid; } diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c index 838d6eba20..c9c7430b8a 100644 --- a/src/backend/commands/user.c +++ b/src/backend/commands/user.c @@ -953,7 +953,7 @@ DropRole(DropRoleStmt *stmt) (errcode(ERRCODE_DEPENDENT_OBJECTS_STILL_EXIST), errmsg("role \"%s\" cannot be dropped because some objects depend on it", role), - errdetail("%s", detail), + errdetail_internal("%s", detail), errdetail_log("%s", detail_log))); /* @@ -1330,7 +1330,16 @@ AddRoleMems(const char *rolename, Oid roleid, rolename))); } - /* XXX not sure about this check */ + /* + * The role membership grantor of record has little significance at + * present. Nonetheless, inasmuch as users might look to it for a crude + * audit trail, let only superusers impute the grant to a third party. + * + * Before lifting this restriction, give the member == role case of + * is_admin_of_role() a fresh look. Ensure that the current role cannot + * use an explicit grantor specification to take advantage of the session + * user's self-admin right. + */ if (grantorId != GetUserId() && !superuser()) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index 10d075f19e..26f361ecbf 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -11,7 +11,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -82,7 +82,7 @@ static bool vacuum_rel(Oid relid, VacuumStmt *vacstmt, bool do_toast, * tables separately. * * for_wraparound is used by autovacuum to let us know when it's forcing - * a vacuum for wraparound, which should not be auto-cancelled. + * a vacuum for wraparound, which should not be auto-canceled. * * bstrategy is normally given as NULL, but in autovacuum it can be passed * in to use the same buffer strategy object across multiple vacuum() calls. @@ -438,7 +438,7 @@ vacuum_set_xid_limits(int freeze_min_age, * VACUUM schedule, the nightly VACUUM gets a chance to freeze tuples * before anti-wraparound autovacuum is launched. */ - freezetable = freeze_min_age; + freezetable = freeze_table_age; if (freezetable < 0) freezetable = vacuum_freeze_table_age; freezetable = Min(freezetable, autovacuum_freeze_max_age * 0.95); @@ -488,7 +488,9 @@ vac_estimate_reltuples(Relation relation, bool is_analyze, /* * If scanned_pages is zero but total_pages isn't, keep the existing value - * of reltuples. + * of reltuples. (Note: callers should avoid updating the pg_class + * statistics in this situation, since no new information has been + * provided.) */ if (scanned_pages == 0) return old_rel_tuples; @@ -738,8 +740,8 @@ vac_update_datfrozenxid(void) { /* * vac_truncate_clog needs a transaction id to detect wrap-arounds. For - * a autovacuum, this would require the data node to contact the GTM or - * the coordinator and acquire GXID for the vacuum operation. + * a autovacuum, this would require the Datanode to contact the GTM or + * the Coordinator and acquire GXID for the vacuum operation. * * To avoid this complexity, we disable the CLOG truncation. This is * perfectly fine for the prototype because we are not handling GXID @@ -862,12 +864,11 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt, bool do_toast, bool for_wraparound) int save_sec_context; int save_nestlevel; -#ifndef PGXC - /* In PG-XC, do these after setting vacuum flags */ - /* Begin a transaction for vacuuming this relation */ StartTransactionCommand(); +#ifndef PGXC + /* In Postgres-XC, take a snapshot after setting the vacuum flags */ /* * Functions in indexes may want a snapshot set. Also, setting a snapshot * ensures that RecentGlobalXmin is kept truly recent. @@ -889,7 +890,7 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt, bool do_toast, bool for_wraparound) * here by violating transaction semantics.) * * We also set the VACUUM_FOR_WRAPAROUND flag, which is passed down by - * autovacuum; it's used to avoid cancelling a vacuum that was invoked + * autovacuum; it's used to avoid canceling a vacuum that was invoked * in an emergency. * * Note: these flags remain set until CommitTransaction or @@ -905,17 +906,17 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt, bool do_toast, bool for_wraparound) } #ifdef PGXC - elog (DEBUG1, "Starting vacuum transaction"); - /* In PG-XC, do these after setting vacuum flags */ - /* Begin a transaction for vacuuming this relation */ - StartTransactionCommand(); - elog (DEBUG1, "Started vacuum transaction"); + if (for_wraparound) + elog(DEBUG1, "Starting wraparound autovacuum"); + else + elog(DEBUG1, "Starting autovacuum"); - /* - * Functions in indexes may want a snapshot set. Also, setting - * a snapshot ensures that RecentGlobalXmin is kept truly recent. - */ + /* Now that flags have been set, we can take a snapshot correctly */ PushActiveSnapshot(GetTransactionSnapshot()); + if (for_wraparound) + elog(DEBUG1, "Started wraparound autovacuum"); + else + elog(DEBUG1, "Started autovacuum"); #endif /* * Check for user-requested abort. Note we want this to be inside a @@ -1111,9 +1112,16 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt, bool do_toast, bool for_wraparound) /* - * Open all the indexes of the given relation, obtaining the specified kind - * of lock on each. Return an array of Relation pointers for the indexes - * into *Irel, and the number of indexes into *nindexes. + * Open all the vacuumable indexes of the given relation, obtaining the + * specified kind of lock on each. Return an array of Relation pointers for + * the indexes into *Irel, and the number of indexes into *nindexes. + * + * We consider an index vacuumable if it is marked insertable (IndexIsReady). + * If it isn't, probably a CREATE INDEX CONCURRENTLY command failed early in + * execution, and what we have is too corrupt to be processable. We will + * vacuum even if the index isn't indisvalid; this is important because in a + * unique index, uniqueness checks will be performed anyway and had better not + * hit dangling index pointers. */ void vac_open_indexes(Relation relation, LOCKMODE lockmode, @@ -1127,21 +1135,30 @@ vac_open_indexes(Relation relation, LOCKMODE lockmode, indexoidlist = RelationGetIndexList(relation); - *nindexes = list_length(indexoidlist); + /* allocate enough memory for all indexes */ + i = list_length(indexoidlist); - if (*nindexes > 0) - *Irel = (Relation *) palloc(*nindexes * sizeof(Relation)); + if (i > 0) + *Irel = (Relation *) palloc(i * sizeof(Relation)); else *Irel = NULL; + /* collect just the ready indexes */ i = 0; foreach(indexoidscan, indexoidlist) { Oid indexoid = lfirst_oid(indexoidscan); + Relation indrel; - (*Irel)[i++] = index_open(indexoid, lockmode); + indrel = index_open(indexoid, lockmode); + if (IndexIsReady(indrel->rd_index)) + (*Irel)[i++] = indrel; + else + index_close(indrel, lockmode); } + *nindexes = i; + list_free(indexoidlist); } diff --git a/src/backend/commands/vacuumlazy.c b/src/backend/commands/vacuumlazy.c index ccc586f12e..1d2472e991 100644 --- a/src/backend/commands/vacuumlazy.c +++ b/src/backend/commands/vacuumlazy.c @@ -46,6 +46,7 @@ #include "commands/vacuum.h" #include "miscadmin.h" #include "pgstat.h" +#include "portability/instr_time.h" #include "postmaster/autovacuum.h" #include "storage/bufmgr.h" #include "storage/freespace.h" @@ -66,6 +67,17 @@ #define REL_TRUNCATE_MINIMUM 1000 #define REL_TRUNCATE_FRACTION 16 +/* + * Timing parameters for truncate locking heuristics. + * + * These were not exposed as user tunable GUC values because it didn't seem + * that the potential for improvement was great enough to merit the cost of + * supporting them. + */ +#define VACUUM_TRUNCATE_LOCK_CHECK_INTERVAL 20 /* ms */ +#define VACUUM_TRUNCATE_LOCK_WAIT_INTERVAL 50 /* ms */ +#define VACUUM_TRUNCATE_LOCK_TIMEOUT 5000 /* ms */ + /* * Guesstimation of number of dead tuples per page. This is used to * provide an upper limit to memory allocated when vacuuming small @@ -84,6 +96,7 @@ typedef struct LVRelStats /* hasindex = true means two-pass strategy; false means one-pass */ bool hasindex; /* Overall statistics about rel */ + BlockNumber old_rel_pages; /* previous value of pg_class.relpages */ BlockNumber rel_pages; /* total number of pages */ BlockNumber scanned_pages; /* number of pages we examined */ double scanned_tuples; /* counts only tuples on scanned pages */ @@ -99,6 +112,7 @@ typedef struct LVRelStats ItemPointer dead_tuples; /* array of ItemPointerData */ int num_index_scans; TransactionId latestRemovedXid; + bool lock_waiter_detected; } LVRelStats; @@ -152,8 +166,12 @@ lazy_vacuum_rel(Relation onerel, VacuumStmt *vacstmt, BlockNumber possibly_freeable; PGRUsage ru0; TimestampTz starttime = 0; - bool scan_all; + bool scan_all; /* should we scan all pages? */ + bool scanned_all; /* did we actually scan all pages? */ TransactionId freezeTableLimit; + BlockNumber new_rel_pages; + double new_rel_tuples; + TransactionId new_frozen_xid; pg_rusage_init(&ru0); @@ -176,8 +194,11 @@ lazy_vacuum_rel(Relation onerel, VacuumStmt *vacstmt, vacrelstats = (LVRelStats *) palloc0(sizeof(LVRelStats)); + vacrelstats->old_rel_pages = onerel->rd_rel->relpages; vacrelstats->old_rel_tuples = onerel->rd_rel->reltuples; vacrelstats->num_index_scans = 0; + vacrelstats->pages_removed = 0; + vacrelstats->lock_waiter_detected = false; /* Open all indexes of the relation */ vac_open_indexes(onerel, RowExclusiveLock, &nindexes, &Irel); @@ -189,6 +210,21 @@ lazy_vacuum_rel(Relation onerel, VacuumStmt *vacstmt, /* Done with indexes */ vac_close_indexes(nindexes, Irel, NoLock); + /* + * Compute whether we actually scanned the whole relation. If we did, we + * can adjust relfrozenxid. + * + * NB: We need to check this before truncating the relation, because that + * will change ->rel_pages. + */ + if (vacrelstats->scanned_pages < vacrelstats->rel_pages) + { + Assert(!scan_all); + scanned_all = false; + } + else + scanned_all = true; + /* * Optionally truncate the relation. * @@ -205,20 +241,37 @@ lazy_vacuum_rel(Relation onerel, VacuumStmt *vacstmt, FreeSpaceMapVacuum(onerel); /* - * Update statistics in pg_class. But don't change relfrozenxid if we - * skipped any pages. + * Update statistics in pg_class. + * + * A corner case here is that if we scanned no pages at all because every + * page is all-visible, we should not update relpages/reltuples, because + * we have no new information to contribute. In particular this keeps + * us from replacing relpages=reltuples=0 (which means "unknown tuple + * density") with nonzero relpages and reltuples=0 (which means "zero + * tuple density") unless there's some actual evidence for the latter. + * + * Also, don't change relfrozenxid if we skipped any pages, since then + * we don't know for certain that all tuples have a newer xmin. */ + new_rel_pages = vacrelstats->rel_pages; + new_rel_tuples = vacrelstats->new_rel_tuples; + if (vacrelstats->scanned_pages == 0 && new_rel_pages > 0) + { + new_rel_pages = vacrelstats->old_rel_pages; + new_rel_tuples = vacrelstats->old_rel_tuples; + } + + new_frozen_xid = scanned_all ? FreezeLimit : InvalidTransactionId; + vac_update_relstats(onerel, - vacrelstats->rel_pages, vacrelstats->new_rel_tuples, + new_rel_pages, new_rel_tuples, vacrelstats->hasindex, - (vacrelstats->scanned_pages < vacrelstats->rel_pages) ? - InvalidTransactionId : - FreezeLimit); + new_frozen_xid); /* report results to the stats collector, too */ pgstat_report_vacuum(RelationGetRelid(onerel), - onerel->rd_rel->relisshared, - vacrelstats->new_rel_tuples); + onerel->rd_rel->relisshared, + new_rel_tuples); /* and log the action if appropriate */ if (IsAutoVacuumWorkerProcess() && Log_autovacuum_min_duration >= 0) @@ -238,7 +291,7 @@ lazy_vacuum_rel(Relation onerel, VacuumStmt *vacstmt, vacrelstats->pages_removed, vacrelstats->rel_pages, vacrelstats->tuples_deleted, - vacrelstats->new_rel_tuples, + new_rel_tuples, pg_rusage_show(&ru0)))); } } @@ -721,6 +774,7 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats, { /* Remove tuples from heap */ lazy_vacuum_page(onerel, blkno, buf, 0, vacrelstats); + has_dead_tuples = false; /* * Forget the now-vacuumed tuples, and press on, but be careful @@ -807,6 +861,15 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats, vacrelstats->scanned_pages, num_tuples); + /* + * Release any remaining pin on visibility map page. + */ + if (BufferIsValid(vmbuffer)) + { + ReleaseBuffer(vmbuffer); + vmbuffer = InvalidBuffer; + } + /* If any tuples need to be deleted, perform final vacuum cycle */ /* XXX put a threshold on min number of tuples here? */ if (vacrelstats->num_dead_tuples > 0) @@ -824,13 +887,6 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats, vacrelstats->num_index_scans++; } - /* Release the pin on the visibility map page */ - if (BufferIsValid(vmbuffer)) - { - ReleaseBuffer(vmbuffer); - vmbuffer = InvalidBuffer; - } - /* Do post-vacuum cleanup and statistics update for each index */ for (i = 0; i < nindexes; i++) lazy_cleanup_index(Irel[i], indstats[i], vacrelstats); @@ -1061,80 +1117,117 @@ lazy_truncate_heap(Relation onerel, LVRelStats *vacrelstats) BlockNumber old_rel_pages = vacrelstats->rel_pages; BlockNumber new_rel_pages; PGRUsage ru0; + int lock_retry; pg_rusage_init(&ru0); /* - * We need full exclusive lock on the relation in order to do truncation. - * If we can't get it, give up rather than waiting --- we don't want to - * block other backends, and we don't want to deadlock (which is quite - * possible considering we already hold a lower-grade lock). - */ - if (!ConditionalLockRelation(onerel, AccessExclusiveLock)) - return; - - /* - * Now that we have exclusive lock, look to see if the rel has grown - * whilst we were vacuuming with non-exclusive lock. If so, give up; the - * newly added pages presumably contain non-deletable tuples. + * Loop until no more truncating can be done. */ - new_rel_pages = RelationGetNumberOfBlocks(onerel); - if (new_rel_pages != old_rel_pages) + do { /* - * Note: we intentionally don't update vacrelstats->rel_pages with the - * new rel size here. If we did, it would amount to assuming that the - * new pages are empty, which is unlikely. Leaving the numbers alone - * amounts to assuming that the new pages have the same tuple density - * as existing ones, which is less unlikely. + * We need full exclusive lock on the relation in order to do + * truncation. If we can't get it, give up rather than waiting --- we + * don't want to block other backends, and we don't want to deadlock + * (which is quite possible considering we already hold a lower-grade + * lock). */ - UnlockRelation(onerel, AccessExclusiveLock); - return; - } + vacrelstats->lock_waiter_detected = false; + lock_retry = 0; + while (true) + { + if (ConditionalLockRelation(onerel, AccessExclusiveLock)) + break; - /* - * Scan backwards from the end to verify that the end pages actually - * contain no tuples. This is *necessary*, not optional, because other - * backends could have added tuples to these pages whilst we were - * vacuuming. - */ - new_rel_pages = count_nondeletable_pages(onerel, vacrelstats); + /* + * Check for interrupts while trying to (re-)acquire the exclusive + * lock. + */ + CHECK_FOR_INTERRUPTS(); - if (new_rel_pages >= old_rel_pages) - { - /* can't do anything after all */ - UnlockRelation(onerel, AccessExclusiveLock); - return; - } + if (++lock_retry > (VACUUM_TRUNCATE_LOCK_TIMEOUT / + VACUUM_TRUNCATE_LOCK_WAIT_INTERVAL)) + { + /* + * We failed to establish the lock in the specified number of + * retries. This means we give up truncating. + */ + vacrelstats->lock_waiter_detected = true; + ereport(elevel, + (errmsg("\"%s\": stopping truncate due to conflicting lock request", + RelationGetRelationName(onerel)))); + return; + } - /* - * Okay to truncate. - */ - RelationTruncate(onerel, new_rel_pages); + pg_usleep(VACUUM_TRUNCATE_LOCK_WAIT_INTERVAL); + } - /* - * We can release the exclusive lock as soon as we have truncated. Other - * backends can't safely access the relation until they have processed the - * smgr invalidation that smgrtruncate sent out ... but that should happen - * as part of standard invalidation processing once they acquire lock on - * the relation. - */ - UnlockRelation(onerel, AccessExclusiveLock); + /* + * Now that we have exclusive lock, look to see if the rel has grown + * whilst we were vacuuming with non-exclusive lock. If so, give up; + * the newly added pages presumably contain non-deletable tuples. + */ + new_rel_pages = RelationGetNumberOfBlocks(onerel); + if (new_rel_pages != old_rel_pages) + { + /* + * Note: we intentionally don't update vacrelstats->rel_pages with + * the new rel size here. If we did, it would amount to assuming + * that the new pages are empty, which is unlikely. Leaving the + * numbers alone amounts to assuming that the new pages have the + * same tuple density as existing ones, which is less unlikely. + */ + UnlockRelation(onerel, AccessExclusiveLock); + return; + } - /* - * Update statistics. Here, it *is* correct to adjust rel_pages without - * also touching reltuples, since the tuple count wasn't changed by the - * truncation. - */ - vacrelstats->rel_pages = new_rel_pages; - vacrelstats->pages_removed = old_rel_pages - new_rel_pages; + /* + * Scan backwards from the end to verify that the end pages actually + * contain no tuples. This is *necessary*, not optional, because + * other backends could have added tuples to these pages whilst we + * were vacuuming. + */ + new_rel_pages = count_nondeletable_pages(onerel, vacrelstats); - ereport(elevel, - (errmsg("\"%s\": truncated %u to %u pages", - RelationGetRelationName(onerel), - old_rel_pages, new_rel_pages), - errdetail("%s.", - pg_rusage_show(&ru0)))); + if (new_rel_pages >= old_rel_pages) + { + /* can't do anything after all */ + UnlockRelation(onerel, AccessExclusiveLock); + return; + } + + /* + * Okay to truncate. + */ + RelationTruncate(onerel, new_rel_pages); + + /* + * We can release the exclusive lock as soon as we have truncated. + * Other backends can't safely access the relation until they have + * processed the smgr invalidation that smgrtruncate sent out ... but + * that should happen as part of standard invalidation processing once + * they acquire lock on the relation. + */ + UnlockRelation(onerel, AccessExclusiveLock); + + /* + * Update statistics. Here, it *is* correct to adjust rel_pages + * without also touching reltuples, since the tuple count wasn't + * changed by the truncation. + */ + vacrelstats->pages_removed += old_rel_pages - new_rel_pages; + vacrelstats->rel_pages = new_rel_pages; + + ereport(elevel, + (errmsg("\"%s\": truncated %u to %u pages", + RelationGetRelationName(onerel), + old_rel_pages, new_rel_pages), + errdetail("%s.", + pg_rusage_show(&ru0)))); + old_rel_pages = new_rel_pages; + } while (new_rel_pages > vacrelstats->nonempty_pages && + vacrelstats->lock_waiter_detected); } /* @@ -1146,6 +1239,10 @@ static BlockNumber count_nondeletable_pages(Relation onerel, LVRelStats *vacrelstats) { BlockNumber blkno; + instr_time starttime; + + /* Initialize the starttime if we check for conflicting lock requests */ + INSTR_TIME_SET_CURRENT(starttime); /* Strange coding of loop control is needed because blkno is unsigned */ blkno = vacrelstats->rel_pages; @@ -1157,6 +1254,38 @@ count_nondeletable_pages(Relation onerel, LVRelStats *vacrelstats) maxoff; bool hastup; + /* + * Check if another process requests a lock on our relation. We are + * holding an AccessExclusiveLock here, so they will be waiting. We + * only do this once per VACUUM_TRUNCATE_LOCK_CHECK_INTERVAL, and we + * only check if that interval has elapsed once every 32 blocks to + * keep the number of system calls and actual shared lock table + * lookups to a minimum. + */ + if ((blkno % 32) == 0) + { + instr_time currenttime; + instr_time elapsed; + + INSTR_TIME_SET_CURRENT(currenttime); + elapsed = currenttime; + INSTR_TIME_SUBTRACT(elapsed, starttime); + if ((INSTR_TIME_GET_MICROSEC(elapsed) / 1000) + >= VACUUM_TRUNCATE_LOCK_CHECK_INTERVAL) + { + if (LockHasWaitersRelation(onerel, AccessExclusiveLock)) + { + ereport(elevel, + (errmsg("\"%s\": suspending truncate due to conflicting lock request", + RelationGetRelationName(onerel)))); + + vacrelstats->lock_waiter_detected = true; + return blkno; + } + starttime = currenttime; + } + } + /* * We don't insert a vacuum delay point here, because we have an * exclusive lock on the table which we want to hold for as short a diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c index 5d5f0aceac..ef3ac4cc25 100644 --- a/src/backend/commands/variable.c +++ b/src/backend/commands/variable.c @@ -342,6 +342,7 @@ check_timezone(char **newval, void **extra, GucSource source) #else myextra.CTimeZone = -interval->time; #endif + myextra.session_timezone = pg_tzset_offset(myextra.CTimeZone); myextra.HasCTZSet = true; pfree(interval); @@ -356,6 +357,7 @@ check_timezone(char **newval, void **extra, GucSource source) { /* Here we change from SQL to Unix sign convention */ myextra.CTimeZone = -hours * SECS_PER_HOUR; + myextra.session_timezone = pg_tzset_offset(myextra.CTimeZone); myextra.HasCTZSet = true; } else @@ -569,11 +571,16 @@ show_log_timezone(void) * read-only may be changed to read-write only when in a top-level transaction * that has not yet taken an initial snapshot. Can't do it in a hot standby * slave, either. + * + * If we are not in a transaction at all, just allow the change; it means + * nothing since XactReadOnly will be reset by the next StartTransaction(). + * The IsTransactionState() test protects us against trying to check + * RecoveryInProgress() in contexts where shared memory is not accessible. */ bool check_transaction_read_only(bool *newval, void **extra, GucSource source) { - if (*newval == false && XactReadOnly) + if (*newval == false && XactReadOnly && IsTransactionState()) { /* Can't go to r/w mode inside a r/o transaction */ if (IsSubTransaction()) @@ -592,6 +599,7 @@ check_transaction_read_only(bool *newval, void **extra, GucSource source) /* Can't go to r/w mode while recovery is still active */ if (RecoveryInProgress()) { + GUC_check_errcode(ERRCODE_FEATURE_NOT_SUPPORTED); GUC_check_errmsg("cannot set transaction read-write mode during recovery"); return false; } @@ -605,6 +613,8 @@ check_transaction_read_only(bool *newval, void **extra, GucSource source) * * We allow idempotent changes at any time, but otherwise this can only be * changed in a toplevel transaction that has not yet taken a snapshot. + * + * As in check_transaction_read_only, allow it if not inside a transaction. */ bool check_XactIsoLevel(char **newval, void **extra, GucSource source) @@ -641,7 +651,7 @@ check_XactIsoLevel(char **newval, void **extra, GucSource source) else return false; - if (newXactIsoLevel != XactIsoLevel) + if (newXactIsoLevel != XactIsoLevel && IsTransactionState()) { if (FirstSnapshotSet) { @@ -659,6 +669,7 @@ check_XactIsoLevel(char **newval, void **extra, GucSource source) /* Can't go to serializable mode while recovery is still active */ if (newXactIsoLevel == XACT_SERIALIZABLE && RecoveryInProgress()) { + GUC_check_errcode(ERRCODE_FEATURE_NOT_SUPPORTED); GUC_check_errmsg("cannot use serializable mode in a hot standby"); GUC_check_errhint("You can use REPEATABLE READ instead."); return false; diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c index 197872aa24..674edcc9fa 100644 --- a/src/backend/commands/view.c +++ b/src/backend/commands/view.c @@ -100,10 +100,10 @@ isViewOnTempTable_walker(Node *node, void *context) *--------------------------------------------------------------------- */ static Oid -DefineVirtualRelation(const RangeVar *relation, List *tlist, bool replace) +DefineVirtualRelation(const RangeVar *relation, List *tlist, bool replace, + Oid namespaceId) { - Oid viewOid, - namespaceId; + Oid viewOid; CreateStmt *createStmt = makeNode(CreateStmt); List *attrList; ListCell *t; @@ -163,7 +163,6 @@ DefineVirtualRelation(const RangeVar *relation, List *tlist, bool replace) /* * Check to see if we want to replace an existing view. */ - namespaceId = RangeVarGetCreationNamespace(relation); viewOid = get_relname_relid(relation->relname, namespaceId); if (OidIsValid(viewOid) && replace) @@ -420,6 +419,7 @@ DefineView(ViewStmt *stmt, const char *queryString) { Query *viewParse; Oid viewOid; + Oid namespaceId; RangeVar *view; /* @@ -483,17 +483,22 @@ DefineView(ViewStmt *stmt, const char *queryString) "names than columns"))); } + /* Unlogged views are not sensible. */ + if (stmt->view->relpersistence == RELPERSISTENCE_UNLOGGED) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("views cannot be unlogged because they do not have storage"))); + /* * If the user didn't explicitly ask for a temporary view, check whether * we need one implicitly. We allow TEMP to be inserted automatically as * long as the CREATE command is consistent with that --- no explicit * schema name. */ - view = stmt->view; + view = copyObject(stmt->view); /* don't corrupt original command */ if (view->relpersistence == RELPERSISTENCE_PERMANENT && isViewOnTempTable(viewParse)) { - view = copyObject(view); /* don't corrupt original command */ view->relpersistence = RELPERSISTENCE_TEMP; ereport(NOTICE, (errmsg("view \"%s\" will be a temporary view", @@ -506,11 +511,9 @@ DefineView(ViewStmt *stmt, const char *queryString) ExecSetTempObjectIncluded(); #endif - /* Unlogged views are not sensible. */ - if (view->relpersistence == RELPERSISTENCE_UNLOGGED) - ereport(ERROR, - (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("views cannot be unlogged because they do not have storage"))); + /* Might also need to make it temporary if placed in temp schema. */ + namespaceId = RangeVarGetCreationNamespace(view); + RangeVarAdjustRelationPersistence(view, namespaceId); /* * Create the view relation @@ -519,7 +522,7 @@ DefineView(ViewStmt *stmt, const char *queryString) * aborted. */ viewOid = DefineVirtualRelation(view, viewParse->targetList, - stmt->replace); + stmt->replace, namespaceId); /* * The relation we have just created is not visible to any other commands diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index 0f7566164f..4aec0c5349 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -43,6 +43,7 @@ #include "access/xact.h" #include "catalog/heap.h" #include "catalog/namespace.h" +#include "catalog/pg_tablespace.h" #include "catalog/toasting.h" #include "commands/tablespace.h" #include "commands/trigger.h" @@ -241,7 +242,9 @@ standard_ExecutorStart(QueryDesc *queryDesc, int eflags) * we retrieve up to 'count' tuples in the specified direction. * * Note: count = 0 is interpreted as no portal limit, i.e., run to - * completion. + * completion. Also note that the count limit is only applied to + * retrieved tuples, not for instance to those inserted/updated/deleted + * by a ModifyTable plan node. * * There is no return value, but output tuples (if any) are sent to * the destination receiver specified in the QueryDesc; and the number @@ -880,6 +883,7 @@ InitPlan(QueryDesc *queryDesc, int eflags) estate->es_tupleTable = NIL; estate->es_trig_tuple_slot = NULL; estate->es_trig_oldtup_slot = NULL; + estate->es_trig_newtup_slot = NULL; /* mark EvalPlanQual not active */ estate->es_epqTuple = NULL; @@ -1402,7 +1406,7 @@ ExecEndPlan(PlanState *planstate, EState *estate) /* ---------------------------------------------------------------- * ExecutePlan * - * Processes the query plan until we have processed 'numberTuples' tuples, + * Processes the query plan until we have retrieved 'numberTuples' tuples, * moving in the specified direction. * * Runs to completion if numberTuples is 0 @@ -2291,11 +2295,7 @@ EvalPlanQualStart(EPQState *epqstate, EState *parentestate, Plan *planTree) * ExecInitSubPlan expects to be able to find these entries. Some of the * SubPlans might not be used in the part of the plan tree we intend to * run, but since it's not easy to tell which, we just initialize them - * all. (However, if the subplan is headed by a ModifyTable node, then it - * must be a data-modifying CTE, which we will certainly not need to - * re-run, so we can skip initializing it. This is just an efficiency - * hack; it won't skip data-modifying CTEs for which the ModifyTable node - * is not at the top.) + * all. */ Assert(estate->es_subplanstates == NIL); foreach(l, parentestate->es_plannedstmt->subplans) @@ -2303,12 +2303,7 @@ EvalPlanQualStart(EPQState *epqstate, EState *parentestate, Plan *planTree) Plan *subplan = (Plan *) lfirst(l); PlanState *subplanstate; - /* Don't initialize ModifyTable subplans, per comment above */ - if (IsA(subplan, ModifyTable)) - subplanstate = NULL; - else - subplanstate = ExecInitNode(subplan, estate, 0); - + subplanstate = ExecInitNode(subplan, estate, 0); estate->es_subplanstates = lappend(estate->es_subplanstates, subplanstate); } @@ -2389,6 +2384,7 @@ typedef struct { DestReceiver pub; /* publicly-known function pointers */ EState *estate; /* EState we are working with */ + DestReceiver *origdest; /* QueryDesc's original receiver */ Relation rel; /* Relation to write to */ int hi_options; /* heap_insert performance options */ BulkInsertState bistate; /* bulk insert state */ @@ -2432,6 +2428,13 @@ OpenIntoRel(QueryDesc *queryDesc) (errcode(ERRCODE_INVALID_TABLE_DEFINITION), errmsg("ON COMMIT can only be used on temporary tables"))); + /* + * Find namespace to create in, check its permissions + */ + intoName = into->rel->relname; + namespaceId = RangeVarGetAndCheckCreationNamespace(into->rel); + RangeVarAdjustRelationPersistence(into->rel, namespaceId); + /* * Security check: disallow creating temp tables from security-restricted * code. This is needed because calling code might not expect untrusted @@ -2443,12 +2446,6 @@ OpenIntoRel(QueryDesc *queryDesc) (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), errmsg("cannot create temporary table within security-restricted operation"))); - /* - * Find namespace to create in, check its permissions - */ - intoName = into->rel->relname; - namespaceId = RangeVarGetAndCheckCreationNamespace(into->rel); - /* * Select tablespace to use. If not specified, use default tablespace * (which may in turn default to database's default). @@ -2476,6 +2473,12 @@ OpenIntoRel(QueryDesc *queryDesc) get_tablespace_name(tablespaceId)); } + /* In all cases disallow placing user relations in pg_global */ + if (tablespaceId == GLOBALTABLESPACE_OID) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("only shared relations can be placed in pg_global tablespace"))); + /* Parse and validate any reloptions */ reloptions = transformRelOptions((Datum) 0, into->options, @@ -2542,12 +2545,14 @@ OpenIntoRel(QueryDesc *queryDesc) /* * Now replace the query's DestReceiver with one for SELECT INTO */ - queryDesc->dest = CreateDestReceiver(DestIntoRel); - myState = (DR_intorel *) queryDesc->dest; + myState = (DR_intorel *) CreateDestReceiver(DestIntoRel); Assert(myState->pub.mydest == DestIntoRel); myState->estate = estate; + myState->origdest = queryDesc->dest; myState->rel = intoRelationDesc; + queryDesc->dest = (DestReceiver *) myState; + /* * We can skip WAL-logging the insertions, unless PITR or streaming * replication is in use. We can skip the FSM in any case. @@ -2568,8 +2573,11 @@ CloseIntoRel(QueryDesc *queryDesc) { DR_intorel *myState = (DR_intorel *) queryDesc->dest; - /* OpenIntoRel might never have gotten called */ - if (myState && myState->pub.mydest == DestIntoRel && myState->rel) + /* + * OpenIntoRel might never have gotten called, and we also want to guard + * against double destruction. + */ + if (myState && myState->pub.mydest == DestIntoRel) { FreeBulkInsertState(myState->bistate); @@ -2580,7 +2588,11 @@ CloseIntoRel(QueryDesc *queryDesc) /* close rel, but keep lock until commit */ heap_close(myState->rel, NoLock); - myState->rel = NULL; + /* restore the receiver belonging to executor's caller */ + queryDesc->dest = myState->origdest; + + /* might as well invoke my destructor */ + intorel_destroy((DestReceiver *) myState); } } diff --git a/src/backend/executor/execQual.c b/src/backend/executor/execQual.c index 7edc63e275..cf7fd5f681 100644 --- a/src/backend/executor/execQual.c +++ b/src/backend/executor/execQual.c @@ -20,7 +20,7 @@ * ExecProject - form a new tuple by projecting the given tuple * * NOTES - * The more heavily used ExecEvalExpr routines, such as ExecEvalVar(), + * The more heavily used ExecEvalExpr routines, such as ExecEvalScalarVar, * are hotspots. Making these faster will speed up the entire system. * * ExecProject() is used to make tuple projections. Rather then @@ -68,13 +68,18 @@ static Datum ExecEvalAggref(AggrefExprState *aggref, static Datum ExecEvalWindowFunc(WindowFuncExprState *wfunc, ExprContext *econtext, bool *isNull, ExprDoneCond *isDone); -static Datum ExecEvalVar(ExprState *exprstate, ExprContext *econtext, - bool *isNull, ExprDoneCond *isDone); static Datum ExecEvalScalarVar(ExprState *exprstate, ExprContext *econtext, bool *isNull, ExprDoneCond *isDone); -static Datum ExecEvalWholeRowVar(ExprState *exprstate, ExprContext *econtext, +static Datum ExecEvalScalarVarFast(ExprState *exprstate, ExprContext *econtext, + bool *isNull, ExprDoneCond *isDone); +static Datum ExecEvalWholeRowVar(WholeRowVarExprState *wrvstate, + ExprContext *econtext, bool *isNull, ExprDoneCond *isDone); -static Datum ExecEvalWholeRowSlow(ExprState *exprstate, ExprContext *econtext, +static Datum ExecEvalWholeRowFast(WholeRowVarExprState *wrvstate, + ExprContext *econtext, + bool *isNull, ExprDoneCond *isDone); +static Datum ExecEvalWholeRowSlow(WholeRowVarExprState *wrvstate, + ExprContext *econtext, bool *isNull, ExprDoneCond *isDone); static Datum ExecEvalConst(ExprState *exprstate, ExprContext *econtext, bool *isNull, ExprDoneCond *isDone); @@ -553,20 +558,19 @@ ExecEvalWindowFunc(WindowFuncExprState *wfunc, ExprContext *econtext, } /* ---------------------------------------------------------------- - * ExecEvalVar + * ExecEvalScalarVar * - * Returns a Datum whose value is the value of a range - * variable with respect to given expression context. + * Returns a Datum whose value is the value of a scalar (not whole-row) + * range variable with respect to given expression context. * - * Note: ExecEvalVar is executed only the first time through in a given plan; - * it changes the ExprState's function pointer to pass control directly to - * ExecEvalScalarVar, ExecEvalWholeRowVar, or ExecEvalWholeRowSlow after - * making one-time checks. + * Note: ExecEvalScalarVar is executed only the first time through in a given + * plan; it changes the ExprState's function pointer to pass control directly + * to ExecEvalScalarVarFast after making one-time checks. * ---------------------------------------------------------------- */ static Datum -ExecEvalVar(ExprState *exprstate, ExprContext *econtext, - bool *isNull, ExprDoneCond *isDone) +ExecEvalScalarVar(ExprState *exprstate, ExprContext *econtext, + bool *isNull, ExprDoneCond *isDone) { Var *variable = (Var *) exprstate->expr; TupleTableSlot *slot; @@ -594,162 +598,65 @@ ExecEvalVar(ExprState *exprstate, ExprContext *econtext, attnum = variable->varattno; - if (attnum != InvalidAttrNumber) - { - /* - * Scalar variable case. - * - * If it's a user attribute, check validity (bogus system attnums will - * be caught inside slot_getattr). What we have to check for here is - * the possibility of an attribute having been changed in type since - * the plan tree was created. Ideally the plan would get invalidated - * and not re-used, but until that day arrives, we need defenses. - * Fortunately it's sufficient to check once on the first time - * through. - * - * Note: we allow a reference to a dropped attribute. slot_getattr - * will force a NULL result in such cases. - * - * Note: ideally we'd check typmod as well as typid, but that seems - * impractical at the moment: in many cases the tupdesc will have been - * generated by ExecTypeFromTL(), and that can't guarantee to generate - * an accurate typmod in all cases, because some expression node types - * don't carry typmod. - */ - if (attnum > 0) - { - TupleDesc slot_tupdesc = slot->tts_tupleDescriptor; - Form_pg_attribute attr; - - if (attnum > slot_tupdesc->natts) /* should never happen */ - elog(ERROR, "attribute number %d exceeds number of columns %d", - attnum, slot_tupdesc->natts); - - attr = slot_tupdesc->attrs[attnum - 1]; - - /* can't check type if dropped, since atttypid is probably 0 */ - if (!attr->attisdropped) - { - if (variable->vartype != attr->atttypid) - ereport(ERROR, - (errmsg("attribute %d has wrong type", attnum), - errdetail("Table has type %s, but query expects %s.", - format_type_be(attr->atttypid), - format_type_be(variable->vartype)))); - } - } - - /* Skip the checking on future executions of node */ - exprstate->evalfunc = ExecEvalScalarVar; + /* This was checked by ExecInitExpr */ + Assert(attnum != InvalidAttrNumber); - /* Fetch the value from the slot */ - return slot_getattr(slot, attnum, isNull); - } - else + /* + * If it's a user attribute, check validity (bogus system attnums will be + * caught inside slot_getattr). What we have to check for here is the + * possibility of an attribute having been changed in type since the plan + * tree was created. Ideally the plan will get invalidated and not + * re-used, but just in case, we keep these defenses. Fortunately it's + * sufficient to check once on the first time through. + * + * Note: we allow a reference to a dropped attribute. slot_getattr will + * force a NULL result in such cases. + * + * Note: ideally we'd check typmod as well as typid, but that seems + * impractical at the moment: in many cases the tupdesc will have been + * generated by ExecTypeFromTL(), and that can't guarantee to generate an + * accurate typmod in all cases, because some expression node types don't + * carry typmod. + */ + if (attnum > 0) { - /* - * Whole-row variable. - * - * 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. - */ TupleDesc slot_tupdesc = slot->tts_tupleDescriptor; - bool needslow = false; + Form_pg_attribute attr; - if (variable->vartype == RECORDOID) - { - if (slot_tupdesc->tdtypeid == RECORDOID && - slot_tupdesc->tdtypmod < 0) - assign_record_type_typmod(slot_tupdesc); - } - else - { - TupleDesc var_tupdesc; - int i; + if (attnum > slot_tupdesc->natts) /* should never happen */ + elog(ERROR, "attribute number %d exceeds number of columns %d", + attnum, slot_tupdesc->natts); - /* - * We really only care about number of attributes and data type. - * Also, we can ignore type mismatch on columns that are dropped - * in the destination type, so long as (1) the physical storage - * matches or (2) the actual column value is NULL. Case (1) is - * helpful in some cases involving out-of-date cached plans, while - * case (2) is expected behavior in situations such as an INSERT - * into a table with dropped columns (the planner typically - * generates an INT4 NULL regardless of the dropped column type). - * If we find a dropped column and cannot verify that case (1) - * holds, we have to use ExecEvalWholeRowSlow to check (2) for - * each row. Also, we have to allow the case that the slot has - * more columns than the Var's type, because we might be looking - * at the output of a subplan that includes resjunk columns. (XXX - * it would be nice to verify that the extra columns are all - * marked resjunk, but we haven't got access to the subplan - * targetlist here...) Resjunk columns should always be at the end - * of a targetlist, so it's sufficient to ignore them here; but we - * need to use ExecEvalWholeRowSlow to get rid of them in the - * eventual output tuples. - */ - var_tupdesc = lookup_rowtype_tupdesc(variable->vartype, -1); + attr = slot_tupdesc->attrs[attnum - 1]; - if (var_tupdesc->natts > slot_tupdesc->natts) + /* can't check type if dropped, since atttypid is probably 0 */ + if (!attr->attisdropped) + { + if (variable->vartype != attr->atttypid) ereport(ERROR, - (errcode(ERRCODE_DATATYPE_MISMATCH), - errmsg("table row type and query-specified row type do not match"), - errdetail_plural("Table row contains %d attribute, but query expects %d.", - "Table row contains %d attributes, but query expects %d.", - slot_tupdesc->natts, - slot_tupdesc->natts, - var_tupdesc->natts))); - else if (var_tupdesc->natts < slot_tupdesc->natts) - needslow = true; /* need to trim trailing atts */ - - for (i = 0; i < var_tupdesc->natts; i++) - { - Form_pg_attribute vattr = var_tupdesc->attrs[i]; - Form_pg_attribute sattr = slot_tupdesc->attrs[i]; - - if (vattr->atttypid == sattr->atttypid) - continue; /* no worries */ - if (!vattr->attisdropped) - ereport(ERROR, - (errcode(ERRCODE_DATATYPE_MISMATCH), - errmsg("table row type and query-specified row type do not match"), - errdetail("Table has type %s at ordinal position %d, but query expects %s.", - format_type_be(sattr->atttypid), - i + 1, - format_type_be(vattr->atttypid)))); - - if (vattr->attlen != sattr->attlen || - vattr->attalign != sattr->attalign) - needslow = true; /* need runtime check for null */ - } - - ReleaseTupleDesc(var_tupdesc); + (errmsg("attribute %d has wrong type", attnum), + errdetail("Table has type %s, but query expects %s.", + format_type_be(attr->atttypid), + format_type_be(variable->vartype)))); } + } - /* Skip the checking on future executions of node */ - if (needslow) - exprstate->evalfunc = ExecEvalWholeRowSlow; - else - exprstate->evalfunc = ExecEvalWholeRowVar; + /* Skip the checking on future executions of node */ + exprstate->evalfunc = ExecEvalScalarVarFast; - /* Fetch the value */ - return (*exprstate->evalfunc) (exprstate, econtext, isNull, isDone); - } + /* Fetch the value from the slot */ + return slot_getattr(slot, attnum, isNull); } /* ---------------------------------------------------------------- - * ExecEvalScalarVar + * ExecEvalScalarVarFast * * Returns a Datum for a scalar variable. * ---------------------------------------------------------------- */ static Datum -ExecEvalScalarVar(ExprState *exprstate, ExprContext *econtext, - bool *isNull, ExprDoneCond *isDone) +ExecEvalScalarVarFast(ExprState *exprstate, ExprContext *econtext, + bool *isNull, ExprDoneCond *isDone) { Var *variable = (Var *) exprstate->expr; TupleTableSlot *slot; @@ -784,14 +691,202 @@ ExecEvalScalarVar(ExprState *exprstate, ExprContext *econtext, /* ---------------------------------------------------------------- * ExecEvalWholeRowVar * - * Returns a Datum for a whole-row variable. + * Returns a Datum whose value is the value of a whole-row range + * variable with respect to given expression context. + * + * Note: ExecEvalWholeRowVar is executed only the first time through in a + * given plan; it changes the ExprState's function pointer to pass control + * directly to ExecEvalWholeRowFast or ExecEvalWholeRowSlow after making + * one-time checks. * ---------------------------------------------------------------- */ static Datum -ExecEvalWholeRowVar(ExprState *exprstate, ExprContext *econtext, +ExecEvalWholeRowVar(WholeRowVarExprState *wrvstate, ExprContext *econtext, bool *isNull, ExprDoneCond *isDone) { - Var *variable = (Var *) exprstate->expr; + Var *variable = (Var *) wrvstate->xprstate.expr; + TupleTableSlot *slot; + TupleDesc slot_tupdesc; + bool needslow = false; + + if (isDone) + *isDone = ExprSingleResult; + + /* This was checked by ExecInitExpr */ + Assert(variable->varattno == InvalidAttrNumber); + + /* Get the input slot we want */ + switch (variable->varno) + { + case INNER: /* get the tuple from the inner node */ + slot = econtext->ecxt_innertuple; + break; + + case OUTER: /* get the tuple from the outer node */ + slot = econtext->ecxt_outertuple; + break; + + default: /* get the tuple from the relation being + * scanned */ + slot = econtext->ecxt_scantuple; + break; + } + + /* + * If the input tuple came from a subquery, it might contain "resjunk" + * columns (such as GROUP BY or ORDER BY columns), which we don't want to + * keep in the whole-row result. We can get rid of such columns by + * passing the tuple through a JunkFilter --- but to make one, we have to + * lay our hands on the subquery's targetlist. Fortunately, there are not + * very many cases where this can happen, and we can identify all of them + * by examining our parent PlanState. We assume this is not an issue in + * standalone expressions that don't have parent plans. (Whole-row Vars + * can occur in such expressions, but they will always be referencing + * table rows.) + */ + if (wrvstate->parent) + { + PlanState *subplan = NULL; + + switch (nodeTag(wrvstate->parent)) + { + case T_SubqueryScanState: + subplan = ((SubqueryScanState *) wrvstate->parent)->subplan; + break; + case T_CteScanState: + subplan = ((CteScanState *) wrvstate->parent)->cteplanstate; + break; + default: + break; + } + + if (subplan) + { + bool junk_filter_needed = false; + ListCell *tlist; + + /* Detect whether subplan tlist actually has any junk columns */ + foreach(tlist, subplan->plan->targetlist) + { + TargetEntry *tle = (TargetEntry *) lfirst(tlist); + + if (tle->resjunk) + { + junk_filter_needed = true; + break; + } + } + + /* 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, + ExecGetResultType(subplan)->tdhasoid, + ExecInitExtraTupleSlot(wrvstate->parent->state)); + MemoryContextSwitchTo(oldcontext); + } + } + } + + /* Apply the junkfilter if any */ + 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 + { + TupleDesc var_tupdesc; + int i; + + /* + * We really only care about numbers of attributes and data types. + * Also, we can ignore type mismatch on columns that are dropped in + * the destination type, so long as (1) the physical storage matches + * or (2) the actual column value is NULL. Case (1) is helpful in + * some cases involving out-of-date cached plans, while case (2) is + * expected behavior in situations such as an INSERT into a table with + * dropped columns (the planner typically generates an INT4 NULL + * regardless of the dropped column type). If we find a dropped + * column and cannot verify that case (1) holds, we have to use + * ExecEvalWholeRowSlow to check (2) for each row. + */ + var_tupdesc = lookup_rowtype_tupdesc(variable->vartype, -1); + + if (var_tupdesc->natts != slot_tupdesc->natts) + ereport(ERROR, + (errcode(ERRCODE_DATATYPE_MISMATCH), + errmsg("table row type and query-specified row type do not match"), + errdetail_plural("Table row contains %d attribute, but query expects %d.", + "Table row contains %d attributes, but query expects %d.", + slot_tupdesc->natts, + slot_tupdesc->natts, + var_tupdesc->natts))); + + for (i = 0; i < var_tupdesc->natts; i++) + { + Form_pg_attribute vattr = var_tupdesc->attrs[i]; + Form_pg_attribute sattr = slot_tupdesc->attrs[i]; + + if (vattr->atttypid == sattr->atttypid) + continue; /* no worries */ + if (!vattr->attisdropped) + ereport(ERROR, + (errcode(ERRCODE_DATATYPE_MISMATCH), + errmsg("table row type and query-specified row type do not match"), + errdetail("Table has type %s at ordinal position %d, but query expects %s.", + format_type_be(sattr->atttypid), + i + 1, + format_type_be(vattr->atttypid)))); + + if (vattr->attlen != sattr->attlen || + vattr->attalign != sattr->attalign) + needslow = true; /* need runtime check for null */ + } + + ReleaseTupleDesc(var_tupdesc); + } + + /* Skip the checking on future executions of node */ + if (needslow) + wrvstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalWholeRowSlow; + else + wrvstate->xprstate.evalfunc = (ExprStateEvalFunc) ExecEvalWholeRowFast; + + /* Fetch the value */ + return (*wrvstate->xprstate.evalfunc) ((ExprState *) wrvstate, econtext, + isNull, isDone); +} + +/* ---------------------------------------------------------------- + * ExecEvalWholeRowFast + * + * Returns a Datum for a whole-row variable. + * ---------------------------------------------------------------- + */ +static Datum +ExecEvalWholeRowFast(WholeRowVarExprState *wrvstate, ExprContext *econtext, + bool *isNull, ExprDoneCond *isDone) +{ + Var *variable = (Var *) wrvstate->xprstate.expr; TupleTableSlot *slot; HeapTuple tuple; TupleDesc tupleDesc; @@ -818,6 +913,10 @@ ExecEvalWholeRowVar(ExprState *exprstate, ExprContext *econtext, break; } + /* Apply the junkfilter if any */ + if (wrvstate->wrv_junkFilter != NULL) + slot = ExecFilterJunk(wrvstate->wrv_junkFilter, slot); + tuple = ExecFetchSlotTuple(slot); tupleDesc = slot->tts_tupleDescriptor; @@ -851,17 +950,18 @@ ExecEvalWholeRowVar(ExprState *exprstate, ExprContext *econtext, /* ---------------------------------------------------------------- * ExecEvalWholeRowSlow * - * Returns a Datum for a whole-row variable, in the "slow" cases where + * Returns a Datum for a whole-row variable, in the "slow" case where * we can't just copy the subplan's output. * ---------------------------------------------------------------- */ static Datum -ExecEvalWholeRowSlow(ExprState *exprstate, ExprContext *econtext, +ExecEvalWholeRowSlow(WholeRowVarExprState *wrvstate, ExprContext *econtext, bool *isNull, ExprDoneCond *isDone) { - Var *variable = (Var *) exprstate->expr; + Var *variable = (Var *) wrvstate->xprstate.expr; TupleTableSlot *slot; HeapTuple tuple; + TupleDesc tupleDesc; TupleDesc var_tupdesc; HeapTupleHeader dtuple; int i; @@ -887,25 +987,21 @@ ExecEvalWholeRowSlow(ExprState *exprstate, ExprContext *econtext, break; } - /* - * Currently, the only data modification case handled here is stripping of - * trailing resjunk fields, which we do in a slightly chintzy way by just - * adjusting the tuple's natts header field. Possibly there will someday - * be a need for more-extensive rearrangements, in which case we'd - * probably use tupconvert.c. - */ - Assert(variable->vartype != RECORDOID); - var_tupdesc = lookup_rowtype_tupdesc(variable->vartype, -1); + /* Apply the junkfilter if any */ + if (wrvstate->wrv_junkFilter != NULL) + slot = ExecFilterJunk(wrvstate->wrv_junkFilter, slot); tuple = ExecFetchSlotTuple(slot); + tupleDesc = slot->tts_tupleDescriptor; - Assert(HeapTupleHeaderGetNatts(tuple->t_data) >= var_tupdesc->natts); + Assert(variable->vartype != RECORDOID); + var_tupdesc = lookup_rowtype_tupdesc(variable->vartype, -1); /* Check to see if any dropped attributes are non-null */ for (i = 0; i < var_tupdesc->natts; i++) { Form_pg_attribute vattr = var_tupdesc->attrs[i]; - Form_pg_attribute sattr = slot->tts_tupleDescriptor->attrs[i]; + Form_pg_attribute sattr = tupleDesc->attrs[i]; if (!vattr->attisdropped) continue; /* already checked non-dropped cols */ @@ -922,8 +1018,7 @@ ExecEvalWholeRowSlow(ExprState *exprstate, ExprContext *econtext, /* * We have to make a copy of the tuple so we can safely insert the Datum - * overhead fields, which are not set in on-disk tuples; not to mention - * fooling with its natts field. + * overhead fields, which are not set in on-disk tuples. */ dtuple = (HeapTupleHeader) palloc(tuple->t_len); memcpy((char *) dtuple, (char *) tuple->t_data, tuple->t_len); @@ -932,8 +1027,6 @@ ExecEvalWholeRowSlow(ExprState *exprstate, ExprContext *econtext, HeapTupleHeaderSetTypeId(dtuple, variable->vartype); HeapTupleHeaderSetTypMod(dtuple, variable->vartypmod); - HeapTupleHeaderSetNatts(dtuple, var_tupdesc->natts); - ReleaseTupleDesc(var_tupdesc); return PointerGetDatum(dtuple); @@ -1534,9 +1627,7 @@ tupledesc_match(TupleDesc dst_tupdesc, TupleDesc src_tupdesc) * init_fcache is presumed already run on the FuncExprState. * * This function handles the most general case, wherein the function or - * one of its arguments might (or might not) return a set. If we find - * no sets involved, we will change the FuncExprState's function pointer - * to use a simpler method on subsequent calls. + * one of its arguments can return a set. */ static Datum ExecMakeFunctionResult(FuncExprState *fcache, @@ -1798,13 +1889,12 @@ ExecMakeFunctionResult(FuncExprState *fcache, /* * Non-set case: much easier. * - * We change the ExprState function pointer to use the simpler - * ExecMakeFunctionResultNoSets on subsequent calls. This amounts to - * assuming that no argument can return a set if it didn't do so the - * first time. + * In common cases, this code path is unreachable because we'd have + * selected ExecMakeFunctionResultNoSets instead. However, it's + * possible to get here if an argument sometimes produces set results + * and sometimes scalar results. For example, a CASE expression might + * call a set-returning function in only some of its arms. */ - fcache->xprstate.evalfunc = (ExprStateEvalFunc) ExecMakeFunctionResultNoSets; - if (isDone) *isDone = ExprSingleResult; @@ -2263,10 +2353,22 @@ ExecEvalFunc(FuncExprState *fcache, init_fcache(func->funcid, func->inputcollid, fcache, econtext->ecxt_per_query_memory, true); - /* Go directly to ExecMakeFunctionResult on subsequent uses */ - fcache->xprstate.evalfunc = (ExprStateEvalFunc) ExecMakeFunctionResult; - - return ExecMakeFunctionResult(fcache, econtext, isNull, isDone); + /* + * We need to invoke ExecMakeFunctionResult if either the function itself + * or any of its input expressions can return a set. Otherwise, invoke + * ExecMakeFunctionResultNoSets. In either case, change the evalfunc + * pointer to go directly there on subsequent uses. + */ + if (fcache->func.fn_retset || expression_returns_set((Node *) func->args)) + { + fcache->xprstate.evalfunc = (ExprStateEvalFunc) ExecMakeFunctionResult; + return ExecMakeFunctionResult(fcache, econtext, isNull, isDone); + } + else + { + fcache->xprstate.evalfunc = (ExprStateEvalFunc) ExecMakeFunctionResultNoSets; + return ExecMakeFunctionResultNoSets(fcache, econtext, isNull, isDone); + } } /* ---------------------------------------------------------------- @@ -2286,10 +2388,22 @@ ExecEvalOper(FuncExprState *fcache, init_fcache(op->opfuncid, op->inputcollid, fcache, econtext->ecxt_per_query_memory, true); - /* Go directly to ExecMakeFunctionResult on subsequent uses */ - fcache->xprstate.evalfunc = (ExprStateEvalFunc) ExecMakeFunctionResult; - - return ExecMakeFunctionResult(fcache, econtext, isNull, isDone); + /* + * We need to invoke ExecMakeFunctionResult if either the function itself + * or any of its input expressions can return a set. Otherwise, invoke + * ExecMakeFunctionResultNoSets. In either case, change the evalfunc + * pointer to go directly there on subsequent uses. + */ + if (fcache->func.fn_retset || expression_returns_set((Node *) op->args)) + { + fcache->xprstate.evalfunc = (ExprStateEvalFunc) ExecMakeFunctionResult; + return ExecMakeFunctionResult(fcache, econtext, isNull, isDone); + } + else + { + fcache->xprstate.evalfunc = (ExprStateEvalFunc) ExecMakeFunctionResultNoSets; + return ExecMakeFunctionResultNoSets(fcache, econtext, isNull, isDone); + } } /* ---------------------------------------------------------------- @@ -3905,7 +4019,7 @@ ExecEvalFieldSelect(FieldSelectState *fstate, } /* Check for type mismatch --- possible after ALTER COLUMN TYPE? */ - /* As in ExecEvalVar, we should but can't check typmod */ + /* As in ExecEvalScalarVar, we should but can't check typmod */ if (fselect->resulttype != attr->atttypid) ereport(ERROR, (errmsg("attribute %d has wrong type", fieldnum), @@ -4237,8 +4351,21 @@ ExecInitExpr(Expr *node, PlanState *parent) switch (nodeTag(node)) { case T_Var: - state = (ExprState *) makeNode(ExprState); - state->evalfunc = ExecEvalVar; + /* varattno == InvalidAttrNumber means it's a whole-row Var */ + if (((Var *) node)->varattno == InvalidAttrNumber) + { + WholeRowVarExprState *wstate = makeNode(WholeRowVarExprState); + + wstate->parent = parent; + wstate->wrv_junkFilter = NULL; + state = (ExprState *) wstate; + state->evalfunc = (ExprStateEvalFunc) ExecEvalWholeRowVar; + } + else + { + state = (ExprState *) makeNode(ExprState); + state->evalfunc = ExecEvalScalarVar; + } break; case T_Const: state = (ExprState *) makeNode(ExprState); diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c index e0ebe90b9b..52d2dbf75f 100644 --- a/src/backend/executor/execUtils.c +++ b/src/backend/executor/execUtils.c @@ -127,6 +127,7 @@ CreateExecutorState(void) estate->es_trig_target_relations = NIL; estate->es_trig_tuple_slot = NULL; estate->es_trig_oldtup_slot = NULL; + estate->es_trig_newtup_slot = NULL; estate->es_param_list_info = NULL; estate->es_param_exec_vals = NULL; @@ -531,8 +532,8 @@ ExecBuildProjectionInfo(List *targetList, * We separate the target list elements into simple Var references and * expressions which require the full ExecTargetList machinery. To be a * simple Var, a Var has to be a user attribute and not mismatch the - * inputDesc. (Note: if there is a type mismatch then ExecEvalVar will - * probably throw an error at runtime, but we leave that to it.) + * inputDesc. (Note: if there is a type mismatch then ExecEvalScalarVar + * will probably throw an error at runtime, but we leave that to it.) */ exprlist = NIL; numSimpleVars = 0; @@ -909,6 +910,9 @@ ExecOpenIndices(ResultRelInfo *resultRelInfo) /* * For each index, open the index relation and save pg_index info. We * acquire RowExclusiveLock, signifying we will update the index. + * + * Note: we do this even if the index is not IndexIsReady; it's not worth + * the trouble to optimize for the case where it isn't. */ i = 0; foreach(l, indexoidlist) diff --git a/src/backend/executor/functions.c b/src/backend/executor/functions.c index 9f4503dcc1..98255939da 100644 --- a/src/backend/executor/functions.c +++ b/src/backend/executor/functions.c @@ -313,7 +313,7 @@ init_execution_state(List *queryTree_list, { /* * The parameterised queries in RemoteQuery nodes will be prepared - * on the datanode, and need parameter types for the same. Set the + * on the Datanode, and need parameter types for the same. Set the * parameter types and their number in all RemoteQuery nodes in the * plan */ diff --git a/src/backend/executor/nodeAgg.c b/src/backend/executor/nodeAgg.c index edb76f5832..9982c773ed 100644 --- a/src/backend/executor/nodeAgg.c +++ b/src/backend/executor/nodeAgg.c @@ -250,7 +250,7 @@ typedef struct AggStatePerGroupData * PGXCTODO: we should be able to reuse the fields above, rather than having * separate fields here, that can be done once we get rid of different * collection and transition result types in pg_aggregate.h. Collection at - * coordinator is equivalent to the transition at non-XC PG. + * Coordinator is equivalent to the transition at non-XC PG. */ Datum collectValue; /* current collection value */ bool collectValueIsNull; @@ -542,7 +542,7 @@ advance_collection_function(AggState *aggstate, Assert(OidIsValid(peraggstate->collectfn.fn_oid)); /* - * numArgument has to be one, since each datanode is going to send a single + * numArgument has to be one, since each Datanode is going to send a single * transition value */ Assert(numArguments == 1); @@ -700,7 +700,7 @@ advance_aggregates(AggState *aggstate, AggStatePerGroup pergroup) { Assert(IS_PGXC_COORDINATOR); /* - * we are collecting results sent by the datanodes, so advance + * we are collecting results sent by the Datanodes, so advance * collections instead of transitions */ advance_collection_function(aggstate, peraggstate, @@ -1816,8 +1816,8 @@ ExecInitAgg(Agg *node, EState *estate, int eflags) #ifdef PGXC peraggstate->collectfn_oid = collectfn_oid = aggform->aggcollectfn; /* - * For PGXC final and collection functions are used to combine results at coordinator, - * disable those for data node + * For PGXC final and collection functions are used to combine results at Coordinator, + * disable those for Datanode */ if (IS_PGXC_DATANODE) { diff --git a/src/backend/executor/nodeBitmapHeapscan.c b/src/backend/executor/nodeBitmapHeapscan.c index 20d5eb14bf..a18dec7dd2 100644 --- a/src/backend/executor/nodeBitmapHeapscan.c +++ b/src/backend/executor/nodeBitmapHeapscan.c @@ -46,6 +46,9 @@ #include "utils/memutils.h" #include "utils/snapmgr.h" #include "utils/tqual.h" +#ifdef PGXC +#include "pgxc/pgxc.h" +#endif static TupleTableSlot *BitmapHeapNext(BitmapHeapScanState *node); @@ -370,14 +373,26 @@ bitgetpage(HeapScanDesc scan, TBMIterateResult *tbmres) { ItemId lp; HeapTupleData loctup; + bool valid; lp = PageGetItemId(dp, offnum); if (!ItemIdIsNormal(lp)) continue; loctup.t_data = (HeapTupleHeader) PageGetItem((Page) dp, lp); loctup.t_len = ItemIdGetLength(lp); - if (HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer)) + loctup.t_tableOid = scan->rs_rd->rd_id; +#ifdef PGXC + loctup.t_xc_node_id = PGXCNodeIdentifier; +#endif + ItemPointerSet(&loctup.t_self, page, offnum); + valid = HeapTupleSatisfiesVisibility(&loctup, snapshot, buffer); + if (valid) + { scan->rs_vistuples[ntup++] = offnum; + PredicateLockTuple(scan->rs_rd, &loctup, snapshot); + } + CheckForSerializableConflictOut(valid, scan->rs_rd, &loctup, + buffer, snapshot); } } diff --git a/src/backend/executor/nodeCtescan.c b/src/backend/executor/nodeCtescan.c index ec39f2947a..a763905df1 100644 --- a/src/backend/executor/nodeCtescan.c +++ b/src/backend/executor/nodeCtescan.c @@ -205,7 +205,7 @@ ExecInitCteScan(CteScan *node, EState *estate, int eflags) * The Param slot associated with the CTE query is used to hold a pointer * to the CteState of the first CteScan node that initializes for this * CTE. This node will be the one that holds the shared state for all the - * CTEs. + * CTEs, particularly the shared tuplestore. */ prmdata = &(estate->es_param_exec_vals[node->cteParam]); Assert(prmdata->execPlan == NULL); @@ -294,7 +294,10 @@ ExecEndCteScan(CteScanState *node) * If I am the leader, free the tuplestore. */ if (node->leader == node) + { tuplestore_end(node->cte_table); + node->cte_table = NULL; + } } /* ---------------------------------------------------------------- @@ -312,26 +315,26 @@ ExecReScanCteScan(CteScanState *node) ExecScanReScan(&node->ss); - if (node->leader == node) + /* + * Clear the tuplestore if a new scan of the underlying CTE is required. + * This implicitly resets all the tuplestore's read pointers. Note that + * multiple CTE nodes might redundantly clear the tuplestore; that's OK, + * and not unduly expensive. We'll stop taking this path as soon as + * somebody has attempted to read something from the underlying CTE + * (thereby causing its chgParam to be cleared). + */ + if (node->leader->cteplanstate->chgParam != NULL) { - /* - * The leader is responsible for clearing the tuplestore if a new scan - * of the underlying CTE is required. - */ - if (node->cteplanstate->chgParam != NULL) - { - tuplestore_clear(tuplestorestate); - node->eof_cte = false; - } - else - { - tuplestore_select_read_pointer(tuplestorestate, node->readptr); - tuplestore_rescan(tuplestorestate); - } + tuplestore_clear(tuplestorestate); + node->leader->eof_cte = false; } else { - /* Not leader, so just rewind my own pointer */ + /* + * Else, just rewind my own pointer. Either the underlying CTE + * doesn't need a rescan (and we can re-read what's in the tuplestore + * now), or somebody else already took care of it. + */ tuplestore_select_read_pointer(tuplestorestate, node->readptr); tuplestore_rescan(tuplestorestate); } diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c index 1af98c81a6..dff66a6007 100644 --- a/src/backend/executor/nodeHash.c +++ b/src/backend/executor/nodeHash.c @@ -501,7 +501,9 @@ ExecChooseHashTableSize(double ntuples, int tupwidth, bool useskew, * Both nbuckets and nbatch must be powers of 2 to make * ExecHashGetBucketAndBatch fast. We already fixed nbatch; now inflate * nbuckets to the next larger power of 2. We also force nbuckets to not - * be real small, by starting the search at 2^10. + * be real small, by starting the search at 2^10. (Note: above we made + * sure that nbuckets is not more than INT_MAX / 2, so this loop cannot + * overflow, nor can the final shift to recalculate nbuckets.) */ i = 10; while ((1 << i) < nbuckets) diff --git a/src/backend/executor/nodeLimit.c b/src/backend/executor/nodeLimit.c index 85d1a6e27f..f2d356d1f1 100644 --- a/src/backend/executor/nodeLimit.c +++ b/src/backend/executor/nodeLimit.c @@ -127,7 +127,7 @@ ExecLimit(LimitState *node) * the state machine state to record having done so. */ if (!node->noCount && - node->position >= node->offset + node->count) + node->position - node->offset >= node->count) { node->lstate = LIMIT_WINDOWEND; return NULL; diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c index 0259cbf1b7..dec94ca722 100644 --- a/src/backend/executor/nodeModifyTable.c +++ b/src/backend/executor/nodeModifyTable.c @@ -244,6 +244,14 @@ ExecInsert(TupleTableSlot *slot, if (IS_PGXC_COORDINATOR && resultRemoteRel) { ExecRemoteQueryStandard(resultRelationDesc, (RemoteQueryState *)resultRemoteRel, slot); + + /* + * PGXCTODO: If target table uses WITH OIDS, this should be set to the Oid inserted + * but Oids are not consistent among nodes in Postgres-XC, so this is set to the + * default value InvalidOid for the time being. It corrects at least tags for all + * the other INSERT commands. + */ + newId = InvalidOid; } else #endif @@ -487,6 +495,12 @@ ldelete:; rslot = ExecProcessReturning(resultRelInfo->ri_projectReturning, slot, planSlot); + /* + * Before releasing the target tuple again, make sure rslot has a + * local copy of any pass-by-reference values. + */ + ExecMaterializeSlot(rslot); + ExecClearTuple(slot); if (BufferIsValid(delbuffer)) ReleaseBuffer(delbuffer); @@ -792,6 +806,18 @@ ExecModifyTable(ModifyTableState *node) ItemPointerData tuple_ctid; HeapTupleHeader oldtuple = NULL; + /* + * This should NOT get called during EvalPlanQual; we should have passed a + * subplan tree to EvalPlanQual, instead. Use a runtime test not just + * Assert because this condition is easy to miss in testing. (Note: + * although ModifyTable should not get executed within an EvalPlanQual + * operation, we do have to allow it to be initialized and shut down in + * case it is within a CTE subplan. Hence this test must be here, not in + * ExecInitModifyTable.) + */ + if (estate->es_epqTuple != NULL) + elog(ERROR, "ModifyTable should not be called during EvalPlanQual"); + /* * If we've already completed processing, don't try to do more. We need * this test because ExecPostprocessPlan might call us an extra time, and @@ -863,7 +889,7 @@ ExecModifyTable(ModifyTableState *node) #ifdef PGXC /* Move to next remote plan */ estate->es_result_remoterel = node->mt_remoterels[node->mt_whichplan]; - remoterelstate = node->mt_plans[node->mt_whichplan]; + remoterelstate = node->mt_remoterels[node->mt_whichplan]; #endif junkfilter = resultRelInfo->ri_junkFilter; estate->es_result_relation_info = resultRelInfo; @@ -987,14 +1013,6 @@ ExecInitModifyTable(ModifyTable *node, EState *estate, int eflags) /* check for unsupported flags */ Assert(!(eflags & (EXEC_FLAG_BACKWARD | EXEC_FLAG_MARK))); - /* - * This should NOT get called during EvalPlanQual; we should have passed a - * subplan tree to EvalPlanQual, instead. Use a runtime test not just - * Assert because this condition is easy to miss in testing ... - */ - if (estate->es_epqTuple != NULL) - elog(ERROR, "ModifyTable should not be called during EvalPlanQual"); - /* * create state structure */ @@ -1054,9 +1072,13 @@ ExecInitModifyTable(ModifyTable *node, EState *estate, int eflags) * descriptors in the result relation info, so that we can add new * index entries for the tuples we add/update. We need not do this * for a DELETE, however, since deletion doesn't affect indexes. + * Also, inside an EvalPlanQual operation, the indexes might be open + * already, since we share the resultrel state with the original + * query. */ if (resultRelInfo->ri_RelationDesc->rd_rel->relhasindex && - operation != CMD_DELETE) + operation != CMD_DELETE && + resultRelInfo->ri_IndexRelationDescs == NULL) ExecOpenIndices(resultRelInfo); /* Now init the plan for this result rel */ diff --git a/src/backend/executor/nodeNestloop.c b/src/backend/executor/nodeNestloop.c index e98bc0f5a3..b479358358 100644 --- a/src/backend/executor/nodeNestloop.c +++ b/src/backend/executor/nodeNestloop.c @@ -148,6 +148,7 @@ ExecNestLoop(NestLoopState *node) prm = &(econtext->ecxt_param_exec_vals[paramno]); /* Param value should be an OUTER var */ + Assert(IsA(nlp->paramval, Var)); Assert(nlp->paramval->varno == OUTER); Assert(nlp->paramval->varattno > 0); prm->value = slot_getattr(outerTupleSlot, diff --git a/src/backend/executor/nodeSeqscan.c b/src/backend/executor/nodeSeqscan.c index 1e566b2d50..0f3438d063 100644 --- a/src/backend/executor/nodeSeqscan.c +++ b/src/backend/executor/nodeSeqscan.c @@ -28,7 +28,6 @@ #include "access/relscan.h" #include "executor/execdebug.h" #include "executor/nodeSeqscan.h" -#include "storage/predicate.h" static void InitScanRelation(SeqScanState *node, EState *estate); static TupleTableSlot *SeqNext(SeqScanState *node); @@ -106,15 +105,11 @@ SeqRecheck(SeqScanState *node, TupleTableSlot *slot) * tuple. * We call the ExecScan() routine and pass it the appropriate * access method functions. - * For serializable transactions, we first acquire a predicate - * lock on the entire relation. * ---------------------------------------------------------------- */ TupleTableSlot * ExecSeqScan(SeqScanState *node) { - PredicateLockRelation(node->ss_currentRelation); - node->ss_currentScanDesc->rs_relpredicatelocked = true; return ExecScan((ScanState *) node, (ExecScanAccessMtd) SeqNext, (ExecScanRecheckMtd) SeqRecheck); diff --git a/src/backend/executor/nodeSubplan.c b/src/backend/executor/nodeSubplan.c index 0e12bb5afb..b7a644ed30 100644 --- a/src/backend/executor/nodeSubplan.c +++ b/src/backend/executor/nodeSubplan.c @@ -44,7 +44,8 @@ static Datum ExecScanSubPlan(SubPlanState *node, ExprContext *econtext, bool *isNull); static void buildSubPlanHash(SubPlanState *node, ExprContext *econtext); -static bool findPartialMatch(TupleHashTable hashtable, TupleTableSlot *slot); +static bool findPartialMatch(TupleHashTable hashtable, TupleTableSlot *slot, + FmgrInfo *eqfunctions); static bool slotAllNulls(TupleTableSlot *slot); static bool slotNoNulls(TupleTableSlot *slot); @@ -151,7 +152,7 @@ ExecHashSubPlan(SubPlanState *node, return BoolGetDatum(true); } if (node->havenullrows && - findPartialMatch(node->hashnulls, slot)) + findPartialMatch(node->hashnulls, slot, node->cur_eq_funcs)) { ExecClearTuple(slot); *isNull = true; @@ -184,14 +185,14 @@ ExecHashSubPlan(SubPlanState *node, } /* Scan partly-null table first, since more likely to get a match */ if (node->havenullrows && - findPartialMatch(node->hashnulls, slot)) + findPartialMatch(node->hashnulls, slot, node->cur_eq_funcs)) { ExecClearTuple(slot); *isNull = true; return BoolGetDatum(false); } if (node->havehashrows && - findPartialMatch(node->hashtable, slot)) + findPartialMatch(node->hashtable, slot, node->cur_eq_funcs)) { ExecClearTuple(slot); *isNull = true; @@ -571,9 +572,13 @@ buildSubPlanHash(SubPlanState *node, ExprContext *econtext) * We have to scan the whole hashtable; we can't usefully use hashkeys * to guide probing, since we might get partial matches on tuples with * hashkeys quite unrelated to what we'd get from the given tuple. + * + * Caller must provide the equality functions to use, since in cross-type + * cases these are different from the hashtable's internal functions. */ static bool -findPartialMatch(TupleHashTable hashtable, TupleTableSlot *slot) +findPartialMatch(TupleHashTable hashtable, TupleTableSlot *slot, + FmgrInfo *eqfunctions) { int numCols = hashtable->numCols; AttrNumber *keyColIdx = hashtable->keyColIdx; @@ -586,7 +591,7 @@ findPartialMatch(TupleHashTable hashtable, TupleTableSlot *slot) ExecStoreMinimalTuple(entry->firstTuple, hashtable->tableslot, false); if (!execTuplesUnequal(slot, hashtable->tableslot, numCols, keyColIdx, - hashtable->cur_eq_funcs, + eqfunctions, hashtable->tempcxt)) { TermTupleHashIterator(&hashiter); @@ -668,6 +673,7 @@ ExecInitSubPlan(SubPlan *subplan, PlanState *parent) * initialize my state */ sstate->curTuple = NULL; + sstate->curArray = PointerGetDatum(NULL); sstate->projLeft = NULL; sstate->projRight = NULL; sstate->hashtable = NULL; @@ -994,16 +1000,23 @@ ExecSetParamPlan(SubPlanState *node, ExprContext *econtext) int paramid = linitial_int(subplan->setParam); ParamExecData *prm = &(econtext->ecxt_param_exec_vals[paramid]); - prm->execPlan = NULL; - /* We build the result in query context so it won't disappear */ + /* + * We build the result array in query context so it won't disappear; + * to avoid leaking memory across repeated calls, we have to remember + * the latest value, much as for curTuple above. + */ + if (node->curArray != PointerGetDatum(NULL)) + pfree(DatumGetPointer(node->curArray)); if (astate != NULL) - prm->value = makeArrayResult(astate, - econtext->ecxt_per_query_memory); + node->curArray = makeArrayResult(astate, + econtext->ecxt_per_query_memory); else { MemoryContextSwitchTo(econtext->ecxt_per_query_memory); - prm->value = PointerGetDatum(construct_empty_array(subplan->firstColType)); + node->curArray = PointerGetDatum(construct_empty_array(subplan->firstColType)); } + prm->execPlan = NULL; + prm->value = node->curArray; prm->isnull = false; } else if (!found) diff --git a/src/backend/foreign/foreign.c b/src/backend/foreign/foreign.c index 4a7b2c30cf..269a9ad82f 100644 --- a/src/backend/foreign/foreign.c +++ b/src/backend/foreign/foreign.c @@ -371,8 +371,17 @@ deflist_to_tuplestore(ReturnSetInfo *rsinfo, List *options) DefElem *def = lfirst(cell); values[0] = CStringGetTextDatum(def->defname); - values[1] = CStringGetTextDatum(((Value *) def->arg)->val.str); - nulls[0] = nulls[1] = false; + nulls[0] = false; + if (def->arg) + { + values[1] = CStringGetTextDatum(((Value *) (def->arg))->val.str); + nulls[1] = false; + } + else + { + values[1] = (Datum) 0; + nulls[1] = true; + } tuplestore_putvalues(tupstore, tupdesc, values, nulls); } diff --git a/src/backend/libpq/auth.c b/src/backend/libpq/auth.c index 778849e434..03fe1846d2 100644 --- a/src/backend/libpq/auth.c +++ b/src/backend/libpq/auth.c @@ -443,6 +443,17 @@ ClientAuthentication(Port *port) NULL, 0, NI_NUMERICHOST); +#define HOSTNAME_LOOKUP_DETAIL(port) \ + (port->remote_hostname \ + ? (port->remote_hostname_resolv == +1 \ + ? errdetail_log("Client IP address resolved to \"%s\", forward lookup matches.", port->remote_hostname) \ + : (port->remote_hostname_resolv == 0 \ + ? errdetail_log("Client IP address resolved to \"%s\", forward lookup not checked.", port->remote_hostname) \ + : (port->remote_hostname_resolv == -1 \ + ? errdetail_log("Client IP address resolved to \"%s\", forward lookup does not match.", port->remote_hostname) \ + : 0))) \ + : 0) + if (am_walsender) { #ifdef USE_SSL @@ -450,12 +461,14 @@ ClientAuthentication(Port *port) (errcode(ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION), errmsg("no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\", %s", hostinfo, port->user_name, - port->ssl ? _("SSL on") : _("SSL off")))); + port->ssl ? _("SSL on") : _("SSL off")), + HOSTNAME_LOOKUP_DETAIL(port))); #else ereport(FATAL, (errcode(ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION), errmsg("no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\"", - hostinfo, port->user_name))); + hostinfo, port->user_name), + HOSTNAME_LOOKUP_DETAIL(port))); #endif } else @@ -466,13 +479,15 @@ ClientAuthentication(Port *port) errmsg("no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s", hostinfo, port->user_name, port->database_name, - port->ssl ? _("SSL on") : _("SSL off")))); + port->ssl ? _("SSL on") : _("SSL off")), + HOSTNAME_LOOKUP_DETAIL(port))); #else ereport(FATAL, (errcode(ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION), errmsg("no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\"", hostinfo, port->user_name, - port->database_name))); + port->database_name), + HOSTNAME_LOOKUP_DETAIL(port))); #endif } break; @@ -959,7 +974,7 @@ pg_GSS_error(int severity, char *errmsg, OM_uint32 maj_stat, OM_uint32 min_stat) */ ereport(severity, (errmsg_internal("%s", errmsg), - errdetail("%s: %s", msg_major, msg_minor))); + errdetail_internal("%s: %s", msg_major, msg_minor))); } static int @@ -1202,11 +1217,11 @@ pg_SSPI_error(int severity, const char *errmsg, SECURITY_STATUS r) sysmsg, sizeof(sysmsg), NULL) == 0) ereport(severity, (errmsg_internal("%s", errmsg), - errdetail("SSPI error %x", (unsigned int) r))); + errdetail_internal("SSPI error %x", (unsigned int) r))); else ereport(severity, (errmsg_internal("%s", errmsg), - errdetail("%s (%x)", sysmsg, (unsigned int) r))); + errdetail_internal("%s (%x)", sysmsg, (unsigned int) r))); } static int @@ -1353,16 +1368,22 @@ pg_SSPI_recvauth(Port *port) _("could not accept SSPI security context"), r); } + /* + * Overwrite the current context with the one we just received. + * If sspictx is NULL it was the first loop and we need to allocate + * a buffer for it. On subsequent runs, we can just overwrite the + * buffer contents since the size does not change. + */ if (sspictx == NULL) { sspictx = malloc(sizeof(CtxtHandle)); if (sspictx == NULL) ereport(ERROR, (errmsg("out of memory"))); - - memcpy(sspictx, &newctx, sizeof(CtxtHandle)); } + memcpy(sspictx, &newctx, sizeof(CtxtHandle)); + if (r == SEC_I_CONTINUE_NEEDED) elog(DEBUG4, "SSPI continue needed"); @@ -1436,7 +1457,7 @@ pg_SSPI_recvauth(Port *port) if (!LookupAccountSid(NULL, tokenuser->User.Sid, accountname, &accountnamesize, domainname, &domainnamesize, &accountnameuse)) ereport(ERROR, - (errmsg_internal("could not lookup acconut sid: error code %d", + (errmsg_internal("could not look up account SID: error code %d", (int) GetLastError()))); free(tokenuser); diff --git a/src/backend/libpq/be-secure.c b/src/backend/libpq/be-secure.c index 437a0c79b0..222add09db 100644 --- a/src/backend/libpq/be-secure.c +++ b/src/backend/libpq/be-secure.c @@ -73,6 +73,7 @@ #include "libpq/libpq.h" #include "tcop/tcopprot.h" +#include "utils/memutils.h" #ifdef USE_SSL @@ -410,7 +411,10 @@ secure_write(Port *port, void *ptr, size_t len) * non-reentrant libc facilities. We also need to call send() and recv() * directly so it gets passed through the socket/signals layer on Win32. * - * They are closely modelled on the original socket implementations in OpenSSL. + * These functions are closely modelled on the standard socket BIO in OpenSSL; + * see sock_read() and sock_write() in OpenSSL's crypto/bio/bss_sock.c. + * XXX OpenSSL 1.0.1e considers many more errcodes than just EINTR as reasons + * to retry; do we need to adopt their logic for that? */ static bool my_bio_initialized = false; @@ -448,6 +452,7 @@ my_sock_write(BIO *h, const char *buf, int size) int res = 0; res = send(h->num, buf, size, 0); + BIO_clear_retry_flags(h); if (res <= 0) { if (errno == EINTR) @@ -644,7 +649,7 @@ tmp_dh_cb(SSL *s, int is_export, int keylength) if (r == NULL || 8 * DH_size(r) < keylength) { ereport(DEBUG2, - (errmsg_internal("DH: generating parameters (%d bits)....", + (errmsg_internal("DH: generating parameters (%d bits)", keylength))); r = DH_generate_parameters(keylength, DH_GENERATOR_2, NULL, NULL); } @@ -736,6 +741,12 @@ initialize_SSL(void) (errmsg("could not create SSL context: %s", SSLerrmessage()))); + /* + * Disable OpenSSL's moving-write-buffer sanity check, because it + * causes unnecessary failures in nonblocking send cases. + */ + SSL_CTX_set_mode(SSL_context, SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER); + /* * Load and verify server's certificate and private key */ @@ -958,44 +969,54 @@ open_server_SSL(Port *port) port->count = 0; - /* get client certificate, if available. */ + /* Get client certificate, if available. */ port->peer = SSL_get_peer_certificate(port->ssl); - if (port->peer == NULL) - { - strlcpy(port->peer_dn, "(anonymous)", sizeof(port->peer_dn)); - strlcpy(port->peer_cn, "(anonymous)", sizeof(port->peer_cn)); - } - else + + /* and extract the Common Name from it. */ + port->peer_cn = NULL; + if (port->peer != NULL) { - X509_NAME_oneline(X509_get_subject_name(port->peer), - port->peer_dn, sizeof(port->peer_dn)); - port->peer_dn[sizeof(port->peer_dn) - 1] = '\0'; - r = X509_NAME_get_text_by_NID(X509_get_subject_name(port->peer), - NID_commonName, port->peer_cn, sizeof(port->peer_cn)); - port->peer_cn[sizeof(port->peer_cn) - 1] = '\0'; - if (r == -1) - { - /* Unable to get the CN, set it to blank so it can't be used */ - port->peer_cn[0] = '\0'; - } - else + int len; + + len = X509_NAME_get_text_by_NID(X509_get_subject_name(port->peer), + NID_commonName, NULL, 0); + if (len != -1) { + char *peer_cn; + + peer_cn = MemoryContextAlloc(TopMemoryContext, len + 1); + r = X509_NAME_get_text_by_NID(X509_get_subject_name(port->peer), + NID_commonName, peer_cn, len + 1); + peer_cn[len] = '\0'; + if (r != len) + { + /* shouldn't happen */ + pfree(peer_cn); + close_SSL(port); + return -1; + } + /* * Reject embedded NULLs in certificate common name to prevent * attacks like CVE-2009-4034. */ - if (r != strlen(port->peer_cn)) + if (len != strlen(peer_cn)) { ereport(COMMERROR, (errcode(ERRCODE_PROTOCOL_VIOLATION), errmsg("SSL certificate's common name contains embedded null"))); + pfree(peer_cn); close_SSL(port); return -1; } + + port->peer_cn = peer_cn; } } + ereport(DEBUG2, - (errmsg("SSL connection from \"%s\"", port->peer_cn))); + (errmsg("SSL connection from \"%s\"", + port->peer_cn ? port->peer_cn : "(anonymous)"))); /* set up debugging/info callback */ SSL_CTX_set_info_callback(SSL_context, info_cb); @@ -1021,6 +1042,12 @@ close_SSL(Port *port) X509_free(port->peer); port->peer = NULL; } + + if (port->peer_cn) + { + pfree(port->peer_cn); + port->peer_cn = NULL; + } } /* diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c index b83a2efb69..c79c846a66 100644 --- a/src/backend/libpq/pqcomm.c +++ b/src/backend/libpq/pqcomm.c @@ -493,6 +493,14 @@ static int Lock_AF_UNIX(unsigned short portNumber, char *unixSocketName) { UNIXSOCK_PATH(sock_path, portNumber, unixSocketName); + if (strlen(sock_path) >= UNIXSOCK_PATH_BUFLEN) + { + ereport(LOG, + (errmsg("Unix-domain socket path \"%s\" is too long (maximum %d bytes)", + sock_path, + (int) (UNIXSOCK_PATH_BUFLEN - 1)))); + return STATUS_ERROR; + } /* * Grab an interlock file associated with the socket file. diff --git a/src/backend/main/main.c b/src/backend/main/main.c index b689204f34..4be3b33035 100644 --- a/src/backend/main/main.c +++ b/src/backend/main/main.c @@ -39,6 +39,7 @@ #include "postmaster/postmaster.h" #include "tcop/tcopprot.h" #include "utils/help_config.h" +#include "utils/memutils.h" #include "utils/pg_locale.h" #include "utils/ps_status.h" #ifdef WIN32 @@ -89,6 +90,15 @@ main(int argc, char *argv[]) pgwin32_install_crashdump_handler(); #endif + /* + * Fire up essential subsystems: error and memory management + * + * Code after this point is allowed to use elog/ereport, though + * localization of messages may not work right away, and messages won't go + * anywhere but stderr until GUC settings get loaded. + */ + MemoryContextInit(); + /* * Set up locale information from environment. Note that LC_CTYPE and * LC_COLLATE will be overridden later from pg_control if we are in an @@ -194,7 +204,7 @@ main(int argc, char *argv[]) exit(GucInfoMain()); if (argc > 1 && strcmp(argv[1], "--single") == 0) - exit(PostgresMain(argc, argv, get_current_username(progname))); + exit(PostgresMain(argc, argv, NULL, get_current_username(progname))); exit(PostmasterMain(argc, argv)); } diff --git a/src/backend/nls.mk b/src/backend/nls.mk index 18945692cd..a822edbcb4 100644 --- a/src/backend/nls.mk +++ b/src/backend/nls.mk @@ -1,6 +1,6 @@ # src/backend/nls.mk CATALOG_NAME := postgres -AVAIL_LANGUAGES := de es fr ja pt_BR tr zh_CN zh_TW +AVAIL_LANGUAGES := de es fr it ja pl pt_BR ru zh_CN zh_TW GETTEXT_FILES := + gettext-files GETTEXT_TRIGGERS:= _ errmsg errmsg_plural:1,2 errdetail errdetail_log \ errdetail_plural:1,2 errhint errcontext \ diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c index 7fbb9b3dd7..1a955b9008 100644 --- a/src/backend/nodes/copyfuncs.c +++ b/src/backend/nodes/copyfuncs.c @@ -13,7 +13,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * IDENTIFICATION * src/backend/nodes/copyfuncs.c @@ -1035,6 +1035,7 @@ _copyRemoteQuery(RemoteQuery *from) COPY_STRING_FIELD(inner_statement); COPY_STRING_FIELD(outer_statement); COPY_STRING_FIELD(join_condition); + COPY_SCALAR_FIELD(has_row_marks); return newnode; } @@ -2463,6 +2464,7 @@ _copyConstraint(Constraint *from) COPY_SCALAR_FIELD(fk_del_action); COPY_SCALAR_FIELD(skip_validation); COPY_SCALAR_FIELD(initially_valid); + COPY_SCALAR_FIELD(old_pktable_oid); return newnode; } @@ -3860,7 +3862,7 @@ _copyReassignOwnedStmt(ReassignOwnedStmt *from) ReassignOwnedStmt *newnode = makeNode(ReassignOwnedStmt); COPY_NODE_FIELD(roles); - COPY_SCALAR_FIELD(newrole); + COPY_STRING_FIELD(newrole); return newnode; } @@ -3967,6 +3969,10 @@ _copyValue(Value *from) } #ifdef PGXC +/* **************************************************************** + * barrier.h copy functions + * **************************************************************** + */ static BarrierStmt * _copyBarrierStmt(BarrierStmt *from) { @@ -3976,6 +3982,85 @@ _copyBarrierStmt(BarrierStmt *from) return newnode; } + +/* **************************************************************** + * nodemgr.h copy functions + * **************************************************************** + */ +static AlterNodeStmt * +_copyAlterNodeStmt(const AlterNodeStmt *from) +{ + AlterNodeStmt *newnode = makeNode(AlterNodeStmt); + + COPY_STRING_FIELD(node_name); + COPY_NODE_FIELD(options); + + return newnode; +} + +static CreateNodeStmt * +_copyCreateNodeStmt(const CreateNodeStmt *from) +{ + CreateNodeStmt *newnode = makeNode(CreateNodeStmt); + + COPY_STRING_FIELD(node_name); + COPY_NODE_FIELD(options); + + return newnode; +} + +static DropNodeStmt * +_copyDropNodeStmt(const DropNodeStmt *from) +{ + DropNodeStmt *newnode = makeNode(DropNodeStmt); + + COPY_STRING_FIELD(node_name); + + return newnode; +} + +/* **************************************************************** + * groupmgr.h copy functions + * **************************************************************** + */ +static CreateGroupStmt * +_copyCreateGroupStmt(const CreateGroupStmt *from) +{ + CreateGroupStmt *newnode = makeNode(CreateGroupStmt); + + COPY_STRING_FIELD(group_name); + COPY_NODE_FIELD(nodes); + + return newnode; +} + +static DropGroupStmt * +_copyDropGroupStmt(const DropGroupStmt *from) +{ + DropGroupStmt *newnode = makeNode(DropGroupStmt); + + COPY_STRING_FIELD(group_name); + + return newnode; +} + +/* **************************************************************** + * poolutils.h copy functions + * **************************************************************** + */ +static CleanConnStmt * +_copyCleanConnStmt(const CleanConnStmt *from) +{ + CleanConnStmt *newnode = makeNode(CleanConnStmt); + + COPY_NODE_FIELD(nodes); + COPY_STRING_FIELD(dbname); + COPY_STRING_FIELD(username); + COPY_SCALAR_FIELD(is_coord); + COPY_SCALAR_FIELD(is_force); + + return newnode; +} #endif /* @@ -4596,6 +4681,24 @@ copyObject(void *from) case T_BarrierStmt: retval = _copyBarrierStmt(from); break; + case T_AlterNodeStmt: + retval = _copyAlterNodeStmt(from); + break; + case T_CreateNodeStmt: + retval = _copyCreateNodeStmt(from); + break; + case T_DropNodeStmt: + retval = _copyDropNodeStmt(from); + break; + case T_CreateGroupStmt: + retval = _copyCreateGroupStmt(from); + break; + case T_DropGroupStmt: + retval = _copyDropGroupStmt(from); + break; + case T_CleanConnStmt: + retval = _copyCleanConnStmt(from); + break; #endif case T_CreateSchemaStmt: retval = _copyCreateSchemaStmt(from); diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c index cc07607682..a04749636d 100644 --- a/src/backend/nodes/equalfuncs.c +++ b/src/backend/nodes/equalfuncs.c @@ -20,7 +20,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * IDENTIFICATION * src/backend/nodes/equalfuncs.c @@ -2014,7 +2014,7 @@ static bool _equalReassignOwnedStmt(ReassignOwnedStmt *a, ReassignOwnedStmt *b) { COMPARE_NODE_FIELD(roles); - COMPARE_NODE_FIELD(newrole); + COMPARE_STRING_FIELD(newrole); return true; } @@ -2280,6 +2280,7 @@ _equalConstraint(Constraint *a, Constraint *b) COMPARE_SCALAR_FIELD(fk_del_action); COMPARE_SCALAR_FIELD(skip_validation); COMPARE_SCALAR_FIELD(initially_valid); + COMPARE_SCALAR_FIELD(old_pktable_oid); return true; } @@ -2515,6 +2516,67 @@ _equalBarrierStmt(BarrierStmt *a, BarrierStmt *b) COMPARE_STRING_FIELD(id); return true; } + +/* + * stuff from nodemgr.h + */ + +static bool +_equalAlterNodeStmt(const AlterNodeStmt *a, const AlterNodeStmt *b) +{ + COMPARE_STRING_FIELD(node_name); + COMPARE_NODE_FIELD(options); + return true; +} + +static bool +_equalCreateNodeStmt(const CreateNodeStmt *a, const CreateNodeStmt *b) +{ + COMPARE_STRING_FIELD(node_name); + COMPARE_NODE_FIELD(options); + return true; +} + +static bool +_equalDropNodeStmt(const DropNodeStmt *a, const DropNodeStmt *b) +{ + COMPARE_STRING_FIELD(node_name); + return true; +} + +/* + * stuff from groupmgr.h + */ + +static bool +_equalCreateGroupStmt(const CreateGroupStmt *a, const CreateGroupStmt *b) +{ + COMPARE_STRING_FIELD(group_name); + COMPARE_NODE_FIELD(nodes); + return true; +} + +static bool +_equalDropGroupStmt(const DropGroupStmt *a, const DropGroupStmt *b) +{ + COMPARE_STRING_FIELD(group_name); + return true; +} + +/* + * stuff from poolutils.h + */ +static bool +_equalCleanConnStmt(const CleanConnStmt *a, const CleanConnStmt *b) +{ + COMPARE_NODE_FIELD(nodes); + COMPARE_STRING_FIELD(dbname); + COMPARE_STRING_FIELD(username); + COMPARE_SCALAR_FIELD(is_coord); + COMPARE_SCALAR_FIELD(is_force); + return true; +} + #endif /* @@ -2992,6 +3054,24 @@ equal(void *a, void *b) case T_BarrierStmt: retval = _equalBarrierStmt(a, b); break; + case T_AlterNodeStmt: + retval = _equalAlterNodeStmt(a, b); + break; + case T_CreateNodeStmt: + retval = _equalCreateNodeStmt(a, b); + break; + case T_DropNodeStmt: + retval = _equalDropNodeStmt(a, b); + break; + case T_CreateGroupStmt: + retval = _equalCreateGroupStmt(a, b); + break; + case T_DropGroupStmt: + retval = _equalDropGroupStmt(a, b); + break; + case T_CleanConnStmt: + retval = _equalCleanConnStmt(a, b); + break; #endif case T_CreateSchemaStmt: retval = _equalCreateSchemaStmt(a, b); diff --git a/src/backend/nodes/makefuncs.c b/src/backend/nodes/makefuncs.c index c185446069..9adb6e155b 100644 --- a/src/backend/nodes/makefuncs.c +++ b/src/backend/nodes/makefuncs.c @@ -121,11 +121,17 @@ makeVarFromTargetEntry(Index varno, * with error cases, but it's not worth changing now.) The vartype indicates * a rowtype; either a named composite type, or RECORD. This function * encapsulates the logic for determining the correct rowtype OID to use. + * + * If allowScalar is true, then for the case where the RTE is a function + * returning a non-composite result type, we produce a normal Var referencing + * the function's result directly, instead of the single-column composite + * value that the whole-row notation might otherwise suggest. */ Var * makeWholeRowVar(RangeTblEntry *rte, Index varno, - Index varlevelsup) + Index varlevelsup, + bool allowScalar) { Var *result; Oid toid; @@ -157,18 +163,23 @@ makeWholeRowVar(RangeTblEntry *rte, InvalidOid, varlevelsup); } - else + else if (allowScalar) { - /* - * func returns scalar; instead of making a whole-row Var, - * just reference the function's scalar output. (XXX this - * seems a tad inconsistent, especially if "f.*" was - * explicitly written ...) - */ + /* func returns scalar; just return its output as-is */ result = makeVar(varno, 1, toid, -1, + exprCollation(rte->funcexpr), + varlevelsup); + } + else + { + /* func returns scalar, but we want a composite result */ + result = makeVar(varno, + InvalidAttrNumber, + RECORDOID, + -1, InvalidOid, varlevelsup); } @@ -191,10 +202,10 @@ makeWholeRowVar(RangeTblEntry *rte, default: /* - * RTE is a join or subselect. We represent this as a whole-row - * Var of RECORD type. (Note that in most cases the Var will be - * expanded to a RowExpr during planning, but that is not our - * concern here.) + * RTE is a join, subselect, or VALUES. We represent this as a + * whole-row Var of RECORD type. (Note that in most cases the Var + * will be expanded to a RowExpr during planning, but that is not + * our concern here.) */ result = makeVar(varno, InvalidAttrNumber, diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index 6ada84d93e..47b384646c 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -477,6 +477,7 @@ _outRemoteQuery(StringInfo str, RemoteQuery *node) WRITE_INT_FIELD(num_params); WRITE_ENUM_FIELD(exec_type, RemoteQueryExecType); WRITE_BOOL_FIELD(is_temp); + WRITE_BOOL_FIELD(has_row_marks); } static void @@ -1704,7 +1705,6 @@ _outPlannerGlobal(StringInfo str, PlannerGlobal *node) WRITE_NODE_TYPE("PLANNERGLOBAL"); /* NB: this isn't a complete set of fields */ - WRITE_NODE_FIELD(paramlist); WRITE_NODE_FIELD(subplans); WRITE_NODE_FIELD(subrtables); WRITE_NODE_FIELD(subrowmarks); @@ -1714,6 +1714,7 @@ _outPlannerGlobal(StringInfo str, PlannerGlobal *node) WRITE_NODE_FIELD(resultRelations); WRITE_NODE_FIELD(relationOids); WRITE_NODE_FIELD(invalItems); + WRITE_INT_FIELD(nParamExec); WRITE_UINT_FIELD(lastPHId); WRITE_UINT_FIELD(lastRowMarkId); WRITE_BOOL_FIELD(transientPlan); @@ -1728,6 +1729,7 @@ _outPlannerInfo(StringInfo str, PlannerInfo *node) WRITE_NODE_FIELD(parse); WRITE_NODE_FIELD(glob); WRITE_UINT_FIELD(query_level); + WRITE_NODE_FIELD(plan_params); WRITE_NODE_FIELD(join_rel_list); WRITE_INT_FIELD(join_cur_level); WRITE_NODE_FIELD(init_plans); @@ -1813,6 +1815,7 @@ _outIndexOptInfo(StringInfo str, IndexOptInfo *node) WRITE_NODE_FIELD(indpred); WRITE_BOOL_FIELD(predOK); WRITE_BOOL_FIELD(unique); + WRITE_BOOL_FIELD(immediate); WRITE_BOOL_FIELD(hypothetical); } @@ -1848,6 +1851,7 @@ _outEquivalenceMember(StringInfo str, EquivalenceMember *node) WRITE_NODE_FIELD(em_expr); WRITE_BITMAPSET_FIELD(em_relids); + WRITE_BITMAPSET_FIELD(em_nullable_relids); WRITE_BOOL_FIELD(em_is_const); WRITE_BOOL_FIELD(em_is_child); WRITE_OID_FIELD(em_datatype); @@ -1975,7 +1979,7 @@ _outPlannerParamItem(StringInfo str, PlannerParamItem *node) WRITE_NODE_TYPE("PLANNERPARAMITEM"); WRITE_NODE_FIELD(item); - WRITE_UINT_FIELD(abslevel); + WRITE_INT_FIELD(paramId); } /***************************************************************************** @@ -2684,6 +2688,7 @@ _outConstraint(StringInfo str, Constraint *node) WRITE_CHAR_FIELD(fk_del_action); WRITE_BOOL_FIELD(skip_validation); WRITE_BOOL_FIELD(initially_valid); + WRITE_OID_FIELD(old_pktable_oid); break; case CONSTR_ATTR_DEFERRABLE: diff --git a/src/backend/nodes/print.c b/src/backend/nodes/print.c index ad673f4687..98b543a71b 100644 --- a/src/backend/nodes/print.c +++ b/src/backend/nodes/print.c @@ -82,7 +82,7 @@ elog_node_display(int lev, const char *title, void *obj, bool pretty) pfree(s); ereport(lev, (errmsg_internal("%s:", title), - errdetail("%s", f))); + errdetail_internal("%s", f))); pfree(f); } diff --git a/src/backend/nodes/readfuncs.c b/src/backend/nodes/readfuncs.c index 4e4bcf8cd1..6b339d5ad9 100644 --- a/src/backend/nodes/readfuncs.c +++ b/src/backend/nodes/readfuncs.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION diff --git a/src/backend/nodes/tidbitmap.c b/src/backend/nodes/tidbitmap.c index 33f94c03b2..a1db72f651 100644 --- a/src/backend/nodes/tidbitmap.c +++ b/src/backend/nodes/tidbitmap.c @@ -362,7 +362,7 @@ tbm_union_page(TIDBitmap *a, const PagetableEntry *bpage) if (bpage->ischunk) { /* Scan b's chunk, mark each indicated page lossy in a */ - for (wordnum = 0; wordnum < WORDS_PER_PAGE; wordnum++) + for (wordnum = 0; wordnum < WORDS_PER_CHUNK; wordnum++) { bitmapword w = bpage->words[wordnum]; @@ -474,7 +474,7 @@ tbm_intersect_page(TIDBitmap *a, PagetableEntry *apage, const TIDBitmap *b) /* Scan each bit in chunk, try to clear */ bool candelete = true; - for (wordnum = 0; wordnum < WORDS_PER_PAGE; wordnum++) + for (wordnum = 0; wordnum < WORDS_PER_CHUNK; wordnum++) { bitmapword w = apage->words[wordnum]; @@ -953,8 +953,11 @@ tbm_lossify(TIDBitmap *tbm) /* * XXX Really stupid implementation: this just lossifies pages in * essentially random order. We should be paying some attention to the - * number of bits set in each page, instead. Also it might be a good idea - * to lossify more than the minimum number of pages during each call. + * number of bits set in each page, instead. + * + * Since we are called as soon as nentries exceeds maxentries, we should + * push nentries down to significantly less than maxentries, or else we'll + * just end up doing this again very soon. We shoot for maxentries/2. */ Assert(!tbm->iterating); Assert(tbm->status == TBM_HASH); @@ -975,7 +978,7 @@ tbm_lossify(TIDBitmap *tbm) /* This does the dirty work ... */ tbm_mark_page_lossy(tbm, page->blockno); - if (tbm->nentries <= tbm->maxentries) + if (tbm->nentries <= tbm->maxentries / 2) { /* we have done enough */ hash_seq_term(&status); @@ -988,6 +991,19 @@ tbm_lossify(TIDBitmap *tbm) * not care whether we visit lossy chunks or not. */ } + + /* + * With a big bitmap and small work_mem, it's possible that we cannot + * get under maxentries. Again, if that happens, we'd end up uselessly + * calling tbm_lossify over and over. To prevent this from becoming a + * performance sink, force maxentries up to at least double the current + * number of entries. (In essence, we're admitting inability to fit + * within work_mem when we do this.) Note that this test will not fire + * if we broke out of the loop early; and if we didn't, the current + * number of entries is simply not reducible any further. + */ + if (tbm->nentries > tbm->maxentries / 2) + tbm->maxentries = Min(tbm->nentries, (INT_MAX - 1) / 2) * 2; } /* diff --git a/src/backend/optimizer/README b/src/backend/optimizer/README index aaa754cbb1..b1d47e06b5 100644 --- a/src/backend/optimizer/README +++ b/src/backend/optimizer/README @@ -496,6 +496,14 @@ it's possible that it belongs to more than one. We keep track of all the families to ensure that we can make use of an index belonging to any one of the families for mergejoin purposes.) +An EquivalenceClass can contain "em_is_child" members, which are copies +of members that contain appendrel parent relation Vars, transposed to +contain the equivalent child-relation variables or expressions. These +members are *not* full-fledged members of the EquivalenceClass and do not +affect the class's overall properties at all. They are kept only to +simplify matching of child-relation expressions to EquivalenceClasses. +Most operations on EquivalenceClasses should ignore child members. + PathKeys -------- diff --git a/src/backend/optimizer/path/allpaths.c b/src/backend/optimizer/path/allpaths.c index f3e28ffc40..67863a09f5 100644 --- a/src/backend/optimizer/path/allpaths.c +++ b/src/backend/optimizer/path/allpaths.c @@ -75,13 +75,14 @@ static void set_foreign_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 *differentTypes); + bool *unsafeColumns); static bool recurse_pushdown_safe(Node *setOp, Query *topquery, - bool *differentTypes); + bool *unsafeColumns); +static void check_output_expressions(Query *subquery, bool *unsafeColumns); static void compare_tlist_datatypes(List *tlist, List *colTypes, - bool *differentTypes); + bool *unsafeColumns); static bool qual_is_pushdown_safe(Query *subquery, Index rti, Node *qual, - bool *differentTypes); + bool *unsafeColumns); static void subquery_push_qual(Query *subquery, RangeTblEntry *rte, Index rti, Node *qual); static void recurse_push_qual(Node *setOp, Query *topquery, @@ -278,7 +279,7 @@ set_plain_rel_pathlist(PlannerInfo *root, RelOptInfo *rel, RangeTblEntry *rte) #ifdef PGXC /* - * If we are on the coordinator, we always want to use + * If we are on the Coordinator, we always want to use * the remote query path unless it is a pg_catalog table * or a sequence relation. */ @@ -428,7 +429,15 @@ set_append_rel_pathlist(PlannerInfo *root, RelOptInfo *rel, continue; } - /* CE failed, so finish copying targetlist and join quals */ + /* + * CE failed, so finish copying/modifying targetlist and join quals. + * + * Note: the resulting childrel->reltargetlist may contain arbitrary + * expressions, which normally would not occur in a reltargetlist. + * That is okay because nothing outside of this routine will look at + * the child rel's reltargetlist. We do have to cope with the case + * while constructing attr_widths estimates below, though. + */ childrel->joininfo = (List *) adjust_appendrel_attrs((Node *) rel->joininfo, appinfo); @@ -511,23 +520,36 @@ set_append_rel_pathlist(PlannerInfo *root, RelOptInfo *rel, 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) { Var *parentvar = (Var *) lfirst(parentvars); - Var *childvar = (Var *) lfirst(childvars); - - /* - * Accumulate per-column estimates too. Whole-row Vars and - * PlaceHolderVars can be ignored here. - */ - if (IsA(parentvar, Var) && - IsA(childvar, Var)) + Node *childvar = (Node *) lfirst(childvars); + + if (IsA(parentvar, Var)) { int pndx = parentvar->varattno - rel->min_attr; - int cndx = childvar->varattno - childrel->min_attr; - - parent_attrsizes[pndx] += childrel->attr_widths[cndx] * childrel->rows; + int32 child_width = 0; + + if (IsA(childvar, Var)) + { + 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; } } } @@ -709,7 +731,7 @@ set_subquery_pathlist(PlannerInfo *root, RelOptInfo *rel, { Query *parse = root->parse; Query *subquery = rte->subquery; - bool *differentTypes; + bool *unsafeColumns; double tuple_fraction; PlannerInfo *subroot; List *pathkeys; @@ -721,8 +743,12 @@ set_subquery_pathlist(PlannerInfo *root, RelOptInfo *rel, */ subquery = copyObject(subquery); - /* We need a workspace for keeping track of set-op type coercions */ - differentTypes = (bool *) + /* + * 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. + */ + unsafeColumns = (bool *) palloc0((list_length(subquery->targetList) + 1) * sizeof(bool)); /* @@ -746,7 +772,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, differentTypes)) + subquery_is_pushdown_safe(subquery, subquery, unsafeColumns)) { /* OK to consider pushing down individual quals */ List *upperrestrictlist = NIL; @@ -758,7 +784,7 @@ set_subquery_pathlist(PlannerInfo *root, RelOptInfo *rel, Node *clause = (Node *) rinfo->clause; if (!rinfo->pseudoconstant && - qual_is_pushdown_safe(subquery, rti, clause, differentTypes)) + qual_is_pushdown_safe(subquery, rti, clause, unsafeColumns)) { /* Push it down */ subquery_push_qual(subquery, rte, rti, clause); @@ -772,7 +798,7 @@ set_subquery_pathlist(PlannerInfo *root, RelOptInfo *rel, rel->baserestrictinfo = upperrestrictlist; } - pfree(differentTypes); + pfree(unsafeColumns); /* * We can safely pass the outer tuple_fraction down to the subquery if the @@ -790,6 +816,9 @@ set_subquery_pathlist(PlannerInfo *root, RelOptInfo *rel, else tuple_fraction = root->tuple_fraction; + /* plan_params should not be in use in current query level */ + Assert(root->plan_params == NIL); + /* Generate the plan for the subquery */ rel->subplan = subquery_planner(root->glob, subquery, root, @@ -798,6 +827,13 @@ set_subquery_pathlist(PlannerInfo *root, RelOptInfo *rel, rel->subrtable = subroot->parse->rtable; rel->subrowmark = subroot->rowMarks; + /* + * Since we don't yet support LATERAL, it should not be possible for the + * sub-query to have requested parameters of this level. + */ + if (root->plan_params) + elog(ERROR, "unexpected outer reference in subquery in FROM"); + /* Mark rel with estimated output rows, width, etc */ set_subquery_size_estimates(root, rel, subroot); @@ -1163,17 +1199,19 @@ 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. * - * 4. For subqueries using UNION/UNION ALL/INTERSECT/INTERSECT ALL, we can - * push quals into each component query, but the quals can only reference - * subquery columns that suffer no type coercions in the set operation. - * Otherwise there are possible semantic gotchas. So, we check the - * component queries to see if any of them have different output types; - * differentTypes[k] is set true if column k has different type in any - * component. + * 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 + * expressions in each arm of the set op. */ static bool subquery_is_pushdown_safe(Query *subquery, Query *topquery, - bool *differentTypes) + bool *unsafeColumns) { SetOperationStmt *topop; @@ -1185,13 +1223,22 @@ subquery_is_pushdown_safe(Query *subquery, Query *topquery, if (subquery->hasWindowFuncs) return false; + /* + * 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 + * setop trees have only simple Vars in their tlists, so no need to check + * them.) + */ + if (subquery->setOperations == NULL) + check_output_expressions(subquery, unsafeColumns); + /* Are we at top level, or looking at a setop component? */ if (subquery == topquery) { /* Top level, so check any component queries */ if (subquery->setOperations != NULL) if (!recurse_pushdown_safe(subquery->setOperations, topquery, - differentTypes)) + unsafeColumns)) return false; } else @@ -1204,7 +1251,7 @@ subquery_is_pushdown_safe(Query *subquery, Query *topquery, Assert(topop && IsA(topop, SetOperationStmt)); compare_tlist_datatypes(subquery->targetList, topop->colTypes, - differentTypes); + unsafeColumns); } return true; } @@ -1214,7 +1261,7 @@ subquery_is_pushdown_safe(Query *subquery, Query *topquery, */ static bool recurse_pushdown_safe(Node *setOp, Query *topquery, - bool *differentTypes) + bool *unsafeColumns) { if (IsA(setOp, RangeTblRef)) { @@ -1223,19 +1270,19 @@ recurse_pushdown_safe(Node *setOp, Query *topquery, Query *subquery = rte->subquery; Assert(subquery != NULL); - return subquery_is_pushdown_safe(subquery, topquery, differentTypes); + return subquery_is_pushdown_safe(subquery, topquery, unsafeColumns); } else if (IsA(setOp, SetOperationStmt)) { SetOperationStmt *op = (SetOperationStmt *) setOp; - /* EXCEPT is no good */ + /* EXCEPT is no good (point 3 for subquery_is_pushdown_safe) */ if (op->op == SETOP_EXCEPT) return false; /* Else recurse */ - if (!recurse_pushdown_safe(op->larg, topquery, differentTypes)) + if (!recurse_pushdown_safe(op->larg, topquery, unsafeColumns)) return false; - if (!recurse_pushdown_safe(op->rarg, topquery, differentTypes)) + if (!recurse_pushdown_safe(op->rarg, topquery, unsafeColumns)) return false; } else @@ -1247,17 +1294,92 @@ recurse_pushdown_safe(Node *setOp, Query *topquery, } /* - * Compare tlist's datatypes against the list of set-operation result types. - * For any items that are different, mark the appropriate element of - * differentTypes[] to show that this column will have type conversions. + * check_output_expressions - check subquery's output expressions for safety + * + * There are several cases in which it's unsafe to push down an upper-level + * qual if it references a particular output column of a subquery. We check + * each output column of the subquery and set unsafeColumns[k] to TRUE if + * that column is unsafe for a pushed-down qual to reference. The conditions + * checked here are: + * + * 1. We must not push down any quals that refer to subselect outputs that + * return sets, else we'd introduce functions-returning-sets into the + * subquery's WHERE/HAVING quals. + * + * 2. We must not push down any quals that refer to subselect outputs that + * contain volatile functions, for fear of introducing strange results due + * to multiple evaluation of a volatile function. + * + * 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.) + */ +static void +check_output_expressions(Query *subquery, bool *unsafeColumns) +{ + ListCell *lc; + + foreach(lc, subquery->targetList) + { + TargetEntry *tle = (TargetEntry *) lfirst(lc); + + if (tle->resjunk) + continue; /* ignore resjunk columns */ + + /* We need not check further if output col is already known unsafe */ + if (unsafeColumns[tle->resno]) + continue; + + /* Functions returning sets are unsafe (point 1) */ + if (expression_returns_set((Node *) tle->expr)) + { + unsafeColumns[tle->resno] = true; + continue; + } + + /* Volatile functions are unsafe (point 2) */ + if (contain_volatile_functions((Node *) tle->expr)) + { + unsafeColumns[tle->resno] = true; + continue; + } + + /* If subquery uses DISTINCT ON, check point 3 */ + if (subquery->hasDistinctOn && + !targetIsInSortList(tle, InvalidOid, subquery->distinctClause)) + { + /* non-DISTINCT column, so mark it unsafe */ + unsafeColumns[tle->resno] = true; + continue; + } + } +} + +/* + * For subqueries using UNION/UNION ALL/INTERSECT/INTERSECT ALL, we can + * push quals into each component query, but the quals can only reference + * subquery columns that suffer no type coercions in the set operation. + * Otherwise there are possible semantic gotchas. So, we check the + * component queries to see if any of them have output types different from + * the top-level setop outputs. unsafeColumns[k] is set true if column k + * has different type in any component. * * We don't have to care about typmods here: the only allowed difference * between set-op input and output typmods is input is a specific typmod * and output is -1, and that does not require a coercion. + * + * tlist is a subquery tlist. + * colTypes is an OID list of the top-level setop's output column types. + * unsafeColumns[] is the result array. */ static void compare_tlist_datatypes(List *tlist, List *colTypes, - bool *differentTypes) + bool *unsafeColumns) { ListCell *l; ListCell *colType = list_head(colTypes); @@ -1271,7 +1393,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)) - differentTypes[tle->resno] = true; + unsafeColumns[tle->resno] = true; colType = lnext(colType); } if (colType != NULL) @@ -1294,34 +1416,15 @@ compare_tlist_datatypes(List *tlist, List *colTypes, * (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 - * found to have inconsistent types across a set operation tree by - * subquery_is_pushdown_safe(). - * - * 4. 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.) - * - * 5. We must not push down any quals that refer to subselect outputs that - * return sets, else we'd introduce functions-returning-sets into the - * subquery's WHERE/HAVING quals. - * - * 6. We must not push down any quals that refer to subselect outputs that - * contain volatile functions, for fear of introducing strange results due - * to multiple evaluation of a volatile function. + * found to be unsafe to reference by subquery_is_pushdown_safe(). */ static bool qual_is_pushdown_safe(Query *subquery, Index rti, Node *qual, - bool *differentTypes) + bool *unsafeColumns) { bool safe = true; List *vars; ListCell *vl; - Bitmapset *tested = NULL; /* Refuse subselects (point 1) */ if (contain_subplans(qual)) @@ -1329,7 +1432,8 @@ qual_is_pushdown_safe(Query *subquery, Index rti, Node *qual, /* * 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 moment we could never see any in a qual anyhow. (The same applies + * to aggregates, which we check for in pull_var_clause below.) */ Assert(!contain_window_function(qual)); @@ -1337,11 +1441,12 @@ qual_is_pushdown_safe(Query *subquery, Index rti, Node *qual, * Examine all Vars used in clause; since it's a restriction clause, all * such Vars must refer to subselect output columns. */ - vars = pull_var_clause(qual, PVC_INCLUDE_PLACEHOLDERS); + vars = pull_var_clause(qual, + PVC_REJECT_AGGREGATES, + PVC_INCLUDE_PLACEHOLDERS); foreach(vl, vars) { Var *var = (Var *) lfirst(vl); - TargetEntry *tle; /* * XXX Punt if we find any PlaceHolderVars in the restriction clause. @@ -1357,6 +1462,7 @@ qual_is_pushdown_safe(Query *subquery, Index rti, Node *qual, } Assert(var->varno == rti); + Assert(var->varattno >= 0); /* Check point 2 */ if (var->varattno == 0) @@ -1365,45 +1471,8 @@ qual_is_pushdown_safe(Query *subquery, Index rti, Node *qual, break; } - /* - * We use a bitmapset to avoid testing the same attno more than once. - * (NB: this only works because subquery outputs can't have negative - * attnos.) - */ - if (bms_is_member(var->varattno, tested)) - continue; - tested = bms_add_member(tested, var->varattno); - /* Check point 3 */ - if (differentTypes[var->varattno]) - { - safe = false; - break; - } - - /* Must find the tlist element referenced by the Var */ - tle = get_tle_by_resno(subquery->targetList, var->varattno); - Assert(tle != NULL); - Assert(!tle->resjunk); - - /* If subquery uses DISTINCT ON, check point 4 */ - if (subquery->hasDistinctOn && - !targetIsInSortList(tle, InvalidOid, subquery->distinctClause)) - { - /* non-DISTINCT column, so fail */ - safe = false; - break; - } - - /* Refuse functions returning sets (point 5) */ - if (expression_returns_set((Node *) tle->expr)) - { - safe = false; - break; - } - - /* Refuse volatile functions (point 6) */ - if (contain_volatile_functions((Node *) tle->expr)) + if (unsafeColumns[var->varattno]) { safe = false; break; @@ -1411,7 +1480,6 @@ qual_is_pushdown_safe(Query *subquery, Index rti, Node *qual, } list_free(vars); - bms_free(tested); return safe; } diff --git a/src/backend/optimizer/path/clausesel.c b/src/backend/optimizer/path/clausesel.c index ca068991c1..b9e97d414d 100644 --- a/src/backend/optimizer/path/clausesel.c +++ b/src/backend/optimizer/path/clausesel.c @@ -579,6 +579,7 @@ clause_selectivity(PlannerInfo *root, list_make2(var, makeBoolConst(true, false)), + InvalidOid, varRelid); } } @@ -650,13 +651,15 @@ clause_selectivity(PlannerInfo *root, } else if (is_opclause(clause) || IsA(clause, DistinctExpr)) { - Oid opno = ((OpExpr *) clause)->opno; + OpExpr *opclause = (OpExpr *) clause; + Oid opno = opclause->opno; if (treat_as_join_clause(clause, rinfo, varRelid, sjinfo)) { /* Estimate selectivity for a join clause. */ s1 = join_selectivity(root, opno, - ((OpExpr *) clause)->args, + opclause->args, + opclause->inputcollid, jointype, sjinfo); } @@ -664,7 +667,8 @@ clause_selectivity(PlannerInfo *root, { /* Estimate selectivity for a restriction clause. */ s1 = restriction_selectivity(root, opno, - ((OpExpr *) clause)->args, + opclause->args, + opclause->inputcollid, varRelid); } diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c index d3b0e279fe..ae6da3b505 100644 --- a/src/backend/optimizer/path/costsize.c +++ b/src/backend/optimizer/path/costsize.c @@ -396,6 +396,14 @@ cost_index(IndexPath *path, PlannerInfo *root, * some of the indexquals are join clauses and shouldn't be subtracted. * Rather than work out exactly how much to subtract, we don't subtract * anything. + * + * XXX actually, this calculation is almost completely bogus, because + * indexquals will contain derived indexable conditions which might be + * quite different from the "original" quals in baserestrictinfo. We + * ought to determine the actual qpqual list and cost that, rather than + * using this shortcut. But that's too invasive a change to consider + * back-patching, so for the moment we just mask the worst aspects of the + * problem by clamping the subtracted amount. */ startup_cost += baserel->baserestrictcost.startup; cpu_per_tuple = cpu_tuple_cost + baserel->baserestrictcost.per_tuple; @@ -406,7 +414,8 @@ cost_index(IndexPath *path, PlannerInfo *root, cost_qual_eval(&index_qual_cost, indexQuals, root); /* any startup cost still has to be paid ... */ - cpu_per_tuple -= index_qual_cost.per_tuple; + cpu_per_tuple -= Min(index_qual_cost.per_tuple, + baserel->baserestrictcost.per_tuple); } run_cost += cpu_per_tuple * tuples_fetched; @@ -3242,26 +3251,41 @@ set_subquery_size_estimates(PlannerInfo *root, RelOptInfo *rel, /* * Compute per-output-column width estimates by examining the subquery's * targetlist. For any output that is a plain Var, get the width estimate - * that was made while planning the subquery. Otherwise, fall back on a - * datatype-based estimate. + * that was made while planning the subquery. Otherwise, we leave it to + * set_rel_width to fill in a datatype-based default estimate. */ foreach(lc, subroot->parse->targetList) { TargetEntry *te = (TargetEntry *) lfirst(lc); Node *texpr = (Node *) te->expr; - int32 item_width; + int32 item_width = 0; Assert(IsA(te, TargetEntry)); /* junk columns aren't visible to upper query */ if (te->resjunk) continue; + /* + * The subquery could be an expansion of a view that's had columns + * added to it since the current query was parsed, so that there are + * non-junk tlist columns in it that don't correspond to any column + * visible at our query level. Ignore such columns. + */ + if (te->resno < rel->min_attr || te->resno > rel->max_attr) + continue; + /* * XXX This currently doesn't work for subqueries containing set * operations, because the Vars in their tlists are bogus references * to the first leaf subquery, which wouldn't give the right answer - * even if we could still get to its PlannerInfo. So fall back on - * datatype in that case. + * even if we could still get to its PlannerInfo. + * + * Also, the subquery could be an appendrel for which all branches are + * known empty due to constraint exclusion, in which case + * set_append_rel_pathlist will have left the attr_widths set to zero. + * + * In either case, we just leave the width estimate zero until + * set_rel_width fixes it. */ if (IsA(texpr, Var) && subroot->parse->setOperations == NULL) @@ -3271,12 +3295,6 @@ set_subquery_size_estimates(PlannerInfo *root, RelOptInfo *rel, item_width = subrel->attr_widths[var->varattno - subrel->min_attr]; } - else - { - item_width = get_typavgwidth(exprType(texpr), exprTypmod(texpr)); - } - Assert(item_width > 0); - Assert(te->resno >= rel->min_attr && te->resno <= rel->max_attr); rel->attr_widths[te->resno - rel->min_attr] = item_width; } @@ -3495,7 +3513,7 @@ set_rel_width(PlannerInfo *root, RelOptInfo *rel) else if (IsA(node, PlaceHolderVar)) { PlaceHolderVar *phv = (PlaceHolderVar *) node; - PlaceHolderInfo *phinfo = find_placeholder_info(root, phv); + PlaceHolderInfo *phinfo = find_placeholder_info(root, phv, false); tuple_width += phinfo->ph_width; } diff --git a/src/backend/optimizer/path/equivclass.c b/src/backend/optimizer/path/equivclass.c index a365beecd8..57214a33a2 100644 --- a/src/backend/optimizer/path/equivclass.c +++ b/src/backend/optimizer/path/equivclass.c @@ -30,7 +30,7 @@ static EquivalenceMember *add_eq_member(EquivalenceClass *ec, - Expr *expr, Relids relids, + Expr *expr, Relids relids, Relids nullable_relids, bool is_child, Oid datatype); static void generate_base_implied_equalities_const(PlannerInfo *root, EquivalenceClass *ec); @@ -105,7 +105,9 @@ process_equivalence(PlannerInfo *root, RestrictInfo *restrictinfo, Expr *item1; Expr *item2; Relids item1_relids, - item2_relids; + item2_relids, + item1_nullable_relids, + item2_nullable_relids; List *opfamilies; EquivalenceClass *ec1, *ec2; @@ -162,6 +164,12 @@ process_equivalence(PlannerInfo *root, RestrictInfo *restrictinfo, return false; /* RHS is non-strict but not constant */ } + /* Calculate nullable-relid sets for each side of the clause */ + item1_nullable_relids = bms_intersect(item1_relids, + restrictinfo->nullable_relids); + item2_nullable_relids = bms_intersect(item2_relids, + restrictinfo->nullable_relids); + /* * We use the declared input types of the operator, not exprType() of the * inputs, as the nominal datatypes for opfamily lookup. This presumes @@ -308,7 +316,8 @@ process_equivalence(PlannerInfo *root, RestrictInfo *restrictinfo, else if (ec1) { /* Case 3: add item2 to ec1 */ - em2 = add_eq_member(ec1, item2, item2_relids, false, item2_type); + em2 = add_eq_member(ec1, item2, item2_relids, item2_nullable_relids, + false, item2_type); ec1->ec_sources = lappend(ec1->ec_sources, restrictinfo); ec1->ec_below_outer_join |= below_outer_join; /* mark the RI as associated with this eclass */ @@ -321,7 +330,8 @@ process_equivalence(PlannerInfo *root, RestrictInfo *restrictinfo, else if (ec2) { /* Case 3: add item1 to ec2 */ - em1 = add_eq_member(ec2, item1, item1_relids, false, item1_type); + em1 = add_eq_member(ec2, item1, item1_relids, item1_nullable_relids, + false, item1_type); ec2->ec_sources = lappend(ec2->ec_sources, restrictinfo); ec2->ec_below_outer_join |= below_outer_join; /* mark the RI as associated with this eclass */ @@ -348,8 +358,10 @@ process_equivalence(PlannerInfo *root, RestrictInfo *restrictinfo, ec->ec_broken = false; ec->ec_sortref = 0; ec->ec_merged = NULL; - em1 = add_eq_member(ec, item1, item1_relids, false, item1_type); - em2 = add_eq_member(ec, item2, item2_relids, false, item2_type); + em1 = add_eq_member(ec, item1, item1_relids, item1_nullable_relids, + false, item1_type); + em2 = add_eq_member(ec, item2, item2_relids, item2_nullable_relids, + false, item2_type); root->eq_classes = lappend(root->eq_classes, ec); @@ -447,12 +459,13 @@ canonicalize_ec_expression(Expr *expr, Oid req_type, Oid req_collation) */ static EquivalenceMember * add_eq_member(EquivalenceClass *ec, Expr *expr, Relids relids, - bool is_child, Oid datatype) + Relids nullable_relids, bool is_child, Oid datatype) { EquivalenceMember *em = makeNode(EquivalenceMember); em->em_expr = expr; em->em_relids = relids; + em->em_nullable_relids = nullable_relids; em->em_is_const = false; em->em_is_child = is_child; em->em_datatype = datatype; @@ -491,6 +504,15 @@ add_eq_member(EquivalenceClass *ec, Expr *expr, Relids relids, * sortref is the SortGroupRef of the originating SortGroupClause, if any, * or zero if not. (It should never be zero if the expression is volatile!) * + * If rel is not NULL, it identifies a specific relation we're considering + * a path for, and indicates that child EC members for that relation can be + * considered. Otherwise child members are ignored. (Note: since child EC + * members aren't guaranteed unique, a non-NULL value means that there could + * be more than one EC that matches the expression; if so it's order-dependent + * which one you get. This is annoying but it only happens in corner cases, + * so for now we live with just reporting the first match. See also + * generate_implied_equalities_for_indexcol and match_pathkeys_to_index.) + * * If create_it is TRUE, we'll build a new EquivalenceClass when there is no * match. If create_it is FALSE, we just return NULL when no match. * @@ -511,6 +533,7 @@ get_eclass_for_sort_expr(PlannerInfo *root, Oid opcintype, Oid collation, Index sortref, + Relids rel, bool create_it) { EquivalenceClass *newec; @@ -548,6 +571,13 @@ get_eclass_for_sort_expr(PlannerInfo *root, { EquivalenceMember *cur_em = (EquivalenceMember *) lfirst(lc2); + /* + * Ignore child members unless they match the request. + */ + if (cur_em->em_is_child && + !bms_equal(cur_em->em_relids, rel)) + continue; + /* * If below an outer join, don't match constants: they're not as * constant as they look. @@ -591,7 +621,7 @@ get_eclass_for_sort_expr(PlannerInfo *root, elog(ERROR, "volatile EquivalenceClass has no sortref"); newem = add_eq_member(newec, copyObject(expr), pull_varnos((Node *) expr), - false, opcintype); + NULL, false, opcintype); /* * add_eq_member doesn't check for volatile functions, set-returning @@ -738,7 +768,12 @@ generate_base_implied_equalities_const(PlannerInfo *root, } } - /* Find the constant member to use */ + /* + * Find the constant member to use. We prefer an actual constant to + * pseudo-constants (such as Params), because the constraint exclusion + * machinery might be able to exclude relations on the basis of generated + * "var = const" equalities, but "var = param" won't work for that. + */ foreach(lc, ec->ec_members) { EquivalenceMember *cur_em = (EquivalenceMember *) lfirst(lc); @@ -746,7 +781,8 @@ generate_base_implied_equalities_const(PlannerInfo *root, if (cur_em->em_is_const) { const_em = cur_em; - break; + if (IsA(cur_em->em_expr, Const)) + break; } } Assert(const_em != NULL); @@ -771,7 +807,9 @@ generate_base_implied_equalities_const(PlannerInfo *root, } process_implied_equality(root, eq_op, ec->ec_collation, cur_em->em_expr, const_em->em_expr, - ec->ec_relids, + bms_copy(ec->ec_relids), + bms_union(cur_em->em_nullable_relids, + const_em->em_nullable_relids), ec->ec_below_outer_join, cur_em->em_is_const); } @@ -826,7 +864,9 @@ generate_base_implied_equalities_no_const(PlannerInfo *root, } process_implied_equality(root, eq_op, ec->ec_collation, prev_em->em_expr, cur_em->em_expr, - ec->ec_relids, + bms_copy(ec->ec_relids), + bms_union(prev_em->em_nullable_relids, + cur_em->em_nullable_relids), ec->ec_below_outer_join, false); } @@ -847,9 +887,10 @@ generate_base_implied_equalities_no_const(PlannerInfo *root, { EquivalenceMember *cur_em = (EquivalenceMember *) lfirst(lc); List *vars = pull_var_clause((Node *) cur_em->em_expr, + PVC_RECURSE_AGGREGATES, PVC_INCLUDE_PLACEHOLDERS); - add_vars_to_targetlist(root, vars, ec->ec_relids); + add_vars_to_targetlist(root, vars, ec->ec_relids, false); list_free(vars); } } @@ -1230,7 +1271,9 @@ create_join_clause(PlannerInfo *root, leftem->em_expr, rightem->em_expr, bms_union(leftem->em_relids, - rightem->em_relids)); + rightem->em_relids), + bms_union(leftem->em_nullable_relids, + rightem->em_nullable_relids)); /* Mark the clause as redundant, or not */ rinfo->parent_ec = parent_ec; @@ -1452,7 +1495,8 @@ reconsider_outer_join_clause(PlannerInfo *root, RestrictInfo *rinfo, left_type, right_type, inner_datatype; - Relids inner_relids; + Relids inner_relids, + inner_nullable_relids; ListCell *lc1; Assert(is_opclause(rinfo->clause)); @@ -1479,6 +1523,8 @@ reconsider_outer_join_clause(PlannerInfo *root, RestrictInfo *rinfo, inner_datatype = left_type; inner_relids = rinfo->left_relids; } + inner_nullable_relids = bms_intersect(inner_relids, + rinfo->nullable_relids); /* Scan EquivalenceClasses for a match to outervar */ foreach(lc1, root->eq_classes) @@ -1504,6 +1550,7 @@ reconsider_outer_join_clause(PlannerInfo *root, RestrictInfo *rinfo, { EquivalenceMember *cur_em = (EquivalenceMember *) lfirst(lc2); + Assert(!cur_em->em_is_child); /* no children yet */ if (equal(outervar, cur_em->em_expr)) { match = true; @@ -1536,7 +1583,8 @@ reconsider_outer_join_clause(PlannerInfo *root, RestrictInfo *rinfo, cur_ec->ec_collation, innervar, cur_em->em_expr, - inner_relids); + bms_copy(inner_relids), + bms_copy(inner_nullable_relids)); if (process_equivalence(root, newrinfo, true)) match = true; } @@ -1570,7 +1618,9 @@ reconsider_full_join_clause(PlannerInfo *root, RestrictInfo *rinfo) left_type, right_type; Relids left_relids, - right_relids; + right_relids, + left_nullable_relids, + right_nullable_relids; ListCell *lc1; /* Can't use an outerjoin_delayed clause here */ @@ -1586,6 +1636,10 @@ reconsider_full_join_clause(PlannerInfo *root, RestrictInfo *rinfo) rightvar = (Expr *) get_rightop(rinfo->clause); left_relids = rinfo->left_relids; right_relids = rinfo->right_relids; + left_nullable_relids = bms_intersect(left_relids, + rinfo->nullable_relids); + right_nullable_relids = bms_intersect(right_relids, + rinfo->nullable_relids); foreach(lc1, root->eq_classes) { @@ -1625,6 +1679,7 @@ reconsider_full_join_clause(PlannerInfo *root, RestrictInfo *rinfo) foreach(lc2, cur_ec->ec_members) { coal_em = (EquivalenceMember *) lfirst(lc2); + Assert(!coal_em->em_is_child); /* no children yet */ if (IsA(coal_em->em_expr, CoalesceExpr)) { CoalesceExpr *cexpr = (CoalesceExpr *) coal_em->em_expr; @@ -1670,7 +1725,8 @@ reconsider_full_join_clause(PlannerInfo *root, RestrictInfo *rinfo) cur_ec->ec_collation, leftvar, cur_em->em_expr, - left_relids); + bms_copy(left_relids), + bms_copy(left_nullable_relids)); if (process_equivalence(root, newrinfo, true)) matchleft = true; } @@ -1683,7 +1739,8 @@ reconsider_full_join_clause(PlannerInfo *root, RestrictInfo *rinfo) cur_ec->ec_collation, rightvar, cur_em->em_expr, - right_relids); + bms_copy(right_relids), + bms_copy(right_nullable_relids)); if (process_equivalence(root, newrinfo, true)) matchright = true; } @@ -1746,6 +1803,8 @@ exprs_known_equal(PlannerInfo *root, Node *item1, Node *item2) { EquivalenceMember *em = (EquivalenceMember *) lfirst(lc2); + if (em->em_is_child) + continue; /* ignore children here */ if (equal(item1, em->em_expr)) item1member = true; else if (equal(item2, em->em_expr)) @@ -1784,14 +1843,11 @@ add_child_rel_equivalences(PlannerInfo *root, ListCell *lc2; /* - * If this EC contains a constant, then it's not useful for sorting or - * driving an inner index-scan, so we skip generating child EMs. - * * If this EC contains a volatile expression, then generating child - * EMs would be downright dangerous. We rely on a volatile EC having - * only one EM. + * EMs would be downright dangerous, so skip it. We rely on a + * volatile EC having only one EM. */ - if (cur_ec->ec_has_const || cur_ec->ec_has_volatile) + if (cur_ec->ec_has_volatile) continue; /* No point in searching if parent rel not mentioned in eclass */ @@ -1802,16 +1858,35 @@ add_child_rel_equivalences(PlannerInfo *root, { EquivalenceMember *cur_em = (EquivalenceMember *) lfirst(lc2); + if (cur_em->em_is_child) + continue; /* ignore children here */ + /* Does it reference (only) parent_rel? */ if (bms_equal(cur_em->em_relids, parent_rel->relids)) { /* Yes, generate transformed child version */ Expr *child_expr; + Relids new_nullable_relids; child_expr = (Expr *) adjust_appendrel_attrs((Node *) cur_em->em_expr, appinfo); - (void) add_eq_member(cur_ec, child_expr, child_rel->relids, + + /* + * Must translate nullable_relids. Note this code assumes + * parent and child relids are singletons. + */ + new_nullable_relids = cur_em->em_nullable_relids; + if (bms_overlap(new_nullable_relids, parent_rel->relids)) + { + new_nullable_relids = bms_difference(new_nullable_relids, + parent_rel->relids); + new_nullable_relids = bms_add_members(new_nullable_relids, + child_rel->relids); + } + + (void) add_eq_member(cur_ec, child_expr, + child_rel->relids, new_nullable_relids, true, cur_em->em_datatype); } } @@ -1822,12 +1897,12 @@ add_child_rel_equivalences(PlannerInfo *root, /* * mutate_eclass_expressions * Apply an expression tree mutator to all expressions stored in - * equivalence classes. + * equivalence classes (but ignore child exprs unless include_child_exprs). * * This is a bit of a hack ... it's currently needed only by planagg.c, * which needs to do a global search-and-replace of MIN/MAX Aggrefs * after eclasses are already set up. Without changing the eclasses too, - * subsequent matching of ORDER BY clauses would fail. + * subsequent matching of ORDER BY and DISTINCT clauses would fail. * * Note that we assume the mutation won't affect relation membership or any * other properties we keep track of (which is a bit bogus, but by the time @@ -1837,7 +1912,8 @@ add_child_rel_equivalences(PlannerInfo *root, void mutate_eclass_expressions(PlannerInfo *root, Node *(*mutator) (), - void *context) + void *context, + bool include_child_exprs) { ListCell *lc1; @@ -1850,6 +1926,9 @@ mutate_eclass_expressions(PlannerInfo *root, { EquivalenceMember *cur_em = (EquivalenceMember *) lfirst(lc2); + if (cur_em->em_is_child && !include_child_exprs) + continue; /* ignore children unless requested */ + cur_em->em_expr = (Expr *) mutator((Node *) cur_em->em_expr, context); } @@ -1893,7 +1972,16 @@ find_eclass_clauses_for_index_join(PlannerInfo *root, RelOptInfo *rel, if (!bms_overlap(outer_relids, cur_ec->ec_relids)) continue; - /* Scan members, looking for indexable columns */ + /* + * Scan members, looking for indexable columns. Note + * that child EC members are considered, but only when they belong to + * the target relation. (Unlike regular members, the same expression + * could be a child member of more than one EC. Therefore, it's + * potentially order-dependent which EC a child relation's index + * column gets matched to. This is annoying but it only happens in + * corner cases, so for now we live with just reporting the first + * match. See also get_eclass_for_sort_expr.) + */ foreach(lc2, cur_ec->ec_members) { EquivalenceMember *cur_em = (EquivalenceMember *) lfirst(lc2); @@ -1916,6 +2004,8 @@ find_eclass_clauses_for_index_join(PlannerInfo *root, RelOptInfo *rel, EquivalenceMember *outer_em = (EquivalenceMember *) lfirst(lc3); Oid eq_op; + if (outer_em->em_is_child) + continue; /* ignore children here */ if (!bms_is_subset(outer_em->em_relids, outer_relids)) continue; eq_op = select_equality_operator(cur_ec, @@ -2146,8 +2236,10 @@ eclass_useful_for_merging(EquivalenceClass *eclass, { EquivalenceMember *cur_em = (EquivalenceMember *) lfirst(lc); - if (!cur_em->em_is_child && - !bms_overlap(cur_em->em_relids, rel->relids)) + if (cur_em->em_is_child) + continue; /* ignore children here */ + + if (!bms_overlap(cur_em->em_relids, rel->relids)) return true; } diff --git a/src/backend/optimizer/path/indxpath.c b/src/backend/optimizer/path/indxpath.c index 1cace6d596..5a30ba6e2e 100644 --- a/src/backend/optimizer/path/indxpath.c +++ b/src/backend/optimizer/path/indxpath.c @@ -41,6 +41,9 @@ #define IsBooleanOpfamily(opfamily) \ ((opfamily) == BOOL_BTREE_FAM_OID || (opfamily) == BOOL_HASH_FAM_OID) +#define IndexCollMatchesExprColl(idxcollation, exprcollation) \ + ((idxcollation) == InvalidOid || (idxcollation) == (exprcollation)) + /* Whether to use ScalarArrayOpExpr to build index qualifications */ typedef enum { @@ -1181,6 +1184,13 @@ group_clauses_by_indexkey(IndexOptInfo *index, * We do not actually do the commuting here, but we check whether a * suitable commutator operator is available. * + * If the index has a collation, the clause must have the same collation. + * For collation-less indexes, we assume it doesn't matter; this is + * necessary for cases like "hstore ? text", wherein hstore's operators + * don't care about collation but the clause will get marked with a + * collation anyway because of the text argument. (This logic is + * embodied in the macro IndexCollMatchesExprColl.) + * * It is also possible to match RowCompareExpr clauses to indexes (but * currently, only btree indexes handle this). In this routine we will * report a match if the first column of the row comparison matches the @@ -1303,7 +1313,7 @@ match_clause_to_indexcol(IndexOptInfo *index, bms_is_subset(right_relids, outer_relids) && !contain_volatile_functions(rightop)) { - if (idxcollation == expr_coll && + if (IndexCollMatchesExprColl(idxcollation, expr_coll) && is_indexable_operator(expr_op, opfamily, true)) return true; @@ -1322,7 +1332,7 @@ match_clause_to_indexcol(IndexOptInfo *index, bms_is_subset(left_relids, outer_relids) && !contain_volatile_functions(leftop)) { - if (idxcollation == expr_coll && + if (IndexCollMatchesExprColl(idxcollation, expr_coll) && is_indexable_operator(expr_op, opfamily, false)) return true; @@ -1398,8 +1408,8 @@ match_rowcompare_to_indexcol(IndexOptInfo *index, expr_op = linitial_oid(clause->opnos); expr_coll = linitial_oid(clause->inputcollids); - /* Collations must match */ - if (expr_coll != idxcollation) + /* Collations must match, if relevant */ + if (!IndexCollMatchesExprColl(idxcollation, expr_coll)) return false; /* @@ -1479,7 +1489,14 @@ match_index_to_pathkeys(IndexOptInfo *index, List *pathkeys) if (pathkey->pk_eclass->ec_has_volatile) return NIL; - /* Try to match eclass member expression(s) to index */ + /* + * Try to match eclass member expression(s) to index. Note that child + * EC members are considered, but only when they belong to the target + * relation. (Unlike regular members, the same expression could be a + * child member of more than one EC. Therefore, the same index could + * be considered to match more than one pathkey list, which is OK + * here. See also get_eclass_for_sort_expr.) + */ foreach(lc2, pathkey->pk_eclass->ec_members) { EquivalenceMember *member = (EquivalenceMember *) lfirst(lc2); @@ -1571,7 +1588,7 @@ match_clause_to_ordering_op(IndexOptInfo *index, /* * We can forget the whole thing right away if wrong collation. */ - if (expr_coll != idxcollation) + if (!IndexCollMatchesExprColl(idxcollation, expr_coll)) return NULL; /* @@ -1862,7 +1879,7 @@ eclass_matches_any_index(EquivalenceClass *ec, EquivalenceMember *em, */ if ((index->relam != BTREE_AM_OID || list_member_oid(ec->ec_opfamilies, curFamily)) && - ec->ec_collation == curCollation && + IndexCollMatchesExprColl(curCollation, ec->ec_collation) && match_index_to_operand((Node *) em->em_expr, indexcol, index)) return true; } @@ -2169,10 +2186,11 @@ relation_has_unique_index_for(PlannerInfo *root, RelOptInfo *rel, int c; /* - * If the index is not unique or if it's a partial index that doesn't - * match the query, it's useless here. + * If the index is not unique, or not immediately enforced, or if it's + * a partial index that doesn't match the query, it's useless here. */ - if (!ind->unique || (ind->indpred != NIL && !ind->predOK)) + if (!ind->unique || !ind->immediate || + (ind->indpred != NIL && !ind->predOK)) continue; /* @@ -2449,7 +2467,6 @@ match_special_index_operator(Expr *clause, Oid opfamily, Oid idxcollation, Oid expr_coll; Const *patt; Const *prefix = NULL; - Const *rest = NULL; Pattern_Prefix_Status pstatus = Pattern_Prefix_None; /* @@ -2478,13 +2495,13 @@ match_special_index_operator(Expr *clause, Oid opfamily, Oid idxcollation, case OID_NAME_LIKE_OP: /* the right-hand const is type text for all of these */ pstatus = pattern_fixed_prefix(patt, Pattern_Type_Like, expr_coll, - &prefix, &rest); + &prefix, NULL); isIndexable = (pstatus != Pattern_Prefix_None); break; case OID_BYTEA_LIKE_OP: pstatus = pattern_fixed_prefix(patt, Pattern_Type_Like, expr_coll, - &prefix, &rest); + &prefix, NULL); isIndexable = (pstatus != Pattern_Prefix_None); break; @@ -2493,7 +2510,7 @@ match_special_index_operator(Expr *clause, Oid opfamily, Oid idxcollation, case OID_NAME_ICLIKE_OP: /* the right-hand const is type text for all of these */ pstatus = pattern_fixed_prefix(patt, Pattern_Type_Like_IC, expr_coll, - &prefix, &rest); + &prefix, NULL); isIndexable = (pstatus != Pattern_Prefix_None); break; @@ -2502,7 +2519,7 @@ match_special_index_operator(Expr *clause, Oid opfamily, Oid idxcollation, case OID_NAME_REGEXEQ_OP: /* the right-hand const is type text for all of these */ pstatus = pattern_fixed_prefix(patt, Pattern_Type_Regex, expr_coll, - &prefix, &rest); + &prefix, NULL); isIndexable = (pstatus != Pattern_Prefix_None); break; @@ -2511,7 +2528,7 @@ match_special_index_operator(Expr *clause, Oid opfamily, Oid idxcollation, case OID_NAME_ICREGEXEQ_OP: /* the right-hand const is type text for all of these */ pstatus = pattern_fixed_prefix(patt, Pattern_Type_Regex_IC, expr_coll, - &prefix, &rest); + &prefix, NULL); isIndexable = (pstatus != Pattern_Prefix_None); break; @@ -2776,7 +2793,6 @@ expand_indexqual_opclause(RestrictInfo *rinfo, Oid opfamily, Oid idxcollation) Oid expr_coll = ((OpExpr *) clause)->inputcollid; Const *patt = (Const *) rightop; Const *prefix = NULL; - Const *rest = NULL; Pattern_Prefix_Status pstatus; /* @@ -2796,7 +2812,7 @@ expand_indexqual_opclause(RestrictInfo *rinfo, Oid opfamily, Oid idxcollation) if (!op_in_opfamily(expr_op, opfamily)) { pstatus = pattern_fixed_prefix(patt, Pattern_Type_Like, expr_coll, - &prefix, &rest); + &prefix, NULL); return prefix_quals(leftop, opfamily, idxcollation, prefix, pstatus); } break; @@ -2808,7 +2824,7 @@ expand_indexqual_opclause(RestrictInfo *rinfo, Oid opfamily, Oid idxcollation) { /* the right-hand const is type text for all of these */ pstatus = pattern_fixed_prefix(patt, Pattern_Type_Like_IC, expr_coll, - &prefix, &rest); + &prefix, NULL); return prefix_quals(leftop, opfamily, idxcollation, prefix, pstatus); } break; @@ -2820,7 +2836,7 @@ expand_indexqual_opclause(RestrictInfo *rinfo, Oid opfamily, Oid idxcollation) { /* the right-hand const is type text for all of these */ pstatus = pattern_fixed_prefix(patt, Pattern_Type_Regex, expr_coll, - &prefix, &rest); + &prefix, NULL); return prefix_quals(leftop, opfamily, idxcollation, prefix, pstatus); } break; @@ -2832,7 +2848,7 @@ expand_indexqual_opclause(RestrictInfo *rinfo, Oid opfamily, Oid idxcollation) { /* the right-hand const is type text for all of these */ pstatus = pattern_fixed_prefix(patt, Pattern_Type_Regex_IC, expr_coll, - &prefix, &rest); + &prefix, NULL); return prefix_quals(leftop, opfamily, idxcollation, prefix, pstatus); } break; @@ -2967,7 +2983,8 @@ expand_indexqual_rowcompare(RestrictInfo *rinfo, break; /* Does collation match? */ - if (lfirst_oid(collids_cell) != index->indexcollations[i]) + if (!IndexCollMatchesExprColl(index->indexcollations[i], + lfirst_oid(collids_cell))) break; /* Add opfamily and datatypes to lists */ diff --git a/src/backend/optimizer/path/pathkeys.c b/src/backend/optimizer/path/pathkeys.c index e5228a81c6..991e096512 100644 --- a/src/backend/optimizer/path/pathkeys.c +++ b/src/backend/optimizer/path/pathkeys.c @@ -224,6 +224,11 @@ canonicalize_pathkeys(PlannerInfo *root, List *pathkeys) * If the PathKey is being generated from a SortGroupClause, sortref should be * the SortGroupClause's SortGroupRef; otherwise zero. * + * If rel is not NULL, it identifies a specific relation we're considering + * a path for, and indicates that child EC members for that relation can be + * considered. Otherwise child members are ignored. (See the comments for + * get_eclass_for_sort_expr.) + * * create_it is TRUE if we should create any missing EquivalenceClass * needed to represent the sort key. If it's FALSE, we return NULL if the * sort key isn't already present in any EquivalenceClass. @@ -240,6 +245,7 @@ make_pathkey_from_sortinfo(PlannerInfo *root, bool reverse_sort, bool nulls_first, Index sortref, + Relids rel, bool create_it, bool canonicalize) { @@ -271,7 +277,7 @@ make_pathkey_from_sortinfo(PlannerInfo *root, /* Now find or (optionally) create a matching EquivalenceClass */ eclass = get_eclass_for_sort_expr(root, expr, opfamilies, opcintype, collation, - sortref, create_it); + sortref, rel, create_it); /* Fail if no EC and !create_it */ if (!eclass) @@ -323,6 +329,7 @@ make_pathkey_from_sortop(PlannerInfo *root, (strategy == BTGreaterStrategyNumber), nulls_first, sortref, + NULL, create_it, canonicalize); } @@ -554,6 +561,7 @@ build_index_pathkeys(PlannerInfo *root, reverse_sort, nulls_first, 0, + index->rel->relids, false, true); @@ -677,6 +685,7 @@ convert_subquery_pathkeys(PlannerInfo *root, RelOptInfo *rel, sub_member->em_datatype, sub_eclass->ec_collation, 0, + rel->relids, false); /* @@ -721,6 +730,9 @@ convert_subquery_pathkeys(PlannerInfo *root, RelOptInfo *rel, Oid sub_expr_coll = sub_eclass->ec_collation; ListCell *k; + if (sub_member->em_is_child) + continue; /* ignore children here */ + foreach(k, sub_tlist) { TargetEntry *tle = (TargetEntry *) lfirst(k); @@ -760,6 +772,7 @@ convert_subquery_pathkeys(PlannerInfo *root, RelOptInfo *rel, sub_expr_type, sub_expr_coll, 0, + rel->relids, false); /* @@ -951,6 +964,7 @@ initialize_mergeclause_eclasses(PlannerInfo *root, RestrictInfo *restrictinfo) lefttype, ((OpExpr *) clause)->inputcollid, 0, + NULL, true); restrictinfo->right_ec = get_eclass_for_sort_expr(root, @@ -959,6 +973,7 @@ initialize_mergeclause_eclasses(PlannerInfo *root, RestrictInfo *restrictinfo) righttype, ((OpExpr *) clause)->inputcollid, 0, + NULL, true); } diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c index 6c42be9366..fc898fc22c 100644 --- a/src/backend/optimizer/plan/createplan.c +++ b/src/backend/optimizer/plan/createplan.c @@ -27,6 +27,7 @@ #include "optimizer/clauses.h" #include "optimizer/cost.h" #include "optimizer/paths.h" +#include "optimizer/placeholder.h" #include "optimizer/plancat.h" #include "optimizer/planmain.h" #include "optimizer/predtest.h" @@ -109,6 +110,8 @@ static List *pgxc_process_having_clause(PlannerInfo *root, List *remote_tlist, Node *havingQual, List **local_qual, List **remote_qual, bool *reduce_plan); static Expr *pgxc_set_en_expr(Oid tableoid, Index resultRelationIndex); +static int pgxc_count_rowmarks_entries(List *rowMarks); +static Oid *pgxc_build_rowmark_entries(List *rowMarks, List *rtable, Oid *types, int prepparams, int totparams); #endif static ForeignScan *create_foreignscan_plan(PlannerInfo *root, ForeignPath *best_path, List *tlist, List *scan_clauses); @@ -192,12 +195,17 @@ static Sort *make_sort(PlannerInfo *root, Plan *lefttree, int numCols, double limit_tuples); static Plan *prepare_sort_from_pathkeys(PlannerInfo *root, Plan *lefttree, List *pathkeys, + Relids relids, + const AttrNumber *reqColIdx, bool adjust_tlist_in_place, int *p_numsortkeys, AttrNumber **p_sortColIdx, Oid **p_sortOperators, Oid **p_collations, bool **p_nullsFirst); +static EquivalenceMember *find_ec_member_for_tle(EquivalenceClass *ec, + TargetEntry *tle, + Relids relids); static Material *make_material(Plan *lefttree); #ifdef PGXC @@ -228,6 +236,9 @@ create_plan(PlannerInfo *root, Path *best_path) { Plan *plan; + /* plan_params should not be in use in current query level */ + Assert(root->plan_params == NIL); + /* Initialize this module's private workspace in PlannerInfo */ root->curOuterRels = NULL; root->curOuterParams = NIL; @@ -239,6 +250,12 @@ create_plan(PlannerInfo *root, Path *best_path) if (root->curOuterParams != NIL) elog(ERROR, "failed to assign all NestLoopParams to plan nodes"); + /* + * Reset plan_params to ensure param IDs used for nestloop params are not + * re-used later + */ + root->plan_params = NIL; + return plan; } @@ -799,7 +816,9 @@ create_remotejoin_plan(PlannerInfo *root, JoinPath *best_path, Plan *parent, Pla * intermediate, the children vars may or may not be referenced * multiple times in it. */ - parent_vars = pull_var_clause((Node *)parent->targetlist, PVC_RECURSE_PLACEHOLDERS); + parent_vars = pull_var_clause((Node *)parent->targetlist, + PVC_RECURSE_AGGREGATES, + PVC_RECURSE_PLACEHOLDERS); findReferencedVars(parent_vars, outer_plan, &out_tlist, &out_relids); findReferencedVars(parent_vars, inner_plan, &in_tlist, &in_relids); @@ -1391,6 +1410,8 @@ create_merge_append_plan(PlannerInfo *root, MergeAppendPath *best_path) /* Compute sort column info, and adjust MergeAppend's tlist as needed */ (void) prepare_sort_from_pathkeys(root, plan, pathkeys, + NULL, + NULL, true, &node->numCols, &node->sortColIdx, @@ -1418,6 +1439,8 @@ create_merge_append_plan(PlannerInfo *root, MergeAppendPath *best_path) /* Compute sort column info, and adjust subplan's tlist as needed */ subplan = prepare_sort_from_pathkeys(root, subplan, pathkeys, + subpath->parent->relids, + node->sortColIdx, false, &numsortkeys, &sortColIdx, @@ -2618,7 +2641,7 @@ create_remotequery_plan(PlannerInfo *root, Path *best_path, } /* - * Construct a Query structure for the query to be fired on the datanodes + * Construct a Query structure for the query to be fired on the Datanodes * and deparse it. Fields not set remain memzero'ed as set by makeNode. */ rte = rt_fetch(scan_relid, root->parse->rtable); @@ -2653,18 +2676,23 @@ create_remotequery_plan(PlannerInfo *root, Path *best_path, query->targetList = copyObject(tlist); else { - tvarlist = copyObject(pull_var_clause((Node *)tlist, PVC_RECURSE_PLACEHOLDERS)); + tvarlist = copyObject(pull_var_clause((Node *)tlist, + PVC_RECURSE_AGGREGATES, + PVC_RECURSE_PLACEHOLDERS)); query->targetList = add_to_flat_tlist(NIL, copyObject(tvarlist)); } /* * Change the varno in Var nodes in the targetlist of the query to be shipped to the - * datanode to 1, to match the rtable in the query. Do the same for Var + * Datanode to 1, to match the rtable in the query. Do the same for Var * nodes in quals. */ - varlist = list_concat(pull_var_clause((Node *)query->targetList, PVC_RECURSE_PLACEHOLDERS), - pull_var_clause((Node *)query->jointree->quals, - PVC_RECURSE_PLACEHOLDERS)); + varlist = list_concat(pull_var_clause((Node *)query->targetList, + PVC_RECURSE_AGGREGATES, + PVC_RECURSE_PLACEHOLDERS), + pull_var_clause((Node *)query->jointree->quals, + PVC_RECURSE_AGGREGATES, + PVC_RECURSE_PLACEHOLDERS)); foreach(varcell, varlist) { @@ -2680,14 +2708,14 @@ create_remotequery_plan(PlannerInfo *root, Path *best_path, * we construct the query at the time of execution. */ tmp_node = pgxc_fix_scan_expr(root->glob, (Node *)query->targetList, 0); - Assert(IsA(tmp_node, List)); + Assert(!tmp_node || IsA(tmp_node, List)); query->targetList = (List *)tmp_node; tmp_node = pgxc_fix_scan_expr(root->glob, (Node *)query->jointree->quals, 0); query->jointree->quals = tmp_node; /* * Before deparsing the query we need to check whether there are any FOR UPDATE/SHARE clauses - * in the query that we need to propagate to data nodes + * in the query that we need to propagate to Datanodes */ rmlist = NULL; if (root->xc_rowMarks != NULL) @@ -2771,9 +2799,12 @@ create_remotequery_plan(PlannerInfo *root, Path *best_path, /* Track if the remote query involves a temporary object */ scan_plan->is_temp = IsTempTable(rte->relid); + scan_plan->read_only = (query->commandType == CMD_SELECT && !query->hasForUpdate); + scan_plan->has_row_marks = query->hasForUpdate; + scan_plan->sql_statement = sql.data; /* - * If the table distributed by value, check if we can reduce the datanodes + * If the table distributed by value, check if we can reduce the Datanodes * by looking at the qualifiers for this relation */ if (IsLocatorDistributedByValue(rel_loc_info->locatorType)) @@ -2783,7 +2814,7 @@ create_remotequery_plan(PlannerInfo *root, Path *best_path, distcol_expr = pgxc_find_distcol_expr(rtr->rtindex, rel_loc_info->partAttrNum, query->jointree->quals); /* - * If the type of expression used to find the datanode, is not same as + * If the type of expression used to find the Datanode, is not same as * the distribution column type, try casting it. This is same as what * will happen in case of inserting that type of expression value as the * distribution column value. @@ -2951,7 +2982,20 @@ create_nestloop_plan(PlannerInfo *root, NestLoopParam *nlp = (NestLoopParam *) lfirst(cell); next = lnext(cell); - if (bms_is_member(nlp->paramval->varno, outerrelids)) + if (IsA(nlp->paramval, Var) && + bms_is_member(nlp->paramval->varno, outerrelids)) + { + root->curOuterParams = list_delete_cell(root->curOuterParams, + cell, prev); + nestParams = lappend(nestParams, nlp); + } + else if (IsA(nlp->paramval, PlaceHolderVar) && + bms_overlap(((PlaceHolderVar *) nlp->paramval)->phrels, + outerrelids) && + bms_is_subset(find_placeholder_info(root, + (PlaceHolderVar *) nlp->paramval, + false)->ph_eval_at, + outerrelids)) { root->curOuterParams = list_delete_cell(root->curOuterParams, cell, prev); @@ -3379,11 +3423,12 @@ create_hashjoin_plan(PlannerInfo *root, /* * replace_nestloop_params - * Replace outer-relation Vars in the given expression with nestloop Params + * Replace outer-relation Vars and PlaceHolderVars in the given expression + * with nestloop Params * - * All Vars belonging to the relation(s) identified by root->curOuterRels - * are replaced by Params, and entries are added to root->curOuterParams if - * not already present. + * All Vars and PlaceHolderVars belonging to the relation(s) identified by + * root->curOuterRels are replaced by Params, and entries are added to + * root->curOuterParams if not already present. */ static Node * replace_nestloop_params(PlannerInfo *root, Node *expr) @@ -3410,7 +3455,7 @@ replace_nestloop_params_mutator(Node *node, PlannerInfo *root) if (!bms_is_member(var->varno, root->curOuterRels)) return node; /* Create a Param representing the Var */ - param = assign_nestloop_param(root, var); + param = assign_nestloop_param_var(root, var); /* Is this param already listed in root->curOuterParams? */ foreach(lc, root->curOuterParams) { @@ -3430,6 +3475,48 @@ replace_nestloop_params_mutator(Node *node, PlannerInfo *root) /* And return the replacement Param */ return (Node *) param; } + if (IsA(node, PlaceHolderVar)) + { + PlaceHolderVar *phv = (PlaceHolderVar *) node; + Param *param; + NestLoopParam *nlp; + ListCell *lc; + + /* Upper-level PlaceHolderVars should be long gone at this point */ + Assert(phv->phlevelsup == 0); + + /* + * If not to be replaced, just return the PlaceHolderVar unmodified. + * We use bms_overlap as a cheap/quick test to see if the PHV might + * be evaluated in the outer rels, and then grab its PlaceHolderInfo + * to tell for sure. + */ + if (!bms_overlap(phv->phrels, root->curOuterRels)) + return node; + if (!bms_is_subset(find_placeholder_info(root, phv, false)->ph_eval_at, + root->curOuterRels)) + return node; + /* Create a Param representing the PlaceHolderVar */ + param = assign_nestloop_param_placeholdervar(root, phv); + /* Is this param already listed in root->curOuterParams? */ + foreach(lc, root->curOuterParams) + { + nlp = (NestLoopParam *) lfirst(lc); + if (nlp->paramno == param->paramid) + { + Assert(equal(phv, nlp->paramval)); + /* Present, so we can just return the Param */ + return (Node *) param; + } + } + /* No, so add it */ + nlp = makeNode(NestLoopParam); + nlp->paramno = param->paramid; + nlp->paramval = (Var *) phv; + root->curOuterParams = lappend(root->curOuterParams, nlp); + /* And return the replacement Param */ + return (Node *) param; + } return expression_tree_mutator(node, replace_nestloop_params_mutator, (void *) root); @@ -3442,7 +3529,7 @@ replace_nestloop_params_mutator(Node *node, PlannerInfo *root) * * We have four tasks here: * * Remove RestrictInfo nodes from the input clauses. - * * Replace any outer-relation Var nodes with nestloop Params. + * * Replace any outer-relation Var or PHV nodes with nestloop Params. * (XXX eventually, that responsibility should go elsewhere?) * * Index keys must be represented by Var nodes with varattno set to the * index's attribute number, not the attribute number in the original rel. @@ -4128,6 +4215,7 @@ make_remotequery(List *qptlist, List *qpqual, Index scanrelid) plan->righttree = NULL; node->scan.scanrelid = scanrelid; node->read_only = true; + node->has_row_marks = false; return node; } @@ -4442,55 +4530,6 @@ make_sort(PlannerInfo *root, Plan *lefttree, int numCols, return node; } -/* - * add_sort_column --- utility subroutine for building sort info arrays - * - * We need this routine because the same column might be selected more than - * once as a sort key column; if so, the extra mentions are redundant. - * - * Caller is assumed to have allocated the arrays large enough for the - * max possible number of columns. Return value is the new column count. - */ -static int -add_sort_column(AttrNumber colIdx, Oid sortOp, Oid coll, bool nulls_first, - int numCols, AttrNumber *sortColIdx, - Oid *sortOperators, Oid *collations, bool *nullsFirst) -{ - int i; - - Assert(OidIsValid(sortOp)); - - for (i = 0; i < numCols; i++) - { - /* - * Note: we check sortOp because it's conceivable that "ORDER BY foo - * USING <, foo USING <<<" is not redundant, if <<< distinguishes - * values that < considers equal. We need not check nulls_first - * however because a lower-order column with the same sortop but - * opposite nulls direction is redundant. - * - * We could probably consider sort keys with the same sortop and - * different collations to be redundant too, but for the moment treat - * them as not redundant. This will be needed if we ever support - * collations with different notions of equality. - */ - if (sortColIdx[i] == colIdx && - sortOperators[numCols] == sortOp && - collations[numCols] == coll) - { - /* Already sorting by this col, so extra sort key is useless */ - return numCols; - } - } - - /* Add the column */ - sortColIdx[numCols] = colIdx; - sortOperators[numCols] = sortOp; - collations[numCols] = coll; - nullsFirst[numCols] = nulls_first; - return numCols + 1; -} - /* * prepare_sort_from_pathkeys * Prepare to sort according to given pathkeys @@ -4500,8 +4539,10 @@ add_sort_column(AttrNumber colIdx, Oid sortOp, Oid coll, bool nulls_first, * plan targetlist if needed to add resjunk sort columns. * * Input parameters: - * 'lefttree' is the node which yields input tuples + * 'lefttree' is the plan node which yields input tuples * 'pathkeys' is the list of pathkeys by which the result is to be sorted + * 'relids' identifies the child relation being sorted, if any + * 'reqColIdx' is NULL or an array of required sort key column numbers * 'adjust_tlist_in_place' is TRUE if lefttree must be modified in-place * * We must convert the pathkey information into arrays of sort key column @@ -4509,6 +4550,14 @@ add_sort_column(AttrNumber colIdx, Oid sortOp, Oid coll, bool nulls_first, * which is the representation the executor wants. These are returned into * the output parameters *p_numsortkeys etc. * + * When looking for matches to an EquivalenceClass's members, we will only + * consider child EC members if they match 'relids'. This protects against + * possible incorrect matches to child expressions that contain no Vars. + * + * If reqColIdx isn't NULL then it contains sort key column numbers that + * we should match. This is used when making child plans for a MergeAppend; + * it's an error if we can't match the columns. + * * If the pathkeys include expressions that aren't simple Vars, we will * usually need to add resjunk items to the input plan's targetlist to * compute these expressions, since the Sort/MergeAppend node itself won't @@ -4523,6 +4572,8 @@ add_sort_column(AttrNumber colIdx, Oid sortOp, Oid coll, bool nulls_first, */ static Plan * prepare_sort_from_pathkeys(PlannerInfo *root, Plan *lefttree, List *pathkeys, + Relids relids, + const AttrNumber *reqColIdx, bool adjust_tlist_in_place, int *p_numsortkeys, AttrNumber **p_sortColIdx, @@ -4553,6 +4604,7 @@ prepare_sort_from_pathkeys(PlannerInfo *root, Plan *lefttree, List *pathkeys, { PathKey *pathkey = (PathKey *) lfirst(i); EquivalenceClass *ec = pathkey->pk_eclass; + EquivalenceMember *em; TargetEntry *tle = NULL; Oid pk_datatype = InvalidOid; Oid sortop; @@ -4572,16 +4624,41 @@ prepare_sort_from_pathkeys(PlannerInfo *root, Plan *lefttree, List *pathkeys, Assert(list_length(ec->ec_members) == 1); pk_datatype = ((EquivalenceMember *) linitial(ec->ec_members))->em_datatype; } + else if (reqColIdx != NULL) + { + /* + * If we are given a sort column number to match, only consider + * the single TLE at that position. It's possible that there + * is no such TLE, in which case fall through and generate a + * resjunk targetentry (we assume this must have happened in the + * parent plan as well). If there is a TLE but it doesn't match + * the pathkey's EC, we do the same, which is probably the wrong + * thing but we'll leave it to caller to complain about the + * mismatch. + */ + tle = get_tle_by_resno(tlist, reqColIdx[numsortkeys]); + if (tle) + { + em = find_ec_member_for_tle(ec, tle, relids); + if (em) + { + /* found expr at right place in tlist */ + pk_datatype = em->em_datatype; + } + else + tle = NULL; + } + } else { /* * Otherwise, we can sort by any non-constant expression listed in - * the pathkey's EquivalenceClass. For now, we take the first one - * that corresponds to an available item in the tlist. If there - * isn't any, use the first one that is an expression in the - * input's vars. (The non-const restriction only matters if the - * EC is below_outer_join; but if it isn't, it won't contain - * consts anyway, else we'd have discarded the pathkey as + * the pathkey's EquivalenceClass. For now, we take the first + * tlist item found in the EC. If there's no match, we'll generate + * a resjunk entry using the first EC member that is an expression + * in the input's vars. (The non-const restriction only matters + * if the EC is below_outer_join; but if it isn't, it won't + * contain consts anyway, else we'd have discarded the pathkey as * redundant.) * * XXX if we have a choice, is there any way of figuring out which @@ -4590,9 +4667,36 @@ prepare_sort_from_pathkeys(PlannerInfo *root, Plan *lefttree, List *pathkeys, * in the same equivalence class...) Not clear that we ever will * have an interesting choice in practice, so it may not matter. */ + foreach(j, tlist) + { + tle = (TargetEntry *) lfirst(j); + em = find_ec_member_for_tle(ec, tle, relids); + if (em) + { + /* found expr already in tlist */ + pk_datatype = em->em_datatype; + break; + } + tle = NULL; + } + } + + if (!tle) + { + /* + * No matching tlist item; look for a computable expression. + * Note that we treat Aggrefs as if they were variables; this + * is necessary when attempting to sort the output from an Agg + * node for use in a WindowFunc (since grouping_planner will + * have treated the Aggrefs as variables, too). + */ + Expr *sortexpr = NULL; + foreach(j, ec->ec_members) { EquivalenceMember *em = (EquivalenceMember *) lfirst(j); + List *exprvars; + ListCell *k; /* * We shouldn't be trying to sort by an equivalence class that @@ -4602,84 +4706,56 @@ prepare_sort_from_pathkeys(PlannerInfo *root, Plan *lefttree, List *pathkeys, if (em->em_is_const) continue; - tle = tlist_member((Node *) em->em_expr, tlist); - if (tle) - { - pk_datatype = em->em_datatype; - break; /* found expr already in tlist */ - } - /* - * We can also use it if the pathkey expression is a relabel - * of the tlist entry, or vice versa. This is needed for - * binary-compatible cases (cf. make_pathkey_from_sortinfo). - * We prefer an exact match, though, so we do the basic search - * first. + * Ignore child members unless they match the rel being sorted. */ - tle = tlist_member_ignore_relabel((Node *) em->em_expr, tlist); - if (tle) + if (em->em_is_child && + !bms_equal(em->em_relids, relids)) + continue; + + sortexpr = em->em_expr; + exprvars = pull_var_clause((Node *) sortexpr, + PVC_INCLUDE_AGGREGATES, + PVC_INCLUDE_PLACEHOLDERS); + foreach(k, exprvars) + { + if (!tlist_member_ignore_relabel(lfirst(k), tlist)) + break; + } + list_free(exprvars); + if (!k) { pk_datatype = em->em_datatype; - break; /* found expr already in tlist */ + break; /* found usable expression */ } } + if (!j) + elog(ERROR, "could not find pathkey item to sort"); - if (!tle) + /* + * Do we need to insert a Result node? + */ + if (!adjust_tlist_in_place && + !is_projection_capable_plan(lefttree)) { - /* No matching tlist item; look for a computable expression */ - Expr *sortexpr = NULL; - - foreach(j, ec->ec_members) - { - EquivalenceMember *em = (EquivalenceMember *) lfirst(j); - List *exprvars; - ListCell *k; - - if (em->em_is_const) - continue; - sortexpr = em->em_expr; - exprvars = pull_var_clause((Node *) sortexpr, - PVC_INCLUDE_PLACEHOLDERS); - foreach(k, exprvars) - { - if (!tlist_member_ignore_relabel(lfirst(k), tlist)) - break; - } - list_free(exprvars); - if (!k) - { - pk_datatype = em->em_datatype; - break; /* found usable expression */ - } - } - if (!j) - elog(ERROR, "could not find pathkey item to sort"); - - /* - * Do we need to insert a Result node? - */ - if (!adjust_tlist_in_place && - !is_projection_capable_plan(lefttree)) - { - /* copy needed so we don't modify input's tlist below */ - tlist = copyObject(tlist); - lefttree = (Plan *) make_result(root, tlist, NULL, - lefttree); - } + /* copy needed so we don't modify input's tlist below */ + tlist = copyObject(tlist); + lefttree = (Plan *) make_result(root, tlist, NULL, + lefttree); + } - /* Don't bother testing is_projection_capable_plan again */ - adjust_tlist_in_place = true; + /* Don't bother testing is_projection_capable_plan again */ + adjust_tlist_in_place = true; - /* - * Add resjunk entry to input's tlist - */ - tle = makeTargetEntry(sortexpr, - list_length(tlist) + 1, - NULL, - true); - tlist = lappend(tlist, tle); - lefttree->targetlist = tlist; /* just in case NIL before */ - } + /* + * Add resjunk entry to input's tlist + */ + tle = makeTargetEntry(sortexpr, + list_length(tlist) + 1, + NULL, + true); + tlist = lappend(tlist, tle); + lefttree->targetlist = tlist; /* just in case NIL before */ } /* @@ -4695,23 +4771,14 @@ prepare_sort_from_pathkeys(PlannerInfo *root, Plan *lefttree, List *pathkeys, pathkey->pk_strategy, pk_datatype, pk_datatype, pathkey->pk_opfamily); - /* - * The column might already be selected as a sort key, if the pathkeys - * contain duplicate entries. (This can happen in scenarios where - * multiple mergejoinable clauses mention the same var, for example.) - * So enter it only once in the sort arrays. - */ - numsortkeys = add_sort_column(tle->resno, - sortop, - pathkey->pk_eclass->ec_collation, - pathkey->pk_nulls_first, - numsortkeys, - sortColIdx, sortOperators, - collations, nullsFirst); + /* Add the column to the sort arrays */ + sortColIdx[numsortkeys] = tle->resno; + sortOperators[numsortkeys] = sortop; + collations[numsortkeys] = ec->ec_collation; + nullsFirst[numsortkeys] = pathkey->pk_nulls_first; + numsortkeys++; } - Assert(numsortkeys > 0); - /* Return results */ *p_numsortkeys = numsortkeys; *p_sortColIdx = sortColIdx; @@ -4722,6 +4789,57 @@ prepare_sort_from_pathkeys(PlannerInfo *root, Plan *lefttree, List *pathkeys, return lefttree; } +/* + * find_ec_member_for_tle + * Locate an EquivalenceClass member matching the given TLE, if any + * + * Child EC members are ignored unless they match 'relids'. + */ +static EquivalenceMember * +find_ec_member_for_tle(EquivalenceClass *ec, + TargetEntry *tle, + Relids relids) +{ + Expr *tlexpr; + ListCell *lc; + + /* We ignore binary-compatible relabeling on both ends */ + tlexpr = tle->expr; + while (tlexpr && IsA(tlexpr, RelabelType)) + tlexpr = ((RelabelType *) tlexpr)->arg; + + foreach(lc, ec->ec_members) + { + EquivalenceMember *em = (EquivalenceMember *) lfirst(lc); + Expr *emexpr; + + /* + * We shouldn't be trying to sort by an equivalence class that + * contains a constant, so no need to consider such cases any + * further. + */ + if (em->em_is_const) + continue; + + /* + * Ignore child members unless they match the rel being sorted. + */ + if (em->em_is_child && + !bms_equal(em->em_relids, relids)) + continue; + + /* Match if same expression (after stripping relabel) */ + emexpr = em->em_expr; + while (emexpr && IsA(emexpr, RelabelType)) + emexpr = ((RelabelType *) emexpr)->arg; + + if (equal(emexpr, tlexpr)) + return em; + } + + return NULL; +} + /* * make_sort_from_pathkeys * Create sort plan to sort according to given pathkeys @@ -4743,6 +4861,8 @@ make_sort_from_pathkeys(PlannerInfo *root, Plan *lefttree, List *pathkeys, /* Compute sort column info, and adjust lefttree as needed */ lefttree = prepare_sort_from_pathkeys(root, lefttree, pathkeys, + NULL, + NULL, false, &numsortkeys, &sortColIdx, @@ -4774,9 +4894,7 @@ make_sort_from_sortclauses(PlannerInfo *root, List *sortcls, Plan *lefttree) Oid *collations; bool *nullsFirst; - /* - * We will need at most list_length(sortcls) sort columns; possibly less - */ + /* Convert list-ish representation to arrays wanted by executor */ numsortkeys = list_length(sortcls); sortColIdx = (AttrNumber *) palloc(numsortkeys * sizeof(AttrNumber)); sortOperators = (Oid *) palloc(numsortkeys * sizeof(Oid)); @@ -4784,27 +4902,18 @@ make_sort_from_sortclauses(PlannerInfo *root, List *sortcls, Plan *lefttree) nullsFirst = (bool *) palloc(numsortkeys * sizeof(bool)); numsortkeys = 0; - foreach(l, sortcls) { SortGroupClause *sortcl = (SortGroupClause *) lfirst(l); TargetEntry *tle = get_sortgroupclause_tle(sortcl, sub_tlist); - /* - * Check for the possibility of duplicate order-by clauses --- the - * parser should have removed 'em, but no point in sorting - * redundantly. - */ - numsortkeys = add_sort_column(tle->resno, sortcl->sortop, - exprCollation((Node *) tle->expr), - sortcl->nulls_first, - numsortkeys, - sortColIdx, sortOperators, - collations, nullsFirst); + sortColIdx[numsortkeys] = tle->resno; + sortOperators[numsortkeys] = sortcl->sortop; + collations[numsortkeys] = exprCollation((Node *) tle->expr); + nullsFirst[numsortkeys] = sortcl->nulls_first; + numsortkeys++; } - Assert(numsortkeys > 0); - return make_sort(root, lefttree, numsortkeys, sortColIdx, sortOperators, collations, nullsFirst, -1.0); @@ -4830,7 +4939,6 @@ make_sort_from_groupcols(PlannerInfo *root, Plan *lefttree) { List *sub_tlist = lefttree->targetlist; - int grpno = 0; ListCell *l; int numsortkeys; AttrNumber *sortColIdx; @@ -4838,9 +4946,7 @@ make_sort_from_groupcols(PlannerInfo *root, Oid *collations; bool *nullsFirst; - /* - * We will need at most list_length(groupcls) sort columns; possibly less - */ + /* Convert list-ish representation to arrays wanted by executor */ numsortkeys = list_length(groupcls); sortColIdx = (AttrNumber *) palloc(numsortkeys * sizeof(AttrNumber)); sortOperators = (Oid *) palloc(numsortkeys * sizeof(Oid)); @@ -4848,28 +4954,18 @@ make_sort_from_groupcols(PlannerInfo *root, nullsFirst = (bool *) palloc(numsortkeys * sizeof(bool)); numsortkeys = 0; - foreach(l, groupcls) { SortGroupClause *grpcl = (SortGroupClause *) lfirst(l); - TargetEntry *tle = get_tle_by_resno(sub_tlist, grpColIdx[grpno]); + TargetEntry *tle = get_tle_by_resno(sub_tlist, grpColIdx[numsortkeys]); - /* - * Check for the possibility of duplicate group-by clauses --- the - * parser should have removed 'em, but no point in sorting - * redundantly. - */ - numsortkeys = add_sort_column(tle->resno, grpcl->sortop, - exprCollation((Node *) tle->expr), - grpcl->nulls_first, - numsortkeys, - sortColIdx, sortOperators, - collations, nullsFirst); - grpno++; + sortColIdx[numsortkeys] = tle->resno; + sortOperators[numsortkeys] = grpcl->sortop; + collations[numsortkeys] = exprCollation((Node *) tle->expr); + nullsFirst[numsortkeys] = grpcl->nulls_first; + numsortkeys++; } - Assert(numsortkeys > 0); - return make_sort(root, lefttree, numsortkeys, sortColIdx, sortOperators, collations, nullsFirst, -1.0); @@ -5429,16 +5525,8 @@ make_modifytable(CmdType operation, bool canSetTag, node->plan.lefttree = NULL; node->plan.righttree = NULL; node->plan.qual = NIL; - - /* - * Set up the visible plan targetlist as being the same as the first - * RETURNING list. This is for the use of EXPLAIN; the executor won't pay - * any attention to the targetlist. - */ - if (returningLists) - node->plan.targetlist = copyObject(linitial(returningLists)); - else - node->plan.targetlist = NIL; + /* setrefs.c will fill in the targetlist, if needed */ + node->plan.targetlist = NIL; node->operation = operation; node->canSetTag = canSetTag; @@ -5504,7 +5592,9 @@ findReferencedVars(List *parent_vars, Plan *plan, List **out_tlist, Relids *out_ ListCell *l; /* Pull vars from both the targetlist and the clauses attached to this plan */ - vars = pull_var_clause((Node *)plan->targetlist, PVC_REJECT_PLACEHOLDERS); + vars = pull_var_clause((Node *)plan->targetlist, + PVC_RECURSE_AGGREGATES, + PVC_REJECT_PLACEHOLDERS); foreach(l, vars) { @@ -5518,7 +5608,9 @@ findReferencedVars(List *parent_vars, Plan *plan, List **out_tlist, Relids *out_ } /* Now consider the local quals */ - vars = pull_var_clause((Node *)plan->qual, PVC_REJECT_PLACEHOLDERS); + vars = pull_var_clause((Node *)plan->qual, + PVC_RECURSE_AGGREGATES, + PVC_REJECT_PLACEHOLDERS); foreach(l, vars) { @@ -5669,7 +5761,7 @@ create_remoteinsert_plan(PlannerInfo *root, Plan *topplan) fstep->exec_nodes = makeNode(ExecNodes); fstep->exec_nodes->baselocatortype = rel_loc_info->locatorType; fstep->exec_nodes->primarynodelist = NULL; - fstep->exec_nodes->nodeList = NULL; + fstep->exec_nodes->nodeList = rel_loc_info->nodeList; fstep->exec_nodes->en_relid = ttab->relid; fstep->exec_nodes->accesstype = RELATION_ACCESS_INSERT; fstep->exec_nodes->en_expr = pgxc_set_en_expr(ttab->relid, resultRelationIndex); @@ -5699,7 +5791,7 @@ create_remoteinsert_plan(PlannerInfo *root, Plan *topplan) * Those are the non-junk expressions in target list of parser tree. * WHERE clause is completed by the other expressions in target tree that have been * marked as junk during target list rewriting to be able to identify consistently - * tuples on remote coordinators. This target list is based on the information obtained + * tuples on remote Coordinators. This target list is based on the information obtained * from the inner plan that should be generated by create_remotequery_plan. */ Plan * @@ -5729,7 +5821,7 @@ create_remoteupdate_plan(PlannerInfo *root, Plan *topplan) bool is_where_printed = false; /* Control of WHERE generation */ RemoteQuery *fstep; /* Plan step generated */ ListCell *elt; - int count = 1, where_count = 1; + int count = 0, where_count = 1; int natts, count_prepparams, tot_prepparams; char *relname; @@ -5771,7 +5863,6 @@ create_remoteupdate_plan(PlannerInfo *root, Plan *topplan) * This helps to know how many parameters part of the WHERE clause need to * be sent down by extended query protocol. */ - count = 0; foreach(elt, parse->targetList) { TargetEntry *tle = lfirst(elt); @@ -5779,27 +5870,8 @@ create_remoteupdate_plan(PlannerInfo *root, Plan *topplan) count++; } count_prepparams = natts + count; - - /* Add any non-parent relations if necessary */ - foreach(elt, root->rowMarks) - { - PlanRowMark *rc = (PlanRowMark *) lfirst(elt); - - /* RowMarks with different parent are not needed */ - if (rc->rti != rc->prti) - continue; - - /* - * Count the entry and move to next element - * For a non-parent rowmark, only ctid is used. - * For a parent rowmark, ctid and tableoid are used. - */ - if (!rc->isParent) - count++; - else - count = count + 2; - } - tot_prepparams = natts + count; + /* Count entries related to Rowmarks */ + tot_prepparams = count_prepparams + pgxc_count_rowmarks_entries(root->rowMarks); /* Then allocate the array for this purpose */ param_types = (Oid *) palloc0(sizeof (Oid) * tot_prepparams); @@ -5916,62 +5988,8 @@ create_remoteupdate_plan(PlannerInfo *root, Plan *topplan) * defined in RowMarks. This is essential for UPDATE queries running with child * entries as we need to bypass them correctly at executor level. */ - elt = list_head(root->rowMarks); - foreach(elt, root->rowMarks) - { - PlanRowMark *rc = (PlanRowMark *) lfirst(elt); - - /* RowMarks with different parent are not needed */ - if (rc->rti != rc->prti) - continue; - - /* Determine the correct parameter type */ - switch (rc->markType) - { - case ROW_MARK_COPY: - { - RangeTblEntry *rte = rt_fetch(rc->prti, parse->rtable); - - /* - * PGXCTODO: We still need to determine the rowtype - * in case relation involved here is a view (see inherit.sql). - */ - if (!OidIsValid(rte->relid)) - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("Cannot generate remote UPDATE plan"), - errdetail("This relation rowtype cannot be fetched"))); - - /* - * This is the complete copy of a row, so it is necessary - * to set parameter as a rowtype - */ - count_prepparams++; - param_types[count_prepparams - 1] = get_rel_type_id(rte->relid); - } - break; - - case ROW_MARK_REFERENCE: - /* Here we have a ctid for sure */ - count_prepparams++; - param_types[count_prepparams - 1] = TIDOID; - - if (rc->isParent) - { - /* For a parent table, tableoid is also necessary */ - count_prepparams++; - /* Set parameter type */ - param_types[count_prepparams - 1] = OIDOID; - } - break; - - /* Ignore other entries */ - case ROW_MARK_SHARE: - case ROW_MARK_EXCLUSIVE: - default: - break; - } - } + param_types = pgxc_build_rowmark_entries(root->rowMarks, parse->rtable, param_types, + count_prepparams, tot_prepparams); /* Finish building the query by gathering SET and WHERE clauses */ appendStringInfo(buf, "%s", buf2->data); @@ -5991,6 +6009,7 @@ create_remoteupdate_plan(PlannerInfo *root, Plan *topplan) fstep->exec_nodes = GetRelationNodes(rel_loc_info, 0, true, UNKNOWNOID, RELATION_ACCESS_UPDATE); fstep->exec_nodes->baselocatortype = rel_loc_info->locatorType; fstep->exec_nodes->en_relid = ttab->relid; + fstep->exec_nodes->nodeList = rel_loc_info->nodeList; fstep->exec_nodes->accesstype = RELATION_ACCESS_UPDATE; fstep->exec_nodes->en_expr = pgxc_set_en_expr(ttab->relid, resultRelationIndex); SetRemoteStatementName((Plan *) fstep, NULL, tot_prepparams, param_types, 0); @@ -6034,7 +6053,7 @@ create_remotedelete_plan(PlannerInfo *root, Plan *topplan) StringInfo buf; Oid nspid; /* Relation namespace Oid */ char *nspname; /* Relation namespace name */ - int nparams; /* Attribute used is CTID */ + int count_prepparams, tot_prepparams; /* Attribute used is CTID */ Oid *param_types; /* Types of query parameters */ RemoteQuery *fstep; /* Plan step generated */ bool is_where_created = false; @@ -6062,8 +6081,15 @@ create_remotedelete_plan(PlannerInfo *root, Plan *topplan) relname = get_rel_name(ttab->relid); /* Parameters are defined by target list */ - nparams = list_length(parse->targetList); - param_types = (Oid *) palloc0(sizeof(Oid) * nparams); + count_prepparams = list_length(parse->targetList); + + /* Count entries related to Rowmarks only if there are child relations here */ + if (list_length(mt->resultRelations) != 1) + tot_prepparams = count_prepparams + pgxc_count_rowmarks_entries(root->rowMarks); + else + tot_prepparams = count_prepparams; + + param_types = (Oid *) palloc0(sizeof(Oid) * tot_prepparams); /* * Do not qualify with namespace for TEMP tables. The schema name may @@ -6093,30 +6119,28 @@ create_remotedelete_plan(PlannerInfo *root, Plan *topplan) strcmp(tle->resname, "ctid") != 0) continue; - Assert(IsA((Node *)tle->expr, Var)); - if (IsA((Node *)tle->expr, Var)) + /* Set the clause if necessary */ + if (!is_where_created) { - Var *var = (Var *) tle->expr; - - /* Target entries from other relations are not necessary */ - if (var->varno != resultRelationIndex) - continue; - - /* Set the clause if necessary */ - if (!is_where_created) - { - is_where_created = true; - appendStringInfoString(buf, "WHERE "); - } - else - appendStringInfoString(buf, "AND "); - - appendStringInfo(buf, "%s = $%d ", - quote_identifier(tle->resname), - count - 1); + is_where_created = true; + appendStringInfoString(buf, "WHERE "); } + else + appendStringInfoString(buf, "AND "); + + appendStringInfo(buf, "%s = $%d ", + quote_identifier(tle->resname), + count - 1); } + /* + * The query needs to be completed by nullifying the non-parent entries + * defined in RowMarks. This is essential for UPDATE queries running with child + * entries as we need to bypass them correctly at executor level. + */ + param_types = pgxc_build_rowmark_entries(root->rowMarks, parse->rtable, param_types, + count_prepparams, tot_prepparams); + /* Finish by building the plan step */ fstep = make_remotequery(parse->targetList, NIL, resultRelationIndex); fstep->is_temp = IsTempTable(ttab->relid); @@ -6133,8 +6157,9 @@ create_remotedelete_plan(PlannerInfo *root, Plan *topplan) RELATION_ACCESS_UPDATE); fstep->exec_nodes->baselocatortype = rel_loc_info->locatorType; fstep->exec_nodes->en_relid = ttab->relid; + fstep->exec_nodes->nodeList = rel_loc_info->nodeList; fstep->exec_nodes->accesstype = RELATION_ACCESS_UPDATE; - SetRemoteStatementName((Plan *) fstep, NULL, nparams, param_types, 0); + SetRemoteStatementName((Plan *) fstep, NULL, tot_prepparams, param_types, 0); pfree(buf->data); pfree(buf); @@ -6147,7 +6172,7 @@ create_remotedelete_plan(PlannerInfo *root, Plan *topplan) /* * create_remotegrouping_plan * Check if the grouping and aggregates can be pushed down to the - * datanodes. + * Datanodes. * Right now we can push with following restrictions * 1. there are plain aggregates (no expressions involving aggregates) and/or * expressions in group by clauses @@ -6197,7 +6222,7 @@ create_remotegrouping_plan(PlannerInfo *root, Plan *local_plan) if (!enable_remotegroup) return local_plan; /* - * We don't push aggregation and grouping to datanodes, in case there are + * We don't push aggregation and grouping to Datanodes, in case there are * windowing aggregates, distinct, having clause or sort clauses. */ if (query->hasWindowFuncs || @@ -6251,10 +6276,10 @@ create_remotegrouping_plan(PlannerInfo *root, Plan *local_plan) /* * If the remote_scan has any quals on it, those need to be executed before * doing anything. Hence we won't be able to push any aggregates or grouping - * to the data node. + * to the Datanode. * If it has any SimpleSort in it, then sorting is intended to be applied * before doing anything. Hence can not push any aggregates or grouping to - * the data node. + * the Datanode. */ if (remote_scan->scan.plan.qual || remote_scan->sort) return local_plan; @@ -6285,7 +6310,8 @@ create_remotegrouping_plan(PlannerInfo *root, Plan *local_plan) /* find all the relations referenced by targetlist of Grouping node */ temp_vars = pull_var_clause((Node *)local_plan->targetlist, - PVC_REJECT_PLACEHOLDERS); + PVC_RECURSE_AGGREGATES, + PVC_REJECT_PLACEHOLDERS); findReferencedVars(temp_vars, (Plan *)remote_scan, &temp_vartlist, &in_relids); /* @@ -6294,7 +6320,7 @@ create_remotegrouping_plan(PlannerInfo *root, Plan *local_plan) */ base_tlist = pgxc_process_grouping_targetlist(root, &(local_plan->targetlist)); /* - * If can not construct a targetlist shippable to the datanode. Resort to + * If can not construct a targetlist shippable to the Datanode. Resort to * the plan created by grouping_planner() */ if (!base_tlist) @@ -6304,7 +6330,7 @@ create_remotegrouping_plan(PlannerInfo *root, Plan *local_plan) &local_qual, &remote_qual, &reduce_plan); /* * Because of HAVING clause, we can not push the aggregates and GROUP BY - * clause to the data node. Resort to the plan created by grouping planner. + * clause to the Datanode. Resort to the plan created by grouping planner. */ if (!reduce_plan) return local_plan; @@ -6312,9 +6338,9 @@ create_remotegrouping_plan(PlannerInfo *root, Plan *local_plan) /* * We are now ready to create the RemoteQuery node to push the query to - * datanode. + * Datanode. * 1. Create a remote query node reflecting the query to be pushed to the - * datanode. + * Datanode. * 2. Modify the Grouping node passed in, to accept the results sent by the * Datanodes, then group and aggregate them, if needed. */ @@ -6462,7 +6488,8 @@ create_remotegrouping_plan(PlannerInfo *root, Plan *local_plan) remote_group->sql_statement = remote_sql_stmt->data; /* set_plan_refs needs this later */ - remote_group->read_only = query->commandType == CMD_SELECT; + remote_group->read_only = (query->commandType == CMD_SELECT && !query->hasForUpdate); + remote_group->has_row_marks = query->hasForUpdate; /* we actually need not worry about costs since this is the final plan */ remote_group_plan->startup_cost = remote_scan->scan.plan.startup_cost; @@ -6521,9 +6548,9 @@ pgxc_locate_grouping_columns(PlannerInfo *root, List *tlist, /* * pgxc_add_node_to_grouping_tlist - * Add the given node to the target list to be sent to the datanode. If it's + * Add the given node to the target list to be sent to the Datanode. If it's * Aggref node, also change the passed in node to point to the Aggref node in - * the data node's target list + * the Datanode's target list */ static List * pgxc_add_node_to_grouping_tlist(List *remote_tlist, Node *expr, Index ressortgroupref) @@ -6601,20 +6628,20 @@ pgxc_add_node_to_grouping_tlist(List *remote_tlist, Node *expr, Index ressortgro /* * pgxc_process_grouping_targetlist * The function scans the targetlist to check if the we can push anything - * from the targetlist to the datanode. Following rules govern the choice - * 1. Either all of the aggregates are pushed to the datanode or none is pushed + * from the targetlist to the Datanode. Following rules govern the choice + * 1. Either all of the aggregates are pushed to the Datanode or none is pushed * 2. If there are no aggregates, the targetlist is good to be shipped as is * 3. If aggregates are involved in expressions, we push the aggregates to the - * datanodes but not the involving expressions. + * Datanodes but not the involving expressions. * * The function constructs the targetlist for the query to be pushed to the - * datanode. It modifies the local targetlist to point to the expressions in + * Datanode. It modifies the local targetlist to point to the expressions in * remote targetlist wherever necessary (e.g. aggregates) * * PGXCTODO: we should be careful while pushing the function expressions, it's * better to push functions like strlen() which can be evaluated at the - * datanode, but we should avoid pushing functions which can only be evaluated - * at coordinator. + * Datanode, but we should avoid pushing functions which can only be evaluated + * at Coordinator. */ static List * pgxc_process_grouping_targetlist(PlannerInfo *root, List **local_tlist) @@ -6626,8 +6653,8 @@ pgxc_process_grouping_targetlist(PlannerInfo *root, List **local_tlist) /* * Walk through the target list and find out whether we can push the - * aggregates and grouping to datanodes. Also while doing so, create the - * targetlist for the query to be shipped to the datanode. Adjust the local + * aggregates and grouping to Datanodes. Also while doing so, create the + * targetlist for the query to be shipped to the Datanode. Adjust the local * targetlist accordingly. */ foreach(temp, *local_tlist) @@ -6640,8 +6667,8 @@ pgxc_process_grouping_targetlist(PlannerInfo *root, List **local_tlist) /* * If the expression is not Aggref but involves aggregates (has Aggref * nodes in the expression tree, we can not push the entire expression - * to the datanode, but push those aggregates to the data node, if those - * aggregates can be evaluated at the data nodes (if is_foreign_expr + * to the Datanode, but push those aggregates to the Datanode, if those + * aggregates can be evaluated at the Datanodes (if is_foreign_expr * returns true for entire expression). To evaluate the rest of the * expression, we need to fetch the values of VARs participating in the * expression. But, if we include the VARs under the aggregate nodes, @@ -6650,7 +6677,7 @@ pgxc_process_grouping_targetlist(PlannerInfo *root, List **local_tlist) * expression tree rooted under Aggref node. * For example, the original query is * SELECT sum(val) * val2 FROM tab1 GROUP BY val2; - * the query pushed to the data node is + * the query pushed to the Datanode is * SELECT sum(val), val2 FROM tab1 GROUP BY val2; * Notice that, if we include val in the query, it will become invalid. */ @@ -6671,7 +6698,7 @@ pgxc_process_grouping_targetlist(PlannerInfo *root, List **local_tlist) /* * if there are aggregates involved in the expression, whole expression - * can not be pushed to the data node. Pick up the aggregates and the + * can not be pushed to the Datanode. Pick up the aggregates and the * VAR nodes not covered by aggregates. */ if (context.aggs) @@ -6688,7 +6715,7 @@ pgxc_process_grouping_targetlist(PlannerInfo *root, List **local_tlist) /* * this expression is not going to be pushed as whole, thus other * clauses won't be able to find out this TLE in the results - * obtained from data node. Hence can't optimize this query. + * obtained from Datanode. Hence can't optimize this query. */ if (local_tle->ressortgroupref > 0) { @@ -6722,7 +6749,7 @@ pgxc_process_grouping_targetlist(PlannerInfo *root, List **local_tlist) { /* * If local_tlist has changed but we didn't find anything shippable to - * datanode, we need to restore the local_tlist to original state, + * Datanode, we need to restore the local_tlist to original state, */ if (orig_local_tlist) *local_tlist = orig_local_tlist; @@ -6745,13 +6772,13 @@ pgxc_process_grouping_targetlist(PlannerInfo *root, List **local_tlist) /* * pgxc_process_having_clause * For every expression in the havingQual take following action - * 1. If it has aggregates, which can be evaluated at the data nodes, add those + * 1. If it has aggregates, which can be evaluated at the Datanodes, add those * aggregates to the targetlist and modify the local aggregate expressions to - * point to the aggregate expressions being pushed to the data node. Add this + * point to the aggregate expressions being pushed to the Datanode. Add this * expression to the local qual to be evaluated locally. * 2. If the expression does not have aggregates and the whole expression can be - * evaluated at the data node, add the expression to the remote qual to be - * evaluated at the data node. + * evaluated at the Datanode, add the expression to the remote qual to be + * evaluated at the Datanode. * 3. If qual contains an expression which can not be evaluated at the data * node, the parent group plan can not be reduced to a remote_query. */ @@ -6857,7 +6884,7 @@ pgxc_set_en_expr(Oid tableoid, Index resultRelationIndex) * For round robin distributed tables, tuples must be divided equally * between the nodes. * - * For replicated tables, tuple must be inserted in all the data nodes + * For replicated tables, tuple must be inserted in all the Datanodes * * XXX Need further testing for replicated and round-robin tables */ @@ -6888,4 +6915,134 @@ pgxc_set_en_expr(Oid tableoid, Index resultRelationIndex) return (Expr *) var; } + +/* + * pgxc_count_rowmarks_entries + * Count the number of rowmarks that need to be added as prepared parameters + * for remote DML plan + */ +static int +pgxc_count_rowmarks_entries(List *rowMarks) +{ + int res = 0; + ListCell *elt; + + foreach(elt, rowMarks) + { + PlanRowMark *rc = (PlanRowMark *) lfirst(elt); + + /* RowMarks with different parent are not needed */ + if (rc->rti != rc->prti) + continue; + + /* + * Count the entry and move to next element + * For a non-parent rowmark, only ctid is used. + * For a parent rowmark, ctid and tableoid are used. + */ + if (!rc->isParent) + res++; + else + res = res + 2; + } + + return res; +} + +/* + * pgxc_build_rowmark_entries + * Complete type array for SetRemoteStatementName based on given RowMarks list + * The list of total parameters is calculated based on the current number of prepared + * parameters and the rowmark list. + */ +static Oid * +pgxc_build_rowmark_entries(List *rowMarks, List *rtable, Oid *types, int prepparams, int totparams) +{ + Oid *newtypes = types; + int rowmark_entry_num; + int count = prepparams; + ListCell *elt; + + /* No modifications is list is empty */ + if (rowMarks == NIL) + return newtypes; + + /* Nothing to do, total number of parameters is already correct */ + if (prepparams == totparams) + return newtypes; + + /* Fetch number of extra entries related to Rowmarks */ + rowmark_entry_num = pgxc_count_rowmarks_entries(rowMarks); + + /* Nothing to do */ + if (rowmark_entry_num == 0) + return newtypes; + + /* This needs to be absolutely verified */ + Assert(totparams == (prepparams + rowmark_entry_num)); + + foreach(elt, rowMarks) + { + PlanRowMark *rc = (PlanRowMark *) lfirst(elt); + + /* RowMarks with different parent are not needed */ + if (rc->rti != rc->prti) + continue; + + /* Determine the correct parameter type */ + switch (rc->markType) + { + case ROW_MARK_COPY: + { + RangeTblEntry *rte = rt_fetch(rc->prti, rtable); + + /* + * PGXCTODO: We still need to determine the rowtype + * in case relation involved here is a view (see inherit.sql). + */ + if (!OidIsValid(rte->relid)) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("Cannot generate remote query plan"), + errdetail("This relation rowtype cannot be fetched"))); + + /* + * This is the complete copy of a row, so it is necessary + * to set parameter as a rowtype + */ + count++; + newtypes[count - 1] = get_rel_type_id(rte->relid); + } + break; + + case ROW_MARK_REFERENCE: + /* Here we have a ctid for sure */ + count++; + newtypes[count - 1] = TIDOID; + + if (rc->isParent) + { + /* For a parent table, tableoid is also necessary */ + count++; + /* Set parameter type */ + newtypes[count - 1] = OIDOID; + } + break; + + /* Ignore other entries */ + case ROW_MARK_SHARE: + case ROW_MARK_EXCLUSIVE: + default: + break; + } + } + + /* This should not happen */ + if (count != totparams) + ereport(ERROR, + (errcode(ERRCODE_DATA_EXCEPTION), + errmsg("Error when generating remote query plan"))); + + return newtypes; +} #endif diff --git a/src/backend/optimizer/plan/initsplan.c b/src/backend/optimizer/plan/initsplan.c index 333ede218e..24185a6cec 100644 --- a/src/backend/optimizer/plan/initsplan.c +++ b/src/backend/optimizer/plan/initsplan.c @@ -52,9 +52,12 @@ static void distribute_qual_to_rels(PlannerInfo *root, Node *clause, JoinType jointype, Relids qualscope, Relids ojscope, - Relids outerjoin_nonnullable); + Relids outerjoin_nonnullable, + Relids deduced_nullable_relids); static bool check_outerjoin_delay(PlannerInfo *root, Relids *relids_p, Relids *nullable_relids_p, bool is_pushed_down); +static bool check_equivalence_delay(PlannerInfo *root, + RestrictInfo *restrictinfo); static bool check_redundant_nullability_qual(PlannerInfo *root, Node *clause); static void check_mergejoinable(RestrictInfo *restrictinfo); static void check_hashjoinable(RestrictInfo *restrictinfo); @@ -132,11 +135,12 @@ void build_base_rel_tlists(PlannerInfo *root, List *final_tlist) { List *tlist_vars = pull_var_clause((Node *) final_tlist, + PVC_RECURSE_AGGREGATES, PVC_INCLUDE_PLACEHOLDERS); if (tlist_vars != NIL) { - add_vars_to_targetlist(root, tlist_vars, bms_make_singleton(0)); + add_vars_to_targetlist(root, tlist_vars, bms_make_singleton(0), true); list_free(tlist_vars); } } @@ -150,10 +154,15 @@ build_base_rel_tlists(PlannerInfo *root, List *final_tlist) * * The list may also contain PlaceHolderVars. These don't necessarily * have a single owning relation; we keep their attr_needed info in - * root->placeholder_list instead. + * root->placeholder_list instead. If create_new_ph is true, it's OK + * to create new PlaceHolderInfos, and we also have to update ph_may_need; + * otherwise, the PlaceHolderInfos must already exist, and we should only + * update their ph_needed. (It should be true before deconstruct_jointree + * begins, and false after that.) */ void -add_vars_to_targetlist(PlannerInfo *root, List *vars, Relids where_needed) +add_vars_to_targetlist(PlannerInfo *root, List *vars, + Relids where_needed, bool create_new_ph) { ListCell *temp; @@ -184,18 +193,20 @@ add_vars_to_targetlist(PlannerInfo *root, List *vars, Relids where_needed) else if (IsA(node, PlaceHolderVar)) { PlaceHolderVar *phv = (PlaceHolderVar *) node; - PlaceHolderInfo *phinfo = find_placeholder_info(root, phv); + PlaceHolderInfo *phinfo = find_placeholder_info(root, phv, + create_new_ph); + /* Always adjust ph_needed */ phinfo->ph_needed = bms_add_members(phinfo->ph_needed, where_needed); /* - * Update ph_may_need too. This is currently only necessary when - * being called from build_base_rel_tlists, but we may as well do - * it always. + * If we are creating PlaceHolderInfos, mark them with the + * correct maybe-needed locations. Otherwise, it's too late to + * change that. */ - phinfo->ph_may_need = bms_add_members(phinfo->ph_may_need, - where_needed); + if (create_new_ph) + mark_placeholder_maybe_needed(root, phinfo, where_needed); } else elog(ERROR, "unrecognized node type: %d", (int) nodeTag(node)); @@ -345,7 +356,7 @@ deconstruct_recurse(PlannerInfo *root, Node *jtnode, bool below_outer_join, distribute_qual_to_rels(root, qual, false, below_outer_join, JOIN_INNER, - *qualscope, NULL, NULL); + *qualscope, NULL, NULL, NULL); } } else if (IsA(jtnode, JoinExpr)) @@ -469,7 +480,7 @@ deconstruct_recurse(PlannerInfo *root, Node *jtnode, bool below_outer_join, distribute_qual_to_rels(root, qual, false, below_outer_join, j->jointype, *qualscope, - ojscope, nonnullable_rels); + ojscope, nonnullable_rels, NULL); } /* Now we can add the SpecialJoinInfo to join_info_list */ @@ -778,13 +789,19 @@ make_outerjoininfo(PlannerInfo *root, * baserels appearing on the outer (nonnullable) side of the join * (for FULL JOIN this includes both sides of the join, and must in fact * equal qualscope) + * 'deduced_nullable_relids': if is_deduced is TRUE, the nullable relids to + * impute to the clause; otherwise NULL * * 'qualscope' identifies what level of JOIN the qual came from syntactically. * 'ojscope' is needed if we decide to force the qual up to the outer-join * level, which will be ojscope not necessarily qualscope. * - * At the time this is called, root->join_info_list must contain entries for - * all and only those special joins that are syntactically below this qual. + * In normal use (when is_deduced is FALSE), at the time this is called, + * root->join_info_list must contain entries for all and only those special + * joins that are syntactically below this qual. But when is_deduced is TRUE, + * we are adding new deduced clauses after completion of deconstruct_jointree, + * so it cannot be assumed that root->join_info_list has anything to do with + * qual placement. */ static void distribute_qual_to_rels(PlannerInfo *root, Node *clause, @@ -793,7 +810,8 @@ distribute_qual_to_rels(PlannerInfo *root, Node *clause, JoinType jointype, Relids qualscope, Relids ojscope, - Relids outerjoin_nonnullable) + Relids outerjoin_nonnullable, + Relids deduced_nullable_relids) { Relids relids; bool is_pushed_down; @@ -906,12 +924,13 @@ distribute_qual_to_rels(PlannerInfo *root, Node *clause, * If the qual came from implied-equality deduction, it should not be * outerjoin-delayed, else deducer blew it. But we can't check this * because the join_info_list may now contain OJs above where the qual - * belongs. + * belongs. For the same reason, we must rely on caller to supply the + * correct nullable_relids set. */ Assert(!ojscope); is_pushed_down = true; outerjoin_delayed = false; - nullable_relids = NULL; + nullable_relids = deduced_nullable_relids; /* Don't feed it back for more deductions */ maybe_equivalence = false; maybe_outer_join = false; @@ -1030,9 +1049,11 @@ distribute_qual_to_rels(PlannerInfo *root, Node *clause, */ if (bms_membership(relids) == BMS_MULTIPLE) { - List *vars = pull_var_clause(clause, PVC_INCLUDE_PLACEHOLDERS); + List *vars = pull_var_clause(clause, + PVC_RECURSE_AGGREGATES, + PVC_INCLUDE_PLACEHOLDERS); - add_vars_to_targetlist(root, vars, relids); + add_vars_to_targetlist(root, vars, relids, false); list_free(vars); } @@ -1079,7 +1100,8 @@ distribute_qual_to_rels(PlannerInfo *root, Node *clause, { if (maybe_equivalence) { - if (process_equivalence(root, restrictinfo, below_outer_join)) + if (check_equivalence_delay(root, restrictinfo) && + process_equivalence(root, restrictinfo, below_outer_join)) return; /* EC rejected it, so set left_ec/right_ec the hard way ... */ initialize_mergeclause_eclasses(root, restrictinfo); @@ -1251,6 +1273,44 @@ check_outerjoin_delay(PlannerInfo *root, return outerjoin_delayed; } +/* + * check_equivalence_delay + * Detect whether a potential equivalence clause is rendered unsafe + * by outer-join-delay considerations. Return TRUE if it's safe. + * + * The initial tests in distribute_qual_to_rels will consider a mergejoinable + * clause to be a potential equivalence clause if it is not outerjoin_delayed. + * But since the point of equivalence processing is that we will recombine the + * two sides of the clause with others, we have to check that each side + * satisfies the not-outerjoin_delayed condition on its own; otherwise it might + * not be safe to evaluate everywhere we could place a derived equivalence + * condition. + */ +static bool +check_equivalence_delay(PlannerInfo *root, + RestrictInfo *restrictinfo) +{ + Relids relids; + Relids nullable_relids; + + /* fast path if no special joins */ + if (root->join_info_list == NIL) + return true; + + /* must copy restrictinfo's relids to avoid changing it */ + relids = bms_copy(restrictinfo->left_relids); + /* check left side does not need delay */ + if (check_outerjoin_delay(root, &relids, &nullable_relids, true)) + return false; + + /* and similarly for the right side */ + relids = bms_copy(restrictinfo->right_relids); + if (check_outerjoin_delay(root, &relids, &nullable_relids, true)) + return false; + + return true; +} + /* * check_redundant_nullability_qual * Check to see if the qual is an IS NULL qual that is redundant with @@ -1361,11 +1421,20 @@ distribute_restrictinfo_to_rels(PlannerInfo *root, * variable-free. Otherwise the qual is applied at the lowest join level * that provides all its variables. * + * "nullable_relids" is the set of relids used in the expressions that are + * potentially nullable below the expressions. (This has to be supplied by + * caller because this function is used after deconstruct_jointree, so we + * don't have knowledge of where the clause items came from.) + * * "both_const" indicates whether both items are known pseudo-constant; * in this case it is worth applying eval_const_expressions() in case we * can produce constant TRUE or constant FALSE. (Otherwise it's not, * because the expressions went through eval_const_expressions already.) * + * Note: this function will copy item1 and item2, but it is caller's + * responsibility to make sure that the Relids parameters are fresh copies + * not shared with other uses. + * * This is currently used only when an EquivalenceClass is found to * contain pseudoconstants. See path/pathkeys.c for more details. */ @@ -1376,6 +1445,7 @@ process_implied_equality(PlannerInfo *root, Expr *item1, Expr *item2, Relids qualscope, + Relids nullable_relids, bool below_outer_join, bool both_const) { @@ -1409,15 +1479,12 @@ process_implied_equality(PlannerInfo *root, } } - /* Make a copy of qualscope to avoid problems if source EC changes */ - qualscope = bms_copy(qualscope); - /* * Push the new clause into all the appropriate restrictinfo lists. */ distribute_qual_to_rels(root, (Node *) clause, true, below_outer_join, JOIN_INNER, - qualscope, NULL, NULL); + qualscope, NULL, NULL, nullable_relids); } /* @@ -1426,6 +1493,10 @@ process_implied_equality(PlannerInfo *root, * This overlaps the functionality of process_implied_equality(), but we * must return the RestrictInfo, not push it into the joininfo tree. * + * Note: this function will copy item1 and item2, but it is caller's + * responsibility to make sure that the Relids parameters are fresh copies + * not shared with other uses. + * * Note: we do not do initialize_mergeclause_eclasses() here. It is * caller's responsibility that left_ec/right_ec be set as necessary. */ @@ -1434,7 +1505,8 @@ build_implied_join_equality(Oid opno, Oid collation, Expr *item1, Expr *item2, - Relids qualscope) + Relids qualscope, + Relids nullable_relids) { RestrictInfo *restrictinfo; Expr *clause; @@ -1451,9 +1523,6 @@ build_implied_join_equality(Oid opno, InvalidOid, collation); - /* Make a copy of qualscope to avoid problems if source EC changes */ - qualscope = bms_copy(qualscope); - /* * Build the RestrictInfo node itself. */ @@ -1462,7 +1531,7 @@ build_implied_join_equality(Oid opno, false, /* outerjoin_delayed */ false, /* pseudoconstant */ qualscope, /* required_relids */ - NULL); /* nullable_relids */ + nullable_relids); /* nullable_relids */ /* Set mergejoinability/hashjoinability flags */ check_mergejoinable(restrictinfo); diff --git a/src/backend/optimizer/plan/planagg.c b/src/backend/optimizer/plan/planagg.c index 2f5955706a..88a6c99ea5 100644 --- a/src/backend/optimizer/plan/planagg.c +++ b/src/backend/optimizer/plan/planagg.c @@ -37,6 +37,7 @@ #include "optimizer/paths.h" #include "optimizer/planmain.h" #include "optimizer/subselect.h" +#include "optimizer/tlist.h" #include "parser/parsetree.h" #include "parser/parse_clause.h" #include "utils/lsyscache.h" @@ -99,9 +100,10 @@ preprocess_minmax_aggregates(PlannerInfo *root, List *tlist) * We also restrict the query to reference exactly one table, since join * conditions can't be handled reasonably. (We could perhaps handle a * query containing cartesian-product joins, but it hardly seems worth the - * trouble.) However, the single real table could be buried in several - * levels of FromExpr due to subqueries. Note the single table could be - * an inheritance parent, too. + * trouble.) However, the single table could be buried in several levels + * of FromExpr due to subqueries. Note the "single" table could be an + * inheritance parent, too, including the case of a UNION ALL subquery + * that's been flattened to an appendrel. */ jtnode = parse->jointree; while (IsA(jtnode, FromExpr)) @@ -114,7 +116,11 @@ preprocess_minmax_aggregates(PlannerInfo *root, List *tlist) return; rtr = (RangeTblRef *) jtnode; rte = planner_rt_fetch(rtr->rtindex, root); - if (rte->rtekind != RTE_RELATION) + if (rte->rtekind == RTE_RELATION) + /* ordinary relation, ok */ ; + else if (rte->rtekind == RTE_SUBQUERY && rte->inh) + /* flattened UNION ALL subquery, ok */ ; + else return; /* @@ -251,7 +257,10 @@ optimize_minmax_aggregates(PlannerInfo *root, List *tlist, /* * We have to replace Aggrefs with Params in equivalence classes too, else - * ORDER BY or DISTINCT on an optimized aggregate will fail. + * ORDER BY or DISTINCT on an optimized aggregate will fail. We don't + * need to process child eclass members though, since they aren't of + * interest anymore --- and replace_aggs_with_params_mutator isn't able + * to handle Aggrefs containing translated child Vars, anyway. * * Note: at some point it might become necessary to mutate other data * structures too, such as the query's sortClause or distinctClause. Right @@ -259,7 +268,8 @@ optimize_minmax_aggregates(PlannerInfo *root, List *tlist, */ mutate_eclass_expressions(root, replace_aggs_with_params_mutator, - (void *) root); + (void *) root, + false); /* * Generate the output plan --- basically just a Result @@ -512,7 +522,27 @@ make_agg_subplan(PlannerInfo *root, MinMaxAggInfo *mminfo) */ plan = create_plan(subroot, mminfo->path); - plan->targetlist = subparse->targetList; + /* + * If the top-level plan node is one that cannot do expression evaluation + * and its existing target list isn't already what we need, we must insert + * a Result node to project the desired tlist. + */ + if (!is_projection_capable_plan(plan) && + !tlist_same_exprs(subparse->targetList, plan->targetlist)) + { + plan = (Plan *) make_result(subroot, + subparse->targetList, + NULL, + plan); + } + else + { + /* + * Otherwise, just replace the subplan's flat tlist with the desired + * tlist. + */ + plan->targetlist = subparse->targetList; + } plan = (Plan *) make_limit(plan, subparse->limitOffset, diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index 76830b7707..1d4e004759 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -137,7 +137,7 @@ planner(Query *parse, int cursorOptions, ParamListInfo boundParams) else #ifdef PGXC /* - * A coordinator receiving a query from another Coordinator + * A Coordinator receiving a query from another Coordinator * is not allowed to go into PGXC planner. */ if (IS_PGXC_COORDINATOR && !IsConnFromCoord()) @@ -185,7 +185,6 @@ standard_planner(Query *parse, int cursorOptions, ParamListInfo boundParams) glob = makeNode(PlannerGlobal); glob->boundParams = boundParams; - glob->paramlist = NIL; glob->subplans = NIL; glob->subrtables = NIL; glob->subrowmarks = NIL; @@ -195,6 +194,7 @@ standard_planner(Query *parse, int cursorOptions, ParamListInfo boundParams) glob->resultRelations = NIL; glob->relationOids = NIL; glob->invalItems = NIL; + glob->nParamExec = 0; glob->lastPHId = 0; glob->lastRowMarkId = 0; glob->transientPlan = false; @@ -267,7 +267,7 @@ standard_planner(Query *parse, int cursorOptions, ParamListInfo boundParams) #ifdef PGXC /* - * PGXC should apply INSERT/UPDATE/DELETE to a datanode. We are overriding + * PGXC should apply INSERT/UPDATE/DELETE to a Datanode. We are overriding * normal Postgres behavior by modifying final plan or by adding a node on * top of it. * If the optimizer finds out that there is nothing to UPDATE/INSERT/DELETE @@ -310,7 +310,7 @@ standard_planner(Query *parse, int cursorOptions, ParamListInfo boundParams) result->rowMarks = glob->finalrowmarks; result->relationOids = glob->relationOids; result->invalItems = glob->invalItems; - result->nParamExec = list_length(glob->paramlist); + result->nParamExec = glob->nParamExec; return result; } @@ -362,6 +362,7 @@ subquery_planner(PlannerGlobal *glob, Query *parse, root->glob = glob; root->query_level = parent_root ? parent_root->query_level + 1 : 1; root->parent_root = parent_root; + root->plan_params = NIL; root->planner_cxt = CurrentMemoryContext; root->init_plans = NIL; root->cte_plan_ids = NIL; @@ -453,17 +454,17 @@ subquery_planner(PlannerGlobal *glob, Query *parse, #ifdef PGXC /* - * In coordinators we separate row marks in two groups + * In Coordinators we separate row marks in two groups * one comprises of row marks of types ROW_MARK_EXCLUSIVE & ROW_MARK_SHARE * and the other contains the rest of the types of row marks - * The former is handeled on coordinator in such a way that + * The former is handeled on Coordinator in such a way that * FOR UPDATE/SHARE gets added in the remote query, whereas * the later needs to be handeled the way pg does * * PGXCTODO : This is not a very efficient way of handling row marks * Consider this join query * select * from t1, t2 where t1.val = t2.val for update - * It results in this query to be fired at the data nodes + * It results in this query to be fired at the Datanodes * SELECT val, val2, ctid FROM ONLY t2 WHERE true FOR UPDATE OF t2 * We are locking the complete table where as we should have locked * only the rows where t1.val = t2.val is met @@ -622,22 +623,10 @@ subquery_planner(PlannerGlobal *glob, Query *parse, List *rowMarks; /* - * Deal with the RETURNING clause if any. It's convenient to pass - * the returningList through setrefs.c now rather than at top - * level (if we waited, handling inherited UPDATE/DELETE would be - * much harder). + * Set up the RETURNING list-of-lists, if needed. */ if (parse->returningList) - { - List *rlist; - - Assert(parse->resultRelation); - rlist = set_returning_clause_references(root->glob, - parse->returningList, - plan, - parse->resultRelation); - returningLists = list_make1(rlist); - } + returningLists = list_make1(parse->returningList); else returningLists = NIL; @@ -667,7 +656,7 @@ subquery_planner(PlannerGlobal *glob, Query *parse, * and attach the initPlans to the top plan node. */ if (list_length(glob->subplans) != num_old_subplans || - root->glob->paramlist != NIL) + root->glob->nParamExec > 0) SS_finalize_plan(root, plan, true); /* Return internal info if caller wants it */ @@ -842,7 +831,6 @@ inheritance_planner(PlannerInfo *root) subroot.parse = (Query *) adjust_appendrel_attrs((Node *) parse, appinfo); - subroot.init_plans = NIL; subroot.hasInheritedTarget = true; /* We needn't modify the child's append_rel_list */ /* There shouldn't be any OJ info to translate, as yet */ @@ -867,22 +855,15 @@ inheritance_planner(PlannerInfo *root) subplans = lappend(subplans, subplan); /* Make sure any initplans from this rel get into the outer list */ - root->init_plans = list_concat(root->init_plans, subroot.init_plans); + root->init_plans = subroot.init_plans; /* Build list of target-relation RT indexes */ resultRelations = lappend_int(resultRelations, appinfo->child_relid); /* Build list of per-relation RETURNING targetlists */ if (parse->returningList) - { - List *rlist; - - rlist = set_returning_clause_references(root->glob, - subroot.parse->returningList, - subplan, - appinfo->child_relid); - returningLists = lappend(returningLists, rlist); - } + returningLists = lappend(returningLists, + subroot.parse->returningList); } /* Mark result as unordered (probably unnecessary) */ @@ -1509,9 +1490,9 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) #ifdef PGXC /* * Grouping will certainly not increase the number of rows - * coordinator fetches from datanode, in fact it's expected to + * Coordinator fetches from Datanode, in fact it's expected to * reduce the number drastically. Hence, try pushing GROUP BY - * clauses and aggregates to the datanode, thus saving bandwidth. + * clauses and aggregates to the Datanode, thus saving bandwidth. */ if (IS_PGXC_COORDINATOR && !IsConnFromCoord()) result_plan = create_remotegrouping_plan(root, result_plan); @@ -1561,11 +1542,16 @@ grouping_planner(PlannerInfo *root, double tuple_fraction) * step. That's handled internally by make_sort_from_pathkeys, * but we need the copyObject steps here to ensure that each plan * node has a separately modifiable tlist. + * + * Note: it's essential here to use PVC_INCLUDE_AGGREGATES so that + * Vars mentioned only in aggregate expressions aren't pulled out + * as separate targetlist entries. Otherwise we could be putting + * ungrouped Vars directly into an Agg node's tlist, resulting in + * undefined behavior. */ - window_tlist = flatten_tlist(tlist); - if (parse->hasAggs) - window_tlist = add_to_flat_tlist(window_tlist, - pull_agg_clause((Node *) tlist)); + window_tlist = flatten_tlist(tlist, + PVC_INCLUDE_AGGREGATES, + PVC_INCLUDE_PLACEHOLDERS); window_tlist = add_volatile_sort_exprs(window_tlist, tlist, activeWindows); result_plan->targetlist = (List *) copyObject(window_tlist); @@ -2018,7 +2004,7 @@ preprocess_rowmarks(PlannerInfo *root) #ifdef PGXC /* - * separate_rowmarks - In XC coordinators are supposed to skip handling + * separate_rowmarks - In XC Coordinators are supposed to skip handling * of type ROW_MARK_EXCLUSIVE & ROW_MARK_SHARE. * In order to do that we simply remove such type * of row marks from the list. Instead they are saved @@ -2673,7 +2659,8 @@ choose_hashed_distinct(PlannerInfo *root, * 'groupColIdx' receives an array of column numbers for the GROUP BY * expressions (if there are any) in the subplan's target list. * 'need_tlist_eval' is set true if we really need to evaluate the - * result tlist. + * returned tlist as-is. (Note: locate_grouping_columns assumes + * that if this is FALSE, all grouping columns are simple Vars.) * * The result is the targetlist to be passed to the subplan. */ @@ -2702,14 +2689,18 @@ make_subplanTargetList(PlannerInfo *root, } /* - * Otherwise, start with a "flattened" tlist (having just the vars - * mentioned in the targetlist and HAVING qual --- but not upper-level - * Vars; they will be replaced by Params later on). Note this includes - * vars used in resjunk items, so we are covering the needs of ORDER BY - * and window specifications. + * Otherwise, start with a "flattened" tlist (having just the Vars + * mentioned in the targetlist and HAVING qual). Note this includes Vars + * used in resjunk items, so we are covering the needs of ORDER BY and + * window specifications. Vars used within Aggrefs will be pulled out + * here, too. */ - sub_tlist = flatten_tlist(tlist); - extravars = pull_var_clause(parse->havingQual, PVC_INCLUDE_PLACEHOLDERS); + sub_tlist = flatten_tlist(tlist, + PVC_RECURSE_AGGREGATES, + PVC_INCLUDE_PLACEHOLDERS); + extravars = pull_var_clause(parse->havingQual, + PVC_RECURSE_AGGREGATES, + PVC_INCLUDE_PLACEHOLDERS); sub_tlist = add_to_flat_tlist(sub_tlist, extravars); list_free(extravars); *need_tlist_eval = false; /* only eval if not flat tlist */ @@ -2770,6 +2761,7 @@ make_subplanTargetList(PlannerInfo *root, * This is only needed if we don't use the sub_tlist chosen by * make_subplanTargetList. We have to forget the column indexes found * by that routine and re-locate the grouping exprs in the real sub_tlist. + * We assume the grouping exprs are just Vars (see make_subplanTargetList). */ static void locate_grouping_columns(PlannerInfo *root, @@ -2793,11 +2785,24 @@ locate_grouping_columns(PlannerInfo *root, foreach(gl, root->parse->groupClause) { SortGroupClause *grpcl = (SortGroupClause *) lfirst(gl); - Node *groupexpr = get_sortgroupclause_expr(grpcl, tlist); - TargetEntry *te = tlist_member(groupexpr, sub_tlist); + Var *groupexpr = (Var *) get_sortgroupclause_expr(grpcl, tlist); + TargetEntry *te; + /* + * The grouping column returned by create_plan might not have the same + * typmod as the original Var. (This can happen in cases where a + * set-returning function has been inlined, so that we now have more + * knowledge about what it returns than we did when the original Var + * was created.) So we can't use tlist_member() to search the tlist; + * instead use tlist_member_match_var. For safety, still check that + * the vartype matches. + */ + if (!(groupexpr && IsA(groupexpr, Var))) + elog(ERROR, "grouping column is not a Var as expected"); + te = tlist_member_match_var(groupexpr, sub_tlist); if (!te) elog(ERROR, "failed to locate grouping columns"); + Assert(((Var *) te->expr)->vartype == groupexpr->vartype); groupColIdx[keyno++] = te->resno; } } diff --git a/src/backend/optimizer/plan/setrefs.c b/src/backend/optimizer/plan/setrefs.c index a9c1153977..601f5b8502 100644 --- a/src/backend/optimizer/plan/setrefs.c +++ b/src/backend/optimizer/plan/setrefs.c @@ -127,6 +127,11 @@ static Node *fix_upper_expr(PlannerGlobal *glob, int rtoffset); static Node *fix_upper_expr_mutator(Node *node, fix_upper_expr_context *context); +static List *set_returning_clause_references(PlannerGlobal *glob, + List *rlist, + Plan *topplan, + Index resultRelation, + int rtoffset); static bool fix_opfuncids_walker(Node *node, void *context); static bool extract_query_dependencies_walker(Node *node, PlannerGlobal *context); @@ -573,13 +578,50 @@ set_plan_refs(PlannerGlobal *glob, Plan *plan, int rtoffset) { ModifyTable *splan = (ModifyTable *) plan; - /* - * planner.c already called set_returning_clause_references, - * so we should not process either the targetlist or the - * returningLists. - */ + Assert(splan->plan.targetlist == NIL); Assert(splan->plan.qual == NIL); + if (splan->returningLists) + { + List *newRL = NIL; + ListCell *lcrl, + *lcrr, + *lcp; + + /* + * Pass each per-subplan returningList through + * set_returning_clause_references(). + */ + Assert(list_length(splan->returningLists) == list_length(splan->resultRelations)); + Assert(list_length(splan->returningLists) == list_length(splan->plans)); + forthree(lcrl, splan->returningLists, + lcrr, splan->resultRelations, + lcp, splan->plans) + { + List *rlist = (List *) lfirst(lcrl); + Index resultrel = lfirst_int(lcrr); + Plan *subplan = (Plan *) lfirst(lcp); + + rlist = set_returning_clause_references(glob, + rlist, + subplan, + resultrel, + rtoffset); + newRL = lappend(newRL, rlist); + } + splan->returningLists = newRL; + + /* + * Set up the visible plan targetlist as being the same as + * the first RETURNING list. This is for the use of + * EXPLAIN; the executor won't pay any attention to the + * targetlist. We postpone this step until here so that + * we don't have to do set_returning_clause_references() + * twice on identical targetlists. + */ + splan->plan.targetlist = copyObject(linitial(newRL)); + } + foreach(l, splan->resultRelations) { lfirst_int(l) += rtoffset; @@ -1062,6 +1104,10 @@ set_join_references(PlannerGlobal *glob, Join *join, int rtoffset) (Node *) nlp->paramval, outer_itlist, rtoffset); + /* Check we replaced any PlaceHolderVar with simple Var */ + if (!(IsA(nlp->paramval, Var) && + nlp->paramval->varno == OUTER)) + elog(ERROR, "NestLoopParam was not reduced to a simple Var"); } } else if (IsA(join, MergeJoin)) @@ -1528,6 +1574,7 @@ fix_join_expr_mutator(Node *node, fix_join_expr_context *context) if (var->varno == context->acceptable_rel) { var = copyVar(var); + var->varno += context->rtoffset; if (var->varnoold > 0) var->varnoold += context->rtoffset; return (Node *) var; @@ -1684,25 +1731,26 @@ fix_upper_expr_mutator(Node *node, fix_upper_expr_context *context) * entries in the top subplan's targetlist. Vars referencing the result * table should be left alone, however (the executor will evaluate them * using the actual heap tuple, after firing triggers if any). In the - * adjusted RETURNING list, result-table Vars will still have their - * original varno, but Vars for other rels will have varno OUTER. + * adjusted RETURNING list, result-table Vars will have their original + * varno (plus rtoffset), but Vars for other rels will have varno OUTER. * * We also must perform opcode lookup and add regclass OIDs to * glob->relationOids. * * 'rlist': the RETURNING targetlist to be fixed * 'topplan': the top subplan node that will be just below the ModifyTable - * node (note it's not yet passed through set_plan_references) + * node (note it's not yet passed through set_plan_refs) * 'resultRelation': RT index of the associated result relation + * 'rtoffset': how much to increment varnos by * - * Note: we assume that result relations will have rtoffset zero, that is, - * they are not coming from a subplan. + * Note: resultRelation is not yet adjusted by rtoffset. */ -List * +static List * set_returning_clause_references(PlannerGlobal *glob, List *rlist, Plan *topplan, - Index resultRelation) + Index resultRelation, + int rtoffset) { indexed_tlist *itlist; @@ -1727,7 +1775,7 @@ set_returning_clause_references(PlannerGlobal *glob, itlist, NULL, resultRelation, - 0); + rtoffset); pfree(itlist); diff --git a/src/backend/optimizer/plan/subselect.c b/src/backend/optimizer/plan/subselect.c index 2467dd6ab1..c01b625632 100644 --- a/src/backend/optimizer/plan/subselect.c +++ b/src/backend/optimizer/plan/subselect.c @@ -57,6 +57,7 @@ typedef struct finalize_primnode_context static Node *build_subplan(PlannerInfo *root, Plan *plan, List *rtable, List *rowmarks, + List *plan_params, SubLinkType subLinkType, Node *testexpr, bool adjust_testexpr, bool unknownEqFalse); static List *generate_subquery_params(PlannerInfo *root, List *tlist, @@ -85,35 +86,42 @@ static bool finalize_primnode(Node *node, finalize_primnode_context *context); /* - * Select a PARAM_EXEC number to identify the given Var. - * If the Var already has a param slot, return that one. + * Select a PARAM_EXEC number to identify the given Var as a parameter for + * the current subquery, or for a nestloop's inner scan. + * If the Var already has a param in the current context, return that one. */ static int assign_param_for_var(PlannerInfo *root, Var *var) { ListCell *ppl; PlannerParamItem *pitem; - Index abslevel; - int i; + Index levelsup; - abslevel = root->query_level - var->varlevelsup; + /* Find the query level the Var belongs to */ + for (levelsup = var->varlevelsup; levelsup > 0; levelsup--) + root = root->parent_root; - /* If there's already a paramlist entry for this same Var, just use it */ - i = 0; - foreach(ppl, root->glob->paramlist) + /* If there's already a matching PlannerParamItem there, just use it */ + foreach(ppl, root->plan_params) { pitem = (PlannerParamItem *) lfirst(ppl); - if (pitem->abslevel == abslevel && IsA(pitem->item, Var)) + if (IsA(pitem->item, Var)) { Var *pvar = (Var *) pitem->item; + /* + * This comparison must match _equalVar(), except for ignoring + * varlevelsup. Note that _equalVar() ignores the location. + */ if (pvar->varno == var->varno && pvar->varattno == var->varattno && pvar->vartype == var->vartype && - pvar->vartypmod == var->vartypmod) - return i; + pvar->vartypmod == var->vartypmod && + pvar->varcollid == var->varcollid && + pvar->varnoold == var->varnoold && + pvar->varoattno == var->varoattno) + return pitem->paramId; } - i++; } /* Nope, so make a new one */ @@ -122,12 +130,11 @@ assign_param_for_var(PlannerInfo *root, Var *var) pitem = makeNode(PlannerParamItem); pitem->item = (Node *) var; - pitem->abslevel = abslevel; + pitem->paramId = root->glob->nParamExec++; - root->glob->paramlist = lappend(root->glob->paramlist, pitem); + root->plan_params = lappend(root->plan_params, pitem); - /* i is already the correct list index for the new item */ - return i; + return pitem->paramId; } /* @@ -142,16 +149,7 @@ replace_outer_var(PlannerInfo *root, Var *var) Assert(var->varlevelsup > 0 && var->varlevelsup < root->query_level); - /* - * Find the Var in root->glob->paramlist, or add it if not present. - * - * NOTE: in sufficiently complex querytrees, it is possible for the same - * varno/abslevel to refer to different RTEs in different parts of the - * parsetree, so that different fields might end up sharing the same Param - * number. As long as we check the vartype/typmod as well, I believe that - * this sort of aliasing will cause no trouble. The correct field should - * get stored into the Param slot at execution in each part of the tree. - */ + /* Find the Var in the appropriate plan_params, or add it if not present */ i = assign_param_for_var(root, var); retval = makeNode(Param); @@ -160,7 +158,7 @@ replace_outer_var(PlannerInfo *root, Var *var) retval->paramtype = var->vartype; retval->paramtypmod = var->vartypmod; retval->paramcollid = var->varcollid; - retval->location = -1; + retval->location = var->location; return retval; } @@ -169,12 +167,11 @@ replace_outer_var(PlannerInfo *root, Var *var) * Generate a Param node to replace the given Var, which will be supplied * from an upper NestLoop join node. * - * Because we allow nestloop and subquery Params to alias each other, - * this is effectively the same as replace_outer_var, except that we expect + * This is effectively the same as replace_outer_var, except that we expect * the Var to be local to the current query level. */ Param * -assign_nestloop_param(PlannerInfo *root, Var *var) +assign_nestloop_param_var(PlannerInfo *root, Var *var) { Param *retval; int i; @@ -189,6 +186,110 @@ assign_nestloop_param(PlannerInfo *root, Var *var) retval->paramtype = var->vartype; retval->paramtypmod = var->vartypmod; retval->paramcollid = var->varcollid; + retval->location = var->location; + + return retval; +} + +/* + * Select a PARAM_EXEC number to identify the given PlaceHolderVar as a + * parameter for the current subquery, or for a nestloop's inner scan. + * If the PHV already has a param in the current context, return that one. + * + * This is just like assign_param_for_var, except for PlaceHolderVars. + */ +static int +assign_param_for_placeholdervar(PlannerInfo *root, PlaceHolderVar *phv) +{ + ListCell *ppl; + PlannerParamItem *pitem; + Index levelsup; + + /* Find the query level the PHV belongs to */ + for (levelsup = phv->phlevelsup; levelsup > 0; levelsup--) + root = root->parent_root; + + /* If there's already a matching PlannerParamItem there, just use it */ + foreach(ppl, root->plan_params) + { + pitem = (PlannerParamItem *) lfirst(ppl); + if (IsA(pitem->item, PlaceHolderVar)) + { + PlaceHolderVar *pphv = (PlaceHolderVar *) pitem->item; + + /* We assume comparing the PHIDs is sufficient */ + if (pphv->phid == phv->phid) + return pitem->paramId; + } + } + + /* Nope, so make a new one */ + phv = (PlaceHolderVar *) copyObject(phv); + if (phv->phlevelsup != 0) + { + IncrementVarSublevelsUp((Node *) phv, -((int) phv->phlevelsup), 0); + Assert(phv->phlevelsup == 0); + } + + pitem = makeNode(PlannerParamItem); + pitem->item = (Node *) phv; + pitem->paramId = root->glob->nParamExec++; + + root->plan_params = lappend(root->plan_params, pitem); + + return pitem->paramId; +} + +/* + * Generate a Param node to replace the given PlaceHolderVar, + * which is expected to have phlevelsup > 0 (ie, it is not local). + * + * This is just like replace_outer_var, except for PlaceHolderVars. + */ +static Param * +replace_outer_placeholdervar(PlannerInfo *root, PlaceHolderVar *phv) +{ + Param *retval; + int i; + + Assert(phv->phlevelsup > 0 && phv->phlevelsup < root->query_level); + + /* Find the PHV in the appropriate plan_params, or add it if not present */ + i = assign_param_for_placeholdervar(root, phv); + + retval = makeNode(Param); + retval->paramkind = PARAM_EXEC; + retval->paramid = i; + retval->paramtype = exprType((Node *) phv->phexpr); + retval->paramtypmod = exprTypmod((Node *) phv->phexpr); + retval->paramcollid = exprCollation((Node *) phv->phexpr); + retval->location = -1; + + return retval; +} + +/* + * Generate a Param node to replace the given PlaceHolderVar, which will be + * supplied from an upper NestLoop join node. + * + * This is just like assign_nestloop_param_var, except for PlaceHolderVars. + */ +Param * +assign_nestloop_param_placeholdervar(PlannerInfo *root, PlaceHolderVar *phv) +{ + Param *retval; + int i; + + Assert(phv->phlevelsup == 0); + + i = assign_param_for_placeholdervar(root, phv); + + retval = makeNode(Param); + retval->paramkind = PARAM_EXEC; + retval->paramid = i; + retval->paramtype = exprType((Node *) phv->phexpr); + retval->paramtypmod = exprTypmod((Node *) phv->phexpr); + retval->paramcollid = exprCollation((Node *) phv->phexpr); retval->location = -1; return retval; @@ -203,11 +304,13 @@ replace_outer_agg(PlannerInfo *root, Aggref *agg) { Param *retval; PlannerParamItem *pitem; - Index abslevel; - int i; + Index levelsup; Assert(agg->agglevelsup > 0 && agg->agglevelsup < root->query_level); - abslevel = root->query_level - agg->agglevelsup; + + /* Find the query level the Aggref belongs to */ + for (levelsup = agg->agglevelsup; levelsup > 0; levelsup--) + root = root->parent_root; /* * It does not seem worthwhile to try to match duplicate outer aggs. Just @@ -219,18 +322,17 @@ replace_outer_agg(PlannerInfo *root, Aggref *agg) pitem = makeNode(PlannerParamItem); pitem->item = (Node *) agg; - pitem->abslevel = abslevel; + pitem->paramId = root->glob->nParamExec++; - root->glob->paramlist = lappend(root->glob->paramlist, pitem); - i = list_length(root->glob->paramlist) - 1; + root->plan_params = lappend(root->plan_params, pitem); retval = makeNode(Param); retval->paramkind = PARAM_EXEC; - retval->paramid = i; + retval->paramid = pitem->paramId; retval->paramtype = agg->aggtype; retval->paramtypmod = -1; retval->paramcollid = agg->aggcollid; - retval->location = -1; + retval->location = agg->location; return retval; } @@ -238,29 +340,24 @@ replace_outer_agg(PlannerInfo *root, Aggref *agg) /* * Generate a new Param node that will not conflict with any other. * - * This is used to allocate PARAM_EXEC slots for subplan outputs. + * This is used to create Params representing subplan outputs. + * We don't need to build a PlannerParamItem for such a Param, but we do + * need to record the PARAM_EXEC slot number as being allocated. */ static Param * generate_new_param(PlannerInfo *root, Oid paramtype, int32 paramtypmod, Oid paramcollation) { Param *retval; - PlannerParamItem *pitem; retval = makeNode(Param); retval->paramkind = PARAM_EXEC; - retval->paramid = list_length(root->glob->paramlist); + retval->paramid = root->glob->nParamExec++; retval->paramtype = paramtype; retval->paramtypmod = paramtypmod; retval->paramcollid = paramcollation; retval->location = -1; - pitem = makeNode(PlannerParamItem); - pitem->item = (Node *) retval; - pitem->abslevel = root->query_level; - - root->glob->paramlist = lappend(root->glob->paramlist, pitem); - return retval; } @@ -269,17 +366,13 @@ generate_new_param(PlannerInfo *root, Oid paramtype, int32 paramtypmod, * is not actually used to carry a value at runtime). Such parameters are * used for special runtime signaling purposes, such as connecting a * recursive union node to its worktable scan node or forcing plan - * re-evaluation within the EvalPlanQual mechanism. + * re-evaluation within the EvalPlanQual mechanism. No actual Param node + * exists with this ID, however. */ int SS_assign_special_param(PlannerInfo *root) { - Param *param; - - /* We generate a Param of datatype INTERNAL */ - param = generate_new_param(root, INTERNALOID, -1, InvalidOid); - /* ... but the caller only cares about its ID */ - return param->paramid; + return root->glob->nParamExec++; } /* @@ -340,6 +433,7 @@ make_subplan(PlannerInfo *root, Query *orig_subquery, SubLinkType subLinkType, double tuple_fraction; Plan *plan; PlannerInfo *subroot; + List *plan_params; Node *result; /* @@ -383,6 +477,9 @@ make_subplan(PlannerInfo *root, Query *orig_subquery, SubLinkType subLinkType, else tuple_fraction = 0.0; /* default behavior */ + /* plan_params should not be in use in current query level */ + Assert(root->plan_params == NIL); + /* * Generate the plan for the subquery. */ @@ -391,9 +488,14 @@ make_subplan(PlannerInfo *root, Query *orig_subquery, SubLinkType subLinkType, false, tuple_fraction, &subroot); + /* Isolate the params needed by this specific subplan */ + plan_params = root->plan_params; + root->plan_params = NIL; + /* And convert to SubPlan or InitPlan format. */ result = build_subplan(root, plan, subroot->parse->rtable, subroot->rowMarks, + plan_params, subLinkType, testexpr, true, isTopQual); #ifdef PGXC /* This is not necessary for a PGXC Coordinator, we just need one plan */ @@ -431,6 +533,10 @@ make_subplan(PlannerInfo *root, Query *orig_subquery, SubLinkType subLinkType, false, 0.0, &subroot); + /* Isolate the params needed by this specific subplan */ + plan_params = root->plan_params; + root->plan_params = NIL; + /* Now we can check if it'll fit in work_mem */ if (subplan_is_hashable(plan)) { @@ -441,6 +547,7 @@ make_subplan(PlannerInfo *root, Query *orig_subquery, SubLinkType subLinkType, hashplan = (SubPlan *) build_subplan(root, plan, subroot->parse->rtable, subroot->rowMarks, + plan_params, ANY_SUBLINK, newtestexpr, false, true); /* Check we got what we expected */ @@ -469,14 +576,14 @@ make_subplan(PlannerInfo *root, Query *orig_subquery, SubLinkType subLinkType, */ static Node * build_subplan(PlannerInfo *root, Plan *plan, List *rtable, List *rowmarks, + List *plan_params, SubLinkType subLinkType, Node *testexpr, bool adjust_testexpr, bool unknownEqFalse) { Node *result; SubPlan *splan; bool isInitPlan; - Bitmapset *tmpset; - int paramid; + ListCell *lc; /* * Initialize the SubPlan node. Note plan_id, plan_name, and cost fields @@ -498,34 +605,26 @@ build_subplan(PlannerInfo *root, Plan *plan, List *rtable, List *rowmarks, * Make parParam and args lists of param IDs and expressions that current * query level will pass to this child plan. */ - tmpset = bms_copy(plan->extParam); - while ((paramid = bms_first_member(tmpset)) >= 0) + foreach(lc, plan_params) { - PlannerParamItem *pitem = list_nth(root->glob->paramlist, paramid); - - if (pitem->abslevel == root->query_level) - { - Node *arg; + PlannerParamItem *pitem = (PlannerParamItem *) lfirst(lc); + Node *arg = pitem->item; - /* - * The Var or Aggref has already been adjusted to have the correct - * varlevelsup or agglevelsup. We probably don't even need to - * copy it again, but be safe. - */ - arg = copyObject(pitem->item); - - /* - * If it's an Aggref, its arguments might contain SubLinks, which - * have not yet been processed. Do that now. - */ - if (IsA(arg, Aggref)) - arg = SS_process_sublinks(root, arg, false); + /* + * The Var, PlaceHolderVar, or Aggref has already been adjusted to + * have the correct varlevelsup, phlevelsup, or agglevelsup. + * + * If it's a PlaceHolderVar or Aggref, its arguments might contain + * SubLinks, which have not yet been processed (see the comments for + * SS_replace_correlation_vars). Do that now. + */ + if (IsA(arg, PlaceHolderVar) || + IsA(arg, Aggref)) + arg = SS_process_sublinks(root, arg, false); - splan->parParam = lappend_int(splan->parParam, paramid); - splan->args = lappend(splan->args, arg); - } + splan->parParam = lappend_int(splan->parParam, pitem->paramId); + splan->args = lappend(splan->args, arg); } - bms_free(tmpset); /* * Un-correlated or undirect correlated plans of EXISTS, EXPR, ARRAY, or @@ -770,11 +869,6 @@ generate_subquery_vars(PlannerInfo *root, List *tlist, Index varno) * with Params or Vars representing the results of the sub-select. The * nodes to be substituted are passed in as the List result from * generate_subquery_params or generate_subquery_vars. - * - * The given testexpr has already been recursively processed by - * process_sublinks_mutator. Hence it can no longer contain any - * PARAM_SUBLINK Params for lower SubLink nodes; we can safely assume that - * any we find are for our own level of SubLink. */ static Node * convert_testexpr(PlannerInfo *root, @@ -813,6 +907,28 @@ convert_testexpr_mutator(Node *node, param->paramid - 1)); } } + if (IsA(node, SubLink)) + { + /* + * If we come across a nested SubLink, it is neither necessary nor + * correct to recurse into it: any PARAM_SUBLINKs we might find inside + * belong to the inner SubLink not the outer. So just return it as-is. + * + * This reasoning depends on the assumption that nothing will pull + * subexpressions into or out of the testexpr field of a SubLink, at + * least not without replacing PARAM_SUBLINKs first. If we did want + * to do that we'd need to rethink the parser-output representation + * altogether, since currently PARAM_SUBLINKs are only unique per + * SubLink not globally across the query. The whole point of + * replacing them with Vars or PARAM_EXEC nodes is to make them + * globally unique before they escape from the SubLink's testexpr. + * + * Note: this can't happen when called during SS_process_sublinks, + * because that recursively processes inner SubLinks first. It can + * happen when called from convert_ANY_sublink_to_join, though. + */ + return node; + } return expression_tree_mutator(node, convert_testexpr_mutator, (void *) context); @@ -947,9 +1063,7 @@ SS_process_ctes(PlannerInfo *root) Plan *plan; PlannerInfo *subroot; SubPlan *splan; - Bitmapset *tmpset; int paramid; - Param *prm; /* * Ignore SELECT CTEs that are not actually referenced anywhere. @@ -967,6 +1081,9 @@ SS_process_ctes(PlannerInfo *root) */ subquery = (Query *) copyObject(cte->ctequery); + /* plan_params should not be in use in current query level */ + Assert(root->plan_params == NIL); + /* * Generate the plan for the CTE query. Always plan for full * retrieval --- we don't have enough info to predict otherwise. @@ -976,6 +1093,14 @@ SS_process_ctes(PlannerInfo *root) cte->cterecursive, 0.0, &subroot); + /* + * Since the current query level doesn't yet contain any RTEs, it + * should not be possible for the CTE to have requested parameters of + * this level. + */ + if (root->plan_params) + elog(ERROR, "unexpected outer reference in CTE query"); + /* * Make a SubPlan node for it. This is just enough unlike * build_subplan that we can't share code. @@ -995,35 +1120,22 @@ SS_process_ctes(PlannerInfo *root) splan->args = NIL; /* - * Make parParam and args lists of param IDs and expressions that - * current query level will pass to this child plan. Even though this - * is an initplan, there could be side-references to earlier - * initplan's outputs, specifically their CTE output parameters. + * The node can't have any inputs (since it's an initplan), so the + * parParam and args lists remain empty. (It could contain references + * to earlier CTEs' output param IDs, but CTE outputs are not + * propagated via the args list.) */ - tmpset = bms_copy(plan->extParam); - while ((paramid = bms_first_member(tmpset)) >= 0) - { - PlannerParamItem *pitem = list_nth(root->glob->paramlist, paramid); - - if (pitem->abslevel == root->query_level) - { - prm = (Param *) pitem->item; - if (!IsA(prm, Param) || - prm->paramtype != INTERNALOID) - elog(ERROR, "bogus local parameter passed to WITH query"); - - splan->parParam = lappend_int(splan->parParam, paramid); - splan->args = lappend(splan->args, copyObject(prm)); - } - } - bms_free(tmpset); /* - * Assign a param to represent the query output. We only really care - * about reserving a parameter ID number. + * Assign a param ID to represent the CTE's output. No ordinary + * "evaluation" of this param slot ever happens, but we use the param + * ID for setParam/chgParam signaling just as if the CTE plan were + * returning a simple scalar output. (Also, the executor abuses the + * ParamExecData slot for this param ID for communication among + * multiple CteScan nodes that might be scanning this CTE.) */ - prm = generate_new_param(root, INTERNALOID, -1, InvalidOid); - splan->setParam = list_make1_int(prm->paramid); + paramid = SS_assign_special_param(root); + splan->setParam = list_make1_int(paramid); /* * Add the subplan and its rtable to the global lists. @@ -1626,24 +1738,25 @@ convert_EXISTS_to_ANY(PlannerInfo *root, Query *subselect, /* * Replace correlation vars (uplevel vars) with Params. * - * Uplevel aggregates are replaced, too. + * Uplevel PlaceHolderVars and aggregates are replaced, too. * * Note: it is critical that this runs immediately after SS_process_sublinks. - * Since we do not recurse into the arguments of uplevel aggregates, they will - * get copied to the appropriate subplan args list in the parent query with - * uplevel vars not replaced by Params, but only adjusted in level (see - * replace_outer_agg). That's exactly what we want for the vars of the parent - * level --- but if an aggregate's argument contains any further-up variables, - * they have to be replaced with Params in their turn. That will happen when - * the parent level runs SS_replace_correlation_vars. Therefore it must do - * so after expanding its sublinks to subplans. And we don't want any steps - * in between, else those steps would never get applied to the aggregate - * argument expressions, either in the parent or the child level. + * Since we do not recurse into the arguments of uplevel PHVs and aggregates, + * they will get copied to the appropriate subplan args list in the parent + * query with uplevel vars not replaced by Params, but only adjusted in level + * (see replace_outer_placeholdervar and replace_outer_agg). That's exactly + * what we want for the vars of the parent level --- but if a PHV's or + * aggregate's argument contains any further-up variables, they have to be + * replaced with Params in their turn. That will happen when the parent level + * runs SS_replace_correlation_vars. Therefore it must do so after expanding + * its sublinks to subplans. And we don't want any steps in between, else + * those steps would never get applied to the argument expressions, either in + * the parent or the child level. * * Another fairly tricky thing going on here is the handling of SubLinks in - * the arguments of uplevel aggregates. Those are not touched inside the - * intermediate query level, either. Instead, SS_process_sublinks recurses - * on them after copying the Aggref expression into the parent plan level + * the arguments of uplevel PHVs/aggregates. Those are not touched inside the + * intermediate query level, either. Instead, SS_process_sublinks recurses on + * them after copying the PHV or Aggref expression into the parent plan level * (this is actually taken care of in build_subplan). */ Node * @@ -1663,6 +1776,12 @@ replace_correlation_vars_mutator(Node *node, PlannerInfo *root) if (((Var *) node)->varlevelsup > 0) return (Node *) replace_outer_var(root, (Var *) node); } + if (IsA(node, PlaceHolderVar)) + { + if (((PlaceHolderVar *) node)->phlevelsup > 0) + return (Node *) replace_outer_placeholdervar(root, + (PlaceHolderVar *) node); + } if (IsA(node, Aggref)) { if (((Aggref *) node)->agglevelsup > 0) @@ -1722,12 +1841,17 @@ process_sublinks_mutator(Node *node, process_sublinks_context *context) } /* - * Don't recurse into the arguments of an outer aggregate here. Any - * SubLinks in the arguments have to be dealt with at the outer query - * level; they'll be handled when build_subplan collects the Aggref into - * the arguments to be passed down to the current subplan. + * Don't recurse into the arguments of an outer PHV or aggregate here. + * Any SubLinks in the arguments have to be dealt with at the outer query + * level; they'll be handled when build_subplan collects the PHV or Aggref + * into the arguments to be passed down to the current subplan. */ - if (IsA(node, Aggref)) + if (IsA(node, PlaceHolderVar)) + { + if (((PlaceHolderVar *) node)->phlevelsup > 0) + return node; + } + else if (IsA(node, Aggref)) { if (((Aggref *) node)->agglevelsup > 0) return node; @@ -1825,7 +1949,7 @@ SS_finalize_plan(PlannerInfo *root, Plan *plan, bool attach_initplans) *initExtParam, *initSetParam; Cost initplan_cost; - int paramid; + PlannerInfo *proot; ListCell *l; /* @@ -1857,31 +1981,36 @@ SS_finalize_plan(PlannerInfo *root, Plan *plan, bool attach_initplans) /* * Now determine the set of params that are validly referenceable in this * query level; to wit, those available from outer query levels plus the - * output parameters of any initPlans. (We do not include output + * output parameters of any local initPlans. (We do not include output * parameters of regular subplans. Those should only appear within the * testexpr of SubPlan nodes, and are taken care of locally within * finalize_primnode. Likewise, special parameters that are generated by * nodes such as ModifyTable are handled within finalize_plan.) - * - * Note: this is a bit overly generous since some parameters of upper - * query levels might belong to query subtrees that don't include this - * query, or might be nestloop params that won't be passed down at all. - * However, valid_params is only a debugging crosscheck, so it doesn't - * seem worth expending lots of cycles to try to be exact. */ valid_params = bms_copy(initSetParam); - paramid = 0; - foreach(l, root->glob->paramlist) + for (proot = root->parent_root; proot != NULL; proot = proot->parent_root) { - PlannerParamItem *pitem = (PlannerParamItem *) lfirst(l); - - if (pitem->abslevel < root->query_level) + /* Include ordinary Var/PHV/Aggref params */ + foreach(l, proot->plan_params) { - /* valid outer-level parameter */ - valid_params = bms_add_member(valid_params, paramid); + PlannerParamItem *pitem = (PlannerParamItem *) lfirst(l); + + valid_params = bms_add_member(valid_params, pitem->paramId); } + /* Include any outputs of outer-level initPlans */ + foreach(l, proot->init_plans) + { + SubPlan *initsubplan = (SubPlan *) lfirst(l); + ListCell *l2; - paramid++; + foreach(l2, initsubplan->setParam) + { + valid_params = bms_add_member(valid_params, lfirst_int(l2)); + } + } + /* Include worktable ID, if a recursive query is being planned */ + if (proot->wt_param_id >= 0) + valid_params = bms_add_member(valid_params, proot->wt_param_id); } /* diff --git a/src/backend/optimizer/prep/prepjointree.c b/src/backend/optimizer/prep/prepjointree.c index 20bee8010c..544e61f639 100644 --- a/src/backend/optimizer/prep/prepjointree.c +++ b/src/backend/optimizer/prep/prepjointree.c @@ -249,6 +249,7 @@ pull_up_sublinks_jointree_recurse(PlannerInfo *root, Node *jtnode, * as a sublink that is executed only for row pairs that meet the * other join conditions. Fixing this seems to require considerable * restructuring of the executor, but maybe someday it can happen. + * (See also the comparable case in pull_up_sublinks_qual_recurse.) * * We don't expect to see any pre-existing JOIN_SEMI or JOIN_ANTI * nodes here. @@ -334,9 +335,7 @@ pull_up_sublinks_qual_recurse(PlannerInfo *root, Node *node, j->rarg = pull_up_sublinks_jointree_recurse(root, j->rarg, &child_rels); - /* Pulled-up ANY/EXISTS quals can use those rels too */ - child_rels = bms_add_members(child_rels, available_rels); - /* ... and any inserted joins get stacked onto j->rarg */ + /* Any inserted joins get stacked onto j->rarg */ j->quals = pull_up_sublinks_qual_recurse(root, j->quals, child_rels, @@ -358,9 +357,7 @@ pull_up_sublinks_qual_recurse(PlannerInfo *root, Node *node, j->rarg = pull_up_sublinks_jointree_recurse(root, j->rarg, &child_rels); - /* Pulled-up ANY/EXISTS quals can use those rels too */ - child_rels = bms_add_members(child_rels, available_rels); - /* ... and any inserted joins get stacked onto j->rarg */ + /* Any inserted joins get stacked onto j->rarg */ j->quals = pull_up_sublinks_qual_recurse(root, j->quals, child_rels, @@ -380,7 +377,6 @@ pull_up_sublinks_qual_recurse(PlannerInfo *root, Node *node, /* If the immediate argument of NOT is EXISTS, try to convert */ SubLink *sublink = (SubLink *) get_notclausearg((Expr *) node); JoinExpr *j; - Relids child_rels; if (sublink && IsA(sublink, SubLink)) { @@ -390,17 +386,27 @@ pull_up_sublinks_qual_recurse(PlannerInfo *root, Node *node, available_rels); if (j) { + /* + * For the moment, refrain from recursing underneath NOT. + * As in pull_up_sublinks_jointree_recurse, recursing here + * would result in inserting a join underneath an ANTI + * join with which it could not commute, and that could + * easily lead to a worse plan than what we've + * historically generated. + */ +#ifdef NOT_USED /* Yes; recursively process what we pulled up */ + Relids child_rels; + j->rarg = pull_up_sublinks_jointree_recurse(root, j->rarg, &child_rels); - /* Pulled-up ANY/EXISTS quals can use those rels too */ - child_rels = bms_add_members(child_rels, available_rels); - /* ... and any inserted joins get stacked onto j->rarg */ + /* Any inserted joins get stacked onto j->rarg */ j->quals = pull_up_sublinks_qual_recurse(root, j->quals, child_rels, &j->rarg); +#endif /* Now insert the new join node into the join tree */ j->larg = *jtlink; *jtlink = (Node *) j; @@ -663,6 +669,7 @@ pull_up_simple_subquery(PlannerInfo *root, Node *jtnode, RangeTblEntry *rte, subroot->glob = root->glob; subroot->query_level = root->query_level; subroot->parent_root = root->parent_root; + subroot->plan_params = NIL; subroot->planner_cxt = CurrentMemoryContext; subroot->init_plans = NIL; subroot->cte_plan_ids = NIL; @@ -727,6 +734,18 @@ pull_up_simple_subquery(PlannerInfo *root, Node *jtnode, RangeTblEntry *rte, return jtnode; } + /* + * We must flatten any join alias Vars in the subquery's targetlist, + * because pulling up the subquery's subqueries might have changed their + * expansions into arbitrary expressions, which could affect + * pullup_replace_vars' decisions about whether PlaceHolderVar wrappers + * are needed for tlist entries. (Likely it'd be better to do + * flatten_join_alias_vars on the whole query tree at some earlier stage, + * maybe even in the rewriter; but for now let's just fix this case here.) + */ + subquery->targetList = (List *) + flatten_join_alias_vars(subroot, (Node *) subquery->targetList); + /* * Adjust level-0 varnos in subquery so that we can append its rangetable * to upper query's. We have to fix the subquery's append_rel_list as @@ -1415,6 +1434,12 @@ pullup_replace_vars_callback(Var *var, /* Simple Vars always escape being wrapped */ wrap = false; } + else if (newnode && IsA(newnode, PlaceHolderVar) && + ((PlaceHolderVar *) newnode)->phlevelsup == 0) + { + /* No need to wrap a PlaceHolderVar with another one, either */ + wrap = false; + } else if (rcon->wrap_non_vars) { /* Wrap all non-Vars in a PlaceHolderVar */ @@ -1982,8 +2007,6 @@ reduce_outer_joins_pass2(Node *jtnode, * * Find any PlaceHolderVar nodes in the given tree that reference the * pulled-up relid, and change them to reference the replacement relid(s). - * We do not need to recurse into subqueries, since no subquery of the current - * top query could (yet) contain such a reference. * * NOTE: although this has the form of a walker, we cheat and modify the * nodes in-place. This should be OK since the tree was copied by @@ -1994,6 +2017,7 @@ reduce_outer_joins_pass2(Node *jtnode, typedef struct { int varno; + int sublevels_up; Relids subrelids; } substitute_multiple_relids_context; @@ -2007,7 +2031,8 @@ substitute_multiple_relids_walker(Node *node, { PlaceHolderVar *phv = (PlaceHolderVar *) node; - if (bms_is_member(context->varno, phv->phrels)) + if (phv->phlevelsup == context->sublevels_up && + bms_is_member(context->varno, phv->phrels)) { phv->phrels = bms_union(phv->phrels, context->subrelids); @@ -2016,6 +2041,18 @@ substitute_multiple_relids_walker(Node *node, } /* fall through to examine children */ } + if (IsA(node, Query)) + { + /* Recurse into subselects */ + bool result; + + context->sublevels_up++; + result = query_tree_walker((Query *) node, + substitute_multiple_relids_walker, + (void *) context, 0); + context->sublevels_up--; + return result; + } /* Shouldn't need to handle planner auxiliary nodes here */ Assert(!IsA(node, SpecialJoinInfo)); Assert(!IsA(node, AppendRelInfo)); @@ -2032,6 +2069,7 @@ substitute_multiple_relids(Node *node, int varno, Relids subrelids) substitute_multiple_relids_context context; context.varno = varno; + context.sublevels_up = 0; context.subrelids = subrelids; /* diff --git a/src/backend/optimizer/prep/preptlist.c b/src/backend/optimizer/prep/preptlist.c index c97150c6f7..475dba635d 100644 --- a/src/backend/optimizer/prep/preptlist.c +++ b/src/backend/optimizer/prep/preptlist.c @@ -131,7 +131,8 @@ preprocess_targetlist(PlannerInfo *root, List *tlist) /* Not a table, so we need the whole row as a junk var */ var = makeWholeRowVar(rt_fetch(rc->rti, range_table), rc->rti, - 0); + 0, + false); snprintf(resname, sizeof(resname), "wholerow%u", rc->rowmarkId); tle = makeTargetEntry((Expr *) var, list_length(tlist) + 1, @@ -154,6 +155,7 @@ preprocess_targetlist(PlannerInfo *root, List *tlist) ListCell *l; vars = pull_var_clause((Node *) parse->returningList, + PVC_RECURSE_AGGREGATES, PVC_INCLUDE_PLACEHOLDERS); foreach(l, vars) { diff --git a/src/backend/optimizer/prep/prepunion.c b/src/backend/optimizer/prep/prepunion.c index f82ab27b9a..3d9c9768cc 100644 --- a/src/backend/optimizer/prep/prepunion.c +++ b/src/backend/optimizer/prep/prepunion.c @@ -217,6 +217,9 @@ recurse_set_operations(Node *setOp, PlannerInfo *root, Assert(subquery != NULL); + /* plan_params should not be in use in current query level */ + Assert(root->plan_params == NIL); + /* * Generate plan for primitive subquery */ @@ -225,6 +228,13 @@ recurse_set_operations(Node *setOp, PlannerInfo *root, false, tuple_fraction, &subroot); + /* + * It should not be possible for the primitive query to contain any + * cross-references to other primitive queries in the setop tree. + */ + if (root->plan_params) + elog(ERROR, "unexpected outer reference in set operation subquery"); + /* * Estimate number of groups if caller wants it. If the subquery used * grouping or aggregation, its output is probably mostly unique diff --git a/src/backend/optimizer/util/clauses.c b/src/backend/optimizer/util/clauses.c index 2914c39818..4b48433824 100644 --- a/src/backend/optimizer/util/clauses.c +++ b/src/backend/optimizer/util/clauses.c @@ -26,6 +26,7 @@ #include "catalog/pg_type.h" #include "executor/executor.h" #include "executor/functions.h" +#include "funcapi.h" #include "miscadmin.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" @@ -84,7 +85,6 @@ typedef struct } inline_error_callback_arg; static bool contain_agg_clause_walker(Node *node, void *context); -static bool pull_agg_clause_walker(Node *node, List **context); static bool count_agg_clauses_walker(Node *node, count_agg_clauses_context *context); static bool find_window_functions_walker(Node *node, WindowFuncLists *lists); @@ -418,41 +418,6 @@ contain_agg_clause_walker(Node *node, void *context) return expression_tree_walker(node, contain_agg_clause_walker, context); } -/* - * pull_agg_clause - * Recursively search for Aggref nodes within a clause. - * - * Returns a List of all Aggrefs found. - * - * This does not descend into subqueries, and so should be used only after - * reduction of sublinks to subplans, or in contexts where it's known there - * are no subqueries. There mustn't be outer-aggregate references either. - */ -List * -pull_agg_clause(Node *clause) -{ - List *result = NIL; - - (void) pull_agg_clause_walker(clause, &result); - return result; -} - -static bool -pull_agg_clause_walker(Node *node, List **context) -{ - if (node == NULL) - return false; - if (IsA(node, Aggref)) - { - Assert(((Aggref *) node)->agglevelsup == 0); - *context = lappend(*context, node); - return false; /* no need to descend into arguments */ - } - Assert(!IsA(node, SubLink)); - return expression_tree_walker(node, pull_agg_clause_walker, - (void *) context); -} - /* * count_agg_clauses * Recursively count the Aggref nodes in an expression tree, and @@ -821,8 +786,8 @@ contain_subplans_walker(Node *node, void *context) * mistakenly think that something like "WHERE random() < 0.5" can be treated * as a constant qualification. * - * XXX we do not examine sub-selects to see if they contain uses of - * mutable functions. It's not real clear if that is correct or not... + * We will recursively look into Query nodes (i.e., SubLink sub-selects) + * but not into SubPlans. See comments for contain_volatile_functions(). */ bool contain_mutable_functions(Node *clause) @@ -919,6 +884,13 @@ contain_mutable_functions_walker(Node *node, void *context) } /* else fall through to check args */ } + else if (IsA(node, Query)) + { + /* Recurse into subselects */ + return query_tree_walker((Query *) node, + contain_mutable_functions_walker, + context, 0); + } return expression_tree_walker(node, contain_mutable_functions_walker, context); } @@ -933,11 +905,18 @@ contain_mutable_functions_walker(Node *node, void *context) * Recursively search for volatile functions within a clause. * * Returns true if any volatile function (or operator implemented by a - * volatile function) is found. This test prevents invalid conversions - * of volatile expressions into indexscan quals. + * volatile function) is found. This test prevents, for example, + * invalid conversions of volatile expressions into indexscan quals. * - * XXX we do not examine sub-selects to see if they contain uses of - * volatile functions. It's not real clear if that is correct or not... + * We will recursively look into Query nodes (i.e., SubLink sub-selects) + * but not into SubPlans. This is a bit odd, but intentional. If we are + * looking at a SubLink, we are probably deciding whether a query tree + * transformation is safe, and a contained sub-select should affect that; + * for example, duplicating a sub-select containing a volatile function + * would be bad. However, once we've got to the stage of having SubPlans, + * subsequent planning need not consider volatility within those, since + * the executor won't change its evaluation rules for a SubPlan based on + * volatility. */ bool contain_volatile_functions(Node *clause) @@ -1035,6 +1014,13 @@ contain_volatile_functions_walker(Node *node, void *context) } /* else fall through to check args */ } + else if (IsA(node, Query)) + { + /* Recurse into subselects */ + return query_tree_walker((Query *) node, + contain_volatile_functions_walker, + context, 0); + } return expression_tree_walker(node, contain_volatile_functions_walker, context); } @@ -4512,9 +4498,12 @@ inline_set_returning_function(PlannerInfo *root, RangeTblEntry *rte) * If it returns RECORD, we have to check against the column type list * provided in the RTE; check_sql_fn_retval can't do that. (If no match, * we just fail to inline, rather than complaining; see notes for - * tlist_matches_coltypelist.) + * tlist_matches_coltypelist.) We don't have to do this for functions + * with declared OUT parameters, even though their funcresulttype is + * RECORDOID, so check get_func_result_type too. */ if (fexpr->funcresulttype == RECORDOID && + get_func_result_type(func_oid, NULL, NULL) == TYPEFUNC_RECORD && !tlist_matches_coltypelist(querytree->targetList, rte->funccoltypes)) goto fail; diff --git a/src/backend/optimizer/util/placeholder.c b/src/backend/optimizer/util/placeholder.c index 9796fbf9b6..8b65245b51 100644 --- a/src/backend/optimizer/util/placeholder.c +++ b/src/backend/optimizer/util/placeholder.c @@ -24,7 +24,7 @@ /* Local functions */ static Relids find_placeholders_recurse(PlannerInfo *root, Node *jtnode); -static void find_placeholders_in_qual(PlannerInfo *root, Node *qual, +static void mark_placeholders_in_expr(PlannerInfo *root, Node *expr, Relids relids); @@ -50,7 +50,10 @@ make_placeholder_expr(PlannerInfo *root, Expr *expr, Relids phrels) /* * find_placeholder_info - * Fetch the PlaceHolderInfo for the given PHV; create it if not found + * Fetch the PlaceHolderInfo for the given PHV + * + * If the PlaceHolderInfo doesn't exist yet, create it if create_new_ph is + * true, else throw an error. * * This is separate from make_placeholder_expr because subquery pullup has * to make PlaceHolderVars for expressions that might not be used at all in @@ -58,10 +61,13 @@ make_placeholder_expr(PlannerInfo *root, Expr *expr, Relids phrels) * We build PlaceHolderInfos only for PHVs that are still present in the * simplified query passed to query_planner(). * - * Note: this should only be called after query_planner() has started. + * Note: this should only be called after query_planner() has started. Also, + * create_new_ph must not be TRUE after deconstruct_jointree begins, because + * make_outerjoininfo assumes that we already know about all placeholders. */ PlaceHolderInfo * -find_placeholder_info(PlannerInfo *root, PlaceHolderVar *phv) +find_placeholder_info(PlannerInfo *root, PlaceHolderVar *phv, + bool create_new_ph) { PlaceHolderInfo *phinfo; ListCell *lc; @@ -77,6 +83,9 @@ find_placeholder_info(PlannerInfo *root, PlaceHolderVar *phv) } /* Not found, so create it */ + if (!create_new_ph) + elog(ERROR, "too late to create a new PlaceHolderInfo"); + phinfo = makeNode(PlaceHolderInfo); phinfo->phid = phv->phid; @@ -157,7 +166,7 @@ find_placeholders_recurse(PlannerInfo *root, Node *jtnode) /* * Now process the top-level quals. */ - find_placeholders_in_qual(root, f->quals, jtrelids); + mark_placeholders_in_expr(root, f->quals, jtrelids); } else if (IsA(jtnode, JoinExpr)) { @@ -173,7 +182,7 @@ find_placeholders_recurse(PlannerInfo *root, Node *jtnode) jtrelids = bms_join(leftids, rightids); /* Process the qual clauses */ - find_placeholders_in_qual(root, j->quals, jtrelids); + mark_placeholders_in_expr(root, j->quals, jtrelids); } else { @@ -185,14 +194,15 @@ find_placeholders_recurse(PlannerInfo *root, Node *jtnode) } /* - * find_placeholders_in_qual - * Process a qual clause for find_placeholders_in_jointree. + * mark_placeholders_in_expr + * Find all PlaceHolderVars in the given expression, and mark them + * as possibly needed at the specified join level. * * relids is the syntactic join level to mark as the "maybe needed" level - * for each PlaceHolderVar found in the qual clause. + * for each PlaceHolderVar found in the expression. */ static void -find_placeholders_in_qual(PlannerInfo *root, Node *qual, Relids relids) +mark_placeholders_in_expr(PlannerInfo *root, Node *expr, Relids relids) { List *vars; ListCell *vl; @@ -201,7 +211,9 @@ find_placeholders_in_qual(PlannerInfo *root, Node *qual, Relids relids) * pull_var_clause does more than we need here, but it'll do and it's * convenient to use. */ - vars = pull_var_clause(qual, PVC_INCLUDE_PLACEHOLDERS); + vars = pull_var_clause(expr, + PVC_RECURSE_AGGREGATES, + PVC_INCLUDE_PLACEHOLDERS); foreach(vl, vars) { PlaceHolderVar *phv = (PlaceHolderVar *) lfirst(vl); @@ -212,25 +224,47 @@ find_placeholders_in_qual(PlannerInfo *root, Node *qual, Relids relids) continue; /* Create a PlaceHolderInfo entry if there's not one already */ - phinfo = find_placeholder_info(root, phv); - - /* Mark the PHV as possibly needed at the qual's syntactic level */ - phinfo->ph_may_need = bms_add_members(phinfo->ph_may_need, relids); + phinfo = find_placeholder_info(root, phv, true); - /* - * This is a bit tricky: the PHV's contained expression may contain - * other, lower-level PHVs. We need to get those into the - * PlaceHolderInfo list, but they aren't going to be needed where the - * outer PHV is referenced. Rather, they'll be needed where the outer - * PHV is evaluated. We can estimate that (conservatively) as the - * syntactic location of the PHV's expression. Recurse to take care - * of any such PHVs. - */ - find_placeholders_in_qual(root, (Node *) phv->phexpr, phv->phrels); + /* Mark it, and recursively process any contained placeholders */ + mark_placeholder_maybe_needed(root, phinfo, relids); } list_free(vars); } +/* + * mark_placeholder_maybe_needed + * Mark a placeholder as possibly needed at the specified join level. + * + * relids is the syntactic join level to mark as the "maybe needed" level + * for the placeholder. + * + * This is called during an initial scan of the query's targetlist and quals + * before we begin deconstruct_jointree. Once we begin deconstruct_jointree, + * all active placeholders must be present in root->placeholder_list with + * their correct ph_may_need values, because make_outerjoininfo and + * update_placeholder_eval_levels require this info to be available while + * we crawl up the join tree. + */ +void +mark_placeholder_maybe_needed(PlannerInfo *root, PlaceHolderInfo *phinfo, + Relids relids) +{ + /* Mark the PHV as possibly needed at the given syntactic level */ + phinfo->ph_may_need = bms_add_members(phinfo->ph_may_need, relids); + + /* + * This is a bit tricky: the PHV's contained expression may contain other, + * lower-level PHVs. We need to get those into the PlaceHolderInfo list, + * but they aren't going to be needed where the outer PHV is referenced. + * Rather, they'll be needed where the outer PHV is evaluated. We can + * estimate that (conservatively) as the syntactic location of the PHV's + * expression. Recurse to take care of any such PHVs. + */ + mark_placeholders_in_expr(root, (Node *) phinfo->ph_var->phexpr, + phinfo->ph_var->phrels); +} + /* * update_placeholder_eval_levels * Adjust the target evaluation levels for placeholders @@ -348,9 +382,10 @@ fix_placeholder_input_needed_levels(PlannerInfo *root) if (bms_membership(eval_at) == BMS_MULTIPLE) { List *vars = pull_var_clause((Node *) phinfo->ph_var->phexpr, + PVC_RECURSE_AGGREGATES, PVC_INCLUDE_PLACEHOLDERS); - add_vars_to_targetlist(root, vars, eval_at); + add_vars_to_targetlist(root, vars, eval_at, false); list_free(vars); } } diff --git a/src/backend/optimizer/util/plancat.c b/src/backend/optimizer/util/plancat.c index 59115789fc..c7a7716230 100644 --- a/src/backend/optimizer/util/plancat.c +++ b/src/backend/optimizer/util/plancat.c @@ -168,9 +168,10 @@ get_relation_info(PlannerInfo *root, Oid relationObjectId, bool inhparent, * Ignore invalid indexes, since they can't safely be used for * queries. Note that this is OK because the data structure we * are constructing is only used by the planner --- the executor - * still needs to insert into "invalid" indexes! + * still needs to insert into "invalid" indexes, if they're marked + * IndexIsReady. */ - if (!index->indisvalid) + if (!IndexIsValid(index)) { index_close(indexRelation, NoLock); continue; @@ -318,6 +319,7 @@ get_relation_info(PlannerInfo *root, Oid relationObjectId, bool inhparent, ChangeVarNodes((Node *) info->indpred, 1, varno, 0); info->predOK = false; /* set later in indxpath.c */ info->unique = index->indisunique; + info->immediate = index->indimmediate; info->hypothetical = false; /* @@ -411,24 +413,38 @@ estimate_rel_size(Relation rel, int32 *attr_widths, /* * HACK: if the relation has never yet been vacuumed, use a - * minimum estimate of 10 pages. This emulates a desirable aspect - * of pre-8.0 behavior, which is that we wouldn't assume a newly - * created relation is really small, which saves us from making - * really bad plans during initial data loading. (The plans are - * not wrong when they are made, but if they are cached and used - * again after the table has grown a lot, they are bad.) It would - * be better to force replanning if the table size has changed a - * lot since the plan was made ... but we don't currently have any - * infrastructure for redoing cached plans at all, so we have to - * kluge things here instead. + * minimum size estimate of 10 pages. The idea here is to avoid + * assuming a newly-created table is really small, even if it + * currently is, because that may not be true once some data gets + * loaded into it. Once a vacuum or analyze cycle has been done + * on it, it's more reasonable to believe the size is somewhat + * stable. + * + * (Note that this is only an issue if the plan gets cached and + * used again after the table has been filled. What we're trying + * to avoid is using a nestloop-type plan on a table that has + * grown substantially since the plan was made. Normally, + * autovacuum/autoanalyze will occur once enough inserts have + * happened and cause cached-plan invalidation; but that doesn't + * happen instantaneously, and it won't happen at all for cases + * such as temporary tables.) * * We approximate "never vacuumed" by "has relpages = 0", which * means this will also fire on genuinely empty relations. Not * great, but fortunately that's a seldom-seen case in the real * world, and it shouldn't degrade the quality of the plan too * much anyway to err in this direction. + * + * There are two exceptions wherein we don't apply this heuristic. + * One is if the table has inheritance children. Totally empty + * parent tables are quite common, so we should be willing to + * believe that they are empty. Also, we don't apply the 10-page + * minimum to indexes. */ - if (curpages < 10 && rel->rd_rel->relpages == 0) + if (curpages < 10 && + rel->rd_rel->relpages == 0 && + !rel->rd_rel->relhassubclass && + rel->rd_rel->relkind != RELKIND_INDEX) curpages = 10; /* report estimated # pages */ @@ -444,9 +460,10 @@ estimate_rel_size(Relation rel, int32 *attr_widths, reltuples = (double) rel->rd_rel->reltuples; /* - * If it's an index, discount the metapage. This is a kluge - * because it assumes more than it ought to about index contents; - * it's reasonably OK for btrees but a bit suspect otherwise. + * If it's an index, discount the metapage while estimating the + * number of tuples. This is a kluge because it assumes more than + * it ought to about index structure. Currently it's OK for + * btree, hash, and GIN indexes but suspect for GiST indexes. */ if (rel->rd_rel->relkind == RELKIND_INDEX && relpages > 0) @@ -454,6 +471,7 @@ estimate_rel_size(Relation rel, int32 *attr_widths, curpages--; relpages--; } + /* estimate number of tuples from previous tuple density */ if (relpages > 0) density = reltuples / (double) relpages; @@ -916,6 +934,7 @@ Selectivity restriction_selectivity(PlannerInfo *root, Oid operatorid, List *args, + Oid inputcollid, int varRelid) { RegProcedure oprrest = get_oprrest(operatorid); @@ -928,11 +947,12 @@ restriction_selectivity(PlannerInfo *root, if (!oprrest) return (Selectivity) 0.5; - result = DatumGetFloat8(OidFunctionCall4(oprrest, - PointerGetDatum(root), - ObjectIdGetDatum(operatorid), - PointerGetDatum(args), - Int32GetDatum(varRelid))); + result = DatumGetFloat8(OidFunctionCall4Coll(oprrest, + inputcollid, + PointerGetDatum(root), + ObjectIdGetDatum(operatorid), + PointerGetDatum(args), + Int32GetDatum(varRelid))); if (result < 0.0 || result > 1.0) elog(ERROR, "invalid restriction selectivity: %f", result); @@ -951,6 +971,7 @@ Selectivity join_selectivity(PlannerInfo *root, Oid operatorid, List *args, + Oid inputcollid, JoinType jointype, SpecialJoinInfo *sjinfo) { @@ -964,12 +985,13 @@ join_selectivity(PlannerInfo *root, if (!oprjoin) return (Selectivity) 0.5; - result = DatumGetFloat8(OidFunctionCall5(oprjoin, - PointerGetDatum(root), - ObjectIdGetDatum(operatorid), - PointerGetDatum(args), - Int16GetDatum(jointype), - PointerGetDatum(sjinfo))); + result = DatumGetFloat8(OidFunctionCall5Coll(oprjoin, + inputcollid, + PointerGetDatum(root), + ObjectIdGetDatum(operatorid), + PointerGetDatum(args), + Int16GetDatum(jointype), + PointerGetDatum(sjinfo))); if (result < 0.0 || result > 1.0) elog(ERROR, "invalid join selectivity: %f", result); @@ -983,6 +1005,11 @@ join_selectivity(PlannerInfo *root, * Detect whether there is a unique index on the specified attribute * of the specified relation, thus allowing us to conclude that all * the (non-null) values of the attribute are distinct. + * + * This function does not check the index's indimmediate property, which + * means that uniqueness may transiently fail to hold intra-transaction. + * That's appropriate when we are making statistical estimates, but beware + * of using this for any correctness proofs. */ bool has_unique_index(RelOptInfo *rel, AttrNumber attno) diff --git a/src/backend/optimizer/util/predtest.c b/src/backend/optimizer/util/predtest.c index a7e83729b1..bbfbc7947b 100644 --- a/src/backend/optimizer/util/predtest.c +++ b/src/backend/optimizer/util/predtest.c @@ -1249,6 +1249,7 @@ list_member_strip(List *list, Expr *datum) * and in addition we use (6) to represent <>. <> is not a btree-indexable * operator, but we assume here that if an equality operator of a btree * opfamily has a negator operator, the negator behaves as <> for the opfamily. + * (This convention is also known to get_op_btree_interpretation().) * * The interpretation of: * @@ -1285,7 +1286,7 @@ list_member_strip(List *list, Expr *datum) #define BTEQ BTEqualStrategyNumber #define BTGE BTGreaterEqualStrategyNumber #define BTGT BTGreaterStrategyNumber -#define BTNE 6 +#define BTNE ROWCOMPARE_NE static const StrategyNumber BT_implic_table[6][6] = { /* @@ -1556,18 +1557,12 @@ get_btree_test_op(Oid pred_op, Oid clause_op, bool refute_it) OprProofCacheKey key; OprProofCacheEntry *cache_entry; bool cfound; - bool pred_op_negated; - Oid pred_op_negator, - clause_op_negator, - test_op = InvalidOid; - Oid opfamily_id; + Oid test_op = InvalidOid; bool found = false; - StrategyNumber pred_strategy, - clause_strategy, - test_strategy; - Oid clause_righttype; - CatCList *catlist; - int i; + List *pred_op_infos, + *clause_op_infos; + ListCell *lcp, + *lcc; /* * Find or make a cache entry for this pair of operators. @@ -1628,135 +1623,71 @@ get_btree_test_op(Oid pred_op, Oid clause_op, bool refute_it) * corresponding test operator. This should work for any logically * consistent opfamilies. */ - catlist = SearchSysCacheList1(AMOPOPID, ObjectIdGetDatum(pred_op)); + clause_op_infos = get_op_btree_interpretation(clause_op); + if (clause_op_infos) + pred_op_infos = get_op_btree_interpretation(pred_op); + else /* no point in looking */ + pred_op_infos = NIL; - /* - * If we couldn't find any opfamily containing the pred_op, perhaps it is - * a <> operator. See if it has a negator that is in an opfamily. - */ - pred_op_negated = false; - if (catlist->n_members == 0) + foreach(lcp, pred_op_infos) { - pred_op_negator = get_negator(pred_op); - if (OidIsValid(pred_op_negator)) - { - pred_op_negated = true; - ReleaseSysCacheList(catlist); - catlist = SearchSysCacheList1(AMOPOPID, - ObjectIdGetDatum(pred_op_negator)); - } - } + OpBtreeInterpretation *pred_op_info = lfirst(lcp); + Oid opfamily_id = pred_op_info->opfamily_id; - /* Also may need the clause_op's negator */ - clause_op_negator = get_negator(clause_op); + foreach(lcc, clause_op_infos) + { + OpBtreeInterpretation *clause_op_info = lfirst(lcc); + StrategyNumber pred_strategy, + clause_strategy, + test_strategy; - /* Now search the opfamilies */ - for (i = 0; i < catlist->n_members; i++) - { - HeapTuple pred_tuple = &catlist->members[i]->tuple; - Form_pg_amop pred_form = (Form_pg_amop) GETSTRUCT(pred_tuple); - HeapTuple clause_tuple; + /* Must find them in same opfamily */ + if (opfamily_id != clause_op_info->opfamily_id) + continue; + /* Lefttypes should match */ + Assert(clause_op_info->oplefttype == pred_op_info->oplefttype); - /* Must be btree */ - if (pred_form->amopmethod != BTREE_AM_OID) - continue; + pred_strategy = pred_op_info->strategy; + clause_strategy = clause_op_info->strategy; - /* Get the predicate operator's btree strategy number */ - opfamily_id = pred_form->amopfamily; - pred_strategy = (StrategyNumber) pred_form->amopstrategy; - Assert(pred_strategy >= 1 && pred_strategy <= 5); + /* + * Look up the "test" strategy number in the implication table + */ + if (refute_it) + test_strategy = BT_refute_table[clause_strategy - 1][pred_strategy - 1]; + else + test_strategy = BT_implic_table[clause_strategy - 1][pred_strategy - 1]; - if (pred_op_negated) - { - /* Only consider negators that are = */ - if (pred_strategy != BTEqualStrategyNumber) + if (test_strategy == 0) + { + /* Can't determine implication using this interpretation */ continue; - pred_strategy = BTNE; - } + } - /* - * From the same opfamily, find a strategy number for the clause_op, - * if possible - */ - clause_tuple = SearchSysCache3(AMOPOPID, - ObjectIdGetDatum(clause_op), - CharGetDatum(AMOP_SEARCH), - ObjectIdGetDatum(opfamily_id)); - if (HeapTupleIsValid(clause_tuple)) - { - Form_pg_amop clause_form = (Form_pg_amop) GETSTRUCT(clause_tuple); - - /* Get the restriction clause operator's strategy/datatype */ - clause_strategy = (StrategyNumber) clause_form->amopstrategy; - Assert(clause_strategy >= 1 && clause_strategy <= 5); - Assert(clause_form->amoplefttype == pred_form->amoplefttype); - clause_righttype = clause_form->amoprighttype; - ReleaseSysCache(clause_tuple); - } - else if (OidIsValid(clause_op_negator)) - { - clause_tuple = SearchSysCache3(AMOPOPID, - ObjectIdGetDatum(clause_op_negator), - CharGetDatum(AMOP_SEARCH), - ObjectIdGetDatum(opfamily_id)); - if (HeapTupleIsValid(clause_tuple)) + /* + * See if opfamily has an operator for the test strategy and the + * datatypes. + */ + if (test_strategy == BTNE) { - Form_pg_amop clause_form = (Form_pg_amop) GETSTRUCT(clause_tuple); - - /* Get the restriction clause operator's strategy/datatype */ - clause_strategy = (StrategyNumber) clause_form->amopstrategy; - Assert(clause_strategy >= 1 && clause_strategy <= 5); - Assert(clause_form->amoplefttype == pred_form->amoplefttype); - clause_righttype = clause_form->amoprighttype; - ReleaseSysCache(clause_tuple); - - /* Only consider negators that are = */ - if (clause_strategy != BTEqualStrategyNumber) - continue; - clause_strategy = BTNE; + test_op = get_opfamily_member(opfamily_id, + pred_op_info->oprighttype, + clause_op_info->oprighttype, + BTEqualStrategyNumber); + if (OidIsValid(test_op)) + test_op = get_negator(test_op); } else - continue; - } - else - continue; - - /* - * Look up the "test" strategy number in the implication table - */ - if (refute_it) - test_strategy = BT_refute_table[clause_strategy - 1][pred_strategy - 1]; - else - test_strategy = BT_implic_table[clause_strategy - 1][pred_strategy - 1]; + { + test_op = get_opfamily_member(opfamily_id, + pred_op_info->oprighttype, + clause_op_info->oprighttype, + test_strategy); + } - if (test_strategy == 0) - { - /* Can't determine implication using this interpretation */ - continue; - } + if (!OidIsValid(test_op)) + continue; - /* - * See if opfamily has an operator for the test strategy and the - * datatypes. - */ - if (test_strategy == BTNE) - { - test_op = get_opfamily_member(opfamily_id, - pred_form->amoprighttype, - clause_righttype, - BTEqualStrategyNumber); - if (OidIsValid(test_op)) - test_op = get_negator(test_op); - } - else - { - test_op = get_opfamily_member(opfamily_id, - pred_form->amoprighttype, - clause_righttype, - test_strategy); - } - if (OidIsValid(test_op)) - { /* * Last check: test_op must be immutable. * @@ -1772,9 +1703,13 @@ get_btree_test_op(Oid pred_op, Oid clause_op, bool refute_it) break; } } + + if (found) + break; } - ReleaseSysCacheList(catlist); + list_free_deep(pred_op_infos); + list_free_deep(clause_op_infos); if (!found) { diff --git a/src/backend/optimizer/util/tlist.c b/src/backend/optimizer/util/tlist.c index d17424e40f..c98c767f31 100644 --- a/src/backend/optimizer/util/tlist.c +++ b/src/backend/optimizer/util/tlist.c @@ -72,13 +72,41 @@ tlist_member_ignore_relabel(Node *node, List *targetlist) return NULL; } +/* + * tlist_member_match_var + * Same as above, except that we match the provided Var on the basis + * of varno/varattno/varlevelsup only, rather than using full equal(). + * + * This is needed in some cases where we can't be sure of an exact typmod + * match. It's probably a good idea to check the vartype anyway, but + * we leave it to the caller to apply any suitable sanity checks. + */ +TargetEntry * +tlist_member_match_var(Var *var, List *targetlist) +{ + ListCell *temp; + + foreach(temp, targetlist) + { + TargetEntry *tlentry = (TargetEntry *) lfirst(temp); + Var *tlvar = (Var *) tlentry->expr; + + if (!tlvar || !IsA(tlvar, Var)) + continue; + if (var->varno == tlvar->varno && + var->varattno == tlvar->varattno && + var->varlevelsup == tlvar->varlevelsup) + return tlentry; + } + return NULL; +} + /* * flatten_tlist * Create a target list that only contains unique variables. * - * Note that Vars with varlevelsup > 0 are not included in the output - * tlist. We expect that those will eventually be replaced with Params, - * but that probably has not happened at the time this routine is called. + * Aggrefs and PlaceHolderVars in the input are treated according to + * aggbehavior and phbehavior, for which see pull_var_clause(). * * 'tlist' is the current target list * @@ -88,10 +116,12 @@ tlist_member_ignore_relabel(Node *node, List *targetlist) * Copying the Var nodes is probably overkill, but be safe for now. */ List * -flatten_tlist(List *tlist) +flatten_tlist(List *tlist, PVCAggregateBehavior aggbehavior, + PVCPlaceHolderBehavior phbehavior) { List *vlist = pull_var_clause((Node *) tlist, - PVC_INCLUDE_PLACEHOLDERS); + aggbehavior, + phbehavior); List *new_tlist; new_tlist = add_to_flat_tlist(NIL, vlist); @@ -158,6 +188,43 @@ get_tlist_exprs(List *tlist, bool includeJunk) } +/* + * tlist_same_exprs + * Check whether two target lists contain the same expressions + * + * Note: this function is used to decide whether it's safe to jam a new tlist + * into a non-projection-capable plan node. Obviously we can't do that unless + * the node's tlist shows it already returns the column values we want. + * However, we can ignore the TargetEntry attributes resname, ressortgroupref, + * resorigtbl, resorigcol, and resjunk, because those are only labelings that + * don't affect the row values computed by the node. (Moreover, if we didn't + * ignore them, we'd frequently fail to make the desired optimization, since + * the planner tends to not bother to make resname etc. valid in intermediate + * plan nodes.) Note that on success, the caller must still jam the desired + * tlist into the plan node, else it won't have the desired labeling fields. + */ +bool +tlist_same_exprs(List *tlist1, List *tlist2) +{ + ListCell *lc1, + *lc2; + + if (list_length(tlist1) != list_length(tlist2)) + return false; /* not same length, so can't match */ + + forboth(lc1, tlist1, lc2, tlist2) + { + TargetEntry *tle1 = (TargetEntry *) lfirst(lc1); + TargetEntry *tle2 = (TargetEntry *) lfirst(lc2); + + if (!equal(tle1->expr, tle2->expr)) + return false; + } + + return true; +} + + /* * Does tlist have same output datatypes as listed in colTypes? * diff --git a/src/backend/optimizer/util/var.c b/src/backend/optimizer/util/var.c index 3bc7970edf..31035da370 100644 --- a/src/backend/optimizer/util/var.c +++ b/src/backend/optimizer/util/var.c @@ -64,7 +64,8 @@ typedef struct typedef struct { List *varlist; - PVCPlaceHolderBehavior behavior; + PVCAggregateBehavior aggbehavior; + PVCPlaceHolderBehavior phbehavior; } pull_var_clause_context; typedef struct @@ -676,16 +677,22 @@ find_minimum_var_level_walker(Node *node, * pull_var_clause * Recursively pulls all Var nodes from an expression clause. * - * PlaceHolderVars are handled according to 'behavior': + * Aggrefs are handled according to 'aggbehavior': + * PVC_REJECT_AGGREGATES throw error if Aggref found + * PVC_INCLUDE_AGGREGATES include Aggrefs in output list + * PVC_RECURSE_AGGREGATES recurse into Aggref arguments + * Vars within an Aggref's expression are included only in the last case. + * + * PlaceHolderVars are handled according to 'phbehavior': * PVC_REJECT_PLACEHOLDERS throw error if PlaceHolderVar found * PVC_INCLUDE_PLACEHOLDERS include PlaceHolderVars in output list - * PVC_RECURSE_PLACEHOLDERS recurse into PlaceHolderVar argument + * PVC_RECURSE_PLACEHOLDERS recurse into PlaceHolderVar arguments * Vars within a PHV's expression are included only in the last case. * * CurrentOfExpr nodes are ignored in all cases. * - * Upper-level vars (with varlevelsup > 0) are not included. - * (These probably represent errors too, but we don't complain.) + * Upper-level vars (with varlevelsup > 0) should not be seen here, + * likewise for upper-level Aggrefs and PlaceHolderVars. * * Returns list of nodes found. Note the nodes themselves are not * copied, only referenced. @@ -694,12 +701,14 @@ find_minimum_var_level_walker(Node *node, * of sublinks to subplans! */ List * -pull_var_clause(Node *node, PVCPlaceHolderBehavior behavior) +pull_var_clause(Node *node, PVCAggregateBehavior aggbehavior, + PVCPlaceHolderBehavior phbehavior) { pull_var_clause_context context; context.varlist = NIL; - context.behavior = behavior; + context.aggbehavior = aggbehavior; + context.phbehavior = phbehavior; pull_var_clause_walker(node, &context); return context.varlist; @@ -712,20 +721,40 @@ pull_var_clause_walker(Node *node, pull_var_clause_context *context) return false; if (IsA(node, Var)) { - if (((Var *) node)->varlevelsup == 0) - context->varlist = lappend(context->varlist, node); + if (((Var *) node)->varlevelsup != 0) + elog(ERROR, "Upper-level Var found where not expected"); + context->varlist = lappend(context->varlist, node); return false; } - if (IsA(node, PlaceHolderVar)) + else if (IsA(node, Aggref)) { - switch (context->behavior) + if (((Aggref *) node)->agglevelsup != 0) + elog(ERROR, "Upper-level Aggref found where not expected"); + switch (context->aggbehavior) + { + case PVC_REJECT_AGGREGATES: + elog(ERROR, "Aggref found where not expected"); + break; + case PVC_INCLUDE_AGGREGATES: + context->varlist = lappend(context->varlist, node); + /* we do NOT descend into the contained expression */ + return false; + case PVC_RECURSE_AGGREGATES: + /* ignore the aggregate, look at its argument instead */ + break; + } + } + else if (IsA(node, PlaceHolderVar)) + { + if (((PlaceHolderVar *) node)->phlevelsup != 0) + elog(ERROR, "Upper-level PlaceHolderVar found where not expected"); + switch (context->phbehavior) { case PVC_REJECT_PLACEHOLDERS: elog(ERROR, "PlaceHolderVar found where not expected"); break; case PVC_INCLUDE_PLACEHOLDERS: - if (((PlaceHolderVar *) node)->phlevelsup == 0) - context->varlist = lappend(context->varlist, node); + context->varlist = lappend(context->varlist, node); /* we do NOT descend into the contained expression */ return false; case PVC_RECURSE_PLACEHOLDERS: @@ -808,18 +837,16 @@ flatten_join_alias_vars_mutator(Node *node, newvar = (Node *) lfirst(l); attnum++; /* Ignore dropped columns */ - if (IsA(newvar, Const)) + if (newvar == NULL) continue; + newvar = copyObject(newvar); /* * If we are expanding an alias carried down from an upper * query, must adjust its varlevelsup fields. */ if (context->sublevels_up != 0) - { - newvar = copyObject(newvar); IncrementVarSublevelsUp(newvar, context->sublevels_up, 0); - } /* Recurse in case join input is itself a join */ /* (also takes care of setting inserted_sublink if needed) */ newvar = flatten_join_alias_vars_mutator(newvar, context); @@ -838,16 +865,15 @@ flatten_join_alias_vars_mutator(Node *node, /* Expand join alias reference */ Assert(var->varattno > 0); newvar = (Node *) list_nth(rte->joinaliasvars, var->varattno - 1); + Assert(newvar != NULL); + newvar = copyObject(newvar); /* * If we are expanding an alias carried down from an upper query, must * adjust its varlevelsup fields. */ if (context->sublevels_up != 0) - { - newvar = copyObject(newvar); IncrementVarSublevelsUp(newvar, context->sublevels_up, 0); - } /* Recurse in case join input is itself a join */ newvar = flatten_join_alias_vars_mutator(newvar, context); diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c index 2cca884b34..e8919c8d54 100644 --- a/src/backend/parser/analyze.c +++ b/src/backend/parser/analyze.c @@ -25,7 +25,15 @@ #include "postgres.h" #include "access/sysattr.h" +#ifdef PGXC +#include "catalog/pg_inherits.h" +#include "catalog/pg_inherits_fn.h" +#include "catalog/indexing.h" +#include "utils/fmgroids.h" +#include "utils/tqual.h" +#endif #include "catalog/pg_type.h" +#include "miscadmin.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" #include "optimizer/var.h" @@ -79,6 +87,8 @@ static Query *transformExplainStmt(ParseState *pstate, #ifdef PGXC static Query *transformExecDirectStmt(ParseState *pstate, ExecDirectStmt *stmt); static bool IsExecDirectUtilityStmt(Node *node); +static bool is_relation_child(RangeTblEntry *child_rte, List *rtable); +static bool is_rel_child_of_rel(RangeTblEntry *child_rte, RangeTblEntry *parent_rte); #endif static void transformLockingClause(ParseState *pstate, Query *qry, @@ -478,6 +488,9 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt) */ ParseState *sub_pstate = make_parsestate(pstate); Query *selectQuery; +#ifdef PGXC + RangeTblEntry *target_rte; +#endif /* * Process the source SELECT. @@ -516,6 +529,13 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt) selectQuery, makeAlias("*SELECT*", NIL), false); +#ifdef PGXC + target_rte = rt_fetch(qry->resultRelation, pstate->p_rtable); + if (is_relation_child(target_rte, selectQuery->rtable)) + ereport(ERROR, + (errcode(ERRCODE_STATEMENT_TOO_COMPLEX), + (errmsg("INSERT SELECT is not supported when inserts are done in a child by selecting from its parent")))); +#endif rtr = makeNode(RangeTblRef); /* assume new rte is at end */ rtr->rtindex = list_length(pstate->p_rtable); @@ -1309,6 +1329,7 @@ transformSetOperationStmt(ParseState *pstate, SelectStmt *stmt) Node *limitOffset; Node *limitCount; List *lockingClause; + WithClause *withClause; Node *node; ListCell *left_tlist, *lct, @@ -1325,14 +1346,6 @@ transformSetOperationStmt(ParseState *pstate, SelectStmt *stmt) qry->commandType = CMD_SELECT; - /* process the WITH clause independently of all else */ - if (stmt->withClause) - { - qry->hasRecursive = stmt->withClause->recursive; - qry->cteList = transformWithClause(pstate, stmt->withClause); - qry->hasModifyingCTE = pstate->p_hasModifyingCTE; - } - /* * Find leftmost leaf SelectStmt; extract the one-time-only items from it * and from the top-level node. @@ -1360,11 +1373,13 @@ transformSetOperationStmt(ParseState *pstate, SelectStmt *stmt) limitOffset = stmt->limitOffset; limitCount = stmt->limitCount; lockingClause = stmt->lockingClause; + withClause = stmt->withClause; stmt->sortClause = NIL; stmt->limitOffset = NULL; stmt->limitCount = NULL; stmt->lockingClause = NIL; + stmt->withClause = NULL; /* We don't support FOR UPDATE/SHARE with set ops at the moment. */ if (lockingClause) @@ -1372,6 +1387,14 @@ transformSetOperationStmt(ParseState *pstate, SelectStmt *stmt) (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT"))); + /* Process the WITH clause independently of all else */ + if (withClause) + { + qry->hasRecursive = withClause->recursive; + qry->cteList = transformWithClause(pstate, withClause); + qry->hasModifyingCTE = pstate->p_hasModifyingCTE; + } + /* * Recursively transform the components of the tree. */ @@ -1553,6 +1576,9 @@ transformSetOperationTree(ParseState *pstate, SelectStmt *stmt, Assert(stmt && IsA(stmt, SelectStmt)); + /* Guard against stack overflow due to overly complex set-expressions */ + check_stack_depth(); + /* * Validity-check both leaf and internal SELECTs for disallowed ops. */ @@ -1570,10 +1596,10 @@ transformSetOperationTree(ParseState *pstate, SelectStmt *stmt, errmsg("SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT"))); /* - * If an internal node of a set-op tree has ORDER BY, LIMIT, or FOR UPDATE - * clauses attached, we need to treat it like a leaf node to generate an - * independent sub-Query tree. Otherwise, it can be represented by a - * SetOperationStmt node underneath the parent Query. + * If an internal node of a set-op tree has ORDER BY, LIMIT, FOR UPDATE, + * or WITH clauses attached, we need to treat it like a leaf node to + * generate an independent sub-Query tree. Otherwise, it can be + * represented by a SetOperationStmt node underneath the parent Query. */ if (stmt->op == SETOP_NONE) { @@ -1584,7 +1610,7 @@ transformSetOperationTree(ParseState *pstate, SelectStmt *stmt, { Assert(stmt->larg != NULL && stmt->rarg != NULL); if (stmt->sortClause || stmt->limitOffset || stmt->limitCount || - stmt->lockingClause) + stmt->lockingClause || stmt->withClause) isLeaf = true; else isLeaf = false; @@ -2289,10 +2315,10 @@ transformExplainStmt(ParseState *pstate, ExplainStmt *stmt) * transformExecDirectStmt - * transform an EXECUTE DIRECT Statement * - * Handling is depends if we should execute on nodes or on coordinator. + * Handling is depends if we should execute on nodes or on Coordinator. * To execute on nodes we return CMD_UTILITY query having one T_RemoteQuery node * with the inner statement as a sql_command. - * If statement is to run on coordinator we should parse inner statement and + * If statement is to run on Coordinator we should parse inner statement and * analyze resulting query tree. */ static Query * @@ -2310,6 +2336,12 @@ transformExecDirectStmt(ParseState *pstate, ExecDirectStmt *stmt) int nodeIndex; char nodetype; + /* Support not available on Datanodes */ + if (IS_PGXC_DATANODE) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("EXECUTE DIRECT cannot be executed on a Datanode"))); + if (list_length(nodelist) > 1) ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), @@ -2489,6 +2521,92 @@ IsExecDirectUtilityStmt(Node *node) return res; } + +/* + * Returns whether or not the rtable (and its subqueries) + * contain any relation who is the parent of + * the passed relation + */ +static bool +is_relation_child(RangeTblEntry *child_rte, List *rtable) +{ + ListCell *item; + + if (child_rte == NULL || rtable == NULL) + return false; + + if (child_rte->rtekind != RTE_RELATION) + return false; + + foreach(item, rtable) + { + RangeTblEntry *rte = (RangeTblEntry *) lfirst(item); + + if (rte->rtekind == RTE_RELATION) + { + if (is_rel_child_of_rel(child_rte, rte)) + return true; + } + else if (rte->rtekind == RTE_SUBQUERY) + { + return is_relation_child(child_rte, rte->subquery->rtable); + } + } + return false; +} + +/* + * Returns whether the passed RTEs have a parent child relationship + */ +static bool +is_rel_child_of_rel(RangeTblEntry *child_rte, RangeTblEntry *parent_rte) +{ + Oid parentOID; + bool res; + Relation relation; + SysScanDesc scan; + ScanKeyData key[1]; + HeapTuple inheritsTuple; + Oid inhrelid; + + /* Does parent RT entry allow inheritance? */ + if (!parent_rte->inh) + return false; + + /* Ignore any already-expanded UNION ALL nodes */ + if (parent_rte->rtekind != RTE_RELATION) + return false; + + /* Fast path for common case of childless table */ + parentOID = parent_rte->relid; + if (!has_subclass(parentOID)) + return false; + + /* Assume we did not find any match */ + res = false; + + /* Scan pg_inherits and get all the subclass OIDs one by one. */ + relation = heap_open(InheritsRelationId, AccessShareLock); + ScanKeyInit(&key[0], Anum_pg_inherits_inhparent, BTEqualStrategyNumber, F_OIDEQ, ObjectIdGetDatum(parentOID)); + scan = systable_beginscan(relation, InheritsParentIndexId, true, SnapshotNow, 1, key); + + while ((inheritsTuple = systable_getnext(scan)) != NULL) + { + inhrelid = ((Form_pg_inherits) GETSTRUCT(inheritsTuple))->inhrelid; + + /* Did we find the Oid of the passed RTE in one of the children? */ + if (child_rte->relid == inhrelid) + { + res = true; + break; + } + } + + systable_endscan(scan); + heap_close(relation, AccessShareLock); + return res; +} + #endif /* diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index fdce3d3145..859e029f1a 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -8,7 +8,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -98,6 +98,13 @@ typedef struct PrivTarget List *objs; } PrivTarget; +/* ConstraintAttributeSpec yields an integer bitmask of these flags: */ +#define CAS_NOT_DEFERRABLE 0x01 +#define CAS_DEFERRABLE 0x02 +#define CAS_INITIALLY_IMMEDIATE 0x04 +#define CAS_INITIALLY_DEFERRED 0x08 +#define CAS_NOT_VALID 0x10 + #define parser_yyerror(msg) scanner_yyerror(msg, yyscanner) #define parser_errposition(pos) scanner_errposition(pos, yyscanner) @@ -115,8 +122,6 @@ static Node *makeBitStringConst(char *str, int location); static Node *makeNullAConst(int location); static Node *makeAConst(Value *v, int location); static Node *makeBoolAConst(bool state, int location); -static FuncCall *makeOverlaps(List *largs, List *rargs, - int location, core_yyscan_t yyscanner); static void check_qualified_name(List *names, core_yyscan_t yyscanner); static List *check_func_name(List *names, core_yyscan_t yyscanner); static List *check_indirection(List *indirection, core_yyscan_t yyscanner); @@ -139,6 +144,9 @@ static RangeVar *makeRangeVarFromAnyName(List *names, int position, core_yyscan_ static void SplitColQualList(List *qualList, List **constraintList, CollateClause **collClause, core_yyscan_t yyscanner); +static void processCASbits(int cas_bits, int location, const char *constrType, + bool *deferrable, bool *initdeferred, bool *not_valid, + core_yyscan_t yyscanner); %} @@ -308,7 +316,7 @@ static void SplitColQualList(List *qualList, oper_argtypes RuleActionList RuleActionMulti opt_column_list columnList opt_name_list sort_clause opt_sort_clause sortby_list index_params - name_list from_clause from_list opt_array_bounds + name_list role_list from_clause from_list opt_array_bounds qualified_name_list any_name any_name_list any_operator expr_list attrs target_list insert_column_list set_target_list @@ -430,9 +438,10 @@ static void SplitColQualList(List *qualList, %type Iconst SignedIconst %type Sconst comment_text notify_payload -%type RoleId opt_granted_by opt_boolean_or_string ColId_or_Sconst +%type RoleId opt_granted_by opt_boolean_or_string %type var_list %type ColId ColLabel var_name type_function_name param_name +%type NonReservedWord NonReservedWord_or_Sconst %type var_value zone_value %type unreserved_keyword type_func_name_keyword @@ -443,8 +452,7 @@ static void SplitColQualList(List *qualList, %type ColQualList %type ColConstraint ColConstraintElem ConstraintAttr %type key_actions key_delete key_match key_update key_action -%type ConstraintAttributeSpec ConstraintDeferrabilitySpec - ConstraintTimeSpec +%type ConstraintAttributeSpec ConstraintAttributeElem %type ExistingIndex %type constraints_set_list @@ -518,7 +526,7 @@ static void SplitColQualList(List *qualList, DATA_P DATABASE DAY_P DEALLOCATE DEC DECIMAL_P DECLARE DEFAULT DEFAULTS DEFERRABLE DEFERRED DEFINER DELETE_P DELIMITER DELIMITERS DESC /* PGXC_BEGIN */ - DICTIONARY DIRECT DISABLE_P DISCARD DISTINCT DISTRIBUTE DO DOCUMENT_P DOMAIN_P DOUBLE_P + DICTIONARY DIRECT DISABLE_P DISCARD DISTINCT DISTRIBUTE DO DOCUMENT_P DOMAIN_P DOUBLE_P /* PGXC_END */ DROP @@ -890,10 +898,17 @@ AlterOptRoleElem: $$ = makeDefElem("validUntil", (Node *)makeString($3)); } /* Supported but not documented for roles, for use by ALTER GROUP. */ - | USER name_list + | USER role_list { $$ = makeDefElem("rolemembers", (Node *)$2); } +/* PGXC_BEGIN */ + /* Postgres-XC is already defining REPLICATION as a reserved keyword */ + | REPLICATION + { + $$ = makeDefElem("isreplication", (Node *)makeInteger(TRUE)); + } +/* PGXC_END */ | IDENT { /* @@ -954,19 +969,19 @@ CreateOptRoleElem: { $$ = makeDefElem("sysid", (Node *)makeInteger($2)); } - | ADMIN name_list + | ADMIN role_list { $$ = makeDefElem("adminmembers", (Node *)$2); } - | ROLE name_list + | ROLE role_list { $$ = makeDefElem("rolemembers", (Node *)$2); } - | IN_P ROLE name_list + | IN_P ROLE role_list { $$ = makeDefElem("addroleto", (Node *)$3); } - | IN_P GROUP_P name_list + | IN_P GROUP_P role_list { $$ = makeDefElem("addroleto", (Node *)$3); } @@ -1065,14 +1080,14 @@ AlterUserSetStmt: *****************************************************************************/ DropRoleStmt: - DROP ROLE name_list + DROP ROLE role_list { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = FALSE; n->roles = $3; $$ = (Node *)n; } - | DROP ROLE IF_P EXISTS name_list + | DROP ROLE IF_P EXISTS role_list { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = TRUE; @@ -1091,14 +1106,14 @@ DropRoleStmt: *****************************************************************************/ DropUserStmt: - DROP USER name_list + DROP USER role_list { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = FALSE; n->roles = $3; $$ = (Node *)n; } - | DROP USER IF_P EXISTS name_list + | DROP USER IF_P EXISTS role_list { DropRoleStmt *n = makeNode(DropRoleStmt); n->roles = $5; @@ -1133,7 +1148,7 @@ CreateGroupStmt: *****************************************************************************/ AlterGroupStmt: - ALTER GROUP_P RoleId add_drop USER name_list + ALTER GROUP_P RoleId add_drop USER role_list { AlterRoleStmt *n = makeNode(AlterRoleStmt); n->role = $3; @@ -1157,14 +1172,14 @@ add_drop: ADD_P { $$ = +1; } *****************************************************************************/ DropGroupStmt: - DROP GROUP_P name_list + DROP GROUP_P role_list { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = FALSE; n->roles = $3; $$ = (Node *)n; } - | DROP GROUP_P IF_P EXISTS name_list + | DROP GROUP_P IF_P EXISTS role_list { DropRoleStmt *n = makeNode(DropRoleStmt); n->missing_ok = TRUE; @@ -1351,7 +1366,7 @@ set_rest: /* Generic SET syntaxes: */ n->kind = VAR_SET_DEFAULT; $$ = n; } - | ROLE ColId_or_Sconst + | ROLE NonReservedWord_or_Sconst { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; @@ -1359,7 +1374,7 @@ set_rest: /* Generic SET syntaxes: */ n->args = list_make1(makeStringConst($2, @2)); $$ = n; } - | SESSION AUTHORIZATION ColId_or_Sconst + | SESSION AUTHORIZATION NonReservedWord_or_Sconst { VariableSetStmt *n = makeNode(VariableSetStmt); n->kind = VAR_SET_VALUE; @@ -1413,11 +1428,11 @@ opt_boolean_or_string: | FALSE_P { $$ = "false"; } | ON { $$ = "on"; } /* - * OFF is also accepted as a boolean value, but is handled - * by the ColId rule below. The action for booleans and strings + * OFF is also accepted as a boolean value, but is handled by + * the NonReservedWord rule. The action for booleans and strings * is the same, so we don't need to distinguish them here. */ - | ColId_or_Sconst { $$ = $1; } + | NonReservedWord_or_Sconst { $$ = $1; } ; /* Timezone values can be: @@ -1486,8 +1501,8 @@ opt_encoding: | /*EMPTY*/ { $$ = NULL; } ; -ColId_or_Sconst: - ColId { $$ = $1; } +NonReservedWord_or_Sconst: + NonReservedWord { $$ = $1; } | Sconst { $$ = $1; } ; @@ -2410,7 +2425,7 @@ copy_generic_opt_arg_list_item: *****************************************************************************/ CreateStmt: CREATE OptTemp TABLE qualified_name '(' OptTableElementList ')' - OptInherit OptWith OnCommitOption OptTableSpace + OptInherit OptWith OnCommitOption OptTableSpace /* PGXC_BEGIN */ OptDistributeBy OptSubCluster /* PGXC_END */ @@ -2727,7 +2742,7 @@ ColConstraintElem: n->fk_matchtype = $4; n->fk_upd_action = (char) ($5 >> 8); n->fk_del_action = (char) ($5 & 0xFF); - n->skip_validation = FALSE; + n->skip_validation = false; n->initially_valid = true; $$ = (Node *)n; } @@ -2743,7 +2758,10 @@ ColConstraintElem: * combinations. * * See also ConstraintAttributeSpec, which can be used in places where - * there is no parsing conflict. + * there is no parsing conflict. (Note: currently, NOT VALID is an allowed + * clause in ConstraintAttributeSpec, but not here. Someday we might need + * to allow it here too, but for the moment it doesn't seem useful in the + * statements that use ConstraintAttr.) */ ConstraintAttr: DEFERRABLE @@ -2835,11 +2853,9 @@ ConstraintElem: n->location = @1; n->raw_expr = $3; n->cooked_expr = NULL; - if ($5 != 0) - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("CHECK constraints cannot be deferred"), - parser_errposition(@5))); + processCASbits($5, @5, "CHECK", + NULL, NULL, NULL, + yyscanner); $$ = (Node *)n; } | UNIQUE '(' columnList ')' opt_definition OptConsTableSpace @@ -2852,8 +2868,9 @@ ConstraintElem: n->options = $5; n->indexname = NULL; n->indexspace = $6; - n->deferrable = ($7 & 1) != 0; - n->initdeferred = ($7 & 2) != 0; + processCASbits($7, @7, "UNIQUE", + &n->deferrable, &n->initdeferred, NULL, + yyscanner); $$ = (Node *)n; } | UNIQUE ExistingIndex ConstraintAttributeSpec @@ -2865,8 +2882,9 @@ ConstraintElem: n->options = NIL; n->indexname = $2; n->indexspace = NULL; - n->deferrable = ($3 & 1) != 0; - n->initdeferred = ($3 & 2) != 0; + processCASbits($3, @3, "UNIQUE", + &n->deferrable, &n->initdeferred, NULL, + yyscanner); $$ = (Node *)n; } | PRIMARY KEY '(' columnList ')' opt_definition OptConsTableSpace @@ -2879,8 +2897,9 @@ ConstraintElem: n->options = $6; n->indexname = NULL; n->indexspace = $7; - n->deferrable = ($8 & 1) != 0; - n->initdeferred = ($8 & 2) != 0; + processCASbits($8, @8, "PRIMARY KEY", + &n->deferrable, &n->initdeferred, NULL, + yyscanner); $$ = (Node *)n; } | PRIMARY KEY ExistingIndex ConstraintAttributeSpec @@ -2892,8 +2911,9 @@ ConstraintElem: n->options = NIL; n->indexname = $3; n->indexspace = NULL; - n->deferrable = ($4 & 1) != 0; - n->initdeferred = ($4 & 2) != 0; + processCASbits($4, @4, "PRIMARY KEY", + &n->deferrable, &n->initdeferred, NULL, + yyscanner); $$ = (Node *)n; } | EXCLUDE access_method_clause '(' ExclusionConstraintList ')' @@ -2909,8 +2929,9 @@ ConstraintElem: n->indexname = NULL; n->indexspace = $7; n->where_clause = $8; - n->deferrable = ($9 & 1) != 0; - n->initdeferred = ($9 & 2) != 0; + processCASbits($9, @9, "EXCLUDE", + &n->deferrable, &n->initdeferred, NULL, + yyscanner); $$ = (Node *)n; } | FOREIGN KEY '(' columnList ')' REFERENCES qualified_name @@ -2925,27 +2946,11 @@ ConstraintElem: n->fk_matchtype = $9; n->fk_upd_action = (char) ($10 >> 8); n->fk_del_action = (char) ($10 & 0xFF); - n->deferrable = ($11 & 1) != 0; - n->initdeferred = ($11 & 2) != 0; - n->skip_validation = false; - n->initially_valid = true; - $$ = (Node *)n; - } - | FOREIGN KEY '(' columnList ')' REFERENCES qualified_name - opt_column_list key_match key_actions - NOT VALID - { - Constraint *n = makeNode(Constraint); - n->contype = CONSTR_FOREIGN; - n->location = @1; - n->pktable = $7; - n->fk_attrs = $4; - n->pk_attrs = $8; - n->fk_matchtype = $9; - n->fk_upd_action = (char) ($10 >> 8); - n->fk_del_action = (char) ($10 & 0xFF); - n->skip_validation = true; - n->initially_valid = false; + processCASbits($11, @11, "FOREIGN KEY", + &n->deferrable, &n->initdeferred, + &n->skip_validation, + yyscanner); + n->initially_valid = !n->skip_validation; $$ = (Node *)n; } ; @@ -3159,7 +3164,7 @@ CreateAsStmt: ; create_as_target: - qualified_name OptCreateAs OptWith OnCommitOption OptTableSpace + qualified_name OptCreateAs OptWith OnCommitOption OptTableSpace /* PGXC_BEGIN */ OptDistributeBy OptSubCluster /* PGXC_END */ @@ -3335,7 +3340,7 @@ NumericOnly_list: NumericOnly { $$ = list_make1($1); } *****************************************************************************/ CreatePLangStmt: - CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE ColId_or_Sconst + CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE NonReservedWord_or_Sconst { CreatePLangStmt *n = makeNode(CreatePLangStmt); n->replace = $2; @@ -3347,7 +3352,7 @@ CreatePLangStmt: n->pltrusted = false; $$ = (Node *)n; } - | CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE ColId_or_Sconst + | CREATE opt_or_replace opt_trusted opt_procedural LANGUAGE NonReservedWord_or_Sconst HANDLER handler_name opt_inline_handler opt_validator { CreatePLangStmt *n = makeNode(CreatePLangStmt); @@ -3391,7 +3396,7 @@ opt_validator: ; DropPLangStmt: - DROP opt_procedural LANGUAGE ColId_or_Sconst opt_drop_behavior + DROP opt_procedural LANGUAGE NonReservedWord_or_Sconst opt_drop_behavior { DropPLangStmt *n = makeNode(DropPLangStmt); n->plname = $4; @@ -3399,7 +3404,7 @@ DropPLangStmt: n->missing_ok = false; $$ = (Node *)n; } - | DROP opt_procedural LANGUAGE IF_P EXISTS ColId_or_Sconst opt_drop_behavior + | DROP opt_procedural LANGUAGE IF_P EXISTS NonReservedWord_or_Sconst opt_drop_behavior { DropPLangStmt *n = makeNode(DropPLangStmt); n->plname = $6; @@ -3499,11 +3504,11 @@ create_extension_opt_item: { $$ = makeDefElem("schema", (Node *)makeString($2)); } - | VERSION_P ColId_or_Sconst + | VERSION_P NonReservedWord_or_Sconst { $$ = makeDefElem("new_version", (Node *)makeString($2)); } - | FROM ColId_or_Sconst + | FROM NonReservedWord_or_Sconst { $$ = makeDefElem("old_version", (Node *)makeString($2)); } @@ -3532,7 +3537,7 @@ alter_extension_opt_list: ; alter_extension_opt_item: - TO ColId_or_Sconst + TO NonReservedWord_or_Sconst { $$ = makeDefElem("new_version", (Node *)makeString($2)); } @@ -4188,8 +4193,9 @@ CreateTrigStmt: n->columns = (List *) lsecond($6); n->whenClause = $14; n->isconstraint = TRUE; - n->deferrable = ($10 & 1) != 0; - n->initdeferred = ($10 & 2) != 0; + processCASbits($10, @10, "TRIGGER", + &n->deferrable, &n->initdeferred, NULL, + yyscanner); n->constrrel = $9; $$ = (Node *)n; } @@ -4292,45 +4298,40 @@ OptConstrFromTable: ; ConstraintAttributeSpec: - ConstraintDeferrabilitySpec - { $$ = $1; } - | ConstraintDeferrabilitySpec ConstraintTimeSpec + /*EMPTY*/ + { $$ = 0; } + | ConstraintAttributeSpec ConstraintAttributeElem { - if ($1 == 0 && $2 != 0) + /* + * We must complain about conflicting options. + * We could, but choose not to, complain about redundant + * options (ie, where $2's bit is already set in $1). + */ + int newspec = $1 | $2; + + /* special message for this case */ + if ((newspec & (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) == (CAS_NOT_DEFERRABLE | CAS_INITIALLY_DEFERRED)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"), - parser_errposition(@1))); - $$ = $1 | $2; - } - | ConstraintTimeSpec - { - if ($1 != 0) - $$ = 3; - else - $$ = 0; - } - | ConstraintTimeSpec ConstraintDeferrabilitySpec - { - if ($2 == 0 && $1 != 0) + parser_errposition(@2))); + /* generic message for other conflicts */ + if ((newspec & (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE)) == (CAS_NOT_DEFERRABLE | CAS_DEFERRABLE) || + (newspec & (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) == (CAS_INITIALLY_IMMEDIATE | CAS_INITIALLY_DEFERRED)) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("constraint declared INITIALLY DEFERRED must be DEFERRABLE"), - parser_errposition(@1))); - $$ = $1 | $2; + errmsg("conflicting constraint properties"), + parser_errposition(@2))); + $$ = newspec; } - | /*EMPTY*/ - { $$ = 0; } ; -ConstraintDeferrabilitySpec: - NOT DEFERRABLE { $$ = 0; } - | DEFERRABLE { $$ = 1; } - ; - -ConstraintTimeSpec: - INITIALLY IMMEDIATE { $$ = 0; } - | INITIALLY DEFERRED { $$ = 2; } +ConstraintAttributeElem: + NOT DEFERRABLE { $$ = CAS_NOT_DEFERRABLE; } + | DEFERRABLE { $$ = CAS_DEFERRABLE; } + | INITIALLY IMMEDIATE { $$ = CAS_INITIALLY_IMMEDIATE; } + | INITIALLY DEFERRED { $$ = CAS_INITIALLY_DEFERRED; } + | NOT VALID { $$ = CAS_NOT_VALID; } ; @@ -4374,8 +4375,9 @@ CreateAssertStmt: n->trigname = $3; n->args = list_make1($6); n->isconstraint = TRUE; - n->deferrable = ($8 & 1) != 0; - n->initdeferred = ($8 & 2) != 0; + processCASbits($8, @8, "ASSERTION", + &n->deferrable, &n->initdeferred, NULL, + yyscanner); ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), @@ -4848,8 +4850,8 @@ DropOpFamilyStmt: * *****************************************************************************/ DropOwnedStmt: - DROP OWNED BY name_list opt_drop_behavior - { + DROP OWNED BY role_list opt_drop_behavior + { DropOwnedStmt *n = makeNode(DropOwnedStmt); n->roles = $4; n->behavior = $5; @@ -4858,7 +4860,7 @@ DropOwnedStmt: ; ReassignOwnedStmt: - REASSIGN OWNED BY name_list TO name + REASSIGN OWNED BY role_list TO name { ReassignOwnedStmt *n = makeNode(ReassignOwnedStmt); n->roles = $4; @@ -5222,8 +5224,8 @@ SecLabelStmt: } ; -opt_provider: FOR ColId_or_Sconst { $$ = $2; } - | /* empty */ { $$ = NULL; } +opt_provider: FOR NonReservedWord_or_Sconst { $$ = $2; } + | /* empty */ { $$ = NULL; } ; security_label_type: @@ -5695,7 +5697,7 @@ function_with_argtypes: *****************************************************************************/ GrantRoleStmt: - GRANT privilege_list TO name_list opt_grant_admin_option opt_granted_by + GRANT privilege_list TO role_list opt_grant_admin_option opt_granted_by { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = true; @@ -5708,7 +5710,7 @@ GrantRoleStmt: ; RevokeRoleStmt: - REVOKE privilege_list FROM name_list opt_granted_by opt_drop_behavior + REVOKE privilege_list FROM role_list opt_granted_by opt_drop_behavior { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = false; @@ -5718,7 +5720,7 @@ RevokeRoleStmt: n->behavior = $6; $$ = (Node*)n; } - | REVOKE ADMIN OPTION FOR privilege_list FROM name_list opt_granted_by opt_drop_behavior + | REVOKE ADMIN OPTION FOR privilege_list FROM role_list opt_granted_by opt_drop_behavior { GrantRoleStmt *n = makeNode(GrantRoleStmt); n->is_grant = false; @@ -5764,11 +5766,11 @@ DefACLOption: { $$ = makeDefElem("schemas", (Node *)$3); } - | FOR ROLE name_list + | FOR ROLE role_list { $$ = makeDefElem("roles", (Node *)$3); } - | FOR USER name_list + | FOR USER role_list { $$ = makeDefElem("roles", (Node *)$3); } @@ -6212,7 +6214,7 @@ createfunc_opt_item: { $$ = makeDefElem("as", (Node *)$2); } - | LANGUAGE ColId_or_Sconst + | LANGUAGE NonReservedWord_or_Sconst { $$ = makeDefElem("language", (Node *)makeString($2)); } @@ -6421,7 +6423,7 @@ dostmt_opt_item: { $$ = makeDefElem("as", (Node *)makeString($1)); } - | LANGUAGE ColId_or_Sconst + | LANGUAGE NonReservedWord_or_Sconst { $$ = makeDefElem("language", (Node *)makeString($2)); } @@ -8205,9 +8207,8 @@ explain_option_elem: ; explain_option_name: - ColId { $$ = $1; } + NonReservedWord { $$ = $1; } | analyze_keyword { $$ = "analyze"; } - | VERBOSE { $$ = "verbose"; } ; explain_option_arg: @@ -8219,7 +8220,7 @@ explain_option_arg: /***************************************************************************** * * QUERY: - * EXECUTE DIRECT ON (nodename, ...) query + * EXECUTE DIRECT ON nodename [, ... ] query * *****************************************************************************/ @@ -8245,7 +8246,7 @@ DirectStmt: * * QUERY: * - * CLEAN CONNECTION TO (COORDINATOR nodename | NODE nodename | ALL {FORCE}) + * CLEAN CONNECTION TO { COORDINATOR nodename | NODE nodename | ALL {FORCE} } * [ FOR DATABASE dbname ] * [ TO USER username ] * @@ -10282,7 +10283,26 @@ a_expr: c_expr { $$ = $1; } } | row OVERLAPS row { - $$ = (Node *)makeOverlaps($1, $3, @2, yyscanner); + FuncCall *n = makeNode(FuncCall); + n->funcname = SystemFuncName("overlaps"); + if (list_length($1) != 2) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("wrong number of parameters on left side of OVERLAPS expression"), + parser_errposition(@1))); + if (list_length($3) != 2) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("wrong number of parameters on right side of OVERLAPS expression"), + parser_errposition(@3))); + n->args = list_concat($1, $3); + n->agg_order = NIL; + n->agg_star = FALSE; + n->agg_distinct = FALSE; + n->func_variadic = FALSE; + n->over = NULL; + n->location = @2; + $$ = (Node *)n; } | a_expr IS TRUE_P %prec IS { @@ -10602,6 +10622,29 @@ c_expr: columnref { $$ = $1; } n->location = @1; $$ = (Node *)n; } + | select_with_parens indirection + { + /* + * Because the select_with_parens nonterminal is designed + * to "eat" as many levels of parens as possible, the + * '(' a_expr ')' opt_indirection production above will + * fail to match a sub-SELECT with indirection decoration; + * the sub-SELECT won't be regarded as an a_expr as long + * as there are parens around it. To support applying + * subscripting or field selection to a sub-SELECT result, + * we need this redundant-looking production. + */ + SubLink *n = makeNode(SubLink); + A_Indirection *a = makeNode(A_Indirection); + n->subLinkType = EXPR_SUBLINK; + n->testexpr = NULL; + n->operName = NIL; + n->subselect = $1; + n->location = @1; + a->arg = (Node *)n; + a->indirection = check_indirection($2, yyscanner); + $$ = (Node *)a; + } | EXISTS select_with_parens { SubLink *n = makeNode(SubLink); @@ -12128,7 +12171,13 @@ AexprConst: Iconst Iconst: ICONST { $$ = $1; }; Sconst: SCONST { $$ = $1; }; -RoleId: ColId { $$ = $1; }; +RoleId: NonReservedWord { $$ = $1; }; + +role_list: RoleId + { $$ = list_make1(makeString($1)); } + | role_list ',' RoleId + { $$ = lappend($1, makeString($3)); } + ; SignedIconst: Iconst { $$ = $1; } | '+' Iconst { $$ = + $2; } @@ -12160,6 +12209,14 @@ type_function_name: IDENT { $$ = $1; } | type_func_name_keyword { $$ = pstrdup($1); } ; +/* Any not-fully-reserved word --- these names can be, eg, role names. + */ +NonReservedWord: IDENT { $$ = $1; } + | unreserved_keyword { $$ = pstrdup($1); } + | col_name_keyword { $$ = pstrdup($1); } + | type_func_name_keyword { $$ = pstrdup($1); } + ; + /* Column label --- allowed labels in "AS" clauses. * This presently includes *all* Postgres keywords. */ @@ -12828,39 +12885,6 @@ makeBoolAConst(bool state, int location) return makeTypeCast((Node *)n, SystemTypeName("bool"), -1); } -/* makeOverlaps() - * Create and populate a FuncCall node to support the OVERLAPS operator. - */ -static FuncCall * -makeOverlaps(List *largs, List *rargs, int location, core_yyscan_t yyscanner) -{ - FuncCall *n = makeNode(FuncCall); - - n->funcname = SystemFuncName("overlaps"); - if (list_length(largs) == 1) - largs = lappend(largs, largs); - else if (list_length(largs) != 2) - ereport(ERROR, - (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("wrong number of parameters on left side of OVERLAPS expression"), - parser_errposition(location))); - if (list_length(rargs) == 1) - rargs = lappend(rargs, rargs); - else if (list_length(rargs) != 2) - ereport(ERROR, - (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("wrong number of parameters on right side of OVERLAPS expression"), - parser_errposition(location))); - n->args = list_concat(largs, rargs); - n->agg_order = NIL; - n->agg_star = FALSE; - n->agg_distinct = FALSE; - n->func_variadic = FALSE; - n->over = NULL; - n->location = location; - return n; -} - /* check_qualified_name --- check the result of qualified_name production * * It's easiest to let the grammar production for qualified_name allow @@ -13128,6 +13152,7 @@ makeXmlExpr(XmlExprOp op, char *name, List *named_args, List *args, x->args = args; /* xmloption, if relevant, must be filled in by caller */ /* type and typmod will be filled in during parse analysis */ + x->type = InvalidOid; /* marks the node as not analyzed */ x->location = location; return (Node *) x; } @@ -13261,6 +13286,64 @@ SplitColQualList(List *qualList, *constraintList = qualList; } +/* + * Process result of ConstraintAttributeSpec, and set appropriate bool flags + * in the output command node. Pass NULL for any flags the particular + * command doesn't support. + */ +static void +processCASbits(int cas_bits, int location, const char *constrType, + bool *deferrable, bool *initdeferred, bool *not_valid, + core_yyscan_t yyscanner) +{ + /* defaults */ + if (deferrable) + *deferrable = false; + if (initdeferred) + *initdeferred = false; + if (not_valid) + *not_valid = false; + + if (cas_bits & (CAS_DEFERRABLE | CAS_INITIALLY_DEFERRED)) + { + if (deferrable) + *deferrable = true; + else + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + /* translator: %s is CHECK, UNIQUE, or similar */ + errmsg("%s constraints cannot be marked DEFERRABLE", + constrType), + parser_errposition(location))); + } + + if (cas_bits & CAS_INITIALLY_DEFERRED) + { + if (initdeferred) + *initdeferred = true; + else + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + /* translator: %s is CHECK, UNIQUE, or similar */ + errmsg("%s constraints cannot be marked DEFERRABLE", + constrType), + parser_errposition(location))); + } + + if (cas_bits & CAS_NOT_VALID) + { + if (not_valid) + *not_valid = true; + else + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + /* translator: %s is CHECK, UNIQUE, or similar */ + errmsg("%s constraints cannot be marked NOT VALID", + constrType), + parser_errposition(location))); + } +} + /* parser_init() * Initialize to parse one query string */ diff --git a/src/backend/parser/parse_agg.c b/src/backend/parser/parse_agg.c index 6fe3945af1..33f8b3ac36 100644 --- a/src/backend/parser/parse_agg.c +++ b/src/backend/parser/parse_agg.c @@ -194,9 +194,9 @@ transformAggregateCall(ParseState *pstate, Aggref *agg, pstate->p_hasAggs = true; #ifdef PGXC /* - * Return data type of PGXC datanode's aggregate should always return the + * Return data type of PGXC Datanode's aggregate should always return the * result of transition function, that is expected by collection function - * on the coordinator. + * on the Coordinator. * Look up the aggregate definition and replace agg->aggtype */ diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c index c5fe6b6a3f..8f697f85ec 100644 --- a/src/backend/parser/parse_clause.c +++ b/src/backend/parser/parse_clause.c @@ -1665,11 +1665,16 @@ transformWindowDefinitions(ParseState *pstate, /* * Per spec, a windowdef that references a previous one copies the * previous partition clause (and mustn't specify its own). It can - * specify its own ordering clause. but only if the previous one had + * specify its own ordering clause, but only if the previous one had * none. It always specifies its own frame clause, and the previous - * one must not have a frame clause. (Yeah, it's bizarre that each of + * one must not have a frame clause. Yeah, it's bizarre that each of * these cases works differently, but SQL:2008 says so; see 7.11 - * syntax rule 10 and general rule 1.) + * syntax rule 10 and general rule 1. The frame + * clause rule is especially bizarre because it makes "OVER foo" + * different from "OVER (foo)", and requires the latter to throw an + * error if foo has a nondefault frame clause. Well, ours not to + * reason why, but we do go out of our way to throw a useful error + * message for such cases. */ if (refwc) { @@ -1708,11 +1713,27 @@ transformWindowDefinitions(ParseState *pstate, wc->copiedOrder = false; } if (refwc && refwc->frameOptions != FRAMEOPTION_DEFAULTS) + { + /* + * Use this message if this is a WINDOW clause, or if it's an OVER + * clause that includes ORDER BY or framing clauses. (We already + * rejected PARTITION BY above, so no need to check that.) + */ + if (windef->name || + orderClause || windef->frameOptions != FRAMEOPTION_DEFAULTS) + ereport(ERROR, + (errcode(ERRCODE_WINDOWING_ERROR), + errmsg("cannot copy window \"%s\" because it has a frame clause", + windef->refname), + parser_errposition(pstate, windef->location))); + /* Else this clause is just OVER (foo), so say this: */ ereport(ERROR, (errcode(ERRCODE_WINDOWING_ERROR), - errmsg("cannot override frame clause of window \"%s\"", - windef->refname), + errmsg("cannot copy window \"%s\" because it has a frame clause", + windef->refname), + errhint("Omit the parentheses in this OVER clause."), parser_errposition(pstate, windef->location))); + } wc->frameOptions = windef->frameOptions; /* Process frame offset expressions */ wc->startOffset = transformFrameOffset(pstate, wc->frameOptions, diff --git a/src/backend/parser/parse_coerce.c b/src/backend/parser/parse_coerce.c index f26c69abdd..577ccf1da1 100644 --- a/src/backend/parser/parse_coerce.c +++ b/src/backend/parser/parse_coerce.c @@ -30,6 +30,9 @@ #include "utils/lsyscache.h" #include "utils/syscache.h" #include "utils/typcache.h" +#ifdef PGXC +#include "pgxc/pgxc.h" +#endif static Node *coerce_type_typmod(Node *node, @@ -81,10 +84,24 @@ coerce_to_target_type(ParseState *pstate, Node *expr, Oid exprtype, int location) { Node *result; + Node *origexpr; if (!can_coerce_type(1, &exprtype, &targettype, ccontext)) return NULL; + /* + * If the input has a CollateExpr at the top, strip it off, perform the + * coercion, and put a new one back on. This is annoying since it + * duplicates logic in coerce_type, but if we don't do this then it's too + * hard to tell whether coerce_type actually changed anything, and we + * *must* know that to avoid possibly calling hide_coercion_node on + * something that wasn't generated by coerce_type. Note that if there are + * multiple stacked CollateExprs, we just discard all but the topmost. + */ + origexpr = expr; + while (expr && IsA(expr, CollateExpr)) + expr = (Node *) ((CollateExpr *) expr)->arg; + result = coerce_type(pstate, expr, exprtype, targettype, targettypmod, ccontext, cformat, location); @@ -100,6 +117,22 @@ coerce_to_target_type(ParseState *pstate, Node *expr, Oid exprtype, (cformat != COERCE_IMPLICIT_CAST), (result != expr && !IsA(result, Const))); +#ifdef PGXC + /* Do not need to do that on local Coordinator */ + if (IsConnFromCoord()) +#endif + if (expr != origexpr) + { + /* Reinstall top CollateExpr */ + CollateExpr *coll = (CollateExpr *) origexpr; + CollateExpr *newcoll = makeNode(CollateExpr); + + newcoll->arg = (Expr *) result; + newcoll->collOid = coll->collOid; + newcoll->location = coll->location; + result = (Node *) newcoll; + } + return result; } @@ -318,7 +351,7 @@ coerce_type(ParseState *pstate, Node *node, * If we have a COLLATE clause, we have to push the coercion * underneath the COLLATE. This is really ugly, but there is little * choice because the above hacks on Consts and Params wouldn't happen - * otherwise. + * otherwise. This kluge has consequences in coerce_to_target_type. */ CollateExpr *coll = (CollateExpr *) node; CollateExpr *newcoll = makeNode(CollateExpr); diff --git a/src/backend/parser/parse_collate.c b/src/backend/parser/parse_collate.c index f0cd3f88d2..ec606ebcac 100644 --- a/src/backend/parser/parse_collate.c +++ b/src/backend/parser/parse_collate.c @@ -564,16 +564,22 @@ assign_collations_walker(Node *node, assign_collations_context *context) * SubLink. Act as though the Query returns its first output * column, which indeed is what it does for EXPR_SUBLINK and * ARRAY_SUBLINK cases. In the cases where the SubLink - * returns boolean, this info will be ignored. + * returns boolean, this info will be ignored. Special case: + * in EXISTS, the Query might return no columns, in which case + * we need do nothing. * * We needn't recurse, since the Query is already processed. */ Query *qtree = (Query *) node; TargetEntry *tent; + if (qtree->targetList == NIL) + return false; tent = (TargetEntry *) linitial(qtree->targetList); Assert(IsA(tent, TargetEntry)); - Assert(!tent->resjunk); + if (tent->resjunk) + return false; + collation = exprCollation((Node *) tent->expr); /* collation doesn't change if it's converted to array */ strength = COLLATE_IMPLICIT; diff --git a/src/backend/parser/parse_cte.c b/src/backend/parser/parse_cte.c index ec6afd83b6..ef96df603c 100644 --- a/src/backend/parser/parse_cte.c +++ b/src/backend/parser/parse_cte.c @@ -685,6 +685,18 @@ checkWellFormedRecursion(CteState *cstate) if (cstate->selfrefcount != 1) /* shouldn't happen */ elog(ERROR, "missing recursive reference"); + /* WITH mustn't contain self-reference, either */ + if (stmt->withClause) + { + cstate->curitem = i; + cstate->innerwiths = NIL; + cstate->selfrefcount = 0; + cstate->context = RECURSION_SUBLINK; + checkWellFormedRecursionWalker((Node *) stmt->withClause->ctes, + cstate); + Assert(cstate->innerwiths == NIL); + } + /* * Disallow ORDER BY and similar decoration atop the UNION. These * don't make sense because it's impossible to figure out what they @@ -940,7 +952,7 @@ checkWellFormedSelectStmt(SelectStmt *stmt, CteState *cstate) cstate); checkWellFormedRecursionWalker((Node *) stmt->lockingClause, cstate); - break; + /* stmt->withClause is intentionally ignored here */ break; case SETOP_EXCEPT: if (stmt->all) @@ -959,6 +971,7 @@ checkWellFormedSelectStmt(SelectStmt *stmt, CteState *cstate) cstate); checkWellFormedRecursionWalker((Node *) stmt->lockingClause, cstate); + /* stmt->withClause is intentionally ignored here */ break; default: elog(ERROR, "unrecognized set op: %d", diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c index 99b718f7db..7650ddc78a 100644 --- a/src/backend/parser/parse_expr.c +++ b/src/backend/parser/parse_expr.c @@ -91,6 +91,8 @@ static Expr *make_distinct_op(ParseState *pstate, List *opname, * function argument to the required type (via coerce_type()) * can apply transformExpr to an already-transformed subexpression. * An example here is "SELECT count(*) + 1.0 FROM table". + * 3. CREATE TABLE t1 (LIKE t2 INCLUDING INDEXES) can pass in + * already-transformed index expressions. * While it might be possible to eliminate these cases, the path of * least resistance so far has been to ensure that transformExpr() does * no damage if applied to an already-transformed tree. This is pretty @@ -836,12 +838,15 @@ transformAExprOp(ParseState *pstate, A_Expr *a) /* * Special-case "foo = NULL" and "NULL = foo" for compatibility with * standards-broken products (like Microsoft's). Turn these into IS NULL - * exprs. + * exprs. (If either side is a CaseTestExpr, then the expression was + * generated internally from a CASE-WHEN expression, and + * transform_null_equals does not apply.) */ if (Transform_null_equals && list_length(a->name) == 1 && strcmp(strVal(linitial(a->name)), "=") == 0 && - (exprIsNullConstant(lexpr) || exprIsNullConstant(rexpr))) + (exprIsNullConstant(lexpr) || exprIsNullConstant(rexpr)) && + (!IsA(lexpr, CaseTestExpr) && !IsA(rexpr, CaseTestExpr))) { NullTest *n = makeNode(NullTest); @@ -874,7 +879,7 @@ transformAExprOp(ParseState *pstate, A_Expr *a) else if (lexpr && IsA(lexpr, RowExpr) && rexpr && IsA(rexpr, RowExpr)) { - /* "row op row" */ + /* ROW() op ROW() is handled specially */ lexpr = transformExpr(pstate, lexpr); rexpr = transformExpr(pstate, rexpr); Assert(IsA(lexpr, RowExpr)); @@ -979,7 +984,7 @@ transformAExprDistinct(ParseState *pstate, A_Expr *a) if (lexpr && IsA(lexpr, RowExpr) && rexpr && IsA(rexpr, RowExpr)) { - /* "row op row" */ + /* ROW() op ROW() is handled specially */ return make_row_distinct_op(pstate, a->name, (RowExpr *) lexpr, (RowExpr *) rexpr, @@ -1078,7 +1083,6 @@ transformAExprIn(ParseState *pstate, A_Expr *a) List *rvars; List *rnonvars; bool useOr; - bool haveRowExpr; ListCell *l; /* @@ -1091,24 +1095,21 @@ transformAExprIn(ParseState *pstate, A_Expr *a) /* * We try to generate a ScalarArrayOpExpr from IN/NOT IN, but this is only - * possible if the inputs are all scalars (no RowExprs) and there is a - * suitable array type available. If not, we fall back to a boolean - * condition tree with multiple copies of the lefthand expression. Also, - * any IN-list items that contain Vars are handled as separate boolean - * conditions, because that gives the planner more scope for optimization - * on such clauses. + * possible if there is a suitable array type available. If not, we fall + * back to a boolean condition tree with multiple copies of the lefthand + * expression. Also, any IN-list items that contain Vars are handled as + * separate boolean conditions, because that gives the planner more scope + * for optimization on such clauses. * - * First step: transform all the inputs, and detect whether any are - * RowExprs or contain Vars. + * First step: transform all the inputs, and detect whether any contain + * Vars. */ lexpr = transformExpr(pstate, a->lexpr); - haveRowExpr = (lexpr && IsA(lexpr, RowExpr)); rexprs = rvars = rnonvars = NIL; foreach(l, (List *) a->rexpr) { Node *rexpr = transformExpr(pstate, lfirst(l)); - haveRowExpr |= (rexpr && IsA(rexpr, RowExpr)); rexprs = lappend(rexprs, rexpr); if (contain_vars_of_level(rexpr, 0)) rvars = lappend(rvars, rexpr); @@ -1118,9 +1119,9 @@ transformAExprIn(ParseState *pstate, A_Expr *a) /* * ScalarArrayOpExpr is only going to be useful if there's more than one - * non-Var righthand item. Also, it won't work for RowExprs. + * non-Var righthand item. */ - if (!haveRowExpr && list_length(rnonvars) > 1) + if (list_length(rnonvars) > 1) { List *allexprs; Oid scalar_type; @@ -1136,8 +1137,13 @@ transformAExprIn(ParseState *pstate, A_Expr *a) allexprs = list_concat(list_make1(lexpr), rnonvars); scalar_type = select_common_type(pstate, allexprs, NULL, NULL); - /* Do we have an array type to use? */ - if (OidIsValid(scalar_type)) + /* + * Do we have an array type to use? Aside from the case where there + * isn't one, we don't risk using ScalarArrayOpExpr when the common + * type is RECORD, because the RowExpr comparison logic below can cope + * with some cases of non-identical row types. + */ + if (OidIsValid(scalar_type) && scalar_type != RECORDOID) array_type = get_array_type(scalar_type); else array_type = InvalidOid; @@ -1188,14 +1194,10 @@ transformAExprIn(ParseState *pstate, A_Expr *a) Node *rexpr = (Node *) lfirst(l); Node *cmp; - if (haveRowExpr) + if (IsA(lexpr, RowExpr) && + IsA(rexpr, RowExpr)) { - if (!IsA(lexpr, RowExpr) || - !IsA(rexpr, RowExpr)) - ereport(ERROR, - (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("arguments of row IN must all be row expressions"), - parser_errposition(pstate, a->location))); + /* ROW() op ROW() is handled specially */ cmp = make_row_comparison_op(pstate, a->name, (List *) copyObject(((RowExpr *) lexpr)->args), @@ -1203,11 +1205,14 @@ transformAExprIn(ParseState *pstate, A_Expr *a) a->location); } else + { + /* Ordinary scalar operator */ cmp = (Node *) make_op(pstate, a->name, copyObject(lexpr), rexpr, a->location); + } cmp = coerce_to_boolean(pstate, cmp, "IN"); if (result == NULL) @@ -1689,7 +1694,13 @@ transformArrayExpr(ParseState *pstate, A_ArrayExpr *a, static Node * transformRowExpr(ParseState *pstate, RowExpr *r) { - RowExpr *newr = makeNode(RowExpr); + RowExpr *newr; + + /* If we already transformed this node, do nothing */ + if (OidIsValid(r->row_typeid)) + return (Node *) r; + + newr = makeNode(RowExpr); /* Transform the field expressions */ newr->args = transformExpressionList(pstate, r->args); @@ -1782,16 +1793,23 @@ transformMinMaxExpr(ParseState *pstate, MinMaxExpr *m) static Node * transformXmlExpr(ParseState *pstate, XmlExpr *x) { - XmlExpr *newx = makeNode(XmlExpr); + XmlExpr *newx; ListCell *lc; int i; + /* If we already transformed this node, do nothing */ + if (OidIsValid(x->type)) + return (Node *) x; + + newx = makeNode(XmlExpr); newx->op = x->op; if (x->name) newx->name = map_sql_identifier_to_xml_name(x->name, false, false); else newx->name = NULL; newx->xmloption = x->xmloption; + newx->type = XMLOID; /* this just marks the node as transformed */ + newx->typmod = -1; newx->location = x->location; /* @@ -2063,8 +2081,15 @@ transformWholeRowRef(ParseState *pstate, RangeTblEntry *rte, int location) /* Find the RTE's rangetable location */ vnum = RTERangeTablePosn(pstate, rte, &sublevels_up); - /* Build the appropriate referencing node */ - result = makeWholeRowVar(rte, vnum, sublevels_up); + /* + * Build the appropriate referencing node. Note that if the RTE is a + * function returning scalar, we create just a plain reference to the + * function value, not a composite containing a single column. This is + * pretty inconsistent at first sight, but it's what we've done + * historically. One argument for it is that "rel" and "rel.*" mean the + * same thing for composite relations, so why not for scalar functions... + */ + result = makeWholeRowVar(rte, vnum, sublevels_up, true); /* location is not filled in by makeWholeRowVar */ result->location = location; @@ -2177,8 +2202,7 @@ make_row_comparison_op(ParseState *pstate, List *opname, List *opfamilies; ListCell *l, *r; - List **opfamily_lists; - List **opstrat_lists; + List **opinfo_lists; Bitmapset *strats; int nopers; int i; @@ -2248,8 +2272,7 @@ make_row_comparison_op(ParseState *pstate, List *opname, * containing the operators, and see which interpretations (strategy * numbers) exist for each operator. */ - opfamily_lists = (List **) palloc(nopers * sizeof(List *)); - opstrat_lists = (List **) palloc(nopers * sizeof(List *)); + opinfo_lists = (List **) palloc(nopers * sizeof(List *)); strats = NULL; i = 0; foreach(l, opexprs) @@ -2258,17 +2281,18 @@ make_row_comparison_op(ParseState *pstate, List *opname, Bitmapset *this_strats; ListCell *j; - get_op_btree_interpretation(opno, - &opfamily_lists[i], &opstrat_lists[i]); + opinfo_lists[i] = get_op_btree_interpretation(opno); /* - * convert strategy number list to a Bitmapset to make the + * convert strategy numbers into a Bitmapset to make the * intersection calculation easy. */ this_strats = NULL; - foreach(j, opstrat_lists[i]) + foreach(j, opinfo_lists[i]) { - this_strats = bms_add_member(this_strats, lfirst_int(j)); + OpBtreeInterpretation *opinfo = lfirst(j); + + this_strats = bms_add_member(this_strats, opinfo->strategy); } if (i == 0) strats = this_strats; @@ -2316,14 +2340,15 @@ make_row_comparison_op(ParseState *pstate, List *opname, for (i = 0; i < nopers; i++) { Oid opfamily = InvalidOid; + ListCell *j; - forboth(l, opfamily_lists[i], r, opstrat_lists[i]) + foreach(j, opinfo_lists[i]) { - int opstrat = lfirst_int(r); + OpBtreeInterpretation *opinfo = lfirst(j); - if (opstrat == rctype) + if (opinfo->strategy == rctype) { - opfamily = lfirst_oid(l); + opfamily = opinfo->opfamily_id; break; } } diff --git a/src/backend/parser/parse_node.c b/src/backend/parser/parse_node.c index 7b5c040cb4..b552ddfda9 100644 --- a/src/backend/parser/parse_node.c +++ b/src/backend/parser/parse_node.c @@ -225,6 +225,18 @@ transformArrayType(Oid *arrayType, int32 *arrayTypmod) */ *arrayType = getBaseTypeAndTypmod(*arrayType, arrayTypmod); + /* + * We treat int2vector and oidvector as though they were domains over + * int2[] and oid[]. This is needed because array slicing could create an + * array that doesn't satisfy the dimensionality constraints of the + * xxxvector type; so we want the result of a slice operation to be + * considered to be of the more general type. + */ + if (*arrayType == INT2VECTOROID) + *arrayType = INT2ARRAYOID; + else if (*arrayType == OIDVECTOROID) + *arrayType = OIDARRAYOID; + /* Get the type tuple for the array */ type_tuple_array = SearchSysCache1(TYPEOID, ObjectIdGetDatum(*arrayType)); if (!HeapTupleIsValid(type_tuple_array)) @@ -262,6 +274,7 @@ transformArrayType(Oid *arrayType, int32 *arrayTypmod) * For both cases, if the source array is of a domain-over-array type, * the result is of the base array type or its element type; essentially, * we must fold a domain to its base type before applying subscripting. + * (Note that int2vector and oidvector are treated as domains here.) * * pstate Parse state * arrayBase Already-transformed expression for the array as a whole diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c index 39ba7f36d2..550be4519d 100644 --- a/src/backend/parser/parse_relation.c +++ b/src/backend/parser/parse_relation.c @@ -24,6 +24,7 @@ #include "funcapi.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" +#include "optimizer/clauses.h" #include "parser/parsetree.h" #include "parser/parse_relation.h" #include "parser/parse_type.h" @@ -502,10 +503,17 @@ scanRTEForColumn(ParseState *pstate, RangeTblEntry *rte, char *colname, attnum = specialAttNum(colname); if (attnum != InvalidAttrNumber) { - /* now check to see if column actually is defined */ + /* + * Now check to see if column actually is defined. Because of + * an ancient oversight in DefineQueryRewrite, it's possible that + * pg_attribute contains entries for system columns for a view, + * even though views should not have such --- so we also check + * the relkind. This kluge will not be needed in 9.3 and later. + */ if (SearchSysCacheExists2(ATTNUM, ObjectIdGetDatum(rte->relid), - Int16GetDatum(attnum))) + Int16GetDatum(attnum)) && + get_rel_relkind(rte->relid) != RELKIND_VIEW) { var = make_var(pstate, rte, attnum, location); /* Require read access to the column */ @@ -648,14 +656,15 @@ markRTEForSelectPriv(ParseState *pstate, RangeTblEntry *rte, * The aliasvar could be either a Var or a COALESCE expression, * but in the latter case we should already have marked the two * referent variables as being selected, due to their use in the - * JOIN clause. So we need only be concerned with the simple Var - * case. + * JOIN clause. So we need only be concerned with the Var case. + * But we do need to drill down through implicit coercions. */ Var *aliasvar; Assert(col > 0 && col <= list_length(rte->joinaliasvars)); aliasvar = (Var *) list_nth(rte->joinaliasvars, col - 1); - if (IsA(aliasvar, Var)) + aliasvar = (Var *) strip_implicit_coercions((Node *) aliasvar); + if (aliasvar && IsA(aliasvar, Var)) markVarForSelectPriv(pstate, aliasvar, NULL); } } @@ -1764,10 +1773,10 @@ expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up, * deleted columns in the join; but we have to check since * this routine is also used by the rewriter, and joins * found in stored rules might have join columns for - * since-deleted columns. This will be signaled by a NULL - * Const in the alias-vars list. + * since-deleted columns. This will be signaled by a null + * pointer in the alias-vars list. */ - if (IsA(avar, Const)) + if (avar == NULL) { if (include_dropped) { @@ -1775,8 +1784,16 @@ expandRTE(RangeTblEntry *rte, int rtindex, int sublevels_up, *colnames = lappend(*colnames, makeString(pstrdup(""))); if (colvars) + { + /* + * Can't use join's column type here (it might + * be dropped!); but it doesn't really matter + * what type the Const claims to be. + */ *colvars = lappend(*colvars, - copyObject(avar)); + makeNullConst(INT4OID, -1, + InvalidOid)); + } } continue; } @@ -2165,6 +2182,7 @@ get_rte_attribute_type(RangeTblEntry *rte, AttrNumber attnum, Assert(attnum > 0 && attnum <= list_length(rte->joinaliasvars)); aliasvar = (Node *) list_nth(rte->joinaliasvars, attnum - 1); + Assert(aliasvar != NULL); *vartype = exprType(aliasvar); *vartypmod = exprTypmod(aliasvar); *varcollid = exprCollation(aliasvar); @@ -2227,7 +2245,7 @@ get_rte_attribute_is_dropped(RangeTblEntry *rte, AttrNumber attnum) * but one in a stored rule might contain columns that were * dropped from the underlying tables, if said columns are * nowhere explicitly referenced in the rule. This will be - * signaled to us by a NULL Const in the joinaliasvars list. + * signaled to us by a null pointer in the joinaliasvars list. */ Var *aliasvar; @@ -2236,7 +2254,7 @@ get_rte_attribute_is_dropped(RangeTblEntry *rte, AttrNumber attnum) elog(ERROR, "invalid varattno %d", attnum); aliasvar = (Var *) list_nth(rte->joinaliasvars, attnum - 1); - result = IsA(aliasvar, Const); + result = (aliasvar == NULL); } break; case RTE_FUNCTION: diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c index 4471dc84ef..2ec236559b 100644 --- a/src/backend/parser/parse_target.c +++ b/src/backend/parser/parse_target.c @@ -304,6 +304,7 @@ markTargetListOrigin(ParseState *pstate, TargetEntry *tle, Assert(attnum > 0 && attnum <= list_length(rte->joinaliasvars)); aliasvar = (Var *) list_nth(rte->joinaliasvars, attnum - 1); + /* We intentionally don't strip implicit coercions here */ markTargetListOrigin(pstate, tle, aliasvar, netlevelsup); } break; @@ -821,18 +822,20 @@ transformAssignmentSubscripts(ParseState *pstate, /* If target was a domain over array, need to coerce up to the domain */ if (arrayType != targetTypeId) { + Oid resulttype = exprType(result); + result = coerce_to_target_type(pstate, - result, exprType(result), + result, resulttype, targetTypeId, targetTypMod, COERCION_ASSIGNMENT, COERCE_IMPLICIT_CAST, -1); - /* probably shouldn't fail, but check */ + /* can fail if we had int2vector/oidvector, but not for true domains */ if (result == NULL) ereport(ERROR, (errcode(ERRCODE_CANNOT_COERCE), errmsg("cannot cast type %s to %s", - format_type_be(exprType(result)), + format_type_be(resulttype), format_type_be(targetTypeId)), parser_errposition(pstate, location))); } @@ -1424,6 +1427,8 @@ expandRecordVariable(ParseState *pstate, Var *var, int levelsup) /* Join RTE --- recursively inspect the alias variable */ Assert(attnum > 0 && attnum <= list_length(rte->joinaliasvars)); expr = (Node *) list_nth(rte->joinaliasvars, attnum - 1); + Assert(expr != NULL); + /* We intentionally don't strip implicit coercions here */ if (IsA(expr, Var)) return expandRecordVariable(pstate, (Var *) expr, netlevelsup); /* else fall through to inspect the expression */ diff --git a/src/backend/parser/parse_utilcmd.c b/src/backend/parser/parse_utilcmd.c index 45becd0541..e238dc885c 100644 --- a/src/backend/parser/parse_utilcmd.c +++ b/src/backend/parser/parse_utilcmd.c @@ -18,7 +18,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/backend/parser/parse_utilcmd.c * @@ -122,7 +122,8 @@ static void transformOfType(CreateStmtContext *cxt, TypeName *ofTypename); static char *chooseIndexName(const RangeVar *relation, IndexStmt *index_stmt); static IndexStmt *generateClonedIndexStmt(CreateStmtContext *cxt, - Relation parent_index, AttrNumber *attmap); + Relation source_idx, + const AttrNumber *attmap, int attmap_length); static List *get_collation(Oid collation, Oid actual_datatype); static List *get_opclass(Oid opclass, Oid actual_datatype); static void transformIndexConstraints(CreateStmtContext *cxt); @@ -175,6 +176,7 @@ transformCreateStmt(CreateStmt *stmt, const char *queryString) * possible. */ namespaceid = RangeVarGetAndCheckCreationNamespace(stmt->relation); + RangeVarAdjustRelationPersistence(stmt->relation, namespaceid); /* * If the relation already exists and the user specified "IF NOT EXISTS", @@ -397,7 +399,10 @@ transformColumnDefinition(CreateStmtContext *cxt, ColumnDef *column) if (cxt->rel) snamespaceid = RelationGetNamespace(cxt->rel); else + { snamespaceid = RangeVarGetCreationNamespace(cxt->relation); + RangeVarAdjustRelationPersistence(cxt->relation, snamespaceid); + } snamespace = get_namespace_name(snamespaceid); sname = ChooseRelationName(cxt->relation->relname, column->colname, @@ -641,6 +646,7 @@ transformInhRelation(CreateStmtContext *cxt, InhRelation *inhRelation) Relation relation; TupleDesc tupleDesc; TupleConstr *constr; + AttrNumber *attmap; AclResult aclresult; char *comment; @@ -675,6 +681,13 @@ transformInhRelation(CreateStmtContext *cxt, InhRelation *inhRelation) tupleDesc = RelationGetDescr(relation); constr = tupleDesc->constr; + /* + * Initialize column number map for map_variable_attnos(). We need this + * since dropped columns in the source table aren't copied, so the new + * table can have different column numbers. + */ + attmap = (AttrNumber *) palloc0(sizeof(AttrNumber) * tupleDesc->natts); + /* * Insert the copied attributes into the cxt for the new table definition. */ @@ -686,7 +699,7 @@ transformInhRelation(CreateStmtContext *cxt, InhRelation *inhRelation) ColumnDef *def; /* - * Ignore dropped columns in the parent. + * Ignore dropped columns in the parent. attmap entry is left zero. */ if (attribute->attisdropped) continue; @@ -717,6 +730,8 @@ transformInhRelation(CreateStmtContext *cxt, InhRelation *inhRelation) */ cxt->columns = lappend(cxt->columns, def); + attmap[parent_attno - 1] = list_length(cxt->columns); + /* * Copy default, if present and the default has been requested */ @@ -775,22 +790,39 @@ transformInhRelation(CreateStmtContext *cxt, InhRelation *inhRelation) /* * Copy CHECK constraints if requested, being careful to adjust attribute - * numbers + * numbers so they match the child. */ if ((inhRelation->options & CREATE_TABLE_LIKE_CONSTRAINTS) && tupleDesc->constr) { - AttrNumber *attmap = varattnos_map_schema(tupleDesc, cxt->columns); int ccnum; for (ccnum = 0; ccnum < tupleDesc->constr->num_check; ccnum++) { char *ccname = tupleDesc->constr->check[ccnum].ccname; char *ccbin = tupleDesc->constr->check[ccnum].ccbin; - Node *ccbin_node = stringToNode(ccbin); Constraint *n = makeNode(Constraint); + Node *ccbin_node; + bool found_whole_row; + + ccbin_node = map_variable_attnos(stringToNode(ccbin), + 1, 0, + attmap, tupleDesc->natts, + &found_whole_row); - change_varattnos_of_a_node(ccbin_node, attmap); + /* + * We reject whole-row variables because the whole point of LIKE + * is that the new table's rowtype might later diverge from the + * parent's. So, while translation might be possible right now, + * it wouldn't be possible to guarantee it would work in future. + */ + if (found_whole_row) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot convert whole-row table reference"), + errdetail("Constraint \"%s\" contains a whole-row reference to table \"%s\".", + ccname, + RelationGetRelationName(relation)))); n->contype = CONSTR_CHECK; n->location = -1; @@ -826,7 +858,6 @@ transformInhRelation(CreateStmtContext *cxt, InhRelation *inhRelation) if ((inhRelation->options & CREATE_TABLE_LIKE_INDEXES) && relation->rd_rel->relhasindex) { - AttrNumber *attmap = varattnos_map_schema(tupleDesc, cxt->columns); List *parent_indexes; ListCell *l; @@ -841,7 +872,8 @@ transformInhRelation(CreateStmtContext *cxt, InhRelation *inhRelation) parent_index = index_open(parent_index_oid, AccessShareLock); /* Build CREATE INDEX statement to recreate the parent_index */ - index_stmt = generateClonedIndexStmt(cxt, parent_index, attmap); + index_stmt = generateClonedIndexStmt(cxt, parent_index, + attmap, tupleDesc->natts); /* Copy comment on index */ if (inhRelation->options & CREATE_TABLE_LIKE_COMMENTS) @@ -891,7 +923,6 @@ static void transformOfType(CreateStmtContext *cxt, TypeName *ofTypename) { HeapTuple tuple; - Form_pg_type typ; TupleDesc tupdesc; int i; Oid ofTypeId; @@ -900,7 +931,6 @@ transformOfType(CreateStmtContext *cxt, TypeName *ofTypename) tuple = typenameType(NULL, ofTypename, NULL); check_of_type(tuple); - typ = (Form_pg_type) GETSTRUCT(tuple); ofTypeId = HeapTupleGetOid(tuple); ofTypename->typeOid = ofTypeId; /* cached for later */ @@ -962,7 +992,7 @@ chooseIndexName(const RangeVar *relation, IndexStmt *index_stmt) */ static IndexStmt * generateClonedIndexStmt(CreateStmtContext *cxt, Relation source_idx, - AttrNumber *attmap) + const AttrNumber *attmap, int attmap_length) { Oid source_relid = RelationGetRelid(source_idx); Form_pg_attribute *attrs = RelationGetDescr(source_idx)->attrs; @@ -1150,14 +1180,26 @@ generateClonedIndexStmt(CreateStmtContext *cxt, Relation source_idx, { /* Expressional index */ Node *indexkey; + bool found_whole_row; if (indexpr_item == NULL) elog(ERROR, "too few entries in indexprs list"); indexkey = (Node *) lfirst(indexpr_item); indexpr_item = lnext(indexpr_item); - /* OK to modify indexkey since we are working on a private copy */ - change_varattnos_of_a_node(indexkey, attmap); + /* Adjust Vars to match new table's column numbering */ + indexkey = map_variable_attnos(indexkey, + 1, 0, + attmap, attmap_length, + &found_whole_row); + + /* As in transformTableLikeClause, reject whole-row variables */ + if (found_whole_row) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot convert whole-row table reference"), + errdetail("Index \"%s\" contains a whole-row table reference.", + RelationGetRelationName(source_idx)))); iparam->name = NULL; iparam->expr = indexkey; @@ -1214,12 +1256,28 @@ generateClonedIndexStmt(CreateStmtContext *cxt, Relation source_idx, if (!isnull) { char *pred_str; + Node *pred_tree; + bool found_whole_row; /* Convert text string to node tree */ pred_str = TextDatumGetCString(datum); - index->whereClause = (Node *) stringToNode(pred_str); - /* Adjust attribute numbers */ - change_varattnos_of_a_node(index->whereClause, attmap); + pred_tree = (Node *) stringToNode(pred_str); + + /* Adjust Vars to match new table's column numbering */ + pred_tree = map_variable_attnos(pred_tree, + 1, 0, + attmap, attmap_length, + &found_whole_row); + + /* As in transformTableLikeClause, reject whole-row variables */ + if (found_whole_row) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot convert whole-row table reference"), + errdetail("Index \"%s\" contains a whole-row table reference.", + RelationGetRelationName(source_idx)))); + + index->whereClause = pred_tree; } /* Clean up */ @@ -1517,37 +1575,31 @@ transformIndexConstraint(Constraint *constraint, CreateStmtContext *cxt) index_name, RelationGetRelationName(heap_rel)), parser_errposition(cxt->pstate, constraint->location))); - if (!index_form->indisvalid) + if (!IndexIsValid(index_form)) ereport(ERROR, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), errmsg("index \"%s\" is not valid", index_name), parser_errposition(cxt->pstate, constraint->location))); - if (!index_form->indisready) - ereport(ERROR, - (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), - errmsg("index \"%s\" is not ready", index_name), - parser_errposition(cxt->pstate, constraint->location))); - if (!index_form->indisunique) ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), errmsg("\"%s\" is not a unique index", index_name), - errdetail("Cannot create a PRIMARY KEY or UNIQUE constraint using such an index."), + errdetail("Cannot create a primary key or unique constraint using such an index."), parser_errposition(cxt->pstate, constraint->location))); if (RelationGetIndexExpressions(index_rel) != NIL) ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), errmsg("index \"%s\" contains expressions", index_name), - errdetail("Cannot create a PRIMARY KEY or UNIQUE constraint using such an index."), + errdetail("Cannot create a primary key or unique constraint using such an index."), parser_errposition(cxt->pstate, constraint->location))); if (RelationGetIndexPredicate(index_rel) != NIL) ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), errmsg("\"%s\" is a partial index", index_name), - errdetail("Cannot create a PRIMARY KEY or UNIQUE constraint using such an index."), + errdetail("Cannot create a primary key or unique constraint using such an index."), parser_errposition(cxt->pstate, constraint->location))); /* @@ -1572,7 +1624,7 @@ transformIndexConstraint(Constraint *constraint, CreateStmtContext *cxt) if (index_rel->rd_rel->relam != get_am_oid(DEFAULT_INDEX_TYPE, false)) ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), - errmsg("index \"%s\" is not a b-tree", index_name), + errmsg("index \"%s\" is not a btree", index_name), parser_errposition(cxt->pstate, constraint->location))); /* Must get indclass the hard way */ @@ -1617,7 +1669,7 @@ transformIndexConstraint(Constraint *constraint, CreateStmtContext *cxt) ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), errmsg("index \"%s\" does not have default sorting behavior", index_name), - errdetail("Cannot create a PRIMARY KEY or UNIQUE constraint using such an index."), + errdetail("Cannot create a primary key or unique constraint using such an index."), parser_errposition(cxt->pstate, constraint->location))); constraint->keys = lappend(constraint->keys, makeString(attname)); @@ -1849,7 +1901,8 @@ transformFKConstraints(CreateStmtContext *cxt, /* * If CREATE TABLE or adding a column with NULL default, we can safely - * skip validation of the constraint. + * skip validation of FK constraints, and nonetheless mark them valid. + * (This will override any user-supplied NOT VALID flag.) */ if (skipValidation) { @@ -1929,14 +1982,18 @@ transformFKConstraints(CreateStmtContext *cxt, * a predicate expression. There are several code paths that create indexes * without bothering to call this, because they know they don't have any * such expressions to deal with. + * + * To avoid race conditions, it's important that this function rely only on + * the passed-in relid (and not on stmt->relation) to determine the target + * relation. */ IndexStmt * -transformIndexStmt(IndexStmt *stmt, const char *queryString) +transformIndexStmt(Oid relid, IndexStmt *stmt, const char *queryString) { - Relation rel; ParseState *pstate; RangeTblEntry *rte; ListCell *l; + Relation rel; /* * We must not scribble on the passed-in IndexStmt, so copy it. (This is @@ -1944,26 +2001,17 @@ transformIndexStmt(IndexStmt *stmt, const char *queryString) */ stmt = (IndexStmt *) copyObject(stmt); - /* - * Open the parent table with appropriate locking. We must do this - * because addRangeTableEntry() would acquire only AccessShareLock, - * leaving DefineIndex() needing to do a lock upgrade with consequent risk - * of deadlock. Make sure this stays in sync with the type of lock - * DefineIndex() wants. If we are being called by ALTER TABLE, we will - * already hold a higher lock. - */ - rel = heap_openrv(stmt->relation, - (stmt->concurrent ? ShareUpdateExclusiveLock : ShareLock)); - /* Set up pstate */ pstate = make_parsestate(NULL); pstate->p_sourcetext = queryString; /* * Put the parent table into the rtable so that the expressions can refer - * to its fields without qualification. + * to its fields without qualification. Caller is responsible for locking + * relation, but we still need to open it. */ - rte = addRangeTableEntry(pstate, stmt->relation, NULL, false, true); + rel = relation_open(relid, NoLock); + rte = addRangeTableEntryForRelation(pstate, rel, NULL, false, true); /* no to join list, yes to namespaces */ addRTEtoQuery(pstate, rte, false, true, true); @@ -2017,7 +2065,7 @@ transformIndexStmt(IndexStmt *stmt, const char *queryString) free_parsestate(pstate); - /* Close relation, but keep the lock */ + /* Close relation */ heap_close(rel, NoLock); return stmt; @@ -2345,9 +2393,14 @@ transformRuleStmt(RuleStmt *stmt, const char *queryString, * Returns a List of utility commands to be done in sequence. One of these * will be the transformed AlterTableStmt, but there may be additional actions * to be done before and after the actual AlterTable() call. + * + * To avoid race conditions, it's important that this function rely only on + * the passed-in relid (and not on stmt->relation) to determine the target + * relation. */ List * -transformAlterTableStmt(AlterTableStmt *stmt, const char *queryString) +transformAlterTableStmt(Oid relid, AlterTableStmt *stmt, + const char *queryString) { Relation rel; ParseState *pstate; @@ -2359,7 +2412,6 @@ transformAlterTableStmt(AlterTableStmt *stmt, const char *queryString) List *newcmds = NIL; bool skipValidation = true; AlterTableCmd *newcmd; - LOCKMODE lockmode; /* * We must not scribble on the passed-in AlterTableStmt, so copy it. (This @@ -2367,21 +2419,8 @@ transformAlterTableStmt(AlterTableStmt *stmt, const char *queryString) */ stmt = (AlterTableStmt *) copyObject(stmt); - /* - * Determine the appropriate lock level for this list of subcommands. - */ - lockmode = AlterTableGetLockLevel(stmt->cmds); - - /* - * Acquire appropriate lock on the target relation, which will be held - * until end of transaction. This ensures any decisions we make here - * based on the state of the relation will still be good at execution. We - * must get lock now because execution will later require it; taking a - * lower grade lock now and trying to upgrade later risks deadlock. Any - * new commands we add after this must not upgrade the lock level - * requested here. - */ - rel = relation_openrv(stmt->relation, lockmode); + /* Caller is responsible for locking the relation */ + rel = relation_open(relid, NoLock); /* Set up pstate and CreateStmtContext */ pstate = make_parsestate(NULL); @@ -2500,7 +2539,7 @@ transformAlterTableStmt(AlterTableStmt *stmt, const char *queryString) IndexStmt *idxstmt = (IndexStmt *) lfirst(l); Assert(IsA(idxstmt, IndexStmt)); - idxstmt = transformIndexStmt(idxstmt, queryString); + idxstmt = transformIndexStmt(relid, idxstmt, queryString); newcmd = makeNode(AlterTableCmd); newcmd->subtype = OidIsValid(idxstmt->indexOid) ? AT_AddIndexConstraint : AT_AddIndex; newcmd->def = (Node *) idxstmt; @@ -2524,7 +2563,7 @@ transformAlterTableStmt(AlterTableStmt *stmt, const char *queryString) newcmds = lappend(newcmds, newcmd); } - /* Close rel but keep lock */ + /* Close rel */ relation_close(rel, NoLock); /* diff --git a/src/backend/parser/scan.l b/src/backend/parser/scan.l index 4f9af543d6..ae79182cb2 100644 --- a/src/backend/parser/scan.l +++ b/src/backend/parser/scan.l @@ -696,28 +696,32 @@ other . return IDENT; } {xuistop1} { - char *ident; + char *ident; + int identlen; BEGIN(INITIAL); if (yyextra->literallen == 0) yyerror("zero-length delimited identifier"); ident = litbuf_udeescape('\\', yyscanner); - if (yyextra->literallen >= NAMEDATALEN) - truncate_identifier(ident, yyextra->literallen, true); + identlen = strlen(ident); + if (identlen >= NAMEDATALEN) + truncate_identifier(ident, identlen, true); yylval->str = ident; /* throw back all but the quote */ yyless(1); return IDENT; } {xuistop2} { - char *ident; + char *ident; + int identlen; BEGIN(INITIAL); if (yyextra->literallen == 0) yyerror("zero-length delimited identifier"); ident = litbuf_udeescape(yytext[yyleng - 2], yyscanner); - if (yyextra->literallen >= NAMEDATALEN) - truncate_identifier(ident, yyextra->literallen, true); + identlen = strlen(ident); + if (identlen >= NAMEDATALEN) + truncate_identifier(ident, identlen, true); yylval->str = ident; return IDENT; } diff --git a/src/backend/parser/scansup.c b/src/backend/parser/scansup.c index c6ac203f86..1586da6d94 100644 --- a/src/backend/parser/scansup.c +++ b/src/backend/parser/scansup.c @@ -130,8 +130,10 @@ downcase_truncate_identifier(const char *ident, int len, bool warn) { char *result; int i; + bool enc_is_single_byte; result = palloc(len + 1); + enc_is_single_byte = pg_database_encoding_max_length() == 1; /* * SQL99 specifies Unicode-aware case normalization, which we don't yet @@ -139,8 +141,8 @@ downcase_truncate_identifier(const char *ident, int len, bool warn) * locale-aware translation. However, there are some locales where this * is not right either (eg, Turkish may do strange things with 'i' and * 'I'). Our current compromise is to use tolower() for characters with - * the high bit set, and use an ASCII-only downcasing for 7-bit - * characters. + * the high bit set, as long as they aren't part of a multi-byte character, + * and use an ASCII-only downcasing for 7-bit characters. */ for (i = 0; i < len; i++) { @@ -148,7 +150,7 @@ downcase_truncate_identifier(const char *ident, int len, bool warn) if (ch >= 'A' && ch <= 'Z') ch += 'a' - 'A'; - else if (IS_HIGHBIT_SET(ch) && isupper(ch)) + else if (enc_is_single_byte && IS_HIGHBIT_SET(ch) && isupper(ch)) ch = tolower(ch); result[i] = (char) ch; } diff --git a/src/backend/pgxc/Makefile b/src/backend/pgxc/Makefile index 312b4d330c..064601707b 100644 --- a/src/backend/pgxc/Makefile +++ b/src/backend/pgxc/Makefile @@ -1,12 +1,12 @@ +#---------------------------------------------------------------------------- # -# Makefile for the access methods module +# Postgres-XC backend method makefile # +# Copyright (c) 2010-2013, Postgres-XC Development Group # -# Portions Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation +# src/backend/pgxc/Makefile # -# $PostgreSQL$ -# - +#----------------------------------------------------------------------------- subdir = src/backend/pgxc top_builddir = ../../.. include $(top_builddir)/src/Makefile.global diff --git a/src/backend/pgxc/barrier/Makefile b/src/backend/pgxc/barrier/Makefile index 9505889209..32d56e0e51 100644 --- a/src/backend/pgxc/barrier/Makefile +++ b/src/backend/pgxc/barrier/Makefile @@ -3,7 +3,7 @@ # Makefile-- # Makefile for barrier # -# Portions Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation +# Portions Copyright (c) 2010-2013, Postgres-XC Development Group # # IDENTIFICATION # $PostgreSQL$ diff --git a/src/backend/pgxc/barrier/barrier.c b/src/backend/pgxc/barrier/barrier.c index 7eaffaa7b6..93cc47759b 100644 --- a/src/backend/pgxc/barrier/barrier.c +++ b/src/backend/pgxc/barrier/barrier.c @@ -6,7 +6,7 @@ * * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * IDENTIFICATION * $$ @@ -36,7 +36,7 @@ static void EndBarrier(PGXCNodeAllHandles *handles, const char *id); * Prepare ourselves for an incoming BARRIER. We must disable all new 2PC * commits and let the ongoing commits to finish. We then remember the * barrier id (so that it can be matched with the final END message) and - * tell the driving coordinator to proceed with the next step. + * tell the driving Coordinator to proceed with the next step. * * A simple way to implement this is to grab a lock in an exclusive mode * while all other backend starting a 2PC will grab the lock in shared @@ -58,7 +58,7 @@ ProcessCreateBarrierPrepare(const char *id) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), errmsg("The CREATE BARRIER PREPARE message is expected to " - "arrive at a coordinator from another coordinator"))); + "arrive at a Coordinator from another Coordinator"))); LWLockAcquire(BarrierLock, LW_EXCLUSIVE); @@ -86,7 +86,7 @@ ProcessCreateBarrierEnd(const char *id) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), errmsg("The CREATE BARRIER END message is expected to " - "arrive at a coordinator from another coordinator"))); + "arrive at a Coordinator from another Coordinator"))); LWLockRelease(BarrierLock); @@ -114,7 +114,7 @@ ProcessCreateBarrierExecute(const char *id) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), errmsg("The CREATE BARRIER EXECUTE message is expected to " - "arrive from a coordinator"))); + "arrive from a Coordinator"))); { XLogRecData rdata[1]; XLogRecPtr recptr; @@ -143,7 +143,7 @@ generate_barrier_id(const char *id) /* * If the caller can passed a NULL value, generate an id which is * guaranteed to be unique across the cluster. We use a combination of - * the coordinator node id and current timestamp. + * the Coordinator node id and current timestamp. */ if (id) @@ -166,7 +166,7 @@ SendBarrierPrepareRequest(List *coords, const char *id) int msglen; int barrier_idlen; - coord_handles = get_handles(NIL, coords, true); + coord_handles = get_handles(NIL, coords, true); for (conn = 0; conn < coord_handles->co_conn_count; conn++) { @@ -218,12 +218,12 @@ CheckBarrierCommandStatus(PGXCNodeAllHandles *conn_handles, const char *id, int conn; int count = conn_handles->co_conn_count + conn_handles->dn_conn_count; - elog(DEBUG2, "Check CREATE BARRIER <%s> %s command status", id, command); + elog(DEBUG1, "Check CREATE BARRIER <%s> %s command status", id, command); for (conn = 0; conn < count; conn++) { PGXCNodeHandle *handle; - + if (conn < conn_handles->co_conn_count) handle = conn_handles->coord_handles[conn]; else @@ -241,7 +241,7 @@ CheckBarrierCommandStatus(PGXCNodeAllHandles *conn_handles, const char *id, "with error %s", handle->error))); } - elog(DEBUG2, "Successfully completed CREATE BARRIER <%s> %s command on " + elog(DEBUG1, "Successfully completed CREATE BARRIER <%s> %s command on " "all nodes", id, command); } @@ -252,7 +252,7 @@ SendBarrierEndRequest(PGXCNodeAllHandles *coord_handles, const char *id) int msglen; int barrier_idlen; - elog(DEBUG2, "Sending CREATE BARRIER <%s> END command to all coordinators", id); + elog(DEBUG1, "Sending CREATE BARRIER <%s> END command to all Coordinators", id); for (conn = 0; conn < coord_handles->co_conn_count; conn++) { @@ -296,27 +296,27 @@ SendBarrierEndRequest(PGXCNodeAllHandles *coord_handles, const char *id) } /* - * Prepare all coordinators for barrier. During this step all the coordinators - * are informed to suspend any new 2PC transactions. The coordinators should + * Prepare all Coordinators for barrier. During this step all the Coordinators + * are informed to suspend any new 2PC transactions. The Coordinators should * disable new 2PC transactions and then wait for the existing transactions to - * complete. Once all "in-flight" 2PC transactions are over, the coordinators + * complete. Once all "in-flight" 2PC transactions are over, the Coordinators * respond back. * * That completes the first step in barrier generation * * Any errors will be reported via ereport. - */ + */ static PGXCNodeAllHandles * PrepareBarrier(const char *id) { PGXCNodeAllHandles *coord_handles; - elog(DEBUG2, "Preparing coordinators for BARRIER"); + elog(DEBUG1, "Preparing Coordinators for BARRIER"); /* - * Send a CREATE BARRIER PREPARE message to all the coordinators. We should + * Send a CREATE BARRIER PREPARE message to all the Coordinators. We should * send an asynchronous request so that we can disable local commits and - * then wait for the remote coordinators to finish the work + * then wait for the remote Coordinators to finish the work */ coord_handles = SendBarrierPrepareRequest(GetAllCoordNodes(), id); @@ -325,7 +325,7 @@ PrepareBarrier(const char *id) */ LWLockAcquire(BarrierLock, LW_EXCLUSIVE); - elog(DEBUG2, "Disabled 2PC commits originating at the driving coordinator"); + elog(DEBUG2, "Disabled 2PC commits originating at the driving Coordinator"); /* * TODO Start a timer to cancel the barrier request in case of a timeout @@ -333,7 +333,7 @@ PrepareBarrier(const char *id) /* * Local in-flight commits are now over. Check status of the remote - * coordinators + * Coordinators */ CheckBarrierCommandStatus(coord_handles, id, "PREPARE"); @@ -341,8 +341,8 @@ PrepareBarrier(const char *id) } /* - * Execute the barrier command on all the components, including data nodes and - * coordinators. + * Execute the barrier command on all the components, including Datanodes and + * Coordinators. */ static void ExecuteBarrier(const char *id) @@ -356,15 +356,15 @@ ExecuteBarrier(const char *id) conn_handles = get_handles(barrierDataNodeList, barrierCoordList, false); - elog(DEBUG2, "Sending CREATE BARRIER <%s> EXECUTE message to " - "data nodes and coordinator", id); - /* - * Send a CREATE BARRIER request to all the data nodes and the coordinators + elog(DEBUG1, "Sending CREATE BARRIER <%s> EXECUTE message to " + "Datanodes and Coordinator", id); + /* + * Send a CREATE BARRIER request to all the Datanodes and the Coordinators */ for (conn = 0; conn < conn_handles->co_conn_count + conn_handles->dn_conn_count; conn++) { PGXCNodeHandle *handle; - + if (conn < conn_handles->co_conn_count) handle = conn_handles->coord_handles[conn]; else @@ -427,7 +427,7 @@ ExecuteBarrier(const char *id) } /* - * Resume 2PC commits on the local as well as remote coordinators. + * Resume 2PC commits on the local as well as remote Coordinators. */ static void EndBarrier(PGXCNodeAllHandles *prepared_handles, const char *id) @@ -446,41 +446,41 @@ RequestBarrier(const char *id, char *completionTag) PGXCNodeAllHandles *prepared_handles; const char *barrier_id; - elog(DEBUG2, "CREATE BARRIER request received"); + elog(DEBUG1, "CREATE BARRIER request received"); /* - * Ensure that we are a coordinator and the request is not from another + * Ensure that we are a Coordinator and the request is not from another * coordinator */ if (!IS_PGXC_COORDINATOR) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("CREATE BARRIER command must be sent to a coordinator"))); + errmsg("CREATE BARRIER command must be sent to a Coordinator"))); if (IsConnFromCoord()) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("CREATE BARRIER command is not expected from another coordinator"))); + errmsg("CREATE BARRIER command is not expected from another Coordinator"))); /* * Get a barrier id if the user has not supplied it */ barrier_id = generate_barrier_id(id); - - elog(DEBUG2, "CREATE BARRIER <%s>", barrier_id); + + elog(DEBUG1, "CREATE BARRIER <%s>", barrier_id); /* - * Step One. Prepare all coordinators for upcoming barrier request + * Step One. Prepare all Coordinators for upcoming barrier request */ prepared_handles = PrepareBarrier(barrier_id); /* * Step two. Issue BARRIER command to all involved components, including - * coordinators and data nodes + * Coordinators and Datanodes */ ExecuteBarrier(barrier_id); /* - * Step three. Inform coordinators about a successfully completed barrier + * Step three. Inform Coordinators about a successfully completed barrier */ EndBarrier(prepared_handles, barrier_id); diff --git a/src/backend/pgxc/locator/Makefile b/src/backend/pgxc/locator/Makefile index 026a247940..5e0a8be267 100644 --- a/src/backend/pgxc/locator/Makefile +++ b/src/backend/pgxc/locator/Makefile @@ -3,8 +3,7 @@ # Makefile-- # Makefile for locator # -# -# Copyright(C) 2010 Nippon Telegraph and Telephone Corporation +# Copyright (c) 2010-2013, Postgres-XC Development Group # # IDENTIFICATION # $PostgreSQL$ diff --git a/src/backend/pgxc/locator/locator.c b/src/backend/pgxc/locator/locator.c index 629b970fc7..83c03650f0 100644 --- a/src/backend/pgxc/locator/locator.c +++ b/src/backend/pgxc/locator/locator.c @@ -7,7 +7,7 @@ * * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -52,19 +52,19 @@ Oid primary_data_node = InvalidOid; int num_preferred_data_nodes = 0; Oid preferred_data_node[MAX_PREFERRED_NODES]; -static const unsigned int xc_mod_m[] = +static const unsigned int xc_mod_m[] = { - 0x00000000, 0x55555555, 0x33333333, 0xc71c71c7, - 0x0f0f0f0f, 0xc1f07c1f, 0x3f03f03f, 0xf01fc07f, + 0x00000000, 0x55555555, 0x33333333, 0xc71c71c7, + 0x0f0f0f0f, 0xc1f07c1f, 0x3f03f03f, 0xf01fc07f, 0x00ff00ff, 0x07fc01ff, 0x3ff003ff, 0xffc007ff, 0xff000fff, 0xfc001fff, 0xf0003fff, 0xc0007fff, - 0x0000ffff, 0x0001ffff, 0x0003ffff, 0x0007ffff, + 0x0000ffff, 0x0001ffff, 0x0003ffff, 0x0007ffff, 0x000fffff, 0x001fffff, 0x003fffff, 0x007fffff, 0x00ffffff, 0x01ffffff, 0x03ffffff, 0x07ffffff, 0x0fffffff, 0x1fffffff, 0x3fffffff, 0x7fffffff }; -static const unsigned int xc_mod_q[][6] = +static const unsigned int xc_mod_q[][6] = { { 0, 0, 0, 0, 0, 0}, {16, 8, 4, 2, 1, 1}, {16, 8, 4, 2, 2, 2}, {15, 6, 3, 3, 3, 3}, {16, 8, 4, 4, 4, 4}, {15, 5, 5, 5, 5, 5}, @@ -79,7 +79,7 @@ static const unsigned int xc_mod_q[][6] = {30, 30, 30, 30, 30, 30}, {31, 31, 31, 31, 31, 31} }; -static const unsigned int xc_mod_r[][6] = +static const unsigned int xc_mod_r[][6] = { {0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, {0x0000ffff, 0x000000ff, 0x0000000f, 0x00000003, 0x00000001, 0x00000001}, @@ -90,34 +90,34 @@ static const unsigned int xc_mod_r[][6] = {0x00000fff, 0x0000003f, 0x0000003f, 0x0000003f, 0x0000003f, 0x0000003f}, {0x00003fff, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f}, {0x0000ffff, 0x000000ff, 0x000000ff, 0x000000ff, 0x000000ff, 0x000000ff}, - {0x000001ff, 0x000001ff, 0x000001ff, 0x000001ff, 0x000001ff, 0x000001ff}, - {0x000003ff, 0x000003ff, 0x000003ff, 0x000003ff, 0x000003ff, 0x000003ff}, - {0x000007ff, 0x000007ff, 0x000007ff, 0x000007ff, 0x000007ff, 0x000007ff}, - {0x00000fff, 0x00000fff, 0x00000fff, 0x00000fff, 0x00000fff, 0x00000fff}, - {0x00001fff, 0x00001fff, 0x00001fff, 0x00001fff, 0x00001fff, 0x00001fff}, - {0x00003fff, 0x00003fff, 0x00003fff, 0x00003fff, 0x00003fff, 0x00003fff}, - {0x00007fff, 0x00007fff, 0x00007fff, 0x00007fff, 0x00007fff, 0x00007fff}, - {0x0000ffff, 0x0000ffff, 0x0000ffff, 0x0000ffff, 0x0000ffff, 0x0000ffff}, - {0x0001ffff, 0x0001ffff, 0x0001ffff, 0x0001ffff, 0x0001ffff, 0x0001ffff}, - {0x0003ffff, 0x0003ffff, 0x0003ffff, 0x0003ffff, 0x0003ffff, 0x0003ffff}, + {0x000001ff, 0x000001ff, 0x000001ff, 0x000001ff, 0x000001ff, 0x000001ff}, + {0x000003ff, 0x000003ff, 0x000003ff, 0x000003ff, 0x000003ff, 0x000003ff}, + {0x000007ff, 0x000007ff, 0x000007ff, 0x000007ff, 0x000007ff, 0x000007ff}, + {0x00000fff, 0x00000fff, 0x00000fff, 0x00000fff, 0x00000fff, 0x00000fff}, + {0x00001fff, 0x00001fff, 0x00001fff, 0x00001fff, 0x00001fff, 0x00001fff}, + {0x00003fff, 0x00003fff, 0x00003fff, 0x00003fff, 0x00003fff, 0x00003fff}, + {0x00007fff, 0x00007fff, 0x00007fff, 0x00007fff, 0x00007fff, 0x00007fff}, + {0x0000ffff, 0x0000ffff, 0x0000ffff, 0x0000ffff, 0x0000ffff, 0x0000ffff}, + {0x0001ffff, 0x0001ffff, 0x0001ffff, 0x0001ffff, 0x0001ffff, 0x0001ffff}, + {0x0003ffff, 0x0003ffff, 0x0003ffff, 0x0003ffff, 0x0003ffff, 0x0003ffff}, {0x0007ffff, 0x0007ffff, 0x0007ffff, 0x0007ffff, 0x0007ffff, 0x0007ffff}, - {0x000fffff, 0x000fffff, 0x000fffff, 0x000fffff, 0x000fffff, 0x000fffff}, - {0x001fffff, 0x001fffff, 0x001fffff, 0x001fffff, 0x001fffff, 0x001fffff}, - {0x003fffff, 0x003fffff, 0x003fffff, 0x003fffff, 0x003fffff, 0x003fffff}, - {0x007fffff, 0x007fffff, 0x007fffff, 0x007fffff, 0x007fffff, 0x007fffff}, + {0x000fffff, 0x000fffff, 0x000fffff, 0x000fffff, 0x000fffff, 0x000fffff}, + {0x001fffff, 0x001fffff, 0x001fffff, 0x001fffff, 0x001fffff, 0x001fffff}, + {0x003fffff, 0x003fffff, 0x003fffff, 0x003fffff, 0x003fffff, 0x003fffff}, + {0x007fffff, 0x007fffff, 0x007fffff, 0x007fffff, 0x007fffff, 0x007fffff}, {0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff}, - {0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff}, - {0x03ffffff, 0x03ffffff, 0x03ffffff, 0x03ffffff, 0x03ffffff, 0x03ffffff}, + {0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff}, + {0x03ffffff, 0x03ffffff, 0x03ffffff, 0x03ffffff, 0x03ffffff, 0x03ffffff}, {0x07ffffff, 0x07ffffff, 0x07ffffff, 0x07ffffff, 0x07ffffff, 0x07ffffff}, {0x0fffffff, 0x0fffffff, 0x0fffffff, 0x0fffffff, 0x0fffffff, 0x0fffffff}, - {0x1fffffff, 0x1fffffff, 0x1fffffff, 0x1fffffff, 0x1fffffff, 0x1fffffff}, - {0x3fffffff, 0x3fffffff, 0x3fffffff, 0x3fffffff, 0x3fffffff, 0x3fffffff}, + {0x1fffffff, 0x1fffffff, 0x1fffffff, 0x1fffffff, 0x1fffffff, 0x1fffffff}, + {0x3fffffff, 0x3fffffff, 0x3fffffff, 0x3fffffff, 0x3fffffff, 0x3fffffff}, {0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff} }; /* * GetAnyDataNode - * Pick any data node from given list, but try a preferred node + * Pick any Datanode from given list, but try a preferred node */ List * GetAnyDataNode(List *relNodes) @@ -144,14 +144,14 @@ GetAnyDataNode(List *relNodes) } } - /* Nothing found? Return the 1st one */ - return lappend_int(NULL, 0); + /* Nothing found? Return the first one in relation node list */ + return lappend_int(NULL, linitial_int(relNodes)); } /* * compute_modulo * This function performs modulo in an optimized way - * It optimizes modulo of any positive number by + * It optimizes modulo of any positive number by * 1,2,3,4,7,8,15,16,31,32,63,64 and so on * for the rest of the denominators it uses % operator * The optimized algos have been taken from @@ -486,7 +486,7 @@ IsTableDistOnPrimary(RelationLocInfo *rel_loc_info) if (!OidIsValid(primary_data_node) || rel_loc_info == NULL || - list_length(rel_loc_info->nodeList = 0)) + list_length(rel_loc_info->nodeList) == 0) return false; foreach(item, rel_loc_info->nodeList) @@ -545,7 +545,7 @@ GetRelationNodes(RelationLocInfo *rel_loc_info, Datum valueForDistCol, * Write to primary node first, to reduce chance of a deadlock * on replicated tables. If -1, do not use primary copy. */ - if (IsTableDistOnPrimary(rel_loc_info) + if (IsTableDistOnPrimary(rel_loc_info) && exec_nodes->nodeList && list_length(exec_nodes->nodeList) > 1) /* make sure more than 1 */ { @@ -741,7 +741,7 @@ GetAllCoordNodes(void) { /* * Do not put in list the Coordinator we are on, - * it doesn't make sense to connect to the local coordinator. + * it doesn't make sense to connect to the local Coordinator. */ if (i != PGXCNodeId - 1) diff --git a/src/backend/pgxc/nodemgr/Makefile b/src/backend/pgxc/nodemgr/Makefile index 74cd60aaf3..e99e31d38a 100644 --- a/src/backend/pgxc/nodemgr/Makefile +++ b/src/backend/pgxc/nodemgr/Makefile @@ -3,7 +3,7 @@ # Makefile-- # Makefile for node management routines # -# Portions Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation +# Portions Copyright (c) 2010-2013, Postgres-XC Development Group # # IDENTIFICATION # $PostgreSQL$ diff --git a/src/backend/pgxc/nodemgr/groupmgr.c b/src/backend/pgxc/nodemgr/groupmgr.c index 79821accac..0696b9687d 100644 --- a/src/backend/pgxc/nodemgr/groupmgr.c +++ b/src/backend/pgxc/nodemgr/groupmgr.c @@ -5,7 +5,7 @@ * This includes support for DDL on objects NODE GROUP * * Copyright (c) 1996-2010, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * *------------------------------------------------------------------------- */ @@ -29,7 +29,7 @@ /* * PgxcGroupCreate - * + * * Create a PGXC node group */ void @@ -106,7 +106,7 @@ PgxcGroupCreate(CreateGroupStmt *stmt) /* Do the insertion */ (void) simple_heap_insert(rel, tup); - + CatalogUpdateIndexes(rel, tup); heap_close(rel, RowExclusiveLock); @@ -115,7 +115,7 @@ PgxcGroupCreate(CreateGroupStmt *stmt) /* * PgxcNodeGroupsRemove(): - * + * * Remove a PGXC node group */ void diff --git a/src/backend/pgxc/nodemgr/nodemgr.c b/src/backend/pgxc/nodemgr/nodemgr.c index c46d0c60f1..20f56d6582 100644 --- a/src/backend/pgxc/nodemgr/nodemgr.c +++ b/src/backend/pgxc/nodemgr/nodemgr.c @@ -5,7 +5,7 @@ * Support concerns CREATE/ALTER/DROP on NODE object. * * Copyright (c) 1996-2010, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * *------------------------------------------------------------------------- */ @@ -85,7 +85,7 @@ NodeTablesShmemInit(void) if (!found) *shmemNumCoords = 0; - /* Same for datanodes */ + /* Same for Datanodes */ shmemNumDataNodes = ShmemInitStruct("Datanode Table", sizeof(int) + sizeof(NodeDefinition) * MaxDataNodes, @@ -185,18 +185,14 @@ check_node_options(const char *node_name, List *options, char **node_host, } } - /* Checks on primary and preferred nodes */ + /* A primary node has to be a Datanode */ if (*is_primary && *node_type != PGXC_NODE_DATANODE) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), errmsg("PGXC node %s: cannot be a primary node, it has to be a Datanode", node_name))); - if (*is_primary && OidIsValid(primary_data_node)) - ereport(ERROR, - (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("PGXC node %s: two nodes cannot be primary", - node_name))); + /* A preferred node has to be a Datanode */ if (*is_preferred && *node_type != PGXC_NODE_DATANODE) ereport(ERROR, (errcode(ERRCODE_SYNTAX_ERROR), @@ -439,7 +435,7 @@ PgxcNodeGetDefinition(Oid node) LWLockAcquire(NodeTableLock, LW_SHARED); - /* search through the data nodes first */ + /* search through the Datanodes first */ for (i = 0; i < *shmemNumDataNodes; i++) { if (dnDefs[i].nodeoid == node) @@ -496,6 +492,7 @@ PgxcNodeCreate(CreateNodeStmt *stmt) bool is_primary = false; bool is_preferred = false; Datum node_id; + Oid nodeOid; /* Only a DB administrator can add nodes */ if (!superuser()) @@ -525,6 +522,16 @@ PgxcNodeCreate(CreateNodeStmt *stmt) /* Compute node identifier */ node_id = generate_node_id(node_name); + /* + * Check that this node is not created as a primary if one already + * exists. + */ + if (is_primary && OidIsValid(primary_data_node)) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("PGXC node %s: two nodes cannot be primary", + node_name))); + /* * Then assign default values if necessary * First for port. @@ -571,11 +578,14 @@ PgxcNodeCreate(CreateNodeStmt *stmt) htup = heap_form_tuple(pgxcnodesrel->rd_att, values, nulls); /* Insert tuple in catalog */ - simple_heap_insert(pgxcnodesrel, htup); + nodeOid = simple_heap_insert(pgxcnodesrel, htup); CatalogUpdateIndexes(pgxcnodesrel, htup); heap_close(pgxcnodesrel, RowExclusiveLock); + + if (is_primary) + primary_data_node = nodeOid; } /* @@ -592,6 +602,9 @@ PgxcNodeAlter(AlterNodeStmt *stmt) int node_port; bool is_preferred; bool is_primary; + bool was_primary; + bool primary_off = false; + Oid new_primary = InvalidOid; HeapTuple oldtup, newtup; Oid nodeOid = get_pgxc_nodeoid(node_name); Relation rel; @@ -628,7 +641,7 @@ PgxcNodeAlter(AlterNodeStmt *stmt) node_host = get_pgxc_nodehost(nodeOid); node_port = get_pgxc_nodeport(nodeOid); is_preferred = is_pgxc_nodepreferred(nodeOid); - is_primary = is_pgxc_nodeprimary(nodeOid); + is_primary = was_primary = is_pgxc_nodeprimary(nodeOid); node_type = get_pgxc_nodetype(nodeOid); node_type_old = node_type; node_id = get_pgxc_node_id(nodeOid); @@ -638,6 +651,30 @@ PgxcNodeAlter(AlterNodeStmt *stmt) &node_port, &node_type, &is_primary, &is_preferred); + /* + * Two nodes cannot be primary at the same time. If the primary + * node is this node itself, well there is no point in having an + * error. + */ + if (is_primary && + OidIsValid(primary_data_node) && + nodeOid != primary_data_node) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("PGXC node %s: two nodes cannot be primary", + node_name))); + /* + * If this node is a primary and the statement says primary = false, + * we need to invalidate primary_data_node when the whole operation + * is successful. + */ + if (was_primary && !is_primary && + OidIsValid(primary_data_node) && + nodeOid == primary_data_node) + primary_off = true; + else if (is_primary) + new_primary = nodeOid; + /* Check type dependency */ if (node_type_old == PGXC_NODE_COORDINATOR && node_type == PGXC_NODE_DATANODE) @@ -679,6 +716,12 @@ PgxcNodeAlter(AlterNodeStmt *stmt) /* Update indexes */ CatalogUpdateIndexes(rel, newtup); + /* Invalidate primary_data_node if needed */ + if (primary_off) + primary_data_node = InvalidOid; + /* Update primary datanode if needed */ + if (OidIsValid(new_primary)) + primary_data_node = new_primary; /* Release lock at Commit */ heap_close(rel, NoLock); } @@ -696,6 +739,7 @@ PgxcNodeRemove(DropNodeStmt *stmt) HeapTuple tup; const char *node_name = stmt->node_name; Oid noid = get_pgxc_nodeoid(node_name); + bool is_primary; /* Only a DB administrator can remove cluster nodes */ if (!superuser()) @@ -728,6 +772,7 @@ PgxcNodeRemove(DropNodeStmt *stmt) /* Delete the pgxc_node tuple */ relation = heap_open(PgxcNodeRelationId, RowExclusiveLock); tup = SearchSysCache1(PGXCNODEOID, ObjectIdGetDatum(noid)); + is_primary = is_pgxc_nodeprimary(noid); if (!HeapTupleIsValid(tup)) /* should not happen */ ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), @@ -738,5 +783,7 @@ PgxcNodeRemove(DropNodeStmt *stmt) ReleaseSysCache(tup); + if (is_primary) + primary_data_node = InvalidOid; heap_close(relation, RowExclusiveLock); } diff --git a/src/backend/pgxc/plan/Makefile b/src/backend/pgxc/plan/Makefile index c0e65741f1..6135dedf7e 100644 --- a/src/backend/pgxc/plan/Makefile +++ b/src/backend/pgxc/plan/Makefile @@ -3,8 +3,7 @@ # Makefile-- # Makefile for rewrite # -# -# Portions Copyright(C) 2010 Nippon Telegraph and Telephone Corporation +# Portions Copyright (c) 2010-2013, Postgres-XC Development Group # # IDENTIFICATION # $PostgreSQL$ diff --git a/src/backend/pgxc/plan/planner.c b/src/backend/pgxc/plan/planner.c index d3f57944c2..391a7adaaa 100644 --- a/src/backend/pgxc/plan/planner.c +++ b/src/backend/pgxc/plan/planner.c @@ -5,7 +5,7 @@ * Functions for generating a PGXC style plan. * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -110,8 +110,9 @@ make_ctid_col_ref(Query *qry) int32 type_mod; Oid varcollid; - /* If the query has more than 1 table RTEs where both are different, we can not add ctid to the query target list - * We should in this case skip adding it to the target list and a WHERE CURRENT OF should then + /* + * If the query has more than 1 table RTEs where both are different, we can not add ctid to the query target list + * We should in this case skip adding it to the target list and a WHERE CURRENT OF should then * fail saying the query is not a simply update able scan of table */ @@ -125,13 +126,14 @@ make_ctid_col_ref(Query *qry) tableRTEs++; if (tableRTEs > 1) { - /* See if we get two RTEs in case we have two references - * to the same table with different aliases - */ + /* + * See if we get two RTEs in case we have two references + * to the same table with different aliases + */ foreach(lc2, qry->rtable) { rte2 = (RangeTblEntry *) lfirst(lc2); - + if (rte2->rtekind == RTE_RELATION) { if (rte2->relid != rte1->relid) @@ -281,7 +283,7 @@ get_fn_oid(char *fn_name, Oid *p_rettype) fn_nm = makeString(fn_name); fn_name_list = list_make1(fn_nm); - + fdc = func_get_detail(fn_name_list, NULL, /* argument expressions */ NULL, /* argument names */ @@ -403,12 +405,12 @@ fetch_ctid_of(Plan *subtree, Query *query) * Build up a QueryPlan to execute on. * * This functions tries to find out whether - * 1. The statement can be shipped to the datanode and coordinator is needed + * 1. The statement can be shipped to the Datanode and Coordinator is needed * only as a proxy - in which case, it creates a single node plan. - * 2. The statement can be evaluated on the coordinator completely - thus no + * 2. The statement can be evaluated on the Coordinator completely - thus no * query shipping is involved and standard_planner() is invoked to plan the * statement - * 3. The statement needs coordinator as well as datanode for evaluation - + * 3. The statement needs Coordinator as well as Datanode for evaluation - * again we use standard_planner() to plan the statement. * * The plan generated in either of the above cases is returned. @@ -430,7 +432,7 @@ pgxc_planner(Query *query, int cursorOptions, ParamListInfo boundParams) if (result) return result; - /* we need coordinator for evaluation, invoke standard planner */ + /* we need Coordinator for evaluation, invoke standard planner */ result = standard_planner(query, cursorOptions, boundParams); return result; } @@ -444,13 +446,13 @@ pgxc_handle_exec_direct(Query *query, int cursorOptions, PlannerInfo *root; /* * if the query has its utility set, it could be an EXEC_DIRECT statement, - * check if it needs to be executed on coordinator + * check if it needs to be executed on Coordinator */ if (query->utilityStmt && IsA(query->utilityStmt, RemoteQuery)) { RemoteQuery *node = (RemoteQuery *)query->utilityStmt; - /* EXECUTE DIRECT statements on remote nodes don't need coordinator */ + /* EXECUTE DIRECT statements on remote nodes don't need Coordinator */ if (node->exec_direct_type != EXEC_DIRECT_NONE && node->exec_direct_type != EXEC_DIRECT_LOCAL && node->exec_direct_type != EXEC_DIRECT_LOCAL_UTILITY) @@ -514,23 +516,23 @@ pgxc_handle_unsupported_stmts(Query *query) /* * pgxc_FQS_planner * The routine tries to see if the statement can be completely evaluated on the - * datanodes. In such cases coordinator is not needed to evaluate the statement, + * Datanodes. In such cases Coordinator is not needed to evaluate the statement, * and just acts as a proxy. A statement can be completely shipped to the remote - * node if every row of the result can be evaluated on a single datanode. + * node if every row of the result can be evaluated on a single Datanode. * For example: * * 1. SELECT * FROM tab1; where tab1 is a distributed table - Every row of the - * result set can be evaluated at a single datanode. Hence this statement is - * completely shippable even though many datanodes are involved in evaluating - * complete result set. In such case coordinator will be able to gather rows - * arisign from individual datanodes and proxy the result to the client. + * result set can be evaluated at a single Datanode. Hence this statement is + * completely shippable even though many Datanodes are involved in evaluating + * complete result set. In such case Coordinator will be able to gather rows + * arisign from individual Datanodes and proxy the result to the client. * * 2. SELECT count(*) FROM tab1; where tab1 is a distributed table - there is - * only one row in the result but it needs input from all the datanodes. Hence + * only one row in the result but it needs input from all the Datanodes. Hence * this is not completely shippable. * * 3. SELECT count(*) FROM tab1; where tab1 is replicated table - since result - * can be obtained from a single datanode, this is a completely shippable + * can be obtained from a single Datanode, this is a completely shippable * statement. * * fqs in the name of function is acronym for fast query shipping. @@ -553,7 +555,7 @@ pgxc_FQS_planner(Query *query, int cursorOptions, ParamListInfo boundParams) IsA(query->utilityStmt, DeclareCursorStmt)) cursorOptions |= ((DeclareCursorStmt *) query->utilityStmt)->options; /* - * If the query can not be or need not be shipped to the datanodes, don't + * If the query can not be or need not be shipped to the Datanodes, don't * create any plan here. standard_planner() will take care of it. */ exec_nodes = pgxc_is_query_shippable(query, 0); @@ -570,7 +572,7 @@ pgxc_FQS_planner(Query *query, int cursorOptions, ParamListInfo boundParams) root->planner_cxt = CurrentMemoryContext; /* - * We decided to ship the query to the datanode/s, create a RemoteQuery node + * We decided to ship the query to the Datanode/s, create a RemoteQuery node * for the same. */ top_plan = (Plan *)pgxc_FQS_create_remote_plan(query, exec_nodes, false); @@ -654,14 +656,16 @@ pgxc_FQS_create_remote_plan(Query *query, ExecNodes *exec_nodes, bool is_exec_di } /* * PGXCTODO: we may route this same Query structure through - * standard_planner, where we don't want datanodes to finalise the results. + * standard_planner, where we don't want Datanodes to finalise the results. * Turn it off. At some point, we will avoid routing the same query * structure through the standard_planner by modifying it only when it's not * be routed through standard_planner. */ query->qry_finalise_aggs = false; /* Optimize multi-node handling */ - query_step->read_only = query->commandType == CMD_SELECT; + query_step->read_only = (query->commandType == CMD_SELECT && !query->hasForUpdate); + query_step->has_row_marks = query->hasForUpdate; + /* Check if temporary tables are in use in query */ /* PGXC_FQS_TODO: scanning the rtable again for the queries should not be * needed. We should be able to find out if the query has a temporary object @@ -673,7 +677,7 @@ pgxc_FQS_create_remote_plan(Query *query, ExecNodes *exec_nodes, bool is_exec_di /* * We need to evaluate some expressions like the ExecNodes->en_expr at - * coordinator, prepare those for evaluation. Ideally we should call + * Coordinator, prepare those for evaluation. Ideally we should call * preprocess_expression, but it needs PlannerInfo structure for the same */ fix_opfuncids((Node *)(query_step->exec_nodes->en_expr)); @@ -720,22 +724,22 @@ pgxc_FQS_create_remote_plan(Query *query, ExecNodes *exec_nodes, bool is_exec_di /* * pgxc_query_needs_coord - * Check if the query needs coordinator for evaluation or it can be completely - * evaluated on coordinator. Return true if so, otherwise return false. + * Check if the query needs Coordinator for evaluation or it can be completely + * evaluated on Coordinator. Return true if so, otherwise return false. */ static bool pgxc_query_needs_coord(Query *query) { /* - * If the query is an EXEC DIRECT on the same coordinator where it's fired, + * If the query is an EXEC DIRECT on the same Coordinator where it's fired, * it should not be shipped */ if (query->is_local) return true; /* * If the query involves just the catalog tables, and is not an EXEC DIRECT - * statement, it can be evaluated completely on the coordinator. No need to - * involve datanodes. + * statement, it can be evaluated completely on the Coordinator. No need to + * involve Datanodes. */ if (contains_only_pg_catalog(query->rtable)) return true; @@ -760,7 +764,7 @@ pgxc_query_needs_coord(Query *query) /* * Set the given reason in FQS_context indicating why the query can not be - * shipped directly to the datanodes. + * shipped directly to the Datanodes. */ static void pgxc_FQS_set_reason(FQS_context *context, FQS_shippability reason) @@ -770,7 +774,7 @@ pgxc_FQS_set_reason(FQS_context *context, FQS_shippability reason) /* * See if a given reason is why the query can not be shipped directly - * to the datanodes. + * to the Datanodes. */ static bool pgxc_FQS_test_reason(FQS_context *context, FQS_shippability reason) @@ -784,7 +788,7 @@ pgxc_FQS_test_reason(FQS_context *context, FQS_shippability reason) * information like Constraints under which the query can be shippable, nodes * on which the query is going to be executed etc. * Based on the information gathered, it decides whether the query can be - * executed on datanodes directly without involving coordinator. + * executed on Datanodes directly without involving Coordinator. * If the query is shippable this routine also returns the nodes where the query * should be shipped. If the query is not shippable, it returns NULL. */ @@ -802,7 +806,7 @@ pgxc_is_query_shippable(Query *query, int query_level) fqs_context.fqsc_query_level = query_level; /* - * We might have already decided not to ship the query to the datanodes, but + * We might have already decided not to ship the query to the Datanodes, but * still walk it anyway to find out if there are any subqueries which can be * shipped. */ @@ -825,11 +829,11 @@ pgxc_is_query_shippable(Query *query, int query_level) /* * Look at the information gathered by the walker in FQS_context and that * in the Query structure to decide whether we should ship this query - * directly to the datanode or not + * directly to the Datanode or not */ /* - * If the planner was not able to find the datanodes to the execute the + * If the planner was not able to find the Datanodes to the execute the * query, the query is not completely shippable. So, return NULL */ if (!exec_nodes) @@ -1006,10 +1010,11 @@ pgxc_merge_exec_nodes(ExecNodes *en1, ExecNodes *en2, bool merge_dist_equijoin, merged_en->nodeList = list_copy(en1->nodeList); merged_en->baselocatortype = en1->baselocatortype; } - else if (list_length(en1->nodeList) == 1 && list_length(en2->nodeList) == 1) + else if (list_length(en1->nodeList) == 1 + && list_length(en2->nodeList) == 1 + && (merged_en->nodeList = list_intersection_int(en1->nodeList, + en2->nodeList))) { - merged_en->nodeList = list_intersection_int(en1->nodeList, - en2->nodeList); merged_en->baselocatortype = LOCATOR_TYPE_DISTRIBUTED; } else @@ -1037,10 +1042,10 @@ pgxc_FQS_find_datanodes(FQS_context *fqs_context) /* * For every range table entry, - * 1. Find out the datanodes needed for that range table - * 2. Merge these datanodes with the already available datanodes + * 1. Find out the Datanodes needed for that range table + * 2. Merge these Datanodes with the already available Datanodes * 3. If the merge is unsuccessful, we can not ship this query directly to - * the datanode/s + * the Datanode/s */ foreach(rt, query->rtable) { @@ -1058,10 +1063,10 @@ pgxc_FQS_find_datanodes(FQS_context *fqs_context) bool merge_dist_equijoin = false; /* * In case of inheritance, child tables can have completely different - * datanode distribution than parent. To handle inheritance we need - * to merge the datanodes of the children table as well. The inheritance + * Datanode distribution than parent. To handle inheritance we need + * to merge the Datanodes of the children table as well. The inheritance * is resolved during planning(?), so we may not have the RTEs of the - * children here. Also, the exact method of merging datanodes of the + * children here. Also, the exact method of merging Datanodes of the * children is not known yet. So, when inheritance is requested, query * can not be shipped. */ @@ -1148,7 +1153,12 @@ pgxc_FQS_find_datanodes(FQS_context *fqs_context) break; case RTE_JOIN: - /* Is information here useful in some or other way? */ + /* + * FQS can not handle the JOINs of type other than Inner join + * correctly, hence those joins are not FQSable. + */ + if (rte->jointype != JOIN_INNER) + canShip = false; break; case RTE_CTE: case RTE_SUBQUERY: @@ -1163,7 +1173,7 @@ pgxc_FQS_find_datanodes(FQS_context *fqs_context) } /* - * If we didn't find the datanodes to ship the query to, we shouldn't ship + * If we didn't find the Datanodes to ship the query to, we shouldn't ship * the query :) */ if (!exec_nodes || !(exec_nodes->nodeList || exec_nodes->en_expr)) @@ -1254,7 +1264,7 @@ pgxc_qual_hash_dist_equijoin(Relids varnos_1, Relids varnos_2, Oid distcol_type, * If the data types of both the columns are not same, continue. Hash * and Modulo of a the same bytes will be same if the data types are * same. So, only when the data types of the columns are same, we can - * ship a distributed JOIN to the datanodes + * ship a distributed JOIN to the Datanodes */ if (exprType((Node *)lvar) != exprType((Node *)rvar)) continue; @@ -1399,7 +1409,7 @@ static bool VarAttrIsPartAttr(Var *var, List *rtable) } /* * pgxc_FQS_get_relation_nodes - * For FQS return ExecNodes structure so as to decide which datanodes the query + * For FQS return ExecNodes structure so as to decide which Datanodes the query * should execute on. If it is possible to set the node list directly, set it. * Otherwise set the appropriate distribution column expression or relid in * ExecNodes structure. @@ -1449,7 +1459,7 @@ pgxc_FQS_get_relation_nodes(RangeTblEntry *rte, Index varno, Query *query) return NULL; /* - * If the table distributed by value, check if we can reduce the datanodes + * If the table distributed by value, check if we can reduce the Datanodes * by looking at the qualifiers for this relation. * PGXC_FQS_TODO: for now, we apply node reduction only when there is only * one relation involved in the query. If there are multiple distributed @@ -1464,7 +1474,7 @@ pgxc_FQS_get_relation_nodes(RangeTblEntry *rte, Index varno, Query *query) distcol_expr = pgxc_find_distcol_expr(varno, rel_loc_info->partAttrNum, query->jointree->quals); /* - * If the type of expression used to find the datanode, is not same as + * If the type of expression used to find the Datanode, is not same as * the distribution column type, try casting it. This is same as what * will happen in case of inserting that type of expression value as the * distribution column value. @@ -1511,7 +1521,7 @@ pgxc_FQS_get_relation_nodes(RangeTblEntry *rte, Index varno, Query *query) /* * If we are reading a replicated table, pick all the nodes where it * resides. If the query has JOIN, it helps picking up a matching set of - * datanodes for that JOIN. FQS planner will ultimately pick up one node if + * Datanodes for that JOIN. FQS planner will ultimately pick up one node if * the JOIN is replicated. */ if (rel_access == RELATION_ACCESS_READ && @@ -1561,12 +1571,12 @@ pgxc_FQS_get_relation_nodes(RangeTblEntry *rte, Index varno, Query *query) * pgxc_FQS_walker * walks the query/expression tree routed at the node passed in, gathering * information which will help decide whether the query to which this node - * belongs is shippable to the datanodes. + * belongs is shippable to the Datanodes. * * The function should try to walk the entire tree analysing each subquery for * shippability. If a subquery is shippable but not the whole query, we would be * able to create a RemoteQuery node for that subquery, shipping it to the - * datanode. + * Datanode. * * Return value of this function is governed by the same rules as * expression_tree_walker(), see prologue of that function for details. @@ -1654,9 +1664,9 @@ pgxc_FQS_walker(Node *node, FQS_context *fqs_context) case T_SetToDefault: /* * PGXCTODO: we should actually check whether the default value to - * be substituted is shippable to the datanode. Some cases like - * nextval() of a sequence can not be shipped to the datanode, hence - * for now default values can not be shipped to the datanodes + * be substituted is shippable to the Datanode. Some cases like + * nextval() of a sequence can not be shipped to the Datanode, hence + * for now default values can not be shipped to the Datanodes */ pgxc_FQS_set_reason(fqs_context, FQS_UNSUPPORTED_EXPR); break; @@ -1700,8 +1710,8 @@ pgxc_FQS_walker(Node *node, FQS_context *fqs_context) case T_Aggref: { /* - * An aggregate is completely shippable to the datanode, if the - * whole group resides on that datanode. This will be clear when + * An aggregate is completely shippable to the Datanode, if the + * whole group resides on that Datanode. This will be clear when * we see the GROUP BY clause. * Query::hasAggs will tell that the query has aggregates. * agglevelsup is minimum of variable's varlevelsup, so we will @@ -1717,8 +1727,8 @@ pgxc_FQS_walker(Node *node, FQS_context *fqs_context) FuncExpr *funcexpr = (FuncExpr *)node; /* * PGXC_FQS_TODO: it's too restrictive not to ship non-immutable - * functions to the datanode. We need a better way to see what - * can be shipped to the datanode and what can not be. + * functions to the Datanode. We need a better way to see what + * can be shipped to the Datanode and what can not be. */ if (!is_immutable_func(funcexpr->funcid)) pgxc_FQS_set_reason(fqs_context, FQS_UNSHIPPABLE_EXPR); @@ -1745,7 +1755,7 @@ pgxc_FQS_walker(Node *node, FQS_context *fqs_context) case T_ScalarArrayOpExpr: { /* - * Check if the operator function is shippable to the datanode + * Check if the operator function is shippable to the Datanode * PGXC_FQS_TODO: see immutability note for FuncExpr above */ ScalarArrayOpExpr *sao_expr = (ScalarArrayOpExpr *)node; @@ -1776,15 +1786,15 @@ pgxc_FQS_walker(Node *node, FQS_context *fqs_context) if (query->hasRecursive || query->intoClause) pgxc_FQS_set_reason(fqs_context, FQS_UNSUPPORTED_EXPR); /* - * If the query needs coordinator for evaluation or the query can be - * completed on coordinator itself, we don't ship it to the datanode + * If the query needs Coordinator for evaluation or the query can be + * completed on Coordinator itself, we don't ship it to the Datanode */ if (pgxc_query_needs_coord(query)) pgxc_FQS_set_reason(fqs_context, FQS_NEEDS_COORD); /* PGXC_FQS_TODO: It should be possible to look at the Query and find out - * whether it can be completely evaluated on the datanode just like SELECT - * queries. But we need to be careful while finding out the datanodes to + * whether it can be completely evaluated on the Datanode just like SELECT + * queries. But we need to be careful while finding out the Datanodes to * execute the query on, esp. for the result relations. If one happens to * remove/change this restriction, make sure you change * pgxc_FQS_get_relation_nodes appropriately. @@ -1795,7 +1805,7 @@ pgxc_FQS_walker(Node *node, FQS_context *fqs_context) /* * In following conditions query is shippable when there is only one - * datanode involved + * Datanode involved * 1. the query has aggregagtes * 2. the query has window functions * 3. the query has ORDER BY clause @@ -1803,12 +1813,12 @@ pgxc_FQS_walker(Node *node, FQS_context *fqs_context) * 5. the query has limit and offset clause * * PGXC_FQS_TODO: Condition 1 above is really dependent upon the GROUP BY clause. If - * all rows in each group reside on the same datanode, aggregates can be - * evaluated on that datanode, thus condition 1 is has aggregates & the rows - * in any group reside on multiple datanodes. + * all rows in each group reside on the same Datanode, aggregates can be + * evaluated on that Datanode, thus condition 1 is has aggregates & the rows + * in any group reside on multiple Datanodes. * PGXC_FQS_TODO: Condition 2 above is really dependent upon whether the distinct * clause has distribution column in it. If the distinct clause has - * distribution column in it, we can ship DISTINCT clause to the datanodes. + * distribution column in it, we can ship DISTINCT clause to the Datanodes. */ if (query->hasAggs || query->hasWindowFuncs || query->sortClause || query->distinctClause || query->groupClause || query->havingQual || @@ -1830,7 +1840,7 @@ pgxc_FQS_walker(Node *node, FQS_context *fqs_context) /* * Walk the RangeTableEntries of the query and find the - * datanodes needed for evaluating this query + * Datanodes needed for evaluating this query */ pgxc_FQS_find_datanodes(fqs_context); } @@ -1856,8 +1866,8 @@ pgxc_FQS_walker(Node *node, FQS_context *fqs_context) { WindowFunc *winf = (WindowFunc *)node; /* - * A window function can be evaluated on a datanode if there is - * only one datanode involved. This can be checked outside the + * A window function can be evaluated on a Datanode if there is + * only one Datanode involved. This can be checked outside the * walker by looking at Query::hasWindowFuncs. */ if (!is_immutable_func(winf->winfnoid)) @@ -1868,8 +1878,8 @@ pgxc_FQS_walker(Node *node, FQS_context *fqs_context) /* Nodes which do not need to be examined but worth some explanation */ case T_WindowClause: /* - * A window function can be evaluated on a datanode if there is - * only one datanode involved. This can be checked outside the + * A window function can be evaluated on a Datanode if there is + * only one Datanode involved. This can be checked outside the * walker by looking at Query::hasWindowFuncs. */ /* FALL THROUGH */ @@ -2065,10 +2075,9 @@ validate_part_col_updatable(const Query *query) /* See if we have the partitioned case. */ rel_loc_info = GetRelationLocInfo(rte->relid); + /* Any column updation on local relations is fine */ if (!rel_loc_info) - ereport(ERROR, - (errcode(ERRCODE_STATEMENT_TOO_COMPLEX), - (errmsg("Could not find relation for oid = %d", rte->relid)))); + return; /* Only LOCATOR_TYPE_HASH & LOCATOR_TYPE_MODULO should be checked */ diff --git a/src/backend/pgxc/pool/Makefile b/src/backend/pgxc/pool/Makefile index f0701c52ca..0dff2e2690 100644 --- a/src/backend/pgxc/pool/Makefile +++ b/src/backend/pgxc/pool/Makefile @@ -3,7 +3,7 @@ # Makefile-- # Makefile for pool # -# Portions Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation +# Portions Copyright (c) 2010-2013, Postgres-XC Development Group # # IDENTIFICATION # $PostgreSQL$ diff --git a/src/backend/pgxc/pool/execRemote.c b/src/backend/pgxc/pool/execRemote.c index 36b6b37204..5b7c8e765f 100644 --- a/src/backend/pgxc/pool/execRemote.c +++ b/src/backend/pgxc/pool/execRemote.c @@ -2,15 +2,15 @@ * * execRemote.c * - * Functions to execute commands on remote data nodes + * Functions to execute commands on remote Datanodes * * - * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * - * IDENTIFICATION - * $$ * + * IDENTIFICATION + * src/backend/pgxc/pool/execRemote.c * *------------------------------------------------------------------------- */ @@ -51,8 +51,13 @@ /* Enforce the use of two-phase commit when temporary objects are used */ bool EnforceTwoPhaseCommit = true; +/* + * Max to begin flushing data to datanodes, max to stop flushing data to datanodes. + */ +#define MAX_SIZE_TO_FORCE_FLUSH (2^10 * 64 * 2) +#define MAX_SIZE_TO_STOP_FLUSH (2^10 * 64) + #define END_QUERY_TIMEOUT 20 -#define DATA_NODE_FETCH_SIZE 1 #define ROLLBACK_RESP_LEN 9 typedef enum RemoteXactNodeStatus @@ -87,7 +92,7 @@ typedef struct RemoteXactState /* Current status of the remote 2PC */ RemoteXactStatus status; - /* + /* * Information about all the nodes involved in the transaction. We track * the number of writers and readers. The first numWriteRemoteNodes entries * in the remoteNodeHandles and remoteNodeStatus correspond to the writer @@ -115,7 +120,7 @@ static RemoteXactState remoteXactState; #define COPY_BUFFER_SIZE 8192 #define PRIMARY_NODE_WRITEAHEAD 1024 * 1024 -/* +/* * List of PGXCNodeHandle to track readers and writers involved in the * current transaction */ @@ -153,6 +158,7 @@ static char *pgxc_node_get_nodelist(bool localNode); static void ExecClearTempObjectIncluded(void); static void init_RemoteXactState(bool preparedLocalNode); static void clear_RemoteXactState(void); +static void pgxc_node_report_error(RemoteQueryState *combiner); #define MAX_STATEMENTS_PER_TRAN 10 @@ -176,6 +182,8 @@ stat_statement() current_tran_statements++; } +static int flushPGXCNodeHandleData(PGXCNodeHandle *handle); + /* * To collect statistics: count a transaction */ @@ -387,7 +395,7 @@ create_tuple_desc(char *msg_body, size_t len) } /* - * Handle CopyOutCommandComplete ('c') message from a data node connection + * Handle CopyOutCommandComplete ('c') message from a Datanode connection */ static void HandleCopyOutComplete(RemoteQueryState *combiner) @@ -398,13 +406,13 @@ HandleCopyOutComplete(RemoteQueryState *combiner) /* Inconsistent responses */ ereport(ERROR, (errcode(ERRCODE_DATA_CORRUPTED), - errmsg("Unexpected response from the data nodes for 'c' message, current request type %d", combiner->request_type))); - /* Just do nothing, close message is managed by the coordinator */ + errmsg("Unexpected response from the Datanodes for 'c' message, current request type %d", combiner->request_type))); + /* Just do nothing, close message is managed by the Coordinator */ combiner->copy_out_count++; } /* - * Handle CommandComplete ('C') message from a data node connection + * Handle CommandComplete ('C') message from a Datanode connection */ static void HandleCommandComplete(RemoteQueryState *combiner, char *msg_body, size_t len, PGXCNodeHandle *conn) @@ -433,7 +441,7 @@ HandleCommandComplete(RemoteQueryState *combiner, char *msg_body, size_t len, PG /* There is a consistency issue in the database with the replicated table */ ereport(ERROR, (errcode(ERRCODE_DATA_CORRUPTED), - errmsg("Write to replicated table returned different results from the data nodes"))); + errmsg("Write to replicated table returned different results from the Datanodes"))); } else /* first result */ @@ -462,7 +470,7 @@ HandleCommandComplete(RemoteQueryState *combiner, char *msg_body, size_t len, PG } /* - * Handle RowDescription ('T') message from a data node connection + * Handle RowDescription ('T') message from a Datanode connection */ static bool HandleRowDescription(RemoteQueryState *combiner, char *msg_body, size_t len) @@ -474,7 +482,7 @@ HandleRowDescription(RemoteQueryState *combiner, char *msg_body, size_t len) /* Inconsistent responses */ ereport(ERROR, (errcode(ERRCODE_DATA_CORRUPTED), - errmsg("Unexpected response from the data nodes for 'T' message, current request type %d", combiner->request_type))); + errmsg("Unexpected response from the Datanodes for 'T' message, current request type %d", combiner->request_type))); } /* Increment counter and check if it was first */ if (combiner->description_count++ == 0) @@ -488,7 +496,7 @@ HandleRowDescription(RemoteQueryState *combiner, char *msg_body, size_t len) #ifdef NOT_USED /* - * Handle ParameterStatus ('S') message from a data node connection (SET command) + * Handle ParameterStatus ('S') message from a Datanode connection (SET command) */ static void HandleParameterStatus(RemoteQueryState *combiner, char *msg_body, size_t len) @@ -500,7 +508,7 @@ HandleParameterStatus(RemoteQueryState *combiner, char *msg_body, size_t len) /* Inconsistent responses */ ereport(ERROR, (errcode(ERRCODE_DATA_CORRUPTED), - errmsg("Unexpected response from the data nodes for 'S' message, current request type %d", combiner->request_type))); + errmsg("Unexpected response from the Datanodes for 'S' message, current request type %d", combiner->request_type))); } /* Proxy last */ if (++combiner->description_count == combiner->node_count) @@ -511,7 +519,7 @@ HandleParameterStatus(RemoteQueryState *combiner, char *msg_body, size_t len) #endif /* - * Handle CopyInResponse ('G') message from a data node connection + * Handle CopyInResponse ('G') message from a Datanode connection */ static void HandleCopyIn(RemoteQueryState *combiner) @@ -523,17 +531,17 @@ HandleCopyIn(RemoteQueryState *combiner) /* Inconsistent responses */ ereport(ERROR, (errcode(ERRCODE_DATA_CORRUPTED), - errmsg("Unexpected response from the data nodes for 'G' message, current request type %d", combiner->request_type))); + errmsg("Unexpected response from the Datanodes for 'G' message, current request type %d", combiner->request_type))); } /* * The normal PG code will output an G message when it runs in the - * coordinator, so do not proxy message here, just count it. + * Coordinator, so do not proxy message here, just count it. */ combiner->copy_in_count++; } /* - * Handle CopyOutResponse ('H') message from a data node connection + * Handle CopyOutResponse ('H') message from a Datanode connection */ static void HandleCopyOut(RemoteQueryState *combiner) @@ -545,17 +553,17 @@ HandleCopyOut(RemoteQueryState *combiner) /* Inconsistent responses */ ereport(ERROR, (errcode(ERRCODE_DATA_CORRUPTED), - errmsg("Unexpected response from the data nodes for 'H' message, current request type %d", combiner->request_type))); + errmsg("Unexpected response from the Datanodes for 'H' message, current request type %d", combiner->request_type))); } /* * The normal PG code will output an H message when it runs in the - * coordinator, so do not proxy message here, just count it. + * Coordinator, so do not proxy message here, just count it. */ combiner->copy_out_count++; } /* - * Handle CopyOutDataRow ('d') message from a data node connection + * Handle CopyOutDataRow ('d') message from a Datanode connection */ static void HandleCopyDataRow(RemoteQueryState *combiner, char *msg_body, size_t len) @@ -567,7 +575,7 @@ HandleCopyDataRow(RemoteQueryState *combiner, char *msg_body, size_t len) if (combiner->request_type != REQUEST_TYPE_COPY_OUT) ereport(ERROR, (errcode(ERRCODE_DATA_CORRUPTED), - errmsg("Unexpected response from the data nodes for 'd' message, current request type %d", combiner->request_type))); + errmsg("Unexpected response from the Datanodes for 'd' message, current request type %d", combiner->request_type))); /* count the row */ combiner->processed++; @@ -581,7 +589,7 @@ HandleCopyDataRow(RemoteQueryState *combiner, char *msg_body, size_t len) } /* - * Handle DataRow ('D') message from a data node connection + * Handle DataRow ('D') message from a Datanode connection * The function returns true if buffer can accept more data rows. * Caller must stop reading if function returns false */ @@ -602,7 +610,7 @@ HandleDataRow(RemoteQueryState *combiner, char *msg_body, size_t len, int nid) /* Inconsistent responses */ ereport(ERROR, (errcode(ERRCODE_DATA_CORRUPTED), - errmsg("Unexpected response from the data nodes for 'D' message, current request type %d", combiner->request_type))); + errmsg("Unexpected response from the Datanodes for 'D' message, current request type %d", combiner->request_type))); } /* @@ -623,7 +631,7 @@ HandleDataRow(RemoteQueryState *combiner, char *msg_body, size_t len, int nid) } /* - * Handle ErrorResponse ('E') message from a data node connection + * Handle ErrorResponse ('E') message from a Datanode connection */ static void HandleError(RemoteQueryState *combiner, char *msg_body, size_t len) @@ -693,7 +701,7 @@ HandleError(RemoteQueryState *combiner, char *msg_body, size_t len) } /* - * If data node have sent ErrorResponse it will never send CommandComplete. + * If Datanode have sent ErrorResponse it will never send CommandComplete. * Increment the counter to prevent endless waiting for it. */ combiner->command_complete_count++; @@ -703,24 +711,24 @@ HandleError(RemoteQueryState *combiner, char *msg_body, size_t len) * HandleCmdComplete - * combine deparsed sql statements execution results * - * Input parameters: + * Input parameters: * commandType is dml command type * combineTag is used to combine the completion result * msg_body is execution result needed to combine * len is msg_body size */ void -HandleCmdComplete(CmdType commandType, CombineTag *combine, +HandleCmdComplete(CmdType commandType, CombineTag *combine, const char *msg_body, size_t len) { int digits = 0; uint64 originrowcount = 0; uint64 rowcount = 0; uint64 total = 0; - + if (msg_body == NULL) return; - + /* if there's nothing in combine, just copy the msg_body */ if (strlen(combine->data) == 0) { @@ -733,7 +741,7 @@ HandleCmdComplete(CmdType commandType, CombineTag *combine, /* commandType is conflict */ if (combine->cmdType != commandType) return; - + /* get the processed row number from msg_body */ digits = parse_row_count(msg_body, len + 1, &rowcount); elog(DEBUG1, "digits is %d\n", digits); @@ -772,7 +780,7 @@ HandleCmdComplete(CmdType commandType, CombineTag *combine, strcpy(combine->data, ""); break; } - + } /* @@ -854,12 +862,12 @@ ValidateAndCloseCombiner(RemoteQueryState *combiner) } /* - * It is possible if multiple steps share the same data node connection, when + * It is possible if multiple steps share the same Datanode connection, when * executor is running multi-step query or client is running multiple queries * using Extended Query Protocol. After returning next tuple ExecRemoteQuery * function passes execution control to the executor and then it can be given * to the same RemoteQuery or to different one. It is possible that before - * returning a tuple the function do not read all data node responses. In this + * returning a tuple the function do not read all Datanode responses. In this * case pending responses should be read in context of original RemoteQueryState * till ReadyForQuery message and data rows should be stored (buffered) to be * available when fetch from that RemoteQueryState is requested again. @@ -896,7 +904,7 @@ BufferConnection(PGXCNodeHandle *conn) Assert(combiner->current_conn < combiner->conn_count); /* - * Buffer data rows until data node return number of rows specified by the + * Buffer data rows until Datanode return number of rows specified by the * fetch_size parameter of last Execute message (PortalSuspended message) * or end of result set is reached (CommandComplete message) */ @@ -904,7 +912,7 @@ BufferConnection(PGXCNodeHandle *conn) { int res; - /* Move to buffer currentRow (received from the data node) */ + /* Move to buffer currentRow (received from the Datanode) */ if (combiner->currentRow.msg) { RemoteDataRow dataRow = (RemoteDataRow) palloc(sizeof(RemoteDataRowData)); @@ -930,7 +938,7 @@ BufferConnection(PGXCNodeHandle *conn) if (pgxc_node_receive(1, &conn, NULL)) { conn->state = DN_CONNECTION_STATE_ERROR_FATAL; - add_error_message(conn, "Failed to fetch from data node"); + add_error_message(conn, "Failed to fetch from Datanode"); } } else if (res == RESPONSE_COMPLETE) @@ -1045,7 +1053,7 @@ FetchTuple(RemoteQueryState *combiner, TupleTableSlot *slot) BufferConnection(conn); /* - * If current connection is idle it means portal on the data node is + * If current connection is idle it means portal on the Datanode is * suspended. If we have a tuple do not hurry to request more rows, * leave connection clean for other RemoteQueries. * If we do not have, request more and try to get it @@ -1063,15 +1071,15 @@ FetchTuple(RemoteQueryState *combiner, TupleTableSlot *slot) if (pgxc_node_send_execute(conn, combiner->cursor, 1) != 0) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Failed to fetch from data node"))); + errmsg("Failed to fetch from Datanode"))); if (pgxc_node_send_sync(conn) != 0) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Failed to fetch from data node"))); + errmsg("Failed to fetch from Datanode"))); if (pgxc_node_receive(1, &conn, NULL)) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Failed to fetch from data node"))); + errmsg("Failed to fetch from Datanode"))); conn->combiner = combiner; } } @@ -1084,7 +1092,7 @@ FetchTuple(RemoteQueryState *combiner, TupleTableSlot *slot) if (pgxc_node_receive(1, &conn, NULL)) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Failed to fetch from data node"))); + errmsg("Failed to fetch from Datanode"))); continue; } else if (res == RESPONSE_SUSPENDED) @@ -1136,7 +1144,7 @@ FetchTuple(RemoteQueryState *combiner, TupleTableSlot *slot) /* - * Handle responses from the Data node connections + * Handle responses from the Datanode connections */ static int pgxc_node_receive_responses(const int conn_count, PGXCNodeHandle ** connections, @@ -1150,7 +1158,7 @@ pgxc_node_receive_responses(const int conn_count, PGXCNodeHandle ** connections, /* * Read results. - * Note we try and read from data node connections even if there is an error on one, + * Note we try and read from Datanode connections even if there is an error on one, * so as to avoid reading incorrect results on the next statement. * Other safegaurds exist to avoid this, however. */ @@ -1178,8 +1186,8 @@ pgxc_node_receive_responses(const int conn_count, PGXCNodeHandle ** connections, break; default: /* Inconsistent responses */ - add_error_message(to_receive[i], "Unexpected response from the data nodes"); - elog(ERROR, "Unexpected response from the data nodes, result = %d, request type %d", result, combiner->request_type); + add_error_message(to_receive[i], "Unexpected response from the Datanodes"); + elog(ERROR, "Unexpected response from the Datanodes, result = %d, request type %d", result, combiner->request_type); /* Stop tracking and move last connection in place */ count--; if (i < count) @@ -1187,6 +1195,7 @@ pgxc_node_receive_responses(const int conn_count, PGXCNodeHandle ** connections, } } } + pgxc_node_report_error(combiner); return 0; } @@ -1304,7 +1313,7 @@ handle_response(PGXCNodeHandle * conn, RemoteQueryState *combiner) { /* * Return result depends on previous connection state. - * If it was PORTAL_SUSPENDED coordinator want to send down + * If it was PORTAL_SUSPENDED Coordinator want to send down * another EXECUTE to fetch more rows, otherwise it is done * with the connection */ @@ -1341,7 +1350,7 @@ handle_response(PGXCNodeHandle * conn, RemoteQueryState *combiner) /* - * Has the data node sent Ready For Query + * Has the Datanode sent Ready For Query */ bool @@ -1379,7 +1388,7 @@ is_data_node_ready(PGXCNodeHandle * conn) case 'Z': /* ReadyForQuery */ /* * Return result depends on previous connection state. - * If it was PORTAL_SUSPENDED coordinator want to send down + * If it was PORTAL_SUSPENDED Coordinator want to send down * another EXECUTE to fetch more rows, otherwise it is done * with the connection */ @@ -1393,7 +1402,7 @@ is_data_node_ready(PGXCNodeHandle * conn) return false; } -/* +/* * Construct a BEGIN TRANSACTION command after taking into account the * current options. The returned string is not palloced and is valid only until * the next call to the function. @@ -1405,20 +1414,20 @@ generate_begin_command(void) const char *read_only; const char *isolation_level; - /* + /* * First get the READ ONLY status because the next call to GetConfigOption * will overwrite the return buffer */ - if (strcmp(GetConfigOption("transaction_read_only", false), "on") == 0) + if (strcmp(GetConfigOption("transaction_read_only", false, false), "on") == 0) read_only = "READ ONLY"; else read_only = "READ WRITE"; /* Now get the isolation_level for the transaction */ - isolation_level = GetConfigOption("transaction_isolation", false); + isolation_level = GetConfigOption("transaction_isolation", false, false); if (strcmp(isolation_level, "default") == 0) - isolation_level = GetConfigOption("default_transaction_isolation", false); - + isolation_level = GetConfigOption("default_transaction_isolation", false, false); + /* Finally build a START TRANSACTION command */ sprintf(begin_cmd, "START TRANSACTION ISOLATION LEVEL %s %s", isolation_level, read_only); @@ -1496,12 +1505,12 @@ pgxc_node_begin(int conn_count, PGXCNodeHandle **connections, * caller should tell us if the node may do any write activitiy * * XXX This is a bit tricky since it would be difficult to know if - * statement has any side effect on the data node. So a SELECT - * statement may invoke a function on the data node which may end up - * modifying the data at the data node. We can possibly rely on the + * statement has any side effect on the Datanode. So a SELECT + * statement may invoke a function on the Datanode which may end up + * modifying the data at the Datanode. We can possibly rely on the * function qualification to decide if a statement is a read-only or a * read-write statement. - */ + */ RegisterTransactionNodes(1, (void **)&connections[i], !readOnly); new_connections[new_count++] = connections[i]; } @@ -1524,8 +1533,8 @@ pgxc_node_begin(int conn_count, PGXCNodeHandle **connections, if (!ValidateAndCloseCombiner(combiner)) return EOF; - /* - * Ask pooler to send commands (if any) to nodes involved in transaction to alter the + /* + * Ask pooler to send commands (if any) to nodes involved in transaction to alter the * behavior of current transaction. This fires all transaction level commands before * issuing any DDL, DML or SELECT within the current transaction block. */ @@ -1578,7 +1587,7 @@ pgxc_node_remote_prepare(char *prepareGID) for (i = 0; i < write_conn_count; i++) { - /* + /* * PGXCTODO - We should actually make sure that the connection state is * IDLE when we reach here. The executor should have guaranteed that * before the transaction gets to the commit point. For now, consume @@ -1672,22 +1681,12 @@ pgxc_node_remote_prepare(char *prepareGID) if (result) { remoteXactState.status = RXACT_PREPARE_FAILED; - if (combiner && combiner->errorMessage) - { - char *code = combiner->errorCode; - if (combiner->errorDetail != NULL) - ereport(ERROR, - (errcode(MAKE_SQLSTATE(code[0], code[1], code[2], code[3], code[4])), - errmsg("%s", combiner->errorMessage), errdetail("%s", combiner->errorDetail) )); - else - ereport(ERROR, - (errcode(MAKE_SQLSTATE(code[0], code[1], code[2], code[3], code[4])), - errmsg("%s", combiner->errorMessage))); - } + if (combiner) + pgxc_node_report_error(combiner); else elog(ERROR, "failed to PREPARE transaction on one or more nodes"); } - + if (remoteXactState.status == RXACT_PREPARE_FAILED) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), @@ -1732,7 +1731,7 @@ pgxc_node_remote_commit(void) int i; RemoteQueryState *combiner = NULL; - /* + /* * We must handle reader and writer connections both since the transaction * must be closed even on a read-only node */ @@ -1773,7 +1772,7 @@ pgxc_node_remote_commit(void) remoteXactState.commitXid = GetAuxilliaryTransactionId(); } - /* + /* * First send GXID if necessary. If there is an error at this stage, the * transaction can be aborted safely because we haven't yet sent COMMIT * command to any participant @@ -1858,7 +1857,7 @@ pgxc_node_remote_commit(void) CloseCombiner(combiner); combiner = NULL; } - /* + /* * Even if the command failed on some node, don't throw an error just * yet. That gives a chance to look for individual connection status * and record appropriate information for later recovery @@ -1904,18 +1903,8 @@ pgxc_node_remote_commit(void) if (result) { - if (combiner && combiner->errorMessage) - { - char *code = combiner->errorCode; - if (combiner->errorDetail != NULL) - ereport(ERROR, - (errcode(MAKE_SQLSTATE(code[0], code[1], code[2], code[3], code[4])), - errmsg("%s", combiner->errorMessage), errdetail("%s", combiner->errorDetail) )); - else - ereport(ERROR, - (errcode(MAKE_SQLSTATE(code[0], code[1], code[2], code[3], code[4])), - errmsg("%s", combiner->errorMessage))); - } + if (combiner) + pgxc_node_report_error(combiner); else ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), @@ -1934,8 +1923,8 @@ pgxc_node_remote_commit(void) /* * Abort the current transaction on the local and remote nodes. If the * transaction is prepared on the remote node, we send a ROLLBACK PREPARED - * command, otherwise a ROLLBACK command is sent. - * + * command, otherwise a ROLLBACK command is sent. + * * Note that if the local node was involved and prepared successfully, we are * running in a separate transaction context right now */ @@ -2045,13 +2034,8 @@ pgxc_node_remote_abort(void) if (result) { - if (combiner && combiner->errorMessage) - { - if (combiner->errorDetail != NULL) - elog(LOG, "%s %s", combiner->errorMessage, combiner->errorDetail); - else - elog(LOG, "%s", combiner->errorMessage); - } + if (combiner) + pgxc_node_report_error(combiner); else elog(LOG, "Failed to ABORT an implicitly PREPARED " "transaction - result %d", result); @@ -2079,7 +2063,7 @@ pgxc_node_remote_abort(void) * The copy_connections array must have room for NumDataNodes items */ PGXCNodeHandle** -DataNodeCopyBegin(const char *query, List *nodelist, Snapshot snapshot, bool is_from) +DataNodeCopyBegin(const char *query, List *nodelist, Snapshot snapshot) { int i; int conn_count = list_length(nodelist) == 0 ? NumDataNodes : list_length(nodelist); @@ -2095,7 +2079,7 @@ DataNodeCopyBegin(const char *query, List *nodelist, Snapshot snapshot, bool is_ if (conn_count == 0) return NULL; - /* Get needed datanode connections */ + /* Get needed Datanode connections */ pgxc_handles = get_handles(nodelist, NULL, false); connections = pgxc_handles->datanode_handles; @@ -2124,7 +2108,7 @@ DataNodeCopyBegin(const char *query, List *nodelist, Snapshot snapshot, bool is_ /* Gather statistics */ stat_statement(); stat_transaction(conn_count); - + gxid = GetCurrentTransactionId(); if (!GlobalTransactionIdIsValid(gxid)) @@ -2211,11 +2195,11 @@ DataNodeCopyIn(char *data_row, int len, ExecNodes *exec_nodes, PGXCNodeHandle** /* flush buffer if it is almost full */ if (bytes_needed > COPY_BUFFER_SIZE) { - /* First look if data node has sent a error message */ + /* First look if Datanode has sent a error message */ int read_status = pgxc_node_read_data(primary_handle, true); if (read_status == EOF || read_status < 0) { - add_error_message(primary_handle, "failed to read data from data node"); + add_error_message(primary_handle, "failed to read data from Datanode"); return EOF; } @@ -2232,9 +2216,16 @@ DataNodeCopyIn(char *data_row, int len, ExecNodes *exec_nodes, PGXCNodeHandle** if (send_some(primary_handle, primary_handle->outEnd) < 0) { - add_error_message(primary_handle, "failed to send data to data node"); + add_error_message(primary_handle, "failed to send data to Datanode"); return EOF; } + else if (primary_handle->outEnd > MAX_SIZE_TO_FORCE_FLUSH) + { + int rv; + + if ((rv = flushPGXCNodeHandleData(primary_handle)) != 0) + return EOF; + } } if (ensure_out_buffer_capacity(bytes_needed, primary_handle) != 0) @@ -2253,7 +2244,7 @@ DataNodeCopyIn(char *data_row, int len, ExecNodes *exec_nodes, PGXCNodeHandle** } else { - add_error_message(primary_handle, "Invalid data node connection"); + add_error_message(primary_handle, "Invalid Datanode connection"); return EOF; } } @@ -2272,11 +2263,11 @@ DataNodeCopyIn(char *data_row, int len, ExecNodes *exec_nodes, PGXCNodeHandle** { int to_send = handle->outEnd; - /* First look if data node has sent a error message */ + /* First look if Datanode has sent a error message */ int read_status = pgxc_node_read_data(handle, true); if (read_status == EOF || read_status < 0) { - add_error_message(handle, "failed to read data from data node"); + add_error_message(handle, "failed to read data from Datanode"); return EOF; } @@ -2311,9 +2302,16 @@ DataNodeCopyIn(char *data_row, int len, ExecNodes *exec_nodes, PGXCNodeHandle** */ if (to_send && send_some(handle, to_send) < 0) { - add_error_message(handle, "failed to send data to data node"); + add_error_message(handle, "failed to send data to Datanode"); return EOF; } + else if (handle->outEnd > MAX_SIZE_TO_FORCE_FLUSH) + { + int rv; + + if ((rv = flushPGXCNodeHandleData(handle)) != 0) + return EOF; + } } if (ensure_out_buffer_capacity(bytes_needed, handle) != 0) @@ -2332,7 +2330,7 @@ DataNodeCopyIn(char *data_row, int len, ExecNodes *exec_nodes, PGXCNodeHandle** } else { - add_error_message(handle, "Invalid data node connection"); + add_error_message(handle, "Invalid Datanode connection"); return EOF; } } @@ -2344,7 +2342,6 @@ DataNodeCopyOut(ExecNodes *exec_nodes, PGXCNodeHandle** copy_connections, FILE* { RemoteQueryState *combiner; int conn_count = list_length(exec_nodes->nodeList) == 0 ? NumDataNodes : list_length(exec_nodes->nodeList); - int count = 0; ListCell *nodeitem; uint64 processed; @@ -2356,32 +2353,33 @@ DataNodeCopyOut(ExecNodes *exec_nodes, PGXCNodeHandle** copy_connections, FILE* foreach(nodeitem, exec_nodes->nodeList) { - PGXCNodeHandle *handle = copy_connections[count]; - count++; + PGXCNodeHandle *handle = copy_connections[lfirst_int(nodeitem)]; + int read_status = 0; - if (handle && handle->state == DN_CONNECTION_STATE_COPY_OUT) + Assert(handle && handle->state == DN_CONNECTION_STATE_COPY_OUT); + + /* + * H message has been consumed, continue to manage data row messages. + * Continue to read as long as there is data. + */ + while (read_status >= 0 && handle->state == DN_CONNECTION_STATE_COPY_OUT) { - int read_status = 0; - /* H message has been consumed, continue to manage data row messages */ - while (read_status >= 0 && handle->state == DN_CONNECTION_STATE_COPY_OUT) /* continue to read as long as there is data */ + if (handle_response(handle,combiner) == RESPONSE_EOF) { - if (handle_response(handle,combiner) == RESPONSE_EOF) - { - /* read some extra-data */ - read_status = pgxc_node_read_data(handle, true); - if (read_status < 0) - ereport(ERROR, - (errcode(ERRCODE_CONNECTION_FAILURE), - errmsg("unexpected EOF on datanode connection"))); - else - /* - * Set proper connection status - handle_response - * has changed it to DN_CONNECTION_STATE_QUERY - */ - handle->state = DN_CONNECTION_STATE_COPY_OUT; - } - /* There is no more data that can be read from connection */ + /* read some extra-data */ + read_status = pgxc_node_read_data(handle, true); + if (read_status < 0) + ereport(ERROR, + (errcode(ERRCODE_CONNECTION_FAILURE), + errmsg("unexpected EOF on datanode connection"))); + else + /* + * Set proper connection status - handle_response + * has changed it to DN_CONNECTION_STATE_QUERY + */ + handle->state = DN_CONNECTION_STATE_COPY_OUT; } + /* There is no more data that can be read from connection */ } } @@ -2394,7 +2392,7 @@ DataNodeCopyOut(ExecNodes *exec_nodes, PGXCNodeHandle** copy_connections, FILE* pfree(copy_connections); ereport(ERROR, (errcode(ERRCODE_DATA_CORRUPTED), - errmsg("Unexpected response from the data nodes when combining, request type %d", combiner->request_type))); + errmsg("Unexpected response from the Datanodes when combining, request type %d", combiner->request_type))); } return processed; @@ -2543,7 +2541,9 @@ ExecInitRemoteQuery(RemoteQuery *node, EState *estate, int eflags) if (node->scan.plan.targetlist) remotestate->tlist_vars = - pull_var_clause((Node*)node->scan.plan.targetlist, PVC_REJECT_PLACEHOLDERS); + pull_var_clause((Node*)node->scan.plan.targetlist, + PVC_RECURSE_AGGREGATES, + PVC_REJECT_PLACEHOLDERS); } @@ -2551,7 +2551,7 @@ ExecInitRemoteQuery(RemoteQuery *node, EState *estate, int eflags) /* * If there are parameters supplied, get them into a form to be sent to the - * datanodes with bind message. We should not have had done this before. + * Datanodes with bind message. We should not have had done this before. */ if (estate->es_param_list_info) { @@ -2600,7 +2600,7 @@ copy_slot(RemoteQueryState *node, TupleTableSlot *src, TupleTableSlot *dst) int i; /* - * Data node may be sending junk columns which are always at the end, + * Datanode may be sending junk columns which are always at the end, * but it must not be shorter then result slot. */ Assert(dst->tts_tupleDescriptor->natts <= src->tts_tupleDescriptor->natts); @@ -2646,7 +2646,7 @@ get_exec_connections(RemoteQueryState *planstate, { if (exec_nodes->en_expr) { - /* execution time determining of target data nodes */ + /* execution time determining of target Datanodes */ bool isnull; ExprState *estate = ExecInitExpr(exec_nodes->en_expr, (PlanState *) planstate); @@ -2729,7 +2729,7 @@ get_exec_connections(RemoteQueryState *planstate, dn_conn_count = 0; } - /* Set Coordinator list and coordinator number */ + /* Set Coordinator list and Coordinator number */ if ((list_length(nodelist) == 0 && exec_type == EXEC_ON_ALL_NODES) || (list_length(coordlist) == 0 && exec_type == EXEC_ON_COORDS)) { @@ -2754,7 +2754,7 @@ get_exec_connections(RemoteQueryState *planstate, /* Get connection for primary node, if used */ if (primarynode) { - /* Let's assume primary connection is always a datanode connection for the moment */ + /* Let's assume primary connection is always a Datanode connection for the moment */ PGXCNodeAllHandles *pgxc_conn_res; pgxc_conn_res = get_handles(primarynode, NULL, false); @@ -2814,7 +2814,7 @@ pgxc_start_command_on_connection(PGXCNodeHandle *connection, step->param_types, remotestate->paramval_len, remotestate->paramval_data, - step->read_only, + step->has_row_marks ? true : step->read_only, fetch) != 0) return false; } @@ -2843,7 +2843,14 @@ do_query(RemoteQueryState *node) bool need_tran_block; PGXCNodeAllHandles *pgxc_connections; - /* + /* + * A Postgres-XC node cannot run transactions while in recovery as + * this operation needs transaction IDs. This is more a safety guard than anything else. + */ + if (RecoveryInProgress()) + elog(ERROR, "cannot run transaction to remote nodes during recovery"); + + /* * Remember if the remote query is accessing a temp object * * !! PGXC TODO Check if the is_temp flag is propogated correctly when a @@ -2886,19 +2893,19 @@ do_query(RemoteQueryState *node) */ node->node_count = regular_conn_count; - if (force_autocommit) + if (force_autocommit || is_read_only) need_tran_block = false; else need_tran_block = true; /* - * XXX We are forcing a transaction block for every remote query. We can + * XXX We are forcing a transaction block for non-read-only every remote query. We can * get smarter here and avoid a transaction block if all of the following * conditions are true: * * - there is only one writer node involved in the transaction (including * the local node) * - the statement being executed on the remote writer node is a single - * step statement. IOW, coordinator must not send multiple queries to the + * step statement. IOW, Coordinator must not send multiple queries to the * remote node. * * Once we have leak-proof mechanism to enforce these constraints, we @@ -2934,7 +2941,7 @@ do_query(RemoteQueryState *node) is_read_only, PGXC_NODE_DATANODE)) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Could not begin transaction on primary data node."))); + errmsg("Could not begin transaction on primary Datanode."))); if (!pgxc_start_command_on_connection(primaryconnection, node, snapshot)) { @@ -2942,7 +2949,7 @@ do_query(RemoteQueryState *node) pfree(primaryconnection); ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Failed to send command to data nodes"))); + errmsg("Failed to send command to Datanodes"))); } Assert(node->combine_type == COMBINE_TYPE_SAME); @@ -2961,20 +2968,10 @@ do_query(RemoteQueryState *node) else ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Unexpected response from data node"))); - } - if (node->errorMessage) - { - char *code = node->errorCode; - if (node->errorDetail != NULL) - ereport(ERROR, - (errcode(MAKE_SQLSTATE(code[0], code[1], code[2], code[3], code[4])), - errmsg("%s", node->errorMessage), errdetail("%s", node->errorDetail) )); - else - ereport(ERROR, - (errcode(MAKE_SQLSTATE(code[0], code[1], code[2], code[3], code[4])), - errmsg("%s", node->errorMessage))); + errmsg("Unexpected response from Datanode"))); } + /* report error if any */ + pgxc_node_report_error(node); } for (i = 0; i < regular_conn_count; i++) @@ -2983,7 +2980,7 @@ do_query(RemoteQueryState *node) is_read_only, PGXC_NODE_DATANODE)) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Could not begin transaction on data nodes."))); + errmsg("Could not begin transaction on Datanodes."))); if (!pgxc_start_command_on_connection(connections[i], node, snapshot)) { @@ -2992,7 +2989,7 @@ do_query(RemoteQueryState *node) pfree(primaryconnection); ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Failed to send command to data nodes"))); + errmsg("Failed to send command to Datanodes"))); } connections[i]->combiner = node; } @@ -3023,10 +3020,10 @@ do_query(RemoteQueryState *node) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Failed to read response from data nodes"))); + errmsg("Failed to read response from Datanodes"))); } /* - * Handle input from the data nodes. + * Handle input from the Datanodes. * If we got a RESPONSE_DATAROW we can break handling to wrap * it into a tuple and return. Handling will be continued upon * subsequent invocations. @@ -3100,21 +3097,10 @@ do_query(RemoteQueryState *node) else ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Unexpected response from data node"))); - } - - if (node->errorMessage) - { - char *code = node->errorCode; - if (node->errorDetail != NULL) - ereport(ERROR, - (errcode(MAKE_SQLSTATE(code[0], code[1], code[2], code[3], code[4])), - errmsg("%s", node->errorMessage), errdetail("%s", node->errorDetail) )); - else - ereport(ERROR, - (errcode(MAKE_SQLSTATE(code[0], code[1], code[2], code[3], code[4])), - errmsg("%s", node->errorMessage))); + errmsg("Unexpected response from Datanode"))); } + /* report error if any */ + pgxc_node_report_error(node); } if (node->cursor_count) @@ -3338,7 +3324,7 @@ ExecRemoteQuery(RemoteQueryState *node) /* * Execute step of PGXC plan. * The step specifies a command to be executed on specified nodes. - * On first invocation connections to the data nodes are initialized and + * On first invocation connections to the Datanodes are initialized and * command is executed. Further, as well as within subsequent invocations, * responses are received until step is completed or there is a tuple to emit. * If there is a tuple it is returned, otherwise returned NULL. The NULL result @@ -3400,20 +3386,8 @@ RemoteQueryNext(RemoteQueryState *node) else ExecClearTuple(resultslot); } - - if (node->errorMessage) - { - char *code = node->errorCode; - if (node->errorDetail != NULL) - ereport(ERROR, - (errcode(MAKE_SQLSTATE(code[0], code[1], code[2], code[3], code[4])), - errmsg("%s", node->errorMessage), errdetail("%s", node->errorDetail) )); - else - ereport(ERROR, - (errcode(MAKE_SQLSTATE(code[0], code[1], code[2], code[3], code[4])), - errmsg("%s", node->errorMessage))); - } - + /* report error if any */ + pgxc_node_report_error(node); /* * While we are emitting rows we ignore outer plan */ @@ -3479,7 +3453,7 @@ ExecEndRemoteQuery(RemoteQueryState *node) if (pgxc_node_receive(1, &conn, &timeout)) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Failed to read response from data nodes when ending query"))); + errmsg("Failed to read response from Datanodes when ending query"))); } } @@ -3508,10 +3482,10 @@ ExecEndRemoteQuery(RemoteQueryState *node) bool bFree = false; int nCount; int i; - + cur_handles = node->cursor_connections; nCount = node->cursor_count; - + for(i=0;icursor_count;i++) { if (node->cursor_connections == NULL || node->cursor_connections[i]->sock == -1) @@ -3523,21 +3497,21 @@ ExecEndRemoteQuery(RemoteQueryState *node) break; } } - + if (node->cursor) { close_node_cursors(cur_handles, nCount, node->cursor); pfree(node->cursor); node->cursor = NULL; } - + if (node->update_cursor) { close_node_cursors(cur_handles, nCount, node->update_cursor); pfree(node->update_cursor); node->update_cursor = NULL; } - + if (bFree) pfree_pgxc_all_handles(all_handles); } @@ -3574,11 +3548,11 @@ close_node_cursors(PGXCNodeHandle **connections, int conn_count, char *cursor) if (pgxc_node_send_close(connections[i], false, cursor) != 0) ereport(WARNING, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Failed to close data node cursor"))); + errmsg("Failed to close Datanode cursor"))); if (pgxc_node_send_sync(connections[i]) != 0) ereport(WARNING, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Failed to close data node cursor"))); + errmsg("Failed to close Datanode cursor"))); } combiner = CreateResponseCombiner(conn_count, COMBINE_TYPE_NONE); @@ -3588,7 +3562,7 @@ close_node_cursors(PGXCNodeHandle **connections, int conn_count, char *cursor) if (pgxc_node_receive(conn_count, connections, NULL)) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Failed to close data node cursor"))); + errmsg("Failed to close Datanode cursor"))); i = 0; while (i < conn_count) { @@ -3615,7 +3589,7 @@ close_node_cursors(PGXCNodeHandle **connections, int conn_count, char *cursor) /* * Encode parameter values to format of DataRow message (the same format is - * used in Bind) to prepare for sending down to data nodes. + * used in Bind) to prepare for sending down to Datanodes. * The buffer to store encoded value is palloc'ed and returned as the result * parameter. Function returns size of the result */ @@ -3741,7 +3715,7 @@ ExecRemoteQueryReScan(RemoteQueryState *node, ExprContext *exprCtxt) /* - * Execute utility statement on multiple data nodes + * Execute utility statement on multiple Datanodes * It does approximately the same as * * RemoteQueryState *state = ExecInitRemoteQuery(plan, estate, flags); @@ -3812,7 +3786,7 @@ ExecRemoteUtility(RemoteQuery *node) gxid, need_tran_block, false, PGXC_NODE_DATANODE)) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Could not begin transaction on data nodes"))); + errmsg("Could not begin transaction on Datanodes"))); for (i = 0; i < dn_conn_count; i++) { PGXCNodeHandle *conn = pgxc_connections->datanode_handles[i]; @@ -3823,13 +3797,13 @@ ExecRemoteUtility(RemoteQuery *node) { ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Failed to send command to data nodes"))); + errmsg("Failed to send command to Datanodes"))); } if (pgxc_node_send_query(conn, node->sql_statement) != 0) { ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Failed to send command to data nodes"))); + errmsg("Failed to send command to Datanodes"))); } } } @@ -3873,8 +3847,8 @@ ExecRemoteUtility(RemoteQuery *node) if (pgxc_node_receive(dn_conn_count, pgxc_connections->datanode_handles, NULL)) break; /* - * Handle input from the data nodes. - * We do not expect data nodes returning tuples when running utility + * Handle input from the Datanodes. + * We do not expect Datanodes returning tuples when running utility * command. * If we got EOF, move to the next connection, will receive more * data on the next iteration. @@ -3897,13 +3871,13 @@ ExecRemoteUtility(RemoteQuery *node) { ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Unexpected response from data node"))); + errmsg("Unexpected response from Datanode"))); } else if (res == RESPONSE_DATAROW) { ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Unexpected response from data node"))); + errmsg("Unexpected response from Datanode"))); } } } @@ -3953,18 +3927,7 @@ ExecRemoteUtility(RemoteQuery *node) * error message pending we can report it. All connections should be in * consistent state now and so they can be released to the pool after ROLLBACK. */ - if (remotestate->errorMessage) - { - char *code = remotestate->errorCode; - if (remotestate->errorDetail != NULL) - ereport(ERROR, - (errcode(MAKE_SQLSTATE(code[0], code[1], code[2], code[3], code[4])), - errmsg("%s", remotestate->errorMessage), errdetail("%s", remotestate->errorDetail) )); - else - ereport(ERROR, - (errcode(MAKE_SQLSTATE(code[0], code[1], code[2], code[3], code[4])), - errmsg("%s", remotestate->errorMessage))); - } + pgxc_node_report_error(remotestate); } @@ -3977,7 +3940,7 @@ PGXCNodeCleanAndRelease(int code, Datum arg) /* Clean up prepared transactions before releasing connections */ DropAllPreparedStatements(); - /* Release data node connections */ + /* Release Datanode connections */ release_handles(); /* Disconnect from Pooler */ @@ -4006,7 +3969,7 @@ pgxc_get_connections(PGXCNodeHandle *connections[], int size, List *connlist) } /* * Get all connections for which we have an open transaction, - * for both data nodes and coordinators + * for both Datanodes and Coordinators */ static int pgxc_get_transaction_nodes(PGXCNodeHandle *connections[], int size, bool write) @@ -4027,7 +3990,7 @@ ExecCloseRemoteStatement(const char *stmt_name, List *nodelist) if (list_length(nodelist) == 0) return; - /* get needed data node connections */ + /* get needed Datanode connections */ all_handles = get_handles(nodelist, NIL, false); conn_count = all_handles->dn_conn_count; connections = all_handles->datanode_handles; @@ -4040,20 +4003,20 @@ ExecCloseRemoteStatement(const char *stmt_name, List *nodelist) { /* * statements are not affected by statement end, so consider - * unclosed statement on the datanode as a fatal issue and + * unclosed statement on the Datanode as a fatal issue and * force connection is discarded */ connections[i]->state = DN_CONNECTION_STATE_ERROR_FATAL; ereport(WARNING, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Failed to close data node statemrnt"))); + errmsg("Failed to close Datanode statemrnt"))); } if (pgxc_node_send_sync(connections[i]) != 0) { connections[i]->state = DN_CONNECTION_STATE_ERROR_FATAL; ereport(WARNING, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Failed to close data node statement"))); + errmsg("Failed to close Datanode statement"))); } } @@ -4068,7 +4031,7 @@ ExecCloseRemoteStatement(const char *stmt_name, List *nodelist) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Failed to close data node statement"))); + errmsg("Failed to close Datanode statement"))); } i = 0; while (i < conn_count) @@ -4097,7 +4060,7 @@ ExecCloseRemoteStatement(const char *stmt_name, List *nodelist) /* * DataNodeCopyInBinaryForAll * - * In a COPY TO, send to all datanodes PG_HEADER for a COPY TO in binary mode. + * In a COPY TO, send to all Datanodes PG_HEADER for a COPY TO in binary mode. */ int DataNodeCopyInBinaryForAll(char *msg_buf, int len, PGXCNodeHandle** copy_connections) { @@ -4139,7 +4102,7 @@ int DataNodeCopyInBinaryForAll(char *msg_buf, int len, PGXCNodeHandle** copy_con } else { - add_error_message(handle, "Invalid data node connection"); + add_error_message(handle, "Invalid Datanode connection"); return EOF; } } @@ -4263,8 +4226,8 @@ AtEOXact_Remote(void) } /* - * Do pre-commit processing for remote nodes which includes data nodes and - * coordinators. If more than one nodes are involved in the transaction write + * Do pre-commit processing for remote nodes which includes Datanodes and + * Coordinators. If more than one nodes are involved in the transaction write * activity, then we must run 2PC. For 2PC, we do the following steps: * * 1. PREPARE the transaction locally if the local node is involved in the @@ -4297,7 +4260,7 @@ PreCommit_Remote(char *prepareGID, bool preparedLocalNode) * down the remote nodes to execute the forthcoming COMMIT PREPARED * command. So grab one from the GTM and track it. It will be closed along * with the main transaction at the end. - */ + */ pgxc_node_remote_commit(); /* @@ -4340,7 +4303,7 @@ PreCommit_Remote(char *prepareGID, bool preparedLocalNode) * global consistency. We handle this case by recording the nodes involved in * the transaction at the GTM and keep the transaction open at the GTM so that * its reported as "in-progress" on all the nodes until resolved - */ + */ bool PreAbort_Remote(void) { @@ -4363,7 +4326,7 @@ PreAbort_Remote(void) */ char *nodestring = NULL; - /* + /* * Get the list of nodes in prepared state; such nodes have not * committed successfully */ @@ -4528,12 +4491,21 @@ clear_RemoteXactState(void) if ((remoteXactState.remoteNodeHandles == NULL) || (remoteXactState.maxRemoteNodes < (NumDataNodes + NumCoords))) { - remoteXactState.remoteNodeHandles = (PGXCNodeHandle **) - realloc (remoteXactState.remoteNodeHandles, - sizeof (PGXCNodeHandle *) * (NumDataNodes + NumCoords)); - remoteXactState.remoteNodeStatus = (RemoteXactNodeStatus *) - realloc (remoteXactState.remoteNodeStatus, - sizeof (RemoteXactNodeStatus) * (NumDataNodes + NumCoords)); + if (!remoteXactState.remoteNodeHandles) + remoteXactState.remoteNodeHandles = (PGXCNodeHandle **) + malloc(sizeof(PGXCNodeHandle *) * (MaxDataNodes + MaxCoords)); + else + remoteXactState.remoteNodeHandles = (PGXCNodeHandle **) + realloc(remoteXactState.remoteNodeHandles, + sizeof(PGXCNodeHandle *) * (NumDataNodes + NumCoords)); + if (!remoteXactState.remoteNodeStatus) + remoteXactState.remoteNodeStatus = (RemoteXactNodeStatus *) + malloc(sizeof(RemoteXactNodeStatus) * (MaxDataNodes + MaxCoords)); + else + remoteXactState.remoteNodeStatus = (RemoteXactNodeStatus *) + realloc (remoteXactState.remoteNodeStatus, + sizeof(RemoteXactNodeStatus) * (NumDataNodes + NumCoords)); + remoteXactState.maxRemoteNodes = NumDataNodes + NumCoords; } @@ -4583,8 +4555,7 @@ FinishRemotePreparedTransaction(char *prepareGID, bool commit) /* * Please note that with xc_maintenance_mode = on, COMMIT/ROLLBACK PREPARED will not - * propagate to remote nodes. Only GTM status is cleaned up. Prepared transaction - * on remote nodes will be cleaned up by pgxc_clean using EXECUTE DIRECT. + * propagate to remote nodes. Only GTM status is cleaned up. */ if (xc_maintenance_mode) { @@ -4601,6 +4572,7 @@ FinishRemotePreparedTransaction(char *prepareGID, bool commit) } return false; } + /* * Get the list of nodes involved in this transaction. * @@ -4658,7 +4630,7 @@ FinishRemotePreparedTransaction(char *prepareGID, bool commit) } /* - * Now get handles for all the involved data nodes and the coordinators + * Now get handles for all the involved Datanodes and the Coordinators */ pgxc_handles = get_handles(nodelist, coordlist, false); @@ -4669,7 +4641,7 @@ FinishRemotePreparedTransaction(char *prepareGID, bool commit) gxid, false, false)) ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), - errmsg("Could not begin transaction on data nodes"))); + errmsg("Could not begin transaction on Datanodes"))); */ RegisterTransactionNodes(pgxc_handles->dn_conn_count, (void **) pgxc_handles->datanode_handles, true); @@ -4723,3 +4695,68 @@ FinishRemotePreparedTransaction(char *prepareGID, bool commit) return prepared_local; } + +/* + * pgxc_node_report_error + * Throw error from Datanode if any. + */ +static void +pgxc_node_report_error(RemoteQueryState *combiner) +{ + /* If no combiner, nothing to do */ + if (!combiner) + return; + if (combiner->errorMessage) + { + char *code = combiner->errorCode; + if (combiner->errorDetail != NULL) + ereport(ERROR, + (errcode(MAKE_SQLSTATE(code[0], code[1], code[2], code[3], code[4])), + errmsg("%s", combiner->errorMessage), errdetail("%s", combiner->errorDetail) )); + else + ereport(ERROR, + (errcode(MAKE_SQLSTATE(code[0], code[1], code[2], code[3], code[4])), + errmsg("%s", combiner->errorMessage))); + } +} + +/* + * Flush PGXCNodeHandle cash to the coordinator until the amount of remaining data + * becomes lower than the threshold. + * + * If datanode is too slow to handle data sent, retry to flush some of the buffered + * data. + */ +static int flushPGXCNodeHandleData(PGXCNodeHandle *handle) +{ + int retry_no = 0; + int wait_microsec = 0; + size_t remaining; + + while (handle->outEnd > MAX_SIZE_TO_STOP_FLUSH) + { + remaining = handle->outEnd; + if (send_some(handle, handle->outEnd) <0) + { + add_error_message(handle, "failed to send data to Datanode"); + return EOF; + } + if (remaining == handle->outEnd) + { + /* No data sent */ + retry_no++; + wait_microsec = retry_no < 5 ? 0 : (retry_no < 35 ? 2^(retry_no / 5) : 128) * 1000; + if (wait_microsec) + pg_usleep(wait_microsec); + continue; + } + else + { + /* Some data sent */ + retry_no = 0; + wait_microsec = 0; + continue; + } + } + return 0; +} diff --git a/src/backend/pgxc/pool/pgxcnode.c b/src/backend/pgxc/pool/pgxcnode.c index e6cbfe74c3..c29fec703d 100644 --- a/src/backend/pgxc/pool/pgxcnode.c +++ b/src/backend/pgxc/pool/pgxcnode.c @@ -7,7 +7,7 @@ * * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * IDENTIFICATION * $$ @@ -49,6 +49,7 @@ #include "utils/formatting.h" #include "../interfaces/libpq/libpq-fe.h" +#define PGXC_CANCEL_DELAY 15 /* Number of connections held */ static int datanode_count = 0; @@ -199,7 +200,7 @@ PGXCNodeConnStr(char *host, int port, char *dbname, /* * Build up connection string - * remote type can be coordinator, datanode or application. + * remote type can be Coordinator, Datanode or application. */ num = snprintf(connstr, sizeof(connstr), "host=%s port=%d dbname=%s user=%s application_name=pgxc options='-c remotetype=%s %s'", @@ -467,7 +468,7 @@ pgxc_node_receive(const int conn_count, } /* - * Is there any data enqueued in the TCP input buffer waiting + * Is there any data enqueued in the TCP input buffer waiting * to be read sent by the PGXC node connection */ @@ -868,6 +869,16 @@ cancel_query(void) handle->state = DN_CONNECTION_STATE_IDLE; } } + /* + * Hack to wait a moment to cancel requests are processed in other nodes. + * If we send a new query to nodes before cancel requests get to be + * processed, the query will get unanticipated failure. + * As we have no way to know when to the request processed, we can't not + * wait an experimental duration (10ms). + */ +#if PGXC_CANCEL_DELAY > 0 + pg_usleep(PGXC_CANCEL_DELAY * 1000); +#endif } /* * This method won't return until all network buffers are empty @@ -1105,7 +1116,7 @@ send_some(PGXCNodeHandle *handle, int len) } /* shift the remaining contents of the buffer */ - if (remaining > 0) + if ((remaining > 0) && (handle->outBuffer != ptr)) memmove(handle->outBuffer, ptr, remaining); handle->outEnd = remaining; @@ -1175,7 +1186,7 @@ pgxc_node_send_parse(PGXCNodeHandle * handle, const char* statement, /* * instead of parameter ids we should send parameter names (qualified by * schema name if required). The OIDs of types can be different on - * datanodes. + * Datanodes. */ for (cnt_params = 0; cnt_params < num_params; cnt_params++) { @@ -1504,7 +1515,7 @@ pgxc_node_flush(PGXCNodeHandle *handle) /* * This method won't return until network buffer is empty or error occurs - * To ensure all data in network buffers is read and wasted + * To ensure all data in network buffers is read and wasted */ void pgxc_node_flush_read(PGXCNodeHandle *handle) @@ -1820,7 +1831,7 @@ get_handles(List *datanodelist, List *coordlist, bool is_coord_only_query) /* * Get Handles for Coordinators * If node list is empty execute request on current nodes - * There are transactions where the coordinator list is NULL Ex:COPY + * There are transactions where the Coordinator list is NULL Ex:COPY */ if (coordlist) diff --git a/src/backend/pgxc/pool/poolcomm.c b/src/backend/pgxc/pool/poolcomm.c index c0c1e9d7ec..97da73b8b3 100644 --- a/src/backend/pgxc/pool/poolcomm.c +++ b/src/backend/pgxc/pool/poolcomm.c @@ -6,7 +6,7 @@ * * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * *------------------------------------------------------------------------- */ @@ -778,7 +778,7 @@ pool_recvpids(PoolPort *port, int **pids) { int n; memcpy(&n, buf + 5 + i * sizeof(int), sizeof(int)); - *pids[i] = ntohl(n); + (*pids)[i] = ntohl(n); } return n32; @@ -787,7 +787,7 @@ pool_recvpids(PoolPort *port, int **pids) } /* - * Send a message containing pid numbers to the specified connection + * Send a message containing pid numbers to the specified connection */ int pool_sendpids(PoolPort *port, int *pids, int count) diff --git a/src/backend/pgxc/pool/poolmgr.c b/src/backend/pgxc/pool/poolmgr.c index f1849a48a3..0b629097c0 100644 --- a/src/backend/pgxc/pool/poolmgr.c +++ b/src/backend/pgxc/pool/poolmgr.c @@ -2,12 +2,12 @@ * * poolmgr.c * - * Connection pool manager handles connections to DataNodes + * Connection pool manager handles connections to Datanodes * * The pooler runs as a separate process and is forked off from a - * coordinator postmaster. If the coordinator needs a connection from a - * data node, it asks for one from the pooler, which maintains separate - * pools for each data node. A group of connections can be requested in + * Coordinator postmaster. If the Coordinator needs a connection from a + * Datanode, it asks for one from the pooler, which maintains separate + * pools for each Datanode. A group of connections can be requested in * a single request, and the pooler returns a list of file descriptors * to use for the connections. * @@ -15,17 +15,17 @@ * as connections are idle. Also, it does not queue requests; if a * connection is unavailable, it will simply fail. This should be implemented * one day, although there is a chance for deadlocks. For now, limiting - * connections should be done between the application and coordinator. + * connections should be done between the application and Coordinator. * Still, this is useful to avoid having to re-establish connections to the - * data nodes all the time for multiple coordinator backend sessions. + * Datanodes all the time for multiple Coordinator backend sessions. * * The term "agent" here refers to a session manager, one for each backend - * coordinator connection to the pooler. It will contain a list of connections - * allocated to a session, at most one per data node. + * Coordinator connection to the pooler. It will contain a list of connections + * allocated to a session, at most one per Datanode. * * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * IDENTIFICATION * $$ @@ -83,7 +83,7 @@ typedef struct /* The root memory context */ static MemoryContext PoolerMemoryContext = NULL; /* - * Allocations of core objects: data node connections, upper level structures, + * Allocations of core objects: Datanode connections, upper level structures, * connection strings, etc. */ static MemoryContext PoolerCoreContext = NULL; @@ -389,7 +389,6 @@ PoolManagerCloseHandle(PoolHandle *handle) { close(Socket(handle->port)); free(handle); - handle = NULL; } @@ -458,35 +457,44 @@ agent_create(void) /* * session_options * Returns the pgoptions string generated using a particular - * list of parameters that are required to be propagated to datanodes. + * list of parameters that are required to be propagated to Datanodes. * These parameters then become default values for the pooler sessions. * For e.g., a psql user sets PGDATESTYLE. This value should be set * as the default connection parameter in the pooler session that is - * connected to the datanodes. There are various parameters which need to + * connected to the Datanodes. There are various parameters which need to * be analysed individually to determine whether these should be set on - * datanodes. + * Datanodes. * * Note: These parameters values are the default values of the particular - * coordinator backend session, and not the new values set by SET command. + * Coordinator backend session, and not the new values set by SET command. * */ char *session_options(void) { int i; - char *pgoptions[] = {"DateStyle", "timezone", "geqo", "intervalstyle"}; + char *pgoptions[] = {"DateStyle", "timezone", "geqo", "intervalstyle", "lc_monetary"}; StringInfoData options; List *value_list; - const char *value; ListCell *l; initStringInfo(&options); for (i = 0; i < sizeof(pgoptions)/sizeof(char*); i++) { + const char *value; + appendStringInfo(&options, " -c %s=", pgoptions[i]); value = GetConfigOptionResetString(pgoptions[i]); + + /* lc_monetary does not accept lower case values */ + if (strcmp(pgoptions[i], "lc_monetary") == 0) + { + appendStringInfoString(&options, value); + continue; + } + SplitIdentifierString(strdup(value), ',', &value_list); foreach(l, value_list) { @@ -809,7 +817,7 @@ PoolManagerDisconnect(void) pool_putmessage(&poolHandle->port, 'd', NULL, 0); pool_flush(&poolHandle->port); - close(Socket(poolHandle->port)); + PoolManagerCloseHandle(poolHandle); poolHandle = NULL; } @@ -1433,8 +1441,8 @@ agent_acquire_connections(PoolAgent *agent, List *datanodelist, List *coordlist) * Allocate memory * File descriptors of Datanodes and Coordinators are saved in the same array, * This array will be sent back to the postmaster. - * It has a length equal to the length of the datanode list - * plus the length of the coordinator list. + * It has a length equal to the length of the Datanode list + * plus the length of the Coordinator list. * Datanode fds are saved first, then Coordinator fds are saved. */ result = (int *) palloc((list_length(datanodelist) + list_length(coordlist)) * sizeof(int)); @@ -1613,7 +1621,7 @@ cancel_query_on_connections(PoolAgent *agent, List *datanodelist, List *coordlis if (agent == NULL) return nCount; - /* Send cancel on Data nodes first */ + /* Send cancel on Datanodes first */ foreach(nodelist_item, datanodelist) { int node = lfirst_int(nodelist_item); @@ -2247,7 +2255,7 @@ grow_pool(DatabasePool *dbPool, Oid node) destroy_slot(slot); ereport(LOG, (errcode(ERRCODE_CONNECTION_FAILURE), - errmsg("failed to connect to data node"))); + errmsg("failed to connect to Datanode"))); break; } @@ -2294,10 +2302,8 @@ destroy_node_pool(PGXCNodePool *node_pool) /* * At this point all agents using connections from this pool should be already closed - * If this not the connections to the data nodes assigned to them remain open, this will - * consume data node resources. - * I believe this is not the case because pool is only destroyed on coordinator shutdown. - * However we should be careful when changing things + * If this not the connections to the Datanodes assigned to them remain open, this will + * consume Datanode resources. */ elog(DEBUG1, "About to destroy node pool %s, current size is %d, %d connections are in use", node_pool->connstr, node_pool->freeSize, node_pool->size - node_pool->freeSize); diff --git a/src/backend/pgxc/pool/poolutils.c b/src/backend/pgxc/pool/poolutils.c index b5b64789cd..c26552f6eb 100644 --- a/src/backend/pgxc/pool/poolutils.c +++ b/src/backend/pgxc/pool/poolutils.c @@ -3,9 +3,9 @@ * poolutils.c * * Utilities for Postgres-XC pooler - * + * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * IDENTIFICATION * $$ @@ -49,7 +49,7 @@ pgxc_pool_check(PG_FUNCTION_ARGS) (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), (errmsg("must be superuser to manage pooler")))); - /* A datanode has no pooler active, so do not bother about that */ + /* A Datanode has no pooler active, so do not bother about that */ if (IS_PGXC_DATANODE) PG_RETURN_BOOL(true); @@ -100,7 +100,7 @@ pgxc_pool_reload(PG_FUNCTION_ARGS) (errcode(ERRCODE_ACTIVE_SQL_TRANSACTION), errmsg("pgxc_pool_reload cannot run inside a transaction block"))); - /* A datanode has no pooler active, so do not bother about that */ + /* A Datanode has no pooler active, so do not bother about that */ if (IS_PGXC_DATANODE) PG_RETURN_BOOL(true); diff --git a/src/backend/pgxc/pool/postgresql_fdw.c b/src/backend/pgxc/pool/postgresql_fdw.c index 2aef35632b..5f1e5084af 100644 --- a/src/backend/pgxc/pool/postgresql_fdw.c +++ b/src/backend/pgxc/pool/postgresql_fdw.c @@ -87,11 +87,11 @@ is_immutable_func(Oid funcid) * - operator * - IMMUTABLE only * - It is required that the meaning of the operator be the same as the - * local server in the foreign server. + * local server in the foreign server. * - function * - IMMUTABLE only * - It is required that the meaning of the operator be the same as the - * local server in the foreign server. + * local server in the foreign server. * - scalar array operator (ANY/ALL) */ bool @@ -166,12 +166,12 @@ foreign_qual_walker(Node *node, foreign_qual_context *context) Aggref *aggref = (Aggref *)node; /* * An aggregate with ORDER BY, DISTINCT directives need to be - * computed at coordinator using all the rows. An aggregate + * computed at Coordinator using all the rows. An aggregate * without collection function needs to be computed at - * coordinator. + * Coordinator. * PGXCTODO: polymorphic transition types need to be resolved to - * correctly interpret the transition results from data nodes. - * For now compute such aggregates at coordinator. + * correctly interpret the transition results from Datanodes. + * For now compute such aggregates at Coordinator. */ if (aggref->aggorder || aggref->aggdistinct || @@ -180,7 +180,7 @@ foreign_qual_walker(Node *node, foreign_qual_context *context) IsPolymorphicType(aggref->aggtrantype)) return true; /* - * data node can compute transition results, so, add the + * Datanode can compute transition results, so, add the * aggregate to the context if context is present */ if (context) @@ -393,4 +393,3 @@ deparseSql(RemoteQueryState *scanstate) return sql.data; } - diff --git a/src/backend/pgxc/xc_maintenance_mode/Makefile b/src/backend/pgxc/xc_maintenance_mode/Makefile index 940cb52ec2..99c48a1ac1 100644 --- a/src/backend/pgxc/xc_maintenance_mode/Makefile +++ b/src/backend/pgxc/xc_maintenance_mode/Makefile @@ -1,9 +1,9 @@ #------------------------------------------------------------------------- # # Makefile-- -# Makefile for barrier +# Makefile for XC maintenance mode # -# Portions Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation +# Portions Copyright (c) 2010-2013, Postgres-XC Development Group # # IDENTIFICATION # $PostgreSQL$ diff --git a/src/backend/pgxc/xc_maintenance_mode/xc_maintenance_mode.c b/src/backend/pgxc/xc_maintenance_mode/xc_maintenance_mode.c index 7296b6e8d7..84da47d0d5 100644 --- a/src/backend/pgxc/xc_maintenance_mode/xc_maintenance_mode.c +++ b/src/backend/pgxc/xc_maintenance_mode/xc_maintenance_mode.c @@ -1,5 +1,17 @@ +/*------------------------------------------------------------------------- + * + * xc_maintenance_mode.c + * XC maintenance mode parameters + * + * + * Portions Copyright (c) 1996-2011 PostgreSQL Global Development Group + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group + * + * src/backend/pgxc/xc_maintenance_mode/xc_maintenance_mode.c + * + *------------------------------------------------------------------------- + */ #include "pgxc/xc_maintenance_mode.h" bool xc_maintenance_mode; GucContext currentGucContext; - diff --git a/src/backend/po/de.po b/src/backend/po/de.po index ba70dc31d8..75bcab724d 100644 --- a/src/backend/po/de.po +++ b/src/backend/po/de.po @@ -1,7 +1,5 @@ # German message translation file for PostgreSQL server -# Peter Eisentraut , 2001 - 2011. -# -# pgtranslation Id: postgres.po,v 1.94 2011/05/23 18:21:57 petere Exp $ +# Peter Eisentraut , 2001 - 2013. # # Use these quotes: »%s« # @@ -9,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2011-05-23 02:43+0000\n" -"PO-Revision-Date: 2011-05-23 20:42+0300\n" +"POT-Creation-Date: 2014-02-17 17:09+0000\n" +"PO-Revision-Date: 2014-02-17 15:07-0500\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" "Language: de\n" @@ -19,13246 +17,13070 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: main/main.c:237 -#, c-format -msgid "%s: setsysinfo failed: %s\n" -msgstr "%s: setsysinfo fehlgeschlagen: %s\n" - -#: main/main.c:259 +#: postmaster/bgwriter.c:483 #, c-format -msgid "%s: WSAStartup failed: %d\n" -msgstr "%s: WSAStartup fehlgeschlagen: %d\n" +msgid "checkpoints are occurring too frequently (%d second apart)" +msgid_plural "checkpoints are occurring too frequently (%d seconds apart)" +msgstr[0] "Checkpoints passieren zu oft (alle %d Sekunde)" +msgstr[1] "Checkpoints passieren zu oft (alle %d Sekunden)" -#: main/main.c:278 -#, c-format +#: postmaster/bgwriter.c:487 msgid "" -"%s is the PostgreSQL server.\n" -"\n" +"Consider increasing the configuration parameter \"checkpoint_segments\"." msgstr "" -"%s ist der PostgreSQL-Server.\n" -"\n" +"Erhöhen Sie eventuell den Konfigurationsparameter »checkpoint_segments«." -#: main/main.c:279 +#: postmaster/bgwriter.c:599 #, c-format -msgid "" -"Usage:\n" -" %s [OPTION]...\n" -"\n" -msgstr "" -"Aufruf:\n" -" %s [OPTION]...\n" -"\n" +msgid "transaction log switch forced (archive_timeout=%d)" +msgstr "Umschalten des Transaktionslogs erzwungen (archive_timeout=%d)" -#: main/main.c:280 -#, c-format -msgid "Options:\n" -msgstr "Optionen:\n" +#: postmaster/bgwriter.c:1062 +msgid "checkpoint request failed" +msgstr "Checkpoint-Anforderung fehlgeschlagen" -#: main/main.c:282 -#, c-format -msgid " -A 1|0 enable/disable run-time assert checking\n" -msgstr " -A 1|0 Assert-Prüfungen ein-/ausschalten\n" +#: postmaster/bgwriter.c:1063 +msgid "Consult recent messages in the server log for details." +msgstr "Einzelheiten finden Sie in den letzten Meldungen im Serverlog." -#: main/main.c:284 +#: postmaster/bgwriter.c:1245 #, c-format -msgid " -B NBUFFERS number of shared buffers\n" -msgstr " -B ZAHL Anzahl der geteilten Puffer\n" +msgid "compacted fsync request queue from %d entries to %d entries" +msgstr "fsync-Anfrageschlange von %d Einträgen auf %d Einträge zusammengefasst" -#: main/main.c:285 +#: postmaster/pgstat.c:330 #, c-format -msgid " -c NAME=VALUE set run-time parameter\n" -msgstr " -c NAME=WERT setze Konfigurationsparameter\n" +msgid "could not resolve \"localhost\": %s" +msgstr "konnte »localhost« nicht auflösen: %s" -#: main/main.c:286 -#, c-format -msgid " -d 1-5 debugging level\n" -msgstr " -d 1-5 Debug-Level\n" +#: postmaster/pgstat.c:353 +msgid "trying another address for the statistics collector" +msgstr "andere Adresse für Statistiksammelprozess wird versucht" -#: main/main.c:287 +#: postmaster/pgstat.c:362 #, c-format -msgid " -D DATADIR database directory\n" -msgstr " -D VERZEICHNIS Datenbankverzeichnis\n" +msgid "could not create socket for statistics collector: %m" +msgstr "konnte Socket für Statistiksammelprozess nicht erzeugen: %m" -#: main/main.c:288 +#: postmaster/pgstat.c:374 #, c-format -msgid " -e use European date input format (DMY)\n" -msgstr " -e verwende europäisches Datumseingabeformat (DMY)\n" +msgid "could not bind socket for statistics collector: %m" +msgstr "konnte Socket für Statistiksammelprozess nicht binden: %m" -#: main/main.c:289 +#: postmaster/pgstat.c:385 #, c-format -msgid " -F turn fsync off\n" -msgstr " -F »fsync« ausschalten\n" +msgid "could not get address of socket for statistics collector: %m" +msgstr "" +"konnte Adresse für Socket für Statistiksammelprozess nicht ermitteln: %m" -#: main/main.c:290 +#: postmaster/pgstat.c:401 #, c-format -msgid " -h HOSTNAME host name or IP address to listen on\n" -msgstr " -h HOSTNAME horche auf Hostname oder IP-Adresse\n" +msgid "could not connect socket for statistics collector: %m" +msgstr "konnte nicht mit Socket für Statistiksammelprozess verbinden: %m" -#: main/main.c:291 +#: postmaster/pgstat.c:422 #, c-format -msgid " -i enable TCP/IP connections\n" -msgstr " -i ermögliche TCP/IP-Verbindungen\n" +msgid "could not send test message on socket for statistics collector: %m" +msgstr "" +"konnte Testnachricht auf Socket für Statistiksammelprozess nicht senden: %m" -#: main/main.c:292 +#: postmaster/pgstat.c:448 postmaster/pgstat.c:2996 #, c-format -msgid " -k DIRECTORY Unix-domain socket location\n" -msgstr " -k VERZEICHNIS Ort der Unix-Domain-Socket\n" +msgid "select() failed in statistics collector: %m" +msgstr "select() im Statistiksammelprozess fehlgeschlagen: %m" -#: main/main.c:294 -#, c-format -msgid " -l enable SSL connections\n" -msgstr " -l ermögliche SSL-Verbindungen\n" +#: postmaster/pgstat.c:463 +msgid "test message did not get through on socket for statistics collector" +msgstr "Testnachricht auf Socket für Statistiksammelprozess kam nicht durch" -#: main/main.c:296 +#: postmaster/pgstat.c:478 #, c-format -msgid " -N MAX-CONNECT maximum number of allowed connections\n" -msgstr " -N ZAHL Anzahl der erlaubten Verbindugen\n" +msgid "could not receive test message on socket for statistics collector: %m" +msgstr "" +"konnte Testnachricht auf Socket für Statistiksammelprozess nicht empfangen: " +"%m" -#: main/main.c:297 -#, c-format -msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n" +#: postmaster/pgstat.c:488 +msgid "incorrect test message transmission on socket for statistics collector" msgstr "" -" -o OPTIONEN »OPTIONEN« an jeden Serverprozess weiterreichen (obsolet)\n" +"fehlerhafte Übertragung der Testnachricht auf Socket für " +"Statistiksammelprozess" -#: main/main.c:298 +#: postmaster/pgstat.c:511 #, c-format -msgid " -p PORT port number to listen on\n" -msgstr " -p PORT auf dieser Portnummer horchen\n" +msgid "could not set statistics collector socket to nonblocking mode: %m" +msgstr "" +"konnte Socket von Statistiksammelprozess nicht auf nicht blockierenden Modus " +"setzen: %m" -#: main/main.c:299 -#, c-format -msgid " -s show statistics after each query\n" -msgstr " -s zeige Statistiken nach jeder Anfrage\n" +#: postmaster/pgstat.c:521 +msgid "disabling statistics collector for lack of working socket" +msgstr "Statistiksammelprozess abgeschaltet wegen nicht funkionierender Socket" -#: main/main.c:300 +#: postmaster/pgstat.c:623 #, 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" +msgid "could not fork statistics collector: %m" +msgstr "konnte Statistiksammelprozess nicht starten (fork-Fehler): %m" -#: main/main.c:301 +#: postmaster/pgstat.c:1153 postmaster/pgstat.c:1177 postmaster/pgstat.c:1208 +msgid "must be superuser to reset statistics counters" +msgstr "nur Superuser können Statistikzähler zurücksetzen" + +#: postmaster/pgstat.c:1184 utils/adt/pgstatfuncs.c:1548 #, c-format -msgid " --NAME=VALUE set run-time parameter\n" -msgstr " --NAME=WERT setze Konfigurationsparameter\n" +msgid "unrecognized reset target: \"%s\"" +msgstr "unbekanntes Reset-Ziel: »%s«" -#: main/main.c:302 +#: postmaster/pgstat.c:1185 utils/adt/pgstatfuncs.c:1549 +msgid "Target must be \"bgwriter\"." +msgstr "Das Reset-Ziel muss »bgwriter« sein." + +#: postmaster/pgstat.c:2975 #, c-format -msgid " --describe-config describe configuration parameters, then exit\n" -msgstr " --describe-config zeige Konfigurationsparameter und beende\n" +msgid "poll() failed in statistics collector: %m" +msgstr "poll() im Statistiksammelprozess fehlgeschlagen: %m" -#: main/main.c:303 +#: postmaster/pgstat.c:3020 #, c-format -msgid " --help show this help, then exit\n" -msgstr " --help diese Hilfe anzeigen, dann beenden\n" +msgid "could not read statistics message: %m" +msgstr "konnte Statistiknachricht nicht lesen: %m" -#: main/main.c:304 +#: postmaster/pgstat.c:3291 #, c-format -msgid " --version output version information, then exit\n" -msgstr " --version Versionsinformationen anzeigen, dann beenden\n" +msgid "could not open temporary statistics file \"%s\": %m" +msgstr "konnte temporäre Statistikdatei »%s« nicht öffnen: %m" -#: main/main.c:306 +#: postmaster/pgstat.c:3363 #, c-format -msgid "" -"\n" -"Developer options:\n" -msgstr "" -"\n" -"Entwickleroptionen:\n" +msgid "could not write temporary statistics file \"%s\": %m" +msgstr "konnte temporäre Statistikdatei »%s« nicht schreiben: %m" -#: main/main.c:307 +#: postmaster/pgstat.c:3372 #, 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" +msgid "could not close temporary statistics file \"%s\": %m" +msgstr "konnte temporäre Statistikdatei »%s« nicht schließen: %m" -#: main/main.c:308 +#: postmaster/pgstat.c:3380 #, c-format -msgid "" -" -n do not reinitialize shared memory after abnormal exit\n" -msgstr "" -" -n Shared Memory nach abnormalem Ende nicht neu " -"initialisieren\n" +msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" +msgstr "konnte temporäre Statistikdatei »%s« nicht in »%s« umbenennen: %m" -#: main/main.c:309 +#: postmaster/pgstat.c:3486 postmaster/pgstat.c:3715 #, c-format -msgid " -O allow system table structure changes\n" -msgstr " -O erlaube Änderungen an Systemtabellenstruktur\n" +msgid "could not open statistics file \"%s\": %m" +msgstr "konnte Statistikdatei »%s« nicht öffnen: %m" -#: main/main.c:310 +#: postmaster/pgstat.c:3498 postmaster/pgstat.c:3508 postmaster/pgstat.c:3530 +#: postmaster/pgstat.c:3545 postmaster/pgstat.c:3608 postmaster/pgstat.c:3626 +#: postmaster/pgstat.c:3642 postmaster/pgstat.c:3660 postmaster/pgstat.c:3676 +#: postmaster/pgstat.c:3727 postmaster/pgstat.c:3738 #, c-format -msgid " -P disable system indexes\n" -msgstr " -P schalte Systemindexe aus\n" +msgid "corrupted statistics file \"%s\"" +msgstr "verfälschte Statistikdatei »%s«" -#: main/main.c:311 +#: postmaster/pgstat.c:4036 +msgid "database hash table corrupted during cleanup --- abort" +msgstr "Datenbank-Hash-Tabelle beim Aufräumen verfälscht --- Abbruch" + +#: postmaster/autovacuum.c:359 #, c-format -msgid " -t pa|pl|ex show timings after each query\n" -msgstr " -t pa|pl|ex zeige Zeitmessung nach jeder Anfrage\n" +msgid "could not fork autovacuum launcher process: %m" +msgstr "konnte Autovacuum-Launcher-Prozess nicht starten (fork-Fehler): %m" -#: main/main.c:312 +#: postmaster/autovacuum.c:404 +msgid "autovacuum launcher started" +msgstr "Autovacuum-Launcher startet" + +#: postmaster/autovacuum.c:781 +msgid "autovacuum launcher shutting down" +msgstr "Autovacuum-Launcher fährt herunter" + +#: postmaster/autovacuum.c:1416 #, 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" +msgid "could not fork autovacuum worker process: %m" +msgstr "konnte Autovacuum-Worker-Prozess nicht starten (fork-Fehler): %m" -#: main/main.c:313 +#: postmaster/autovacuum.c:1634 #, 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" +msgid "autovacuum: processing database \"%s\"" +msgstr "Autovacuum: bearbeite Datenbank »%s«" -#: main/main.c:315 +#: postmaster/autovacuum.c:2037 #, c-format -msgid "" -"\n" -"Options for single-user mode:\n" +msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"" msgstr "" -"\n" -"Optionen für Einzelbenutzermodus:\n" +"Autovacuum: lösche verwaiste temporäre Tabelle »%s.%s« in Datenbank »%s«" -#: main/main.c:316 +#: postmaster/autovacuum.c:2049 #, c-format -msgid " --single selects single-user mode (must be first argument)\n" +msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\"" msgstr "" -" --single wählt den Einzelbenutzermodus (muss erstes Argument sein)\n" +"Autovacuum: verwaiste temporäre Tabelle »%s.%s« in Datenbank »%s« gefunden" -#: main/main.c:317 +#: postmaster/autovacuum.c:2319 #, c-format -msgid " DBNAME database name (defaults to user name)\n" -msgstr " DBNAME Datenbankname (Standard: Benutzername)\n" +msgid "automatic vacuum of table \"%s.%s.%s\"" +msgstr "automatisches Vacuum der Tabelle »%s.%s.%s«" -#: main/main.c:318 +#: postmaster/autovacuum.c:2322 #, c-format -msgid " -d 0-5 override debugging level\n" -msgstr " -d 1-5 Debug-Level setzen\n" +msgid "automatic analyze of table \"%s.%s.%s\"" +msgstr "automatisches Analysieren der Tabelle »%s.%s.%s«" -#: main/main.c:319 -#, c-format -msgid " -E echo statement before execution\n" -msgstr " -E gebe Befehl vor der Ausführung aus\n" +#: postmaster/autovacuum.c:2808 +msgid "autovacuum not started because of misconfiguration" +msgstr "Autovacuum wegen Fehlkonfiguration nicht gestartet" -#: main/main.c:320 -#, 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" +#: postmaster/autovacuum.c:2809 +msgid "Enable the \"track_counts\" option." +msgstr "Schalten Sie die Option »track_counts« ein." -#: main/main.c:321 main/main.c:326 +#: postmaster/syslogger.c:418 #, c-format -msgid " -r FILENAME send stdout and stderr to given file\n" -msgstr " -r DATEINAME sende stdout und stderr in genannte Datei\n" +msgid "select() failed in logger process: %m" +msgstr "select() fehlgeschlagen im Logger-Prozess: %m" -#: main/main.c:323 +#: postmaster/syslogger.c:430 postmaster/syslogger.c:1014 #, c-format -msgid "" -"\n" -"Options for bootstrapping mode:\n" -msgstr "" -"\n" -"Optionen für Bootstrap-Modus:\n" +msgid "could not read from logger pipe: %m" +msgstr "konnte nicht aus Logger-Pipe lesen: %m" + +#: postmaster/syslogger.c:477 +msgid "logger shutting down" +msgstr "Logger fährt herunter" -#: main/main.c:324 +#: postmaster/syslogger.c:521 postmaster/syslogger.c:535 #, c-format -msgid " --boot selects bootstrapping mode (must be first argument)\n" -msgstr "" -" --boot wählt den Bootstrap-Modus (muss erstes Argument sein)\n" +msgid "could not create pipe for syslog: %m" +msgstr "konnte Pipe für Syslog nicht erzeugen: %m" -#: main/main.c:325 +#: postmaster/syslogger.c:571 #, c-format -msgid "" -" DBNAME database name (mandatory argument in bootstrapping mode)\n" -msgstr " DBNAME Datenbankname (Pflichtangabe im Bootstrap-Modus)\n" +msgid "could not fork system logger: %m" +msgstr "konnte Systemlogger nicht starten (fork-Fehler): %m" -#: main/main.c:327 +#: postmaster/syslogger.c:602 #, c-format -msgid " -x NUM internal use\n" -msgstr " -x NUM interne Verwendung\n" +msgid "could not redirect stdout: %m" +msgstr "konnte Standardausgabe nicht umleiten: %m" -#: main/main.c:329 +#: postmaster/syslogger.c:607 postmaster/syslogger.c:625 #, 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" -"In der Dokumentation finden Sie eine komplette Liste der Konfigurations-\n" -"parameter und Informationen wie man sie auf der Kommandozeile oder in der\n" -"Konfiguratonsdatei setzen kann.\n" -"\n" -"Berichten Sie Fehler an .\n" +msgid "could not redirect stderr: %m" +msgstr "konnte Standardfehlerausgabe nicht umleiten: %m" -#: 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 security compromise. See the documentation for\n" -"more information on how to properly start the server.\n" -msgstr "" -"Der PostgreSQL-Server darf nicht als »root« ausgeführt werden. Der\n" -"Server muss unter einer unprivilegierten Benutzer-ID gestartet werden,\n" -"um mögliche Sicherheitskompromittierung zu verhindern. In der\n" -"Dokumentation finden Sie weitere Informationen darüber, wie der\n" -"Server richtig gestartet wird.\n" +#: postmaster/syslogger.c:969 +#, c-format +msgid "could not write to log file: %s\n" +msgstr "konnte nicht in Logdatei schreiben: %s\n" -#: main/main.c:360 +#: postmaster/syslogger.c:1095 #, c-format -msgid "%s: real and effective user IDs must match\n" -msgstr "%s: reelle und effektive Benutzer-IDs müssen übereinstimmen\n" +msgid "could not open log file \"%s\": %m" +msgstr "konnte Logdatei »%s« nicht öffnen: %m" -#: 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 security compromises. See the documentation for\n" -"more information on how to properly start the server.\n" +#: postmaster/syslogger.c:1157 postmaster/syslogger.c:1201 +msgid "disabling automatic rotation (use SIGHUP to re-enable)" msgstr "" -"Der PostgreSQL-Server darf nicht als Benutzer mit Administrator-Rechten\n" -"ausgeführt werden. Der Server muss unter einer unprivilegierten\n" -"Benutzer-ID gestartet werden, um mögliche Sicherheitskompromittierung zu\n" -"verhindern. In der Dokumentation finden Sie weitere Informationen darüber,\n" -"wie der Server richtig gestartet wird.\n" +"automatische Rotation abgeschaltet (SIGHUP zum Wiederanschalten verwenden)" -#: main/main.c:388 +#: postmaster/pgarch.c:158 #, c-format -msgid "%s: invalid effective UID: %d\n" -msgstr "%s: ungültige effektive UID: %d\n" +msgid "could not fork archiver: %m" +msgstr "konnte Archivierer nicht starten (fork-Fehler): %m" -#: main/main.c:401 -#, c-format -msgid "%s: could not determine user name (GetUserName failed)\n" -msgstr "%s: konnte Benutzername nicht ermitteln (GetUserName fehlgeschlagen)\n" +#: postmaster/pgarch.c:450 +msgid "archive_mode enabled, yet archive_command is not set" +msgstr "archive_mode ist an, aber archive_command ist nicht gesetzt" -#: tsearch/wparser_def.c:2551 +#: postmaster/pgarch.c:465 #, c-format -msgid "unrecognized headline parameter: \"%s\"" -msgstr "unbekannter Headline-Parameter: »%s«" - -#: tsearch/wparser_def.c:2560 -msgid "MinWords should be less than MaxWords" -msgstr "»MinWords« sollte kleiner als »MaxWords« sein" - -#: tsearch/wparser_def.c:2564 -msgid "MinWords should be positive" -msgstr "»MinWords« sollte positiv sein" - -#: tsearch/wparser_def.c:2568 -msgid "ShortWord should be >= 0" -msgstr "»ShortWord« sollte >= 0 sein" +msgid "transaction log file \"%s\" could not be archived: too many failures" +msgstr "" +"Transaktionslogdatei »%s« konnte nicht archiviert werden: zu viele Fehler" -#: tsearch/wparser_def.c:2572 -msgid "MaxFragments should be >= 0" -msgstr "»MaxFragments« sollte >= 0 sein" +#: postmaster/pgarch.c:568 +#, c-format +msgid "archive command failed with exit code %d" +msgstr "Archivbefehl ist fehlgeschlagen mit Statuscode %d" -#: tsearch/dict_ispell.c:53 tsearch/dict_thesaurus.c:615 -msgid "multiple DictFile parameters" -msgstr "mehrere DictFile-Parameter" +#: 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 "Der fehlgeschlagene Archivbefehl war: %s" -#: tsearch/dict_ispell.c:64 -msgid "multiple AffFile parameters" -msgstr "mehrere AffFile-Parameter" +#: postmaster/pgarch.c:577 +#, c-format +msgid "archive command was terminated by exception 0x%X" +msgstr "Archivbefehl wurde durch Ausnahme 0x%X beendet" -#: tsearch/dict_ispell.c:75 tsearch/dict_simple.c:50 -#: snowball/dict_snowball.c:206 -msgid "multiple StopWords parameters" -msgstr "mehrere »StopWords«-Parameter" +#: postmaster/pgarch.c:579 postmaster/postmaster.c:2883 +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." -#: tsearch/dict_ispell.c:83 +#: postmaster/pgarch.c:584 #, c-format -msgid "unrecognized Ispell parameter: \"%s\"" -msgstr "unbekannter Ispell-Parameter: »%s«" +msgid "archive command was terminated by signal %d: %s" +msgstr "Archivbefehl wurde von Signal %d beendet: %s" -#: tsearch/dict_ispell.c:97 -msgid "missing AffFile parameter" -msgstr "Parameter »AffFile« fehlt" +#: postmaster/pgarch.c:591 +#, c-format +msgid "archive command was terminated by signal %d" +msgstr "Archivbefehl wurde von Signal %d beendet" -#: tsearch/dict_ispell.c:103 tsearch/dict_thesaurus.c:639 -msgid "missing DictFile parameter" -msgstr "Parameter »DictFile« fehlt" +#: postmaster/pgarch.c:600 +#, c-format +msgid "archive command exited with unrecognized status %d" +msgstr "Archivbefehl hat mit unbekanntem Status %d beendet" -#: tsearch/dict_simple.c:59 -msgid "multiple Accept parameters" -msgstr "mehrere »Accept«-Parameter" +#: postmaster/pgarch.c:612 +#, c-format +msgid "archived transaction log file \"%s\"" +msgstr "archivierte Transaktionslogdatei »%s«" -#: tsearch/dict_simple.c:67 +#: postmaster/pgarch.c:661 #, c-format -msgid "unrecognized simple dictionary parameter: \"%s\"" -msgstr "unbekannter Parameter für das einfache Wörterbuch: »%s«" +msgid "could not open archive status directory \"%s\": %m" +msgstr "konnte Archivstatusverzeichnis »%s« nicht öffnen: %m" -#: tsearch/dict_synonym.c:119 +#: postmaster/pgarch.c:715 access/transam/xlog.c:4613 +#: access/transam/xlog.c:5573 access/transam/xlog.c:5626 +#: access/transam/xlog.c:6421 #, c-format -msgid "unrecognized synonym parameter: \"%s\"" -msgstr "unbekannter Synonymparameter: »%s«" +msgid "could not rename file \"%s\" to \"%s\": %m" +msgstr "konnte Datei »%s« nicht in »%s« umbenennen: %m" -#: tsearch/dict_synonym.c:126 -msgid "missing Synonyms parameter" -msgstr "Parameter »Synonyms« fehlt" +#: postmaster/postmaster.c:569 +#, c-format +msgid "%s: invalid argument for option -f: \"%s\"\n" +msgstr "%s: ungültiges Argument für Option -f: »%s«\n" -#: tsearch/dict_synonym.c:133 +#: postmaster/postmaster.c:655 #, c-format -msgid "could not open synonym file \"%s\": %m" -msgstr "konnte Synonymdatei »%s« nicht öffnen: %m" +msgid "%s: invalid argument for option -t: \"%s\"\n" +msgstr "%s: ungültiges Argument für Option -t: »%s«\n" -#: tsearch/dict_thesaurus.c:180 +#: postmaster/postmaster.c:678 bootstrap/bootstrap.c:269 tcop/postgres.c:3448 #, c-format -msgid "could not open thesaurus file \"%s\": %m" -msgstr "konnte Thesaurusdatei »%s« nicht öffnen: %m" +msgid "--%s requires a value" +msgstr "--%s benötigt einen Wert" -#: tsearch/dict_thesaurus.c:213 -msgid "unexpected delimiter" -msgstr "unerwartetes Trennzeichen" +#: postmaster/postmaster.c:683 bootstrap/bootstrap.c:274 tcop/postgres.c:3453 +#, c-format +msgid "-c %s requires a value" +msgstr "-c %s benötigt einen Wert" -#: tsearch/dict_thesaurus.c:263 tsearch/dict_thesaurus.c:279 -msgid "unexpected end of line or lexeme" -msgstr "unerwartetes Ende der Zeile oder des Lexems" +#: postmaster/postmaster.c:695 postmaster/postmaster.c:708 +#: bootstrap/bootstrap.c:285 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n" -#: tsearch/dict_thesaurus.c:288 -msgid "unexpected end of line" -msgstr "unerwartetes Ende der Zeile" +#: postmaster/postmaster.c:706 +#, c-format +msgid "%s: invalid argument: \"%s\"\n" +msgstr "%s: ungültiges Argument: »%s«\n" -#: tsearch/dict_thesaurus.c:412 +#: postmaster/postmaster.c:731 #, c-format -msgid "" -"thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)" +msgid "%s: superuser_reserved_connections must be less than max_connections\n" msgstr "" -"Thesaurus-Beispielwort »%s« wird nicht vom Unterwörterbuch erkannt (Regel %d)" +"%s: superuser_reserved_connections muss kleiner als max_connections sein\n" -#: tsearch/dict_thesaurus.c:418 +#: postmaster/postmaster.c:736 #, c-format -msgid "thesaurus sample word \"%s\" is a stop word (rule %d)" -msgstr "Thesaurus-Beispielwort »%s« ist ein Stoppwort (Regel %d)" +msgid "%s: max_wal_senders must be less than max_connections\n" +msgstr "%s: max_wal_senders muss kleiner als max_connections sein\n" -#: tsearch/dict_thesaurus.c:421 -msgid "Use \"?\" to represent a stop word within a sample phrase." +#: postmaster/postmaster.c:741 +msgid "" +"WAL archival (archive_mode=on) requires wal_level \"archive\" or " +"\"hot_standby\"" msgstr "" -"Verwenden Sie »?«, um ein Stoppwort in einem Beispielsatz darzustellen." - -#: tsearch/dict_thesaurus.c:567 -#, c-format -msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)" -msgstr "Thesaurus-Ersatzwort »%s« ist ein Stoppwort (Regel %d)" +"WAL-Archivierung (archive_mode=on) benötigt wal_level »archive« oder " +"»hot_standby«" -#: tsearch/dict_thesaurus.c:574 -#, c-format +#: postmaster/postmaster.c:744 msgid "" -"thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)" +"WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or " +"\"hot_standby\"" msgstr "" -"Thesaurus-Ersatzwort »%s« wird nicht vom Unterwörterbuch erkannt (Regel %d)" +"WAL-Streaming (max_wal_senders > 0) benötigt wal_level »archive« oder " +"»hot_standby«" -#: tsearch/dict_thesaurus.c:586 +#: postmaster/postmaster.c:752 #, c-format -msgid "thesaurus substitute phrase is empty (rule %d)" -msgstr "Thesaurus-Ersatzausdruck ist leer (Regel %d)" +msgid "%s: invalid datetoken tables, please fix\n" +msgstr "%s: ungültige datetoken-Tabellen, bitte reparieren\n" -#: tsearch/dict_thesaurus.c:624 -msgid "multiple Dictionary parameters" -msgstr "mehrere »Dictionary«-Parameter" +#: postmaster/postmaster.c:852 +msgid "invalid list syntax for \"listen_addresses\"" +msgstr "ungültige Listensyntax für Parameter »listen_addresses«" -#: tsearch/dict_thesaurus.c:631 +#: postmaster/postmaster.c:882 #, c-format -msgid "unrecognized Thesaurus parameter: \"%s\"" -msgstr "unbekannter Thesaurus-Parameter: »%s«" - -#: tsearch/dict_thesaurus.c:643 -msgid "missing Dictionary parameter" -msgstr "Parameter »Dictionary« fehlt" +msgid "could not create listen socket for \"%s\"" +msgstr "konnte Listen-Socket für »%s« nicht erzeugen" -#: tsearch/spell.c:276 -#, c-format -msgid "could not open dictionary file \"%s\": %m" -msgstr "konnte Wörterbuchdatei »%s« nicht öffnen: %m" +#: postmaster/postmaster.c:888 +msgid "could not create any TCP/IP sockets" +msgstr "konnte keine TCP/IP-Sockets erstellen" -#: tsearch/spell.c:439 utils/adt/regexp.c:195 -#, c-format -msgid "invalid regular expression: %s" -msgstr "ungültiger regulärer Ausdruck: %s" +#: postmaster/postmaster.c:939 +msgid "could not create Unix-domain socket" +msgstr "konnte Unix-Domain-Socket nicht erstellen" -#: 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 "Syntaxfehler" +#: postmaster/postmaster.c:947 +msgid "no socket created for listening" +msgstr "keine Listen-Socket erzeugt" -#: tsearch/spell.c:596 tsearch/spell.c:842 tsearch/spell.c:862 -msgid "multibyte flag character is not allowed" -msgstr "Mehrbytemarkierungszeichen ist nicht erlaubt" +#: postmaster/postmaster.c:986 +msgid "could not create I/O completion port for child queue" +msgstr "konnte Ein-/Ausgabe-Completion-Port für Child-Queue nicht erzeugen" -#: tsearch/spell.c:629 tsearch/spell.c:687 tsearch/spell.c:780 +#: postmaster/postmaster.c:1030 #, c-format -msgid "could not open affix file \"%s\": %m" -msgstr "konnte Affixdatei »%s« nicht öffnen: %m" - -#: tsearch/spell.c:675 -msgid "Ispell dictionary supports only default flag value" -msgstr "Ispell-Wörterbuch unterstützt nur den Default-Flag-Wert" +msgid "%s: could not write external PID file \"%s\": %s\n" +msgstr "%s: konnte externe PID-Datei »%s« nicht schreiben: %s\n" -#: tsearch/spell.c:873 -msgid "wrong affix file format for flag" -msgstr "falsches Affixdateiformat für Flag" +#: postmaster/postmaster.c:1098 utils/init/postinit.c:197 +msgid "could not load pg_hba.conf" +msgstr "konnte pg_hba.conf nicht laden" -#: tsearch/to_tsany.c:165 utils/adt/tsvector.c:272 utils/adt/tsvector_op.c:514 +#: postmaster/postmaster.c:1151 #, c-format -msgid "string is too long for tsvector (%d bytes, max %d bytes)" -msgstr "Zeichenkette ist zu lang für tsvector (%d Bytes, maximal %d Bytes)" +msgid "%s: could not locate matching postgres executable" +msgstr "%s: konnte kein passendes Programm »postgres« finden" -#: tsearch/ts_locale.c:177 +#: postmaster/postmaster.c:1172 utils/misc/tzparser.c:323 utils/adt/misc.c:213 +#: utils/adt/genfile.c:353 commands/tablespace.c:689 commands/tablespace.c:699 +#: storage/file/fd.c:1682 storage/file/copydir.c:67 storage/file/copydir.c:106 #, c-format -msgid "line %d of configuration file \"%s\": \"%s\"" -msgstr "Zeile %d in Konfigurationsdatei »%s«: »%s«" +msgid "could not open directory \"%s\": %m" +msgstr "konnte Verzeichnis »%s« nicht öffnen: %m" -#: 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 +#: postmaster/postmaster.c:1174 utils/misc/tzparser.c:325 #, c-format -msgid "line %d of configuration file \"%s\"" -msgstr "Zeile %d in Konfigurationsdatei »%s«" +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." -#: tsearch/ts_locale.c:302 +#: postmaster/postmaster.c:1202 #, c-format -msgid "conversion from wchar_t to server encoding failed: %m" -msgstr "Umwandlung von wchar_t in Serverkodierung fehlgeschlagen: %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 "Wort ist zu lang, um indiziert zu werden" +msgid "data directory \"%s\" does not exist" +msgstr "Datenverzeichnis »%s« existiert nicht" -#: tsearch/ts_parse.c:392 tsearch/ts_parse.c:399 tsearch/ts_parse.c:562 -#: tsearch/ts_parse.c:569 +#: postmaster/postmaster.c:1207 #, c-format -msgid "Words longer than %d characters are ignored." -msgstr "Wörter, die länger als %d Zeichen sind, werden ignoriert." +msgid "could not read permissions of directory \"%s\": %m" +msgstr "konnte Zugriffsrechte von Verzeichnis »%s« nicht lesen: %m" -#: tsearch/ts_utils.c:53 +#: postmaster/postmaster.c:1215 #, c-format -msgid "invalid text search configuration file name \"%s\"" -msgstr "ungültiger Textsuchekonfigurationsdateiname »%s«" +msgid "specified data directory \"%s\" is not a directory" +msgstr "angegebenes Datenverzeichnis »%s« ist kein Verzeichnis" -#: tsearch/ts_utils.c:91 +#: postmaster/postmaster.c:1231 #, c-format -msgid "could not open stop-word file \"%s\": %m" -msgstr "konnte Stoppwortdatei »%s« nicht öffnen: %m" +msgid "data directory \"%s\" has wrong ownership" +msgstr "Datenverzeichnis »%s« hat falschen Eigentümer" -#: tsearch/wparser.c:314 -msgid "text search parser does not support headline creation" -msgstr "Textsucheparser unterstützt die Erzeugung von Headlines nicht" +#: postmaster/postmaster.c:1233 +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." -#: access/transam/slru.c:609 +#: postmaster/postmaster.c:1253 #, c-format -msgid "file \"%s\" doesn't exist, reading as zeroes" -msgstr "Datei »%s« existiert nicht, wird als Nullen eingelesen" +msgid "data directory \"%s\" has group or world access" +msgstr "Datenverzeichnis »%s« erlaubt Zugriff von Gruppe oder Welt" -#: 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 "konnte auf den Status von Transaktion %u nicht zugreifen" +#: postmaster/postmaster.c:1255 +msgid "Permissions should be u=rwx (0700)." +msgstr "Rechte sollten u=rwx (0700) sein." -#: access/transam/slru.c:840 +#: postmaster/postmaster.c:1266 #, c-format -msgid "Could not open file \"%s\": %m." -msgstr "Konnte Datei »%s« nicht öffnen: %m." +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: konnte das Datenbanksystem nicht finden\n" +"Es wurde im Verzeichnis »%s« erwartet,\n" +"aber die Datei »%s« konnte nicht geöffnet werden: %s\n" -#: access/transam/slru.c:846 +#: postmaster/postmaster.c:1302 #, c-format -msgid "Could not seek in file \"%s\" to offset %u: %m." -msgstr "Konnte Positionszeiger in Datei »%s« nicht auf %u setzen: %m." +msgid "%s: could not open file \"%s\": %s\n" +msgstr "%s: konnte Datei »%s« nicht öffnen: %s\n" -#: access/transam/slru.c:853 +#: postmaster/postmaster.c:1309 #, c-format -msgid "Could not read from file \"%s\" at offset %u: %m." -msgstr "Konnte nicht aus Datei »%s« bei Position %u lesen: %m." +msgid "%s: could not open log file \"%s/%s\": %s\n" +msgstr "%s: konnte Logdatei »%s/%s« nicht öffnen: %s\n" -#: access/transam/slru.c:860 +#: postmaster/postmaster.c:1320 #, c-format -msgid "Could not write to file \"%s\" at offset %u: %m." -msgstr "Konnte nicht in Datei »%s« bei Position %u schreiben: %m." +msgid "%s: could not fork background process: %s\n" +msgstr "%s: konnte Hintergrundprozess nicht starten (fork-Fehler): %s\n" -#: access/transam/slru.c:867 +#: postmaster/postmaster.c:1342 #, c-format -msgid "Could not fsync file \"%s\": %m." -msgstr "Konnte Datei »%s« nicht fsyncen: %m." +msgid "%s: could not dissociate from controlling TTY: %s\n" +msgstr "%s: konnte nicht vom kontrollierenden TTY abtrennen: %s\n" -#: access/transam/slru.c:874 +#: postmaster/postmaster.c:1437 #, c-format -msgid "Could not close file \"%s\": %m." -msgstr "Konnte Datei »%s« nicht schließen: %m." +msgid "select() failed in postmaster: %m" +msgstr "select() fehlgeschlagen im Postmaster: %m" -#: access/transam/slru.c:1101 -#, c-format -msgid "could not truncate directory \"%s\": apparent wraparound" -msgstr "konnte Verzeichnis »%s« nicht leeren: anscheinender Überlauf" +#: postmaster/postmaster.c:1599 postmaster/postmaster.c:1630 +msgid "incomplete startup packet" +msgstr "unvollständiges Startpaket" -#: access/transam/slru.c:1182 -#, c-format -msgid "removing file \"%s\"" -msgstr "entferne Datei »%s«" +#: postmaster/postmaster.c:1611 +msgid "invalid length of startup packet" +msgstr "ungültige Länge des Startpakets" -#: access/transam/twophase.c:250 +#: postmaster/postmaster.c:1668 #, c-format -msgid "transaction identifier \"%s\" is too long" -msgstr "Transaktionsbezeichner »%s« ist zu lang" - -#: access/transam/twophase.c:257 -msgid "prepared transactions are disabled" -msgstr "vorbereitete Transaktionen sind abgeschaltet" - -#: access/transam/twophase.c:258 -msgid "Set max_prepared_transactions to a nonzero value." -msgstr "Setzen Sie max_prepared_transactions auf einen Wert höher als null." +msgid "failed to send SSL negotiation response: %m" +msgstr "konnte SSL-Verhandlungsantwort nicht senden: %m" -#: access/transam/twophase.c:291 +#: postmaster/postmaster.c:1697 #, c-format -msgid "transaction identifier \"%s\" is already in use" -msgstr "Transaktionsbezeichner »%s« wird bereits verwendet" +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" -#: access/transam/twophase.c:300 -msgid "maximum number of prepared transactions reached" -msgstr "maximale Anzahl vorbereiteter Transaktionen erreicht" +#: postmaster/postmaster.c:1748 +msgid "invalid value for boolean option \"replication\"" +msgstr "ungültiger Wert für Boole'sche Option »replication«" -#: access/transam/twophase.c:301 -#, c-format -msgid "Increase max_prepared_transactions (currently %d)." -msgstr "Erhöhen Sie max_prepared_transactions (aktuell %d)." +#: postmaster/postmaster.c:1768 +msgid "invalid startup packet layout: expected terminator as last byte" +msgstr "ungültiges Layout des Startpakets: Abschluss als letztes Byte erwartet" -#: access/transam/twophase.c:421 -#, c-format -msgid "prepared transaction with identifier \"%s\" is busy" -msgstr "vorbereitete Transaktion mit Bezeichner »%s« ist beschäftigt" +#: postmaster/postmaster.c:1796 +msgid "no PostgreSQL user name specified in startup packet" +msgstr "kein PostgreSQL-Benutzername im Startpaket angegeben" -#: access/transam/twophase.c:429 -msgid "permission denied to finish prepared transaction" -msgstr "keine Berechtigung, um vorbereitete Transaktion abzuschließen" +#: postmaster/postmaster.c:1853 +msgid "the database system is starting up" +msgstr "das Datenbanksystem startet" -#: access/transam/twophase.c:430 -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." +#: postmaster/postmaster.c:1858 +msgid "the database system is shutting down" +msgstr "das Datenbanksystem fährt herunter" -#: access/transam/twophase.c:441 -msgid "prepared transaction belongs to another database" -msgstr "vorbereitete Transaktion gehört zu einer anderen Datenbank" +#: postmaster/postmaster.c:1863 +msgid "the database system is in recovery mode" +msgstr "das Datenbanksystem ist im Wiederherstellungsmodus" -#: access/transam/twophase.c:442 -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." +#: postmaster/postmaster.c:1868 storage/ipc/procarray.c:271 +#: storage/ipc/sinvaladt.c:302 storage/lmgr/proc.c:304 +msgid "sorry, too many clients already" +msgstr "tut mir leid, schon zu viele Verbindungen" -#: access/transam/twophase.c:456 +#: postmaster/postmaster.c:1930 #, c-format -msgid "prepared transaction with identifier \"%s\" does not exist" -msgstr "vorbereitete Transaktion mit Bezeichner »%s« existiert nicht" - -#: access/transam/twophase.c:939 -msgid "two-phase state file maximum length exceeded" -msgstr "maximale Länge der Zweiphasen-Statusdatei überschritten" +msgid "wrong key in cancel request for process %d" +msgstr "falscher Schlüssel in Stornierungsanfrage für Prozess %d" -#: access/transam/twophase.c:957 +#: postmaster/postmaster.c:1938 #, c-format -msgid "could not create two-phase state file \"%s\": %m" -msgstr "konnte Zweiphasen-Statusdatei »%s« nicht erstellen: %m" +msgid "PID %d in cancel request did not match any process" +msgstr "PID %d in Stornierungsanfrage stimmte mit keinem Prozess überein" -#: 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 "konnte Zweiphasen-Statusdatei nicht schreiben: %m" +#: postmaster/postmaster.c:2010 postmaster/postmaster.c:2041 +#: postmaster/postmaster.c:3243 postmaster/postmaster.c:3922 +#: postmaster/postmaster.c:4007 postmaster/postmaster.c:4624 +#: utils/hash/dynahash.c:368 utils/hash/dynahash.c:445 +#: utils/hash/dynahash.c:959 utils/misc/guc.c:3298 utils/misc/guc.c:3311 +#: utils/misc/guc.c:3324 utils/misc/tzparser.c:455 utils/init/miscinit.c:150 +#: utils/init/miscinit.c:171 utils/init/miscinit.c:181 utils/fmgr/dfmgr.c:224 +#: utils/mb/mbutils.c:374 utils/mb/mbutils.c:675 utils/mmgr/aset.c:416 +#: utils/mmgr/aset.c:587 utils/mmgr/aset.c:765 utils/mmgr/aset.c:966 +#: utils/adt/regexp.c:209 utils/adt/varlena.c:3471 utils/adt/varlena.c:3492 +#: utils/adt/formatting.c:1524 utils/adt/formatting.c:1640 +#: utils/adt/formatting.c:1757 lib/stringinfo.c:266 commands/sequence.c:1014 +#: libpq/auth.c:1022 libpq/auth.c:1382 libpq/auth.c:1450 libpq/auth.c:1852 +#: storage/file/fd.c:364 storage/file/fd.c:761 storage/file/fd.c:879 +#: storage/file/fd.c:1443 storage/ipc/procarray.c:849 +#: storage/ipc/procarray.c:1260 storage/ipc/procarray.c:1267 +#: storage/ipc/procarray.c:1507 storage/ipc/procarray.c:1958 +#: storage/buffer/localbuf.c:350 storage/buffer/buf_init.c:154 +msgid "out of memory" +msgstr "Speicher aufgebraucht" -#: access/transam/twophase.c:997 -#, c-format -msgid "could not seek in two-phase state file: %m" -msgstr "konnte Positionszeiger in Zweiphasen-Statusdatei nicht setzen: %m" +#: postmaster/postmaster.c:2144 +msgid "received SIGHUP, reloading configuration files" +msgstr "SIGHUP empfangen, Konfigurationsdateien werden neu geladen" -#: access/transam/twophase.c:1050 access/transam/twophase.c:1490 -#, c-format -msgid "could not close two-phase state file: %m" -msgstr "konnte Zweiphasen-Statusdatei nicht schließen: %m" +#: postmaster/postmaster.c:2167 +msgid "pg_hba.conf not reloaded" +msgstr "pg_hba.conf nicht neu geladen" -#: access/transam/twophase.c:1130 access/transam/twophase.c:1570 -#, c-format -msgid "could not open two-phase state file \"%s\": %m" -msgstr "konnte Zweiphasen-Statusdatei »%s« nicht öffnen: %m" +#: postmaster/postmaster.c:2210 +msgid "received smart shutdown request" +msgstr "intelligentes Herunterfahren verlangt" -#: access/transam/twophase.c:1147 -#, c-format -msgid "could not stat two-phase state file \"%s\": %m" -msgstr "konnte »stat« für Zweiphasen-Statusdatei »%s« nicht ausführen: %m" +#: postmaster/postmaster.c:2257 +msgid "received fast shutdown request" +msgstr "schnelles Herunterfahren verlangt" -#: access/transam/twophase.c:1179 -#, c-format -msgid "could not read two-phase state file \"%s\": %m" -msgstr "konnte Zweiphasen-Statusdatei »%s« nicht lesen: %m" +#: postmaster/postmaster.c:2275 +msgid "aborting any active transactions" +msgstr "etwaige aktive Transaktionen werden abgebrochen" -#: access/transam/twophase.c:1271 -#, c-format -msgid "two-phase state file for transaction %u is corrupt" -msgstr "Zweiphasen-Statusdatei für Transaktion %u ist verfälscht" +#: postmaster/postmaster.c:2304 +msgid "received immediate shutdown request" +msgstr "sofortiges Herunterfahren verlangt" -#: access/transam/twophase.c:1427 -#, 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:1456 -#, 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:1484 -#, c-format -msgid "could not fsync two-phase state file: %m" -msgstr "konnte Zweiphasen-Statusdatei nicht fsyncen: %m" - -#: access/transam/twophase.c:1579 -#, c-format -msgid "could not fsync two-phase state file \"%s\": %m" -msgstr "konnte Zweiphasen-Statusdatei »%s« nicht fsyncen: %m" - -#: access/transam/twophase.c:1586 -#, 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:1651 -#, c-format -msgid "removing future two-phase state file \"%s\"" -msgstr "entferne Zweiphasen-Statusdatei aus der Zukunft »%s«" +#: postmaster/postmaster.c:2392 postmaster/postmaster.c:2413 +msgid "startup process" +msgstr "Startprozess" -#: 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 "entferne verfälschte Zweiphasen-Statusdatei »%s«" +#: postmaster/postmaster.c:2395 +msgid "aborting startup due to startup process failure" +msgstr "Serverstart abgebrochen wegen Startprozessfehler" -#: access/transam/twophase.c:1780 access/transam/twophase.c:1864 -#, c-format -msgid "removing stale two-phase state file \"%s\"" -msgstr "entferne abgelaufene Zweiphasen-Statusdatei »%s«" +#: postmaster/postmaster.c:2447 +msgid "database system is ready to accept connections" +msgstr "Datenbanksystem ist bereit, um Verbindungen anzunehmen" -#: access/transam/twophase.c:1882 -#, c-format -msgid "recovering prepared transaction %u" -msgstr "Wiederherstellung der vorbereiteten Transaktion %u" +#: postmaster/postmaster.c:2502 +msgid "background writer process" +msgstr "Background-Writer-Prozess" -#: access/transam/varsup.c:114 -#, c-format -msgid "" -"database is not accepting commands to avoid wraparound data loss in database " -"\"%s\"" -msgstr "" -"Datenbank nimmt keine Befehle an, um Datenverlust wegen " -"Transaktionsnummernüberlauf in Datenbank »%s« zu vermeiden" +#: postmaster/postmaster.c:2518 +msgid "WAL writer process" +msgstr "WAL-Schreibprozess" -#: 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 "" -"Halten Sie den Postmaster an und verwenden Sie ein Standalone-Backend, um " -"VACUUM in dieser Datenbank auszuführen.\n" -"Eventuell müssen Sie auch alte vorbereitete Transaktionen committen oder " -"zurückrollen." +#: postmaster/postmaster.c:2532 +msgid "WAL receiver process" +msgstr "WAL-Receiver-Prozess" -#: access/transam/varsup.c:121 -#, c-format -msgid "" -"database is not accepting commands to avoid wraparound data loss in database " -"with OID %u" -msgstr "" -"Datenbank nimmt keine Befehle an, um Datenverlust wegen " -"Transaktionsnummernüberlauf in Datenbank mit OID %u zu vermeiden" +#: postmaster/postmaster.c:2547 +msgid "autovacuum launcher process" +msgstr "Autovacuum-Launcher-Prozess" -#: access/transam/varsup.c:133 access/transam/varsup.c:368 -#, c-format -msgid "database \"%s\" must be vacuumed within %u transactions" -msgstr "Datenbank »%s« muss innerhalb von %u Transaktionen gevacuumt werden" +#: postmaster/postmaster.c:2562 +msgid "archiver process" +msgstr "Archivierprozess" -#: 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 "" -"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." +#: postmaster/postmaster.c:2578 +msgid "statistics collector process" +msgstr "Statistiksammelprozess" -#: access/transam/varsup.c:140 access/transam/varsup.c:375 -#, c-format -msgid "database with OID %u must be vacuumed within %u transactions" -msgstr "" -"Datenbank mit OID %u muss innerhalb von %u Transaktionen gevacuumt werden" +#: postmaster/postmaster.c:2592 +msgid "system logger process" +msgstr "Systemlogger-Prozess" -#: access/transam/varsup.c:333 -#, c-format -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" +#: postmaster/postmaster.c:2627 postmaster/postmaster.c:2646 +#: postmaster/postmaster.c:2653 postmaster/postmaster.c:2671 +msgid "server process" +msgstr "Serverprozess" -#: access/transam/xact.c:729 -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" +#: postmaster/postmaster.c:2707 +msgid "terminating any other active server processes" +msgstr "aktive Serverprozesse werden abgebrochen" -#: access/transam/xact.c:1268 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2872 #, c-format -msgid "maximum number of committed subtransactions (%d) exceeded" -msgstr "maximale Anzahl committeter Subtransaktionen (%d) erreicht" - -#: access/transam/xact.c:2044 -msgid "cannot PREPARE a transaction that has operated on temporary tables" -msgstr "" -"PREPARE kann nicht in einer Transaktion ausgeführt werden, die temporäre " -"Tabellen bearbeitet hat" +msgid "%s (PID %d) exited with exit code %d" +msgstr "%s (PID %d) beendete mit Status %d" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2835 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2881 #, c-format -msgid "%s cannot run inside a transaction block" -msgstr "%s kann nicht in einem Transaktionsblock laufen" +msgid "%s (PID %d) was terminated by exception 0x%X" +msgstr "%s (PID %d) wurde durch Ausnahme 0x%X beendet" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2845 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2890 #, c-format -msgid "%s cannot run inside a subtransaction" -msgstr "%s kann nicht in einer Subtransaktion laufen" +msgid "%s (PID %d) was terminated by signal %d: %s" +msgstr "%s (PID %d) wurde von Signal %d beendet: %s" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2855 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2900 #, 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" +msgid "%s (PID %d) was terminated by signal %d" +msgstr "%s (PID %d) wurde von Signal %d beendet" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2906 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2909 #, c-format -msgid "%s can only be used in transaction blocks" -msgstr "%s kann nur in Transaktionsblöcken verwendet werden" - -#: access/transam/xact.c:3088 -msgid "there is already a transaction in progress" -msgstr "eine Transaktion ist bereits begonnen" - -#: access/transam/xact.c:3255 access/transam/xact.c:3347 -msgid "there is no transaction in progress" -msgstr "keine Transaktion offen" - -#: 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 existiert nicht" - -#: access/transam/xact.c:4225 -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" +msgid "%s (PID %d) exited with unrecognized status %d" +msgstr "%s (PID %d) beendete mit unbekanntem Status %d" -#: access/transam/xlog.c:1328 -#, c-format -msgid "could not create archive status file \"%s\": %m" -msgstr "konnte Archivstatusdatei »%s« nicht erstellen: %m" +#: postmaster/postmaster.c:3089 +msgid "abnormal database system shutdown" +msgstr "abnormales Herunterfahren des Datenbanksystems" -#: access/transam/xlog.c:1336 -#, c-format -msgid "could not write archive status file \"%s\": %m" -msgstr "konnte Archivstatusdatei »%s« nicht schreiben: %m" +#: postmaster/postmaster.c:3128 +msgid "all server processes terminated; reinitializing" +msgstr "alle Serverprozesse beendet; initialisiere neu" -#: access/transam/xlog.c:1791 access/transam/xlog.c:10337 -#: replication/walreceiver.c:506 replication/walsender.c:1003 +#: postmaster/postmaster.c:3311 #, c-format -msgid "could not seek in log file %u, segment %u to offset %u: %m" -msgstr "" -"konnte Positionszeiger von Logdatei %u, Segment %u nicht auf %u setzen: %m" +msgid "could not fork new process for connection: %m" +msgstr "konnte neuen Prozess für Verbindung nicht starten (fork-Fehler): %m" -#: 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 "" -"konnte nicht in Logdatei %u, Segment %u bei Position %u, Länge %lu " -"schreiben: %m" +#: postmaster/postmaster.c:3353 +msgid "could not fork new process for connection: " +msgstr "konnte neuen Prozess für Verbindung nicht starten (fork-Fehler): " -#: access/transam/xlog.c:2010 +#: postmaster/postmaster.c:3467 #, c-format -msgid "updated min recovery point to %X/%X" -msgstr "minimaler Recovery-Punkt auf %X/%X aktualisiert" +msgid "connection received: host=%s port=%s" +msgstr "Verbindung empfangen: Host=%s Port=%s" -#: 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 +#: postmaster/postmaster.c:3472 #, c-format -msgid "could not open file \"%s\" (log file %u, segment %u): %m" -msgstr "konnte Datei »%s« nicht öffnen (Logdatei %u, Segment %u): %m" +msgid "connection received: host=%s" +msgstr "Verbindung empfangen: Host=%s" -#: 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 +#: postmaster/postmaster.c:3697 access/transam/xlog.c:2397 +#: access/transam/xlog.c:2530 access/transam/xlog.c:4463 +#: access/transam/xlog.c:9183 access/transam/xlog.c:9427 +#: storage/file/copydir.c:172 storage/smgr/md.c:289 #, c-format msgid "could not create file \"%s\": %m" msgstr "kann Datei »%s« nicht erstellen: %m" -#: 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 +#: postmaster/postmaster.c:3707 postmaster/postmaster.c:3717 +#: utils/misc/guc.c:7432 utils/misc/guc.c:7457 utils/init/miscinit.c:1097 +#: utils/init/miscinit.c:1106 utils/init/miscinit.c:1113 +#: access/transam/xlog.c:2429 access/transam/xlog.c:2562 +#: access/transam/xlog.c:4515 access/transam/xlog.c:4578 +#: storage/file/copydir.c:197 #, c-format msgid "could not write to file \"%s\": %m" msgstr "konnte nicht in Datei »%s« schreiben: %m" -#: 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 +#: postmaster/postmaster.c:3736 #, c-format -msgid "could not fsync file \"%s\": %m" -msgstr "konnte Datei »%s« nicht fsyncen: %m" +msgid "could not execute server process \"%s\": %m" +msgstr "konnte Serverprozess »%s« nicht ausführen: %m" -#: access/transam/xlog.c:2421 access/transam/xlog.c:2553 -#: access/transam/xlog.c:4523 commands/copy.c:1329 storage/file/copydir.c:211 +#: postmaster/postmaster.c:4257 +msgid "database system is ready to accept read only connections" +msgstr "Datenbanksystem ist bereit, um lesende Verbindungen anzunehmen" + +#: postmaster/postmaster.c:4527 #, c-format -msgid "could not close file \"%s\": %m" -msgstr "konnte Datei »%s« nicht schließen: %m" +msgid "could not fork startup process: %m" +msgstr "konnte Startprozess nicht starten (fork-Fehler): %m" -#: 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 +#: postmaster/postmaster.c:4531 #, c-format -msgid "could not open file \"%s\": %m" -msgstr "konnte Datei »%s« nicht öffnen: %m" +msgid "could not fork background writer process: %m" +msgstr "konnte Background-Writer-Prozess nicht starten (fork-Fehler): %m" -#: 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 +#: postmaster/postmaster.c:4535 #, c-format -msgid "could not read file \"%s\": %m" -msgstr "konnte Datei »%s« nicht lesen: %m" +msgid "could not fork WAL writer process: %m" +msgstr "konnte WAL-Writer-Prozess nicht starten (fork-Fehler): %m" -#: access/transam/xlog.c:2525 +#: postmaster/postmaster.c:4539 #, c-format -msgid "not enough data in file \"%s\"" -msgstr "nicht genug Daten in Datei »%s«" +msgid "could not fork WAL receiver process: %m" +msgstr "konnte WAL-Receiver-Prozess nicht starten (fork-Fehler): %m" -#: access/transam/xlog.c:2644 +#: postmaster/postmaster.c:4543 #, c-format -msgid "" -"could not link file \"%s\" to \"%s\" (initialization of log file %u, segment " -"%u): %m" -msgstr "" -"konnte Datei »%s« nicht nach »%s« linken (Initialisierung von Logdatei %u, " -"Segment %u): %m" +msgid "could not fork process: %m" +msgstr "konnte Prozess nicht starten (fork-Fehler): %m" -#: access/transam/xlog.c:2656 +#: postmaster/postmaster.c:4828 #, c-format -msgid "" -"could not rename file \"%s\" to \"%s\" (initialization of log file %u, " -"segment %u): %m" +msgid "could not duplicate socket %d for use in backend: error code %d" msgstr "" -"konnte Datei »%s« nicht in »%s« umbenennen (Initialisierung von Logdatei %u, " -"Segment %u): %m" +"konnte Socket %d nicht für Verwendung in Backend duplizieren: Fehlercode %d" -#: access/transam/xlog.c:2839 replication/walreceiver.c:480 +#: postmaster/postmaster.c:4860 #, c-format -msgid "could not close log file %u, segment %u: %m" -msgstr "konnte Logdatei %u, Segment %u nicht schließen: %m" +msgid "could not create inherited socket: error code %d\n" +msgstr "konnte geerbtes Socket nicht erzeugen: Fehlercode %d\n" -#: 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 +#: postmaster/postmaster.c:4889 postmaster/postmaster.c:4896 #, c-format -msgid "could not stat file \"%s\": %m" -msgstr "konnte »stat« für Datei »%s« nicht ausführen: %m" +msgid "could not read from backend variables file \"%s\": %s\n" +msgstr "konnte nicht aus Servervariablendatei »%s« lesen: %s\n" -#: 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 +#: postmaster/postmaster.c:4905 #, c-format -msgid "could not remove file \"%s\": %m" -msgstr "konnte Datei »%s« nicht löschen: %m" +msgid "could not remove file \"%s\": %s\n" +msgstr "konnte Datei »%s« nicht löschen: %s\n" -#: access/transam/xlog.c:3055 +#: postmaster/postmaster.c:4922 #, c-format -msgid "archive file \"%s\" has wrong size: %lu instead of %lu" -msgstr "Archivdatei »%s« hat falsche Größe: %lu statt %lu" +msgid "could not map view of backend variables: error code %d\n" +msgstr "konnte Sicht der Backend-Variablen nicht mappen: Fehlercode %d\n" -#: access/transam/xlog.c:3064 +#: postmaster/postmaster.c:4931 #, c-format -msgid "restored log file \"%s\" from archive" -msgstr "Logdatei »%s« aus Archiv wiederhergestellt" +msgid "could not unmap view of backend variables: error code %d\n" +msgstr "konnte Sicht der Backend-Variablen nicht unmappen: Fehlercode %d\n" -#: access/transam/xlog.c:3114 +#: postmaster/postmaster.c:4938 #, 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 close handle to backend parameter variables: error code %d\n" +msgstr "" +"konnte Handle für Backend-Parametervariablen nicht schließen: Fehlercode %d\n" -#: access/transam/xlog.c:3229 -#, c-format -msgid "%s \"%s\": return code %d" -msgstr "%s »%s«: Rückgabecode %d" +#: postmaster/postmaster.c:5083 +msgid "could not read exit code for process\n" +msgstr "konnte Exitcode des Prozesses nicht lesen\n" -#: access/transam/xlog.c:3339 access/transam/xlog.c:3522 -#, c-format -msgid "could not open transaction log directory \"%s\": %m" -msgstr "konnte Transaktionslog-Verzeichnis »%s« nicht öffnen: %m" +#: postmaster/postmaster.c:5088 +msgid "could not post child completion status\n" +msgstr "konnte Child-Completion-Status nicht versenden\n" -#: access/transam/xlog.c:3393 +#: utils/cache/ts_cache.c:620 commands/tsearchcmds.c:1753 +#: commands/tsearchcmds.c:1909 catalog/namespace.c:2276 #, c-format -msgid "recycled transaction log file \"%s\"" -msgstr "Transaktionslogdatei »%s« wird wiederverwendet" +msgid "text search configuration \"%s\" does not exist" +msgstr "Textsuchekonfiguration »%s« existiert nicht" -#: access/transam/xlog.c:3409 -#, c-format -msgid "removing transaction log file \"%s\"" -msgstr "entferne Transaktionslogdatei »%s«" +#: utils/cache/plancache.c:606 +msgid "cached plan must not change result type" +msgstr "gecachter Plan darf den Ergebnistyp nicht ändern" -#: access/transam/xlog.c:3432 +#: utils/cache/relcache.c:4321 #, c-format -msgid "could not rename old transaction log file \"%s\": %m" -msgstr "konnte alte Transaktionslogdatei »%s« nicht umbenennen: %m" +msgid "could not create relation-cache initialization file \"%s\": %m" +msgstr "" +"konnte Initialisierungsdatei für Relationscache »%s« nicht erzeugen: %m" -#: access/transam/xlog.c:3444 -#, c-format -msgid "could not remove old transaction log file \"%s\": %m" -msgstr "konnte alte Transaktionslogdatei »%s« nicht löschen: %m" +#: utils/cache/relcache.c:4323 +msgid "Continuing anyway, but there's something wrong." +msgstr "Setze trotzdem fort, aber irgendwas stimmt nicht." -#: access/transam/xlog.c:3482 access/transam/xlog.c:3492 +#: utils/cache/relcache.c:4537 #, c-format -msgid "required WAL directory \"%s\" does not exist" -msgstr "benötigtes WAL-Verzeichnis »%s« existiert nicht" +msgid "could not remove cache file \"%s\": %m" +msgstr "konnte Cache-Datei »%s« nicht löschen: %m" -#: access/transam/xlog.c:3498 -#, c-format -msgid "creating missing WAL directory \"%s\"" -msgstr "erzeuge fehlendes WAL-Verzeichnis »%s«" +#: utils/cache/relmapper.c:454 +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" -#: access/transam/xlog.c:3501 +#: utils/cache/relmapper.c:596 utils/cache/relmapper.c:702 #, c-format -msgid "could not create missing directory \"%s\": %m" -msgstr "konnte fehlendes Verzeichnis »%s« nicht erzeugen: %m" +msgid "could not open relation mapping file \"%s\": %m" +msgstr "konnte Relation-Mapping-Datei »%s« nicht öffnen: %m" -#: access/transam/xlog.c:3535 +#: utils/cache/relmapper.c:609 #, c-format -msgid "removing transaction log backup history file \"%s\"" -msgstr "entferne Transaktionslog-Backup-History-Datei »%s«" +msgid "could not read relation mapping file \"%s\": %m" +msgstr "konnte nicht aus Relation-Mapping-Datei »%s« lesen: %m" -#: access/transam/xlog.c:3655 +#: utils/cache/relmapper.c:619 #, c-format -msgid "incorrect hole size in record at %X/%X" -msgstr "falsche Lochgröße im Datensatz bei %X/%X" +msgid "relation mapping file \"%s\" contains invalid data" +msgstr "Relation-Mapping-Datei »%s« enthält ungültige Daten" -#: access/transam/xlog.c:3668 +#: utils/cache/relmapper.c:629 #, c-format -msgid "incorrect total length in record at %X/%X" -msgstr "falsche Gesamtlänge im Datensatz bei %X/%X" +msgid "relation mapping file \"%s\" contains incorrect checksum" +msgstr "Relation-Mapping-Datei »%s« enthält falsche Prüfsumme" -#: access/transam/xlog.c:3681 +#: utils/cache/relmapper.c:741 #, c-format -msgid "incorrect resource manager data checksum in record at %X/%X" -msgstr "falsche Resource-Manager-Daten-Prüfsumme im Datensatz bei %X/%X" +msgid "could not write to relation mapping file \"%s\": %m" +msgstr "konnte nicht in Relation-Mapping-Datei »%s« schreiben: %m" -#: access/transam/xlog.c:3750 access/transam/xlog.c:3786 +#: utils/cache/relmapper.c:754 #, c-format -msgid "invalid record offset at %X/%X" -msgstr "ungültiger Datensatz-Offset bei %X/%X" +msgid "could not fsync relation mapping file \"%s\": %m" +msgstr "konnte Relation-Mapping-Datei »%s« nicht fsyncen: %m" -#: access/transam/xlog.c:3794 +#: utils/cache/relmapper.c:760 #, c-format -msgid "contrecord is requested by %X/%X" -msgstr "Contrecord-Eintrag ist bei %X/%X" +msgid "could not close relation mapping file \"%s\": %m" +msgstr "konnte Relation-Mapping-Datei »%s« nicht schließen: %m" -#: access/transam/xlog.c:3809 +#: utils/cache/lsyscache.c:2413 utils/cache/lsyscache.c:2446 +#: utils/cache/lsyscache.c:2479 utils/cache/lsyscache.c:2512 #, c-format -msgid "invalid xlog switch record at %X/%X" -msgstr "ungültiger Xlog-Switch-Datensatz bei %X/%X" +msgid "type %s is only a shell" +msgstr "Typ %s ist nur eine Hülle" -#: access/transam/xlog.c:3817 +#: utils/cache/lsyscache.c:2418 #, c-format -msgid "record with zero length at %X/%X" -msgstr "Datensatz mit Länge null bei %X/%X" +msgid "no input function available for type %s" +msgstr "keine Eingabefunktion verfügbar für Typ %s" -#: access/transam/xlog.c:3826 +#: utils/cache/lsyscache.c:2451 #, c-format -msgid "invalid record length at %X/%X" -msgstr "ungültige Datensatzlänge bei %X/%X" +msgid "no output function available for type %s" +msgstr "keine Ausgabefunktion verfügbar für Typ %s" -#: access/transam/xlog.c:3833 +#: utils/cache/lsyscache.c:2484 utils/adt/arrayfuncs.c:1307 #, c-format -msgid "invalid resource manager ID %u at %X/%X" -msgstr "ungültige Resource-Manager-ID %u bei %X/%X" +msgid "no binary input function available for type %s" +msgstr "keine binäre Eingabefunktion verfügbar für Typ %s" -#: access/transam/xlog.c:3846 access/transam/xlog.c:3862 +#: utils/cache/lsyscache.c:2517 utils/adt/arrayfuncs.c:1529 #, c-format -msgid "record with incorrect prev-link %X/%X at %X/%X" -msgstr "Datensatz mit inkorrektem Prev-Link %X/%X bei %X/%X" +msgid "no binary output function available for type %s" +msgstr "keine binäre Ausgabefunktion verfügbar für Typ %s" -#: access/transam/xlog.c:3891 +#: utils/cache/typcache.c:195 parser/parse_type.c:202 #, c-format -msgid "record length %u at %X/%X too long" -msgstr "Datensatzlänge %u bei %X/%X zu groß" +msgid "type \"%s\" is only a shell" +msgstr "Typ »%s« ist nur eine Hülle" -#: access/transam/xlog.c:3931 +#: utils/cache/typcache.c:634 #, c-format -msgid "there is no contrecord flag in log file %u, segment %u, offset %u" -msgstr "es gibt keine Contrecord-Flag in Logdatei %u, Segment %u, Offset %u" +msgid "type %s is not composite" +msgstr "Typ %s ist kein zusammengesetzter Typ" -#: access/transam/xlog.c:3941 -#, c-format -msgid "invalid contrecord length %u in log file %u, segment %u, offset %u" -msgstr "ungültige Contrecord-Länge %u in Logdatei %u, Segment %u, Offset %u" +#: utils/cache/typcache.c:648 +msgid "record type has not been registered" +msgstr "Record-Typ wurde nicht registriert" -#: access/transam/xlog.c:4031 +#: utils/cache/typcache.c:1001 commands/typecmds.c:1272 #, c-format -msgid "invalid magic number %04X in log file %u, segment %u, offset %u" -msgstr "ungültige magische Zahl %04X in Logdatei %u, Segment %u, Offset %u" +msgid "%s is not an enum" +msgstr "»%s« ist kein Enum" -#: 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 "ungültige Infobits %04X in Logdatei %u, Segment %u, Offset %u" +#: utils/hash/dynahash.c:955 storage/ipc/shmem.c:190 +#: storage/lmgr/predicate.c:2246 storage/lmgr/predicate.c:2261 +#: storage/lmgr/predicate.c:3653 storage/lmgr/predicate.c:4796 +#: storage/lmgr/proc.c:197 storage/lmgr/proc.c:216 storage/lmgr/lock.c:723 +#: storage/lmgr/lock.c:792 storage/lmgr/lock.c:2301 storage/lmgr/lock.c:2700 +#: storage/lmgr/lock.c:2765 +msgid "out of shared memory" +msgstr "Shared Memory aufgebraucht" -#: 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-Datei stammt von einem anderen Datenbanksystem" +#: utils/misc/help_config.c:131 +msgid "internal error: unrecognized run-time parameter type\n" +msgstr "interner Fehler: unbekannter Parametertyp\n" -#: access/transam/xlog.c:4061 -#, c-format -msgid "" -"WAL file database system identifier is %s, pg_control database system " -"identifier is %s." -msgstr "" -"Datenbanksystemidentifikator in der WAL-Datei ist %s, " -"Datenbanksystemidentifikator in pg_control ist %s." +#: utils/misc/guc.c:525 +msgid "Ungrouped" +msgstr "Ungruppiert" -#: access/transam/xlog.c:4069 -msgid "Incorrect XLOG_SEG_SIZE in page header." -msgstr "Falscher XLOG_SEG_SIZE-Wert in Page-Header." +#: utils/misc/guc.c:527 +msgid "File Locations" +msgstr "Dateipfade" -#: access/transam/xlog.c:4076 -msgid "Incorrect XLOG_BLCKSZ in page header." -msgstr "Falscher XLOG_BLCKSZ-Wert in Page-Header." +#: utils/misc/guc.c:529 +msgid "Connections and Authentication" +msgstr "Verbindungen und Authentifizierung" -#: access/transam/xlog.c:4092 -#, c-format -msgid "unexpected pageaddr %X/%X in log file %u, segment %u, offset %u" -msgstr "unerwartete Page-Adresse %X/%X in Logdatei %u, Segment %u, Offset %u" +#: utils/misc/guc.c:531 +msgid "Connections and Authentication / Connection Settings" +msgstr "Verbindungen und Authentifizierung / Verbindungseinstellungen" -#: access/transam/xlog.c:4104 -#, c-format -msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u" -msgstr "unerwartete Timeline-ID %u in Logdatei %u, Segment %u, Offset %u" +#: utils/misc/guc.c:533 +msgid "Connections and Authentication / Security and Authentication" +msgstr "Verbindungen und Authentifizierung / Sicherheit und Authentifizierung" -#: 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 "" -"Timeline-ID %u nicht in richtiger Reihenfolge (nach %u) in Logdatei %u, " -"Segment %u, Offset %u" +#: utils/misc/guc.c:535 +msgid "Resource Usage" +msgstr "Resourcenbenutzung" -#: access/transam/xlog.c:4195 -#, c-format -msgid "syntax error in history file: %s" -msgstr "Syntaxfehler in History-Datei: %s" +#: utils/misc/guc.c:537 +msgid "Resource Usage / Memory" +msgstr "Resourcenbenutzung / Speicher" -#: access/transam/xlog.c:4196 -msgid "Expected a numeric timeline ID." -msgstr "Eine numerische Timeline-ID wurde erwartet." +#: utils/misc/guc.c:539 +msgid "Resource Usage / Kernel Resources" +msgstr "Resourcenbenutzung / Kernelresourcen" -#: access/transam/xlog.c:4201 -#, c-format -msgid "invalid data in history file: %s" -msgstr "ungültige Daten in History-Datei: %s" +#: utils/misc/guc.c:541 +msgid "Resource Usage / Cost-Based Vacuum Delay" +msgstr "Resourcenbenutzung / Kostenbasierte Vacuum-Verzögerung" -#: access/transam/xlog.c:4202 -msgid "Timeline IDs must be in increasing sequence." -msgstr "Timeline-IDs müssen in aufsteigender Folge sein." +#: utils/misc/guc.c:543 +msgid "Resource Usage / Background Writer" +msgstr "Resourcenbenutzung / Background-Writer" -#: access/transam/xlog.c:4215 -#, c-format -msgid "invalid data in history file \"%s\"" -msgstr "ungültige Daten in History-Datei »%s«" +#: utils/misc/guc.c:545 +msgid "Resource Usage / Asynchronous Behavior" +msgstr "Resourcenbenutzung / Asynchrones Verhalten" -#: access/transam/xlog.c:4216 -msgid "Timeline IDs must be less than child timeline's ID." -msgstr "Timeline-IDs müssen kleiner als die Timeline-ID des Kindes sein." +#: utils/misc/guc.c:547 +msgid "Write-Ahead Log" +msgstr "Write-Ahead-Log" -#: access/transam/xlog.c:4302 -#, c-format -msgid "new timeline %u is not a child of database system timeline %u" -msgstr "neue Timeline %u ist kein Kind der Datenbanksystem-Timeline %u" +#: utils/misc/guc.c:549 +msgid "Write-Ahead Log / Settings" +msgstr "Write-Ahead-Log / Einstellungen" -#: access/transam/xlog.c:4315 -#, c-format -msgid "new target timeline is %u" -msgstr "neue Ziel-Timeline ist %u" +#: utils/misc/guc.c:551 +msgid "Write-Ahead Log / Checkpoints" +msgstr "Write-Ahead-Log / Checkpoints" -#: access/transam/xlog.c:4540 -#, c-format -msgid "could not link file \"%s\" to \"%s\": %m" -msgstr "konnte Datei »%s« nicht nach »%s« linken: %m" +#: utils/misc/guc.c:553 +msgid "Write-Ahead Log / Archiving" +msgstr "Write-Ahead-Log / Archivierung" -#: 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 "konnte Datei »%s« nicht in »%s« umbenennen: %m" +#: utils/misc/guc.c:555 +msgid "Replication" +msgstr "Replikation" -#: access/transam/xlog.c:4629 -#, c-format -msgid "could not create control file \"%s\": %m" -msgstr "konnte Kontrolldatei »%s« nicht erzeugen: %m" +#: utils/misc/guc.c:557 +msgid "Replication / Master Server" +msgstr "Replikation / Master-Server" -#: access/transam/xlog.c:4640 access/transam/xlog.c:4865 -#, c-format -msgid "could not write to control file: %m" -msgstr "konnte nicht in Kontrolldatei schreiben: %m" +#: utils/misc/guc.c:559 +msgid "Replication / Standby Servers" +msgstr "Replikation / Standby-Server" -#: access/transam/xlog.c:4646 access/transam/xlog.c:4871 -#, c-format -msgid "could not fsync control file: %m" -msgstr "konnte Kontrolldatei nicht fsyncen: %m" +#: utils/misc/guc.c:561 +msgid "Query Tuning" +msgstr "Anfragetuning" -#: access/transam/xlog.c:4651 access/transam/xlog.c:4876 -#, c-format -msgid "could not close control file: %m" -msgstr "konnte Kontrolldatei nicht schließen: %m" +#: utils/misc/guc.c:563 +msgid "Query Tuning / Planner Method Configuration" +msgstr "Anfragetuning / Planermethoden" -#: access/transam/xlog.c:4669 access/transam/xlog.c:4854 -#, c-format -msgid "could not open control file \"%s\": %m" -msgstr "konnte Kontrolldatei »%s« nicht öffnen: %m" +#: utils/misc/guc.c:565 +msgid "Query Tuning / Planner Cost Constants" +msgstr "Anfragetuning / Planerkosten" -#: access/transam/xlog.c:4675 -#, c-format -msgid "could not read from control file: %m" -msgstr "konnte nicht aus Kontrolldatei lesen: %m" +#: utils/misc/guc.c:567 +msgid "Query Tuning / Genetic Query Optimizer" +msgstr "Anfragetuning / Genetischer Anfrageoptimierer" -#: 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 "Datenbankdateien sind inkompatibel mit Server" +#: utils/misc/guc.c:569 +msgid "Query Tuning / Other Planner Options" +msgstr "Anfragetuning / Andere Planeroptionen" -#: 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 "" -"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:4693 -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: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 "" -"Der Datenbank-Cluster wurde mit PG_CONTROL_VERSION %d initialisiert, aber " -"der Server wurde mit PG_CONTROL_VERSION %d kompiliert." - -#: 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 "Es sieht so aus, dass Sie initdb ausführen müssen." - -#: access/transam/xlog.c:4712 -msgid "incorrect checksum in control file" -msgstr "falsche Prüfsumme in Kontrolldatei" - -#: 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 "" -"Der Datenbank-Cluster wurde mit CATALOG_VERSION_NO %d initialisiert, aber " -"der Server wurde mit CATALOG_VERSION_NO %d kompiliert." - -#: 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 "" -"Der Datenbank-Cluster wurde mit MAXALIGN %d initialisiert, aber der Server " -"wurde mit MAXALIGN %d kompiliert." - -#: access/transam/xlog.c:4736 -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:4741 -#, 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: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 "" -"Es sieht so aus, dass Sie neu kompilieren oder initdb ausführen müssen." - -#: 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 "" -"Der Datenbank-Cluster wurde mit RELSEG_SIZE %d initialisiert, aber der " -"Server wurde mit RELSEGSIZE %d kompiliert." - -#: 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 "" -"Der Datenbank-Cluster wurde mit XLOG_BLCKSZ %d initialisiert, aber der " -"Server wurde mit XLOG_BLCKSZ %d kompiliert." - -#: 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 "" -"Der Datenbank-Cluster wurde mit XLOG_SEG_SIZE %d initialisiert, aber der " -"Server wurde mit XLOG_SEG_SIZE %d kompiliert." - -#: 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 "" -"Der Datenbank-Cluster wurde mit NAMEDATALEN %d initialisiert, aber der " -"Server wurde mit NAMEDATALEN %d kompiliert." - -#: 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 "" -"Der Datenbank-Cluster wurde mit INDEX_MAX_KEYS %d initialisiert, aber der " -"Server wurde mit INDEX_MAX_KEYS %d kompiliert." - -#: 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 "" -"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:4792 -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:4799 -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:4808 -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:4815 -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:4824 -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:4831 -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:5156 -#, c-format -msgid "could not write bootstrap transaction log file: %m" -msgstr "konnte Bootstrap-Transaktionslogdatei nicht schreiben: %m" - -#: access/transam/xlog.c:5162 -#, c-format -msgid "could not fsync bootstrap transaction log file: %m" -msgstr "konnte Bootstrap-Transaktionslogdatei nicht fsyncen: %m" - -#: access/transam/xlog.c:5167 -#, c-format -msgid "could not close bootstrap transaction log file: %m" -msgstr "konnte Bootstrap-Transaktionslogdatei nicht schließen: %m" - -#: access/transam/xlog.c:5234 -#, c-format -msgid "could not open recovery command file \"%s\": %m" -msgstr "konnte Recovery-Kommandodatei »%s« nicht öffnen: %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'" +#: utils/misc/guc.c:571 +msgid "Reporting and Logging" +msgstr "Berichte und Logging" -#: access/transam/xlog.c:5264 -#, c-format -msgid "archive_cleanup_command = '%s'" -msgstr "archive_cleanup_command = '%s'" +#: utils/misc/guc.c:573 +msgid "Reporting and Logging / Where to Log" +msgstr "Berichte und Logging / Wohin geloggt wird" -#: 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 "Parameter »%s« erfordert einen Boole'schen Wert" +#: utils/misc/guc.c:575 +msgid "Reporting and Logging / When to Log" +msgstr "Berichte und Logging / Wann geloggt wird" -#: access/transam/xlog.c:5274 -#, c-format -msgid "pause_at_recovery_target = '%s'" -msgstr "pause_at_recovery_target = '%s'" +#: utils/misc/guc.c:577 +msgid "Reporting and Logging / What to Log" +msgstr "Berichte und Logging / Was geloggt wird" -#: access/transam/xlog.c:5287 -#, c-format -msgid "recovery_target_timeline is not a valid number: \"%s\"" -msgstr "recovery_target_timeline ist keine gültige Zahl: »%s«" +#: utils/misc/guc.c:579 +msgid "Statistics" +msgstr "Statistiken" -#: access/transam/xlog.c:5292 -#, c-format -msgid "recovery_target_timeline = %u" -msgstr "recovery_target_timeline = %u" +#: utils/misc/guc.c:581 +msgid "Statistics / Monitoring" +msgstr "Statistiken / Überwachung" -#: access/transam/xlog.c:5295 -msgid "recovery_target_timeline = latest" -msgstr "recovery_target_timeline = latest" +#: utils/misc/guc.c:583 +msgid "Statistics / Query and Index Statistics Collector" +msgstr "Statistiken / Statistiksammler für Anfragen und Indexe" -#: access/transam/xlog.c:5303 -#, c-format -msgid "recovery_target_xid is not a valid number: \"%s\"" -msgstr "recovery_target_xid ist keine gültige Zahl: »%s«" +#: utils/misc/guc.c:585 +msgid "Autovacuum" +msgstr "Autovacuum" -#: access/transam/xlog.c:5306 -#, c-format -msgid "recovery_target_xid = %u" -msgstr "recovery_target_xid = %u" +#: utils/misc/guc.c:587 +msgid "Client Connection Defaults" +msgstr "Standardeinstellungen für Clientverbindungen" -#: access/transam/xlog.c:5330 -#, c-format -msgid "recovery_target_time = '%s'" -msgstr "recovery_target_time = '%s'" +#: utils/misc/guc.c:589 +msgid "Client Connection Defaults / Statement Behavior" +msgstr "Standardeinstellungen für Clientverbindungen / Anweisungsverhalten" -#: access/transam/xlog.c:5347 -#, c-format -msgid "recovery_target_name is too long (maximum %d characters)" -msgstr "recovery_target_name ist zu lang (maximal %d Zeichen)" +#: utils/misc/guc.c:591 +msgid "Client Connection Defaults / Locale and Formatting" +msgstr "Standardeinstellungen für Clientverbindungen / Locale und Formatierung" -#: access/transam/xlog.c:5350 -#, c-format -msgid "recovery_target_name = '%s'" -msgstr "recovery_target_name = '%s'" +#: utils/misc/guc.c:593 +msgid "Client Connection Defaults / Other Defaults" +msgstr "Standardeinstellungen für Clientverbindungen / Andere" -#: access/transam/xlog.c:5363 -#, c-format -msgid "recovery_target_inclusive = %s" -msgstr "recovery_target_inclusive = %s" +#: utils/misc/guc.c:595 +msgid "Lock Management" +msgstr "Sperrenverwaltung" -#: access/transam/xlog.c:5372 -#, c-format -msgid "standby_mode = '%s'" -msgstr "standby_mode = '%s'" +#: utils/misc/guc.c:597 +msgid "Version and Platform Compatibility" +msgstr "Versions- und Plattformkompatibilität" -#: access/transam/xlog.c:5378 -#, c-format -msgid "primary_conninfo = '%s'" -msgstr "primary_conninfo = '%s'" +#: utils/misc/guc.c:599 +msgid "Version and Platform Compatibility / Previous PostgreSQL Versions" +msgstr "Versions- und Plattformkompatibilität / Frühere PostgreSQL-Versionen" -#: access/transam/xlog.c:5385 -#, c-format -msgid "trigger_file = '%s'" -msgstr "trigger_file = '%s'" +#: utils/misc/guc.c:601 +msgid "Version and Platform Compatibility / Other Platforms and Clients" +msgstr "Versions- und Plattformkompatibilität / Andere Plattformen und Clients" -#: access/transam/xlog.c:5390 -#, c-format -msgid "unrecognized recovery parameter \"%s\"" -msgstr "unbekannter Recovery-Parameter »%s«" +#: utils/misc/guc.c:603 +msgid "Error Handling" +msgstr "Fehlerbehandlung" -#: access/transam/xlog.c:5401 -#, 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" +#: utils/misc/guc.c:605 +msgid "Preset Options" +msgstr "Voreingestellte Optionen" -#: access/transam/xlog.c:5403 -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." +#: utils/misc/guc.c:607 +msgid "Customized Options" +msgstr "Angepasste Optionen" -#: access/transam/xlog.c:5409 -#, 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" +#: utils/misc/guc.c:609 +msgid "Developer Options" +msgstr "Entwickleroptionen" -#: access/transam/xlog.c:5429 -#, c-format -msgid "recovery target timeline %u does not exist" -msgstr "recovery_target_timeline %u existiert nicht" +#: utils/misc/guc.c:663 +msgid "Enables the planner's use of sequential-scan plans." +msgstr "Ermöglicht sequenzielle Scans in Planer." -#: access/transam/xlog.c:5559 -msgid "archive recovery complete" -msgstr "Wiederherstellung aus Archiv abgeschlossen" +#: utils/misc/guc.c:672 +msgid "Enables the planner's use of index-scan plans." +msgstr "Ermöglicht Index-Scans im Planer." -#: access/transam/xlog.c:5677 -#, c-format -msgid "recovery stopping after commit of transaction %u, time %s" -msgstr "Wiederherstellung beendet nach Commit der Transaktion %u, Zeit %s" +#: utils/misc/guc.c:681 +msgid "Enables the planner's use of bitmap-scan plans." +msgstr "Ermöglicht Bitmap-Scans im Planer." -#: access/transam/xlog.c:5682 -#, c-format -msgid "recovery stopping before commit of transaction %u, time %s" -msgstr "Wiederherstellung beendet vor Commit der Transaktion %u, Zeit %s" +#: utils/misc/guc.c:690 +msgid "Enables the planner's use of TID scan plans." +msgstr "Ermöglicht TID-Scans im Planer." -#: access/transam/xlog.c:5690 -#, c-format -msgid "recovery stopping after abort of transaction %u, time %s" -msgstr "Wiederherstellung beendet nach Abbruch der Transaktion %u, Zeit %s" +#: utils/misc/guc.c:699 +msgid "Enables the planner's use of explicit sort steps." +msgstr "Ermöglicht Sortierschritte im Planer." -#: access/transam/xlog.c:5695 -#, c-format -msgid "recovery stopping before abort of transaction %u, time %s" -msgstr "Wiederherstellung beendet vor Abbruch der Transaktion %u, Zeit %s" +#: utils/misc/guc.c:708 +msgid "Enables the planner's use of hashed aggregation plans." +msgstr "Ermöglicht Hash-Aggregierung im Planer." -#: access/transam/xlog.c:5704 -#, c-format -msgid "recovery stopping at restore point \"%s\", time %s" -msgstr "Wiederherstellung beendet bei Restore-Punkt »%s«, Zeit %s" +#: utils/misc/guc.c:717 +msgid "Enables the planner's use of materialization." +msgstr "Ermöglicht Materialisierung im Planer." -#: access/transam/xlog.c:5732 -msgid "recovery has paused" -msgstr "Wiederherstellung wurde pausiert" +#: utils/misc/guc.c:726 +msgid "Enables the planner's use of nested-loop join plans." +msgstr "Ermöglicht Nested-Loop-Verbunde im Planer." -#: access/transam/xlog.c:5733 -msgid "Execute pg_xlog_replay_resume() to continue." -msgstr "Führen Sie pg_xlog_replay_resume() aus um fortzusetzen." +#: utils/misc/guc.c:735 +msgid "Enables the planner's use of merge join plans." +msgstr "Ermöglicht Merge-Verbunde im Planer." -#: access/transam/xlog.c:5776 access/transam/xlog.c:5798 -#: access/transam/xlog.c:5820 -msgid "must be superuser to control recovery" -msgstr "nur Superuser können die Wiederherstellung kontrollieren" +#: utils/misc/guc.c:744 +msgid "Enables the planner's use of hash join plans." +msgstr "Ermöglicht Hash-Verbunde im Planer." -#: access/transam/xlog.c:5781 access/transam/xlog.c:5803 -#: access/transam/xlog.c:5825 -msgid "recovery is not in progress" -msgstr "Wiederherstellung läuft nicht" +#: utils/misc/guc.c:753 +msgid "Enables genetic query optimization." +msgstr "Ermöglicht genetische Anfrageoptimierung." -#: 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." +#: utils/misc/guc.c:754 +msgid "This algorithm attempts to do planning without exhaustive searching." msgstr "" -"Wiederherstellungskontrollfunktionen können nur während der " -"Wiederherstellung ausgeführt werden." +"Dieser Algorithmus versucht das Planen ohne erschöpfende Suche durchzuführen." -#: 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 "" -"Hot Standby ist nicht möglich, weil %s = %d eine niedrigere Einstellung als " -"auf dem Masterserver ist (Wert dort war %d)" +#: utils/misc/guc.c:764 +msgid "Shows whether the current user is a superuser." +msgstr "Zeigt, ob der aktuelle Benutzer ein Superuser ist." -#: access/transam/xlog.c:5940 -msgid "WAL was generated with wal_level=minimal, data may be missing" -msgstr "WAL wurde mit wal_level=minimal erzeugt, eventuell fehlen Daten" +#: utils/misc/guc.c:774 +msgid "Enables advertising the server via Bonjour." +msgstr "Ermöglicht die Bekanntgabe des Servers mit Bonjour." -#: access/transam/xlog.c:5941 -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." +#: utils/misc/guc.c:783 +msgid "Enables SSL connections." +msgstr "Ermöglicht SSL-Verbindungen." -#: 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 "" -"Hot Standby ist nicht möglich, weil wal_level auf dem Masterserver nicht auf " -"»hot_standby« gesetzt wurde" +#: utils/misc/guc.c:792 +msgid "Forces synchronization of updates to disk." +msgstr "Erzwingt die Synchronisierung von Aktualisierungen auf Festplatte." -#: access/transam/xlog.c:5953 +#: utils/misc/guc.c:793 msgid "" -"Either set wal_level to \"hot_standby\" on the master, or turn off " -"hot_standby here." +"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 "" -"Setzen Sie entweder wal_level auf »hot_standby« auf dem Master oder schalten " -"Sie hot_standby hier aus." - -#: access/transam/xlog.c:6000 -msgid "control file contains invalid data" -msgstr "Kontrolldatei enthält ungültige Daten" - -#: access/transam/xlog.c:6004 -#, c-format -msgid "database system was shut down at %s" -msgstr "Datenbanksystem wurde am %s heruntergefahren" +"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." -#: access/transam/xlog.c:6008 -#, c-format -msgid "database system was shut down in recovery at %s" -msgstr "" -"Datenbanksystem wurde während der Wiederherstellung am %s heruntergefahren" +#: utils/misc/guc.c:804 +msgid "Continues processing past damaged page headers." +msgstr "Setzt die Verarbeitung trotz kaputter Seitenköpfe fort." -#: access/transam/xlog.c:6012 -#, c-format -msgid "database system shutdown was interrupted; last known up at %s" +#: utils/misc/guc.c:805 +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 "" -"Datenbanksystem wurde beim Herunterfahren unterbrochen; letzte bekannte " -"Aktion am %s" +"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." -#: access/transam/xlog.c:6016 -#, c-format -msgid "database system was interrupted while in recovery at %s" -msgstr "Datenbanksystem wurde während der Wiederherstellung am %s unterbrochen" +#: utils/misc/guc.c:818 +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." -#: access/transam/xlog.c:6018 +#: utils/misc/guc.c:819 msgid "" -"This probably means that some data is corrupted and you will have to use the " -"last backup for recovery." +"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 "" -"Das bedeutet wahrscheinlich, dass einige Daten verfälscht sind und Sie die " -"letzte Datensicherung zur Wiederherstellung verwenden müssen." +"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." -#: access/transam/xlog.c:6022 -#, 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" +#: utils/misc/guc.c:831 +msgid "Runs the server silently." +msgstr "Startet den Server ohne Ausgabe." -#: access/transam/xlog.c:6024 +#: utils/misc/guc.c:832 msgid "" -"If this has occurred more than once some data might be corrupted and you " -"might need to choose an earlier recovery target." +"If this parameter is set, the server will automatically run in the " +"background and any controlling terminals are dissociated." 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." +"Wenn dieser Parameter gesetzt ist, dann wird der Server automatisch im " +"Hintergrund gestartet und alle kontrollierenden Terminals werden abgetrennt." -#: access/transam/xlog.c:6028 -#, c-format -msgid "database system was interrupted; last known up at %s" -msgstr "Datenbanksystem wurde unterbrochen; letzte bekannte Aktion am %s" +#: utils/misc/guc.c:841 +msgid "Logs each checkpoint." +msgstr "Schreibt jeden Checkpoint in den Log." -#: access/transam/xlog.c:6077 -#, c-format -msgid "requested timeline %u is not a child of database system timeline %u" -msgstr "angeforderte Timeline %u ist kein Kind der Datenbanksystem-Timeline %u" +#: utils/misc/guc.c:850 +msgid "Logs each successful connection." +msgstr "Schreibt jede erfolgreiche Verbindung in den Log." -#: access/transam/xlog.c:6095 -msgid "entering standby mode" -msgstr "Standby-Modus eingeschaltet" +#: utils/misc/guc.c:859 +msgid "Logs end of a session, including duration." +msgstr "Schreibt jedes Verbindungsende mit Sitzungszeit in den Log." -#: access/transam/xlog.c:6098 -#, c-format -msgid "starting point-in-time recovery to XID %u" -msgstr "starte Point-in-Time-Recovery bis XID %u" +#: utils/misc/guc.c:868 +msgid "Turns on various assertion checks." +msgstr "Schaltet diverse Assertion-Prüfungen ein." -#: access/transam/xlog.c:6102 -#, c-format -msgid "starting point-in-time recovery to %s" -msgstr "starte Point-in-Time-Recovery bis %s" +#: utils/misc/guc.c:869 +msgid "This is a debugging aid." +msgstr "Das ist eine Debug-Hilfe." -#: access/transam/xlog.c:6106 -#, c-format -msgid "starting point-in-time recovery to \"%s\"" -msgstr "starte Point-in-Time-Recovery bis »%s«" +#: utils/misc/guc.c:883 +msgid "Terminate session on any error." +msgstr "Sitzung bei jedem Fehler abbrechen." -#: access/transam/xlog.c:6110 -msgid "starting archive recovery" -msgstr "starte Wiederherstellung aus Archiv" +#: utils/misc/guc.c:892 +msgid "Reinitialize server after backend crash." +msgstr "Server nach Absturz eines Serverprozesses reinitialisieren." -#: access/transam/xlog.c:6132 access/transam/xlog.c:6172 -#, c-format -msgid "checkpoint record is at %X/%X" -msgstr "Checkpoint-Eintrag ist bei %X/%X" +#: utils/misc/guc.c:902 +msgid "Logs the duration of each completed SQL statement." +msgstr "Loggt die Dauer jeder abgeschlossenen SQL-Anweisung." -#: access/transam/xlog.c:6146 -msgid "could not find redo location referenced by checkpoint record" -msgstr "" -"konnte die vom Checkpoint-Datensatz referenzierte Redo-Position nicht finden" +#: utils/misc/guc.c:911 +msgid "Logs each query's parse tree." +msgstr "Scheibt den Parsebaum jeder Anfrage in den Log." -#: 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 "" -"Wenn Sie kein Backup wiederherstellen, versuchen Sie, die Datei »%s/" -"backup_label« zu löschen." +#: utils/misc/guc.c:920 +msgid "Logs each query's rewritten parse tree." +msgstr "Schreibt den umgeschriebenen Parsebaum jeder Anfrage in den Log." -#: access/transam/xlog.c:6153 -msgid "could not locate required checkpoint record" -msgstr "konnte den nötigen Checkpoint-Datensatz nicht finden" +#: utils/misc/guc.c:929 +msgid "Logs each query's execution plan." +msgstr "Schreibt der Ausführungsplan jeder Anfrage in den Log." -#: access/transam/xlog.c:6182 access/transam/xlog.c:6197 -msgid "could not locate a valid checkpoint record" -msgstr "konnte keinen gültigen Checkpoint-Datensatz finden" +#: utils/misc/guc.c:938 +msgid "Indents parse and plan tree displays." +msgstr "Rückt die Anzeige von Parse- und Planbäumen ein." -#: access/transam/xlog.c:6191 -#, c-format -msgid "using previous checkpoint record at %X/%X" -msgstr "verwende vorherigen Checkpoint-Eintrag bei %X/%X" +#: utils/misc/guc.c:947 +msgid "Writes parser performance statistics to the server log." +msgstr "Schreibt Parser-Leistungsstatistiken in den Serverlog." -#: access/transam/xlog.c:6206 -#, c-format -msgid "redo record is at %X/%X; shutdown %s" -msgstr "Redo-Eintrag ist bei %X/%X; Shutdown %s" +#: utils/misc/guc.c:956 +msgid "Writes planner performance statistics to the server log." +msgstr "Schreibt Planer-Leistungsstatistiken in den Serverlog." -#: access/transam/xlog.c:6210 -#, c-format -msgid "next transaction ID: %u/%u; next OID: %u" -msgstr "nächste Transaktions-ID: %u/%u; nächste OID: %u" +#: utils/misc/guc.c:965 +msgid "Writes executor performance statistics to the server log." +msgstr "Schreibt Executor-Leistungsstatistiken in den Serverlog." -#: access/transam/xlog.c:6214 -#, c-format -msgid "next MultiXactId: %u; next MultiXactOffset: %u" -msgstr "nächste MultiXactId: %u; nächster MultiXactOffset: %u" +#: utils/misc/guc.c:974 +msgid "Writes cumulative performance statistics to the server log." +msgstr "Schreibt Gesamtleistungsstatistiken in den Serverlog." -#: access/transam/xlog.c:6217 -#, c-format -msgid "oldest unfrozen transaction ID: %u, in database %u" -msgstr "älteste nicht eingefrorene Transaktions-ID: %u, in Datenbank %u" +#: utils/misc/guc.c:984 utils/misc/guc.c:1049 utils/misc/guc.c:1059 +#: utils/misc/guc.c:1069 utils/misc/guc.c:1079 utils/misc/guc.c:1804 +#: utils/misc/guc.c:1814 +msgid "No description available." +msgstr "Keine Beschreibung verfügbar." -#: access/transam/xlog.c:6221 -msgid "invalid next transaction ID" -msgstr "ungültige nächste Transaktions-ID" +#: utils/misc/guc.c:996 +msgid "Collects information about executing commands." +msgstr "Sammelt Informationen über ausgeführte Befehle." -#: access/transam/xlog.c:6240 -msgid "invalid redo in checkpoint record" -msgstr "ungültiges Redo im Checkpoint-Datensatz" +#: utils/misc/guc.c:997 +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." -#: access/transam/xlog.c:6251 -msgid "invalid redo record in shutdown checkpoint" -msgstr "ungültiger Redo-Datensatz im Shutdown-Checkpoint" +#: utils/misc/guc.c:1007 +msgid "Collects statistics on database activity." +msgstr "Sammelt Statistiken über Datenbankaktivität." + +#: utils/misc/guc.c:1017 +msgid "Updates the process title to show the active SQL command." +msgstr "" +"Der Prozesstitel wird aktualisiert, um den aktuellen SQL-Befehl anzuzeigen." -#: access/transam/xlog.c:6281 +#: utils/misc/guc.c:1018 msgid "" -"database system was not properly shut down; automatic recovery in progress" +"Enables updating of the process title every time a new SQL command is " +"received by the server." msgstr "" -"Datenbanksystem wurde nicht richtig heruntergefahren; automatische " -"Wiederherstellung läuft" +"Ermöglicht das Aktualisieren des Prozesstitels bei jedem von Server " +"empfangenen neuen SQL-Befehl." -#: access/transam/xlog.c:6353 -msgid "initializing for hot standby" -msgstr "initialisiere für Hot Standby" +#: utils/misc/guc.c:1027 +msgid "Starts the autovacuum subprocess." +msgstr "Startet den Autovacuum-Prozess." -#: access/transam/xlog.c:6481 -#, c-format -msgid "redo starts at %X/%X" -msgstr "Redo beginnt bei %X/%X" +#: utils/misc/guc.c:1037 +msgid "Generates debugging output for LISTEN and NOTIFY." +msgstr "Erzeugt Debug-Ausgabe für LISTEN und NOTIFY." -#: access/transam/xlog.c:6596 -#, c-format -msgid "redo done at %X/%X" -msgstr "Redo fertig bei %X/%X" +#: utils/misc/guc.c:1091 +msgid "Logs long lock waits." +msgstr "Schreibt Meldungen über langes Warten auf Sperren in den Log." -#: access/transam/xlog.c:6601 access/transam/xlog.c:8178 -#, c-format -msgid "last completed transaction was at log time %s" -msgstr "letzte vollständige Transaktion war bei Logzeit %s" +#: utils/misc/guc.c:1101 +msgid "Logs the host name in the connection logs." +msgstr "Schreibt den Hostnamen jeder Verbindung in den Log." -#: access/transam/xlog.c:6609 -msgid "redo is not required" -msgstr "Redo nicht nötig" +#: utils/misc/guc.c:1102 +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." -#: access/transam/xlog.c:6657 -msgid "requested recovery stop point is before consistent recovery point" -msgstr "angeforderter Recovery-Endpunkt ist vor konsistentem Recovery-Punkt" +#: utils/misc/guc.c:1113 +msgid "Causes subtables to be included by default in various commands." +msgstr "Schließt abgeleitete Tabellen in diverse Befehle automatisch ein." -#: access/transam/xlog.c:6673 -msgid "WAL ends before end of online backup" -msgstr "WAL endet vor dem Ende der Online-Sicherung" +#: utils/misc/guc.c:1122 +msgid "Encrypt passwords." +msgstr "Verschlüsselt Passwörter." -#: access/transam/xlog.c:6674 +#: utils/misc/guc.c:1123 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." +"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 "" -"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." +"Wenn in CREATE USER oder ALTER USER ein Passwort ohne ENCRYPTED oder " +"UNENCRYPTED angegeben ist, bestimmt dieser Parameter, ob das Passwort " +"verschlüsselt wird." -#: access/transam/xlog.c:6677 -msgid "WAL ends before consistent recovery point" -msgstr "WAL endet vor einem konsistenten Wiederherstellungspunkt" +#: utils/misc/guc.c:1133 +msgid "Treats \"expr=NULL\" as \"expr IS NULL\"." +msgstr "Behandelt »ausdruck=NULL« als »ausdruck IS NULL«." -#: access/transam/xlog.c:6699 -#, c-format -msgid "selected new timeline ID: %u" -msgstr "gewählte neue Timeline-ID: %u" +#: utils/misc/guc.c:1134 +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." -#: access/transam/xlog.c:6941 -#, c-format -msgid "consistent recovery state reached at %X/%X" -msgstr "konsistenter Wiederherstellungszustand erreicht bei %X/%X" +#: utils/misc/guc.c:1146 +msgid "Enables per-database user names." +msgstr "Ermöglicht Datenbank-lokale Benutzernamen." -#: access/transam/xlog.c:7107 -msgid "invalid primary checkpoint link in control file" -msgstr "ungültige primäre Checkpoint-Verknüpfung in Kontrolldatei" +#: utils/misc/guc.c:1156 +msgid "This parameter doesn't do anything." +msgstr "Dieser Parameter macht nichts." -#: access/transam/xlog.c:7111 -msgid "invalid secondary checkpoint link in control file" -msgstr "ungültige sekundäre Checkpoint-Verknüpfung in Kontrolldatei" +#: utils/misc/guc.c:1157 +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." -#: access/transam/xlog.c:7115 -msgid "invalid checkpoint link in backup_label file" -msgstr "ungültige Checkpoint-Verknüpfung in backup_label-Datei" +#: utils/misc/guc.c:1166 +msgid "Sets the default read-only status of new transactions." +msgstr "" +"Setzt den Standardwert für die Read-Only-Einstellung einer neuen Transaktion." -#: access/transam/xlog.c:7129 -msgid "invalid primary checkpoint record" -msgstr "ungültiger primärer Checkpoint-Datensatz" +#: utils/misc/guc.c:1175 +msgid "Sets the current transaction's read-only status." +msgstr "Setzt die Read-Only-Einstellung der aktuellen Transaktion." -#: access/transam/xlog.c:7133 -msgid "invalid secondary checkpoint record" -msgstr "ungültiger sekundärer Checkpoint-Datensatz" +#: utils/misc/guc.c:1185 +msgid "Sets the default deferrable status of new transactions." +msgstr "" +"Setzt den Standardwert für die Deferrable-Einstellung einer neuen " +"Transaktion." -#: access/transam/xlog.c:7137 -msgid "invalid checkpoint record" -msgstr "ungültiger Checkpoint-Datensatz" +#: utils/misc/guc.c:1194 +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." -#: access/transam/xlog.c:7148 -msgid "invalid resource manager ID in primary checkpoint record" -msgstr "ungültige Resource-Manager-ID im primären Checkpoint-Datensatz" +#: utils/misc/guc.c:1204 +msgid "Check function bodies during CREATE FUNCTION." +msgstr "Prüft Funktionskörper bei der Ausführung von CREATE FUNCTION." -#: access/transam/xlog.c:7152 -msgid "invalid resource manager ID in secondary checkpoint record" -msgstr "ungültige Resource-Manager-ID im sekundären Checkpoint-Datensatz" +#: utils/misc/guc.c:1213 +msgid "Enable input of NULL elements in arrays." +msgstr "Ermöglicht die Eingabe von NULL-Elementen in Arrays." -#: access/transam/xlog.c:7156 -msgid "invalid resource manager ID in checkpoint record" -msgstr "ungültige Resource-Manager-ID im Checkpoint-Datensatz" +#: utils/misc/guc.c:1214 +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." -#: access/transam/xlog.c:7168 -msgid "invalid xl_info in primary checkpoint record" -msgstr "ungültige xl_info im primären Checkpoint-Datensatz" +#: utils/misc/guc.c:1224 +msgid "Create new tables with OIDs by default." +msgstr "Erzeugt neue Tabellen standardmäßig mit OIDs." -#: access/transam/xlog.c:7172 -msgid "invalid xl_info in secondary checkpoint record" -msgstr "ungültige xl_info im sekundären Checkpoint-Datensatz" +#: utils/misc/guc.c:1233 +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." -#: access/transam/xlog.c:7176 -msgid "invalid xl_info in checkpoint record" -msgstr "ungültige xl_info im Checkpoint-Datensatz" +#: utils/misc/guc.c:1242 +msgid "Truncate existing log files of same name during log rotation." +msgstr "Kürzt existierende Logdateien mit dem selben Namen beim Rotieren." -#: access/transam/xlog.c:7188 -msgid "invalid length of primary checkpoint record" -msgstr "ungültige Länge des primären Checkpoint-Datensatzes" +#: utils/misc/guc.c:1253 +msgid "Emit information about resource usage in sorting." +msgstr "Gibt Informationen über die Ressourcenverwendung beim Sortieren aus." -#: access/transam/xlog.c:7192 -msgid "invalid length of secondary checkpoint record" -msgstr "ungültige Länge des sekundären Checkpoint-Datensatzes" +#: utils/misc/guc.c:1267 +msgid "Generate debugging output for synchronized scanning." +msgstr "Erzeugt Debug-Ausgabe für synchronisiertes Scannen." -#: access/transam/xlog.c:7196 -msgid "invalid length of checkpoint record" -msgstr "ungültige Länge des Checkpoint-Datensatzes" +#: utils/misc/guc.c:1282 +msgid "Enable bounded sorting using heap sort." +msgstr "Ermöglicht Bounded Sorting mittels Heap-Sort." -#: access/transam/xlog.c:7358 -msgid "shutting down" -msgstr "fahre herunter" +#: utils/misc/guc.c:1295 +msgid "Emit WAL-related debugging output." +msgstr "Gibt diverse Debug-Meldungen über WAL aus." -#: access/transam/xlog.c:7380 -msgid "database system is shut down" -msgstr "Datenbanksystem ist heruntergefahren" +#: utils/misc/guc.c:1307 +msgid "Datetimes are integer based." +msgstr "Datum/Zeit verwendet intern ganze Zahlen." -#: access/transam/xlog.c:7806 +#: utils/misc/guc.c:1322 msgid "" -"concurrent transaction log activity while database system is shutting down" +"Sets whether Kerberos and GSSAPI user names should be treated as case-" +"insensitive." msgstr "" -"gleichzeitige Transaktionslog-Aktivität während das Datenbanksystem " -"herunterfährt" +"Bestimmt, ob Groß-/Kleinschreibung bei Kerberos- und GSSAPI-Benutzernamen " +"ignoriert werden soll." -#: access/transam/xlog.c:8039 -msgid "skipping restartpoint, recovery has already ended" -msgstr "Restart-Punkt übersprungen, Wiederherstellung ist bereits beendet" +#: utils/misc/guc.c:1332 +msgid "Warn about backslash escapes in ordinary string literals." +msgstr "Warnt bei Backslash-Escapes in normalen Zeichenkettenkonstanten." -#: access/transam/xlog.c:8064 -#, c-format -msgid "skipping restartpoint, already performed at %X/%X" -msgstr "Restart-Punkt wird übersprungen, schon bei %X/%X erledigt" +#: utils/misc/guc.c:1342 +msgid "Causes '...' strings to treat backslashes literally." +msgstr "" +"Bewirkt, dass Zeichenketten der Art '...' Backslashes als normales Zeichen " +"behandeln." -#: access/transam/xlog.c:8176 -#, c-format -msgid "recovery restart point at %X/%X" -msgstr "Recovery-Restart-Punkt bei %X/%X" +#: utils/misc/guc.c:1353 +msgid "Enable synchronized sequential scans." +msgstr "Ermöglicht synchronisierte sequenzielle Scans." -#: access/transam/xlog.c:8276 -#, c-format -msgid "restore point \"%s\" created at %X/%X" -msgstr "Restore-Punkt »%s« erzeugt bei %X/%X" +#: utils/misc/guc.c:1363 +msgid "Allows archiving of WAL files using archive_command." +msgstr "Erlaubt die Archivierung von WAL-Dateien mittels archive_command." + +#: utils/misc/guc.c:1373 +msgid "Allows connections and queries during recovery." +msgstr "Erlaubt Verbindungen und Anfragen während der Wiederherstellung." -#: access/transam/xlog.c:8373 -msgid "online backup was cancelled, recovery cannot continue" +#: utils/misc/guc.c:1383 +msgid "" +"Allows feedback from a hot standby to the primary that will avoid query " +"conflicts." msgstr "" -"Online-Sicherung wurde storniert, Wiederherstellung kann nicht fortgesetzt " -"werden" +"Erlaubt Rückmeldungen von einem Hot Standby an den Primärserver, um " +"Anfragekonflikte zu vermeiden." -#: access/transam/xlog.c:8425 -#, c-format -msgid "unexpected timeline ID %u (after %u) in checkpoint record" -msgstr "unerwartete Timeline-ID %u (nach %u) im Checkpoint-Datensatz" +#: utils/misc/guc.c:1393 +msgid "Allows modifications of the structure of system tables." +msgstr "Erlaubt Änderungen an der Struktur von Systemtabellen." -#: access/transam/xlog.c:8461 -#, c-format -msgid "unexpected timeline ID %u (should be %u) in checkpoint record" -msgstr "unerwartete Timeline-ID %u (sollte %u sein) im Checkpoint-Datensatz" +#: utils/misc/guc.c:1404 +msgid "Disables reading from system indexes." +msgstr "Schaltet das Lesen aus Systemindexen ab." -#: access/transam/xlog.c:8725 access/transam/xlog.c:8749 -#, c-format -msgid "could not fsync log file %u, segment %u: %m" -msgstr "konnte Logdatei %u, Segment %u nicht fsyncen: %m" +#: utils/misc/guc.c:1405 +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." -#: access/transam/xlog.c:8757 -#, c-format -msgid "could not fsync write-through log file %u, segment %u: %m" -msgstr "konnte Write-Through-Logdatei %u, Segment %u nicht fsyncen: %m" +#: utils/misc/guc.c:1416 +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." -#: access/transam/xlog.c:8766 -#, c-format -msgid "could not fdatasync log file %u, segment %u: %m" -msgstr "konnte Logdatei %u, Segment %u nicht fdatasyncen: %m" +#: utils/misc/guc.c:1417 +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." -#: access/transam/xlog.c:8847 access/transam/xlog.c:9123 -#, fuzzy -msgid "must be superuser or replication role to run a backup" -msgstr "nur Superuser können ein Backup ausführen" +#: utils/misc/guc.c:1427 +msgid "When generating SQL fragments, quote all identifiers." +msgstr "Wenn SQL-Fragmente erzeugt werden, alle Bezeichner quoten." -#: 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 "Wiederherstellung läuft" +#: utils/misc/guc.c:1446 +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." -#: 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." +#: utils/misc/guc.c:1457 +msgid "Waits N seconds on connection startup after authentication." msgstr "" -"während der Wiederherstellung können keine WAL-Kontrollfunktionen ausgeführt " -"werden" +"Wartet beim Starten einer Verbindung N Sekunden nach der Authentifizierung." -#: access/transam/xlog.c:8858 access/transam/xlog.c:9134 -msgid "WAL level not sufficient for making an online backup" -msgstr "WAL-Level nicht ausreichend, um Online-Sicherung durchzuführen" +#: utils/misc/guc.c:1458 utils/misc/guc.c:1907 +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:1467 +msgid "Sets the default statistics target." +msgstr "Setzt das voreingestellte Statistikziel." -#: access/transam/xlog.c:8859 access/transam/xlog.c:9135 -#: access/transam/xlog.c:9430 +#: utils/misc/guc.c:1468 msgid "" -"wal_level must be set to \"archive\" or \"hot_standby\" at server start." +"This applies to table columns that have not had a column-specific target set " +"via ALTER TABLE SET STATISTICS." msgstr "" -"wal_level muss beim Serverstart auf »archive« oder »hot_standby« gesetzt " -"werden." +"Diese Einstellung gilt für Tabellenspalten, für die kein spaltenspezifisches " +"Ziel mit ALTER TABLE SET STATISTICS gesetzt worden ist." -#: access/transam/xlog.c:8864 -#, c-format -msgid "backup label too long (max %d bytes)" -msgstr "Backup-Label zu lang (maximal %d Bytes)" +#: utils/misc/guc.c:1477 +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." -#: access/transam/xlog.c:8905 access/transam/xlog.c:9006 -msgid "a backup is already in progress" -msgstr "ein Backup läuft bereits" +#: utils/misc/guc.c:1479 +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." -#: access/transam/xlog.c:8906 -msgid "Run pg_stop_backup() and try again." -msgstr "Führen Sie pg_stop_backup() aus und versuchen Sie es nochmal." +#: utils/misc/guc.c:1489 +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." -#: access/transam/xlog.c:9007 -#, c-format +#: utils/misc/guc.c:1491 msgid "" -"If you're sure there is no backup in progress, remove file \"%s\" and try " -"again." +"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 "" -"Wenn Sie sicher sind, dass noch kein Backup läuft, entfernen Sie die Datei " -"»%s« und versuchen Sie es noch einmal." +"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." -#: access/transam/xlog.c:9021 access/transam/xlog.c:9267 -#, c-format -msgid "could not write file \"%s\": %m" -msgstr "konnte Datei »%s« nicht schreiben: %m" +#: utils/misc/guc.c:1501 +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." -#: access/transam/xlog.c:9179 -msgid "a backup is not in progress" -msgstr "es läuft kein Backup" +#: utils/misc/guc.c:1510 +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." -#: access/transam/xlog.c:9218 access/transam/xlog.c:9745 -#: access/transam/xlog.c:9751 -#, c-format -msgid "invalid data in file \"%s\"" -msgstr "ungültige Daten in Datei »%s«" +#: utils/misc/guc.c:1519 +msgid "GEQO: number of individuals in the population." +msgstr "GEQO: Anzahl der Individien in der Bevölkerung." + +#: utils/misc/guc.c:1520 utils/misc/guc.c:1529 +msgid "Zero selects a suitable default value." +msgstr "Null wählt einen passenden Vorgabewert." + +#: utils/misc/guc.c:1528 +msgid "GEQO: number of iterations of the algorithm." +msgstr "GEQO: Anzahl der Iterationen im Algorithmus." + +#: utils/misc/guc.c:1539 +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." -#: access/transam/xlog.c:9316 +#: utils/misc/guc.c:1550 msgid "" -"pg_stop_backup cleanup done, waiting for required WAL segments to be archived" +"Sets the maximum delay before canceling queries when a hot standby server is " +"processing archived WAL data." msgstr "" -"Aufräumen nach pg_stop_backup beendet, warte bis die benötigten WAL-Segmente " -"archiviert sind" +"Setzt die maximale Verzögerung bevor Anfragen storniert werden, wenn ein Hot-" +"Standby-Server archivierte WAL-Daten verarbeitet." -#: access/transam/xlog.c:9326 -#, c-format +#: utils/misc/guc.c:1561 msgid "" -"pg_stop_backup still waiting for all required WAL segments to be archived " -"(%d seconds elapsed)" +"Sets the maximum delay before canceling queries when a hot standby server is " +"processing streamed WAL data." msgstr "" -"pg_stop_backup wartet immer noch, bis alle benötigten WAL-Segmente " -"archiviert sind (%d Sekunden abgelaufen)" +"Setzt die maximale Verzögerung bevor Anfragen storniert werden, wenn ein Hot-" +"Standby-Server gestreamte WAL-Daten verarbeitet." -#: access/transam/xlog.c:9328 +#: utils/misc/guc.c:1572 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." +"Sets the maximum interval between WAL receiver status reports to the primary." msgstr "" -"Prüfen Sie, ob das archive_command korrekt ausführt. pg_stop_backup kann " -"sicher abgebrochen werden, aber die Datenbank ist nicht benutzbar ohne die " -"fehlenden WAL-Segmente." +"Setzt das maximale Intervall zwischen Statusberichten des WAL-Receivers an " +"den Primärserver." -#: access/transam/xlog.c:9335 -msgid "pg_stop_backup complete, all required WAL segments have been archived" -msgstr "" -"pg_stop_backup abgeschlossen, alle benötigten WAL-Segmente wurden archiviert" +#: utils/misc/guc.c:1583 +msgid "Sets the maximum number of concurrent connections." +msgstr "Setzt die maximale Anzahl gleichzeitiger Verbindungen." -#: 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 "" -"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" +#: utils/misc/guc.c:1593 +msgid "Sets the number of connection slots reserved for superusers." +msgstr "Setzt die Anzahl der für Superuser reservierten Verbindungen." -#: access/transam/xlog.c:9386 -msgid "must be superuser to switch transaction log files" -msgstr "nur Superuser können Transaktionslogdateien umschalten" +#: utils/misc/guc.c:1607 +msgid "Sets the number of shared memory buffers used by the server." +msgstr "Setzt die Anzahl der vom Server verwendeten Shared-Memory-Puffer." -#: access/transam/xlog.c:9418 -msgid "must be superuser to create a restore point" -msgstr "nur Superuser können Restore-Punkte anlegen" +#: utils/misc/guc.c:1618 +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." -#: access/transam/xlog.c:9429 -msgid "WAL level not sufficient for creating a restore point" -msgstr "WAL-Level nicht ausreichend, um Restore-Punkt anzulegen" +#: utils/misc/guc.c:1629 +msgid "Sets the TCP port the server listens on." +msgstr "Setzt den TCP-Port, auf dem der Server auf Verbindungen wartet." -#: access/transam/xlog.c:9437 -#, c-format -msgid "value too long for restore point (maximum %d characters)" -msgstr "Wert zu lang für Restore-Punkt (maximal %d Zeichen)" +#: utils/misc/guc.c:1639 +msgid "Sets the access permissions of the Unix-domain socket." +msgstr "Setzt die Zugriffsrechte für die Unix-Domain-Socket." -#: access/transam/xlog.c:9605 -msgid "pg_xlogfile_name_offset() cannot be executed during recovery." +#: utils/misc/guc.c:1640 +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 "" -"pg_xlogfile_name_offset() kann nicht während der Wiederherstellung " -"ausgeführt werden." +"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.)" -#: access/transam/xlog.c:9615 access/transam/xlog.c:9687 -#, c-format -msgid "could not parse transaction log location \"%s\"" -msgstr "konnte Transaktionslogposition »%s« nicht interpretieren" +#: utils/misc/guc.c:1654 +msgid "Sets the file permissions for log files." +msgstr "Setzt die Dateizugriffsrechte für Logdateien." -#: access/transam/xlog.c:9680 -msgid "pg_xlogfile_name() cannot be executed during recovery." +#: utils/misc/guc.c:1655 +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 "" -"pg_xlogfile_name() kann nicht während der Wiederherstellung ausgeführt " -"werden." +"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.)" -#: access/transam/xlog.c:9777 -#, c-format -msgid "xlog redo %s" -msgstr "xlog redo %s" +#: utils/misc/guc.c:1668 +msgid "Sets the maximum memory to be used for query workspaces." +msgstr "Setzt die maximale Speichergröße für Anfrage-Arbeitsbereiche." -#: access/transam/xlog.c:9817 -msgid "online backup mode cancelled" -msgstr "Online-Sicherungsmodus storniert" +#: utils/misc/guc.c:1669 +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." -#: access/transam/xlog.c:9818 -#, c-format -msgid "\"%s\" was renamed to \"%s\"." -msgstr "»%s« wurde in »%s« umbenannt." +#: utils/misc/guc.c:1681 +msgid "Sets the maximum memory to be used for maintenance operations." +msgstr "Setzt die maximale Speichergröße für Wartungsoperationen." -#: access/transam/xlog.c:9825 -msgid "online backup mode was not cancelled" -msgstr "Online-Sicherungsmodus wurde nicht storniert" +#: utils/misc/guc.c:1682 +msgid "This includes operations such as VACUUM and CREATE INDEX." +msgstr "Das schließt Operationen wie VACUUM und CREATE INDEX ein." -#: access/transam/xlog.c:9826 -#, c-format -msgid "Could not rename \"%s\" to \"%s\": %m." -msgstr "Konnte »%s« nicht in »%s« umbenennen: %m." +#: utils/misc/guc.c:1697 +msgid "Sets the maximum stack depth, in kilobytes." +msgstr "Setzt die maximale Stackgröße, in Kilobytes." -#: 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 "konnte nicht aus Logdatei %u, Segment %u, Position %u lesen: %m" +#: utils/misc/guc.c:1708 +msgid "Vacuum cost for a page found in the buffer cache." +msgstr "Vacuum-Kosten für eine im Puffer-Cache gefundene Seite." -#: access/transam/xlog.c:10434 -#, fuzzy -msgid "received promote request" -msgstr "intelligentes Herunterfahren verlangt" +#: utils/misc/guc.c:1718 +msgid "Vacuum cost for a page not found in the buffer cache." +msgstr "Vacuum-Kosten für eine nicht im Puffer-Cache gefundene Seite." -#: access/transam/xlog.c:10447 -#, c-format -msgid "trigger file found: %s" -msgstr "Triggerdatei gefunden: %s" +#: utils/misc/guc.c:1728 +msgid "Vacuum cost for a page dirtied by vacuum." +msgstr "Vacuum-Kosten für eine durch Vacuum schmutzig gemachte Seite." -#: access/common/tupdesc.c:575 parser/parse_relation.c:1169 -#, c-format -msgid "column \"%s\" cannot be declared SETOF" -msgstr "Spalte »%s« kann nicht als SETOF deklariert werden" +#: utils/misc/guc.c:1738 +msgid "Vacuum cost amount available before napping." +msgstr "Verfügbare Vacuum-Kosten vor Nickerchen." -#: access/common/heaptuple.c:646 access/common/heaptuple.c:1398 -#, c-format -msgid "number of columns (%d) exceeds limit (%d)" -msgstr "Anzahl der Spalten (%d) überschreitet Maximum (%d)" +#: utils/misc/guc.c:1748 +msgid "Vacuum cost delay in milliseconds." +msgstr "Vacuum-Kosten-Verzögerung in Millisekunden." -#: access/common/indextuple.c:57 -#, c-format -msgid "number of index columns (%d) exceeds limit (%d)" -msgstr "Anzahl der Indexspalten (%d) überschreitet Maximum (%d)" +#: utils/misc/guc.c:1759 +msgid "Vacuum cost delay in milliseconds, for autovacuum." +msgstr "Vacuum-Kosten-Verzögerung in Millisekunden, für Autovacuum." -#: access/common/indextuple.c:168 -#, c-format -msgid "index row requires %lu bytes, maximum size is %lu" -msgstr "Indexzeile benötigt %lu Bytes, Maximalgröße ist %lu" +#: utils/misc/guc.c:1770 +msgid "Vacuum cost amount available before napping, for autovacuum." +msgstr "Verfügbare Vacuum-Kosten vor Nickerchen, für Autovacuum." -#: 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 "nicht unterstützter Formatcode: %d" +#: utils/misc/guc.c:1780 +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." -#: access/common/reloptions.c:323 -msgid "user-defined relation parameter types limit exceeded" +#: utils/misc/guc.c:1793 +msgid "Sets the maximum number of simultaneously prepared transactions." msgstr "" -"Wertebereich des Typs für benutzerdefinierte Relationsparameter überschritten" +"Setzt die maximale Anzahl von gleichzeitig vorbereiteten Transaktionen." -#: access/common/reloptions.c:622 -msgid "RESET must not include values for parameters" -msgstr "RESET darf keinen Parameterwert enthalten" +#: utils/misc/guc.c:1826 +msgid "Sets the maximum allowed duration of any statement." +msgstr "Setzt die maximal erlaubte Dauer jeder Anweisung." -#: access/common/reloptions.c:655 -#, c-format -msgid "unrecognized parameter namespace \"%s\"" -msgstr "unbekannter Parameter-Namensraum »%s«" +#: utils/misc/guc.c:1827 +msgid "A value of 0 turns off the timeout." +msgstr "Der Wert 0 schaltet die Zeitprüfung aus." -#: access/common/reloptions.c:898 -#, c-format -msgid "unrecognized parameter \"%s\"" -msgstr "unbekannter Parameter »%s«" +#: utils/misc/guc.c:1837 +msgid "Minimum age at which VACUUM should freeze a table row." +msgstr "Mindestalter, bei dem VACUUM eine Tabellenzeile einfrieren soll." -#: access/common/reloptions.c:923 -#, c-format -msgid "parameter \"%s\" specified more than once" -msgstr "Parameter »%s« mehrmals angegeben" +#: utils/misc/guc.c:1847 +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." -#: access/common/reloptions.c:938 -#, c-format -msgid "invalid value for boolean option \"%s\": %s" -msgstr "ungültiger Wert für Boole'sche Option »%s«: »%s«" +#: utils/misc/guc.c:1857 +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." -#: access/common/reloptions.c:949 -#, c-format -msgid "invalid value for integer option \"%s\": %s" -msgstr "ungültiger Wert für ganzzahlige Option »%s«: »%s«" +#: utils/misc/guc.c:1870 +msgid "Sets the maximum number of locks per transaction." +msgstr "Setzt die maximale Anzahl Sperren pro Transaktion." -#: access/common/reloptions.c:954 access/common/reloptions.c:972 -#, 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«" +#: utils/misc/guc.c:1871 +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." -#: access/common/reloptions.c:956 -#, c-format -msgid "Valid values are between \"%d\" and \"%d\"." -msgstr "Gültige Werte sind zwischen »%d« und »%d«." +#: utils/misc/guc.c:1882 +msgid "Sets the maximum number of predicate locks per transaction." +msgstr "Setzt die maximale Anzahl Prädikatsperren pro Transaktion." -#: access/common/reloptions.c:967 -#, c-format -msgid "invalid value for floating point option \"%s\": %s" -msgstr "ungültiger Wert für Gleitkommaoption »%s«: »%s«" +#: utils/misc/guc.c:1883 +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." -#: access/common/reloptions.c:974 -#, c-format -msgid "Valid values are between \"%f\" and \"%f\"." -msgstr "Gültige Werte sind zwischen »%f« und »%f«." +#: utils/misc/guc.c:1894 +msgid "Sets the maximum allowed time to complete client authentication." +msgstr "Setzt die maximale Zeit, um die Client-Authentifizierung zu beenden." -#: access/common/tupconvert.c:107 -#, c-format -msgid "Returned type %s does not match expected type %s in column %d." +#: utils/misc/guc.c:1906 +msgid "Waits N seconds on connection startup before authentication." msgstr "" -"Zurückgegebener Typ %1$s stimmt in Spalte %3$d nicht mit erwartetem Typ %2$s " -"überein." +"Wartet beim Starten einer Verbindung N Sekunden vor der Authentifizierung." -#: access/common/tupconvert.c:135 -#, c-format -msgid "" -"Number of returned columns (%d) does not match expected column count (%d)." +#: utils/misc/guc.c:1917 +msgid "Sets the number of WAL files held for standby servers." msgstr "" -"Anzahl der zurückgegebenen Spalten (%d) entspricht nicht der erwarteten " -"Spaltenanzahl (%d)." +"Setzt die maximale Anzahl der für Standby-Server vorgehaltenen WAL-Dateien." -#: access/common/tupconvert.c:240 -#, c-format +#: utils/misc/guc.c:1927 msgid "" -"Attribute \"%s\" of type %s does not match corresponding attribute of type " -"%s." +"Sets the maximum distance in log segments between automatic WAL checkpoints." msgstr "" -"Attribut »%s« von Typ %s stimmt nicht mit dem entsprechenden Attribut von " -"Typ %s überein." +"Setzt die maximale Anzahl Logsegmente zwischen automatischen WAL-Checkpoints." -#: access/common/tupconvert.c:252 -#, c-format -msgid "Attribute \"%s\" of type %s does not exist in type %s." -msgstr "Attribut »%s« von Typ %s existiert nicht in Typ %s." +#: utils/misc/guc.c:1937 +msgid "Sets the maximum time between automatic WAL checkpoints." +msgstr "Setzt die maximale Zeit zwischen automatischen WAL-Checkpoints." -#: 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 "Größe %lu der Indexzeile überschreitet Maximum %lu für Index »%s«" +#: utils/misc/guc.c:1948 +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." -#: access/gin/ginscan.c:401 -msgid "old GIN indexes do not support whole-index scans nor searches for nulls" +#: utils/misc/guc.c:1950 +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 "" -"alte GIN-Indexe unterstützen keine Scans des ganzen Index oder Suchen nach " -"NULL-Werten" +"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." -#: access/gin/ginscan.c:402 -#, c-format -msgid "To fix this, do REINDEX INDEX \"%s\"." -msgstr "Um das zu reparieren, führen Sie REINDEX INDEX \"%s\" aus." +#: utils/misc/guc.c:1962 +msgid "Sets the number of disk-page buffers in shared memory for WAL." +msgstr "Setzt die Anzahl Diskseitenpuffer für WAL im Shared Memory." -#: access/gist/gist.c:230 -msgid "unlogged GiST indexes are not supported" -msgstr "ungeloggte GiST-Indexe werden nicht unterstützt" +#: utils/misc/guc.c:1973 +msgid "WAL writer sleep time between WAL flushes." +msgstr "Schlafzeit zwischen WAL-Flush-Operationen des WAL-Writers." -#: access/gist/gist.c:715 access/gist/gistvacuum.c:271 -#, 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" +#: utils/misc/guc.c:1985 +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:1995 +msgid "WAL sender sleep time between WAL replications." +msgstr "WAL-Sender-Schlafzeit zwischen WAL-Replikationen." -#: access/gist/gist.c:717 access/gist/gistvacuum.c:273 +#: utils/misc/guc.c:2006 +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:2017 msgid "" -"This is caused by an incomplete page split at crash recovery before " -"upgrading to 9.1." +"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." -#: 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 "Bitte führen Sie REINDEX für den Index aus." +#: utils/misc/guc.c:2028 +msgid "" +"Sets the minimum concurrent open transactions before performing commit_delay." +msgstr "" +"Setzt die minimale Anzahl gleichzeitig offener Transaktionen bevor " +"»commit_delay« angewendet wird." -#: access/gist/gistsplit.c:375 -#, c-format -msgid "picksplit method for column %d of index \"%s\" failed" -msgstr "Picksplit-Methode für Spalte %d von Index »%s« fehlgeschlagen" +#: utils/misc/guc.c:2039 +msgid "Sets the number of digits displayed for floating-point values." +msgstr "Setzt die Anzahl ausgegebener Ziffern für Fließkommawerte." -#: access/gist/gistsplit.c:377 +#: utils/misc/guc.c:2040 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." +"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 "" -"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." +"Diese Einstellung betrifft real, double precision und geometrische " +"Datentypen. Der Parameterwert wird zur Standardziffernanzahl (FLT_DIG bzw. " +"DBL_DIG) hinzuaddiert." -#: 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 "Index »%s« enthält unerwartete Nullseite bei Block %u" +#: utils/misc/guc.c:2051 +msgid "Sets the minimum execution time above which statements will be logged." +msgstr "" +"Setzt die minimale Ausführungszeit, über der Anweisungen geloggt werden." -#: 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 "Index »%s« enthält korrupte Seite bei Block %u" +#: utils/misc/guc.c:2053 +msgid "Zero prints all queries. -1 turns this feature off." +msgstr "Null zeigt alle Anfragen. -1 schaltet dieses Feature aus." -#: access/hash/hashutil.c:209 -#, c-format -msgid "index \"%s\" is not a hash index" -msgstr "Index »%s« ist kein Hash-Index" +#: utils/misc/guc.c:2063 +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." -#: access/hash/hashutil.c:215 -#, c-format -msgid "index \"%s\" has wrong hash version" -msgstr "Index »%s« hat falsche Hash-Version" +#: utils/misc/guc.c:2065 +msgid "Zero prints all actions. -1 turns autovacuum logging off." +msgstr "" +"Null gibt alls Aktionen aus. -1 schaltet die Log-Aufzeichnung über " +"Autovacuum aus." -#: access/hash/hashinsert.c:73 -#, c-format -msgid "index row size %lu exceeds hash maximum %lu" -msgstr "Größe der Indexzeile %lu überschreitet Maximum für Hash-Index %lu" +#: utils/misc/guc.c:2075 +msgid "Background writer sleep time between rounds." +msgstr "Schlafzeit zwischen Durchläufen des Background-Writers." -#: access/hash/hashinsert.c:76 -msgid "Values larger than a buffer page cannot be indexed." +#: utils/misc/guc.c:2086 +msgid "Background writer maximum number of LRU pages to flush per round." msgstr "" -"Werte, die größer sind als eine Pufferseite, können nicht indiziert werden." +"Maximale Anzahl der vom Background-Writer pro Durchlauf zu flushenden LRU-" +"Seiten." -#: access/hash/hashovfl.c:547 -#, c-format -msgid "out of overflow pages in hash index \"%s\"" -msgstr "keine Überlaufseiten in Hash-Index »%s« mehr" +#: utils/misc/guc.c:2102 +msgid "" +"Number of simultaneous requests that can be handled efficiently by the disk " +"subsystem." +msgstr "" +"Anzahl simultaner Anfragen, die das Festplattensubsystem effizient " +"bearbeiten kann." -#: access/hash/hashsearch.c:152 -msgid "hash indexes do not support whole-index scans" -msgstr "Hash-Indexe unterstützen keine Scans des ganzen Index" +#: utils/misc/guc.c:2103 +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." -#: 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« ist ein Index" +#: utils/misc/guc.c:2116 +msgid "Automatic log file rotation will occur after N minutes." +msgstr "Automatische Rotation der Logdateien geschieht nach N Minuten." -#: 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« ist ein zusammengesetzter Typ" +#: utils/misc/guc.c:2127 +msgid "Automatic log file rotation will occur after N kilobytes." +msgstr "Automatische Rotation der Logdateien geschieht nach N Kilobytes." -#: 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 "konnte Sperre für Zeile in Relation »%s« nicht setzen" +#: utils/misc/guc.c:2138 +msgid "Shows the maximum number of function arguments." +msgstr "Setzt die maximale Anzahl von Funktionsargumenten." -#: access/heap/hio.c:175 access/heap/rewriteheap.c:597 -#, 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" +#: utils/misc/guc.c:2149 +msgid "Shows the maximum number of index keys." +msgstr "Zeigt die maximale Anzahl von Indexschlüsseln." -#: 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« ist kein Index" +#: utils/misc/guc.c:2160 +msgid "Shows the maximum identifier length." +msgstr "Zeigt die maximale Länge von Bezeichnern." -#: access/nbtree/nbtinsert.c:393 -#, c-format -msgid "duplicate key value violates unique constraint \"%s\"" -msgstr "doppelter Schlüsselwert verletzt Unique-Constraint »%s«" +#: utils/misc/guc.c:2171 +msgid "Shows the size of a disk block." +msgstr "Zeigt die Größe eines Diskblocks." -#: access/nbtree/nbtinsert.c:395 -#, c-format -msgid "Key %s already exists." -msgstr "Schlüssel »%s« existiert bereits." +#: utils/misc/guc.c:2182 +msgid "Shows the number of pages per disk file." +msgstr "Zeigt die Anzahl Seiten pro Diskdatei." -#: access/nbtree/nbtinsert.c:457 -#, c-format -msgid "failed to re-find tuple within index \"%s\"" -msgstr "konnte Tupel mit Index »%s« nicht erneut finden" +#: utils/misc/guc.c:2193 +msgid "Shows the block size in the write ahead log." +msgstr "Zeigt die Blockgröße im Write-Ahead-Log." -#: access/nbtree/nbtinsert.c:459 -msgid "This may be because of a non-immutable index expression." -msgstr "Das kann daran liegen, dass der Indexausdruck nicht »immutable« ist." +#: utils/misc/guc.c:2204 +msgid "Shows the number of pages per write ahead log segment." +msgstr "Zeit die Anzahl Seiten pro Write-Ahead-Log-Segment." -#: 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 "" -"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." +#: utils/misc/guc.c:2217 +msgid "Time to sleep between autovacuum runs." +msgstr "Wartezeit zwischen Autovacuum-Durchläufen." -#: access/nbtree/nbtpage.c:161 access/nbtree/nbtpage.c:365 -#, c-format -msgid "index \"%s\" is not a btree" -msgstr "Index »%s« ist kein B-Tree" +#: utils/misc/guc.c:2227 +msgid "Minimum number of tuple updates or deletes prior to vacuum." +msgstr "Mindestanzahl an geänderten oder gelöschten Tupeln vor einem Vacuum." -#: access/nbtree/nbtpage.c:167 access/nbtree/nbtpage.c:371 -#, c-format -msgid "version mismatch in index \"%s\": file version %d, code version %d" +#: utils/misc/guc.c:2236 +msgid "Minimum number of tuple inserts, updates or deletes prior to analyze." msgstr "" -"keine Versionsübereinstimmung in Index »%s«: Dateiversion %d, Code-Version %d" - -#: bootstrap/bootstrap.c:277 tcop/postgres.c:3386 postmaster/postmaster.c:681 -#, c-format -msgid "--%s requires a value" -msgstr "--%s benötigt einen Wert" +"Mindestanzahl an Einfüge-, Änderungs- oder Löschoperationen von einem " +"Analyze." -#: bootstrap/bootstrap.c:282 tcop/postgres.c:3391 postmaster/postmaster.c:686 -#, c-format -msgid "-c %s requires a value" -msgstr "-c %s benötigt einen Wert" +#: utils/misc/guc.c:2246 +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." -#: bootstrap/bootstrap.c:293 postmaster/postmaster.c:698 -#: postmaster/postmaster.c:711 -#, c-format -msgid "Try \"%s --help\" for more information.\n" -msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n" +#: utils/misc/guc.c:2257 +msgid "" +"Sets the maximum number of simultaneously running autovacuum worker " +"processes." +msgstr "" +"Setzt die maximale Anzahl gleichzeitig laufender Autovacuum-Worker-Prozesse." -#: bootstrap/bootstrap.c:302 -#, c-format -msgid "%s: invalid command-line arguments\n" -msgstr "%s: ungültige Kommandozeilenargumente\n" +#: utils/misc/guc.c:2267 +msgid "Time between issuing TCP keepalives." +msgstr "Zeit zwischen TCP-Keepalive-Sendungen." -#: catalog/pg_collation.c:75 -#, c-format -msgid "collation \"%s\" for encoding \"%s\" already exists" -msgstr "Sortierfolge »%s« für Kodierung »%s« existiert bereits" +#: utils/misc/guc.c:2268 utils/misc/guc.c:2279 +msgid "A value of 0 uses the system default." +msgstr "Der Wert 0 verwendet die Systemvoreinstellung." -#: catalog/pg_collation.c:89 -#, c-format -msgid "collation \"%s\" already exists" -msgstr "Sortierfolge »%s« existiert bereits" +#: utils/misc/guc.c:2278 +msgid "Time between TCP keepalive retransmits." +msgstr "Zeit zwischen TCP-Keepalive-Neuübertragungen." -#: catalog/aclchk.c:200 -msgid "grant options can only be granted to roles" -msgstr "Grant-Optionen können nur Rollen gewährt werden" +#: utils/misc/guc.c:2289 +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." -#: catalog/aclchk.c:316 -#, c-format -msgid "no privileges were granted for column \"%s\" of relation \"%s\"" -msgstr "es wurden keine Privilegien für Spalte »%s« von Relation »%s« gewährt" +#: utils/misc/guc.c:2300 +msgid "Maximum number of TCP keepalive retransmits." +msgstr "Maximale Anzahl an TCP-Keepalive-Neuübertragungen." -#: catalog/aclchk.c:321 -#, c-format -msgid "no privileges were granted for \"%s\"" -msgstr "es wurden keine Privilegien für »%s« gewährt" +#: utils/misc/guc.c:2301 +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." -#: catalog/aclchk.c:329 -#, c-format -msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" +#: utils/misc/guc.c:2312 +msgid "Sets the maximum allowed result for exact search by GIN." msgstr "" -"es wurden nicht alle Priviligien für Spalte »%s« von Relation »%s« gewährt" +"Setzt die maximal erlaubte Anzahl Ergebnisse für eine genaue Suche mit GIN." -#: catalog/aclchk.c:334 -#, c-format -msgid "not all privileges were granted for \"%s\"" -msgstr "es wurden nicht alle Priviligien für »%s« gewährt" +#: utils/misc/guc.c:2323 +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." -#: catalog/aclchk.c:345 -#, c-format -msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" +#: utils/misc/guc.c:2324 +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 "" -"es konnten keine Privilegien für Spalte »%s« von Relation »%s« entzogen " -"werden" +"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." -#: catalog/aclchk.c:350 -#, c-format -msgid "no privileges could be revoked for \"%s\"" -msgstr "es konnten keine Privilegien für »%s« entzogen werden" +#: utils/misc/guc.c:2337 +msgid "Shows the server version as an integer." +msgstr "Zeigt die Serverversion als Zahl." -#: catalog/aclchk.c:358 -#, c-format -msgid "" -"not all privileges could be revoked for column \"%s\" of relation \"%s\"" +#: utils/misc/guc.c:2348 +msgid "Log the use of temporary files larger than this number of kilobytes." msgstr "" -"es konnten nicht alle Privilegien für Spalte »%s« von Relation »%s« entzogen " -"werden" +"Schreibt Meldungen über die Verwendung von temporären Dateien in den Log, " +"wenn sie größer als diese Anzahl an Kilobytes sind." -#: catalog/aclchk.c:363 -#, c-format -msgid "not all privileges could be revoked for \"%s\"" -msgstr "es konnten nicht alle Privilegien für »%s« entzogen werden" +#: utils/misc/guc.c:2349 +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)." -#: catalog/aclchk.c:442 catalog/aclchk.c:891 -#, c-format -msgid "invalid privilege type %s for relation" -msgstr "ungültiger Privilegtyp %s für Relation" +#: utils/misc/guc.c:2359 +msgid "Sets the size reserved for pg_stat_activity.current_query, in bytes." +msgstr "" +"Setzt die für pg_stat_activity.current_query reservierte Größe, in Bytes." -#: catalog/aclchk.c:446 catalog/aclchk.c:895 -#, c-format -msgid "invalid privilege type %s for sequence" -msgstr "ungültiger Privilegtyp %s für Sequenz" +#: utils/misc/guc.c:2378 +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." -#: catalog/aclchk.c:450 -#, c-format -msgid "invalid privilege type %s for database" -msgstr "ungültiger Privilegtyp %s für Datenbank" +#: utils/misc/guc.c:2388 +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." -#: catalog/aclchk.c:454 catalog/aclchk.c:899 -#, c-format -msgid "invalid privilege type %s for function" -msgstr "ungültiger Privilegtyp %s für Funktion" +#: utils/misc/guc.c:2398 +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." -#: catalog/aclchk.c:458 -#, c-format -msgid "invalid privilege type %s for language" -msgstr "ungültiger Privilegtyp %s für Sprache" +#: utils/misc/guc.c:2408 +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." -#: catalog/aclchk.c:462 -#, c-format -msgid "invalid privilege type %s for large object" -msgstr "ungültiger Privilegtyp %s für Large Object" +#: utils/misc/guc.c:2418 +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." -#: catalog/aclchk.c:466 -#, c-format -msgid "invalid privilege type %s for schema" -msgstr "ungültiger Privilegtyp %s für Schema" +#: utils/misc/guc.c:2429 +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." -#: catalog/aclchk.c:470 -#, c-format -msgid "invalid privilege type %s for tablespace" -msgstr "ungültiger Privilegtyp %s für Tablespace" +#: utils/misc/guc.c:2440 +msgid "GEQO: selective pressure within the population." +msgstr "GEQO: selektiver Auswahldruck in der Bevölkerung." -#: catalog/aclchk.c:474 -#, c-format -msgid "invalid privilege type %s for foreign-data wrapper" -msgstr "ungültiger Privilegtyp %s für Fremddaten-Wrapper" +#: utils/misc/guc.c:2450 +msgid "GEQO: seed for random path selection." +msgstr "GEQO: Ausgangswert für die zufällige Pfadauswahl." -#: catalog/aclchk.c:478 -#, c-format -msgid "invalid privilege type %s for foreign server" -msgstr "ungültiger Privilegtyp %s für Fremdserver" +#: utils/misc/guc.c:2460 +msgid "Multiple of the average buffer usage to free per round." +msgstr "" +"Vielfaches der durchschnittlichen freizugebenden Pufferverwendung pro Runde." -#: catalog/aclchk.c:517 -msgid "column privileges are only valid for relations" -msgstr "Spaltenprivilegien sind nur für Relation gültig" +#: utils/misc/guc.c:2470 +msgid "Sets the seed for random-number generation." +msgstr "Setzt den Ausgangswert für die Zufallszahlenerzeugung." -#: 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 existiert nicht" +#: utils/misc/guc.c:2481 +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." -#: 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 "widersprüchliche oder überflüssige Optionen" +#: utils/misc/guc.c:2490 +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." -#: catalog/aclchk.c:932 -msgid "default privileges cannot be set for columns" -msgstr "Vorgabeprivilegien können nicht für Spalten gesetzt werden" +#: utils/misc/guc.c:2500 +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." -#: 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 "Spalte »%s« von Relation »%s« existiert nicht" +#: utils/misc/guc.c:2519 +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." -#: 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« ist keine Sequenz" +#: utils/misc/guc.c:2529 +msgid "Sets the client's character set encoding." +msgstr "Setzt die Zeichensatzkodierung des Clients." -#: catalog/aclchk.c:1731 -#, c-format -msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" -msgstr "Sequenz »%s« unterstützt nur die Privilegien USAGE, SELECT und UPDATE" +#: utils/misc/guc.c:2540 +msgid "Controls information prefixed to each log line." +msgstr "Bestimmt die Informationen, die vor jede Logzeile geschrieben werden." -#: catalog/aclchk.c:1748 -msgid "invalid privilege type USAGE for table" -msgstr "ungültiger Privilegtyp USAGE für Tabelle" +#: utils/misc/guc.c:2541 +msgid "If blank, no prefix is used." +msgstr "Wenn leer, dann wird kein Präfix verwendet." -#: catalog/aclchk.c:1913 -#, c-format -msgid "invalid privilege type %s for column" -msgstr "ungültiger Privilegtyp %s für Spalte" +#: utils/misc/guc.c:2550 +msgid "Sets the time zone to use in log messages." +msgstr "Setzt die in Logmeldungen verwendete Zeitzone." -#: catalog/aclchk.c:1926 -#, c-format -msgid "sequence \"%s\" only supports SELECT column privileges" -msgstr "Sequenz »%s« unterstützt nur den Spaltenprivilegientyp SELECT" +#: utils/misc/guc.c:2560 +msgid "Sets the display format for date and time values." +msgstr "Setzt das Ausgabeformat für Datums- und Zeitwerte." -#: catalog/aclchk.c:2510 -#, c-format -msgid "language \"%s\" is not trusted" -msgstr "Sprache »%s« ist nicht »trusted«" +#: utils/misc/guc.c:2561 +msgid "Also controls interpretation of ambiguous date inputs." +msgstr "Kontrolliert auch die Interpretation von zweideutigen Datumseingaben." -#: catalog/aclchk.c:2512 -msgid "Only superusers can use untrusted languages." -msgstr "Nur Superuser können nicht vertrauenswürdige Sprachen verwenden." +#: utils/misc/guc.c:2572 +msgid "Sets the default tablespace to create tables and indexes in." +msgstr "Setzt den Standard-Tablespace für Tabellen und Indexe." -#: catalog/aclchk.c:3019 -#, c-format -msgid "unrecognized privilege type \"%s\"" -msgstr "unbekannter Privilegtyp »%s«" +#: utils/misc/guc.c:2573 +msgid "An empty string selects the database's default tablespace." +msgstr "Eine leere Zeichenkette wählt den Standard-Tablespace der Datenbank." -#: catalog/aclchk.c:3068 -#, c-format -msgid "permission denied for column %s" -msgstr "keine Berechtigung für Spalte %s" +#: utils/misc/guc.c:2583 +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." -#: catalog/aclchk.c:3070 -#, c-format -msgid "permission denied for relation %s" -msgstr "keine Berechtigung für Relation %s" +#: utils/misc/guc.c:2594 +msgid "Sets the path for dynamically loadable modules." +msgstr "Setzt den Pfad für ladbare dynamische Bibliotheken." -#: 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 "keine Berechtigung für Sequenz %s" +#: utils/misc/guc.c:2595 +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." -#: catalog/aclchk.c:3074 -#, c-format -msgid "permission denied for database %s" -msgstr "keine Berechtigung für Datenbank %s" +#: utils/misc/guc.c:2608 +msgid "Sets the location of the Kerberos server key file." +msgstr "Setzt den Ort der Kerberos-Server-Schlüsseldatei." -#: catalog/aclchk.c:3076 -#, c-format -msgid "permission denied for function %s" -msgstr "keine Berechtigung für Funktion %s" +#: utils/misc/guc.c:2619 +msgid "Sets the name of the Kerberos service." +msgstr "Setzt den Namen des Kerberos-Service." -#: catalog/aclchk.c:3078 -#, c-format -msgid "permission denied for operator %s" -msgstr "keine Berechtigung für Operator %s" +#: utils/misc/guc.c:2629 +msgid "Sets the Bonjour service name." +msgstr "Setzt den Bonjour-Servicenamen." -#: catalog/aclchk.c:3080 -#, c-format -msgid "permission denied for type %s" -msgstr "keine Berechtigung für Typ %s" +#: utils/misc/guc.c:2641 +msgid "Shows the collation order locale." +msgstr "Zeigt die Locale für die Sortierreihenfolge." -#: catalog/aclchk.c:3082 -#, c-format -msgid "permission denied for language %s" -msgstr "keine Berechtigung für Sprache %s" +#: utils/misc/guc.c:2652 +msgid "Shows the character classification and case conversion locale." +msgstr "Zeigt die Locale für Zeichenklassifizierung und Groß-/Kleinschreibung." -#: catalog/aclchk.c:3084 -#, c-format -msgid "permission denied for large object %s" -msgstr "keine Berechtigung für Large Object %s" +#: utils/misc/guc.c:2663 +msgid "Sets the language in which messages are displayed." +msgstr "Setzt die Sprache, in der Mitteilungen ausgegeben werden." -#: catalog/aclchk.c:3086 -#, c-format -msgid "permission denied for schema %s" -msgstr "keine Berechtigung für Schema %s" +#: utils/misc/guc.c:2673 +msgid "Sets the locale for formatting monetary amounts." +msgstr "Setzt die Locale für die Formatierung von Geldbeträgen." -#: catalog/aclchk.c:3088 -#, c-format -msgid "permission denied for operator class %s" -msgstr "keine Berechtigung für Operatorklasse %s" +#: utils/misc/guc.c:2683 +msgid "Sets the locale for formatting numbers." +msgstr "Setzt die Locale für die Formatierung von Zahlen." -#: catalog/aclchk.c:3090 -#, c-format -msgid "permission denied for operator family %s" -msgstr "keine Berechtigung für Operatorfamilie %s" +#: utils/misc/guc.c:2693 +msgid "Sets the locale for formatting date and time values." +msgstr "Setzt die Locale für die Formatierung von Datums- und Zeitwerten." -#: catalog/aclchk.c:3092 -#, c-format -msgid "permission denied for collation %s" -msgstr "keine Berechtigung für Sortierfolge %s" +#: utils/misc/guc.c:2703 +msgid "Lists shared libraries to preload into server." +msgstr "" +"Listet dynamische Bibliotheken, die vorab in den Server geladen werden." -#: catalog/aclchk.c:3094 -#, c-format -msgid "permission denied for conversion %s" -msgstr "keine Berechtigung für Konversion %s" +#: utils/misc/guc.c:2714 +msgid "Lists shared libraries to preload into each backend." +msgstr "" +"Listet dynamische Bibliotheken, die vorab in jeden Serverprozess geladen " +"werden." -#: catalog/aclchk.c:3096 -#, c-format -msgid "permission denied for tablespace %s" -msgstr "keine Berechtigung für Tablespace %s" +#: utils/misc/guc.c:2725 +msgid "Sets the schema search order for names that are not schema-qualified." +msgstr "Setzt die Schemasuchreihenfolge für Namen ohne Schemaqualifikation." -#: catalog/aclchk.c:3098 -#, c-format -msgid "permission denied for text search dictionary %s" -msgstr "keine Berechtigung für Textsuchewörterbuch %s" +#: utils/misc/guc.c:2737 +msgid "Sets the server (database) character set encoding." +msgstr "Setzt die Zeichensatzkodierung des Servers (der Datenbank)." -#: catalog/aclchk.c:3100 -#, c-format -msgid "permission denied for text search configuration %s" -msgstr "keine Berechtigung für Textsuchekonfiguration %s" +#: utils/misc/guc.c:2749 +msgid "Shows the server version." +msgstr "Zeigt die Serverversion." -#: catalog/aclchk.c:3102 -#, c-format -msgid "permission denied for foreign-data wrapper %s" -msgstr "keine Berechtigung für Fremddaten-Wrapper %s" +#: utils/misc/guc.c:2761 +msgid "Sets the current role." +msgstr "Setzt die aktuelle Rolle." -#: catalog/aclchk.c:3104 -#, c-format -msgid "permission denied for foreign server %s" -msgstr "keine Berechtigung für Fremdserver %s" +#: utils/misc/guc.c:2773 +msgid "Sets the session user name." +msgstr "Setzt den Sitzungsbenutzernamen." -#: catalog/aclchk.c:3106 -#, c-format -msgid "permission denied for extension %s" -msgstr "keine Berechtigung für Erweiterung %s" +#: utils/misc/guc.c:2784 +msgid "Sets the destination for server log output." +msgstr "Setzt das Ziel für die Serverlogausgabe." -#: catalog/aclchk.c:3112 catalog/aclchk.c:3114 -#, c-format -msgid "must be owner of relation %s" -msgstr "Berechtigung nur für Eigentümer der Relation %s" +#: utils/misc/guc.c:2785 +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." -#: catalog/aclchk.c:3116 -#, c-format -msgid "must be owner of sequence %s" -msgstr "Berechtigung nur für Eigentümer der Sequenz %s" +#: utils/misc/guc.c:2796 +msgid "Sets the destination directory for log files." +msgstr "Bestimmt das Zielverzeichnis für Logdateien." -#: catalog/aclchk.c:3118 -#, c-format -msgid "must be owner of database %s" -msgstr "Berechtigung nur für Eigentümer der Datenbank %s" +#: utils/misc/guc.c:2797 +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." -#: catalog/aclchk.c:3120 -#, c-format -msgid "must be owner of function %s" -msgstr "Berechtigung nur für Eigentümer der Funktion %s" +#: utils/misc/guc.c:2807 +msgid "Sets the file name pattern for log files." +msgstr "Bestimmt das Dateinamenmuster für Logdateien." -#: catalog/aclchk.c:3122 -#, c-format -msgid "must be owner of operator %s" -msgstr "Berechtigung nur für Eigentümer des Operators %s" +#: utils/misc/guc.c:2818 +msgid "Sets the program name used to identify PostgreSQL messages in syslog." +msgstr "" +"Setzt den Programmnamen, mit dem PostgreSQL-Meldungen im Syslog " +"identifiziert werden." -#: catalog/aclchk.c:3124 -#, c-format -msgid "must be owner of type %s" -msgstr "Berechtigung nur für Eigentümer des Typs %s" +#: utils/misc/guc.c:2829 +msgid "Sets the time zone for displaying and interpreting time stamps." +msgstr "" +"Setzt die Zeitzone, in der Zeitangaben interpretiert und ausgegeben werden." -#: catalog/aclchk.c:3126 -#, c-format -msgid "must be owner of language %s" -msgstr "Berechtigung nur für Eigentümer der Sprache %s" +#: utils/misc/guc.c:2839 +msgid "Selects a file of time zone abbreviations." +msgstr "Wählt eine Datei mit Zeitzonenabkürzungen." -#: catalog/aclchk.c:3128 -#, c-format -msgid "must be owner of large object %s" -msgstr "Berechtigung nur für Eigentümer des Large Object %s" +#: utils/misc/guc.c:2849 +msgid "Sets the current transaction's isolation level." +msgstr "Zeigt den Isolationsgrad der aktuellen Transaktion." -#: catalog/aclchk.c:3130 -#, c-format -msgid "must be owner of schema %s" -msgstr "Berechtigung nur für Eigentümer des Schemas %s" +#: utils/misc/guc.c:2860 +msgid "Sets the owning group of the Unix-domain socket." +msgstr "Setzt die Eigentümergruppe der Unix-Domain-Socket." -#: catalog/aclchk.c:3132 -#, c-format -msgid "must be owner of operator class %s" -msgstr "Berechtigung nur für Eigentümer der Operatorklasse %s" +#: utils/misc/guc.c:2861 +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." -#: catalog/aclchk.c:3134 -#, c-format -msgid "must be owner of operator family %s" -msgstr "Berechtigung nur für Eigentümer der Operatorfamilie %s" +#: utils/misc/guc.c:2871 +msgid "Sets the directory where the Unix-domain socket will be created." +msgstr "" +"Setzt das Verzeichnis, in dem die Unix-Domain-Socket erzeugt werden soll." -#: catalog/aclchk.c:3136 -#, c-format -msgid "must be owner of collation %s" -msgstr "Berechtigung nur für Eigentümer der Sortierfolge %s" +#: utils/misc/guc.c:2882 +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." -#: catalog/aclchk.c:3138 -#, c-format -msgid "must be owner of conversion %s" -msgstr "Berechtigung nur für Eigentümer der Konversion %s" +#: utils/misc/guc.c:2893 +msgid "Sets the list of known custom variable classes." +msgstr "Bestimmt die Liste der bekannten benutzerdefinierten Variablenklassen." -#: catalog/aclchk.c:3140 -#, c-format -msgid "must be owner of tablespace %s" -msgstr "Berechtigung nur für Eigentümer des Tablespace %s" +#: utils/misc/guc.c:2904 +msgid "Sets the server's data directory." +msgstr "Setzt das Datenverzeichnis des Servers." -#: catalog/aclchk.c:3142 -#, c-format -msgid "must be owner of text search dictionary %s" -msgstr "Berechtigung nur für Eigentümer des Textsuchewörterbuches %s" +#: utils/misc/guc.c:2915 +msgid "Sets the server's main configuration file." +msgstr "Setzt die Hauptkonfigurationsdatei des Servers." -#: catalog/aclchk.c:3144 -#, c-format -msgid "must be owner of text search configuration %s" -msgstr "Berechtigung nur für Eigentümer der Textsuchekonfiguration %s" +#: utils/misc/guc.c:2926 +msgid "Sets the server's \"hba\" configuration file." +msgstr "Setzt die »hba«-Konfigurationsdatei des Servers." -#: catalog/aclchk.c:3146 -#, c-format -msgid "must be owner of foreign-data wrapper %s" -msgstr "Berechtigung nur für Eigentümer des Fremddaten-Wrappers %s" +#: utils/misc/guc.c:2937 +msgid "Sets the server's \"ident\" configuration file." +msgstr "Setzt die »ident«-Konfigurationsdatei des Servers." -#: catalog/aclchk.c:3148 -#, c-format -msgid "must be owner of foreign server %s" -msgstr "Berechtigung nur für Eigentümer des Fremdservers %s" +#: utils/misc/guc.c:2948 +msgid "Writes the postmaster PID to the specified file." +msgstr "Schreibt die Postmaster-PID in die angegebene Datei." -#: catalog/aclchk.c:3150 -#, c-format -msgid "must be owner of extension %s" -msgstr "Berechtigung nur für Eigentümer der Erweiterung %s" +#: utils/misc/guc.c:2959 +msgid "Writes temporary statistics files to the specified directory." +msgstr "Schreibt temporäre Statistikdateien in das angegebene Verzeichnis." -#: catalog/aclchk.c:3192 -#, c-format -msgid "permission denied for column \"%s\" of relation \"%s\"" -msgstr "keine Berechtigung für Spalte »%s« von Relation »%s«" +#: utils/misc/guc.c:2970 +msgid "List of names of potential synchronous standbys." +msgstr "Liste der Namen der möglichen synchronen Standbys." -#: catalog/aclchk.c:3219 -#, c-format -msgid "role with OID %u does not exist" -msgstr "Rolle mit OID %u existiert nicht" +#: utils/misc/guc.c:2981 +msgid "Sets default text search configuration." +msgstr "Setzt die vorgegebene Textsuchekonfiguration." -#: catalog/aclchk.c:3312 catalog/aclchk.c:3320 -#, c-format -msgid "attribute %d of relation with OID %u does not exist" -msgstr "Attribut %d der Relation mit OID %u existiert nicht" +#: utils/misc/guc.c:2991 +msgid "Sets the list of allowed SSL ciphers." +msgstr "Setzt die Liste der erlaubten SSL-Verschlüsselungsalgorithmen." -#: catalog/aclchk.c:3393 catalog/aclchk.c:4219 -#, c-format -msgid "relation with OID %u does not exist" -msgstr "Relation mit OID %u existiert nicht" +#: utils/misc/guc.c:3006 +msgid "Sets the application name to be reported in statistics and logs." +msgstr "" +"Setzt den Anwendungsnamen, der in Statistiken und Logs verzeichnet wird." -#: catalog/aclchk.c:3493 catalog/aclchk.c:4610 utils/adt/dbsize.c:127 -#, c-format -msgid "database with OID %u does not exist" -msgstr "Datenbank mit OID %u existiert nicht" +#: utils/misc/guc.c:3026 +msgid "Sets whether \"\\'\" is allowed in string literals." +msgstr "Bestimmt, ob »\\'« in Zeichenkettenkonstanten erlaubt ist." -#: catalog/aclchk.c:3547 catalog/aclchk.c:4297 tcop/fastpath.c:221 -#, c-format -msgid "function with OID %u does not exist" -msgstr "Funktion mit OID %u existiert nicht" +#: utils/misc/guc.c:3036 +msgid "Sets the output format for bytea." +msgstr "Setzt das Ausgabeformat für bytea." -#: catalog/aclchk.c:3601 catalog/aclchk.c:4323 -#, c-format -msgid "language with OID %u does not exist" -msgstr "Sprache mit OID %u existiert nicht" +#: utils/misc/guc.c:3046 +msgid "Sets the message levels that are sent to the client." +msgstr "Setzt die Meldungstypen, die an den Client gesendet werden." -#: catalog/aclchk.c:3762 catalog/aclchk.c:4395 -#, c-format -msgid "schema with OID %u does not exist" -msgstr "Schema mit OID %u existiert nicht" +#: utils/misc/guc.c:3047 utils/misc/guc.c:3100 utils/misc/guc.c:3111 +#: utils/misc/guc.c:3167 +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." -#: catalog/aclchk.c:3816 catalog/aclchk.c:4422 -#, c-format -msgid "tablespace with OID %u does not exist" -msgstr "Tablespace mit OID %u existiert nicht" +#: utils/misc/guc.c:3057 +msgid "Enables the planner to use constraints to optimize queries." +msgstr "" +"Ermöglicht dem Planer die Verwendung von Constraints, um Anfragen zu " +"optimieren." -#: catalog/aclchk.c:3874 catalog/aclchk.c:4556 -#, c-format -msgid "foreign-data wrapper with OID %u does not exist" -msgstr "Fremddaten-Wrapper mit OID %u existiert nicht" +#: utils/misc/guc.c:3058 +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." -#: catalog/aclchk.c:3935 catalog/aclchk.c:4583 -#, c-format -msgid "foreign server with OID %u does not exist" -msgstr "Fremdserver mit OID %u existiert nicht" +#: utils/misc/guc.c:3068 +msgid "Sets the transaction isolation level of each new transaction." +msgstr "Setzt den Transaktionsisolationsgrad neuer Transaktionen." -#: catalog/aclchk.c:4245 -#, c-format -msgid "type with OID %u does not exist" -msgstr "Typ mit OID %u existiert nicht" +#: utils/misc/guc.c:3078 +msgid "Sets the display format for interval values." +msgstr "Setzt das Ausgabeformat für Intervallwerte." -#: catalog/aclchk.c:4271 -#, c-format -msgid "operator with OID %u does not exist" -msgstr "Operator mit OID %u existiert nicht" +#: utils/misc/guc.c:3089 +msgid "Sets the verbosity of logged messages." +msgstr "Setzt den Detailgrad von geloggten Meldungen." -#: catalog/aclchk.c:4448 -#, c-format -msgid "operator class with OID %u does not exist" -msgstr "Operatorklasse mit OID %u existiert nicht" +#: utils/misc/guc.c:3099 +msgid "Sets the message levels that are logged." +msgstr "Setzt die Meldungstypen, die geloggt werden." -#: catalog/aclchk.c:4475 -#, c-format -msgid "operator family with OID %u does not exist" -msgstr "Operatorfamilie mit OID %u existiert nicht" +#: utils/misc/guc.c:3110 +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." -#: catalog/aclchk.c:4502 -#, c-format -msgid "text search dictionary with OID %u does not exist" -msgstr "Textsuchewörterbuch mit OID %u existiert nicht" +#: utils/misc/guc.c:3121 +msgid "Sets the type of statements logged." +msgstr "Setzt die Anweisungsarten, die geloggt werden." -#: catalog/aclchk.c:4529 -#, c-format -msgid "text search configuration with OID %u does not exist" -msgstr "Textsuchekonfiguration mit OID %u existiert nicht" +#: utils/misc/guc.c:3131 +msgid "Sets the syslog \"facility\" to be used when syslog enabled." +msgstr "" +"Setzt die zu verwendende Syslog-»Facility«, wenn Syslog angeschaltet ist." -#: catalog/aclchk.c:4636 -#, c-format -msgid "collation with OID %u does not exist" -msgstr "Sortierfolge mit OID %u existiert nicht" +#: utils/misc/guc.c:3146 +msgid "Sets the session's behavior for triggers and rewrite rules." +msgstr "Setzt das Sitzungsverhalten für Trigger und Regeln." -#: catalog/aclchk.c:4662 -#, c-format -msgid "conversion with OID %u does not exist" -msgstr "Konversion mit OID %u existiert nicht" +#: utils/misc/guc.c:3156 +msgid "Sets the current transaction's synchronization level." +msgstr "Setzt den Synchronisationsgrad der aktuellen Transaktion." -#: catalog/aclchk.c:4703 -#, c-format -msgid "extension with OID %u does not exist" -msgstr "Erweiterung mit OID %u existiert nicht" +#: utils/misc/guc.c:3166 +msgid "Enables logging of recovery-related debugging information." +msgstr "" +"Ermöglicht das Loggen von Debug-Informationen über die Wiederherstellung." -#: catalog/catalog.c:76 -msgid "invalid fork name" -msgstr "ungültiger Fork-Name" +#: utils/misc/guc.c:3182 +msgid "Collects function-level statistics on database activity." +msgstr "Sammelt Statistiken auf Funktionsebene über Datenbankaktivität." -#: catalog/catalog.c:77 -msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"." -msgstr "Gültige Fork-Namen sind »main«, »fsm« und »vm«." +#: utils/misc/guc.c:3192 +msgid "Set the level of information written to the WAL." +msgstr "Setzt den Umfang der in den WAL geschriebenen Informationen." -#: catalog/dependency.c:589 -#, c-format -msgid "cannot drop %s because %s requires it" -msgstr "kann %s nicht löschen, wird von %s benötigt" +#: utils/misc/guc.c:3202 +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." -#: catalog/dependency.c:592 -#, c-format -msgid "You can drop %s instead." -msgstr "Sie können stattdessen %s löschen." +#: utils/misc/guc.c:3212 +msgid "Sets how binary values are to be encoded in XML." +msgstr "Setzt, wie binäre Werte in XML kodiert werden." -#: catalog/dependency.c:748 catalog/pg_shdepend.c:562 -#, 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" +#: utils/misc/guc.c:3222 +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." -#: catalog/dependency.c:864 +#: utils/misc/guc.c:4064 #, c-format -msgid "drop auto-cascades to %s" -msgstr "Löschvorgang löscht automatisch %s" +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 weiß nicht, wo die Serverkonfigurationsdatei zu finden ist.\n" +"Sie müssen die Kommandozeilenoption --config-file oder -D angegeben oder\n" +"die Umgebungsvariable PGDATA setzen.\n" -#: catalog/dependency.c:876 catalog/dependency.c:885 +#: utils/misc/guc.c:4083 #, c-format -msgid "%s depends on %s" -msgstr "%s hängt von %s ab" +msgid "%s cannot access the server configuration file \"%s\": %s\n" +msgstr "%s kann nicht auf die Serverkonfigurationsdatei »%s« zugreifen: %s\n" -#: catalog/dependency.c:897 catalog/dependency.c:906 +#: utils/misc/guc.c:4103 #, c-format -msgid "drop cascades to %s" -msgstr "Löschvorgang löscht ebenfalls %s" +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 weiß nicht, wo die Systemdaten für das Datenbanksystem\n" +"zu finden sind. Sie können dies mit »data_directory« in »%s«, mit der\n" +"Kommandozeilenoption -D oder der Umgebungsvariable PGDATA angeben.\n" -#: catalog/dependency.c:914 catalog/pg_shdepend.c:673 +#: utils/misc/guc.c:4134 #, 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" -"und %d weiteres Objekt (Liste im Serverlog)" -msgstr[1] "" -"\n" -"und %d weitere Objekte (Liste im Serverlog)" +"%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 weiß nicht, wo die »hba«-Konfigurationsdatei zu finden ist.\n" +"Sie können dies mit »hba_file« in »%s«, mit der\n" +"Kommandozeilenoption -D oder der Umgebungsvariable PGDATA angeben.\n" -#: catalog/dependency.c:926 +#: utils/misc/guc.c:4157 #, c-format -msgid "cannot drop %s because other objects depend on it" -msgstr "kann %s nicht löschen, weil andere Objekte davon abhängen" +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 weiß nicht, wo die »ident«-Konfigurationsdatei zu finden ist.\n" +"Sie können dies mit »ident_file« in »%s«, mit der\n" +"Kommandozeilenoption -D oder der Umgebungsvariable PGDATA angeben.\n" -#: 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/security.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" +#: utils/misc/guc.c:4739 utils/misc/guc.c:4903 +msgid "Value exceeds integer range." +msgstr "Wert überschreitet Bereich für ganze Zahlen." -#: catalog/dependency.c:930 catalog/dependency.c:937 -msgid "Use DROP ... CASCADE to drop the dependent objects too." -msgstr "" -"Verwenden Sie DROP ... CASCADE, um die abhängigen Objekte ebenfalls zu " -"löschen." +#: utils/misc/guc.c:4758 +msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"." +msgstr "Gültige Einheiten für diesen Parameter sind »kB«, »MB« und »GB«." -#: catalog/dependency.c:934 -msgid "cannot drop desired object(s) because other objects depend on them" +#: utils/misc/guc.c:4817 +msgid "" +"Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"." msgstr "" -"kann gewünschte Objekte nicht löschen, weil andere Objekte davon abhängen" +"Gültige Einheiten für diesen Parameter sind »ms«, »s«, »min«, »h« und »d«." -#. translator: %d always has a value larger than 1 -#: catalog/dependency.c:943 +#: utils/misc/guc.c:5100 utils/misc/guc.c:5869 utils/misc/guc.c:5921 +#: utils/misc/guc.c:6594 utils/misc/guc.c:6753 utils/misc/guc.c:7932 +#: guc-file.l:203 #, c-format -msgid "drop cascades to %d other object" -msgid_plural "drop cascades to %d other objects" -msgstr[0] "Löschvorgang löscht ebenfalls %d weiteres Objekt" -msgstr[1] "Löschvorgang löscht ebenfalls %d weitere Objekte" +msgid "unrecognized configuration parameter \"%s\"" +msgstr "unbekannter Konfigurationsparameter »%s«" -#: catalog/dependency.c:2177 +#: utils/misc/guc.c:5133 #, c-format -msgid " column %s" -msgstr " Spalte %s" +msgid "parameter \"%s\" cannot be changed" +msgstr "Parameter »%s« kann nicht geändert werden" -#: catalog/dependency.c:2183 +#: utils/misc/guc.c:5162 utils/misc/guc.c:5336 utils/misc/guc.c:5433 +#: utils/misc/guc.c:5527 utils/misc/guc.c:5641 utils/misc/guc.c:5742 +#: guc-file.l:250 #, c-format -msgid "function %s" -msgstr "Funktion %s" +msgid "parameter \"%s\" cannot be changed without restarting the server" +msgstr "" +"Parameter »%s« kann nicht geändert werden, ohne den Server neu zu starten" -#: catalog/dependency.c:2188 +#: utils/misc/guc.c:5172 #, c-format -msgid "type %s" -msgstr "Typ %s" +msgid "parameter \"%s\" cannot be changed now" +msgstr "Parameter »%s« kann jetzt nicht geändert werden" -#: catalog/dependency.c:2218 +#: utils/misc/guc.c:5203 #, c-format -msgid "cast from %s to %s" -msgstr "Typumwandlung von %s in %s" +msgid "parameter \"%s\" cannot be set after connection start" +msgstr "Parameter »%s« kann nach Start der Verbindung nicht geändert werden" -#: catalog/dependency.c:2238 +#: utils/misc/guc.c:5213 utils/misc/guc.c:7947 #, c-format -msgid "collation %s" -msgstr "Sortierfolge %s" +msgid "permission denied to set parameter \"%s\"" +msgstr "keine Berechtigung, um Parameter »%s« zu setzen" -#: catalog/dependency.c:2262 +#: utils/misc/guc.c:5251 #, c-format -msgid "constraint %s on %s" -msgstr "Constraint %s für %s" +msgid "cannot set parameter \"%s\" within security-definer function" +msgstr "" +"Parameter »%s« kann nicht in einer Security-Definer-Funktion gesetzt werden" -#: catalog/dependency.c:2268 +#: utils/misc/guc.c:5259 utils/init/miscinit.c:381 #, c-format -msgid "constraint %s" -msgstr "Constraint %s" +msgid "cannot set parameter \"%s\" within security-restricted operation" +msgstr "" +"kann Parameter »%s« nicht in einer sicherheitsbeschränkten Operation setzen" -#: catalog/dependency.c:2285 +#: utils/misc/guc.c:5309 access/transam/xlog.c:5338 access/transam/xlog.c:5429 +#: access/transam/xlog.c:5440 commands/extension.c:527 +#: commands/extension.c:535 #, c-format -msgid "conversion %s" -msgstr "Konversion %s" +msgid "parameter \"%s\" requires a Boolean value" +msgstr "Parameter »%s« erfordert einen Boole'schen Wert" -#: catalog/dependency.c:2322 +#: utils/misc/guc.c:5397 utils/misc/guc.c:5711 utils/misc/guc.c:8111 +#: utils/misc/guc.c:8145 #, c-format -msgid "default for %s" -msgstr "Vorgabewert für %s" +msgid "invalid value for parameter \"%s\": \"%s\"" +msgstr "ungültiger Wert für Parameter »%s«: »%s«" -#: catalog/dependency.c:2339 +#: utils/misc/guc.c:5399 utils/misc/guc.c:5713 utils/misc/guc.c:8014 +#: utils/misc/guc.c:8048 utils/misc/guc.c:8082 utils/misc/guc.c:8116 +#: utils/misc/guc.c:8151 commands/tablecmds.c:696 commands/user.c:957 +#: storage/lmgr/proc.c:1077 storage/lmgr/deadlock.c:951 +#: catalog/objectaddress.c:315 catalog/dependency.c:937 +#: catalog/dependency.c:938 catalog/dependency.c:944 catalog/dependency.c:945 +#: catalog/dependency.c:956 catalog/dependency.c:957 port/win32/security.c:51 #, c-format -msgid "language %s" -msgstr "Sprache %s" +msgid "%s" +msgstr "%s" -#: catalog/dependency.c:2345 +#: utils/misc/guc.c:5406 #, c-format -msgid "large object %u" -msgstr "Large Object %u" +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)" -#: catalog/dependency.c:2350 +#: utils/misc/guc.c:5492 #, c-format -msgid "operator %s" -msgstr "Operator %s" +msgid "parameter \"%s\" requires a numeric value" +msgstr "Parameter »%s« erfordert einen numerischen Wert" -#: catalog/dependency.c:2382 +#: utils/misc/guc.c:5500 #, c-format -msgid "operator class %s for access method %s" -msgstr "Operatorklasse %s für Zugriffsmethode %s" +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)" -#: catalog/dependency.c:2433 +#: utils/misc/guc.c:5877 utils/misc/guc.c:5925 utils/misc/guc.c:6757 #, c-format -msgid "operator %d (%s, %s) of %s: %s" -msgstr "Operator %d (%s, %s) von %s: %s" +msgid "must be superuser to examine \"%s\"" +msgstr "nur Superuser können »%s« ansehen" -#: catalog/dependency.c:2484 +#: utils/misc/guc.c:5991 #, c-format -msgid "function %d (%s, %s) of %s: %s" -msgstr "Funktion %d (%s, %s) von %s: %s" +msgid "SET %s takes only one argument" +msgstr "SET %s darf nur ein Argument haben" -#: catalog/dependency.c:2524 -#, c-format -msgid "rule %s on " -msgstr "Regel %s für " +#: utils/misc/guc.c:6224 +msgid "SET requires parameter name" +msgstr "SET benötigt Parameternamen" -#: catalog/dependency.c:2559 +#: utils/misc/guc.c:6339 #, c-format -msgid "trigger %s on " -msgstr "Trigger %s für " +msgid "attempt to redefine parameter \"%s\"" +msgstr "Versuch, den Parameter »%s« zu redefinieren" -#: catalog/dependency.c:2576 +#: utils/misc/guc.c:7527 utils/init/miscinit.c:1055 #, c-format -msgid "schema %s" -msgstr "Schema %s" +msgid "could not read from file \"%s\": %m" +msgstr "konnte nicht aus Datei »%s« lesen: %m" -#: catalog/dependency.c:2589 +#: utils/misc/guc.c:7648 #, c-format -msgid "text search parser %s" -msgstr "Textsucheparser %s" +msgid "could not parse setting for parameter \"%s\"" +msgstr "konnte Wert von Parameter »%s« nicht lesen" -#: catalog/dependency.c:2604 +#: utils/misc/guc.c:8009 utils/misc/guc.c:8043 #, c-format -msgid "text search dictionary %s" -msgstr "Textsuchewörterbuch %s" +msgid "invalid value for parameter \"%s\": %d" +msgstr "ungültiger Wert für Parameter »%s«: %d" -#: catalog/dependency.c:2619 +#: utils/misc/guc.c:8077 #, c-format -msgid "text search template %s" -msgstr "Textsuchevorlage %s" +msgid "invalid value for parameter \"%s\": %g" +msgstr "ungültiger Wert für Parameter »%s«: %g" -#: catalog/dependency.c:2634 -#, c-format -msgid "text search configuration %s" -msgstr "Textsuchekonfiguration %s" +#: utils/misc/guc.c:8181 commands/variable.c:59 commands/tablespace.c:1167 +#: replication/syncrep.c:661 catalog/namespace.c:3559 +msgid "List syntax is invalid." +msgstr "Die Listensyntax ist ungültig." -#: catalog/dependency.c:2642 +#: utils/misc/guc.c:8205 commands/variable.c:160 #, c-format -msgid "role %s" -msgstr "Rolle %s" +msgid "Unrecognized key word: \"%s\"." +msgstr "Unbekanntes Schlüsselwort: »%s«." -#: catalog/dependency.c:2655 -#, c-format -msgid "database %s" -msgstr "Datenbank %s" +#: utils/misc/guc.c:8267 +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." -#: catalog/dependency.c:2667 -#, c-format -msgid "tablespace %s" -msgstr "Tablespace %s" +#: utils/misc/guc.c:8279 +msgid "SET AUTOCOMMIT TO OFF is no longer supported" +msgstr "SET AUTOCOMMIT TO OFF wird nicht mehr unterstützt" -#: catalog/dependency.c:2676 -#, c-format -msgid "foreign-data wrapper %s" -msgstr "Fremddaten-Wrapper %s" +#: utils/misc/guc.c:8354 +msgid "assertion checking is not supported by this build" +msgstr "Assert-Prüfungen werden von dieser Installation nicht unterstützt" -#: catalog/dependency.c:2685 -#, c-format -msgid "server %s" -msgstr "Server %s" +#: utils/misc/guc.c:8367 +msgid "Bonjour is not supported by this build" +msgstr "Bonjour wird von dieser Installation nicht unterstützt" -#: catalog/dependency.c:2710 -#, c-format -msgid "user mapping for %s" -msgstr "Benutzerabbildung für %s" +#: utils/misc/guc.c:8380 +msgid "SSL is not supported by this build" +msgstr "SSL wird von dieser Installation nicht unterstützt" -#: catalog/dependency.c:2744 -#, c-format -msgid "default privileges on new relations belonging to role %s" -msgstr "Vorgabeprivilegien für neue Relationen von Rolle %s" +#: utils/misc/guc.c:8392 +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:8404 +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." -#: catalog/dependency.c:2749 +#: guc-file.l:274 #, c-format -msgid "default privileges on new sequences belonging to role %s" -msgstr "Vorgabeprivilegien für neue Sequenzen von Rolle %s" +msgid "parameter \"%s\" removed from configuration file, reset to default" +msgstr "" +"Parameter »%s« wurde aus Konfigurationsdatei entfernt, wird auf Standardwert " +"zurückgesetzt" -#: catalog/dependency.c:2754 +#: guc-file.l:333 #, c-format -msgid "default privileges on new functions belonging to role %s" -msgstr "Vorgabeprivilegien für neue Funktionen von Rolle %s" +msgid "parameter \"%s\" changed to \"%s\"" +msgstr "Parameter »%s« auf »%s« gesetzt" -#: catalog/dependency.c:2760 +#: guc-file.l:374 #, c-format -msgid "default privileges belonging to role %s" -msgstr "Vorgabeprivilegien von Rolle %s" +msgid "" +"could not open configuration file \"%s\": maximum nesting depth exceeded" +msgstr "" +"konnte Konfigurationsdatei »%s« nicht öffnen: maximale Verschachtelungstiefe " +"überschritten" -#: catalog/dependency.c:2768 +#: guc-file.l:409 libpq/hba.c:1683 #, c-format -msgid " in schema %s" -msgstr " in Schema %s" +msgid "could not open configuration file \"%s\": %m" +msgstr "konnte Konfigurationsdatei »%s« nicht öffnen: %m" -#: catalog/dependency.c:2785 +#: guc-file.l:589 #, c-format -msgid "extension %s" -msgstr "Erweiterung %s" +msgid "syntax error in file \"%s\" line %u, near end of line" +msgstr "Syntaxfehler in Datei »%s«, Zeile %u, am Ende der Zeile" -#: catalog/dependency.c:2843 +#: guc-file.l:594 #, c-format -msgid "table %s" -msgstr "Tabelle %s" +msgid "syntax error in file \"%s\" line %u, near token \"%s\"" +msgstr "Syntaxfehler in Datei »%s«, Zeile %u, bei »%s«" -#: catalog/dependency.c:2847 +#: utils/misc/tzparser.c:61 #, c-format -msgid "index %s" -msgstr "Index %s" +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" -#: catalog/dependency.c:2851 +#: utils/misc/tzparser.c:68 #, c-format -msgid "sequence %s" -msgstr "Sequenz %s" +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" -#: catalog/dependency.c:2855 +#: utils/misc/tzparser.c:80 #, c-format -msgid "uncataloged table %s" -msgstr "nicht katalogisierte Tabelle %s" +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" -#: catalog/dependency.c:2859 +#: utils/misc/tzparser.c:115 #, c-format -msgid "toast table %s" -msgstr "TOAST-Tabelle %s" +msgid "missing time zone abbreviation in time zone file \"%s\", line %d" +msgstr "fehlende Zeitzonenabkürzung in Zeitzonendatei »%s«, Zeile %d" -#: catalog/dependency.c:2863 +#: utils/misc/tzparser.c:124 #, c-format -msgid "view %s" -msgstr "Sicht %s" +msgid "missing time zone offset in time zone file \"%s\", line %d" +msgstr "fehlender Zeitzonenabstand in Zeitzonendatei »%s«, Zeile %d" -#: catalog/dependency.c:2867 +#: utils/misc/tzparser.c:131 #, c-format -msgid "composite type %s" -msgstr "zusammengesetzter Typ %s" +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" -#: catalog/dependency.c:2871 +#: utils/misc/tzparser.c:154 #, c-format -msgid "foreign table %s" -msgstr "Fremdtabelle %s" +msgid "invalid syntax in time zone file \"%s\", line %d" +msgstr "ungültige Syntax in Zeitzonendatei »%s«, Zeile %d" -#: catalog/dependency.c:2876 +#: utils/misc/tzparser.c:218 #, c-format -msgid "relation %s" -msgstr "Relation %s" +msgid "time zone abbreviation \"%s\" is multiply defined" +msgstr "Zeitzonenabkürzung »%s« ist mehrfach definiert" -#: catalog/dependency.c:2913 +#: utils/misc/tzparser.c:220 #, c-format -msgid "operator family %s for access method %s" -msgstr "Operatorfamilie %s für Zugriffsmethode %s" +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." -#: catalog/heap.c:263 +#: utils/misc/tzparser.c:285 #, c-format -msgid "permission denied to create \"%s.%s\"" -msgstr "keine Berechtigung, um »%s.%s« zu erzeugen" - -#: catalog/heap.c:265 -msgid "System catalog modifications are currently disallowed." -msgstr "Änderungen an Systemkatalogen sind gegenwärtig nicht erlaubt." +msgid "invalid time zone file name \"%s\"" +msgstr "ungültiger Zeitzonen-Dateiname »%s«" -#: catalog/heap.c:388 commands/tablecmds.c:1258 commands/tablecmds.c:1675 -#: commands/tablecmds.c:4228 +#: utils/misc/tzparser.c:298 #, c-format -msgid "tables can have at most %d columns" -msgstr "Tabellen können höchstens %d Spalten haben" +msgid "time zone file recursion limit exceeded in file \"%s\"" +msgstr "Rekursionsbeschränkung für Zeitzonendatei überschritten in Datei »%s«" -#: catalog/heap.c:405 +#: utils/misc/tzparser.c:337 utils/misc/tzparser.c:350 #, c-format -msgid "column name \"%s\" conflicts with a system column name" -msgstr "Spaltenname »%s« steht im Konflikt mit dem Namen einer Systemspalte" +msgid "could not read time zone file \"%s\": %m" +msgstr "konnte Zeitzonendatei »%s« nicht lesen: %m" -#: catalog/heap.c:421 +#: utils/misc/tzparser.c:360 #, c-format -msgid "column name \"%s\" specified more than once" -msgstr "Spaltenname »%s« mehrmals angegeben" +msgid "line is too long in time zone file \"%s\", line %d" +msgstr "Zeile ist zu lang in Zeitzonendatei »%s«, Zeile %d" -#: catalog/heap.c:471 +#: utils/misc/tzparser.c:383 #, c-format -msgid "column \"%s\" has type \"unknown\"" -msgstr "Spalte »%s« hat Typ »unknown«" +msgid "@INCLUDE without file name in time zone file \"%s\", line %d" +msgstr "@INCLUDE ohne Dateiname in Zeitzonendatei »%s«, Zeile %d" -#: catalog/heap.c:472 -msgid "Proceeding with relation creation anyway." -msgstr "Relation wird trotzdem erzeugt." +#: utils/init/miscinit.c:115 +#, c-format +msgid "could not change directory to \"%s\": %m" +msgstr "konnte nicht in Verzeichnis »%s« wechseln: %m" -#: catalog/heap.c:485 +#: utils/init/miscinit.c:432 utils/adt/acl.c:4852 commands/variable.c:893 +#: commands/variable.c:965 commands/user.c:623 commands/user.c:825 +#: commands/user.c:905 commands/user.c:1056 #, c-format -msgid "column \"%s\" has pseudo-type %s" -msgstr "Spalte »%s« hat Pseudotyp %s" +msgid "role \"%s\" does not exist" +msgstr "Rolle »%s« existiert nicht" -#: catalog/heap.c:508 +#: utils/init/miscinit.c:460 #, c-format -msgid "composite type %s cannot be made a member of itself" -msgstr "zusammengesetzter Typ %s kann nicht Teil von sich selbst werden" +msgid "role \"%s\" is not permitted to log in" +msgstr "Rolle »%s« hat keine Berechtigung zum Einloggen" -#: catalog/heap.c:550 +#: utils/init/miscinit.c:478 #, 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" +msgid "too many connections for role \"%s\"" +msgstr "zu viele Verbindungen von Rolle »%s«" -#: 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 "" -"Verwenden Sie die COLLATE-Klausel, um die Sortierfolge explizit zu setzen." +#: utils/init/miscinit.c:538 +msgid "permission denied to set session authorization" +msgstr "keine Berechtigung, um Sitzungsauthorisierung zu setzen" -#: catalog/heap.c:1003 catalog/index.c:767 commands/tablecmds.c:2308 +#: utils/init/miscinit.c:618 #, c-format -msgid "relation \"%s\" already exists" -msgstr "Relation »%s« existiert bereits" +msgid "invalid role OID: %u" +msgstr "ungültige Rollen-OID: %u" -#: 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 +#: utils/init/miscinit.c:750 #, c-format -msgid "type \"%s\" already exists" -msgstr "Typ »%s« existiert bereits" - -#: 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 "" -"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." +msgid "could not create lock file \"%s\": %m" +msgstr "konnte Sperrdatei »%s« nicht erstellen: %m" -#: catalog/heap.c:2122 +#: utils/init/miscinit.c:764 #, c-format -msgid "check constraint \"%s\" already exists" -msgstr "Check-Constraint »%s« existiert bereits" +msgid "could not open lock file \"%s\": %m" +msgstr "konnte Sperrdatei »%s« nicht öffnen: %m" -#: catalog/heap.c:2266 catalog/pg_constraint.c:645 commands/tablecmds.c:5302 +#: utils/init/miscinit.c:770 #, c-format -msgid "constraint \"%s\" for relation \"%s\" already exists" -msgstr "Constraint »%s« existiert bereits für Relation »%s«" +msgid "could not read lock file \"%s\": %m" +msgstr "konnte Sperrdatei »%s« nicht lesen: %m" -#: catalog/heap.c:2270 +#: utils/init/miscinit.c:818 #, c-format -msgid "merging constraint \"%s\" with inherited definition" -msgstr "Constraint »%s« wird mit geerbter Definition zusammengeführt" - -#: catalog/heap.c:2368 -msgid "cannot use column references in default expression" -msgstr "Spaltenverweise können nicht in Vorgabeausdrücken verwendet werden" - -#: catalog/heap.c:2376 -msgid "default expression must not return a set" -msgstr "Vorgabeausdruck kann keine Ergebnismenge zurückgeben" - -#: catalog/heap.c:2384 -msgid "cannot use subquery in default expression" -msgstr "Unteranfragen können nicht in Vorgabeausdrücken verwendet werden" - -#: catalog/heap.c:2388 -msgid "cannot use aggregate function in default expression" -msgstr "Aggregatfunktionen können nicht in Vorgabeausdrücken verwendet werden" - -#: catalog/heap.c:2392 -msgid "cannot use window function in default expression" -msgstr "Fensterfunktionen können nicht in Vorgabeausdrücken verwendet werden" +msgid "lock file \"%s\" already exists" +msgstr "Sperrdatei »%s« existiert bereits" -#: catalog/heap.c:2411 rewrite/rewriteHandler.c:992 +#: utils/init/miscinit.c:822 #, 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: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 "Sie müssen den Ausdruck umschreiben oder eine Typumwandlung vornehmen." +msgid "Is another postgres (PID %d) running in data directory \"%s\"?" +msgstr "" +"Läuft bereits ein anderer postgres-Prozess (PID %d) im Datenverzeichnis »%s«?" -#: catalog/heap.c:2462 +#: utils/init/miscinit.c:824 #, 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:2471 commands/typecmds.c:2385 -msgid "cannot use subquery in check constraint" -msgstr "Unteranfragen können nicht in Check-Constraints verwendet werden" - -#: catalog/heap.c:2475 commands/typecmds.c:2389 -msgid "cannot use aggregate function in check constraint" -msgstr "Aggregatfunktionen können nicht in Check-Constraints verwendet werden" - -#: catalog/heap.c:2479 commands/typecmds.c:2393 -msgid "cannot use window function in check constraint" -msgstr "Fensterfunktionen können nicht in Check-Constraints verwendet werden" - -#: catalog/heap.c:2718 -msgid "unsupported ON COMMIT and foreign key combination" -msgstr "nicht unterstützte Kombination aus ON COMMIT und Fremdschlüssel" +msgid "Is another postmaster (PID %d) running in data directory \"%s\"?" +msgstr "" +"Läuft bereits ein anderer postmaster-Prozess (PID %d) im Datenverzeichnis " +"»%s«?" -#: catalog/heap.c:2719 +#: utils/init/miscinit.c:827 #, c-format -msgid "" -"Table \"%s\" references \"%s\", but they do not have the same ON COMMIT " -"setting." +msgid "Is another postgres (PID %d) using socket file \"%s\"?" msgstr "" -"Tabelle »%s« verweist auf »%s«, aber sie haben nicht die gleiche ON-COMMIT-" -"Einstellung" +"Verwendet bereits ein anderer postgres-Prozess (PID %d) die Socketdatei »%s«?" -#: catalog/heap.c:2724 -msgid "cannot truncate a table referenced in a foreign key constraint" +#: utils/init/miscinit.c:829 +#, c-format +msgid "Is another postmaster (PID %d) using socket file \"%s\"?" msgstr "" -"kann eine Tabelle, die in einen Fremdschlüssel-Constraint eingebunden ist, " -"nicht leeren" +"Verwendet bereits ein anderer postmaster-Prozess (PID %d) die Socketdatei " +"»%s«?" -#: catalog/heap.c:2725 +#: utils/init/miscinit.c:865 #, c-format -msgid "Table \"%s\" references \"%s\"." -msgstr "Tabelle »%s« verweist auf »%s«." +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" -#: catalog/heap.c:2727 +#: utils/init/miscinit.c:868 #, c-format -msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." +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 "" -"Leeren Sie die Tabelle »%s« gleichzeitig oder verwenden Sie TRUNCATE ... " -"CASCADE." +"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«." -#: catalog/index.c:200 parser/parse_utilcmd.c:1294 parser/parse_utilcmd.c:1380 +#: utils/init/miscinit.c:884 #, 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:218 -msgid "primary keys cannot be expressions" -msgstr "Primärschlüssel können keine Ausdrücke sein" +msgid "could not remove old lock file \"%s\": %m" +msgstr "konnte alte Sperrdatei »%s« nicht löschen: %m" -#: catalog/index.c:728 catalog/index.c:1122 -msgid "user-defined indexes on system catalog tables are not supported" +#: 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 "" -"benutzerdefinierte Indexe für Systemkatalogtabellen werden nicht unterstützt" +"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." -#: catalog/index.c:738 -msgid "concurrent index creation on system catalog tables is not supported" -msgstr "" -"nebenläufige Indexerzeugung für Systemkatalogtabellen wird nicht unterstützt" +#: utils/init/miscinit.c:927 utils/init/miscinit.c:938 +#: utils/init/miscinit.c:948 +#, c-format +msgid "could not write lock file \"%s\": %m" +msgstr "konnte Sperrdatei »%s« nicht schreiben: %m" -#: catalog/index.c:756 -msgid "shared indexes cannot be created after initdb" -msgstr "Cluster-globale Indexe können nicht nach initdb erzeugt werden" +#: utils/init/miscinit.c:1046 utils/init/miscinit.c:1161 +#: utils/error/elog.c:1537 access/transam/xlog.c:2515 +#: access/transam/xlog.c:4232 access/transam/xlog.c:4326 +#: access/transam/xlog.c:4482 replication/basebackup.c:895 +#: storage/file/copydir.c:165 storage/file/copydir.c:255 storage/smgr/md.c:553 +#: storage/smgr/md.c:810 +#, c-format +msgid "could not open file \"%s\": %m" +msgstr "konnte Datei »%s« nicht öffnen: %m" -#: catalog/index.c:1719 +#: utils/init/miscinit.c:1155 utils/init/miscinit.c:1168 #, c-format -msgid "building index \"%s\" on table \"%s\"" -msgstr "baue Index »%s« von Tabelle »%s«" +msgid "\"%s\" is not a valid data directory" +msgstr "»%s« ist kein gültiges Datenverzeichnis" -#: catalog/index.c:2777 -msgid "cannot reindex temporary tables of other sessions" -msgstr "kann temporäre Tabellen anderer Sitzungen nicht reindizieren" +#: utils/init/miscinit.c:1157 +#, c-format +msgid "File \"%s\" is missing." +msgstr "Die Datei »%s« fehlt." -#: catalog/namespace.c:235 catalog/namespace.c:309 commands/trigger.c:4153 +#: utils/init/miscinit.c:1170 #, c-format -msgid "cross-database references are not implemented: \"%s.%s.%s\"" -msgstr "Verweise auf andere Datenbanken sind nicht implementiert: »%s.%s.%s«" +msgid "File \"%s\" does not contain valid data." +msgstr "Die Datei »%s« enthält keine gültigen Daten." -#: catalog/namespace.c:253 catalog/namespace.c:320 -msgid "temporary tables cannot specify a schema name" -msgstr "temporäre Tabellen können keinen Schemanamen angeben" +#: utils/init/miscinit.c:1172 +msgid "You might need to initdb." +msgstr "Sie müssen möglicherweise initdb ausführen." -#: 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« existiert nicht" +#: utils/init/miscinit.c:1179 access/transam/xlog.c:4754 +#: access/transam/xlog.c:4763 access/transam/xlog.c:4787 +#: access/transam/xlog.c:4794 access/transam/xlog.c:4801 +#: access/transam/xlog.c:4806 access/transam/xlog.c:4813 +#: access/transam/xlog.c:4820 access/transam/xlog.c:4827 +#: access/transam/xlog.c:4834 access/transam/xlog.c:4841 +#: access/transam/xlog.c:4848 access/transam/xlog.c:4857 +#: access/transam/xlog.c:4864 access/transam/xlog.c:4873 +#: access/transam/xlog.c:4880 access/transam/xlog.c:4889 +#: access/transam/xlog.c:4896 +msgid "database files are incompatible with server" +msgstr "Datenbankdateien sind inkompatibel mit Server" -#: catalog/namespace.c:281 commands/lockcmds.c:127 parser/parse_relation.c:848 -#: parser/parse_relation.c:856 utils/adt/regproc.c:810 +#: utils/init/miscinit.c:1180 #, c-format -msgid "relation \"%s\" does not exist" -msgstr "Relation »%s« existiert nicht" - -#: catalog/namespace.c:355 catalog/namespace.c:2548 -msgid "no schema has been selected to create in" -msgstr "kein Schema für die Objekterzeugung ausgewählt" +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." -#: catalog/namespace.c:1865 commands/tsearchcmds.c:319 +#: utils/init/miscinit.c:1228 #, c-format -msgid "text search parser \"%s\" does not exist" -msgstr "Textsucheparser »%s« existiert nicht" +msgid "invalid list syntax in parameter \"%s\"" +msgstr "ungültige Listensyntax für Parameter »%s«" -#: catalog/namespace.c:1988 commands/tsearchcmds.c:768 +#: utils/init/miscinit.c:1265 #, c-format -msgid "text search dictionary \"%s\" does not exist" -msgstr "Textsuchewörterbuch »%s« existiert nicht" +msgid "loaded library \"%s\"" +msgstr "Bibliothek »%s« geladen" -#: catalog/namespace.c:2112 commands/tsearchcmds.c:1303 +#: utils/init/postinit.c:225 #, c-format -msgid "text search template \"%s\" does not exist" -msgstr "Textsuchevorlage »%s« existiert nicht" +msgid "replication connection authorized: user=%s" +msgstr "Replikationsverbindung authorisiert: Benutzer=%s" -#: catalog/namespace.c:2235 commands/tsearchcmds.c:1753 -#: commands/tsearchcmds.c:1909 +#: utils/init/postinit.c:229 #, c-format -msgid "text search configuration \"%s\" does not exist" -msgstr "Textsuchekonfiguration »%s« existiert nicht" +msgid "connection authorized: user=%s database=%s" +msgstr "Verbindung authorisiert: Benutzer=%s Datenbank=%s" -#: catalog/namespace.c:2348 parser/parse_expr.c:775 parser/parse_target.c:1085 +#: utils/init/postinit.c:260 #, c-format -msgid "cross-database references are not implemented: %s" -msgstr "Verweise auf andere Datenbanken sind nicht implementiert: %s" +msgid "database \"%s\" has disappeared from pg_database" +msgstr "Datenbank »%s« ist aus pg_database verschwunden" -#: catalog/namespace.c:2354 parser/parse_expr.c:782 parser/parse_target.c:1092 -#: gram.y:11615 gram.y:12814 +#: utils/init/postinit.c:262 #, c-format -msgid "improper qualified name (too many dotted names): %s" -msgstr "falscher qualifizierter Name (zu viele Namensteile): %s" +msgid "Database OID %u now seems to belong to \"%s\"." +msgstr "Datenbank-OID %u gehört jetzt anscheinend zu »%s«." -#: catalog/namespace.c:2482 +#: utils/init/postinit.c:282 #, c-format -msgid "%s is already in schema \"%s\"" -msgstr "%s ist bereits in Schema »%s«" +msgid "database \"%s\" is not currently accepting connections" +msgstr "Datenbank »%s« akzeptiert gegenwärtig keine Verbindungen" -#: catalog/namespace.c:2490 -msgid "cannot move objects into or out of temporary schemas" -msgstr "Objekte können nicht in oder aus temporären Schemas verschoben werden" +#: utils/init/postinit.c:295 +#, c-format +msgid "permission denied for database \"%s\"" +msgstr "keine Berechtigung für Datenbank »%s«" -#: catalog/namespace.c:2496 -msgid "cannot move objects into or out of TOAST schema" -msgstr "Objekte können nicht in oder aus TOAST-Schemas verschoben werden" +#: utils/init/postinit.c:296 +msgid "User does not have CONNECT privilege." +msgstr "Benutzer hat das CONNECT-Privileg nicht." -#: catalog/namespace.c:2569 catalog/namespace.c:3554 catalog/namespace.c:3557 -#: commands/schemacmds.c:253 commands/schemacmds.c:322 +#: utils/init/postinit.c:313 #, c-format -msgid "schema \"%s\" does not exist" -msgstr "Schema »%s« existiert nicht" +msgid "too many connections for database \"%s\"" +msgstr "zu viele Verbindungen für Datenbank »%s«" -#: catalog/namespace.c:2600 -#, c-format -msgid "improper relation name (too many dotted names): %s" -msgstr "falscher Relationsname (zu viele Namensteile): %s" +#: utils/init/postinit.c:335 utils/init/postinit.c:342 +msgid "database locale is incompatible with operating system" +msgstr "Datenbank-Locale ist inkompatibel mit Betriebssystem" -#: catalog/namespace.c:2999 +#: utils/init/postinit.c:336 #, c-format -msgid "collation \"%s\" for encoding \"%s\" does not exist" -msgstr "Sortierfolge »%s« für Kodierung »%s« existiert nicht" +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." -#: catalog/namespace.c:3051 -#, c-format -msgid "conversion \"%s\" does not exist" -msgstr "Konversion »%s« existiert nicht" +#: utils/init/postinit.c:338 utils/init/postinit.c:345 +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." -#: catalog/namespace.c:3256 +#: utils/init/postinit.c:343 #, c-format -msgid "permission denied to create temporary tables in database \"%s\"" +msgid "" +"The database was initialized with LC_CTYPE \"%s\", which is not recognized " +"by setlocale()." msgstr "" -"keine Berechtigung, um temporäre Tabellen in Datenbank »%s« zu erzeugen" +"Die Datenbank wurde mit LC_CTYPE »%s« initialisiert, was von setlocale() " +"nicht erkannt wird." -#: catalog/namespace.c:3272 -msgid "cannot create temporary tables during recovery" -msgstr "" -"während der Wiederherstellung können keine temporäre Tabellen erzeugt werden" +#: utils/init/postinit.c:608 +msgid "no roles are defined in this database system" +msgstr "in diesem Datenbanksystem sind keine Rollen definiert" -#: 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 "Die Listensyntax ist ungültig." +#: utils/init/postinit.c:609 +#, c-format +msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;." +msgstr "Sie sollten sofort CREATE USER \"%s\" SUPERUSER; ausführen." -#: catalog/objectaddress.c:286 -msgid "database name cannot be qualified" -msgstr "Datenbankname kann nicht qualifiziert werden" +#: utils/init/postinit.c:632 +msgid "new replication connections are not allowed during database shutdown" +msgstr "" +"während des Herunterfahrens der Datenbank sind keine neuen " +"Replikationsverbindungen erlaubt" -#: catalog/objectaddress.c:289 commands/extension.c:1585 -#: commands/extension.c:2245 -msgid "extension name cannot be qualified" -msgstr "Erweiterungsname kann nicht qualifiziert werden" +#: utils/init/postinit.c:636 +msgid "must be superuser to connect during database shutdown" +msgstr "" +"nur Superuser können während des Herunterfahrens der Datenbank verbinden" -#: catalog/objectaddress.c:292 -msgid "tablespace name cannot be qualified" -msgstr "Tablespace-Name kann nicht qualifiziert werden" +#: utils/init/postinit.c:646 +msgid "must be superuser to connect in binary upgrade mode" +msgstr "nur Superuser können im Binary-Upgrade-Modus verbinden" -#: catalog/objectaddress.c:295 -msgid "role name cannot be qualified" -msgstr "Rollenname kann nicht qualifiziert werden" +#: utils/init/postinit.c:660 +msgid "" +"remaining connection slots are reserved for non-replication superuser " +"connections" +msgstr "" +"die verbleibenden Verbindungen sind für Superuser auf Nicht-" +"Replikationsverbindungen reserviert" -#: catalog/objectaddress.c:298 commands/schemacmds.c:178 -msgid "schema name cannot be qualified" -msgstr "Schemaname kann nicht qualifiziert werden" +#: utils/init/postinit.c:675 +msgid "must be replication role to start walsender" +msgstr "nur Replikationsrollen können WAL-Sender starten" -#: catalog/objectaddress.c:301 -msgid "language name cannot be qualified" -msgstr "Sprachname kann nicht qualifiziert werden" +#: utils/init/postinit.c:718 utils/init/postinit.c:786 +#: utils/init/postinit.c:803 commands/dbcommands.c:791 +#: commands/dbcommands.c:936 commands/dbcommands.c:1035 +#: commands/dbcommands.c:1208 commands/dbcommands.c:1393 +#: commands/dbcommands.c:1478 commands/dbcommands.c:1905 commands/comment.c:60 +#, c-format +msgid "database \"%s\" does not exist" +msgstr "Datenbank »%s« existiert nicht" -#: catalog/objectaddress.c:304 -msgid "foreign-data wrapper name cannot be qualified" -msgstr "Fremddaten-Wrapper-Name kann nicht qualifiziert werden" +#: utils/init/postinit.c:735 +#, c-format +msgid "database %u does not exist" +msgstr "Datenbank %u existiert nicht" -#: catalog/objectaddress.c:307 -msgid "server name cannot be qualified" -msgstr "Servername kann nicht qualifiziert werden" +#: utils/init/postinit.c:787 +msgid "It seems to have just been dropped or renamed." +msgstr "Sie wurde anscheinend gerade gelöscht oder umbenannt." -#: 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 +#: utils/init/postinit.c:805 #, c-format -msgid "\"%s\" is not a table" -msgstr "»%s« ist keine Tabelle" +msgid "The database subdirectory \"%s\" is missing." +msgstr "Das Datenbankunterverzeichnis »%s« fehlt." -#: 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 +#: utils/init/postinit.c:810 #, c-format -msgid "\"%s\" is not a view" -msgstr "»%s« ist keine Sicht" +msgid "could not access directory \"%s\": %m" +msgstr "konnte nicht auf Verzeichnis »%s« zugreifen: %m" -#: catalog/objectaddress.c:419 commands/tablecmds.c:231 -#: commands/tablecmds.c:2249 commands/tablecmds.c:2508 -#: commands/tablecmds.c:3796 commands/tablecmds.c:8928 +#: utils/error/elog.c:311 utils/error/elog.c:1156 #, c-format -msgid "\"%s\" is not a foreign table" -msgstr "»%s« ist keine Fremdtabelle" +msgid "error occurred at %s:%d before error message processing is available\n" +msgstr "Fehler geschah bei %s:%d bevor Fehlermeldungsverarbeitung bereit war\n" -#: catalog/objectaddress.c:819 catalog/pg_largeobject.c:200 -#: libpq/be-fsstubs.c:287 +#: utils/error/elog.c:1547 #, c-format -msgid "must be owner of large object %u" -msgstr "Berechtigung nur für Eigentümer des Large Object %u" +msgid "could not reopen file \"%s\" as stderr: %m" +msgstr "konnte Datei »%s« nicht als stderr neu öffnen: %m" -#: catalog/objectaddress.c:834 commands/functioncmds.c:1525 -#: commands/functioncmds.c:1814 +#: utils/error/elog.c:1560 #, 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" +msgid "could not reopen file \"%s\" as stdout: %m" +msgstr "konnte Datei »%s« nicht als stdou neu öffnen: %m" -#: catalog/objectaddress.c:865 catalog/objectaddress.c:881 -msgid "must be superuser" -msgstr "Berechtigung nur für Superuser" +#: utils/error/elog.c:1950 utils/error/elog.c:1960 utils/error/elog.c:1970 +msgid "[unknown]" +msgstr "[unbekannt]" -#: catalog/objectaddress.c:872 -msgid "must have CREATEROLE privilege" -msgstr "Berechtigung nur mit CREATEROLE-Privileg" +#: utils/error/elog.c:2321 utils/error/elog.c:2601 utils/error/elog.c:2679 +msgid "missing error text" +msgstr "fehlender Fehlertext" -#: catalog/pg_aggregate.c:100 -msgid "cannot determine transition data type" -msgstr "kann Übergangsdatentyp nicht bestimmen" +#: utils/error/elog.c:2324 utils/error/elog.c:2327 utils/error/elog.c:2682 +#: utils/error/elog.c:2685 +#, c-format +msgid " at character %d" +msgstr " bei Zeichen %d" -#: catalog/pg_aggregate.c:101 -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." +#: utils/error/elog.c:2337 utils/error/elog.c:2344 +msgid "DETAIL: " +msgstr "DETAIL: " + +#: utils/error/elog.c:2351 +msgid "HINT: " +msgstr "TIPP: " + +#: utils/error/elog.c:2358 +msgid "QUERY: " +msgstr "ANFRAGE: " + +#: utils/error/elog.c:2365 +msgid "CONTEXT: " +msgstr "ZUSAMMENHANG: " + +#: utils/error/elog.c:2375 +#, c-format +msgid "LOCATION: %s, %s:%d\n" +msgstr "ORT: %s, %s:%d\n" + +#: utils/error/elog.c:2382 +#, c-format +msgid "LOCATION: %s:%d\n" +msgstr "ORT: %s:%d\n" + +#: utils/error/elog.c:2396 +msgid "STATEMENT: " +msgstr "ANWEISUNG: " + +#. translator: This string will be truncated at 47 +#. characters expanded. +#: utils/error/elog.c:2800 +#, c-format +msgid "operating system error %d" +msgstr "Betriebssystemfehler %d" -#: catalog/pg_aggregate.c:124 -#, c-format -msgid "return type of transition function %s is not %s" -msgstr "Rückgabetyp der Übergangsfunktion %s ist nicht %s" +#: utils/error/elog.c:2995 +msgid "DEBUG" +msgstr "DEBUG" -#: 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 "" -"Anfangswert darf nicht ausgelassen werden, wenn Übergangsfunktion strikt ist " -"und Übergangstyp nicht mit Eingabetyp kompatibel ist" +#: utils/error/elog.c:2999 +msgid "LOG" +msgstr "LOG" -#: catalog/pg_aggregate.c:175 catalog/pg_proc.c:205 -msgid "cannot determine result data type" -msgstr "kann Ergebnisdatentyp nicht bestimmen" +#: utils/error/elog.c:3002 +msgid "INFO" +msgstr "INFO" -#: catalog/pg_aggregate.c:176 -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." +#: utils/error/elog.c:3005 +msgid "NOTICE" +msgstr "HINWEIS" -#: catalog/pg_aggregate.c:188 catalog/pg_proc.c:211 -msgid "unsafe use of pseudo-type \"internal\"" -msgstr "unsichere Verwendung des Pseudotyps »internal«" +#: utils/error/elog.c:3008 +msgid "WARNING" +msgstr "WARNUNG" -#: catalog/pg_aggregate.c:189 catalog/pg_proc.c:212 -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." +#: utils/error/elog.c:3011 +msgid "ERROR" +msgstr "FEHLER" -#: catalog/pg_aggregate.c:197 -msgid "sort operator can only be specified for single-argument aggregates" -msgstr "" -"Sortieroperator kann nur für Aggregatfunktionen mit einem Argument angegeben " -"werden" +#: utils/error/elog.c:3014 +msgid "FATAL" +msgstr "FATAL" -#: 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 "Funktion %s existiert nicht" +#: utils/error/elog.c:3017 +msgid "PANIC" +msgstr "PANIK" -#: catalog/pg_aggregate.c:337 -#, c-format -msgid "function %s returns a set" -msgstr "Funktion %s gibt eine Ergebnismenge zurück" +#: utils/error/assert.c:37 +msgid "TRAP: ExceptionalCondition: bad arguments\n" +msgstr "TRAP: ExceptionalCondition: fehlerhafte Argumente\n" -#: catalog/pg_aggregate.c:362 +#: utils/error/assert.c:40 #, c-format -msgid "function %s requires run-time type coercion" -msgstr "Funktion %s erfordert Typumwandlung zur Laufzeit" +msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n" +msgstr "TRAP: %s(»%s«, Datei: »%s«, Zeile: %d)\n" -#: catalog/pg_constraint.c:654 commands/typecmds.c:2320 +#: utils/sort/tuplesort.c:3131 #, c-format -msgid "constraint \"%s\" for domain \"%s\" already exists" -msgstr "Constraint »%s« für Domäne »%s« existiert bereits" +msgid "could not create unique index \"%s\"" +msgstr "konnte Unique Index »%s« nicht erstellen" -#: catalog/pg_constraint.c:773 +#: utils/sort/tuplesort.c:3133 #, c-format -msgid "table \"%s\" has multiple constraints named \"%s\"" -msgstr "Tabelle »%s« hat mehrere Constraints namens »%s«" +msgid "Key %s is duplicated." +msgstr "Schlüssel %s ist doppelt vorhanden." -#: catalog/pg_constraint.c:785 +#: utils/sort/logtape.c:213 #, c-format -msgid "constraint \"%s\" for table \"%s\" does not exist" -msgstr "Constraint »%s« für Tabelle »%s« existiert nicht" +msgid "could not write block %ld of temporary file: %m" +msgstr "konnte Block %ld von temporärer Datei nicht schreiben: %m" -#: catalog/pg_conversion.c:67 -#, c-format -msgid "conversion \"%s\" already exists" -msgstr "Konversion »%s« existiert bereits" +#: utils/sort/logtape.c:215 +msgid "Perhaps out of disk space?" +msgstr "Vielleicht kein Platz mehr auf der Festplatte?" -#: catalog/pg_conversion.c:80 +#: utils/sort/logtape.c:232 #, c-format -msgid "default conversion for %s to %s already exists" -msgstr "Standardumwandlung von %s nach %s existiert bereits" +msgid "could not read block %ld of temporary file: %m" +msgstr "konnte Block %ld von temporärer Datei nicht lesen: %m" -#: catalog/pg_depend.c:293 +#: utils/fmgr/fmgr.c:272 #, c-format -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" +msgid "internal function \"%s\" is not in internal lookup table" +msgstr "interne Funktion »%s« ist nicht in der internen Suchtabelle" -#: catalog/pg_enum.c:113 catalog/pg_enum.c:199 +#: utils/fmgr/fmgr.c:482 #, c-format -msgid "invalid enum label \"%s\"" -msgstr "ungültiges Enum-Label »%s«" +msgid "unrecognized API version %d reported by info function \"%s\"" +msgstr "Info-Funktion »%2$s« berichtete unbekannte API-Version %1$d" -#: catalog/pg_enum.c:114 catalog/pg_enum.c:200 +#: utils/fmgr/fmgr.c:853 utils/fmgr/fmgr.c:2114 #, c-format -msgid "Labels must be %d characters or less." -msgstr "Labels müssen %d oder weniger Zeichen haben." +msgid "function %u has too many arguments (%d, maximum is %d)" +msgstr "Funktion %u hat zu viele Argumente (%d, Maximum ist %d)" -#: catalog/pg_enum.c:264 +#: utils/fmgr/fmgr.c:2507 #, c-format -msgid "\"%s\" is not an existing enum label" -msgstr "»%s« ist kein existierendes Enum-Label" - -#: catalog/pg_enum.c:325 -msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade" -msgstr "" +msgid "language validation function %u called for language %u instead of %u" +msgstr "Sprachvalidierungsfunktion %u wurde für Sprache %u statt %u aufgerufen" -#: catalog/pg_namespace.c:52 commands/schemacmds.c:259 +#: utils/fmgr/dfmgr.c:125 #, c-format -msgid "schema \"%s\" already exists" -msgstr "Schema »%s« existiert bereits" +msgid "could not find function \"%s\" in file \"%s\"" +msgstr "konnte Funktion »%s« nicht in Datei »%s« finden" -#: catalog/pg_operator.c:221 catalog/pg_operator.c:363 +#: utils/fmgr/dfmgr.c:204 utils/fmgr/dfmgr.c:413 utils/fmgr/dfmgr.c:461 #, c-format -msgid "\"%s\" is not a valid operator name" -msgstr "»%s« ist kein gültiger Operatorname" +msgid "could not access file \"%s\": %m" +msgstr "konnte nicht auf Datei »%s« zugreifen: %m" -#: catalog/pg_operator.c:372 -msgid "only binary operators can have commutators" -msgstr "nur binäre Operatoren können Kommutatoren haben" +#: utils/fmgr/dfmgr.c:242 +#, c-format +msgid "could not load library \"%s\": %s" +msgstr "konnte Bibliothek »%s« nicht laden: %s" -#: catalog/pg_operator.c:376 -msgid "only binary operators can have join selectivity" -msgstr "nur binäre Operatoren können Join-Selectivity haben" +#: utils/fmgr/dfmgr.c:274 +#, c-format +msgid "incompatible library \"%s\": missing magic block" +msgstr "inkompatible Bibliothek »%s«: magischer Block fehlt" -#: catalog/pg_operator.c:380 -msgid "only binary operators can merge join" -msgstr "nur binäre Operatoren können an einem Merge-Verbund teilnehmen" +#: utils/fmgr/dfmgr.c:276 +msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro." +msgstr "Erweiterungsbibliotheken müssen das Makro PG_MODULE_MAGIC verwenden." -#: catalog/pg_operator.c:384 -msgid "only binary operators can hash" -msgstr "nur binäre Operatoren können eine Hash-Funktion haben" +#: utils/fmgr/dfmgr.c:312 +#, c-format +msgid "incompatible library \"%s\": version mismatch" +msgstr "inkompatible Bibliothek »%s«: Version stimmt nicht überein" -#: catalog/pg_operator.c:395 -msgid "only boolean operators can have negators" -msgstr "nur Boole'sche Operatoren können Negatoren haben" +#: utils/fmgr/dfmgr.c:314 +#, c-format +msgid "Server is version %d.%d, library is version %d.%d." +msgstr "Serverversion ist %d.%d, Bibliotheksversion ist %d.%d." -#: catalog/pg_operator.c:399 -msgid "only boolean operators can have restriction selectivity" -msgstr "nur Boole'sche Operatoren können Restriction-Selectivity haben" +#: utils/fmgr/dfmgr.c:333 +#, c-format +msgid "Server has FUNC_MAX_ARGS = %d, library has %d." +msgstr "Server hat FUNC_MAX_ARGS = %d, Bibliothek hat %d." -#: catalog/pg_operator.c:403 -msgid "only boolean operators can have join selectivity" -msgstr "nur Boole'sche Operatoren können Join-Selectivity haben" +#: utils/fmgr/dfmgr.c:342 +#, c-format +msgid "Server has INDEX_MAX_KEYS = %d, library has %d." +msgstr "Server hat INDEX_MAX_KEYS = %d, Bibliothek hat %d." -#: catalog/pg_operator.c:407 -msgid "only boolean operators can merge join" -msgstr "nur Boole'sche Operatoren können an einem Merge-Verbund teilnehmen" +#: utils/fmgr/dfmgr.c:351 +#, c-format +msgid "Server has NAMEDATALEN = %d, library has %d." +msgstr "Server hat NAMEDATALEN = %d, Bibliothek hat %d." -#: catalog/pg_operator.c:411 -msgid "only boolean operators can hash" -msgstr "nur Boole'sche Operatoren können eine Hash-Funktion haben" +#: utils/fmgr/dfmgr.c:360 +#, c-format +msgid "Server has FLOAT4PASSBYVAL = %s, library has %s." +msgstr "Server hat FLOAT4PASSBYVAL = %s, Bibliothek hat %s." -#: catalog/pg_operator.c:423 +#: utils/fmgr/dfmgr.c:369 #, c-format -msgid "operator %s already exists" -msgstr "Operator %s existiert bereits" +msgid "Server has FLOAT8PASSBYVAL = %s, library has %s." +msgstr "Server hat FLOAT8PASSBYVAL = %s, Bibliothek hat %s." -#: catalog/pg_operator.c:616 -msgid "operator cannot be its own negator or sort operator" -msgstr "Operator kann nicht sein eigener Negator oder Sortierungsoperator sein" +#: utils/fmgr/dfmgr.c:376 +msgid "Magic block has unexpected length or padding difference." +msgstr "Magischer Block hat unerwartete Länge oder unterschiedliches Padding." -#: catalog/pg_proc.c:124 parser/parse_func.c:1526 parser/parse_func.c:1566 +#: utils/fmgr/dfmgr.c:379 #, c-format -msgid "functions cannot have more than %d argument" -msgid_plural "functions cannot have more than %d arguments" -msgstr[0] "Funktionen können nicht mehr als %d Argument haben" -msgstr[1] "Funktionen können nicht mehr als %d Argumente haben" - -#: catalog/pg_proc.c:206 -msgid "" -"A function returning a polymorphic type must have at least one polymorphic " -"argument." -msgstr "" -"Eine Funktion, die einen polymorphischen Typ zurückgibt, muss mindestens ein " -"polymorphisches Argument haben." +msgid "incompatible library \"%s\": magic block mismatch" +msgstr "inkompatible Bibliothek »%s«: magischer Block stimmt überein" -#: catalog/pg_proc.c:224 +#: utils/fmgr/dfmgr.c:545 #, c-format -msgid "\"%s\" is already an attribute of type %s" -msgstr "»%s« ist schon ein Attribut von Typ %s" +msgid "access to library \"%s\" is not allowed" +msgstr "Zugriff auf Bibliothek »%s« ist nicht erlaubt" -#: catalog/pg_proc.c:363 +#: utils/fmgr/dfmgr.c:572 #, c-format -msgid "function \"%s\" already exists with same argument types" -msgstr "Funktion »%s« existiert bereits mit den selben Argumenttypen" +msgid "invalid macro name in dynamic library path: %s" +msgstr "ungültiger Makroname in Parameter »dynamic_library_path«: %s" -#: catalog/pg_proc.c:377 catalog/pg_proc.c:399 -msgid "cannot change return type of existing function" -msgstr "kann Rückgabetyp einer bestehenden Funktion nicht ändern" +#: utils/fmgr/dfmgr.c:617 +msgid "zero-length component in parameter \"dynamic_library_path\"" +msgstr "eine Komponente im Parameter »dynamic_library_path« hat Länge null" -#: 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 "Verwenden Sie zuerst DROP FUNCTION." +#: utils/fmgr/dfmgr.c:636 +msgid "component in parameter \"dynamic_library_path\" is not an absolute path" +msgstr "" +"eine Komponente im Parameter »dynamic_library_path« ist kein absoluter Pfad" -#: catalog/pg_proc.c:400 -msgid "Row type defined by OUT parameters is different." -msgstr "Der von OUT-Parametern bestimmte Zeilentyp ist verschieden." +#: utils/fmgr/funcapi.c:60 utils/mmgr/portalmem.c:985 commands/prepare.c:751 +#: commands/extension.c:1711 commands/extension.c:1820 +#: commands/extension.c:2013 foreign/foreign.c:350 executor/functions.c:785 +#: executor/execQual.c:1704 executor/execQual.c:1729 executor/execQual.c:2089 +#: executor/execQual.c:5242 replication/walsender.c:1421 +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" -#: catalog/pg_proc.c:441 +#: utils/fmgr/funcapi.c:354 #, c-format -msgid "cannot change name of input parameter \"%s\"" -msgstr "kann Name des Eingabeparameters »%s« nicht ändern" +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:1208 utils/fmgr/funcapi.c:1239 +msgid "number of aliases does not match number of columns" +msgstr "Anzahl der Aliasnamen stimmt nicht mit der Anzahl der Spalten überein" -#: catalog/pg_proc.c:465 -msgid "cannot remove parameter defaults from existing function" -msgstr "kann Parametervorgabewerte einer bestehenden Funktion nicht entfernen" +#: utils/fmgr/funcapi.c:1233 +msgid "no column alias was provided" +msgstr "Spaltenalias fehlt" -#: catalog/pg_proc.c:491 -msgid "cannot change data type of existing parameter default value" -msgstr "kann Datentyp eines bestehenden Parametervorgabewerts nicht ändern" +#: utils/fmgr/funcapi.c:1257 +msgid "could not determine row description for function returning record" +msgstr "" +"konnte Zeilenbeschreibung für Funktion, die »record« zurückgibt, nicht " +"ermitteln" -#: catalog/pg_proc.c:503 +#: 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 "function \"%s\" is an aggregate function" -msgstr "Funktion »%s« ist eine Aggregatfunktion" +msgid "unexpected encoding ID %d for ISO 8859 character sets" +msgstr "unerwartete Kodierungs-ID %d für ISO-8859-Zeichensatz" -#: catalog/pg_proc.c:508 +#: 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 "function \"%s\" is not an aggregate function" -msgstr "Funktion »%s« ist keine Aggregatfunktion" +msgid "unexpected encoding ID %d for WIN character sets" +msgstr "unerwartete Kodierungs-ID %d für WIN-Zeichensatz" -#: catalog/pg_proc.c:516 +#: utils/mb/conv.c:509 #, c-format -msgid "function \"%s\" is a window function" -msgstr "Funktion %s ist eine Fensterfunktion" +msgid "invalid encoding number: %d" +msgstr "ungültige Kodierungsnummer: %d" -#: catalog/pg_proc.c:521 -#, c-format -msgid "function \"%s\" is not a window function" -msgstr "Funktion »%s« ist keine Fensterfunktion" +#: utils/mb/encnames.c:485 +msgid "encoding name too long" +msgstr "Kodierungsname zu lang" -#: catalog/pg_proc.c:695 +#: utils/mb/mbutils.c:281 #, c-format -msgid "there is no built-in function named \"%s\"" -msgstr "es gibt keine eingebaute Funktion namens %s" +msgid "conversion between %s and %s is not supported" +msgstr "Umwandlung zwischen %s und %s wird nicht unterstützt" -#: catalog/pg_proc.c:787 +#: utils/mb/mbutils.c:351 #, c-format -msgid "SQL functions cannot return type %s" -msgstr "SQL-Funktionen können keinen Rückgabetyp »%s« haben" +msgid "" +"default conversion function for encoding \"%s\" to \"%s\" does not exist" +msgstr "Standardumwandlung von Kodierung »%s« nach »%s« existiert nicht" -#: catalog/pg_proc.c:802 +#: utils/mb/mbutils.c:375 utils/mb/mbutils.c:676 #, c-format -msgid "SQL functions cannot have arguments of type %s" -msgstr "SQL-Funktionen können keine Argumente vom Typ »%s« haben" +msgid "String of %d bytes is too long for encoding conversion." +msgstr "Zeichenkette mit %d Bytes ist zu lang für Kodierungsumwandlung." -#: catalog/pg_proc.c:888 executor/functions.c:1162 +#: utils/mb/mbutils.c:462 #, c-format -msgid "SQL function \"%s\"" -msgstr "SQL-Funktion »%s«" +msgid "invalid source encoding name \"%s\"" +msgstr "ungültiger Quellkodierungsname »%s«" -#: catalog/pg_shdepend.c:680 +#: utils/mb/mbutils.c:467 #, 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" -"und Objekte in %d anderen Datenbank (Liste im Serverlog)" -msgstr[1] "" -"\n" -"und Objekte in %d anderen Datenbanken (Liste im Serverlog)" +msgid "invalid destination encoding name \"%s\"" +msgstr "ungültiger Zielkodierungsname »%s«" -#: catalog/pg_shdepend.c:992 +#: utils/mb/mbutils.c:515 utils/adt/xml.c:159 #, c-format -msgid "role %u was concurrently dropped" -msgstr "Rolle %u wurde gleichzeitig gelöscht" +msgid "invalid encoding name \"%s\"" +msgstr "ungültiger Kodierungsname »%s«" -#: catalog/pg_shdepend.c:1011 +#: utils/mb/mbutils.c:589 #, c-format -msgid "tablespace %u was concurrently dropped" -msgstr "Tablespace %u wurde gleichzeitig gelöscht" +msgid "invalid byte value for encoding \"%s\": 0x%02x" +msgstr "ungültiger Byte-Wert für Kodierung »%s«: 0x%02x" -#: catalog/pg_shdepend.c:1026 +#: utils/mb/wchar.c:1777 #, c-format -msgid "database %u was concurrently dropped" -msgstr "Datenbank %u wurde gleichzeitig gelöscht" +msgid "invalid byte sequence for encoding \"%s\": 0x%s" +msgstr "ungültige Byte-Sequenz für Kodierung »%s«: 0x%s" -#: catalog/pg_shdepend.c:1070 +#: utils/mb/wchar.c:1806 #, c-format -msgid "owner of %s" -msgstr "Eigentümer von %s" +msgid "character 0x%s of encoding \"%s\" has no equivalent in \"%s\"" +msgstr "Zeichen 0x%s in Kodierung »%s« hat keine Entsprechung in »%s«" -#: catalog/pg_shdepend.c:1072 +#: utils/mmgr/aset.c:417 #, c-format -msgid "privileges for %s" -msgstr "Privilegien für %s" +msgid "Failed while creating memory context \"%s\"." +msgstr "Fehler während der Erzeugung des Speicherkontexts »%s«." -#. translator: %s will always be "database %s" -#: catalog/pg_shdepend.c:1080 +#: utils/mmgr/aset.c:588 utils/mmgr/aset.c:766 utils/mmgr/aset.c:967 #, 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" +msgid "Failed on request of size %lu." +msgstr "Fehler bei Anfrage mit Größe %lu." -#: catalog/pg_shdepend.c:1191 catalog/pg_shdepend.c:1287 +#: utils/mmgr/portalmem.c:207 #, 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" +msgid "cursor \"%s\" already exists" +msgstr "Cursor »%s« existiert bereits" -#: catalog/pg_type.c:241 +#: utils/mmgr/portalmem.c:211 #, c-format -msgid "invalid type internal size %d" -msgstr "ungültige interne Typgröße %d" +msgid "closing existing cursor \"%s\"" +msgstr "bestehender Cursor »%s« wird geschlossen" -#: catalog/pg_type.c:257 catalog/pg_type.c:265 catalog/pg_type.c:273 -#: catalog/pg_type.c:282 +#: utils/mmgr/portalmem.c:478 #, 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" +msgid "cannot drop active portal \"%s\"" +msgstr "aktives Portal »%s« kann nicht gelöscht werden" -#: catalog/pg_type.c:289 -#, 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" +#: utils/mmgr/portalmem.c:668 +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" -#: catalog/pg_type.c:298 catalog/pg_type.c:304 -#, c-format -msgid "alignment \"%c\" is invalid for variable-length type" -msgstr "Ausrichtung »%c« ist ungültig für Typen variabler Länge" +#: utils/mmgr/portalmem.c:989 commands/prepare.c:755 commands/extension.c:1715 +#: commands/extension.c:1824 commands/extension.c:2017 foreign/foreign.c:355 +#: replication/walsender.c:1425 +msgid "materialize mode required, but it is not allowed in this context" +msgstr "" +"Materialisierungsmodus wird benötigt, ist aber in diesem Zusammenhang nicht " +"erlaubt" -#: catalog/pg_type.c:312 -msgid "fixed-size types must have storage PLAIN" -msgstr "Typen mit fester Größe müssen Storage-Typ PLAIN haben" +#: utils/adt/windowfuncs.c:243 +msgid "argument of ntile must be greater than zero" +msgstr "Argument von ntile muss größer als null sein" -#: catalog/pg_type.c:761 -#, c-format -msgid "could not form array type name for type \"%s\"" -msgstr "konnte keinen Arraytypnamen für Datentyp »%s« erzeugen" +#: utils/adt/windowfuncs.c:465 +msgid "argument of nth_value must be greater than zero" +msgstr "Argument von nth_value muss größer als null sein" -#: catalog/toasting.c:142 -msgid "shared tables cannot be toasted after initdb" +#: utils/adt/xml.c:138 +msgid "unsupported XML feature" +msgstr "nicht unterstützte XML-Funktionalität" + +#: utils/adt/xml.c:139 +msgid "This functionality requires the server to be built with libxml support." msgstr "" -"Cluster-globale Tabellen können nach initdb nicht mehr getoastet werden" +"Diese Funktionalität verlangt, dass der Server mit Libxml-Unterstützung " +"gebaut wird." -#: commands/collationcmds.c:81 -#, c-format -msgid "collation attribute \"%s\" not recognized" -msgstr "Attribut »%s« für Sortierfolge unbekannt" +#: utils/adt/xml.c:140 +msgid "You need to rebuild PostgreSQL using --with-libxml." +msgstr "Sie müssen PostgreSQL mit --with-libxml neu bauen." -#: commands/collationcmds.c:126 -msgid "parameter \"lc_collate\" parameter must be specified" -msgstr "Parameter »lc_collate« muss angegeben werden" +#: utils/adt/xml.c:405 utils/adt/xml.c:410 +msgid "invalid XML comment" +msgstr "ungültiger XML-Kommentar" -#: commands/collationcmds.c:131 -msgid "parameter \"lc_ctype\" must be specified" -msgstr "Parameter »lc_ctype« muss angegeben werden" +#: utils/adt/xml.c:539 +msgid "not an XML document" +msgstr "kein XML-Dokument" -#: commands/collationcmds.c:177 -#, c-format -msgid "collation \"%s\" does not exist, skipping" -msgstr "Sortierfolge »%s« existiert nicht, wird übersprungen" +#: utils/adt/xml.c:692 utils/adt/xml.c:715 +msgid "invalid XML processing instruction" +msgstr "ungültige XML-Verarbeitungsanweisung" -#: commands/collationcmds.c:237 commands/collationcmds.c:416 +#: utils/adt/xml.c:693 #, c-format -msgid "collation \"%s\" for encoding \"%s\" already exists in schema \"%s\"" -msgstr "Sortierfolge »%s« für Kodierung »%s« existiert bereits in Schema »%s«" +msgid "XML processing instruction target name cannot be \"%s\"." +msgstr "Die Zielangabe der XML-Verarbeitungsanweisung darf nicht »%s« sein." -#: commands/collationcmds.c:249 commands/collationcmds.c:428 -#, c-format -msgid "collation \"%s\" already exists in schema \"%s\"" -msgstr "Sortierfolge »%s« existiert bereits in Schema »%s«" +#: utils/adt/xml.c:716 +msgid "XML processing instruction cannot contain \"?>\"." +msgstr "XML-Verarbeitungsanweisung darf nicht »?>« enthalten." -#: commands/aggregatecmds.c:103 +#: utils/adt/xml.c:795 +msgid "xmlvalidate is not implemented" +msgstr "xmlvalidate ist nicht implementiert" + +#: utils/adt/xml.c:880 +msgid "could not initialize XML library" +msgstr "konnte XML-Bibliothek nicht initialisieren" + +#: utils/adt/xml.c:881 #, c-format -msgid "aggregate attribute \"%s\" not recognized" -msgstr "Attribut »%s« für Aggregatfunktion unbekannt" +msgid "" +"libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u." +msgstr "" +"libxml2 hat inkompatiblen char-Typ: sizeof(char)=%u, sizeof(xmlChar)=%u." -#: commands/aggregatecmds.c:113 -msgid "aggregate stype must be specified" -msgstr "»stype« für Aggregatfunktion muss angegeben werden" +#: utils/adt/xml.c:1448 +msgid "Invalid character value." +msgstr "Ungültiger Zeichenwert." -#: commands/aggregatecmds.c:117 -msgid "aggregate sfunc must be specified" -msgstr "»sfunc« für Aggregatfunktion muss angegeben werden" +#: utils/adt/xml.c:1451 +msgid "Space required." +msgstr "Leerzeichen benötigt." -#: commands/aggregatecmds.c:134 -msgid "aggregate input type must be specified" -msgstr "Eingabetyp für Aggregatfunktion muss angegeben werden" +#: utils/adt/xml.c:1454 +msgid "standalone accepts only 'yes' or 'no'." +msgstr "standalone akzeptiert nur »yes« oder »no«." -#: commands/aggregatecmds.c:159 -msgid "basetype is redundant with aggregate input type specification" -msgstr "" -"Angabe »basetype« ist überflüssig bei Angabe des Eingabetyps der " -"Aggregatfunktion" +#: utils/adt/xml.c:1457 +msgid "Malformed declaration: missing version." +msgstr "Fehlerhafte Deklaration: Version fehlt." -#: commands/aggregatecmds.c:191 -#, c-format -msgid "aggregate transition data type cannot be %s" -msgstr "Übergangsdatentyp von Aggregatfunktion kann nicht %s sein" +#: utils/adt/xml.c:1460 +msgid "Missing encoding in text declaration." +msgstr "Fehlende Kodierung in Textdeklaration." -#: commands/aggregatecmds.c:230 -#, c-format -msgid "aggregate %s(%s) does not exist, skipping" -msgstr "Aggregatfunktion %s(%s) existiert nicht, wird übersprungen" +#: utils/adt/xml.c:1463 +msgid "Parsing XML declaration: '?>' expected." +msgstr "Beim Parsen der XML-Deklaration: »?>« erwartet." -#: commands/aggregatecmds.c:292 commands/functioncmds.c:1122 +#: utils/adt/xml.c:1466 #, c-format -msgid "function %s already exists in schema \"%s\"" -msgstr "Funktion %s existiert bereits in Schema »%s«" +msgid "Unrecognized libxml error code: %d." +msgstr "Unbekannter Libxml-Fehlercode: %d." -#: commands/alter.c:423 -#, fuzzy, c-format -msgid "must be superuser to SET SCHEMA of %s" -msgstr "nur Superuser können Dateien lesen" +#: utils/adt/xml.c:1717 utils/adt/date.c:217 +msgid "date out of range" +msgstr "date ist außerhalb des gültigen Bereichs" + +#: utils/adt/xml.c:1718 +msgid "XML does not support infinite date values." +msgstr "XML unterstützt keine unendlichen Datumswerte." + +#: utils/adt/xml.c:1740 utils/adt/xml.c:1747 utils/adt/xml.c:1767 +#: utils/adt/xml.c:1774 utils/adt/timestamp.c:226 utils/adt/timestamp.c:269 +#: utils/adt/timestamp.c:491 utils/adt/timestamp.c:531 +#: utils/adt/timestamp.c:2531 utils/adt/timestamp.c:2552 +#: utils/adt/timestamp.c:2565 utils/adt/timestamp.c:2574 +#: utils/adt/timestamp.c:2632 utils/adt/timestamp.c:2655 +#: utils/adt/timestamp.c:2668 utils/adt/timestamp.c:2679 +#: utils/adt/timestamp.c:3115 utils/adt/timestamp.c:3245 +#: utils/adt/timestamp.c:3286 utils/adt/timestamp.c:3374 +#: utils/adt/timestamp.c:3421 utils/adt/timestamp.c:3532 +#: utils/adt/timestamp.c:3845 utils/adt/timestamp.c:3982 +#: utils/adt/timestamp.c:3989 utils/adt/timestamp.c:4003 +#: utils/adt/timestamp.c:4013 utils/adt/timestamp.c:4076 +#: utils/adt/timestamp.c:4216 utils/adt/timestamp.c:4226 +#: utils/adt/timestamp.c:4441 utils/adt/timestamp.c:4520 +#: utils/adt/timestamp.c:4527 utils/adt/timestamp.c:4554 +#: utils/adt/timestamp.c:4558 utils/adt/timestamp.c:4615 +#: utils/adt/formatting.c:3247 utils/adt/formatting.c:3279 +#: utils/adt/formatting.c:3347 utils/adt/date.c:913 utils/adt/date.c:960 +#: utils/adt/date.c:1516 utils/adt/date.c:1553 utils/adt/date.c:2426 +#: utils/adt/nabstime.c:480 utils/adt/nabstime.c:523 utils/adt/nabstime.c:553 +#: utils/adt/nabstime.c:596 +msgid "timestamp out of range" +msgstr "timestamp ist außerhalb des gültigen Bereichs" + +#: utils/adt/xml.c:1741 utils/adt/xml.c:1768 +msgid "XML does not support infinite timestamp values." +msgstr "XML unterstützt keine unendlichen timestamp-Werte." -#: commands/alter.c:451 +#: utils/adt/xml.c:2074 utils/adt/xml.c:2238 commands/portalcmds.c:168 +#: commands/portalcmds.c:222 executor/execCurrent.c:66 #, c-format -msgid "%s already exists in schema \"%s\"" -msgstr "%s existiert bereits in Schema »%s«" +msgid "cursor \"%s\" does not exist" +msgstr "Cursor »%s« existiert nicht" -#: commands/analyze.c:163 -#, c-format -msgid "skipping analyze of \"%s\" --- lock not available" -msgstr "überspringe Analyze von »%s« --- Sperre nicht verfügbar" +#: utils/adt/xml.c:2153 +msgid "invalid query" +msgstr "ungültige Anfrage" -#: commands/analyze.c:180 -#, c-format -msgid "skipping \"%s\" --- only superuser can analyze it" -msgstr "überspringe »%s« --- nur Superuser kann sie analysieren" +#: utils/adt/xml.c:3377 +msgid "invalid array for XML namespace mapping" +msgstr "ungültiges Array for XML-Namensraumabbildung" -#: commands/analyze.c:184 -#, c-format -msgid "skipping \"%s\" --- only superuser or database owner can analyze it" +#: utils/adt/xml.c:3378 +msgid "" +"The array must be two-dimensional with length of the second axis equal to 2." msgstr "" -"überspringe »%s« --- nur Superuser oder Eigentümer der Datenbank kann sie " -"analysieren" +"Das Array muss zweidimensional sein und die Länge der zweiten Achse muss " +"gleich 2 sein." -#: commands/analyze.c:188 -#, 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" +#: utils/adt/xml.c:3402 +msgid "empty XPath expression" +msgstr "leerer XPath-Ausdruck" -#: commands/analyze.c:204 -#, c-format -msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables" -msgstr "überspringe »%s« --- kann Nicht-Tabellen oder besondere Systemtabellen nicht analysieren" +#: utils/adt/xml.c:3450 +msgid "neither namespace name nor URI may be null" +msgstr "weder Namensraumname noch URI dürfen NULL sein" -#: commands/analyze.c:297 +#: utils/adt/xml.c:3457 #, c-format -msgid "analyzing \"%s.%s\" inheritance tree" -msgstr "analysiere Vererbungsbaum von »%s.%s«" +msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" +msgstr "konnte XML-Namensraum mit Namen »%s« und URI »%s« nicht registrieren" -#: commands/analyze.c:302 +#: utils/adt/regexp.c:194 tsearch/spell.c:439 #, c-format -msgid "analyzing \"%s.%s\"" -msgstr "analysiere »%s.%s«" +msgid "invalid regular expression: %s" +msgstr "ungültiger regulärer Ausdruck: %s" -#: commands/analyze.c:623 +#: utils/adt/regexp.c:274 utils/adt/regexp.c:1222 utils/adt/varlena.c:2860 #, c-format -msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s" -msgstr "automatisches Analysieren von Tabelle »%s.%s.%s« Systembenutzung: %s" +msgid "regular expression failed: %s" +msgstr "regulärer Ausdruck fehlgeschlagen: %s" -#: commands/analyze.c:1263 +#: utils/adt/regexp.c:411 #, 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" +msgid "invalid regexp option: \"%c\"" +msgstr "ungültige Option für regulären Ausdruck: »%c«" -#: commands/analyze.c:1524 executor/execQual.c:2734 -msgid "could not convert row type" -msgstr "konnte Zeilentyp nicht umwandeln" +#: utils/adt/regexp.c:683 utils/adt/like_match.c:289 +msgid "invalid escape string" +msgstr "ungültige ESCAPE-Zeichenkette" -#: commands/async.c:567 -msgid "channel name cannot be empty" -msgstr "Kanalname kann nicht leer sein" +#: utils/adt/regexp.c:684 utils/adt/like_match.c:290 +msgid "Escape string must be empty or one character." +msgstr "ESCAPE-Zeichenkette muss null oder ein Zeichen lang sein." -#: commands/async.c:572 -msgid "channel name too long" -msgstr "Kanalname zu lang" +#: utils/adt/regexp.c:883 +msgid "regexp_split does not support the global option" +msgstr "regexp_split unterstützt die »Global«-Option nicht" -#: commands/async.c:579 -msgid "payload string too long" -msgstr "Payload-Zeichenkette zu lang" +#: utils/adt/datum.c:80 utils/adt/datum.c:92 +msgid "invalid Datum pointer" +msgstr "ungültiger »Datum«-Zeiger" -#: commands/async.c:763 -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" +#: utils/adt/array_userfuncs.c:48 +msgid "could not determine input data types" +msgstr "konnte Eingabedatentypen nicht bestimmen" -#: commands/async.c:868 -msgid "too many notifications in the NOTIFY queue" -msgstr "zu viele Benachrichtigungen in NOTIFY-Schlange" +#: utils/adt/array_userfuncs.c:82 +msgid "neither input type is an array" +msgstr "keiner der Eingabedatentypen ist ein Array" -#: commands/async.c:1421 -#, c-format -msgid "NOTIFY queue is %.0f%% full" -msgstr "NOTIFY-Schlange ist %.0f%% voll" +#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113 +#: 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/varlena.c:950 +#: utils/adt/varlena.c:1968 utils/adt/int8.c:1247 utils/adt/float.c:1157 +#: utils/adt/float.c:1216 utils/adt/float.c:2767 utils/adt/float.c:2783 +#: utils/adt/varbit.c:1139 utils/adt/varbit.c:1531 utils/adt/arrayfuncs.c:1276 +#: utils/adt/numeric.c:2253 utils/adt/numeric.c:2262 +msgid "integer out of range" +msgstr "integer ist außerhalb des gültigen Bereichs" + +#: utils/adt/array_userfuncs.c:121 +msgid "argument must be empty or one-dimensional array" +msgstr "Argument muss entweder leer oder ein eindimensionales Array sein" + +#: 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 "inkompatible Arrays können nicht aneinandergehängt werden" -#: commands/async.c:1423 +#: utils/adt/array_userfuncs.c:225 #, c-format msgid "" -"The server process with PID %d is among those with the oldest transactions." +"Arrays with element types %s and %s are not compatible for concatenation." msgstr "" -"Der Serverprozess mit PID %d gehört zu denen mit den ältesten Transaktionen." +"Arrays mit Elementtypen %s und %s sind nicht kompatibel für Aneinanderhängen." + +#: utils/adt/array_userfuncs.c:264 +#, c-format +msgid "Arrays of %d and %d dimensions are not compatible for concatenation." +msgstr "" +"Arrays mit %d und %d Dimensionen sind nicht kompatibel für Aneinanderhängen." -#: commands/async.c:1426 +#: utils/adt/array_userfuncs.c:301 msgid "" -"The NOTIFY queue cannot be emptied until that process ends its current " -"transaction." +"Arrays with differing element dimensions are not compatible for " +"concatenation." msgstr "" -"Die NOTIFY-Schlange kann erst geleert werden, wenn dieser Prozess seine " -"aktuelle Transaktion beendet." +"Arrays mit unterschiedlichen Elementdimensionen sind nicht kompatibel für " +"Aneinanderhängen." -#: commands/cluster.c:133 commands/cluster.c:371 -msgid "cannot cluster temporary tables of other sessions" -msgstr "kann temporäre Tabellen anderer Sitzungen nicht clustern" +#: utils/adt/array_userfuncs.c:330 utils/adt/array_userfuncs.c:358 +msgid "Arrays with differing dimensions are not compatible for concatenation." +msgstr "" +"Arrays mit unterschiedlichen Dimensionen sind nicht kompatibel für " +"Aneinanderhängen." -#: commands/cluster.c:163 +#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1238 +#: utils/adt/arrayfuncs.c:2911 utils/adt/arrayfuncs.c:4936 #, c-format -msgid "there is no previously clustered index for table \"%s\"" -msgstr "es gibt keinen bereits geclusterten Index für Tabelle »%s«" +msgid "invalid number of dimensions: %d" +msgstr "ungültige Anzahl Dimensionen: %d" -#: commands/cluster.c:177 commands/tablecmds.c:7602 +#: 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:4940 +#: executor/execQual.c:303 executor/execQual.c:331 executor/execQual.c:3101 #, c-format -msgid "index \"%s\" for table \"%s\" does not exist" -msgstr "Index »%s« für Tabelle »%s« existiert nicht" +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgstr "Anzahl der Arraydimensionen (%d) überschreitet erlaubtes Maximum (%d)" -#: commands/cluster.c:360 -msgid "cannot cluster a shared catalog" -msgstr "globaler Katalog kann nicht geclustert werden" +#: utils/adt/array_userfuncs.c:487 +msgid "could not determine input data type" +msgstr "konnte Eingabedatentypen nicht bestimmen" -#: commands/cluster.c:375 -msgid "cannot vacuum temporary tables of other sessions" -msgstr "temporäre Tabellen anderer Sitzungen können nicht gevacuumt werden" +#: utils/adt/int.c:162 +msgid "int2vector has too many elements" +msgstr "int2vector-Wert hat zu viele Elemente" + +#: utils/adt/int.c:237 +msgid "invalid int2vector data" +msgstr "ungültige int2vector-Daten" + +#: utils/adt/int.c:243 utils/adt/oid.c:212 utils/adt/oid.c:293 +msgid "oidvector has too many elements" +msgstr "oidvector-Wert hat zu viele Elemente" + +#: 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/float.c:1175 +#: utils/adt/float.c:1233 utils/adt/numeric.c:2354 utils/adt/numeric.c:2365 +msgid "smallint out of range" +msgstr "smallint ist außerhalb des gültigen Bereichs" -#: commands/cluster.c:417 +#: 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/timestamp.c:2877 utils/adt/geo_ops.c:4148 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/float.c:820 +#: utils/adt/float.c:884 utils/adt/float.c:2526 utils/adt/float.c:2589 +#: utils/adt/cash.c:507 utils/adt/cash.c:557 utils/adt/cash.c:608 +#: utils/adt/cash.c:657 utils/adt/cash.c:709 utils/adt/cash.c:759 +#: utils/adt/numeric.c:4507 utils/adt/numeric.c:4790 +msgid "division by zero" +msgstr "Division durch Null" + +#: utils/adt/int.c:1362 utils/adt/timestamp.c:4713 utils/adt/timestamp.c:4794 +#: utils/adt/int8.c:1409 +msgid "step size cannot equal zero" +msgstr "Schrittgröße kann nicht gleich null sein" + +#: utils/adt/tsgistidx.c:100 +msgid "gtsvector_in not implemented" +msgstr "gtsvector_in ist nicht implementiert" + +#: utils/adt/bool.c:153 #, c-format -msgid "\"%s\" is not an index for table \"%s\"" -msgstr "»%s« ist kein Index für Tabelle »%s«" +msgid "invalid input syntax for type boolean: \"%s\"" +msgstr "ungültige Eingabesyntax für Typ boolean: »%s«" -#: commands/cluster.c:425 +#: utils/adt/arrayutils.c:93 utils/adt/arrayutils.c:102 +#: utils/adt/arrayutils.c:109 utils/adt/arrayfuncs.c:871 +#: utils/adt/arrayfuncs.c:1473 utils/adt/arrayfuncs.c:2795 +#: utils/adt/arrayfuncs.c:2943 utils/adt/arrayfuncs.c:5036 #, c-format -msgid "" -"cannot cluster on index \"%s\" because access method does not support " -"clustering" +msgid "array size exceeds the maximum allowed (%d)" +msgstr "Arraygröße überschreitet erlaubtes Maximum (%d)" + +#: utils/adt/arrayutils.c:209 +msgid "typmod array must be type cstring[]" +msgstr "Typmod-Array muss Typ cstring[] haben" + +#: utils/adt/arrayutils.c:214 +msgid "typmod array must be one-dimensional" +msgstr "Typmod-Arrays müssen eindimensional sein" + +#: utils/adt/arrayutils.c:219 +msgid "typmod array must not contain nulls" +msgstr "Typmod-Array darf keine NULL-Werte enthalten" + +#: utils/adt/trigfuncs.c:41 +msgid "suppress_redundant_updates_trigger: must be called as trigger" +msgstr "suppress_redundant_updates_trigger: muss als Trigger aufgerufen werden" + +#: utils/adt/trigfuncs.c:47 +msgid "suppress_redundant_updates_trigger: must be called on update" +msgstr "suppress_redundant_updates_trigger: muss bei UPDATE aufgerufen werden" + +#: utils/adt/trigfuncs.c:53 +msgid "suppress_redundant_updates_trigger: must be called before update" msgstr "" -"kann nicht anhand des Index »%s« clustern, weil die Indexmethode Clustern " -"nicht unterstützt" +"suppress_redundant_updates_trigger: muss vor dem UPDATE aufgerufen werden" -#: commands/cluster.c:437 -#, c-format -msgid "cannot cluster on partial index \"%s\"" -msgstr "kann nicht anhand des partiellen Index »%s« clustern" +#: utils/adt/trigfuncs.c:59 +msgid "suppress_redundant_updates_trigger: must be called for each row" +msgstr "" +"suppress_redundant_updates_trigger: muss für jede Zeile aufgerufen werden" -#: commands/cluster.c:451 -#, c-format -msgid "cannot cluster on invalid index \"%s\"" -msgstr "kann nicht anhand des ungültigen Index »%s« clustern" +#: utils/adt/timestamp.c:92 utils/adt/varchar.c:43 utils/adt/date.c:66 +#: utils/adt/varbit.c:51 +msgid "invalid type modifier" +msgstr "ungültige Typmodifikation" -#: commands/cluster.c:870 +#: utils/adt/timestamp.c:97 #, c-format -msgid "clustering \"%s.%s\" using index scan on \"%s\"" -msgstr "clustere »%s.%s« durch Index-Scan von »%s«" +msgid "TIMESTAMP(%d)%s precision must not be negative" +msgstr "Präzision von TIMESTAMP(%d)%s darf nicht negativ sein" -#: commands/cluster.c:876 +#: utils/adt/timestamp.c:103 #, c-format -msgid "clustering \"%s.%s\" using sequential scan and sort" -msgstr "clustere »%s.%s« durch sequenziellen Scan und Sortieren" +msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d" +msgstr "Präzision von TIMESTAMP(%d)%s auf erlaubten Höchstwert %d reduziert" -#: commands/cluster.c:881 commands/vacuumlazy.c:320 +#: utils/adt/timestamp.c:171 utils/adt/timestamp.c:435 #, c-format -msgid "vacuuming \"%s.%s\"" -msgstr "vacuume »%s.%s«" +msgid "timestamp out of range: \"%s\"" +msgstr "timestamp ist außerhalb des gültigen Bereichs: »%s«" -#: commands/cluster.c:1041 +#: utils/adt/timestamp.c:189 utils/adt/timestamp.c:453 +#: utils/adt/timestamp.c:664 #, 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" +msgid "date/time value \"%s\" is no longer supported" +msgstr "Datum/Zeit-Wert »%s« wird nicht mehr unterstützt" + +#: utils/adt/timestamp.c:260 +msgid "timestamp cannot be NaN" +msgstr "timestamp kann nicht NaN sein" -#: commands/cluster.c:1045 +#: utils/adt/timestamp.c:370 #, c-format -msgid "" -"%.0f dead row versions cannot be removed yet.\n" -"%s." -msgstr "" +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:658 utils/adt/timestamp.c:3110 +#: utils/adt/timestamp.c:3240 utils/adt/timestamp.c:3625 +msgid "interval out of range" +msgstr "interval-Wert ist außerhalb des gültigen Bereichs" + +#: utils/adt/timestamp.c:787 utils/adt/timestamp.c:820 +msgid "invalid INTERVAL type modifier" +msgstr "ungültiger Modifikator für Typ INTERVAL" -#: 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 +#: utils/adt/timestamp.c:803 #, c-format -msgid "database \"%s\" does not exist" -msgstr "Datenbank »%s« existiert nicht" +msgid "INTERVAL(%d) precision must not be negative" +msgstr "INTERVAL(%d)-Präzision darf nicht negativ sein" -#: commands/comment.c:97 commands/seclabel.c:113 +#: utils/adt/timestamp.c:809 #, c-format -msgid "\"%s\" is not a table, view, composite type, or foreign table" -msgstr "»%s« ist weder Tabelle, Sicht, zusammengesetzter Typ noch Fremdtabelle" +msgid "INTERVAL(%d) precision reduced to maximum allowed, %d" +msgstr "INTERVAL(%d)-Präzision auf erlaubtes Maximum %d reduziert" -#: commands/constraint.c:59 utils/adt/ri_triggers.c:3082 +#: utils/adt/timestamp.c:1101 #, c-format -msgid "function \"%s\" was not called by trigger manager" -msgstr "Funktion »%s« wurde nicht von Triggermanager aufgerufen" +msgid "interval(%d) precision must be between %d and %d" +msgstr "Präzision von interval(%d) muss zwischen %d und %d sein" -#: commands/constraint.c:66 utils/adt/ri_triggers.c:3091 -#, c-format -msgid "function \"%s\" must be fired AFTER ROW" -msgstr "Funktion »%s« muss AFTER ROW ausgelöst werden" +#: utils/adt/timestamp.c:2307 +msgid "cannot subtract infinite timestamps" +msgstr "kann unendliche timestamp-Werte nicht subtrahieren" -#: commands/constraint.c:80 utils/adt/ri_triggers.c:3112 +#: utils/adt/timestamp.c:3366 utils/adt/timestamp.c:3962 +#: utils/adt/timestamp.c:4021 #, c-format -msgid "function \"%s\" must be fired for INSERT or UPDATE" -msgstr "Funktion »%s« muss von INSERT oder UPDATE ausgelöst werden" +msgid "timestamp units \"%s\" not supported" +msgstr "»timestamp«-Einheit »%s« nicht unterstützt" -#: commands/conversioncmds.c:71 +#: utils/adt/timestamp.c:3380 utils/adt/timestamp.c:4031 #, c-format -msgid "source encoding \"%s\" does not exist" -msgstr "Quellkodierung »%s« existiert nicht" +msgid "timestamp units \"%s\" not recognized" +msgstr "»timestamp«-Einheit »%s« nicht erkannt" -#: commands/conversioncmds.c:78 +#: utils/adt/timestamp.c:3521 utils/adt/timestamp.c:4193 +#: utils/adt/timestamp.c:4234 #, c-format -msgid "destination encoding \"%s\" does not exist" -msgstr "Zielkodierung »%s« existiert nicht" +msgid "timestamp with time zone units \"%s\" not supported" +msgstr "»timestamp with time zone«-Einheit »%s« nicht unterstützt" -#: commands/conversioncmds.c:92 +#: utils/adt/timestamp.c:3538 utils/adt/timestamp.c:4243 #, c-format -msgid "encoding conversion function %s must return type \"void\"" -msgstr "Kodierungskonversionsfunktion %s muss Typ »void« zurückgeben" +msgid "timestamp with time zone units \"%s\" not recognized" +msgstr "»timestamp with time zone«-Einheit »%s« nicht erkannt" -#: commands/conversioncmds.c:152 +#: utils/adt/timestamp.c:3618 utils/adt/timestamp.c:4349 #, c-format -msgid "conversion \"%s\" does not exist, skipping" -msgstr "Konversion »%s« existiert nicht, wird übersprungen" +msgid "interval units \"%s\" not supported" +msgstr "»interval«-Einheit »%s« nicht unterstützt" -#: commands/conversioncmds.c:211 +#: utils/adt/timestamp.c:3634 utils/adt/timestamp.c:4376 #, c-format -msgid "conversion \"%s\" already exists in schema \"%s\"" -msgstr "Konversion »%s« existiert bereits in Schema »%s«" - -#: 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 mit STDOUT oder STDIN wird nicht unterstützt" +msgid "interval units \"%s\" not recognized" +msgstr "»interval«-Einheit »%s« nicht erkannt" -#: commands/copy.c:473 +#: utils/adt/timestamp.c:4446 utils/adt/timestamp.c:4619 #, c-format -msgid "could not write to COPY file: %m" -msgstr "konnte nicht in COPY-Datei schreiben: %m" +msgid "could not convert to time zone \"%s\"" +msgstr "konnte nicht in Zeitzone »%s« umwandeln" -#: commands/copy.c:485 -msgid "connection lost during COPY to stdout" -msgstr "Verbindung während COPY nach STDOUT verloren" +#: utils/adt/timestamp.c:4453 utils/adt/timestamp.c:4626 utils/adt/date.c:2631 +#: utils/adt/datetime.c:928 utils/adt/datetime.c:1657 +#, c-format +msgid "time zone \"%s\" not recognized" +msgstr "Zeitzone »%s« nicht erkannt" -#: commands/copy.c:526 +#: utils/adt/timestamp.c:4478 utils/adt/timestamp.c:4652 #, c-format -msgid "could not read from COPY file: %m" -msgstr "konnte nicht aus COPY-Datei lesen: %m" +msgid "interval time zone \"%s\" must not specify month" +msgstr "Intervall-Zeitzone »%s« darf keinen Monat angeben" -#: 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 "unerwartetes EOF auf Client-Verbindung" +#: utils/adt/selfuncs.c:4932 +msgid "case insensitive matching not supported on type bytea" +msgstr "" +"Mustersuche ohne Rücksicht auf Groß-/Kleinschreibung wird für Typ bytea " +"nicht unterstützt" -#: commands/copy.c:577 -#, c-format -msgid "COPY from stdin failed: %s" -msgstr "COPY FROM STDIN fehlgeschlagen: %s" +#: utils/adt/selfuncs.c:4947 utils/adt/like.c:211 +msgid "could not determine which collation to use for ILIKE" +msgstr "konnte die für ILIKE zu verwendende Sortierfolge nicht bestimmen" + +#: utils/adt/selfuncs.c:4948 utils/adt/varlena.c:1315 +#: utils/adt/formatting.c:1515 utils/adt/formatting.c:1565 +#: utils/adt/formatting.c:1631 utils/adt/formatting.c:1681 +#: utils/adt/formatting.c:1748 utils/adt/formatting.c:1810 +#: utils/adt/like.c:212 commands/indexcmds.c:908 commands/view.c:145 +#: regex/regc_pg_locale.c:259 catalog/heap.c:560 +msgid "Use the COLLATE clause to set the collation explicitly." +msgstr "" +"Verwenden Sie die COLLATE-Klausel, um die Sortierfolge explizit zu setzen." -#: commands/copy.c:593 -#, c-format -msgid "unexpected message type 0x%02X during COPY from stdin" -msgstr "unerwarteter Messagetyp 0x%02X während COPY FROM STDIN" +#: utils/adt/selfuncs.c:5035 +msgid "regular-expression matching not supported on type bytea" +msgstr "" +"Mustersuche mit regulären Ausdrücken wird für Typ bytea nicht unterstützt" -#: commands/copy.c:745 -msgid "must be superuser to COPY to or from a file" -msgstr "nur Superuser können COPY mit Dateien verwenden" +#: utils/adt/varlena.c:246 utils/adt/varlena.c:287 utils/adt/encode.c:441 +#: utils/adt/encode.c:506 +msgid "invalid input syntax for type bytea" +msgstr "ungültige Eingabesyntax für Typ bytea" -#: commands/copy.c:746 -msgid "" -"Anyone can COPY to stdout or from stdin. psql's \\copy command also works " -"for anyone." +#: 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 utils/adt/varbit.c:1032 +#: utils/adt/varbit.c:1134 +msgid "negative substring length not allowed" +msgstr "negative Teilzeichenkettenlänge nicht erlaubt" + +#: utils/adt/varlena.c:1314 +msgid "could not determine which collation to use for string comparison" msgstr "" -"Jeder kann COPY mit STDOUT oder STDIN verwenden. Der Befehl \\copy in psql " -"funktioniert auch für jeden." +"konnte die für den Zeichenkettenvergleich zu verwendende Sortierfolge nicht " +"bestimmen" -#: commands/copy.c:874 +#: utils/adt/varlena.c:1358 utils/adt/varlena.c:1371 #, c-format -msgid "COPY format \"%s\" not recognized" -msgstr "COPY-Format »%s« nicht erkannt" +msgid "could not convert string to UTF-16: error %lu" +msgstr "konnte Zeichenkette nicht in UTF-16 umwandeln: Fehler %lu" -#: commands/copy.c:937 commands/copy.c:951 +#: utils/adt/varlena.c:1386 #, 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" +msgid "could not compare Unicode strings: %m" +msgstr "konnte Unicode-Zeichenketten nicht vergleichen: %m" -#: commands/copy.c:964 +#: utils/adt/varlena.c:2041 utils/adt/varlena.c:2072 utils/adt/varlena.c:2108 +#: utils/adt/varlena.c:2151 #, c-format -msgid "argument to option \"%s\" must be a valid encoding name" -msgstr "Argument von Option »%s« muss ein gültiger Kodierungsname sein" +msgid "index %d out of valid range, 0..%d" +msgstr "Index %d ist außerhalb des gültigen Bereichs, 0..%d" -#: commands/copy.c:970 -#, c-format -msgid "option \"%s\" not recognized" -msgstr "Option »%s« nicht erkannt" +#: utils/adt/varlena.c:2163 utils/adt/varbit.c:1768 +msgid "new bit must be 0 or 1" +msgstr "neues Bit muss 0 oder 1 sein" -#: commands/copy.c:981 -msgid "cannot specify DELIMITER in BINARY mode" -msgstr "DELIMITER kann nicht im BINARY-Modus angegeben werden" +#: utils/adt/varlena.c:2245 utils/adt/varlena.c:2250 utils/adt/regproc.c:1320 +#: utils/adt/regproc.c:1325 +msgid "invalid name syntax" +msgstr "ungültige Namenssyntax" -#: commands/copy.c:986 -msgid "cannot specify NULL in BINARY mode" -msgstr "NULL kann nicht im BINARY-Modus angegeben werden" +#: utils/adt/varlena.c:2956 +msgid "field position must be greater than zero" +msgstr "Feldposition muss größer als null sein" -#: commands/copy.c:1008 -msgid "COPY delimiter must be a single one-byte character" -msgstr "DELIMITER für COPY muss ein einzelnes Ein-Byte-Zeichen sein" +#: utils/adt/varlena.c:3825 utils/adt/varlena.c:3886 +msgid "unterminated conversion specifier" +msgstr "Konvertierungsspezifikation nicht abgeschlossen" -#: commands/copy.c:1015 -msgid "COPY delimiter cannot be newline or carriage return" -msgstr "COPY-Trennzeichen kann nicht Newline oder Carriage Return sein" +#: utils/adt/varlena.c:3849 utils/adt/varlena.c:3865 +msgid "argument number is out of range" +msgstr "Argumentnummer ist außerhalb des zulässigen Bereichs" -#: commands/copy.c:1021 -msgid "COPY null representation cannot use newline or carriage return" +#: utils/adt/varlena.c:3892 +msgid "conversion specifies argument 0, but arguments are numbered from 1" msgstr "" -"COPY NULL-Darstellung kann nicht Newline oder Carriage Return enthalten" - -#: commands/copy.c:1038 -#, c-format -msgid "COPY delimiter cannot be \"%s\"" -msgstr "DELIMITER für COPY darf nicht »%s« sein" - -#: commands/copy.c:1044 -msgid "COPY HEADER available only in CSV mode" -msgstr "COPY HEADER ist nur im CSV-Modus verfügbar" - -#: commands/copy.c:1050 -msgid "COPY quote available only in CSV mode" -msgstr "Quote-Zeichen für COPY ist nur im CSV-Modus verfügbar" +"Konvertierung gibt Argument 0 an, aber die Argumente sind von 1 an nummeriert" -#: commands/copy.c:1055 -msgid "COPY quote must be a single one-byte character" -msgstr "Quote-Zeichen für COPY muss ein einzelnes Ein-Byte-Zeichen sein" +#: utils/adt/varlena.c:3899 +msgid "too few arguments for format" +msgstr "zu wenige Argumente für Format" -#: commands/copy.c:1060 -msgid "COPY delimiter and quote must be different" -msgstr "DELIMITER und QUOTE für COPY müssen verschieden sein" +#: utils/adt/varlena.c:3920 +#, c-format +msgid "unrecognized conversion specifier \"%c\"" +msgstr "unbekannte Konvertierungsspezifikation »%c«" -#: commands/copy.c:1066 -msgid "COPY escape available only in CSV mode" -msgstr "Escape-Zeichen für COPY ist nur im CSV-Modus verfügbar" +#: utils/adt/varlena.c:3949 +msgid "null values cannot be formatted as an SQL identifier" +msgstr "NULL-Werte können nicht als SQL-Bezeichner formatiert werden" -#: commands/copy.c:1071 -msgid "COPY escape must be a single one-byte character" -msgstr "Escape-Zeichen für COPY muss ein einzelnes Ein-Byte-Zeichen sein" +#: utils/adt/like_match.c:104 utils/adt/like_match.c:164 +msgid "LIKE pattern must not end with escape character" +msgstr "LIKE-Muster darf nicht mit Escape-Zeichen enden" -#: commands/copy.c:1077 -msgid "COPY force quote available only in CSV mode" -msgstr "FORCE QUOTE für COPY ist nur im CSV-Modus verfügbar" +#: 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 "ungültige Eingabesyntax für Typ tid: »%s«" -#: commands/copy.c:1081 -msgid "COPY force quote only available using COPY TO" -msgstr "FORCE QUOTE für COPY geht nur bei COPY TO" +#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:1432 utils/adt/geo_ops.c:3493 +#: utils/adt/geo_ops.c:4269 utils/adt/geo_ops.c:5198 +msgid "too many points requested" +msgstr "zu viele Punkte verlangt" -#: commands/copy.c:1087 -msgid "COPY force not null available only in CSV mode" -msgstr "FORCE NOT NULL für COPY ist nur im CSV-Modus verfügbar" +#: utils/adt/geo_ops.c:317 +msgid "could not format \"path\" value" +msgstr "konnte »path«-Wert nicht formatieren" -#: commands/copy.c:1091 -msgid "COPY force not null only available using COPY FROM" -msgstr "FORCE QUOTE für COPY geht nur bei COPY FROM" +#: utils/adt/geo_ops.c:392 +#, c-format +msgid "invalid input syntax for type box: \"%s\"" +msgstr "ungültige Eingabesyntax für Typ box: »%s«" -#: commands/copy.c:1097 -msgid "COPY delimiter must not appear in the NULL specification" -msgstr "Trennzeichen für COPY darf nicht in der NULL-Darstellung erscheinen" +#: utils/adt/geo_ops.c:956 +#, c-format +msgid "invalid input syntax for type line: \"%s\"" +msgstr "ungültige Eingabesyntax für Typ line: »%s«" -#: commands/copy.c:1104 -msgid "CSV quote character must not appear in the NULL specification" -msgstr "CSV-Quote-Zeichen darf nicht in der NULL-Darstellung erscheinen" +#: 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 "Typ »line« ist noch nicht implementiert" -#: commands/copy.c:1166 +#: utils/adt/geo_ops.c:1412 utils/adt/geo_ops.c:1443 #, c-format -msgid "table \"%s\" does not have OIDs" -msgstr "Tabelle »%s« hat keine OIDs" - -#: commands/copy.c:1183 -msgid "COPY (SELECT) WITH OIDS is not supported" -msgstr "COPY (SELECT) WITH OIDS wird nicht unterstützt" +msgid "invalid input syntax for type path: \"%s\"" +msgstr "ungültige Eingabesyntax für Typ path: »%s«" -#: commands/copy.c:1210 -msgid "COPY (SELECT INTO) is not supported" -msgstr "COPY (SELECT INTO) wird nicht unterstützt" +#: utils/adt/geo_ops.c:1482 +msgid "invalid number of points in external \"path\" value" +msgstr "ungültige Anzahl Punkte in externem »path«-Wert" -#: commands/copy.c:1270 +#: utils/adt/geo_ops.c:1825 #, c-format -msgid "FORCE QUOTE column \"%s\" not referenced by COPY" -msgstr "FORCE-QUOTE-Spalte »%s« wird von COPY nicht verwendet" +msgid "invalid input syntax for type point: \"%s\"" +msgstr "ungültige Eingabesyntax für Typ point: »%s«" -#: commands/copy.c:1292 +#: utils/adt/geo_ops.c:2053 #, c-format -msgid "FORCE NOT NULL column \"%s\" not referenced by COPY" -msgstr "Spalte »%s« mit FORCE NOT NULL wird von COPY nicht verwendet" +msgid "invalid input syntax for type lseg: \"%s\"" +msgstr "ungültige Eingabesyntax für Typ lseg: »%s«" -#: commands/copy.c:1356 -#, c-format -msgid "cannot copy from view \"%s\"" -msgstr "kann nicht aus Sicht »%s« kopieren" +#: utils/adt/geo_ops.c:2657 +msgid "function \"dist_lb\" not implemented" +msgstr "Funktion »dist_lb« ist nicht implementiert" -#: commands/copy.c:1358 commands/copy.c:1364 -msgid "Try the COPY (SELECT ...) TO variant." -msgstr "Versuchen Sie die Variante COPY (SELECT ...) TO." +#: utils/adt/geo_ops.c:3170 +msgid "function \"close_lb\" not implemented" +msgstr "Funktion »close_lb« ist nicht implementiert" -#: commands/copy.c:1362 -#, c-format -msgid "cannot copy from foreign table \"%s\"" -msgstr "kann nicht aus Fremdtabelle »%s« kopieren" +#: utils/adt/geo_ops.c:3459 +msgid "cannot create bounding box for empty polygon" +msgstr "kann kein umschließendes Rechteck für leeres Polygon berechnen" -#: commands/copy.c:1368 +#: utils/adt/geo_ops.c:3484 utils/adt/geo_ops.c:3504 #, c-format -msgid "cannot copy from sequence \"%s\"" -msgstr "kann nicht aus Sequenz »%s« kopieren" +msgid "invalid input syntax for type polygon: \"%s\"" +msgstr "ungültige Eingabesyntax für Typ polygon: »%s«" -#: commands/copy.c:1373 -#, c-format -msgid "cannot copy from non-table relation \"%s\"" -msgstr "kann nicht aus Relation »%s«, die keine Tabelle ist, kopieren" +#: utils/adt/geo_ops.c:3544 +msgid "invalid number of points in external \"polygon\" value" +msgstr "ungültige Anzahl Punkte in externem »polygon«-Wert" -#: commands/copy.c:1397 -msgid "relative path not allowed for COPY to file" -msgstr "relativer Pfad bei COPY in Datei nicht erlaubt" +#: utils/adt/geo_ops.c:4067 +msgid "function \"poly_distance\" not implemented" +msgstr "Funktion »poly_distance« ist nicht implementiert" -#: commands/copy.c:1407 -#, c-format -msgid "could not open file \"%s\" for writing: %m" -msgstr "konnte Datei »%s« nicht zum Schreiben öffnen: %m" +#: utils/adt/geo_ops.c:4381 +msgid "function \"path_center\" not implemented" +msgstr "Funktion »path_center« ist nicht implementiert" -#: commands/copy.c:1414 commands/copy.c:2200 -#, c-format -msgid "\"%s\" is a directory" -msgstr "»%s« ist ein Verzeichnis" +#: utils/adt/geo_ops.c:4398 +msgid "open path cannot be converted to polygon" +msgstr "offener Pfad kann nicht in Polygon umgewandelt werden" -#: commands/copy.c:1738 +#: utils/adt/geo_ops.c:4575 utils/adt/geo_ops.c:4585 utils/adt/geo_ops.c:4600 +#: utils/adt/geo_ops.c:4606 #, c-format -msgid "COPY %s, line %d, column %s" -msgstr "COPY %s, Zeile %d, Spalte %s" +msgid "invalid input syntax for type circle: \"%s\"" +msgstr "ungültige Eingabesyntax für Typ circle: »%s«" -#: commands/copy.c:1742 commands/copy.c:1787 -#, c-format -msgid "COPY %s, line %d" -msgstr "COPY %s, Zeile %d" +#: utils/adt/geo_ops.c:4628 utils/adt/geo_ops.c:4636 +msgid "could not format \"circle\" value" +msgstr "konnte »circle«-Wert nicht formatieren" -#: commands/copy.c:1753 -#, c-format -msgid "COPY %s, line %d, column %s: \"%s\"" -msgstr "COPY %s, Zeile %d, Spalte %s: »%s«" +#: utils/adt/geo_ops.c:4663 +msgid "invalid radius in external \"circle\" value" +msgstr "ungültiger Radius in externem »circle«-Wert" -#: commands/copy.c:1761 -#, c-format -msgid "COPY %s, line %d, column %s: null input" -msgstr "COPY %s, Zeile %d, Spalte %s: NULL Eingabe" +#: utils/adt/geo_ops.c:5184 +msgid "cannot convert circle with radius zero to polygon" +msgstr "kann Kreis mit Radius null nicht in Polygon umwandeln" -#: commands/copy.c:1773 -#, c-format -msgid "COPY %s, line %d: \"%s\"" -msgstr "COPY %s, Zeile %d: »%s«" +#: utils/adt/geo_ops.c:5189 +msgid "must request at least 2 points" +msgstr "mindestens 2 Punkte müssen angefordert werden" -#: commands/copy.c:1857 -#, c-format -msgid "cannot copy to view \"%s\"" -msgstr "kann nicht in Sicht »%s« kopieren" +#: utils/adt/geo_ops.c:5233 utils/adt/geo_ops.c:5256 +msgid "cannot convert empty polygon to circle" +msgstr "kann leeres Polygon nicht in Kreis umwandeln" -#: commands/copy.c:1862 +#: utils/adt/varchar.c:48 utils/adt/varbit.c:56 #, c-format -msgid "cannot copy to foreign table \"%s\"" -msgstr "kann nicht in Fremdtabelle »%s« kopieren" +msgid "length for type %s must be at least 1" +msgstr "Länge von Typ %s muss mindestens 1 sein" -#: commands/copy.c:1867 +#: utils/adt/varchar.c:52 utils/adt/varbit.c:61 #, c-format -msgid "cannot copy to sequence \"%s\"" -msgstr "kann nicht in Sequenz »%s« kopieren" +msgid "length for type %s cannot exceed %d" +msgstr "Länge von Typ %s kann %d nicht überschreiten" -#: commands/copy.c:1872 +#: utils/adt/varchar.c:152 utils/adt/varchar.c:305 #, c-format -msgid "cannot copy to non-table relation \"%s\"" -msgstr "kann nicht in Relation »%s« kopieren, die keine Tabelle ist" +msgid "value too long for type character(%d)" +msgstr "Wert zu lang für Typ character(%d)" -#: commands/copy.c:2193 utils/adt/genfile.c:122 +#: utils/adt/varchar.c:467 utils/adt/varchar.c:588 #, c-format -msgid "could not open file \"%s\" for reading: %m" -msgstr "konnte Datei »%s« nicht zum Lesen öffnen: %m" - -#: commands/copy.c:2219 -msgid "COPY file signature not recognized" -msgstr "COPY-Datei-Signatur nicht erkannt" - -#: commands/copy.c:2224 -msgid "invalid COPY file header (missing flags)" -msgstr "ungültiger COPY-Dateikopf (Flags fehlen)" - -#: commands/copy.c:2230 -msgid "unrecognized critical flags in COPY file header" -msgstr "unbekannte kritische Flags im COPY-Dateikopf" +msgid "value too long for type character varying(%d)" +msgstr "Wert zu lang für Typ character varying(%d)" -#: commands/copy.c:2236 -msgid "invalid COPY file header (missing length)" -msgstr "ungültiger COPY-Dateikopf (Länge fehlt)" +#: 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 "ungültige Eingabesyntax für ganze Zahl: »%s«" -#: commands/copy.c:2243 -msgid "invalid COPY file header (wrong length)" -msgstr "ungültiger COPY-Dateikopf (falsche Länge)" +#: utils/adt/int8.c:114 +#, c-format +msgid "value \"%s\" is out of range for type bigint" +msgstr "Wert »%s« ist außerhalb des gültigen Bereichs für Typ bigint" -#: commands/copy.c:2376 commands/copy.c:3058 commands/copy.c:3275 -msgid "extra data after last expected column" -msgstr "zusätzliche Daten nach letzter erwarteter Spalte" +#: 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/varbit.c:1611 utils/adt/numeric.c:2306 +msgid "bigint out of range" +msgstr "bigint ist außerhalb des gültigen Bereichs" -#: commands/copy.c:2386 -msgid "missing data for OID column" -msgstr "fehlende Daten für OID-Spalte" +#: utils/adt/int8.c:1366 +msgid "OID out of range" +msgstr "OID ist außerhalb des gültigen Bereichs" -#: commands/copy.c:2392 -msgid "null OID in COPY data" -msgstr "OID ist NULL in COPY-Daten" +#: utils/adt/float.c:54 +msgid "value out of range: overflow" +msgstr "Wert ist außerhalb des gültigen Bereichs: Überlauf" -#: commands/copy.c:2402 commands/copy.c:2501 -msgid "invalid OID in COPY data" -msgstr "ungültige OID in COPY-Daten" +#: utils/adt/float.c:59 +msgid "value out of range: underflow" +msgstr "Wert ist außerhalb des gültigen Bereichs: Unterlauf" -#: commands/copy.c:2417 +#: utils/adt/float.c:206 utils/adt/float.c:270 utils/adt/float.c:326 #, c-format -msgid "missing data for column \"%s\"" -msgstr "fehlende Daten für Spalte »%s«" +msgid "invalid input syntax for type real: \"%s\"" +msgstr "ungültige Eingabesyntax für Typ real: »%s«" -#: commands/copy.c:2476 -msgid "received copy data after EOF marker" -msgstr "" +#: utils/adt/float.c:265 +#, c-format +msgid "\"%s\" is out of range for type real" +msgstr "»%s« ist außerhalb des gültigen Bereichs für Typ real" -#: commands/copy.c:2483 +#: utils/adt/float.c:427 utils/adt/float.c:491 utils/adt/float.c:547 +#: utils/adt/numeric.c:3969 utils/adt/numeric.c:3995 #, c-format -msgid "row field count is %d, expected %d" -msgstr "Feldanzahl in Zeile ist %d, erwartet wurden %d" +msgid "invalid input syntax for type double precision: \"%s\"" +msgstr "ungültige Eingabesyntax für Typ double precision: »%s«" -#: commands/copy.c:2822 commands/copy.c:2839 -msgid "literal carriage return found in data" -msgstr "Carriage-Return-Zeichen in Daten gefunden" +#: utils/adt/float.c:486 +#, 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" -#: commands/copy.c:2823 commands/copy.c:2840 -msgid "unquoted carriage return found in data" -msgstr "ungequotetes Carriage-Return-Zeichen in Daten gefunden" +#: utils/adt/float.c:1359 utils/adt/numeric.c:5183 +msgid "cannot take square root of a negative number" +msgstr "Quadratwurzel von negativer Zahl kann nicht ermittelt werden" -#: commands/copy.c:2825 commands/copy.c:2842 -msgid "Use \"\\r\" to represent carriage return." -msgstr "Verwenden Sie »\\r«, um ein Carriage-Return-Zeichen darzustellen." +#: utils/adt/float.c:1401 utils/adt/numeric.c:2166 +msgid "zero raised to a negative power is undefined" +msgstr "null hoch eine negative Zahl ist undefiniert" -#: commands/copy.c:2826 commands/copy.c:2843 -msgid "Use quoted CSV field to represent carriage return." +#: utils/adt/float.c:1405 utils/adt/numeric.c:2172 +msgid "a negative number raised to a non-integer power yields a complex result" msgstr "" -"Verwenden Sie ein gequotetes CSV-Feld, um ein Carriage-Return-Zeichen " -"darzustellen." +"eine negative Zahl hoch eine nicht ganze Zahl ergibt ein komplexes Ergebnis" -#: commands/copy.c:2855 -msgid "literal newline found in data" -msgstr "Newline-Zeichen in Daten gefunden" +#: utils/adt/float.c:1471 utils/adt/float.c:1501 utils/adt/numeric.c:5401 +msgid "cannot take logarithm of zero" +msgstr "Logarithmus von null kann nicht ermittelt werden" -#: commands/copy.c:2856 -msgid "unquoted newline found in data" -msgstr "ungequotetes Newline-Zeichen in Daten gefunden" +#: utils/adt/float.c:1475 utils/adt/float.c:1505 utils/adt/numeric.c:5405 +msgid "cannot take logarithm of a negative number" +msgstr "Logarithmus negativer Zahlen kann nicht ermittelt werden" -#: commands/copy.c:2858 -msgid "Use \"\\n\" to represent newline." -msgstr "Verwenden Sie »\\n«, um ein Newline-Zeichen darzustellen." +#: utils/adt/float.c:1532 utils/adt/float.c:1553 utils/adt/float.c:1574 +#: utils/adt/float.c:1596 utils/adt/float.c:1617 utils/adt/float.c:1638 +#: utils/adt/float.c:1660 utils/adt/float.c:1681 +msgid "input is out of range" +msgstr "Eingabe ist außerhalb des gültigen Bereichs" -#: commands/copy.c:2859 -msgid "Use quoted CSV field to represent newline." -msgstr "" -"Verwenden Sie ein gequotetes CSV-Feld, um ein Newline-Zeichen darzustellen." +#: utils/adt/float.c:2743 utils/adt/numeric.c:1171 +msgid "count must be greater than zero" +msgstr "Anzahl muss größer als null sein" -#: commands/copy.c:2905 commands/copy.c:2941 -msgid "end-of-copy marker does not match previous newline style" -msgstr "COPY-Ende-Markierung stimmt nicht mit vorherigem Newline-Stil überein" +#: utils/adt/float.c:2748 utils/adt/numeric.c:1178 +msgid "operand, lower bound and upper bound cannot be NaN" +msgstr "Operand, Untergrenze und Obergrenze dürfen nicht NaN sein" -#: commands/copy.c:2914 commands/copy.c:2930 -msgid "end-of-copy marker corrupt" -msgstr "COPY-Ende-Markierung verfälscht" +#: utils/adt/float.c:2754 +msgid "lower and upper bounds must be finite" +msgstr "Untergrenze und Obergrenze müssen endlich sein" -#: commands/copy.c:3359 -msgid "unterminated CSV quoted field" -msgstr "Quotes in CSV-Feld nicht abgeschlossen" +#: utils/adt/float.c:2792 utils/adt/numeric.c:1191 +msgid "lower bound cannot equal upper bound" +msgstr "Untergrenze kann nicht gleich der Obergrenze sein" -#: commands/copy.c:3436 commands/copy.c:3455 -msgid "unexpected EOF in COPY data" -msgstr "unerwartetes EOF in COPY-Daten" +#: utils/adt/formatting.c:492 +msgid "invalid format specification for an interval value" +msgstr "ungültige Formatangabe für Intervall-Wert" -#: commands/copy.c:3445 -msgid "invalid field size" -msgstr "ungültige Feldgröße" +#: utils/adt/formatting.c:493 +msgid "Intervals are not tied to specific calendar dates." +msgstr "Intervalle beziehen sich nicht auf bestimmte Kalenderdaten." -#: commands/copy.c:3468 -msgid "incorrect binary data format" -msgstr "falsches Binärdatenformat" +#: utils/adt/formatting.c:1060 +msgid "\"EEEE\" must be the last pattern used" +msgstr "»EEEE« muss das letzte Muster sein" -#: 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 "Spalte »%s« existiert nicht" +#: utils/adt/formatting.c:1068 +msgid "\"9\" must be ahead of \"PR\"" +msgstr "»9« muss vor »PR« stehen" -#: 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 "Spalte »%s« mehrmals angegeben" +#: utils/adt/formatting.c:1084 +msgid "\"0\" must be ahead of \"PR\"" +msgstr "»0« muss vor »PR« stehen" -#: commands/dbcommands.c:201 -msgid "LOCATION is not supported anymore" -msgstr "LOCATION wird nicht mehr unterstützt" +#: utils/adt/formatting.c:1110 +msgid "multiple decimal points" +msgstr "mehrere Dezimalpunkte" + +#: utils/adt/formatting.c:1114 utils/adt/formatting.c:1197 +msgid "cannot use \"V\" and decimal point together" +msgstr "»V« und Dezimalpunkt können nicht zusammen verwendet werden" + +#: utils/adt/formatting.c:1126 +msgid "cannot use \"S\" twice" +msgstr "»S« kann nicht zweimal verwendet werden" -#: commands/dbcommands.c:202 -msgid "Consider using tablespaces instead." -msgstr "Verwenden Sie stattdessen Tablespaces." +#: utils/adt/formatting.c:1130 +msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" +msgstr "»S« und »PL«/»MI«/»SG«/»PR« können nicht zusammen verwendet werden" -#: commands/dbcommands.c:225 utils/adt/ascii.c:144 -#, c-format -msgid "%d is not a valid encoding code" -msgstr "%d ist kein gültiger Kodierungscode" +#: utils/adt/formatting.c:1150 +msgid "cannot use \"S\" and \"MI\" together" +msgstr "»S« und »MI« können nicht zusammen verwendet werden" -#: commands/dbcommands.c:235 utils/adt/ascii.c:126 -#, c-format -msgid "%s is not a valid encoding name" -msgstr "%s ist kein gültiger Kodierungsname" +#: utils/adt/formatting.c:1160 +msgid "cannot use \"S\" and \"PL\" together" +msgstr "»S« und »PL« können nicht zusammen verwendet werden" -#: commands/dbcommands.c:253 commands/dbcommands.c:1347 commands/user.c:267 -#: commands/user.c:606 -#, c-format -msgid "invalid connection limit: %d" -msgstr "ungültige Verbindungshöchstgrenze: %d" +#: utils/adt/formatting.c:1170 +msgid "cannot use \"S\" and \"SG\" together" +msgstr "»S« und »SG« können nicht zusammen verwendet werden" -#: commands/dbcommands.c:272 -msgid "permission denied to create database" -msgstr "keine Berechtigung, um Datenbank zu erzeugen" +#: utils/adt/formatting.c:1179 +msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" +msgstr "»PR« und »S«/»PL«/»MI«/»SG« können nicht zusammen verwendet werden" -#: commands/dbcommands.c:295 -#, c-format -msgid "template database \"%s\" does not exist" -msgstr "Template-Datenbank »%s« existiert nicht" +#: utils/adt/formatting.c:1205 +msgid "cannot use \"EEEE\" twice" +msgstr "»EEEE« kann nicht zweimal verwendet werden" -#: commands/dbcommands.c:307 -#, c-format -msgid "permission denied to copy database \"%s\"" -msgstr "keine Berechtigung, um Datenbank »%s« zu kopieren" +#: utils/adt/formatting.c:1211 +msgid "\"EEEE\" is incompatible with other formats" +msgstr "»EEEE« ist mit anderen Formaten inkompatibel" -#: commands/dbcommands.c:323 -#, c-format -msgid "invalid server encoding %d" -msgstr "ungültige Serverkodierung %d" +#: utils/adt/formatting.c:1212 +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." -#: commands/dbcommands.c:329 commands/dbcommands.c:333 +#: utils/adt/formatting.c:1412 #, c-format -msgid "invalid locale name %s" -msgstr "ungültiger Locale-Name %s" +msgid "\"%s\" is not a number" +msgstr "»%s« ist keine Zahl" -#: commands/dbcommands.c:352 -#, c-format -msgid "" -"new encoding (%s) is incompatible with the encoding of the template database " -"(%s)" +#: utils/adt/formatting.c:1514 utils/adt/formatting.c:1564 +msgid "could not determine which collation to use for lower() function" msgstr "" -"neue Kodierung (%s) ist inkompatibel mit der Kodierung der Template-" -"Datenbank (%s)" +"konnte die für die Funktion lower() zu verwendende Sortierfolge nicht " +"bestimmen" -#: commands/dbcommands.c:355 -msgid "" -"Use the same encoding as in the template database, or use template0 as " -"template." +#: utils/adt/formatting.c:1630 utils/adt/formatting.c:1680 +msgid "could not determine which collation to use for upper() function" msgstr "" -"Verwenden Sie die gleiche Kodierung wie die Template-Datenbank oder " -"verwenden Sie template0 als Template." +"konnte die für die Funktion upper() zu verwendende Sortierfolge nicht " +"bestimmen" -#: commands/dbcommands.c:360 -#, c-format -msgid "" -"new collation (%s) is incompatible with the collation of the template " -"database (%s)" +#: utils/adt/formatting.c:1747 utils/adt/formatting.c:1809 +msgid "could not determine which collation to use for initcap() function" msgstr "" -"neue Sortierreihenfolge (%s) ist inkompatibel mit der Sortierreihenfolge der " -"Template-Datenbank (%s)" +"konnte die für die Funktion initcap() zu verwendende Sortierfolge nicht " +"bestimmen" + +#: utils/adt/formatting.c:2086 +msgid "invalid combination of date conventions" +msgstr "ungültige Kombination von Datumskonventionen" -#: commands/dbcommands.c:362 +#: utils/adt/formatting.c:2087 msgid "" -"Use the same collation as in the template database, or use template0 as " -"template." +"Do not mix Gregorian and ISO week date conventions in a formatting template." msgstr "" -"Verwenden Sie die gleiche Sortierreihenfolge wie die Template-Datenbank oder " -"verwenden Sie template0 als Template." +"Die Gregorianische und die ISO-Konvention für Wochendaten können nicht einer " +"Formatvorlage gemischt werden." -#: commands/dbcommands.c:367 +#: utils/adt/formatting.c:2104 #, c-format -msgid "" -"new LC_CTYPE (%s) is incompatible with the LC_CTYPE of the template database " -"(%s)" -msgstr "" -"neues LC_CTYPE (%s) ist inkompatibel mit dem LC_CTYPE der Template-Datenbank " -"(%s)" +msgid "conflicting values for \"%s\" field in formatting string" +msgstr "widersprüchliche Werte für das Feld »%s« in Formatzeichenkette" -#: commands/dbcommands.c:369 -msgid "" -"Use the same LC_CTYPE as in the template database, or use template0 as " -"template." +#: utils/adt/formatting.c:2106 +msgid "This value contradicts a previous setting for the same field type." msgstr "" -"Verwenden Sie das gleiche LC_CTYPE wie die Template-Datenbank oder verwenden " -"Sie template0 als Template." - -#: commands/dbcommands.c:391 commands/dbcommands.c:1054 -msgid "pg_global cannot be used as default tablespace" -msgstr "pg_global kann nicht als Standard-Tablespace verwendet werden" +"Der Wert widerspricht einer vorherigen Einstellung für den selben Feldtyp." -#: commands/dbcommands.c:417 +#: utils/adt/formatting.c:2167 #, c-format -msgid "cannot assign new default tablespace \"%s\"" -msgstr "kann neuen Standard-Tablespace »%s« nicht setzen" +msgid "source string too short for \"%s\" formatting field" +msgstr "Quellzeichenkette zu kurz für Formatfeld »%s»" -#: commands/dbcommands.c:419 +#: utils/adt/formatting.c:2169 #, 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:2172 utils/adt/formatting.c:2186 msgid "" -"There is a conflict because database \"%s\" already has some tables in this " -"tablespace." +"If your source string is not fixed-width, try using the \"FM\" modifier." msgstr "" -"Es gibt einen Konflikt, weil Datenbank »%s« schon einige Tabellen in diesem " -"Tablespace hat." +"Wenn die Quellzeichenkette keine feste Breite hat, versuchen Sie den " +"Modifikator »FM«." -#: commands/dbcommands.c:439 commands/dbcommands.c:929 +#: utils/adt/formatting.c:2182 utils/adt/formatting.c:2195 +#: utils/adt/formatting.c:2325 #, c-format -msgid "database \"%s\" already exists" -msgstr "Datenbank »%s« existiert bereits" +msgid "invalid value \"%s\" for \"%s\"" +msgstr "ungültiger Wert »%s« für »%s«" -#: commands/dbcommands.c:453 +#: utils/adt/formatting.c:2184 #, c-format -msgid "source database \"%s\" is being accessed by other users" -msgstr "auf Quelldatenbank »%s« wird gerade von anderen Benutzern zugegriffen" +msgid "Field requires %d characters, but only %d could be parsed." +msgstr "Feld benötigt %d Zeichen, aber nur %d konnten geparst werden." -#: commands/dbcommands.c:695 commands/dbcommands.c:710 -#, c-format -msgid "encoding %s does not match locale %s" -msgstr "Kodierung %s stimmt nicht mit Locale %s überein" +#: utils/adt/formatting.c:2197 +msgid "Value must be an integer." +msgstr "Der Wert muss eine ganze Zahl sein." -#: commands/dbcommands.c:698 +#: utils/adt/formatting.c:2202 #, c-format -msgid "The chosen LC_CTYPE setting requires encoding %s." -msgstr "Die gewählte LC_CTYPE-Einstellung verlangt die Kodierung %s." +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" -#: commands/dbcommands.c:713 +#: utils/adt/formatting.c:2204 #, c-format -msgid "The chosen LC_COLLATE setting requires encoding %s." -msgstr "Die gewählte LC_COLLATE-Einstellung verlangt die Kodierung %s." +msgid "Value must be in the range %d to %d." +msgstr "Der Wert muss im Bereich %d bis %d sein." -#: commands/dbcommands.c:771 -#, c-format -msgid "database \"%s\" does not exist, skipping" -msgstr "Datenbank »%s« existiert nicht, wird übersprungen" +#: utils/adt/formatting.c:2327 +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." -#: commands/dbcommands.c:792 -msgid "cannot drop a template database" -msgstr "Template-Datenbank kann nicht gelöscht werden" +#: utils/adt/formatting.c:2876 +msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date" +msgstr "Formatmuster »TZ«/»tz« werden in to_date nicht unterstützt" -#: commands/dbcommands.c:798 -msgid "cannot drop the currently open database" -msgstr "kann aktuell geöffnete Datenbank nicht löschen" +#: utils/adt/formatting.c:2980 +msgid "invalid input string for \"Y,YYY\"" +msgstr "ungültige Eingabe für »Y,YYY«" -#: commands/dbcommands.c:809 commands/dbcommands.c:951 -#: commands/dbcommands.c:1076 +#: utils/adt/formatting.c:3371 utils/adt/date.c:167 #, c-format -msgid "database \"%s\" is being accessed by other users" -msgstr "auf Datenbank »%s« wird von anderen Benutzern zugegriffen" - -#: commands/dbcommands.c:920 -msgid "permission denied to rename database" -msgstr "keine Berechtigung, um Datenbank umzubenennen" - -#: commands/dbcommands.c:940 -msgid "current database cannot be renamed" -msgstr "aktuelle Datenbank kann nicht umbenannt werden" - -#: commands/dbcommands.c:1032 -msgid "cannot change the tablespace of the currently open database" -msgstr "kann den Tablespace der aktuell geöffneten Datenbank nicht ändern" +msgid "date out of range: \"%s\"" +msgstr "date ist außerhalb des gültigen Bereichs: »%s«" -#: commands/dbcommands.c:1116 +#: utils/adt/formatting.c:3503 #, c-format -msgid "some relations of database \"%s\" are already in tablespace \"%s\"" -msgstr "einige Relationen von Datenbank »%s« ist bereits in Tablespace »%s«" +msgid "hour \"%d\" is invalid for the 12-hour clock" +msgstr "Stunde »%d« ist bei einer 12-Stunden-Uhr ungültig" -#: commands/dbcommands.c:1118 -msgid "" -"You must move them back to the database's default tablespace before using " -"this command." +#: utils/adt/formatting.c:3505 +msgid "Use the 24-hour clock, or give an hour between 1 and 12." msgstr "" -"Sie müssen sie zurück in den Standard-Tablespace der Datenbank verschieben, " -"bevor Sie diesen Befehl verwenden können." +"Verwenden Sie die 24-Stunden-Uhr oder geben Sie eine Stunde zwischen 1 und " +"12 an." -#: commands/dbcommands.c:1246 commands/dbcommands.c:1714 -#: commands/dbcommands.c:1915 commands/dbcommands.c:1963 -#: commands/tablespace.c:584 +#: utils/adt/formatting.c:3543 #, 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" +msgid "inconsistent use of year %04d and \"BC\"" +msgstr "inkonsistente Verwendung von Jahr %04d und »BC«" -#: commands/dbcommands.c:1490 -msgid "permission denied to change owner of database" -msgstr "keine Berechtigung, um Eigentümer der Datenbank zu ändern" +#: utils/adt/formatting.c:3590 +msgid "cannot calculate day of year without year information" +msgstr "kann Tag des Jahres nicht berechnen ohne Jahrinformationen" -#: commands/dbcommands.c:1802 -#, 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." +#: utils/adt/formatting.c:4452 +msgid "\"EEEE\" not supported for input" +msgstr "»E« wird nicht bei der Eingabe unterstützt" -#: commands/dbcommands.c:1805 -#, c-format -msgid "There are %d other session(s) using the database." -msgstr "%d andere Sitzung(en) verwenden die Datenbank." +#: utils/adt/formatting.c:4464 +msgid "\"RN\" not supported for input" +msgstr "»RN« wird nicht bei der Eingabe unterstützt" -#: commands/dbcommands.c:1808 +#: utils/adt/date.c:71 #, c-format -msgid "There are %d prepared transaction(s) using the database." -msgstr "%d vorbereitete Transaktion(en) verwenden die Datenbank." +msgid "TIME(%d)%s precision must not be negative" +msgstr "Präzision von TIME(%d)%s darf nicht negativ sein" -#: commands/define.c:67 commands/define.c:222 commands/define.c:254 -#: commands/define.c:282 +#: utils/adt/date.c:77 #, c-format -msgid "%s requires a parameter" -msgstr "%s erfordert einen Parameter" +msgid "TIME(%d)%s precision reduced to maximum allowed, %d" +msgstr "Präzision von TIME(%d)%s auf erlaubten Höchstwert %d reduziert" -#: 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 erfordert einen numerischen Wert" +#: utils/adt/date.c:142 utils/adt/datetime.c:1186 utils/adt/datetime.c:1928 +msgid "date/time value \"current\" is no longer supported" +msgstr "Datum/Zeitwert »current« wird nicht mehr unterstützt" -#: commands/define.c:175 +#: utils/adt/date.c:359 +msgid "cannot subtract infinite dates" +msgstr "kann unendliche date-Werte nicht subtrahieren" + +#: utils/adt/date.c:416 utils/adt/date.c:453 +msgid "date out of range for timestamp" +msgstr "Datum ist außerhalb des gültigen Bereichs für Typ »timestamp«" + +#: utils/adt/date.c:986 +msgid "cannot convert reserved abstime value to date" +msgstr "kann reservierten »abstime«-Wert nicht in »date« umwandeln" + +#: 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 "time ist außerhalb des gültigen Bereichs" + +#: utils/adt/date.c:1793 utils/adt/date.c:1810 #, c-format -msgid "%s requires a Boolean value" -msgstr "%s erfordert einen Boole'schen Wert" +msgid "\"time\" units \"%s\" not recognized" +msgstr "»time«-Einheit »%s« nicht erkannt" -#: commands/define.c:236 +#: utils/adt/date.c:1931 +msgid "time zone displacement out of range" +msgstr "Zeitzonenunterschied ist außerhalb des gültigen Bereichs" + +#: utils/adt/date.c:2556 utils/adt/date.c:2573 #, c-format -msgid "argument of %s must be a name" -msgstr "Argument von %s muss ein Name sein" +msgid "\"time with time zone\" units \"%s\" not recognized" +msgstr "»time with time zone«-Einheit »%s« nicht erkannt" -#: commands/define.c:266 +#: utils/adt/date.c:2671 #, c-format -msgid "argument of %s must be a type name" -msgstr "Argument von %s muss ein Typname sein" +msgid "\"interval\" time zone \"%s\" not valid" +msgstr "»interval«-Zeitzone »%s« nicht gültig" -#: commands/define.c:291 +#: utils/adt/varbit.c:162 utils/adt/varbit.c:474 utils/adt/varbit.c:939 #, c-format -msgid "%s requires an integer value" -msgstr "%s erfordert einen ganzzahligen Wert" +msgid "bit string length exceeds the maximum allowed (%d)" +msgstr "Länge der Bitkette überschreitet erlaubtes Maximum (%d)" -#: commands/define.c:312 +#: utils/adt/varbit.c:176 utils/adt/varbit.c:319 utils/adt/varbit.c:376 #, c-format -msgid "invalid argument for %s: \"%s\"" -msgstr "ungültiges Argument für %s: »%s«" +msgid "bit string length %d does not match type bit(%d)" +msgstr "Länge der Bitkette %d stimmt nicht mit Typ bit(%d) überein" -#: commands/explain.c:153 +#: utils/adt/varbit.c:198 utils/adt/varbit.c:510 #, c-format -msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\"" -msgstr "unbekannter Wert für EXPLAIN-Option »%s«: »%s«" +msgid "\"%c\" is not a valid binary digit" +msgstr "»%c« ist keine gültige Binärziffer" -#: commands/explain.c:159 +#: utils/adt/varbit.c:223 utils/adt/varbit.c:535 #, c-format -msgid "unrecognized EXPLAIN option \"%s\"" -msgstr "unbekannte EXPLAIN-Option »%s«" +msgid "\"%c\" is not a valid hexadecimal digit" +msgstr "»%c« ist keine gültige Hexadezimalziffer" -#: commands/explain.c:166 -msgid "EXPLAIN option BUFFERS requires ANALYZE" -msgstr "EXPLAIN-Option BUFFERS erfordert ANALYZE" +#: utils/adt/varbit.c:310 utils/adt/varbit.c:626 +msgid "invalid length in external bit string" +msgstr "ungültige Länge in externer Bitkette" -#: commands/foreigncmds.c:135 commands/foreigncmds.c:144 +#: utils/adt/varbit.c:488 utils/adt/varbit.c:635 utils/adt/varbit.c:697 #, c-format -msgid "option \"%s\" not found" -msgstr "Option »%s« nicht gefunden" +msgid "bit string too long for type bit varying(%d)" +msgstr "Bitkette ist zu lang für Typ bit varying(%d)" -#: commands/foreigncmds.c:154 -#, c-format -msgid "option \"%s\" provided more than once" -msgstr "Option »%s« mehrmals angegeben" +#: utils/adt/varbit.c:1192 +msgid "cannot AND bit strings of different sizes" +msgstr "binäres »Und« nicht mit Bitketten unterschiedlicher Länge möglich" -#: commands/foreigncmds.c:212 commands/foreigncmds.c:220 -#, c-format -msgid "permission denied to change owner of foreign-data wrapper \"%s\"" +#: utils/adt/varbit.c:1234 +msgid "cannot OR bit strings of different sizes" +msgstr "binäres »Oder« nicht mit Bitketten unterschiedlicher Länge möglich" + +#: utils/adt/varbit.c:1281 +msgid "cannot XOR bit strings of different sizes" msgstr "" -"keine Berechtigung, um Eigentümer des Fremddaten-Wrappers »%s« zu ändern" +"binäres »Exklusiv-Oder« nicht mit Bitketten unterschiedlicher Länge möglich" -#: commands/foreigncmds.c:214 -msgid "Must be superuser to change owner of a foreign-data wrapper." -msgstr "Nur Superuser können den Eigentümer eines Fremddaten-Wrappers ändern." +#: utils/adt/varbit.c:1759 utils/adt/varbit.c:1817 +#, c-format +msgid "bit index %d out of valid range (0..%d)" +msgstr "Bitindex %d ist außerhalb des gültigen Bereichs (0..%d)" -#: commands/foreigncmds.c:222 -msgid "The owner of a foreign-data wrapper must be a superuser." -msgstr "Der Eigentümer eines Fremddaten-Wrappers muss ein Superuser sein." +#: utils/adt/tsvector.c:215 +#, c-format +msgid "word is too long (%ld bytes, max %ld bytes)" +msgstr "Wort ist zu lang (%ld Bytes, maximal %ld Bytes)" -#: commands/foreigncmds.c:231 commands/foreigncmds.c:552 -#: commands/foreigncmds.c:703 foreign/foreign.c:515 +#: utils/adt/tsvector.c:222 #, c-format -msgid "foreign-data wrapper \"%s\" does not exist" -msgstr "Fremddaten-Wrapper »%s« existiert nicht" +msgid "string is too long for tsvector (%ld bytes, max %ld bytes)" +msgstr "Zeichenkette ist zu lang für tsvector (%ld Bytes, maximal %ld Bytes)" -#: commands/foreigncmds.c:274 commands/foreigncmds.c:879 -#: commands/foreigncmds.c:970 commands/foreigncmds.c:1255 -#: foreign/foreign.c:535 +#: utils/adt/tsvector.c:272 utils/adt/tsvector_op.c:530 tsearch/to_tsany.c:165 #, c-format -msgid "server \"%s\" does not exist" -msgstr "Server »%s« existiert nicht" +msgid "string is too long for tsvector (%d bytes, max %d bytes)" +msgstr "Zeichenkette ist zu lang für tsvector (%d Bytes, maximal %d Bytes)" -#: commands/foreigncmds.c:336 +#: utils/adt/ascii.c:75 #, c-format -msgid "function %s must return type \"fdw_handler\"" -msgstr "Funktion %s muss Typ »fdw_handler« zurückgeben" +msgid "encoding conversion from %s to ASCII not supported" +msgstr "Kodierungsumwandlung zwischen %s und ASCII wird nicht unterstützt" -#: commands/foreigncmds.c:429 +#: utils/adt/ascii.c:126 commands/dbcommands.c:236 #, c-format -msgid "permission denied to create foreign-data wrapper \"%s\"" -msgstr "keine Berechtigung, um Fremddaten-Wrapper »%s« zu erzeugen" +msgid "%s is not a valid encoding name" +msgstr "%s ist kein gültiger Kodierungsname" -#: commands/foreigncmds.c:431 -msgid "Must be superuser to create a foreign-data wrapper." -msgstr "Nur Superuser können Fremddaten-Wrapper anlegen." +#: utils/adt/ascii.c:144 commands/dbcommands.c:226 +#, c-format +msgid "%d is not a valid encoding code" +msgstr "%d ist kein gültiger Kodierungscode" -#: commands/foreigncmds.c:442 +#: utils/adt/dbsize.c:65 utils/adt/dbsize.c:211 utils/adt/dbsize.c:279 +#: utils/adt/genfile.c:107 utils/adt/genfile.c:279 access/transam/xlog.c:2932 +#: access/transam/xlog.c:3097 access/transam/xlog.c:9168 +#: access/transam/xlog.c:9347 storage/file/copydir.c:86 +#: storage/file/copydir.c:125 #, c-format -msgid "foreign-data wrapper \"%s\" already exists" -msgstr "Fremddaten-Wrapper »%s« existiert bereits" +msgid "could not stat file \"%s\": %m" +msgstr "konnte »stat« für Datei »%s« nicht ausführen: %m" -#: commands/foreigncmds.c:542 +#: utils/adt/dbsize.c:105 utils/adt/dbsize.c:189 #, c-format -msgid "permission denied to alter foreign-data wrapper \"%s\"" -msgstr "keine Berechtigung, um Fremddaten-Wrapper »%s« zu ändern" +msgid "could not open tablespace directory \"%s\": %m" +msgstr "konnte Tablespace-Verzeichnis »%s« nicht öffnen: %m" -#: commands/foreigncmds.c:544 -msgid "Must be superuser to alter a foreign-data wrapper." -msgstr "Nur Superuser können Fremddaten-Wrapper ändern." +#: utils/adt/dbsize.c:127 catalog/aclchk.c:3492 catalog/aclchk.c:4609 +#, c-format +msgid "database with OID %u does not exist" +msgstr "Datenbank mit OID %u existiert nicht" -#: commands/foreigncmds.c:575 -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" +#: utils/adt/cash.c:237 +#, c-format +msgid "invalid input syntax for type money: \"%s\"" +msgstr "ungültige Eingabesyntax für Typ money: »%s«" -#: commands/foreigncmds.c:589 -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" +#: utils/adt/tsrank.c:404 +msgid "array of weight must be one-dimensional" +msgstr "Gewichtungs-Array muss eindimensional sein" -#: commands/foreigncmds.c:694 -#, c-format -msgid "permission denied to drop foreign-data wrapper \"%s\"" -msgstr "keine Berechtigung, um Fremddaten-Wrapper »%s« zu löschen" +#: utils/adt/tsrank.c:409 +msgid "array of weight is too short" +msgstr "Gewichtungs-Array ist zu kurz" -#: commands/foreigncmds.c:696 -msgid "Must be superuser to drop a foreign-data wrapper." -msgstr "Nur Superuser können Fremddaten-Wrapper löschen." +#: utils/adt/tsrank.c:414 +msgid "array of weight must not contain nulls" +msgstr "Gewichtungs-Array darf keine NULL-Werte enthalten" -#: commands/foreigncmds.c:708 -#, c-format -msgid "foreign-data wrapper \"%s\" does not exist, skipping" -msgstr "Fremddaten-Wrapper »%s« existiert nicht, wird übersprungen" +#: utils/adt/tsrank.c:423 utils/adt/tsrank.c:749 +msgid "weight out of range" +msgstr "Gewichtung ist außerhalb des gültigen Bereichs" -#: commands/foreigncmds.c:775 -#, c-format -msgid "server \"%s\" already exists" -msgstr "Server »%s« existiert bereits" +#: utils/adt/name.c:91 utils/adt/acl.c:166 +msgid "identifier too long" +msgstr "Bezeichner zu lang" -#: commands/foreigncmds.c:974 +#: utils/adt/name.c:92 utils/adt/acl.c:167 #, c-format -msgid "server \"%s\" does not exist, skipping" -msgstr "Server »%s« existiert nicht, wird übersprungen" +msgid "Identifier must be less than %d characters." +msgstr "Bezeichner muss weniger als %d Zeichen haben." -#: commands/foreigncmds.c:1077 +#. translator: first %s is inet or cidr +#: utils/adt/network.c:107 utils/adt/datetime.c:3558 #, c-format -msgid "user mapping \"%s\" already exists for server %s" -msgstr "Benutzerabbildung »%s« existiert bereits für Server »%s«" +msgid "invalid input syntax for type %s: \"%s\"" +msgstr "ungültige Eingabesyntax für Typ %s: »%s«" -#: commands/foreigncmds.c:1163 commands/foreigncmds.c:1271 +#: utils/adt/network.c:118 #, c-format -msgid "user mapping \"%s\" does not exist for the server" -msgstr "Benutzerabbildung »%s« existiert für den Server nicht" +msgid "invalid cidr value: \"%s\"" +msgstr "ungültiger cidr-Wert: »%s«" -#: commands/foreigncmds.c:1258 -msgid "server does not exist, skipping" -msgstr "Server existiert nicht, wird übersprungen" +#: utils/adt/network.c:119 utils/adt/network.c:249 +msgid "Value has bits set to right of mask." +msgstr "Wert hat gesetzte Bits rechts von der Maske." -#: commands/foreigncmds.c:1276 +#: utils/adt/network.c:160 utils/adt/network.c:614 utils/adt/network.c:639 +#: utils/adt/network.c:664 #, c-format -msgid "user mapping \"%s\" does not exist for the server, skipping" -msgstr "" -"Benutzerabbildung »%s« existiert nicht für den Server, wird übersprungen" +msgid "could not format inet value: %m" +msgstr "konnte inet-Wert nicht formatieren: %m" -#: commands/functioncmds.c:100 +#. translator: %s is inet or cidr +#: utils/adt/network.c:217 #, c-format -msgid "SQL function cannot return shell type %s" -msgstr "SQL-Funktion kann keinen Hüllen-Rückgabetyp %s haben" +msgid "invalid address family in external \"%s\" value" +msgstr "ungültige Adressfamilie in externem »%s«-Wert" -#: commands/functioncmds.c:105 +#. translator: %s is inet or cidr +#: utils/adt/network.c:224 #, c-format -msgid "return type %s is only a shell" -msgstr "Rückgabetyp %s ist nur eine Hülle" +msgid "invalid bits in external \"%s\" value" +msgstr "ungültige Bits in externem »%s«-Wert" -#: 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 +#. translator: %s is inet or cidr +#: utils/adt/network.c:233 #, c-format -msgid "type \"%s\" does not exist" -msgstr "Typ »%s« existiert nicht" +msgid "invalid length in external \"%s\" value" +msgstr "ungültige Länge in externem »%s«-Wert" -#: commands/functioncmds.c:134 parser/parse_type.c:278 +#: utils/adt/network.c:248 +msgid "invalid external \"cidr\" value" +msgstr "ungültiger externer »cidr«-Wert" + +#: utils/adt/network.c:370 utils/adt/network.c:397 #, c-format -msgid "type modifier cannot be specified for shell type \"%s\"" -msgstr "Typmodifikator kann für Hüllentyp »%s« nicht angegeben werden" +msgid "invalid mask length: %d" +msgstr "ungültige Maskenlänge: %d" -#: commands/functioncmds.c:140 +#: utils/adt/network.c:682 #, c-format -msgid "type \"%s\" is not yet defined" -msgstr "Typ »%s« ist noch nicht definiert" +msgid "could not format cidr value: %m" +msgstr "konnte cidr-Wert nicht formatieren: %m" -#: commands/functioncmds.c:141 -msgid "Creating a shell type definition." -msgstr "Hüllentypdefinition wird erzeugt." +#: utils/adt/network.c:1255 +msgid "cannot AND inet values of different sizes" +msgstr "binäres »Und« nicht mit »inet«-Werten unterschiedlicher Größe möglich" -#: commands/functioncmds.c:220 +#: utils/adt/network.c:1287 +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 +msgid "result is out of range" +msgstr "Ergebnis ist außerhalb des gültigen Bereichs" + +#: utils/adt/network.c:1389 +msgid "cannot subtract inet values of different sizes" +msgstr "Subtraktion von »inet«-Werten unterschiedlicher Größe nicht möglich" + +#: utils/adt/mac.c:65 #, c-format -msgid "SQL function cannot accept shell type %s" -msgstr "SQL-Funktion kann keinen Hüllentyp %s annehmen" +msgid "invalid input syntax for type macaddr: \"%s\"" +msgstr "ungültige Eingabesyntax für Typ macaddr: »%s«" -#: commands/functioncmds.c:225 +#: utils/adt/mac.c:72 #, c-format -msgid "argument type %s is only a shell" -msgstr "Argumenttyp %s ist nur eine Hülle" +msgid "invalid octet value in \"macaddr\" value: \"%s\"" +msgstr "ungültiger Oktettwert in »macaddr«-Wert: »%s«" -#: commands/functioncmds.c:235 +#: utils/adt/domains.c:80 #, c-format -msgid "type %s does not exist" -msgstr "Typ %s existiert nicht" +msgid "type %s is not a domain" +msgstr "Typ %s ist keine Domäne" -#: commands/functioncmds.c:243 -msgid "functions cannot accept set arguments" -msgstr "Funktionen können keine SET Argumente haben" +#: utils/adt/domains.c:128 executor/execQual.c:3893 +#, c-format +msgid "domain %s does not allow null values" +msgstr "Domäne %s erlaubt keine NULL-Werte" -#: commands/functioncmds.c:252 -msgid "VARIADIC parameter must be the last input parameter" -msgstr "VARIADIC-Parameter muss der letzte Eingabeparameter sein" +#: utils/adt/domains.c:164 executor/execQual.c:3922 +#, c-format +msgid "value for domain %s violates check constraint \"%s\"" +msgstr "Wert für Domäne %s verletzt Check-Constraint »%s«" -#: commands/functioncmds.c:279 -msgid "VARIADIC parameter must be an array" -msgstr "VARIADIC-Parameter muss ein Array sein" +#: utils/adt/ruleutils.c:1580 utils/adt/acl.c:2772 commands/tablecmds.c:4525 +#: commands/tablecmds.c:4617 commands/tablecmds.c:4664 +#: commands/tablecmds.c:4760 commands/tablecmds.c:4804 +#: commands/tablecmds.c:4883 commands/tablecmds.c:4967 +#: commands/tablecmds.c:6624 commands/tablecmds.c:6833 commands/analyze.c:343 +#: commands/sequence.c:1443 commands/copy.c:3787 commands/trigger.c:607 +#: catalog/aclchk.c:1427 catalog/objectaddress.c:545 parser/analyze.c:2046 +#: parser/parse_target.c:898 parser/parse_relation.c:2060 +#: parser/parse_relation.c:2117 parser/parse_type.c:117 +#, c-format +msgid "column \"%s\" of relation \"%s\" does not exist" +msgstr "Spalte »%s« von Relation »%s« existiert nicht" -#: commands/functioncmds.c:319 +#: utils/adt/ruleutils.c:1696 commands/functioncmds.c:1007 +#: commands/functioncmds.c:1107 commands/functioncmds.c:1170 +#: commands/functioncmds.c:1321 #, c-format -msgid "parameter name \"%s\" used more than once" -msgstr "Parametername »%s« mehrmals angegeben" +msgid "\"%s\" is an aggregate function" +msgstr "»%s« ist eine Aggregatfunktion" + +#: utils/adt/ruleutils.c:2429 +#, c-format +msgid "rule \"%s\" has unsupported event type %d" +msgstr "Regel »%s« hat nicht unterstützten Ereignistyp %d" -#: commands/functioncmds.c:334 -msgid "only input parameters can have default values" -msgstr "nur Eingabeparameter können Vorgabewerte haben" +#: utils/adt/ruleutils.c:5888 utils/adt/ruleutils.c:5943 +#: utils/adt/ruleutils.c:5980 utils/adt/regproc.c:635 utils/adt/regproc.c:1485 +msgid "too many arguments" +msgstr "zu viele Argumente" -#: commands/functioncmds.c:347 -msgid "cannot use table references in parameter default value" -msgstr "" -"Tabellenverweise können nicht in Parametervorgabewerten verwendet werden" +#: utils/adt/pseudotypes.c:94 +msgid "cannot accept a value of type any" +msgstr "kann keinen Wert vom Typ any annehmen" -#: commands/functioncmds.c:363 -msgid "cannot use subquery in parameter default value" -msgstr "Unteranfragen können nicht in Parametervorgabewerten verwendet werden" +#: utils/adt/pseudotypes.c:107 +msgid "cannot display a value of type any" +msgstr "kann keinen Wert vom Typ any anzeigen" -#: commands/functioncmds.c:367 -msgid "cannot use aggregate function in parameter default value" -msgstr "" -"Aggregatfunktionen können nicht in Parametervorgabewerten verwendet werden" +#: utils/adt/pseudotypes.c:121 utils/adt/pseudotypes.c:149 +msgid "cannot accept a value of type anyarray" +msgstr "kann keinen Wert vom Typ anyarray annehmen" -#: commands/functioncmds.c:371 -msgid "cannot use window function in parameter default value" -msgstr "" -"Fensterfunktionen können nicht in Parametervorgabewerten verwendet werden" +#: utils/adt/pseudotypes.c:174 +msgid "cannot accept a value of type anyenum" +msgstr "kann keinen Wert vom Typ anyenum annehmen" -#: commands/functioncmds.c:381 -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" +#: utils/adt/pseudotypes.c:252 +msgid "cannot accept a value of type trigger" +msgstr "kann keinen Wert vom Typ trigger annehmen" -#: commands/functioncmds.c:620 -msgid "no function body specified" -msgstr "kein Funktionskörper angegeben" +#: utils/adt/pseudotypes.c:265 +msgid "cannot display a value of type trigger" +msgstr "kann keinen Wert vom Typ trigger anzeigen" -#: commands/functioncmds.c:630 -msgid "no language specified" -msgstr "keine Sprache angegeben" +#: utils/adt/pseudotypes.c:279 +msgid "cannot accept a value of type language_handler" +msgstr "kann keinen Wert vom Typ language_handler annehmen" -#: commands/functioncmds.c:651 commands/functioncmds.c:1352 -msgid "COST must be positive" -msgstr "COST muss positiv sein" +#: utils/adt/pseudotypes.c:292 +msgid "cannot display a value of type language_handler" +msgstr "kann keinen Wert vom Typ language_handler anzeigen" -#: commands/functioncmds.c:659 commands/functioncmds.c:1360 -msgid "ROWS must be positive" -msgstr "ROWS muss positiv sein" +#: utils/adt/pseudotypes.c:306 +msgid "cannot accept a value of type fdw_handler" +msgstr "kann keinen Wert vom Typ fdw_handler annehmen" -#: commands/functioncmds.c:698 -#, c-format -msgid "unrecognized function attribute \"%s\" ignored" -msgstr "unbekanntes Funktionsattribut »%s« ignoriert" +#: utils/adt/pseudotypes.c:319 +msgid "cannot display a value of type fdw_handler" +msgstr "kann keinen Wert vom Typ fdw_handler anzeigen" -#: commands/functioncmds.c:749 -#, c-format -msgid "only one AS item needed for language \"%s\"" -msgstr "nur ein AS-Element benötigt für Sprache »%s«" +#: utils/adt/pseudotypes.c:333 +msgid "cannot accept a value of type internal" +msgstr "kann keinen Wert vom Typ internal annehmen" -#: 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 "Sprache »%s« existiert nicht" +#: utils/adt/pseudotypes.c:346 +msgid "cannot display a value of type internal" +msgstr "kann keinen Wert vom Typ internal anzeigen" -#: commands/functioncmds.c:841 commands/functioncmds.c:2021 -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." +#: utils/adt/pseudotypes.c:360 +msgid "cannot accept a value of type opaque" +msgstr "kann keinen Wert vom Typ opaque annehmen" -#: commands/functioncmds.c:888 -#, c-format -msgid "function result type must be %s because of OUT parameters" -msgstr "Ergebnistyp der Funktion muss %s sein wegen OUT-Parametern" +#: utils/adt/pseudotypes.c:373 +msgid "cannot display a value of type opaque" +msgstr "kann keinen Wert vom Typ opaque anzeigen" -#: commands/functioncmds.c:901 -msgid "function result type must be specified" -msgstr "Ergebnistyp der Funktion muss angegeben werden" +#: utils/adt/pseudotypes.c:387 +msgid "cannot accept a value of type anyelement" +msgstr "kann keinen Wert vom Typ anyelement annehmen" -#: commands/functioncmds.c:936 commands/functioncmds.c:1364 -msgid "ROWS is not applicable when function does not return a set" -msgstr "" -"ROWS ist nicht anwendbar, wenn die Funktion keine Ergebnismenge zurückgibt" +#: utils/adt/pseudotypes.c:400 +msgid "cannot display a value of type anyelement" +msgstr "kann keinen Wert vom Typ anyelement anzeigen" -#: commands/functioncmds.c:988 -#, c-format -msgid "function %s(%s) does not exist, skipping" -msgstr "Funktion %s(%s) existiert nicht, wird übersprungen" +#: utils/adt/pseudotypes.c:413 +msgid "cannot accept a value of type anynonarray" +msgstr "kann keinen Wert vom Typ anynonarray annehmen" -#: 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« ist eine Aggregatfunktion" +#: utils/adt/pseudotypes.c:426 +msgid "cannot display a value of type anynonarray" +msgstr "kann keinen Wert vom Typ anynonarray anzeigen" -#: commands/functioncmds.c:1010 -msgid "Use DROP AGGREGATE to drop aggregate functions." -msgstr "Verwenden Sie DROP AGGREGATE, um Aggregatfunktionen zu löschen." +#: utils/adt/pseudotypes.c:439 +msgid "cannot accept a value of a shell type" +msgstr "kann keinen Wert eines Hüllentyps annehmen" -#: commands/functioncmds.c:1017 -#, c-format -msgid "removing built-in function \"%s\"" -msgstr "eingebaute Funktion »%s« wird entfernt" +#: utils/adt/pseudotypes.c:452 +msgid "cannot display a value of a shell type" +msgstr "kann keinen Wert eines Hüllentyps anzeigen" -#: commands/functioncmds.c:1110 -msgid "Use ALTER AGGREGATE to rename aggregate functions." -msgstr "Verwenden Sie ALTER AGGREGATE, um Aggregatfunktionen umzubenennen." +#: utils/adt/pseudotypes.c:474 utils/adt/pseudotypes.c:498 +msgid "cannot accept a value of type pg_node_tree" +msgstr "kann keinen Wert vom Typ pg_node_tree annehmen" -#: commands/functioncmds.c:1173 -msgid "Use ALTER AGGREGATE to change owner of aggregate functions." -msgstr "" -"Verwenden Sie ALTER AGGREGATE, um den Eigentümer einer Aggregatfunktion zu " -"ändern." +#: utils/adt/char.c:169 +msgid "\"char\" out of range" +msgstr "\"char\" ist außerhalb des gültigen Bereichs" -#: commands/functioncmds.c:1511 -#, c-format -msgid "source data type %s is a pseudo-type" -msgstr "Quelldatentyp %s ist ein Pseudotyp." +#: utils/adt/arrayfuncs.c:235 utils/adt/arrayfuncs.c:247 +msgid "missing dimension value" +msgstr "Dimensionswert fehlt" -#: commands/functioncmds.c:1517 -#, c-format -msgid "target data type %s is a pseudo-type" -msgstr "Zieldatentyp %s ist ein Pseudotyp" +#: utils/adt/arrayfuncs.c:257 +msgid "missing \"]\" in array dimensions" +msgstr "»]« in Arraydimensionen fehlt" -#: commands/functioncmds.c:1554 -msgid "cast function must take one to three arguments" -msgstr "Typumwandlungsfunktion muss ein bis drei Argumente haben" +#: 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 "Obergrenze kann nicht kleiner als Untergrenze sein" -#: commands/functioncmds.c:1558 -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" +#: utils/adt/arrayfuncs.c:277 utils/adt/arrayfuncs.c:303 +msgid "array value must start with \"{\" or dimension information" +msgstr "Arraywert muss mit »{« oder Dimensionsinformationen anfangen" -#: commands/functioncmds.c:1562 -msgid "second argument of cast function must be type integer" -msgstr "zweites Argument der Typumwandlungsfunktion muss Typ integer haben" +#: utils/adt/arrayfuncs.c:291 +msgid "missing assignment operator" +msgstr "fehlender Zuweisungsoperator" -#: commands/functioncmds.c:1566 -msgid "third argument of cast function must be type boolean" -msgstr "drittes Argument der Typumwandlungsfunktion muss Typ boolean haben" +#: utils/adt/arrayfuncs.c:308 utils/adt/arrayfuncs.c:314 +msgid "array dimensions incompatible with array literal" +msgstr "Arraydimensionen sind inkompatibel mit Arraykonstante" -#: commands/functioncmds.c:1570 +#: 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 "fehlerhafte Arraykonstante: »%s«" + +#: utils/adt/arrayfuncs.c:542 executor/execQual.c:3121 +#: executor/execQual.c:3148 msgid "" -"return data type of cast function must match or be binary-coercible to " -"target data type" +"multidimensional arrays must have array expressions with matching dimensions" msgstr "" -"Rückgabetyp der Typumwandlungsfunktion muss mit Zieldatentyp übereinstimmen " -"oder in ihn binär-umwandelbar sein" +"mehrdimensionale Arrays müssen Arraysausdrücke mit gleicher Anzahl " +"Dimensionen haben" -#: commands/functioncmds.c:1581 -msgid "cast function must not be volatile" -msgstr "Typumwandlungsfunktion darf nicht VOLATILE sein" +#: utils/adt/arrayfuncs.c:1249 +msgid "invalid array flags" +msgstr "ungültige Array-Flags" -#: commands/functioncmds.c:1586 -msgid "cast function must not be an aggregate function" -msgstr "Typumwandlungsfunktion darf keine Aggregatfunktion sein" +#: utils/adt/arrayfuncs.c:1257 +msgid "wrong element type" +msgstr "falscher Elementtyp" -#: commands/functioncmds.c:1590 -msgid "cast function must not be a window function" -msgstr "Typumwandlungsfunktion darf keine Fensterfunktion sein" +#: utils/adt/arrayfuncs.c:1411 utils/adt/rowtypes.c:572 libpq/pqformat.c:556 +#: libpq/pqformat.c:574 libpq/pqformat.c:595 +msgid "insufficient data left in message" +msgstr "nicht genug Daten in Message übrig" -#: commands/functioncmds.c:1594 -msgid "cast function must not return a set" -msgstr "Typumwandlungsfunktion darf keine Ergebnismenge zurückgeben" +#: utils/adt/arrayfuncs.c:1447 +#, c-format +msgid "improper binary format in array element %d" +msgstr "falsches Binärformat in Arrayelement %d" -#: commands/functioncmds.c:1620 -msgid "must be superuser to create a cast WITHOUT FUNCTION" -msgstr "nur Superuser können Typumwandlungen mit WITHOUT FUNCTION erzeugen" +#: utils/adt/arrayfuncs.c:1903 +msgid "slices of fixed-length arrays not implemented" +msgstr "" +"Auswählen von Stücken aus Arrays mit fester Länge ist nicht implementiert" -#: commands/functioncmds.c:1635 -msgid "source and target data types are not physically compatible" -msgstr "Quelldatentyp und Zieldatentyp sind nicht physikalisch kompatibel" +#: utils/adt/arrayfuncs.c:2076 utils/adt/arrayfuncs.c:2098 +#: utils/adt/arrayfuncs.c:2132 utils/adt/arrayfuncs.c:2418 +#: utils/adt/arrayfuncs.c:4916 utils/adt/arrayfuncs.c:4948 +#: utils/adt/arrayfuncs.c:4965 +msgid "wrong number of array subscripts" +msgstr "falsche Anzahl Arrayindizes" -#: commands/functioncmds.c:1650 -msgid "composite data types are not binary-compatible" -msgstr "zusammengesetzte Datentypen sind nicht binärkompatibel" +#: utils/adt/arrayfuncs.c:2081 utils/adt/arrayfuncs.c:2174 +#: utils/adt/arrayfuncs.c:2469 +msgid "array subscript out of range" +msgstr "Arrayindex außerhalb des gültigen Bereichs" -#: commands/functioncmds.c:1656 -msgid "enum data types are not binary-compatible" -msgstr "Enum-Datentypen sind nicht binärkompatibel" +#: utils/adt/arrayfuncs.c:2086 +msgid "cannot assign null value to an element of a fixed-length array" +msgstr "Array mit fester Länge kann keinen NULL-Wert enthalten" -#: commands/functioncmds.c:1662 -msgid "array data types are not binary-compatible" -msgstr "Array-Datentypen sind nicht binärkompatibel" +#: utils/adt/arrayfuncs.c:2372 +msgid "updates on slices of fixed-length arrays not implemented" +msgstr "" +"Aktualisieren von Stücken aus Arrays mit fester Länge ist nicht implementiert" -#: commands/functioncmds.c:1679 -msgid "domain data types must not be marked binary-compatible" -msgstr "Domänendatentypen dürfen nicht als binärkompatibel markiert werden" +#: utils/adt/arrayfuncs.c:2408 utils/adt/arrayfuncs.c:2495 +msgid "source array too small" +msgstr "Quellarray ist zu klein" -#: commands/functioncmds.c:1689 -msgid "source data type and target data type are the same" -msgstr "Quelldatentyp und Zieldatentyp sind der selbe" +#: utils/adt/arrayfuncs.c:3050 +msgid "null array element not allowed in this context" +msgstr "NULL-Werte im Array sind in diesem Zusammenhang nicht erlaubt" -#: commands/functioncmds.c:1722 -#, c-format -msgid "cast from type %s to type %s already exists" -msgstr "Typumwandlung von Typ %s in Typ %s existiert bereits" +#: utils/adt/arrayfuncs.c:3153 utils/adt/arrayfuncs.c:3361 +#: utils/adt/arrayfuncs.c:3678 +msgid "cannot compare arrays of different element types" +msgstr "kann Arrays mit verschiedenen Elementtypen nicht vergleichen" -#: commands/functioncmds.c:1803 +#: utils/adt/arrayfuncs.c:3176 utils/adt/arrayfuncs.c:3695 +#: utils/adt/rowtypes.c:1185 parser/parse_oper.c:225 #, 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" +msgid "could not identify an equality operator for type %s" +msgstr "konnte keinen Ist-Gleich-Operator für Typ %s ermitteln" -#: commands/functioncmds.c:1841 +#: utils/adt/arrayfuncs.c:3378 utils/adt/rowtypes.c:950 +#: executor/execQual.c:4913 #, c-format -msgid "cast from type %s to type %s does not exist" -msgstr "Typumwandlung von Typ %s in Typ %s existiert nicht" +msgid "could not identify a comparison function for type %s" +msgstr "konnte keine Vergleichsfunktion für Typ %s ermitteln" -#: commands/functioncmds.c:1929 +#: utils/adt/arrayfuncs.c:3563 #, c-format -msgid "function \"%s\" already exists in schema \"%s\"" -msgstr "Funktion »%s« existiert bereits in Schema »%s«" +msgid "could not identify a hash function for type %s" +msgstr "konnte keine Hash-Funktion für Typ %s ermitteln" -#: commands/functioncmds.c:2003 -msgid "no inline code specified" -msgstr "kein Inline-Code angegeben" +#: utils/adt/arrayfuncs.c:4814 utils/adt/arrayfuncs.c:4854 +msgid "dimension array or low bound array cannot be null" +msgstr "Dimensions-Array oder Untergrenzen-Array darf nicht NULL sein" -#: commands/functioncmds.c:2051 -#, c-format -msgid "language \"%s\" does not support inline code execution" -msgstr "Sprache »%s« unterstützt das Ausführen von Inline-Code nicht" +#: utils/adt/arrayfuncs.c:4917 utils/adt/arrayfuncs.c:4949 +msgid "Dimension array must be one dimensional." +msgstr "Dimensions-Array muss eindimensional sein." -#: commands/indexcmds.c:163 -msgid "must specify at least one column" -msgstr "mindestens eine Spalte muss angegeben werden" +#: utils/adt/arrayfuncs.c:4922 utils/adt/arrayfuncs.c:4954 +msgid "wrong range of array subscripts" +msgstr "falscher Bereich der Arrayindizes" -#: commands/indexcmds.c:167 -#, c-format -msgid "cannot use more than %d columns in an index" -msgstr "Index kann nicht mehr als %d Spalten enthalten" +#: utils/adt/arrayfuncs.c:4923 utils/adt/arrayfuncs.c:4955 +msgid "Lower bound of dimension array must be one." +msgstr "Untergrenze des Dimensions-Arrays muss eins sein." + +#: utils/adt/arrayfuncs.c:4928 utils/adt/arrayfuncs.c:4960 +msgid "dimension values cannot be null" +msgstr "Dimensionswerte dürfen nicht NULL sein" -#: commands/indexcmds.c:194 +#: utils/adt/arrayfuncs.c:4966 +msgid "Low bound array has different size than dimensions array." +msgstr "Untergrenzen-Array hat andere Größe als Dimensions-Array." + +#: utils/adt/tsquery.c:156 utils/adt/tsquery.c:392 +#: utils/adt/tsvector_parser.c:136 #, c-format -msgid "cannot create index on foreign table \"%s\"" -msgstr "kann keinen Index für Fremdtabelle »%s« erzeugen" +msgid "syntax error in tsquery: \"%s\"" +msgstr "Syntaxfehler in tsquery: »%s«" -#: commands/indexcmds.c:209 -msgid "cannot create indexes on temporary tables of other sessions" -msgstr "kann keine Indexe für temporäre Tabellen anderer Sitzungen erzeugen" +#: utils/adt/tsquery.c:177 +#, c-format +msgid "no operand in tsquery: \"%s\"" +msgstr "kein Operand in tsquery: »%s«" -#: commands/indexcmds.c:264 commands/tablecmds.c:477 commands/tablecmds.c:7825 -msgid "only shared relations can be placed in pg_global tablespace" -msgstr "" -"nur geteilte Relationen können in den Tablespace »pg_global« gelegt werden" +#: utils/adt/tsquery.c:250 +#, c-format +msgid "value is too big in tsquery: \"%s\"" +msgstr "Wert ist zu groß in tsquery: »%s«" -#: commands/indexcmds.c:295 -msgid "substituting access method \"gist\" for obsolete method \"rtree\"" -msgstr "ersetze Zugriffsmethode »gist« für obsolete Methode »rtree«" +#: utils/adt/tsquery.c:255 +#, c-format +msgid "operand is too long in tsquery: \"%s\"" +msgstr "Operator ist zu lang in tsquery: »%s«" -#: commands/indexcmds.c:303 commands/opclasscmds.c:369 -#: commands/opclasscmds.c:790 commands/opclasscmds.c:2203 +#: utils/adt/tsquery.c:283 #, c-format -msgid "access method \"%s\" does not exist" -msgstr "Zugriffsmethode »%s« existiert nicht" +msgid "word is too long in tsquery: \"%s\"" +msgstr "Wort ist zu lang in tsquery: »%s«" -#: commands/indexcmds.c:312 +#: utils/adt/tsquery.c:512 #, c-format -msgid "access method \"%s\" does not support unique indexes" -msgstr "Zugriffsmethode »%s« unterstützt keine Unique Indexe" +msgid "text-search query doesn't contain lexemes: \"%s\"" +msgstr "Textsucheanfrage enthält keine Lexeme: »%s«" + +#: utils/adt/tsquery.c:523 utils/adt/tsquery_util.c:341 +msgid "tsquery is too large" +msgstr "tsquery ist zu groß" + +#: utils/adt/misc.c:80 +msgid "must be superuser to signal other server processes" +msgstr "nur Superuser können Signale an andere Serverprozesse senden" -#: commands/indexcmds.c:317 +#: utils/adt/misc.c:89 #, c-format -msgid "access method \"%s\" does not support multicolumn indexes" -msgstr "Zugriffsmethode »%s« unterstützt keine mehrspaltigen Indexe" +msgid "PID %d is not a PostgreSQL server process" +msgstr "PID %d ist kein PostgreSQL-Serverprozess" -#: commands/indexcmds.c:322 +#: utils/adt/misc.c:102 storage/lmgr/proc.c:1087 #, c-format -msgid "access method \"%s\" does not support exclusion constraints" -msgstr "Zugriffsmethode »%s« unterstützt keine Exclusion-Constraints" +msgid "could not send signal to process %d: %m" +msgstr "konnte Signal nicht an Prozess %d senden: %m" -#: commands/indexcmds.c:398 +#: utils/adt/misc.c:126 +msgid "must be superuser to signal the postmaster" +msgstr "nur Superuser können Signale an den Postmaster senden" + +#: utils/adt/misc.c:131 #, 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«" +msgid "failed to send signal to postmaster: %m" +msgstr "konnte Signal nicht an Postmaster senden: %m" -#: commands/indexcmds.c:762 -msgid "cannot use subquery in index predicate" -msgstr "Unteranfragen können nicht im Indexprädikat verwendet werden" +#: utils/adt/misc.c:148 +msgid "must be superuser to rotate log files" +msgstr "nur Superuser können Logdateien rotieren" -#: commands/indexcmds.c:766 -msgid "cannot use aggregate in index predicate" -msgstr "Aggregatfunktionen können nicht im Indexprädikat verwendet werden" +#: utils/adt/misc.c:153 +msgid "rotation not possible because log collection not active" +msgstr "Rotierung nicht möglich, weil Logsammlung nicht aktiv ist" -#: commands/indexcmds.c:775 -msgid "functions in index predicate must be marked IMMUTABLE" -msgstr "Funktionen im Indexprädikat müssen als IMMUTABLE markiert sein" +#: utils/adt/misc.c:195 +msgid "global tablespace never has databases" +msgstr "globaler Tablespace hat niemals Datenbanken" -#: commands/indexcmds.c:840 parser/parse_utilcmd.c:1702 +#: utils/adt/misc.c:216 #, c-format -msgid "column \"%s\" named in key does not exist" -msgstr "Spalte »%s«, die im Schlüssel verwendet wird, existiert nicht" +msgid "%u is not a tablespace OID" +msgstr "%u ist keine Tablespace-OID" -#: commands/indexcmds.c:893 -msgid "cannot use subquery in index expression" -msgstr "Unteranfragen können nicht in Indexausdrücken verwendet werden" +#: utils/adt/misc.c:352 +msgid "unreserved" +msgstr "unreserviert" -#: commands/indexcmds.c:897 -msgid "cannot use aggregate function in index expression" -msgstr "Aggregatfunktionen können nicht in Indexausdrücken verwendet werden" +#: utils/adt/misc.c:356 +msgid "unreserved (cannot be function or type name)" +msgstr "unreserviert (kann nicht Funktions- oder Typname sein)" -#: commands/indexcmds.c:908 -msgid "functions in index expression must be marked IMMUTABLE" -msgstr "Funktionen im Indexausdruck müssen als IMMUTABLE markiert sein" +#: utils/adt/misc.c:360 +msgid "reserved (can be function or type name)" +msgstr "reserviert (kann Funktions- oder Typname sein)" -#: commands/indexcmds.c:929 -msgid "could not determine which collation to use for index expression" -msgstr "konnte die für den Indexausdruck zu verwendende Sortierfolge nicht bestimmen" +#: utils/adt/misc.c:364 +msgid "reserved" +msgstr "reserviert" -#: 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 "Sortierfolgen werden von Typ %s nicht unterstützt" +#: 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:117 +msgid "requested length too large" +msgstr "verlangte Länge zu groß" + +#: utils/adt/oracle_compat.c:895 +msgid "requested character too large" +msgstr "verlangtes Zeichen zu groß" -#: commands/indexcmds.c:975 +#: utils/adt/oracle_compat.c:941 utils/adt/oracle_compat.c:995 #, c-format -msgid "operator %s is not commutative" -msgstr "Operator %s ist nicht kommutativ" +msgid "requested character too large for encoding: %d" +msgstr "gewünschtes Zeichen ist zu groß für die Kodierung: %d" -#: commands/indexcmds.c:977 -msgid "Only commutative operators can be used in exclusion constraints." -msgstr "" -"In Exclusion-Constraints können nur kommutative Operatoren verwendet werden." +#: utils/adt/oracle_compat.c:988 +msgid "null character not permitted" +msgstr "Null-Zeichen ist nicht erlaubt" -#: commands/indexcmds.c:1003 -#, c-format -msgid "operator %s is not a member of operator family \"%s\"" -msgstr "Operator %s ist kein Mitglied der Operatorfamilie »%s«" +#: utils/adt/tsvector_op.c:1173 +msgid "ts_stat query must return one tsvector column" +msgstr "ts_stat-Anfrage muss eine tsvector-Spalte zurückgeben" -#: commands/indexcmds.c:1006 -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." +#: utils/adt/tsvector_op.c:1353 +#, c-format +msgid "tsvector column \"%s\" does not exist" +msgstr "tsvector-Spalte »%s« existiert nicht" -#: commands/indexcmds.c:1041 +#: utils/adt/tsvector_op.c:1359 #, c-format -msgid "access method \"%s\" does not support ASC/DESC options" -msgstr "Zugriffsmethode »%s« unterstützt die Optionen ASC/DESC nicht" +msgid "column \"%s\" is not of tsvector type" +msgstr "Spalte »%s« hat nicht Typ tsvector" -#: commands/indexcmds.c:1046 +#: utils/adt/tsvector_op.c:1371 #, c-format -msgid "access method \"%s\" does not support NULLS FIRST/LAST options" -msgstr "Zugriffsmethode »%s« unterstützt die Optionen NULLS FIRST/LAST nicht" +msgid "configuration column \"%s\" does not exist" +msgstr "Konfigurationsspalte »%s« existiert nicht" -#: commands/indexcmds.c:1102 +#: utils/adt/tsvector_op.c:1377 #, 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«" +msgid "column \"%s\" is not of regconfig type" +msgstr "Spalte »%s« hat nicht Typ regconfig" -#: 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 "" -"Sie müssen für den Index eine Operatorklasse angeben oder eine " -"Standardoperatorklasse für den Datentyp definieren." +#: utils/adt/tsvector_op.c:1384 +#, c-format +msgid "configuration column \"%s\" must not be null" +msgstr "Konfigurationsspalte »%s« darf nicht NULL sein" -#: commands/indexcmds.c:1133 commands/indexcmds.c:1141 -#: commands/opclasscmds.c:212 commands/opclasscmds.c:1568 +#: utils/adt/tsvector_op.c:1397 #, c-format -msgid "operator class \"%s\" does not exist for access method \"%s\"" -msgstr "Operatorklasse »%s« existiert nicht für Zugriffsmethode »%s«" +msgid "text search configuration name \"%s\" must be schema-qualified" +msgstr "Textsuchekonfigurationsname »%s« muss Schemaqualifikation haben" -#: commands/indexcmds.c:1154 +#: utils/adt/tsvector_op.c:1417 commands/tablecmds.c:1304 +#: commands/tablecmds.c:2079 commands/copy.c:3792 commands/indexcmds.c:823 +#: parser/parse_expr.c:766 #, c-format -msgid "operator class \"%s\" does not accept data type %s" -msgstr "Operatorklasse »%s« akzeptiert Datentyp %s nicht" +msgid "column \"%s\" does not exist" +msgstr "Spalte »%s« existiert nicht" -#: commands/indexcmds.c:1244 +#: utils/adt/tsvector_op.c:1422 #, c-format -msgid "there are multiple default operator classes for data type %s" -msgstr "es gibt mehrere Standardoperatorklassen für Datentyp %s" +msgid "column \"%s\" is not of a character type" +msgstr "Spalte »%s« hat keinen Zeichentyp" -#: commands/indexcmds.c:1585 +#: utils/adt/datetime.c:3531 utils/adt/datetime.c:3538 #, c-format -msgid "table \"%s\" has no indexes" -msgstr "Tabelle »%s« hat keine Indexe" +msgid "date/time field value out of range: \"%s\"" +msgstr "Datum/Zeit-Feldwert ist außerhalb des gültigen Bereichs: »%s«" -#: commands/indexcmds.c:1613 -msgid "can only reindex the currently open database" -msgstr "aktuell geöffnete Datenbank kann nicht reindiziert werden" +#: utils/adt/datetime.c:3540 +msgid "Perhaps you need a different \"datestyle\" setting." +msgstr "Möglicherweise benötigen Sie eine andere »datestyle«-Einstellung." -#: commands/indexcmds.c:1698 +#: utils/adt/datetime.c:3545 #, c-format -msgid "table \"%s.%s\" was reindexed" -msgstr "Tabelle »%s.%s« wurde neu indiziert" +msgid "interval field value out of range: \"%s\"" +msgstr "»interval«-Feldwert ist außerhalb des gültigen Bereichs: »%s«" -#: commands/lockcmds.c:93 +#: utils/adt/datetime.c:3551 #, c-format -msgid "could not obtain lock on relation \"%s\"" -msgstr "konnte Sperre für Relation »%s« nicht setzen" +msgid "time zone displacement out of range: \"%s\"" +msgstr "Zeitzonenunterschied ist außerhalb des gültigen Bereichs: »%s«" + +#: utils/adt/genfile.c:60 +msgid "reference to parent directory (\"..\") not allowed" +msgstr "Verweis auf übergeordnetes Verzeichnis (»..«) nicht erlaubt" + +#: utils/adt/genfile.c:71 +msgid "absolute path not allowed" +msgstr "absoluter Pfad nicht erlaubt" + +#: utils/adt/genfile.c:76 +msgid "path must be in or below the current directory" +msgstr "Pfad muss in oder unter aktuellem Verzeichnis sein" -#: commands/lockcmds.c:98 +#: utils/adt/genfile.c:122 commands/copy.c:2193 #, c-format -msgid "could not obtain lock on relation with OID %u" -msgstr "konnte Sperre für Relation mit OID %u nicht setzen" +msgid "could not open file \"%s\" for reading: %m" +msgstr "konnte Datei »%s« nicht zum Lesen öffnen: %m" -#: commands/opclasscmds.c:136 commands/opclasscmds.c:1619 -#: commands/opclasscmds.c:1839 commands/opclasscmds.c:1850 -#: commands/opclasscmds.c:2084 commands/opclasscmds.c:2095 +#: utils/adt/genfile.c:129 #, c-format -msgid "operator family \"%s\" does not exist for access method \"%s\"" -msgstr "Operatorfamilie »%s« existiert nicht für Zugriffsmethode »%s«" +msgid "could not seek in file \"%s\": %m" +msgstr "konnte Positionszeiger in Datei »%s« nicht setzen: %m" -#: commands/opclasscmds.c:271 +#: utils/adt/genfile.c:138 access/transam/xlog.c:2543 +#: access/transam/xlog.c:4494 access/transam/xlog.c:9359 +#: access/transam/xlog.c:9372 access/transam/xlog.c:9906 +#: access/transam/xlog.c:9941 storage/file/copydir.c:186 #, c-format -msgid "operator family \"%s\" for access method \"%s\" already exists" -msgstr "Operatorfamilie »%s« für Zugriffsmethode »%s« existiert bereits" +msgid "could not read file \"%s\": %m" +msgstr "konnte Datei »%s« nicht lesen: %m" -#: commands/opclasscmds.c:408 -msgid "must be superuser to create an operator class" -msgstr "nur Superuser können Operatorklassen erzeugen" +#: 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 "nur Superuser können Dateien lesen" -#: 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 "ungültige Operatornummer %d, muss zwischen 1 und %d sein" +#: utils/adt/genfile.c:186 utils/adt/genfile.c:231 +msgid "requested length cannot be negative" +msgstr "verlangte Länge darf nicht negativ sein" -#: 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 "ungültige Prozedurnummer %d, muss zwischen 1 und %d sein" +#: utils/adt/genfile.c:272 +msgid "must be superuser to get file information" +msgstr "nur Superuser können Dateiinformationen lesen" -#: commands/opclasscmds.c:561 -msgid "storage type specified more than once" -msgstr "Storage-Typ mehrmals angegeben" +#: utils/adt/genfile.c:336 +msgid "must be superuser to get directory listings" +msgstr "nur Superuser können Verzeichnislisten lesen" -#: commands/opclasscmds.c:589 -#, c-format +#: utils/adt/tsquery_rewrite.c:296 +msgid "ts_rewrite query must return two tsquery columns" +msgstr "ts_rewrite-Anfrage muss zwei tsquery-Spalten zurückgeben" + +#: utils/adt/tsquery_cleanup.c:285 msgid "" -"storage type cannot be different from data type for access method \"%s\"" +"text-search query contains only stop words or doesn't contain lexemes, " +"ignored" msgstr "" -"Storage-Typ kann nicht vom Datentyp der Zugriffsmethode »%s« verschieden sein" +"Textsucheanfrage enthält nur Stoppwörter oder enthält keine Lexeme, ignoriert" -#: commands/opclasscmds.c:605 +#: utils/adt/uuid.c:128 #, c-format -msgid "operator class \"%s\" for access method \"%s\" already exists" -msgstr "Operatorklasse »%s« für Zugriffsmethode »%s« existiert bereits" +msgid "invalid input syntax for uuid: \"%s\"" +msgstr "ungültige Eingabesyntax für Typ uuid: »%s«" -#: commands/opclasscmds.c:633 -#, 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" +#: utils/adt/rowtypes.c:99 utils/adt/rowtypes.c:488 +msgid "input of anonymous composite types is not implemented" +msgstr "Eingabe anonymer zusammengesetzter Typen ist nicht implementiert" -#: commands/opclasscmds.c:636 +#: 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 "Operator class \"%s\" already is the default." -msgstr "Operatorklasse »%s« ist bereits der Standard." +msgid "malformed record literal: \"%s\"" +msgstr "fehlerhafte Record-Konstante: »%s«" -#: commands/opclasscmds.c:760 -msgid "must be superuser to create an operator family" -msgstr "nur Superuser können Operatorfamilien erzeugen" +#: utils/adt/rowtypes.c:153 +msgid "Missing left parenthesis." +msgstr "Linke Klammer fehlt." -#: commands/opclasscmds.c:816 -msgid "must be superuser to alter an operator family" -msgstr "nur Superuser können Operatorfamilien ändern" +#: utils/adt/rowtypes.c:181 +msgid "Too few columns." +msgstr "Zu wenige Spalten." -#: commands/opclasscmds.c:880 -msgid "operator argument types must be specified in ALTER OPERATOR FAMILY" -msgstr "Operatorargumenttypen müssen in ALTER OPERATOR FAMILY angegeben werden" +#: utils/adt/rowtypes.c:205 utils/adt/rowtypes.c:213 +msgid "Unexpected end of input." +msgstr "Unerwartetes Ende der Eingabe." -#: commands/opclasscmds.c:944 -msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY" -msgstr "STORAGE kann in ALTER OPERATOR FAMILY nicht angegeben werden" +#: utils/adt/rowtypes.c:264 +msgid "Too many columns." +msgstr "Zu viele Spalten." -#: commands/opclasscmds.c:1060 -msgid "one or two argument types must be specified" -msgstr "ein oder zwei Argumenttypen müssen angegeben werden" +#: utils/adt/rowtypes.c:272 +msgid "Junk after right parenthesis." +msgstr "Müll nach rechter Klammer." -#: commands/opclasscmds.c:1086 -msgid "index operators must be binary" -msgstr "Indexoperatoren müssen binär sein" +#: utils/adt/rowtypes.c:537 +#, c-format +msgid "wrong number of columns: %d, expected %d" +msgstr "falsche Anzahl der Spalten: %d, erwartet wurden %d" -#: commands/opclasscmds.c:1111 +#: utils/adt/rowtypes.c:564 #, c-format -msgid "access method \"%s\" does not support ordering operators" -msgstr "Zugriffsmethode »%s« unterstützt keine Sortieroperatoren" +msgid "wrong data type: %u, expected %u" +msgstr "falscher Datentyp: %u, erwartet wurde %u" -#: commands/opclasscmds.c:1124 -msgid "index search operators must return boolean" -msgstr "Indexsuchoperatoren müssen Typ boolean zurückgeben" +#: utils/adt/rowtypes.c:625 +#, c-format +msgid "improper binary format in record column %d" +msgstr "falsches Binärformat in Record-Spalte %d" -#: commands/opclasscmds.c:1163 -msgid "btree procedures must have two arguments" -msgstr "btree-Prozeduren müssen zwei Argumente haben" +#: utils/adt/rowtypes.c:925 utils/adt/rowtypes.c:1160 +#, 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" -#: commands/opclasscmds.c:1167 -msgid "btree procedures must return integer" -msgstr "btree-Prozeduren müssen Typ integer zurückgeben" +#: utils/adt/rowtypes.c:1011 utils/adt/rowtypes.c:1231 +msgid "cannot compare record types with different numbers of columns" +msgstr "" +"kann Record-Typen mit unterschiedlicher Anzahl Spalten nicht vergleichen" -#: commands/opclasscmds.c:1182 -msgid "hash procedures must have one argument" -msgstr "Hash-Prozeduren müssen ein Argument haben" +#: utils/adt/nabstime.c:160 +#, c-format +msgid "invalid time zone name: \"%s\"" +msgstr "ungültiger Zeitzonenname: »%s«" -#: commands/opclasscmds.c:1186 -msgid "hash procedures must return integer" -msgstr "Hash-Prozeduren müssen Typ integer zurückgeben" +#: utils/adt/nabstime.c:506 utils/adt/nabstime.c:579 +msgid "cannot convert abstime \"invalid\" to timestamp" +msgstr "kann »abstime«-Wert »invalid« nicht »timestamp« umwandeln" -#: commands/opclasscmds.c:1211 -msgid "associated data types must be specified for index support procedure" -msgstr "" -"zugehörige Datentypen müssen für Indexunterstützungsprozedur angegeben werden" +#: utils/adt/nabstime.c:806 +msgid "invalid status in external \"tinterval\" value" +msgstr "ungültiger Status in externem »tinterval«-Wert" -#: commands/opclasscmds.c:1237 -#, c-format -msgid "procedure number %d for (%s,%s) appears more than once" -msgstr "Prozedurnummer %d für (%s,%s) einscheint mehrmals" +#: utils/adt/nabstime.c:880 +msgid "cannot convert reltime \"invalid\" to interval" +msgstr "kann »reltime«-Wert »invalid« nicht in »interval« umwandeln" -#: commands/opclasscmds.c:1244 +#: utils/adt/nabstime.c:1575 #, c-format -msgid "operator number %d for (%s,%s) appears more than once" -msgstr "Operatornummer %d für (%s,%s) einscheint mehrmals" +msgid "invalid input syntax for type tinterval: \"%s\"" +msgstr "ungültige Eingabesyntax für Typ tinterval: »%s«" -#: commands/opclasscmds.c:1293 +#: utils/adt/numutils.c:75 #, c-format -msgid "operator %d(%s,%s) already exists in operator family \"%s\"" -msgstr "Operator %d(%s,%s) existiert bereits in Operatorfamilie »%s«" +msgid "value \"%s\" is out of range for type integer" +msgstr "Wert »%s« ist außerhalb des gültigen Bereichs für Typ integer" -#: commands/opclasscmds.c:1406 +#: utils/adt/numutils.c:81 #, c-format -msgid "function %d(%s,%s) already exists in operator family \"%s\"" -msgstr "Funktion %d(%s,%s) existiert bereits in Operatorfamilie »%s«" +msgid "value \"%s\" is out of range for type smallint" +msgstr "Wert »%s« ist außerhalb des gültigen Bereichs für Typ smallint" -#: commands/opclasscmds.c:1493 +#: utils/adt/numutils.c:87 #, c-format -msgid "operator %d(%s,%s) does not exist in operator family \"%s\"" -msgstr "Operator %d(%s,%s) existiert nicht in Operatorfamilie »%s«" +msgid "value \"%s\" is out of range for 8-bit integer" +msgstr "Wert »%s« ist außerhalb des gültigen Bereichs für 8-Bit-Ganzzahl" -#: commands/opclasscmds.c:1533 +#: utils/adt/pg_locale.c:953 #, c-format -msgid "function %d(%s,%s) does not exist in operator family \"%s\"" -msgstr "Funktion %d(%s,%s) existiert nicht in Operatorfamilie »%s«" +msgid "could not create locale \"%s\": %m" +msgstr "konnte Locale »%s« nicht erzeugen: %m" -#: commands/opclasscmds.c:1779 +#: utils/adt/pg_locale.c:956 #, c-format msgid "" -"operator class \"%s\" for access method \"%s\" already exists in schema \"%s" -"\"" +"The operating system could not find any locale data for the locale name \"%s" +"\"." msgstr "" -"Operatorklasse »%s« für Zugriffsmethode »%s« existiert bereits in Schema »%s«" +"Das Betriebssystem konnte keine Locale-Daten für den Locale-Namen »%s« " +"finden." -#: commands/opclasscmds.c:1868 -#, c-format +#: utils/adt/pg_locale.c:1043 msgid "" -"operator family \"%s\" for access method \"%s\" already exists in schema \"%s" -"\"" +"collations with different collate and ctype values are not supported on this " +"platform" msgstr "" -"Operatorfamilie »%s« für Zugriffsmethode »%s« existiert bereits in Schema " -"»%s«" - -#: commands/operatorcmds.c:100 -msgid "=> is deprecated as an operator name" -msgstr "=> ist als Operatorname veraltet" +"Sortierfolgen mit unterschiedlichen »collate«- und »ctype«-Werten werden auf " +"dieser Plattform nicht unterstützt" -#: commands/operatorcmds.c:101 -msgid "" -"This name may be disallowed altogether in future versions of PostgreSQL." +#: utils/adt/pg_locale.c:1058 +msgid "nondefault collations are not supported on this platform" msgstr "" -"Dieser Name wird möglicherweise in einer zukünftigen Version von PostgreSQL " -"nicht mehr zugelassen." - -#: commands/operatorcmds.c:122 commands/operatorcmds.c:130 -msgid "SETOF type not allowed for operator argument" -msgstr "SETOF-Typ nicht als Operatorargument erlaubt" - -#: commands/operatorcmds.c:158 -#, c-format -msgid "operator attribute \"%s\" not recognized" -msgstr "Attribut »%s« für Operator unbekannt" - -#: commands/operatorcmds.c:168 -msgid "operator procedure must be specified" -msgstr "Operatorprozedur muss angegeben werden" +"Sortierfolgen außer der Standardsortierfolge werden auf dieser Plattform " +"nicht unterstützt" -#: commands/operatorcmds.c:179 -msgid "at least one of leftarg or rightarg must be specified" -msgstr "entweder leftarg oder rightarg (oder beides) muss angegeben werden" +#: utils/adt/pg_locale.c:1229 +msgid "invalid multibyte character for locale" +msgstr "ungültiges Mehrbytezeichen für Locale" -#: commands/operatorcmds.c:228 -#, c-format -msgid "restriction estimator function %s must return type \"float8\"" -msgstr "Restriktionsschätzfunktion %s muss Typ »float8« zurückgeben" +#: utils/adt/pg_locale.c:1230 +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." -#: commands/operatorcmds.c:267 +#: utils/adt/encode.c:55 utils/adt/encode.c:91 #, c-format -msgid "join estimator function %s must return type \"float8\"" -msgstr "Join-Schätzfunktion %s muss Typ »float8« zurückgeben" +msgid "unrecognized encoding: \"%s\"" +msgstr "unbekannte Kodierung: »%s«" -#: commands/operatorcmds.c:318 +#: utils/adt/encode.c:150 #, c-format -msgid "operator %s does not exist, skipping" -msgstr "Operator %s existiert nicht, wird übersprungen" - -#: commands/portalcmds.c:61 commands/portalcmds.c:160 -#: commands/portalcmds.c:212 -msgid "invalid cursor name: must not be empty" -msgstr "ungültiger Cursorname: darf nicht leer sein" +msgid "invalid hexadecimal digit: \"%c\"" +msgstr "ungültige hexadezimale Ziffer: »%c«" -#: 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« existiert nicht" +#: utils/adt/encode.c:178 +msgid "invalid hexadecimal data: odd number of digits" +msgstr "ungültige hexadezimale Daten: ungerade Anzahl Ziffern" -#: commands/portalcmds.c:336 tcop/pquery.c:738 tcop/pquery.c:1401 -#, c-format -msgid "portal \"%s\" cannot be run" -msgstr "Portal »%s« kann nicht ausgeführt werden" +#: utils/adt/encode.c:295 +msgid "unexpected \"=\"" +msgstr "unerwartetes »=«" -#: commands/portalcmds.c:409 -msgid "could not reposition held cursor" -msgstr "konnte gehaltenen Cursor nicht umpositionieren" +#: utils/adt/encode.c:307 +msgid "invalid symbol" +msgstr "ungültiges Symbol" -#: commands/prepare.c:71 -msgid "invalid statement name: must not be empty" -msgstr "ungültiger Anweisungsname: darf nicht leer sein" +#: utils/adt/encode.c:327 +msgid "invalid end sequence" +msgstr "ungültige Endsequenz" -#: commands/prepare.c:122 tcop/postgres.c:1267 parser/parse_param.c:303 +#: utils/adt/oid.c:43 utils/adt/oid.c:57 utils/adt/oid.c:63 utils/adt/oid.c:84 #, c-format -msgid "could not determine data type of parameter $%d" -msgstr "konnte Datentyp von Parameter $%d nicht ermitteln" +msgid "invalid input syntax for type oid: \"%s\"" +msgstr "ungültige Eingabesyntax für Typ »oid«: »%s«" -#: commands/prepare.c:140 -msgid "utility statements cannot be prepared" -msgstr "Utility-Anweisungen können nicht vorbereitet werden" +#: utils/adt/oid.c:69 utils/adt/oid.c:107 +#, c-format +msgid "value \"%s\" is out of range for type oid" +msgstr "Wert »%s« ist außerhalb des gültigen Bereichs für Typ »oid«" -#: commands/prepare.c:240 commands/prepare.c:247 commands/prepare.c:706 -msgid "prepared statement is not a SELECT" -msgstr "vorbereitete Anweisung ist kein SELECT" +#: utils/adt/oid.c:287 +msgid "invalid oidvector data" +msgstr "ungültige oidvector-Daten" -#: commands/prepare.c:314 +#: utils/adt/acl.c:253 #, c-format -msgid "wrong number of parameters for prepared statement \"%s\"" -msgstr "falsche Anzahl Parameter für vorbereitete Anweisung »%s«" +msgid "unrecognized key word: \"%s\"" +msgstr "unbekanntes Schlüsselwort: »%s«" -#: commands/prepare.c:316 -#, c-format -msgid "Expected %d parameters but got %d." -msgstr "%d Parameter erwartet aber %d erhalten." +#: utils/adt/acl.c:254 +msgid "ACL key word must be \"group\" or \"user\"." +msgstr "ACL-Schlüsselwort muss »group« oder »user« sein." -#: commands/prepare.c:345 -msgid "cannot use subquery in EXECUTE parameter" -msgstr "Unteranfragen können nicht in EXECUTE-Parameter verwendet werden" +#: utils/adt/acl.c:259 +msgid "missing name" +msgstr "Name fehlt" -#: commands/prepare.c:349 -msgid "cannot use aggregate function in EXECUTE parameter" -msgstr "Aggregatfunktionen können nicht in EXECUTE-Parameter verwendet werden" +#: utils/adt/acl.c:260 +msgid "A name must follow the \"group\" or \"user\" key word." +msgstr "Auf das Schlüsselwort »group« oder »user« muss ein Name folgen." -#: commands/prepare.c:353 -msgid "cannot use window function in EXECUTE parameter" -msgstr "Fensterfunktionen können nicht in EXECUTE-Parameter verwendet werden" +#: utils/adt/acl.c:266 +msgid "missing \"=\" sign" +msgstr "»=«-Zeichen fehlt" -#: commands/prepare.c:366 +#: utils/adt/acl.c:319 #, c-format -msgid "parameter $%d of type %s cannot be coerced to the expected type %s" -msgstr "" -"Parameter $%d mit Typ %s kann nicht in erwarteten Typ %s umgewandelt werden" +msgid "invalid mode character: must be one of \"%s\"" +msgstr "ungültiges Moduszeichen: muss eines aus »%s« sein" -#: commands/prepare.c:467 -#, c-format -msgid "prepared statement \"%s\" already exists" -msgstr "vorbereitete Anweisung »%s« existiert bereits" +#: utils/adt/acl.c:341 +msgid "a name must follow the \"/\" sign" +msgstr "auf das »/«-Zeichen muss ein Name folgen" -#: commands/prepare.c:525 +#: utils/adt/acl.c:349 #, c-format -msgid "prepared statement \"%s\" does not exist" -msgstr "vorbereitete Anweisung »%s« existiert nicht" +msgid "defaulting grantor to user ID %u" +msgstr "nicht angegebener Grantor wird auf user ID %u gesetzt" -#: 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 "" -"Funktion mit Mengenergebnis in einem Zusammenhang aufgerufen, der keine " -"Mengenergebnisse verarbeiten kann" +#: utils/adt/acl.c:540 +msgid "ACL array contains wrong data type" +msgstr "ACL-Array enthält falschen Datentyp" -#: 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 "" -"Materialisierungsmodus wird benötigt, ist aber in diesem Zusammenhang nicht " -"erlaubt" +#: utils/adt/acl.c:544 +msgid "ACL arrays must be one-dimensional" +msgstr "ACL-Arrays müssen eindimensional sein" -#: commands/user.c:143 -msgid "SYSID can no longer be specified" -msgstr "SYSID kann nicht mehr angegeben werden" +#: utils/adt/acl.c:548 +msgid "ACL arrays must not contain null values" +msgstr "ACL-Array darf keine NULL-Werte enthalten" -#: commands/user.c:284 -msgid "must be superuser to create superusers" -msgstr "nur Superuser können Superuser anlegen" +#: utils/adt/acl.c:572 +msgid "extra garbage at the end of the ACL specification" +msgstr "überflüssiger Müll am Ende der ACL-Angabe" -#: commands/user.c:291 -msgid "must be superuser to create replication users" -msgstr "nur Superuser können Replikationsbenutzer anlegen" +#: utils/adt/acl.c:1129 +msgid "grant options cannot be granted back to your own grantor" +msgstr "Grant-Optionen können nicht an den eigenen Grantor gegeben werden" -#: commands/user.c:298 -msgid "permission denied to create role" -msgstr "keine Berechtigung, um Rolle zu erzeugen" +#: utils/adt/acl.c:1190 +msgid "dependent privileges exist" +msgstr "abhängige Privilegien existieren" -#: commands/user.c:305 commands/user.c:1087 +#: utils/adt/acl.c:1191 +msgid "Use CASCADE to revoke them too." +msgstr "Verwenden Sie CASCADE, um diese auch zu entziehen." + +#: utils/adt/acl.c:1470 +msgid "aclinsert is no longer supported" +msgstr "aclinsert wird nicht mehr unterstützt" + +#: utils/adt/acl.c:1480 +msgid "aclremove is no longer supported" +msgstr "aclremove wird nicht mehr unterstützt" + +#: utils/adt/acl.c:1566 utils/adt/acl.c:1620 #, c-format -msgid "role name \"%s\" is reserved" -msgstr "Rollenname »%s« ist reserviert" +msgid "unrecognized privilege type: \"%s\"" +msgstr "unbekannter Privilegtyp: »%s«" -#: commands/user.c:318 commands/user.c:1081 +#: 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 +#: commands/tablecmds.c:210 commands/tablecmds.c:2178 +#: commands/tablecmds.c:2423 commands/tablecmds.c:9073 +#: commands/sequence.c:1032 catalog/aclchk.c:1692 catalog/objectaddress.c:398 #, c-format -msgid "role \"%s\" already exists" -msgstr "Rolle »%s« existiert bereits" +msgid "\"%s\" is not a sequence" +msgstr "»%s« ist keine Sequenz" -#: 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 +#: utils/adt/acl.c:3359 utils/adt/regproc.c:118 utils/adt/regproc.c:139 +#: utils/adt/regproc.c:289 #, c-format -msgid "role \"%s\" does not exist" -msgstr "Rolle »%s« existiert nicht" +msgid "function \"%s\" does not exist" +msgstr "Funktion »%s« existiert nicht" -#: commands/user.c:636 commands/user.c:842 commands/user.c:1321 -#: commands/user.c:1458 -msgid "must be superuser to alter superusers" -msgstr "nur Superuser können Superuser ändern" +#: utils/adt/acl.c:4613 +#, c-format +msgid "must be member of role \"%s\"" +msgstr "Berechtigung nur für Mitglied von Rolle »%s«" -#: commands/user.c:643 -msgid "must be superuser to alter replication users" -msgstr "nur Superuser können Replikationsbenutzer ändern" +#: utils/adt/enum.c:49 utils/adt/enum.c:59 utils/adt/enum.c:118 +#: utils/adt/enum.c:128 +#, c-format +msgid "invalid input value for enum %s: \"%s\"" +msgstr "ungültiger Eingabewert für Enum %s: »%s«" -#: commands/user.c:659 commands/user.c:850 -msgid "permission denied" -msgstr "keine Berechtigung" +#: utils/adt/enum.c:86 utils/adt/enum.c:153 utils/adt/enum.c:203 +#, c-format +msgid "invalid internal value for enum: %u" +msgstr "ungültiger interner Wert für Enum: %u" -#: commands/user.c:878 -msgid "permission denied to drop role" -msgstr "keine Berechtigung, um Rolle zu entfernen" +#: utils/adt/enum.c:362 utils/adt/enum.c:391 utils/adt/enum.c:431 +#: utils/adt/enum.c:451 +msgid "could not determine actual enum type" +msgstr "konnte tatsächlichen Enum-Typen nicht bestimmen" -#: commands/user.c:910 +#: utils/adt/enum.c:370 utils/adt/enum.c:399 #, c-format -msgid "role \"%s\" does not exist, skipping" -msgstr "Rolle »%s« existiert nicht, wird übersprungen" +msgid "enum %s contains no values" +msgstr "Enum %s enthält keine Werte" -#: commands/user.c:922 commands/user.c:926 -msgid "current user cannot be dropped" -msgstr "aktueller Benutzer kann nicht entfernt werden" +#: 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:2888 +msgid "MATCH PARTIAL not yet implemented" +msgstr "MATCH PARTIAL ist noch nicht implementiert" -#: commands/user.c:930 -msgid "session user cannot be dropped" -msgstr "aktueller Sitzungsbenutzer kann nicht entfernt werden" +#: utils/adt/ri_triggers.c:409 utils/adt/ri_triggers.c:2841 +#: utils/adt/ri_triggers.c:3535 utils/adt/ri_triggers.c:3567 +#, 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«" -#: commands/user.c:941 -msgid "must be superuser to drop superusers" -msgstr "nur Superuser können Superuser löschen" +#: utils/adt/ri_triggers.c:412 utils/adt/ri_triggers.c:2844 +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." -#: commands/user.c:954 +#: utils/adt/ri_triggers.c:3080 commands/constraint.c:59 #, c-format -msgid "role \"%s\" cannot be dropped because some objects depend on it" -msgstr "kann Rolle »%s« nicht löschen, weil andere Objekte davon abhängen" - -#: commands/user.c:1071 -msgid "session user cannot be renamed" -msgstr "aktueller Sitzungsbenutzer kann nicht umbenannt werden" +msgid "function \"%s\" was not called by trigger manager" +msgstr "Funktion »%s« wurde nicht von Triggermanager aufgerufen" -#: commands/user.c:1075 -msgid "current user cannot be renamed" -msgstr "aktueller Benutzer kann nicht umbenannt werden" +#: utils/adt/ri_triggers.c:3089 commands/constraint.c:66 +#, c-format +msgid "function \"%s\" must be fired AFTER ROW" +msgstr "Funktion »%s« muss AFTER ROW ausgelöst werden" -#: commands/user.c:1098 -msgid "must be superuser to rename superusers" -msgstr "nur Superuser können Superuser umbenennen" +#: utils/adt/ri_triggers.c:3097 +#, c-format +msgid "function \"%s\" must be fired for INSERT" +msgstr "Funktion »%s« muss von INSERT ausgelöst werden" -#: commands/user.c:1105 -msgid "permission denied to rename role" -msgstr "keine Berechtigung, um Rolle umzubenennen" +#: utils/adt/ri_triggers.c:3103 +#, c-format +msgid "function \"%s\" must be fired for UPDATE" +msgstr "Funktion »%s« muss von UPDATE ausgelöst werden" -#: commands/user.c:1126 -msgid "MD5 password cleared because of role rename" -msgstr "MD5-Passwort wegen Rollenumbenennung gelöscht" +#: utils/adt/ri_triggers.c:3110 commands/constraint.c:80 +#, c-format +msgid "function \"%s\" must be fired for INSERT or UPDATE" +msgstr "Funktion »%s« muss von INSERT oder UPDATE ausgelöst werden" -#: commands/user.c:1182 -msgid "column names cannot be included in GRANT/REVOKE ROLE" -msgstr "bei GRANT/REVOKE ROLE können keine Spaltennamen angegeben werden" +#: utils/adt/ri_triggers.c:3117 +#, c-format +msgid "function \"%s\" must be fired for DELETE" +msgstr "Funktion »%s« muss von DELETE ausgelöst werden" -#: commands/user.c:1220 -msgid "permission denied to drop objects" -msgstr "keine Berechtigung, um Objekte zu löschen" +#: utils/adt/ri_triggers.c:3146 +#, 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«" -#: commands/user.c:1247 commands/user.c:1256 -msgid "permission denied to reassign objects" -msgstr "keine Berechtigung, um Objekte neu zuzuordnen" +#: utils/adt/ri_triggers.c:3148 +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." -#: commands/user.c:1329 commands/user.c:1466 +#: utils/adt/ri_triggers.c:3502 #, c-format -msgid "must have admin option on role \"%s\"" -msgstr "Admin-Option für Rolle »%s« wird benötigt" +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" -#: commands/user.c:1337 -msgid "must be superuser to set grantor" -msgstr "nur Superuser können Grantor setzen" +#: utils/adt/ri_triggers.c:3506 +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." -#: commands/user.c:1362 +#: utils/adt/ri_triggers.c:3537 #, c-format -msgid "role \"%s\" is a member of role \"%s\"" -msgstr "Rolle »%s« ist ein Mitglied der Rolle »%s«" +msgid "No rows were found in \"%s\"." +msgstr "In »%s« wurden keine Zeilen gefunden." -#: commands/user.c:1377 +#: utils/adt/ri_triggers.c:3569 #, c-format -msgid "role \"%s\" is already a member of role \"%s\"" -msgstr "Rolle »%s« ist schon Mitglied der Rolle »%s«" +msgid "Key (%s)=(%s) is not present in table \"%s\"." +msgstr "Schlüssel (%s)=(%s) ist nicht in Tabelle »%s« vorhanden." -#: commands/user.c:1488 +#: utils/adt/ri_triggers.c:3575 #, c-format -msgid "role \"%s\" is not a member of role \"%s\"" -msgstr "Rolle »%s« ist kein Mitglied der Rolle »%s«" - -#: commands/proclang.c:93 -msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters" +msgid "" +"update or delete on table \"%s\" violates foreign key constraint \"%s\" on " +"table \"%s\"" msgstr "" -"verwende Informationen aus pg_pltemplate statt der CREATE-LANGUAGE-Parameter" +"Aktualisieren oder Löschen in Tabelle »%s« verletzt Fremdschlüssel-" +"Constraint »%s« von Tabelle »%s«" -#: commands/proclang.c:103 +#: utils/adt/ri_triggers.c:3578 #, c-format -msgid "must be superuser to create procedural language \"%s\"" -msgstr "nur Superuser können prozedurale Sprache »%s« erzeugen" +msgid "Key (%s)=(%s) is still referenced from table \"%s\"." +msgstr "Auf Schlüssel (%s)=(%s) wird noch aus Tabelle »%s« verwiesen." -#: commands/proclang.c:123 commands/proclang.c:279 +#: 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 "function %s must return type \"language_handler\"" -msgstr "Funktion %s muss Typ »language_handler« zurückgeben" +msgid "invalid input syntax for type numeric: \"%s\"" +msgstr "ungültige Eingabesyntax für Typ numeric: »%s«" -#: commands/proclang.c:243 -#, c-format -msgid "unsupported language \"%s\"" -msgstr "nicht unterstützte Sprache »%s«" +#: utils/adt/numeric.c:653 +msgid "invalid length in external \"numeric\" value" +msgstr "ungültige Länge in externem »numeric«-Wert" -#: commands/proclang.c:245 -msgid "The supported languages are listed in the pg_pltemplate system catalog." -msgstr "Die unterstützten Sprachen stehen im Systemkatalog pg_pltemplate." +#: utils/adt/numeric.c:664 +msgid "invalid sign in external \"numeric\" value" +msgstr "ungültiges Vorzeichen in externem »numeric«-Wert" -#: commands/proclang.c:253 -msgid "must be superuser to create custom procedural language" -msgstr "nur Superuser können maßgeschneiderte prozedurale Sprachen erzeugen" +#: utils/adt/numeric.c:674 +msgid "invalid digit in external \"numeric\" value" +msgstr "ungültige Ziffer in externem »numeric«-Wert" -#: commands/proclang.c:272 +#: utils/adt/numeric.c:814 utils/adt/numeric.c:828 #, c-format -msgid "" -"changing return type of function %s from \"opaque\" to \"language_handler\"" -msgstr "ändere Rückgabetyp von Funktion %s von »opaque« in »language_handler«" +msgid "NUMERIC precision %d must be between 1 and %d" +msgstr "Präzision von NUMERIC (%d) muss zwischen 1 und %d liegen" -#: commands/proclang.c:357 commands/proclang.c:608 +#: utils/adt/numeric.c:819 #, c-format -msgid "language \"%s\" already exists" -msgstr "Sprache »%s« existiert bereits" +msgid "NUMERIC scale %d must be between 0 and precision %d" +msgstr "Skala von NUMERIC (%d) muss zwischen 0 und %d liegen" -#: commands/proclang.c:539 -#, c-format -msgid "language \"%s\" does not exist, skipping" -msgstr "Sprache »%s« existiert nicht, wird übersprungen" +#: utils/adt/numeric.c:837 +msgid "invalid NUMERIC type modifier" +msgstr "ungültiker Modifikator für Typ NUMERIC" -#: commands/schemacmds.c:82 commands/schemacmds.c:275 -#, c-format -msgid "unacceptable schema name \"%s\"" -msgstr "inakzeptabler Schemaname »%s«" +#: utils/adt/numeric.c:1881 utils/adt/numeric.c:3754 +msgid "value overflows numeric format" +msgstr "Wert verursacht Überlauf im »numeric«-Format" -#: commands/schemacmds.c:83 commands/schemacmds.c:276 -msgid "The prefix \"pg_\" is reserved for system schemas." -msgstr "Der Präfix »pg_« ist für Systemschemas reserviert." +#: utils/adt/numeric.c:2229 +msgid "cannot convert NaN to integer" +msgstr "kann NaN nicht in integer umwandeln" -#: commands/schemacmds.c:186 +#: utils/adt/numeric.c:2297 +msgid "cannot convert NaN to bigint" +msgstr "kann NaN nicht in bigint umwandeln" + +#: utils/adt/numeric.c:2345 +msgid "cannot convert NaN to smallint" +msgstr "kann NaN nicht in smallint umwandeln" + +#: utils/adt/numeric.c:3824 +msgid "numeric field overflow" +msgstr "Feldüberlauf bei Typ »numeric«" + +#: utils/adt/numeric.c:3825 #, c-format -msgid "schema \"%s\" does not exist, skipping" -msgstr "Schema »%s« existiert nicht, wird übersprungen" +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." -#: commands/sequence.c:126 -msgid "unlogged sequences are not supported" -msgstr "ungeloggte Sequenzen werden nicht unterstützt" +#: utils/adt/numeric.c:5273 +msgid "argument for function \"exp\" too big" +msgstr "Argument für Funktion »exp« zu groß" -#: commands/sequence.c:634 +#: utils/adt/tsvector_parser.c:137 #, c-format -msgid "nextval: reached maximum value of sequence \"%s\" (%s)" -msgstr "nextval: Maximalwert von Sequenz »%s« erreicht (%s)" +msgid "syntax error in tsvector: \"%s\"" +msgstr "Syntaxfehler in tsvector: »%s«" -#: commands/sequence.c:657 +#: utils/adt/tsvector_parser.c:202 #, c-format -msgid "nextval: reached minimum value of sequence \"%s\" (%s)" -msgstr "nextval: Minimalwert von Sequenz »%s« erreicht (%s)" +msgid "there is no escaped character: \"%s\"" +msgstr "es gibt kein escaptes Zeichen: »%s«" -#: commands/sequence.c:755 +#: utils/adt/tsvector_parser.c:319 #, 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" +msgid "wrong position info in tsvector: \"%s\"" +msgstr "falsche Positionsinformationen in tsvector: »%s«" -#: commands/sequence.c:774 commands/sequence.c:780 -msgid "lastval is not yet defined in this session" -msgstr "lastval ist in dieser Sitzung noch nicht definiert" +#: utils/adt/regproc.c:123 utils/adt/regproc.c:143 +#, c-format +msgid "more than one function named \"%s\"" +msgstr "es gibt mehrere Funktionen namens »%s«" -#: commands/sequence.c:848 +#: 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 #, 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)" +msgid "operator does not exist: %s" +msgstr "Operator existiert nicht: %s" -#: 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:416 utils/mmgr/aset.c:587 utils/mmgr/aset.c:765 -#: utils/mmgr/aset.c:966 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 "Speicher aufgebraucht" +#: utils/adt/regproc.c:468 utils/adt/regproc.c:488 +#, c-format +msgid "more than one operator named %s" +msgstr "es gibt mehrere Operatoren namens %s" -#: commands/sequence.c:1190 -msgid "INCREMENT must not be zero" -msgstr "INCREMENT darf nicht null sein" +#: utils/adt/regproc.c:630 gram.y:6218 +msgid "missing argument" +msgstr "Argument fehlt" -#: commands/sequence.c:1236 -#, c-format -msgid "MINVALUE (%s) must be less than MAXVALUE (%s)" -msgstr "MINVALUE (%s) muss kleiner als MAXVALUE (%s) sein" +#: utils/adt/regproc.c:631 gram.y:6219 +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." -#: commands/sequence.c:1261 -#, c-format -msgid "START value (%s) cannot be less than MINVALUE (%s)" -msgstr "START-Wert (%s) kann nicht kleiner als MINVALUE (%s) sein" +#: utils/adt/regproc.c:636 +msgid "Provide two argument types for operator." +msgstr "Geben Sie zwei Argumente für den Operator an." -#: commands/sequence.c:1273 +#: utils/adt/regproc.c:810 commands/lockcmds.c:127 catalog/namespace.c:290 +#: parser/parse_relation.c:857 parser/parse_relation.c:865 #, c-format -msgid "START value (%s) cannot be greater than MAXVALUE (%s)" -msgstr "START-Wert (%s) kann nicht größer als MAXVALUE (%s) sein" +msgid "relation \"%s\" does not exist" +msgstr "Relation »%s« existiert nicht" -#: commands/sequence.c:1304 +#: utils/adt/regproc.c:973 commands/tablecmds.c:226 +#: commands/functioncmds.c:128 commands/typecmds.c:660 +#: commands/typecmds.c:2661 parser/parse_func.c:1502 parser/parse_type.c:196 #, c-format -msgid "RESTART value (%s) cannot be less than MINVALUE (%s)" -msgstr "RESTART-Wert (%s) kann nicht kleiner als MINVALUE (%s) sein" +msgid "type \"%s\" does not exist" +msgstr "Typ »%s« existiert nicht" -#: commands/sequence.c:1316 -#, c-format -msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)" -msgstr "RESTART-Wert (%s) kann nicht größer als MAXVALUE (%s) sein" +#: utils/adt/regproc.c:1383 +msgid "expected a left parenthesis" +msgstr "linke Klammer erwartet" -#: commands/sequence.c:1331 -#, c-format -msgid "CACHE (%s) must be greater than zero" -msgstr "CACHE (%s) muss größer als null sein" +#: utils/adt/regproc.c:1399 +msgid "expected a right parenthesis" +msgstr "rechte Klammer erwartet" -#: commands/sequence.c:1362 -msgid "invalid OWNED BY option" -msgstr "ungültige OWNED BY Option" +#: utils/adt/regproc.c:1418 +msgid "expected a type name" +msgstr "Typname erwartet" -#: commands/sequence.c:1363 -msgid "Specify OWNED BY table.column or OWNED BY NONE." -msgstr "Geben Sie OWNED BY tabelle.spalte oder OWNED BY NONE an." +#: utils/adt/regproc.c:1450 +msgid "improper type name" +msgstr "falscher Typname" -#: commands/sequence.c:1385 commands/tablecmds.c:5470 +#: snowball/dict_snowball.c:183 #, c-format -msgid "referenced relation \"%s\" is not a table" -msgstr "Relation »%s«, auf die verwiesen wird, ist keine Tabelle" +msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\"" +msgstr "kein Snowball-Stemmer für Sprache »%s« und Kodierung »%s« verfügbar" -#: commands/sequence.c:1392 -msgid "sequence must have same owner as table it is linked to" -msgstr "Sequenz muss selben Eigentümer wie die verknüpfte Tabelle haben" +#: snowball/dict_snowball.c:206 tsearch/dict_ispell.c:75 +#: tsearch/dict_simple.c:50 +msgid "multiple StopWords parameters" +msgstr "mehrere »StopWords«-Parameter" -#: commands/sequence.c:1396 -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" +#: snowball/dict_snowball.c:215 +msgid "multiple Language parameters" +msgstr "mehrere »Language«-Parameter" -#: commands/tablecmds.c:199 +#: snowball/dict_snowball.c:222 #, c-format -msgid "table \"%s\" does not exist" -msgstr "Tabelle »%s« existiert nicht" +msgid "unrecognized Snowball parameter: \"%s\"" +msgstr "unbekannter Snowball-Parameter: »%s«" -#: commands/tablecmds.c:200 -#, c-format -msgid "table \"%s\" does not exist, skipping" -msgstr "Tabelle »%s« existiert nicht, wird übersprungen" +#: snowball/dict_snowball.c:230 +msgid "missing Language parameter" +msgstr "Parameter »Language« fehlt" -#: commands/tablecmds.c:202 -msgid "Use DROP TABLE to remove a table." -msgstr "Verwenden Sie DROP TABLE, um eine Tabelle zu löschen." +#: bootstrap/bootstrap.c:294 +#, c-format +msgid "%s: invalid command-line arguments\n" +msgstr "%s: ungültige Kommandozeilenargumente\n" -#: commands/tablecmds.c:205 +#: lib/stringinfo.c:267 #, c-format -msgid "sequence \"%s\" does not exist" -msgstr "Sequenz »%s« existiert nicht" +msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes." +msgstr "Kann Zeichenkettenpuffer mit %d Bytes nicht um %d Bytes vergrößern." -#: commands/tablecmds.c:206 +#: tsearch/ts_locale.c:177 #, c-format -msgid "sequence \"%s\" does not exist, skipping" -msgstr "Sequenz »%s« existiert nicht, wird übersprungen" +msgid "line %d of configuration file \"%s\": \"%s\"" +msgstr "Zeile %d in Konfigurationsdatei »%s«: »%s«" -#: commands/tablecmds.c:208 -msgid "Use DROP SEQUENCE to remove a sequence." -msgstr "Verwenden Sie DROP SEQUENCE, um eine Sequenz zu löschen." +#: tsearch/ts_locale.c:182 libpq/hba.c:781 libpq/hba.c:797 libpq/hba.c:833 +#: libpq/hba.c:855 libpq/hba.c:864 libpq/hba.c:887 libpq/hba.c:899 +#: libpq/hba.c:912 libpq/hba.c:927 libpq/hba.c:982 libpq/hba.c:1002 +#: libpq/hba.c:1016 libpq/hba.c:1033 libpq/hba.c:1046 libpq/hba.c:1062 +#: libpq/hba.c:1077 libpq/hba.c:1119 libpq/hba.c:1151 libpq/hba.c:1162 +#: libpq/hba.c:1182 libpq/hba.c:1193 libpq/hba.c:1204 libpq/hba.c:1221 +#: libpq/hba.c:1242 libpq/hba.c:1272 libpq/hba.c:1284 libpq/hba.c:1297 +#: libpq/hba.c:1331 libpq/hba.c:1405 libpq/hba.c:1423 libpq/hba.c:1444 +#: libpq/hba.c:1475 libpq/hba.c:1485 +#, c-format +msgid "line %d of configuration file \"%s\"" +msgstr "Zeile %d in Konfigurationsdatei »%s«" -#: commands/tablecmds.c:211 +#: tsearch/ts_locale.c:302 #, c-format -msgid "view \"%s\" does not exist" -msgstr "Sicht »%s« existiert nicht" +msgid "conversion from wchar_t to server encoding failed: %m" +msgstr "Umwandlung von wchar_t in Serverkodierung fehlgeschlagen: %m" -#: commands/tablecmds.c:212 +#: tsearch/dict_thesaurus.c:180 #, c-format -msgid "view \"%s\" does not exist, skipping" -msgstr "Sicht »%s« existiert nicht, wird übersprungen" +msgid "could not open thesaurus file \"%s\": %m" +msgstr "konnte Thesaurusdatei »%s« nicht öffnen: %m" -#: commands/tablecmds.c:214 -msgid "Use DROP VIEW to remove a view." -msgstr "Verwenden Sie DROP VIEW, um eine Sicht zu löschen." +#: tsearch/dict_thesaurus.c:213 +msgid "unexpected delimiter" +msgstr "unerwartetes Trennzeichen" + +#: tsearch/dict_thesaurus.c:263 tsearch/dict_thesaurus.c:279 +msgid "unexpected end of line or lexeme" +msgstr "unerwartetes Ende der Zeile oder des Lexems" + +#: tsearch/dict_thesaurus.c:288 +msgid "unexpected end of line" +msgstr "unerwartetes Ende der Zeile" -#: commands/tablecmds.c:217 parser/parse_utilcmd.c:1447 +#: tsearch/dict_thesaurus.c:412 #, c-format -msgid "index \"%s\" does not exist" -msgstr "Index »%s« existiert nicht" +msgid "" +"thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)" +msgstr "" +"Thesaurus-Beispielwort »%s« wird nicht vom Unterwörterbuch erkannt (Regel %d)" -#: commands/tablecmds.c:218 +#: tsearch/dict_thesaurus.c:418 #, c-format -msgid "index \"%s\" does not exist, skipping" -msgstr "Index »%s« existiert nicht, wird übersprungen" +msgid "thesaurus sample word \"%s\" is a stop word (rule %d)" +msgstr "Thesaurus-Beispielwort »%s« ist ein Stoppwort (Regel %d)" -#: commands/tablecmds.c:220 -msgid "Use DROP INDEX to remove an index." -msgstr "Verwenden Sie DROP INDEX, um einen Index zu löschen." +#: tsearch/dict_thesaurus.c:421 +msgid "Use \"?\" to represent a stop word within a sample phrase." +msgstr "" +"Verwenden Sie »?«, um ein Stoppwort in einem Beispielsatz darzustellen." -#: commands/tablecmds.c:224 commands/typecmds.c:666 +#: tsearch/dict_thesaurus.c:567 #, c-format -msgid "type \"%s\" does not exist, skipping" -msgstr "Typ »%s« existiert nicht, wird übersprungen" +msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)" +msgstr "Thesaurus-Ersatzwort »%s« ist ein Stoppwort (Regel %d)" -#: commands/tablecmds.c:225 +#: tsearch/dict_thesaurus.c:574 #, c-format -msgid "\"%s\" is not a type" -msgstr "»%s« ist kein Typ" - -#: commands/tablecmds.c:226 -msgid "Use DROP TYPE to remove a type." -msgstr "Verwenden Sie DROP TYPE, um einen Typen zu löschen." +msgid "" +"thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)" +msgstr "" +"Thesaurus-Ersatzwort »%s« wird nicht vom Unterwörterbuch erkannt (Regel %d)" -#: commands/tablecmds.c:229 commands/tablecmds.c:8832 +#: tsearch/dict_thesaurus.c:586 #, c-format -msgid "foreign table \"%s\" does not exist" -msgstr "Fremdtabelle »%s« existiert nicht" +msgid "thesaurus substitute phrase is empty (rule %d)" +msgstr "Thesaurus-Ersatzausdruck ist leer (Regel %d)" -#: commands/tablecmds.c:230 -#, c-format -msgid "foreign table \"%s\" does not exist, skipping" -msgstr "Fremdtabelle »%s« existiert nicht, wird übersprungen" +#: tsearch/dict_thesaurus.c:615 tsearch/dict_ispell.c:53 +msgid "multiple DictFile parameters" +msgstr "mehrere DictFile-Parameter" -#: commands/tablecmds.c:232 -msgid "Use DROP FOREIGN TABLE to remove a foreign table." -msgstr "Verwenden Sie DROP FOREIGN TABLE, um eine Fremdtabelle zu löschen." +#: tsearch/dict_thesaurus.c:624 +msgid "multiple Dictionary parameters" +msgstr "mehrere »Dictionary«-Parameter" -#: commands/tablecmds.c:424 executor/execMain.c:2363 -msgid "ON COMMIT can only be used on temporary tables" -msgstr "ON COMMIT kann nur mit temporären Tabellen verwendet werden" +#: tsearch/dict_thesaurus.c:631 +#, c-format +msgid "unrecognized Thesaurus parameter: \"%s\"" +msgstr "unbekannter Thesaurus-Parameter: »%s«" -#: commands/tablecmds.c:428 -msgid "constraints on foreign tables are not supported" -msgstr "Constraints für Fremdtabellen werden nicht unterstützt" +#: tsearch/dict_thesaurus.c:639 tsearch/dict_ispell.c:103 +msgid "missing DictFile parameter" +msgstr "Parameter »DictFile« fehlt" -#: commands/tablecmds.c:439 executor/execMain.c:2374 -msgid "cannot create temporary table within security-restricted operation" -msgstr "" -"kann temporäre Tabelle nicht in einer sicherheitsbeschränkten Operation " -"erzeugen" +#: tsearch/dict_thesaurus.c:643 +msgid "missing Dictionary parameter" +msgstr "Parameter »Dictionary« fehlt" -#: commands/tablecmds.c:543 commands/tablecmds.c:4303 -msgid "default values on foreign tables are not supported" -msgstr "Vorgabewerte für Fremdtabellen werden nicht unterstützt" +#: 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 "Wort ist zu lang, um indiziert zu werden" -#: 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 +#: tsearch/ts_parse.c:392 tsearch/ts_parse.c:399 tsearch/ts_parse.c:562 +#: tsearch/ts_parse.c:569 #, c-format -msgid "permission denied: \"%s\" is a system catalog" -msgstr "keine Berechtigung: »%s« ist ein Systemkatalog" +msgid "Words longer than %d characters are ignored." +msgstr "Wörter, die länger als %d Zeichen sind, werden ignoriert." -#: commands/tablecmds.c:923 +#: tsearch/wparser.c:314 +msgid "text search parser does not support headline creation" +msgstr "Textsucheparser unterstützt das Erzeugen von Headlines nicht" + +#: tsearch/wparser_def.c:2555 #, c-format -msgid "truncate cascades to table \"%s\"" -msgstr "Truncate-Vorgang leert ebenfalls Tabelle »%s«" +msgid "unrecognized headline parameter: \"%s\"" +msgstr "unbekannter Headline-Parameter: »%s«" -#: commands/tablecmds.c:1142 -msgid "cannot truncate temporary tables of other sessions" -msgstr "kann temporäre Tabellen anderer Sitzungen nicht leeren" +#: tsearch/wparser_def.c:2564 +msgid "MinWords should be less than MaxWords" +msgstr "»MinWords« sollte kleiner als »MaxWords« sein" -#: 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 "geerbte Relation »%s« ist keine Tabelle" +#: tsearch/wparser_def.c:2568 +msgid "MinWords should be positive" +msgstr "»MinWords« sollte positiv sein" -#: commands/tablecmds.c:1351 commands/tablecmds.c:8057 -#, c-format -msgid "cannot inherit from temporary relation \"%s\"" -msgstr "von temporärer Relation »%s« kann nicht geerbt werden" +#: tsearch/wparser_def.c:2572 +msgid "ShortWord should be >= 0" +msgstr "»ShortWord« sollte >= 0 sein" -#: commands/tablecmds.c:1368 commands/tablecmds.c:8085 -#, c-format -msgid "relation \"%s\" would be inherited from more than once" -msgstr "von der Relation »%s« würde mehrmals geerbt werden" +#: tsearch/wparser_def.c:2576 +msgid "MaxFragments should be >= 0" +msgstr "»MaxFragments« sollte >= 0 sein" -#: commands/tablecmds.c:1424 +#: tsearch/spell.c:276 #, c-format -msgid "merging multiple inherited definitions of column \"%s\"" -msgstr "geerbte Definitionen von Spalte »%s« werden zusammengeführt" +msgid "could not open dictionary file \"%s\": %m" +msgstr "konnte Wörterbuchdatei »%s« nicht öffnen: %m" -#: commands/tablecmds.c:1432 -#, c-format -msgid "inherited column \"%s\" has a type conflict" -msgstr "geerbte Spalte »%s« hat Typkonflikt" +#: tsearch/spell.c:518 tsearch/spell.c:535 tsearch/spell.c:552 +#: tsearch/spell.c:569 tsearch/spell.c:591 gram.y:12514 gram.y:12531 +msgid "syntax error" +msgstr "Syntaxfehler" -#: 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 gegen %s" +#: tsearch/spell.c:596 tsearch/spell.c:842 tsearch/spell.c:862 +msgid "multibyte flag character is not allowed" +msgstr "Mehrbytemarkierungszeichen ist nicht erlaubt" -#: commands/tablecmds.c:1441 +#: tsearch/spell.c:629 tsearch/spell.c:687 tsearch/spell.c:780 #, c-format -msgid "inherited column \"%s\" has a collation conflict" -msgstr "geerbte Spalte »%s« hat Sortierfolgenkonflikt" +msgid "could not open affix file \"%s\": %m" +msgstr "konnte Affixdatei »%s« nicht öffnen: %m" -#: commands/tablecmds.c:1443 commands/tablecmds.c:1630 -#: commands/tablecmds.c:4172 -#, c-format -msgid "\"%s\" versus \"%s\"" -msgstr "»%s« gegen »%s«" +#: tsearch/spell.c:675 +msgid "Ispell dictionary supports only default flag value" +msgstr "Ispell-Wörterbuch unterstützt nur den Default-Flag-Wert" -#: commands/tablecmds.c:1453 -#, c-format -msgid "inherited column \"%s\" has a storage parameter conflict" -msgstr "geerbte Spalte »%s« hat einen Konflikt bei einem Storage-Parameter" +#: tsearch/spell.c:873 +msgid "wrong affix file format for flag" +msgstr "falsches Affixdateiformat für Flag" -#: commands/tablecmds.c:1610 -#, c-format -msgid "merging column \"%s\" with inherited definition" -msgstr "Spalte »%s« wird mit geerbter Definition zusammengeführt" +#: tsearch/dict_ispell.c:64 +msgid "multiple AffFile parameters" +msgstr "mehrere AffFile-Parameter" -#: commands/tablecmds.c:1618 +#: tsearch/dict_ispell.c:83 #, c-format -msgid "column \"%s\" has a type conflict" -msgstr "für Spalte »%s« besteht ein Typkonflikt" +msgid "unrecognized Ispell parameter: \"%s\"" +msgstr "unbekannter Ispell-Parameter: »%s«" -#: commands/tablecmds.c:1628 -#, c-format -msgid "column \"%s\" has a collation conflict" -msgstr "für Spalte »%s« besteht ein Sortierfolgenkonflikt" +#: tsearch/dict_ispell.c:97 +msgid "missing AffFile parameter" +msgstr "Parameter »AffFile« fehlt" -#: commands/tablecmds.c:1640 +#: tsearch/ts_utils.c:53 #, c-format -msgid "column \"%s\" has a storage parameter conflict" -msgstr "für Spalte »%s« besteht ein Konflikt bei einem Storage-Parameter" +msgid "invalid text search configuration file name \"%s\"" +msgstr "ungültiger Textsuchekonfigurationsdateiname »%s«" -#: commands/tablecmds.c:1692 +#: tsearch/ts_utils.c:91 #, c-format -msgid "column \"%s\" inherits conflicting default values" -msgstr "Spalte »%s« erbt widersprüchliche Vorgabewerte" - -#: commands/tablecmds.c:1694 -msgid "To resolve the conflict, specify a default explicitly." -msgstr "Um den Konflikt zu lösen, geben Sie einen Vorgabewert ausdrücklich an." +msgid "could not open stop-word file \"%s\": %m" +msgstr "konnte Stoppwortdatei »%s« nicht öffnen: %m" -#: commands/tablecmds.c:1741 +#: tsearch/dict_synonym.c:119 #, 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" +msgid "unrecognized synonym parameter: \"%s\"" +msgstr "unbekannter Synonymparameter: »%s«" -#: commands/tablecmds.c:2031 -msgid "cannot rename column of typed table" -msgstr "Spalte einer getypten Tabelle kann nicht umbenannt werden" +#: tsearch/dict_synonym.c:126 +msgid "missing Synonyms parameter" +msgstr "Parameter »Synonyms« fehlt" -#: commands/tablecmds.c:2048 +#: tsearch/dict_synonym.c:133 #, c-format -msgid "\"%s\" is not a table, view, composite type, index or foreign table" -msgstr "»%s« ist weder Tabelle, Sicht, zusammengesetzter Typ, Index noch Fremdtabelle" +msgid "could not open synonym file \"%s\": %m" +msgstr "konnte Synonymdatei »%s« nicht öffnen: %m" -#: commands/tablecmds.c:2114 -#, 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" +#: tsearch/dict_simple.c:59 +msgid "multiple Accept parameters" +msgstr "mehrere »Accept«-Parameter" -#: commands/tablecmds.c:2146 +#: tsearch/dict_simple.c:67 #, c-format -msgid "cannot rename system column \"%s\"" -msgstr "Systemspalte »%s« kann nicht umbenannt werden" +msgid "unrecognized simple dictionary parameter: \"%s\"" +msgstr "unbekannter Parameter für das einfache Wörterbuch: »%s«" -#: commands/tablecmds.c:2161 +#: tcop/pquery.c:661 #, c-format -msgid "cannot rename inherited column \"%s\"" -msgstr "kann vererbte Spalte »%s« nicht umbenennen" +msgid "bind message has %d result formats but query has %d columns" +msgstr "Bind-Message hat %d Ergebnisspalten, aber Anfrage hat %d Spalten" -#: commands/tablecmds.c:2172 commands/tablecmds.c:4216 +#: tcop/pquery.c:739 tcop/pquery.c:1403 commands/portalcmds.c:341 #, c-format -msgid "column \"%s\" of relation \"%s\" already exists" -msgstr "Spalte »%s« von Relation »%s« existiert bereits" +msgid "portal \"%s\" cannot be run" +msgstr "Portal »%s« kann nicht ausgeführt werden" -#: commands/tablecmds.c:2261 commands/tablecmds.c:7381 -#: commands/tablecmds.c:8964 -msgid "Use ALTER TYPE instead." -msgstr "Verwenden Sie stattdessen ALTER TYPE." +#: tcop/pquery.c:971 +msgid "cursor can only scan forward" +msgstr "Cursor kann nur vorwärts scannen" -#. 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" +#: tcop/pquery.c:972 +msgid "Declare it with SCROLL option to enable backward scan." msgstr "" -"%s mit Relation »%s« nicht möglich, weil sie von aktiven Anfragen in dieser " -"Sitzung verwendet wird" +"Deklarieren Sie ihn mit der Option SCROLL, um rückwarts scannen zu können." -#. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2393 +#: tcop/fastpath.c:109 tcop/fastpath.c:485 tcop/fastpath.c:615 #, 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" +msgid "invalid argument size %d in function call message" +msgstr "ungültige Argumentgröße %d in Funktionsaufruf-Message" + +#: tcop/fastpath.c:180 tcop/fastpath.c:554 tcop/postgres.c:1666 +#: access/common/printtup.c:278 +#, c-format +msgid "unsupported format code: %d" +msgstr "nicht unterstützter Formatcode: %d" -#: commands/tablecmds.c:2492 +#: tcop/fastpath.c:221 catalog/aclchk.c:3546 catalog/aclchk.c:4296 #, c-format -msgid "\"%s\" is not a composite type" -msgstr "»%s« ist kein zusammengesetzter Typ" +msgid "function with OID %u does not exist" +msgstr "Funktion mit OID %u existiert nicht" -#: commands/tablecmds.c:3288 -#, c-format -msgid "cannot rewrite system relation \"%s\"" -msgstr "Systemrelation »%s« kann nicht neu geschrieben werden" +#: tcop/fastpath.c:290 tcop/postgres.c:351 tcop/postgres.c:374 +#: commands/copy.c:542 commands/copy.c:561 commands/copy.c:565 +msgid "unexpected EOF on client connection" +msgstr "unerwartetes EOF auf Client-Verbindung" -#: commands/tablecmds.c:3298 -msgid "cannot rewrite temporary tables of other sessions" -msgstr "kann temporäre Tabellen anderer Sitzungen nicht neu schreiben" +#: tcop/fastpath.c:303 tcop/postgres.c:919 tcop/postgres.c:1229 +#: tcop/postgres.c:1510 tcop/postgres.c:1952 tcop/postgres.c:2320 +#: tcop/postgres.c:2401 +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" -#: commands/tablecmds.c:3525 +#: tcop/fastpath.c:331 #, c-format -msgid "rewriting table \"%s\"" -msgstr "schreibe Tabelle »%s« neu" +msgid "fastpath function call: \"%s\" (OID %u)" +msgstr "Fastpath-Funktionsaufruf: »%s« (OID %u)" -#: commands/tablecmds.c:3529 +#: tcop/fastpath.c:411 tcop/postgres.c:1089 tcop/postgres.c:1376 +#: tcop/postgres.c:1793 tcop/postgres.c:2010 #, c-format -msgid "verifying table \"%s\"" -msgstr "überprüfe Tabelle »%s«" +msgid "duration: %s ms" +msgstr "Dauer: %s ms" -#: commands/tablecmds.c:3626 +#: tcop/fastpath.c:415 #, c-format -msgid "column \"%s\" contains null values" -msgstr "Spalte »%s« enthält NULL-Werte" +msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" +msgstr "Dauer: %s ms Fastpath-Funktionsaufruf: »%s« (OID %u)" -#: commands/tablecmds.c:3640 +#: tcop/fastpath.c:453 tcop/fastpath.c:580 #, c-format -msgid "check constraint \"%s\" is violated by some row" -msgstr "Check-Constraint »%s« wird von irgendeiner Zeile verletzt" +msgid "function call message contains %d arguments but function requires %d" +msgstr "" +"Funktionsaufruf-Message enthält %d Argumente, aber Funktion benötigt %d" -#: commands/tablecmds.c:3781 commands/tablecmds.c:4730 +#: tcop/fastpath.c:461 #, c-format -msgid "\"%s\" is not a table or index" -msgstr "»%s« ist keine Tabelle und kein Index" +msgid "function call message contains %d argument formats but %d arguments" +msgstr "Funktionsaufruf-Message enthält %d Argumentformate aber %d Argumente" -#: commands/tablecmds.c:3784 commands/trigger.c:193 commands/trigger.c:1098 -#: rewrite/rewriteDefine.c:259 +#: tcop/fastpath.c:548 tcop/fastpath.c:631 #, c-format -msgid "\"%s\" is not a table or view" -msgstr "»%s« ist keine Tabelle oder Sicht" +msgid "incorrect binary data format in function argument %d" +msgstr "falsches Binärdatenformat in Funktionsargument %d" -#: commands/tablecmds.c:3787 +#: tcop/postgres.c:401 tcop/postgres.c:413 tcop/postgres.c:424 +#: tcop/postgres.c:436 tcop/postgres.c:4194 #, c-format -msgid "\"%s\" is not a table or foreign table" -msgstr "»%s« ist keine Tabelle oder Fremdtabelle" +msgid "invalid frontend message type %d" +msgstr "ungültiger Frontend-Message-Typ %d" -#: commands/tablecmds.c:3790 +#: tcop/postgres.c:860 #, c-format -msgid "\"%s\" is not a table, composite type, or foreign table" -msgstr "»%s« ist weder Tabelle, Sicht, zusammengesetzter Typ noch Fremdtabelle" +msgid "statement: %s" +msgstr "Anweisung: %s" -#: commands/tablecmds.c:3800 +#: tcop/postgres.c:1094 #, c-format -msgid "\"%s\" is of the wrong type" -msgstr "»%s« hat den falschen Typ" +msgid "duration: %s ms statement: %s" +msgstr "Dauer: %s ms Anweisung: %s" -#: commands/tablecmds.c:3949 commands/tablecmds.c:3956 +#: tcop/postgres.c:1144 #, 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" +msgid "parse %s: %s" +msgstr "Parsen %s: %s" -#: commands/tablecmds.c:3963 -#, fuzzy, c-format -msgid "" -"cannot alter foreign table \"%s\" because column \"%s\".\"%s\" uses its " -"rowtype" -msgstr "" -"kann Tabelle »%s« nicht ändern, weil Spalte »%s.%s« ihren Zeilentyp verwendet" +#: tcop/postgres.c:1202 +msgid "cannot insert multiple commands into a prepared statement" +msgstr "kann nicht mehrere Befehle in vorbereitete Anweisung einfügen" -#: commands/tablecmds.c:3970 +#: tcop/postgres.c:1269 commands/prepare.c:122 parser/parse_param.c:303 #, c-format -msgid "cannot alter table \"%s\" because column \"%s\".\"%s\" uses its rowtype" -msgstr "" -"kann Tabelle »%s« nicht ändern, weil Spalte »%s.%s« ihren Zeilentyp verwendet" +msgid "could not determine data type of parameter $%d" +msgstr "konnte Datentyp von Parameter $%d nicht ermitteln" -#: commands/tablecmds.c:4032 +#: tcop/postgres.c:1381 #, 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:4034 -msgid "Use ALTER ... CASCADE to alter the typed tables too." -msgstr "Verwenden Sie ALTER ... CASCADE, um die getypten Tabellen ebenfalls zu ändern." +msgid "duration: %s ms parse %s: %s" +msgstr "Dauer: %s ms Parsen %s: %s" -#: commands/tablecmds.c:4077 +#: tcop/postgres.c:1427 #, c-format -msgid "type %s is not a composite type" -msgstr "Typ %s ist kein zusammengesetzter Typ" +msgid "bind %s to %s" +msgstr "Binden %s an %s" -#: commands/tablecmds.c:4103 -msgid "cannot add column to typed table" -msgstr "zu einer getypten Tabelle kann keine Spalte hinzugefügt werden" +#: tcop/postgres.c:1446 tcop/postgres.c:2300 +msgid "unnamed prepared statement does not exist" +msgstr "unbenannte vorbereitete Anweisung existiert nicht" -#: commands/tablecmds.c:4164 commands/tablecmds.c:8239 +#: tcop/postgres.c:1488 #, c-format -msgid "child table \"%s\" has different type for column \"%s\"" -msgstr "abgeleitete Tabelle »%s« hat unterschiedlichen Typ für Spalte »%s«" +msgid "bind message has %d parameter formats but %d parameters" +msgstr "Binden-Nachricht hat %d Parameterformate aber %d Parameter" -#: commands/tablecmds.c:4170 commands/tablecmds.c:8246 +#: tcop/postgres.c:1494 #, c-format -msgid "child table \"%s\" has different collation for column \"%s\"" +msgid "" +"bind message supplies %d parameters, but prepared statement \"%s\" requires " +"%d" msgstr "" -"abgeleitete Tabelle »%s« hat unterschiedliche Sortierfolge für Spalte »%s«" +"Binden-Nachricht enthält %d Parameter, aber vorbereitete Anweisung »%s« " +"erfordert %d" -#: commands/tablecmds.c:4180 +#: tcop/postgres.c:1659 #, c-format -msgid "child table \"%s\" has a conflicting \"%s\" column" -msgstr "abgeleitete Tabelle »%s« hat eine widersprüchliche Spalte »%s«" +msgid "incorrect binary data format in bind parameter %d" +msgstr "falsches Binärdatenformat in Binden-Parameter %d" -#: commands/tablecmds.c:4192 +#: tcop/postgres.c:1798 #, 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:4422 -msgid "column must be added to child tables too" -msgstr "Spalte muss ebenso in den abgeleiteten Tabellen hinzugefügt werden" +msgid "duration: %s ms bind %s%s%s: %s" +msgstr "Dauer: %s ms Binden %s%s%s: %s" -#: 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 +#: tcop/postgres.c:1846 tcop/postgres.c:2387 #, c-format -msgid "cannot alter system column \"%s\"" -msgstr "Systemspalte »%s« kann nicht geändert werden" +msgid "portal \"%s\" does not exist" +msgstr "Portal »%s« existiert nicht" -#: commands/tablecmds.c:4586 -#, c-format -msgid "column \"%s\" is in a primary key" -msgstr "Spalte »%s« ist in einem Primärschlüssel" +#: tcop/postgres.c:1933 tcop/postgres.c:2018 +msgid "execute fetch from" +msgstr "Ausführen Fetch von" -#: commands/tablecmds.c:4757 -#, c-format -msgid "statistics target %d is too low" -msgstr "Statistikziel %d ist zu niedrig" +#: tcop/postgres.c:1934 tcop/postgres.c:2019 +msgid "execute" +msgstr "Ausführen" -#: commands/tablecmds.c:4765 +#: tcop/postgres.c:1931 #, c-format -msgid "lowering statistics target to %d" -msgstr "setze Statistikziel auf %d herab" +msgid "%s %s%s%s: %s" +msgstr "%s %s%s%s: %s" -#: commands/tablecmds.c:4887 +#: tcop/postgres.c:2015 #, c-format -msgid "invalid storage type \"%s\"" -msgstr "ungültiger Storage-Typ »%s«" +msgid "duration: %s ms %s %s%s%s: %s" +msgstr "Dauer: %s ms %s %s%s%s: %s" -#: commands/tablecmds.c:4918 +#: tcop/postgres.c:2141 #, c-format -msgid "column data type %s can only have storage PLAIN" -msgstr "Spaltendatentyp %s kann nur Storage-Typ PLAIN" - -#: commands/tablecmds.c:4948 -msgid "cannot drop column from typed table" -msgstr "aus einer getypten Tabelle können keine Spalten gelöscht werden" +msgid "prepare: %s" +msgstr "Vorbereiten: %s" -#: commands/tablecmds.c:4989 +#: tcop/postgres.c:2204 #, c-format -msgid "column \"%s\" of relation \"%s\" does not exist, skipping" -msgstr "Spalte »%s« von Relation »%s« existiert nicht, wird übersprungen" +msgid "parameters: %s" +msgstr "Parameter: %s" -#: commands/tablecmds.c:5002 -#, c-format -msgid "cannot drop system column \"%s\"" -msgstr "Systemspalte »%s« kann nicht gelöscht werden" +#: tcop/postgres.c:2223 +msgid "abort reason: recovery conflict" +msgstr "Abbruchgrund: Konflikt bei Wiederherstellung" -#: commands/tablecmds.c:5009 -#, c-format -msgid "cannot drop inherited column \"%s\"" -msgstr "geerbte Spalte »%s« kann nicht gelöscht werden" +#: tcop/postgres.c:2239 +msgid "User was holding shared buffer pin for too long." +msgstr "Benutzer hat Shared-Buffer-Pin zu lange gehalten." -#: 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 benennt Index »%s« um in »%s«" +#: tcop/postgres.c:2242 +msgid "User was holding a relation lock for too long." +msgstr "Benutzer hat Relationssperre zu lange gehalten." -#: commands/tablecmds.c:5412 -msgid "constraint must be added to child tables too" -msgstr "Constraint muss ebenso in den abgeleiteten Tabellen hinzugefügt werden" +#: tcop/postgres.c:2245 +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." -#: commands/tablecmds.c:5493 -msgid "constraints on permanent tables may reference only permanent tables" +#: tcop/postgres.c:2248 +msgid "User query might have needed to see row versions that must be removed." msgstr "" -"Constraints für permanente Tabellen dürfen nur auf permanente Tabellen " -"verweisen" +"Benutzeranfrage hat möglicherweise Zeilenversionen sehen müssen, die " +"entfernt werden müssen." + +#: tcop/postgres.c:2251 storage/ipc/standby.c:498 +msgid "User transaction caused buffer deadlock with recovery." +msgstr "" +"Benutzertransaktion hat Verklemmung (Deadlock) mit Wiederherstellung " +"verursacht." + +#: tcop/postgres.c:2254 +msgid "User was connected to a database that must be dropped." +msgstr "Benutzer war mit einer Datenbank verbunden, die gelöscht werden muss." + +#: tcop/postgres.c:2595 +msgid "terminating connection because of crash of another server process" +msgstr "breche Verbindung ab wegen Absturz eines anderen Serverprozesses" -#: commands/tablecmds.c:5500 +#: tcop/postgres.c:2596 msgid "" -"constraints on unlogged tables may reference only permanent or unlogged " -"tables" +"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 "" -"Constraints für ungeloggte Tabellen dürfen nur auf permanente oder " -"ungeloggte Tabellen verweisen" +"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." -#: commands/tablecmds.c:5506 -msgid "constraints on temporary tables may reference only temporary tables" +#: tcop/postgres.c:2600 tcop/postgres.c:2950 +msgid "" +"In a moment you should be able to reconnect to the database and repeat your " +"command." msgstr "" -"Constraints für temporäre Tabellen dürfen nur auf temporäre Tabellen " -"verweisen" +"In einem Moment sollten Sie wieder mit der Datenbank verbinden und Ihren " +"Befehl wiederholen können." -#: commands/tablecmds.c:5567 -msgid "number of referencing and referenced columns for foreign key disagree" +#: tcop/postgres.c:2712 +msgid "floating-point exception" +msgstr "Fließkommafehler" + +#: tcop/postgres.c:2713 +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 "" -"Anzahl der Quell- und Zielspalten im Fremdschlüssel stimmt nicht überein" +"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." -#: commands/tablecmds.c:5656 -#, c-format -msgid "foreign key constraint \"%s\" cannot be implemented" -msgstr "Fremdschlüssel-Constraint »%s« kann nicht implementiert werden" +#: tcop/postgres.c:2881 +msgid "terminating autovacuum process due to administrator command" +msgstr "breche Autovacuum-Prozess ab aufgrund von Anweisung des Administrators" + +#: tcop/postgres.c:2887 tcop/postgres.c:2897 tcop/postgres.c:2948 +msgid "terminating connection due to conflict with recovery" +msgstr "breche Verbindung ab wegen Konflikt mit der Wiederherstellung" + +#: tcop/postgres.c:2903 +msgid "terminating connection due to administrator command" +msgstr "breche Verbindung ab aufgrund von Anweisung des Administrators" + +#: tcop/postgres.c:2918 +msgid "canceling authentication due to timeout" +msgstr "storniere Authentifizierung wegen Zeitüberschreitung" -#: commands/tablecmds.c:5659 +#: tcop/postgres.c:2927 +msgid "canceling statement due to statement timeout" +msgstr "storniere Anfrage wegen Zeitüberschreitung" + +#: tcop/postgres.c:2936 +msgid "canceling autovacuum task" +msgstr "storniere Autovacuum-Aufgabe" + +#: tcop/postgres.c:2955 storage/ipc/standby.c:497 +msgid "canceling statement due to conflict with recovery" +msgstr "storniere Anfrage wegen Konflikt mit der Wiederherstellung" + +#: tcop/postgres.c:2971 +msgid "canceling statement due to user request" +msgstr "storniere Anfrage wegen Benutzeraufforderung" + +#: tcop/postgres.c:3099 tcop/postgres.c:3121 +msgid "stack depth limit exceeded" +msgstr "Grenze für Stacktiefe überschritten" + +#: tcop/postgres.c:3100 tcop/postgres.c:3122 #, 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." +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." -#: commands/tablecmds.c:5772 +#: tcop/postgres.c:3138 #, c-format -msgid "foreign key constraint \"%s\" of relation \"%s\" does not exist" -msgstr "Fremdschlüssel-Constraint »%s« von Relation »%s« existiert nicht" +msgid "\"max_stack_depth\" must not exceed %ldkB." +msgstr "»max_stack_depth« darf %ldkB nicht überschreiten." + +#: tcop/postgres.c:3140 +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:3481 +msgid "invalid command-line arguments for server process" +msgstr "ungültige Kommandozeilenargumente für Serverprozess" -#: commands/tablecmds.c:5834 +#: tcop/postgres.c:3482 tcop/postgres.c:3488 #, c-format -msgid "column \"%s\" referenced in foreign key constraint does not exist" -msgstr "Spalte »%s«, die im Fremdschlüssel verwendet wird, existiert nicht" +msgid "Try \"%s --help\" for more information." +msgstr "Versuchen Sie »%s --help« für weitere Informationen." -#: commands/tablecmds.c:5839 +#: tcop/postgres.c:3486 #, c-format -msgid "cannot have more than %d keys in a foreign key" -msgstr "Fremdschlüssel kann nicht mehr als %d Schlüssel haben" +msgid "%s: invalid command-line arguments" +msgstr "%s: ungültige Kommandozeilenargumente" -#: commands/tablecmds.c:5904 +#: tcop/postgres.c:3565 #, 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" +msgid "%s: no database nor user name specified" +msgstr "%s: weder Datenbankname noch Benutzername angegeben" -#: commands/tablecmds.c:5921 +#: tcop/postgres.c:4104 #, 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" +msgid "invalid CLOSE message subtype %d" +msgstr "ungültiger Subtyp %d von CLOSE-Message" -#: commands/tablecmds.c:6071 +#: tcop/postgres.c:4137 #, 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" +msgid "invalid DESCRIBE message subtype %d" +msgstr "ungültiger Subtyp %d von DESCRIBE-Message" -#: commands/tablecmds.c:6076 +#: tcop/postgres.c:4371 #, c-format msgid "" -"there is no unique constraint matching given keys for referenced table \"%s\"" +"disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s" +"%s" msgstr "" -"in Tabelle »%s«, auf die verwiesen wird, gibt es keinen Unique Constraint, " -"der auf die angegebenen Schlüssel passt" +"Verbindungsende: Sitzungszeit: %d:%02d:%02d.%03d Benutzer=%s Datenbank=%s " +"Host=%s%s%s" -#: commands/tablecmds.c:6127 +#: tcop/utility.c:95 commands/tablecmds.c:820 commands/tablecmds.c:1153 +#: commands/tablecmds.c:2001 commands/tablecmds.c:3741 +#: commands/tablecmds.c:5487 commands/trigger.c:202 commands/trigger.c:1120 +#: rewrite/rewriteDefine.c:263 #, c-format -msgid "validating foreign key constraint \"%s\"" -msgstr "validiere Fremdschlüssel-Constraint »%s«" +msgid "permission denied: \"%s\" is a system catalog" +msgstr "keine Berechtigung: »%s« ist ein Systemkatalog" -#: commands/tablecmds.c:6409 +#. translator: %s is name of a SQL command, eg CREATE +#: tcop/utility.c:253 #, c-format -msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" -msgstr "geerbter Constraint »%s« von Relation »%s« kann nicht gelöscht werden" +msgid "cannot execute %s in a read-only transaction" +msgstr "%s kann nicht in einer Read-Only-Transaktion ausgeführt werden" -#: commands/tablecmds.c:6436 commands/tablecmds.c:6549 +#. translator: %s is name of a SQL command, eg CREATE +#: tcop/utility.c:272 #, c-format -msgid "constraint \"%s\" of relation \"%s\" does not exist" -msgstr "Constraint »%s« von Relation »%s« existiert nicht" +msgid "cannot execute %s during recovery" +msgstr "%s kann nicht während der Wiederherstellung ausgeführt werden" -#: commands/tablecmds.c:6442 +#. translator: %s is name of a SQL command, eg PREPARE +#: tcop/utility.c:290 #, c-format -msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" -msgstr "Constraint »%s« von Relation »%s« existiert nicht, wird übersprungen" +msgid "cannot execute %s within security-restricted operation" +msgstr "kann %s nicht in einer sicherheitsbeschränkten Operation ausführen" -#: commands/tablecmds.c:6584 -msgid "cannot alter column type of typed table" -msgstr "Spaltentyp einer getypten Tabelle kann nicht geändert werden" +#: tcop/utility.c:1228 +msgid "must be superuser to do CHECKPOINT" +msgstr "nur Superuser können CHECKPOINT ausführen" -#: commands/tablecmds.c:6607 +#: access/common/tupconvert.c:107 #, c-format -msgid "cannot alter inherited column \"%s\"" -msgstr "kann vererbte Spalte »%s« nicht ändern" - -#: commands/tablecmds.c:6649 -msgid "transform expression must not return a set" -msgstr "Umwandlungsausdruck kann keine Ergebnismenge zurückgeben" - -#: commands/tablecmds.c:6655 -msgid "cannot use subquery in transform expression" -msgstr "Unteranfragen können in Umwandlungsausdrücken nicht verwendet werden" - -#: commands/tablecmds.c:6659 -msgid "cannot use aggregate function in transform expression" +msgid "Returned type %s does not match expected type %s in column %d." msgstr "" -"Aggregatfunktionen können in Umwandlungsausdrücken nicht verwendet werden" +"Zurückgegebener Typ %1$s stimmt in Spalte %3$d nicht mit erwartetem Typ %2$s " +"überein." -#: commands/tablecmds.c:6663 -msgid "cannot use window function in transform expression" +#: access/common/tupconvert.c:135 +#, c-format +msgid "" +"Number of returned columns (%d) does not match expected column count (%d)." msgstr "" -"Fensterfunktionen können in Umwandlungsausdrücken nicht verwendet werden" +"Anzahl der zurückgegebenen Spalten (%d) entspricht nicht der erwarteten " +"Spaltenanzahl (%d)." -#: commands/tablecmds.c:6682 +#: access/common/tupconvert.c:240 #, c-format -msgid "column \"%s\" cannot be cast to type %s" -msgstr "Spalte »%s« kann nicht in Typ %s umgewandelt werden" - -#: commands/tablecmds.c:6703 -msgid "ALTER TYPE USING is only supported on plain tables" +msgid "" +"Attribute \"%s\" of type %s does not match corresponding attribute of type " +"%s." msgstr "" +"Attribut »%s« von Typ %s stimmt nicht mit dem entsprechenden Attribut von " +"Typ %s überein." -#: commands/tablecmds.c:6728 +#: access/common/tupconvert.c:252 #, 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" +msgid "Attribute \"%s\" of type %s does not exist in type %s." +msgstr "Attribut »%s« von Typ %s existiert nicht in Typ %s." -#: commands/tablecmds.c:6809 +#: access/common/indextuple.c:57 #, c-format -msgid "cannot alter type of column \"%s\" twice" -msgstr "Typ der Spalte »%s« kann nicht zweimal geändert werden" +msgid "number of index columns (%d) exceeds limit (%d)" +msgstr "Anzahl der Indexspalten (%d) überschreitet Maximum (%d)" -#: commands/tablecmds.c:6845 +#: access/common/indextuple.c:168 #, c-format -msgid "default for column \"%s\" cannot be cast to type %s" -msgstr "Vorgabewert der Spalte »%s« kann nicht in Typ %s umgewandelt werden" +msgid "index row requires %lu bytes, maximum size is %lu" +msgstr "Indexzeile benötigt %lu Bytes, Maximalgröße ist %lu" -#: commands/tablecmds.c:6971 -msgid "cannot alter type of a column used by a view or rule" +#: access/common/reloptions.c:323 +msgid "user-defined relation parameter types limit exceeded" msgstr "" -"Typ einer Spalte, die von einer Sicht oder Regel verwendet wird, kann nicht " -"geändert werden" +"Wertebereich des Typs für benutzerdefinierte Relationsparameter überschritten" + +#: access/common/reloptions.c:622 +msgid "RESET must not include values for parameters" +msgstr "RESET darf keinen Parameterwert enthalten" -#: commands/tablecmds.c:6972 commands/tablecmds.c:6991 +#: access/common/reloptions.c:655 #, c-format -msgid "%s depends on column \"%s\"" -msgstr "%s hängt von Spalte »%s« ab" +msgid "unrecognized parameter namespace \"%s\"" +msgstr "unbekannter Parameter-Namensraum »%s«" -#: commands/tablecmds.c:6990 -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" +#: access/common/reloptions.c:898 +#, c-format +msgid "unrecognized parameter \"%s\"" +msgstr "unbekannter Parameter »%s«" -#: commands/tablecmds.c:7349 +#: access/common/reloptions.c:923 #, c-format -msgid "cannot change owner of index \"%s\"" -msgstr "kann Eigentümer des Index »%s« nicht ändern" +msgid "parameter \"%s\" specified more than once" +msgstr "Parameter »%s« mehrmals angegeben" -#: commands/tablecmds.c:7351 -msgid "Change the ownership of the index's table, instead." -msgstr "Ändern Sie stattdessen den Eigentümer der Tabelle des Index." +#: access/common/reloptions.c:938 +#, c-format +msgid "invalid value for boolean option \"%s\": %s" +msgstr "ungültiger Wert für Boole'sche Option »%s«: »%s«" -#: commands/tablecmds.c:7367 +#: access/common/reloptions.c:949 #, c-format -msgid "cannot change owner of sequence \"%s\"" -msgstr "kann Eigentümer der Sequenz »%s« nicht ändern" +msgid "invalid value for integer option \"%s\": %s" +msgstr "ungültiger Wert für ganzzahlige Option »%s«: »%s«" -#: commands/tablecmds.c:7369 commands/tablecmds.c:8954 +#: access/common/reloptions.c:954 access/common/reloptions.c:972 #, c-format -msgid "Sequence \"%s\" is linked to table \"%s\"." -msgstr "Sequenz »%s« ist mit Tabelle »%s« verknüpft." +msgid "value %s out of bounds for option \"%s\"" +msgstr "Wert %s ist außerhalb des gültigen Bereichs für Option »%s«" -#: commands/tablecmds.c:7390 -#, fuzzy, c-format -msgid "" -"\"%s\" is not a table, view, sequence, or foreign tabl, or foreign tablee" -msgstr "»%s« ist weder Tabelle, Sicht, zusammengesetzter Typ noch Index" +#: access/common/reloptions.c:956 +#, c-format +msgid "Valid values are between \"%d\" and \"%d\"." +msgstr "Gültige Werte sind zwischen »%d« und »%d«." -#: commands/tablecmds.c:7645 -msgid "cannot have multiple SET TABLESPACE subcommands" -msgstr "mehrere SET TABLESPACE Unterbefehle sind ungültig" +#: access/common/reloptions.c:967 +#, c-format +msgid "invalid value for floating point option \"%s\": %s" +msgstr "ungültiger Wert für Gleitkommaoption »%s«: »%s«" -#: commands/tablecmds.c:7697 +#: access/common/reloptions.c:974 #, c-format -msgid "\"%s\" is not a table, index, or TOAST table" -msgstr "»%s« ist weder Tabelle, Index noch TOAST-Tabelle" +msgid "Valid values are between \"%f\" and \"%f\"." +msgstr "Gültige Werte sind zwischen »%f« und »%f«." -#: commands/tablecmds.c:7818 +#: access/common/tupdesc.c:581 parser/parse_relation.c:1178 #, c-format -msgid "cannot move system relation \"%s\"" -msgstr "Systemrelation »%s« kann nicht verschoben werden" +msgid "column \"%s\" cannot be declared SETOF" +msgstr "Spalte »%s« kann nicht als SETOF deklariert werden" -#: commands/tablecmds.c:7834 -msgid "cannot move temporary tables of other sessions" -msgstr "temporäre Tabellen anderer Sitzungen können nicht verschoben werden" +#: access/common/heaptuple.c:646 access/common/heaptuple.c:1398 +#, c-format +msgid "number of columns (%d) exceeds limit (%d)" +msgstr "Anzahl der Spalten (%d) überschreitet Maximum (%d)" -#: commands/tablecmds.c:8026 -msgid "cannot change inheritance of typed table" -msgstr "Vererbung einer getypten Tabelle kann nicht geändert werden" +#: access/hash/hashovfl.c:547 +#, c-format +msgid "out of overflow pages in hash index \"%s\"" +msgstr "keine Überlaufseiten in Hash-Index »%s« mehr" -#: commands/tablecmds.c:8112 -msgid "circular inheritance not allowed" -msgstr "zirkuläre Vererbung ist nicht erlaubt" +#: access/hash/hashsearch.c:152 +msgid "hash indexes do not support whole-index scans" +msgstr "Hash-Indexe unterstützen keine Scans des ganzen Index" -#: commands/tablecmds.c:8113 +#: access/hash/hashinsert.c:73 #, c-format -msgid "\"%s\" is already a child of \"%s\"." -msgstr "»%s« ist schon von »%s« abgeleitet." +msgid "index row size %lu exceeds hash maximum %lu" +msgstr "Größe der Indexzeile %lu überschreitet Maximum für Hash-Index %lu" -#: commands/tablecmds.c:8121 -#, 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" +#: access/hash/hashinsert.c:76 +msgid "Values larger than a buffer page cannot be indexed." +msgstr "" +"Werte, die größer sind als eine Pufferseite, können nicht indiziert werden." -#: commands/tablecmds.c:8257 +#: access/hash/hashutil.c:170 access/nbtree/nbtpage.c:433 +#: access/gist/gistutil.c:632 #, 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" +msgid "index \"%s\" contains unexpected zero page at block %u" +msgstr "Index »%s« enthält unerwartete Nullseite bei Block %u" -#: commands/tablecmds.c:8273 -#, c-format -msgid "child table is missing column \"%s\"" -msgstr "Spalte »%s« fehlt in abgeleiteter Tabelle" +#: 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 +#: access/gist/gist.c:731 access/gist/gistutil.c:635 +#: access/gist/gistutil.c:646 access/gist/gistvacuum.c:274 +msgid "Please REINDEX it." +msgstr "Bitte führen Sie REINDEX für den Index aus." -#: commands/tablecmds.c:8352 +#: access/hash/hashutil.c:181 access/hash/hashutil.c:193 +#: access/nbtree/nbtpage.c:444 access/gist/gistutil.c:643 #, 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«" +msgid "index \"%s\" contains corrupted page at block %u" +msgstr "Index »%s« enthält korrupte Seite bei Block %u" -#: commands/tablecmds.c:8376 +#: access/hash/hashutil.c:209 #, c-format -msgid "child table is missing constraint \"%s\"" -msgstr "Constraint »%s« fehlt in abgeleiteter Tabelle" +msgid "index \"%s\" is not a hash index" +msgstr "Index »%s« ist kein Hash-Index" -#: commands/tablecmds.c:8456 +#: access/hash/hashutil.c:215 #, c-format -msgid "relation \"%s\" is not a parent of relation \"%s\"" -msgstr "Relation »%s« ist keine Basisrelation von Relation »%s«" +msgid "index \"%s\" has wrong hash version" +msgstr "Index »%s« hat falsche Hash-Version" -#: commands/tablecmds.c:8675 -msgid "typed tables cannot inherit" -msgstr "getypte Tabellen können nicht erben" +#: access/heap/hio.c:175 access/heap/rewriteheap.c:597 +#, 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" -#: commands/tablecmds.c:8706 -#, fuzzy, c-format -msgid "table is missing column \"%s\"" -msgstr "Spalte »%s« fehlt in abgeleiteter Tabelle" +#: access/heap/heapam.c:1089 access/heap/heapam.c:1117 +#: access/heap/heapam.c:1147 catalog/aclchk.c:1677 +#, c-format +msgid "\"%s\" is an index" +msgstr "»%s« ist ein Index" -#: commands/tablecmds.c:8716 -#, fuzzy, c-format -msgid "table has column \"%s\" where type requires \"%s\"" -msgstr "Tabelle »%s« verweist auf »%s«." +#: access/heap/heapam.c:1094 access/heap/heapam.c:1122 +#: access/heap/heapam.c:1152 commands/tablecmds.c:2200 +#: commands/tablecmds.c:7447 commands/tablecmds.c:9123 catalog/aclchk.c:1684 +#, c-format +msgid "\"%s\" is a composite type" +msgstr "»%s« ist ein zusammengesetzter Typ" -#: commands/tablecmds.c:8725 +#: access/heap/heapam.c:3224 access/heap/heapam.c:3255 +#: access/heap/heapam.c:3290 #, c-format -msgid "table \"%s\" has different type for column \"%s\"" -msgstr "Tabelle »%s« hat unterschiedlichen Typ für Spalte »%s«" +msgid "could not obtain lock on row in relation \"%s\"" +msgstr "konnte Sperre für Zeile in Relation »%s« nicht setzen" -#: commands/tablecmds.c:8737 -#, fuzzy, c-format -msgid "table has extra column \"%s\"" -msgstr "Spalte »%s« fehlt in abgeleiteter Tabelle" +#: access/transam/xact.c:729 +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" -#: commands/tablecmds.c:8784 +#: access/transam/xact.c:1269 #, c-format -msgid "\"%s\" is not a typed table" -msgstr "»%s« ist keine getypte Tabelle" +msgid "maximum number of committed subtransactions (%d) exceeded" +msgstr "maximale Anzahl committeter Subtransaktionen (%d) erreicht" -#: commands/tablecmds.c:8953 -msgid "cannot move an owned sequence into another schema" +#: access/transam/xact.c:2045 +msgid "cannot PREPARE a transaction that has operated on temporary tables" msgstr "" -"einer Tabelle zugeordnete Sequenz kann nicht in ein anderes Schema " -"verschoben werden" - -#: commands/tablecmds.c:8972 -#, c-format -msgid "\"%s\" is not a table, view, sequence, or foreign table" -msgstr "»%s« ist keine Tabelle, Sicht, Sequenz oder Fremdtabelle" +"PREPARE kann nicht für eine Transaktion ausgeführt werden, die temporäre " +"Tabellen bearbeitet hat" -#: commands/tablecmds.c:9029 +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2837 #, c-format -msgid "relation \"%s\" already exists in schema \"%s\"" -msgstr "Relation »%s« existiert bereits in Schema »%s«" +msgid "%s cannot run inside a transaction block" +msgstr "%s kann nicht in einem Transaktionsblock laufen" -#: 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 +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2847 #, c-format -msgid "could not create directory \"%s\": %m" -msgstr "konnte Verzeichnis »%s« nicht erzeugen: %m" +msgid "%s cannot run inside a subtransaction" +msgstr "%s kann nicht in einer Subtransaktion laufen" -#: commands/tablespace.c:205 +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2857 #, c-format -msgid "could not stat directory \"%s\": %m" -msgstr "konnte »stat« für Verzeichnis »%s« nicht ausführen: %m" +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" -#: commands/tablespace.c:214 +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2908 #, c-format -msgid "\"%s\" exists but is not a directory" -msgstr "»%s« existiert, ist aber kein Verzeichnis" +msgid "%s can only be used in transaction blocks" +msgstr "%s kann nur in Transaktionsblöcken verwendet werden" -#: commands/tablespace.c:244 -#, c-format -msgid "permission denied to create tablespace \"%s\"" -msgstr "keine Berechtigung, um Tablespace »%s« zu erzeugen" +#: access/transam/xact.c:3090 +msgid "there is already a transaction in progress" +msgstr "eine Transaktion ist bereits begonnen" -#: commands/tablespace.c:246 -msgid "Must be superuser to create a tablespace." -msgstr "Nur Superuser können Tablespaces anlegen." +#: access/transam/xact.c:3257 access/transam/xact.c:3349 +msgid "there is no transaction in progress" +msgstr "keine Transaktion offen" -#: commands/tablespace.c:262 -msgid "tablespace location cannot contain single quotes" -msgstr "Tablespace-Pfad darf keine Apostrophe enthalten" +#: access/transam/xact.c:3443 access/transam/xact.c:3493 +#: access/transam/xact.c:3499 access/transam/xact.c:3543 +#: access/transam/xact.c:3591 access/transam/xact.c:3597 +msgid "no such savepoint" +msgstr "Savepoint existiert nicht" -#: commands/tablespace.c:272 -msgid "tablespace location must be an absolute path" -msgstr "Tablespace-Pfad muss ein absoluter Pfad sein" +#: access/transam/xact.c:4244 +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" -#: commands/tablespace.c:283 +#: access/transam/varsup.c:114 #, c-format -msgid "tablespace location \"%s\" is too long" -msgstr "Tablespace-Pfad »%s« ist zu lang" +msgid "" +"database is not accepting commands to avoid wraparound data loss in database " +"\"%s\"" +msgstr "" +"Datenbank nimmt keine Befehle an, um Datenverlust wegen " +"Transaktionsnummernüberlauf in Datenbank »%s« zu vermeiden" -#: commands/tablespace.c:293 commands/tablespace.c:829 -#, c-format -msgid "unacceptable tablespace name \"%s\"" -msgstr "inakzeptabler Tablespace-Name »%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 "" +"Halten Sie den Postmaster an und verwenden Sie ein Standalone-Backend, um " +"VACUUM in dieser Datenbank auszuführen.\n" +"Eventuell müssen Sie auch alte vorbereitete Transaktionen committen oder " +"zurückrollen." -#: commands/tablespace.c:295 commands/tablespace.c:830 -msgid "The prefix \"pg_\" is reserved for system tablespaces." -msgstr "Der Präfix »pg_« ist für System-Tablespaces reserviert." +#: access/transam/varsup.c:121 +#, c-format +msgid "" +"database is not accepting commands to avoid wraparound data loss in database " +"with OID %u" +msgstr "" +"Datenbank nimmt keine Befehle an, um Datenverlust wegen " +"Transaktionsnummernüberlauf in Datenbank mit OID %u zu vermeiden" -#: commands/tablespace.c:305 commands/tablespace.c:842 +#: access/transam/varsup.c:133 access/transam/varsup.c:368 #, c-format -msgid "tablespace \"%s\" already exists" -msgstr "Tablespace »%s« existiert bereits" +msgid "database \"%s\" must be vacuumed within %u transactions" +msgstr "Datenbank »%s« muss innerhalb von %u Transaktionen gevacuumt werden" -#: commands/tablespace.c:377 commands/tablespace.c:529 -msgid "tablespaces are not supported on this platform" -msgstr "Tablespaces werden auf dieser Plattform nicht unterstützt" +#: 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 "" +"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." -#: commands/tablespace.c:415 commands/tablespace.c:813 -#: commands/tablespace.c:880 commands/tablespace.c:985 -#: commands/tablespace.c:1358 +#: access/transam/varsup.c:140 access/transam/varsup.c:375 #, c-format -msgid "tablespace \"%s\" does not exist" -msgstr "Tablespace »%s« existiert nicht" +msgid "database with OID %u must be vacuumed within %u transactions" +msgstr "" +"Datenbank mit OID %u muss innerhalb von %u Transaktionen gevacuumt werden" -#: commands/tablespace.c:421 +#: access/transam/varsup.c:333 #, c-format -msgid "tablespace \"%s\" does not exist, skipping" -msgstr "Tablespace »%s« existiert nicht, wird übersprungen" +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" -#: commands/tablespace.c:486 +#: access/transam/twophase.c:250 #, c-format -msgid "tablespace \"%s\" is not empty" -msgstr "Tablespace »%s« ist nicht leer" +msgid "transaction identifier \"%s\" is too long" +msgstr "Transaktionsbezeichner »%s« ist zu lang" -#: commands/tablespace.c:560 -#, c-format -msgid "directory \"%s\" does not exist" -msgstr "Verzeichnis »%s« existiert nicht" +#: access/transam/twophase.c:257 +msgid "prepared transactions are disabled" +msgstr "vorbereitete Transaktionen sind abgeschaltet" -#: commands/tablespace.c:561 -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." +#: access/transam/twophase.c:258 +msgid "Set max_prepared_transactions to a nonzero value." +msgstr "Setzen Sie max_prepared_transactions auf einen Wert höher als null." -#: commands/tablespace.c:566 +#: access/transam/twophase.c:291 #, c-format -msgid "could not set permissions on directory \"%s\": %m" -msgstr "konnte Zugriffsrechte für Verzeichnis »%s« nicht setzen: %m" +msgid "transaction identifier \"%s\" is already in use" +msgstr "Transaktionsbezeichner »%s« wird bereits verwendet" -#: commands/tablespace.c:598 -#, c-format -msgid "directory \"%s\" already in use as a tablespace" -msgstr "Verzeichnis »%s« ist bereits als Tablespace in Verwendung" +#: access/transam/twophase.c:300 +msgid "maximum number of prepared transactions reached" +msgstr "maximale Anzahl vorbereiteter Transaktionen erreicht" -#: commands/tablespace.c:613 commands/tablespace.c:750 +#: access/transam/twophase.c:301 #, c-format -msgid "could not remove symbolic link \"%s\": %m" -msgstr "konnte symbolische Verknüpfung »%s« nicht löschen: %m" +msgid "Increase max_prepared_transactions (currently %d)." +msgstr "Erhöhen Sie max_prepared_transactions (aktuell %d)." -#: commands/tablespace.c:623 +#: access/transam/twophase.c:421 #, c-format -msgid "could not create symbolic link \"%s\": %m" -msgstr "konnte symbolische Verknüpfung »%s« nicht erstellen: %m" +msgid "prepared transaction with identifier \"%s\" is busy" +msgstr "vorbereitete Transaktion mit Bezeichner »%s« ist beschäftigt" -#: 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 "konnte Verzeichnis »%s« nicht öffnen: %m" +#: access/transam/twophase.c:429 +msgid "permission denied to finish prepared transaction" +msgstr "keine Berechtigung, um vorbereitete Transaktion abzuschließen" -#: commands/tablespace.c:714 commands/tablespace.c:726 -#: commands/tablespace.c:742 -#, c-format -msgid "could not remove directory \"%s\": %m" -msgstr "konnte Verzeichnis »%s« nicht löschen: %m" +#: access/transam/twophase.c:430 +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." -#: commands/tablespace.c:1039 -#, c-format -msgid "Tablespace \"%s\" does not exist." -msgstr "Tablespace »%s« existiert nicht." +#: access/transam/twophase.c:441 +msgid "prepared transaction belongs to another database" +msgstr "vorbereitete Transaktion gehört zu einer anderen Datenbank" -#: commands/tablespace.c:1450 -#, c-format -msgid "tablespace %u is not empty" -msgstr "Tablespace %u ist nicht leer" +#: access/transam/twophase.c:442 +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." -#: commands/trigger.c:166 +#: access/transam/twophase.c:456 #, c-format -msgid "\"%s\" is a table" -msgstr "»%s« ist eine Tabelle" +msgid "prepared transaction with identifier \"%s\" does not exist" +msgstr "vorbereitete Transaktion mit Bezeichner »%s« existiert nicht" -#: commands/trigger.c:168 -msgid "Tables cannot have INSTEAD OF triggers." -msgstr "Tabellen können keine INSTEAD OF-Trigger haben." +#: access/transam/twophase.c:939 +msgid "two-phase state file maximum length exceeded" +msgstr "maximale Länge der Zweiphasen-Statusdatei überschritten" -#: commands/trigger.c:179 commands/trigger.c:186 +#: access/transam/twophase.c:957 #, c-format -msgid "\"%s\" is a view" -msgstr "»%s« ist eine Sicht" +msgid "could not create two-phase state file \"%s\": %m" +msgstr "konnte Zweiphasen-Statusdatei »%s« nicht erstellen: %m" -#: commands/trigger.c:181 -msgid "Views cannot have row-level BEFORE or AFTER triggers." -msgstr "" +#: access/transam/twophase.c:971 access/transam/twophase.c:988 +#: access/transam/twophase.c:1044 access/transam/twophase.c:1464 +#: access/transam/twophase.c:1471 +#, c-format +msgid "could not write two-phase state file: %m" +msgstr "konnte Zweiphasen-Statusdatei nicht schreiben: %m" -#: commands/trigger.c:188 -msgid "Views cannot have TRUNCATE triggers." -msgstr "Sichten können keine TRUNCATE-Trigger haben." +#: access/transam/twophase.c:997 +#, c-format +msgid "could not seek in two-phase state file: %m" +msgstr "konnte Positionszeiger in Zweiphasen-Statusdatei nicht setzen: %m" -#: commands/trigger.c:235 -msgid "TRUNCATE FOR EACH ROW triggers are not supported" -msgstr "TRUNCATE FOR EACH ROW-Trigger werden nicht unterstützt" +#: access/transam/twophase.c:1050 access/transam/twophase.c:1489 +#, c-format +msgid "could not close two-phase state file: %m" +msgstr "konnte Zweiphasen-Statusdatei nicht schließen: %m" -#: commands/trigger.c:243 -msgid "INSTEAD OF triggers must be FOR EACH ROW" -msgstr "INSTEAD OF-Trigger müssen FOR EACH ROW sein" +#: access/transam/twophase.c:1130 access/transam/twophase.c:1569 +#, c-format +msgid "could not open two-phase state file \"%s\": %m" +msgstr "konnte Zweiphasen-Statusdatei »%s« nicht öffnen: %m" -#: commands/trigger.c:247 -msgid "INSTEAD OF triggers cannot have WHEN conditions" -msgstr "INSTEAD OF-Trigger können keine WHEN-Bedingungen haben" +#: access/transam/twophase.c:1147 +#, c-format +msgid "could not stat two-phase state file \"%s\": %m" +msgstr "konnte »stat« für Zweiphasen-Statusdatei »%s« nicht ausführen: %m" -#: commands/trigger.c:251 -msgid "INSTEAD OF triggers cannot have column lists" -msgstr "INSTEAD OF-Trigger können keine Spaltenlisten haben" +#: access/transam/twophase.c:1179 +#, c-format +msgid "could not read two-phase state file \"%s\": %m" +msgstr "konnte Zweiphasen-Statusdatei »%s« nicht lesen: %m" -#: commands/trigger.c:295 -msgid "cannot use subquery in trigger WHEN condition" -msgstr "" -"Unteranfragen können nicht in der WHEN-Bedingung eines Triggers verwendet " -"werden" +#: access/transam/twophase.c:1271 +#, c-format +msgid "two-phase state file for transaction %u is corrupt" +msgstr "Zweiphasen-Statusdatei für Transaktion %u ist verfälscht" -#: commands/trigger.c:299 -msgid "cannot use aggregate function in trigger WHEN condition" -msgstr "" -"Aggregatfunktionen können nicht in der WHEN-Bedingung eines Triggers " -"verwendet werden" +#: access/transam/twophase.c:1426 +#, c-format +msgid "could not remove two-phase state file \"%s\": %m" +msgstr "konnte Zweiphasen-Statusdatei »%s« nicht löschen: %m" -#: commands/trigger.c:303 -msgid "cannot use window function in trigger WHEN condition" -msgstr "" -"Fensterfunktionen können nicht in der WHEN-Bedingung eines Triggers " -"verwendet werden" +#: access/transam/twophase.c:1455 +#, c-format +msgid "could not recreate two-phase state file \"%s\": %m" +msgstr "konnte Zweiphasen-Statusdatei »%s« nicht wieder erstellen: %m" -#: commands/trigger.c:323 commands/trigger.c:336 -msgid "statement trigger's WHEN condition cannot reference column values" -msgstr "" -"WHEN-Bedingung eines Statement-Triggers kann keine Verweise auf Spaltenwerte " -"enthalten" +#: access/transam/twophase.c:1483 +#, c-format +msgid "could not fsync two-phase state file: %m" +msgstr "konnte Zweiphasen-Statusdatei nicht fsyncen: %m" -#: commands/trigger.c:328 -msgid "INSERT trigger's WHEN condition cannot reference OLD values" -msgstr "" -"WHEN-Bedingung eines INSERT-Triggers kann keine Verweise auf OLD-Werte " -"enthalten" +#: access/transam/twophase.c:1578 +#, c-format +msgid "could not fsync two-phase state file \"%s\": %m" +msgstr "konnte Zweiphasen-Statusdatei »%s« nicht fsyncen: %m" -#: commands/trigger.c:341 -msgid "DELETE trigger's WHEN condition cannot reference NEW values" -msgstr "" -"WHEN-Bedingung eines DELETE-Triggers kann keine Verweise auf NEW-Werte " -"enthalten" +#: access/transam/twophase.c:1585 +#, c-format +msgid "could not close two-phase state file \"%s\": %m" +msgstr "konnte Zweiphasen-Statistikdatei »%s« nicht schließen: %m" -#: commands/trigger.c:346 -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" +#: access/transam/twophase.c:1650 +#, c-format +msgid "removing future two-phase state file \"%s\"" +msgstr "entferne Zweiphasen-Statusdatei aus der Zukunft »%s«" -#: commands/trigger.c:384 +#: access/transam/twophase.c:1666 access/transam/twophase.c:1677 +#: access/transam/twophase.c:1790 access/transam/twophase.c:1801 +#: access/transam/twophase.c:1874 #, c-format -msgid "changing return type of function %s from \"opaque\" to \"trigger\"" -msgstr "ändere Rückgabetyp von Funktion %s von »opaque« in »trigger«" +msgid "removing corrupt two-phase state file \"%s\"" +msgstr "entferne verfälschte Zweiphasen-Statusdatei »%s«" -#: commands/trigger.c:391 +#: access/transam/twophase.c:1779 access/transam/twophase.c:1863 #, c-format -msgid "function %s must return type \"trigger\"" -msgstr "Funktion %s muss Typ »trigger« zurückgeben" +msgid "removing stale two-phase state file \"%s\"" +msgstr "entferne abgelaufene Zweiphasen-Statusdatei »%s«" -#: commands/trigger.c:501 commands/trigger.c:1240 +#: access/transam/twophase.c:1881 #, c-format -msgid "trigger \"%s\" for relation \"%s\" already exists" -msgstr "Trigger »%s« für Relation »%s« existiert bereits" +msgid "recovering prepared transaction %u" +msgstr "Wiederherstellung der vorbereiteten Transaktion %u" -#: commands/trigger.c:786 -msgid "Found referenced table's UPDATE trigger." -msgstr "UPDATE-Trigger der Zieltabelle wurde gefunden." +#: access/transam/slru.c:609 +#, c-format +msgid "file \"%s\" doesn't exist, reading as zeroes" +msgstr "Datei »%s« existiert nicht, wird als Nullen eingelesen" -#: commands/trigger.c:787 -msgid "Found referenced table's DELETE trigger." -msgstr "DELETE-Trigger der Zieltabelle wurde gefunden." +#: 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 "konnte auf den Status von Transaktion %u nicht zugreifen" -#: commands/trigger.c:788 -msgid "Found referencing table's trigger." -msgstr "Trigger der Quelltabelle wurde gefunden." +#: access/transam/slru.c:840 +#, c-format +msgid "Could not open file \"%s\": %m." +msgstr "Konnte Datei »%s« nicht öffnen: %m." -#: commands/trigger.c:897 commands/trigger.c:913 +#: access/transam/slru.c:846 #, c-format -msgid "ignoring incomplete trigger group for constraint \"%s\" %s" -msgstr "unvollständige Triggergruppe für Constraint \"%s\" %s ignoriert" +msgid "Could not seek in file \"%s\" to offset %u: %m." +msgstr "Konnte Positionszeiger in Datei »%s« nicht auf %u setzen: %m." -#: commands/trigger.c:925 +#: access/transam/slru.c:853 #, c-format -msgid "converting trigger group into constraint \"%s\" %s" -msgstr "Triggergruppe wird in Constraint \"%s\" %s umgewandelt" +msgid "Could not read from file \"%s\" at offset %u: %m." +msgstr "Konnte nicht aus Datei »%s« bei Position %u lesen: %m." -#: commands/trigger.c:1039 +#: access/transam/slru.c:860 #, c-format -msgid "trigger \"%s\" for table \"%s\" does not exist, skipping" -msgstr "Trigger »%s« für Tabelle »%s« existiert nicht, wird übersprungen" +msgid "Could not write to file \"%s\" at offset %u: %m." +msgstr "Konnte nicht in Datei »%s« bei Position %u schreiben: %m." -#: commands/trigger.c:1169 commands/trigger.c:1282 commands/trigger.c:1393 +#: access/transam/slru.c:867 #, c-format -msgid "trigger \"%s\" for table \"%s\" does not exist" -msgstr "Trigger »%s« für Tabelle »%s« existiert nicht" +msgid "Could not fsync file \"%s\": %m." +msgstr "Konnte Datei »%s« nicht fsyncen: %m." -#: commands/trigger.c:1361 +#: access/transam/slru.c:874 #, c-format -msgid "permission denied: \"%s\" is a system trigger" -msgstr "keine Berechtigung: »%s« ist ein Systemtrigger" +msgid "Could not close file \"%s\": %m." +msgstr "Konnte Datei »%s« nicht schließen: %m." -#: commands/trigger.c:1843 +#: access/transam/slru.c:1101 #, c-format -msgid "trigger function %u returned null value" -msgstr "Triggerfunktion %u gab NULL-Wert zurück" +msgid "could not truncate directory \"%s\": apparent wraparound" +msgstr "konnte Verzeichnis »%s« nicht leeren: anscheinender Überlauf" -#: 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 "Trigger für BEFORE STATEMENT kann keinen Wert zurückgeben" +#: access/transam/slru.c:1182 +#, c-format +msgid "removing file \"%s\"" +msgstr "entferne Datei »%s«" -#: 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 "kann Zugriff nicht serialisieren wegen gleichzeitiger Aktualisierung" +#: access/transam/xlog.c:1340 +#, c-format +msgid "could not create archive status file \"%s\": %m" +msgstr "konnte Archivstatusdatei »%s« nicht erstellen: %m" -#: commands/trigger.c:4204 +#: access/transam/xlog.c:1348 #, c-format -msgid "constraint \"%s\" is not deferrable" -msgstr "Constraint »%s« ist nicht aufschiebbar" +msgid "could not write archive status file \"%s\": %m" +msgstr "konnte Archivstatusdatei »%s« nicht schreiben: %m" -#: commands/trigger.c:4227 +#: access/transam/xlog.c:1803 access/transam/xlog.c:10539 +#: replication/walreceiver.c:515 replication/walsender.c:1013 #, c-format -msgid "constraint \"%s\" does not exist" -msgstr "Constraint »%s« existiert nicht" +msgid "could not seek in log file %u, segment %u to offset %u: %m" +msgstr "" +"konnte Positionszeiger von Logdatei %u, Segment %u nicht auf %u setzen: %m" -#: commands/tsearchcmds.c:116 commands/tsearchcmds.c:1043 +#: access/transam/xlog.c:1820 replication/walreceiver.c:532 #, c-format -msgid "function %s should return type %s" -msgstr "Function %s sollte Rückgabetyp %s haben" +msgid "could not write to log file %u, segment %u at offset %u, length %lu: %m" +msgstr "" +"konnte nicht in Logdatei %u, Segment %u bei Position %u, Länge %lu " +"schreiben: %m" -#: commands/tsearchcmds.c:188 -msgid "must be superuser to create text search parsers" -msgstr "nur Superuser können Textsucheparser anlegen" +#: access/transam/xlog.c:2022 +#, c-format +msgid "updated min recovery point to %X/%X" +msgstr "minimaler Recovery-Punkt auf %X/%X aktualisiert" -#: commands/tsearchcmds.c:236 +#: access/transam/xlog.c:2372 access/transam/xlog.c:2476 +#: access/transam/xlog.c:2705 access/transam/xlog.c:2776 +#: access/transam/xlog.c:2833 replication/walsender.c:1001 #, c-format -msgid "text search parser parameter \"%s\" not recognized" -msgstr "Textsucheparserparameter »%s« nicht erkannt" +msgid "could not open file \"%s\" (log file %u, segment %u): %m" +msgstr "konnte Datei »%s« nicht öffnen (Logdatei %u, Segment %u): %m" -#: commands/tsearchcmds.c:246 -msgid "text search parser start method is required" -msgstr "Textsucheparserstartmethode muss angegeben werden" +#: access/transam/xlog.c:2437 access/transam/xlog.c:2569 +#: access/transam/xlog.c:4584 storage/file/copydir.c:269 storage/smgr/md.c:932 +#: storage/smgr/md.c:1137 storage/smgr/md.c:1291 +#, c-format +msgid "could not fsync file \"%s\": %m" +msgstr "konnte Datei »%s« nicht fsyncen: %m" -#: commands/tsearchcmds.c:251 -msgid "text search parser gettoken method is required" -msgstr "Gettoken-Methode für Textsucheparser muss angegeben werden" +#: access/transam/xlog.c:2442 access/transam/xlog.c:2574 +#: access/transam/xlog.c:4589 commands/copy.c:1329 storage/file/copydir.c:211 +#, c-format +msgid "could not close file \"%s\": %m" +msgstr "konnte Datei »%s« nicht schließen: %m" -#: commands/tsearchcmds.c:256 -msgid "text search parser end method is required" -msgstr "Textsucheparserendemethode muss angegeben werden" +#: access/transam/xlog.c:2546 +#, c-format +msgid "not enough data in file \"%s\"" +msgstr "nicht genug Daten in Datei »%s«" -#: commands/tsearchcmds.c:261 -msgid "text search parser lextypes method is required" -msgstr "Lextypes-Methode für Textsucheparser muss angegeben werden" +#: access/transam/xlog.c:2665 +#, c-format +msgid "" +"could not link file \"%s\" to \"%s\" (initialization of log file %u, segment " +"%u): %m" +msgstr "" +"konnte Datei »%s« nicht nach »%s« linken (Initialisierung von Logdatei %u, " +"Segment %u): %m" -#: commands/tsearchcmds.c:296 -msgid "must be superuser to drop text search parsers" -msgstr "nur Superuser können Textsucheparser löschen" +#: access/transam/xlog.c:2677 +#, c-format +msgid "" +"could not rename file \"%s\" to \"%s\" (initialization of log file %u, " +"segment %u): %m" +msgstr "" +"konnte Datei »%s« nicht in »%s« umbenennen (Initialisierung von Logdatei %u, " +"Segment %u): %m" -#: commands/tsearchcmds.c:325 +#: access/transam/xlog.c:2860 replication/walreceiver.c:489 #, c-format -msgid "text search parser \"%s\" does not exist, skipping" -msgstr "Textsucheparser »%s« existiert nicht, wird übersprungen" +msgid "could not close log file %u, segment %u: %m" +msgstr "konnte Logdatei %u, Segment %u nicht schließen: %m" -#: commands/tsearchcmds.c:380 -msgid "must be superuser to rename text search parsers" -msgstr "nur Superuser können Textsucheparser umbenennen" +#: access/transam/xlog.c:2940 access/transam/xlog.c:9377 storage/smgr/md.c:371 +#: storage/smgr/md.c:420 storage/smgr/md.c:1251 +#, c-format +msgid "could not remove file \"%s\": %m" +msgstr "konnte Datei »%s« nicht löschen: %m" -#: commands/tsearchcmds.c:398 +#: access/transam/xlog.c:3076 #, c-format -msgid "text search parser \"%s\" already exists" -msgstr "Textsucheparser »%s« existiert bereits" +msgid "archive file \"%s\" has wrong size: %lu instead of %lu" +msgstr "Archivdatei »%s« hat falsche Größe: %lu statt %lu" -#: commands/tsearchcmds.c:524 +#: access/transam/xlog.c:3085 #, c-format -msgid "text search template \"%s\" does not accept options" -msgstr "Textsuchevorlage »%s« akzeptiert keine Optionen" +msgid "restored log file \"%s\" from archive" +msgstr "Logdatei »%s« aus Archiv wiederhergestellt" -#: commands/tsearchcmds.c:597 -msgid "text search template is required" -msgstr "Textsuchevorlage muss angegeben werden" +#: access/transam/xlog.c:3135 +#, c-format +msgid "could not restore file \"%s\" from archive: return code %d" +msgstr "konnte Datei »%s« nicht aus Archiv wiederherstellen: Rückgabecode %d" -#: commands/tsearchcmds.c:666 +#. 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:3249 #, c-format -msgid "text search dictionary \"%s\" already exists" -msgstr "Textsuchewörterbuch »%s« existiert bereits" +msgid "%s \"%s\": return code %d" +msgstr "%s »%s«: Rückgabecode %d" -#: commands/tsearchcmds.c:774 +#: access/transam/xlog.c:3359 access/transam/xlog.c:3542 #, c-format -msgid "text search dictionary \"%s\" does not exist, skipping" -msgstr "Textsuchewörterbuch »%s« existiert nicht, wird übersprungen" +msgid "could not open transaction log directory \"%s\": %m" +msgstr "konnte Transaktionslog-Verzeichnis »%s« nicht öffnen: %m" -#: commands/tsearchcmds.c:1107 -msgid "must be superuser to create text search templates" -msgstr "nur Superuser können Textsuchevorlagen erzeugen" +#: access/transam/xlog.c:3413 +#, c-format +msgid "recycled transaction log file \"%s\"" +msgstr "Transaktionslogdatei »%s« wird wiederverwendet" -#: commands/tsearchcmds.c:1144 +#: access/transam/xlog.c:3429 #, c-format -msgid "text search template parameter \"%s\" not recognized" -msgstr "Textsuchevorlageparameter »%s« nicht erkannt" +msgid "removing transaction log file \"%s\"" +msgstr "entferne Transaktionslogdatei »%s«" -#: commands/tsearchcmds.c:1154 -msgid "text search template lexize method is required" -msgstr "Lexize-Methode für Textsuchevorlage muss angegeben werden" +#: access/transam/xlog.c:3452 +#, c-format +msgid "could not rename old transaction log file \"%s\": %m" +msgstr "konnte alte Transaktionslogdatei »%s« nicht umbenennen: %m" -#: commands/tsearchcmds.c:1192 -msgid "must be superuser to rename text search templates" -msgstr "nur Superuser können Textsuchevorlagen umbenennen" +#: access/transam/xlog.c:3464 +#, c-format +msgid "could not remove old transaction log file \"%s\": %m" +msgstr "konnte alte Transaktionslogdatei »%s« nicht löschen: %m" -#: commands/tsearchcmds.c:1211 +#: access/transam/xlog.c:3502 access/transam/xlog.c:3512 #, c-format -msgid "text search template \"%s\" already exists" -msgstr "Textsuchevorlage »%s« existiert bereits" +msgid "required WAL directory \"%s\" does not exist" +msgstr "benötigtes WAL-Verzeichnis »%s« existiert nicht" -#: commands/tsearchcmds.c:1280 -msgid "must be superuser to drop text search templates" -msgstr "nur Superuser können Textsuchevorlagen löschen" +#: access/transam/xlog.c:3518 +#, c-format +msgid "creating missing WAL directory \"%s\"" +msgstr "erzeuge fehlendes WAL-Verzeichnis »%s«" -#: commands/tsearchcmds.c:1309 +#: access/transam/xlog.c:3521 #, c-format -msgid "text search template \"%s\" does not exist, skipping" -msgstr "Textsuchevorlage »%s« existiert nicht, wird übersprungen" +msgid "could not create missing directory \"%s\": %m" +msgstr "konnte fehlendes Verzeichnis »%s« nicht erzeugen: %m" -#: commands/tsearchcmds.c:1508 +#: access/transam/xlog.c:3555 #, c-format -msgid "text search configuration parameter \"%s\" not recognized" -msgstr "Textsuchekonfigurationsparameter »%s« nicht erkannt" +msgid "removing transaction log backup history file \"%s\"" +msgstr "entferne Transaktionslog-Backup-History-Datei »%s«" -#: commands/tsearchcmds.c:1515 -msgid "cannot specify both PARSER and COPY options" -msgstr "Optionen PARSER und COPY können nicht beide angegeben werden" +#: access/transam/xlog.c:3697 +#, c-format +msgid "incorrect hole size in record at %X/%X" +msgstr "falsche Lochgröße im Datensatz bei %X/%X" -#: commands/tsearchcmds.c:1543 -msgid "text search parser is required" -msgstr "Textsucheparser muss angegeben werden" +#: access/transam/xlog.c:3710 +#, c-format +msgid "incorrect total length in record at %X/%X" +msgstr "falsche Gesamtlänge im Datensatz bei %X/%X" + +#: access/transam/xlog.c:3723 +#, c-format +msgid "incorrect resource manager data checksum in record at %X/%X" +msgstr "falsche Resource-Manager-Daten-Prüfsumme im Datensatz bei %X/%X" -#: commands/tsearchcmds.c:1652 +#: access/transam/xlog.c:3801 access/transam/xlog.c:3839 #, c-format -msgid "text search configuration \"%s\" already exists" -msgstr "Textsuchekonfiguration »%s« existiert bereits" +msgid "invalid record offset at %X/%X" +msgstr "ungültiger Datensatz-Offset bei %X/%X" -#: commands/tsearchcmds.c:1759 +#: access/transam/xlog.c:3847 #, c-format -msgid "text search configuration \"%s\" does not exist, skipping" -msgstr "Textsuchekonfiguration »%s« existiert nicht, wird übersprungen" +msgid "contrecord is requested by %X/%X" +msgstr "Contrecord-Eintrag ist bei %X/%X" -#: commands/tsearchcmds.c:1981 +#: access/transam/xlog.c:3862 #, c-format -msgid "token type \"%s\" does not exist" -msgstr "Tokentyp »%s« existiert nicht" +msgid "invalid xlog switch record at %X/%X" +msgstr "ungültiger Xlog-Switch-Datensatz bei %X/%X" -#: commands/tsearchcmds.c:2203 +#: access/transam/xlog.c:3870 #, c-format -msgid "mapping for token type \"%s\" does not exist" -msgstr "Mapping für Tokentyp »%s« existiert nicht" +msgid "record with zero length at %X/%X" +msgstr "Datensatz mit Länge null bei %X/%X" -#: commands/tsearchcmds.c:2209 +#: access/transam/xlog.c:3879 #, c-format -msgid "mapping for token type \"%s\" does not exist, skipping" -msgstr "Mapping für Tokentyp »%s« existiert nicht, wird übersprungen" +msgid "invalid record length at %X/%X" +msgstr "ungültige Datensatzlänge bei %X/%X" -#: commands/tsearchcmds.c:2362 commands/tsearchcmds.c:2473 +#: access/transam/xlog.c:3886 #, c-format -msgid "invalid parameter list format: \"%s\"" -msgstr "ungültiges Parameterlistenformat: »%s«" - -#: commands/typecmds.c:169 -msgid "must be superuser to create a base type" -msgstr "nur Superuser können Basistypen anlegen" +msgid "invalid resource manager ID %u at %X/%X" +msgstr "ungültige Resource-Manager-ID %u bei %X/%X" -#: commands/typecmds.c:275 +#: access/transam/xlog.c:3899 access/transam/xlog.c:3915 #, c-format -msgid "type attribute \"%s\" not recognized" -msgstr "Typ-Attribut »%s« nicht erkannt" +msgid "record with incorrect prev-link %X/%X at %X/%X" +msgstr "Datensatz mit inkorrektem Prev-Link %X/%X bei %X/%X" -#: commands/typecmds.c:329 +#: access/transam/xlog.c:3944 #, c-format -msgid "invalid type category \"%s\": must be simple ASCII" -msgstr "ungültige Typenkategorie »%s«: muss einfacher ASCII-Wert sein" +msgid "record length %u at %X/%X too long" +msgstr "Datensatzlänge %u bei %X/%X zu groß" -#: commands/typecmds.c:348 +#: access/transam/xlog.c:3984 #, c-format -msgid "array element type cannot be %s" -msgstr "Arrayelementtyp kann nicht %s sein" +msgid "there is no contrecord flag in log file %u, segment %u, offset %u" +msgstr "es gibt keine Contrecord-Flag in Logdatei %u, Segment %u, Offset %u" -#: commands/typecmds.c:380 +#: access/transam/xlog.c:3994 #, c-format -msgid "alignment \"%s\" not recognized" -msgstr "Ausrichtung »%s« nicht erkannt" +msgid "invalid contrecord length %u in log file %u, segment %u, offset %u" +msgstr "ungültige Contrecord-Länge %u in Logdatei %u, Segment %u, Offset %u" -#: commands/typecmds.c:397 +#: access/transam/xlog.c:4084 #, c-format -msgid "storage \"%s\" not recognized" -msgstr "Storage-Typ »%s« nicht erkannt" +msgid "invalid magic number %04X in log file %u, segment %u, offset %u" +msgstr "ungültige magische Zahl %04X in Logdatei %u, Segment %u, Offset %u" -#: commands/typecmds.c:408 -msgid "type input function must be specified" -msgstr "Typeingabefunktion muss angegeben werden" +#: access/transam/xlog.c:4091 access/transam/xlog.c:4137 +#, c-format +msgid "invalid info bits %04X in log file %u, segment %u, offset %u" +msgstr "ungültige Infobits %04X in Logdatei %u, Segment %u, Offset %u" -#: commands/typecmds.c:412 -msgid "type output function must be specified" -msgstr "Typausgabefunktion muss angegeben werden" +#: access/transam/xlog.c:4113 access/transam/xlog.c:4121 +#: access/transam/xlog.c:4128 +msgid "WAL file is from different database system" +msgstr "WAL-Datei stammt von einem anderen Datenbanksystem" -#: commands/typecmds.c:417 +#: access/transam/xlog.c:4114 +#, c-format msgid "" -"type modifier output function is useless without a type modifier input " -"function" +"WAL file database system identifier is %s, pg_control database system " +"identifier is %s." msgstr "" -"Typmodifikatorausgabefunktion ist nutzlos ohne Typmodifikatoreingabefunktion." +"Datenbanksystemidentifikator in der WAL-Datei ist %s, " +"Datenbanksystemidentifikator in pg_control ist %s." -#: commands/typecmds.c:440 -#, c-format -msgid "changing return type of function %s from \"opaque\" to %s" -msgstr "ändere Rückgabetyp von Funktion %s von »opaque« in %s" +#: access/transam/xlog.c:4122 +msgid "Incorrect XLOG_SEG_SIZE in page header." +msgstr "Falscher XLOG_SEG_SIZE-Wert in Page-Header." -#: commands/typecmds.c:447 -#, c-format -msgid "type input function %s must return type %s" -msgstr "Typeingabefunktion %s muss Typ %s zurückgeben" +#: access/transam/xlog.c:4129 +msgid "Incorrect XLOG_BLCKSZ in page header." +msgstr "Falscher XLOG_BLCKSZ-Wert in Page-Header." -#: commands/typecmds.c:457 +#: access/transam/xlog.c:4145 #, c-format -msgid "changing return type of function %s from \"opaque\" to \"cstring\"" -msgstr "ändere Rückgabetyp von Funktion %s von »opaque« in »cstring«" +msgid "unexpected pageaddr %X/%X in log file %u, segment %u, offset %u" +msgstr "unerwartete Page-Adresse %X/%X in Logdatei %u, Segment %u, Offset %u" -#: commands/typecmds.c:464 +#: access/transam/xlog.c:4157 #, c-format -msgid "type output function %s must return type \"cstring\"" -msgstr "Typeausgabefunktion %s muss Typ »cstring« zurückgeben" +msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u" +msgstr "unerwartete Timeline-ID %u in Logdatei %u, Segment %u, Offset %u" -#: commands/typecmds.c:473 +#: access/transam/xlog.c:4184 #, c-format -msgid "type receive function %s must return type %s" -msgstr "Typempfangsfunktion %s muss Typ %s zurückgeben" +msgid "" +"out-of-sequence timeline ID %u (after %u) in log file %u, segment %u, offset " +"%u" +msgstr "" +"Timeline-ID %u nicht in richtiger Reihenfolge (nach %u) in Logdatei %u, " +"Segment %u, Offset %u" -#: commands/typecmds.c:482 +#: access/transam/xlog.c:4261 #, c-format -msgid "type send function %s must return type \"bytea\"" -msgstr "Typsendefunktion %s muss Typ »bytea« zurückgeben" +msgid "syntax error in history file: %s" +msgstr "Syntaxfehler in History-Datei: %s" -#: commands/typecmds.c:687 -#, c-format -msgid "\"%s\" is not a domain" -msgstr "»%s« ist keine Domäne" +#: access/transam/xlog.c:4262 +msgid "Expected a numeric timeline ID." +msgstr "Eine numerische Timeline-ID wurde erwartet." -#: commands/typecmds.c:827 +#: access/transam/xlog.c:4267 #, 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:909 -msgid "multiple default expressions" -msgstr "mehrere Vorgabeausdrücke" - -#: commands/typecmds.c:973 commands/typecmds.c:982 -msgid "conflicting NULL/NOT NULL constraints" -msgstr "wiedersprüchliche NULL/NOT NULL-Constraints" +msgid "invalid data in history file: %s" +msgstr "ungültige Daten in History-Datei: %s" -#: commands/typecmds.c:1001 commands/typecmds.c:1983 -msgid "unique constraints not possible for domains" -msgstr "Unique Constraints sind nicht für Domänen möglich" +#: access/transam/xlog.c:4268 +msgid "Timeline IDs must be in increasing sequence." +msgstr "Timeline-IDs müssen in aufsteigender Folge sein." -#: commands/typecmds.c:1007 commands/typecmds.c:1989 -msgid "primary key constraints not possible for domains" -msgstr "Primärschlüssel-Constraints sind nicht fürDomänen möglich" +#: access/transam/xlog.c:4281 +#, c-format +msgid "invalid data in history file \"%s\"" +msgstr "ungültige Daten in History-Datei »%s«" -#: commands/typecmds.c:1013 commands/typecmds.c:1995 -msgid "exclusion constraints not possible for domains" -msgstr "Exclusion-Constraints sind nicht für Domänen möglich" +#: access/transam/xlog.c:4282 +msgid "Timeline IDs must be less than child timeline's ID." +msgstr "Timeline-IDs müssen kleiner als die Timeline-ID des Kindes sein." -#: commands/typecmds.c:1019 commands/typecmds.c:2001 -msgid "foreign key constraints not possible for domains" -msgstr "Fremdschlüssel-Constraints sind nicht für Domänen möglich" +#: access/transam/xlog.c:4368 +#, c-format +msgid "new timeline %u is not a child of database system timeline %u" +msgstr "neue Timeline %u ist kein Kind der Datenbanksystem-Timeline %u" -#: commands/typecmds.c:1028 commands/typecmds.c:2010 -msgid "specifying constraint deferrability not supported for domains" -msgstr "Setzen des Constraint-Modus wird für Domänen nicht unterstützt" +#: access/transam/xlog.c:4381 +#, c-format +msgid "new target timeline is %u" +msgstr "neue Ziel-Timeline ist %u" -#: commands/typecmds.c:1272 utils/cache/typcache.c:761 +#: access/transam/xlog.c:4606 #, c-format -msgid "%s is not an enum" -msgstr "»%s« ist kein Enum" +msgid "could not link file \"%s\" to \"%s\": %m" +msgstr "konnte Datei »%s« nicht nach »%s« linken: %m" -#: commands/typecmds.c:1332 +#: access/transam/xlog.c:4695 #, c-format -msgid "changing argument type of function %s from \"opaque\" to \"cstring\"" -msgstr "ändere Argumenttyp von Funktion %s von »opaque« in »cstring«" +msgid "could not create control file \"%s\": %m" +msgstr "konnte Kontrolldatei »%s« nicht erzeugen: %m" -#: commands/typecmds.c:1383 +#: access/transam/xlog.c:4706 access/transam/xlog.c:4931 #, c-format -msgid "changing argument type of function %s from \"opaque\" to %s" -msgstr "ändere Argumenttyp von Funktion %s von »opaque« in %s" +msgid "could not write to control file: %m" +msgstr "konnte nicht in Kontrolldatei schreiben: %m" -#: commands/typecmds.c:1482 +#: access/transam/xlog.c:4712 access/transam/xlog.c:4937 #, c-format -msgid "typmod_in function %s must return type \"integer\"" -msgstr "typmod_in-Funktion %s muss Typ »integer« zurückgeben" +msgid "could not fsync control file: %m" +msgstr "konnte Kontrolldatei nicht fsyncen: %m" -#: commands/typecmds.c:1509 +#: access/transam/xlog.c:4717 access/transam/xlog.c:4942 #, c-format -msgid "typmod_out function %s must return type \"cstring\"" -msgstr "typmod_out-Funktion %s muss Typ »cstring« zurückgeben" +msgid "could not close control file: %m" +msgstr "konnte Kontrolldatei nicht schließen: %m" -#: commands/typecmds.c:1536 +#: access/transam/xlog.c:4735 access/transam/xlog.c:4920 #, c-format -msgid "type analyze function %s must return type \"boolean\"" -msgstr "Typanalysefunktion %s muss Typ »boolean« zurückgeben" +msgid "could not open control file \"%s\": %m" +msgstr "konnte Kontrolldatei »%s« nicht öffnen: %m" -#: commands/typecmds.c:1835 +#: access/transam/xlog.c:4741 #, c-format -msgid "column \"%s\" of table \"%s\" contains null values" -msgstr "Spalte »%s« von Tabelle »%s« enthält NULL-Werte" +msgid "could not read from control file: %m" +msgstr "konnte nicht aus Kontrolldatei lesen: %m" -#: commands/typecmds.c:2081 +#: access/transam/xlog.c:4755 #, c-format msgid "" -"column \"%s\" of table \"%s\" contains values that violate the new constraint" +"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 "" -"Spalte »%s« von Tabelle »%s« enthält Werte, die den neuen Constraint " -"verletzen" - -#: commands/typecmds.c:2286 -#, c-format -msgid "%s is not a domain" -msgstr "%s ist keine Domäne" +"Der Datenbank-Cluster wurde mit PG_CONTROL_VERSION %d (0x%08x) " +"initialisiert, aber der Server wurde mit PG_CONTROL_VERSION %d (0x%08x) " +"kompiliert." -#: commands/typecmds.c:2368 commands/typecmds.c:2377 -msgid "cannot use table references in domain check constraint" +#: access/transam/xlog.c:4759 +msgid "" +"This could be a problem of mismatched byte ordering. It looks like you need " +"to initdb." msgstr "" -"Tabellenverweise können in Domänen-Check-Constraints nicht verwendet werden" +"Das Problem könnte eine falsche Byte-Reihenfolge sein. Es sieht so aus, dass " +"Sie initdb ausführen müssen." -#: commands/typecmds.c:2607 commands/typecmds.c:2679 commands/typecmds.c:2903 +#: access/transam/xlog.c:4764 #, c-format -msgid "%s is a table's row type" -msgstr "%s ist der Zeilentyp einer Tabelle" +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." -#: commands/typecmds.c:2609 commands/typecmds.c:2681 commands/typecmds.c:2905 -msgid "Use ALTER TABLE instead." -msgstr "Verwenden Sie stattdessen ALTER TABLE." +#: access/transam/xlog.c:4767 access/transam/xlog.c:4791 +#: access/transam/xlog.c:4798 access/transam/xlog.c:4803 +msgid "It looks like you need to initdb." +msgstr "Es sieht so aus, dass Sie initdb ausführen müssen." -#: commands/typecmds.c:2616 commands/typecmds.c:2688 commands/typecmds.c:2834 -#, c-format -msgid "cannot alter array type %s" -msgstr "Array-Typ %s kann nicht verändert werden" +#: access/transam/xlog.c:4778 +msgid "incorrect checksum in control file" +msgstr "falsche Prüfsumme in Kontrolldatei" -#: commands/typecmds.c:2618 commands/typecmds.c:2690 commands/typecmds.c:2836 +#: access/transam/xlog.c:4788 #, c-format -msgid "You can alter type %s, which will alter the array type as well." +msgid "" +"The database cluster was initialized with CATALOG_VERSION_NO %d, but the " +"server was compiled with CATALOG_VERSION_NO %d." msgstr "" -"Sie können den Typ %s ändern, wodurch der Array-Typ ebenfalls geändert wird." +"Der Datenbank-Cluster wurde mit CATALOG_VERSION_NO %d initialisiert, aber " +"der Server wurde mit CATALOG_VERSION_NO %d kompiliert." -#: commands/typecmds.c:2889 +#: access/transam/xlog.c:4795 #, c-format -msgid "type \"%s\" already exists in schema \"%s\"" -msgstr "Typ %s existiert bereits in Schema »%s«" - -#: commands/vacuum.c:419 -msgid "oldest xmin is far in the past" -msgstr "älteste xmin ist weit in der Vergangenheit" - -#: commands/vacuum.c:420 -msgid "Close open transactions soon to avoid wraparound problems." -msgstr "" -"Schließen Sie bald alle offenen Transaktionen, um Überlaufprobleme zu " -"vermeiden." - -#: commands/vacuum.c:736 -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:737 -msgid "You might have already suffered transaction-wraparound data loss." +msgid "" +"The database cluster was initialized with MAXALIGN %d, but the server was " +"compiled with MAXALIGN %d." msgstr "" -"Sie haben möglicherweise bereits Daten wegen Transaktionsnummernüberlauf " -"verloren." +"Der Datenbank-Cluster wurde mit MAXALIGN %d initialisiert, aber der Server " +"wurde mit MAXALIGN %d kompiliert." -#: commands/vacuum.c:851 -#, c-format -msgid "skipping vacuum of \"%s\" --- lock not available" -msgstr "überspringe Vacuum von »%s« --- Sperre nicht verfügbar" +#: access/transam/xlog.c:4802 +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." -#: commands/vacuum.c:877 +#: access/transam/xlog.c:4807 #, c-format -msgid "skipping \"%s\" --- only superuser can vacuum it" -msgstr "überspringe »%s« --- nur Superuser kann sie vacuumen" +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." -#: commands/vacuum.c:881 -#, c-format -msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" +#: access/transam/xlog.c:4810 access/transam/xlog.c:4817 +#: access/transam/xlog.c:4824 access/transam/xlog.c:4831 +#: access/transam/xlog.c:4838 access/transam/xlog.c:4845 +#: access/transam/xlog.c:4852 access/transam/xlog.c:4860 +#: access/transam/xlog.c:4867 access/transam/xlog.c:4876 +#: access/transam/xlog.c:4883 access/transam/xlog.c:4892 +#: access/transam/xlog.c:4899 +msgid "It looks like you need to recompile or initdb." msgstr "" -"überspringe »%s« --- nur Superuser oder Eigentümer der Datenbank kann sie " -"vacuumen" +"Es sieht so aus, dass Sie neu kompilieren oder initdb ausführen müssen." -#: commands/vacuum.c:885 +#: access/transam/xlog.c:4814 #, c-format -msgid "skipping \"%s\" --- only table or database owner can vacuum it" +msgid "" +"The database cluster was initialized with RELSEG_SIZE %d, but the server was " +"compiled with RELSEG_SIZE %d." msgstr "" -"überspringe »%s« --- nur Eigentümer der Tabelle oder der Datenbank kann sie " -"vacuumen" +"Der Datenbank-Cluster wurde mit RELSEG_SIZE %d initialisiert, aber der " +"Server wurde mit RELSEGSIZE %d kompiliert." -#: commands/vacuum.c:902 +#: access/transam/xlog.c:4821 #, c-format -msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables" -msgstr "überspringe »%s« --- kann Nicht-Tabellen oder besondere Systemtabellen nicht vacuumen" +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." -#: commands/vacuumlazy.c:234 +#: access/transam/xlog.c:4828 #, 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" +"The database cluster was initialized with XLOG_SEG_SIZE %d, but the server " +"was compiled with XLOG_SEG_SIZE %d." msgstr "" -"automatisches Vacuum von Tabelle »%s.%s.%s«: Index-Scans: %d\n" -"Pages: %d entfernt, %d noch vorhanden\n" -"Tuple: %.0f entfernt, %.0f noch vorhanden\n" -"Systembenutzung: %s" +"Der Datenbank-Cluster wurde mit XLOG_SEG_SIZE %d initialisiert, aber der " +"Server wurde mit XLOG_SEG_SIZE %d kompiliert." -#: commands/vacuumlazy.c:450 +#: access/transam/xlog.c:4835 #, c-format -msgid "relation \"%s\" page %u is uninitialized --- fixing" +msgid "" +"The database cluster was initialized with NAMEDATALEN %d, but the server was " +"compiled with NAMEDATALEN %d." msgstr "" -"Seite %2$u in Relation »%1$s« ist nicht initialisiert --- wird repariert" +"Der Datenbank-Cluster wurde mit NAMEDATALEN %d initialisiert, aber der " +"Server wurde mit NAMEDATALEN %d kompiliert." -#: commands/vacuumlazy.c:801 +#: access/transam/xlog.c:4842 #, c-format -msgid "\"%s\": removed %.0f row versions in %u pages" -msgstr "»%s«: %.0f Zeilenversionen in %u Seiten entfernt" +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." -#: commands/vacuumlazy.c:806 +#: access/transam/xlog.c:4849 #, c-format msgid "" -"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u " -"pages" +"The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d, but the " +"server was compiled with TOAST_MAX_CHUNK_SIZE %d." msgstr "" -"»%s«: %.0f entfernbare, %.0f nicht entfernbare Zeilenversionen in %u von %u " -"Seiten gefunden" +"Der Datenbank-Cluster wurde mit TOAST_MAX_CHUNK_SIZE %d initialisiert, aber " +"der Server wurde mit TOAST_MAX_CHUNK_SIZE %d kompiliert." -#: commands/vacuumlazy.c:809 -#, c-format +#: access/transam/xlog.c:4858 msgid "" -"%.0f dead row versions cannot be removed yet.\n" -"There were %.0f unused item pointers.\n" -"%u pages are entirely empty.\n" -"%s." +"The database cluster was initialized without HAVE_INT64_TIMESTAMP but the " +"server was compiled with HAVE_INT64_TIMESTAMP." msgstr "" -"%.0f tote Zeilenversionen können noch nicht entfernt werden.\n" -"Es gibt %.0f unbenutzte Itemzeiger.\n" -"%u Seiten sind vollkommen leer.\n" -"%s." +"Der Datenbank-Cluster wurde ohne HAVE_INT64_TIMESTAMP initialisiert, aber " +"der Server wurde mit HAE_INT64_TIMESTAMP kompiliert." -#: commands/vacuumlazy.c:867 -#, c-format -msgid "\"%s\": removed %d row versions in %d pages" -msgstr "»%s«: %d Zeilenversionen in %d Seiten entfernt" +#: access/transam/xlog.c:4865 +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." -#: commands/vacuumlazy.c:870 commands/vacuumlazy.c:962 -#: commands/vacuumlazy.c:1087 -#, c-format -msgid "%s." -msgstr "%s." +#: access/transam/xlog.c:4874 +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." -#: commands/vacuumlazy.c:959 -#, c-format -msgid "scanned index \"%s\" to remove %d row versions" -msgstr "Index »%s« gelesen und %d Zeilenversionen entfernt" +#: access/transam/xlog.c:4881 +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." -#: commands/vacuumlazy.c:1001 -#, c-format -msgid "index \"%s\" now contains %.0f row versions in %u pages" -msgstr "Index »%s« enthält %.0f Zeilenversionen in %u Seiten" +#: access/transam/xlog.c:4890 +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." -#: commands/vacuumlazy.c:1005 -#, c-format +#: access/transam/xlog.c:4897 msgid "" -"%.0f index row versions were removed.\n" -"%u index pages have been deleted, %u are currently reusable.\n" -"%s." +"The database cluster was initialized with USE_FLOAT8_BYVAL but the server " +"was compiled without USE_FLOAT8_BYVAL." msgstr "" -"%.0f Indexzeilenversionen wurde entfernt.\n" -"%u Indexseiten wurden gelöscht, %u sind gegenwärtig wiederverwendbar.\n" -"%s." +"Der Datenbank-Cluster wurde mit USE_FLOAT8_BYVAL initialisiert, aber der " +"Server wurde ohne USE_FLOAT8_BYVAL kompiliert." -#: commands/vacuumlazy.c:1084 +#: access/transam/xlog.c:5222 #, c-format -msgid "\"%s\": truncated %u to %u pages" -msgstr "»%s«: von %u auf %u Seiten verkürzt" +msgid "could not write bootstrap transaction log file: %m" +msgstr "konnte Bootstrap-Transaktionslogdatei nicht schreiben: %m" -#: commands/variable.c:160 utils/misc/guc.c:8175 +#: access/transam/xlog.c:5228 #, c-format -msgid "Unrecognized key word: \"%s\"." -msgstr "Unbekanntes Schlüsselwort: »%s«." - -#: commands/variable.c:172 -msgid "Conflicting \"datestyle\" specifications." -msgstr "Widersprüchliche »datestyle«-Angaben." - -#: commands/variable.c:328 -msgid "Cannot specify months in time zone interval." -msgstr "Im Zeitzonenintervall können keine Monate angegeben werden." +msgid "could not fsync bootstrap transaction log file: %m" +msgstr "konnte Bootstrap-Transaktionslogdatei nicht fsyncen: %m" -#: commands/variable.c:334 -msgid "Cannot specify days in time zone interval." -msgstr "Im Zeitzonenintervall können keine Tage angegeben werden." +#: access/transam/xlog.c:5233 +#, c-format +msgid "could not close bootstrap transaction log file: %m" +msgstr "konnte Bootstrap-Transaktionslogdatei nicht schließen: %m" -#: commands/variable.c:378 commands/variable.c:517 +#: access/transam/xlog.c:5300 #, c-format -msgid "time zone \"%s\" appears to use leap seconds" -msgstr "Zeitzone »%s« verwendet anscheinend Schaltsekunden" +msgid "could not open recovery command file \"%s\": %m" +msgstr "konnte Recovery-Kommandodatei »%s« nicht öffnen: %m" -#: commands/variable.c:380 commands/variable.c:519 -msgid "PostgreSQL does not support leap seconds." -msgstr "PostgreSQL unterstützt keine Schaltsekunden." +#: access/transam/xlog.c:5354 +#, c-format +msgid "recovery_target_timeline is not a valid number: \"%s\"" +msgstr "recovery_target_timeline ist keine gültige Zahl: »%s«" -#: commands/variable.c:582 -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" +#: access/transam/xlog.c:5370 +#, c-format +msgid "recovery_target_xid is not a valid number: \"%s\"" +msgstr "recovery_target_xid ist keine gültige Zahl: »%s«" -#: commands/variable.c:589 -#, fuzzy -msgid "transaction read-write mode must be set before any query" -msgstr "" -"kann den Read/Write-Modus einer Transaktion nicht während der " -"Wiederherstellung setzen" +#: access/transam/xlog.c:5414 +#, c-format +msgid "recovery_target_name is too long (maximum %d characters)" +msgstr "recovery_target_name ist zu lang (maximal %d Zeichen)" -#: commands/variable.c:595 -msgid "cannot set transaction read-write mode during recovery" -msgstr "" -"kann den Read/Write-Modus einer Transaktion nicht während der " -"Wiederherstellung setzen" +#: access/transam/xlog.c:5461 +#, c-format +msgid "unrecognized recovery parameter \"%s\"" +msgstr "unbekannter Recovery-Parameter »%s«" -#: commands/variable.c:642 -msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query" +#: access/transam/xlog.c:5472 +#, c-format +msgid "" +"recovery command file \"%s\" specified neither primary_conninfo nor " +"restore_command" msgstr "" -"SET TRANSACTION ISOLATION LEVEL muss vor allen Anfragen aufgerufen werden" +"Recovery-Kommandodatei »%s« hat weder primary_conninfo noch restore_command " +"angegeben" -#: commands/variable.c:649 -msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction" +#: access/transam/xlog.c:5474 +msgid "" +"The database server will regularly poll the pg_xlog subdirectory to check " +"for files placed there." msgstr "" -"SET TRANSACTION ISOLATION LEVEL kann nicht in einer Subtransaktion " -"aufgerufen werden" - -#: commands/variable.c:655 -#, fuzzy -msgid "cannot use serializable mode in a hot standby" -msgstr "initialisiere für Hot Standby" - -#: commands/variable.c:656 -#, fuzzy -msgid "You can use REPEATABLE READ instead." -msgstr "Sie könnten stattdessen EXECUTE ... INTO verwenden." +"Der Datenbankserver prüft das Unterverzeichnis pg_xlog regelmäßig auf dort " +"abgelegte Dateien." -#: commands/variable.c:704 -#, fuzzy +#: access/transam/xlog.c:5480 +#, c-format msgid "" -"SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction" +"recovery command file \"%s\" must specify restore_command when standby mode " +"is not enabled" msgstr "" -"SET TRANSACTION ISOLATION LEVEL kann nicht in einer Subtransaktion " -"aufgerufen werden" +"Recovery-Kommandodatei »%s« muss restore_command angeben, wenn der Standby-" +"Modus nicht eingeschaltet ist" -#: commands/variable.c:710 -#, fuzzy -msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query" -msgstr "" -"SET TRANSACTION ISOLATION LEVEL muss vor allen Anfragen aufgerufen werden" +#: access/transam/xlog.c:5500 +#, c-format +msgid "recovery target timeline %u does not exist" +msgstr "recovery_target_timeline %u existiert nicht" -#: commands/variable.c:792 -#, fuzzy, c-format -msgid "Conversion between %s and %s is not supported." -msgstr "Umwandlung zwischen %s und %s wird nicht unterstützt" +#: access/transam/xlog.c:5630 +msgid "archive recovery complete" +msgstr "Wiederherstellung aus Archiv abgeschlossen" -#: commands/variable.c:799 -msgid "Cannot change \"client_encoding\" now." -msgstr "" +#: access/transam/xlog.c:5748 +#, c-format +msgid "recovery stopping after commit of transaction %u, time %s" +msgstr "Wiederherstellung beendet nach Commit der Transaktion %u, Zeit %s" -#: commands/variable.c:969 +#: access/transam/xlog.c:5753 #, c-format -msgid "permission denied to set role \"%s\"" -msgstr "keine Berechtigung, um Rolle »%s« zu setzen" +msgid "recovery stopping before commit of transaction %u, time %s" +msgstr "Wiederherstellung beendet vor Commit der Transaktion %u, Zeit %s" -#: commands/view.c:143 -#, fuzzy, c-format -msgid "could not determine which collation to use for view column \"%s\"" -msgstr "" -"konnte den tatsächlichen Rückgabetyp der polymorphischen Funktion »%s« nicht " -"ermitteln" +#: access/transam/xlog.c:5761 +#, c-format +msgid "recovery stopping after abort of transaction %u, time %s" +msgstr "Wiederherstellung beendet nach Abbruch der Transaktion %u, Zeit %s" -#: commands/view.c:158 -msgid "view must have at least one column" -msgstr "Sicht muss mindestens eine Spalte haben" +#: access/transam/xlog.c:5766 +#, 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:5775 +#, c-format +msgid "recovery stopping at restore point \"%s\", time %s" +msgstr "Wiederherstellung beendet bei Restore-Punkt »%s«, Zeit %s" -#: commands/view.c:284 commands/view.c:296 -msgid "cannot drop columns from view" -msgstr "aus einer Sicht können keine Spalten gelöscht werden" +#: access/transam/xlog.c:5809 +msgid "recovery has paused" +msgstr "Wiederherstellung wurde pausiert" -#: commands/view.c:301 -#, c-format -msgid "cannot change name of view column \"%s\" to \"%s\"" -msgstr "kann Namen der Sichtspalte »%s« nicht in »%s« ändern" +#: access/transam/xlog.c:5810 +msgid "Execute pg_xlog_replay_resume() to continue." +msgstr "Führen Sie pg_xlog_replay_resume() aus um fortzusetzen." -#: commands/view.c:309 -#, 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" +#: access/transam/xlog.c:5853 access/transam/xlog.c:5875 +#: access/transam/xlog.c:5897 +msgid "must be superuser to control recovery" +msgstr "nur Superuser können die Wiederherstellung kontrollieren" -#: commands/view.c:447 -msgid "views must not contain SELECT INTO" -msgstr "Sichten dürfen kein SELECT INTO enthalten" +#: access/transam/xlog.c:5858 access/transam/xlog.c:5880 +#: access/transam/xlog.c:5902 +msgid "recovery is not in progress" +msgstr "Wiederherstellung läuft nicht" -#: commands/view.c:451 -msgid "views must not contain data-modifying statements in WITH" +#: access/transam/xlog.c:5859 access/transam/xlog.c:5881 +#: access/transam/xlog.c:5903 +msgid "Recovery control functions can only be executed during recovery." msgstr "" -"Sichten dürfen keine datenmodifizierenden Anweisungen in WITH enthalten" - -#: commands/view.c:479 -msgid "CREATE VIEW specifies more column names than columns" -msgstr "CREATE VIEW gibt mehr Spaltennamen als Spalten an" +"Wiederherstellungskontrollfunktionen können nur während der " +"Wiederherstellung ausgeführt werden." -#: commands/view.c:496 +#: access/transam/xlog.c:5996 #, c-format -msgid "view \"%s\" will be a temporary view" -msgstr "Sicht »%s« wird eine temporäre Sicht" +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)" -#: commands/view.c:504 -msgid "views cannot be unlogged because they do not have storage" +#: access/transam/xlog.c:6018 +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:6019 +msgid "" +"This happens if you temporarily set wal_level=minimal without taking a new " +"base backup." msgstr "" -"Sichten können nicht ungeloggt sein, weil sie keinen Speicherplatz verwenden" +"Das passiert, wenn vorübergehend wal_level=minimal gesetzt wurde, ohne ein " +"neues Base-Backup zu erzeugen." -#: commands/seclabel.c:58 -msgid "no security label providers have been loaded" +#: access/transam/xlog.c:6030 +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" -#: commands/seclabel.c:62 +#: access/transam/xlog.c:6031 msgid "" -"must specify provider when multiple security label providers have been loaded" +"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." -#: commands/seclabel.c:80 -#, fuzzy, c-format -msgid "security label provider \"%s\" is not loaded" -msgstr "Variable »%s« ist nicht deklariert" +#: access/transam/xlog.c:6079 +msgid "control file contains invalid data" +msgstr "Kontrolldatei enthält ungültige Daten" -#: commands/extension.c:147 commands/extension.c:2431 +#: access/transam/xlog.c:6083 #, c-format -msgid "extension \"%s\" does not exist" -msgstr "Erweiterung »%s« existiert nicht" +msgid "database system was shut down at %s" +msgstr "Datenbanksystem wurde am %s heruntergefahren" -#: commands/extension.c:246 commands/extension.c:255 commands/extension.c:267 -#: commands/extension.c:277 +#: access/transam/xlog.c:6087 #, c-format -msgid "invalid extension name: \"%s\"" -msgstr "ungültiger Erweiterungsname: »%s«" - -#: commands/extension.c:247 -msgid "Extension names must not be empty." -msgstr "Erweiterungsnamen dürfen nicht leer sein." +msgid "database system was shut down in recovery at %s" +msgstr "" +"Datenbanksystem wurde während der Wiederherstellung am %s heruntergefahren" -#: commands/extension.c:256 -msgid "Extension names must not contain \"--\"." -msgstr "Erweiterungsnamen dürfen nicht »--« enthalten." +#: access/transam/xlog.c:6091 +#, c-format +msgid "database system shutdown was interrupted; last known up at %s" +msgstr "" +"Datenbanksystem wurde beim Herunterfahren unterbrochen; letzte bekannte " +"Aktion am %s" -#: commands/extension.c:268 -msgid "Extension names must not begin or end with \"-\"." -msgstr "Erweiterungsnamen dürfen nicht mit »-« anfangen oder aufhören." +#: access/transam/xlog.c:6095 +#, c-format +msgid "database system was interrupted while in recovery at %s" +msgstr "Datenbanksystem wurde während der Wiederherstellung am %s unterbrochen" -#: commands/extension.c:278 -msgid "Extension names must not contain directory separator characters." -msgstr "Erweiterungsnamen dürfen keine Verzeichnistrennzeichen enthalten." +#: access/transam/xlog.c:6097 +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." -#: commands/extension.c:293 commands/extension.c:302 commands/extension.c:311 -#: commands/extension.c:321 +#: access/transam/xlog.c:6101 #, c-format -msgid "invalid extension version name: \"%s\"" -msgstr "ungültiger Erweiterungsversionsname: »%s«" +msgid "database system was interrupted while in recovery at log time %s" +msgstr "" +"Datenbanksystem wurde während der Wiederherstellung bei Logzeit %s " +"unterbrochen" -#: commands/extension.c:294 -msgid "Version names must not be empty." -msgstr "Versionsnamen dürfen nicht leer sein." +#: access/transam/xlog.c:6103 +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." -#: commands/extension.c:303 -msgid "Version names must not contain \"--\"." -msgstr "Versionsnamen dürfen nicht »--« enthalten." +#: access/transam/xlog.c:6107 +#, c-format +msgid "database system was interrupted; last known up at %s" +msgstr "Datenbanksystem wurde unterbrochen; letzte bekannte Aktion am %s" -#: commands/extension.c:312 -msgid "Version names must not begin or end with \"-\"." -msgstr "Versionsnamen dürfen nicht mit »-« anfangen oder aufhören." +#: access/transam/xlog.c:6156 +#, c-format +msgid "requested timeline %u is not a child of database system timeline %u" +msgstr "angeforderte Timeline %u ist kein Kind der Datenbanksystem-Timeline %u" -#: commands/extension.c:322 -msgid "Version names must not contain directory separator characters." -msgstr "Versionsnamen dürfen keine Verzeichnistrennzeichen enthalten." +#: access/transam/xlog.c:6174 +msgid "entering standby mode" +msgstr "Standby-Modus eingeschaltet" -#: commands/extension.c:472 +#: access/transam/xlog.c:6177 #, c-format -msgid "could not open extension control file \"%s\": %m" -msgstr "konnte Erweiterungskontrolldatei »%s« nicht öffnen: %m" +msgid "starting point-in-time recovery to XID %u" +msgstr "starte Point-in-Time-Recovery bis XID %u" -#: commands/extension.c:493 commands/extension.c:503 -#, fuzzy, c-format -msgid "parameter \"%s\" cannot be set in a secondary extension control file" -msgstr "Parameter »%s« kann nach Start der Verbindung nicht geändert werden" +#: access/transam/xlog.c:6181 +#, c-format +msgid "starting point-in-time recovery to %s" +msgstr "starte Point-in-Time-Recovery bis %s" -#: commands/extension.c:542 +#: access/transam/xlog.c:6185 #, c-format -msgid "\"%s\" is not a valid encoding name" -msgstr "»%s« ist kein gültiger Kodierungsname" +msgid "starting point-in-time recovery to \"%s\"" +msgstr "starte Point-in-Time-Recovery bis »%s«" -#: commands/extension.c:556 -#, fuzzy, c-format -msgid "parameter \"%s\" must be a list of extension names" -msgstr "Argument von Option »%s« muss eine Liste aus Spaltennamen sein" +#: access/transam/xlog.c:6189 +msgid "starting archive recovery" +msgstr "starte Wiederherstellung aus Archiv" -#: commands/extension.c:563 +#: access/transam/xlog.c:6211 access/transam/xlog.c:6251 #, c-format -msgid "unrecognized parameter \"%s\" in file \"%s\"" -msgstr "unbekannter Parameter »%s« in Datei »%s«" +msgid "checkpoint record is at %X/%X" +msgstr "Checkpoint-Eintrag ist bei %X/%X" -#: commands/extension.c:572 -#, fuzzy -msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true" -msgstr "Parameter »%s« kann nach Start der Verbindung nicht geändert werden" +#: access/transam/xlog.c:6225 +msgid "could not find redo location referenced by checkpoint record" +msgstr "" +"konnte die vom Checkpoint-Datensatz referenzierte Redo-Position nicht finden" -#: commands/extension.c:724 +#: access/transam/xlog.c:6226 access/transam/xlog.c:6233 +#, c-format msgid "" -"transaction control statements are not allowed within an extension script" +"If you are not restoring from a backup, try removing the file \"%s/" +"backup_label\"." msgstr "" +"Wenn Sie kein Backup wiederherstellen, versuchen Sie, die Datei »%s/" +"backup_label« zu löschen." -#: commands/extension.c:794 -#, fuzzy, c-format -msgid "permission denied to create extension \"%s\"" -msgstr "keine Berechtigung, um Tablespace »%s« zu erzeugen" - -#: commands/extension.c:796 -msgid "Must be superuser to create this extension." -msgstr "Nur Superuser können diese Erweiterung anlegen." - -#: commands/extension.c:800 -#, fuzzy, c-format -msgid "permission denied to update extension \"%s\"" -msgstr "keine Berechtigung, um Tablespace »%s« zu erzeugen" - -#: commands/extension.c:802 -#, fuzzy -msgid "Must be superuser to update this extension." -msgstr "Nur Superuser können Tablespaces anlegen." +#: access/transam/xlog.c:6232 +msgid "could not locate required checkpoint record" +msgstr "konnte den nötigen Checkpoint-Datensatz nicht finden" -#: commands/extension.c:1082 -#, fuzzy, c-format -msgid "" -"extension \"%s\" has no update path from version \"%s\" to version \"%s\"" -msgstr "Relation »%s« ist keine Basisrelation von Relation »%s«" +#: access/transam/xlog.c:6261 access/transam/xlog.c:6276 +msgid "could not locate a valid checkpoint record" +msgstr "konnte keinen gültigen Checkpoint-Datensatz finden" -#: commands/extension.c:1209 +#: access/transam/xlog.c:6270 #, c-format -msgid "extension \"%s\" already exists, skipping" -msgstr "Erweiterung »%s« existiert bereits, wird übersprungen" +msgid "using previous checkpoint record at %X/%X" +msgstr "verwende vorherigen Checkpoint-Eintrag bei %X/%X" -#: commands/extension.c:1216 +#: access/transam/xlog.c:6285 #, c-format -msgid "extension \"%s\" already exists" -msgstr "Erweiterung »%s« existiert bereits" +msgid "redo record is at %X/%X; shutdown %s" +msgstr "Redo-Eintrag ist bei %X/%X; Shutdown %s" -#: commands/extension.c:1227 -#, fuzzy -msgid "nested CREATE EXTENSION is not supported" -msgstr "LOCATION wird nicht mehr unterstützt" +#: access/transam/xlog.c:6289 +#, c-format +msgid "next transaction ID: %u/%u; next OID: %u" +msgstr "nächste Transaktions-ID: %u/%u; nächste OID: %u" -#: commands/extension.c:1282 commands/extension.c:2491 -#, fuzzy -msgid "version to install must be specified" -msgstr "Hostname muss angegeben werden\n" +#: access/transam/xlog.c:6293 +#, c-format +msgid "next MultiXactId: %u; next MultiXactOffset: %u" +msgstr "nächste MultiXactId: %u; nächster MultiXactOffset: %u" -#: commands/extension.c:1299 +#: access/transam/xlog.c:6296 #, c-format -msgid "FROM version must be different from installation target version \"%s\"" -msgstr "" +msgid "oldest unfrozen transaction ID: %u, in database %u" +msgstr "älteste nicht eingefrorene Transaktions-ID: %u, in Datenbank %u" -#: commands/extension.c:1354 -#, fuzzy, c-format -msgid "extension \"%s\" must be installed in schema \"%s\"" -msgstr "Relation »%s« ist bereits in Schema »%s«" +#: access/transam/xlog.c:6300 +msgid "invalid next transaction ID" +msgstr "ungültige nächste Transaktions-ID" -#: commands/extension.c:1424 commands/extension.c:2632 -#, fuzzy, c-format -msgid "required extension \"%s\" is not installed" -msgstr "Relation »%s«, auf die verwiesen wird, ist keine Tabelle" +#: access/transam/xlog.c:6328 +msgid "invalid redo in checkpoint record" +msgstr "ungültiges Redo im Checkpoint-Datensatz" -#: commands/extension.c:1593 -#, c-format -msgid "extension \"%s\" does not exist, skipping" -msgstr "Erweiterung »%s« existiert nicht, wird übersprungen" +#: access/transam/xlog.c:6339 +msgid "invalid redo record in shutdown checkpoint" +msgstr "ungültiger Redo-Datensatz im Shutdown-Checkpoint" -#: commands/extension.c:2101 +#: access/transam/xlog.c:6369 msgid "" -"pg_extension_config_dump() can only be called from a SQL script executed by " -"CREATE EXTENSION" +"database system was not properly shut down; automatic recovery in progress" msgstr "" +"Datenbanksystem wurde nicht richtig heruntergefahren; automatische " +"Wiederherstellung läuft" -#: commands/extension.c:2113 -#, c-format -msgid "OID %u does not refer to a table" -msgstr "OID %u bezieht sich nicht auf eine Tabelle" - -#: commands/extension.c:2118 -#, fuzzy, c-format -msgid "table \"%s\" is not a member of the extension being created" -msgstr "Rolle »%s« ist kein Mitglied der Rolle »%s«" - -#: commands/extension.c:2301 commands/extension.c:2360 -#, fuzzy, c-format -msgid "extension \"%s\" does not support SET SCHEMA" -msgstr "Zugriffsmethode »%s« unterstützt die Optionen ASC/DESC nicht" +#: access/transam/xlog.c:6448 +msgid "initializing for hot standby" +msgstr "initialisiere für Hot Standby" -#: commands/extension.c:2362 -#, fuzzy, c-format -msgid "%s is not in the extension's schema \"%s\"" -msgstr "Funktion %s existiert bereits in Schema »%s«" +#: access/transam/xlog.c:6573 +#, c-format +msgid "redo starts at %X/%X" +msgstr "Redo beginnt bei %X/%X" -#: commands/extension.c:2411 -msgid "nested ALTER EXTENSION is not supported" -msgstr "geschachteltes ALTER EXTENSION wird nicht unterstützt" +#: access/transam/xlog.c:6702 +#, c-format +msgid "redo done at %X/%X" +msgstr "Redo fertig bei %X/%X" -#: commands/extension.c:2502 -#, fuzzy, c-format -msgid "version \"%s\" of extension \"%s\" is already installed" -msgstr "Spalte »%s« von Relation »%s« existiert bereits" +#: access/transam/xlog.c:6707 access/transam/xlog.c:8318 +#, c-format +msgid "last completed transaction was at log time %s" +msgstr "letzte vollständige Transaktion war bei Logzeit %s" -#: commands/extension.c:2725 -#, fuzzy, c-format -msgid "%s is already a member of extension \"%s\"" -msgstr "Rolle »%s« ist schon Mitglied der Rolle »%s«" +#: access/transam/xlog.c:6715 +msgid "redo is not required" +msgstr "Redo nicht nötig" -#: commands/extension.c:2742 -#, fuzzy, c-format -msgid "%s is not a member of extension \"%s\"" -msgstr "Rolle »%s« ist kein Mitglied der Rolle »%s«" +#: access/transam/xlog.c:6763 +msgid "requested recovery stop point is before consistent recovery point" +msgstr "angeforderter Recovery-Endpunkt ist vor konsistentem Recovery-Punkt" -#: tcop/fastpath.c:109 tcop/fastpath.c:485 tcop/fastpath.c:615 -#, c-format -msgid "invalid argument size %d in function call message" -msgstr "ungültige Argumentgröße %d in Funktionsaufruf-Message" +#: access/transam/xlog.c:6772 +msgid "WAL ends before end of online backup" +msgstr "WAL endet vor dem Ende der Online-Sicherung" -#: 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 +#: access/transam/xlog.c:6773 msgid "" -"current transaction is aborted, commands ignored until end of transaction " -"block" +"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 "" -"aktuelle Transaktion wurde abgebrochen, Befehle werden bis zum Ende der " -"Transaktion ignoriert" +"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." -#: tcop/fastpath.c:331 -#, c-format -msgid "fastpath function call: \"%s\" (OID %u)" -msgstr "Fastpath-Funktionsaufruf: »%s« (OID %u)" +#: access/transam/xlog.c:6776 +msgid "WAL ends before consistent recovery point" +msgstr "WAL endet vor einem konsistenten Wiederherstellungspunkt" -#: tcop/fastpath.c:411 tcop/postgres.c:1087 tcop/postgres.c:1374 -#: tcop/postgres.c:1791 tcop/postgres.c:2008 +#: access/transam/xlog.c:6797 #, c-format -msgid "duration: %s ms" -msgstr "Dauer: %s ms" +msgid "selected new timeline ID: %u" +msgstr "gewählte neue Timeline-ID: %u" -#: tcop/fastpath.c:415 +#: access/transam/xlog.c:7047 #, c-format -msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" -msgstr "Dauer: %s ms Fastpath-Funktionsaufruf: »%s« (OID %u)" +msgid "consistent recovery state reached at %X/%X" +msgstr "konsistenter Wiederherstellungszustand erreicht bei %X/%X" -#: tcop/fastpath.c:453 tcop/fastpath.c:580 -#, 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" +#: access/transam/xlog.c:7225 +msgid "invalid primary checkpoint link in control file" +msgstr "ungültige primäre Checkpoint-Verknüpfung in Kontrolldatei" -#: tcop/fastpath.c:461 -#, c-format -msgid "function call message contains %d argument formats but %d arguments" -msgstr "Funktionsaufruf-Message enthält %d Argumentformate aber %d Argumente" +#: access/transam/xlog.c:7229 +msgid "invalid secondary checkpoint link in control file" +msgstr "ungültige sekundäre Checkpoint-Verknüpfung in Kontrolldatei" -#: tcop/fastpath.c:548 tcop/fastpath.c:631 -#, c-format -msgid "incorrect binary data format in function argument %d" -msgstr "falsches Binärdatenformat in Funktionsargument %d" +#: access/transam/xlog.c:7233 +msgid "invalid checkpoint link in backup_label file" +msgstr "ungültige Checkpoint-Verknüpfung in backup_label-Datei" -#: 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 "ungültiger Frontend-Message-Typ %d" +#: access/transam/xlog.c:7247 +msgid "invalid primary checkpoint record" +msgstr "ungültiger primärer Checkpoint-Datensatz" -#: tcop/postgres.c:858 -#, c-format -msgid "statement: %s" -msgstr "Anweisung: %s" +#: access/transam/xlog.c:7251 +msgid "invalid secondary checkpoint record" +msgstr "ungültiger sekundärer Checkpoint-Datensatz" -#: tcop/postgres.c:1092 -#, c-format -msgid "duration: %s ms statement: %s" -msgstr "Dauer: %s ms Anweisung: %s" +#: access/transam/xlog.c:7255 +msgid "invalid checkpoint record" +msgstr "ungültiger Checkpoint-Datensatz" -#: tcop/postgres.c:1142 -#, c-format -msgid "parse %s: %s" -msgstr "Parsen %s: %s" +#: access/transam/xlog.c:7266 +msgid "invalid resource manager ID in primary checkpoint record" +msgstr "ungültige Resource-Manager-ID im primären Checkpoint-Datensatz" -#: tcop/postgres.c:1200 -msgid "cannot insert multiple commands into a prepared statement" -msgstr "kann nicht mehrere Befehle in vorbereitete Anweisung einfügen" +#: access/transam/xlog.c:7270 +msgid "invalid resource manager ID in secondary checkpoint record" +msgstr "ungültige Resource-Manager-ID im sekundären Checkpoint-Datensatz" -#: tcop/postgres.c:1379 -#, c-format -msgid "duration: %s ms parse %s: %s" -msgstr "Dauer: %s ms Parsen %s: %s" +#: access/transam/xlog.c:7274 +msgid "invalid resource manager ID in checkpoint record" +msgstr "ungültige Resource-Manager-ID im Checkpoint-Datensatz" -#: tcop/postgres.c:1425 -#, c-format -msgid "bind %s to %s" -msgstr "Binden %s an %s" +#: access/transam/xlog.c:7286 +msgid "invalid xl_info in primary checkpoint record" +msgstr "ungültige xl_info im primären Checkpoint-Datensatz" -#: tcop/postgres.c:1444 tcop/postgres.c:2298 -msgid "unnamed prepared statement does not exist" -msgstr "unbenannte vorbereitete Anweisung existiert nicht" +#: access/transam/xlog.c:7290 +msgid "invalid xl_info in secondary checkpoint record" +msgstr "ungültige xl_info im sekundären Checkpoint-Datensatz" -#: tcop/postgres.c:1486 -#, c-format -msgid "bind message has %d parameter formats but %d parameters" -msgstr "Binden-Nachricht hat %d Parameterformate aber %d Parameter" +#: access/transam/xlog.c:7294 +msgid "invalid xl_info in checkpoint record" +msgstr "ungültige xl_info im Checkpoint-Datensatz" -#: tcop/postgres.c:1492 -#, c-format +#: access/transam/xlog.c:7306 +msgid "invalid length of primary checkpoint record" +msgstr "ungültige Länge des primären Checkpoint-Datensatzes" + +#: access/transam/xlog.c:7310 +msgid "invalid length of secondary checkpoint record" +msgstr "ungültige Länge des sekundären Checkpoint-Datensatzes" + +#: access/transam/xlog.c:7314 +msgid "invalid length of checkpoint record" +msgstr "ungültige Länge des Checkpoint-Datensatzes" + +#: access/transam/xlog.c:7476 +msgid "shutting down" +msgstr "fahre herunter" + +#: access/transam/xlog.c:7498 +msgid "database system is shut down" +msgstr "Datenbanksystem ist heruntergefahren" + +#: access/transam/xlog.c:7930 msgid "" -"bind message supplies %d parameters, but prepared statement \"%s\" requires " -"%d" +"concurrent transaction log activity while database system is shutting down" msgstr "" -"Binden-Nachricht enthält %d Parameter, aber vorbereitete Anweisung »%s« " -"erfordert %d" +"gleichzeitige Transaktionslog-Aktivität während das Datenbanksystem " +"herunterfährt" -#: tcop/postgres.c:1657 -#, c-format -msgid "incorrect binary data format in bind parameter %d" -msgstr "falsches Binärdatenformat in Binden-Parameter %d" +#: access/transam/xlog.c:8164 +msgid "skipping restartpoint, recovery has already ended" +msgstr "Restart-Punkt übersprungen, Wiederherstellung ist bereits beendet" -#: tcop/postgres.c:1796 +#: access/transam/xlog.c:8189 #, c-format -msgid "duration: %s ms bind %s%s%s: %s" -msgstr "Dauer: %s ms Binden %s%s%s: %s" +msgid "skipping restartpoint, already performed at %X/%X" +msgstr "Restart-Punkt wird übersprungen, schon bei %X/%X erledigt" -#: tcop/postgres.c:1844 tcop/postgres.c:2385 +#: access/transam/xlog.c:8316 #, c-format -msgid "portal \"%s\" does not exist" -msgstr "Portal »%s« existiert nicht" +msgid "recovery restart point at %X/%X" +msgstr "Recovery-Restart-Punkt bei %X/%X" -#: tcop/postgres.c:1931 tcop/postgres.c:2016 -msgid "execute fetch from" -msgstr "Ausführen Fetch von" +#: access/transam/xlog.c:8416 +#, c-format +msgid "restore point \"%s\" created at %X/%X" +msgstr "Restore-Punkt »%s« erzeugt bei %X/%X" -#: tcop/postgres.c:1932 tcop/postgres.c:2017 -msgid "execute" -msgstr "Ausführen" +#: access/transam/xlog.c:8516 +msgid "online backup was canceled, recovery cannot continue" +msgstr "" +"Online-Sicherung wurde storniert, Wiederherstellung kann nicht fortgesetzt " +"werden" -#: tcop/postgres.c:1929 +#: access/transam/xlog.c:8579 #, c-format -msgid "%s %s%s%s: %s" -msgstr "%s %s%s%s: %s" +msgid "unexpected timeline ID %u (after %u) in checkpoint record" +msgstr "unerwartete Timeline-ID %u (nach %u) im Checkpoint-Datensatz" -#: tcop/postgres.c:2013 +#: access/transam/xlog.c:8624 #, c-format -msgid "duration: %s ms %s %s%s%s: %s" -msgstr "Dauer: %s ms %s %s%s%s: %s" +msgid "unexpected timeline ID %u (should be %u) in checkpoint record" +msgstr "unerwartete Timeline-ID %u (sollte %u sein) im Checkpoint-Datensatz" -#: tcop/postgres.c:2139 +#: access/transam/xlog.c:8888 access/transam/xlog.c:8912 #, c-format -msgid "prepare: %s" -msgstr "Vorbereiten: %s" +msgid "could not fsync log file %u, segment %u: %m" +msgstr "konnte Logdatei %u, Segment %u nicht fsyncen: %m" -#: tcop/postgres.c:2202 +#: access/transam/xlog.c:8920 #, c-format -msgid "parameters: %s" -msgstr "Parameter: %s" - -#: tcop/postgres.c:2221 -msgid "abort reason: recovery conflict" -msgstr "Abbruchgrund: Konflikt bei Wiederherstellung" - -#: tcop/postgres.c:2237 -msgid "User was holding shared buffer pin for too long." -msgstr "Benutzer hat Shared-Buffer-Pin zu lange gehalten." +msgid "could not fsync write-through log file %u, segment %u: %m" +msgstr "konnte Write-Through-Logdatei %u, Segment %u nicht fsyncen: %m" -#: tcop/postgres.c:2240 -msgid "User was holding a relation lock for too long." -msgstr "Benutzer hat Relationssperre zu lange gehalten." +#: access/transam/xlog.c:8929 +#, c-format +msgid "could not fdatasync log file %u, segment %u: %m" +msgstr "konnte Logdatei %u, Segment %u nicht fdatasyncen: %m" -#: tcop/postgres.c:2243 -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." +#: access/transam/xlog.c:8967 access/transam/xlog.c:9254 +msgid "must be superuser or replication role to run a backup" +msgstr "nur Superuser und Replikationsrollen können ein Backup ausführen" -#: tcop/postgres.c:2246 -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." +#: access/transam/xlog.c:9018 access/transam/xlog.c:9300 +#: access/transam/xlog.c:9563 access/transam/xlog.c:9595 +#: access/transam/xlog.c:9636 access/transam/xlog.c:9669 +#: access/transam/xlog.c:9776 access/transam/xlog.c:9851 +msgid "recovery is in progress" +msgstr "Wiederherstellung läuft" -#: tcop/postgres.c:2249 storage/ipc/standby.c:490 -msgid "User transaction caused buffer deadlock with recovery." +#: access/transam/xlog.c:9019 access/transam/xlog.c:9301 +#: access/transam/xlog.c:9564 access/transam/xlog.c:9596 +#: access/transam/xlog.c:9637 access/transam/xlog.c:9670 +msgid "WAL control functions cannot be executed during recovery." msgstr "" -"Benutzertransaktion hat Verklemmung (Deadlock) mit Wiederherstellung " -"verursacht." - -#: tcop/postgres.c:2252 -msgid "User was connected to a database that must be dropped." -msgstr "Benutzer war mit einer Datenbank verbunden, die gelöscht werden muss." +"Während der Wiederherstellung können keine WAL-Kontrollfunktionen ausgeführt " +"werden." -#: tcop/postgres.c:2586 -msgid "terminating connection because of crash of another server process" -msgstr "breche Verbindung ab wegen Absturz eines anderen Serverprozesses" +#: access/transam/xlog.c:9024 access/transam/xlog.c:9306 +msgid "WAL level not sufficient for making an online backup" +msgstr "WAL-Level nicht ausreichend, um Online-Sicherung durchzuführen" -#: tcop/postgres.c:2587 +#: access/transam/xlog.c:9025 access/transam/xlog.c:9307 +#: access/transam/xlog.c:9602 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." +"wal_level must be set to \"archive\" or \"hot_standby\" at server start." 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." +"wal_level muss beim Serverstart auf »archive« oder »hot_standby« gesetzt " +"werden." -#: 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 "" -"In einem Moment sollten Sie wieder mit der Datenbank verbinden und Ihren " -"Befehl wiederholen können." +#: access/transam/xlog.c:9030 +#, c-format +msgid "backup label too long (max %d bytes)" +msgstr "Backup-Label zu lang (maximal %d Bytes)" -#: tcop/postgres.c:2701 -msgid "floating-point exception" -msgstr "Fließkommafehler" +#: access/transam/xlog.c:9071 access/transam/xlog.c:9174 +msgid "a backup is already in progress" +msgstr "ein Backup läuft bereits" + +#: access/transam/xlog.c:9072 +msgid "Run pg_stop_backup() and try again." +msgstr "Führen Sie pg_stop_backup() aus und versuchen Sie es nochmal." -#: tcop/postgres.c:2702 +#: access/transam/xlog.c:9175 +#, 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." +"If you're sure there is no backup in progress, remove file \"%s\" and try " +"again." 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:2870 -msgid "terminating autovacuum process due to administrator command" -msgstr "breche Autovacuum-Prozess ab aufgrund von Anweisung des Administrators" - -#: tcop/postgres.c:2876 tcop/postgres.c:2886 tcop/postgres.c:2937 -msgid "terminating connection due to conflict with recovery" -msgstr "breche Verbindung ab wegen Konflikt mit der Wiederherstellung" - -#: tcop/postgres.c:2892 -msgid "terminating connection due to administrator command" -msgstr "breche Verbindung ab aufgrund von Anweisung des Administrators" - -#: tcop/postgres.c:2907 -msgid "canceling authentication due to timeout" -msgstr "storniere Authentifizierung wegen Zeitüberschreitung" +"Wenn Sie sicher sind, dass noch kein Backup läuft, entfernen Sie die Datei " +"»%s« und versuchen Sie es noch einmal." -#: tcop/postgres.c:2916 -msgid "canceling statement due to statement timeout" -msgstr "storniere Anfrage wegen Zeitüberschreitung" +#: access/transam/xlog.c:9190 access/transam/xlog.c:9439 +#, c-format +msgid "could not write file \"%s\": %m" +msgstr "konnte Datei »%s« nicht schreiben: %m" -#: tcop/postgres.c:2925 -msgid "canceling autovacuum task" -msgstr "storniere Autovacuum-Aufgabe" +#: access/transam/xlog.c:9351 +msgid "a backup is not in progress" +msgstr "es läuft kein Backup" -#: tcop/postgres.c:2944 storage/ipc/standby.c:489 -msgid "canceling statement due to conflict with recovery" -msgstr "storniere Anfrage wegen Konflikt mit der Wiederherstellung" +#: access/transam/xlog.c:9390 access/transam/xlog.c:9921 +#: access/transam/xlog.c:9927 +#, c-format +msgid "invalid data in file \"%s\"" +msgstr "ungültige Daten in Datei »%s«" -#: tcop/postgres.c:2960 -msgid "canceling statement due to user request" -msgstr "storniere Anfrage wegen Benutzeraufforderung" +#: access/transam/xlog.c:9488 +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" -#: tcop/postgres.c:3041 tcop/postgres.c:3063 -msgid "stack depth limit exceeded" -msgstr "Grenze für Stacktiefe überschritten" +#: access/transam/xlog.c:9498 +#, 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)" -#: tcop/postgres.c:3042 tcop/postgres.c:3064 -#, fuzzy, c-format +#: access/transam/xlog.c:9500 msgid "" -"Increase the configuration parameter \"max_stack_depth\" (currently %dkB), " -"after ensuring the platform's stack depth limit is adequate." +"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 "" -"Erhöhen Sie den Konfigurationsparameter »max_stack_depth«, nachdem Sie " -"sichergestellt haben, dass die Stacktiefenbegrenzung Ihrer Plattform " -"ausreichend ist." +"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." -#: tcop/postgres.c:3080 -#, fuzzy, c-format -msgid "\"max_stack_depth\" must not exceed %ldkB." -msgstr "»max_stack_depth« darf %ldkB nicht überschreiten" +#: access/transam/xlog.c:9507 +msgid "pg_stop_backup complete, all required WAL segments have been archived" +msgstr "" +"pg_stop_backup abgeschlossen, alle benötigten WAL-Segmente wurden archiviert" -#: tcop/postgres.c:3082 +#: access/transam/xlog.c:9511 msgid "" -"Increase the platform's stack depth limit via \"ulimit -s\" or local " -"equivalent." +"WAL archiving is not enabled; you must ensure that all required WAL segments " +"are copied through other means to complete the backup" msgstr "" -"Erhöhen Sie die Stacktiefenbegrenzung Ihrer Plattform mit »ulimit -s« oder " -"der lokalen Entsprechung." +"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" -#: tcop/postgres.c:3417 -msgid "invalid command-line arguments for server process" -msgstr "ungültige Kommandozeilenargumente für Serverprozess" +#: access/transam/xlog.c:9558 +msgid "must be superuser to switch transaction log files" +msgstr "nur Superuser können Transaktionslogdateien umschalten" -#: tcop/postgres.c:3418 tcop/postgres.c:3424 -#, c-format -msgid "Try \"%s --help\" for more information." -msgstr "Versuchen Sie »%s --help« für weitere Informationen." +#: access/transam/xlog.c:9590 +msgid "must be superuser to create a restore point" +msgstr "nur Superuser können Restore-Punkte anlegen" -#: tcop/postgres.c:3422 -#, c-format -msgid "%s: invalid command-line arguments" -msgstr "%s: ungültige Kommandozeilenargumente" +#: access/transam/xlog.c:9601 +msgid "WAL level not sufficient for creating a restore point" +msgstr "WAL-Level nicht ausreichend, um Restore-Punkt anzulegen" -#: tcop/postgres.c:3521 +#: access/transam/xlog.c:9609 #, c-format -msgid "%s: no database nor user name specified" -msgstr "%s: weder Datenbankname noch Benutzername angegeben" +msgid "value too long for restore point (maximum %d characters)" +msgstr "Wert zu lang für Restore-Punkt (maximal %d Zeichen)" -#: tcop/postgres.c:4060 -#, c-format -msgid "invalid CLOSE message subtype %d" -msgstr "ungültiger Subtyp %d von CLOSE-Message" +#: access/transam/xlog.c:9777 +msgid "pg_xlogfile_name_offset() cannot be executed during recovery." +msgstr "" +"pg_xlogfile_name_offset() kann nicht während der Wiederherstellung " +"ausgeführt werden." -#: tcop/postgres.c:4093 +#: access/transam/xlog.c:9787 access/transam/xlog.c:9859 #, c-format -msgid "invalid DESCRIBE message subtype %d" -msgstr "ungültiger Subtyp %d von DESCRIBE-Message" +msgid "could not parse transaction log location \"%s\"" +msgstr "konnte Transaktionslogposition »%s« nicht interpretieren" -#: tcop/postgres.c:4327 -#, c-format -msgid "" -"disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s" -"%s" +#: access/transam/xlog.c:9852 +msgid "pg_xlogfile_name() cannot be executed during recovery." msgstr "" -"Verbindungsende: Sitzungszeit: %d:%02d:%02d.%03d Benutzer=%s Datenbank=%s " -"Host=%s%s%s" +"pg_xlogfile_name() kann nicht während der Wiederherstellung ausgeführt " +"werden." -#: tcop/pquery.c:660 +#: access/transam/xlog.c:9963 #, c-format -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:969 -msgid "cursor can only scan forward" -msgstr "Cursor kann nur vorwärts scannen" +msgid "xlog redo %s" +msgstr "xlog redo %s" -#: tcop/pquery.c:970 -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." +#: access/transam/xlog.c:10003 +msgid "online backup mode canceled" +msgstr "Online-Sicherungsmodus storniert" -#. translator: %s is name of a SQL command, eg CREATE -#: tcop/utility.c:253 +#: access/transam/xlog.c:10004 #, c-format -msgid "cannot execute %s in a read-only transaction" -msgstr "%s kann nicht in einer Read-Only-Transaktion ausgeführt werden" +msgid "\"%s\" was renamed to \"%s\"." +msgstr "»%s« wurde in »%s« umbenannt." -#. translator: %s is name of a SQL command, eg CREATE -#: tcop/utility.c:272 +#: access/transam/xlog.c:10011 +msgid "online backup mode was not canceled" +msgstr "Online-Sicherungsmodus wurde nicht storniert" + +#: access/transam/xlog.c:10012 #, c-format -msgid "cannot execute %s during recovery" -msgstr "%s kann nicht während der Wiederherstellung ausgeführt werden" +msgid "Could not rename \"%s\" to \"%s\": %m." +msgstr "Konnte »%s« nicht in »%s« umbenennen: %m." -#. translator: %s is name of a SQL command, eg PREPARE -#: tcop/utility.c:290 +#: access/transam/xlog.c:10525 access/transam/xlog.c:10547 #, c-format -msgid "cannot execute %s within security-restricted operation" -msgstr "kann %s nicht in einer sicherheitsbeschränkten Operation ausführen" +msgid "could not read from log file %u, segment %u, offset %u: %m" +msgstr "konnte nicht aus Logdatei %u, Segment %u, Position %u lesen: %m" -#: tcop/utility.c:1194 -msgid "must be superuser to do CHECKPOINT" -msgstr "nur Superuser können CHECKPOINT ausführen" +#: access/transam/xlog.c:10636 +msgid "received promote request" +msgstr "Anforderung zum Befördern empfangen" -#: executor/execCurrent.c:75 +#: access/transam/xlog.c:10649 #, c-format -msgid "cursor \"%s\" is not a SELECT query" -msgstr "Cursor »%s« ist keine SELECT-Anfrage" +msgid "trigger file found: %s" +msgstr "Triggerdatei gefunden: %s" -#: executor/execCurrent.c:81 +#: access/gin/ginentrypage.c:101 access/nbtree/nbtsort.c:483 +#: access/nbtree/nbtinsert.c:531 #, c-format -msgid "cursor \"%s\" is held from a previous transaction" -msgstr "Cursor »%s« wurde aus einer vorherigen Transaktion beibehalten" +msgid "index row size %lu exceeds maximum %lu for index \"%s\"" +msgstr "Größe %lu der Indexzeile überschreitet Maximum %lu für Index »%s«" -#: executor/execCurrent.c:113 -#, c-format -msgid "cursor \"%s\" has multiple FOR UPDATE/SHARE references to table \"%s\"" -msgstr "Cursor »%s« hat mehrere FOR UPDATE/SHARE-Verweise auf Tabelle »%s«" +#: access/gin/ginscan.c:401 +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" -#: executor/execCurrent.c:122 +#: access/gin/ginscan.c:402 #, c-format -msgid "" -"cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\"" -msgstr "Cursor »%s« hat keinen FOR UPDATE/SHARE-Verweis auf Tabelle »%s«" +msgid "To fix this, do REINDEX INDEX \"%s\"." +msgstr "Um das zu reparieren, führen Sie REINDEX INDEX \"%s\" aus." -#: executor/execCurrent.c:132 executor/execCurrent.c:178 +#: access/nbtree/nbtpage.c:161 access/nbtree/nbtpage.c:365 +#: parser/parse_utilcmd.c:1577 #, c-format -msgid "cursor \"%s\" is not positioned on a row" -msgstr "Cursor »%s« ist nicht auf eine Zeile positioniert" +msgid "index \"%s\" is not a btree" +msgstr "Index »%s« ist kein B-Tree" -#: executor/execCurrent.c:165 +#: access/nbtree/nbtpage.c:167 access/nbtree/nbtpage.c:371 #, c-format -msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\"" -msgstr "Cursor »%s« ist kein einfach aktualisierbarer Scan der Tabelle »%s«" +msgid "version mismatch in index \"%s\": file version %d, code version %d" +msgstr "" +"keine Versionsübereinstimmung in Index »%s«: Dateiversion %d, Code-Version %d" -#: executor/execCurrent.c:230 executor/execQual.c:1033 -#, c-format +#: access/nbtree/nbtsort.c:487 access/nbtree/nbtinsert.c:535 msgid "" -"type of parameter %d (%s) does not match that when preparing the plan (%s)" +"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 "" -"Typ von Parameter %d (%s) stimmt nicht mit dem überein, als der Plan " -"vorbereitet worden ist (%s)" +"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." -#: executor/execCurrent.c:242 executor/execQual.c:1045 +#: access/nbtree/nbtinsert.c:393 #, c-format -msgid "no value found for parameter %d" -msgstr "kein Wert für Parameter %d gefunden" - -#: executor/execMain.c:844 parser/analyze.c:2382 -#, fuzzy, c-format -msgid "SELECT FOR UPDATE/SHARE cannot be used with foreign table \"%s\"" -msgstr "SELECT FOR UPDATE/SHARE kann nicht auf einen Verbund angewendet werden" +msgid "duplicate key value violates unique constraint \"%s\"" +msgstr "doppelter Schlüsselwert verletzt Unique-Constraint »%s«" -#: executor/execMain.c:994 +#: access/nbtree/nbtinsert.c:395 #, c-format -msgid "cannot change sequence \"%s\"" -msgstr "kann Sequenz »%s« nicht ändern" +msgid "Key %s already exists." +msgstr "Schlüssel »%s« existiert bereits." -#: executor/execMain.c:1000 +#: access/nbtree/nbtinsert.c:457 #, c-format -msgid "cannot change TOAST relation \"%s\"" -msgstr "kann TOAST-Relation »%s« nicht ändern" +msgid "failed to re-find tuple within index \"%s\"" +msgstr "konnte Tupel mit Index »%s« nicht erneut finden" -#: executor/execMain.c:1010 -#, fuzzy, c-format -msgid "cannot insert into view \"%s\"" -msgstr "kann nicht in eine Sicht einfügen" +#: access/nbtree/nbtinsert.c:459 +msgid "This may be because of a non-immutable index expression." +msgstr "Das kann daran liegen, dass der Indexausdruck nicht »immutable« ist." -#: executor/execMain.c:1012 -#, fuzzy -msgid "" -"You need an unconditional ON INSERT DO INSTEAD rule or an INSTEAD OF INSERT " -"trigger." -msgstr "Sie benötigen eine ON INSERT DO INSTEAD Regel ohne Bedingung." +#: access/index/indexam.c:161 commands/tablecmds.c:222 +#: commands/tablecmds.c:2415 commands/indexcmds.c:1519 +#: catalog/objectaddress.c:391 +#, c-format +msgid "\"%s\" is not an index" +msgstr "»%s« ist kein Index" + +#: access/gist/gist.c:127 access/gist/gist.c:243 +msgid "unlogged GiST indexes are not supported" +msgstr "ungeloggte GiST-Indexe werden nicht unterstützt" -#: executor/execMain.c:1018 +#: access/gist/gist.c:728 access/gist/gistvacuum.c:271 #, c-format -msgid "cannot update view \"%s\"" -msgstr "kann Sicht »%s« nicht aktualisieren" +msgid "index \"%s\" contains an inner tuple marked as invalid" +msgstr "Index »%s« enthält ein inneres Tupel, das als ungültig markiert ist" -#: executor/execMain.c:1020 +#: access/gist/gist.c:730 access/gist/gistvacuum.c:273 msgid "" -"You need an unconditional ON UPDATE DO INSTEAD rule or an INSTEAD OF UPDATE " -"trigger." +"This is caused by an incomplete page split at crash recovery before " +"upgrading to PostgreSQL 9.1." msgstr "" -"Sie benötigen eine ON UPDATE DO INSTEAD Regel ohne Bedingung oder einen " -"INSTEAD OF UPDATE Trigger." +"Das kommt von einem unvollständigen Page-Split bei der Crash-Recovery vor " +"dem Upgrade auf PostgreSQL 9.1." -#: executor/execMain.c:1026 -#, fuzzy, c-format -msgid "cannot delete from view \"%s\"" -msgstr "kann nicht in einer Sicht löschen" +#: access/gist/gistsplit.c:446 +#, c-format +msgid "picksplit method for column %d of index \"%s\" failed" +msgstr "Picksplit-Methode für Spalte %d von Index »%s« fehlgeschlagen" -#: executor/execMain.c:1028 -#, fuzzy +#: access/gist/gistsplit.c:448 msgid "" -"You need an unconditional ON DELETE DO INSTEAD rule or an INSTEAD OF DELETE " -"trigger." -msgstr "Sie benötigen eine ON DELETE DO INSTEAD Regel ohne Bedingung." - -#: executor/execMain.c:1038 -#, fuzzy, c-format -msgid "cannot change foreign table \"%s\"" -msgstr "kann Relation »%s« nicht ändern" +"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 "" +"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." -#: executor/execMain.c:1044 +#: commands/lockcmds.c:93 #, c-format -msgid "cannot change relation \"%s\"" -msgstr "kann Relation »%s« nicht ändern" +msgid "could not obtain lock on relation \"%s\"" +msgstr "konnte Sperre für Relation »%s« nicht setzen" -#: executor/execMain.c:1515 +#: commands/lockcmds.c:98 #, c-format -msgid "null value in column \"%s\" violates not-null constraint" -msgstr "NULL-Wert in Spalte »%s« verletzt Not-Null-Constraint" +msgid "could not obtain lock on relation with OID %u" +msgstr "konnte Sperre für Relation mit OID %u nicht setzen" -#: executor/execMain.c:1527 +#: commands/lockcmds.c:122 catalog/namespace.c:285 parser/parse_relation.c:844 #, c-format -msgid "new row for relation \"%s\" violates check constraint \"%s\"" -msgstr "neue Zeile für Relation »%s« verletzt Check-Constraint »%s«" +msgid "relation \"%s.%s\" does not exist" +msgstr "Relation »%s.%s« existiert nicht" -#: 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 +#: commands/lockcmds.c:149 commands/tablecmds.c:204 commands/tablecmds.c:1140 +#: commands/tablecmds.c:2407 commands/tablecmds.c:3759 +#: commands/tablecmds.c:6736 commands/indexcmds.c:203 +#: commands/indexcmds.c:1551 catalog/toasting.c:93 catalog/objectaddress.c:405 #, 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:311 executor/execQual.c:339 -msgid "array subscript in assignment must not be null" -msgstr "Arrayindex in Zuweisung darf nicht NULL sein" +msgid "\"%s\" is not a table" +msgstr "»%s« ist keine Tabelle" -#: executor/execQual.c:635 executor/execQual.c:3905 +#: commands/define.c:67 commands/define.c:222 commands/define.c:254 +#: commands/define.c:282 #, c-format -msgid "attribute %d has wrong type" -msgstr "Attribut %d hat falschen Typ" +msgid "%s requires a parameter" +msgstr "%s erfordert einen Parameter" -#: executor/execQual.c:636 executor/execQual.c:3906 +#: commands/define.c:108 commands/define.c:119 commands/define.c:189 +#: commands/define.c:207 #, c-format -msgid "Table has type %s, but query expects %s." -msgstr "Tabelle hat Typ %s, aber Anfrage erwartet %s." +msgid "%s requires a numeric value" +msgstr "%s erfordert einen numerischen Wert" -#: 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 "" -"Zeilentyp der Tabelle und der von der Anfrage angegebene Zeilentyp stimmen " -"nicht überein" +#: commands/define.c:175 +#, c-format +msgid "%s requires a Boolean value" +msgstr "%s erfordert einen Boole'schen Wert" -#: executor/execQual.c:701 +#: commands/define.c:236 #, 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." +msgid "argument of %s must be a name" +msgstr "Argument von %s muss ein Name sein" -#: executor/execQual.c:720 executor/nodeModifyTable.c:93 +#: commands/define.c:266 #, 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." +msgid "argument of %s must be a type name" +msgstr "Argument von %s muss ein Typname sein" -#: executor/execQual.c:919 executor/execQual.c:1519 +#: commands/define.c:291 #, 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." +msgid "%s requires an integer value" +msgstr "%s erfordert einen ganzzahligen Wert" -#: executor/execQual.c:1198 parser/parse_func.c:91 parser/parse_func.c:323 -#: parser/parse_func.c:640 +#: commands/define.c:312 #, 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" +msgid "invalid argument for %s: \"%s\"" +msgstr "ungültiges Argument für %s: »%s«" -#: executor/execQual.c:1387 -msgid "functions and operators can take at most one set argument" -msgstr "Funktionen und Operatoren können höchstens ein Mengenargument haben" +#: commands/variable.c:172 +msgid "Conflicting \"datestyle\" specifications." +msgstr "Widersprüchliche »datestyle«-Angaben." -#: executor/execQual.c:1437 -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" +#: commands/variable.c:328 +msgid "Cannot specify months in time zone interval." +msgstr "Im Zeitzonenintervall können keine Monate angegeben werden." -#: 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 "" -"von Funktion zurückgegebene Zeile und von der Anfrage angegebene " -"zurückzugebende Zeile stimmen nicht überein" +#: commands/variable.c:334 +msgid "Cannot specify days in time zone interval." +msgstr "Im Zeitzonenintervall können keine Tage angegeben werden." -#: executor/execQual.c:1493 +#: commands/variable.c:380 commands/variable.c:519 #, 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." +msgid "time zone \"%s\" appears to use leap seconds" +msgstr "Zeitzone »%s« verwendet anscheinend Schaltsekunden" -#: executor/execQual.c:1509 -#, 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." +#: commands/variable.c:382 commands/variable.c:521 +msgid "PostgreSQL does not support leap seconds." +msgstr "PostgreSQL unterstützt keine Schaltsekunden." -#: executor/execQual.c:1745 executor/execQual.c:2170 -msgid "table-function protocol for materialize mode was not followed" +#: commands/variable.c:589 +msgid "cannot set transaction read-write mode inside a read-only transaction" msgstr "" -"Tabellenfunktionsprotokoll für Materialisierungsmodus wurde nicht befolgt" +"kann den Read/Write-Modus einer Transaktion nicht in einer Read-Only-" +"Transaktion setzen" -#: executor/execQual.c:1765 executor/execQual.c:2177 -#, c-format -msgid "unrecognized table-function returnMode: %d" -msgstr "unbekannter returnMode von Tabellenfunktion: %d" +#: commands/variable.c:596 +msgid "transaction read-write mode must be set before any query" +msgstr "" +"Read/Write-Modus einer Transaktion muss vor allen Anfragen gesetzt werden" -#: executor/execQual.c:2087 -msgid "function returning set of rows cannot return null value" +#: commands/variable.c:603 +msgid "cannot set transaction read-write mode during recovery" msgstr "" -"Funktion, die eine Zeilenmenge zurückgibt, kann keinen NULL-Wert zurückgeben" +"kann den Read/Write-Modus einer Transaktion nicht während der " +"Wiederherstellung setzen" -#: executor/execQual.c:2144 -msgid "rows returned by function are not all of the same row type" +#: commands/variable.c:652 +msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query" msgstr "" -"von Funktion zurückgegebene Zeilen haben nicht alle den selben Zeilentyp" +"SET TRANSACTION ISOLATION LEVEL muss vor allen Anfragen aufgerufen werden" -#: executor/execQual.c:2335 -msgid "IS DISTINCT FROM does not support set arguments" -msgstr "IS DISTINCT FROM unterstützt keine Mengenargumente" +#: commands/variable.c:659 +msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction" +msgstr "" +"SET TRANSACTION ISOLATION LEVEL kann nicht in einer Subtransaktion " +"aufgerufen werden" -#: executor/execQual.c:2412 -msgid "op ANY/ALL (array) does not support set arguments" -msgstr "op ANY/ALL (array) unterstützt keine Mengenargumente" +#: commands/variable.c:666 storage/lmgr/predicate.c:1570 +msgid "cannot use serializable mode in a hot standby" +msgstr "kann serialisierbaren Modus nicht in einem Hot Standby verwenden" -#: executor/execQual.c:2965 -msgid "cannot merge incompatible arrays" -msgstr "kann inkompatible Arrays nicht verschmelzen" +#: commands/variable.c:667 +msgid "You can use REPEATABLE READ instead." +msgstr "Sie können stattdessen REPEATABLE READ verwenden." -#: executor/execQual.c:2966 -#, c-format +#: commands/variable.c:715 msgid "" -"Array with element type %s cannot be included in ARRAY construct with " -"element type %s." +"SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction" msgstr "" -"Arrayelement mit Typ %s kann nicht in ARRAY-Konstrukt mit Elementtyp %s " -"verwendet werden." +"SET TRANSACTION [NOT] DEFERRABLE kann nicht in einer Subtransaktion " +"aufgerufen werden" -#: executor/execQual.c:3007 executor/execQual.c:3034 -#: utils/adt/arrayfuncs.c:542 -msgid "" -"multidimensional arrays must have array expressions with matching dimensions" +#: commands/variable.c:721 +msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query" msgstr "" -"mehrdimensionale Arrays müssen Arraysausdrücke mit gleicher Anzahl " -"Dimensionen haben" - -#: executor/execQual.c:3549 -msgid "NULLIF does not support set arguments" -msgstr "NULLIF unterstützt keine Mengenargumente" +"SET TRANSACTION [NOT] DEFERRABLE muss vor allen Anfragen aufgerufen werden" -#: executor/execQual.c:3779 utils/adt/domains.c:128 +#: commands/variable.c:803 #, c-format -msgid "domain %s does not allow null values" -msgstr "Domäne %s erlaubt keine NULL-Werte" +msgid "Conversion between %s and %s is not supported." +msgstr "Umwandlung zwischen %s und %s wird nicht unterstützt." -#: executor/execQual.c:3808 utils/adt/domains.c:164 +#: commands/variable.c:810 +msgid "Cannot change \"client_encoding\" now." +msgstr "»client_encoding« kann jetzt nicht geändert werden." + +#: commands/variable.c:980 #, c-format -msgid "value for domain %s violates check constraint \"%s\"" -msgstr "Wert für Domäne %s verletzt Check-Constraint »%s«" +msgid "permission denied to set role \"%s\"" +msgstr "keine Berechtigung, um Rolle »%s« zu setzen" -#: executor/execQual.c:4288 optimizer/util/clauses.c:608 -#: parser/parse_agg.c:164 -msgid "aggregate function calls cannot be nested" -msgstr "Aufrufe von Aggregatfunktionen können nicht geschachtelt werden" +#: commands/prepare.c:71 +msgid "invalid statement name: must not be empty" +msgstr "ungültiger Anweisungsname: darf nicht leer sein" -#: executor/execQual.c:4326 optimizer/util/clauses.c:682 -#: parser/parse_agg.c:211 -msgid "window function calls cannot be nested" -msgstr "Aufrufe von Fensterfunktionen können nicht geschachtelt werden" +#: commands/prepare.c:140 +msgid "utility statements cannot be prepared" +msgstr "Utility-Anweisungen können nicht vorbereitet werden" -#: executor/execQual.c:4538 -msgid "target type is not an array" -msgstr "Zieltyp ist kein Array" +#: commands/prepare.c:240 commands/prepare.c:247 commands/prepare.c:706 +msgid "prepared statement is not a SELECT" +msgstr "vorbereitete Anweisung ist kein SELECT" -#: executor/execQual.c:4651 +#: commands/prepare.c:314 #, c-format -msgid "ROW() column has type %s instead of type %s" -msgstr "ROW()-Spalte hat Typ %s statt Typ %s" +msgid "wrong number of parameters for prepared statement \"%s\"" +msgstr "falsche Anzahl Parameter für vorbereitete Anweisung »%s«" -#: executor/execQual.c:4786 utils/adt/arrayfuncs.c:3378 -#: utils/adt/rowtypes.c:922 +#: commands/prepare.c:316 #, c-format -msgid "could not identify a comparison function for type %s" -msgstr "konnte keine Vergleichsfunktion für Typ %s ermitteln" +msgid "Expected %d parameters but got %d." +msgstr "%d Parameter erwartet aber %d erhalten." -#: executor/execUtils.c:1304 -#, c-format -msgid "could not create exclusion constraint \"%s\"" -msgstr "konnte Exclusion-Constraint »%s« nicht erzeugen" +#: commands/prepare.c:345 +msgid "cannot use subquery in EXECUTE parameter" +msgstr "Unteranfragen können nicht in EXECUTE-Parameter verwendet werden" -#: executor/execUtils.c:1306 -#, c-format -msgid "Key %s conflicts with key %s." -msgstr "Schlüssel %s kollidiert mit Schlüssel %s." +#: commands/prepare.c:349 +msgid "cannot use aggregate function in EXECUTE parameter" +msgstr "Aggregatfunktionen können nicht in EXECUTE-Parameter verwendet werden" + +#: commands/prepare.c:353 +msgid "cannot use window function in EXECUTE parameter" +msgstr "Fensterfunktionen können nicht in EXECUTE-Parameter verwendet werden" -#: executor/execUtils.c:1311 +#: commands/prepare.c:366 #, c-format -msgid "conflicting key value violates exclusion constraint \"%s\"" -msgstr "kollidierender Schlüsselwert verletzt Exclusion-Constraint »%s«" +msgid "parameter $%d of type %s cannot be coerced to the expected type %s" +msgstr "" +"Parameter $%d mit Typ %s kann nicht in erwarteten Typ %s umgewandelt werden" + +#: commands/prepare.c:370 rewrite/rewriteHandler.c:1035 catalog/heap.c:2446 +#: parser/parse_target.c:490 parser/parse_target.c:736 +#: parser/parse_target.c:746 parser/parse_node.c:410 +msgid "You will need to rewrite or cast the expression." +msgstr "Sie müssen den Ausdruck umschreiben oder eine Typumwandlung vornehmen." -#: executor/execUtils.c:1313 +#: commands/prepare.c:467 #, c-format -msgid "Key %s conflicts with existing key %s." -msgstr "Schlüssel %s kollidiert mit vorhandenem Schlüssel %s." +msgid "prepared statement \"%s\" already exists" +msgstr "vorbereitete Anweisung »%s« existiert bereits" -#: executor/functions.c:195 +#: commands/prepare.c:525 #, 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" +msgid "prepared statement \"%s\" does not exist" +msgstr "vorbereitete Anweisung »%s« existiert nicht" -#. translator: %s is a SQL statement name -#: executor/functions.c:295 +#: commands/tablecmds.c:202 #, c-format -msgid "%s is not allowed in a SQL function" -msgstr "%s ist in SQL-Funktionen nicht erlaubt" +msgid "table \"%s\" does not exist" +msgstr "Tabelle »%s« existiert nicht" -#. translator: %s is a SQL statement name -#: executor/functions.c:302 executor/spi.c:1256 executor/spi.c:1891 +#: commands/tablecmds.c:203 #, c-format -msgid "%s is not allowed in a non-volatile function" -msgstr "%s ist in als nicht »volatile« markierten Funktionen nicht erlaubt" +msgid "table \"%s\" does not exist, skipping" +msgstr "Tabelle »%s« existiert nicht, wird übersprungen" -#: executor/functions.c:408 +#: commands/tablecmds.c:205 +msgid "Use DROP TABLE to remove a table." +msgstr "Verwenden Sie DROP TABLE, um eine Tabelle zu löschen." + +#: commands/tablecmds.c:208 #, c-format -msgid "" -"could not determine actual result type for function declared to return type " -"%s" -msgstr "" -"konnte tatsächlichen Ergebnistyp von Funktion mit deklarierten Rückgabetyp " -"%s nicht bestimmen" +msgid "sequence \"%s\" does not exist" +msgstr "Sequenz »%s« existiert nicht" -#: executor/functions.c:1146 +#: commands/tablecmds.c:209 #, c-format -msgid "SQL function \"%s\" statement %d" -msgstr "SQL-Funktion »%s« Anweisung %d" +msgid "sequence \"%s\" does not exist, skipping" +msgstr "Sequenz »%s« existiert nicht, wird übersprungen" -#: executor/functions.c:1172 +#: commands/tablecmds.c:211 +msgid "Use DROP SEQUENCE to remove a sequence." +msgstr "Verwenden Sie DROP SEQUENCE, um eine Sequenz zu löschen." + +#: commands/tablecmds.c:214 #, c-format -msgid "SQL function \"%s\" during startup" -msgstr "SQL-Funktion »%s« beim Start" +msgid "view \"%s\" does not exist" +msgstr "Sicht »%s« existiert nicht" -#: executor/functions.c:1332 executor/functions.c:1368 -#: executor/functions.c:1380 executor/functions.c:1493 -#: executor/functions.c:1526 executor/functions.c:1556 +#: commands/tablecmds.c:215 #, c-format -msgid "return type mismatch in function declared to return %s" -msgstr "Rückgabetyp von Funktion stimmt nicht überein; deklariert als %s" +msgid "view \"%s\" does not exist, skipping" +msgstr "Sicht »%s« existiert nicht, wird übersprungen" -#: executor/functions.c:1334 -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." +#: commands/tablecmds.c:216 commands/tablecmds.c:2184 +#: commands/tablecmds.c:2439 commands/tablecmds.c:3774 +#: commands/tablecmds.c:9081 commands/view.c:181 catalog/objectaddress.c:412 +#, c-format +msgid "\"%s\" is not a view" +msgstr "»%s« ist keine Sicht" -#: executor/functions.c:1370 -msgid "Final statement must return exactly one column." -msgstr "Die letzte Anweisung muss genau eine Spalte zurückgeben." +#: commands/tablecmds.c:217 +msgid "Use DROP VIEW to remove a view." +msgstr "Verwenden Sie DROP VIEW, um eine Sicht zu löschen." -#: executor/functions.c:1382 +#: commands/tablecmds.c:220 parser/parse_utilcmd.c:1505 #, c-format -msgid "Actual return type is %s." -msgstr "Eigentlicher Rückgabetyp ist %s." - -#: executor/functions.c:1495 -msgid "Final statement returns too many columns." -msgstr "Die letzte Anweisung gibt zu viele Spalten zurück." +msgid "index \"%s\" does not exist" +msgstr "Index »%s« existiert nicht" -#: executor/functions.c:1528 +#: commands/tablecmds.c:221 #, c-format -msgid "Final statement returns %s instead of %s at column %d." -msgstr "Die letzte Anweisung ergibt %s statt %s in Spalte %d." +msgid "index \"%s\" does not exist, skipping" +msgstr "Index »%s« existiert nicht, wird übersprungen" -#: executor/functions.c:1558 -msgid "Final statement returns too few columns." -msgstr "Die letzte Anweisung gibt zu wenige Spalten zurück." +#: commands/tablecmds.c:223 +msgid "Use DROP INDEX to remove an index." +msgstr "Verwenden Sie DROP INDEX, um einen Index zu löschen." -#: executor/functions.c:1607 +#: commands/tablecmds.c:227 commands/typecmds.c:666 #, c-format -msgid "return type %s is not supported for SQL functions" -msgstr "Rückgabetyp %s wird nicht von SQL-Funktionen unterstützt" +msgid "type \"%s\" does not exist, skipping" +msgstr "Typ »%s« existiert nicht, wird übersprungen" -#: executor/nodeAgg.c:1730 executor/nodeWindowAgg.c:1851 +#: commands/tablecmds.c:228 #, c-format -msgid "aggregate %u needs to have compatible input type and transition type" -msgstr "Aggregatfunktion %u muss kompatiblen Eingabe- und Übergangstyp haben" +msgid "\"%s\" is not a type" +msgstr "»%s« ist kein Typ" -#: executor/nodeHashjoin.c:806 executor/nodeHashjoin.c:836 +#: commands/tablecmds.c:229 +msgid "Use DROP TYPE to remove a type." +msgstr "Verwenden Sie DROP TYPE, um einen Typen zu löschen." + +#: commands/tablecmds.c:232 commands/tablecmds.c:8991 #, c-format -msgid "could not rewind hash-join temporary file: %m" -msgstr "" -"konnte Position in temporärer Datei für Hash-Verbund nicht auf Anfang " -"setzen: %m" +msgid "foreign table \"%s\" does not exist" +msgstr "Fremdtabelle »%s« existiert nicht" -#: executor/nodeHashjoin.c:871 executor/nodeHashjoin.c:877 +#: commands/tablecmds.c:233 #, c-format -msgid "could not write to hash-join temporary file: %m" -msgstr "konnte nicht in temporäre Datei für Hash-Verbund schreiben: %m" +msgid "foreign table \"%s\" does not exist, skipping" +msgstr "Fremdtabelle »%s« existiert nicht, wird übersprungen" -#: executor/nodeHashjoin.c:911 executor/nodeHashjoin.c:921 +#: commands/tablecmds.c:234 commands/tablecmds.c:2190 +#: commands/tablecmds.c:2447 commands/tablecmds.c:3777 +#: commands/tablecmds.c:9089 catalog/objectaddress.c:419 #, c-format -msgid "could not read from hash-join temporary file: %m" -msgstr "konnte nicht aus temporärer Datei für Hash-Verbund lesen: %m" +msgid "\"%s\" is not a foreign table" +msgstr "»%s« ist keine Fremdtabelle" -#: executor/nodeLimit.c:253 -msgid "OFFSET must not be negative" -msgstr "OFFSET darf nicht negativ sein" +#: commands/tablecmds.c:235 +msgid "Use DROP FOREIGN TABLE to remove a foreign table." +msgstr "Verwenden Sie DROP FOREIGN TABLE, um eine Fremdtabelle zu löschen." -#: executor/nodeLimit.c:280 -msgid "LIMIT must not be negative" -msgstr "LIMIT darf nicht negativ sein" +#: commands/tablecmds.c:432 executor/execMain.c:2411 +msgid "ON COMMIT can only be used on temporary tables" +msgstr "ON COMMIT kann nur mit temporären Tabellen verwendet werden" -#: executor/nodeMergejoin.c:1604 -msgid "RIGHT JOIN is only supported with merge-joinable join conditions" +#: commands/tablecmds.c:436 +msgid "constraints on foreign tables are not supported" +msgstr "Constraints für Fremdtabellen werden nicht unterstützt" + +#: commands/tablecmds.c:454 executor/execMain.c:2429 +msgid "cannot create temporary table within security-restricted operation" msgstr "" -"RIGHT JOIN wird nur für Merge-Verbund-fähige Verbundbedingungen unterstützt" +"kann temporäre Tabelle nicht in einer sicherheitsbeschränkten Operation " +"erzeugen" -#: executor/nodeMergejoin.c:1624 -msgid "FULL JOIN is only supported with merge-joinable join conditions" +#: commands/tablecmds.c:486 commands/tablecmds.c:7971 commands/indexcmds.c:268 +#: executor/execMain.c:2462 +msgid "only shared relations can be placed in pg_global tablespace" msgstr "" -"FULL JOIN wird nur für Merge-Verbund-fähige Verbundbedingungen unterstützt" +"nur geteilte Relationen können in den Tablespace »pg_global« gelegt werden" -#: executor/nodeModifyTable.c:83 -msgid "Query has too many columns." -msgstr "Anfrage hat zu viele Spalten." +#: commands/tablecmds.c:552 commands/tablecmds.c:4285 +msgid "default values on foreign tables are not supported" +msgstr "Vorgabewerte für Fremdtabellen werden nicht unterstützt" -#: executor/nodeModifyTable.c:110 +#: commands/tablecmds.c:932 #, c-format -msgid "Query provides a value for a dropped column at ordinal position %d." -msgstr "Anfrage liefert einen Wert für eine gelöschte Spalte auf Position %d." - -#: executor/nodeModifyTable.c:118 -msgid "Query has too few columns." -msgstr "Anfrage hat zu wenige Spalten." - -#: 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 "als Ausdruck verwendete Unteranfrage ergab mehr als eine Zeile" +msgid "truncate cascades to table \"%s\"" +msgstr "Truncate-Vorgang leert ebenfalls Tabelle »%s«" -#: executor/nodeWindowAgg.c:1238 -msgid "frame starting offset must not be null" -msgstr "Frame-Start-Offset darf nicht NULL sein" +#: commands/tablecmds.c:1163 +msgid "cannot truncate temporary tables of other sessions" +msgstr "kann temporäre Tabellen anderer Sitzungen nicht leeren" -#: executor/nodeWindowAgg.c:1251 -msgid "frame starting offset must not be negative" -msgstr "Frame-Start-Offset darf nicht negativ sein" +#: commands/tablecmds.c:1279 commands/tablecmds.c:1711 +#: commands/tablecmds.c:4210 catalog/heap.c:389 +#, c-format +msgid "tables can have at most %d columns" +msgstr "Tabellen können höchstens %d Spalten haben" -#: executor/nodeWindowAgg.c:1264 -msgid "frame ending offset must not be null" -msgstr "Frame-Ende-Offset darf nicht NULL sein" +#: commands/tablecmds.c:1330 commands/copy.c:3799 commands/trigger.c:616 +#: parser/parse_target.c:914 parser/parse_target.c:925 +#, c-format +msgid "column \"%s\" specified more than once" +msgstr "Spalte »%s« mehrmals angegeben" -#: executor/nodeWindowAgg.c:1277 -msgid "frame ending offset must not be negative" -msgstr "Frame-Ende-Offset darf nicht negativ sein" +#: commands/tablecmds.c:1365 parser/parse_utilcmd.c:623 +#: parser/parse_utilcmd.c:1717 +#, c-format +msgid "inherited relation \"%s\" is not a table" +msgstr "geerbte Relation »%s« ist keine Tabelle" -#: executor/spi.c:210 -msgid "transaction left non-empty SPI stack" -msgstr "Transaktion ließ nicht-leeren SPI-Stack zurück" +#: commands/tablecmds.c:1372 commands/tablecmds.c:8203 +#, c-format +msgid "cannot inherit from temporary relation \"%s\"" +msgstr "von temporärer Relation »%s« kann nicht geerbt werden" -#: executor/spi.c:211 executor/spi.c:275 -msgid "Check for missing \"SPI_finish\" calls." -msgstr "Prüfen Sie, ob Aufrufe von »SPI_finish« fehlen." +#: commands/tablecmds.c:1380 commands/tablecmds.c:8211 +msgid "cannot inherit from temporary relation of another session" +msgstr "von temporärer Relation einer anderen Sitzung kann nicht geerbt werden" -#: executor/spi.c:274 -msgid "subtransaction left non-empty SPI stack" -msgstr "Subtransaktion ließ nicht-leeren SPI-Stack zurück" +#: commands/tablecmds.c:1396 commands/tablecmds.c:8245 +#, c-format +msgid "relation \"%s\" would be inherited from more than once" +msgstr "von der Relation »%s« würde mehrmals geerbt werden" -#: executor/spi.c:1137 -msgid "cannot open multi-query plan as cursor" -msgstr "Plan mit mehreren Anfragen kann nicht als Cursor geöffnet werden" +#: commands/tablecmds.c:1444 +#, c-format +msgid "merging multiple inherited definitions of column \"%s\"" +msgstr "geerbte Definitionen von Spalte »%s« werden zusammengeführt" -#. translator: %s is name of a SQL command, eg INSERT -#: executor/spi.c:1142 +#: commands/tablecmds.c:1452 #, c-format -msgid "cannot open %s query as cursor" -msgstr "%s kann nicht als Cursor geöffnet werden" +msgid "inherited column \"%s\" has a type conflict" +msgstr "geerbte Spalte »%s« hat Typkonflikt" -#: 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 wird nicht unterstützt" +#: commands/tablecmds.c:1454 commands/tablecmds.c:1475 +#: commands/tablecmds.c:1656 commands/tablecmds.c:1678 +#: parser/parse_coerce.c:1540 parser/parse_coerce.c:1560 +#: parser/parse_coerce.c:1605 parser/parse_param.c:217 +#, c-format +msgid "%s versus %s" +msgstr "%s gegen %s" -#: executor/spi.c:1234 parser/analyze.c:2206 -msgid "Scrollable cursors must be READ ONLY." -msgstr "Scrollbare Cursor müssen READ ONLY sein." +#: commands/tablecmds.c:1461 +#, c-format +msgid "inherited column \"%s\" has a collation conflict" +msgstr "geerbte Spalte »%s« hat Sortierfolgenkonflikt" -#: executor/spi.c:2157 +#: commands/tablecmds.c:1463 commands/tablecmds.c:1666 +#: commands/tablecmds.c:4154 #, c-format -msgid "SQL statement \"%s\"" -msgstr "SQL-Anweisung »%s«" +msgid "\"%s\" versus \"%s\"" +msgstr "»%s« gegen »%s«" -#: foreign/foreign.c:198 +#: commands/tablecmds.c:1473 #, c-format -msgid "user mapping not found for \"%s\"" -msgstr "Benutzerabbildung für »%s« nicht gefunden" +msgid "inherited column \"%s\" has a storage parameter conflict" +msgstr "geerbte Spalte »%s« hat einen Konflikt bei einem Storage-Parameter" -#: foreign/foreign.c:321 -#, fuzzy, c-format -msgid "foreign-data wrapper \"%s\" has no handler" -msgstr "Fremddaten-Wrapper »%s« existiert nicht" +#: commands/tablecmds.c:1581 parser/parse_utilcmd.c:776 +#: parser/parse_utilcmd.c:1154 parser/parse_utilcmd.c:1230 +msgid "cannot convert whole-row table reference" +msgstr "kann Verweis auf ganze Zeile der Tabelle nicht umwandeln" -#: foreign/foreign.c:489 +#: commands/tablecmds.c:1582 parser/parse_utilcmd.c:777 #, c-format -msgid "invalid option \"%s\"" -msgstr "ungültige Option »%s«" +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«." -#: foreign/foreign.c:490 +#: commands/tablecmds.c:1646 #, c-format -msgid "Valid options in this context are: %s" -msgstr "Gültige Optionen in diesem Zusammenhang sind: %s" +msgid "merging column \"%s\" with inherited definition" +msgstr "Spalte »%s« wird mit geerbter Definition zusammengeführt" -#: lib/stringinfo.c:267 +#: commands/tablecmds.c:1654 #, 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." +msgid "column \"%s\" has a type conflict" +msgstr "für Spalte »%s« besteht ein Typkonflikt" -#: libpq/auth.c:265 +#: commands/tablecmds.c:1664 #, c-format -msgid "authentication failed for user \"%s\": host rejected" -msgstr "Authentifizierung für Benutzer »%s« fehlgeschlagen: Host abgelehnt" +msgid "column \"%s\" has a collation conflict" +msgstr "für Spalte »%s« besteht ein Sortierfolgenkonflikt" -#: libpq/auth.c:268 +#: commands/tablecmds.c:1676 #, c-format -msgid "Kerberos 5 authentication failed for user \"%s\"" -msgstr "Kerberos-5-Authentifizierung für Benutzer »%s« fehlgeschlagen" +msgid "column \"%s\" has a storage parameter conflict" +msgstr "für Spalte »%s« besteht ein Konflikt bei einem Storage-Parameter" -#: libpq/auth.c:271 +#: commands/tablecmds.c:1728 #, c-format -msgid "\"trust\" authentication failed for user \"%s\"" -msgstr "»trust«-Authentifizierung für Benutzer »%s« fehlgeschlagen" +msgid "column \"%s\" inherits conflicting default values" +msgstr "Spalte »%s« erbt widersprüchliche Vorgabewerte" + +#: commands/tablecmds.c:1730 +msgid "To resolve the conflict, specify a default explicitly." +msgstr "Um den Konflikt zu lösen, geben Sie einen Vorgabewert ausdrücklich an." -#: libpq/auth.c:274 +#: commands/tablecmds.c:1777 #, c-format -msgid "Ident authentication failed for user \"%s\"" -msgstr "Ident-Authentifizierung für Benutzer »%s« fehlgeschlagen" +msgid "" +"check constraint name \"%s\" appears multiple times but with different " +"expressions" +msgstr "" +"Check-Constraint-Name »%s« erscheint mehrmals, aber mit unterschiedlichen " +"Ausdrücken" -#: libpq/auth.c:277 -#, fuzzy, c-format -msgid "Peer authentication failed for user \"%s\"" -msgstr "PAM-Authentifizierung für Benutzer »%s« fehlgeschlagen" +#: commands/tablecmds.c:1972 +msgid "cannot rename column of typed table" +msgstr "Spalte einer getypten Tabelle kann nicht umbenannt werden" -#: libpq/auth.c:281 +#: commands/tablecmds.c:1989 #, c-format -msgid "password authentication failed for user \"%s\"" -msgstr "Passwort-Authentifizierung für Benutzer »%s« fehlgeschlagen" +msgid "\"%s\" is not a table, view, composite type, index or foreign table" +msgstr "" +"»%s« ist weder Tabelle, Sicht, zusammengesetzter Typ, Index noch Fremdtabelle" -#: libpq/auth.c:286 +#: commands/tablecmds.c:2055 #, c-format -msgid "GSSAPI authentication failed for user \"%s\"" -msgstr "GSSAPI-Authentifizierung für Benutzer »%s« fehlgeschlagen" +msgid "inherited column \"%s\" must be renamed in child tables too" +msgstr "" +"vererbte Spalte »%s« muss ebenso in den abgeleiteten Tabellen umbenannt " +"werden" -#: libpq/auth.c:289 +#: commands/tablecmds.c:2087 #, c-format -msgid "SSPI authentication failed for user \"%s\"" -msgstr "SSPI-Authentifizierung für Benutzer »%s« fehlgeschlagen" +msgid "cannot rename system column \"%s\"" +msgstr "Systemspalte »%s« kann nicht umbenannt werden" -#: libpq/auth.c:292 +#: commands/tablecmds.c:2102 #, c-format -msgid "PAM authentication failed for user \"%s\"" -msgstr "PAM-Authentifizierung für Benutzer »%s« fehlgeschlagen" +msgid "cannot rename inherited column \"%s\"" +msgstr "kann vererbte Spalte »%s« nicht umbenennen" -#: libpq/auth.c:295 +#: commands/tablecmds.c:2113 commands/tablecmds.c:4198 #, c-format -msgid "LDAP authentication failed for user \"%s\"" -msgstr "LDAP-Authentifizierung für Benutzer »%s« fehlgeschlagen" +msgid "column \"%s\" of relation \"%s\" already exists" +msgstr "Spalte »%s« von Relation »%s« existiert bereits" + +#: commands/tablecmds.c:2202 commands/tablecmds.c:7449 +#: commands/tablecmds.c:9125 +msgid "Use ALTER TYPE instead." +msgstr "Verwenden Sie stattdessen ALTER TYPE." -#: libpq/auth.c:298 +#: commands/tablecmds.c:2249 catalog/index.c:772 catalog/heap.c:1013 #, c-format -msgid "certificate authentication failed for user \"%s\"" -msgstr "Zertifikatauthentifizierung für Benutzer »%s« fehlgeschlagen" +msgid "relation \"%s\" already exists" +msgstr "Relation »%s« existiert bereits" -#: libpq/auth.c:301 +#. translator: first %s is a SQL command, eg ALTER TABLE +#: commands/tablecmds.c:2325 #, c-format -msgid "RADIUS authentication failed for user \"%s\"" -msgstr "RADIUS-Authentifizierung für Benutzer »%s« fehlgeschlagen" +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" -#: libpq/auth.c:304 +#. translator: first %s is a SQL command, eg ALTER TABLE +#: commands/tablecmds.c:2334 #, c-format -msgid "authentication failed for user \"%s\": invalid authentication method" +msgid "cannot %s \"%s\" because it has pending trigger events" msgstr "" -"Authentifizierung für Benutzer »%s« fehlgeschlagen: ungültige " -"Authentifizierungsmethode" +"%s mit Relation »%s« nicht möglich, weil es anstehende Trigger-Ereignisse " +"dafür gibt" -#: libpq/auth.c:333 -msgid "missing or erroneous pg_hba.conf file" -msgstr "fehlende oder fehlerhafter pg_hba.conf-Datei" +#: commands/tablecmds.c:2431 +#, c-format +msgid "\"%s\" is not a composite type" +msgstr "»%s« ist kein zusammengesetzter Typ" -#: libpq/auth.c:334 -msgid "See server log for details." -msgstr "Einzelheiten finden Sie im Serverlog." +#: commands/tablecmds.c:3261 +#, c-format +msgid "cannot rewrite system relation \"%s\"" +msgstr "Systemrelation »%s« kann nicht neu geschrieben werden" -#: libpq/auth.c:364 -msgid "connection requires a valid client certificate" -msgstr "Verbindung erfordert ein gültiges Client-Zertifikat" +#: commands/tablecmds.c:3271 +msgid "cannot rewrite temporary tables of other sessions" +msgstr "kann temporäre Tabellen anderer Sitzungen nicht neu schreiben" -#: libpq/auth.c:408 libpq/auth.c:424 libpq/auth.c:461 libpq/auth.c:477 -msgid "SSL on" -msgstr "SSL an" +#: commands/tablecmds.c:3496 +#, c-format +msgid "rewriting table \"%s\"" +msgstr "schreibe Tabelle »%s« neu" -#: libpq/auth.c:408 libpq/auth.c:424 libpq/auth.c:461 libpq/auth.c:477 -msgid "SSL off" -msgstr "SSL aus" +#: commands/tablecmds.c:3500 +#, c-format +msgid "verifying table \"%s\"" +msgstr "überprüfe Tabelle »%s«" + +#: commands/tablecmds.c:3607 +#, c-format +msgid "column \"%s\" contains null values" +msgstr "Spalte »%s« enthält NULL-Werte" + +#: commands/tablecmds.c:3621 +#, c-format +msgid "check constraint \"%s\" is violated by some row" +msgstr "Check-Constraint »%s« wird von irgendeiner Zeile verletzt" + +#: commands/tablecmds.c:3762 commands/tablecmds.c:4714 +#, c-format +msgid "\"%s\" is not a table or index" +msgstr "»%s« ist keine Tabelle und kein Index" + +#: commands/tablecmds.c:3765 commands/trigger.c:196 commands/trigger.c:1114 +#: rewrite/rewriteDefine.c:257 +#, c-format +msgid "\"%s\" is not a table or view" +msgstr "»%s« ist keine Tabelle oder Sicht" -#: libpq/auth.c:406 +#: commands/tablecmds.c:3768 #, 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" +msgid "\"%s\" is not a table or foreign table" +msgstr "»%s« ist keine Tabelle oder Fremdtabelle" -#: libpq/auth.c:412 +#: commands/tablecmds.c:3771 #, 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«" +msgid "\"%s\" is not a table, composite type, or foreign table" +msgstr "»%s« ist weder Tabelle, Sicht, zusammengesetzter Typ noch Fremdtabelle" -#: libpq/auth.c:421 +#: commands/tablecmds.c:3781 #, 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" +msgid "\"%s\" is of the wrong type" +msgstr "»%s« hat den falschen Typ" -#: libpq/auth.c:428 +#: commands/tablecmds.c:3930 commands/tablecmds.c:3937 #, 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«" +msgid "cannot alter type \"%s\" because column \"%s.%s\" uses it" +msgstr "kann Typ »%s« nicht ändern, weil Spalte »%s.%s« ihn verwendet" -#: libpq/auth.c:459 +#: commands/tablecmds.c:3944 #, c-format msgid "" -"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s" -"\", %s" +"cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type" msgstr "" -"kein pg_hba.conf-Eintrag für Replikationsverbindung von Host »%s«, Benutzer " -"»%s«, %s" +"kann Fremdtabelle »%s« nicht ändern, weil Spalte »%s.%s« ihren Zeilentyp " +"verwendet" -#: libpq/auth.c:465 +#: commands/tablecmds.c:3951 #, c-format -msgid "" -"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\"" +msgid "cannot alter table \"%s\" because column \"%s.%s\" uses its row type" msgstr "" -"kein pg_hba.conf-Eintrag für Replikationsverbindung von Host »%s«, Benutzer " -"»%s«" +"kann Tabelle »%s« nicht ändern, weil Spalte »%s.%s« ihren Zeilentyp verwendet" -#: libpq/auth.c:474 +#: commands/tablecmds.c:4013 #, c-format -msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s" +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:4015 +msgid "Use ALTER ... CASCADE to alter the typed tables too." msgstr "" -"kein pg_hba.conf-Eintrag für Host »%s«, Benutzer »%s«, Datenbank »%s«, %s" +"Verwenden Sie ALTER ... CASCADE, um die getypten Tabellen ebenfalls zu " +"ändern." -#: libpq/auth.c:481 +#: commands/tablecmds.c:4059 #, 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«" +msgid "type %s is not a composite type" +msgstr "Typ %s ist kein zusammengesetzter Typ" + +#: commands/tablecmds.c:4085 +msgid "cannot add column to typed table" +msgstr "zu einer getypten Tabelle kann keine Spalte hinzugefügt werden" -#: libpq/auth.c:540 +#: commands/tablecmds.c:4146 commands/tablecmds.c:8399 #, c-format -msgid "could not enable credential reception: %m" -msgstr "konnte Empfang von Credentials nicht einschalten: %m" +msgid "child table \"%s\" has different type for column \"%s\"" +msgstr "abgeleitete Tabelle »%s« hat unterschiedlichen Typ für Spalte »%s«" -#: libpq/auth.c:560 libpq/hba.c:1109 -msgid "" -"MD5 authentication is not supported when \"db_user_namespace\" is enabled" +#: commands/tablecmds.c:4152 commands/tablecmds.c:8406 +#, c-format +msgid "child table \"%s\" has different collation for column \"%s\"" msgstr "" -"MD5-Authentifizierung wird nicht unterstützt, wenn »db_user_namespace« " -"angeschaltet ist" +"abgeleitete Tabelle »%s« hat unterschiedliche Sortierfolge für Spalte »%s«" -#: libpq/auth.c:684 +#: commands/tablecmds.c:4162 #, c-format -msgid "expected password response, got message type %d" -msgstr "Passwort-Antwort erwartet, Message-Typ %d empfangen" +msgid "child table \"%s\" has a conflicting \"%s\" column" +msgstr "abgeleitete Tabelle »%s« hat eine widersprüchliche Spalte »%s«" -#: libpq/auth.c:712 -msgid "invalid password packet size" -msgstr "ungültige Größe des Passwortpakets" +#: commands/tablecmds.c:4174 +#, c-format +msgid "merging definition of column \"%s\" for child \"%s\"" +msgstr "" +"Definition von Spalte »%s« für abgeleitete Tabelle »%s« wird zusammengeführt" -#: libpq/auth.c:716 -msgid "received password packet" -msgstr "Passwortpaket empfangen" +#: commands/tablecmds.c:4404 +msgid "column must be added to child tables too" +msgstr "Spalte muss ebenso in den abgeleiteten Tabellen hinzugefügt werden" -#: libpq/auth.c:774 +#: commands/tablecmds.c:4534 commands/tablecmds.c:4626 +#: commands/tablecmds.c:4671 commands/tablecmds.c:4767 +#: commands/tablecmds.c:4811 commands/tablecmds.c:4890 +#: commands/tablecmds.c:6633 #, c-format -msgid "Kerberos initialization returned error %d" -msgstr "Kerberos-Initialisierung ergab Fehler %d" +msgid "cannot alter system column \"%s\"" +msgstr "Systemspalte »%s« kann nicht geändert werden" -#: libpq/auth.c:784 +#: commands/tablecmds.c:4570 #, c-format -msgid "Kerberos keytab resolving returned error %d" -msgstr "Auflösung der Kerberos-Keytab ergab Fehler %d" +msgid "column \"%s\" is in a primary key" +msgstr "Spalte »%s« ist in einem Primärschlüssel" -#: libpq/auth.c:808 +#: commands/tablecmds.c:4741 #, c-format -msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d" -msgstr "Kerberos sname_to_principal(\"%s\", \"%s\") ergab Fehler %d" +msgid "statistics target %d is too low" +msgstr "Statistikziel %d ist zu niedrig" -#: libpq/auth.c:853 +#: commands/tablecmds.c:4749 #, c-format -msgid "Kerberos recvauth returned error %d" -msgstr "Kerberos recvauth ergab Fehler %d" +msgid "lowering statistics target to %d" +msgstr "setze Statistikziel auf %d herab" -#: libpq/auth.c:876 +#: commands/tablecmds.c:4871 #, c-format -msgid "Kerberos unparse_name returned error %d" -msgstr "Kerberos unparse_name ergab Fehler %d" +msgid "invalid storage type \"%s\"" +msgstr "ungültiger Storage-Typ »%s«" -#: libpq/auth.c:998 +#: commands/tablecmds.c:4902 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "column data type %s can only have storage PLAIN" +msgstr "Spaltendatentyp %s kann nur Storage-Typ PLAIN" -#: libpq/auth.c:1024 -msgid "GSSAPI is not supported in protocol version 2" -msgstr "GSSAPI wird in Protokollversion 2 nicht unterstützt" +#: commands/tablecmds.c:4932 +msgid "cannot drop column from typed table" +msgstr "aus einer getypten Tabelle können keine Spalten gelöscht werden" -#: libpq/auth.c:1079 +#: commands/tablecmds.c:4973 #, c-format -msgid "expected GSS response, got message type %d" -msgstr "GSS-Antwort erwartet, Message-Typ %d empfangen" - -#: libpq/auth.c:1142 -msgid "accepting GSS security context failed" -msgstr "Annahme des GSS-Sicherheitskontexts fehlgeschlagen" - -#: libpq/auth.c:1168 -msgid "retrieving GSS user name failed" -msgstr "Abfrage des GSS-Benutzernamens fehlgeschlagen" +msgid "column \"%s\" of relation \"%s\" does not exist, skipping" +msgstr "Spalte »%s« von Relation »%s« existiert nicht, wird übersprungen" -#: libpq/auth.c:1241 +#: commands/tablecmds.c:4986 #, c-format -msgid "SSPI error %x" -msgstr "SSPI-Fehler %x" +msgid "cannot drop system column \"%s\"" +msgstr "Systemspalte »%s« kann nicht gelöscht werden" -#: libpq/auth.c:1245 +#: commands/tablecmds.c:4993 #, c-format -msgid "%s (%x)" -msgstr "%s (%x)" - -#: libpq/auth.c:1285 -msgid "SSPI is not supported in protocol version 2" -msgstr "SSL wird in Protokollversion 2 nicht unterstützt" - -#: libpq/auth.c:1300 -msgid "could not acquire SSPI credentials" -msgstr "konnte SSPI-Credentials nicht erhalten" +msgid "cannot drop inherited column \"%s\"" +msgstr "geerbte Spalte »%s« kann nicht gelöscht werden" -#: libpq/auth.c:1317 +#: commands/tablecmds.c:5219 #, c-format -msgid "expected SSPI response, got message type %d" -msgstr "SSPI-Antwort erwartet, Message-Typ %d empfangen" +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«" -#: libpq/auth.c:1389 -msgid "could not accept SSPI security context" -msgstr "konnte SSPI-Sicherheitskontext nicht akzeptieren" +#: commands/tablecmds.c:5289 catalog/pg_constraint.c:645 catalog/heap.c:2296 +#, c-format +msgid "constraint \"%s\" for relation \"%s\" already exists" +msgstr "Constraint »%s« existiert bereits für Relation »%s«" -#: libpq/auth.c:1445 -msgid "could not get token from SSPI security context" -msgstr "konnte kein Token vom SSPI-Sicherheitskontext erhalten" +#: commands/tablecmds.c:5413 +msgid "constraint must be added to child tables too" +msgstr "Constraint muss ebenso in den abgeleiteten Tabellen hinzugefügt werden" -#: libpq/auth.c:1689 +#: commands/tablecmds.c:5481 commands/sequence.c:1425 #, c-format -msgid "could not create socket for Ident connection: %m" -msgstr "konnte Socket für Ident-Verbindung nicht erzeugen: %m" +msgid "referenced relation \"%s\" is not a table" +msgstr "Relation »%s«, auf die verwiesen wird, ist keine Tabelle" -#: libpq/auth.c:1704 -#, c-format -msgid "could not bind to local address \"%s\": %m" -msgstr "konnte nicht mit lokaler Adresse »%s« verbinden: %m" +#: commands/tablecmds.c:5504 +msgid "constraints on permanent tables may reference only permanent tables" +msgstr "" +"Constraints für permanente Tabellen dürfen nur auf permanente Tabellen " +"verweisen" -#: libpq/auth.c:1716 -#, 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" +#: commands/tablecmds.c:5511 +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" -#: libpq/auth.c:1736 -#, c-format -msgid "could not send query to Ident server at address \"%s\", port %s: %m" +#: commands/tablecmds.c:5517 +msgid "constraints on temporary tables may reference only temporary tables" msgstr "" -"konnte Anfrage an Ident-Server auf Adresse »%s«, Port %s nicht senden: %m" +"Constraints für temporäre Tabellen dürfen nur auf temporäre Tabellen " +"verweisen" -#: libpq/auth.c:1751 -#, c-format +#: commands/tablecmds.c:5521 msgid "" -"could not receive response from Ident server at address \"%s\", port %s: %m" +"constraints on temporary tables must involve temporary tables of this session" msgstr "" -"konnte Antwort von Ident-Server auf Adresse »%s«, Port %s nicht empfangen: %m" +"Constraints für temporäre Tabellen müssen temporäre Tabellen dieser Sitzung " +"beinhalten" -#: libpq/auth.c:1761 -#, c-format -msgid "invalidly formatted response from Ident server: \"%s\"" -msgstr "ungültig formatierte Antwort vom Ident-Server: »%s«" +#: commands/tablecmds.c:5582 +msgid "number of referencing and referenced columns for foreign key disagree" +msgstr "" +"Anzahl der Quell- und Zielspalten im Fremdschlüssel stimmt nicht überein" -#: libpq/auth.c:1802 libpq/auth.c:1830 libpq/auth.c:1856 libpq/auth.c:1930 +#: commands/tablecmds.c:5671 #, c-format -msgid "could not get peer credentials: %m" -msgstr "konnte Credentials von Gegenstelle nicht ermitteln: %m" +msgid "foreign key constraint \"%s\" cannot be implemented" +msgstr "Fremdschlüssel-Constraint »%s« kann nicht implementiert werden" -#: libpq/auth.c:1811 libpq/auth.c:1839 libpq/auth.c:1874 libpq/auth.c:1941 +#: commands/tablecmds.c:5674 #, c-format -msgid "local user with ID %d does not exist" -msgstr "lokaler Benutzer mit ID %d existiert nicht" +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." -#: libpq/auth.c:1864 +#: commands/tablecmds.c:5788 #, c-format -msgid "could not get effective UID from peer credentials: %m" -msgstr "konnte effektive UID nicht aus Peer-Credentials ermitteln: %m" - -#: libpq/auth.c:1950 -msgid "" -"Ident authentication is not supported on local connections on this platform" -msgstr "" -"Ident-Authentifizierung auf lokalen Verbindungen wird auf dieser Plattform " -"nicht unterstützt" - -#: libpq/auth.c:2031 libpq/auth.c:2303 libpq/auth.c:2663 -msgid "empty password returned by client" -msgstr "Client gab leeres Passwort zurück" +msgid "foreign key constraint \"%s\" of relation \"%s\" does not exist" +msgstr "Fremdschlüssel-Constraint »%s« von Relation »%s« existiert nicht" -#: libpq/auth.c:2041 +#: commands/tablecmds.c:5851 #, c-format -msgid "error from underlying PAM layer: %s" -msgstr "Fehler von der unteren PAM-Ebene: %s" +msgid "column \"%s\" referenced in foreign key constraint does not exist" +msgstr "Spalte »%s«, die im Fremdschlüssel verwendet wird, existiert nicht" -#: libpq/auth.c:2110 +#: commands/tablecmds.c:5856 #, c-format -msgid "could not create PAM authenticator: %s" -msgstr "konnte PAM-Authenticator nicht erzeugen: %s" +msgid "cannot have more than %d keys in a foreign key" +msgstr "Fremdschlüssel kann nicht mehr als %d Schlüssel haben" -#: libpq/auth.c:2121 +#: commands/tablecmds.c:5921 #, c-format -msgid "pam_set_item(PAM_USER) failed: %s" -msgstr "pam_set_item(PAM_USER) fehlgeschlagen: %s" +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" -#: libpq/auth.c:2132 +#: commands/tablecmds.c:5938 #, c-format -msgid "pam_set_item(PAM_CONV) failed: %s" -msgstr "pam_set_item(PAM_CONV) fehlgeschlagen: %s" +msgid "there is no primary key for referenced table \"%s\"" +msgstr "" +"in Tabelle »%s«, auf die verwiesen wird, gibt es keinen Primärschlüssel" -#: libpq/auth.c:2143 +#: commands/tablecmds.c:6090 #, c-format -msgid "pam_authenticate failed: %s" -msgstr "pam_authenticate fehlgeschlagen: %s" +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" -#: libpq/auth.c:2154 +#: commands/tablecmds.c:6095 #, c-format -msgid "pam_acct_mgmt failed: %s" -msgstr "pam_acct_mgmt fehlgeschlagen: %s" +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" -#: libpq/auth.c:2165 +#: commands/tablecmds.c:6146 #, c-format -msgid "could not release PAM authenticator: %s" -msgstr "konnte PAM-Authenticator nicht freigeben: %s" +msgid "validating foreign key constraint \"%s\"" +msgstr "validiere Fremdschlüssel-Constraint »%s«" -#: libpq/auth.c:2198 libpq/auth.c:2202 +#: commands/tablecmds.c:6442 #, c-format -msgid "could not initialize LDAP: error code %d" -msgstr "konnte LDAP nicht initialisieren: Fehlercode %d" +msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" +msgstr "geerbter Constraint »%s« von Relation »%s« kann nicht gelöscht werden" -#: libpq/auth.c:2212 +#: commands/tablecmds.c:6469 commands/tablecmds.c:6582 #, c-format -msgid "could not set LDAP protocol version: error code %d" -msgstr "konnte LDAP-Protokollversion nicht setzen: Fehlercode %d" - -#: libpq/auth.c:2241 -msgid "could not load wldap32.dll" -msgstr "konnte wldap32.dll nicht laden" +msgid "constraint \"%s\" of relation \"%s\" does not exist" +msgstr "Constraint »%s« von Relation »%s« existiert nicht" -#: libpq/auth.c:2249 -msgid "could not load function _ldap_start_tls_sA in wldap32.dll" -msgstr "konnte Funktion _ldap_start_tls_sA in wldap32.dll nicht laden" +#: commands/tablecmds.c:6475 +#, c-format +msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" +msgstr "Constraint »%s« von Relation »%s« existiert nicht, wird übersprungen" -#: libpq/auth.c:2250 -msgid "LDAP over SSL is not supported on this platform." -msgstr "LDAP über SSL wird auf dieser Plattform nicht unterstützt" +#: commands/tablecmds.c:6617 +msgid "cannot alter column type of typed table" +msgstr "Spaltentyp einer getypten Tabelle kann nicht geändert werden" -#: libpq/auth.c:2265 +#: commands/tablecmds.c:6640 #, c-format -msgid "could not start LDAP TLS session: error code %d" -msgstr "konnte LDAP-TLS-Sitzung nicht öffnen: Fehlercode %d" +msgid "cannot alter inherited column \"%s\"" +msgstr "kann vererbte Spalte »%s« nicht ändern" -#: libpq/auth.c:2287 -msgid "LDAP server not specified" -msgstr "LDAP-Server nicht angegeben" +#: commands/tablecmds.c:6682 +msgid "transform expression must not return a set" +msgstr "Umwandlungsausdruck kann keine Ergebnismenge zurückgeben" -#: libpq/auth.c:2339 -msgid "invalid character in user name for LDAP authentication" -msgstr "ungültiges Zeichen im Benutzernamen für LDAP-Authentifizierung" +#: commands/tablecmds.c:6688 +msgid "cannot use subquery in transform expression" +msgstr "Unteranfragen können in Umwandlungsausdrücken nicht verwendet werden" -#: libpq/auth.c:2354 -#, c-format -msgid "" -"could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": " -"error code %d" +#: commands/tablecmds.c:6692 +msgid "cannot use aggregate function in transform expression" msgstr "" -"erstes LDAP-Binden für ldapbinddn »%s« auf Server »%s« fehlgeschlagen: " -"Fehlercode %d" +"Aggregatfunktionen können in Umwandlungsausdrücken nicht verwendet werden" -#: libpq/auth.c:2379 -#, c-format -msgid "could not search LDAP for filter \"%s\" on server \"%s\": error code %d" +#: commands/tablecmds.c:6696 +msgid "cannot use window function in transform expression" msgstr "" -"konnte LDAP nicht mit Filter »%s« auf Server »%s« durchsuchen: Fehlercode %d" +"Fensterfunktionen können in Umwandlungsausdrücken nicht verwendet werden" -#: libpq/auth.c:2389 +#: commands/tablecmds.c:6715 #, c-format -msgid "LDAP search failed for filter \"%s\" on server \"%s\": no such user" -msgstr "" -"LDAP-Suche fehlgeschlagen für Filter »%s« auf Server »%s«: Benutzer " -"existiert nicht" +msgid "column \"%s\" cannot be cast to type %s" +msgstr "Spalte »%s« kann nicht in Typ %s umgewandelt werden" -#: libpq/auth.c:2393 +#: commands/tablecmds.c:6762 #, c-format -msgid "" -"LDAP search failed for filter \"%s\" on server \"%s\": user is not unique " -"(%ld matches)" +msgid "type of inherited column \"%s\" must be changed in child tables too" msgstr "" -"LDAP-Suche fehlgeschlagen für Filter »%s« auf Server »%s«: Benutzer ist " -"nicht eindeutig (%ld Treffer)" +"Typ der vererbten Spalte »%s« muss ebenso in den abgeleiteten Tabellen " +"geändert werden" -#: libpq/auth.c:2410 +#: commands/tablecmds.c:6843 #, 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" +msgid "cannot alter type of column \"%s\" twice" +msgstr "Typ der Spalte »%s« kann nicht zweimal geändert werden" -#: libpq/auth.c:2430 +#: commands/tablecmds.c:6879 #, c-format -msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s" +msgid "default for column \"%s\" cannot be cast to type %s" +msgstr "Vorgabewert der Spalte »%s« kann nicht in Typ %s umgewandelt werden" + +#: commands/tablecmds.c:7005 +msgid "cannot alter type of a column used by a view or rule" msgstr "" -"Losbinden fehlgeschlagen nach Suche nach Benutzer »%s« auf Server »%s«: %s" +"Typ einer Spalte, die von einer Sicht oder Regel verwendet wird, kann nicht " +"geändert werden" -#: libpq/auth.c:2467 +#: commands/tablecmds.c:7006 commands/tablecmds.c:7025 #, c-format -msgid "LDAP login failed for user \"%s\" on server \"%s\": error code %d" +msgid "%s depends on column \"%s\"" +msgstr "%s hängt von Spalte »%s« ab" + +#: commands/tablecmds.c:7024 +msgid "cannot alter type of a column used in a trigger definition" msgstr "" -"LDAP-Login fehlgeschlagen für Benutzer »%s« auf Server »%s«: Fehlercode %d" +"Typ einer Spalte, die in einer Trigger-Definition verwendet wird, kann nicht " +"geändert werden" -#: libpq/auth.c:2495 +#: commands/tablecmds.c:7417 #, 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" +msgid "cannot change owner of index \"%s\"" +msgstr "kann Eigentümer des Index »%s« nicht ändern" -#: libpq/auth.c:2619 -msgid "RADIUS server not specified" -msgstr "RADIUS-Server nicht angegeben" +#: commands/tablecmds.c:7419 +msgid "Change the ownership of the index's table, instead." +msgstr "Ändern Sie stattdessen den Eigentümer der Tabelle des Index." -#: libpq/auth.c:2626 -msgid "RADIUS secret not specified" -msgstr "RADIUS-Geheimnis nicht angegeben" +#: commands/tablecmds.c:7435 +#, c-format +msgid "cannot change owner of sequence \"%s\"" +msgstr "kann Eigentümer der Sequenz »%s« nicht ändern" -#: libpq/auth.c:2642 libpq/hba.c:1394 +#: commands/tablecmds.c:7437 commands/tablecmds.c:9115 #, c-format -msgid "could not translate RADIUS server name \"%s\" to address: %s" -msgstr "konnte RADIUS-Servername »%s« nicht in Adresse übersetzen: %s" +msgid "Sequence \"%s\" is linked to table \"%s\"." +msgstr "Sequenz »%s« ist mit Tabelle »%s« verknüpft." -#: libpq/auth.c:2670 -msgid "" -"RADIUS authentication does not support passwords longer than 16 characters" -msgstr "" -"RADIUS-Authentifizierung unterstützt keine Passwörter länger als 16 Zeichen" +#: commands/tablecmds.c:7458 commands/tablecmds.c:9133 +#, c-format +msgid "\"%s\" is not a table, view, sequence, or foreign table" +msgstr "»%s« ist keine Tabelle, Sicht, Sequenz oder Fremdtabelle" -#: libpq/auth.c:2681 -msgid "could not generate random encryption vector" -msgstr "konnte zufälligen Verschlüsselungsvektor nicht erzeugen" +#: commands/tablecmds.c:7743 commands/cluster.c:178 +#, c-format +msgid "index \"%s\" for table \"%s\" does not exist" +msgstr "Index »%s« für Tabelle »%s« existiert nicht" -#: libpq/auth.c:2704 -msgid "could not perform MD5 encryption of password" -msgstr "konnte MD5-Verschlüsselung des Passworts nicht durchführen" +#: commands/tablecmds.c:7790 +msgid "cannot have multiple SET TABLESPACE subcommands" +msgstr "mehrere SET TABLESPACE Unterbefehle sind ungültig" -#: libpq/auth.c:2726 +#: commands/tablecmds.c:7843 #, c-format -msgid "could not create RADIUS socket: %m" -msgstr "konnte RADIUS-Socket nicht erstellen: %m" +msgid "\"%s\" is not a table, index, or TOAST table" +msgstr "»%s« ist weder Tabelle, Index noch TOAST-Tabelle" -#: libpq/auth.c:2747 +#: commands/tablecmds.c:7964 #, c-format -msgid "could not bind local RADIUS socket: %m" -msgstr "konnte lokales RADIUS-Socket nicht binden: %m" +msgid "cannot move system relation \"%s\"" +msgstr "Systemrelation »%s« kann nicht verschoben werden" -#: libpq/auth.c:2757 -#, c-format -msgid "could not send RADIUS packet: %m" -msgstr "konnte RADIUS-Paket nicht senden: %m" +#: commands/tablecmds.c:7980 +msgid "cannot move temporary tables of other sessions" +msgstr "temporäre Tabellen anderer Sitzungen können nicht verschoben werden" -#: libpq/auth.c:2786 libpq/auth.c:2811 -msgid "timeout waiting for RADIUS response" -msgstr "Zeitüberschreitung beim Warten auf RADIUS-Antwort" +#: commands/tablecmds.c:8172 +msgid "cannot change inheritance of typed table" +msgstr "Vererbung einer getypten Tabelle kann nicht geändert werden" -#: libpq/auth.c:2804 +#: commands/tablecmds.c:8218 +msgid "cannot inherit to temporary relation of another session" +msgstr "an temporäre Relation einer anderen Sitzung kann nicht vererbt werden" + +#: commands/tablecmds.c:8272 +msgid "circular inheritance not allowed" +msgstr "zirkuläre Vererbung ist nicht erlaubt" + +#: commands/tablecmds.c:8273 #, c-format -msgid "could not check status on RADIUS socket: %m" -msgstr "konnte Status des RADIUS-Sockets nicht prüfen: %m" +msgid "\"%s\" is already a child of \"%s\"." +msgstr "»%s« ist schon von »%s« abgeleitet." -#: libpq/auth.c:2833 +#: commands/tablecmds.c:8281 #, c-format -msgid "could not read RADIUS response: %m" -msgstr "konnte RADIUS-Antwort nicht lesen: %m" +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" -#: libpq/auth.c:2845 libpq/auth.c:2849 +#: commands/tablecmds.c:8417 #, c-format -msgid "RADIUS response was sent from incorrect port: %i" -msgstr "RADIUS-Antwort wurde von falschem Port gesendet: %i" +msgid "column \"%s\" in child table must be marked NOT NULL" +msgstr "Spalte »%s« in abgeleiteter Tabelle muss als NOT NULL markiert sein" -#: libpq/auth.c:2858 +#: commands/tablecmds.c:8433 #, c-format -msgid "RADIUS response too short: %i" -msgstr "RADIUS-Antwort zu kurz: %i" +msgid "child table is missing column \"%s\"" +msgstr "Spalte »%s« fehlt in abgeleiteter Tabelle" -#: libpq/auth.c:2865 +#: commands/tablecmds.c:8512 #, c-format -msgid "RADIUS response has corrupt length: %i (actual length %i)" -msgstr "RADIUS-Antwort hat verfälschte Länge: %i (tatsächliche Länge %i)" +msgid "child table \"%s\" has different definition for check constraint \"%s\"" +msgstr "" +"abgeleitete Tabelle »%s« hat unterschiedliche Definition für Check-" +"Constraint »%s«" -#: libpq/auth.c:2873 +#: commands/tablecmds.c:8536 #, c-format -msgid "RADIUS response is to a different request: %i (should be %i)" -msgstr "RADIUS-Antwort unterscheidet sich von Anfrage: %i (sollte %i sein)" +msgid "child table is missing constraint \"%s\"" +msgstr "Constraint »%s« fehlt in abgeleiteter Tabelle" -#: libpq/auth.c:2898 -msgid "could not perform MD5 encryption of received packet" -msgstr "konnte MD5-Verschlüsselung des empfangenen Pakets nicht durchführen" +#: commands/tablecmds.c:8616 +#, c-format +msgid "relation \"%s\" is not a parent of relation \"%s\"" +msgstr "Relation »%s« ist keine Basisrelation von Relation »%s«" -#: libpq/auth.c:2907 -msgid "RADIUS response has incorrect MD5 signature" -msgstr "RADIUS-Antwort hat falsche MD5-Signatur" +#: commands/tablecmds.c:8833 +msgid "typed tables cannot inherit" +msgstr "getypte Tabellen können nicht erben" -#: libpq/auth.c:2924 +#: commands/tablecmds.c:8864 #, c-format -msgid "RADIUS response has invalid code (%i) for user \"%s\"" -msgstr "RADIUS-Antwort hat ungültigen Code (%i) für Benutzer »%s«" +msgid "table is missing column \"%s\"" +msgstr "Spalte »%s« fehlt in Tabelle" -#: 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 +#: commands/tablecmds.c:8874 #, c-format -msgid "invalid large-object descriptor: %d" -msgstr "ungültiger Large-Object-Deskriptor: %d" +msgid "table has column \"%s\" where type requires \"%s\"" +msgstr "Tabelle hat Spalte »%s«, aber Typ benötigt »%s«" -#: libpq/be-fsstubs.c:173 libpq/be-fsstubs.c:205 libpq/be-fsstubs.c:529 +#: commands/tablecmds.c:8883 #, c-format -msgid "permission denied for large object %u" -msgstr "keine Berechtigung für Large Object %u" +msgid "table \"%s\" has different type for column \"%s\"" +msgstr "Tabelle »%s« hat unterschiedlichen Typ für Spalte »%s«" -#: libpq/be-fsstubs.c:194 +#: commands/tablecmds.c:8896 #, c-format -msgid "large object descriptor %d was not opened for writing" -msgstr "Large-Objekt-Deskriptor %d wurde nicht zum Schreiben geöffnet" - -#: libpq/be-fsstubs.c:392 -msgid "must be superuser to use server-side lo_import()" -msgstr "nur Superuser können das serverseitige lo_import() verwenden" - -#: libpq/be-fsstubs.c:393 -msgid "Anyone can use the client-side lo_import() provided by libpq." -msgstr "Jeder kann das clientseitige lo_import() von libpq verwenden." +msgid "table has extra column \"%s\"" +msgstr "Tabelle hat zusätzliche Spalte »%s«" -#: libpq/be-fsstubs.c:406 +#: commands/tablecmds.c:8943 #, c-format -msgid "could not open server file \"%s\": %m" -msgstr "konnte Serverdatei »%s« nicht öffnen: %m" +msgid "\"%s\" is not a typed table" +msgstr "»%s« ist keine getypte Tabelle" -#: libpq/be-fsstubs.c:428 -#, c-format -msgid "could not read server file \"%s\": %m" -msgstr "konnte Serverdatei »%s« nicht lesen: %m" +#: commands/tablecmds.c:9114 +msgid "cannot move an owned sequence into another schema" +msgstr "" +"einer Tabelle zugeordnete Sequenz kann nicht in ein anderes Schema " +"verschoben werden" -#: libpq/be-fsstubs.c:458 -msgid "must be superuser to use server-side lo_export()" -msgstr "nur Superuser können das serverseitige lo_export() verwenden" +#: commands/tablecmds.c:9221 +#, c-format +msgid "relation \"%s\" already exists in schema \"%s\"" +msgstr "Relation »%s« existiert bereits in Schema »%s«" -#: libpq/be-fsstubs.c:459 -msgid "Anyone can use the client-side lo_export() provided by libpq." -msgstr "Jeder kann das clientseitige lo_export() von libpq verwenden." +#: commands/proclang.c:93 +msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters" +msgstr "" +"verwende Informationen aus pg_pltemplate statt der CREATE-LANGUAGE-Parameter" -#: libpq/be-fsstubs.c:484 +#: commands/proclang.c:103 #, c-format -msgid "could not create server file \"%s\": %m" -msgstr "konnte Serverdatei »%s« nicht erstellen: %m" +msgid "must be superuser to create procedural language \"%s\"" +msgstr "nur Superuser können prozedurale Sprache »%s« erzeugen" -#: libpq/be-fsstubs.c:496 +#: commands/proclang.c:123 commands/proclang.c:279 #, c-format -msgid "could not write server file \"%s\": %m" -msgstr "konnte Serverdatei »%s« nicht schreiben: %m" +msgid "function %s must return type \"language_handler\"" +msgstr "Funktion %s muss Typ »language_handler« zurückgeben" -#: libpq/be-secure.c:283 libpq/be-secure.c:378 +#: commands/proclang.c:243 #, c-format -msgid "SSL error: %s" -msgstr "SSL-Fehler: %s" +msgid "unsupported language \"%s\"" +msgstr "nicht unterstützte Sprache »%s«" -#: libpq/be-secure.c:292 libpq/be-secure.c:387 libpq/be-secure.c:951 -#, c-format -msgid "unrecognized SSL error code: %d" -msgstr "unbekannter SSL-Fehlercode: %d" +#: commands/proclang.c:245 +msgid "The supported languages are listed in the pg_pltemplate system catalog." +msgstr "Die unterstützten Sprachen stehen im Systemkatalog pg_pltemplate." -#: libpq/be-secure.c:331 libpq/be-secure.c:335 libpq/be-secure.c:345 -msgid "SSL renegotiation failure" -msgstr "Fehler bei SSL-Neuverhandlung" +#: commands/proclang.c:253 +msgid "must be superuser to create custom procedural language" +msgstr "nur Superuser können maßgeschneiderte prozedurale Sprachen erzeugen" -#: libpq/be-secure.c:339 -msgid "SSL failed to send renegotiation request" -msgstr "SSL konnte keine neue Verhandlungsanfrage senden" +#: commands/proclang.c:272 +#, c-format +msgid "" +"changing return type of function %s from \"opaque\" to \"language_handler\"" +msgstr "ändere Rückgabetyp von Funktion %s von »opaque« in »language_handler«" -#: libpq/be-secure.c:736 +#: commands/proclang.c:357 commands/proclang.c:606 #, c-format -msgid "could not create SSL context: %s" -msgstr "konnte SSL-Kontext nicht erzeugen: %s" +msgid "language \"%s\" already exists" +msgstr "Sprache »%s« existiert bereits" -#: libpq/be-secure.c:746 +#: commands/proclang.c:537 #, c-format -msgid "could not load server certificate file \"%s\": %s" -msgstr "konnte Serverzertifikatsdatei »%s« nicht laden: %s" +msgid "language \"%s\" does not exist, skipping" +msgstr "Sprache »%s« existiert nicht, wird übersprungen" -#: libpq/be-secure.c:752 +#: commands/proclang.c:600 commands/proclang.c:640 commands/proclang.c:754 +#: commands/functioncmds.c:839 commands/functioncmds.c:2018 #, c-format -msgid "could not access private key file \"%s\": %m" -msgstr "konnte auf private Schlüsseldatei »%s« nicht zugreifen: %m" +msgid "language \"%s\" does not exist" +msgstr "Sprache »%s« existiert nicht" -#: libpq/be-secure.c:767 +#: commands/analyze.c:153 #, c-format -msgid "private key file \"%s\" has group or world access" -msgstr "private Schlüsseldatei »%s« erlaubt Zugriff von Gruppe oder Welt" +msgid "skipping analyze of \"%s\" --- lock not available" +msgstr "überspringe Analyze von »%s« --- Sperre nicht verfügbar" -#: libpq/be-secure.c:769 -msgid "Permissions should be u=rw (0600) or less." -msgstr "Rechte sollten u=rw (0600) oder weniger sein." +#: commands/analyze.c:170 +#, c-format +msgid "skipping \"%s\" --- only superuser can analyze it" +msgstr "überspringe »%s« --- nur Superuser kann sie analysieren" + +#: commands/analyze.c:174 +#, 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" -#: libpq/be-secure.c:776 +#: commands/analyze.c:178 #, c-format -msgid "could not load private key file \"%s\": %s" -msgstr "konnte private Schlüsseldatei »%s« nicht laden: %s" +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" -#: libpq/be-secure.c:781 +#: commands/analyze.c:194 #, c-format -msgid "check of private key failed: %s" -msgstr "Überprüfung des privaten Schlüssels fehlgeschlagen: %s" +msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables" +msgstr "" +"überspringe »%s« --- kann Nicht-Tabellen oder besondere Systemtabellen nicht " +"analysieren" -#: libpq/be-secure.c:809 +#: commands/analyze.c:285 #, c-format -msgid "could not access root certificate file \"%s\": %m" -msgstr "konnte nicht auf Root-Zertifikat-Datei »%s« zugreifen: %m" +msgid "analyzing \"%s.%s\" inheritance tree" +msgstr "analysiere Vererbungsbaum von »%s.%s«" -#: libpq/be-secure.c:820 +#: commands/analyze.c:290 #, c-format -msgid "could not load root certificate file \"%s\": %s" -msgstr "konnte Root-Zertifikat-Datei »%s« nicht laden: %s" +msgid "analyzing \"%s.%s\"" +msgstr "analysiere »%s.%s«" -#: libpq/be-secure.c:843 +#: commands/analyze.c:598 #, c-format -msgid "SSL certificate revocation list file \"%s\" ignored" -msgstr "SSL-Certificate-Revocation-List-Datei »%s« ignoriert" - -#: libpq/be-secure.c:845 -msgid "SSL library does not support certificate revocation lists." -msgstr "SSL-Bibliothek unterstützt keine Certificate-Revocation-Lists." +msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s" +msgstr "automatisches Analysieren von Tabelle »%s.%s.%s« Systembenutzung: %s" -#: libpq/be-secure.c:852 +#: commands/analyze.c:1238 #, c-format -msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s" +msgid "" +"\"%s\": scanned %d of %u pages, containing %.0f live rows and %.0f dead " +"rows; %d rows in sample, %.0f estimated total rows" msgstr "" -"SSL-Certificate-Revocation-List-Datei »%s« nicht gefunden, wird " -"übersprungen: %s" +"»%s«: %d von %u Seiten gelesen, enthalten %.0f lebende Zeilen und %.0f tote " +"Zeilen; %d Zeilen in Stichprobe, schätzungsweise %.0f Zeilen insgesamt" -#: libpq/be-secure.c:854 -msgid "Certificates will not be checked against revocation list." -msgstr "Zertifikate werden nicht gegen die Revocation-Liste geprüft." +#: commands/analyze.c:1499 executor/execQual.c:2848 +msgid "could not convert row type" +msgstr "konnte Zeilentyp nicht umwandeln" -#: libpq/be-secure.c:896 +#: commands/conversioncmds.c:71 #, c-format -msgid "could not initialize SSL connection: %s" -msgstr "konnte SSL-Verbindung nicht initialisieren: %s" +msgid "source encoding \"%s\" does not exist" +msgstr "Quellkodierung »%s« existiert nicht" -#: libpq/be-secure.c:905 +#: commands/conversioncmds.c:78 #, c-format -msgid "could not set SSL socket: %s" -msgstr "konnte SSL-Socket nicht setzen: %s" +msgid "destination encoding \"%s\" does not exist" +msgstr "Zielkodierung »%s« existiert nicht" -#: libpq/be-secure.c:931 +#: commands/conversioncmds.c:92 #, c-format -msgid "could not accept SSL connection: %m" -msgstr "konnte SSL-Verbindung nicht annehmen: %m" - -#: libpq/be-secure.c:935 libpq/be-secure.c:946 -msgid "could not accept SSL connection: EOF detected" -msgstr "konnte SSL-Verbindung nicht annehmen: EOF entdeckt" +msgid "encoding conversion function %s must return type \"void\"" +msgstr "Kodierungskonversionsfunktion %s muss Typ »void« zurückgeben" -#: libpq/be-secure.c:940 +#: commands/conversioncmds.c:152 #, c-format -msgid "could not accept SSL connection: %s" -msgstr "konnte SSL-Verbindung nicht annehmen: %s" - -#: libpq/be-secure.c:991 -msgid "SSL certificate's common name contains embedded null" -msgstr "Common-Name im SSL-Zertifikat enthält Null-Byte" +msgid "conversion \"%s\" does not exist, skipping" +msgstr "Konversion »%s« existiert nicht, wird übersprungen" -#: libpq/be-secure.c:998 +#: commands/conversioncmds.c:211 #, c-format -msgid "SSL connection from \"%s\"" -msgstr "SSL-Verbindung von »%s«" - -#: libpq/be-secure.c:1042 -msgid "no SSL error reported" -msgstr "kein SSL-Fehler berichtet" +msgid "conversion \"%s\" already exists in schema \"%s\"" +msgstr "Konversion »%s« existiert bereits in Schema »%s«" -#: libpq/be-secure.c:1046 -#, c-format -msgid "SSL error code %lu" -msgstr "SSL-Fehlercode %lu" +#: commands/sequence.c:127 +msgid "unlogged sequences are not supported" +msgstr "ungeloggte Sequenzen werden nicht unterstützt" -#: libpq/hba.c:160 +#: commands/sequence.c:537 commands/sequence.c:751 commands/sequence.c:793 +#: commands/sequence.c:830 commands/sequence.c:1495 catalog/aclchk.c:3071 #, c-format -msgid "authentication file token too long, skipping: \"%s\"" -msgstr "Token in Authentifizierungsdatei zu lang, wird übersprungen: »%s«" +msgid "permission denied for sequence %s" +msgstr "keine Berechtigung für Sequenz %s" -#: libpq/hba.c:355 +#: commands/sequence.c:620 #, c-format -msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" -msgstr "" -"konnte sekundäre Authentifizierungsdatei »@%s« nicht als »%s« öffnen: %m" - -#: libpq/hba.c:628 -#, fuzzy, c-format -msgid "could not translate host name \"%s\" to address: %s" -msgstr "konnte Hostname »%s« nicht in Adresse übersetzen: %s\n" +msgid "nextval: reached maximum value of sequence \"%s\" (%s)" +msgstr "nextval: Maximalwert von Sequenz »%s« erreicht (%s)" -#. translator: the second %s is a list of auth methods -#: libpq/hba.c:779 +#: commands/sequence.c:643 #, c-format -msgid "" -"authentication option \"%s\" is only valid for authentication methods %s" -msgstr "" -"Authentifizierungsoption »%s« ist nur gültig für Authentifizierungsmethoden " -"%s" +msgid "nextval: reached minimum value of sequence \"%s\" (%s)" +msgstr "nextval: Minimalwert von Sequenz »%s« erreicht (%s)" -#: libpq/hba.c:795 +#: commands/sequence.c:757 #, c-format -msgid "authentication method \"%s\" requires argument \"%s\" to be set" -msgstr "Authentifizierungsmethode »%s« benötigt Argument »%s«" +msgid "currval of sequence \"%s\" is not yet defined in this session" +msgstr "currval von Sequenz »%s« ist in dieser Sitzung noch nicht definiert" -#: libpq/hba.c:844 -msgid "hostssl requires SSL to be turned on" -msgstr "" +#: commands/sequence.c:776 commands/sequence.c:782 +msgid "lastval is not yet defined in this session" +msgstr "lastval ist in dieser Sitzung noch nicht definiert" -#: libpq/hba.c:845 -msgid "Set ssl = on in postgresql.conf." +#: commands/sequence.c:851 +#, 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)" -#: libpq/hba.c:853 -#, fuzzy -msgid "hostssl is not supported by this build" -msgstr "SSL wird von dieser Installation nicht unterstützt" +#: commands/sequence.c:1142 commands/sequence.c:1150 commands/sequence.c:1158 +#: commands/sequence.c:1166 commands/sequence.c:1174 commands/sequence.c:1182 +#: commands/sequence.c:1190 commands/sequence.c:1198 +#: commands/functioncmds.c:488 commands/functioncmds.c:578 +#: commands/functioncmds.c:586 commands/functioncmds.c:594 +#: commands/functioncmds.c:1981 commands/functioncmds.c:1989 +#: 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:147 commands/dbcommands.c:155 +#: commands/dbcommands.c:163 commands/dbcommands.c:171 +#: commands/dbcommands.c:179 commands/dbcommands.c:187 +#: commands/dbcommands.c:195 commands/dbcommands.c:1342 +#: commands/dbcommands.c:1350 commands/extension.c:1250 +#: commands/extension.c:1258 commands/extension.c:1266 +#: commands/extension.c:2731 commands/collationcmds.c:93 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/foreigncmds.c:468 commands/foreigncmds.c:477 +#: commands/typecmds.c:282 catalog/aclchk.c:833 catalog/aclchk.c:841 +msgid "conflicting or redundant options" +msgstr "widersprüchliche oder überflüssige Optionen" -#: libpq/hba.c:854 -msgid "Compile with --with-openssl to use SSL connections." -msgstr "Kompilieren Sie mit --with-openssl, um SSL-Verbindungen zu verwenden." +#: commands/sequence.c:1220 +msgid "INCREMENT must not be zero" +msgstr "INCREMENT darf nicht null sein" -#: libpq/hba.c:876 +#: commands/sequence.c:1276 #, c-format -msgid "invalid connection type \"%s\"" -msgstr "ungültiger Verbindungstyp »%s«" - -#: libpq/hba.c:889 -msgid "end-of-line before database specification" -msgstr "Zeilenende vor Datenbankangabe" +msgid "MINVALUE (%s) must be less than MAXVALUE (%s)" +msgstr "MINVALUE (%s) muss kleiner als MAXVALUE (%s) sein" -#: libpq/hba.c:902 -msgid "end-of-line before role specification" -msgstr "Zeilenende vor Rollenangabe" +#: commands/sequence.c:1301 +#, c-format +msgid "START value (%s) cannot be less than MINVALUE (%s)" +msgstr "START-Wert (%s) kann nicht kleiner als MINVALUE (%s) sein" -#: libpq/hba.c:917 -msgid "end-of-line before IP address specification" -msgstr "Zeilenende vor IP-Adressangabe" +#: commands/sequence.c:1313 +#, c-format +msgid "START value (%s) cannot be greater than MAXVALUE (%s)" +msgstr "START-Wert (%s) kann nicht größer als MAXVALUE (%s) sein" -#: libpq/hba.c:971 +#: commands/sequence.c:1343 #, c-format -msgid "invalid IP address \"%s\": %s" -msgstr "ungültige IP-Adresse »%s«: %s" +msgid "RESTART value (%s) cannot be less than MINVALUE (%s)" +msgstr "RESTART-Wert (%s) kann nicht kleiner als MINVALUE (%s) sein" -#: libpq/hba.c:991 +#: commands/sequence.c:1355 #, c-format -msgid "specifying both host name and CIDR mask is invalid: \"%s\"" -msgstr "" +msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)" +msgstr "RESTART-Wert (%s) kann nicht größer als MAXVALUE (%s) sein" -#: libpq/hba.c:1005 +#: commands/sequence.c:1370 #, c-format -msgid "invalid CIDR mask in address \"%s\"" -msgstr "ungültige CIDR-Maske in Adresse »%s«" +msgid "CACHE (%s) must be greater than zero" +msgstr "CACHE (%s) muss größer als null sein" -#: libpq/hba.c:1023 -msgid "end-of-line before netmask specification" -msgstr "Zeilenende vor Netzmaskenangabe" +#: commands/sequence.c:1402 +msgid "invalid OWNED BY option" +msgstr "ungültige OWNED BY Option" -#: libpq/hba.c:1035 -#, c-format -msgid "invalid IP mask \"%s\": %s" -msgstr "ungültige IP-Maske »%s«: %s" +#: commands/sequence.c:1403 +msgid "Specify OWNED BY table.column or OWNED BY NONE." +msgstr "Geben Sie OWNED BY tabelle.spalte oder OWNED BY NONE an." -#: libpq/hba.c:1052 -msgid "IP address and mask do not match" -msgstr "IP-Adresse und -Maske passen nicht zusammen" +#: commands/sequence.c:1432 +msgid "sequence must have same owner as table it is linked to" +msgstr "Sequenz muss selben Eigentümer wie die verknüpfte Tabelle haben" -#: libpq/hba.c:1067 -msgid "end-of-line before authentication method" -msgstr "Zeilenende vor Authentifizierungsmethode" +#: commands/sequence.c:1436 +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" -#: libpq/hba.c:1140 +#: commands/functioncmds.c:100 #, c-format -msgid "invalid authentication method \"%s\"" -msgstr "ungültige Authentifizierungsmethode »%s«" - -#: libpq/hba.c:1151 -#, fuzzy, c-format -msgid "invalid authentication method \"%s\": not supported by this build" -msgstr "" -"ungültige Authentifizierungsmethode »%s«: auf dieser Platform nicht " -"unterstützt" +msgid "SQL function cannot return shell type %s" +msgstr "SQL-Funktion kann keinen Hüllen-Rückgabetyp %s haben" -#: libpq/hba.c:1172 -msgid "krb5 authentication is not supported on local sockets" -msgstr "krb5-Authentifizierung wird auf lokalen Sockets nicht unterstützt" +#: commands/functioncmds.c:105 +#, c-format +msgid "return type %s is only a shell" +msgstr "Rückgabetyp %s ist nur eine Hülle" -#: libpq/hba.c:1183 -msgid "gssapi authentication is not supported on local sockets" -msgstr "gssapi-Authentifizierung wird auf lokalen Sockets nicht unterstützt" +#: commands/functioncmds.c:134 parser/parse_type.c:278 +#, c-format +msgid "type modifier cannot be specified for shell type \"%s\"" +msgstr "Typmodifikator kann für Hüllentyp »%s« nicht angegeben werden" -#: libpq/hba.c:1194 -#, fuzzy -msgid "peer authentication is only supported on local sockets" -msgstr "krb5-Authentifizierung wird auf lokalen Sockets nicht unterstützt" +#: commands/functioncmds.c:140 +#, c-format +msgid "type \"%s\" is not yet defined" +msgstr "Typ »%s« ist noch nicht definiert" -#: libpq/hba.c:1211 -msgid "cert authentication is only supported on hostssl connections" -msgstr "cert-Authentifizierung wird nur auf »hostssl«-Verbindungen unterstützt" +#: commands/functioncmds.c:141 +msgid "Creating a shell type definition." +msgstr "Hüllentypdefinition wird erzeugt." -#: libpq/hba.c:1232 +#: commands/functioncmds.c:220 #, c-format -msgid "authentication option not in name=value format: %s" -msgstr "Authentifizierungsoption nicht im Format name=wert: %s" +msgid "SQL function cannot accept shell type %s" +msgstr "SQL-Funktion kann keinen Hüllentyp %s annehmen" -#: libpq/hba.c:1248 -#, fuzzy -msgid "ident, peer, krb5, gssapi, sspi and cert" -msgstr "ident, krb5, gssapi, sspi und cert" +#: commands/functioncmds.c:225 +#, c-format +msgid "argument type %s is only a shell" +msgstr "Argumenttyp %s ist nur eine Hülle" -#: libpq/hba.c:1262 -msgid "clientcert can only be configured for \"hostssl\" rows" -msgstr "clientcert kann nur für »hostssl«-Zeilen konfiguriert werden" +#: commands/functioncmds.c:235 +#, c-format +msgid "type %s does not exist" +msgstr "Typ %s existiert nicht" -#: libpq/hba.c:1273 -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" +#: commands/functioncmds.c:243 +msgid "functions cannot accept set arguments" +msgstr "Funktionen können keine SET Argumente haben" -#: libpq/hba.c:1274 -msgid "Make sure the root.crt file is present and readable." -msgstr "Stellen Sie sicher, dass die Datei root.crt vorhanden und lesbar ist." +#: commands/functioncmds.c:252 +msgid "VARIADIC parameter must be the last input parameter" +msgstr "VARIADIC-Parameter muss der letzte Eingabeparameter sein" -#: libpq/hba.c:1287 -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" +#: commands/functioncmds.c:279 +msgid "VARIADIC parameter must be an array" +msgstr "VARIADIC-Parameter muss ein Array sein" -#: libpq/hba.c:1321 +#: commands/functioncmds.c:319 #, c-format -msgid "invalid LDAP port number: \"%s\"" -msgstr "ungültige LDAP-Portnummer: »%s«" +msgid "parameter name \"%s\" used more than once" +msgstr "Parametername »%s« mehrmals angegeben" -#: libpq/hba.c:1367 libpq/hba.c:1375 -msgid "krb5, gssapi and sspi" -msgstr "krb5, gssapi und sspi" +#: commands/functioncmds.c:334 +msgid "only input parameters can have default values" +msgstr "nur Eingabeparameter können Vorgabewerte haben" + +#: commands/functioncmds.c:347 +msgid "cannot use table references in parameter default value" +msgstr "" +"Tabellenverweise können nicht in Parametervorgabewerten verwendet werden" -#: libpq/hba.c:1413 -#, c-format -msgid "invalid RADIUS port number: \"%s\"" -msgstr "ungültige RADIUS-Portnummer: »%s«" +#: commands/functioncmds.c:363 +msgid "cannot use subquery in parameter default value" +msgstr "Unteranfragen können nicht in Parametervorgabewerten verwendet werden" -#: libpq/hba.c:1433 -#, c-format -msgid "unrecognized authentication option name: \"%s\"" -msgstr "unbekannter Authentifizierungsoptionsname: »%s«" +#: commands/functioncmds.c:367 +msgid "cannot use aggregate function in parameter default value" +msgstr "" +"Aggregatfunktionen können nicht in Parametervorgabewerten verwendet werden" -#: libpq/hba.c:1465 -msgid "" -"cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, or ldapsearchattribute " -"together with ldapprefix" +#: commands/functioncmds.c:371 +msgid "cannot use window function in parameter default value" msgstr "" -"ldapbasedn, ldapbinddn, ldapbindpasswd oder ldapsearchattribute kann nicht " -"zusammen mit ldapprefix verwendet werden" +"Fensterfunktionen können nicht in Parametervorgabewerten verwendet werden" -#: libpq/hba.c:1475 -msgid "" -"authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix" -"\", or \"ldapsuffix\" to be set" +#: commands/functioncmds.c:381 +msgid "input parameters after one with a default value must also have defaults" msgstr "" -"Authentifizierungsmethode »ldap« benötigt Argument »ldapbasedn«, " -"»ldapprefix« oder »ldapsuffix«" +"Eingabeparameter hinter einem mit Vorgabewert müssen auch einen Vorgabewert " +"haben" -#: libpq/hba.c:1674 guc-file.l:409 -#, c-format -msgid "could not open configuration file \"%s\": %m" -msgstr "konnte Konfigurationsdatei »%s« nicht öffnen: %m" +#: commands/functioncmds.c:620 +msgid "no function body specified" +msgstr "kein Funktionskörper angegeben" -#: libpq/hba.c:1806 -#, c-format -msgid "invalid regular expression \"%s\": %s" -msgstr "ungültiger regulärer Ausdruck »%s«: %s" +#: commands/functioncmds.c:630 +msgid "no language specified" +msgstr "keine Sprache angegeben" -#: libpq/hba.c:1829 -#, c-format -msgid "regular expression match for \"%s\" failed: %s" -msgstr "Suche nach regulärem Ausdruck für »%s« fehlgeschlagen: %s" +#: commands/functioncmds.c:651 commands/functioncmds.c:1351 +msgid "COST must be positive" +msgstr "COST muss positiv sein" -#: libpq/hba.c:1847 -#, 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" +#: commands/functioncmds.c:659 commands/functioncmds.c:1359 +msgid "ROWS must be positive" +msgstr "ROWS muss positiv sein" -#: libpq/hba.c:1913 +#: commands/functioncmds.c:698 #, c-format -msgid "missing entry in file \"%s\" at end of line %d" -msgstr "fehlender Eintrag in Datei »%s« am Ende von Zeile %d" +msgid "unrecognized function attribute \"%s\" ignored" +msgstr "unbekanntes Funktionsattribut »%s« ignoriert" -#: libpq/hba.c:1954 +#: commands/functioncmds.c:749 #, 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" +msgid "only one AS item needed for language \"%s\"" +msgstr "nur ein AS-Element benötigt für Sprache »%s«" -#: libpq/hba.c:1975 -#, c-format -msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\"" +#: commands/functioncmds.c:841 commands/functioncmds.c:2020 +msgid "Use CREATE LANGUAGE to load the language into the database." msgstr "" -"kein passender Eintrag in Usermap »%s« für Benutzer »%s«, authentifiziert " -"als »%s«" +"Sie müssen CREATE LANGUAGE verwenden, um die Sprache in die Datenbank zu " +"laden." -#: libpq/hba.c:1999 +#: commands/functioncmds.c:888 #, c-format -msgid "could not open usermap file \"%s\": %m" -msgstr "konnte Usermap-Datei »%s« nicht öffnen: %m" +msgid "function result type must be %s because of OUT parameters" +msgstr "Ergebnistyp der Funktion muss %s sein wegen OUT-Parametern" -#: libpq/pqcomm.c:306 -#, 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" +#: commands/functioncmds.c:901 +msgid "function result type must be specified" +msgstr "Ergebnistyp der Funktion muss angegeben werden" -#: libpq/pqcomm.c:310 -#, c-format -msgid "could not translate service \"%s\" to address: %s" -msgstr "konnte Dienst »%s« nicht in Adresse übersetzen: %s" +#: commands/functioncmds.c:936 commands/functioncmds.c:1363 +msgid "ROWS is not applicable when function does not return a set" +msgstr "" +"ROWS ist nicht anwendbar, wenn die Funktion keine Ergebnismenge zurückgibt" -#: libpq/pqcomm.c:337 +#: commands/functioncmds.c:987 #, c-format -msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded" -msgstr "" -"konnte nicht an alle verlangten Adressen binden: MAXLISTEN (%d) überschritten" +msgid "function %s(%s) does not exist, skipping" +msgstr "Funktion %s(%s) existiert nicht, wird übersprungen" -#: libpq/pqcomm.c:346 -msgid "IPv4" -msgstr "IPv4" +#: commands/functioncmds.c:1009 +msgid "Use DROP AGGREGATE to drop aggregate functions." +msgstr "Verwenden Sie DROP AGGREGATE, um Aggregatfunktionen zu löschen." -#: libpq/pqcomm.c:350 -msgid "IPv6" -msgstr "IPv6" +#: commands/functioncmds.c:1016 +#, c-format +msgid "removing built-in function \"%s\"" +msgstr "eingebaute Funktion »%s« wird entfernt" -#: libpq/pqcomm.c:355 -msgid "Unix" -msgstr "Unix" +#: commands/functioncmds.c:1109 +msgid "Use ALTER AGGREGATE to rename aggregate functions." +msgstr "Verwenden Sie ALTER AGGREGATE, um Aggregatfunktionen umzubenennen." -#: libpq/pqcomm.c:360 +#: commands/functioncmds.c:1121 commands/aggregatecmds.c:292 #, c-format -msgid "unrecognized address family %d" -msgstr "unbekannte Adressfamilie %d" +msgid "function %s already exists in schema \"%s\"" +msgstr "Funktion %s existiert bereits in Schema »%s«" -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:371 -#, c-format -msgid "could not create %s socket: %m" -msgstr "konnte %s-Socket nicht erstellen: %m" +#: commands/functioncmds.c:1172 +msgid "Use ALTER AGGREGATE to change owner of aggregate functions." +msgstr "" +"Verwenden Sie ALTER AGGREGATE, um den Eigentümer einer Aggregatfunktion zu " +"ändern." -#: libpq/pqcomm.c:396 +#: commands/functioncmds.c:1511 #, c-format -msgid "setsockopt(SO_REUSEADDR) failed: %m" -msgstr "setsockopt(SO_REUSEADDR) fehlgeschlagen: %m" +msgid "source data type %s is a pseudo-type" +msgstr "Quelldatentyp %s ist ein Pseudotyp" -#: libpq/pqcomm.c:411 +#: commands/functioncmds.c:1517 #, c-format -msgid "setsockopt(IPV6_V6ONLY) failed: %m" -msgstr "setsockopt(IPV6_V6ONLY) fehlgeschlagen: %m" +msgid "target data type %s is a pseudo-type" +msgstr "Zieldatentyp %s ist ein Pseudotyp" -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:430 +#: commands/functioncmds.c:1525 commands/functioncmds.c:1813 +#: catalog/objectaddress.c:843 #, c-format -msgid "could not bind %s socket: %m" -msgstr "konnte %s-Socket nicht binden: %m" +msgid "must be owner of type %s or type %s" +msgstr "Berechtigung nur für Eigentümer des Typs %s oder des Typs %s" -#: libpq/pqcomm.c:433 -#, 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." +#: commands/functioncmds.c:1554 +msgid "cast function must take one to three arguments" +msgstr "Typumwandlungsfunktion muss ein bis drei Argumente haben" -#: libpq/pqcomm.c:436 -#, c-format +#: commands/functioncmds.c:1558 msgid "" -"Is another postmaster already running on port %d? If not, wait a few seconds " -"and retry." +"argument of cast function must match or be binary-coercible from source data " +"type" msgstr "" -"Läuft bereits ein anderer Postmaster auf Port %d? Wenn nicht, warten Sie " -"einige Sekunden und versuchen Sie erneut." +"Argument der Typumwandlungsfunktion muss mit Quelldatentyp übereinstimmen " +"oder in ihn binär-umwandelbar sein" -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:469 -#, c-format -msgid "could not listen on %s socket: %m" -msgstr "konnte nicht auf %s-Socket hören: %m" +#: commands/functioncmds.c:1562 +msgid "second argument of cast function must be type integer" +msgstr "zweites Argument der Typumwandlungsfunktion muss Typ integer haben" -#: libpq/pqcomm.c:554 -#, c-format -msgid "group \"%s\" does not exist" -msgstr "Gruppe »%s« existiert nicht" +#: commands/functioncmds.c:1566 +msgid "third argument of cast function must be type boolean" +msgstr "drittes Argument der Typumwandlungsfunktion muss Typ boolean haben" -#: libpq/pqcomm.c:564 -#, c-format -msgid "could not set group of file \"%s\": %m" -msgstr "konnte Gruppe von Datei »%s« nicht setzen: %m" +#: commands/functioncmds.c:1570 +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" -#: libpq/pqcomm.c:575 -#, c-format -msgid "could not set permissions of file \"%s\": %m" -msgstr "konnte Zugriffsrechte von Datei »%s« nicht setzen: %m" +#: commands/functioncmds.c:1581 +msgid "cast function must not be volatile" +msgstr "Typumwandlungsfunktion darf nicht VOLATILE sein" -#: libpq/pqcomm.c:605 -#, c-format -msgid "could not accept new connection: %m" -msgstr "konnte neue Verbindung nicht akzeptieren: %m" +#: commands/functioncmds.c:1586 +msgid "cast function must not be an aggregate function" +msgstr "Typumwandlungsfunktion darf keine Aggregatfunktion sein" -#: libpq/pqcomm.c:773 -#, c-format -msgid "could not set socket to non-blocking mode: %m" -msgstr "konnte Socket nicht auf nicht-blockierenden Modus umstellen: %m" +#: commands/functioncmds.c:1590 +msgid "cast function must not be a window function" +msgstr "Typumwandlungsfunktion darf keine Fensterfunktion sein" -#: libpq/pqcomm.c:779 -#, c-format -msgid "could not set socket to blocking mode: %m" -msgstr "konnte Socket nicht auf blockierenden Modus umstellen: %m" +#: commands/functioncmds.c:1594 +msgid "cast function must not return a set" +msgstr "Typumwandlungsfunktion darf keine Ergebnismenge zurückgeben" -#: libpq/pqcomm.c:831 libpq/pqcomm.c:921 -#, c-format -msgid "could not receive data from client: %m" -msgstr "konnte Daten vom Client nicht empfangen: %m" +#: commands/functioncmds.c:1620 +msgid "must be superuser to create a cast WITHOUT FUNCTION" +msgstr "nur Superuser können Typumwandlungen mit WITHOUT FUNCTION erzeugen" -#: libpq/pqcomm.c:1072 -msgid "unexpected EOF within message length word" -msgstr "unerwartetes EOF im Message-Längenwort" +#: commands/functioncmds.c:1635 +msgid "source and target data types are not physically compatible" +msgstr "Quelldatentyp und Zieldatentyp sind nicht physikalisch kompatibel" -#: libpq/pqcomm.c:1083 -msgid "invalid message length" -msgstr "ungültige Message-Länge" +#: commands/functioncmds.c:1650 +msgid "composite data types are not binary-compatible" +msgstr "zusammengesetzte Datentypen sind nicht binärkompatibel" -#: libpq/pqcomm.c:1105 libpq/pqcomm.c:1115 -msgid "incomplete message from client" -msgstr "unvollständige Message vom Client" +#: commands/functioncmds.c:1656 +msgid "enum data types are not binary-compatible" +msgstr "Enum-Datentypen sind nicht binärkompatibel" -#: libpq/pqcomm.c:1245 -#, c-format -msgid "could not send data to client: %m" -msgstr "konnte Daten nicht an den Client senden: %m" +#: commands/functioncmds.c:1662 +msgid "array data types are not binary-compatible" +msgstr "Array-Datentypen sind nicht binärkompatibel" -#: libpq/pqformat.c:436 -msgid "no data left in message" -msgstr "keine Daten in Message übrig" +#: commands/functioncmds.c:1679 +msgid "domain data types must not be marked binary-compatible" +msgstr "Domänendatentypen dürfen nicht als binärkompatibel markiert werden" + +#: commands/functioncmds.c:1689 +msgid "source data type and target data type are the same" +msgstr "Quelldatentyp und Zieldatentyp sind der selbe" -#: 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 "nicht genug Daten in Message übrig" +#: commands/functioncmds.c:1722 +#, c-format +msgid "cast from type %s to type %s already exists" +msgstr "Typumwandlung von Typ %s in Typ %s existiert bereits" -#: libpq/pqformat.c:636 -msgid "invalid string in message" -msgstr "ungültige Zeichenkette in Message" +#: commands/functioncmds.c:1802 +#, 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" -#: libpq/pqformat.c:652 -msgid "invalid message format" -msgstr "ungültiges Message-Format" +#: commands/functioncmds.c:1840 +#, c-format +msgid "cast from type %s to type %s does not exist" +msgstr "Typumwandlung von Typ %s in Typ %s existiert nicht" -#: snowball/dict_snowball.c:183 +#: commands/functioncmds.c:1928 #, c-format -msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\"" -msgstr "kein Snowball-Stemmer für Sprache »%s« und Kodierung »%s« verfügbar" +msgid "function \"%s\" already exists in schema \"%s\"" +msgstr "Funktion »%s« existiert bereits in Schema »%s«" -#: snowball/dict_snowball.c:215 -msgid "multiple Language parameters" -msgstr "mehrere »Language«-Parameter" +#: commands/functioncmds.c:2002 +msgid "no inline code specified" +msgstr "kein Inline-Code angegeben" -#: snowball/dict_snowball.c:222 +#: commands/functioncmds.c:2050 #, c-format -msgid "unrecognized Snowball parameter: \"%s\"" -msgstr "unbekannter Snowball-Parameter: »%s«" +msgid "language \"%s\" does not support inline code execution" +msgstr "Sprache »%s« unterstützt das Ausführen von Inline-Code nicht" -#: snowball/dict_snowball.c:230 -msgid "missing Language parameter" -msgstr "Parameter »Language« fehlt" +#: 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 mit STDOUT oder STDIN wird nicht unterstützt" -#: storage/smgr/md.c:378 storage/smgr/md.c:849 +#: commands/copy.c:473 #, c-format -msgid "could not truncate file \"%s\": %m" -msgstr "kann Datei »%s« nicht kürzen: %m" +msgid "could not write to COPY file: %m" +msgstr "konnte nicht in COPY-Datei schreiben: %m" + +#: commands/copy.c:485 +msgid "connection lost during COPY to stdout" +msgstr "Verbindung während COPY nach STDOUT verloren" -#: storage/smgr/md.c:446 +#: commands/copy.c:526 #, c-format -msgid "cannot extend file \"%s\" beyond %u blocks" -msgstr "kann Datei »%s« nicht auf über %u Blöcke erweitern" +msgid "could not read from COPY file: %m" +msgstr "konnte nicht aus COPY-Datei lesen: %m" -# XXX -#: storage/smgr/md.c:468 storage/smgr/md.c:629 storage/smgr/md.c:704 +#: commands/copy.c:577 #, 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" +msgid "COPY from stdin failed: %s" +msgstr "COPY FROM STDIN fehlgeschlagen: %s" -#: storage/smgr/md.c:476 +#: commands/copy.c:593 #, c-format -msgid "could not extend file \"%s\": %m" -msgstr "konnte Datei »%s« nicht erweitern: %m" +msgid "unexpected message type 0x%02X during COPY from stdin" +msgstr "unerwarteter Messagetyp 0x%02X während COPY FROM STDIN" -#: storage/smgr/md.c:478 storage/smgr/md.c:485 storage/smgr/md.c:731 -msgid "Check free disk space." -msgstr "Prüfen Sie den freien Festplattenplatz." +#: commands/copy.c:745 +msgid "must be superuser to COPY to or from a file" +msgstr "nur Superuser können COPY mit Dateien verwenden" -#: storage/smgr/md.c:482 -#, c-format -msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u" +#: commands/copy.c:746 +msgid "" +"Anyone can COPY to stdout or from stdin. psql's \\copy command also works " +"for anyone." msgstr "" -"konnte Datei »%s« nicht erweitern: es wurden nur %d von %d Bytes bei Block " -"%u geschrieben" +"Jeder kann COPY mit STDOUT oder STDIN verwenden. Der Befehl \\copy in psql " +"funktioniert auch für jeden." -#: storage/smgr/md.c:647 +#: commands/copy.c:874 #, c-format -msgid "could not read block %u in file \"%s\": %m" -msgstr "konnte Block %u in Datei »%s« nicht lesen: %m" +msgid "COPY format \"%s\" not recognized" +msgstr "COPY-Format »%s« nicht erkannt" -#: storage/smgr/md.c:663 +#: commands/copy.c:937 commands/copy.c:951 #, 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" +msgid "argument to option \"%s\" must be a list of column names" +msgstr "Argument von Option »%s« muss eine Liste aus Spaltennamen sein" -#: storage/smgr/md.c:722 +#: commands/copy.c:964 #, c-format -msgid "could not write block %u in file \"%s\": %m" -msgstr "konnte Block %u in Datei »%s« nicht schreiben: %m" +msgid "argument to option \"%s\" must be a valid encoding name" +msgstr "Argument von Option »%s« muss ein gültiger Kodierungsname sein" -#: storage/smgr/md.c:727 +#: commands/copy.c:970 #, 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" +msgid "option \"%s\" not recognized" +msgstr "Option »%s« nicht erkannt" -#: storage/smgr/md.c:825 -#, 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" +#: commands/copy.c:981 +msgid "cannot specify DELIMITER in BINARY mode" +msgstr "DELIMITER kann nicht im BINARY-Modus angegeben werden" -#: storage/smgr/md.c:874 -#, c-format -msgid "could not truncate file \"%s\" to %u blocks: %m" -msgstr "konnte Datei »%s« nicht auf %u Blöcke kürzen: %m" +#: commands/copy.c:986 +msgid "cannot specify NULL in BINARY mode" +msgstr "NULL kann nicht im BINARY-Modus angegeben werden" -#: storage/smgr/md.c:1128 -#, c-format -msgid "could not fsync file \"%s\" but retrying: %m" -msgstr "konnte Datei »%s« nicht fsyncen, versuche erneut: %m" +#: commands/copy.c:1008 +msgid "COPY delimiter must be a single one-byte character" +msgstr "DELIMITER für COPY muss ein einzelnes Ein-Byte-Zeichen sein" -#: storage/smgr/md.c:1270 -msgid "could not forward fsync request because request queue is full" +#: commands/copy.c:1015 +msgid "COPY delimiter cannot be newline or carriage return" +msgstr "COPY-Trennzeichen kann nicht Newline oder Carriage Return sein" + +#: commands/copy.c:1021 +msgid "COPY null representation cannot use newline or carriage return" msgstr "" +"COPY NULL-Darstellung kann nicht Newline oder Carriage Return enthalten" -#: storage/smgr/md.c:1637 +#: commands/copy.c:1038 #, c-format -msgid "could not open file \"%s\" (target block %u): %m" -msgstr "konnte Datei »%s« nicht öffnen (Zielblock %u): %m" +msgid "COPY delimiter cannot be \"%s\"" +msgstr "DELIMITER für COPY darf nicht »%s« sein" -#: storage/smgr/md.c:1659 -#, c-format -msgid "could not seek to end of file \"%s\": %m" -msgstr "konnte Positionszeiger nicht ans Ende der Datei »%s« setzen: %m" +#: commands/copy.c:1044 +msgid "COPY HEADER available only in CSV mode" +msgstr "COPY HEADER ist nur im CSV-Modus verfügbar" -#: storage/buffer/bufmgr.c:134 storage/buffer/bufmgr.c:239 -msgid "cannot access temporary tables of other sessions" -msgstr "auf temporäre Tabellen anderer Sitzungen kann nicht zugegriffen werden" +#: commands/copy.c:1050 +msgid "COPY quote available only in CSV mode" +msgstr "Quote-Zeichen für COPY ist nur im CSV-Modus verfügbar" -#: storage/buffer/bufmgr.c:373 -#, c-format -msgid "unexpected data beyond EOF in block %u of relation %s" -msgstr "unerwartete Daten hinter Dateiende in Block %u von Relation %s" +#: commands/copy.c:1055 +msgid "COPY quote must be a single one-byte character" +msgstr "Quote-Zeichen für COPY muss ein einzelnes Ein-Byte-Zeichen sein" -#: storage/buffer/bufmgr.c:375 -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." +#: commands/copy.c:1060 +msgid "COPY delimiter and quote must be different" +msgstr "DELIMITER und QUOTE für COPY müssen verschieden sein" -#: storage/buffer/bufmgr.c:447 -#, c-format -msgid "invalid page header in block %u of relation %s; zeroing out page" -msgstr "" -"ungültiger Seitenkopf in Block %u von Relation %s; fülle Seite mit Nullen" +#: commands/copy.c:1066 +msgid "COPY escape available only in CSV mode" +msgstr "Escape-Zeichen für COPY ist nur im CSV-Modus verfügbar" -#: storage/buffer/bufmgr.c:455 -#, c-format -msgid "invalid page header in block %u of relation %s" -msgstr "ungültiger Seitenkopf in Block %u von Relation %s" +#: commands/copy.c:1071 +msgid "COPY escape must be a single one-byte character" +msgstr "Escape-Zeichen für COPY muss ein einzelnes Ein-Byte-Zeichen sein" -#: storage/buffer/bufmgr.c:2728 -#, c-format -msgid "could not write block %u of %s" -msgstr "konnte Block %u von %s nicht schreiben" +#: commands/copy.c:1077 +msgid "COPY force quote available only in CSV mode" +msgstr "FORCE QUOTE für COPY ist nur im CSV-Modus verfügbar" -#: storage/buffer/bufmgr.c:2730 -msgid "Multiple failures --- write error might be permanent." -msgstr "Mehrere Fehlschläge --- Schreibfehler ist möglicherweise dauerhaft." +#: commands/copy.c:1081 +msgid "COPY force quote only available using COPY TO" +msgstr "FORCE QUOTE für COPY geht nur bei COPY TO" -#: storage/buffer/bufmgr.c:2751 storage/buffer/bufmgr.c:2770 -#, c-format -msgid "writing block %u of relation %s" -msgstr "schreibe Block %u von Relation %s" +#: commands/copy.c:1087 +msgid "COPY force not null available only in CSV mode" +msgstr "FORCE NOT NULL für COPY ist nur im CSV-Modus verfügbar" -#: storage/buffer/localbuf.c:190 -msgid "no empty local buffer available" -msgstr "kein leerer lokaler Puffer verfügbar" +#: commands/copy.c:1091 +msgid "COPY force not null only available using COPY FROM" +msgstr "FORCE QUOTE für COPY geht nur bei COPY FROM" -#: storage/file/fd.c:406 -#, c-format -msgid "getrlimit failed: %m" -msgstr "getrlimit fehlgeschlagen: %m" +#: commands/copy.c:1097 +msgid "COPY delimiter must not appear in the NULL specification" +msgstr "Trennzeichen für COPY darf nicht in der NULL-Darstellung erscheinen" -#: storage/file/fd.c:496 -msgid "insufficient file descriptors available to start server process" -msgstr "nicht genug Dateideskriptoren verfügbar, um Serverprozess zu starten" +#: commands/copy.c:1104 +msgid "CSV quote character must not appear in the NULL specification" +msgstr "CSV-Quote-Zeichen darf nicht in der NULL-Darstellung erscheinen" -#: storage/file/fd.c:497 +#: commands/copy.c:1166 #, c-format -msgid "System allows %d, we need at least %d." -msgstr "System erlaubt %d, wir benötigen mindestens %d." +msgid "table \"%s\" does not have OIDs" +msgstr "Tabelle »%s« hat keine OIDs" + +#: commands/copy.c:1183 +msgid "COPY (SELECT) WITH OIDS is not supported" +msgstr "COPY (SELECT) WITH OIDS wird nicht unterstützt" + +#: commands/copy.c:1210 +msgid "COPY (SELECT INTO) is not supported" +msgstr "COPY (SELECT INTO) wird nicht unterstützt" -#: storage/file/fd.c:538 storage/file/fd.c:1450 storage/file/fd.c:1566 +#: commands/copy.c:1270 #, c-format -msgid "out of file descriptors: %m; release and retry" -msgstr "keine Dateideskriptoren mehr: %m; freigeben und nochmal versuchen" +msgid "FORCE QUOTE column \"%s\" not referenced by COPY" +msgstr "FORCE-QUOTE-Spalte »%s« wird von COPY nicht verwendet" -#: storage/file/fd.c:1091 +#: commands/copy.c:1292 #, c-format -msgid "temporary file: path \"%s\", size %lu" -msgstr "temporäre Datei: Pfad »%s«, Größe %lu" +msgid "FORCE NOT NULL column \"%s\" not referenced by COPY" +msgstr "Spalte »%s« mit FORCE NOT NULL wird von COPY nicht verwendet" -#: storage/file/fd.c:1625 +#: commands/copy.c:1356 #, c-format -msgid "could not read directory \"%s\": %m" -msgstr "konnte Verzeichnis »%s« nicht lesen: %m" +msgid "cannot copy from view \"%s\"" +msgstr "kann nicht aus Sicht »%s« kopieren" + +#: commands/copy.c:1358 commands/copy.c:1364 +msgid "Try the COPY (SELECT ...) TO variant." +msgstr "Versuchen Sie die Variante COPY (SELECT ...) TO." -#: storage/file/reinit.c:58 +#: commands/copy.c:1362 #, c-format -msgid "resetting unlogged relations: cleanup %d init %d" -msgstr "" +msgid "cannot copy from foreign table \"%s\"" +msgstr "kann nicht aus Fremdtabelle »%s« kopieren" -#: 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 "tut mir leid, schon zu viele Verbindungen" +#: commands/copy.c:1368 +#, c-format +msgid "cannot copy from sequence \"%s\"" +msgstr "kann nicht aus Sequenz »%s« kopieren" -#: storage/ipc/procarray.c:637 -msgid "consistent state delayed because recovery snapshot incomplete" -msgstr "" -"konsistenter Zustand ist verzögert, weil Wiederherstellungs-Snapshot " -"unvollständig ist" +#: commands/copy.c:1373 +#, c-format +msgid "cannot copy from non-table relation \"%s\"" +msgstr "kann nicht aus Relation »%s«, die keine Tabelle ist, kopieren" -#: storage/ipc/shmem.c:190 storage/lmgr/predicate.c:2054 -#: storage/lmgr/predicate.c:2069 storage/lmgr/predicate.c:3296 -#: storage/lmgr/predicate.c:4253 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 "Shared Memory aufgebraucht" +#: commands/copy.c:1397 +msgid "relative path not allowed for COPY to file" +msgstr "relativer Pfad bei COPY in Datei nicht erlaubt" -#: storage/ipc/shmem.c:346 storage/ipc/shmem.c:399 +#: commands/copy.c:1407 #, 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 "could not open file \"%s\" for writing: %m" +msgstr "konnte Datei »%s« nicht zum Schreiben öffnen: %m" -#: storage/ipc/shmem.c:365 +#: commands/copy.c:1414 commands/copy.c:2200 #, c-format -msgid "could not create ShmemIndex entry for data structure \"%s\"" -msgstr "konnte ShmemIndex-Eintrag für Datenstruktur »%s« nicht erzeugen" +msgid "\"%s\" is a directory" +msgstr "»%s« ist ein Verzeichnis" -#: storage/ipc/shmem.c:380 +#: commands/copy.c:1738 #, 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" - -#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446 -msgid "requested shared memory size overflows size_t" -msgstr "angeforderte Shared-Memory-Größe übersteigt Kapazität von size_t" +msgid "COPY %s, line %d, column %s" +msgstr "COPY %s, Zeile %d, Spalte %s" -#: storage/large_object/inv_api.c:555 storage/large_object/inv_api.c:752 +#: commands/copy.c:1742 commands/copy.c:1787 #, c-format -msgid "large object %u was not opened for writing" -msgstr "Large Object %u wurde nicht zum Schreiben geöffnet" +msgid "COPY %s, line %d" +msgstr "COPY %s, Zeile %d" -#: storage/large_object/inv_api.c:562 storage/large_object/inv_api.c:759 +#: commands/copy.c:1753 #, c-format -msgid "large object %u was already dropped" -msgstr "Large Object %u wurde gleichzeitig gelöscht" - -#: storage/lmgr/predicate.c:574 -msgid "not enough elements in RWConflictPool to record a rw-conflict" -msgstr "" +msgid "COPY %s, line %d, column %s: \"%s\"" +msgstr "COPY %s, Zeile %d, Spalte %s: »%s«" -#: 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 "" +#: commands/copy.c:1761 +#, c-format +msgid "COPY %s, line %d, column %s: null input" +msgstr "COPY %s, Zeile %d, Spalte %s: NULL Eingabe" -#: storage/lmgr/predicate.c:602 -msgid "not enough elements in RWConflictPool to record a potential rw-conflict" -msgstr "" +#: commands/copy.c:1773 +#, c-format +msgid "COPY %s, line %d: \"%s\"" +msgstr "COPY %s, Zeile %d: »%s«" -#: storage/lmgr/predicate.c:782 -msgid "memory for serializable conflict tracking is nearly exhausted" -msgstr "" +#: commands/copy.c:1857 +#, c-format +msgid "cannot copy to view \"%s\"" +msgstr "kann nicht in Sicht »%s« kopieren" -#: storage/lmgr/predicate.c:783 -#, fuzzy -msgid "" -"There may be an idle transaction or a forgotten prepared transaction causing " -"this." -msgstr "" -"%d andere Sitzung(en) und %d vorbereitete Transaktion(en) verwenden die " -"Datenbank." +#: commands/copy.c:1862 +#, c-format +msgid "cannot copy to foreign table \"%s\"" +msgstr "kann nicht in Fremdtabelle »%s« kopieren" -#: storage/lmgr/predicate.c:1067 storage/lmgr/predicate.c:1138 +#: commands/copy.c:1867 #, 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 "cannot copy to sequence \"%s\"" +msgstr "kann nicht in Sequenz »%s« kopieren" -#: storage/lmgr/predicate.c:1408 -msgid "deferrable snapshot was unsafe; trying a new one" -msgstr "" +#: commands/copy.c:1872 +#, c-format +msgid "cannot copy to non-table relation \"%s\"" +msgstr "kann nicht in Relation »%s« kopieren, die keine Tabelle ist" -#: 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 "Sie müssen möglicherweise max_pred_locks_per_transaction erhöhen." +#: commands/copy.c:2219 +msgid "COPY file signature not recognized" +msgstr "COPY-Datei-Signatur nicht erkannt" -#: storage/lmgr/predicate.c:3449 storage/lmgr/predicate.c:3538 -#: storage/lmgr/predicate.c:3546 storage/lmgr/predicate.c:3587 -#: storage/lmgr/predicate.c:3828 storage/lmgr/predicate.c:3995 -#: storage/lmgr/predicate.c:4004 storage/lmgr/predicate.c:4045 -#, fuzzy -msgid "" -"could not serialize access due to read/write dependencies among transactions" -msgstr "kann Zugriff nicht serialisieren wegen gleichzeitiger Aktualisierung" +#: commands/copy.c:2224 +msgid "invalid COPY file header (missing flags)" +msgstr "ungültiger COPY-Dateikopf (Flags fehlen)" -#: storage/lmgr/predicate.c:3450 -msgid "Cancelled on identification as a pivot, during conflict out checking." -msgstr "" +#: commands/copy.c:2230 +msgid "unrecognized critical flags in COPY file header" +msgstr "unbekannte kritische Flags im COPY-Dateikopf" -#: storage/lmgr/predicate.c:3451 storage/lmgr/predicate.c:3540 -#: storage/lmgr/predicate.c:3548 storage/lmgr/predicate.c:3589 -#: storage/lmgr/predicate.c:3830 storage/lmgr/predicate.c:3997 -#: storage/lmgr/predicate.c:4006 storage/lmgr/predicate.c:4047 -msgid "The transaction might succeed if retried." -msgstr "" +#: commands/copy.c:2236 +msgid "invalid COPY file header (missing length)" +msgstr "ungültiger COPY-Dateikopf (Länge fehlt)" -#: storage/lmgr/predicate.c:3539 -#, c-format -msgid "Cancelled on conflict out to old pivot %u." -msgstr "" +#: commands/copy.c:2243 +msgid "invalid COPY file header (wrong length)" +msgstr "ungültiger COPY-Dateikopf (falsche Länge)" -#: storage/lmgr/predicate.c:3547 -#, c-format -msgid "" -"Cancelled on identification as a pivot, with conflict out to old committed " -"transaction %u." -msgstr "" +#: commands/copy.c:2376 commands/copy.c:3058 commands/copy.c:3288 +msgid "extra data after last expected column" +msgstr "zusätzliche Daten nach letzter erwarteter Spalte" -#: storage/lmgr/predicate.c:3588 -msgid "Cancelled on conflict out to old pivot." -msgstr "" +#: commands/copy.c:2386 +msgid "missing data for OID column" +msgstr "fehlende Daten für OID-Spalte" -#: storage/lmgr/predicate.c:3829 -msgid "Cancelled on identification as a pivot, during conflict in checking." -msgstr "" +#: commands/copy.c:2392 +msgid "null OID in COPY data" +msgstr "OID ist NULL in COPY-Daten" -#: storage/lmgr/predicate.c:3996 -msgid "Cancelled on identification as pivot, during write." -msgstr "" +#: commands/copy.c:2402 commands/copy.c:2501 +msgid "invalid OID in COPY data" +msgstr "ungültige OID in COPY-Daten" -#: storage/lmgr/predicate.c:4005 +#: commands/copy.c:2417 #, c-format -msgid "Cancelled on conflict out to pivot %u, during read." -msgstr "" +msgid "missing data for column \"%s\"" +msgstr "fehlende Daten für Spalte »%s«" -#: storage/lmgr/predicate.c:4046 -msgid "Cancelled on identification as a pivot, during commit attempt." -msgstr "" +#: commands/copy.c:2476 +msgid "received copy data after EOF marker" +msgstr "COPY-Daten nach EOF-Markierung empfangen" -#: storage/lmgr/deadlock.c:915 +#: commands/copy.c:2483 #, c-format -msgid "Process %d waits for %s on %s; blocked by process %d." -msgstr "Prozess %d wartet auf %s-Sperre auf %s; blockiert von Prozess %d." +msgid "row field count is %d, expected %d" +msgstr "Feldanzahl in Zeile ist %d, erwartet wurden %d" -#: storage/lmgr/deadlock.c:934 -#, c-format -msgid "Process %d: %s" -msgstr "Prozess %d: %s" +#: commands/copy.c:2822 commands/copy.c:2839 +msgid "literal carriage return found in data" +msgstr "Carriage-Return-Zeichen in Daten gefunden" -#: storage/lmgr/deadlock.c:941 -msgid "deadlock detected" -msgstr "Verklemmung (Deadlock) entdeckt" +#: commands/copy.c:2823 commands/copy.c:2840 +msgid "unquoted carriage return found in data" +msgstr "ungequotetes Carriage-Return-Zeichen in Daten gefunden" -#: storage/lmgr/deadlock.c:944 -msgid "See server log for query details." -msgstr "Einzelheiten zur Anfrage finden Sie im Serverlog." +#: commands/copy.c:2825 commands/copy.c:2842 +msgid "Use \"\\r\" to represent carriage return." +msgstr "Verwenden Sie »\\r«, um ein Carriage-Return-Zeichen darzustellen." -#: storage/lmgr/lmgr.c:720 -#, c-format -msgid "relation %u of database %u" -msgstr "Relation %u der Datenbank %u" +#: commands/copy.c:2826 commands/copy.c:2843 +msgid "Use quoted CSV field to represent carriage return." +msgstr "" +"Verwenden Sie ein gequotetes CSV-Feld, um ein Carriage-Return-Zeichen " +"darzustellen." -#: storage/lmgr/lmgr.c:726 -#, c-format -msgid "extension of relation %u of database %u" -msgstr "Erweiterung von Relation %u in Datenbank %u" +#: commands/copy.c:2855 +msgid "literal newline found in data" +msgstr "Newline-Zeichen in Daten gefunden" -#: storage/lmgr/lmgr.c:732 -#, c-format -msgid "page %u of relation %u of database %u" -msgstr "Seite %u von Relation %u von Datenbank %u" +#: commands/copy.c:2856 +msgid "unquoted newline found in data" +msgstr "ungequotetes Newline-Zeichen in Daten gefunden" -#: storage/lmgr/lmgr.c:739 -#, c-format -msgid "tuple (%u,%u) of relation %u of database %u" -msgstr "Tupel (%u, %u) von Relation %u von Datenbank %u" +#: commands/copy.c:2858 +msgid "Use \"\\n\" to represent newline." +msgstr "Verwenden Sie »\\n«, um ein Newline-Zeichen darzustellen." -#: storage/lmgr/lmgr.c:747 -#, c-format -msgid "transaction %u" -msgstr "Transaktion %u" +#: commands/copy.c:2859 +msgid "Use quoted CSV field to represent newline." +msgstr "" +"Verwenden Sie ein gequotetes CSV-Feld, um ein Newline-Zeichen darzustellen." -#: storage/lmgr/lmgr.c:752 -#, c-format -msgid "virtual transaction %d/%u" -msgstr "virtuelle Transaktion %d/%u" +#: commands/copy.c:2905 commands/copy.c:2941 +msgid "end-of-copy marker does not match previous newline style" +msgstr "COPY-Ende-Markierung stimmt nicht mit vorherigem Newline-Stil überein" -#: storage/lmgr/lmgr.c:758 -#, c-format -msgid "object %u of class %u of database %u" -msgstr "Objekt %u von Klasse %u von Datenbank %u" +#: commands/copy.c:2914 commands/copy.c:2930 +msgid "end-of-copy marker corrupt" +msgstr "COPY-Ende-Markierung verfälscht" -#: storage/lmgr/lmgr.c:766 -#, c-format -msgid "user lock [%u,%u,%u]" -msgstr "Benutzersperre [%u,%u,%u]" +#: commands/copy.c:3372 +msgid "unterminated CSV quoted field" +msgstr "Quotes in CSV-Feld nicht abgeschlossen" -#: storage/lmgr/lmgr.c:773 -#, c-format -msgid "advisory lock [%u,%u,%u,%u]" -msgstr "Benutzersperre [%u,%u,%u,%u]" +#: commands/copy.c:3449 commands/copy.c:3468 +msgid "unexpected EOF in COPY data" +msgstr "unerwartetes EOF in COPY-Daten" -#: storage/lmgr/lmgr.c:781 -#, c-format -msgid "unrecognized locktag type %d" -msgstr "unbekannter Locktag-Typ %d" +#: commands/copy.c:3458 +msgid "invalid field size" +msgstr "ungültige Feldgröße" -#: storage/lmgr/lock.c:517 -#, c-format -msgid "" -"cannot acquire lock mode %s on database objects while recovery is in progress" -msgstr "" -"Sperrmodus %s kann während der Wiederherstellung nicht auf Datenbankobjekte " -"gesetzt werden" +#: commands/copy.c:3481 +msgid "incorrect binary data format" +msgstr "falsches Binärdatenformat" -#: storage/lmgr/lock.c:519 -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." +#: commands/cluster.c:134 commands/cluster.c:372 +msgid "cannot cluster temporary tables of other sessions" +msgstr "kann temporäre Tabellen anderer Sitzungen nicht clustern" -#: 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 "Sie müssen möglicherweise max_locks_per_transaction erhöhen." +#: commands/cluster.c:164 +#, c-format +msgid "there is no previously clustered index for table \"%s\"" +msgstr "es gibt keinen bereits geclusterten Index für Tabelle »%s«" -#: storage/lmgr/lock.c:2171 -msgid "Not enough memory for reassigning the prepared transaction's locks." -msgstr "" -"Nicht genug Speicher, um die Sperren der vorbereiteten Transaktion zu " -"übergeben." +#: commands/cluster.c:361 +msgid "cannot cluster a shared catalog" +msgstr "globaler Katalog kann nicht geclustert werden" -#: storage/lmgr/proc.c:1019 utils/adt/misc.c:102 -#, c-format -msgid "could not send signal to process %d: %m" -msgstr "konnte Signal nicht an Prozess %d senden: %m" +#: commands/cluster.c:376 +msgid "cannot vacuum temporary tables of other sessions" +msgstr "temporäre Tabellen anderer Sitzungen können nicht gevacuumt werden" -#: storage/lmgr/proc.c:1053 +#: commands/cluster.c:426 #, 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" +msgid "\"%s\" is not an index for table \"%s\"" +msgstr "»%s« ist kein Index für Tabelle »%s«" -#: storage/lmgr/proc.c:1065 +#: commands/cluster.c:434 #, c-format msgid "" -"process %d detected deadlock while waiting for %s on %s after %ld.%03d ms" +"cannot cluster on index \"%s\" because access method does not support " +"clustering" msgstr "" -"Prozess %d hat Verklemmung festgestellt beim Warten auf %s-Sperre auf %s " -"nach %ld,%03d ms" +"kann nicht anhand des Index »%s« clustern, weil die Indexmethode Clustern " +"nicht unterstützt" -#: storage/lmgr/proc.c:1071 +#: commands/cluster.c:446 #, 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" +msgid "cannot cluster on partial index \"%s\"" +msgstr "kann nicht anhand des partiellen Index »%s« clustern" -#: storage/lmgr/proc.c:1075 +#: commands/cluster.c:460 #, 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" +msgid "cannot cluster on invalid index \"%s\"" +msgstr "kann nicht anhand des ungültigen Index »%s« clustern" -#: storage/lmgr/proc.c:1091 +#: commands/cluster.c:894 #, 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" +msgid "clustering \"%s.%s\" using index scan on \"%s\"" +msgstr "clustere »%s.%s« durch Index-Scan von »%s«" -#: storage/page/bufpage.c:143 storage/page/bufpage.c:390 -#: storage/page/bufpage.c:623 storage/page/bufpage.c:753 +#: commands/cluster.c:900 #, c-format -msgid "corrupted page pointers: lower = %u, upper = %u, special = %u" -msgstr "verfälschte Seitenzeiger: lower = %u, upper = %u, special = %u" +msgid "clustering \"%s.%s\" using sequential scan and sort" +msgstr "clustere »%s.%s« durch sequenziellen Scan und Sortieren" -#: storage/page/bufpage.c:433 +#: commands/cluster.c:905 commands/vacuumlazy.c:368 #, c-format -msgid "corrupted item pointer: %u" -msgstr "verfälschter Item-Zeiger: %u" +msgid "vacuuming \"%s.%s\"" +msgstr "vacuume »%s.%s«" -#: storage/page/bufpage.c:444 storage/page/bufpage.c:805 +#: commands/cluster.c:1065 #, c-format -msgid "corrupted item lengths: total %u, available space %u" -msgstr "verfälschte Item-Längen: gesamt %u, verfügbarer Platz %u" +msgid "" +"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages" +msgstr "" +"»%s«: %.0f entfernbare, %.0f nicht entfernbare Zeilenversionen in %u Seiten " +"gefunden" -#: storage/page/bufpage.c:642 storage/page/bufpage.c:778 +#: commands/cluster.c:1069 #, c-format -msgid "corrupted item pointer: offset = %u, size = %u" -msgstr "verfälschter Item-Zeiger: offset = %u, size = %u" +msgid "" +"%.0f dead row versions cannot be removed yet.\n" +"%s." +msgstr "" +"%.0f tote Zeilenversionen können noch nicht entfernt werden.\n" +"%s." -#: 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 +#: commands/vacuumlazy.c:283 #, c-format -msgid "could not find array type for data type %s" -msgstr "konnte Arraytyp für Datentyp %s nicht finden" - -#: optimizer/plan/initsplan.c:587 msgid "" -"SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer " -"join" +"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 "" -"SELECT FOR UPDATE/SHARE kann nicht auf die nullbare Seite eines äußeren " -"Verbundes angewendet werden" +"automatisches Vacuum von Tabelle »%s.%s.%s«: Index-Scans: %d\n" +"Pages: %d entfernt, %d noch vorhanden\n" +"Tuple: %.0f entfernt, %.0f noch vorhanden\n" +"Systembenutzung: %s" -#: 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 "SELECT FOR UPDATE/SHARE ist nicht in UNION/INTERSECT/EXCEPT erlaubt" +#: commands/vacuumlazy.c:537 +#, c-format +msgid "relation \"%s\" page %u is uninitialized --- fixing" +msgstr "" +"Seite %2$u in Relation »%1$s« ist nicht initialisiert --- wird repariert" -#: optimizer/plan/planner.c:2249 -msgid "could not implement GROUP BY" -msgstr "konnte GROUP BY nicht implementieren" +#: commands/vacuumlazy.c:897 +#, c-format +msgid "\"%s\": removed %.0f row versions in %u pages" +msgstr "»%s«: %.0f Zeilenversionen in %u Seiten entfernt" -#: optimizer/plan/planner.c:2250 optimizer/plan/planner.c:2422 -#: optimizer/prep/prepunion.c:791 +#: commands/vacuumlazy.c:902 +#, c-format msgid "" -"Some of the datatypes only support hashing, while others only support " -"sorting." +"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u " +"pages" msgstr "" -"Einige Datentypen unterstützen nur Hashing, während andere nur Sortieren " -"unterstützen." - -#: optimizer/plan/planner.c:2421 -msgid "could not implement DISTINCT" -msgstr "konnte DISTINCT nicht implementieren" - -#: optimizer/plan/planner.c:2868 -msgid "could not implement window PARTITION BY" -msgstr "konnte PARTITION BY für Fenster nicht implementieren" - -#: optimizer/plan/planner.c:2869 -msgid "Window partitioning columns must be of sortable datatypes." -msgstr "Fensterpartitionierungsspalten müssen sortierbare Datentypen haben." - -#: optimizer/plan/planner.c:2873 -msgid "could not implement window ORDER BY" -msgstr "konnte ORDER BY für Fenster nicht implementieren" +"»%s«: %.0f entfernbare, %.0f nicht entfernbare Zeilenversionen in %u von %u " +"Seiten gefunden" -#: optimizer/plan/planner.c:2874 -msgid "Window ordering columns must be of sortable datatypes." -msgstr "Fenstersortierspalten müssen sortierbare Datentypen haben." +#: commands/vacuumlazy.c:906 +#, 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 tote Zeilenversionen können noch nicht entfernt werden.\n" +"Es gibt %.0f unbenutzte Itemzeiger.\n" +"%u Seiten sind vollkommen leer.\n" +"%s." -#: optimizer/util/clauses.c:4201 +#: commands/vacuumlazy.c:964 #, c-format -msgid "SQL function \"%s\" during inlining" -msgstr "SQL-Funktion »%s« beim Inlining" +msgid "\"%s\": removed %d row versions in %d pages" +msgstr "»%s«: %d Zeilenversionen in %d Seiten entfernt" -#: optimizer/prep/prepunion.c:385 -msgid "could not implement recursive UNION" -msgstr "konnte rekursive UNION nicht implementieren" +#: commands/vacuumlazy.c:967 commands/vacuumlazy.c:1059 +#: commands/vacuumlazy.c:1226 +#, c-format +msgid "%s." +msgstr "%s." -#: optimizer/prep/prepunion.c:386 -msgid "All column datatypes must be hashable." -msgstr "Alle Spaltendatentypen müssen hashbar sein." +#: commands/vacuumlazy.c:1056 +#, c-format +msgid "scanned index \"%s\" to remove %d row versions" +msgstr "Index »%s« gelesen und %d Zeilenversionen entfernt" -#. translator: %s is UNION, INTERSECT, or EXCEPT -#: optimizer/prep/prepunion.c:790 +#: commands/vacuumlazy.c:1097 #, c-format -msgid "could not implement %s" -msgstr "konnte %s nicht implementieren" +msgid "index \"%s\" now contains %.0f row versions in %u pages" +msgstr "Index »%s« enthält %.0f Zeilenversionen in %u Seiten" -#: optimizer/path/joinrels.c:673 +#: commands/vacuumlazy.c:1101 +#, c-format msgid "" -"FULL JOIN is only supported with merge-joinable or hash-joinable join " -"conditions" +"%.0f index row versions were removed.\n" +"%u index pages have been deleted, %u are currently reusable.\n" +"%s." msgstr "" -"FULL JOIN wird nur für Merge- oder Hash-Verbund-fähige Verbundbedingungen " -"unterstützt" +"%.0f Indexzeilenversionen wurde entfernt.\n" +"%u Indexseiten wurden gelöscht, %u sind gegenwärtig wiederverwendbar.\n" +"%s." -#: parser/parse_collate.c:214 parser/parse_collate.c:538 +#: commands/vacuumlazy.c:1158 #, 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 "" +msgid "\"%s\": stopping truncate due to conflicting lock request" +msgstr "»%s«: Truncate gestoppt wegen Sperrkonflikt" -#: parser/parse_collate.c:763 +#: commands/vacuumlazy.c:1223 #, c-format -msgid "collation mismatch between explicit collations \"%s\" and \"%s\"" -msgstr "" +msgid "\"%s\": truncated %u to %u pages" +msgstr "»%s«: von %u auf %u Seiten verkürzt" -#: parser/analyze.c:471 -msgid "INSERT ... SELECT cannot specify INTO" -msgstr "INSERT ... SELECT kann INTO nicht verwenden" +#: commands/vacuumlazy.c:1279 +#, c-format +msgid "\"%s\": suspending truncate due to conflicting lock request" +msgstr "»%s«: Truncate ausgesetzt wegen Sperrkonflikt" -#: parser/analyze.c:564 parser/analyze.c:1070 -msgid "VALUES lists must all be the same length" -msgstr "VALUES-Listen müssen alle die gleiche Länge haben" +#: commands/dbcommands.c:202 +msgid "LOCATION is not supported anymore" +msgstr "LOCATION wird nicht mehr unterstützt" -#: parser/analyze.c:606 parser/analyze.c:1210 -msgid "VALUES must not contain table references" -msgstr "VALUES darf keine Tabellenverweise enthalten" +#: commands/dbcommands.c:203 +msgid "Consider using tablespaces instead." +msgstr "Verwenden Sie stattdessen Tablespaces." -#: parser/analyze.c:620 parser/analyze.c:1224 -msgid "VALUES must not contain OLD or NEW references" -msgstr "VALUES darf keine Verweise auf OLD oder NEW enthalten" +#: commands/dbcommands.c:254 commands/dbcommands.c:1374 commands/user.c:267 +#: commands/user.c:606 +#, c-format +msgid "invalid connection limit: %d" +msgstr "ungültige Verbindungshöchstgrenze: %d" -#: parser/analyze.c:621 parser/analyze.c:1225 -msgid "Use SELECT ... UNION ALL ... instead." -msgstr "Verwenden Sie stattdessen SELECT ... UNION ALL ..." +#: commands/dbcommands.c:273 +msgid "permission denied to create database" +msgstr "keine Berechtigung, um Datenbank zu erzeugen" -#: parser/analyze.c:725 parser/analyze.c:1237 -msgid "cannot use aggregate function in VALUES" -msgstr "Aggregatfunktionen können nicht in VALUES verwendet werden" +#: commands/dbcommands.c:296 +#, c-format +msgid "template database \"%s\" does not exist" +msgstr "Template-Datenbank »%s« existiert nicht" -#: parser/analyze.c:731 parser/analyze.c:1243 -msgid "cannot use window function in VALUES" -msgstr "Fensterfunktionen können nicht in VALUES verwendet werden" +#: commands/dbcommands.c:308 +#, c-format +msgid "permission denied to copy database \"%s\"" +msgstr "keine Berechtigung, um Datenbank »%s« zu kopieren" -#: parser/analyze.c:765 -msgid "INSERT has more expressions than target columns" -msgstr "INSERT hat mehr Ausdrücke als Zielspalten" +#: commands/dbcommands.c:324 +#, c-format +msgid "invalid server encoding %d" +msgstr "ungültige Serverkodierung %d" -#: parser/analyze.c:783 -msgid "INSERT has more target columns than expressions" -msgstr "INSERT hat mehr Zielspalten als Ausdrücke" +#: commands/dbcommands.c:330 commands/dbcommands.c:334 +#, c-format +msgid "invalid locale name %s" +msgstr "ungültiger Locale-Name %s" -#: parser/analyze.c:787 +#: commands/dbcommands.c:353 +#, 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?" +"new encoding (%s) is incompatible with the encoding of the template database " +"(%s)" msgstr "" +"neue Kodierung (%s) ist inkompatibel mit der Kodierung der Template-" +"Datenbank (%s)" -#: parser/analyze.c:1084 -msgid "DEFAULT can only appear in a VALUES list within INSERT" -msgstr "DEFAULT kann nur in VALUES-Liste innerhalb von INSERT auftreten" - -#: parser/analyze.c:1191 parser/analyze.c:2413 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES" -msgstr "SELECT FOR UPDATE/SHARE kann nicht auf VALUES angewendet werden" - -#: parser/analyze.c:1451 -msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" -msgstr "ungültige ORDER-BY-Klausel mit UNION/INTERSECT/EXCEPT" - -#: parser/analyze.c:1452 -msgid "Only result column names can be used, not expressions or functions." +#: commands/dbcommands.c:356 +msgid "" +"Use the same encoding as in the template database, or use template0 as " +"template." msgstr "" -"Es können nur Ergebnisspaltennamen verwendet werden, keine Ausdrücke oder " -"Funktionen." +"Verwenden Sie die gleiche Kodierung wie die Template-Datenbank oder " +"verwenden Sie template0 als Template." -#: parser/analyze.c:1453 +#: commands/dbcommands.c:361 +#, c-format msgid "" -"Add the expression/function to every SELECT, or move the UNION into a FROM " -"clause." +"new collation (%s) is incompatible with the collation of the template " +"database (%s)" msgstr "" -"Fügen Sie den Ausdrück/die Funktion jedem SELECT hinzu oder verlegen Sie die " -"UNION in eine FROM-Klausel." - -#: parser/analyze.c:1525 -msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" -msgstr "INTO ist nur im ersten SELECT von UNION/INTERSECT/EXCEPT erlaubt" +"neue Sortierreihenfolge (%s) ist inkompatibel mit der Sortierreihenfolge der " +"Template-Datenbank (%s)" -#: parser/analyze.c:1585 +#: commands/dbcommands.c:363 msgid "" -"UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of " -"same query level" +"Use the same collation as in the template database, or use template0 as " +"template." msgstr "" -"Teilanweisung von UNION/INTERSECT/EXCEPT kann nicht auf andere Relationen " -"auf der selben Anfrageebene verweisen" +"Verwenden Sie die gleiche Sortierreihenfolge wie die Template-Datenbank oder " +"verwenden Sie template0 als Template." -#: parser/analyze.c:1673 +#: commands/dbcommands.c:368 #, 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:1929 -msgid "CREATE TABLE AS specifies too many column names" -msgstr "CREATE TABLE AS gibt zu viele Spaltennamen an" - -#: parser/analyze.c:1987 -msgid "cannot use aggregate function in UPDATE" -msgstr "Aggregatfunktionen können nicht in UPDATE verwendet werden" +msgid "" +"new LC_CTYPE (%s) is incompatible with the LC_CTYPE of the template database " +"(%s)" +msgstr "" +"neues LC_CTYPE (%s) ist inkompatibel mit dem LC_CTYPE der Template-Datenbank " +"(%s)" -#: parser/analyze.c:1993 -msgid "cannot use window function in UPDATE" -msgstr "Fensterfunktionen können nicht in UPDATE verwendet werden" +#: commands/dbcommands.c:370 +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." -#: parser/analyze.c:2102 -msgid "cannot use aggregate function in RETURNING" -msgstr "Aggregatfunktionen können nicht in RETURNING verwendet werden" +#: commands/dbcommands.c:392 commands/dbcommands.c:1081 +msgid "pg_global cannot be used as default tablespace" +msgstr "pg_global kann nicht als Standard-Tablespace verwendet werden" -#: parser/analyze.c:2108 -msgid "cannot use window function in RETURNING" -msgstr "Fensterfunktionen können nicht in RETURNING verwendet werden" +#: commands/dbcommands.c:418 +#, c-format +msgid "cannot assign new default tablespace \"%s\"" +msgstr "kann neuen Standard-Tablespace »%s« nicht setzen" -#: parser/analyze.c:2127 -msgid "RETURNING cannot contain references to other relations" -msgstr "RETURNING kann keine Verweise auf andere Relationen enthalten" +#: commands/dbcommands.c:420 +#, c-format +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." -#: parser/analyze.c:2166 -msgid "cannot specify both SCROLL and NO SCROLL" -msgstr "SCROLL und NO SCROLL können nicht beide angegeben werden" +#: commands/dbcommands.c:440 commands/dbcommands.c:956 +#, c-format +msgid "database \"%s\" already exists" +msgstr "Datenbank »%s« existiert bereits" -#: parser/analyze.c:2180 -msgid "DECLARE CURSOR cannot specify INTO" -msgstr "DECLARE CURSOR kann nicht INTO verwenden" +#: commands/dbcommands.c:454 +#, c-format +msgid "source database \"%s\" is being accessed by other users" +msgstr "auf Quelldatenbank »%s« wird gerade von anderen Benutzern zugegriffen" -#: parser/analyze.c:2192 -msgid "DECLARE CURSOR must not contain data-modifying statements in WITH" -msgstr "" -"DECLARE CURSOR darf keine datenmodifizierenden Anweisungen in WITH enthalten" +#: commands/dbcommands.c:722 commands/dbcommands.c:737 +#, c-format +msgid "encoding %s does not match locale %s" +msgstr "Kodierung %s stimmt nicht mit Locale %s überein" -#: parser/analyze.c:2198 -msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported" -msgstr "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE wird nicht unterstützt" +#: commands/dbcommands.c:725 +#, c-format +msgid "The chosen LC_CTYPE setting requires encoding %s." +msgstr "Die gewählte LC_CTYPE-Einstellung verlangt die Kodierung %s." -#: parser/analyze.c:2199 -msgid "Holdable cursors must be READ ONLY." -msgstr "Haltbare Cursor müssen READ ONLY sein." +#: commands/dbcommands.c:740 +#, c-format +msgid "The chosen LC_COLLATE setting requires encoding %s." +msgstr "Die gewählte LC_COLLATE-Einstellung verlangt die Kodierung %s." -#: parser/analyze.c:2212 -msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported" -msgstr "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE wird nicht unterstützt" +#: commands/dbcommands.c:798 +#, c-format +msgid "database \"%s\" does not exist, skipping" +msgstr "Datenbank »%s« existiert nicht, wird übersprungen" -#: parser/analyze.c:2213 -msgid "Insensitive cursors must be READ ONLY." -msgstr "Insensitive Cursor müssen READ ONLY sein." +#: commands/dbcommands.c:819 +msgid "cannot drop a template database" +msgstr "Template-Datenbank kann nicht gelöscht werden" -#: parser/analyze.c:2266 -msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause" -msgstr "SELECT FOR UPDATE/SHARE ist nicht mit DISTINCT-Klausel erlaubt" +#: commands/dbcommands.c:825 +msgid "cannot drop the currently open database" +msgstr "kann aktuell geöffnete Datenbank nicht löschen" -#: parser/analyze.c:2270 -msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause" -msgstr "SELECT FOR UPDATE/SHARE ist nicht mit GROUP-BY-Klausel erlaubt" +#: commands/dbcommands.c:836 commands/dbcommands.c:978 +#: commands/dbcommands.c:1103 +#, c-format +msgid "database \"%s\" is being accessed by other users" +msgstr "auf Datenbank »%s« wird von anderen Benutzern zugegriffen" -#: parser/analyze.c:2274 -msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause" -msgstr "SELECT FOR UPDATE/SHARE ist nicht mit HAVING-Klausel erlaubt" +#: commands/dbcommands.c:947 +msgid "permission denied to rename database" +msgstr "keine Berechtigung, um Datenbank umzubenennen" -#: parser/analyze.c:2278 -msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions" -msgstr "SELECT FOR UPDATE/SHARE ist nicht mit Aggregatfunktionen erlaubt" +#: commands/dbcommands.c:967 +msgid "current database cannot be renamed" +msgstr "aktuelle Datenbank kann nicht umbenannt werden" -#: parser/analyze.c:2282 -msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions" -msgstr "SELECT FOR UPDATE/SHARE ist nicht mit Fensterfunktionen erlaubt" +#: commands/dbcommands.c:1059 +msgid "cannot change the tablespace of the currently open database" +msgstr "kann den Tablespace der aktuell geöffneten Datenbank nicht ändern" -#: parser/analyze.c:2286 +#: commands/dbcommands.c:1143 +#, 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:1145 msgid "" -"SELECT FOR UPDATE/SHARE is not allowed with set-returning functions in the " -"target list" +"You must move them back to the database's default tablespace before using " +"this command." msgstr "" -"SELECT FOR UPDATE/SHARE ist nicht mit Funktionen mit Ergebnismenge in der " -"Targetliste erlaubt" - -#: parser/analyze.c:2365 -msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names" -msgstr "SELECT FOR UPDATE/SHARE muss unqualifizierte Relationsnamen angeben" +"Sie müssen sie zurück in den Standard-Tablespace der Datenbank verschieben, " +"bevor Sie diesen Befehl verwenden können." -#: parser/analyze.c:2401 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join" -msgstr "SELECT FOR UPDATE/SHARE kann nicht auf einen Verbund angewendet werden" +#: commands/dbcommands.c:1273 commands/dbcommands.c:1752 +#: commands/dbcommands.c:1966 commands/dbcommands.c:2014 +#: commands/tablespace.c:584 +#, 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" -#: parser/analyze.c:2407 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function" -msgstr "SELECT FOR UPDATE/SHARE kann nicht auf eine Funktion angewendet werden" +#: commands/dbcommands.c:1517 +msgid "permission denied to change owner of database" +msgstr "keine Berechtigung, um Eigentümer der Datenbank zu ändern" -#: parser/analyze.c:2419 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query" +#: commands/dbcommands.c:1853 +#, c-format +msgid "" +"There are %d other session(s) and %d prepared transaction(s) using the " +"database." msgstr "" -"SELECT FOR UPDATE/SHARE kann nicht auf eine WITH-Anfrage angewendet werden" +"%d andere Sitzung(en) und %d vorbereitete Transaktion(en) verwenden die " +"Datenbank." -#: parser/analyze.c:2433 +#: commands/dbcommands.c:1856 #, c-format -msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause" -msgstr "Relation »%s« in FOR UPDATE/SHARE nicht in der FROM-Klausel gefunden" +msgid "There are %d other session(s) using the database." +msgstr "%d andere Sitzung(en) verwenden die Datenbank." -#: parser/parse_agg.c:131 parser/parse_oper.c:255 +#: commands/dbcommands.c:1859 #, 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:133 -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:174 -msgid "aggregate function calls cannot contain window function calls" -msgstr "" -"Aufrufe von Aggregatfunktionen können keine Aufrufe von Fensterfunktionen " -"enthalten" +msgid "There are %d prepared transaction(s) using the database." +msgstr "%d vorbereitete Transaktion(en) verwenden die Datenbank." -#: parser/parse_agg.c:245 parser/parse_clause.c:1637 +#: commands/explain.c:153 #, c-format -msgid "window \"%s\" does not exist" -msgstr "Fenster »%s« existiert nicht" +msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\"" +msgstr "unbekannter Wert für EXPLAIN-Option »%s«: »%s«" -#: parser/parse_agg.c:336 -msgid "aggregates not allowed in WHERE clause" -msgstr "Aggregatfunktionen sind nicht in der WHERE-Klausel erlaubt" +#: commands/explain.c:159 +#, c-format +msgid "unrecognized EXPLAIN option \"%s\"" +msgstr "unbekannte EXPLAIN-Option »%s«" -#: parser/parse_agg.c:342 -msgid "aggregates not allowed in JOIN conditions" -msgstr "Aggregatfunktionen sind nicht in JOIN-Bedingungen erlaubt" +#: commands/explain.c:166 +msgid "EXPLAIN option BUFFERS requires ANALYZE" +msgstr "EXPLAIN-Option BUFFERS erfordert ANALYZE" -#: parser/parse_agg.c:363 -msgid "aggregates not allowed in GROUP BY clause" -msgstr "Aggregatfunktionen sind nicht in der GROUP-BY-Klausel erlaubt" +#: commands/indexcmds.c:162 +msgid "must specify at least one column" +msgstr "mindestens eine Spalte muss angegeben werden" -#: parser/parse_agg.c:433 -msgid "aggregate functions not allowed in a recursive query's recursive term" -msgstr "" -"Aggregatfunktionen sind nicht im rekursiven Ausdruck einer rekursiven " -"Anfrage erlaubt" +#: commands/indexcmds.c:166 +#, c-format +msgid "cannot use more than %d columns in an index" +msgstr "Index kann nicht mehr als %d Spalten enthalten" -#: parser/parse_agg.c:458 -msgid "window functions not allowed in WHERE clause" -msgstr "Fensterfunktionen sind nicht in der WHERE-Klausel erlaubt" +#: commands/indexcmds.c:198 +#, c-format +msgid "cannot create index on foreign table \"%s\"" +msgstr "kann keinen Index für Fremdtabelle »%s« erzeugen" -#: parser/parse_agg.c:464 -msgid "window functions not allowed in JOIN conditions" -msgstr "Fensterfunktionen sind nicht in JOIN-Bedingungen erlaubt" +#: commands/indexcmds.c:213 +msgid "cannot create indexes on temporary tables of other sessions" +msgstr "kann keine Indexe für temporäre Tabellen anderer Sitzungen erzeugen" -#: parser/parse_agg.c:470 -msgid "window functions not allowed in HAVING clause" -msgstr "Fensterfunktionen sind nicht in der HAVING-Klausel erlaubt" +#: commands/indexcmds.c:299 +msgid "substituting access method \"gist\" for obsolete method \"rtree\"" +msgstr "ersetze Zugriffsmethode »gist« für obsolete Methode »rtree«" -#: parser/parse_agg.c:483 -msgid "window functions not allowed in GROUP BY clause" -msgstr "Fensterfunktionen sind nicht in der GROUP-BY-Klausel erlaubt" +#: commands/indexcmds.c:307 commands/opclasscmds.c:369 +#: commands/opclasscmds.c:790 commands/opclasscmds.c:2202 +#, c-format +msgid "access method \"%s\" does not exist" +msgstr "Zugriffsmethode »%s« existiert nicht" -#: parser/parse_agg.c:502 parser/parse_agg.c:515 -msgid "window functions not allowed in window definition" -msgstr "Fensterfunktionen sind nicht in der Fensterdefinition erlaubt" +#: commands/indexcmds.c:316 +#, c-format +msgid "access method \"%s\" does not support unique indexes" +msgstr "Zugriffsmethode »%s« unterstützt keine Unique Indexe" -#: parser/parse_agg.c:673 +#: commands/indexcmds.c:321 #, 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" +msgid "access method \"%s\" does not support multicolumn indexes" +msgstr "Zugriffsmethode »%s« unterstützt keine mehrspaltigen Indexe" -#: parser/parse_agg.c:679 +#: commands/indexcmds.c:326 #, c-format -msgid "subquery uses ungrouped column \"%s.%s\" from outer query" -msgstr "" -"Unteranfrage verwendet nicht gruppierte Spalte »%s.%s« aus äußerer Anfrage" +msgid "access method \"%s\" does not support exclusion constraints" +msgstr "Zugriffsmethode »%s« unterstützt keine Exclusion-Constraints" -#: parser/parse_clause.c:421 +#: commands/indexcmds.c:402 #, c-format -msgid "JOIN/ON clause refers to \"%s\", which is not part of JOIN" -msgstr "JOIN/ON-Klausel verweist auf »%s«, was nicht Teil des JOIN ist" +msgid "%s %s will create implicit index \"%s\" for table \"%s\"" +msgstr "%s %s erstellt implizit einen Index »%s« für Tabelle »%s«" -#: parser/parse_clause.c:502 -msgid "subquery in FROM cannot have SELECT INTO" -msgstr "Unteranfrage in FROM kann kein SELECT INTO enthalten" +#: commands/indexcmds.c:740 +msgid "cannot use subquery in index predicate" +msgstr "Unteranfragen können nicht im Indexprädikat verwendet werden" -#: parser/parse_clause.c:524 -msgid "subquery in FROM cannot refer to other relations of same query level" -msgstr "" -"Unteranfrage in FROM kann nicht auf andere Relationen auf der selben " -"Anfrageebene verweisen" +#: commands/indexcmds.c:744 +msgid "cannot use aggregate in index predicate" +msgstr "Aggregatfunktionen können nicht im Indexprädikat verwendet werden" -#: parser/parse_clause.c:580 -msgid "" -"function expression in FROM cannot refer to other relations of same query " -"level" -msgstr "" -"Funktionsausdruck in FROM kann nicht auf andere Relationen auf der selben " -"Anfrageebene verweisen" +#: commands/indexcmds.c:753 +msgid "functions in index predicate must be marked IMMUTABLE" +msgstr "Funktionen im Indexprädikat müssen als IMMUTABLE markiert sein" -#: parser/parse_clause.c:593 -msgid "cannot use aggregate function in function expression in FROM" -msgstr "" -"Aggregatfunktionen können nicht in Funktionsausdrücken in FROM verwendet " -"werden" +#: commands/indexcmds.c:818 parser/parse_utilcmd.c:1754 +#, 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:871 +msgid "cannot use subquery in index expression" +msgstr "Unteranfragen können nicht in Indexausdrücken verwendet werden" + +#: commands/indexcmds.c:875 +msgid "cannot use aggregate function in index expression" +msgstr "Aggregatfunktionen können nicht in Indexausdrücken verwendet werden" -#: parser/parse_clause.c:600 -msgid "cannot use window function in function expression in FROM" +#: commands/indexcmds.c:886 +msgid "functions in index expression must be marked IMMUTABLE" +msgstr "Funktionen im Indexausdruck müssen als IMMUTABLE markiert sein" + +#: commands/indexcmds.c:907 +msgid "could not determine which collation to use for index expression" msgstr "" -"Fensterfunktionen können nicht in Funktionsausdrücken in FROM verwendet " -"werden" +"konnte die für den Indexausdruck zu verwendende Sortierfolge nicht bestimmen" -#: parser/parse_clause.c:877 +#: commands/indexcmds.c:915 commands/typecmds.c:843 +#: parser/parse_utilcmd.c:2592 parser/parse_expr.c:2165 +#: parser/parse_type.c:492 #, c-format -msgid "column name \"%s\" appears more than once in USING clause" -msgstr "Spaltenname »%s« erscheint mehrmals in der USING-Klausel" +msgid "collations are not supported by type %s" +msgstr "Sortierfolgen werden von Typ %s nicht unterstützt" -#: parser/parse_clause.c:892 +#: commands/indexcmds.c:953 #, c-format -msgid "common column name \"%s\" appears more than once in left table" -msgstr "gemeinsamer Spaltenname »%s« erscheint mehrmals in der linken Tabelle" +msgid "operator %s is not commutative" +msgstr "Operator %s ist nicht kommutativ" -#: parser/parse_clause.c:901 -#, c-format -msgid "column \"%s\" specified in USING clause does not exist in left table" +#: commands/indexcmds.c:955 +msgid "Only commutative operators can be used in exclusion constraints." msgstr "" -"Spalte »%s« aus der USING-Klausel existiert nicht in der linken Tabelle" +"In Exclusion-Constraints können nur kommutative Operatoren verwendet werden." -#: parser/parse_clause.c:915 +#: commands/indexcmds.c:981 #, c-format -msgid "common column name \"%s\" appears more than once in right table" -msgstr "gemeinsamer Spaltenname »%s« erscheint mehrmals in der rechten Tabelle" +msgid "operator %s is not a member of operator family \"%s\"" +msgstr "Operator %s ist kein Mitglied der Operatorfamilie »%s«" -#: parser/parse_clause.c:924 -#, c-format -msgid "column \"%s\" specified in USING clause does not exist in right table" +#: commands/indexcmds.c:984 +msgid "" +"The exclusion operator must be related to the index operator class for the " +"constraint." msgstr "" -"Spalte »%s« aus der USING-Klausel existiert nicht in der rechten Tabelle" +"Der Exklusionsoperator muss in Beziehung zur Indexoperatorklasse des " +"Constraints stehen." -#: parser/parse_clause.c:981 +#: commands/indexcmds.c:1019 #, c-format -msgid "column alias list for \"%s\" has too many entries" -msgstr "Spaltenaliasliste für »%s« hat zu viele Einträge" +msgid "access method \"%s\" does not support ASC/DESC options" +msgstr "Zugriffsmethode »%s« unterstützt die Optionen ASC/DESC nicht" -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1228 +#: commands/indexcmds.c:1024 #, c-format -msgid "argument of %s must not contain variables" -msgstr "Argument von %s darf keine Variablen enthalten" +msgid "access method \"%s\" does not support NULLS FIRST/LAST options" +msgstr "Zugriffsmethode »%s« unterstützt die Optionen NULLS FIRST/LAST nicht" -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1239 +#: commands/indexcmds.c:1080 #, c-format -msgid "argument of %s must not contain aggregate functions" -msgstr "Argument von %s darf keine Aggregatfunktionen enthalten" +msgid "data type %s has no default operator class for access method \"%s\"" +msgstr "Datentyp %s hat keine Standardoperatorklasse für Zugriffsmethode »%s«" -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1250 +#: commands/indexcmds.c:1082 +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:1111 commands/indexcmds.c:1119 +#: commands/opclasscmds.c:212 commands/opclasscmds.c:1568 #, c-format -msgid "argument of %s must not contain window functions" -msgstr "Argument von %s darf keine Fensterfunktionen enthalten" +msgid "operator class \"%s\" does not exist for access method \"%s\"" +msgstr "Operatorklasse »%s« existiert nicht für Zugriffsmethode »%s«" -#. translator: first %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1367 +#: commands/indexcmds.c:1132 #, c-format -msgid "%s \"%s\" is ambiguous" -msgstr "%s »%s« ist nicht eindeutig" +msgid "operator class \"%s\" does not accept data type %s" +msgstr "Operatorklasse »%s« akzeptiert Datentyp %s nicht" -#. translator: %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1391 +#: commands/indexcmds.c:1222 #, c-format -msgid "non-integer constant in %s" -msgstr "Konstante in %s ist keine ganze Zahl" +msgid "there are multiple default operator classes for data type %s" +msgstr "es gibt mehrere Standardoperatorklassen für Datentyp %s" -#. translator: %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1409 +#: commands/indexcmds.c:1565 #, c-format -msgid "%s position %d is not in select list" -msgstr "%s Position %d ist nicht in der Select-Liste" +msgid "table \"%s\" has no indexes" +msgstr "Tabelle »%s« hat keine Indexe" -#: parser/parse_clause.c:1625 +#: commands/indexcmds.c:1593 +msgid "can only reindex the currently open database" +msgstr "aktuell geöffnete Datenbank kann nicht reindiziert werden" + +#: commands/indexcmds.c:1680 #, c-format -msgid "window \"%s\" is already defined" -msgstr "Fenster »%s« ist bereits definiert" +msgid "table \"%s.%s\" was reindexed" +msgstr "Tabelle »%s.%s« wurde neu indiziert" -#: parser/parse_clause.c:1679 +#: commands/view.c:143 #, c-format -msgid "cannot override PARTITION BY clause of window \"%s\"" -msgstr "PARTITION-BY-Klausel von Fenster »%s« kann nicht aufgehoben werden" +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:158 +msgid "view must have at least one column" +msgstr "Sicht muss mindestens eine Spalte haben" -#: parser/parse_clause.c:1691 +#: commands/view.c:283 commands/view.c:295 +msgid "cannot drop columns from view" +msgstr "aus einer Sicht können keine Spalten gelöscht werden" + +#: commands/view.c:300 #, c-format -msgid "cannot override ORDER BY clause of window \"%s\"" -msgstr "ORDER-BY-Klausel von Fenster »%s« kann nicht aufgehoben werden" +msgid "cannot change name of view column \"%s\" to \"%s\"" +msgstr "kann Namen der Sichtspalte »%s« nicht in »%s« ändern" -#: parser/parse_clause.c:1713 +#: commands/view.c:308 #, c-format -msgid "cannot override frame clause of window \"%s\"" -msgstr "Frame-Klausel von Fenster »%s« kann nicht aufgehoben werden" +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" -#: parser/parse_clause.c:1779 -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" +#: commands/view.c:447 +msgid "views must not contain SELECT INTO" +msgstr "Sichten dürfen kein SELECT INTO enthalten" -#: parser/parse_clause.c:1780 -msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list" +#: commands/view.c:451 +msgid "views must not contain data-modifying statements in WITH" msgstr "" -"bei SELECT DISTINCT müssen ORDER-BY-Ausdrücke in der Select-Liste erscheinen" +"Sichten dürfen keine datenmodifizierenden Anweisungen in WITH enthalten" -#: parser/parse_clause.c:1866 parser/parse_clause.c:1898 -msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions" +#: commands/view.c:479 +msgid "CREATE VIEW specifies more column names than columns" +msgstr "CREATE VIEW gibt mehr Spaltennamen als Spalten an" + +#: commands/view.c:487 +msgid "views cannot be unlogged because they do not have storage" msgstr "" -"Ausdrücke in SELECT DISTINCT ON müssen mit den ersten Ausdrücken in ORDER BY " -"übereinstimmen" +"Sichten können nicht ungeloggt sein, weil sie keinen Speicherplatz verwenden" -#: parser/parse_clause.c:2020 +#: commands/view.c:501 #, c-format -msgid "operator %s is not a valid ordering operator" -msgstr "Operator %s ist kein gültiger Sortieroperator" +msgid "view \"%s\" will be a temporary view" +msgstr "Sicht »%s« wird eine temporäre Sicht" -#: parser/parse_clause.c:2022 -msgid "" -"Ordering operators must be \"<\" or \">\" members of btree operator families." -msgstr "" -"Sortieroperatoren müssen die Mitglieder »<« oder »>« einer »btree«-" -"Operatorfamilie sein." +#: commands/opclasscmds.c:136 commands/opclasscmds.c:1838 +#: commands/opclasscmds.c:1849 commands/opclasscmds.c:2083 +#: commands/opclasscmds.c:2094 +#, c-format +msgid "operator family \"%s\" does not exist for access method \"%s\"" +msgstr "Operatorfamilie »%s« existiert nicht für Zugriffsmethode »%s«" -#: 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 +#: commands/opclasscmds.c:271 #, c-format -msgid "cannot cast type %s to %s" -msgstr "kann Typ %s nicht in Typ %s umwandeln" +msgid "operator family \"%s\" for access method \"%s\" already exists" +msgstr "Operatorfamilie »%s« für Zugriffsmethode »%s« existiert bereits" -#: parser/parse_coerce.c:908 -msgid "Input has too few columns." -msgstr "Eingabe hat zu wenige Spalten." +#: commands/opclasscmds.c:408 +msgid "must be superuser to create an operator class" +msgstr "nur Superuser können Operatorklassen erzeugen" + +#: 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 "ungültige Operatornummer %d, muss zwischen 1 und %d sein" -#: parser/parse_coerce.c:926 +#: commands/opclasscmds.c:531 commands/opclasscmds.c:915 +#: commands/opclasscmds.c:1009 #, c-format -msgid "Cannot cast type %s to %s in column %d." -msgstr "Kann in Spalte %3$d Typ %1$s nicht in Typ %2$s umwandeln." +msgid "invalid procedure number %d, must be between 1 and %d" +msgstr "ungültige Prozedurnummer %d, muss zwischen 1 und %d sein" -#: parser/parse_coerce.c:941 -msgid "Input has too many columns." -msgstr "Eingabe hat zu viele Spalten." +#: commands/opclasscmds.c:561 +msgid "storage type specified more than once" +msgstr "Storage-Typ mehrmals angegeben" -#. translator: first %s is name of a SQL construct, eg WHERE -#: parser/parse_coerce.c:984 +#: commands/opclasscmds.c:589 #, c-format -msgid "argument of %s must be type boolean, not type %s" -msgstr "Argument von %s muss Typ boolean haben, nicht Typ %s" +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" -#. 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 +#: commands/opclasscmds.c:605 #, c-format -msgid "argument of %s must not return a set" -msgstr "Argument von %s darf keine Ergebnismenge zurückgeben" +msgid "operator class \"%s\" for access method \"%s\" already exists" +msgstr "Operatorklasse »%s« für Zugriffsmethode »%s« existiert bereits" -#. translator: first %s is name of a SQL construct, eg LIMIT -#: parser/parse_coerce.c:1031 +#: commands/opclasscmds.c:633 #, c-format -msgid "argument of %s must be type %s, not type %s" -msgstr "Argument von %s muss Typ %s haben, nicht Typ %s" +msgid "could not make operator class \"%s\" be default for type %s" +msgstr "konnte Operatorklasse »%s« nicht zum Standard für Typ %s machen" -#. translator: first %s is name of a SQL construct, eg CASE -#: parser/parse_coerce.c:1164 +#: commands/opclasscmds.c:636 #, c-format -msgid "%s types %s and %s cannot be matched" -msgstr "%s-Typen %s und %s passen nicht zusammen" +msgid "Operator class \"%s\" already is the default." +msgstr "Operatorklasse »%s« ist bereits der Standard." -#. translator: first %s is name of a SQL construct, eg CASE -#: parser/parse_coerce.c:1231 +#: commands/opclasscmds.c:760 +msgid "must be superuser to create an operator family" +msgstr "nur Superuser können Operatorfamilien erzeugen" + +#: commands/opclasscmds.c:816 +msgid "must be superuser to alter an operator family" +msgstr "nur Superuser können Operatorfamilien ändern" + +#: commands/opclasscmds.c:880 +msgid "operator argument types must be specified in ALTER OPERATOR FAMILY" +msgstr "Operatorargumenttypen müssen in ALTER OPERATOR FAMILY angegeben werden" + +#: commands/opclasscmds.c:944 +msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY" +msgstr "STORAGE kann in ALTER OPERATOR FAMILY nicht angegeben werden" + +#: commands/opclasscmds.c:1060 +msgid "one or two argument types must be specified" +msgstr "ein oder zwei Argumenttypen müssen angegeben werden" + +#: commands/opclasscmds.c:1086 +msgid "index operators must be binary" +msgstr "Indexoperatoren müssen binär sein" + +#: commands/opclasscmds.c:1111 #, c-format -msgid "%s could not convert type %s to %s" -msgstr "%s konnte Typ %s nicht in %s umwandeln" +msgid "access method \"%s\" does not support ordering operators" +msgstr "Zugriffsmethode »%s« unterstützt keine Sortieroperatoren" -#: parser/parse_coerce.c:1472 -msgid "arguments declared \"anyelement\" are not all alike" -msgstr "als »anyelement« deklariert Argumente sind nicht alle gleich" +#: commands/opclasscmds.c:1124 +msgid "index search operators must return boolean" +msgstr "Indexsuchoperatoren müssen Typ boolean zurückgeben" + +#: commands/opclasscmds.c:1163 +msgid "btree procedures must have two arguments" +msgstr "btree-Prozeduren müssen zwei Argumente haben" + +#: commands/opclasscmds.c:1167 +msgid "btree procedures must return integer" +msgstr "btree-Prozeduren müssen Typ integer zurückgeben" + +#: commands/opclasscmds.c:1182 +msgid "hash procedures must have one argument" +msgstr "Hash-Prozeduren müssen ein Argument haben" + +#: commands/opclasscmds.c:1186 +msgid "hash procedures must return integer" +msgstr "Hash-Prozeduren müssen Typ integer zurückgeben" + +#: commands/opclasscmds.c:1211 +msgid "associated data types must be specified for index support procedure" +msgstr "" +"zugehörige Datentypen müssen für Indexunterstützungsprozedur angegeben werden" -#: parser/parse_coerce.c:1491 -msgid "arguments declared \"anyarray\" are not all alike" -msgstr "als »anyarray« deklarierte Argumente sind nicht alle gleich" +#: commands/opclasscmds.c:1237 +#, c-format +msgid "procedure number %d for (%s,%s) appears more than once" +msgstr "Prozedurnummer %d für (%s,%s) einscheint mehrmals" -#: parser/parse_coerce.c:1520 parser/parse_coerce.c:1664 -#: parser/parse_coerce.c:1695 +#: commands/opclasscmds.c:1244 #, c-format -msgid "argument declared \"anyarray\" is not an array but type %s" -msgstr "als »anyarray« deklariertes Argument ist kein Array sondern Typ %s" +msgid "operator number %d for (%s,%s) appears more than once" +msgstr "Operatornummer %d für (%s,%s) einscheint mehrmals" -#: parser/parse_coerce.c:1536 -msgid "" -"argument declared \"anyarray\" is not consistent with argument declared " -"\"anyelement\"" -msgstr "" -"als »anyarray« deklariertes Argument ist nicht mit als »anyelement« " -"deklariertem Argument konsistent" +#: commands/opclasscmds.c:1293 +#, c-format +msgid "operator %d(%s,%s) already exists in operator family \"%s\"" +msgstr "Operator %d(%s,%s) existiert bereits in Operatorfamilie »%s«" -#: parser/parse_coerce.c:1554 -msgid "could not determine polymorphic type because input has type \"unknown\"" -msgstr "" -"konnte polymorphischen Typ nicht bestimmen, weil Eingabe Typ »unknown« hat" +#: commands/opclasscmds.c:1406 +#, c-format +msgid "function %d(%s,%s) already exists in operator family \"%s\"" +msgstr "Funktion %d(%s,%s) existiert bereits in Operatorfamilie »%s«" -#: parser/parse_coerce.c:1564 +#: commands/opclasscmds.c:1493 #, c-format -msgid "type matched to anynonarray is an array type: %s" -msgstr "mit »anynonarray« gepaarter Typ ist ein Array-Typ: %s" +msgid "operator %d(%s,%s) does not exist in operator family \"%s\"" +msgstr "Operator %d(%s,%s) existiert nicht in Operatorfamilie »%s«" -#: parser/parse_coerce.c:1574 +#: commands/opclasscmds.c:1533 #, c-format -msgid "type matched to anyenum is not an enum type: %s" -msgstr "mit »anyenum« gepaarter Typ ist kein Enum-Typ: %s" +msgid "function %d(%s,%s) does not exist in operator family \"%s\"" +msgstr "Funktion %d(%s,%s) existiert nicht in Operatorfamilie »%s«" -#: parser/parse_cte.c:42 +#: commands/opclasscmds.c:1618 #, c-format msgid "" -"recursive reference to query \"%s\" must not appear within its non-recursive " -"term" +"operator family \"%s\" does not exist for access method \"%s\", skipping" msgstr "" -"rekursiver Verweis auf Anfrage »%s« darf nicht in ihrem nicht-rekursiven " -"Teilausdruck erscheinen" +"Operatorfamilie »%s« existiert nicht für Zugriffsmethode »%s«, wird " +"übersprungen" -#: parser/parse_cte.c:44 +#: commands/opclasscmds.c:1778 #, c-format -msgid "recursive reference to query \"%s\" must not appear within a subquery" +msgid "" +"operator class \"%s\" for access method \"%s\" already exists in schema \"%s" +"\"" msgstr "" -"rekursiver Verweis auf Anfrage »%s« darf nicht in einer Unteranfrage " -"erscheinen" +"Operatorklasse »%s« für Zugriffsmethode »%s« existiert bereits in Schema »%s«" -#: parser/parse_cte.c:46 +#: commands/opclasscmds.c:1867 #, c-format msgid "" -"recursive reference to query \"%s\" must not appear within an outer join" +"operator family \"%s\" for access method \"%s\" already exists in schema \"%s" +"\"" msgstr "" -"rekursiver Verweis auf Anfrage »%s« darf nicht in einem äußeren Verbund " -"erscheinen" +"Operatorfamilie »%s« für Zugriffsmethode »%s« existiert bereits in Schema " +"»%s«" -#: parser/parse_cte.c:48 +#: commands/extension.c:149 commands/extension.c:2689 #, c-format -msgid "recursive reference to query \"%s\" must not appear within INTERSECT" -msgstr "rekursiver Verweis auf Anfrage »%s« darf nicht in INTERSECT erscheinen" +msgid "extension \"%s\" does not exist" +msgstr "Erweiterung »%s« existiert nicht" -#: parser/parse_cte.c:50 +#: commands/extension.c:248 commands/extension.c:257 commands/extension.c:269 +#: commands/extension.c:279 #, c-format -msgid "recursive reference to query \"%s\" must not appear within EXCEPT" -msgstr "rekursiver Verweis auf Anfrage »%s« darf nicht in EXCEPT erscheinen" +msgid "invalid extension name: \"%s\"" +msgstr "ungültiger Erweiterungsname: »%s«" -#: parser/parse_cte.c:132 +#: commands/extension.c:249 +msgid "Extension names must not be empty." +msgstr "Erweiterungsnamen dürfen nicht leer sein." + +#: commands/extension.c:258 +msgid "Extension names must not contain \"--\"." +msgstr "Erweiterungsnamen dürfen nicht »--« enthalten." + +#: commands/extension.c:270 +msgid "Extension names must not begin or end with \"-\"." +msgstr "Erweiterungsnamen dürfen nicht mit »-« anfangen oder aufhören." + +#: commands/extension.c:280 +msgid "Extension names must not contain directory separator characters." +msgstr "Erweiterungsnamen dürfen keine Verzeichnistrennzeichen enthalten." + +#: commands/extension.c:295 commands/extension.c:304 commands/extension.c:313 +#: commands/extension.c:323 #, c-format -msgid "WITH query name \"%s\" specified more than once" -msgstr "WIHT-Anfragename »%s« mehrmals angegeben" +msgid "invalid extension version name: \"%s\"" +msgstr "ungültiger Erweiterungsversionsname: »%s«" -#: parser/parse_cte.c:259 -msgid "subquery in WITH cannot have SELECT INTO" -msgstr "Unteranfrage in WITH kann kein SELECT INTO enthalten" +#: commands/extension.c:296 +msgid "Version names must not be empty." +msgstr "Versionsnamen dürfen nicht leer sein." -#: parser/parse_cte.c:271 -msgid "" -"WITH clause containing a data-modifying statement must be at the top level" -msgstr "" -"WITH-Klausel mit datenmodifizierender Anweisung muss auf der obersten Ebene " -"sein" +#: commands/extension.c:305 +msgid "Version names must not contain \"--\"." +msgstr "Versionsnamen dürfen nicht »--« enthalten." -#: parser/parse_cte.c:320 +#: commands/extension.c:314 +msgid "Version names must not begin or end with \"-\"." +msgstr "Versionsnamen dürfen nicht mit »-« anfangen oder aufhören." + +#: commands/extension.c:324 +msgid "Version names must not contain directory separator characters." +msgstr "Versionsnamen dürfen keine Verzeichnistrennzeichen enthalten." + +#: commands/extension.c:474 #, c-format -msgid "" -"recursive query \"%s\" column %d has type %s in non-recursive term but type " -"%s overall" -msgstr "" -"Spalte %2$d in rekursiver Anfrage »%1$s« hat Typ %3$s im nicht-rekursiven " -"Teilausdruck aber Typ %4$s insgesamt" +msgid "could not open extension control file \"%s\": %m" +msgstr "konnte Erweiterungskontrolldatei »%s« nicht öffnen: %m" -#: parser/parse_cte.c:326 -msgid "Cast the output of the non-recursive term to the correct type." +#: commands/extension.c:495 commands/extension.c:505 +#, c-format +msgid "parameter \"%s\" cannot be set in a secondary extension control file" msgstr "" -"Wandeln Sie die Ausgabe des nicht-rekursiven Teilausdrucks in den korrekten " -"Typ um." +"Parameter »%s« kann nicht in einer sekundären Erweitungskontrolldatei " +"gesetzt werden" -#: parser/parse_cte.c:331 -#, fuzzy, c-format -msgid "" -"recursive query \"%s\" column %d has collation \"%s\" in non-recursive term " -"but collation \"%s\" overall" +#: commands/extension.c:544 +#, c-format +msgid "\"%s\" is not a valid encoding name" +msgstr "»%s« ist kein gültiger Kodierungsname" + +#: commands/extension.c:558 +#, c-format +msgid "parameter \"%s\" must be a list of extension names" +msgstr "Parameter »%s« muss eine Liste von Erweiterungsnamen sein" + +#: commands/extension.c:565 +#, c-format +msgid "unrecognized parameter \"%s\" in file \"%s\"" +msgstr "unbekannter Parameter »%s« in Datei »%s«" + +#: commands/extension.c:574 +msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true" msgstr "" -"Spalte %2$d in rekursiver Anfrage »%1$s« hat Typ %3$s im nicht-rekursiven " -"Teilausdruck aber Typ %4$s insgesamt" +"Parameter »schema« kann nicht angegeben werden, wenn »relocatable« an ist" -#: parser/parse_cte.c:335 -msgid "Use the COLLATE clause to set the collation of the non-recursive term." +#: commands/extension.c:726 +msgid "" +"transaction control statements are not allowed within an extension script" msgstr "" +"Transaktionskontrollanweisungen sind nicht in einem Erweiterungsskript " +"erlaubt" -#: parser/parse_cte.c:426 +#: commands/extension.c:794 #, c-format -msgid "WITH query \"%s\" has %d columns available but %d columns specified" -msgstr "" -"WITH-Anfrage »%s« hat %d Spalten verfügbar, aber %d Spalten wurden angegeben" +msgid "permission denied to create extension \"%s\"" +msgstr "keine Berechtigung, um Erweiterung »%s« zu erzeugen" -#: parser/parse_cte.c:606 -msgid "mutual recursion between WITH items is not implemented" -msgstr "gegenseitige Rekursion zwischen WITH-Elementen ist nicht implementiert" +#: commands/extension.c:796 +msgid "Must be superuser to create this extension." +msgstr "Nur Superuser können diese Erweiterung anlegen." -#: parser/parse_cte.c:658 +#: commands/extension.c:800 #, c-format -msgid "recursive query \"%s\" must not contain data-modifying statements" -msgstr "" -"rekursive Anfrage »%s« darf keine datenmodifizierenden Anweisungen enthalten" +msgid "permission denied to update extension \"%s\"" +msgstr "keine Berechtigung, um Erweiterung »%s« zu aktualisieren" -#: parser/parse_cte.c:666 +#: commands/extension.c:802 +msgid "Must be superuser to update this extension." +msgstr "Nur Superuser können diese Erweiterung aktualisieren." + +#: commands/extension.c:1084 #, c-format msgid "" -"recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] " -"recursive-term" +"extension \"%s\" has no update path from version \"%s\" to version \"%s\"" msgstr "" -"rekursive Anfrage »%s« hat nicht die Form nicht-rekursiver-Ausdruck UNION " -"[ALL] rekursiver-Ausdruck" +"Erweiterung »%s« hat keinen Aktualisierungspfad von Version »%s« auf Version " +"»%s«" -#: parser/parse_cte.c:698 -msgid "ORDER BY in a recursive query is not implemented" -msgstr "ORDER BY in einer rekursiven Anfrage ist nicht implementiert" +#: commands/extension.c:1211 +#, c-format +msgid "extension \"%s\" already exists, skipping" +msgstr "Erweiterung »%s« existiert bereits, wird übersprungen" -#: parser/parse_cte.c:704 -msgid "OFFSET in a recursive query is not implemented" -msgstr "OFFSET in einer rekursiven Anfrage ist nicht implementiert" +#: commands/extension.c:1218 +#, c-format +msgid "extension \"%s\" already exists" +msgstr "Erweiterung »%s« existiert bereits" -#: parser/parse_cte.c:710 -msgid "LIMIT in a recursive query is not implemented" -msgstr "LIMIT in einer rekursiven Anfrage ist nicht implementiert" +#: commands/extension.c:1229 +msgid "nested CREATE EXTENSION is not supported" +msgstr "geschachteltes CREATE EXTENSION wird nicht unterstützt" -#: parser/parse_cte.c:716 -msgid "FOR UPDATE/SHARE in a recursive query is not implemented" -msgstr "FOR UPDATE/SHARE in einer rekursiven Anfrage ist nicht implementiert" +#: commands/extension.c:1284 commands/extension.c:2749 +msgid "version to install must be specified" +msgstr "die zu installierende Version muss angegeben werden" -#: parser/parse_cte.c:773 +#: commands/extension.c:1301 #, c-format -msgid "recursive reference to query \"%s\" must not appear more than once" -msgstr "rekursiver Verweis auf Anfrage »%s« darf nicht mehrmals erscheinen" +msgid "FROM version must be different from installation target version \"%s\"" +msgstr "" +"FROM-Version muss verschieden von der zu installierenden Version »%s« sein" -#: parser/parse_expr.c:364 parser/parse_expr.c:757 +#: commands/extension.c:1356 #, c-format -msgid "column %s.%s does not exist" -msgstr "Spalte %s.%s existiert nicht" +msgid "extension \"%s\" must be installed in schema \"%s\"" +msgstr "Erweiterung »%s« muss in Schema »%s« installiert werden" + +#: commands/extension.c:1399 commands/extension.c:1405 catalog/namespace.c:358 +#: catalog/namespace.c:2589 +msgid "no schema has been selected to create in" +msgstr "kein Schema für die Objekterzeugung ausgewählt" -#: parser/parse_expr.c:376 +#: commands/extension.c:1439 commands/extension.c:2890 #, c-format -msgid "column \"%s\" not found in data type %s" -msgstr "Spalte »%s« nicht gefunden im Datentyp %s" +msgid "required extension \"%s\" is not installed" +msgstr "benötigte Erweiterung »%s« ist nicht installiert" + +#: commands/extension.c:1600 commands/extension.c:2488 +#: catalog/objectaddress.c:289 +msgid "extension name cannot be qualified" +msgstr "Erweiterungsname kann nicht qualifiziert werden" -#: parser/parse_expr.c:382 +#: commands/extension.c:1608 #, c-format -msgid "could not identify column \"%s\" in record data type" -msgstr "konnte Spalte »%s« im Record-Datentyp nicht identifizieren" +msgid "extension \"%s\" does not exist, skipping" +msgstr "Erweiterung »%s« existiert nicht, wird übersprungen" -#: parser/parse_expr.c:388 +#: commands/extension.c:1663 #, c-format -msgid "column notation .%s applied to type %s, which is not a composite type" +msgid "cannot drop extension \"%s\" because it is being modified" msgstr "" -"Spaltenschreibweise .%s mit Typ %s verwendet, der kein zusammengesetzter Typ " -"ist" +"Erweiterung »%s« kann nicht gelöscht werden, weil sie gerade geändert wird" -#: parser/parse_expr.c:418 parser/parse_target.c:617 -msgid "row expansion via \"*\" is not supported here" -msgstr "Zeilenexpansion mit »*« wird hier nicht unterstützt" +#: commands/extension.c:2134 +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" -#: parser/parse_expr.c:741 parser/parse_relation.c:478 -#: parser/parse_relation.c:551 parser/parse_target.c:1064 +#: commands/extension.c:2146 #, c-format -msgid "column reference \"%s\" is ambiguous" -msgstr "Spaltenverweis »%s« ist nicht eindeutig" +msgid "OID %u does not refer to a table" +msgstr "OID %u bezieht sich nicht auf eine Tabelle" -#: 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 +#: commands/extension.c:2151 #, c-format -msgid "there is no parameter $%d" -msgstr "es gibt keinen Parameter $%d" - -#: parser/parse_expr.c:1018 -msgid "NULLIF requires = operator to yield boolean" -msgstr "NULLIF erfordert, dass Operator = boolean ergibt" - -#: parser/parse_expr.c:1197 -msgid "arguments of row IN must all be row expressions" -msgstr "Argumente von Zeilen-IN müssen alle Zeilenausdrücke sein" +msgid "table \"%s\" is not a member of the extension being created" +msgstr "Tabelle »%s« ist kein Mitglied der anzulegenden Erweiterung" -#: parser/parse_expr.c:1411 -msgid "subquery cannot have SELECT INTO" -msgstr "Unteranfrage kann kein SELECT INTO enthalten" +#: commands/extension.c:2515 +#, 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" -#: parser/parse_expr.c:1439 -msgid "subquery must return a column" -msgstr "Unteranfrage muss eine Spalte zurückgeben" +#: commands/extension.c:2555 commands/extension.c:2618 +#, c-format +msgid "extension \"%s\" does not support SET SCHEMA" +msgstr "Erweiterung »%s« unterstützt SET SCHEMA nicht" -#: parser/parse_expr.c:1446 -msgid "subquery must return only one column" -msgstr "Unteranfrage darf nur eine Spalte zurückgeben" +#: commands/extension.c:2620 +#, c-format +msgid "%s is not in the extension's schema \"%s\"" +msgstr "%s ist nicht im Schema der Erweiterung (»%s«)" -#: parser/parse_expr.c:1506 -msgid "subquery has too many columns" -msgstr "Unteranfrage hat zu viele Spalten" +#: commands/extension.c:2669 +msgid "nested ALTER EXTENSION is not supported" +msgstr "geschachteltes ALTER EXTENSION wird nicht unterstützt" -#: parser/parse_expr.c:1511 -msgid "subquery has too few columns" -msgstr "Unteranfrage hat zu wenige Spalten" +#: commands/extension.c:2760 +#, c-format +msgid "version \"%s\" of extension \"%s\" is already installed" +msgstr "Version »%s« von Erweiterung »%s« ist bereits installiert" -#: parser/parse_expr.c:1607 -msgid "cannot determine type of empty array" -msgstr "kann Typ eines leeren Arrays nicht bestimmen" +#: commands/extension.c:2983 catalog/pg_depend.c:164 +#, c-format +msgid "%s is already a member of extension \"%s\"" +msgstr "%s ist schon Mitglied der Erweiterung »%s«" -#: parser/parse_expr.c:1608 -msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]." +#: commands/extension.c:2995 +#, c-format +msgid "" +"cannot add schema \"%s\" to extension \"%s\" because the schema contains the " +"extension" msgstr "" -"Wandeln Sie ausdrücklich in den gewünschten Typ um, zum Beispiel ARRAY[]::" -"integer[]." +"kann Schema »%s« nicht zu Erweiterung »%s« hinzufügen, weil das Schema die " +"Erweiterung enthält" -#: parser/parse_expr.c:1622 +#: commands/extension.c:3013 #, c-format -msgid "could not find element type for data type %s" -msgstr "konnte Elementtyp für Datentyp %s nicht finden" +msgid "%s is not a member of extension \"%s\"" +msgstr "%s ist kein Mitglied der Erweiterung »%s«" -#: parser/parse_expr.c:1823 -msgid "unnamed XML attribute value must be a column reference" -msgstr "unbenannter XML-Attributwert muss ein Spaltenverweis sein" +#: commands/collationcmds.c:81 +#, c-format +msgid "collation attribute \"%s\" not recognized" +msgstr "Attribut »%s« für Sortierfolge unbekannt" -#: parser/parse_expr.c:1824 -msgid "unnamed XML element value must be a column reference" -msgstr "unbenannter XML-Elementwert muss ein Spaltenverweis sein" +#: commands/collationcmds.c:126 +msgid "parameter \"lc_collate\" must be specified" +msgstr "Parameter »lc_collate« muss angegeben werden" + +#: commands/collationcmds.c:131 +msgid "parameter \"lc_ctype\" must be specified" +msgstr "Parameter »lc_ctype« muss angegeben werden" -#: parser/parse_expr.c:1839 +#: commands/collationcmds.c:177 #, c-format -msgid "XML attribute name \"%s\" appears more than once" -msgstr "XML-Attributname »%s« einscheint mehrmals" +msgid "collation \"%s\" does not exist, skipping" +msgstr "Sortierfolge »%s« existiert nicht, wird übersprungen" -#: parser/parse_expr.c:1946 +#: commands/collationcmds.c:237 commands/collationcmds.c:416 #, c-format -msgid "cannot cast XMLSERIALIZE result to %s" -msgstr "kann das Ergebnis von XMLSERIALIZE nicht in Typ %s umwandeln" +msgid "collation \"%s\" for encoding \"%s\" already exists in schema \"%s\"" +msgstr "Sortierfolge »%s« für Kodierung »%s« existiert bereits in Schema »%s«" -#: parser/parse_expr.c:2183 parser/parse_expr.c:2382 -msgid "unequal number of entries in row expressions" -msgstr "ungleiche Anzahl Einträge in Zeilenausdrücken" +#: commands/collationcmds.c:249 commands/collationcmds.c:428 +#, c-format +msgid "collation \"%s\" already exists in schema \"%s\"" +msgstr "Sortierfolge »%s« existiert bereits in Schema »%s«" -#: parser/parse_expr.c:2193 -msgid "cannot compare rows of zero length" -msgstr "kann Zeilen mit Länge null nicht vergleichen" +#: commands/comment.c:97 commands/seclabel.c:113 +#, c-format +msgid "\"%s\" is not a table, view, composite type, or foreign table" +msgstr "»%s« ist weder Tabelle, Sicht, zusammengesetzter Typ noch Fremdtabelle" -#: parser/parse_expr.c:2218 +#: 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 "row comparison operator must yield type boolean, not type %s" -msgstr "Zeilenvergleichsoperator muss Typ boolean zurückgeben, nicht Typ %s" +msgid "could not create directory \"%s\": %m" +msgstr "konnte Verzeichnis »%s« nicht erzeugen: %m" -#: parser/parse_expr.c:2225 -msgid "row comparison operator must not return a set" -msgstr "Zeilenvergleichsoperator darf keine Ergebnismenge zurückgeben" +#: commands/tablespace.c:205 +#, c-format +msgid "could not stat directory \"%s\": %m" +msgstr "konnte »stat« für Verzeichnis »%s« nicht ausführen: %m" -#: parser/parse_expr.c:2284 parser/parse_expr.c:2328 +#: commands/tablespace.c:214 #, c-format -msgid "could not determine interpretation of row comparison operator %s" -msgstr "" -"konnte Interpretation des Zeilenvergleichsoperators %s nicht bestimmten" +msgid "\"%s\" exists but is not a directory" +msgstr "»%s« existiert, ist aber kein Verzeichnis" -#: parser/parse_expr.c:2286 -msgid "" -"Row comparison operators must be associated with btree operator families." -msgstr "" -"Zeilenvergleichsoperatoren müssen einer »btree«-Operatorfamilie zugeordnet " -"sein." +#: commands/tablespace.c:244 +#, c-format +msgid "permission denied to create tablespace \"%s\"" +msgstr "keine Berechtigung, um Tablespace »%s« zu erzeugen" -#: parser/parse_expr.c:2330 -msgid "There are multiple equally-plausible candidates." -msgstr "Es gibt mehrere gleichermaßen plausible Kandidaten." +#: commands/tablespace.c:246 +msgid "Must be superuser to create a tablespace." +msgstr "Nur Superuser können Tablespaces anlegen." -#: parser/parse_expr.c:2422 -msgid "IS DISTINCT FROM requires = operator to yield boolean" -msgstr "IS DISTINCT FROM erfordert, dass Operator = boolean ergibt" +#: commands/tablespace.c:262 +msgid "tablespace location cannot contain single quotes" +msgstr "Tablespace-Pfad darf keine Apostrophe enthalten" -#: parser/parse_func.c:147 +#: commands/tablespace.c:272 +msgid "tablespace location must be an absolute path" +msgstr "Tablespace-Pfad muss ein absoluter Pfad sein" + +#: commands/tablespace.c:283 #, c-format -msgid "argument name \"%s\" used more than once" -msgstr "Argumentname »%s« mehrmals angegeben" +msgid "tablespace location \"%s\" is too long" +msgstr "Tablespace-Pfad »%s« ist zu lang" -#: parser/parse_func.c:158 -msgid "positional argument cannot follow named argument" -msgstr "Positionsargument kann nicht hinter benanntem Argument stehen" +#: commands/tablespace.c:293 commands/tablespace.c:857 +#, c-format +msgid "unacceptable tablespace name \"%s\"" +msgstr "inakzeptabler Tablespace-Name »%s«" -#: parser/parse_func.c:236 +#: commands/tablespace.c:295 commands/tablespace.c:858 +msgid "The prefix \"pg_\" is reserved for system tablespaces." +msgstr "Der Präfix »pg_« ist für System-Tablespaces reserviert." + +#: commands/tablespace.c:305 commands/tablespace.c:870 #, c-format -msgid "%s(*) specified, but %s is not an aggregate function" -msgstr "%s(*) angegeben, aber %s ist keine Aggregatfunktion" +msgid "tablespace \"%s\" already exists" +msgstr "Tablespace »%s« existiert bereits" -#: parser/parse_func.c:243 +#: commands/tablespace.c:377 commands/tablespace.c:529 +#: replication/basebackup.c:169 replication/basebackup.c:756 +msgid "tablespaces are not supported on this platform" +msgstr "Tablespaces werden auf dieser Plattform nicht unterstützt" + +#: commands/tablespace.c:415 commands/tablespace.c:841 +#: commands/tablespace.c:908 commands/tablespace.c:1013 +#: commands/tablespace.c:1079 commands/tablespace.c:1217 +#: commands/tablespace.c:1417 #, c-format -msgid "DISTINCT specified, but %s is not an aggregate function" -msgstr "DISTINCT wurde angegeben, aber %s ist keine Aggregatfunktion" +msgid "tablespace \"%s\" does not exist" +msgstr "Tablespace »%s« existiert nicht" -#: parser/parse_func.c:249 +#: commands/tablespace.c:421 #, c-format -msgid "ORDER BY specified, but %s is not an aggregate function" -msgstr "ORDER BY angegeben, aber %s ist keine Aggregatfunktion" +msgid "tablespace \"%s\" does not exist, skipping" +msgstr "Tablespace »%s« existiert nicht, wird übersprungen" -#: parser/parse_func.c:255 +#: commands/tablespace.c:486 #, 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" +msgid "tablespace \"%s\" is not empty" +msgstr "Tablespace »%s« ist nicht leer" -#: parser/parse_func.c:277 +#: commands/tablespace.c:560 #, c-format -msgid "function %s is not unique" -msgstr "Funktion %s ist nicht eindeutig" +msgid "directory \"%s\" does not exist" +msgstr "Verzeichnis »%s« existiert nicht" -#: parser/parse_func.c:280 -msgid "" -"Could not choose a best candidate function. You might need to add explicit " -"type casts." +#: commands/tablespace.c:561 +msgid "Create this directory for the tablespace before restarting the server." msgstr "" -"Konnte keine beste Kandidatfunktion auswählen. Sie müssen möglicherweise " -"ausdrückliche Typumwandlungen hinzufügen." +"Erzeugen Sie dieses Verzeichnis für den Tablespace bevor Sie den Server neu " +"starten." -#: 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 "" -"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." +#: commands/tablespace.c:566 +#, c-format +msgid "could not set permissions on directory \"%s\": %m" +msgstr "konnte Zugriffsrechte für Verzeichnis »%s« nicht setzen: %m" -#: parser/parse_func.c:302 -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." +#: commands/tablespace.c:598 +#, c-format +msgid "directory \"%s\" already in use as a tablespace" +msgstr "Verzeichnis »%s« ist bereits als Tablespace in Verwendung" -#: parser/parse_func.c:412 parser/parse_func.c:478 +#: commands/tablespace.c:613 commands/tablespace.c:777 #, c-format -msgid "%s(*) must be used to call a parameterless aggregate function" -msgstr "" -"beim Aufruf einer parameterlosen Aggregatfunktion muss %s(*) angegeben werden" +msgid "could not remove symbolic link \"%s\": %m" +msgstr "konnte symbolische Verknüpfung »%s« nicht löschen: %m" -#: parser/parse_func.c:419 -msgid "aggregates cannot return sets" -msgstr "Aggregatfunktionen können keine Ergebnismengen zurückgeben" +#: commands/tablespace.c:623 +#, c-format +msgid "could not create symbolic link \"%s\": %m" +msgstr "konnte symbolische Verknüpfung »%s« nicht erstellen: %m" -#: parser/parse_func.c:431 -msgid "aggregates cannot use named arguments" -msgstr "Aggregatfunktionen können keine benannten Argumente verwenden" +#: commands/tablespace.c:729 commands/tablespace.c:742 +#: commands/tablespace.c:766 +#, c-format +msgid "could not remove directory \"%s\": %m" +msgstr "konnte Verzeichnis »%s« nicht löschen: %m" -#: parser/parse_func.c:450 -msgid "window function call requires an OVER clause" -msgstr "Aufruf einer Fensterfunktion erfordert eine OVER-Klausel" +#: commands/tablespace.c:1084 +#, c-format +msgid "Tablespace \"%s\" does not exist." +msgstr "Tablespace »%s« existiert nicht." -#: parser/parse_func.c:468 -msgid "DISTINCT is not implemented for window functions" -msgstr "DISTINCT ist für Fensterfunktionen nicht implementiert" +#: commands/tablespace.c:1516 +#, c-format +msgid "directories for tablespace %u could not be removed" +msgstr "Verzeichnisse für Tablespace %u konnten nicht entfernt werden" -#: parser/parse_func.c:488 -msgid "aggregate ORDER BY is not implemented for window functions" -msgstr "" -"ORDER BY in Aggregatfunktion ist für Fensterfunktionen nicht implementiert" +#: commands/tablespace.c:1518 +msgid "You can remove the directories manually if necessary." +msgstr "Sie können die Verzeichnisse falls nötig manuell entfernen." -#: parser/parse_func.c:494 -msgid "window functions cannot return sets" -msgstr "Fensterfunktionen können keine Ergebnismengen zurückgeben" +#: commands/schemacmds.c:82 commands/schemacmds.c:275 +#, c-format +msgid "unacceptable schema name \"%s\"" +msgstr "inakzeptabler Schemaname »%s«" -#: parser/parse_func.c:505 -msgid "window functions cannot use named arguments" -msgstr "Fensterfunktionen können keine benannten Argumente verwenden" +#: commands/schemacmds.c:83 commands/schemacmds.c:276 +msgid "The prefix \"pg_\" is reserved for system schemas." +msgstr "Der Präfix »pg_« ist für Systemschemas reserviert." -#: parser/parse_func.c:1589 +#: commands/schemacmds.c:178 catalog/objectaddress.c:298 +msgid "schema name cannot be qualified" +msgstr "Schemaname kann nicht qualifiziert werden" + +#: commands/schemacmds.c:186 #, c-format -msgid "aggregate %s(*) does not exist" -msgstr "Aggregatfunktion %s(*) existiert nicht" +msgid "schema \"%s\" does not exist, skipping" +msgstr "Schema »%s« existiert nicht, wird übersprungen" -#: parser/parse_func.c:1594 +#: commands/schemacmds.c:253 commands/schemacmds.c:322 +#: catalog/namespace.c:2610 catalog/namespace.c:3599 catalog/namespace.c:3602 #, c-format -msgid "aggregate %s does not exist" -msgstr "Aggregatfunktion %s existiert nicht" +msgid "schema \"%s\" does not exist" +msgstr "Schema »%s« existiert nicht" -#: parser/parse_func.c:1613 +#: commands/schemacmds.c:259 catalog/pg_namespace.c:60 #, c-format -msgid "function %s is not an aggregate" -msgstr "Funktion %s ist keine Aggregatfunktion" +msgid "schema \"%s\" already exists" +msgstr "Schema »%s« existiert bereits" -#: parser/parse_node.c:83 +#: commands/seclabel.c:58 +msgid "no security label providers have been loaded" +msgstr "es sind keine Security-Label-Provider geladen" + +#: commands/seclabel.c:62 +msgid "" +"must specify provider when multiple security label providers have been loaded" +msgstr "" +"Provider muss angegeben werden, wenn mehrere Security-Label-Provider geladen " +"sind" + +#: commands/seclabel.c:80 #, c-format -msgid "target lists can have at most %d entries" -msgstr "Targetlisten können höchstens %d Einträge haben" +msgid "security label provider \"%s\" is not loaded" +msgstr "Security-Label-Provider »%s« ist nicht geladen" + +#: commands/portalcmds.c:61 commands/portalcmds.c:160 +#: commands/portalcmds.c:212 +msgid "invalid cursor name: must not be empty" +msgstr "ungültiger Cursorname: darf nicht leer sein" -#: parser/parse_node.c:240 +#: commands/portalcmds.c:415 +msgid "could not reposition held cursor" +msgstr "konnte gehaltenen Cursor nicht umpositionieren" + +#: commands/aggregatecmds.c:103 #, c-format -msgid "cannot subscript type %s because it is not an array" -msgstr "kann aus Typ %s kein Element auswählen, weil er kein Array ist" +msgid "aggregate attribute \"%s\" not recognized" +msgstr "Attribut »%s« für Aggregatfunktion unbekannt" -#: parser/parse_node.c:342 parser/parse_node.c:369 -msgid "array subscript must have type integer" -msgstr "Arrayindex muss Typ integer haben" +#: commands/aggregatecmds.c:113 +msgid "aggregate stype must be specified" +msgstr "»stype« für Aggregatfunktion muss angegeben werden" -#: parser/parse_node.c:393 -#, c-format -msgid "array assignment requires type %s but expression is of type %s" -msgstr "Arrayzuweisung erfordert Typ %s, aber Ausdruck hat Typ %s" +#: commands/aggregatecmds.c:117 +msgid "aggregate sfunc must be specified" +msgstr "»sfunc« für Aggregatfunktion muss angegeben werden" -#: 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 existiert nicht: %s" +#: commands/aggregatecmds.c:134 +msgid "aggregate input type must be specified" +msgstr "Eingabetyp für Aggregatfunktion muss angegeben werden" -#: parser/parse_oper.c:257 -msgid "Use an explicit ordering operator or modify the query." +#: commands/aggregatecmds.c:159 +msgid "basetype is redundant with aggregate input type specification" msgstr "" -"Verwenden Sie einen ausdrücklichen Sortieroperator oder ändern Sie die " -"Anfrage." +"Angabe »basetype« ist überflüssig bei Angabe des Eingabetyps der " +"Aggregatfunktion" -#: parser/parse_oper.c:261 utils/adt/arrayfuncs.c:3176 -#: utils/adt/arrayfuncs.c:3689 utils/adt/rowtypes.c:1157 +#: commands/aggregatecmds.c:191 #, c-format -msgid "could not identify an equality operator for type %s" -msgstr "konnte keinen Ist-Gleich-Operator für Typ %s ermitteln" +msgid "aggregate transition data type cannot be %s" +msgstr "Übergangsdatentyp von Aggregatfunktion kann nicht %s sein" -#: parser/parse_oper.c:512 +#: commands/aggregatecmds.c:230 #, c-format -msgid "operator requires run-time type coercion: %s" -msgstr "Operator erfordert Typumwandlung zur Laufzeit: %s" +msgid "aggregate %s(%s) does not exist, skipping" +msgstr "Aggregatfunktion %s(%s) existiert nicht, wird übersprungen" -#: parser/parse_oper.c:746 -#, c-format -msgid "operator is not unique: %s" -msgstr "Operator ist nicht eindeutig: %s" +#: commands/user.c:143 +msgid "SYSID can no longer be specified" +msgstr "SYSID kann nicht mehr angegeben werden" -#: parser/parse_oper.c:748 -msgid "" -"Could not choose a best candidate operator. You might need to add explicit " -"type casts." -msgstr "" -"Konnte keinen besten Kandidatoperator auswählen. Sie müssen möglicherweise " -"ausdrückliche Typumwandlungen hinzufügen." +#: commands/user.c:284 +msgid "must be superuser to create superusers" +msgstr "nur Superuser können Superuser anlegen" -#: 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 "" -"Kein Operator stimmt mit dem angegebenen Namen und den Argumenttypen " -"überein. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen." +#: commands/user.c:291 +msgid "must be superuser to create replication users" +msgstr "nur Superuser können Replikationsbenutzer anlegen" + +#: commands/user.c:298 +msgid "permission denied to create role" +msgstr "keine Berechtigung, um Rolle zu erzeugen" -#: parser/parse_oper.c:815 parser/parse_oper.c:929 +#: commands/user.c:305 commands/user.c:1087 #, c-format -msgid "operator is only a shell: %s" -msgstr "Operator ist nur eine Hülle: %s" +msgid "role name \"%s\" is reserved" +msgstr "Rollenname »%s« ist reserviert" -#: parser/parse_oper.c:917 -msgid "op ANY/ALL (array) requires array on right side" -msgstr "op ANY/ALL (array) erfordert Array auf der rechten Seite" +#: commands/user.c:318 commands/user.c:1081 +#, c-format +msgid "role \"%s\" already exists" +msgstr "Rolle »%s« existiert bereits" -#: parser/parse_oper.c:959 -msgid "op ANY/ALL (array) requires operator to yield boolean" -msgstr "op ANY/ALL (array) erfordert, dass Operator boolean ergibt" +#: commands/user.c:636 commands/user.c:842 commands/user.c:1321 +#: commands/user.c:1467 +msgid "must be superuser to alter superusers" +msgstr "nur Superuser können Superuser ändern" -#: parser/parse_oper.c:964 -msgid "op ANY/ALL (array) requires operator not to return a set" -msgstr "" -"op ANY/ALL (array) erfordert, dass Operator keine Ergebnismenge zurückgibt" +#: commands/user.c:643 +msgid "must be superuser to alter replication users" +msgstr "nur Superuser können Replikationsbenutzer ändern" -#: parser/parse_param.c:215 -#, c-format -msgid "inconsistent types deduced for parameter $%d" -msgstr "inkonsistente Typen für Parameter $%d ermittelt" +#: commands/user.c:659 commands/user.c:850 +msgid "permission denied" +msgstr "keine Berechtigung" -#: parser/parse_relation.c:147 -#, c-format -msgid "table reference \"%s\" is ambiguous" -msgstr "Tabellenbezug »%s« ist nicht eindeutig" +#: commands/user.c:878 +msgid "permission denied to drop role" +msgstr "keine Berechtigung, um Rolle zu entfernen" -#: parser/parse_relation.c:183 +#: commands/user.c:910 #, c-format -msgid "table reference %u is ambiguous" -msgstr "Tabellenbezug %u ist nicht eindeutig" +msgid "role \"%s\" does not exist, skipping" +msgstr "Rolle »%s« existiert nicht, wird übersprungen" -#: parser/parse_relation.c:343 -#, c-format -msgid "table name \"%s\" specified more than once" -msgstr "Tabellenname »%s« mehrmals angegeben" +#: commands/user.c:922 commands/user.c:926 +msgid "current user cannot be dropped" +msgstr "aktueller Benutzer kann nicht entfernt werden" -#: 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 "Tabelle »%s« hat %d Spalten, aber %d Spalten wurden angegeben" +#: commands/user.c:930 +msgid "session user cannot be dropped" +msgstr "aktueller Sitzungsbenutzer kann nicht entfernt werden" -#: parser/parse_relation.c:784 -#, c-format -msgid "too many column aliases specified for function %s" -msgstr "zu viele Spaltenaliasnamen für Funktion %s angegeben" +#: commands/user.c:941 +msgid "must be superuser to drop superusers" +msgstr "nur Superuser können Superuser löschen" -#: parser/parse_relation.c:850 +#: commands/user.c:954 #, 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." +msgid "role \"%s\" cannot be dropped because some objects depend on it" +msgstr "kann Rolle »%s« nicht löschen, weil andere Objekte davon abhängen" -#: parser/parse_relation.c:852 -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." +#: commands/user.c:1071 +msgid "session user cannot be renamed" +msgstr "aktueller Sitzungsbenutzer kann nicht umbenannt werden" -#: parser/parse_relation.c:1125 -msgid "" -"a column definition list is only allowed for functions returning \"record\"" -msgstr "" -"eine Spaltendefinitionsliste ist nur erlaubt bei Funktionen, die »record« " -"zurückgeben" +#: commands/user.c:1075 +msgid "current user cannot be renamed" +msgstr "aktueller Benutzer kann nicht umbenannt werden" -#: parser/parse_relation.c:1133 -msgid "a column definition list is required for functions returning \"record\"" -msgstr "" -"eine Spaltendefinitionsliste ist erforderlich bei Funktionen, die »record« " -"zurückgeben" +#: commands/user.c:1098 +msgid "must be superuser to rename superusers" +msgstr "nur Superuser können Superuser umbenennen" -#: parser/parse_relation.c:1184 -#, c-format -msgid "function \"%s\" in FROM has unsupported return type %s" -msgstr "Funktion »%s« in FROM hat nicht unterstützten Rückgabetyp %s" +#: commands/user.c:1105 +msgid "permission denied to rename role" +msgstr "keine Berechtigung, um Rolle umzubenennen" -#: parser/parse_relation.c:1258 -#, 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" +#: commands/user.c:1126 +msgid "MD5 password cleared because of role rename" +msgstr "MD5-Passwort wegen Rollenumbenennung gelöscht" -#: parser/parse_relation.c:1314 -#, c-format -msgid "joins can have at most %d columns" -msgstr "Verbunde können höchstens %d Spalten haben" +#: commands/user.c:1182 +msgid "column names cannot be included in GRANT/REVOKE ROLE" +msgstr "bei GRANT/REVOKE ROLE können keine Spaltennamen angegeben werden" -#: parser/parse_relation.c:1405 -#, c-format -msgid "WITH query \"%s\" does not have a RETURNING clause" -msgstr "WITH-Anfrage »%s« hat keine RETURNING-Klausel." +#: commands/user.c:1220 +msgid "permission denied to drop objects" +msgstr "keine Berechtigung, um Objekte zu löschen" -#: parser/parse_relation.c:2087 -#, c-format -msgid "column %d of relation \"%s\" does not exist" -msgstr "Spalte %d von Relation »%s« existiert nicht" +#: commands/user.c:1247 commands/user.c:1256 +msgid "permission denied to reassign objects" +msgstr "keine Berechtigung, um Objekte neu zuzuordnen" -#: parser/parse_relation.c:2471 +#: commands/user.c:1329 commands/user.c:1475 #, c-format -msgid "invalid reference to FROM-clause entry for table \"%s\"" -msgstr "ungültiger Verweis auf FROM-Klausel-Eintrag für Tabelle »%s«" +msgid "must have admin option on role \"%s\"" +msgstr "Admin-Option für Rolle »%s« wird benötigt" -#: parser/parse_relation.c:2474 -#, c-format -msgid "Perhaps you meant to reference the table alias \"%s\"." -msgstr "" -"Vielleicht wurde beabsichtigt, auf den Tabellenalias »%s« zu verweisen." +#: commands/user.c:1346 +msgid "must be superuser to set grantor" +msgstr "nur Superuser können Grantor setzen" -#: parser/parse_relation.c:2476 +#: commands/user.c:1371 #, 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 kein Bezug genommen werden." +msgid "role \"%s\" is a member of role \"%s\"" +msgstr "Rolle »%s« ist ein Mitglied der Rolle »%s«" -#: parser/parse_relation.c:2482 +#: commands/user.c:1386 #, c-format -msgid "missing FROM-clause entry for table \"%s\"" -msgstr "fehlender Eintrag in FROM-Klausel für Tabelle »%s«" +msgid "role \"%s\" is already a member of role \"%s\"" +msgstr "Rolle »%s« ist schon Mitglied der Rolle »%s«" -#: parser/parse_target.c:382 parser/parse_target.c:670 +#: commands/user.c:1497 #, c-format -msgid "cannot assign to system column \"%s\"" -msgstr "kann Systemspalte »%s« keinen Wert zuweisen" - -#: parser/parse_target.c:410 -msgid "cannot set an array element to DEFAULT" -msgstr "kann Arrayelement nicht auf DEFAULT setzen" - -#: parser/parse_target.c:415 -msgid "cannot set a subfield to DEFAULT" -msgstr "kann Subfeld nicht auf DEFAULT setzen" +msgid "role \"%s\" is not a member of role \"%s\"" +msgstr "Rolle »%s« ist kein Mitglied der Rolle »%s«" -#: parser/parse_target.c:484 +#: commands/foreigncmds.c:135 commands/foreigncmds.c:144 #, c-format -msgid "column \"%s\" is of type %s but expression is of type %s" -msgstr "Spalte »%s« hat Typ %s, aber der Ausdruck hat Typ %s" +msgid "option \"%s\" not found" +msgstr "Option »%s« nicht gefunden" -#: parser/parse_target.c:654 +#: commands/foreigncmds.c:154 #, c-format -msgid "" -"cannot assign to field \"%s\" of column \"%s\" because its type %s is not a " -"composite type" -msgstr "" -"kann Feld »%s« in Spalte »%s« nicht setzen, weil ihr Typ %s kein " -"zusammengesetzter Typ ist" +msgid "option \"%s\" provided more than once" +msgstr "Option »%s« mehrmals angegeben" -#: parser/parse_target.c:663 +#: commands/foreigncmds.c:221 commands/foreigncmds.c:229 #, c-format -msgid "" -"cannot assign to field \"%s\" of column \"%s\" because there is no such " -"column in data type %s" +msgid "permission denied to change owner of foreign-data wrapper \"%s\"" msgstr "" -"kann Feld »%s« in Spalte »%s« nicht setzen, weil es keine solche Spalte in " -"Datentyp %s gibt" +"keine Berechtigung, um Eigentümer des Fremddaten-Wrappers »%s« zu ändern" -#: parser/parse_target.c:730 -#, c-format -msgid "" -"array assignment to \"%s\" requires type %s but expression is of type %s" -msgstr "Wertzuweisung für »%s« erfordert Typ %s, aber Ausdruck hat Typ %s" +#: commands/foreigncmds.c:223 +msgid "Must be superuser to change owner of a foreign-data wrapper." +msgstr "Nur Superuser können den Eigentümer eines Fremddaten-Wrappers ändern." -#: parser/parse_target.c:740 -#, c-format -msgid "subfield \"%s\" is of type %s but expression is of type %s" -msgstr "Subfeld »%s« hat Typ %s, aber der Ausdruck hat Typ %s" +#: commands/foreigncmds.c:231 +msgid "The owner of a foreign-data wrapper must be a superuser." +msgstr "Der Eigentümer eines Fremddaten-Wrappers muss ein Superuser sein." -#: parser/parse_target.c:1126 -msgid "SELECT * with no tables specified is not valid" -msgstr "SELECT * ist nicht gültig, wenn keine Tabellen angegeben sind" +#: commands/foreigncmds.c:265 commands/foreigncmds.c:636 +#: commands/foreigncmds.c:784 foreign/foreign.c:524 +#, c-format +msgid "foreign-data wrapper \"%s\" does not exist" +msgstr "Fremddaten-Wrapper »%s« existiert nicht" -#: parser/parse_type.c:83 +#: commands/foreigncmds.c:292 catalog/aclchk.c:3873 catalog/aclchk.c:4555 #, c-format -msgid "improper %%TYPE reference (too few dotted names): %s" -msgstr "falscher %%TYPE-Verweis (zu wenige Namensteile): %s" +msgid "foreign-data wrapper with OID %u does not exist" +msgstr "Fremddaten-Wrapper mit OID %u existiert nicht" -#: parser/parse_type.c:105 +#: commands/foreigncmds.c:366 commands/foreigncmds.c:962 +#: commands/foreigncmds.c:1050 commands/foreigncmds.c:1334 +#: foreign/foreign.c:544 #, c-format -msgid "improper %%TYPE reference (too many dotted names): %s" -msgstr "falscher %%TYPE-Verweis (zu viele Namensteile): %s" +msgid "server \"%s\" does not exist" +msgstr "Server »%s« existiert nicht" -#: parser/parse_type.c:127 +#: commands/foreigncmds.c:391 catalog/aclchk.c:3934 catalog/aclchk.c:4582 #, c-format -msgid "type reference %s converted to %s" -msgstr "Typverweis %s in %s umgewandelt" +msgid "foreign server with OID %u does not exist" +msgstr "Fremdserver mit OID %u existiert nicht" -#: parser/parse_type.c:202 utils/cache/typcache.c:176 +#: commands/foreigncmds.c:418 #, c-format -msgid "type \"%s\" is only a shell" -msgstr "Typ »%s« ist nur eine Hülle" +msgid "function %s must return type \"fdw_handler\"" +msgstr "Funktion %s muss Typ »fdw_handler« zurückgeben" -#: parser/parse_type.c:287 +#: commands/foreigncmds.c:513 #, c-format -msgid "type modifier is not allowed for type \"%s\"" -msgstr "Typmodifikator ist für Typ »%s« nicht erlaubt" +msgid "permission denied to create foreign-data wrapper \"%s\"" +msgstr "keine Berechtigung, um Fremddaten-Wrapper »%s« zu erzeugen" -#: parser/parse_type.c:330 -msgid "type modifiers must be simple constants or identifiers" -msgstr "Typmodifikatoren müssen einfache Konstanten oder Bezeichner sein" +#: commands/foreigncmds.c:515 +msgid "Must be superuser to create a foreign-data wrapper." +msgstr "Nur Superuser können Fremddaten-Wrapper anlegen." -#: parser/parse_type.c:641 parser/parse_type.c:740 +#: commands/foreigncmds.c:526 #, c-format -msgid "invalid type name \"%s\"" -msgstr "ungültiger Typname: »%s«" +msgid "foreign-data wrapper \"%s\" already exists" +msgstr "Fremddaten-Wrapper »%s« existiert bereits" -#: parser/parse_utilcmd.c:180 +#: commands/foreigncmds.c:626 #, c-format -msgid "relation \"%s\" already exists, skipping" -msgstr "Relation »%s« existiert bereits, wird übersprungen" +msgid "permission denied to alter foreign-data wrapper \"%s\"" +msgstr "keine Berechtigung, um Fremddaten-Wrapper »%s« zu ändern" -#: parser/parse_utilcmd.c:333 -msgid "array of serial is not implemented" -msgstr "Array aus Typ serial ist nicht implementiert" +#: commands/foreigncmds.c:628 +msgid "Must be superuser to alter a foreign-data wrapper." +msgstr "Nur Superuser können Fremddaten-Wrapper ändern." -#: parser/parse_utilcmd.c:378 -#, c-format -msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\"" -msgstr "%s erstellt implizit eine Sequenz »%s« für die »serial«-Spalte »%s.%s«" +#: commands/foreigncmds.c:659 +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" -#: parser/parse_utilcmd.c:479 parser/parse_utilcmd.c:491 -#, c-format +#: commands/foreigncmds.c:673 msgid "" -"conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\"" +"changing the foreign-data wrapper validator can cause the options for " +"dependent objects to become invalid" msgstr "" -"widersprüchliche NULL/NOT NULL-Deklarationen für Spalte »%s« von Tabelle »%s«" +"durch Ändern des Validators des Fremddaten-Wrappers können die Optionen von " +"abhängigen Objekten ungültig werden" -#: parser/parse_utilcmd.c:503 +#: commands/foreigncmds.c:775 #, c-format -msgid "multiple default values specified for column \"%s\" of table \"%s\"" -msgstr "mehrere Vorgabewerte angegeben für Spalte »%s« von Tabelle »%s«" +msgid "permission denied to drop foreign-data wrapper \"%s\"" +msgstr "keine Berechtigung, um Fremddaten-Wrapper »%s« zu löschen" -#: parser/parse_utilcmd.c:1438 -msgid "cannot use an existing index in CREATE TABLE" -msgstr "bestehender Index kann nicht in CREATE TABLE verwendet werden" +#: commands/foreigncmds.c:777 +msgid "Must be superuser to drop a foreign-data wrapper." +msgstr "Nur Superuser können Fremddaten-Wrapper löschen." -#: parser/parse_utilcmd.c:1458 +#: commands/foreigncmds.c:789 #, c-format -msgid "index \"%s\" is already associated with a constraint" -msgstr "" +msgid "foreign-data wrapper \"%s\" does not exist, skipping" +msgstr "Fremddaten-Wrapper »%s« existiert nicht, wird übersprungen" -#: parser/parse_utilcmd.c:1466 -#, fuzzy, c-format -msgid "index \"%s\" does not belong to table \"%s\"" -msgstr "Index »%s« existiert nicht" +#: commands/foreigncmds.c:858 +#, c-format +msgid "server \"%s\" already exists" +msgstr "Server »%s« existiert bereits" -#: parser/parse_utilcmd.c:1473 -#, fuzzy, c-format -msgid "index \"%s\" is not valid" -msgstr "Index »%s« ist kein Hash-Index" +#: commands/foreigncmds.c:1054 +#, c-format +msgid "server \"%s\" does not exist, skipping" +msgstr "Server »%s« existiert nicht, wird übersprungen" -#: parser/parse_utilcmd.c:1479 -#, fuzzy, c-format -msgid "index \"%s\" is not ready" -msgstr "Index »%s« ist kein B-Tree" +#: commands/foreigncmds.c:1159 +#, c-format +msgid "user mapping \"%s\" already exists for server %s" +msgstr "Benutzerabbildung »%s« existiert bereits für Server »%s«" -#: parser/parse_utilcmd.c:1485 -#, fuzzy, c-format -msgid "\"%s\" is not a unique index" -msgstr "»%s« ist kein Index" +#: commands/foreigncmds.c:1245 commands/foreigncmds.c:1350 +#, c-format +msgid "user mapping \"%s\" does not exist for the server" +msgstr "Benutzerabbildung »%s« existiert für den Server nicht" + +#: commands/foreigncmds.c:1337 +msgid "server does not exist, skipping" +msgstr "Server existiert nicht, wird übersprungen" -#: 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." +#: commands/foreigncmds.c:1355 +#, c-format +msgid "user mapping \"%s\" does not exist for the server, skipping" msgstr "" +"Benutzerabbildung »%s« existiert nicht für den Server, wird übersprungen" -#: parser/parse_utilcmd.c:1492 -#, fuzzy, c-format -msgid "index \"%s\" contains expressions" -msgstr "Index »%s« hat falsche Hash-Version" +#: commands/vacuum.c:419 +msgid "oldest xmin is far in the past" +msgstr "älteste xmin ist weit in der Vergangenheit" -#: parser/parse_utilcmd.c:1499 -#, fuzzy, c-format -msgid "\"%s\" is a partial index" -msgstr "»%s« ist ein Index" +#: commands/vacuum.c:420 +msgid "Close open transactions soon to avoid wraparound problems." +msgstr "" +"Schließen Sie bald alle offenen Transaktionen, um Überlaufprobleme zu " +"vermeiden." -#: parser/parse_utilcmd.c:1511 -#, fuzzy, c-format -msgid "\"%s\" is a deferrable index" -msgstr "»%s« ist keine Tabelle und kein Index" +#: commands/vacuum.c:811 +msgid "some databases have not been vacuumed in over 2 billion transactions" +msgstr "" +"einige Datenbanken sind seit über 2 Milliarden Transaktionen nicht gevacuumt " +"worden" -#: parser/parse_utilcmd.c:1512 -#, fuzzy -msgid "Cannot create a non-deferrable constraint using a deferrable index." +#: commands/vacuum.c:812 +msgid "You might have already suffered transaction-wraparound data loss." msgstr "" -"aufschiebbarer Unique-Constraint kann nicht für Tabelle »%s«, auf die " -"verwiesen wird, verwendet werden" +"Sie haben möglicherweise bereits Daten wegen Transaktionsnummernüberlauf " +"verloren." -#: parser/parse_utilcmd.c:1525 -#, fuzzy, c-format -msgid "index \"%s\" is not a b-tree" -msgstr "Index »%s« ist kein B-Tree" +#: commands/vacuum.c:919 +#, c-format +msgid "skipping vacuum of \"%s\" --- lock not available" +msgstr "überspringe Vacuum von »%s« --- Sperre nicht verfügbar" -#: parser/parse_utilcmd.c:1569 -#, fuzzy, c-format -msgid "index \"%s\" does not have default sorting behavior" -msgstr "Index »%s« existiert nicht, wird übersprungen" +#: commands/vacuum.c:945 +#, c-format +msgid "skipping \"%s\" --- only superuser can vacuum it" +msgstr "überspringe »%s« --- nur Superuser kann sie vacuumen" -#: parser/parse_utilcmd.c:1714 +#: commands/vacuum.c:949 #, c-format -msgid "column \"%s\" appears twice in primary key constraint" -msgstr "Spalte »%s« erscheint zweimal im Primärschlüssel-Constraint" +msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" +msgstr "" +"überspringe »%s« --- nur Superuser oder Eigentümer der Datenbank kann sie " +"vacuumen" -#: parser/parse_utilcmd.c:1720 +#: commands/vacuum.c:953 #, c-format -msgid "column \"%s\" appears twice in unique constraint" -msgstr "Spalte »%s« erscheint zweimal im Unique Constraint" +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" -#: parser/parse_utilcmd.c:1884 -msgid "index expression cannot return a set" -msgstr "Indexausdruck kann keine Ergebnismenge zurückgeben" +#: commands/vacuum.c:970 +#, 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/async.c:567 +msgid "channel name cannot be empty" +msgstr "Kanalname kann nicht leer sein" + +#: commands/async.c:572 +msgid "channel name too long" +msgstr "Kanalname zu lang" + +#: commands/async.c:579 +msgid "payload string too long" +msgstr "Payload-Zeichenkette zu lang" -#: parser/parse_utilcmd.c:1894 +#: commands/async.c:764 msgid "" -"index expressions and predicates can refer only to the table being indexed" +"cannot PREPARE a transaction that has executed LISTEN, UNLISTEN or NOTIFY" msgstr "" -"Indexausdrücke und -prädikate können nur auf die zu indizierende Tabelle " -"verweisen" +"PREPARE kann nicht in einer Transaktion ausgeführt werden, die LISTEN, " +"UNLISTEN oder NOTIFY ausgeführt hat" -#: parser/parse_utilcmd.c:1991 -msgid "rule WHERE condition cannot contain references to other relations" -msgstr "" -"WHERE-Bedingung einer Regel kann keine Verweise auf andere Relationen " -"enthalten" +#: commands/async.c:867 +msgid "too many notifications in the NOTIFY queue" +msgstr "zu viele Benachrichtigungen in NOTIFY-Schlange" -#: parser/parse_utilcmd.c:1997 -msgid "cannot use aggregate function in rule WHERE condition" -msgstr "" -"Aggregatfunktionen können nicht in der WHERE-Bedingung einer Regel verwendet " -"werden" +#: commands/async.c:1440 +#, c-format +msgid "NOTIFY queue is %.0f%% full" +msgstr "NOTIFY-Schlange ist %.0f%% voll" -#: parser/parse_utilcmd.c:2001 -msgid "cannot use window function in rule WHERE condition" +#: commands/async.c:1442 +#, c-format +msgid "" +"The server process with PID %d is among those with the oldest transactions." msgstr "" -"Fensterfunktionen können nicht in der WHERE-Bedingung einer Regel verwendet " -"werden" +"Der Serverprozess mit PID %d gehört zu denen mit den ältesten Transaktionen." -#: parser/parse_utilcmd.c:2073 +#: commands/async.c:1445 msgid "" -"rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE " -"actions" +"The NOTIFY queue cannot be emptied until that process ends its current " +"transaction." msgstr "" -"Regeln mit WHERE-Bedingungen können als Aktion nur SELECT, INSERT, UPDATE " -"oder DELETE haben" - -#: 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/INTERSECTION/EXCEPT mit Bedingung sind nicht implementiert" +"Die NOTIFY-Schlange kann erst geleert werden, wenn dieser Prozess seine " +"aktuelle Transaktion beendet." -#: parser/parse_utilcmd.c:2109 -msgid "ON SELECT rule cannot use OLD" -msgstr "ON-SELECT-Regel kann nicht OLD verwenden" +#: commands/trigger.c:169 +#, c-format +msgid "\"%s\" is a table" +msgstr "»%s« ist eine Tabelle" -#: parser/parse_utilcmd.c:2113 -msgid "ON SELECT rule cannot use NEW" -msgstr "ON-SELECT-Regel kann nicht NEW verwenden" +#: commands/trigger.c:171 +msgid "Tables cannot have INSTEAD OF triggers." +msgstr "Tabellen können keine INSTEAD OF-Trigger haben." -#: parser/parse_utilcmd.c:2122 -msgid "ON INSERT rule cannot use OLD" -msgstr "ON-INSERT-Regel kann nicht OLD verwenden" +#: commands/trigger.c:182 commands/trigger.c:189 +#, c-format +msgid "\"%s\" is a view" +msgstr "»%s« ist eine Sicht" -#: parser/parse_utilcmd.c:2128 -msgid "ON DELETE rule cannot use NEW" -msgstr "ON-DELETE-Regel kann nicht NEW verwenden" +#: commands/trigger.c:184 +msgid "Views cannot have row-level BEFORE or AFTER triggers." +msgstr "Sichten können keine BEFORE- oder AFTER-Trigger auf Zeilenebene haben." -#: parser/parse_utilcmd.c:2156 -msgid "cannot refer to OLD within WITH query" -msgstr "" +#: commands/trigger.c:191 +msgid "Views cannot have TRUNCATE triggers." +msgstr "Sichten können keine TRUNCATE-Trigger haben." -#: parser/parse_utilcmd.c:2163 -msgid "cannot refer to NEW within WITH query" -msgstr "" +#: commands/trigger.c:243 +msgid "TRUNCATE FOR EACH ROW triggers are not supported" +msgstr "TRUNCATE FOR EACH ROW-Trigger werden nicht unterstützt" -#: parser/parse_utilcmd.c:2446 -msgid "misplaced DEFERRABLE clause" -msgstr "falsch platzierte DEFERRABLE-Klausel" +#: commands/trigger.c:251 +msgid "INSTEAD OF triggers must be FOR EACH ROW" +msgstr "INSTEAD OF-Trigger müssen FOR EACH ROW sein" -#: parser/parse_utilcmd.c:2451 parser/parse_utilcmd.c:2466 -msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" -msgstr "mehrere DEFERRABLE/NOT DEFERRABLE-Klauseln sind nicht erlaubt" +#: commands/trigger.c:255 +msgid "INSTEAD OF triggers cannot have WHEN conditions" +msgstr "INSTEAD OF-Trigger können keine WHEN-Bedingungen haben" -#: parser/parse_utilcmd.c:2461 -msgid "misplaced NOT DEFERRABLE clause" -msgstr "falsch platzierte NOT DEFERRABLE-Klausel" +#: commands/trigger.c:259 +msgid "INSTEAD OF triggers cannot have column lists" +msgstr "INSTEAD OF-Trigger können keine Spaltenlisten haben" -#: parser/parse_utilcmd.c:2474 parser/parse_utilcmd.c:2500 gram.y:4145 -#: gram.y:4161 -msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" +#: commands/trigger.c:303 +msgid "cannot use subquery in trigger WHEN condition" msgstr "" -"Constraint, der als INITIALLY DEFERRED deklariert wurde, muss DEFERRABLE sein" - -#: parser/parse_utilcmd.c:2482 -msgid "misplaced INITIALLY DEFERRED clause" -msgstr "falsch platzierte INITIALLY DEFERRED-Klausel" +"Unteranfragen können nicht in der WHEN-Bedingung eines Triggers verwendet " +"werden" -#: parser/parse_utilcmd.c:2487 parser/parse_utilcmd.c:2513 -msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" -msgstr "mehrere INITIALLY IMMEDIATE/DEFERRED-Klauseln sind nicht erlaubt" +#: commands/trigger.c:307 +msgid "cannot use aggregate function in trigger WHEN condition" +msgstr "" +"Aggregatfunktionen können nicht in der WHEN-Bedingung eines Triggers " +"verwendet werden" -#: parser/parse_utilcmd.c:2508 -msgid "misplaced INITIALLY IMMEDIATE clause" -msgstr "falsch platzierte INITIALLY IMMEDIATE-Klausel" +#: commands/trigger.c:311 +msgid "cannot use window function in trigger WHEN condition" +msgstr "" +"Fensterfunktionen können nicht in der WHEN-Bedingung eines Triggers " +"verwendet werden" -#: parser/parse_utilcmd.c:2699 -#, c-format -msgid "" -"CREATE specifies a schema (%s) different from the one being created (%s)" +#: commands/trigger.c:333 commands/trigger.c:346 +msgid "statement trigger's WHEN condition cannot reference column values" msgstr "" -"CREATE gibt ein Schema an (%s) welches nicht gleich dem zu erzeugenden " -"Schema ist (%s)" +"WHEN-Bedingung eines Statement-Triggers kann keine Verweise auf Spaltenwerte " +"enthalten" -#: parser/scansup.c:190 -#, c-format -msgid "identifier \"%s\" will be truncated to \"%s\"" -msgstr "Bezeichner »%s« wird auf »%s« gekürzt" +#: commands/trigger.c:338 +msgid "INSERT trigger's WHEN condition cannot reference OLD values" +msgstr "" +"WHEN-Bedingung eines INSERT-Triggers kann keine Verweise auf OLD-Werte " +"enthalten" -#: gram.y:906 -#, fuzzy, c-format -msgid "unrecognized role option \"%s\"" -msgstr "unbekannte EXPLAIN-Option »%s«" +#: commands/trigger.c:351 +msgid "DELETE trigger's WHEN condition cannot reference NEW values" +msgstr "" +"WHEN-Bedingung eines DELETE-Triggers kann keine Verweise auf NEW-Werte " +"enthalten" -#: gram.y:1292 -msgid "current database cannot be changed" -msgstr "aktuelle Datenbank kann nicht geändert werden" +#: commands/trigger.c:356 +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" -#: gram.y:1410 gram.y:1425 -msgid "time zone interval must be HOUR or HOUR TO MINUTE" -msgstr "Zeitzonenintervall muss HOUR oder HOUR TO MINUTE sein" +#: commands/trigger.c:401 +#, c-format +msgid "changing return type of function %s from \"opaque\" to \"trigger\"" +msgstr "ändere Rückgabetyp von Funktion %s von »opaque« in »trigger«" -#: gram.y:1430 gram.y:9250 gram.y:11740 -msgid "interval precision specified twice" -msgstr "Intervallpräzision doppelt angegeben" +#: commands/trigger.c:408 +#, c-format +msgid "function %s must return type \"trigger\"" +msgstr "Funktion %s muss Typ »trigger« zurückgeben" -#: gram.y:2752 -msgid "CHECK constraints cannot be deferred" -msgstr "CHECK-Constraints sind nicht aufschiebbar" +#: commands/trigger.c:518 commands/trigger.c:1256 +#, c-format +msgid "trigger \"%s\" for relation \"%s\" already exists" +msgstr "Trigger »%s« für Relation »%s« existiert bereits" -#: 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 ist noch nicht implementiert" +#: commands/trigger.c:803 +msgid "Found referenced table's UPDATE trigger." +msgstr "UPDATE-Trigger der Zieltabelle wurde gefunden." -#: gram.y:3006 -msgid "CREATE TABLE AS cannot specify INTO" -msgstr "CREATE TABLE AS kann INTO nicht verwenden" +#: commands/trigger.c:804 +msgid "Found referenced table's DELETE trigger." +msgstr "DELETE-Trigger der Zieltabelle wurde gefunden." -#: gram.y:4058 -msgid "duplicate trigger events specified" -msgstr "mehrere Trigger-Ereignisse angegeben" +#: commands/trigger.c:805 +msgid "Found referencing table's trigger." +msgstr "Trigger der Quelltabelle wurde gefunden." -#: gram.y:4225 -msgid "CREATE ASSERTION is not yet implemented" -msgstr "CREATE ASSERTION ist noch nicht implementiert" +#: commands/trigger.c:914 commands/trigger.c:930 +#, c-format +msgid "ignoring incomplete trigger group for constraint \"%s\" %s" +msgstr "unvollständige Triggergruppe für Constraint \"%s\" %s ignoriert" -#: gram.y:4241 -msgid "DROP ASSERTION is not yet implemented" -msgstr "DROP ASSERTION ist noch nicht implementiert" +#: commands/trigger.c:942 +#, c-format +msgid "converting trigger group into constraint \"%s\" %s" +msgstr "Triggergruppe wird in Constraint \"%s\" %s umgewandelt" -#: gram.y:4577 -msgid "RECHECK is no longer required" -msgstr "RECHECK wird nicht mehr benötigt" +#: commands/trigger.c:1058 +#, c-format +msgid "trigger \"%s\" for table \"%s\" does not exist, skipping" +msgstr "Trigger »%s« für Tabelle »%s« existiert nicht, wird übersprungen" -#: gram.y:4578 -msgid "Update your data type." -msgstr "Aktualisieren Sie Ihren Datentyp." +#: commands/trigger.c:1185 commands/trigger.c:1298 commands/trigger.c:1409 +#, c-format +msgid "trigger \"%s\" for table \"%s\" does not exist" +msgstr "Trigger »%s« für Tabelle »%s« existiert nicht" -#: gram.y:6221 utils/adt/regproc.c:630 -msgid "missing argument" -msgstr "Argument fehlt" +#: commands/trigger.c:1377 +#, c-format +msgid "permission denied: \"%s\" is a system trigger" +msgstr "keine Berechtigung: »%s« ist ein Systemtrigger" -#: gram.y:6222 utils/adt/regproc.c:631 -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." +#: commands/trigger.c:1859 +#, c-format +msgid "trigger function %u returned null value" +msgstr "Triggerfunktion %u gab NULL-Wert zurück" -#: gram.y:7301 gram.y:7307 gram.y:7313 -msgid "WITH CHECK OPTION is not implemented" -msgstr "WITH CHECK OPTION ist nicht implementiert" +#: commands/trigger.c:1918 commands/trigger.c:2117 commands/trigger.c:2301 +#: commands/trigger.c:2543 +msgid "BEFORE STATEMENT trigger cannot return a value" +msgstr "Trigger für BEFORE STATEMENT kann keinen Wert zurückgeben" -#: gram.y:7990 -msgid "column name list not allowed in CREATE TABLE / AS EXECUTE" -msgstr "Spaltennamenliste nicht erlaubt in CREATE TABLE / EXECUTE" +#: commands/trigger.c:2605 executor/nodeLockRows.c:137 +#: executor/nodeModifyTable.c:366 executor/nodeModifyTable.c:588 +#: executor/execMain.c:1867 +msgid "could not serialize access due to concurrent update" +msgstr "kann Zugriff nicht serialisieren wegen gleichzeitiger Aktualisierung" -#: gram.y:8214 -msgid "number of columns does not match number of values" -msgstr "Anzahl der Spalten stimmt nicht mit der Anzahl der Werte überein" +#: commands/trigger.c:4181 catalog/namespace.c:234 catalog/namespace.c:318 +#, c-format +msgid "cross-database references are not implemented: \"%s.%s.%s\"" +msgstr "Verweise auf andere Datenbanken sind nicht implementiert: »%s.%s.%s«" -#: gram.y:8664 -msgid "LIMIT #,# syntax is not supported" -msgstr "Syntax LIMIT x,y wird nicht unterstützt" +#: commands/trigger.c:4232 +#, c-format +msgid "constraint \"%s\" is not deferrable" +msgstr "Constraint »%s« ist nicht aufschiebbar" -#: gram.y:8665 -msgid "Use separate LIMIT and OFFSET clauses." -msgstr "Verwenden Sie die getrennten Klauseln LIMIT und OFFSET." +#: commands/trigger.c:4255 +#, c-format +msgid "constraint \"%s\" does not exist" +msgstr "Constraint »%s« existiert nicht" -#: gram.y:8883 -msgid "VALUES in FROM must have an alias" -msgstr "VALUES in FROM muss Aliasnamen erhalten" +#: commands/operatorcmds.c:100 +msgid "=> is deprecated as an operator name" +msgstr "=> ist als Operatorname veraltet" -#: gram.y:8884 -msgid "For example, FROM (VALUES ...) [AS] foo." -msgstr "Zum Beispiel FROM (VALUES ...) [AS] xyz." +#: commands/operatorcmds.c:101 +msgid "" +"This name may be disallowed altogether in future versions of PostgreSQL." +msgstr "" +"Dieser Name wird möglicherweise in einer zukünftigen Version von PostgreSQL " +"nicht mehr zugelassen." -#: gram.y:8889 -msgid "subquery in FROM must have an alias" -msgstr "Unteranfrage in FROM muss Aliasnamen erhalten" +#: commands/operatorcmds.c:122 commands/operatorcmds.c:130 +msgid "SETOF type not allowed for operator argument" +msgstr "SETOF-Typ nicht als Operatorargument erlaubt" -#: gram.y:8890 -msgid "For example, FROM (SELECT ...) [AS] foo." -msgstr "Zum Beispiel FROM (SELECT ...) [AS] xyz." +#: commands/operatorcmds.c:158 +#, c-format +msgid "operator attribute \"%s\" not recognized" +msgstr "Attribut »%s« für Operator unbekannt" -#: gram.y:9376 -msgid "precision for type float must be at least 1 bit" -msgstr "Präzision von Typ float muss mindestens 1 Bit sein" +#: commands/operatorcmds.c:168 +msgid "operator procedure must be specified" +msgstr "Operatorprozedur muss angegeben werden" -#: gram.y:9385 -msgid "precision for type float must be less than 54 bits" -msgstr "Präzision von Typ float muss weniger als 54 Bits sein" +#: commands/operatorcmds.c:179 +msgid "at least one of leftarg or rightarg must be specified" +msgstr "entweder leftarg oder rightarg (oder beides) muss angegeben werden" -#: gram.y:10099 -msgid "UNIQUE predicate is not yet implemented" -msgstr "UNIQUE-Prädikat ist noch nicht implementiert" +#: commands/operatorcmds.c:228 +#, c-format +msgid "restriction estimator function %s must return type \"float8\"" +msgstr "Restriktionsschätzfunktion %s muss Typ »float8« zurückgeben" -#: gram.y:11007 -msgid "RANGE PRECEDING is only supported with UNBOUNDED" -msgstr "RANGE PRECEDING wird nur mit UNBOUNDED unterstützt" +#: commands/operatorcmds.c:267 +#, c-format +msgid "join estimator function %s must return type \"float8\"" +msgstr "Join-Schätzfunktion %s muss Typ »float8« zurückgeben" -#: gram.y:11013 -msgid "RANGE FOLLOWING is only supported with UNBOUNDED" -msgstr "RANGE FOLLOWING wird nur mit UNBOUNDED unterstützt" +#: commands/operatorcmds.c:318 +#, c-format +msgid "operator %s does not exist, skipping" +msgstr "Operator %s existiert nicht, wird übersprungen" -#: gram.y:11040 gram.y:11063 -msgid "frame start cannot be UNBOUNDED FOLLOWING" -msgstr "Frame-Beginn kann nicht UNBOUNDED FOLLOWING sein" +#: commands/typecmds.c:169 +msgid "must be superuser to create a base type" +msgstr "nur Superuser können Basistypen anlegen" -#: gram.y:11045 -msgid "frame starting from following row cannot end with current row" -msgstr "" -"Frame der in der folgenden Zeile beginnt kann nicht in der aktuellen Zeile " -"enden" +#: commands/typecmds.c:224 commands/typecmds.c:806 commands/typecmds.c:1145 +#: commands/typecmds.c:1622 catalog/pg_type.c:396 catalog/pg_type.c:699 +#: catalog/heap.c:1029 +#, c-format +msgid "type \"%s\" already exists" +msgstr "Typ »%s« existiert bereits" -#: gram.y:11068 -msgid "frame end cannot be UNBOUNDED PRECEDING" -msgstr "Frame-Ende kann nicht UNBOUNDED PRECEDING sein" +#: commands/typecmds.c:275 +#, c-format +msgid "type attribute \"%s\" not recognized" +msgstr "Typ-Attribut »%s« nicht erkannt" -#: gram.y:11074 -msgid "frame starting from current row cannot have preceding rows" -msgstr "" -"Frame der in der aktuellen Zeile beginnt kann keine vorhergehenden Zeilen " -"haben" +#: commands/typecmds.c:329 +#, c-format +msgid "invalid type category \"%s\": must be simple ASCII" +msgstr "ungültige Typenkategorie »%s«: muss einfacher ASCII-Wert sein" -#: gram.y:11081 -msgid "frame starting from following row cannot have preceding rows" -msgstr "" -"Frame der in der folgenden Zeile beginnt kann keine vorhergehenden Zeilen " -"haben" +#: commands/typecmds.c:348 +#, c-format +msgid "array element type cannot be %s" +msgstr "Arrayelementtyp kann nicht %s sein" -#: gram.y:11715 -msgid "type modifier cannot have parameter name" -msgstr "Typmodifikator kann keinen Parameternamen haben" +#: commands/typecmds.c:380 +#, c-format +msgid "alignment \"%s\" not recognized" +msgstr "Ausrichtung »%s« nicht erkannt" -#: gram.y:12310 gram.y:12518 -msgid "improper use of \"*\"" -msgstr "unzulässige Verwendung von »*«" +#: commands/typecmds.c:397 +#, c-format +msgid "storage \"%s\" not recognized" +msgstr "Storage-Typ »%s« nicht erkannt" -#: gram.y:12449 -msgid "wrong number of parameters on left side of OVERLAPS expression" -msgstr "falsche Anzahl Parameter auf linker Seite von OVERLAPS-Ausdruck" +#: commands/typecmds.c:408 +msgid "type input function must be specified" +msgstr "Typeingabefunktion muss angegeben werden" -#: gram.y:12456 -msgid "wrong number of parameters on right side of OVERLAPS expression" -msgstr "falsche Anzahl Parameter auf rechter Seite von OVERLAPS-Ausdruck" +#: commands/typecmds.c:412 +msgid "type output function must be specified" +msgstr "Typausgabefunktion muss angegeben werden" -#: gram.y:12581 -msgid "multiple ORDER BY clauses not allowed" -msgstr "mehrere ORDER-BY-Klauseln sind nicht erlaubt" +#: commands/typecmds.c:417 +msgid "" +"type modifier output function is useless without a type modifier input " +"function" +msgstr "" +"Typmodifikatorausgabefunktion ist nutzlos ohne Typmodifikatoreingabefunktion" -#: gram.y:12592 -msgid "multiple OFFSET clauses not allowed" -msgstr "mehrere OFFSET-Klauseln sind nicht erlaubt" +#: commands/typecmds.c:440 +#, c-format +msgid "changing return type of function %s from \"opaque\" to %s" +msgstr "ändere Rückgabetyp von Funktion %s von »opaque« in %s" -#: gram.y:12601 -msgid "multiple LIMIT clauses not allowed" -msgstr "mehrere LIMIT-Klauseln sind nicht erlaubt" +#: commands/typecmds.c:447 +#, c-format +msgid "type input function %s must return type %s" +msgstr "Typeingabefunktion %s muss Typ %s zurückgeben" -#: gram.y:12610 -msgid "multiple WITH clauses not allowed" -msgstr "mehrere WITH-Klauseln sind nicht erlaubt" +#: commands/typecmds.c:457 +#, c-format +msgid "changing return type of function %s from \"opaque\" to \"cstring\"" +msgstr "ändere Rückgabetyp von Funktion %s von »opaque« in »cstring«" -#: gram.y:12755 -msgid "OUT and INOUT arguments aren't allowed in TABLE functions" -msgstr "OUT- und INOUT-Argumente sind in TABLE-Funktionen nicht erlaubt" +#: commands/typecmds.c:464 +#, c-format +msgid "type output function %s must return type \"cstring\"" +msgstr "Typeausgabefunktion %s muss Typ »cstring« zurückgeben" -#: gram.y:12856 -#, fuzzy -msgid "multiple COLLATE clauses not allowed" -msgstr "mehrere LIMIT-Klauseln sind nicht erlaubt" +#: commands/typecmds.c:473 +#, c-format +msgid "type receive function %s must return type %s" +msgstr "Typempfangsfunktion %s muss Typ %s zurückgeben" -#: scan.l:411 -msgid "unterminated /* comment" -msgstr "/*-Kommentar nicht abgeschlossen" +#: commands/typecmds.c:482 +#, c-format +msgid "type send function %s must return type \"bytea\"" +msgstr "Typsendefunktion %s muss Typ »bytea« zurückgeben" -#: scan.l:440 -msgid "unterminated bit string literal" -msgstr "Bitkettenkonstante nicht abgeschlossen" +#: commands/typecmds.c:687 +#, c-format +msgid "\"%s\" is not a domain" +msgstr "»%s« ist keine Domäne" -#: scan.l:461 -msgid "unterminated hexadecimal string literal" -msgstr "hexadezimale Zeichenkette nicht abgeschlossen" +#: commands/typecmds.c:827 +#, 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" -#: scan.l:511 -msgid "unsafe use of string constant with Unicode escapes" -msgstr "unsichere Verwendung von Zeichenkette mit Unicode-Escapes" +#: commands/typecmds.c:909 +msgid "multiple default expressions" +msgstr "mehrere Vorgabeausdrücke" -#: scan.l:512 -msgid "" -"String constants with Unicode escapes cannot be used when " -"standard_conforming_strings is off." -msgstr "" -"Zeichenketten mit Unicode-Escapes können nicht verwendet werden, wenn " -"standard_conforming_strings aus ist." +#: commands/typecmds.c:973 commands/typecmds.c:982 +msgid "conflicting NULL/NOT NULL constraints" +msgstr "wiedersprüchliche NULL/NOT NULL-Constraints" -#: 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 "ungültiges Unicode-Surrogatpaar" +#: commands/typecmds.c:1001 commands/typecmds.c:1984 +msgid "unique constraints not possible for domains" +msgstr "Unique-Constraints sind nicht für Domänen möglich" -#: scan.l:586 -msgid "invalid Unicode escape" -msgstr "ungültiges Unicode-Escape" +#: commands/typecmds.c:1007 commands/typecmds.c:1990 +msgid "primary key constraints not possible for domains" +msgstr "Primärschlüssel-Constraints sind nicht fürDomänen möglich" -#: scan.l:587 -msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX." -msgstr "Unicode-Escapes müssen \\uXXXX oder \\UXXXXXXXX sein." +#: commands/typecmds.c:1013 commands/typecmds.c:1996 +msgid "exclusion constraints not possible for domains" +msgstr "Exclusion-Constraints sind nicht für Domänen möglich" -#: scan.l:598 -msgid "unsafe use of \\' in a string literal" -msgstr "unsichere Verwendung von \\' in Zeichenkettenkonstante" +#: commands/typecmds.c:1019 commands/typecmds.c:2002 +msgid "foreign key constraints not possible for domains" +msgstr "Fremdschlüssel-Constraints sind nicht für Domänen möglich" -#: scan.l:599 -msgid "" -"Use '' to write quotes in strings. \\' is insecure in client-only encodings." -msgstr "" -"Verwenden Sie '', um Quotes in Zeichenketten zu schreiben. \\' ist in " -"bestimmten Client-seitigen Kodierungen unsicher." +#: commands/typecmds.c:1028 commands/typecmds.c:2011 +msgid "specifying constraint deferrability not supported for domains" +msgstr "Setzen des Constraint-Modus wird für Domänen nicht unterstützt" -#: scan.l:629 repl_scanner.l:97 -msgid "unterminated quoted string" -msgstr "Zeichenkette nicht abgeschlossen" +#: commands/typecmds.c:1332 +#, c-format +msgid "changing argument type of function %s from \"opaque\" to \"cstring\"" +msgstr "ändere Argumenttyp von Funktion %s von »opaque« in »cstring«" -#: scan.l:674 -msgid "unterminated dollar-quoted string" -msgstr "Dollar-Quotes nicht abgeschlossen" +#: 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 catalog/pg_aggregate.c:331 parser/parse_func.c:288 +#: parser/parse_func.c:299 parser/parse_func.c:1481 +#, c-format +msgid "function %s does not exist" +msgstr "Funktion %s existiert nicht" -#: scan.l:691 scan.l:703 scan.l:717 -msgid "zero-length delimited identifier" -msgstr "Bezeichner in Anführungszeichen hat Länge null" +#: commands/typecmds.c:1383 +#, c-format +msgid "changing argument type of function %s from \"opaque\" to %s" +msgstr "ändere Argumenttyp von Funktion %s von »opaque« in %s" -#: scan.l:730 -msgid "unterminated quoted identifier" -msgstr "Bezeichner in Anführungszeichen nicht abgeschlossen" +#: commands/typecmds.c:1482 +#, c-format +msgid "typmod_in function %s must return type \"integer\"" +msgstr "typmod_in-Funktion %s muss Typ »integer« zurückgeben" -#: scan.l:834 -msgid "operator too long" -msgstr "Operator zu lang" +#: commands/typecmds.c:1509 +#, c-format +msgid "typmod_out function %s must return type \"cstring\"" +msgstr "typmod_out-Funktion %s muss Typ »cstring« zurückgeben" -#. translator: %s is typically the translation of "syntax error" -#: scan.l:992 +#: commands/typecmds.c:1536 #, c-format -msgid "%s at end of input" -msgstr "%s am Ende der Eingabe" +msgid "type analyze function %s must return type \"boolean\"" +msgstr "Typanalysefunktion %s muss Typ »boolean« zurückgeben" -#. translator: first %s is typically the translation of "syntax error" -#: scan.l:1000 +#: commands/typecmds.c:1836 #, c-format -msgid "%s at or near \"%s\"" -msgstr "%s bei »%s«" +msgid "column \"%s\" of table \"%s\" contains null values" +msgstr "Spalte »%s« von Tabelle »%s« enthält NULL-Werte" -#: scan.l:1161 scan.l:1193 +#: commands/typecmds.c:2082 +#, c-format msgid "" -"Unicode escape values cannot be used for code point values above 007F when " -"the server encoding is not UTF8" +"column \"%s\" of table \"%s\" contains values that violate the new constraint" msgstr "" -"Unicode-Escape-Werte können nicht für Code-Punkt-Werte über 007F verwendet " -"werden, wenn die Serverkodierung nicht UTF8 ist" - -#: scan.l:1189 scan.l:1325 -msgid "invalid Unicode escape value" -msgstr "ungültiger Unicode-Escape-Wert" +"Spalte »%s« von Tabelle »%s« enthält Werte, die den neuen Constraint " +"verletzen" -#: scan.l:1214 -msgid "invalid Unicode escape character" -msgstr "ungültiges Unicode-Escape-Zeichen" +#: commands/typecmds.c:2287 +#, c-format +msgid "%s is not a domain" +msgstr "%s ist keine Domäne" -#: scan.l:1381 -msgid "nonstandard use of \\' in a string literal" -msgstr "nicht standardkonforme Verwendung von \\' in Zeichenkettenkonstante" +#: commands/typecmds.c:2321 catalog/pg_constraint.c:654 +#, c-format +msgid "constraint \"%s\" for domain \"%s\" already exists" +msgstr "Constraint »%s« für Domäne »%s« existiert bereits" -#: scan.l:1382 -msgid "" -"Use '' to write quotes in strings, or use the escape string syntax (E'...')." +#: commands/typecmds.c:2369 commands/typecmds.c:2378 +msgid "cannot use table references in domain check constraint" msgstr "" -"Verwenden Sie '', um Quotes in Zeichenketten zu schreiben, oder verwenden " -"Sie die Syntax für Escape-Zeichenketten (E'...')." +"Tabellenverweise können in Domänen-Check-Constraints nicht verwendet werden" -#: scan.l:1391 -msgid "nonstandard use of \\\\ in a string literal" -msgstr "nicht standardkonforme Verwendung von \\\\ in Zeichenkettenkonstante" +#: commands/typecmds.c:2386 catalog/heap.c:2501 +msgid "cannot use subquery in check constraint" +msgstr "Unteranfragen können nicht in Check-Constraints verwendet werden" -#: scan.l:1392 -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'\\" -"\\'." +#: commands/typecmds.c:2390 catalog/heap.c:2505 +msgid "cannot use aggregate function in check constraint" +msgstr "Aggregatfunktionen können nicht in Check-Constraints verwendet werden" -#: scan.l:1406 -msgid "nonstandard use of escape in a string literal" -msgstr "nicht standardkonforme Verwendung von Escape in Zeichenkettenkonstante" +#: commands/typecmds.c:2394 catalog/heap.c:2509 +msgid "cannot use window function in check constraint" +msgstr "Fensterfunktionen können nicht in Check-Constraints verwendet werden" -#: scan.l:1407 -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'." +#: commands/typecmds.c:2608 commands/typecmds.c:2680 commands/typecmds.c:2919 +#, c-format +msgid "%s is a table's row type" +msgstr "%s ist der Zeilentyp einer Tabelle" -#: port/win32/signal.c:189 +#: commands/typecmds.c:2610 commands/typecmds.c:2682 commands/typecmds.c:2921 +msgid "Use ALTER TABLE instead." +msgstr "Verwenden Sie stattdessen ALTER TABLE." + +#: commands/typecmds.c:2617 commands/typecmds.c:2689 commands/typecmds.c:2838 #, c-format -msgid "could not create signal listener pipe for pid %d: error code %d" -msgstr "" -"konnte Listener-Pipe für Signale für PID %d nicht erzeugen: Fehlercode %d" +msgid "cannot alter array type %s" +msgstr "Array-Typ %s kann nicht verändert werden" -#: port/win32/signal.c:269 port/win32/signal.c:301 +#: commands/typecmds.c:2619 commands/typecmds.c:2691 commands/typecmds.c:2840 #, c-format -msgid "could not create signal listener pipe: error code %d; retrying\n" +msgid "You can alter type %s, which will alter the array type as well." msgstr "" -"konnte Listener-Pipe für Signale nicht erzeugen: Fehlercode %d; wiederhole " -"Versuch\n" +"Sie können den Typ %s ändern, wodurch der Array-Typ ebenfalls geändert wird." -#: port/win32/signal.c:312 +#: commands/typecmds.c:2905 #, c-format -msgid "could not create signal dispatch thread: error code %d\n" -msgstr "konnte Signal-Dispatch-Thread nicht erzeugen: Fehlercode %d\n" +msgid "type \"%s\" already exists in schema \"%s\"" +msgstr "Typ %s existiert bereits in Schema »%s«" -#: port/win32/security.c:43 +#: commands/tsearchcmds.c:117 commands/tsearchcmds.c:1044 #, c-format -msgid "could not open process token: error code %d\n" -msgstr "konnte Prozess-Token nicht öffnen: Fehlercode %d\n" +msgid "function %s should return type %s" +msgstr "Function %s sollte Rückgabetyp %s haben" -#: port/win32/security.c:63 -#, c-format -msgid "could not get SID for Administrators group: error code %d\n" -msgstr "konnte SID der Administrators-Gruppe nicht ermitteln: Fehlercode %d\n" +#: commands/tsearchcmds.c:189 +msgid "must be superuser to create text search parsers" +msgstr "nur Superuser können Textsucheparser anlegen" -#: port/win32/security.c:72 +#: commands/tsearchcmds.c:237 #, c-format -msgid "could not get SID for PowerUsers group: error code %d\n" -msgstr "konnte SID der PowerUsers-Gruppe nicht ermitteln: Fehlercode %d\n" - -#: port/win32/crashdump.c:108 -msgid "could not load dbghelp.dll, cannot write crashdump\n" -msgstr "" +msgid "text search parser parameter \"%s\" not recognized" +msgstr "Textsucheparserparameter »%s« nicht erkannt" -#: port/win32/crashdump.c:116 -#, fuzzy -msgid "" -"could not load required functions in dbghelp.dll, cannot write crashdump\n" -msgstr "konnte den nötigen Checkpoint-Datensatz nicht finden" +#: commands/tsearchcmds.c:247 +msgid "text search parser start method is required" +msgstr "Textsucheparserstartmethode muss angegeben werden" -#: port/win32/crashdump.c:147 -#, fuzzy, c-format -msgid "could not open crash dump file %s for writing: error code %u\n" -msgstr "konnte Datei »%s« nicht zum Schreiben öffnen: %m" +#: commands/tsearchcmds.c:252 +msgid "text search parser gettoken method is required" +msgstr "Gettoken-Methode für Textsucheparser muss angegeben werden" -#: port/win32/crashdump.c:154 -#, fuzzy, c-format -msgid "wrote crash dump to %s\n" -msgstr "Löschvorgang löscht ebenfalls %s" +#: commands/tsearchcmds.c:257 +msgid "text search parser end method is required" +msgstr "Textsucheparserendemethode muss angegeben werden" -#: port/win32/crashdump.c:156 -#, fuzzy, c-format -msgid "could not write crash dump to %s: error code %08x\n" -msgstr "konnte Semaphore nicht erzeugen: Fehlercode %d" +#: commands/tsearchcmds.c:262 +msgid "text search parser lextypes method is required" +msgstr "Lextypes-Methode für Textsucheparser muss angegeben werden" -#: port/win32_sema.c:94 -#, c-format -msgid "could not create semaphore: error code %d" -msgstr "konnte Semaphore nicht erzeugen: Fehlercode %d" +#: commands/tsearchcmds.c:297 +msgid "must be superuser to drop text search parsers" +msgstr "nur Superuser können Textsucheparser löschen" -#: port/win32_sema.c:161 +#: commands/tsearchcmds.c:320 catalog/namespace.c:1906 #, c-format -msgid "could not lock semaphore: error code %d" -msgstr "konnte Semaphore nicht sperren: Fehlercode %d" +msgid "text search parser \"%s\" does not exist" +msgstr "Textsucheparser »%s« existiert nicht" -#: port/win32_sema.c:174 +#: commands/tsearchcmds.c:326 #, c-format -msgid "could not unlock semaphore: error code %d" -msgstr "konnte Semaphore nicht entsperren: Fehlercode %d" +msgid "text search parser \"%s\" does not exist, skipping" +msgstr "Textsucheparser »%s« existiert nicht, wird übersprungen" -#: port/win32_sema.c:203 -#, c-format -msgid "could not try-lock semaphore: error code %d" -msgstr "konnte Semaphore nicht versuchsweise sperren: Fehlercode %d" +#: commands/tsearchcmds.c:381 +msgid "must be superuser to rename text search parsers" +msgstr "nur Superuser können Textsucheparser umbenennen" -#: port/win32_shmem.c:168 port/win32_shmem.c:203 port/win32_shmem.c:224 +#: commands/tsearchcmds.c:399 #, c-format -msgid "could not create shared memory segment: %lu" -msgstr "konnte Shared-Memory-Segment nicht erzeugen: %lu" +msgid "text search parser \"%s\" already exists" +msgstr "Textsucheparser »%s« existiert bereits" -#: port/win32_shmem.c:169 +#: commands/tsearchcmds.c:525 #, c-format -msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)." -msgstr "" -"Fehlgeschlagener Systemaufruf war CreateFileMapping(Größe=%lu, Name=%s)." - -#: port/win32_shmem.c:193 -msgid "pre-existing shared memory block is still in use" -msgstr "bereits bestehender Shared-Memory-Block wird noch benutzt" - -#: port/win32_shmem.c:194 -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 -msgid "Failed system call was DuplicateHandle." -msgstr "Fehlgeschlagener Systemaufruf war DuplicateHandle." +msgid "text search template \"%s\" does not accept options" +msgstr "Textsuchevorlage »%s« akzeptiert keine Optionen" -#: port/win32_shmem.c:225 -msgid "Failed system call was MapViewOfFileEx." -msgstr "Fehlgeschlagener Systemaufruf war MapViewOfFileEx." +#: commands/tsearchcmds.c:598 +msgid "text search template is required" +msgstr "Textsuchevorlage muss angegeben werden" -#: port/sysv_sema.c:114 port/pg_sema.c:114 +#: commands/tsearchcmds.c:667 #, c-format -msgid "could not create semaphores: %m" -msgstr "konnte Semaphore nicht erzeugen: %m" +msgid "text search dictionary \"%s\" already exists" +msgstr "Textsuchewörterbuch »%s« existiert bereits" -#: port/sysv_sema.c:115 port/pg_sema.c:115 +#: commands/tsearchcmds.c:769 catalog/namespace.c:2029 #, c-format -msgid "Failed system call was semget(%lu, %d, 0%o)." -msgstr "Fehlgeschlagener Systemaufruf war semget(%lu, %d, 0%o)." +msgid "text search dictionary \"%s\" does not exist" +msgstr "Textsuchewörterbuch »%s« existiert nicht" -#: port/sysv_sema.c:119 port/pg_sema.c:119 -#, fuzzy -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 "" -"Dieser Fehler bedeutet *nicht*, dass kein Platz mehr auf der Festplatte " -"ist.\n" -"Er tritt auf, wenn entweder die Systemhöchstgrenze für die Anzahl Semaphor-" -"Sets (SEMMNI) oder die Systemhöchstgrenze für die Anzahl Semaphore (SEMMNS) " -"überschritten würde. Sie müssen den entsprechenden Kernelparameter " -"erhöhen. Alternativ können Sie den Semaphorverbrauch von PostgreSQL " -"reduzieren indem Sie den Parameter »max_connections« herabsetzen (aktuell " -"%d).\n" -"Die PostgreSQL-Dokumentation enthält weitere Informationen, wie Sie Ihr " -"System für PostgreSQL konfigurieren können." +#: commands/tsearchcmds.c:775 +#, c-format +msgid "text search dictionary \"%s\" does not exist, skipping" +msgstr "Textsuchewörterbuch »%s« existiert nicht, wird übersprungen" + +#: commands/tsearchcmds.c:1108 +msgid "must be superuser to create text search templates" +msgstr "nur Superuser können Textsuchevorlagen erzeugen" -#: port/sysv_sema.c:146 port/pg_sema.c:146 +#: commands/tsearchcmds.c:1145 #, 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 "" -"Sie müssen möglicherweise den Kernelparameter SEMVMX auf mindestens %d " -"erhöhen. Weitere Informationen finden Sie in der PostgreSQL-Dokumentation." +msgid "text search template parameter \"%s\" not recognized" +msgstr "Textsuchevorlageparameter »%s« nicht erkannt" -#: port/sysv_shmem.c:147 port/pg_shmem.c:147 +#: commands/tsearchcmds.c:1155 +msgid "text search template lexize method is required" +msgstr "Lexize-Methode für Textsuchevorlage muss angegeben werden" + +#: commands/tsearchcmds.c:1193 +msgid "must be superuser to rename text search templates" +msgstr "nur Superuser können Textsuchevorlagen umbenennen" + +#: commands/tsearchcmds.c:1212 #, c-format -msgid "could not create shared memory segment: %m" -msgstr "konnte Shared-Memory-Segment nicht erzeugen: %m" +msgid "text search template \"%s\" already exists" +msgstr "Textsuchevorlage »%s« existiert bereits" -#: port/sysv_shmem.c:148 port/pg_shmem.c:148 +#: commands/tsearchcmds.c:1281 +msgid "must be superuser to drop text search templates" +msgstr "nur Superuser können Textsuchevorlagen löschen" + +#: commands/tsearchcmds.c:1304 catalog/namespace.c:2153 #, 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 "text search template \"%s\" does not exist" +msgstr "Textsuchevorlage »%s« existiert nicht" -#: port/sysv_shmem.c:152 port/pg_shmem.c:152 +#: commands/tsearchcmds.c:1310 #, 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 "" -"Dieser Fehler bedeutet gewöhnlich, dass das von PostgreSQL angeforderte " -"Shared-Memory-Segment den Kernelparameter SHMMAX überschreitet. Sie können " -"entweder die benötigte Shared-Memory-Größe reduzieren oder SHMMAX im Kernel " -"größer konfigurieren. 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" -"Wenn die angeforderte Größe schon klein ist, ist es möglich, dass sie " -"kleiner ist als der Kernelparameter SHMMIN. Dann müssen Sie die benötigte " -"Shared-Memory-Größe erhöhen oder SHMMIN ändern.\n" -"Die PostgreSQL-Dokumentation enthält weitere Informationen über die " -"Konfiguration von Shared Memory." +msgid "text search template \"%s\" does not exist, skipping" +msgstr "Textsuchevorlage »%s« existiert nicht, wird übersprungen" -#: port/sysv_shmem.c:165 port/pg_shmem.c:165 +#: commands/tsearchcmds.c:1508 #, 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 "" -"Dieser Fehler bedeutet gewöhnlich, dass das von PostgreSQL angeforderte " -"Shared-Memory-Segment den verfügbaren Speicher oder Swap-Space oder den " -"Kernel-Parameter SHMALL überschreitet. Sie können entweder die benötigte " -"Shared-Memory-Größe reduzieren oder SHMALL im Kernel größer konfigurieren. " -"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" -"Die PostgreSQL-Dokumentation enthält weitere Informationen über die " -"Konfiguration von Shared Memory." +msgid "text search configuration parameter \"%s\" not recognized" +msgstr "Textsuchekonfigurationsparameter »%s« nicht erkannt" -#: port/sysv_shmem.c:176 port/pg_shmem.c:176 -#, fuzzy, 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 "" -"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. Wenn Sie " -"die Höchstgrenze für Shared Memory nicht erhöhen können, verkleinern Sie das " -"von PostgreSQL benötigte Shared Memory (aktuell %lu Bytes), indem Sie den " -"PostgreSQL-Parameter »shared_buffers« (aktuell %d) und/oder " -"»max_connections« (aktuell %d) reduzieren.\n" -"Die PostgreSQL-Dokumentation enthält weitere Informationen über die " -"Konfiguration von Shared Memory." +#: commands/tsearchcmds.c:1515 +msgid "cannot specify both PARSER and COPY options" +msgstr "Optionen PARSER und COPY können nicht beide angegeben werden" -#: port/sysv_shmem.c:439 port/pg_shmem.c:439 -#, c-format -msgid "could not stat data directory \"%s\": %m" -msgstr "konnte »stat« für Datenverzeichnis »%s« nicht ausführen: %m" +#: commands/tsearchcmds.c:1543 +msgid "text search parser is required" +msgstr "Textsucheparser muss angegeben werden" -#: port/unix_latch.c:269 port/pg_latch.c:269 -#: replication/libpqwalreceiver/libpqwalreceiver.c:233 +#: commands/tsearchcmds.c:1652 #, c-format -msgid "select() failed: %m" -msgstr "select() fehlgeschlagen: %m" +msgid "text search configuration \"%s\" already exists" +msgstr "Textsuchekonfiguration »%s« existiert bereits" -#: postmaster/autovacuum.c:359 +#: commands/tsearchcmds.c:1759 #, c-format -msgid "could not fork autovacuum launcher process: %m" -msgstr "konnte Autovacuum-Launcher-Prozess nicht starten (fork-Fehler): %m" - -#: postmaster/autovacuum.c:404 -msgid "autovacuum launcher started" -msgstr "Autovacuum-Launcher startet" +msgid "text search configuration \"%s\" does not exist, skipping" +msgstr "Textsuchekonfiguration »%s« existiert nicht, wird übersprungen" -#: postmaster/autovacuum.c:760 -msgid "autovacuum launcher shutting down" -msgstr "Autovacuum-Launcher fährt herunter" +#: commands/tsearchcmds.c:1981 +#, c-format +msgid "token type \"%s\" does not exist" +msgstr "Tokentyp »%s« existiert nicht" -#: postmaster/autovacuum.c:1395 +#: commands/tsearchcmds.c:2203 #, c-format -msgid "could not fork autovacuum worker process: %m" -msgstr "konnte Autovacuum-Worker-Prozess nicht starten (fork-Fehler): %m" +msgid "mapping for token type \"%s\" does not exist" +msgstr "Mapping für Tokentyp »%s« existiert nicht" -#: postmaster/autovacuum.c:1604 +#: commands/tsearchcmds.c:2209 #, c-format -msgid "autovacuum: processing database \"%s\"" -msgstr "Autovacuum: bearbeite Datenbank »%s«" +msgid "mapping for token type \"%s\" does not exist, skipping" +msgstr "Mapping für Tokentyp »%s« existiert nicht, wird übersprungen" -#: postmaster/autovacuum.c:2007 +#: commands/tsearchcmds.c:2362 commands/tsearchcmds.c:2473 #, 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«" +msgid "invalid parameter list format: \"%s\"" +msgstr "ungültiges Parameterlistenformat: »%s«" -#: postmaster/autovacuum.c:2019 +#: commands/alter.c:413 #, 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" +msgid "must be superuser to set schema of %s" +msgstr "nur Superuser können Schema von %s setzen" -#: postmaster/autovacuum.c:2289 +#: commands/alter.c:441 #, c-format -msgid "automatic vacuum of table \"%s.%s.%s\"" -msgstr "automatisches Vacuum der Tabelle »%s.%s.%s«" +msgid "%s already exists in schema \"%s\"" +msgstr "%s existiert bereits in Schema »%s«" -#: postmaster/autovacuum.c:2292 +#: foreign/foreign.c:198 #, c-format -msgid "automatic analyze of table \"%s.%s.%s\"" -msgstr "automatisches Analysieren der Tabelle »%s.%s.%s«" +msgid "user mapping not found for \"%s\"" +msgstr "Benutzerabbildung für »%s« nicht gefunden" -#: postmaster/autovacuum.c:2778 -msgid "autovacuum not started because of misconfiguration" -msgstr "Autovacuum wegen Fehlkonfiguration nicht gestartet" +#: foreign/foreign.c:321 +#, c-format +msgid "foreign-data wrapper \"%s\" has no handler" +msgstr "Fremddaten-Wrapper »%s« hat keinen Handler" -#: postmaster/autovacuum.c:2779 -msgid "Enable the \"track_counts\" option." -msgstr "Schalten Sie die Option »track_counts« ein." +#: foreign/foreign.c:498 +#, c-format +msgid "invalid option \"%s\"" +msgstr "ungültige Option »%s«" -#: postmaster/bgwriter.c:482 +#: foreign/foreign.c:499 #, c-format -msgid "checkpoints are occurring too frequently (%d second apart)" -msgid_plural "checkpoints are occurring too frequently (%d seconds apart)" -msgstr[0] "Checkpoints passieren zu oft (alle %d Sekunde)" -msgstr[1] "Checkpoints passieren zu oft (alle %d Sekunden)" +msgid "Valid options in this context are: %s" +msgstr "Gültige Optionen in diesem Zusammenhang sind: %s" -#: postmaster/bgwriter.c:486 -msgid "" -"Consider increasing the configuration parameter \"checkpoint_segments\"." +#: regex/regc_pg_locale.c:258 +msgid "could not determine which collation to use for regular expression" msgstr "" -"Erhöhen Sie eventuell den Konfigurationsparameter »checkpoint_segments«." +"konnte die für den regulären Ausdruck zu verwendende Sortierfolge nicht " +"bestimmen" -#: postmaster/bgwriter.c:598 +#: nodes/nodeFuncs.c:114 nodes/nodeFuncs.c:140 parser/parse_coerce.c:1671 +#: parser/parse_coerce.c:1688 parser/parse_coerce.c:1750 +#: parser/parse_expr.c:1638 parser/parse_oper.c:948 parser/parse_func.c:367 #, c-format -msgid "transaction log switch forced (archive_timeout=%d)" -msgstr "Umschalten des Transaktionslogs erzwungen (archive_timeout=%d)" +msgid "could not find array type for data type %s" +msgstr "konnte Arraytyp für Datentyp %s nicht finden" -#: postmaster/bgwriter.c:1056 -msgid "checkpoint request failed" -msgstr "Checkpoint-Anforderung fehlgeschlagen" +#: executor/nodeSubplan.c:302 executor/nodeSubplan.c:341 +#: executor/nodeSubplan.c:968 +msgid "more than one row returned by a subquery used as an expression" +msgstr "als Ausdruck verwendete Unteranfrage ergab mehr als eine Zeile" -#: postmaster/bgwriter.c:1057 -msgid "Consult recent messages in the server log for details." -msgstr "Einzelheiten finden Sie in den letzten Meldungen im Serverlog." +#: executor/nodeWindowAgg.c:1238 +msgid "frame starting offset must not be null" +msgstr "Frame-Start-Offset darf nicht NULL sein" -#: postmaster/bgwriter.c:1223 -#, c-format -msgid "compacted fsync request queue from %d entries to %d entries" -msgstr "" +#: executor/nodeWindowAgg.c:1251 +msgid "frame starting offset must not be negative" +msgstr "Frame-Start-Offset darf nicht negativ sein" -#: postmaster/pgarch.c:158 -#, c-format -msgid "could not fork archiver: %m" -msgstr "konnte Archivierer nicht starten (fork-Fehler): %m" +#: executor/nodeWindowAgg.c:1264 +msgid "frame ending offset must not be null" +msgstr "Frame-Ende-Offset darf nicht NULL sein" -#: postmaster/pgarch.c:450 -msgid "archive_mode enabled, yet archive_command is not set" -msgstr "archive_mode ist an, aber archive_command ist nicht gesetzt" +#: executor/nodeWindowAgg.c:1277 +msgid "frame ending offset must not be negative" +msgstr "Frame-Ende-Offset darf nicht negativ sein" -#: postmaster/pgarch.c:465 +#: executor/nodeWindowAgg.c:1851 executor/nodeAgg.c:1730 #, c-format -msgid "transaction log file \"%s\" could not be archived: too many failures" +msgid "aggregate %u needs to have compatible input type and transition type" +msgstr "Aggregatfunktion %u muss kompatiblen Eingabe- und Übergangstyp haben" + +#: executor/functions.c:195 +#, c-format +msgid "could not determine actual type of argument declared %s" msgstr "" -"Transaktionslogdatei »%s« konnte nicht archiviert werden: zu viele Fehler" +"konnte tatsächlichen Typ von Argument mit deklarierten Typ %s nicht bestimmen" -#: postmaster/pgarch.c:568 +#. translator: %s is a SQL statement name +#: executor/functions.c:295 #, c-format -msgid "archive command failed with exit code %d" -msgstr "Archivbefehl ist fehlgeschlagen mit Statuscode %d" +msgid "%s is not allowed in a SQL function" +msgstr "%s ist in SQL-Funktionen nicht erlaubt" -#: postmaster/pgarch.c:570 postmaster/pgarch.c:580 postmaster/pgarch.c:587 -#: postmaster/pgarch.c:593 postmaster/pgarch.c:602 +#. translator: %s is a SQL statement name +#: executor/functions.c:302 executor/spi.c:1256 executor/spi.c:1891 #, c-format -msgid "The failed archive command was: %s" -msgstr "Der fehlgeschlagene Archivbefehl war: %s" +msgid "%s is not allowed in a non-volatile function" +msgstr "%s ist in als nicht »volatile« markierten Funktionen nicht erlaubt" -#: postmaster/pgarch.c:577 +#: executor/functions.c:408 #, c-format -msgid "archive command was terminated by exception 0x%X" -msgstr "Archivbefehl wurde durch Ausnahme 0x%X beendet" - -#: postmaster/pgarch.c:579 postmaster/postmaster.c:2871 msgid "" -"See C include file \"ntstatus.h\" for a description of the hexadecimal value." +"could not determine actual result type for function declared to return type " +"%s" msgstr "" -"Sehen Sie die Beschreibung des Hexadezimalwerts in der C-Include-Datei " -"»ntstatus.h« nach." +"konnte tatsächlichen Ergebnistyp von Funktion mit deklarierten Rückgabetyp " +"%s nicht bestimmen" -#: postmaster/pgarch.c:584 +#: executor/functions.c:1146 #, c-format -msgid "archive command was terminated by signal %d: %s" -msgstr "Archivbefehl wurde von Signal %d beendet: %s" +msgid "SQL function \"%s\" statement %d" +msgstr "SQL-Funktion »%s« Anweisung %d" -#: postmaster/pgarch.c:591 +#: executor/functions.c:1162 catalog/pg_proc.c:916 #, c-format -msgid "archive command was terminated by signal %d" -msgstr "Archivbefehl wurde von Signal %d beendet" +msgid "SQL function \"%s\"" +msgstr "SQL-Funktion »%s«" -#: postmaster/pgarch.c:600 +#: executor/functions.c:1172 #, c-format -msgid "archive command exited with unrecognized status %d" -msgstr "Archivbefehl hat mit unbekanntem Status %d beendet" +msgid "SQL function \"%s\" during startup" +msgstr "SQL-Funktion »%s« beim Start" -#: postmaster/pgarch.c:612 +#: 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 "archived transaction log file \"%s\"" -msgstr "archivierte Transaktionslogdatei »%s«" +msgid "return type mismatch in function declared to return %s" +msgstr "Rückgabetyp von Funktion stimmt nicht überein; deklariert als %s" -#: postmaster/pgarch.c:661 -#, c-format -msgid "could not open archive status directory \"%s\": %m" -msgstr "konnte Archivstatusverzeichnis »%s« nicht öffnen: %m" +#: executor/functions.c:1334 +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." -#: postmaster/pgstat.c:330 +#: executor/functions.c:1370 +msgid "Final statement must return exactly one column." +msgstr "Die letzte Anweisung muss genau eine Spalte zurückgeben." + +#: executor/functions.c:1382 #, c-format -msgid "could not resolve \"localhost\": %s" -msgstr "konnte »localhost« nicht auflösen: %s" +msgid "Actual return type is %s." +msgstr "Eigentlicher Rückgabetyp ist %s." -#: postmaster/pgstat.c:353 -msgid "trying another address for the statistics collector" -msgstr "andere Adresse für Statistiksammelprozess wird versucht" +#: executor/functions.c:1495 +msgid "Final statement returns too many columns." +msgstr "Die letzte Anweisung gibt zu viele Spalten zurück." -#: postmaster/pgstat.c:362 +#: executor/functions.c:1528 #, c-format -msgid "could not create socket for statistics collector: %m" -msgstr "konnte Socket für Statistiksammelprozess nicht erzeugen: %m" +msgid "Final statement returns %s instead of %s at column %d." +msgstr "Die letzte Anweisung ergibt %s statt %s in Spalte %d." -#: postmaster/pgstat.c:374 -#, c-format -msgid "could not bind socket for statistics collector: %m" -msgstr "konnte Socket für Statistiksammelprozess nicht binden: %m" +#: executor/functions.c:1558 +msgid "Final statement returns too few columns." +msgstr "Die letzte Anweisung gibt zu wenige Spalten zurück." -#: postmaster/pgstat.c:385 +#: executor/functions.c:1607 #, c-format -msgid "could not get address of socket for statistics collector: %m" +msgid "return type %s is not supported for SQL functions" +msgstr "Rückgabetyp %s wird von SQL-Funktionen nicht unterstützt" + +#: executor/nodeModifyTable.c:82 executor/nodeModifyTable.c:92 +#: executor/nodeModifyTable.c:109 executor/nodeModifyTable.c:117 +#: executor/execQual.c:837 executor/execQual.c:854 executor/execQual.c:1014 +msgid "table row type and query-specified row type do not match" msgstr "" -"konnte Adresse für Socket für Statistiksammelprozess nicht ermitteln: %m" +"Zeilentyp der Tabelle und der von der Anfrage angegebene Zeilentyp stimmen " +"nicht überein" -#: postmaster/pgstat.c:401 -#, c-format -msgid "could not connect socket for statistics collector: %m" -msgstr "konnte nicht mit Socket für Statistiksammelprozess verbinden: %m" +#: executor/nodeModifyTable.c:83 +msgid "Query has too many columns." +msgstr "Anfrage hat zu viele Spalten." -#: postmaster/pgstat.c:422 +#: executor/nodeModifyTable.c:93 executor/execQual.c:855 #, 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" +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." -#: postmaster/pgstat.c:448 postmaster/pgstat.c:2999 +#: executor/nodeModifyTable.c:110 #, c-format -msgid "select() failed in statistics collector: %m" -msgstr "select() im Statistiksammelprozess fehlgeschlagen: %m" +msgid "Query provides a value for a dropped column at ordinal position %d." +msgstr "Anfrage liefert einen Wert für eine gelöschte Spalte auf Position %d." -#: postmaster/pgstat.c:463 -msgid "test message did not get through on socket for statistics collector" -msgstr "Testnachricht auf Socket für Statistiksammelprozess kam nicht durch" +#: executor/nodeModifyTable.c:118 +msgid "Query has too few columns." +msgstr "Anfrage hat zu wenige Spalten." -#: postmaster/pgstat.c:478 -#, 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" +#: executor/nodeLimit.c:253 +msgid "OFFSET must not be negative" +msgstr "OFFSET darf nicht negativ sein" -#: postmaster/pgstat.c:488 -msgid "incorrect test message transmission on socket for statistics collector" -msgstr "" -"fehlerhafte Übertragung der Testnachricht auf Socket für " -"Statistiksammelprozess" +#: executor/nodeLimit.c:280 +msgid "LIMIT must not be negative" +msgstr "LIMIT darf nicht negativ sein" -#: postmaster/pgstat.c:511 +#: executor/execMain.c:999 #, 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:521 -msgid "disabling statistics collector for lack of working socket" -msgstr "Statistiksammelprozess abgeschaltet wegen nicht funkionierender Socket" +msgid "cannot change sequence \"%s\"" +msgstr "kann Sequenz »%s« nicht ändern" -#: postmaster/pgstat.c:623 +#: executor/execMain.c:1005 #, c-format -msgid "could not fork statistics collector: %m" -msgstr "konnte Statistiksammelprozess nicht starten (fork-Fehler): %m" - -#: postmaster/pgstat.c:1153 postmaster/pgstat.c:1177 postmaster/pgstat.c:1208 -msgid "must be superuser to reset statistics counters" -msgstr "nur Superuser können Statistikzähler zurücksetzen" +msgid "cannot change TOAST relation \"%s\"" +msgstr "kann TOAST-Relation »%s« nicht ändern" -#: postmaster/pgstat.c:1184 +#: executor/execMain.c:1015 #, c-format -msgid "unrecognized reset target: \"%s\"" -msgstr "unbekanntes Reset-Ziel: »%s«" +msgid "cannot insert into view \"%s\"" +msgstr "kann nicht in Sicht »%s« einfügen" -#: postmaster/pgstat.c:1185 -msgid "Target must be \"bgwriter\"." -msgstr "Das Reset-Ziel muss »bgwriter« sein." +#: executor/execMain.c:1017 +msgid "" +"You need an unconditional ON INSERT DO INSTEAD rule or an INSTEAD OF INSERT " +"trigger." +msgstr "" +"Sie benötigen eine ON INSERT DO INSTEAD Regel ohne Bedingung oder einen " +"INSTEAD OF INSERT Trigger." -#: postmaster/pgstat.c:2978 +#: executor/execMain.c:1023 #, c-format -msgid "poll() failed in statistics collector: %m" -msgstr "poll() im Statistiksammelprozess fehlgeschlagen: %m" +msgid "cannot update view \"%s\"" +msgstr "kann Sicht »%s« nicht aktualisieren" -#: postmaster/pgstat.c:3023 -#, c-format -msgid "could not read statistics message: %m" -msgstr "konnte Statistiknachricht nicht lesen: %m" +#: executor/execMain.c:1025 +msgid "" +"You need an unconditional ON UPDATE DO INSTEAD rule or an INSTEAD OF UPDATE " +"trigger." +msgstr "" +"Sie benötigen eine ON UPDATE DO INSTEAD Regel ohne Bedingung oder einen " +"INSTEAD OF UPDATE Trigger." -#: postmaster/pgstat.c:3294 +#: executor/execMain.c:1031 #, c-format -msgid "could not open temporary statistics file \"%s\": %m" -msgstr "konnte temporäre Statistikdatei »%s« nicht öffnen: %m" +msgid "cannot delete from view \"%s\"" +msgstr "kann nicht in Sicht »%s« löschen" -#: postmaster/pgstat.c:3366 -#, c-format -msgid "could not write temporary statistics file \"%s\": %m" -msgstr "konnte temporäre Statistikdatei »%s« nicht schreiben: %m" +#: executor/execMain.c:1033 +msgid "" +"You need an unconditional ON DELETE DO INSTEAD rule or an INSTEAD OF DELETE " +"trigger." +msgstr "" +"Sie benötigen eine ON DELETE DO INSTEAD Regel ohne Bedingung oder einen " +"INSTEAD OF DELETE Trigger." -#: postmaster/pgstat.c:3375 +#: executor/execMain.c:1043 #, c-format -msgid "could not close temporary statistics file \"%s\": %m" -msgstr "konnte temporäre Statistikdatei »%s« nicht schließen: %m" +msgid "cannot change foreign table \"%s\"" +msgstr "kann Fremdtabelle »%s« nicht ändern" -#: postmaster/pgstat.c:3383 +#: executor/execMain.c:1049 #, c-format -msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" -msgstr "konnte temporäre Statistikdatei »%s« nicht in »%s« umbenennen: %m" +msgid "cannot change relation \"%s\"" +msgstr "kann Relation »%s« nicht ändern" -#: postmaster/pgstat.c:3489 postmaster/pgstat.c:3718 +#: executor/execMain.c:1073 #, c-format -msgid "could not open statistics file \"%s\": %m" -msgstr "konnte Statistikdatei »%s« nicht öffnen: %m" +msgid "cannot lock rows in sequence \"%s\"" +msgstr "kann Zeilen in Sequenz »%s« nicht sperren" -#: 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 +#: executor/execMain.c:1080 #, c-format -msgid "corrupted statistics file \"%s\"" -msgstr "verfälschte Statistikdatei »%s«" +msgid "cannot lock rows in TOAST relation \"%s\"" +msgstr "kann Zeilen in TOAST-Relation »%s« nicht sperren" -#: postmaster/pgstat.c:4039 -msgid "database hash table corrupted during cleanup --- abort" -msgstr "Datenbank-Hash-Tabelle beim Aufräumen verfälscht --- Abbruch" +#: executor/execMain.c:1087 +#, c-format +msgid "cannot lock rows in view \"%s\"" +msgstr "kann Zeilen in Sicht »%s« nicht sperren" -#: postmaster/postmaster.c:572 +#: executor/execMain.c:1094 #, c-format -msgid "%s: invalid argument for option -f: \"%s\"\n" -msgstr "%s: ungültiges Argument für Option -f: »%s«\n" +msgid "cannot lock rows in foreign table \"%s\"" +msgstr "kann Zeilen in Fremdtabelle »%s« nicht sperren" -#: postmaster/postmaster.c:658 +#: executor/execMain.c:1100 #, c-format -msgid "%s: invalid argument for option -t: \"%s\"\n" -msgstr "%s: ungültiges Argument für Option -t: »%s«\n" +msgid "cannot lock rows in relation \"%s\"" +msgstr "kann Zeilen in Relation »%s« nicht sperren" -#: postmaster/postmaster.c:709 +#: executor/execMain.c:1571 #, c-format -msgid "%s: invalid argument: \"%s\"\n" -msgstr "%s: ungültiges Argument: »%s«\n" +msgid "null value in column \"%s\" violates not-null constraint" +msgstr "NULL-Wert in Spalte »%s« verletzt Not-Null-Constraint" -#: postmaster/postmaster.c:734 +#: executor/execMain.c:1583 #, 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" +msgid "new row for relation \"%s\" violates check constraint \"%s\"" +msgstr "neue Zeile für Relation »%s« verletzt Check-Constraint »%s«" -#: postmaster/postmaster.c:739 -msgid "" -"WAL archival (archive_mode=on) requires wal_level \"archive\" or " -"\"hot_standby\"" +#: executor/nodeMergejoin.c:1604 +msgid "RIGHT JOIN is only supported with merge-joinable join conditions" msgstr "" -"WAL-Archivierung (archive_mode=on) benötigt wal_level »archive« oder " -"»hot_standby«" +"RIGHT JOIN wird nur für Merge-Verbund-fähige Verbundbedingungen unterstützt" -#: postmaster/postmaster.c:742 -msgid "" -"WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or " -"\"hot_standby\"" +#: executor/nodeMergejoin.c:1624 +msgid "FULL JOIN is only supported with merge-joinable join conditions" msgstr "" -"WAL-Streaming (max_wal_senders > 0) benötigt wal_level »archive« oder " -"»hot_standby«" +"FULL JOIN wird nur für Merge-Verbund-fähige Verbundbedingungen unterstützt" -#: postmaster/postmaster.c:750 +#: executor/execUtils.c:1308 #, c-format -msgid "%s: invalid datetoken tables, please fix\n" -msgstr "%s: ungültige datetoken-Tabellen, bitte reparieren\n" +msgid "could not create exclusion constraint \"%s\"" +msgstr "konnte Exclusion-Constraint »%s« nicht erzeugen" -#: postmaster/postmaster.c:856 -msgid "invalid list syntax for \"listen_addresses\"" -msgstr "ungültige Listensyntax für Parameter »listen_addresses«" +#: executor/execUtils.c:1310 +#, c-format +msgid "Key %s conflicts with key %s." +msgstr "Schlüssel %s kollidiert mit Schlüssel %s." -#: postmaster/postmaster.c:886 +#: executor/execUtils.c:1315 #, c-format -msgid "could not create listen socket for \"%s\"" -msgstr "konnte Listen-Socket für »%s« nicht erzeugen" +msgid "conflicting key value violates exclusion constraint \"%s\"" +msgstr "kollidierender Schlüsselwert verletzt Exclusion-Constraint »%s«" -#: postmaster/postmaster.c:892 -msgid "could not create any TCP/IP sockets" -msgstr "konnte keine TCP/IP-Sockets erstellen" +#: executor/execUtils.c:1317 +#, c-format +msgid "Key %s conflicts with existing key %s." +msgstr "Schlüssel %s kollidiert mit vorhandenem Schlüssel %s." -#: postmaster/postmaster.c:943 -msgid "could not create Unix-domain socket" -msgstr "konnte Unix-Domain-Socket nicht erstellen" +#: executor/spi.c:210 +msgid "transaction left non-empty SPI stack" +msgstr "Transaktion ließ nicht-leeren SPI-Stack zurück" -#: postmaster/postmaster.c:951 -msgid "no socket created for listening" -msgstr "keine Listen-Socket erzeugt" +#: executor/spi.c:211 executor/spi.c:275 +msgid "Check for missing \"SPI_finish\" calls." +msgstr "Prüfen Sie, ob Aufrufe von »SPI_finish« fehlen." -#: postmaster/postmaster.c:985 -msgid "could not create I/O completion port for child queue" -msgstr "konnte Ein-/Ausgabe-Completion-Port für Child-Queue nicht erzeugen" +#: executor/spi.c:274 +msgid "subtransaction left non-empty SPI stack" +msgstr "Subtransaktion ließ nicht-leeren SPI-Stack zurück" -#: postmaster/postmaster.c:1029 +#: executor/spi.c:1137 +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:1142 #, c-format -msgid "%s: could not write external PID file \"%s\": %s\n" -msgstr "%s: konnte externe PID-Datei »%s« nicht schreiben: %s\n" +msgid "cannot open %s query as cursor" +msgstr "%s kann nicht als Cursor geöffnet werden" -#: postmaster/postmaster.c:1097 utils/init/postinit.c:197 -msgid "could not load pg_hba.conf" -msgstr "konnte pg_hba.conf nicht laden" +#: executor/spi.c:1233 parser/analyze.c:2213 +msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE wird nicht unterstützt" + +#: executor/spi.c:1234 parser/analyze.c:2214 +msgid "Scrollable cursors must be READ ONLY." +msgstr "Scrollbare Cursor müssen READ ONLY sein." -#: postmaster/postmaster.c:1144 +#: executor/spi.c:2157 #, c-format -msgid "%s: could not locate matching postgres executable" -msgstr "%s: konnte kein passendes Programm »postgres« finden" +msgid "SQL statement \"%s\"" +msgstr "SQL-Anweisung »%s«" -#: postmaster/postmaster.c:1167 utils/misc/tzparser.c:325 +#: executor/nodeHashjoin.c:814 executor/nodeHashjoin.c:844 #, c-format -msgid "" -"This may indicate an incomplete PostgreSQL installation, or that the file " -"\"%s\" has been moved away from its proper location." +msgid "could not rewind hash-join temporary file: %m" msgstr "" -"Dies kann auf eine unvollständige PostgreSQL-Installation hindeuten, oder " -"darauf, dass die Datei »%s« von ihrer richtigen Stelle verschoben worden ist." +"konnte Position in temporärer Datei für Hash-Verbund nicht auf Anfang " +"setzen: %m" -#: postmaster/postmaster.c:1195 +#: executor/nodeHashjoin.c:879 executor/nodeHashjoin.c:885 #, c-format -msgid "data directory \"%s\" does not exist" -msgstr "Datenverzeichnis »%s« existiert nicht" +msgid "could not write to hash-join temporary file: %m" +msgstr "konnte nicht in temporäre Datei für Hash-Verbund schreiben: %m" -#: postmaster/postmaster.c:1200 +#: executor/nodeHashjoin.c:919 executor/nodeHashjoin.c:929 #, c-format -msgid "could not read permissions of directory \"%s\": %m" -msgstr "konnte Zugriffsrechte von Verzeichnis »%s« nicht lesen: %m" +msgid "could not read from hash-join temporary file: %m" +msgstr "konnte nicht aus temporärer Datei für Hash-Verbund lesen: %m" -#: postmaster/postmaster.c:1208 +#: executor/execCurrent.c:75 #, c-format -msgid "specified data directory \"%s\" is not a directory" -msgstr "angegebenes Datenverzeichnis »%s« ist kein Verzeichnis" +msgid "cursor \"%s\" is not a SELECT query" +msgstr "Cursor »%s« ist keine SELECT-Anfrage" -#: postmaster/postmaster.c:1224 +#: executor/execCurrent.c:81 #, c-format -msgid "data directory \"%s\" has wrong ownership" -msgstr "Datenverzeichnis »%s« hat falschen Eigentümer" - -#: postmaster/postmaster.c:1226 -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." +msgid "cursor \"%s\" is held from a previous transaction" +msgstr "Cursor »%s« wurde aus einer vorherigen Transaktion beibehalten" -#: postmaster/postmaster.c:1246 +#: executor/execCurrent.c:113 #, c-format -msgid "data directory \"%s\" has group or world access" -msgstr "Datenverzeichnis »%s« erlaubt Zugriff von Gruppe oder Welt" - -#: postmaster/postmaster.c:1248 -msgid "Permissions should be u=rwx (0700)." -msgstr "Rechte sollten u=rwx (0700) sein." +msgid "cursor \"%s\" has multiple FOR UPDATE/SHARE references to table \"%s\"" +msgstr "Cursor »%s« hat mehrere FOR UPDATE/SHARE-Verweise auf Tabelle »%s«" -#: postmaster/postmaster.c:1259 +#: executor/execCurrent.c:122 #, 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: konnte das Datenbanksystem nicht finden\n" -"Es wurde im Verzeichnis »%s« erwartet,\n" -"aber die Datei »%s« konnte nicht geöffnet werden: %s\n" +"cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\"" +msgstr "Cursor »%s« hat keinen FOR UPDATE/SHARE-Verweis auf Tabelle »%s«" -#: postmaster/postmaster.c:1295 +#: executor/execCurrent.c:132 executor/execCurrent.c:178 #, c-format -msgid "%s: could not open file \"%s\": %s\n" -msgstr "%s: konnte Datei »%s« nicht öffnen: %s\n" +msgid "cursor \"%s\" is not positioned on a row" +msgstr "Cursor »%s« ist nicht auf eine Zeile positioniert" -#: postmaster/postmaster.c:1302 +#: executor/execCurrent.c:165 #, c-format -msgid "%s: could not open log file \"%s/%s\": %s\n" -msgstr "%s: konnte Logdatei »%s/%s« nicht öffnen: %s\n" +msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\"" +msgstr "Cursor »%s« ist kein einfach aktualisierbarer Scan der Tabelle »%s«" -#: postmaster/postmaster.c:1313 +#: executor/execCurrent.c:230 executor/execQual.c:1126 #, c-format -msgid "%s: could not fork background process: %s\n" -msgstr "%s: konnte Hintergrundprozess nicht starten (fork-Fehler): %s\n" +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)" -#: postmaster/postmaster.c:1335 +#: executor/execCurrent.c:242 executor/execQual.c:1138 #, c-format -msgid "%s: could not dissociate from controlling TTY: %s\n" -msgstr "%s: konnte nicht vom kontrollierenden TTY abtrennen: %s\n" +msgid "no value found for parameter %d" +msgstr "kein Wert für Parameter %d gefunden" -#: postmaster/postmaster.c:1430 -#, c-format -msgid "select() failed in postmaster: %m" -msgstr "select() fehlgeschlagen im Postmaster: %m" +#: executor/execQual.c:316 executor/execQual.c:344 +msgid "array subscript in assignment must not be null" +msgstr "Arrayindex in Zuweisung darf nicht NULL sein" -#: postmaster/postmaster.c:1592 postmaster/postmaster.c:1623 -msgid "incomplete startup packet" -msgstr "unvollständiges Startpaket" +#: executor/execQual.c:637 executor/execQual.c:4019 +#, c-format +msgid "attribute %d has wrong type" +msgstr "Attribut %d hat falschen Typ" -#: postmaster/postmaster.c:1604 -msgid "invalid length of startup packet" -msgstr "ungültige Länge des Startpakets" +#: executor/execQual.c:638 executor/execQual.c:4020 +#, c-format +msgid "Table has type %s, but query expects %s." +msgstr "Tabelle hat Typ %s, aber Anfrage erwartet %s." -#: postmaster/postmaster.c:1661 +#: executor/execQual.c:838 #, c-format -msgid "failed to send SSL negotiation response: %m" -msgstr "konnte SSL-Verhandlungsantwort nicht senden: %m" +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." -#: postmaster/postmaster.c:1690 +#: executor/execQual.c:1015 executor/execQual.c:1612 #, c-format -msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" +msgid "Physical storage mismatch on dropped attribute at ordinal position %d." msgstr "" -"nicht unterstütztes Frontend-Protokoll %u.%u: Server unterstützt %u.0 bis %u." -"%u" - -#: postmaster/postmaster.c:1741 -msgid "invalid value for boolean option \"replication\"" -msgstr "ungültiger Wert für Boole'sche Option »replication«" - -#: postmaster/postmaster.c:1761 -msgid "invalid startup packet layout: expected terminator as last byte" -msgstr "ungültiges Layout des Startpakets: Abschluss als letztes Byte erwartet" +"Physischer Speicher stimmt nicht überein mit gelöschtem Attribut auf " +"Position %d." -#: postmaster/postmaster.c:1789 -msgid "no PostgreSQL user name specified in startup packet" -msgstr "kein PostgreSQL-Benutzername im Startpaket angegeben" +#: executor/execQual.c:1291 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] "kann nicht mehr als %d Argument an Funktion übergeben" +msgstr[1] "kann nicht mehr als %d Argumente an Funktion übergeben" -#: postmaster/postmaster.c:1846 -msgid "the database system is starting up" -msgstr "das Datenbanksystem startet" +#: executor/execQual.c:1480 +msgid "functions and operators can take at most one set argument" +msgstr "Funktionen und Operatoren können höchstens ein Mengenargument haben" -#: postmaster/postmaster.c:1851 -msgid "the database system is shutting down" -msgstr "das Datenbanksystem fährt herunter" +#: executor/execQual.c:1530 +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" -#: postmaster/postmaster.c:1856 -msgid "the database system is in recovery mode" -msgstr "das Datenbanksystem ist im Wiederherstellungsmodus" +#: executor/execQual.c:1585 executor/execQual.c:1601 executor/execQual.c:1611 +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" -#: postmaster/postmaster.c:1923 +#: executor/execQual.c:1586 #, c-format -msgid "wrong key in cancel request for process %d" -msgstr "falscher Schlüssel in Stornierungsanfrage für Prozess %d" +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." -#: postmaster/postmaster.c:1931 +#: executor/execQual.c:1602 #, 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:2137 -msgid "received SIGHUP, reloading configuration files" -msgstr "SIGHUP empfangen, Konfigurationsdateien werden neu geladen" - -#: postmaster/postmaster.c:2160 -msgid "pg_hba.conf not reloaded" -msgstr "pg_hba.conf nicht neu geladen" - -#: postmaster/postmaster.c:2203 -msgid "received smart shutdown request" -msgstr "intelligentes Herunterfahren verlangt" - -#: postmaster/postmaster.c:2250 -msgid "received fast shutdown request" -msgstr "schnelles Herunterfahren verlangt" - -#: postmaster/postmaster.c:2268 -msgid "aborting any active transactions" -msgstr "etwaige aktive Transaktionen werden abgebrochen" - -#: postmaster/postmaster.c:2297 -msgid "received immediate shutdown request" -msgstr "sofortiges Herunterfahren verlangt" - -#: postmaster/postmaster.c:2373 postmaster/postmaster.c:2401 -msgid "startup process" -msgstr "Startprozess" - -#: postmaster/postmaster.c:2376 -msgid "aborting startup due to startup process failure" -msgstr "Serverstart abgebrochen wegen Startprozessfehler" - -#: postmaster/postmaster.c:2435 -msgid "database system is ready to accept connections" -msgstr "Datenbanksystem ist bereit, um Verbindungen anzunehmen" - -#: postmaster/postmaster.c:2490 -msgid "background writer process" -msgstr "Background-Writer-Prozess" - -#: postmaster/postmaster.c:2506 -msgid "WAL writer process" -msgstr "WAL-Schreibprozess" - -#: postmaster/postmaster.c:2520 -msgid "WAL receiver process" -msgstr "WAL-Receiver-Prozess" - -#: postmaster/postmaster.c:2535 -msgid "autovacuum launcher process" -msgstr "Autovacuum-Launcher-Prozess" - -#: postmaster/postmaster.c:2550 -msgid "archiver process" -msgstr "Archivierprozess" - -#: postmaster/postmaster.c:2566 -msgid "statistics collector process" -msgstr "Statistiksammelprozess" +msgid "Returned type %s at ordinal position %d, but query expects %s." +msgstr "Rückgabetyp war %s auf Position %d, aber Anfrage erwartet %s." -#: postmaster/postmaster.c:2580 -msgid "system logger process" -msgstr "Systemlogger-Prozess" +#: executor/execQual.c:1836 executor/execQual.c:2260 +msgid "table-function protocol for materialize mode was not followed" +msgstr "" +"Tabellenfunktionsprotokoll für Materialisierungsmodus wurde nicht befolgt" -#: postmaster/postmaster.c:2615 postmaster/postmaster.c:2634 -#: postmaster/postmaster.c:2641 postmaster/postmaster.c:2659 -msgid "server process" -msgstr "Serverprozess" +#: executor/execQual.c:1856 executor/execQual.c:2267 +#, c-format +msgid "unrecognized table-function returnMode: %d" +msgstr "unbekannter returnMode von Tabellenfunktion: %d" -#: postmaster/postmaster.c:2695 -msgid "terminating any other active server processes" -msgstr "aktive Serverprozesse werden abgebrochen" +#: executor/execQual.c:2177 +msgid "function returning set of rows cannot return null value" +msgstr "" +"Funktion, die eine Zeilenmenge zurückgibt, kann keinen NULL-Wert zurückgeben" -#. 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) beendete mit Status %d" +#: executor/execQual.c:2234 +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" -#. 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) wurde durch Ausnahme 0x%X beendet" +#: executor/execQual.c:2449 +msgid "IS DISTINCT FROM does not support set arguments" +msgstr "IS DISTINCT FROM unterstützt keine Mengenargumente" -#. 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) wurde von Signal %d beendet: %s" +#: executor/execQual.c:2526 +msgid "op ANY/ALL (array) does not support set arguments" +msgstr "op ANY/ALL (array) unterstützt keine Mengenargumente" -#. 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) wurde von Signal %d beendet" +#: executor/execQual.c:3079 +msgid "cannot merge incompatible arrays" +msgstr "kann inkompatible Arrays nicht verschmelzen" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2897 +#: executor/execQual.c:3080 #, c-format -msgid "%s (PID %d) exited with unrecognized status %d" -msgstr "%s (PID %d) beendete mit unbekanntem Status %d" +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." -#: postmaster/postmaster.c:3077 -msgid "abnormal database system shutdown" -msgstr "abnormales Herunterfahren des Datenbanksystems" +#: executor/execQual.c:3663 +msgid "NULLIF does not support set arguments" +msgstr "NULLIF unterstützt keine Mengenargumente" -#: postmaster/postmaster.c:3116 -msgid "all server processes terminated; reinitializing" -msgstr "alle Serverprozesse beendet; initialisiere neu" +#: executor/execQual.c:4415 optimizer/util/clauses.c:573 +#: parser/parse_agg.c:164 +msgid "aggregate function calls cannot be nested" +msgstr "Aufrufe von Aggregatfunktionen können nicht geschachtelt werden" -#: postmaster/postmaster.c:3299 -#, c-format -msgid "could not fork new process for connection: %m" -msgstr "konnte neuen Prozess für Verbindung nicht starten (fork-Fehler): %m" +#: executor/execQual.c:4453 optimizer/util/clauses.c:647 +#: parser/parse_agg.c:211 +msgid "window function calls cannot be nested" +msgstr "Aufrufe von Fensterfunktionen können nicht geschachtelt werden" -#: postmaster/postmaster.c:3341 -msgid "could not fork new process for connection: " -msgstr "konnte neuen Prozess für Verbindung nicht starten (fork-Fehler): " +#: executor/execQual.c:4665 +msgid "target type is not an array" +msgstr "Zieltyp ist kein Array" -#: postmaster/postmaster.c:3455 +#: executor/execQual.c:4778 #, c-format -msgid "connection received: host=%s port=%s" -msgstr "Verbindung empfangen: Host=%s Port=%s" +msgid "ROW() column has type %s instead of type %s" +msgstr "ROW()-Spalte hat Typ %s statt Typ %s" -#: postmaster/postmaster.c:3460 -#, c-format -msgid "connection received: host=%s" -msgstr "Verbindung empfangen: Host=%s" +#: replication/walreceiver.c:150 +msgid "terminating walreceiver process due to administrator command" +msgstr "" +"breche WAL-Receiver-Prozess ab aufgrund von Anweisung des Administrators" -#: postmaster/postmaster.c:3729 -#, c-format -msgid "could not execute server process \"%s\": %m" -msgstr "konnte Serverprozess »%s« nicht ausführen: %m" +#: replication/walreceiver.c:304 +msgid "cannot continue WAL streaming, recovery has already ended" +msgstr "" +"kann WAL-Streaming nicht fortsetzen, Wiederherstellung ist bereits beendet" -#: postmaster/postmaster.c:4246 -msgid "database system is ready to accept read only connections" -msgstr "Datenbanksystem ist bereit, um lesende Verbindungen anzunehmen" +#: replication/walsender.c:142 +msgid "recovery is still in progress, can't accept WAL streaming connections" +msgstr "" +"Wiederherstellung läuft noch, WAL-Streaming-Verbindungen können nicht " +"akzeptiert werden" -#: postmaster/postmaster.c:4513 -#, c-format -msgid "could not fork startup process: %m" -msgstr "konnte Startprozess nicht starten (fork-Fehler): %m" +#: replication/walsender.c:262 replication/walsender.c:490 +#: replication/walsender.c:548 +msgid "unexpected EOF on standby connection" +msgstr "unerwartetes EOF auf Standby-Verbindung" -#: postmaster/postmaster.c:4517 +#: replication/walsender.c:268 #, c-format -msgid "could not fork background writer process: %m" -msgstr "konnte Background-Writer-Prozess nicht starten (fork-Fehler): %m" +msgid "invalid standby handshake message type %d" +msgstr "ungültiger Standby-Handshake-Message-Typ %d" + +#: replication/walsender.c:380 +msgid "standby connections not allowed because wal_level=minimal" +msgstr "Standby-Verbindungen sind nicht erlaubt, weil wal_level=minimal" -#: postmaster/postmaster.c:4521 +#: replication/walsender.c:462 #, c-format -msgid "could not fork WAL writer process: %m" -msgstr "konnte WAL-Writer-Prozess nicht starten (fork-Fehler): %m" +msgid "invalid standby query string: %s" +msgstr "ungültige Standby-Anfragezeichenkette: %s" -#: postmaster/postmaster.c:4525 +#: replication/walsender.c:519 #, c-format -msgid "could not fork WAL receiver process: %m" -msgstr "konnte WAL-Receiver-Prozess nicht starten (fork-Fehler): %m" +msgid "invalid standby message type \"%c\"" +msgstr "ungültiger Standby-Message-Typ »%c«" -#: postmaster/postmaster.c:4529 +#: replication/walsender.c:570 #, c-format -msgid "could not fork process: %m" -msgstr "konnte Prozess nicht starten (fork-Fehler): %m" +msgid "unexpected message type \"%c\"" +msgstr "unerwarteter Message-Typ »%c«" -#: postmaster/postmaster.c:4811 +#: replication/walsender.c:764 #, c-format -msgid "could not duplicate socket %d for use in backend: error code %d" +msgid "standby \"%s\" has now caught up with primary" +msgstr "Standby-Server »%s« hat jetzt den Primärserver eingeholt" + +#: replication/walsender.c:844 +msgid "terminating walsender process due to replication timeout" msgstr "" -"konnte Socket %d nicht für Verwendung in Backend duplizieren: Fehlercode %d" +"breche WAL-Sender-Prozess ab wegen Zeitüberschreitung bei der Replikation" -#: postmaster/postmaster.c:4843 +#: replication/walsender.c:911 #, c-format -msgid "could not create inherited socket: error code %d\n" -msgstr "konnte geerbtes Socket nicht erzeugen: Fehlercode %d\n" +msgid "" +"number of requested standby connections exceeds max_wal_senders (currently " +"%d)" +msgstr "" +"Anzahl angeforderter Standby-Verbindungen überschreitet max_wal_senders " +"(aktuell %d)" -#: postmaster/postmaster.c:4872 postmaster/postmaster.c:4879 +#: replication/walsender.c:995 replication/walsender.c:1057 #, c-format -msgid "could not read from backend variables file \"%s\": %s\n" -msgstr "konnte nicht aus Servervariablendatei »%s« lesen: %s\n" +msgid "requested WAL segment %s has already been removed" +msgstr "das angeforderte WAL-Segment %s wurde schon entfernt" -#: postmaster/postmaster.c:4888 +#: replication/walsender.c:1028 #, c-format -msgid "could not remove file \"%s\": %s\n" -msgstr "konnte Datei »%s« nicht löschen: %s\n" +msgid "could not read from log file %u, segment %u, offset %u, length %lu: %m" +msgstr "" +"konnte nicht aus Logdatei %u, Segment %u bei Position %u, Länge %lu lesen: %m" -#: postmaster/postmaster.c:4905 +#: replication/basebackup.c:132 replication/basebackup.c:737 #, c-format -msgid "could not map view of backend variables: error code %d\n" -msgstr "konnte Sicht der Backend-Variablen nicht mappen: Fehlercode %d\n" +msgid "could not read symbolic link \"%s\": %m" +msgstr "konnte symbolische Verknüpfung »%s« nicht lesen: %m" -#: postmaster/postmaster.c:4914 +#: replication/basebackup.c:139 replication/basebackup.c:741 #, c-format -msgid "could not unmap view of backend variables: error code %d\n" -msgstr "konnte Sicht der Backend-Variablen nicht unmappen: Fehlercode %d\n" +msgid "symbolic link \"%s\" target is too long" +msgstr "Ziel für symbolische Verknüpfung »%s« ist zu lang" -#: postmaster/postmaster.c:4921 +#: replication/basebackup.c:207 #, c-format -msgid "could not close handle to backend parameter variables: error code %d\n" -msgstr "" -"konnte Handle für Backend-Parametervariablen nicht schließen: Fehlercode %d\n" +msgid "could not stat control file \"%s\": %m" +msgstr "konnte »stat« für Kontrolldatei »%s« nicht ausführen: %m" -#: postmaster/postmaster.c:5064 -msgid "could not read exit code for process\n" -msgstr "konnte Exitcode des Prozesses nicht lesen\n" +#: replication/basebackup.c:284 replication/basebackup.c:914 +msgid "base backup could not send data, aborting backup" +msgstr "Basissicherung konnte keine Daten senden, Sicherung abgebrochen" -#: postmaster/postmaster.c:5069 -msgid "could not post child completion status\n" -msgstr "konnte Child-Completion-Status nicht versenden\n" +#: replication/basebackup.c:331 replication/basebackup.c:340 +#: replication/basebackup.c:349 replication/basebackup.c:358 +#: replication/basebackup.c:367 +#, c-format +msgid "duplicate option \"%s\"" +msgstr "doppelte Option »%s«" -#: postmaster/syslogger.c:390 +#: replication/basebackup.c:419 #, c-format -msgid "select() failed in logger process: %m" -msgstr "select() fehlgeschlagen im Logger-Prozess: %m" +msgid "could not open directory \"pg_tblspc\": %m" +msgstr "konnte Verzeichnis »pg_tblspc« nicht öffnen: %m" -#: postmaster/syslogger.c:402 postmaster/syslogger.c:968 +#: replication/basebackup.c:616 replication/basebackup.c:691 #, c-format -msgid "could not read from logger pipe: %m" -msgstr "konnte nicht aus Logger-Pipe lesen: %m" +msgid "could not stat file or directory \"%s\": %m" +msgstr "konnte »stat« für Datei oder Verzeichnis »%s« nicht ausführen: %m" -#: postmaster/syslogger.c:449 -msgid "logger shutting down" -msgstr "Logger fährt herunter" +#: replication/basebackup.c:677 +msgid "shutdown requested, aborting active base backup" +msgstr "Herunterfahren verlangt, aktive Basissicherung wird abgebrochen" -#: postmaster/syslogger.c:493 postmaster/syslogger.c:507 +#: replication/basebackup.c:814 #, c-format -msgid "could not create pipe for syslog: %m" -msgstr "konnte Pipe für Syslog nicht erzeugen: %m" +msgid "skipping special file \"%s\"" +msgstr "überspringe besondere Datei »%s«" -#: postmaster/syslogger.c:534 +#: replication/basebackup.c:904 #, c-format -msgid "could not fork system logger: %m" -msgstr "konnte Systemlogger nicht starten (fork-Fehler): %m" +msgid "archive member \"%s\" too large for tar format" +msgstr "Archivmitglied »%s« zu groß für Tar-Format" -#: postmaster/syslogger.c:565 -#, c-format -msgid "could not redirect stdout: %m" -msgstr "konnte Standardausgabe nicht umleiten: %m" +#: replication/syncrep.c:210 +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" -#: postmaster/syslogger.c:570 postmaster/syslogger.c:588 -#, c-format -msgid "could not redirect stderr: %m" -msgstr "konnte Standardfehlerausgabe nicht umleiten: %m" +#: replication/syncrep.c:211 replication/syncrep.c:228 +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:227 +msgid "canceling wait for synchronous replication due to user request" +msgstr "storniere Warten auf synchrone Replikation wegen Benutzeraufforderung" -#: postmaster/syslogger.c:923 +#: replication/syncrep.c:358 #, c-format -msgid "could not write to log file: %s\n" -msgstr "konnte nicht in Logdatei schreiben: %s\n" +msgid "standby \"%s\" now has synchronous standby priority %u" +msgstr "Standby »%s« hat jetzt synchrone Standby-Priorität %u" -#: postmaster/syslogger.c:1042 +#: replication/syncrep.c:456 #, c-format -msgid "could not open log file \"%s\": %m" -msgstr "konnte Logdatei »%s« nicht öffnen: %m" +msgid "standby \"%s\" is now the synchronous standby with priority %u" +msgstr "Standby »%s« ist jetzt der synchrone Standby mit Priorität %u" -#: postmaster/syslogger.c:1111 postmaster/syslogger.c:1156 -msgid "disabling automatic rotation (use SIGHUP to re-enable)" -msgstr "" -"automatische Rotation abgeschaltet (SIGHUP zum Wiederanschalten verwenden)" +#: repl_scanner.l:76 +msgid "invalid streaming start location" +msgstr "ungültige Streaming-Startposition" -#: regex/regc_pg_locale.c:258 utils/adt/selfuncs.c:4969 -#, fuzzy -msgid "could not determine which collation to use for regular expression" -msgstr "" -"konnte Zeilenbeschreibung für Funktion, die »record« zurückgibt, nicht " -"ermitteln" +#: repl_scanner.l:97 scan.l:629 +msgid "unterminated quoted string" +msgstr "Zeichenkette nicht abgeschlossen" + +#: repl_scanner.l:107 +#, c-format +msgid "syntax error: unexpected character \"%s\"" +msgstr "Syntaxfehler: unerwartetes Zeichen »%s«" #: replication/libpqwalreceiver/libpqwalreceiver.c:101 #, c-format @@ -13315,6 +13137,12 @@ msgstr "Streaming-Replikation hat erfolgreich mit primärem Server verbunden" msgid "socket not open" msgstr "Socket ist nicht offen" +#: replication/libpqwalreceiver/libpqwalreceiver.c:233 port/pg_latch.c:265 +#: port/unix_latch.c:265 +#, c-format +msgid "select() failed: %m" +msgstr "select() fehlgeschlagen: %m" + #: replication/libpqwalreceiver/libpqwalreceiver.c:367 #: replication/libpqwalreceiver/libpqwalreceiver.c:388 #: replication/libpqwalreceiver/libpqwalreceiver.c:393 @@ -13327,5148 +13155,5506 @@ msgid "replication terminated by primary server" msgstr "Replikation wurde durch Primärserver beendet" #: replication/libpqwalreceiver/libpqwalreceiver.c:415 -#, fuzzy, c-format +#, c-format msgid "could not send data to WAL stream: %s" -msgstr "konnte keine Daten an den Server senden: %s\n" +msgstr "konnte keine Daten an den WAL-Stream senden: %s" -#: replication/walreceiver.c:150 -msgid "terminating walreceiver process due to administrator command" +#: optimizer/plan/initsplan.c:598 +msgid "" +"SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer " +"join" msgstr "" -"breche WAL-Receiver-Prozess ab aufgrund von Anweisung des Administrators" +"SELECT FOR UPDATE/SHARE kann nicht auf die nullbare Seite eines äußeren " +"Verbundes angewendet werden" -#: replication/walreceiver.c:299 -msgid "cannot continue WAL streaming, recovery has already ended" -msgstr "" -"kann WAL-Streaming nicht fortsetzen, Wiederherstellung ist bereits beendet" +#: optimizer/plan/planner.c:940 parser/analyze.c:1333 parser/analyze.c:1541 +#: parser/analyze.c:2270 +msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT" +msgstr "SELECT FOR UPDATE/SHARE ist nicht in UNION/INTERSECT/EXCEPT erlaubt" -#: replication/walsender.c:141 -msgid "recovery is still in progress, can't accept WAL streaming connections" +#: optimizer/plan/planner.c:2235 +msgid "could not implement GROUP BY" +msgstr "konnte GROUP BY nicht implementieren" + +#: optimizer/plan/planner.c:2236 optimizer/plan/planner.c:2408 +#: optimizer/prep/prepunion.c:801 +msgid "" +"Some of the datatypes only support hashing, while others only support " +"sorting." msgstr "" -"Wiederherstellung läuft noch, WAL-Streaming-Verbindungen können nicht " -"akzeptiert werden" +"Einige Datentypen unterstützen nur Hashing, während andere nur Sortieren " +"unterstützen." -#: replication/walsender.c:261 replication/walsender.c:489 -#: replication/walsender.c:547 -msgid "unexpected EOF on standby connection" -msgstr "unerwartetes EOF auf Standby-Verbindung" +#: optimizer/plan/planner.c:2407 +msgid "could not implement DISTINCT" +msgstr "konnte DISTINCT nicht implementieren" -#: replication/walsender.c:267 -#, c-format -msgid "invalid standby handshake message type %d" -msgstr "ungültiger Standby-Handshake-Message-Typ %d" +#: optimizer/plan/planner.c:2873 +msgid "could not implement window PARTITION BY" +msgstr "konnte PARTITION BY für Fenster nicht implementieren" -#: replication/walsender.c:379 -msgid "standby connections not allowed because wal_level=minimal" -msgstr "Standby-Verbindungen sind nicht erlaubt, weil wal_level=minimal" +#: optimizer/plan/planner.c:2874 +msgid "Window partitioning columns must be of sortable datatypes." +msgstr "Fensterpartitionierungsspalten müssen sortierbare Datentypen haben." -#: replication/walsender.c:461 -#, c-format -msgid "invalid standby query string: %s" -msgstr "ungültige Standby-Anfragezeichenkette: %s" +#: optimizer/plan/planner.c:2878 +msgid "could not implement window ORDER BY" +msgstr "konnte ORDER BY für Fenster nicht implementieren" -#: replication/walsender.c:518 -#, fuzzy, c-format -msgid "invalid standby message type %d" -msgstr "ungültiger Standby-Closing-Message-Typ %d" +#: optimizer/plan/planner.c:2879 +msgid "Window ordering columns must be of sortable datatypes." +msgstr "Fenstersortierspalten müssen sortierbare Datentypen haben." -#: replication/walsender.c:569 -#, fuzzy, c-format -msgid "unexpected message type %c" -msgstr "Typname erwartet" +#: optimizer/prep/prepunion.c:395 +msgid "could not implement recursive UNION" +msgstr "konnte rekursive UNION nicht implementieren" -#: replication/walsender.c:822 -#, fuzzy -msgid "terminating walsender process due to replication timeout" -msgstr "" -"breche WAL-Receiver-Prozess ab aufgrund von Anweisung des Administrators" +#: optimizer/prep/prepunion.c:396 +msgid "All column datatypes must be hashable." +msgstr "Alle Spaltendatentypen müssen hashbar sein." -#: replication/walsender.c:838 +#. translator: %s is UNION, INTERSECT, or EXCEPT +#: optimizer/prep/prepunion.c:800 #, c-format -msgid "standby \"%s\" has now caught up with primary" -msgstr "" +msgid "could not implement %s" +msgstr "konnte %s nicht implementieren" -#: replication/walsender.c:907 -#, c-format +#: optimizer/path/joinrels.c:673 msgid "" -"number of requested standby connections exceeds max_wal_senders (currently " -"%d)" +"FULL JOIN is only supported with merge-joinable or hash-joinable join " +"conditions" msgstr "" -"Anzahl angeforderter Standby-Verbindungen überschreitet max_wal_senders " -"(aktuell %d)" +"FULL JOIN wird nur für Merge- oder Hash-Verbund-fähige Verbundbedingungen " +"unterstützt" + +#: optimizer/util/plancat.c:97 +msgid "cannot access temporary or unlogged relations during recovery" +msgstr "" +"während der Wiederherstellung kann nicht auf temporäre oder ungeloggte " +"Tabellen zugegriffen werden" -#: replication/walsender.c:985 replication/walsender.c:1047 +#: optimizer/util/clauses.c:4187 #, c-format -msgid "requested WAL segment %s has already been removed" -msgstr "das angeforderte WAL-Segment %s wurde schon entfernt" +msgid "SQL function \"%s\" during inlining" +msgstr "SQL-Funktion »%s« beim Inlining" -#: replication/walsender.c:1018 +#: libpq/pqcomm.c:306 #, c-format -msgid "could not read from log file %u, segment %u, offset %u, length %lu: %m" -msgstr "" -"konnte nicht aus Logdatei %u, Segment %u bei Position %u, Länge %lu lesen: %m" +msgid "could not translate host name \"%s\", service \"%s\" to address: %s" +msgstr "konnte Hostname »%s«, Dienst »%s« nicht in Adresse übersetzen: %s" -#: replication/basebackup.c:122 -#, fuzzy, c-format -msgid "unable to read symbolic link %s: %m" -msgstr "konnte symbolische Verknüpfung »%s« nicht erstellen: %m" +#: libpq/pqcomm.c:310 +#, c-format +msgid "could not translate service \"%s\" to address: %s" +msgstr "konnte Dienst »%s« nicht in Adresse übersetzen: %s" -#: replication/basebackup.c:231 replication/basebackup.c:743 -msgid "base backup could not send data, aborting backup" +#: libpq/pqcomm.c:337 +#, 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:346 +msgid "IPv4" +msgstr "IPv4" -#: replication/basebackup.c:278 replication/basebackup.c:287 -#: replication/basebackup.c:296 replication/basebackup.c:305 -#: replication/basebackup.c:314 -#, fuzzy, c-format -msgid "duplicate option \"%s\"" -msgstr "ungültige Option »%s«" +#: libpq/pqcomm.c:350 +msgid "IPv6" +msgstr "IPv6" -#: replication/basebackup.c:366 -#, fuzzy, c-format -msgid "unable to open directory pg_tblspc: %m" -msgstr "konnte Verzeichnis »%s« nicht öffnen: %m" +#: libpq/pqcomm.c:355 +msgid "Unix" +msgstr "Unix" -#: replication/basebackup.c:576 -msgid "shutdown requested, aborting active base backup" -msgstr "" +#: libpq/pqcomm.c:360 +#, c-format +msgid "unrecognized address family %d" +msgstr "unbekannte Adressfamilie %d" -#: replication/basebackup.c:589 -#, fuzzy, c-format -msgid "could not stat file or directory \"%s\": %m" -msgstr "konnte »stat« für Datei oder Verzeichnis »%s« nicht ausführen: %s\n" +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:371 +#, c-format +msgid "could not create %s socket: %m" +msgstr "konnte %s-Socket nicht erstellen: %m" -#: replication/basebackup.c:631 -#, fuzzy, c-format -msgid "could not read symbolic link \"%s\": %m" -msgstr "konnte symbolische Verknüpfung »%s« nicht erstellen: %m" +#: libpq/pqcomm.c:396 +#, c-format +msgid "setsockopt(SO_REUSEADDR) failed: %m" +msgstr "setsockopt(SO_REUSEADDR) fehlgeschlagen: %m" -#: replication/basebackup.c:660 -#, fuzzy, c-format -msgid "skipping special file \"%s\"" -msgstr "entferne Transaktionslogdatei »%s«" +#: libpq/pqcomm.c:411 +#, c-format +msgid "setsockopt(IPV6_V6ONLY) failed: %m" +msgstr "setsockopt(IPV6_V6ONLY) fehlgeschlagen: %m" -#: replication/basebackup.c:733 -#, fuzzy, c-format -msgid "archive member \"%s\" too large for tar format" -msgstr "Archivmitglied zu groß für Tar-Format\n" +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:430 +#, c-format +msgid "could not bind %s socket: %m" +msgstr "konnte %s-Socket nicht binden: %m" -#: replication/syncrep.c:214 -#, fuzzy +#: libpq/pqcomm.c:433 +#, c-format msgid "" -"canceling the wait for synchronous replication and terminating connection " -"due to administrator command" -msgstr "breche Verbindung ab aufgrund von Anweisung des Administrators" +"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." -#: replication/syncrep.c:215 replication/syncrep.c:232 +#: libpq/pqcomm.c:436 +#, c-format msgid "" -"The transaction has already committed locally, but may not have been " -"replicated to the standby." +"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." -#: replication/syncrep.c:231 -#, fuzzy -msgid "canceling wait for synchronous replication due to user request" -msgstr "storniere Anfrage wegen Benutzeraufforderung" - -#: replication/syncrep.c:357 +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:469 #, c-format -msgid "standby \"%s\" now has synchronous standby priority %u" -msgstr "Standby »%s« hat jetzt synchrone Standby-Priorität %u" +msgid "could not listen on %s socket: %m" +msgstr "konnte nicht auf %s-Socket hören: %m" -#: replication/syncrep.c:450 +#: libpq/pqcomm.c:499 #, 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" - -#: repl_scanner.l:76 -#, fuzzy -msgid "invalid streaming start location" -msgstr "ungültige XML-Verarbeitungsanweisung" - -#: repl_scanner.l:107 -#, fuzzy, c-format -msgid "syntax error: unexpected character \"%s\"" -msgstr "Syntaxfehler, »=« erwartet" +msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)" +msgstr "Unix-Domain-Socket-Pfad »%s« ist zu lang (maximal %d Bytes)" -#: rewrite/rewriteDefine.c:109 rewrite/rewriteDefine.c:771 +#: libpq/pqcomm.c:562 #, c-format -msgid "rule \"%s\" for relation \"%s\" already exists" -msgstr "Regel »%s« für Relation »%s« existiert bereits" - -#: rewrite/rewriteDefine.c:289 -msgid "rule actions on OLD are not implemented" -msgstr "Regelaktionen für OLD sind nicht implementiert" +msgid "group \"%s\" does not exist" +msgstr "Gruppe »%s« existiert nicht" -#: rewrite/rewriteDefine.c:290 -msgid "Use views or triggers instead." -msgstr "Verwenden Sie stattdessen Sichten oder Trigger." +#: libpq/pqcomm.c:572 +#, c-format +msgid "could not set group of file \"%s\": %m" +msgstr "konnte Gruppe von Datei »%s« nicht setzen: %m" -#: rewrite/rewriteDefine.c:294 -msgid "rule actions on NEW are not implemented" -msgstr "Regelaktionen für NEW sind nicht implementiert" +#: libpq/pqcomm.c:583 +#, c-format +msgid "could not set permissions of file \"%s\": %m" +msgstr "konnte Zugriffsrechte von Datei »%s« nicht setzen: %m" -#: rewrite/rewriteDefine.c:295 -msgid "Use triggers instead." -msgstr "Verwenden Sie stattdessen Trigger." +#: libpq/pqcomm.c:613 +#, c-format +msgid "could not accept new connection: %m" +msgstr "konnte neue Verbindung nicht akzeptieren: %m" -#: rewrite/rewriteDefine.c:308 -msgid "INSTEAD NOTHING rules on SELECT are not implemented" -msgstr "INSTEAD-NOTHING-Regeln für SELECT sind nicht implementiert" +#: libpq/pqcomm.c:781 +#, c-format +msgid "could not set socket to non-blocking mode: %m" +msgstr "konnte Socket nicht auf nicht-blockierenden Modus umstellen: %m" -#: rewrite/rewriteDefine.c:309 -msgid "Use views instead." -msgstr "Verwenden Sie stattdessen Sichten." +#: libpq/pqcomm.c:787 +#, c-format +msgid "could not set socket to blocking mode: %m" +msgstr "konnte Socket nicht auf blockierenden Modus umstellen: %m" -#: rewrite/rewriteDefine.c:317 -msgid "multiple actions for rules on SELECT are not implemented" -msgstr "mehrere Regelaktionen für SELECT-Regeln sind nicht implementiert" +#: libpq/pqcomm.c:839 libpq/pqcomm.c:929 +#, c-format +msgid "could not receive data from client: %m" +msgstr "konnte Daten vom Client nicht empfangen: %m" -#: rewrite/rewriteDefine.c:329 -msgid "rules on SELECT must have action INSTEAD SELECT" -msgstr "Regeln für SELECT müssen als Aktion INSTEAD SELECT haben" +#: libpq/pqcomm.c:1080 +msgid "unexpected EOF within message length word" +msgstr "unerwartetes EOF im Message-Längenwort" -#: rewrite/rewriteDefine.c:337 -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" +#: libpq/pqcomm.c:1091 +msgid "invalid message length" +msgstr "ungültige Message-Länge" -#: rewrite/rewriteDefine.c:345 -msgid "event qualifications are not implemented for rules on SELECT" -msgstr "Ereignisqualifikationen sind nicht implementiert für SELECT-Regeln" +#: libpq/pqcomm.c:1113 libpq/pqcomm.c:1123 +msgid "incomplete message from client" +msgstr "unvollständige Message vom Client" -#: rewrite/rewriteDefine.c:370 +#: libpq/pqcomm.c:1253 #, c-format -msgid "\"%s\" is already a view" -msgstr "»%s« ist bereits eine Sicht" +msgid "could not send data to client: %m" +msgstr "konnte Daten nicht an den Client senden: %m" -#: rewrite/rewriteDefine.c:394 +#: libpq/be-secure.c:284 libpq/be-secure.c:379 #, c-format -msgid "view rule for \"%s\" must be named \"%s\"" -msgstr "Sicht-Regel für »%s« muss »%s« heißen" +msgid "SSL error: %s" +msgstr "SSL-Fehler: %s" -#: rewrite/rewriteDefine.c:419 +#: libpq/be-secure.c:293 libpq/be-secure.c:388 libpq/be-secure.c:962 #, 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" +msgid "unrecognized SSL error code: %d" +msgstr "unbekannter SSL-Fehlercode: %d" -#: rewrite/rewriteDefine.c:426 -#, c-format -msgid "could not convert table \"%s\" to a view because it has triggers" -msgstr "konnte Tabelle »%s« nicht in Sicht umwandeln, weil sie Trigger hat" +#: libpq/be-secure.c:332 libpq/be-secure.c:336 libpq/be-secure.c:346 +msgid "SSL renegotiation failure" +msgstr "Fehler bei SSL-Neuverhandlung" -#: rewrite/rewriteDefine.c:428 -msgid "" -"In particular, the table cannot be involved in any foreign key relationships." -msgstr "" -"Insbesondere darf die Tabelle nicht in Fremschlüsselverhältnisse eingebunden " -"sein." +#: libpq/be-secure.c:340 +msgid "SSL failed to send renegotiation request" +msgstr "SSL konnte keine neue Verhandlungsanfrage senden" -#: rewrite/rewriteDefine.c:433 +#: libpq/be-secure.c:741 #, c-format -msgid "could not convert table \"%s\" to a view because it has indexes" -msgstr "konnte Tabelle »%s« nicht in Sicht umwandeln, weil sie Indexe hat" +msgid "could not create SSL context: %s" +msgstr "konnte SSL-Kontext nicht erzeugen: %s" -#: rewrite/rewriteDefine.c:439 +#: libpq/be-secure.c:757 #, c-format -msgid "could not convert table \"%s\" to a view because it has child tables" -msgstr "" -"konnte Tabelle »%s« nicht in Sicht umwandeln, weil sie abgeleitete Tabellen " -"hat" - -#: rewrite/rewriteDefine.c:466 -msgid "cannot have multiple RETURNING lists in a rule" -msgstr "Regel kann nicht mehrere RETURNING-Listen enthalten" - -#: rewrite/rewriteDefine.c:471 -msgid "RETURNING lists are not supported in conditional rules" -msgstr "RETURNING-Listen werden in Regeln mit Bedingung nicht unterstützt" - -#: rewrite/rewriteDefine.c:475 -msgid "RETURNING lists are not supported in non-INSTEAD rules" -msgstr "RETURNING-Listen werden nur in INSTEAD-Regeln unterstützt" +msgid "could not load server certificate file \"%s\": %s" +msgstr "konnte Serverzertifikatsdatei »%s« nicht laden: %s" -#: rewrite/rewriteDefine.c:554 -msgid "SELECT rule's target list has too many entries" -msgstr "Targetliste von SELECT-Regel hat zu viele Einträge" +#: libpq/be-secure.c:763 +#, c-format +msgid "could not access private key file \"%s\": %m" +msgstr "konnte auf private Schlüsseldatei »%s« nicht zugreifen: %m" -#: rewrite/rewriteDefine.c:555 -msgid "RETURNING list has too many entries" -msgstr "RETURNING-Liste hat zu viele Einträge" +#: libpq/be-secure.c:778 +#, c-format +msgid "private key file \"%s\" has group or world access" +msgstr "private Schlüsseldatei »%s« erlaubt Zugriff von Gruppe oder Welt" -#: rewrite/rewriteDefine.c:571 -msgid "cannot convert relation containing dropped columns to view" -msgstr "kann Relation mit gelöschten Spalten nicht in Sicht umwandeln" +#: libpq/be-secure.c:780 +msgid "Permissions should be u=rw (0600) or less." +msgstr "Rechte sollten u=rw (0600) oder weniger sein." -#: rewrite/rewriteDefine.c:576 +#: libpq/be-secure.c:787 #, c-format -msgid "SELECT rule's target entry %d has different column name from \"%s\"" -msgstr "" -"Spaltenname in Targeteintrag %d von SELECT-Regel unterscheidet sich von " -"Spalte »%s«" +msgid "could not load private key file \"%s\": %s" +msgstr "konnte private Schlüsseldatei »%s« nicht laden: %s" -#: rewrite/rewriteDefine.c:582 +#: libpq/be-secure.c:792 #, 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«" +msgid "check of private key failed: %s" +msgstr "Überprüfung des privaten Schlüssels fehlgeschlagen: %s" -#: rewrite/rewriteDefine.c:584 +#: libpq/be-secure.c:820 #, 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«" +msgid "could not access root certificate file \"%s\": %m" +msgstr "konnte nicht auf Root-Zertifikat-Datei »%s« zugreifen: %m" -#: rewrite/rewriteDefine.c:599 +#: libpq/be-secure.c:831 #, 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«" +msgid "could not load root certificate file \"%s\": %s" +msgstr "konnte Root-Zertifikat-Datei »%s« nicht laden: %s" -#: rewrite/rewriteDefine.c:601 +#: libpq/be-secure.c:854 #, 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:609 -msgid "SELECT rule's target list has too few entries" -msgstr "Targetliste von SELECT-Regeln hat zu wenige Einträge" +msgid "SSL certificate revocation list file \"%s\" ignored" +msgstr "SSL-Certificate-Revocation-List-Datei »%s« ignoriert" -#: rewrite/rewriteDefine.c:610 -msgid "RETURNING list has too few entries" -msgstr "RETURNING-Liste hat zu wenige Einträge" +#: libpq/be-secure.c:856 +msgid "SSL library does not support certificate revocation lists." +msgstr "SSL-Bibliothek unterstützt keine Certificate-Revocation-Lists." -#: rewrite/rewriteDefine.c:702 rewrite/rewriteDefine.c:764 -#: rewrite/rewriteRemove.c:62 rewrite/rewriteSupport.c:117 +#: libpq/be-secure.c:863 #, c-format -msgid "rule \"%s\" for relation \"%s\" does not exist" -msgstr "Regel »%s« für Relation »%s« existiert nicht" +msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s" +msgstr "" +"SSL-Certificate-Revocation-List-Datei »%s« nicht gefunden, wird " +"übersprungen: %s" -#: rewrite/rewriteHandler.c:505 -msgid "cannot have RETURNING lists in multiple rules" -msgstr "RETURNING-Listen können nicht in mehreren Regeln auftreten" +#: libpq/be-secure.c:865 +msgid "Certificates will not be checked against revocation list." +msgstr "Zertifikate werden nicht gegen die Revocation-Liste geprüft." -#: rewrite/rewriteHandler.c:836 rewrite/rewriteHandler.c:854 +#: libpq/be-secure.c:907 #, c-format -msgid "multiple assignments to same column \"%s\"" -msgstr "mehrere Zuweisungen zur selben Spalte »%s«" +msgid "could not initialize SSL connection: %s" +msgstr "konnte SSL-Verbindung nicht initialisieren: %s" -#: rewrite/rewriteHandler.c:1588 rewrite/rewriteHandler.c:1920 +#: libpq/be-secure.c:916 #, c-format -msgid "infinite recursion detected in rules for relation \"%s\"" -msgstr "unendliche Rekursion entdeckt in Regeln für Relation »%s«" +msgid "could not set SSL socket: %s" +msgstr "konnte SSL-Socket nicht setzen: %s" -#: rewrite/rewriteHandler.c:1958 +#: libpq/be-secure.c:942 #, c-format -msgid "cannot perform INSERT RETURNING on relation \"%s\"" -msgstr "INSERT RETURNING kann in Relation »%s« nicht ausgeführt werden" +msgid "could not accept SSL connection: %m" +msgstr "konnte SSL-Verbindung nicht annehmen: %m" -#: rewrite/rewriteHandler.c:1960 -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." +#: libpq/be-secure.c:946 libpq/be-secure.c:957 +msgid "could not accept SSL connection: EOF detected" +msgstr "konnte SSL-Verbindung nicht annehmen: EOF entdeckt" -#: rewrite/rewriteHandler.c:1965 +#: libpq/be-secure.c:951 #, c-format -msgid "cannot perform UPDATE RETURNING on relation \"%s\"" -msgstr "UPDATE RETURNING kann in Relation »%s« nicht ausgeführt werden" +msgid "could not accept SSL connection: %s" +msgstr "konnte SSL-Verbindung nicht annehmen: %s" -#: rewrite/rewriteHandler.c:1967 -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." +#: libpq/be-secure.c:1007 +msgid "SSL certificate's common name contains embedded null" +msgstr "Common-Name im SSL-Zertifikat enthält Null-Byte" -#: rewrite/rewriteHandler.c:1972 +#: libpq/be-secure.c:1018 #, c-format -msgid "cannot perform DELETE RETURNING on relation \"%s\"" -msgstr "DELETE RETURNING kann in Relation »%s« nicht ausgeführt werden" +msgid "SSL connection from \"%s\"" +msgstr "SSL-Verbindung von »%s«" -#: rewrite/rewriteHandler.c:1974 -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." +#: libpq/be-secure.c:1069 +msgid "no SSL error reported" +msgstr "kein SSL-Fehler berichtet" -#: rewrite/rewriteHandler.c:2020 -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" +#: libpq/be-secure.c:1073 +#, c-format +msgid "SSL error code %lu" +msgstr "SSL-Fehlercode %lu" -#: rewrite/rewriteHandler.c:2034 -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" +#: libpq/pqformat.c:436 +msgid "no data left in message" +msgstr "keine Daten in Message übrig" -#: rewrite/rewriteHandler.c:2038 -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" +#: libpq/pqformat.c:636 +msgid "invalid string in message" +msgstr "ungültige Zeichenkette in Message" -#: rewrite/rewriteHandler.c:2043 -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" +#: libpq/pqformat.c:652 +msgid "invalid message format" +msgstr "ungültiges Message-Format" -#: rewrite/rewriteManip.c:1012 -msgid "conditional utility statements are not implemented" -msgstr "Utility-Anweisungen mit Bedingung sind nicht implementiert" +#: libpq/auth.c:257 +#, c-format +msgid "authentication failed for user \"%s\": host rejected" +msgstr "Authentifizierung für Benutzer »%s« fehlgeschlagen: Host abgelehnt" -#: rewrite/rewriteManip.c:1177 -msgid "WHERE CURRENT OF on a view is not implemented" -msgstr "WHERE CURRENT OF mit einer Sicht ist nicht implementiert" +#: libpq/auth.c:260 +#, c-format +msgid "Kerberos 5 authentication failed for user \"%s\"" +msgstr "Kerberos-5-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: rewrite/rewriteRemove.c:66 +#: libpq/auth.c:263 #, c-format -msgid "rule \"%s\" for relation \"%s\" does not exist, skipping" -msgstr "Regel »%s« für Relation »%s« existiert nicht, wird übersprungen" +msgid "\"trust\" authentication failed for user \"%s\"" +msgstr "»trust«-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: rewrite/rewriteSupport.c:156 +#: libpq/auth.c:266 #, c-format -msgid "rule \"%s\" does not exist" -msgstr "Regel »%s« existiert nicht" +msgid "Ident authentication failed for user \"%s\"" +msgstr "Ident-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: rewrite/rewriteSupport.c:165 +#: libpq/auth.c:269 #, c-format -msgid "there are multiple rules named \"%s\"" -msgstr "es gibt mehrere Regeln namens »%s«" +msgid "Peer authentication failed for user \"%s\"" +msgstr "Peer-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: rewrite/rewriteSupport.c:166 -msgid "Specify a relation name as well as a rule name." -msgstr "Geben Sie einen Relationsnamen und einen Regelnamen an." +#: libpq/auth.c:273 +#, c-format +msgid "password authentication failed for user \"%s\"" +msgstr "Passwort-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: utils/error/assert.c:37 -msgid "TRAP: ExceptionalCondition: bad arguments\n" -msgstr "TRAP: ExceptionalCondition: fehlerhafte Argumente\n" +#: libpq/auth.c:278 +#, c-format +msgid "GSSAPI authentication failed for user \"%s\"" +msgstr "GSSAPI-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: utils/error/assert.c:40 +#: libpq/auth.c:281 #, c-format -msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n" -msgstr "TRAP: %s(»%s«, Datei: »%s«, Zeile: %d)\n" +msgid "SSPI authentication failed for user \"%s\"" +msgstr "SSPI-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: utils/error/elog.c:1479 +#: libpq/auth.c:284 #, c-format -msgid "could not reopen file \"%s\" as stderr: %m" -msgstr "konnte Datei »%s« nicht als stderr neu öffnen: %m" +msgid "PAM authentication failed for user \"%s\"" +msgstr "PAM-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: utils/error/elog.c:1492 +#: libpq/auth.c:287 #, c-format -msgid "could not reopen file \"%s\" as stdout: %m" -msgstr "konnte Datei »%s« nicht als stdou neu öffnen: %m" +msgid "LDAP authentication failed for user \"%s\"" +msgstr "LDAP-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: utils/error/elog.c:1882 utils/error/elog.c:1892 utils/error/elog.c:1902 -msgid "[unknown]" -msgstr "[unbekannt]" +#: libpq/auth.c:290 +#, c-format +msgid "certificate authentication failed for user \"%s\"" +msgstr "Zertifikatauthentifizierung für Benutzer »%s« fehlgeschlagen" -#: utils/error/elog.c:2253 utils/error/elog.c:2533 utils/error/elog.c:2611 -msgid "missing error text" -msgstr "fehlender Fehlertext" +#: libpq/auth.c:293 +#, c-format +msgid "RADIUS authentication failed for user \"%s\"" +msgstr "RADIUS-Authentifizierung für Benutzer »%s« fehlgeschlagen" -#: utils/error/elog.c:2256 utils/error/elog.c:2259 utils/error/elog.c:2614 -#: utils/error/elog.c:2617 +#: libpq/auth.c:296 #, c-format -msgid " at character %d" -msgstr " bei Zeichen %d" +msgid "authentication failed for user \"%s\": invalid authentication method" +msgstr "" +"Authentifizierung für Benutzer »%s« fehlgeschlagen: ungültige " +"Authentifizierungsmethode" -#: utils/error/elog.c:2269 utils/error/elog.c:2276 -msgid "DETAIL: " -msgstr "DETAIL: " +#: libpq/auth.c:325 +msgid "missing or erroneous pg_hba.conf file" +msgstr "fehlende oder fehlerhafter pg_hba.conf-Datei" -#: utils/error/elog.c:2283 -msgid "HINT: " -msgstr "TIPP: " +#: libpq/auth.c:326 +msgid "See server log for details." +msgstr "Einzelheiten finden Sie im Serverlog." -#: utils/error/elog.c:2290 -msgid "QUERY: " -msgstr "ANFRAGE: " +#: libpq/auth.c:356 +msgid "connection requires a valid client certificate" +msgstr "Verbindung erfordert ein gültiges Client-Zertifikat" -#: utils/error/elog.c:2297 -msgid "CONTEXT: " -msgstr "ZUSAMMENHANG: " +#: libpq/auth.c:400 libpq/auth.c:416 libpq/auth.c:464 libpq/auth.c:482 +msgid "SSL on" +msgstr "SSL an" -#: utils/error/elog.c:2307 -#, c-format -msgid "LOCATION: %s, %s:%d\n" -msgstr "ORT: %s, %s:%d\n" +#: libpq/auth.c:400 libpq/auth.c:416 libpq/auth.c:464 libpq/auth.c:482 +msgid "SSL off" +msgstr "SSL aus" -#: utils/error/elog.c:2314 +#: libpq/auth.c:398 #, c-format -msgid "LOCATION: %s:%d\n" -msgstr "ORT: %s:%d\n" - -#: utils/error/elog.c:2328 -msgid "STATEMENT: " -msgstr "ANWEISUNG: " +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" -#. translator: This string will be truncated at 47 -#. characters expanded. -#: utils/error/elog.c:2726 +#: libpq/auth.c:404 #, c-format -msgid "operating system error %d" -msgstr "Betriebssystemfehler %d" +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«" -#: utils/error/elog.c:2749 -msgid "DEBUG" -msgstr "DEBUG" +#: libpq/auth.c:413 +#, 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" -#: utils/error/elog.c:2753 -msgid "LOG" -msgstr "LOG" +#: libpq/auth.c:420 +#, 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«" -#: utils/error/elog.c:2756 -msgid "INFO" -msgstr "INFO" +#: libpq/auth.c:449 +#, 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." -#: utils/error/elog.c:2759 -msgid "NOTICE" -msgstr "HINWEIS" +#: libpq/auth.c:451 +#, 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." -#: utils/error/elog.c:2762 -msgid "WARNING" -msgstr "WARNUNG" +#: libpq/auth.c:453 +#, 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." -#: utils/error/elog.c:2765 -msgid "ERROR" -msgstr "FEHLER" +#: libpq/auth.c:462 +#, 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" -#: utils/error/elog.c:2768 -msgid "FATAL" -msgstr "FATAL" +#: libpq/auth.c:469 +#, 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«" -#: utils/error/elog.c:2771 -msgid "PANIC" -msgstr "PANIK" +#: libpq/auth.c:479 +#, 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" -#: utils/adt/xml.c:135 -msgid "unsupported XML feature" -msgstr "nicht unterstützte XML-Funktionalität" +#: libpq/auth.c:487 +#, 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«" -#: utils/adt/xml.c:136 -msgid "This functionality requires the server to be built with libxml support." +#: libpq/auth.c:539 libpq/hba.c:1118 +msgid "" +"MD5 authentication is not supported when \"db_user_namespace\" is enabled" msgstr "" -"Diese Funktionalität verlangt, dass der Server mit Libxml-Unterstützung " -"gebaut wird." - -#: utils/adt/xml.c:137 -msgid "You need to rebuild PostgreSQL using --with-libxml." -msgstr "Sie müssen PostgreSQL mit --with-libxml neu bauen." +"MD5-Authentifizierung wird nicht unterstützt, wenn »db_user_namespace« " +"angeschaltet ist" -#: utils/adt/xml.c:156 utils/mb/mbutils.c:515 +#: libpq/auth.c:663 #, c-format -msgid "invalid encoding name \"%s\"" -msgstr "ungültiger Kodierungsname »%s«" - -#: utils/adt/xml.c:402 utils/adt/xml.c:407 -msgid "invalid XML comment" -msgstr "ungültiger XML-Kommentar" +msgid "expected password response, got message type %d" +msgstr "Passwort-Antwort erwartet, Message-Typ %d empfangen" -#: utils/adt/xml.c:536 -msgid "not an XML document" -msgstr "kein XML-Dokument" +#: libpq/auth.c:691 +msgid "invalid password packet size" +msgstr "ungültige Größe des Passwortpakets" -#: utils/adt/xml.c:689 utils/adt/xml.c:712 -msgid "invalid XML processing instruction" -msgstr "ungültige XML-Verarbeitungsanweisung" +#: libpq/auth.c:695 +msgid "received password packet" +msgstr "Passwortpaket empfangen" -#: utils/adt/xml.c:690 +#: libpq/auth.c:753 #, c-format -msgid "XML processing instruction target name cannot be \"%s\"." -msgstr "Die Zielangabe der XML-Verarbeitungsanweisung darf nicht »%s« sein." +msgid "Kerberos initialization returned error %d" +msgstr "Kerberos-Initialisierung ergab Fehler %d" -#: utils/adt/xml.c:713 -msgid "XML processing instruction cannot contain \"?>\"." -msgstr "XML-Verarbeitungsanweisung darf nicht »?>« enthalten." +#: libpq/auth.c:763 +#, c-format +msgid "Kerberos keytab resolving returned error %d" +msgstr "Auflösung der Kerberos-Keytab ergab Fehler %d" -#: utils/adt/xml.c:792 -msgid "xmlvalidate is not implemented" -msgstr "xmlvalidate ist nicht implementiert" +#: libpq/auth.c:787 +#, c-format +msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d" +msgstr "Kerberos sname_to_principal(\"%s\", \"%s\") ergab Fehler %d" -#: utils/adt/xml.c:877 -msgid "could not initialize XML library" -msgstr "konnte XML-Bibliothek nicht initialisieren" +#: libpq/auth.c:832 +#, c-format +msgid "Kerberos recvauth returned error %d" +msgstr "Kerberos recvauth ergab Fehler %d" -#: utils/adt/xml.c:878 +#: libpq/auth.c:855 #, 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." +msgid "Kerberos unparse_name returned error %d" +msgstr "Kerberos unparse_name ergab Fehler %d" -#: utils/adt/xml.c:1418 -msgid "Invalid character value." -msgstr "Ungültiger Zeichenwert." +#: libpq/auth.c:1003 +msgid "GSSAPI is not supported in protocol version 2" +msgstr "GSSAPI wird in Protokollversion 2 nicht unterstützt" -#: utils/adt/xml.c:1421 -msgid "Space required." -msgstr "Leerzeichen benötigt." +#: libpq/auth.c:1058 +#, c-format +msgid "expected GSS response, got message type %d" +msgstr "GSS-Antwort erwartet, Message-Typ %d empfangen" -#: utils/adt/xml.c:1424 -msgid "standalone accepts only 'yes' or 'no'." -msgstr "standalone akzeptiert nur »yes« oder »no«." +#: libpq/auth.c:1121 +msgid "accepting GSS security context failed" +msgstr "Annahme des GSS-Sicherheitskontexts fehlgeschlagen" -#: utils/adt/xml.c:1427 -msgid "Malformed declaration: missing version." -msgstr "Fehlerhafte Deklaration: Version fehlt." +#: libpq/auth.c:1147 +msgid "retrieving GSS user name failed" +msgstr "Abfrage des GSS-Benutzernamens fehlgeschlagen" -#: utils/adt/xml.c:1430 -msgid "Missing encoding in text declaration." -msgstr "Fehlende Kodierung in Textdeklaration." +#: libpq/auth.c:1264 +msgid "SSPI is not supported in protocol version 2" +msgstr "SSL wird in Protokollversion 2 nicht unterstützt" -#: utils/adt/xml.c:1433 -msgid "Parsing XML declaration: '?>' expected." -msgstr "Beim Parsen der XML-Deklaration: »?>« erwartet." +#: libpq/auth.c:1279 +msgid "could not acquire SSPI credentials" +msgstr "konnte SSPI-Credentials nicht erhalten" -#: utils/adt/xml.c:1436 +#: libpq/auth.c:1296 #, c-format -msgid "Unrecognized libxml error code: %d." -msgstr "Unbekannter Libxml-Fehlercode: %d." +msgid "expected SSPI response, got message type %d" +msgstr "SSPI-Antwort erwartet, Message-Typ %d empfangen" -#: utils/adt/xml.c:1687 utils/adt/date.c:217 -msgid "date out of range" -msgstr "date ist außerhalb des gültigen Bereichs" +#: libpq/auth.c:1368 +msgid "could not accept SSPI security context" +msgstr "konnte SSPI-Sicherheitskontext nicht akzeptieren" -#: utils/adt/xml.c:1688 -msgid "XML does not support infinite date values." -msgstr "XML unterstützt keine unendlichen Datumswerte." +#: libpq/auth.c:1430 +msgid "could not get token from SSPI security context" +msgstr "konnte kein Token vom SSPI-Sicherheitskontext erhalten" -#: 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 ist außerhalb des gültigen Bereichs" +#: libpq/auth.c:1674 +#, c-format +msgid "could not create socket for Ident connection: %m" +msgstr "konnte Socket für Ident-Verbindung nicht erzeugen: %m" -#: utils/adt/xml.c:1711 utils/adt/xml.c:1738 -msgid "XML does not support infinite timestamp values." -msgstr "XML unterstützt keine unendliche timestamp-Werte." +#: libpq/auth.c:1689 +#, c-format +msgid "could not bind to local address \"%s\": %m" +msgstr "konnte nicht mit lokaler Adresse »%s« verbinden: %m" -#: utils/adt/xml.c:2123 -msgid "invalid query" -msgstr "ungültige Anfrage" +#: libpq/auth.c:1701 +#, 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" -#: utils/adt/xml.c:3347 -msgid "invalid array for XML namespace mapping" -msgstr "ungültiges Array for XML-Namensraumabbildung" +#: libpq/auth.c:1721 +#, 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" -#: utils/adt/xml.c:3348 +#: libpq/auth.c:1736 +#, c-format msgid "" -"The array must be two-dimensional with length of the second axis equal to 2." +"could not receive response from Ident server at address \"%s\", port %s: %m" msgstr "" -"Das Array muss zweidimensional sein und die Länge der zweiten Achse muss " -"gleich 2 sein." - -#: utils/adt/xml.c:3372 -msgid "empty XPath expression" -msgstr "leerer XPath-Ausdruck" - -#: utils/adt/xml.c:3420 -msgid "neither namespace name nor URI may be null" -msgstr "weder Namensraumname noch URI dürfen NULL sein" +"konnte Antwort von Ident-Server auf Adresse »%s«, Port %s nicht empfangen: %m" -#: utils/adt/xml.c:3427 +#: libpq/auth.c:1746 #, 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" +msgid "invalidly formatted response from Ident server: \"%s\"" +msgstr "ungültig formatierte Antwort vom Ident-Server: »%s«" -#: utils/adt/acl.c:166 utils/adt/name.c:87 -msgid "identifier too long" -msgstr "Bezeichner zu lang" +#: libpq/auth.c:1785 +msgid "peer authentication is not supported on this platform" +msgstr "Peer-Authentifizierung wird auf dieser Plattform nicht unterstützt" -#: utils/adt/acl.c:167 utils/adt/name.c:88 +#: libpq/auth.c:1789 #, c-format -msgid "Identifier must be less than %d characters." -msgstr "Bezeichner muss weniger als %d Zeichen haben." +msgid "could not get peer credentials: %m" +msgstr "konnte Credentials von Gegenstelle nicht ermitteln: %m" -#: utils/adt/acl.c:253 +#: libpq/auth.c:1798 #, c-format -msgid "unrecognized key word: \"%s\"" -msgstr "unbekanntes Schlüsselwort: »%s«" +msgid "local user with ID %d does not exist" +msgstr "lokaler Benutzer mit ID %d existiert nicht" -#: utils/adt/acl.c:254 -msgid "ACL key word must be \"group\" or \"user\"." -msgstr "ACL-Schlüsselwort muss »group« oder »user« sein." +#: libpq/auth.c:1881 libpq/auth.c:2153 libpq/auth.c:2513 +msgid "empty password returned by client" +msgstr "Client gab leeres Passwort zurück" -#: utils/adt/acl.c:259 -msgid "missing name" -msgstr "Name fehlt" +#: libpq/auth.c:1891 +#, c-format +msgid "error from underlying PAM layer: %s" +msgstr "Fehler von der unteren PAM-Ebene: %s" -#: utils/adt/acl.c:260 -msgid "A name must follow the \"group\" or \"user\" key word." -msgstr "Auf das Schlüsselwort »group« oder »user« muss ein Name folgen." +#: libpq/auth.c:1960 +#, c-format +msgid "could not create PAM authenticator: %s" +msgstr "konnte PAM-Authenticator nicht erzeugen: %s" -#: utils/adt/acl.c:266 -msgid "missing \"=\" sign" -msgstr "»=«-Zeichen fehlt" +#: libpq/auth.c:1971 +#, c-format +msgid "pam_set_item(PAM_USER) failed: %s" +msgstr "pam_set_item(PAM_USER) fehlgeschlagen: %s" -#: utils/adt/acl.c:319 +#: libpq/auth.c:1982 #, c-format -msgid "invalid mode character: must be one of \"%s\"" -msgstr "ungültiges Moduszeichen: muss eines aus »%s« sein" +msgid "pam_set_item(PAM_CONV) failed: %s" +msgstr "pam_set_item(PAM_CONV) fehlgeschlagen: %s" -#: utils/adt/acl.c:341 -msgid "a name must follow the \"/\" sign" -msgstr "auf das »/«-Zeichen muss ein Name folgen" +#: libpq/auth.c:1993 +#, c-format +msgid "pam_authenticate failed: %s" +msgstr "pam_authenticate fehlgeschlagen: %s" -#: utils/adt/acl.c:349 +#: libpq/auth.c:2004 #, c-format -msgid "defaulting grantor to user ID %u" -msgstr "nicht angegebener Grantor wird auf user ID %u gesetzt" +msgid "pam_acct_mgmt failed: %s" +msgstr "pam_acct_mgmt fehlgeschlagen: %s" -#: utils/adt/acl.c:540 -msgid "ACL array contains wrong data type" -msgstr "ACL-Array enthält falschen Datentyp" +#: libpq/auth.c:2015 +#, c-format +msgid "could not release PAM authenticator: %s" +msgstr "konnte PAM-Authenticator nicht freigeben: %s" -#: utils/adt/acl.c:544 -msgid "ACL arrays must be one-dimensional" -msgstr "ACL-Arrays müssen eindimensional sein" +#: libpq/auth.c:2048 libpq/auth.c:2052 +#, c-format +msgid "could not initialize LDAP: error code %d" +msgstr "konnte LDAP nicht initialisieren: Fehlercode %d" -#: utils/adt/acl.c:548 -msgid "ACL arrays must not contain null values" -msgstr "ACL-Array darf keine NULL-Werte enthalten" +#: libpq/auth.c:2062 +#, c-format +msgid "could not set LDAP protocol version: error code %d" +msgstr "konnte LDAP-Protokollversion nicht setzen: Fehlercode %d" -#: utils/adt/acl.c:572 -msgid "extra garbage at the end of the ACL specification" -msgstr "überflüssiger Müll am Ende der ACL-Angabe" +#: libpq/auth.c:2091 +msgid "could not load wldap32.dll" +msgstr "konnte wldap32.dll nicht laden" -#: utils/adt/acl.c:1129 -msgid "grant options cannot be granted back to your own grantor" -msgstr "Grant-Optionen können nicht an den eigenen Grantor gegeben werden" +#: libpq/auth.c:2099 +msgid "could not load function _ldap_start_tls_sA in wldap32.dll" +msgstr "konnte Funktion _ldap_start_tls_sA in wldap32.dll nicht laden" -#: utils/adt/acl.c:1190 -msgid "dependent privileges exist" -msgstr "abhängige Privilegien existieren" +#: libpq/auth.c:2100 +msgid "LDAP over SSL is not supported on this platform." +msgstr "LDAP über SSL wird auf dieser Plattform nicht unterstützt." -#: utils/adt/acl.c:1191 -msgid "Use CASCADE to revoke them too." -msgstr "Verwenden Sie CASCADE, um diese auch zu entziehen." +#: libpq/auth.c:2115 +#, c-format +msgid "could not start LDAP TLS session: error code %d" +msgstr "konnte LDAP-TLS-Sitzung nicht öffnen: Fehlercode %d" -#: utils/adt/acl.c:1470 -msgid "aclinsert is no longer supported" -msgstr "aclinsert wird nicht mehr unterstützt" +#: libpq/auth.c:2137 +msgid "LDAP server not specified" +msgstr "LDAP-Server nicht angegeben" -#: utils/adt/acl.c:1480 -msgid "aclremove is no longer supported" -msgstr "aclremove wird nicht mehr unterstützt" +#: libpq/auth.c:2189 +msgid "invalid character in user name for LDAP authentication" +msgstr "ungültiges Zeichen im Benutzernamen für LDAP-Authentifizierung" -#: utils/adt/acl.c:1566 utils/adt/acl.c:1620 +#: libpq/auth.c:2204 #, c-format -msgid "unrecognized privilege type: \"%s\"" -msgstr "unbekannter Privilegtyp: »%s«" +msgid "" +"could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": " +"error code %d" +msgstr "" +"erstes LDAP-Binden für ldapbinddn »%s« auf Server »%s« fehlgeschlagen: " +"Fehlercode %d" -#: utils/adt/acl.c:3359 utils/adt/regproc.c:118 utils/adt/regproc.c:139 -#: utils/adt/regproc.c:289 +#: libpq/auth.c:2229 #, c-format -msgid "function \"%s\" does not exist" -msgstr "Funktion »%s« existiert nicht" +msgid "could not search LDAP for filter \"%s\" on server \"%s\": error code %d" +msgstr "" +"konnte LDAP nicht mit Filter »%s« auf Server »%s« durchsuchen: Fehlercode %d" -#: utils/adt/acl.c:4608 +#: libpq/auth.c:2239 #, c-format -msgid "must be member of role \"%s\"" -msgstr "Berechtigung nur für Mitglied von Rolle »%s«" - -#: utils/adt/array_userfuncs.c:48 -msgid "could not determine input data types" -msgstr "konnte Eingabedatentypen nicht bestimmen" - -#: utils/adt/array_userfuncs.c:82 -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: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 "integer ist außerhalb des gültigen Bereichs" - -#: utils/adt/array_userfuncs.c:121 -msgid "argument must be empty or one-dimensional array" -msgstr "Argument muss entweder leer oder ein eindimensionales Array sein" - -#: 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 "inkompatible Arrays können nicht aneinandergehängt werden" +msgid "LDAP search failed for filter \"%s\" on server \"%s\": no such user" +msgstr "" +"LDAP-Suche fehlgeschlagen für Filter »%s« auf Server »%s«: Benutzer " +"existiert nicht" -#: utils/adt/array_userfuncs.c:225 +#: libpq/auth.c:2243 #, c-format msgid "" -"Arrays with element types %s and %s are not compatible for concatenation." +"LDAP search failed for filter \"%s\" on server \"%s\": user is not unique " +"(%ld matches)" msgstr "" -"Arrays mit Elementtypen %s und %s sind nicht kompatibel für Aneinanderhängen." +"LDAP-Suche fehlgeschlagen für Filter »%s« auf Server »%s«: Benutzer ist " +"nicht eindeutig (%ld Treffer)" -#: utils/adt/array_userfuncs.c:264 +#: libpq/auth.c:2260 #, c-format -msgid "Arrays of %d and %d dimensions are not compatible for concatenation." +msgid "" +"could not get dn for the first entry matching \"%s\" on server \"%s\": %s" msgstr "" -"Arrays mit %d und %d Dimensionen sind nicht kompatibel für Aneinanderhängen." +"konnte DN fũr den ersten Treffer für »%s« auf Server »%s« nicht lesen: %s" -#: utils/adt/array_userfuncs.c:301 -msgid "" -"Arrays with differing element dimensions are not compatible for " -"concatenation." +#: libpq/auth.c:2280 +#, c-format +msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s" msgstr "" -"Arrays mit unterschiedlichen Elementdimensionen sind nicht kompatibel für " -"Aneinanderhängen." +"Losbinden fehlgeschlagen nach Suche nach Benutzer »%s« auf Server »%s«: %s" -#: utils/adt/array_userfuncs.c:330 utils/adt/array_userfuncs.c:358 -msgid "Arrays with differing dimensions are not compatible for concatenation." +#: libpq/auth.c:2317 +#, c-format +msgid "LDAP login failed for user \"%s\" on server \"%s\": error code %d" msgstr "" -"Arrays mit unterschiedlichen Dimensionen sind nicht kompatibel für " -"Aneinanderhängen." +"LDAP-Login fehlgeschlagen für Benutzer »%s« auf Server »%s«: Fehlercode %d" -#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1238 -#: utils/adt/arrayfuncs.c:2911 utils/adt/arrayfuncs.c:4930 +#: libpq/auth.c:2345 #, c-format -msgid "invalid number of dimensions: %d" -msgstr "ungültige Anzahl Dimensionen: %d" +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" -#: utils/adt/array_userfuncs.c:487 -msgid "could not determine input data type" -msgstr "konnte Eingabedatentypen nicht bestimmen" +#: libpq/auth.c:2469 +msgid "RADIUS server not specified" +msgstr "RADIUS-Server nicht angegeben" -#: utils/adt/arrayfuncs.c:235 utils/adt/arrayfuncs.c:247 -msgid "missing dimension value" -msgstr "Dimensionswert fehlt" +#: libpq/auth.c:2476 +msgid "RADIUS secret not specified" +msgstr "RADIUS-Geheimnis nicht angegeben" -#: utils/adt/arrayfuncs.c:257 -msgid "missing \"]\" in array dimensions" -msgstr "»]« in Arraydimensionen fehlt" +#: libpq/auth.c:2492 libpq/hba.c:1403 +#, c-format +msgid "could not translate RADIUS server name \"%s\" to address: %s" +msgstr "konnte RADIUS-Servername »%s« nicht in Adresse übersetzen: %s" -#: 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 "Obergrenze kann nicht kleiner als Untergrenze sein" +#: libpq/auth.c:2520 +msgid "" +"RADIUS authentication does not support passwords longer than 16 characters" +msgstr "" +"RADIUS-Authentifizierung unterstützt keine Passwörter länger als 16 Zeichen" -#: utils/adt/arrayfuncs.c:277 utils/adt/arrayfuncs.c:303 -msgid "array value must start with \"{\" or dimension information" -msgstr "Arraywert muss mit »{« oder Dimensionsinformationen anfangen" +#: libpq/auth.c:2531 +msgid "could not generate random encryption vector" +msgstr "konnte zufälligen Verschlüsselungsvektor nicht erzeugen" -#: utils/adt/arrayfuncs.c:291 -msgid "missing assignment operator" -msgstr "fehlender Zuweisungsoperator" +#: libpq/auth.c:2554 +msgid "could not perform MD5 encryption of password" +msgstr "konnte MD5-Verschlüsselung des Passworts nicht durchführen" -#: utils/adt/arrayfuncs.c:308 utils/adt/arrayfuncs.c:314 -msgid "array dimensions incompatible with array literal" -msgstr "Arraydimensionen sind inkompatibel mit Arraykonstante" +#: libpq/auth.c:2576 +#, c-format +msgid "could not create RADIUS socket: %m" +msgstr "konnte RADIUS-Socket nicht erstellen: %m" -#: 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 +#: libpq/auth.c:2597 #, c-format -msgid "malformed array literal: \"%s\"" -msgstr "fehlerhafte Arraykonstante: »%s«" +msgid "could not bind local RADIUS socket: %m" +msgstr "konnte lokales RADIUS-Socket nicht binden: %m" -#: 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 +#: libpq/auth.c:2607 #, c-format -msgid "array size exceeds the maximum allowed (%d)" -msgstr "Arraygröße überschreitet erlaubtes Maximum (%d)" +msgid "could not send RADIUS packet: %m" +msgstr "konnte RADIUS-Paket nicht senden: %m" -#: utils/adt/arrayfuncs.c:1249 -msgid "invalid array flags" -msgstr "ungültige Array-Flags" +#: libpq/auth.c:2636 libpq/auth.c:2661 +msgid "timeout waiting for RADIUS response" +msgstr "Zeitüberschreitung beim Warten auf RADIUS-Antwort" -#: utils/adt/arrayfuncs.c:1257 -msgid "wrong element type" -msgstr "falscher Elementtyp" +#: libpq/auth.c:2654 +#, c-format +msgid "could not check status on RADIUS socket: %m" +msgstr "konnte Status des RADIUS-Sockets nicht prüfen: %m" -#: utils/adt/arrayfuncs.c:1307 utils/cache/lsyscache.c:2467 +#: libpq/auth.c:2683 #, c-format -msgid "no binary input function available for type %s" -msgstr "keine binäre Eingabefunktion verfügbar für Typ %s" +msgid "could not read RADIUS response: %m" +msgstr "konnte RADIUS-Antwort nicht lesen: %m" -#: utils/adt/arrayfuncs.c:1447 +#: libpq/auth.c:2695 libpq/auth.c:2699 #, c-format -msgid "improper binary format in array element %d" -msgstr "falsches Binärformat in Arrayelement %d" +msgid "RADIUS response was sent from incorrect port: %i" +msgstr "RADIUS-Antwort wurde von falschem Port gesendet: %i" -#: utils/adt/arrayfuncs.c:1529 utils/cache/lsyscache.c:2500 +#: libpq/auth.c:2708 #, c-format -msgid "no binary output function available for type %s" -msgstr "keine binäre Ausgabefunktion verfügbar für Typ %s" +msgid "RADIUS response too short: %i" +msgstr "RADIUS-Antwort zu kurz: %i" -#: utils/adt/arrayfuncs.c:1903 -msgid "slices of fixed-length arrays not implemented" -msgstr "" -"Auswählen von Stücken aus Arrays mit fester Länge ist nicht implementiert" +#: libpq/auth.c:2715 +#, c-format +msgid "RADIUS response has corrupt length: %i (actual length %i)" +msgstr "RADIUS-Antwort hat verfälschte Länge: %i (tatsächliche Länge %i)" -#: 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 "falsche Anzahl Arrayindizes" +#: libpq/auth.c:2723 +#, c-format +msgid "RADIUS response is to a different request: %i (should be %i)" +msgstr "RADIUS-Antwort unterscheidet sich von Anfrage: %i (sollte %i sein)" -#: utils/adt/arrayfuncs.c:2081 utils/adt/arrayfuncs.c:2174 -#: utils/adt/arrayfuncs.c:2469 -msgid "array subscript out of range" -msgstr "Arrayindex außerhalb des gültigen Bereichs" +#: libpq/auth.c:2748 +msgid "could not perform MD5 encryption of received packet" +msgstr "konnte MD5-Verschlüsselung des empfangenen Pakets nicht durchführen" -#: utils/adt/arrayfuncs.c:2086 -msgid "cannot assign null value to an element of a fixed-length array" -msgstr "Array mit fester Länge kann keinen NULL-Wert enthalten" +#: libpq/auth.c:2757 +msgid "RADIUS response has incorrect MD5 signature" +msgstr "RADIUS-Antwort hat falsche MD5-Signatur" -#: utils/adt/arrayfuncs.c:2372 -msgid "updates on slices of fixed-length arrays not implemented" -msgstr "" -"Aktualisieren von Stücken aus Arrays mit fester Länge ist nicht implementiert" +#: libpq/auth.c:2774 +#, c-format +msgid "RADIUS response has invalid code (%i) for user \"%s\"" +msgstr "RADIUS-Antwort hat ungültigen Code (%i) für Benutzer »%s«" -#: utils/adt/arrayfuncs.c:2408 utils/adt/arrayfuncs.c:2495 -msgid "source array too small" -msgstr "Quellarray ist zu klein" +#: libpq/hba.c:160 +#, c-format +msgid "authentication file token too long, skipping: \"%s\"" +msgstr "Token in Authentifizierungsdatei zu lang, wird übersprungen: »%s«" -#: utils/adt/arrayfuncs.c:3050 -msgid "null array element not allowed in this context" -msgstr "NULL-Werte im Array sind in diesem Zusammenhang nicht erlaubt" +#: libpq/hba.c:355 +#, c-format +msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" +msgstr "" +"konnte sekundäre Authentifizierungsdatei »@%s« nicht als »%s« öffnen: %m" -#: utils/adt/arrayfuncs.c:3153 utils/adt/arrayfuncs.c:3361 -#: utils/adt/arrayfuncs.c:3672 -msgid "cannot compare arrays of different element types" -msgstr "kann Arrays mit verschiedenen Elementtypen nicht vergleichen" +#: libpq/hba.c:628 +#, c-format +msgid "could not translate host name \"%s\" to address: %s" +msgstr "konnte Hostname »%s« nicht in Adresse übersetzen: %s" -#: utils/adt/arrayfuncs.c:3563 -#, fuzzy, c-format -msgid "could not identify a hash function for type %s" -msgstr "konnte keine Vergleichsfunktion für Typ %s ermitteln" +#. 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 "" +"Authentifizierungsoption »%s« ist nur gültig für Authentifizierungsmethoden " +"%s" -#: utils/adt/arrayfuncs.c:4808 utils/adt/arrayfuncs.c:4848 -#, fuzzy -msgid "dimension array or low bound array cannot be null" -msgstr "Dimensions-Array oder Untergrenzen-Array kann nicht NULL sein" +#: libpq/hba.c:795 +#, c-format +msgid "authentication method \"%s\" requires argument \"%s\" to be set" +msgstr "Authentifizierungsmethode »%s« benötigt Argument »%s«" -#: utils/adt/arrayfuncs.c:4911 utils/adt/arrayfuncs.c:4943 -msgid "Dimension array must be one dimensional." -msgstr "Dimensions-Array muss eindimensional sein." +#: libpq/hba.c:832 +msgid "local connections are not supported by this build" +msgstr "lokale Verbindungen werden von dieser Installation nicht unterstützt" -#: utils/adt/arrayfuncs.c:4916 utils/adt/arrayfuncs.c:4948 -msgid "wrong range of array subscripts" -msgstr "falscher Bereich der Arrayindizes" +#: libpq/hba.c:853 +msgid "hostssl requires SSL to be turned on" +msgstr "für hostssl muss SSL angeschaltet sein" -#: utils/adt/arrayfuncs.c:4917 utils/adt/arrayfuncs.c:4949 -msgid "Lower bound of dimension array must be one." -msgstr "Untergrenze des Dimensions-Arrays muss eins sein." +#: libpq/hba.c:854 +msgid "Set ssl = on in postgresql.conf." +msgstr "Setzen Sie ssl = on in postgresql.conf." -#: utils/adt/arrayfuncs.c:4922 utils/adt/arrayfuncs.c:4954 -msgid "dimension values cannot be null" -msgstr "Dimensionswerte dürfen nicht NULL sein" +#: libpq/hba.c:862 +msgid "hostssl is not supported by this build" +msgstr "hostssl wird von dieser Installation nicht unterstützt" -#: utils/adt/arrayfuncs.c:4960 -msgid "Low bound array has different size than dimensions array." -msgstr "Untergrenzen-Array hat andere Größe als Dimensions-Array." +#: libpq/hba.c:863 +msgid "Compile with --with-openssl to use SSL connections." +msgstr "Kompilieren Sie mit --with-openssl, um SSL-Verbindungen zu verwenden." -#: utils/adt/arrayutils.c:209 -msgid "typmod array must be type cstring[]" -msgstr "Typmod-Array muss Typ cstring[] haben." +#: libpq/hba.c:885 +#, c-format +msgid "invalid connection type \"%s\"" +msgstr "ungültiger Verbindungstyp »%s«" -#: utils/adt/arrayutils.c:214 -msgid "typmod array must be one-dimensional" -msgstr "Typmod-Arrays müssen eindimensional sein" +#: libpq/hba.c:898 +msgid "end-of-line before database specification" +msgstr "Zeilenende vor Datenbankangabe" -#: utils/adt/arrayutils.c:219 -msgid "typmod array must not contain nulls" -msgstr "Typmod-Array darf keine NULL-Werte enthalten" +#: libpq/hba.c:911 +msgid "end-of-line before role specification" +msgstr "Zeilenende vor Rollenangabe" -#: utils/adt/ascii.c:75 +#: libpq/hba.c:926 +msgid "end-of-line before IP address specification" +msgstr "Zeilenende vor IP-Adressangabe" + +#: libpq/hba.c:980 #, c-format -msgid "encoding conversion from %s to ASCII not supported" -msgstr "Kodierungsumwandlung zwischen %s und ASCII wird nicht unterstützt" +msgid "invalid IP address \"%s\": %s" +msgstr "ungültige IP-Adresse »%s«: %s" -#: utils/adt/bool.c:153 +#: libpq/hba.c:1000 #, c-format -msgid "invalid input syntax for type boolean: \"%s\"" -msgstr "ungültige Eingabesyntax für Typ boolean: »%s«" +msgid "specifying both host name and CIDR mask is invalid: \"%s\"" +msgstr "Angabe von sowohl Hostname als auch CIDR-Maske ist ungültig: »%s«" -#: utils/adt/cash.c:232 +#: libpq/hba.c:1014 #, c-format -msgid "invalid input syntax for type money: \"%s\"" -msgstr "ungültige Eingabesyntax für Typ money: »%s«" +msgid "invalid CIDR mask in address \"%s\"" +msgstr "ungültige CIDR-Maske in Adresse »%s«" -#: 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 "Division durch Null" +#: libpq/hba.c:1032 +msgid "end-of-line before netmask specification" +msgstr "Zeilenende vor Netzmaskenangabe" -#: utils/adt/char.c:169 -msgid "\"char\" out of range" -msgstr "\"char\" ist außerhalb des gültigen Bereichs" +#: libpq/hba.c:1044 +#, c-format +msgid "invalid IP mask \"%s\": %s" +msgstr "ungültige IP-Maske »%s«: %s" -#: 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 "ungültige Typmodifikation" +#: libpq/hba.c:1061 +msgid "IP address and mask do not match" +msgstr "IP-Adresse und -Maske passen nicht zusammen" -#: utils/adt/date.c:71 +#: libpq/hba.c:1076 +msgid "end-of-line before authentication method" +msgstr "Zeilenende vor Authentifizierungsmethode" + +#: libpq/hba.c:1149 #, c-format -msgid "TIME(%d)%s precision must not be negative" -msgstr "Präzision von TIME(%d)%s darf nicht negativ sein" +msgid "invalid authentication method \"%s\"" +msgstr "ungültige Authentifizierungsmethode »%s«" -#: utils/adt/date.c:77 +#: libpq/hba.c:1160 #, 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" +msgid "invalid authentication method \"%s\": not supported by this build" +msgstr "" +"ungültige Authentifizierungsmethode »%s«: von dieser Installation nicht " +"unterstützt" -#: 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 "Datum/Zeitwert »current« wird nicht mehr unterstützt" +#: libpq/hba.c:1181 +msgid "krb5 authentication is not supported on local sockets" +msgstr "krb5-Authentifizierung wird auf lokalen Sockets nicht unterstützt" -#: utils/adt/date.c:167 -#, c-format -msgid "date out of range: \"%s\"" -msgstr "date ist außerhalb des gültigen Bereichs: »%s«" +#: libpq/hba.c:1192 +msgid "gssapi authentication is not supported on local sockets" +msgstr "gssapi-Authentifizierung wird auf lokalen Sockets nicht unterstützt" -#: utils/adt/date.c:359 -msgid "cannot subtract infinite dates" -msgstr "kann unendliche date-Werte nicht subtrahieren" +#: libpq/hba.c:1203 +msgid "peer authentication is only supported on local sockets" +msgstr "peer-Authentifizierung wird nur auf lokalen Sockets unterstützt" + +#: libpq/hba.c:1220 +msgid "cert authentication is only supported on hostssl connections" +msgstr "cert-Authentifizierung wird nur auf »hostssl«-Verbindungen unterstützt" + +#: libpq/hba.c:1241 +#, c-format +msgid "authentication option not in name=value format: %s" +msgstr "Authentifizierungsoption nicht im Format name=wert: %s" -#: utils/adt/date.c:416 utils/adt/date.c:453 -msgid "date out of range for timestamp" -msgstr "Datum ist außerhalb des gültigen Bereichs für Typ »timestamp«" +#: libpq/hba.c:1257 +msgid "ident, peer, krb5, gssapi, sspi and cert" +msgstr "ident, peer, krb5, gssapi, sspi und cert" -#: utils/adt/date.c:986 -msgid "cannot convert reserved abstime value to date" -msgstr "kann reservierten »abstime«-Wert nicht in »date« umwandeln" +#: libpq/hba.c:1271 +msgid "clientcert can only be configured for \"hostssl\" rows" +msgstr "clientcert kann nur für »hostssl«-Zeilen konfiguriert werden" -#: 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 "time ist außerhalb des gültigen Bereichs" +#: libpq/hba.c:1282 +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" -#: utils/adt/date.c:1793 utils/adt/date.c:1810 -#, c-format -msgid "\"time\" units \"%s\" not recognized" -msgstr "»time«-Einheit »%s« nicht erkannt" +#: libpq/hba.c:1283 +msgid "Make sure the root.crt file is present and readable." +msgstr "Stellen Sie sicher, dass die Datei root.crt vorhanden und lesbar ist." -#: utils/adt/date.c:1932 -msgid "time zone displacement out of range" -msgstr "Zeitzonenunterschied ist außerhalb des gültigen Bereichs" +#: libpq/hba.c:1296 +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" -#: utils/adt/date.c:2557 utils/adt/date.c:2574 +#: libpq/hba.c:1330 #, c-format -msgid "\"time with time zone\" units \"%s\" not recognized" -msgstr "»time with time zone«-Einheit »%s« nicht erkannt" +msgid "invalid LDAP port number: \"%s\"" +msgstr "ungültige LDAP-Portnummer: »%s«" -#: 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 "Zeitzone »%s« nicht erkannt" +#: libpq/hba.c:1376 libpq/hba.c:1384 +msgid "krb5, gssapi and sspi" +msgstr "krb5, gssapi und sspi" -#: utils/adt/date.c:2672 +#: libpq/hba.c:1422 #, c-format -msgid "\"interval\" time zone \"%s\" not valid" -msgstr "»interval«-Zeitzone »%s« nicht gültig" +msgid "invalid RADIUS port number: \"%s\"" +msgstr "ungültige RADIUS-Portnummer: »%s«" -#: utils/adt/datetime.c:3532 utils/adt/datetime.c:3539 +#: libpq/hba.c:1442 #, c-format -msgid "date/time field value out of range: \"%s\"" -msgstr "Datum/Zeit-Feldwert ist außerhalb des gültigen Bereichs: »%s«" +msgid "unrecognized authentication option name: \"%s\"" +msgstr "unbekannter Authentifizierungsoptionsname: »%s«" -#: utils/adt/datetime.c:3541 -msgid "Perhaps you need a different \"datestyle\" setting." -msgstr "Möglicherweise benötigen Sie eine andere »datestyle«-Einstellung." +#: libpq/hba.c:1474 +msgid "" +"cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, or ldapsearchattribute " +"together with ldapprefix" +msgstr "" +"ldapbasedn, ldapbinddn, ldapbindpasswd oder ldapsearchattribute kann nicht " +"zusammen mit ldapprefix verwendet werden" + +#: libpq/hba.c:1484 +msgid "" +"authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix" +"\", or \"ldapsuffix\" to be set" +msgstr "" +"Authentifizierungsmethode »ldap« benötigt Argument »ldapbasedn«, " +"»ldapprefix« oder »ldapsuffix«" -#: utils/adt/datetime.c:3546 +#: libpq/hba.c:1815 #, c-format -msgid "interval field value out of range: \"%s\"" -msgstr "»interval«-Feldwert ist außerhalb des gültigen Bereichs: »%s«" +msgid "invalid regular expression \"%s\": %s" +msgstr "ungültiger regulärer Ausdruck »%s«: %s" -#: utils/adt/datetime.c:3552 +#: libpq/hba.c:1838 #, c-format -msgid "time zone displacement out of range: \"%s\"" -msgstr "Zeitzonenunterschied ist außerhalb des gültigen Bereichs: »%s«" +msgid "regular expression match for \"%s\" failed: %s" +msgstr "Suche nach regulärem Ausdruck für »%s« fehlgeschlagen: %s" -#. translator: first %s is inet or cidr -#: utils/adt/datetime.c:3559 utils/adt/network.c:107 +#: libpq/hba.c:1856 #, c-format -msgid "invalid input syntax for type %s: \"%s\"" -msgstr "ungültige Eingabesyntax für Typ %s: »%s«" +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" -#: utils/adt/datum.c:80 utils/adt/datum.c:92 -msgid "invalid Datum pointer" -msgstr "ungültiger »Datum«-Zeiger" +#: libpq/hba.c:1922 +#, c-format +msgid "missing entry in file \"%s\" at end of line %d" +msgstr "fehlender Eintrag in Datei »%s« am Ende von Zeile %d" -#: utils/adt/dbsize.c:105 utils/adt/dbsize.c:189 +#: libpq/hba.c:1963 #, c-format -msgid "could not open tablespace directory \"%s\": %m" -msgstr "konnte Tablespace-Verzeichnis »%s« nicht öffnen: %m" +msgid "provided user name (%s) and authenticated user name (%s) do not match" +msgstr "" +"angegebener Benutzername (%s) und authentifizierter Benutzername (%s) " +"stimmen nicht überein" -#: utils/adt/domains.c:80 +#: libpq/hba.c:1984 #, c-format -msgid "type %s is not a domain" -msgstr "Typ %s ist keine Domäne" +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«" -#: utils/adt/encode.c:55 utils/adt/encode.c:91 +#: libpq/hba.c:2008 #, c-format -msgid "unrecognized encoding: \"%s\"" -msgstr "unbekannte Kodierung: »%s«" +msgid "could not open usermap file \"%s\": %m" +msgstr "konnte Usermap-Datei »%s« nicht öffnen: %m" -#: utils/adt/encode.c:150 +#: 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 hexadecimal digit: \"%c\"" -msgstr "ungültige hexadezimale Ziffer: »%c«" +msgid "invalid large-object descriptor: %d" +msgstr "ungültiger Large-Object-Deskriptor: %d" -#: utils/adt/encode.c:178 -msgid "invalid hexadecimal data: odd number of digits" -msgstr "ungültige hexadezimale Daten: ungerade Anzahl Ziffern" +#: 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 "keine Berechtigung für Large Object %u" -#: utils/adt/encode.c:295 -msgid "unexpected \"=\"" -msgstr "unerwartetes »%s«" +#: libpq/be-fsstubs.c:194 +#, c-format +msgid "large object descriptor %d was not opened for writing" +msgstr "Large-Objekt-Deskriptor %d wurde nicht zum Schreiben geöffnet" -#: utils/adt/encode.c:307 -msgid "invalid symbol" -msgstr "ungültiges Symbol" +#: libpq/be-fsstubs.c:287 catalog/objectaddress.c:828 +#: catalog/pg_largeobject.c:200 +#, c-format +msgid "must be owner of large object %u" +msgstr "Berechtigung nur für Eigentümer des Large Object %u" -#: utils/adt/encode.c:327 -msgid "invalid end sequence" -msgstr "ungültige Endsequenz" +#: libpq/be-fsstubs.c:392 +msgid "must be superuser to use server-side lo_import()" +msgstr "nur Superuser können das serverseitige lo_import() verwenden" -#: 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 "ungültige Eingabesyntax für Typ bytea" +#: libpq/be-fsstubs.c:393 +msgid "Anyone can use the client-side lo_import() provided by libpq." +msgstr "Jeder kann das clientseitige lo_import() von libpq verwenden." -#: utils/adt/enum.c:48 utils/adt/enum.c:58 utils/adt/enum.c:113 -#: utils/adt/enum.c:123 +#: libpq/be-fsstubs.c:406 #, c-format -msgid "invalid input value for enum %s: \"%s\"" -msgstr "ungültiger Eingabewert für Enum %s: »%s«" +msgid "could not open server file \"%s\": %m" +msgstr "konnte Serverdatei »%s« nicht öffnen: %m" -#: utils/adt/enum.c:85 utils/adt/enum.c:148 utils/adt/enum.c:198 +#: libpq/be-fsstubs.c:428 #, c-format -msgid "invalid internal value for enum: %u" -msgstr "ungültiger interner Wert für Enum: %u" - -#: 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 "konnte tatsächlichen Enum-Typen nicht bestimmen" - -#: utils/adt/enum.c:365 utils/adt/enum.c:394 -#, fuzzy, c-format -msgid "enum %s contains no values" -msgstr "Spalte »%s« enthält NULL-Werte" +msgid "could not read server file \"%s\": %m" +msgstr "konnte Serverdatei »%s« nicht lesen: %m" -#: utils/adt/float.c:54 -msgid "value out of range: overflow" -msgstr "Wert ist außerhalb des gültigen Bereichs: Überlauf" +#: libpq/be-fsstubs.c:458 +msgid "must be superuser to use server-side lo_export()" +msgstr "nur Superuser können das serverseitige lo_export() verwenden" -#: utils/adt/float.c:59 -msgid "value out of range: underflow" -msgstr "Wert ist außerhalb des gültigen Bereichs: Unterlauf" +#: libpq/be-fsstubs.c:459 +msgid "Anyone can use the client-side lo_export() provided by libpq." +msgstr "Jeder kann das clientseitige lo_export() von libpq verwenden." -#: utils/adt/float.c:206 utils/adt/float.c:247 utils/adt/float.c:298 +#: libpq/be-fsstubs.c:484 #, c-format -msgid "invalid input syntax for type real: \"%s\"" -msgstr "ungültige Eingabesyntax für Typ real: »%s«" +msgid "could not create server file \"%s\": %m" +msgstr "konnte Serverdatei »%s« nicht erstellen: %m" -#: utils/adt/float.c:242 +#: libpq/be-fsstubs.c:496 #, c-format -msgid "\"%s\" is out of range for type real" -msgstr "»%s« ist außerhalb des gültigen Bereichs für Typ real" +msgid "could not write server file \"%s\": %m" +msgstr "konnte Serverdatei »%s« nicht schreiben: %m" -#: 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 +#: storage/file/fd.c:411 #, c-format -msgid "invalid input syntax for type double precision: \"%s\"" -msgstr "ungültige Eingabesyntax für Typ double precision: »%s«" +msgid "getrlimit failed: %m" +msgstr "getrlimit fehlgeschlagen: %m" -#: utils/adt/float.c:435 -#, 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" +#: storage/file/fd.c:501 +msgid "insufficient file descriptors available to start server process" +msgstr "nicht genug Dateideskriptoren verfügbar, um Serverprozess zu starten" -#: 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 ist außerhalb des gültigen Bereichs" +#: storage/file/fd.c:502 +#, c-format +msgid "System allows %d, we need at least %d." +msgstr "System erlaubt %d, wir benötigen mindestens %d." -#: utils/adt/float.c:1303 utils/adt/numeric.c:5183 -msgid "cannot take square root of a negative number" -msgstr "Quadratwurzel von negativer Zahl kann nicht ermittelt werden" +#: storage/file/fd.c:543 storage/file/fd.c:1528 storage/file/fd.c:1643 +#, c-format +msgid "out of file descriptors: %m; release and retry" +msgstr "keine Dateideskriptoren mehr: %m; freigeben und nochmal versuchen" -#: utils/adt/float.c:1345 utils/adt/numeric.c:2166 -msgid "zero raised to a negative power is undefined" -msgstr "null hoch eine negative Zahl ist undefiniert" +#: storage/file/fd.c:1110 +#, c-format +msgid "temporary file: path \"%s\", size %lu" +msgstr "temporäre Datei: Pfad »%s«, Größe %lu" -#: utils/adt/float.c:1349 utils/adt/numeric.c:2172 -msgid "a negative number raised to a non-integer power yields a complex result" +#: storage/file/fd.c:1504 +#, c-format +msgid "exceeded maxAllocatedDescs (%d) while trying to open file \"%s\"" msgstr "" -"eine negative Zahl hoch eine nicht ganze Zahl ergibt ein komplexes Ergebnis" - -#: utils/adt/float.c:1415 utils/adt/float.c:1445 utils/adt/numeric.c:5401 -msgid "cannot take logarithm of zero" -msgstr "Logarithmus von null kann nicht ermittelt werden" +"maxAllocatedDescs (%d) überschritten beim Versuch die Datei »%s« zu öffnen" -#: utils/adt/float.c:1419 utils/adt/float.c:1449 utils/adt/numeric.c:5405 -msgid "cannot take logarithm of a negative number" -msgstr "Logarithmus negativer Zahlen kann nicht ermittelt werden" +#: storage/file/fd.c:1619 +#, c-format +msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\"" +msgstr "" +"maxAllocatedDescs (%d) überschritten beim Versuch das Verzeichnis »%s« zu " +"öffnen" -#: 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 "Eingabe ist außerhalb des gültigen Bereichs" +#: storage/file/fd.c:1702 +#, c-format +msgid "could not read directory \"%s\": %m" +msgstr "konnte Verzeichnis »%s« nicht lesen: %m" -#: utils/adt/float.c:2687 utils/adt/numeric.c:1171 -msgid "count must be greater than zero" -msgstr "Anzahl muss größer als null sein" +#: 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 "" +"nicht genug Shared-Memory für Datenstruktur »%s« (%lu Bytes angefordert)" -#: utils/adt/float.c:2692 utils/adt/numeric.c:1178 -msgid "operand, lower bound and upper bound cannot be NaN" -msgstr "Operand, Untergrenze und Obergrenze dürfen nicht NaN sein" +#: storage/ipc/shmem.c:365 +#, c-format +msgid "could not create ShmemIndex entry for data structure \"%s\"" +msgstr "konnte ShmemIndex-Eintrag für Datenstruktur »%s« nicht erzeugen" -#: utils/adt/float.c:2698 -msgid "lower and upper bounds must be finite" -msgstr "Untergrenze und Obergrenze müssen endlich sein" +#: storage/ipc/shmem.c:380 +#, 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" -#: utils/adt/float.c:2736 utils/adt/numeric.c:1191 -msgid "lower bound cannot equal upper bound" -msgstr "Untergrenze kann nicht gleich der Obergrenze sein" +#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446 +msgid "requested shared memory size overflows size_t" +msgstr "angeforderte Shared-Memory-Größe übersteigt Kapazität von size_t" -#: utils/adt/formatting.c:492 -msgid "invalid format specification for an interval value" -msgstr "ungültige Formatangabe für Intervall-Wert" +#: storage/buffer/bufmgr.c:134 storage/buffer/bufmgr.c:242 +msgid "cannot access temporary tables of other sessions" +msgstr "auf temporäre Tabellen anderer Sitzungen kann nicht zugegriffen werden" -#: utils/adt/formatting.c:493 -msgid "Intervals are not tied to specific calendar dates." -msgstr "Intervalle beziehen sich nicht auf bestimmte Kalenderdaten." +#: storage/buffer/bufmgr.c:378 +#, c-format +msgid "unexpected data beyond EOF in block %u of relation %s" +msgstr "unerwartete Daten hinter Dateiende in Block %u von Relation %s" -#: utils/adt/formatting.c:1060 -msgid "\"EEEE\" must be the last pattern used" -msgstr "»EEEE« muss das letzte Muster sein" +#: storage/buffer/bufmgr.c:380 +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." -#: utils/adt/formatting.c:1068 -msgid "\"9\" must be ahead of \"PR\"" -msgstr "»9« muss vor »PR« stehen" +#: storage/buffer/bufmgr.c:452 +#, c-format +msgid "invalid page header in block %u of relation %s; zeroing out page" +msgstr "" +"ungültiger Seitenkopf in Block %u von Relation %s; fülle Seite mit Nullen" -#: utils/adt/formatting.c:1084 -msgid "\"0\" must be ahead of \"PR\"" -msgstr "»0« muss vor »PR« stehen" +#: storage/buffer/bufmgr.c:460 +#, c-format +msgid "invalid page header in block %u of relation %s" +msgstr "ungültiger Seitenkopf in Block %u von Relation %s" -#: utils/adt/formatting.c:1110 -msgid "multiple decimal points" -msgstr "mehrere Dezimalpunkte" +#: storage/buffer/bufmgr.c:2746 +#, c-format +msgid "could not write block %u of %s" +msgstr "konnte Block %u von %s nicht schreiben" -#: utils/adt/formatting.c:1114 utils/adt/formatting.c:1197 -msgid "cannot use \"V\" and decimal point together" -msgstr "»V« und Dezimalpunkt können nicht zusammen verwendet werden" +#: storage/buffer/bufmgr.c:2748 +msgid "Multiple failures --- write error might be permanent." +msgstr "Mehrere Fehlschläge --- Schreibfehler ist möglicherweise dauerhaft." -#: utils/adt/formatting.c:1126 -msgid "cannot use \"S\" twice" -msgstr "»S« kann nicht zweimal verwendet werden" +#: storage/buffer/bufmgr.c:2769 storage/buffer/bufmgr.c:2788 +#, c-format +msgid "writing block %u of relation %s" +msgstr "schreibe Block %u von Relation %s" -#: utils/adt/formatting.c:1130 -msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" -msgstr "»S« und »PL«/»MI«/»SG«/»PR« können nicht zusammen verwendet werden" +#: storage/buffer/localbuf.c:190 +msgid "no empty local buffer available" +msgstr "kein leerer lokaler Puffer verfügbar" -#: utils/adt/formatting.c:1150 -msgid "cannot use \"S\" and \"MI\" together" -msgstr "»S« und »MI« können nicht zusammen verwendet werden" +#: storage/large_object/inv_api.c:266 catalog/aclchk.c:647 +#: catalog/aclchk.c:3676 catalog/aclchk.c:4367 catalog/objectaddress.c:199 +#: catalog/pg_largeobject.c:116 catalog/pg_largeobject.c:176 +#, c-format +msgid "large object %u does not exist" +msgstr "Large Object %u existiert nicht" -#: utils/adt/formatting.c:1160 -msgid "cannot use \"S\" and \"PL\" together" -msgstr "»S« und »PL« können nicht zusammen verwendet werden" +#: storage/large_object/inv_api.c:563 storage/large_object/inv_api.c:760 +#, c-format +msgid "large object %u was not opened for writing" +msgstr "Large Object %u wurde nicht zum Schreiben geöffnet" -#: utils/adt/formatting.c:1170 -msgid "cannot use \"S\" and \"SG\" together" -msgstr "»S« und »SG« können nicht zusammen verwendet werden" +#: storage/large_object/inv_api.c:570 storage/large_object/inv_api.c:767 +#, c-format +msgid "large object %u was already dropped" +msgstr "Large Object %u wurde gleichzeitig gelöscht" -#: utils/adt/formatting.c:1179 -msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" -msgstr "»PR« und »S«/»PL«/»MI«/»SG« können nicht zusammen verwendet werden" +#: 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 "verfälschte Seitenzeiger: lower = %u, upper = %u, special = %u" -#: utils/adt/formatting.c:1205 -msgid "cannot use \"EEEE\" twice" -msgstr "»EEEE« kann nicht zweimal verwendet werden" +#: storage/page/bufpage.c:433 +#, c-format +msgid "corrupted item pointer: %u" +msgstr "verfälschter Item-Zeiger: %u" -#: utils/adt/formatting.c:1211 -msgid "\"EEEE\" is incompatible with other formats" -msgstr "»EEEE« ist mit anderen Formaten inkompatibel" +#: storage/page/bufpage.c:444 storage/page/bufpage.c:805 +#, c-format +msgid "corrupted item lengths: total %u, available space %u" +msgstr "verfälschte Item-Längen: gesamt %u, verfügbarer Platz %u" -#: utils/adt/formatting.c:1212 -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" +#: storage/page/bufpage.c:642 storage/page/bufpage.c:778 +#, c-format +msgid "corrupted item pointer: offset = %u, size = %u" +msgstr "verfälschter Item-Zeiger: offset = %u, size = %u" -#: utils/adt/formatting.c:1412 +#: storage/smgr/md.c:393 storage/smgr/md.c:863 #, c-format -msgid "\"%s\" is not a number" -msgstr "»%s« ist keine Zahl" +msgid "could not truncate file \"%s\": %m" +msgstr "kann Datei »%s« nicht kürzen: %m" -#: utils/adt/formatting.c:1519 utils/adt/formatting.c:1569 -#, fuzzy -msgid "could not determine which collation to use for lower() function" -msgstr "" -"konnte den tatsächlichen Rückgabetyp der polymorphischen Funktion »%s« nicht " -"ermitteln" +#: storage/smgr/md.c:460 +#, c-format +msgid "cannot extend file \"%s\" beyond %u blocks" +msgstr "kann Datei »%s« nicht auf über %u Blöcke erweitern" -#: utils/adt/formatting.c:1640 utils/adt/formatting.c:1690 -#, fuzzy -msgid "could not determine which collation to use for upper() function" -msgstr "" -"konnte den tatsächlichen Rückgabetyp der polymorphischen Funktion »%s« nicht " -"ermitteln" +# XXX +#: storage/smgr/md.c:482 storage/smgr/md.c:643 storage/smgr/md.c:718 +#, 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" -#: utils/adt/formatting.c:1773 utils/adt/formatting.c:1835 -#, fuzzy -msgid "could not determine which collation to use for initcap() function" -msgstr "" -"konnte den tatsächlichen Rückgabetyp der polymorphischen Funktion »%s« nicht " -"ermitteln" +#: storage/smgr/md.c:490 +#, c-format +msgid "could not extend file \"%s\": %m" +msgstr "konnte Datei »%s« nicht erweitern: %m" -#: utils/adt/formatting.c:2017 -msgid "invalid combination of date conventions" -msgstr "ungültige Kombination von Datumskonventionen" +#: storage/smgr/md.c:492 storage/smgr/md.c:499 storage/smgr/md.c:745 +msgid "Check free disk space." +msgstr "Prüfen Sie den freien Festplattenplatz." -#: utils/adt/formatting.c:2018 -msgid "" -"Do not mix Gregorian and ISO week date conventions in a formatting template." +#: storage/smgr/md.c:496 +#, c-format +msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u" msgstr "" -"Die Gregorianische und die ISO-Konvention für Wochendaten können nicht einer " -"Formatvorlage gemischt werden." +"konnte Datei »%s« nicht erweitern: es wurden nur %d von %d Bytes bei Block " +"%u geschrieben" -#: utils/adt/formatting.c:2035 +#: storage/smgr/md.c:661 #, c-format -msgid "conflicting values for \"%s\" field in formatting string" -msgstr "widersprüchliche Werte für das Feld »%s« in Formatzeichenkette" +msgid "could not read block %u in file \"%s\": %m" +msgstr "konnte Block %u in Datei »%s« nicht lesen: %m" -#: utils/adt/formatting.c:2037 -msgid "This value contradicts a previous setting for the same field type." +#: storage/smgr/md.c:677 +#, c-format +msgid "could not read block %u in file \"%s\": read only %d of %d bytes" msgstr "" -"Der Wert widerspricht einer vorherigen Einstellung für den selben Feldtyp." +"konnte Block %u in Datei »%s« nicht lesen: es wurden nur %d von %d Bytes " +"gelesen" -#: utils/adt/formatting.c:2098 +#: storage/smgr/md.c:736 #, c-format -msgid "source string too short for \"%s\" formatting field" -msgstr "Quellzeichenkette zu kurz für Formatfeld »%s»" +msgid "could not write block %u in file \"%s\": %m" +msgstr "konnte Block %u in Datei »%s« nicht schreiben: %m" -#: utils/adt/formatting.c:2100 +#: storage/smgr/md.c:741 #, c-format -msgid "Field requires %d characters, but only %d remain." -msgstr "Feld benötigt %d Zeichen, aber nur %d verbleiben." +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" -#: utils/adt/formatting.c:2103 utils/adt/formatting.c:2117 -msgid "" -"If your source string is not fixed-width, try using the \"FM\" modifier." +#: storage/smgr/md.c:839 +#, c-format +msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now" msgstr "" -"Wenn die Quellzeichenkette keine feste Breite hat, versuchen Sie den " -"Modifikator »%s«." +"konnte Datei »%s« nicht auf %u Blöcke kürzen: es sind jetzt nur %u Blöcke" -#: utils/adt/formatting.c:2113 utils/adt/formatting.c:2126 -#: utils/adt/formatting.c:2256 +#: storage/smgr/md.c:888 #, c-format -msgid "invalid value \"%s\" for \"%s\"" -msgstr "ungültiger Wert »%s« für »%s«" +msgid "could not truncate file \"%s\" to %u blocks: %m" +msgstr "konnte Datei »%s« nicht auf %u Blöcke kürzen: %m" -#: utils/adt/formatting.c:2115 +#: storage/smgr/md.c:1141 #, 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." +msgid "could not fsync file \"%s\" but retrying: %m" +msgstr "konnte Datei »%s« nicht fsyncen, versuche erneut: %m" -#: utils/adt/formatting.c:2128 -msgid "Value must be an integer." -msgstr "Der Wert muss eine ganze Zahl sein." +#: storage/smgr/md.c:1286 +msgid "could not forward fsync request because request queue is full" +msgstr "konnte fsync-Anfrage nicht weiterleiten, weil Anfrageschlange voll ist" -#: utils/adt/formatting.c:2133 +#: storage/smgr/md.c:1661 #, 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" +msgid "could not open file \"%s\" (target block %u): %m" +msgstr "konnte Datei »%s« nicht öffnen (Zielblock %u): %m" -#: utils/adt/formatting.c:2135 +#: storage/smgr/md.c:1683 #, c-format -msgid "Value must be in the range %d to %d." -msgstr "Der Wert muss im Bereich %d bis %d sein." +msgid "could not seek to end of file \"%s\": %m" +msgstr "konnte Positionszeiger nicht ans Ende der Datei »%s« setzen: %m" -#: utils/adt/formatting.c:2258 -msgid "The given value did not match any of the allowed values for this field." +#: storage/lmgr/predicate.c:665 +msgid "not enough elements in RWConflictPool to record a read/write conflict" msgstr "" -"Der angegebene Wert stimmte mit keinem der für dieses Feld zulässigen Werte " -"überein." +"nicht genügend Elemente in RWConflictPool, um einen Lese-/Schreibkonflikt " +"aufzuzeichnen" -#: utils/adt/formatting.c:2814 -msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date" -msgstr "Formatmuster »TZ«/»tz« werden in to_date nicht unterstützt" +#: storage/lmgr/predicate.c:666 storage/lmgr/predicate.c:694 +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." -#: utils/adt/formatting.c:2918 -msgid "invalid input string for \"Y,YYY\"" -msgstr "ungültige Eingabe für »Y,YYY«" +#: storage/lmgr/predicate.c:693 +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" -#: utils/adt/formatting.c:3435 -#, c-format -msgid "hour \"%d\" is invalid for the 12-hour clock" -msgstr "Stunde »%d« ist bei einer 12-Stunden-Uhr ungültig" +#: storage/lmgr/predicate.c:898 +msgid "memory for serializable conflict tracking is nearly exhausted" +msgstr "" +"Speicher für die Verfolgung von Serialisierungskonflikten ist fast " +"aufgebraucht" -#: utils/adt/formatting.c:3437 -msgid "Use the 24-hour clock, or give an hour between 1 and 12." +#: storage/lmgr/predicate.c:899 +msgid "" +"There might be an idle transaction or a forgotten prepared transaction " +"causing this." msgstr "" -"Verwenden Sie die 24-Stunden-Uhr oder geben Sie eine Stunde zwischen 1 und " -"12 an." +"Möglicherweise gibt es eine stillliegende Transaktion oder eine vergessene " +"vorbereitete Transaktion, die der Grund dafür ist." -#: utils/adt/formatting.c:3475 +#: storage/lmgr/predicate.c:1181 storage/lmgr/predicate.c:1253 #, c-format -msgid "inconsistent use of year %04d and \"BC\"" -msgstr "inkonsistente Verwendung von Jahr %04d und »BC«" +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)" -#: utils/adt/formatting.c:3522 -msgid "cannot calculate day of year without year information" -msgstr "kann Tag des Jahres nicht berechnen ohne Jahrinformationen" +#: storage/lmgr/predicate.c:1536 +msgid "deferrable snapshot was unsafe; trying a new one" +msgstr "aufschiebbarer Snapshot war unsicher; versuche einen neuen" -#: utils/adt/formatting.c:4380 -msgid "\"EEEE\" not supported for input" -msgstr "»E« wird nicht bei der Eingabe unterstützt" +#: storage/lmgr/predicate.c:1571 +msgid "\"default_transaction_isolation\" is set to \"serializable\"." +msgstr "»default_transaction_isolation« ist auf »serializable« gesetzt." -#: utils/adt/formatting.c:4392 -msgid "\"RN\" not supported for input" -msgstr "»RN« wird nicht bei der Eingabe unterstützt" +#: storage/lmgr/predicate.c:1572 +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." -#: utils/adt/genfile.c:60 -msgid "reference to parent directory (\"..\") not allowed" -msgstr "Verweis auf übergeordnetes Verzeichnis (»..«) nicht erlaubt" +#: storage/lmgr/predicate.c:2247 storage/lmgr/predicate.c:2262 +#: storage/lmgr/predicate.c:3654 +msgid "You might need to increase max_pred_locks_per_transaction." +msgstr "Sie müssen möglicherweise max_pred_locks_per_transaction erhöhen." -#: utils/adt/genfile.c:71 -msgid "absolute path not allowed" -msgstr "absoluter Pfad nicht erlaubt" +#: storage/lmgr/predicate.c:3808 storage/lmgr/predicate.c:3897 +#: storage/lmgr/predicate.c:3905 storage/lmgr/predicate.c:3944 +#: storage/lmgr/predicate.c:4183 storage/lmgr/predicate.c:4520 +#: storage/lmgr/predicate.c:4532 storage/lmgr/predicate.c:4574 +#: storage/lmgr/predicate.c:4612 +msgid "" +"could not serialize access due to read/write dependencies among transactions" +msgstr "" +"konnte Zugriff nicht serialisieren wegen Lese-/Schreib-Abhängigkeiten " +"zwischen Transaktionen" -#: utils/adt/genfile.c:76 -msgid "path must be in or below the current directory" -msgstr "Pfad muss in oder unter aktuellem Verzeichnis sein" +#: storage/lmgr/predicate.c:3810 storage/lmgr/predicate.c:3899 +#: storage/lmgr/predicate.c:3907 storage/lmgr/predicate.c:3946 +#: storage/lmgr/predicate.c:4185 storage/lmgr/predicate.c:4522 +#: storage/lmgr/predicate.c:4534 storage/lmgr/predicate.c:4576 +#: storage/lmgr/predicate.c:4614 +msgid "The transaction might succeed if retried." +msgstr "" +"Die Transaktion könnte erfolgreich sein, wenn sie erneut versucht würde." + +#: storage/lmgr/proc.c:1065 +#, c-format +msgid "Process %d waits for %s on %s." +msgstr "Prozess %d wartet auf %s-Sperre auf %s." + +#: storage/lmgr/proc.c:1075 +#, c-format +msgid "sending cancel to blocking autovacuum PID %d" +msgstr "sende Stornierung an blockierende Autovacuum-PID %d" + +#: storage/lmgr/proc.c:1121 +#, 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:1133 +#, 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" -#: 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 "verlangte Länge zu groß" +#: storage/lmgr/proc.c:1139 +#, 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" -#: utils/adt/genfile.c:129 +#: storage/lmgr/proc.c:1143 #, c-format -msgid "could not seek in file \"%s\": %m" -msgstr "konnte Positionszeiger in Datei »%s« nicht setzen: %m" +msgid "process %d acquired %s on %s after %ld.%03d ms" +msgstr "Prozess %d erlangte %s-Sperre auf %s nach %ld,%03d ms" -#: 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 "nur Superuser können Dateien lesen" +#: storage/lmgr/proc.c:1159 +#, 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" -#: utils/adt/genfile.c:186 utils/adt/genfile.c:231 -msgid "requested length cannot be negative" -msgstr "verlangte Länge darf nicht negativ sein" +#: storage/lmgr/lock.c:609 +#, c-format +msgid "" +"cannot acquire lock mode %s on database objects while recovery is in progress" +msgstr "" +"Sperrmodus %s kann während der Wiederherstellung nicht auf Datenbankobjekte " +"gesetzt werden" -#: utils/adt/genfile.c:272 -msgid "must be superuser to get file information" -msgstr "nur Superuser können Dateiinformationen lesen" +#: storage/lmgr/lock.c:611 +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." -#: utils/adt/genfile.c:336 -msgid "must be superuser to get directory listings" -msgstr "nur Superuser können Verzeichnislisten lesen" +#: storage/lmgr/lock.c:724 storage/lmgr/lock.c:793 storage/lmgr/lock.c:2701 +#: storage/lmgr/lock.c:2766 +msgid "You might need to increase max_locks_per_transaction." +msgstr "Sie müssen möglicherweise max_locks_per_transaction erhöhen." -#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:4251 utils/adt/geo_ops.c:5172 -msgid "too many points requested" -msgstr "zu viele Punkte verlangt" +#: storage/lmgr/lock.c:2116 storage/lmgr/lock.c:2210 +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" -#: utils/adt/geo_ops.c:317 -msgid "could not format \"path\" value" -msgstr "konnte »path«-Wert nicht formatieren" +#: storage/lmgr/lock.c:2302 +msgid "Not enough memory for reassigning the prepared transaction's locks." +msgstr "" +"Nicht genug Speicher, um die Sperren der vorbereiteten Transaktion zu " +"übergeben." -#: utils/adt/geo_ops.c:392 +#: storage/lmgr/deadlock.c:923 #, c-format -msgid "invalid input syntax for type box: \"%s\"" -msgstr "ungültige Eingabesyntax für Typ box: »%s«" +msgid "Process %d waits for %s on %s; blocked by process %d." +msgstr "Prozess %d wartet auf %s-Sperre auf %s; blockiert von Prozess %d." -#: utils/adt/geo_ops.c:956 +#: storage/lmgr/deadlock.c:942 #, c-format -msgid "invalid input syntax for type line: \"%s\"" -msgstr "ungültige Eingabesyntax für Typ line: »%s«" - -#: 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 "Typ »line« ist noch nicht implementiert" +msgid "Process %d: %s" +msgstr "Prozess %d: %s" -#: utils/adt/geo_ops.c:1411 utils/adt/geo_ops.c:1434 -#, c-format -msgid "invalid input syntax for type path: \"%s\"" -msgstr "ungültige Eingabesyntax für Typ path: »%s«" +#: storage/lmgr/deadlock.c:949 +msgid "deadlock detected" +msgstr "Verklemmung (Deadlock) entdeckt" -#: utils/adt/geo_ops.c:1473 -msgid "invalid number of points in external \"path\" value" -msgstr "ungültige Anzahl Punkte in externem »path«-Wert" +#: storage/lmgr/deadlock.c:952 +msgid "See server log for query details." +msgstr "Einzelheiten zur Anfrage finden Sie im Serverlog." -#: utils/adt/geo_ops.c:1816 +#: storage/lmgr/lmgr.c:756 #, c-format -msgid "invalid input syntax for type point: \"%s\"" -msgstr "ungültige Eingabesyntax für Typ point: »%s«" +msgid "relation %u of database %u" +msgstr "Relation %u der Datenbank %u" -#: utils/adt/geo_ops.c:2044 +#: storage/lmgr/lmgr.c:762 #, c-format -msgid "invalid input syntax for type lseg: \"%s\"" -msgstr "ungültige Eingabesyntax für Typ lseg: »%s«" +msgid "extension of relation %u of database %u" +msgstr "Erweiterung von Relation %u in Datenbank %u" -#: utils/adt/geo_ops.c:2648 -msgid "function \"dist_lb\" not implemented" -msgstr "Funktion »dist_lb« ist nicht implementiert" +#: storage/lmgr/lmgr.c:768 +#, c-format +msgid "page %u of relation %u of database %u" +msgstr "Seite %u von Relation %u von Datenbank %u" -#: utils/adt/geo_ops.c:3161 -msgid "function \"close_lb\" not implemented" -msgstr "Funktion »close_lb« ist nicht implementiert" +#: storage/lmgr/lmgr.c:775 +#, c-format +msgid "tuple (%u,%u) of relation %u of database %u" +msgstr "Tupel (%u, %u) von Relation %u von Datenbank %u" -#: utils/adt/geo_ops.c:3450 -msgid "cannot create bounding box for empty polygon" -msgstr "kann kein umschließendes Rechteck für leeres Polygon berechnen" +#: storage/lmgr/lmgr.c:783 +#, c-format +msgid "transaction %u" +msgstr "Transaktion %u" -#: utils/adt/geo_ops.c:3474 utils/adt/geo_ops.c:3486 +#: storage/lmgr/lmgr.c:788 #, c-format -msgid "invalid input syntax for type polygon: \"%s\"" -msgstr "ungültige Eingabesyntax für Typ polygon: »%s«" +msgid "virtual transaction %d/%u" +msgstr "virtuelle Transaktion %d/%u" -#: utils/adt/geo_ops.c:3526 -msgid "invalid number of points in external \"polygon\" value" -msgstr "ungültige Anzahl Punkte in externem »polygon«-Wert" +#: storage/lmgr/lmgr.c:794 +#, c-format +msgid "object %u of class %u of database %u" +msgstr "Objekt %u von Klasse %u von Datenbank %u" -#: utils/adt/geo_ops.c:4049 -msgid "function \"poly_distance\" not implemented" -msgstr "Funktion »poly_distance« ist nicht implementiert" +#: storage/lmgr/lmgr.c:802 +#, c-format +msgid "user lock [%u,%u,%u]" +msgstr "Benutzersperre [%u,%u,%u]" -#: utils/adt/geo_ops.c:4363 -msgid "function \"path_center\" not implemented" -msgstr "Funktion »path_center« ist nicht implementiert" +#: storage/lmgr/lmgr.c:809 +#, c-format +msgid "advisory lock [%u,%u,%u,%u]" +msgstr "Benutzersperre [%u,%u,%u,%u]" -#: utils/adt/geo_ops.c:4380 -msgid "open path cannot be converted to polygon" -msgstr "offener Pfad kann nicht in Polygon umgewandelt werden" +#: storage/lmgr/lmgr.c:817 +#, c-format +msgid "unrecognized locktag type %d" +msgstr "unbekannter Locktag-Typ %d" -#: utils/adt/geo_ops.c:4549 utils/adt/geo_ops.c:4559 utils/adt/geo_ops.c:4574 -#: utils/adt/geo_ops.c:4580 +#: rewrite/rewriteRemove.c:62 rewrite/rewriteSupport.c:117 +#: rewrite/rewriteDefine.c:700 rewrite/rewriteDefine.c:762 #, c-format -msgid "invalid input syntax for type circle: \"%s\"" -msgstr "ungültige Eingabesyntax für Typ circle: »%s«" +msgid "rule \"%s\" for relation \"%s\" does not exist" +msgstr "Regel »%s« für Relation »%s« existiert nicht" -#: utils/adt/geo_ops.c:4602 utils/adt/geo_ops.c:4610 -msgid "could not format \"circle\" value" -msgstr "konnte »circle«-Wert nicht formatieren" +#: rewrite/rewriteRemove.c:66 +#, c-format +msgid "rule \"%s\" for relation \"%s\" does not exist, skipping" +msgstr "Regel »%s« für Relation »%s« existiert nicht, wird übersprungen" -#: utils/adt/geo_ops.c:4637 -msgid "invalid radius in external \"circle\" value" -msgstr "ungültiger Radius in externem »circle«-Wert" +#: rewrite/rewriteManip.c:1012 +msgid "conditional utility statements are not implemented" +msgstr "Utility-Anweisungen mit Bedingung sind nicht implementiert" -#: utils/adt/geo_ops.c:5158 -msgid "cannot convert circle with radius zero to polygon" -msgstr "kann Kreis mit Radius null nicht in Polygon umwandeln" +#: rewrite/rewriteManip.c:1024 rewrite/rewriteHandler.c:442 +#: parser/parse_utilcmd.c:2139 parser/parse_utilcmd.c:2238 +msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" +msgstr "UNION/INTERSECTION/EXCEPT mit Bedingung sind nicht implementiert" -#: utils/adt/geo_ops.c:5163 -msgid "must request at least 2 points" -msgstr "mindestens 2 Punkte müssen angefordert werden" +#: rewrite/rewriteManip.c:1177 +msgid "WHERE CURRENT OF on a view is not implemented" +msgstr "WHERE CURRENT OF mit einer Sicht ist nicht implementiert" -#: utils/adt/geo_ops.c:5207 utils/adt/geo_ops.c:5230 -msgid "cannot convert empty polygon to circle" -msgstr "kann leeres Polygon nicht in Kreis umwandeln" +#: rewrite/rewriteSupport.c:156 +#, c-format +msgid "rule \"%s\" does not exist" +msgstr "Regel »%s« existiert nicht" -#: utils/adt/int.c:162 -msgid "int2vector has too many elements" -msgstr "int2vector-Wert hat zu viele Elemente" +#: rewrite/rewriteSupport.c:165 +#, c-format +msgid "there are multiple rules named \"%s\"" +msgstr "es gibt mehrere Regeln namens »%s«" -#: utils/adt/int.c:237 -msgid "invalid int2vector data" -msgstr "ungültige int2vector-Daten" +#: rewrite/rewriteSupport.c:166 +msgid "Specify a relation name as well as a rule name." +msgstr "Geben Sie einen Relationsnamen und einen Regelnamen an." -#: utils/adt/int.c:243 utils/adt/oid.c:212 utils/adt/oid.c:293 -msgid "oidvector has too many elements" -msgstr "oidvector-Wert hat zu viele Elemente" +#: rewrite/rewriteHandler.c:485 +#, 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" -#: 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 "Schrittgröße kann nicht gleich null sein" +#: rewrite/rewriteHandler.c:543 +msgid "cannot have RETURNING lists in multiple rules" +msgstr "RETURNING-Listen können nicht in mehreren Regeln auftreten" -#: 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 +#: rewrite/rewriteHandler.c:874 rewrite/rewriteHandler.c:892 #, c-format -msgid "invalid input syntax for integer: \"%s\"" -msgstr "ungültige Eingabesyntax für ganze Zahl: »%s«" +msgid "multiple assignments to same column \"%s\"" +msgstr "mehrere Zuweisungen zur selben Spalte »%s«" -#: utils/adt/int8.c:114 +#: rewrite/rewriteHandler.c:1030 catalog/heap.c:2441 #, c-format -msgid "value \"%s\" is out of range for type bigint" -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: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 ist außerhalb des gültigen Bereichs" - -#: utils/adt/int8.c:1330 -msgid "OID out of range" -msgstr "OID ist außerhalb des gültigen Bereichs" +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" -#: utils/adt/like.c:211 utils/adt/selfuncs.c:4852 -#, fuzzy -msgid "could not determine which collation to use for ILIKE" -msgstr "konnte Eingabedatentypen nicht bestimmen" +#: rewrite/rewriteHandler.c:1627 rewrite/rewriteHandler.c:2022 +#, c-format +msgid "infinite recursion detected in rules for relation \"%s\"" +msgstr "unendliche Rekursion entdeckt in Regeln für Relation »%s«" -#: utils/adt/like_match.c:104 utils/adt/like_match.c:164 -msgid "LIKE pattern must not end with escape character" -msgstr "LIKE-Muster darf nicht mit Escape-Zeichen enden" +#: rewrite/rewriteHandler.c:1883 +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" -#: utils/adt/like_match.c:289 utils/adt/regexp.c:684 -msgid "invalid escape string" -msgstr "ungültige ESCAPE-Zeichenkette" +#: rewrite/rewriteHandler.c:1897 +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" -#: utils/adt/like_match.c:290 utils/adt/regexp.c:685 -msgid "Escape string must be empty or one character." -msgstr "ESCAPE-Zeichenkette muss null oder ein Zeichen lang sein" +#: rewrite/rewriteHandler.c:1901 +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" -#: utils/adt/mac.c:65 -#, c-format -msgid "invalid input syntax for type macaddr: \"%s\"" -msgstr "ungültige Eingabesyntax für Typ macaddr: »%s«" +#: rewrite/rewriteHandler.c:1906 +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" -#: utils/adt/mac.c:72 +#: rewrite/rewriteHandler.c:2060 #, c-format -msgid "invalid octet value in \"macaddr\" value: \"%s\"" -msgstr "ungültiger Oktettwert in »macaddr«-Wert: »%s«" +msgid "cannot perform INSERT RETURNING on relation \"%s\"" +msgstr "INSERT RETURNING kann in Relation »%s« nicht ausgeführt werden" -#: utils/adt/misc.c:80 -msgid "must be superuser to signal other server processes" -msgstr "nur Superuser können Signale an andere Serverprozesse senden" +#: rewrite/rewriteHandler.c:2062 +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." -#: utils/adt/misc.c:89 +#: rewrite/rewriteHandler.c:2067 #, c-format -msgid "PID %d is not a PostgreSQL server process" -msgstr "PID %d ist kein PostgreSQL-Serverprozess" - -#: utils/adt/misc.c:126 -msgid "must be superuser to signal the postmaster" -msgstr "nur Superuser können Signale an den Postmaster senden" +msgid "cannot perform UPDATE RETURNING on relation \"%s\"" +msgstr "UPDATE RETURNING kann in Relation »%s« nicht ausgeführt werden" -#: utils/adt/misc.c:131 -#, c-format -msgid "failed to send signal to postmaster: %m" -msgstr "konnte Signal nicht an Postmaster senden: %m" +#: rewrite/rewriteHandler.c:2069 +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." -#: utils/adt/misc.c:148 -msgid "must be superuser to rotate log files" -msgstr "nur Superuser können Logdateien rotieren" +#: rewrite/rewriteHandler.c:2074 +#, c-format +msgid "cannot perform DELETE RETURNING on relation \"%s\"" +msgstr "DELETE RETURNING kann in Relation »%s« nicht ausgeführt werden" -#: utils/adt/misc.c:153 -msgid "rotation not possible because log collection not active" -msgstr "Rotierung nicht möglich, weil Logsammlung nicht aktiv ist" +#: rewrite/rewriteHandler.c:2076 +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." -#: utils/adt/misc.c:195 -msgid "global tablespace never has databases" -msgstr "globaler Tablespace hat niemals Datenbanken" +#: rewrite/rewriteHandler.c:2140 +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" -#: utils/adt/misc.c:216 +#: rewrite/rewriteDefine.c:109 rewrite/rewriteDefine.c:769 #, c-format -msgid "%u is not a tablespace OID" -msgstr "%u ist keine Tablespace-OID" - -#: utils/adt/misc.c:352 -msgid "unreserved" -msgstr "unreserviert" +msgid "rule \"%s\" for relation \"%s\" already exists" +msgstr "Regel »%s« für Relation »%s« existiert bereits" -#: utils/adt/misc.c:356 -msgid "unreserved (cannot be function or type name)" -msgstr "unreserviert (kann nicht Funktions- oder Typname sein)" +#: rewrite/rewriteDefine.c:287 +msgid "rule actions on OLD are not implemented" +msgstr "Regelaktionen für OLD sind nicht implementiert" -#: utils/adt/misc.c:360 -msgid "reserved (can be function or type name)" -msgstr "reserviert (kann Funktions- oder Typname sein)" +#: rewrite/rewriteDefine.c:288 +msgid "Use views or triggers instead." +msgstr "Verwenden Sie stattdessen Sichten oder Trigger." -#: utils/adt/misc.c:364 -msgid "reserved" -msgstr "reserviert" +#: rewrite/rewriteDefine.c:292 +msgid "rule actions on NEW are not implemented" +msgstr "Regelaktionen für NEW sind nicht implementiert" -#: utils/adt/nabstime.c:160 -#, c-format -msgid "invalid time zone name: \"%s\"" -msgstr "ungültiger Zeitzonenname: »%s«" +#: rewrite/rewriteDefine.c:293 +msgid "Use triggers instead." +msgstr "Verwenden Sie stattdessen Trigger." -#: utils/adt/nabstime.c:506 utils/adt/nabstime.c:579 -msgid "cannot convert abstime \"invalid\" to timestamp" -msgstr "kann »abstime«-Wert »invalid« nicht »timestamp« umwandeln" +#: rewrite/rewriteDefine.c:306 +msgid "INSTEAD NOTHING rules on SELECT are not implemented" +msgstr "INSTEAD-NOTHING-Regeln für SELECT sind nicht implementiert" -#: utils/adt/nabstime.c:806 -msgid "invalid status in external \"tinterval\" value" -msgstr "ungültiger Status in externem »tinterval«-Wert" +#: rewrite/rewriteDefine.c:307 +msgid "Use views instead." +msgstr "Verwenden Sie stattdessen Sichten." -#: utils/adt/nabstime.c:880 -msgid "cannot convert reltime \"invalid\" to interval" -msgstr "kann »reltime«-Wert »invalid« nicht in »interval« umwandeln" +#: rewrite/rewriteDefine.c:315 +msgid "multiple actions for rules on SELECT are not implemented" +msgstr "mehrere Regelaktionen für SELECT-Regeln sind nicht implementiert" -#: utils/adt/nabstime.c:1575 -#, c-format -msgid "invalid input syntax for type tinterval: \"%s\"" -msgstr "ungültige Eingabesyntax für Typ tinterval: »%s«" +#: rewrite/rewriteDefine.c:327 +msgid "rules on SELECT must have action INSTEAD SELECT" +msgstr "Regeln für SELECT müssen als Aktion INSTEAD SELECT haben" -#: utils/adt/network.c:118 -#, c-format -msgid "invalid cidr value: \"%s\"" -msgstr "ungültiger cidr-Wert: »%s«" +#: rewrite/rewriteDefine.c:335 +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" -#: utils/adt/network.c:119 utils/adt/network.c:249 -msgid "Value has bits set to right of mask." -msgstr "Wert hat gesetzte Bits rechts von der Maske." +#: rewrite/rewriteDefine.c:343 +msgid "event qualifications are not implemented for rules on SELECT" +msgstr "Ereignisqualifikationen sind nicht implementiert für SELECT-Regeln" -#: utils/adt/network.c:160 utils/adt/network.c:614 utils/adt/network.c:639 -#: utils/adt/network.c:664 +#: rewrite/rewriteDefine.c:368 #, c-format -msgid "could not format inet value: %m" -msgstr "konnte inet-Wert nicht formatieren: %m" +msgid "\"%s\" is already a view" +msgstr "»%s« ist bereits eine Sicht" -#. translator: %s is inet or cidr -#: utils/adt/network.c:217 +#: rewrite/rewriteDefine.c:392 #, c-format -msgid "invalid address family in external \"%s\" value" -msgstr "ungültige Adressfamilie in externem »%s«-Wert" +msgid "view rule for \"%s\" must be named \"%s\"" +msgstr "Sicht-Regel für »%s« muss »%s« heißen" -#. translator: %s is inet or cidr -#: utils/adt/network.c:224 +#: rewrite/rewriteDefine.c:417 #, c-format -msgid "invalid bits in external \"%s\" value" -msgstr "ungültige Bits in externem »%s«-Wert" +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" -#. translator: %s is inet or cidr -#: utils/adt/network.c:233 +#: rewrite/rewriteDefine.c:424 #, c-format -msgid "invalid length in external \"%s\" value" -msgstr "ungültige Länge in externem »%s«-Wert" +msgid "could not convert table \"%s\" to a view because it has triggers" +msgstr "konnte Tabelle »%s« nicht in Sicht umwandeln, weil sie Trigger hat" -#: utils/adt/network.c:248 -msgid "invalid external \"cidr\" value" -msgstr "ungültiger externer »cidr«-Wert" +#: rewrite/rewriteDefine.c:426 +msgid "" +"In particular, the table cannot be involved in any foreign key relationships." +msgstr "" +"Insbesondere darf die Tabelle nicht in Fremschlüsselverhältnisse eingebunden " +"sein." -#: utils/adt/network.c:370 utils/adt/network.c:397 +#: rewrite/rewriteDefine.c:431 #, c-format -msgid "invalid mask length: %d" -msgstr "ungültige Maskenlänge: %d" +msgid "could not convert table \"%s\" to a view because it has indexes" +msgstr "konnte Tabelle »%s« nicht in Sicht umwandeln, weil sie Indexe hat" -#: utils/adt/network.c:682 +#: rewrite/rewriteDefine.c:437 #, c-format -msgid "could not format cidr value: %m" -msgstr "konnte cidr-Wert nicht formatieren: %m" +msgid "could not convert table \"%s\" to a view because it has child tables" +msgstr "" +"konnte Tabelle »%s« nicht in Sicht umwandeln, weil sie abgeleitete Tabellen " +"hat" -#: utils/adt/network.c:1255 -msgid "cannot AND inet values of different sizes" -msgstr "binäres »Und« nicht mit »inet«-Werten unterschiedlicher Größe möglich" +#: rewrite/rewriteDefine.c:464 +msgid "cannot have multiple RETURNING lists in a rule" +msgstr "Regel kann nicht mehrere RETURNING-Listen enthalten" -#: utils/adt/network.c:1287 -msgid "cannot OR inet values of different sizes" -msgstr "binäres »Oder« nicht mit »inet«-Werten unterschiedlicher Größe möglich" +#: rewrite/rewriteDefine.c:469 +msgid "RETURNING lists are not supported in conditional rules" +msgstr "RETURNING-Listen werden in Regeln mit Bedingung nicht unterstützt" -#: utils/adt/network.c:1348 utils/adt/network.c:1424 -msgid "result is out of range" -msgstr "Ergebnis ist außerhalb des gültigen Bereichs" +#: rewrite/rewriteDefine.c:473 +msgid "RETURNING lists are not supported in non-INSTEAD rules" +msgstr "RETURNING-Listen werden nur in INSTEAD-Regeln unterstützt" -#: utils/adt/network.c:1389 -msgid "cannot subtract inet values of different sizes" -msgstr "Subtraktion von »inet«-Werten unterschiedlicher Größe nicht möglich" +#: rewrite/rewriteDefine.c:552 +msgid "SELECT rule's target list has too many entries" +msgstr "Targetliste von SELECT-Regel hat zu viele Einträge" -#: 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 "ungültige Eingabesyntax für Typ numeric: »%s«" +#: rewrite/rewriteDefine.c:553 +msgid "RETURNING list has too many entries" +msgstr "RETURNING-Liste hat zu viele Einträge" -#: utils/adt/numeric.c:653 -msgid "invalid length in external \"numeric\" value" -msgstr "ungültige Länge in externem »numeric«-Wert" +#: rewrite/rewriteDefine.c:569 +msgid "cannot convert relation containing dropped columns to view" +msgstr "kann Relation mit gelöschten Spalten nicht in Sicht umwandeln" -#: utils/adt/numeric.c:664 -msgid "invalid sign in external \"numeric\" value" -msgstr "ungültiges Vorzeichen in externem »numeric«-Wert" +#: rewrite/rewriteDefine.c:574 +#, c-format +msgid "SELECT rule's target entry %d has different column name from \"%s\"" +msgstr "" +"Spaltenname in Targeteintrag %d von SELECT-Regel unterscheidet sich von " +"Spalte »%s«" -#: utils/adt/numeric.c:674 -msgid "invalid digit in external \"numeric\" value" -msgstr "ungültige Ziffer in externem »numeric«-Wert" +#: rewrite/rewriteDefine.c:580 +#, 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«" -#: utils/adt/numeric.c:814 utils/adt/numeric.c:828 +#: rewrite/rewriteDefine.c:582 #, c-format -msgid "NUMERIC precision %d must be between 1 and %d" -msgstr "Präzision von NUMERIC (%d) muss zwischen 1 und %d liegen" +msgid "RETURNING list's entry %d has different type from column \"%s\"" +msgstr "Eintrag %d in RETURNING-Liste hat anderen Typ als Spalte »%s«" -#: utils/adt/numeric.c:819 +#: rewrite/rewriteDefine.c:597 #, c-format -msgid "NUMERIC scale %d must be between 0 and precision %d" -msgstr "Skala von NUMERIC (%d) muss zwischen 0 und %d liegen" +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«" -#: utils/adt/numeric.c:837 -msgid "invalid NUMERIC type modifier" -msgstr "ungültiker Modifikator für Typ NUMERIC" +#: rewrite/rewriteDefine.c:599 +#, 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«" -#: utils/adt/numeric.c:1881 utils/adt/numeric.c:3754 -msgid "value overflows numeric format" -msgstr "Wert verursacht Überlauf im »numeric«-Format" +#: rewrite/rewriteDefine.c:607 +msgid "SELECT rule's target list has too few entries" +msgstr "Targetliste von SELECT-Regeln hat zu wenige Einträge" -#: utils/adt/numeric.c:2229 -msgid "cannot convert NaN to integer" -msgstr "kann NaN nicht in integer umwandeln" +#: rewrite/rewriteDefine.c:608 +msgid "RETURNING list has too few entries" +msgstr "RETURNING-Liste hat zu wenige Einträge" -#: utils/adt/numeric.c:2297 -msgid "cannot convert NaN to bigint" -msgstr "kann NaN nicht in bigint umwandeln" +#: catalog/pg_aggregate.c:100 +msgid "cannot determine transition data type" +msgstr "kann Übergangsdatentyp nicht bestimmen" -#: utils/adt/numeric.c:2345 -msgid "cannot convert NaN to smallint" -msgstr "kann NaN nicht in smallint umwandeln" +#: catalog/pg_aggregate.c:101 +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." -#: utils/adt/numeric.c:3824 -msgid "numeric field overflow" -msgstr "Feldüberlauf bei Typ »numeric«" +#: catalog/pg_aggregate.c:124 +#, 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:144 +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:175 catalog/pg_proc.c:205 +msgid "cannot determine result data type" +msgstr "kann Ergebnisdatentyp nicht bestimmen" + +#: catalog/pg_aggregate.c:176 +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." -#: utils/adt/numeric.c:3825 -#, c-format +#: catalog/pg_aggregate.c:188 catalog/pg_proc.c:211 +msgid "unsafe use of pseudo-type \"internal\"" +msgstr "unsichere Verwendung des Pseudotyps »internal«" + +#: catalog/pg_aggregate.c:189 catalog/pg_proc.c:212 msgid "" -"A field with precision %d, scale %d must round to an absolute value less " -"than %s%d." +"A function returning \"internal\" must have at least one \"internal\" " +"argument." msgstr "" -"Ein Feld mit Präzision %d, Skala %d muss beim Runden einen Betrag von " -"weniger als %s%d ergeben." +"Eine Funktion, die »internal« zurückgibt, muss mindestens ein Argument vom " +"Typ »internal« haben." -#: utils/adt/numeric.c:5273 -msgid "argument for function \"exp\" too big" -msgstr "Argument für Funktion »exp« zu groß" +#: catalog/pg_aggregate.c:197 +msgid "sort operator can only be specified for single-argument aggregates" +msgstr "" +"Sortieroperator kann nur für Aggregatfunktionen mit einem Argument angegeben " +"werden" -#: utils/adt/numutils.c:75 +#: catalog/pg_aggregate.c:337 #, c-format -msgid "value \"%s\" is out of range for type integer" -msgstr "Wert »%s« ist außerhalb des gültigen Bereichs für Typ integer" +msgid "function %s returns a set" +msgstr "Funktion %s gibt eine Ergebnismenge zurück" -#: utils/adt/numutils.c:81 +#: catalog/pg_aggregate.c:362 #, c-format -msgid "value \"%s\" is out of range for type smallint" -msgstr "Wert »%s« ist außerhalb des gültigen Bereichs für Typ smallint" +msgid "function %s requires run-time type coercion" +msgstr "Funktion %s erfordert Typumwandlung zur Laufzeit" -#: utils/adt/numutils.c:87 +#: catalog/pg_collation.c:75 #, c-format -msgid "value \"%s\" is out of range for 8-bit integer" -msgstr "Wert »%s« ist außerhalb des gültigen Bereichs für 8-Bit-Ganzzahl" +msgid "collation \"%s\" for encoding \"%s\" already exists" +msgstr "Sortierfolge »%s« für Kodierung »%s« existiert bereits" -#: utils/adt/oid.c:43 utils/adt/oid.c:57 utils/adt/oid.c:63 utils/adt/oid.c:84 +#: catalog/pg_collation.c:89 #, c-format -msgid "invalid input syntax for type oid: \"%s\"" -msgstr "ungültige Eingabesyntax für Typ »oid«: »%s«" +msgid "collation \"%s\" already exists" +msgstr "Sortierfolge »%s« existiert bereits" -#: utils/adt/oid.c:69 utils/adt/oid.c:107 +#: catalog/index.c:205 parser/parse_utilcmd.c:1352 parser/parse_utilcmd.c:1438 #, c-format -msgid "value \"%s\" is out of range for type oid" -msgstr "Wert »%s« ist außerhalb des gültigen Bereichs für Typ »oid«" +msgid "multiple primary keys for table \"%s\" are not allowed" +msgstr "mehrere Primärschlüssel für Tabelle »%s« nicht erlaubt" -#: utils/adt/oid.c:287 -msgid "invalid oidvector data" -msgstr "ungültige oidvector-Daten" +#: catalog/index.c:223 +msgid "primary keys cannot be expressions" +msgstr "Primärschlüssel können keine Ausdrücke sein" -#: utils/adt/oracle_compat.c:895 -msgid "requested character too large" -msgstr "verlangtes Zeichen zu groß" +#: catalog/index.c:733 catalog/index.c:1131 +msgid "user-defined indexes on system catalog tables are not supported" +msgstr "" +"benutzerdefinierte Indexe für Systemkatalogtabellen werden nicht unterstützt" -#: utils/adt/oracle_compat.c:941 utils/adt/oracle_compat.c:995 +#: catalog/index.c:743 +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:761 +msgid "shared indexes cannot be created after initdb" +msgstr "Cluster-globale Indexe können nicht nach initdb erzeugt werden" + +#: catalog/index.c:1740 #, c-format -msgid "requested character too large for encoding: %d" -msgstr "gewünschtes Zeichen ist zu groß für die Kodierung: %d" +msgid "building index \"%s\" on table \"%s\"" +msgstr "baue Index »%s« von Tabelle »%s«" -#: utils/adt/oracle_compat.c:988 -msgid "null character not permitted" -msgstr "Null-Zeichen ist nicht erlaubt" +#: catalog/index.c:2881 +msgid "cannot reindex temporary tables of other sessions" +msgstr "kann temporäre Tabellen anderer Sitzungen nicht reindizieren" -#: utils/adt/pg_locale.c:993 utils/adt/pg_locale.c:1006 -#: utils/adt/pg_locale.c:1012 -#, fuzzy, c-format -msgid "could not create locale \"%s\": %m" -msgstr "konnte Sperrdatei »%s« nicht erstellen: %m" +#: catalog/pg_conversion.c:67 +#, c-format +msgid "conversion \"%s\" already exists" +msgstr "Konversion »%s« existiert bereits" -#: utils/adt/pg_locale.c:1023 -#, fuzzy -msgid "" -"collations with different collate and ctype values are not supported on this " -"platform" -msgstr "Tablespaces werden auf dieser Plattform nicht unterstützt" +#: catalog/pg_conversion.c:80 +#, c-format +msgid "default conversion for %s to %s already exists" +msgstr "Standardumwandlung von %s nach %s existiert bereits" -#: utils/adt/pg_locale.c:1038 -#, fuzzy -msgid "nondefault collations are not supported on this platform" +#: catalog/toasting.c:144 +msgid "shared tables cannot be toasted after initdb" msgstr "" -"%s: symbolische Verknüpfungen werden auf dieser Plattform nicht unterstützt" +"Cluster-globale Tabellen können nach initdb nicht mehr getoastet werden" -#: utils/adt/pg_locale.c:1209 -msgid "invalid multibyte character for locale" -msgstr "ungültiges Mehrbytezeichen für Locale" +#: 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] "Funktionen können nicht mehr als %d Argument haben" +msgstr[1] "Funktionen können nicht mehr als %d Argumente haben" -#: utils/adt/pg_locale.c:1210 +#: catalog/pg_proc.c:206 msgid "" -"The server's LC_CTYPE locale is probably incompatible with the database " -"encoding." +"A function returning a polymorphic type must have at least one polymorphic " +"argument." msgstr "" -"Die LC_CTYPE-Locale des Servers ist wahrscheinlich mit der Kodierung der " -"Datenbank inkompatibel." +"Eine Funktion, die einen polymorphischen Typ zurückgibt, muss mindestens ein " +"polymorphisches Argument haben." -#: utils/adt/pseudotypes.c:94 -msgid "cannot accept a value of type any" -msgstr "kann keinen Wert vom Typ any annehmen" +#: catalog/pg_proc.c:224 +#, c-format +msgid "\"%s\" is already an attribute of type %s" +msgstr "»%s« ist schon ein Attribut von Typ %s" -#: utils/adt/pseudotypes.c:107 -msgid "cannot display a value of type any" -msgstr "kann keinen Wert vom Typ any anzeigen" +#: catalog/pg_proc.c:292 +msgid "window functions cannot have default arguments" +msgstr "Fensterfunktionen können keine Vorgabeargumente haben" -#: utils/adt/pseudotypes.c:121 utils/adt/pseudotypes.c:149 -msgid "cannot accept a value of type anyarray" -msgstr "kann keinen Wert vom Typ anyarray annehmen" +#: catalog/pg_proc.c:369 +#, c-format +msgid "function \"%s\" already exists with same argument types" +msgstr "Funktion »%s« existiert bereits mit den selben Argumenttypen" -#: utils/adt/pseudotypes.c:174 -msgid "cannot accept a value of type anyenum" -msgstr "kann keinen Wert vom Typ anyenum annehmen" +#: catalog/pg_proc.c:383 catalog/pg_proc.c:405 +msgid "cannot change return type of existing function" +msgstr "kann Rückgabetyp einer bestehenden Funktion nicht ändern" -#: utils/adt/pseudotypes.c:252 -msgid "cannot accept a value of type trigger" -msgstr "kann keinen Wert vom Typ trigger annehmen" +#: catalog/pg_proc.c:384 catalog/pg_proc.c:407 catalog/pg_proc.c:449 +#: catalog/pg_proc.c:472 catalog/pg_proc.c:498 +msgid "Use DROP FUNCTION first." +msgstr "Verwenden Sie zuerst DROP FUNCTION." -#: utils/adt/pseudotypes.c:265 -msgid "cannot display a value of type trigger" -msgstr "kann keinen Wert vom Typ trigger anzeigen" +#: catalog/pg_proc.c:406 +msgid "Row type defined by OUT parameters is different." +msgstr "Der von OUT-Parametern bestimmte Zeilentyp ist verschieden." -#: utils/adt/pseudotypes.c:279 -msgid "cannot accept a value of type language_handler" -msgstr "kann keinen Wert vom Typ language_handler annehmen" +#: catalog/pg_proc.c:447 +#, c-format +msgid "cannot change name of input parameter \"%s\"" +msgstr "kann Name des Eingabeparameters »%s« nicht ändern" -#: utils/adt/pseudotypes.c:292 -msgid "cannot display a value of type language_handler" -msgstr "kann keinen Wert vom Typ language_handler anzeigen" +#: catalog/pg_proc.c:471 +msgid "cannot remove parameter defaults from existing function" +msgstr "kann Parametervorgabewerte einer bestehenden Funktion nicht entfernen" -#: utils/adt/pseudotypes.c:306 -#, fuzzy -msgid "cannot accept a value of type fdw_handler" -msgstr "kann keinen Wert vom Typ language_handler annehmen" +#: catalog/pg_proc.c:497 +msgid "cannot change data type of existing parameter default value" +msgstr "kann Datentyp eines bestehenden Parametervorgabewerts nicht ändern" -#: utils/adt/pseudotypes.c:319 -#, fuzzy -msgid "cannot display a value of type fdw_handler" -msgstr "kann keinen Wert vom Typ language_handler anzeigen" +#: catalog/pg_proc.c:509 +#, c-format +msgid "function \"%s\" is an aggregate function" +msgstr "Funktion »%s« ist eine Aggregatfunktion" -#: utils/adt/pseudotypes.c:333 -msgid "cannot accept a value of type internal" -msgstr "kann keinen Wert vom Typ internal annehmen" +#: catalog/pg_proc.c:514 +#, c-format +msgid "function \"%s\" is not an aggregate function" +msgstr "Funktion »%s« ist keine Aggregatfunktion" -#: utils/adt/pseudotypes.c:346 -msgid "cannot display a value of type internal" -msgstr "kann keinen Wert vom Typ internal anzeigen" +#: catalog/pg_proc.c:522 +#, c-format +msgid "function \"%s\" is a window function" +msgstr "Funktion %s ist eine Fensterfunktion" -#: utils/adt/pseudotypes.c:360 -msgid "cannot accept a value of type opaque" -msgstr "kann keinen Wert vom Typ opaque annehmen" +#: catalog/pg_proc.c:527 +#, c-format +msgid "function \"%s\" is not a window function" +msgstr "Funktion »%s« ist keine Fensterfunktion" -#: utils/adt/pseudotypes.c:373 -msgid "cannot display a value of type opaque" -msgstr "kann keinen Wert vom Typ opaque anzeigen" +#: catalog/pg_proc.c:717 +#, c-format +msgid "there is no built-in function named \"%s\"" +msgstr "es gibt keine eingebaute Funktion namens %s" -#: utils/adt/pseudotypes.c:387 -msgid "cannot accept a value of type anyelement" -msgstr "kann keinen Wert vom Typ anyelement annehmen" +#: catalog/pg_proc.c:815 +#, c-format +msgid "SQL functions cannot return type %s" +msgstr "SQL-Funktionen können keinen Rückgabetyp »%s« haben" -#: utils/adt/pseudotypes.c:400 -msgid "cannot display a value of type anyelement" -msgstr "kann keinen Wert vom Typ anyelement anzeigen" +#: catalog/pg_proc.c:830 +#, c-format +msgid "SQL functions cannot have arguments of type %s" +msgstr "SQL-Funktionen können keine Argumente vom Typ »%s« haben" -#: utils/adt/pseudotypes.c:413 -msgid "cannot accept a value of type anynonarray" -msgstr "kann keinen Wert vom Typ anynonarray annehmen" +#: catalog/catalog.c:76 +msgid "invalid fork name" +msgstr "ungültiger Fork-Name" + +#: catalog/catalog.c:77 +msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"." +msgstr "Gültige Fork-Namen sind »main«, »fsm« und »vm«." + +#: catalog/pg_shdepend.c:566 catalog/dependency.c:757 +#, c-format +msgid "cannot drop %s because it is required by the database system" +msgstr "kann %s nicht löschen, wird vom Datenbanksystem benötigt" + +#: catalog/pg_shdepend.c:677 catalog/dependency.c:923 +#, 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" +"und %d weiteres Objekt (Liste im Serverlog)" +msgstr[1] "" +"\n" +"und %d weitere Objekte (Liste im Serverlog)" + +#: catalog/pg_shdepend.c:684 +#, 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" +"und Objekte in %d anderen Datenbank (Liste im Serverlog)" +msgstr[1] "" +"\n" +"und Objekte in %d anderen Datenbanken (Liste im Serverlog)" + +#: catalog/pg_shdepend.c:996 +#, c-format +msgid "role %u was concurrently dropped" +msgstr "Rolle %u wurde gleichzeitig gelöscht" + +#: catalog/pg_shdepend.c:1015 +#, c-format +msgid "tablespace %u was concurrently dropped" +msgstr "Tablespace %u wurde gleichzeitig gelöscht" + +#: catalog/pg_shdepend.c:1030 +#, c-format +msgid "database %u was concurrently dropped" +msgstr "Datenbank %u wurde gleichzeitig gelöscht" -#: utils/adt/pseudotypes.c:426 -msgid "cannot display a value of type anynonarray" -msgstr "kann keinen Wert vom Typ anynonarray anzeigen" +#: catalog/pg_shdepend.c:1074 +#, c-format +msgid "owner of %s" +msgstr "Eigentümer von %s" -#: utils/adt/pseudotypes.c:439 -msgid "cannot accept a value of a shell type" -msgstr "kann keinen Wert eines Hüllentyps annehmen" +#: catalog/pg_shdepend.c:1076 +#, c-format +msgid "privileges for %s" +msgstr "Privilegien für %s" -#: utils/adt/pseudotypes.c:452 -msgid "cannot display a value of a shell type" -msgstr "kann keinen Wert eines Hüllentyps anzeigen" +#. translator: %s will always be "database %s" +#: catalog/pg_shdepend.c:1084 +#, 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" -#: utils/adt/pseudotypes.c:474 utils/adt/pseudotypes.c:498 -#, fuzzy -msgid "cannot accept a value of type pg_node_tree" -msgstr "kann keinen Wert vom Typ trigger annehmen" +#: catalog/pg_shdepend.c:1195 +#, 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" -#: utils/adt/regexp.c:275 utils/adt/varlena.c:2866 +#: catalog/pg_shdepend.c:1298 #, c-format -msgid "regular expression failed: %s" -msgstr "regulärer Ausdruck fehlgeschlagen: %s" +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" -#: utils/adt/regexp.c:412 +#: catalog/pg_constraint.c:802 #, c-format -msgid "invalid regexp option: \"%c\"" -msgstr "ungültige Option für regulären Ausdruck: »%c«" +msgid "table \"%s\" has multiple constraints named \"%s\"" +msgstr "Tabelle »%s« hat mehrere Constraints namens »%s«" -#: utils/adt/regexp.c:884 -msgid "regexp_split does not support the global option" -msgstr "regexp_split unterstützt die »Global«-Option nicht" +#: catalog/pg_constraint.c:814 +#, c-format +msgid "constraint \"%s\" for table \"%s\" does not exist" +msgstr "Constraint »%s« für Tabelle »%s« existiert nicht" -#: utils/adt/regproc.c:123 utils/adt/regproc.c:143 +#: catalog/pg_type.c:241 #, c-format -msgid "more than one function named \"%s\"" -msgstr "es gibt mehrere Funktionen namens »%s«" +msgid "invalid type internal size %d" +msgstr "ungültige interne Typgröße %d" -#: utils/adt/regproc.c:468 utils/adt/regproc.c:488 +#: catalog/pg_type.c:257 catalog/pg_type.c:265 catalog/pg_type.c:273 +#: catalog/pg_type.c:282 #, c-format -msgid "more than one operator named %s" -msgstr "es gibt mehrere Operatoren namens %s" +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" -#: 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 "zu viele Argumente" +#: catalog/pg_type.c:289 +#, 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" -#: utils/adt/regproc.c:636 -msgid "Provide two argument types for operator." -msgstr "Geben Sie zwei Argumente für den Operator an." +#: catalog/pg_type.c:298 catalog/pg_type.c:304 +#, c-format +msgid "alignment \"%c\" is invalid for variable-length type" +msgstr "Ausrichtung »%c« ist ungültig für Typen variabler Länge" -#: 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 "ungültige Namenssyntax" +#: catalog/pg_type.c:312 +msgid "fixed-size types must have storage PLAIN" +msgstr "Typen mit fester Größe müssen Storage-Typ PLAIN haben" -#: utils/adt/regproc.c:1383 -msgid "expected a left parenthesis" -msgstr "linke Klammer erwartet" +#: catalog/pg_type.c:764 +#, c-format +msgid "could not form array type name for type \"%s\"" +msgstr "konnte keinen Arraytypnamen für Datentyp »%s« erzeugen" -#: utils/adt/regproc.c:1399 -msgid "expected a right parenthesis" -msgstr "rechte Klammer erwartet" +#: catalog/aclchk.c:200 +msgid "grant options can only be granted to roles" +msgstr "Grant-Optionen können nur Rollen gewährt werden" -#: utils/adt/regproc.c:1418 -msgid "expected a type name" -msgstr "Typname erwartet" +#: catalog/aclchk.c:316 +#, c-format +msgid "no privileges were granted for column \"%s\" of relation \"%s\"" +msgstr "es wurden keine Privilegien für Spalte »%s« von Relation »%s« gewährt" -#: utils/adt/regproc.c:1450 -msgid "improper type name" -msgstr "falscher Typname" +#: catalog/aclchk.c:321 +#, c-format +msgid "no privileges were granted for \"%s\"" +msgstr "es wurden keine Privilegien für »%s« gewährt" -#: utils/adt/ri_triggers.c:409 utils/adt/ri_triggers.c:2839 -#: utils/adt/ri_triggers.c:3537 utils/adt/ri_triggers.c:3569 +#: catalog/aclchk.c:329 #, c-format -msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\"" +msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" msgstr "" -"Einfügen oder Aktualisieren in Tabelle »%s« verletzt Fremdschlüssel-" -"Constraint »%s«" +"es wurden nicht alle Priviligien für Spalte »%s« von Relation »%s« gewährt" -#: 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." +#: catalog/aclchk.c:334 +#, c-format +msgid "not all privileges were granted for \"%s\"" +msgstr "es wurden nicht alle Priviligien für »%s« gewährt" + +#: catalog/aclchk.c:345 +#, c-format +msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" msgstr "" -"MATCH FULL erlaubt das Mischen von Schlüsseln, die NULL und nicht NULL sind, " -"nicht" +"es konnten keine Privilegien für Spalte »%s« von Relation »%s« entzogen " +"werden" -#: utils/adt/ri_triggers.c:3099 +#: catalog/aclchk.c:350 #, c-format -msgid "function \"%s\" must be fired for INSERT" -msgstr "Funktion »%s« muss von INSERT ausgelöst werden" +msgid "no privileges could be revoked for \"%s\"" +msgstr "es konnten keine Privilegien für »%s« entzogen werden" -#: utils/adt/ri_triggers.c:3105 +#: catalog/aclchk.c:358 #, c-format -msgid "function \"%s\" must be fired for UPDATE" -msgstr "Funktion »%s« muss von UPDATE ausgelöst werden" +msgid "" +"not all privileges could be revoked for column \"%s\" of relation \"%s\"" +msgstr "" +"es konnten nicht alle Privilegien für Spalte »%s« von Relation »%s« entzogen " +"werden" -#: utils/adt/ri_triggers.c:3119 +#: catalog/aclchk.c:363 #, c-format -msgid "function \"%s\" must be fired for DELETE" -msgstr "Funktion »%s« muss von DELETE ausgelöst werden" +msgid "not all privileges could be revoked for \"%s\"" +msgstr "es konnten nicht alle Privilegien für »%s« entzogen werden" -#: utils/adt/ri_triggers.c:3148 +#: catalog/aclchk.c:442 catalog/aclchk.c:891 #, 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«" +msgid "invalid privilege type %s for relation" +msgstr "ungültiger Privilegtyp %s für Relation" -#: utils/adt/ri_triggers.c:3150 -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." +#: catalog/aclchk.c:446 catalog/aclchk.c:895 +#, c-format +msgid "invalid privilege type %s for sequence" +msgstr "ungültiger Privilegtyp %s für Sequenz" -#: utils/adt/ri_triggers.c:3504 +#: catalog/aclchk.c:450 #, 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" +msgid "invalid privilege type %s for database" +msgstr "ungültiger Privilegtyp %s für Datenbank" -#: utils/adt/ri_triggers.c:3508 -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." +#: catalog/aclchk.c:454 catalog/aclchk.c:899 +#, c-format +msgid "invalid privilege type %s for function" +msgstr "ungültiger Privilegtyp %s für Funktion" -#: utils/adt/ri_triggers.c:3539 +#: catalog/aclchk.c:458 #, c-format -msgid "No rows were found in \"%s\"." -msgstr "In »%s« wurden keine Zeilen gefunden." +msgid "invalid privilege type %s for language" +msgstr "ungültiger Privilegtyp %s für Sprache" -#: utils/adt/ri_triggers.c:3571 +#: catalog/aclchk.c:462 #, c-format -msgid "Key (%s)=(%s) is not present in table \"%s\"." -msgstr "Schlüssel (%s)=(%s) ist nicht in Tabelle »%s« vorhanden." +msgid "invalid privilege type %s for large object" +msgstr "ungültiger Privilegtyp %s für Large Object" -#: utils/adt/ri_triggers.c:3577 +#: catalog/aclchk.c:466 #, 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«" +msgid "invalid privilege type %s for schema" +msgstr "ungültiger Privilegtyp %s für Schema" -#: utils/adt/ri_triggers.c:3580 +#: catalog/aclchk.c:470 #, c-format -msgid "Key (%s)=(%s) is still referenced from table \"%s\"." -msgstr "Auf Schlüssel (%s)=(%s) wird noch aus Tabelle »%s« verwiesen." +msgid "invalid privilege type %s for tablespace" +msgstr "ungültiger Privilegtyp %s für Tablespace" -#: utils/adt/rowtypes.c:98 utils/adt/rowtypes.c:473 -msgid "input of anonymous composite types is not implemented" -msgstr "Eingabe anonymer zusammengesetzter Typen ist nicht implementiert" +#: catalog/aclchk.c:474 +#, c-format +msgid "invalid privilege type %s for foreign-data wrapper" +msgstr "ungültiger Privilegtyp %s für Fremddaten-Wrapper" -#: 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 +#: catalog/aclchk.c:478 #, c-format -msgid "malformed record literal: \"%s\"" -msgstr "fehlerhafte Record-Konstante: »%s«" +msgid "invalid privilege type %s for foreign server" +msgstr "ungültiger Privilegtyp %s für Fremdserver" -#: utils/adt/rowtypes.c:152 -msgid "Missing left parenthesis." -msgstr "Linke Klammer fehlt." +#: catalog/aclchk.c:517 +msgid "column privileges are only valid for relations" +msgstr "Spaltenprivilegien sind nur für Relation gültig" -#: utils/adt/rowtypes.c:180 -msgid "Too few columns." -msgstr "Zu wenige Spalten." +#: catalog/aclchk.c:932 +msgid "default privileges cannot be set for columns" +msgstr "Vorgabeprivilegien können nicht für Spalten gesetzt werden" -#: utils/adt/rowtypes.c:204 utils/adt/rowtypes.c:212 -msgid "Unexpected end of input." -msgstr "Unerwartetes Ende der Eingabe." +#: catalog/aclchk.c:1730 +#, c-format +msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" +msgstr "Sequenz »%s« unterstützt nur die Privilegien USAGE, SELECT und UPDATE" -#: utils/adt/rowtypes.c:263 -msgid "Too many columns." -msgstr "Zu viele Spalten." +#: catalog/aclchk.c:1747 +msgid "invalid privilege type USAGE for table" +msgstr "ungültiger Privilegtyp USAGE für Tabelle" -#: utils/adt/rowtypes.c:271 -msgid "Junk after right parenthesis." -msgstr "Müll nach rechter Klammer." +#: catalog/aclchk.c:1912 +#, c-format +msgid "invalid privilege type %s for column" +msgstr "ungültiger Privilegtyp %s für Spalte" -#: utils/adt/rowtypes.c:522 +#: catalog/aclchk.c:1925 #, c-format -msgid "wrong number of columns: %d, expected %d" -msgstr "falsche Anzahl der Spalten: %d, erwartet wurden %d" +msgid "sequence \"%s\" only supports SELECT column privileges" +msgstr "Sequenz »%s« unterstützt nur den Spaltenprivilegientyp SELECT" -#: utils/adt/rowtypes.c:549 +#: catalog/aclchk.c:2509 #, c-format -msgid "wrong data type: %u, expected %u" -msgstr "falscher Datentyp: %u, erwartet wurde %u" +msgid "language \"%s\" is not trusted" +msgstr "Sprache »%s« ist nicht »trusted«" + +#: catalog/aclchk.c:2511 +msgid "Only superusers can use untrusted languages." +msgstr "Nur Superuser können nicht vertrauenswürdige Sprachen verwenden." -#: utils/adt/rowtypes.c:610 +#: catalog/aclchk.c:3018 #, c-format -msgid "improper binary format in record column %d" -msgstr "falsches Binärformat in Record-Spalte %d" +msgid "unrecognized privilege type \"%s\"" +msgstr "unbekannter Privilegtyp »%s«" -#: utils/adt/rowtypes.c:897 utils/adt/rowtypes.c:1132 +#: catalog/aclchk.c:3067 #, 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" +msgid "permission denied for column %s" +msgstr "keine Berechtigung für Spalte %s" -#: utils/adt/rowtypes.c:983 utils/adt/rowtypes.c:1203 -msgid "cannot compare record types with different numbers of columns" -msgstr "" -"kann Record-Typen mit unterschiedlicher Anzahl Spalten nicht vergleichen" +#: catalog/aclchk.c:3069 +#, c-format +msgid "permission denied for relation %s" +msgstr "keine Berechtigung für Relation %s" -#: utils/adt/ruleutils.c:2427 +#: catalog/aclchk.c:3073 #, c-format -msgid "rule \"%s\" has unsupported event type %d" -msgstr "Regel »%s« hat nicht unterstützten Ereignistyp %d" +msgid "permission denied for database %s" +msgstr "keine Berechtigung für Datenbank %s" -#: utils/adt/selfuncs.c:4837 utils/adt/selfuncs.c:5291 -msgid "case insensitive matching not supported on type bytea" -msgstr "" -"Mustersuche ohne Rücksicht auf Groß-/Kleinschreibung wird für Typ bytea " -"nicht unterstützt" +#: catalog/aclchk.c:3075 +#, c-format +msgid "permission denied for function %s" +msgstr "keine Berechtigung für Funktion %s" -#: utils/adt/selfuncs.c:4952 utils/adt/selfuncs.c:5451 -msgid "regular-expression matching not supported on type bytea" -msgstr "" -"Mustersuche mit regulären Ausdrücken wird für Typ bytea nicht unterstützt" +#: catalog/aclchk.c:3077 +#, c-format +msgid "permission denied for operator %s" +msgstr "keine Berechtigung für Operator %s" -#: utils/adt/tid.c:70 utils/adt/tid.c:78 utils/adt/tid.c:86 +#: catalog/aclchk.c:3079 #, c-format -msgid "invalid input syntax for type tid: \"%s\"" -msgstr "ungültige Eingabesyntax für Typ tid: »%s«" +msgid "permission denied for type %s" +msgstr "keine Berechtigung für Typ %s" -#: utils/adt/timestamp.c:97 +#: catalog/aclchk.c:3081 #, c-format -msgid "TIMESTAMP(%d)%s precision must not be negative" -msgstr "Präzision von TIMESTAMP(%d)%s darf nicht negativ sein" +msgid "permission denied for language %s" +msgstr "keine Berechtigung für Sprache %s" -#: utils/adt/timestamp.c:103 +#: catalog/aclchk.c:3083 #, 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" +msgid "permission denied for large object %s" +msgstr "keine Berechtigung für Large Object %s" -#: utils/adt/timestamp.c:171 utils/adt/timestamp.c:435 +#: catalog/aclchk.c:3085 #, c-format -msgid "timestamp out of range: \"%s\"" -msgstr "timestamp ist außerhalb des gültigen Bereichs: »%s«" +msgid "permission denied for schema %s" +msgstr "keine Berechtigung für Schema %s" -#: utils/adt/timestamp.c:189 utils/adt/timestamp.c:453 -#: utils/adt/timestamp.c:664 +#: catalog/aclchk.c:3087 #, c-format -msgid "date/time value \"%s\" is no longer supported" -msgstr "Datum/Zeit-Wert »%s« wird nicht mehr unterstützt" +msgid "permission denied for operator class %s" +msgstr "keine Berechtigung für Operatorklasse %s" -#: utils/adt/timestamp.c:260 -msgid "timestamp cannot be NaN" -msgstr "timestamp kann nicht NaN sein" +#: catalog/aclchk.c:3089 +#, c-format +msgid "permission denied for operator family %s" +msgstr "keine Berechtigung für Operatorfamilie %s" -#: utils/adt/timestamp.c:370 +#: catalog/aclchk.c:3091 #, c-format -msgid "timestamp(%d) precision must be between %d and %d" -msgstr "Präzision von timestamp(%d) muss zwischen %d und %d sein" +msgid "permission denied for collation %s" +msgstr "keine Berechtigung für Sortierfolge %s" -#: 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-Wert ist außerhalb des gültigen Bereichs" +#: catalog/aclchk.c:3093 +#, c-format +msgid "permission denied for conversion %s" +msgstr "keine Berechtigung für Konversion %s" -#: utils/adt/timestamp.c:787 utils/adt/timestamp.c:820 -msgid "invalid INTERVAL type modifier" -msgstr "ungültiger Modifikator für Typ INTERVAL" +#: catalog/aclchk.c:3095 +#, c-format +msgid "permission denied for tablespace %s" +msgstr "keine Berechtigung für Tablespace %s" -#: utils/adt/timestamp.c:803 +#: catalog/aclchk.c:3097 #, c-format -msgid "INTERVAL(%d) precision must not be negative" -msgstr "INTERVAL(%d)-Präzision darf nicht negativ sein" +msgid "permission denied for text search dictionary %s" +msgstr "keine Berechtigung für Textsuchewörterbuch %s" -#: utils/adt/timestamp.c:809 +#: catalog/aclchk.c:3099 #, c-format -msgid "INTERVAL(%d) precision reduced to maximum allowed, %d" -msgstr "INTERVAL(%d)-Präzision auf erlaubtes Maximum %d reduziert" +msgid "permission denied for text search configuration %s" +msgstr "keine Berechtigung für Textsuchekonfiguration %s" -#: utils/adt/timestamp.c:1101 +#: catalog/aclchk.c:3101 #, c-format -msgid "interval(%d) precision must be between %d and %d" -msgstr "Präzision von interval(%d) muss zwischen %d und %d sein" +msgid "permission denied for foreign-data wrapper %s" +msgstr "keine Berechtigung für Fremddaten-Wrapper %s" -#: utils/adt/timestamp.c:2306 -msgid "cannot subtract infinite timestamps" -msgstr "kann unendliche timestamp-Werte nicht subtrahieren" +#: catalog/aclchk.c:3103 +#, c-format +msgid "permission denied for foreign server %s" +msgstr "keine Berechtigung für Fremdserver %s" -#: utils/adt/timestamp.c:3365 utils/adt/timestamp.c:3961 -#: utils/adt/timestamp.c:4020 +#: catalog/aclchk.c:3105 #, c-format -msgid "timestamp units \"%s\" not supported" -msgstr "»timestamp«-Einheit »%s« nicht unterstützt" +msgid "permission denied for extension %s" +msgstr "keine Berechtigung für Erweiterung %s" -#: utils/adt/timestamp.c:3379 utils/adt/timestamp.c:4030 +#: catalog/aclchk.c:3111 catalog/aclchk.c:3113 #, c-format -msgid "timestamp units \"%s\" not recognized" -msgstr "»timestamp«-Einheit »%s« nicht erkannt" +msgid "must be owner of relation %s" +msgstr "Berechtigung nur für Eigentümer der Relation %s" -#: utils/adt/timestamp.c:3520 utils/adt/timestamp.c:4192 -#: utils/adt/timestamp.c:4233 +#: catalog/aclchk.c:3115 #, c-format -msgid "timestamp with time zone units \"%s\" not supported" -msgstr "»timestamp with time zone«-Einheit »%s« nicht unterstützt" +msgid "must be owner of sequence %s" +msgstr "Berechtigung nur für Eigentümer der Sequenz %s" -#: utils/adt/timestamp.c:3537 utils/adt/timestamp.c:4242 +#: catalog/aclchk.c:3117 #, c-format -msgid "timestamp with time zone units \"%s\" not recognized" -msgstr "»timestamp with time zone«-Einheit »%s« nicht erkannt" +msgid "must be owner of database %s" +msgstr "Berechtigung nur für Eigentümer der Datenbank %s" -#: utils/adt/timestamp.c:3617 utils/adt/timestamp.c:4348 +#: catalog/aclchk.c:3119 #, c-format -msgid "interval units \"%s\" not supported" -msgstr "»interval«-Einheit »%s« nicht unterstützt" +msgid "must be owner of function %s" +msgstr "Berechtigung nur für Eigentümer der Funktion %s" -#: utils/adt/timestamp.c:3633 utils/adt/timestamp.c:4375 +#: catalog/aclchk.c:3121 #, c-format -msgid "interval units \"%s\" not recognized" -msgstr "»interval«-Einheit »%s« nicht erkannt" +msgid "must be owner of operator %s" +msgstr "Berechtigung nur für Eigentümer des Operators %s" -#: utils/adt/timestamp.c:4445 utils/adt/timestamp.c:4618 +#: catalog/aclchk.c:3123 #, c-format -msgid "could not convert to time zone \"%s\"" -msgstr "konnte nicht in Zeitzone »%s« umwandeln" +msgid "must be owner of type %s" +msgstr "Berechtigung nur für Eigentümer des Typs %s" -#: utils/adt/timestamp.c:4477 utils/adt/timestamp.c:4651 +#: catalog/aclchk.c:3125 #, c-format -msgid "interval time zone \"%s\" must not specify month" -msgstr "Intervall-Zeitzone »%s« darf keinen Monat angeben" +msgid "must be owner of language %s" +msgstr "Berechtigung nur für Eigentümer der Sprache %s" -#: utils/adt/trigfuncs.c:41 -msgid "suppress_redundant_updates_trigger: must be called as trigger" -msgstr "suppress_redundant_updates_trigger: muss als Trigger aufgerufen werden" +#: catalog/aclchk.c:3127 +#, c-format +msgid "must be owner of large object %s" +msgstr "Berechtigung nur für Eigentümer des Large Object %s" -#: utils/adt/trigfuncs.c:47 -msgid "suppress_redundant_updates_trigger: must be called on update" -msgstr "suppress_redundant_updates_trigger: muss bei UPDATE aufgerufen werden" +#: catalog/aclchk.c:3129 +#, c-format +msgid "must be owner of schema %s" +msgstr "Berechtigung nur für Eigentümer des Schemas %s" -#: utils/adt/trigfuncs.c:53 -msgid "suppress_redundant_updates_trigger: must be called before update" -msgstr "" -"suppress_redundant_updates_trigger: muss vor dem UPDATE aufgerufen werden" +#: catalog/aclchk.c:3131 +#, c-format +msgid "must be owner of operator class %s" +msgstr "Berechtigung nur für Eigentümer der Operatorklasse %s" -#: utils/adt/trigfuncs.c:59 -msgid "suppress_redundant_updates_trigger: must be called for each row" -msgstr "" -"suppress_redundant_updates_trigger: muss für jede Zeile aufgerufen werden" +#: catalog/aclchk.c:3133 +#, c-format +msgid "must be owner of operator family %s" +msgstr "Berechtigung nur für Eigentümer der Operatorfamilie %s" -#: utils/adt/tsgistidx.c:100 -msgid "gtsvector_in not implemented" -msgstr "gtsvector_in ist nicht implementiert" +#: catalog/aclchk.c:3135 +#, c-format +msgid "must be owner of collation %s" +msgstr "Berechtigung nur für Eigentümer der Sortierfolge %s" -#: utils/adt/tsquery.c:156 utils/adt/tsquery.c:392 -#: utils/adt/tsvector_parser.c:136 +#: catalog/aclchk.c:3137 #, c-format -msgid "syntax error in tsquery: \"%s\"" -msgstr "Syntaxfehler in tsquery: »%s«" +msgid "must be owner of conversion %s" +msgstr "Berechtigung nur für Eigentümer der Konversion %s" -#: utils/adt/tsquery.c:177 +#: catalog/aclchk.c:3139 #, c-format -msgid "no operand in tsquery: \"%s\"" -msgstr "kein Operand in tsquery: »%s«" +msgid "must be owner of tablespace %s" +msgstr "Berechtigung nur für Eigentümer des Tablespace %s" -#: utils/adt/tsquery.c:250 +#: catalog/aclchk.c:3141 #, c-format -msgid "value is too big in tsquery: \"%s\"" -msgstr "Wert ist zu groß in tsquery: »%s«" +msgid "must be owner of text search dictionary %s" +msgstr "Berechtigung nur für Eigentümer des Textsuchewörterbuches %s" -#: utils/adt/tsquery.c:255 +#: catalog/aclchk.c:3143 #, c-format -msgid "operand is too long in tsquery: \"%s\"" -msgstr "Operator ist zu lang in tsquery: »%s«" +msgid "must be owner of text search configuration %s" +msgstr "Berechtigung nur für Eigentümer der Textsuchekonfiguration %s" -#: utils/adt/tsquery.c:283 +#: catalog/aclchk.c:3145 #, c-format -msgid "word is too long in tsquery: \"%s\"" -msgstr "Wort ist zu lang in tsquery: »%s«" +msgid "must be owner of foreign-data wrapper %s" +msgstr "Berechtigung nur für Eigentümer des Fremddaten-Wrappers %s" -#: utils/adt/tsquery.c:512 +#: catalog/aclchk.c:3147 #, c-format -msgid "text-search query doesn't contain lexemes: \"%s\"" -msgstr "Textsucheanfrage enthält keine Lexeme: »%s«" +msgid "must be owner of foreign server %s" +msgstr "Berechtigung nur für Eigentümer des Fremdservers %s" -#: utils/adt/tsquery_cleanup.c:285 -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" +#: catalog/aclchk.c:3149 +#, c-format +msgid "must be owner of extension %s" +msgstr "Berechtigung nur für Eigentümer der Erweiterung %s" -#: utils/adt/tsquery_rewrite.c:296 -msgid "ts_rewrite query must return two tsquery columns" -msgstr "ts_rewrite-Anfrage muss zwei tsquery-Spalten zurückgeben" +#: catalog/aclchk.c:3191 +#, c-format +msgid "permission denied for column \"%s\" of relation \"%s\"" +msgstr "keine Berechtigung für Spalte »%s« von Relation »%s«" -#: utils/adt/tsrank.c:404 -msgid "array of weight must be one-dimensional" -msgstr "Gewichtungs-Array muss eindimensional sein" +#: catalog/aclchk.c:3218 +#, c-format +msgid "role with OID %u does not exist" +msgstr "Rolle mit OID %u existiert nicht" -#: utils/adt/tsrank.c:409 -msgid "array of weight is too short" -msgstr "Gewichtungs-Array ist zu kurz" +#: catalog/aclchk.c:3311 catalog/aclchk.c:3319 +#, c-format +msgid "attribute %d of relation with OID %u does not exist" +msgstr "Attribut %d der Relation mit OID %u existiert nicht" -#: utils/adt/tsrank.c:414 -msgid "array of weight must not contain nulls" -msgstr "Gewichtungs-Array darf keine NULL-Werte enthalten" +#: catalog/aclchk.c:3392 catalog/aclchk.c:4218 +#, c-format +msgid "relation with OID %u does not exist" +msgstr "Relation mit OID %u existiert nicht" -#: utils/adt/tsrank.c:423 utils/adt/tsrank.c:749 -msgid "weight out of range" -msgstr "Gewichtung ist außerhalb des gültigen Bereichs" +#: catalog/aclchk.c:3600 catalog/aclchk.c:4322 +#, c-format +msgid "language with OID %u does not exist" +msgstr "Sprache mit OID %u existiert nicht" -#: utils/adt/tsvector.c:215 +#: catalog/aclchk.c:3761 catalog/aclchk.c:4394 #, c-format -msgid "word is too long (%ld bytes, max %ld bytes)" -msgstr "Wort ist zu lang (%ld Bytes, maximal %ld Bytes)" +msgid "schema with OID %u does not exist" +msgstr "Schema mit OID %u existiert nicht" -#: utils/adt/tsvector.c:222 +#: catalog/aclchk.c:3815 catalog/aclchk.c:4421 #, c-format -msgid "string is too long for tsvector (%ld bytes, max %ld bytes)" -msgstr "Zeichenkette ist zu lang für tsvector (%ld Bytes, maximal %ld Bytes)" +msgid "tablespace with OID %u does not exist" +msgstr "Tablespace mit OID %u existiert nicht" -#: utils/adt/tsvector_op.c:1149 -msgid "ts_stat query must return one tsvector column" -msgstr "ts_stat-Anfrage muss eine tsvector-Spalte zurückgeben" +#: catalog/aclchk.c:4244 +#, c-format +msgid "type with OID %u does not exist" +msgstr "Typ mit OID %u existiert nicht" -#: utils/adt/tsvector_op.c:1329 +#: catalog/aclchk.c:4270 #, c-format -msgid "tsvector column \"%s\" does not exist" -msgstr "tsvector-Spalte »%s« existiert nicht" +msgid "operator with OID %u does not exist" +msgstr "Operator mit OID %u existiert nicht" -#: utils/adt/tsvector_op.c:1335 +#: catalog/aclchk.c:4447 #, c-format -msgid "column \"%s\" is not of tsvector type" -msgstr "Spalte »%s« hat nicht Typ tsvector" +msgid "operator class with OID %u does not exist" +msgstr "Operatorklasse mit OID %u existiert nicht" -#: utils/adt/tsvector_op.c:1347 +#: catalog/aclchk.c:4474 #, c-format -msgid "configuration column \"%s\" does not exist" -msgstr "Konfigurationsspalte »%s« existiert nicht" +msgid "operator family with OID %u does not exist" +msgstr "Operatorfamilie mit OID %u existiert nicht" -#: utils/adt/tsvector_op.c:1353 +#: catalog/aclchk.c:4501 #, c-format -msgid "column \"%s\" is not of regconfig type" -msgstr "Spalte »%s« hat nicht Typ regconfig" +msgid "text search dictionary with OID %u does not exist" +msgstr "Textsuchewörterbuch mit OID %u existiert nicht" -#: utils/adt/tsvector_op.c:1360 +#: catalog/aclchk.c:4528 #, c-format -msgid "configuration column \"%s\" must not be null" -msgstr "Konfigurationsspalte »%s« darf nicht NULL sein" +msgid "text search configuration with OID %u does not exist" +msgstr "Textsuchekonfiguration mit OID %u existiert nicht" -#: utils/adt/tsvector_op.c:1373 +#: catalog/aclchk.c:4635 #, c-format -msgid "text search configuration name \"%s\" must be schema-qualified" -msgstr "Textsuchekonfigurationsname »%s« muss Schemaqualifikation haben" +msgid "collation with OID %u does not exist" +msgstr "Sortierfolge mit OID %u existiert nicht" -#: utils/adt/tsvector_op.c:1398 +#: catalog/aclchk.c:4661 #, c-format -msgid "column \"%s\" is not of a character type" -msgstr "Spalte »%s« hat keinen Zeichentyp" +msgid "conversion with OID %u does not exist" +msgstr "Konversion mit OID %u existiert nicht" -#: utils/adt/tsvector_parser.c:137 +#: catalog/aclchk.c:4702 #, c-format -msgid "syntax error in tsvector: \"%s\"" -msgstr "Syntaxfehler in tsvector: »%s«" +msgid "extension with OID %u does not exist" +msgstr "Erweiterung mit OID %u existiert nicht" -#: utils/adt/tsvector_parser.c:202 -#, c-format -msgid "there is no escaped character: \"%s\"" -msgstr "es gibt kein escaptes Zeichen: »%s«" +#: catalog/namespace.c:260 +msgid "temporary tables cannot specify a schema name" +msgstr "temporäre Tabellen können keinen Schemanamen angeben" -#: utils/adt/tsvector_parser.c:319 +#: catalog/namespace.c:410 catalog/namespace.c:423 +msgid "cannot create relations in temporary schemas of other sessions" +msgstr "kann keine Relationen in temporären Schemas anderer Sitzungen erzeugen" + +#: catalog/namespace.c:414 +msgid "cannot create temporary relation in non-temporary schema" +msgstr "" +"kann keine temporäre Relation in einem nicht-temporären Schema erzeugen" + +#: catalog/namespace.c:429 +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:2389 parser/parse_expr.c:777 parser/parse_target.c:1088 #, c-format -msgid "wrong position info in tsvector: \"%s\"" -msgstr "falsche Positionsinformationen in tsvector: »%s«" +msgid "cross-database references are not implemented: %s" +msgstr "Verweise auf andere Datenbanken sind nicht implementiert: %s" -#: utils/adt/uuid.c:128 +#: catalog/namespace.c:2395 gram.y:11634 gram.y:12848 parser/parse_expr.c:784 +#: parser/parse_target.c:1095 #, c-format -msgid "invalid input syntax for uuid: \"%s\"" -msgstr "ungültige Eingabesyntax für Typ uuid: »%s«" +msgid "improper qualified name (too many dotted names): %s" +msgstr "falscher qualifizierter Name (zu viele Namensteile): %s" -#: utils/adt/varbit.c:56 utils/adt/varchar.c:48 +#: catalog/namespace.c:2523 #, c-format -msgid "length for type %s must be at least 1" -msgstr "Länge von Typ %s muss mindestens 1 sein" +msgid "%s is already in schema \"%s\"" +msgstr "%s ist bereits in Schema »%s«" + +#: catalog/namespace.c:2531 +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:2537 +msgid "cannot move objects into or out of TOAST schema" +msgstr "Objekte können nicht in oder aus TOAST-Schemas verschoben werden" -#: utils/adt/varbit.c:61 utils/adt/varchar.c:52 +#: catalog/namespace.c:2641 #, c-format -msgid "length for type %s cannot exceed %d" -msgstr "Länge von Typ %s kann %d nicht überschreiten" +msgid "improper relation name (too many dotted names): %s" +msgstr "falscher Relationsname (zu viele Namensteile): %s" -#: utils/adt/varbit.c:166 utils/adt/varbit.c:309 utils/adt/varbit.c:366 +#: catalog/namespace.c:3040 #, c-format -msgid "bit string length %d does not match type bit(%d)" -msgstr "Länge der Bitkette %d stimmt nicht mit Typ bit(%d) überein" +msgid "collation \"%s\" for encoding \"%s\" does not exist" +msgstr "Sortierfolge »%s« für Kodierung »%s« existiert nicht" -#: utils/adt/varbit.c:188 utils/adt/varbit.c:490 +#: catalog/namespace.c:3092 #, c-format -msgid "\"%c\" is not a valid binary digit" -msgstr "»%c« ist keine gültige Binärziffer" +msgid "conversion \"%s\" does not exist" +msgstr "Konversion »%s« existiert nicht" -#: utils/adt/varbit.c:213 utils/adt/varbit.c:515 +#: catalog/namespace.c:3297 #, c-format -msgid "\"%c\" is not a valid hexadecimal digit" -msgstr "»%c« ist keine gültige Hexadezimalziffer" +msgid "permission denied to create temporary tables in database \"%s\"" +msgstr "" +"keine Berechtigung, um temporäre Tabellen in Datenbank »%s« zu erzeugen" -#: utils/adt/varbit.c:300 utils/adt/varbit.c:603 -msgid "invalid length in external bit string" -msgstr "ungültige Länge in externer Bitkette" +#: catalog/namespace.c:3313 +msgid "cannot create temporary tables during recovery" +msgstr "" +"während der Wiederherstellung können keine temporäre Tabellen erzeugt werden" -#: 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 "Bitkette ist zu lang für Typ bit varying(%d)" +#: catalog/objectaddress.c:286 +msgid "database name cannot be qualified" +msgstr "Datenbankname kann nicht qualifiziert werden" -#: 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 "negative Teilzeichenkettenlänge nicht erlaubt" +#: catalog/objectaddress.c:292 +msgid "tablespace name cannot be qualified" +msgstr "Tablespace-Name kann nicht qualifiziert werden" -#: utils/adt/varbit.c:1164 -msgid "cannot AND bit strings of different sizes" -msgstr "binäres »Und« nicht mit Bitketten unterschiedlicher Länge möglich" +#: catalog/objectaddress.c:295 +msgid "role name cannot be qualified" +msgstr "Rollenname kann nicht qualifiziert werden" -#: utils/adt/varbit.c:1206 -msgid "cannot OR bit strings of different sizes" -msgstr "binäres »Oder« nicht mit Bitketten unterschiedlicher Länge möglich" +#: catalog/objectaddress.c:301 +msgid "language name cannot be qualified" +msgstr "Sprachname kann nicht qualifiziert werden" -#: utils/adt/varbit.c:1253 -msgid "cannot XOR bit strings of different sizes" -msgstr "" -"binäres »Exklusiv-Oder« nicht mit Bitketten unterschiedlicher Länge möglich" +#: catalog/objectaddress.c:304 +msgid "foreign-data wrapper name cannot be qualified" +msgstr "Fremddaten-Wrapper-Name kann nicht qualifiziert werden" -#: utils/adt/varbit.c:1731 utils/adt/varbit.c:1789 -#, c-format -msgid "bit index %d out of valid range (0..%d)" -msgstr "Bitindex %d ist außerhalb des gültigen Bereichs (0..%d)" +#: catalog/objectaddress.c:307 +msgid "server name cannot be qualified" +msgstr "Servername kann nicht qualifiziert werden" -#: utils/adt/varbit.c:1740 utils/adt/varlena.c:2163 -msgid "new bit must be 0 or 1" -msgstr "neues Bit muss 0 oder 1 sein" +#: catalog/objectaddress.c:532 +msgid "column name must be qualified" +msgstr "Spaltenname muss qualifiziert werden" -#: utils/adt/varchar.c:152 utils/adt/varchar.c:305 -#, c-format -msgid "value too long for type character(%d)" -msgstr "Wert zu lang für Typ character(%d)" +#: catalog/objectaddress.c:874 catalog/objectaddress.c:890 +msgid "must be superuser" +msgstr "Berechtigung nur für Superuser" -#: utils/adt/varchar.c:473 utils/adt/varchar.c:594 -#, c-format -msgid "value too long for type character varying(%d)" -msgstr "Wert zu lang für Typ character varying(%d)" +#: catalog/objectaddress.c:881 +msgid "must have CREATEROLE privilege" +msgstr "Berechtigung nur mit CREATEROLE-Privileg" -#: utils/adt/varlena.c:1314 -#, fuzzy -msgid "could not determine which collation to use for string comparison" -msgstr "" -"konnte Interpretation des Zeilenvergleichsoperators %s nicht bestimmten" +#: catalog/dependency.c:593 +#, c-format +msgid "cannot drop %s because %s requires it" +msgstr "kann %s nicht löschen, wird von %s benötigt" -#: utils/adt/varlena.c:1358 utils/adt/varlena.c:1371 +#: catalog/dependency.c:596 #, c-format -msgid "could not convert string to UTF-16: error %lu" -msgstr "konnte Zeichenkette nicht in UTF-16 umwandeln: Fehler %lu" +msgid "You can drop %s instead." +msgstr "Sie können stattdessen %s löschen." -#: utils/adt/varlena.c:1386 +#: catalog/dependency.c:873 #, c-format -msgid "could not compare Unicode strings: %m" -msgstr "konnte Unicode-Zeichenketten nicht vergleichen: %m" +msgid "drop auto-cascades to %s" +msgstr "Löschvorgang löscht automatisch %s" -#: utils/adt/varlena.c:2041 utils/adt/varlena.c:2072 utils/adt/varlena.c:2108 -#: utils/adt/varlena.c:2151 +#: catalog/dependency.c:885 catalog/dependency.c:894 #, c-format -msgid "index %d out of valid range, 0..%d" -msgstr "Index %d ist außerhalb des gültigen Bereichs, 0..%d" +msgid "%s depends on %s" +msgstr "%s hängt von %s ab" -#: utils/adt/varlena.c:2959 -msgid "field position must be greater than zero" -msgstr "Feldposition muss größer als null sein" +#: catalog/dependency.c:906 catalog/dependency.c:915 +#, c-format +msgid "drop cascades to %s" +msgstr "Löschvorgang löscht ebenfalls %s" -#: utils/adt/varlena.c:3816 utils/adt/varlena.c:3862 -#, fuzzy -msgid "unterminated conversion specifier" -msgstr "Bezeichner in Anführungszeichen nicht abgeschlossen" +#: catalog/dependency.c:935 +#, c-format +msgid "cannot drop %s because other objects depend on it" +msgstr "kann %s nicht löschen, weil andere Objekte davon abhängen" -#: utils/adt/varlena.c:3868 -msgid "conversion specifies argument 0, but arguments are numbered from 1" +#: catalog/dependency.c:939 catalog/dependency.c:946 +msgid "Use DROP ... CASCADE to drop the dependent objects too." msgstr "" +"Verwenden Sie DROP ... CASCADE, um die abhängigen Objekte ebenfalls zu " +"löschen." -#: utils/adt/varlena.c:3875 -#, fuzzy -msgid "too few arguments for format conversion" -msgstr "zu wenige Argumente auf Zeile %d" - -#: utils/adt/varlena.c:3896 -#, fuzzy, c-format -msgid "unrecognized conversion specifier: %c" -msgstr "unbekannter Constraint-Typ: %c\n" - -#: utils/adt/varlena.c:3925 -msgid "NULL cannot be escaped as an SQL identifier" +#: catalog/dependency.c:943 +msgid "cannot drop desired object(s) because other objects depend on them" msgstr "" +"kann gewünschte Objekte nicht löschen, weil andere Objekte davon abhängen" -#: utils/adt/windowfuncs.c:243 -msgid "argument of ntile must be greater than zero" -msgstr "Argument von ntile muss größer als null sein" +#. translator: %d always has a value larger than 1 +#: catalog/dependency.c:952 +#, c-format +msgid "drop cascades to %d other object" +msgid_plural "drop cascades to %d other objects" +msgstr[0] "Löschvorgang löscht ebenfalls %d weiteres Objekt" +msgstr[1] "Löschvorgang löscht ebenfalls %d weitere Objekte" -#: utils/adt/windowfuncs.c:465 -msgid "argument of nth_value must be greater than zero" -msgstr "Argument von nth_value muss größer als null sein" +#: catalog/dependency.c:2223 +#, c-format +msgid " column %s" +msgstr " Spalte %s" -#: utils/sort/logtape.c:213 +#: catalog/dependency.c:2229 #, c-format -msgid "could not write block %ld of temporary file: %m" -msgstr "konnte Block %ld von temporärer Datei nicht schreiben: %m" +msgid "function %s" +msgstr "Funktion %s" -#: utils/sort/logtape.c:215 -msgid "Perhaps out of disk space?" -msgstr "Vielleicht kein Platz mehr auf der Festplatte?" +#: catalog/dependency.c:2234 +#, c-format +msgid "type %s" +msgstr "Typ %s" -#: utils/sort/logtape.c:232 +#: catalog/dependency.c:2264 #, c-format -msgid "could not read block %ld of temporary file: %m" -msgstr "konnte Block %ld von temporärer Datei nicht lesen: %m" +msgid "cast from %s to %s" +msgstr "Typumwandlung von %s in %s" -#: utils/sort/tuplesort.c:3131 +#: catalog/dependency.c:2284 #, c-format -msgid "could not create unique index \"%s\"" -msgstr "konnte Unique Index »%s« nicht erstellen" +msgid "collation %s" +msgstr "Sortierfolge %s" -#: utils/sort/tuplesort.c:3133 +#: catalog/dependency.c:2308 #, c-format -msgid "Key %s is duplicated." -msgstr "Schlüssel %s ist doppelt vorhanden." +msgid "constraint %s on %s" +msgstr "Constraint %s für %s" -#: utils/cache/typcache.c:409 +#: catalog/dependency.c:2314 #, c-format -msgid "type %s is not composite" -msgstr "Typ %s ist kein zusammengesetzter Typ" +msgid "constraint %s" +msgstr "Constraint %s" -#: utils/cache/typcache.c:423 -msgid "record type has not been registered" -msgstr "Record-Typ wurde nicht registriert" +#: catalog/dependency.c:2331 +#, c-format +msgid "conversion %s" +msgstr "Konversion %s" -#: utils/cache/lsyscache.c:2396 utils/cache/lsyscache.c:2429 -#: utils/cache/lsyscache.c:2462 utils/cache/lsyscache.c:2495 +#: catalog/dependency.c:2368 #, c-format -msgid "type %s is only a shell" -msgstr "Typ %s ist nur eine Hülle" +msgid "default for %s" +msgstr "Vorgabewert für %s" -#: utils/cache/lsyscache.c:2401 +#: catalog/dependency.c:2385 #, c-format -msgid "no input function available for type %s" -msgstr "keine Eingabefunktion verfügbar für Typ %s" +msgid "language %s" +msgstr "Sprache %s" -#: utils/cache/lsyscache.c:2434 +#: catalog/dependency.c:2391 #, c-format -msgid "no output function available for type %s" -msgstr "keine Ausgabefunktion verfügbar für Typ %s" +msgid "large object %u" +msgstr "Large Object %u" -#: utils/cache/plancache.c:589 -msgid "cached plan must not change result type" -msgstr "gecachter Plan darf den Ergebnistyp nicht ändern" +#: catalog/dependency.c:2396 +#, c-format +msgid "operator %s" +msgstr "Operator %s" -#: utils/cache/relcache.c:4274 +#: catalog/dependency.c:2428 #, c-format -msgid "could not create relation-cache initialization file \"%s\": %m" -msgstr "" -"konnte Initialisierungsdatei für Relationscache »%s« nicht erzeugen: %m" +msgid "operator class %s for access method %s" +msgstr "Operatorklasse %s für Zugriffsmethode %s" -#: utils/cache/relcache.c:4276 -msgid "Continuing anyway, but there's something wrong." -msgstr "Setze trotzdem fort, aber irgendwas stimmt nicht." +#. 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:2478 +#, c-format +msgid "operator %d (%s, %s) of %s: %s" +msgstr "Operator %d (%s, %s) von %s: %s" -#: utils/cache/relmapper.c:454 -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" +#. 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:2528 +#, c-format +msgid "function %d (%s, %s) of %s: %s" +msgstr "Funktion %d (%s, %s) von %s: %s" -#: utils/cache/relmapper.c:596 utils/cache/relmapper.c:702 +#: catalog/dependency.c:2568 #, c-format -msgid "could not open relation mapping file \"%s\": %m" -msgstr "konnte Relation-Mapping-Datei »%s« nicht öffnen: %m" +msgid "rule %s on " +msgstr "Regel %s für " -#: utils/cache/relmapper.c:609 +#: catalog/dependency.c:2603 #, c-format -msgid "could not read relation mapping file \"%s\": %m" -msgstr "konnte nicht aus Relation-Mapping-Datei »%s« lesen: %m" +msgid "trigger %s on " +msgstr "Trigger %s für " -#: utils/cache/relmapper.c:619 +#: catalog/dependency.c:2620 #, c-format -msgid "relation mapping file \"%s\" contains invalid data" -msgstr "Relation-Mapping-Datei »%s« enthält ungültige Daten" +msgid "schema %s" +msgstr "Schema %s" + +#: catalog/dependency.c:2633 +#, c-format +msgid "text search parser %s" +msgstr "Textsucheparser %s" -#: utils/cache/relmapper.c:629 +#: catalog/dependency.c:2648 #, c-format -msgid "relation mapping file \"%s\" contains incorrect checksum" -msgstr "Relation-Mapping-Datei »%s« enthält falsche Prüfsumme" +msgid "text search dictionary %s" +msgstr "Textsuchewörterbuch %s" -#: utils/cache/relmapper.c:741 +#: catalog/dependency.c:2663 #, c-format -msgid "could not write to relation mapping file \"%s\": %m" -msgstr "konnte nicht in Relation-Mapping-Datei »%s« schreiben: %m" +msgid "text search template %s" +msgstr "Textsuchevorlage %s" -#: utils/cache/relmapper.c:754 +#: catalog/dependency.c:2678 #, c-format -msgid "could not fsync relation mapping file \"%s\": %m" -msgstr "konnte Relation-Mapping-Datei »%s« nicht fsyncen: %m" +msgid "text search configuration %s" +msgstr "Textsuchekonfiguration %s" -#: utils/cache/relmapper.c:760 +#: catalog/dependency.c:2686 #, c-format -msgid "could not close relation mapping file \"%s\": %m" -msgstr "konnte Relation-Mapping-Datei »%s« nicht schließen: %m" +msgid "role %s" +msgstr "Rolle %s" -#: utils/mmgr/aset.c:417 +#: catalog/dependency.c:2699 #, c-format -msgid "Failed while creating memory context \"%s\"." -msgstr "Fehler während der Erzeugung des Speicherkontexts »%s«." +msgid "database %s" +msgstr "Datenbank %s" -#: utils/mmgr/aset.c:588 utils/mmgr/aset.c:766 utils/mmgr/aset.c:967 +#: catalog/dependency.c:2711 #, c-format -msgid "Failed on request of size %lu." -msgstr "Fehler bei Anfrage mit Größe %lu." +msgid "tablespace %s" +msgstr "Tablespace %s" -#: utils/mmgr/portalmem.c:207 +#: catalog/dependency.c:2720 #, c-format -msgid "cursor \"%s\" already exists" -msgstr "Cursor »%s« existiert bereits" +msgid "foreign-data wrapper %s" +msgstr "Fremddaten-Wrapper %s" -#: utils/mmgr/portalmem.c:211 +#: catalog/dependency.c:2729 #, c-format -msgid "closing existing cursor \"%s\"" -msgstr "bestehender Cursor »%s« wird geschlossen" +msgid "server %s" +msgstr "Server %s" -#: utils/mmgr/portalmem.c:448 +#: catalog/dependency.c:2754 #, c-format -msgid "cannot drop active portal \"%s\"" -msgstr "aktives Portal »%s« kann nicht gelöscht werden" +msgid "user mapping for %s" +msgstr "Benutzerabbildung für %s" -#: utils/mmgr/portalmem.c:635 -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" +#: catalog/dependency.c:2788 +#, c-format +msgid "default privileges on new relations belonging to role %s" +msgstr "Vorgabeprivilegien für neue Relationen von Rolle %s" -#: utils/fmgr/dfmgr.c:125 +#: catalog/dependency.c:2793 #, c-format -msgid "could not find function \"%s\" in file \"%s\"" -msgstr "konnte Funktion »%s« nicht in Datei »%s« finden" +msgid "default privileges on new sequences belonging to role %s" +msgstr "Vorgabeprivilegien für neue Sequenzen von Rolle %s" -#: utils/fmgr/dfmgr.c:204 utils/fmgr/dfmgr.c:413 utils/fmgr/dfmgr.c:461 +#: catalog/dependency.c:2798 #, c-format -msgid "could not access file \"%s\": %m" -msgstr "konnte nicht auf Datei »%s« zugreifen: %m" +msgid "default privileges on new functions belonging to role %s" +msgstr "Vorgabeprivilegien für neue Funktionen von Rolle %s" -#: utils/fmgr/dfmgr.c:242 +#: catalog/dependency.c:2804 #, c-format -msgid "could not load library \"%s\": %s" -msgstr "konnte Bibliothek »%s« nicht laden: %s" +msgid "default privileges belonging to role %s" +msgstr "Vorgabeprivilegien von Rolle %s" -#: utils/fmgr/dfmgr.c:274 +#: catalog/dependency.c:2812 #, c-format -msgid "incompatible library \"%s\": missing magic block" -msgstr "inkompatible Bibliothek »%s«: magischer Block fehlt" +msgid " in schema %s" +msgstr " in Schema %s" -#: utils/fmgr/dfmgr.c:276 -msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro." -msgstr "Erweiterungsbibliotheken müssen das Makro PG_MODULE_MAGIC verwenden." +#: catalog/dependency.c:2829 +#, c-format +msgid "extension %s" +msgstr "Erweiterung %s" -#: utils/fmgr/dfmgr.c:312 +#: catalog/dependency.c:2887 #, c-format -msgid "incompatible library \"%s\": version mismatch" -msgstr "inkompatible Bibliothek »%s«: Version stimmt nicht überein" +msgid "table %s" +msgstr "Tabelle %s" -#: utils/fmgr/dfmgr.c:314 +#: catalog/dependency.c:2891 #, c-format -msgid "Server is version %d.%d, library is version %d.%d." -msgstr "Serverversion ist %d.%d, Bibliotheksversion ist %d.%d." +msgid "index %s" +msgstr "Index %s" -#: utils/fmgr/dfmgr.c:333 +#: catalog/dependency.c:2895 #, c-format -msgid "Server has FUNC_MAX_ARGS = %d, library has %d." -msgstr "Server hat FUNC_MAX_ARGS = %d, Bibliothek hat %d." +msgid "sequence %s" +msgstr "Sequenz %s" -#: utils/fmgr/dfmgr.c:342 +#: catalog/dependency.c:2899 #, c-format -msgid "Server has INDEX_MAX_KEYS = %d, library has %d." -msgstr "Server hat INDEX_MAX_KEYS = %d, Bibliothek hat %d." +msgid "uncataloged table %s" +msgstr "nicht katalogisierte Tabelle %s" -#: utils/fmgr/dfmgr.c:351 +#: catalog/dependency.c:2903 #, c-format -msgid "Server has NAMEDATALEN = %d, library has %d." -msgstr "Server hat NAMEDATALEN = %d, Bibliothek hat %d." +msgid "toast table %s" +msgstr "TOAST-Tabelle %s" -#: utils/fmgr/dfmgr.c:360 +#: catalog/dependency.c:2907 #, c-format -msgid "Server has FLOAT4PASSBYVAL = %s, library has %s." -msgstr "Server hat FLOAT4PASSBYVAL = %s, Bibliothek hat %s." +msgid "view %s" +msgstr "Sicht %s" -#: utils/fmgr/dfmgr.c:369 +#: catalog/dependency.c:2911 #, c-format -msgid "Server has FLOAT8PASSBYVAL = %s, library has %s." -msgstr "Server hat FLOAT8PASSBYVAL = %s, Bibliothek hat %s." +msgid "composite type %s" +msgstr "zusammengesetzter Typ %s" -#: utils/fmgr/dfmgr.c:376 -msgid "Magic block has unexpected length or padding difference." -msgstr "Magischer Block hat unerwartete Länge oder unterschiedliches Padding." +#: catalog/dependency.c:2915 +#, c-format +msgid "foreign table %s" +msgstr "Fremdtabelle %s" -#: utils/fmgr/dfmgr.c:379 +#: catalog/dependency.c:2920 #, c-format -msgid "incompatible library \"%s\": magic block mismatch" -msgstr "inkompatible Bibliothek »%s«: magischer Block stimmt überein" +msgid "relation %s" +msgstr "Relation %s" -#: utils/fmgr/dfmgr.c:545 +#: catalog/dependency.c:2957 #, c-format -msgid "access to library \"%s\" is not allowed" -msgstr "Zugriff auf Bibliothek »%s« ist nicht erlaubt" +msgid "operator family %s for access method %s" +msgstr "Operatorfamilie %s für Zugriffsmethode %s" -#: utils/fmgr/dfmgr.c:572 +#: catalog/pg_operator.c:221 catalog/pg_operator.c:363 #, c-format -msgid "invalid macro name in dynamic library path: %s" -msgstr "ungültiger Makroname in Parameter »dynamic_library_path«: %s" +msgid "\"%s\" is not a valid operator name" +msgstr "»%s« ist kein gültiger Operatorname" -#: utils/fmgr/dfmgr.c:617 -msgid "zero-length component in parameter \"dynamic_library_path\"" -msgstr "eine Komponente im Parameter »dynamic_library_path« hat Länge null" +#: catalog/pg_operator.c:372 +msgid "only binary operators can have commutators" +msgstr "nur binäre Operatoren können Kommutatoren haben" -#: utils/fmgr/dfmgr.c:636 -msgid "component in parameter \"dynamic_library_path\" is not an absolute path" -msgstr "" -"eine Komponente im Parameter »dynamic_library_path« ist kein absoluter Pfad" +#: catalog/pg_operator.c:376 +msgid "only binary operators can have join selectivity" +msgstr "nur binäre Operatoren können Join-Selectivity haben" -#: utils/fmgr/fmgr.c:270 -#, c-format -msgid "internal function \"%s\" is not in internal lookup table" -msgstr "interne Funktion »%s« ist nicht in der internen Suchtabelle" +#: catalog/pg_operator.c:380 +msgid "only binary operators can merge join" +msgstr "nur binäre Operatoren können an einem Merge-Verbund teilnehmen" -#: utils/fmgr/fmgr.c:474 -#, c-format -msgid "unrecognized API version %d reported by info function \"%s\"" -msgstr "Info-Funktion »%2$s« berichtete unbekannte API-Version %1$d" +#: catalog/pg_operator.c:384 +msgid "only binary operators can hash" +msgstr "nur binäre Operatoren können eine Hash-Funktion haben" -#: utils/fmgr/fmgr.c:845 utils/fmgr/fmgr.c:2106 -#, c-format -msgid "function %u has too many arguments (%d, maximum is %d)" -msgstr "Funktion %u hat zu viele Argumente (%d, Maximum ist %d)" +#: catalog/pg_operator.c:395 +msgid "only boolean operators can have negators" +msgstr "nur Boole'sche Operatoren können Negatoren haben" -#: utils/fmgr/funcapi.c:354 -#, c-format -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" +#: catalog/pg_operator.c:399 +msgid "only boolean operators can have restriction selectivity" +msgstr "nur Boole'sche Operatoren können Restriction-Selectivity haben" -#: utils/fmgr/funcapi.c:1208 utils/fmgr/funcapi.c:1239 -msgid "number of aliases does not match number of columns" -msgstr "Anzahl der Aliasnamen stimmt nicht mit der Anzahl der Spalten überein" +#: catalog/pg_operator.c:403 +msgid "only boolean operators can have join selectivity" +msgstr "nur Boole'sche Operatoren können Join-Selectivity haben" -#: utils/fmgr/funcapi.c:1233 -msgid "no column alias was provided" -msgstr "Spaltenalias fehlt" +#: catalog/pg_operator.c:407 +msgid "only boolean operators can merge join" +msgstr "nur Boole'sche Operatoren können an einem Merge-Verbund teilnehmen" -#: utils/fmgr/funcapi.c:1257 -msgid "could not determine row description for function returning record" -msgstr "" -"konnte Zeilenbeschreibung für Funktion, die »record« zurückgibt, nicht " -"ermitteln" +#: catalog/pg_operator.c:411 +msgid "only boolean operators can hash" +msgstr "nur Boole'sche Operatoren können eine Hash-Funktion haben" -#: utils/init/miscinit.c:115 +#: catalog/pg_operator.c:423 #, c-format -msgid "could not change directory to \"%s\": %m" -msgstr "konnte nicht in Verzeichnis »%s« wechseln: %m" +msgid "operator %s already exists" +msgstr "Operator %s existiert bereits" + +#: catalog/pg_operator.c:616 +msgid "operator cannot be its own negator or sort operator" +msgstr "Operator kann nicht sein eigener Negator oder Sortierungsoperator sein" -#: utils/init/miscinit.c:381 utils/misc/guc.c:5255 +#: catalog/pg_enum.c:113 catalog/pg_enum.c:199 #, c-format -msgid "cannot set parameter \"%s\" within security-restricted operation" -msgstr "" -"kann Parameter »%s« nicht in einer sicherheitsbeschränkten Operation setzen" +msgid "invalid enum label \"%s\"" +msgstr "ungültiges Enum-Label »%s«" -#: utils/init/miscinit.c:460 +#: catalog/pg_enum.c:114 catalog/pg_enum.c:200 #, c-format -msgid "role \"%s\" is not permitted to log in" -msgstr "Rolle »%s« hat keine Berechtigung zum Einloggen" +msgid "Labels must be %d characters or less." +msgstr "Labels müssen %d oder weniger Zeichen haben." -#: utils/init/miscinit.c:478 +#: catalog/pg_enum.c:264 #, c-format -msgid "too many connections for role \"%s\"" -msgstr "zu viele Verbindungen von Rolle »%s«" +msgid "\"%s\" is not an existing enum label" +msgstr "»%s« ist kein existierendes Enum-Label" -#: utils/init/miscinit.c:538 -msgid "permission denied to set session authorization" -msgstr "keine Berechtigung, um Sitzungsauthorisierung zu setzen" +#: catalog/pg_enum.c:325 +msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade" +msgstr "ALTER TYPE ADD BEFORE/AFTER ist mit Binary Upgrade inkompatibel" -#: utils/init/miscinit.c:618 +#: catalog/heap.c:264 #, c-format -msgid "invalid role OID: %u" -msgstr "ungültige Rollen-OID: %u" +msgid "permission denied to create \"%s.%s\"" +msgstr "keine Berechtigung, um »%s.%s« zu erzeugen" -#: utils/init/miscinit.c:750 +#: catalog/heap.c:266 +msgid "System catalog modifications are currently disallowed." +msgstr "Änderungen an Systemkatalogen sind gegenwärtig nicht erlaubt." + +#: catalog/heap.c:406 #, c-format -msgid "could not create lock file \"%s\": %m" -msgstr "konnte Sperrdatei »%s« nicht erstellen: %m" +msgid "column name \"%s\" conflicts with a system column name" +msgstr "Spaltenname »%s« steht im Konflikt mit dem Namen einer Systemspalte" -#: utils/init/miscinit.c:764 +#: catalog/heap.c:422 #, c-format -msgid "could not open lock file \"%s\": %m" -msgstr "konnte Sperrdatei »%s« nicht öffnen: %m" +msgid "column name \"%s\" specified more than once" +msgstr "Spaltenname »%s« mehrmals angegeben" + +#: catalog/heap.c:472 +#, c-format +msgid "column \"%s\" has type \"unknown\"" +msgstr "Spalte »%s« hat Typ »unknown«" + +#: catalog/heap.c:473 +msgid "Proceeding with relation creation anyway." +msgstr "Relation wird trotzdem erzeugt." -#: utils/init/miscinit.c:770 +#: catalog/heap.c:486 #, c-format -msgid "could not read lock file \"%s\": %m" -msgstr "konnte Sperrdatei »%s« nicht lesen: %m" +msgid "column \"%s\" has pseudo-type %s" +msgstr "Spalte »%s« hat Pseudotyp %s" -#: utils/init/miscinit.c:818 +#: catalog/heap.c:516 #, c-format -msgid "lock file \"%s\" already exists" -msgstr "Sperrdatei »%s« existiert bereits" +msgid "composite type %s cannot be made a member of itself" +msgstr "zusammengesetzter Typ %s kann nicht Teil von sich selbst werden" -#: utils/init/miscinit.c:822 +#: catalog/heap.c:558 #, c-format -msgid "Is another postgres (PID %d) running in data directory \"%s\"?" +msgid "no collation was derived for column \"%s\" with collatable type %s" msgstr "" -"Läuft bereits ein anderer postgres-Prozess (PID %d) im Datenverzeichnis »%s«?" +"für Spalte »%s« mit sortierbarem Typ %s wurde keine Sortierfolge abgeleitet" -#: utils/init/miscinit.c:824 -#, c-format -msgid "Is another postmaster (PID %d) running in data directory \"%s\"?" +#: catalog/heap.c:1030 +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 "" -"Läuft bereits ein anderer postmaster-Prozess (PID %d) im Datenverzeichnis " -"»%s«?" +"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." -#: utils/init/miscinit.c:827 +#: catalog/heap.c:2150 #, c-format -msgid "Is another postgres (PID %d) using socket file \"%s\"?" -msgstr "" -"Verwendet bereits ein anderer postgres-Prozess (PID %d) die Socketdatei »%s«?" +msgid "check constraint \"%s\" already exists" +msgstr "Check-Constraint »%s« existiert bereits" -#: utils/init/miscinit.c:829 +#: catalog/heap.c:2300 #, c-format -msgid "Is another postmaster (PID %d) using socket file \"%s\"?" -msgstr "" -"Verwendet bereits ein anderer postmaster-Prozess (PID %d) die Socketdatei " -"»%s«?" +msgid "merging constraint \"%s\" with inherited definition" +msgstr "Constraint »%s« wird mit geerbter Definition zusammengeführt" -#: utils/init/miscinit.c:865 +#: catalog/heap.c:2398 +msgid "cannot use column references in default expression" +msgstr "Spaltenverweise können nicht in Vorgabeausdrücken verwendet werden" + +#: catalog/heap.c:2406 +msgid "default expression must not return a set" +msgstr "Vorgabeausdruck kann keine Ergebnismenge zurückgeben" + +#: catalog/heap.c:2414 +msgid "cannot use subquery in default expression" +msgstr "Unteranfragen können nicht in Vorgabeausdrücken verwendet werden" + +#: catalog/heap.c:2418 +msgid "cannot use aggregate function in default expression" +msgstr "Aggregatfunktionen können nicht in Vorgabeausdrücken verwendet werden" + +#: catalog/heap.c:2422 +msgid "cannot use window function in default expression" +msgstr "Fensterfunktionen können nicht in Vorgabeausdrücken verwendet werden" + +#: catalog/heap.c:2492 #, 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" +msgid "only table \"%s\" can be referenced in check constraint" +msgstr "nur Verweise auf Tabelle »%s« sind im Check-Constraint zugelassen" -#: utils/init/miscinit.c:868 +#: catalog/heap.c:2748 +msgid "unsupported ON COMMIT and foreign key combination" +msgstr "nicht unterstützte Kombination aus ON COMMIT und Fremdschlüssel" + +#: catalog/heap.c:2749 #, 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\"." +"Table \"%s\" references \"%s\", but they do not have the same ON COMMIT " +"setting." 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:884 -#, c-format -msgid "could not remove old lock file \"%s\": %m" -msgstr "konnte alte Sperrdatei »%s« nicht löschen: %m" +"Tabelle »%s« verweist auf »%s«, aber sie haben nicht die gleiche ON-COMMIT-" +"Einstellung." -#: 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." +#: catalog/heap.c:2754 +msgid "cannot truncate a table referenced in a foreign key constraint" 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." +"kann eine Tabelle, die in einen Fremdschlüssel-Constraint eingebunden ist, " +"nicht leeren" -#: utils/init/miscinit.c:920 utils/init/miscinit.c:931 -#: utils/init/miscinit.c:941 +#: catalog/heap.c:2755 #, c-format -msgid "could not write lock file \"%s\": %m" -msgstr "konnte Sperrdatei »%s« nicht schreiben: %m" +msgid "Table \"%s\" references \"%s\"." +msgstr "Tabelle »%s« verweist auf »%s«." -#: utils/init/miscinit.c:1048 utils/misc/guc.c:7507 +#: catalog/heap.c:2757 #, c-format -msgid "could not read from file \"%s\": %m" -msgstr "konnte nicht aus Datei »%s« lesen: %m" +msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." +msgstr "" +"Leeren Sie die Tabelle »%s« gleichzeitig oder verwenden Sie TRUNCATE ... " +"CASCADE." -#: utils/init/miscinit.c:1147 utils/init/miscinit.c:1160 +#: catalog/pg_depend.c:323 #, c-format -msgid "\"%s\" is not a valid data directory" -msgstr "»%s« ist kein gültiges Datenverzeichnis" +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" -#: utils/init/miscinit.c:1149 +#: main/main.c:247 #, c-format -msgid "File \"%s\" is missing." -msgstr "Die Datei »%s« fehlt." +msgid "%s: setsysinfo failed: %s\n" +msgstr "%s: setsysinfo fehlgeschlagen: %s\n" -#: utils/init/miscinit.c:1162 +#: main/main.c:269 #, c-format -msgid "File \"%s\" does not contain valid data." -msgstr "Die Datei »%s« enthält keine gültigen Daten." - -#: utils/init/miscinit.c:1164 -msgid "You might need to initdb." -msgstr "Sie müssen möglicherweise initdb ausführen." +msgid "%s: WSAStartup failed: %d\n" +msgstr "%s: WSAStartup fehlgeschlagen: %d\n" -#: utils/init/miscinit.c:1172 +#: main/main.c:288 #, c-format msgid "" -"The data directory was initialized by PostgreSQL version %ld.%ld, which is " -"not compatible with this version %s." +"%s is the PostgreSQL server.\n" +"\n" msgstr "" -"Das Datenverzeichnis wurde von PostgreSQL Version %ld.%ld initialisiert, " -"welche nicht mit dieser Version %s kompatibel ist." +"%s ist der PostgreSQL-Server.\n" +"\n" -#: utils/init/miscinit.c:1220 +#: main/main.c:289 #, c-format -msgid "invalid list syntax in parameter \"%s\"" -msgstr "ungültige Listensyntax für Parameter »%s«" +msgid "" +"Usage:\n" +" %s [OPTION]...\n" +"\n" +msgstr "" +"Aufruf:\n" +" %s [OPTION]...\n" +"\n" -#: utils/init/miscinit.c:1257 +#: main/main.c:290 #, c-format -msgid "loaded library \"%s\"" -msgstr "Bibliothek »%s« geladen" - -#: utils/init/postinit.c:225 -#, fuzzy, c-format -msgid "replication connection authorized: user=%s" -msgstr "Replikationsverbindung authorisiert: Benutzer=%s Host=%s" +msgid "Options:\n" +msgstr "Optionen:\n" -#: utils/init/postinit.c:229 +#: main/main.c:292 #, c-format -msgid "connection authorized: user=%s database=%s" -msgstr "Verbindung authorisiert: Benutzer=%s Datenbank=%s" +msgid " -A 1|0 enable/disable run-time assert checking\n" +msgstr " -A 1|0 Assert-Prüfungen ein-/ausschalten\n" -#: utils/init/postinit.c:260 +#: main/main.c:294 #, c-format -msgid "database \"%s\" has disappeared from pg_database" -msgstr "Datenbank »%s« ist aus pg_database verschwunden" +msgid " -B NBUFFERS number of shared buffers\n" +msgstr " -B ZAHL Anzahl der geteilten Puffer\n" -#: utils/init/postinit.c:262 +#: main/main.c:295 #, c-format -msgid "Database OID %u now seems to belong to \"%s\"." -msgstr "Datenbank-OID %u gehört jetzt anscheinend zu »%s«." +msgid " -c NAME=VALUE set run-time parameter\n" +msgstr " -c NAME=WERT setze Konfigurationsparameter\n" -#: utils/init/postinit.c:282 +#: main/main.c:296 #, c-format -msgid "database \"%s\" is not currently accepting connections" -msgstr "Datenbank »%s« akzeptiert gegenwärtig keine Verbindungen" +msgid " -d 1-5 debugging level\n" +msgstr " -d 1-5 Debug-Level\n" -#: utils/init/postinit.c:295 +#: main/main.c:297 #, c-format -msgid "permission denied for database \"%s\"" -msgstr "keine Berechtigung für Datenbank »%s«" - -#: utils/init/postinit.c:296 -msgid "User does not have CONNECT privilege." -msgstr "Benutzer hat das CONNECT-Privileg nicht." +msgid " -D DATADIR database directory\n" +msgstr " -D VERZEICHNIS Datenbankverzeichnis\n" -#: utils/init/postinit.c:313 +#: main/main.c:298 #, c-format -msgid "too many connections for database \"%s\"" -msgstr "zu viele Verbindungen für Datenbank »%s«" - -#: utils/init/postinit.c:335 utils/init/postinit.c:342 -msgid "database locale is incompatible with operating system" -msgstr "Datenbank-Locale ist inkompatibel mit Betriebssystem" +msgid " -e use European date input format (DMY)\n" +msgstr " -e verwende europäisches Datumseingabeformat (DMY)\n" -#: utils/init/postinit.c:336 +#: main/main.c:299 #, 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:338 utils/init/postinit.c:345 -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." +msgid " -F turn fsync off\n" +msgstr " -F »fsync« ausschalten\n" -#: utils/init/postinit.c:343 +#: main/main.c:300 #, 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:597 -msgid "no roles are defined in this database system" -msgstr "in diesem Datenbanksystem sind keine Rollen definiert" +msgid " -h HOSTNAME host name or IP address to listen on\n" +msgstr " -h HOSTNAME horche auf Hostname oder IP-Adresse\n" -#: utils/init/postinit.c:598 +#: main/main.c:301 #, 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:621 -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:625 -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:635 -msgid "must be superuser to connect in binary upgrade mode" -msgstr "nur Superuser können im Binary-Upgrade-Modus verbinden" +msgid " -i enable TCP/IP connections\n" +msgstr " -i ermögliche TCP/IP-Verbindungen\n" -#: utils/init/postinit.c:649 -msgid "" -"remaining connection slots are reserved for non-replication superuser " -"connections" -msgstr "" -"die verbleibenden Verbindungen sind für Superuser auf Nicht-" -"Replikationsverbindungen reserviert" +#: main/main.c:302 +#, c-format +msgid " -k DIRECTORY Unix-domain socket location\n" +msgstr " -k VERZEICHNIS Ort der Unix-Domain-Socket\n" -#: utils/init/postinit.c:664 -msgid "must be replication role to start walsender" -msgstr "nur Replikationsrollen können WAL-Sender starten" +#: main/main.c:304 +#, c-format +msgid " -l enable SSL connections\n" +msgstr " -l ermögliche SSL-Verbindungen\n" -#: utils/init/postinit.c:724 +#: main/main.c:306 #, c-format -msgid "database %u does not exist" -msgstr "Datenbank %u existiert nicht" +msgid " -N MAX-CONNECT maximum number of allowed connections\n" +msgstr " -N ZAHL Anzahl der erlaubten Verbindungen\n" -#: utils/init/postinit.c:776 -msgid "It seems to have just been dropped or renamed." -msgstr "Sie wurde anscheinend gerade gelöscht oder umbenannt." +#: main/main.c:307 +#, c-format +msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n" +msgstr "" +" -o OPTIONEN »OPTIONEN« an jeden Serverprozess weiterreichen (obsolet)\n" -#: utils/init/postinit.c:794 +#: main/main.c:308 #, c-format -msgid "The database subdirectory \"%s\" is missing." -msgstr "Das Datenbankunterverzeichnis »%s« fehlt." +msgid " -p PORT port number to listen on\n" +msgstr " -p PORT auf dieser Portnummer horchen\n" -#: utils/init/postinit.c:799 +#: main/main.c:309 #, c-format -msgid "could not access directory \"%s\": %m" -msgstr "konnte nicht auf Verzeichnis »%s« zugreifen: %m" +msgid " -s show statistics after each query\n" +msgstr " -s zeige Statistiken nach jeder Anfrage\n" -#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:136 -#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:163 +#: main/main.c:310 #, c-format -msgid "unexpected encoding ID %d for ISO 8859 character sets" -msgstr "unerwartete Kodierungs-ID %d für ISO-8859-Zeichensatz" +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" -#: utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:126 -#: utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:153 +#: main/main.c:311 #, c-format -msgid "unexpected encoding ID %d for WIN character sets" -msgstr "unerwartete Kodierungs-ID %d für WIN-Zeichensatz" +msgid " --NAME=VALUE set run-time parameter\n" +msgstr " --NAME=WERT setze Konfigurationsparameter\n" -#: utils/mb/conv.c:509 +#: main/main.c:312 #, c-format -msgid "invalid encoding number: %d" -msgstr "ungültige Kodierungsnummer: %d" +msgid " --describe-config describe configuration parameters, then exit\n" +msgstr " --describe-config zeige Konfigurationsparameter und beende\n" -#: utils/mb/encnames.c:485 -msgid "encoding name too long" -msgstr "Kodierungsname zu lang" +#: main/main.c:313 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help diese Hilfe anzeigen, dann beenden\n" -#: utils/mb/mbutils.c:281 +#: main/main.c:314 #, c-format -msgid "conversion between %s and %s is not supported" -msgstr "Umwandlung zwischen %s und %s wird nicht unterstützt" +msgid " --version output version information, then exit\n" +msgstr " --version Versionsinformationen anzeigen, dann beenden\n" -#: utils/mb/mbutils.c:351 +#: main/main.c:316 #, c-format msgid "" -"default conversion function for encoding \"%s\" to \"%s\" does not exist" -msgstr "Standardumwandlung von Kodierung »%s« nach »%s« existiert nicht" +"\n" +"Developer options:\n" +msgstr "" +"\n" +"Entwickleroptionen:\n" -#: utils/mb/mbutils.c:375 utils/mb/mbutils.c:676 +#: main/main.c:317 #, c-format -msgid "String of %d bytes is too long for encoding conversion." -msgstr "Zeichenkette mit %d Bytes ist zu lang für Kodierungsumwandlung." +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" -#: utils/mb/mbutils.c:462 +#: main/main.c:318 #, c-format -msgid "invalid source encoding name \"%s\"" -msgstr "ungültiger Quellkodierungsname »%s«" +msgid "" +" -n do not reinitialize shared memory after abnormal exit\n" +msgstr "" +" -n Shared Memory nach abnormalem Ende nicht neu " +"initialisieren\n" -#: utils/mb/mbutils.c:467 +#: main/main.c:319 #, c-format -msgid "invalid destination encoding name \"%s\"" -msgstr "ungültiger Zielkodierungsname »%s«" +msgid " -O allow system table structure changes\n" +msgstr " -O erlaube Änderungen an Systemtabellenstruktur\n" -#: utils/mb/mbutils.c:589 +#: main/main.c:320 #, c-format -msgid "invalid byte value for encoding \"%s\": 0x%02x" -msgstr "ungültiger Byte-Wert für Kodierung »%s«: 0x%02x" +msgid " -P disable system indexes\n" +msgstr " -P schalte Systemindexe aus\n" -#: utils/mb/wchar.c:1611 +#: main/main.c:321 #, c-format -msgid "invalid byte sequence for encoding \"%s\": 0x%s" -msgstr "ungültige Byte-Sequenz für Kodierung »%s«: 0x%s" +msgid " -t pa|pl|ex show timings after each query\n" +msgstr " -t pa|pl|ex zeige Zeitmessung nach jeder Anfrage\n" -#: utils/mb/wchar.c:1640 +#: main/main.c:322 #, c-format -msgid "character 0x%s of encoding \"%s\" has no equivalent in \"%s\"" -msgstr "Zeichen 0x%s in Kodierung »%s« hat keine Entsprechung in »%s«" +msgid " -T send SIGSTOP to all backend processes if one dies\n" +msgstr "" +" -T SIGSTOP an alle Backend-Prozesse senden wenn einer stirbt\n" -#: utils/misc/tzparser.c:61 +#: main/main.c:323 #, c-format -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" +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" -#: utils/misc/tzparser.c:68 +#: main/main.c:325 #, c-format msgid "" -"time zone offset %d is not a multiple of 900 sec (15 min) in time zone file " -"\"%s\", line %d" +"\n" +"Options for single-user mode:\n" msgstr "" -"Zeitzonenabstand %d ist kein Vielfaches von 900 s (15 min) in Zeitzonendatei " -"»%s«, Zeile %d" +"\n" +"Optionen für Einzelbenutzermodus:\n" -#: utils/misc/tzparser.c:80 +#: main/main.c:326 #, c-format -msgid "time zone offset %d is out of range in time zone file \"%s\", line %d" +msgid " --single selects single-user mode (must be first argument)\n" msgstr "" -"Zeitzonenabstand %d ist außerhalb des gültigen Bereichs in Zeitzonendatei " -"»%s«, Zeile %d" +" --single wählt den Einzelbenutzermodus (muss erstes Argument sein)\n" -#: utils/misc/tzparser.c:115 +#: main/main.c:327 #, c-format -msgid "missing time zone abbreviation in time zone file \"%s\", line %d" -msgstr "fehlende Zeitzonenabkürzung in Zeitzonendatei »%s«, Zeile %d" +msgid " DBNAME database name (defaults to user name)\n" +msgstr " DBNAME Datenbankname (Standard: Benutzername)\n" -#: utils/misc/tzparser.c:124 +#: main/main.c:328 #, c-format -msgid "missing time zone offset in time zone file \"%s\", line %d" -msgstr "fehlender Zeitzonenabstand in Zeitzonendatei »%s«, Zeile %d" +msgid " -d 0-5 override debugging level\n" +msgstr " -d 0-5 Debug-Level setzen\n" -#: utils/misc/tzparser.c:131 +#: main/main.c:329 #, 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" +msgid " -E echo statement before execution\n" +msgstr " -E gebe Befehl vor der Ausführung aus\n" -#: utils/misc/tzparser.c:154 +#: main/main.c:330 #, c-format -msgid "invalid syntax in time zone file \"%s\", line %d" -msgstr "ungültige Syntax in Zeitzonendatei »%s«, Zeile %d" +msgid " -j do not use newline as interactive query delimiter\n" +msgstr "" +" -j verwende Zeilenende nicht als Anfrageende im interaktiven\n" +" Modus\n" -#: utils/misc/tzparser.c:218 +#: main/main.c:331 main/main.c:336 #, c-format -msgid "time zone abbreviation \"%s\" is multiply defined" -msgstr "Zeitzonenabkürzung »%s« ist mehrfach definiert" +msgid " -r FILENAME send stdout and stderr to given file\n" +msgstr " -r DATEINAME sende stdout und stderr in genannte Datei\n" -#: utils/misc/tzparser.c:220 +#: main/main.c:333 #, c-format msgid "" -"Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s" -"\", line %d." +"\n" +"Options for bootstrapping mode:\n" msgstr "" -"Eintrag in Zeitzonendatei »%s«, Zeile %d, steht im Konflikt mit Eintrag in " -"Datei »%s«, Zeile %d." +"\n" +"Optionen für Bootstrap-Modus:\n" -#: utils/misc/tzparser.c:285 +#: main/main.c:334 #, c-format -msgid "invalid time zone file name \"%s\"" -msgstr "ungültiger Zeitzonen-Dateiname »%s«" +msgid " --boot selects bootstrapping mode (must be first argument)\n" +msgstr "" +" --boot wählt den Bootstrap-Modus (muss erstes Argument sein)\n" -#: utils/misc/tzparser.c:298 +#: main/main.c:335 #, c-format -msgid "time zone file recursion limit exceeded in file \"%s\"" -msgstr "Rekursionsbeschränkung für Zeitzonendatei überschritten in Datei »%s«" +msgid "" +" DBNAME database name (mandatory argument in bootstrapping mode)\n" +msgstr " DBNAME Datenbankname (Pflichtangabe im Bootstrap-Modus)\n" -#: utils/misc/tzparser.c:337 utils/misc/tzparser.c:350 +#: main/main.c:337 #, c-format -msgid "could not read time zone file \"%s\": %m" -msgstr "konnte Zeitzonendatei »%s« nicht lesen: %m" +msgid " -x NUM internal use\n" +msgstr " -x NUM interne Verwendung\n" -#: utils/misc/tzparser.c:360 +#: main/main.c:339 #, c-format -msgid "line is too long in time zone file \"%s\", line %d" -msgstr "Zeile ist zu lang in Zeitzonendatei »%s«, Zeile %d" +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" +"In der Dokumentation finden Sie eine komplette Liste der Konfigurations-\n" +"parameter und Informationen wie man sie auf der Kommandozeile oder in der\n" +"Konfiguratonsdatei setzen kann.\n" +"\n" +"Berichten Sie Fehler an .\n" -#: utils/misc/tzparser.c:383 +#: main/main.c:353 +msgid "" +"\"root\" execution of the PostgreSQL server is not permitted.\n" +"The server must be started under an unprivileged user ID to prevent\n" +"possible system security compromise. See the documentation for\n" +"more information on how to properly start the server.\n" +msgstr "" +"Der PostgreSQL-Server darf nicht als »root« ausgeführt werden. Der\n" +"Server muss unter einer unprivilegierten Benutzer-ID gestartet werden,\n" +"um mögliche Sicherheitskompromittierung zu verhindern. In der\n" +"Dokumentation finden Sie weitere Informationen darüber, wie der\n" +"Server richtig gestartet wird.\n" + +#: main/main.c:370 #, c-format -msgid "@INCLUDE without file name in time zone file \"%s\", line %d" -msgstr "@INCLUDE ohne Dateiname in Zeitzonendatei »%s«, Zeile %d" +msgid "%s: real and effective user IDs must match\n" +msgstr "%s: reelle und effektive Benutzer-IDs müssen übereinstimmen\n" -#: utils/misc/guc.c:525 -msgid "Ungrouped" -msgstr "Ungruppiert" +#: main/main.c:377 +msgid "" +"Execution of PostgreSQL by a user with administrative permissions is not\n" +"permitted.\n" +"The server must be started under an unprivileged user ID to prevent\n" +"possible system security compromises. See the documentation for\n" +"more information on how to properly start the server.\n" +msgstr "" +"Der PostgreSQL-Server darf nicht als Benutzer mit Administrator-Rechten\n" +"ausgeführt werden. Der Server muss unter einer unprivilegierten\n" +"Benutzer-ID gestartet werden, um mögliche Sicherheitskompromittierung zu\n" +"verhindern. In der Dokumentation finden Sie weitere Informationen darüber,\n" +"wie der Server richtig gestartet wird.\n" -#: utils/misc/guc.c:527 -msgid "File Locations" -msgstr "Dateipfade" +#: main/main.c:398 +#, c-format +msgid "%s: invalid effective UID: %d\n" +msgstr "%s: ungültige effektive UID: %d\n" -#: utils/misc/guc.c:529 -msgid "Connections and Authentication" -msgstr "Verbindungen und Authentifizierung" +#: main/main.c:411 +#, c-format +msgid "%s: could not determine user name (GetUserName failed)\n" +msgstr "%s: konnte Benutzername nicht ermitteln (GetUserName fehlgeschlagen)\n" -#: utils/misc/guc.c:531 -msgid "Connections and Authentication / Connection Settings" -msgstr "Verbindungen und Authentifizierung / Verbindungseinstellungen" +#: parser/parse_coerce.c:932 parser/parse_coerce.c:962 +#: parser/parse_coerce.c:980 parser/parse_coerce.c:995 +#: parser/parse_expr.c:1672 parser/parse_expr.c:2134 parser/parse_target.c:832 +#, c-format +msgid "cannot cast type %s to %s" +msgstr "kann Typ %s nicht in Typ %s umwandeln" -#: utils/misc/guc.c:533 -msgid "Connections and Authentication / Security and Authentication" -msgstr "Verbindungen und Authentifizierung / Sicherheit und Authentifizierung" +#: parser/parse_coerce.c:965 +msgid "Input has too few columns." +msgstr "Eingabe hat zu wenige Spalten." -#: utils/misc/guc.c:535 -msgid "Resource Usage" -msgstr "Resourcenbenutzung" +#: parser/parse_coerce.c:983 +#, c-format +msgid "Cannot cast type %s to %s in column %d." +msgstr "Kann in Spalte %3$d Typ %1$s nicht in Typ %2$s umwandeln." + +#: parser/parse_coerce.c:998 +msgid "Input has too many columns." +msgstr "Eingabe hat zu viele Spalten." + +#. translator: first %s is name of a SQL construct, eg WHERE +#: parser/parse_coerce.c:1041 +#, c-format +msgid "argument of %s must be type boolean, not type %s" +msgstr "Argument von %s muss Typ boolean haben, nicht Typ %s" -#: utils/misc/guc.c:537 -msgid "Resource Usage / Memory" -msgstr "Resourcenbenutzung / Speicher" +#. 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 +#, c-format +msgid "argument of %s must not return a set" +msgstr "Argument von %s darf keine Ergebnismenge zurückgeben" -#: utils/misc/guc.c:539 -msgid "Resource Usage / Kernel Resources" -msgstr "Resourcenbenutzung / Kernelresourcen" +#. translator: first %s is name of a SQL construct, eg LIMIT +#: parser/parse_coerce.c:1088 +#, c-format +msgid "argument of %s must be type %s, not type %s" +msgstr "Argument von %s muss Typ %s haben, nicht Typ %s" -#: utils/misc/guc.c:541 -msgid "Resource Usage / Cost-Based Vacuum Delay" -msgstr "Resourcenbenutzung / Kostenbasierte Vacuum-Verzögerung" +#. translator: first %s is name of a SQL construct, eg CASE +#: parser/parse_coerce.c:1221 +#, c-format +msgid "%s types %s and %s cannot be matched" +msgstr "%s-Typen %s und %s passen nicht zusammen" -#: utils/misc/guc.c:543 -msgid "Resource Usage / Background Writer" -msgstr "Resourcenbenutzung / Background-Writer" +#. translator: first %s is name of a SQL construct, eg CASE +#: parser/parse_coerce.c:1288 +#, c-format +msgid "%s could not convert type %s to %s" +msgstr "%s konnte Typ %s nicht in %s umwandeln" -#: utils/misc/guc.c:545 -msgid "Resource Usage / Asynchronous Behavior" -msgstr "Resourcenbenutzung / Asynchrones Verhalten" +#: parser/parse_coerce.c:1539 +msgid "arguments declared \"anyelement\" are not all alike" +msgstr "als »anyelement« deklariert Argumente sind nicht alle gleich" -#: utils/misc/guc.c:547 -msgid "Write-Ahead Log" -msgstr "Write-Ahead-Log" +#: parser/parse_coerce.c:1559 +msgid "arguments declared \"anyarray\" are not all alike" +msgstr "als »anyarray« deklarierte Argumente sind nicht alle gleich" -#: utils/misc/guc.c:549 -msgid "Write-Ahead Log / Settings" -msgstr "Write-Ahead-Log / Einstellungen" +#: parser/parse_coerce.c:1588 parser/parse_coerce.c:1736 +#: parser/parse_coerce.c:1768 +#, c-format +msgid "argument declared \"anyarray\" is not an array but type %s" +msgstr "als »anyarray« deklariertes Argument ist kein Array sondern Typ %s" -#: utils/misc/guc.c:551 -msgid "Write-Ahead Log / Checkpoints" -msgstr "Write-Ahead-Log / Checkpoints" +#: parser/parse_coerce.c:1604 +msgid "" +"argument declared \"anyarray\" is not consistent with argument declared " +"\"anyelement\"" +msgstr "" +"als »anyarray« deklariertes Argument ist nicht mit als »anyelement« " +"deklariertem Argument konsistent" -#: utils/misc/guc.c:553 -msgid "Write-Ahead Log / Archiving" -msgstr "Write-Ahead-Log / Archivierung" +#: parser/parse_coerce.c:1622 +msgid "could not determine polymorphic type because input has type \"unknown\"" +msgstr "" +"konnte polymorphischen Typ nicht bestimmen, weil Eingabe Typ »unknown« hat" -#: utils/misc/guc.c:555 -msgid "Write-Ahead Log / Streaming Replication" -msgstr "Write-Ahead-Log / Streaming-Replikation" +#: parser/parse_coerce.c:1632 +#, c-format +msgid "type matched to anynonarray is an array type: %s" +msgstr "mit »anynonarray« gepaarter Typ ist ein Array-Typ: %s" -#: utils/misc/guc.c:557 -msgid "Write-Ahead Log / Standby Servers" -msgstr "Write-Ahead-Log / Standby-Server" +#: parser/parse_coerce.c:1642 +#, c-format +msgid "type matched to anyenum is not an enum type: %s" +msgstr "mit »anyenum« gepaarter Typ ist kein Enum-Typ: %s" -#: utils/misc/guc.c:559 -msgid "Query Tuning" -msgstr "Anfragetuning" +#: gram.y:916 +#, c-format +msgid "unrecognized role option \"%s\"" +msgstr "unbekannte Rollenoption »%s«" -#: utils/misc/guc.c:561 -msgid "Query Tuning / Planner Method Configuration" -msgstr "Anfragetuning / Planermethoden" +#: gram.y:1302 +msgid "current database cannot be changed" +msgstr "aktuelle Datenbank kann nicht geändert werden" -#: utils/misc/guc.c:563 -msgid "Query Tuning / Planner Cost Constants" -msgstr "Anfragetuning / Planerkosten" +#: gram.y:1420 gram.y:1435 +msgid "time zone interval must be HOUR or HOUR TO MINUTE" +msgstr "Zeitzonenintervall muss HOUR oder HOUR TO MINUTE sein" -#: utils/misc/guc.c:565 -msgid "Query Tuning / Genetic Query Optimizer" -msgstr "Anfragetuning / Genetischer Anfrageoptimierer" +#: gram.y:1440 gram.y:9246 gram.y:11759 +msgid "interval precision specified twice" +msgstr "Intervallpräzision doppelt angegeben" -#: utils/misc/guc.c:567 -msgid "Query Tuning / Other Planner Options" -msgstr "Anfragetuning / Andere Planeroptionen" +#: gram.y:3006 +msgid "CREATE TABLE AS cannot specify INTO" +msgstr "CREATE TABLE AS kann INTO nicht verwenden" -#: utils/misc/guc.c:569 -msgid "Reporting and Logging" -msgstr "Berichte und Logging" +#: gram.y:4059 +msgid "duplicate trigger events specified" +msgstr "mehrere Trigger-Ereignisse angegeben" -#: utils/misc/guc.c:571 -msgid "Reporting and Logging / Where to Log" -msgstr "Berichte und Logging / Wohin geloggt wird" +#: gram.y:4154 parser/parse_utilcmd.c:2513 parser/parse_utilcmd.c:2539 +msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" +msgstr "" +"Constraint, der als INITIALLY DEFERRED deklariert wurde, muss DEFERRABLE sein" -#: utils/misc/guc.c:573 -msgid "Reporting and Logging / When to Log" -msgstr "Berichte und Logging / Wann geloggt wird" +#: gram.y:4161 +msgid "conflicting constraint properties" +msgstr "widersprüchliche Constraint-Eigentschaften" -#: utils/misc/guc.c:575 -msgid "Reporting and Logging / What to Log" -msgstr "Berichte und Logging / Was geloggt wird" +#: gram.y:4222 +msgid "CREATE ASSERTION is not yet implemented" +msgstr "CREATE ASSERTION ist noch nicht implementiert" -#: utils/misc/guc.c:577 -msgid "Statistics" -msgstr "Statistiken" +#: gram.y:4238 +msgid "DROP ASSERTION is not yet implemented" +msgstr "DROP ASSERTION ist noch nicht implementiert" -#: utils/misc/guc.c:579 -msgid "Statistics / Monitoring" -msgstr "Statistiken / Überwachung" +#: gram.y:4574 +msgid "RECHECK is no longer required" +msgstr "RECHECK wird nicht mehr benötigt" -#: utils/misc/guc.c:581 -msgid "Statistics / Query and Index Statistics Collector" -msgstr "Statistiken / Statistiksammler für Anfragen und Indexe" +#: gram.y:4575 +msgid "Update your data type." +msgstr "Aktualisieren Sie Ihren Datentyp." -#: utils/misc/guc.c:583 -msgid "Autovacuum" -msgstr "Autovacuum" +#: gram.y:7298 gram.y:7304 gram.y:7310 +msgid "WITH CHECK OPTION is not implemented" +msgstr "WITH CHECK OPTION ist nicht implementiert" -#: utils/misc/guc.c:585 -msgid "Client Connection Defaults" -msgstr "Standardeinstellungen für Clientverbindungen" +#: gram.y:7986 +msgid "column name list not allowed in CREATE TABLE / AS EXECUTE" +msgstr "Spaltennamenliste nicht erlaubt in CREATE TABLE / EXECUTE" -#: utils/misc/guc.c:587 -msgid "Client Connection Defaults / Statement Behavior" -msgstr "Standardeinstellungen für Clientverbindungen / Anweisungsverhalten" +#: gram.y:8210 +msgid "number of columns does not match number of values" +msgstr "Anzahl der Spalten stimmt nicht mit der Anzahl der Werte überein" -#: utils/misc/guc.c:589 -msgid "Client Connection Defaults / Locale and Formatting" -msgstr "Standardeinstellungen für Clientverbindungen / Locale und Formatierung" +#: gram.y:8660 +msgid "LIMIT #,# syntax is not supported" +msgstr "Syntax LIMIT x,y wird nicht unterstützt" -#: utils/misc/guc.c:591 -msgid "Client Connection Defaults / Other Defaults" -msgstr "Standardeinstellungen für Clientverbindungen / Andere" +#: gram.y:8661 +msgid "Use separate LIMIT and OFFSET clauses." +msgstr "Verwenden Sie die getrennten Klauseln LIMIT und OFFSET." -#: utils/misc/guc.c:593 -msgid "Lock Management" -msgstr "Sperrenverwaltung" +#: gram.y:8879 +msgid "VALUES in FROM must have an alias" +msgstr "VALUES in FROM muss Aliasnamen erhalten" -#: utils/misc/guc.c:595 -msgid "Version and Platform Compatibility" -msgstr "Versions- und Plattformkompatibilität" +#: gram.y:8880 +msgid "For example, FROM (VALUES ...) [AS] foo." +msgstr "Zum Beispiel FROM (VALUES ...) [AS] xyz." -#: utils/misc/guc.c:597 -msgid "Version and Platform Compatibility / Previous PostgreSQL Versions" -msgstr "Versions- und Plattformkompatibilität / Frühere PostgreSQL-Versionen" +#: gram.y:8885 +msgid "subquery in FROM must have an alias" +msgstr "Unteranfrage in FROM muss Aliasnamen erhalten" -#: utils/misc/guc.c:599 -msgid "Version and Platform Compatibility / Other Platforms and Clients" -msgstr "Versions- und Plattformkompatibilität / Andere Plattformen und Clients" +#: gram.y:8886 +msgid "For example, FROM (SELECT ...) [AS] foo." +msgstr "Zum Beispiel FROM (SELECT ...) [AS] xyz." -#: utils/misc/guc.c:601 -msgid "Error Handling" -msgstr "Fehlerbehandlung" +#: gram.y:9372 +msgid "precision for type float must be at least 1 bit" +msgstr "Präzision von Typ float muss mindestens 1 Bit sein" -#: utils/misc/guc.c:603 -msgid "Preset Options" -msgstr "Voreingestellte Optionen" +#: gram.y:9381 +msgid "precision for type float must be less than 54 bits" +msgstr "Präzision von Typ float muss weniger als 54 Bits sein" -#: utils/misc/guc.c:605 -msgid "Customized Options" -msgstr "Angepasste Optionen" +#: gram.y:10095 +msgid "UNIQUE predicate is not yet implemented" +msgstr "UNIQUE-Prädikat ist noch nicht implementiert" -#: utils/misc/guc.c:607 -msgid "Developer Options" -msgstr "Entwickleroptionen" +#: gram.y:11026 +msgid "RANGE PRECEDING is only supported with UNBOUNDED" +msgstr "RANGE PRECEDING wird nur mit UNBOUNDED unterstützt" -#: utils/misc/guc.c:661 -msgid "Enables the planner's use of sequential-scan plans." -msgstr "Ermöglicht sequenzielle Scans in Planer." +#: gram.y:11032 +msgid "RANGE FOLLOWING is only supported with UNBOUNDED" +msgstr "RANGE FOLLOWING wird nur mit UNBOUNDED unterstützt" -#: utils/misc/guc.c:670 -msgid "Enables the planner's use of index-scan plans." -msgstr "Ermöglicht Index-Scans im Planer." +#: gram.y:11059 gram.y:11082 +msgid "frame start cannot be UNBOUNDED FOLLOWING" +msgstr "Frame-Beginn kann nicht UNBOUNDED FOLLOWING sein" -#: utils/misc/guc.c:679 -msgid "Enables the planner's use of bitmap-scan plans." -msgstr "Ermöglicht Bitmap-Scans im Planer." +#: gram.y:11064 +msgid "frame starting from following row cannot end with current row" +msgstr "" +"Frame der in der folgenden Zeile beginnt kann nicht in der aktuellen Zeile " +"enden" -#: utils/misc/guc.c:688 -msgid "Enables the planner's use of TID scan plans." -msgstr "Ermöglicht TID-Scans im Planer." +#: gram.y:11087 +msgid "frame end cannot be UNBOUNDED PRECEDING" +msgstr "Frame-Ende kann nicht UNBOUNDED PRECEDING sein" -#: utils/misc/guc.c:697 -msgid "Enables the planner's use of explicit sort steps." -msgstr "Ermöglicht Sortierschritte im Planer." +#: gram.y:11093 +msgid "frame starting from current row cannot have preceding rows" +msgstr "" +"Frame der in der aktuellen Zeile beginnt kann keine vorhergehenden Zeilen " +"haben" -#: utils/misc/guc.c:706 -msgid "Enables the planner's use of hashed aggregation plans." -msgstr "Ermöglicht Hash-Aggregierung im Planer." +#: gram.y:11100 +msgid "frame starting from following row cannot have preceding rows" +msgstr "" +"Frame der in der folgenden Zeile beginnt kann keine vorhergehenden Zeilen " +"haben" -#: utils/misc/guc.c:715 -msgid "Enables the planner's use of materialization." -msgstr "Ermöglicht Materialisierung im Planer." +#: gram.y:11734 +msgid "type modifier cannot have parameter name" +msgstr "Typmodifikator kann keinen Parameternamen haben" -#: utils/misc/guc.c:724 -msgid "Enables the planner's use of nested-loop join plans." -msgstr "Ermöglicht Nested-Loop-Verbunde im Planer." +#: gram.y:12343 gram.y:12551 +msgid "improper use of \"*\"" +msgstr "unzulässige Verwendung von »*«" -#: utils/misc/guc.c:733 -msgid "Enables the planner's use of merge join plans." -msgstr "Ermöglicht Merge-Verbunde im Planer." +#: gram.y:12482 +msgid "wrong number of parameters on left side of OVERLAPS expression" +msgstr "falsche Anzahl Parameter auf linker Seite von OVERLAPS-Ausdruck" -#: utils/misc/guc.c:742 -msgid "Enables the planner's use of hash join plans." -msgstr "Ermöglicht Hash-Verbunde im Planer." +#: gram.y:12489 +msgid "wrong number of parameters on right side of OVERLAPS expression" +msgstr "falsche Anzahl Parameter auf rechter Seite von OVERLAPS-Ausdruck" -#: utils/misc/guc.c:751 -msgid "Enables genetic query optimization." -msgstr "Ermöglicht genetische Anfrageoptimierung." +#: gram.y:12614 +msgid "multiple ORDER BY clauses not allowed" +msgstr "mehrere ORDER-BY-Klauseln sind nicht erlaubt" -#: utils/misc/guc.c:752 -msgid "This algorithm attempts to do planning without exhaustive searching." -msgstr "" -"Dieser Algorithmus versucht das Planen ohne erschöpfende Suche durchzuführen." +#: gram.y:12625 +msgid "multiple OFFSET clauses not allowed" +msgstr "mehrere OFFSET-Klauseln sind nicht erlaubt" -#: utils/misc/guc.c:762 -msgid "Shows whether the current user is a superuser." -msgstr "Zeigt, ob der aktuelle Benutzer ein Superuser ist." +#: gram.y:12634 +msgid "multiple LIMIT clauses not allowed" +msgstr "mehrere LIMIT-Klauseln sind nicht erlaubt" + +#: gram.y:12643 +msgid "multiple WITH clauses not allowed" +msgstr "mehrere WITH-Klauseln sind nicht erlaubt" -#: utils/misc/guc.c:772 -msgid "Enables advertising the server via Bonjour." -msgstr "Ermöglicht die Bekanntgabe des Servers mit Bonjour." +#: gram.y:12789 +msgid "OUT and INOUT arguments aren't allowed in TABLE functions" +msgstr "OUT- und INOUT-Argumente sind in TABLE-Funktionen nicht erlaubt" -#: utils/misc/guc.c:781 -msgid "Enables SSL connections." -msgstr "Ermöglicht SSL-Verbindungen." +#: gram.y:12890 +msgid "multiple COLLATE clauses not allowed" +msgstr "mehrere COLLATE-Klauseln sind nicht erlaubt" -#: utils/misc/guc.c:790 -msgid "Forces synchronization of updates to disk." -msgstr "Erzwingt die Synchronisierung von Aktualisierungen auf Festplatte." +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:12928 gram.y:12941 +#, c-format +msgid "%s constraints cannot be marked DEFERRABLE" +msgstr "%s-Constraints können nicht als DEFERRABLE markiert werden" -#: 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 "" -"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." +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:12954 +#, c-format +msgid "%s constraints cannot be marked NOT VALID" +msgstr "%s-Constraints können nicht als NOT VALID markiert werden" -#: utils/misc/guc.c:802 -msgid "Continues processing past damaged page headers." -msgstr "Setzt die Verarbeitung trotz kaputter Seitenköpfe fort." +#: parser/parse_utilcmd.c:182 +#, c-format +msgid "relation \"%s\" already exists, skipping" +msgstr "Relation »%s« existiert bereits, wird übersprungen" -#: 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 "" -"Wenn eine kaputter Seitenkopf entdeckt wird, gibt PostgreSQL normalerweise " -"ein Fehler aus und bricht die aktuelle Transaktion ab. Wenn " -"»zero_damaged_pages« an ist, dann wird eine Warnung ausgegeben, die kaputte " -"Seiten mit Nullen gefüllt und die Verarbeitung geht weiter. Dieses Verhalten " -"zerstört Daten, nämlich alle Zeilen in der kaputten Seite." +#: parser/parse_utilcmd.c:335 +msgid "array of serial is not implemented" +msgstr "Array aus Typ serial ist nicht implementiert" -#: utils/misc/guc.c:816 -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." +#: parser/parse_utilcmd.c:383 +#, c-format +msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\"" +msgstr "%s erstellt implizit eine Sequenz »%s« für die »serial«-Spalte »%s.%s«" -#: utils/misc/guc.c:817 +#: parser/parse_utilcmd.c:484 parser/parse_utilcmd.c:496 +#, c-format 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." +"conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\"" 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." +"widersprüchliche NULL/NOT NULL-Deklarationen für Spalte »%s« von Tabelle »%s«" -#: utils/misc/guc.c:829 -msgid "Runs the server silently." -msgstr "Startet den Server ohne Ausgabe." +#: 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«" -#: 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 "" -"Wenn dieser Parameter gesetzt ist, dann wird der Server automatisch im " -"Hintergrund gestartet und alle kontrollierenden Terminals werden abgetrennt." +#: parser/parse_utilcmd.c:1155 parser/parse_utilcmd.c:1231 +#, c-format +msgid "Index \"%s\" contains a whole-row table reference." +msgstr "Index »%s« enthält einen Verweis auf die ganze Zeile der Tabelle." -#: utils/misc/guc.c:839 -msgid "Logs each checkpoint." -msgstr "Schreibt jeden Checkpoint in den Log." +#: parser/parse_utilcmd.c:1496 +msgid "cannot use an existing index in CREATE TABLE" +msgstr "bestehender Index kann nicht in CREATE TABLE verwendet werden" -#: utils/misc/guc.c:848 -msgid "Logs each successful connection." -msgstr "Schreibt jede erfolgreiche Verbindung in den Log." +#: parser/parse_utilcmd.c:1516 +#, c-format +msgid "index \"%s\" is already associated with a constraint" +msgstr "Index »%s« gehört bereits zu einem Constraint" -#: utils/misc/guc.c:857 -msgid "Logs end of a session, including duration." -msgstr "Schreibt jedes Verbindungsende mit Sitzungszeit in den Log." +#: parser/parse_utilcmd.c:1524 +#, c-format +msgid "index \"%s\" does not belong to table \"%s\"" +msgstr "Index »%s« gehört nicht zu Tabelle »%s«" -#: utils/misc/guc.c:866 -msgid "Turns on various assertion checks." -msgstr "Schaltet diverse Assertion-Prüfungen ein." +#: parser/parse_utilcmd.c:1531 +#, c-format +msgid "index \"%s\" is not valid" +msgstr "Index »%s« ist nicht gültig" -#: utils/misc/guc.c:867 -msgid "This is a debugging aid." -msgstr "Das ist eine Debug-Hilfe." +#: parser/parse_utilcmd.c:1537 +#, c-format +msgid "\"%s\" is not a unique index" +msgstr "»%s« ist kein Unique Index" -#: utils/misc/guc.c:881 -msgid "Terminate session on any error." +#: parser/parse_utilcmd.c:1538 parser/parse_utilcmd.c:1545 +#: parser/parse_utilcmd.c:1552 parser/parse_utilcmd.c:1622 +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." -#: utils/misc/guc.c:890 -msgid "Reinitialize after backend crash." -msgstr "" +#: parser/parse_utilcmd.c:1544 +#, c-format +msgid "index \"%s\" contains expressions" +msgstr "Index »%s« enthält Ausdrücke" -#: utils/misc/guc.c:900 -msgid "Logs the duration of each completed SQL statement." -msgstr "Loggt die Dauer jeder abgeschlossenen SQL-Anweisung." +#: parser/parse_utilcmd.c:1551 +#, c-format +msgid "\"%s\" is a partial index" +msgstr "»%s« ist ein partieller Index" -#: utils/misc/guc.c:909 -msgid "Logs each query's parse tree." -msgstr "Scheibt den Parsebaum jeder Anfrage in den Log." +#: parser/parse_utilcmd.c:1563 +#, c-format +msgid "\"%s\" is a deferrable index" +msgstr "»%s« ist ein aufschiebbarer Index" -#: utils/misc/guc.c:918 -msgid "Logs each query's rewritten parse tree." -msgstr "Schreibt den umgeschriebenen Parsebaum jeder Anfrage in den Log." +#: parser/parse_utilcmd.c:1564 +msgid "Cannot create a non-deferrable constraint using a deferrable index." +msgstr "" +"Ein nicht aufschiebbarer Constraint kann nicht mit einem aufschiebbaren " +"Index erzeugt werden." -#: utils/misc/guc.c:927 -msgid "Logs each query's execution plan." -msgstr "Schreibt der Ausführungsplan jeder Anfrage in den Log." +#: parser/parse_utilcmd.c:1621 +#, c-format +msgid "index \"%s\" does not have default sorting behavior" +msgstr "Index »%s« hat nicht das Standardsortierverhalten" -#: utils/misc/guc.c:936 -msgid "Indents parse and plan tree displays." -msgstr "Rückt die Anzeige von Parse- und Planbäumen ein." +#: parser/parse_utilcmd.c:1766 +#, c-format +msgid "column \"%s\" appears twice in primary key constraint" +msgstr "Spalte »%s« erscheint zweimal im Primärschlüssel-Constraint" -#: utils/misc/guc.c:945 -msgid "Writes parser performance statistics to the server log." -msgstr "Schreibt Parser-Leistungsstatistiken in den Serverlog." +#: parser/parse_utilcmd.c:1772 +#, c-format +msgid "column \"%s\" appears twice in unique constraint" +msgstr "Spalte »%s« erscheint zweimal im Unique-Constraint" -#: utils/misc/guc.c:954 -msgid "Writes planner performance statistics to the server log." -msgstr "Schreibt Planer-Leistungsstatistiken in den Serverlog." +#: parser/parse_utilcmd.c:1932 +msgid "index expression cannot return a set" +msgstr "Indexausdruck kann keine Ergebnismenge zurückgeben" -#: utils/misc/guc.c:963 -msgid "Writes executor performance statistics to the server log." -msgstr "Schreibt Executor-Leistungsstatistiken in den Serverlog." +#: parser/parse_utilcmd.c:1942 +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" -#: utils/misc/guc.c:972 -msgid "Writes cumulative performance statistics to the server log." -msgstr "Schreibt Gesamtleistungsstatistiken in den Serverlog." +#: parser/parse_utilcmd.c:2039 +msgid "rule WHERE condition cannot contain references to other relations" +msgstr "" +"WHERE-Bedingung einer Regel kann keine Verweise auf andere Relationen " +"enthalten" -#: 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 "Keine Beschreibung verfügbar." +#: parser/parse_utilcmd.c:2045 +msgid "cannot use aggregate function in rule WHERE condition" +msgstr "" +"Aggregatfunktionen können nicht in der WHERE-Bedingung einer Regel verwendet " +"werden" -#: utils/misc/guc.c:994 -msgid "Collects information about executing commands." -msgstr "Sammelt Informationen über ausgeführte Befehle." +#: parser/parse_utilcmd.c:2049 +msgid "cannot use window function in rule WHERE condition" +msgstr "" +"Fensterfunktionen können nicht in der WHERE-Bedingung einer Regel verwendet " +"werden" -#: utils/misc/guc.c:995 +#: parser/parse_utilcmd.c:2121 msgid "" -"Enables the collection of information on the currently executing command of " -"each session, along with the time at which that command began execution." +"rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE " +"actions" 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." +"Regeln mit WHERE-Bedingungen können als Aktion nur SELECT, INSERT, UPDATE " +"oder DELETE haben" -#: utils/misc/guc.c:1005 -msgid "Collects statistics on database activity." -msgstr "Sammelt Statistiken über Datenbankaktivität." +#: parser/parse_utilcmd.c:2157 +msgid "ON SELECT rule cannot use OLD" +msgstr "ON-SELECT-Regel kann nicht OLD verwenden" -#: utils/misc/guc.c:1015 -msgid "Updates the process title to show the active SQL command." -msgstr "" -"Der Prozesstitel wird aktualisiert, um den aktuellen SQL-Befehl anzuzeigen." +#: parser/parse_utilcmd.c:2161 +msgid "ON SELECT rule cannot use NEW" +msgstr "ON-SELECT-Regel kann nicht NEW verwenden" -#: utils/misc/guc.c:1016 -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." +#: parser/parse_utilcmd.c:2170 +msgid "ON INSERT rule cannot use OLD" +msgstr "ON-INSERT-Regel kann nicht OLD verwenden" -#: utils/misc/guc.c:1025 -msgid "Starts the autovacuum subprocess." -msgstr "Startet den Autovacuum-Prozess." +#: parser/parse_utilcmd.c:2176 +msgid "ON DELETE rule cannot use NEW" +msgstr "ON-DELETE-Regel kann nicht NEW verwenden" -#: utils/misc/guc.c:1035 -msgid "Generates debugging output for LISTEN and NOTIFY." -msgstr "Erzeugt Debug-Ausgabe für LISTEN und NOTIFY." +#: parser/parse_utilcmd.c:2204 +msgid "cannot refer to OLD within WITH query" +msgstr "in WITH-Anfrage kann nicht auf OLD verweisen werden" -#: utils/misc/guc.c:1089 -msgid "Logs long lock waits." -msgstr "Schreibt Meldungen über langes Warten auf Sperren in den Log." +#: parser/parse_utilcmd.c:2211 +msgid "cannot refer to NEW within WITH query" +msgstr "in WITH-Anfrage kann nicht auf NEW verwiesen werden" -#: utils/misc/guc.c:1099 -msgid "Logs the host name in the connection logs." -msgstr "Schreibt den Hostnamen jeder Verbindung in den Log." +#: parser/parse_utilcmd.c:2485 +msgid "misplaced DEFERRABLE clause" +msgstr "falsch platzierte DEFERRABLE-Klausel" -#: 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 "" -"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." +#: parser/parse_utilcmd.c:2490 parser/parse_utilcmd.c:2505 +msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" +msgstr "mehrere DEFERRABLE/NOT DEFERRABLE-Klauseln sind nicht erlaubt" -#: utils/misc/guc.c:1111 -msgid "Causes subtables to be included by default in various commands." -msgstr "Schließt abgeleitete Tabellen in diverse Befehle automatisch ein." +#: parser/parse_utilcmd.c:2500 +msgid "misplaced NOT DEFERRABLE clause" +msgstr "falsch platzierte NOT DEFERRABLE-Klausel" -#: utils/misc/guc.c:1120 -msgid "Encrypt passwords." -msgstr "Verschlüsselt Passwörter." +#: parser/parse_utilcmd.c:2521 +msgid "misplaced INITIALLY DEFERRED clause" +msgstr "falsch platzierte INITIALLY DEFERRED-Klausel" -#: 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 "" -"Wenn in CREATE USER oder ALTER USER ein Passwort ohne ENCRYPTED oder " -"UNENCRYPTED angegeben ist, bestimmt dieser Parameter, ob das Passwort " -"verschlüsselt wird." +#: parser/parse_utilcmd.c:2526 parser/parse_utilcmd.c:2552 +msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" +msgstr "mehrere INITIALLY IMMEDIATE/DEFERRED-Klauseln sind nicht erlaubt" -#: utils/misc/guc.c:1131 -msgid "Treats \"expr=NULL\" as \"expr IS NULL\"." -msgstr "Behandelt »ausdruck=NULL« als »ausdruck IS NULL«." +#: parser/parse_utilcmd.c:2547 +msgid "misplaced INITIALLY IMMEDIATE clause" +msgstr "falsch platzierte INITIALLY IMMEDIATE-Klausel" -#: utils/misc/guc.c:1132 +#: parser/parse_utilcmd.c:2738 +#, c-format 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)." +"CREATE specifies a schema (%s) different from the one being created (%s)" 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." +"CREATE gibt ein Schema an (%s) welches nicht gleich dem zu erzeugenden " +"Schema ist (%s)" -#: utils/misc/guc.c:1144 -msgid "Enables per-database user names." -msgstr "Ermöglicht Datenbank-lokale Benutzernamen." +#: parser/parse_agg.c:131 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" -#: utils/misc/guc.c:1154 -msgid "This parameter doesn't do anything." -msgstr "Dieser Parameter macht nichts." +#: parser/parse_agg.c:133 +msgid "Aggregates with DISTINCT must be able to sort their inputs." +msgstr "Aggregatfunktionen mit DISTINCT müssen ihre Eingaben sortieren können." -#: 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." +#: parser/parse_agg.c:174 +msgid "aggregate function calls cannot contain window function calls" msgstr "" -"Er ist nur hier, damit es keine Probleme mit 7.3-Clients gibt, die SET " -"AUTOCOMMIT TO ON ausführen." +"Aufrufe von Aggregatfunktionen können keine Aufrufe von Fensterfunktionen " +"enthalten" + +#: parser/parse_agg.c:245 parser/parse_clause.c:1637 +#, c-format +msgid "window \"%s\" does not exist" +msgstr "Fenster »%s« existiert nicht" -#: utils/misc/guc.c:1164 -msgid "Sets the default read-only status of new transactions." -msgstr "" -"Setzt den Standardwert für die Read-Only-Einstellung einer neuen Transaktion." +#: parser/parse_agg.c:336 +msgid "aggregates not allowed in WHERE clause" +msgstr "Aggregatfunktionen sind nicht in der WHERE-Klausel erlaubt" -#: utils/misc/guc.c:1173 -msgid "Sets the current transaction's read-only status." -msgstr "Setzt die Read-Only-Einstellung der aktuellen Transaktion." +#: parser/parse_agg.c:342 +msgid "aggregates not allowed in JOIN conditions" +msgstr "Aggregatfunktionen sind nicht in JOIN-Bedingungen erlaubt" -#: utils/misc/guc.c:1183 -#, fuzzy -msgid "Sets the default deferrable status of new transactions." -msgstr "" -"Setzt den Standardwert für die Read-Only-Einstellung einer neuen Transaktion." +#: parser/parse_agg.c:363 +msgid "aggregates not allowed in GROUP BY clause" +msgstr "Aggregatfunktionen sind nicht in der GROUP-BY-Klausel erlaubt" -#: utils/misc/guc.c:1192 -msgid "" -"Whether to defer a read-only serializable transaction until it can be " -"executed with no possible serialization failures." +#: parser/parse_agg.c:433 +msgid "aggregate functions not allowed in a recursive query's recursive term" msgstr "" +"Aggregatfunktionen sind nicht im rekursiven Ausdruck einer rekursiven " +"Anfrage erlaubt" -#: utils/misc/guc.c:1202 -msgid "Check function bodies during CREATE FUNCTION." -msgstr "Prüft Funktionskörper bei der Ausführung von CREATE FUNCTION." +#: parser/parse_agg.c:458 +msgid "window functions not allowed in WHERE clause" +msgstr "Fensterfunktionen sind nicht in der WHERE-Klausel erlaubt" -#: utils/misc/guc.c:1211 -msgid "Enable input of NULL elements in arrays." -msgstr "Ermöglicht die Eingabe von NULL-Elementen in Arrays." +#: parser/parse_agg.c:464 +msgid "window functions not allowed in JOIN conditions" +msgstr "Fensterfunktionen sind nicht in JOIN-Bedingungen erlaubt" -#: 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 "" -"Wenn dies eingeschaltet ist, wird ein nicht gequotetes NULL in einem Array-" -"Eingabewert als NULL-Wert interpretiert, ansonsten als Zeichenkette." +#: parser/parse_agg.c:470 +msgid "window functions not allowed in HAVING clause" +msgstr "Fensterfunktionen sind nicht in der HAVING-Klausel erlaubt" -#: utils/misc/guc.c:1222 -msgid "Create new tables with OIDs by default." -msgstr "Erzeugt neue Tabellen standardmäßig mit OIDs." +#: parser/parse_agg.c:483 +msgid "window functions not allowed in GROUP BY clause" +msgstr "Fensterfunktionen sind nicht in der GROUP-BY-Klausel erlaubt" + +#: parser/parse_agg.c:502 parser/parse_agg.c:515 +msgid "window functions not allowed in window definition" +msgstr "Fensterfunktionen sind nicht in der Fensterdefinition erlaubt" -#: utils/misc/guc.c:1231 +#: parser/parse_agg.c:673 +#, c-format msgid "" -"Start a subprocess to capture stderr output and/or csvlogs into log files." +"column \"%s.%s\" must appear in the GROUP BY clause or be used in an " +"aggregate function" msgstr "" -"Startet einen Subprozess, um die Stderr-Ausgabe und/oder CSV-Logs in " -"Logdateien auszugeben." - -#: utils/misc/guc.c:1240 -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:1251 -msgid "Emit information about resource usage in sorting." -msgstr "Gibt Informationen über die Ressourcenverwendung beim Sortieren aus." +"Spalte »%s.%s« muss in der GROUP-BY-Klausel erscheinen oder in einer " +"Aggregatfunktion verwendet werden" -#: utils/misc/guc.c:1265 -msgid "Generate debugging output for synchronized scanning." -msgstr "Erzeugt Debug-Ausgabe für synchronisiertes Scannen." +#: parser/parse_agg.c:679 +#, c-format +msgid "subquery uses ungrouped column \"%s.%s\" from outer query" +msgstr "" +"Unteranfrage verwendet nicht gruppierte Spalte »%s.%s« aus äußerer Anfrage" -#: utils/misc/guc.c:1280 -msgid "Enable bounded sorting using heap sort." -msgstr "Ermöglicht Bounded Sorting mittels Heap-Sort." +#: parser/analyze.c:472 +msgid "INSERT ... SELECT cannot specify INTO" +msgstr "INSERT ... SELECT kann INTO nicht verwenden" -#: utils/misc/guc.c:1293 -msgid "Emit WAL-related debugging output." -msgstr "Gibt diverse Debug-Meldungen über WAL aus." +#: parser/analyze.c:565 parser/analyze.c:1071 +msgid "VALUES lists must all be the same length" +msgstr "VALUES-Listen müssen alle die gleiche Länge haben" -#: utils/misc/guc.c:1305 -msgid "Datetimes are integer based." -msgstr "Datum/Zeit verwendet intern ganze Zahlen." +#: parser/analyze.c:607 parser/analyze.c:1212 +msgid "VALUES must not contain table references" +msgstr "VALUES darf keine Tabellenverweise enthalten" -#: utils/misc/guc.c:1320 -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." +#: parser/analyze.c:621 parser/analyze.c:1226 +msgid "VALUES must not contain OLD or NEW references" +msgstr "VALUES darf keine Verweise auf OLD oder NEW enthalten" -#: utils/misc/guc.c:1330 -msgid "Warn about backslash escapes in ordinary string literals." -msgstr "Warnt bei Backslash-Escapes in normalen Zeichenkettenkonstanten." +#: parser/analyze.c:622 parser/analyze.c:1227 +msgid "Use SELECT ... UNION ALL ... instead." +msgstr "Verwenden Sie stattdessen SELECT ... UNION ALL ... ." -#: utils/misc/guc.c:1340 -msgid "Causes '...' strings to treat backslashes literally." -msgstr "" -"Bewirkt, dass Zeichenketten der Art '...' Backslashes als normales Zeichen " -"behandeln." +#: parser/analyze.c:726 parser/analyze.c:1239 +msgid "cannot use aggregate function in VALUES" +msgstr "Aggregatfunktionen können nicht in VALUES verwendet werden" -#: utils/misc/guc.c:1351 -msgid "Enable synchronized sequential scans." -msgstr "Ermöglicht synchronisierte sequenzielle Scans." +#: parser/analyze.c:732 parser/analyze.c:1245 +msgid "cannot use window function in VALUES" +msgstr "Fensterfunktionen können nicht in VALUES verwendet werden" -#: utils/misc/guc.c:1361 -msgid "Allows archiving of WAL files using archive_command." -msgstr "Erlaubt die Archivierung von WAL-Dateien mittels archive_command." +#: parser/analyze.c:766 +msgid "INSERT has more expressions than target columns" +msgstr "INSERT hat mehr Ausdrücke als Zielspalten" -#: utils/misc/guc.c:1371 -msgid "Allows connections and queries during recovery." -msgstr "Erlaubt Verbindungen und Anfragen während der Wiederherstellung." +#: parser/analyze.c:784 +msgid "INSERT has more target columns than expressions" +msgstr "INSERT hat mehr Zielspalten als Ausdrücke" -#: utils/misc/guc.c:1381 +#: parser/analyze.c:788 msgid "" -"Allows feedback from a hot standby primary that will avoid query conflicts." +"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?" -#: utils/misc/guc.c:1391 -msgid "Allows modifications of the structure of system tables." -msgstr "Erlaubt Änderungen an der Struktur von Systemtabellen." +#: parser/analyze.c:1085 +msgid "DEFAULT can only appear in a VALUES list within INSERT" +msgstr "DEFAULT kann nur in VALUES-Liste innerhalb von INSERT auftreten" -#: utils/misc/guc.c:1402 -msgid "Disables reading from system indexes." -msgstr "Schaltet das Lesen aus Systemindexen ab." +#: parser/analyze.c:1193 parser/analyze.c:2421 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES" +msgstr "SELECT FOR UPDATE/SHARE kann nicht auf VALUES angewendet werden" -#: 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 "" -"Das Aktualisieren der Indexe wird nicht verhindert, also ist die Verwendung " -"unbedenklich. Schlimmstenfalls wird alles langsamer." +#: parser/analyze.c:1456 +msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" +msgstr "ungültige ORDER-BY-Klausel mit UNION/INTERSECT/EXCEPT" -#: utils/misc/guc.c:1414 -msgid "" -"Enables backward compatibility mode for privilege checks on large objects." +#: parser/analyze.c:1457 +msgid "Only result column names can be used, not expressions or functions." msgstr "" -"Schaltet den rückwärtskompatiblen Modus für Privilegienprüfungen bei Large " -"Objects ein." +"Es können nur Ergebnisspaltennamen verwendet werden, keine Ausdrücke oder " +"Funktionen." -#: utils/misc/guc.c:1415 +#: parser/analyze.c:1458 msgid "" -"Skips privilege checks when reading or modifying large objects, for " -"compatibility with PostgreSQL releases prior to 9.0." +"Add the expression/function to every SELECT, or move the UNION into a FROM " +"clause." msgstr "" -"Überspringt Privilegienprüfungen beim Lesen oder Ändern von Large Objects, " -"zur Kompatibilität mit PostgreSQL-Versionen vor 9.0." +"Fügen Sie den Ausdrück/die Funktion jedem SELECT hinzu oder verlegen Sie die " +"UNION in eine FROM-Klausel." -#: utils/misc/guc.c:1425 -msgid "When generating SQL fragments, quote all identifiers." -msgstr "" +#: parser/analyze.c:1533 +msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" +msgstr "INTO ist nur im ersten SELECT von UNION/INTERSECT/EXCEPT erlaubt" -#: utils/misc/guc.c:1444 +#: parser/analyze.c:1593 msgid "" -"Forces a switch to the next xlog file if a new file has not been started " -"within N seconds." +"UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of " +"same query level" msgstr "" -"Erzwingt das Umschalten zur nächsten Transaktionslogdatei, wenn seit N " -"Sekunden keine neue Datei begonnen worden ist." +"Teilanweisung von UNION/INTERSECT/EXCEPT kann nicht auf andere Relationen " +"auf der selben Anfrageebene verweisen" -#: utils/misc/guc.c:1455 -msgid "Waits N seconds on connection startup after authentication." -msgstr "" -"Wartet beim Starten einer Verbindung N Sekunden nach der Authentifizierung." +#: parser/analyze.c:1681 +#, c-format +msgid "each %s query must have the same number of columns" +msgstr "jede %s-Anfrage muss die gleiche Anzahl Spalten haben" -#: utils/misc/guc.c:1456 utils/misc/guc.c:1905 -msgid "This allows attaching a debugger to the process." -msgstr "Das ermöglicht es, einen Debugger in den Prozess einzuhängen." +#: parser/analyze.c:1937 +msgid "CREATE TABLE AS specifies too many column names" +msgstr "CREATE TABLE AS gibt zu viele Spaltennamen an" -#: utils/misc/guc.c:1465 -msgid "Sets the default statistics target." -msgstr "Setzt das voreingestellte Statistikziel." +#: parser/analyze.c:1995 +msgid "cannot use aggregate function in UPDATE" +msgstr "Aggregatfunktionen können nicht in UPDATE verwendet werden" -#: 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 "" -"Diese Einstellung gilt für Tabellenspalten, für die kein spaltenspezifisches " -"Ziel mit ALTER TABLE SET STATISTICS gesetzt worden ist." +#: parser/analyze.c:2001 +msgid "cannot use window function in UPDATE" +msgstr "Fensterfunktionen können nicht in UPDATE verwendet werden" -#: utils/misc/guc.c:1475 -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." +#: parser/analyze.c:2110 +msgid "cannot use aggregate function in RETURNING" +msgstr "Aggregatfunktionen können nicht in RETURNING verwendet werden" -#: 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 "" -"Der Planer bindet Unteranfragen in die übergeordneten Anfragen ein, wenn die " -"daraus resultierende FROM-Liste nicht mehr als so viele Elemente haben würde." +#: parser/analyze.c:2116 +msgid "cannot use window function in RETURNING" +msgstr "Fensterfunktionen können nicht in RETURNING verwendet werden" -#: utils/misc/guc.c:1487 -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." +#: parser/analyze.c:2135 +msgid "RETURNING cannot contain references to other relations" +msgstr "RETURNING kann keine Verweise auf andere Relationen enthalten" -#: 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 "" -"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." +#: parser/analyze.c:2174 +msgid "cannot specify both SCROLL and NO SCROLL" +msgstr "SCROLL und NO SCROLL können nicht beide angegeben werden" -#: utils/misc/guc.c:1499 -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." +#: parser/analyze.c:2188 +msgid "DECLARE CURSOR cannot specify INTO" +msgstr "DECLARE CURSOR kann nicht INTO verwenden" -#: utils/misc/guc.c:1508 -msgid "GEQO: effort is used to set the default for other GEQO parameters." +#: parser/analyze.c:2200 +msgid "DECLARE CURSOR must not contain data-modifying statements in WITH" msgstr "" -"GEQO: wird für die Berechnung der Vorgabewerte anderer GEQO-Parameter " -"verwendet." +"DECLARE CURSOR darf keine datenmodifizierenden Anweisungen in WITH enthalten" -#: utils/misc/guc.c:1517 -msgid "GEQO: number of individuals in the population." -msgstr "GEQO: Anzahl der Individien in der Bevölkerung." +#: parser/analyze.c:2206 +msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE wird nicht unterstützt" -#: utils/misc/guc.c:1518 utils/misc/guc.c:1527 -msgid "Zero selects a suitable default value." -msgstr "Null wählt einen passenden Vorgabewert." +#: parser/analyze.c:2207 +msgid "Holdable cursors must be READ ONLY." +msgstr "Haltbare Cursor müssen READ ONLY sein." -#: utils/misc/guc.c:1526 -msgid "GEQO: number of iterations of the algorithm." -msgstr "GEQO: Anzahl der Iterationen im Algorithmus." +#: parser/analyze.c:2220 +msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE wird nicht unterstützt" -#: utils/misc/guc.c:1537 -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." +#: parser/analyze.c:2221 +msgid "Insensitive cursors must be READ ONLY." +msgstr "Insensitive Cursor müssen READ ONLY sein." + +#: parser/analyze.c:2274 +msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause" +msgstr "SELECT FOR UPDATE/SHARE ist nicht mit DISTINCT-Klausel erlaubt" + +#: parser/analyze.c:2278 +msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause" +msgstr "SELECT FOR UPDATE/SHARE ist nicht mit GROUP-BY-Klausel erlaubt" + +#: parser/analyze.c:2282 +msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause" +msgstr "SELECT FOR UPDATE/SHARE ist nicht mit HAVING-Klausel erlaubt" + +#: parser/analyze.c:2286 +msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions" +msgstr "SELECT FOR UPDATE/SHARE ist nicht mit Aggregatfunktionen erlaubt" + +#: parser/analyze.c:2290 +msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions" +msgstr "SELECT FOR UPDATE/SHARE ist nicht mit Fensterfunktionen erlaubt" -#: utils/misc/guc.c:1548 +#: parser/analyze.c:2294 msgid "" -"Sets the maximum delay before canceling queries when a hot standby server is " -"processing archived WAL data." +"SELECT FOR UPDATE/SHARE is not allowed with set-returning functions in the " +"target list" msgstr "" -"Setzt die maximale Verzögerung bevor Anfragen storniert werden, wenn ein Hot-" -"Standby-Server archivierte WAL-Daten verarbeitet." +"SELECT FOR UPDATE/SHARE ist nicht mit Funktionen mit Ergebnismenge in der " +"Targetliste erlaubt" -#: utils/misc/guc.c:1559 -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." +#: parser/analyze.c:2373 +msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names" +msgstr "SELECT FOR UPDATE/SHARE muss unqualifizierte Relationsnamen angeben" -#: utils/misc/guc.c:1570 -msgid "" -"Sets the maximum interval between WAL receiver status reports to the master." +#: parser/analyze.c:2390 +#, c-format +msgid "SELECT FOR UPDATE/SHARE cannot be used with foreign table \"%s\"" msgstr "" +"SELECT FOR UPDATE/SHARE kann nicht mit Fremdtabelle »%s« verwendet werden" -#: utils/misc/guc.c:1581 -msgid "Sets the maximum number of concurrent connections." -msgstr "Setzt die maximale Anzahl gleichzeitiger Verbindungen." - -#: utils/misc/guc.c:1591 -msgid "Sets the number of connection slots reserved for superusers." -msgstr "Setzt die Anzahl der für Superuser reservierten Verbindungen." +#: parser/analyze.c:2409 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join" +msgstr "SELECT FOR UPDATE/SHARE kann nicht auf einen Verbund angewendet werden" -#: utils/misc/guc.c:1605 -msgid "Sets the number of shared memory buffers used by the server." -msgstr "Setzt die Anzahl der vom Server verwendeten Shared-Memory-Puffer." +#: parser/analyze.c:2415 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function" +msgstr "SELECT FOR UPDATE/SHARE kann nicht auf eine Funktion angewendet werden" -#: utils/misc/guc.c:1616 -msgid "Sets the maximum number of temporary buffers used by each session." +#: parser/analyze.c:2427 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query" msgstr "" -"Setzt die maximale Anzahl der von jeder Sitzung verwendeten temporären " -"Puffer." - -#: utils/misc/guc.c:1627 -msgid "Sets the TCP port the server listens on." -msgstr "Setzt den TCP-Port, auf dem der Server auf Verbindungen wartet." +"SELECT FOR UPDATE/SHARE kann nicht auf eine WITH-Anfrage angewendet werden" -#: utils/misc/guc.c:1637 -msgid "Sets the access permissions of the Unix-domain socket." -msgstr "Setzt die Zugriffsrechte für die Unix-Domain-Socket." +#: parser/analyze.c:2441 +#, c-format +msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause" +msgstr "Relation »%s« in FOR UPDATE/SHARE nicht in der FROM-Klausel gefunden" -#: 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-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.)" +#: parser/parse_clause.c:421 +#, c-format +msgid "JOIN/ON clause refers to \"%s\", which is not part of JOIN" +msgstr "JOIN/ON-Klausel verweist auf »%s«, was nicht Teil des JOIN ist" -#: utils/misc/guc.c:1652 -#, fuzzy -msgid "Sets the file permissions for log files." -msgstr "Bestimmt das Dateinamenmuster für Logdateien." +#: parser/parse_clause.c:502 +msgid "subquery in FROM cannot have SELECT INTO" +msgstr "Unteranfrage in FROM kann kein SELECT INTO enthalten" -#: utils/misc/guc.c:1653 -#, fuzzy -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).)" +#: parser/parse_clause.c:524 +msgid "subquery in FROM cannot refer to other relations of same query level" 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:1666 -msgid "Sets the maximum memory to be used for query workspaces." -msgstr "Setzt die maximale Speichergröße für Anfrage-Arbeitsbereiche." +"Unteranfrage in FROM kann nicht auf andere Relationen auf der selben " +"Anfrageebene verweisen" -#: utils/misc/guc.c:1667 +#: parser/parse_clause.c:580 msgid "" -"This much memory can be used by each internal sort operation and hash table " -"before switching to temporary disk files." +"function expression in FROM cannot refer to other relations of same query " +"level" 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:1679 -msgid "Sets the maximum memory to be used for maintenance operations." -msgstr "Setzt die maximale Speichergröße für Wartungsoperationen." +"Funktionsausdruck in FROM kann nicht auf andere Relationen auf der selben " +"Anfrageebene verweisen" -#: utils/misc/guc.c:1680 -msgid "This includes operations such as VACUUM and CREATE INDEX." -msgstr "Das schließt Operationen wie VACUUM und CREATE INDEX ein." +#: parser/parse_clause.c:593 +msgid "cannot use aggregate function in function expression in FROM" +msgstr "" +"Aggregatfunktionen können nicht in Funktionsausdrücken in FROM verwendet " +"werden" -#: utils/misc/guc.c:1695 -msgid "Sets the maximum stack depth, in kilobytes." -msgstr "Setzt die maximale Stackgröße, in Kilobytes." +#: parser/parse_clause.c:600 +msgid "cannot use window function in function expression in FROM" +msgstr "" +"Fensterfunktionen können nicht in Funktionsausdrücken in FROM verwendet " +"werden" -#: utils/misc/guc.c:1706 -msgid "Vacuum cost for a page found in the buffer cache." -msgstr "Vacuum-Kosten für eine im Puffer-Cache gefundene Seite." +#: parser/parse_clause.c:877 +#, c-format +msgid "column name \"%s\" appears more than once in USING clause" +msgstr "Spaltenname »%s« erscheint mehrmals in der USING-Klausel" -#: utils/misc/guc.c:1716 -msgid "Vacuum cost for a page not found in the buffer cache." -msgstr "Vacuum-Kosten für eine nicht im Puffer-Cache gefundene Seite." +#: parser/parse_clause.c:892 +#, c-format +msgid "common column name \"%s\" appears more than once in left table" +msgstr "gemeinsamer Spaltenname »%s« erscheint mehrmals in der linken Tabelle" -#: utils/misc/guc.c:1726 -msgid "Vacuum cost for a page dirtied by vacuum." -msgstr "Vacuum-Kosten für eine durch Vacuum schmutzig gemachte Seite." +#: parser/parse_clause.c:901 +#, 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" -#: utils/misc/guc.c:1736 -msgid "Vacuum cost amount available before napping." -msgstr "Verfügbare Vacuum-Kosten vor Nickerchen." +#: parser/parse_clause.c:915 +#, c-format +msgid "common column name \"%s\" appears more than once in right table" +msgstr "gemeinsamer Spaltenname »%s« erscheint mehrmals in der rechten Tabelle" -#: utils/misc/guc.c:1746 -msgid "Vacuum cost delay in milliseconds." -msgstr "Vacuum-Kosten-Verzögerung in Millisekunden." +#: parser/parse_clause.c:924 +#, 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" -#: utils/misc/guc.c:1757 -msgid "Vacuum cost delay in milliseconds, for autovacuum." -msgstr "Vacuum-Kosten-Verzögerung in Millisekunden, für Autovacuum." +#: parser/parse_clause.c:981 +#, c-format +msgid "column alias list for \"%s\" has too many entries" +msgstr "Spaltenaliasliste für »%s« hat zu viele Einträge" -#: utils/misc/guc.c:1768 -msgid "Vacuum cost amount available before napping, for autovacuum." -msgstr "Verfügbare Vacuum-Kosten vor Nickerchen, für Autovacuum." +#. 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 "Argument von %s darf keine Variablen enthalten" -#: utils/misc/guc.c:1778 -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." +#. 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 "Argument von %s darf keine Aggregatfunktionen enthalten" -#: utils/misc/guc.c:1791 -msgid "Sets the maximum number of simultaneously prepared transactions." -msgstr "" -"Setzt die maximale Anzahl von gleichzeitig vorbereiteten Transaktionen." +#. 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 "Argument von %s darf keine Fensterfunktionen enthalten" -#: utils/misc/guc.c:1824 -msgid "Sets the maximum allowed duration of any statement." -msgstr "Setzt die maximal erlaubte Dauer jeder Anweisung." +#. 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« ist nicht eindeutig" -#: utils/misc/guc.c:1825 -msgid "A value of 0 turns off the timeout." -msgstr "Der Wert 0 schaltet die Zeitprüfung aus." +#. 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 "Konstante in %s ist keine ganze Zahl" -#: utils/misc/guc.c:1835 -msgid "Minimum age at which VACUUM should freeze a table row." -msgstr "Mindestalter, bei dem VACUUM eine Tabellenzeile einfrieren soll." +#. 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 Position %d ist nicht in der Select-Liste" -#: utils/misc/guc.c:1845 -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." +#: parser/parse_clause.c:1625 +#, c-format +msgid "window \"%s\" is already defined" +msgstr "Fenster »%s« ist bereits definiert" -#: utils/misc/guc.c:1855 -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." +#: parser/parse_clause.c:1684 +#, c-format +msgid "cannot override PARTITION BY clause of window \"%s\"" +msgstr "PARTITION-BY-Klausel von Fenster »%s« kann nicht aufgehoben werden" -#: utils/misc/guc.c:1868 -msgid "Sets the maximum number of locks per transaction." -msgstr "Setzt die maximale Anzahl Sperren pro Transaktion." +#: parser/parse_clause.c:1696 +#, c-format +msgid "cannot override ORDER BY clause of window \"%s\"" +msgstr "ORDER-BY-Klausel von Fenster »%s« kann nicht aufgehoben werden" -#: 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 "" -"Die globale Sperrentabelle wird mit der Annahme angelegt, das höchstens " -"max_locks_per_transaction * max_connections verschiedene Objekte " -"gleichzeitig gesperrt werden müssen." +#: parser/parse_clause.c:1726 parser/parse_clause.c:1732 +#, c-format +msgid "cannot copy window \"%s\" because it has a frame clause" +msgstr "kann Fenster »%s« nicht kopieren, weil es eine Frame-Klausel hat" -#: utils/misc/guc.c:1880 -#, fuzzy -msgid "Sets the maximum number of predicate locks per transaction." -msgstr "Setzt die maximale Anzahl Sperren pro Transaktion." +#: parser/parse_clause.c:1734 +msgid "Omit the parentheses in this OVER clause." +msgstr "Lassen Sie die Klammern in dieser OVER-Klausel weg." -#: utils/misc/guc.c:1881 -#, fuzzy +#: parser/parse_clause.c:1800 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 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:1892 -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:1904 -msgid "Waits N seconds on connection startup before authentication." +"in an aggregate with DISTINCT, ORDER BY expressions must appear in argument " +"list" msgstr "" -"Wartet beim Starten einer Verbindung N Sekunden vor der Authentifizierung." +"in einer Aggregatfunktion mit DISTINCT müssen ORDER-BY-Ausdrücke in der " +"Argumentliste erscheinen" -#: utils/misc/guc.c:1915 -msgid "Sets the number of WAL files held for standby servers." +#: parser/parse_clause.c:1801 +msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list" msgstr "" -"Setzt die maximale Anzahl der für Standby-Server vorgehaltenen WAL-Dateien." +"bei SELECT DISTINCT müssen ORDER-BY-Ausdrücke in der Select-Liste erscheinen" -#: utils/misc/guc.c:1925 -msgid "" -"Sets the maximum distance in log segments between automatic WAL checkpoints." +#: parser/parse_clause.c:1887 parser/parse_clause.c:1919 +msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions" msgstr "" -"Setzt die maximale Anzahl Logsegmente zwischen automatischen WAL-Checkpoints." +"Ausdrücke in SELECT DISTINCT ON müssen mit den ersten Ausdrücken in ORDER BY " +"übereinstimmen" -#: utils/misc/guc.c:1935 -msgid "Sets the maximum time between automatic WAL checkpoints." -msgstr "Setzt die maximale Zeit zwischen automatischen WAL-Checkpoints." +#: parser/parse_clause.c:2041 +#, c-format +msgid "operator %s is not a valid ordering operator" +msgstr "Operator %s ist kein gültiger Sortieroperator" -#: utils/misc/guc.c:1946 +#: parser/parse_clause.c:2043 msgid "" -"Enables warnings if checkpoint segments are filled more frequently than this." +"Ordering operators must be \"<\" or \">\" members of btree operator families." msgstr "" -"Schreibt eine Logmeldung, wenn Checkpoint-Segmente häufiger als dieser Wert " -"gefüllt werden." +"Sortieroperatoren müssen die Mitglieder »<« oder »>« einer »btree«-" +"Operatorfamilie sein." -#: 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 "" -"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." +#: parser/parse_expr.c:366 parser/parse_expr.c:759 +#, c-format +msgid "column %s.%s does not exist" +msgstr "Spalte %s.%s existiert nicht" -#: utils/misc/guc.c:1960 -msgid "Sets the number of disk-page buffers in shared memory for WAL." -msgstr "Setzt die Anzahl Diskseitenpuffer für WAL im Shared Memory." +#: parser/parse_expr.c:378 +#, c-format +msgid "column \"%s\" not found in data type %s" +msgstr "Spalte »%s« nicht gefunden im Datentyp %s" -#: utils/misc/guc.c:1971 -msgid "WAL writer sleep time between WAL flushes." -msgstr "Schlafzeit zwischen WAL-Flush-Operationen des WAL-Writers." +#: parser/parse_expr.c:384 +#, c-format +msgid "could not identify column \"%s\" in record data type" +msgstr "konnte Spalte »%s« im Record-Datentyp nicht identifizieren" -#: utils/misc/guc.c:1983 -msgid "Sets the maximum number of simultaneously running WAL sender processes." -msgstr "Setzt die maximale Anzahl gleichzeitig laufender WAL-Sender-Prozesse." +#: parser/parse_expr.c:390 +#, 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" -#: utils/misc/guc.c:1993 -msgid "WAL sender sleep time between WAL replications." -msgstr "WAL-Sender-Schlafzeit zwischen WAL-Replikationen." +#: parser/parse_expr.c:420 parser/parse_target.c:618 +msgid "row expansion via \"*\" is not supported here" +msgstr "Zeilenexpansion mit »*« wird hier nicht unterstützt" -#: utils/misc/guc.c:2004 -#, fuzzy -msgid "Sets the maximum time to wait for WAL replication." -msgstr "Setzt die maximale Zeit zwischen automatischen WAL-Checkpoints." +#: parser/parse_expr.c:743 parser/parse_target.c:1067 +#: parser/parse_relation.c:479 parser/parse_relation.c:559 +#, c-format +msgid "column reference \"%s\" is ambiguous" +msgstr "Spaltenverweis »%s« ist nicht eindeutig" -#: utils/misc/guc.c:2015 -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." +#: 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 +#, c-format +msgid "there is no parameter $%d" +msgstr "es gibt keinen Parameter $%d" -#: utils/misc/guc.c:2026 -msgid "" -"Sets the minimum concurrent open transactions before performing commit_delay." -msgstr "" -"Setzt die minimale Anzahl gleichzeitig offener Transaktionen bevor " -"»commit_delay« angewendet wird." +#: parser/parse_expr.c:1023 +msgid "NULLIF requires = operator to yield boolean" +msgstr "NULLIF erfordert, dass Operator = boolean ergibt" -#: utils/misc/guc.c:2037 -msgid "Sets the number of digits displayed for floating-point values." -msgstr "Setzt die Anzahl ausgegebener Ziffern für Fließkommawerte." +#: parser/parse_expr.c:1416 +msgid "subquery cannot have SELECT INTO" +msgstr "Unteranfrage kann kein SELECT INTO enthalten" -#: 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 "" -"Diese Einstellung betrifft real, double precision und geometrische " -"Datentypen. Der Parameterwert wird zur Standardziffernanzahl (FLT_DIG bzw. " -"DBL_DIG) hinzuaddiert." +#: parser/parse_expr.c:1444 +msgid "subquery must return a column" +msgstr "Unteranfrage muss eine Spalte zurückgeben" -#: utils/misc/guc.c:2049 -msgid "Sets the minimum execution time above which statements will be logged." -msgstr "" -"Setzt die minimale Ausführungszeit, über der Anweisungen geloggt werden." +#: parser/parse_expr.c:1451 +msgid "subquery must return only one column" +msgstr "Unteranfrage darf nur eine Spalte zurückgeben" -#: utils/misc/guc.c:2051 -msgid "Zero prints all queries. -1 turns this feature off." -msgstr "Null zeigt alle Anfragen. -1 schaltet dieses Feature aus." +#: parser/parse_expr.c:1511 +msgid "subquery has too many columns" +msgstr "Unteranfrage hat zu viele Spalten" -#: utils/misc/guc.c:2061 -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." +#: parser/parse_expr.c:1516 +msgid "subquery has too few columns" +msgstr "Unteranfrage hat zu wenige Spalten" -#: utils/misc/guc.c:2063 -msgid "Zero prints all actions. -1 turns autovacuum logging off." +#: parser/parse_expr.c:1612 +msgid "cannot determine type of empty array" +msgstr "kann Typ eines leeren Arrays nicht bestimmen" + +#: parser/parse_expr.c:1613 +msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]." msgstr "" -"Null gibt alls Aktionen aus. -1 schaltet die Log-Aufzeichnung über " -"Autovacuum aus." +"Wandeln Sie ausdrücklich in den gewünschten Typ um, zum Beispiel ARRAY[]::" +"integer[]." -#: utils/misc/guc.c:2073 -msgid "Background writer sleep time between rounds." -msgstr "Schlafzeit zwischen Durchläufen des Background-Writers." +#: parser/parse_expr.c:1627 +#, c-format +msgid "could not find element type for data type %s" +msgstr "konnte Elementtyp für Datentyp %s nicht finden" -#: utils/misc/guc.c:2084 -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." +#: parser/parse_expr.c:1841 +msgid "unnamed XML attribute value must be a column reference" +msgstr "unbenannter XML-Attributwert muss ein Spaltenverweis sein" -#: utils/misc/guc.c:2100 -msgid "" -"Number of simultaneous requests that can be handled efficiently by the disk " -"subsystem." -msgstr "" -"Anzahl simultaner Anfragen, die das Festplattensubsystem effizient " -"bearbeiten kann." +#: parser/parse_expr.c:1842 +msgid "unnamed XML element value must be a column reference" +msgstr "unbenannter XML-Elementwert muss ein Spaltenverweis sein" -#: utils/misc/guc.c:2101 -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." +#: parser/parse_expr.c:1857 +#, c-format +msgid "XML attribute name \"%s\" appears more than once" +msgstr "XML-Attributname »%s« einscheint mehrmals" -#: utils/misc/guc.c:2114 -msgid "Automatic log file rotation will occur after N minutes." -msgstr "Automatische Rotation der Logdateien geschieht nach N Minuten." +#: parser/parse_expr.c:1964 +#, c-format +msgid "cannot cast XMLSERIALIZE result to %s" +msgstr "kann das Ergebnis von XMLSERIALIZE nicht in Typ %s umwandeln" -#: utils/misc/guc.c:2125 -msgid "Automatic log file rotation will occur after N kilobytes." -msgstr "Automatische Rotation der Logdateien geschieht nach N Kilobytes." +#: parser/parse_expr.c:2207 parser/parse_expr.c:2407 +msgid "unequal number of entries in row expressions" +msgstr "ungleiche Anzahl Einträge in Zeilenausdrücken" -#: utils/misc/guc.c:2136 -msgid "Shows the maximum number of function arguments." -msgstr "Setzt die maximale Anzahl von Funktionsargumenten." +#: parser/parse_expr.c:2217 +msgid "cannot compare rows of zero length" +msgstr "kann Zeilen mit Länge null nicht vergleichen" -#: utils/misc/guc.c:2147 -msgid "Shows the maximum number of index keys." -msgstr "Zeigt die maximale Anzahl von Indexschlüsseln." +#: parser/parse_expr.c:2242 +#, c-format +msgid "row comparison operator must yield type boolean, not type %s" +msgstr "Zeilenvergleichsoperator muss Typ boolean zurückgeben, nicht Typ %s" -#: utils/misc/guc.c:2158 -msgid "Shows the maximum identifier length." -msgstr "Zeigt die maximale Länge von Bezeichnern." +#: parser/parse_expr.c:2249 +msgid "row comparison operator must not return a set" +msgstr "Zeilenvergleichsoperator darf keine Ergebnismenge zurückgeben" -#: utils/misc/guc.c:2169 -msgid "Shows the size of a disk block." -msgstr "Zeigt die Größe eines Diskblocks." +#: parser/parse_expr.c:2308 parser/parse_expr.c:2353 +#, c-format +msgid "could not determine interpretation of row comparison operator %s" +msgstr "konnte Interpretation des Zeilenvergleichsoperators %s nicht bestimmen" -#: utils/misc/guc.c:2180 -msgid "Shows the number of pages per disk file." -msgstr "Zeigt die Anzahl Seiten pro Diskdatei." +#: parser/parse_expr.c:2310 +msgid "" +"Row comparison operators must be associated with btree operator families." +msgstr "" +"Zeilenvergleichsoperatoren müssen einer »btree«-Operatorfamilie zugeordnet " +"sein." -#: utils/misc/guc.c:2191 -msgid "Shows the block size in the write ahead log." -msgstr "Zeigt die Blockgröße im Write-Ahead-Log." +#: parser/parse_expr.c:2355 +msgid "There are multiple equally-plausible candidates." +msgstr "Es gibt mehrere gleichermaßen plausible Kandidaten." -#: utils/misc/guc.c:2202 -msgid "Shows the number of pages per write ahead log segment." -msgstr "Zeit die Anzahl Seiten pro Write-Ahead-Log-Segment." +#: parser/parse_expr.c:2447 +msgid "IS DISTINCT FROM requires = operator to yield boolean" +msgstr "IS DISTINCT FROM erfordert, dass Operator = boolean ergibt" -#: utils/misc/guc.c:2215 -msgid "Time to sleep between autovacuum runs." -msgstr "Wartezeit zwischen Autovacuum-Durchläufen." +#: parser/parse_target.c:383 parser/parse_target.c:671 +#, c-format +msgid "cannot assign to system column \"%s\"" +msgstr "kann Systemspalte »%s« keinen Wert zuweisen" -#: utils/misc/guc.c:2225 -msgid "Minimum number of tuple updates or deletes prior to vacuum." -msgstr "Mindestanzahl an geänderten oder gelöschten Tupeln vor einem Vacuum." +#: parser/parse_target.c:411 +msgid "cannot set an array element to DEFAULT" +msgstr "kann Arrayelement nicht auf DEFAULT setzen" -#: utils/misc/guc.c:2234 -msgid "Minimum number of tuple inserts, updates or deletes prior to analyze." -msgstr "" -"Mindestanzahl an Einfüge-, Änderungs- oder Löschoperationen von einem " -"Analyze." +#: parser/parse_target.c:416 +msgid "cannot set a subfield to DEFAULT" +msgstr "kann Subfeld nicht auf DEFAULT setzen" + +#: parser/parse_target.c:485 +#, c-format +msgid "column \"%s\" is of type %s but expression is of type %s" +msgstr "Spalte »%s« hat Typ %s, aber der Ausdruck hat Typ %s" -#: utils/misc/guc.c:2244 +#: parser/parse_target.c:655 +#, c-format msgid "" -"Age at which to autovacuum a table to prevent transaction ID wraparound." +"cannot assign to field \"%s\" of column \"%s\" because its type %s is not a " +"composite type" msgstr "" -"Alter, nach dem eine Tabelle automatisch gevacuumt wird, um " -"Transaktionsnummernüberlauf zu verhindern." +"kann Feld »%s« in Spalte »%s« nicht setzen, weil ihr Typ %s kein " +"zusammengesetzter Typ ist" -#: utils/misc/guc.c:2255 +#: parser/parse_target.c:664 +#, c-format msgid "" -"Sets the maximum number of simultaneously running autovacuum worker " -"processes." +"cannot assign to field \"%s\" of column \"%s\" because there is no such " +"column in data type %s" msgstr "" -"Setzt die maximale Anzahl gleichzeitig laufender Autovacuum-Worker-Prozesse." +"kann Feld »%s« in Spalte »%s« nicht setzen, weil es keine solche Spalte in " +"Datentyp %s gibt" -#: utils/misc/guc.c:2265 -msgid "Time between issuing TCP keepalives." -msgstr "Zeit zwischen TCP-Keepalive-Sendungen." +#: parser/parse_target.c:731 +#, c-format +msgid "" +"array assignment to \"%s\" requires type %s but expression is of type %s" +msgstr "Wertzuweisung für »%s« erfordert Typ %s, aber Ausdruck hat Typ %s" -#: utils/misc/guc.c:2266 utils/misc/guc.c:2277 -msgid "A value of 0 uses the system default." -msgstr "Der Wert 0 verwendet die Systemvoreinstellung." +#: parser/parse_target.c:741 +#, c-format +msgid "subfield \"%s\" is of type %s but expression is of type %s" +msgstr "Subfeld »%s« hat Typ %s, aber der Ausdruck hat Typ %s" -#: utils/misc/guc.c:2276 -msgid "Time between TCP keepalive retransmits." -msgstr "Zeit zwischen TCP-Keepalive-Neuübertragungen." +#: parser/parse_target.c:1129 +msgid "SELECT * with no tables specified is not valid" +msgstr "SELECT * ist nicht gültig, wenn keine Tabellen angegeben sind" -#: utils/misc/guc.c:2287 -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." +#: parser/parse_param.c:215 +#, c-format +msgid "inconsistent types deduced for parameter $%d" +msgstr "inkonsistente Typen für Parameter $%d ermittelt" -#: utils/misc/guc.c:2298 -msgid "Maximum number of TCP keepalive retransmits." -msgstr "Maximale Anzahl an TCP-Keepalive-Neuübertragungen." +#: parser/parse_node.c:83 +#, c-format +msgid "target lists can have at most %d entries" +msgstr "Targetlisten können höchstens %d Einträge haben" -#: 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 "" -"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." +#: parser/parse_node.c:252 +#, c-format +msgid "cannot subscript type %s because it is not an array" +msgstr "kann aus Typ %s kein Element auswählen, weil er kein Array ist" -#: utils/misc/guc.c:2310 -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." +#: parser/parse_node.c:355 parser/parse_node.c:382 +msgid "array subscript must have type integer" +msgstr "Arrayindex muss Typ integer haben" + +#: parser/parse_node.c:406 +#, c-format +msgid "array assignment requires type %s but expression is of type %s" +msgstr "Arrayzuweisung erfordert Typ %s, aber Ausdruck hat Typ %s" -#: utils/misc/guc.c:2321 -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." +#: parser/parse_collate.c:214 parser/parse_collate.c:538 +#, c-format +msgid "collation mismatch between implicit collations \"%s\" and \"%s\"" +msgstr "implizite Sortierfolgen »%s« und »%s« stimmen nicht überein" -#: utils/misc/guc.c:2322 +#: parser/parse_collate.c:217 parser/parse_collate.c:541 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." +"You can choose the collation by applying the COLLATE clause to one or both " +"expressions." 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." +"Sie können die Sortierfolge auswählen, indem Sie die COLLATE-Klausel auf " +"einen oder beide Ausdrücke anwenden." -#: utils/misc/guc.c:2335 -msgid "Shows the server version as an integer." -msgstr "Zeigt die Serverversion als Zahl." +#: parser/parse_collate.c:769 +#, c-format +msgid "collation mismatch between explicit collations \"%s\" and \"%s\"" +msgstr "explizite Sortierfolgen »%s« und »%s« stimmen nicht überein" -#: utils/misc/guc.c:2346 -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." +#: parser/parse_relation.c:148 +#, c-format +msgid "table reference \"%s\" is ambiguous" +msgstr "Tabellenbezug »%s« ist nicht eindeutig" -#: utils/misc/guc.c:2347 -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)." +#: parser/parse_relation.c:184 +#, c-format +msgid "table reference %u is ambiguous" +msgstr "Tabellenbezug %u ist nicht eindeutig" -#: utils/misc/guc.c:2357 -msgid "Sets the size reserved for pg_stat_activity.current_query, in bytes." -msgstr "" -"Setzt die für pg_stat_activity.current_query reservierte Größe, in Bytes." +#: parser/parse_relation.c:344 +#, c-format +msgid "table name \"%s\" specified more than once" +msgstr "Tabellenname »%s« mehrmals angegeben" -#: utils/misc/guc.c:2376 -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." +#: parser/parse_relation.c:763 parser/parse_relation.c:1054 +#: parser/parse_relation.c:1441 +#, c-format +msgid "table \"%s\" has %d columns available but %d columns specified" +msgstr "Tabelle »%s« hat %d Spalten, aber %d Spalten wurden angegeben" + +#: parser/parse_relation.c:793 +#, c-format +msgid "too many column aliases specified for function %s" +msgstr "zu viele Spaltenaliasnamen für Funktion %s angegeben" -#: utils/misc/guc.c:2386 +#: parser/parse_relation.c:859 +#, c-format msgid "" -"Sets the planner's estimate of the cost of a nonsequentially fetched disk " -"page." +"There is a WITH item named \"%s\", but it cannot be referenced from this " +"part of the query." msgstr "" -"Setzt den vom Planer geschätzten Aufwand, um eine nichtsequenzielle " -"Diskseite zu lesen." +"Es gibt ein WITH-Element namens »%s«, aber darauf kann aus diesem Teil der " +"Anfrage kein Bezug genommen werden." -#: utils/misc/guc.c:2396 -msgid "Sets the planner's estimate of the cost of processing each tuple (row)." +#: parser/parse_relation.c:861 +msgid "" +"Use WITH RECURSIVE, or re-order the WITH items to remove forward references." msgstr "" -"Setzt den vom Planer geschätzten Aufwand für die Verarbeitung einer Zeile." +"Verwenden Sie WITH RECURSIVE oder sortieren Sie die WITH-Ausdrücke um, um " +"Vorwärtsreferenzen zu entfernen." -#: utils/misc/guc.c:2406 +#: parser/parse_relation.c:1134 msgid "" -"Sets the planner's estimate of the cost of processing each index entry " -"during an index scan." +"a column definition list is only allowed for functions returning \"record\"" msgstr "" -"Setzt den vom Planer geschätzten Aufwand für die Verarbeitung eines " -"Indexeintrags während eines Index-Scans." +"eine Spaltendefinitionsliste ist nur erlaubt bei Funktionen, die »record« " +"zurückgeben" -#: utils/misc/guc.c:2416 -msgid "" -"Sets the planner's estimate of the cost of processing each operator or " -"function call." +#: parser/parse_relation.c:1142 +msgid "a column definition list is required for functions returning \"record\"" msgstr "" -"Setzt den vom Planer geschätzten Aufwand für die Verarbeitung eines " -"Operators oder Funktionsaufrufs." +"eine Spaltendefinitionsliste ist erforderlich bei Funktionen, die »record« " +"zurückgeben" -#: utils/misc/guc.c:2427 -msgid "" -"Sets the planner's estimate of the fraction of a cursor's rows that will be " -"retrieved." +#: parser/parse_relation.c:1193 +#, 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:1267 +#, c-format +msgid "VALUES lists \"%s\" have %d columns available but %d columns specified" msgstr "" -"Setzt den vom Planer geschätzten Anteil der Cursor-Zeilen, die ausgelesen " -"werden werden." +"VALUES-Liste »%s« hat %d Spalten verfügbar, aber %d Spalten wurden angegeben" -#: utils/misc/guc.c:2438 -msgid "GEQO: selective pressure within the population." -msgstr "GEQO: selektiver Auswahldruck in der Bevölkerung." +#: parser/parse_relation.c:1323 +#, c-format +msgid "joins can have at most %d columns" +msgstr "Verbunde können höchstens %d Spalten haben" -#: utils/misc/guc.c:2448 -msgid "GEQO: seed for random path selection." -msgstr "GEQO: Ausgangswert für die zufällige Pfadauswahl." +#: parser/parse_relation.c:1414 +#, c-format +msgid "WITH query \"%s\" does not have a RETURNING clause" +msgstr "WITH-Anfrage »%s« hat keine RETURNING-Klausel" -#: utils/misc/guc.c:2458 -msgid "Multiple of the average buffer usage to free per round." -msgstr "" -"Vielfaches der durchschnittlichen freizugebenden Pufferverwendung pro Runde." +#: parser/parse_relation.c:2104 +#, c-format +msgid "column %d of relation \"%s\" does not exist" +msgstr "Spalte %d von Relation »%s« existiert nicht" -#: utils/misc/guc.c:2468 -msgid "Sets the seed for random-number generation." -msgstr "Setzt den Ausgangswert für die Zufallszahlenerzeugung." +#: parser/parse_relation.c:2489 +#, c-format +msgid "invalid reference to FROM-clause entry for table \"%s\"" +msgstr "ungültiger Verweis auf FROM-Klausel-Eintrag für Tabelle »%s«" -#: utils/misc/guc.c:2479 -msgid "" -"Number of tuple updates or deletes prior to vacuum as a fraction of " -"reltuples." +#: parser/parse_relation.c:2492 +#, c-format +msgid "Perhaps you meant to reference the table alias \"%s\"." msgstr "" -"Anzahl geänderter oder gelöschter Tupel vor einem Vacuum, relativ zu " -"reltuples." +"Vielleicht wurde beabsichtigt, auf den Tabellenalias »%s« zu verweisen." -#: utils/misc/guc.c:2488 +#: parser/parse_relation.c:2494 +#, c-format msgid "" -"Number of tuple inserts, updates or deletes prior to analyze as a fraction " -"of reltuples." +"There is an entry for table \"%s\", but it cannot be referenced from this " +"part of the query." msgstr "" -"Anzahl eingefügter, geänderter oder gelöschter Tupel vor einem Analyze, " -"relativ zu reltuples." +"Es gibt einen Eintrag für Tabelle »%s«, aber auf ihn kann aus diesem Teil " +"der Anfrage kein Bezug genommen werden." + +#: parser/parse_relation.c:2500 +#, c-format +msgid "missing FROM-clause entry for table \"%s\"" +msgstr "fehlender Eintrag in FROM-Klausel für Tabelle »%s«" + +#: scan.l:411 +msgid "unterminated /* comment" +msgstr "/*-Kommentar nicht abgeschlossen" + +#: scan.l:440 +msgid "unterminated bit string literal" +msgstr "Bitkettenkonstante nicht abgeschlossen" -#: utils/misc/guc.c:2498 +#: scan.l:461 +msgid "unterminated hexadecimal string literal" +msgstr "hexadezimale Zeichenkette nicht abgeschlossen" + +#: scan.l:511 +msgid "unsafe use of string constant with Unicode escapes" +msgstr "unsichere Verwendung von Zeichenkette mit Unicode-Escapes" + +#: scan.l:512 msgid "" -"Time spent flushing dirty buffers during checkpoint, as fraction of " -"checkpoint interval." +"String constants with Unicode escapes cannot be used when " +"standard_conforming_strings is off." msgstr "" -"Zeit, die damit verbracht wird, modifizierte Puffer während eines " -"Checkpoints zurückzuschreiben, als Bruchteil des Checkpoint-Intervalls." +"Zeichenketten mit Unicode-Escapes können nicht verwendet werden, wenn " +"standard_conforming_strings aus ist." -#: utils/misc/guc.c:2517 -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." +#: scan.l:564 scan.l:572 scan.l:580 scan.l:581 scan.l:582 scan.l:1242 +#: scan.l:1269 scan.l:1273 scan.l:1311 scan.l:1315 scan.l:1337 +msgid "invalid Unicode surrogate pair" +msgstr "ungültiges Unicode-Surrogatpaar" -#: utils/misc/guc.c:2527 -msgid "Sets the client's character set encoding." -msgstr "Setzt die Zeichensatzkodierung des Clients." +#: scan.l:586 +msgid "invalid Unicode escape" +msgstr "ungültiges Unicode-Escape" -#: utils/misc/guc.c:2538 -msgid "Controls information prefixed to each log line." -msgstr "Bestimmt die Informationen, die vor jede Logzeile geschrieben werden." +#: scan.l:587 +msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX." +msgstr "Unicode-Escapes müssen \\uXXXX oder \\UXXXXXXXX sein." -#: utils/misc/guc.c:2539 -msgid "If blank, no prefix is used." -msgstr "Wenn leer, dann wird kein Präfix verwendet." +#: scan.l:598 +msgid "unsafe use of \\' in a string literal" +msgstr "unsichere Verwendung von \\' in Zeichenkettenkonstante" -#: utils/misc/guc.c:2548 -msgid "Sets the time zone to use in log messages." -msgstr "Setzt die in Logmeldungen verwendete Zeitzone." +#: scan.l:599 +msgid "" +"Use '' to write quotes in strings. \\' is insecure in client-only encodings." +msgstr "" +"Verwenden Sie '', um Quotes in Zeichenketten zu schreiben. \\' ist in " +"bestimmten Client-seitigen Kodierungen unsicher." -#: utils/misc/guc.c:2558 -msgid "Sets the display format for date and time values." -msgstr "Setzt das Ausgabeformat für Datums- und Zeitwerte." +#: scan.l:674 +msgid "unterminated dollar-quoted string" +msgstr "Dollar-Quotes nicht abgeschlossen" -#: utils/misc/guc.c:2559 -msgid "Also controls interpretation of ambiguous date inputs." -msgstr "Kontrolliert auch die Interpretation von zweideutigen Datumseingaben." +#: scan.l:691 scan.l:704 scan.l:720 +msgid "zero-length delimited identifier" +msgstr "Bezeichner in Anführungszeichen hat Länge null" -#: utils/misc/guc.c:2570 -msgid "Sets the default tablespace to create tables and indexes in." -msgstr "Setzt den Standard-Tablespace für Tabellen und Indexe." +#: scan.l:734 +msgid "unterminated quoted identifier" +msgstr "Bezeichner in Anführungszeichen nicht abgeschlossen" -#: utils/misc/guc.c:2571 -msgid "An empty string selects the database's default tablespace." -msgstr "Eine leere Zeichenkette wählt den Standard-Tablespace der Datenbank." +#: scan.l:838 +msgid "operator too long" +msgstr "Operator zu lang" -#: utils/misc/guc.c:2581 -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." +#. translator: %s is typically the translation of "syntax error" +#: scan.l:996 +#, c-format +msgid "%s at end of input" +msgstr "%s am Ende der Eingabe" -#: utils/misc/guc.c:2592 -msgid "Sets the path for dynamically loadable modules." -msgstr "Setzt den Pfad für ladbare dynamische Bibliotheken." +#. translator: first %s is typically the translation of "syntax error" +#: scan.l:1004 +#, c-format +msgid "%s at or near \"%s\"" +msgstr "%s bei »%s«" -#: utils/misc/guc.c:2593 +#: scan.l:1165 scan.l:1197 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." +"Unicode escape values cannot be used for code point values above 007F when " +"the server encoding is not UTF8" 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." +"Unicode-Escape-Werte können nicht für Code-Punkt-Werte über 007F verwendet " +"werden, wenn die Serverkodierung nicht UTF8 ist" -#: utils/misc/guc.c:2606 -msgid "Sets the location of the Kerberos server key file." -msgstr "Setzt den Ort der Kerberos-Server-Schlüsseldatei." +#: scan.l:1193 scan.l:1329 +msgid "invalid Unicode escape value" +msgstr "ungültiger Unicode-Escape-Wert" -#: utils/misc/guc.c:2617 -msgid "Sets the name of the Kerberos service." -msgstr "Setzt den Namen des Kerberos-Service." +#: scan.l:1218 +msgid "invalid Unicode escape character" +msgstr "ungültiges Unicode-Escape-Zeichen" -#: utils/misc/guc.c:2627 -msgid "Sets the Bonjour service name." -msgstr "Setzt den Bonjour-Servicenamen." +#: scan.l:1385 +msgid "nonstandard use of \\' in a string literal" +msgstr "nicht standardkonforme Verwendung von \\' in Zeichenkettenkonstante" -#: utils/misc/guc.c:2639 -msgid "Shows the collation order locale." -msgstr "Zeigt die Locale für die Sortierreihenfolge." +#: scan.l:1386 +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:1395 +msgid "nonstandard use of \\\\ in a string literal" +msgstr "nicht standardkonforme Verwendung von \\\\ in Zeichenkettenkonstante" + +#: scan.l:1396 +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'\\" +"\\'." -#: utils/misc/guc.c:2650 -msgid "Shows the character classification and case conversion locale." -msgstr "Zeigt die Locale für Zeichenklassifizierung und Groß-/Kleinschreibung." +#: scan.l:1410 +msgid "nonstandard use of escape in a string literal" +msgstr "nicht standardkonforme Verwendung von Escape in Zeichenkettenkonstante" -#: utils/misc/guc.c:2661 -msgid "Sets the language in which messages are displayed." -msgstr "Setzt die Sprache, in der Mitteilungen ausgegeben werden." +#: scan.l:1411 +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'." -#: utils/misc/guc.c:2671 -msgid "Sets the locale for formatting monetary amounts." -msgstr "Setzt die Locale für die Formatierung von Geldbeträgen." +#: parser/parse_oper.c:221 +msgid "Use an explicit ordering operator or modify the query." +msgstr "" +"Verwenden Sie einen ausdrücklichen Sortieroperator oder ändern Sie die " +"Anfrage." -#: utils/misc/guc.c:2681 -msgid "Sets the locale for formatting numbers." -msgstr "Setzt die Locale für die Formatierung von Zahlen." +#: parser/parse_oper.c:476 +#, c-format +msgid "operator requires run-time type coercion: %s" +msgstr "Operator erfordert Typumwandlung zur Laufzeit: %s" -#: utils/misc/guc.c:2691 -msgid "Sets the locale for formatting date and time values." -msgstr "Setzt die Locale für die Formatierung von Datums- und Zeitwerten." +#: parser/parse_oper.c:710 +#, c-format +msgid "operator is not unique: %s" +msgstr "Operator ist nicht eindeutig: %s" -#: utils/misc/guc.c:2701 -msgid "Lists shared libraries to preload into server." +#: parser/parse_oper.c:712 +msgid "" +"Could not choose a best candidate operator. You might need to add explicit " +"type casts." msgstr "" -"Listet dynamische Bibliotheken, die vorab in den Server geladen werden." +"Konnte keinen besten Kandidatoperator auswählen. Sie müssen möglicherweise " +"ausdrückliche Typumwandlungen hinzufügen." -#: utils/misc/guc.c:2712 -msgid "Lists shared libraries to preload into each backend." +#: parser/parse_oper.c:720 +msgid "" +"No operator matches the given name and argument type(s). You might need to " +"add explicit type casts." msgstr "" -"Listet dynamische Bibliotheken, die vorab in jeden Serverprozess geladen " -"werden." +"Kein Operator stimmt mit dem angegebenen Namen und den Argumenttypen " +"überein. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen." -#: utils/misc/guc.c:2723 -msgid "Sets the schema search order for names that are not schema-qualified." -msgstr "Setzt die Schemasuchreihenfolge für Namen ohne Schemaqualifikation." +#: parser/parse_oper.c:779 parser/parse_oper.c:893 +#, c-format +msgid "operator is only a shell: %s" +msgstr "Operator ist nur eine Hülle: %s" -#: utils/misc/guc.c:2735 -msgid "Sets the server (database) character set encoding." -msgstr "Setzt die Zeichensatzkodierung des Servers (der Datenbank)." +#: parser/parse_oper.c:881 +msgid "op ANY/ALL (array) requires array on right side" +msgstr "op ANY/ALL (array) erfordert Array auf der rechten Seite" -#: utils/misc/guc.c:2747 -msgid "Shows the server version." -msgstr "Zeigt die Serverversion." +#: parser/parse_oper.c:923 +msgid "op ANY/ALL (array) requires operator to yield boolean" +msgstr "op ANY/ALL (array) erfordert, dass Operator boolean ergibt" -#: utils/misc/guc.c:2759 -msgid "Sets the current role." -msgstr "Setzt die aktuelle Rolle." +#: parser/parse_oper.c:928 +msgid "op ANY/ALL (array) requires operator not to return a set" +msgstr "" +"op ANY/ALL (array) erfordert, dass Operator keine Ergebnismenge zurückgibt" -#: utils/misc/guc.c:2771 -msgid "Sets the session user name." -msgstr "Setzt den Sitzungsbenutzernamen." +#: parser/parse_func.c:147 +#, c-format +msgid "argument name \"%s\" used more than once" +msgstr "Argumentname »%s« mehrmals angegeben" -#: utils/misc/guc.c:2782 -msgid "Sets the destination for server log output." -msgstr "Setzt das Ziel für die Serverlogausgabe." +#: parser/parse_func.c:158 +msgid "positional argument cannot follow named argument" +msgstr "Positionsargument kann nicht hinter benanntem Argument stehen" + +#: parser/parse_func.c:236 +#, c-format +msgid "%s(*) specified, but %s is not an aggregate function" +msgstr "%s(*) angegeben, aber %s ist keine Aggregatfunktion" + +#: parser/parse_func.c:243 +#, c-format +msgid "DISTINCT specified, but %s is not an aggregate function" +msgstr "DISTINCT wurde angegeben, aber %s ist keine Aggregatfunktion" -#: utils/misc/guc.c:2783 +#: parser/parse_func.c:249 +#, 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:255 +#, c-format msgid "" -"Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and " -"\"eventlog\", depending on the platform." +"OVER specified, but %s is not a window function nor an aggregate function" msgstr "" -"Gültige Werte sind Kombinationen von »stderr«, »syslog«, »csvlog« und " -"»eventlog«, je nach Plattform." +"OVER angegeben, aber %s ist keine Fensterfunktion oder Aggregatfunktion" -#: utils/misc/guc.c:2794 -msgid "Sets the destination directory for log files." -msgstr "Bestimmt das Zielverzeichnis für Logdateien." +#: parser/parse_func.c:277 +#, c-format +msgid "function %s is not unique" +msgstr "Funktion %s ist nicht eindeutig" -#: utils/misc/guc.c:2795 -msgid "Can be specified as relative to the data directory or as absolute path." +#: parser/parse_func.c:280 +msgid "" +"Could not choose a best candidate function. You might need to add explicit " +"type casts." msgstr "" -"Kann relativ zum Datenverzeichnis oder als absoluter Pfad angegeben werden." +"Konnte keine beste Kandidatfunktion auswählen. Sie müssen möglicherweise " +"ausdrückliche Typumwandlungen hinzufügen." -#: utils/misc/guc.c:2805 -msgid "Sets the file name pattern for log files." -msgstr "Bestimmt das Dateinamenmuster für Logdateien." +#: 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 "" +"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." -#: utils/misc/guc.c:2816 -msgid "Sets the program name used to identify PostgreSQL messages in syslog." +#: parser/parse_func.c:302 +msgid "" +"No function matches the given name and argument types. You might need to add " +"explicit type casts." msgstr "" -"Setzt den Programmnamen, mit dem PostgreSQL-Meldungen im Syslog " -"identifiziert werden." +"Keine Funktion stimmt mit dem angegebenen Namen und den Argumenttypen " +"überein. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen." -#: utils/misc/guc.c:2827 -msgid "Sets the time zone for displaying and interpreting time stamps." +#: parser/parse_func.c:412 parser/parse_func.c:478 +#, c-format +msgid "%s(*) must be used to call a parameterless aggregate function" msgstr "" -"Setzt die Zeitzone, in der Zeitangaben interpretiert und ausgegeben werden." +"beim Aufruf einer parameterlosen Aggregatfunktion muss %s(*) angegeben werden" -#: utils/misc/guc.c:2837 -msgid "Selects a file of time zone abbreviations." -msgstr "Wählt eine Datei mit Zeitzonenabkürzungen." +#: parser/parse_func.c:419 +msgid "aggregates cannot return sets" +msgstr "Aggregatfunktionen können keine Ergebnismengen zurückgeben" -#: utils/misc/guc.c:2847 -msgid "Sets the current transaction's isolation level." -msgstr "Zeigt den Isolationsgrad der aktuellen Transaktion." +#: parser/parse_func.c:431 +msgid "aggregates cannot use named arguments" +msgstr "Aggregatfunktionen können keine benannten Argumente verwenden" -#: utils/misc/guc.c:2858 -msgid "Sets the owning group of the Unix-domain socket." -msgstr "Setzt die Eigentümergruppe der Unix-Domain-Socket." +#: parser/parse_func.c:450 +msgid "window function call requires an OVER clause" +msgstr "Aufruf einer Fensterfunktion erfordert eine OVER-Klausel" -#: utils/misc/guc.c:2859 -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." +#: parser/parse_func.c:468 +msgid "DISTINCT is not implemented for window functions" +msgstr "DISTINCT ist für Fensterfunktionen nicht implementiert" -#: utils/misc/guc.c:2869 -msgid "Sets the directory where the Unix-domain socket will be created." +#: parser/parse_func.c:488 +msgid "aggregate ORDER BY is not implemented for window functions" msgstr "" -"Setzt das Verzeichnis, in dem die Unix-Domain-Socket erzeugt werden soll." +"ORDER BY in Aggregatfunktion ist für Fensterfunktionen nicht implementiert" -#: utils/misc/guc.c:2880 -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." +#: parser/parse_func.c:494 +msgid "window functions cannot return sets" +msgstr "Fensterfunktionen können keine Ergebnismengen zurückgeben" -#: utils/misc/guc.c:2891 -msgid "Sets the list of known custom variable classes." -msgstr "Bestimmt die Liste der bekannten benutzerdefinierten Variablenklassen." +#: parser/parse_func.c:505 +msgid "window functions cannot use named arguments" +msgstr "Fensterfunktionen können keine benannten Argumente verwenden" -#: utils/misc/guc.c:2902 -msgid "Sets the server's data directory." -msgstr "Setzt das Datenverzeichnis des Servers." +#: parser/parse_func.c:1589 +#, c-format +msgid "aggregate %s(*) does not exist" +msgstr "Aggregatfunktion %s(*) existiert nicht" -#: utils/misc/guc.c:2913 -msgid "Sets the server's main configuration file." -msgstr "Setzt die Hauptkonfigurationsdatei des Servers." +#: parser/parse_func.c:1594 +#, c-format +msgid "aggregate %s does not exist" +msgstr "Aggregatfunktion %s existiert nicht" -#: utils/misc/guc.c:2924 -msgid "Sets the server's \"hba\" configuration file." -msgstr "Setzt die »hba«-Konfigurationsdatei des Servers." +#: parser/parse_func.c:1613 +#, c-format +msgid "function %s is not an aggregate" +msgstr "Funktion %s ist keine Aggregatfunktion" -#: utils/misc/guc.c:2935 -msgid "Sets the server's \"ident\" configuration file." -msgstr "Setzt die »ident«-Konfigurationsdatei des Servers." +#: parser/parse_type.c:83 +#, c-format +msgid "improper %%TYPE reference (too few dotted names): %s" +msgstr "falscher %%TYPE-Verweis (zu wenige Namensteile): %s" -#: utils/misc/guc.c:2946 -msgid "Writes the postmaster PID to the specified file." -msgstr "Schreibt die Postmaster-PID in die angegebene Datei." +#: parser/parse_type.c:105 +#, c-format +msgid "improper %%TYPE reference (too many dotted names): %s" +msgstr "falscher %%TYPE-Verweis (zu viele Namensteile): %s" -#: utils/misc/guc.c:2957 -msgid "Writes temporary statistics files to the specified directory." -msgstr "Schreibt temporäre Statistikdateien in das angegebene Verzeichnis." +#: parser/parse_type.c:127 +#, c-format +msgid "type reference %s converted to %s" +msgstr "Typverweis %s in %s umgewandelt" -#: utils/misc/guc.c:2968 -msgid "List of potential standby names to synchronise with." -msgstr "" +#: parser/parse_type.c:287 +#, c-format +msgid "type modifier is not allowed for type \"%s\"" +msgstr "Typmodifikator ist für Typ »%s« nicht erlaubt" -#: utils/misc/guc.c:2979 -msgid "Sets default text search configuration." -msgstr "Setzt die vorgegebene Textsuchekonfiguration." +#: parser/parse_type.c:330 +msgid "type modifiers must be simple constants or identifiers" +msgstr "Typmodifikatoren müssen einfache Konstanten oder Bezeichner sein" -#: utils/misc/guc.c:2989 -msgid "Sets the list of allowed SSL ciphers." -msgstr "Setzt die Liste der erlaubten SSL-Verschlüsselungsalgorithmen." +#: parser/parse_type.c:641 parser/parse_type.c:740 +#, c-format +msgid "invalid type name \"%s\"" +msgstr "ungültiger Typname: »%s«" -#: utils/misc/guc.c:3004 -msgid "Sets the application name to be reported in statistics and logs." +#: parser/scansup.c:192 +#, c-format +msgid "identifier \"%s\" will be truncated to \"%s\"" +msgstr "Bezeichner »%s« wird auf »%s« gekürzt" + +#: parser/parse_cte.c:42 +#, c-format +msgid "" +"recursive reference to query \"%s\" must not appear within its non-recursive " +"term" msgstr "" -"Setzt den Anwendungsnamen, der in Statistiken und Logs verzeichnet wird." +"rekursiver Verweis auf Anfrage »%s« darf nicht in ihrem nicht-rekursiven " +"Teilausdruck erscheinen" + +#: parser/parse_cte.c:44 +#, c-format +msgid "recursive reference to query \"%s\" must not appear within a subquery" +msgstr "" +"rekursiver Verweis auf Anfrage »%s« darf nicht in einer Unteranfrage " +"erscheinen" + +#: parser/parse_cte.c:46 +#, c-format +msgid "" +"recursive reference to query \"%s\" must not appear within an outer join" +msgstr "" +"rekursiver Verweis auf Anfrage »%s« darf nicht in einem äußeren Verbund " +"erscheinen" + +#: parser/parse_cte.c:48 +#, c-format +msgid "recursive reference to query \"%s\" must not appear within INTERSECT" +msgstr "rekursiver Verweis auf Anfrage »%s« darf nicht in INTERSECT erscheinen" -#: utils/misc/guc.c:3024 -msgid "Sets whether \"\\'\" is allowed in string literals." -msgstr "Bestimmt, ob »\\'« in Zeichenkettenkonstanten erlaubt ist." +#: parser/parse_cte.c:50 +#, c-format +msgid "recursive reference to query \"%s\" must not appear within EXCEPT" +msgstr "rekursiver Verweis auf Anfrage »%s« darf nicht in EXCEPT erscheinen" -#: utils/misc/guc.c:3034 -msgid "Sets the output format for bytea." -msgstr "Setzt das Ausgabeformat für bytea." +#: parser/parse_cte.c:132 +#, c-format +msgid "WITH query name \"%s\" specified more than once" +msgstr "WIHT-Anfragename »%s« mehrmals angegeben" -#: utils/misc/guc.c:3044 -msgid "Sets the message levels that are sent to the client." -msgstr "Setzt die Meldungstypen, die an den Client gesendet werden." +#: parser/parse_cte.c:259 +msgid "subquery in WITH cannot have SELECT INTO" +msgstr "Unteranfrage in WITH kann kein SELECT INTO enthalten" -#: utils/misc/guc.c:3045 utils/misc/guc.c:3098 utils/misc/guc.c:3109 -#: utils/misc/guc.c:3165 +#: parser/parse_cte.c:271 msgid "" -"Each level includes all the levels that follow it. The later the level, the " -"fewer messages are sent." +"WITH clause containing a data-modifying statement must be at the top level" msgstr "" -"Jeder Wert schließt alle ihm folgenden Werte mit ein. Je weiter hinten der " -"Wert steht, desto weniger Meldungen werden gesendet werden." +"WITH-Klausel mit datenmodifizierender Anweisung muss auf der obersten Ebene " +"sein" -#: utils/misc/guc.c:3055 -msgid "Enables the planner to use constraints to optimize queries." +#: 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 "" -"Ermöglicht dem Planer die Verwendung von Constraints, um Anfragen zu " -"optimieren." +"Spalte %2$d in rekursiver Anfrage »%1$s« hat Typ %3$s im nicht-rekursiven " +"Teilausdruck aber Typ %4$s insgesamt" + +#: parser/parse_cte.c:326 +msgid "Cast the output of the non-recursive term to the correct type." +msgstr "" +"Wandeln Sie die Ausgabe des nicht-rekursiven Teilausdrucks in den korrekten " +"Typ um." -#: utils/misc/guc.c:3056 +#: parser/parse_cte.c:331 +#, c-format msgid "" -"Table scans will be skipped if their constraints guarantee that no rows " -"match the query." +"recursive query \"%s\" column %d has collation \"%s\" in non-recursive term " +"but collation \"%s\" overall" msgstr "" -"Tabellen-Scans werden übersprungen, wenn deren Constraints garantieren, dass " -"keine Zeile mit der Abfrage übereinstimmt." +"Spalte %2$d in rekursiver Anfrage »%1$s« hat Sortierfolge %3$s im nicht-" +"rekursiven Teilausdruck aber Sortierfolge %4$s insgesamt" -#: utils/misc/guc.c:3066 -msgid "Sets the transaction isolation level of each new transaction." -msgstr "Setzt den Transaktionsisolationsgrad neuer Transaktionen." +#: parser/parse_cte.c:335 +msgid "Use the COLLATE clause to set the collation of the non-recursive term." +msgstr "" +"Verwenden Sie die COLLATE-Klausel, um die Sortierfolge des nicht-rekursiven " +"Teilsausdrucks zu setzen." -#: utils/misc/guc.c:3076 -msgid "Sets the display format for interval values." -msgstr "Setzt das Ausgabeformat für Intervallwerte." +#: parser/parse_cte.c:426 +#, c-format +msgid "WITH query \"%s\" has %d columns available but %d columns specified" +msgstr "" +"WITH-Anfrage »%s« hat %d Spalten verfügbar, aber %d Spalten wurden angegeben" -#: utils/misc/guc.c:3087 -msgid "Sets the verbosity of logged messages." -msgstr "Setzt den Detailgrad von geloggten Meldungen." +#: parser/parse_cte.c:606 +msgid "mutual recursion between WITH items is not implemented" +msgstr "gegenseitige Rekursion zwischen WITH-Elementen ist nicht implementiert" -#: utils/misc/guc.c:3097 -msgid "Sets the message levels that are logged." -msgstr "Setzt die Meldungstypen, die geloggt werden." +#: parser/parse_cte.c:658 +#, c-format +msgid "recursive query \"%s\" must not contain data-modifying statements" +msgstr "" +"rekursive Anfrage »%s« darf keine datenmodifizierenden Anweisungen enthalten" -#: utils/misc/guc.c:3108 +#: parser/parse_cte.c:666 +#, c-format msgid "" -"Causes all statements generating error at or above this level to be logged." +"recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] " +"recursive-term" msgstr "" -"Schreibt alle Anweisungen, die einen Fehler auf dieser Stufe oder höher " -"verursachen, in den Log." - -#: utils/misc/guc.c:3119 -msgid "Sets the type of statements logged." -msgstr "Setzt die Anweisungsarten, die geloggt werden." +"rekursive Anfrage »%s« hat nicht die Form nicht-rekursiver-Ausdruck UNION " +"[ALL] rekursiver-Ausdruck" -#: utils/misc/guc.c:3129 -msgid "Sets the syslog \"facility\" to be used when syslog enabled." -msgstr "" -"Setzt die zu verwendende Syslog-»Facility«, wenn Syslog angeschaltet ist." +#: parser/parse_cte.c:710 +msgid "ORDER BY in a recursive query is not implemented" +msgstr "ORDER BY in einer rekursiven Anfrage ist nicht implementiert" -#: utils/misc/guc.c:3144 -msgid "Sets the session's behavior for triggers and rewrite rules." -msgstr "Setzt das Sitzungsverhalten für Trigger und Regeln." +#: parser/parse_cte.c:716 +msgid "OFFSET in a recursive query is not implemented" +msgstr "OFFSET in einer rekursiven Anfrage ist nicht implementiert" -#: utils/misc/guc.c:3154 -#, fuzzy -msgid "Sets the current transaction's synchronization level." -msgstr "Zeigt den Isolationsgrad der aktuellen Transaktion." +#: parser/parse_cte.c:722 +msgid "LIMIT in a recursive query is not implemented" +msgstr "LIMIT in einer rekursiven Anfrage ist nicht implementiert" -#: utils/misc/guc.c:3164 -msgid "Enables logging of recovery-related debugging information." -msgstr "" -"Ermöglicht das Loggen von Debug-Informationen über die Wiederherstellung." +#: parser/parse_cte.c:728 +msgid "FOR UPDATE/SHARE in a recursive query is not implemented" +msgstr "FOR UPDATE/SHARE in einer rekursiven Anfrage ist nicht implementiert" -#: utils/misc/guc.c:3180 -msgid "Collects function-level statistics on database activity." -msgstr "Sammelt Statistiken auf Funktionsebene über Datenbankaktivität." +#: parser/parse_cte.c:785 +#, c-format +msgid "recursive reference to query \"%s\" must not appear more than once" +msgstr "rekursiver Verweis auf Anfrage »%s« darf nicht mehrmals erscheinen" -#: utils/misc/guc.c:3190 -msgid "Set the level of information written to the WAL." -msgstr "Setzt den Umfang der in den WAL geschriebenen Informationen." +#: port/win32_sema.c:94 +#, c-format +msgid "could not create semaphore: error code %d" +msgstr "konnte Semaphore nicht erzeugen: Fehlercode %d" -#: utils/misc/guc.c:3200 -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." +#: port/win32_sema.c:165 +#, c-format +msgid "could not lock semaphore: error code %d" +msgstr "konnte Semaphore nicht sperren: Fehlercode %d" -#: utils/misc/guc.c:3210 -msgid "Sets how binary values are to be encoded in XML." -msgstr "Setzt, wie binäre Werte in XML kodiert werden." +#: port/win32_sema.c:178 +#, c-format +msgid "could not unlock semaphore: error code %d" +msgstr "konnte Semaphore nicht entsperren: Fehlercode %d" -#: 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 "" -"Setzt, ob XML-Daten in impliziten Parse- und Serialisierungsoperationen als " -"Dokument oder Fragment betrachtet werden sollen." +#: port/win32_sema.c:207 +#, c-format +msgid "could not try-lock semaphore: error code %d" +msgstr "konnte Semaphore nicht versuchsweise sperren: Fehlercode %d" -#: utils/misc/guc.c:4062 +#: port/sysv_shmem.c:146 port/pg_shmem.c:146 #, 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 weiß nicht, wo die Serverkonfigurationsdatei zu finden ist.\n" -"Sie müssen die Kommandozeilenoption --config-file oder -D angegeben oder\n" -"die Umgebungsvariable PGDATA setzen.\n" +msgid "could not create shared memory segment: %m" +msgstr "konnte Shared-Memory-Segment nicht erzeugen: %m" -#: utils/misc/guc.c:4081 +#: port/sysv_shmem.c:147 port/pg_shmem.c:147 #, c-format -msgid "%s cannot access the server configuration file \"%s\": %s\n" -msgstr "%s kann nicht auf die Serverkonfigurationsdatei »%s« zugreifen: %s\n" +msgid "Failed system call was shmget(key=%lu, size=%lu, 0%o)." +msgstr "Fehlgeschlagener Systemaufruf war shmget(Key=%lu, Größe=%lu, 0%o)." -#: utils/misc/guc.c:4101 +#: port/sysv_shmem.c:151 port/pg_shmem.c:151 #, 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 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 "" -"%s weiß nicht, wo die Systemdaten für das Datenbanksystem\n" -"zu finden sind. Sie können dies mit »data_directory« in »%s«, mit der\n" -"Kommandozeilenoption -D oder der Umgebungsvariable PGDATA angeben.\n" +"Dieser Fehler bedeutet gewöhnlich, dass das von PostgreSQL angeforderte " +"Shared-Memory-Segment den Kernelparameter SHMMAX überschreitet. Sie können " +"entweder die benötigte Shared-Memory-Größe reduzieren oder SHMMAX im Kernel " +"größer konfigurieren. 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" +"Wenn die angeforderte Größe schon klein ist, ist es möglich, dass sie " +"kleiner ist als der Kernelparameter SHMMIN. Dann müssen Sie die benötigte " +"Shared-Memory-Größe erhöhen oder SHMMIN ändern.\n" +"Die PostgreSQL-Dokumentation enthält weitere Informationen über die " +"Konfiguration von Shared Memory." -#: utils/misc/guc.c:4132 +#: port/sysv_shmem.c:164 port/pg_shmem.c:164 #, 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 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 "" -"%s weiß nicht, wo die »hba«-Konfigurationsdatei zu finden ist.\n" -"Sie können dies mit »hba_file« in »%s«, mit der\n" -"Kommandozeilenoption -D oder der Umgebungsvariable PGDATA angeben.\n" +"Dieser Fehler bedeutet gewöhnlich, dass das von PostgreSQL angeforderte " +"Shared-Memory-Segment den verfügbaren Speicher oder Swap-Space oder den " +"Kernel-Parameter SHMALL überschreitet. Sie können entweder die benötigte " +"Shared-Memory-Größe reduzieren oder SHMALL im Kernel größer konfigurieren. " +"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" +"Die PostgreSQL-Dokumentation enthält weitere Informationen über die " +"Konfiguration von Shared Memory." -#: utils/misc/guc.c:4155 +#: port/sysv_shmem.c:175 port/pg_shmem.c:175 #, 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 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 "" -"%s weiß nicht, wo die »ident«-Konfigurationsdatei zu finden ist.\n" -"Sie können dies mit »ident_file« in »%s«, mit der\n" -"Kommandozeilenoption -D oder der Umgebungsvariable PGDATA angeben.\n" - -#: utils/misc/guc.c:4735 utils/misc/guc.c:4899 -msgid "Value exceeds integer range." -msgstr "Wert überschreitet Bereich für ganze Zahlen." - -#: utils/misc/guc.c:4754 -msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"." -msgstr "Gültige Einheiten für diesen Parameter sind »kB«, »MB« und »GB«." +"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. Wenn Sie " +"die Höchstgrenze für Shared Memory nicht erhöhen können, verkleinern Sie das " +"von PostgreSQL benötigte Shared Memory (aktuell %lu Bytes), beispielsweise " +"indem Sie »shared_buffers« oder »max_connections« reduzieren.\n" +"Die PostgreSQL-Dokumentation enthält weitere Informationen über die " +"Konfiguration von Shared Memory." -#: utils/misc/guc.c:4813 -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«." +#: port/sysv_shmem.c:438 port/pg_shmem.c:438 +#, c-format +msgid "could not stat data directory \"%s\": %m" +msgstr "konnte »stat« für Datenverzeichnis »%s« nicht ausführen: %m" -#: 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 +#: port/sysv_sema.c:116 port/pg_sema.c:116 #, c-format -msgid "unrecognized configuration parameter \"%s\"" -msgstr "unbekannter Konfigurationsparameter »%s«" +msgid "could not create semaphores: %m" +msgstr "konnte Semaphore nicht erzeugen: %m" -#: utils/misc/guc.c:5129 +#: port/sysv_sema.c:117 port/pg_sema.c:117 #, c-format -msgid "parameter \"%s\" cannot be changed" -msgstr "Parameter »%s« kann nicht geändert werden" +msgid "Failed system call was semget(%lu, %d, 0%o)." +msgstr "Fehlgeschlagener Systemaufruf war semget(%lu, %d, 0%o)." + +#: port/sysv_sema.c:121 port/pg_sema.c:121 +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 "" +"Dieser Fehler bedeutet *nicht*, dass kein Platz mehr auf der Festplatte " +"ist. Er tritt auf, wenn entweder die Systemhöchstgrenze für die Anzahl " +"Semaphor-Sets (SEMMNI) oder die Systemhöchstgrenze für die Anzahl Semaphore " +"(SEMMNS) überschritten würde. Sie müssen den entsprechenden Kernelparameter " +"erhöhen. Alternativ können Sie den Semaphorverbrauch von PostgreSQL " +"reduzieren indem Sie den Parameter »max_connections« herabsetzen.\n" +"Die PostgreSQL-Dokumentation enthält weitere Informationen, wie Sie Ihr " +"System für PostgreSQL konfigurieren können." -#: 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 +#: port/sysv_sema.c:151 port/pg_sema.c:151 #, c-format -msgid "parameter \"%s\" cannot be changed without restarting the server" +msgid "" +"You possibly need to raise your kernel's SEMVMX value to be at least %d. " +"Look into the PostgreSQL documentation for details." msgstr "" -"Parameter »%s« kann nicht geändert werden, ohne den Server neu zu starten" +"Sie müssen möglicherweise den Kernelparameter SEMVMX auf mindestens %d " +"erhöhen. Weitere Informationen finden Sie in der PostgreSQL-Dokumentation." -#: utils/misc/guc.c:5168 +#: port/win32_shmem.c:168 port/win32_shmem.c:203 port/win32_shmem.c:224 #, c-format -msgid "parameter \"%s\" cannot be changed now" -msgstr "Parameter »%s« kann jetzt nicht geändert werden" +msgid "could not create shared memory segment: %lu" +msgstr "konnte Shared-Memory-Segment nicht erzeugen: %lu" -#: utils/misc/guc.c:5199 +#: port/win32_shmem.c:169 #, c-format -msgid "parameter \"%s\" cannot be set after connection start" -msgstr "Parameter »%s« kann nach Start der Verbindung nicht geändert werden" +msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)." +msgstr "" +"Fehlgeschlagener Systemaufruf war CreateFileMapping(Größe=%lu, Name=%s)." -#: utils/misc/guc.c:5209 utils/misc/guc.c:7917 -#, c-format -msgid "permission denied to set parameter \"%s\"" -msgstr "keine Berechtigung, um Parameter »%s« zu setzen" +#: port/win32_shmem.c:193 +msgid "pre-existing shared memory block is still in use" +msgstr "bereits bestehender Shared-Memory-Block wird noch benutzt" -#: utils/misc/guc.c:5247 -#, c-format -msgid "cannot set parameter \"%s\" within security-definer function" +#: port/win32_shmem.c:194 +msgid "" +"Check if there are any old server processes still running, and terminate " +"them." msgstr "" -"Parameter »%s« kann nicht in einer Security-Definer-Funktion gesetzt werden" - -#: 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 "ungültiger Wert für Parameter »%s«: »%s«" +"Prüfen Sie, ob irgendwelche alten Serverprozesse noch laufen und beenden Sie " +"diese." -#: utils/misc/guc.c:5402 -#, 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)" +#: port/win32_shmem.c:204 +msgid "Failed system call was DuplicateHandle." +msgstr "Fehlgeschlagener Systemaufruf war DuplicateHandle." -#: utils/misc/guc.c:5488 -#, c-format -msgid "parameter \"%s\" requires a numeric value" -msgstr "Parameter »%s« erfordert einen numerischen Wert" +#: port/win32_shmem.c:225 +msgid "Failed system call was MapViewOfFileEx." +msgstr "Fehlgeschlagener Systemaufruf war MapViewOfFileEx." -#: utils/misc/guc.c:5496 +#: port/win32/security.c:43 #, 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)" +msgid "could not open process token: error code %d\n" +msgstr "konnte Prozess-Token nicht öffnen: Fehlercode %d\n" -#: utils/misc/guc.c:5865 utils/misc/guc.c:5913 utils/misc/guc.c:6745 +#: port/win32/security.c:63 #, c-format -msgid "must be superuser to examine \"%s\"" -msgstr "nur Superuser können »%s« ansehen" +msgid "could not get SID for Administrators group: error code %d\n" +msgstr "konnte SID der Administrators-Gruppe nicht ermitteln: Fehlercode %d\n" -#: utils/misc/guc.c:5979 +#: port/win32/security.c:72 #, c-format -msgid "SET %s takes only one argument" -msgstr "SET %s darf nur ein Argument haben" - -#: utils/misc/guc.c:6212 -msgid "SET requires parameter name" -msgstr "SET benötigt Parameternamen" +msgid "could not get SID for PowerUsers group: error code %d\n" +msgstr "konnte SID der PowerUsers-Gruppe nicht ermitteln: Fehlercode %d\n" -#: utils/misc/guc.c:6327 +#: port/win32/signal.c:189 #, c-format -msgid "attempt to redefine parameter \"%s\"" -msgstr "Versuch, den Parameter »%s« zu redefinieren" +msgid "could not create signal listener pipe for PID %d: error code %d" +msgstr "" +"konnte Listener-Pipe für Signale für PID %d nicht erzeugen: Fehlercode %d" -#: utils/misc/guc.c:7618 +#: port/win32/signal.c:269 port/win32/signal.c:301 #, c-format -msgid "could not parse setting for parameter \"%s\"" -msgstr "konnte Wert von Parameter »%s« nicht lesen" +msgid "could not create signal listener pipe: error code %d; retrying\n" +msgstr "" +"konnte Listener-Pipe für Signale nicht erzeugen: Fehlercode %d; wiederhole " +"Versuch\n" -#: utils/misc/guc.c:7979 utils/misc/guc.c:8013 +#: port/win32/signal.c:312 #, c-format -msgid "invalid value for parameter \"%s\": %d" -msgstr "ungültiger Wert für Parameter »%s«: %d" +msgid "could not create signal dispatch thread: error code %d\n" +msgstr "konnte Signal-Dispatch-Thread nicht erzeugen: Fehlercode %d\n" -#: utils/misc/guc.c:8047 -#, c-format -msgid "invalid value for parameter \"%s\": %g" -msgstr "ungültiger Wert für Parameter »%s«: %g" +#: port/win32/crashdump.c:108 +msgid "could not load dbghelp.dll, cannot write crash dump\n" +msgstr "konnte dbghelp.dll nicht laden, kann Crash-Dump nicht schreiben\n" -#: utils/misc/guc.c:8237 +#: port/win32/crashdump.c:116 msgid "" -"\"temp_buffers\" cannot be changed after any temp tables have been accessed " -"in the session." +"could not load required functions in dbghelp.dll, cannot write crash dump\n" msgstr "" +"konnte benötigte Funktionen in dbghelp.dll nicht laden, kann Crash-Dump " +"nicht schreiben\n" -#: utils/misc/guc.c:8249 -msgid "SET AUTOCOMMIT TO OFF is no longer supported" -msgstr "SET AUTOCOMMIT TO OFF wird nicht mehr unterstützt" - -#: utils/misc/guc.c:8324 -msgid "assertion checking is not supported by this build" -msgstr "Assert-Prüfungen werden von dieser Installation nicht unterstützt" - -#: utils/misc/guc.c:8337 -msgid "Bonjour is not supported by this build" -msgstr "Bonjour wird von dieser Installation nicht unterstützt" +#: port/win32/crashdump.c:147 +#, c-format +msgid "could not open crash dump file \"%s\" for writing: error code %u\n" +msgstr "" +"konnte Crash-Dump-Datei »%s« nicht zum Schreiben öffnen: Fehlercode %u\n" -#: utils/misc/guc.c:8350 -msgid "SSL is not supported by this build" -msgstr "SSL wird von dieser Installation nicht unterstützt" +#: port/win32/crashdump.c:154 +#, c-format +msgid "wrote crash dump to file \"%s\"\n" +msgstr "Crash-Dump nach Datei »%s« geschrieben\n" -#: utils/misc/guc.c:8362 -#, fuzzy -msgid "Cannot enable parameter when \"log_statement_stats\" is true." -msgstr "kann Parameter nicht einschalten, wenn »log_statement_stats« an ist" +#: port/win32/crashdump.c:156 +#, c-format +msgid "could not write crash dump to file \"%s\": error code %08x\n" +msgstr "konnte Crash-Dump nicht nach Datei »%s« schreiben: Fehlercode %08x\n" -#: utils/misc/guc.c:8374 -#, fuzzy -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" +#: ../port/open.c:113 +msgid "sharing violation" +msgstr "Zugriffsverletzung (Sharing Violation)" -#: utils/misc/help_config.c:131 -msgid "internal error: unrecognized run-time parameter type\n" -msgstr "interner Fehler: unbekannter Parametertyp\n" +#: ../port/open.c:113 +msgid "lock violation" +msgstr "Sperrverletzung" -#: guc-file.l:274 +#: ../port/open.c:112 #, c-format -msgid "parameter \"%s\" removed from configuration file, reset to default" -msgstr "" -"Parameter »%s« wurde aus Konfigurationsdatei entfernt, wird auf Standardwert " -"zurückgesetzt" +msgid "could not open file \"%s\": %s" +msgstr "konnte Datei »%s« nicht öffnen: %s" -#: guc-file.l:333 -#, c-format -msgid "parameter \"%s\" changed to \"%s\"" -msgstr "Parameter »%s« auf »%s« gesetzt" +#: ../port/open.c:114 +msgid "Continuing to retry for 30 seconds." +msgstr "Versuche werden für 30 Sekunden wiederholt." -#: guc-file.l:374 -#, c-format +#: ../port/open.c:115 msgid "" -"could not open configuration file \"%s\": maximum nesting depth exceeded" +"You might have antivirus, backup, or similar software interfering with the " +"database system." msgstr "" -"konnte Konfigurationsdatei »%s« nicht öffnen: maximale Verschachtelungstiefe " -"überschritten" +"Möglicherweise stört eine Antivirus-, Datensicherungs- oder ähnliche " +"Software das Datenbanksystem." -#: guc-file.l:589 +#: ../port/strerror.c:25 #, 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" +msgid "unrecognized error %d" +msgstr "unbekannter Fehler %d" -#: guc-file.l:594 +#: ../port/win32error.c:189 #, c-format -msgid "syntax error in file \"%s\" line %u, near token \"%s\"" -msgstr "Syntaxfehler in Datei »%s«, Zeile %u, bei »%s«" +msgid "mapped win32 error code %lu to %d" +msgstr "win32-Fehlercode %lu nach %d abgebildet" -#: ../port/chklocale.c:328 ../port/chklocale.c:334 +#: ../port/win32error.c:201 #, 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/chklocale.c:336 -msgid "Please report this to ." -msgstr "Bitte berichten Sie das an ." +msgid "unrecognized win32 error code: %lu" +msgstr "unbekannter win32-Fehlercode: %lu" #: ../port/dirmod.c:75 ../port/dirmod.c:88 ../port/dirmod.c:101 #, c-format @@ -18486,14 +18672,14 @@ msgid "could not set junction for \"%s\": %s\n" msgstr "konnte Junction für »%s« nicht erzeugen: %s\n" #: ../port/dirmod.c:358 -#, fuzzy, c-format +#, c-format msgid "could not get junction for \"%s\": %s" -msgstr "konnte Junction für »%s« nicht erzeugen: %s" +msgstr "konnte Junction für »%s« nicht lesen: %s" #: ../port/dirmod.c:361 -#, fuzzy, c-format +#, c-format msgid "could not get junction for \"%s\": %s\n" -msgstr "konnte Junction für »%s« nicht erzeugen: %s\n" +msgstr "konnte Junction für »%s« nicht lesen: %s\n" #: ../port/dirmod.c:443 #, c-format @@ -18515,6 +18701,15 @@ msgstr "konnte »stat« für Datei oder Verzeichnis »%s« nicht ausführen: %s\ msgid "could not remove file or directory \"%s\": %s\n" msgstr "konnte Datei oder Verzeichnis »%s« nicht entfernen: %s\n" +#: ../port/chklocale.c:329 ../port/chklocale.c:335 +#, 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/chklocale.c:337 +msgid "Please report this to ." +msgstr "Bitte berichten Sie das an ." + #: ../port/exec.c:125 ../port/exec.c:239 ../port/exec.c:282 #, c-format msgid "could not identify current directory: %s" @@ -18545,208 +18740,27 @@ msgstr "konnte nicht in Verzeichnis »%s« wechseln" msgid "could not read symbolic link \"%s\"" msgstr "konnte symbolische Verknüpfung »%s« nicht lesen" -#: ../port/exec.c:517 +#: ../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" msgstr "Kindprozess hat mit Code %d beendet" -#: ../port/exec.c:521 +#: ../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "Kindprozess wurde durch Ausnahme 0x%X beendet" -#: ../port/exec.c:530 +#: ../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "Kindprozess wurde von Signal %s beendet" -#: ../port/exec.c:533 +#: ../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "Kindprozess wurde von Signal %d beendet" -#: ../port/exec.c:537 +#: ../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "Kindprozess hat mit unbekanntem Status %d beendet" - -#: ../port/open.c:113 -msgid "sharing violation" -msgstr "Zugriffsverletzung (Sharing Violation)" - -#: ../port/open.c:113 -msgid "lock violation" -msgstr "Sperrverletzung" - -#: ../port/open.c:112 -#, c-format -msgid "could not open file \"%s\": %s" -msgstr "konnte Datei »%s« nicht öffnen: %s" - -#: ../port/open.c:114 -msgid "Continuing to retry for 30 seconds." -msgstr "Versuche werden für 30 Sekunden wiederholt." - -#: ../port/open.c:115 -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/strerror.c:25 -#, c-format -msgid "unrecognized error %d" -msgstr "unbekannter Fehler %d" - -#: ../port/win32error.c:188 -#, c-format -msgid "mapped win32 error code %lu to %d" -msgstr "win32-Fehlercode %lu nach %d abgebildet" - -#: ../port/win32error.c:199 -#, c-format -msgid "unrecognized win32 error code: %lu" -msgstr "unbekannter win32-Fehlercode: %lu" - -#~ msgid "syntax error in recovery command file: %s" -#~ msgstr "Syntaxfehler in Recovery-Kommandodatei: %s" - -#~ msgid "Lines should have the format parameter = 'value'." -#~ msgstr "Die Zeilen müssen das Format parameter = 'wert' haben." - -#~ msgid "array must not contain null values" -#~ msgstr "Array darf keine NULL-Werte enthalten" - -#~ msgid "index %u/%u/%u needs VACUUM FULL or REINDEX to finish crash recovery" -#~ msgstr "" -#~ "Index %u/%u/%u benötigt VACUUM FULL oder REINDEX, um Wiederherstellung " -#~ "nach Absturz abzuschließen" - -#~ msgid "Incomplete insertion detected during crash replay." -#~ msgstr "Unvollständige Einfügeoperation beim Crash-Replay entdeckt." - -#~ msgid "index \"%s\" needs VACUUM or REINDEX to finish crash recovery" -#~ msgstr "" -#~ "Index »%s« benötigt VACUUM oder REINDEX, um Wiederherstellung nach " -#~ "Absturz abzuschließen" - -#~ msgid "index \"%s\" needs VACUUM FULL or REINDEX to finish crash recovery" -#~ msgstr "" -#~ "Index »%s« benötigt VACUUM FULL oder REINDEX, um Wiederherstellung nach " -#~ "Absturz abzuschließen" - -#~ msgid "EnumValuesCreate() can only set a single OID" -#~ msgstr "EnumValuesCreate() kann nur eine einzelne OID setzen" - -#~ msgid "" -#~ "cannot cluster on index \"%s\" because access method does not handle null " -#~ "values" -#~ msgstr "" -#~ "kann nicht anhand des Index »%s« clustern, weil die Indexmethode keine " -#~ "NULL-Werte verarbeiten kann" - -#~ 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 "" -#~ "Sie können das möglicherweise umgehen, indem Sie die Spalte »%s« als NOT " -#~ "NULL markieren oder mit ALTER TABLE ... SET WITHOUT CLUSTER die Cluster-" -#~ "Markierung von der Tabelle entfernen." - -#~ msgid "" -#~ "You might be able to work around this by marking column \"%s\" NOT NULL." -#~ msgstr "" -#~ "Sie können das möglicherweise umgehen, indem Sie die Spalte »%s« als NOT " -#~ "NULL markieren." - -#~ msgid "" -#~ "cannot cluster on expressional index \"%s\" because its index access " -#~ "method does not handle null values" -#~ msgstr "" -#~ "kann nicht anhand des Ausdrucksindex »%s« clustern, weil die Indexmethode " -#~ "keine NULL-Werte verarbeiten kann" - -#~ msgid "\"%s\" is not a table, view, or composite type" -#~ msgstr "" -#~ "»%s« ist keine Tabelle, Sicht oder Sequenz und kein zusammengesetzter Typ" - -#~ msgid "must be member of role \"%s\" to comment upon it" -#~ msgstr "" -#~ "nur für Mitglieder der Rolle »%s« können einen Kommentar für sie erstellen" - -#~ msgid "must be superuser to comment on procedural language" -#~ msgstr "nur Superuser können Kommentare für prozedurale Sprachen erzeugen" - -#~ msgid "must be superuser to comment on text search parser" -#~ msgstr "nur Superuser können Kommentare für Textsucheparser erzeugen" - -#~ msgid "must be superuser to comment on text search template" -#~ msgstr "nur Superuser können Kommentare für Textsuchevorlagen erzeugen" - -#~ msgid "function \"%s\" is already in schema \"%s\"" -#~ msgstr "Funktion »%s« ist bereits in Schema »%s«" - -#~ msgid "cannot reference temporary table from permanent table constraint" -#~ msgstr "" -#~ "temporäre Tabelle kann nicht in permanentem Tabellen-Constraint benutzt " -#~ "werden" - -#~ msgid "cannot reference permanent table from temporary table constraint" -#~ msgstr "" -#~ "permanente Tabelle kann nicht in temporären Tabellen-Constraint benutzt " -#~ "werden" - -#~ msgid "composite type must have at least one attribute" -#~ msgstr "zusammengesetzter Typ muss mindestens ein Attribut haben" - -#~ msgid "database \"%s\" not found" -#~ msgstr "Datenbank »%s« nicht gefunden" - -#~ msgid "invalid list syntax for parameter \"datestyle\"" -#~ msgstr "ungültige Listensyntax für Parameter »datestyle«" - -#~ msgid "unrecognized \"datestyle\" key word: \"%s\"" -#~ msgstr "unbekanntes »datestyle«-Schlüsselwort: »%s«" - -#~ msgid "invalid interval value for time zone: month not allowed" -#~ msgstr "ungültige Intervallangabe für Zeitzone: Monat nicht erlaubt" - -#~ msgid "invalid interval value for time zone: day not allowed" -#~ msgstr "ungültige Intervallangabe für Zeitzone: Tag nicht erlaubt" - -#~ msgid "unrecognized time zone name: \"%s\"" -#~ msgstr "unbekannter Zeitzonenname: »%s«" - -#~ msgid "argument to pg_get_expr() must come from system catalogs" -#~ msgstr "Argument von pg_get_expr() muss aus den Systemkatalogen kommen" - -#~ msgid "cannot change view \"%s\"" -#~ msgstr "kann Sicht »%s« nicht ändern" - -#~ msgid "hostssl not supported on this platform" -#~ msgstr "hostssl wird auf dieser Plattform nicht unterstützt" - -#~ msgid "SELECT FOR UPDATE/SHARE cannot be applied to NEW or OLD" -#~ msgstr "" -#~ "SELECT FOR UPDATE/SHARE kann nicht auf NEW oder OLD angewendet werden" - -#~ msgid "could not create log file \"%s\": %m" -#~ msgstr "konnte Logdatei »%s« nicht erstellen: %m" - -#~ msgid "could not open new log file \"%s\": %m" -#~ msgstr "konnte neue Logdatei »%s« nicht öffnen: %m" - -#~ msgid "Sets immediate fsync at commit." -#~ msgstr "Setzt sofortiges Fsync beim Committen." - -#~ msgid "invalid list syntax for parameter \"log_destination\"" -#~ msgstr "ungültige Listensyntax für Parameter »log_destination«" - -#~ msgid "unrecognized \"log_destination\" key word: \"%s\"" -#~ msgstr "unbekanntes »log_destination«-Schlüsselwort: »%s«" - -#~ msgid "replication connection authorized: user=%s host=%s port=%s" -#~ msgstr "Replikationsverbindung authorisiert: Benutzer=%s Host=%s Port=%s" diff --git a/src/backend/po/es.po b/src/backend/po/es.po index 69b320de1f..159ed147f4 100644 --- a/src/backend/po/es.po +++ b/src/backend/po/es.po @@ -1,16 +1,13 @@ # Spanish message translation file for PostgreSQL server # -# Copyright (C) 2002-2010 PostgreSQL Global Development Group +# Copyright (C) 2002-2012 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # # Karim Mribti 2002. -# Alvaro Herrera 2003-2010 +# Alvaro Herrera 2003-2012 # Jaime Casanova 2005, 2006 # Emanuel Calvo Franco 2008 # -# pgtranslation Id: postgres.po,v 1.33 2011/03/15 22:01:30 alvherre Exp $ -# -# # Glosario: # # character carácter @@ -24,6 +21,9 @@ # to grant otorgar # lexeme lexema # locale configuración regional +# to lock bloquear +# lock (sustantivo) candado +# to obtain a lock bloquear un candado # mapping mapeo # operator class clase de operadores # to overflow desbordar @@ -43,7 +43,7 @@ # FIXME varios: # * "port" se traduce en forma inconsistente; corregir # * "window function" probablemente debería ser "función de ventana deslizante" -# * buscar un término mejor que "Entrada" para traducir "entry". +# * buscar un término mejor que "Entrada" para traducir "entry" (elemento?) # * traducimos "large object" como "objeto grande". ¿debería dejarse sin traducir? # * "concurrently" -> "por una transacción concurrente". Discutible ... # * "standby" -> ?? @@ -51,17263 +51,18841 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL server 9.0\n" +"Project-Id-Version: PostgreSQL server 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-12-09 02:56+0000\n" -"PO-Revision-Date: 2011-03-15 18:59-0300\n" +"POT-Creation-Date: 2013-08-26 19:39+0000\n" +"PO-Revision-Date: 2013-09-20 10:14-0300\n" "Last-Translator: Álvaro Herrera \n" "Language-Team: PgSQL Español \n" -"Language: \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: main/main.c:230 -#, c-format -msgid "%s: setsysinfo failed: %s\n" -msgstr "%s: setsysinfo falló: %s\n" - -#: main/main.c:249 -#, c-format -msgid "%s: WSAStartup failed: %d\n" -msgstr "%s: WSAStartup falló: %d\n" - -#: main/main.c:268 +#: postmaster/bgwriter.c:483 #, c-format -msgid "" -"%s is the PostgreSQL server.\n" -"\n" -msgstr "%s es el servidor PostgreSQL.\n" +msgid "checkpoints are occurring too frequently (%d second apart)" +msgid_plural "checkpoints are occurring too frequently (%d seconds apart)" +msgstr[0] "" +"los puntos de control están ocurriendo con demasiada frecuencia (cada %d " +"segundo)" +msgstr[1] "" +"los puntos de control están ocurriendo con demasiada frecuencia (cada %d " +"segundos)" -#: main/main.c:269 -#, c-format +#: postmaster/bgwriter.c:487 msgid "" -"Usage:\n" -" %s [OPTION]...\n" -"\n" +"Consider increasing the configuration parameter \"checkpoint_segments\"." msgstr "" -"Empleo:\n" -" %s [OPCION]...\n" +"Considere incrementar el parámetro de configuración «checkpoint_segments»." -#: main/main.c:270 +#: postmaster/bgwriter.c:599 #, c-format -msgid "Options:\n" -msgstr "Opciones:\n" +msgid "transaction log switch forced (archive_timeout=%d)" +msgstr "cambio forzado de registro de transacción (archive_timeout=%d)" -#: main/main.c:272 -#, c-format -msgid " -A 1|0 enable/disable run-time assert checking\n" +#: postmaster/bgwriter.c:1062 +msgid "checkpoint request failed" +msgstr "falló la petición de punto de control" + +#: postmaster/bgwriter.c:1063 +msgid "Consult recent messages in the server log for details." msgstr "" -" -A 1|0 activar/desactivar el uso de aseveraciones (asserts)\n" +"Vea los mensajes recientes en el registro del servidor para obtener más " +"detalles." -#: main/main.c:274 +#: postmaster/bgwriter.c:1245 #, c-format -msgid " -B NBUFFERS number of shared buffers\n" -msgstr " -B NBUFFERS número de búfers de memoria compartida\n" +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" -#: main/main.c:275 +#: postmaster/pgstat.c:330 #, c-format -msgid " -c NAME=VALUE set run-time parameter\n" -msgstr " -c VAR=VALOR definir parámetro de ejecución\n" +msgid "could not resolve \"localhost\": %s" +msgstr "no se pudo resolver «localhost»: %s" -#: main/main.c:276 -#, c-format -msgid " -d 1-5 debugging level\n" -msgstr " -d 1-5 nivel de depuración\n" +#: postmaster/pgstat.c:353 +msgid "trying another address for the statistics collector" +msgstr "intentando otra dirección para el recolector de estadísticas" -#: main/main.c:277 +#: postmaster/pgstat.c:362 #, c-format -msgid " -D DATADIR database directory\n" -msgstr " -D DATADIR directorio de bases de datos\n" +msgid "could not create socket for statistics collector: %m" +msgstr "no se pudo crear el socket para el recolector de estadísticas: %m" -#: main/main.c:278 +#: postmaster/pgstat.c:374 #, c-format -msgid " -e use European date input format (DMY)\n" -msgstr " -e usar estilo europeo de fechas (DMY)\n" +msgid "could not bind socket for statistics collector: %m" +msgstr "" +"no se pudo enlazar (bind) el socket para el recolector de estadísticas: %m" -#: main/main.c:279 +#: postmaster/pgstat.c:385 #, c-format -msgid " -F turn fsync off\n" -msgstr " -F desactivar fsync\n" +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" -#: main/main.c:280 +#: postmaster/pgstat.c:401 #, 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" +msgid "could not connect socket for statistics collector: %m" +msgstr "no se pudo conectar el socket para el recolector de estadísticas: %m" -#: main/main.c:281 +#: postmaster/pgstat.c:422 #, c-format -msgid " -i enable TCP/IP connections\n" -msgstr " -i activar conexiones TCP/IP\n" +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" -#: main/main.c:282 +#: postmaster/pgstat.c:448 postmaster/pgstat.c:2996 #, c-format -msgid " -k DIRECTORY Unix-domain socket location\n" -msgstr " -k DIRECTORIO ubicación del socket Unix\n" +msgid "select() failed in statistics collector: %m" +msgstr "select() falló en el recolector de estadísticas: %m" -#: main/main.c:284 -#, c-format -msgid " -l enable SSL connections\n" -msgstr " -l activar conexiones SSL\n" +#: postmaster/pgstat.c:463 +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" -#: main/main.c:286 +#: postmaster/pgstat.c:478 #, c-format -msgid " -N MAX-CONNECT maximum number of allowed connections\n" -msgstr " -N MAX-CONN número máximo de conexiones permitidas\n" +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" -#: main/main.c:287 -#, c-format -msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n" +#: postmaster/pgstat.c:488 +msgid "incorrect test message transmission on socket for statistics collector" msgstr "" -" -o OPCIONES pasar «OPCIONES» a cada proceso servidor (obsoleto)\n" +"transmisión del mensaje de prueba incorrecta en el socket del recolector de " +"estadísticas" -#: main/main.c:288 +#: postmaster/pgstat.c:511 #, c-format -msgid " -p PORT port number to listen on\n" -msgstr " -p PUERTO número de puerto en el cual escuchar\n" +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" -#: main/main.c:289 -#, c-format -msgid " -s show statistics after each query\n" -msgstr " -s mostrar estadísticas después de cada consulta\n" +#: postmaster/pgstat.c:521 +msgid "disabling statistics collector for lack of working socket" +msgstr "desactivando el recolector de estadísticas por falla del socket" -#: main/main.c:290 +#: postmaster/pgstat.c:623 #, c-format -msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n" +msgid "could not fork statistics collector: %m" +msgstr "no se pudo crear el proceso para el recolector de estadísticas: %m" + +#: postmaster/pgstat.c:1153 postmaster/pgstat.c:1177 postmaster/pgstat.c:1208 +msgid "must be superuser to reset statistics counters" msgstr "" -" -S WORK-MEM mostrar cantidad de memoria para ordenamientos (en kB)\n" +"debe ser superusuario para reinicializar los contadores de estadísticas" -#: main/main.c:291 +#: postmaster/pgstat.c:1184 utils/adt/pgstatfuncs.c:1547 #, c-format -msgid " --NAME=VALUE set run-time parameter\n" -msgstr " --NOMBRE=VALOR definir parámetro de ejecución\n" +msgid "unrecognized reset target: \"%s\"" +msgstr "destino de reset no reconocido: «%s»" -#: main/main.c:292 -#, c-format -msgid " --describe-config describe configuration parameters, then exit\n" -msgstr "" -" --describe-config\n" -" mostrar parámetros de configuración y salir\n" +#: postmaster/pgstat.c:1185 utils/adt/pgstatfuncs.c:1548 +msgid "Target must be \"bgwriter\"." +msgstr "El destino debe ser «bgwriter»." -#: main/main.c:293 +#: postmaster/pgstat.c:2975 #, c-format -msgid " --help show this help, then exit\n" -msgstr " --help desplegar esta ayuda y salir\n" +msgid "poll() failed in statistics collector: %m" +msgstr "poll() falló en el recolector de estadísticas: %m" -#: main/main.c:294 +#: postmaster/pgstat.c:3020 #, c-format -msgid " --version output version information, then exit\n" -msgstr " --version desplegar número de versión y salir\n" +msgid "could not read statistics message: %m" +msgstr "no se pudo leer un mensaje de estadísticas: %m" -#: main/main.c:296 +#: postmaster/pgstat.c:3291 #, c-format -msgid "" -"\n" -"Developer options:\n" -msgstr "" -"\n" -"Opciones de desarrollador:\n" +msgid "could not open temporary statistics file \"%s\": %m" +msgstr "no se pudo abrir el archivo temporal de estadísticas «%s»: %m" -#: main/main.c:297 +#: postmaster/pgstat.c:3363 #, 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" +msgid "could not write temporary statistics file \"%s\": %m" +msgstr "no se pudo escribir el archivo temporal de estadísticas «%s»: %m" -#: main/main.c:298 +#: postmaster/pgstat.c:3372 #, 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" +msgid "could not close temporary statistics file \"%s\": %m" +msgstr "no se pudo cerrar el archivo temporal de estadísticas «%s»: %m" -#: main/main.c:299 +#: postmaster/pgstat.c:3380 #, c-format -msgid " -O allow system table structure changes\n" +msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" msgstr "" -" -O permitir cambios en estructura de tablas de sistema\n" +"no se pudo cambiar el nombre al archivo temporal de estadísticas de «%s» a " +"«%s»: %m" -#: main/main.c:300 +#: postmaster/pgstat.c:3486 postmaster/pgstat.c:3715 #, c-format -msgid " -P disable system indexes\n" -msgstr " -P desactivar índices de sistema\n" +msgid "could not open statistics file \"%s\": %m" +msgstr "no se pudo abrir el archivo de estadísticas «%s»: %m" -#: main/main.c:301 +#: postmaster/pgstat.c:3498 postmaster/pgstat.c:3508 postmaster/pgstat.c:3530 +#: postmaster/pgstat.c:3545 postmaster/pgstat.c:3608 postmaster/pgstat.c:3626 +#: postmaster/pgstat.c:3642 postmaster/pgstat.c:3660 postmaster/pgstat.c:3676 +#: postmaster/pgstat.c:3727 postmaster/pgstat.c:3738 #, 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" +msgid "corrupted statistics file \"%s\"" +msgstr "el archivo de estadísticas «%s» está corrupto" -#: main/main.c:302 -#, c-format -msgid " -T send SIGSTOP to all backend servers if one dies\n" +#: postmaster/pgstat.c:4036 +msgid "database hash table corrupted during cleanup --- abort" msgstr "" -" -T enviar SIGSTOP a todos los backends si uno de ellos muere\n" +"el hash de bases de datos se corrompió durante la finalización; abortando" -#: main/main.c:303 +#: postmaster/autovacuum.c:359 #, 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" +msgid "could not fork autovacuum launcher process: %m" +msgstr "no se pudo iniciar el lanzador autovacuum: %m" + +#: postmaster/autovacuum.c:404 +msgid "autovacuum launcher started" +msgstr "lanzador de autovacuum iniciado" -#: main/main.c:305 +#: postmaster/autovacuum.c:781 +msgid "autovacuum launcher shutting down" +msgstr "apagando lanzador de autovacuum" + +#: postmaster/autovacuum.c:1416 #, c-format -msgid "" -"\n" -"Options for single-user mode:\n" -msgstr "" -"\n" -"Opciones para modo mono-usuario:\n" +msgid "could not fork autovacuum worker process: %m" +msgstr "no se pudo lanzar el proceso «autovacuum worker»: %m" -#: main/main.c:306 +#: postmaster/autovacuum.c:1634 #, 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" +msgid "autovacuum: processing database \"%s\"" +msgstr "autovacuum: procesando la base de datos «%s»" -#: main/main.c:307 +#: postmaster/autovacuum.c:2037 #, c-format -msgid " DBNAME database name (defaults to user name)\n" +msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"" msgstr "" -" DBNAME nombre de base de datos (el valor por omisión es el nombre " -"de usuario)\n" +"autovacuum: eliminando la tabla temporal huérfana «%s».«%s» en la base de " +"datos «%s»" -#: main/main.c:308 +#: postmaster/autovacuum.c:2049 #, c-format -msgid " -d 0-5 override debugging level\n" -msgstr " -d 0-5 nivel de depuración\n" +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»" -#: main/main.c:309 +#: postmaster/autovacuum.c:2319 #, c-format -msgid " -E echo statement before execution\n" -msgstr " -E mostrar las consultas antes de su ejecución\n" +msgid "automatic vacuum of table \"%s.%s.%s\"" +msgstr "vacuum automático de la tabla «%s.%s.%s»" -#: main/main.c:310 +#: postmaster/autovacuum.c:2322 #, 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" +msgid "automatic analyze of table \"%s.%s.%s\"" +msgstr "análisis automático de la tabla «%s.%s.%s»" + +#: postmaster/autovacuum.c:2808 +msgid "autovacuum not started because of misconfiguration" +msgstr "autovacuum no fue iniciado debido a un error de configuración" + +#: postmaster/autovacuum.c:2809 +msgid "Enable the \"track_counts\" option." +msgstr "Active la opción «track_counts»." -#: main/main.c:311 main/main.c:316 +#: postmaster/syslogger.c:418 #, 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" +msgid "select() failed in logger process: %m" +msgstr "select() falló en proceso de log: %m" -#: main/main.c:313 +#: postmaster/syslogger.c:430 postmaster/syslogger.c:1014 #, c-format -msgid "" -"\n" -"Options for bootstrapping mode:\n" -msgstr "" -"\n" -"Opciones para modo de inicio (bootstrapping):\n" +msgid "could not read from logger pipe: %m" +msgstr "no se pudo leer desde la tubería de log: %m" -#: main/main.c:314 -#, c-format -msgid " --boot selects bootstrapping mode (must be first argument)\n" -msgstr "" -" --boot selecciona modo de inicio (debe ser el primer argumento)\n" +#: postmaster/syslogger.c:477 +msgid "logger shutting down" +msgstr "apagando proceso de log" -#: main/main.c:315 +#: postmaster/syslogger.c:521 postmaster/syslogger.c:535 #, 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" +msgid "could not create pipe for syslog: %m" +msgstr "no se pudo crear la tubería para syslog: %m" -#: main/main.c:317 +#: postmaster/syslogger.c:571 #, c-format -msgid " -x NUM internal use\n" -msgstr " -x NUM uso interno\n" +msgid "could not fork system logger: %m" +msgstr "no se pudo crear el proceso de log: %m" -#: main/main.c:319 +#: postmaster/syslogger.c:602 #, 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" -"Por favor lea la documentación para obtener la lista completa de\n" -"parámetros de configuración y cómo definirlos en la línea de órdenes\n" -"y en el archivo de configuración.\n" -"\n" -"Reporte errores a \n" - -#: main/main.c:333 -msgid "" -"\"root\" execution of the PostgreSQL server is not permitted.\n" -"The server must be started under an unprivileged user ID to prevent\n" -"possible system security compromise. See the documentation for\n" -"more information on how to properly start the server.\n" -msgstr "" -"No se permite ejecución del servidor PostgreSQL como «root».\n" -"El servidor debe ser iniciado con un usuario no privilegiado\n" -"para prevenir posibles compromisos de seguridad del sistema.\n" -"Vea la documentación para obtener más información acerca de cómo\n" -"iniciar correctamente el servidor.\n" +msgid "could not redirect stdout: %m" +msgstr "no se pudo redirigir stdout: %m" -#: main/main.c:350 +#: postmaster/syslogger.c:607 postmaster/syslogger.c:625 #, 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:357 -msgid "" -"Execution of PostgreSQL by a user with administrative permissions is not\n" -"permitted.\n" -"The server must be started under an unprivileged user ID to prevent\n" -"possible system security compromises. See the documentation for\n" -"more information on how to properly start the server.\n" -msgstr "" -"No se permite ejecución del servidor PostgreSQL por un usuario con " -"privilegios administrativos.\n" -"El servidor debe ser iniciado con un usuario no privilegiado\n" -"para prevenir posibles compromisos de seguridad del sistema.\n" -"Vea la documentación para obtener más información acerca de cómo\n" -"iniciar correctamente el servidor.\n" +msgid "could not redirect stderr: %m" +msgstr "no se pudo redirigir stderr: %m" -#: main/main.c:378 +#: postmaster/syslogger.c:969 #, c-format -msgid "%s: invalid effective UID: %d\n" -msgstr "%s: el UID de usuario efectivo no es válido: %d\n" +msgid "could not write to log file: %s\n" +msgstr "no se pudo escribir al archivo de log: %s\n" -#: main/main.c:391 +#: postmaster/syslogger.c:1095 #, 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" +msgid "could not open log file \"%s\": %m" +msgstr "no se pudo abrir el archivo de registro «%s»: %m" -#: tsearch/wparser_def.c:2533 -#, c-format -msgid "unrecognized headline parameter: \"%s\"" -msgstr "parámetro de encabezado (headline) no reconocido: «%s»" +#: postmaster/syslogger.c:1157 postmaster/syslogger.c:1201 +msgid "disabling automatic rotation (use SIGHUP to re-enable)" +msgstr "desactivando rotación automática (use SIGHUP para reactivarla)" -#: tsearch/wparser_def.c:2542 -msgid "MinWords should be less than MaxWords" -msgstr "MinWords debería ser menor que MaxWords" +#: postmaster/pgarch.c:158 +#, c-format +msgid "could not fork archiver: %m" +msgstr "no se pudo lanzar el proceso archivador: %m" -#: tsearch/wparser_def.c:2546 -msgid "MinWords should be positive" -msgstr "MinWords debería ser positivo" +#: postmaster/pgarch.c:450 +msgid "archive_mode enabled, yet archive_command is not set" +msgstr "archive_mode activado, pero archive_command no está definido" -#: tsearch/wparser_def.c:2550 -msgid "ShortWord should be >= 0" -msgstr "ShortWord debería ser >= 0" +#: postmaster/pgarch.c:465 +#, c-format +msgid "transaction log file \"%s\" could not be archived: too many failures" +msgstr "" +"el archivo de transacción «%s» no pudo ser archivado: demasiadas fallas" -#: tsearch/wparser_def.c:2554 -msgid "MaxFragments should be >= 0" -msgstr "MaxFragments debería ser >= 0" +#: postmaster/pgarch.c:568 +#, c-format +msgid "archive command failed with exit code %d" +msgstr "la orden de archivado falló con código de retorno %d" -#: tsearch/dict_ispell.c:52 tsearch/dict_thesaurus.c:615 -msgid "multiple DictFile parameters" -msgstr "parámetro DictFile duplicado" +#: 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 "La orden fallida era: «%s»" -#: tsearch/dict_ispell.c:63 -msgid "multiple AffFile parameters" -msgstr "parámetro AffFile duplicado" +#: postmaster/pgarch.c:577 +#, c-format +msgid "archive command was terminated by exception 0x%X" +msgstr "la orden de archivado fue terminada por una excepción 0x%X" -#: tsearch/dict_ispell.c:74 tsearch/dict_simple.c:50 -#: snowball/dict_snowball.c:206 -msgid "multiple StopWords parameters" -msgstr "parámetro StopWords duplicado" +#: postmaster/pgarch.c:579 postmaster/postmaster.c:2888 +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." -#: tsearch/dict_ispell.c:82 +#: postmaster/pgarch.c:584 #, c-format -msgid "unrecognized Ispell parameter: \"%s\"" -msgstr "parámetro Ispell no reconocido: «%s»" +msgid "archive command was terminated by signal %d: %s" +msgstr "la orden de archivado fue terminada por una señal %d: %s" -#: tsearch/dict_ispell.c:96 -msgid "missing AffFile parameter" -msgstr "falta un parámetro AffFile" +#: postmaster/pgarch.c:591 +#, c-format +msgid "archive command was terminated by signal %d" +msgstr "la orden de archivado fue terminada por una señal %d" -#: tsearch/dict_ispell.c:102 tsearch/dict_thesaurus.c:639 -msgid "missing DictFile parameter" -msgstr "falta un parámetro DictFile" +#: postmaster/pgarch.c:600 +#, c-format +msgid "archive command exited with unrecognized status %d" +msgstr "la orden de archivado fue terminada con código no reconocido %d" -#: tsearch/dict_simple.c:59 -msgid "multiple Accept parameters" -msgstr "parámetro Accept duplicado" +#: postmaster/pgarch.c:612 +#, c-format +msgid "archived transaction log file \"%s\"" +msgstr "el archivo de registro «%s» ha sido archivado" -#: tsearch/dict_simple.c:67 +#: postmaster/pgarch.c:661 #, c-format -msgid "unrecognized simple dictionary parameter: \"%s\"" -msgstr "parámetro del diccionario simple no reconocido: «%s»" +msgid "could not open archive status directory \"%s\": %m" +msgstr "no se pudo abrir el directorio de estado de archivado «%s»: %m" -#: tsearch/dict_synonym.c:119 +#: postmaster/pgarch.c:715 access/transam/xlog.c:4613 +#: access/transam/xlog.c:5573 access/transam/xlog.c:5626 +#: access/transam/xlog.c:6415 #, c-format -msgid "unrecognized synonym parameter: \"%s\"" -msgstr "parámetro de sinónimo no reconocido «%s»" +msgid "could not rename file \"%s\" to \"%s\": %m" +msgstr "no se pudo renombrar el archivo de «%s» a «%s»: %m" -#: tsearch/dict_synonym.c:126 -msgid "missing Synonyms parameter" -msgstr "falta un parámetro Synonyms" +#: postmaster/postmaster.c:574 +#, c-format +msgid "%s: invalid argument for option -f: \"%s\"\n" +msgstr "%s: argumento no válido para la opción -f: «%s»\n" -#: tsearch/dict_synonym.c:133 +#: postmaster/postmaster.c:660 #, c-format -msgid "could not open synonym file \"%s\": %m" -msgstr "no se pudo abrir el archivo de sinónimos «%s»: %m" +msgid "%s: invalid argument for option -t: \"%s\"\n" +msgstr "%s: argumento no válido para la opción -t: «%s»\n" -#: tsearch/dict_thesaurus.c:180 +#: postmaster/postmaster.c:683 bootstrap/bootstrap.c:277 tcop/postgres.c:3441 #, c-format -msgid "could not open thesaurus file \"%s\": %m" -msgstr "no se pudo abrir el archivo del tesauro «%s»: %m" +msgid "--%s requires a value" +msgstr "--%s requiere un valor" -#: tsearch/dict_thesaurus.c:213 -msgid "unexpected delimiter" -msgstr "delimitador inesperado" +#: postmaster/postmaster.c:688 bootstrap/bootstrap.c:282 tcop/postgres.c:3446 +#, c-format +msgid "-c %s requires a value" +msgstr "-c %s requiere un valor" -#: tsearch/dict_thesaurus.c:263 tsearch/dict_thesaurus.c:279 -msgid "unexpected end of line or lexeme" -msgstr "fin de línea o lexema inesperado" +#: postmaster/postmaster.c:700 postmaster/postmaster.c:713 +#: bootstrap/bootstrap.c:293 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Pruebe «%s --help» para mayor información.\n" -#: tsearch/dict_thesaurus.c:288 -msgid "unexpected end of line" -msgstr "fin de línea inesperado" +#: postmaster/postmaster.c:711 +#, c-format +msgid "%s: invalid argument: \"%s\"\n" +msgstr "%s: argumento no válido: «%s»\n" -#: tsearch/dict_thesaurus.c:412 +#: postmaster/postmaster.c:736 #, c-format -msgid "" -"thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)" +msgid "%s: superuser_reserved_connections must be less than max_connections\n" msgstr "" -"la palabra muestra «%s» del tesauro no es reconocido por el subdiccionario " -"(regla %d)" +"%s: superuser_reserved_connections debe ser menor que max_connections\n" -# XXX -- stopword? -#: tsearch/dict_thesaurus.c:418 +#: postmaster/postmaster.c:741 #, 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)" - -# XXX -- stopword? -#: tsearch/dict_thesaurus.c:421 -msgid "Use \"?\" to represent a stop word within a sample phrase." -msgstr "Use «?» para representar una stopword en una frase muestra." +msgid "%s: max_wal_senders must be less than max_connections\n" +msgstr "%s: max_wal_senders debe ser menor que max_connections\n" -# XXX -- stopword? -#: tsearch/dict_thesaurus.c:567 -#, 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)" +#: postmaster/postmaster.c:746 +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»" -#: tsearch/dict_thesaurus.c:574 -#, c-format +#: postmaster/postmaster.c:749 msgid "" -"thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)" +"WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or " +"\"hot_standby\"" msgstr "" -"la palabra sustituta «%s» del tesauro no es reconocida por el subdiccionario " -"(regla %d)" +"el flujo de WAL (max_wal_senders > 0) requiere wal_level «archive» o " +"«hot_standby»" -#: tsearch/dict_thesaurus.c:586 +#: postmaster/postmaster.c:757 #, c-format -msgid "thesaurus substitute phrase is empty (rule %d)" -msgstr "la frase sustituta del tesauro está vacía (regla %d)" +msgid "%s: invalid datetoken tables, please fix\n" +msgstr "%s: las tablas de palabras clave de fecha no son válidas, arréglelas\n" -#: tsearch/dict_thesaurus.c:624 -msgid "multiple Dictionary parameters" -msgstr "parámetro Dictionary duplicado" +#: postmaster/postmaster.c:857 +msgid "invalid list syntax for \"listen_addresses\"" +msgstr "la sintaxis de lista no es válida para el parámetro «listen_addresses»" -#: tsearch/dict_thesaurus.c:631 +#: postmaster/postmaster.c:887 #, c-format -msgid "unrecognized Thesaurus parameter: \"%s\"" -msgstr "parámetro no reconocido de tesauro: «%s»" - -#: tsearch/dict_thesaurus.c:643 -msgid "missing Dictionary parameter" -msgstr "falta un paramétro Dictionary" +msgid "could not create listen socket for \"%s\"" +msgstr "no se pudo crear el socket de escucha para «%s»" -#: tsearch/spell.c:204 -#, c-format -msgid "could not open dictionary file \"%s\": %m" -msgstr "no se pudo abrir el archivo de diccionario «%s»: %m" +#: postmaster/postmaster.c:893 +msgid "could not create any TCP/IP sockets" +msgstr "no se pudo crear ningún socket TCP/IP" -#: tsearch/spell.c:365 utils/adt/regexp.c:190 -#, c-format -msgid "invalid regular expression: %s" -msgstr "la expresión regular no es válida: %s" +#: postmaster/postmaster.c:944 +msgid "could not create Unix-domain socket" +msgstr "no se pudo crear el socket de dominio Unix" -#: tsearch/spell.c:444 tsearch/spell.c:461 tsearch/spell.c:478 -#: tsearch/spell.c:495 tsearch/spell.c:517 gram.y:11474 gram.y:11491 -msgid "syntax error" -msgstr "error de sintaxis" +#: postmaster/postmaster.c:952 +msgid "no socket created for listening" +msgstr "no se creó el socket de atención" -#: tsearch/spell.c:522 tsearch/spell.c:772 tsearch/spell.c:792 -msgid "multibyte flag character is not allowed" -msgstr "los caracteres bandera multibyte no están permitidos" +#: postmaster/postmaster.c:991 +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" -#: tsearch/spell.c:557 tsearch/spell.c:615 tsearch/spell.c:710 +#: postmaster/postmaster.c:1035 #, c-format -msgid "could not open affix file \"%s\": %m" -msgstr "no se pudo abrir el archivo de afijos «%s»: %m" - -#: tsearch/spell.c:603 -msgid "Ispell dictionary supports only default flag value" -msgstr "el diccionario Ispell sólo permite el valor de bandera «default»" +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" -#: tsearch/spell.c:803 -msgid "wrong affix file format for flag" -msgstr "formato de archivo de afijos incorrecto para la bandera" +#: postmaster/postmaster.c:1103 utils/init/postinit.c:197 +msgid "could not load pg_hba.conf" +msgstr "no se pudo cargar pg_hba.conf" -#: tsearch/to_tsany.c:165 utils/adt/tsvector.c:272 utils/adt/tsvector_op.c:514 +#: postmaster/postmaster.c:1156 #, 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)" +msgid "%s: could not locate matching postgres executable" +msgstr "%s: no se pudo localizar el ejecutable postgres correspondiente" -#: tsearch/ts_locale.c:168 +#: postmaster/postmaster.c:1177 utils/misc/tzparser.c:323 utils/adt/misc.c:213 +#: utils/adt/genfile.c:353 commands/tablespace.c:689 commands/tablespace.c:699 +#: storage/file/fd.c:1682 storage/file/copydir.c:67 storage/file/copydir.c:106 #, c-format -msgid "line %d of configuration file \"%s\": \"%s\"" -msgstr "línea %d del archivo de configuración «%s»: «%s»" +msgid "could not open directory \"%s\": %m" +msgstr "no se pudo abrir el directorio «%s»: %m" -#: tsearch/ts_locale.c:173 libpq/hba.c:653 libpq/hba.c:669 libpq/hba.c:715 -#: libpq/hba.c:738 libpq/hba.c:750 libpq/hba.c:763 libpq/hba.c:778 -#: libpq/hba.c:825 libpq/hba.c:848 libpq/hba.c:865 libpq/hba.c:878 -#: libpq/hba.c:894 libpq/hba.c:909 libpq/hba.c:949 libpq/hba.c:981 -#: libpq/hba.c:992 libpq/hba.c:1004 libpq/hba.c:1015 libpq/hba.c:1032 -#: libpq/hba.c:1053 libpq/hba.c:1082 libpq/hba.c:1094 libpq/hba.c:1107 -#: libpq/hba.c:1141 libpq/hba.c:1215 libpq/hba.c:1233 libpq/hba.c:1254 -#: libpq/hba.c:1285 libpq/hba.c:1295 +#: postmaster/postmaster.c:1179 utils/misc/tzparser.c:325 #, c-format -msgid "line %d of configuration file \"%s\"" -msgstr "línea %d del archivo de configuración «%s»" +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." -#: tsearch/ts_locale.c:288 +#: postmaster/postmaster.c:1207 #, 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" - -#: 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 "la palabra es demasiado larga para ser indexada" +msgid "data directory \"%s\" does not exist" +msgstr "no existe el directorio de datos «%s»" -#: tsearch/ts_parse.c:392 tsearch/ts_parse.c:399 tsearch/ts_parse.c:562 -#: tsearch/ts_parse.c:569 +#: postmaster/postmaster.c:1212 #, c-format -msgid "Words longer than %d characters are ignored." -msgstr "Las palabras más largas que %d caracteres son ignoradas." +msgid "could not read permissions of directory \"%s\": %m" +msgstr "no se pudo obtener los permisos del directorio «%s»: %m" -#: tsearch/ts_utils.c:53 +#: postmaster/postmaster.c:1220 #, c-format -msgid "invalid text search configuration file name \"%s\"" -msgstr "nombre de configuración de búsqueda en texto «%s» no válido" +msgid "specified data directory \"%s\" is not a directory" +msgstr "el directorio de datos especificado «%s» no es un directorio" -#: tsearch/ts_utils.c:91 +#: postmaster/postmaster.c:1236 #, c-format -msgid "could not open stop-word file \"%s\": %m" -msgstr "no se pudo abrir el archivo de stopwords «%s»: %m" +msgid "data directory \"%s\" has wrong ownership" +msgstr "el directorio de datos «%s» tiene dueño equivocado" -#: tsearch/wparser.c:314 -msgid "text search parser does not support headline creation" +#: postmaster/postmaster.c:1238 +msgid "The server must be started by the user that owns the data directory." msgstr "" -"el analizador de búsqueda en texto no soporta creación de encabezados " -"(headline)" +"El servidor debe ser iniciado por el usuario dueño del directorio de datos." -#: access/transam/slru.c:595 +#: postmaster/postmaster.c:1258 #, c-format -msgid "file \"%s\" doesn't exist, reading as zeroes" -msgstr "el archivo «%s» no existe, leyendo como ceros" +msgid "data directory \"%s\" has group or world access" +msgstr "el directorio de datos «%s» tiene acceso para el grupo u otros" -#: access/transam/slru.c:825 access/transam/slru.c:831 -#: access/transam/slru.c:838 access/transam/slru.c:845 -#: access/transam/slru.c:852 access/transam/slru.c:859 +#: postmaster/postmaster.c:1260 +msgid "Permissions should be u=rwx (0700)." +msgstr "Los permisos deberían ser u=rwx (0700)." + +#: postmaster/postmaster.c:1271 #, c-format -msgid "could not access status of transaction %u" -msgstr "no se pudo encontrar el estado de la transacción %u" +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: no se pudo encontrar el sistema de base de datos.\n" +"Se esperaba encontrar en el directorio PGDATA «%s»,\n" +"pero no se pudo abrir el archivo «%s»: %s\n" -#: access/transam/slru.c:826 +#: postmaster/postmaster.c:1307 #, c-format -msgid "Could not open file \"%s\": %m." -msgstr "No se pudo abrir el archivo «%s»: %m." +msgid "%s: could not open file \"%s\": %s\n" +msgstr "%s: no se pudo abrir el archivo «%s»: %s\n" -#: access/transam/slru.c:832 +#: postmaster/postmaster.c:1314 #, c-format -msgid "Could not seek in file \"%s\" to offset %u: %m." -msgstr "No se pudo posicionar (seek) en el archivo «%s» a la posición %u: %m." +msgid "%s: could not open log file \"%s/%s\": %s\n" +msgstr "%s: no se pudo abrir archivo de log «%s/%s»: %s\n" -#: access/transam/slru.c:839 +#: postmaster/postmaster.c:1325 #, c-format -msgid "Could not read from file \"%s\" at offset %u: %m." -msgstr "No se pudo leer desde el archivo «%s» en la posición %u: %m." +msgid "%s: could not fork background process: %s\n" +msgstr "%s: no se pudo lanzar el proceso en segundo plano: %s\n" -#: access/transam/slru.c:846 +#: postmaster/postmaster.c:1347 #, c-format -msgid "Could not write to file \"%s\" at offset %u: %m." -msgstr "No se pudo escribir al archivo «%s» en la posición %u: %m." +msgid "%s: could not dissociate from controlling TTY: %s\n" +msgstr "%s: no se pudo disociar del TTY de control: %s\n" -#: access/transam/slru.c:853 +#: postmaster/postmaster.c:1442 #, c-format -msgid "Could not fsync file \"%s\": %m." -msgstr "No se pudo sincronizar (fsync) archivo «%s»: %m." +msgid "select() failed in postmaster: %m" +msgstr "select() falló en postmaster: %m" -#: access/transam/slru.c:860 +#: postmaster/postmaster.c:1604 postmaster/postmaster.c:1635 +msgid "incomplete startup packet" +msgstr "el paquete de inicio está incompleto" + +#: postmaster/postmaster.c:1616 +msgid "invalid length of startup packet" +msgstr "el de paquete de inicio tiene largo incorrecto" + +#: postmaster/postmaster.c:1673 #, c-format -msgid "Could not close file \"%s\": %m." -msgstr "No se pudo cerrar el archivo «%s»: %m." +msgid "failed to send SSL negotiation response: %m" +msgstr "no se pudo enviar la respuesta de negociación SSL: %m" -#: access/transam/slru.c:1087 +#: postmaster/postmaster.c:1702 #, c-format -msgid "could not truncate directory \"%s\": apparent wraparound" +msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" msgstr "" -"no se pudo truncar el directorio «%s»: aparente problema por reciclaje de " -"transacciones" +"el protocolo %u.%u no está soportado: servidor soporta %u.0 hasta %u.%u" -#: access/transam/slru.c:1168 -#, c-format -msgid "removing file \"%s\"" -msgstr "eliminando el archivo «%s»" +#: postmaster/postmaster.c:1753 +msgid "invalid value for boolean option \"replication\"" +msgstr "valor no válido para la opción booleana «replication»" -#: access/transam/twophase.c:247 -#, c-format -msgid "transaction identifier \"%s\" is too long" -msgstr "identificador de transacción «%s» es demasiado largo" +#: postmaster/postmaster.c:1773 +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" -#: access/transam/twophase.c:254 -msgid "prepared transactions are disabled" -msgstr "las transacciones preparadas están deshabilitadas" +#: postmaster/postmaster.c:1801 +msgid "no PostgreSQL user name specified in startup packet" +msgstr "no se especifica un nombre de usuario en el paquete de inicio" -#: access/transam/twophase.c:255 -msgid "Set max_prepared_transactions to a nonzero value." -msgstr "Defina max_prepared_transactions a un valor distinto de cero." +#: postmaster/postmaster.c:1858 +msgid "the database system is starting up" +msgstr "el sistema de base de datos está iniciándose" -#: access/transam/twophase.c:288 -#, c-format -msgid "transaction identifier \"%s\" is already in use" -msgstr "identificador de transacción «%s» ya está siendo utilizado" +#: postmaster/postmaster.c:1863 +msgid "the database system is shutting down" +msgstr "el sistema de base de datos está apagándose" -#: access/transam/twophase.c:297 -msgid "maximum number of prepared transactions reached" -msgstr "se alcanzó el número máximo de transacciones preparadas" +#: postmaster/postmaster.c:1868 +msgid "the database system is in recovery mode" +msgstr "el sistema de base de datos está en modo de recuperación" + +#: postmaster/postmaster.c:1873 storage/ipc/procarray.c:271 +#: storage/ipc/sinvaladt.c:302 storage/lmgr/proc.c:304 +msgid "sorry, too many clients already" +msgstr "lo siento, ya tenemos demasiados clientes" -#: access/transam/twophase.c:298 +#: postmaster/postmaster.c:1935 #, c-format -msgid "Increase max_prepared_transactions (currently %d)." -msgstr "Incremente max_prepared_transactions (actualmente es %d)." +msgid "wrong key in cancel request for process %d" +msgstr "llave incorrecta en la petición de cancelación para el proceso %d" -#: access/transam/twophase.c:418 +#: postmaster/postmaster.c:1943 #, c-format -msgid "prepared transaction with identifier \"%s\" is busy" -msgstr "transacción preparada con identificador «%s» está ocupada" +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" -#: access/transam/twophase.c:426 -msgid "permission denied to finish prepared transaction" -msgstr "permiso denegado para finalizar la transacción preparada" +#: postmaster/postmaster.c:2015 postmaster/postmaster.c:2046 +#: postmaster/postmaster.c:3248 postmaster/postmaster.c:3927 +#: postmaster/postmaster.c:4013 postmaster/postmaster.c:4630 +#: utils/hash/dynahash.c:368 utils/hash/dynahash.c:445 +#: utils/hash/dynahash.c:959 utils/misc/guc.c:3298 utils/misc/guc.c:3311 +#: utils/misc/guc.c:3324 utils/misc/tzparser.c:455 utils/init/miscinit.c:150 +#: utils/init/miscinit.c:171 utils/init/miscinit.c:181 utils/fmgr/dfmgr.c:224 +#: utils/mb/mbutils.c:374 utils/mb/mbutils.c:675 utils/mmgr/aset.c:416 +#: utils/mmgr/aset.c:587 utils/mmgr/aset.c:765 utils/mmgr/aset.c:966 +#: utils/adt/regexp.c:209 utils/adt/varlena.c:3471 utils/adt/varlena.c:3492 +#: utils/adt/formatting.c:1524 utils/adt/formatting.c:1640 +#: utils/adt/formatting.c:1757 lib/stringinfo.c:266 commands/sequence.c:1014 +#: libpq/auth.c:1022 libpq/auth.c:1382 libpq/auth.c:1450 libpq/auth.c:1852 +#: storage/file/fd.c:364 storage/file/fd.c:761 storage/file/fd.c:879 +#: storage/file/fd.c:1443 storage/ipc/procarray.c:842 +#: storage/ipc/procarray.c:1253 storage/ipc/procarray.c:1260 +#: storage/ipc/procarray.c:1500 storage/ipc/procarray.c:1951 +#: storage/buffer/localbuf.c:350 storage/buffer/buf_init.c:154 +msgid "out of memory" +msgstr "memoria agotada" -#: access/transam/twophase.c:427 -msgid "Must be superuser or the user that prepared the transaction." -msgstr "Debe ser superusuario o el usuario que preparó la transacción." +#: postmaster/postmaster.c:2149 +msgid "received SIGHUP, reloading configuration files" +msgstr "se recibió SIGHUP, releyendo el archivo de configuración" -#: access/transam/twophase.c:438 -msgid "prepared transaction belongs to another database" -msgstr "la transacción preparada pertenece a otra base de datos" +#: postmaster/postmaster.c:2172 +msgid "pg_hba.conf not reloaded" +msgstr "pg_hba.conf no ha sido recargado" -#: access/transam/twophase.c:439 -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." +#: postmaster/postmaster.c:2215 +msgid "received smart shutdown request" +msgstr "se recibió petición de apagado inteligente" -#: access/transam/twophase.c:453 -#, c-format -msgid "prepared transaction with identifier \"%s\" does not exist" -msgstr "transacción preparada con identificador «%s» no existe" +#: postmaster/postmaster.c:2262 +msgid "received fast shutdown request" +msgstr "se recibió petición de apagado rápido" -#: access/transam/twophase.c:936 -msgid "two-phase state file maximum length exceeded" -msgstr "" -"el largo máximo del archivo de estado de COMMIT en dos fases fue excedido" +#: postmaster/postmaster.c:2280 +msgid "aborting any active transactions" +msgstr "abortando transacciones activas" -#: access/transam/twophase.c:954 -#, 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" +#: postmaster/postmaster.c:2309 +msgid "received immediate shutdown request" +msgstr "se recibió petición de apagado inmediato" -#: access/transam/twophase.c:968 access/transam/twophase.c:985 -#: access/transam/twophase.c:1034 access/transam/twophase.c:1445 -#: access/transam/twophase.c:1452 -#, 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" +#: postmaster/postmaster.c:2397 postmaster/postmaster.c:2418 +msgid "startup process" +msgstr "proceso de inicio" -#: access/transam/twophase.c:994 -#, 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" +#: postmaster/postmaster.c:2400 +msgid "aborting startup due to startup process failure" +msgstr "abortando el inicio debido a una falla en el procesamiento de inicio" -#: access/transam/twophase.c:1040 access/transam/twophase.c:1470 -#, 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" +#: postmaster/postmaster.c:2452 +msgid "database system is ready to accept connections" +msgstr "el sistema de bases de datos está listo para aceptar conexiones" -#: access/transam/twophase.c:1112 access/transam/twophase.c:1550 -#, 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" +#: postmaster/postmaster.c:2507 +msgid "background writer process" +msgstr "proceso background writer" -#: access/transam/twophase.c:1129 -#, 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" +#: postmaster/postmaster.c:2523 +msgid "WAL writer process" +msgstr "proceso escritor de WAL" -#: access/transam/twophase.c:1161 -#, 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" +#: postmaster/postmaster.c:2537 +msgid "WAL receiver process" +msgstr "proceso receptor de WAL" -#: access/transam/twophase.c:1253 -#, 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" +#: postmaster/postmaster.c:2552 +msgid "autovacuum launcher process" +msgstr "proceso lanzador de autovacuum" -#: access/transam/twophase.c:1407 -#, 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" +#: postmaster/postmaster.c:2567 +msgid "archiver process" +msgstr "proceso de archivado" -#: access/transam/twophase.c:1436 -#, 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" +#: postmaster/postmaster.c:2583 +msgid "statistics collector process" +msgstr "recolector de estadísticas" + +#: postmaster/postmaster.c:2597 +msgid "system logger process" +msgstr "proceso de log" + +#: postmaster/postmaster.c:2632 postmaster/postmaster.c:2651 +#: postmaster/postmaster.c:2658 postmaster/postmaster.c:2676 +msgid "server process" +msgstr "proceso de servidor" + +#: postmaster/postmaster.c:2712 +msgid "terminating any other active server processes" +msgstr "terminando todos los otros procesos de servidor activos" -#: access/transam/twophase.c:1464 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2877 #, 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" +msgid "%s (PID %d) exited with exit code %d" +msgstr "%s (PID %d) terminó con código de salida %d" -#: access/transam/twophase.c:1559 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2886 #, 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" +msgid "%s (PID %d) was terminated by exception 0x%X" +msgstr "%s (PID %d) fue terminado por una excepción 0x%X" -#: access/transam/twophase.c:1566 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2895 #, 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" +msgid "%s (PID %d) was terminated by signal %d: %s" +msgstr "%s (PID %d) fue terminado por una señal %d: %s" -#: access/transam/twophase.c:1631 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2905 #, c-format -msgid "removing future two-phase state file \"%s\"" -msgstr "eliminando archivo futuro de estado de COMMIT en dos fases «%s»" +msgid "%s (PID %d) was terminated by signal %d" +msgstr "%s (PID %d) fue terminado por una señal %d" -#: access/transam/twophase.c:1647 access/transam/twophase.c:1658 -#: access/transam/twophase.c:1771 access/transam/twophase.c:1782 -#: access/transam/twophase.c:1855 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2914 #, c-format -msgid "removing corrupt two-phase state file \"%s\"" -msgstr "eliminando archivo dañado de estado de COMMIT en dos fases «%s»" +msgid "%s (PID %d) exited with unrecognized status %d" +msgstr "%s (PID %d) terminó con código no reconocido %d" + +#: postmaster/postmaster.c:3094 +msgid "abnormal database system shutdown" +msgstr "apagado anormal del sistema de bases de datos" + +#: postmaster/postmaster.c:3133 +msgid "all server processes terminated; reinitializing" +msgstr "todos los procesos fueron terminados; reinicializando" -#: access/transam/twophase.c:1760 access/transam/twophase.c:1844 +#: postmaster/postmaster.c:3316 #, c-format -msgid "removing stale two-phase state file \"%s\"" -msgstr "eliminando archivo obsoleto de estado de COMMIT en dos fases «%s»" +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:3358 +msgid "could not fork new process for connection: " +msgstr "no se pudo lanzar el nuevo proceso para la conexión: " -#: access/transam/twophase.c:1862 +#: postmaster/postmaster.c:3472 #, c-format -msgid "recovering prepared transaction %u" -msgstr "recuperando transacción preparada %u" +msgid "connection received: host=%s port=%s" +msgstr "conexión recibida: host=%s port=%s" -#: access/transam/varsup.c:114 +#: postmaster/postmaster.c:3477 #, c-format -msgid "" -"database is not accepting commands to avoid wraparound data loss in database " -"\"%s\"" -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 de datos «%s»" +msgid "connection received: host=%s" +msgstr "conexión recibida: host=%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 "" -"Detenga el proceso postmaster y utilice una conexión aislada (standalone) " -"para limpiar (vacuum) esa base de datos.\n" -"Puede que además necesite comprometer o abortar transacciones preparadas " -"antiguas." +#: postmaster/postmaster.c:3702 access/transam/xlog.c:2397 +#: access/transam/xlog.c:2530 access/transam/xlog.c:4463 +#: access/transam/xlog.c:9169 access/transam/xlog.c:9410 +#: storage/file/copydir.c:172 storage/smgr/md.c:289 +#, c-format +msgid "could not create file \"%s\": %m" +msgstr "no se pudo crear archivo «%s»: %m" -#: access/transam/varsup.c:121 +#: postmaster/postmaster.c:3712 postmaster/postmaster.c:3722 +#: utils/misc/guc.c:7432 utils/misc/guc.c:7457 utils/init/miscinit.c:1097 +#: utils/init/miscinit.c:1106 utils/init/miscinit.c:1113 +#: access/transam/xlog.c:2429 access/transam/xlog.c:2562 +#: access/transam/xlog.c:4515 access/transam/xlog.c:4578 +#: storage/file/copydir.c:197 #, c-format -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" +msgid "could not write to file \"%s\": %m" +msgstr "no se pudo escribir a archivo «%s»: %m" -#: access/transam/varsup.c:133 access/transam/varsup.c:368 +#: postmaster/postmaster.c:3741 #, c-format -msgid "database \"%s\" must be vacuumed within %u transactions" -msgstr "base de datos «%s» debe ser limpiada dentro de %u transacciones" +msgid "could not execute server process \"%s\": %m" +msgstr "no se pudo lanzar el proceso servidor «%s»: %m" -#: 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." +#: postmaster/postmaster.c:4263 +msgid "database system is ready to accept read only connections" 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." +"el sistema de bases de datos está listo para aceptar conexiones de sólo " +"lectura" -#: access/transam/varsup.c:140 access/transam/varsup.c:375 +#: postmaster/postmaster.c:4533 #, 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" +msgid "could not fork startup process: %m" +msgstr "no se pudo lanzar el proceso de inicio: %m" -#: access/transam/varsup.c:333 +#: postmaster/postmaster.c:4537 #, 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" +msgid "could not fork background writer process: %m" +msgstr "no se pudo lanzar el background writer: %m" -#: access/transam/xact.c:716 -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" +#: postmaster/postmaster.c:4541 +#, c-format +msgid "could not fork WAL writer process: %m" +msgstr "no se pudo lanzar el proceso escritor de WAL: %m" -#: access/transam/xact.c:1236 +#: postmaster/postmaster.c:4545 #, c-format -msgid "maximum number of committed subtransactions (%d) exceeded" -msgstr "se superó el número máximo de subtransacciones comprometidas (%d)" +msgid "could not fork WAL receiver process: %m" +msgstr "no se pudo lanzar el proceso receptor de WAL: %m" -#: access/transam/xact.c:1993 -msgid "cannot PREPARE a transaction that has operated on temporary tables" +#: postmaster/postmaster.c:4549 +#, c-format +msgid "could not fork process: %m" +msgstr "no se pudo lanzar el proceso: %m" + +#: postmaster/postmaster.c:4834 +#, c-format +msgid "could not duplicate socket %d for use in backend: error code %d" msgstr "" -"no se puede hacer PREPARE de una transacción que ha operado en tablas " -"temporales" +"no se pudo duplicar el socket %d para su empleo en el backend: código de " +"error %d" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2782 +#: postmaster/postmaster.c:4866 #, c-format -msgid "%s cannot run inside a transaction block" -msgstr "%s no puede ser ejecutado dentro de un bloque de transacción" +msgid "could not create inherited socket: error code %d\n" +msgstr "no se pudo crear el socket heradado: código de error %d\n" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2792 +#: postmaster/postmaster.c:4895 postmaster/postmaster.c:4902 #, c-format -msgid "%s cannot run inside a subtransaction" -msgstr "%s no puede ser ejecutado dentro de una subtransacción" +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" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2802 +#: postmaster/postmaster.c:4911 #, 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" +msgid "could not remove file \"%s\": %s\n" +msgstr "no se pudo eliminar el archivo «%s»: %s\n" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2853 +#: postmaster/postmaster.c:4928 #, 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" +msgid "could not map view of backend variables: error code %d\n" +msgstr "" +"no se pudo mapear la vista del archivo de variables: código de error %d\n" -#: access/transam/xact.c:3035 -msgid "there is already a transaction in progress" -msgstr "ya hay una transacción en curso" +#: postmaster/postmaster.c:4937 +#, c-format +msgid "could not unmap view of backend variables: error code %d\n" +msgstr "" +"no se pudo desmapear la vista del archivo de variables: código de error %d\n" -#: access/transam/xact.c:3202 access/transam/xact.c:3294 -msgid "there is no transaction in progress" -msgstr "no hay una transacción en curso" +#: postmaster/postmaster.c:4944 +#, c-format +msgid "could not close handle to backend parameter variables: error code %d\n" +msgstr "" +"no se pudo cerrar el archivo de variables de servidor: código de error %d\n" -#: access/transam/xact.c:3388 access/transam/xact.c:3438 -#: access/transam/xact.c:3444 access/transam/xact.c:3488 -#: access/transam/xact.c:3536 access/transam/xact.c:3542 -msgid "no such savepoint" -msgstr "no hay un savepoint con ese nombre" +#: postmaster/postmaster.c:5089 +msgid "could not read exit code for process\n" +msgstr "no se pudo leer el código de salida del proceso\n" -#: access/transam/xact.c:4172 -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" +#: postmaster/postmaster.c:5094 +msgid "could not post child completion status\n" +msgstr "no se pudo publicar el estado de completitud del proceso hijo\n" -#: access/transam/xlog.c:1275 +#: utils/cache/ts_cache.c:620 commands/tsearchcmds.c:1753 +#: commands/tsearchcmds.c:1909 catalog/namespace.c:2276 #, c-format -msgid "could not create archive status file \"%s\": %m" -msgstr "no se pudo crear el archivo de estado «%s»: %m" +msgid "text search configuration \"%s\" does not exist" +msgstr "no existe la configuración de búsqueda en texto «%s»" -#: access/transam/xlog.c:1283 -#, c-format -msgid "could not write archive status file \"%s\": %m" -msgstr "no se pudo escribir el archivo de estado «%s»: %m" +#: utils/cache/plancache.c:606 +msgid "cached plan must not change result type" +msgstr "el plan almacenado no debe cambiar el tipo de resultado" -#: access/transam/xlog.c:1738 access/transam/xlog.c:9602 -#: replication/walreceiver.c:479 replication/walsender.c:596 +#: utils/cache/relcache.c:4321 #, c-format -msgid "could not seek in log file %u, segment %u to offset %u: %m" -msgstr "" -"no se pudo posicionar (seek) en archivo de registro %u, segmento %u a la " -"posición %u: %m" +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:4323 +msgid "Continuing anyway, but there's something wrong." +msgstr "Prosiguiendo de todas maneras, pero hay algo mal." -#: access/transam/xlog.c:1755 replication/walreceiver.c:496 +#: utils/cache/relcache.c:4537 #, c-format -msgid "could not write to log file %u, segment %u at offset %u, length %lu: %m" +msgid "could not remove cache file \"%s\": %m" +msgstr "no se pudo eliminar el archivo de cache «%s»: %m" + +#: utils/cache/relmapper.c:454 +msgid "cannot PREPARE a transaction that modified relation mapping" msgstr "" -"no se pudo escribir archivo de registro %u, segmento %u en la posición %u, " -"largo %lu: %m" +"no se puede hacer PREPARE de una transacción que ha modificado el mapeo de " +"relaciones" -#: access/transam/xlog.c:1957 +#: utils/cache/relmapper.c:596 utils/cache/relmapper.c:702 #, c-format -msgid "updated min recovery point to %X/%X" -msgstr "el punto mínimo de recuperación fue actualizado a %X/%X" +msgid "could not open relation mapping file \"%s\": %m" +msgstr "no se pudo abrir el archivo de mapeo de relaciones «%s»: %m" -#: access/transam/xlog.c:2298 access/transam/xlog.c:2402 -#: access/transam/xlog.c:2631 access/transam/xlog.c:2702 -#: access/transam/xlog.c:2759 replication/walsender.c:584 +#: utils/cache/relmapper.c:609 #, c-format -msgid "could not open file \"%s\" (log file %u, segment %u): %m" -msgstr "no se pudo abrir «%s» (archivo de registro %u, segmento %u): %m" +msgid "could not read relation mapping file \"%s\": %m" +msgstr "no se pudo leer el archivo de mapeo de relaciones «%s»: %m" -#: access/transam/xlog.c:2323 access/transam/xlog.c:2456 -#: access/transam/xlog.c:4286 access/transam/xlog.c:8464 -#: access/transam/xlog.c:8619 storage/smgr/md.c:278 storage/file/copydir.c:172 -#: postmaster/postmaster.c:3645 +#: utils/cache/relmapper.c:619 #, c-format -msgid "could not create file \"%s\": %m" -msgstr "no se pudo crear archivo «%s»: %m" +msgid "relation mapping file \"%s\" contains invalid data" +msgstr "el archivo de mapeo de relaciones «%s» contiene datos no válidos" -#: access/transam/xlog.c:2355 access/transam/xlog.c:2488 -#: access/transam/xlog.c:4338 access/transam/xlog.c:4394 commands/copy.c:1316 -#: storage/file/copydir.c:197 postmaster/postmaster.c:3655 -#: postmaster/postmaster.c:3665 utils/misc/guc.c:7008 utils/misc/guc.c:7033 -#: utils/init/miscinit.c:1054 utils/init/miscinit.c:1063 -#: utils/init/miscinit.c:1070 +#: utils/cache/relmapper.c:629 #, c-format -msgid "could not write to file \"%s\": %m" -msgstr "no se pudo escribir a archivo «%s»: %m" +msgid "relation mapping file \"%s\" contains incorrect checksum" +msgstr "" +"el archivo de mapeo de relaciones «%s» tiene una suma de verificación " +"incorrecta" -#: access/transam/xlog.c:2363 access/transam/xlog.c:2495 -#: access/transam/xlog.c:4400 storage/smgr/md.c:909 storage/smgr/md.c:1083 -#: storage/smgr/md.c:1226 storage/file/copydir.c:269 +#: utils/cache/relmapper.c:741 #, c-format -msgid "could not fsync file \"%s\": %m" -msgstr "no se pudo sincronizar (fsync) archivo «%s»: %m" +msgid "could not write to relation mapping file \"%s\": %m" +msgstr "no se pudo escribir el archivo de mapeo de relaciones «%s»: %m" -#: access/transam/xlog.c:2368 access/transam/xlog.c:2500 -#: access/transam/xlog.c:4405 storage/file/copydir.c:211 +#: utils/cache/relmapper.c:754 #, c-format -msgid "could not close file \"%s\": %m" -msgstr "no se pudo cerrar el archivo «%s»: %m" +msgid "could not fsync relation mapping file \"%s\": %m" +msgstr "" +"no se pudo sincronizar (fsync) el archivo de mapeo de relaciones «%s»: %m" -#: access/transam/xlog.c:2441 access/transam/xlog.c:4113 -#: access/transam/xlog.c:4207 access/transam/xlog.c:4305 storage/smgr/md.c:532 -#: storage/smgr/md.c:785 storage/file/copydir.c:165 storage/file/copydir.c:255 -#: utils/error/elog.c:1403 utils/init/miscinit.c:1005 -#: utils/init/miscinit.c:1118 +#: utils/cache/relmapper.c:760 #, c-format -msgid "could not open file \"%s\": %m" -msgstr "no se pudo abrir el archivo «%s»: %m" +msgid "could not close relation mapping file \"%s\": %m" +msgstr "no se pudo cerrar el archivo de mapeo de relaciones «%s»: %m" -#: access/transam/xlog.c:2469 access/transam/xlog.c:4317 -#: access/transam/xlog.c:8567 access/transam/xlog.c:8641 -#: access/transam/xlog.c:9024 access/transam/xlog.c:9049 -#: storage/file/copydir.c:186 utils/adt/genfile.c:133 +#: utils/cache/lsyscache.c:2413 utils/cache/lsyscache.c:2446 +#: utils/cache/lsyscache.c:2479 utils/cache/lsyscache.c:2512 #, c-format -msgid "could not read file \"%s\": %m" -msgstr "no se pudo leer el archivo «%s»: %m" +msgid "type %s is only a shell" +msgstr "el tipo %s está inconcluso" -#: access/transam/xlog.c:2472 +#: utils/cache/lsyscache.c:2418 #, c-format -msgid "not enough data in file \"%s\"" -msgstr "los datos del archivo «%s» son insuficientes" +msgid "no input function available for type %s" +msgstr "no hay una función de entrada para el tipo %s" -#: access/transam/xlog.c:2591 +#: utils/cache/lsyscache.c:2451 #, c-format -msgid "" -"could not link file \"%s\" to \"%s\" (initialization of log file %u, segment " -"%u): %m" -msgstr "" -"no se pudo enlazar (link) el archivo «%s» a «%s» (inicialización de archivo " -"de registro %u, segmento %u): %m" +msgid "no output function available for type %s" +msgstr "no hay una función de salida para el tipo %s" -#: access/transam/xlog.c:2603 +#: utils/cache/lsyscache.c:2484 utils/adt/arrayfuncs.c:1307 #, c-format -msgid "" -"could not rename file \"%s\" to \"%s\" (initialization of log file %u, " -"segment %u): %m" -msgstr "" -"no se pudo renombrar archivo de «%s» a «%s» (inicialización de archivo de " -"registro %u, segmento %u): %m" +msgid "no binary input function available for type %s" +msgstr "no hay una función binaria de entrada para el tipo %s" -#: access/transam/xlog.c:2786 replication/walreceiver.c:453 +#: utils/cache/lsyscache.c:2517 utils/adt/arrayfuncs.c:1529 #, c-format -msgid "could not close log file %u, segment %u: %m" -msgstr "no se pudo cerrar archivo de registro %u, segmento %u: %m" +msgid "no binary output function available for type %s" +msgstr "no hay una función binaria de salida para el tipo %s" -#: access/transam/xlog.c:2858 access/transam/xlog.c:3023 -#: access/transam/xlog.c:8447 storage/file/copydir.c:86 -#: storage/file/copydir.c:125 utils/adt/dbsize.c:65 utils/adt/dbsize.c:217 -#: utils/adt/dbsize.c:288 utils/adt/genfile.c:170 +#: utils/cache/typcache.c:195 parser/parse_type.c:202 #, c-format -msgid "could not stat file \"%s\": %m" -msgstr "no se pudo verificar archivo «%s»: %m" +msgid "type \"%s\" is only a shell" +msgstr "el tipo «%s» está inconcluso" -#: access/transam/xlog.c:2866 access/transam/xlog.c:8646 storage/smgr/md.c:348 -#: storage/smgr/md.c:395 storage/smgr/md.c:1192 +#: utils/cache/typcache.c:634 #, c-format -msgid "could not remove file \"%s\": %m" -msgstr "no se pudo eliminar el archivo «%s»: %m" +msgid "type %s is not composite" +msgstr "el tipo %s no es compuesto" -#: access/transam/xlog.c:3002 -#, 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" +#: utils/cache/typcache.c:648 +msgid "record type has not been registered" +msgstr "el tipo record no ha sido registrado" -#: access/transam/xlog.c:3011 +#: utils/cache/typcache.c:1001 commands/typecmds.c:1272 #, c-format -msgid "restored log file \"%s\" from archive" -msgstr "se ha restaurado el archivo «%s» desde el área de archivado" +msgid "%s is not an enum" +msgstr "%s no es un enum" -#: access/transam/xlog.c:3061 -#, 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" +#: utils/hash/dynahash.c:955 storage/ipc/shmem.c:190 +#: storage/lmgr/predicate.c:2246 storage/lmgr/predicate.c:2261 +#: storage/lmgr/predicate.c:3656 storage/lmgr/predicate.c:4800 +#: storage/lmgr/proc.c:197 storage/lmgr/proc.c:216 storage/lmgr/lock.c:723 +#: storage/lmgr/lock.c:792 storage/lmgr/lock.c:2301 storage/lmgr/lock.c:2700 +#: storage/lmgr/lock.c:2765 +msgid "out of shared memory" +msgstr "memoria compartida agotada" -#: access/transam/xlog.c:3176 -#, c-format -msgid "%s \"%s\": return code %d" -msgstr "%s «%s»: código de retorno %d" +#: utils/misc/help_config.c:131 +msgid "internal error: unrecognized run-time parameter type\n" +msgstr "error interno: tipo parámetro no reconocido\n" -#: access/transam/xlog.c:3286 access/transam/xlog.c:3469 -#, c-format -msgid "could not open transaction log directory \"%s\": %m" -msgstr "no se pudo abrir directorio de registro de transacciones «%s»: %m" +#: utils/misc/guc.c:525 +msgid "Ungrouped" +msgstr "Sin Grupo" -#: access/transam/xlog.c:3340 -#, c-format -msgid "recycled transaction log file \"%s\"" -msgstr "el archivo de registro de transacciones «%s» ha sido reciclado" +#: utils/misc/guc.c:527 +msgid "File Locations" +msgstr "Ubicaciones de Archivos" -#: access/transam/xlog.c:3356 -#, c-format -msgid "removing transaction log file \"%s\"" -msgstr "eliminando archivo de registro de transacciones «%s»" +#: utils/misc/guc.c:529 +msgid "Connections and Authentication" +msgstr "Conexiones y Autentificación" -#: access/transam/xlog.c:3379 -#, 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" +#: utils/misc/guc.c:531 +msgid "Connections and Authentication / Connection Settings" +msgstr "Conexiones y Autentificación / Parámetros de Conexión" -#: access/transam/xlog.c:3391 -#, 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" +#: utils/misc/guc.c:533 +msgid "Connections and Authentication / Security and Authentication" +msgstr "Conexiones y Autentificación / Seguridad y Autentificación" -#: access/transam/xlog.c:3429 access/transam/xlog.c:3439 -#, c-format -msgid "required WAL directory \"%s\" does not exist" -msgstr "no existe el directorio WAL «%s»" +#: utils/misc/guc.c:535 +msgid "Resource Usage" +msgstr "Uso de Recursos" -#: access/transam/xlog.c:3445 -#, c-format -msgid "creating missing WAL directory \"%s\"" -msgstr "creando el directorio WAL faltante «%s»" +#: utils/misc/guc.c:537 +msgid "Resource Usage / Memory" +msgstr "Uso de Recursos / Memoria" -#: access/transam/xlog.c:3448 -#, c-format -msgid "could not create missing directory \"%s\": %m" -msgstr "no se pudo crear el directorio faltante «%s»: %m" +#: utils/misc/guc.c:539 +msgid "Resource Usage / Kernel Resources" +msgstr "Uso de Recursos / Recursos del Kernel" -#: access/transam/xlog.c:3482 -#, c-format -msgid "removing transaction log backup history file \"%s\"" -msgstr "" -"eliminando el archivo de historia del respaldo de registro de transacciones " -"«%s»" +#: utils/misc/guc.c:541 +msgid "Resource Usage / Cost-Based Vacuum Delay" +msgstr "Uso de Recursos / Retardo de Vacuum por Costos" -#: access/transam/xlog.c:3602 -#, c-format -msgid "incorrect hole size in record at %X/%X" -msgstr "tamaño de hueco en registro en %X/%X es incorrecto" +#: utils/misc/guc.c:543 +msgid "Resource Usage / Background Writer" +msgstr "Uso de Recursos / Escritor en Segundo Plano" -#: access/transam/xlog.c:3615 -#, c-format -msgid "incorrect total length in record at %X/%X" -msgstr "longitud total de registro en %X/%X es incorrecta" +#: utils/misc/guc.c:545 +msgid "Resource Usage / Asynchronous Behavior" +msgstr "Uso de Recursos / Comportamiento Asíncrono" -#: access/transam/xlog.c:3628 -#, c-format -msgid "incorrect resource manager data checksum in record at %X/%X" -msgstr "" -"la suma de verificación de datos del gestor de recursos en %X/%X es " -"incorrecta" +#: utils/misc/guc.c:547 +msgid "Write-Ahead Log" +msgstr "Write-Ahead Log" -#: access/transam/xlog.c:3697 access/transam/xlog.c:3733 -#, c-format -msgid "invalid record offset at %X/%X" -msgstr "la posición de registro en %X/%X es incorrecta" +#: utils/misc/guc.c:549 +msgid "Write-Ahead Log / Settings" +msgstr "Write-Ahead Log / Configuraciones" -#: access/transam/xlog.c:3741 -#, c-format -msgid "contrecord is requested by %X/%X" -msgstr "contrecord es requerido por %X/%X" +#: utils/misc/guc.c:551 +msgid "Write-Ahead Log / Checkpoints" +msgstr "Write-Ahead Log / Puntos de Control (Checkpoints)" -#: access/transam/xlog.c:3756 -#, c-format -msgid "invalid xlog switch record at %X/%X" -msgstr "registro de cambio de archivo xlog no válido en %X/%X" +#: utils/misc/guc.c:553 +msgid "Write-Ahead Log / Archiving" +msgstr "Write-Ahead Log / Archivado" -#: access/transam/xlog.c:3764 -#, c-format -msgid "record with zero length at %X/%X" -msgstr "registro de longitud cero en %X/%X" +#: utils/misc/guc.c:555 +msgid "Replication" +msgstr "Replicación" -#: access/transam/xlog.c:3773 -#, c-format -msgid "invalid record length at %X/%X" -msgstr "longitud de registro no es válido en %X/%X" +#: utils/misc/guc.c:557 +msgid "Replication / Master Server" +msgstr "Replicación / Servidor Maestro" -#: access/transam/xlog.c:3780 -#, c-format -msgid "invalid resource manager ID %u at %X/%X" -msgstr "el ID de gestor de recursos %u no es válido en %X/%X" +#: utils/misc/guc.c:559 +msgid "Replication / Standby Servers" +msgstr "Replicación / Servidores Standby" -#: access/transam/xlog.c:3793 access/transam/xlog.c:3809 -#, c-format -msgid "record with incorrect prev-link %X/%X at %X/%X" -msgstr "registro con prev-link incorrecto %X/%X en %X/%X" +#: utils/misc/guc.c:561 +msgid "Query Tuning" +msgstr "Afinamiento de Consultas" -#: access/transam/xlog.c:3838 -#, c-format -msgid "record length %u at %X/%X too long" -msgstr "el longitud %u del registro en %X/%X es demasiado grande" +#: utils/misc/guc.c:563 +msgid "Query Tuning / Planner Method Configuration" +msgstr "Afinamiento de Consultas / Configuración de Métodos del Planner" -#: access/transam/xlog.c:3878 -#, c-format -msgid "there is no contrecord flag in log file %u, segment %u, offset %u" -msgstr "" -"no hay marca de contrecord en el archivo de registro %u, segmento %u, " -"posición %u" +#: utils/misc/guc.c:565 +msgid "Query Tuning / Planner Cost Constants" +msgstr "Afinamiento de Consultas / Constantes de Costo del Planner" -#: access/transam/xlog.c:3888 -#, c-format -msgid "invalid contrecord length %u in log file %u, segment %u, offset %u" -msgstr "" -"la longitud de contrecord %u no es válido en el archivo de registro %u, " -"segmento %u, posición %u" +#: utils/misc/guc.c:567 +msgid "Query Tuning / Genetic Query Optimizer" +msgstr "Afinamiento de Consultas / Optimizador Genético de Consultas" -#: access/transam/xlog.c:3978 -#, c-format -msgid "invalid magic number %04X in log file %u, segment %u, offset %u" -msgstr "" -"el número mágico %04X no es válido en el archivo de registro %u, segmento " -"%u, posición %u" +#: utils/misc/guc.c:569 +msgid "Query Tuning / Other Planner Options" +msgstr "Afinamiento de Consultas / Otras Opciones del Planner" -#: access/transam/xlog.c:3985 access/transam/xlog.c:4031 -#, c-format -msgid "invalid info bits %04X in log file %u, segment %u, offset %u" -msgstr "" -"bits de información %04X no son válidos en el archivo de registro %u, " -"segmento %u, posición %u" +#: utils/misc/guc.c:571 +msgid "Reporting and Logging" +msgstr "Reporte y Registro" -#: access/transam/xlog.c:4007 access/transam/xlog.c:4015 -#: access/transam/xlog.c:4022 -msgid "WAL file is from different database system" -msgstr "el archivo WAL es de un sistema de bases de datos diferente" +#: utils/misc/guc.c:573 +msgid "Reporting and Logging / Where to Log" +msgstr "Reporte y Registro / Cuándo Registrar" -#: access/transam/xlog.c:4008 -#, c-format -msgid "" -"WAL file database system identifier is %s, pg_control database system " -"identifier is %s." -msgstr "" -"El identificador de sistema del archivo WAL es %s, el identificador de " -"sistema de pg_control es %s." +#: utils/misc/guc.c:575 +msgid "Reporting and Logging / When to Log" +msgstr "Reporte y Registro / Cuándo Registrar" -#: access/transam/xlog.c:4016 -msgid "Incorrect XLOG_SEG_SIZE in page header." -msgstr "XLOG_SEG_SIZE incorrecto en encabezado de página." +#: utils/misc/guc.c:577 +msgid "Reporting and Logging / What to Log" +msgstr "Reporte y Registro / Qué Registrar" -#: access/transam/xlog.c:4023 -msgid "Incorrect XLOG_BLCKSZ in page header." -msgstr "XLOG_BLCKSZ incorrecto en encabezado de página." +#: utils/misc/guc.c:579 +msgid "Statistics" +msgstr "Estadísticas" -#: access/transam/xlog.c:4039 -#, c-format -msgid "unexpected pageaddr %X/%X in log file %u, segment %u, offset %u" -msgstr "" -"la dirección de página %X/%X en el archivo de registro %u, segmento %u, " -"posición %u es inesperada" +#: utils/misc/guc.c:581 +msgid "Statistics / Monitoring" +msgstr "Estadísticas / Monitoreo" -#: access/transam/xlog.c:4051 -#, c-format -msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u" -msgstr "ID %u de timeline inesperado en archivo %u, segmento %u, posición %u" +#: utils/misc/guc.c:583 +msgid "Statistics / Query and Index Statistics Collector" +msgstr "Estadísticas / Recolector de Estadísticas de Consultas e Índices" -#: access/transam/xlog.c:4069 -#, c-format -msgid "" -"out-of-sequence timeline ID %u (after %u) in log file %u, segment %u, offset " -"%u" -msgstr "" -"el ID de timeline %u está fuera de secuencia (después de %u) en el archivo " -"de registro %u, segmento %u, posición %u" +#: utils/misc/guc.c:585 +msgid "Autovacuum" +msgstr "Autovacuum" -#: access/transam/xlog.c:4142 -#, c-format -msgid "syntax error in history file: %s" -msgstr "error de sintaxis en archivo de historia: %s" +#: utils/misc/guc.c:587 +msgid "Client Connection Defaults" +msgstr "Valores por Omisión de Conexiones" -#: access/transam/xlog.c:4143 -msgid "Expected a numeric timeline ID." -msgstr "Se esperaba un ID numérico de timeline." +#: utils/misc/guc.c:589 +msgid "Client Connection Defaults / Statement Behavior" +msgstr "Valores por Omisión de Conexiones / Comportamiento de Sentencias" -#: access/transam/xlog.c:4148 -#, c-format -msgid "invalid data in history file: %s" -msgstr "datos no válidos en archivo de historia: %s" +#: utils/misc/guc.c:591 +msgid "Client Connection Defaults / Locale and Formatting" +msgstr "" +"Valores por Omisión de Conexiones / Configuraciones Regionales y Formateo" -#: access/transam/xlog.c:4149 -msgid "Timeline IDs must be in increasing sequence." -msgstr "IDs de timeline deben ser una secuencia creciente." +#: utils/misc/guc.c:593 +msgid "Client Connection Defaults / Other Defaults" +msgstr "Valores por Omisión de Conexiones / Otros Valores" -#: access/transam/xlog.c:4162 -#, c-format -msgid "invalid data in history file \"%s\"" -msgstr "datos no válidos en archivo de historia «%s»" +#: utils/misc/guc.c:595 +msgid "Lock Management" +msgstr "Manejo de Bloqueos" -#: access/transam/xlog.c:4163 -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." +#: utils/misc/guc.c:597 +msgid "Version and Platform Compatibility" +msgstr "Compatibilidad de Versión y Plataforma" -#: access/transam/xlog.c:4422 -#, c-format -msgid "could not link file \"%s\" to \"%s\": %m" -msgstr "no se pudo enlazar (link) el archivo «%s» a «%s»: %m" +#: utils/misc/guc.c:599 +msgid "Version and Platform Compatibility / Previous PostgreSQL Versions" +msgstr "" +"Compatibilidad de Versión y Plataforma / Versiones Anteriores de PostgreSQL" -#: access/transam/xlog.c:4429 access/transam/xlog.c:5384 -#: access/transam/xlog.c:5437 access/transam/xlog.c:6030 -#: postmaster/pgarch.c:715 -#, c-format -msgid "could not rename file \"%s\" to \"%s\": %m" -msgstr "no se pudo renombrar el archivo de «%s» a «%s»: %m" +#: utils/misc/guc.c:601 +msgid "Version and Platform Compatibility / Other Platforms and Clients" +msgstr "Compatibilidad de Versión y Plataforma / Otras Plataformas y Clientes" -#: access/transam/xlog.c:4511 -#, c-format -msgid "could not create control file \"%s\": %m" -msgstr "no se pudo crear archivo de control «%s»: %m" +#: utils/misc/guc.c:603 +msgid "Error Handling" +msgstr "Gestión de Errores" -#: access/transam/xlog.c:4522 access/transam/xlog.c:4747 -#, c-format -msgid "could not write to control file: %m" -msgstr "no se pudo escribir en el archivo de control: %m" +#: utils/misc/guc.c:605 +msgid "Preset Options" +msgstr "Opciones Predefinidas" -#: access/transam/xlog.c:4528 access/transam/xlog.c:4753 -#, c-format -msgid "could not fsync control file: %m" -msgstr "no se pudo sincronizar (fsync) el archivo de control: %m" +#: utils/misc/guc.c:607 +msgid "Customized Options" +msgstr "Opciones Personalizadas" -#: access/transam/xlog.c:4533 access/transam/xlog.c:4758 -#, c-format -msgid "could not close control file: %m" -msgstr "no se pudo cerrar el archivo de control: %m" +#: utils/misc/guc.c:609 +msgid "Developer Options" +msgstr "Opciones de Desarrollador" -#: access/transam/xlog.c:4551 access/transam/xlog.c:4736 -#, c-format -msgid "could not open control file \"%s\": %m" -msgstr "no se pudo abrir el archivo de control «%s»: %m" +#: utils/misc/guc.c:663 +msgid "Enables the planner's use of sequential-scan plans." +msgstr "Permitir el uso de planes de recorrido secuencial." -#: access/transam/xlog.c:4557 -#, c-format -msgid "could not read from control file: %m" -msgstr "no se pudo leer desde el archivo de control: %m" +#: utils/misc/guc.c:672 +msgid "Enables the planner's use of index-scan plans." +msgstr "Permitir el uso de planes de recorrido de índice." -#: access/transam/xlog.c:4570 access/transam/xlog.c:4579 -#: access/transam/xlog.c:4603 access/transam/xlog.c:4610 -#: access/transam/xlog.c:4617 access/transam/xlog.c:4622 -#: access/transam/xlog.c:4629 access/transam/xlog.c:4636 -#: access/transam/xlog.c:4643 access/transam/xlog.c:4650 -#: access/transam/xlog.c:4657 access/transam/xlog.c:4664 -#: access/transam/xlog.c:4673 access/transam/xlog.c:4680 -#: access/transam/xlog.c:4689 access/transam/xlog.c:4696 -#: access/transam/xlog.c:4705 access/transam/xlog.c:4712 -#: utils/init/miscinit.c:1136 -msgid "database files are incompatible with server" -msgstr "los archivos de base de datos son incompatibles con el servidor" +#: utils/misc/guc.c:681 +msgid "Enables the planner's use of bitmap-scan plans." +msgstr "Permitir el uso de planes de recorrido de índice por mapas de bits." -#: access/transam/xlog.c:4571 -#, 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)." +#: utils/misc/guc.c:690 +msgid "Enables the planner's use of TID scan plans." +msgstr "Permitir el uso de planes de recorrido por TID." -#: access/transam/xlog.c:4575 -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." +#: utils/misc/guc.c:699 +msgid "Enables the planner's use of explicit sort steps." +msgstr "Permitir el uso de pasos explícitos de ordenamiento." -#: access/transam/xlog.c:4580 -#, 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." +#: utils/misc/guc.c:708 +msgid "Enables the planner's use of hashed aggregation plans." +msgstr "Permitir el uso de planes de agregación a través de hash." -#: access/transam/xlog.c:4583 access/transam/xlog.c:4607 -#: access/transam/xlog.c:4614 access/transam/xlog.c:4619 -msgid "It looks like you need to initdb." -msgstr "Parece que necesita ejecutar initdb." +#: utils/misc/guc.c:717 +msgid "Enables the planner's use of materialization." +msgstr "Permitir el uso de materialización de planes." -#: access/transam/xlog.c:4594 -msgid "incorrect checksum in control file" -msgstr "la suma de verificación es incorrecta en el archivo de control" +#: utils/misc/guc.c:726 +msgid "Enables the planner's use of nested-loop join plans." +msgstr "Permitir el uso de planes «nested-loop join»." -#: access/transam/xlog.c:4604 -#, 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." +#: utils/misc/guc.c:735 +msgid "Enables the planner's use of merge join plans." +msgstr "Permitir el uso de planes «merge join»." -#: access/transam/xlog.c:4611 -#, 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." +#: utils/misc/guc.c:744 +msgid "Enables the planner's use of hash join plans." +msgstr "Permitir el uso de planes «hash join»." -#: access/transam/xlog.c:4618 -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." +#: utils/misc/guc.c:753 +msgid "Enables genetic query optimization." +msgstr "Permitir el uso del optimizador genético de consultas." -#: access/transam/xlog.c:4623 -#, c-format -msgid "" -"The database cluster was initialized with BLCKSZ %d, but the server was " -"compiled with BLCKSZ %d." +#: utils/misc/guc.c:754 +msgid "This algorithm attempts to do planning without exhaustive searching." msgstr "" -"Los archivos de base de datos fueron inicializados con BLCKSZ %d, pero el " -"servidor fue compilado con BLCKSZ %d." +"Este algoritmo intenta planear las consultas sin hacer búsqueda exhaustiva." -#: access/transam/xlog.c:4626 access/transam/xlog.c:4633 -#: access/transam/xlog.c:4640 access/transam/xlog.c:4647 -#: access/transam/xlog.c:4654 access/transam/xlog.c:4661 -#: access/transam/xlog.c:4668 access/transam/xlog.c:4676 -#: access/transam/xlog.c:4683 access/transam/xlog.c:4692 -#: access/transam/xlog.c:4699 access/transam/xlog.c:4708 -#: access/transam/xlog.c:4715 -msgid "It looks like you need to recompile or initdb." -msgstr "Parece que necesita recompilar o ejecutar initdb." +#: utils/misc/guc.c:764 +msgid "Shows whether the current user is a superuser." +msgstr "Indica si el usuario actual es superusuario." -#: access/transam/xlog.c:4630 -#, 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." +#: utils/misc/guc.c:774 +msgid "Enables advertising the server via Bonjour." +msgstr "Permitir la publicación del servidor vía Bonjour." -#: access/transam/xlog.c:4637 -#, 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." +#: utils/misc/guc.c:783 +msgid "Enables SSL connections." +msgstr "Permitir conexiones SSL." -#: access/transam/xlog.c:4644 -#, 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." +#: utils/misc/guc.c:792 +msgid "Forces synchronization of updates to disk." +msgstr "Forzar la sincronización de escrituras a disco." -#: access/transam/xlog.c:4651 -#, c-format +#: utils/misc/guc.c:793 msgid "" -"The database cluster was initialized with NAMEDATALEN %d, but the server was " -"compiled with NAMEDATALEN %d." +"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 "" -"Los archivos de la base de datos fueron inicializados con NAMEDATALEN %d, " -"pero el servidor fue compilado con NAMEDATALEN %d." +"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." -#: access/transam/xlog.c:4658 -#, 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." +#: utils/misc/guc.c:804 +msgid "Continues processing past damaged page headers." +msgstr "Continuar procesando más allá de encabezados de página dañados." -#: access/transam/xlog.c:4665 -#, c-format +#: utils/misc/guc.c:805 msgid "" -"The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d, but the " -"server was compiled with TOAST_MAX_CHUNK_SIZE %d." +"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 "" -"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." +"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." -#: access/transam/xlog.c:4674 -msgid "" -"The database cluster was initialized without HAVE_INT64_TIMESTAMP but the " -"server was compiled with HAVE_INT64_TIMESTAMP." +#: utils/misc/guc.c:818 +msgid "Writes full pages to WAL when first modified after a checkpoint." msgstr "" -"Los archivos de la base de datos fueron inicializados sin " -"HAVE_INT64_TIMESTAMP, pero el servidor fue compilado con " -"HAVE_INT64_TIMESTAMP." +"Escribe páginas completas a WAL cuando son modificadas después de un punto " +"de control." -#: access/transam/xlog.c:4681 +#: utils/misc/guc.c:819 msgid "" -"The database cluster was initialized with HAVE_INT64_TIMESTAMP but the " -"server was compiled without HAVE_INT64_TIMESTAMP." +"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 "" -"Los archivos de la base de datos fueron inicializados con " -"HAVE_INT64_TIMESTAMP, pero el servidor fue compilado sin " -"HAVE_INT64_TIMESTAMP." +"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." -#: access/transam/xlog.c:4690 -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." +#: utils/misc/guc.c:831 +msgid "Runs the server silently." +msgstr "Ejecuta el servidor silenciosamente." -#: access/transam/xlog.c:4697 +#: utils/misc/guc.c:832 msgid "" -"The database cluster was initialized with USE_FLOAT4_BYVAL but the server " -"was compiled without USE_FLOAT4_BYVAL." +"If this parameter is set, the server will automatically run in the " +"background and any controlling terminals are dissociated." msgstr "" -"Los archivos de base de datos fueron inicializados con USE_FLOAT4_BYVAL, " -"pero el servidor fue compilado sin USE_FLOAT4_BYVAL." +"Si esta opción está activada, el servidor se ejecutará automáticamente en " +"segundo plano y los terminales de control serán disociados." -#: access/transam/xlog.c:4706 -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." +#: utils/misc/guc.c:841 +msgid "Logs each checkpoint." +msgstr "Registrar cada punto de control." -#: access/transam/xlog.c:4713 -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." +#: utils/misc/guc.c:850 +msgid "Logs each successful connection." +msgstr "Registrar cada conexión exitosa." -#: access/transam/xlog.c:4962 -#, 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" +#: utils/misc/guc.c:859 +msgid "Logs end of a session, including duration." +msgstr "Registrar el fin de una sesión, incluyendo su duración." -#: access/transam/xlog.c:4968 -#, 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" +#: utils/misc/guc.c:868 +msgid "Turns on various assertion checks." +msgstr "Activar varios chequeos de integridad (assertion checks)." -#: access/transam/xlog.c:4973 -#, 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" +#: utils/misc/guc.c:869 +msgid "This is a debugging aid." +msgstr "Esto es una ayuda para la depuración." -#: access/transam/xlog.c:5135 -#, c-format -msgid "could not open recovery command file \"%s\": %m" -msgstr "no se pudo abrir el archivo de recuperación «%s»: %m" +#: utils/misc/guc.c:883 +msgid "Terminate session on any error." +msgstr "Terminar sesión ante cualquier error." -#: access/transam/xlog.c:5159 -#, c-format -msgid "restore_command = '%s'" -msgstr "restore_command = '%s'" +#: utils/misc/guc.c:892 +msgid "Reinitialize server after backend crash." +msgstr "Reinicializar el servidor después de una caída de un proceso servidor." -#: access/transam/xlog.c:5166 -#, c-format -msgid "recovery_end_command = '%s'" -msgstr "recovery_end_command = '%s'" +#: utils/misc/guc.c:902 +msgid "Logs the duration of each completed SQL statement." +msgstr "Registrar la duración de cada sentencia SQL ejecutada." -#: access/transam/xlog.c:5173 -#, c-format -msgid "archive_cleanup_command = '%s'" -msgstr "archive_cleanup_command = '%s'" +#: utils/misc/guc.c:911 +msgid "Logs each query's parse tree." +msgstr "Registrar cada arbol analizado de consulta " -#: access/transam/xlog.c:5187 -#, c-format -msgid "recovery_target_timeline is not a valid number: \"%s\"" -msgstr "recovery_target_timeline no es un número válido: «%s»" +#: utils/misc/guc.c:920 +msgid "Logs each query's rewritten parse tree." +msgstr "Registrar cada reescritura del arból analizado de consulta" -#: access/transam/xlog.c:5192 -#, c-format -msgid "recovery_target_timeline = %u" -msgstr "recovery_target_timeline = %u" +#: utils/misc/guc.c:929 +msgid "Logs each query's execution plan." +msgstr "Registrar el plan de ejecución de cada consulta." -#: access/transam/xlog.c:5195 -msgid "recovery_target_timeline = latest" -msgstr "recovery_target_timeline = latest" +#: utils/misc/guc.c:938 +msgid "Indents parse and plan tree displays." +msgstr "Indentar los árboles de parse y plan." -#: access/transam/xlog.c:5203 -#, c-format -msgid "recovery_target_xid is not a valid number: \"%s\"" -msgstr "recovery_target_xid no es un número válido: «%s»" +#: utils/misc/guc.c:947 +msgid "Writes parser performance statistics to the server log." +msgstr "Escribir estadísticas de parser al registro del servidor." -#: access/transam/xlog.c:5206 -#, c-format -msgid "recovery_target_xid = %u" -msgstr "recovery_target_xid = %u" +#: utils/misc/guc.c:956 +msgid "Writes planner performance statistics to the server log." +msgstr "Escribir estadísticas de planner al registro del servidor." -#: access/transam/xlog.c:5229 -#, c-format -msgid "recovery_target_time = '%s'" -msgstr "recovery_target_time = '%s'" +#: utils/misc/guc.c:965 +msgid "Writes executor performance statistics to the server log." +msgstr "Escribir estadísticas del executor al registro del servidor." -#: access/transam/xlog.c:5240 access/transam/xlog.c:5249 utils/misc/guc.c:4895 -#, c-format -msgid "parameter \"%s\" requires a Boolean value" -msgstr "opción «%s» requiere un valor lógico (booleano)" +#: utils/misc/guc.c:974 +msgid "Writes cumulative performance statistics to the server log." +msgstr "Escribir estadísticas acumulativas al registro del servidor." -#: access/transam/xlog.c:5242 -#, c-format -msgid "recovery_target_inclusive = %s" -msgstr "recovery_target_inclusive = %s" +#: utils/misc/guc.c:984 utils/misc/guc.c:1049 utils/misc/guc.c:1059 +#: utils/misc/guc.c:1069 utils/misc/guc.c:1079 utils/misc/guc.c:1804 +#: utils/misc/guc.c:1814 +msgid "No description available." +msgstr "No hay descripción disponible." -#: access/transam/xlog.c:5251 -#, c-format -msgid "standby_mode = '%s'" -msgstr "standby_mode = '%s'" +#: utils/misc/guc.c:996 +msgid "Collects information about executing commands." +msgstr "Recolectar estadísticas sobre órdenes en ejecución." -#: access/transam/xlog.c:5257 -#, c-format -msgid "primary_conninfo = '%s'" -msgstr "primary_conninfo = '%s'" +#: utils/misc/guc.c:997 +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." -#: access/transam/xlog.c:5264 -#, c-format -msgid "trigger_file = '%s'" -msgstr "trigger_file = '%s'" +#: utils/misc/guc.c:1007 +msgid "Collects statistics on database activity." +msgstr "Recolectar estadísticas de actividad de la base de datos." -#: access/transam/xlog.c:5269 -#, c-format -msgid "unrecognized recovery parameter \"%s\"" -msgstr "parámetro de recuperación no reconocido: «%s»" +#: utils/misc/guc.c:1017 +msgid "Updates the process title to show the active SQL command." +msgstr "Actualiza el título del proceso para mostrar la orden SQL activo." -#: access/transam/xlog.c:5277 -#, c-format -msgid "syntax error in recovery command file: %s" -msgstr "error de sintaxis en archivo de recuperación: %s" +#: utils/misc/guc.c:1018 +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:1027 +msgid "Starts the autovacuum subprocess." +msgstr "Iniciar el subproceso de autovacuum." + +#: utils/misc/guc.c:1037 +msgid "Generates debugging output for LISTEN and NOTIFY." +msgstr "Generar salida de depuración para LISTEN y NOTIFY." -#: access/transam/xlog.c:5279 -msgid "Lines should have the format parameter = 'value'." -msgstr "Las líneas deben tener el formato «parámetro = 'valor'»." +#: utils/misc/guc.c:1091 +msgid "Logs long lock waits." +msgstr "Registrar esperas largas de bloqueos." -#: access/transam/xlog.c:5288 -#, c-format +#: utils/misc/guc.c:1101 +msgid "Logs the host name in the connection logs." +msgstr "Registrar el nombre del host en la conexión." + +#: utils/misc/guc.c:1102 msgid "" -"recovery command file \"%s\" specified neither primary_conninfo nor " -"restore_command" +"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 "" -"el archivo de recuperación «%s» no especifica primary_conninfo ni " -"restore_command" +"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." -#: access/transam/xlog.c:5290 +#: utils/misc/guc.c:1113 +msgid "Causes subtables to be included by default in various commands." +msgstr "Incluir, por omisión, subtablas en varias órdenes." + +#: utils/misc/guc.c:1122 +msgid "Encrypt passwords." +msgstr "Cifrar contraseñas." + +#: utils/misc/guc.c:1123 msgid "" -"The database server will regularly poll the pg_xlog subdirectory to check " -"for files placed there." +"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 "" -"El servidor de bases de datos monitoreará el subdirectorio pg_xlog con " -"regularidad en búsqueda de archivos almacenados ahí." +"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." -#: access/transam/xlog.c:5296 -#, c-format +#: utils/misc/guc.c:1133 +msgid "Treats \"expr=NULL\" as \"expr IS NULL\"." +msgstr "Tratar expr=NULL como expr IS NULL." + +#: utils/misc/guc.c:1134 msgid "" -"recovery command file \"%s\" must specify restore_command when standby mode " -"is not enabled" +"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 "" -"el archivo de recuperación «%s» debe especificar restore_command cuando el " -"modo standby no está activo" +"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)." -#: access/transam/xlog.c:5316 -#, c-format -msgid "recovery target timeline %u does not exist" -msgstr "no existe el timeline %u especificado como destino de recuperación" +#: utils/misc/guc.c:1146 +msgid "Enables per-database user names." +msgstr "Activar el uso de nombre de usuario locales a cada base de datos." -#: access/transam/xlog.c:5441 -msgid "archive recovery complete" -msgstr "recuperación completa" +#: utils/misc/guc.c:1156 +msgid "This parameter doesn't do anything." +msgstr "Este parámetro no hace nada." -#: access/transam/xlog.c:5531 -#, c-format -msgid "recovery stopping after commit of transaction %u, time %s" +#: utils/misc/guc.c:1157 +msgid "" +"It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-" +"vintage clients." msgstr "" -"recuperación detenida después de comprometer la transacción %u, hora %s" +"Está aquí sólo para poder aceptar SET AUTOCOMMIT TO ON desde clientes de la " +"línea 7.3." -#: access/transam/xlog.c:5536 -#, 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" +#: utils/misc/guc.c:1166 +msgid "Sets the default read-only status of new transactions." +msgstr "Estado por omisión de sólo lectura de nuevas transacciones." -#: access/transam/xlog.c:5544 -#, 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" +#: utils/misc/guc.c:1175 +msgid "Sets the current transaction's read-only status." +msgstr "Activa el estado de sólo lectura de la transacción en curso." -#: access/transam/xlog.c:5549 -#, 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" +#: utils/misc/guc.c:1185 +msgid "Sets the default deferrable status of new transactions." +msgstr "Estado por omisión de postergable de nuevas transacciones." -#: access/transam/xlog.c:5632 -#, c-format +#: utils/misc/guc.c:1194 msgid "" -"hot standby is not possible because %s = %d is a lower setting than on the " -"master server (its value was %d)" +"Whether to defer a read-only serializable transaction until it can be " +"executed with no possible serialization failures." msgstr "" -"hoy standby no es posible puesto que %s = %d es una configuración menor que " -"en el servidor maestro (su valor era %d)" +"Si está activo, las transacciones serializables de sólo lectura serán " +"pausadas hasta que puedan ejecutarse sin posibles fallas de serialización." -#: access/transam/xlog.c:5654 -msgid "WAL was generated with wal_level=minimal, data may be missing" -msgstr "WAL fue generado con wal_level=minimal, puede haber datos faltantes" +#: utils/misc/guc.c:1204 +msgid "Check function bodies during CREATE FUNCTION." +msgstr "Verificar definición de funciones durante CREATE FUNCTION." + +#: utils/misc/guc.c:1213 +msgid "Enable input of NULL elements in arrays." +msgstr "Habilita el ingreso de elementos nulos en arrays." -#: access/transam/xlog.c:5655 +#: utils/misc/guc.c:1214 msgid "" -"This happens if you temporarily set wal_level=minimal without taking a new " -"base backup." +"When turned on, unquoted NULL in an array input value means a null value; " +"otherwise it is taken literally." msgstr "" -"Esto sucede si temporalmente define wal_level=minimal sin tomar un nuevo " -"respaldo base." +"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:1224 +msgid "Create new tables with OIDs by default." +msgstr "Crea nuevas tablas con OIDs por omisión." -#: access/transam/xlog.c:5666 +#: utils/misc/guc.c:1233 msgid "" -"hot standby is not possible because wal_level was not set to \"hot_standby\" " -"on the master server" +"Start a subprocess to capture stderr output and/or csvlogs into log files." msgstr "" -"hot standby no es posible porque wal_level no estaba configurado como " -"«hot_standby» en el servidor maestro" +"Lanzar un subproceso para capturar stderr y/o logs CSV en archivos de log." -#: access/transam/xlog.c:5667 -msgid "" -"Either set wal_level to \"hot_standby\" on the master, or turn off " -"hot_standby here." +#: utils/misc/guc.c:1242 +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:1253 +msgid "Emit information about resource usage in sorting." msgstr "" -"Defina wal_level a «hot_standby» en el maestro, o bien desactive hot_standby " -"en este servidor." +"Emitir información acerca de uso de recursos durante los ordenamientos." -#: access/transam/xlog.c:5714 -msgid "control file contains invalid data" -msgstr "el archivo de control contiene datos no válidos" +#: utils/misc/guc.c:1267 +msgid "Generate debugging output for synchronized scanning." +msgstr "Generar salida de depuración para recorrido sincronizado." -#: access/transam/xlog.c:5718 -#, c-format -msgid "database system was shut down at %s" -msgstr "el sistema de bases de datos fue apagado en %s" +#: utils/misc/guc.c:1282 +msgid "Enable bounded sorting using heap sort." +msgstr "Activar ordenamiento acotado usando «heap sort»." -#: access/transam/xlog.c:5722 -#, 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" +#: utils/misc/guc.c:1295 +msgid "Emit WAL-related debugging output." +msgstr "Activar salida de depuración de WAL." -#: access/transam/xlog.c:5726 -#, 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" +#: utils/misc/guc.c:1307 +msgid "Datetimes are integer based." +msgstr "Las fechas y horas se basan en tipos enteros." -#: access/transam/xlog.c:5730 -#, c-format -msgid "database system was interrupted while in recovery at %s" +#: utils/misc/guc.c:1322 +msgid "" +"Sets whether Kerberos and GSSAPI user names should be treated as case-" +"insensitive." msgstr "" -"el sistema de bases de datos fue interrumpido durante la recuperación en %s" +"Define que los nombres de usuario Kerberos y GSSAPI deberían ser tratados " +"sin distinción de mayúsculas." -#: access/transam/xlog.c:5732 -msgid "" -"This probably means that some data is corrupted and you will have to use the " -"last backup for recovery." +#: utils/misc/guc.c:1332 +msgid "Warn about backslash escapes in ordinary string literals." msgstr "" -"Esto probablemente significa que algunos datos están corruptos y tendrá que " -"usar el respaldo más reciente para la recuperación." +"Avisa acerca de escapes de backslash en literales de cadena corrientes." -#: access/transam/xlog.c:5736 -#, c-format -msgid "database system was interrupted while in recovery at log time %s" +#: utils/misc/guc.c:1342 +msgid "Causes '...' strings to treat backslashes literally." msgstr "" -"el sistema de bases de datos fue interrumpido durante la recuperación en el " -"instante de registro %s" +"Provoca que las cadenas '...' traten las barras inclinadas inversas (\\) en " +"forma literal." + +#: utils/misc/guc.c:1353 +msgid "Enable synchronized sequential scans." +msgstr "Permitir la sincronización de recorridos secuenciales." + +#: utils/misc/guc.c:1363 +msgid "Allows archiving of WAL files using archive_command." +msgstr "Permite el archivado de WAL usando archive_command." + +#: utils/misc/guc.c:1373 +msgid "Allows connections and queries during recovery." +msgstr "Permite conexiones y consultas durante la recuperación." -#: access/transam/xlog.c:5738 +#: utils/misc/guc.c:1383 msgid "" -"If this has occurred more than once some data might be corrupted and you " -"might need to choose an earlier recovery target." +"Allows feedback from a hot standby to the primary that will avoid query " +"conflicts." msgstr "" -"Si esto ha ocurrido más de una vez, algunos datos podrían estar corruptos y " -"podría necesitar escoger un punto de recuperación anterior." +"Permite retroalimentación desde un hot standby hacia el primario que evitará " +"conflictos en consultas." -#: access/transam/xlog.c:5742 -#, 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:5791 -#, c-format -msgid "requested timeline %u is not a child of database system timeline %u" -msgstr "el timeline %u especificado no es hijo del timeline de sistema %u" - -#: access/transam/xlog.c:5809 -msgid "entering standby mode" -msgstr "entrando al modo standby" - -#: access/transam/xlog.c:5812 -#, 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:5816 -#, c-format -msgid "starting point-in-time recovery to %s" -msgstr "comenzando el proceso de recuperación hasta %s" - -#: access/transam/xlog.c:5820 -msgid "starting archive recovery" -msgstr "comenzando proceso de recuperación" +#: utils/misc/guc.c:1393 +msgid "Allows modifications of the structure of system tables." +msgstr "Permite modificaciones de la estructura de las tablas del sistema." -#: access/transam/xlog.c:5835 access/transam/xlog.c:5875 -#, c-format -msgid "checkpoint record is at %X/%X" -msgstr "el registro del punto de control está en %X/%X" +#: utils/misc/guc.c:1404 +msgid "Disables reading from system indexes." +msgstr "Deshabilita lectura de índices del sistema." -#: access/transam/xlog.c:5849 -msgid "could not find redo location referenced by checkpoint record" +#: utils/misc/guc.c:1405 +msgid "" +"It does not prevent updating the indexes, so it is safe to use. The worst " +"consequence is slowness." msgstr "" -"no se pudo localizar la ubicación de redo referida por el registro de " -"checkpoint" +"No evita la actualización de índices, así que es seguro. Lo peor que puede " +"ocurrir es lentitud del sistema." -#: access/transam/xlog.c:5850 access/transam/xlog.c:5857 -#, c-format +#: utils/misc/guc.c:1416 msgid "" -"If you are not restoring from a backup, try removing the file \"%s/" -"backup_label\"." +"Enables backward compatibility mode for privilege checks on large objects." msgstr "" -"Si no está restaurando un respaldo, intente eliminando «%s/backup_label»." +"Activa el modo de compatibilidad con versiones anteriores de las " +"comprobaciones de privilegios de objetos grandes." -#: access/transam/xlog.c:5856 -msgid "could not locate required checkpoint record" -msgstr "no se pudo localizar el registro del punto de control requerido" +#: utils/misc/guc.c:1417 +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." -#: access/transam/xlog.c:5885 access/transam/xlog.c:5900 -msgid "could not locate a valid checkpoint record" -msgstr "no se pudo localizar un registro de punto de control válido" +#: utils/misc/guc.c:1427 +msgid "When generating SQL fragments, quote all identifiers." +msgstr "Al generar fragmentos SQL, entrecomillar todos los identificadores." -#: access/transam/xlog.c:5894 -#, c-format -msgid "using previous checkpoint record at %X/%X" -msgstr "usando el registro del punto de control anterior en %X/%X" +#: utils/misc/guc.c:1446 +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." -#: access/transam/xlog.c:5909 -#, c-format -msgid "redo record is at %X/%X; shutdown %s" -msgstr "registro de redo en %X/%X; apagado %s" +#: utils/misc/guc.c:1457 +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." -#: access/transam/xlog.c:5913 -#, c-format -msgid "next transaction ID: %u/%u; next OID: %u" -msgstr "siguiente ID de transacción: %u/%u; siguiente OID: %u" +#: utils/misc/guc.c:1458 utils/misc/guc.c:1907 +msgid "This allows attaching a debugger to the process." +msgstr "Esto permite adjuntar un depurador al proceso." -#: access/transam/xlog.c:5917 -#, c-format -msgid "next MultiXactId: %u; next MultiXactOffset: %u" -msgstr "siguiente MultiXactId: %u; siguiente MultiXactOffset: %u" +#: utils/misc/guc.c:1467 +msgid "Sets the default statistics target." +msgstr "Definir el valor por omisión de toma de estadísticas." -#: access/transam/xlog.c:5920 -#, 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" +#: utils/misc/guc.c:1468 +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." -#: access/transam/xlog.c:5924 -msgid "invalid next transaction ID" -msgstr "el siguiente ID de transacción no es válido" +#: utils/misc/guc.c:1477 +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." -#: access/transam/xlog.c:5943 -msgid "invalid redo in checkpoint record" -msgstr "redo no es válido en el registro de punto de control" +#: utils/misc/guc.c:1479 +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." -#: access/transam/xlog.c:5954 -msgid "invalid redo record in shutdown checkpoint" -msgstr "registro redo no es válido en el punto de control de apagado" +#: utils/misc/guc.c:1489 +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." -#: access/transam/xlog.c:5984 +#: utils/misc/guc.c:1491 msgid "" -"database system was not properly shut down; automatic recovery in progress" +"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 sistema de bases de datos no fue apagado apropiadamente; se está " -"efectuando la recuperación automática" +"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." -#: access/transam/xlog.c:6049 -msgid "initializing for hot standby" -msgstr "inicializando para hot standby" +#: utils/misc/guc.c:1501 +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." -#: access/transam/xlog.c:6174 -#, c-format -msgid "redo starts at %X/%X" -msgstr "redo comienza en %X/%X" +#: utils/misc/guc.c:1510 +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." -#: access/transam/xlog.c:6273 -#, c-format -msgid "redo done at %X/%X" -msgstr "redo listo en %X/%X" +#: utils/misc/guc.c:1519 +msgid "GEQO: number of individuals in the population." +msgstr "GEQO: número de individuos en una población." -#: access/transam/xlog.c:6278 access/transam/xlog.c:7747 -#, c-format -msgid "last completed transaction was at log time %s" -msgstr "última transacción completada al tiempo de registro %s" +#: utils/misc/guc.c:1520 utils/misc/guc.c:1529 +msgid "Zero selects a suitable default value." +msgstr "Cero selecciona un valor por omisión razonable." -#: access/transam/xlog.c:6286 -msgid "redo is not required" -msgstr "no se requiere redo" +#: utils/misc/guc.c:1528 +msgid "GEQO: number of iterations of the algorithm." +msgstr "GEQO: número de iteraciones del algoritmo." -#: access/transam/xlog.c:6326 -msgid "requested recovery stop point is before consistent recovery point" +#: utils/misc/guc.c:1539 +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:1550 +msgid "" +"Sets the maximum delay before canceling queries when a hot standby server is " +"processing archived WAL data." msgstr "" -"el punto de detención de recuperación pedido es antes del punto de " -"recuperación consistente" +"Define el máximo retardo antes de cancelar consultas cuando un servidor hot " +"standby está procesando datos de WAL archivado." -#: access/transam/xlog.c:6329 -msgid "WAL ends before consistent recovery point" -msgstr "WAL termina antes del punto de recuperación consistente" +#: utils/misc/guc.c:1561 +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." -#: access/transam/xlog.c:6350 -#, c-format -msgid "selected new timeline ID: %u" -msgstr "seleccionado nuevo ID de timeline: %u" +#: utils/misc/guc.c:1572 +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." -#: access/transam/xlog.c:6586 -#, c-format -msgid "consistent recovery state reached at %X/%X" -msgstr "el estado de recuperación consistente fue alcanzado en %X/%X" +#: utils/misc/guc.c:1583 +msgid "Sets the maximum number of concurrent connections." +msgstr "Número máximo de conexiones concurrentes." -#: access/transam/xlog.c:6712 -msgid "invalid primary checkpoint link in control file" -msgstr "" -"el enlace de punto de control primario en archivo de control no es válido" +#: utils/misc/guc.c:1593 +msgid "Sets the number of connection slots reserved for superusers." +msgstr "Número de conexiones reservadas para superusuarios." -#: access/transam/xlog.c:6716 -msgid "invalid secondary checkpoint link in control file" -msgstr "" -"el enlace del punto de control secundario en archivo de control no es válido" +#: utils/misc/guc.c:1607 +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." -#: access/transam/xlog.c:6720 -msgid "invalid checkpoint link in backup_label file" -msgstr "el enlace del punto de control en backup_label no es válido" +#: utils/misc/guc.c:1618 +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." -#: access/transam/xlog.c:6734 -msgid "invalid primary checkpoint record" -msgstr "el registro del punto de control primario no es válido" +#: utils/misc/guc.c:1629 +msgid "Sets the TCP port the server listens on." +msgstr "Puerto TCP en el cual escuchará el servidor." -#: access/transam/xlog.c:6738 -msgid "invalid secondary checkpoint record" -msgstr "el registro del punto de control secundario no es válido" +#: utils/misc/guc.c:1639 +msgid "Sets the access permissions of the Unix-domain socket." +msgstr "Privilegios de acceso al socket Unix." -#: access/transam/xlog.c:6742 -msgid "invalid checkpoint record" -msgstr "el registro del punto de control no es válido" +#: utils/misc/guc.c:1640 +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)." -#: access/transam/xlog.c:6753 -msgid "invalid resource manager ID in primary checkpoint record" +#: utils/misc/guc.c:1654 +msgid "Sets the file permissions for log files." +msgstr "Define los privilegios para los archivos del registro del servidor." + +#: utils/misc/guc.c:1655 +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 "" -"el ID de gestor de recursos en el registro del punto de control primario no " -"es válido" +"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)." -#: access/transam/xlog.c:6757 -msgid "invalid resource manager ID in secondary checkpoint record" +#: utils/misc/guc.c:1668 +msgid "Sets the maximum memory to be used for query workspaces." msgstr "" -"el ID de gestor de recursos en el registro del punto de control secundario " -"no es válido" +"Establece el límite de memoria que se usará para espacios de trabajo de " +"consultas." -#: access/transam/xlog.c:6761 -msgid "invalid resource manager ID in checkpoint record" +#: utils/misc/guc.c:1669 +msgid "" +"This much memory can be used by each internal sort operation and hash table " +"before switching to temporary disk files." msgstr "" -"el ID de gestor de recursos en el registro del punto de control no es válido" +"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." -#: access/transam/xlog.c:6773 -msgid "invalid xl_info in primary checkpoint record" -msgstr "xl_info en el registro del punto de control primario no es válido" +#: utils/misc/guc.c:1681 +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." -#: access/transam/xlog.c:6777 -msgid "invalid xl_info in secondary checkpoint record" -msgstr "xl_info en el registro del punto de control secundario no es válido" +#: utils/misc/guc.c:1682 +msgid "This includes operations such as VACUUM and CREATE INDEX." +msgstr "Esto incluye operaciones como VACUUM y CREATE INDEX." -#: access/transam/xlog.c:6781 -msgid "invalid xl_info in checkpoint record" -msgstr "xl_info en el registro del punto de control no es válido" +#: utils/misc/guc.c:1697 +msgid "Sets the maximum stack depth, in kilobytes." +msgstr "Establece el tamaño máximo del stack, en kilobytes." -#: access/transam/xlog.c:6793 -msgid "invalid length of primary checkpoint record" -msgstr "la longitud del registro del punto de control primario no es válida" +#: utils/misc/guc.c:1708 +msgid "Vacuum cost for a page found in the buffer cache." +msgstr "Costo de Vacuum de una página encontrada en el buffer." -#: access/transam/xlog.c:6797 -msgid "invalid length of secondary checkpoint record" -msgstr "la longitud del registro del punto de control secundario no es válida" +#: utils/misc/guc.c:1718 +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." -#: access/transam/xlog.c:6801 -msgid "invalid length of checkpoint record" -msgstr "la longitud del registro de punto de control no es válida" +#: utils/misc/guc.c:1728 +msgid "Vacuum cost for a page dirtied by vacuum." +msgstr "Costo de Vacuum de una página ensuciada por vacuum." -#: access/transam/xlog.c:6963 -msgid "shutting down" -msgstr "apagando" +#: utils/misc/guc.c:1738 +msgid "Vacuum cost amount available before napping." +msgstr "Costo de Vacuum disponible antes de descansar." -#: access/transam/xlog.c:6985 -msgid "database system is shut down" -msgstr "el sistema de bases de datos está apagado" +#: utils/misc/guc.c:1748 +msgid "Vacuum cost delay in milliseconds." +msgstr "Tiempo de descanso de vacuum en milisegundos." -#: access/transam/xlog.c:7378 +#: utils/misc/guc.c:1759 +msgid "Vacuum cost delay in milliseconds, for autovacuum." +msgstr "Tiempo de descanso de vacuum en milisegundos, para autovacuum." + +#: utils/misc/guc.c:1770 +msgid "Vacuum cost amount available before napping, for autovacuum." +msgstr "Costo de Vacuum disponible antes de descansar, para autovacuum." + +#: utils/misc/guc.c:1780 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" +"Sets the maximum number of simultaneously open files for each server process." +msgstr "Define la cantidad máxima de archivos abiertos por cada subproceso." -#: access/transam/xlog.c:7610 -msgid "skipping restartpoint, recovery has already ended" -msgstr "saltando el punto-de-reinicio; la recuperación ya ha terminado" +#: utils/misc/guc.c:1793 +msgid "Sets the maximum number of simultaneously prepared transactions." +msgstr "Define la cantidad máxima de transacciones preparadas simultáneas." -#: access/transam/xlog.c:7635 -#, c-format -msgid "skipping restartpoint, already performed at %X/%X" -msgstr "saltando el punto-de-reinicio; ya fue llevado a cabo en %X/%X" +#: utils/misc/guc.c:1826 +msgid "Sets the maximum allowed duration of any statement." +msgstr "Define la duración máxima permitida de sentencias." -#: access/transam/xlog.c:7745 -#, c-format -msgid "recovery restart point at %X/%X" -msgstr "punto-de-reinicio de recuperación en %X/%X" +#: utils/misc/guc.c:1827 +msgid "A value of 0 turns off the timeout." +msgstr "Un valor de 0 desactiva el máximo." -#: access/transam/xlog.c:7915 -msgid "online backup was cancelled, recovery cannot continue" +#: utils/misc/guc.c:1837 +msgid "Minimum age at which VACUUM should freeze a table row." msgstr "" -"el modo de respaldo en línea fue cancelado, la recuperación no puede " -"continuar" +"Mínima edad a la cual VACUUM debería congelar (freeze) una fila de una tabla." -#: access/transam/xlog.c:7967 -#, c-format -msgid "unexpected timeline ID %u (after %u) in checkpoint record" +#: utils/misc/guc.c:1847 +msgid "Age at which VACUUM should scan whole table to freeze tuples." msgstr "" -"ID de timeline %u inesperado (después de %u) en el registro de punto de " -"control" +"Edad a la cual VACUUM debería recorrer una tabla completa para congelar " +"(freeze) las filas." -#: access/transam/xlog.c:8003 -#, c-format -msgid "unexpected timeline ID %u (should be %u) in checkpoint record" +#: utils/misc/guc.c:1857 +msgid "" +"Number of transactions by which VACUUM and HOT cleanup should be deferred, " +"if any." msgstr "" -"ID de timeline %u inesperado (debería ser %u) en el registro de punto de " -"control" +"Número de transacciones por las cuales VACUUM y la limpieza HOT deberían " +"postergarse." -#: access/transam/xlog.c:8259 access/transam/xlog.c:8285 -#, c-format -msgid "could not fsync log file %u, segment %u: %m" -msgstr "" -"no se pudo sincronizar (fsync) el archivo de registro %u, segmento %u: %m" +#: utils/misc/guc.c:1870 +msgid "Sets the maximum number of locks per transaction." +msgstr "Cantidad máxima de candados (locks) por transacción." -#: access/transam/xlog.c:8293 -#, c-format -msgid "could not fsync write-through log file %u, segment %u: %m" +#: utils/misc/guc.c:1871 +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 "" -"no se pudo sincronizar (fsync write-through) el archivo de registro %u, " -"segmento %u: %m" +"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." -#: access/transam/xlog.c:8302 -#, c-format -msgid "could not fdatasync log file %u, segment %u: %m" -msgstr "" -"no se pudo sincronizar (fdatasync) el archivo de registro %u, segmento %u: %m" +#: utils/misc/guc.c:1882 +msgid "Sets the maximum number of predicate locks per transaction." +msgstr "Cantidad máxima de candados (locks) de predicado por transacción." -#: access/transam/xlog.c:8345 access/transam/xlog.c:8537 -msgid "must be superuser to run a backup" -msgstr "debe ser superusuario para ejecutar un respaldo" +#: utils/misc/guc.c:1883 +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." -#: access/transam/xlog.c:8350 access/transam/xlog.c:8542 -#: access/transam/xlog.c:8745 access/transam/xlog.c:8773 -#: access/transam/xlog.c:8806 access/transam/xlog.c:8898 -#: access/transam/xlog.c:8973 -msgid "recovery is in progress" -msgstr "la recuperación está en proceso" +#: utils/misc/guc.c:1894 +msgid "Sets the maximum allowed time to complete client authentication." +msgstr "Define el tiempo máximo para completar proceso de autentificación." -#: access/transam/xlog.c:8351 access/transam/xlog.c:8543 -#: access/transam/xlog.c:8746 access/transam/xlog.c:8774 -#: access/transam/xlog.c:8807 -msgid "WAL control functions cannot be executed during recovery." +#: utils/misc/guc.c:1906 +msgid "Waits N seconds on connection startup before authentication." msgstr "" -"Las funciones de control de WAL no pueden ejecutarse durante la recuperación." +"Espera N segundos al inicio de la conexión antes de la autentificación." -#: access/transam/xlog.c:8356 access/transam/xlog.c:8548 -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" +#: utils/misc/guc.c:1917 +msgid "Sets the number of WAL files held for standby servers." +msgstr "Número de archivos WAL conservados para servidores standby." -#: access/transam/xlog.c:8357 access/transam/xlog.c:8549 +#: utils/misc/guc.c:1927 msgid "" -"wal_level must be set to \"archive\" or \"hot_standby\" at server start." +"Sets the maximum distance in log segments between automatic WAL checkpoints." msgstr "" -"wal_level debe ser definido a «archive» o «hot_standby» al inicio del " -"servidor." +"Define la distancia máxima, en cantidad de segmentos, entre puntos de " +"control de WAL automáticos." -#: access/transam/xlog.c:8384 access/transam/xlog.c:8453 -msgid "a backup is already in progress" -msgstr "ya hay un respaldo en curso" +#: utils/misc/guc.c:1937 +msgid "Sets the maximum time between automatic WAL checkpoints." +msgstr "Define el tiempo máximo entre puntos de control de WAL automáticos." -#: access/transam/xlog.c:8385 -msgid "Run pg_stop_backup() and try again." -msgstr "Ejecute pg_stop_backup() e intente nuevamente." +#: utils/misc/guc.c:1948 +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." -#: access/transam/xlog.c:8454 -#, c-format +#: utils/misc/guc.c:1950 msgid "" -"If you're sure there is no backup in progress, remove file \"%s\" and try " -"again." +"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 "" -"Si está seguro que no hay un respaldo en curso, elimine el archivo «%s» e " -"intente nuevamente." +"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." -#: access/transam/xlog.c:8475 access/transam/xlog.c:8632 -#, c-format -msgid "could not write file \"%s\": %m" -msgstr "no se pudo escribir el archivo «%s»: %m" +#: utils/misc/guc.c:1962 +msgid "Sets the number of disk-page buffers in shared memory for WAL." +msgstr "Búfers en memoria compartida para páginas de WAL." -#: access/transam/xlog.c:8571 -msgid "a backup is not in progress" -msgstr "no hay un respaldo en curso" +#: utils/misc/guc.c:1973 +msgid "WAL writer sleep time between WAL flushes." +msgstr "" +"Tiempo de descanso del escritor de WAL entre escrituras de WAL consecutivas." -#: access/transam/xlog.c:8583 access/transam/xlog.c:9039 -#: access/transam/xlog.c:9045 -#, c-format -msgid "invalid data in file \"%s\"" -msgstr "datos no válidos en archivo «%s»" +#: utils/misc/guc.c:1985 +msgid "Sets the maximum number of simultaneously running WAL sender processes." +msgstr "Define la cantidad máxima de procesos «WAL sender» simultáneos." -#: access/transam/xlog.c:8695 -msgid "" -"pg_stop_backup cleanup done, waiting for required WAL segments to be archived" +#: utils/misc/guc.c:1995 +msgid "WAL sender sleep time between WAL replications." msgstr "" -"finalización de pg_stop_backup completa, esperando que se archiven los " -"segmentos WAL requeridos" +"Tiempo de descanso de «WAL sender» entre replicaciones de WAL consecutivas." -#: access/transam/xlog.c:8705 -#, c-format +#: utils/misc/guc.c:2006 +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:2017 msgid "" -"pg_stop_backup still waiting for all required WAL segments to be archived " -"(%d seconds elapsed)" +"Sets the delay in microseconds between transaction commit and flushing WAL " +"to disk." msgstr "" -"pg_stop_backup todavía espera que todos los segmentos WAL requeridos sean " -"archivados (han pasado %d segundos)" +"Retardo en microsegundos entre completar una transacción y escribir WAL a " +"disco." -#: access/transam/xlog.c:8707 +#: utils/misc/guc.c:2028 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 "" -"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." +"Sets the minimum concurrent open transactions before performing commit_delay." +msgstr "Mínimo de transacciones concurrentes para esperar commit_delay." -#: access/transam/xlog.c:8714 -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" +#: utils/misc/guc.c:2039 +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." -#: access/transam/xlog.c:8718 +#: utils/misc/guc.c:2040 msgid "" -"WAL archiving is not enabled; you must ensure that all required WAL segments " -"are copied through other means to complete the backup" +"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 "" -"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:8740 -msgid "must be superuser to switch transaction log files" -msgstr "debe ser superusuario para cambiar a un nuevo archivo de registro" +"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)" -#: access/transam/xlog.c:8899 -msgid "pg_xlogfile_name_offset() cannot be executed during recovery." -msgstr "pg_xlogfile_name_offset() no puede ejecutarse durante la recuperación." +#: utils/misc/guc.c:2051 +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." -#: access/transam/xlog.c:8909 access/transam/xlog.c:8981 -#, c-format -msgid "could not parse transaction log location \"%s\"" -msgstr "no se pudo interpretar la ubicación del registro de transacciones «%s»" +#: utils/misc/guc.c:2053 +msgid "Zero prints all queries. -1 turns this feature off." +msgstr "Cero registra todas las consultas. -1 desactiva esta característica." -#: access/transam/xlog.c:8974 -msgid "pg_xlogfile_name() cannot be executed during recovery." -msgstr "pg_xlogfile_name() no puede ejecutarse durante la recuperación." +#: utils/misc/guc.c:2063 +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." -#: access/transam/xlog.c:9071 -#, c-format -msgid "xlog redo %s" -msgstr "xlog redo %s" +#: utils/misc/guc.c:2065 +msgid "Zero prints all actions. -1 turns autovacuum logging off." +msgstr "" +"Cero registra todas las acciones. -1 desactiva el registro de autovacuum." -#: access/transam/xlog.c:9111 -msgid "online backup mode cancelled" -msgstr "el modo de respaldo en línea fue cancelado" +#: utils/misc/guc.c:2075 +msgid "Background writer sleep time between rounds." +msgstr "Tiempo de descanso entre rondas del background writer" -#: access/transam/xlog.c:9112 -#, c-format -msgid "\"%s\" was renamed to \"%s\"." -msgstr "«%s» fue renombrado a «%s»." +#: utils/misc/guc.c:2086 +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" -#: access/transam/xlog.c:9119 -msgid "online backup mode was not cancelled" -msgstr "el modo de respaldo en línea no fue cancelado" +#: utils/misc/guc.c:2102 +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." -#: access/transam/xlog.c:9120 -#, c-format -msgid "Could not rename \"%s\" to \"%s\": %m." -msgstr "No se pudo renombrar «%s» a «%s»: %m." +#: utils/misc/guc.c:2103 +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." -#: access/transam/xlog.c:9588 access/transam/xlog.c:9610 -#, c-format -msgid "could not read from log file %u, segment %u, offset %u: %m" +#: utils/misc/guc.c:2116 +msgid "Automatic log file rotation will occur after N minutes." msgstr "" -"no se pudo leer el archivo de registro %u, segmento %u, posición %u: %m" +"La rotación automática de archivos de log se efectuará después de N minutos." -#: access/transam/xlog.c:9698 -#, c-format -msgid "trigger file found: %s" -msgstr "se encontró el archivo disparador: %s" +#: utils/misc/guc.c:2127 +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." -#: access/common/tupdesc.c:545 parser/parse_relation.c:1165 -#, c-format -msgid "column \"%s\" cannot be declared SETOF" -msgstr "la columna «%s» no puede ser declarada SETOF" +#: utils/misc/guc.c:2138 +msgid "Shows the maximum number of function arguments." +msgstr "Muestra la cantidad máxima de argumentos de funciones." -#: access/common/heaptuple.c:646 access/common/heaptuple.c:1398 -#, c-format -msgid "number of columns (%d) exceeds limit (%d)" -msgstr "el número de columnas (%d) excede el límite (%d)" +#: utils/misc/guc.c:2149 +msgid "Shows the maximum number of index keys." +msgstr "Muestra la cantidad máxima de claves de índices." -#: access/common/indextuple.c:57 -#, c-format -msgid "number of index columns (%d) exceeds limit (%d)" -msgstr "el número de columnas del índice (%d) excede el límite (%d)" +#: utils/misc/guc.c:2160 +msgid "Shows the maximum identifier length." +msgstr "Muestra el largo máximo de identificadores." -#: access/common/indextuple.c:168 -#, 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" - -#: access/common/printtup.c:278 tcop/fastpath.c:181 tcop/fastpath.c:561 -#: tcop/postgres.c:1704 -#, c-format -msgid "unsupported format code: %d" -msgstr "código de formato no soportado: %d" +#: utils/misc/guc.c:2171 +msgid "Shows the size of a disk block." +msgstr "Muestra el tamaño de un bloque de disco." -#: access/common/reloptions.c:323 -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" +#: utils/misc/guc.c:2182 +msgid "Shows the number of pages per disk file." +msgstr "Muestra el número de páginas por archivo en disco." -#: access/common/reloptions.c:622 -msgid "RESET must not include values for parameters" -msgstr "RESET no debe incluir valores de parámetros" +#: utils/misc/guc.c:2193 +msgid "Shows the block size in the write ahead log." +msgstr "Muestra el tamaño de bloque en el write-ahead log." -#: access/common/reloptions.c:655 -#, c-format -msgid "unrecognized parameter namespace \"%s\"" -msgstr "espacio de nombre de parámetro «%s» no reconocido" +#: utils/misc/guc.c:2204 +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." -#: access/common/reloptions.c:895 -#, c-format -msgid "unrecognized parameter \"%s\"" -msgstr "parámetro no reconocido «%s»" +#: utils/misc/guc.c:2217 +msgid "Time to sleep between autovacuum runs." +msgstr "Tiempo de descanso entre ejecuciones de autovacuum." -#: access/common/reloptions.c:920 -#, c-format -msgid "parameter \"%s\" specified more than once" -msgstr "el parámetro «%s» fue especificado más de una vez" +#: utils/misc/guc.c:2227 +msgid "Minimum number of tuple updates or deletes prior to vacuum." +msgstr "Número mínimo de updates o deletes antes de ejecutar vacuum." -#: access/common/reloptions.c:935 -#, c-format -msgid "invalid value for boolean option \"%s\": %s" -msgstr "valor no válido para la opción booleana «%s»: «%s»" +#: utils/misc/guc.c:2236 +msgid "Minimum number of tuple inserts, updates or deletes prior to analyze." +msgstr "Número mínimo de inserts, updates, deletes antes de ejecutar analyze." -#: access/common/reloptions.c:946 -#, c-format -msgid "invalid value for integer option \"%s\": %s" -msgstr "valor no válido para la opción entera «%s»: «%s»" +#: utils/misc/guc.c:2246 +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." -#: access/common/reloptions.c:951 access/common/reloptions.c:969 -#, c-format -msgid "value %s out of bounds for option \"%s\"" -msgstr "el valor %s está fuera del rango de la opción «%s»" +#: utils/misc/guc.c:2257 +msgid "" +"Sets the maximum number of simultaneously running autovacuum worker " +"processes." +msgstr "Define la cantidad máxima de procesos «autovacuum worker» simultáneos." -#: access/common/reloptions.c:953 -#, c-format -msgid "Valid values are between \"%d\" and \"%d\"." -msgstr "Los valores aceptables están entre «%d» y «%d»." +#: utils/misc/guc.c:2267 +msgid "Time between issuing TCP keepalives." +msgstr "Tiempo entre cada emisión de TCP keepalive." -#: access/common/reloptions.c:964 -#, 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»" +#: utils/misc/guc.c:2268 utils/misc/guc.c:2279 +msgid "A value of 0 uses the system default." +msgstr "Un valor 0 usa el valor por omisión del sistema." -#: access/common/reloptions.c:971 -#, c-format -msgid "Valid values are between \"%f\" and \"%f\"." -msgstr "Valores aceptables están entre «%f» y «%f»." +#: utils/misc/guc.c:2278 +msgid "Time between TCP keepalive retransmits." +msgstr "Tiempo entre retransmisiones TCP keepalive." -#: access/common/tupconvert.c:107 -#, c-format -msgid "Returned type %s does not match expected type %s in column %d." +#: utils/misc/guc.c:2289 +msgid "" +"Set the amount of traffic to send and receive before renegotiating the " +"encryption keys." msgstr "" -"El tipo retornado %s no coincide con el tipo de registro esperado %s en la " -"columna %d." +"Define la cantidad de tráfico a enviar y recibir antes de renegociar las " +"llaves de cifrado." -#: access/common/tupconvert.c:135 -#, c-format +#: utils/misc/guc.c:2300 +msgid "Maximum number of TCP keepalive retransmits." +msgstr "Cantidad máxima de retransmisiones TCP keepalive." + +#: utils/misc/guc.c:2301 msgid "" -"Number of returned columns (%d) does not match expected column count (%d)." +"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 "" -"La cantidad de columnas retornadas (%d) no coincide con la cantidad esperada " -"de columnas (%d)." +"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." -#: access/common/tupconvert.c:240 -#, c-format +#: utils/misc/guc.c:2312 +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:2323 +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:2324 msgid "" -"Attribute \"%s\" of type %s does not match corresponding attribute of type " -"%s." +"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 "" -"El atributo «%s» de tipo %s no coincide el atributo correspondiente de tipo " -"%s." +"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." -#: access/common/tupconvert.c:252 -#, c-format -msgid "Attribute \"%s\" of type %s does not exist in type %s." -msgstr "El atributo «%s» de tipo %s no existe en el tipo %s." +#: utils/misc/guc.c:2337 +msgid "Shows the server version as an integer." +msgstr "Muestra la versión del servidor como un número entero." -#: access/gin/ginarrayproc.c:30 -msgid "array must not contain null values" -msgstr "los arrays no deben contener valores nulos" +#: utils/misc/guc.c:2348 +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." -#: access/gin/ginentrypage.c:83 access/gin/ginentrypage.c:118 -#: access/nbtree/nbtinsert.c:522 access/nbtree/nbtsort.c:483 -#, c-format -msgid "index row size %lu exceeds maximum %lu for index \"%s\"" +#: utils/misc/guc.c:2349 +msgid "Zero logs all files. The default is -1 (turning this feature off)." msgstr "" -"el tamaño de fila de índice %lu excede el máximo %lu para el índice «%s»" +"Cero registra todos los archivos. El valor por omisión es -1 (lo cual " +"desactiva el registro)." -#: access/gin/ginscan.c:168 access/gin/ginscan.c:231 -msgid "GIN indexes do not support whole-index scans" -msgstr "los índices GIN no soportan recorridos del índice completo" +#: utils/misc/guc.c:2359 +msgid "Sets the size reserved for pg_stat_activity.current_query, in bytes." +msgstr "Tamaño reservado para pg_stat_activity.current_query, en bytes." -#: access/gist/gistxlog.c:803 -#, c-format -msgid "index %u/%u/%u needs VACUUM FULL or REINDEX to finish crash recovery" -msgstr "" -"índice %u/%u/%u necesita que se ejecute VACUUM FULL o REINDEX para finalizar " -"la recuperación" +#: utils/misc/guc.c:2378 +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." -#: access/gist/gistxlog.c:805 -msgid "Incomplete insertion detected during crash replay." -msgstr "Inserción incompleta detectada durante recuperación." +#: utils/misc/guc.c:2388 +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." -#: access/gist/gistsplit.c:372 -#, c-format -msgid "picksplit method for column %d of index \"%s\" failed" -msgstr "el método picksplit para la columna %d del índice «%s» falló" +#: utils/misc/guc.c:2398 +msgid "Sets the planner's estimate of the cost of processing each tuple (row)." +msgstr "Estimación del costo de procesar cada tupla (fila)." -#: access/gist/gistsplit.c:374 +#: utils/misc/guc.c:2408 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." +"Sets the planner's estimate of the cost of processing each index entry " +"during an index scan." 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." +"Estimación del costo de procesar cada fila de índice durante un recorrido de " +"índice." -#: access/gist/gistutil.c:407 -#, c-format -msgid "index \"%s\" needs VACUUM or REINDEX to finish crash recovery" -msgstr "" -"índice «%s» necesita que se ejecute VACUUM o REINDEX para finalizar la " -"recuperación" +#: utils/misc/guc.c:2418 +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." -#: access/gist/gistutil.c:588 access/hash/hashutil.c:165 -#: access/nbtree/nbtpage.c:432 -#, 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" +#: utils/misc/guc.c:2429 +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." -#: access/gist/gistutil.c:591 access/gist/gistutil.c:602 -#: access/hash/hashutil.c:168 access/hash/hashutil.c:179 -#: access/hash/hashutil.c:191 access/hash/hashutil.c:212 -#: access/nbtree/nbtpage.c:435 access/nbtree/nbtpage.c:446 -msgid "Please REINDEX it." -msgstr "Por favor aplíquele REINDEX." +#: utils/misc/guc.c:2440 +msgid "GEQO: selective pressure within the population." +msgstr "GEQO: presión selectiva dentro de la población." -#: access/gist/gistutil.c:599 access/hash/hashutil.c:176 -#: access/hash/hashutil.c:188 access/nbtree/nbtpage.c:443 -#, c-format -msgid "index \"%s\" contains corrupted page at block %u" -msgstr "el índice «%s» contiene una página corrupta en el bloque %u" +#: utils/misc/guc.c:2450 +msgid "GEQO: seed for random path selection." +msgstr "GEQO: semilla para la selección aleatoria de caminos." -#: access/gist/gistvacuum.c:72 -#, c-format -msgid "index \"%s\" needs VACUUM FULL or REINDEX to finish crash recovery" -msgstr "" -"índice «%s» necesita que se ejecute VACUUM FULL o REINDEX para finalizar la " -"recuperación" +#: utils/misc/guc.c:2460 +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." -#: access/hash/hashutil.c:204 -#, c-format -msgid "index \"%s\" is not a hash index" -msgstr "el índice «%s» no es un índice hash" +#: utils/misc/guc.c:2470 +msgid "Sets the seed for random-number generation." +msgstr "Semilla para la generación de números aleatorios." -#: access/hash/hashutil.c:210 -#, c-format -msgid "index \"%s\" has wrong hash version" -msgstr "el índice «%s» tiene una versión de hash incorrecta" +#: utils/misc/guc.c:2481 +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." -#: access/hash/hashinsert.c:73 -#, 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" +#: utils/misc/guc.c:2490 +msgid "" +"Number of tuple inserts, updates or deletes prior to analyze as a fraction " +"of reltuples." +msgstr "" +"Número de inserts, updates o deletes de tuplas antes de ejecutar un analyze, " +"como fracción de reltuples." -#: access/hash/hashinsert.c:76 -msgid "Values larger than a buffer page cannot be indexed." -msgstr "Valores mayores a una página del buffer no pueden ser indexados." +#: utils/misc/guc.c:2500 +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." -#: access/hash/hashovfl.c:546 -#, c-format -msgid "out of overflow pages in hash index \"%s\"" -msgstr "se agotaron las páginas de desbordamiento en el índice hash «%s»" +#: utils/misc/guc.c:2519 +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." -#: access/hash/hashsearch.c:152 -msgid "hash indexes do not support whole-index scans" -msgstr "los índices hash no soportan recorridos del índice completo" +#: utils/misc/guc.c:2529 +msgid "Sets the client's character set encoding." +msgstr "Codificación del juego de caracteres del cliente." -#: access/heap/heapam.c:1076 access/heap/heapam.c:1104 -#: access/heap/heapam.c:1134 catalog/aclchk.c:1720 -#, c-format -msgid "\"%s\" is an index" -msgstr "«%s» es un índice" +#: utils/misc/guc.c:2540 +msgid "Controls information prefixed to each log line." +msgstr "Controla el prefijo que antecede cada línea registrada." -#: access/heap/heapam.c:1081 access/heap/heapam.c:1109 -#: access/heap/heapam.c:1139 catalog/aclchk.c:1727 commands/tablecmds.c:2162 -#: commands/tablecmds.c:6545 commands/tablecmds.c:7851 -#, c-format -msgid "\"%s\" is a composite type" -msgstr "«%s» es un tipo compuesto" +#: utils/misc/guc.c:2541 +msgid "If blank, no prefix is used." +msgstr "si está en blanco, no se usa prefijo." -#: access/heap/heapam.c:3149 access/heap/heapam.c:3180 -#: access/heap/heapam.c:3215 -#, c-format -msgid "could not obtain lock on row in relation \"%s\"" -msgstr "no se pudo obtener un bloqueo en la fila de la relación «%s»" +#: utils/misc/guc.c:2550 +msgid "Sets the time zone to use in log messages." +msgstr "Define el huso horario usando en los mensajes registrados." -#: access/heap/hio.c:175 access/heap/rewriteheap.c:592 -#, 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" +#: utils/misc/guc.c:2560 +msgid "Sets the display format for date and time values." +msgstr "Formato de salida para valores de horas y fechas." -#: access/index/indexam.c:149 commands/comment.c:559 commands/indexcmds.c:1595 -#: commands/tablecmds.c:212 commands/tablecmds.c:2357 -#, c-format -msgid "\"%s\" is not an index" -msgstr "«%s» no es un índice" +#: utils/misc/guc.c:2561 +msgid "Also controls interpretation of ambiguous date inputs." +msgstr "También controla la interpretación de entradas ambiguas de fechas" -#: access/nbtree/nbtinsert.c:384 -#, c-format -msgid "duplicate key value violates unique constraint \"%s\"" -msgstr "llave duplicada viola restricción de unicidad «%s»" +#: utils/misc/guc.c:2572 +msgid "Sets the default tablespace to create tables and indexes in." +msgstr "Define el tablespace en el cual crear tablas e índices." -#: access/nbtree/nbtinsert.c:386 -#, c-format -msgid "Key %s already exists." -msgstr "Ya existe la llave %s." +#: utils/misc/guc.c:2573 +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." -#: access/nbtree/nbtinsert.c:448 executor/execUtils.c:1319 -#, c-format -msgid "failed to re-find tuple within index \"%s\"" -msgstr "no se pudo volver a encontrar la tupla dentro del índice «%s»" +#: utils/misc/guc.c:2583 +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." -#: access/nbtree/nbtinsert.c:450 executor/execUtils.c:1321 -msgid "This may be because of a non-immutable index expression." -msgstr "Esto puede deberse a una expresión de índice no inmutable." +#: utils/misc/guc.c:2594 +msgid "Sets the path for dynamically loadable modules." +msgstr "Ruta para módulos dinámicos." -#: access/nbtree/nbtinsert.c:526 access/nbtree/nbtsort.c:487 +#: utils/misc/guc.c:2595 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." +"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 "" -"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." +"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." -#: access/nbtree/nbtpage.c:160 access/nbtree/nbtpage.c:364 -#, c-format -msgid "index \"%s\" is not a btree" -msgstr "el índice «%s» no es un btree" +#: utils/misc/guc.c:2608 +msgid "Sets the location of the Kerberos server key file." +msgstr "Ubicación del archivo de llave del servidor Kerberos." -#: access/nbtree/nbtpage.c:166 access/nbtree/nbtpage.c:370 -#, 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" +#: utils/misc/guc.c:2619 +msgid "Sets the name of the Kerberos service." +msgstr "Nombre del servicio Kerberos." -#: bootstrap/bootstrap.c:272 tcop/postgres.c:3391 postmaster/postmaster.c:675 -#, c-format -msgid "--%s requires a value" -msgstr "--%s requiere un valor" +#: utils/misc/guc.c:2629 +msgid "Sets the Bonjour service name." +msgstr "Nombre del servicio Bonjour." -#: bootstrap/bootstrap.c:277 tcop/postgres.c:3396 postmaster/postmaster.c:680 -#, c-format -msgid "-c %s requires a value" -msgstr "-c %s requiere un valor" +#: utils/misc/guc.c:2641 +msgid "Shows the collation order locale." +msgstr "Configuración regional de ordenamiento de cadenas (collation)." -#: bootstrap/bootstrap.c:288 postmaster/postmaster.c:692 -#: postmaster/postmaster.c:705 -#, c-format -msgid "Try \"%s --help\" for more information.\n" -msgstr "Pruebe «%s --help» para mayor información.\n" +#: utils/misc/guc.c:2652 +msgid "Shows the character classification and case conversion locale." +msgstr "" +"Configuración regional de clasificación de caracteres y conversión de " +"mayúsculas." -#: bootstrap/bootstrap.c:297 -#, c-format -msgid "%s: invalid command-line arguments\n" -msgstr "%s: argumentos de línea de órdenes no válidos\n" +#: utils/misc/guc.c:2663 +msgid "Sets the language in which messages are displayed." +msgstr "Idioma en el que se despliegan los mensajes." -#: catalog/toasting.c:91 commands/comment.c:573 commands/indexcmds.c:187 -#: commands/indexcmds.c:1627 commands/lockcmds.c:149 commands/tablecmds.c:194 -#: commands/tablecmds.c:1096 commands/tablecmds.c:3354 commands/trigger.c:149 -#: commands/trigger.c:1063 -#, c-format -msgid "\"%s\" is not a table" -msgstr "«%s» no es una tabla" +#: utils/misc/guc.c:2673 +msgid "Sets the locale for formatting monetary amounts." +msgstr "Configuración regional para formatos de moneda." -#: catalog/toasting.c:141 -msgid "shared tables cannot be toasted after initdb" -msgstr "" -"no se puede crear tablas TOAST a relaciones compartidas después de initdb" +#: utils/misc/guc.c:2683 +msgid "Sets the locale for formatting numbers." +msgstr "Configuración regional para formatos de números." -#: catalog/aclchk.c:196 -msgid "grant options can only be granted to roles" -msgstr "la opción de grant sólo puede ser otorgada a roles" +#: utils/misc/guc.c:2693 +msgid "Sets the locale for formatting date and time values." +msgstr "Configuración regional para formatos de horas y fechas." -#: catalog/aclchk.c:312 -#, c-format -msgid "no privileges were granted for column \"%s\" of relation \"%s\"" -msgstr "no se otorgaron privilegios para la columna «%s» de la relación «%s»" +#: utils/misc/guc.c:2703 +msgid "Lists shared libraries to preload into server." +msgstr "Bibliotecas compartidas a precargar en el servidor." -#: catalog/aclchk.c:317 -#, c-format -msgid "no privileges were granted for \"%s\"" -msgstr "no se otorgaron privilegios para «%s»" +#: utils/misc/guc.c:2714 +msgid "Lists shared libraries to preload into each backend." +msgstr "Bibliotecas compartidas a precargar en cada proceso." -#: catalog/aclchk.c:325 -#, c-format -msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" -msgstr "" -"no todos los privilegios fueron otorgados para la columna «%s» de la " -"relación «%s»" +#: utils/misc/guc.c:2725 +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." -#: catalog/aclchk.c:330 -#, c-format -msgid "not all privileges were granted for \"%s\"" -msgstr "no todos los privilegios fueron otorgados para «%s»" +#: utils/misc/guc.c:2737 +msgid "Sets the server (database) character set encoding." +msgstr "Codificación de caracteres del servidor (bases de datos)." -#: catalog/aclchk.c:341 -#, c-format -msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" -msgstr "" -"ningún privilegio pudo ser revocado para la columna «%s» de la relación «%s»" +#: utils/misc/guc.c:2749 +msgid "Shows the server version." +msgstr "Versión del servidor." -#: catalog/aclchk.c:346 -#, c-format -msgid "no privileges could be revoked for \"%s\"" -msgstr "ningún privilegio pudo ser revocado para «%s»" +#: utils/misc/guc.c:2761 +msgid "Sets the current role." +msgstr "Define el rol actual." -#: catalog/aclchk.c:354 -#, c-format +#: utils/misc/guc.c:2773 +msgid "Sets the session user name." +msgstr "Define el nombre del usuario de sesión." + +#: utils/misc/guc.c:2784 +msgid "Sets the destination for server log output." +msgstr "Define el destino de la salida del registro del servidor." + +#: utils/misc/guc.c:2785 msgid "" -"not all privileges could be revoked for column \"%s\" of relation \"%s\"" +"Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and " +"\"eventlog\", depending on the platform." msgstr "" -"no todos los privilegios pudieron ser revocados para la columna «%s» de la " -"relación «%s»" - -#: catalog/aclchk.c:359 -#, c-format -msgid "not all privileges could be revoked for \"%s\"" -msgstr "no todos los privilegios pudieron ser revocados para «%s»" +"Valores aceptables son combinaciones de «stderr», «syslog», «csvlog» y " +"«eventlog», dependiendo de la plataforma." -#: catalog/aclchk.c:438 catalog/aclchk.c:927 -#, c-format -msgid "invalid privilege type %s for relation" -msgstr "el tipo de privilegio %s no es válido para una relación" +#: utils/misc/guc.c:2796 +msgid "Sets the destination directory for log files." +msgstr "" +"Define el directorio de destino de los archivos del registro del servidor." -#: catalog/aclchk.c:442 catalog/aclchk.c:931 -#, c-format -msgid "invalid privilege type %s for sequence" -msgstr "el tipo de privilegio %s no es válido para una secuencia" +#: utils/misc/guc.c:2797 +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." -#: catalog/aclchk.c:446 -#, c-format -msgid "invalid privilege type %s for database" -msgstr "el tipo de privilegio %s no es válido para una base de datos" +#: utils/misc/guc.c:2807 +msgid "Sets the file name pattern for log files." +msgstr "" +"Define el patrón para los nombres de archivo del registro del servidor." -#: catalog/aclchk.c:450 catalog/aclchk.c:935 -#, c-format -msgid "invalid privilege type %s for function" -msgstr "el tipo de privilegio %s no es válido para una función" +#: utils/misc/guc.c:2818 +msgid "Sets the program name used to identify PostgreSQL messages in syslog." +msgstr "Nombre de programa para identificar PostgreSQL en mensajes de syslog." -#: catalog/aclchk.c:454 -#, c-format -msgid "invalid privilege type %s for language" -msgstr "el tipo de privilegio %s no es válido para un lenguaje" +#: utils/misc/guc.c:2829 +msgid "Sets the time zone for displaying and interpreting time stamps." +msgstr "Huso horario para desplegar e interpretar valores de tiempo." -#: catalog/aclchk.c:458 -#, c-format -msgid "invalid privilege type %s for large object" -msgstr "el tipo de privilegio %s no es válido para un objeto grande" +#: utils/misc/guc.c:2839 +msgid "Selects a file of time zone abbreviations." +msgstr "Selecciona un archivo de abreviaciones de huso horario." -#: catalog/aclchk.c:462 -#, c-format -msgid "invalid privilege type %s for schema" -msgstr "el tipo de privilegio %s no es válido para un esquema" +#: utils/misc/guc.c:2849 +msgid "Sets the current transaction's isolation level." +msgstr "Define el nivel de aislación de la transacción en curso." -#: catalog/aclchk.c:466 -#, c-format -msgid "invalid privilege type %s for tablespace" -msgstr "el tipo de privilegio %s no es válido para tablespaces" +#: utils/misc/guc.c:2860 +msgid "Sets the owning group of the Unix-domain socket." +msgstr "Grupo dueño del socket de dominio Unix." -#: catalog/aclchk.c:470 -#, c-format -msgid "invalid privilege type %s for foreign-data wrapper" +#: utils/misc/guc.c:2861 +msgid "" +"The owning user of the socket is always the user that starts the server." msgstr "" -"el tipo de privilegio %s no es válido para un conector de datos externos" +"El usuario dueño del socket siempre es el usuario que inicia el servidor." -#: catalog/aclchk.c:474 -#, c-format -msgid "invalid privilege type %s for foreign server" -msgstr "el tipo de privilegio %s no es válido para un servidor foráneo" +#: utils/misc/guc.c:2871 +msgid "Sets the directory where the Unix-domain socket will be created." +msgstr "Directorio donde ser creará el socket de dominio Unix." -#: catalog/aclchk.c:513 -msgid "column privileges are only valid for relations" -msgstr "los privilegios de columna son sólo válidos para relaciones" +#: utils/misc/guc.c:2882 +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." -#: catalog/aclchk.c:614 commands/comment.c:698 commands/dbcommands.c:760 -#: commands/dbcommands.c:905 commands/dbcommands.c:1004 -#: commands/dbcommands.c:1181 commands/dbcommands.c:1366 -#: commands/dbcommands.c:1410 commands/dbcommands.c:1456 utils/adt/acl.c:2975 -#: utils/adt/dbsize.c:149 utils/init/postinit.c:708 utils/init/postinit.c:776 -#: utils/init/postinit.c:793 -#, c-format -msgid "database \"%s\" does not exist" -msgstr "no existe la base de datos «%s»" +#: utils/misc/guc.c:2893 +msgid "Sets the list of known custom variable classes." +msgstr "Define la lista de clases adicionales de variables conocidas." -#: catalog/aclchk.c:640 commands/comment.c:1220 commands/functioncmds.c:836 -#: commands/functioncmds.c:1990 commands/proclang.c:531 -#: commands/proclang.c:600 commands/proclang.c:640 utils/adt/acl.c:3562 -#, c-format -msgid "language \"%s\" does not exist" -msgstr "no existe el lenguaje «%s»" +#: utils/misc/guc.c:2904 +msgid "Sets the server's data directory." +msgstr "Define la ubicación del directorio de datos." -#: catalog/aclchk.c:656 catalog/aclchk.c:3690 catalog/aclchk.c:4381 -#: catalog/pg_largeobject.c:116 catalog/pg_largeobject.c:176 -#: commands/comment.c:1415 storage/large_object/inv_api.c:272 -#, c-format -msgid "large object %u does not exist" -msgstr "no existe el objeto grande %u" +#: utils/misc/guc.c:2915 +msgid "Sets the server's main configuration file." +msgstr "" +"Define la ubicación del archivo principal de configuración del servidor." -#: catalog/aclchk.c:673 catalog/aclchk.c:1051 catalog/namespace.c:340 -#: catalog/namespace.c:2307 catalog/namespace.c:2346 catalog/namespace.c:2393 -#: catalog/namespace.c:3320 commands/comment.c:806 commands/schemacmds.c:190 -#: commands/schemacmds.c:264 commands/schemacmds.c:335 utils/adt/acl.c:3760 -#, c-format -msgid "schema \"%s\" does not exist" -msgstr "no existe el esquema «%s»" +#: utils/misc/guc.c:2926 +msgid "Sets the server's \"hba\" configuration file." +msgstr "Define la ubicación del archivo de configuración «hba» del servidor." -#: catalog/aclchk.c:702 commands/comment.c:737 commands/dbcommands.c:436 -#: commands/dbcommands.c:1037 commands/indexcmds.c:225 -#: commands/tablecmds.c:430 commands/tablecmds.c:6804 -#: commands/tablespace.c:410 commands/tablespace.c:808 -#: commands/tablespace.c:875 commands/tablespace.c:980 -#: commands/tablespace.c:1036 commands/tablespace.c:1160 -#: executor/execMain.c:2125 utils/adt/acl.c:4134 utils/adt/dbsize.c:248 -#, c-format -msgid "tablespace \"%s\" does not exist" -msgstr "no existe el tablespace «%s»" +#: utils/misc/guc.c:2937 +msgid "Sets the server's \"ident\" configuration file." +msgstr "Define la ubicación del archivo de configuración «ident» del servidor." -#: catalog/aclchk.c:869 catalog/aclchk.c:877 commands/copy.c:751 -#: commands/copy.c:769 commands/copy.c:777 commands/copy.c:785 -#: commands/copy.c:793 commands/copy.c:801 commands/copy.c:809 -#: commands/copy.c:817 commands/copy.c:833 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/functioncmds.c:485 commands/functioncmds.c:575 -#: commands/functioncmds.c:583 commands/functioncmds.c:591 -#: commands/functioncmds.c:1953 commands/functioncmds.c:1961 -#: commands/sequence.c:1025 commands/sequence.c:1033 commands/sequence.c:1041 -#: commands/sequence.c:1049 commands/sequence.c:1057 commands/sequence.c:1065 -#: commands/sequence.c:1073 commands/sequence.c:1081 commands/typecmds.c:274 -#: commands/user.c:140 commands/user.c:157 commands/user.c:165 -#: commands/user.c:173 commands/user.c:181 commands/user.c:189 -#: commands/user.c:197 commands/user.c:205 commands/user.c:213 -#: commands/user.c:221 commands/user.c:229 commands/user.c:467 -#: commands/user.c:479 commands/user.c:487 commands/user.c:495 -#: commands/user.c:503 commands/user.c:511 commands/user.c:519 -#: commands/user.c:528 commands/user.c:536 -msgid "conflicting or redundant options" -msgstr "opciones contradictorias o redundantes" +#: utils/misc/guc.c:2948 +msgid "Writes the postmaster PID to the specified file." +msgstr "Registra el PID de postmaster en el archivo especificado." -#: catalog/aclchk.c:968 -msgid "default privileges cannot be set for columns" -msgstr "los privilegios por omisión no pueden definirse para columnas" +#: utils/misc/guc.c:2959 +msgid "Writes temporary statistics files to the specified directory." +msgstr "" +"Escribe los archivos temporales de estadísticas al directorio especificado." -#: catalog/aclchk.c:1470 commands/analyze.c:341 commands/comment.c:651 -#: commands/copy.c:3441 commands/sequence.c:1309 commands/tablecmds.c:3949 -#: commands/tablecmds.c:4039 commands/tablecmds.c:4086 -#: commands/tablecmds.c:4182 commands/tablecmds.c:4226 -#: commands/tablecmds.c:4305 commands/tablecmds.c:4386 -#: commands/tablecmds.c:5837 commands/tablecmds.c:5975 commands/trigger.c:527 -#: parser/analyze.c:1823 parser/parse_relation.c:1996 -#: parser/parse_relation.c:2051 parser/parse_target.c:808 -#: parser/parse_type.c:117 utils/adt/acl.c:2770 utils/adt/ruleutils.c:1524 -#, c-format -msgid "column \"%s\" of relation \"%s\" does not exist" -msgstr "no existe la columna «%s» en la relación «%s»" +#: utils/misc/guc.c:2970 +msgid "List of names of potential synchronous standbys." +msgstr "Lista de nombres de potenciales standbys sincrónicos." -#: catalog/aclchk.c:1735 commands/comment.c:566 commands/sequence.c:953 -#: commands/tablecmds.c:200 commands/tablecmds.c:2146 -#: commands/tablecmds.c:2365 commands/tablecmds.c:7810 utils/adt/acl.c:2006 -#: utils/adt/acl.c:2036 utils/adt/acl.c:2068 utils/adt/acl.c:2100 -#: utils/adt/acl.c:2128 utils/adt/acl.c:2158 -#, c-format -msgid "\"%s\" is not a sequence" -msgstr "«%s» no es una secuencia" +#: utils/misc/guc.c:2981 +msgid "Sets default text search configuration." +msgstr "Define la configuración de búsqueda en texto por omisión." -#: catalog/aclchk.c:1773 -#, c-format -msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" -msgstr "la secuencia «%s» sólo soporta los privilegios USAGE, SELECT, y UPDATE" +#: utils/misc/guc.c:2991 +msgid "Sets the list of allowed SSL ciphers." +msgstr "Define la lista de cifrados SSL permitidos." -#: catalog/aclchk.c:1790 -msgid "invalid privilege type USAGE for table" -msgstr "el tipo de privilegio USAGE no es válido para tablas" +#: utils/misc/guc.c:3006 +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." -#: catalog/aclchk.c:1940 -#, c-format -msgid "invalid privilege type %s for column" -msgstr "el tipo de privilegio %s no es válido para una columna" +#: utils/misc/guc.c:3026 +msgid "Sets whether \"\\'\" is allowed in string literals." +msgstr "Define si «\\'» está permitido en literales de cadena." -#: catalog/aclchk.c:1953 -#, c-format -msgid "sequence \"%s\" only supports SELECT column privileges" -msgstr "la secuencia «%s» sólo soporta el privilegio SELECT" +#: utils/misc/guc.c:3036 +msgid "Sets the output format for bytea." +msgstr "Formato de salida para bytea." -#: catalog/aclchk.c:2537 -#, c-format -msgid "language \"%s\" is not trusted" -msgstr "el lenguaje «%s» no es confiable (trusted)" +#: utils/misc/guc.c:3046 +msgid "Sets the message levels that are sent to the client." +msgstr "Nivel de mensajes enviados al cliente." -#: catalog/aclchk.c:2539 -msgid "Only superusers can use untrusted languages." -msgstr "Sólo los superusuarios pueden usar lenguajes no confiables." +#: utils/misc/guc.c:3047 utils/misc/guc.c:3100 utils/misc/guc.c:3111 +#: utils/misc/guc.c:3167 +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." -#: catalog/aclchk.c:3046 -#, c-format -msgid "unrecognized privilege type \"%s\"" -msgstr "tipo de privilegio no reconocido: «%s»" +#: utils/misc/guc.c:3057 +msgid "Enables the planner to use constraints to optimize queries." +msgstr "Permitir el uso de restricciones para limitar los accesos a tablas." -#: catalog/aclchk.c:3095 -#, c-format -msgid "permission denied for column %s" -msgstr "permiso denegado a la columna %s" +#: utils/misc/guc.c:3058 +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." -#: catalog/aclchk.c:3097 -#, c-format -msgid "permission denied for relation %s" -msgstr "permiso denegado a la relación %s" +#: utils/misc/guc.c:3068 +msgid "Sets the transaction isolation level of each new transaction." +msgstr "Nivel de aislación (isolation level) de transacciones nuevas." -#: catalog/aclchk.c:3099 commands/sequence.c:469 commands/sequence.c:668 -#: commands/sequence.c:710 commands/sequence.c:746 -#, c-format -msgid "permission denied for sequence %s" -msgstr "permiso denegado a la secuencia %s" +#: utils/misc/guc.c:3078 +msgid "Sets the display format for interval values." +msgstr "Formato de salida para valores de intervalos." -#: catalog/aclchk.c:3101 -#, c-format -msgid "permission denied for database %s" -msgstr "permiso denegado a la base de datos %s" +#: utils/misc/guc.c:3089 +msgid "Sets the verbosity of logged messages." +msgstr "Verbosidad de los mensajes registrados." -#: catalog/aclchk.c:3103 -#, c-format -msgid "permission denied for function %s" -msgstr "permiso denegado a la función %s" +#: utils/misc/guc.c:3099 +msgid "Sets the message levels that are logged." +msgstr "Nivel de mensajes registrados." -#: catalog/aclchk.c:3105 -#, c-format -msgid "permission denied for operator %s" -msgstr "permiso denegado al operador %s" +#: utils/misc/guc.c:3110 +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." -#: catalog/aclchk.c:3107 -#, c-format -msgid "permission denied for type %s" -msgstr "permiso denegado al tipo %s" +#: utils/misc/guc.c:3121 +msgid "Sets the type of statements logged." +msgstr "Define el tipo de sentencias que se registran." -#: catalog/aclchk.c:3109 -#, c-format -msgid "permission denied for language %s" -msgstr "permiso denegado al lenguaje %s" +#: utils/misc/guc.c:3131 +msgid "Sets the syslog \"facility\" to be used when syslog enabled." +msgstr "«Facility» de syslog que se usará cuando syslog esté habilitado." -#: catalog/aclchk.c:3111 -#, c-format -msgid "permission denied for large object %s" -msgstr "permiso denegado al objeto grande %s" +#: utils/misc/guc.c:3146 +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." -#: catalog/aclchk.c:3113 -#, c-format -msgid "permission denied for schema %s" -msgstr "permiso denegado al esquema %s" +#: utils/misc/guc.c:3156 +msgid "Sets the current transaction's synchronization level." +msgstr "Define el nivel de sincronización de la transacción en curso." -#: catalog/aclchk.c:3115 -#, c-format -msgid "permission denied for operator class %s" -msgstr "permiso denegado a la clase de operadores %s" +#: utils/misc/guc.c:3166 +msgid "Enables logging of recovery-related debugging information." +msgstr "Recolectar información de depuración relacionada con la recuperación." -#: catalog/aclchk.c:3117 -#, c-format -msgid "permission denied for operator family %s" -msgstr "permiso denegado a la familia de operadores %s" +#: utils/misc/guc.c:3182 +msgid "Collects function-level statistics on database activity." +msgstr "Recolectar estadísticas de actividad de funciones en la base de datos." -#: catalog/aclchk.c:3119 -#, c-format -msgid "permission denied for conversion %s" -msgstr "permiso denegado a la conversión %s" +#: utils/misc/guc.c:3192 +msgid "Set the level of information written to the WAL." +msgstr "Nivel de información escrita a WAL." -#: catalog/aclchk.c:3121 -#, c-format -msgid "permission denied for tablespace %s" -msgstr "permiso denegado al tablespace %s" +#: utils/misc/guc.c:3202 +msgid "Selects the method used for forcing WAL updates to disk." +msgstr "Selecciona el método usado para forzar escritura de WAL a disco." -#: catalog/aclchk.c:3123 -#, c-format -msgid "permission denied for text search dictionary %s" -msgstr "permiso denegado a la configuración de búsqueda en texto %s" +#: utils/misc/guc.c:3212 +msgid "Sets how binary values are to be encoded in XML." +msgstr "Define cómo se codificarán los valores binarios en XML." -#: catalog/aclchk.c:3125 -#, c-format -msgid "permission denied for text search configuration %s" -msgstr "permiso denegado a la configuración de búsqueda en texto %s" +#: utils/misc/guc.c:3222 +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." -#: catalog/aclchk.c:3127 +#: utils/misc/guc.c:4064 #, c-format -msgid "permission denied for foreign-data wrapper %s" -msgstr "permiso denegado al conector de datos externos %s" +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 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" -#: catalog/aclchk.c:3129 +#: utils/misc/guc.c:4083 #, c-format -msgid "permission denied for foreign server %s" -msgstr "permiso denegado al servidor foráneo %s" +msgid "%s cannot access the server configuration file \"%s\": %s\n" +msgstr "%s no pudo examinar el archivo de configuración «%s»: %s\n" -#: catalog/aclchk.c:3135 catalog/aclchk.c:3137 +#: utils/misc/guc.c:4103 #, c-format -msgid "must be owner of relation %s" -msgstr "debe ser dueño de la relación %s" +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 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" -#: catalog/aclchk.c:3139 +#: utils/misc/guc.c:4134 #, c-format -msgid "must be owner of sequence %s" -msgstr "debe ser dueño de la secuencia %s" +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 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" -#: catalog/aclchk.c:3141 +#: utils/misc/guc.c:4157 #, c-format -msgid "must be owner of database %s" -msgstr "debe ser dueño de la base de datos %s" +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 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" -#: catalog/aclchk.c:3143 -#, c-format -msgid "must be owner of function %s" -msgstr "debe ser dueño de la función %s" +#: utils/misc/guc.c:4739 utils/misc/guc.c:4903 +msgid "Value exceeds integer range." +msgstr "El valor excede el rango para enteros." -#: catalog/aclchk.c:3145 -#, c-format -msgid "must be owner of operator %s" -msgstr "debe ser dueño del operador %s" +#: utils/misc/guc.c:4758 +msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"." +msgstr "Unidades válidas para este parámetro son «kB», «MB» y «GB»." -#: catalog/aclchk.c:3147 +#: utils/misc/guc.c:4817 +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:5100 utils/misc/guc.c:5869 utils/misc/guc.c:5921 +#: utils/misc/guc.c:6594 utils/misc/guc.c:6753 utils/misc/guc.c:7932 +#: guc-file.l:203 #, c-format -msgid "must be owner of type %s" -msgstr "debe ser dueño del tipo %s" +msgid "unrecognized configuration parameter \"%s\"" +msgstr "parámetro de configuración no reconocido: «%s»" -#: catalog/aclchk.c:3149 +#: utils/misc/guc.c:5133 #, c-format -msgid "must be owner of language %s" -msgstr "debe ser dueño del lenguaje %s" +msgid "parameter \"%s\" cannot be changed" +msgstr "no se puede cambiar el parámetro «%s»" -#: catalog/aclchk.c:3151 +#: utils/misc/guc.c:5162 utils/misc/guc.c:5336 utils/misc/guc.c:5433 +#: utils/misc/guc.c:5527 utils/misc/guc.c:5641 utils/misc/guc.c:5742 +#: guc-file.l:250 #, c-format -msgid "must be owner of large object %s" -msgstr "debe ser dueño del objeto grande %s" +msgid "parameter \"%s\" cannot be changed without restarting the server" +msgstr "el parámetro «%s» no se puede cambiar sin reiniciar el servidor" -#: catalog/aclchk.c:3153 +#: utils/misc/guc.c:5172 #, c-format -msgid "must be owner of schema %s" -msgstr "debe ser dueño del esquema %s" +msgid "parameter \"%s\" cannot be changed now" +msgstr "el parámetro «%s» no se puede cambiar en este momento" -#: catalog/aclchk.c:3155 +#: utils/misc/guc.c:5203 #, c-format -msgid "must be owner of operator class %s" -msgstr "debe ser dueño de la clase de operadores %s" +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" -#: catalog/aclchk.c:3157 +#: utils/misc/guc.c:5213 utils/misc/guc.c:7947 #, c-format -msgid "must be owner of operator family %s" -msgstr "debe ser dueño de la familia de operadores %s" +msgid "permission denied to set parameter \"%s\"" +msgstr "se ha denegado el permiso para cambiar la opción «%s»" -#: catalog/aclchk.c:3159 +#: utils/misc/guc.c:5251 #, c-format -msgid "must be owner of conversion %s" -msgstr "debe ser dueño de la conversión %s" +msgid "cannot set parameter \"%s\" within security-definer function" +msgstr "" +"no se puede definir el parámetro «%s» dentro una función security-definer" -#: catalog/aclchk.c:3161 +#: utils/misc/guc.c:5259 utils/init/miscinit.c:381 #, c-format -msgid "must be owner of tablespace %s" -msgstr "debe ser dueño del tablespace %s" +msgid "cannot set parameter \"%s\" within security-restricted operation" +msgstr "" +"no se puede definir el parámetro «%s» dentro de una operación restringida " +"por seguridad" -#: catalog/aclchk.c:3163 +#: utils/misc/guc.c:5309 access/transam/xlog.c:5338 access/transam/xlog.c:5429 +#: access/transam/xlog.c:5440 commands/extension.c:527 +#: commands/extension.c:535 #, c-format -msgid "must be owner of text search dictionary %s" -msgstr "debe ser dueño del diccionario de búsqueda en texto %s" +msgid "parameter \"%s\" requires a Boolean value" +msgstr "opción «%s» requiere un valor lógico (booleano)" -#: catalog/aclchk.c:3165 +#: utils/misc/guc.c:5397 utils/misc/guc.c:5711 utils/misc/guc.c:8111 +#: utils/misc/guc.c:8145 #, c-format -msgid "must be owner of text search configuration %s" -msgstr "debe ser dueño de la configuración de búsqueda en texto %s" +msgid "invalid value for parameter \"%s\": \"%s\"" +msgstr "valor no válido para el parámetro «%s»: «%s»" -#: catalog/aclchk.c:3167 +#: utils/misc/guc.c:5399 utils/misc/guc.c:5713 utils/misc/guc.c:8014 +#: utils/misc/guc.c:8048 utils/misc/guc.c:8082 utils/misc/guc.c:8116 +#: utils/misc/guc.c:8151 commands/tablecmds.c:693 commands/user.c:957 +#: storage/lmgr/proc.c:1069 storage/lmgr/deadlock.c:951 +#: catalog/objectaddress.c:315 catalog/dependency.c:937 +#: catalog/dependency.c:938 catalog/dependency.c:944 catalog/dependency.c:945 +#: catalog/dependency.c:956 catalog/dependency.c:957 port/win32/security.c:51 #, c-format -msgid "must be owner of foreign-data wrapper %s" -msgstr "debe ser dueño del conector de datos externos %s" +msgid "%s" +msgstr "%s" -#: catalog/aclchk.c:3169 +#: utils/misc/guc.c:5406 #, c-format -msgid "must be owner of foreign server %s" -msgstr "debe ser dueño del servidor foráneo %s" +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)" -#: catalog/aclchk.c:3211 +#: utils/misc/guc.c:5492 #, c-format -msgid "permission denied for column \"%s\" of relation \"%s\"" -msgstr "permiso denegado a la columna «%s» de la relación «%s»" +msgid "parameter \"%s\" requires a numeric value" +msgstr "parámetro «%s» requiere un valor numérico" -#: catalog/aclchk.c:3238 +#: utils/misc/guc.c:5500 #, c-format -msgid "role with OID %u does not exist" -msgstr "no existe el rol con OID %u" +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)" -#: catalog/aclchk.c:3331 catalog/aclchk.c:3339 +#: utils/misc/guc.c:5877 utils/misc/guc.c:5925 utils/misc/guc.c:6757 #, c-format -msgid "attribute %d of relation with OID %u does not exist" -msgstr "no existe el atributo %d de la relación con OID %u" +msgid "must be superuser to examine \"%s\"" +msgstr "debe ser superusuario para examinar «%s»" -#: catalog/aclchk.c:3412 catalog/aclchk.c:4232 +#: utils/misc/guc.c:5991 #, c-format -msgid "relation with OID %u does not exist" -msgstr "no existe la relación con OID %u" - -#: catalog/aclchk.c:3506 catalog/aclchk.c:4596 utils/adt/dbsize.c:127 -#, c-format -msgid "database with OID %u does not exist" -msgstr "no existe la base de datos con OID %u" +msgid "SET %s takes only one argument" +msgstr "SET %s lleva sólo un argumento" -#: catalog/aclchk.c:3560 catalog/aclchk.c:4310 tcop/fastpath.c:222 -#, c-format -msgid "function with OID %u does not exist" -msgstr "no existe la función con OID %u" +#: utils/misc/guc.c:6224 +msgid "SET requires parameter name" +msgstr "SET requiere el nombre de un parámetro" -#: catalog/aclchk.c:3614 catalog/aclchk.c:4336 +#: utils/misc/guc.c:6339 #, c-format -msgid "language with OID %u does not exist" -msgstr "no existe el lenguaje con OID %u" +msgid "attempt to redefine parameter \"%s\"" +msgstr "intento de cambiar la opción «%s»" -#: catalog/aclchk.c:3775 catalog/aclchk.c:4408 +#: utils/misc/guc.c:7527 utils/init/miscinit.c:1055 #, c-format -msgid "schema with OID %u does not exist" -msgstr "no existe el esquema con OID %u" +msgid "could not read from file \"%s\": %m" +msgstr "no se pudo leer el archivo «%s»: %m" -#: catalog/aclchk.c:3829 catalog/aclchk.c:4435 +#: utils/misc/guc.c:7648 #, c-format -msgid "tablespace with OID %u does not exist" -msgstr "no existe el tablespace con OID %u" +msgid "could not parse setting for parameter \"%s\"" +msgstr "no se pudo interpretar el valor de para el parámetro «%s»" -#: catalog/aclchk.c:3887 +#: utils/misc/guc.c:8009 utils/misc/guc.c:8043 #, c-format -msgid "foreign-data wrapper with OID %u does not exist" -msgstr "no existe el conector de datos externos con OID %u" +msgid "invalid value for parameter \"%s\": %d" +msgstr "valor no válido para el parámetro «%s»: %d" -#: catalog/aclchk.c:3948 catalog/aclchk.c:4569 +#: utils/misc/guc.c:8077 #, c-format -msgid "foreign server with OID %u does not exist" -msgstr "no existe el servidor foráneo con OID %u" +msgid "invalid value for parameter \"%s\": %g" +msgstr "valor no válido para el parámetro «%s»: %g" -#: catalog/aclchk.c:4258 -#, c-format -msgid "type with OID %u does not exist" -msgstr "no existe el tipo con OID %u" +#: utils/misc/guc.c:8181 commands/variable.c:59 commands/tablespace.c:1163 +#: replication/syncrep.c:661 catalog/namespace.c:3559 +msgid "List syntax is invalid." +msgstr "La sintaxis de lista no es válida." -#: catalog/aclchk.c:4284 +#: utils/misc/guc.c:8205 commands/variable.c:160 #, c-format -msgid "operator with OID %u does not exist" -msgstr "no existe el operador con OID %u" +msgid "Unrecognized key word: \"%s\"." +msgstr "Palabra clave no reconocida: «%s»." -#: catalog/aclchk.c:4461 -#, c-format -msgid "operator class with OID %u does not exist" -msgstr "no existe la clase de operadores con OID %u" +#: utils/misc/guc.c:8267 +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." -#: catalog/aclchk.c:4488 -#, c-format -msgid "operator family with OID %u does not exist" -msgstr "no existe la familia de operadores con OID %u" +#: utils/misc/guc.c:8279 +msgid "SET AUTOCOMMIT TO OFF is no longer supported" +msgstr "SET AUTOCOMMIT TO OFF ya no está soportado" -#: catalog/aclchk.c:4515 -#, 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" +#: utils/misc/guc.c:8354 +msgid "assertion checking is not supported by this build" +msgstr "" +"la revisión de aseveraciones (asserts) no está soportada en este servidor" -#: catalog/aclchk.c:4542 -#, 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" +#: utils/misc/guc.c:8367 +msgid "Bonjour is not supported by this build" +msgstr "Bonjour no está soportado en este servidor" -#: catalog/aclchk.c:4622 -#, c-format -msgid "conversion with OID %u does not exist" -msgstr "no existe la conversión con OID %u" +#: utils/misc/guc.c:8380 +msgid "SSL is not supported by this build" +msgstr "SSL no está soportado en este servidor" -#: catalog/catalog.c:75 -msgid "invalid fork name" -msgstr "nombre de «fork» no válido" +#: utils/misc/guc.c:8392 +msgid "Cannot enable parameter when \"log_statement_stats\" is true." +msgstr "" +"No se puede activar el parámetro cuando «log_statement_stats» está activo." -#: catalog/catalog.c:76 -msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"." -msgstr "Los nombres válidos son «man», «fsm» y «vm»." +#: utils/misc/guc.c:8404 +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." -#: catalog/dependency.c:578 +#: guc-file.l:274 #, c-format -msgid "cannot drop %s because %s requires it" -msgstr "no se puede eliminar %s porque %s lo requiere" +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" -#: catalog/dependency.c:581 +#: guc-file.l:333 #, c-format -msgid "You can drop %s instead." -msgstr "Puede eliminar %s en su lugar." +msgid "parameter \"%s\" changed to \"%s\"" +msgstr "el parámetro «%s» fue cambiado a «%s»" -#: catalog/dependency.c:734 catalog/pg_shdepend.c:560 +#: guc-file.l:374 #, 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" +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" -#: catalog/dependency.c:848 +#: guc-file.l:409 libpq/hba.c:1683 #, c-format -msgid "drop auto-cascades to %s" -msgstr "eliminando automáticamente %s" +msgid "could not open configuration file \"%s\": %m" +msgstr "no se pudo abrir el archivo de configuración «%s»: %m" -#: catalog/dependency.c:860 catalog/dependency.c:869 +#: guc-file.l:589 #, c-format -msgid "%s depends on %s" -msgstr "%s depende de %s" +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" -#: catalog/dependency.c:881 catalog/dependency.c:890 +#: guc-file.l:594 #, c-format -msgid "drop cascades to %s" -msgstr "eliminando además %s" +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»" -#: catalog/dependency.c:898 catalog/pg_shdepend.c:671 +#: utils/misc/tzparser.c:61 #, 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" -"y %d otro objeto (vea el registro del servidor para obtener la lista)" -msgstr[1] "" -"\n" -"y otros %d objetos (vea el registro del servidor para obtener la lista)" +"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" -#: catalog/dependency.c:910 +#: utils/misc/tzparser.c:68 #, c-format -msgid "cannot drop %s because other objects depend on it" -msgstr "no se puede eliminar %s porque otros objetos dependen de él" +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" -#: catalog/dependency.c:912 catalog/dependency.c:913 catalog/dependency.c:919 -#: catalog/dependency.c:920 catalog/dependency.c:931 catalog/dependency.c:932 -#: commands/tablecmds.c:658 commands/trigger.c:832 commands/trigger.c:848 -#: commands/trigger.c:860 commands/user.c:902 commands/user.c:903 -#: tcop/postgres.c:4298 storage/lmgr/deadlock.c:942 -#: storage/lmgr/deadlock.c:943 nodes/print.c:85 utils/adt/xml.c:1363 -#: utils/adt/xml.c:1364 utils/adt/xml.c:1370 utils/adt/xml.c:1441 -#: utils/misc/guc.c:4963 utils/misc/guc.c:5231 utils/fmgr/dfmgr.c:381 +#: utils/misc/tzparser.c:80 #, c-format -msgid "%s" -msgstr "%s" - -#: catalog/dependency.c:914 catalog/dependency.c:921 -msgid "Use DROP ... CASCADE to drop the dependent objects too." -msgstr "Use DROP ... CASCADE para eliminar además los objetos dependientes." - -#: catalog/dependency.c:918 -msgid "cannot drop desired object(s) because other objects depend on them" +msgid "time zone offset %d is out of range in time zone file \"%s\", line %d" msgstr "" -"no se puede eliminar el o los objetos deseados porque otros objetos dependen " -"de ellos" +"desplazamiento de huso horario %d está fuera de rango en el archivo de huso " +"horario «%s», línea %d" -#. translator: %d always has a value larger than 1 -#: catalog/dependency.c:927 +#: utils/misc/tzparser.c:115 #, c-format -msgid "drop cascades to %d other object" -msgid_plural "drop cascades to %d other objects" -msgstr[0] "eliminando además %d objeto más" -msgstr[1] "eliminando además %d objetos más" +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" -#: catalog/dependency.c:2110 +#: utils/misc/tzparser.c:124 #, c-format -msgid " column %s" -msgstr " columna %s" +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" -#: catalog/dependency.c:2116 +#: utils/misc/tzparser.c:131 #, c-format -msgid "function %s" -msgstr "función %s" +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" -#: catalog/dependency.c:2121 +#: utils/misc/tzparser.c:154 #, c-format -msgid "type %s" -msgstr "tipo %s" +msgid "invalid syntax in time zone file \"%s\", line %d" +msgstr "sintaxis no válida en archivo de huso horario «%s», línea %d" -#: catalog/dependency.c:2151 +#: utils/misc/tzparser.c:218 #, c-format -msgid "cast from %s to %s" -msgstr "conversión de %s a %s" +msgid "time zone abbreviation \"%s\" is multiply defined" +msgstr "abreviación de huso horario «%s» está definida múltiples veces" -#: catalog/dependency.c:2178 +#: utils/misc/tzparser.c:220 #, c-format -msgid "constraint %s on %s" -msgstr "restricción «%s» en %s" +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." -#: catalog/dependency.c:2184 +#: utils/misc/tzparser.c:285 #, c-format -msgid "constraint %s" -msgstr "restricción %s" +msgid "invalid time zone file name \"%s\"" +msgstr "nombre de huso horario «%s» no válido" -#: catalog/dependency.c:2201 +#: utils/misc/tzparser.c:298 #, c-format -msgid "conversion %s" -msgstr "conversión %s" +msgid "time zone file recursion limit exceeded in file \"%s\"" +msgstr "límite de recursión excedido en el archivo «%s»" -#: catalog/dependency.c:2238 +#: utils/misc/tzparser.c:337 utils/misc/tzparser.c:350 #, c-format -msgid "default for %s" -msgstr "valor por omisión para %s" +msgid "could not read time zone file \"%s\": %m" +msgstr "no se pudo leer archivo de huso horario «%s»: %m" -#: catalog/dependency.c:2255 +#: utils/misc/tzparser.c:360 #, c-format -msgid "language %s" -msgstr "lenguaje %s" +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" -#: catalog/dependency.c:2261 +#: utils/misc/tzparser.c:383 #, c-format -msgid "large object %u" -msgstr "objeto grande %u" +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" -#: catalog/dependency.c:2266 +#: utils/init/miscinit.c:115 #, c-format -msgid "operator %s" -msgstr "operador %s" +msgid "could not change directory to \"%s\": %m" +msgstr "no se pudo cambiar al directorio «%s»: %m" -#: catalog/dependency.c:2298 +#: utils/init/miscinit.c:432 utils/adt/acl.c:4822 commands/variable.c:891 +#: commands/variable.c:963 commands/user.c:623 commands/user.c:825 +#: commands/user.c:905 commands/user.c:1056 #, c-format -msgid "operator class %s for access method %s" -msgstr "clase de operadores «%s» para el método de acceso «%s»" +msgid "role \"%s\" does not exist" +msgstr "no existe el rol «%s»" -#: catalog/dependency.c:2348 +#: utils/init/miscinit.c:460 #, c-format -msgid "operator %d %s of %s" -msgstr "operador %d %s de %s" +msgid "role \"%s\" is not permitted to log in" +msgstr "al rol «%s» no se le permite conectarse" -#: catalog/dependency.c:2395 +#: utils/init/miscinit.c:478 #, c-format -msgid "function %d %s of %s" -msgstr "función %d %s de %s" +msgid "too many connections for role \"%s\"" +msgstr "demasiadas conexiones para el rol «%s»" -#: catalog/dependency.c:2432 -#, c-format -msgid "rule %s on " -msgstr "regla «%s» en " +#: utils/init/miscinit.c:538 +msgid "permission denied to set session authorization" +msgstr "se ha denegado el permiso para cambiar el usuario actual" -#: catalog/dependency.c:2467 +#: utils/init/miscinit.c:618 #, c-format -msgid "trigger %s on " -msgstr "disparador %s en " +msgid "invalid role OID: %u" +msgstr "el OID de rol no es válido: %u" -#: catalog/dependency.c:2484 +#: utils/init/miscinit.c:750 #, c-format -msgid "schema %s" -msgstr "esquema %s" +msgid "could not create lock file \"%s\": %m" +msgstr "no se pudo crear el archivo de bloqueo «%s»: %m" -#: catalog/dependency.c:2497 +#: utils/init/miscinit.c:764 #, c-format -msgid "text search parser %s" -msgstr "analizador de búsqueda en texto %s" +msgid "could not open lock file \"%s\": %m" +msgstr "no se pudo abrir el archivo de bloqueo «%s»: %m" -#: catalog/dependency.c:2512 +#: utils/init/miscinit.c:770 #, c-format -msgid "text search dictionary %s" -msgstr "diccionario de búsqueda en texto %s" +msgid "could not read lock file \"%s\": %m" +msgstr "no se pudo leer el archivo de bloqueo «%s»: %m" -#: catalog/dependency.c:2527 +#: utils/init/miscinit.c:818 #, c-format -msgid "text search template %s" -msgstr "plantilla de búsqueda en texto %s" +msgid "lock file \"%s\" already exists" +msgstr "el archivo de bloqueo «%s» ya existe" -#: catalog/dependency.c:2542 +#: utils/init/miscinit.c:822 #, c-format -msgid "text search configuration %s" -msgstr "configuración de búsqueda en texto %s" +msgid "Is another postgres (PID %d) running in data directory \"%s\"?" +msgstr "¿Hay otro postgres (PID %d) corriendo en el directorio de datos «%s»?" -#: catalog/dependency.c:2550 +#: utils/init/miscinit.c:824 #, c-format -msgid "role %s" -msgstr "rol %s" +msgid "Is another postmaster (PID %d) running in data directory \"%s\"?" +msgstr "" +"¿Hay otro postmaster (PID %d) corriendo en el directorio de datos «%s»?" -#: catalog/dependency.c:2563 +#: utils/init/miscinit.c:827 #, c-format -msgid "database %s" -msgstr "base de datos %s" +msgid "Is another postgres (PID %d) using socket file \"%s\"?" +msgstr "¿Hay otro postgres (PID %d) usando el socket «%s»?" -#: catalog/dependency.c:2575 +#: utils/init/miscinit.c:829 #, c-format -msgid "tablespace %s" -msgstr "tablespace %s" +msgid "Is another postmaster (PID %d) using socket file \"%s\"?" +msgstr "¿Hay otro postmaster (PID %d) usando el socket «%s»?" -#: catalog/dependency.c:2584 +#: utils/init/miscinit.c:865 #, c-format -msgid "foreign-data wrapper %s" -msgstr "conector de datos externos %s" +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" -#: catalog/dependency.c:2593 +#: utils/init/miscinit.c:868 #, c-format -msgid "server %s" -msgstr "servidor %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 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»." -#: catalog/dependency.c:2618 +#: utils/init/miscinit.c:884 #, c-format -msgid "user mapping for %s" -msgstr "mapeo para el usuario %s" +msgid "could not remove old lock file \"%s\": %m" +msgstr "no se pudo eliminar el archivo de bloqueo antiguo «%s»: %m" -#: catalog/dependency.c:2652 -#, c-format -msgid "default privileges on new relations belonging to role %s" -msgstr "privilegios por omisión en nuevas relaciones pertenecientes al rol %s" +#: 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 "" +"El archivo parece accidentalmente abandonado, pero no pudo ser eliminado. " +"Por favor elimine el archivo manualmente e intente nuevamente." -#: catalog/dependency.c:2657 +#: utils/init/miscinit.c:927 utils/init/miscinit.c:938 +#: utils/init/miscinit.c:948 #, c-format -msgid "default privileges on new sequences belonging to role %s" -msgstr "privilegios por omisión en nuevas secuencias pertenecientes al rol %s" +msgid "could not write lock file \"%s\": %m" +msgstr "no se pudo escribir el archivo de bloqueo «%s»: %m" -#: catalog/dependency.c:2662 +#: utils/init/miscinit.c:1046 utils/init/miscinit.c:1161 +#: utils/error/elog.c:1515 access/transam/xlog.c:2515 +#: access/transam/xlog.c:4232 access/transam/xlog.c:4326 +#: access/transam/xlog.c:4482 replication/basebackup.c:849 +#: storage/file/copydir.c:165 storage/file/copydir.c:255 storage/smgr/md.c:553 +#: storage/smgr/md.c:810 #, c-format -msgid "default privileges on new functions belonging to role %s" -msgstr "privilegios por omisión en nuevas funciones pertenecientes al rol %s" +msgid "could not open file \"%s\": %m" +msgstr "no se pudo abrir el archivo «%s»: %m" -#: catalog/dependency.c:2668 +#: utils/init/miscinit.c:1155 utils/init/miscinit.c:1168 #, c-format -msgid "default privileges belonging to role %s" -msgstr "privilegios por omisión pertenecientes al rol %s" +msgid "\"%s\" is not a valid data directory" +msgstr "«%s» no es un directorio de datos válido" -#: catalog/dependency.c:2676 +#: utils/init/miscinit.c:1157 #, c-format -msgid " in schema %s" -msgstr " en esquema %s" +msgid "File \"%s\" is missing." +msgstr "Falta el archivo «%s»." -#: catalog/dependency.c:2724 +#: utils/init/miscinit.c:1170 #, c-format -msgid "table %s" -msgstr "tabla %s" +msgid "File \"%s\" does not contain valid data." +msgstr "El archivo «%s» no contiene datos válidos." -#: catalog/dependency.c:2728 +#: utils/init/miscinit.c:1172 +msgid "You might need to initdb." +msgstr "Puede ser necesario ejecutar initdb." + +#: utils/init/miscinit.c:1179 access/transam/xlog.c:4754 +#: access/transam/xlog.c:4763 access/transam/xlog.c:4787 +#: access/transam/xlog.c:4794 access/transam/xlog.c:4801 +#: access/transam/xlog.c:4806 access/transam/xlog.c:4813 +#: access/transam/xlog.c:4820 access/transam/xlog.c:4827 +#: access/transam/xlog.c:4834 access/transam/xlog.c:4841 +#: access/transam/xlog.c:4848 access/transam/xlog.c:4857 +#: access/transam/xlog.c:4864 access/transam/xlog.c:4873 +#: access/transam/xlog.c:4880 access/transam/xlog.c:4889 +#: access/transam/xlog.c:4896 +msgid "database files are incompatible with server" +msgstr "los archivos de base de datos son incompatibles con el servidor" + +#: utils/init/miscinit.c:1180 #, c-format -msgid "index %s" -msgstr "índice %s" +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." -#: catalog/dependency.c:2732 +#: utils/init/miscinit.c:1228 #, c-format -msgid "sequence %s" -msgstr "secuencia %s" +msgid "invalid list syntax in parameter \"%s\"" +msgstr "la sintaxis de lista no es válida para el parámetro «%s»" -#: catalog/dependency.c:2736 +#: utils/init/miscinit.c:1265 #, c-format -msgid "uncataloged table %s" -msgstr "tabla sin catalogar %s" +msgid "loaded library \"%s\"" +msgstr "biblioteca «%s» cargada" -#: catalog/dependency.c:2740 +#: utils/init/postinit.c:225 #, c-format -msgid "toast table %s" -msgstr "tabla toast %s" +msgid "replication connection authorized: user=%s" +msgstr "conexión de replicación autorizada: usuario=%s" -#: catalog/dependency.c:2744 +#: utils/init/postinit.c:229 #, c-format -msgid "view %s" -msgstr "vista %s" +msgid "connection authorized: user=%s database=%s" +msgstr "conexión autorizada: usuario=%s database=%s" -#: catalog/dependency.c:2748 +#: utils/init/postinit.c:260 #, c-format -msgid "composite type %s" -msgstr "tipo compuesto %s" +msgid "database \"%s\" has disappeared from pg_database" +msgstr "la base de datos «%s» ha desaparecido de pg_database" -#: catalog/dependency.c:2753 +#: utils/init/postinit.c:262 #, c-format -msgid "relation %s" -msgstr "relación %s" +msgid "Database OID %u now seems to belong to \"%s\"." +msgstr "Base de datos con OID %u ahora parece pertenecer a «%s»." -#: catalog/dependency.c:2790 +#: utils/init/postinit.c:282 #, c-format -msgid "operator family %s for access method %s" -msgstr "familia de operadores %s para el método de acceso %s" +msgid "database \"%s\" is not currently accepting connections" +msgstr "la base de datos «%s» no acepta conexiones" -#: catalog/heap.c:257 +#: utils/init/postinit.c:295 #, c-format -msgid "permission denied to create \"%s.%s\"" -msgstr "se ha denegado el permiso para crear «%s.%s»" +msgid "permission denied for database \"%s\"" +msgstr "permiso denegado a la base de datos «%s»" -#: catalog/heap.c:259 -msgid "System catalog modifications are currently disallowed." -msgstr "" -"Las modificaciones al catálogo del sistema están actualmente deshabilitadas." +#: utils/init/postinit.c:296 +msgid "User does not have CONNECT privilege." +msgstr "Usuario no tiene privilegios de conexión." -#: catalog/heap.c:380 commands/tablecmds.c:1235 commands/tablecmds.c:1619 -#: commands/tablecmds.c:3722 +#: utils/init/postinit.c:313 #, c-format -msgid "tables can have at most %d columns" -msgstr "las tablas pueden tener a lo más %d columnas" +msgid "too many connections for database \"%s\"" +msgstr "demasiadas conexiones para la base de datos «%s»" -#: catalog/heap.c:397 +#: utils/init/postinit.c:335 utils/init/postinit.c:342 +msgid "database locale is incompatible with operating system" +msgstr "la configuración regional es incompatible con el sistema operativo" + +#: utils/init/postinit.c:336 #, c-format -msgid "column name \"%s\" conflicts with a system column name" +msgid "" +"The database was initialized with LC_COLLATE \"%s\", which is not " +"recognized by setlocale()." msgstr "" -"el nombre de columna «%s» colisiona con nombre de una columna de sistema" +"La base de datos fue inicializada con LC_COLLATE «%s», el cual no es " +"reconocido por setlocale()." -#: catalog/heap.c:413 -#, c-format -msgid "column name \"%s\" specified more than once" -msgstr "el nombre de columna «%s» fue especificado más de una vez" +#: utils/init/postinit.c:338 utils/init/postinit.c:345 +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." -#: catalog/heap.c:451 +#: utils/init/postinit.c:343 #, c-format -msgid "column \"%s\" has type \"unknown\"" -msgstr "la columna «%s» tiene tipo «unknown» (desconocido)" - -#: catalog/heap.c:452 -msgid "Proceeding with relation creation anyway." -msgstr "Continuando con la creación de la relación de todas maneras." +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()." -#: catalog/heap.c:465 -#, c-format -msgid "column \"%s\" has pseudo-type %s" -msgstr "la columna «%s» tiene pseudotipo %s" +#: utils/init/postinit.c:608 +msgid "no roles are defined in this database system" +msgstr "no hay roles definidos en esta base de datos" -#: catalog/heap.c:927 catalog/index.c:620 commands/tablecmds.c:2211 +#: utils/init/postinit.c:609 #, c-format -msgid "relation \"%s\" already exists" -msgstr "la relación «%s» ya existe" +msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;." +msgstr "Debería ejecutar imediatamente CREATE USER \"%s\" SUPERUSER;." -#: catalog/heap.c:943 catalog/pg_type.c:385 catalog/pg_type.c:665 -#: commands/typecmds.c:218 commands/typecmds.c:795 commands/typecmds.c:1120 -#: commands/typecmds.c:1543 -#, c-format -msgid "type \"%s\" already exists" -msgstr "ya existe un tipo «%s»" +#: utils/init/postinit.c:632 +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" -#: catalog/heap.c:944 -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." +#: utils/init/postinit.c:636 +msgid "must be superuser to connect during database shutdown" 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." +"debe ser superusuario para conectarse durante el apagado de la base de datos" -#: catalog/heap.c:1540 -#, c-format +#: utils/init/postinit.c:646 +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:660 msgid "" -"cannot drop \"%s\" because it is being used by active queries in this session" +"remaining connection slots are reserved for non-replication superuser " +"connections" msgstr "" -"no se puede borrar «%s» porque está siendo usada por consultas activas en " -"esta sesión" +"las conexiones restantes están reservadas a superusuarios y no de replicación" -#: catalog/heap.c:1991 -#, c-format -msgid "check constraint \"%s\" already exists" -msgstr "la restricción check «%s» ya existe" +#: utils/init/postinit.c:675 +msgid "must be replication role to start walsender" +msgstr "debe ser ser rol de replicación para iniciar el walsender" -#: catalog/heap.c:2135 catalog/pg_constraint.c:639 commands/tablecmds.c:4633 +#: utils/init/postinit.c:718 utils/init/postinit.c:786 +#: utils/init/postinit.c:803 commands/dbcommands.c:791 +#: commands/dbcommands.c:936 commands/dbcommands.c:1035 +#: commands/dbcommands.c:1208 commands/dbcommands.c:1393 +#: commands/dbcommands.c:1478 commands/dbcommands.c:1905 commands/comment.c:60 #, c-format -msgid "constraint \"%s\" for relation \"%s\" already exists" -msgstr "la restricción «%s» para la relación «%s» ya existe" +msgid "database \"%s\" does not exist" +msgstr "no existe la base de datos «%s»" -#: catalog/heap.c:2139 +#: utils/init/postinit.c:735 #, c-format -msgid "merging constraint \"%s\" with inherited definition" -msgstr "mezclando la restricción «%s» con la definición heredada" - -#: catalog/heap.c:2237 -msgid "cannot use column references in default expression" -msgstr "no se pueden usar referencias a columnas en una cláusula default" +msgid "database %u does not exist" +msgstr "no existe la base de datos %u" -#: catalog/heap.c:2245 -msgid "default expression must not return a set" -msgstr "expresiones default no pueden retornar conjuntos" +#: utils/init/postinit.c:787 +msgid "It seems to have just been dropped or renamed." +msgstr "Parece haber sido eliminada o renombrada." -#: catalog/heap.c:2253 -msgid "cannot use subquery in default expression" -msgstr "no se puede usar una subconsulta en expresión default" +#: utils/init/postinit.c:805 +#, c-format +msgid "The database subdirectory \"%s\" is missing." +msgstr "Falta el subdirectorio de base de datos «%s»." -#: catalog/heap.c:2257 -msgid "cannot use aggregate function in default expression" -msgstr "no se puede usar una función de agregación en expresión default" +#: utils/init/postinit.c:810 +#, c-format +msgid "could not access directory \"%s\": %m" +msgstr "no se pudo acceder al directorio «%s»: %m" -#: catalog/heap.c:2261 -msgid "cannot use window function in default expression" -msgstr "" -"no se puede usar una función de ventana deslizante en expresión default" +#: utils/error/elog.c:1525 +#, c-format +msgid "could not reopen file \"%s\" as stderr: %m" +msgstr "no se pudo reabrir «%s» para error estándar: %m" -#: catalog/heap.c:2280 rewrite/rewriteHandler.c:952 +#: utils/error/elog.c:1538 #, 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" +msgid "could not reopen file \"%s\" as stdout: %m" +msgstr "no se pudo reabrir «%s» para usar como salida estándar: %m" -#: catalog/heap.c:2285 commands/prepare.c:369 parser/parse_node.c:370 -#: parser/parse_target.c:475 parser/parse_target.c:734 -#: parser/parse_target.c:744 rewrite/rewriteHandler.c:957 -msgid "You will need to rewrite or cast the expression." -msgstr "Necesitará reescribir la expresión o aplicarle una conversión de tipo." +#: utils/error/elog.c:1928 utils/error/elog.c:1938 utils/error/elog.c:1948 +msgid "[unknown]" +msgstr "[desconocido]" + +#: utils/error/elog.c:2299 utils/error/elog.c:2579 utils/error/elog.c:2657 +msgid "missing error text" +msgstr "falta un texto de mensaje de error" -#: catalog/heap.c:2321 +#: utils/error/elog.c:2302 utils/error/elog.c:2305 utils/error/elog.c:2660 +#: utils/error/elog.c:2663 #, 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" +msgid " at character %d" +msgstr " en carácter %d" -#: catalog/heap.c:2330 commands/typecmds.c:2298 -msgid "cannot use subquery in check constraint" -msgstr "no se pueden usar subconsultas en una restricción check" +#: utils/error/elog.c:2315 utils/error/elog.c:2322 +msgid "DETAIL: " +msgstr "DETALLE: " -#: catalog/heap.c:2334 commands/typecmds.c:2302 -msgid "cannot use aggregate function in check constraint" -msgstr "no se pueden usar funciones de agregación en una restricción check" +#: utils/error/elog.c:2329 +msgid "HINT: " +msgstr "HINT: " -#: catalog/heap.c:2338 commands/typecmds.c:2306 -msgid "cannot use window function in check constraint" -msgstr "" -"no se pueden usar funciones de ventana deslizante en una restricción check" +#: utils/error/elog.c:2336 +msgid "QUERY: " +msgstr "CONSULTA: " -#: catalog/heap.c:2577 -msgid "unsupported ON COMMIT and foreign key combination" -msgstr "combinación de ON COMMIT y llaves foráneas no soportada" +#: utils/error/elog.c:2343 +msgid "CONTEXT: " +msgstr "CONTEXTO: " -#: catalog/heap.c:2578 +#: utils/error/elog.c:2353 #, 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:2583 -msgid "cannot truncate a table referenced in a foreign key constraint" -msgstr "no se puede truncar una tabla referida en una llave foránea" +msgid "LOCATION: %s, %s:%d\n" +msgstr "UBICACIÓN: %s, %s:%d\n" -#: catalog/heap.c:2584 +#: utils/error/elog.c:2360 #, c-format -msgid "Table \"%s\" references \"%s\"." -msgstr "La tabla «%s» hace referencia a «%s»." +msgid "LOCATION: %s:%d\n" +msgstr "UBICACIÓN: %s:%d\n" + +#: utils/error/elog.c:2374 +msgid "STATEMENT: " +msgstr "SENTENCIA: " -#: catalog/heap.c:2586 +#. translator: This string will be truncated at 47 +#. characters expanded. +#: utils/error/elog.c:2772 #, 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." +msgid "operating system error %d" +msgstr "error %d de sistema operativo" -#: catalog/index.c:581 -msgid "user-defined indexes on system catalog tables are not supported" -msgstr "los usuarios no pueden crear índices en tablas del sistema" +#: utils/error/elog.c:2795 +msgid "DEBUG" +msgstr "DEBUG" -#: catalog/index.c:591 -msgid "concurrent index creation on system catalog tables is not supported" -msgstr "no se pueden crear índices de forma concurrente en tablas del sistema" +#: utils/error/elog.c:2799 +msgid "LOG" +msgstr "LOG" -#: catalog/index.c:609 -msgid "shared indexes cannot be created after initdb" -msgstr "no se pueden crear índices compartidos después de initdb" +#: utils/error/elog.c:2802 +msgid "INFO" +msgstr "INFO" -#: catalog/index.c:2425 -msgid "cannot reindex temporary tables of other sessions" -msgstr "no se puede hacer reindex de tablas temporales de otras sesiones" +#: utils/error/elog.c:2805 +msgid "NOTICE" +msgstr "NOTICE" + +#: utils/error/elog.c:2808 +msgid "WARNING" +msgstr "WARNING" + +#: utils/error/elog.c:2811 +msgid "ERROR" +msgstr "ERROR" + +#: utils/error/elog.c:2814 +msgid "FATAL" +msgstr "FATAL" + +#: utils/error/elog.c:2817 +msgid "PANIC" +msgstr "PANIC" + +#: utils/error/assert.c:37 +msgid "TRAP: ExceptionalCondition: bad arguments\n" +msgstr "TRAP: ExceptionalConditions: argumentos erróneos\n" -#: catalog/namespace.c:232 catalog/namespace.c:306 commands/trigger.c:3930 +#: utils/error/assert.c:40 #, 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»" +msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n" +msgstr "TRAP: %s(«%s», Archivo: «%s», Línea: %d)\n" -#: catalog/namespace.c:250 catalog/namespace.c:317 -msgid "temporary tables cannot specify a schema name" -msgstr "las tablas temporales no pueden especificar un nombre de esquema" +#: utils/sort/tuplesort.c:3131 +#, c-format +msgid "could not create unique index \"%s\"" +msgstr "no se pudo crear el índice único «%s»" -#: catalog/namespace.c:273 commands/lockcmds.c:122 parser/parse_relation.c:835 +#: utils/sort/tuplesort.c:3133 #, c-format -msgid "relation \"%s.%s\" does not exist" -msgstr "no existe la relación «%s.%s»" +msgid "Key %s is duplicated." +msgstr "La llave %s está duplicada." -#: catalog/namespace.c:278 commands/lockcmds.c:127 parser/parse_relation.c:848 -#: parser/parse_relation.c:856 utils/adt/regproc.c:810 +#: utils/sort/logtape.c:213 #, c-format -msgid "relation \"%s\" does not exist" -msgstr "no existe la relación «%s»" +msgid "could not write block %ld of temporary file: %m" +msgstr "no se pudo escribir el bloque %ld del archivo temporal: %m" -#: catalog/namespace.c:358 catalog/namespace.c:2410 -msgid "no schema has been selected to create in" -msgstr "no se ha seleccionado ningún esquema dentro del cual crear" +#: utils/sort/logtape.c:215 +msgid "Perhaps out of disk space?" +msgstr "¿Quizás se agotó el espacio en disco?" -#: catalog/namespace.c:1748 commands/tsearchcmds.c:306 +#: utils/sort/logtape.c:232 #, c-format -msgid "text search parser \"%s\" does not exist" -msgstr "no existe el analizador de búsqueda en texto «%s»" +msgid "could not read block %ld of temporary file: %m" +msgstr "no se pudo leer el bloque %ld del archivo temporal: %m" -#: catalog/namespace.c:1871 commands/tsearchcmds.c:654 +#: utils/fmgr/fmgr.c:271 #, c-format -msgid "text search dictionary \"%s\" does not exist" -msgstr "no existe el diccionario de búsqueda en texto «%s»" +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" -#: catalog/namespace.c:1995 commands/tsearchcmds.c:1137 +#: utils/fmgr/fmgr.c:481 #, c-format -msgid "text search template \"%s\" does not exist" -msgstr "no existe la plantilla de búsqueda en texto «%s»" +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»" -#: catalog/namespace.c:2118 commands/tsearchcmds.c:1532 -#: commands/tsearchcmds.c:1688 +#: utils/fmgr/fmgr.c:852 utils/fmgr/fmgr.c:2113 #, c-format -msgid "text search configuration \"%s\" does not exist" -msgstr "no existe la configuración de búsqueda en texto «%s»" +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)" -#: catalog/namespace.c:2231 parser/parse_expr.c:769 parser/parse_target.c:998 +#: utils/fmgr/dfmgr.c:125 #, c-format -msgid "cross-database references are not implemented: %s" -msgstr "no están implementadas las referencias entre bases de datos: %s" +msgid "could not find function \"%s\" in file \"%s\"" +msgstr "no se encuentra la función «%s» en el archivo «%s»" -#: catalog/namespace.c:2237 parser/parse_expr.c:776 parser/parse_target.c:1005 -#: gram.y:3673 gram.y:10605 +#: utils/fmgr/dfmgr.c:204 utils/fmgr/dfmgr.c:413 utils/fmgr/dfmgr.c:461 #, c-format -msgid "improper qualified name (too many dotted names): %s" -msgstr "el nombre no es válido (demasiados puntos): %s" +msgid "could not access file \"%s\": %m" +msgstr "no se pudo acceder al archivo «%s»: %m" -#: catalog/namespace.c:2442 +#: utils/fmgr/dfmgr.c:242 #, c-format -msgid "improper relation name (too many dotted names): %s" -msgstr "el nombre de relación no es válido (demasiados puntos): %s" +msgid "could not load library \"%s\": %s" +msgstr "no se pudo cargar la biblioteca «%s»: %s" -#: catalog/namespace.c:3024 +#: utils/fmgr/dfmgr.c:274 #, c-format -msgid "permission denied to create temporary tables in database \"%s\"" +msgid "incompatible library \"%s\": missing magic block" +msgstr "biblioteca «%s» incompatible: no se encuentra el bloque mágico" + +#: utils/fmgr/dfmgr.c:276 +msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro." msgstr "" -"se ha denegado el permiso para crear tablas temporales en la base de datos " -"«%s»" +"Se requiere que las bibliotecas de extensión usen la macro PG_MODULE_MAGIC." -#: catalog/namespace.c:3040 -msgid "cannot create temporary tables during recovery" -msgstr "no se pueden crear tablas temporales durante la recuperación" +#: utils/fmgr/dfmgr.c:312 +#, c-format +msgid "incompatible library \"%s\": version mismatch" +msgstr "biblioteca «%s» incompatible: versión no coincide" -#: catalog/pg_aggregate.c:100 -msgid "cannot determine transition data type" -msgstr "no se pudo determinar el tipo de dato de transición" +#: utils/fmgr/dfmgr.c:314 +#, c-format +msgid "Server is version %d.%d, library is version %d.%d." +msgstr "Servidor tiene versión %d.%d, biblioteca es versión %d.%d." -#: catalog/pg_aggregate.c:101 -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." +#: utils/fmgr/dfmgr.c:333 +#, c-format +msgid "Server has FUNC_MAX_ARGS = %d, library has %d." +msgstr "El servidor tiene FUNC_MAX_ARGS = %d, la librería tiene %d" -#: catalog/pg_aggregate.c:124 +#: utils/fmgr/dfmgr.c:342 #, 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" +msgid "Server has INDEX_MAX_KEYS = %d, library has %d." +msgstr "El servidor tiene INDEX_MAX_KEYS = %d, la librería tiene %d" -#: 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 "" -"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" +#: utils/fmgr/dfmgr.c:351 +#, c-format +msgid "Server has NAMEDATALEN = %d, library has %d." +msgstr "El servidor tiene NAMEDATALEN = %d, la librería tiene %d" -#: catalog/pg_aggregate.c:175 catalog/pg_proc.c:204 -msgid "cannot determine result data type" -msgstr "no se puede determinar el tipo de dato del resultado" +#: utils/fmgr/dfmgr.c:360 +#, c-format +msgid "Server has FLOAT4PASSBYVAL = %s, library has %s." +msgstr "El servidor tiene FLOAT4PASSBYVAL = %s, la librería tiene %s" -#: catalog/pg_aggregate.c:176 -msgid "" -"An aggregate returning a polymorphic type must have at least one polymorphic " -"argument." +#: utils/fmgr/dfmgr.c:369 +#, c-format +msgid "Server has FLOAT8PASSBYVAL = %s, library has %s." +msgstr "El servidor tiene FLOAT8PASSBYVAL = %s, la librería tiene %s" + +#: utils/fmgr/dfmgr.c:376 +msgid "Magic block has unexpected length or padding difference." 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." +"El bloque mágico tiene un largo inesperado, o una diferencia de relleno." -#: catalog/pg_aggregate.c:188 catalog/pg_proc.c:210 -msgid "unsafe use of pseudo-type \"internal\"" -msgstr "uso inseguro de pseudotipo «internal»" +#: utils/fmgr/dfmgr.c:379 +#, c-format +msgid "incompatible library \"%s\": magic block mismatch" +msgstr "biblioteca «%s» incompatible: bloque mágico no coincide" -#: catalog/pg_aggregate.c:189 catalog/pg_proc.c:211 -msgid "" -"A function returning \"internal\" must have at least one \"internal\" " -"argument." +#: utils/fmgr/dfmgr.c:545 +#, 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 +#, 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 +msgid "zero-length component in parameter \"dynamic_library_path\"" msgstr "" -"Una función que retorne «internal» debe tener al menos un argumento de tipo " -"«internal»." +"se encontró componente de largo cero en el parámetro «dynamic_library_path»" -#: catalog/pg_aggregate.c:197 -msgid "sort operator can only be specified for single-argument aggregates" +#: utils/fmgr/dfmgr.c:636 +msgid "component in parameter \"dynamic_library_path\" is not an absolute path" msgstr "" -"el operador de ordenamiento sólo pueden ser especificado para funciones de " -"agregación de un solo argumento" +"un componente en el parámetro «dynamic_library_path» no es una ruta absoluta" -#: catalog/pg_aggregate.c:331 commands/typecmds.c:1269 -#: commands/typecmds.c:1320 commands/typecmds.c:1351 commands/typecmds.c:1374 -#: commands/typecmds.c:1395 commands/typecmds.c:1422 commands/typecmds.c:1449 -#: parser/parse_func.c:294 parser/parse_func.c:305 parser/parse_func.c:1464 -#, c-format -msgid "function %s does not exist" -msgstr "no existe la función %s" +#: utils/fmgr/funcapi.c:60 utils/mmgr/portalmem.c:985 commands/prepare.c:751 +#: commands/extension.c:1711 commands/extension.c:1820 +#: commands/extension.c:2013 foreign/foreign.c:350 executor/functions.c:785 +#: executor/execQual.c:1706 executor/execQual.c:1731 executor/execQual.c:2092 +#: executor/execQual.c:5221 replication/walsender.c:1415 +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" -#: catalog/pg_aggregate.c:337 +#: utils/fmgr/funcapi.c:354 #, c-format -msgid "function %s returns a set" -msgstr "la función %s retorna un conjunto" +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" -#: catalog/pg_aggregate.c:362 -#, 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" +#: utils/fmgr/funcapi.c:1208 utils/fmgr/funcapi.c:1239 +msgid "number of aliases does not match number of columns" +msgstr "el número de aliases no calza con el número de columnas" -#: catalog/pg_constraint.c:648 commands/typecmds.c:2239 -#, c-format -msgid "constraint \"%s\" for domain \"%s\" already exists" -msgstr "el dominio «%2$s» ya contiene una restricción llamada «%1$s»" +#: utils/fmgr/funcapi.c:1233 +msgid "no column alias was provided" +msgstr "no se entregó alias de columna" + +#: utils/fmgr/funcapi.c:1257 +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" -#: catalog/pg_constraint.c:767 +#: 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 "table \"%s\" has multiple constraints named \"%s\"" -msgstr "hay múltiples restricciones llamadas «%2$s» en la tabla «%1$s»" +msgid "unexpected encoding ID %d for ISO 8859 character sets" +msgstr "ID de codificación %d inesperado para juegos de caracteres ISO 8859" -#: catalog/pg_constraint.c:779 +#: 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 "constraint \"%s\" for table \"%s\" does not exist" -msgstr "no existe la restricción «%s» para la tabla «%s»" +msgid "unexpected encoding ID %d for WIN character sets" +msgstr "ID de codificación %d inesperado para juegos de caracteres WIN" -#: catalog/pg_conversion.c:66 +#: utils/mb/conv.c:509 #, c-format -msgid "conversion \"%s\" already exists" -msgstr "ya existe la conversión «%s»" +msgid "invalid encoding number: %d" +msgstr "el número de codificación no es válido: %d" + +#: utils/mb/encnames.c:485 +msgid "encoding name too long" +msgstr "el nombre de codificación es demasiado largo" -#: catalog/pg_conversion.c:79 +#: utils/mb/mbutils.c:281 #, c-format -msgid "default conversion for %s to %s already exists" -msgstr "ya existe una conversión por omisión desde %s a %s" +msgid "conversion between %s and %s is not supported" +msgstr "la conversión entre %s y %s no está soportada" -#: catalog/pg_depend.c:209 +#: utils/mb/mbutils.c:351 #, c-format -msgid "cannot remove dependency on %s because it is a system object" +msgid "" +"default conversion function for encoding \"%s\" to \"%s\" does not exist" msgstr "" -"no se puede eliminar dependencia a %s porque es un objeto requerido por el " -"sistema" - -#: catalog/pg_enum.c:70 -msgid "EnumValuesCreate() can only set a single OID" -msgstr "EnumValuesCreate() puede definir un único OID" +"no existe el procedimiento por omisión de conversión desde la codificación " +"«%s» a «%s»" -#: catalog/pg_enum.c:110 +#: utils/mb/mbutils.c:375 utils/mb/mbutils.c:676 #, c-format -msgid "invalid enum label \"%s\"" -msgstr "la etiqueta enum «%s» no es válida" +msgid "String of %d bytes is too long for encoding conversion." +msgstr "La cadena de %d bytes es demasiado larga para la recodificación." -#: catalog/pg_enum.c:111 +#: utils/mb/mbutils.c:462 #, c-format -msgid "Labels must be %d characters or less." -msgstr "Las etiquetas deben ser de %d caracteres o menos." +msgid "invalid source encoding name \"%s\"" +msgstr "la codificación de origen «%s» no es válida" -#: catalog/pg_largeobject.c:200 commands/comment.c:1422 libpq/be-fsstubs.c:287 +#: utils/mb/mbutils.c:467 #, c-format -msgid "must be owner of large object %u" -msgstr "debe ser dueño del objeto grande %u" +msgid "invalid destination encoding name \"%s\"" +msgstr "la codificación de destino «%s» no es válida" -#: catalog/pg_namespace.c:50 commands/schemacmds.c:272 +#: utils/mb/mbutils.c:515 utils/adt/xml.c:159 #, c-format -msgid "schema \"%s\" already exists" -msgstr "ya existe el esquema «%s»" +msgid "invalid encoding name \"%s\"" +msgstr "nombre de codificación «%s» no válido" -#: catalog/pg_operator.c:220 catalog/pg_operator.c:358 +#: utils/mb/mbutils.c:589 #, c-format -msgid "\"%s\" is not a valid operator name" -msgstr "«%s» no es un nombre válido de operador" +msgid "invalid byte value for encoding \"%s\": 0x%02x" +msgstr "byte no válido para codificación «%s»: 0x%02x" -#: catalog/pg_operator.c:367 -msgid "only binary operators can have commutators" -msgstr "sólo los operadores binarios pueden tener conmutadores" +#: utils/mb/wchar.c:1777 +#, c-format +msgid "invalid byte sequence for encoding \"%s\": 0x%s" +msgstr "secuencia de bytes no válida para codificación «%s»: 0x%s" -#: catalog/pg_operator.c:371 -msgid "only binary operators can have join selectivity" -msgstr "sólo los operadores binarios pueden tener selectividad de join" +#: utils/mb/wchar.c:1806 +#, c-format +msgid "character 0x%s of encoding \"%s\" has no equivalent in \"%s\"" +msgstr "carácter 0x%s de codificación «%s» no tiene equivalente en «%s»" -#: catalog/pg_operator.c:375 -msgid "only binary operators can merge join" -msgstr "sólo los operadores binarios pueden ser usados en merge join" +#: utils/mmgr/aset.c:417 +#, c-format +msgid "Failed while creating memory context \"%s\"." +msgstr "Falla al crear el contexto de memoria «%s»." -#: catalog/pg_operator.c:379 -msgid "only binary operators can hash" -msgstr "sólo los operadores binarios pueden ser usados en hash" +#: 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 "Falla en petición de tamaño %lu." -#: catalog/pg_operator.c:390 -msgid "only boolean operators can have negators" -msgstr "sólo los operadores booleanos pueden tener negadores" +#: utils/mmgr/portalmem.c:207 +#, c-format +msgid "cursor \"%s\" already exists" +msgstr "el cursor «%s» ya existe" -#: catalog/pg_operator.c:394 -msgid "only boolean operators can have restriction selectivity" -msgstr "sólo los operadores booleanos pueden tener selectividad de restricción" +#: utils/mmgr/portalmem.c:211 +#, c-format +msgid "closing existing cursor \"%s\"" +msgstr "cerrando el cursor «%s» preexistente" -#: catalog/pg_operator.c:398 -msgid "only boolean operators can have join selectivity" -msgstr "sólo los operadores booleanos pueden tener selectividad de join" +#: utils/mmgr/portalmem.c:478 +#, c-format +msgid "cannot drop active portal \"%s\"" +msgstr "no se puede eliminar el portal activo «%s»" -#: catalog/pg_operator.c:402 -msgid "only boolean operators can merge join" -msgstr "sólo los operadores booleanos pueden ser usados en merge join" +#: utils/mmgr/portalmem.c:668 +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" -#: catalog/pg_operator.c:406 -msgid "only boolean operators can hash" -msgstr "sólo los operadores booleanos pueden ser usados en hash" +#: utils/mmgr/portalmem.c:989 commands/prepare.c:755 commands/extension.c:1715 +#: commands/extension.c:1824 commands/extension.c:2017 foreign/foreign.c:355 +#: replication/walsender.c:1419 +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" -#: catalog/pg_operator.c:418 -#, c-format -msgid "operator %s already exists" -msgstr "ya existe un operador %s" +#: utils/adt/windowfuncs.c:243 +msgid "argument of ntile must be greater than zero" +msgstr "el argumento de ntile debe ser mayor que cero" -#: catalog/pg_operator.c:607 -msgid "operator cannot be its own negator or sort operator" -msgstr "un operador no puede ser su propio negador u operador de ordenamiento" +#: utils/adt/windowfuncs.c:465 +msgid "argument of nth_value must be greater than zero" +msgstr "el argumento de nth_value debe ser mayor que cero" -#: catalog/pg_proc.c:123 parser/parse_func.c:1509 parser/parse_func.c:1549 -#, c-format -msgid "functions cannot have more than %d argument" -msgid_plural "functions cannot have more than %d arguments" -msgstr[0] "las funciones no pueden tener más de %d argumento" -msgstr[1] "las funciones no pueden tener más de %d argumentos" +#: utils/adt/xml.c:138 +msgid "unsupported XML feature" +msgstr "característica XML no soportada" -#: catalog/pg_proc.c:205 -msgid "" -"A function returning a polymorphic type must have at least one polymorphic " -"argument." +#: utils/adt/xml.c:139 +msgid "This functionality requires the server to be built with libxml support." msgstr "" -"Una función que retorne un tipo polimórfico debe tener al menos un argumento " -"de tipo polimórfico." - -#: catalog/pg_proc.c:223 -#, c-format -msgid "\"%s\" is already an attribute of type %s" -msgstr "«%s» ya es un atributo de tipo %s" +"Esta funcionalidad requiere que el servidor haya sido construido con soporte " +"libxml." -#: catalog/pg_proc.c:362 -#, c-format -msgid "function \"%s\" already exists with same argument types" -msgstr "ya existe una función «%s» con los mismos argumentos" +#: utils/adt/xml.c:140 +msgid "You need to rebuild PostgreSQL using --with-libxml." +msgstr "Necesita reconstruir PostgreSQL usando --with-libxml." -#: catalog/pg_proc.c:376 catalog/pg_proc.c:398 -msgid "cannot change return type of existing function" -msgstr "no se puede cambiar el tipo de retorno de una función existente" +#: utils/adt/xml.c:405 utils/adt/xml.c:410 +msgid "invalid XML comment" +msgstr "comentario XML no válido" -#: catalog/pg_proc.c:377 catalog/pg_proc.c:400 catalog/pg_proc.c:442 -#: catalog/pg_proc.c:465 catalog/pg_proc.c:491 -msgid "Use DROP FUNCTION first." -msgstr "Use DROP FUNCTION primero." +#: utils/adt/xml.c:539 +msgid "not an XML document" +msgstr "no es un documento XML" -#: catalog/pg_proc.c:399 -msgid "Row type defined by OUT parameters is different." -msgstr "Tipo de registro definido por parámetros OUT es diferente." +#: utils/adt/xml.c:692 utils/adt/xml.c:715 +msgid "invalid XML processing instruction" +msgstr "instrucción de procesamiento XML no válida" -#: catalog/pg_proc.c:440 +#: utils/adt/xml.c:693 #, c-format -msgid "cannot change name of input parameter \"%s\"" -msgstr "no se puede cambiar el nombre del parámetro de entrada «%s»" +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»." -#: catalog/pg_proc.c:464 -msgid "cannot remove parameter defaults from existing function" -msgstr "no se puede eliminar el valor por omisión de funciones existentes" +#: utils/adt/xml.c:716 +msgid "XML processing instruction cannot contain \"?>\"." +msgstr "la instrucción de procesamiento XML no puede contener «?>»." -#: catalog/pg_proc.c:490 -msgid "cannot change data type of existing parameter default value" -msgstr "" -"no se puede cambiar el tipo de dato del valor por omisión de un parámetro" +#: utils/adt/xml.c:795 +msgid "xmlvalidate is not implemented" +msgstr "xmlvalidate no está implementado" -#: catalog/pg_proc.c:502 -#, c-format -msgid "function \"%s\" is an aggregate function" -msgstr "la función «%s» es una función de agregación" +#: utils/adt/xml.c:880 +msgid "could not initialize XML library" +msgstr "no se pudo inicializar la biblioteca XML" -#: catalog/pg_proc.c:507 +#: utils/adt/xml.c:881 #, c-format -msgid "function \"%s\" is not an aggregate function" -msgstr "la función «%s» no es una función de agregación" +msgid "" +"libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u." +msgstr "" +"libxml2 tiene tipo char incompatible: sizeof(char)=%u, sizeof(xmlChar)=%u." -#: catalog/pg_proc.c:515 -#, c-format -msgid "function \"%s\" is a window function" -msgstr "la función %s es de tipo window" +#: utils/adt/xml.c:1448 +msgid "Invalid character value." +msgstr "Valor de carácter no válido." -#: catalog/pg_proc.c:520 -#, c-format -msgid "function \"%s\" is not a window function" -msgstr "la función «%s» no es de tipo window" +#: utils/adt/xml.c:1451 +msgid "Space required." +msgstr "Se requiere un espacio." -#: catalog/pg_proc.c:688 -#, c-format -msgid "there is no built-in function named \"%s\"" -msgstr "no hay ninguna función interna llamada «%s»" +#: utils/adt/xml.c:1454 +msgid "standalone accepts only 'yes' or 'no'." +msgstr "standalone acepta sólo 'yes' y 'no'." -#: catalog/pg_proc.c:780 -#, c-format -msgid "SQL functions cannot return type %s" -msgstr "las funciones SQL no pueden retornar el tipo %s" +#: utils/adt/xml.c:1457 +msgid "Malformed declaration: missing version." +msgstr "Declaración mal formada: falta la versión." -#: catalog/pg_proc.c:795 -#, c-format -msgid "SQL functions cannot have arguments of type %s" -msgstr "las funciones SQL no pueden tener argumentos de tipo %s" +#: utils/adt/xml.c:1460 +msgid "Missing encoding in text declaration." +msgstr "Falta especificación de codificación en declaración de texto." -#: catalog/pg_proc.c:861 executor/functions.c:936 -#, c-format -msgid "SQL function \"%s\"" -msgstr "función SQL «%s»" +#: utils/adt/xml.c:1463 +msgid "Parsing XML declaration: '?>' expected." +msgstr "Procesando declaración XML: se esperaba '?>'." -#: catalog/pg_shdepend.c:678 +#: utils/adt/xml.c:1466 #, 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" -"y objetos en %d base de datos (vea el registro del servidor para obtener la " -"lista)" -msgstr[1] "" -"\n" -"y objetos en otras %d bases de datos (vea el registro del servidor para " -"obtener la lista)" +msgid "Unrecognized libxml error code: %d." +msgstr "Código de error libxml no reconocido: %d." -#: catalog/pg_shdepend.c:990 -#, c-format -msgid "role %u was concurrently dropped" -msgstr "el rol %u fue eliminado por una transacción concurrente" +#: utils/adt/xml.c:1717 utils/adt/date.c:217 +msgid "date out of range" +msgstr "la fecha fuera de rango" -#: catalog/pg_shdepend.c:1009 -#, c-format -msgid "tablespace %u was concurrently dropped" -msgstr "el tablespace %u fue eliminado por una transacción concurrente" +#: utils/adt/xml.c:1718 +msgid "XML does not support infinite date values." +msgstr "XML no soporta valores infinitos de fecha." -#: catalog/pg_shdepend.c:1024 -#, c-format -msgid "database %u was concurrently dropped" -msgstr "la base de datos %u fue eliminado por una transacción concurrente" +#: utils/adt/xml.c:1740 utils/adt/xml.c:1747 utils/adt/xml.c:1767 +#: utils/adt/xml.c:1774 utils/adt/timestamp.c:226 utils/adt/timestamp.c:269 +#: utils/adt/timestamp.c:491 utils/adt/timestamp.c:531 +#: utils/adt/timestamp.c:2531 utils/adt/timestamp.c:2552 +#: utils/adt/timestamp.c:2565 utils/adt/timestamp.c:2574 +#: utils/adt/timestamp.c:2632 utils/adt/timestamp.c:2655 +#: utils/adt/timestamp.c:2668 utils/adt/timestamp.c:2679 +#: utils/adt/timestamp.c:3115 utils/adt/timestamp.c:3245 +#: utils/adt/timestamp.c:3286 utils/adt/timestamp.c:3374 +#: utils/adt/timestamp.c:3421 utils/adt/timestamp.c:3532 +#: utils/adt/timestamp.c:3845 utils/adt/timestamp.c:3982 +#: utils/adt/timestamp.c:3989 utils/adt/timestamp.c:4003 +#: utils/adt/timestamp.c:4013 utils/adt/timestamp.c:4076 +#: utils/adt/timestamp.c:4216 utils/adt/timestamp.c:4226 +#: utils/adt/timestamp.c:4441 utils/adt/timestamp.c:4520 +#: utils/adt/timestamp.c:4527 utils/adt/timestamp.c:4554 +#: utils/adt/timestamp.c:4558 utils/adt/timestamp.c:4615 +#: utils/adt/formatting.c:3247 utils/adt/formatting.c:3279 +#: utils/adt/formatting.c:3347 utils/adt/date.c:913 utils/adt/date.c:960 +#: utils/adt/date.c:1516 utils/adt/date.c:1553 utils/adt/date.c:2426 +#: utils/adt/nabstime.c:480 utils/adt/nabstime.c:523 utils/adt/nabstime.c:553 +#: utils/adt/nabstime.c:596 +msgid "timestamp out of range" +msgstr "el timestamp está fuera de rango" -#: catalog/pg_shdepend.c:1068 -#, c-format -msgid "owner of %s" -msgstr "dueño de %s" +#: utils/adt/xml.c:1741 utils/adt/xml.c:1768 +msgid "XML does not support infinite timestamp values." +msgstr "XML no soporta valores infinitos de timestamp." -#: catalog/pg_shdepend.c:1070 +#: utils/adt/xml.c:2074 utils/adt/xml.c:2238 commands/portalcmds.c:168 +#: commands/portalcmds.c:222 executor/execCurrent.c:66 #, c-format -msgid "privileges for %s" -msgstr "privilegios para %s" +msgid "cursor \"%s\" does not exist" +msgstr "no existe el cursor «%s»" -#. translator: %s will always be "database %s" -#: catalog/pg_shdepend.c:1078 -#, 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" +#: utils/adt/xml.c:2153 +msgid "invalid query" +msgstr "consulta no válido" -#: catalog/pg_shdepend.c:1189 catalog/pg_shdepend.c:1285 -#, c-format +#: utils/adt/xml.c:3377 +msgid "invalid array for XML namespace mapping" +msgstr "array no válido para mapeo de espacio de nombres XML" + +#: utils/adt/xml.c:3378 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" +"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." -#: catalog/pg_type.c:231 -#, c-format -msgid "invalid type internal size %d" -msgstr "el tamaño interno de tipo %d no es válido" +#: utils/adt/xml.c:3402 +msgid "empty XPath expression" +msgstr "expresion XPath vacía" + +#: utils/adt/xml.c:3450 +msgid "neither namespace name nor URI may be null" +msgstr "ni el espacio de nombres ni la URI pueden ser vacíos" -#: catalog/pg_type.c:247 catalog/pg_type.c:255 catalog/pg_type.c:263 -#: catalog/pg_type.c:272 +#: utils/adt/xml.c:3457 #, c-format -msgid "alignment \"%c\" is invalid for passed-by-value type of size %d" +msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" msgstr "" -"el alineamiento «%c» no es válido para un tipo pasado por valor de tamaño %d" +"no se pudo registrar un espacio de nombres XML llamado «%s» con URI «%s»" -#: catalog/pg_type.c:279 +#: utils/adt/regexp.c:194 tsearch/spell.c:439 #, 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" +msgid "invalid regular expression: %s" +msgstr "la expresión regular no es válida: %s" -#: catalog/pg_type.c:288 catalog/pg_type.c:294 +#: utils/adt/regexp.c:274 utils/adt/regexp.c:1222 utils/adt/varlena.c:2860 #, 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:302 -msgid "fixed-size types must have storage PLAIN" -msgstr "los tipos de tamaño fijo deben tener almacenamiento PLAIN" +msgid "regular expression failed: %s" +msgstr "la expresión regular falló: %s" -#: catalog/pg_type.c:730 +#: utils/adt/regexp.c:411 #, 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»" +msgid "invalid regexp option: \"%c\"" +msgstr "la opción de expresión regular no es válida: «%c»" -#: commands/view.c:139 -msgid "view must have at least one column" -msgstr "una vista debe tener al menos una columna" +#: utils/adt/regexp.c:683 utils/adt/like_match.c:289 +msgid "invalid escape string" +msgstr "la cadena de escape no es válida" -#: commands/view.c:163 commands/comment.c:580 commands/tablecmds.c:206 -#: commands/tablecmds.c:2152 commands/tablecmds.c:2373 -#: commands/tablecmds.c:7818 -#, c-format -msgid "\"%s\" is not a view" -msgstr "«%s» no es una vista" +#: utils/adt/regexp.c:684 utils/adt/like_match.c:290 +msgid "Escape string must be empty or one character." +msgstr "La cadena de escape debe estar vacía o tener un solo carácter." -#: commands/view.c:260 commands/view.c:272 -msgid "cannot drop columns from view" -msgstr "no se pueden eliminar columnas de una vista" - -#: 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: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:441 -msgid "CREATE VIEW specifies more column names than columns" -msgstr "CREATE VIEW especifica más nombres de columna que columnas" - -#: commands/view.c:457 -#, c-format -msgid "view \"%s\" will be a temporary view" -msgstr "la vista «%s» será una vista temporal" - -#: commands/aggregatecmds.c:103 -#, 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:113 -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:117 -msgid "aggregate sfunc must be specified" -msgstr "" -"debe especificarse la función de transición (sfunc) de la función de " -"agregación" +#: utils/adt/regexp.c:883 +msgid "regexp_split does not support the global option" +msgstr "regex_split no soporta la opción «global»" -#: commands/aggregatecmds.c:134 -msgid "aggregate input type must be specified" -msgstr "debe especificarse el tipo de entrada de la función de agregación" +#: utils/adt/datum.c:80 utils/adt/datum.c:92 +msgid "invalid Datum pointer" +msgstr "puntero a Datum no válido" -#: commands/aggregatecmds.c:159 -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" +#: utils/adt/array_userfuncs.c:48 +msgid "could not determine input data types" +msgstr "no se pudo determinar el tipo de datos de entrada" -#: commands/aggregatecmds.c:191 -#, 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" +#: utils/adt/array_userfuncs.c:82 +msgid "neither input type is an array" +msgstr "ninguno de los tipos de entrada es un array" -#: commands/aggregatecmds.c:230 -#, c-format -msgid "aggregate %s(%s) does not exist, skipping" -msgstr "la función de agregación %s(%s) no existe, ignorando" +#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113 +#: 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/varlena.c:950 +#: utils/adt/varlena.c:1968 utils/adt/int8.c:1247 utils/adt/float.c:1157 +#: utils/adt/float.c:1216 utils/adt/float.c:2767 utils/adt/float.c:2783 +#: utils/adt/varbit.c:1111 utils/adt/varbit.c:1503 utils/adt/arrayfuncs.c:1276 +#: utils/adt/numeric.c:2253 utils/adt/numeric.c:2262 +msgid "integer out of range" +msgstr "el entero está fuera de rango" -#: commands/aggregatecmds.c:292 commands/functioncmds.c:1119 -#, c-format -msgid "function %s already exists in schema \"%s\"" -msgstr "ya existe una función llamada %s en el esquema «%s»" +#: utils/adt/array_userfuncs.c:121 +msgid "argument must be empty or one-dimensional array" +msgstr "el argumento debe ser vacío o un array unidimensional" -#: commands/analyze.c:166 -#, c-format -msgid "skipping \"%s\" --- only superuser can analyze it" -msgstr "ignorando «%s»: sólo un superusuario puede analizarla" +#: 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 "no se pueden concatenar arrays incompatibles" -#: commands/analyze.c:170 +#: utils/adt/array_userfuncs.c:225 #, c-format -msgid "skipping \"%s\" --- only superuser or database owner can analyze it" +msgid "" +"Arrays with element types %s and %s are not compatible for concatenation." msgstr "" -"ignorando «%s»: sólo un superusuario o el dueño de la base de datos puede " -"analizarla" +"Los arrays con elementos de tipo %s y %s son incompatibles para la " +"concatenación." -#: commands/analyze.c:174 +#: utils/adt/array_userfuncs.c:264 #, c-format -msgid "skipping \"%s\" --- only table or database owner can analyze it" +msgid "Arrays of %d and %d dimensions are not compatible for concatenation." msgstr "" -"ignorando «%s»: sólo su dueño o el de la base de datos puede analizarla" +"Los arrays de dimesiones %d y %d son incompatibles para la concatenación." -#: commands/analyze.c:190 -#, c-format +#: utils/adt/array_userfuncs.c:301 msgid "" -"skipping \"%s\" --- cannot analyze indexes, views, or special system tables" +"Arrays with differing element dimensions are not compatible for " +"concatenation." msgstr "" -"ignorando «%s»: no se pueden analizar índices, vistas o tablas especiales de " -"sistema" - -#: commands/analyze.c:283 -#, c-format -msgid "analyzing \"%s.%s\" inheritance tree" -msgstr "analizando la jerarquía de herencia «%s.%s»" +"Los arrays con elementos de diferentes dimensiones son incompatibles para la " +"concatenación." -#: commands/analyze.c:288 -#, c-format -msgid "analyzing \"%s.%s\"" -msgstr "analizando «%s.%s»" +#: utils/adt/array_userfuncs.c:330 utils/adt/array_userfuncs.c:358 +msgid "Arrays with differing dimensions are not compatible for concatenation." +msgstr "" +"Los arrays con diferentes dimensiones son incompatibles para la " +"concatenación." -#: commands/analyze.c:609 +#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1238 +#: utils/adt/arrayfuncs.c:2911 utils/adt/arrayfuncs.c:4936 #, 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" +msgid "invalid number of dimensions: %d" +msgstr "número incorrecto de dimensiones: %d" -#: commands/analyze.c:1249 +#: 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:4940 +#: executor/execQual.c:303 executor/execQual.c:331 executor/execQual.c:3080 #, 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 "number of array dimensions (%d) exceeds the maximum allowed (%d)" 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" +"el número de dimensiones del array (%d) excede el máximo permitido (%d)" -#: commands/analyze.c:1510 executor/execQual.c:2735 -msgid "could not convert row type" -msgstr "no se pudo convertir el tipo de fila" +#: utils/adt/array_userfuncs.c:487 +msgid "could not determine input data type" +msgstr "no se pudo determinar el tipo de dato de entrada" -#: commands/async.c:567 -msgid "channel name cannot be empty" -msgstr "el nombre de canal no puede ser vacío" +#: utils/adt/int.c:162 +msgid "int2vector has too many elements" +msgstr "int2vector tiene demasiados elementos" -#: commands/async.c:572 -msgid "channel name too long" -msgstr "el nombre de canal es demasiado largo" +#: utils/adt/int.c:237 +msgid "invalid int2vector data" +msgstr "datos de int2vector no válidos" -#: commands/async.c:579 -msgid "payload string too long" -msgstr "la cadena de carga es demasiado larga" +#: utils/adt/int.c:243 utils/adt/oid.c:212 utils/adt/oid.c:293 +msgid "oidvector has too many elements" +msgstr "el oidvector tiene demasiados elementos" -#: commands/async.c:763 -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" +#: 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/float.c:1175 +#: utils/adt/float.c:1233 utils/adt/numeric.c:2354 utils/adt/numeric.c:2365 +msgid "smallint out of range" +msgstr "smallint está fuera de rango" -#: commands/async.c:868 -msgid "too many notifications in the NOTIFY queue" -msgstr "demasiadas notificaciones en la cola NOTIFY" +#: 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/timestamp.c:2877 utils/adt/geo_ops.c:4130 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/float.c:820 +#: utils/adt/float.c:884 utils/adt/float.c:2526 utils/adt/float.c:2589 +#: utils/adt/cash.c:507 utils/adt/cash.c:557 utils/adt/cash.c:608 +#: utils/adt/cash.c:657 utils/adt/cash.c:709 utils/adt/cash.c:759 +#: utils/adt/numeric.c:4507 utils/adt/numeric.c:4790 +msgid "division by zero" +msgstr "división por cero" + +#: utils/adt/int.c:1362 utils/adt/timestamp.c:4713 utils/adt/timestamp.c:4794 +#: utils/adt/int8.c:1409 +msgid "step size cannot equal zero" +msgstr "el tamaño de paso no puede ser cero" + +#: utils/adt/tsgistidx.c:100 +msgid "gtsvector_in not implemented" +msgstr "gtsvector_in no está implementado" -#: commands/async.c:1421 +#: utils/adt/bool.c:153 #, c-format -msgid "NOTIFY queue is %.0f%% full" -msgstr "la cola NOTIFY está %.0f%% llena" +msgid "invalid input syntax for type boolean: \"%s\"" +msgstr "la sintaxis de entrada no es válida para tipo boolean: «%s»" -#: commands/async.c:1423 +#: utils/adt/arrayutils.c:93 utils/adt/arrayutils.c:102 +#: utils/adt/arrayutils.c:109 utils/adt/arrayfuncs.c:871 +#: utils/adt/arrayfuncs.c:1473 utils/adt/arrayfuncs.c:2795 +#: utils/adt/arrayfuncs.c:2943 utils/adt/arrayfuncs.c:5036 #, 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." +msgid "array size exceeds the maximum allowed (%d)" +msgstr "el tamaño del array excede el máximo permitido (%d)" -#: commands/async.c:1426 -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." +#: utils/adt/arrayutils.c:209 +msgid "typmod array must be type cstring[]" +msgstr "el array de typmod debe ser de tipo cstring[]" -#: commands/cluster.c:126 commands/cluster.c:364 -msgid "cannot cluster temporary tables of other sessions" -msgstr "no se pueden reordenar tablas temporales de otras sesiones" +#: utils/adt/arrayutils.c:214 +msgid "typmod array must be one-dimensional" +msgstr "array de typmod debe ser unidimensional" -#: 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»" +#: utils/adt/arrayutils.c:219 +msgid "typmod array must not contain nulls" +msgstr "los arrays de typmod no deben contener valores nulos" -#: commands/cluster.c:170 commands/tablecmds.c:6768 -#, c-format -msgid "index \"%s\" for table \"%s\" does not exist" -msgstr "no existe el índice «%s» en la tabla «%s»" +#: utils/adt/trigfuncs.c:41 +msgid "suppress_redundant_updates_trigger: must be called as trigger" +msgstr "suppress_redundant_updates_trigger: debe ser invocado como trigger" -#: commands/cluster.c:353 -msgid "cannot cluster a shared catalog" -msgstr "no se puede reordenar un catálogo compartido" +#: utils/adt/trigfuncs.c:47 +msgid "suppress_redundant_updates_trigger: must be called on update" +msgstr "suppress_redundant_updates_trigger: debe ser invocado en «UPDATE»" -#: commands/cluster.c:368 -msgid "cannot vacuum temporary tables of other sessions" -msgstr "no se puede hacer vacuum a tablas temporales de otras sesiones" +#: utils/adt/trigfuncs.c:53 +msgid "suppress_redundant_updates_trigger: must be called before update" +msgstr "suppress_redundant_updates_trigger: debe ser invocado «BEFORE UPDATE»" -#: commands/cluster.c:384 -#, c-format -msgid "clustering \"%s.%s\"" -msgstr "reordenando «%s.%s»" +#: utils/adt/trigfuncs.c:59 +msgid "suppress_redundant_updates_trigger: must be called for each row" +msgstr "suppress_redundant_updates_trigger: debe ser invocado «FOR EACH ROW»" -#: commands/cluster.c:389 commands/vacuumlazy.c:320 -#, c-format -msgid "vacuuming \"%s.%s\"" -msgstr "haciendo vacuum a «%s.%s»" +#: utils/adt/timestamp.c:92 utils/adt/varchar.c:43 utils/adt/date.c:66 +#: utils/adt/varbit.c:51 +msgid "invalid type modifier" +msgstr "el modificador de tipo no es válido" -#: commands/cluster.c:421 +#: utils/adt/timestamp.c:97 #, c-format -msgid "\"%s\" is not an index for table \"%s\"" -msgstr "«%s» no es un índice de la tabla «%s»" +msgid "TIMESTAMP(%d)%s precision must not be negative" +msgstr "la precisión de TIMESTAMP(%d)%s no debe ser negativa" -#: commands/cluster.c:429 +#: utils/adt/timestamp.c:103 #, 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" +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" -#: commands/cluster.c:441 +#: utils/adt/timestamp.c:171 utils/adt/timestamp.c:435 #, c-format -msgid "cannot cluster on partial index \"%s\"" -msgstr "no se puede reordenar en índice parcial «%s»" +msgid "timestamp out of range: \"%s\"" +msgstr "timestamp fuera de rango: «%s»" -#: commands/cluster.c:461 +#: utils/adt/timestamp.c:189 utils/adt/timestamp.c:453 +#: utils/adt/timestamp.c:664 #, c-format -msgid "" -"cannot cluster on index \"%s\" because access method does not handle null " -"values" -msgstr "" -"no se puede reordenar en índice «%s» porque el método de acceso no maneja " -"valores null" +msgid "date/time value \"%s\" is no longer supported" +msgstr "el valor de date/time «%s» ya no está soportado" -#: commands/cluster.c:464 -#, c-format -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 "" -"Quizás pueda corregir esto marcando la columna «%s» NOT NULL, o usando ALTER " -"TABLE ... SET WITHOUT CLUSTER para eliminar la reordenación para la tabla." +#: utils/adt/timestamp.c:260 +msgid "timestamp cannot be NaN" +msgstr "el timestamp no puede ser NaN" -#: commands/cluster.c:466 +#: utils/adt/timestamp.c:370 #, c-format -msgid "" -"You might be able to work around this by marking column \"%s\" NOT NULL." -msgstr "Quizás pueda corregir esto marcando la columna «%s» NOT NULL." +msgid "timestamp(%d) precision must be between %d and %d" +msgstr "la precisión de timestamp(%d) debe estar entre %d y %d" -#: commands/cluster.c:477 -#, c-format -msgid "" -"cannot cluster on expressional index \"%s\" because its index access method " -"does not handle null values" -msgstr "" -"no se puede reordenar en índice de expresión «%s» porque el método de acceso " -"no maneja valores null" +#: utils/adt/timestamp.c:658 utils/adt/timestamp.c:3110 +#: utils/adt/timestamp.c:3240 utils/adt/timestamp.c:3625 +msgid "interval out of range" +msgstr "interval fuera de rango" -#: commands/cluster.c:492 -#, c-format -msgid "cannot cluster on invalid index \"%s\"" -msgstr "no se puede reordenar en el índice no válido «%s»" +#: utils/adt/timestamp.c:787 utils/adt/timestamp.c:820 +msgid "invalid INTERVAL type modifier" +msgstr "modificador de tipo INTERVAL no válido" -#: commands/comment.c:642 +#: utils/adt/timestamp.c:803 #, c-format -msgid "\"%s\" is not a table, view, or composite type" -msgstr "«%s» no es una tabla, vista o tipo compuesto" - -#: commands/comment.c:681 -msgid "database name cannot be qualified" -msgstr "un nombre de base de datos no puede ser calificado" - -#: commands/comment.c:729 -msgid "tablespace name cannot be qualified" -msgstr "un nombre de tablespace no puede ser calificado" +msgid "INTERVAL(%d) precision must not be negative" +msgstr "la precisión de INTERVAL(%d) no debe ser negativa" -#: commands/comment.c:766 -msgid "role name cannot be qualified" -msgstr "un nombre de rol no puede ser calificado" +#: utils/adt/timestamp.c:809 +#, 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" -#: commands/comment.c:775 +#: utils/adt/timestamp.c:1101 #, c-format -msgid "must be member of role \"%s\" to comment upon it" -msgstr "debe ser miembro del rol «%s» para definirle un comentario" +msgid "interval(%d) precision must be between %d and %d" +msgstr "la precisión de interval(%d) debe estar entre %d y %d" -#: commands/comment.c:799 commands/schemacmds.c:178 -msgid "schema name cannot be qualified" -msgstr "un nombre de esquema no puede ser calificado" +#: utils/adt/timestamp.c:2307 +msgid "cannot subtract infinite timestamps" +msgstr "no se pueden restar timestamps infinitos" -#: commands/comment.c:874 +#: utils/adt/timestamp.c:3366 utils/adt/timestamp.c:3962 +#: utils/adt/timestamp.c:4021 #, c-format -msgid "rule \"%s\" does not exist" -msgstr "no existe la regla «%s»" +msgid "timestamp units \"%s\" not supported" +msgstr "las unidades de timestamp «%s» no están soportadas" -#: commands/comment.c:882 +#: utils/adt/timestamp.c:3380 utils/adt/timestamp.c:4031 #, c-format -msgid "there are multiple rules named \"%s\"" -msgstr "hay múltiples reglas llamadas «%s»" - -#: commands/comment.c:883 -msgid "Specify a relation name as well as a rule name." -msgstr "Especifique un nombre de relación además del nombre de regla." +msgid "timestamp units \"%s\" not recognized" +msgstr "las unidades de timestamp «%s» no son reconocidas" -#: commands/comment.c:910 rewrite/rewriteDefine.c:687 -#: rewrite/rewriteDefine.c:749 rewrite/rewriteRemove.c:62 +#: utils/adt/timestamp.c:3521 utils/adt/timestamp.c:4193 +#: utils/adt/timestamp.c:4234 #, c-format -msgid "rule \"%s\" for relation \"%s\" does not exist" -msgstr "no existe la regla «%s» para la relación «%s»" +msgid "timestamp with time zone units \"%s\" not supported" +msgstr "las unidades de timestamp with time zone «%s» no están soportadas" -#: commands/comment.c:1105 commands/trigger.c:994 commands/trigger.c:1194 -#: commands/trigger.c:1305 +#: utils/adt/timestamp.c:3538 utils/adt/timestamp.c:4243 #, c-format -msgid "trigger \"%s\" for table \"%s\" does not exist" -msgstr "no existe el trigger «%s» para la tabla «%s»" +msgid "timestamp with time zone units \"%s\" not recognized" +msgstr "las unidades de timestamp with time zone «%s» no son reconocidas" -#: commands/comment.c:1183 commands/conversioncmds.c:153 -#: commands/conversioncmds.c:209 commands/conversioncmds.c:262 +#: utils/adt/timestamp.c:3618 utils/adt/timestamp.c:4349 #, c-format -msgid "conversion \"%s\" does not exist" -msgstr "no existe la conversión «%s»" - -#: commands/comment.c:1213 -msgid "language name cannot be qualified" -msgstr "un nombre de lenguaje no puede ser calificado" - -#: commands/comment.c:1226 -msgid "must be superuser to comment on procedural language" -msgstr "debe ser superusuario para comentar un lenguaje procedural" +msgid "interval units \"%s\" not supported" +msgstr "las unidades de interval «%s» no están soportadas" -#: commands/comment.c:1261 commands/comment.c:1342 commands/indexcmds.c:295 -#: commands/opclasscmds.c:281 commands/opclasscmds.c:669 -#: commands/opclasscmds.c:769 commands/opclasscmds.c:1495 -#: commands/opclasscmds.c:1556 commands/opclasscmds.c:1718 -#: commands/opclasscmds.c:1812 commands/opclasscmds.c:1903 -#: commands/opclasscmds.c:2046 +#: utils/adt/timestamp.c:3634 utils/adt/timestamp.c:4376 #, c-format -msgid "access method \"%s\" does not exist" -msgstr "no existe el método de acceso «%s»" +msgid "interval units \"%s\" not recognized" +msgstr "las unidades de interval «%s» no son reconocidas" -#: commands/comment.c:1289 commands/comment.c:1297 commands/indexcmds.c:1149 -#: commands/indexcmds.c:1157 commands/opclasscmds.c:1507 -#: commands/opclasscmds.c:1511 commands/opclasscmds.c:1739 -#: commands/opclasscmds.c:1750 commands/opclasscmds.c:1926 -#: commands/opclasscmds.c:1937 +#: utils/adt/timestamp.c:4446 utils/adt/timestamp.c:4619 #, 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»" +msgid "could not convert to time zone \"%s\"" +msgstr "no se pudo convertir al huso horario «%s»" -#: commands/comment.c:1370 commands/comment.c:1378 commands/opclasscmds.c:343 -#: commands/opclasscmds.c:789 commands/opclasscmds.c:1568 -#: commands/opclasscmds.c:1572 commands/opclasscmds.c:1833 -#: commands/opclasscmds.c:1844 commands/opclasscmds.c:2069 -#: commands/opclasscmds.c:2080 +#: utils/adt/timestamp.c:4453 utils/adt/timestamp.c:4626 utils/adt/date.c:2631 +#: utils/adt/datetime.c:928 utils/adt/datetime.c:1663 #, 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»" +msgid "time zone \"%s\" not recognized" +msgstr "el huso horario «%s» no es reconocido" -#: commands/comment.c:1469 commands/functioncmds.c:1777 +#: utils/adt/timestamp.c:4478 utils/adt/timestamp.c:4652 #, 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" +msgid "interval time zone \"%s\" must not specify month" +msgstr "el intervalo de huso horario «%s» no debe especificar mes" -#: commands/comment.c:1481 commands/functioncmds.c:1522 -#: commands/functioncmds.c:1794 -#, c-format -msgid "must be owner of type %s or type %s" -msgstr "debe ser dueño del tipo %s o el tipo %s" +#: utils/adt/selfuncs.c:4932 +msgid "case insensitive matching not supported on type bytea" +msgstr "no está soportada la comparación insensible a mayúsculas en bytea" -#: commands/comment.c:1501 -msgid "must be superuser to comment on text search parser" -msgstr "debe ser superusuario para comentar un analizador de búsqueda en texto" +#: utils/adt/selfuncs.c:4947 utils/adt/like.c:211 +msgid "could not determine which collation to use for ILIKE" +msgstr "no se pudo determinar qué ordenamiento (collation) usar para ILIKE" -#: commands/comment.c:1530 -msgid "must be superuser to comment on text search template" -msgstr "debe ser superusuario para comentar una plantilla de búsqueda en texto" +#: utils/adt/selfuncs.c:4948 utils/adt/varlena.c:1315 +#: utils/adt/formatting.c:1515 utils/adt/formatting.c:1565 +#: utils/adt/formatting.c:1631 utils/adt/formatting.c:1681 +#: utils/adt/formatting.c:1748 utils/adt/formatting.c:1810 +#: utils/adt/like.c:212 commands/indexcmds.c:903 commands/view.c:145 +#: regex/regc_pg_locale.c:259 catalog/heap.c:560 +msgid "Use the COLLATE clause to set the collation explicitly." +msgstr "" +"Use la cláusula COLLATE para establecer el ordenamiento explícitamente." -#: commands/constraint.c:59 utils/adt/ri_triggers.c:2999 -#, c-format -msgid "function \"%s\" was not called by trigger manager" -msgstr "la función «%s» no fue ejecutada por el manejador de triggers" +#: utils/adt/selfuncs.c:5035 +msgid "regular-expression matching not supported on type bytea" +msgstr "no está soportada la comparación con expresiones regulares en bytea" -#: commands/constraint.c:66 utils/adt/ri_triggers.c:3008 -#, c-format -msgid "function \"%s\" must be fired AFTER ROW" -msgstr "la función «%s» debe ser ejecutada AFTER ROW" +#: utils/adt/varlena.c:246 utils/adt/varlena.c:287 utils/adt/encode.c:441 +#: utils/adt/encode.c:506 +msgid "invalid input syntax for type bytea" +msgstr "sintaxis de entrada no válida para tipo bytea" -#: commands/constraint.c:80 utils/adt/ri_triggers.c:3029 -#, c-format -msgid "function \"%s\" must be fired for INSERT or UPDATE" -msgstr "la función «%s» debe ser ejecutada en INSERT o UPDATE" +#: 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 utils/adt/varbit.c:1004 +#: utils/adt/varbit.c:1106 +msgid "negative substring length not allowed" +msgstr "no se permite un largo negativo de subcadena" -#: commands/conversioncmds.c:69 -#, c-format -msgid "source encoding \"%s\" does not exist" -msgstr "no existe la codificación fuente «%s»" +#: utils/adt/varlena.c:1314 +msgid "could not determine which collation to use for string comparison" +msgstr "" +"no se pudo determinar qué ordenamiento usar para la comparación de cadenas" -#: commands/conversioncmds.c:76 +#: utils/adt/varlena.c:1358 utils/adt/varlena.c:1371 #, c-format -msgid "destination encoding \"%s\" does not exist" -msgstr "no existe la codificación de destino «%s»" +msgid "could not convert string to UTF-16: error %lu" +msgstr "no se pudo convertir la cadena a UTF-16: error %lu" -#: commands/conversioncmds.c:90 +#: utils/adt/varlena.c:1386 #, c-format -msgid "encoding conversion function %s must return type \"void\"" -msgstr "la función de conversión de codificación %s debe retornar tipo «void»" +msgid "could not compare Unicode strings: %m" +msgstr "no se pudieron comparar las cadenas Unicode: %m" -#: commands/conversioncmds.c:159 +#: utils/adt/varlena.c:2041 utils/adt/varlena.c:2072 utils/adt/varlena.c:2108 +#: utils/adt/varlena.c:2151 #, c-format -msgid "conversion \"%s\" does not exist, skipping" -msgstr "no existe la conversión «%s», ignorando" +msgid "index %d out of valid range, 0..%d" +msgstr "el índice %d está fuera de rango [0..%d]" -#: commands/conversioncmds.c:224 -#, c-format -msgid "conversion \"%s\" already exists in schema \"%s\"" -msgstr "ya existe una conversión llamada «%s» en el esquema «%s»" +#: utils/adt/varlena.c:2163 utils/adt/varbit.c:1740 +msgid "new bit must be 0 or 1" +msgstr "el nuevo bit debe ser 0 o 1" -#: commands/copy.c:312 commands/copy.c:324 commands/copy.c:358 -#: commands/copy.c:368 -msgid "COPY BINARY is not supported to stdout or from stdin" +#: utils/adt/varlena.c:2245 utils/adt/varlena.c:2250 utils/adt/regproc.c:1320 +#: utils/adt/regproc.c:1325 +msgid "invalid name syntax" +msgstr "la sintaxis de nombre no es válida" + +#: utils/adt/varlena.c:2956 +msgid "field position must be greater than zero" +msgstr "la posición del campo debe ser mayor que cero" + +#: utils/adt/varlena.c:3825 utils/adt/varlena.c:3886 +msgid "unterminated conversion specifier" +msgstr "especificador de conversión inconcluso" + +#: utils/adt/varlena.c:3849 utils/adt/varlena.c:3865 +msgid "argument number is out of range" +msgstr "número de argumento fuera del rango" + +#: utils/adt/varlena.c:3892 +msgid "conversion specifies argument 0, but arguments are numbered from 1" msgstr "" -"COPY BINARY no está soportado a la salida estándar o desde la entrada " -"estándar" +"la conversión especifica el argumento 0, pero los argumentos se numeran " +"desde 1" -#: commands/copy.c:446 +#: utils/adt/varlena.c:3899 +msgid "too few arguments for format" +msgstr "muy pocos argumentos para el formato" + +#: utils/adt/varlena.c:3920 #, c-format -msgid "could not write to COPY file: %m" -msgstr "no se pudo escribir archivo COPY: %m" +msgid "unrecognized conversion specifier \"%c\"" +msgstr "espeficiador de conversión no reconocido: «%c»" -#: commands/copy.c:458 -msgid "connection lost during COPY to stdout" -msgstr "se perdió la conexión durante COPY a la salida estándar" +#: utils/adt/varlena.c:3949 +msgid "null values cannot be formatted as an SQL identifier" +msgstr "los valores nulos no pueden ser formateados como un identificador SQL" + +#: utils/adt/like_match.c:104 utils/adt/like_match.c:164 +msgid "LIKE pattern must not end with escape character" +msgstr "el patrón LIKE no debe terminar con un carácter de escape" -#: commands/copy.c:499 +#: utils/adt/tid.c:70 utils/adt/tid.c:78 utils/adt/tid.c:86 #, c-format -msgid "could not read from COPY file: %m" -msgstr "no se pudo leer desde archivo COPY: %m" +msgid "invalid input syntax for type tid: \"%s\"" +msgstr "la sintaxis de entrada no es válida para tipo tid: «%s»" -#: commands/copy.c:515 commands/copy.c:534 commands/copy.c:538 -#: tcop/fastpath.c:291 tcop/postgres.c:348 tcop/postgres.c:371 -msgid "unexpected EOF on client connection" -msgstr "se encontró fin de archivo inesperado en la conexión del cliente" +#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:4251 utils/adt/geo_ops.c:5172 +msgid "too many points requested" +msgstr "se pidieron demasiados puntos" -#: commands/copy.c:550 -#, c-format -msgid "COPY from stdin failed: %s" -msgstr "falló COPY desde la entrada estándar: %s" +#: utils/adt/geo_ops.c:317 +msgid "could not format \"path\" value" +msgstr "no se pudo dar formato a «path»" -#: commands/copy.c:566 +#: utils/adt/geo_ops.c:392 #, 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" +msgid "invalid input syntax for type box: \"%s\"" +msgstr "la sintaxis de entrada no es válida para tipo box: «%s»" -#: commands/copy.c:762 +#: utils/adt/geo_ops.c:956 #, c-format -msgid "COPY format \"%s\" not recognized" -msgstr "el formato de COPY «%s» no es reconocido" +msgid "invalid input syntax for type line: \"%s\"" +msgstr "la sintaxis de entrada no es válida para tipo line: «%s»" -#: commands/copy.c:825 commands/copy.c:839 -#, 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" +#: 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 "el tipo «line» no está implementado" -#: commands/copy.c:845 +#: utils/adt/geo_ops.c:1411 utils/adt/geo_ops.c:1434 #, c-format -msgid "option \"%s\" not recognized" -msgstr "no se reconoce la opción «%s»" +msgid "invalid input syntax for type path: \"%s\"" +msgstr "la sintaxis de entrada no es válida para tipo «path»: «%s»" -#: commands/copy.c:856 -msgid "cannot specify DELIMITER in BINARY mode" -msgstr "no se puede especificar DELIMITER en modo BINARY" +#: utils/adt/geo_ops.c:1473 +msgid "invalid number of points in external \"path\" value" +msgstr "el número de puntos no es válido en el valor «path» externo" -#: commands/copy.c:861 -msgid "cannot specify NULL in BINARY mode" -msgstr "no se puede especificar NULL en modo BINARY" +#: utils/adt/geo_ops.c:1816 +#, c-format +msgid "invalid input syntax for type point: \"%s\"" +msgstr "la sintaxis de entrada no es válida para tipo point: «%s»" -#: commands/copy.c:883 -msgid "COPY delimiter must be a single one-byte character" -msgstr "el delimitador de COPY debe ser un solo carácter de un byte" +#: utils/adt/geo_ops.c:2044 +#, c-format +msgid "invalid input syntax for type lseg: \"%s\"" +msgstr "la sintaxis de entrada no es válida para tipo lseg: «%s»" -#: commands/copy.c:890 -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" +#: utils/adt/geo_ops.c:2648 +msgid "function \"dist_lb\" not implemented" +msgstr "la función «dist_lb» no está implementada" -#: commands/copy.c:896 -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" +#: utils/adt/geo_ops.c:3161 +msgid "function \"close_lb\" not implemented" +msgstr "la función «close_lb» no está implementada" + +#: utils/adt/geo_ops.c:3450 +msgid "cannot create bounding box for empty polygon" +msgstr "no se puede crear una caja de contorno para un polígono vacío" -#: commands/copy.c:913 +#: utils/adt/geo_ops.c:3474 utils/adt/geo_ops.c:3486 #, c-format -msgid "COPY delimiter cannot be \"%s\"" -msgstr "el delimitador de COPY no puede ser «%s»" +msgid "invalid input syntax for type polygon: \"%s\"" +msgstr "la sintaxis de entrada no es válida para tipo polygon: «%s»" -#: commands/copy.c:919 -msgid "COPY HEADER available only in CSV mode" -msgstr "el «header» de COPY está disponible sólo en modo CSV" +#: utils/adt/geo_ops.c:3526 +msgid "invalid number of points in external \"polygon\" value" +msgstr "el número de puntos no es válido en «polygon» externo" -#: commands/copy.c:925 -msgid "COPY quote available only in CSV mode" -msgstr "el «quote» de COPY está disponible sólo en modo CSV" +#: utils/adt/geo_ops.c:4049 +msgid "function \"poly_distance\" not implemented" +msgstr "la función «poly_distance» no está implementada" -#: commands/copy.c:930 -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" +#: utils/adt/geo_ops.c:4363 +msgid "function \"path_center\" not implemented" +msgstr "la función «path_center» no está implementada" -#: commands/copy.c:935 -msgid "COPY delimiter and quote must be different" -msgstr "el delimitador de COPY y la comilla («quote») deben ser diferentes" +#: utils/adt/geo_ops.c:4380 +msgid "open path cannot be converted to polygon" +msgstr "no se puede convertir un camino abierto en polygon" -#: commands/copy.c:941 -msgid "COPY escape available only in CSV mode" -msgstr "escape de COPY disponible sólo en modo CSV" +#: 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 "la sintaxis de entrada no es válida para el tipo circle: «%s»" -#: commands/copy.c:946 -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" +#: utils/adt/geo_ops.c:4602 utils/adt/geo_ops.c:4610 +msgid "could not format \"circle\" value" +msgstr "no se pudo dar formato al valor «circle»" -#: commands/copy.c:952 -msgid "COPY force quote available only in CSV mode" -msgstr "el forzado de comillas de COPY sólo está disponible en modo CSV" +#: utils/adt/geo_ops.c:4637 +msgid "invalid radius in external \"circle\" value" +msgstr "el radio no es válido en el valor «circle» externo" -#: commands/copy.c:956 -msgid "COPY force quote only available using COPY TO" -msgstr "el forzado de comillas de COPY sólo está disponible en COPY TO" +#: utils/adt/geo_ops.c:5158 +msgid "cannot convert circle with radius zero to polygon" +msgstr "no se puede convertir un círculo de radio cero a polygon" -#: commands/copy.c:962 -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" +#: utils/adt/geo_ops.c:5163 +msgid "must request at least 2 points" +msgstr "debe pedir al menos 2 puntos" -#: commands/copy.c:966 -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" +#: utils/adt/geo_ops.c:5207 utils/adt/geo_ops.c:5230 +msgid "cannot convert empty polygon to circle" +msgstr "no se puede convertir polígono vacío a circle" -#: commands/copy.c:972 -msgid "COPY delimiter must not appear in the NULL specification" -msgstr "el delimitador de COPY no debe aparecer en la especificación NULL" +#: utils/adt/varchar.c:48 utils/adt/varbit.c:56 +#, c-format +msgid "length for type %s must be at least 1" +msgstr "el largo para el tipo %s debe ser al menos 1" -#: commands/copy.c:979 -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" +#: utils/adt/varchar.c:52 utils/adt/varbit.c:61 +#, c-format +msgid "length for type %s cannot exceed %d" +msgstr "el largo del tipo %s no puede exceder %d" -#: commands/copy.c:985 -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:986 -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:1032 +#: utils/adt/varchar.c:152 utils/adt/varchar.c:305 #, c-format -msgid "table \"%s\" does not have OIDs" -msgstr "la tabla «%s» no tiene OIDs" - -#: commands/copy.c:1049 -msgid "COPY (SELECT) WITH OIDS is not supported" -msgstr "COPY (SELECT) WITH OIDS no está soportado" - -#: commands/copy.c:1076 -msgid "COPY (SELECT INTO) is not supported" -msgstr "COPY (SELECT INTO) no está soportado" +msgid "value too long for type character(%d)" +msgstr "el valor es demasiado largo para el tipo character(%d)" -#: commands/copy.c:1135 +#: utils/adt/varchar.c:467 utils/adt/varchar.c:588 #, c-format -msgid "FORCE QUOTE column \"%s\" not referenced by COPY" -msgstr "la columna con comillas forzadas «%s» no es referenciada por COPY" +msgid "value too long for type character varying(%d)" +msgstr "el valor es demasiado largo para el tipo character varying(%d)" -#: commands/copy.c:1157 +#: 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 "FORCE NOT NULL column \"%s\" not referenced by COPY" -msgstr "la columna FORCE NOT NULL «%s» no fue mencionada en COPY" +msgid "invalid input syntax for integer: \"%s\"" +msgstr "la sintaxis de entrada no es válida para integer: «%s»" -#: commands/copy.c:1235 +#: utils/adt/int8.c:114 #, c-format -msgid "cannot copy from view \"%s\"" -msgstr "no se puede copiar desde la vista «%s»" - -#: commands/copy.c:1237 -msgid "Try the COPY (SELECT ...) TO variant." -msgstr "Intente la forma COPY (SELECT ...) TO." +msgid "value \"%s\" is out of range for type bigint" +msgstr "el valor «%s» está fuera de rango para el tipo bigint" -#: commands/copy.c:1241 -#, c-format -msgid "cannot copy from sequence \"%s\"" -msgstr "no se puede copiar desde la secuencia «%s»" +#: 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/varbit.c:1583 utils/adt/numeric.c:2306 +msgid "bigint out of range" +msgstr "bigint está fuera de rango" -#: commands/copy.c:1246 -#, 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" +#: utils/adt/int8.c:1366 +msgid "OID out of range" +msgstr "OID está fuera de rango" -#: commands/copy.c:1270 -msgid "relative path not allowed for COPY to file" -msgstr "no se permiten rutas relativas para COPY hacia un archivo" +#: utils/adt/float.c:54 +msgid "value out of range: overflow" +msgstr "valor fuera de rango: desbordamiento" -#: commands/copy.c:1279 -#, c-format -msgid "could not open file \"%s\" for writing: %m" -msgstr "no se pudo abrir el archivo «%s» para escritura: %m" +#: utils/adt/float.c:59 +msgid "value out of range: underflow" +msgstr "valor fuera de rango: desbordamiento por abajo" -#: commands/copy.c:1286 commands/copy.c:1781 +#: utils/adt/float.c:206 utils/adt/float.c:270 utils/adt/float.c:326 #, c-format -msgid "\"%s\" is a directory" -msgstr "«%s» es un directorio" +msgid "invalid input syntax for type real: \"%s\"" +msgstr "la sintaxis de entrada no es válida para tipo real: «%s»" -#: commands/copy.c:1572 +#: utils/adt/float.c:265 #, c-format -msgid "COPY %s, line %d, column %s" -msgstr "COPY %s, línea %d, columna %s" +msgid "\"%s\" is out of range for type real" +msgstr "«%s» está fuera de rango para el tipo real" -#: commands/copy.c:1576 commands/copy.c:1621 +#: utils/adt/float.c:427 utils/adt/float.c:491 utils/adt/float.c:547 +#: utils/adt/numeric.c:3969 utils/adt/numeric.c:3995 #, c-format -msgid "COPY %s, line %d" -msgstr "COPY %s, línea %d" +msgid "invalid input syntax for type double precision: \"%s\"" +msgstr "la sintaxis de entrada no es válida para tipo double precision: «%s»" -#: commands/copy.c:1587 +#: utils/adt/float.c:486 #, c-format -msgid "COPY %s, line %d, column %s: \"%s\"" -msgstr "COPY %s, línea %d, columna %s: «%s»" +msgid "\"%s\" is out of range for type double precision" +msgstr "«%s» está fuera de rango para el tipo double precision" -#: commands/copy.c:1595 -#, c-format -msgid "COPY %s, line %d, column %s: null input" -msgstr "COPY %s, línea %d, columna %s: entrada nula" +#: utils/adt/float.c:1359 utils/adt/numeric.c:5183 +msgid "cannot take square root of a negative number" +msgstr "no se puede calcular la raíz cuadrada un de número negativo" -#: commands/copy.c:1607 -#, c-format -msgid "COPY %s, line %d: \"%s\"" -msgstr "COPY %s, línea %d: «%s»" +#: utils/adt/float.c:1401 utils/adt/numeric.c:2166 +msgid "zero raised to a negative power is undefined" +msgstr "cero elevado a una potencia negativa es indefinido" -#: commands/copy.c:1709 -#, c-format -msgid "cannot copy to view \"%s\"" -msgstr "no se puede copiar hacia la vista «%s»" +#: utils/adt/float.c:1405 utils/adt/numeric.c:2172 +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" -#: commands/copy.c:1714 -#, c-format -msgid "cannot copy to sequence \"%s\"" -msgstr "no se puede copiar hacia la secuencia «%s»" +#: utils/adt/float.c:1471 utils/adt/float.c:1501 utils/adt/numeric.c:5401 +msgid "cannot take logarithm of zero" +msgstr "no se puede calcular logaritmo de cero" -#: commands/copy.c:1719 -#, 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" +#: utils/adt/float.c:1475 utils/adt/float.c:1505 utils/adt/numeric.c:5405 +msgid "cannot take logarithm of a negative number" +msgstr "no se puede calcular logaritmo de un número negativo" -#: commands/copy.c:1774 utils/adt/genfile.c:106 -#, c-format -msgid "could not open file \"%s\" for reading: %m" -msgstr "no se pudo abrir archivo «%s» para lectura: %m" +#: utils/adt/float.c:1532 utils/adt/float.c:1553 utils/adt/float.c:1574 +#: utils/adt/float.c:1596 utils/adt/float.c:1617 utils/adt/float.c:1638 +#: utils/adt/float.c:1660 utils/adt/float.c:1681 +msgid "input is out of range" +msgstr "la entrada está fuera de rango" -#: commands/copy.c:1887 -msgid "COPY file signature not recognized" -msgstr "el identificador del archivo COPY no es reconocido" +#: utils/adt/float.c:2743 utils/adt/numeric.c:1171 +msgid "count must be greater than zero" +msgstr "count debe ser mayor que cero" -#: commands/copy.c:1892 -msgid "invalid COPY file header (missing flags)" -msgstr "el encabezado del archivo COPY no es válido (faltan campos)" +#: utils/adt/float.c:2748 utils/adt/numeric.c:1178 +msgid "operand, lower bound and upper bound cannot be NaN" +msgstr "el operando, límite inferior y límite superior no pueden ser NaN" -#: commands/copy.c:1898 -msgid "unrecognized critical flags in COPY file header" -msgstr "valores requeridos no reconocidos en encabezado de COPY" +#: utils/adt/float.c:2754 +msgid "lower and upper bounds must be finite" +msgstr "los límites inferior y superior deben ser finitos" -#: commands/copy.c:1904 -msgid "invalid COPY file header (missing length)" -msgstr "el encabezado del archivo COPY no es válido (falta el largo)" +#: utils/adt/float.c:2792 utils/adt/numeric.c:1191 +msgid "lower bound cannot equal upper bound" +msgstr "el límite superior no puede ser igual al límite inferior" -#: commands/copy.c:1911 -msgid "invalid COPY file header (wrong length)" -msgstr "el encabezado del archivo COPY no es válido (largo incorrecto)" +#: utils/adt/formatting.c:492 +msgid "invalid format specification for an interval value" +msgstr "especificación de formato no válida para un valor de interval" -#: commands/copy.c:2002 -msgid "missing data for OID column" -msgstr "faltan datos para la columna OID" +#: utils/adt/formatting.c:493 +msgid "Intervals are not tied to specific calendar dates." +msgstr "" +"Los Interval no están ... a valores determinados de fechas de calendario." -#: commands/copy.c:2008 -msgid "null OID in COPY data" -msgstr "OID nulo en datos COPY" +#: utils/adt/formatting.c:1060 +msgid "\"EEEE\" must be the last pattern used" +msgstr "«EEEE» debe ser el último patrón usado" -#: commands/copy.c:2018 commands/copy.c:2090 -msgid "invalid OID in COPY data" -msgstr "OID no válido en datos COPY" +#: utils/adt/formatting.c:1068 +msgid "\"9\" must be ahead of \"PR\"" +msgstr "«9» debe ir antes de «PR»" -#: commands/copy.c:2033 -#, c-format -msgid "missing data for column \"%s\"" -msgstr "faltan datos en la columna «%s»" +#: utils/adt/formatting.c:1084 +msgid "\"0\" must be ahead of \"PR\"" +msgstr "«0» debe ir antes de «PR»" -#: commands/copy.c:2074 -#, c-format -msgid "row field count is %d, expected %d" -msgstr "la cantidad de registros es %d, pero se esperaban %d" +#: utils/adt/formatting.c:1110 +msgid "multiple decimal points" +msgstr "hay múltiples puntos decimales" -#: commands/copy.c:2217 utils/misc/guc.c:7101 utils/init/miscinit.c:1014 -#, c-format -msgid "could not read from file \"%s\": %m" -msgstr "no se pudo leer el archivo «%s»: %m" +#: utils/adt/formatting.c:1114 utils/adt/formatting.c:1197 +msgid "cannot use \"V\" and decimal point together" +msgstr "no se puede usar «V» y un punto decimal simultáneamente" -#: commands/copy.c:2494 commands/copy.c:2511 -msgid "literal carriage return found in data" -msgstr "se encontró un retorno de carro literal en los datos" +#: utils/adt/formatting.c:1126 +msgid "cannot use \"S\" twice" +msgstr "no se puede usar «S» dos veces" -#: commands/copy.c:2495 commands/copy.c:2512 -msgid "unquoted carriage return found in data" -msgstr "se encontró un retorno de carro fuera de comillas en los datos" +#: utils/adt/formatting.c:1130 +msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" +msgstr "no se puede usar «S» y «PL»/«MI»/«SG»/«PR» simultáneamente" -#: commands/copy.c:2497 commands/copy.c:2514 -msgid "Use \"\\r\" to represent carriage return." -msgstr "Use «\\r» para representar el retorno de carro." +#: utils/adt/formatting.c:1150 +msgid "cannot use \"S\" and \"MI\" together" +msgstr "no se puede usar «S» y «MI» simultáneamente" -#: commands/copy.c:2498 commands/copy.c:2515 -msgid "Use quoted CSV field to represent carriage return." -msgstr "Use un campo CSV entre comillas para representar el retorno de carro." +#: utils/adt/formatting.c:1160 +msgid "cannot use \"S\" and \"PL\" together" +msgstr "no se puede usar «S» y «PL» simultáneamente" -#: commands/copy.c:2527 -msgid "literal newline found in data" -msgstr "se encontró un salto de línea literal en los datos" +#: utils/adt/formatting.c:1170 +msgid "cannot use \"S\" and \"SG\" together" +msgstr "no se puede usar «S» y «SG» simultáneamente" -#: commands/copy.c:2528 -msgid "unquoted newline found in data" -msgstr "se encontró un salto de línea fuera de comillas en los datos" +#: utils/adt/formatting.c:1179 +msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" +msgstr "no se puede usar «PR» y «S»/«PL»/«MI»/«SG» simultáneamente" -#: commands/copy.c:2530 -msgid "Use \"\\n\" to represent newline." -msgstr "Use «\\n» para representar un salto de línea." +#: utils/adt/formatting.c:1205 +msgid "cannot use \"EEEE\" twice" +msgstr "no se puede usar «EEEE» dos veces" -#: commands/copy.c:2531 -msgid "Use quoted CSV field to represent newline." -msgstr "Use un campo CSV entre comillas para representar un salto de línea." +#: utils/adt/formatting.c:1211 +msgid "\"EEEE\" is incompatible with other formats" +msgstr "«EEEE» es incompatible con otros formatos" -#: commands/copy.c:2577 commands/copy.c:2613 -msgid "end-of-copy marker does not match previous newline style" +#: utils/adt/formatting.c:1212 +msgid "" +"\"EEEE\" may only be used together with digit and decimal point patterns." msgstr "" -"el marcador fin-de-copy no coincide con el estilo previo de salto de línea" +"«EEEE» sólo puede ser usado en conjunción con patrones de dígitos y puntos " +"decimales." -#: commands/copy.c:2586 commands/copy.c:2602 -msgid "end-of-copy marker corrupt" -msgstr "marcador fin-de-copy corrupto" +#: utils/adt/formatting.c:1412 +#, c-format +msgid "\"%s\" is not a number" +msgstr "«%s» no es un número" -#: commands/copy.c:2729 commands/copy.c:2764 commands/copy.c:2944 -#: commands/copy.c:2979 -msgid "extra data after last expected column" -msgstr "datos extra después de la última columna esperada" +#: utils/adt/formatting.c:1514 utils/adt/formatting.c:1564 +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" +"()" -#: commands/copy.c:3026 -msgid "unterminated CSV quoted field" -msgstr "un valor entre comillas está inconcluso" +#: utils/adt/formatting.c:1630 utils/adt/formatting.c:1680 +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" +"()" -#: commands/copy.c:3103 commands/copy.c:3122 -msgid "unexpected EOF in COPY data" -msgstr "EOF inesperado en datos de COPY" +#: utils/adt/formatting.c:1747 utils/adt/formatting.c:1809 +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()" -#: commands/copy.c:3112 -msgid "invalid field size" -msgstr "el tamaño de campo no es válido" +#: utils/adt/formatting.c:2086 +msgid "invalid combination of date conventions" +msgstr "combinacion invalida de convenciones de fecha" -#: commands/copy.c:3135 -msgid "incorrect binary data format" -msgstr "el formato de datos binarios es incorrecto" +#: utils/adt/formatting.c:2087 +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" -#: commands/copy.c:3446 commands/indexcmds.c:908 commands/tablecmds.c:1260 -#: commands/tablecmds.c:2065 parser/parse_expr.c:758 -#: utils/adt/tsvector_op.c:1347 +#: utils/adt/formatting.c:2104 #, c-format -msgid "column \"%s\" does not exist" -msgstr "no existe la columna «%s»" +msgid "conflicting values for \"%s\" field in formatting string" +msgstr "valores en conflicto para le campo \"%s\" en un string formateado" + +#: utils/adt/formatting.c:2106 +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" -#: commands/copy.c:3453 commands/tablecmds.c:1286 commands/trigger.c:536 -#: parser/parse_target.c:824 parser/parse_target.c:835 +#: utils/adt/formatting.c:2167 #, c-format -msgid "column \"%s\" specified more than once" -msgstr "la columna «%s» fue especificada más de una vez" +msgid "source string too short for \"%s\" formatting field" +msgstr "cadena de texto fuente muy corta para campo formateado \"%s\" " -#: commands/dbcommands.c:201 -msgid "LOCATION is not supported anymore" -msgstr "LOCATION ya no está soportado" +#: utils/adt/formatting.c:2169 +#, c-format +msgid "Field requires %d characters, but only %d remain." +msgstr "El campo requiere %d caractéres, pero solo quedan %d." -#: commands/dbcommands.c:202 -msgid "Consider using tablespaces instead." -msgstr "Considere usar tablespaces." +#: utils/adt/formatting.c:2172 utils/adt/formatting.c:2186 +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\" " -#: commands/dbcommands.c:225 utils/adt/ascii.c:144 +#: utils/adt/formatting.c:2182 utils/adt/formatting.c:2195 +#: utils/adt/formatting.c:2325 #, c-format -msgid "%d is not a valid encoding code" -msgstr "%d no es un código válido de codificación" +msgid "invalid value \"%s\" for \"%s\"" +msgstr "el valor «%s» no es válido para «%s»" -#: commands/dbcommands.c:235 utils/adt/ascii.c:126 +#: utils/adt/formatting.c:2184 #, c-format -msgid "%s is not a valid encoding name" -msgstr "%s no es un nombre válido de codificación" +msgid "Field requires %d characters, but only %d could be parsed." +msgstr "El campo requiere %d caracteres, pero sólo %d pudieron ser analizados." -#: commands/dbcommands.c:253 commands/dbcommands.c:1347 commands/user.c:255 -#: commands/user.c:562 -#, c-format -msgid "invalid connection limit: %d" -msgstr "límite de conexión no válido: %d" - -#: commands/dbcommands.c:272 -msgid "permission denied to create database" -msgstr "se ha denegado el permiso para crear la base de datos" - -#: commands/dbcommands.c:295 -#, c-format -msgid "template database \"%s\" does not exist" -msgstr "no existe la base de datos patrón «%s»" +#: utils/adt/formatting.c:2197 +msgid "Value must be an integer." +msgstr "El valor debe ser un entero." -#: commands/dbcommands.c:307 +#: utils/adt/formatting.c:2202 #, c-format -msgid "permission denied to copy database \"%s\"" -msgstr "se ha denegado el permiso para copiar la base de datos «%s»" +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" -#: commands/dbcommands.c:323 +#: utils/adt/formatting.c:2204 #, c-format -msgid "invalid server encoding %d" -msgstr "la codificación de servidor %d no es válida" +msgid "Value must be in the range %d to %d." +msgstr "EL valor debe estar en el rango de %d a %d." -#: commands/dbcommands.c:329 commands/dbcommands.c:333 -#, c-format -msgid "invalid locale name %s" -msgstr "el nombre de configuración regional «%s» no es válido" +#: utils/adt/formatting.c:2327 +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." -#: commands/dbcommands.c:369 commands/dbcommands.c:384 -#, c-format -msgid "encoding %s does not match locale %s" -msgstr "la codificación %s no coincide con la configuración regional %s" +#: utils/adt/formatting.c:2876 +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" -#: commands/dbcommands.c:372 -#, c-format -msgid "The chosen LC_CTYPE setting requires encoding %s." -msgstr "La configuración regional LC_CTYPE requiere la codificación %s." +#: utils/adt/formatting.c:2980 +msgid "invalid input string for \"Y,YYY\"" +msgstr "cadena de entrada no válida para «Y,YYY»" -#: commands/dbcommands.c:387 +#: utils/adt/formatting.c:3371 utils/adt/date.c:167 #, c-format -msgid "The chosen LC_COLLATE setting requires encoding %s." -msgstr "La configuración regional LC_COLLATE requiere la codificación %s." +msgid "date out of range: \"%s\"" +msgstr "fecha fuera de rango: «%s»" -#: commands/dbcommands.c:405 +#: utils/adt/formatting.c:3503 #, c-format -msgid "" -"new encoding (%s) is incompatible with the encoding of the template database " -"(%s)" -msgstr "" -"la nueva codificación (%s) es incompatible con la codificación de la base de " -"datos patrón (%s)" +msgid "hour \"%d\" is invalid for the 12-hour clock" +msgstr "la hora «%d» no es válida para el reloj de 12 horas" -#: commands/dbcommands.c:408 -msgid "" -"Use the same encoding as in the template database, or use template0 as " -"template." -msgstr "" -"Use la misma codificación que en la base de datos patrón, o bien use " -"template0 como patrón." +#: utils/adt/formatting.c:3505 +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." -#: commands/dbcommands.c:413 +#: utils/adt/formatting.c:3543 #, c-format -msgid "" -"new collation (%s) is incompatible with the collation of the template " -"database (%s)" -msgstr "" -"la nueva «collation» (%s) es incompatible con la «collation» de la base de " -"datos patrón (%s)" - -#: commands/dbcommands.c:415 -msgid "" -"Use the same collation as in the template database, or use template0 as " -"template." -msgstr "" -"Use la misma «collation» que en la base de datos patrón, o bien use " -"template0 como patrón." +msgid "inconsistent use of year %04d and \"BC\"" +msgstr "el uso del año %04d y «BC» es inconsistente" -#: commands/dbcommands.c:420 -#, c-format -msgid "" -"new LC_CTYPE (%s) is incompatible with the LC_CTYPE of the template database " -"(%s)" -msgstr "" -"el nuevo LC_CTYPE (%s) es incompatible con el LC_CTYPE de la base de datos " -"patrón (%s)" +#: utils/adt/formatting.c:3590 +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" -#: commands/dbcommands.c:422 -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." +#: utils/adt/formatting.c:4452 +msgid "\"EEEE\" not supported for input" +msgstr "«EEEE» no está soportado en la entrada" -#: commands/dbcommands.c:449 commands/dbcommands.c:1054 -msgid "pg_global cannot be used as default tablespace" -msgstr "no puede usarse pg_global como tablespace por omisión" +#: utils/adt/formatting.c:4464 +msgid "\"RN\" not supported for input" +msgstr "«RN» no está soportado en la entrada" -#: commands/dbcommands.c:475 +#: utils/adt/date.c:71 #, c-format -msgid "cannot assign new default tablespace \"%s\"" -msgstr "no se puede asignar el nuevo tablespace por omisión «%s»" +msgid "TIME(%d)%s precision must not be negative" +msgstr "la precisión de TIME(%d)%s no debe ser negativa" -#: commands/dbcommands.c:477 +#: utils/adt/date.c:77 #, c-format -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." +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" -#: commands/dbcommands.c:497 commands/dbcommands.c:925 -#, c-format -msgid "database \"%s\" already exists" -msgstr "la base de datos «%s» ya existe" +#: 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 "valor de hora/fecha «current» ya no está soportado" -#: commands/dbcommands.c:511 -#, c-format -msgid "source database \"%s\" is being accessed by other users" -msgstr "" -"la base de datos de origen «%s» está siendo utilizada por otros usuarios" +#: utils/adt/date.c:359 +msgid "cannot subtract infinite dates" +msgstr "no se pueden restar fechas infinitas" -#: commands/dbcommands.c:767 -#, c-format -msgid "database \"%s\" does not exist, skipping" -msgstr "no existe la base de datos «%s», ignorando" +#: utils/adt/date.c:416 utils/adt/date.c:453 +msgid "date out of range for timestamp" +msgstr "fecha fuera de rango para timestamp" -#: commands/dbcommands.c:788 -msgid "cannot drop a template database" -msgstr "no se puede borrar una base de datos patrón" +#: utils/adt/date.c:986 +msgid "cannot convert reserved abstime value to date" +msgstr "no se puede convertir un valor reservado de abstime a date" -#: commands/dbcommands.c:794 -msgid "cannot drop the currently open database" -msgstr "no se puede eliminar la base de datos activa" +#: 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 "hora fuera de rango" -#: commands/dbcommands.c:805 commands/dbcommands.c:947 -#: commands/dbcommands.c:1076 +#: utils/adt/date.c:1793 utils/adt/date.c:1810 #, c-format -msgid "database \"%s\" is being accessed by other users" -msgstr "la base de datos «%s» está siendo utilizada por otros usuarios" +msgid "\"time\" units \"%s\" not recognized" +msgstr "las unidades de «time» «%s» no son reconocidas" -#: commands/dbcommands.c:916 -msgid "permission denied to rename database" -msgstr "se ha denegado el permiso para cambiar el nombre a la base de datos" +#: utils/adt/date.c:1931 +msgid "time zone displacement out of range" +msgstr "desplazamiento de huso horario fuera de rango" -#: commands/dbcommands.c:936 -msgid "current database cannot be renamed" -msgstr "no se puede cambiar el nombre de la base de datos activa" +#: utils/adt/date.c:2556 utils/adt/date.c:2573 +#, c-format +msgid "\"time with time zone\" units \"%s\" not recognized" +msgstr "las unidades de «timestamp with time zone» «%s» no son reconocidas" -#: commands/dbcommands.c:1028 -msgid "cannot change the tablespace of the currently open database" -msgstr "no se puede cambiar el tablespace de la base de datos activa" +#: utils/adt/date.c:2671 +#, c-format +msgid "\"interval\" time zone \"%s\" not valid" +msgstr "el huso horario «%s» de «interval» no es válido" -#: commands/dbcommands.c:1116 +#: utils/adt/varbit.c:166 utils/adt/varbit.c:309 utils/adt/varbit.c:366 #, 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»" +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)" -#: commands/dbcommands.c:1118 -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." +#: utils/adt/varbit.c:188 utils/adt/varbit.c:490 +#, c-format +msgid "\"%c\" is not a valid binary digit" +msgstr "«%c» no es un dígito binario válido" -#: commands/dbcommands.c:1246 commands/dbcommands.c:1719 -#: commands/dbcommands.c:1913 commands/dbcommands.c:1961 -#: commands/tablespace.c:579 +#: utils/adt/varbit.c:213 utils/adt/varbit.c:515 #, 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\"" +msgid "\"%c\" is not a valid hexadecimal digit" +msgstr "«%c» no es un dígito hexadecimal válido" -#: commands/dbcommands.c:1495 -msgid "permission denied to change owner of database" -msgstr "se ha denegado el permiso para cambiar el dueño de la base de datos" +#: utils/adt/varbit.c:300 utils/adt/varbit.c:603 +msgid "invalid length in external bit string" +msgstr "el largo largo no es válido en cadena de bits externa" -#: commands/dbcommands.c:1807 +#: utils/adt/varbit.c:468 utils/adt/varbit.c:612 utils/adt/varbit.c:674 #, 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." +msgid "bit string too long for type bit varying(%d)" +msgstr "la cadena de bits es demasiado larga para el tipo bit varying(%d)" -#: commands/dbcommands.c:1810 -#, c-format -msgid "There are %d other session(s) using the database." -msgstr "Hay otras %d sesiones usando la base de datos." +#: utils/adt/varbit.c:1164 +msgid "cannot AND bit strings of different sizes" +msgstr "no se puede hacer AND entre cadenas de bits de distintos tamaños" -#: commands/dbcommands.c:1813 -#, c-format -msgid "There are %d prepared transaction(s) using the database." -msgstr "Hay otras %d transacciones preparadas usando la base de datos." +#: utils/adt/varbit.c:1206 +msgid "cannot OR bit strings of different sizes" +msgstr "no se puede hacer OR entre cadenas de bits de distintos tamaños" -#: 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 requiere un parámetro" +#: utils/adt/varbit.c:1253 +msgid "cannot XOR bit strings of different sizes" +msgstr "no se puede hacer XOR entre cadenas de bits de distintos tamaños" -#: commands/define.c:108 commands/define.c:119 commands/define.c:189 -#: commands/define.c:207 +#: utils/adt/varbit.c:1731 utils/adt/varbit.c:1789 #, c-format -msgid "%s requires a numeric value" -msgstr "%s requiere un valor numérico" +msgid "bit index %d out of valid range (0..%d)" +msgstr "el índice de bit %d está fuera del rango válido (0..%d)" -#: commands/define.c:175 +#: utils/adt/tsvector.c:215 #, c-format -msgid "%s requires a Boolean value" -msgstr "«%s» requiere un valor lógico (booleano)" +msgid "word is too long (%ld bytes, max %ld bytes)" +msgstr "la palabra es demasiado larga (%ld, máximo %ld bytes)" -#: commands/define.c:236 +#: utils/adt/tsvector.c:222 #, c-format -msgid "argument of %s must be a name" -msgstr "el argumento de %s debe ser un nombre" +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)" -#: commands/define.c:266 +#: utils/adt/tsvector.c:272 utils/adt/tsvector_op.c:530 tsearch/to_tsany.c:165 #, c-format -msgid "argument of %s must be a type name" -msgstr "el argumento de %s debe ser un nombre de tipo" +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)" -#: commands/define.c:291 +#: utils/adt/ascii.c:75 #, c-format -msgid "%s requires an integer value" -msgstr "%s requiere valor entero" +msgid "encoding conversion from %s to ASCII not supported" +msgstr "la conversión de codificación de %s a ASCII no está soportada" -#: commands/define.c:312 +#: utils/adt/ascii.c:126 commands/dbcommands.c:236 #, c-format -msgid "invalid argument for %s: \"%s\"" -msgstr "argumento no válido para %s: «%s»" +msgid "%s is not a valid encoding name" +msgstr "%s no es un nombre válido de codificación" -#: commands/explain.c:149 +#: utils/adt/ascii.c:144 commands/dbcommands.c:226 #, c-format -msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\"" -msgstr "valor no reconocido para la opción de EXPLAIN «%s»: «%s»" +msgid "%d is not a valid encoding code" +msgstr "%d no es un código válido de codificación" -#: commands/explain.c:155 +#: utils/adt/dbsize.c:65 utils/adt/dbsize.c:211 utils/adt/dbsize.c:279 +#: utils/adt/genfile.c:107 utils/adt/genfile.c:279 access/transam/xlog.c:2932 +#: access/transam/xlog.c:3097 access/transam/xlog.c:9154 +#: access/transam/xlog.c:9330 storage/file/copydir.c:86 +#: storage/file/copydir.c:125 #, c-format -msgid "unrecognized EXPLAIN option \"%s\"" -msgstr "opción de EXPLAIN no reconocida «%s»" - -#: commands/explain.c:162 -msgid "EXPLAIN option BUFFERS requires ANALYZE" -msgstr "la opción BUFFERS de EXPLAIN requiere ANALYZE" +msgid "could not stat file \"%s\": %m" +msgstr "no se pudo verificar archivo «%s»: %m" -#: commands/foreigncmds.c:132 commands/foreigncmds.c:141 +#: utils/adt/dbsize.c:105 utils/adt/dbsize.c:189 #, c-format -msgid "option \"%s\" not found" -msgstr "opción «%s» no encontrada" +msgid "could not open tablespace directory \"%s\": %m" +msgstr "no se pudo abrir el directorio de tablespace «%s»: %m" -#: commands/foreigncmds.c:151 +#: utils/adt/dbsize.c:127 catalog/aclchk.c:3492 catalog/aclchk.c:4609 #, c-format -msgid "option \"%s\" provided more than once" -msgstr "la opción «%s» fue especificada más de una vez" +msgid "database with OID %u does not exist" +msgstr "no existe la base de datos con OID %u" -#: commands/foreigncmds.c:209 commands/foreigncmds.c:217 +#: utils/adt/cash.c:237 #, 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:211 -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." +msgid "invalid input syntax for type money: \"%s\"" +msgstr "la sintaxis de entrada no es válida para tipo money: «%s»" -#: commands/foreigncmds.c:219 -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." +#: utils/adt/tsrank.c:404 +msgid "array of weight must be one-dimensional" +msgstr "el array de pesos debe ser unidimensional" -#: commands/foreigncmds.c:228 commands/foreigncmds.c:452 -#: commands/foreigncmds.c:553 foreign/foreign.c:90 -#, c-format -msgid "foreign-data wrapper \"%s\" does not exist" -msgstr "no existe el conector de datos externos «%s»" +#: utils/adt/tsrank.c:409 +msgid "array of weight is too short" +msgstr "el array de pesos es muy corto" -#: commands/foreigncmds.c:270 commands/foreigncmds.c:723 -#: commands/foreigncmds.c:813 commands/foreigncmds.c:1089 -#: foreign/foreign.c:179 -#, c-format -msgid "server \"%s\" does not exist" -msgstr "no existe el servidor «%s»" +#: utils/adt/tsrank.c:414 +msgid "array of weight must not contain nulls" +msgstr "los arrays de pesos no deben contener valores nulos" -#: commands/foreigncmds.c:347 -#, 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»" +#: utils/adt/tsrank.c:423 utils/adt/tsrank.c:749 +msgid "weight out of range" +msgstr "el peso está fuera de rango" -#: commands/foreigncmds.c:349 -msgid "Must be superuser to create a foreign-data wrapper." -msgstr "Debe ser superusuario para crear un conector de datos externos." +#: utils/adt/name.c:91 utils/adt/acl.c:166 +msgid "identifier too long" +msgstr "el identificador es demasiado largo" -#: commands/foreigncmds.c:360 +#: utils/adt/name.c:92 utils/adt/acl.c:167 #, c-format -msgid "foreign-data wrapper \"%s\" already exists" -msgstr "el conector de datos externos «%s» ya existe" +msgid "Identifier must be less than %d characters." +msgstr "El identificador debe ser menor a %d caracteres." -#: commands/foreigncmds.c:442 +#. translator: first %s is inet or cidr +#: utils/adt/network.c:107 utils/adt/datetime.c:3564 #, c-format -msgid "permission denied to alter foreign-data wrapper \"%s\"" -msgstr "permiso denegado para cambiar el conector de datos externos «%s»" +msgid "invalid input syntax for type %s: \"%s\"" +msgstr "la sintaxis de entrada no es válida para tipo %s: «%s»" -#: commands/foreigncmds.c:444 -msgid "Must be superuser to alter a foreign-data wrapper." -msgstr "Debe ser superusuario para alterar un conector de datos externos." +#: utils/adt/network.c:118 +#, c-format +msgid "invalid cidr value: \"%s\"" +msgstr "el formato de cidr no es válido: «%s»" -#: commands/foreigncmds.c:472 -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" +#: utils/adt/network.c:119 utils/adt/network.c:249 +msgid "Value has bits set to right of mask." +msgstr "El valor tiene bits a la derecha de la máscara." -#: commands/foreigncmds.c:544 +#: utils/adt/network.c:160 utils/adt/network.c:614 utils/adt/network.c:639 +#: utils/adt/network.c:664 #, c-format -msgid "permission denied to drop foreign-data wrapper \"%s\"" -msgstr "" -"se ha denegado el permiso para eliminar el conector de datos externos «%s»" - -#: commands/foreigncmds.c:546 -msgid "Must be superuser to drop a foreign-data wrapper." -msgstr "Debe ser superusuario para eliminar un conector de datos externos." +msgid "could not format inet value: %m" +msgstr "no se pudo dar formato al valor inet: %m" -#: commands/foreigncmds.c:558 +#. translator: %s is inet or cidr +#: utils/adt/network.c:217 #, c-format -msgid "foreign-data wrapper \"%s\" does not exist, skipping" -msgstr "no existe el conector de datos externos «%s», ignorando" +msgid "invalid address family in external \"%s\" value" +msgstr "la familia de la dirección no es válida en valor «%s» externo" -#: commands/foreigncmds.c:625 +#. translator: %s is inet or cidr +#: utils/adt/network.c:224 #, c-format -msgid "server \"%s\" already exists" -msgstr "el servidor «%s» ya existe" +msgid "invalid bits in external \"%s\" value" +msgstr "bits no válidos en el valor «%s» externo" -#: commands/foreigncmds.c:817 +#. translator: %s is inet or cidr +#: utils/adt/network.c:233 #, c-format -msgid "server \"%s\" does not exist, skipping" -msgstr "el servidor «%s» no existe, ignorando" +msgid "invalid length in external \"%s\" value" +msgstr "largo no válido en valor «%s» externo" + +#: utils/adt/network.c:248 +msgid "invalid external \"cidr\" value" +msgstr "el valor externo «cidr» no es válido" -#: commands/foreigncmds.c:920 +#: utils/adt/network.c:370 utils/adt/network.c:397 #, c-format -msgid "user mapping \"%s\" already exists for server %s" -msgstr "ya existe un mapeo para el usuario «%s» en el servidor %s" +msgid "invalid mask length: %d" +msgstr "el largo de el máscara no es válido: %d" -#: commands/foreigncmds.c:998 commands/foreigncmds.c:1105 +#: utils/adt/network.c:682 #, c-format -msgid "user mapping \"%s\" does not exist for the server" -msgstr "no existe el mapeo para el usuario «%s» para el servidor" +msgid "could not format cidr value: %m" +msgstr "no se pudo dar formato al valor cidr: %m" -#: commands/foreigncmds.c:1092 -msgid "server does not exist, skipping" -msgstr "el servidor no existe, ignorando" +#: utils/adt/network.c:1255 +msgid "cannot AND inet values of different sizes" +msgstr "no se puede hacer AND entre valores inet de distintos tamaños" -#: commands/foreigncmds.c:1110 -#, 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" +#: utils/adt/network.c:1287 +msgid "cannot OR inet values of different sizes" +msgstr "no se puede hacer OR entre valor inet de distintos tamaños" -#: 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" +#: utils/adt/network.c:1348 utils/adt/network.c:1424 +msgid "result is out of range" +msgstr "el resultado está fuera de rango" + +#: utils/adt/network.c:1389 +msgid "cannot subtract inet values of different sizes" +msgstr "no se puede restar valores inet de distintos tamaños" -#: commands/functioncmds.c:103 +#: utils/adt/mac.c:65 #, c-format -msgid "return type %s is only a shell" -msgstr "el tipo de retorno %s está inconcluso" +msgid "invalid input syntax for type macaddr: \"%s\"" +msgstr "la sintaxis de entrada no es válida para tipo macaddr: «%s»" -#: commands/functioncmds.c:126 commands/tablecmds.c:216 -#: commands/typecmds.c:650 commands/typecmds.c:2572 parser/parse_func.c:1485 -#: parser/parse_type.c:196 utils/adt/regproc.c:973 +#: utils/adt/mac.c:72 #, c-format -msgid "type \"%s\" does not exist" -msgstr "no existe el tipo «%s»" +msgid "invalid octet value in \"macaddr\" value: \"%s\"" +msgstr "el valor de octeto no es válido en «macaddr»: «%s»" -#: commands/functioncmds.c:132 parser/parse_type.c:261 +#: utils/adt/domains.c:80 #, 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»" +msgid "type %s is not a domain" +msgstr "tipo «%s» no es un dominio" -#: commands/functioncmds.c:138 +#: utils/adt/domains.c:128 executor/execQual.c:3872 #, c-format -msgid "type \"%s\" is not yet defined" -msgstr "el tipo «%s» no ha sido definido aún" +msgid "domain %s does not allow null values" +msgstr "el dominio %s no permite valores null" -#: commands/functioncmds.c:139 -msgid "Creating a shell type definition." -msgstr "Creando una definición de tipo inconclusa." +#: utils/adt/domains.c:164 executor/execQual.c:3901 +#, c-format +msgid "value for domain %s violates check constraint \"%s\"" +msgstr "el valor para el dominio %s viola la restricción check «%s»" -#: commands/functioncmds.c:218 +#: utils/adt/ruleutils.c:1580 utils/adt/acl.c:2772 commands/tablecmds.c:4524 +#: commands/tablecmds.c:4616 commands/tablecmds.c:4663 +#: commands/tablecmds.c:4759 commands/tablecmds.c:4803 +#: commands/tablecmds.c:4882 commands/tablecmds.c:4966 +#: commands/tablecmds.c:6619 commands/tablecmds.c:6828 commands/analyze.c:343 +#: commands/sequence.c:1443 commands/copy.c:3787 commands/trigger.c:592 +#: catalog/aclchk.c:1427 catalog/objectaddress.c:545 parser/analyze.c:2046 +#: parser/parse_target.c:896 parser/parse_relation.c:2060 +#: parser/parse_relation.c:2117 parser/parse_type.c:117 #, c-format -msgid "SQL function cannot accept shell type %s" -msgstr "las funciones SQL no pueden aceptar el tipo inconcluso %s" +msgid "column \"%s\" of relation \"%s\" does not exist" +msgstr "no existe la columna «%s» en la relación «%s»" -#: commands/functioncmds.c:223 +#: utils/adt/ruleutils.c:1696 commands/functioncmds.c:1008 +#: commands/functioncmds.c:1108 commands/functioncmds.c:1171 +#: commands/functioncmds.c:1322 #, c-format -msgid "argument type %s is only a shell" -msgstr "el tipo de argumento %s está inconcluso" +msgid "\"%s\" is an aggregate function" +msgstr "«%s» es una función de agregación" -#: commands/functioncmds.c:233 +#: utils/adt/ruleutils.c:2429 #, c-format -msgid "type %s does not exist" -msgstr "no existe el tipo %s" +msgid "rule \"%s\" has unsupported event type %d" +msgstr "la regla «%s» tiene el tipo de evento no soportado %d" -#: commands/functioncmds.c:241 -msgid "functions cannot accept set arguments" -msgstr "funciones no pueden aceptar argumentos de conjunto" +#: utils/adt/ruleutils.c:5888 utils/adt/ruleutils.c:5943 +#: utils/adt/ruleutils.c:5980 utils/adt/regproc.c:635 utils/adt/regproc.c:1485 +msgid "too many arguments" +msgstr "demasiados argumentos" -#: commands/functioncmds.c:250 -msgid "VARIADIC parameter must be the last input parameter" -msgstr "el parámetro VARIADIC debe ser el último parámetro de entrada" +#: utils/adt/pseudotypes.c:94 +msgid "cannot accept a value of type any" +msgstr "no se puede aceptar un valor de tipo any" -#: commands/functioncmds.c:277 -msgid "VARIADIC parameter must be an array" -msgstr "el parámetro VARIADIC debe ser un array" +#: utils/adt/pseudotypes.c:107 +msgid "cannot display a value of type any" +msgstr "no se puede desplegar un valor de tipo any" -#: commands/functioncmds.c:317 -#, c-format -msgid "parameter name \"%s\" used more than once" -msgstr "el nombre de parámetro «%s» fue usado más de una vez" +#: utils/adt/pseudotypes.c:121 utils/adt/pseudotypes.c:149 +msgid "cannot accept a value of type anyarray" +msgstr "no se puede aceptar un valor de tipo anyarray" -#: commands/functioncmds.c:332 -msgid "only input parameters can have default values" -msgstr "solo los parámetros de entrada pueden tener valores por omisión" +#: utils/adt/pseudotypes.c:174 +msgid "cannot accept a value of type anyenum" +msgstr "no se puede aceptar un valor de tipo anyenum" -#: commands/functioncmds.c:344 -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" +#: utils/adt/pseudotypes.c:252 +msgid "cannot accept a value of type trigger" +msgstr "no se puede aceptar un valor de tipo trigger" -#: commands/functioncmds.c:360 -msgid "cannot use subquery in parameter default value" -msgstr "" -"no se puede usar una subconsulta en el valor por omisión de un parámetro" +#: utils/adt/pseudotypes.c:265 +msgid "cannot display a value of type trigger" +msgstr "no se puede desplegar un valor de tipo trigger" -#: commands/functioncmds.c:364 -msgid "cannot use aggregate function in parameter default value" -msgstr "" -"no se puede usar una función de agregación en el valor por omisión de un " -"parámetro" +#: utils/adt/pseudotypes.c:279 +msgid "cannot accept a value of type language_handler" +msgstr "no se puede aceptar un valor de tipo language_handler" -#: commands/functioncmds.c:368 -msgid "cannot use window function in parameter default value" -msgstr "" -"no se puede usar una función de ventana deslizante en el valor por omisión " -"de un parámetro" +#: utils/adt/pseudotypes.c:292 +msgid "cannot display a value of type language_handler" +msgstr "no se puede desplegar un valor de tipo language_handler" -#: commands/functioncmds.c:378 -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" +#: utils/adt/pseudotypes.c:306 +msgid "cannot accept a value of type fdw_handler" +msgstr "no se puede aceptar un valor de tipo fdw_handler" -#: commands/functioncmds.c:617 -msgid "no function body specified" -msgstr "no se ha especificado un cuerpo para la función" +#: utils/adt/pseudotypes.c:319 +msgid "cannot display a value of type fdw_handler" +msgstr "no se puede desplegar un valor de tipo fdw_handler" -#: commands/functioncmds.c:627 -msgid "no language specified" -msgstr "no se ha especificado el lenguaje" +#: utils/adt/pseudotypes.c:333 +msgid "cannot accept a value of type internal" +msgstr "no se puede aceptar un valor de tipo internal" -#: commands/functioncmds.c:648 commands/functioncmds.c:1349 -msgid "COST must be positive" -msgstr "COST debe ser positivo" +#: utils/adt/pseudotypes.c:346 +msgid "cannot display a value of type internal" +msgstr "no se puede desplegar un valor de tipo internal" -#: commands/functioncmds.c:656 commands/functioncmds.c:1357 -msgid "ROWS must be positive" -msgstr "ROWS debe ser positivo" +#: utils/adt/pseudotypes.c:360 +msgid "cannot accept a value of type opaque" +msgstr "no se puede aceptar un valor de tipo opaque" -#: commands/functioncmds.c:695 -#, c-format -msgid "unrecognized function attribute \"%s\" ignored" -msgstr "se ignoró el atributo de función no reconocido «%s»" +#: utils/adt/pseudotypes.c:373 +msgid "cannot display a value of type opaque" +msgstr "no se puede desplegar un valor de tipo opaque" -#: commands/functioncmds.c:746 -#, c-format -msgid "only one AS item needed for language \"%s\"" -msgstr "sólo se requiere un item AS para el lenguaje «%s»" +#: utils/adt/pseudotypes.c:387 +msgid "cannot accept a value of type anyelement" +msgstr "no se puede aceptar un valor de tipo anyelement" -#: commands/functioncmds.c:838 commands/functioncmds.c:1992 -msgid "Use CREATE LANGUAGE to load the language into the database." -msgstr "Usar CREATE LANGUAGE para instalar el lenguaje en la base de datos." +#: utils/adt/pseudotypes.c:400 +msgid "cannot display a value of type anyelement" +msgstr "no se puede desplegar un valor de tipo anyelement" -#: commands/functioncmds.c:885 -#, 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" +#: utils/adt/pseudotypes.c:413 +msgid "cannot accept a value of type anynonarray" +msgstr "no se puede aceptar un valor de tipo anynonarray" -#: commands/functioncmds.c:898 -msgid "function result type must be specified" -msgstr "el tipo de retorno de la función debe ser especificado" +#: utils/adt/pseudotypes.c:426 +msgid "cannot display a value of type anynonarray" +msgstr "no se puede desplegar un valor de tipo anynonarray" -#: commands/functioncmds.c:933 commands/functioncmds.c:1361 -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" +#: utils/adt/pseudotypes.c:439 +msgid "cannot accept a value of a shell type" +msgstr "no se puede aceptar un valor de un tipo inconcluso" -#: commands/functioncmds.c:985 -#, c-format -msgid "function %s(%s) does not exist, skipping" -msgstr "no existe la función %s(%s), ignorando" +#: utils/adt/pseudotypes.c:452 +msgid "cannot display a value of a shell type" +msgstr "no se puede desplegar un valor de un tipo inconcluso" -#: commands/functioncmds.c:1005 commands/functioncmds.c:1105 -#: commands/functioncmds.c:1168 commands/functioncmds.c:1319 -#: utils/adt/ruleutils.c:1635 -#, c-format -msgid "\"%s\" is an aggregate function" -msgstr "«%s» es una función de agregación" +#: utils/adt/pseudotypes.c:474 utils/adt/pseudotypes.c:498 +msgid "cannot accept a value of type pg_node_tree" +msgstr "no se puede aceptar un valor de tipo pg_node_tree" -#: commands/functioncmds.c:1007 -msgid "Use DROP AGGREGATE to drop aggregate functions." -msgstr "Use DROP AGGREGATE para eliminar funciones de agregación." +#: utils/adt/char.c:169 +msgid "\"char\" out of range" +msgstr "«char» está fuera de rango" -#: commands/functioncmds.c:1014 -#, c-format -msgid "removing built-in function \"%s\"" -msgstr "eliminando la función interna «%s»" +#: utils/adt/arrayfuncs.c:235 utils/adt/arrayfuncs.c:247 +msgid "missing dimension value" +msgstr "falta un valor de dimensión" -#: commands/functioncmds.c:1107 -msgid "Use ALTER AGGREGATE to rename aggregate functions." -msgstr "" -"Use ALTER AGGREGATE para cambiar el nombre a las funciones de agregación." +#: utils/adt/arrayfuncs.c:257 +msgid "missing \"]\" in array dimensions" +msgstr "falta un «]» en las dimensiones de array" -#: commands/functioncmds.c:1170 -msgid "Use ALTER AGGREGATE to change owner of aggregate functions." -msgstr "" -"Use ALTER AGGREGATE para cambiar el dueño a las funciones de agregación." +#: 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 "el límite superior no puede ser menor que el límite inferior" -#: commands/functioncmds.c:1508 -#, c-format -msgid "source data type %s is a pseudo-type" -msgstr "el tipo de origen %s es un pseudotipo" +#: utils/adt/arrayfuncs.c:277 utils/adt/arrayfuncs.c:303 +msgid "array value must start with \"{\" or dimension information" +msgstr "el valor de array debe comenzar con «{» o información de dimensión" -#: commands/functioncmds.c:1514 -#, c-format -msgid "target data type %s is a pseudo-type" -msgstr "el tipo de retorno %s es un pseudotipo" +#: utils/adt/arrayfuncs.c:291 +msgid "missing assignment operator" +msgstr "falta un operador de asignación" -#: commands/functioncmds.c:1551 -msgid "cast function must take one to three arguments" -msgstr "la función de conversión lleva de uno a tres argumentos" +#: utils/adt/arrayfuncs.c:308 utils/adt/arrayfuncs.c:314 +msgid "array dimensions incompatible with array literal" +msgstr "las dimensiones del array no son compatibles con el literal" -#: commands/functioncmds.c:1555 +#: 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 "literal de array no es válido: «%s»" + +#: utils/adt/arrayfuncs.c:542 executor/execQual.c:3100 +#: executor/execQual.c:3127 msgid "" -"argument of cast function must match or be binary-coercible from source data " -"type" +"multidimensional arrays must have array expressions with matching dimensions" msgstr "" -"el argumento de la función de conversión debe coincidir o ser binario-" -"convertible con el tipo de origen" +"los arrays multidimensionales deben tener expresiones de arrays con " +"dimensiones coincidentes" -#: commands/functioncmds.c:1559 -msgid "second argument of cast function must be type integer" -msgstr "el segundo argumento de la función de conversión debe ser entero" +#: utils/adt/arrayfuncs.c:1249 +msgid "invalid array flags" +msgstr "opciones de array no válidas" -#: commands/functioncmds.c:1563 -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" +#: utils/adt/arrayfuncs.c:1257 +msgid "wrong element type" +msgstr "el tipo de elemento es erróneo" -#: commands/functioncmds.c:1567 -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" +#: utils/adt/arrayfuncs.c:1411 utils/adt/rowtypes.c:572 libpq/pqformat.c:556 +#: libpq/pqformat.c:574 libpq/pqformat.c:595 +msgid "insufficient data left in message" +msgstr "los datos restantes del mensaje son insuficientes" -#: commands/functioncmds.c:1578 -msgid "cast function must not be volatile" -msgstr "la función de conversión no debe ser volatile" +#: utils/adt/arrayfuncs.c:1447 +#, c-format +msgid "improper binary format in array element %d" +msgstr "el formato binario no es válido en elemento %d de array" -#: commands/functioncmds.c:1583 -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" +#: utils/adt/arrayfuncs.c:1903 +msgid "slices of fixed-length arrays not implemented" +msgstr "no está implementada la obtención de segmentos de arrays de largo fijo" -#: commands/functioncmds.c:1587 -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" +#: utils/adt/arrayfuncs.c:2076 utils/adt/arrayfuncs.c:2098 +#: utils/adt/arrayfuncs.c:2132 utils/adt/arrayfuncs.c:2418 +#: utils/adt/arrayfuncs.c:4916 utils/adt/arrayfuncs.c:4948 +#: utils/adt/arrayfuncs.c:4965 +msgid "wrong number of array subscripts" +msgstr "número incorrecto de subíndices del array" -#: commands/functioncmds.c:1591 -msgid "cast function must not return a set" -msgstr "la función de conversión no debe retornar un conjunto" +#: utils/adt/arrayfuncs.c:2081 utils/adt/arrayfuncs.c:2174 +#: utils/adt/arrayfuncs.c:2469 +msgid "array subscript out of range" +msgstr "los subíndices de arrays están fuera de rango" -#: commands/functioncmds.c:1617 -msgid "must be superuser to create a cast WITHOUT FUNCTION" +#: utils/adt/arrayfuncs.c:2086 +msgid "cannot assign null value to an element of a fixed-length array" msgstr "" -"debe ser superusuario para crear una conversión sin especificar función" - -#: commands/functioncmds.c:1632 -msgid "source and target data types are not physically compatible" -msgstr "los tipos de datos de origen y destino no son físicamente compatibles" +"no se puede asignar un valor nulo a un elemento de un array de longitud fija" -#: commands/functioncmds.c:1647 -msgid "composite data types are not binary-compatible" -msgstr "los tipos de datos compuestos no son binario-compatibles" +#: utils/adt/arrayfuncs.c:2372 +msgid "updates on slices of fixed-length arrays not implemented" +msgstr "" +"no están implementadas las actualizaciones en segmentos de arrays de largo " +"fija" -#: commands/functioncmds.c:1653 -msgid "enum data types are not binary-compatible" -msgstr "los tipos de datos enum no son binario-compatibles" +#: utils/adt/arrayfuncs.c:2408 utils/adt/arrayfuncs.c:2495 +msgid "source array too small" +msgstr "el array de origen es demasiado pequeño" -#: commands/functioncmds.c:1659 -msgid "array data types are not binary-compatible" -msgstr "los tipos de datos de array no son binario-compatibles" +#: utils/adt/arrayfuncs.c:3050 +msgid "null array element not allowed in this context" +msgstr "los arrays con elementos null no son permitidos en este contexto" -#: commands/functioncmds.c:1669 -msgid "source data type and target data type are the same" -msgstr "el tipo de origen y el tipo de retorno son el mismo" +#: utils/adt/arrayfuncs.c:3153 utils/adt/arrayfuncs.c:3361 +#: utils/adt/arrayfuncs.c:3678 +msgid "cannot compare arrays of different element types" +msgstr "no se pueden comparar arrays con elementos de distintos tipos" -#: commands/functioncmds.c:1702 +#: utils/adt/arrayfuncs.c:3176 utils/adt/arrayfuncs.c:3695 +#: utils/adt/rowtypes.c:1185 parser/parse_oper.c:225 #, c-format -msgid "cast from type %s to type %s already exists" -msgstr "ya existe una conversión del tipo %s al tipo %s" +msgid "could not identify an equality operator for type %s" +msgstr "no se pudo identificar un operador de igualdad para el tipo %s" -#: commands/functioncmds.c:1782 +#: utils/adt/arrayfuncs.c:3378 utils/adt/rowtypes.c:950 +#: executor/execQual.c:4892 #, 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" +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" -#: commands/functioncmds.c:1879 +#: utils/adt/arrayfuncs.c:3563 #, c-format -msgid "function \"%s\" is already in schema \"%s\"" -msgstr "la función «%s» ya está en el esquema «%s»" +msgid "could not identify a hash function for type %s" +msgstr "no se pudo identificar una función de hash para el tipo %s" -#: commands/functioncmds.c:1887 commands/tablecmds.c:7879 -#: commands/typecmds.c:2794 -msgid "cannot move objects into or out of temporary schemas" -msgstr "no se puede mover objetos hacia o desde esquemas temporales" +#: utils/adt/arrayfuncs.c:4814 utils/adt/arrayfuncs.c:4854 +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" -#: commands/functioncmds.c:1893 commands/tablecmds.c:7885 -#: commands/typecmds.c:2800 -msgid "cannot move objects into or out of TOAST schema" -msgstr "no se puede mover objetos hacia o desde el esquema TOAST" +#: utils/adt/arrayfuncs.c:4917 utils/adt/arrayfuncs.c:4949 +msgid "Dimension array must be one dimensional." +msgstr "El array de dimensiones debe ser unidimensional." -#: commands/functioncmds.c:1902 -#, c-format -msgid "function \"%s\" already exists in schema \"%s\"" -msgstr "ya existe una función llamada %s en el esquema «%s»" +#: utils/adt/arrayfuncs.c:4922 utils/adt/arrayfuncs.c:4954 +msgid "wrong range of array subscripts" +msgstr "rango incorrecto en los subíndices del array" -#: commands/functioncmds.c:1974 -msgid "no inline code specified" -msgstr "no se ha especificado código" +#: utils/adt/arrayfuncs.c:4923 utils/adt/arrayfuncs.c:4955 +msgid "Lower bound of dimension array must be one." +msgstr "El límite inferior del array de dimensiones debe ser uno." -#: commands/functioncmds.c:2022 -#, 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" +#: utils/adt/arrayfuncs.c:4928 utils/adt/arrayfuncs.c:4960 +msgid "dimension values cannot be null" +msgstr "los valores de dimensión no pueden ser null" -#: commands/indexcmds.c:162 -msgid "must specify at least one column" -msgstr "debe especificar al menos una columna" +#: utils/adt/arrayfuncs.c:4966 +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." -#: commands/indexcmds.c:166 +#: utils/adt/tsquery.c:156 utils/adt/tsquery.c:392 +#: utils/adt/tsvector_parser.c:136 #, 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:196 -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:256 commands/tablecmds.c:455 commands/tablecmds.c:6995 -msgid "only shared relations can be placed in pg_global tablespace" -msgstr "" -"sólo relaciones compartidas pueden ser puestas en el tablespace pg_global" +msgid "syntax error in tsquery: \"%s\"" +msgstr "error de sintaxis en tsquery: «%s»" -#: commands/indexcmds.c:287 -msgid "substituting access method \"gist\" for obsolete method \"rtree\"" -msgstr "sustituyendo el método de acceso obsoleto «rtree» por «gist»" +#: utils/adt/tsquery.c:177 +#, c-format +msgid "no operand in tsquery: \"%s\"" +msgstr "no hay operando en tsquery: «%s»" -#: commands/indexcmds.c:304 +#: utils/adt/tsquery.c:250 #, c-format -msgid "access method \"%s\" does not support unique indexes" -msgstr "el método de acceso «%s» no soporta índices únicos" +msgid "value is too big in tsquery: \"%s\"" +msgstr "el valor es demasiado grande en tsquery: «%s»" -#: commands/indexcmds.c:309 +#: utils/adt/tsquery.c:255 #, c-format -msgid "access method \"%s\" does not support multicolumn indexes" -msgstr "el método de acceso «%s» no soporta índices multicolumna" +msgid "operand is too long in tsquery: \"%s\"" +msgstr "el operando es muy largo en tsquery: «%s»" -#: commands/indexcmds.c:314 +#: utils/adt/tsquery.c:283 #, c-format -msgid "access method \"%s\" does not support exclusion constraints" -msgstr "el método de acceso «%s» no soporta restricciones por exclusión" +msgid "word is too long in tsquery: \"%s\"" +msgstr "palabra demasiado larga en tsquery: «%s»" -#: commands/indexcmds.c:347 parser/parse_utilcmd.c:1212 -#: parser/parse_utilcmd.c:1298 +#: utils/adt/tsquery.c:512 #, c-format -msgid "multiple primary keys for table \"%s\" are not allowed" -msgstr "no se permiten múltiples llaves primarias para la tabla «%s»" +msgid "text-search query doesn't contain lexemes: \"%s\"" +msgstr "la consulta de búsqueda en texto no contiene lexemas: «%s»" -#: commands/indexcmds.c:364 -msgid "primary keys cannot be expressions" -msgstr "las llaves primarias no pueden ser expresiones" +#: utils/adt/misc.c:80 +msgid "must be superuser to signal other server processes" +msgstr "debe ser superusuario para enviar señales a otros procesos" -#: commands/indexcmds.c:394 commands/indexcmds.c:903 -#: parser/parse_utilcmd.c:1445 +#: utils/adt/misc.c:89 #, c-format -msgid "column \"%s\" named in key does not exist" -msgstr "no existe la columna «%s» en la llave" +msgid "PID %d is not a PostgreSQL server process" +msgstr "el proceso con PID %d no es un proceso servidor PostgreSQL" -#: commands/indexcmds.c:468 +#: utils/adt/misc.c:102 storage/lmgr/proc.c:1079 #, 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:827 -msgid "cannot use subquery in index predicate" -msgstr "no se puede usar una subconsulta en un predicado de índice" - -#: commands/indexcmds.c:831 -msgid "cannot use aggregate in index predicate" -msgstr "no se puede usar una función de agregación en un predicado de índice" +msgid "could not send signal to process %d: %m" +msgstr "no se pudo enviar la señal al proceso %d: %m" -#: commands/indexcmds.c:840 -msgid "functions in index predicate must be marked IMMUTABLE" -msgstr "" -"las funciones utilizadas en predicados de índice deben estar marcadas " -"IMMUTABLE" +#: utils/adt/misc.c:126 +msgid "must be superuser to signal the postmaster" +msgstr "debe ser superusuario para enviar señales a postmaster" -#: commands/indexcmds.c:942 -msgid "cannot use subquery in index expression" -msgstr "no se puede usar una subconsulta en una expresión de índice" +#: utils/adt/misc.c:131 +#, c-format +msgid "failed to send signal to postmaster: %m" +msgstr "no se pudo enviar la señal al postmaster: %m" -#: commands/indexcmds.c:946 -msgid "cannot use aggregate function in index expression" -msgstr "no se puede usar una función de agregación en una expresión de índice" +#: utils/adt/misc.c:148 +msgid "must be superuser to rotate log files" +msgstr "debe ser superusuario para rotar archivos de registro" -#: commands/indexcmds.c:956 -msgid "functions in index expression must be marked IMMUTABLE" +#: utils/adt/misc.c:153 +msgid "rotation not possible because log collection not active" msgstr "" -"las funciones utilizadas en expresiones de índice deben estar marcadas " -"IMMUTABLE" - -#: commands/indexcmds.c:991 -#, c-format -msgid "operator %s is not commutative" -msgstr "el operador %s no es conmutativo" +"la rotación no es posible, porque la recolección del logs no está activa" -#: commands/indexcmds.c:993 -msgid "Only commutative operators can be used in exclusion constraints." -msgstr "" -"Sólo operadores conmutativos pueden ser usados en restricciones de exclusión." +#: utils/adt/misc.c:195 +msgid "global tablespace never has databases" +msgstr "el tablespace global nunca tiene bases de datos" -#: commands/indexcmds.c:1019 +#: utils/adt/misc.c:216 #, 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»" +msgid "%u is not a tablespace OID" +msgstr "%u no es un OID de tablespace" -#: commands/indexcmds.c:1022 -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." +#: utils/adt/misc.c:352 +msgid "unreserved" +msgstr "no reservada" -#: commands/indexcmds.c:1057 -#, 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" +#: utils/adt/misc.c:356 +msgid "unreserved (cannot be function or type name)" +msgstr "no reservada (no puede ser nombre de función o tipo)" -#: commands/indexcmds.c:1062 -#, 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" +#: utils/adt/misc.c:360 +msgid "reserved (can be function or type name)" +msgstr "reservada (puede ser nombre de función o tipo)" + +#: utils/adt/misc.c:364 +msgid "reserved" +msgstr "reservada" + +#: 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:117 +msgid "requested length too large" +msgstr "el tamaño solicitado es demasiado grande" + +#: utils/adt/oracle_compat.c:895 +msgid "requested character too large" +msgstr "el carácter solicitado es demasiado grande" -#: commands/indexcmds.c:1118 +#: utils/adt/oracle_compat.c:941 utils/adt/oracle_compat.c:995 #, 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»" +msgid "requested character too large for encoding: %d" +msgstr "el carácter pedido es demasiado largo para el encoding: %d" -#: commands/indexcmds.c:1120 -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." +#: utils/adt/oracle_compat.c:988 +msgid "null character not permitted" +msgstr "el carácter nulo no está permitido" + +#: utils/adt/tsvector_op.c:1173 +msgid "ts_stat query must return one tsvector column" +msgstr "la consulta ts_stat debe retornar una columna tsvector" -#: commands/indexcmds.c:1170 +#: utils/adt/tsvector_op.c:1353 #, 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" +msgid "tsvector column \"%s\" does not exist" +msgstr "la columna tsvector «%s» no existe" -#: commands/indexcmds.c:1260 +#: utils/adt/tsvector_op.c:1359 #, 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" +msgid "column \"%s\" is not of tsvector type" +msgstr "la columna «%s» no es de tipo tsvector" -#: commands/indexcmds.c:1639 +#: utils/adt/tsvector_op.c:1371 #, c-format -msgid "table \"%s\" has no indexes" -msgstr "la tabla «%s» no tiene índices" +msgid "configuration column \"%s\" does not exist" +msgstr "la columna de configuración «%s» no existe" -#: commands/indexcmds.c:1667 -msgid "can only reindex the currently open database" -msgstr "sólo se puede reindexar la base de datos actualmente abierta" +#: utils/adt/tsvector_op.c:1377 +#, c-format +msgid "column \"%s\" is not of regconfig type" +msgstr "la columna «%s» no es de tipo regconfig" -#: commands/indexcmds.c:1752 +#: utils/adt/tsvector_op.c:1384 #, c-format -msgid "table \"%s.%s\" was reindexed" -msgstr "la tabla «%s.%s» fue reindexada" +msgid "configuration column \"%s\" must not be null" +msgstr "la columna de configuración «%s» no debe ser nula" -#: commands/lockcmds.c:93 +#: utils/adt/tsvector_op.c:1397 #, c-format -msgid "could not obtain lock on relation \"%s\"" -msgstr "no se pudo obtener un bloqueo en la relación «%s»" +msgid "text search configuration name \"%s\" must be schema-qualified" +msgstr "" +"el nombre de la configuración de búsqueda «%s» debe ser calificada con " +"esquema" -#: commands/lockcmds.c:98 +#: utils/adt/tsvector_op.c:1417 commands/tablecmds.c:1301 +#: commands/tablecmds.c:2076 commands/copy.c:3792 commands/indexcmds.c:818 +#: parser/parse_expr.c:766 #, c-format -msgid "could not obtain lock on relation with OID %u" -msgstr "no se pudo obtener un bloqueo en la relación con OID %u" +msgid "column \"%s\" does not exist" +msgstr "no existe la columna «%s»" -#: commands/opclasscmds.c:190 commands/opclasscmds.c:701 +#: utils/adt/tsvector_op.c:1422 #, 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»" +msgid "column \"%s\" is not of a character type" +msgstr "la columna «%s» no es de un tipo textual" -#: commands/opclasscmds.c:320 -msgid "must be superuser to create an operator class" -msgstr "debe ser superusuario para crear una clase de operadores" +#: utils/adt/datetime.c:3537 utils/adt/datetime.c:3544 +#, 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:3546 +msgid "Perhaps you need a different \"datestyle\" setting." +msgstr "Quizás necesite una configuración diferente de «datestyle»." -#: commands/opclasscmds.c:403 commands/opclasscmds.c:849 -#: commands/opclasscmds.c:971 +#: utils/adt/datetime.c:3551 #, 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" +msgid "interval field value out of range: \"%s\"" +msgstr "el valor de interval está fuera de rango: «%s»" -#: commands/opclasscmds.c:446 commands/opclasscmds.c:892 -#: commands/opclasscmds.c:986 +#: utils/adt/datetime.c:3557 #, 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" +msgid "time zone displacement out of range: \"%s\"" +msgstr "el desplazamiento de huso horario está fuera de rango: «%s»" -#: commands/opclasscmds.c:476 -msgid "storage type specified more than once" -msgstr "el tipo de almacenamiento fue especificado más de una vez" +#: utils/adt/genfile.c:60 +msgid "reference to parent directory (\"..\") not allowed" +msgstr "no se permiten referencias a directorios padre («..»)" -#: commands/opclasscmds.c:504 -#, 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»" +#: utils/adt/genfile.c:71 +msgid "absolute path not allowed" +msgstr "no se permiten rutas absolutas" -#: commands/opclasscmds.c:520 +#: utils/adt/genfile.c:76 +msgid "path must be in or below the current directory" +msgstr "la ruta debe estar en o debajo del directorio actual" + +#: utils/adt/genfile.c:122 commands/copy.c:2193 #, 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»" +msgid "could not open file \"%s\" for reading: %m" +msgstr "no se pudo abrir archivo «%s» para lectura: %m" -#: commands/opclasscmds.c:548 +#: utils/adt/genfile.c:129 #, 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" +msgid "could not seek in file \"%s\": %m" +msgstr "no se pudo posicionar (seek) el archivo «%s»: %m" -#: commands/opclasscmds.c:551 +#: utils/adt/genfile.c:138 access/transam/xlog.c:2543 +#: access/transam/xlog.c:4494 access/transam/xlog.c:9342 +#: access/transam/xlog.c:9355 access/transam/xlog.c:9889 +#: access/transam/xlog.c:9924 storage/file/copydir.c:186 #, c-format -msgid "Operator class \"%s\" already is the default." -msgstr "Actualmente, «%s» es la clase de operadores por omisión." +msgid "could not read file \"%s\": %m" +msgstr "no se pudo leer el archivo «%s»: %m" -#: commands/opclasscmds.c:687 -msgid "must be superuser to create an operator family" -msgstr "debe ser superusuario para crear una familia de operadores" +#: 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 "debe ser superusuario para leer archivos" -#: commands/opclasscmds.c:802 -msgid "must be superuser to alter an operator family" -msgstr "debe ser superusuario para alterar una familia de operadores" +#: utils/adt/genfile.c:186 utils/adt/genfile.c:231 +msgid "requested length cannot be negative" +msgstr "el tamaño solicitado no puede ser negativo" -#: commands/opclasscmds.c:865 -msgid "operator argument types must be specified in ALTER OPERATOR FAMILY" +#: utils/adt/genfile.c:272 +msgid "must be superuser to get file information" +msgstr "debe ser superusuario obtener información de archivos" + +#: utils/adt/genfile.c:336 +msgid "must be superuser to get directory listings" +msgstr "debe ser superusuario para obtener listados de directorio" + +#: utils/adt/tsquery_rewrite.c:296 +msgid "ts_rewrite query must return two tsquery columns" +msgstr "consulta ts_rewrite debe retornar dos columnas tsquery" + +#: utils/adt/tsquery_cleanup.c:285 +msgid "" +"text-search query contains only stop words or doesn't contain lexemes, " +"ignored" msgstr "" -"los tipos de los argumentos de operador deben ser especificados en ALTER " -"OPERATOR FAMILY" +"la consulta de búsqueda en texto contiene sólo stopwords o no contiene " +"lexemas; ignorada" -#: commands/opclasscmds.c:921 -msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY" -msgstr "STORAGE no puede ser especificado en ALTER OPERATOR FAMILY" +#: utils/adt/uuid.c:128 +#, c-format +msgid "invalid input syntax for uuid: \"%s\"" +msgstr "la sintaxis de entrada no es válida para el tipo uuid: «%s»" -#: commands/opclasscmds.c:1037 -msgid "one or two argument types must be specified" -msgstr "uno o dos tipos de argumento debe/n ser especificado" +#: utils/adt/rowtypes.c:99 utils/adt/rowtypes.c:488 +msgid "input of anonymous composite types is not implemented" +msgstr "el ingreso de tipos compuestos anónimos no está implementado" -#: commands/opclasscmds.c:1063 -msgid "index operators must be binary" -msgstr "los operadores de índice deben ser binarios" +#: 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:153 +msgid "Missing left parenthesis." +msgstr "Falta paréntesis izquierdo." -#: commands/opclasscmds.c:1067 -msgid "index operators must return boolean" -msgstr "los operadores de índice deben retornar boolean" +#: utils/adt/rowtypes.c:181 +msgid "Too few columns." +msgstr "Muy pocas columnas." -#: commands/opclasscmds.c:1105 -msgid "btree procedures must have two arguments" -msgstr "los procedimientos de btree deben tener dos argumentos" +#: utils/adt/rowtypes.c:205 utils/adt/rowtypes.c:213 +msgid "Unexpected end of input." +msgstr "Fin inesperado de la entrada." -#: commands/opclasscmds.c:1109 -msgid "btree procedures must return integer" -msgstr "los procedimientos btree deben retornar integer" +#: utils/adt/rowtypes.c:264 +msgid "Too many columns." +msgstr "Demasiadas columnas." -#: commands/opclasscmds.c:1124 -msgid "hash procedures must have one argument" -msgstr "los procedimientos de hash deben tener un argumento" +#: utils/adt/rowtypes.c:272 +msgid "Junk after right parenthesis." +msgstr "Basura después del paréntesis derecho." -#: commands/opclasscmds.c:1128 -msgid "hash procedures must return integer" -msgstr "los procedimientos de hash deben retornar integer" +#: utils/adt/rowtypes.c:537 +#, c-format +msgid "wrong number of columns: %d, expected %d" +msgstr "número de columnas erróneo: %d, se esperaban %d" -#: commands/opclasscmds.c:1153 -msgid "associated data types must be specified for index support procedure" +#: utils/adt/rowtypes.c:564 +#, c-format +msgid "wrong data type: %u, expected %u" +msgstr "tipo de dato erróneo: %u, se esperaba %u" + +#: utils/adt/rowtypes.c:625 +#, c-format +msgid "improper binary format in record column %d" +msgstr "formato binario incorrecto en la columna record %d" + +#: utils/adt/rowtypes.c:925 utils/adt/rowtypes.c:1160 +#, c-format +msgid "cannot compare dissimilar column types %s and %s at record column %d" msgstr "" -"los tipos de datos asociados deben ser especificados en el procedimiento de " -"soporte de índice" +"no se pueden comparar los tipos de columnas disímiles %s y %s en la columna " +"%d" + +#: utils/adt/rowtypes.c:1011 utils/adt/rowtypes.c:1231 +msgid "cannot compare record types with different numbers of columns" +msgstr "no se pueden comparar registros con cantidad distinta de columnas" -#: commands/opclasscmds.c:1179 +#: utils/adt/nabstime.c:160 #, 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" +msgid "invalid time zone name: \"%s\"" +msgstr "el nombre de huso horario no es válido: «%s»" -#: commands/opclasscmds.c:1186 +#: utils/adt/nabstime.c:506 utils/adt/nabstime.c:579 +msgid "cannot convert abstime \"invalid\" to timestamp" +msgstr "no se puede convertir abstime «invalid» a timestamp" + +#: utils/adt/nabstime.c:806 +msgid "invalid status in external \"tinterval\" value" +msgstr "el estado no es válido en el valor «tinterval» externo" + +#: utils/adt/nabstime.c:880 +msgid "cannot convert reltime \"invalid\" to interval" +msgstr "no se puede convertir reltime «invalid» a interval" + +#: utils/adt/nabstime.c:1575 #, 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" +msgid "invalid input syntax for type tinterval: \"%s\"" +msgstr "la sintaxis de entrada no es válida para el tipo tinterval: «%s»" -#: commands/opclasscmds.c:1234 +#: utils/adt/numutils.c:75 #, 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»" +msgid "value \"%s\" is out of range for type integer" +msgstr "el valor «%s» está fuera de rango para el tipo integer" -#: commands/opclasscmds.c:1334 +#: utils/adt/numutils.c:81 #, 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»" +msgid "value \"%s\" is out of range for type smallint" +msgstr "el valor «%s» está fuera de rango para el tipo smallint" -#: commands/opclasscmds.c:1421 +#: utils/adt/numutils.c:87 #, 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»" +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" -#: commands/opclasscmds.c:1461 +#: utils/adt/pg_locale.c:953 #, 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»" +msgid "could not create locale \"%s\": %m" +msgstr "no se pudo crear la configuración regional «%s»: %m" -#: commands/opclasscmds.c:1768 +#: utils/adt/pg_locale.c:956 #, c-format msgid "" -"operator class \"%s\" for access method \"%s\" already exists in schema \"%s" -"\"" +"The operating system could not find any locale data for the locale name \"%s" +"\"." msgstr "" -"ya existe una clase de operadores «%s» para el método de acceso «%s» en el " -"esquema «%s»" +"El sistema operativo no pudo encontrar datos de configuración regional para " +"la configuración «%s»." -#: commands/opclasscmds.c:1862 -#, c-format +#: utils/adt/pg_locale.c:1043 msgid "" -"operator family \"%s\" for access method \"%s\" already exists in schema \"%s" -"\"" +"collations with different collate and ctype values are not supported on this " +"platform" msgstr "" -"ya existe una familia de operadores «%s» para el método de acceso «%s» en el " -"esquema «%s»" - -#: commands/operatorcmds.c:98 -msgid "=> is deprecated as an operator name" -msgstr "=> es un nombre obsoleto de operador" +"los ordenamientos (collation) con valores collate y ctype diferentes no " +"están soportados en esta plataforma" -#: commands/operatorcmds.c:99 -msgid "" -"This name may be disallowed altogether in future versions of PostgreSQL." +#: utils/adt/pg_locale.c:1058 +msgid "nondefault collations are not supported on this platform" msgstr "" -"Este nombre puede prohibirse por completo en futuras versiones de PostgreSQL." +"los ordenamientos (collation) distintos del ordenamiento por omisión no " +"están soportados en esta plataforma" -#: commands/operatorcmds.c:120 commands/operatorcmds.c:128 -msgid "SETOF type not allowed for operator argument" -msgstr "no se permite un tipo SETOF en los argumentos de un operador" +#: utils/adt/pg_locale.c:1229 +msgid "invalid multibyte character for locale" +msgstr "el carácter multibyte no es válido para esta configuración regional" -#: commands/operatorcmds.c:156 -#, c-format -msgid "operator attribute \"%s\" not recognized" -msgstr "el atributo de operador «%s» no es reconocido" - -#: commands/operatorcmds.c:166 -msgid "operator procedure must be specified" -msgstr "debe especificarse un procedimiento de operador" - -#: commands/operatorcmds.c:177 -msgid "at least one of leftarg or rightarg must be specified" -msgstr "debe especificar al menos uno de los argumentos izquierdo o derecho" - -#: commands/operatorcmds.c:226 -#, c-format -msgid "restriction estimator function %s must return type \"float8\"" -msgstr "la función de estimación de restricción %s debe retornar tipo «float8»" +#: utils/adt/pg_locale.c:1230 +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." -#: commands/operatorcmds.c:265 +#: utils/adt/encode.c:55 utils/adt/encode.c:91 #, c-format -msgid "join estimator function %s must return type \"float8\"" -msgstr "la función de estimación de join %s debe retornar tipo «float8»" +msgid "unrecognized encoding: \"%s\"" +msgstr "no se reconoce la codificación: «%s»" -#: commands/operatorcmds.c:316 +#: utils/adt/encode.c:150 #, c-format -msgid "operator %s does not exist, skipping" -msgstr "el operador %s no existe, ignorando" - -#: commands/portalcmds.c:61 commands/portalcmds.c:160 -#: commands/portalcmds.c:212 -msgid "invalid cursor name: must not be empty" -msgstr "el nombre de cursor no es válido: no debe ser vacío" +msgid "invalid hexadecimal digit: \"%c\"" +msgstr "el dígito hexadecimal no es válido: «%c»" -#: 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 "no existe el cursor «%s»" +#: utils/adt/encode.c:178 +msgid "invalid hexadecimal data: odd number of digits" +msgstr "el dato hexadecimal no es válido: tiene un número impar de dígitos" -#: commands/portalcmds.c:329 tcop/pquery.c:748 tcop/pquery.c:1371 -#, c-format -msgid "portal \"%s\" cannot be run" -msgstr "el portal «%s» no puede ser ejecutado" +#: utils/adt/encode.c:295 +msgid "unexpected \"=\"" +msgstr "«=» inesperado" -#: commands/portalcmds.c:402 -msgid "could not reposition held cursor" -msgstr "no se pudo reposicionar cursor abierto" +#: utils/adt/encode.c:307 +msgid "invalid symbol" +msgstr "símbolo no válido" -#: commands/prepare.c:70 -msgid "invalid statement name: must not be empty" -msgstr "el nombre de sentencia no es válido: no debe ser vacío" +#: utils/adt/encode.c:327 +msgid "invalid end sequence" +msgstr "secuencia de término no válida" -#: commands/prepare.c:121 tcop/postgres.c:1307 parser/parse_param.c:293 +#: utils/adt/oid.c:43 utils/adt/oid.c:57 utils/adt/oid.c:63 utils/adt/oid.c:84 #, c-format -msgid "could not determine data type of parameter $%d" -msgstr "no se pudo determinar el tipo del parámetro $%d" +msgid "invalid input syntax for type oid: \"%s\"" +msgstr "la sintaxis de entrada no es válida para el tipo oid: «%s»" -#: commands/prepare.c:139 -msgid "utility statements cannot be prepared" -msgstr "sentencias de utilidad no pueden ser preparadas" +#: 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" -#: commands/prepare.c:239 commands/prepare.c:246 commands/prepare.c:702 -msgid "prepared statement is not a SELECT" -msgstr "la sentencia preparada no es un SELECT" +#: utils/adt/oid.c:287 +msgid "invalid oidvector data" +msgstr "datos de oidvector no válidos" -#: commands/prepare.c:313 +#: utils/adt/acl.c:253 #, c-format -msgid "wrong number of parameters for prepared statement \"%s\"" -msgstr "el número de parámetros es incorrecto en la sentencia preparada «%s»" +msgid "unrecognized key word: \"%s\"" +msgstr "palabra clave no reconocida: «%s»" -#: commands/prepare.c:315 -#, c-format -msgid "Expected %d parameters but got %d." -msgstr "Se esperaban %d parámetros pero se obtuvieron %d." +#: utils/adt/acl.c:254 +msgid "ACL key word must be \"group\" or \"user\"." +msgstr "Palabra clave de ACL debe ser «group» o «user»." -#: commands/prepare.c:344 -msgid "cannot use subquery in EXECUTE parameter" -msgstr "no se puede usar una subconsulta en un parámetro a EXECUTE" +#: utils/adt/acl.c:259 +msgid "missing name" +msgstr "falta un nombre" -#: commands/prepare.c:348 -msgid "cannot use aggregate function in EXECUTE parameter" -msgstr "no se puede usar una función de agregación en un parámetro a EXECUTE" +#: utils/adt/acl.c:260 +msgid "A name must follow the \"group\" or \"user\" key word." +msgstr "Debe venir un nombre después de una palabra clave «group» o «user»." -#: commands/prepare.c:352 -msgid "cannot use window function in EXECUTE parameter" -msgstr "" -"no se puede usar una función de ventana deslizante en un parámetro a EXECUTE" +#: utils/adt/acl.c:266 +msgid "missing \"=\" sign" +msgstr "falta un signo «=»" -#: commands/prepare.c:365 +#: utils/adt/acl.c:319 #, c-format -msgid "parameter $%d of type %s cannot be coerced to the expected type %s" -msgstr "" -"el parámetro $%d de tipo %s no puede ser convertido al tipo esperado %s" +msgid "invalid mode character: must be one of \"%s\"" +msgstr "carácter de modo no válido: debe ser uno de «%s»" -#: commands/prepare.c:463 -#, c-format -msgid "prepared statement \"%s\" already exists" -msgstr "la sentencia preparada «%s» ya existe" +#: utils/adt/acl.c:341 +msgid "a name must follow the \"/\" sign" +msgstr "debe venir un nombre después del signo «/»" -#: commands/prepare.c:521 +#: utils/adt/acl.c:349 #, c-format -msgid "prepared statement \"%s\" does not exist" -msgstr "no existe la sentencia preparada «%s»" +msgid "defaulting grantor to user ID %u" +msgstr "usando el cedente por omisión con ID %u" -#: commands/prepare.c:747 executor/execQual.c:1615 executor/execQual.c:1640 -#: executor/execQual.c:2001 executor/execQual.c:5100 executor/functions.c:652 -#: foreign/foreign.c:271 utils/mmgr/portalmem.c:937 utils/fmgr/funcapi.c:60 -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" +#: utils/adt/acl.c:540 +msgid "ACL array contains wrong data type" +msgstr "el array ACL contiene tipo de datos incorrecto" -#: commands/prepare.c:751 foreign/foreign.c:276 utils/mmgr/portalmem.c:941 -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" +#: utils/adt/acl.c:544 +msgid "ACL arrays must be one-dimensional" +msgstr "los array de ACL debe ser unidimensional" -#: commands/proclang.c:92 -msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters" -msgstr "" -"usando información de pg_pltemplate en vez de los parámetros de CREATE " -"LANGUAGE" +#: utils/adt/acl.c:548 +msgid "ACL arrays must not contain null values" +msgstr "los arrays de ACL no pueden contener valores nulos" -#: commands/proclang.c:102 -#, c-format -msgid "must be superuser to create procedural language \"%s\"" -msgstr "debe ser superusuario para crear el lenguaje procedural «%s»" +#: utils/adt/acl.c:572 +msgid "extra garbage at the end of the ACL specification" +msgstr "basura extra al final de la especificación de la ACL" -#: commands/proclang.c:122 commands/proclang.c:278 -#, c-format -msgid "function %s must return type \"language_handler\"" -msgstr "la función %s debe retornar tipo «language_handler»" +#: utils/adt/acl.c:1129 +msgid "grant options cannot be granted back to your own grantor" +msgstr "la opción de grant no puede ser otorgada de vuelta a quien la otorgó" -#: commands/proclang.c:242 -#, c-format -msgid "unsupported language \"%s\"" -msgstr "lenguaje no soportado: «%s»" +#: utils/adt/acl.c:1190 +msgid "dependent privileges exist" +msgstr "existen privilegios dependientes" -#: commands/proclang.c:244 -msgid "The supported languages are listed in the pg_pltemplate system catalog." -msgstr "" -"Los lenguajes soportados están listados en el catálogo del sistema " -"pg_pltemplate." +#: utils/adt/acl.c:1191 +msgid "Use CASCADE to revoke them too." +msgstr "Use CASCADE para revocarlos también." -#: commands/proclang.c:252 -msgid "must be superuser to create custom procedural language" -msgstr "debe ser superusuario para crear un lenguaje procedural personalizado" +#: utils/adt/acl.c:1470 +msgid "aclinsert is no longer supported" +msgstr "aclinsert ya no está soportado" -#: commands/proclang.c:271 -#, c-format -msgid "" -"changing return type of function %s from \"opaque\" to \"language_handler\"" -msgstr "" -"cambiando el tipo de retorno de la función %s de «opaque» a " -"«language_handler»" +#: utils/adt/acl.c:1480 +msgid "aclremove is no longer supported" +msgstr "aclremove ya no está soportado" -#: commands/proclang.c:356 commands/proclang.c:606 +#: utils/adt/acl.c:1566 utils/adt/acl.c:1620 #, c-format -msgid "language \"%s\" already exists" -msgstr "ya existe el lenguaje «%s»" +msgid "unrecognized privilege type: \"%s\"" +msgstr "tipo de privilegio no reconocido: «%s»" -#: commands/proclang.c:534 +#: 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 +#: commands/tablecmds.c:209 commands/tablecmds.c:2175 +#: commands/tablecmds.c:2422 commands/tablecmds.c:9032 +#: commands/sequence.c:1032 catalog/aclchk.c:1692 catalog/objectaddress.c:398 #, c-format -msgid "language \"%s\" does not exist, skipping" -msgstr "el lenguaje «%s» no existe, ignorando" +msgid "\"%s\" is not a sequence" +msgstr "«%s» no es una secuencia" -#: commands/schemacmds.c:82 commands/schemacmds.c:288 +#: utils/adt/acl.c:3359 utils/adt/regproc.c:118 utils/adt/regproc.c:139 +#: utils/adt/regproc.c:289 #, c-format -msgid "unacceptable schema name \"%s\"" -msgstr "el nombre de schema «%s» es inaceptable" - -#: commands/schemacmds.c:83 commands/schemacmds.c:289 -msgid "The prefix \"pg_\" is reserved for system schemas." -msgstr "El prefijo «pg_» está reservado para esquemas del sistema." +msgid "function \"%s\" does not exist" +msgstr "no existe la función «%s»" -#: commands/schemacmds.c:196 +#: utils/adt/acl.c:4608 #, c-format -msgid "schema \"%s\" does not exist, skipping" -msgstr "el esquema «%s» no existe, ignorando" +msgid "must be member of role \"%s\"" +msgstr "debe ser miembro del rol «%s»" -#: commands/sequence.c:553 +#: utils/adt/enum.c:49 utils/adt/enum.c:59 utils/adt/enum.c:118 +#: utils/adt/enum.c:128 #, c-format -msgid "nextval: reached maximum value of sequence \"%s\" (%s)" -msgstr "nextval: se alcanzó el valor máximo de la secuencia «%s» (%s)" +msgid "invalid input value for enum %s: \"%s\"" +msgstr "la sintaxis de entrada no es válida para el enum %s: «%s»" -#: commands/sequence.c:576 +#: utils/adt/enum.c:86 utils/adt/enum.c:153 utils/adt/enum.c:203 #, c-format -msgid "nextval: reached minimum value of sequence \"%s\" (%s)" -msgstr "nextval: se alcanzó el valor mínimo de la secuencia «%s» (%s)" +msgid "invalid internal value for enum: %u" +msgstr "el valor interno no es válido para enum: %u" -#: commands/sequence.c:674 +#: utils/adt/enum.c:362 utils/adt/enum.c:391 utils/adt/enum.c:431 +#: utils/adt/enum.c:451 +msgid "could not determine actual enum type" +msgstr "no se pudo determinar el tipo enum efectivo" + +#: utils/adt/enum.c:370 utils/adt/enum.c:399 #, 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" +msgid "enum %s contains no values" +msgstr "el enum %s no contiene valores" -#: commands/sequence.c:693 commands/sequence.c:699 -msgid "lastval is not yet defined in this session" -msgstr "lastval no está definido en esta sesión" +#: 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:2888 +msgid "MATCH PARTIAL not yet implemented" +msgstr "MATCH PARTIAL no está implementada" -#: commands/sequence.c:767 +#: utils/adt/ri_triggers.c:409 utils/adt/ri_triggers.c:2841 +#: utils/adt/ri_triggers.c:3535 utils/adt/ri_triggers.c:3567 #, 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:936 lib/stringinfo.c:266 libpq/auth.c:1020 -#: libpq/auth.c:1374 libpq/auth.c:1442 libpq/auth.c:2016 -#: storage/buffer/buf_init.c:154 storage/buffer/localbuf.c:348 -#: storage/file/fd.c:356 storage/file/fd.c:739 storage/file/fd.c:857 -#: storage/ipc/procarray.c:786 storage/ipc/procarray.c:1164 -#: storage/ipc/procarray.c:1171 storage/ipc/procarray.c:1406 -#: storage/ipc/procarray.c:1800 postmaster/postmaster.c:1973 -#: postmaster/postmaster.c:2006 postmaster/postmaster.c:3188 -#: postmaster/postmaster.c:3870 postmaster/postmaster.c:3951 -#: postmaster/postmaster.c:4539 utils/mmgr/aset.c:408 utils/mmgr/aset.c:587 -#: utils/mmgr/aset.c:770 utils/mmgr/aset.c:976 utils/adt/formatting.c:1491 -#: utils/adt/formatting.c:1547 utils/adt/formatting.c:1604 -#: utils/adt/regexp.c:205 utils/adt/varlena.c:3246 utils/adt/varlena.c:3267 -#: utils/misc/guc.c:2915 utils/misc/guc.c:2928 utils/misc/guc.c:2941 -#: utils/fmgr/dfmgr.c:224 utils/hash/dynahash.c:363 utils/hash/dynahash.c:435 -#: utils/hash/dynahash.c:929 utils/init/miscinit.c:149 -#: utils/init/miscinit.c:170 utils/init/miscinit.c:180 utils/mb/mbutils.c:334 -#: utils/mb/mbutils.c:606 -msgid "out of memory" -msgstr "memoria agotada" +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»" -#: commands/sequence.c:1096 -msgid "INCREMENT must not be zero" -msgstr "INCREMENT no debe ser cero" +#: utils/adt/ri_triggers.c:412 utils/adt/ri_triggers.c:2844 +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." -#: commands/sequence.c:1142 +#: utils/adt/ri_triggers.c:3080 commands/constraint.c:59 #, c-format -msgid "MINVALUE (%s) must be less than MAXVALUE (%s)" -msgstr "MINVALUE (%s) debe ser menor que MAXVALUE (%s)" +msgid "function \"%s\" was not called by trigger manager" +msgstr "la función «%s» no fue ejecutada por el manejador de triggers" -#: commands/sequence.c:1167 +#: utils/adt/ri_triggers.c:3089 commands/constraint.c:66 #, c-format -msgid "START value (%s) cannot be less than MINVALUE (%s)" -msgstr "el valor START (%s) no puede ser menor que MINVALUE (%s)" +msgid "function \"%s\" must be fired AFTER ROW" +msgstr "la función «%s» debe ser ejecutada AFTER ROW" -#: commands/sequence.c:1179 +#: utils/adt/ri_triggers.c:3097 #, c-format -msgid "START value (%s) cannot be greater than MAXVALUE (%s)" -msgstr "el valor START (%s) no puede ser mayor que MAXVALUE (%s)" +msgid "function \"%s\" must be fired for INSERT" +msgstr "la función «%s» debe ser ejecutada en INSERT" -#: commands/sequence.c:1210 +#: utils/adt/ri_triggers.c:3103 #, c-format -msgid "RESTART value (%s) cannot be less than MINVALUE (%s)" -msgstr "el valor RESTART (%s) no puede ser menor que MINVALUE (%s)" +msgid "function \"%s\" must be fired for UPDATE" +msgstr "la función «%s» debe ser ejecutada en UPDATE" -#: commands/sequence.c:1222 +#: utils/adt/ri_triggers.c:3110 commands/constraint.c:80 #, c-format -msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)" -msgstr "el valor RESTART (%s) no puede ser mayor que MAXVALUE (%s)" +msgid "function \"%s\" must be fired for INSERT or UPDATE" +msgstr "la función «%s» debe ser ejecutada en INSERT o UPDATE" -#: commands/sequence.c:1237 +#: utils/adt/ri_triggers.c:3117 #, c-format -msgid "CACHE (%s) must be greater than zero" -msgstr "CACHE (%s) debe ser mayor que cero" +msgid "function \"%s\" must be fired for DELETE" +msgstr "la función «%s» debe ser ejecutada en DELETE" -#: commands/sequence.c:1268 -msgid "invalid OWNED BY option" -msgstr "opción OWNED BY no válida" +#: utils/adt/ri_triggers.c:3146 +#, 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»" -#: commands/sequence.c:1269 -msgid "Specify OWNED BY table.column or OWNED BY NONE." -msgstr "Especifique OWNED BY tabla.columna o OWNED BY NONE." +#: utils/adt/ri_triggers.c:3148 +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." -#: commands/sequence.c:1291 commands/tablecmds.c:4808 +#: utils/adt/ri_triggers.c:3502 #, c-format -msgid "referenced relation \"%s\" is not a table" -msgstr "la relación referida «%s» no es una tabla" - -#: commands/sequence.c:1298 -msgid "sequence must have same owner as table it is linked to" +msgid "" +"referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave " +"unexpected result" msgstr "" -"la secuencia debe tener el mismo dueño que la tabla a la que está enlazada" +"la consulta de integridad referencial en «%s» de la restricción «%s» en «%s» " +"entregó un resultado inesperado" -#: commands/sequence.c:1302 -msgid "sequence must be in same schema as table it is linked to" +#: utils/adt/ri_triggers.c:3506 +msgid "This is most likely due to a rule having rewritten the query." msgstr "" -"la secuencia debe estar en el mismo esquema que la tabla a la que está " -"enlazada" +"Esto probablemente es causado por una regla que reescribió la consulta." -#: commands/tablecmds.c:192 +#: utils/adt/ri_triggers.c:3537 #, c-format -msgid "table \"%s\" does not exist" -msgstr "no existe la tabla «%s»" +msgid "No rows were found in \"%s\"." +msgstr "No se encontraron registros en «%s»." -#: commands/tablecmds.c:193 +#: utils/adt/ri_triggers.c:3569 #, c-format -msgid "table \"%s\" does not exist, skipping" -msgstr "la tabla «%s» no existe, ignorando" - -#: commands/tablecmds.c:195 -msgid "Use DROP TABLE to remove a table." -msgstr "Use DROP TABLE para eliminar una tabla." +msgid "Key (%s)=(%s) is not present in table \"%s\"." +msgstr "La llave (%s)=(%s) no está presente en la tabla «%s»." -#: commands/tablecmds.c:198 +#: utils/adt/ri_triggers.c:3575 #, c-format -msgid "sequence \"%s\" does not exist" -msgstr "no existe la secuencia «%s»" +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»" -#: commands/tablecmds.c:199 +#: utils/adt/ri_triggers.c:3578 #, c-format -msgid "sequence \"%s\" does not exist, skipping" -msgstr "la secuencia «%s» no existe, ignorando" - -#: commands/tablecmds.c:201 -msgid "Use DROP SEQUENCE to remove a sequence." -msgstr "Use DROP SEQUENCE para eliminar una secuencia." +msgid "Key (%s)=(%s) is still referenced from table \"%s\"." +msgstr "La llave (%s)=(%s) todavía es referida desde la tabla «%s»." -#: commands/tablecmds.c:204 +#: 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 "view \"%s\" does not exist" -msgstr "no existe la vista «%s»" +msgid "invalid input syntax for type numeric: \"%s\"" +msgstr "la sintaxis de entrada no es válida para el tipo numeric: «%s»" -#: commands/tablecmds.c:205 -#, c-format -msgid "view \"%s\" does not exist, skipping" -msgstr "la vista «%s» no existe, ignorando" +#: utils/adt/numeric.c:653 +msgid "invalid length in external \"numeric\" value" +msgstr "el largo no es válido en el valor «numeric» externo" -#: commands/tablecmds.c:207 -msgid "Use DROP VIEW to remove a view." -msgstr "Use DROP VIEW para eliminar una vista." +#: utils/adt/numeric.c:664 +msgid "invalid sign in external \"numeric\" value" +msgstr "el signo no es válido en el valor «numeric» externo" -#: commands/tablecmds.c:210 -#, c-format -msgid "index \"%s\" does not exist" -msgstr "no existe el índice «%s»" +#: utils/adt/numeric.c:674 +msgid "invalid digit in external \"numeric\" value" +msgstr "hay un dígito no válido en el valor «numeric» externo" -#: commands/tablecmds.c:211 +#: utils/adt/numeric.c:814 utils/adt/numeric.c:828 #, c-format -msgid "index \"%s\" does not exist, skipping" -msgstr "el índice «%s» no existe, ignorando" - -#: commands/tablecmds.c:213 -msgid "Use DROP INDEX to remove an index." -msgstr "Use DROP INDEX para eliminar un índice." +msgid "NUMERIC precision %d must be between 1 and %d" +msgstr "la precisión %d de NUMERIC debe estar entre 1 y %d" -#: commands/tablecmds.c:217 commands/typecmds.c:656 +#: utils/adt/numeric.c:819 #, c-format -msgid "type \"%s\" does not exist, skipping" -msgstr "el tipo «%s» no existe, ignorando" +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" -#: commands/tablecmds.c:218 -#, c-format -msgid "\"%s\" is not a type" -msgstr "«%s» no es un tipo" +#: utils/adt/numeric.c:837 +msgid "invalid NUMERIC type modifier" +msgstr "modificador de tipo NUMERIC no es válido" -#: commands/tablecmds.c:219 -msgid "Use DROP TYPE to remove a type." -msgstr "Use DROP TYPE para eliminar un tipo." +#: utils/adt/numeric.c:1881 utils/adt/numeric.c:3754 +msgid "value overflows numeric format" +msgstr "el valor excede el formato numeric" -#: commands/tablecmds.c:390 executor/execMain.c:2091 -msgid "ON COMMIT can only be used on temporary tables" -msgstr "ON COMMIT sólo puede ser usado en tablas temporales" +#: utils/adt/numeric.c:2229 +msgid "cannot convert NaN to integer" +msgstr "no se puede convertir NaN a entero" -#: commands/tablecmds.c:400 executor/execMain.c:2101 -msgid "cannot create temporary table within security-restricted operation" -msgstr "" -"no se puede crear una tabla temporal dentro una operación restringida por " -"seguridad" +#: utils/adt/numeric.c:2297 +msgid "cannot convert NaN to bigint" +msgstr "no se puede convertir NaN a bigint" -#: commands/tablecmds.c:777 commands/tablecmds.c:1109 -#: commands/tablecmds.c:2001 commands/tablecmds.c:3366 -#: commands/tablecmds.c:3395 commands/tablecmds.c:4814 commands/trigger.c:155 -#: commands/trigger.c:1069 tcop/utility.c:92 rewrite/rewriteDefine.c:258 -#, c-format -msgid "permission denied: \"%s\" is a system catalog" -msgstr "permiso denegado: «%s» es un catálogo de sistema" +#: utils/adt/numeric.c:2345 +msgid "cannot convert NaN to smallint" +msgstr "no se puede convertir NaN a smallint" + +#: utils/adt/numeric.c:3824 +msgid "numeric field overflow" +msgstr "desbordamiento de campo numeric" -#: commands/tablecmds.c:889 +#: utils/adt/numeric.c:3825 #, c-format -msgid "truncate cascades to table \"%s\"" -msgstr "truncando además la tabla «%s»" +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." -#: commands/tablecmds.c:1119 -msgid "cannot truncate temporary tables of other sessions" -msgstr "no se pueden truncar tablas temporales de otras sesiones" +#: utils/adt/numeric.c:5273 +msgid "argument for function \"exp\" too big" +msgstr "el argumento a la función «exp» es demasiado grande" -#: commands/tablecmds.c:1314 parser/parse_utilcmd.c:590 -#: parser/parse_utilcmd.c:1408 +#: utils/adt/tsvector_parser.c:137 #, c-format -msgid "inherited relation \"%s\" is not a table" -msgstr "la relación heredada «%s» no es una tabla" +msgid "syntax error in tsvector: \"%s\"" +msgstr "error de sintaxis en tsvector: «%s»" -#: commands/tablecmds.c:1320 commands/tablecmds.c:7223 +#: utils/adt/tsvector_parser.c:202 #, c-format -msgid "cannot inherit from temporary relation \"%s\"" -msgstr "no se puede heredar de la tabla temporal «%s»" +msgid "there is no escaped character: \"%s\"" +msgstr "no hay carácter escapado: «%s»" -#: commands/tablecmds.c:1337 commands/tablecmds.c:7251 +#: utils/adt/tsvector_parser.c:319 #, 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" +msgid "wrong position info in tsvector: \"%s\"" +msgstr "información posicional incorrecta en tsvector: «%s»" -#: commands/tablecmds.c:1392 +#: utils/adt/regproc.c:123 utils/adt/regproc.c:143 #, c-format -msgid "merging multiple inherited definitions of column \"%s\"" -msgstr "mezclando múltiples definiciones heredadas de la columna «%s»" +msgid "more than one function named \"%s\"" +msgstr "existe más de una función llamada «%s»" -#: commands/tablecmds.c:1400 +#: 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 #, c-format -msgid "inherited column \"%s\" has a type conflict" -msgstr "columna heredada «%s» tiene conflicto de tipos" +msgid "operator does not exist: %s" +msgstr "el operador no existe: %s" -#: commands/tablecmds.c:1402 commands/tablecmds.c:1414 -#: commands/tablecmds.c:1574 commands/tablecmds.c:1586 -#: parser/parse_coerce.c:1438 parser/parse_coerce.c:1457 -#: parser/parse_coerce.c:1502 parser/parse_param.c:214 +#: utils/adt/regproc.c:468 utils/adt/regproc.c:488 #, c-format -msgid "%s versus %s" -msgstr "%s versus %s" +msgid "more than one operator named %s" +msgstr "existe más de un operador llamado %s" -#: commands/tablecmds.c:1412 -#, c-format -msgid "inherited column \"%s\" has a storage parameter conflict" -msgstr "columna heredada «%s» tiene conflicto de parámetros de almacenamiento" +#: utils/adt/regproc.c:630 gram.y:6218 +msgid "missing argument" +msgstr "falta un argumento" -#: commands/tablecmds.c:1564 -#, c-format -msgid "merging column \"%s\" with inherited definition" -msgstr "mezclando la columna «%s» con la definición heredada" +#: utils/adt/regproc.c:631 gram.y:6219 +msgid "Use NONE to denote the missing argument of a unary operator." +msgstr "Use NONE para denotar el argumento faltante de un operador unario." -#: commands/tablecmds.c:1572 -#, c-format -msgid "column \"%s\" has a type conflict" -msgstr "la columna «%s» tiene conflicto de tipos" +#: utils/adt/regproc.c:636 +msgid "Provide two argument types for operator." +msgstr "Provea dos tipos de argumento para un operador." -#: commands/tablecmds.c:1584 +#: utils/adt/regproc.c:810 commands/lockcmds.c:127 catalog/namespace.c:290 +#: parser/parse_relation.c:857 parser/parse_relation.c:865 #, c-format -msgid "column \"%s\" has a storage parameter conflict" -msgstr "la columna «%s» tiene conflicto de parámetros de almacenamiento" +msgid "relation \"%s\" does not exist" +msgstr "no existe la relación «%s»" -#: commands/tablecmds.c:1636 +#: utils/adt/regproc.c:973 commands/tablecmds.c:225 +#: commands/functioncmds.c:128 commands/typecmds.c:660 +#: commands/typecmds.c:2661 parser/parse_func.c:1502 parser/parse_type.c:196 #, c-format -msgid "column \"%s\" inherits conflicting default values" -msgstr "la columna «%s» hereda valores por omisión no coincidentes" +msgid "type \"%s\" does not exist" +msgstr "no existe el tipo «%s»" -#: commands/tablecmds.c:1638 -msgid "To resolve the conflict, specify a default explicitly." -msgstr "" -"Para resolver el conflicto, indique explícitamente un valor por omisión." +#: utils/adt/regproc.c:1383 +msgid "expected a left parenthesis" +msgstr "se esperaba un paréntesis izquierdo" -#: commands/tablecmds.c:1685 -#, 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" +#: utils/adt/regproc.c:1399 +msgid "expected a right parenthesis" +msgstr "se esperaba un paréntesis derecho" -#: commands/tablecmds.c:1973 -msgid "cannot rename column of typed table" -msgstr "no se puede cambiar el nombre a una columna de una tabla tipada" +#: utils/adt/regproc.c:1418 +msgid "expected a type name" +msgstr "se esperaba un nombre de tipo" -#: commands/tablecmds.c:1989 -#, c-format -msgid "\"%s\" is not a table, view, composite type or index" -msgstr "«%s» no es una tabla, vista, tipo compuesto o índice" +#: utils/adt/regproc.c:1450 +msgid "improper type name" +msgstr "el nombre de tipo no es válido" -#: commands/tablecmds.c:2055 +#: snowball/dict_snowball.c:183 #, c-format -msgid "inherited column \"%s\" must be renamed in child tables too" +msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\"" msgstr "" -"debe cambiar el nombre a la columna heredada «%s» en las tablas hijas también" +"no se encontró un analizador Snowball para el lenguaje «%s» y la " +"codificación «%s»" -#: commands/tablecmds.c:2073 -#, c-format -msgid "cannot rename system column \"%s\"" -msgstr "no se puede cambiar el nombre a la columna de sistema «%s»" +#: snowball/dict_snowball.c:206 tsearch/dict_ispell.c:75 +#: tsearch/dict_simple.c:50 +msgid "multiple StopWords parameters" +msgstr "parámetro StopWords duplicado" -#: commands/tablecmds.c:2088 -#, c-format -msgid "cannot rename inherited column \"%s\"" -msgstr "no se puede cambiar el nombre a la columna heredada «%s»" +#: snowball/dict_snowball.c:215 +msgid "multiple Language parameters" +msgstr "parámetro Language duplicado" -#: commands/tablecmds.c:2099 commands/tablecmds.c:3710 +#: snowball/dict_snowball.c:222 #, c-format -msgid "column \"%s\" of relation \"%s\" already exists" -msgstr "ya existe la columna «%s» en la relación «%s»" +msgid "unrecognized Snowball parameter: \"%s\"" +msgstr "parámetro Snowball no reconocido: «%s»" -#: commands/tablecmds.c:2164 commands/tablecmds.c:6547 -#: commands/tablecmds.c:7853 -msgid "Use ALTER TYPE instead." -msgstr "Considere usar ALTER TYPE." +#: snowball/dict_snowball.c:230 +msgid "missing Language parameter" +msgstr "falta un parámetro Language" -#. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2287 +#: bootstrap/bootstrap.c:302 #, 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" +msgid "%s: invalid command-line arguments\n" +msgstr "%s: argumentos de línea de órdenes no válidos\n" -#. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2296 +#: lib/stringinfo.c:267 #, c-format -msgid "cannot %s \"%s\" because it has pending trigger events" +msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes." msgstr "" -"no se puede hacer %s en «%s» porque tiene eventos de disparador pendientes" +"No se puede agrandar el búfer de cadena que ya tiene %d bytes en %d bytes " +"adicionales." -#: commands/tablecmds.c:2909 +#: tsearch/ts_locale.c:177 #, c-format -msgid "cannot rewrite system relation \"%s\"" -msgstr "no se puede reescribir la relación de sistema «%s»" - -#: commands/tablecmds.c:2919 -msgid "cannot rewrite temporary tables of other sessions" -msgstr "no se puede reescribir tablas temporales de otras sesiones" +msgid "line %d of configuration file \"%s\": \"%s\"" +msgstr "línea %d del archivo de configuración «%s»: «%s»" -#: commands/tablecmds.c:3243 +#: tsearch/ts_locale.c:182 libpq/hba.c:781 libpq/hba.c:797 libpq/hba.c:833 +#: libpq/hba.c:855 libpq/hba.c:864 libpq/hba.c:887 libpq/hba.c:899 +#: libpq/hba.c:912 libpq/hba.c:927 libpq/hba.c:982 libpq/hba.c:1002 +#: libpq/hba.c:1016 libpq/hba.c:1033 libpq/hba.c:1046 libpq/hba.c:1062 +#: libpq/hba.c:1077 libpq/hba.c:1119 libpq/hba.c:1151 libpq/hba.c:1162 +#: libpq/hba.c:1182 libpq/hba.c:1193 libpq/hba.c:1204 libpq/hba.c:1221 +#: libpq/hba.c:1242 libpq/hba.c:1272 libpq/hba.c:1284 libpq/hba.c:1297 +#: libpq/hba.c:1331 libpq/hba.c:1405 libpq/hba.c:1423 libpq/hba.c:1444 +#: libpq/hba.c:1475 libpq/hba.c:1485 #, c-format -msgid "column \"%s\" contains null values" -msgstr "la columna «%s» contiene valores nulos" +msgid "line %d of configuration file \"%s\"" +msgstr "línea %d del archivo de configuración «%s»" -#: commands/tablecmds.c:3257 +#: tsearch/ts_locale.c:302 #, c-format -msgid "check constraint \"%s\" is violated by some row" -msgstr "la restricción check «%s» es violada por alguna fila" +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" -#: commands/tablecmds.c:3348 rewrite/rewriteDefine.c:252 +#: tsearch/dict_thesaurus.c:180 #, c-format -msgid "\"%s\" is not a table or view" -msgstr "«%s» no es una tabla o vista" +msgid "could not open thesaurus file \"%s\": %m" +msgstr "no se pudo abrir el archivo del tesauro «%s»: %m" -#: commands/tablecmds.c:3384 commands/tablecmds.c:4136 -#, c-format -msgid "\"%s\" is not a table or index" -msgstr "«%s» no es una tabla o índice" +#: tsearch/dict_thesaurus.c:213 +msgid "unexpected delimiter" +msgstr "delimitador inesperado" + +#: tsearch/dict_thesaurus.c:263 tsearch/dict_thesaurus.c:279 +msgid "unexpected end of line or lexeme" +msgstr "fin de línea o lexema inesperado" + +#: tsearch/dict_thesaurus.c:288 +msgid "unexpected end of line" +msgstr "fin de línea inesperado" -#: commands/tablecmds.c:3539 +#: tsearch/dict_thesaurus.c:412 #, c-format -msgid "cannot alter table \"%s\" because column \"%s\".\"%s\" uses its rowtype" +msgid "" +"thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)" msgstr "" -"no se puede alterar la tabla «%s» porque la columna «%s».«%s» usa su tipo" +"la palabra muestra «%s» del tesauro no es reconocido por el subdiccionario " +"(regla %d)" -#: commands/tablecmds.c:3546 -#, 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:3593 -msgid "cannot add column to typed table" -msgstr "no se puede agregar una columna a una tabla tipada" - -#: commands/tablecmds.c:3622 -msgid "column must be added to child tables too" -msgstr "la columna debe ser agregada a las tablas hijas también" - -#: commands/tablecmds.c:3667 commands/tablecmds.c:7407 +# XXX -- stopword? +#: tsearch/dict_thesaurus.c:418 #, 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»" +msgid "thesaurus sample word \"%s\" is a stop word (rule %d)" +msgstr "la palabra muestra «%s» del tesauro es una stopword (regla %d)" -#: commands/tablecmds.c:3674 -#, c-format -msgid "child table \"%s\" has a conflicting \"%s\" column" -msgstr "tabla hija «%s» tiene una columna «%s» que entra en conflicto" +# XXX -- stopword? +#: tsearch/dict_thesaurus.c:421 +msgid "Use \"?\" to represent a stop word within a sample phrase." +msgstr "Use «?» para representar una stopword en una frase muestra." -#: commands/tablecmds.c:3686 +# XXX -- stopword? +#: tsearch/dict_thesaurus.c:567 #, 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»" +msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)" +msgstr "la palabra sustituta «%s» del tesauro es una stopword (regla %d)" -#: commands/tablecmds.c:3958 commands/tablecmds.c:4048 -#: commands/tablecmds.c:4093 commands/tablecmds.c:4189 -#: commands/tablecmds.c:4233 commands/tablecmds.c:4312 -#: commands/tablecmds.c:5846 +#: tsearch/dict_thesaurus.c:574 #, c-format -msgid "cannot alter system column \"%s\"" -msgstr "no se puede alterar columna de sistema «%s»" +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)" -#: commands/tablecmds.c:3992 +#: tsearch/dict_thesaurus.c:586 #, c-format -msgid "column \"%s\" is in a primary key" -msgstr "la columna «%s» está en la llave primaria" +msgid "thesaurus substitute phrase is empty (rule %d)" +msgstr "la frase sustituta del tesauro está vacía (regla %d)" -#: commands/tablecmds.c:4163 -#, c-format -msgid "statistics target %d is too low" -msgstr "el valor de estadísticas %d es demasiado bajo" +#: tsearch/dict_thesaurus.c:615 tsearch/dict_ispell.c:53 +msgid "multiple DictFile parameters" +msgstr "parámetro DictFile duplicado" -#: commands/tablecmds.c:4171 -#, c-format -msgid "lowering statistics target to %d" -msgstr "bajando el valor de estadísticas a %d" +#: tsearch/dict_thesaurus.c:624 +msgid "multiple Dictionary parameters" +msgstr "parámetro Dictionary duplicado" -#: commands/tablecmds.c:4293 +#: tsearch/dict_thesaurus.c:631 #, c-format -msgid "invalid storage type \"%s\"" -msgstr "tipo de almacenamiento no válido «%s»" +msgid "unrecognized Thesaurus parameter: \"%s\"" +msgstr "parámetro no reconocido de tesauro: «%s»" -#: commands/tablecmds.c:4324 -#, 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" +#: tsearch/dict_thesaurus.c:639 tsearch/dict_ispell.c:103 +msgid "missing DictFile parameter" +msgstr "falta un parámetro DictFile" -#: commands/tablecmds.c:4353 -msgid "cannot drop column from typed table" -msgstr "no se pueden eliminar columnas de una tabla tipada" +#: tsearch/dict_thesaurus.c:643 +msgid "missing Dictionary parameter" +msgstr "falta un paramétro Dictionary" -#: commands/tablecmds.c:4392 -#, c-format -msgid "column \"%s\" of relation \"%s\" does not exist, skipping" -msgstr "no existe la columna «%s» en la relación «%s», saltando" +#: 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 "la palabra es demasiado larga para ser indexada" -#: commands/tablecmds.c:4405 +#: tsearch/ts_parse.c:392 tsearch/ts_parse.c:399 tsearch/ts_parse.c:562 +#: tsearch/ts_parse.c:569 #, c-format -msgid "cannot drop system column \"%s\"" -msgstr "no se puede eliminar la columna de sistema «%s»" +msgid "Words longer than %d characters are ignored." +msgstr "Las palabras más largas que %d caracteres son ignoradas." + +#: tsearch/wparser.c:314 +msgid "text search parser does not support headline creation" +msgstr "" +"el analizador de búsqueda en texto no soporta creación de encabezados " +"(headline)" -#: commands/tablecmds.c:4412 +#: tsearch/wparser_def.c:2551 #, c-format -msgid "cannot drop inherited column \"%s\"" -msgstr "no se puede eliminar la columna heredada «%s»" +msgid "unrecognized headline parameter: \"%s\"" +msgstr "parámetro de encabezado (headline) no reconocido: «%s»" -#: commands/tablecmds.c:4743 -msgid "constraint must be added to child tables too" -msgstr "la restricción debe ser agregada a las tablas hijas también" +#: tsearch/wparser_def.c:2560 +msgid "MinWords should be less than MaxWords" +msgstr "MinWords debería ser menor que MaxWords" -#: commands/tablecmds.c:4830 -msgid "cannot reference temporary table from permanent table constraint" -msgstr "" -"no se puede referir a una tabla temporal en una restricción de una tabla " -"permanente" +#: tsearch/wparser_def.c:2564 +msgid "MinWords should be positive" +msgstr "MinWords debería ser positivo" -#: commands/tablecmds.c:4837 -msgid "cannot reference permanent table from temporary table constraint" -msgstr "" -"no se puede referir a una tabla permanente en una restricción de una tabla " -"temporal" +#: tsearch/wparser_def.c:2568 +msgid "ShortWord should be >= 0" +msgstr "ShortWord debería ser >= 0" -#: commands/tablecmds.c:4897 -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" +#: tsearch/wparser_def.c:2572 +msgid "MaxFragments should be >= 0" +msgstr "MaxFragments debería ser >= 0" -#: commands/tablecmds.c:4986 +#: tsearch/spell.c:276 #, c-format -msgid "foreign key constraint \"%s\" cannot be implemented" -msgstr "la restricción de llave foránea «%s» no puede ser implementada" +msgid "could not open dictionary file \"%s\": %m" +msgstr "no se pudo abrir el archivo de diccionario «%s»: %m" -#: commands/tablecmds.c:4989 -#, 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" +#: tsearch/spell.c:518 tsearch/spell.c:535 tsearch/spell.c:552 +#: tsearch/spell.c:569 tsearch/spell.c:591 gram.y:12508 gram.y:12525 +msgid "syntax error" +msgstr "error de sintaxis" -#: commands/tablecmds.c:5084 -#, 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" +#: tsearch/spell.c:596 tsearch/spell.c:842 tsearch/spell.c:862 +msgid "multibyte flag character is not allowed" +msgstr "los caracteres bandera multibyte no están permitidos" -#: commands/tablecmds.c:5089 +#: tsearch/spell.c:629 tsearch/spell.c:687 tsearch/spell.c:780 #, 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" +msgid "could not open affix file \"%s\": %m" +msgstr "no se pudo abrir el archivo de afijos «%s»: %m" -#: commands/tablecmds.c:5154 -#, 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»" +#: tsearch/spell.c:675 +msgid "Ispell dictionary supports only default flag value" +msgstr "el diccionario Ispell sólo permite el valor de bandera «default»" -#: commands/tablecmds.c:5171 -#, c-format -msgid "there is no primary key for referenced table \"%s\"" -msgstr "no hay llave primaria para la tabla referida «%s»" +#: tsearch/spell.c:873 +msgid "wrong affix file format for flag" +msgstr "formato de archivo de afijos incorrecto para la bandera" -#: commands/tablecmds.c:5321 -#, 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»" +#: tsearch/dict_ispell.c:64 +msgid "multiple AffFile parameters" +msgstr "parámetro AffFile duplicado" -#: commands/tablecmds.c:5326 +#: tsearch/dict_ispell.c:83 #, 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»" +msgid "unrecognized Ispell parameter: \"%s\"" +msgstr "parámetro Ispell no reconocido: «%s»" -#: commands/tablecmds.c:5656 -#, 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»" +#: tsearch/dict_ispell.c:97 +msgid "missing AffFile parameter" +msgstr "falta un parámetro AffFile" -#: commands/tablecmds.c:5683 commands/tablecmds.c:5797 +#: tsearch/ts_utils.c:53 #, c-format -msgid "constraint \"%s\" of relation \"%s\" does not exist" -msgstr "no existe la restricción «%s» en la relación «%s»" +msgid "invalid text search configuration file name \"%s\"" +msgstr "nombre de configuración de búsqueda en texto «%s» no válido" -#: commands/tablecmds.c:5689 +#: tsearch/ts_utils.c:91 #, c-format -msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" -msgstr "no existe la restricción «%s» en la relación «%s», saltando" - -#: commands/tablecmds.c:5830 -msgid "cannot alter column type of typed table" -msgstr "no se puede cambiar el tipo de una columna de una tabla tipada" +msgid "could not open stop-word file \"%s\": %m" +msgstr "no se pudo abrir el archivo de stopwords «%s»: %m" -#: commands/tablecmds.c:5853 +#: tsearch/dict_synonym.c:119 #, c-format -msgid "cannot alter inherited column \"%s\"" -msgstr "no se puede alterar la columna heredada «%s»" - -#: commands/tablecmds.c:5888 -msgid "transform expression must not return a set" -msgstr "la expresión de transformación no puede retornar conjuntos" +msgid "unrecognized synonym parameter: \"%s\"" +msgstr "parámetro de sinónimo no reconocido «%s»" -#: commands/tablecmds.c:5894 -msgid "cannot use subquery in transform expression" -msgstr "no se puede usar una subconsulta en una expresión de transformación" +#: tsearch/dict_synonym.c:126 +msgid "missing Synonyms parameter" +msgstr "falta un parámetro Synonyms" -#: commands/tablecmds.c:5898 -msgid "cannot use aggregate function in transform expression" -msgstr "" -"no se puede usar una función de agregación en una expresión de transformación" +#: tsearch/dict_synonym.c:133 +#, c-format +msgid "could not open synonym file \"%s\": %m" +msgstr "no se pudo abrir el archivo de sinónimos «%s»: %m" -#: commands/tablecmds.c:5902 -msgid "cannot use window function in transform expression" -msgstr "" -"no se puede usar una función de ventana deslizante en una expresión de " -"transformación" +#: tsearch/dict_simple.c:59 +msgid "multiple Accept parameters" +msgstr "parámetro Accept duplicado" -#: commands/tablecmds.c:5920 +#: tsearch/dict_simple.c:67 #, c-format -msgid "column \"%s\" cannot be cast to type %s" -msgstr "la columna «%s» no puede convertirse al tipo %s" +msgid "unrecognized simple dictionary parameter: \"%s\"" +msgstr "parámetro del diccionario simple no reconocido: «%s»" -#: commands/tablecmds.c:5946 +#: tcop/pquery.c:661 #, c-format -msgid "type of inherited column \"%s\" must be changed in child tables too" +msgid "bind message has %d result formats but query has %d columns" msgstr "" -"debe cambiar el tipo a la columna heredada «%s» en las tablas hijas también" +"el mensaje de enlace (bind) tiene %d formatos de resultado pero la consulta " +"tiene %d columnas" -#: commands/tablecmds.c:5985 +#: tcop/pquery.c:739 tcop/pquery.c:1403 commands/portalcmds.c:341 #, c-format -msgid "cannot alter type of column \"%s\" twice" -msgstr "no se puede alterar el tipo de la columna «%s» dos veces" +msgid "portal \"%s\" cannot be run" +msgstr "el portal «%s» no puede ser ejecutado" -#: commands/tablecmds.c:6019 -#, c-format -msgid "default for column \"%s\" cannot be cast to type %s" -msgstr "" -"el valor por omisión para la columna «%s» no puede ser convertido al tipo %s" +#: tcop/pquery.c:971 +msgid "cursor can only scan forward" +msgstr "el cursor sólo se puede desplazar hacia adelante" -#: commands/tablecmds.c:6145 -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" +#: tcop/pquery.c:972 +msgid "Declare it with SCROLL option to enable backward scan." +msgstr "Declárelo con SCROLL para permitirle desplazar hacia atrás." -#: commands/tablecmds.c:6146 commands/tablecmds.c:6164 +#: tcop/fastpath.c:109 tcop/fastpath.c:485 tcop/fastpath.c:615 #, c-format -msgid "%s depends on column \"%s\"" -msgstr "%s depende de la columna «%s»" +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" -#: commands/tablecmds.c:6163 -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" +#: tcop/fastpath.c:180 tcop/fastpath.c:554 tcop/postgres.c:1666 +#: access/common/printtup.c:278 +#, c-format +msgid "unsupported format code: %d" +msgstr "código de formato no soportado: %d" -#: commands/tablecmds.c:6515 +#: tcop/fastpath.c:221 catalog/aclchk.c:3546 catalog/aclchk.c:4296 #, c-format -msgid "cannot change owner of index \"%s\"" -msgstr "no se puede cambiar el dueño del índice «%s»" +msgid "function with OID %u does not exist" +msgstr "no existe la función con OID %u" -#: commands/tablecmds.c:6517 -msgid "Change the ownership of the index's table, instead." +#: tcop/fastpath.c:290 tcop/postgres.c:351 tcop/postgres.c:374 +#: commands/copy.c:542 commands/copy.c:561 commands/copy.c:565 +msgid "unexpected EOF on client connection" +msgstr "se encontró fin de archivo inesperado en la conexión del cliente" + +#: tcop/fastpath.c:303 tcop/postgres.c:919 tcop/postgres.c:1229 +#: tcop/postgres.c:1510 tcop/postgres.c:1952 tcop/postgres.c:2320 +#: tcop/postgres.c:2401 +msgid "" +"current transaction is aborted, commands ignored until end of transaction " +"block" msgstr "" -"Considere cambiar el dueño de la tabla en vez de cambiar el dueño del índice." +"transacción abortada, las órdenes serán ignoradas hasta el fin de bloque de " +"transacción" -#: commands/tablecmds.c:6533 +#: tcop/fastpath.c:331 #, c-format -msgid "cannot change owner of sequence \"%s\"" -msgstr "no se puede cambiar el dueño de la secuencia «%s»" +msgid "fastpath function call: \"%s\" (OID %u)" +msgstr "llamada a función fastpath: «%s» (OID %u)" -#: commands/tablecmds.c:6535 commands/tablecmds.c:7843 +#: tcop/fastpath.c:411 tcop/postgres.c:1089 tcop/postgres.c:1376 +#: tcop/postgres.c:1793 tcop/postgres.c:2010 #, c-format -msgid "Sequence \"%s\" is linked to table \"%s\"." -msgstr "La secuencia «%s» está enlazada a la tabla «%s»." +msgid "duration: %s ms" +msgstr "duración: %s ms" -#: commands/tablecmds.c:6556 commands/tablecmds.c:7861 +#: tcop/fastpath.c:415 #, c-format -msgid "\"%s\" is not a table, view, or sequence" -msgstr "«%s» no es una tabla, vista o secuencia" - -#: commands/tablecmds.c:6815 -msgid "cannot have multiple SET TABLESPACE subcommands" -msgstr "no se pueden tener múltiples subórdenes SET TABLESPACE" +msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" +msgstr "duración: %s ms llamada a función fastpath: «%s» (OID %u)" -#: commands/tablecmds.c:6867 +#: tcop/fastpath.c:453 tcop/fastpath.c:580 #, c-format -msgid "\"%s\" is not a table, index, or TOAST table" -msgstr "«%s» no es una tabla, índice o tabla TOAST" - -#: commands/tablecmds.c:6988 +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:461 #, c-format -msgid "cannot move system relation \"%s\"" -msgstr "no se puede mover la relación de sistema «%s»" +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" -#: commands/tablecmds.c:7004 -msgid "cannot move temporary tables of other sessions" -msgstr "no se pueden mover tablas temporales de otras sesiones" +#: tcop/fastpath.c:548 tcop/fastpath.c:631 +#, 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" -#: commands/tablecmds.c:7193 -msgid "cannot change inheritance of typed table" -msgstr "no se puede cambiar la herencia de una tabla tipada" +#: tcop/postgres.c:401 tcop/postgres.c:413 tcop/postgres.c:424 +#: tcop/postgres.c:436 tcop/postgres.c:4195 +#, c-format +msgid "invalid frontend message type %d" +msgstr "el tipo de mensaje de frontend %d no es válido" -#: commands/tablecmds.c:7278 -msgid "circular inheritance not allowed" -msgstr "la herencia circular no está permitida" +#: tcop/postgres.c:860 +#, c-format +msgid "statement: %s" +msgstr "sentencia: %s" -#: commands/tablecmds.c:7279 +#: tcop/postgres.c:1094 #, c-format -msgid "\"%s\" is already a child of \"%s\"." -msgstr "«%s» ya es un hijo de «%s»." +msgid "duration: %s ms statement: %s" +msgstr "duración: %s ms sentencia: %s" -#: commands/tablecmds.c:7287 +#: tcop/postgres.c:1144 #, 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" +msgid "parse %s: %s" +msgstr "parse %s: %s" + +#: tcop/postgres.c:1202 +msgid "cannot insert multiple commands into a prepared statement" +msgstr "no se pueden insertar múltiples órdenes en una sentencia preparada" -#: commands/tablecmds.c:7414 +#: tcop/postgres.c:1269 commands/prepare.c:122 parser/parse_param.c:303 #, c-format -msgid "column \"%s\" in child table must be marked NOT NULL" -msgstr "columna «%s» en tabla hija debe marcarse como NOT NULL" +msgid "could not determine data type of parameter $%d" +msgstr "no se pudo determinar el tipo del parámetro $%d" -#: commands/tablecmds.c:7430 +#: tcop/postgres.c:1381 #, c-format -msgid "child table is missing column \"%s\"" -msgstr "tabla hija no tiene la columna «%s»" +msgid "duration: %s ms parse %s: %s" +msgstr "duración: %s ms parse: %s: %s" -#: commands/tablecmds.c:7509 +#: tcop/postgres.c:1427 #, 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»" +msgid "bind %s to %s" +msgstr "bind %s a %s" + +#: tcop/postgres.c:1446 tcop/postgres.c:2300 +msgid "unnamed prepared statement does not exist" +msgstr "no existe una sentencia preparada sin nombre" -#: commands/tablecmds.c:7533 +#: tcop/postgres.c:1488 #, c-format -msgid "child table is missing constraint \"%s\"" -msgstr "tabla hija no tiene la restricción «%s»" +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" -#: commands/tablecmds.c:7614 +#: tcop/postgres.c:1494 #, 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»" +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" -#: commands/tablecmds.c:7842 -msgid "cannot move an owned sequence into another schema" +#: tcop/postgres.c:1659 +#, c-format +msgid "incorrect binary data format in bind parameter %d" msgstr "" -"no se puede mover una secuencia enlazada a una tabla hacia otro esquema" +"el formato de datos binarios es incorrecto en el parámetro de enlace %d" -#: commands/tablecmds.c:7871 +#: tcop/postgres.c:1798 #, c-format -msgid "relation \"%s\" is already in schema \"%s\"" -msgstr "la relación «%s» ya está en el esquema «%s»" +msgid "duration: %s ms bind %s%s%s: %s" +msgstr "duración: %s ms bind %s%s%s: %s" -#: commands/tablecmds.c:7934 +#: tcop/postgres.c:1846 tcop/postgres.c:2387 #, c-format -msgid "relation \"%s\" already exists in schema \"%s\"" -msgstr "ya existe una relación llamada «%s» en el esquema «%s»" +msgid "portal \"%s\" does not exist" +msgstr "no existe el portal «%s»" + +#: tcop/postgres.c:1933 tcop/postgres.c:2018 +msgid "execute fetch from" +msgstr "ejecutar fetch desde" + +#: tcop/postgres.c:1934 tcop/postgres.c:2019 +msgid "execute" +msgstr "ejecutar" -#: commands/tablespace.c:157 commands/tablespace.c:174 -#: commands/tablespace.c:185 commands/tablespace.c:193 -#: commands/tablespace.c:598 storage/file/copydir.c:61 +#: tcop/postgres.c:1931 #, c-format -msgid "could not create directory \"%s\": %m" -msgstr "no se pudo crear el directorio «%s»: %m" +msgid "%s %s%s%s: %s" +msgstr "%s %s%s%s: %s" -#: commands/tablespace.c:204 +#: tcop/postgres.c:2015 #, c-format -msgid "could not stat directory \"%s\": %m" -msgstr "no se pudo verificar el directorio «%s»: %m" +msgid "duration: %s ms %s %s%s%s: %s" +msgstr "duración: %s ms %s %s%s%s: %s" -#: commands/tablespace.c:213 +#: tcop/postgres.c:2141 #, c-format -msgid "\"%s\" exists but is not a directory" -msgstr "«%s» existe pero no es un directorio" +msgid "prepare: %s" +msgstr "prepare: %s" -#: commands/tablespace.c:243 +#: tcop/postgres.c:2204 #, c-format -msgid "permission denied to create tablespace \"%s\"" -msgstr "se ha denegado el permiso para crear el tablespace «%s»" +msgid "parameters: %s" +msgstr "parámetros: %s" -#: commands/tablespace.c:245 -msgid "Must be superuser to create a tablespace." -msgstr "Debe ser superusuario para crear tablespaces." +#: tcop/postgres.c:2223 +msgid "abort reason: recovery conflict" +msgstr "razón para abortar: conflicto en la recuperación" -#: commands/tablespace.c:261 -msgid "tablespace location cannot contain single quotes" -msgstr "la ruta del tablespace no puede contener comillas simples" +#: tcop/postgres.c:2239 +msgid "User was holding shared buffer pin for too long." +msgstr "El usuario mantuvo el búfer compartido «clavado» por demasiado tiempo." -#: commands/tablespace.c:271 -msgid "tablespace location must be an absolute path" -msgstr "la ubicación del tablespace debe ser una ruta absoluta" +#: tcop/postgres.c:2242 +msgid "User was holding a relation lock for too long." +msgstr "El usuario mantuvo una relación bloqueada por demasiado tiempo." -#: commands/tablespace.c:282 -#, c-format -msgid "tablespace location \"%s\" is too long" -msgstr "la ruta «%s» del tablespace es demasiado larga" +#: tcop/postgres.c:2245 +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." -#: commands/tablespace.c:292 commands/tablespace.c:824 -#, c-format -msgid "unacceptable tablespace name \"%s\"" -msgstr "el nombre de tablespace «%s» es inaceptable" +#: tcop/postgres.c:2248 +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." -#: commands/tablespace.c:294 commands/tablespace.c:825 -msgid "The prefix \"pg_\" is reserved for system tablespaces." -msgstr "El prefijo «pg_» está reservado para tablespaces del sistema." +#: tcop/postgres.c:2251 storage/ipc/standby.c:498 +msgid "User transaction caused buffer deadlock with recovery." +msgstr "La transacción del usuario causó un «deadlock» con la recuperación." -#: commands/tablespace.c:304 commands/tablespace.c:837 -#, c-format -msgid "tablespace \"%s\" already exists" -msgstr "el tablespace «%s» ya existe" +#: tcop/postgres.c:2254 +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." -#: commands/tablespace.c:372 commands/tablespace.c:524 -msgid "tablespaces are not supported on this platform" -msgstr "tablespaces no están soportados en esta plataforma" +#: tcop/postgres.c:2588 +msgid "terminating connection because of crash of another server process" +msgstr "terminando la conexión debido a una falla en otro proceso servidor" -#: commands/tablespace.c:416 -#, c-format -msgid "tablespace \"%s\" does not exist, skipping" -msgstr "el tablespace «%s» no existe, ignorando" +#: tcop/postgres.c:2589 +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." -#: commands/tablespace.c:481 -#, c-format -msgid "tablespace \"%s\" is not empty" -msgstr "el tablespace «%s» no está vacío" +#: tcop/postgres.c:2593 tcop/postgres.c:2943 +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." -#: commands/tablespace.c:555 -#, c-format -msgid "directory \"%s\" does not exist" -msgstr "no existe el directorio «%s»" +#: tcop/postgres.c:2705 +msgid "floating-point exception" +msgstr "excepción de coma flotante" -#: commands/tablespace.c:556 -#, c-format +#: tcop/postgres.c:2706 msgid "" -"Create directory \"%s\" for this tablespace before restarting the server." +"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 "" -"Cree el directorio «%s» para este tablespace antes de iniciar el servidor." +"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." -#: commands/tablespace.c:561 -#, c-format -msgid "could not set permissions on directory \"%s\": %m" -msgstr "no se pudo definir los permisos del directorio «%s»: %m" +#: tcop/postgres.c:2874 +msgid "terminating autovacuum process due to administrator command" +msgstr "terminando el proceso autovacuum debido a una orden del administrador" -#: commands/tablespace.c:593 -#, c-format -msgid "directory \"%s\" already in use as a tablespace" -msgstr "el directorio «%s» ya está siendo usado como tablespace" +#: tcop/postgres.c:2880 tcop/postgres.c:2890 tcop/postgres.c:2941 +msgid "terminating connection due to conflict with recovery" +msgstr "terminando la conexión debido a un conflicto con la recuperación" -#: commands/tablespace.c:608 commands/tablespace.c:745 -#, c-format -msgid "could not remove symbolic link \"%s\": %m" -msgstr "no se pudo eliminar el enlace simbólico «%s»: %m" +#: tcop/postgres.c:2896 +msgid "terminating connection due to administrator command" +msgstr "terminando la conexión debido a una orden del administrador" -#: commands/tablespace.c:618 -#, c-format -msgid "could not create symbolic link \"%s\": %m" -msgstr "no se pudo crear el enlace simbólico «%s»: %m" +#: tcop/postgres.c:2911 +msgid "canceling authentication due to timeout" +msgstr "" +"cancelando la autentificación debido a que se agotó el tiempo de espera" -#: commands/tablespace.c:679 storage/file/copydir.c:67 -#: storage/file/copydir.c:106 storage/file/fd.c:1600 -#: postmaster/postmaster.c:1142 utils/adt/genfile.c:244 utils/adt/misc.c:213 -#: utils/misc/tzparser.c:345 -#, c-format -msgid "could not open directory \"%s\": %m" -msgstr "no se pudo abrir el directorio «%s»: %m" +#: tcop/postgres.c:2920 +msgid "canceling statement due to statement timeout" +msgstr "" +"cancelando la sentencia debido a que se agotó el tiempo de espera de " +"sentencias" -#: commands/tablespace.c:709 commands/tablespace.c:721 -#: commands/tablespace.c:737 -#, c-format -msgid "could not remove directory \"%s\": %m" -msgstr "no se pudo eliminar el directorio «%s»: %m" +#: tcop/postgres.c:2929 +msgid "canceling autovacuum task" +msgstr "cancelando tarea de autovacuum" -#: commands/tablespace.c:1421 -#, c-format -msgid "tablespace %u is not empty" -msgstr "el tablespace %u no está vacío" +#: tcop/postgres.c:2948 storage/ipc/standby.c:497 +msgid "canceling statement due to conflict with recovery" +msgstr "cancelando la sentencia debido a un conflicto con la recuperación" -#: commands/trigger.c:192 -msgid "TRUNCATE FOR EACH ROW triggers are not supported" -msgstr "los triggers TRUNCATE FOR EACH ROW no están soportados" +#: tcop/postgres.c:2964 +msgid "canceling statement due to user request" +msgstr "cancelando la sentencia debido a una petición del usuario" -#: commands/trigger.c:233 -msgid "cannot use subquery in trigger WHEN condition" -msgstr "no se puede usar una subconsulta en la condición WHEN de un trigger" +#: tcop/postgres.c:3092 tcop/postgres.c:3114 +msgid "stack depth limit exceeded" +msgstr "límite de profundidad de stack alcanzado" -#: commands/trigger.c:237 -msgid "cannot use aggregate function in trigger WHEN condition" +#: tcop/postgres.c:3093 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 "" -"no se pueden usar funciones de agregación en condición WHEN de un trigger" +"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." -#: commands/trigger.c:241 -msgid "cannot use window function in trigger WHEN condition" -msgstr "" -"no se pueden usar funciones de ventana deslizante en condición WHEN de un " -"trigger" +#: tcop/postgres.c:3131 +#, c-format +msgid "\"max_stack_depth\" must not exceed %ldkB." +msgstr "«max_stack_depth» no debe exceder %ldkB." -#: commands/trigger.c:261 commands/trigger.c:274 -msgid "statement trigger's WHEN condition cannot reference column values" +#: tcop/postgres.c:3133 +msgid "" +"Increase the platform's stack depth limit via \"ulimit -s\" or local " +"equivalent." msgstr "" -"la condición WHEN de un trigger por sentencias no pueden referirse a los " -"valores de las columnas" +"Incremente el límite de profundidad del stack del sistema usando «ulimit -s» " +"o el equivalente de su sistema." -#: commands/trigger.c:266 -msgid "INSERT trigger's WHEN condition cannot reference OLD values" +#: tcop/postgres.c:3474 +msgid "invalid command-line arguments for server process" msgstr "" -"la condición WHEN de un trigger en INSERT no puede referirse a valores OLD" +"los argumentos de línea de órdenes no son válidos para proceso servidor" -#: commands/trigger.c:279 -msgid "DELETE trigger's WHEN condition cannot reference NEW values" -msgstr "" -"la condición WHEN de un trigger en DELETE no puede referirse a valores NEW" +#: tcop/postgres.c:3475 tcop/postgres.c:3481 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Pruebe «%s --help» para mayor información." -#: commands/trigger.c:284 -msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns" -msgstr "" -"la condición WHEN de un trigger BEFORE no puede referirse a columnas de " -"sistema de NEW" +#: tcop/postgres.c:3479 +#, c-format +msgid "%s: invalid command-line arguments" +msgstr "%s: argumentos de línea de órdenes no válidos" -#: commands/trigger.c:322 +#: tcop/postgres.c:3566 #, 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»" +msgid "%s: no database nor user name specified" +msgstr "%s: no se ha especificado base de datos ni usuario" -#: commands/trigger.c:329 +#: tcop/postgres.c:4105 #, c-format -msgid "function %s must return type \"trigger\"" -msgstr "la función %s debe retornar tipo «trigger»" +msgid "invalid CLOSE message subtype %d" +msgstr "subtipo %d de mensaje CLOSE no válido" -#: commands/trigger.c:438 commands/trigger.c:1152 +#: tcop/postgres.c:4138 #, c-format -msgid "trigger \"%s\" for relation \"%s\" already exists" -msgstr "ya existe un trigger «%s» para la relación «%s»" - -#: commands/trigger.c:719 -msgid "Found referenced table's UPDATE trigger." -msgstr "Se encontró el disparador UPDATE de la tabla referenciada." - -#: commands/trigger.c:720 -msgid "Found referenced table's DELETE trigger." -msgstr "Se encontró el disparador DELETE de la tabla referenciada." - -#: commands/trigger.c:721 -msgid "Found referencing table's trigger." -msgstr "Se encontró el disparador en la tabla que hace referencia." +msgid "invalid DESCRIBE message subtype %d" +msgstr "subtipo %d de mensaje DESCRIBE no válido" -#: commands/trigger.c:830 commands/trigger.c:846 +#: tcop/postgres.c:4372 #, c-format -msgid "ignoring incomplete trigger group for constraint \"%s\" %s" +msgid "" +"disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s" +"%s" msgstr "" -"ignorando el grupo de disparadores incompleto para la restricción «%s» %s" +"desconexión: duración de sesión: %d:%02d:%02d.%03d usuario=%s base=%s host=%s" +"%s%s" -#: commands/trigger.c:858 +#: tcop/utility.c:95 commands/tablecmds.c:817 commands/tablecmds.c:1150 +#: commands/tablecmds.c:1998 commands/tablecmds.c:3740 +#: commands/tablecmds.c:5483 commands/trigger.c:192 commands/trigger.c:1105 +#: rewrite/rewriteDefine.c:263 #, c-format -msgid "converting trigger group into constraint \"%s\" %s" -msgstr "convirtiendo el grupo de disparadores en la restricción «%s» %s" +msgid "permission denied: \"%s\" is a system catalog" +msgstr "permiso denegado: «%s» es un catálogo de sistema" -#: commands/trigger.c:998 +#. translator: %s is name of a SQL command, eg CREATE +#: tcop/utility.c:253 #, c-format -msgid "trigger \"%s\" for table \"%s\" does not exist, skipping" -msgstr "no existe el trigger «%s» para la tabla «%s», ignorando" +msgid "cannot execute %s in a read-only transaction" +msgstr "no se puede ejecutar %s en una transacción de sólo lectura" -#: commands/trigger.c:1273 +#. translator: %s is name of a SQL command, eg CREATE +#: tcop/utility.c:272 #, c-format -msgid "permission denied: \"%s\" is a system trigger" -msgstr "permiso denegado: «%s» es un trigger de sistema" +msgid "cannot execute %s during recovery" +msgstr "no se puede ejecutar %s durante la recuperación" -#: commands/trigger.c:1848 +#. translator: %s is name of a SQL command, eg PREPARE +#: tcop/utility.c:290 #, c-format -msgid "trigger function %u returned null value" -msgstr "la función de trigger %u ha retornado un valor null" - -#: commands/trigger.c:1908 commands/trigger.c:2023 commands/trigger.c:2160 -#: commands/trigger.c:2304 -msgid "BEFORE STATEMENT trigger cannot return a value" -msgstr "un trigger BEFORE STATEMENT no puede retornar un valor" +msgid "cannot execute %s within security-restricted operation" +msgstr "" +"no se puede ejecutar %s durante una operación restringida por seguridad" -#: commands/trigger.c:2366 executor/execMain.c:1544 -#: executor/nodeLockRows.c:136 executor/nodeModifyTable.c:334 -#: executor/nodeModifyTable.c:522 -msgid "could not serialize access due to concurrent update" -msgstr "no se pudo serializar el acceso debido a un update concurrente" +#: tcop/utility.c:1198 +msgid "must be superuser to do CHECKPOINT" +msgstr "debe ser superusuario para ejecutar CHECKPOINT" -#: commands/trigger.c:3981 +#: access/common/tupconvert.c:107 #, c-format -msgid "constraint \"%s\" is not deferrable" -msgstr "la restricción «%s» no es postergable" +msgid "Returned type %s does not match expected type %s in column %d." +msgstr "" +"El tipo retornado %s no coincide con el tipo de registro esperado %s en la " +"columna %d." -#: commands/trigger.c:4004 +#: access/common/tupconvert.c:135 #, c-format -msgid "constraint \"%s\" does not exist" -msgstr "no existe la restricción «%s»" +msgid "" +"Number of returned columns (%d) does not match expected column count (%d)." +msgstr "" +"La cantidad de columnas retornadas (%d) no coincide con la cantidad esperada " +"de columnas (%d)." -#: commands/tsearchcmds.c:109 commands/tsearchcmds.c:929 +#: access/common/tupconvert.c:240 #, c-format -msgid "function %s should return type %s" -msgstr "la función %s debería retornar el tipo %s" - -#: commands/tsearchcmds.c:178 -msgid "must be superuser to create text search parsers" -msgstr "debe ser superusuario para crear analizadores de búsqueda en texto" +msgid "" +"Attribute \"%s\" of type %s does not match corresponding attribute of type " +"%s." +msgstr "" +"El atributo «%s» de tipo %s no coincide el atributo correspondiente de tipo " +"%s." -#: commands/tsearchcmds.c:226 +#: access/common/tupconvert.c:252 #, c-format -msgid "text search parser parameter \"%s\" not recognized" -msgstr "el parámetro de analizador de búsqueda en texto «%s» no es reconocido" - -#: commands/tsearchcmds.c:236 -msgid "text search parser start method is required" -msgstr "se requiere el método start del analizador de búsqueda en texto" +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." -#: commands/tsearchcmds.c:241 -msgid "text search parser gettoken method is required" -msgstr "se requiere el método gettoken del analizador de búsqueda en texto" +#: access/common/indextuple.c:57 +#, c-format +msgid "number of index columns (%d) exceeds limit (%d)" +msgstr "el número de columnas del índice (%d) excede el límite (%d)" -#: commands/tsearchcmds.c:246 -msgid "text search parser end method is required" -msgstr "se requiere el método end del analizador de búsqueda en texto" +#: access/common/indextuple.c:168 +#, 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" -#: commands/tsearchcmds.c:251 -msgid "text search parser lextypes method is required" -msgstr "se requiere el método lextypes del analizador de búsqueda en texto" +#: access/common/reloptions.c:323 +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" -#: commands/tsearchcmds.c:283 -msgid "must be superuser to drop text search parsers" -msgstr "debe ser superusuario para eliminar analizadores de búsqueda en texto" +#: access/common/reloptions.c:622 +msgid "RESET must not include values for parameters" +msgstr "RESET no debe incluir valores de parámetros" -#: commands/tsearchcmds.c:312 +#: access/common/reloptions.c:655 #, c-format -msgid "text search parser \"%s\" does not exist, skipping" -msgstr "el analizador de búsqueda en texto «%s» no existe, ignorando" +msgid "unrecognized parameter namespace \"%s\"" +msgstr "espacio de nombre de parámetro «%s» no reconocido" -#: commands/tsearchcmds.c:367 -msgid "must be superuser to rename text search parsers" -msgstr "" -"debe ser superusuario para cambiar el nombre a analizadores de búsqueda en " -"texto" +#: access/common/reloptions.c:898 +#, c-format +msgid "unrecognized parameter \"%s\"" +msgstr "parámetro no reconocido «%s»" -#: commands/tsearchcmds.c:385 +#: access/common/reloptions.c:923 #, c-format -msgid "text search parser \"%s\" already exists" -msgstr "el analizador de búsqueda en texto «%s» ya existe" +msgid "parameter \"%s\" specified more than once" +msgstr "el parámetro «%s» fue especificado más de una vez" -#: commands/tsearchcmds.c:462 +#: access/common/reloptions.c:938 #, c-format -msgid "text search template \"%s\" does not accept options" -msgstr "la plantilla de búsquede en texto «%s» no acepta opciones" +msgid "invalid value for boolean option \"%s\": %s" +msgstr "valor no válido para la opción booleana «%s»: «%s»" -#: commands/tsearchcmds.c:535 -msgid "text search template is required" -msgstr "se requiere una plantilla de búsqueda en texto" +#: access/common/reloptions.c:949 +#, c-format +msgid "invalid value for integer option \"%s\": %s" +msgstr "valor no válido para la opción entera «%s»: «%s»" -#: commands/tsearchcmds.c:600 +#: access/common/reloptions.c:954 access/common/reloptions.c:972 #, c-format -msgid "text search dictionary \"%s\" already exists" -msgstr "el diccionario de búsqueda en texto «%s» ya existe" +msgid "value %s out of bounds for option \"%s\"" +msgstr "el valor %s está fuera del rango de la opción «%s»" -#: commands/tsearchcmds.c:660 +#: access/common/reloptions.c:956 #, c-format -msgid "text search dictionary \"%s\" does not exist, skipping" -msgstr "el diccionario de búsqueda en texto «%s» no existe, ignorando" +msgid "Valid values are between \"%d\" and \"%d\"." +msgstr "Los valores aceptables están entre «%d» y «%d»." -#: commands/tsearchcmds.c:990 -msgid "must be superuser to create text search templates" -msgstr "debe ser superusuario para crear una plantilla de búsqueda en texto" +#: access/common/reloptions.c:967 +#, 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»" -#: commands/tsearchcmds.c:1027 +#: access/common/reloptions.c:974 #, c-format -msgid "text search template parameter \"%s\" not recognized" -msgstr "" -"el parámetro de la plantilla de búsqueda en texto «%s» no es reconocido" +msgid "Valid values are between \"%f\" and \"%f\"." +msgstr "Valores aceptables están entre «%f» y «%f»." -#: commands/tsearchcmds.c:1037 -msgid "text search template lexize method is required" -msgstr "se requiere el método lexize de la plantilla de búsqueda en texto" +#: access/common/tupdesc.c:575 parser/parse_relation.c:1178 +#, c-format +msgid "column \"%s\" cannot be declared SETOF" +msgstr "la columna «%s» no puede ser declarada SETOF" -#: commands/tsearchcmds.c:1072 -msgid "must be superuser to rename text search templates" -msgstr "" -"debe ser superusuario para cambiar el nombre a plantillas de búsqueda en " -"texto" +#: access/common/heaptuple.c:646 access/common/heaptuple.c:1398 +#, c-format +msgid "number of columns (%d) exceeds limit (%d)" +msgstr "el número de columnas (%d) excede el límite (%d)" -#: commands/tsearchcmds.c:1091 +#: access/hash/hashovfl.c:547 #, c-format -msgid "text search template \"%s\" already exists" -msgstr "ya existe la plantilla de búsqueda en texto «%s»" +msgid "out of overflow pages in hash index \"%s\"" +msgstr "se agotaron las páginas de desbordamiento en el índice hash «%s»" -#: commands/tsearchcmds.c:1114 -msgid "must be superuser to drop text search templates" -msgstr "debe ser superusuario para eliminar plantillas de búsqueda en texto" +#: access/hash/hashsearch.c:152 +msgid "hash indexes do not support whole-index scans" +msgstr "los índices hash no soportan recorridos del índice completo" -#: commands/tsearchcmds.c:1143 +#: access/hash/hashinsert.c:73 #, c-format -msgid "text search template \"%s\" does not exist, skipping" -msgstr "la plantilla de búsqueda en texto «%s» no existe, ignorando" +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" + +#: access/hash/hashinsert.c:76 +msgid "Values larger than a buffer page cannot be indexed." +msgstr "Valores mayores a una página del buffer no pueden ser indexados." -#: commands/tsearchcmds.c:1338 +#: access/hash/hashutil.c:170 access/nbtree/nbtpage.c:433 +#: access/gist/gistutil.c:632 #, c-format -msgid "text search configuration parameter \"%s\" not recognized" -msgstr "" -"el parámetro de configuración de búsqueda en texto «%s» no es reconocido" +msgid "index \"%s\" contains unexpected zero page at block %u" +msgstr "índice «%s» contiene páginas vacías no esperadas en el bloque %u" -#: commands/tsearchcmds.c:1345 -msgid "cannot specify both PARSER and COPY options" -msgstr "no se puede especificar simultáneamente las opciones PARSER y COPY" +#: 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 +#: access/gist/gist.c:731 access/gist/gistutil.c:635 +#: access/gist/gistutil.c:646 access/gist/gistvacuum.c:274 +msgid "Please REINDEX it." +msgstr "Por favor aplíquele REINDEX." -#: commands/tsearchcmds.c:1373 -msgid "text search parser is required" -msgstr "el analizador de búsqueda en texto es requerido" +#: access/hash/hashutil.c:181 access/hash/hashutil.c:193 +#: access/nbtree/nbtpage.c:444 access/gist/gistutil.c:643 +#, c-format +msgid "index \"%s\" contains corrupted page at block %u" +msgstr "el índice «%s» contiene una página corrupta en el bloque %u" -#: commands/tsearchcmds.c:1479 +#: access/hash/hashutil.c:209 #, c-format -msgid "text search configuration \"%s\" already exists" -msgstr "la configuración de búsqueda en texto «%s» ya existe" +msgid "index \"%s\" is not a hash index" +msgstr "el índice «%s» no es un índice hash" -#: commands/tsearchcmds.c:1538 +#: access/hash/hashutil.c:215 #, c-format -msgid "text search configuration \"%s\" does not exist, skipping" -msgstr "no existe la configuración de búsqueda en texto «%s», ignorando" +msgid "index \"%s\" has wrong hash version" +msgstr "el índice «%s» tiene una versión de hash incorrecta" -#: commands/tsearchcmds.c:1760 +#: access/heap/hio.c:175 access/heap/rewriteheap.c:597 #, c-format -msgid "token type \"%s\" does not exist" -msgstr "no existe el tipo de elemento «%s»" +msgid "row is too big: size %lu, maximum size %lu" +msgstr "fila es demasiado grande: tamaño %lu, tamaño máximo %lu" -#: commands/tsearchcmds.c:1984 +#: access/heap/heapam.c:1089 access/heap/heapam.c:1117 +#: access/heap/heapam.c:1147 catalog/aclchk.c:1677 #, c-format -msgid "mapping for token type \"%s\" does not exist" -msgstr "no existe un mapeo para el tipo de elemento «%s»" +msgid "\"%s\" is an index" +msgstr "«%s» es un índice" -#: commands/tsearchcmds.c:1990 +#: access/heap/heapam.c:1094 access/heap/heapam.c:1122 +#: access/heap/heapam.c:1152 commands/tablecmds.c:2197 +#: commands/tablecmds.c:7413 commands/tablecmds.c:9082 catalog/aclchk.c:1684 #, c-format -msgid "mapping for token type \"%s\" does not exist, skipping" -msgstr "el mapeo para el tipo de elemento «%s» no existe, ignorando" +msgid "\"%s\" is a composite type" +msgstr "«%s» es un tipo compuesto" -#: commands/tsearchcmds.c:2143 commands/tsearchcmds.c:2254 +#: access/heap/heapam.c:3223 access/heap/heapam.c:3254 +#: access/heap/heapam.c:3289 #, c-format -msgid "invalid parameter list format: \"%s\"" -msgstr "el formato de la lista de parámetros no es válido: «%s»" +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»" -#: commands/typecmds.c:163 -msgid "must be superuser to create a base type" -msgstr "debe ser superusuario para crear un tipo base" +#: access/transam/xact.c:729 +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" -#: commands/typecmds.c:267 +#: access/transam/xact.c:1269 #, c-format -msgid "type attribute \"%s\" not recognized" -msgstr "el atributo de tipo «%s» no es reconocido" +msgid "maximum number of committed subtransactions (%d) exceeded" +msgstr "se superó el número máximo de subtransacciones comprometidas (%d)" -#: commands/typecmds.c:321 +#: access/transam/xact.c:2045 +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" + +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2837 #, 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" +msgid "%s cannot run inside a transaction block" +msgstr "%s no puede ser ejecutado dentro de un bloque de transacción" -#: commands/typecmds.c:340 +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2847 #, c-format -msgid "array element type cannot be %s" -msgstr "el tipo de elemento de array no puede ser %s" +msgid "%s cannot run inside a subtransaction" +msgstr "%s no puede ser ejecutado dentro de una subtransacción" -#: commands/typecmds.c:372 +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2857 #, c-format -msgid "alignment \"%s\" not recognized" -msgstr "el alineamiento «%s» no es reconocido" +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" -#: commands/typecmds.c:389 +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2908 #, c-format -msgid "storage \"%s\" not recognized" -msgstr "el almacenamiento «%s» no es reconocido" +msgid "%s can only be used in transaction blocks" +msgstr "la orden %s sólo puede ser usada en bloques de transacción" -#: commands/typecmds.c:398 -msgid "type input function must be specified" -msgstr "debe especificarse la función de ingreso del tipo" +#: access/transam/xact.c:3090 +msgid "there is already a transaction in progress" +msgstr "ya hay una transacción en curso" -#: commands/typecmds.c:402 -msgid "type output function must be specified" -msgstr "debe especificarse la función de salida de tipo" +#: access/transam/xact.c:3257 access/transam/xact.c:3349 +msgid "there is no transaction in progress" +msgstr "no hay una transacción en curso" + +#: access/transam/xact.c:3443 access/transam/xact.c:3493 +#: access/transam/xact.c:3499 access/transam/xact.c:3543 +#: access/transam/xact.c:3591 access/transam/xact.c:3597 +msgid "no such savepoint" +msgstr "no hay un savepoint con ese nombre" + +#: access/transam/xact.c:4244 +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" -#: commands/typecmds.c:407 +#: access/transam/varsup.c:114 +#, c-format msgid "" -"type modifier output function is useless without a type modifier input " -"function" +"database is not accepting commands to avoid wraparound data loss in database " +"\"%s\"" msgstr "" -"la función de salida de modificadores de tipo es inútil sin una función de " -"entrada de modificadores de tipo" +"la base de datos no está aceptando órdenes para evitar pérdida de datos " +"debido al problema del reciclaje de transacciones en la base de datos «%s»" -#: commands/typecmds.c:430 -#, 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" +#: 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 "" +"Detenga el proceso postmaster y utilice una conexión aislada (standalone) " +"para limpiar (vacuum) esa base de datos.\n" +"Puede que además necesite comprometer o abortar transacciones preparadas " +"antiguas." -#: commands/typecmds.c:437 +#: access/transam/varsup.c:121 #, c-format -msgid "type input function %s must return type %s" -msgstr "la función de entrada %s del tipo debe retornar %s" +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" -#: commands/typecmds.c:447 +#: access/transam/varsup.c:133 access/transam/varsup.c:368 #, 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»" +msgid "database \"%s\" must be vacuumed within %u transactions" +msgstr "base de datos «%s» debe ser limpiada dentro de %u transacciones" -#: commands/typecmds.c:454 -#, c-format -msgid "type output function %s must return type \"cstring\"" -msgstr "la función de salida %s del tipo debe retornar «cstring»" +#: 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 "" +"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." -#: commands/typecmds.c:463 +#: access/transam/varsup.c:140 access/transam/varsup.c:375 #, c-format -msgid "type receive function %s must return type %s" -msgstr "la función de recepción %s del tipo debe retornar %s" +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" -#: commands/typecmds.c:472 +#: access/transam/varsup.c:333 #, c-format -msgid "type send function %s must return type \"bytea\"" -msgstr "la función de envío %s del tipo debe retornar «bytea»" +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" -#: commands/typecmds.c:677 commands/typecmds.c:2205 +#: access/transam/twophase.c:250 #, c-format -msgid "\"%s\" is not a domain" -msgstr "«%s» no es un dominio" +msgid "transaction identifier \"%s\" is too long" +msgstr "identificador de transacción «%s» es demasiado largo" + +#: access/transam/twophase.c:257 +msgid "prepared transactions are disabled" +msgstr "las transacciones preparadas están deshabilitadas" + +#: access/transam/twophase.c:258 +msgid "Set max_prepared_transactions to a nonzero value." +msgstr "Defina max_prepared_transactions a un valor distinto de cero." -#: commands/typecmds.c:816 +#: access/transam/twophase.c:291 #, 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" +msgid "transaction identifier \"%s\" is already in use" +msgstr "identificador de transacción «%s» ya está siendo utilizado" -#: commands/typecmds.c:885 -msgid "multiple default expressions" -msgstr "múltiples expresiones default" +#: access/transam/twophase.c:300 +msgid "maximum number of prepared transactions reached" +msgstr "se alcanzó el número máximo de transacciones preparadas" -#: commands/typecmds.c:949 commands/typecmds.c:958 -msgid "conflicting NULL/NOT NULL constraints" -msgstr "las restricciones NULL/NOT NULL no coinciden" +#: access/transam/twophase.c:301 +#, c-format +msgid "Increase max_prepared_transactions (currently %d)." +msgstr "Incremente max_prepared_transactions (actualmente es %d)." -#: commands/typecmds.c:977 commands/typecmds.c:1902 -msgid "unique constraints not possible for domains" -msgstr "no se pueden poner restricciones de unicidad a un dominio" +#: access/transam/twophase.c:421 +#, c-format +msgid "prepared transaction with identifier \"%s\" is busy" +msgstr "transacción preparada con identificador «%s» está ocupada" -#: commands/typecmds.c:983 commands/typecmds.c:1908 -msgid "primary key constraints not possible for domains" -msgstr "no se pueden poner restricciones de llave primaria a un dominio" +#: access/transam/twophase.c:429 +msgid "permission denied to finish prepared transaction" +msgstr "permiso denegado para finalizar la transacción preparada" -#: commands/typecmds.c:989 commands/typecmds.c:1914 -msgid "exclusion constraints not possible for domains" -msgstr "las restricciones por exclusión no son posibles para los dominios" +#: access/transam/twophase.c:430 +msgid "Must be superuser or the user that prepared the transaction." +msgstr "Debe ser superusuario o el usuario que preparó la transacción." -#: commands/typecmds.c:995 commands/typecmds.c:1920 -msgid "foreign key constraints not possible for domains" -msgstr "no se pueden poner restricciones de llave foránea a un dominio" +#: access/transam/twophase.c:441 +msgid "prepared transaction belongs to another database" +msgstr "la transacción preparada pertenece a otra base de datos" -#: commands/typecmds.c:1004 commands/typecmds.c:1929 -msgid "specifying constraint deferrability not supported for domains" +#: access/transam/twophase.c:442 +msgid "" +"Connect to the database where the transaction was prepared to finish it." msgstr "" -"no se puede especificar la postergabilidad de las restricciones a un dominio" +"Conéctese a la base de datos donde la transacción fue preparada para " +"terminarla." -#: commands/typecmds.c:1251 +#: access/transam/twophase.c:456 #, c-format -msgid "changing argument type of function %s from \"opaque\" to \"cstring\"" +msgid "prepared transaction with identifier \"%s\" does not exist" +msgstr "transacción preparada con identificador «%s» no existe" + +#: access/transam/twophase.c:939 +msgid "two-phase state file maximum length exceeded" msgstr "" -"cambiando el tipo de argumento de la función %s de «opaque» a «cstring»" +"el largo máximo del archivo de estado de COMMIT en dos fases fue excedido" -#: commands/typecmds.c:1302 +#: access/transam/twophase.c:957 #, 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" +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" -#: commands/typecmds.c:1401 +#: access/transam/twophase.c:971 access/transam/twophase.c:988 +#: access/transam/twophase.c:1044 access/transam/twophase.c:1464 +#: access/transam/twophase.c:1471 #, c-format -msgid "typmod_in function %s must return type \"integer\"" -msgstr "la función typmod_in %s debe retornar tipo «integer»" +msgid "could not write two-phase state file: %m" +msgstr "no se pudo escribir el archivo de estado de COMMIT en dos fases: %m" -#: commands/typecmds.c:1428 +#: access/transam/twophase.c:997 #, c-format -msgid "typmod_out function %s must return type \"cstring\"" -msgstr "la función typmod_out %s debe retornar «cstring»" +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" -#: commands/typecmds.c:1455 +#: access/transam/twophase.c:1050 access/transam/twophase.c:1489 #, c-format -msgid "type analyze function %s must return type \"boolean\"" -msgstr "la función de análisis %s del tipo debe retornar «boolean»" +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:1130 access/transam/twophase.c:1569 +#, 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" -#: commands/typecmds.c:1513 -msgid "composite type must have at least one attribute" -msgstr "un tipo compuesto debe tener al menos un atributo" +#: access/transam/twophase.c:1147 +#, 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" -#: commands/typecmds.c:1754 +#: access/transam/twophase.c:1179 #, c-format -msgid "column \"%s\" of table \"%s\" contains null values" -msgstr "la columna «%s» de la tabla «%s» contiene valores null" +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" -#: commands/typecmds.c:2000 +#: access/transam/twophase.c:1271 #, c-format -msgid "" -"column \"%s\" of table \"%s\" contains values that violate the new constraint" +msgid "two-phase state file for transaction %u is corrupt" msgstr "" -"la columna «%s» de la relación «%s» contiene valores que violan la nueva " -"restricción" +"el archivo de estado de COMMIT en dos fases para la transacción %u está " +"dañado" -#: commands/typecmds.c:2281 commands/typecmds.c:2290 -msgid "cannot use table references in domain check constraint" +#: access/transam/twophase.c:1426 +#, c-format +msgid "could not remove two-phase state file \"%s\": %m" msgstr "" -"no se pueden usar referencias a tablas en restricción check para un dominio" +"no se pudo eliminar el archivo de estado de COMMIT en dos fases «%s»: %m" -#: commands/typecmds.c:2519 commands/typecmds.c:2591 commands/typecmds.c:2822 +#: access/transam/twophase.c:1455 #, c-format -msgid "%s is a table's row type" -msgstr "%s es el tipo de registro de una tabla" +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" -#: commands/typecmds.c:2521 commands/typecmds.c:2593 commands/typecmds.c:2824 -msgid "Use ALTER TABLE instead." -msgstr "Considere usar ALTER TABLE." +#: access/transam/twophase.c:1483 +#, 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" -#: commands/typecmds.c:2528 commands/typecmds.c:2600 commands/typecmds.c:2739 +#: access/transam/twophase.c:1578 #, c-format -msgid "cannot alter array type %s" -msgstr "no se puede alterar el tipo de array «%s»" +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" -#: commands/typecmds.c:2530 commands/typecmds.c:2602 commands/typecmds.c:2741 +#: access/transam/twophase.c:1585 #, 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." +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" -#: commands/typecmds.c:2786 +#: access/transam/twophase.c:1650 #, c-format -msgid "type %s is already in schema \"%s\"" -msgstr "el tipo %s ya está en el esquema «%s»" +msgid "removing future two-phase state file \"%s\"" +msgstr "eliminando archivo futuro de estado de COMMIT en dos fases «%s»" -#: commands/typecmds.c:2808 +#: access/transam/twophase.c:1666 access/transam/twophase.c:1677 +#: access/transam/twophase.c:1790 access/transam/twophase.c:1801 +#: access/transam/twophase.c:1874 #, c-format -msgid "type \"%s\" already exists in schema \"%s\"" -msgstr "ya existe un tipo llamado «%s» en el esquema «%s»" +msgid "removing corrupt two-phase state file \"%s\"" +msgstr "eliminando archivo dañado de estado de COMMIT en dos fases «%s»" -#: commands/user.c:150 -msgid "SYSID can no longer be specified" -msgstr "SYSID ya no puede ser especificado" +#: access/transam/twophase.c:1779 access/transam/twophase.c:1863 +#, c-format +msgid "removing stale two-phase state file \"%s\"" +msgstr "eliminando archivo obsoleto de estado de COMMIT en dos fases «%s»" -#: commands/user.c:272 -msgid "must be superuser to create superusers" -msgstr "debe ser superusuario para crear superusuarios" +#: access/transam/twophase.c:1881 +#, c-format +msgid "recovering prepared transaction %u" +msgstr "recuperando transacción preparada %u" -#: commands/user.c:279 -msgid "permission denied to create role" -msgstr "se ha denegado el permiso para crear el rol" +#: access/transam/slru.c:609 +#, c-format +msgid "file \"%s\" doesn't exist, reading as zeroes" +msgstr "el archivo «%s» no existe, leyendo como ceros" -#: commands/user.c:286 commands/user.c:1033 +#: 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 "role name \"%s\" is reserved" -msgstr "el nombre de rol «%s» está reservado" +msgid "could not access status of transaction %u" +msgstr "no se pudo encontrar el estado de la transacción %u" -#: commands/user.c:300 commands/user.c:1027 +#: access/transam/slru.c:840 #, c-format -msgid "role \"%s\" already exists" -msgstr "el rol «%s» ya existe" +msgid "Could not open file \"%s\": %m." +msgstr "No se pudo abrir el archivo «%s»: %m." -#: commands/user.c:579 commands/user.c:767 commands/user.c:851 -#: commands/user.c:1002 commands/variable.c:735 commands/variable.c:849 -#: utils/cache/lsyscache.c:2669 utils/init/miscinit.c:413 +#: access/transam/slru.c:846 #, c-format -msgid "role \"%s\" does not exist" -msgstr "no existe el rol «%s»" +msgid "Could not seek in file \"%s\" to offset %u: %m." +msgstr "No se pudo posicionar (seek) en el archivo «%s» a la posición %u: %m." -#: commands/user.c:592 commands/user.c:784 commands/user.c:1267 -#: commands/user.c:1404 -msgid "must be superuser to alter superusers" -msgstr "debe ser superusuario para alterar superusuarios" +#: access/transam/slru.c:853 +#, c-format +msgid "Could not read from file \"%s\" at offset %u: %m." +msgstr "No se pudo leer desde el archivo «%s» en la posición %u: %m." -#: commands/user.c:607 commands/user.c:792 -msgid "permission denied" -msgstr "permiso denegado" +#: access/transam/slru.c:860 +#, c-format +msgid "Could not write to file \"%s\" at offset %u: %m." +msgstr "No se pudo escribir al archivo «%s» en la posición %u: %m." -#: commands/user.c:802 +#: access/transam/slru.c:867 #, c-format -msgid "database \"%s\" not found" -msgstr "base de datos «%s» no encontrada" +msgid "Could not fsync file \"%s\": %m." +msgstr "No se pudo sincronizar (fsync) archivo «%s»: %m." -#: commands/user.c:824 -msgid "permission denied to drop role" -msgstr "se ha denegado el permiso para eliminar el rol" +#: access/transam/slru.c:874 +#, c-format +msgid "Could not close file \"%s\": %m." +msgstr "No se pudo cerrar el archivo «%s»: %m." -#: commands/user.c:856 +#: access/transam/slru.c:1101 #, c-format -msgid "role \"%s\" does not exist, skipping" -msgstr "el rol «%s» no existe, ignorando" +msgid "could not truncate directory \"%s\": apparent wraparound" +msgstr "" +"no se pudo truncar el directorio «%s»: aparente problema por reciclaje de " +"transacciones" -#: commands/user.c:868 commands/user.c:872 -msgid "current user cannot be dropped" -msgstr "el usuario activo no puede ser eliminado" +#: access/transam/slru.c:1182 +#, c-format +msgid "removing file \"%s\"" +msgstr "eliminando el archivo «%s»" -#: commands/user.c:876 -msgid "session user cannot be dropped" -msgstr "no se puede eliminar un usuario de la sesión" - -#: commands/user.c:887 -msgid "must be superuser to drop superusers" -msgstr "debe ser superusuario para eliminar superusuarios" - -#: commands/user.c:900 -#, c-format -msgid "role \"%s\" cannot be dropped because some objects depend on it" -msgstr "no se puede eliminar el rol «%s» porque otros objetos dependen de él" - -#: commands/user.c:1017 -msgid "session user cannot be renamed" -msgstr "no se puede cambiar el nombre a un usuario de la sesión" - -#: commands/user.c:1021 -msgid "current user cannot be renamed" -msgstr "no se puede cambiar el nombre al usuario activo" - -#: commands/user.c:1044 -msgid "must be superuser to rename superusers" -msgstr "debe ser superusuario para cambiar el nombre a superusuarios" - -#: commands/user.c:1051 -msgid "permission denied to rename role" -msgstr "se ha denegado el permiso para cambiar el nombre al rol" - -#: commands/user.c:1072 -msgid "MD5 password cleared because of role rename" -msgstr "la contraseña MD5 fue borrada debido al cambio de nombre del rol" - -#: commands/user.c:1128 -msgid "column names cannot be included in GRANT/REVOKE ROLE" -msgstr "los nombres de columna no pueden ser incluidos en GRANT/REVOKE ROLE" - -#: commands/user.c:1166 -msgid "permission denied to drop objects" -msgstr "se ha denegado el permiso para eliminar objetos" - -#: commands/user.c:1193 commands/user.c:1202 -msgid "permission denied to reassign objects" -msgstr "se ha denegado el permiso para reasignar objetos" - -#: commands/user.c:1275 commands/user.c:1412 -#, c-format -msgid "must have admin option on role \"%s\"" -msgstr "debe tener opción de admin en rol «%s»" - -#: commands/user.c:1283 -msgid "must be superuser to set grantor" -msgstr "debe ser superusuario para especificar el cedente (grantor)" - -#: commands/user.c:1308 +#: access/transam/xlog.c:1340 #, c-format -msgid "role \"%s\" is a member of role \"%s\"" -msgstr "el rol «%s» es un miembro del rol «%s»" +msgid "could not create archive status file \"%s\": %m" +msgstr "no se pudo crear el archivo de estado «%s»: %m" -#: commands/user.c:1323 +#: access/transam/xlog.c:1348 #, c-format -msgid "role \"%s\" is already a member of role \"%s\"" -msgstr "el rol «%s» ya es un miembro del rol «%s»" +msgid "could not write archive status file \"%s\": %m" +msgstr "no se pudo escribir el archivo de estado «%s»: %m" -#: commands/user.c:1434 +#: access/transam/xlog.c:1803 access/transam/xlog.c:10522 +#: replication/walreceiver.c:515 replication/walsender.c:1007 #, 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:421 -msgid "oldest xmin is far in the past" -msgstr "xmin más antiguo es demasiado antiguo" - -#: commands/vacuum.c:422 -msgid "Close open transactions soon to avoid wraparound problems." -msgstr "" -"Cierre transacciones pronto para prevenir problemas por reciclaje de " -"transacciones." - -#: commands/vacuum.c:747 -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:748 -msgid "You might have already suffered transaction-wraparound data loss." +msgid "could not seek in log file %u, segment %u to offset %u: %m" msgstr "" -"Puede haber sufrido ya problemas de pérdida de datos por reciclaje del " -"contador de transacciones." - -#: commands/vacuum.c:873 -#, c-format -msgid "skipping \"%s\" --- only superuser can vacuum it" -msgstr "ignorando «%s»: sólo un superusuario puede aplicarle VACUUM" +"no se pudo posicionar (seek) en archivo de registro %u, segmento %u a la " +"posición %u: %m" -#: commands/vacuum.c:877 +#: access/transam/xlog.c:1820 replication/walreceiver.c:532 #, c-format -msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" +msgid "could not write to log file %u, segment %u at offset %u, length %lu: %m" msgstr "" -"ignorando «%s»: sólo un superusuario o el dueño de la base de datos puede " -"aplicarle VACUUM" +"no se pudo escribir archivo de registro %u, segmento %u en la posición %u, " +"largo %lu: %m" -#: commands/vacuum.c:881 +#: access/transam/xlog.c:2022 #, c-format -msgid "skipping \"%s\" --- only table or database owner can vacuum it" -msgstr "" -"ignorando «%s»: sólo su dueño o el de la base de datos puede aplicarle VACUUM" +msgid "updated min recovery point to %X/%X" +msgstr "el punto mínimo de recuperación fue actualizado a %X/%X" -#: commands/vacuum.c:898 +#: access/transam/xlog.c:2372 access/transam/xlog.c:2476 +#: access/transam/xlog.c:2705 access/transam/xlog.c:2776 +#: access/transam/xlog.c:2833 replication/walsender.c:995 #, c-format -msgid "" -"skipping \"%s\" --- cannot vacuum indexes, views, or special system tables" -msgstr "" -"ignorando «%s»: no se puede aplicar VACUUM a índices, vistas o tablas " -"especiales de sistema" +msgid "could not open file \"%s\" (log file %u, segment %u): %m" +msgstr "no se pudo abrir «%s» (archivo de registro %u, segmento %u): %m" -#: commands/vacuumlazy.c:234 +#: access/transam/xlog.c:2437 access/transam/xlog.c:2569 +#: access/transam/xlog.c:4584 storage/file/copydir.c:269 storage/smgr/md.c:932 +#: storage/smgr/md.c:1137 storage/smgr/md.c:1291 #, 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 "" -"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" -"uso del sistema: %s" +msgid "could not fsync file \"%s\": %m" +msgstr "no se pudo sincronizar (fsync) archivo «%s»: %m" -#: commands/vacuumlazy.c:449 +#: access/transam/xlog.c:2442 access/transam/xlog.c:2574 +#: access/transam/xlog.c:4589 commands/copy.c:1329 storage/file/copydir.c:211 #, 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" +msgid "could not close file \"%s\": %m" +msgstr "no se pudo cerrar el archivo «%s»: %m" -#: commands/vacuumlazy.c:785 +#: access/transam/xlog.c:2546 #, c-format -msgid "\"%s\": removed %.0f row versions in %u pages" -msgstr "«%s»: se eliminaron %.0f versiones de filas en %u páginas" +msgid "not enough data in file \"%s\"" +msgstr "los datos del archivo «%s» son insuficientes" -#: commands/vacuumlazy.c:790 +#: access/transam/xlog.c:2665 #, c-format msgid "" -"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u " -"pages" +"could not link file \"%s\" to \"%s\" (initialization of log file %u, segment " +"%u): %m" msgstr "" -"«%s»: se encontraron %.0f versiones de filas eliminables y %.0f no " -"eliminables en %u de %u páginas" +"no se pudo enlazar (link) el archivo «%s» a «%s» (inicialización de archivo " +"de registro %u, segmento %u): %m" -#: commands/vacuumlazy.c:793 +#: access/transam/xlog.c:2677 #, 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." +"could not rename file \"%s\" to \"%s\" (initialization of log file %u, " +"segment %u): %m" msgstr "" -"%.0f versiones muertas de filas no pueden ser eliminadas aún.\n" -"Hubo %.0f punteros de ítem sin uso.\n" -"%u páginas están completamente vacías.\n" -"%s." +"no se pudo renombrar archivo de «%s» a «%s» (inicialización de archivo de " +"registro %u, segmento %u): %m" -#: commands/vacuumlazy.c:851 +#: access/transam/xlog.c:2860 replication/walreceiver.c:489 #, c-format -msgid "\"%s\": removed %d row versions in %d pages" -msgstr "«%s»: se eliminaron %d versiones de filas en %d páginas" +msgid "could not close log file %u, segment %u: %m" +msgstr "no se pudo cerrar archivo de registro %u, segmento %u: %m" -#: commands/vacuumlazy.c:854 commands/vacuumlazy.c:946 -#: commands/vacuumlazy.c:1071 +#: access/transam/xlog.c:2940 access/transam/xlog.c:9360 storage/smgr/md.c:371 +#: storage/smgr/md.c:420 storage/smgr/md.c:1251 #, c-format -msgid "%s." -msgstr "%s." +msgid "could not remove file \"%s\": %m" +msgstr "no se pudo eliminar el archivo «%s»: %m" -#: commands/vacuumlazy.c:943 +#: access/transam/xlog.c:3076 #, c-format -msgid "scanned index \"%s\" to remove %d row versions" -msgstr "se recorrió el índice «%s» para eliminar %d versiones de filas" +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" -#: commands/vacuumlazy.c:985 +#: access/transam/xlog.c:3085 #, 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" +msgid "restored log file \"%s\" from archive" +msgstr "se ha restaurado el archivo «%s» desde el área de archivado" -#: commands/vacuumlazy.c:989 +#: access/transam/xlog.c:3135 #, c-format -msgid "" -"%.0f index row versions were removed.\n" -"%u index pages have been deleted, %u are currently reusable.\n" -"%s." -msgstr "" -"%.0f versiones de filas del índice fueron eliminadas.\n" -"%u páginas de índice han sido eliminadas, %u son reusables.\n" -"%s." +msgid "could not restore file \"%s\" from archive: return code %d" +msgstr "no se pudo recuperar el archivo «%s»: código de retorno %d" -#: commands/vacuumlazy.c:1068 +#. 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:3249 #, c-format -msgid "\"%s\": truncated %u to %u pages" -msgstr "«%s»: truncadas %u a %u páginas" - -#: commands/variable.c:62 -msgid "invalid list syntax for parameter \"datestyle\"" -msgstr "la sintaxis de lista no es válida para el parámetro «datestyle»" +msgid "%s \"%s\": return code %d" +msgstr "%s «%s»: código de retorno %d" -#: commands/variable.c:161 +#: access/transam/xlog.c:3359 access/transam/xlog.c:3542 #, c-format -msgid "unrecognized \"datestyle\" key word: \"%s\"" -msgstr "no se reconoce el valor de «datestyle» «%s»" - -#: commands/variable.c:175 -msgid "conflicting \"datestyle\" specifications" -msgstr "especificaciones contradictorias de «datestyle»" - -#: commands/variable.c:285 -msgid "invalid interval value for time zone: month not allowed" -msgstr "no se permite especificar mes en interval para huso horario" - -#: commands/variable.c:293 -msgid "invalid interval value for time zone: day not allowed" -msgstr "no se permite especificar día en interval para huso horario" +msgid "could not open transaction log directory \"%s\": %m" +msgstr "no se pudo abrir directorio de registro de transacciones «%s»: %m" -#: commands/variable.c:361 commands/variable.c:493 +#: access/transam/xlog.c:3413 #, c-format -msgid "unrecognized time zone name: \"%s\"" -msgstr "el nombre de huso horario no es reconocido: «%s»" +msgid "recycled transaction log file \"%s\"" +msgstr "el archivo de registro de transacciones «%s» ha sido reciclado" -#: commands/variable.c:370 commands/variable.c:502 +#: access/transam/xlog.c:3429 #, c-format -msgid "time zone \"%s\" appears to use leap seconds" -msgstr "el huso horario «%s» parece usar segundos intercalares (bisiestos)" - -#: commands/variable.c:372 commands/variable.c:504 -msgid "PostgreSQL does not support leap seconds." -msgstr "PostgreSQL no soporta segundos intercalares." +msgid "removing transaction log file \"%s\"" +msgstr "eliminando archivo de registro de transacciones «%s»" -#: commands/variable.c:557 -msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query" +#: access/transam/xlog.c:3452 +#, c-format +msgid "could not rename old transaction log file \"%s\": %m" msgstr "" -"SET TRANSACTION ISOLATION LEVEL debe ser llamado antes de cualquier consulta" +"no se pudo cambiar el nombre del archivo antiguo de registro de " +"transacciones «%s»: %m" -#: commands/variable.c:566 -msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction" +#: access/transam/xlog.c:3464 +#, c-format +msgid "could not remove old transaction log file \"%s\": %m" msgstr "" -"SET TRANSACTION ISOLATION LEVEL no debe ser llamado en una subtransacción" +"no se pudo eliminar el archivo antiguo de registro de transacciones «%s»: %m" -#: commands/variable.c:665 utils/mb/mbutils.c:241 +#: access/transam/xlog.c:3502 access/transam/xlog.c:3512 #, c-format -msgid "conversion between %s and %s is not supported" -msgstr "la conversión entre %s y %s no está soportada" +msgid "required WAL directory \"%s\" does not exist" +msgstr "no existe el directorio WAL «%s»" -#: commands/variable.c:865 +#: access/transam/xlog.c:3518 #, c-format -msgid "permission denied to set role \"%s\"" -msgstr "se ha denegado el permiso para definir el rol «%s»" +msgid "creating missing WAL directory \"%s\"" +msgstr "creando el directorio WAL faltante «%s»" -#: tcop/fastpath.c:110 tcop/fastpath.c:492 tcop/fastpath.c:622 +#: access/transam/xlog.c:3521 #, 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:957 tcop/postgres.c:1267 -#: tcop/postgres.c:1548 tcop/postgres.c:1990 tcop/postgres.c:2358 -#: tcop/postgres.c:2439 -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" +msgid "could not create missing directory \"%s\": %m" +msgstr "no se pudo crear el directorio faltante «%s»: %m" -#: tcop/fastpath.c:332 +#: access/transam/xlog.c:3555 #, c-format -msgid "fastpath function call: \"%s\" (OID %u)" -msgstr "llamada a función fastpath: «%s» (OID %u)" - -#: tcop/fastpath.c:359 parser/parse_func.c:1654 -msgid "argument to pg_get_expr() must come from system catalogs" -msgstr "el argumento a pg_get_expr() debe venir de catálogos del sistema" +msgid "removing transaction log backup history file \"%s\"" +msgstr "" +"eliminando el archivo de historia del respaldo de registro de transacciones " +"«%s»" -#: tcop/fastpath.c:418 tcop/postgres.c:1127 tcop/postgres.c:1414 -#: tcop/postgres.c:1831 tcop/postgres.c:2048 +#: access/transam/xlog.c:3697 #, c-format -msgid "duration: %s ms" -msgstr "duración: %s ms" +msgid "incorrect hole size in record at %X/%X" +msgstr "tamaño de hueco en registro en %X/%X es incorrecto" -#: tcop/fastpath.c:422 +#: access/transam/xlog.c:3710 #, 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)" +msgid "incorrect total length in record at %X/%X" +msgstr "longitud total de registro en %X/%X es incorrecta" -#: tcop/fastpath.c:460 tcop/fastpath.c:587 +#: access/transam/xlog.c:3723 #, c-format -msgid "function call message contains %d arguments but function requires %d" +msgid "incorrect resource manager data checksum in record at %X/%X" msgstr "" -"el mensaje de llamada a función contiene %d argumentos pero la función " -"requiere %d" +"la suma de verificación de datos del gestor de recursos en %X/%X es " +"incorrecta" -#: tcop/fastpath.c:468 +#: access/transam/xlog.c:3801 access/transam/xlog.c:3839 #, 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" +msgid "invalid record offset at %X/%X" +msgstr "la posición de registro en %X/%X es incorrecta" -#: tcop/fastpath.c:555 tcop/fastpath.c:638 +#: access/transam/xlog.c:3847 #, 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" +msgid "contrecord is requested by %X/%X" +msgstr "contrecord es requerido por %X/%X" -#: tcop/postgres.c:398 tcop/postgres.c:410 tcop/postgres.c:421 -#: tcop/postgres.c:433 tcop/postgres.c:4154 +#: access/transam/xlog.c:3862 #, c-format -msgid "invalid frontend message type %d" -msgstr "el tipo de mensaje de frontend %d no es válido" +msgid "invalid xlog switch record at %X/%X" +msgstr "registro de cambio de archivo xlog no válido en %X/%X" -#: tcop/postgres.c:898 +#: access/transam/xlog.c:3870 #, c-format -msgid "statement: %s" -msgstr "sentencia: %s" +msgid "record with zero length at %X/%X" +msgstr "registro de longitud cero en %X/%X" -#: tcop/postgres.c:1132 +#: access/transam/xlog.c:3879 #, c-format -msgid "duration: %s ms statement: %s" -msgstr "duración: %s ms sentencia: %s" +msgid "invalid record length at %X/%X" +msgstr "longitud de registro no es válido en %X/%X" -#: tcop/postgres.c:1182 +#: access/transam/xlog.c:3886 #, c-format -msgid "parse %s: %s" -msgstr "parse %s: %s" +msgid "invalid resource manager ID %u at %X/%X" +msgstr "el ID de gestor de recursos %u no es válido en %X/%X" -#: tcop/postgres.c:1240 -msgid "cannot insert multiple commands into a prepared statement" -msgstr "no se pueden insertar múltiples órdenes en una sentencia preparada" +#: access/transam/xlog.c:3899 access/transam/xlog.c:3915 +#, c-format +msgid "record with incorrect prev-link %X/%X at %X/%X" +msgstr "registro con prev-link incorrecto %X/%X en %X/%X" -#: tcop/postgres.c:1419 +#: access/transam/xlog.c:3944 #, c-format -msgid "duration: %s ms parse %s: %s" -msgstr "duración: %s ms parse: %s: %s" +msgid "record length %u at %X/%X too long" +msgstr "el longitud %u del registro en %X/%X es demasiado grande" -#: tcop/postgres.c:1465 +#: access/transam/xlog.c:3984 #, c-format -msgid "bind %s to %s" -msgstr "bind %s a %s" - -#: tcop/postgres.c:1484 tcop/postgres.c:2338 -msgid "unnamed prepared statement does not exist" -msgstr "no existe una sentencia preparada sin nombre" +msgid "there is no contrecord flag in log file %u, segment %u, offset %u" +msgstr "" +"no hay marca de contrecord en el archivo de registro %u, segmento %u, " +"posición %u" -#: tcop/postgres.c:1526 +#: access/transam/xlog.c:3994 #, c-format -msgid "bind message has %d parameter formats but %d parameters" +msgid "invalid contrecord length %u in log file %u, segment %u, offset %u" msgstr "" -"el mensaje de enlace (bind) tiene %d formatos de parámetro pero %d parámetros" +"la longitud de contrecord %u no es válido en el archivo de registro %u, " +"segmento %u, posición %u" -#: tcop/postgres.c:1532 +#: access/transam/xlog.c:4084 #, c-format -msgid "" -"bind message supplies %d parameters, but prepared statement \"%s\" requires " -"%d" +msgid "invalid magic number %04X in log file %u, segment %u, offset %u" msgstr "" -"el mensaje de enlace (bind) entrega %d parámetros, pero la sentencia " -"preparada «%s» requiere %d" +"el número mágico %04X no es válido en el archivo de registro %u, segmento " +"%u, posición %u" -#: tcop/postgres.c:1697 +#: access/transam/xlog.c:4091 access/transam/xlog.c:4137 #, c-format -msgid "incorrect binary data format in bind parameter %d" +msgid "invalid info bits %04X in log file %u, segment %u, offset %u" msgstr "" -"el formato de datos binarios es incorrecto en el parámetro de enlace %d" +"bits de información %04X no son válidos en el archivo de registro %u, " +"segmento %u, posición %u" -#: tcop/postgres.c:1836 -#, c-format -msgid "duration: %s ms bind %s%s%s: %s" -msgstr "duración: %s ms bind %s%s%s: %s" +#: access/transam/xlog.c:4113 access/transam/xlog.c:4121 +#: access/transam/xlog.c:4128 +msgid "WAL file is from different database system" +msgstr "el archivo WAL es de un sistema de bases de datos diferente" -#: tcop/postgres.c:1884 tcop/postgres.c:2425 +#: access/transam/xlog.c:4114 #, c-format -msgid "portal \"%s\" does not exist" -msgstr "no existe el portal «%s»" +msgid "" +"WAL file database system identifier is %s, pg_control database system " +"identifier is %s." +msgstr "" +"El identificador de sistema del archivo WAL es %s, el identificador de " +"sistema de pg_control es %s." -#: tcop/postgres.c:1971 tcop/postgres.c:2056 -msgid "execute fetch from" -msgstr "ejecutar fetch desde" +#: access/transam/xlog.c:4122 +msgid "Incorrect XLOG_SEG_SIZE in page header." +msgstr "XLOG_SEG_SIZE incorrecto en encabezado de página." -#: tcop/postgres.c:1972 tcop/postgres.c:2057 -msgid "execute" -msgstr "ejecutar" +#: access/transam/xlog.c:4129 +msgid "Incorrect XLOG_BLCKSZ in page header." +msgstr "XLOG_BLCKSZ incorrecto en encabezado de página." -#: tcop/postgres.c:1969 +#: access/transam/xlog.c:4145 #, c-format -msgid "%s %s%s%s: %s" -msgstr "%s %s%s%s: %s" +msgid "unexpected pageaddr %X/%X in log file %u, segment %u, offset %u" +msgstr "" +"la dirección de página %X/%X en el archivo de registro %u, segmento %u, " +"posición %u es inesperada" -#: tcop/postgres.c:2053 +#: access/transam/xlog.c:4157 #, c-format -msgid "duration: %s ms %s %s%s%s: %s" -msgstr "duración: %s ms %s %s%s%s: %s" +msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u" +msgstr "ID %u de timeline inesperado en archivo %u, segmento %u, posición %u" -#: tcop/postgres.c:2179 +#: access/transam/xlog.c:4184 #, c-format -msgid "prepare: %s" -msgstr "prepare: %s" +msgid "" +"out-of-sequence timeline ID %u (after %u) in log file %u, segment %u, offset " +"%u" +msgstr "" +"el ID de timeline %u está fuera de secuencia (después de %u) en el archivo " +"de registro %u, segmento %u, posición %u" -#: tcop/postgres.c:2242 +#: access/transam/xlog.c:4261 #, c-format -msgid "parameters: %s" -msgstr "parámetros: %s" - -#: tcop/postgres.c:2261 -msgid "abort reason: recovery conflict" -msgstr "razón para abortar: conflicto en la recuperación" +msgid "syntax error in history file: %s" +msgstr "error de sintaxis en archivo de historia: %s" -#: tcop/postgres.c:2277 -msgid "User was holding shared buffer pin for too long." -msgstr "El usuario mantuvo el búfer compartido «clavado» por demasiado tiempo." +#: access/transam/xlog.c:4262 +msgid "Expected a numeric timeline ID." +msgstr "Se esperaba un ID numérico de timeline." -#: tcop/postgres.c:2280 -msgid "User was holding a relation lock for too long." -msgstr "El usuario mantuvo un candado bloqueado por demasiado tiempo." +#: access/transam/xlog.c:4267 +#, c-format +msgid "invalid data in history file: %s" +msgstr "datos no válidos en archivo de historia: %s" -#: tcop/postgres.c:2283 -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." +#: access/transam/xlog.c:4268 +msgid "Timeline IDs must be in increasing sequence." +msgstr "IDs de timeline deben ser una secuencia creciente." -#: tcop/postgres.c:2286 -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." +#: access/transam/xlog.c:4281 +#, c-format +msgid "invalid data in history file \"%s\"" +msgstr "datos no válidos en archivo de historia «%s»" -#: tcop/postgres.c:2289 storage/ipc/standby.c:499 -msgid "User transaction caused buffer deadlock with recovery." -msgstr "La transacción del usuario causó un «deadlock» con la recuperación." +#: access/transam/xlog.c:4282 +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." -#: tcop/postgres.c:2292 -msgid "User was connected to a database that must be dropped." +#: access/transam/xlog.c:4368 +#, c-format +msgid "new timeline %u is not a child of database system timeline %u" msgstr "" -"El usuario estaba conectado a una base de datos que debía ser eliminada." +"el nuevo timeline %u especificado no es hijo del timeline de sistema %u" -#: tcop/postgres.c:2626 -msgid "terminating connection because of crash of another server process" -msgstr "terminando la conexión debido a una falla en otro proceso servidor" +#: access/transam/xlog.c:4381 +#, c-format +msgid "new target timeline is %u" +msgstr "el nuevo timeline destino es %u" -#: tcop/postgres.c:2627 -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." +#: access/transam/xlog.c:4606 +#, c-format +msgid "could not link file \"%s\" to \"%s\": %m" +msgstr "no se pudo enlazar (link) el archivo «%s» a «%s»: %m" -#: tcop/postgres.c:2631 tcop/postgres.c:2963 -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." +#: access/transam/xlog.c:4695 +#, c-format +msgid "could not create control file \"%s\": %m" +msgstr "no se pudo crear archivo de control «%s»: %m" -#: tcop/postgres.c:2735 -msgid "floating-point exception" -msgstr "excepción de coma flotante" +#: access/transam/xlog.c:4706 access/transam/xlog.c:4931 +#, c-format +msgid "could not write to control file: %m" +msgstr "no se pudo escribir en el archivo de control: %m" -#: tcop/postgres.c:2736 -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." +#: access/transam/xlog.c:4712 access/transam/xlog.c:4937 +#, c-format +msgid "could not fsync control file: %m" +msgstr "no se pudo sincronizar (fsync) el archivo de control: %m" -#: tcop/postgres.c:2903 -msgid "terminating autovacuum process due to administrator command" -msgstr "terminando el proceso autovacuum debido a una orden del administrador" +#: access/transam/xlog.c:4717 access/transam/xlog.c:4942 +#, c-format +msgid "could not close control file: %m" +msgstr "no se pudo cerrar el archivo de control: %m" -#: tcop/postgres.c:2907 tcop/postgres.c:2912 tcop/postgres.c:2961 -msgid "terminating connection due to conflict with recovery" -msgstr "terminando la conexión debido a un conflicto con la recuperación" +#: access/transam/xlog.c:4735 access/transam/xlog.c:4920 +#, c-format +msgid "could not open control file \"%s\": %m" +msgstr "no se pudo abrir el archivo de control «%s»: %m" -#: tcop/postgres.c:2917 -msgid "terminating connection due to administrator command" -msgstr "terminando la conexión debido a una orden del administrador" +#: access/transam/xlog.c:4741 +#, c-format +msgid "could not read from control file: %m" +msgstr "no se pudo leer desde el archivo de control: %m" -#: tcop/postgres.c:2932 -msgid "canceling authentication due to timeout" +#: access/transam/xlog.c:4755 +#, 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 "" -"cancelando la autentificación debido a que se agotó el tiempo de espera" +"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)." -#: tcop/postgres.c:2941 -msgid "canceling statement due to statement timeout" +#: access/transam/xlog.c:4759 +msgid "" +"This could be a problem of mismatched byte ordering. It looks like you need " +"to initdb." msgstr "" -"cancelando la sentencia debido a que se agotó el tiempo de espera de " -"sentencias" - -#: tcop/postgres.c:2950 -msgid "canceling autovacuum task" -msgstr "cancelando tarea de autovacuum" +"Este puede ser un problema de discordancia en el orden de bytes. Parece que " +"necesitará ejecutar initdb." -#: tcop/postgres.c:2968 storage/ipc/standby.c:498 -msgid "canceling statement due to conflict with recovery" -msgstr "cancelando la sentencia debido a un conflicto con la recuperación" +#: access/transam/xlog.c:4764 +#, 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." -#: tcop/postgres.c:2984 -msgid "canceling statement due to user request" -msgstr "cancelando la sentencia debido a una petición del usuario" +#: access/transam/xlog.c:4767 access/transam/xlog.c:4791 +#: access/transam/xlog.c:4798 access/transam/xlog.c:4803 +msgid "It looks like you need to initdb." +msgstr "Parece que necesita ejecutar initdb." -#: tcop/postgres.c:3058 tcop/postgres.c:3079 -msgid "stack depth limit exceeded" -msgstr "límite de profundidad de stack alcanzado" +#: access/transam/xlog.c:4778 +msgid "incorrect checksum in control file" +msgstr "la suma de verificación es incorrecta en el archivo de control" -#: tcop/postgres.c:3059 tcop/postgres.c:3080 +#: access/transam/xlog.c:4788 +#, c-format msgid "" -"Increase the configuration parameter \"max_stack_depth\", after ensuring the " -"platform's stack depth limit is adequate." +"The database cluster was initialized with CATALOG_VERSION_NO %d, but the " +"server was compiled with CATALOG_VERSION_NO %d." msgstr "" -"Incremente el parámetro de configuración «max_stack_depth», después de " -"asegurarse que el límite de profundidad de stack de la plataforma es " -"adecuado." +"Los archivos de base de datos fueron inicializados con CATALOG_VERSION_NO " +"%d, pero el servidor fue compilado con CATALOG_VERSION_NO %d." -#: tcop/postgres.c:3097 +#: access/transam/xlog.c:4795 #, c-format -msgid "\"max_stack_depth\" must not exceed %ldkB" -msgstr "«max_stack_depth» no debe exceder %ldkB" - -#: tcop/postgres.c:3099 msgid "" -"Increase the platform's stack depth limit via \"ulimit -s\" or local " -"equivalent." +"The database cluster was initialized with MAXALIGN %d, but the server was " +"compiled with MAXALIGN %d." msgstr "" -"Incremente el límite de profundidad del stack del sistema usando «ulimit -s» " -"o el equivalente de su sistema." +"Los archivos de la base de datos fueron inicializados con MAXALIGN %d, pero " +"el servidor fue compilado con MAXALIGN %d." -#: tcop/postgres.c:3422 -msgid "invalid command-line arguments for server process" +#: access/transam/xlog.c:4802 +msgid "" +"The database cluster appears to use a different floating-point number format " +"than the server executable." msgstr "" -"los argumentos de línea de órdenes no son válidos para proceso servidor" - -#: tcop/postgres.c:3423 tcop/postgres.c:3429 -#, c-format -msgid "Try \"%s --help\" for more information." -msgstr "Pruebe «%s --help» para mayor información." +"Los archivos de la base de datos parecen usar un formato de número de coma " +"flotante distinto al del ejecutable del servidor." -#: tcop/postgres.c:3427 +#: access/transam/xlog.c:4807 #, c-format -msgid "%s: invalid command-line arguments" -msgstr "%s: argumentos de línea de órdenes no válidos" +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." -#: tcop/postgres.c:3526 -#, c-format -msgid "%s: no database nor user name specified" -msgstr "%s: no se ha especificado base de datos ni usuario" +#: access/transam/xlog.c:4810 access/transam/xlog.c:4817 +#: access/transam/xlog.c:4824 access/transam/xlog.c:4831 +#: access/transam/xlog.c:4838 access/transam/xlog.c:4845 +#: access/transam/xlog.c:4852 access/transam/xlog.c:4860 +#: access/transam/xlog.c:4867 access/transam/xlog.c:4876 +#: access/transam/xlog.c:4883 access/transam/xlog.c:4892 +#: access/transam/xlog.c:4899 +msgid "It looks like you need to recompile or initdb." +msgstr "Parece que necesita recompilar o ejecutar initdb." -#: tcop/postgres.c:4064 +#: access/transam/xlog.c:4814 #, c-format -msgid "invalid CLOSE message subtype %d" -msgstr "subtipo %d de mensaje CLOSE no válido" +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." -#: tcop/postgres.c:4097 +#: access/transam/xlog.c:4821 #, c-format -msgid "invalid DESCRIBE message subtype %d" -msgstr "subtipo %d de mensaje DESCRIBE no válido" +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." -#: tcop/postgres.c:4328 +#: access/transam/xlog.c:4828 #, c-format msgid "" -"disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s" -"%s" +"The database cluster was initialized with XLOG_SEG_SIZE %d, but the server " +"was compiled with XLOG_SEG_SIZE %d." msgstr "" -"desconexión: duración de sesión: %d:%02d:%02d.%03d usuario=%s base=%s host=%s" -"%s%s" +"Los archivos de la base de datos fueron inicializados con XLOG_SEG_SIZE %d, " +"pero el servidor fue compilado con XLOG_SEG_SIZE %d." -#: tcop/pquery.c:670 +#: access/transam/xlog.c:4835 #, c-format -msgid "bind message has %d result formats but query has %d columns" +msgid "" +"The database cluster was initialized with NAMEDATALEN %d, but the server was " +"compiled with NAMEDATALEN %d." msgstr "" -"el mensaje de enlace (bind) tiene %d formatos de resultado pero la consulta " -"tiene %d columnas" - -#: tcop/pquery.c:978 -msgid "cursor can only scan forward" -msgstr "el cursor sólo se puede desplazar hacia adelante" - -#: tcop/pquery.c:979 -msgid "Declare it with SCROLL option to enable backward scan." -msgstr "Declárelo con SCROLL para permitirle desplazar hacia atrás." +"Los archivos de la base de datos fueron inicializados con NAMEDATALEN %d, " +"pero el servidor fue compilado con NAMEDATALEN %d." -#. translator: %s is name of a SQL command, eg CREATE -#: tcop/utility.c:242 +#: access/transam/xlog.c:4842 #, 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" +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." -#. translator: %s is name of a SQL command, eg CREATE -#: tcop/utility.c:261 +#: access/transam/xlog.c:4849 #, c-format -msgid "cannot execute %s during recovery" -msgstr "no se puede ejecutar %s durante la recuperación" +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." -#. translator: %s is name of a SQL command, eg PREPARE -#: tcop/utility.c:279 -#, c-format -msgid "cannot execute %s within security-restricted operation" +#: access/transam/xlog.c:4858 +msgid "" +"The database cluster was initialized without HAVE_INT64_TIMESTAMP but the " +"server was compiled with HAVE_INT64_TIMESTAMP." msgstr "" -"no se puede ejecutar %s durante una operación restringida por seguridad" +"Los archivos de la base de datos fueron inicializados sin " +"HAVE_INT64_TIMESTAMP, pero el servidor fue compilado con " +"HAVE_INT64_TIMESTAMP." -#: tcop/utility.c:1129 -msgid "must be superuser to do CHECKPOINT" -msgstr "debe ser superusuario para ejecutar CHECKPOINT" +#: access/transam/xlog.c:4865 +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." -#: executor/execCurrent.c:75 -#, c-format -msgid "cursor \"%s\" is not a SELECT query" -msgstr "el cursor «%s» no es una orden SELECT" +#: access/transam/xlog.c:4874 +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." -#: executor/execCurrent.c:81 -#, c-format -msgid "cursor \"%s\" is held from a previous transaction" -msgstr "el cursor «%s» está abierto desde una transacción anterior" +#: access/transam/xlog.c:4881 +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." -#: executor/execCurrent.c:113 -#, c-format -msgid "cursor \"%s\" has multiple FOR UPDATE/SHARE references to table \"%s\"" +#: access/transam/xlog.c:4890 +msgid "" +"The database cluster was initialized without USE_FLOAT8_BYVAL but the server " +"was compiled with USE_FLOAT8_BYVAL." msgstr "" -"el cursor «%s» tiene múltiples referencias FOR UPDATE/SHARE a la tabla «%s»" +"Los archivos de base de datos fueron inicializados sin USE_FLOAT8_BYVAL, " +"pero el servidor fue compilado con USE_FLOAT8_BYVAL." -#: executor/execCurrent.c:122 -#, c-format +#: access/transam/xlog.c:4897 msgid "" -"cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\"" +"The database cluster was initialized with USE_FLOAT8_BYVAL but the server " +"was compiled without USE_FLOAT8_BYVAL." msgstr "" -"el cursor «%s» no tiene una referencia FOR UPDATE/SHARE a la tabla «%s»" +"Los archivos de base de datos fueron inicializados con USE_FLOAT8_BYVAL, " +"pero el servidor fue compilado sin USE_FLOAT8_BYVAL." -#: executor/execCurrent.c:132 executor/execCurrent.c:178 +#: access/transam/xlog.c:5222 #, c-format -msgid "cursor \"%s\" is not positioned on a row" -msgstr "el cursor «%s» no está posicionado en una fila" +msgid "could not write bootstrap transaction log file: %m" +msgstr "" +"no se pudo escribir al archivo de registro de transacciones de inicio " +"(bootstrap): %m" -#: executor/execCurrent.c:165 +#: access/transam/xlog.c:5228 #, c-format -msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\"" +msgid "could not fsync bootstrap transaction log file: %m" msgstr "" -"el cursor «%s» no es un recorrido simplemente actualizable de la tabla «%s»" +"no se pudo sincronizar (fsync) el archivo de registro de transacciones de " +"inicio (bootstrap): %m" -#: executor/execCurrent.c:230 executor/execQual.c:1024 +#: access/transam/xlog.c:5233 #, c-format -msgid "" -"type of parameter %d (%s) does not match that when preparing the plan (%s)" +msgid "could not close bootstrap transaction log file: %m" msgstr "" -"el tipo del parámetro %d (%s) no coincide aquel con que fue preparado el " -"plan (%s)" +"no se pudo cerrar el archivo de registro de transacciones de inicio " +"(bootstrap): %m" -#: executor/execCurrent.c:242 executor/execQual.c:1035 +#: access/transam/xlog.c:5300 #, c-format -msgid "no value found for parameter %d" -msgstr "no se encontró un valor para parámetro %d" +msgid "could not open recovery command file \"%s\": %m" +msgstr "no se pudo abrir el archivo de recuperación «%s»: %m" -#: executor/execMain.c:876 +#: access/transam/xlog.c:5354 #, c-format -msgid "cannot change sequence \"%s\"" -msgstr "no se puede cambiar la secuencia «%s»" +msgid "recovery_target_timeline is not a valid number: \"%s\"" +msgstr "recovery_target_timeline no es un número válido: «%s»" -#: executor/execMain.c:882 +#: access/transam/xlog.c:5370 #, c-format -msgid "cannot change TOAST relation \"%s\"" -msgstr "no se puede cambiar la relación TOAST «%s»" +msgid "recovery_target_xid is not a valid number: \"%s\"" +msgstr "recovery_target_xid no es un número válido: «%s»" -#: executor/execMain.c:888 +#: access/transam/xlog.c:5414 #, c-format -msgid "cannot change view \"%s\"" -msgstr "no se puede cambiar la vista «%s»" +msgid "recovery_target_name is too long (maximum %d characters)" +msgstr "recovery_target_name es demasiado largo (máximo %d caracteres)" -#: executor/execMain.c:894 +#: access/transam/xlog.c:5461 #, c-format -msgid "cannot change relation \"%s\"" -msgstr "no se puede cambiar la relación «%s»" +msgid "unrecognized recovery parameter \"%s\"" +msgstr "parámetro de recuperación no reconocido: «%s»" -#: executor/execMain.c:1319 +#: access/transam/xlog.c:5472 #, 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" +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" -#: executor/execMain.c:1331 -#, c-format -msgid "new row for relation \"%s\" violates check constraint \"%s\"" +#: access/transam/xlog.c:5474 +msgid "" +"The database server will regularly poll the pg_xlog subdirectory to check " +"for files placed there." msgstr "" -"el nuevo registro para la relación «%s» viola la restricción check «%s»" +"El servidor de bases de datos monitoreará el subdirectorio pg_xlog con " +"regularidad en búsqueda de archivos almacenados ahí." -#: executor/execQual.c:296 executor/execQual.c:324 executor/execQual.c:2988 -#: utils/adt/array_userfuncs.c:428 utils/adt/arrayfuncs.c:204 -#: utils/adt/arrayfuncs.c:483 utils/adt/arrayfuncs.c:1218 -#: utils/adt/arrayfuncs.c:2886 utils/adt/arrayfuncs.c:4566 +#: access/transam/xlog.c:5480 #, c-format -msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgid "" +"recovery command file \"%s\" must specify restore_command when standby mode " +"is not enabled" msgstr "" -"el número de dimensiones del array (%d) excede el máximo permitido (%d)" +"el archivo de recuperación «%s» debe especificar restore_command cuando el " +"modo standby no está activo" -#: executor/execQual.c:309 executor/execQual.c:337 -msgid "array subscript in assignment must not be null" -msgstr "subíndice de array en asignación no puede ser nulo" +#: access/transam/xlog.c:5500 +#, c-format +msgid "recovery target timeline %u does not exist" +msgstr "no existe el timeline %u especificado como destino de recuperación" -#: executor/execQual.c:633 executor/execQual.c:3906 +#: access/transam/xlog.c:5630 +msgid "archive recovery complete" +msgstr "recuperación completa" + +#: access/transam/xlog.c:5748 #, c-format -msgid "attribute %d has wrong type" -msgstr "el atributo %d tiene tipo erróneo" +msgid "recovery stopping after commit of transaction %u, time %s" +msgstr "" +"recuperación detenida después de comprometer la transacción %u, hora %s" -#: executor/execQual.c:634 executor/execQual.c:3907 +#: access/transam/xlog.c:5753 #, c-format -msgid "Table has type %s, but query expects %s." -msgstr "La tabla tiene tipo %s, pero la consulta esperaba %s." +msgid "recovery stopping before commit of transaction %u, time %s" +msgstr "recuperación detenida antes de comprometer la transacción %u, hora %s" -#: executor/execQual.c:698 executor/execQual.c:717 executor/execQual.c:916 -#: 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 "" -"el tipo de fila de la tabla no coincide con el tipo de la fila de la consulta" +#: access/transam/xlog.c:5761 +#, 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" -#: executor/execQual.c:699 +#: access/transam/xlog.c:5766 #, 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." +msgid "recovery stopping before abort of transaction %u, time %s" +msgstr "recuperación detenida antes de abortar la transacción %u, hora %s" -#: executor/execQual.c:718 executor/nodeModifyTable.c:93 +#: access/transam/xlog.c:5775 #, c-format -msgid "Table has type %s at ordinal position %d, but query expects %s." +msgid "recovery stopping at restore point \"%s\", time %s" +msgstr "recuperación detenida en el punto de recuperación «%s», hora %s" + +#: access/transam/xlog.c:5809 +msgid "recovery has paused" +msgstr "la recuperación está en pausa" + +#: access/transam/xlog.c:5810 +msgid "Execute pg_xlog_replay_resume() to continue." +msgstr "Ejecute pg_xlog_replay_resume() para continuar." + +#: access/transam/xlog.c:5853 access/transam/xlog.c:5875 +#: access/transam/xlog.c:5897 +msgid "must be superuser to control recovery" +msgstr "debe ser superusuario para controlar la recuperación" + +#: access/transam/xlog.c:5858 access/transam/xlog.c:5880 +#: access/transam/xlog.c:5902 +msgid "recovery is not in progress" +msgstr "la recuperación no está en proceso" + +#: access/transam/xlog.c:5859 access/transam/xlog.c:5881 +#: access/transam/xlog.c:5903 +msgid "Recovery control functions can only be executed during recovery." msgstr "" -"La tabla tiene tipo %s en posición ordinal %d, pero la consulta esperaba %s." +"Las funciones de control de recuperación sólo pueden ejecutarse durante la " +"recuperación." -#: executor/execQual.c:917 executor/execQual.c:1505 +#: access/transam/xlog.c:5996 #, c-format -msgid "Physical storage mismatch on dropped attribute at ordinal position %d." +msgid "" +"hot standby is not possible because %s = %d is a lower setting than on the " +"master server (its value was %d)" msgstr "" -"Discordancia de almacenamiento físico en atributo eliminado en la posición " -"%d." +"hot standby no es posible puesto que %s = %d es una configuración menor que " +"en el servidor maestro (su valor era %d)" -#: executor/execQual.c:1189 parser/parse_func.c:97 parser/parse_func.c:329 -#: parser/parse_func.c:645 -#, 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" +#: access/transam/xlog.c:6018 +msgid "WAL was generated with wal_level=minimal, data may be missing" +msgstr "WAL fue generado con wal_level=minimal, puede haber datos faltantes" -#: executor/execQual.c:1373 -msgid "functions and operators can take at most one set argument" +#: access/transam/xlog.c:6019 +msgid "" +"This happens if you temporarily set wal_level=minimal without taking a new " +"base backup." msgstr "" -"las funciones y operadores pueden tomar a lo más un argumento que sea un " -"conjunto" +"Esto sucede si temporalmente define wal_level=minimal sin tomar un nuevo " +"respaldo base." -#: executor/execQual.c:1423 +#: access/transam/xlog.c:6030 msgid "" -"function returning setof record called in context that cannot accept type " -"record" +"hot standby is not possible because wal_level was not set to \"hot_standby\" " +"on the master server" msgstr "" -"se llamó una función que retorna «setof record» en un contexto que no puede " -"aceptar el tipo record" +"hot standby no es posible porque wal_level no estaba configurado como " +"«hot_standby» en el servidor maestro" -#: executor/execQual.c:1478 executor/execQual.c:1494 executor/execQual.c:1504 -msgid "function return row and query-specified return row do not match" +#: access/transam/xlog.c:6031 +msgid "" +"Either set wal_level to \"hot_standby\" on the master, or turn off " +"hot_standby here." msgstr "" -"la fila de retorno especificada en la consulta no coincide con fila de " -"retorno de la función" +"Defina wal_level a «hot_standby» en el maestro, o bien desactive hot_standby " +"en este servidor." + +#: access/transam/xlog.c:6079 +msgid "control file contains invalid data" +msgstr "el archivo de control contiene datos no válidos" -#: executor/execQual.c:1479 +#: access/transam/xlog.c:6083 #, 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." +msgid "database system was shut down at %s" +msgstr "el sistema de bases de datos fue apagado en %s" -#: executor/execQual.c:1495 +#: access/transam/xlog.c:6087 #, 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." +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" -#: executor/execQual.c:1748 executor/execQual.c:2171 -msgid "table-function protocol for materialize mode was not followed" +#: access/transam/xlog.c:6091 +#, c-format +msgid "database system shutdown was interrupted; last known up at %s" msgstr "" -"no se siguió el protocolo de función tabular para el modo de materialización" +"el apagado del sistema de datos fue interrumpido; última vez registrada en " +"funcionamiento en %s" -#: executor/execQual.c:1768 executor/execQual.c:2178 +#: access/transam/xlog.c:6095 #, c-format -msgid "unrecognized table-function returnMode: %d" +msgid "database system was interrupted while in recovery at %s" msgstr "" -"modo de retorno (returnMode) de la función tabular no es reconocido: %d" +"el sistema de bases de datos fue interrumpido durante la recuperación en %s" -#: executor/execQual.c:2088 -msgid "function returning set of rows cannot return null value" +#: access/transam/xlog.c:6097 +msgid "" +"This probably means that some data is corrupted and you will have to use the " +"last backup for recovery." msgstr "" -"una función que retorna un conjunto de registros no puede devolver un valor " -"null" - -#: executor/execQual.c:2145 -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" - -#: executor/execQual.c:2338 -msgid "IS DISTINCT FROM does not support set arguments" -msgstr "IS DISTINCT FROM no soporta argumentos que sean conjuntos" - -#: executor/execQual.c:2413 -msgid "op ANY/ALL (array) does not support set arguments" -msgstr "op ANY/ALL (array) no soporta argumentos que sean conjuntos" - -#: executor/execQual.c:2966 -msgid "cannot merge incompatible arrays" -msgstr "no se puede mezclar arrays incompatibles" +"Esto probablemente significa que algunos datos están corruptos y tendrá que " +"usar el respaldo más reciente para la recuperación." -#: executor/execQual.c:2967 +#: access/transam/xlog.c:6101 #, c-format -msgid "" -"Array with element type %s cannot be included in ARRAY construct with " -"element type %s." +msgid "database system was interrupted while in recovery at log time %s" msgstr "" -"El array con tipo de elemento %s no puede ser incluido en una sentencia " -"ARRAY con tipo de elemento %s." +"el sistema de bases de datos fue interrumpido durante la recuperación en el " +"instante de registro %s" -#: executor/execQual.c:3008 executor/execQual.c:3035 -#: utils/adt/arrayfuncs.c:518 +#: access/transam/xlog.c:6103 msgid "" -"multidimensional arrays must have array expressions with matching dimensions" +"If this has occurred more than once some data might be corrupted and you " +"might need to choose an earlier recovery target." msgstr "" -"los arrays multidimensionales deben tener expresiones de arrays con " -"dimensiones coincidentes" - -#: executor/execQual.c:3550 -msgid "NULLIF does not support set arguments" -msgstr "NULLIF no soporta argumentos que sean conjuntos" +"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." -#: executor/execQual.c:3780 utils/adt/domains.c:128 +#: access/transam/xlog.c:6107 #, c-format -msgid "domain %s does not allow null values" -msgstr "el dominio %s no permite valores null" +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" -#: executor/execQual.c:3809 utils/adt/domains.c:164 +#: access/transam/xlog.c:6156 #, 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:4277 optimizer/util/clauses.c:572 -#: parser/parse_agg.c:160 -msgid "aggregate function calls cannot be nested" -msgstr "no se pueden anidar llamadas a funciones de agregación" +msgid "requested timeline %u is not a child of database system timeline %u" +msgstr "el timeline %u especificado no es hijo del timeline de sistema %u" -#: executor/execQual.c:4315 optimizer/util/clauses.c:646 -#: parser/parse_agg.c:207 -msgid "window function calls cannot be nested" -msgstr "no se pueden anidar llamadas a funciones de ventana deslizante" +#: access/transam/xlog.c:6174 +msgid "entering standby mode" +msgstr "entrando al modo standby" -#: executor/execQual.c:4515 -msgid "target type is not an array" -msgstr "el tipo de destino no es un array" +#: access/transam/xlog.c:6177 +#, c-format +msgid "starting point-in-time recovery to XID %u" +msgstr "comenzando el proceso de recuperación hasta el XID %u" -#: executor/execQual.c:4628 +#: access/transam/xlog.c:6181 #, 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" +msgid "starting point-in-time recovery to %s" +msgstr "comenzando el proceso de recuperación hasta %s" -#: executor/execQual.c:4759 utils/adt/arrayfuncs.c:3306 -#: utils/adt/rowtypes.c:913 +#: access/transam/xlog.c:6185 #, 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" +msgid "starting point-in-time recovery to \"%s\"" +msgstr "comenzando el proceso de recuperación hasta «%s»" -#: executor/execUtils.c:1296 +#: access/transam/xlog.c:6189 +msgid "starting archive recovery" +msgstr "comenzando proceso de recuperación" + +#: access/transam/xlog.c:6211 access/transam/xlog.c:6251 #, c-format -msgid "could not create exclusion constraint \"%s\"" -msgstr "no se pudo crear la restricción por exclusión «%s»" +msgid "checkpoint record is at %X/%X" +msgstr "el registro del punto de control está en %X/%X" + +#: access/transam/xlog.c:6225 +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" -#: executor/execUtils.c:1298 +#: access/transam/xlog.c:6226 access/transam/xlog.c:6233 #, c-format -msgid "Key %s conflicts with key %s." -msgstr "La llave %s está en conflicto con la llave %s." +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:6232 +msgid "could not locate required checkpoint record" +msgstr "no se pudo localizar el registro del punto de control requerido" + +#: access/transam/xlog.c:6261 access/transam/xlog.c:6276 +msgid "could not locate a valid checkpoint record" +msgstr "no se pudo localizar un registro de punto de control válido" -#: executor/execUtils.c:1303 +#: access/transam/xlog.c:6270 #, c-format -msgid "conflicting key value violates exclusion constraint \"%s\"" -msgstr "llave en conflicto viola restricción por exclusión «%s»" +msgid "using previous checkpoint record at %X/%X" +msgstr "usando el registro del punto de control anterior en %X/%X" -#: executor/execUtils.c:1305 +#: access/transam/xlog.c:6285 #, c-format -msgid "Key %s conflicts with existing key %s." -msgstr "La llave %s está en conflicto con la llave existente %s." +msgid "redo record is at %X/%X; shutdown %s" +msgstr "registro de redo en %X/%X; apagado %s" -#. translator: %s is a SQL statement name -#: executor/functions.c:154 +#: access/transam/xlog.c:6289 #, c-format -msgid "%s is not allowed in a SQL function" -msgstr "%s no está permitido en una función SQL" +msgid "next transaction ID: %u/%u; next OID: %u" +msgstr "siguiente ID de transacción: %u/%u; siguiente OID: %u" -#. translator: %s is a SQL statement name -#: executor/functions.c:161 executor/spi.c:1256 executor/spi.c:1846 +#: access/transam/xlog.c:6293 #, c-format -msgid "%s is not allowed in a non-volatile function" -msgstr "%s no está permitido en una función no-«volatile»" +msgid "next MultiXactId: %u; next MultiXactOffset: %u" +msgstr "siguiente MultiXactId: %u; siguiente MultiXactOffset: %u" -#: executor/functions.c:259 +#: access/transam/xlog.c:6296 #, 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:6300 +msgid "invalid next transaction ID" +msgstr "el siguiente ID de transacción no es válido" + +#: access/transam/xlog.c:6322 +msgid "invalid redo in checkpoint record" +msgstr "redo no es válido en el registro de punto de control" + +#: access/transam/xlog.c:6333 +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:6363 msgid "" -"could not determine actual result type for function declared to return type " -"%s" +"database system was not properly shut down; automatic recovery in progress" msgstr "" -"no se pudo determinar el tipo de resultado para función declarada retornando " -"tipo %s" +"el sistema de bases de datos no fue apagado apropiadamente; se está " +"efectuando la recuperación automática" -#: executor/functions.c:298 -#, c-format -msgid "could not determine actual type of argument declared %s" -msgstr "no se pudo determinar el tipo de argumento declarado %s" +#: access/transam/xlog.c:6442 +msgid "initializing for hot standby" +msgstr "inicializando para hot standby" -#: executor/functions.c:923 +#: access/transam/xlog.c:6574 #, c-format -msgid "SQL function \"%s\" statement %d" -msgstr "función SQL «%s» en la sentencia %d" +msgid "redo starts at %X/%X" +msgstr "redo comienza en %X/%X" -#: executor/functions.c:946 +#: access/transam/xlog.c:6702 #, c-format -msgid "SQL function \"%s\" during startup" -msgstr "función SQL «%s» durante el inicio" +msgid "redo done at %X/%X" +msgstr "redo listo en %X/%X" -#: executor/functions.c:1091 executor/functions.c:1127 -#: executor/functions.c:1139 executor/functions.c:1250 -#: executor/functions.c:1282 executor/functions.c:1311 +#: access/transam/xlog.c:6707 access/transam/xlog.c:8307 #, 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" +msgid "last completed transaction was at log time %s" +msgstr "última transacción completada al tiempo de registro %s" -#: executor/functions.c:1093 -msgid "" -"Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING." +#: access/transam/xlog.c:6715 +msgid "redo is not required" +msgstr "no se requiere redo" + +#: access/transam/xlog.c:6763 +msgid "requested recovery stop point is before consistent recovery point" msgstr "" -"La sentencia final de la función debe ser un SELECT o INSERT/UPDATE/DELETE " -"RETURNING." +"el punto de detención de recuperación pedido es antes del punto de " +"recuperación consistente" -#: executor/functions.c:1129 -msgid "Final statement must return exactly one column." -msgstr "La sentencia final debe retornar exactamente una columna." +#: access/transam/xlog.c:6772 +msgid "WAL ends before end of online backup" +msgstr "WAL termina antes del fin del respaldo en línea" -#: executor/functions.c:1141 -#, c-format -msgid "Actual return type is %s." -msgstr "El verdadero tipo de retorno es %s." +#: access/transam/xlog.c:6773 +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." -#: executor/functions.c:1252 -msgid "Final statement returns too many columns." -msgstr "La sentencia final retorna demasiadas columnas." +#: access/transam/xlog.c:6776 +msgid "WAL ends before consistent recovery point" +msgstr "WAL termina antes del punto de recuperación consistente" -#: executor/functions.c:1284 +#: access/transam/xlog.c:6797 #, 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:1313 -msgid "Final statement returns too few columns." -msgstr "La sentencia final retorna muy pocas columnas." +msgid "selected new timeline ID: %u" +msgstr "seleccionado nuevo ID de timeline: %u" -#: executor/functions.c:1361 +#: access/transam/xlog.c:7047 #, c-format -msgid "return type %s is not supported for SQL functions" -msgstr "el tipo de retorno %s no es soportado en funciones SQL" +msgid "consistent recovery state reached at %X/%X" +msgstr "el estado de recuperación consistente fue alcanzado en %X/%X" -#: executor/nodeAgg.c:1717 executor/nodeWindowAgg.c:1842 -#, c-format -msgid "aggregate %u needs to have compatible input type and transition type" +#: access/transam/xlog.c:7214 +msgid "invalid primary checkpoint link in control file" msgstr "" -"la función de agregación %u necesita tener tipos de entrada y transición " -"compatibles" +"el enlace de punto de control primario en archivo de control no es válido" -#: executor/nodeHashjoin.c:721 executor/nodeHashjoin.c:755 -#, c-format -msgid "could not rewind hash-join temporary file: %m" -msgstr "falló la búsqueda en el archivo temporal de hash-join: %m" +#: access/transam/xlog.c:7218 +msgid "invalid secondary checkpoint link in control file" +msgstr "" +"el enlace del punto de control secundario en archivo de control no es válido" -#: executor/nodeHashjoin.c:789 executor/nodeHashjoin.c:795 -#, c-format -msgid "could not write to hash-join temporary file: %m" -msgstr "no se pudo escribir el archivo temporal de hash-join: %m" +#: access/transam/xlog.c:7222 +msgid "invalid checkpoint link in backup_label file" +msgstr "el enlace del punto de control en backup_label no es válido" -#: executor/nodeHashjoin.c:829 executor/nodeHashjoin.c:839 -#, c-format -msgid "could not read from hash-join temporary file: %m" -msgstr "no se pudo leer el archivo temporal de hash-join: %m" +#: access/transam/xlog.c:7236 +msgid "invalid primary checkpoint record" +msgstr "el registro del punto de control primario no es válido" -#: executor/nodeLimit.c:251 -msgid "OFFSET must not be negative" -msgstr "OFFSET no debe ser negativo" +#: access/transam/xlog.c:7240 +msgid "invalid secondary checkpoint record" +msgstr "el registro del punto de control secundario no es válido" -#: executor/nodeLimit.c:278 -msgid "LIMIT must not be negative" -msgstr "LIMIT no debe ser negativo" +#: access/transam/xlog.c:7244 +msgid "invalid checkpoint record" +msgstr "el registro del punto de control no es válido" -#: executor/nodeMergejoin.c:1586 -msgid "RIGHT JOIN is only supported with merge-joinable join conditions" +#: access/transam/xlog.c:7255 +msgid "invalid resource manager ID in primary checkpoint record" msgstr "" -"RIGHT JOIN sólo está soportado con condiciones que se pueden usar con merge " -"join" +"el ID de gestor de recursos en el registro del punto de control primario no " +"es válido" -#: executor/nodeMergejoin.c:1606 optimizer/path/joinpath.c:1072 -msgid "FULL JOIN is only supported with merge-joinable join conditions" +#: access/transam/xlog.c:7259 +msgid "invalid resource manager ID in secondary checkpoint record" msgstr "" -"FULL JOIN sólo está soportado con condiciones que se pueden usar con merge " -"join" - -#: executor/nodeModifyTable.c:83 -msgid "Query has too many columns." -msgstr "La consulta tiene demasiadas columnas." +"el ID de gestor de recursos en el registro del punto de control secundario " +"no es válido" -#: executor/nodeModifyTable.c:110 -#, c-format -msgid "Query provides a value for a dropped column at ordinal position %d." +#: access/transam/xlog.c:7263 +msgid "invalid resource manager ID in checkpoint record" msgstr "" -"La consulta entrega un valor para una columna eliminada en la posición %d." +"el ID de gestor de recursos en el registro del punto de control no es válido" -#: executor/nodeModifyTable.c:118 -msgid "Query has too few columns." -msgstr "La consulta tiene muy pocas columnas." +#: access/transam/xlog.c:7275 +msgid "invalid xl_info in primary checkpoint record" +msgstr "xl_info en el registro del punto de control primario no es válido" -#: 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 "una subconsulta utilizada como expresión retornó más de un registro" +#: access/transam/xlog.c:7279 +msgid "invalid xl_info in secondary checkpoint record" +msgstr "xl_info en el registro del punto de control secundario no es válido" -#: executor/nodeWindowAgg.c:1233 -msgid "frame starting offset must not be null" -msgstr "la posición inicial del marco no debe ser null" +#: access/transam/xlog.c:7283 +msgid "invalid xl_info in checkpoint record" +msgstr "xl_info en el registro del punto de control no es válido" -#: executor/nodeWindowAgg.c:1246 -msgid "frame starting offset must not be negative" -msgstr "la posición inicial del marco no debe ser negativa" +#: access/transam/xlog.c:7295 +msgid "invalid length of primary checkpoint record" +msgstr "la longitud del registro del punto de control primario no es válida" -#: executor/nodeWindowAgg.c:1259 -msgid "frame ending offset must not be null" -msgstr "la posición final del marco no debe ser null" +#: access/transam/xlog.c:7299 +msgid "invalid length of secondary checkpoint record" +msgstr "la longitud del registro del punto de control secundario no es válida" -#: executor/nodeWindowAgg.c:1272 -msgid "frame ending offset must not be negative" -msgstr "la posición final del marco no debe ser negativa" +#: access/transam/xlog.c:7303 +msgid "invalid length of checkpoint record" +msgstr "la longitud del registro de punto de control no es válida" -#: executor/spi.c:210 -msgid "transaction left non-empty SPI stack" -msgstr "transacción dejó un stack SPI no vacío" +#: access/transam/xlog.c:7465 +msgid "shutting down" +msgstr "apagando" -#: executor/spi.c:211 executor/spi.c:275 -msgid "Check for missing \"SPI_finish\" calls." -msgstr "Revise llamadas a «SPI_finish» faltantes." +#: access/transam/xlog.c:7487 +msgid "database system is shut down" +msgstr "el sistema de bases de datos está apagado" -#: executor/spi.c:274 -msgid "subtransaction left non-empty SPI stack" -msgstr "subtransacción dejó un stack SPI no vacío" +#: access/transam/xlog.c:7919 +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" -#: executor/spi.c:1137 -msgid "cannot open multi-query plan as cursor" -msgstr "no se puede abrir plan de varias consultas como cursor" +#: access/transam/xlog.c:8153 +msgid "skipping restartpoint, recovery has already ended" +msgstr "saltando el punto-de-reinicio; la recuperación ya ha terminado" -#. translator: %s is name of a SQL command, eg INSERT -#: executor/spi.c:1142 +#: access/transam/xlog.c:8178 #, c-format -msgid "cannot open %s query as cursor" -msgstr "no se puede abrir consulta %s como cursor" - -#: executor/spi.c:1233 parser/analyze.c:1978 -msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" -msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE no está soportado" - -#: executor/spi.c:1234 parser/analyze.c:1979 -msgid "Scrollable cursors must be READ ONLY." -msgstr "Los cursores declarados SCROLL deben ser READ ONLY." +msgid "skipping restartpoint, already performed at %X/%X" +msgstr "saltando el punto-de-reinicio; ya fue llevado a cabo en %X/%X" -#: executor/spi.c:2142 +#: access/transam/xlog.c:8305 #, c-format -msgid "SQL statement \"%s\"" -msgstr "sentencia SQL: «%s»" +msgid "recovery restart point at %X/%X" +msgstr "punto-de-reinicio de recuperación en %X/%X" -#: foreign/foreign.c:230 +#: access/transam/xlog.c:8405 #, c-format -msgid "user mapping not found for \"%s\"" -msgstr "no se encontró un mapeo para el usuario «%s»" +msgid "restore point \"%s\" created at %X/%X" +msgstr "punto de recuperación «%s» creado en %X/%X" -#: foreign/foreign.c:408 -#, c-format -msgid "invalid option \"%s\"" -msgstr "el nombre de opción «%s» no es válido" +#: access/transam/xlog.c:8505 +msgid "online backup was canceled, recovery cannot continue" +msgstr "el respaldo en línea fue cancelado, la recuperación no puede continuar" -#: foreign/foreign.c:409 +#: access/transam/xlog.c:8568 #, c-format -msgid "Valid options in this context are: %s" -msgstr "Las opciones válidas en este contexto son: %s" +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" -#: lib/stringinfo.c:267 +#: access/transam/xlog.c:8613 #, c-format -msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes." +msgid "unexpected timeline ID %u (should be %u) in checkpoint record" msgstr "" -"No se puede agrandar el búfer de cadena que ya tiene %d bytes en %d bytes " -"adicionales." +"ID de timeline %u inesperado (debería ser %u) en el registro de punto de " +"control" -#: libpq/auth.c:255 +#: access/transam/xlog.c:8877 access/transam/xlog.c:8901 #, c-format -msgid "authentication failed for user \"%s\": host rejected" -msgstr "la autentificación falló para el usuario «%s»: anfitrión rechazado" +msgid "could not fsync log file %u, segment %u: %m" +msgstr "" +"no se pudo sincronizar (fsync) el archivo de registro %u, segmento %u: %m" -#: libpq/auth.c:258 +#: access/transam/xlog.c:8909 #, c-format -msgid "Kerberos 5 authentication failed for user \"%s\"" -msgstr "la autentificación Kerberos 5 falló para el usuario «%s»" +msgid "could not fsync write-through log file %u, segment %u: %m" +msgstr "" +"no se pudo sincronizar (fsync write-through) el archivo de registro %u, " +"segmento %u: %m" -#: libpq/auth.c:261 +#: access/transam/xlog.c:8918 #, c-format -msgid "\"trust\" authentication failed for user \"%s\"" -msgstr "la autentificación «trust» falló para el usuario «%s»" +msgid "could not fdatasync log file %u, segment %u: %m" +msgstr "" +"no se pudo sincronizar (fdatasync) el archivo de registro %u, segmento %u: %m" -#: libpq/auth.c:264 -#, c-format -msgid "Ident authentication failed for user \"%s\"" -msgstr "la autentificación Ident falló para el usuario «%s»" +#: access/transam/xlog.c:8999 access/transam/xlog.c:9278 +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" -#: libpq/auth.c:268 -#, c-format -msgid "password authentication failed for user \"%s\"" -msgstr "la autentificación password falló para el usuario «%s»" +#: access/transam/xlog.c:9004 access/transam/xlog.c:9283 +#: access/transam/xlog.c:9546 access/transam/xlog.c:9578 +#: access/transam/xlog.c:9619 access/transam/xlog.c:9652 +#: access/transam/xlog.c:9759 access/transam/xlog.c:9834 +msgid "recovery is in progress" +msgstr "la recuperación está en proceso" -#: libpq/auth.c:273 -#, c-format -msgid "GSSAPI authentication failed for user \"%s\"" -msgstr "la autentificación GSSAPI falló para el usuario «%s»" +#: access/transam/xlog.c:9005 access/transam/xlog.c:9284 +#: access/transam/xlog.c:9547 access/transam/xlog.c:9579 +#: access/transam/xlog.c:9620 access/transam/xlog.c:9653 +msgid "WAL control functions cannot be executed during recovery." +msgstr "" +"Las funciones de control de WAL no pueden ejecutarse durante la recuperación." -#: libpq/auth.c:276 -#, c-format -msgid "SSPI authentication failed for user \"%s\"" -msgstr "la autentificación SSPI falló para el usuario «%s»" +#: access/transam/xlog.c:9010 access/transam/xlog.c:9289 +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" -#: libpq/auth.c:279 -#, c-format -msgid "PAM authentication failed for user \"%s\"" -msgstr "la autentificación PAM falló para el usuario «%s»" +#: access/transam/xlog.c:9011 access/transam/xlog.c:9290 +#: access/transam/xlog.c:9585 +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." -#: libpq/auth.c:282 +#: access/transam/xlog.c:9016 #, c-format -msgid "LDAP authentication failed for user \"%s\"" -msgstr "la autentificación LDAP falló para el usuario «%s»" +msgid "backup label too long (max %d bytes)" +msgstr "la etiqueta de respaldo es demasiado larga (máximo %d bytes)" -#: libpq/auth.c:285 -#, c-format -msgid "certificate authentication failed for user \"%s\"" -msgstr "la autentificación por certificado falló para el usuario «%s»" +#: access/transam/xlog.c:9057 access/transam/xlog.c:9160 +msgid "a backup is already in progress" +msgstr "ya hay un respaldo en curso" -#: libpq/auth.c:288 -#, c-format -msgid "RADIUS authentication failed for user \"%s\"" -msgstr "la autentificación RADIUS falló para el usuario «%s»" +#: access/transam/xlog.c:9058 +msgid "Run pg_stop_backup() and try again." +msgstr "Ejecute pg_stop_backup() e intente nuevamente." -#: libpq/auth.c:291 +#: access/transam/xlog.c:9161 #, c-format -msgid "authentication failed for user \"%s\": invalid authentication method" +msgid "" +"If you're sure there is no backup in progress, remove file \"%s\" and try " +"again." msgstr "" -"la autentificación falló para el usuario «%s»: método de autentificación no " -"válido" - -#: libpq/auth.c:320 -msgid "missing or erroneous pg_hba.conf file" -msgstr "No se encuentra pg_hba.conf o el archivo es incorrecto" - -#: libpq/auth.c:321 -msgid "See server log for details." -msgstr "Vea el registro del servidor para obtener más detalles." - -#: libpq/auth.c:351 -msgid "connection requires a valid client certificate" -msgstr "la conexión requiere un certificado de cliente válido" +"Si está seguro que no hay un respaldo en curso, elimine el archivo «%s» e " +"intente nuevamente." -#: libpq/auth.c:395 libpq/auth.c:411 libpq/auth.c:448 libpq/auth.c:464 -msgid "SSL on" -msgstr "SSL activo" +#: access/transam/xlog.c:9176 access/transam/xlog.c:9422 +#, c-format +msgid "could not write file \"%s\": %m" +msgstr "no se pudo escribir el archivo «%s»: %m" -#: libpq/auth.c:395 libpq/auth.c:411 libpq/auth.c:448 libpq/auth.c:464 -msgid "SSL off" -msgstr "SSL inactivo" +#: access/transam/xlog.c:9334 +msgid "a backup is not in progress" +msgstr "no hay un respaldo en curso" -#: libpq/auth.c:393 +#: access/transam/xlog.c:9373 access/transam/xlog.c:9904 +#: access/transam/xlog.c:9910 #, 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" +msgid "invalid data in file \"%s\"" +msgstr "datos no válidos en archivo «%s»" -#: libpq/auth.c:399 -#, c-format -msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\"" +#: access/transam/xlog.c:9471 +msgid "" +"pg_stop_backup cleanup done, waiting for required WAL segments to be archived" msgstr "" -"pg_hba.conf rechaza la conexión de replicación para el servidor «%s», " -"usuario «%s»" +"finalización de pg_stop_backup completa, esperando que se archiven los " +"segmentos WAL requeridos" -#: libpq/auth.c:408 +#: access/transam/xlog.c:9481 #, c-format msgid "" -"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s" -"\", %s" +"pg_stop_backup still waiting for all required WAL segments to be archived " +"(%d seconds elapsed)" msgstr "" -"pg_hba.conf rechaza la conexión para el servidor «%s», usuario «%s», base de " -"datos «%s», %s" +"pg_stop_backup todavía espera que todos los segmentos WAL requeridos sean " +"archivados (han pasado %d segundos)" -#: libpq/auth.c:415 -#, c-format +#: access/transam/xlog.c:9483 msgid "" -"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\"" +"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 "" -"pg_hba.conf rechaza la conexión para el servidor «%s», usuario «%s», base de " -"datos «%s»" +"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." -#: libpq/auth.c:446 -#, c-format -msgid "" -"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s" -"\", %s" +#: access/transam/xlog.c:9490 +msgid "pg_stop_backup complete, all required WAL segments have been archived" msgstr "" -"no hay una línea en pg_hba.conf para la conexión de replicación desde el " -"servidor «%s», usuario «%s», %s" +"pg_stop_backup completado, todos los segmentos de WAL requeridos han sido " +"archivados" -#: libpq/auth.c:452 -#, c-format +#: access/transam/xlog.c:9494 msgid "" -"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\"" +"WAL archiving is not enabled; you must ensure that all required WAL segments " +"are copied through other means to complete the backup" msgstr "" -"no hay una línea en pg_hba.conf para la conexión de replicación desde el " -"servidor «%s», usuario «%s»" +"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" -#: libpq/auth.c:461 -#, 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" +#: access/transam/xlog.c:9541 +msgid "must be superuser to switch transaction log files" +msgstr "debe ser superusuario para cambiar a un nuevo archivo de registro" -#: libpq/auth.c:468 -#, 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»" +#: access/transam/xlog.c:9573 +msgid "must be superuser to create a restore point" +msgstr "debe ser superusuario para crear un punto de recuperación" -#: libpq/auth.c:526 -#, c-format -msgid "could not enable credential reception: %m" -msgstr "no se pudo activar la recepción de credenciales: %m" +#: access/transam/xlog.c:9584 +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" -#: libpq/auth.c:539 libpq/hba.c:948 -msgid "" -"MD5 authentication is not supported when \"db_user_namespace\" is enabled" +#: access/transam/xlog.c:9592 +#, c-format +msgid "value too long for restore point (maximum %d characters)" msgstr "" -"la autentificación MD5 no está soportada cuando «db_user_namespace» está " -"activo" +"el valor es demasiado largo para un punto de recuperación (máximo %d " +"caracteres)" -#: libpq/auth.c:660 -#, c-format -msgid "expected password response, got message type %d" -msgstr "se esperaba una respuesta de contraseña, se obtuvo mensaje de tipo %d" +#: access/transam/xlog.c:9760 +msgid "pg_xlogfile_name_offset() cannot be executed during recovery." +msgstr "pg_xlogfile_name_offset() no puede ejecutarse durante la recuperación." -#: libpq/auth.c:688 -msgid "invalid password packet size" -msgstr "el tamaño del paquete de contraseña no es válido" +#: access/transam/xlog.c:9770 access/transam/xlog.c:9842 +#, c-format +msgid "could not parse transaction log location \"%s\"" +msgstr "no se pudo interpretar la ubicación del registro de transacciones «%s»" -#: libpq/auth.c:692 -msgid "received password packet" -msgstr "se recibió un paquete de clave" +#: access/transam/xlog.c:9835 +msgid "pg_xlogfile_name() cannot be executed during recovery." +msgstr "pg_xlogfile_name() no puede ejecutarse durante la recuperación." -#: libpq/auth.c:750 +#: access/transam/xlog.c:9946 #, c-format -msgid "Kerberos initialization returned error %d" -msgstr "la inicialización de Kerberos retornó error %d" +msgid "xlog redo %s" +msgstr "xlog redo %s" -#: libpq/auth.c:760 -#, c-format -msgid "Kerberos keytab resolving returned error %d" -msgstr "la resolución de keytab de Kerberos retornó error %d" +#: access/transam/xlog.c:9986 +msgid "online backup mode canceled" +msgstr "el modo de respaldo en línea fue cancelado" -#: libpq/auth.c:784 +#: access/transam/xlog.c:9987 #, c-format -msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d" -msgstr "sname_to_principal(\"%s\", \"%s\") de Kerberos retornó error %d" +msgid "\"%s\" was renamed to \"%s\"." +msgstr "«%s» fue renombrado a «%s»." -#: libpq/auth.c:829 -#, c-format -msgid "Kerberos recvauth returned error %d" -msgstr "recvauth de Kerberos retornó error %d" +#: access/transam/xlog.c:9994 +msgid "online backup mode was not canceled" +msgstr "el modo de respaldo en línea no fue cancelado" -#: libpq/auth.c:852 +#: access/transam/xlog.c:9995 #, c-format -msgid "Kerberos unparse_name returned error %d" -msgstr "unparse_name de Kerberos retornó error %d" +msgid "Could not rename \"%s\" to \"%s\": %m." +msgstr "No se pudo renombrar «%s» a «%s»: %m." -#: libpq/auth.c:975 +#: access/transam/xlog.c:10508 access/transam/xlog.c:10530 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "could not read from log file %u, segment %u, offset %u: %m" +msgstr "" +"no se pudo leer el archivo de registro %u, segmento %u, posición %u: %m" -#: libpq/auth.c:1001 -msgid "GSSAPI is not supported in protocol version 2" -msgstr "GSSAPI no está soportado por el protocolo versión 2" +#: access/transam/xlog.c:10619 +msgid "received promote request" +msgstr "se recibió petición de promoción" -#: libpq/auth.c:1056 +#: access/transam/xlog.c:10632 #, c-format -msgid "expected GSS response, got message type %d" -msgstr "se esperaba una respuesta GSS, se obtuvo mensaje de tipo %d" +msgid "trigger file found: %s" +msgstr "se encontró el archivo disparador: %s" -#: libpq/auth.c:1119 -msgid "accepting GSS security context failed" -msgstr "falló la aceptación del contexto de seguridad GSS" +#: access/gin/ginentrypage.c:101 access/nbtree/nbtsort.c:483 +#: access/nbtree/nbtinsert.c:531 +#, 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»" -#: libpq/auth.c:1145 -msgid "retrieving GSS user name failed" -msgstr "falló la obtención del nombre de usuario GSS" +#: access/gin/ginscan.c:401 +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" -#: libpq/auth.c:1218 +#: access/gin/ginscan.c:402 #, c-format -msgid "SSPI error %x" -msgstr "error SSPI %x" +msgid "To fix this, do REINDEX INDEX \"%s\"." +msgstr "Para corregir esto, ejecute REINDEX INDEX \"%s\"." -#: libpq/auth.c:1222 +#: access/nbtree/nbtpage.c:161 access/nbtree/nbtpage.c:365 +#: parser/parse_utilcmd.c:1577 #, c-format -msgid "%s (%x)" -msgstr "%s (%x)" +msgid "index \"%s\" is not a btree" +msgstr "el índice «%s» no es un btree" -#: libpq/auth.c:1262 -msgid "SSPI is not supported in protocol version 2" -msgstr "SSPI no está soportado por el protocolo versión 2" - -#: libpq/auth.c:1277 -msgid "could not acquire SSPI credentials" -msgstr "no se pudo obtener las credenciales SSPI" - -#: libpq/auth.c:1294 +#: access/nbtree/nbtpage.c:167 access/nbtree/nbtpage.c:371 #, 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:1366 -msgid "could not accept SSPI security context" -msgstr "no se pudo aceptar un contexto SSPI" +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" -#: libpq/auth.c:1422 -msgid "could not get token from SSPI security context" +#: access/nbtree/nbtsort.c:487 access/nbtree/nbtinsert.c:535 +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 "" -"no se pudo obtener un testigo (token) desde el contexto de seguridad SSPI" +"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." -#: libpq/auth.c:1665 +#: access/nbtree/nbtinsert.c:393 #, c-format -msgid "could not create socket for Ident connection: %m" -msgstr "no se pudo crear un socket para conexión Ident: %m" +msgid "duplicate key value violates unique constraint \"%s\"" +msgstr "llave duplicada viola restricción de unicidad «%s»" -#: libpq/auth.c:1680 +#: access/nbtree/nbtinsert.c:395 #, c-format -msgid "could not bind to local address \"%s\": %m" -msgstr "no se pudo enlazar a la dirección local «%s»: %m" +msgid "Key %s already exists." +msgstr "Ya existe la llave %s." -#: libpq/auth.c:1692 +#: access/nbtree/nbtinsert.c:457 #, c-format -msgid "could not connect to Ident server at address \"%s\", port %s: %m" -msgstr "no se pudo conectar al servidor Ident «%s», port %s: %m" +msgid "failed to re-find tuple within index \"%s\"" +msgstr "no se pudo volver a encontrar la tupla dentro del índice «%s»" -#: libpq/auth.c:1712 -#, 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" +#: access/nbtree/nbtinsert.c:459 +msgid "This may be because of a non-immutable index expression." +msgstr "Esto puede deberse a una expresión de índice no inmutable." -#: libpq/auth.c:1727 +#: access/index/indexam.c:161 commands/tablecmds.c:221 +#: commands/tablecmds.c:2414 commands/indexcmds.c:1514 +#: catalog/objectaddress.c:391 #, c-format -msgid "" -"could not receive response from Ident server at address \"%s\", port %s: %m" -msgstr "no se pudo recibir respuesta Ident desde el servidor «%s», port %s: %m" +msgid "\"%s\" is not an index" +msgstr "«%s» no es un índice" -#: libpq/auth.c:1737 -#, c-format -msgid "invalidly formatted response from Ident server: \"%s\"" -msgstr "respuesta del servidor Ident en formato no válido: «%s»" +#: access/gist/gist.c:127 access/gist/gist.c:243 +msgid "unlogged GiST indexes are not supported" +msgstr "los índices GiST unlogged no están soportados" -#: libpq/auth.c:1772 libpq/auth.c:1802 libpq/auth.c:1830 libpq/auth.c:1906 +#: access/gist/gist.c:728 access/gist/gistvacuum.c:271 #, c-format -msgid "could not get peer credentials: %m" -msgstr "no se pudo recibir credenciales: %m" +msgid "index \"%s\" contains an inner tuple marked as invalid" +msgstr "el índice «%s» contiene una tupla interna marcada como no válida" -#: libpq/auth.c:1781 libpq/auth.c:1811 libpq/auth.c:1848 libpq/auth.c:1917 -#, c-format -msgid "local user with ID %d does not exist" -msgstr "no existe un usuario local con ID %d" +#: access/gist/gist.c:730 access/gist/gistvacuum.c:273 +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." -#: libpq/auth.c:1838 +#: access/gist/gistsplit.c:446 #, c-format -msgid "could not get effective UID from peer credentials: %m" -msgstr "no se pudo obtener el UID efectivo desde las credenciales del par: %m" +msgid "picksplit method for column %d of index \"%s\" failed" +msgstr "el método picksplit para la columna %d del índice «%s» falló" -#: libpq/auth.c:1928 +#: access/gist/gistsplit.c:448 msgid "" -"Ident authentication is not supported on local connections on this platform" -msgstr "esta plataforma no soporta autentificación Ident en conexiones locales" +"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 "" +"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." -#: libpq/auth.c:2045 libpq/auth.c:2317 libpq/auth.c:2677 -msgid "empty password returned by client" -msgstr "el cliente retornó una contraseña vacía" +#: commands/lockcmds.c:93 +#, c-format +msgid "could not obtain lock on relation \"%s\"" +msgstr "no se pudo bloquear un candado en la relación «%s»" -#: libpq/auth.c:2055 +#: commands/lockcmds.c:98 #, c-format -msgid "error from underlying PAM layer: %s" -msgstr "se ha recibido un error de la biblioteca PAM: %s" +msgid "could not obtain lock on relation with OID %u" +msgstr "no se pudo bloquear un candado en la relación con OID %u" -#: libpq/auth.c:2124 +#: commands/lockcmds.c:122 catalog/namespace.c:285 parser/parse_relation.c:844 #, c-format -msgid "could not create PAM authenticator: %s" -msgstr "no se pudo crear autenticador PAM: %s" +msgid "relation \"%s.%s\" does not exist" +msgstr "no existe la relación «%s.%s»" -#: libpq/auth.c:2135 +#: commands/lockcmds.c:149 commands/tablecmds.c:203 commands/tablecmds.c:1137 +#: commands/tablecmds.c:2406 commands/tablecmds.c:3758 +#: commands/tablecmds.c:6731 commands/indexcmds.c:198 +#: commands/indexcmds.c:1546 catalog/toasting.c:93 catalog/objectaddress.c:405 #, c-format -msgid "pam_set_item(PAM_USER) failed: %s" -msgstr "pam_set_item(PAM_USER) falló: %s" +msgid "\"%s\" is not a table" +msgstr "«%s» no es una tabla" -#: libpq/auth.c:2146 +#: commands/define.c:67 commands/define.c:222 commands/define.c:254 +#: commands/define.c:282 #, c-format -msgid "pam_set_item(PAM_CONV) failed: %s" -msgstr "pam_set_item(PAM_CONV) falló: %s" +msgid "%s requires a parameter" +msgstr "%s requiere un parámetro" -#: libpq/auth.c:2157 +#: commands/define.c:108 commands/define.c:119 commands/define.c:189 +#: commands/define.c:207 #, c-format -msgid "pam_authenticate failed: %s" -msgstr "pam_authenticate falló: %s" +msgid "%s requires a numeric value" +msgstr "%s requiere un valor numérico" -#: libpq/auth.c:2168 +#: commands/define.c:175 #, c-format -msgid "pam_acct_mgmt failed: %s" -msgstr "pam_acct_mgmt falló: %s" +msgid "%s requires a Boolean value" +msgstr "«%s» requiere un valor lógico (booleano)" -#: libpq/auth.c:2179 +#: commands/define.c:236 #, c-format -msgid "could not release PAM authenticator: %s" -msgstr "no se pudo liberar autenticador PAM: %s" +msgid "argument of %s must be a name" +msgstr "el argumento de %s debe ser un nombre" -#: libpq/auth.c:2212 libpq/auth.c:2216 +#: commands/define.c:266 #, c-format -msgid "could not initialize LDAP: error code %d" -msgstr "no se pudo inicializar LDAP: código de error %d" +msgid "argument of %s must be a type name" +msgstr "el argumento de %s debe ser un nombre de tipo" -#: libpq/auth.c:2226 +#: commands/define.c:291 #, c-format -msgid "could not set LDAP protocol version: error code %d" -msgstr "no se pudo definir la versión de protocolo LDAP: código de error %d" +msgid "%s requires an integer value" +msgstr "%s requiere valor entero" -#: libpq/auth.c:2255 -msgid "could not load wldap32.dll" -msgstr "no se pudo cargar wldap32.dll" +#: commands/define.c:312 +#, c-format +msgid "invalid argument for %s: \"%s\"" +msgstr "argumento no válido para %s: «%s»" -#: libpq/auth.c:2263 -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" +#: commands/variable.c:172 +msgid "Conflicting \"datestyle\" specifications." +msgstr "Especificaciones contradictorias de «datestyle»." -#: libpq/auth.c:2264 -msgid "LDAP over SSL is not supported on this platform." -msgstr "LDAP sobre SSL no está soportado en esta plataforma." +#: commands/variable.c:328 +msgid "Cannot specify months in time zone interval." +msgstr "No se pueden especificar meses en el intervalo de huso horario." -#: libpq/auth.c:2279 -#, c-format -msgid "could not start LDAP TLS session: error code %d" -msgstr "no se pudo iniciar sesión de LDAP TLS: código de error %d" +#: commands/variable.c:334 +msgid "Cannot specify days in time zone interval." +msgstr "No se pueden especificar días en el intervalo de huso horario." -#: libpq/auth.c:2301 -msgid "LDAP server not specified" -msgstr "servidor LDAP no especificado" +#: commands/variable.c:378 commands/variable.c:517 +#, c-format +msgid "time zone \"%s\" appears to use leap seconds" +msgstr "el huso horario «%s» parece usar segundos intercalares (bisiestos)" -#: libpq/auth.c:2353 -msgid "invalid character in user name for LDAP authentication" -msgstr "carácter no válido en nombre de usuario para autentificación LDAP" +#: commands/variable.c:380 commands/variable.c:519 +msgid "PostgreSQL does not support leap seconds." +msgstr "PostgreSQL no soporta segundos intercalares." -#: libpq/auth.c:2368 -#, c-format -msgid "" -"could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": " -"error code %d" +#: commands/variable.c:587 +msgid "cannot set transaction read-write mode inside a read-only transaction" msgstr "" -"no se pudo hacer el enlace LDAP inicial para el ldapbinddb «%s» en el " -"servidor «%s»: código de error %d" +"no se puede poner en modo de escritura dentro de una transacción de sólo " +"lectura" -#: libpq/auth.c:2393 -#, c-format -msgid "could not search LDAP for filter \"%s\" on server \"%s\": error code %d" -msgstr "" -"no se pudo hacer la búsqueda LDAP para el filtro «%s» en el servidor «%s»: " -"código de error %d" +#: commands/variable.c:594 +msgid "transaction read-write mode must be set before any query" +msgstr "el modo de escritura debe ser activado antes de cualquier consulta" -#: libpq/auth.c:2403 -#, c-format -msgid "LDAP search failed for filter \"%s\" on server \"%s\": no such user" -msgstr "" -"La búsqueda LDAP falló para el filtro «%s» en el servidor «%s»: no existe el " -"usuario" +#: commands/variable.c:601 +msgid "cannot set transaction read-write mode during recovery" +msgstr "no se puede poner en modo de escritura durante la recuperación" -#: libpq/auth.c:2407 -#, c-format -msgid "" -"LDAP search failed for filter \"%s\" on server \"%s\": user is not unique " -"(%ld matches)" +#: commands/variable.c:650 +msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query" msgstr "" -"La búsqueda LDAP falló para el filtro «%s» en el servidor «%s»: el usuario " -"no es único (%ld coincidencias)" +"SET TRANSACTION ISOLATION LEVEL debe ser llamado antes de cualquier consulta" -#: libpq/auth.c:2424 -#, c-format -msgid "" -"could not get dn for the first entry matching \"%s\" on server \"%s\": %s" +#: commands/variable.c:657 +msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction" msgstr "" -"no se pudo obtener el dn para la primera entrada que coincide con «%s» en el " -"servidor «%s»: %s" +"SET TRANSACTION ISOLATION LEVEL no debe ser llamado en una subtransacción" -#: libpq/auth.c:2444 -#, 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" +#: commands/variable.c:664 storage/lmgr/predicate.c:1570 +msgid "cannot use serializable mode in a hot standby" +msgstr "no se puede utilizar el modo serializable en un hot standby" -#: libpq/auth.c:2481 -#, c-format -msgid "LDAP login failed for user \"%s\" on server \"%s\": error code %d" -msgstr "" -"Falló el inicio de sesión LDAP para el usuario «%s» en el servidor «%s»: " -"código de error %d" +#: commands/variable.c:665 +msgid "You can use REPEATABLE READ instead." +msgstr "Puede utilizar REPEATABLE READ en su lugar." -#: libpq/auth.c:2509 -#, c-format +#: commands/variable.c:713 msgid "" -"certificate authentication failed for user \"%s\": client certificate " -"contains no user name" +"SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction" msgstr "" -"la autentificación con certificado falló para el usuario «%s»: el " -"certificado de cliente no contiene un nombre de usuario" +"SET TRANSACTION [NOT] DEFERRABLE no puede ser llamado en una subtransacción" -#: libpq/auth.c:2633 -msgid "RADIUS server not specified" -msgstr "servidor RADIUS no especificado" +#: commands/variable.c:719 +msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query" +msgstr "" +"SET TRANSACTION [NOT] DEFERRABLE debe ser llamado antes de cualquier consulta" -#: libpq/auth.c:2640 -msgid "RADIUS secret not specified" -msgstr "secreto RADIUS no especificado" +#: commands/variable.c:801 +#, c-format +msgid "Conversion between %s and %s is not supported." +msgstr "La conversión entre %s y %s no está soportada." -#: libpq/auth.c:2656 libpq/hba.c:1213 +#: commands/variable.c:808 +msgid "Cannot change \"client_encoding\" now." +msgstr "No se puede cambiar «client_encoding» ahora." + +#: commands/variable.c:978 #, 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" +msgid "permission denied to set role \"%s\"" +msgstr "se ha denegado el permiso para definir el rol «%s»" -#: libpq/auth.c:2684 -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" +#: commands/prepare.c:71 +msgid "invalid statement name: must not be empty" +msgstr "el nombre de sentencia no es válido: no debe ser vacío" -#: libpq/auth.c:2695 -msgid "could not generate random encryption vector" -msgstr "no se pudo generar un vector aleatorio de encriptación" +#: commands/prepare.c:140 +msgid "utility statements cannot be prepared" +msgstr "sentencias de utilidad no pueden ser preparadas" -#: libpq/auth.c:2718 -msgid "could not perform MD5 encryption of password" -msgstr "no se pudo efectuar cifrado MD5 de la contraseña" +#: commands/prepare.c:240 commands/prepare.c:247 commands/prepare.c:706 +msgid "prepared statement is not a SELECT" +msgstr "la sentencia preparada no es un SELECT" -#: libpq/auth.c:2740 +#: commands/prepare.c:314 #, c-format -msgid "could not create RADIUS socket: %m" -msgstr "no se pudo crear el socket RADIUS: %m" +msgid "wrong number of parameters for prepared statement \"%s\"" +msgstr "el número de parámetros es incorrecto en la sentencia preparada «%s»" -#: libpq/auth.c:2761 +#: commands/prepare.c:316 #, c-format -msgid "could not bind local RADIUS socket: %m" -msgstr "no se pudo enlazar el socket RADIUS local: %m" +msgid "Expected %d parameters but got %d." +msgstr "Se esperaban %d parámetros pero se obtuvieron %d." -#: libpq/auth.c:2771 -#, c-format -msgid "could not send RADIUS packet: %m" -msgstr "no se pudo enviar el paquete RADIUS: %m" +#: commands/prepare.c:345 +msgid "cannot use subquery in EXECUTE parameter" +msgstr "no se puede usar una subconsulta en un parámetro a EXECUTE" -#: libpq/auth.c:2800 libpq/auth.c:2825 -msgid "timeout waiting for RADIUS response" -msgstr "se agotó el tiempo de espera de la respuesta RADIUS" +#: commands/prepare.c:349 +msgid "cannot use aggregate function in EXECUTE parameter" +msgstr "no se puede usar una función de agregación en un parámetro a EXECUTE" -#: libpq/auth.c:2818 -#, c-format -msgid "could not check status on RADIUS socket: %m" -msgstr "no se pudo verificar el estado en el socket %m" +#: commands/prepare.c:353 +msgid "cannot use window function in EXECUTE parameter" +msgstr "" +"no se puede usar una función de ventana deslizante en un parámetro a EXECUTE" -#: libpq/auth.c:2847 +#: commands/prepare.c:366 #, c-format -msgid "could not read RADIUS response: %m" -msgstr "no se pudo leer la respuesta RADIUS: %m" +msgid "parameter $%d of type %s cannot be coerced to the expected type %s" +msgstr "" +"el parámetro $%d de tipo %s no puede ser convertido al tipo esperado %s" -#: libpq/auth.c:2859 libpq/auth.c:2863 -#, c-format -msgid "RADIUS response was sent from incorrect port: %i" -msgstr "la respuesta RADIUS fue enviada desde el port incorrecto: %i" +#: commands/prepare.c:370 rewrite/rewriteHandler.c:1035 catalog/heap.c:2446 +#: parser/parse_target.c:490 parser/parse_target.c:736 +#: parser/parse_target.c:746 parser/parse_node.c:397 +msgid "You will need to rewrite or cast the expression." +msgstr "Necesitará reescribir la expresión o aplicarle una conversión de tipo." -#: libpq/auth.c:2872 +#: commands/prepare.c:467 #, c-format -msgid "RADIUS response too short: %i" -msgstr "la respuesta RADIUS es demasiado corta: %i" +msgid "prepared statement \"%s\" already exists" +msgstr "la sentencia preparada «%s» ya existe" -#: libpq/auth.c:2879 +#: commands/prepare.c:525 #, c-format -msgid "RADIUS response has corrupt length: %i (actual length %i)" -msgstr "la respuesta RADIUS tiene largo corrupto: %i (largo real %i)" +msgid "prepared statement \"%s\" does not exist" +msgstr "no existe la sentencia preparada «%s»" -#: libpq/auth.c:2887 +#: commands/tablecmds.c:201 #, c-format -msgid "RADIUS response is to a different request: %i (should be %i)" -msgstr "la respuesta RADIUS es a una petición diferente: %i (debería ser %i)" +msgid "table \"%s\" does not exist" +msgstr "no existe la tabla «%s»" -#: libpq/auth.c:2912 -msgid "could not perform MD5 encryption of received packet" -msgstr "no se pudo realizar cifrado MD5 del paquete recibido" +#: commands/tablecmds.c:202 +#, c-format +msgid "table \"%s\" does not exist, skipping" +msgstr "la tabla «%s» no existe, ignorando" -#: libpq/auth.c:2921 -msgid "RADIUS response has incorrect MD5 signature" -msgstr "la respuesta RADIUS tiene firma MD5 incorrecta" +#: commands/tablecmds.c:204 +msgid "Use DROP TABLE to remove a table." +msgstr "Use DROP TABLE para eliminar una tabla." -#: libpq/auth.c:2938 +#: commands/tablecmds.c:207 #, c-format -msgid "RADIUS response has invalid code (%i) for user \"%s\"" -msgstr "la respuesta RADIUS tiene código no válido (%i) para el usuario «%s»" +msgid "sequence \"%s\" does not exist" +msgstr "no existe la secuencia «%s»" -#: 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:518 +#: commands/tablecmds.c:208 #, c-format -msgid "invalid large-object descriptor: %d" -msgstr "el descriptor de objeto grande no es válido: %d" +msgid "sequence \"%s\" does not exist, skipping" +msgstr "la secuencia «%s» no existe, ignorando" + +#: commands/tablecmds.c:210 +msgid "Use DROP SEQUENCE to remove a sequence." +msgstr "Use DROP SEQUENCE para eliminar una secuencia." -#: libpq/be-fsstubs.c:173 libpq/be-fsstubs.c:205 libpq/be-fsstubs.c:528 +#: commands/tablecmds.c:213 #, c-format -msgid "permission denied for large object %u" -msgstr "permiso denegado al objeto grande %u" +msgid "view \"%s\" does not exist" +msgstr "no existe la vista «%s»" -#: libpq/be-fsstubs.c:194 +#: commands/tablecmds.c:214 #, c-format -msgid "large object descriptor %d was not opened for writing" -msgstr "el descriptor de objeto grande %d no fue abierto para escritura" +msgid "view \"%s\" does not exist, skipping" +msgstr "la vista «%s» no existe, ignorando" -#: libpq/be-fsstubs.c:392 -msgid "must be superuser to use server-side lo_import()" -msgstr "" -"debe ser superusuario para utilizar lo_import() en el extremo del servidor" +#: commands/tablecmds.c:215 commands/tablecmds.c:2181 +#: commands/tablecmds.c:2438 commands/tablecmds.c:3773 +#: commands/tablecmds.c:9040 commands/view.c:181 catalog/objectaddress.c:412 +#, c-format +msgid "\"%s\" is not a view" +msgstr "«%s» no es una vista" -#: libpq/be-fsstubs.c:393 -msgid "Anyone can use the client-side lo_import() provided by libpq." -msgstr "" -"Todos los usuarios pueden utilizar lo_import() de cliente proporcionada por " -"libpq." +#: commands/tablecmds.c:216 +msgid "Use DROP VIEW to remove a view." +msgstr "Use DROP VIEW para eliminar una vista." -#: libpq/be-fsstubs.c:406 +#: commands/tablecmds.c:219 parser/parse_utilcmd.c:1505 #, c-format -msgid "could not open server file \"%s\": %m" -msgstr "no se pudo abrir el archivo de servidor «%s»: %m" +msgid "index \"%s\" does not exist" +msgstr "no existe el índice «%s»" -#: libpq/be-fsstubs.c:428 +#: commands/tablecmds.c:220 #, c-format -msgid "could not read server file \"%s\": %m" -msgstr "no se pudo leer el archivo de servidor «%s»: %m" - -#: libpq/be-fsstubs.c:458 -msgid "must be superuser to use server-side lo_export()" -msgstr "" -"debe ser superusuario para utilizar lo_export() en el extremo del servidor" +msgid "index \"%s\" does not exist, skipping" +msgstr "el índice «%s» no existe, ignorando" -#: libpq/be-fsstubs.c:459 -msgid "Anyone can use the client-side lo_export() provided by libpq." -msgstr "" -"Todos los usuarios pueden utilizar lo_export() de cliente proporcionada por " -"libpq." +#: commands/tablecmds.c:222 +msgid "Use DROP INDEX to remove an index." +msgstr "Use DROP INDEX para eliminar un índice." -#: libpq/be-fsstubs.c:483 +#: commands/tablecmds.c:226 commands/typecmds.c:666 #, c-format -msgid "could not create server file \"%s\": %m" -msgstr "no se pudo crear el archivo del servidor «%s»: %m" +msgid "type \"%s\" does not exist, skipping" +msgstr "el tipo «%s» no existe, ignorando" -#: libpq/be-fsstubs.c:495 +#: commands/tablecmds.c:227 #, c-format -msgid "could not write server file \"%s\": %m" -msgstr "no se pudo escribir el archivo del servidor «%s»: %m" +msgid "\"%s\" is not a type" +msgstr "«%s» no es un tipo" + +#: commands/tablecmds.c:228 +msgid "Use DROP TYPE to remove a type." +msgstr "Use DROP TYPE para eliminar un tipo." -#: libpq/be-secure.c:283 libpq/be-secure.c:378 +#: commands/tablecmds.c:231 commands/tablecmds.c:8952 #, c-format -msgid "SSL error: %s" -msgstr "error SSL: %s" +msgid "foreign table \"%s\" does not exist" +msgstr "no existe la tabla foránea «%s»" -#: libpq/be-secure.c:292 libpq/be-secure.c:387 libpq/be-secure.c:951 +#: commands/tablecmds.c:232 #, c-format -msgid "unrecognized SSL error code: %d" -msgstr "código de error SSL no reconocido: %d" +msgid "foreign table \"%s\" does not exist, skipping" +msgstr "la tabla foránea «%s» no existe, ignorando" -#: libpq/be-secure.c:331 libpq/be-secure.c:335 libpq/be-secure.c:345 -msgid "SSL renegotiation failure" -msgstr "ocurrió una falla en renegociación SSL" +#: commands/tablecmds.c:233 commands/tablecmds.c:2187 +#: commands/tablecmds.c:2446 commands/tablecmds.c:3776 +#: commands/tablecmds.c:9048 catalog/objectaddress.c:419 +#, c-format +msgid "\"%s\" is not a foreign table" +msgstr "«%s» no es una tabla foránea" -#: libpq/be-secure.c:339 -msgid "SSL failed to send renegotiation request" -msgstr "SSL no pudo enviar una petición de renegociación" +#: commands/tablecmds.c:234 +msgid "Use DROP FOREIGN TABLE to remove a foreign table." +msgstr "Use DROP FOREIGN TABLE para eliminar una tabla foránea." -#: libpq/be-secure.c:736 -#, c-format -msgid "could not create SSL context: %s" -msgstr "no se pudo crear un contexto SSL: %s" +#: commands/tablecmds.c:429 executor/execMain.c:2411 +msgid "ON COMMIT can only be used on temporary tables" +msgstr "ON COMMIT sólo puede ser usado en tablas temporales" -#: libpq/be-secure.c:746 -#, c-format -msgid "could not load server certificate file \"%s\": %s" -msgstr "no se pudo cargar el archivo de certificado de servidor «%s»: %s" +#: commands/tablecmds.c:433 +msgid "constraints on foreign tables are not supported" +msgstr "las restricciones en tablas foráneas no están soportadas" -#: libpq/be-secure.c:752 -#, c-format -msgid "could not access private key file \"%s\": %m" -msgstr "no se pudo acceder al archivo de la llave privada «%s»: %m" +#: commands/tablecmds.c:451 executor/execMain.c:2429 +msgid "cannot create temporary table within security-restricted operation" +msgstr "" +"no se puede crear una tabla temporal dentro una operación restringida por " +"seguridad" -#: libpq/be-secure.c:767 -#, 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" +#: commands/tablecmds.c:483 commands/tablecmds.c:7932 commands/indexcmds.c:263 +#: executor/execMain.c:2462 +msgid "only shared relations can be placed in pg_global tablespace" +msgstr "" +"sólo relaciones compartidas pueden ser puestas en el tablespace pg_global" -#: libpq/be-secure.c:769 -msgid "Permissions should be u=rw (0600) or less." -msgstr "Los permisos deberían ser u=rw (0500) o menos." +#: commands/tablecmds.c:549 commands/tablecmds.c:4284 +msgid "default values on foreign tables are not supported" +msgstr "los valores por omisión en tablas foráneas no están soportados" -#: libpq/be-secure.c:776 +#: commands/tablecmds.c:929 #, c-format -msgid "could not load private key file \"%s\": %s" -msgstr "no se pudo cargar el archivo de la llave privada «%s»: %s" +msgid "truncate cascades to table \"%s\"" +msgstr "truncando además la tabla «%s»" + +#: commands/tablecmds.c:1160 +msgid "cannot truncate temporary tables of other sessions" +msgstr "no se pueden truncar tablas temporales de otras sesiones" -#: libpq/be-secure.c:781 +#: commands/tablecmds.c:1276 commands/tablecmds.c:1708 +#: commands/tablecmds.c:4209 catalog/heap.c:389 #, c-format -msgid "check of private key failed: %s" -msgstr "falló la revisión de la llave privada: %s" +msgid "tables can have at most %d columns" +msgstr "las tablas pueden tener a lo más %d columnas" -#: libpq/be-secure.c:809 +#: commands/tablecmds.c:1327 commands/copy.c:3799 commands/trigger.c:601 +#: parser/parse_target.c:912 parser/parse_target.c:923 #, c-format -msgid "could not access root certificate file \"%s\": %m" -msgstr "no se pudo acceder al archivo del certificado raíz «%s»: %m" +msgid "column \"%s\" specified more than once" +msgstr "la columna «%s» fue especificada más de una vez" -#: libpq/be-secure.c:820 +#: commands/tablecmds.c:1362 parser/parse_utilcmd.c:623 +#: parser/parse_utilcmd.c:1717 #, c-format -msgid "could not load root certificate file \"%s\": %s" -msgstr "no se pudo cargar el archivo del certificado raíz «%s»: %s" +msgid "inherited relation \"%s\" is not a table" +msgstr "la relación heredada «%s» no es una tabla" -#: libpq/be-secure.c:843 +#: commands/tablecmds.c:1369 commands/tablecmds.c:8164 #, c-format -msgid "SSL certificate revocation list file \"%s\" ignored" -msgstr "ignorando lista de revocación de certificado SSL «%s»" +msgid "cannot inherit from temporary relation \"%s\"" +msgstr "no se puede heredar de la tabla temporal «%s»" -#: libpq/be-secure.c:845 -msgid "SSL library does not support certificate revocation lists." -msgstr "La libreria SSL no soporta listas de revocación de certificados." +#: commands/tablecmds.c:1377 commands/tablecmds.c:8172 +msgid "cannot inherit from temporary relation of another session" +msgstr "no se puede heredar de una tabla temporal de otra sesión" -#: libpq/be-secure.c:852 +#: commands/tablecmds.c:1393 commands/tablecmds.c:8206 #, c-format -msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s" -msgstr "" -"lista de revocación de certificados SSL «%s» no encontrada, ignorando: %s" +msgid "relation \"%s\" would be inherited from more than once" +msgstr "se heredaría de la relación «%s» más de una vez" -#: libpq/be-secure.c:854 -msgid "Certificates will not be checked against revocation list." -msgstr "Certificados no serán verificados en las listas de revocación." +#: commands/tablecmds.c:1441 +#, c-format +msgid "merging multiple inherited definitions of column \"%s\"" +msgstr "mezclando múltiples definiciones heredadas de la columna «%s»" -#: libpq/be-secure.c:896 +#: commands/tablecmds.c:1449 #, c-format -msgid "could not initialize SSL connection: %s" -msgstr "no se pudo inicializar la conexión SSL: %s" +msgid "inherited column \"%s\" has a type conflict" +msgstr "columna heredada «%s» tiene conflicto de tipos" -#: libpq/be-secure.c:905 +#: commands/tablecmds.c:1451 commands/tablecmds.c:1472 +#: commands/tablecmds.c:1653 commands/tablecmds.c:1675 +#: parser/parse_coerce.c:1540 parser/parse_coerce.c:1560 +#: parser/parse_coerce.c:1605 parser/parse_param.c:217 #, c-format -msgid "could not set SSL socket: %s" -msgstr "no se definir un socket SSL: %s" +msgid "%s versus %s" +msgstr "%s versus %s" -#: libpq/be-secure.c:931 +#: commands/tablecmds.c:1458 #, c-format -msgid "could not accept SSL connection: %m" -msgstr "no se pudo aceptar una conexión SSL: %m" +msgid "inherited column \"%s\" has a collation conflict" +msgstr "columna heredada «%s» tiene conflicto de ordenamiento (collation)" -#: libpq/be-secure.c:935 libpq/be-secure.c:946 -msgid "could not accept SSL connection: EOF detected" -msgstr "no se pudo aceptar una conexión SSL: se detectó EOF" +#: commands/tablecmds.c:1460 commands/tablecmds.c:1663 +#: commands/tablecmds.c:4153 +#, c-format +msgid "\"%s\" versus \"%s\"" +msgstr "«%s» versus «%s»" -#: libpq/be-secure.c:940 +#: commands/tablecmds.c:1470 #, c-format -msgid "could not accept SSL connection: %s" -msgstr "no se pudo aceptar una conexión SSL: %s" +msgid "inherited column \"%s\" has a storage parameter conflict" +msgstr "columna heredada «%s» tiene conflicto de parámetros de almacenamiento" -#: libpq/be-secure.c:991 -msgid "SSL certificate's common name contains embedded null" -msgstr "el «common name» del certificado SSL contiene un carácter null" +#: commands/tablecmds.c:1578 parser/parse_utilcmd.c:776 +#: parser/parse_utilcmd.c:1154 parser/parse_utilcmd.c:1230 +msgid "cannot convert whole-row table reference" +msgstr "no se puede convertir una referencia a la fila completa (whole-row)" -#: libpq/be-secure.c:998 +#: commands/tablecmds.c:1579 parser/parse_utilcmd.c:777 #, c-format -msgid "SSL connection from \"%s\"" -msgstr "conexión SSL desde «%s»" +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»." -#: libpq/be-secure.c:1042 -msgid "no SSL error reported" -msgstr "código de error SSL no reportado" +#: commands/tablecmds.c:1643 +#, c-format +msgid "merging column \"%s\" with inherited definition" +msgstr "mezclando la columna «%s» con la definición heredada" -#: libpq/be-secure.c:1046 +#: commands/tablecmds.c:1651 #, c-format -msgid "SSL error code %lu" -msgstr "código de error SSL %lu" +msgid "column \"%s\" has a type conflict" +msgstr "la columna «%s» tiene conflicto de tipos" -#: libpq/hba.c:158 +#: commands/tablecmds.c:1661 #, c-format -msgid "authentication file token too long, skipping: \"%s\"" -msgstr "" -"una palabra en el archivo de autentificación es demasiado larga, ignorando: " -"«%s»" +msgid "column \"%s\" has a collation conflict" +msgstr "la columna «%s» tiene conflicto de ordenamientos (collation)" -#: libpq/hba.c:351 +#: commands/tablecmds.c:1673 #, c-format -msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" -msgstr "" -"no se pudo abrir el archivo secundario de autentificación «@%s» como «%s»: %m" +msgid "column \"%s\" has a storage parameter conflict" +msgstr "la columna «%s» tiene conflicto de parámetros de almacenamiento" -#. translator: the second %s is a list of auth methods -#: libpq/hba.c:651 +#: commands/tablecmds.c:1725 #, c-format -msgid "" -"authentication option \"%s\" is only valid for authentication methods %s" +msgid "column \"%s\" inherits conflicting default values" +msgstr "la columna «%s» hereda valores por omisión no coincidentes" + +#: commands/tablecmds.c:1727 +msgid "To resolve the conflict, specify a default explicitly." msgstr "" -"la opción de autentificación «%s» sólo es válida para los métodos de " -"autentificación %s" +"Para resolver el conflicto, indique explícitamente un valor por omisión." -#: libpq/hba.c:667 +#: commands/tablecmds.c:1774 #, c-format -msgid "authentication method \"%s\" requires argument \"%s\" to be set" +msgid "" +"check constraint name \"%s\" appears multiple times but with different " +"expressions" msgstr "" -"el método de autentificación «%s» requiere que el argumento «%s» esté " -"definido" - -#: libpq/hba.c:713 -msgid "hostssl not supported on this platform" -msgstr "hostssl no están soportados en esta plataforma" +"la restricción «check» «%s» aparece más de una vez con diferentes expresiones" -#: libpq/hba.c:714 -msgid "Compile with --with-openssl to use SSL connections." -msgstr "Compile con --with-openssl para usar conexiones SSL." +#: commands/tablecmds.c:1969 +msgid "cannot rename column of typed table" +msgstr "no se puede cambiar el nombre a una columna de una tabla tipada" -#: libpq/hba.c:736 +#: commands/tablecmds.c:1986 #, c-format -msgid "invalid connection type \"%s\"" -msgstr "tipo de conexión «%s» no válido" - -#: libpq/hba.c:749 -msgid "end-of-line before database specification" -msgstr "fin de línea antes de especificación de base de datos" +msgid "\"%s\" is not a table, view, composite type, index or foreign table" +msgstr "«%s» no es una tabla, vista, tipo compuesto, índice o tabla foránea" -#: libpq/hba.c:762 -msgid "end-of-line before role specification" -msgstr "fin de línea antes de especificación de rol" - -#: libpq/hba.c:777 -msgid "end-of-line before IP address specification" -msgstr "fin de línea antes de especificación de dirección IP" - -#: libpq/hba.c:823 +#: commands/tablecmds.c:2052 #, c-format -msgid "invalid IP address \"%s\": %s" -msgstr "dirección IP «%s» no válida: %s" +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" -#: libpq/hba.c:846 +#: commands/tablecmds.c:2084 #, c-format -msgid "invalid CIDR mask in address \"%s\"" -msgstr "máscara CIDR no válida en dirección «%s»" - -#: libpq/hba.c:864 -msgid "end-of-line before netmask specification" -msgstr "fin de línea antes de especificación de máscara de red" +msgid "cannot rename system column \"%s\"" +msgstr "no se puede cambiar el nombre a la columna de sistema «%s»" -#: libpq/hba.c:876 +#: commands/tablecmds.c:2099 #, c-format -msgid "invalid IP mask \"%s\": %s" -msgstr "máscara IP «%s» no válida: %s" +msgid "cannot rename inherited column \"%s\"" +msgstr "no se puede cambiar el nombre a la columna heredada «%s»" -#: libpq/hba.c:893 -msgid "IP address and mask do not match" -msgstr "La dirección y máscara IP no coinciden" +#: commands/tablecmds.c:2110 commands/tablecmds.c:4197 +#, c-format +msgid "column \"%s\" of relation \"%s\" already exists" +msgstr "ya existe la columna «%s» en la relación «%s»" -#: libpq/hba.c:908 -msgid "end-of-line before authentication method" -msgstr "fin de línea antes de especificación de método de autentificación" +#: commands/tablecmds.c:2199 commands/tablecmds.c:7415 +#: commands/tablecmds.c:9084 +msgid "Use ALTER TYPE instead." +msgstr "Considere usar ALTER TYPE." -#: libpq/hba.c:979 +#: commands/tablecmds.c:2246 catalog/index.c:773 catalog/heap.c:1013 #, c-format -msgid "invalid authentication method \"%s\"" -msgstr "método de autentificación «%s» no válido" +msgid "relation \"%s\" already exists" +msgstr "la relación «%s» ya existe" -#: libpq/hba.c:990 +#. translator: first %s is a SQL command, eg ALTER TABLE +#: commands/tablecmds.c:2322 #, c-format -msgid "invalid authentication method \"%s\": not supported on this platform" +msgid "" +"cannot %s \"%s\" because it is being used by active queries in this session" msgstr "" -"método de autentificación «%s» no válido: esta plataforma no lo soporta" +"no se puede hacer %s en «%s» porque está siendo usada por consultas activas " +"en esta sesión" -#: libpq/hba.c:1003 -msgid "krb5 authentication is not supported on local sockets" -msgstr "la autentificación krb5 no está soportada en conexiones locales" +#. translator: first %s is a SQL command, eg ALTER TABLE +#: commands/tablecmds.c:2331 +#, 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" -#: libpq/hba.c:1014 -msgid "gssapi authentication is not supported on local sockets" -msgstr "la autentificación gssapi no está soportada en conexiones locales" +#: commands/tablecmds.c:2430 +#, c-format +msgid "\"%s\" is not a composite type" +msgstr "«%s» no es un tipo compuesto" -#: libpq/hba.c:1031 -msgid "cert authentication is only supported on hostssl connections" -msgstr "la autentificación cert sólo está soportada en conexiones hostssl" +#: commands/tablecmds.c:3260 +#, c-format +msgid "cannot rewrite system relation \"%s\"" +msgstr "no se puede reescribir la relación de sistema «%s»" -#: libpq/hba.c:1052 +#: commands/tablecmds.c:3270 +msgid "cannot rewrite temporary tables of other sessions" +msgstr "no se puede reescribir tablas temporales de otras sesiones" + +#: commands/tablecmds.c:3495 #, c-format -msgid "authentication option not in name=value format: %s" -msgstr "opción de autentificación en formato nombre=valor: %s" +msgid "rewriting table \"%s\"" +msgstr "reescribiendo tabla «%s»" -#: libpq/hba.c:1067 -msgid "ident, krb5, gssapi, sspi and cert" -msgstr "ident, krb5, gssapi, sspi y cert" +#: commands/tablecmds.c:3499 +#, c-format +msgid "verifying table \"%s\"" +msgstr "verificando tabla «%s»" -#: libpq/hba.c:1081 -msgid "clientcert can only be configured for \"hostssl\" rows" -msgstr "clientcert sólo puede ser configurado en líneas «hostssl»" +#: commands/tablecmds.c:3606 +#, c-format +msgid "column \"%s\" contains null values" +msgstr "la columna «%s» contiene valores nulos" -#: libpq/hba.c:1092 -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" +#: commands/tablecmds.c:3620 +#, c-format +msgid "check constraint \"%s\" is violated by some row" +msgstr "la restricción check «%s» es violada por alguna fila" -#: libpq/hba.c:1093 -msgid "Make sure the root.crt file is present and readable." -msgstr "Asegúrese que el archivo root.crt está presente y es legible." +#: commands/tablecmds.c:3761 commands/tablecmds.c:4713 +#, c-format +msgid "\"%s\" is not a table or index" +msgstr "«%s» no es una tabla o índice" -#: libpq/hba.c:1106 -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»" +#: commands/tablecmds.c:3764 commands/trigger.c:186 commands/trigger.c:1099 +#: rewrite/rewriteDefine.c:257 +#, c-format +msgid "\"%s\" is not a table or view" +msgstr "«%s» no es una tabla o vista" -#: libpq/hba.c:1140 +#: commands/tablecmds.c:3767 #, c-format -msgid "invalid LDAP port number: \"%s\"" -msgstr "número de puerto LDAP no válido: «%s»" +msgid "\"%s\" is not a table or foreign table" +msgstr "«%s» no es una tabla o tabla foránea" -#: libpq/hba.c:1186 libpq/hba.c:1194 -msgid "krb5, gssapi and sspi" -msgstr "krb5, gssapi y sspi" +#: commands/tablecmds.c:3770 +#, 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" -#: libpq/hba.c:1232 +#: commands/tablecmds.c:3780 #, c-format -msgid "invalid RADIUS port number: \"%s\"" -msgstr "número de puerto RADIUS no válido: «%s»" +msgid "\"%s\" is of the wrong type" +msgstr "«%s» es tipo equivocado" -#: libpq/hba.c:1252 +#: commands/tablecmds.c:3929 commands/tablecmds.c:3936 #, c-format -msgid "unrecognized authentication option name: \"%s\"" -msgstr "nombre de opción de autentificación desconocido: «%s»" +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" -#: libpq/hba.c:1284 +#: commands/tablecmds.c:3943 +#, c-format msgid "" -"cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, or ldapsearchattribute " -"together with ldapprefix" +"cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type" msgstr "" -"no se puede usar ldapbasedn, ldapbinddn, ldapbindpasswd or " -"ldapsearchattribute junto con ldapprefix" +"no se puede alterar la tabla foránea «%s» porque la columna «%s.%s» usa su " +"tipo" -#: libpq/hba.c:1294 -msgid "" -"authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix" -"\", or \"ldapsuffix\" to be set" +#: commands/tablecmds.c:3950 +#, c-format +msgid "cannot alter table \"%s\" because column \"%s.%s\" uses its row type" msgstr "" -"el método de autentificación «ldap» requiere que los argumento «ldapbasedn», " -"«ldapprefix» o «ldapsuffix» estén definidos" +"no se puede alterar la tabla «%s» porque la columna «%s.%s» usa su tipo" -#: libpq/hba.c:1482 guc-file.l:436 +#: commands/tablecmds.c:4012 #, c-format -msgid "could not open configuration file \"%s\": %m" -msgstr "no se pudo abrir el archivo de configuración «%s»: %m" +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:4014 +msgid "Use ALTER ... CASCADE to alter the typed tables too." +msgstr "Use ALTER ... CASCADE para eliminar además las tablas tipadas." -#: libpq/hba.c:1614 +#: commands/tablecmds.c:4058 #, c-format -msgid "invalid regular expression \"%s\": %s" -msgstr "la expresión regular «%s» no es válida: %s" +msgid "type %s is not a composite type" +msgstr "el tipo %s no es un tipo compuesto" + +#: commands/tablecmds.c:4084 +msgid "cannot add column to typed table" +msgstr "no se puede agregar una columna a una tabla tipada" -#: libpq/hba.c:1637 +#: commands/tablecmds.c:4145 commands/tablecmds.c:8360 #, c-format -msgid "regular expression match for \"%s\" failed: %s" -msgstr "la coincidencia de expresión regular para «%s» falló: %s" +msgid "child table \"%s\" has different type for column \"%s\"" +msgstr "la tabla hija «%s» tiene un tipo diferente para la columna «%s»" -#: libpq/hba.c:1655 +#: commands/tablecmds.c:4151 commands/tablecmds.c:8367 #, c-format -msgid "" -"regular expression \"%s\" has no subexpressions as requested by " -"backreference in \"%s\"" +msgid "child table \"%s\" has different collation for column \"%s\"" msgstr "" -"la expresión regular «%s» no tiene subexpresiones según lo requiere la " -"referencia hacia atrás en «%s»" +"la tabla hija «%s» tiene un ordenamiento (collation) diferente para la " +"columna «%s»" -#: libpq/hba.c:1721 +#: commands/tablecmds.c:4161 #, c-format -msgid "missing entry in file \"%s\" at end of line %d" -msgstr "falta una entrada en el archivo «%s» al final de la línea %d" +msgid "child table \"%s\" has a conflicting \"%s\" column" +msgstr "tabla hija «%s» tiene una columna «%s» que entra en conflicto" -#: libpq/hba.c:1762 +#: commands/tablecmds.c:4173 #, 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" +msgid "merging definition of column \"%s\" for child \"%s\"" +msgstr "mezclando la definición de la columna «%s» en la tabla hija «%s»" -#: libpq/hba.c:1783 -#, 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»" +#: commands/tablecmds.c:4403 +msgid "column must be added to child tables too" +msgstr "la columna debe ser agregada a las tablas hijas también" -#: libpq/hba.c:1807 +#: commands/tablecmds.c:4533 commands/tablecmds.c:4625 +#: commands/tablecmds.c:4670 commands/tablecmds.c:4766 +#: commands/tablecmds.c:4810 commands/tablecmds.c:4889 +#: commands/tablecmds.c:6628 #, c-format -msgid "could not open usermap file \"%s\": %m" -msgstr "no se pudo abrir el archivo de mapa de usuarios «%s»: %m" +msgid "cannot alter system column \"%s\"" +msgstr "no se puede alterar columna de sistema «%s»" -#: libpq/pqcomm.c:294 +#: commands/tablecmds.c:4569 #, 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" +msgid "column \"%s\" is in a primary key" +msgstr "la columna «%s» está en la llave primaria" -#: libpq/pqcomm.c:298 +#: commands/tablecmds.c:4740 #, c-format -msgid "could not translate service \"%s\" to address: %s" -msgstr "no se pudo traducir el servicio «%s» a dirección: %s" +msgid "statistics target %d is too low" +msgstr "el valor de estadísticas %d es demasiado bajo" -#: libpq/pqcomm.c:325 +#: commands/tablecmds.c:4748 #, 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" +msgid "lowering statistics target to %d" +msgstr "bajando el valor de estadísticas a %d" -#: libpq/pqcomm.c:334 -msgid "IPv4" -msgstr "IPv4" +#: commands/tablecmds.c:4870 +#, c-format +msgid "invalid storage type \"%s\"" +msgstr "tipo de almacenamiento no válido «%s»" -#: libpq/pqcomm.c:338 -msgid "IPv6" -msgstr "IPv6" +#: commands/tablecmds.c:4901 +#, 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" -#: libpq/pqcomm.c:343 -msgid "Unix" -msgstr "Unix" +#: commands/tablecmds.c:4931 +msgid "cannot drop column from typed table" +msgstr "no se pueden eliminar columnas de una tabla tipada" -#: libpq/pqcomm.c:348 +#: commands/tablecmds.c:4972 #, c-format -msgid "unrecognized address family %d" -msgstr "la familia de direcciones %d no es reconocida" +msgid "column \"%s\" of relation \"%s\" does not exist, skipping" +msgstr "no existe la columna «%s» en la relación «%s», ignorando" -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:359 +#: commands/tablecmds.c:4985 #, c-format -msgid "could not create %s socket: %m" -msgstr "no se pudo crear el socket %s: %m" +msgid "cannot drop system column \"%s\"" +msgstr "no se puede eliminar la columna de sistema «%s»" -#: libpq/pqcomm.c:384 +#: commands/tablecmds.c:4992 #, c-format -msgid "setsockopt(SO_REUSEADDR) failed: %m" -msgstr "setsockopt(SO_REUSEADDR) falló: %m" +msgid "cannot drop inherited column \"%s\"" +msgstr "no se puede eliminar la columna heredada «%s»" -#: libpq/pqcomm.c:399 +#: commands/tablecmds.c:5218 #, c-format -msgid "setsockopt(IPV6_V6ONLY) failed: %m" -msgstr "setsockopt(IPV6_V6ONLY) falló: %m" +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»" -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:418 +#: commands/tablecmds.c:5288 catalog/pg_constraint.c:645 catalog/heap.c:2296 #, c-format -msgid "could not bind %s socket: %m" -msgstr "no se pudo enlazar al socket %s: %m" +msgid "constraint \"%s\" for relation \"%s\" already exists" +msgstr "la restricción «%s» para la relación «%s» ya existe" + +#: commands/tablecmds.c:5412 +msgid "constraint must be added to child tables too" +msgstr "la restricción debe ser agregada a las tablas hijas también" -#: libpq/pqcomm.c:421 +#: commands/tablecmds.c:5477 commands/sequence.c:1425 #, c-format +msgid "referenced relation \"%s\" is not a table" +msgstr "la relación referida «%s» no es una tabla" + +#: commands/tablecmds.c:5500 +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:5507 msgid "" -"Is another postmaster already running on port %d? If not, remove socket file " -"\"%s\" and retry." +"constraints on unlogged tables may reference only permanent or unlogged " +"tables" msgstr "" -"¿Hay otro postmaster corriendo en el puerto %d? Si no, elimine el socket " -"«%s» y reintente." +"las restricciones en tablas unlogged sólo pueden hacer referencia a tablas " +"permanentes o unlogged" -#: libpq/pqcomm.c:424 -#, c-format +#: commands/tablecmds.c:5513 +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:5517 msgid "" -"Is another postmaster already running on port %d? If not, wait a few seconds " -"and retry." +"constraints on temporary tables must involve temporary tables of this session" msgstr "" -"¿Hay otro postmaster corriendo en el puerto %d? Si no, aguarde unos segundos " -"y reintente." +"las restricciones en tablas temporales sólo pueden hacer referencia a tablas " +"temporales de esta sesión" -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:457 +#: commands/tablecmds.c:5578 +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:5667 #, c-format -msgid "could not listen on %s socket: %m" -msgstr "no se pudo escuchar en el socket %s: %m" +msgid "foreign key constraint \"%s\" cannot be implemented" +msgstr "la restricción de llave foránea «%s» no puede ser implementada" -#: libpq/pqcomm.c:542 +#: commands/tablecmds.c:5670 #, c-format -msgid "group \"%s\" does not exist" -msgstr "no existe el grupo «%s»" +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" -#: libpq/pqcomm.c:552 +#: commands/tablecmds.c:5783 #, c-format -msgid "could not set group of file \"%s\": %m" -msgstr "no se pudo definir el grupo del archivo «%s»: %m" +msgid "foreign key constraint \"%s\" of relation \"%s\" does not exist" +msgstr "no existe la restricción de llave foránea «%s» en la relación «%s»" -#: libpq/pqcomm.c:563 +#: commands/tablecmds.c:5846 #, c-format -msgid "could not set permissions of file \"%s\": %m" -msgstr "no se pudo definir los permisos del archivo «%s»: %m" +msgid "column \"%s\" referenced in foreign key constraint does not exist" +msgstr "no existe la columna «%s» referida en la llave foránea" -#: libpq/pqcomm.c:593 +#: commands/tablecmds.c:5851 #, c-format -msgid "could not accept new connection: %m" -msgstr "no se pudo aceptar una nueva conexión: %m" +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" -#: libpq/pqcomm.c:779 libpq/pqcomm.c:879 +#: commands/tablecmds.c:5916 #, c-format -msgid "could not receive data from client: %m" -msgstr "no se pudo recibir datos del cliente: %m" +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»" -#: libpq/pqcomm.c:854 +#: commands/tablecmds.c:5933 #, c-format -msgid "could not set socket to non-blocking mode: %m" -msgstr "no se pudo establecer el socket en modo no bloqueante: %m" +msgid "there is no primary key for referenced table \"%s\"" +msgstr "no hay llave primaria para la tabla referida «%s»" -#: libpq/pqcomm.c:900 libpq/pqcomm.c:911 +#: commands/tablecmds.c:6085 #, c-format -msgid "could not set socket to blocking mode: %m" -msgstr "no se pudo poner el socket en modo bloqueante: %m" +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»" -#: libpq/pqcomm.c:1056 -msgid "unexpected EOF within message length word" -msgstr "EOF inesperado dentro de la palabra de tamaño del mensaje" +#: commands/tablecmds.c:6090 +#, 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»" -#: libpq/pqcomm.c:1067 -msgid "invalid message length" -msgstr "el largo de mensaje no es válido" +#: commands/tablecmds.c:6141 +#, c-format +msgid "validating foreign key constraint \"%s\"" +msgstr "validando restricción de llave foránea «%s»" -#: libpq/pqcomm.c:1089 libpq/pqcomm.c:1099 -msgid "incomplete message from client" -msgstr "mensaje incompleto del cliente" +#: commands/tablecmds.c:6437 +#, 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»" -#: libpq/pqcomm.c:1208 +#: commands/tablecmds.c:6464 commands/tablecmds.c:6577 #, c-format -msgid "could not send data to client: %m" -msgstr "no se pudo enviar datos al cliente: %m" +msgid "constraint \"%s\" of relation \"%s\" does not exist" +msgstr "no existe la restricción «%s» en la relación «%s»" -#: libpq/pqformat.c:436 -msgid "no data left in message" -msgstr "no hay datos restantes en el mensaje" +#: commands/tablecmds.c:6470 +#, 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" -#: libpq/pqformat.c:556 libpq/pqformat.c:574 libpq/pqformat.c:595 -#: utils/adt/arrayfuncs.c:1386 utils/adt/rowtypes.c:557 -msgid "insufficient data left in message" -msgstr "los datos restantes del mensaje son insuficientes" +#: commands/tablecmds.c:6612 +msgid "cannot alter column type of typed table" +msgstr "no se puede cambiar el tipo de una columna de una tabla tipada" -#: libpq/pqformat.c:636 -msgid "invalid string in message" -msgstr "cadena inválida en el mensaje" +#: commands/tablecmds.c:6635 +#, c-format +msgid "cannot alter inherited column \"%s\"" +msgstr "no se puede alterar la columna heredada «%s»" -#: libpq/pqformat.c:652 -msgid "invalid message format" -msgstr "formato de mensaje no válido" +#: commands/tablecmds.c:6677 +msgid "transform expression must not return a set" +msgstr "la expresión de transformación no puede retornar conjuntos" -#: snowball/dict_snowball.c:183 -#, c-format -msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\"" +#: commands/tablecmds.c:6683 +msgid "cannot use subquery in transform expression" +msgstr "no se puede usar una subconsulta en una expresión de transformación" + +#: commands/tablecmds.c:6687 +msgid "cannot use aggregate function in transform expression" msgstr "" -"no se encontró un analizador Snowball para el lenguaje «%s» y la " -"codificación «%s»" +"no se puede usar una función de agregación en una expresión de transformación" -#: snowball/dict_snowball.c:215 -msgid "multiple Language parameters" -msgstr "parámetro Language duplicado" +#: commands/tablecmds.c:6691 +msgid "cannot use window function in transform expression" +msgstr "" +"no se puede usar una función de ventana deslizante en una expresión de " +"transformación" -#: snowball/dict_snowball.c:222 +#: commands/tablecmds.c:6710 #, c-format -msgid "unrecognized Snowball parameter: \"%s\"" -msgstr "parámetro Snowball no reconocido: «%s»" - -#: snowball/dict_snowball.c:230 -msgid "missing Language parameter" -msgstr "falta un parámetro Language" +msgid "column \"%s\" cannot be cast to type %s" +msgstr "la columna «%s» no puede convertirse al tipo %s" -#: storage/smgr/md.c:371 storage/smgr/md.c:839 +#: commands/tablecmds.c:6757 #, c-format -msgid "could not truncate file \"%s\": %m" -msgstr "no se pudo truncar el archivo «%s»: %m" +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" -#: storage/smgr/md.c:439 +#: commands/tablecmds.c:6838 #, c-format -msgid "cannot extend file \"%s\" beyond %u blocks" -msgstr "no se pudo extender el archivo «%s» más allá de %u bloques" +msgid "cannot alter type of column \"%s\" twice" +msgstr "no se puede alterar el tipo de la columna «%s» dos veces" -#: storage/smgr/md.c:461 storage/smgr/md.c:621 storage/smgr/md.c:694 +#: commands/tablecmds.c:6874 #, 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" +msgid "default for column \"%s\" cannot be cast to type %s" +msgstr "" +"el valor por omisión para la columna «%s» no puede ser convertido al tipo %s" + +#: commands/tablecmds.c:7000 +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" -#: storage/smgr/md.c:469 +#: commands/tablecmds.c:7001 commands/tablecmds.c:7020 #, c-format -msgid "could not extend file \"%s\": %m" -msgstr "no se pudo extender el archivo «%s»: %m" +msgid "%s depends on column \"%s\"" +msgstr "%s depende de la columna «%s»" -#: storage/smgr/md.c:471 storage/smgr/md.c:478 storage/smgr/md.c:720 -msgid "Check free disk space." -msgstr "Verifique el espacio libre en disco." +#: commands/tablecmds.c:7019 +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" -#: storage/smgr/md.c:475 +#: commands/tablecmds.c:7383 #, c-format -msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u" +msgid "cannot change owner of index \"%s\"" +msgstr "no se puede cambiar el dueño del índice «%s»" + +#: commands/tablecmds.c:7385 +msgid "Change the ownership of the index's table, instead." msgstr "" -"no se pudo extender el archivo «%s»: sólo se escribieron %d de %d bytes en " -"el bloque %u" +"Considere cambiar el dueño de la tabla en vez de cambiar el dueño del índice." -#: storage/smgr/md.c:638 +#: commands/tablecmds.c:7401 #, c-format -msgid "could not read block %u in file \"%s\": %m" -msgstr "no se pudo leer el bloque %u del archivo «%s»: %m" +msgid "cannot change owner of sequence \"%s\"" +msgstr "no se puede cambiar el dueño de la secuencia «%s»" -#: storage/smgr/md.c:654 +#: commands/tablecmds.c:7403 commands/tablecmds.c:9074 #, 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" +msgid "Sequence \"%s\" is linked to table \"%s\"." +msgstr "La secuencia «%s» está enlazada a la tabla «%s»." -#: storage/smgr/md.c:711 +#: commands/tablecmds.c:7424 commands/tablecmds.c:9092 #, 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" +msgid "\"%s\" is not a table, view, sequence, or foreign table" +msgstr "«%s» no es una tabla, vista, secuencia o tabla foránea" -#: storage/smgr/md.c:716 +#: commands/tablecmds.c:7709 commands/cluster.c:178 #, 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" +msgid "index \"%s\" for table \"%s\" does not exist" +msgstr "no existe el índice «%s» en la tabla «%s»" -#: storage/smgr/md.c:815 -#, 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" +#: commands/tablecmds.c:7752 +msgid "cannot have multiple SET TABLESPACE subcommands" +msgstr "no se pueden tener múltiples subórdenes SET TABLESPACE" -#: storage/smgr/md.c:864 +#: commands/tablecmds.c:7804 #, c-format -msgid "could not truncate file \"%s\" to %u blocks: %m" -msgstr "no se pudo truncar el archivo «%s» a %u bloques: %m" +msgid "\"%s\" is not a table, index, or TOAST table" +msgstr "«%s» no es una tabla, índice o tabla TOAST" -#: storage/smgr/md.c:1087 +#: commands/tablecmds.c:7925 #, c-format -msgid "could not fsync file \"%s\" but retrying: %m" -msgstr "no se pudo sincronizar (fsync) archivo «%s» pero reintentando: %m" +msgid "cannot move system relation \"%s\"" +msgstr "no se puede mover la relación de sistema «%s»" + +#: commands/tablecmds.c:7941 +msgid "cannot move temporary tables of other sessions" +msgstr "no se pueden mover tablas temporales de otras sesiones" -#: storage/smgr/md.c:1586 +#: commands/tablecmds.c:8133 +msgid "cannot change inheritance of typed table" +msgstr "no se puede cambiar la herencia de una tabla tipada" + +#: commands/tablecmds.c:8179 +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:8233 +msgid "circular inheritance not allowed" +msgstr "la herencia circular no está permitida" + +#: commands/tablecmds.c:8234 #, c-format -msgid "could not open file \"%s\" (target block %u): %m" -msgstr "no se pudo abrir el archivo «%s» (bloque buscado %u): %m" +msgid "\"%s\" is already a child of \"%s\"." +msgstr "«%s» ya es un hijo de «%s»." -#: storage/smgr/md.c:1608 +#: commands/tablecmds.c:8242 #, c-format -msgid "could not seek to end of file \"%s\": %m" -msgstr "no se pudo posicionar (seek) al fin del archivo «%s»: %m" +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" -#: storage/buffer/bufmgr.c:131 storage/buffer/bufmgr.c:235 -msgid "cannot access temporary tables of other sessions" -msgstr "no se pueden acceder tablas temporales de otras sesiones" +#: commands/tablecmds.c:8378 +#, c-format +msgid "column \"%s\" in child table must be marked NOT NULL" +msgstr "columna «%s» en tabla hija debe marcarse como NOT NULL" -#: storage/buffer/bufmgr.c:364 +#: commands/tablecmds.c:8394 #, 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" +msgid "child table is missing column \"%s\"" +msgstr "tabla hija no tiene la columna «%s»" -#: storage/buffer/bufmgr.c:366 -msgid "" -"This has been seen to occur with buggy kernels; consider updating your " -"system." +#: commands/tablecmds.c:8473 +#, c-format +msgid "child table \"%s\" has different definition for check constraint \"%s\"" msgstr "" -"Esto parece ocurrir sólo con kernels defectuosos; considere actualizar su " -"sistema." +"la tabla hija «%s» tiene una definición diferente para la restricción check " +"«%s»" -#: storage/buffer/bufmgr.c:438 +#: commands/tablecmds.c:8497 #, c-format -msgid "invalid page header in block %u of relation %s; zeroing out page" -msgstr "" -"el encabezado de página no es válido en el bloque %u de la relación «%s»; " -"reinicializando la página" +msgid "child table is missing constraint \"%s\"" +msgstr "tabla hija no tiene la restricción «%s»" -#: storage/buffer/bufmgr.c:446 +#: commands/tablecmds.c:8577 #, c-format -msgid "invalid page header in block %u of relation %s" -msgstr "el encabezado de página no es válido en el bloque %u de la relación %s" +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:8794 +msgid "typed tables cannot inherit" +msgstr "las tablas tipadas no pueden heredar" -#: storage/buffer/bufmgr.c:2706 +#: commands/tablecmds.c:8825 #, c-format -msgid "could not write block %u of %s" -msgstr "no se pudo escribir el bloque %u de %s" +msgid "table is missing column \"%s\"" +msgstr "la tabla no tiene la columna «%s»" -#: storage/buffer/bufmgr.c:2708 -msgid "Multiple failures --- write error might be permanent." -msgstr "Múltiples fallas --- el error de escritura puede ser permanente." +#: commands/tablecmds.c:8835 +#, 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»." -#: storage/buffer/bufmgr.c:2729 +#: commands/tablecmds.c:8844 #, c-format -msgid "writing block %u of relation %s" -msgstr "escribiendo el bloque %u de la relación %s" +msgid "table \"%s\" has different type for column \"%s\"" +msgstr "la tabla «%s» tiene un tipo diferente para la columna «%s»" -#: storage/buffer/localbuf.c:189 -msgid "no empty local buffer available" -msgstr "no hay ningún búfer local disponible" +#: commands/tablecmds.c:8857 +#, c-format +msgid "table has extra column \"%s\"" +msgstr "tabla tiene la columna extra «%s»" -#: storage/file/fd.c:403 +#: commands/tablecmds.c:8904 #, c-format -msgid "getrlimit failed: %m" -msgstr "getrlimit falló: %m" +msgid "\"%s\" is not a typed table" +msgstr "«%s» no es una tabla tipada" -#: storage/file/fd.c:493 -msgid "insufficient file descriptors available to start server process" +#: commands/tablecmds.c:9073 +msgid "cannot move an owned sequence into another schema" msgstr "" -"los descriptores de archivo disponibles son insuficientes para iniciar un " -"proceso servidor" +"no se puede mover una secuencia enlazada a una tabla hacia otro esquema" -#: storage/file/fd.c:494 +#: commands/tablecmds.c:9180 #, c-format -msgid "System allows %d, we need at least %d." -msgstr "El sistema permite %d, se requieren al menos %d." +msgid "relation \"%s\" already exists in schema \"%s\"" +msgstr "ya existe una relación llamada «%s» en el esquema «%s»" -#: storage/file/fd.c:535 storage/file/fd.c:1446 storage/file/fd.c:1561 -#, c-format -msgid "out of file descriptors: %m; release and retry" +#: commands/proclang.c:93 +msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters" msgstr "" -"se agotaron los descriptores de archivo: %m; libere e intente nuevamente" +"usando información de pg_pltemplate en vez de los parámetros de CREATE " +"LANGUAGE" -#: storage/file/fd.c:1088 +#: commands/proclang.c:103 #, c-format -msgid "temporary file: path \"%s\", size %lu" -msgstr "archivo temporal: ruta «%s», tamaño %lu" +msgid "must be superuser to create procedural language \"%s\"" +msgstr "debe ser superusuario para crear el lenguaje procedural «%s»" -#: storage/file/fd.c:1620 +#: commands/proclang.c:123 commands/proclang.c:279 #, c-format -msgid "could not read directory \"%s\": %m" -msgstr "no se pudo leer el directorio «%s»: %m" +msgid "function %s must return type \"language_handler\"" +msgstr "la función %s debe retornar tipo «language_handler»" -#: storage/ipc/procarray.c:270 storage/ipc/sinvaladt.c:302 -#: storage/lmgr/proc.c:289 postmaster/postmaster.c:1833 -msgid "sorry, too many clients already" -msgstr "lo siento, ya tenemos demasiados clientes" +#: commands/proclang.c:243 +#, c-format +msgid "unsupported language \"%s\"" +msgstr "lenguaje no soportado: «%s»" -#: storage/ipc/procarray.c:639 -msgid "consistent state delayed because recovery snapshot incomplete" +#: commands/proclang.c:245 +msgid "The supported languages are listed in the pg_pltemplate system catalog." msgstr "" -"el estado consistente fue retrasado porque la instantánea de recuperación " -"está incompleta" +"Los lenguajes soportados están listados en el catálogo del sistema " +"pg_pltemplate." -#: storage/ipc/shmem.c:190 storage/lmgr/lock.c:629 storage/lmgr/lock.c:698 -#: storage/lmgr/lock.c:2132 storage/lmgr/lock.c:2511 storage/lmgr/lock.c:2576 -#: storage/lmgr/proc.c:192 storage/lmgr/proc.c:210 utils/hash/dynahash.c:925 -msgid "out of shared memory" -msgstr "memoria compartida agotada" +#: commands/proclang.c:253 +msgid "must be superuser to create custom procedural language" +msgstr "debe ser superusuario para crear un lenguaje procedural personalizado" -#: storage/ipc/shmem.c:346 storage/ipc/shmem.c:399 +#: commands/proclang.c:272 #, c-format msgid "" -"not enough shared memory for data structure \"%s\" (%lu bytes requested)" +"changing return type of function %s from \"opaque\" to \"language_handler\"" msgstr "" -"el espacio de memoria compartida es insuficiente para la estructura " -"«%s» (%lu bytes solicitados" +"cambiando el tipo de retorno de la función %s de «opaque» a " +"«language_handler»" -#: storage/ipc/shmem.c:365 +#: commands/proclang.c:357 commands/proclang.c:606 #, 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»" +msgid "language \"%s\" already exists" +msgstr "ya existe el lenguaje «%s»" -#: storage/ipc/shmem.c:380 +#: commands/proclang.c:537 #, 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" - -#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446 -msgid "requested shared memory size overflows size_t" -msgstr "la petición de tamaño de memoria compartida desborda size_t" +msgid "language \"%s\" does not exist, skipping" +msgstr "el lenguaje «%s» no existe, ignorando" -#: storage/large_object/inv_api.c:550 storage/large_object/inv_api.c:747 +#: commands/proclang.c:600 commands/proclang.c:640 commands/proclang.c:754 +#: commands/functioncmds.c:839 commands/functioncmds.c:2019 #, c-format -msgid "large object %u was not opened for writing" -msgstr "el objeto grande %u no fue abierto para escritura" +msgid "language \"%s\" does not exist" +msgstr "no existe el lenguaje «%s»" -#: storage/large_object/inv_api.c:557 storage/large_object/inv_api.c:754 +#: commands/analyze.c:153 #, c-format -msgid "large object %u was already dropped" -msgstr "el objeto grande %u ya fue eliminado" +msgid "skipping analyze of \"%s\" --- lock not available" +msgstr "omitiendo analyze de «%s»: el candado no está disponible" -#: storage/lmgr/deadlock.c:915 +#: commands/analyze.c:170 #, c-format -msgid "Process %d waits for %s on %s; blocked by process %d." -msgstr "El proceso %d espera %s en %s; bloqueado por proceso %d." +msgid "skipping \"%s\" --- only superuser can analyze it" +msgstr "omitiendo «%s»: sólo un superusuario puede analizarla" -#: storage/lmgr/deadlock.c:934 +#: commands/analyze.c:174 #, c-format -msgid "Process %d: %s" -msgstr "Proceso %d: %s" - -#: storage/lmgr/deadlock.c:941 -msgid "deadlock detected" -msgstr "se ha detectado un deadlock" - -#: storage/lmgr/deadlock.c:944 -msgid "See server log for query details." -msgstr "Vea el registro del servidor para obtener detalles de las consultas." +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" -#: storage/lmgr/lmgr.c:717 +#: commands/analyze.c:178 #, c-format -msgid "relation %u of database %u" -msgstr "relación %u de la base de datos %u" +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" -#: storage/lmgr/lmgr.c:723 +#: commands/analyze.c:194 #, c-format -msgid "extension of relation %u of database %u" -msgstr "extensión de la relación %u de la base de datos %u" +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" -#: storage/lmgr/lmgr.c:729 +#: commands/analyze.c:285 #, 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" +msgid "analyzing \"%s.%s\" inheritance tree" +msgstr "analizando la jerarquía de herencia «%s.%s»" -#: storage/lmgr/lmgr.c:736 +#: commands/analyze.c:290 #, 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" +msgid "analyzing \"%s.%s\"" +msgstr "analizando «%s.%s»" -#: storage/lmgr/lmgr.c:744 +#: commands/analyze.c:598 #, c-format -msgid "transaction %u" -msgstr "transacción %u" +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" -#: storage/lmgr/lmgr.c:749 +#: commands/analyze.c:1238 #, c-format -msgid "virtual transaction %d/%u" -msgstr "transacción virtual %d/%u" +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" -#: storage/lmgr/lmgr.c:755 -#, c-format -msgid "object %u of class %u of database %u" -msgstr "objeto %u de clase %u de la base de datos %u" +#: commands/analyze.c:1499 executor/execQual.c:2827 +msgid "could not convert row type" +msgstr "no se pudo convertir el tipo de fila" -#: storage/lmgr/lmgr.c:763 +#: commands/conversioncmds.c:71 #, c-format -msgid "user lock [%u,%u,%u]" -msgstr "bloqueo de usuario [%u,%u,%u]" +msgid "source encoding \"%s\" does not exist" +msgstr "no existe la codificación fuente «%s»" -# XXX is this a good translation? -#: storage/lmgr/lmgr.c:770 +#: commands/conversioncmds.c:78 #, c-format -msgid "advisory lock [%u,%u,%u,%u]" -msgstr "bloqueo consultivo [%u,%u,%u,%u]" +msgid "destination encoding \"%s\" does not exist" +msgstr "no existe la codificación de destino «%s»" -#: storage/lmgr/lmgr.c:778 +#: commands/conversioncmds.c:92 #, c-format -msgid "unrecognized locktag type %d" -msgstr "tipo de locktag %d no reconocido" +msgid "encoding conversion function %s must return type \"void\"" +msgstr "la función de conversión de codificación %s debe retornar tipo «void»" -#: storage/lmgr/lock.c:516 +#: commands/conversioncmds.c:152 #, c-format -msgid "" -"cannot acquire lock mode %s on database objects while recovery is in progress" -msgstr "" -"no se puede adquirir candado en modo %s en objetos de la base de datos " -"mientras la recuperación está en proceso" - -#: storage/lmgr/lock.c:518 -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." +msgid "conversion \"%s\" does not exist, skipping" +msgstr "no existe la conversión «%s», ignorando" -#: storage/lmgr/lock.c:630 storage/lmgr/lock.c:699 storage/lmgr/lock.c:2512 -#: storage/lmgr/lock.c:2577 -msgid "You might need to increase max_locks_per_transaction." -msgstr "Puede necesitar incrementar max_locks_per_transaction." +#: commands/conversioncmds.c:211 +#, c-format +msgid "conversion \"%s\" already exists in schema \"%s\"" +msgstr "ya existe una conversión llamada «%s» en el esquema «%s»" -#: storage/lmgr/lock.c:2133 -msgid "Not enough memory for reassigning the prepared transaction's locks." -msgstr "" -"No hay memoria suficiente para reasignar los bloqueos de la transacción " -"preparada" +#: commands/sequence.c:127 +msgid "unlogged sequences are not supported" +msgstr "las secuencias unlogged no están soportadas" -#: storage/lmgr/proc.c:1006 utils/adt/misc.c:102 +#: commands/sequence.c:537 commands/sequence.c:751 commands/sequence.c:793 +#: commands/sequence.c:830 commands/sequence.c:1495 catalog/aclchk.c:3071 #, c-format -msgid "could not send signal to process %d: %m" -msgstr "no se pudo enviar la señal al proceso %d: %m" +msgid "permission denied for sequence %s" +msgstr "permiso denegado a la secuencia %s" -#: storage/lmgr/proc.c:1040 +#: commands/sequence.c:620 #, 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" +msgid "nextval: reached maximum value of sequence \"%s\" (%s)" +msgstr "nextval: se alcanzó el valor máximo de la secuencia «%s» (%s)" -#: storage/lmgr/proc.c:1052 +#: commands/sequence.c:643 #, 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" +msgid "nextval: reached minimum value of sequence \"%s\" (%s)" +msgstr "nextval: se alcanzó el valor mínimo de la secuencia «%s» (%s)" -#: storage/lmgr/proc.c:1058 +#: commands/sequence.c:757 #, 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" +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" -#: storage/lmgr/proc.c:1062 -#, 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" +#: commands/sequence.c:776 commands/sequence.c:782 +msgid "lastval is not yet defined in this session" +msgstr "lastval no está definido en esta sesión" -#: storage/lmgr/proc.c:1078 +#: commands/sequence.c:851 #, 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" +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)" -#: 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 "" -"los punteros de página están corruptos: inferior = %u, superior = %u, " -"especial = %u" +#: commands/sequence.c:1142 commands/sequence.c:1150 commands/sequence.c:1158 +#: commands/sequence.c:1166 commands/sequence.c:1174 commands/sequence.c:1182 +#: commands/sequence.c:1190 commands/sequence.c:1198 +#: 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/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:147 commands/dbcommands.c:155 +#: commands/dbcommands.c:163 commands/dbcommands.c:171 +#: commands/dbcommands.c:179 commands/dbcommands.c:187 +#: commands/dbcommands.c:195 commands/dbcommands.c:1342 +#: commands/dbcommands.c:1350 commands/extension.c:1250 +#: commands/extension.c:1258 commands/extension.c:1266 +#: commands/extension.c:2731 commands/collationcmds.c:93 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/foreigncmds.c:468 commands/foreigncmds.c:477 +#: commands/typecmds.c:282 catalog/aclchk.c:833 catalog/aclchk.c:841 +msgid "conflicting or redundant options" +msgstr "opciones contradictorias o redundantes" -#: storage/page/bufpage.c:433 -#, c-format -msgid "corrupted item pointer: %u" -msgstr "el puntero de item está corrupto: %u" +#: commands/sequence.c:1220 +msgid "INCREMENT must not be zero" +msgstr "INCREMENT no debe ser cero" -#: storage/page/bufpage.c:444 storage/page/bufpage.c:805 +#: commands/sequence.c:1276 #, c-format -msgid "corrupted item lengths: total %u, available space %u" -msgstr "los largos de ítem están corruptos: total %u, espacio disponible %u" +msgid "MINVALUE (%s) must be less than MAXVALUE (%s)" +msgstr "MINVALUE (%s) debe ser menor que MAXVALUE (%s)" -#: storage/page/bufpage.c:642 storage/page/bufpage.c:778 +#: commands/sequence.c:1301 #, c-format -msgid "corrupted item pointer: offset = %u, size = %u" -msgstr "el puntero de ítem está corrupto: posición = %u, tamaño = %u" +msgid "START value (%s) cannot be less than MINVALUE (%s)" +msgstr "el valor START (%s) no puede ser menor que MINVALUE (%s)" -#: nodes/nodeFuncs.c:110 nodes/nodeFuncs.c:136 parser/parse_coerce.c:1568 -#: parser/parse_coerce.c:1585 parser/parse_coerce.c:1643 -#: parser/parse_expr.c:1606 parser/parse_func.c:373 parser/parse_oper.c:983 +#: commands/sequence.c:1313 #, 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/plan/initsplan.c:585 -msgid "" -"SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer " -"join" -msgstr "" -"SELECT FOR UPDATE/SHARE no puede ser aplicado al lado nulable de un outer " -"join" +msgid "START value (%s) cannot be greater than MAXVALUE (%s)" +msgstr "el valor START (%s) no puede ser mayor que MAXVALUE (%s)" -#: optimizer/plan/planner.c:946 parser/analyze.c:1205 parser/analyze.c:1393 -#: parser/analyze.c:2035 -msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT" -msgstr "SELECT FOR UPDATE/SHARE no está permitido con UNION/INTERSECT/EXCEPT" +#: commands/sequence.c:1343 +#, c-format +msgid "RESTART value (%s) cannot be less than MINVALUE (%s)" +msgstr "el valor RESTART (%s) no puede ser menor que MINVALUE (%s)" -#: optimizer/plan/planner.c:2220 -msgid "could not implement GROUP BY" -msgstr "no se pudo implementar GROUP BY" +#: commands/sequence.c:1355 +#, c-format +msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)" +msgstr "el valor RESTART (%s) no puede ser mayor que MAXVALUE (%s)" -#: optimizer/plan/planner.c:2221 optimizer/plan/planner.c:2390 -#: optimizer/prep/prepunion.c:769 -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." +#: commands/sequence.c:1370 +#, c-format +msgid "CACHE (%s) must be greater than zero" +msgstr "CACHE (%s) debe ser mayor que cero" -#: optimizer/plan/planner.c:2389 -msgid "could not implement DISTINCT" -msgstr "no se pudo implementar DISTINCT" +#: commands/sequence.c:1402 +msgid "invalid OWNED BY option" +msgstr "opción OWNED BY no válida" -#: optimizer/plan/planner.c:2833 -msgid "could not implement window PARTITION BY" -msgstr "No se pudo implementar PARTITION BY de ventana" +#: commands/sequence.c:1403 +msgid "Specify OWNED BY table.column or OWNED BY NONE." +msgstr "Especifique OWNED BY tabla.columna o OWNED BY NONE." -#: optimizer/plan/planner.c:2834 -msgid "Window partitioning columns must be of sortable datatypes." +#: commands/sequence.c:1432 +msgid "sequence must have same owner as table it is linked to" msgstr "" -"Las columnas de particionamiento de ventana deben de tipos que se puedan " -"ordenar." - -#: optimizer/plan/planner.c:2838 -msgid "could not implement window ORDER BY" -msgstr "no se pudo implementar ORDER BY de ventana" +"la secuencia debe tener el mismo dueño que la tabla a la que está enlazada" -#: optimizer/plan/planner.c:2839 -msgid "Window ordering columns must be of sortable datatypes." +#: commands/sequence.c:1436 +msgid "sequence must be in same schema as table it is linked to" msgstr "" -"Las columnas de ordenamiento de ventana debe ser de tipos que se puedan " -"ordenar." +"la secuencia debe estar en el mismo esquema que la tabla a la que está " +"enlazada" -#: optimizer/util/clauses.c:4016 +#: commands/functioncmds.c:100 #, c-format -msgid "SQL function \"%s\" during inlining" -msgstr "función SQL «%s», durante expansión en línea" - -#: optimizer/prep/prepunion.c:374 -msgid "could not implement recursive UNION" -msgstr "no se pudo implementar UNION recursivo" +msgid "SQL function cannot return shell type %s" +msgstr "una función SQL no puede retornar el tipo inconcluso %s" -#: optimizer/prep/prepunion.c:375 -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." +#: commands/functioncmds.c:105 +#, c-format +msgid "return type %s is only a shell" +msgstr "el tipo de retorno %s está inconcluso" -#. translator: %s is UNION, INTERSECT, or EXCEPT -#: optimizer/prep/prepunion.c:768 +#: commands/functioncmds.c:134 parser/parse_type.c:278 #, c-format -msgid "could not implement %s" -msgstr "no se pudo implementar %s" +msgid "type modifier cannot be specified for shell type \"%s\"" +msgstr "" +"no se puede especificar un modificador de tipo para el tipo inconcluso «%s»" -#: parser/scansup.c:190 +#: commands/functioncmds.c:140 #, c-format -msgid "identifier \"%s\" will be truncated to \"%s\"" -msgstr "el identificador «%s» se truncará a «%s»" +msgid "type \"%s\" is not yet defined" +msgstr "el tipo «%s» no ha sido definido aún" -#: parser/analyze.c:450 -msgid "INSERT ... SELECT cannot specify INTO" -msgstr "INSERT ... SELECT no puede especificar INTO" +#: commands/functioncmds.c:141 +msgid "Creating a shell type definition." +msgstr "Creando una definición de tipo inconclusa." -#: parser/analyze.c:552 parser/analyze.c:977 -msgid "VALUES lists must all be the same length" -msgstr "las listas VALUES deben ser todas de la misma longitud" +#: commands/functioncmds.c:220 +#, c-format +msgid "SQL function cannot accept shell type %s" +msgstr "las funciones SQL no pueden aceptar el tipo inconcluso %s" -#: parser/analyze.c:573 parser/analyze.c:1082 -msgid "VALUES must not contain table references" -msgstr "VALUES no debe contener referencias a tablas" +#: commands/functioncmds.c:225 +#, c-format +msgid "argument type %s is only a shell" +msgstr "el tipo de argumento %s está inconcluso" -#: parser/analyze.c:587 parser/analyze.c:1096 -msgid "VALUES must not contain OLD or NEW references" -msgstr "VALUES no debe contener referencias a OLD o NEW" +#: commands/functioncmds.c:235 +#, c-format +msgid "type %s does not exist" +msgstr "no existe el tipo %s" -#: parser/analyze.c:588 parser/analyze.c:1097 -msgid "Use SELECT ... UNION ALL ... instead." -msgstr "Use SELECT ... UNION ALL ... en su lugar." +#: commands/functioncmds.c:243 +msgid "functions cannot accept set arguments" +msgstr "funciones no pueden aceptar argumentos de conjunto" -#: parser/analyze.c:698 parser/analyze.c:1109 -msgid "cannot use aggregate function in VALUES" -msgstr "no se puede usar una función de agregación en VALUES" +#: commands/functioncmds.c:252 +msgid "VARIADIC parameter must be the last input parameter" +msgstr "el parámetro VARIADIC debe ser el último parámetro de entrada" -#: parser/analyze.c:704 parser/analyze.c:1115 -msgid "cannot use window function in VALUES" -msgstr "no se puede usar una función de ventana deslizante en VALUES" +#: commands/functioncmds.c:279 +msgid "VARIADIC parameter must be an array" +msgstr "el parámetro VARIADIC debe ser un array" -#: parser/analyze.c:736 -msgid "INSERT has more expressions than target columns" -msgstr "INSERT tiene más expresiones que columnas de destino" +#: commands/functioncmds.c:319 +#, c-format +msgid "parameter name \"%s\" used more than once" +msgstr "el nombre de parámetro «%s» fue usado más de una vez" -#: parser/analyze.c:744 -msgid "INSERT has more target columns than expressions" -msgstr "INSERT tiene más columnas de destino que expresiones" +#: commands/functioncmds.c:334 +msgid "only input parameters can have default values" +msgstr "solo los parámetros de entrada pueden tener valores por omisión" -#: parser/analyze.c:993 -msgid "DEFAULT can only appear in a VALUES list within INSERT" -msgstr "DEFAULT sólo puede aparecer en listas VALUES dentro de un INSERT" +#: commands/functioncmds.c:347 +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" -#: parser/analyze.c:1063 parser/analyze.c:2183 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES" -msgstr "SELECT FOR UPDATE/SHARE no puede ser aplicado a VALUES" +#: commands/functioncmds.c:363 +msgid "cannot use subquery in parameter default value" +msgstr "" +"no se puede usar una subconsulta en el valor por omisión de un parámetro" -#: parser/analyze.c:1316 -msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" -msgstr "cláusula UNION/INTERSECT/EXCEPT ORDER BY no válida" +#: commands/functioncmds.c:367 +msgid "cannot use aggregate function in parameter default value" +msgstr "" +"no se puede usar una función de agregación en el valor por omisión de un " +"parámetro" -#: parser/analyze.c:1317 -msgid "Only result column names can be used, not expressions or functions." +#: commands/functioncmds.c:371 +msgid "cannot use window function in parameter default value" msgstr "" -"Sólo nombres de columna del resultado pueden usarse, no expresiones o " -"funciones." +"no se puede usar una función de ventana deslizante en el valor por omisión " +"de un parámetro" -#: parser/analyze.c:1318 -msgid "" -"Add the expression/function to every SELECT, or move the UNION into a FROM " -"clause." +#: commands/functioncmds.c:381 +msgid "input parameters after one with a default value must also have defaults" msgstr "" -"Agregue la función o expresión a todos los SELECT, o mueva el UNION dentro " -"de una cláusula FROM." +"los parámetros de entrada después de uno que tenga valor por omisión también " +"deben tener valores por omisión" -#: parser/analyze.c:1385 -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" +#: commands/functioncmds.c:620 +msgid "no function body specified" +msgstr "no se ha especificado un cuerpo para la función" -#: parser/analyze.c:1445 -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:1530 -#, 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:1722 -msgid "CREATE TABLE AS specifies too many column names" -msgstr "CREATE TABLE AS especifica demasiados nombres de columna" - -#: parser/analyze.c:1772 -msgid "cannot use aggregate function in UPDATE" -msgstr "no se puede usar una función de agregación en UPDATE" - -#: parser/analyze.c:1778 -msgid "cannot use window function in UPDATE" -msgstr "no se puede usar una función de ventana deslizante en UPDATE" - -#: parser/analyze.c:1885 -msgid "cannot use aggregate function in RETURNING" -msgstr "no se puede usar una función de agregación en RETURNING" - -#: parser/analyze.c:1891 -msgid "cannot use window function in RETURNING" -msgstr "no se puede usar una función de ventana deslizante en RETURNING" +#: commands/functioncmds.c:630 +msgid "no language specified" +msgstr "no se ha especificado el lenguaje" -#: parser/analyze.c:1910 -msgid "RETURNING cannot contain references to other relations" -msgstr "RETURNING no puede contener referencias a otras relaciones" +#: commands/functioncmds.c:651 commands/functioncmds.c:1352 +msgid "COST must be positive" +msgstr "COST debe ser positivo" -#: parser/analyze.c:1949 -msgid "cannot specify both SCROLL and NO SCROLL" -msgstr "no se puede especificar SCROLL y NO SCROLL" +#: commands/functioncmds.c:659 commands/functioncmds.c:1360 +msgid "ROWS must be positive" +msgstr "ROWS debe ser positivo" -#: parser/analyze.c:1963 -msgid "DECLARE CURSOR cannot specify INTO" -msgstr "DECLARE CURSOR no puede especificar INTO" +#: commands/functioncmds.c:698 +#, c-format +msgid "unrecognized function attribute \"%s\" ignored" +msgstr "se ignoró el atributo de función no reconocido «%s»" -#: parser/analyze.c:1971 -msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported" -msgstr "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE no está soportado" +#: commands/functioncmds.c:749 +#, c-format +msgid "only one AS item needed for language \"%s\"" +msgstr "sólo se requiere un item AS para el lenguaje «%s»" -#: parser/analyze.c:1972 -msgid "Holdable cursors must be READ ONLY." -msgstr "Los cursores declarados HOLD deben ser READ ONLY." +#: commands/functioncmds.c:841 commands/functioncmds.c:2021 +msgid "Use CREATE LANGUAGE to load the language into the database." +msgstr "Usar CREATE LANGUAGE para instalar el lenguaje en la base de datos." -#: parser/analyze.c:1985 -msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported" -msgstr "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE no está soportado" +#: commands/functioncmds.c:888 +#, 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" -#: parser/analyze.c:1986 -msgid "Insensitive cursors must be READ ONLY." -msgstr "Los cursores insensitivos deben ser READ ONLY." +#: commands/functioncmds.c:901 +msgid "function result type must be specified" +msgstr "el tipo de retorno de la función debe ser especificado" -#: parser/analyze.c:2039 -msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause" -msgstr "SELECT FOR UPDATE/SHARE no está permitido con cláusulas DISTINCT" +#: commands/functioncmds.c:936 commands/functioncmds.c:1364 +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" -#: parser/analyze.c:2043 -msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause" -msgstr "SELECT FOR UPDATE/SHARE no está permitido con cláusulas GROUP BY" +#: commands/functioncmds.c:988 +#, c-format +msgid "function %s(%s) does not exist, skipping" +msgstr "no existe la función %s(%s), ignorando" -#: parser/analyze.c:2047 -msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause" -msgstr "SELECT FOR UPDATE/SHARE no está permitido con cláusulas HAVING" +#: commands/functioncmds.c:1010 +msgid "Use DROP AGGREGATE to drop aggregate functions." +msgstr "Use DROP AGGREGATE para eliminar funciones de agregación." -#: parser/analyze.c:2051 -msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions" -msgstr "SELECT FOR UPDATE/SHARE no está permitido con funciones de agregación" +#: commands/functioncmds.c:1017 +#, c-format +msgid "removing built-in function \"%s\"" +msgstr "eliminando la función interna «%s»" -#: parser/analyze.c:2055 -msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions" +#: commands/functioncmds.c:1110 +msgid "Use ALTER AGGREGATE to rename aggregate functions." msgstr "" -"SELECT FOR UPDATE/SHARE no está permitido con funciones de ventana deslizante" +"Use ALTER AGGREGATE para cambiar el nombre a las funciones de agregación." -#: parser/analyze.c:2059 -msgid "" -"SELECT FOR UPDATE/SHARE is not allowed with set-returning functions in the " -"target list" -msgstr "" -"SELECT FOR UPDATE/SHARE no está permitido con funciones que retornan " -"conjuntos en la lista de resultados" +#: commands/functioncmds.c:1122 commands/aggregatecmds.c:292 +#, c-format +msgid "function %s already exists in schema \"%s\"" +msgstr "ya existe una función llamada %s en el esquema «%s»" -#: parser/analyze.c:2135 -msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names" +#: commands/functioncmds.c:1173 +msgid "Use ALTER AGGREGATE to change owner of aggregate functions." msgstr "" -"SELECT FOR UPDATE/SHARE debe especificar nombres de relaciones sin calificar" +"Use ALTER AGGREGATE para cambiar el dueño a las funciones de agregación." -#: parser/analyze.c:2165 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join" -msgstr "SELECT FOR UPDATE/SHARE no puede ser aplicado a un join" +#: commands/functioncmds.c:1512 +#, c-format +msgid "source data type %s is a pseudo-type" +msgstr "el tipo de origen %s es un pseudotipo" -#: parser/analyze.c:2171 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to NEW or OLD" -msgstr "SELECT FOR UPDATE/SHARE no puede ser aplicado a NEW u OLD" +#: commands/functioncmds.c:1518 +#, c-format +msgid "target data type %s is a pseudo-type" +msgstr "el tipo de retorno %s es un pseudotipo" -#: parser/analyze.c:2177 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function" -msgstr "SELECT FOR UPDATE/SHARE no puede ser aplicado a una función" +#: commands/functioncmds.c:1526 commands/functioncmds.c:1814 +#: catalog/objectaddress.c:843 +#, c-format +msgid "must be owner of type %s or type %s" +msgstr "debe ser dueño del tipo %s o el tipo %s" -#: parser/analyze.c:2189 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query" -msgstr "SELECT FOR UPDATE/SHARE no puede ser aplicado a una consulta WITH" +#: commands/functioncmds.c:1555 +msgid "cast function must take one to three arguments" +msgstr "la función de conversión lleva de uno a tres argumentos" -#: parser/analyze.c:2203 -#, c-format -msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause" +#: commands/functioncmds.c:1559 +msgid "" +"argument of cast function must match or be binary-coercible from source data " +"type" msgstr "" -"la relación «%s» en la cláusula FOR UPDATE/SHARE no fue encontrada en la " -"cláusula FROM" +"el argumento de la función de conversión debe coincidir o ser binario-" +"convertible con el tipo de origen" -#: parser/parse_agg.c:127 parser/parse_oper.c:254 -#, 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" +#: commands/functioncmds.c:1563 +msgid "second argument of cast function must be type integer" +msgstr "el segundo argumento de la función de conversión debe ser entero" -#: parser/parse_agg.c:129 -msgid "Aggregates with DISTINCT must be able to sort their inputs." +#: commands/functioncmds.c:1567 +msgid "third argument of cast function must be type boolean" msgstr "" -"Las funciones de agregación con DISTINCT deben ser capaces de ordenar sus " -"valores de entrada." +"el tercer argumento de la función de conversión debe ser de tipo boolean" -#: parser/parse_agg.c:170 -msgid "aggregate function calls cannot contain window function calls" +#: commands/functioncmds.c:1571 +msgid "" +"return data type of cast function must match or be binary-coercible to " +"target data type" msgstr "" -"las llamadas a funciones de agregación no pueden contener llamadas a " -"funciones de ventana deslizante" +"el tipo de salida de la función de conversión debe coincidir o ser binario-" +"convertible con el tipo de retorno" -#: parser/parse_agg.c:241 parser/parse_clause.c:1620 -#, c-format -msgid "window \"%s\" does not exist" -msgstr "la ventana «%s» no existe" +#: commands/functioncmds.c:1582 +msgid "cast function must not be volatile" +msgstr "la función de conversión no debe ser volatile" -#: parser/parse_agg.c:331 -msgid "aggregates not allowed in WHERE clause" -msgstr "no se permiten funciones de agregación en la cláusula WHERE" +#: commands/functioncmds.c:1587 +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" -#: parser/parse_agg.c:337 -msgid "aggregates not allowed in JOIN conditions" -msgstr "no se permiten funciones de agregación en las condiciones JOIN" +#: commands/functioncmds.c:1591 +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" -#: parser/parse_agg.c:358 -msgid "aggregates not allowed in GROUP BY clause" -msgstr "no se permiten funciones de agregación en la cláusula GROUP BY" +#: commands/functioncmds.c:1595 +msgid "cast function must not return a set" +msgstr "la función de conversión no debe retornar un conjunto" -#: parser/parse_agg.c:426 -msgid "aggregate functions not allowed in a recursive query's recursive term" +#: commands/functioncmds.c:1621 +msgid "must be superuser to create a cast WITHOUT FUNCTION" msgstr "" -"las funciones de agregación no están permitidas en el término recursivo de " -"una consulta recursiva" +"debe ser superusuario para crear una conversión sin especificar función" -#: parser/parse_agg.c:451 -msgid "window functions not allowed in WHERE clause" -msgstr "no se permiten funciones de ventana deslizante en la cláusula WHERE" +#: commands/functioncmds.c:1636 +msgid "source and target data types are not physically compatible" +msgstr "los tipos de datos de origen y destino no son físicamente compatibles" -#: parser/parse_agg.c:457 -msgid "window functions not allowed in JOIN conditions" -msgstr "no se permiten funciones de ventana deslizante en las condiciones JOIN" +#: commands/functioncmds.c:1651 +msgid "composite data types are not binary-compatible" +msgstr "los tipos de datos compuestos no son binario-compatibles" -#: parser/parse_agg.c:463 -msgid "window functions not allowed in HAVING clause" -msgstr "no se permiten funciones de ventana deslizante en la cláusula HAVING" +#: commands/functioncmds.c:1657 +msgid "enum data types are not binary-compatible" +msgstr "los tipos de datos enum no son binario-compatibles" -#: parser/parse_agg.c:476 -msgid "window functions not allowed in GROUP BY clause" -msgstr "no se permiten funciones de ventana deslizante en la cláusula GROUP BY" +#: commands/functioncmds.c:1663 +msgid "array data types are not binary-compatible" +msgstr "los tipos de datos de array no son binario-compatibles" -#: parser/parse_agg.c:495 parser/parse_agg.c:508 -msgid "window functions not allowed in window definition" -msgstr "" -"no se permiten funciones de ventana deslizante en definiciones de ventana " -"deslizante" +#: commands/functioncmds.c:1680 +msgid "domain data types must not be marked binary-compatible" +msgstr "los tipos de dato de dominio no deben ser marcados binario-compatibles" -#: parser/parse_agg.c:630 -#, 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" +#: commands/functioncmds.c:1690 +msgid "source data type and target data type are the same" +msgstr "el tipo de origen y el tipo de retorno son el mismo" -#: parser/parse_agg.c:636 +#: commands/functioncmds.c:1723 #, 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" +msgid "cast from type %s to type %s already exists" +msgstr "ya existe una conversión del tipo %s al tipo %s" -#: parser/parse_clause.c:420 +#: commands/functioncmds.c:1803 #, c-format -msgid "JOIN/ON clause refers to \"%s\", which is not part of JOIN" -msgstr "la cláusula JOIN/ON se refiere a «%s», que no es parte de JOIN" +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" -#: parser/parse_clause.c:501 -msgid "subquery in FROM cannot have SELECT INTO" -msgstr "una subconsulta en FROM no puede tener SELECT INTO" +#: commands/functioncmds.c:1841 +#, 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" -#: parser/parse_clause.c:523 -msgid "subquery in FROM cannot refer to other relations of same query level" -msgstr "" -"una subconsulta en FROM no puede referirse a otras relaciones en el mismo " -"nivel de la consulta" +#: commands/functioncmds.c:1929 +#, c-format +msgid "function \"%s\" already exists in schema \"%s\"" +msgstr "ya existe una función llamada %s en el esquema «%s»" -#: parser/parse_clause.c:574 -msgid "" -"function expression in FROM cannot refer to other relations of same query " -"level" -msgstr "" -"una función en FROM no puede referirse a otras relaciones en el mismo nivel " -"de la consulta" +#: commands/functioncmds.c:2003 +msgid "no inline code specified" +msgstr "no se ha especificado código" -#: parser/parse_clause.c:587 -msgid "cannot use aggregate function in function expression in FROM" -msgstr "no se pueden usar funciones de agregación en una función en FROM" +#: commands/functioncmds.c:2051 +#, 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" -#: parser/parse_clause.c:594 -msgid "cannot use window function in function expression in FROM" +#: 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 "" -"no se pueden usar funciones de ventana deslizante en una función en FROM" +"COPY BINARY no está soportado a la salida estándar o desde la entrada " +"estándar" -#: parser/parse_clause.c:870 +#: commands/copy.c:473 #, 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" +msgid "could not write to COPY file: %m" +msgstr "no se pudo escribir archivo COPY: %m" -#: parser/parse_clause.c:885 -#, 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" +#: commands/copy.c:485 +msgid "connection lost during COPY to stdout" +msgstr "se perdió la conexión durante COPY a la salida estándar" -#: parser/parse_clause.c:894 +#: commands/copy.c:526 #, 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" +msgid "could not read from COPY file: %m" +msgstr "no se pudo leer desde archivo COPY: %m" -#: parser/parse_clause.c:908 +#: commands/copy.c:577 #, 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" +msgid "COPY from stdin failed: %s" +msgstr "falló COPY desde la entrada estándar: %s" -#: parser/parse_clause.c:917 +#: commands/copy.c:593 #, c-format -msgid "column \"%s\" specified in USING clause does not exist in right table" +msgid "unexpected message type 0x%02X during COPY from stdin" msgstr "" -"la columna «%s» especificada en la cláusula USING no existe en la tabla " -"derecha" +"se recibió un mensaje de tipo 0x%02X inesperado durante COPY desde la " +"entrada estándar" -#: parser/parse_clause.c:974 -#, c-format -msgid "column alias list for \"%s\" has too many entries" -msgstr "la lista de alias de columnas para «%s» tiene demasiadas entradas" +#: commands/copy.c:745 +msgid "must be superuser to COPY to or from a file" +msgstr "debe ser superusuario para usar COPY desde o hacia un archivo" -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1211 -#, c-format -msgid "argument of %s must not contain variables" -msgstr "el argumento de %s no puede contener variables" +#: commands/copy.c:746 +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." -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1222 +#: commands/copy.c:874 #, c-format -msgid "argument of %s must not contain aggregate functions" -msgstr "el argumento de %s no puede contener funciones de agregación" +msgid "COPY format \"%s\" not recognized" +msgstr "el formato de COPY «%s» no es reconocido" -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1233 +#: commands/copy.c:937 commands/copy.c:951 #, c-format -msgid "argument of %s must not contain window functions" -msgstr "el argumento de %s no puede contener funciones de ventana deslizante" +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" -#. translator: first %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1350 +#: commands/copy.c:964 #, c-format -msgid "%s \"%s\" is ambiguous" -msgstr "%s «%s» es ambiguo" +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" -#. translator: %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1374 +#: commands/copy.c:970 #, c-format -msgid "non-integer constant in %s" -msgstr "constante no entera en %s" +msgid "option \"%s\" not recognized" +msgstr "no se reconoce la opción «%s»" -#. translator: %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1392 -#, 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" +#: commands/copy.c:981 +msgid "cannot specify DELIMITER in BINARY mode" +msgstr "no se puede especificar DELIMITER en modo BINARY" -#: parser/parse_clause.c:1608 -#, c-format -msgid "window \"%s\" is already defined" -msgstr "la ventana «%s» ya está definida" +#: commands/copy.c:986 +msgid "cannot specify NULL in BINARY mode" +msgstr "no se puede especificar NULL en modo BINARY" -#: parser/parse_clause.c:1662 -#, 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»" +#: commands/copy.c:1008 +msgid "COPY delimiter must be a single one-byte character" +msgstr "el delimitador de COPY debe ser un solo carácter de un byte" -#: parser/parse_clause.c:1674 -#, 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»" +#: commands/copy.c:1015 +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:1021 +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" -#: parser/parse_clause.c:1696 +#: commands/copy.c:1038 #, c-format -msgid "cannot override frame clause of window \"%s\"" -msgstr "no se puede pasar a llevar la cláusula de «frame» de la ventana «%s»" +msgid "COPY delimiter cannot be \"%s\"" +msgstr "el delimitador de COPY no puede ser «%s»" -#: parser/parse_clause.c:1762 -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" +#: commands/copy.c:1044 +msgid "COPY HEADER available only in CSV mode" +msgstr "el «header» de COPY está disponible sólo en modo CSV" -#: parser/parse_clause.c:1763 -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" +#: commands/copy.c:1050 +msgid "COPY quote available only in CSV mode" +msgstr "el «quote» de COPY está disponible sólo en modo CSV" -#: parser/parse_clause.c:1849 parser/parse_clause.c:1881 -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" +#: commands/copy.c:1055 +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" -#: parser/parse_clause.c:2000 -#, c-format -msgid "operator %s is not a valid ordering operator" -msgstr "el operador «%s» no es un operador válido de ordenamiento" +#: commands/copy.c:1060 +msgid "COPY delimiter and quote must be different" +msgstr "el delimitador de COPY y la comilla («quote») deben ser diferentes" -#: parser/parse_clause.c:2002 -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." +#: commands/copy.c:1066 +msgid "COPY escape available only in CSV mode" +msgstr "escape de COPY disponible sólo en modo CSV" -#: parser/parse_coerce.c:841 parser/parse_coerce.c:870 -#: parser/parse_coerce.c:888 parser/parse_coerce.c:903 -#: parser/parse_expr.c:1640 parser/parse_expr.c:2079 -#, c-format -msgid "cannot cast type %s to %s" -msgstr "no se puede convertir el tipo %s a %s" +#: commands/copy.c:1071 +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" -#: parser/parse_coerce.c:873 -msgid "Input has too few columns." -msgstr "La entrada tiene muy pocas columnas." +#: commands/copy.c:1077 +msgid "COPY force quote available only in CSV mode" +msgstr "el forzado de comillas de COPY sólo está disponible en modo CSV" -#: parser/parse_coerce.c:891 -#, c-format -msgid "Cannot cast type %s to %s in column %d." -msgstr "No se puede convertir el tipo %s a %s en la columna %d." +#: commands/copy.c:1081 +msgid "COPY force quote only available using COPY TO" +msgstr "el forzado de comillas de COPY sólo está disponible en COPY TO" -#: parser/parse_coerce.c:906 -msgid "Input has too many columns." -msgstr "La entrada tiene demasiadas columnas." +#: commands/copy.c:1087 +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" -#. translator: first %s is name of a SQL construct, eg WHERE -#: parser/parse_coerce.c:949 -#, c-format -msgid "argument of %s must be type boolean, not type %s" -msgstr "el argumento de %s debe ser de tipo boolean, no tipo %s" +#: commands/copy.c:1091 +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" -#. translator: %s is name of a SQL construct, eg WHERE -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_coerce.c:959 parser/parse_coerce.c:1008 +#: commands/copy.c:1097 +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:1104 +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:1166 #, c-format -msgid "argument of %s must not return a set" -msgstr "el argumento de %s no debe retornar un conjunto" +msgid "table \"%s\" does not have OIDs" +msgstr "la tabla «%s» no tiene OIDs" -#. translator: first %s is name of a SQL construct, eg LIMIT -#: parser/parse_coerce.c:996 +#: commands/copy.c:1183 +msgid "COPY (SELECT) WITH OIDS is not supported" +msgstr "COPY (SELECT) WITH OIDS no está soportado" + +#: commands/copy.c:1210 +msgid "COPY (SELECT INTO) is not supported" +msgstr "COPY (SELECT INTO) no está soportado" + +#: commands/copy.c:1270 #, c-format -msgid "argument of %s must be type %s, not type %s" -msgstr "el argumento de %s debe ser de tipo %s, no tipo %s" +msgid "FORCE QUOTE column \"%s\" not referenced by COPY" +msgstr "la columna con comillas forzadas «%s» no es referenciada por COPY" -#. translator: first %s is name of a SQL construct, eg CASE -#: parser/parse_coerce.c:1129 +#: commands/copy.c:1292 #, c-format -msgid "%s types %s and %s cannot be matched" -msgstr "los tipos %2$s y %3$s no son coincidentes en %1$s" +msgid "FORCE NOT NULL column \"%s\" not referenced by COPY" +msgstr "la columna FORCE NOT NULL «%s» no fue mencionada en COPY" -#. translator: first %s is name of a SQL construct, eg CASE -#: parser/parse_coerce.c:1196 +#: commands/copy.c:1356 #, c-format -msgid "%s could not convert type %s to %s" -msgstr "%s no pudo convertir el tipo %s a %s" +msgid "cannot copy from view \"%s\"" +msgstr "no se puede copiar desde la vista «%s»" -#: parser/parse_coerce.c:1437 -msgid "arguments declared \"anyelement\" are not all alike" -msgstr "los argumentos declarados «anyelement» no son de tipos compatibles" +#: commands/copy.c:1358 commands/copy.c:1364 +msgid "Try the COPY (SELECT ...) TO variant." +msgstr "Intente la forma COPY (SELECT ...) TO." -#: parser/parse_coerce.c:1456 -msgid "arguments declared \"anyarray\" are not all alike" -msgstr "los argumentos declarados «anyarray» no son de tipos compatibles" +#: commands/copy.c:1362 +#, c-format +msgid "cannot copy from foreign table \"%s\"" +msgstr "no se puede copiar desde la tabla foránea «%s»" -#: parser/parse_coerce.c:1485 parser/parse_coerce.c:1629 -#: parser/parse_coerce.c:1660 +#: commands/copy.c:1368 #, c-format -msgid "argument declared \"anyarray\" is not an array but type %s" -msgstr "el argumento declarado «anyarray» no es un array sino de tipo %s" +msgid "cannot copy from sequence \"%s\"" +msgstr "no se puede copiar desde la secuencia «%s»" -#: parser/parse_coerce.c:1501 -msgid "" -"argument declared \"anyarray\" is not consistent with argument declared " -"\"anyelement\"" -msgstr "" -"el argumento declarado «anyarray» no es consistente con el argumento " -"declarado «anyelement»" +#: commands/copy.c:1373 +#, 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" -#: parser/parse_coerce.c:1519 -msgid "could not determine polymorphic type because input has type \"unknown\"" -msgstr "" -"no se pudo determinar el tipo polimórfico porque el tipo de entrada es " -"«unknown»" +#: commands/copy.c:1397 +msgid "relative path not allowed for COPY to file" +msgstr "no se permiten rutas relativas para COPY hacia un archivo" -#: parser/parse_coerce.c:1529 +#: commands/copy.c:1407 #, c-format -msgid "type matched to anynonarray is an array type: %s" -msgstr "el argumento coincidente con anynonarray es un array: %s" +msgid "could not open file \"%s\" for writing: %m" +msgstr "no se pudo abrir el archivo «%s» para escritura: %m" -#: parser/parse_coerce.c:1539 +#: commands/copy.c:1414 commands/copy.c:2200 #, c-format -msgid "type matched to anyenum is not an enum type: %s" -msgstr "el tipo coincidente con anyenum no es un tipo enum: %s" +msgid "\"%s\" is a directory" +msgstr "«%s» es un directorio" -#: parser/parse_cte.c:40 +#: commands/copy.c:1738 #, c-format -msgid "" -"recursive reference to query \"%s\" must not appear within its non-recursive " -"term" -msgstr "" -"la referencia recursiva a la consulta «%s» no debe aparecer dentro de su " -"término no recursivo" +msgid "COPY %s, line %d, column %s" +msgstr "COPY %s, línea %d, columna %s" -#: parser/parse_cte.c:42 +#: commands/copy.c:1742 commands/copy.c:1787 #, c-format -msgid "recursive reference to query \"%s\" must not appear within a subquery" -msgstr "" -"la referencia recursiva a la consulta «%s» no debe aparecer dentro de una " -"subconsulta" +msgid "COPY %s, line %d" +msgstr "COPY %s, línea %d" -#: parser/parse_cte.c:44 +#: commands/copy.c:1753 #, c-format -msgid "" -"recursive reference to query \"%s\" must not appear within an outer join" -msgstr "" -"la referencia recursiva a la consulta «%s» no debe aparecer dentro de un " -"outer join" +msgid "COPY %s, line %d, column %s: \"%s\"" +msgstr "COPY %s, línea %d, columna %s: «%s»" -#: parser/parse_cte.c:46 +#: commands/copy.c:1761 #, c-format -msgid "recursive reference to query \"%s\" must not appear within INTERSECT" -msgstr "" -"la referencia recursiva a la consulta «%s» no debe aparecer dentro de " -"INTERSECT" +msgid "COPY %s, line %d, column %s: null input" +msgstr "COPY %s, línea %d, columna %s: entrada nula" -#: parser/parse_cte.c:48 +#: commands/copy.c:1773 #, c-format -msgid "recursive reference to query \"%s\" must not appear within EXCEPT" -msgstr "" -"la referencia recursiva a la consulta «%s» no debe aparecer dentro de EXCEPT" +msgid "COPY %s, line %d: \"%s\"" +msgstr "COPY %s, línea %d: «%s»" -#: parser/parse_cte.c:130 +#: commands/copy.c:1857 #, c-format -msgid "WITH query name \"%s\" specified more than once" -msgstr "el nombre de consulta WITH «%s» fue especificado más de una vez" - -#: parser/parse_cte.c:247 -msgid "subquery in WITH cannot have SELECT INTO" -msgstr "una subconsulta en WITH no puede tener SELECT INTO" +msgid "cannot copy to view \"%s\"" +msgstr "no se puede copiar hacia la vista «%s»" -#: parser/parse_cte.c:288 +#: commands/copy.c:1862 #, c-format -msgid "" -"recursive query \"%s\" column %d has type %s in non-recursive term but type " -"%s overall" -msgstr "" -"la columna %2$d en la consulta recursiva «%1$s» tiene tipo %3$s en el " -"término no recursivo, pero %4$s en general" +msgid "cannot copy to foreign table \"%s\"" +msgstr "no se puede copiar hacia la tabla foránea «%s»" -#: parser/parse_cte.c:294 -msgid "Cast the output of the non-recursive term to the correct type." -msgstr "" -"Aplique una conversión de tipo a la salida del término no recursivo al tipo " -"correcto." +#: commands/copy.c:1867 +#, c-format +msgid "cannot copy to sequence \"%s\"" +msgstr "no se puede copiar hacia la secuencia «%s»" -#: parser/parse_cte.c:376 +#: commands/copy.c:1872 #, c-format -msgid "WITH query \"%s\" has %d columns available but %d columns specified" -msgstr "" -"la consulta WITH «%s» tiene %d columnas disponibles pero se especificaron %d" +msgid "cannot copy to non-table relation \"%s\"" +msgstr "no se puede copiar hacia la relación «%s» porque no es una tabla" -#: parser/parse_cte.c:556 -msgid "mutual recursion between WITH items is not implemented" -msgstr "la recursión mutua entre elementos de WITH no está implementada" - -#: parser/parse_cte.c:608 -#, c-format -msgid "" -"recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] " -"recursive-term" -msgstr "" -"la consulta recursiva «%s» no tiene la forma término-no-recursivo UNION " -"[ALL] término-recursivo" +#: commands/copy.c:2219 +msgid "COPY file signature not recognized" +msgstr "el identificador del archivo COPY no es reconocido" -#: parser/parse_cte.c:640 -msgid "ORDER BY in a recursive query is not implemented" -msgstr "ORDER BY no está implementado en una consulta recursiva" +#: commands/copy.c:2224 +msgid "invalid COPY file header (missing flags)" +msgstr "el encabezado del archivo COPY no es válido (faltan campos)" -#: parser/parse_cte.c:646 -msgid "OFFSET in a recursive query is not implemented" -msgstr "OFFSET no está implementado en una consulta recursiva" +#: commands/copy.c:2230 +msgid "unrecognized critical flags in COPY file header" +msgstr "valores requeridos no reconocidos en encabezado de COPY" -#: parser/parse_cte.c:652 -msgid "LIMIT in a recursive query is not implemented" -msgstr "LIMIT no está implementado en una consulta recursiva" +#: commands/copy.c:2236 +msgid "invalid COPY file header (missing length)" +msgstr "el encabezado del archivo COPY no es válido (falta el largo)" -#: parser/parse_cte.c:658 -msgid "FOR UPDATE/SHARE in a recursive query is not implemented" -msgstr "FOR UPDATE/SHARE no está implementado en una consulta recursiva" +#: commands/copy.c:2243 +msgid "invalid COPY file header (wrong length)" +msgstr "el encabezado del archivo COPY no es válido (largo incorrecto)" -#: parser/parse_cte.c:715 -#, c-format -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" +#: commands/copy.c:2376 commands/copy.c:3058 commands/copy.c:3288 +msgid "extra data after last expected column" +msgstr "datos extra después de la última columna esperada" -#: parser/parse_expr.c:358 parser/parse_expr.c:751 -#, c-format -msgid "column %s.%s does not exist" -msgstr "no existe la columna %s.%s" +#: commands/copy.c:2386 +msgid "missing data for OID column" +msgstr "faltan datos para la columna OID" -#: parser/parse_expr.c:370 -#, c-format -msgid "column \"%s\" not found in data type %s" -msgstr "la columna «%s» no fue encontrado en el tipo %s" +#: commands/copy.c:2392 +msgid "null OID in COPY data" +msgstr "OID nulo en datos COPY" -#: parser/parse_expr.c:376 -#, 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" +#: commands/copy.c:2402 commands/copy.c:2501 +msgid "invalid OID in COPY data" +msgstr "OID no válido en datos COPY" -#: parser/parse_expr.c:382 +#: commands/copy.c:2417 #, 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:412 parser/parse_target.c:600 -msgid "row expansion via \"*\" is not supported here" -msgstr "la expansión de filas a través de «*» no está soportado aquí" +msgid "missing data for column \"%s\"" +msgstr "faltan datos en la columna «%s»" -#: parser/parse_expr.c:735 parser/parse_relation.c:478 -#: parser/parse_relation.c:551 parser/parse_target.c:977 -#, c-format -msgid "column reference \"%s\" is ambiguous" -msgstr "la referencia a la columna «%s» es ambigua" +#: commands/copy.c:2476 +msgid "received copy data after EOF marker" +msgstr "se recibieron datos de copy después del marcador EOF" -#: parser/parse_expr.c:803 parser/parse_param.c:108 parser/parse_param.c:139 -#: parser/parse_param.c:195 parser/parse_param.c:287 +#: commands/copy.c:2483 #, c-format -msgid "there is no parameter $%d" -msgstr "no hay parámetro $%d" - -#: parser/parse_expr.c:1008 -msgid "NULLIF requires = operator to yield boolean" -msgstr "NULLIF requiere que el operador = retorne boolean" +msgid "row field count is %d, expected %d" +msgstr "la cantidad de registros es %d, pero se esperaban %d" -#: parser/parse_expr.c:1181 -msgid "arguments of row IN must all be row expressions" -msgstr "los argumentos de IN de registros deben ser expresiones de registro" +#: commands/copy.c:2822 commands/copy.c:2839 +msgid "literal carriage return found in data" +msgstr "se encontró un retorno de carro literal en los datos" -#: parser/parse_expr.c:1385 -msgid "subquery cannot have SELECT INTO" -msgstr "una subconsulta no puede tener SELECT INTO" +#: commands/copy.c:2823 commands/copy.c:2840 +msgid "unquoted carriage return found in data" +msgstr "se encontró un retorno de carro fuera de comillas en los datos" -#: parser/parse_expr.c:1413 -msgid "subquery must return a column" -msgstr "la subconsulta debe retornar una columna" +#: commands/copy.c:2825 commands/copy.c:2842 +msgid "Use \"\\r\" to represent carriage return." +msgstr "Use «\\r» para representar el retorno de carro." -#: parser/parse_expr.c:1420 -msgid "subquery must return only one column" -msgstr "la subconsulta debe retornar sólo una columna" +#: commands/copy.c:2826 commands/copy.c:2843 +msgid "Use quoted CSV field to represent carriage return." +msgstr "Use un campo CSV entre comillas para representar el retorno de carro." -#: parser/parse_expr.c:1479 -msgid "subquery has too many columns" -msgstr "la subconsulta tiene demasiadas columnas" +#: commands/copy.c:2855 +msgid "literal newline found in data" +msgstr "se encontró un salto de línea literal en los datos" -#: parser/parse_expr.c:1484 -msgid "subquery has too few columns" -msgstr "la subconsulta tiene muy pocas columnas" +#: commands/copy.c:2856 +msgid "unquoted newline found in data" +msgstr "se encontró un salto de línea fuera de comillas en los datos" -#: parser/parse_expr.c:1580 -msgid "cannot determine type of empty array" -msgstr "no se puede determinar el tipo de un array vacío" +#: commands/copy.c:2858 +msgid "Use \"\\n\" to represent newline." +msgstr "Use «\\n» para representar un salto de línea." -#: parser/parse_expr.c:1581 -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[]." +#: commands/copy.c:2859 +msgid "Use quoted CSV field to represent newline." +msgstr "Use un campo CSV entre comillas para representar un salto de línea." -#: parser/parse_expr.c:1595 -#, c-format -msgid "could not find element type for data type %s" +#: commands/copy.c:2905 commands/copy.c:2941 +msgid "end-of-copy marker does not match previous newline style" msgstr "" -"no se pudo encontrar el tipo de dato de elemento para el tipo de dato %s" +"el marcador fin-de-copy no coincide con el estilo previo de salto de línea" -#: parser/parse_expr.c:1793 -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" +#: commands/copy.c:2914 commands/copy.c:2930 +msgid "end-of-copy marker corrupt" +msgstr "marcador fin-de-copy corrupto" -#: parser/parse_expr.c:1794 -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" +#: commands/copy.c:3372 +msgid "unterminated CSV quoted field" +msgstr "un valor entre comillas está inconcluso" -#: parser/parse_expr.c:1809 -#, c-format -msgid "XML attribute name \"%s\" appears more than once" -msgstr "el nombre de atributo XML «%s» aparece más de una vez" +#: commands/copy.c:3449 commands/copy.c:3468 +msgid "unexpected EOF in COPY data" +msgstr "EOF inesperado en datos de COPY" -#: parser/parse_expr.c:1916 -#, c-format -msgid "cannot cast XMLSERIALIZE result to %s" -msgstr "no se puede convertir el resultado de XMLSERIALIZE a %s" +#: commands/copy.c:3458 +msgid "invalid field size" +msgstr "el tamaño de campo no es válido" -#: parser/parse_expr.c:2120 parser/parse_expr.c:2318 -msgid "unequal number of entries in row expressions" -msgstr "número desigual de entradas en expresiones de registro" +#: commands/copy.c:3481 +msgid "incorrect binary data format" +msgstr "el formato de datos binarios es incorrecto" -#: parser/parse_expr.c:2130 -msgid "cannot compare rows of zero length" -msgstr "no se pueden comparar registros de largo cero" +#: commands/cluster.c:134 commands/cluster.c:372 +msgid "cannot cluster temporary tables of other sessions" +msgstr "no se pueden reordenar tablas temporales de otras sesiones" -#: parser/parse_expr.c:2155 +#: commands/cluster.c:164 #, 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" +msgid "there is no previously clustered index for table \"%s\"" +msgstr "no hay un índice de ordenamiento definido para la tabla «%s»" -#: parser/parse_expr.c:2162 -msgid "row comparison operator must not return a set" -msgstr "el operador de comparación de registros no puede retornar un conjunto" +#: commands/cluster.c:361 +msgid "cannot cluster a shared catalog" +msgstr "no se puede reordenar un catálogo compartido" -#: parser/parse_expr.c:2221 parser/parse_expr.c:2265 +#: commands/cluster.c:376 +msgid "cannot vacuum temporary tables of other sessions" +msgstr "no se puede hacer vacuum a tablas temporales de otras sesiones" + +#: commands/cluster.c:426 #, 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" +msgid "\"%s\" is not an index for table \"%s\"" +msgstr "«%s» no es un índice de la tabla «%s»" -#: parser/parse_expr.c:2223 +#: commands/cluster.c:434 +#, c-format msgid "" -"Row comparison operators must be associated with btree operator families." +"cannot cluster on index \"%s\" because access method does not support " +"clustering" msgstr "" -"Los operadores de comparación de registros deben estar asociados a una " -"familia de operadores btree." - -#: parser/parse_expr.c:2267 -msgid "There are multiple equally-plausible candidates." -msgstr "Hay múltiples candidatos igualmente plausibles." - -#: parser/parse_expr.c:2358 -msgid "IS DISTINCT FROM requires = operator to yield boolean" -msgstr "IS DISTINCT FROM requiere que el operador = retorne boolean" +"no se puede reordenar en índice «%s» porque el método de acceso no soporta " +"reordenamiento" -#: parser/parse_func.c:153 +#: commands/cluster.c:446 #, 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:164 -msgid "positional argument cannot follow named argument" -msgstr "un argumento posicional no puede seguir a un argumento con nombre" +msgid "cannot cluster on partial index \"%s\"" +msgstr "no se puede reordenar en índice parcial «%s»" -#: parser/parse_func.c:242 +#: commands/cluster.c:460 #, 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" +msgid "cannot cluster on invalid index \"%s\"" +msgstr "no se puede reordenar en el índice no válido «%s»" -#: parser/parse_func.c:249 +#: commands/cluster.c:894 #, 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" +msgid "clustering \"%s.%s\" using index scan on \"%s\"" +msgstr "reordenando «%s.%s» usando un recorrido de índice en «%s»" -#: parser/parse_func.c:255 +#: commands/cluster.c:900 #, 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" +msgid "clustering \"%s.%s\" using sequential scan and sort" +msgstr "reordenando «%s.%s» usando un recorrido secuencial y ordenamiento" -#: parser/parse_func.c:261 +#: commands/cluster.c:905 commands/vacuumlazy.c:354 #, 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" +msgid "vacuuming \"%s.%s\"" +msgstr "haciendo vacuum a «%s.%s»" -#: parser/parse_func.c:283 +#: commands/cluster.c:1065 #, c-format -msgid "function %s is not unique" -msgstr "la función %s no es única" - -#: parser/parse_func.c:286 msgid "" -"Could not choose a best candidate function. You might need to add explicit " -"type casts." +"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages" msgstr "" -"No se pudo escoger la función más adecuada. Puede desear agregar " -"conversiones explícitas de tipos." +"«%s»: se encontraron %.0f versiones eliminables de filas y %.0f no " +"eliminables en %u páginas" -#: parser/parse_func.c:297 +#: commands/cluster.c:1069 +#, 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." +"%.0f dead row versions cannot be removed yet.\n" +"%s." 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." +"%.0f versiones muertas de filas no pueden ser eliminadas aún.\n" +"%s." -#: parser/parse_func.c:308 +#: commands/vacuumlazy.c:269 +#, c-format msgid "" -"No function matches the given name and argument types. You might need to add " -"explicit type casts." +"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 "" -"Ninguna función coincide en el nombre y tipos de argumentos. Puede desear " -"agregar conversión explícita de tipos." +"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" +"uso del sistema: %s" -#: parser/parse_func.c:415 parser/parse_func.c:480 +#: commands/vacuumlazy.c:523 #, c-format -msgid "%s(*) must be used to call a parameterless aggregate function" +msgid "relation \"%s\" page %u is uninitialized --- fixing" msgstr "" -"%s(*) debe ser usado para invocar una función de agregación sin parámetros" - -#: parser/parse_func.c:422 -msgid "aggregates cannot return sets" -msgstr "las funciones de agregación no pueden retornar conjuntos" +"la página %2$u de la relación «%1$s» no está inicializada --- arreglando" -#: parser/parse_func.c:434 -msgid "aggregates cannot use named arguments" -msgstr "las funciones de agregación no pueden usar argumentos con nombre" +#: commands/vacuumlazy.c:882 +#, c-format +msgid "\"%s\": removed %.0f row versions in %u pages" +msgstr "«%s»: se eliminaron %.0f versiones de filas en %u páginas" -#: parser/parse_func.c:453 -msgid "window function call requires an OVER clause" +#: commands/vacuumlazy.c:887 +#, c-format +msgid "" +"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u " +"pages" msgstr "" -"la invocación de una función de ventana deslizante requiere una cláusula OVER" - -#: parser/parse_func.c:470 -msgid "DISTINCT is not implemented for window functions" -msgstr "DISTINCT no está implementado para funciones de ventana deslizante" +"«%s»: se encontraron %.0f versiones de filas eliminables y %.0f no " +"eliminables en %u de %u páginas" -#: parser/parse_func.c:490 -msgid "aggregate ORDER BY is not implemented for window functions" +#: commands/vacuumlazy.c:891 +#, 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 "" -"el ORDER BY de funciones de agregación no está implementado para funciones " -"de ventana deslizante" +"%.0f versiones muertas de filas no pueden ser eliminadas aún.\n" +"Hubo %.0f punteros de ítem sin uso.\n" +"%u páginas están completamente vacías.\n" +"%s." -#: parser/parse_func.c:496 -msgid "window functions cannot return sets" -msgstr "las funciones de ventana deslizante no pueden retornar conjuntos" - -#: parser/parse_func.c:507 -msgid "window functions cannot use named arguments" -msgstr "" -"las funciones de ventana deslizante no pueden usar argumentos con nombre" - -#: parser/parse_func.c:1572 -#, c-format -msgid "aggregate %s(*) does not exist" -msgstr "no existe la función de agregación %s(*)" - -#: parser/parse_func.c:1577 +#: commands/vacuumlazy.c:949 #, c-format -msgid "aggregate %s does not exist" -msgstr "no existe la función de agregación %s" +msgid "\"%s\": removed %d row versions in %d pages" +msgstr "«%s»: se eliminaron %d versiones de filas en %d páginas" -#: parser/parse_func.c:1596 +#: commands/vacuumlazy.c:952 commands/vacuumlazy.c:1044 +#: commands/vacuumlazy.c:1211 #, c-format -msgid "function %s is not an aggregate" -msgstr "la función %s no es una función de agregación" +msgid "%s." +msgstr "%s." -#: parser/parse_node.c:82 +#: commands/vacuumlazy.c:1041 #, c-format -msgid "target lists can have at most %d entries" -msgstr "las listas de resultados pueden tener a lo más %d entradas" +msgid "scanned index \"%s\" to remove %d row versions" +msgstr "se recorrió el índice «%s» para eliminar %d versiones de filas" -#: parser/parse_node.c:222 +#: commands/vacuumlazy.c:1082 #, 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:316 parser/parse_node.c:342 -msgid "array subscript must have type integer" -msgstr "los subíndices de arrays deben tener tipo entero" +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" -#: parser/parse_node.c:366 +#: commands/vacuumlazy.c:1086 #, c-format -msgid "array assignment requires type %s but expression is of type %s" +msgid "" +"%.0f index row versions were removed.\n" +"%u index pages have been deleted, %u are currently reusable.\n" +"%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:751 utils/adt/regproc.c:464 -#: utils/adt/regproc.c:484 utils/adt/regproc.c:643 -#, c-format -msgid "operator does not exist: %s" -msgstr "el operador no existe: %s" - -#: parser/parse_oper.c:256 -msgid "Use an explicit ordering operator or modify the query." -msgstr "Use un operador de ordenamiento explícito o modifique la consulta." +"%.0f versiones de filas del índice fueron eliminadas.\n" +"%u páginas de índice han sido eliminadas, %u son reusables.\n" +"%s." -#: parser/parse_oper.c:260 utils/adt/arrayfuncs.c:3105 -#: utils/adt/arrayfuncs.c:3506 utils/adt/rowtypes.c:1139 +#: commands/vacuumlazy.c:1143 #, 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" +msgid "\"%s\": stopping truncate due to conflicting lock request" +msgstr "" +"«%s»: suspendiendo el truncado debido a una petición de candado en conflicto" -#: parser/parse_oper.c:509 +#: commands/vacuumlazy.c:1208 #, c-format -msgid "operator requires run-time type coercion: %s" -msgstr "el operador requiere conversión explícita de tipos: %s" +msgid "\"%s\": truncated %u to %u pages" +msgstr "«%s»: truncadas %u a %u páginas" -#: parser/parse_oper.c:743 +#: commands/vacuumlazy.c:1264 #, c-format -msgid "operator is not unique: %s" -msgstr "el operador no es único: %s" - -#: parser/parse_oper.c:745 -msgid "" -"Could not choose a best candidate operator. You might need to add explicit " -"type casts." -msgstr "" -"No se pudo escoger el operador más adecuado. Puede desear agregar " -"conversiones explícitas de tipos." - -#: parser/parse_oper.c:753 -msgid "" -"No operator matches the given name and argument type(s). You might need to " -"add explicit type casts." +msgid "\"%s\": suspending truncate due to conflicting lock request" msgstr "" -"Ningún operador coincide con el nombre y el tipo de los argumentos. Puede " -"desear agregar conversiones explícitas de tipos." +"«%s»: suspendiendo el truncado debido a una petición de candado en conflicto" -#: parser/parse_oper.c:812 parser/parse_oper.c:928 -#, c-format -msgid "operator is only a shell: %s" -msgstr "el operador está inconcluso: %s" +#: commands/dbcommands.c:202 +msgid "LOCATION is not supported anymore" +msgstr "LOCATION ya no está soportado" -#: parser/parse_oper.c:916 -msgid "op ANY/ALL (array) requires array on right side" -msgstr "op ANY/ALL (array) requiere un array al lado derecho" +#: commands/dbcommands.c:203 +msgid "Consider using tablespaces instead." +msgstr "Considere usar tablespaces." -#: parser/parse_oper.c:958 -msgid "op ANY/ALL (array) requires operator to yield boolean" -msgstr "op ANY/ALL (array) requiere un operador que entregue boolean" +#: commands/dbcommands.c:254 commands/dbcommands.c:1374 commands/user.c:267 +#: commands/user.c:606 +#, c-format +msgid "invalid connection limit: %d" +msgstr "límite de conexión no válido: %d" -#: parser/parse_oper.c:963 -msgid "op ANY/ALL (array) requires operator not to return a set" -msgstr "op ANY/ALL (array) requiere un operador que no retorne un conjunto" +#: commands/dbcommands.c:273 +msgid "permission denied to create database" +msgstr "se ha denegado el permiso para crear la base de datos" -#: parser/parse_param.c:212 +#: commands/dbcommands.c:296 #, c-format -msgid "inconsistent types deduced for parameter $%d" -msgstr "para el parámetro $%d se dedujeron tipos de dato inconsistentes" +msgid "template database \"%s\" does not exist" +msgstr "no existe la base de datos patrón «%s»" -#: parser/parse_relation.c:147 +#: commands/dbcommands.c:308 #, c-format -msgid "table reference \"%s\" is ambiguous" -msgstr "la referencia a la tabla «%s» es ambigua" +msgid "permission denied to copy database \"%s\"" +msgstr "se ha denegado el permiso para copiar la base de datos «%s»" -#: parser/parse_relation.c:183 +#: commands/dbcommands.c:324 #, c-format -msgid "table reference %u is ambiguous" -msgstr "la referencia a la tabla %u es ambigua" +msgid "invalid server encoding %d" +msgstr "la codificación de servidor %d no es válida" -#: parser/parse_relation.c:343 +#: commands/dbcommands.c:330 commands/dbcommands.c:334 #, c-format -msgid "table name \"%s\" specified more than once" -msgstr "el nombre de tabla «%s» fue especificado más de una vez" +msgid "invalid locale name %s" +msgstr "el nombre de configuración regional «%s» no es válido" -#: parser/parse_relation.c:754 parser/parse_relation.c:1043 -#: parser/parse_relation.c:1403 +#: commands/dbcommands.c:353 #, c-format -msgid "table \"%s\" has %d columns available but %d columns specified" -msgstr "la tabla «%s» tiene %d columnas pero se especificaron %d" +msgid "" +"new encoding (%s) is incompatible with the encoding of the template database " +"(%s)" +msgstr "" +"la nueva codificación (%s) es incompatible con la codificación de la base de " +"datos patrón (%s)" -#: parser/parse_relation.c:784 -#, c-format -msgid "too many column aliases specified for function %s" -msgstr "se especificaron demasiados alias de columna para la función %s" +#: commands/dbcommands.c:356 +msgid "" +"Use the same encoding as in the template database, or use template0 as " +"template." +msgstr "" +"Use la misma codificación que en la base de datos patrón, o bien use " +"template0 como patrón." -#: parser/parse_relation.c:850 +#: commands/dbcommands.c:361 #, c-format msgid "" -"There is a WITH item named \"%s\", but it cannot be referenced from this " -"part of the query." +"new collation (%s) is incompatible with the collation of the template " +"database (%s)" msgstr "" -"Hay un elemento WITH llamado «%s», pero no puede ser referenciada desde esta " -"parte de la consulta." +"la nueva «collation» (%s) es incompatible con la «collation» de la base de " +"datos patrón (%s)" -#: parser/parse_relation.c:852 +#: commands/dbcommands.c:363 msgid "" -"Use WITH RECURSIVE, or re-order the WITH items to remove forward references." +"Use the same collation as in the template database, or use template0 as " +"template." msgstr "" -"Use WITH RECURSIVE, o reordene los elementos de WITH para eliminar " -"referencias hacia adelante." +"Use la misma «collation» que en la base de datos patrón, o bien use " +"template0 como patrón." -#: parser/parse_relation.c:1122 +#: commands/dbcommands.c:368 +#, c-format msgid "" -"a column definition list is only allowed for functions returning \"record\"" +"new LC_CTYPE (%s) is incompatible with the LC_CTYPE of the template database " +"(%s)" msgstr "" -"sólo se permite una lista de definición de columnas en funciones que " -"retornan «record»" +"el nuevo LC_CTYPE (%s) es incompatible con el LC_CTYPE de la base de datos " +"patrón (%s)" -#: parser/parse_relation.c:1130 -msgid "a column definition list is required for functions returning \"record\"" +#: commands/dbcommands.c:370 +msgid "" +"Use the same LC_CTYPE as in the template database, or use template0 as " +"template." msgstr "" -"se requiere una lista de definición de columnas para funciones que retornan " -"«record»" +"Use el mismo LC_CTYPE que en la base de datos patrón, o bien use template0 " +"como patrón." -#: parser/parse_relation.c:1177 -#, 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" +#: commands/dbcommands.c:392 commands/dbcommands.c:1081 +msgid "pg_global cannot be used as default tablespace" +msgstr "no puede usarse pg_global como tablespace por omisión" -#: parser/parse_relation.c:1249 +#: commands/dbcommands.c:418 #, 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" +msgid "cannot assign new default tablespace \"%s\"" +msgstr "no se puede asignar el nuevo tablespace por omisión «%s»" -#: parser/parse_relation.c:1305 +#: commands/dbcommands.c:420 #, c-format -msgid "joins can have at most %d columns" -msgstr "los joins pueden tener a lo más %d columnas" +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." -#: parser/parse_relation.c:2038 +#: commands/dbcommands.c:440 commands/dbcommands.c:956 #, c-format -msgid "column %d of relation \"%s\" does not exist" -msgstr "no existe la columna %d en la relación «%s»" +msgid "database \"%s\" already exists" +msgstr "la base de datos «%s» ya existe" -#: parser/parse_relation.c:2397 +#: commands/dbcommands.c:454 #, c-format -msgid "invalid reference to FROM-clause entry for table \"%s\"" +msgid "source database \"%s\" is being accessed by other users" msgstr "" -"referencia a la entrada de la cláusula FROM para la tabla «%s» no válida" +"la base de datos de origen «%s» está siendo utilizada por otros usuarios" -#: parser/parse_relation.c:2400 +#: commands/dbcommands.c:722 commands/dbcommands.c:737 #, c-format -msgid "Perhaps you meant to reference the table alias \"%s\"." -msgstr "Probablemente quiera hacer referencia al alias de la tabla «%s»." +msgid "encoding %s does not match locale %s" +msgstr "la codificación %s no coincide con la configuración regional %s" -#: parser/parse_relation.c:2402 +#: commands/dbcommands.c:725 #, 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." +msgid "The chosen LC_CTYPE setting requires encoding %s." +msgstr "La configuración regional LC_CTYPE requiere la codificación %s." -#: parser/parse_relation.c:2408 +#: commands/dbcommands.c:740 #, c-format -msgid "missing FROM-clause entry for table \"%s\"" -msgstr "falta una entrada para la tabla «%s» en la cláusula FROM" +msgid "The chosen LC_COLLATE setting requires encoding %s." +msgstr "La configuración regional LC_COLLATE requiere la codificación %s." -#: parser/parse_target.c:373 parser/parse_target.c:661 +#: commands/dbcommands.c:798 #, c-format -msgid "cannot assign to system column \"%s\"" -msgstr "no se puede asignar a la columna de sistema «%s»" +msgid "database \"%s\" does not exist, skipping" +msgstr "no existe la base de datos «%s», ignorando" -#: parser/parse_target.c:398 -msgid "cannot set an array element to DEFAULT" -msgstr "no se puede definir un elemento de array a DEFAULT" +#: commands/dbcommands.c:819 +msgid "cannot drop a template database" +msgstr "no se puede borrar una base de datos patrón" -#: parser/parse_target.c:403 -msgid "cannot set a subfield to DEFAULT" -msgstr "no se puede definir un subcampo a DEFAULT" +#: commands/dbcommands.c:825 +msgid "cannot drop the currently open database" +msgstr "no se puede eliminar la base de datos activa" -#: parser/parse_target.c:470 +#: commands/dbcommands.c:836 commands/dbcommands.c:978 +#: commands/dbcommands.c:1103 #, c-format -msgid "column \"%s\" is of type %s but expression is of type %s" -msgstr "la columna «%s» es de tipo %s pero la expresión es de tipo %s" +msgid "database \"%s\" is being accessed by other users" +msgstr "la base de datos «%s» está siendo utilizada por otros usuarios" + +#: commands/dbcommands.c:947 +msgid "permission denied to rename database" +msgstr "se ha denegado el permiso para cambiar el nombre a la base de datos" + +#: commands/dbcommands.c:967 +msgid "current database cannot be renamed" +msgstr "no se puede cambiar el nombre de la base de datos activa" + +#: commands/dbcommands.c:1059 +msgid "cannot change the tablespace of the currently open database" +msgstr "no se puede cambiar el tablespace de la base de datos activa" -#: parser/parse_target.c:645 +#: commands/dbcommands.c:1143 #, c-format -msgid "" -"cannot assign to field \"%s\" of column \"%s\" because its type %s is not a " -"composite type" +msgid "some relations of database \"%s\" are already in tablespace \"%s\"" msgstr "" -"no se puede asignar al campo «%s» de la columna «%s» porque su tipo %s no es " -"un tipo compuesto" +"algunas relaciones de la base de datos «%s» ya están en el tablespace «%s»" -#: parser/parse_target.c:654 -#, c-format +#: commands/dbcommands.c:1145 msgid "" -"cannot assign to field \"%s\" of column \"%s\" because there is no such " -"column in data type %s" +"You must move them back to the database's default tablespace before using " +"this command." msgstr "" -"no se puede asignar al campo «%s» de la columna «%s» porque no existe esa " -"columna en el tipo de dato %s" +"Debe moverlas de vuelta al tablespace por omisión de la base de datos antes " +"de ejecutar esta orden." -#: parser/parse_target.c:729 +#: commands/dbcommands.c:1273 commands/dbcommands.c:1752 +#: commands/dbcommands.c:1966 commands/dbcommands.c:2014 +#: commands/tablespace.c:584 +#, 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:1517 +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:1853 #, c-format msgid "" -"array assignment to \"%s\" requires type %s but expression is of type %s" +"There are %d other session(s) and %d prepared transaction(s) using the " +"database." msgstr "" -"la asignación de array a «%s» requiere tipo %s pero la expresión es de tipo " -"%s" +"Hay otras %d sesiones y %d transacciones preparadas usando la base de datos." -#: parser/parse_target.c:739 +#: commands/dbcommands.c:1856 #, c-format -msgid "subfield \"%s\" is of type %s but expression is of type %s" -msgstr "el subcampo «%s» es de tipo %s pero la expresión es de tipo %s" +msgid "There are %d other session(s) using the database." +msgstr "Hay otras %d sesiones usando la base de datos." -#: parser/parse_target.c:1039 -msgid "SELECT * with no tables specified is not valid" -msgstr "SELECT * sin especificar tablas no es válido" +#: commands/dbcommands.c:1859 +#, c-format +msgid "There are %d prepared transaction(s) using the database." +msgstr "Hay otras %d transacciones preparadas usando la base de datos." -#: parser/parse_type.c:83 +#: commands/explain.c:153 #, c-format -msgid "improper %%TYPE reference (too few dotted names): %s" -msgstr "referencia %%TYPE inapropiada (muy pocos nombres con punto): %s" +msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\"" +msgstr "valor no reconocido para la opción de EXPLAIN «%s»: «%s»" -#: parser/parse_type.c:105 +#: commands/explain.c:159 #, c-format -msgid "improper %%TYPE reference (too many dotted names): %s" -msgstr "" -"la referencia a %%TYPE es inapropiada (demasiados nombres con punto): %s" +msgid "unrecognized EXPLAIN option \"%s\"" +msgstr "opción de EXPLAIN no reconocida «%s»" -#: parser/parse_type.c:127 -#, c-format -msgid "type reference %s converted to %s" -msgstr "la referencia al tipo %s convertida a %s" +#: commands/explain.c:166 +msgid "EXPLAIN option BUFFERS requires ANALYZE" +msgstr "la opción BUFFERS de EXPLAIN requiere ANALYZE" -#: parser/parse_type.c:202 utils/cache/typcache.c:151 -#, c-format -msgid "type \"%s\" is only a shell" -msgstr "el tipo «%s» está inconcluso" +#: commands/indexcmds.c:161 +msgid "must specify at least one column" +msgstr "debe especificar al menos una columna" -#: parser/parse_type.c:270 +#: commands/indexcmds.c:165 #, 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:313 -msgid "type modifiers must be simple constants or identifiers" -msgstr "" -"los modificadores de tipo deben ser constantes simples o identificadores" +msgid "cannot use more than %d columns in an index" +msgstr "no se puede usar más de %d columnas en un índice" -#: parser/parse_type.c:548 parser/parse_type.c:647 +#: commands/indexcmds.c:193 #, c-format -msgid "invalid type name \"%s\"" -msgstr "el nombre de tipo «%s» no es válido" +msgid "cannot create index on foreign table \"%s\"" +msgstr "no se puede crear un índice en la tabla foránea «%s»" -#: parser/parse_utilcmd.c:306 -msgid "array of serial is not implemented" -msgstr "array de serial no está implementado" +#: commands/indexcmds.c:208 +msgid "cannot create indexes on temporary tables of other sessions" +msgstr "no se pueden crear índices en tablas temporales de otras sesiones" -#: parser/parse_utilcmd.c:350 -#, c-format -msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\"" -msgstr "%s creará una secuencia implícita «%s» para la columna serial «%s.%s»" +#: commands/indexcmds.c:294 +msgid "substituting access method \"gist\" for obsolete method \"rtree\"" +msgstr "sustituyendo el método de acceso obsoleto «rtree» por «gist»" -#: parser/parse_utilcmd.c:451 parser/parse_utilcmd.c:463 +#: commands/indexcmds.c:302 commands/opclasscmds.c:369 +#: commands/opclasscmds.c:790 commands/opclasscmds.c:2202 #, 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»" +msgid "access method \"%s\" does not exist" +msgstr "no existe el método de acceso «%s»" -#: parser/parse_utilcmd.c:475 +#: commands/indexcmds.c:311 #, 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»" +msgid "access method \"%s\" does not support unique indexes" +msgstr "el método de acceso «%s» no soporta índices únicos" -#: parser/parse_utilcmd.c:832 +#: commands/indexcmds.c:316 #, c-format -msgid "type %s is not a composite type" -msgstr "el tipo %s no es un tipo compuesto" +msgid "access method \"%s\" does not support multicolumn indexes" +msgstr "el método de acceso «%s» no soporta índices multicolumna" -#: parser/parse_utilcmd.c:1457 +#: commands/indexcmds.c:321 #, c-format -msgid "column \"%s\" appears twice in primary key constraint" -msgstr "la columna «%s» aparece dos veces en llave primaria" +msgid "access method \"%s\" does not support exclusion constraints" +msgstr "el método de acceso «%s» no soporta restricciones por exclusión" -#: parser/parse_utilcmd.c:1462 +#: commands/indexcmds.c:397 #, c-format -msgid "column \"%s\" appears twice in unique constraint" -msgstr "la columna «%s» aparece dos veces en restricción unique" +msgid "%s %s will create implicit index \"%s\" for table \"%s\"" +msgstr "%s %s creará el índice implícito «%s» para la tabla «%s»" -#: parser/parse_utilcmd.c:1615 -msgid "index expression cannot return a set" -msgstr "las expresiones de índice no pueden retornar conjuntos" +#: commands/indexcmds.c:735 +msgid "cannot use subquery in index predicate" +msgstr "no se puede usar una subconsulta en un predicado de índice" -#: parser/parse_utilcmd.c:1625 -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" +#: commands/indexcmds.c:739 +msgid "cannot use aggregate in index predicate" +msgstr "no se puede usar una función de agregación en un predicado de índice" -#: parser/parse_utilcmd.c:1720 -msgid "rule WHERE condition cannot contain references to other relations" +#: commands/indexcmds.c:748 +msgid "functions in index predicate must be marked IMMUTABLE" msgstr "" -"la condición WHERE de la regla no puede contener referencias a otras " -"relaciones" +"las funciones utilizadas en predicados de índice deben estar marcadas " +"IMMUTABLE" -#: parser/parse_utilcmd.c:1726 -msgid "cannot use aggregate function in rule WHERE condition" -msgstr "" -"no se pueden usar funciones de agregación en condición WHERE de una regla" +#: commands/indexcmds.c:813 parser/parse_utilcmd.c:1754 +#, c-format +msgid "column \"%s\" named in key does not exist" +msgstr "no existe la columna «%s» en la llave" -#: parser/parse_utilcmd.c:1730 -msgid "cannot use window function in rule WHERE condition" -msgstr "" -"no se pueden usar funciones de ventana deslizante en condición WHERE de una " -"regla" +#: commands/indexcmds.c:866 +msgid "cannot use subquery in index expression" +msgstr "no se puede usar una subconsulta en una expresión de índice" -#: parser/parse_utilcmd.c:1802 -msgid "" -"rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE " -"actions" +#: commands/indexcmds.c:870 +msgid "cannot use aggregate function in index expression" +msgstr "no se puede usar una función de agregación en una expresión de índice" + +#: commands/indexcmds.c:881 +msgid "functions in index expression must be marked IMMUTABLE" msgstr "" -"las reglas con condiciones WHERE sólo pueden tener acciones SELECT, INSERT, " -"UPDATE o DELETE" +"las funciones utilizadas en expresiones de índice deben estar marcadas " +"IMMUTABLE" -#: parser/parse_utilcmd.c:1820 parser/parse_utilcmd.c:1890 -#: rewrite/rewriteHandler.c:432 rewrite/rewriteManip.c:1021 -msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" +#: commands/indexcmds.c:902 +msgid "could not determine which collation to use for index expression" msgstr "" -"las sentencias UNION/INTERSECT/EXCEPT condicionales no están implementadas" +"no se pudo determinar qué ordenamiento (collation) usar para la expresión de " +"índice" -#: parser/parse_utilcmd.c:1838 -msgid "ON SELECT rule cannot use OLD" -msgstr "una regla ON SELECT no puede usar OLD" +#: commands/indexcmds.c:910 commands/typecmds.c:843 +#: parser/parse_utilcmd.c:2606 parser/parse_expr.c:2165 +#: parser/parse_type.c:492 +#, c-format +msgid "collations are not supported by type %s" +msgstr "los ordenamientos (collation) no están soportados por el tipo %s" -#: parser/parse_utilcmd.c:1842 -msgid "ON SELECT rule cannot use NEW" -msgstr "una regla ON SELECT no puede usar NEW" +#: commands/indexcmds.c:948 +#, c-format +msgid "operator %s is not commutative" +msgstr "el operador %s no es conmutativo" -#: parser/parse_utilcmd.c:1851 -msgid "ON INSERT rule cannot use OLD" -msgstr "una regla ON INSERT no puede usar OLD" +#: commands/indexcmds.c:950 +msgid "Only commutative operators can be used in exclusion constraints." +msgstr "" +"Sólo operadores conmutativos pueden ser usados en restricciones de exclusión." -#: parser/parse_utilcmd.c:1857 -msgid "ON DELETE rule cannot use NEW" -msgstr "una regla ON DELETE no puede usar NEW" +#: commands/indexcmds.c:976 +#, 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»" -#: parser/parse_utilcmd.c:2138 -msgid "misplaced DEFERRABLE clause" -msgstr "cláusula DEFERRABLE mal puesta" +#: commands/indexcmds.c:979 +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." -#: parser/parse_utilcmd.c:2143 parser/parse_utilcmd.c:2158 -msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" -msgstr "no se permiten múltiples cláusulas DEFERRABLE/NOT DEFERRABLE" +#: commands/indexcmds.c:1014 +#, 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" -#: parser/parse_utilcmd.c:2153 -msgid "misplaced NOT DEFERRABLE clause" -msgstr "la cláusula NOT DEFERRABLE está mal puesta" +#: commands/indexcmds.c:1019 +#, 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" -#: parser/parse_utilcmd.c:2166 parser/parse_utilcmd.c:2192 gram.y:3485 -#: gram.y:3501 -msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" -msgstr "una restricción declarada INITIALLY DEFERRED debe ser DEFERRABLE" +#: commands/indexcmds.c:1075 +#, 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»" -#: parser/parse_utilcmd.c:2174 -msgid "misplaced INITIALLY DEFERRED clause" -msgstr "la cláusula INITIALLY DEFERRED está mal puesta" +#: commands/indexcmds.c:1077 +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." -#: parser/parse_utilcmd.c:2179 parser/parse_utilcmd.c:2205 -msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" -msgstr "no se permiten múltiples cláusulas INITIALLY IMMEDIATE/DEFERRED" +#: commands/indexcmds.c:1106 commands/indexcmds.c:1114 +#: commands/opclasscmds.c:212 commands/opclasscmds.c:1568 +#, 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»" -#: parser/parse_utilcmd.c:2200 -msgid "misplaced INITIALLY IMMEDIATE clause" -msgstr "la cláusula INITIALLY IMMEDIATE está mal puesta" +#: commands/indexcmds.c:1127 +#, 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" -#: parser/parse_utilcmd.c:2373 +#: commands/indexcmds.c:1217 #, c-format -msgid "" -"CREATE specifies a schema (%s) different from the one being created (%s)" +msgid "there are multiple default operator classes for data type %s" msgstr "" -"CREATE especifica un esquema (%s) diferente del que se está creando (%s)" - -#: gram.y:1255 -msgid "current database cannot be changed" -msgstr "no se puede cambiar la base de datos activa" +"hay múltiples clases de operadores por omisión para el tipo de datos %s" -#: gram.y:1373 gram.y:1388 -msgid "time zone interval must be HOUR or HOUR TO MINUTE" -msgstr "el intervalo de huso horario debe ser HOUR o HOUR TO MINUTE" +#: commands/indexcmds.c:1560 +#, c-format +msgid "table \"%s\" has no indexes" +msgstr "la tabla «%s» no tiene índices" -#: gram.y:1393 gram.y:8280 gram.y:10731 -msgid "interval precision specified twice" -msgstr "la precisión de interval fue especificada dos veces" +#: commands/indexcmds.c:1588 +msgid "can only reindex the currently open database" +msgstr "sólo se puede reindexar la base de datos actualmente abierta" -#: gram.y:2522 -msgid "CHECK constraints cannot be deferred" -msgstr "las restricciones CHECK no puede ser postergadas" - -#: gram.y:2611 utils/adt/ri_triggers.c:373 utils/adt/ri_triggers.c:433 -#: utils/adt/ri_triggers.c:596 utils/adt/ri_triggers.c:836 -#: utils/adt/ri_triggers.c:1024 utils/adt/ri_triggers.c:1186 -#: utils/adt/ri_triggers.c:1374 utils/adt/ri_triggers.c:1545 -#: utils/adt/ri_triggers.c:1728 utils/adt/ri_triggers.c:1899 -#: utils/adt/ri_triggers.c:2115 utils/adt/ri_triggers.c:2297 -#: utils/adt/ri_triggers.c:2500 utils/adt/ri_triggers.c:2548 -#: utils/adt/ri_triggers.c:2593 utils/adt/ri_triggers.c:2721 -msgid "MATCH PARTIAL not yet implemented" -msgstr "MATCH PARTIAL no está implementada" +#: commands/indexcmds.c:1675 +#, c-format +msgid "table \"%s.%s\" was reindexed" +msgstr "la tabla «%s.%s» fue reindexada" -#: gram.y:2726 -msgid "CREATE TABLE AS cannot specify INTO" -msgstr "CREATE TABLE AS no puede especificar INTO" +#: commands/view.c:143 +#, 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" -#: gram.y:3396 -msgid "duplicate trigger events specified" -msgstr "se han especificado eventos de disparador duplicados" +#: commands/view.c:158 +msgid "view must have at least one column" +msgstr "una vista debe tener al menos una columna" -#: gram.y:3565 -msgid "CREATE ASSERTION is not yet implemented" -msgstr "CREATE ASSERTION no está implementado" +#: commands/view.c:283 commands/view.c:295 +msgid "cannot drop columns from view" +msgstr "no se pueden eliminar columnas de una vista" -#: gram.y:3581 -msgid "DROP ASSERTION is not yet implemented" -msgstr "DROP ASSERTION no está implementado" +#: commands/view.c:300 +#, 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»" -#: gram.y:3882 -msgid "RECHECK is no longer required" -msgstr "RECHECK ya no es requerido" +#: commands/view.c:308 +#, 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" -#: gram.y:3883 -msgid "Update your data type." -msgstr "Actualice su tipo de datos." +#: commands/view.c:447 +msgid "views must not contain SELECT INTO" +msgstr "una vista no puede tener SELECT INTO" -#: gram.y:5422 utils/adt/regproc.c:630 -msgid "missing argument" -msgstr "falta un argumento" +#: commands/view.c:451 +msgid "views must not contain data-modifying statements in WITH" +msgstr "las vistas no deben contener sentencias que modifiquen datos en WITH" -#: gram.y:5423 utils/adt/regproc.c:631 -msgid "Use NONE to denote the missing argument of a unary operator." -msgstr "Use NONE para denotar el argumento faltante de un operador unario." +#: commands/view.c:479 +msgid "CREATE VIEW specifies more column names than columns" +msgstr "CREATE VIEW especifica más nombres de columna que columnas" -#: gram.y:6358 gram.y:6364 gram.y:6370 -msgid "WITH CHECK OPTION is not implemented" -msgstr "WITH CHECK OPTION no está implementado" +#: commands/view.c:487 +msgid "views cannot be unlogged because they do not have storage" +msgstr "las vistas no pueden ser unlogged porque no tienen almacenamiento" -#: gram.y:7046 -msgid "column name list not allowed in CREATE TABLE / AS EXECUTE" -msgstr "no se permite una lista de columnas en CREATE TABLE / AS EXECUTE " +#: commands/view.c:501 +#, c-format +msgid "view \"%s\" will be a temporary view" +msgstr "la vista «%s» será una vista temporal" -#: gram.y:7267 -msgid "number of columns does not match number of values" -msgstr "el número de columnas no coincide con el número de valores" +#: commands/opclasscmds.c:136 commands/opclasscmds.c:1838 +#: commands/opclasscmds.c:1849 commands/opclasscmds.c:2083 +#: commands/opclasscmds.c:2094 +#, 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»" -#: gram.y:7707 -msgid "LIMIT #,# syntax is not supported" -msgstr "la sintaxis LIMIT #,# no está soportada" +#: commands/opclasscmds.c:271 +#, 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»" -#: gram.y:7708 -msgid "Use separate LIMIT and OFFSET clauses." -msgstr "Use cláusulas LIMIT y OFFSET separadas." +#: commands/opclasscmds.c:408 +msgid "must be superuser to create an operator class" +msgstr "debe ser superusuario para crear una clase de operadores" -#: gram.y:7926 -msgid "VALUES in FROM must have an alias" -msgstr "VALUES en FROM debe tener un alias" +#: 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 "el número de operador %d es incorrecto, debe estar entre 1 y %d" -#: gram.y:7927 -msgid "For example, FROM (VALUES ...) [AS] foo." -msgstr "Por ejemplo, FROM (VALUES ...) [AS] foo." +#: 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 "el número de procedimiento %d no es válido, debe estar entre 1 y %d" -#: gram.y:7932 -msgid "subquery in FROM must have an alias" -msgstr "las subconsultas en FROM deben tener un alias" +#: commands/opclasscmds.c:561 +msgid "storage type specified more than once" +msgstr "el tipo de almacenamiento fue especificado más de una vez" -#: gram.y:7933 -msgid "For example, FROM (SELECT ...) [AS] foo." -msgstr "Por ejemplo, FROM (SELECT ...) [AS] foo." - -#: gram.y:8406 -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" +#: commands/opclasscmds.c:589 +#, 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»" -#: gram.y:8415 -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" +#: commands/opclasscmds.c:605 +#, 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»" -#: gram.y:9121 -msgid "UNIQUE predicate is not yet implemented" -msgstr "el predicado UNIQUE no está implementado" +#: commands/opclasscmds.c:633 +#, 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" -#: gram.y:9993 -msgid "RANGE PRECEDING is only supported with UNBOUNDED" -msgstr "RANGE PRECEDING sólo está soportado con UNBOUNDED" +#: commands/opclasscmds.c:636 +#, c-format +msgid "Operator class \"%s\" already is the default." +msgstr "Actualmente, «%s» es la clase de operadores por omisión." -#: gram.y:9999 -msgid "RANGE FOLLOWING is only supported with UNBOUNDED" -msgstr "RANGE FOLLOWING sólo está soportado con UNBOUNDED" +#: commands/opclasscmds.c:760 +msgid "must be superuser to create an operator family" +msgstr "debe ser superusuario para crear una familia de operadores" -#: gram.y:10026 gram.y:10049 -msgid "frame start cannot be UNBOUNDED FOLLOWING" -msgstr "el inicio de «frame» no puede ser UNBOUNDED FOLLOWING" +#: commands/opclasscmds.c:816 +msgid "must be superuser to alter an operator family" +msgstr "debe ser superusuario para alterar una familia de operadores" -#: gram.y:10031 -msgid "frame starting from following row cannot end with current row" +#: commands/opclasscmds.c:880 +msgid "operator argument types must be specified in ALTER OPERATOR FAMILY" msgstr "" -"el «frame» que se inicia desde la siguiente fila no puede terminar en la " -"fila actual" +"los tipos de los argumentos de operador deben ser especificados en ALTER " +"OPERATOR FAMILY" -#: gram.y:10054 -msgid "frame end cannot be UNBOUNDED PRECEDING" -msgstr "el fin de «frame» no puede ser UNBOUNDED PRECEDING" +#: commands/opclasscmds.c:944 +msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY" +msgstr "STORAGE no puede ser especificado en ALTER OPERATOR FAMILY" -#: gram.y:10060 -msgid "frame starting from current row cannot have preceding rows" -msgstr "" -"el «frame» que se inicia desde la fila actual no puede tener filas " -"precedentes" +#: commands/opclasscmds.c:1060 +msgid "one or two argument types must be specified" +msgstr "uno o dos tipos de argumento debe/n ser especificado" -#: gram.y:10067 -msgid "frame starting from following row cannot have preceding rows" -msgstr "" -"el «frame» que se inicia desde la fila siguiente no puede tener filas " -"precedentes" +#: commands/opclasscmds.c:1086 +msgid "index operators must be binary" +msgstr "los operadores de índice deben ser binarios" -#: gram.y:10706 -msgid "type modifier cannot have parameter name" -msgstr "el modificador de tipo no puede tener nombre de parámetro" +#: commands/opclasscmds.c:1111 +#, c-format +msgid "access method \"%s\" does not support ordering operators" +msgstr "el método de acceso «%s» no soporta operadores de ordenamiento" -#: gram.y:11303 gram.y:11511 -msgid "improper use of \"*\"" -msgstr "uso impropio de «*»" +#: commands/opclasscmds.c:1124 +msgid "index search operators must return boolean" +msgstr "los operadores de búsqueda en índices deben retornar boolean" -#: gram.y:11442 -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" +#: commands/opclasscmds.c:1163 +msgid "btree procedures must have two arguments" +msgstr "los procedimientos de btree deben tener dos argumentos" -#: gram.y:11449 -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" +#: commands/opclasscmds.c:1167 +msgid "btree procedures must return integer" +msgstr "los procedimientos btree deben retornar integer" -#: gram.y:11574 -msgid "multiple ORDER BY clauses not allowed" -msgstr "no se permiten múltiples cláusulas ORDER BY" +#: commands/opclasscmds.c:1182 +msgid "hash procedures must have one argument" +msgstr "los procedimientos de hash deben tener un argumento" -#: gram.y:11585 -msgid "multiple OFFSET clauses not allowed" -msgstr "no se permiten múltiples cláusulas OFFSET" +#: commands/opclasscmds.c:1186 +msgid "hash procedures must return integer" +msgstr "los procedimientos de hash deben retornar integer" -#: gram.y:11594 -msgid "multiple LIMIT clauses not allowed" -msgstr "no se permiten múltiples cláusulas LIMIT" +#: commands/opclasscmds.c:1211 +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" -#: gram.y:11603 -msgid "multiple WITH clauses not allowed" -msgstr "no se permiten múltiples cláusulas WITH" +#: commands/opclasscmds.c:1237 +#, 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" -#: gram.y:11757 -msgid "OUT and INOUT arguments aren't allowed in TABLE functions" -msgstr "los argumentos OUT e INOUT no están permitidos en funciones TABLE" +#: commands/opclasscmds.c:1244 +#, 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" -#: scan.l:411 -msgid "unterminated /* comment" -msgstr "un comentario /* está inconcluso" +#: commands/opclasscmds.c:1293 +#, 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»" -#: scan.l:440 -msgid "unterminated bit string literal" -msgstr "una cadena de bits está inconclusa" +#: commands/opclasscmds.c:1406 +#, 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»" -#: scan.l:461 -msgid "unterminated hexadecimal string literal" -msgstr "una cadena hexadecimal está inconclusa" +#: commands/opclasscmds.c:1493 +#, 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»" -#: scan.l:511 -msgid "unsafe use of string constant with Unicode escapes" -msgstr "uso inseguro de literal de cadena con escapes Unicode" +#: commands/opclasscmds.c:1533 +#, 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»" -#: scan.l:512 +#: commands/opclasscmds.c:1618 +#, c-format msgid "" -"String constants with Unicode escapes cannot be used when " -"standard_conforming_strings is off." +"operator family \"%s\" does not exist for access method \"%s\", skipping" msgstr "" -"Los literales de cadena con escapes Unicode no pueden usarse cuando " -"standard_conforming_strings está desactivado." +"no existe la familia de operadores «%s» para el método de acceso «%s», " +"ignorando" -#: 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 "par sustituto (surrogate) Unicode no válido" +#: commands/opclasscmds.c:1778 +#, 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»" -#: scan.l:586 -msgid "invalid Unicode escape" -msgstr "valor de escape Unicode no válido" +#: commands/opclasscmds.c:1867 +#, 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»" -#: scan.l:587 -msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX." -msgstr "Los escapes Unicode deben ser \\uXXXX o \\UXXXXXXXX." +#: commands/extension.c:149 commands/extension.c:2689 +#, c-format +msgid "extension \"%s\" does not exist" +msgstr "no existe la extensión «%s»" -#: scan.l:598 -msgid "unsafe use of \\' in a string literal" -msgstr "uso inseguro de \\' en un literal de cadena" +#: commands/extension.c:248 commands/extension.c:257 commands/extension.c:269 +#: commands/extension.c:279 +#, c-format +msgid "invalid extension name: \"%s\"" +msgstr "nombre de extensión no válido: «%s»" -#: scan.l:599 -msgid "" -"Use '' to write quotes in strings. \\' is insecure in client-only encodings." +#: commands/extension.c:249 +msgid "Extension names must not be empty." +msgstr "Los nombres de extensión no deben ser vacíos." + +#: commands/extension.c:258 +msgid "Extension names must not contain \"--\"." +msgstr "Los nombres de extensión no deben contener «--»." + +#: commands/extension.c:270 +msgid "Extension names must not begin or end with \"-\"." +msgstr "Los nombres de extensión no deben empezar ni terminar con «-»." + +#: commands/extension.c:280 +msgid "Extension names must not contain directory separator characters." msgstr "" -"Use '' para escribir comillas en cadenas. \\' es inseguro en codificaciones " -"de sólo cliente." +"Los nombres de extensión no deben contener caracteres separadores de " +"directorio." -#: scan.l:629 -msgid "unterminated quoted string" -msgstr "una cadena de caracteres entre comillas está inconclusa" +#: commands/extension.c:295 commands/extension.c:304 commands/extension.c:313 +#: commands/extension.c:323 +#, c-format +msgid "invalid extension version name: \"%s\"" +msgstr "nombre de versión de extensión no válido: «%s»" -#: scan.l:674 -msgid "unterminated dollar-quoted string" -msgstr "una cadena separada por $ está inconclusa" +#: commands/extension.c:296 +msgid "Version names must not be empty." +msgstr "Los nombres de versión no deben ser vacíos." -#: scan.l:691 scan.l:703 scan.l:717 -msgid "zero-length delimited identifier" -msgstr "un identificador delimitado tiene largo cero" +#: commands/extension.c:305 +msgid "Version names must not contain \"--\"." +msgstr "Los nombres de versión no deben contener «--»." -#: scan.l:730 -msgid "unterminated quoted identifier" -msgstr "un identificador entre comillas está inconcluso" +#: commands/extension.c:314 +msgid "Version names must not begin or end with \"-\"." +msgstr "Los nombres de versión no deben empezar ni terminar con «-»." -#: scan.l:834 -msgid "operator too long" -msgstr "el operador es demasiado largo" +#: commands/extension.c:324 +msgid "Version names must not contain directory separator characters." +msgstr "" +"Los nombres de versión no deben contener caracteres separadores de " +"directorio." -#. translator: %s is typically the translation of "syntax error" -#: scan.l:992 +#: commands/extension.c:474 #, c-format -msgid "%s at end of input" -msgstr "%s al final de la entrada" +msgid "could not open extension control file \"%s\": %m" +msgstr "no se pudo abrir el archivo de control de extensión «%s»: %m" -#. translator: first %s is typically the translation of "syntax error" -#: scan.l:1000 +#: commands/extension.c:495 commands/extension.c:505 #, c-format -msgid "%s at or near \"%s\"" -msgstr "%s en o cerca de «%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" +msgid "parameter \"%s\" cannot be set in a secondary extension control file" 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" +"el parámetro «%s» no se puede cambiar en un archivo control secundario de " +"extensión" -#: scan.l:1189 scan.l:1325 -msgid "invalid Unicode escape value" -msgstr "valor de escape Unicode no válido" +#: commands/extension.c:544 +#, c-format +msgid "\"%s\" is not a valid encoding name" +msgstr "«%s» no es un nombre válido de codificación" -#: scan.l:1214 -msgid "invalid Unicode escape character" -msgstr "carácter de escape Unicode no válido" +#: commands/extension.c:558 +#, c-format +msgid "parameter \"%s\" must be a list of extension names" +msgstr "el parámetro «%s» debe ser una lista de nombres de extensión" -#: scan.l:1381 -msgid "nonstandard use of \\' in a string literal" -msgstr "uso no estandar de \\' en un literal de cadena" +#: commands/extension.c:565 +#, c-format +msgid "unrecognized parameter \"%s\" in file \"%s\"" +msgstr "parámetro no reconocido «%s» en el archivo «%s»" -#: scan.l:1382 -msgid "" -"Use '' to write quotes in strings, or use the escape string syntax (E'...')." +#: commands/extension.c:574 +msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true" msgstr "" -"Use '' para escribir comillas en cadenas, o use la sintaxis de escape de " -"cadenas (E'...')." - -#: scan.l:1391 -msgid "nonstandard use of \\\\ in a string literal" -msgstr "uso no estandar de \\\\ en un literal de cadena" +"el parámetro «schema» no puede ser especificado cuando «relocatable» es " +"verdadero" -#: scan.l:1392 -msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'." +#: commands/extension.c:726 +msgid "" +"transaction control statements are not allowed within an extension script" msgstr "" -"Use '' para escribir comillas en cadenas, o use la sintaxis de escape de " -"cadenas (E'\\\\')." +"las sentencias de control de transacción no están permitidos dentro de un " +"guión de transacción" -#: scan.l:1406 -msgid "nonstandard use of escape in a string literal" -msgstr "uso no estandar de escape en un literal de cadena" +#: commands/extension.c:794 +#, c-format +msgid "permission denied to create extension \"%s\"" +msgstr "se ha denegado el permiso para crear la extensión «%s»" -#: scan.l:1407 -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'." +#: commands/extension.c:796 +msgid "Must be superuser to create this extension." +msgstr "Debe ser superusuario para crear esta extensión." -#: port/win32/security.c:43 +#: commands/extension.c:800 #, c-format -msgid "could not open process token: error code %d\n" -msgstr "no se pudo abrir el token de proceso: código de error %d\n" +msgid "permission denied to update extension \"%s\"" +msgstr "se ha denegado el permiso para actualizar la extensión «%s»" -#: port/win32/security.c:63 +#: commands/extension.c:802 +msgid "Must be superuser to update this extension." +msgstr "Debe ser superusuario para actualizar esta extensión." + +#: commands/extension.c:1084 #, c-format -msgid "could not get SID for Administrators group: error code %d\n" +msgid "" +"extension \"%s\" has no update path from version \"%s\" to version \"%s\"" msgstr "" -"no se pudo obtener el SID del grupo Administrators: código de error %d\n" +"la extensión «%s» no tiene ruta de actualización desde la versión «%s» hasta " +"la versión «%s»" -#: port/win32/security.c:72 +#: commands/extension.c:1211 #, c-format -msgid "could not get SID for PowerUsers group: error code %d\n" -msgstr "no se pudo obtener el SID del grupo PowerUsers: código de error %d\n" +msgid "extension \"%s\" already exists, skipping" +msgstr "la extensión «%s» ya existe, ignorando" -#: port/win32/signal.c:189 +#: commands/extension.c:1218 #, c-format -msgid "could not create signal listener pipe for pid %d: error code %d" -msgstr "" -"no se pudo crear tubería para escuchar señales para el pid %d: código de " -"error %d" +msgid "extension \"%s\" already exists" +msgstr "la extensión «%s» ya existe" -#: port/win32/signal.c:269 port/win32/signal.c:301 +#: commands/extension.c:1229 +msgid "nested CREATE EXTENSION is not supported" +msgstr "los CREATE EXTENSION anidados no están soportados" + +#: commands/extension.c:1284 commands/extension.c:2749 +msgid "version to install must be specified" +msgstr "la versión a instalar debe ser especificada" + +#: commands/extension.c:1301 #, c-format -msgid "could not create signal listener pipe: error code %d; retrying\n" +msgid "FROM version must be different from installation target version \"%s\"" msgstr "" -"no se pudo crear tubería para escuchar señales: código de error %d; " -"reintentando\n" +"la versión FROM debe ser diferente de la versión destino de instalación «%s»" -#: port/win32/signal.c:312 +#: commands/extension.c:1356 #, c-format -msgid "could not create signal dispatch thread: error code %d\n" -msgstr "no se pudo crear thread de despacho de señales: código de error %d\n" +msgid "extension \"%s\" must be installed in schema \"%s\"" +msgstr "la extensión «%s» debe ser instalada en el esquema «%s»" -#: 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 "no se pudo crear el segmento de memoria compartida: %lu" +#: commands/extension.c:1399 commands/extension.c:1405 catalog/namespace.c:358 +#: catalog/namespace.c:2589 +msgid "no schema has been selected to create in" +msgstr "no se ha seleccionado ningún esquema dentro del cual crear" -#: port/win32_shmem.c:169 +#: commands/extension.c:1439 commands/extension.c:2890 #, 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 "required extension \"%s\" is not installed" +msgstr "la extensión requerida «%s» no está instalada" -#: port/win32_shmem.c:193 -msgid "pre-existing shared memory block is still in use" -msgstr "el bloque de memoria compartida preexistente aún está en uso" +#: commands/extension.c:1600 commands/extension.c:2488 +#: catalog/objectaddress.c:289 +msgid "extension name cannot be qualified" +msgstr "un nombre de extensión no puede ser calificado" -#: port/win32_shmem.c:194 -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." +#: commands/extension.c:1608 +#, c-format +msgid "extension \"%s\" does not exist, skipping" +msgstr "no existe la extensión «%s», ignorando" -#: port/win32_shmem.c:204 -msgid "Failed system call was DuplicateHandle." -msgstr "La llamada a sistema fallida fue DuplicateHandle." +#: commands/extension.c:1663 +#, 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" -#: port/win32_shmem.c:225 -msgid "Failed system call was MapViewOfFileEx." -msgstr "La llamada a sistema fallida fue MapViewOfFileEx." +#: commands/extension.c:2134 +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" -#: port/sysv_sema.c:114 port/pg_sema.c:114 +#: commands/extension.c:2146 #, c-format -msgid "could not create semaphores: %m" -msgstr "no se pudo crear semáforos: %m" +msgid "OID %u does not refer to a table" +msgstr "el OID %u no hace referencia a una tabla" -#: port/sysv_sema.c:115 port/pg_sema.c:115 +#: commands/extension.c:2151 #, c-format -msgid "Failed system call was semget(%lu, %d, 0%o)." -msgstr "La llamada a sistema fallida fue semget(%lu, %d, 0%o)." +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" -#: port/sysv_sema.c:119 port/pg_sema.c:119 +#: commands/extension.c:2515 #, 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." +"cannot move extension \"%s\" into schema \"%s\" because the extension " +"contains the schema" msgstr "" -"Este error *no* significa que se haya quedado sin espacio en disco.\n" -"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 (actualmente %d).\n" -"La documentación de PostgreSQL contiene más información acerca de cómo " -"configurar su sistema para PostgreSQL." +"no se puede mover la extensión «%s» al esquema «%s» porque la extensión " +"contiene al esquema" -#: port/sysv_sema.c:148 port/pg_sema.c:148 +#: commands/extension.c:2555 commands/extension.c:2618 #, 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." +msgid "extension \"%s\" does not support SET SCHEMA" +msgstr "la extensión «%s» no soporta SET SCHEMA" -#: port/sysv_shmem.c:147 port/pg_shmem.c:147 +#: commands/extension.c:2620 #, c-format -msgid "could not create shared memory segment: %m" -msgstr "no se pudo crear el segmento de memoria compartida: %m" +msgid "%s is not in the extension's schema \"%s\"" +msgstr "%s no está en el esquema de la extensión, «%s»" -#: 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 "La llamada a sistema fallida fue shmget(key=%lu, size=%lu, 0%o)." +#: commands/extension.c:2669 +msgid "nested ALTER EXTENSION is not supported" +msgstr "los ALTER EXTENSION anidados no están soportados" -#: port/sysv_shmem.c:152 port/pg_shmem.c:152 +#: commands/extension.c:2760 #, 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_buffers " -"parameter (currently %d) and/or its max_connections parameter (currently " -"%d).\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 "" -"Este error normalmente significa que una petición de PostgreSQL para obtener " -"un segmento de memoria compartida excedió el parámetro SHMMAX del kernel. " -"Puede reducir el tamaño de la petición o reconfigurar el kernel con un " -"SHMMAX superior. Para reducir el tamaño de la petición (actualmente %lu " -"bytes), reduzca el parámetro de PostgreSQL shared_buffers (actualmente %d) y/" -"o el parámetro max_connections (actualmente %d).\n" -"Si el tamaño de la petición ya es pequeño, es posible que sea inferior al " -"parámetro SHMMIN del kernel, en cuyo caso se requiere alzar el tamaño de la " -"petición o disminuir SHMMIN.\n" -"La documentación de PostgreSQL contiene más información acerca de la " -"configuración de memoria compartida." +msgid "version \"%s\" of extension \"%s\" is already installed" +msgstr "la versión «%s» de la extensión «%s» ya está instalada" -#: port/sysv_shmem.c:165 port/pg_shmem.c:165 +#: commands/extension.c:2983 catalog/pg_depend.c:164 #, 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_buffers parameter (currently %d) and/or " -"its max_connections parameter (currently %d).\n" -"The PostgreSQL documentation contains more information about shared memory " -"configuration." -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), o excedía el valor SHMALL del kernel. Para reducir el " -"tamaño de la petición (actualmente %lu bytes), reduzca el parámetro de " -"PostgreSQL shared_buffers (actualmente %d) y/o el parámetro max_connections " -"(actualmente %d).\n" -"La documentación de PostgreSQL contiene más información acerca de la " -"configuración de memoria compartida." +msgid "%s is already a member of extension \"%s\"" +msgstr "«%s» ya es un miembro de la extensión «%s»" -#: port/sysv_shmem.c:176 port/pg_shmem.c:176 +#: commands/extension.c:2995 #, 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), by reducing its shared_buffers parameter (currently " -"%d) and/or its max_connections parameter (currently %d).\n" -"The PostgreSQL documentation contains more information about shared memory " -"configuration." +"cannot add schema \"%s\" to extension \"%s\" because the schema contains the " +"extension" 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. Si no puede incrementar el " -"límite de memoria compartida, reduzca el tamaño de petición de PostgreSQL " -"(actualmente %lu bytes) reduciendo el parámetro shared_buffers (actualmente " -"%d) y/o el parámetro max_connections (actualmente %d).\n" -"La documentación de PostgreSQL contiene más información acerca de la " -"configuración de memoria compartida." +"no se puede agregar el esquema «%s» a la extensión «%s» porque el esquema " +"contiene la extensión" -#: port/sysv_shmem.c:431 port/pg_shmem.c:431 +#: commands/extension.c:3013 #, c-format -msgid "could not stat data directory \"%s\": %m" -msgstr "no se pudo verificar el directorio de datos «%s»: %m" +msgid "%s is not a member of extension \"%s\"" +msgstr "%s no es un miembro de la extensión «%s»" -#: port/win32_sema.c:94 +#: commands/collationcmds.c:81 #, c-format -msgid "could not create semaphore: error code %d" -msgstr "no se pudo crear semáforo: código de error %d" +msgid "collation attribute \"%s\" not recognized" +msgstr "el atributo de ordenamiento (collation) «%s» no es reconocido" -#: port/win32_sema.c:161 -#, c-format -msgid "could not lock semaphore: error code %d" -msgstr "no se pudo bloquear semáforo: código de error %d" +#: commands/collationcmds.c:126 +msgid "parameter \"lc_collate\" must be specified" +msgstr "debe especificarse el parámetro «lc_collate»" -#: port/win32_sema.c:174 +#: commands/collationcmds.c:131 +msgid "parameter \"lc_ctype\" must be specified" +msgstr "debe especificarse el parámetro «lc_ctype»" + +#: commands/collationcmds.c:177 #, c-format -msgid "could not unlock semaphore: error code %d" -msgstr "no se pudo desbloquear semáforo: código de error %d" +msgid "collation \"%s\" does not exist, skipping" +msgstr "no existe el ordenamiento (collation) «%s», ignorando" -#: port/win32_sema.c:203 +#: commands/collationcmds.c:237 commands/collationcmds.c:416 #, c-format -msgid "could not try-lock semaphore: error code %d" +msgid "collation \"%s\" for encoding \"%s\" already exists in schema \"%s\"" msgstr "" -"no se pudo intentar-bloquear (try-lock) el semáforo: código de error %d" +"ya existe un ordenamiento (collation) llamado «%s» para la codificación «%s» " +"en el esquema «%s»" -#: postmaster/autovacuum.c:359 +#: commands/collationcmds.c:249 commands/collationcmds.c:428 #, c-format -msgid "could not fork autovacuum launcher process: %m" -msgstr "no se pudo iniciar el lanzador autovacuum: %m" - -#: postmaster/autovacuum.c:404 -msgid "autovacuum launcher started" -msgstr "lanzador de autovacuum iniciado" - -#: postmaster/autovacuum.c:760 -msgid "autovacuum launcher shutting down" -msgstr "apagando lanzador de autovacuum" +msgid "collation \"%s\" already exists in schema \"%s\"" +msgstr "ya existe un ordenamiento llamado «%s» en el esquema «%s»" -#: postmaster/autovacuum.c:1394 +#: commands/comment.c:97 commands/seclabel.c:113 #, c-format -msgid "could not fork autovacuum worker process: %m" -msgstr "no se pudo lanzar el proceso «autovacuum worker»: %m" +msgid "\"%s\" is not a table, view, composite type, or foreign table" +msgstr "«%s» no es una tabla, vista, tipo compuesto, o tabla foránea" -#: postmaster/autovacuum.c:1595 +#: 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 "autovacuum: processing database \"%s\"" -msgstr "autovacuum: procesando la base de datos «%s»" +msgid "could not create directory \"%s\": %m" +msgstr "no se pudo crear el directorio «%s»: %m" -#: postmaster/autovacuum.c:1998 +#: commands/tablespace.c:205 #, 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»" +msgid "could not stat directory \"%s\": %m" +msgstr "no se pudo verificar el directorio «%s»: %m" -#: postmaster/autovacuum.c:2010 +#: commands/tablespace.c:214 #, 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»" +msgid "\"%s\" exists but is not a directory" +msgstr "«%s» existe pero no es un directorio" -#: postmaster/autovacuum.c:2280 +#: commands/tablespace.c:244 #, c-format -msgid "automatic vacuum of table \"%s.%s.%s\"" -msgstr "vacuum automático de la tabla «%s.%s.%s»" +msgid "permission denied to create tablespace \"%s\"" +msgstr "se ha denegado el permiso para crear el tablespace «%s»" -#: postmaster/autovacuum.c:2283 -#, c-format -msgid "automatic analyze of table \"%s.%s.%s\"" -msgstr "análisis automático de la tabla «%s.%s.%s»" +#: commands/tablespace.c:246 +msgid "Must be superuser to create a tablespace." +msgstr "Debe ser superusuario para crear tablespaces." -#: postmaster/autovacuum.c:2761 -msgid "autovacuum not started because of misconfiguration" -msgstr "autovacuum no fue iniciado debido a un error de configuración" +#: commands/tablespace.c:262 +msgid "tablespace location cannot contain single quotes" +msgstr "la ruta del tablespace no puede contener comillas simples" -#: postmaster/autovacuum.c:2762 -msgid "Enable the \"track_counts\" option." -msgstr "Active la opción «track_counts»." +#: commands/tablespace.c:272 +msgid "tablespace location must be an absolute path" +msgstr "la ubicación del tablespace debe ser una ruta absoluta" -#: postmaster/bgwriter.c:472 +#: commands/tablespace.c:283 #, c-format -msgid "checkpoints are occurring too frequently (%d second apart)" -msgid_plural "checkpoints are occurring too frequently (%d seconds apart)" -msgstr[0] "" -"los puntos de control están ocurriendo con demasiada frecuencia (cada %d " -"segundo)" -msgstr[1] "" -"los puntos de control están ocurriendo con demasiada frecuencia (cada %d " -"segundos)" - -#: postmaster/bgwriter.c:476 -msgid "" -"Consider increasing the configuration parameter \"checkpoint_segments\"." -msgstr "" -"Considere incrementar el parámetro de configuración «checkpoint_segments»." +msgid "tablespace location \"%s\" is too long" +msgstr "la ruta «%s» del tablespace es demasiado larga" -#: postmaster/bgwriter.c:588 +#: commands/tablespace.c:293 commands/tablespace.c:853 #, c-format -msgid "transaction log switch forced (archive_timeout=%d)" -msgstr "cambio forzado de registro de transacción (archive_timeout=%d)" - -#: postmaster/bgwriter.c:1044 -msgid "checkpoint request failed" -msgstr "falló la petición de punto de control" +msgid "unacceptable tablespace name \"%s\"" +msgstr "el nombre de tablespace «%s» es inaceptable" -#: postmaster/bgwriter.c:1045 -msgid "Consult recent messages in the server log for details." -msgstr "" -"Vea los mensajes recientes en el registro del servidor para obtener más " -"detalles." +#: commands/tablespace.c:295 commands/tablespace.c:854 +msgid "The prefix \"pg_\" is reserved for system tablespaces." +msgstr "El prefijo «pg_» está reservado para tablespaces del sistema." -#: postmaster/pgarch.c:158 +#: commands/tablespace.c:305 commands/tablespace.c:866 #, c-format -msgid "could not fork archiver: %m" -msgstr "no se pudo lanzar el proceso archivador: %m" +msgid "tablespace \"%s\" already exists" +msgstr "el tablespace «%s» ya existe" -#: postmaster/pgarch.c:450 -msgid "archive_mode enabled, yet archive_command is not set" -msgstr "archive_mode activado, pero archive_command no está definido" +#: commands/tablespace.c:377 commands/tablespace.c:529 +#: replication/basebackup.c:152 replication/basebackup.c:734 +msgid "tablespaces are not supported on this platform" +msgstr "tablespaces no están soportados en esta plataforma" -#: postmaster/pgarch.c:465 +#: commands/tablespace.c:415 commands/tablespace.c:837 +#: commands/tablespace.c:904 commands/tablespace.c:1009 +#: commands/tablespace.c:1075 commands/tablespace.c:1213 +#: commands/tablespace.c:1413 #, c-format -msgid "transaction log file \"%s\" could not be archived: too many failures" -msgstr "" -"el archivo de transacción «%s» no pudo ser archivado: demasiadas fallas" +msgid "tablespace \"%s\" does not exist" +msgstr "no existe el tablespace «%s»" -#: postmaster/pgarch.c:568 +#: commands/tablespace.c:421 #, c-format -msgid "archive command failed with exit code %d" -msgstr "la orden de archivado falló con código de retorno %d" +msgid "tablespace \"%s\" does not exist, skipping" +msgstr "el tablespace «%s» no existe, ignorando" -#: postmaster/pgarch.c:570 postmaster/pgarch.c:580 postmaster/pgarch.c:587 -#: postmaster/pgarch.c:593 postmaster/pgarch.c:602 +#: commands/tablespace.c:486 #, c-format -msgid "The failed archive command was: %s" -msgstr "La orden fallida era: «%s»" +msgid "tablespace \"%s\" is not empty" +msgstr "el tablespace «%s» no está vacío" -#: postmaster/pgarch.c:577 +#: commands/tablespace.c:560 #, c-format -msgid "archive command was terminated by exception 0x%X" -msgstr "la orden de archivado fue terminada por una excepción 0x%X" +msgid "directory \"%s\" does not exist" +msgstr "no existe el directorio «%s»" -#: postmaster/pgarch.c:579 postmaster/postmaster.c:2840 -msgid "" -"See C include file \"ntstatus.h\" for a description of the hexadecimal value." +#: commands/tablespace.c:561 +msgid "Create this directory for the tablespace before restarting the server." msgstr "" -"Vea el archivo «ntstatus.h» para una descripción del valor hexadecimal." +"Cree este directorio para el tablespace antes de reiniciar el servidor." -#: postmaster/pgarch.c:584 +#: commands/tablespace.c:566 #, c-format -msgid "archive command was terminated by signal %d: %s" -msgstr "la orden de archivado fue terminada por una señal %d: %s" +msgid "could not set permissions on directory \"%s\": %m" +msgstr "no se pudo definir los permisos del directorio «%s»: %m" -#: postmaster/pgarch.c:591 +#: commands/tablespace.c:598 #, c-format -msgid "archive command was terminated by signal %d" -msgstr "la orden de archivado fue terminada por una señal %d" +msgid "directory \"%s\" already in use as a tablespace" +msgstr "el directorio «%s» ya está siendo usado como tablespace" -#: postmaster/pgarch.c:600 +#: commands/tablespace.c:613 commands/tablespace.c:774 #, c-format -msgid "archive command exited with unrecognized status %d" -msgstr "la orden de archivado fue terminada con código no reconocido %d" +msgid "could not remove symbolic link \"%s\": %m" +msgstr "no se pudo eliminar el enlace simbólico «%s»: %m" -#: postmaster/pgarch.c:612 +#: commands/tablespace.c:623 #, c-format -msgid "archived transaction log file \"%s\"" -msgstr "el archivo de registro «%s» ha sido archivado" +msgid "could not create symbolic link \"%s\": %m" +msgstr "no se pudo crear el enlace simbólico «%s»: %m" -#: postmaster/pgarch.c:661 +#: commands/tablespace.c:729 commands/tablespace.c:742 +#: commands/tablespace.c:766 #, c-format -msgid "could not open archive status directory \"%s\": %m" -msgstr "no se pudo abrir el directorio de estado de archivado «%s»: %m" +msgid "could not remove directory \"%s\": %m" +msgstr "no se pudo eliminar el directorio «%s»: %m" -#: postmaster/pgstat.c:328 +#: commands/tablespace.c:1080 #, c-format -msgid "could not resolve \"localhost\": %s" -msgstr "no se pudo resolver «localhost»: %s" +msgid "Tablespace \"%s\" does not exist." +msgstr "No existe el tablespace «%s»." -#: postmaster/pgstat.c:351 -msgid "trying another address for the statistics collector" -msgstr "intentando otra dirección para el recolector de estadísticas" - -#: postmaster/pgstat.c:360 +#: commands/tablespace.c:1512 #, 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" +msgid "directories for tablespace %u could not be removed" +msgstr "algunos directorios para el tablespace %u no pudieron eliminarse" -#: postmaster/pgstat.c:372 -#, 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" +#: commands/tablespace.c:1514 +msgid "You can remove the directories manually if necessary." +msgstr "Puede eliminar los directorios manualmente, si es necesario." -#: postmaster/pgstat.c:383 +#: commands/schemacmds.c:82 commands/schemacmds.c:275 #, 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" +msgid "unacceptable schema name \"%s\"" +msgstr "el nombre de schema «%s» es inaceptable" -#: postmaster/pgstat.c:399 -#, 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" +#: commands/schemacmds.c:83 commands/schemacmds.c:276 +msgid "The prefix \"pg_\" is reserved for system schemas." +msgstr "El prefijo «pg_» está reservado para esquemas del sistema." -#: postmaster/pgstat.c:420 -#, 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" +#: commands/schemacmds.c:178 catalog/objectaddress.c:298 +msgid "schema name cannot be qualified" +msgstr "un nombre de esquema no puede ser calificado" -#: postmaster/pgstat.c:446 postmaster/pgstat.c:2909 +#: commands/schemacmds.c:186 #, c-format -msgid "select() failed in statistics collector: %m" -msgstr "select() falló en el recolector de estadísticas: %m" +msgid "schema \"%s\" does not exist, skipping" +msgstr "el esquema «%s» no existe, ignorando" -#: postmaster/pgstat.c:461 -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" +#: commands/schemacmds.c:253 commands/schemacmds.c:322 +#: catalog/namespace.c:2610 catalog/namespace.c:3599 catalog/namespace.c:3602 +#, c-format +msgid "schema \"%s\" does not exist" +msgstr "no existe el esquema «%s»" -#: postmaster/pgstat.c:476 +#: commands/schemacmds.c:259 catalog/pg_namespace.c:60 #, 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" +msgid "schema \"%s\" already exists" +msgstr "ya existe el esquema «%s»" -#: postmaster/pgstat.c:486 -msgid "incorrect test message transmission on socket for statistics collector" +#: commands/seclabel.c:58 +msgid "no security label providers have been loaded" +msgstr "no se ha cargado ningún proveedor de etiquetas de seguridad" + +#: commands/seclabel.c:62 +msgid "" +"must specify provider when multiple security label providers have been loaded" msgstr "" -"transmisión del mensaje de prueba incorrecta en el socket del recolector de " -"estadísticas" +"debe especificar un proveedor de etiquetas de seguridad cuando más de uno ha " +"sido cargados" -#: postmaster/pgstat.c:509 +#: commands/seclabel.c:80 #, 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" +msgid "security label provider \"%s\" is not loaded" +msgstr "el proveedor de etiquetas de seguridad «%s» no está cargado" -#: postmaster/pgstat.c:519 -msgid "disabling statistics collector for lack of working socket" -msgstr "desactivando el recolector de estadísticas por falla del socket" +#: commands/portalcmds.c:61 commands/portalcmds.c:160 +#: commands/portalcmds.c:212 +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:415 +msgid "could not reposition held cursor" +msgstr "no se pudo reposicionar cursor abierto" -#: postmaster/pgstat.c:621 +#: commands/aggregatecmds.c:103 #, c-format -msgid "could not fork statistics collector: %m" -msgstr "no se pudo crear el proceso para el recolector de estadísticas: %m" +msgid "aggregate attribute \"%s\" not recognized" +msgstr "el atributo de la función de agregación «%s» no es reconocido" -#: postmaster/pgstat.c:1151 postmaster/pgstat.c:1175 postmaster/pgstat.c:1206 -msgid "must be superuser to reset statistics counters" +#: commands/aggregatecmds.c:113 +msgid "aggregate stype must be specified" msgstr "" -"debe ser superusuario para reinicializar los contadores de estadísticas" +"debe especificarse el tipo de transición (stype) de la función de agregación" -#: postmaster/pgstat.c:1182 -#, c-format -msgid "unrecognized reset target: \"%s\"" -msgstr "destino de reset no reconocido: «%s»" +#: commands/aggregatecmds.c:117 +msgid "aggregate sfunc must be specified" +msgstr "" +"debe especificarse la función de transición (sfunc) de la función de " +"agregación" -#: postmaster/pgstat.c:1183 -msgid "Target must be \"bgwriter\"." -msgstr "El destino debe ser «bgwriter»." +#: commands/aggregatecmds.c:134 +msgid "aggregate input type must be specified" +msgstr "debe especificarse el tipo de entrada de la función de agregación" -#: postmaster/pgstat.c:2888 -#, c-format -msgid "poll() failed in statistics collector: %m" -msgstr "poll() falló en el recolector de estadísticas: %m" +#: commands/aggregatecmds.c:159 +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" -#: postmaster/pgstat.c:2933 +#: commands/aggregatecmds.c:191 #, c-format -msgid "could not read statistics message: %m" -msgstr "no se pudo leer un mensaje de estadísticas: %m" +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" -#: postmaster/pgstat.c:3190 +#: commands/aggregatecmds.c:230 #, c-format -msgid "could not open temporary statistics file \"%s\": %m" -msgstr "no se pudo abrir el archivo temporal de estadísticas «%s»: %m" +msgid "aggregate %s(%s) does not exist, skipping" +msgstr "la función de agregación %s(%s) no existe, ignorando" -#: postmaster/pgstat.c:3262 -#, c-format -msgid "could not write temporary statistics file \"%s\": %m" -msgstr "no se pudo escribir el archivo temporal de estadísticas «%s»: %m" +#: commands/user.c:143 +msgid "SYSID can no longer be specified" +msgstr "SYSID ya no puede ser especificado" -#: postmaster/pgstat.c:3271 -#, c-format -msgid "could not close temporary statistics file \"%s\": %m" -msgstr "no se pudo cerrar el archivo temporal de estadísticas «%s»: %m" +#: commands/user.c:284 +msgid "must be superuser to create superusers" +msgstr "debe ser superusuario para crear superusuarios" -#: postmaster/pgstat.c:3279 -#, 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" +#: commands/user.c:291 +msgid "must be superuser to create replication users" +msgstr "debe ser superusuario para crear usuarios de replicación" + +#: commands/user.c:298 +msgid "permission denied to create role" +msgstr "se ha denegado el permiso para crear el rol" -#: postmaster/pgstat.c:3379 postmaster/pgstat.c:3608 +#: commands/user.c:305 commands/user.c:1087 #, c-format -msgid "could not open statistics file \"%s\": %m" -msgstr "no se pudo abrir el archivo de estadísticas «%s»: %m" +msgid "role name \"%s\" is reserved" +msgstr "el nombre de rol «%s» está reservado" -#: postmaster/pgstat.c:3391 postmaster/pgstat.c:3401 postmaster/pgstat.c:3423 -#: postmaster/pgstat.c:3438 postmaster/pgstat.c:3501 postmaster/pgstat.c:3519 -#: postmaster/pgstat.c:3535 postmaster/pgstat.c:3553 postmaster/pgstat.c:3569 -#: postmaster/pgstat.c:3620 postmaster/pgstat.c:3631 +#: commands/user.c:318 commands/user.c:1081 #, c-format -msgid "corrupted statistics file \"%s\"" -msgstr "el archivo de estadísticas «%s» está corrupto" +msgid "role \"%s\" already exists" +msgstr "el rol «%s» ya existe" -#: postmaster/pgstat.c:3925 -msgid "database hash table corrupted during cleanup --- abort" -msgstr "" -"el hash de bases de datos se corrompió durante la finalización; abortando" +#: commands/user.c:636 commands/user.c:842 commands/user.c:1321 +#: commands/user.c:1458 +msgid "must be superuser to alter superusers" +msgstr "debe ser superusuario para alterar superusuarios" -#: postmaster/postmaster.c:566 -#, c-format -msgid "%s: invalid argument for option -f: \"%s\"\n" -msgstr "%s: argumento no válido para la opción -f: «%s»\n" +#: commands/user.c:643 +msgid "must be superuser to alter replication users" +msgstr "debe ser superusuario para alterar usuarios de replicación" -#: postmaster/postmaster.c:652 -#, c-format -msgid "%s: invalid argument for option -t: \"%s\"\n" -msgstr "%s: argumento no válido para la opción -t: «%s»\n" +#: commands/user.c:659 commands/user.c:850 +msgid "permission denied" +msgstr "permiso denegado" -#: postmaster/postmaster.c:703 -#, c-format -msgid "%s: invalid argument: \"%s\"\n" -msgstr "%s: argumento no válido: «%s»\n" +#: commands/user.c:878 +msgid "permission denied to drop role" +msgstr "se ha denegado el permiso para eliminar el rol" -#: postmaster/postmaster.c:728 +#: commands/user.c:910 #, 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" +msgid "role \"%s\" does not exist, skipping" +msgstr "el rol «%s» no existe, ignorando" -#: postmaster/postmaster.c:733 -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»" +#: commands/user.c:922 commands/user.c:926 +msgid "current user cannot be dropped" +msgstr "el usuario activo no puede ser eliminado" -#: postmaster/postmaster.c:736 -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»" +#: commands/user.c:930 +msgid "session user cannot be dropped" +msgstr "no se puede eliminar un usuario de la sesión" + +#: commands/user.c:941 +msgid "must be superuser to drop superusers" +msgstr "debe ser superusuario para eliminar superusuarios" -#: postmaster/postmaster.c:744 +#: commands/user.c:954 #, 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" +msgid "role \"%s\" cannot be dropped because some objects depend on it" +msgstr "no se puede eliminar el rol «%s» porque otros objetos dependen de él" -#: postmaster/postmaster.c:850 -msgid "invalid list syntax for \"listen_addresses\"" -msgstr "la sintaxis de lista no es válida para el parámetro «listen_addresses»" +#: commands/user.c:1071 +msgid "session user cannot be renamed" +msgstr "no se puede cambiar el nombre a un usuario de la sesión" -#: postmaster/postmaster.c:871 -#, c-format -msgid "could not create listen socket for \"%s\"" -msgstr "no se pudo crear el socket de escucha para «%s»" +#: commands/user.c:1075 +msgid "current user cannot be renamed" +msgstr "no se puede cambiar el nombre al usuario activo" -#: postmaster/postmaster.c:877 -msgid "could not create any TCP/IP sockets" -msgstr "no se pudo crear ningún socket TCP/IP" +#: commands/user.c:1098 +msgid "must be superuser to rename superusers" +msgstr "debe ser superusuario para cambiar el nombre a superusuarios" -#: postmaster/postmaster.c:928 -msgid "could not create Unix-domain socket" -msgstr "no se pudo crear el socket de dominio Unix" +#: commands/user.c:1105 +msgid "permission denied to rename role" +msgstr "se ha denegado el permiso para cambiar el nombre al rol" -#: postmaster/postmaster.c:936 -msgid "no socket created for listening" -msgstr "no se creó el socket de atención" +#: commands/user.c:1126 +msgid "MD5 password cleared because of role rename" +msgstr "la contraseña MD5 fue borrada debido al cambio de nombre del rol" -#: postmaster/postmaster.c:962 -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" +#: commands/user.c:1182 +msgid "column names cannot be included in GRANT/REVOKE ROLE" +msgstr "los nombres de columna no pueden ser incluidos en GRANT/REVOKE ROLE" + +#: commands/user.c:1220 +msgid "permission denied to drop objects" +msgstr "se ha denegado el permiso para eliminar objetos" + +#: commands/user.c:1247 commands/user.c:1256 +msgid "permission denied to reassign objects" +msgstr "se ha denegado el permiso para reasignar objetos" -#: postmaster/postmaster.c:1006 +#: commands/user.c:1329 commands/user.c:1466 #, 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" +msgid "must have admin option on role \"%s\"" +msgstr "debe tener opción de admin en rol «%s»" -#: postmaster/postmaster.c:1074 utils/init/postinit.c:197 -msgid "could not load pg_hba.conf" -msgstr "no se pudo cargar pg_hba.conf" +#: commands/user.c:1337 +msgid "must be superuser to set grantor" +msgstr "debe ser superusuario para especificar el cedente (grantor)" -#: postmaster/postmaster.c:1121 +#: commands/user.c:1362 #, c-format -msgid "%s: could not locate matching postgres executable" -msgstr "%s: no se pudo localizar el ejecutable postgres correspondiente" +msgid "role \"%s\" is a member of role \"%s\"" +msgstr "el rol «%s» es un miembro del rol «%s»" -#: postmaster/postmaster.c:1144 utils/misc/tzparser.c:347 +#: commands/user.c:1377 #, 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." +msgid "role \"%s\" is already a member of role \"%s\"" +msgstr "el rol «%s» ya es un miembro del rol «%s»" -#: postmaster/postmaster.c:1172 +#: commands/user.c:1488 #, c-format -msgid "data directory \"%s\" does not exist" -msgstr "no existe el directorio de datos «%s»" +msgid "role \"%s\" is not a member of role \"%s\"" +msgstr "el rol «%s» no es un miembro del rol «%s»" -#: postmaster/postmaster.c:1177 +#: commands/foreigncmds.c:135 commands/foreigncmds.c:144 #, c-format -msgid "could not read permissions of directory \"%s\": %m" -msgstr "no se pudo obtener los permisos del directorio «%s»: %m" +msgid "option \"%s\" not found" +msgstr "opción «%s» no encontrada" -#: postmaster/postmaster.c:1185 +#: commands/foreigncmds.c:154 #, c-format -msgid "specified data directory \"%s\" is not a directory" -msgstr "el directorio de datos especificado «%s» no es un directorio" +msgid "option \"%s\" provided more than once" +msgstr "la opción «%s» fue especificada más de una vez" -#: postmaster/postmaster.c:1201 +#: commands/foreigncmds.c:221 commands/foreigncmds.c:229 #, c-format -msgid "data directory \"%s\" has wrong ownership" -msgstr "el directorio de datos «%s» tiene dueño equivocado" +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»" -#: postmaster/postmaster.c:1203 -msgid "The server must be started by the user that owns the data directory." +#: commands/foreigncmds.c:223 +msgid "Must be superuser to change owner of a foreign-data wrapper." msgstr "" -"El servidor debe ser iniciado por el usuario dueño del directorio de datos." +"Debe ser superusuario para cambiar el dueño de un conector de datos externos." -#: postmaster/postmaster.c:1223 -#, c-format -msgid "data directory \"%s\" has group or world access" -msgstr "el directorio de datos «%s» tiene acceso para el grupo u otros" +#: commands/foreigncmds.c:231 +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." -#: postmaster/postmaster.c:1225 -msgid "Permissions should be u=rwx (0700)." -msgstr "Los permisos deberían ser u=rwx (0700)." +#: commands/foreigncmds.c:265 commands/foreigncmds.c:636 +#: commands/foreigncmds.c:784 foreign/foreign.c:524 +#, c-format +msgid "foreign-data wrapper \"%s\" does not exist" +msgstr "no existe el conector de datos externos «%s»" -#: postmaster/postmaster.c:1236 +#: commands/foreigncmds.c:292 catalog/aclchk.c:3873 catalog/aclchk.c:4555 #, 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: no se pudo encontrar el sistema de base de datos.\n" -"Se esperaba encontrar en el directorio PGDATA «%s»,\n" -"pero no se pudo abrir el archivo «%s»: %s\n" - -#: postmaster/postmaster.c:1272 -#, c-format -msgid "%s: could not open file \"%s\": %s\n" -msgstr "%s: no se pudo abrir el archivo «%s»: %s\n" +msgid "foreign-data wrapper with OID %u does not exist" +msgstr "no existe el conector de datos externos con OID %u" -#: postmaster/postmaster.c:1279 +#: commands/foreigncmds.c:366 commands/foreigncmds.c:962 +#: commands/foreigncmds.c:1050 commands/foreigncmds.c:1334 +#: foreign/foreign.c:544 #, c-format -msgid "%s: could not open log file \"%s/%s\": %s\n" -msgstr "%s: no se pudo abrir archivo de log «%s/%s»: %s\n" +msgid "server \"%s\" does not exist" +msgstr "no existe el servidor «%s»" -#: postmaster/postmaster.c:1290 +#: commands/foreigncmds.c:391 catalog/aclchk.c:3934 catalog/aclchk.c:4582 #, c-format -msgid "%s: could not fork background process: %s\n" -msgstr "%s: no se pudo lanzar el proceso en segundo plano: %s\n" +msgid "foreign server with OID %u does not exist" +msgstr "no existe el servidor foráneo con OID %u" -#: postmaster/postmaster.c:1312 +#: commands/foreigncmds.c:418 #, c-format -msgid "%s: could not dissociate from controlling TTY: %s\n" -msgstr "%s: no se pudo disociar del TTY de control: %s\n" +msgid "function %s must return type \"fdw_handler\"" +msgstr "la función %s debe retornar tipo «fdw_handler»" -#: postmaster/postmaster.c:1407 +#: commands/foreigncmds.c:513 #, c-format -msgid "select() failed in postmaster: %m" -msgstr "select() falló en postmaster: %m" - -#: postmaster/postmaster.c:1564 postmaster/postmaster.c:1595 -msgid "incomplete startup packet" -msgstr "el paquete de inicio está incompleto" +msgid "permission denied to create foreign-data wrapper \"%s\"" +msgstr "" +"se ha denegado el permiso para crear el conector de datos externos «%s»" -#: postmaster/postmaster.c:1576 -msgid "invalid length of startup packet" -msgstr "el de paquete de inicio tiene largo incorrecto" +#: commands/foreigncmds.c:515 +msgid "Must be superuser to create a foreign-data wrapper." +msgstr "Debe ser superusuario para crear un conector de datos externos." -#: postmaster/postmaster.c:1633 +#: commands/foreigncmds.c:526 #, c-format -msgid "failed to send SSL negotiation response: %m" -msgstr "no se pudo enviar la respuesta de negociación SSL: %m" +msgid "foreign-data wrapper \"%s\" already exists" +msgstr "el conector de datos externos «%s» ya existe" -#: postmaster/postmaster.c:1662 +#: commands/foreigncmds.c:626 #, 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" +msgid "permission denied to alter foreign-data wrapper \"%s\"" +msgstr "permiso denegado para cambiar el conector de datos externos «%s»" -#: postmaster/postmaster.c:1713 -msgid "invalid value for boolean option \"replication\"" -msgstr "valor no válido para la opción booleana «replication»" +#: commands/foreigncmds.c:628 +msgid "Must be superuser to alter a foreign-data wrapper." +msgstr "Debe ser superusuario para alterar un conector de datos externos." -#: postmaster/postmaster.c:1733 -msgid "invalid startup packet layout: expected terminator as last byte" +#: commands/foreigncmds.c:659 +msgid "" +"changing the foreign-data wrapper handler can change behavior of existing " +"foreign tables" msgstr "" -"el paquete de inicio no es válido: se esperaba un terminador en el último " -"byte" - -#: postmaster/postmaster.c:1761 -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:1818 -msgid "the database system is starting up" -msgstr "el sistema de base de datos está iniciándose" - -#: postmaster/postmaster.c:1823 -msgid "the database system is shutting down" -msgstr "el sistema de base de datos está apagándose" - -#: postmaster/postmaster.c:1828 -msgid "the database system is in recovery mode" -msgstr "el sistema de base de datos está en modo de recuperación" +"al cambiar el manejador del conector de datos externos, el comportamiento de " +"las tablas foráneas existentes puede cambiar" -#: postmaster/postmaster.c:1895 -#, 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" +#: commands/foreigncmds.c:673 +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" -#: postmaster/postmaster.c:1903 +#: commands/foreigncmds.c:775 #, c-format -msgid "PID %d in cancel request did not match any process" +msgid "permission denied to drop foreign-data wrapper \"%s\"" msgstr "" -"el PID %d en la petición de cancelación no coincidió con ningún proceso" - -#: postmaster/postmaster.c:2109 -msgid "received SIGHUP, reloading configuration files" -msgstr "se recibió SIGHUP, releyendo el archivo de configuración" - -#: postmaster/postmaster.c:2132 -msgid "pg_hba.conf not reloaded" -msgstr "pg_hba.conf no ha sido recargado" - -#: postmaster/postmaster.c:2175 -msgid "received smart shutdown request" -msgstr "se recibió petición de apagado inteligente" - -#: postmaster/postmaster.c:2222 -msgid "received fast shutdown request" -msgstr "se recibió petición de apagado rápido" - -#: postmaster/postmaster.c:2240 -msgid "aborting any active transactions" -msgstr "abortando transacciones activas" - -#: postmaster/postmaster.c:2269 -msgid "received immediate shutdown request" -msgstr "se recibió petición de apagado inmediato" +"se ha denegado el permiso para eliminar el conector de datos externos «%s»" -#: postmaster/postmaster.c:2345 postmaster/postmaster.c:2373 -msgid "startup process" -msgstr "proceso de inicio" +#: commands/foreigncmds.c:777 +msgid "Must be superuser to drop a foreign-data wrapper." +msgstr "Debe ser superusuario para eliminar un conector de datos externos." -#: postmaster/postmaster.c:2348 -msgid "aborting startup due to startup process failure" -msgstr "abortando el inicio debido a una falla en el procesamiento de inicio" +#: commands/foreigncmds.c:789 +#, c-format +msgid "foreign-data wrapper \"%s\" does not exist, skipping" +msgstr "no existe el conector de datos externos «%s», ignorando" -#: postmaster/postmaster.c:2407 -msgid "database system is ready to accept connections" -msgstr "el sistema de bases de datos está listo para aceptar conexiones" +#: commands/foreigncmds.c:858 +#, c-format +msgid "server \"%s\" already exists" +msgstr "el servidor «%s» ya existe" -#: postmaster/postmaster.c:2462 -msgid "background writer process" -msgstr "proceso background writer" +#: commands/foreigncmds.c:1054 +#, c-format +msgid "server \"%s\" does not exist, skipping" +msgstr "el servidor «%s» no existe, ignorando" -#: postmaster/postmaster.c:2478 -msgid "WAL writer process" -msgstr "proceso escritor de WAL" +#: commands/foreigncmds.c:1159 +#, c-format +msgid "user mapping \"%s\" already exists for server %s" +msgstr "ya existe un mapeo para el usuario «%s» en el servidor %s" -#: postmaster/postmaster.c:2492 -msgid "WAL receiver process" -msgstr "proceso receptor de WAL" +#: commands/foreigncmds.c:1245 commands/foreigncmds.c:1350 +#, c-format +msgid "user mapping \"%s\" does not exist for the server" +msgstr "no existe el mapeo para el usuario «%s» para el servidor" -#: postmaster/postmaster.c:2507 -msgid "autovacuum launcher process" -msgstr "proceso lanzador de autovacuum" +#: commands/foreigncmds.c:1337 +msgid "server does not exist, skipping" +msgstr "el servidor no existe, ignorando" -#: postmaster/postmaster.c:2522 -msgid "archiver process" -msgstr "proceso de archivado" +#: commands/foreigncmds.c:1355 +#, 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" -#: postmaster/postmaster.c:2538 -msgid "statistics collector process" -msgstr "recolector de estadísticas" +#: commands/vacuum.c:419 +msgid "oldest xmin is far in the past" +msgstr "xmin más antiguo es demasiado antiguo" -#: postmaster/postmaster.c:2552 -msgid "system logger process" -msgstr "proceso de log" +#: commands/vacuum.c:420 +msgid "Close open transactions soon to avoid wraparound problems." +msgstr "" +"Cierre transacciones pronto para prevenir problemas por reciclaje de " +"transacciones." -#: postmaster/postmaster.c:2587 postmaster/postmaster.c:2603 -#: postmaster/postmaster.c:2610 postmaster/postmaster.c:2628 -msgid "server process" -msgstr "proceso de servidor" +#: commands/vacuum.c:811 +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" -#: postmaster/postmaster.c:2664 -msgid "terminating any other active server processes" -msgstr "terminando todos los otros procesos de servidor activos" +#: commands/vacuum.c:812 +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." -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2829 +#: commands/vacuum.c:919 #, c-format -msgid "%s (PID %d) exited with exit code %d" -msgstr "%s (PID %d) terminó con código de salida %d" +msgid "skipping vacuum of \"%s\" --- lock not available" +msgstr "omitiendo el vacuum de «%s»: el candado no está disponible" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2838 +#: commands/vacuum.c:945 #, c-format -msgid "%s (PID %d) was terminated by exception 0x%X" -msgstr "%s (PID %d) fue terminado por una excepción 0x%X" +msgid "skipping \"%s\" --- only superuser can vacuum it" +msgstr "omitiendo «%s»: sólo un superusuario puede aplicarle VACUUM" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2847 +#: commands/vacuum.c:949 #, c-format -msgid "%s (PID %d) was terminated by signal %d: %s" -msgstr "%s (PID %d) fue terminado por una señal %d: %s" +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" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2857 +#: commands/vacuum.c:953 #, c-format -msgid "%s (PID %d) was terminated by signal %d" -msgstr "%s (PID %d) fue terminado por una señal %d" +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" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2866 +#: commands/vacuum.c:970 #, c-format -msgid "%s (PID %d) exited with unrecognized status %d" -msgstr "%s (PID %d) terminó con código no reconocido %d" +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" -#: postmaster/postmaster.c:3046 -msgid "abnormal database system shutdown" -msgstr "apagado anormal del sistema de bases de datos" +#: commands/async.c:567 +msgid "channel name cannot be empty" +msgstr "el nombre de canal no puede ser vacío" -#: postmaster/postmaster.c:3084 -msgid "all server processes terminated; reinitializing" -msgstr "todos los procesos fueron terminados; reinicializando" +#: commands/async.c:572 +msgid "channel name too long" +msgstr "el nombre de canal es demasiado largo" -#: postmaster/postmaster.c:3256 -#, c-format -msgid "could not fork new process for connection: %m" -msgstr "no se pudo lanzar el nuevo proceso para la conexión: %m" +#: commands/async.c:579 +msgid "payload string too long" +msgstr "la cadena de carga es demasiado larga" -#: postmaster/postmaster.c:3298 -msgid "could not fork new process for connection: " -msgstr "no se pudo lanzar el nuevo proceso para la conexión: " +#: commands/async.c:764 +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" -#: postmaster/postmaster.c:3412 -#, c-format -msgid "connection received: host=%s port=%s" -msgstr "conexión recibida: host=%s port=%s" +#: commands/async.c:867 +msgid "too many notifications in the NOTIFY queue" +msgstr "demasiadas notificaciones en la cola NOTIFY" -#: postmaster/postmaster.c:3417 +#: commands/async.c:1440 #, c-format -msgid "connection received: host=%s" -msgstr "conexión recibida: host=%s" +msgid "NOTIFY queue is %.0f%% full" +msgstr "la cola NOTIFY está %.0f%% llena" -#: postmaster/postmaster.c:3684 +#: commands/async.c:1442 #, c-format -msgid "could not execute server process \"%s\": %m" -msgstr "no se pudo lanzar el proceso servidor «%s»: %m" +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." -#: postmaster/postmaster.c:4201 -msgid "database system is ready to accept read only connections" +#: commands/async.c:1445 +msgid "" +"The NOTIFY queue cannot be emptied until that process ends its current " +"transaction." msgstr "" -"el sistema de bases de datos está listo para aceptar conexiones de sólo " -"lectura" +"La cola NOTIFY no puede vaciarse hasta que ese proceso cierre su transacción " +"actual." -#: postmaster/postmaster.c:4442 +#: commands/trigger.c:159 #, c-format -msgid "could not fork startup process: %m" -msgstr "no se pudo lanzar el proceso de inicio: %m" +msgid "\"%s\" is a table" +msgstr "«%s» es una tabla" -#: postmaster/postmaster.c:4446 -#, c-format -msgid "could not fork background writer process: %m" -msgstr "no se pudo lanzar el background writer: %m" +#: commands/trigger.c:161 +msgid "Tables cannot have INSTEAD OF triggers." +msgstr "Las tablas no pueden tener disparadores INSTEAD OF." -#: postmaster/postmaster.c:4450 +#: commands/trigger.c:172 commands/trigger.c:179 #, c-format -msgid "could not fork WAL writer process: %m" -msgstr "no se pudo lanzar el proceso escritor de WAL: %m" +msgid "\"%s\" is a view" +msgstr "«%s» es una vista" -#: postmaster/postmaster.c:4454 -#, c-format -msgid "could not fork WAL receiver process: %m" -msgstr "no se pudo lanzar el proceso receptor de WAL: %m" +#: commands/trigger.c:174 +msgid "Views cannot have row-level BEFORE or AFTER triggers." +msgstr "" +"Las vistas no pueden tener disparadores BEFORE o AFTER a nivel de fila." -#: postmaster/postmaster.c:4458 -#, c-format -msgid "could not fork process: %m" -msgstr "no se pudo lanzar el proceso: %m" +#: commands/trigger.c:181 +msgid "Views cannot have TRUNCATE triggers." +msgstr "Las vistas no pueden tener disparadores TRUNCATE." -#: postmaster/postmaster.c:4740 -#, 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" +#: commands/trigger.c:228 +msgid "TRUNCATE FOR EACH ROW triggers are not supported" +msgstr "los disparadores TRUNCATE FOR EACH ROW no están soportados" -#: postmaster/postmaster.c:4772 -#, 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" +#: commands/trigger.c:236 +msgid "INSTEAD OF triggers must be FOR EACH ROW" +msgstr "los disparadores INSTEAD OF deben ser FOR EACH ROW" -#: postmaster/postmaster.c:4801 postmaster/postmaster.c:4808 -#, 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" +#: commands/trigger.c:240 +msgid "INSTEAD OF triggers cannot have WHEN conditions" +msgstr "los disparadores INSTEAD OF no pueden tener condiciones WHEN" -#: postmaster/postmaster.c:4817 -#, c-format -msgid "could not remove file \"%s\": %s\n" -msgstr "no se pudo eliminar el archivo «%s»: %s\n" +#: commands/trigger.c:244 +msgid "INSTEAD OF triggers cannot have column lists" +msgstr "los disparadores INSTEAD OF no pueden tener listas de columnas" -#: postmaster/postmaster.c:4834 -#, c-format -msgid "could not map view of backend variables: error code %d\n" +#: commands/trigger.c:288 +msgid "cannot use subquery in trigger WHEN condition" +msgstr "no se puede usar una subconsulta en la condición WHEN de un trigger" + +#: commands/trigger.c:292 +msgid "cannot use aggregate function in trigger WHEN condition" msgstr "" -"no se pudo mapear la vista del archivo de variables: código de error %d\n" +"no se pueden usar funciones de agregación en condición WHEN de un trigger" -#: postmaster/postmaster.c:4843 -#, c-format -msgid "could not unmap view of backend variables: error code %d\n" +#: commands/trigger.c:296 +msgid "cannot use window function in trigger WHEN condition" msgstr "" -"no se pudo desmapear la vista del archivo de variables: código de error %d\n" +"no se pueden usar funciones de ventana deslizante en condición WHEN de un " +"trigger" -#: postmaster/postmaster.c:4850 -#, c-format -msgid "could not close handle to backend parameter variables: error code %d\n" +#: commands/trigger.c:318 commands/trigger.c:331 +msgid "statement trigger's WHEN condition cannot reference column values" msgstr "" -"no se pudo cerrar el archivo de variables de servidor: código de error %d\n" +"la condición WHEN de un trigger por sentencias no pueden referirse a los " +"valores de las columnas" -#: postmaster/postmaster.c:4993 -msgid "could not read exit code for process\n" -msgstr "no se pudo leer el código de salida del proceso\n" +#: commands/trigger.c:323 +msgid "INSERT trigger's WHEN condition cannot reference OLD values" +msgstr "" +"la condición WHEN de un trigger en INSERT no puede referirse a valores OLD" -#: postmaster/postmaster.c:4998 -msgid "could not post child completion status\n" -msgstr "no se pudo publicar el estado de completitud del proceso hijo\n" +#: commands/trigger.c:336 +msgid "DELETE trigger's WHEN condition cannot reference NEW values" +msgstr "" +"la condición WHEN de un trigger en DELETE no puede referirse a valores NEW" -#: postmaster/syslogger.c:387 -#, c-format -msgid "select() failed in logger process: %m" -msgstr "select() falló en proceso de log: %m" +#: commands/trigger.c:341 +msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns" +msgstr "" +"la condición WHEN de un trigger BEFORE no puede referirse a columnas de " +"sistema de NEW" -#: postmaster/syslogger.c:399 postmaster/syslogger.c:973 +#: commands/trigger.c:386 #, c-format -msgid "could not read from logger pipe: %m" -msgstr "no se pudo leer desde la tubería de log: %m" +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»" -#: postmaster/syslogger.c:446 -msgid "logger shutting down" -msgstr "apagando proceso de log" +#: commands/trigger.c:393 +#, c-format +msgid "function %s must return type \"trigger\"" +msgstr "la función %s debe retornar tipo «trigger»" -#: postmaster/syslogger.c:490 postmaster/syslogger.c:504 +#: commands/trigger.c:503 commands/trigger.c:1241 #, c-format -msgid "could not create pipe for syslog: %m" -msgstr "no se pudo crear la tubería para syslog: %m" +msgid "trigger \"%s\" for relation \"%s\" already exists" +msgstr "ya existe un trigger «%s» para la relación «%s»" + +#: commands/trigger.c:788 +msgid "Found referenced table's UPDATE trigger." +msgstr "Se encontró el disparador UPDATE de la tabla referenciada." + +#: commands/trigger.c:789 +msgid "Found referenced table's DELETE trigger." +msgstr "Se encontró el disparador DELETE de la tabla referenciada." + +#: commands/trigger.c:790 +msgid "Found referencing table's trigger." +msgstr "Se encontró el disparador en la tabla que hace referencia." -#: postmaster/syslogger.c:524 postmaster/syslogger.c:1012 +#: commands/trigger.c:899 commands/trigger.c:915 #, c-format -msgid "could not create log file \"%s\": %m" -msgstr "no se pudo crear archivo de log «%s»: %m" +msgid "ignoring incomplete trigger group for constraint \"%s\" %s" +msgstr "" +"ignorando el grupo de disparadores incompleto para la restricción «%s» %s" -#: postmaster/syslogger.c:539 +#: commands/trigger.c:927 #, c-format -msgid "could not fork system logger: %m" -msgstr "no se pudo crear el proceso de log: %m" +msgid "converting trigger group into constraint \"%s\" %s" +msgstr "convirtiendo el grupo de disparadores en la restricción «%s» %s" -#: postmaster/syslogger.c:570 +#: commands/trigger.c:1043 #, c-format -msgid "could not redirect stdout: %m" -msgstr "no se pudo redirigir stdout: %m" +msgid "trigger \"%s\" for table \"%s\" does not exist, skipping" +msgstr "no existe el trigger «%s» para la tabla «%s», ignorando" -#: postmaster/syslogger.c:575 postmaster/syslogger.c:593 +#: commands/trigger.c:1170 commands/trigger.c:1283 commands/trigger.c:1394 #, c-format -msgid "could not redirect stderr: %m" -msgstr "no se pudo redirigir stderr: %m" +msgid "trigger \"%s\" for table \"%s\" does not exist" +msgstr "no existe el trigger «%s» para la tabla «%s»" -#: postmaster/syslogger.c:928 +#: commands/trigger.c:1362 #, c-format -msgid "could not write to log file: %s\n" -msgstr "no se pudo escribir al archivo de log: %s\n" +msgid "permission denied: \"%s\" is a system trigger" +msgstr "permiso denegado: «%s» es un trigger de sistema" -#: postmaster/syslogger.c:1083 postmaster/syslogger.c:1141 +#: commands/trigger.c:1844 #, c-format -msgid "could not open new log file \"%s\": %m" -msgstr "no se pudo abrir el nuevo archivo de log «%s»: %m" +msgid "trigger function %u returned null value" +msgstr "la función de trigger %u ha retornado un valor null" -#: postmaster/syslogger.c:1095 postmaster/syslogger.c:1153 -msgid "disabling automatic rotation (use SIGHUP to re-enable)" -msgstr "desactivando rotación automática (use SIGHUP para reactivarla)" +#: commands/trigger.c:1903 commands/trigger.c:2102 commands/trigger.c:2286 +#: commands/trigger.c:2528 +msgid "BEFORE STATEMENT trigger cannot return a value" +msgstr "un trigger BEFORE STATEMENT no puede retornar un valor" + +#: commands/trigger.c:2590 executor/nodeLockRows.c:137 +#: executor/nodeModifyTable.c:366 executor/nodeModifyTable.c:588 +#: executor/execMain.c:1867 +msgid "could not serialize access due to concurrent update" +msgstr "no se pudo serializar el acceso debido a un update concurrente" -#: replication/libpqwalreceiver/libpqwalreceiver.c:100 +#: commands/trigger.c:4166 catalog/namespace.c:234 catalog/namespace.c:318 #, c-format -msgid "could not connect to the primary server: %s" -msgstr "no se pudo hacer la conexión al servidor primario: %s" +msgid "cross-database references are not implemented: \"%s.%s.%s\"" +msgstr "" +"no están implementadas las referencias entre bases de datos: «%s.%s.%s»" + +#: commands/trigger.c:4217 +#, c-format +msgid "constraint \"%s\" is not deferrable" +msgstr "la restricción «%s» no es postergable" -#: replication/libpqwalreceiver/libpqwalreceiver.c:112 +#: commands/trigger.c:4240 #, c-format +msgid "constraint \"%s\" does not exist" +msgstr "no existe la restricción «%s»" + +#: commands/operatorcmds.c:100 +msgid "=> is deprecated as an operator name" +msgstr "=> es un nombre obsoleto de operador" + +#: commands/operatorcmds.c:101 msgid "" -"could not receive database system identifier and timeline ID from the " -"primary server: %s" +"This name may be disallowed altogether in future versions of PostgreSQL." msgstr "" -"no se pudo recibir el identificador de sistema y el ID de timeline del " -"servidor primario: %s" +"Este nombre puede prohibirse por completo en futuras versiones de PostgreSQL." -#: replication/libpqwalreceiver/libpqwalreceiver.c:123 -msgid "invalid response from primary server" -msgstr "respuesta no válida del servidor primario" +#: commands/operatorcmds.c:122 commands/operatorcmds.c:130 +msgid "SETOF type not allowed for operator argument" +msgstr "no se permite un tipo SETOF en los argumentos de un operador" -#: replication/libpqwalreceiver/libpqwalreceiver.c:124 +#: commands/operatorcmds.c:158 #, 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." +msgid "operator attribute \"%s\" not recognized" +msgstr "el atributo de operador «%s» no es reconocido" -#: replication/libpqwalreceiver/libpqwalreceiver.c:139 -msgid "database system identifier differs between the primary and standby" -msgstr "el identificador de sistema difiere entre el primario y el standby" +#: commands/operatorcmds.c:168 +msgid "operator procedure must be specified" +msgstr "debe especificarse un procedimiento de operador" -#: replication/libpqwalreceiver/libpqwalreceiver.c:140 +#: commands/operatorcmds.c:179 +msgid "at least one of leftarg or rightarg must be specified" +msgstr "debe especificar al menos uno de los argumentos izquierdo o derecho" + +#: commands/operatorcmds.c:228 #, 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." +msgid "restriction estimator function %s must return type \"float8\"" +msgstr "la función de estimación de restricción %s debe retornar tipo «float8»" -#: replication/libpqwalreceiver/libpqwalreceiver.c:152 +#: commands/operatorcmds.c:267 #, c-format -msgid "timeline %u of the primary does not match recovery target timeline %u" -msgstr "" -"el timeline %u del primario no coincide con el timeline destino de " -"recuperación %u" +msgid "join estimator function %s must return type \"float8\"" +msgstr "la función de estimación de join %s debe retornar tipo «float8»" -#: replication/libpqwalreceiver/libpqwalreceiver.c:164 +#: commands/operatorcmds.c:318 #, c-format -msgid "could not start WAL streaming: %s" -msgstr "no se pudo iniciar el flujo de WAL: %s" +msgid "operator %s does not exist, skipping" +msgstr "el operador %s no existe, ignorando" -#: replication/libpqwalreceiver/libpqwalreceiver.c:171 -msgid "streaming replication successfully connected to primary" -msgstr "la replicación en flujo se ha conectado exitosamente al primario" +#: commands/typecmds.c:169 +msgid "must be superuser to create a base type" +msgstr "debe ser superusuario para crear un tipo base" -#: replication/libpqwalreceiver/libpqwalreceiver.c:193 -msgid "socket not open" -msgstr "el socket no está abierto" +#: commands/typecmds.c:224 commands/typecmds.c:806 commands/typecmds.c:1145 +#: commands/typecmds.c:1622 catalog/pg_type.c:396 catalog/pg_type.c:699 +#: catalog/heap.c:1029 +#, c-format +msgid "type \"%s\" already exists" +msgstr "ya existe un tipo «%s»" -#: replication/libpqwalreceiver/libpqwalreceiver.c:233 +#: commands/typecmds.c:275 #, c-format -msgid "select() failed: %m" -msgstr "select() fallida: %m" +msgid "type attribute \"%s\" not recognized" +msgstr "el atributo de tipo «%s» no es reconocido" -#: replication/libpqwalreceiver/libpqwalreceiver.c:364 -#: replication/libpqwalreceiver/libpqwalreceiver.c:386 -#: replication/libpqwalreceiver/libpqwalreceiver.c:391 +#: commands/typecmds.c:329 #, c-format -msgid "could not receive data from WAL stream: %s" -msgstr "no se pudo recibir datos desde el flujo de WAL: %s" +msgid "invalid type category \"%s\": must be simple ASCII" +msgstr "la categoría de tipo «%s» no es válida: debe ser ASCII simple" -#: replication/libpqwalreceiver/libpqwalreceiver.c:382 -msgid "replication terminated by primary server" -msgstr "replicación terminada por el servidor primario" +#: commands/typecmds.c:348 +#, c-format +msgid "array element type cannot be %s" +msgstr "el tipo de elemento de array no puede ser %s" -#: replication/walreceiver.c:138 -msgid "terminating walreceiver process due to administrator command" -msgstr "terminando el proceso walreceiver debido a una orden del administrador" +#: commands/typecmds.c:380 +#, c-format +msgid "alignment \"%s\" not recognized" +msgstr "el alineamiento «%s» no es reconocido" -#: replication/walreceiver.c:287 -msgid "cannot continue WAL streaming, recovery has already ended" -msgstr "no se puede continuar el flujo de WAL; la recuperación ya ha terminado" +#: commands/typecmds.c:397 +#, c-format +msgid "storage \"%s\" not recognized" +msgstr "el almacenamiento «%s» no es reconocido" -#: replication/walsender.c:116 -msgid "recovery is still in progress, can't accept WAL streaming connections" -msgstr "" -"la recuperación aún está en proceso; no se pueden aceptar conexiones de " -"flujos de WAL" +#: commands/typecmds.c:408 +msgid "type input function must be specified" +msgstr "debe especificarse la función de ingreso del tipo" -#: replication/walsender.c:278 -msgid "standby connections not allowed because wal_level=minimal" -msgstr "las conexiones standby no están permitidas porque wal_level=minimal" +#: commands/typecmds.c:412 +msgid "type output function must be specified" +msgstr "debe especificarse la función de salida de tipo" + +#: commands/typecmds.c:417 +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" -#: replication/walsender.c:300 +#: commands/typecmds.c:440 #, c-format -msgid "invalid standby query string: %s" -msgstr "la cadena de consulta de standby no es válida: %s" +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" -#: replication/walsender.c:313 replication/walsender.c:339 -msgid "unexpected EOF on standby connection" -msgstr "se encontró fin de archivo inesperado en la conexión standby" +#: commands/typecmds.c:447 +#, c-format +msgid "type input function %s must return type %s" +msgstr "la función de entrada %s del tipo debe retornar %s" -#: replication/walsender.c:319 +#: commands/typecmds.c:457 #, c-format -msgid "invalid standby handshake message type %d" -msgstr "el tipo %d de mensaje de saludo del standby no es válido" +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»" -#: replication/walsender.c:360 +#: commands/typecmds.c:464 #, c-format -msgid "invalid standby closing message type %d" -msgstr "el tipo %d de mensaje de cierre del standby no es válido" +msgid "type output function %s must return type \"cstring\"" +msgstr "la función de salida %s del tipo debe retornar «cstring»" -#: replication/walsender.c:506 +#: commands/typecmds.c:473 #, 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 "type receive function %s must return type %s" +msgstr "la función de recepción %s del tipo debe retornar %s" -#: replication/walsender.c:578 replication/walsender.c:640 +#: commands/typecmds.c:482 #, c-format -msgid "requested WAL segment %s has already been removed" -msgstr "el segmento de WAL solicitado %s ya ha sido eliminado" +msgid "type send function %s must return type \"bytea\"" +msgstr "la función de envío %s del tipo debe retornar «bytea»" -#: replication/walsender.c:611 +#: commands/typecmds.c:687 #, c-format -msgid "could not read from log file %u, segment %u, offset %u, length %lu: %m" -msgstr "" -"no se pudo leer desde el archivo de registro %u, segmento %u en la posición " -"%u, largo %lu: %m" +msgid "\"%s\" is not a domain" +msgstr "«%s» no es un dominio" -#: rewrite/rewriteDefine.c:108 rewrite/rewriteDefine.c:756 +#: commands/typecmds.c:827 #, c-format -msgid "rule \"%s\" for relation \"%s\" already exists" -msgstr "ya existe una regla llamada «%s» para la relación «%s»" +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" -#: rewrite/rewriteDefine.c:282 -msgid "rule actions on OLD are not implemented" -msgstr "las acciones de regla en OLD no están implementadas" +#: commands/typecmds.c:909 +msgid "multiple default expressions" +msgstr "múltiples expresiones default" -#: rewrite/rewriteDefine.c:283 -msgid "Use views or triggers instead." -msgstr "Use vistas o triggers en su lugar." +#: commands/typecmds.c:973 commands/typecmds.c:982 +msgid "conflicting NULL/NOT NULL constraints" +msgstr "las restricciones NULL/NOT NULL no coinciden" -#: rewrite/rewriteDefine.c:287 -msgid "rule actions on NEW are not implemented" -msgstr "las acciones de regla en NEW no están implementadas" +#: commands/typecmds.c:1001 commands/typecmds.c:1984 +msgid "unique constraints not possible for domains" +msgstr "no se pueden poner restricciones de unicidad a un dominio" -#: rewrite/rewriteDefine.c:288 -msgid "Use triggers instead." -msgstr "Use triggers en su lugar." +#: commands/typecmds.c:1007 commands/typecmds.c:1990 +msgid "primary key constraints not possible for domains" +msgstr "no se pueden poner restricciones de llave primaria a un dominio" -#: rewrite/rewriteDefine.c:301 -msgid "INSTEAD NOTHING rules on SELECT are not implemented" -msgstr "las reglas INSTEAD NOTHING en SELECT no están implementadas" +#: commands/typecmds.c:1013 commands/typecmds.c:1996 +msgid "exclusion constraints not possible for domains" +msgstr "las restricciones por exclusión no son posibles para los dominios" -#: rewrite/rewriteDefine.c:302 -msgid "Use views instead." -msgstr "Use vistas en su lugar." - -#: rewrite/rewriteDefine.c:310 -msgid "multiple actions for rules on SELECT are not implemented" -msgstr "las reglas de múltiples acciones en SELECT no están implementadas" +#: commands/typecmds.c:1019 commands/typecmds.c:2002 +msgid "foreign key constraints not possible for domains" +msgstr "no se pueden poner restricciones de llave foránea a un dominio" -#: rewrite/rewriteDefine.c:322 -msgid "rules on SELECT must have action INSTEAD SELECT" -msgstr "las reglas en SELECT deben tener una acción INSTEAD SELECT" +#: commands/typecmds.c:1028 commands/typecmds.c:2011 +msgid "specifying constraint deferrability not supported for domains" +msgstr "" +"no se puede especificar la postergabilidad de las restricciones a un dominio" -#: rewrite/rewriteDefine.c:330 -msgid "event qualifications are not implemented for rules on SELECT" +#: commands/typecmds.c:1332 +#, c-format +msgid "changing argument type of function %s from \"opaque\" to \"cstring\"" msgstr "" -"las calificaciones de eventos no están implementadas para las reglas en " -"SELECT" +"cambiando el tipo de argumento de la función %s de «opaque» a «cstring»" -#: rewrite/rewriteDefine.c:355 +#: 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 catalog/pg_aggregate.c:331 parser/parse_func.c:288 +#: parser/parse_func.c:299 parser/parse_func.c:1481 #, c-format -msgid "\"%s\" is already a view" -msgstr "«%s» ya es una vista" +msgid "function %s does not exist" +msgstr "no existe la función %s" -#: rewrite/rewriteDefine.c:379 +#: commands/typecmds.c:1383 #, c-format -msgid "view rule for \"%s\" must be named \"%s\"" -msgstr "la regla de vista para «%s» debe llamarse «%s»" +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" -#: rewrite/rewriteDefine.c:404 +#: commands/typecmds.c:1482 #, 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" +msgid "typmod_in function %s must return type \"integer\"" +msgstr "la función typmod_in %s debe retornar tipo «integer»" -#: rewrite/rewriteDefine.c:411 +#: commands/typecmds.c:1509 #, 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" +msgid "typmod_out function %s must return type \"cstring\"" +msgstr "la función typmod_out %s debe retornar «cstring»" -#: rewrite/rewriteDefine.c:413 -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." +#: commands/typecmds.c:1536 +#, c-format +msgid "type analyze function %s must return type \"boolean\"" +msgstr "la función de análisis %s del tipo debe retornar «boolean»" -#: rewrite/rewriteDefine.c:418 +#: commands/typecmds.c:1836 #, 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" +msgid "column \"%s\" of table \"%s\" contains null values" +msgstr "la columna «%s» de la tabla «%s» contiene valores null" -#: rewrite/rewriteDefine.c:424 +#: commands/typecmds.c:2082 #, 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" +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" -#: rewrite/rewriteDefine.c:451 -msgid "cannot have multiple RETURNING lists in a rule" -msgstr "no se pueden tener múltiples listas RETURNING en una regla" +#: commands/typecmds.c:2287 +#, c-format +msgid "%s is not a domain" +msgstr "%s no es un dominio" -#: rewrite/rewriteDefine.c:456 -msgid "RETURNING lists are not supported in conditional rules" -msgstr "listas de RETURNING no están soportadas en reglas condicionales" +#: commands/typecmds.c:2321 catalog/pg_constraint.c:654 +#, c-format +msgid "constraint \"%s\" for domain \"%s\" already exists" +msgstr "el dominio «%2$s» ya contiene una restricción llamada «%1$s»" -#: rewrite/rewriteDefine.c:460 -msgid "RETURNING lists are not supported in non-INSTEAD rules" +#: commands/typecmds.c:2369 commands/typecmds.c:2378 +msgid "cannot use table references in domain check constraint" msgstr "" -"listas de RETURNING no están soportadas en reglas que no estén marcadas " -"INSTEAD" +"no se pueden usar referencias a tablas en restricción check para un dominio" -#: rewrite/rewriteDefine.c:539 -msgid "SELECT rule's target list has too many entries" -msgstr "la lista de destinos en la regla de SELECT tiene demasiadas entradas" +#: commands/typecmds.c:2386 catalog/heap.c:2501 +msgid "cannot use subquery in check constraint" +msgstr "no se pueden usar subconsultas en una restricción check" -#: rewrite/rewriteDefine.c:540 -msgid "RETURNING list has too many entries" -msgstr "la lista de RETURNING tiene demasiadas entradas" +#: commands/typecmds.c:2390 catalog/heap.c:2505 +msgid "cannot use aggregate function in check constraint" +msgstr "no se pueden usar funciones de agregación en una restricción check" -#: rewrite/rewriteDefine.c:556 -msgid "cannot convert relation containing dropped columns to view" +#: commands/typecmds.c:2394 catalog/heap.c:2509 +msgid "cannot use window function in check constraint" msgstr "" -"no se puede convertir en vista una relación que contiene columnas eliminadas" +"no se pueden usar funciones de ventana deslizante en una restricción check" -#: rewrite/rewriteDefine.c:561 +#: commands/typecmds.c:2608 commands/typecmds.c:2680 commands/typecmds.c:2919 #, c-format -msgid "SELECT rule's target entry %d has different column name from \"%s\"" -msgstr "" -"la entrada de destino %d de la regla de SELECT tiene un nombre de columna " -"diferente de «%s»" +msgid "%s is a table's row type" +msgstr "%s es el tipo de registro de una tabla" -#: rewrite/rewriteDefine.c:567 +#: commands/typecmds.c:2610 commands/typecmds.c:2682 commands/typecmds.c:2921 +msgid "Use ALTER TABLE instead." +msgstr "Considere usar ALTER TABLE." + +#: commands/typecmds.c:2617 commands/typecmds.c:2689 commands/typecmds.c:2838 #, 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»" +msgid "cannot alter array type %s" +msgstr "no se puede alterar el tipo de array «%s»" -#: rewrite/rewriteDefine.c:569 +#: commands/typecmds.c:2619 commands/typecmds.c:2691 commands/typecmds.c:2840 #, 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»" +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." -#: rewrite/rewriteDefine.c:584 +#: commands/typecmds.c:2905 #, 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»" +msgid "type \"%s\" already exists in schema \"%s\"" +msgstr "ya existe un tipo llamado «%s» en el esquema «%s»" -#: rewrite/rewriteDefine.c:586 +#: commands/tsearchcmds.c:117 commands/tsearchcmds.c:1044 #, 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»" +msgid "function %s should return type %s" +msgstr "la función %s debería retornar el tipo %s" -#: rewrite/rewriteDefine.c:594 -msgid "SELECT rule's target list has too few entries" -msgstr "la lista de destinos de regla de SELECT tiene muy pocas entradas" +#: commands/tsearchcmds.c:189 +msgid "must be superuser to create text search parsers" +msgstr "debe ser superusuario para crear analizadores de búsqueda en texto" -#: rewrite/rewriteDefine.c:595 -msgid "RETURNING list has too few entries" -msgstr "la lista de RETURNING tiene muy pocas entradas" +#: commands/tsearchcmds.c:237 +#, c-format +msgid "text search parser parameter \"%s\" not recognized" +msgstr "el parámetro de analizador de búsqueda en texto «%s» no es reconocido" -#: rewrite/rewriteHandler.c:495 -msgid "cannot have RETURNING lists in multiple rules" -msgstr "no se puede usar RETURNING en múltiples reglas" +#: commands/tsearchcmds.c:247 +msgid "text search parser start method is required" +msgstr "se requiere el método start del analizador de búsqueda en texto" -#: rewrite/rewriteHandler.c:796 rewrite/rewriteHandler.c:814 -#, c-format -msgid "multiple assignments to same column \"%s\"" -msgstr "hay múltiples asignaciones a la misma columna «%s»" +#: commands/tsearchcmds.c:252 +msgid "text search parser gettoken method is required" +msgstr "se requiere el método gettoken del analizador de búsqueda en texto" + +#: commands/tsearchcmds.c:257 +msgid "text search parser end method is required" +msgstr "se requiere el método end del analizador de búsqueda en texto" + +#: commands/tsearchcmds.c:262 +msgid "text search parser lextypes method is required" +msgstr "se requiere el método lextypes del analizador de búsqueda en texto" -#: rewrite/rewriteHandler.c:1417 rewrite/rewriteHandler.c:1740 +#: commands/tsearchcmds.c:297 +msgid "must be superuser to drop text search parsers" +msgstr "debe ser superusuario para eliminar analizadores de búsqueda en texto" + +#: commands/tsearchcmds.c:320 catalog/namespace.c:1906 #, 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»" +msgid "text search parser \"%s\" does not exist" +msgstr "no existe el analizador de búsqueda en texto «%s»" -#: rewrite/rewriteHandler.c:1778 +#: commands/tsearchcmds.c:326 #, c-format -msgid "cannot perform INSERT RETURNING on relation \"%s\"" -msgstr "no se puede hacer INSERT RETURNING a la relación «%s»" +msgid "text search parser \"%s\" does not exist, skipping" +msgstr "el analizador de búsqueda en texto «%s» no existe, ignorando" -#: rewrite/rewriteHandler.c:1780 -msgid "" -"You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." +#: commands/tsearchcmds.c:381 +msgid "must be superuser to rename text search parsers" msgstr "" -"Necesita un regla incondicional ON INSERT DO INSTEAD con una cláusula " -"RETURNING." +"debe ser superusuario para cambiar el nombre a analizadores de búsqueda en " +"texto" -#: rewrite/rewriteHandler.c:1785 +#: commands/tsearchcmds.c:399 #, c-format -msgid "cannot perform UPDATE RETURNING on relation \"%s\"" -msgstr "no se puede hacer UPDATE RETURNING a la relación «%s»" +msgid "text search parser \"%s\" already exists" +msgstr "el analizador de búsqueda en texto «%s» ya existe" -#: rewrite/rewriteHandler.c:1787 -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." +#: commands/tsearchcmds.c:525 +#, c-format +msgid "text search template \"%s\" does not accept options" +msgstr "la plantilla de búsquede en texto «%s» no acepta opciones" + +#: commands/tsearchcmds.c:598 +msgid "text search template is required" +msgstr "se requiere una plantilla de búsqueda en texto" -#: rewrite/rewriteHandler.c:1792 +#: commands/tsearchcmds.c:667 #, c-format -msgid "cannot perform DELETE RETURNING on relation \"%s\"" -msgstr "no se puede hacer DELETE RETURNING a la relación «%s»" +msgid "text search dictionary \"%s\" already exists" +msgstr "el diccionario de búsqueda en texto «%s» ya existe" -#: rewrite/rewriteHandler.c:1794 -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." +#: commands/tsearchcmds.c:769 catalog/namespace.c:2029 +#, c-format +msgid "text search dictionary \"%s\" does not exist" +msgstr "no existe el diccionario de búsqueda en texto «%s»" -#: rewrite/rewriteHandler.c:1892 -msgid "cannot insert into a view" -msgstr "no se puede insertar en una vista" +#: commands/tsearchcmds.c:775 +#, c-format +msgid "text search dictionary \"%s\" does not exist, skipping" +msgstr "el diccionario de búsqueda en texto «%s» no existe, ignorando" -#: rewrite/rewriteHandler.c:1893 -msgid "You need an unconditional ON INSERT DO INSTEAD rule." -msgstr "Necesita un regla incondicional ON INSERT DO INSTEAD." +#: commands/tsearchcmds.c:1108 +msgid "must be superuser to create text search templates" +msgstr "debe ser superusuario para crear una plantilla de búsqueda en texto" -#: rewrite/rewriteHandler.c:1898 -msgid "cannot update a view" -msgstr "no se puede actualizar una vista" +#: commands/tsearchcmds.c:1145 +#, c-format +msgid "text search template parameter \"%s\" not recognized" +msgstr "" +"el parámetro de la plantilla de búsqueda en texto «%s» no es reconocido" -#: rewrite/rewriteHandler.c:1899 -msgid "You need an unconditional ON UPDATE DO INSTEAD rule." -msgstr "Necesita un regla incondicional ON UPDATE DO INSTEAD." +#: commands/tsearchcmds.c:1155 +msgid "text search template lexize method is required" +msgstr "se requiere el método lexize de la plantilla de búsqueda en texto" -#: rewrite/rewriteHandler.c:1904 -msgid "cannot delete from a view" -msgstr "no se puede eliminar de una vista" +#: commands/tsearchcmds.c:1193 +msgid "must be superuser to rename text search templates" +msgstr "" +"debe ser superusuario para cambiar el nombre a plantillas de búsqueda en " +"texto" -#: rewrite/rewriteHandler.c:1905 -msgid "You need an unconditional ON DELETE DO INSTEAD rule." -msgstr "Necesita un regla incondicional ON DELETE DO INSTEAD." +#: commands/tsearchcmds.c:1212 +#, c-format +msgid "text search template \"%s\" already exists" +msgstr "ya existe la plantilla de búsqueda en texto «%s»" -#: rewrite/rewriteManip.c:1009 -msgid "conditional utility statements are not implemented" -msgstr "las sentencias condicionales de utilidad no están implementadas" +#: commands/tsearchcmds.c:1281 +msgid "must be superuser to drop text search templates" +msgstr "debe ser superusuario para eliminar plantillas de búsqueda en texto" -#: rewrite/rewriteManip.c:1174 -msgid "WHERE CURRENT OF on a view is not implemented" -msgstr "WHERE CURRENT OF no está implementado en una vista" +#: commands/tsearchcmds.c:1304 catalog/namespace.c:2153 +#, c-format +msgid "text search template \"%s\" does not exist" +msgstr "no existe la plantilla de búsqueda en texto «%s»" -#: rewrite/rewriteRemove.c:66 +#: commands/tsearchcmds.c:1310 #, c-format -msgid "rule \"%s\" for relation \"%s\" does not exist, skipping" -msgstr "la regla «%s» para la relación «%s» no existe, ignorando" +msgid "text search template \"%s\" does not exist, skipping" +msgstr "la plantilla de búsqueda en texto «%s» no existe, ignorando" -#: utils/cache/typcache.c:331 +#: commands/tsearchcmds.c:1508 #, c-format -msgid "type %s is not composite" -msgstr "el tipo %s no es compuesto" +msgid "text search configuration parameter \"%s\" not recognized" +msgstr "" +"el parámetro de configuración de búsqueda en texto «%s» no es reconocido" -#: utils/cache/typcache.c:345 -msgid "record type has not been registered" -msgstr "el tipo record no ha sido registrado" +#: commands/tsearchcmds.c:1515 +msgid "cannot specify both PARSER and COPY options" +msgstr "no se puede especificar simultáneamente las opciones PARSER y COPY" + +#: commands/tsearchcmds.c:1543 +msgid "text search parser is required" +msgstr "el analizador de búsqueda en texto es requerido" -#: utils/cache/lsyscache.c:2234 utils/cache/lsyscache.c:2267 -#: utils/cache/lsyscache.c:2300 utils/cache/lsyscache.c:2333 +#: commands/tsearchcmds.c:1652 #, c-format -msgid "type %s is only a shell" -msgstr "el tipo %s está inconcluso" +msgid "text search configuration \"%s\" already exists" +msgstr "la configuración de búsqueda en texto «%s» ya existe" -#: utils/cache/lsyscache.c:2239 +#: commands/tsearchcmds.c:1759 #, c-format -msgid "no input function available for type %s" -msgstr "no hay una función de entrada para el tipo %s" +msgid "text search configuration \"%s\" does not exist, skipping" +msgstr "no existe la configuración de búsqueda en texto «%s», ignorando" -#: utils/cache/lsyscache.c:2272 +#: commands/tsearchcmds.c:1981 #, c-format -msgid "no output function available for type %s" -msgstr "no hay una función de salida para el tipo %s" +msgid "token type \"%s\" does not exist" +msgstr "no existe el tipo de elemento «%s»" -#: utils/cache/lsyscache.c:2305 utils/adt/arrayfuncs.c:1282 +#: commands/tsearchcmds.c:2203 #, c-format -msgid "no binary input function available for type %s" -msgstr "no hay una función binaria de entrada para el tipo %s" +msgid "mapping for token type \"%s\" does not exist" +msgstr "no existe un mapeo para el tipo de elemento «%s»" -#: utils/cache/lsyscache.c:2338 utils/adt/arrayfuncs.c:1504 +#: commands/tsearchcmds.c:2209 #, c-format -msgid "no binary output function available for type %s" -msgstr "no hay una función binaria de salida para el tipo %s" +msgid "mapping for token type \"%s\" does not exist, skipping" +msgstr "el mapeo para el tipo de elemento «%s» no existe, ignorando" -#: utils/cache/plancache.c:589 -msgid "cached plan must not change result type" -msgstr "el plan almacenado no debe cambiar el tipo de resultado" +#: commands/tsearchcmds.c:2362 commands/tsearchcmds.c:2473 +#, c-format +msgid "invalid parameter list format: \"%s\"" +msgstr "el formato de la lista de parámetros no es válido: «%s»" -#: utils/cache/relcache.c:4289 +#: commands/alter.c:415 #, 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" +msgid "must be superuser to set schema of %s" +msgstr "debe ser superusuario para definir el esquema de %s" -#: utils/cache/relcache.c:4291 -msgid "Continuing anyway, but there's something wrong." -msgstr "Prosiguiendo de todas maneras, pero hay algo mal." +#: commands/alter.c:443 +#, c-format +msgid "%s already exists in schema \"%s\"" +msgstr "ya existe %s en el esquema «%s»" -#: utils/cache/relmapper.c:454 -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:702 +#: foreign/foreign.c:198 #, c-format -msgid "could not open relation mapping file \"%s\": %m" -msgstr "no se pudo abrir el archivo de mapeo de relaciones «%s»: %m" +msgid "user mapping not found for \"%s\"" +msgstr "no se encontró un mapeo para el usuario «%s»" -#: utils/cache/relmapper.c:609 +#: foreign/foreign.c:321 #, c-format -msgid "could not read relation mapping file \"%s\": %m" -msgstr "no se pudo leer el archivo de mapeo de relaciones «%s»: %m" +msgid "foreign-data wrapper \"%s\" has no handler" +msgstr "el conector de datos externos «%s» no tiene manejador" -#: utils/cache/relmapper.c:619 +#: foreign/foreign.c:498 #, c-format -msgid "relation mapping file \"%s\" contains invalid data" -msgstr "el archivo de mapeo de relaciones «%s» contiene datos no válidos" +msgid "invalid option \"%s\"" +msgstr "el nombre de opción «%s» no es válido" -#: utils/cache/relmapper.c:629 +#: foreign/foreign.c:499 #, 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" +msgid "Valid options in this context are: %s" +msgstr "Las opciones válidas en este contexto son: %s" -#: utils/cache/relmapper.c:741 -#, 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" +#: regex/regc_pg_locale.c:258 +msgid "could not determine which collation to use for regular expression" +msgstr "no se pudo determinar qué ordenamiento usar para la expresión regular" -#: utils/cache/relmapper.c:754 +#: nodes/nodeFuncs.c:114 nodes/nodeFuncs.c:140 parser/parse_coerce.c:1671 +#: parser/parse_coerce.c:1688 parser/parse_coerce.c:1750 +#: parser/parse_expr.c:1638 parser/parse_oper.c:948 parser/parse_func.c:367 #, 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" +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" -#: utils/cache/relmapper.c:760 -#, c-format -msgid "could not close relation mapping file \"%s\": %m" -msgstr "no se pudo cerrar el archivo de mapeo de relaciones «%s»: %m" +#: executor/nodeSubplan.c:302 executor/nodeSubplan.c:341 +#: executor/nodeSubplan.c:968 +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" -#: utils/sort/logtape.c:213 -#, c-format -msgid "could not write block %ld of temporary file: %m" -msgstr "no se pudo escribir el bloque %ld del archivo temporal: %m" +#: executor/nodeWindowAgg.c:1238 +msgid "frame starting offset must not be null" +msgstr "la posición inicial del marco no debe ser null" -#: utils/sort/logtape.c:215 -msgid "Perhaps out of disk space?" -msgstr "¿Quizás se agotó el espacio en disco?" +#: executor/nodeWindowAgg.c:1251 +msgid "frame starting offset must not be negative" +msgstr "la posición inicial del marco no debe ser negativa" -#: utils/sort/logtape.c:232 -#, c-format -msgid "could not read block %ld of temporary file: %m" -msgstr "no se pudo leer el bloque %ld del archivo temporal: %m" +#: executor/nodeWindowAgg.c:1264 +msgid "frame ending offset must not be null" +msgstr "la posición final del marco no debe ser null" + +#: executor/nodeWindowAgg.c:1277 +msgid "frame ending offset must not be negative" +msgstr "la posición final del marco no debe ser negativa" -#: utils/sort/tuplesort.c:2806 +#: executor/nodeWindowAgg.c:1851 executor/nodeAgg.c:1730 #, c-format -msgid "could not create unique index \"%s\"" -msgstr "no se pudo crear el índice único «%s»" +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" -#: utils/sort/tuplesort.c:2808 +#: executor/functions.c:195 #, c-format -msgid "Key %s is duplicated." -msgstr "La llave %s está duplicada." +msgid "could not determine actual type of argument declared %s" +msgstr "no se pudo determinar el tipo de argumento declarado %s" -#: utils/mmgr/aset.c:409 +#. translator: %s is a SQL statement name +#: executor/functions.c:295 #, c-format -msgid "Failed while creating memory context \"%s\"." -msgstr "Falla al crear el contexto de memoria «%s»." +msgid "%s is not allowed in a SQL function" +msgstr "%s no está permitido en una función SQL" -#: utils/mmgr/aset.c:588 utils/mmgr/aset.c:771 utils/mmgr/aset.c:977 +#. translator: %s is a SQL statement name +#: executor/functions.c:302 executor/spi.c:1256 executor/spi.c:1891 #, c-format -msgid "Failed on request of size %lu." -msgstr "Falla en petición de tamaño %lu." +msgid "%s is not allowed in a non-volatile function" +msgstr "%s no está permitido en una función no-«volatile»" -#: utils/mmgr/portalmem.c:207 +#: executor/functions.c:408 #, c-format -msgid "cursor \"%s\" already exists" -msgstr "el cursor «%s» ya existe" +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" -#: utils/mmgr/portalmem.c:211 +#: executor/functions.c:1146 #, c-format -msgid "closing existing cursor \"%s\"" -msgstr "cerrando el cursor «%s» preexistente" +msgid "SQL function \"%s\" statement %d" +msgstr "función SQL «%s» en la sentencia %d" -#: utils/mmgr/portalmem.c:422 +#: executor/functions.c:1162 catalog/pg_proc.c:891 #, c-format -msgid "cannot drop active portal \"%s\"" -msgstr "no se puede eliminar el portal activo «%s»" +msgid "SQL function \"%s\"" +msgstr "función SQL «%s»" -#: utils/mmgr/portalmem.c:627 -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" +#: executor/functions.c:1172 +#, c-format +msgid "SQL function \"%s\" during startup" +msgstr "función SQL «%s» durante el inicio" -#: utils/adt/xml.c:135 -msgid "unsupported XML feature" -msgstr "característica XML no soportada" +#: 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 "el tipo de retorno de función declarada para retornar %s no concuerda" -#: utils/adt/xml.c:136 -msgid "This functionality requires the server to be built with libxml support." +#: executor/functions.c:1334 +msgid "" +"Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING." msgstr "" -"Esta funcionalidad requiere que el servidor haya sido construido con soporte " -"libxml." +"La sentencia final de la función debe ser un SELECT o INSERT/UPDATE/DELETE " +"RETURNING." -#: utils/adt/xml.c:137 -msgid "You need to rebuild PostgreSQL using --with-libxml." -msgstr "Necesita reconstruir PostgreSQL usando --with-libxml." +#: executor/functions.c:1370 +msgid "Final statement must return exactly one column." +msgstr "La sentencia final debe retornar exactamente una columna." -#: utils/adt/xml.c:156 utils/mb/mbutils.c:476 +#: executor/functions.c:1382 #, c-format -msgid "invalid encoding name \"%s\"" -msgstr "nombre de codificación «%s» no válido" +msgid "Actual return type is %s." +msgstr "El verdadero tipo de retorno es %s." -#: utils/adt/xml.c:402 utils/adt/xml.c:407 -msgid "invalid XML comment" -msgstr "comentario XML no válido" +#: executor/functions.c:1495 +msgid "Final statement returns too many columns." +msgstr "La sentencia final retorna demasiadas columnas." -#: utils/adt/xml.c:536 -msgid "not an XML document" -msgstr "no es un documento XML" +#: executor/functions.c:1528 +#, 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." -#: utils/adt/xml.c:689 utils/adt/xml.c:712 -msgid "invalid XML processing instruction" -msgstr "instrucción de procesamiento XML no válida" +#: executor/functions.c:1558 +msgid "Final statement returns too few columns." +msgstr "La sentencia final retorna muy pocas columnas." -#: utils/adt/xml.c:690 +#: executor/functions.c:1607 #, 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:713 -msgid "XML processing instruction cannot contain \"?>\"." -msgstr "la instrucción de procesamiento XML no puede contener «?>»." +msgid "return type %s is not supported for SQL functions" +msgstr "el tipo de retorno %s no es soportado en funciones SQL" -#: utils/adt/xml.c:792 -msgid "xmlvalidate is not implemented" -msgstr "xmlvalidate no está implementado" +#: executor/nodeModifyTable.c:82 executor/nodeModifyTable.c:92 +#: executor/nodeModifyTable.c:109 executor/nodeModifyTable.c:117 +#: executor/execQual.c:837 executor/execQual.c:854 executor/execQual.c:1014 +msgid "table row type and query-specified row type do not match" +msgstr "" +"el tipo de fila de la tabla no coincide con el tipo de la fila de la consulta" -#: utils/adt/xml.c:877 -msgid "could not initialize XML library" -msgstr "no se pudo inicializar la biblioteca XML" +#: executor/nodeModifyTable.c:83 +msgid "Query has too many columns." +msgstr "La consulta tiene demasiadas columnas." -#: utils/adt/xml.c:878 +#: executor/nodeModifyTable.c:93 executor/execQual.c:855 #, c-format -msgid "" -"libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u." +msgid "Table has type %s at ordinal position %d, but query expects %s." msgstr "" -"libxml2 tiene tipo char incompatible: sizeof(char)=%u, sizeof(xmlChar)=%u." - -#: utils/adt/xml.c:1417 -msgid "Invalid character value." -msgstr "Valor de carácter no válido." - -#: utils/adt/xml.c:1420 -msgid "Space required." -msgstr "Se requiere un espacio." - -#: utils/adt/xml.c:1423 -msgid "standalone accepts only 'yes' or 'no'." -msgstr "standalone acepta sólo 'yes' y 'no'." - -#: utils/adt/xml.c:1426 -msgid "Malformed declaration: missing version." -msgstr "Declaración mal formada: falta la versión." - -#: utils/adt/xml.c:1429 -msgid "Missing encoding in text declaration." -msgstr "Falta especificación de codificación en declaración de texto." - -#: utils/adt/xml.c:1432 -msgid "Parsing XML declaration: '?>' expected." -msgstr "Procesando declaración XML: se esperaba '?>'." +"La tabla tiene tipo %s en posición ordinal %d, pero la consulta esperaba %s." -#: utils/adt/xml.c:1435 +#: executor/nodeModifyTable.c:110 #, c-format -msgid "Unrecognized libxml error code: %d." -msgstr "Código de error libxml no reconocido: %d." +msgid "Query provides a value for a dropped column at ordinal position %d." +msgstr "" +"La consulta entrega un valor para una columna eliminada en la posición %d." -#: utils/adt/xml.c:1688 utils/adt/date.c:217 -msgid "date out of range" -msgstr "la fecha fuera de rango" +#: executor/nodeModifyTable.c:118 +msgid "Query has too few columns." +msgstr "La consulta tiene muy pocas columnas." -#: utils/adt/xml.c:1689 -msgid "XML does not support infinite date values." -msgstr "XML no soporta valores infinitos de fecha." +#: executor/nodeLimit.c:253 +msgid "OFFSET must not be negative" +msgstr "OFFSET no debe ser negativo" -#: utils/adt/xml.c:1711 utils/adt/xml.c:1718 utils/adt/xml.c:1738 -#: utils/adt/xml.c:1745 utils/adt/date.c:880 utils/adt/date.c:927 -#: utils/adt/date.c:1483 utils/adt/date.c:1520 utils/adt/date.c:2394 -#: utils/adt/formatting.c:2956 utils/adt/formatting.c:2988 -#: utils/adt/formatting.c:3056 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 "el timestamp está fuera de rango" +#: executor/nodeLimit.c:280 +msgid "LIMIT must not be negative" +msgstr "LIMIT no debe ser negativo" -#: utils/adt/xml.c:1712 utils/adt/xml.c:1739 -msgid "XML does not support infinite timestamp values." -msgstr "XML no soporta valores infinitos de timestamp." +#: executor/execMain.c:999 +#, c-format +msgid "cannot change sequence \"%s\"" +msgstr "no se puede cambiar la secuencia «%s»" -#: utils/adt/xml.c:2123 -msgid "invalid query" -msgstr "consulta no válido" +#: executor/execMain.c:1005 +#, c-format +msgid "cannot change TOAST relation \"%s\"" +msgstr "no se puede cambiar la relación TOAST «%s»" -#: utils/adt/xml.c:3352 -msgid "invalid array for XML namespace mapping" -msgstr "array no válido para mapeo de espacio de nombres XML" +#: executor/execMain.c:1015 +#, c-format +msgid "cannot insert into view \"%s\"" +msgstr "no se puede insertar en la vista «%s»" -#: utils/adt/xml.c:3353 +#: executor/execMain.c:1017 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." +"You need an unconditional ON INSERT DO INSTEAD rule or an INSTEAD OF INSERT " +"trigger." +msgstr "" +"Necesita un regla incondicional ON INSERT DO INSTEAD o un disparador INSTEAD " +"OF INSERT." -#: utils/adt/xml.c:3377 -msgid "empty XPath expression" -msgstr "expresion XPath vacía" +#: executor/execMain.c:1023 +#, c-format +msgid "cannot update view \"%s\"" +msgstr "no se puede actualizar la vista «%s»" -#: utils/adt/xml.c:3425 -msgid "neither namespace name nor URI may be null" -msgstr "ni el espacio de nombres ni la URI pueden ser vacíos" +#: executor/execMain.c:1025 +msgid "" +"You need an unconditional ON UPDATE DO INSTEAD rule or an INSTEAD OF UPDATE " +"trigger." +msgstr "" +"Necesita un regla incondicional ON UPDATE DO INSTEAD o un disparador INSTEAD " +"OF UPDATE." -#: utils/adt/xml.c:3432 +#: executor/execMain.c:1031 #, c-format -msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" +msgid "cannot delete from view \"%s\"" +msgstr "no se puede eliminar de la vista «%s»" + +#: executor/execMain.c:1033 +msgid "" +"You need an unconditional ON DELETE DO INSTEAD rule or an INSTEAD OF DELETE " +"trigger." msgstr "" -"no se pudo registrar un espacio de nombres XML llamado «%s» con URI «%s»" +"Necesita un regla incondicional ON DELETE DO INSTEAD o un disparador INSTEAD " +"OF DELETE." -#: utils/adt/acl.c:164 utils/adt/name.c:87 -msgid "identifier too long" -msgstr "el identificador es demasiado largo" +#: executor/execMain.c:1043 +#, c-format +msgid "cannot change foreign table \"%s\"" +msgstr "no se puede cambiar la tabla foránea «%s»" -#: utils/adt/acl.c:165 utils/adt/name.c:88 +#: executor/execMain.c:1049 #, c-format -msgid "Identifier must be less than %d characters." -msgstr "El identificador debe ser menor a %d caracteres." +msgid "cannot change relation \"%s\"" +msgstr "no se puede cambiar la relación «%s»" -#: utils/adt/acl.c:251 +#: executor/execMain.c:1073 #, c-format -msgid "unrecognized key word: \"%s\"" -msgstr "palabra clave no reconocida: «%s»" +msgid "cannot lock rows in sequence \"%s\"" +msgstr "no se puede bloquear registros de la secuencia «%s»" -#: utils/adt/acl.c:252 -msgid "ACL key word must be \"group\" or \"user\"." -msgstr "Palabra clave de ACL debe ser «group» o «user»." +#: executor/execMain.c:1080 +#, c-format +msgid "cannot lock rows in TOAST relation \"%s\"" +msgstr "no se puede bloquear registros en la relación TOAST «%s»" -#: utils/adt/acl.c:257 -msgid "missing name" -msgstr "falta un nombre" +#: executor/execMain.c:1087 +#, c-format +msgid "cannot lock rows in view \"%s\"" +msgstr "no se puede bloquear registros en la vista «%s»" -#: utils/adt/acl.c:258 -msgid "A name must follow the \"group\" or \"user\" key word." -msgstr "Debe venir un nombre después de una palabra clave «group» o «user»." +#: executor/execMain.c:1094 +#, c-format +msgid "cannot lock rows in foreign table \"%s\"" +msgstr "no se puede bloquear registros en la tabla foránea «%s»" -#: utils/adt/acl.c:264 -msgid "missing \"=\" sign" -msgstr "falta un signo «=»" +#: executor/execMain.c:1100 +#, c-format +msgid "cannot lock rows in relation \"%s\"" +msgstr "no se puede bloquear registros en la tabla «%s»" -#: utils/adt/acl.c:317 +#: executor/execMain.c:1571 #, c-format -msgid "invalid mode character: must be one of \"%s\"" -msgstr "carácter de modo no válido: debe ser uno de «%s»" +msgid "null value in column \"%s\" violates not-null constraint" +msgstr "el valor null para la columna «%s» viola la restricción not null" -#: utils/adt/acl.c:339 -msgid "a name must follow the \"/\" sign" -msgstr "debe venir un nombre después del signo «/»" - -#: utils/adt/acl.c:347 +#: executor/execMain.c:1583 #, c-format -msgid "defaulting grantor to user ID %u" -msgstr "usando el cedente por omisión con ID %u" +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»" -#: utils/adt/acl.c:538 -msgid "ACL array contains wrong data type" -msgstr "el array ACL contiene tipo de datos incorrecto" +#: executor/nodeMergejoin.c:1604 +msgid "RIGHT JOIN is only supported with merge-joinable join conditions" +msgstr "" +"RIGHT JOIN sólo está soportado con condiciones que se pueden usar con merge " +"join" -#: utils/adt/acl.c:542 -msgid "ACL arrays must be one-dimensional" -msgstr "los array de ACL debe ser unidimensional" +#: executor/nodeMergejoin.c:1624 +msgid "FULL JOIN is only supported with merge-joinable join conditions" +msgstr "" +"FULL JOIN sólo está soportado con condiciones que se pueden usar con merge " +"join" -#: utils/adt/acl.c:546 -msgid "ACL arrays must not contain null values" -msgstr "los arrays de ACL no pueden contener valores nulos" +#: executor/execUtils.c:1308 +#, c-format +msgid "could not create exclusion constraint \"%s\"" +msgstr "no se pudo crear la restricción por exclusión «%s»" -#: utils/adt/acl.c:570 -msgid "extra garbage at the end of the ACL specification" -msgstr "basura extra al final de la especificación de la ACL" +#: executor/execUtils.c:1310 +#, c-format +msgid "Key %s conflicts with key %s." +msgstr "La llave %s está en conflicto con la llave %s." -#: utils/adt/acl.c:1127 -msgid "grant options cannot be granted back to your own grantor" -msgstr "la opción de grant no puede ser otorgada de vuelta a quien la otorgó" +#: executor/execUtils.c:1315 +#, c-format +msgid "conflicting key value violates exclusion constraint \"%s\"" +msgstr "llave en conflicto viola restricción por exclusión «%s»" -#: utils/adt/acl.c:1188 -msgid "dependent privileges exist" -msgstr "existen privilegios dependientes" +#: executor/execUtils.c:1317 +#, c-format +msgid "Key %s conflicts with existing key %s." +msgstr "La llave %s está en conflicto con la llave existente %s." -#: utils/adt/acl.c:1189 -msgid "Use CASCADE to revoke them too." -msgstr "Use CASCADE para revocarlos también." +#: executor/spi.c:210 +msgid "transaction left non-empty SPI stack" +msgstr "transacción dejó un stack SPI no vacío" -#: utils/adt/acl.c:1468 -msgid "aclinsert is no longer supported" -msgstr "aclinsert ya no está soportado" +#: executor/spi.c:211 executor/spi.c:275 +msgid "Check for missing \"SPI_finish\" calls." +msgstr "Revise llamadas a «SPI_finish» faltantes." -#: utils/adt/acl.c:1478 -msgid "aclremove is no longer supported" -msgstr "aclremove ya no está soportado" +#: executor/spi.c:274 +msgid "subtransaction left non-empty SPI stack" +msgstr "subtransacción dejó un stack SPI no vacío" + +#: executor/spi.c:1137 +msgid "cannot open multi-query plan as cursor" +msgstr "no se puede abrir plan de varias consultas como cursor" -#: utils/adt/acl.c:1564 utils/adt/acl.c:1618 +#. translator: %s is name of a SQL command, eg INSERT +#: executor/spi.c:1142 #, c-format -msgid "unrecognized privilege type: \"%s\"" -msgstr "tipo de privilegio no reconocido: «%s»" +msgid "cannot open %s query as cursor" +msgstr "no se puede abrir consulta %s como cursor" -#: utils/adt/acl.c:3364 utils/adt/regproc.c:118 utils/adt/regproc.c:139 -#: utils/adt/regproc.c:289 +#: executor/spi.c:1233 parser/analyze.c:2213 +msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE no está soportado" + +#: executor/spi.c:1234 parser/analyze.c:2214 +msgid "Scrollable cursors must be READ ONLY." +msgstr "Los cursores declarados SCROLL deben ser READ ONLY." + +#: executor/spi.c:2157 #, c-format -msgid "function \"%s\" does not exist" -msgstr "no existe la función «%s»" +msgid "SQL statement \"%s\"" +msgstr "sentencia SQL: «%s»" -#: utils/adt/acl.c:4635 +#: executor/nodeHashjoin.c:814 executor/nodeHashjoin.c:844 #, c-format -msgid "must be member of role \"%s\"" -msgstr "debe ser miembro del rol «%s»" +msgid "could not rewind hash-join temporary file: %m" +msgstr "falló la búsqueda en el archivo temporal de hash-join: %m" -#: utils/adt/array_userfuncs.c:48 -msgid "could not determine input data types" -msgstr "no se pudo determinar el tipo de datos de entrada" +#: executor/nodeHashjoin.c:879 executor/nodeHashjoin.c:885 +#, c-format +msgid "could not write to hash-join temporary file: %m" +msgstr "no se pudo escribir el archivo temporal de hash-join: %m" -#: utils/adt/array_userfuncs.c:82 -msgid "neither input type is an array" -msgstr "ninguno de los tipos de entrada es un array" +#: executor/nodeHashjoin.c:919 executor/nodeHashjoin.c:929 +#, c-format +msgid "could not read from hash-join temporary file: %m" +msgstr "no se pudo leer el archivo temporal de hash-join: %m" -#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113 -#: utils/adt/arrayfuncs.c:1251 utils/adt/float.c:1101 utils/adt/float.c:1160 -#: utils/adt/float.c:2711 utils/adt/float.c:2727 utils/adt/int.c:622 -#: utils/adt/int.c:651 utils/adt/int.c:672 utils/adt/int.c:692 -#: utils/adt/int.c:714 utils/adt/int.c:739 utils/adt/int.c:753 -#: utils/adt/int.c:768 utils/adt/int.c:903 utils/adt/int.c:924 -#: utils/adt/int.c:951 utils/adt/int.c:991 utils/adt/int.c:1012 -#: utils/adt/int.c:1039 utils/adt/int.c:1066 utils/adt/int.c:1120 -#: utils/adt/int8.c:1196 utils/adt/numeric.c:2062 utils/adt/numeric.c:2071 -#: utils/adt/varbit.c:1098 utils/adt/varbit.c:1483 utils/adt/varlena.c:942 -#: utils/adt/varlena.c:1915 -msgid "integer out of range" -msgstr "el entero está fuera de rango" +#: executor/execCurrent.c:75 +#, c-format +msgid "cursor \"%s\" is not a SELECT query" +msgstr "el cursor «%s» no es una orden SELECT" -#: utils/adt/array_userfuncs.c:121 -msgid "argument must be empty or one-dimensional array" -msgstr "el argumento debe ser vacío o un array unidimensional" +#: executor/execCurrent.c:81 +#, c-format +msgid "cursor \"%s\" is held from a previous transaction" +msgstr "el cursor «%s» está abierto desde una transacción anterior" -#: 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 "no se pueden concatenar arrays incompatibles" +#: executor/execCurrent.c:113 +#, c-format +msgid "cursor \"%s\" has multiple FOR UPDATE/SHARE references to table \"%s\"" +msgstr "" +"el cursor «%s» tiene múltiples referencias FOR UPDATE/SHARE a la tabla «%s»" -#: utils/adt/array_userfuncs.c:225 +#: executor/execCurrent.c:122 #, c-format msgid "" -"Arrays with element types %s and %s are not compatible for concatenation." +"cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\"" msgstr "" -"Los arrays con elementos de tipo %s y %s son incompatibles para la " -"concatenación." +"el cursor «%s» no tiene una referencia FOR UPDATE/SHARE a la tabla «%s»" -#: utils/adt/array_userfuncs.c:264 +#: executor/execCurrent.c:132 executor/execCurrent.c:178 #, c-format -msgid "Arrays of %d and %d dimensions are not compatible for concatenation." -msgstr "" -"Los arrays de dimesiones %d y %d son incompatibles para la concatenación." +msgid "cursor \"%s\" is not positioned on a row" +msgstr "el cursor «%s» no está posicionado en una fila" -#: utils/adt/array_userfuncs.c:301 -msgid "" -"Arrays with differing element dimensions are not compatible for " -"concatenation." +#: executor/execCurrent.c:165 +#, c-format +msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\"" msgstr "" -"Los arrays con elementos de diferentes dimensiones son incompatibles para la " -"concatenación." +"el cursor «%s» no es un recorrido simplemente actualizable de la tabla «%s»" -#: utils/adt/array_userfuncs.c:330 utils/adt/array_userfuncs.c:358 -msgid "Arrays with differing dimensions are not compatible for concatenation." +#: executor/execCurrent.c:230 executor/execQual.c:1126 +#, c-format +msgid "" +"type of parameter %d (%s) does not match that when preparing the plan (%s)" msgstr "" -"Los arrays con diferentes dimensiones son incompatibles para la " -"concatenación." +"el tipo del parámetro %d (%s) no coincide aquel con que fue preparado el " +"plan (%s)" -#: utils/adt/array_userfuncs.c:424 utils/adt/arrayfuncs.c:1214 -#: utils/adt/arrayfuncs.c:2882 utils/adt/arrayfuncs.c:4562 +#: executor/execCurrent.c:242 executor/execQual.c:1138 #, c-format -msgid "invalid number of dimensions: %d" -msgstr "número incorrecto de dimensiones: %d" - -#: utils/adt/array_userfuncs.c:484 -msgid "could not determine input data type" -msgstr "no se pudo determinar el tipo de dato de entrada" - -#: utils/adt/arrayfuncs.c:211 utils/adt/arrayfuncs.c:223 -msgid "missing dimension value" -msgstr "falta un valor de dimensión" - -#: utils/adt/arrayfuncs.c:233 -msgid "missing \"]\" in array dimensions" -msgstr "falta un «]» en las dimensiones de array" +msgid "no value found for parameter %d" +msgstr "no se encontró un valor para parámetro %d" -#: utils/adt/arrayfuncs.c:241 utils/adt/arrayfuncs.c:2411 -#: utils/adt/arrayfuncs.c:2439 utils/adt/arrayfuncs.c:2454 -msgid "upper bound cannot be less than lower bound" -msgstr "el límite superior no puede ser menor que el límite inferior" +#: executor/execQual.c:316 executor/execQual.c:344 +msgid "array subscript in assignment must not be null" +msgstr "subíndice de array en asignación no puede ser nulo" -#: utils/adt/arrayfuncs.c:253 utils/adt/arrayfuncs.c:279 -msgid "array value must start with \"{\" or dimension information" -msgstr "el valor de array debe comenzar con «{» o información de dimensión" +#: executor/execQual.c:637 executor/execQual.c:3998 +#, c-format +msgid "attribute %d has wrong type" +msgstr "el atributo %d tiene tipo erróneo" -#: utils/adt/arrayfuncs.c:267 -msgid "missing assignment operator" -msgstr "falta un operador de asignación" +#: executor/execQual.c:638 executor/execQual.c:3999 +#, c-format +msgid "Table has type %s, but query expects %s." +msgstr "La tabla tiene tipo %s, pero la consulta esperaba %s." -#: utils/adt/arrayfuncs.c:284 utils/adt/arrayfuncs.c:290 -msgid "array dimensions incompatible with array literal" -msgstr "las dimensiones del array no son compatibles con el literal" +#: executor/execQual.c:838 +#, 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." -#: utils/adt/arrayfuncs.c:420 utils/adt/arrayfuncs.c:435 -#: utils/adt/arrayfuncs.c:444 utils/adt/arrayfuncs.c:458 -#: utils/adt/arrayfuncs.c:478 utils/adt/arrayfuncs.c:506 -#: utils/adt/arrayfuncs.c:511 utils/adt/arrayfuncs.c:551 -#: utils/adt/arrayfuncs.c:572 utils/adt/arrayfuncs.c:591 -#: utils/adt/arrayfuncs.c:701 utils/adt/arrayfuncs.c:710 -#: utils/adt/arrayfuncs.c:740 utils/adt/arrayfuncs.c:755 -#: utils/adt/arrayfuncs.c:808 +#: executor/execQual.c:1015 executor/execQual.c:1612 #, c-format -msgid "malformed array literal: \"%s\"" -msgstr "literal de array no es válido: «%s»" +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." -#: utils/adt/arrayfuncs.c:847 utils/adt/arrayfuncs.c:1448 -#: utils/adt/arrayfuncs.c:2766 utils/adt/arrayfuncs.c:2914 -#: utils/adt/arrayfuncs.c:4662 utils/adt/arrayutils.c:93 -#: utils/adt/arrayutils.c:102 utils/adt/arrayutils.c:109 +#: executor/execQual.c:1291 parser/parse_func.c:91 parser/parse_func.c:323 +#: parser/parse_func.c:640 #, c-format -msgid "array size exceeds the maximum allowed (%d)" -msgstr "el tamaño del array excede el máximo permitido (%d)" +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" -#: utils/adt/arrayfuncs.c:1225 -msgid "invalid array flags" -msgstr "opciones de array no válidas" +#: executor/execQual.c:1480 +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" -#: utils/adt/arrayfuncs.c:1233 -msgid "wrong element type" -msgstr "el tipo de elemento es erróneo" +#: executor/execQual.c:1530 +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" -#: utils/adt/arrayfuncs.c:1422 -#, c-format -msgid "improper binary format in array element %d" -msgstr "el formato binario no es válido en elemento %d de array" +#: executor/execQual.c:1585 executor/execQual.c:1601 executor/execQual.c:1611 +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" -#: utils/adt/arrayfuncs.c:1878 -msgid "slices of fixed-length arrays not implemented" -msgstr "no está implementada la obtención de segmentos de arrays de largo fijo" +#: executor/execQual.c:1586 +#, 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." -#: utils/adt/arrayfuncs.c:2051 utils/adt/arrayfuncs.c:2073 -#: utils/adt/arrayfuncs.c:2107 utils/adt/arrayfuncs.c:2393 -#: utils/adt/arrayfuncs.c:4542 utils/adt/arrayfuncs.c:4574 -#: utils/adt/arrayfuncs.c:4591 -msgid "wrong number of array subscripts" -msgstr "número incorrecto de subíndices del array" +#: executor/execQual.c:1602 +#, 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." -#: utils/adt/arrayfuncs.c:2056 utils/adt/arrayfuncs.c:2149 -#: utils/adt/arrayfuncs.c:2444 -msgid "array subscript out of range" -msgstr "los subíndices de arrays están fuera de rango" +#: executor/execQual.c:1838 executor/execQual.c:2263 +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" -#: utils/adt/arrayfuncs.c:2061 -msgid "cannot assign null value to an element of a fixed-length array" +#: executor/execQual.c:1858 executor/execQual.c:2270 +#, c-format +msgid "unrecognized table-function returnMode: %d" msgstr "" -"no se puede asignar un valor nulo a un elemento de un array de longitud fija" +"modo de retorno (returnMode) de la función tabular no es reconocido: %d" -#: utils/adt/arrayfuncs.c:2347 -msgid "updates on slices of fixed-length arrays not implemented" +#: executor/execQual.c:2180 +msgid "function returning set of rows cannot return null value" msgstr "" -"no están implementadas las actualizaciones en segmentos de arrays de largo " -"fija" +"una función que retorna un conjunto de registros no puede devolver un valor " +"null" -#: utils/adt/arrayfuncs.c:2383 utils/adt/arrayfuncs.c:2470 -msgid "source array too small" -msgstr "el array de origen es demasiado pequeño" +#: executor/execQual.c:2237 +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" -#: utils/adt/arrayfuncs.c:3021 -msgid "null array element not allowed in this context" -msgstr "los arrays con elementos null no son permitidos en este contexto" +#: executor/execQual.c:2428 +msgid "IS DISTINCT FROM does not support set arguments" +msgstr "IS DISTINCT FROM no soporta argumentos que sean conjuntos" -#: utils/adt/arrayfuncs.c:3082 utils/adt/arrayfuncs.c:3289 -#: utils/adt/arrayfuncs.c:3489 -msgid "cannot compare arrays of different element types" -msgstr "no se pueden comparar arrays con elementos de distintos tipos" +#: executor/execQual.c:2505 +msgid "op ANY/ALL (array) does not support set arguments" +msgstr "op ANY/ALL (array) no soporta argumentos que sean conjuntos" + +#: executor/execQual.c:3058 +msgid "cannot merge incompatible arrays" +msgstr "no se puede mezclar arrays incompatibles" -#: utils/adt/arrayfuncs.c:4440 utils/adt/arrayfuncs.c:4480 -msgid "dimension array or low bound array cannot be NULL" +#: executor/execQual.c:3059 +#, c-format +msgid "" +"Array with element type %s cannot be included in ARRAY construct with " +"element type %s." msgstr "" -"el array de dimensiones o el array de límites inferiores no puede ser NULL" +"El array con tipo de elemento %s no puede ser incluido en una sentencia " +"ARRAY con tipo de elemento %s." -#: utils/adt/arrayfuncs.c:4543 utils/adt/arrayfuncs.c:4575 -msgid "Dimension array must be one dimensional." -msgstr "El array de dimensiones debe ser unidimensional." +#: executor/execQual.c:3642 +msgid "NULLIF does not support set arguments" +msgstr "NULLIF no soporta argumentos que sean conjuntos" -#: utils/adt/arrayfuncs.c:4548 utils/adt/arrayfuncs.c:4580 -msgid "wrong range of array subscripts" -msgstr "rango incorrecto en los subíndices del array" +#: executor/execQual.c:4394 optimizer/util/clauses.c:573 +#: parser/parse_agg.c:164 +msgid "aggregate function calls cannot be nested" +msgstr "no se pueden anidar llamadas a funciones de agregación" -#: utils/adt/arrayfuncs.c:4549 utils/adt/arrayfuncs.c:4581 -msgid "Lower bound of dimension array must be one." -msgstr "El límite inferior del array de dimensiones debe ser uno." +#: executor/execQual.c:4432 optimizer/util/clauses.c:647 +#: parser/parse_agg.c:211 +msgid "window function calls cannot be nested" +msgstr "no se pueden anidar llamadas a funciones de ventana deslizante" -#: utils/adt/arrayfuncs.c:4554 utils/adt/arrayfuncs.c:4586 -msgid "dimension values cannot be null" -msgstr "los valores de dimensión no pueden ser null" +#: executor/execQual.c:4644 +msgid "target type is not an array" +msgstr "el tipo de destino no es un array" -#: utils/adt/arrayfuncs.c:4592 -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." +#: executor/execQual.c:4757 +#, 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" -#: utils/adt/arrayutils.c:209 -msgid "typmod array must be type cstring[]" -msgstr "el array de typmod debe ser de tipo cstring[]" +#: replication/walreceiver.c:150 +msgid "terminating walreceiver process due to administrator command" +msgstr "terminando el proceso walreceiver debido a una orden del administrador" -#: utils/adt/arrayutils.c:214 -msgid "typmod array must be one-dimensional" -msgstr "array de typmod debe ser unidimensional" +#: replication/walreceiver.c:304 +msgid "cannot continue WAL streaming, recovery has already ended" +msgstr "no se puede continuar el flujo de WAL; la recuperación ya ha terminado" -#: utils/adt/arrayutils.c:219 -msgid "typmod array must not contain nulls" -msgstr "los arrays de typmod no deben contener valores nulos" +#: replication/walsender.c:142 +msgid "recovery is still in progress, can't accept WAL streaming connections" +msgstr "" +"la recuperación aún está en proceso; no se pueden aceptar conexiones de " +"flujos de WAL" -#: utils/adt/ascii.c:75 +#: replication/walsender.c:262 replication/walsender.c:490 +#: replication/walsender.c:548 +msgid "unexpected EOF on standby connection" +msgstr "se encontró fin de archivo inesperado en la conexión standby" + +#: replication/walsender.c:268 #, c-format -msgid "encoding conversion from %s to ASCII not supported" -msgstr "la conversión de codificación de %s a ASCII no está soportada" +msgid "invalid standby handshake message type %d" +msgstr "el tipo %d de mensaje de saludo del standby no es válido" -#: utils/adt/bool.c:153 +#: replication/walsender.c:380 +msgid "standby connections not allowed because wal_level=minimal" +msgstr "las conexiones standby no están permitidas porque wal_level=minimal" + +#: replication/walsender.c:462 #, c-format -msgid "invalid input syntax for type boolean: \"%s\"" -msgstr "la sintaxis de entrada no es válida para tipo boolean: «%s»" +msgid "invalid standby query string: %s" +msgstr "la cadena de consulta de standby no es válida: %s" -#: utils/adt/cash.c:232 +#: replication/walsender.c:519 #, c-format -msgid "invalid input syntax for type money: \"%s\"" -msgstr "la sintaxis de entrada no es válida para tipo money: «%s»" +msgid "invalid standby message type \"%c\"" +msgstr "el tipo «%c» de mensaje del standby no es válido" -#: utils/adt/cash.c:524 utils/adt/cash.c:575 utils/adt/cash.c:624 -#: utils/adt/cash.c:676 utils/adt/cash.c:726 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:4128 utils/adt/int.c:728 utils/adt/int.c:869 -#: utils/adt/int.c:965 utils/adt/int.c:1053 utils/adt/int.c:1079 -#: utils/adt/int.c:1099 utils/adt/int8.c:597 utils/adt/int8.c:644 -#: utils/adt/int8.c:820 utils/adt/int8.c:916 utils/adt/int8.c:1004 -#: utils/adt/int8.c:1100 utils/adt/numeric.c:4298 utils/adt/numeric.c:4581 -#: utils/adt/timestamp.c:2876 -msgid "division by zero" -msgstr "división por cero" +#: replication/walsender.c:570 +#, c-format +msgid "unexpected message type \"%c\"" +msgstr "mensaje de tipo «%c» inesperado" -#: utils/adt/char.c:169 -msgid "\"char\" out of range" -msgstr "«char» está fuera de rango" +#: replication/walsender.c:764 +#, c-format +msgid "standby \"%s\" has now caught up with primary" +msgstr "el standby «%s» ahora está actualizado respecto del primario" -#: utils/adt/date.c:66 utils/adt/timestamp.c:92 utils/adt/varbit.c:49 -#: utils/adt/varchar.c:43 -msgid "invalid type modifier" -msgstr "el modificador de tipo no es válido" +#: replication/walsender.c:844 +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" -#: utils/adt/date.c:71 +#: replication/walsender.c:911 #, c-format -msgid "TIME(%d)%s precision must not be negative" -msgstr "la precisión de TIME(%d)%s no debe ser negativa" +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)" -#: utils/adt/date.c:77 +#: replication/walsender.c:989 replication/walsender.c:1051 #, c-format -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:142 utils/adt/datetime.c:1186 utils/adt/datetime.c:1934 -msgid "date/time value \"current\" is no longer supported" -msgstr "valor de hora/fecha «current» ya no está soportado" +msgid "requested WAL segment %s has already been removed" +msgstr "el segmento de WAL solicitado %s ya ha sido eliminado" -#: utils/adt/date.c:167 +#: replication/walsender.c:1022 #, c-format -msgid "date out of range: \"%s\"" -msgstr "fecha fuera de rango: «%s»" +msgid "could not read from log file %u, segment %u, offset %u, length %lu: %m" +msgstr "" +"no se pudo leer desde el archivo de registro %u, segmento %u en la posición " +"%u, largo %lu: %m" -#: utils/adt/date.c:359 -msgid "cannot subtract infinite dates" -msgstr "no se pueden restar fechas infinitas" +#: replication/basebackup.c:126 replication/basebackup.c:715 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "no se pudo leer el enlace simbólico «%s»: %m" -#: utils/adt/date.c:416 utils/adt/date.c:453 -msgid "date out of range for timestamp" -msgstr "fecha fuera de rango para timestamp" +#: replication/basebackup.c:133 replication/basebackup.c:719 +#, c-format +msgid "symbolic link \"%s\" target is too long" +msgstr "la ruta «%s» del enlace simbólico es demasiado larga" -#: utils/adt/date.c:953 -msgid "cannot convert reserved abstime value to date" -msgstr "no se puede convertir un valor reservado de abstime a date" +#: replication/basebackup.c:190 +#, c-format +msgid "could not stat control file \"%s\": %m" +msgstr "no se pudo hacer stat del archivo de control «%s»: %m" -#: utils/adt/date.c:1107 utils/adt/date.c:1114 utils/adt/date.c:1882 -#: utils/adt/date.c:1889 -msgid "time out of range" -msgstr "hora fuera de rango" +#: replication/basebackup.c:267 replication/basebackup.c:868 +msgid "base backup could not send data, aborting backup" +msgstr "el respaldo base no pudo enviar datos, abortando el respaldo" -#: utils/adt/date.c:1760 utils/adt/date.c:1777 +#: replication/basebackup.c:314 replication/basebackup.c:323 +#: replication/basebackup.c:332 replication/basebackup.c:341 +#: replication/basebackup.c:350 #, c-format -msgid "\"time\" units \"%s\" not recognized" -msgstr "las unidades de «time» «%s» no son reconocidas" - -#: utils/adt/date.c:1899 -msgid "time zone displacement out of range" -msgstr "desplazamiento de huso horario fuera de rango" +msgid "duplicate option \"%s\"" +msgstr "nombre de opción «%s» duplicada" -#: utils/adt/date.c:2524 utils/adt/date.c:2541 +#: replication/basebackup.c:402 #, c-format -msgid "\"time with time zone\" units \"%s\" not recognized" -msgstr "las unidades de «timestamp with time zone» «%s» no son reconocidas" +msgid "could not open directory \"pg_tblspc\": %m" +msgstr "no se pudo abrir el directorio «pg_tblspc»: %m" -#: utils/adt/date.c:2599 utils/adt/datetime.c:928 utils/adt/datetime.c:1663 -#: utils/adt/timestamp.c:4452 utils/adt/timestamp.c:4625 +#: replication/basebackup.c:597 replication/basebackup.c:669 #, c-format -msgid "time zone \"%s\" not recognized" -msgstr "el huso horario «%s» no es reconocido" +msgid "could not stat file or directory \"%s\": %m" +msgstr "no se pudo hacer stat al archivo o directorio «%s»: %m" -#: utils/adt/date.c:2639 +#: replication/basebackup.c:655 +msgid "shutdown requested, aborting active base backup" +msgstr "apagado solicitado, abortando el respaldo base activo" + +#: replication/basebackup.c:768 #, c-format -msgid "\"interval\" time zone \"%s\" not valid" -msgstr "el huso horario «%s» de «interval» no es válido" +msgid "skipping special file \"%s\"" +msgstr "ignorando el archivo especial «%s»" -#: utils/adt/datetime.c:3529 utils/adt/datetime.c:3536 +#: replication/basebackup.c:858 #, c-format -msgid "date/time field value out of range: \"%s\"" -msgstr "el valor de hora/fecha está fuera de rango: «%s»" +msgid "archive member \"%s\" too large for tar format" +msgstr "el miembro de archivador «%s» es demasiado grande para el formato tar" -#: utils/adt/datetime.c:3538 -msgid "Perhaps you need a different \"datestyle\" setting." -msgstr "Quizás necesite una configuración diferente de «datestyle»." +#: replication/syncrep.c:210 +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" -#: utils/adt/datetime.c:3543 -#, c-format -msgid "interval field value out of range: \"%s\"" -msgstr "el valor de interval está fuera de rango: «%s»" +#: replication/syncrep.c:211 replication/syncrep.c:228 +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." -#: utils/adt/datetime.c:3549 +#: replication/syncrep.c:227 +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:358 #, c-format -msgid "time zone displacement out of range: \"%s\"" -msgstr "el desplazamiento de huso horario está fuera de rango: «%s»" +msgid "standby \"%s\" now has synchronous standby priority %u" +msgstr "el standby «%s» ahora tiene prioridad sincrónica %u" -#. translator: first %s is inet or cidr -#: utils/adt/datetime.c:3556 utils/adt/network.c:107 +#: replication/syncrep.c:456 #, c-format -msgid "invalid input syntax for type %s: \"%s\"" -msgstr "la sintaxis de entrada no es válida para tipo %s: «%s»" +msgid "standby \"%s\" is now the synchronous standby with priority %u" +msgstr "el standby «%s» es ahora el standby sincrónico con prioridad %u" -#: utils/adt/datum.c:80 utils/adt/datum.c:92 -msgid "invalid Datum pointer" -msgstr "puntero a Datum no válido" +#: repl_scanner.l:76 +msgid "invalid streaming start location" +msgstr "posición de inicio de flujo de WAL no válida" -#: utils/adt/dbsize.c:105 utils/adt/dbsize.c:195 -#, c-format -msgid "could not open tablespace directory \"%s\": %m" -msgstr "no se pudo abrir el directorio de tablespace «%s»: %m" +#: repl_scanner.l:97 scan.l:629 +msgid "unterminated quoted string" +msgstr "una cadena de caracteres entre comillas está inconclusa" -#: utils/adt/domains.c:80 +#: repl_scanner.l:107 #, c-format -msgid "type %s is not a domain" -msgstr "tipo «%s» no es un dominio" +msgid "syntax error: unexpected character \"%s\"" +msgstr "error de sintaxis: carácter «%s» inesperado" -#: utils/adt/encode.c:55 utils/adt/encode.c:91 +#: replication/libpqwalreceiver/libpqwalreceiver.c:101 #, c-format -msgid "unrecognized encoding: \"%s\"" -msgstr "no se reconoce la codificación: «%s»" +msgid "could not connect to the primary server: %s" +msgstr "no se pudo hacer la conexión al servidor primario: %s" -#: utils/adt/encode.c:150 +#: replication/libpqwalreceiver/libpqwalreceiver.c:113 #, c-format -msgid "invalid hexadecimal digit: \"%c\"" -msgstr "el dígito hexadecimal no es válido: «%c»" - -#: utils/adt/encode.c:178 -msgid "invalid hexadecimal data: odd number of digits" -msgstr "el dato hexadecimal no es válido: tiene un número impar de dígitos" - -#: utils/adt/encode.c:295 -msgid "unexpected \"=\"" -msgstr "«=» inesperado" +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" -#: utils/adt/encode.c:307 -msgid "invalid symbol" -msgstr "símbolo no válido" +#: replication/libpqwalreceiver/libpqwalreceiver.c:124 +msgid "invalid response from primary server" +msgstr "respuesta no válida del servidor primario" -#: utils/adt/encode.c:327 -msgid "invalid end sequence" -msgstr "secuencia de término no válida" +#: replication/libpqwalreceiver/libpqwalreceiver.c:125 +#, 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." -#: utils/adt/encode.c:441 utils/adt/encode.c:506 utils/adt/varlena.c:238 -#: utils/adt/varlena.c:279 -msgid "invalid input syntax for type bytea" -msgstr "sintaxis de entrada no válida para tipo bytea" +#: replication/libpqwalreceiver/libpqwalreceiver.c:140 +msgid "database system identifier differs between the primary and standby" +msgstr "el identificador de sistema difiere entre el primario y el standby" -#: utils/adt/enum.c:44 utils/adt/enum.c:54 utils/adt/enum.c:109 -#: utils/adt/enum.c:119 +#: replication/libpqwalreceiver/libpqwalreceiver.c:141 #, c-format -msgid "invalid input value for enum %s: \"%s\"" -msgstr "la sintaxis de entrada no es válida para el enum %s: «%s»" +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." -#: utils/adt/enum.c:81 utils/adt/enum.c:144 +#: replication/libpqwalreceiver/libpqwalreceiver.c:153 #, c-format -msgid "invalid internal value for enum: %u" -msgstr "el valor interno no es válido para enum: %u" +msgid "timeline %u of the primary does not match recovery target timeline %u" +msgstr "" +"el timeline %u del primario no coincide con el timeline destino de " +"recuperación %u" -#: utils/adt/enum.c:264 utils/adt/enum.c:303 utils/adt/enum.c:350 -#: utils/adt/enum.c:370 -msgid "could not determine actual enum type" -msgstr "no se pudo determinar el tipo enum efectivo" +#: replication/libpqwalreceiver/libpqwalreceiver.c:165 +#, c-format +msgid "could not start WAL streaming: %s" +msgstr "no se pudo iniciar el flujo de WAL: %s" -#: utils/adt/float.c:54 -msgid "value out of range: overflow" -msgstr "valor fuera de rango: desbordamiento" +#: replication/libpqwalreceiver/libpqwalreceiver.c:171 +msgid "streaming replication successfully connected to primary" +msgstr "la replicación en flujo se ha conectado exitosamente al primario" -#: utils/adt/float.c:59 -msgid "value out of range: underflow" -msgstr "valor fuera de rango: desbordamiento por abajo" +#: replication/libpqwalreceiver/libpqwalreceiver.c:193 +msgid "socket not open" +msgstr "el socket no está abierto" -#: utils/adt/float.c:206 utils/adt/float.c:247 utils/adt/float.c:298 +#: replication/libpqwalreceiver/libpqwalreceiver.c:233 port/pg_latch.c:265 +#: port/unix_latch.c:265 #, c-format -msgid "invalid input syntax for type real: \"%s\"" -msgstr "la sintaxis de entrada no es válida para tipo real: «%s»" +msgid "select() failed: %m" +msgstr "select() fallida: %m" -#: utils/adt/float.c:242 +#: replication/libpqwalreceiver/libpqwalreceiver.c:367 +#: replication/libpqwalreceiver/libpqwalreceiver.c:388 +#: replication/libpqwalreceiver/libpqwalreceiver.c:393 #, c-format -msgid "\"%s\" is out of range for type real" -msgstr "«%s» está fuera de rango para el tipo real" +msgid "could not receive data from WAL stream: %s" +msgstr "no se pudo recibir datos desde el flujo de WAL: %s" -#: utils/adt/float.c:399 utils/adt/float.c:440 utils/adt/float.c:491 -#: utils/adt/numeric.c:3760 utils/adt/numeric.c:3786 -#, 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»" +#: replication/libpqwalreceiver/libpqwalreceiver.c:384 +msgid "replication terminated by primary server" +msgstr "replicación terminada por el servidor primario" -#: utils/adt/float.c:435 +#: replication/libpqwalreceiver/libpqwalreceiver.c:415 #, c-format -msgid "\"%s\" is out of range for type double precision" -msgstr "«%s» está fuera de rango para el tipo double precision" +msgid "could not send data to WAL stream: %s" +msgstr "no se pudo enviar datos al flujo de WAL: %s" -#: utils/adt/float.c:1119 utils/adt/float.c:1177 utils/adt/int.c:348 -#: utils/adt/int.c:784 utils/adt/int.c:813 utils/adt/int.c:834 -#: utils/adt/int.c:854 utils/adt/int.c:882 utils/adt/int.c:1135 -#: utils/adt/int8.c:1221 utils/adt/numeric.c:2163 utils/adt/numeric.c:2174 -msgid "smallint out of range" -msgstr "smallint está fuera de rango" +#: optimizer/plan/initsplan.c:598 +msgid "" +"SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer " +"join" +msgstr "" +"SELECT FOR UPDATE/SHARE no puede ser aplicado al lado nulable de un outer " +"join" -#: utils/adt/float.c:1303 utils/adt/numeric.c:4974 -msgid "cannot take square root of a negative number" -msgstr "no se puede calcular la raíz cuadrada un de número negativo" +#: optimizer/plan/planner.c:940 parser/analyze.c:1333 parser/analyze.c:1541 +#: parser/analyze.c:2270 +msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT" +msgstr "SELECT FOR UPDATE/SHARE no está permitido con UNION/INTERSECT/EXCEPT" -#: utils/adt/float.c:1345 utils/adt/numeric.c:1975 -msgid "zero raised to a negative power is undefined" -msgstr "cero elevado a una potencia negativa es indefinido" +#: optimizer/plan/planner.c:2235 +msgid "could not implement GROUP BY" +msgstr "no se pudo implementar GROUP BY" -#: utils/adt/float.c:1349 utils/adt/numeric.c:1981 -msgid "a negative number raised to a non-integer power yields a complex result" +#: optimizer/plan/planner.c:2236 optimizer/plan/planner.c:2408 +#: optimizer/prep/prepunion.c:801 +msgid "" +"Some of the datatypes only support hashing, while others only support " +"sorting." msgstr "" -"un número negativo elevado a una potencia no positiva entrega un resultado " -"complejo" +"Algunos de los tipos sólo soportan hashing, mientras que otros sólo soportan " +"ordenamiento." -#: utils/adt/float.c:1415 utils/adt/float.c:1445 utils/adt/numeric.c:5192 -msgid "cannot take logarithm of zero" -msgstr "no se puede calcular logaritmo de cero" +#: optimizer/plan/planner.c:2407 +msgid "could not implement DISTINCT" +msgstr "no se pudo implementar DISTINCT" -#: utils/adt/float.c:1419 utils/adt/float.c:1449 utils/adt/numeric.c:5196 -msgid "cannot take logarithm of a negative number" -msgstr "no se puede calcular logaritmo de un número negativo" +#: optimizer/plan/planner.c:2873 +msgid "could not implement window PARTITION BY" +msgstr "No se pudo implementar PARTITION BY de ventana" -#: 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 "la entrada está fuera de rango" +#: optimizer/plan/planner.c:2874 +msgid "Window partitioning columns must be of sortable datatypes." +msgstr "" +"Las columnas de particionamiento de ventana deben de tipos que se puedan " +"ordenar." -#: utils/adt/float.c:2687 utils/adt/numeric.c:982 -msgid "count must be greater than zero" -msgstr "count debe ser mayor que cero" +#: optimizer/plan/planner.c:2878 +msgid "could not implement window ORDER BY" +msgstr "no se pudo implementar ORDER BY de ventana" -#: utils/adt/float.c:2692 utils/adt/numeric.c:989 -msgid "operand, lower bound and upper bound cannot be NaN" -msgstr "el operando, límite inferior y límite superior no pueden ser NaN" +#: optimizer/plan/planner.c:2879 +msgid "Window ordering columns must be of sortable datatypes." +msgstr "" +"Las columnas de ordenamiento de ventana debe ser de tipos que se puedan " +"ordenar." -#: utils/adt/float.c:2698 -msgid "lower and upper bounds must be finite" -msgstr "los límites inferior y superior deben ser finitos" +#: optimizer/prep/prepunion.c:395 +msgid "could not implement recursive UNION" +msgstr "no se pudo implementar UNION recursivo" -#: utils/adt/float.c:2736 utils/adt/numeric.c:1002 -msgid "lower bound cannot equal upper bound" -msgstr "el límite superior no puede ser igual al límite inferior" +#: optimizer/prep/prepunion.c:396 +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." -#: utils/adt/formatting.c:491 -msgid "invalid format specification for an interval value" -msgstr "especificación de formato no válida para un valor de interval" +#. translator: %s is UNION, INTERSECT, or EXCEPT +#: optimizer/prep/prepunion.c:800 +#, c-format +msgid "could not implement %s" +msgstr "no se pudo implementar %s" -#: utils/adt/formatting.c:492 -msgid "Intervals are not tied to specific calendar dates." +#: optimizer/path/joinrels.c:673 +msgid "" +"FULL JOIN is only supported with merge-joinable or hash-joinable join " +"conditions" msgstr "" -"Los Interval no están ... a valores determinados de fechas de calendario." +"FULL JOIN sólo está soportado con condiciones que se pueden usar con merge " +"join o hash join" -#: utils/adt/formatting.c:1059 -msgid "\"EEEE\" must be the last pattern used" -msgstr "«EEEE» debe ser el último patrón usado" +#: optimizer/util/plancat.c:97 +msgid "cannot access temporary or unlogged relations during recovery" +msgstr "" +"no se pueden crear tablas temporales o unlogged durante la recuperación" -#: utils/adt/formatting.c:1067 -msgid "\"9\" must be ahead of \"PR\"" -msgstr "«9» debe ir antes de «PR»" +#: optimizer/util/clauses.c:4166 +#, c-format +msgid "SQL function \"%s\" during inlining" +msgstr "función SQL «%s», durante expansión en línea" -#: utils/adt/formatting.c:1083 -msgid "\"0\" must be ahead of \"PR\"" -msgstr "«0» debe ir antes de «PR»" +#: libpq/pqcomm.c:306 +#, 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" -#: utils/adt/formatting.c:1109 -msgid "multiple decimal points" -msgstr "hay múltiples puntos decimales" +#: libpq/pqcomm.c:310 +#, c-format +msgid "could not translate service \"%s\" to address: %s" +msgstr "no se pudo traducir el servicio «%s» a dirección: %s" -#: utils/adt/formatting.c:1113 utils/adt/formatting.c:1196 -msgid "cannot use \"V\" and decimal point together" -msgstr "no se puede usar «V» y un punto decimal simultáneamente" +#: libpq/pqcomm.c:337 +#, 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" -#: utils/adt/formatting.c:1125 -msgid "cannot use \"S\" twice" -msgstr "no se puede usar «S» dos veces" +#: libpq/pqcomm.c:346 +msgid "IPv4" +msgstr "IPv4" -#: utils/adt/formatting.c:1129 -msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" -msgstr "no se puede usar «S» y «PL»/«MI»/«SG»/«PR» simultáneamente" +#: libpq/pqcomm.c:350 +msgid "IPv6" +msgstr "IPv6" -#: utils/adt/formatting.c:1149 -msgid "cannot use \"S\" and \"MI\" together" -msgstr "no se puede usar «S» y «MI» simultáneamente" +#: libpq/pqcomm.c:355 +msgid "Unix" +msgstr "Unix" -#: utils/adt/formatting.c:1159 -msgid "cannot use \"S\" and \"PL\" together" -msgstr "no se puede usar «S» y «PL» simultáneamente" +#: libpq/pqcomm.c:360 +#, c-format +msgid "unrecognized address family %d" +msgstr "la familia de direcciones %d no es reconocida" -#: utils/adt/formatting.c:1169 -msgid "cannot use \"S\" and \"SG\" together" -msgstr "no se puede usar «S» y «SG» simultáneamente" +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:371 +#, c-format +msgid "could not create %s socket: %m" +msgstr "no se pudo crear el socket %s: %m" -#: utils/adt/formatting.c:1178 -msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" -msgstr "no se puede usar «PR» y «S»/«PL»/«MI»/«SG» simultáneamente" +#: libpq/pqcomm.c:396 +#, c-format +msgid "setsockopt(SO_REUSEADDR) failed: %m" +msgstr "setsockopt(SO_REUSEADDR) falló: %m" -#: utils/adt/formatting.c:1204 -msgid "cannot use \"EEEE\" twice" -msgstr "no se puede usar «EEEE» dos veces" +#: libpq/pqcomm.c:411 +#, c-format +msgid "setsockopt(IPV6_V6ONLY) failed: %m" +msgstr "setsockopt(IPV6_V6ONLY) falló: %m" -#: utils/adt/formatting.c:1210 -msgid "\"EEEE\" is incompatible with other formats" -msgstr "«EEEE» es incompatible con otros formatos" +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:430 +#, c-format +msgid "could not bind %s socket: %m" +msgstr "no se pudo enlazar al socket %s: %m" -#: utils/adt/formatting.c:1211 +#: libpq/pqcomm.c:433 +#, c-format msgid "" -"\"EEEE\" may only be used together with digit and decimal point patterns." +"Is another postmaster already running on port %d? If not, remove socket file " +"\"%s\" and retry." msgstr "" -"«EEEE» sólo puede ser usado en conjunción con patrones de dígitos y puntos " -"decimales." +"¿Hay otro postmaster corriendo en el puerto %d? Si no, elimine el socket " +"«%s» y reintente." -#: utils/adt/formatting.c:1411 +#: libpq/pqcomm.c:436 #, c-format -msgid "\"%s\" is not a number" -msgstr "«%s» no es un número" - -#: utils/adt/formatting.c:1788 -msgid "invalid combination of date conventions" -msgstr "combinacion invalida de convenciones de fecha" - -#: utils/adt/formatting.c:1789 msgid "" -"Do not mix Gregorian and ISO week date conventions in a formatting template." +"Is another postmaster already running on port %d? If not, wait a few seconds " +"and retry." msgstr "" -" No mezclar convenciones de semana Gregorianas e ISO en una plantilla " -"formateada" +"¿Hay otro postmaster corriendo en el puerto %d? Si no, aguarde unos segundos " +"y reintente." -#: utils/adt/formatting.c:1806 +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:469 #, c-format -msgid "conflicting values for \"%s\" field in formatting string" -msgstr "valores en conflicto para le campo \"%s\" en un string formateado" +msgid "could not listen on %s socket: %m" +msgstr "no se pudo escuchar en el socket %s: %m" -#: utils/adt/formatting.c:1808 -msgid "This value contradicts a previous setting for the same field type." +#: libpq/pqcomm.c:499 +#, c-format +msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)" msgstr "" -"Este valor se contradice con un seteo previo para el mismo tipo de campo" +"la ruta al socket de dominio Unix «%s» es demasiado larga (máximo %d bytes)" -#: utils/adt/formatting.c:1869 +#: libpq/pqcomm.c:562 #, c-format -msgid "source string too short for \"%s\" formatting field" -msgstr "cadena de texto fuente muy corta para campo formateado \"%s\" " +msgid "group \"%s\" does not exist" +msgstr "no existe el grupo «%s»" -#: utils/adt/formatting.c:1871 +#: libpq/pqcomm.c:572 #, 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:1874 utils/adt/formatting.c:1888 -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\" " +msgid "could not set group of file \"%s\": %m" +msgstr "no se pudo definir el grupo del archivo «%s»: %m" -#: utils/adt/formatting.c:1884 utils/adt/formatting.c:1897 -#: utils/adt/formatting.c:2027 +#: libpq/pqcomm.c:583 #, c-format -msgid "invalid value \"%s\" for \"%s\"" -msgstr "el valor «%s» no es válido para «%s»" +msgid "could not set permissions of file \"%s\": %m" +msgstr "no se pudo definir los permisos del archivo «%s»: %m" -#: utils/adt/formatting.c:1886 +#: libpq/pqcomm.c:613 #, 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." +msgid "could not accept new connection: %m" +msgstr "no se pudo aceptar una nueva conexión: %m" -#: utils/adt/formatting.c:1899 -msgid "Value must be an integer." -msgstr "El valor debe ser un entero." +#: libpq/pqcomm.c:781 +#, c-format +msgid "could not set socket to non-blocking mode: %m" +msgstr "no se pudo establecer el socket en modo no bloqueante: %m" -#: utils/adt/formatting.c:1904 +#: libpq/pqcomm.c:787 #, 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" +msgid "could not set socket to blocking mode: %m" +msgstr "no se pudo poner el socket en modo bloqueante: %m" -#: utils/adt/formatting.c:1906 +#: libpq/pqcomm.c:839 libpq/pqcomm.c:929 #, c-format -msgid "Value must be in the range %d to %d." -msgstr "EL valor debe estar en el rango de %d a %d." +msgid "could not receive data from client: %m" +msgstr "no se pudo recibir datos del cliente: %m" -#: utils/adt/formatting.c:2029 -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." +#: libpq/pqcomm.c:1080 +msgid "unexpected EOF within message length word" +msgstr "EOF inesperado dentro de la palabra de tamaño del mensaje" -#: utils/adt/formatting.c:2585 -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" +#: libpq/pqcomm.c:1091 +msgid "invalid message length" +msgstr "el largo de mensaje no es válido" -#: utils/adt/formatting.c:2689 -msgid "invalid input string for \"Y,YYY\"" -msgstr "cadena de entrada no válida para «Y,YYY»" +#: libpq/pqcomm.c:1113 libpq/pqcomm.c:1123 +msgid "incomplete message from client" +msgstr "mensaje incompleto del cliente" -#: utils/adt/formatting.c:3206 +#: libpq/pqcomm.c:1253 #, 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:3208 -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." +msgid "could not send data to client: %m" +msgstr "no se pudo enviar datos al cliente: %m" -#: utils/adt/formatting.c:3246 +#: libpq/be-secure.c:284 libpq/be-secure.c:379 #, c-format -msgid "inconsistent use of year %04d and \"BC\"" -msgstr "el uso del año %04d y «BC» es inconsistente" +msgid "SSL error: %s" +msgstr "error SSL: %s" -#: utils/adt/formatting.c:3293 -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" +#: libpq/be-secure.c:293 libpq/be-secure.c:388 libpq/be-secure.c:958 +#, c-format +msgid "unrecognized SSL error code: %d" +msgstr "código de error SSL no reconocido: %d" -#: utils/adt/formatting.c:4151 -msgid "\"EEEE\" not supported for input" -msgstr "«EEEE» no está soportado en la entrada" +#: libpq/be-secure.c:332 libpq/be-secure.c:336 libpq/be-secure.c:346 +msgid "SSL renegotiation failure" +msgstr "ocurrió una falla en renegociación SSL" -#: utils/adt/formatting.c:4163 -msgid "\"RN\" not supported for input" -msgstr "«RN» no está soportado en la entrada" +#: libpq/be-secure.c:340 +msgid "SSL failed to send renegotiation request" +msgstr "SSL no pudo enviar una petición de renegociación" -#: utils/adt/genfile.c:58 -msgid "reference to parent directory (\"..\") not allowed" -msgstr "no se permiten referencias a directorios padre («..»)" +#: libpq/be-secure.c:737 +#, c-format +msgid "could not create SSL context: %s" +msgstr "no se pudo crear un contexto SSL: %s" -#: utils/adt/genfile.c:72 -msgid "absolute path not allowed" -msgstr "no se permiten rutas absolutas" +#: libpq/be-secure.c:753 +#, c-format +msgid "could not load server certificate file \"%s\": %s" +msgstr "no se pudo cargar el archivo de certificado de servidor «%s»: %s" -#: utils/adt/genfile.c:99 -msgid "must be superuser to read files" -msgstr "debe ser superusuario para leer archivos" +#: libpq/be-secure.c:759 +#, c-format +msgid "could not access private key file \"%s\": %m" +msgstr "no se pudo acceder al archivo de la llave privada «%s»: %m" -#: utils/adt/genfile.c:113 +#: libpq/be-secure.c:774 #, c-format -msgid "could not seek in file \"%s\": %m" -msgstr "no se pudo posicionar (seek) el archivo «%s»: %m" +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" -#: utils/adt/genfile.c:118 -msgid "requested length cannot be negative" -msgstr "el tamaño solicitado no puede ser negativo" +#: libpq/be-secure.c:776 +msgid "Permissions should be u=rw (0600) or less." +msgstr "Los permisos deberían ser u=rw (0500) o menos." -#: utils/adt/genfile.c:124 utils/adt/oracle_compat.c:181 -#: utils/adt/oracle_compat.c:279 utils/adt/oracle_compat.c:755 -#: utils/adt/oracle_compat.c:1045 -msgid "requested length too large" -msgstr "el tamaño solicitado es demasiado grande" +#: libpq/be-secure.c:783 +#, c-format +msgid "could not load private key file \"%s\": %s" +msgstr "no se pudo cargar el archivo de la llave privada «%s»: %s" -#: utils/adt/genfile.c:163 -msgid "must be superuser to get file information" -msgstr "debe ser superusuario obtener información de archivos" +#: libpq/be-secure.c:788 +#, c-format +msgid "check of private key failed: %s" +msgstr "falló la revisión de la llave privada: %s" -#: utils/adt/genfile.c:227 -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:4249 utils/adt/geo_ops.c:5166 -msgid "too many points requested" -msgstr "se pidieron demasiados puntos" +#: libpq/be-secure.c:816 +#, c-format +msgid "could not access root certificate file \"%s\": %m" +msgstr "no se pudo acceder al archivo del certificado raíz «%s»: %m" -#: utils/adt/geo_ops.c:317 -msgid "could not format \"path\" value" -msgstr "no se pudo dar formato a «path»" +#: libpq/be-secure.c:827 +#, c-format +msgid "could not load root certificate file \"%s\": %s" +msgstr "no se pudo cargar el archivo del certificado raíz «%s»: %s" -#: utils/adt/geo_ops.c:392 +#: libpq/be-secure.c:850 #, c-format -msgid "invalid input syntax for type box: \"%s\"" -msgstr "la sintaxis de entrada no es válida para tipo box: «%s»" +msgid "SSL certificate revocation list file \"%s\" ignored" +msgstr "ignorando lista de revocación de certificado SSL «%s»" -#: utils/adt/geo_ops.c:956 +#: libpq/be-secure.c:852 +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:859 #, c-format -msgid "invalid input syntax for type line: \"%s\"" -msgstr "la sintaxis de entrada no es válida para tipo line: «%s»" +msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s" +msgstr "" +"lista de revocación de certificados SSL «%s» no encontrada, ignorando: %s" -#: 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 "el tipo «line» no está implementado" +#: libpq/be-secure.c:861 +msgid "Certificates will not be checked against revocation list." +msgstr "Certificados no serán verificados en las listas de revocación." -#: utils/adt/geo_ops.c:1411 utils/adt/geo_ops.c:1434 +#: libpq/be-secure.c:903 #, c-format -msgid "invalid input syntax for type path: \"%s\"" -msgstr "la sintaxis de entrada no es válida para tipo «path»: «%s»" +msgid "could not initialize SSL connection: %s" +msgstr "no se pudo inicializar la conexión SSL: %s" -#: utils/adt/geo_ops.c:1473 -msgid "invalid number of points in external \"path\" value" -msgstr "el número de puntos no es válido en el valor «path» externo" +#: libpq/be-secure.c:912 +#, c-format +msgid "could not set SSL socket: %s" +msgstr "no se definir un socket SSL: %s" -#: utils/adt/geo_ops.c:1814 +#: libpq/be-secure.c:938 #, c-format -msgid "invalid input syntax for type point: \"%s\"" -msgstr "la sintaxis de entrada no es válida para tipo point: «%s»" +msgid "could not accept SSL connection: %m" +msgstr "no se pudo aceptar una conexión SSL: %m" + +#: libpq/be-secure.c:942 libpq/be-secure.c:953 +msgid "could not accept SSL connection: EOF detected" +msgstr "no se pudo aceptar una conexión SSL: se detectó EOF" -#: utils/adt/geo_ops.c:2042 +#: libpq/be-secure.c:947 #, c-format -msgid "invalid input syntax for type lseg: \"%s\"" -msgstr "la sintaxis de entrada no es válida para tipo lseg: «%s»" +msgid "could not accept SSL connection: %s" +msgstr "no se pudo aceptar una conexión SSL: %s" -#: utils/adt/geo_ops.c:2646 -msgid "function \"dist_lb\" not implemented" -msgstr "la función «dist_lb» no está implementada" +#: libpq/be-secure.c:1003 +msgid "SSL certificate's common name contains embedded null" +msgstr "el «common name» del certificado SSL contiene un carácter null" -#: utils/adt/geo_ops.c:3159 -msgid "function \"close_lb\" not implemented" -msgstr "la función «close_lb» no está implementada" +#: libpq/be-secure.c:1014 +#, c-format +msgid "SSL connection from \"%s\"" +msgstr "conexión SSL desde «%s»" -#: utils/adt/geo_ops.c:3448 -msgid "cannot create bounding box for empty polygon" -msgstr "no se puede crear una caja de contorno para un polígono vacío" +#: libpq/be-secure.c:1065 +msgid "no SSL error reported" +msgstr "código de error SSL no reportado" -#: utils/adt/geo_ops.c:3472 utils/adt/geo_ops.c:3484 +#: libpq/be-secure.c:1069 #, c-format -msgid "invalid input syntax for type polygon: \"%s\"" -msgstr "la sintaxis de entrada no es válida para tipo polygon: «%s»" +msgid "SSL error code %lu" +msgstr "código de error SSL %lu" -#: utils/adt/geo_ops.c:3524 -msgid "invalid number of points in external \"polygon\" value" -msgstr "el número de puntos no es válido en «polygon» externo" +#: libpq/pqformat.c:436 +msgid "no data left in message" +msgstr "no hay datos restantes en el mensaje" -#: utils/adt/geo_ops.c:4047 -msgid "function \"poly_distance\" not implemented" -msgstr "la función «poly_distance» no está implementada" +#: libpq/pqformat.c:636 +msgid "invalid string in message" +msgstr "cadena inválida en el mensaje" -#: utils/adt/geo_ops.c:4359 -msgid "function \"path_center\" not implemented" -msgstr "la función «path_center» no está implementada" +#: libpq/pqformat.c:652 +msgid "invalid message format" +msgstr "formato de mensaje no válido" -#: utils/adt/geo_ops.c:4376 -msgid "open path cannot be converted to polygon" -msgstr "no se puede convertir un camino abierto en polygon" +#: libpq/auth.c:257 +#, c-format +msgid "authentication failed for user \"%s\": host rejected" +msgstr "la autentificación falló para el usuario «%s»: anfitrión rechazado" -#: utils/adt/geo_ops.c:4543 utils/adt/geo_ops.c:4553 utils/adt/geo_ops.c:4568 -#: utils/adt/geo_ops.c:4574 +#: libpq/auth.c:260 #, c-format -msgid "invalid input syntax for type circle: \"%s\"" -msgstr "la sintaxis de entrada no es válida para el tipo circle: «%s»" +msgid "Kerberos 5 authentication failed for user \"%s\"" +msgstr "la autentificación Kerberos 5 falló para el usuario «%s»" -#: utils/adt/geo_ops.c:4596 utils/adt/geo_ops.c:4604 -msgid "could not format \"circle\" value" -msgstr "no se pudo dar formato al valor «circle»" +#: libpq/auth.c:263 +#, c-format +msgid "\"trust\" authentication failed for user \"%s\"" +msgstr "la autentificación «trust» falló para el usuario «%s»" -#: utils/adt/geo_ops.c:4631 -msgid "invalid radius in external \"circle\" value" -msgstr "el radio no es válido en el valor «circle» externo" +#: libpq/auth.c:266 +#, c-format +msgid "Ident authentication failed for user \"%s\"" +msgstr "la autentificación Ident falló para el usuario «%s»" -#: utils/adt/geo_ops.c:5152 -msgid "cannot convert circle with radius zero to polygon" -msgstr "no se puede convertir un círculo de radio cero a polygon" +#: libpq/auth.c:269 +#, c-format +msgid "Peer authentication failed for user \"%s\"" +msgstr "la autentificación Peer falló para el usuario «%s»" -#: utils/adt/geo_ops.c:5157 -msgid "must request at least 2 points" -msgstr "debe pedir al menos 2 puntos" +#: libpq/auth.c:273 +#, c-format +msgid "password authentication failed for user \"%s\"" +msgstr "la autentificación password falló para el usuario «%s»" -#: utils/adt/geo_ops.c:5201 utils/adt/geo_ops.c:5224 -msgid "cannot convert empty polygon to circle" -msgstr "no se puede convertir polígono vacío a circle" +#: libpq/auth.c:278 +#, c-format +msgid "GSSAPI authentication failed for user \"%s\"" +msgstr "la autentificación GSSAPI falló para el usuario «%s»" -#: utils/adt/int.c:162 -msgid "int2vector has too many elements" -msgstr "int2vector tiene demasiados elementos" +#: libpq/auth.c:281 +#, c-format +msgid "SSPI authentication failed for user \"%s\"" +msgstr "la autentificación SSPI falló para el usuario «%s»" -#: utils/adt/int.c:236 -msgid "invalid int2vector data" -msgstr "datos de int2vector no válidos" +#: libpq/auth.c:284 +#, c-format +msgid "PAM authentication failed for user \"%s\"" +msgstr "la autentificación PAM falló para el usuario «%s»" -#: utils/adt/int.c:242 utils/adt/oid.c:212 utils/adt/oid.c:292 -msgid "oidvector has too many elements" -msgstr "el oidvector tiene demasiados elementos" +#: libpq/auth.c:287 +#, c-format +msgid "LDAP authentication failed for user \"%s\"" +msgstr "la autentificación LDAP falló para el usuario «%s»" -#: utils/adt/int.c:1323 utils/adt/int8.c:1358 utils/adt/timestamp.c:4712 -#: utils/adt/timestamp.c:4793 -msgid "step size cannot equal zero" -msgstr "el tamaño de paso no puede ser cero" +#: libpq/auth.c:290 +#, c-format +msgid "certificate authentication failed for user \"%s\"" +msgstr "la autentificación por certificado falló para el usuario «%s»" -#: utils/adt/int8.c:97 utils/adt/int8.c:132 utils/adt/numutils.c:53 -#: utils/adt/numutils.c:63 utils/adt/numutils.c:105 +#: libpq/auth.c:293 #, c-format -msgid "invalid input syntax for integer: \"%s\"" -msgstr "la sintaxis de entrada no es válida para integer: «%s»" +msgid "RADIUS authentication failed for user \"%s\"" +msgstr "la autentificación RADIUS falló para el usuario «%s»" -#: utils/adt/int8.c:113 +#: libpq/auth.c:296 #, c-format -msgid "value \"%s\" is out of range for type bigint" -msgstr "el valor «%s» está fuera de rango para el tipo bigint" +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" -#: utils/adt/int8.c:502 utils/adt/int8.c:531 utils/adt/int8.c:552 -#: utils/adt/int8.c:582 utils/adt/int8.c:610 utils/adt/int8.c:628 -#: utils/adt/int8.c:672 utils/adt/int8.c:689 utils/adt/int8.c:758 -#: utils/adt/int8.c:779 utils/adt/int8.c:806 utils/adt/int8.c:833 -#: utils/adt/int8.c:854 utils/adt/int8.c:875 utils/adt/int8.c:902 -#: utils/adt/int8.c:942 utils/adt/int8.c:963 utils/adt/int8.c:990 -#: utils/adt/int8.c:1017 utils/adt/int8.c:1038 utils/adt/int8.c:1059 -#: utils/adt/int8.c:1086 utils/adt/int8.c:1259 utils/adt/int8.c:1298 -#: utils/adt/numeric.c:2115 utils/adt/varbit.c:1563 -msgid "bigint out of range" -msgstr "bigint está fuera de rango" +#: libpq/auth.c:325 +msgid "missing or erroneous pg_hba.conf file" +msgstr "No se encuentra pg_hba.conf o el archivo es incorrecto" -#: utils/adt/int8.c:1315 -msgid "OID out of range" -msgstr "OID está fuera de rango" +#: libpq/auth.c:326 +msgid "See server log for details." +msgstr "Vea el registro del servidor para obtener más detalles." -#: utils/adt/like_match.c:103 utils/adt/like_match.c:163 -msgid "LIKE pattern must not end with escape character" -msgstr "el patrón LIKE no debe terminar con un carácter de escape" +#: libpq/auth.c:356 +msgid "connection requires a valid client certificate" +msgstr "la conexión requiere un certificado de cliente válido" -#: utils/adt/like_match.c:287 utils/adt/regexp.c:668 -msgid "invalid escape string" -msgstr "la cadena de escape no es válida" +#: libpq/auth.c:400 libpq/auth.c:416 libpq/auth.c:464 libpq/auth.c:482 +msgid "SSL on" +msgstr "SSL activo" -#: utils/adt/like_match.c:288 utils/adt/regexp.c:669 -msgid "Escape string must be empty or one character." -msgstr "La cadena de escape debe estar vacía o tener un solo carácter." +#: libpq/auth.c:400 libpq/auth.c:416 libpq/auth.c:464 libpq/auth.c:482 +msgid "SSL off" +msgstr "SSL inactivo" -#: utils/adt/mac.c:65 +#: libpq/auth.c:398 #, c-format -msgid "invalid input syntax for type macaddr: \"%s\"" -msgstr "la sintaxis de entrada no es válida para tipo macaddr: «%s»" +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" -#: utils/adt/mac.c:72 +#: libpq/auth.c:404 #, c-format -msgid "invalid octet value in \"macaddr\" value: \"%s\"" -msgstr "el valor de octeto no es válido en «macaddr»: «%s»" - -#: utils/adt/misc.c:80 -msgid "must be superuser to signal other server processes" -msgstr "debe ser superusuario para enviar señales a otros procesos" +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»" -#: utils/adt/misc.c:89 +#: libpq/auth.c:413 #, c-format -msgid "PID %d is not a PostgreSQL server process" -msgstr "el proceso con PID %d no es un proceso servidor PostgreSQL" +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" -#: utils/adt/misc.c:126 -msgid "must be superuser to signal the postmaster" -msgstr "debe ser superusuario para enviar señales a postmaster" +#: libpq/auth.c:420 +#, 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»" -#: utils/adt/misc.c:131 +#: libpq/auth.c:449 #, c-format -msgid "failed to send signal to postmaster: %m" -msgstr "no se pudo enviar la señal al postmaster: %m" +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." -#: utils/adt/misc.c:148 -msgid "must be superuser to rotate log files" -msgstr "debe ser superusuario para rotar archivos de registro" +#: libpq/auth.c:451 +#, 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." -#: utils/adt/misc.c:153 -msgid "rotation not possible because log collection not active" +#: libpq/auth.c:453 +#, c-format +msgid "Client IP address resolved to \"%s\", forward lookup does not match." msgstr "" -"la rotación no es posible, porque la recolección del logs no está activa" +"La dirección IP del cliente fue resuelta a «%s», este resultado no es " +"coincidente." -#: utils/adt/misc.c:195 -msgid "global tablespace never has databases" -msgstr "el tablespace global nunca tiene bases de datos" +#: libpq/auth.c:462 +#, 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" -#: utils/adt/misc.c:216 +#: libpq/auth.c:469 #, c-format -msgid "%u is not a tablespace OID" -msgstr "%u no es un OID de tablespace" +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»" -#: utils/adt/misc.c:352 -msgid "unreserved" -msgstr "no reservada" +#: libpq/auth.c:479 +#, 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" -#: utils/adt/misc.c:356 -msgid "unreserved (cannot be function or type name)" -msgstr "no reservada (no puede ser nombre de función o tipo)" +#: libpq/auth.c:487 +#, 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»" -#: utils/adt/misc.c:360 -msgid "reserved (can be function or type name)" -msgstr "reservada (puede ser nombre de función o tipo)" - -#: utils/adt/misc.c:364 -msgid "reserved" -msgstr "reservada" +#: libpq/auth.c:539 libpq/hba.c:1118 +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" -#: utils/adt/nabstime.c:160 +#: libpq/auth.c:663 #, c-format -msgid "invalid time zone name: \"%s\"" -msgstr "el nombre de huso horario no es válido: «%s»" - -#: utils/adt/nabstime.c:506 utils/adt/nabstime.c:579 -msgid "cannot convert abstime \"invalid\" to timestamp" -msgstr "no se puede convertir abstime «invalid» a timestamp" - -#: utils/adt/nabstime.c:806 -msgid "invalid status in external \"tinterval\" value" -msgstr "el estado no es válido en el valor «tinterval» externo" +msgid "expected password response, got message type %d" +msgstr "se esperaba una respuesta de contraseña, se obtuvo mensaje de tipo %d" -#: utils/adt/nabstime.c:880 -msgid "cannot convert reltime \"invalid\" to interval" -msgstr "no se puede convertir reltime «invalid» a interval" +#: libpq/auth.c:691 +msgid "invalid password packet size" +msgstr "el tamaño del paquete de contraseña no es válido" -#: utils/adt/nabstime.c:1562 -#, c-format -msgid "invalid input syntax for type tinterval: \"%s\"" -msgstr "la sintaxis de entrada no es válida para el tipo tinterval: «%s»" +#: libpq/auth.c:695 +msgid "received password packet" +msgstr "se recibió un paquete de clave" -#: utils/adt/network.c:118 +#: libpq/auth.c:753 #, c-format -msgid "invalid cidr value: \"%s\"" -msgstr "el formato de cidr no es válido: «%s»" - -#: utils/adt/network.c:119 utils/adt/network.c:249 -msgid "Value has bits set to right of mask." -msgstr "El valor tiene bits a la derecha de la máscara." +msgid "Kerberos initialization returned error %d" +msgstr "la inicialización de Kerberos retornó error %d" -#: utils/adt/network.c:160 utils/adt/network.c:614 utils/adt/network.c:639 -#: utils/adt/network.c:664 +#: libpq/auth.c:763 #, c-format -msgid "could not format inet value: %m" -msgstr "no se pudo dar formato al valor inet: %m" +msgid "Kerberos keytab resolving returned error %d" +msgstr "la resolución de keytab de Kerberos retornó error %d" -#. translator: %s is inet or cidr -#: utils/adt/network.c:217 +#: libpq/auth.c:787 #, 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" +msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d" +msgstr "sname_to_principal(\"%s\", \"%s\") de Kerberos retornó error %d" -#. translator: %s is inet or cidr -#: utils/adt/network.c:224 +#: libpq/auth.c:832 #, c-format -msgid "invalid bits in external \"%s\" value" -msgstr "bits no válidos en el valor «%s» externo" +msgid "Kerberos recvauth returned error %d" +msgstr "recvauth de Kerberos retornó error %d" -#. translator: %s is inet or cidr -#: utils/adt/network.c:233 +#: libpq/auth.c:855 #, c-format -msgid "invalid length in external \"%s\" value" -msgstr "largo no válido en valor «%s» externo" - -#: utils/adt/network.c:248 -msgid "invalid external \"cidr\" value" -msgstr "el valor externo «cidr» no es válido" +msgid "Kerberos unparse_name returned error %d" +msgstr "unparse_name de Kerberos retornó error %d" -#: utils/adt/network.c:370 utils/adt/network.c:397 -#, c-format -msgid "invalid mask length: %d" -msgstr "el largo de el máscara no es válido: %d" +#: libpq/auth.c:1003 +msgid "GSSAPI is not supported in protocol version 2" +msgstr "GSSAPI no está soportado por el protocolo versión 2" -#: utils/adt/network.c:682 +#: libpq/auth.c:1058 #, c-format -msgid "could not format cidr value: %m" -msgstr "no se pudo dar formato al valor cidr: %m" +msgid "expected GSS response, got message type %d" +msgstr "se esperaba una respuesta GSS, se obtuvo mensaje de tipo %d" -#: utils/adt/network.c:1255 -msgid "cannot AND inet values of different sizes" -msgstr "no se puede hacer AND entre valores inet de distintos tamaños" +#: libpq/auth.c:1121 +msgid "accepting GSS security context failed" +msgstr "falló la aceptación del contexto de seguridad GSS" -#: utils/adt/network.c:1287 -msgid "cannot OR inet values of different sizes" -msgstr "no se puede hacer OR entre valor inet de distintos tamaños" +#: libpq/auth.c:1147 +msgid "retrieving GSS user name failed" +msgstr "falló la obtención del nombre de usuario GSS" -#: utils/adt/network.c:1348 utils/adt/network.c:1424 -msgid "result is out of range" -msgstr "el resultado está fuera de rango" +#: libpq/auth.c:1264 +msgid "SSPI is not supported in protocol version 2" +msgstr "SSPI no está soportado por el protocolo versión 2" -#: utils/adt/network.c:1389 -msgid "cannot subtract inet values of different sizes" -msgstr "no se puede restar valores inet de distintos tamaños" +#: libpq/auth.c:1279 +msgid "could not acquire SSPI credentials" +msgstr "no se pudo obtener las credenciales SSPI" -#: utils/adt/numeric.c:352 utils/adt/numeric.c:379 utils/adt/numeric.c:3083 -#: utils/adt/numeric.c:3106 utils/adt/numeric.c:3130 utils/adt/numeric.c:3137 +#: libpq/auth.c:1296 #, 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:482 -msgid "invalid length in external \"numeric\" value" -msgstr "el largo no es válido en el valor «numeric» externo" +msgid "expected SSPI response, got message type %d" +msgstr "se esperaba una respuesta SSPI, se obtuvo mensaje de tipo %d" -#: utils/adt/numeric.c:493 -msgid "invalid sign in external \"numeric\" value" -msgstr "el signo no es válido en el valor «numeric» externo" +#: libpq/auth.c:1368 +msgid "could not accept SSPI security context" +msgstr "no se pudo aceptar un contexto SSPI" -#: utils/adt/numeric.c:503 -msgid "invalid digit in external \"numeric\" value" -msgstr "hay un dígito no válido en el valor «numeric» externo" +#: libpq/auth.c:1430 +msgid "could not get token from SSPI security context" +msgstr "" +"no se pudo obtener un testigo (token) desde el contexto de seguridad SSPI" -#: utils/adt/numeric.c:634 utils/adt/numeric.c:648 +#: libpq/auth.c:1674 #, 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" +msgid "could not create socket for Ident connection: %m" +msgstr "no se pudo crear un socket para conexión Ident: %m" -#: utils/adt/numeric.c:639 +#: libpq/auth.c:1689 #, 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" +msgid "could not bind to local address \"%s\": %m" +msgstr "no se pudo enlazar a la dirección local «%s»: %m" -#: utils/adt/numeric.c:657 -msgid "invalid NUMERIC type modifier" -msgstr "modificador de tipo NUMERIC no es válido" +#: libpq/auth.c:1701 +#, 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" -#: utils/adt/numeric.c:1690 utils/adt/numeric.c:3545 -msgid "value overflows numeric format" -msgstr "el valor excede el formato numeric" +#: libpq/auth.c:1721 +#, 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" -#: utils/adt/numeric.c:2038 -msgid "cannot convert NaN to integer" -msgstr "no se puede convertir NaN a entero" +#: libpq/auth.c:1736 +#, 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" -#: utils/adt/numeric.c:2106 -msgid "cannot convert NaN to bigint" -msgstr "no se puede convertir NaN a bigint" +#: libpq/auth.c:1746 +#, c-format +msgid "invalidly formatted response from Ident server: \"%s\"" +msgstr "respuesta del servidor Ident en formato no válido: «%s»" -#: utils/adt/numeric.c:2154 -msgid "cannot convert NaN to smallint" -msgstr "no se puede convertir NaN a smallint" +#: libpq/auth.c:1785 +msgid "peer authentication is not supported on this platform" +msgstr "método de autentificación peer no está soportado en esta plataforma" -#: utils/adt/numeric.c:3615 -msgid "numeric field overflow" -msgstr "desbordamiento de campo numeric" +#: libpq/auth.c:1789 +#, c-format +msgid "could not get peer credentials: %m" +msgstr "no se pudo recibir credenciales: %m" -#: utils/adt/numeric.c:3616 +#: libpq/auth.c:1798 #, 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." +msgid "local user with ID %d does not exist" +msgstr "no existe un usuario local con ID %d" -#: utils/adt/numeric.c:5064 -msgid "argument for function \"exp\" too big" -msgstr "el argumento a la función «exp» es demasiado grande" +#: libpq/auth.c:1881 libpq/auth.c:2153 libpq/auth.c:2513 +msgid "empty password returned by client" +msgstr "el cliente retornó una contraseña vacía" -#: utils/adt/numutils.c:77 +#: libpq/auth.c:1891 #, c-format -msgid "value \"%s\" is out of range for type integer" -msgstr "el valor «%s» está fuera de rango para el tipo integer" +msgid "error from underlying PAM layer: %s" +msgstr "se ha recibido un error de la biblioteca PAM: %s" -#: utils/adt/numutils.c:83 +#: libpq/auth.c:1960 #, c-format -msgid "value \"%s\" is out of range for type smallint" -msgstr "el valor «%s» está fuera de rango para el tipo smallint" +msgid "could not create PAM authenticator: %s" +msgstr "no se pudo crear autenticador PAM: %s" -#: utils/adt/numutils.c:89 +#: libpq/auth.c:1971 #, 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" +msgid "pam_set_item(PAM_USER) failed: %s" +msgstr "pam_set_item(PAM_USER) falló: %s" -#: utils/adt/oid.c:43 utils/adt/oid.c:57 utils/adt/oid.c:63 utils/adt/oid.c:84 +#: libpq/auth.c:1982 #, c-format -msgid "invalid input syntax for type oid: \"%s\"" -msgstr "la sintaxis de entrada no es válida para el tipo oid: «%s»" +msgid "pam_set_item(PAM_CONV) failed: %s" +msgstr "pam_set_item(PAM_CONV) falló: %s" -#: utils/adt/oid.c:69 utils/adt/oid.c:107 +#: libpq/auth.c:1993 #, c-format -msgid "value \"%s\" is out of range for type oid" -msgstr "el valor «%s» está fuera de rango para el tipo oid" - -#: utils/adt/oid.c:286 -msgid "invalid oidvector data" -msgstr "datos de oidvector no válidos" +msgid "pam_authenticate failed: %s" +msgstr "pam_authenticate falló: %s" -#: utils/adt/oracle_compat.c:892 -msgid "requested character too large" -msgstr "el carácter solicitado es demasiado grande" +#: libpq/auth.c:2004 +#, c-format +msgid "pam_acct_mgmt failed: %s" +msgstr "pam_acct_mgmt falló: %s" -#: utils/adt/oracle_compat.c:938 utils/adt/oracle_compat.c:992 +#: libpq/auth.c:2015 #, c-format -msgid "requested character too large for encoding: %d" -msgstr "el carácter pedido es demasiado largo para el encoding: %d" +msgid "could not release PAM authenticator: %s" +msgstr "no se pudo liberar autenticador PAM: %s" -#: utils/adt/oracle_compat.c:985 -msgid "null character not permitted" -msgstr "el carácter nulo no está permitido" +#: libpq/auth.c:2048 libpq/auth.c:2052 +#, c-format +msgid "could not initialize LDAP: error code %d" +msgstr "no se pudo inicializar LDAP: código de error %d" -#: utils/adt/pseudotypes.c:94 -msgid "cannot accept a value of type any" -msgstr "no se puede aceptar un valor de tipo any" +#: libpq/auth.c:2062 +#, c-format +msgid "could not set LDAP protocol version: error code %d" +msgstr "no se pudo definir la versión de protocolo LDAP: código de error %d" -#: utils/adt/pseudotypes.c:107 -msgid "cannot display a value of type any" -msgstr "no se puede desplegar un valor de tipo any" +#: libpq/auth.c:2091 +msgid "could not load wldap32.dll" +msgstr "no se pudo cargar wldap32.dll" -#: utils/adt/pseudotypes.c:121 utils/adt/pseudotypes.c:149 -msgid "cannot accept a value of type anyarray" -msgstr "no se puede aceptar un valor de tipo anyarray" +#: libpq/auth.c:2099 +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" -#: utils/adt/pseudotypes.c:174 -msgid "cannot accept a value of type anyenum" -msgstr "no se puede aceptar un valor de tipo anyenum" +#: libpq/auth.c:2100 +msgid "LDAP over SSL is not supported on this platform." +msgstr "LDAP sobre SSL no está soportado en esta plataforma." -#: utils/adt/pseudotypes.c:224 -msgid "cannot accept a value of type trigger" -msgstr "no se puede aceptar un valor de tipo trigger" +#: libpq/auth.c:2115 +#, c-format +msgid "could not start LDAP TLS session: error code %d" +msgstr "no se pudo iniciar sesión de LDAP TLS: código de error %d" -#: utils/adt/pseudotypes.c:237 -msgid "cannot display a value of type trigger" -msgstr "no se puede desplegar un valor de tipo trigger" +#: libpq/auth.c:2137 +msgid "LDAP server not specified" +msgstr "servidor LDAP no especificado" -#: utils/adt/pseudotypes.c:251 -msgid "cannot accept a value of type language_handler" -msgstr "no se puede aceptar un valor de tipo language_handler" +#: libpq/auth.c:2189 +msgid "invalid character in user name for LDAP authentication" +msgstr "carácter no válido en nombre de usuario para autentificación LDAP" -#: utils/adt/pseudotypes.c:264 -msgid "cannot display a value of type language_handler" -msgstr "no se puede desplegar un valor de tipo language_handler" +#: libpq/auth.c:2204 +#, c-format +msgid "" +"could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": " +"error code %d" +msgstr "" +"no se pudo hacer el enlace LDAP inicial para el ldapbinddb «%s» en el " +"servidor «%s»: código de error %d" -#: utils/adt/pseudotypes.c:278 -msgid "cannot accept a value of type internal" -msgstr "no se puede aceptar un valor de tipo internal" +#: libpq/auth.c:2229 +#, c-format +msgid "could not search LDAP for filter \"%s\" on server \"%s\": error code %d" +msgstr "" +"no se pudo hacer la búsqueda LDAP para el filtro «%s» en el servidor «%s»: " +"código de error %d" -#: utils/adt/pseudotypes.c:291 -msgid "cannot display a value of type internal" -msgstr "no se puede desplegar un valor de tipo internal" - -#: utils/adt/pseudotypes.c:305 -msgid "cannot accept a value of type opaque" -msgstr "no se puede aceptar un valor de tipo opaque" - -#: utils/adt/pseudotypes.c:318 -msgid "cannot display a value of type opaque" -msgstr "no se puede desplegar un valor de tipo opaque" - -#: utils/adt/pseudotypes.c:332 -msgid "cannot accept a value of type anyelement" -msgstr "no se puede aceptar un valor de tipo anyelement" - -#: utils/adt/pseudotypes.c:345 -msgid "cannot display a value of type anyelement" -msgstr "no se puede desplegar un valor de tipo anyelement" - -#: utils/adt/pseudotypes.c:358 -msgid "cannot accept a value of type anynonarray" -msgstr "no se puede aceptar un valor de tipo anynonarray" +#: libpq/auth.c:2239 +#, c-format +msgid "LDAP search failed for filter \"%s\" on server \"%s\": no such user" +msgstr "" +"La búsqueda LDAP falló para el filtro «%s» en el servidor «%s»: no existe el " +"usuario" -#: utils/adt/pseudotypes.c:371 -msgid "cannot display a value of type anynonarray" -msgstr "no se puede desplegar un valor de tipo anynonarray" +#: libpq/auth.c:2243 +#, c-format +msgid "" +"LDAP search failed for filter \"%s\" on server \"%s\": user is not unique " +"(%ld matches)" +msgstr "" +"La búsqueda LDAP falló para el filtro «%s» en el servidor «%s»: el usuario " +"no es único (%ld coincidencias)" -#: utils/adt/pseudotypes.c:384 -msgid "cannot accept a value of a shell type" -msgstr "no se puede aceptar un valor de un tipo inconcluso" +#: libpq/auth.c:2260 +#, 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" -#: utils/adt/pseudotypes.c:397 -msgid "cannot display a value of a shell type" -msgstr "no se puede desplegar un valor de un tipo inconcluso" +#: libpq/auth.c:2280 +#, 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" -#: utils/adt/regexp.c:269 utils/adt/varlena.c:2797 +#: libpq/auth.c:2317 #, c-format -msgid "regular expression failed: %s" -msgstr "la expresión regular falló: %s" +msgid "LDAP login failed for user \"%s\" on server \"%s\": error code %d" +msgstr "" +"Falló el inicio de sesión LDAP para el usuario «%s» en el servidor «%s»: " +"código de error %d" -#: utils/adt/regexp.c:404 +#: libpq/auth.c:2345 #, c-format -msgid "invalid regexp option: \"%c\"" -msgstr "la opción de expresión regular no es válida: «%c»" +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" -#: utils/adt/regexp.c:865 -msgid "regexp_split does not support the global option" -msgstr "regex_split no soporta la opción «global»" +#: libpq/auth.c:2469 +msgid "RADIUS server not specified" +msgstr "servidor RADIUS no especificado" -#: utils/adt/regproc.c:123 utils/adt/regproc.c:143 -#, c-format -msgid "more than one function named \"%s\"" -msgstr "existe más de una función llamada «%s»" +#: libpq/auth.c:2476 +msgid "RADIUS secret not specified" +msgstr "secreto RADIUS no especificado" -#: utils/adt/regproc.c:468 utils/adt/regproc.c:488 +#: libpq/auth.c:2492 libpq/hba.c:1403 #, c-format -msgid "more than one operator named %s" -msgstr "existe más de un operador llamado %s" +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" -#: utils/adt/regproc.c:635 utils/adt/regproc.c:1485 utils/adt/ruleutils.c:5517 -#: utils/adt/ruleutils.c:5572 utils/adt/ruleutils.c:5609 -msgid "too many arguments" -msgstr "demasiados argumentos" +#: libpq/auth.c:2520 +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" -#: utils/adt/regproc.c:636 -msgid "Provide two argument types for operator." -msgstr "Provea dos tipos de argumento para un operador." +#: libpq/auth.c:2531 +msgid "could not generate random encryption vector" +msgstr "no se pudo generar un vector aleatorio de encriptación" -#: utils/adt/regproc.c:1320 utils/adt/regproc.c:1325 utils/adt/varlena.c:2198 -#: utils/adt/varlena.c:2203 -msgid "invalid name syntax" -msgstr "la sintaxis de nombre no es válida" +#: libpq/auth.c:2554 +msgid "could not perform MD5 encryption of password" +msgstr "no se pudo efectuar cifrado MD5 de la contraseña" -#: utils/adt/regproc.c:1383 -msgid "expected a left parenthesis" -msgstr "se esperaba un paréntesis izquierdo" +#: libpq/auth.c:2576 +#, c-format +msgid "could not create RADIUS socket: %m" +msgstr "no se pudo crear el socket RADIUS: %m" -#: utils/adt/regproc.c:1399 -msgid "expected a right parenthesis" -msgstr "se esperaba un paréntesis derecho" +#: libpq/auth.c:2597 +#, c-format +msgid "could not bind local RADIUS socket: %m" +msgstr "no se pudo enlazar el socket RADIUS local: %m" -#: utils/adt/regproc.c:1418 -msgid "expected a type name" -msgstr "se esperaba un nombre de tipo" +#: libpq/auth.c:2607 +#, c-format +msgid "could not send RADIUS packet: %m" +msgstr "no se pudo enviar el paquete RADIUS: %m" -#: utils/adt/regproc.c:1450 -msgid "improper type name" -msgstr "el nombre de tipo no es válido" +#: libpq/auth.c:2636 libpq/auth.c:2661 +msgid "timeout waiting for RADIUS response" +msgstr "se agotó el tiempo de espera de la respuesta RADIUS" -#: utils/adt/ri_triggers.c:407 utils/adt/ri_triggers.c:2803 -#: utils/adt/ri_triggers.c:3454 utils/adt/ri_triggers.c:3486 +#: libpq/auth.c:2654 #, 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»" +msgid "could not check status on RADIUS socket: %m" +msgstr "no se pudo verificar el estado en el socket %m" -#: utils/adt/ri_triggers.c:410 utils/adt/ri_triggers.c:2806 -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." +#: libpq/auth.c:2683 +#, c-format +msgid "could not read RADIUS response: %m" +msgstr "no se pudo leer la respuesta RADIUS: %m" -#: utils/adt/ri_triggers.c:3016 +#: libpq/auth.c:2695 libpq/auth.c:2699 #, c-format -msgid "function \"%s\" must be fired for INSERT" -msgstr "la función «%s» debe ser ejecutada en INSERT" +msgid "RADIUS response was sent from incorrect port: %i" +msgstr "la respuesta RADIUS fue enviada desde el port incorrecto: %i" -#: utils/adt/ri_triggers.c:3022 +#: libpq/auth.c:2708 #, c-format -msgid "function \"%s\" must be fired for UPDATE" -msgstr "la función «%s» debe ser ejecutada en UPDATE" +msgid "RADIUS response too short: %i" +msgstr "la respuesta RADIUS es demasiado corta: %i" -#: utils/adt/ri_triggers.c:3036 +#: libpq/auth.c:2715 #, c-format -msgid "function \"%s\" must be fired for DELETE" -msgstr "la función «%s» debe ser ejecutada en DELETE" +msgid "RADIUS response has corrupt length: %i (actual length %i)" +msgstr "la respuesta RADIUS tiene largo corrupto: %i (largo real %i)" -#: utils/adt/ri_triggers.c:3065 +#: libpq/auth.c:2723 #, 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»" +msgid "RADIUS response is to a different request: %i (should be %i)" +msgstr "la respuesta RADIUS es a una petición diferente: %i (debería ser %i)" -#: utils/adt/ri_triggers.c:3067 -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." +#: libpq/auth.c:2748 +msgid "could not perform MD5 encryption of received packet" +msgstr "no se pudo realizar cifrado MD5 del paquete recibido" + +#: libpq/auth.c:2757 +msgid "RADIUS response has incorrect MD5 signature" +msgstr "la respuesta RADIUS tiene firma MD5 incorrecta" -#: utils/adt/ri_triggers.c:3421 +#: libpq/auth.c:2774 #, 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" +msgid "RADIUS response has invalid code (%i) for user \"%s\"" +msgstr "la respuesta RADIUS tiene código no válido (%i) para el usuario «%s»" -#: utils/adt/ri_triggers.c:3425 -msgid "This is most likely due to a rule having rewritten the query." +#: libpq/hba.c:160 +#, c-format +msgid "authentication file token too long, skipping: \"%s\"" msgstr "" -"Esto probablemente es causado por una regla que reescribió la consulta." +"una palabra en el archivo de autentificación es demasiado larga, ignorando: " +"«%s»" -#: utils/adt/ri_triggers.c:3456 +#: libpq/hba.c:355 #, c-format -msgid "No rows were found in \"%s\"." -msgstr "No se encontraron registros en «%s»." +msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" +msgstr "" +"no se pudo abrir el archivo secundario de autentificación «@%s» como «%s»: %m" -#: utils/adt/ri_triggers.c:3488 +#: libpq/hba.c:628 #, c-format -msgid "Key (%s)=(%s) is not present in table \"%s\"." -msgstr "La llave (%s)=(%s) no está presente en la tabla «%s»." +msgid "could not translate host name \"%s\" to address: %s" +msgstr "no se pudo traducir el nombre «%s» a una dirección: %s" -#: utils/adt/ri_triggers.c:3494 +#. translator: the second %s is a list of auth methods +#: libpq/hba.c:779 #, 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»" +"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" -#: utils/adt/ri_triggers.c:3497 +#: libpq/hba.c:795 #, 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»." +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" -#: utils/adt/rowtypes.c:98 utils/adt/rowtypes.c:473 -msgid "input of anonymous composite types is not implemented" -msgstr "el ingreso de tipos compuestos anónimos no está implementado" +#: libpq/hba.c:832 +msgid "local connections are not supported by this build" +msgstr "las conexiones locales no están soportadas en este servidor" -#: 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 "literal de record no es válido: «%s»" +#: libpq/hba.c:853 +msgid "hostssl requires SSL to be turned on" +msgstr "hostssl requiere que SSL esté activado" -#: utils/adt/rowtypes.c:152 -msgid "Missing left parenthesis." -msgstr "Falta paréntesis izquierdo." +#: libpq/hba.c:854 +msgid "Set ssl = on in postgresql.conf." +msgstr "Defina «ssl = on» en postgresql.conf." -#: utils/adt/rowtypes.c:180 -msgid "Too few columns." -msgstr "Muy pocas columnas." +#: libpq/hba.c:862 +msgid "hostssl is not supported by this build" +msgstr "hostssl no está soportado en este servidor" -#: utils/adt/rowtypes.c:204 utils/adt/rowtypes.c:212 -msgid "Unexpected end of input." -msgstr "Fin inesperado de la entrada." +#: libpq/hba.c:863 +msgid "Compile with --with-openssl to use SSL connections." +msgstr "Compile con --with-openssl para usar conexiones SSL." -#: utils/adt/rowtypes.c:263 -msgid "Too many columns." -msgstr "Demasiadas columnas." +#: libpq/hba.c:885 +#, c-format +msgid "invalid connection type \"%s\"" +msgstr "tipo de conexión «%s» no válido" -#: utils/adt/rowtypes.c:271 -msgid "Junk after right parenthesis." -msgstr "Basura después del paréntesis derecho." +#: libpq/hba.c:898 +msgid "end-of-line before database specification" +msgstr "fin de línea antes de especificación de base de datos" -#: utils/adt/rowtypes.c:522 -#, c-format -msgid "wrong number of columns: %d, expected %d" -msgstr "número de columnas erróneo: %d, se esperaban %d" +#: libpq/hba.c:911 +msgid "end-of-line before role specification" +msgstr "fin de línea antes de especificación de rol" -#: utils/adt/rowtypes.c:549 -#, c-format -msgid "wrong data type: %u, expected %u" -msgstr "tipo de dato erróneo: %u, se esperaba %u" +#: libpq/hba.c:926 +msgid "end-of-line before IP address specification" +msgstr "fin de línea antes de especificación de dirección IP" -#: utils/adt/rowtypes.c:610 +#: libpq/hba.c:980 #, c-format -msgid "improper binary format in record column %d" -msgstr "formato binario incorrecto en la columna record %d" +msgid "invalid IP address \"%s\": %s" +msgstr "dirección IP «%s» no válida: %s" -#: utils/adt/rowtypes.c:896 utils/adt/rowtypes.c:1122 +#: libpq/hba.c:1000 #, c-format -msgid "cannot compare dissimilar column types %s and %s at record column %d" +msgid "specifying both host name and CIDR mask is invalid: \"%s\"" msgstr "" -"no se pueden comparar los tipos de columnas disímiles %s y %s en la columna " -"%d" - -#: utils/adt/rowtypes.c:974 utils/adt/rowtypes.c:1185 -msgid "cannot compare record types with different numbers of columns" -msgstr "no se pueden comparar registros con cantidad distinta de columnas" +"especificar tanto el nombre de host como la máscara CIDR no es válido: «%s»" -#: utils/adt/ruleutils.c:2237 +#: libpq/hba.c:1014 #, 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:4762 utils/adt/selfuncs.c:5191 -msgid "case insensitive matching not supported on type bytea" -msgstr "no está soportada la comparación insensible a mayúsculas en bytea" +msgid "invalid CIDR mask in address \"%s\"" +msgstr "máscara CIDR no válida en dirección «%s»" -#: utils/adt/selfuncs.c:4867 utils/adt/selfuncs.c:5351 -msgid "regular-expression matching not supported on type bytea" -msgstr "no está soportada la comparación con expresiones regulares en bytea" +#: libpq/hba.c:1032 +msgid "end-of-line before netmask specification" +msgstr "fin de línea antes de especificación de máscara de red" -#: utils/adt/tid.c:70 utils/adt/tid.c:78 utils/adt/tid.c:86 +#: libpq/hba.c:1044 #, c-format -msgid "invalid input syntax for type tid: \"%s\"" -msgstr "la sintaxis de entrada no es válida para tipo tid: «%s»" +msgid "invalid IP mask \"%s\": %s" +msgstr "máscara IP «%s» no válida: %s" -#: utils/adt/timestamp.c:97 +#: libpq/hba.c:1061 +msgid "IP address and mask do not match" +msgstr "La dirección y máscara IP no coinciden" + +#: libpq/hba.c:1076 +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:1149 #, c-format -msgid "TIMESTAMP(%d)%s precision must not be negative" -msgstr "la precisión de TIMESTAMP(%d)%s no debe ser negativa" +msgid "invalid authentication method \"%s\"" +msgstr "método de autentificación «%s» no válido" -#: utils/adt/timestamp.c:103 +#: libpq/hba.c:1160 #, 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" +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" -#: utils/adt/timestamp.c:171 utils/adt/timestamp.c:435 -#, c-format -msgid "timestamp out of range: \"%s\"" -msgstr "timestamp fuera de rango: «%s»" +#: libpq/hba.c:1181 +msgid "krb5 authentication is not supported on local sockets" +msgstr "la autentificación krb5 no está soportada en conexiones locales" -#: 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 "el valor de date/time «%s» ya no está soportado" +#: libpq/hba.c:1192 +msgid "gssapi authentication is not supported on local sockets" +msgstr "la autentificación gssapi no está soportada en conexiones locales" -#: utils/adt/timestamp.c:260 -msgid "timestamp cannot be NaN" -msgstr "el timestamp no puede ser NaN" +#: libpq/hba.c:1203 +msgid "peer authentication is only supported on local sockets" +msgstr "la autentificación peer sólo está soportada en conexiones locales" -#: utils/adt/timestamp.c:370 +#: libpq/hba.c:1220 +msgid "cert authentication is only supported on hostssl connections" +msgstr "la autentificación cert sólo está soportada en conexiones hostssl" + +#: libpq/hba.c:1241 #, 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" +msgid "authentication option not in name=value format: %s" +msgstr "opción de autentificación en formato nombre=valor: %s" -#: 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 fuera de rango" +#: libpq/hba.c:1257 +msgid "ident, peer, krb5, gssapi, sspi and cert" +msgstr "ident, peer, krb5, gssapi, sspi y cert" -#: utils/adt/timestamp.c:787 utils/adt/timestamp.c:820 -msgid "invalid INTERVAL type modifier" -msgstr "modificador de tipo INTERVAL no válido" +#: libpq/hba.c:1271 +msgid "clientcert can only be configured for \"hostssl\" rows" +msgstr "clientcert sólo puede ser configurado en líneas «hostssl»" -#: utils/adt/timestamp.c:803 -#, c-format -msgid "INTERVAL(%d) precision must not be negative" -msgstr "la precisión de INTERVAL(%d) no debe ser negativa" +#: libpq/hba.c:1282 +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" -#: utils/adt/timestamp.c:809 -#, 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" +#: libpq/hba.c:1283 +msgid "Make sure the root.crt file is present and readable." +msgstr "Asegúrese que el archivo root.crt está presente y es legible." -#: utils/adt/timestamp.c:1101 +#: libpq/hba.c:1296 +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:1330 #, 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" +msgid "invalid LDAP port number: \"%s\"" +msgstr "número de puerto LDAP no válido: «%s»" -#: utils/adt/timestamp.c:2306 -msgid "cannot subtract infinite timestamps" -msgstr "no se pueden restar timestamps infinitos" +#: libpq/hba.c:1376 libpq/hba.c:1384 +msgid "krb5, gssapi and sspi" +msgstr "krb5, gssapi y sspi" -#: utils/adt/timestamp.c:3365 utils/adt/timestamp.c:3961 -#: utils/adt/timestamp.c:4020 +#: libpq/hba.c:1422 #, c-format -msgid "timestamp units \"%s\" not supported" -msgstr "las unidades de timestamp «%s» no están soportadas" +msgid "invalid RADIUS port number: \"%s\"" +msgstr "número de puerto RADIUS no válido: «%s»" -#: utils/adt/timestamp.c:3379 utils/adt/timestamp.c:4030 +#: libpq/hba.c:1442 #, c-format -msgid "timestamp units \"%s\" not recognized" -msgstr "las unidades de timestamp «%s» no son reconocidas" +msgid "unrecognized authentication option name: \"%s\"" +msgstr "nombre de opción de autentificación desconocido: «%s»" -#: 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 "las unidades de timestamp with time zone «%s» no están soportadas" +#: libpq/hba.c:1474 +msgid "" +"cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, or ldapsearchattribute " +"together with ldapprefix" +msgstr "" +"no se puede usar ldapbasedn, ldapbinddn, ldapbindpasswd or " +"ldapsearchattribute junto con ldapprefix" -#: utils/adt/timestamp.c:3537 utils/adt/timestamp.c:4242 -#, c-format -msgid "timestamp with time zone units \"%s\" not recognized" -msgstr "las unidades de timestamp with time zone «%s» no son reconocidas" +#: libpq/hba.c:1484 +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" -#: utils/adt/timestamp.c:3617 utils/adt/timestamp.c:4348 +#: libpq/hba.c:1815 #, c-format -msgid "interval units \"%s\" not supported" -msgstr "las unidades de interval «%s» no están soportadas" +msgid "invalid regular expression \"%s\": %s" +msgstr "la expresión regular «%s» no es válida: %s" -#: utils/adt/timestamp.c:3633 utils/adt/timestamp.c:4375 +#: libpq/hba.c:1838 #, c-format -msgid "interval units \"%s\" not recognized" -msgstr "las unidades de interval «%s» no son reconocidas" +msgid "regular expression match for \"%s\" failed: %s" +msgstr "la coincidencia de expresión regular para «%s» falló: %s" -#: utils/adt/timestamp.c:4445 utils/adt/timestamp.c:4618 +#: libpq/hba.c:1856 #, c-format -msgid "could not convert to time zone \"%s\"" -msgstr "no se pudo convertir al huso horario «%s»" +msgid "" +"regular expression \"%s\" has no subexpressions as requested by " +"backreference in \"%s\"" +msgstr "" +"la expresión regular «%s» no tiene subexpresiones según lo requiere la " +"referencia hacia atrás en «%s»" -#: utils/adt/timestamp.c:4477 utils/adt/timestamp.c:4651 +#: libpq/hba.c:1922 #, c-format -msgid "interval time zone \"%s\" must not specify month" -msgstr "el intervalo de huso horario «%s» no debe especificar mes" - -#: utils/adt/trigfuncs.c:41 -msgid "suppress_redundant_updates_trigger: must be called as trigger" -msgstr "suppress_redundant_updates_trigger: debe ser invocado como trigger" - -#: utils/adt/trigfuncs.c:47 -msgid "suppress_redundant_updates_trigger: must be called on update" -msgstr "suppress_redundant_updates_trigger: debe ser invocado en «UPDATE»" - -#: utils/adt/trigfuncs.c:53 -msgid "suppress_redundant_updates_trigger: must be called before update" -msgstr "suppress_redundant_updates_trigger: debe ser invocado «BEFORE UPDATE»" - -#: utils/adt/trigfuncs.c:59 -msgid "suppress_redundant_updates_trigger: must be called for each row" -msgstr "suppress_redundant_updates_trigger: debe ser invocado «FOR EACH ROW»" +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" -#: utils/adt/tsgistidx.c:100 -msgid "gtsvector_in not implemented" -msgstr "gtsvector_in no está implementado" +#: libpq/hba.c:1963 +#, 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" -#: utils/adt/tsquery.c:156 utils/adt/tsquery.c:392 -#: utils/adt/tsvector_parser.c:136 +#: libpq/hba.c:1984 #, c-format -msgid "syntax error in tsquery: \"%s\"" -msgstr "error de sintaxis en tsquery: «%s»" +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»" -#: utils/adt/tsquery.c:177 +#: libpq/hba.c:2008 #, c-format -msgid "no operand in tsquery: \"%s\"" -msgstr "no hay operando en tsquery: «%s»" +msgid "could not open usermap file \"%s\": %m" +msgstr "no se pudo abrir el archivo de mapa de usuarios «%s»: %m" -#: utils/adt/tsquery.c:250 +#: 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 "value is too big in tsquery: \"%s\"" -msgstr "el valor es demasiado grande en tsquery: «%s»" +msgid "invalid large-object descriptor: %d" +msgstr "el descriptor de objeto grande no es válido: %d" -#: utils/adt/tsquery.c:255 +#: libpq/be-fsstubs.c:173 libpq/be-fsstubs.c:205 libpq/be-fsstubs.c:529 #, c-format -msgid "operand is too long in tsquery: \"%s\"" -msgstr "el operando es muy largo en tsquery: «%s»" +msgid "permission denied for large object %u" +msgstr "permiso denegado al objeto grande %u" -#: utils/adt/tsquery.c:283 +#: libpq/be-fsstubs.c:194 #, c-format -msgid "word is too long in tsquery: \"%s\"" -msgstr "palabra demasiado larga en tsquery: «%s»" +msgid "large object descriptor %d was not opened for writing" +msgstr "el descriptor de objeto grande %d no fue abierto para escritura" -#: utils/adt/tsquery.c:512 +#: libpq/be-fsstubs.c:287 catalog/objectaddress.c:828 +#: catalog/pg_largeobject.c:200 #, c-format -msgid "text-search query doesn't contain lexemes: \"%s\"" -msgstr "la consulta de búsqueda en texto no contiene lexemas: «%s»" +msgid "must be owner of large object %u" +msgstr "debe ser dueño del objeto grande %u" -#: utils/adt/tsquery_cleanup.c:285 -msgid "" -"text-search query contains only stop words or doesn't contain lexemes, " -"ignored" +#: libpq/be-fsstubs.c:392 +msgid "must be superuser to use server-side lo_import()" msgstr "" -"la consulta de búsqueda en texto contiene sólo stopwords o no contiene " -"lexemas; ignorada" +"debe ser superusuario para utilizar lo_import() en el extremo del servidor" -#: utils/adt/tsquery_rewrite.c:296 -msgid "ts_rewrite query must return two tsquery columns" -msgstr "consulta ts_rewrite debe retornar dos columnas tsquery" +#: libpq/be-fsstubs.c:393 +msgid "Anyone can use the client-side lo_import() provided by libpq." +msgstr "" +"Todos los usuarios pueden utilizar lo_import() de cliente proporcionada por " +"libpq." -#: utils/adt/tsrank.c:404 -msgid "array of weight must be one-dimensional" -msgstr "el array de pesos debe ser unidimensional" +#: libpq/be-fsstubs.c:406 +#, c-format +msgid "could not open server file \"%s\": %m" +msgstr "no se pudo abrir el archivo de servidor «%s»: %m" -#: utils/adt/tsrank.c:409 -msgid "array of weight is too short" -msgstr "el array de pesos es muy corto" +#: libpq/be-fsstubs.c:428 +#, c-format +msgid "could not read server file \"%s\": %m" +msgstr "no se pudo leer el archivo de servidor «%s»: %m" -#: utils/adt/tsrank.c:414 -msgid "array of weight must not contain nulls" -msgstr "los arrays de pesos no deben contener valores nulos" +#: libpq/be-fsstubs.c:458 +msgid "must be superuser to use server-side lo_export()" +msgstr "" +"debe ser superusuario para utilizar lo_export() en el extremo del servidor" -#: utils/adt/tsrank.c:423 utils/adt/tsrank.c:749 -msgid "weight out of range" -msgstr "el peso está fuera de rango" +#: libpq/be-fsstubs.c:459 +msgid "Anyone can use the client-side lo_export() provided by libpq." +msgstr "" +"Todos los usuarios pueden utilizar lo_export() de cliente proporcionada por " +"libpq." -#: utils/adt/tsvector.c:215 +#: libpq/be-fsstubs.c:484 #, c-format -msgid "word is too long (%ld bytes, max %ld bytes)" -msgstr "la palabra es demasiado larga (%ld, máximo %ld bytes)" +msgid "could not create server file \"%s\": %m" +msgstr "no se pudo crear el archivo del servidor «%s»: %m" -#: utils/adt/tsvector.c:222 +#: libpq/be-fsstubs.c:496 #, 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)" - -#: utils/adt/tsvector_op.c:1103 -msgid "ts_stat query must return one tsvector column" -msgstr "la consulta ts_stat debe retornar una columna tsvector" +msgid "could not write server file \"%s\": %m" +msgstr "no se pudo escribir el archivo del servidor «%s»: %m" -#: utils/adt/tsvector_op.c:1283 +#: storage/file/fd.c:411 #, c-format -msgid "tsvector column \"%s\" does not exist" -msgstr "la columna tsvector «%s» no existe" +msgid "getrlimit failed: %m" +msgstr "getrlimit falló: %m" + +#: storage/file/fd.c:501 +msgid "insufficient file descriptors available to start server process" +msgstr "" +"los descriptores de archivo disponibles son insuficientes para iniciar un " +"proceso servidor" -#: utils/adt/tsvector_op.c:1289 +#: storage/file/fd.c:502 #, c-format -msgid "column \"%s\" is not of tsvector type" -msgstr "la columna «%s» no es de tipo tsvector" +msgid "System allows %d, we need at least %d." +msgstr "El sistema permite %d, se requieren al menos %d." -#: utils/adt/tsvector_op.c:1301 +#: storage/file/fd.c:543 storage/file/fd.c:1528 storage/file/fd.c:1643 #, c-format -msgid "configuration column \"%s\" does not exist" -msgstr "la columna de configuración «%s» no existe" +msgid "out of file descriptors: %m; release and retry" +msgstr "" +"se agotaron los descriptores de archivo: %m; libere e intente nuevamente" -#: utils/adt/tsvector_op.c:1307 +#: storage/file/fd.c:1110 #, c-format -msgid "column \"%s\" is not of regconfig type" -msgstr "la columna «%s» no es de tipo regconfig" +msgid "temporary file: path \"%s\", size %lu" +msgstr "archivo temporal: ruta «%s», tamaño %lu" -#: utils/adt/tsvector_op.c:1314 +#: storage/file/fd.c:1504 #, c-format -msgid "configuration column \"%s\" must not be null" -msgstr "la columna de configuración «%s» no debe ser nula" +msgid "exceeded maxAllocatedDescs (%d) while trying to open file \"%s\"" +msgstr "" +"se excedió maxAllocatedDescs (%d) mientras se trataba de abrir el archivo " +"«%s»" -#: utils/adt/tsvector_op.c:1327 +#: storage/file/fd.c:1619 #, c-format -msgid "text search configuration name \"%s\" must be schema-qualified" +msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\"" msgstr "" -"el nombre de la configuración de búsqueda «%s» debe ser calificada con " -"esquema" +"se excedió maxAllocatedDescs (%d) mientras se trataba de abrir el directorio " +"«%s»" -#: utils/adt/tsvector_op.c:1352 +#: storage/file/fd.c:1702 #, c-format -msgid "column \"%s\" is not of a character type" -msgstr "la columna «%s» no es de un tipo textual" +msgid "could not read directory \"%s\": %m" +msgstr "no se pudo leer el directorio «%s»: %m" -#: utils/adt/tsvector_parser.c:137 +#: storage/ipc/shmem.c:346 storage/ipc/shmem.c:399 #, c-format -msgid "syntax error in tsvector: \"%s\"" -msgstr "error de sintaxis en tsvector: «%s»" +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" -#: utils/adt/tsvector_parser.c:202 +#: storage/ipc/shmem.c:365 #, c-format -msgid "there is no escaped character: \"%s\"" -msgstr "no hay carácter escapado: «%s»" +msgid "could not create ShmemIndex entry for data structure \"%s\"" +msgstr "no se pudo crear la entrada en ShmemIndex para la estructura «%s»" -#: utils/adt/tsvector_parser.c:319 +#: storage/ipc/shmem.c:380 #, c-format -msgid "wrong position info in tsvector: \"%s\"" -msgstr "información posicional incorrecta en tsvector: «%s»" +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" -#: utils/adt/uuid.c:128 -#, c-format -msgid "invalid input syntax for uuid: \"%s\"" -msgstr "la sintaxis de entrada no es válida para el tipo uuid: «%s»" +#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446 +msgid "requested shared memory size overflows size_t" +msgstr "la petición de tamaño de memoria compartida desborda size_t" -#: utils/adt/varbit.c:54 utils/adt/varchar.c:48 -#, c-format -msgid "length for type %s must be at least 1" -msgstr "el largo para el tipo %s debe ser al menos 1" +#: storage/buffer/bufmgr.c:134 storage/buffer/bufmgr.c:239 +msgid "cannot access temporary tables of other sessions" +msgstr "no se pueden acceder tablas temporales de otras sesiones" -#: utils/adt/varbit.c:59 utils/adt/varchar.c:52 +#: storage/buffer/bufmgr.c:375 #, c-format -msgid "length for type %s cannot exceed %d" -msgstr "el largo del tipo %s no puede exceder %d" +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:377 +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." -#: utils/adt/varbit.c:162 utils/adt/varbit.c:302 utils/adt/varbit.c:358 +#: storage/buffer/bufmgr.c:449 #, 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)" +msgid "invalid page header in block %u of relation %s; zeroing out page" +msgstr "" +"el encabezado de página no es válido en el bloque %u de la relación «%s»; " +"reinicializando la página" -#: utils/adt/varbit.c:184 utils/adt/varbit.c:482 +#: storage/buffer/bufmgr.c:457 #, c-format -msgid "\"%c\" is not a valid binary digit" -msgstr "«%c» no es un dígito binario válido" +msgid "invalid page header in block %u of relation %s" +msgstr "el encabezado de página no es válido en el bloque %u de la relación %s" -#: utils/adt/varbit.c:209 utils/adt/varbit.c:507 +#: storage/buffer/bufmgr.c:2743 #, c-format -msgid "\"%c\" is not a valid hexadecimal digit" -msgstr "«%c» no es un dígito hexadecimal válido" +msgid "could not write block %u of %s" +msgstr "no se pudo escribir el bloque %u de %s" -#: utils/adt/varbit.c:293 utils/adt/varbit.c:594 -msgid "invalid length in external bit string" -msgstr "el largo largo no es válido en cadena de bits externa" +#: storage/buffer/bufmgr.c:2745 +msgid "Multiple failures --- write error might be permanent." +msgstr "Múltiples fallas --- el error de escritura puede ser permanente." -#: utils/adt/varbit.c:460 utils/adt/varbit.c:603 utils/adt/varbit.c:664 +#: storage/buffer/bufmgr.c:2766 storage/buffer/bufmgr.c:2785 #, 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:991 utils/adt/varbit.c:1093 utils/adt/varlena.c:729 -#: utils/adt/varlena.c:793 utils/adt/varlena.c:937 utils/adt/varlena.c:1843 -#: utils/adt/varlena.c:1910 -msgid "negative substring length not allowed" -msgstr "no se permite un largo negativo de subcadena" +msgid "writing block %u of relation %s" +msgstr "escribiendo el bloque %u de la relación %s" -#: utils/adt/varbit.c:1149 -msgid "cannot AND bit strings of different sizes" -msgstr "no se puede hacer AND entre cadenas de bits de distintos tamaños" +#: storage/buffer/localbuf.c:190 +msgid "no empty local buffer available" +msgstr "no hay ningún búfer local disponible" -#: utils/adt/varbit.c:1190 -msgid "cannot OR bit strings of different sizes" -msgstr "no se puede hacer OR entre cadenas de bits de distintos tamaños" +#: storage/large_object/inv_api.c:277 catalog/aclchk.c:647 +#: catalog/aclchk.c:3676 catalog/aclchk.c:4367 catalog/objectaddress.c:199 +#: catalog/pg_largeobject.c:116 catalog/pg_largeobject.c:176 +#, c-format +msgid "large object %u does not exist" +msgstr "no existe el objeto grande %u" -#: utils/adt/varbit.c:1236 -msgid "cannot XOR bit strings of different sizes" -msgstr "no se puede hacer XOR entre cadenas de bits de distintos tamaños" +#: 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 "el objeto grande %u no fue abierto para escritura" -#: utils/adt/varbit.c:1710 utils/adt/varbit.c:1768 +#: storage/large_object/inv_api.c:562 storage/large_object/inv_api.c:759 #, 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)" +msgid "large object %u was already dropped" +msgstr "el objeto grande %u ya fue eliminado" -#: utils/adt/varbit.c:1719 utils/adt/varlena.c:2110 -msgid "new bit must be 0 or 1" -msgstr "el nuevo bit debe ser 0 o 1" +#: 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 "" +"los punteros de página están corruptos: inferior = %u, superior = %u, " +"especial = %u" -#: utils/adt/varchar.c:152 utils/adt/varchar.c:305 +#: storage/page/bufpage.c:433 #, c-format -msgid "value too long for type character(%d)" -msgstr "el valor es demasiado largo para el tipo character(%d)" +msgid "corrupted item pointer: %u" +msgstr "el puntero de item está corrupto: %u" -#: utils/adt/varchar.c:473 utils/adt/varchar.c:594 +#: storage/page/bufpage.c:444 storage/page/bufpage.c:805 #, c-format -msgid "value too long for type character varying(%d)" -msgstr "el valor es demasiado largo para el tipo character varying(%d)" +msgid "corrupted item lengths: total %u, available space %u" +msgstr "los largos de ítem están corruptos: total %u, espacio disponible %u" -#: utils/adt/varlena.c:1333 utils/adt/varlena.c:1346 +#: storage/page/bufpage.c:642 storage/page/bufpage.c:778 #, c-format -msgid "could not convert string to UTF-16: error %lu" -msgstr "no se pudo convertir la cadena a UTF-16: error %lu" +msgid "corrupted item pointer: offset = %u, size = %u" +msgstr "el puntero de ítem está corrupto: posición = %u, tamaño = %u" -#: utils/adt/varlena.c:1356 +#: storage/smgr/md.c:393 storage/smgr/md.c:863 #, c-format -msgid "could not compare Unicode strings: %m" -msgstr "no se pudieron comparar las cadenas Unicode: %m" +msgid "could not truncate file \"%s\": %m" +msgstr "no se pudo truncar el archivo «%s»: %m" -#: utils/adt/varlena.c:1988 utils/adt/varlena.c:2019 utils/adt/varlena.c:2055 -#: utils/adt/varlena.c:2098 +#: storage/smgr/md.c:460 #, c-format -msgid "index %d out of valid range, 0..%d" -msgstr "el índice %d está fuera de rango [0..%d]" +msgid "cannot extend file \"%s\" beyond %u blocks" +msgstr "no se pudo extender el archivo «%s» más allá de %u bloques" -#: utils/adt/varlena.c:2890 -msgid "field position must be greater than zero" -msgstr "la posición del campo debe ser mayor que cero" +#: storage/smgr/md.c:482 storage/smgr/md.c:643 storage/smgr/md.c:718 +#, 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" -#: utils/adt/windowfuncs.c:243 -msgid "argument of ntile must be greater than zero" -msgstr "el argumento de ntile debe ser mayor que cero" +#: storage/smgr/md.c:490 +#, c-format +msgid "could not extend file \"%s\": %m" +msgstr "no se pudo extender el archivo «%s»: %m" -#: utils/adt/windowfuncs.c:465 -msgid "argument of nth_value must be greater than zero" -msgstr "el argumento de nth_value debe ser mayor que cero" +#: storage/smgr/md.c:492 storage/smgr/md.c:499 storage/smgr/md.c:745 +msgid "Check free disk space." +msgstr "Verifique el espacio libre en disco." -#: utils/misc/tzparser.c:63 +#: storage/smgr/md.c:496 #, c-format -msgid "" -"time zone abbreviation \"%s\" is too long (maximum %d characters) in time " -"zone file \"%s\", line %d" +msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u" msgstr "" -"la abreviación del huso horario «%s» es demasiado larga (máximo %d " -"caracteres) en archivo de huso horario «%s», línea %d" +"no se pudo extender el archivo «%s»: sólo se escribieron %d de %d bytes en " +"el bloque %u" -#: utils/misc/tzparser.c:72 +#: storage/smgr/md.c:661 #, 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" +msgid "could not read block %u in file \"%s\": %m" +msgstr "no se pudo leer el bloque %u del archivo «%s»: %m" -#: utils/misc/tzparser.c:86 +#: storage/smgr/md.c:677 #, c-format -msgid "time zone offset %d is out of range in time zone file \"%s\", line %d" +msgid "could not read block %u in file \"%s\": read only %d of %d bytes" msgstr "" -"desplazamiento de huso horario %d está fuera de rango en el archivo de huso " -"horario «%s», línea %d" +"no se pudo leer el bloque %u del archivo «%s»: se leyeron sólo %d de %d bytes" -#: utils/misc/tzparser.c:123 +#: storage/smgr/md.c:736 #, 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" +msgid "could not write block %u in file \"%s\": %m" +msgstr "no se pudo escribir el bloque %u en el archivo «%s»: %m" -#: utils/misc/tzparser.c:134 +#: storage/smgr/md.c:741 #, c-format -msgid "missing time zone offset in time zone file \"%s\", line %d" +msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes" msgstr "" -"falta un desplazamiento de huso horario en el archivo de huso horario «%s», " -"línea %d" +"no se pudo escribir el bloque %u en el archivo «%s»: se escribieron sólo %d " +"de %d bytes" -#: utils/misc/tzparser.c:143 +#: storage/smgr/md.c:839 #, c-format -msgid "invalid number for time zone offset in time zone file \"%s\", line %d" +msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now" msgstr "" -"número no válido para desplazamiento de huso horario en archivo de huso " -"horario «%s», línea %d" +"no se pudo truncar el archivo «%s» a %u bloques: es de sólo %u bloques ahora" -#: utils/misc/tzparser.c:168 +#: storage/smgr/md.c:888 #, 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" +msgid "could not truncate file \"%s\" to %u blocks: %m" +msgstr "no se pudo truncar el archivo «%s» a %u bloques: %m" -#: utils/misc/tzparser.c:234 +#: storage/smgr/md.c:1141 #, c-format -msgid "time zone abbreviation \"%s\" is multiply defined" -msgstr "abreviación de huso horario «%s» está definida múltiples veces" +msgid "could not fsync file \"%s\" but retrying: %m" +msgstr "no se pudo sincronizar (fsync) archivo «%s» pero reintentando: %m" -#: utils/misc/tzparser.c:236 -#, c-format -msgid "" -"Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s" -"\", line %d." +#: storage/smgr/md.c:1286 +msgid "could not forward fsync request because request queue is full" msgstr "" -"Entrada en archivo de huso horario «%s», línea %d, causa conflictos con " -"entrada en archivo «%s», línea %d." +"no se pudo enviar una petición fsync porque la cola de peticiones está llena" -#: utils/misc/tzparser.c:303 +#: storage/smgr/md.c:1661 #, c-format -msgid "invalid time zone file name \"%s\"" -msgstr "nombre de huso horario «%s» no válido" +msgid "could not open file \"%s\" (target block %u): %m" +msgstr "no se pudo abrir el archivo «%s» (bloque buscado %u): %m" -#: utils/misc/tzparser.c:318 +#: storage/smgr/md.c:1683 #, c-format -msgid "time zone file recursion limit exceeded in file \"%s\"" -msgstr "límite de recursión excedido en el archivo «%s»" +msgid "could not seek to end of file \"%s\": %m" +msgstr "no se pudo posicionar (seek) al fin del archivo «%s»: %m" -#: utils/misc/tzparser.c:361 utils/misc/tzparser.c:376 -#, c-format -msgid "could not read time zone file \"%s\": %m" -msgstr "no se pudo leer archivo de huso horario «%s»: %m" +#: storage/lmgr/predicate.c:665 +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" -#: utils/misc/tzparser.c:388 -#, 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" +#: storage/lmgr/predicate.c:666 storage/lmgr/predicate.c:694 +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." -#: utils/misc/tzparser.c:413 -#, c-format -msgid "@INCLUDE without file name in time zone file \"%s\", line %d" +#: storage/lmgr/predicate.c:693 +msgid "" +"not enough elements in RWConflictPool to record a potential read/write " +"conflict" msgstr "" -"@INCLUDE sin nombre de archivo en archivo de huso horario «%s», línea %d" +"no hay suficientes elementos en RWConflictPool para registrar un potencial " +"conflicto read/write" -#: utils/misc/guc.c:476 -msgid "Ungrouped" -msgstr "Sin Grupo" +#: storage/lmgr/predicate.c:898 +msgid "memory for serializable conflict tracking is nearly exhausted" +msgstr "" +"la memoria para el seguimiento de conflictos de serialización está casi " +"agotada" -#: utils/misc/guc.c:478 -msgid "File Locations" -msgstr "Ubicaciones de Archivos" +#: storage/lmgr/predicate.c:899 +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." -#: utils/misc/guc.c:480 -msgid "Connections and Authentication" -msgstr "Conexiones y Autentificación" +#: storage/lmgr/predicate.c:1181 storage/lmgr/predicate.c:1253 +#, 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)" -#: utils/misc/guc.c:482 -msgid "Connections and Authentication / Connection Settings" -msgstr "Conexiones y Autentificación / Parámetros de Conexión" +#: storage/lmgr/predicate.c:1536 +msgid "deferrable snapshot was unsafe; trying a new one" +msgstr "la instantánea postergada era insegura; intentando con una nueva" -#: utils/misc/guc.c:484 -msgid "Connections and Authentication / Security and Authentication" -msgstr "Conexiones y Autentificación / Seguridad y Autentificación" +#: storage/lmgr/predicate.c:1571 +msgid "\"default_transaction_isolation\" is set to \"serializable\"." +msgstr "«default_transaction_isolation» está definido a «serializable»." -#: utils/misc/guc.c:486 -msgid "Resource Usage" -msgstr "Uso de Recursos" +#: storage/lmgr/predicate.c:1572 +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." -#: utils/misc/guc.c:488 -msgid "Resource Usage / Memory" -msgstr "Uso de Recursos / Memoria" +#: storage/lmgr/predicate.c:2247 storage/lmgr/predicate.c:2262 +#: storage/lmgr/predicate.c:3657 +msgid "You might need to increase max_pred_locks_per_transaction." +msgstr "Puede ser necesario incrementar max_pred_locks_per_transaction." -#: utils/misc/guc.c:490 -msgid "Resource Usage / Kernel Resources" -msgstr "Uso de Recursos / Recursos del Kernel" +#: storage/lmgr/predicate.c:3811 storage/lmgr/predicate.c:3900 +#: storage/lmgr/predicate.c:3908 storage/lmgr/predicate.c:3947 +#: storage/lmgr/predicate.c:4186 storage/lmgr/predicate.c:4524 +#: storage/lmgr/predicate.c:4536 storage/lmgr/predicate.c:4578 +#: storage/lmgr/predicate.c:4616 +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" -#: utils/misc/guc.c:492 -msgid "Resource Usage / Cost-Based Vacuum Delay" -msgstr "Uso de Recursos / Retardo de Vacuum por Costos" +#: storage/lmgr/predicate.c:3813 storage/lmgr/predicate.c:3902 +#: storage/lmgr/predicate.c:3910 storage/lmgr/predicate.c:3949 +#: storage/lmgr/predicate.c:4188 storage/lmgr/predicate.c:4526 +#: storage/lmgr/predicate.c:4538 storage/lmgr/predicate.c:4580 +#: storage/lmgr/predicate.c:4618 +msgid "The transaction might succeed if retried." +msgstr "La transacción podría tener éxito si es reintentada." -#: utils/misc/guc.c:494 -msgid "Resource Usage / Background Writer" -msgstr "Uso de Recursos / Escritor en Segundo Plano" +#: storage/lmgr/proc.c:1057 +#, c-format +msgid "Process %d waits for %s on %s." +msgstr "El proceso %d espera %s en %s." -#: utils/misc/guc.c:496 -msgid "Resource Usage / Asynchronous Behavior" -msgstr "Uso de Recursos / Comportamiento Asíncrono" +#: storage/lmgr/proc.c:1067 +#, 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" -#: utils/misc/guc.c:498 -msgid "Write-Ahead Log" -msgstr "Write-Ahead Log" - -#: utils/misc/guc.c:500 -msgid "Write-Ahead Log / Settings" -msgstr "Write-Ahead Log / Configuraciones" - -#: utils/misc/guc.c:502 -msgid "Write-Ahead Log / Checkpoints" -msgstr "Write-Ahead Log / Puntos de Control (Checkpoints)" +#: storage/lmgr/proc.c:1113 +#, 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" -#: utils/misc/guc.c:504 -msgid "Write-Ahead Log / Archiving" -msgstr "Write-Ahead Log / Archivado" +#: storage/lmgr/proc.c:1125 +#, 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" -#: utils/misc/guc.c:506 -msgid "Write-Ahead Log / Streaming Replication" -msgstr "Write-Ahead Log / Replicación en Flujo" +#: storage/lmgr/proc.c:1131 +#, 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" -#: utils/misc/guc.c:508 -msgid "Write-Ahead Log / Standby Servers" -msgstr "Write-Ahead Log / Servidores Standby" +#: storage/lmgr/proc.c:1135 +#, 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" -#: utils/misc/guc.c:510 -msgid "Query Tuning" -msgstr "Afinamiento de Consultas" +#: storage/lmgr/proc.c:1151 +#, 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" -#: utils/misc/guc.c:512 -msgid "Query Tuning / Planner Method Configuration" -msgstr "Afinamiento de Consultas / Configuración de Métodos del Planner" +#: storage/lmgr/lock.c:609 +#, c-format +msgid "" +"cannot acquire lock mode %s on database objects while recovery is in progress" +msgstr "" +"no se puede adquirir candado en modo %s en objetos de la base de datos " +"mientras la recuperación está en proceso" -#: utils/misc/guc.c:514 -msgid "Query Tuning / Planner Cost Constants" -msgstr "Afinamiento de Consultas / Constantes de Costo del Planner" +#: storage/lmgr/lock.c:611 +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." -#: utils/misc/guc.c:516 -msgid "Query Tuning / Genetic Query Optimizer" -msgstr "Afinamiento de Consultas / Optimizador Genético de Consultas" +#: storage/lmgr/lock.c:724 storage/lmgr/lock.c:793 storage/lmgr/lock.c:2701 +#: storage/lmgr/lock.c:2766 +msgid "You might need to increase max_locks_per_transaction." +msgstr "Puede ser necesario incrementar max_locks_per_transaction." -#: utils/misc/guc.c:518 -msgid "Query Tuning / Other Planner Options" -msgstr "Afinamiento de Consultas / Otras Opciones del Planner" +#: storage/lmgr/lock.c:2116 storage/lmgr/lock.c:2210 +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" -#: utils/misc/guc.c:520 -msgid "Reporting and Logging" -msgstr "Reporte y Registro" +#: storage/lmgr/lock.c:2302 +msgid "Not enough memory for reassigning the prepared transaction's locks." +msgstr "" +"No hay memoria suficiente para reasignar los bloqueos de la transacción " +"preparada" -#: utils/misc/guc.c:522 -msgid "Reporting and Logging / Where to Log" -msgstr "Reporte y Registro / Cuándo Registrar" +#: storage/lmgr/deadlock.c:923 +#, c-format +msgid "Process %d waits for %s on %s; blocked by process %d." +msgstr "El proceso %d espera %s en %s; bloqueado por proceso %d." -#: utils/misc/guc.c:524 -msgid "Reporting and Logging / When to Log" -msgstr "Reporte y Registro / Cuándo Registrar" +#: storage/lmgr/deadlock.c:942 +#, c-format +msgid "Process %d: %s" +msgstr "Proceso %d: %s" -#: utils/misc/guc.c:526 -msgid "Reporting and Logging / What to Log" -msgstr "Reporte y Registro / Qué Registrar" +#: storage/lmgr/deadlock.c:949 +msgid "deadlock detected" +msgstr "se ha detectado un deadlock" -#: utils/misc/guc.c:528 -msgid "Statistics" -msgstr "Estadísticas" +#: storage/lmgr/deadlock.c:952 +msgid "See server log for query details." +msgstr "Vea el registro del servidor para obtener detalles de las consultas." -#: utils/misc/guc.c:530 -msgid "Statistics / Monitoring" -msgstr "Estadísticas / Monitoreo" +#: storage/lmgr/lmgr.c:756 +#, c-format +msgid "relation %u of database %u" +msgstr "relación %u de la base de datos %u" -#: utils/misc/guc.c:532 -msgid "Statistics / Query and Index Statistics Collector" -msgstr "Estadísticas / Recolector de Estadísticas de Consultas e Índices" +#: storage/lmgr/lmgr.c:762 +#, c-format +msgid "extension of relation %u of database %u" +msgstr "extensión de la relación %u de la base de datos %u" -#: utils/misc/guc.c:534 -msgid "Autovacuum" -msgstr "Autovacuum" +#: storage/lmgr/lmgr.c:768 +#, 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" -#: utils/misc/guc.c:536 -msgid "Client Connection Defaults" -msgstr "Valores por Omisión de Conexiones" +#: storage/lmgr/lmgr.c:775 +#, 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" -#: utils/misc/guc.c:538 -msgid "Client Connection Defaults / Statement Behavior" -msgstr "Valores por Omisión de Conexiones / Comportamiento de Sentencias" +#: storage/lmgr/lmgr.c:783 +#, c-format +msgid "transaction %u" +msgstr "transacción %u" -#: utils/misc/guc.c:540 -msgid "Client Connection Defaults / Locale and Formatting" -msgstr "" -"Valores por Omisión de Conexiones / Configuraciones Regionales y Formateo" +#: storage/lmgr/lmgr.c:788 +#, c-format +msgid "virtual transaction %d/%u" +msgstr "transacción virtual %d/%u" -#: utils/misc/guc.c:542 -msgid "Client Connection Defaults / Other Defaults" -msgstr "Valores por Omisión de Conexiones / Otros Valores" +#: storage/lmgr/lmgr.c:794 +#, c-format +msgid "object %u of class %u of database %u" +msgstr "objeto %u de clase %u de la base de datos %u" -#: utils/misc/guc.c:544 -msgid "Lock Management" -msgstr "Manejo de Bloqueos" +#: storage/lmgr/lmgr.c:802 +#, c-format +msgid "user lock [%u,%u,%u]" +msgstr "candado de usuario [%u,%u,%u]" -#: utils/misc/guc.c:546 -msgid "Version and Platform Compatibility" -msgstr "Compatibilidad de Versión y Plataforma" +# XXX is this a good translation? +#: storage/lmgr/lmgr.c:809 +#, c-format +msgid "advisory lock [%u,%u,%u,%u]" +msgstr "candado consultivo [%u,%u,%u,%u]" -#: utils/misc/guc.c:548 -msgid "Version and Platform Compatibility / Previous PostgreSQL Versions" -msgstr "" -"Compatibilidad de Versión y Plataforma / Versiones Anteriores de PostgreSQL" +#: storage/lmgr/lmgr.c:817 +#, c-format +msgid "unrecognized locktag type %d" +msgstr "tipo de locktag %d no reconocido" -#: utils/misc/guc.c:550 -msgid "Version and Platform Compatibility / Other Platforms and Clients" -msgstr "Compatibilidad de Versión y Plataforma / Otras Plataformas y Clientes" +#: rewrite/rewriteRemove.c:62 rewrite/rewriteSupport.c:117 +#: rewrite/rewriteDefine.c:700 rewrite/rewriteDefine.c:762 +#, c-format +msgid "rule \"%s\" for relation \"%s\" does not exist" +msgstr "no existe la regla «%s» para la relación «%s»" -#: utils/misc/guc.c:552 -msgid "Preset Options" -msgstr "Opciones Predefinidas" +#: rewrite/rewriteRemove.c:66 +#, c-format +msgid "rule \"%s\" for relation \"%s\" does not exist, skipping" +msgstr "la regla «%s» para la relación «%s» no existe, ignorando" -#: utils/misc/guc.c:554 -msgid "Customized Options" -msgstr "Opciones Personalizadas" +#: rewrite/rewriteManip.c:1012 +msgid "conditional utility statements are not implemented" +msgstr "las sentencias condicionales de utilidad no están implementadas" -#: utils/misc/guc.c:556 -msgid "Developer Options" -msgstr "Opciones de Desarrollador" +#: rewrite/rewriteManip.c:1024 rewrite/rewriteHandler.c:442 +#: parser/parse_utilcmd.c:2144 parser/parse_utilcmd.c:2243 +msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" +msgstr "" +"las sentencias UNION/INTERSECT/EXCEPT condicionales no están implementadas" -#: utils/misc/guc.c:610 -msgid "Enables the planner's use of sequential-scan plans." -msgstr "Permitir el uso de planes de recorrido secuencial." +#: rewrite/rewriteManip.c:1177 +msgid "WHERE CURRENT OF on a view is not implemented" +msgstr "WHERE CURRENT OF no está implementado en una vista" -#: utils/misc/guc.c:618 -msgid "Enables the planner's use of index-scan plans." -msgstr "Permitir el uso de planes de recorrido de índice." +#: rewrite/rewriteSupport.c:156 +#, c-format +msgid "rule \"%s\" does not exist" +msgstr "no existe la regla «%s»" -#: utils/misc/guc.c:626 -msgid "Enables the planner's use of bitmap-scan plans." -msgstr "Permitir el uso de planes de recorrido de índice por mapas de bits." +#: rewrite/rewriteSupport.c:165 +#, c-format +msgid "there are multiple rules named \"%s\"" +msgstr "hay múltiples reglas llamadas «%s»" -#: utils/misc/guc.c:634 -msgid "Enables the planner's use of TID scan plans." -msgstr "Permitir el uso de planes de recorrido por TID." +#: rewrite/rewriteSupport.c:166 +msgid "Specify a relation name as well as a rule name." +msgstr "Especifique un nombre de relación además del nombre de regla." -#: utils/misc/guc.c:642 -msgid "Enables the planner's use of explicit sort steps." -msgstr "Permitir el uso de pasos explícitos de ordenamiento." +#: rewrite/rewriteHandler.c:485 +#, 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" -#: utils/misc/guc.c:650 -msgid "Enables the planner's use of hashed aggregation plans." -msgstr "Permitir el uso de planes de agregación a través de hash." +#: rewrite/rewriteHandler.c:543 +msgid "cannot have RETURNING lists in multiple rules" +msgstr "no se puede usar RETURNING en múltiples reglas" -#: utils/misc/guc.c:658 -msgid "Enables the planner's use of materialization." -msgstr "Permitir el uso de materialización de planes." +#: rewrite/rewriteHandler.c:874 rewrite/rewriteHandler.c:892 +#, c-format +msgid "multiple assignments to same column \"%s\"" +msgstr "hay múltiples asignaciones a la misma columna «%s»" -#: utils/misc/guc.c:666 -msgid "Enables the planner's use of nested-loop join plans." -msgstr "Permitir el uso de planes «nested-loop join»." +#: rewrite/rewriteHandler.c:1030 catalog/heap.c:2441 +#, 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" -#: utils/misc/guc.c:674 -msgid "Enables the planner's use of merge join plans." -msgstr "Permitir el uso de planes «merge join»." +#: rewrite/rewriteHandler.c:1627 rewrite/rewriteHandler.c:2022 +#, 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»" -#: utils/misc/guc.c:682 -msgid "Enables the planner's use of hash join plans." -msgstr "Permitir el uso de planes «hash join»." +#: rewrite/rewriteHandler.c:1883 +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" -#: utils/misc/guc.c:690 -msgid "Enables genetic query optimization." -msgstr "Permitir el uso del optimizador genético de consultas." +#: rewrite/rewriteHandler.c:1897 +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" -#: utils/misc/guc.c:691 -msgid "This algorithm attempts to do planning without exhaustive searching." +#: rewrite/rewriteHandler.c:1901 +msgid "DO ALSO rules are not supported for data-modifying statements in WITH" msgstr "" -"Este algoritmo intenta planear las consultas sin hacer búsqueda exhaustiva." +"las reglas DO ALSO no están soportadas para sentencias que modifiquen datos " +"en WITH" -#: utils/misc/guc.c:700 -msgid "Shows whether the current user is a superuser." -msgstr "Indica si el usuario actual es superusuario." +#: rewrite/rewriteHandler.c:1906 +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" -#: utils/misc/guc.c:709 -msgid "Enables advertising the server via Bonjour." -msgstr "Permitir la publicación del servidor vía Bonjour." +#: rewrite/rewriteHandler.c:2060 +#, c-format +msgid "cannot perform INSERT RETURNING on relation \"%s\"" +msgstr "no se puede hacer INSERT RETURNING a la relación «%s»" -#: utils/misc/guc.c:717 -msgid "Enables SSL connections." -msgstr "Permitir conexiones SSL." +#: rewrite/rewriteHandler.c:2062 +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." -#: utils/misc/guc.c:725 -msgid "Forces synchronization of updates to disk." -msgstr "Forzar la sincronización de escrituras a disco." +#: rewrite/rewriteHandler.c:2067 +#, c-format +msgid "cannot perform UPDATE RETURNING on relation \"%s\"" +msgstr "no se puede hacer UPDATE RETURNING a la relación «%s»" -#: utils/misc/guc.c:726 +#: rewrite/rewriteHandler.c:2069 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." +"You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." 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." +"Necesita un regla incondicional ON UPDATE DO INSTEAD con una cláusula " +"RETURNING." -#: utils/misc/guc.c:736 -msgid "Sets immediate fsync at commit." -msgstr "Activar fsync inmediato al comprometer transacciones." +#: rewrite/rewriteHandler.c:2074 +#, c-format +msgid "cannot perform DELETE RETURNING on relation \"%s\"" +msgstr "no se puede hacer DELETE RETURNING a la relación «%s»" -#: utils/misc/guc.c:744 -msgid "Continues processing past damaged page headers." -msgstr "Continuar procesando más allá de encabezados de página dañados." +#: rewrite/rewriteHandler.c:2076 +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." -#: utils/misc/guc.c:745 +#: rewrite/rewriteHandler.c:2140 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." +"WITH cannot be used in a query that is rewritten by rules into multiple " +"queries" 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." +"WITH no puede ser usado en una consulta que está siendo convertida en " +"múltiples consultas a través de reglas" -#: utils/misc/guc.c:757 -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." +#: rewrite/rewriteDefine.c:109 rewrite/rewriteDefine.c:769 +#, c-format +msgid "rule \"%s\" for relation \"%s\" already exists" +msgstr "ya existe una regla llamada «%s» para la relación «%s»" -#: utils/misc/guc.c:758 -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." +#: rewrite/rewriteDefine.c:287 +msgid "rule actions on OLD are not implemented" +msgstr "las acciones de regla en OLD no están implementadas" -#: utils/misc/guc.c:769 -msgid "Runs the server silently." -msgstr "Ejecuta el servidor silenciosamente." +#: rewrite/rewriteDefine.c:288 +msgid "Use views or triggers instead." +msgstr "Use vistas o triggers en su lugar." -#: utils/misc/guc.c:770 -msgid "" -"If this parameter is set, the server will automatically run in the " -"background and any controlling terminals are dissociated." -msgstr "" -"Si esta opción está activada, el servidor se ejecutará automáticamente en " -"segundo plano y los terminales de control serán disociados." +#: rewrite/rewriteDefine.c:292 +msgid "rule actions on NEW are not implemented" +msgstr "las acciones de regla en NEW no están implementadas" -#: utils/misc/guc.c:778 -msgid "Logs each checkpoint." -msgstr "Registrar cada punto de control." +#: rewrite/rewriteDefine.c:293 +msgid "Use triggers instead." +msgstr "Use triggers en su lugar." -#: utils/misc/guc.c:786 -msgid "Logs each successful connection." -msgstr "Registrar cada conexión exitosa." +#: rewrite/rewriteDefine.c:306 +msgid "INSTEAD NOTHING rules on SELECT are not implemented" +msgstr "las reglas INSTEAD NOTHING en SELECT no están implementadas" -#: utils/misc/guc.c:794 -msgid "Logs end of a session, including duration." -msgstr "Registrar el fin de una sesión, incluyendo su duración." +#: rewrite/rewriteDefine.c:307 +msgid "Use views instead." +msgstr "Use vistas en su lugar." -#: utils/misc/guc.c:802 -msgid "Turns on various assertion checks." -msgstr "Activar varios chequeos de integridad (assertion checks)." +#: rewrite/rewriteDefine.c:315 +msgid "multiple actions for rules on SELECT are not implemented" +msgstr "las reglas de múltiples acciones en SELECT no están implementadas" -#: utils/misc/guc.c:803 -msgid "This is a debugging aid." -msgstr "Esto es una ayuda para la depuración." +#: rewrite/rewriteDefine.c:327 +msgid "rules on SELECT must have action INSTEAD SELECT" +msgstr "las reglas en SELECT deben tener una acción INSTEAD SELECT" -#: utils/misc/guc.c:817 utils/misc/guc.c:899 utils/misc/guc.c:958 -#: utils/misc/guc.c:967 utils/misc/guc.c:976 utils/misc/guc.c:985 -#: utils/misc/guc.c:1587 utils/misc/guc.c:1596 -msgid "No description available." -msgstr "No hay descripción disponible." +#: rewrite/rewriteDefine.c:335 +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" -#: utils/misc/guc.c:826 -msgid "Logs the duration of each completed SQL statement." -msgstr "Registrar la duración de cada sentencia SQL ejecutada." +#: rewrite/rewriteDefine.c:343 +msgid "event qualifications are not implemented for rules on SELECT" +msgstr "" +"las calificaciones de eventos no están implementadas para las reglas en " +"SELECT" -#: utils/misc/guc.c:834 -msgid "Logs each query's parse tree." -msgstr "Registrar cada arbol analizado de consulta " +#: rewrite/rewriteDefine.c:368 +#, c-format +msgid "\"%s\" is already a view" +msgstr "«%s» ya es una vista" -#: utils/misc/guc.c:842 -msgid "Logs each query's rewritten parse tree." -msgstr "Registrar cada reescritura del arból analizado de consulta" +#: rewrite/rewriteDefine.c:392 +#, c-format +msgid "view rule for \"%s\" must be named \"%s\"" +msgstr "la regla de vista para «%s» debe llamarse «%s»" -#: utils/misc/guc.c:850 -msgid "Logs each query's execution plan." -msgstr "Registrar el plan de ejecución de cada consulta." +#: rewrite/rewriteDefine.c:417 +#, 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" -#: utils/misc/guc.c:858 -msgid "Indents parse and plan tree displays." -msgstr "Indentar los árboles de parse y plan." +#: rewrite/rewriteDefine.c:424 +#, 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" -#: utils/misc/guc.c:866 -msgid "Writes parser performance statistics to the server log." -msgstr "Escribir estadísticas de parser al registro del servidor." +#: rewrite/rewriteDefine.c:426 +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." -#: utils/misc/guc.c:874 -msgid "Writes planner performance statistics to the server log." -msgstr "Escribir estadísticas de planner al registro del servidor." +#: rewrite/rewriteDefine.c:431 +#, 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" -#: utils/misc/guc.c:882 -msgid "Writes executor performance statistics to the server log." -msgstr "Escribir estadísticas del executor al registro del servidor." +#: rewrite/rewriteDefine.c:437 +#, 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" -#: utils/misc/guc.c:890 -msgid "Writes cumulative performance statistics to the server log." -msgstr "Escribir estadísticas acumulativas al registro del servidor." +#: rewrite/rewriteDefine.c:464 +msgid "cannot have multiple RETURNING lists in a rule" +msgstr "no se pueden tener múltiples listas RETURNING en una regla" -#: utils/misc/guc.c:910 -msgid "Collects information about executing commands." -msgstr "Recolectar estadísticas sobre órdenes en ejecución." +#: rewrite/rewriteDefine.c:469 +msgid "RETURNING lists are not supported in conditional rules" +msgstr "listas de RETURNING no están soportadas en reglas condicionales" -#: utils/misc/guc.c:911 -msgid "" -"Enables the collection of information on the currently executing command of " -"each session, along with the time at which that command began execution." +#: rewrite/rewriteDefine.c:473 +msgid "RETURNING lists are not supported in non-INSTEAD rules" 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." +"listas de RETURNING no están soportadas en reglas que no estén marcadas " +"INSTEAD" -#: utils/misc/guc.c:920 -msgid "Collects statistics on database activity." -msgstr "Recolectar estadísticas de actividad de la base de datos." +#: rewrite/rewriteDefine.c:552 +msgid "SELECT rule's target list has too many entries" +msgstr "la lista de destinos en la regla de SELECT tiene demasiadas entradas" -#: utils/misc/guc.c:929 -msgid "Updates the process title to show the active SQL command." -msgstr "Actualiza el título del proceso para mostrar la orden SQL activo." +#: rewrite/rewriteDefine.c:553 +msgid "RETURNING list has too many entries" +msgstr "la lista de RETURNING tiene demasiadas entradas" -#: utils/misc/guc.c:930 -msgid "" -"Enables updating of the process title every time a new SQL command is " -"received by the server." +#: rewrite/rewriteDefine.c:569 +msgid "cannot convert relation containing dropped columns to view" msgstr "" -"Habilita que se actualice el título del proceso cada vez que una orden SQL " -"es recibido por el servidor." +"no se puede convertir en vista una relación que contiene columnas eliminadas" -#: utils/misc/guc.c:938 -msgid "Starts the autovacuum subprocess." -msgstr "Iniciar el subproceso de autovacuum." +#: rewrite/rewriteDefine.c:574 +#, c-format +msgid "SELECT rule's target entry %d has different column name from \"%s\"" +msgstr "" +"la entrada de destino %d de la regla de SELECT tiene un nombre de columna " +"diferente de «%s»" -#: utils/misc/guc.c:947 -msgid "Generates debugging output for LISTEN and NOTIFY." -msgstr "Generar salida de depuración para LISTEN y NOTIFY." +#: rewrite/rewriteDefine.c:580 +#, 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»" -#: utils/misc/guc.c:996 -msgid "Logs long lock waits." -msgstr "Registrar esperas largas de bloqueos." +#: rewrite/rewriteDefine.c:582 +#, 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»" -#: utils/misc/guc.c:1005 -msgid "Logs the host name in the connection logs." -msgstr "Registrar el nombre del host en la conexión." +#: rewrite/rewriteDefine.c:597 +#, 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:599 +#, 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:607 +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:608 +msgid "RETURNING list has too few entries" +msgstr "la lista de RETURNING tiene muy pocas entradas" + +#: catalog/pg_aggregate.c:100 +msgid "cannot determine transition data type" +msgstr "no se pudo determinar el tipo de dato de transición" -#: utils/misc/guc.c:1006 +#: catalog/pg_aggregate.c:101 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." +"An aggregate using a polymorphic transition type must have at least one " +"polymorphic argument." 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." +"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." -#: utils/misc/guc.c:1016 -msgid "Causes subtables to be included by default in various commands." -msgstr "Incluir, por omisión, subtablas en varias órdenes." +#: catalog/pg_aggregate.c:124 +#, 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" -#: utils/misc/guc.c:1024 -msgid "Encrypt passwords." -msgstr "Cifrar contraseñas." +#: 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 "" +"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:175 catalog/pg_proc.c:205 +msgid "cannot determine result data type" +msgstr "no se puede determinar el tipo de dato del resultado" -#: utils/misc/guc.c:1025 +#: catalog/pg_aggregate.c:176 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." +"An aggregate returning a polymorphic type must have at least one polymorphic " +"argument." 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." +"Una función de agregación que retorne un tipo de datos polimórfico debe " +"tener al menos un argumento de tipo polimórfico." -#: utils/misc/guc.c:1034 -msgid "Treats \"expr=NULL\" as \"expr IS NULL\"." -msgstr "Tratar expr=NULL como expr IS NULL." +#: catalog/pg_aggregate.c:188 catalog/pg_proc.c:211 +msgid "unsafe use of pseudo-type \"internal\"" +msgstr "uso inseguro de pseudotipo «internal»" -#: utils/misc/guc.c:1035 +#: catalog/pg_aggregate.c:189 catalog/pg_proc.c:212 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)." +"A function returning \"internal\" must have at least one \"internal\" " +"argument." 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)." +"Una función que retorne «internal» debe tener al menos un argumento de tipo " +"«internal»." + +#: catalog/pg_aggregate.c:197 +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" + +#: catalog/pg_aggregate.c:337 +#, c-format +msgid "function %s returns a set" +msgstr "la función %s retorna un conjunto" + +#: catalog/pg_aggregate.c:362 +#, 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" + +#: catalog/pg_collation.c:75 +#, c-format +msgid "collation \"%s\" for encoding \"%s\" already exists" +msgstr "la codificación «%2$s» ya tiene un ordenamiento llamado «%1$s»" + +#: catalog/pg_collation.c:89 +#, c-format +msgid "collation \"%s\" already exists" +msgstr "el ordenamiento «%s» ya existe" + +#: catalog/index.c:206 parser/parse_utilcmd.c:1352 parser/parse_utilcmd.c:1438 +#, 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:224 +msgid "primary keys cannot be expressions" +msgstr "las llaves primarias no pueden ser expresiones" + +#: catalog/index.c:734 catalog/index.c:1132 +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:744 +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:762 +msgid "shared indexes cannot be created after initdb" +msgstr "no se pueden crear índices compartidos después de initdb" + +#: catalog/index.c:1745 +#, c-format +msgid "building index \"%s\" on table \"%s\"" +msgstr "construyendo índice «%s» en la tabla «%s»" + +#: catalog/index.c:2886 +msgid "cannot reindex temporary tables of other sessions" +msgstr "no se puede hacer reindex de tablas temporales de otras sesiones" + +#: catalog/pg_conversion.c:67 +#, c-format +msgid "conversion \"%s\" already exists" +msgstr "ya existe la conversión «%s»" + +#: catalog/pg_conversion.c:80 +#, c-format +msgid "default conversion for %s to %s already exists" +msgstr "ya existe una conversión por omisión desde %s a %s" + +#: catalog/toasting.c:144 +msgid "shared tables cannot be toasted after initdb" +msgstr "" +"no se puede crear tablas TOAST a relaciones compartidas después de initdb" + +#: 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] "las funciones no pueden tener más de %d argumento" +msgstr[1] "las funciones no pueden tener más de %d argumentos" + +#: catalog/pg_proc.c:206 +msgid "" +"A function returning a polymorphic type must have at least one polymorphic " +"argument." +msgstr "" +"Una función que retorne un tipo polimórfico debe tener al menos un argumento " +"de tipo polimórfico." + +#: catalog/pg_proc.c:224 +#, c-format +msgid "\"%s\" is already an attribute of type %s" +msgstr "«%s» ya es un atributo de tipo %s" + +#: catalog/pg_proc.c:363 +#, c-format +msgid "function \"%s\" already exists with same argument types" +msgstr "ya existe una función «%s» con los mismos argumentos" + +#: catalog/pg_proc.c:377 catalog/pg_proc.c:399 +msgid "cannot change return type of existing function" +msgstr "no se puede cambiar el tipo de retorno de una función existente" + +#: 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 "Use DROP FUNCTION primero." + +#: catalog/pg_proc.c:400 +msgid "Row type defined by OUT parameters is different." +msgstr "Tipo de registro definido por parámetros OUT es diferente." + +#: catalog/pg_proc.c:441 +#, c-format +msgid "cannot change name of input parameter \"%s\"" +msgstr "no se puede cambiar el nombre del parámetro de entrada «%s»" + +#: catalog/pg_proc.c:465 +msgid "cannot remove parameter defaults from existing function" +msgstr "no se puede eliminar el valor por omisión de funciones existentes" + +#: catalog/pg_proc.c:491 +msgid "cannot change data type of existing parameter default value" +msgstr "" +"no se puede cambiar el tipo de dato del valor por omisión de un parámetro" + +#: catalog/pg_proc.c:503 +#, c-format +msgid "function \"%s\" is an aggregate function" +msgstr "la función «%s» es una función de agregación" + +#: catalog/pg_proc.c:508 +#, c-format +msgid "function \"%s\" is not an aggregate function" +msgstr "la función «%s» no es una función de agregación" + +#: catalog/pg_proc.c:516 +#, c-format +msgid "function \"%s\" is a window function" +msgstr "la función %s es de tipo window" + +#: catalog/pg_proc.c:521 +#, c-format +msgid "function \"%s\" is not a window function" +msgstr "la función «%s» no es de tipo window" + +#: catalog/pg_proc.c:698 +#, c-format +msgid "there is no built-in function named \"%s\"" +msgstr "no hay ninguna función interna llamada «%s»" + +#: catalog/pg_proc.c:790 +#, c-format +msgid "SQL functions cannot return type %s" +msgstr "las funciones SQL no pueden retornar el tipo %s" + +#: catalog/pg_proc.c:805 +#, c-format +msgid "SQL functions cannot have arguments of type %s" +msgstr "las funciones SQL no pueden tener argumentos de tipo %s" + +#: catalog/catalog.c:76 +msgid "invalid fork name" +msgstr "nombre de «fork» no válido" + +#: catalog/catalog.c:77 +msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"." +msgstr "Los nombres válidos son «man», «fsm» y «vm»." + +#: catalog/pg_shdepend.c:566 catalog/dependency.c:757 +#, c-format +msgid "cannot drop %s because it is required by the database system" +msgstr "no se puede eliminar %s porque es requerido por el sistema" + +#: catalog/pg_shdepend.c:677 catalog/dependency.c:923 +#, 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" +"y %d otro objeto (vea el registro del servidor para obtener la lista)" +msgstr[1] "" +"\n" +"y otros %d objetos (vea el registro del servidor para obtener la lista)" + +#: catalog/pg_shdepend.c:684 +#, 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" +"y objetos en %d base de datos (vea el registro del servidor para obtener la " +"lista)" +msgstr[1] "" +"\n" +"y objetos en otras %d bases de datos (vea el registro del servidor para " +"obtener la lista)" + +#: catalog/pg_shdepend.c:996 +#, c-format +msgid "role %u was concurrently dropped" +msgstr "el rol %u fue eliminado por una transacción concurrente" + +#: catalog/pg_shdepend.c:1015 +#, c-format +msgid "tablespace %u was concurrently dropped" +msgstr "el tablespace %u fue eliminado por una transacción concurrente" + +#: catalog/pg_shdepend.c:1030 +#, 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:1074 +#, c-format +msgid "owner of %s" +msgstr "dueño de %s" + +#: catalog/pg_shdepend.c:1076 +#, c-format +msgid "privileges for %s" +msgstr "privilegios para %s" + +#. translator: %s will always be "database %s" +#: catalog/pg_shdepend.c:1084 +#, 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:1195 +#, 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:1298 +#, 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_constraint.c:783 +#, 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:795 +#, c-format +msgid "constraint \"%s\" for table \"%s\" does not exist" +msgstr "no existe la restricción «%s» para la tabla «%s»" + +#: catalog/pg_type.c:241 +#, c-format +msgid "invalid type internal size %d" +msgstr "el tamaño interno de tipo %d no es válido" + +#: 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 "" +"el alineamiento «%c» no es válido para un tipo pasado por valor de tamaño %d" + +#: catalog/pg_type.c:289 +#, 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:298 catalog/pg_type.c:304 +#, 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:312 +msgid "fixed-size types must have storage PLAIN" +msgstr "los tipos de tamaño fijo deben tener almacenamiento PLAIN" + +#: catalog/pg_type.c:764 +#, 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/aclchk.c:200 +msgid "grant options can only be granted to roles" +msgstr "la opción de grant sólo puede ser otorgada a roles" + +#: catalog/aclchk.c:316 +#, c-format +msgid "no privileges were granted for column \"%s\" of relation \"%s\"" +msgstr "no se otorgaron privilegios para la columna «%s» de la relación «%s»" + +#: catalog/aclchk.c:321 +#, c-format +msgid "no privileges were granted for \"%s\"" +msgstr "no se otorgaron privilegios para «%s»" + +#: catalog/aclchk.c:329 +#, c-format +msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" +msgstr "" +"no todos los privilegios fueron otorgados para la columna «%s» de la " +"relación «%s»" + +#: catalog/aclchk.c:334 +#, c-format +msgid "not all privileges were granted for \"%s\"" +msgstr "no todos los privilegios fueron otorgados para «%s»" + +#: catalog/aclchk.c:345 +#, c-format +msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" +msgstr "" +"ningún privilegio pudo ser revocado para la columna «%s» de la relación «%s»" + +#: catalog/aclchk.c:350 +#, c-format +msgid "no privileges could be revoked for \"%s\"" +msgstr "ningún privilegio pudo ser revocado para «%s»" + +#: catalog/aclchk.c:358 +#, c-format +msgid "" +"not all privileges could be revoked for column \"%s\" of relation \"%s\"" +msgstr "" +"no todos los privilegios pudieron ser revocados para la columna «%s» de la " +"relación «%s»" + +#: catalog/aclchk.c:363 +#, c-format +msgid "not all privileges could be revoked for \"%s\"" +msgstr "no todos los privilegios pudieron ser revocados para «%s»" + +#: catalog/aclchk.c:442 catalog/aclchk.c:891 +#, c-format +msgid "invalid privilege type %s for relation" +msgstr "el tipo de privilegio %s no es válido para una relación" + +#: catalog/aclchk.c:446 catalog/aclchk.c:895 +#, c-format +msgid "invalid privilege type %s for sequence" +msgstr "el tipo de privilegio %s no es válido para una secuencia" + +#: catalog/aclchk.c:450 +#, c-format +msgid "invalid privilege type %s for database" +msgstr "el tipo de privilegio %s no es válido para una base de datos" + +#: catalog/aclchk.c:454 catalog/aclchk.c:899 +#, c-format +msgid "invalid privilege type %s for function" +msgstr "el tipo de privilegio %s no es válido para una función" + +#: catalog/aclchk.c:458 +#, c-format +msgid "invalid privilege type %s for language" +msgstr "el tipo de privilegio %s no es válido para un lenguaje" + +#: catalog/aclchk.c:462 +#, c-format +msgid "invalid privilege type %s for large object" +msgstr "el tipo de privilegio %s no es válido para un objeto grande" + +#: catalog/aclchk.c:466 +#, c-format +msgid "invalid privilege type %s for schema" +msgstr "el tipo de privilegio %s no es válido para un esquema" + +#: catalog/aclchk.c:470 +#, c-format +msgid "invalid privilege type %s for tablespace" +msgstr "el tipo de privilegio %s no es válido para tablespaces" + +#: catalog/aclchk.c:474 +#, c-format +msgid "invalid privilege type %s for foreign-data wrapper" +msgstr "" +"el tipo de privilegio %s no es válido para un conector de datos externos" + +#: catalog/aclchk.c:478 +#, c-format +msgid "invalid privilege type %s for foreign server" +msgstr "el tipo de privilegio %s no es válido para un servidor foráneo" + +#: catalog/aclchk.c:517 +msgid "column privileges are only valid for relations" +msgstr "los privilegios de columna son sólo válidos para relaciones" + +#: catalog/aclchk.c:932 +msgid "default privileges cannot be set for columns" +msgstr "los privilegios por omisión no pueden definirse para columnas" + +#: catalog/aclchk.c:1730 +#, c-format +msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" +msgstr "la secuencia «%s» sólo soporta los privilegios USAGE, SELECT, y UPDATE" + +#: catalog/aclchk.c:1747 +msgid "invalid privilege type USAGE for table" +msgstr "el tipo de privilegio USAGE no es válido para tablas" + +#: catalog/aclchk.c:1912 +#, c-format +msgid "invalid privilege type %s for column" +msgstr "el tipo de privilegio %s no es válido para una columna" + +#: catalog/aclchk.c:1925 +#, c-format +msgid "sequence \"%s\" only supports SELECT column privileges" +msgstr "la secuencia «%s» sólo soporta el privilegio SELECT" + +#: catalog/aclchk.c:2509 +#, c-format +msgid "language \"%s\" is not trusted" +msgstr "el lenguaje «%s» no es confiable (trusted)" + +#: catalog/aclchk.c:2511 +msgid "Only superusers can use untrusted languages." +msgstr "Sólo los superusuarios pueden usar lenguajes no confiables." + +#: catalog/aclchk.c:3018 +#, c-format +msgid "unrecognized privilege type \"%s\"" +msgstr "tipo de privilegio no reconocido: «%s»" + +#: catalog/aclchk.c:3067 +#, c-format +msgid "permission denied for column %s" +msgstr "permiso denegado a la columna %s" + +#: catalog/aclchk.c:3069 +#, c-format +msgid "permission denied for relation %s" +msgstr "permiso denegado a la relación %s" + +#: catalog/aclchk.c:3073 +#, c-format +msgid "permission denied for database %s" +msgstr "permiso denegado a la base de datos %s" + +#: catalog/aclchk.c:3075 +#, c-format +msgid "permission denied for function %s" +msgstr "permiso denegado a la función %s" + +#: catalog/aclchk.c:3077 +#, c-format +msgid "permission denied for operator %s" +msgstr "permiso denegado al operador %s" + +#: catalog/aclchk.c:3079 +#, c-format +msgid "permission denied for type %s" +msgstr "permiso denegado al tipo %s" + +#: catalog/aclchk.c:3081 +#, c-format +msgid "permission denied for language %s" +msgstr "permiso denegado al lenguaje %s" + +#: catalog/aclchk.c:3083 +#, c-format +msgid "permission denied for large object %s" +msgstr "permiso denegado al objeto grande %s" + +#: catalog/aclchk.c:3085 +#, c-format +msgid "permission denied for schema %s" +msgstr "permiso denegado al esquema %s" + +#: catalog/aclchk.c:3087 +#, c-format +msgid "permission denied for operator class %s" +msgstr "permiso denegado a la clase de operadores %s" + +#: catalog/aclchk.c:3089 +#, c-format +msgid "permission denied for operator family %s" +msgstr "permiso denegado a la familia de operadores %s" + +#: catalog/aclchk.c:3091 +#, c-format +msgid "permission denied for collation %s" +msgstr "permiso denegado al ordenamiento (collation) %s" + +#: catalog/aclchk.c:3093 +#, c-format +msgid "permission denied for conversion %s" +msgstr "permiso denegado a la conversión %s" + +#: catalog/aclchk.c:3095 +#, c-format +msgid "permission denied for tablespace %s" +msgstr "permiso denegado al tablespace %s" + +#: catalog/aclchk.c:3097 +#, c-format +msgid "permission denied for text search dictionary %s" +msgstr "permiso denegado a la configuración de búsqueda en texto %s" + +#: catalog/aclchk.c:3099 +#, c-format +msgid "permission denied for text search configuration %s" +msgstr "permiso denegado a la configuración de búsqueda en texto %s" + +#: catalog/aclchk.c:3101 +#, c-format +msgid "permission denied for foreign-data wrapper %s" +msgstr "permiso denegado al conector de datos externos %s" + +#: catalog/aclchk.c:3103 +#, c-format +msgid "permission denied for foreign server %s" +msgstr "permiso denegado al servidor foráneo %s" + +#: catalog/aclchk.c:3105 +#, c-format +msgid "permission denied for extension %s" +msgstr "permiso denegado a la extensión %s" + +#: catalog/aclchk.c:3111 catalog/aclchk.c:3113 +#, c-format +msgid "must be owner of relation %s" +msgstr "debe ser dueño de la relación %s" + +#: catalog/aclchk.c:3115 +#, c-format +msgid "must be owner of sequence %s" +msgstr "debe ser dueño de la secuencia %s" + +#: catalog/aclchk.c:3117 +#, c-format +msgid "must be owner of database %s" +msgstr "debe ser dueño de la base de datos %s" + +#: catalog/aclchk.c:3119 +#, c-format +msgid "must be owner of function %s" +msgstr "debe ser dueño de la función %s" + +#: catalog/aclchk.c:3121 +#, c-format +msgid "must be owner of operator %s" +msgstr "debe ser dueño del operador %s" + +#: catalog/aclchk.c:3123 +#, c-format +msgid "must be owner of type %s" +msgstr "debe ser dueño del tipo %s" + +#: catalog/aclchk.c:3125 +#, c-format +msgid "must be owner of language %s" +msgstr "debe ser dueño del lenguaje %s" + +#: catalog/aclchk.c:3127 +#, c-format +msgid "must be owner of large object %s" +msgstr "debe ser dueño del objeto grande %s" + +#: catalog/aclchk.c:3129 +#, c-format +msgid "must be owner of schema %s" +msgstr "debe ser dueño del esquema %s" + +#: catalog/aclchk.c:3131 +#, c-format +msgid "must be owner of operator class %s" +msgstr "debe ser dueño de la clase de operadores %s" + +#: catalog/aclchk.c:3133 +#, c-format +msgid "must be owner of operator family %s" +msgstr "debe ser dueño de la familia de operadores %s" + +#: catalog/aclchk.c:3135 +#, c-format +msgid "must be owner of collation %s" +msgstr "debe ser dueño del ordenamiento (collation) %s" + +#: catalog/aclchk.c:3137 +#, c-format +msgid "must be owner of conversion %s" +msgstr "debe ser dueño de la conversión %s" + +#: catalog/aclchk.c:3139 +#, c-format +msgid "must be owner of tablespace %s" +msgstr "debe ser dueño del tablespace %s" + +#: catalog/aclchk.c:3141 +#, c-format +msgid "must be owner of text search dictionary %s" +msgstr "debe ser dueño del diccionario de búsqueda en texto %s" + +#: catalog/aclchk.c:3143 +#, c-format +msgid "must be owner of text search configuration %s" +msgstr "debe ser dueño de la configuración de búsqueda en texto %s" + +#: catalog/aclchk.c:3145 +#, c-format +msgid "must be owner of foreign-data wrapper %s" +msgstr "debe ser dueño del conector de datos externos %s" + +#: catalog/aclchk.c:3147 +#, c-format +msgid "must be owner of foreign server %s" +msgstr "debe ser dueño del servidor foráneo %s" + +#: catalog/aclchk.c:3149 +#, c-format +msgid "must be owner of extension %s" +msgstr "debe ser dueño de la extensión %s" + +#: catalog/aclchk.c:3191 +#, c-format +msgid "permission denied for column \"%s\" of relation \"%s\"" +msgstr "permiso denegado a la columna «%s» de la relación «%s»" + +#: catalog/aclchk.c:3218 +#, c-format +msgid "role with OID %u does not exist" +msgstr "no existe el rol con OID %u" + +#: catalog/aclchk.c:3311 catalog/aclchk.c:3319 +#, c-format +msgid "attribute %d of relation with OID %u does not exist" +msgstr "no existe el atributo %d de la relación con OID %u" + +#: catalog/aclchk.c:3392 catalog/aclchk.c:4218 +#, c-format +msgid "relation with OID %u does not exist" +msgstr "no existe la relación con OID %u" + +#: catalog/aclchk.c:3600 catalog/aclchk.c:4322 +#, c-format +msgid "language with OID %u does not exist" +msgstr "no existe el lenguaje con OID %u" + +#: catalog/aclchk.c:3761 catalog/aclchk.c:4394 +#, c-format +msgid "schema with OID %u does not exist" +msgstr "no existe el esquema con OID %u" + +#: catalog/aclchk.c:3815 catalog/aclchk.c:4421 +#, c-format +msgid "tablespace with OID %u does not exist" +msgstr "no existe el tablespace con OID %u" + +#: catalog/aclchk.c:4244 +#, c-format +msgid "type with OID %u does not exist" +msgstr "no existe el tipo con OID %u" + +#: catalog/aclchk.c:4270 +#, c-format +msgid "operator with OID %u does not exist" +msgstr "no existe el operador con OID %u" + +#: catalog/aclchk.c:4447 +#, c-format +msgid "operator class with OID %u does not exist" +msgstr "no existe la clase de operadores con OID %u" + +#: catalog/aclchk.c:4474 +#, c-format +msgid "operator family with OID %u does not exist" +msgstr "no existe la familia de operadores con OID %u" + +#: catalog/aclchk.c:4501 +#, 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:4528 +#, 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:4635 +#, c-format +msgid "collation with OID %u does not exist" +msgstr "no existe el ordenamiento (collation) con OID %u" + +#: catalog/aclchk.c:4661 +#, c-format +msgid "conversion with OID %u does not exist" +msgstr "no existe la conversión con OID %u" + +#: catalog/aclchk.c:4702 +#, c-format +msgid "extension with OID %u does not exist" +msgstr "no existe la extensión con OID %u" + +#: catalog/namespace.c:260 +msgid "temporary tables cannot specify a schema name" +msgstr "las tablas temporales no pueden especificar un nombre de esquema" + +#: catalog/namespace.c:410 catalog/namespace.c:423 +msgid "cannot create relations in temporary schemas of other sessions" +msgstr "no se pueden crear relaciones en esquemas temporales de otras sesiones" + +#: catalog/namespace.c:414 +msgid "cannot create temporary relation in non-temporary schema" +msgstr "no se pueden crear tablas temporales en esquemas no temporales" + +#: catalog/namespace.c:429 +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:2389 parser/parse_expr.c:777 parser/parse_target.c:1086 +#, 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:2395 gram.y:11634 gram.y:12842 parser/parse_expr.c:784 +#: parser/parse_target.c:1093 +#, c-format +msgid "improper qualified name (too many dotted names): %s" +msgstr "el nombre no es válido (demasiados puntos): %s" + +#: catalog/namespace.c:2523 +#, c-format +msgid "%s is already in schema \"%s\"" +msgstr "%s ya está en el esquema «%s»" + +#: catalog/namespace.c:2531 +msgid "cannot move objects into or out of temporary schemas" +msgstr "no se puede mover objetos hacia o desde esquemas temporales" + +#: catalog/namespace.c:2537 +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:2641 +#, 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:3040 +#, 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:3092 +#, c-format +msgid "conversion \"%s\" does not exist" +msgstr "no existe la conversión «%s»" + +#: catalog/namespace.c:3297 +#, 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:3313 +msgid "cannot create temporary tables during recovery" +msgstr "no se pueden crear tablas temporales durante la recuperación" + +#: catalog/objectaddress.c:286 +msgid "database name cannot be qualified" +msgstr "un nombre de base de datos no puede ser calificado" + +#: catalog/objectaddress.c:292 +msgid "tablespace name cannot be qualified" +msgstr "un nombre de tablespace no puede ser calificado" + +#: catalog/objectaddress.c:295 +msgid "role name cannot be qualified" +msgstr "un nombre de rol no puede ser calificado" + +#: catalog/objectaddress.c:301 +msgid "language name cannot be qualified" +msgstr "un nombre de lenguaje no puede ser calificado" + +#: catalog/objectaddress.c:304 +msgid "foreign-data wrapper name cannot be qualified" +msgstr "un nombre de conector de datos externos no puede ser calificado" + +#: catalog/objectaddress.c:307 +msgid "server name cannot be qualified" +msgstr "un nombre de servidor no puede ser calificado" + +#: catalog/objectaddress.c:532 +msgid "column name must be qualified" +msgstr "el nombre de columna debe ser calificado" + +#: catalog/objectaddress.c:874 catalog/objectaddress.c:890 +msgid "must be superuser" +msgstr "debe ser superusuario" + +#: catalog/objectaddress.c:881 +msgid "must have CREATEROLE privilege" +msgstr "debe tener privilegio CREATEROLE" + +#: catalog/dependency.c:593 +#, c-format +msgid "cannot drop %s because %s requires it" +msgstr "no se puede eliminar %s porque %s lo requiere" + +#: catalog/dependency.c:596 +#, c-format +msgid "You can drop %s instead." +msgstr "Puede eliminar %s en su lugar." + +#: catalog/dependency.c:873 +#, c-format +msgid "drop auto-cascades to %s" +msgstr "eliminando automáticamente %s" + +#: catalog/dependency.c:885 catalog/dependency.c:894 +#, c-format +msgid "%s depends on %s" +msgstr "%s depende de %s" + +#: catalog/dependency.c:906 catalog/dependency.c:915 +#, c-format +msgid "drop cascades to %s" +msgstr "eliminando además %s" + +#: catalog/dependency.c:935 +#, c-format +msgid "cannot drop %s because other objects depend on it" +msgstr "no se puede eliminar %s porque otros objetos dependen de él" + +#: catalog/dependency.c:939 catalog/dependency.c:946 +msgid "Use DROP ... CASCADE to drop the dependent objects too." +msgstr "Use DROP ... CASCADE para eliminar además los objetos dependientes." + +#: catalog/dependency.c:943 +msgid "cannot drop desired object(s) because other objects depend on them" +msgstr "" +"no se puede eliminar el o los objetos deseados porque otros objetos dependen " +"de ellos" + +#. translator: %d always has a value larger than 1 +#: catalog/dependency.c:952 +#, c-format +msgid "drop cascades to %d other object" +msgid_plural "drop cascades to %d other objects" +msgstr[0] "eliminando además %d objeto más" +msgstr[1] "eliminando además %d objetos más" + +#: catalog/dependency.c:2223 +#, c-format +msgid " column %s" +msgstr " columna %s" + +#: catalog/dependency.c:2229 +#, c-format +msgid "function %s" +msgstr "función %s" + +#: catalog/dependency.c:2234 +#, c-format +msgid "type %s" +msgstr "tipo %s" + +#: catalog/dependency.c:2264 +#, c-format +msgid "cast from %s to %s" +msgstr "conversión de %s a %s" + +#: catalog/dependency.c:2284 +#, c-format +msgid "collation %s" +msgstr "ordenamiento (collation) %s" + +#: catalog/dependency.c:2308 +#, c-format +msgid "constraint %s on %s" +msgstr "restricción «%s» en %s" + +#: catalog/dependency.c:2314 +#, c-format +msgid "constraint %s" +msgstr "restricción %s" + +#: catalog/dependency.c:2331 +#, c-format +msgid "conversion %s" +msgstr "conversión %s" + +#: catalog/dependency.c:2368 +#, c-format +msgid "default for %s" +msgstr "valor por omisión para %s" + +#: catalog/dependency.c:2385 +#, c-format +msgid "language %s" +msgstr "lenguaje %s" + +#: catalog/dependency.c:2391 +#, c-format +msgid "large object %u" +msgstr "objeto grande %u" + +#: catalog/dependency.c:2396 +#, c-format +msgid "operator %s" +msgstr "operador %s" + +#: catalog/dependency.c:2428 +#, c-format +msgid "operator class %s for access method %s" +msgstr "clase de operadores «%s» para el método de acceso «%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:2478 +#, c-format +msgid "operator %d (%s, %s) of %s: %s" +msgstr "operador %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/dependency.c:2528 +#, c-format +msgid "function %d (%s, %s) of %s: %s" +msgstr "función %d (%s, %s) de %s: %s" + +#: catalog/dependency.c:2568 +#, c-format +msgid "rule %s on " +msgstr "regla «%s» en " + +#: catalog/dependency.c:2603 +#, c-format +msgid "trigger %s on " +msgstr "disparador %s en " + +#: catalog/dependency.c:2620 +#, c-format +msgid "schema %s" +msgstr "esquema %s" + +#: catalog/dependency.c:2633 +#, c-format +msgid "text search parser %s" +msgstr "analizador de búsqueda en texto %s" + +#: catalog/dependency.c:2648 +#, c-format +msgid "text search dictionary %s" +msgstr "diccionario de búsqueda en texto %s" + +#: catalog/dependency.c:2663 +#, c-format +msgid "text search template %s" +msgstr "plantilla de búsqueda en texto %s" + +#: catalog/dependency.c:2678 +#, c-format +msgid "text search configuration %s" +msgstr "configuración de búsqueda en texto %s" + +#: catalog/dependency.c:2686 +#, c-format +msgid "role %s" +msgstr "rol %s" + +#: catalog/dependency.c:2699 +#, c-format +msgid "database %s" +msgstr "base de datos %s" + +#: catalog/dependency.c:2711 +#, c-format +msgid "tablespace %s" +msgstr "tablespace %s" + +#: catalog/dependency.c:2720 +#, c-format +msgid "foreign-data wrapper %s" +msgstr "conector de datos externos %s" + +#: catalog/dependency.c:2729 +#, c-format +msgid "server %s" +msgstr "servidor %s" + +#: catalog/dependency.c:2754 +#, c-format +msgid "user mapping for %s" +msgstr "mapeo para el usuario %s" + +#: catalog/dependency.c:2788 +#, 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/dependency.c:2793 +#, 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/dependency.c:2798 +#, 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/dependency.c:2804 +#, c-format +msgid "default privileges belonging to role %s" +msgstr "privilegios por omisión pertenecientes al rol %s" + +#: catalog/dependency.c:2812 +#, c-format +msgid " in schema %s" +msgstr " en esquema %s" + +#: catalog/dependency.c:2829 +#, c-format +msgid "extension %s" +msgstr "extensión %s" + +#: catalog/dependency.c:2887 +#, c-format +msgid "table %s" +msgstr "tabla %s" + +#: catalog/dependency.c:2891 +#, c-format +msgid "index %s" +msgstr "índice %s" + +#: catalog/dependency.c:2895 +#, c-format +msgid "sequence %s" +msgstr "secuencia %s" + +#: catalog/dependency.c:2899 +#, c-format +msgid "uncataloged table %s" +msgstr "tabla sin catalogar %s" + +#: catalog/dependency.c:2903 +#, c-format +msgid "toast table %s" +msgstr "tabla toast %s" + +#: catalog/dependency.c:2907 +#, c-format +msgid "view %s" +msgstr "vista %s" + +#: catalog/dependency.c:2911 +#, c-format +msgid "composite type %s" +msgstr "tipo compuesto %s" + +#: catalog/dependency.c:2915 +#, c-format +msgid "foreign table %s" +msgstr "tabla foránea %s" + +#: catalog/dependency.c:2920 +#, c-format +msgid "relation %s" +msgstr "relación %s" + +#: catalog/dependency.c:2957 +#, c-format +msgid "operator family %s for access method %s" +msgstr "familia de operadores %s para el método de acceso %s" + +#: catalog/pg_operator.c:221 catalog/pg_operator.c:363 +#, c-format +msgid "\"%s\" is not a valid operator name" +msgstr "«%s» no es un nombre válido de operador" + +#: catalog/pg_operator.c:372 +msgid "only binary operators can have commutators" +msgstr "sólo los operadores binarios pueden tener conmutadores" + +#: catalog/pg_operator.c:376 +msgid "only binary operators can have join selectivity" +msgstr "sólo los operadores binarios pueden tener selectividad de join" + +#: catalog/pg_operator.c:380 +msgid "only binary operators can merge join" +msgstr "sólo los operadores binarios pueden ser usados en merge join" + +#: catalog/pg_operator.c:384 +msgid "only binary operators can hash" +msgstr "sólo los operadores binarios pueden ser usados en hash" + +#: catalog/pg_operator.c:395 +msgid "only boolean operators can have negators" +msgstr "sólo los operadores booleanos pueden tener negadores" + +#: catalog/pg_operator.c:399 +msgid "only boolean operators can have restriction selectivity" +msgstr "sólo los operadores booleanos pueden tener selectividad de restricción" + +#: catalog/pg_operator.c:403 +msgid "only boolean operators can have join selectivity" +msgstr "sólo los operadores booleanos pueden tener selectividad de join" + +#: catalog/pg_operator.c:407 +msgid "only boolean operators can merge join" +msgstr "sólo los operadores booleanos pueden ser usados en merge join" + +#: catalog/pg_operator.c:411 +msgid "only boolean operators can hash" +msgstr "sólo los operadores booleanos pueden ser usados en hash" + +#: catalog/pg_operator.c:423 +#, c-format +msgid "operator %s already exists" +msgstr "ya existe un operador %s" + +#: catalog/pg_operator.c:616 +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_enum.c:113 catalog/pg_enum.c:199 +#, c-format +msgid "invalid enum label \"%s\"" +msgstr "la etiqueta enum «%s» no es válida" + +#: catalog/pg_enum.c:114 catalog/pg_enum.c:200 +#, c-format +msgid "Labels must be %d characters or less." +msgstr "Las etiquetas deben ser de %d caracteres o menos." + +#: catalog/pg_enum.c:264 +#, c-format +msgid "\"%s\" is not an existing enum label" +msgstr "«%s» no es una etiqueta de enum existente" + +#: catalog/pg_enum.c:325 +msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade" +msgstr "" +"ALTER TYPE ADD BEFORE/AFTER es incompatible con la actualización binaria" + +#: catalog/heap.c:264 +#, c-format +msgid "permission denied to create \"%s.%s\"" +msgstr "se ha denegado el permiso para crear «%s.%s»" + +#: catalog/heap.c:266 +msgid "System catalog modifications are currently disallowed." +msgstr "" +"Las modificaciones al catálogo del sistema están actualmente deshabilitadas." + +#: catalog/heap.c:406 +#, 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:422 +#, 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:472 +#, c-format +msgid "column \"%s\" has type \"unknown\"" +msgstr "la columna «%s» tiene tipo «unknown» (desconocido)" + +#: catalog/heap.c:473 +msgid "Proceeding with relation creation anyway." +msgstr "Continuando con la creación de la relación de todas maneras." + +#: catalog/heap.c:486 +#, c-format +msgid "column \"%s\" has pseudo-type %s" +msgstr "la columna «%s» tiene pseudotipo %s" + +#: catalog/heap.c:516 +#, 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:558 +#, 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:1030 +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:2150 +#, c-format +msgid "check constraint \"%s\" already exists" +msgstr "la restricción check «%s» ya existe" + +#: catalog/heap.c:2300 +#, c-format +msgid "merging constraint \"%s\" with inherited definition" +msgstr "mezclando la restricción «%s» con la definición heredada" + +#: catalog/heap.c:2398 +msgid "cannot use column references in default expression" +msgstr "no se pueden usar referencias a columnas en una cláusula default" + +#: catalog/heap.c:2406 +msgid "default expression must not return a set" +msgstr "expresiones default no pueden retornar conjuntos" + +#: catalog/heap.c:2414 +msgid "cannot use subquery in default expression" +msgstr "no se puede usar una subconsulta en expresión default" + +#: catalog/heap.c:2418 +msgid "cannot use aggregate function in default expression" +msgstr "no se puede usar una función de agregación en expresión default" + +#: catalog/heap.c:2422 +msgid "cannot use window function in default expression" +msgstr "" +"no se puede usar una función de ventana deslizante en expresión default" + +#: catalog/heap.c:2492 +#, 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:2748 +msgid "unsupported ON COMMIT and foreign key combination" +msgstr "combinación de ON COMMIT y llaves foráneas no soportada" + +#: catalog/heap.c:2749 +#, 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:2754 +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:2755 +#, c-format +msgid "Table \"%s\" references \"%s\"." +msgstr "La tabla «%s» hace referencia a «%s»." + +#: catalog/heap.c:2757 +#, 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/pg_depend.c:323 +#, c-format +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" + +#: main/main.c:237 +#, c-format +msgid "%s: setsysinfo failed: %s\n" +msgstr "%s: setsysinfo falló: %s\n" + +#: main/main.c:259 +#, c-format +msgid "%s: WSAStartup failed: %d\n" +msgstr "%s: WSAStartup falló: %d\n" + +#: main/main.c:278 +#, c-format +msgid "" +"%s is the PostgreSQL server.\n" +"\n" +msgstr "%s es el servidor PostgreSQL.\n" + +#: main/main.c:279 +#, c-format +msgid "" +"Usage:\n" +" %s [OPTION]...\n" +"\n" +msgstr "" +"Empleo:\n" +" %s [OPCION]...\n" + +#: main/main.c:280 +#, c-format +msgid "Options:\n" +msgstr "Opciones:\n" + +#: main/main.c:282 +#, 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:284 +#, 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:285 +#, 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:286 +#, c-format +msgid " -d 1-5 debugging level\n" +msgstr " -d 1-5 nivel de depuración\n" + +#: main/main.c:287 +#, c-format +msgid " -D DATADIR database directory\n" +msgstr " -D DATADIR directorio de bases de datos\n" + +#: main/main.c:288 +#, c-format +msgid " -e use European date input format (DMY)\n" +msgstr " -e usar estilo europeo de fechas (DMY)\n" + +#: main/main.c:289 +#, c-format +msgid " -F turn fsync off\n" +msgstr " -F desactivar fsync\n" + +#: main/main.c:290 +#, 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:291 +#, c-format +msgid " -i enable TCP/IP connections\n" +msgstr " -i activar conexiones TCP/IP\n" + +#: main/main.c:292 +#, c-format +msgid " -k DIRECTORY Unix-domain socket location\n" +msgstr " -k DIRECTORIO ubicación del socket Unix\n" + +#: main/main.c:294 +#, c-format +msgid " -l enable SSL connections\n" +msgstr " -l activar conexiones SSL\n" + +#: main/main.c:296 +#, 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:297 +#, c-format +msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n" +msgstr "" +" -o OPCIONES pasar «OPCIONES» a cada proceso servidor (obsoleto)\n" -#: utils/misc/guc.c:1046 -msgid "Enables per-database user names." -msgstr "Activar el uso de nombre de usuario locales a cada base de datos." +#: main/main.c:298 +#, c-format +msgid " -p PORT port number to listen on\n" +msgstr " -p PUERTO número de puerto en el cual escuchar\n" -#: utils/misc/guc.c:1055 -msgid "This parameter doesn't do anything." -msgstr "Este parámetro no hace nada." +#: main/main.c:299 +#, c-format +msgid " -s show statistics after each query\n" +msgstr " -s mostrar estadísticas después de cada consulta\n" -#: utils/misc/guc.c:1056 -msgid "" -"It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-" -"vintage clients." +#: main/main.c:300 +#, c-format +msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n" msgstr "" -"Está aquí sólo para poder aceptar SET AUTOCOMMIT TO ON desde clientes de la " -"línea 7.3." +" -S WORK-MEM mostrar cantidad de memoria para ordenamientos (en kB)\n" -#: utils/misc/guc.c:1064 -msgid "Sets the default read-only status of new transactions." -msgstr "Estado por omisión de sólo lectura de nuevas transacciones." +#: main/main.c:301 +#, c-format +msgid " --NAME=VALUE set run-time parameter\n" +msgstr " --NOMBRE=VALOR definir parámetro de ejecución\n" -#: utils/misc/guc.c:1072 -msgid "Sets the current transaction's read-only status." -msgstr "Activa el estado de sólo lectura de la transacción en curso." +#: main/main.c:302 +#, c-format +msgid " --describe-config describe configuration parameters, then exit\n" +msgstr "" +" --describe-config\n" +" mostrar parámetros de configuración y salir\n" -#: utils/misc/guc.c:1081 -msgid "Check function bodies during CREATE FUNCTION." -msgstr "Verificar definición de funciones durante CREATE FUNCTION." +#: main/main.c:303 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help desplegar esta ayuda y salir\n" -#: utils/misc/guc.c:1089 -msgid "Enable input of NULL elements in arrays." -msgstr "Habilita el ingreso de elementos nulos en arrays." +#: main/main.c:304 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version desplegar número de versión y salir\n" -#: utils/misc/guc.c:1090 +#: main/main.c:306 +#, c-format msgid "" -"When turned on, unquoted NULL in an array input value means a null value; " -"otherwise it is taken literally." +"\n" +"Developer options:\n" 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." +"\n" +"Opciones de desarrollador:\n" -#: utils/misc/guc.c:1099 -msgid "Create new tables with OIDs by default." -msgstr "Crea nuevas tablas con OIDs por omisión." +#: 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 impedir el uso de algunos tipos de planes\n" -#: utils/misc/guc.c:1107 +#: main/main.c:308 +#, c-format msgid "" -"Start a subprocess to capture stderr output and/or csvlogs into log files." +" -n do not reinitialize shared memory after abnormal exit\n" msgstr "" -"Lanzar un subproceso para capturar stderr y/o logs CSV en archivos de log." - -#: utils/misc/guc.c:1115 -msgid "Truncate existing log files of same name during log rotation." -msgstr "Truncar archivos de log del mismo nombre durante la rotación." +" -n no reinicializar memoria compartida después de salida " +"anormal\n" -#: utils/misc/guc.c:1125 -msgid "Emit information about resource usage in sorting." +#: main/main.c:309 +#, c-format +msgid " -O allow system table structure changes\n" msgstr "" -"Emitir información acerca de uso de recursos durante los ordenamientos." +" -O permitir cambios en estructura de tablas de sistema\n" -#: utils/misc/guc.c:1138 -msgid "Generate debugging output for synchronized scanning." -msgstr "Generar salida de depuración para recorrido sincronizado." +#: main/main.c:310 +#, c-format +msgid " -P disable system indexes\n" +msgstr " -P desactivar índices de sistema\n" -#: utils/misc/guc.c:1152 -msgid "Enable bounded sorting using heap sort." -msgstr "Activar ordenamiento acotado usando «heap sort»." +#: main/main.c:311 +#, 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" -#: utils/misc/guc.c:1164 -msgid "Emit WAL-related debugging output." -msgstr "Activar salida de depuración de WAL." +#: main/main.c:312 +#, 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" -#: utils/misc/guc.c:1175 -msgid "Datetimes are integer based." -msgstr "Las fechas y horas se basan en tipos enteros." +#: main/main.c:313 +#, 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" -#: utils/misc/guc.c:1189 +#: main/main.c:315 +#, c-format msgid "" -"Sets whether Kerberos and GSSAPI user names should be treated as case-" -"insensitive." +"\n" +"Options for single-user mode:\n" msgstr "" -"Define que los nombres de usuario Kerberos y GSSAPI deberían ser tratados " -"sin distinción de mayúsculas." +"\n" +"Opciones para modo mono-usuario:\n" -#: utils/misc/guc.c:1198 -msgid "Warn about backslash escapes in ordinary string literals." +#: main/main.c:316 +#, c-format +msgid " --single selects single-user mode (must be first argument)\n" msgstr "" -"Avisa acerca de escapes de backslash en literales de cadena corrientes." +" --single selecciona modo mono-usuario (debe ser el primer " +"argumento)\n" -#: utils/misc/guc.c:1207 -msgid "Causes '...' strings to treat backslashes literally." +#: main/main.c:317 +#, c-format +msgid " DBNAME database name (defaults to user name)\n" msgstr "" -"Provoca que las cadenas '...' traten las barras inclinadas inversas (\\) en " -"forma literal." +" DBNAME nombre de base de datos (el valor por omisión es el nombre " +"de usuario)\n" -#: utils/misc/guc.c:1217 -msgid "Enable synchronized sequential scans." -msgstr "Permitir la sincronización de recorridos secuenciales." +#: main/main.c:318 +#, c-format +msgid " -d 0-5 override debugging level\n" +msgstr " -d 0-5 nivel de depuración\n" -#: utils/misc/guc.c:1226 -msgid "Allows archiving of WAL files using archive_command." -msgstr "Permite el archivado de WAL usando archive_command." +#: main/main.c:319 +#, c-format +msgid " -E echo statement before execution\n" +msgstr " -E mostrar las consultas antes de su ejecución\n" -#: utils/misc/guc.c:1235 -msgid "Allows connections and queries during recovery." -msgstr "Permite conexiones y consultas durante la recuperación." +#: main/main.c:320 +#, 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" -#: utils/misc/guc.c:1244 -msgid "Allows modifications of the structure of system tables." -msgstr "Permite modificaciones de la estructura de las tablas del sistema." +#: main/main.c:321 main/main.c:326 +#, 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" -#: utils/misc/guc.c:1254 -msgid "Disables reading from system indexes." -msgstr "Deshabilita lectura de índices del sistema." +#: main/main.c:323 +#, c-format +msgid "" +"\n" +"Options for bootstrapping mode:\n" +msgstr "" +"\n" +"Opciones para modo de inicio (bootstrapping):\n" + +#: main/main.c:324 +#, c-format +msgid " --boot selects bootstrapping mode (must be first argument)\n" +msgstr "" +" --boot selecciona modo de inicio (debe ser el primer argumento)\n" -#: utils/misc/guc.c:1255 +#: main/main.c:325 +#, c-format msgid "" -"It does not prevent updating the indexes, so it is safe to use. The worst " -"consequence is slowness." +" DBNAME database name (mandatory argument in bootstrapping mode)\n" msgstr "" -"No evita la actualización de índices, así que es seguro. Lo peor que puede " -"ocurrir es lentitud del sistema." +" DBNAME nombre de base de datos (argumento obligatorio en modo de " +"inicio)\n" + +#: main/main.c:327 +#, c-format +msgid " -x NUM internal use\n" +msgstr " -x NUM uso interno\n" -#: utils/misc/guc.c:1265 +#: main/main.c:329 +#, c-format msgid "" -"Enables backward compatibility mode for privilege checks on large objects." +"\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 "" -"Activa el modo de compatibilidad con versiones anteriores de las " -"comprobaciones de privilegios de objetos grandes." +"\n" +"Por favor lea la documentación para obtener la lista completa de\n" +"parámetros de configuración y cómo definirlos en la línea de órdenes\n" +"y en el archivo de configuración.\n" +"\n" +"Reporte errores a \n" -#: utils/misc/guc.c:1266 +#: main/main.c:343 msgid "" -"Skips privilege checks when reading or modifying large objects, for " -"compatibility with PostgreSQL releases prior to 9.0." +"\"root\" execution of the PostgreSQL server is not permitted.\n" +"The server must be started under an unprivileged user ID to prevent\n" +"possible system security compromise. See the documentation for\n" +"more information on how to properly start the server.\n" msgstr "" -"Omite las comprobaciones de privilegios cuando se leen o modifican los " -"objetos grandes, para compatibilidad con versiones de PostgreSQL anteriores " -"a 9.0." +"No se permite ejecución del servidor PostgreSQL como «root».\n" +"El servidor debe ser iniciado con un usuario no privilegiado\n" +"para prevenir posibles compromisos de seguridad del sistema.\n" +"Vea la documentación para obtener más información acerca de cómo\n" +"iniciar correctamente el servidor.\n" + +#: main/main.c:360 +#, c-format +msgid "%s: real and effective user IDs must match\n" +msgstr "%s: los IDs de usuario real y efectivo deben coincidir\n" -#: utils/misc/guc.c:1284 +#: main/main.c:367 msgid "" -"Forces a switch to the next xlog file if a new file has not been started " -"within N seconds." +"Execution of PostgreSQL by a user with administrative permissions is not\n" +"permitted.\n" +"The server must be started under an unprivileged user ID to prevent\n" +"possible system security compromises. See the documentation for\n" +"more information on how to properly start the server.\n" msgstr "" -"Fuerza el cambio al siguiente archivo xlog si un nuevo archivo no ha sido " -"iniciado dentro de N segundos." +"No se permite ejecución del servidor PostgreSQL por un usuario con " +"privilegios administrativos.\n" +"El servidor debe ser iniciado con un usuario no privilegiado\n" +"para prevenir posibles compromisos de seguridad del sistema.\n" +"Vea la documentación para obtener más información acerca de cómo\n" +"iniciar correctamente el servidor.\n" + +#: main/main.c:388 +#, 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:401 +#, 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" + +#: parser/parse_coerce.c:932 parser/parse_coerce.c:962 +#: parser/parse_coerce.c:980 parser/parse_coerce.c:995 +#: parser/parse_expr.c:1672 parser/parse_expr.c:2134 parser/parse_target.c:830 +#, c-format +msgid "cannot cast type %s to %s" +msgstr "no se puede convertir el tipo %s a %s" + +#: parser/parse_coerce.c:965 +msgid "Input has too few columns." +msgstr "La entrada tiene muy pocas columnas." + +#: parser/parse_coerce.c:983 +#, c-format +msgid "Cannot cast type %s to %s in column %d." +msgstr "No se puede convertir el tipo %s a %s en la columna %d." + +#: parser/parse_coerce.c:998 +msgid "Input has too many columns." +msgstr "La entrada tiene demasiadas columnas." + +#. translator: first %s is name of a SQL construct, eg WHERE +#: parser/parse_coerce.c:1041 +#, c-format +msgid "argument of %s must be type boolean, not type %s" +msgstr "el argumento de %s debe ser de tipo boolean, no tipo %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 +#, c-format +msgid "argument of %s must not return a set" +msgstr "el argumento de %s no debe retornar un conjunto" -#: utils/misc/guc.c:1294 -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." +#. translator: first %s is name of a SQL construct, eg LIMIT +#: parser/parse_coerce.c:1088 +#, c-format +msgid "argument of %s must be type %s, not type %s" +msgstr "el argumento de %s debe ser de tipo %s, no tipo %s" -#: utils/misc/guc.c:1295 utils/misc/guc.c:1670 -msgid "This allows attaching a debugger to the process." -msgstr "Esto permite adjuntar un depurador al proceso." +#. translator: first %s is name of a SQL construct, eg CASE +#: parser/parse_coerce.c:1221 +#, c-format +msgid "%s types %s and %s cannot be matched" +msgstr "los tipos %2$s y %3$s no son coincidentes en %1$s" -#: utils/misc/guc.c:1303 -msgid "Sets the default statistics target." -msgstr "Definir el valor por omisión de toma de estadísticas." +#. translator: first %s is name of a SQL construct, eg CASE +#: parser/parse_coerce.c:1288 +#, c-format +msgid "%s could not convert type %s to %s" +msgstr "%s no pudo convertir el tipo %s a %s" -#: utils/misc/guc.c:1304 -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." +#: parser/parse_coerce.c:1539 +msgid "arguments declared \"anyelement\" are not all alike" +msgstr "los argumentos declarados «anyelement» no son de tipos compatibles" -#: utils/misc/guc.c:1312 -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." +#: parser/parse_coerce.c:1559 +msgid "arguments declared \"anyarray\" are not all alike" +msgstr "los argumentos declarados «anyarray» no son de tipos compatibles" + +#: parser/parse_coerce.c:1588 parser/parse_coerce.c:1736 +#: parser/parse_coerce.c:1768 +#, c-format +msgid "argument declared \"anyarray\" is not an array but type %s" +msgstr "el argumento declarado «anyarray» no es un array sino de tipo %s" -#: utils/misc/guc.c:1314 +#: parser/parse_coerce.c:1604 msgid "" -"The planner will merge subqueries into upper queries if the resulting FROM " -"list would have no more than this many items." +"argument declared \"anyarray\" is not consistent with argument declared " +"\"anyelement\"" msgstr "" -"El planner mezclará subconsultas en consultas de nivel superior si la lista " -"FROM resultante es menor que esta cantidad de ítems." +"el argumento declarado «anyarray» no es consistente con el argumento " +"declarado «anyelement»" -#: utils/misc/guc.c:1323 -msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened." +#: parser/parse_coerce.c:1622 +msgid "could not determine polymorphic type because input has type \"unknown\"" msgstr "" -"Tamaño de lista de FROM a partir del cual constructos JOIN no serán " -"aplanados." +"no se pudo determinar el tipo polimórfico porque el tipo de entrada es " +"«unknown»" -#: utils/misc/guc.c:1325 -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." +#: parser/parse_coerce.c:1632 +#, c-format +msgid "type matched to anynonarray is an array type: %s" +msgstr "el argumento coincidente con anynonarray es un array: %s" -#: utils/misc/guc.c:1334 -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." +#: parser/parse_coerce.c:1642 +#, c-format +msgid "type matched to anyenum is not an enum type: %s" +msgstr "el tipo coincidente con anyenum no es un tipo enum: %s" -#: utils/misc/guc.c:1342 -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." +#: gram.y:916 +#, c-format +msgid "unrecognized role option \"%s\"" +msgstr "opción de rol no reconocida «%s»" -#: utils/misc/guc.c:1350 -msgid "GEQO: number of individuals in the population." -msgstr "GEQO: número de individuos en una población." +#: gram.y:1302 +msgid "current database cannot be changed" +msgstr "no se puede cambiar la base de datos activa" -#: utils/misc/guc.c:1351 utils/misc/guc.c:1359 -msgid "Zero selects a suitable default value." -msgstr "Cero selecciona un valor por omisión razonable." +#: gram.y:1420 gram.y:1435 +msgid "time zone interval must be HOUR or HOUR TO MINUTE" +msgstr "el intervalo de huso horario debe ser HOUR o HOUR TO MINUTE" -#: utils/misc/guc.c:1358 -msgid "GEQO: number of iterations of the algorithm." -msgstr "GEQO: número de iteraciones del algoritmo." +#: gram.y:1440 gram.y:9246 gram.y:11759 +msgid "interval precision specified twice" +msgstr "la precisión de interval fue especificada dos veces" -#: utils/misc/guc.c:1368 -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." +#: gram.y:3006 +msgid "CREATE TABLE AS cannot specify INTO" +msgstr "CREATE TABLE AS no puede especificar INTO" -#: utils/misc/guc.c:1378 -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." +#: gram.y:4059 +msgid "duplicate trigger events specified" +msgstr "se han especificado eventos de disparador duplicados" -#: utils/misc/guc.c:1388 -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." +#: gram.y:4154 parser/parse_utilcmd.c:2527 parser/parse_utilcmd.c:2553 +msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" +msgstr "una restricción declarada INITIALLY DEFERRED debe ser DEFERRABLE" -#: utils/misc/guc.c:1408 -msgid "Sets the maximum number of concurrent connections." -msgstr "Número máximo de conexiones concurrentes." +#: gram.y:4161 +msgid "conflicting constraint properties" +msgstr "propiedades de restricción contradictorias" -#: utils/misc/guc.c:1417 -msgid "Sets the number of connection slots reserved for superusers." -msgstr "Número de conexiones reservadas para superusuarios." +#: gram.y:4222 +msgid "CREATE ASSERTION is not yet implemented" +msgstr "CREATE ASSERTION no está implementado" -#: utils/misc/guc.c:1426 -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." +#: gram.y:4238 +msgid "DROP ASSERTION is not yet implemented" +msgstr "DROP ASSERTION no está implementado" -#: utils/misc/guc.c:1436 -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." +#: gram.y:4574 +msgid "RECHECK is no longer required" +msgstr "RECHECK ya no es requerido" -#: utils/misc/guc.c:1446 -msgid "Sets the TCP port the server listens on." -msgstr "Puerto TCP en el cual escuchará el servidor." +#: gram.y:4575 +msgid "Update your data type." +msgstr "Actualice su tipo de datos." -#: utils/misc/guc.c:1455 -msgid "Sets the access permissions of the Unix-domain socket." -msgstr "Privilegios de acceso al socket Unix." +#: gram.y:7298 gram.y:7304 gram.y:7310 +msgid "WITH CHECK OPTION is not implemented" +msgstr "WITH CHECK OPTION no está implementado" -#: utils/misc/guc.c:1456 -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)." +#: gram.y:7986 +msgid "column name list not allowed in CREATE TABLE / AS EXECUTE" +msgstr "no se permite una lista de columnas en CREATE TABLE / AS EXECUTE " -#: utils/misc/guc.c:1468 -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." +#: gram.y:8210 +msgid "number of columns does not match number of values" +msgstr "el número de columnas no coincide con el número de valores" -#: utils/misc/guc.c:1469 -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." +#: gram.y:8660 +msgid "LIMIT #,# syntax is not supported" +msgstr "la sintaxis LIMIT #,# no está soportada" -#: utils/misc/guc.c:1480 -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." +#: gram.y:8661 +msgid "Use separate LIMIT and OFFSET clauses." +msgstr "Use cláusulas LIMIT y OFFSET separadas." -#: utils/misc/guc.c:1481 -msgid "This includes operations such as VACUUM and CREATE INDEX." -msgstr "Esto incluye operaciones como VACUUM y CREATE INDEX." +#: gram.y:8879 +msgid "VALUES in FROM must have an alias" +msgstr "VALUES en FROM debe tener un alias" -#: utils/misc/guc.c:1490 -msgid "Sets the maximum stack depth, in kilobytes." -msgstr "Establece el tamaño máximo del stack, en kilobytes." +#: gram.y:8880 +msgid "For example, FROM (VALUES ...) [AS] foo." +msgstr "Por ejemplo, FROM (VALUES ...) [AS] foo." -#: utils/misc/guc.c:1500 -msgid "Vacuum cost for a page found in the buffer cache." -msgstr "Costo de Vacuum de una página encontrada en el buffer." +#: gram.y:8885 +msgid "subquery in FROM must have an alias" +msgstr "las subconsultas en FROM deben tener un alias" -#: utils/misc/guc.c:1509 -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." +#: gram.y:8886 +msgid "For example, FROM (SELECT ...) [AS] foo." +msgstr "Por ejemplo, FROM (SELECT ...) [AS] foo." -#: utils/misc/guc.c:1518 -msgid "Vacuum cost for a page dirtied by vacuum." -msgstr "Costo de Vacuum de una página ensuciada por vacuum." +#: gram.y:9372 +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" -#: utils/misc/guc.c:1527 -msgid "Vacuum cost amount available before napping." -msgstr "Costo de Vacuum disponible antes de descansar." +#: gram.y:9381 +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" -#: utils/misc/guc.c:1536 -msgid "Vacuum cost delay in milliseconds." -msgstr "Tiempo de descanso de vacuum en milisegundos." +#: gram.y:10095 +msgid "UNIQUE predicate is not yet implemented" +msgstr "el predicado UNIQUE no está implementado" -#: utils/misc/guc.c:1546 -msgid "Vacuum cost delay in milliseconds, for autovacuum." -msgstr "Tiempo de descanso de vacuum en milisegundos, para autovacuum." +#: gram.y:11026 +msgid "RANGE PRECEDING is only supported with UNBOUNDED" +msgstr "RANGE PRECEDING sólo está soportado con UNBOUNDED" -#: utils/misc/guc.c:1556 -msgid "Vacuum cost amount available before napping, for autovacuum." -msgstr "Costo de Vacuum disponible antes de descansar, para autovacuum." +#: gram.y:11032 +msgid "RANGE FOLLOWING is only supported with UNBOUNDED" +msgstr "RANGE FOLLOWING sólo está soportado con UNBOUNDED" -#: utils/misc/guc.c:1565 -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." +#: gram.y:11059 gram.y:11082 +msgid "frame start cannot be UNBOUNDED FOLLOWING" +msgstr "el inicio de «frame» no puede ser UNBOUNDED FOLLOWING" -#: utils/misc/guc.c:1577 -msgid "Sets the maximum number of simultaneously prepared transactions." -msgstr "Define la cantidad máxima de transacciones preparadas simultáneas." +#: gram.y:11064 +msgid "frame starting from following row cannot end with current row" +msgstr "" +"el «frame» que se inicia desde la siguiente fila no puede terminar en la " +"fila actual" -#: utils/misc/guc.c:1607 -msgid "Sets the maximum allowed duration of any statement." -msgstr "Define la duración máxima permitida de sentencias." +#: gram.y:11087 +msgid "frame end cannot be UNBOUNDED PRECEDING" +msgstr "el fin de «frame» no puede ser UNBOUNDED PRECEDING" -#: utils/misc/guc.c:1608 -msgid "A value of 0 turns off the timeout." -msgstr "Un valor de 0 desactiva el máximo." +#: gram.y:11093 +msgid "frame starting from current row cannot have preceding rows" +msgstr "" +"el «frame» que se inicia desde la fila actual no puede tener filas " +"precedentes" -#: utils/misc/guc.c:1617 -msgid "Minimum age at which VACUUM should freeze a table row." +#: gram.y:11100 +msgid "frame starting from following row cannot have preceding rows" msgstr "" -"Mínima edad a la cual VACUUM debería congelar (freeze) una fila de una tabla." +"el «frame» que se inicia desde la fila siguiente no puede tener filas " +"precedentes" -#: utils/misc/guc.c:1626 -msgid "Age at which VACUUM should scan whole table to freeze tuples." +#: gram.y:11734 +msgid "type modifier cannot have parameter name" +msgstr "el modificador de tipo no puede tener nombre de parámetro" + +#: gram.y:12337 gram.y:12545 +msgid "improper use of \"*\"" +msgstr "uso impropio de «*»" + +#: gram.y:12476 +msgid "wrong number of parameters on left side of OVERLAPS expression" msgstr "" -"Edad a la cual VACUUM debería recorrer una tabla completa para congelar " -"(freeze) las filas." +"el número de parámetros es incorrecto al lado izquierdo de la expresión " +"OVERLAPS" -#: utils/misc/guc.c:1635 -msgid "" -"Number of transactions by which VACUUM and HOT cleanup should be deferred, " -"if any." +#: gram.y:12483 +msgid "wrong number of parameters on right side of OVERLAPS expression" msgstr "" -"Número de transacciones por las cuales VACUUM y la limpieza HOT deberían " -"postergarse." +"el número de parámetros es incorrecto al lado derecho de la expresión " +"OVERLAPS" + +#: gram.y:12608 +msgid "multiple ORDER BY clauses not allowed" +msgstr "no se permiten múltiples cláusulas ORDER BY" + +#: gram.y:12619 +msgid "multiple OFFSET clauses not allowed" +msgstr "no se permiten múltiples cláusulas OFFSET" + +#: gram.y:12628 +msgid "multiple LIMIT clauses not allowed" +msgstr "no se permiten múltiples cláusulas LIMIT" + +#: gram.y:12637 +msgid "multiple WITH clauses not allowed" +msgstr "no se permiten múltiples cláusulas WITH" -#: utils/misc/guc.c:1647 -msgid "Sets the maximum number of locks per transaction." -msgstr "Cantidad máxima de bloqueos (locks) por transacción." +#: gram.y:12783 +msgid "OUT and INOUT arguments aren't allowed in TABLE functions" +msgstr "los argumentos OUT e INOUT no están permitidos en funciones TABLE" -#: utils/misc/guc.c:1648 -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 bloqueos 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." +#: gram.y:12884 +msgid "multiple COLLATE clauses not allowed" +msgstr "no se permiten múltiples cláusulas COLLATE" -#: utils/misc/guc.c:1658 -msgid "Sets the maximum allowed time to complete client authentication." -msgstr "Define el tiempo máximo para completar proceso de autentificación." +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:12922 gram.y:12935 +#, c-format +msgid "%s constraints cannot be marked DEFERRABLE" +msgstr "las restricciones %s no pueden ser marcadas DEFERRABLE" -#: utils/misc/guc.c:1669 -msgid "Waits N seconds on connection startup before authentication." -msgstr "" -"Espera N segundos al inicio de la conexión antes de la autentificación." +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:12948 +#, c-format +msgid "%s constraints cannot be marked NOT VALID" +msgstr "las restricciones %s no pueden ser marcadas NOT VALID" -#: utils/misc/guc.c:1679 -msgid "Sets the number of WAL files held for standby servers." -msgstr "Número de archivos WAL conservados para servidores standby." +#: parser/parse_utilcmd.c:182 +#, c-format +msgid "relation \"%s\" already exists, skipping" +msgstr "la relación «%s» ya existe, ignorando" -#: utils/misc/guc.c:1688 -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." +#: parser/parse_utilcmd.c:335 +msgid "array of serial is not implemented" +msgstr "array de serial no está implementado" -#: utils/misc/guc.c:1697 -msgid "Sets the maximum time between automatic WAL checkpoints." -msgstr "Define el tiempo máximo entre puntos de control de WAL automáticos." +#: parser/parse_utilcmd.c:383 +#, c-format +msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\"" +msgstr "%s creará una secuencia implícita «%s» para la columna serial «%s.%s»" -#: utils/misc/guc.c:1707 +#: parser/parse_utilcmd.c:484 parser/parse_utilcmd.c:496 +#, c-format 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." +"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»" -#: utils/misc/guc.c:1709 -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." +#: parser/parse_utilcmd.c:508 +#, c-format +msgid "multiple default values specified for column \"%s\" of table \"%s\"" 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." +"múltiples valores default especificados para columna «%s» de tabla «%s»" -#: utils/misc/guc.c:1720 -msgid "Sets the number of disk-page buffers in shared memory for WAL." -msgstr "Búfers en memoria compartida para páginas de WAL." +#: parser/parse_utilcmd.c:1155 parser/parse_utilcmd.c:1231 +#, c-format +msgid "Index \"%s\" contains a whole-row table reference." +msgstr "El índice «%s» contiene una referencia a la fila completa (whole-row)." -#: utils/misc/guc.c:1730 -msgid "WAL writer sleep time between WAL flushes." -msgstr "" -"Tiempo de descanso del escritor de WAL entre escrituras de WAL consecutivas." +#: parser/parse_utilcmd.c:1496 +msgid "cannot use an existing index in CREATE TABLE" +msgstr "no se puede usar un índice existente en CREATE TABLE" -#: utils/misc/guc.c:1741 -msgid "Sets the maximum number of simultaneously running WAL sender processes." -msgstr "Define la cantidad máxima de procesos «WAL sender» simultáneos." +#: parser/parse_utilcmd.c:1516 +#, c-format +msgid "index \"%s\" is already associated with a constraint" +msgstr "el índice «%s» ya está asociado a una restricción" -#: utils/misc/guc.c:1750 -msgid "WAL sender sleep time between WAL replications." -msgstr "" -"Tiempo de descanso de «WAL sender» entre replicaciones de WAL consecutivas." +#: parser/parse_utilcmd.c:1524 +#, c-format +msgid "index \"%s\" does not belong to table \"%s\"" +msgstr "el índice «%s» no pertenece a la tabla «%s»" -#: utils/misc/guc.c:1760 -msgid "" -"Sets the delay in microseconds between transaction commit and flushing WAL " -"to disk." +#: parser/parse_utilcmd.c:1531 +#, c-format +msgid "index \"%s\" is not valid" +msgstr "el índice «%s» no es válido" + +#: parser/parse_utilcmd.c:1537 +#, c-format +msgid "\"%s\" is not a unique index" +msgstr "«%s» no es un índice único" + +#: parser/parse_utilcmd.c:1538 parser/parse_utilcmd.c:1545 +#: parser/parse_utilcmd.c:1552 parser/parse_utilcmd.c:1622 +msgid "Cannot create a primary key or unique constraint using such an index." msgstr "" -"Retardo en microsegundos entre completar una transacción y escribir WAL a " -"disco." +"No se puede crear una restricción de llave primaria o única usando un índice " +"así." -#: utils/misc/guc.c:1770 -msgid "" -"Sets the minimum concurrent open transactions before performing commit_delay." -msgstr "Mínimo de transacciones concurrentes para esperar commit_delay." +#: parser/parse_utilcmd.c:1544 +#, c-format +msgid "index \"%s\" contains expressions" +msgstr "el índice «%s» contiene expresiones" -#: utils/misc/guc.c:1780 -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." +#: parser/parse_utilcmd.c:1551 +#, c-format +msgid "\"%s\" is a partial index" +msgstr "«%s» es un índice parcial" -#: utils/misc/guc.c:1781 -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)" +#: parser/parse_utilcmd.c:1563 +#, c-format +msgid "\"%s\" is a deferrable index" +msgstr "«%s» no es un índice postergable (deferrable)" -#: utils/misc/guc.c:1791 -msgid "Sets the minimum execution time above which statements will be logged." +#: parser/parse_utilcmd.c:1564 +msgid "Cannot create a non-deferrable constraint using a deferrable index." msgstr "" -"Tiempo mínimo de ejecución a partir del cual se registran las consultas." +"No se puede crear una restricción no postergable usando un índice " +"postergable." -#: utils/misc/guc.c:1793 -msgid "Zero prints all queries. -1 turns this feature off." -msgstr "Cero registra todas las consultas. -1 desactiva esta característica." +#: parser/parse_utilcmd.c:1621 +#, 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:1766 +#, 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:1772 +#, 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:1937 +msgid "index expression cannot return a set" +msgstr "las expresiones de índice no pueden retornar conjuntos" -#: utils/misc/guc.c:1802 +#: parser/parse_utilcmd.c:1947 msgid "" -"Sets the minimum execution time above which autovacuum actions will be " -"logged." +"index expressions and predicates can refer only to the table being indexed" msgstr "" -"Tiempo mínimo de ejecución a partir del cual se registran las acciones de " -"autovacuum." +"las expresiones y predicados de índice sólo pueden referirse a la tabla en " +"indexación" -#: utils/misc/guc.c:1804 -msgid "Zero prints all actions. -1 turns autovacuum logging off." +#: parser/parse_utilcmd.c:2044 +msgid "rule WHERE condition cannot contain references to other relations" msgstr "" -"Cero registra todas las acciones. -1 desactiva el registro de autovacuum." - -#: utils/misc/guc.c:1813 -msgid "Background writer sleep time between rounds." -msgstr "Tiempo de descanso entre rondas del background writer" +"la condición WHERE de la regla no puede contener referencias a otras " +"relaciones" -#: utils/misc/guc.c:1823 -msgid "Background writer maximum number of LRU pages to flush per round." +#: parser/parse_utilcmd.c:2050 +msgid "cannot use aggregate function in rule WHERE condition" msgstr "" -"Número máximo de páginas LRU a escribir en cada ronda del background writer" +"no se pueden usar funciones de agregación en condición WHERE de una regla" -#: utils/misc/guc.c:1838 -msgid "" -"Number of simultaneous requests that can be handled efficiently by the disk " -"subsystem." +#: parser/parse_utilcmd.c:2054 +msgid "cannot use window function in rule WHERE condition" msgstr "" -"Cantidad máxima de peticiones simultáneas que pueden ser manejadas " -"eficientemente por el sistema de disco." +"no se pueden usar funciones de ventana deslizante en condición WHERE de una " +"regla" -#: utils/misc/guc.c:1839 +#: parser/parse_utilcmd.c:2126 msgid "" -"For RAID arrays, this should be approximately the number of drive spindles " -"in the array." +"rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE " +"actions" msgstr "" -"Para arrays RAID, esto debería ser aproximadamente la cantidad de discos en " -"el array." +"las reglas con condiciones WHERE sólo pueden tener acciones SELECT, INSERT, " +"UPDATE o DELETE" -#: utils/misc/guc.c:1852 -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." +#: parser/parse_utilcmd.c:2162 +msgid "ON SELECT rule cannot use OLD" +msgstr "una regla ON SELECT no puede usar OLD" -#: utils/misc/guc.c:1862 -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." +#: parser/parse_utilcmd.c:2166 +msgid "ON SELECT rule cannot use NEW" +msgstr "una regla ON SELECT no puede usar NEW" -#: utils/misc/guc.c:1872 -msgid "Shows the maximum number of function arguments." -msgstr "Muestra la cantidad máxima de argumentos de funciones." +#: parser/parse_utilcmd.c:2175 +msgid "ON INSERT rule cannot use OLD" +msgstr "una regla ON INSERT no puede usar OLD" -#: utils/misc/guc.c:1882 -msgid "Shows the maximum number of index keys." -msgstr "Muestra la cantidad máxima de claves de índices." +#: parser/parse_utilcmd.c:2181 +msgid "ON DELETE rule cannot use NEW" +msgstr "una regla ON DELETE no puede usar NEW" -#: utils/misc/guc.c:1892 -msgid "Shows the maximum identifier length." -msgstr "Muestra el largo máximo de identificadores." +#: parser/parse_utilcmd.c:2209 +msgid "cannot refer to OLD within WITH query" +msgstr "no se puede hacer referencia a OLD dentro de una consulta WITH" -#: utils/misc/guc.c:1902 -msgid "Shows the size of a disk block." -msgstr "Muestra el tamaño de un bloque de disco." +#: parser/parse_utilcmd.c:2216 +msgid "cannot refer to NEW within WITH query" +msgstr "no se puede hacer referencia a NEW dentro de una consulta WITH" -#: utils/misc/guc.c:1912 -msgid "Shows the number of pages per disk file." -msgstr "Muestra el número de páginas por archivo en disco." +#: parser/parse_utilcmd.c:2499 +msgid "misplaced DEFERRABLE clause" +msgstr "cláusula DEFERRABLE mal puesta" -#: utils/misc/guc.c:1922 -msgid "Shows the block size in the write ahead log." -msgstr "Muestra el tamaño de bloque en el write-ahead log." +#: parser/parse_utilcmd.c:2504 parser/parse_utilcmd.c:2519 +msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" +msgstr "no se permiten múltiples cláusulas DEFERRABLE/NOT DEFERRABLE" -#: utils/misc/guc.c:1932 -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." +#: parser/parse_utilcmd.c:2514 +msgid "misplaced NOT DEFERRABLE clause" +msgstr "la cláusula NOT DEFERRABLE está mal puesta" -#: utils/misc/guc.c:1945 -msgid "Time to sleep between autovacuum runs." -msgstr "Tiempo de descanso entre ejecuciones de autovacuum." +#: parser/parse_utilcmd.c:2535 +msgid "misplaced INITIALLY DEFERRED clause" +msgstr "la cláusula INITIALLY DEFERRED está mal puesta" -#: utils/misc/guc.c:1954 -msgid "Minimum number of tuple updates or deletes prior to vacuum." -msgstr "Número mínimo de updates o deletes antes de ejecutar vacuum." +#: parser/parse_utilcmd.c:2540 parser/parse_utilcmd.c:2566 +msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" +msgstr "no se permiten múltiples cláusulas INITIALLY IMMEDIATE/DEFERRED" -#: utils/misc/guc.c:1962 -msgid "Minimum number of tuple inserts, updates or deletes prior to analyze." -msgstr "Número mínimo de inserts, updates, deletes antes de ejecutar analyze." +#: parser/parse_utilcmd.c:2561 +msgid "misplaced INITIALLY IMMEDIATE clause" +msgstr "la cláusula INITIALLY IMMEDIATE está mal puesta" -#: utils/misc/guc.c:1971 +#: parser/parse_utilcmd.c:2752 +#, c-format msgid "" -"Age at which to autovacuum a table to prevent transaction ID wraparound." +"CREATE specifies a schema (%s) different from the one being created (%s)" msgstr "" -"Edad a la cual aplicar VACUUM automáticamente a una tabla para prevenir " -"problemas por reciclaje de ID de transacción." +"CREATE especifica un esquema (%s) diferente del que se está creando (%s)" -#: utils/misc/guc.c:1981 -msgid "" -"Sets the maximum number of simultaneously running autovacuum worker " -"processes." -msgstr "Define la cantidad máxima de procesos «autovacuum worker» simultáneos." +#: parser/parse_agg.c:131 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" -#: utils/misc/guc.c:1990 -msgid "Time between issuing TCP keepalives." -msgstr "Tiempo entre cada emisión de TCP keepalive." +#: parser/parse_agg.c:133 +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." -#: utils/misc/guc.c:1991 utils/misc/guc.c:2001 -msgid "A value of 0 uses the system default." -msgstr "Un valor 0 usa el valor por omisión del sistema." +#: parser/parse_agg.c:174 +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" -#: utils/misc/guc.c:2000 -msgid "Time between TCP keepalive retransmits." -msgstr "Tiempo entre retransmisiones TCP keepalive." +#: parser/parse_agg.c:245 parser/parse_clause.c:1637 +#, c-format +msgid "window \"%s\" does not exist" +msgstr "la ventana «%s» no existe" -#: utils/misc/guc.c:2010 -msgid "" -"Set the amount of traffic to send and receive before renegotiating the " -"encryption keys." +#: parser/parse_agg.c:336 +msgid "aggregates not allowed in WHERE clause" +msgstr "no se permiten funciones de agregación en la cláusula WHERE" + +#: parser/parse_agg.c:342 +msgid "aggregates not allowed in JOIN conditions" +msgstr "no se permiten funciones de agregación en las condiciones JOIN" + +#: parser/parse_agg.c:363 +msgid "aggregates not allowed in GROUP BY clause" +msgstr "no se permiten funciones de agregación en la cláusula GROUP BY" + +#: parser/parse_agg.c:433 +msgid "aggregate functions not allowed in a recursive query's recursive term" msgstr "" -"Define la cantidad de tráfico a enviar y recibir antes de renegociar las " -"llaves de cifrado." +"las funciones de agregación no están permitidas en el término recursivo de " +"una consulta recursiva" -#: utils/misc/guc.c:2020 -msgid "Maximum number of TCP keepalive retransmits." -msgstr "Cantidad máxima de retransmisiones TCP keepalive." +#: parser/parse_agg.c:458 +msgid "window functions not allowed in WHERE clause" +msgstr "no se permiten funciones de ventana deslizante en la cláusula WHERE" + +#: parser/parse_agg.c:464 +msgid "window functions not allowed in JOIN conditions" +msgstr "no se permiten funciones de ventana deslizante en las condiciones JOIN" + +#: parser/parse_agg.c:470 +msgid "window functions not allowed in HAVING clause" +msgstr "no se permiten funciones de ventana deslizante en la cláusula HAVING" + +#: parser/parse_agg.c:483 +msgid "window functions not allowed in GROUP BY clause" +msgstr "no se permiten funciones de ventana deslizante en la cláusula GROUP BY" + +#: parser/parse_agg.c:502 parser/parse_agg.c:515 +msgid "window functions not allowed in window definition" +msgstr "" +"no se permiten funciones de ventana deslizante en definiciones de ventana " +"deslizante" -#: utils/misc/guc.c:2021 +#: parser/parse_agg.c:673 +#, c-format 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." +"column \"%s.%s\" must appear in the GROUP BY clause or be used in an " +"aggregate function" 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." +"la columna «%s.%s» debe aparecer en la cláusula GROUP BY o ser usada en una " +"función de agregación" -#: utils/misc/guc.c:2031 -msgid "Sets the maximum allowed result for exact search by GIN." +#: parser/parse_agg.c:679 +#, c-format +msgid "subquery uses ungrouped column \"%s.%s\" from outer query" msgstr "" -"Define el máximo de resultados permitidos por búsquedas exactas con GIN." +"la subconsulta usa la columna «%s.%s» no agrupada de una consulta exterior" -#: utils/misc/guc.c:2041 -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." +#: parser/analyze.c:472 +msgid "INSERT ... SELECT cannot specify INTO" +msgstr "INSERT ... SELECT no puede especificar INTO" -#: utils/misc/guc.c:2042 -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." +#: parser/analyze.c:565 parser/analyze.c:1071 +msgid "VALUES lists must all be the same length" +msgstr "las listas VALUES deben ser todas de la misma longitud" -#: utils/misc/guc.c:2054 -msgid "Shows the server version as an integer." -msgstr "Muestra la versión del servidor como un número entero." +#: parser/analyze.c:607 parser/analyze.c:1212 +msgid "VALUES must not contain table references" +msgstr "VALUES no debe contener referencias a tablas" -#: utils/misc/guc.c:2064 -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." +#: parser/analyze.c:621 parser/analyze.c:1226 +msgid "VALUES must not contain OLD or NEW references" +msgstr "VALUES no debe contener referencias a OLD o NEW" -#: utils/misc/guc.c:2065 -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)." +#: parser/analyze.c:622 parser/analyze.c:1227 +msgid "Use SELECT ... UNION ALL ... instead." +msgstr "Use SELECT ... UNION ALL ... en su lugar." -#: utils/misc/guc.c:2074 -msgid "Sets the size reserved for pg_stat_activity.current_query, in bytes." -msgstr "Tamaño reservado para pg_stat_activity.current_query, en bytes." +#: parser/analyze.c:726 parser/analyze.c:1239 +msgid "cannot use aggregate function in VALUES" +msgstr "no se puede usar una función de agregación en VALUES" -#: utils/misc/guc.c:2092 -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." +#: parser/analyze.c:732 parser/analyze.c:1245 +msgid "cannot use window function in VALUES" +msgstr "no se puede usar una función de ventana deslizante en VALUES" -#: utils/misc/guc.c:2101 -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." +#: parser/analyze.c:766 +msgid "INSERT has more expressions than target columns" +msgstr "INSERT tiene más expresiones que columnas de destino" -#: utils/misc/guc.c:2110 -msgid "Sets the planner's estimate of the cost of processing each tuple (row)." -msgstr "Estimación del costo de procesar cada tupla (fila)." +#: parser/analyze.c:784 +msgid "INSERT has more target columns than expressions" +msgstr "INSERT tiene más columnas de destino que expresiones" -#: utils/misc/guc.c:2119 +#: parser/analyze.c:788 msgid "" -"Sets the planner's estimate of the cost of processing each index entry " -"during an index scan." +"The insertion source is a row expression containing the same number of " +"columns expected by the INSERT. Did you accidentally use extra parentheses?" msgstr "" -"Estimación del costo de procesar cada fila de índice durante un recorrido de " -"índice." - -#: utils/misc/guc.c:2128 -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:2138 -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:2148 -msgid "GEQO: selective pressure within the population." -msgstr "GEQO: presión selectiva dentro de la población." +"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?" -#: utils/misc/guc.c:2157 -msgid "GEQO: seed for random path selection." -msgstr "GEQO: semilla para la selección aleatoria de caminos." +#: parser/analyze.c:1085 +msgid "DEFAULT can only appear in a VALUES list within INSERT" +msgstr "DEFAULT sólo puede aparecer en listas VALUES dentro de un INSERT" -#: utils/misc/guc.c:2166 -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." +#: parser/analyze.c:1193 parser/analyze.c:2421 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES" +msgstr "SELECT FOR UPDATE/SHARE no puede ser aplicado a VALUES" -#: utils/misc/guc.c:2175 -msgid "Sets the seed for random-number generation." -msgstr "Semilla para la generación de números aleatorios." +#: parser/analyze.c:1456 +msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" +msgstr "cláusula UNION/INTERSECT/EXCEPT ORDER BY no válida" -#: utils/misc/guc.c:2185 -msgid "" -"Number of tuple updates or deletes prior to vacuum as a fraction of " -"reltuples." +#: parser/analyze.c:1457 +msgid "Only result column names can be used, not expressions or functions." msgstr "" -"Número de updates o deletes de tuplas antes de ejecutar un vacuum, como " -"fracción de reltuples." +"Sólo nombres de columna del resultado pueden usarse, no expresiones o " +"funciones." -#: utils/misc/guc.c:2193 +#: parser/analyze.c:1458 msgid "" -"Number of tuple inserts, updates or deletes prior to analyze as a fraction " -"of reltuples." +"Add the expression/function to every SELECT, or move the UNION into a FROM " +"clause." msgstr "" -"Número de inserts, updates o deletes de tuplas antes de ejecutar un analyze, " -"como fracción de reltuples." +"Agregue la función o expresión a todos los SELECT, o mueva el UNION dentro " +"de una cláusula FROM." + +#: parser/analyze.c:1533 +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" -#: utils/misc/guc.c:2202 +#: parser/analyze.c:1593 msgid "" -"Time spent flushing dirty buffers during checkpoint, as fraction of " -"checkpoint interval." +"UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of " +"same query level" msgstr "" -"Tiempo utilizado en escribir páginas «sucias» durante los puntos de control, " -"medido como fracción del intervalo del punto de control." +"una sentencia miembro de UNION/INSERT/EXCEPT no puede referirse a otras " +"relaciones del mismo nivel de la consulta" -#: utils/misc/guc.c:2220 -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." +#: parser/analyze.c:1681 +#, 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" -#: utils/misc/guc.c:2229 -msgid "Sets the client's character set encoding." -msgstr "Codificación del juego de caracteres del cliente." +#: parser/analyze.c:1937 +msgid "CREATE TABLE AS specifies too many column names" +msgstr "CREATE TABLE AS especifica demasiados nombres de columna" -#: utils/misc/guc.c:2239 -msgid "Controls information prefixed to each log line." -msgstr "Controla el prefijo que antecede cada línea registrada." +#: parser/analyze.c:1995 +msgid "cannot use aggregate function in UPDATE" +msgstr "no se puede usar una función de agregación en UPDATE" -#: utils/misc/guc.c:2240 -msgid "If blank, no prefix is used." -msgstr "si está en blanco, no se usa prefijo." +#: parser/analyze.c:2001 +msgid "cannot use window function in UPDATE" +msgstr "no se puede usar una función de ventana deslizante en UPDATE" -#: utils/misc/guc.c:2248 -msgid "Sets the time zone to use in log messages." -msgstr "Define el huso horario usando en los mensajes registrados." +#: parser/analyze.c:2110 +msgid "cannot use aggregate function in RETURNING" +msgstr "no se puede usar una función de agregación en RETURNING" -#: utils/misc/guc.c:2257 -msgid "Sets the display format for date and time values." -msgstr "Formato de salida para valores de horas y fechas." +#: parser/analyze.c:2116 +msgid "cannot use window function in RETURNING" +msgstr "no se puede usar una función de ventana deslizante en RETURNING" -#: utils/misc/guc.c:2258 -msgid "Also controls interpretation of ambiguous date inputs." -msgstr "También controla la interpretación de entradas ambiguas de fechas" +#: parser/analyze.c:2135 +msgid "RETURNING cannot contain references to other relations" +msgstr "RETURNING no puede contener referencias a otras relaciones" -#: utils/misc/guc.c:2268 -msgid "Sets the default tablespace to create tables and indexes in." -msgstr "Define el tablespace en el cual crear tablas e índices." +#: parser/analyze.c:2174 +msgid "cannot specify both SCROLL and NO SCROLL" +msgstr "no se puede especificar SCROLL y NO SCROLL" -#: utils/misc/guc.c:2269 -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." +#: parser/analyze.c:2188 +msgid "DECLARE CURSOR cannot specify INTO" +msgstr "DECLARE CURSOR no puede especificar INTO" -#: utils/misc/guc.c:2278 -msgid "Sets the tablespace(s) to use for temporary tables and sort files." +#: parser/analyze.c:2200 +msgid "DECLARE CURSOR must not contain data-modifying statements in WITH" msgstr "" -"Define el/los tablespace/s en el cual crear tablas temporales y archivos de " -"ordenamiento." - -#: utils/misc/guc.c:2288 -msgid "Sets the path for dynamically loadable modules." -msgstr "Ruta para módulos dinámicos." +"DECLARE CURSOR no debe contener sentencias que modifiquen datos en WITH" -#: utils/misc/guc.c:2289 -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." +#: parser/analyze.c:2206 +msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE no está soportado" -#: utils/misc/guc.c:2301 -msgid "Sets the location of the Kerberos server key file." -msgstr "Ubicación del archivo de llave del servidor Kerberos." +#: parser/analyze.c:2207 +msgid "Holdable cursors must be READ ONLY." +msgstr "Los cursores declarados HOLD deben ser READ ONLY." -#: utils/misc/guc.c:2311 -msgid "Sets the name of the Kerberos service." -msgstr "Nombre del servicio Kerberos." +#: parser/analyze.c:2220 +msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE no está soportado" -#: utils/misc/guc.c:2320 -msgid "Sets the Bonjour service name." -msgstr "Nombre del servicio Bonjour." +#: parser/analyze.c:2221 +msgid "Insensitive cursors must be READ ONLY." +msgstr "Los cursores insensitivos deben ser READ ONLY." -#: utils/misc/guc.c:2331 -msgid "Shows the collation order locale." -msgstr "Configuración regional de ordenamiento de cadenas (collation)." +#: parser/analyze.c:2274 +msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause" +msgstr "SELECT FOR UPDATE/SHARE no está permitido con cláusulas DISTINCT" -#: utils/misc/guc.c:2341 -msgid "Shows the character classification and case conversion locale." -msgstr "" -"Configuración regional de clasificación de caracteres y conversión de " -"mayúsculas." +#: parser/analyze.c:2278 +msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause" +msgstr "SELECT FOR UPDATE/SHARE no está permitido con cláusulas GROUP BY" -#: utils/misc/guc.c:2351 -msgid "Sets the language in which messages are displayed." -msgstr "Idioma en el que se despliegan los mensajes." +#: parser/analyze.c:2282 +msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause" +msgstr "SELECT FOR UPDATE/SHARE no está permitido con cláusulas HAVING" -#: utils/misc/guc.c:2360 -msgid "Sets the locale for formatting monetary amounts." -msgstr "Configuración regional para formatos de moneda." +#: parser/analyze.c:2286 +msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions" +msgstr "SELECT FOR UPDATE/SHARE no está permitido con funciones de agregación" -#: utils/misc/guc.c:2369 -msgid "Sets the locale for formatting numbers." -msgstr "Configuración regional para formatos de números." +#: parser/analyze.c:2290 +msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions" +msgstr "" +"SELECT FOR UPDATE/SHARE no está permitido con funciones de ventana deslizante" -#: utils/misc/guc.c:2378 -msgid "Sets the locale for formatting date and time values." -msgstr "Configuración regional para formatos de horas y fechas." +#: parser/analyze.c:2294 +msgid "" +"SELECT FOR UPDATE/SHARE is not allowed with set-returning functions in the " +"target list" +msgstr "" +"SELECT FOR UPDATE/SHARE no está permitido con funciones que retornan " +"conjuntos en la lista de resultados" -#: utils/misc/guc.c:2387 -msgid "Lists shared libraries to preload into server." -msgstr "Bibliotecas compartidas a precargar en el servidor." +#: parser/analyze.c:2373 +msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names" +msgstr "" +"SELECT FOR UPDATE/SHARE debe especificar nombres de relaciones sin calificar" -#: utils/misc/guc.c:2397 -msgid "Lists shared libraries to preload into each backend." -msgstr "Bibliotecas compartidas a precargar en cada proceso." +#: parser/analyze.c:2390 +#, c-format +msgid "SELECT FOR UPDATE/SHARE cannot be used with foreign table \"%s\"" +msgstr "SELECT FOR UPDATE/SHARE no puede ser usado con la tabla foránea «%s»" -#: utils/misc/guc.c:2407 -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." +#: parser/analyze.c:2409 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join" +msgstr "SELECT FOR UPDATE/SHARE no puede ser aplicado a un join" -#: utils/misc/guc.c:2418 -msgid "Sets the server (database) character set encoding." -msgstr "Codificación de caracteres del servidor (bases de datos)." +#: parser/analyze.c:2415 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function" +msgstr "SELECT FOR UPDATE/SHARE no puede ser aplicado a una función" -#: utils/misc/guc.c:2429 -msgid "Shows the server version." -msgstr "Versión del servidor." +#: parser/analyze.c:2427 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query" +msgstr "SELECT FOR UPDATE/SHARE no puede ser aplicado a una consulta WITH" -#: utils/misc/guc.c:2440 -msgid "Sets the current role." -msgstr "Define el rol actual." +#: parser/analyze.c:2441 +#, c-format +msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause" +msgstr "" +"la relación «%s» en la cláusula FOR UPDATE/SHARE no fue encontrada en la " +"cláusula FROM" -#: utils/misc/guc.c:2451 -msgid "Sets the session user name." -msgstr "Define el nombre del usuario de sesión." +#: parser/parse_clause.c:421 +#, c-format +msgid "JOIN/ON clause refers to \"%s\", which is not part of JOIN" +msgstr "la cláusula JOIN/ON se refiere a «%s», que no es parte de JOIN" -#: utils/misc/guc.c:2461 -msgid "Sets the destination for server log output." -msgstr "Define el destino de la salida del registro del servidor." +#: parser/parse_clause.c:502 +msgid "subquery in FROM cannot have SELECT INTO" +msgstr "una subconsulta en FROM no puede tener SELECT INTO" -#: utils/misc/guc.c:2462 -msgid "" -"Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and " -"\"eventlog\", depending on the platform." +#: parser/parse_clause.c:524 +msgid "subquery in FROM cannot refer to other relations of same query level" msgstr "" -"Valores aceptables son combinaciones de «stderr», «syslog», «csvlog» y " -"«eventlog», dependiendo de la plataforma." +"una subconsulta en FROM no puede referirse a otras relaciones en el mismo " +"nivel de la consulta" -#: utils/misc/guc.c:2472 -msgid "Sets the destination directory for log files." +#: parser/parse_clause.c:580 +msgid "" +"function expression in FROM cannot refer to other relations of same query " +"level" msgstr "" -"Define el directorio de destino de los archivos del registro del servidor." +"una función en FROM no puede referirse a otras relaciones en el mismo nivel " +"de la consulta" -#: utils/misc/guc.c:2473 -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." +#: parser/parse_clause.c:593 +msgid "cannot use aggregate function in function expression in FROM" +msgstr "no se pueden usar funciones de agregación en una función en FROM" -#: utils/misc/guc.c:2482 -msgid "Sets the file name pattern for log files." +#: parser/parse_clause.c:600 +msgid "cannot use window function in function expression in FROM" msgstr "" -"Define el patrón para los nombres de archivo del registro del servidor." - -#: utils/misc/guc.c:2493 -msgid "Sets the program name used to identify PostgreSQL messages in syslog." -msgstr "Nombre de programa para identificar PostgreSQL en mensajes de syslog." +"no se pueden usar funciones de ventana deslizante en una función en FROM" -#: utils/misc/guc.c:2504 -msgid "Sets the time zone for displaying and interpreting time stamps." -msgstr "Huso horario para desplegar e interpretar valores de tiempo." +#: parser/parse_clause.c:877 +#, 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" -#: utils/misc/guc.c:2513 -msgid "Selects a file of time zone abbreviations." -msgstr "Selecciona un archivo de abreviaciones de huso horario." +#: parser/parse_clause.c:892 +#, 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" -#: utils/misc/guc.c:2522 -msgid "Sets the current transaction's isolation level." -msgstr "Define el nivel de aislación de la transacción en curso." +#: parser/parse_clause.c:901 +#, 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" -#: utils/misc/guc.c:2532 -msgid "Sets the owning group of the Unix-domain socket." -msgstr "Grupo dueño del socket de dominio Unix." +#: parser/parse_clause.c:915 +#, 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" -#: utils/misc/guc.c:2533 -msgid "" -"The owning user of the socket is always the user that starts the server." +#: parser/parse_clause.c:924 +#, c-format +msgid "column \"%s\" specified in USING clause does not exist in right table" msgstr "" -"El usuario dueño del socket siempre es el usuario que inicia el servidor." +"la columna «%s» especificada en la cláusula USING no existe en la tabla " +"derecha" -#: utils/misc/guc.c:2542 -msgid "Sets the directory where the Unix-domain socket will be created." -msgstr "Directorio donde ser creará el socket de dominio Unix." +#: parser/parse_clause.c:981 +#, c-format +msgid "column alias list for \"%s\" has too many entries" +msgstr "la lista de alias de columnas para «%s» tiene demasiadas entradas" -#: utils/misc/guc.c:2552 -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." +#. 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 "el argumento de %s no puede contener variables" -#: utils/misc/guc.c:2562 -msgid "Sets the list of known custom variable classes." -msgstr "Define la lista de clases adicionales de variables conocidas." +#. 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 "el argumento de %s no puede contener funciones de agregación" -#: utils/misc/guc.c:2572 -msgid "Sets the server's data directory." -msgstr "Define la ubicación del directorio de datos." +#. 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 "el argumento de %s no puede contener funciones de ventana deslizante" -#: utils/misc/guc.c:2582 -msgid "Sets the server's main configuration file." -msgstr "" -"Define la ubicación del archivo principal de configuración del servidor." +#. 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» es ambiguo" -#: utils/misc/guc.c:2592 -msgid "Sets the server's \"hba\" configuration file." -msgstr "Define la ubicación del archivo de configuración «hba» del servidor." +#. 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 "constante no entera en %s" -#: utils/misc/guc.c:2602 -msgid "Sets the server's \"ident\" configuration file." -msgstr "Define la ubicación del archivo de configuración «ident» del servidor." +#. 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 "la posición %2$d de %1$s no está en la lista de resultados" -#: utils/misc/guc.c:2612 -msgid "Writes the postmaster PID to the specified file." -msgstr "Registra el PID de postmaster en el archivo especificado." +#: parser/parse_clause.c:1625 +#, c-format +msgid "window \"%s\" is already defined" +msgstr "la ventana «%s» ya está definida" -#: utils/misc/guc.c:2622 -msgid "Writes temporary statistics files to the specified directory." -msgstr "" -"Escribe los archivos temporales de estadísticas al directorio especificado." +#: parser/parse_clause.c:1679 +#, 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»" -#: utils/misc/guc.c:2632 -msgid "Sets default text search configuration." -msgstr "Define la configuración de búsqueda en texto por omisión." +#: parser/parse_clause.c:1691 +#, 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»" -#: utils/misc/guc.c:2642 -msgid "Sets the list of allowed SSL ciphers." -msgstr "Define la lista de cifrados SSL permitidos." +#: parser/parse_clause.c:1713 +#, c-format +msgid "cannot override frame clause of window \"%s\"" +msgstr "no se puede pasar a llevar la cláusula de «frame» de la ventana «%s»" -#: utils/misc/guc.c:2653 -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." +#: parser/parse_clause.c:1779 +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" -#: utils/misc/guc.c:2672 -msgid "Sets whether \"\\'\" is allowed in string literals." -msgstr "Define si «\\'» está permitido en literales de cadena." +#: parser/parse_clause.c:1780 +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" -#: utils/misc/guc.c:2681 -msgid "Sets the output format for bytea." -msgstr "Formato de salida para bytea." +#: parser/parse_clause.c:1866 parser/parse_clause.c:1898 +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" -#: utils/misc/guc.c:2690 -msgid "Sets the message levels that are sent to the client." -msgstr "Nivel de mensajes enviados al cliente." +#: parser/parse_clause.c:2020 +#, c-format +msgid "operator %s is not a valid ordering operator" +msgstr "el operador «%s» no es un operador válido de ordenamiento" -#: utils/misc/guc.c:2691 utils/misc/guc.c:2740 utils/misc/guc.c:2750 -#: utils/misc/guc.c:2790 +#: parser/parse_clause.c:2022 msgid "" -"Each level includes all the levels that follow it. The later the level, the " -"fewer messages are sent." +"Ordering operators must be \"<\" or \">\" members of btree operator families." msgstr "" -"Cada nivel incluye todos los niveles que lo siguen. Mientras más posterior " -"el nivel, menos mensajes se enviarán." +"Los operadores de ordenamiento deben ser miembros «<» o «>» de una familia " +"de operadores btree." -#: utils/misc/guc.c:2700 -msgid "Enables the planner to use constraints to optimize queries." -msgstr "Permitir el uso de restricciones para limitar los accesos a tablas." +#: parser/parse_expr.c:366 parser/parse_expr.c:759 +#, c-format +msgid "column %s.%s does not exist" +msgstr "no existe la columna %s.%s" -#: utils/misc/guc.c:2701 -msgid "" -"Table scans will be skipped if their constraints guarantee that no rows " -"match the query." +#: parser/parse_expr.c:378 +#, 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:384 +#, 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:390 +#, c-format +msgid "column notation .%s applied to type %s, which is not a composite type" msgstr "" -"Las tablas no serán recorridas si sus restricciones garantizan que ninguna " -"fila coincidirá con la consulta." +"la notación de columna .%s fue aplicada al tipo %s, que no es un tipo " +"compuesto" -#: utils/misc/guc.c:2711 -msgid "Sets the transaction isolation level of each new transaction." -msgstr "Nivel de aislación (isolation level) de transacciones nuevas." +#: parser/parse_expr.c:420 parser/parse_target.c:618 +msgid "row expansion via \"*\" is not supported here" +msgstr "la expansión de filas a través de «*» no está soportado aquí" -#: utils/misc/guc.c:2720 -msgid "Sets the display format for interval values." -msgstr "Formato de salida para valores de intervalos." +#: parser/parse_expr.c:743 parser/parse_target.c:1065 +#: parser/parse_relation.c:479 parser/parse_relation.c:559 +#, c-format +msgid "column reference \"%s\" is ambiguous" +msgstr "la referencia a la columna «%s» es ambigua" -#: utils/misc/guc.c:2730 -msgid "Sets the verbosity of logged messages." -msgstr "Verbosidad de los mensajes registrados." +#: 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 +#, c-format +msgid "there is no parameter $%d" +msgstr "no hay parámetro $%d" -#: utils/misc/guc.c:2739 -msgid "Sets the message levels that are logged." -msgstr "Nivel de mensajes registrados." +#: parser/parse_expr.c:1023 +msgid "NULLIF requires = operator to yield boolean" +msgstr "NULLIF requiere que el operador = retorne boolean" -#: utils/misc/guc.c:2749 -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." +#: parser/parse_expr.c:1416 +msgid "subquery cannot have SELECT INTO" +msgstr "una subconsulta no puede tener SELECT INTO" -#: utils/misc/guc.c:2759 -msgid "Sets the type of statements logged." -msgstr "Define el tipo de sentencias que se registran." +#: parser/parse_expr.c:1444 +msgid "subquery must return a column" +msgstr "la subconsulta debe retornar una columna" -#: utils/misc/guc.c:2769 -msgid "Sets the syslog \"facility\" to be used when syslog enabled." -msgstr "«Facility» de syslog que se usará cuando syslog esté habilitado." +#: parser/parse_expr.c:1451 +msgid "subquery must return only one column" +msgstr "la subconsulta debe retornar sólo una columna" -#: utils/misc/guc.c:2779 -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." +#: parser/parse_expr.c:1511 +msgid "subquery has too many columns" +msgstr "la subconsulta tiene demasiadas columnas" -#: utils/misc/guc.c:2789 -msgid "Enables logging of recovery-related debugging information." -msgstr "Recolectar información de depuración relacionada con la recuperación." +#: parser/parse_expr.c:1516 +msgid "subquery has too few columns" +msgstr "la subconsulta tiene muy pocas columnas" -#: utils/misc/guc.c:2803 -msgid "Collects function-level statistics on database activity." -msgstr "Recolectar estadísticas de actividad de funciones en la base de datos." +#: parser/parse_expr.c:1612 +msgid "cannot determine type of empty array" +msgstr "no se puede determinar el tipo de un array vacío" -#: utils/misc/guc.c:2812 -msgid "Set the level of information written to the WAL." -msgstr "Nivel de información escrita a WAL." +#: parser/parse_expr.c:1613 +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[]." -#: utils/misc/guc.c:2821 -msgid "Selects the method used for forcing WAL updates to disk." -msgstr "Selecciona el método usado para forzar escritura de WAL a disco." +#: parser/parse_expr.c:1627 +#, 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" -#: utils/misc/guc.c:2831 -msgid "Sets how binary values are to be encoded in XML." -msgstr "Define cómo se codificarán los valores binarios en XML." +#: parser/parse_expr.c:1841 +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" -#: utils/misc/guc.c:2840 -msgid "" -"Sets whether XML data in implicit parsing and serialization operations is to " -"be considered as documents or content fragments." +#: parser/parse_expr.c:1842 +msgid "unnamed XML element value must be a column reference" msgstr "" -"Define si los datos XML implícitos en operaciones de análisis y " -"serialización serán considerados documentos o fragmentos de contenido." +"el valor del elemento XML sin nombre debe ser una referencia a una columna" -#: utils/misc/guc.c:3612 +#: parser/parse_expr.c:1857 #, 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 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" +msgid "XML attribute name \"%s\" appears more than once" +msgstr "el nombre de atributo XML «%s» aparece más de una vez" -#: utils/misc/guc.c:3631 +#: parser/parse_expr.c:1964 #, 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" +msgid "cannot cast XMLSERIALIZE result to %s" +msgstr "no se puede convertir el resultado de XMLSERIALIZE a %s" + +#: parser/parse_expr.c:2207 parser/parse_expr.c:2407 +msgid "unequal number of entries in row expressions" +msgstr "número desigual de entradas en expresiones de registro" + +#: parser/parse_expr.c:2217 +msgid "cannot compare rows of zero length" +msgstr "no se pueden comparar registros de largo cero" -#: utils/misc/guc.c:3651 +#: parser/parse_expr.c:2242 #, 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" +msgid "row comparison operator must yield type boolean, not type %s" 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" +"el operador de comparación de registros debe retornar tipo boolean, no tipo " +"%s" + +#: parser/parse_expr.c:2249 +msgid "row comparison operator must not return a set" +msgstr "el operador de comparación de registros no puede retornar un conjunto" -#: utils/misc/guc.c:3682 +#: parser/parse_expr.c:2308 parser/parse_expr.c:2353 #, 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" +msgid "could not determine interpretation of row comparison operator %s" 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" +"no se pudo determinar la interpretación del operador de comparación de " +"registros %s" -#: utils/misc/guc.c:3705 -#, c-format +#: parser/parse_expr.c:2310 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" +"Row comparison operators must be associated with btree operator families." 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:4310 utils/misc/guc.c:4474 -msgid "Value exceeds integer range." -msgstr "El valor excede el rango para enteros." - -#: utils/misc/guc.c:4329 -msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"." -msgstr "Unidades válidas para este parámetro son «kB», «MB» y «GB»." +"Los operadores de comparación de registros deben estar asociados a una " +"familia de operadores btree." -#: utils/misc/guc.c:4388 -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»." +#: parser/parse_expr.c:2355 +msgid "There are multiple equally-plausible candidates." +msgstr "Hay múltiples candidatos igualmente plausibles." -#: utils/misc/guc.c:4697 utils/misc/guc.c:5361 utils/misc/guc.c:5411 -#: utils/misc/guc.c:6115 utils/misc/guc.c:6274 utils/misc/guc.c:7496 -#: guc-file.l:217 -#, c-format -msgid "unrecognized configuration parameter \"%s\"" -msgstr "parámetro de configuración no reconocido: «%s»" +#: parser/parse_expr.c:2447 +msgid "IS DISTINCT FROM requires = operator to yield boolean" +msgstr "IS DISTINCT FROM requiere que el operador = retorne boolean" -#: utils/misc/guc.c:4724 +#: parser/parse_target.c:383 parser/parse_target.c:671 #, c-format -msgid "parameter \"%s\" cannot be changed" -msgstr "no se puede cambiar el parámetro «%s»" +msgid "cannot assign to system column \"%s\"" +msgstr "no se puede asignar a la columna de sistema «%s»" -#: utils/misc/guc.c:4741 utils/misc/guc.c:4749 guc-file.l:264 -#, 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" +#: parser/parse_target.c:411 +msgid "cannot set an array element to DEFAULT" +msgstr "no se puede definir un elemento de array a DEFAULT" -#: utils/misc/guc.c:4759 -#, c-format -msgid "parameter \"%s\" cannot be changed now" -msgstr "el parámetro «%s» no se puede cambiar en este momento" +#: parser/parse_target.c:416 +msgid "cannot set a subfield to DEFAULT" +msgstr "no se puede definir un subcampo a DEFAULT" -#: utils/misc/guc.c:4790 +#: parser/parse_target.c:485 #, 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" +msgid "column \"%s\" is of type %s but expression is of type %s" +msgstr "la columna «%s» es de tipo %s pero la expresión es de tipo %s" -#: utils/misc/guc.c:4800 utils/misc/guc.c:7511 +#: parser/parse_target.c:655 #, c-format -msgid "permission denied to set parameter \"%s\"" -msgstr "se ha denegado el permiso para cambiar la opción «%s»" +msgid "" +"cannot assign to field \"%s\" of column \"%s\" because its type %s is not a " +"composite type" +msgstr "" +"no se puede asignar al campo «%s» de la columna «%s» porque su tipo %s no es " +"un tipo compuesto" -#: utils/misc/guc.c:4838 +#: parser/parse_target.c:664 #, c-format -msgid "cannot set parameter \"%s\" within security-definer function" +msgid "" +"cannot assign to field \"%s\" of column \"%s\" because there is no such " +"column in data type %s" msgstr "" -"no se puede definir el parámetro «%s» dentro una función security-definer" +"no se puede asignar al campo «%s» de la columna «%s» porque no existe esa " +"columna en el tipo de dato %s" -#: utils/misc/guc.c:4846 utils/init/miscinit.c:380 +#: parser/parse_target.c:731 #, c-format -msgid "cannot set parameter \"%s\" within security-restricted operation" +msgid "" +"array assignment to \"%s\" requires type %s but expression is of type %s" msgstr "" -"no se puede definir el parámetro «%s» dentro de una operación restringida " -"por seguridad" +"la asignación de array a «%s» requiere tipo %s pero la expresión es de tipo " +"%s" -#: utils/misc/guc.c:4917 utils/misc/guc.c:4992 +#: parser/parse_target.c:741 #, c-format -msgid "invalid value for parameter \"%s\": %d" -msgstr "valor no válido para el parámetro «%s»: %d" +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" -#: utils/misc/guc.c:4961 utils/misc/guc.c:5163 utils/misc/guc.c:5229 -#: utils/misc/guc.c:5255 guc-file.l:178 -#, c-format -msgid "invalid value for parameter \"%s\": \"%s\"" -msgstr "valor no válido para el parámetro «%s»: «%s»" +#: parser/parse_target.c:1127 +msgid "SELECT * with no tables specified is not valid" +msgstr "SELECT * sin especificar tablas no es válido" -#: utils/misc/guc.c:4970 +#: parser/parse_param.c:215 #, 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)" +msgid "inconsistent types deduced for parameter $%d" +msgstr "para el parámetro $%d se dedujeron tipos de dato inconsistentes" -#: utils/misc/guc.c:5034 +#: parser/parse_node.c:83 #, c-format -msgid "parameter \"%s\" requires a numeric value" -msgstr "parámetro «%s» requiere un valor numérico" +msgid "target lists can have at most %d entries" +msgstr "las listas de resultados pueden tener a lo más %d entradas" -#: utils/misc/guc.c:5042 +#: parser/parse_node.c:240 #, 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)" +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" -#: utils/misc/guc.c:5064 -#, c-format -msgid "invalid value for parameter \"%s\": %g" -msgstr "valor no válido para el parámetro «%s»: %g" +#: parser/parse_node.c:342 parser/parse_node.c:369 +msgid "array subscript must have type integer" +msgstr "los subíndices de arrays deben tener tipo entero" -#: utils/misc/guc.c:5367 utils/misc/guc.c:5415 utils/misc/guc.c:6278 +#: parser/parse_node.c:393 #, c-format -msgid "must be superuser to examine \"%s\"" -msgstr "debe ser superusuario para examinar «%s»" +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" -#: utils/misc/guc.c:5526 +#: parser/parse_collate.c:214 parser/parse_collate.c:538 #, c-format -msgid "SET %s takes only one argument" -msgstr "SET %s lleva sólo un argumento" +msgid "collation mismatch between implicit collations \"%s\" and \"%s\"" +msgstr "" +"discordancia de ordenamientos (collation) entre los ordenamientos implícitos " +"«%s» y «%s»" -#: utils/misc/guc.c:5753 -msgid "SET requires parameter name" -msgstr "SET requiere el nombre de un parámetro" +#: 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 "" +"Puede elegir el ordenamiento aplicando la cláusula COLLATE a una o ambas " +"expresiones." -#: utils/misc/guc.c:5868 +#: parser/parse_collate.c:763 #, c-format -msgid "attempt to redefine parameter \"%s\"" -msgstr "intento de cambiar la opción «%s»" +msgid "collation mismatch between explicit collations \"%s\" and \"%s\"" +msgstr "" +"discordancia de ordenamientos (collation) entre los ordenamientos explícitos " +"«%s» y «%s»" -#: utils/misc/guc.c:7212 +#: parser/parse_relation.c:148 #, 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:7555 -msgid "invalid list syntax for parameter \"log_destination\"" -msgstr "la sintaxis de lista no es válida para el parámetro «log_destination»" +msgid "table reference \"%s\" is ambiguous" +msgstr "la referencia a la tabla «%s» es ambigua" -#: utils/misc/guc.c:7579 +#: parser/parse_relation.c:184 #, c-format -msgid "unrecognized \"log_destination\" key word: \"%s\"" -msgstr "palabra clave de «log_destination» no reconocida: «%s»" - -#: utils/misc/guc.c:7654 -msgid "SET AUTOCOMMIT TO OFF is no longer supported" -msgstr "SET AUTOCOMMIT TO OFF ya no está soportado" +msgid "table reference %u is ambiguous" +msgstr "la referencia a la tabla %u es ambigua" -#: utils/misc/guc.c:7726 -msgid "assertion checking is not supported by this build" -msgstr "" -"la revisión de aseveraciones (asserts) no está soportada en este servidor" +#: parser/parse_relation.c:344 +#, c-format +msgid "table name \"%s\" specified more than once" +msgstr "el nombre de tabla «%s» fue especificado más de una vez" -#: utils/misc/guc.c:7741 -msgid "Bonjour is not supported by this build" -msgstr "Bonjour no está soportado en este servidor" +#: parser/parse_relation.c:763 parser/parse_relation.c:1054 +#: parser/parse_relation.c:1441 +#, c-format +msgid "table \"%s\" has %d columns available but %d columns specified" +msgstr "la tabla «%s» tiene %d columnas pero se especificaron %d" -#: utils/misc/guc.c:7756 -msgid "SSL is not supported by this build" -msgstr "SSL no está soportado en este servidor" +#: parser/parse_relation.c:793 +#, c-format +msgid "too many column aliases specified for function %s" +msgstr "se especificaron demasiados alias de columna para la función %s" -#: utils/misc/guc.c:7770 -msgid "cannot enable parameter when \"log_statement_stats\" is true" +#: parser/parse_relation.c:859 +#, c-format +msgid "" +"There is a WITH item named \"%s\", but it cannot be referenced from this " +"part of the query." msgstr "" -"no se puede activar el parámetro cuando «log_statement_stats» es verdadero" +"Hay un elemento WITH llamado «%s», pero no puede ser referenciada desde esta " +"parte de la consulta." -#: utils/misc/guc.c:7786 +#: parser/parse_relation.c:861 msgid "" -"cannot enable \"log_statement_stats\" when \"log_parser_stats\", " -"\"log_planner_stats\", or \"log_executor_stats\" is true" +"Use WITH RECURSIVE, or re-order the WITH items to remove forward references." msgstr "" -"no se puede activar «log_statement_stats» cuando " -"«log_parser_stats»,«log_planner_stats» o «log_executor_stats» están activos." +"Use WITH RECURSIVE, o reordene los elementos de WITH para eliminar " +"referencias hacia adelante." -#: utils/misc/guc.c:7804 -msgid "cannot set transaction read-write mode inside a read-only transaction" +#: parser/parse_relation.c:1134 +msgid "" +"a column definition list is only allowed for functions returning \"record\"" msgstr "" -"no se puede poner en modo de escritura dentro de una transacción de sólo " -"lectura" +"sólo se permite una lista de definición de columnas en funciones que " +"retornan «record»" -#: utils/misc/guc.c:7815 -msgid "cannot set transaction read-write mode during recovery" -msgstr "no se puede poner en modo de escritura durante la recuperación" +#: parser/parse_relation.c:1142 +msgid "a column definition list is required for functions returning \"record\"" +msgstr "" +"se requiere una lista de definición de columnas para funciones que retornan " +"«record»" -#: utils/misc/help_config.c:131 -msgid "internal error: unrecognized run-time parameter type\n" -msgstr "error interno: tipo parámetro no reconocido\n" +#: parser/parse_relation.c:1193 +#, 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" -#: guc-file.l:288 +#: parser/parse_relation.c:1267 #, c-format -msgid "parameter \"%s\" removed from configuration file, reset to default" +msgid "VALUES lists \"%s\" have %d columns available but %d columns specified" msgstr "" -"parámetro «%s» eliminado del archivo de configuración, volviendo al valor " -"por omisión" +"la lista VALUES «%s» tiene %d columnas disponibles pero se especificaron %d" -#: guc-file.l:344 +#: parser/parse_relation.c:1323 #, c-format -msgid "parameter \"%s\" changed to \"%s\"" -msgstr "el parámetro «%s» fue cambiado a «%s»" +msgid "joins can have at most %d columns" +msgstr "los joins pueden tener a lo más %d columnas" -#: guc-file.l:412 +#: parser/parse_relation.c:1414 #, c-format -msgid "" -"could not open configuration file \"%s\": maximum nesting depth exceeded" +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:2104 +#, 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:2489 +#, c-format +msgid "invalid reference to FROM-clause entry for table \"%s\"" msgstr "" -"no se pudo abrir el archivo de configuración «%s»: nivel de anidamiento " -"máximo excedido" +"referencia a la entrada de la cláusula FROM para la tabla «%s» no válida" -#: guc-file.l:575 +#: parser/parse_relation.c:2492 #, c-format -msgid "syntax error in file \"%s\" line %u, near end of line" -msgstr "error de sintaxis en el archivo «%s» línea %u, cerca del fin de línea" +msgid "Perhaps you meant to reference the table alias \"%s\"." +msgstr "Probablemente quiera hacer referencia al alias de la tabla «%s»." -#: guc-file.l:580 +#: parser/parse_relation.c:2494 #, c-format -msgid "syntax error in file \"%s\" line %u, near token \"%s\"" +msgid "" +"There is an entry for table \"%s\", but it cannot be referenced from this " +"part of the query." msgstr "" -"error de sintaxis en el archivo «%s» línea %u, cerca de la palabra «%s»" +"Hay una entrada para la tabla «%s», pero no puede ser referenciada desde " +"esta parte de la consulta." -#: utils/error/assert.c:37 -msgid "TRAP: ExceptionalCondition: bad arguments\n" -msgstr "TRAP: ExceptionalConditions: argumentos erróneos\n" +#: parser/parse_relation.c:2500 +#, c-format +msgid "missing FROM-clause entry for table \"%s\"" +msgstr "falta una entrada para la tabla «%s» en la cláusula FROM" + +#: scan.l:411 +msgid "unterminated /* comment" +msgstr "un comentario /* está inconcluso" + +#: scan.l:440 +msgid "unterminated bit string literal" +msgstr "una cadena de bits está inconclusa" + +#: scan.l:461 +msgid "unterminated hexadecimal string literal" +msgstr "una cadena hexadecimal está inconclusa" + +#: scan.l:511 +msgid "unsafe use of string constant with Unicode escapes" +msgstr "uso inseguro de literal de cadena con escapes Unicode" -#: utils/error/assert.c:40 -#, c-format -msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n" -msgstr "TRAP: %s(«%s», Archivo: «%s», Línea: %d)\n" +#: scan.l:512 +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." -#: utils/error/elog.c:1413 -#, c-format -msgid "could not reopen file \"%s\" as stderr: %m" -msgstr "no se pudo reabrir «%s» para error estándar: %m" +#: 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 "par sustituto (surrogate) Unicode no válido" -#: utils/error/elog.c:1426 -#, c-format -msgid "could not reopen file \"%s\" as stdout: %m" -msgstr "no se pudo reabrir «%s» para usar como salida estándar: %m" +#: scan.l:586 +msgid "invalid Unicode escape" +msgstr "valor de escape Unicode no válido" -#: utils/error/elog.c:1811 utils/error/elog.c:1821 utils/error/elog.c:1831 -msgid "[unknown]" -msgstr "[desconocido]" +#: scan.l:587 +msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX." +msgstr "Los escapes Unicode deben ser \\uXXXX o \\UXXXXXXXX." -#: utils/error/elog.c:2179 utils/error/elog.c:2459 utils/error/elog.c:2537 -msgid "missing error text" -msgstr "falta un texto de mensaje de error" +#: scan.l:598 +msgid "unsafe use of \\' in a string literal" +msgstr "uso inseguro de \\' en un literal de cadena" -#: utils/error/elog.c:2182 utils/error/elog.c:2185 utils/error/elog.c:2540 -#: utils/error/elog.c:2543 -#, c-format -msgid " at character %d" -msgstr " en carácter %d" +#: scan.l:599 +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." -#: utils/error/elog.c:2195 utils/error/elog.c:2202 -msgid "DETAIL: " -msgstr "DETALLE: " +#: scan.l:674 +msgid "unterminated dollar-quoted string" +msgstr "una cadena separada por $ está inconclusa" -#: utils/error/elog.c:2209 -msgid "HINT: " -msgstr "HINT: " +#: scan.l:691 scan.l:703 scan.l:717 +msgid "zero-length delimited identifier" +msgstr "un identificador delimitado tiene largo cero" -#: utils/error/elog.c:2216 -msgid "QUERY: " -msgstr "CONSULTA: " +#: scan.l:730 +msgid "unterminated quoted identifier" +msgstr "un identificador entre comillas está inconcluso" -#: utils/error/elog.c:2223 -msgid "CONTEXT: " -msgstr "CONTEXTO: " +#: scan.l:834 +msgid "operator too long" +msgstr "el operador es demasiado largo" -#: utils/error/elog.c:2233 +#. translator: %s is typically the translation of "syntax error" +#: scan.l:992 #, c-format -msgid "LOCATION: %s, %s:%d\n" -msgstr "UBICACIÓN: %s, %s:%d\n" +msgid "%s at end of input" +msgstr "%s al final de la entrada" -#: utils/error/elog.c:2240 +#. translator: first %s is typically the translation of "syntax error" +#: scan.l:1000 #, c-format -msgid "LOCATION: %s:%d\n" -msgstr "UBICACIÓN: %s:%d\n" - -#: utils/error/elog.c:2254 -msgid "STATEMENT: " -msgstr "SENTENCIA: " +msgid "%s at or near \"%s\"" +msgstr "%s en o cerca de «%s»" -#. translator: This string will be truncated at 47 -#. characters expanded. -#: utils/error/elog.c:2652 -#, c-format -msgid "operating system error %d" -msgstr "error %d de sistema operativo" +#: 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 "" +"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" -#: utils/error/elog.c:2675 -msgid "DEBUG" -msgstr "DEBUG" +#: scan.l:1189 scan.l:1325 +msgid "invalid Unicode escape value" +msgstr "valor de escape Unicode no válido" -#: utils/error/elog.c:2679 -msgid "LOG" -msgstr "LOG" +#: scan.l:1214 +msgid "invalid Unicode escape character" +msgstr "carácter de escape Unicode no válido" -#: utils/error/elog.c:2682 -msgid "INFO" -msgstr "INFO" +#: scan.l:1381 +msgid "nonstandard use of \\' in a string literal" +msgstr "uso no estandar de \\' en un literal de cadena" -#: utils/error/elog.c:2685 -msgid "NOTICE" -msgstr "NOTICE" +#: scan.l:1382 +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'...')." -#: utils/error/elog.c:2688 -msgid "WARNING" -msgstr "WARNING" +#: scan.l:1391 +msgid "nonstandard use of \\\\ in a string literal" +msgstr "uso no estandar de \\\\ en un literal de cadena" -#: utils/error/elog.c:2691 -msgid "ERROR" -msgstr "ERROR" +#: scan.l:1392 +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'\\\\')." -#: utils/error/elog.c:2694 -msgid "FATAL" -msgstr "FATAL" +#: scan.l:1406 +msgid "nonstandard use of escape in a string literal" +msgstr "uso no estandar de escape en un literal de cadena" -#: utils/error/elog.c:2697 -msgid "PANIC" -msgstr "PANIC" +#: scan.l:1407 +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'." -#: utils/fmgr/dfmgr.c:125 -#, c-format -msgid "could not find function \"%s\" in file \"%s\"" -msgstr "no se encuentra la función «%s» en el archivo «%s»" +#: parser/parse_oper.c:221 +msgid "Use an explicit ordering operator or modify the query." +msgstr "Use un operador de ordenamiento explícito o modifique la consulta." -#: utils/fmgr/dfmgr.c:204 utils/fmgr/dfmgr.c:413 utils/fmgr/dfmgr.c:461 +#: parser/parse_oper.c:476 #, c-format -msgid "could not access file \"%s\": %m" -msgstr "no se pudo acceder al archivo «%s»: %m" +msgid "operator requires run-time type coercion: %s" +msgstr "el operador requiere conversión explícita de tipos: %s" -#: utils/fmgr/dfmgr.c:242 +#: parser/parse_oper.c:710 #, c-format -msgid "could not load library \"%s\": %s" -msgstr "no se pudo cargar la biblioteca «%s»: %s" +msgid "operator is not unique: %s" +msgstr "el operador no es único: %s" -#: utils/fmgr/dfmgr.c:274 -#, c-format -msgid "incompatible library \"%s\": missing magic block" -msgstr "biblioteca «%s» incompatible: no se encuentra el bloque mágico" +#: parser/parse_oper.c:712 +msgid "" +"Could not choose a best candidate operator. You might need to add explicit " +"type casts." +msgstr "" +"No se pudo escoger el operador más adecuado. Puede ser necesario agregar " +"conversiones explícitas de tipos." -#: utils/fmgr/dfmgr.c:276 -msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro." +#: parser/parse_oper.c:720 +msgid "" +"No operator matches the given name and argument type(s). You might need to " +"add explicit type casts." msgstr "" -"Se requiere que las bibliotecas de extensión usen la macro PG_MODULE_MAGIC." +"Ningún operador coincide con el nombre y el tipo de los argumentos. Puede " +"ser necesario agregar conversiones explícitas de tipos." -#: utils/fmgr/dfmgr.c:312 +#: parser/parse_oper.c:779 parser/parse_oper.c:893 #, c-format -msgid "incompatible library \"%s\": version mismatch" -msgstr "biblioteca «%s» incompatible: versión no coincide" +msgid "operator is only a shell: %s" +msgstr "el operador está inconcluso: %s" -#: utils/fmgr/dfmgr.c:314 -#, c-format -msgid "Server is version %d.%d, library is version %d.%d." -msgstr "Servidor tiene versión %d.%d, biblioteca es versión %d.%d." +#: parser/parse_oper.c:881 +msgid "op ANY/ALL (array) requires array on right side" +msgstr "op ANY/ALL (array) requiere un array al lado derecho" -#: utils/fmgr/dfmgr.c:333 -#, c-format -msgid "Server has FUNC_MAX_ARGS = %d, library has %d." -msgstr "El servidor tiene FUNC_MAX_ARGS = %d, la librería tiene %d" +#: parser/parse_oper.c:923 +msgid "op ANY/ALL (array) requires operator to yield boolean" +msgstr "op ANY/ALL (array) requiere un operador que entregue boolean" -#: utils/fmgr/dfmgr.c:342 -#, c-format -msgid "Server has INDEX_MAX_KEYS = %d, library has %d." -msgstr "El servidor tiene INDEX_MAX_KEYS = %d, la librería tiene %d" +#: parser/parse_oper.c:928 +msgid "op ANY/ALL (array) requires operator not to return a set" +msgstr "op ANY/ALL (array) requiere un operador que no retorne un conjunto" -#: utils/fmgr/dfmgr.c:351 +#: parser/parse_func.c:147 #, c-format -msgid "Server has NAMEDATALEN = %d, library has %d." -msgstr "El servidor tiene NAMEDATALEN = %d, la librería tiene %d" +msgid "argument name \"%s\" used more than once" +msgstr "el nombre de argumento «%s» fue especificado más de una vez" -#: utils/fmgr/dfmgr.c:360 -#, c-format -msgid "Server has FLOAT4PASSBYVAL = %s, library has %s." -msgstr "El servidor tiene FLOAT4PASSBYVAL = %s, la librería tiene %s" +#: parser/parse_func.c:158 +msgid "positional argument cannot follow named argument" +msgstr "un argumento posicional no puede seguir a un argumento con nombre" -#: utils/fmgr/dfmgr.c:369 +#: parser/parse_func.c:236 #, c-format -msgid "Server has FLOAT8PASSBYVAL = %s, library has %s." -msgstr "El servidor tiene FLOAT8PASSBYVAL = %s, la librería tiene %s" +msgid "%s(*) specified, but %s is not an aggregate function" +msgstr "se especificó %s(*), pero %s no es una función de agregación" -#: utils/fmgr/dfmgr.c:376 -msgid "Magic block has unexpected length or padding difference." -msgstr "" -"El bloque mágico tiene un largo inesperado, o una diferencia de relleno." +#: parser/parse_func.c:243 +#, 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" -#: utils/fmgr/dfmgr.c:379 +#: parser/parse_func.c:249 #, c-format -msgid "incompatible library \"%s\": magic block mismatch" -msgstr "biblioteca «%s» incompatible: bloque mágico no coincide" +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" -#: utils/fmgr/dfmgr.c:545 +#: parser/parse_func.c:255 #, c-format -msgid "access to library \"%s\" is not allowed" -msgstr "no está permitido el acceso a la biblioteca «%s»" +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" -#: utils/fmgr/dfmgr.c:572 +#: parser/parse_func.c:277 #, 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" +msgid "function %s is not unique" +msgstr "la función %s no es única" -#: utils/fmgr/dfmgr.c:617 -msgid "zero-length component in parameter \"dynamic_library_path\"" +#: parser/parse_func.c:280 +msgid "" +"Could not choose a best candidate function. You might need to add explicit " +"type casts." msgstr "" -"se encontró componente de largo cero en el parámetro «dynamic_library_path»" +"No se pudo escoger la función más adecuada. Puede ser necesario agregar " +"conversiones explícitas de tipos." -#: utils/fmgr/dfmgr.c:636 -msgid "component in parameter \"dynamic_library_path\" is not an absolute path" +#: 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 "" +"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:302 +msgid "" +"No function matches the given name and argument types. You might need to add " +"explicit type casts." msgstr "" -"un componente en el parámetro «dynamic_library_path» no es una ruta absoluta" +"Ninguna función coincide en el nombre y tipos de argumentos. Puede ser " +"necesario agregar conversión explícita de tipos." -#: utils/fmgr/fmgr.c:264 +#: parser/parse_func.c:412 parser/parse_func.c:478 #, 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" +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" -#: utils/fmgr/fmgr.c:468 -#, 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»" +#: parser/parse_func.c:419 +msgid "aggregates cannot return sets" +msgstr "las funciones de agregación no pueden retornar conjuntos" -#: utils/fmgr/fmgr.c:839 utils/fmgr/fmgr.c:2071 -#, 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)" +#: parser/parse_func.c:431 +msgid "aggregates cannot use named arguments" +msgstr "las funciones de agregación no pueden usar argumentos con nombre" -#: utils/fmgr/funcapi.c:354 -#, c-format -msgid "" -"could not determine actual result type for function \"%s\" declared to " -"return type %s" +#: parser/parse_func.c:450 +msgid "window function call requires an OVER clause" msgstr "" -"no se pudo determinar el tipo verdadero de resultado para la función «%s» " -"declarada retornando tipo %s" +"la invocación de una función de ventana deslizante requiere una cláusula OVER" -#: utils/fmgr/funcapi.c:1187 utils/fmgr/funcapi.c:1218 -msgid "number of aliases does not match number of columns" -msgstr "el número de aliases no calza con el número de columnas" +#: parser/parse_func.c:468 +msgid "DISTINCT is not implemented for window functions" +msgstr "DISTINCT no está implementado para funciones de ventana deslizante" -#: utils/fmgr/funcapi.c:1212 -msgid "no column alias was provided" -msgstr "no se entregó alias de columna" +#: parser/parse_func.c:488 +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" -#: utils/fmgr/funcapi.c:1236 -msgid "could not determine row description for function returning record" +#: parser/parse_func.c:494 +msgid "window functions cannot return sets" +msgstr "las funciones de ventana deslizante no pueden retornar conjuntos" + +#: parser/parse_func.c:505 +msgid "window functions cannot use named arguments" msgstr "" -"no se pudo encontrar descripción de registro de función que retorna record" +"las funciones de ventana deslizante no pueden usar argumentos con nombre" -#: utils/init/miscinit.c:114 +#: parser/parse_func.c:1589 #, c-format -msgid "could not change directory to \"%s\": %m" -msgstr "no se pudo cambiar al directorio «%s»: %m" +msgid "aggregate %s(*) does not exist" +msgstr "no existe la función de agregación %s(*)" -#: utils/init/miscinit.c:441 +#: parser/parse_func.c:1594 #, c-format -msgid "role \"%s\" is not permitted to log in" -msgstr "al rol «%s» no se le permite conectarse" +msgid "aggregate %s does not exist" +msgstr "no existe la función de agregación %s" -#: utils/init/miscinit.c:459 +#: parser/parse_func.c:1613 #, c-format -msgid "too many connections for role \"%s\"" -msgstr "demasiadas conexiones para el rol «%s»" +msgid "function %s is not an aggregate" +msgstr "la función %s no es una función de agregación" -#: utils/init/miscinit.c:519 -msgid "permission denied to set session authorization" -msgstr "se ha denegado el permiso para cambiar el usuario actual" +#: parser/parse_type.c:83 +#, c-format +msgid "improper %%TYPE reference (too few dotted names): %s" +msgstr "referencia %%TYPE inapropiada (muy pocos nombres con punto): %s" -#: utils/init/miscinit.c:599 +#: parser/parse_type.c:105 #, c-format -msgid "invalid role OID: %u" -msgstr "el OID de rol no es válido: %u" +msgid "improper %%TYPE reference (too many dotted names): %s" +msgstr "" +"la referencia a %%TYPE es inapropiada (demasiados nombres con punto): %s" -#: utils/init/miscinit.c:731 +#: parser/parse_type.c:127 #, c-format -msgid "could not create lock file \"%s\": %m" -msgstr "no se pudo crear el archivo de bloqueo «%s»: %m" +msgid "type reference %s converted to %s" +msgstr "la referencia al tipo %s convertida a %s" -#: utils/init/miscinit.c:745 +#: parser/parse_type.c:287 #, c-format -msgid "could not open lock file \"%s\": %m" -msgstr "no se pudo abrir el archivo de bloqueo «%s»: %m" +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:330 +msgid "type modifiers must be simple constants or identifiers" +msgstr "" +"los modificadores de tipo deben ser constantes simples o identificadores" -#: utils/init/miscinit.c:751 +#: parser/parse_type.c:641 parser/parse_type.c:740 #, c-format -msgid "could not read lock file \"%s\": %m" -msgstr "no se pudo leer el archivo de bloqueo «%s»: %m" +msgid "invalid type name \"%s\"" +msgstr "el nombre de tipo «%s» no es válido" -#: utils/init/miscinit.c:799 +#: parser/scansup.c:192 #, c-format -msgid "lock file \"%s\" already exists" -msgstr "el archivo de bloqueo «%s» ya existe" +msgid "identifier \"%s\" will be truncated to \"%s\"" +msgstr "el identificador «%s» se truncará a «%s»" -#: utils/init/miscinit.c:803 +#: parser/parse_cte.c:42 #, 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»?" +msgid "" +"recursive reference to query \"%s\" must not appear within its non-recursive " +"term" +msgstr "" +"la referencia recursiva a la consulta «%s» no debe aparecer dentro de su " +"término no recursivo" -#: utils/init/miscinit.c:805 +#: parser/parse_cte.c:44 #, c-format -msgid "Is another postmaster (PID %d) running in data directory \"%s\"?" +msgid "recursive reference to query \"%s\" must not appear within a subquery" msgstr "" -"¿Hay otro postmaster (PID %d) corriendo en el directorio de datos «%s»?" +"la referencia recursiva a la consulta «%s» no debe aparecer dentro de una " +"subconsulta" -#: utils/init/miscinit.c:808 +#: parser/parse_cte.c:46 #, c-format -msgid "Is another postgres (PID %d) using socket file \"%s\"?" -msgstr "¿Hay otro postgres (PID %d) usando el socket «%s»?" +msgid "" +"recursive reference to query \"%s\" must not appear within an outer join" +msgstr "" +"la referencia recursiva a la consulta «%s» no debe aparecer dentro de un " +"outer join" -#: utils/init/miscinit.c:810 +#: parser/parse_cte.c:48 #, c-format -msgid "Is another postmaster (PID %d) using socket file \"%s\"?" -msgstr "¿Hay otro postmaster (PID %d) usando el socket «%s»?" +msgid "recursive reference to query \"%s\" must not appear within INTERSECT" +msgstr "" +"la referencia recursiva a la consulta «%s» no debe aparecer dentro de " +"INTERSECT" -#: utils/init/miscinit.c:841 +#: parser/parse_cte.c:50 #, c-format -msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use" +msgid "recursive reference to query \"%s\" must not appear within EXCEPT" msgstr "" -"el bloque de memoria compartida preexistente (clave %lu, ID %lu) aún está en " -"uso" +"la referencia recursiva a la consulta «%s» no debe aparecer dentro de EXCEPT" -#: utils/init/miscinit.c:844 +#: parser/parse_cte.c:132 #, c-format +msgid "WITH query name \"%s\" specified more than once" +msgstr "el nombre de consulta WITH «%s» fue especificado más de una vez" + +#: parser/parse_cte.c:259 +msgid "subquery in WITH cannot have SELECT INTO" +msgstr "una subconsulta en WITH no puede tener SELECT INTO" + +#: parser/parse_cte.c:271 msgid "" -"If you're sure there are no old server processes still running, remove the " -"shared memory block or just delete the file \"%s\"." +"WITH clause containing a data-modifying statement must be at the top level" 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»." +"la cláusula WITH que contiene las sentencias que modifican datos debe estar " +"en el nivel más externo" -#: utils/init/miscinit.c:861 +#: parser/parse_cte.c:320 #, 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:863 msgid "" -"The file seems accidentally left over, but it could not be removed. Please " -"remove the file by hand and try again." +"recursive query \"%s\" column %d has type %s in non-recursive term but type " +"%s overall" msgstr "" -"El archivo parece accidentalmente abandonado, pero no pudo ser eliminado. " -"Por favor elimine el archivo manualmente e intente nuevamente." +"la columna %2$d en la consulta recursiva «%1$s» tiene tipo %3$s en el " +"término no recursivo, pero %4$s en general" + +#: parser/parse_cte.c:326 +msgid "Cast the output of the non-recursive term to the correct type." +msgstr "" +"Aplique una conversión de tipo a la salida del término no recursivo al tipo " +"correcto." -#: utils/init/miscinit.c:885 utils/init/miscinit.c:896 -#: utils/init/miscinit.c:906 +#: parser/parse_cte.c:331 #, c-format -msgid "could not write lock file \"%s\": %m" -msgstr "no se pudo escribir el archivo de bloqueo «%s»: %m" +msgid "" +"recursive query \"%s\" column %d has collation \"%s\" in non-recursive term " +"but collation \"%s\" overall" +msgstr "" +"la columna %2$d en la consulta recursiva «%1$s» tiene ordenamiento " +"(collation) %3$s en el término no recursivo, pero %4$s en general" -#: utils/init/miscinit.c:1112 utils/init/miscinit.c:1125 +#: parser/parse_cte.c:335 +msgid "Use the COLLATE clause to set the collation of the non-recursive term." +msgstr "" +"Use la clásula COLLATE para definir el ordenamiento del término no-recursivo." + +#: parser/parse_cte.c:426 #, c-format -msgid "\"%s\" is not a valid data directory" -msgstr "«%s» no es un directorio de datos válido" +msgid "WITH query \"%s\" has %d columns available but %d columns specified" +msgstr "" +"la consulta WITH «%s» tiene %d columnas disponibles pero se especificaron %d" + +#: parser/parse_cte.c:606 +msgid "mutual recursion between WITH items is not implemented" +msgstr "la recursión mutua entre elementos de WITH no está implementada" -#: utils/init/miscinit.c:1114 +#: parser/parse_cte.c:658 #, c-format -msgid "File \"%s\" is missing." -msgstr "Falta el archivo «%s»." +msgid "recursive query \"%s\" must not contain data-modifying statements" +msgstr "" +"la consulta recursiva «%s» no debe contener sentencias que modifiquen datos" -#: utils/init/miscinit.c:1127 +#: parser/parse_cte.c:666 #, c-format -msgid "File \"%s\" does not contain valid data." -msgstr "El archivo «%s» no contiene datos válidos." +msgid "" +"recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] " +"recursive-term" +msgstr "" +"la consulta recursiva «%s» no tiene la forma término-no-recursivo UNION " +"[ALL] término-recursivo" -#: utils/init/miscinit.c:1129 -msgid "You might need to initdb." -msgstr "Puede necesitar ejecutar initdb." +#: parser/parse_cte.c:710 +msgid "ORDER BY in a recursive query is not implemented" +msgstr "ORDER BY no está implementado en una consulta recursiva" + +#: parser/parse_cte.c:716 +msgid "OFFSET in a recursive query is not implemented" +msgstr "OFFSET no está implementado en una consulta recursiva" + +#: parser/parse_cte.c:722 +msgid "LIMIT in a recursive query is not implemented" +msgstr "LIMIT no está implementado en una consulta recursiva" + +#: parser/parse_cte.c:728 +msgid "FOR UPDATE/SHARE in a recursive query is not implemented" +msgstr "FOR UPDATE/SHARE no está implementado en una consulta recursiva" -#: utils/init/miscinit.c:1137 +#: parser/parse_cte.c:785 #, c-format -msgid "" -"The data directory was initialized by PostgreSQL version %ld.%ld, which is " -"not compatible with this version %s." +msgid "recursive reference to query \"%s\" must not appear more than once" msgstr "" -"El directorio de datos fue inicializado por PostgreSQL versión %ld.%ld, que " -"no es compatible con esta versión %s." +"la referencia recursiva a la consulta «%s» no debe aparecer más de una vez" -#: utils/init/miscinit.c:1185 +#: port/win32_sema.c:94 #, c-format -msgid "invalid list syntax in parameter \"%s\"" -msgstr "la sintaxis de lista no es válida para el parámetro «%s»" +msgid "could not create semaphore: error code %d" +msgstr "no se pudo crear semáforo: código de error %d" -#: utils/init/miscinit.c:1222 +#: port/win32_sema.c:165 #, c-format -msgid "loaded library \"%s\"" -msgstr "biblioteca «%s» cargada" +msgid "could not lock semaphore: error code %d" +msgstr "no se pudo bloquear semáforo: código de error %d" -#: utils/init/postinit.c:229 +#: port/win32_sema.c:178 #, c-format -msgid "replication connection authorized: user=%s host=%s port=%s" -msgstr "conexión de replicación autorizada: usuario=%s host=%s port=%s" +msgid "could not unlock semaphore: error code %d" +msgstr "no se pudo desbloquear semáforo: código de error %d" -#: utils/init/postinit.c:235 +#: port/win32_sema.c:207 #, c-format -msgid "replication connection authorized: user=%s host=%s" -msgstr "conexión de replicación autorizada: usuario=%s host=%s" +msgid "could not try-lock semaphore: error code %d" +msgstr "" +"no se pudo intentar-bloquear (try-lock) el semáforo: código de error %d" -#: utils/init/postinit.c:241 +#: port/sysv_shmem.c:147 port/pg_shmem.c:147 #, c-format -msgid "connection authorized: user=%s database=%s" -msgstr "conexión autorizada: usuario=%s database=%s" +msgid "could not create shared memory segment: %m" +msgstr "no se pudo crear el segmento de memoria compartida: %m" -#: utils/init/postinit.c:271 +#: port/sysv_shmem.c:148 port/pg_shmem.c:148 #, c-format -msgid "database \"%s\" has disappeared from pg_database" -msgstr "la base de datos «%s» ha desaparecido de pg_database" +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)." -#: utils/init/postinit.c:273 +#: port/sysv_shmem.c:152 port/pg_shmem.c:152 #, c-format -msgid "Database OID %u now seems to belong to \"%s\"." -msgstr "Base de datos con OID %u ahora parece pertenecer a «%s»." +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 "" +"Este error normalmente significa que una petición de PostgreSQL para obtener " +"un segmento de memoria compartida excedió el parámetro SHMMAX del kernel. " +"Puede reducir el tamaño de la petición o reconfigurar el kernel con un " +"SHMMAX superior. Para reducir el tamaño de la petición (actualmente %lu " +"bytes), reduzca el parámetro de PostgreSQL shared_buffers y/o el parámetro " +"max_connections.\n" +"Si el tamaño de la petición ya es pequeño, es posible que sea inferior al " +"parámetro SHMMIN del kernel, en cuyo caso se requiere alzar el tamaño de la " +"petición o disminuir SHMMIN.\n" +"La documentación de PostgreSQL contiene más información acerca de la " +"configuración de memoria compartida." -#: utils/init/postinit.c:293 +#: port/sysv_shmem.c:165 port/pg_shmem.c:165 #, c-format -msgid "database \"%s\" is not currently accepting connections" -msgstr "la base de datos «%s» no acepta conexiones" +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 "" +"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), o excedía el valor SHMALL del kernel. Para reducir el " +"tamaño de la petición (actualmente %lu bytes), reduzca el parámetro de " +"PostgreSQL shared_buffers y/o el parámetro max_connections.\n" +"La documentación de PostgreSQL contiene más información acerca de la " +"configuración de memoria compartida." -#: utils/init/postinit.c:306 +#: port/sysv_shmem.c:176 port/pg_shmem.c:176 #, c-format -msgid "permission denied for database \"%s\"" -msgstr "permiso denegado a la base de datos «%s»" - -#: utils/init/postinit.c:307 -msgid "User does not have CONNECT privilege." -msgstr "Usuario no tiene privilegios de conexión." +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 "" +"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. Si no puede incrementar el " +"límite de memoria compartida, reduzca el tamaño de petición de PostgreSQL " +"(actualmente %lu bytes) reduciendo el parámetro shared_buffers y/o el " +"parámetro max_connections.\n" +"La documentación de PostgreSQL contiene más información acerca de la " +"configuración de memoria compartida." -#: utils/init/postinit.c:324 +#: port/sysv_shmem.c:439 port/pg_shmem.c:439 #, c-format -msgid "too many connections for database \"%s\"" -msgstr "demasiadas conexiones para la base de datos «%s»" +msgid "could not stat data directory \"%s\": %m" +msgstr "no se pudo verificar el directorio de datos «%s»: %m" -#: utils/init/postinit.c:346 utils/init/postinit.c:353 -msgid "database locale is incompatible with operating system" -msgstr "la configuración regional es incompatible con el sistema operativo" +#: port/sysv_sema.c:114 port/pg_sema.c:114 +#, c-format +msgid "could not create semaphores: %m" +msgstr "no se pudo crear semáforos: %m" -#: utils/init/postinit.c:347 +#: port/sysv_sema.c:115 port/pg_sema.c:115 #, 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()." +msgid "Failed system call was semget(%lu, %d, 0%o)." +msgstr "La llamada a sistema fallida fue semget(%lu, %d, 0%o)." -#: utils/init/postinit.c:349 utils/init/postinit.c:356 +#: port/sysv_sema.c:119 port/pg_sema.c:119 msgid "" -"Recreate the database with another locale or install the missing locale." +"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 "" -"Recree la base de datos con otra configuración regional, o instale la " -"configuración regional faltante." +"Este error *no* significa que se haya quedado sin espacio en disco.\n" +"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." -#: utils/init/postinit.c:354 +#: port/sysv_sema.c:146 port/pg_sema.c:146 #, c-format msgid "" -"The database was initialized with LC_CTYPE \"%s\", which is not recognized " -"by setlocale()." +"You possibly need to raise your kernel's SEMVMX value to be at least %d. " +"Look into the PostgreSQL documentation for details." msgstr "" -"La base de datos fueron inicializada con LC_CTYPE «%s», el cual no es " -"reconocido por setlocale()." - -#: utils/init/postinit.c:608 -msgid "no roles are defined in this database system" -msgstr "no hay roles definidos en esta base de datos" +"Probablemente necesita incrementar el valor SEMVMX del kernel hasta al menos " +"%d. Examine la documentación de PostgreSQL para obtener más detalles." -#: utils/init/postinit.c:609 +#: port/win32_shmem.c:168 port/win32_shmem.c:203 port/win32_shmem.c:224 #, c-format -msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;." -msgstr "Debería ejecutar imediatamente CREATE USER \"%s\" SUPERUSER;." +msgid "could not create shared memory segment: %lu" +msgstr "no se pudo crear el segmento de memoria compartida: %lu" -#: utils/init/postinit.c:632 -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" +#: port/win32_shmem.c:169 +#, c-format +msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)." +msgstr "La llamada a sistema fallida fue CreateFileMapping(size=%lu, name=%s)." -#: utils/init/postinit.c:636 -msgid "must be superuser to connect during database shutdown" -msgstr "" -"debe ser superusuario para conectarse durante el apagado de la base de datos" +#: port/win32_shmem.c:193 +msgid "pre-existing shared memory block is still in use" +msgstr "el bloque de memoria compartida preexistente aún está en uso" -#: utils/init/postinit.c:650 +#: port/win32_shmem.c:194 msgid "" -"remaining connection slots are reserved for non-replication superuser " -"connections" +"Check if there are any old server processes still running, and terminate " +"them." msgstr "" -"las conexiones restantes están reservadas a superusuarios y no de replicación" +"Verifique si hay procesos de servidor antiguos aún en funcionamiento, y " +"termínelos." -#: utils/init/postinit.c:665 -msgid "must be superuser to start walsender" -msgstr "debe ser superusuario para iniciar el walsender" +#: port/win32_shmem.c:204 +msgid "Failed system call was DuplicateHandle." +msgstr "La llamada a sistema fallida fue DuplicateHandle." -#: utils/init/postinit.c:725 -#, c-format -msgid "database %u does not exist" -msgstr "no existe la base de datos %u" +#: port/win32_shmem.c:225 +msgid "Failed system call was MapViewOfFileEx." +msgstr "La llamada a sistema fallida fue MapViewOfFileEx." -#: utils/init/postinit.c:777 -msgid "It seems to have just been dropped or renamed." -msgstr "Parece haber sido eliminada o renombrada." +#: port/win32/security.c:43 +#, c-format +msgid "could not open process token: error code %d\n" +msgstr "no se pudo abrir el token de proceso: código de error %d\n" -#: utils/init/postinit.c:795 +#: port/win32/security.c:63 #, c-format -msgid "The database subdirectory \"%s\" is missing." -msgstr "Falta el subdirectorio de base de datos «%s»." +msgid "could not get SID for Administrators group: error code %d\n" +msgstr "" +"no se pudo obtener el SID del grupo Administrators: código de error %d\n" -#: utils/init/postinit.c:800 +#: port/win32/security.c:72 #, c-format -msgid "could not access directory \"%s\": %m" -msgstr "no se pudo acceder al directorio «%s»: %m" +msgid "could not get SID for PowerUsers group: error code %d\n" +msgstr "no se pudo obtener el SID del grupo PowerUsers: código de error %d\n" -#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:136 -#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:163 +#: port/win32/signal.c:189 #, c-format -msgid "unexpected encoding ID %d for ISO 8859 character sets" -msgstr "ID de codificación %d inesperado para juegos de caracteres ISO 8859" +msgid "could not create signal listener pipe for PID %d: error code %d" +msgstr "" +"no se pudo crear tubería para escuchar señales para el PID %d: código de " +"error %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 +#: port/win32/signal.c:269 port/win32/signal.c:301 #, c-format -msgid "unexpected encoding ID %d for WIN character sets" -msgstr "ID de codificación %d inesperado para juegos de caracteres WIN" +msgid "could not create signal listener pipe: error code %d; retrying\n" +msgstr "" +"no se pudo crear tubería para escuchar señales: código de error %d; " +"reintentando\n" -#: utils/mb/conv.c:509 +#: port/win32/signal.c:312 #, c-format -msgid "invalid encoding number: %d" -msgstr "el número de codificación no es válido: %d" +msgid "could not create signal dispatch thread: error code %d\n" +msgstr "no se pudo crear thread de despacho de señales: código de error %d\n" -#: utils/mb/encnames.c:485 -msgid "encoding name too long" -msgstr "el nombre de codificación es demasiado largo" +#: port/win32/crashdump.c:108 +msgid "could not load dbghelp.dll, cannot write crash dump\n" +msgstr "" +"no se pudo cargar dbghelp.dll, no se puede escribir el volcado de la caída\n" -#: utils/mb/mbutils.c:311 -#, c-format +#: port/win32/crashdump.c:116 msgid "" -"default conversion function for encoding \"%s\" to \"%s\" does not exist" +"could not load required functions in dbghelp.dll, cannot write crash dump\n" msgstr "" -"no existe el procedimiento por omisión de conversión desde la codificación " -"«%s» a «%s»" +"no fue posible cargar las funciones requeridas desde dbghelp.dll, no se " +"puede escribir el volcado de la caída\n" -#: utils/mb/mbutils.c:335 utils/mb/mbutils.c:607 +#: port/win32/crashdump.c:147 #, 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." +msgid "could not open crash dump file \"%s\" for writing: error code %u\n" +msgstr "" +"no se pudo abrir el archivo del volcado de caída «%s» para escritura: código " +"de error %u\n" -#: utils/mb/mbutils.c:422 +#: port/win32/crashdump.c:154 #, c-format -msgid "invalid source encoding name \"%s\"" -msgstr "la codificación de origen «%s» no es válida" +msgid "wrote crash dump to file \"%s\"\n" +msgstr "se escribió el volcado de caída en el archivo «%s».\n" -#: utils/mb/mbutils.c:427 +#: port/win32/crashdump.c:156 #, c-format -msgid "invalid destination encoding name \"%s\"" -msgstr "la codificación de destino «%s» no es válida" +msgid "could not write crash dump to file \"%s\": error code %08x\n" +msgstr "" +"no se pudo escribir el volcado de caída al archivo «%s»: código de error " +"%08x\n" + +#: ../port/open.c:113 +msgid "sharing violation" +msgstr "infracción de uso compartido (sharing violation)" + +#: ../port/open.c:113 +msgid "lock violation" +msgstr "infracción de bloqueo (locking violation)" -#: utils/mb/mbutils.c:539 +#: ../port/open.c:112 #, c-format -msgid "invalid byte value for encoding \"%s\": 0x%02x" -msgstr "byte no válido para codificación «%s»: 0x%02x" +msgid "could not open file \"%s\": %s" +msgstr "no se pudo abrir el archivo «%s»: %s" -#: utils/mb/mbutils.c:734 -msgid "invalid multibyte character for locale" -msgstr "el carácter multibyte no es válido para esta configuración regional" +#: ../port/open.c:114 +msgid "Continuing to retry for 30 seconds." +msgstr "Reintentando durante 30 segundos." -#: utils/mb/mbutils.c:735 +#: ../port/open.c:115 msgid "" -"The server's LC_CTYPE locale is probably incompatible with the database " -"encoding." +"You might have antivirus, backup, or similar software interfering with the " +"database system." msgstr "" -"La configuración regional LC_CTYPE del servidor es probablemente " -"incompatible con la codificación de la base de datos." +"Es posible que tenga antivirus, sistema de respaldos, o software similar " +"interfiriendo con el sistema de bases de datos." -#: utils/mb/wchar.c:1609 +#: ../port/strerror.c:25 #, c-format -msgid "invalid byte sequence for encoding \"%s\": 0x%s" -msgstr "secuencia de bytes no válida para codificación «%s»: 0x%s" +msgid "unrecognized error %d" +msgstr "código de error no reconocido: %d" -#: utils/mb/wchar.c:1638 +#: ../port/win32error.c:188 #, c-format -msgid "character 0x%s of encoding \"%s\" has no equivalent in \"%s\"" -msgstr "carácter 0x%s de codificación «%s» no tiene equivalente en «%s»" +msgid "mapped win32 error code %lu to %d" +msgstr "código de error win32 %lu mapeado a %d" -#: ../port/chklocale.c:326 ../port/chklocale.c:332 +#: ../port/win32error.c:199 #, 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/chklocale.c:334 -msgid "Please report this to ." -msgstr "Por favor reporte esto a ." +msgid "unrecognized win32 error code: %lu" +msgstr "código de error win32 no reconocido: %lu" #: ../port/dirmod.c:75 ../port/dirmod.c:88 ../port/dirmod.c:101 #, c-format @@ -17324,26 +18902,47 @@ msgstr "no se pudo definir un junction para «%s»: %s" msgid "could not set junction for \"%s\": %s\n" msgstr "no se pudo definir un junction para «%s»: %s\n" -#: ../port/dirmod.c:325 +#: ../port/dirmod.c:358 +#, c-format +msgid "could not get junction for \"%s\": %s" +msgstr "no se pudo obtener junction para «%s»: %s" + +#: ../port/dirmod.c:361 +#, c-format +msgid "could not get junction for \"%s\": %s\n" +msgstr "no se pudo obtener junction para «%s»: %s\n" + +#: ../port/dirmod.c:443 #, c-format msgid "could not open directory \"%s\": %s\n" msgstr "no se pudo abrir el directorio «%s»: %s\n" -#: ../port/dirmod.c:362 +#: ../port/dirmod.c:480 #, c-format msgid "could not read directory \"%s\": %s\n" msgstr "no se pudo leer el directorio «%s»: %s\n" -#: ../port/dirmod.c:445 +#: ../port/dirmod.c:563 #, 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:472 ../port/dirmod.c:489 +#: ../port/dirmod.c:590 ../port/dirmod.c:607 #, c-format msgid "could not remove file or directory \"%s\": %s\n" msgstr "no se pudo eliminar el directorio «%s»: %s\n" +#: ../port/chklocale.c:328 ../port/chklocale.c:334 +#, 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/chklocale.c:336 +msgid "Please report this to ." +msgstr "Por favor reporte esto a ." + #: ../port/exec.c:125 ../port/exec.c:239 ../port/exec.c:282 #, c-format msgid "could not identify current directory: %s" @@ -17374,67 +18973,40 @@ msgstr "no se pudo cambiar al directorio «%s»" msgid "could not read symbolic link \"%s\"" msgstr "no se pudo leer el enlace simbólico «%s»" -#: ../port/exec.c:516 +#: ../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" msgstr "el proceso hijo terminó con código de salida %d" -#: ../port/exec.c:520 +#: ../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "el proceso hijo fue terminado por la excepción 0x%X" -#: ../port/exec.c:529 +#: ../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "el proceso hijo fue terminado por una señal %s" -#: ../port/exec.c:532 +#: ../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "el proceso hijo fue terminado por una señal %d" -#: ../port/exec.c:536 +#: ../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "el proceso hijo terminó con código no reconocido %d" -#: ../port/open.c:113 -msgid "sharing violation" -msgstr "infracción de uso compartido (sharing violation)" - -#: ../port/open.c:113 -msgid "lock violation" -msgstr "infracción de bloqueo (locking violation)" - -#: ../port/open.c:112 -#, c-format -msgid "could not open file \"%s\": %s" -msgstr "no se pudo abrir el archivo «%s»: %s" - -#: ../port/open.c:114 -msgid "Continuing to retry for 30 seconds." -msgstr "Reintentando durante 30 segundos." - -#: ../port/open.c:115 -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/strerror.c:25 -#, c-format -msgid "unrecognized error %d" -msgstr "código de error no reconocido: %d" +#~ msgid "" +#~ "automatic vacuum of table \"%s.%s.%s\": cannot (re)acquire exclusive lock " +#~ "for truncate scan" +#~ msgstr "" +#~ "vacuum automático de la tabla «%s.%s.%s»: no se puede (re)adquirir " +#~ "candado exclusivo para el recorrido de truncado" -#: ../port/win32error.c:184 -#, c-format -msgid "mapped win32 error code %lu to %d" -msgstr "código de error win32 %lu mapeado a %d" +#~ msgid "arguments of row IN must all be row expressions" +#~ msgstr "los argumentos de IN de registros deben ser expresiones de registro" -#: ../port/win32error.c:195 -#, c-format -msgid "unrecognized win32 error code: %lu" -msgstr "código de error win32 no reconocido: %lu" +#~ msgid "index \"%s\" is not ready" +#~ msgstr "el índice «%s» no está listo" diff --git a/src/backend/po/fr.po b/src/backend/po/fr.po index 9b9c06b25c..8f29e57f54 100644 --- a/src/backend/po/fr.po +++ b/src/backend/po/fr.po @@ -1,8 +1,6 @@ # translation of postgres.po to fr_fr # french message translation file for postgres # -# $PostgreSQL$ -# # Use these quotes: � %s � # Guillaume Lelarge , 2003-2009. # @@ -10,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 8.4\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2011-04-11 21:00+0000\n" -"PO-Revision-Date: 2011-04-12 08:57+0100\n" +"POT-Creation-Date: 2014-03-15 18:40+0000\n" +"PO-Revision-Date: 2014-03-16 00:03+0100\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: French \n" "Language: fr\n" @@ -19,17815 +17,19488 @@ 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" -#: main/main.c:230 -#, c-format -msgid "%s: setsysinfo failed: %s\n" -msgstr "%s : setsysinfo a �chou� : %s\n" - -#: main/main.c:249 +#: postmaster/bgwriter.c:483 #, c-format -msgid "%s: WSAStartup failed: %d\n" -msgstr "%s : WSAStartup a �chou� : %d\n" +msgid "checkpoints are occurring too frequently (%d second apart)" +msgid_plural "checkpoints are occurring too frequently (%d seconds apart)" +msgstr[0] "" +"les points de v�rification (checkpoints) arrivent trop fr�quemment\n" +"(toutes les %d seconde)" +msgstr[1] "" +"les points de v�rification (checkpoints) arrivent trop fr�quemment\n" +"(toutes les %d secondes)" -#: main/main.c:268 -#, c-format +#: postmaster/bgwriter.c:487 msgid "" -"%s is the PostgreSQL server.\n" -"\n" -msgstr "" -"%s est le serveur PostgreSQL.\n" -"\n" +"Consider increasing the configuration parameter \"checkpoint_segments\"." +msgstr "Consid�rez l'augmentation du param�tre � checkpoint_segments �." -#: main/main.c:269 +#: postmaster/bgwriter.c:599 #, c-format -msgid "" -"Usage:\n" -" %s [OPTION]...\n" -"\n" +msgid "transaction log switch forced (archive_timeout=%d)" +msgstr "changement forc� du journal de transaction (archive_timeout=%d)" + +#: postmaster/bgwriter.c:1062 +msgid "checkpoint request failed" +msgstr "�chec de la demande de point de v�rification" + +#: postmaster/bgwriter.c:1063 +msgid "Consult recent messages in the server log for details." msgstr "" -"Usage :\n" -" %s [OPTION]...\n" -"\n" +"Consultez les messages r�cents du serveur dans les journaux applicatifs " +"pour\n" +"plus de d�tails." -#: main/main.c:270 +#: postmaster/bgwriter.c:1245 #, c-format -msgid "Options:\n" -msgstr "Options :\n" +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" -#: main/main.c:272 +#: postmaster/pgstat.c:330 #, c-format -msgid " -A 1|0 enable/disable run-time assert checking\n" +msgid "could not resolve \"localhost\": %s" +msgstr "n'a pas pu r�soudre � localhost � : %s" + +#: postmaster/pgstat.c:353 +msgid "trying another address for the statistics collector" msgstr "" -" -A 1|0 active/d�sactive la v�rification des limites (assert) �\n" -" l'ex�cution\n" +"nouvelle tentative avec une autre adresse pour le r�cup�rateur de " +"statistiques" -#: main/main.c:274 +#: postmaster/pgstat.c:362 #, c-format -msgid " -B NBUFFERS number of shared buffers\n" -msgstr " -B NBUFFERS nombre de tampons partag�s\n" +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" -#: main/main.c:275 +#: postmaster/pgstat.c:374 #, c-format -msgid " -c NAME=VALUE set run-time parameter\n" -msgstr " -c NOM=VALEUR configure un param�tre d'ex�cution\n" +msgid "could not bind socket for statistics collector: %m" +msgstr "n'a pas pu lier la socket au r�cup�rateur de statistiques : %m" -#: main/main.c:276 +#: postmaster/pgstat.c:385 #, c-format -msgid " -d 1-5 debugging level\n" -msgstr " -d 1-5 niveau de d�bogage\n" +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" -#: main/main.c:277 +#: postmaster/pgstat.c:401 #, c-format -msgid " -D DATADIR database directory\n" -msgstr " -D REPDONNEES r�pertoire de la base de donn�es\n" +msgid "could not connect socket for statistics collector: %m" +msgstr "n'a pas pu connecter la socket au r�cup�rateur de statistiques : %m" -#: main/main.c:278 +#: postmaster/pgstat.c:422 #, c-format -msgid " -e use European date input format (DMY)\n" -msgstr " -e utilise le format de saisie europ�en des dates (DMY)\n" +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" -#: main/main.c:279 +#: postmaster/pgstat.c:448 postmaster/pgstat.c:2996 #, c-format -msgid " -F turn fsync off\n" -msgstr " -F d�sactive fsync\n" +msgid "select() failed in statistics collector: %m" +msgstr "�chec du select() dans le r�cup�rateur de statistiques : %m" -#: main/main.c:280 -#, 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" +#: postmaster/pgstat.c:463 +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" -#: main/main.c:281 +#: postmaster/pgstat.c:478 #, c-format -msgid " -i enable TCP/IP connections\n" -msgstr " -i active les connexions TCP/IP\n" +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" -#: main/main.c:282 -#, c-format -msgid " -k DIRECTORY Unix-domain socket location\n" -msgstr " -k REPERTOIRE emplacement des sockets de domaine Unix\n" +#: postmaster/pgstat.c:488 +msgid "incorrect test message transmission on socket for statistics collector" +msgstr "" +"transmission incorrecte du message de tests sur la socket du r�cup�rateur " +"de\n" +"statistiques" -#: main/main.c:284 +#: postmaster/pgstat.c:511 #, c-format -msgid " -l enable SSL connections\n" -msgstr " -l active les connexions SSL\n" +msgid "could not set statistics collector socket to nonblocking mode: %m" +msgstr "" +"n'a pas pu initialiser la socket du r�cup�rateur de statistiques dans le " +"mode\n" +"non bloquant : %m" -#: main/main.c:286 -#, c-format -msgid " -N MAX-CONNECT maximum number of allowed connections\n" -msgstr " -N MAX-CONNECT nombre maximum de connexions simultan�es\n" +#: postmaster/pgstat.c:521 +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" -#: main/main.c:287 +#: postmaster/pgstat.c:623 #, 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 "could not fork statistics collector: %m" +msgstr "" +"n'a pas pu lancer le processus fils correspondant au r�cup�rateur de\n" +"statistiques : %m" -#: main/main.c:288 -#, c-format -msgid " -p PORT port number to listen on\n" -msgstr " -p PORT num�ro du port � �couter\n" +#: postmaster/pgstat.c:1153 postmaster/pgstat.c:1177 postmaster/pgstat.c:1208 +msgid "must be superuser to reset statistics counters" +msgstr "" +"doit �tre super-utilisateur pour r�initialiser les compteurs statistiques" -#: main/main.c:289 +#: postmaster/pgstat.c:1184 utils/adt/pgstatfuncs.c:1548 #, c-format -msgid " -s show statistics after each query\n" -msgstr " -s affiche les statistiques apr�s chaque requ�te\n" +msgid "unrecognized reset target: \"%s\"" +msgstr "cible reset non reconnu : � %s �" -#: main/main.c:290 +#: postmaster/pgstat.c:1185 utils/adt/pgstatfuncs.c:1549 +msgid "Target must be \"bgwriter\"." +msgstr "La cible doit �tre � bgwriter �." + +#: postmaster/pgstat.c:2975 #, 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" +msgid "poll() failed in statistics collector: %m" +msgstr "�chec du poll() dans le r�cup�rateur de statistiques : %m" -#: main/main.c:291 +#: postmaster/pgstat.c:3020 #, c-format -msgid " --NAME=VALUE set run-time parameter\n" -msgstr " -c NOM=VALEUR configure un param�tre d'ex�cution\n" +msgid "could not read statistics message: %m" +msgstr "n'a pas pu lire le message des statistiques : %m" -#: main/main.c:292 +#: postmaster/pgstat.c:3291 #, c-format -msgid " --describe-config describe configuration parameters, then exit\n" -msgstr " --describe-config d�crit les param�tres de configuration, puis quitte\n" +msgid "could not open temporary statistics file \"%s\": %m" +msgstr "n'a pas pu ouvrir le fichier temporaire des statistiques � %s � : %m" -#: main/main.c:293 +#: postmaster/pgstat.c:3363 #, c-format -msgid " --help show this help, then exit\n" -msgstr " --help affiche cette aide, puis quitte\n" +msgid "could not write temporary statistics file \"%s\": %m" +msgstr "n'a pas pu �crire le fichier temporaire des statistiques � %s � : %m" -#: main/main.c:294 +#: postmaster/pgstat.c:3372 #, c-format -msgid " --version output version information, then exit\n" -msgstr " --version affiche la version, puis quitte\n" +msgid "could not close temporary statistics file \"%s\": %m" +msgstr "n'a pas pu fermer le fichier temporaire des statistiques � %s � : %m" -#: main/main.c:296 +#: postmaster/pgstat.c:3380 #, c-format -msgid "" -"\n" -"Developer options:\n" +msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" msgstr "" -"\n" -"Options pour le d�veloppeur :\n" +"n'a pas pu renommer le fichier temporaire des statistiques � %s � en\n" +"� %s � : %m" -#: main/main.c:297 +#: postmaster/pgstat.c:3486 postmaster/pgstat.c:3715 #, 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" +msgid "could not open statistics file \"%s\": %m" +msgstr "n'a pas pu ouvrir le fichier de statistiques � %s � : %m" -#: main/main.c:298 +#: postmaster/pgstat.c:3498 postmaster/pgstat.c:3508 postmaster/pgstat.c:3530 +#: postmaster/pgstat.c:3545 postmaster/pgstat.c:3608 postmaster/pgstat.c:3626 +#: postmaster/pgstat.c:3642 postmaster/pgstat.c:3660 postmaster/pgstat.c:3676 +#: postmaster/pgstat.c:3727 postmaster/pgstat.c:3738 #, c-format -msgid " -n do not reinitialize shared memory after abnormal exit\n" +msgid "corrupted statistics file \"%s\"" +msgstr "fichier de statistiques � %s � corrompu" + +#: postmaster/pgstat.c:4036 +msgid "database hash table corrupted during cleanup --- abort" msgstr "" -" -n ne r�initialise pas la m�moire partag�e apr�s un arr�t\n" -" brutal\n" +"corruption de la table hach�e de la base de donn�es lors du lancement\n" +"--- annulation" -#: main/main.c:299 +#: postmaster/autovacuum.c:359 #, c-format -msgid " -O allow system table structure changes\n" -msgstr "" -" -O autorise les modifications de structure des tables\n" -" syst�me\n" +msgid "could not fork autovacuum launcher process: %m" +msgstr "n'a pas pu ex�cuter le processus autovacuum ma�tre : %m" -#: main/main.c:300 +#: postmaster/autovacuum.c:404 +msgid "autovacuum launcher started" +msgstr "lancement du processus autovacuum" + +#: postmaster/autovacuum.c:781 +msgid "autovacuum launcher shutting down" +msgstr "arr�t du processus autovacuum" + +#: postmaster/autovacuum.c:1416 #, c-format -msgid " -P disable system indexes\n" -msgstr " -P d�sactive les index syst�me\n" +msgid "could not fork autovacuum worker process: %m" +msgstr "n'a pas pu ex�cuter le processus autovacuum worker : %m" -#: main/main.c:301 +#: postmaster/autovacuum.c:1634 #, c-format -msgid " -t pa|pl|ex show timings after each query\n" -msgstr " -t pa|pl|ex affiche les temps pour chaque requ�te\n" +msgid "autovacuum: processing database \"%s\"" +msgstr "autovacuum : traitement de la base de donn�es � %s �" -#: main/main.c:302 +#: postmaster/autovacuum.c:2037 #, c-format -msgid " -T send SIGSTOP to all backend servers if one dies\n" +msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"" msgstr "" -" -T envoie SIGSTOP � tous les processus serveur si l'un\n" -" d'entre eux meurt\n" +"autovacuum : suppression de la table temporaire orpheline � %s.%s � dans la\n" +"base de donn�es � %s �" -#: main/main.c:303 +#: postmaster/autovacuum.c:2049 #, c-format -msgid " -W NUM wait NUM seconds to allow attach from a debugger\n" +msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\"" msgstr "" -" -W NUM attends NUM secondes pour permettre l'attache d'un\n" -" d�bogueur\n" +"autovacuum : a trouv� la table temporaire orpheline � %s.%s � dans la base " +"de\n" +"donn�es � %s �" -#: main/main.c:305 +#: postmaster/autovacuum.c:2319 #, c-format -msgid "" -"\n" -"Options for single-user mode:\n" -msgstr "" -"\n" -"Options pour le mode mono-utilisateur :\n" +msgid "automatic vacuum of table \"%s.%s.%s\"" +msgstr "VACUUM automatique de la table � %s.%s.%s �" -#: main/main.c:306 +#: postmaster/autovacuum.c:2322 #, c-format -msgid " --single selects single-user mode (must be first argument)\n" -msgstr "" -" --single s�lectionne le mode mono-utilisateur (doit �tre le\n" -" premier argument)\n" +msgid "automatic analyze of table \"%s.%s.%s\"" +msgstr "ANALYZE automatique de la table � %s.%s.%s �" -#: main/main.c:307 +#: postmaster/autovacuum.c:2808 +msgid "autovacuum not started because of misconfiguration" +msgstr "autovacuum non ex�cut� � cause d'une mauvaise configuration" + +#: postmaster/autovacuum.c:2809 +msgid "Enable the \"track_counts\" option." +msgstr "Activez l'option � track_counts �." + +#: postmaster/syslogger.c:418 #, 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" +msgid "select() failed in logger process: %m" +msgstr "�chec de select() dans le processus des journaux applicatifs : %m" -#: main/main.c:308 +#: postmaster/syslogger.c:430 postmaster/syslogger.c:1014 #, c-format -msgid " -d 0-5 override debugging level\n" -msgstr " -d 0-5 surcharge le niveau de d�bogage\n" +msgid "could not read from logger pipe: %m" +msgstr "n'a pas pu lire � partir du tube des journaux applicatifs : %m" -#: main/main.c:309 +#: postmaster/syslogger.c:477 +msgid "logger shutting down" +msgstr "arr�t en cours des journaux applicatifs" + +#: postmaster/syslogger.c:521 postmaster/syslogger.c:535 #, c-format -msgid " -E echo statement before execution\n" -msgstr " -E affiche la requ�te avant de l'ex�cuter\n" +msgid "could not create pipe for syslog: %m" +msgstr "n'a pas pu cr�er un tube pour syslog : %m" -#: main/main.c:310 +#: postmaster/syslogger.c:571 #, c-format -msgid " -j do not use newline as interactive query delimiter\n" -msgstr "" -" -N n'utilise pas le retour � la ligne comme d�limiteur de\n" -" requ�te\n" +msgid "could not fork system logger: %m" +msgstr "n'a pas pu lancer le processus des journaux applicatifs : %m" -#: main/main.c:311 -#: main/main.c:316 +#: postmaster/syslogger.c:602 #, 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" +msgid "could not redirect stdout: %m" +msgstr "n'a pas pu rediriger la sortie (stdout) : %m" -#: main/main.c:313 +#: postmaster/syslogger.c:607 postmaster/syslogger.c:625 #, c-format -msgid "" -"\n" -"Options for bootstrapping mode:\n" -msgstr "" -"\n" -"Options pour le mode � bootstrapping � :\n" +msgid "could not redirect stderr: %m" +msgstr "n'a pas pu rediriger la sortie des erreurs (stderr) : %m" -#: main/main.c:314 +#: postmaster/syslogger.c:969 #, c-format -msgid " --boot selects bootstrapping mode (must be first argument)\n" -msgstr "" -" --boot s�lectionne le mode � bootstrapping � (doit �tre le\n" -" premier argument)\n" +msgid "could not write to log file: %s\n" +msgstr "n'a pas pu �crire dans le journal applicatif : %s\n" -#: main/main.c:315 +#: postmaster/syslogger.c:1095 #, c-format -msgid " DBNAME database name (mandatory argument in bootstrapping mode)\n" -msgstr " NOMBASE nom de la base (argument obligatoire dans ce mode)\n" +msgid "could not open log file \"%s\": %m" +msgstr "n'a pas pu ouvrir le fichier applicatif � %s � : %m" -#: main/main.c:317 -#, c-format -msgid " -x NUM internal use\n" -msgstr " -x NUM utilisation interne\n" +#: postmaster/syslogger.c:1157 postmaster/syslogger.c:1201 +msgid "disabling automatic rotation (use SIGHUP to re-enable)" +msgstr "" +"d�sactivation de la rotation automatique (utilisez SIGHUP pour la r�activer)" -#: main/main.c:319 +#: postmaster/pgarch.c:158 #, 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" +msgid "could not fork archiver: %m" msgstr "" -"\n" -"Merci de lire la documentation pour la liste compl�te des param�tres de\n" -"configuration � l'ex�cution et pour savoir comment les configurer � la\n" -"ligne de commande ou dans le fichier de configuration.\n" -"\n" -"Rapportez les bogues � .\n" +"n'a pas pu lancer le processus fils correspondant au processus d'archivage : " +"%m" -#: main/main.c:333 -msgid "" -"\"root\" execution of the PostgreSQL server is not permitted.\n" -"The server must be started under an unprivileged user ID to prevent\n" -"possible system security compromise. See the documentation for\n" -"more information on how to properly start the server.\n" -msgstr "" -"L'ex�cution du serveur PostgreSQL par l'utilisateur � root � n'est pas\n" -"autoris�e.\n" -"Le serveur doit �tre lanc� avec un utilisateur non privil�gi� pour emp�cher\n" -"tout probl�me possible de s�curit� sur le serveur. Voir la documentation pour\n" -"plus d'informations sur le lancement propre du serveur.\n" +#: postmaster/pgarch.c:450 +msgid "archive_mode enabled, yet archive_command is not set" +msgstr "archive_mode activ�, cependant archive_command n'est pas configur�" -#: main/main.c:350 +#: postmaster/pgarch.c:465 #, 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" - -#: main/main.c:357 -msgid "" -"Execution of PostgreSQL by a user with administrative permissions is not\n" -"permitted.\n" -"The server must be started under an unprivileged user ID to prevent\n" -"possible system security compromises. See the documentation for\n" -"more information on how to properly start the server.\n" +msgid "transaction log file \"%s\" could not be archived: too many failures" msgstr "" -"L'ex�cution du serveur PostgreSQL par un utilisateur dot� de droits d'administrateur n'est pas permise.\n" -"Le serveur doit �tre lanc� avec un utilisateur non privil�gi� pour emp�cher\n" -"tout probl�me de s�curit� sur le serveur. Voir la documentation pour\n" -"plus d'informations sur le lancement propre du serveur.\n" +"le journal des transactions � %s � n'a pas pu �tre archiv� : trop d'�checs" -#: main/main.c:378 +#: postmaster/pgarch.c:568 #, c-format -msgid "%s: invalid effective UID: %d\n" -msgstr "%s : UID effectif invalide : %d\n" +msgid "archive command failed with exit code %d" +msgstr "�chec de la commande d'archivage avec un code de retour %d" -#: main/main.c:391 +#: postmaster/pgarch.c:570 postmaster/pgarch.c:580 postmaster/pgarch.c:587 +#: postmaster/pgarch.c:593 postmaster/pgarch.c:602 #, 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" +msgid "The failed archive command was: %s" +msgstr "La commande d'archivage qui a �chou� �tait : %s" -#: tsearch/wparser_def.c:2533 +#: postmaster/pgarch.c:577 #, c-format -msgid "unrecognized headline parameter: \"%s\"" -msgstr "param�tre headline � %s � non reconnu" - -#: tsearch/wparser_def.c:2542 -msgid "MinWords should be less than MaxWords" -msgstr "MinWords doit avoir une valeur plus petite que celle de MaxWords" - -#: tsearch/wparser_def.c:2546 -msgid "MinWords should be positive" -msgstr "MinWords doit �tre positif" - -#: tsearch/wparser_def.c:2550 -msgid "ShortWord should be >= 0" -msgstr "ShortWord devrait �tre positif ou nul" - -#: tsearch/wparser_def.c:2554 -msgid "MaxFragments should be >= 0" -msgstr "MaxFragments devrait �tre positif ou nul" - -#: tsearch/dict_ispell.c:52 -#: tsearch/dict_thesaurus.c:615 -msgid "multiple DictFile parameters" -msgstr "multiples param�tres DictFile" - -#: tsearch/dict_ispell.c:63 -msgid "multiple AffFile parameters" -msgstr "multiples param�tres AffFile" +msgid "archive command was terminated by exception 0x%X" +msgstr "la commande d'archivage a �t� termin�e par l'exception 0x%X" -#: tsearch/dict_ispell.c:74 -#: tsearch/dict_simple.c:50 -#: snowball/dict_snowball.c:206 -msgid "multiple StopWords parameters" -msgstr "plusieurs param�tres StopWords" +#: postmaster/pgarch.c:579 postmaster/postmaster.c:2883 +msgid "" +"See C include file \"ntstatus.h\" for a description of the hexadecimal value." +msgstr "" +"Voir le fichier d'en-t�te C � ntstatus.h � pour une description de la " +"valeur\n" +"hexad�cimale." -#: tsearch/dict_ispell.c:82 +#: postmaster/pgarch.c:584 #, c-format -msgid "unrecognized Ispell parameter: \"%s\"" -msgstr "param�tre Ispell non reconnu : � %s �" - -#: tsearch/dict_ispell.c:96 -msgid "missing AffFile parameter" -msgstr "param�tre AffFile manquant" - -#: tsearch/dict_ispell.c:102 -#: tsearch/dict_thesaurus.c:639 -msgid "missing DictFile parameter" -msgstr "param�tre DictFile manquant" - -#: tsearch/dict_simple.c:59 -msgid "multiple Accept parameters" -msgstr "multiples param�tres Accept" +msgid "archive command was terminated by signal %d: %s" +msgstr "la commande d'archivage a �t� termin�e par le signal %d : %s" -#: tsearch/dict_simple.c:67 +#: postmaster/pgarch.c:591 #, c-format -msgid "unrecognized simple dictionary parameter: \"%s\"" -msgstr "param�tre de dictionnaire simple non reconnu : � %s �" +msgid "archive command was terminated by signal %d" +msgstr "la commande d'archivage a �t� termin�e par le signal %d" -#: tsearch/dict_synonym.c:119 +#: postmaster/pgarch.c:600 #, c-format -msgid "unrecognized synonym parameter: \"%s\"" -msgstr "param�tre synonyme non reconnu : � %s �" - -#: tsearch/dict_synonym.c:126 -msgid "missing Synonyms parameter" -msgstr "param�tre Synonyms manquant" +msgid "archive command exited with unrecognized status %d" +msgstr "la commande d'archivage a quitt� avec le statut non reconnu %d" -#: tsearch/dict_synonym.c:133 +#: postmaster/pgarch.c:612 #, c-format -msgid "could not open synonym file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier synonyme � %s � : %m" +msgid "archived transaction log file \"%s\"" +msgstr "journal des transactions archiv� � %s �" -#: tsearch/dict_thesaurus.c:180 +#: postmaster/pgarch.c:661 #, c-format -msgid "could not open thesaurus file \"%s\": %m" -msgstr "n'a pas pu ouvrir le th�saurus � %s � : %m" +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" -#: tsearch/dict_thesaurus.c:213 -msgid "unexpected delimiter" -msgstr "d�limiteur inattendu" +#: postmaster/pgarch.c:715 access/transam/xlog.c:4613 +#: access/transam/xlog.c:5573 access/transam/xlog.c:5626 +#: access/transam/xlog.c:6421 +#, c-format +msgid "could not rename file \"%s\" to \"%s\": %m" +msgstr "n'a pas pu renommer le fichier � %s � en � %s � : %m" -#: tsearch/dict_thesaurus.c:263 -#: tsearch/dict_thesaurus.c:279 -msgid "unexpected end of line or lexeme" -msgstr "fin de ligne ou lexeme inattendu" +#: postmaster/postmaster.c:569 +#, c-format +msgid "%s: invalid argument for option -f: \"%s\"\n" +msgstr "%s : argument invalide pour l'option -f : � %s �\n" -#: tsearch/dict_thesaurus.c:288 -msgid "unexpected end of line" -msgstr "fin de ligne inattendue" +#: postmaster/postmaster.c:655 +#, c-format +msgid "%s: invalid argument for option -t: \"%s\"\n" +msgstr "%s : argument invalide pour l'option -t : � %s �\n" -#: tsearch/dict_thesaurus.c:412 +#: postmaster/postmaster.c:678 bootstrap/bootstrap.c:269 tcop/postgres.c:3448 #, 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)" +msgid "--%s requires a value" +msgstr "--%s requiert une valeur" -#: tsearch/dict_thesaurus.c:418 +#: postmaster/postmaster.c:683 bootstrap/bootstrap.c:274 tcop/postgres.c:3453 #, 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)" +msgid "-c %s requires a value" +msgstr "-c %s requiert une valeur" -#: tsearch/dict_thesaurus.c:421 -msgid "Use \"?\" to represent a stop word within a sample phrase." -msgstr "Utilisez � ? � pour repr�senter un terme courant dans une phrase." +#: postmaster/postmaster.c:695 postmaster/postmaster.c:708 +#: bootstrap/bootstrap.c:285 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Essayez � %s --help � pour plus d'informations.\n" -#: tsearch/dict_thesaurus.c:567 +#: postmaster/postmaster.c:706 #, 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)" +msgid "%s: invalid argument: \"%s\"\n" +msgstr "%s : argument invalide : � %s �\n" -#: tsearch/dict_thesaurus.c:574 +#: postmaster/postmaster.c:731 #, c-format -msgid "thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)" +msgid "%s: superuser_reserved_connections must be less than max_connections\n" msgstr "" -"le mot substitut � %s � du th�saurus n'est pas reconnu par le\n" -"sous-dictionnaire (r�gle %d)" +"%s : superuser_reserved_connections doit �tre inf�rieur � max_connections\n" -#: tsearch/dict_thesaurus.c:586 +#: postmaster/postmaster.c:736 #, c-format -msgid "thesaurus substitute phrase is empty (rule %d)" -msgstr "la phrase substitut du th�saurus est vide (r�gle %d)" +msgid "%s: max_wal_senders must be less than max_connections\n" +msgstr "%s : max_wal_senders doit �tre inf�rieur � max_connections\n" -#: tsearch/dict_thesaurus.c:624 -msgid "multiple Dictionary parameters" -msgstr "multiples param�tres Dictionary" +#: postmaster/postmaster.c:741 +msgid "" +"WAL archival (archive_mode=on) requires wal_level \"archive\" or " +"\"hot_standby\"" +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 �" -#: tsearch/dict_thesaurus.c:631 +#: postmaster/postmaster.c:744 +msgid "" +"WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or " +"\"hot_standby\"" +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 �" + +#: postmaster/postmaster.c:752 #, c-format -msgid "unrecognized Thesaurus parameter: \"%s\"" -msgstr "param�tre Thesaurus non reconnu : � %s �" +msgid "%s: invalid datetoken tables, please fix\n" +msgstr "%s : tables datetoken invalide, merci de corriger\n" -#: tsearch/dict_thesaurus.c:643 -msgid "missing Dictionary parameter" -msgstr "param�tre Dictionary manquant" +#: postmaster/postmaster.c:852 +msgid "invalid list syntax for \"listen_addresses\"" +msgstr "syntaxe de liste invalide pour le param�tre � listen_addresses �" -#: tsearch/spell.c:204 +#: postmaster/postmaster.c:882 #, c-format -msgid "could not open dictionary file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier dictionnaire � %s � : %m" +msgid "could not create listen socket for \"%s\"" +msgstr "n'a pas pu cr�er le socket d'�coute pour � %s �" -#: tsearch/spell.c:365 -#: utils/adt/regexp.c:190 -#, c-format -msgid "invalid regular expression: %s" -msgstr "expression rationnelle invalide : %s" +#: postmaster/postmaster.c:888 +msgid "could not create any TCP/IP sockets" +msgstr "n'a pas pu cr�er de socket TCP/IP" -#: tsearch/spell.c:444 -#: tsearch/spell.c:461 -#: tsearch/spell.c:478 -#: tsearch/spell.c:495 -#: tsearch/spell.c:517 -#: gram.y:11474 -#: gram.y:11491 -msgid "syntax error" -msgstr "erreur de syntaxe" +#: postmaster/postmaster.c:939 +msgid "could not create Unix-domain socket" +msgstr "n'a pas pu cr�er le socket domaine Unix" -#: tsearch/spell.c:522 -#: tsearch/spell.c:772 -#: tsearch/spell.c:792 -msgid "multibyte flag character is not allowed" -msgstr "un caract�re drapeau multi-octet n'est pas autoris�" +#: postmaster/postmaster.c:947 +msgid "no socket created for listening" +msgstr "pas de socket cr�� pour l'�coute" -#: tsearch/spell.c:557 -#: tsearch/spell.c:615 -#: tsearch/spell.c:710 +#: postmaster/postmaster.c:986 +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:1030 #, c-format -msgid "could not open affix file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier affixe � %s � : %m" +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" -#: tsearch/spell.c:603 -msgid "Ispell dictionary supports only default flag value" -msgstr "le dictionnaire Ispell supporte seulement la valeur par d�faut du drapeau" +#: postmaster/postmaster.c:1098 utils/init/postinit.c:197 +msgid "could not load pg_hba.conf" +msgstr "n'a pas pu charger pg_hba.conf" -#: tsearch/spell.c:803 -msgid "wrong affix file format for flag" -msgstr "mauvais format de fichier affixe pour le drapeau" +#: postmaster/postmaster.c:1151 +#, c-format +msgid "%s: could not locate matching postgres executable" +msgstr "%s : n'a pas pu localiser l'ex�cutable postgres correspondant" -#: tsearch/to_tsany.c:165 -#: utils/adt/tsvector.c:272 -#: utils/adt/tsvector_op.c:514 +#: postmaster/postmaster.c:1172 utils/misc/tzparser.c:323 utils/adt/misc.c:213 +#: utils/adt/genfile.c:353 commands/tablespace.c:689 commands/tablespace.c:699 +#: storage/file/fd.c:1682 storage/file/copydir.c:67 storage/file/copydir.c:106 #, c-format -msgid "string is too long for tsvector (%d bytes, max %d bytes)" -msgstr "la cha�ne est trop longue (%d octets, max %d octets)" +msgid "could not open directory \"%s\": %m" +msgstr "n'a pas pu ouvrir le r�pertoire � %s � : %m" -#: tsearch/ts_locale.c:168 +#: postmaster/postmaster.c:1174 utils/misc/tzparser.c:325 #, c-format -msgid "line %d of configuration file \"%s\": \"%s\"" -msgstr "ligne %d du fichier de configuration � %s � : � %s �" +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�." -#: tsearch/ts_locale.c:173 -#: libpq/hba.c:653 -#: libpq/hba.c:669 -#: libpq/hba.c:715 -#: libpq/hba.c:738 -#: libpq/hba.c:750 -#: libpq/hba.c:763 -#: libpq/hba.c:778 -#: libpq/hba.c:825 -#: libpq/hba.c:848 -#: libpq/hba.c:865 -#: libpq/hba.c:878 -#: libpq/hba.c:894 -#: libpq/hba.c:909 -#: libpq/hba.c:949 -#: libpq/hba.c:981 -#: libpq/hba.c:992 -#: libpq/hba.c:1004 -#: libpq/hba.c:1015 -#: libpq/hba.c:1032 -#: libpq/hba.c:1053 -#: libpq/hba.c:1082 -#: libpq/hba.c:1094 -#: libpq/hba.c:1107 -#: libpq/hba.c:1141 -#: libpq/hba.c:1215 -#: libpq/hba.c:1233 -#: libpq/hba.c:1254 -#: libpq/hba.c:1285 -#: libpq/hba.c:1295 +#: postmaster/postmaster.c:1202 #, c-format -msgid "line %d of configuration file \"%s\"" -msgstr "ligne %d du fichier de configuration � %s �" +msgid "data directory \"%s\" does not exist" +msgstr "le r�pertoire des donn�es � %s � n'existe pas" -#: tsearch/ts_locale.c:288 +#: postmaster/postmaster.c:1207 #, 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: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 "le mot est trop long pour �tre index�" +msgid "could not read permissions of directory \"%s\": %m" +msgstr "n'a pas pu lire les droits du r�pertoire � %s � : %m" -#: tsearch/ts_parse.c:392 -#: tsearch/ts_parse.c:399 -#: tsearch/ts_parse.c:562 -#: tsearch/ts_parse.c:569 +#: postmaster/postmaster.c:1215 #, c-format -msgid "Words longer than %d characters are ignored." -msgstr "Les mots de plus de %d caract�res sont ignor�s." +msgid "specified data directory \"%s\" is not a directory" +msgstr "le r�pertoire des donn�es � %s � n'est pas un r�pertoire" -#: tsearch/ts_utils.c:53 +#: postmaster/postmaster.c:1231 #, c-format -msgid "invalid text search configuration file name \"%s\"" -msgstr "nom du fichier de configuration de la recherche plein texte invalide : � %s �" +msgid "data directory \"%s\" has wrong ownership" +msgstr "le r�pertoire des donn�es � %s � a un mauvais propri�taire" -#: tsearch/ts_utils.c:91 +#: postmaster/postmaster.c:1233 +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:1253 #, c-format -msgid "could not open stop-word file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier des termes courants � %s � : %m" +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" -#: tsearch/wparser.c:314 -msgid "text search parser does not support headline creation" -msgstr "l'analyseur de recherche plein texte ne supporte pas headline" +#: postmaster/postmaster.c:1255 +msgid "Permissions should be u=rwx (0700)." +msgstr "Les droits devraient �tre u=rwx (0700)." -#: access/transam/slru.c:595 +#: postmaster/postmaster.c:1266 #, c-format -msgid "file \"%s\" doesn't exist, reading as zeroes" -msgstr "le fichier � %s � n'existe pas, contenu lu comme des z�ros" +msgid "" +"%s: could not find the database system\n" +"Expected to find it in the directory \"%s\",\n" +"but could not open file \"%s\": %s\n" +msgstr "" +"%s : n'a pas pu trouver le syst�me de bases de donn�es\n" +"S'attendait � le trouver dans le r�pertoire � %s �,\n" +"mais n'a pas r�ussi � ouvrir le fichier � %s �: %s\n" -#: access/transam/slru.c:825 -#: access/transam/slru.c:831 -#: access/transam/slru.c:838 -#: access/transam/slru.c:845 -#: access/transam/slru.c:852 -#: access/transam/slru.c:859 +#: postmaster/postmaster.c:1302 #, c-format -msgid "could not access status of transaction %u" -msgstr "n'a pas pu acc�der au statut de la transaction %u" +msgid "%s: could not open file \"%s\": %s\n" +msgstr "%s : n'a pas pu ouvrir le fichier � %s � : %s\n" -#: access/transam/slru.c:826 +#: postmaster/postmaster.c:1309 #, c-format -msgid "Could not open file \"%s\": %m." -msgstr "N'a pas pu ouvrir le fichier � %s � : %m" +msgid "%s: could not open log file \"%s/%s\": %s\n" +msgstr "%s : n'a pas pu ouvrir le journal applicatif � %s/%s � : %s\n" -#: access/transam/slru.c:832 +#: postmaster/postmaster.c:1320 #, c-format -msgid "Could not seek in file \"%s\" to offset %u: %m." -msgstr "N'a pas pu se d�placer dans le fichier � %s � au d�calage %u : %m" +msgid "%s: could not fork background process: %s\n" +msgstr "%s : n'a pas pu cr�er un processus fils : %s\n" -#: access/transam/slru.c:839 +#: postmaster/postmaster.c:1342 #, c-format -msgid "Could not read from file \"%s\" at offset %u: %m." -msgstr "N'a pas pu lire le fichier � %s � au d�calage %u : %m" +msgid "%s: could not dissociate from controlling TTY: %s\n" +msgstr "%s : n'a pas pu se dissocier du TTY contr�lant : %s\n" -#: access/transam/slru.c:846 +#: postmaster/postmaster.c:1437 #, c-format -msgid "Could not write to file \"%s\" at offset %u: %m." -msgstr "N'a pas pu �crire le fichier � %s � au d�calage %u : %m" +msgid "select() failed in postmaster: %m" +msgstr "�chec de select() dans postmaster : %m" -#: access/transam/slru.c:853 -#, c-format -msgid "Could not fsync file \"%s\": %m." -msgstr "N'a pas pu synchroniser sur disque (fsync) le fichier � %s � : %m" +#: postmaster/postmaster.c:1599 postmaster/postmaster.c:1630 +msgid "incomplete startup packet" +msgstr "paquet de d�marrage incomplet" -#: access/transam/slru.c:860 -#, c-format -msgid "Could not close file \"%s\": %m." -msgstr "N'a pas pu fermer le fichier � %s � : %m" +#: postmaster/postmaster.c:1611 +msgid "invalid length of startup packet" +msgstr "longueur invalide du paquet de d�marrage" -#: access/transam/slru.c:1087 +#: postmaster/postmaster.c:1668 #, c-format -msgid "could not truncate directory \"%s\": apparent wraparound" -msgstr "n'a pas pu tronquer le r�pertoire � %s � : contournement apparent" +msgid "failed to send SSL negotiation response: %m" +msgstr "�chec lors de l'envoi de la r�ponse de n�gotiation SSL : %m" -#: access/transam/slru.c:1168 +#: postmaster/postmaster.c:1697 #, c-format -msgid "removing file \"%s\"" -msgstr "suppression du fichier � %s �" +msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" +msgstr "" +"Protocole non support�e de l'interface %u.%u : le serveur supporte de %u.0 " +"�\n" +"%u.%u" -#: access/transam/twophase.c:247 -#, c-format -msgid "transaction identifier \"%s\" is too long" -msgstr "l'identifiant de la transaction � %s � est trop long" +#: postmaster/postmaster.c:1748 +msgid "invalid value for boolean option \"replication\"" +msgstr "valeur invalide pour l'option bool�enne � replication �" -#: access/transam/twophase.c:254 -msgid "prepared transactions are disabled" -msgstr "les transactions pr�par�es sont d�sactiv�es" +#: postmaster/postmaster.c:1768 +msgid "invalid startup packet layout: expected terminator as last byte" +msgstr "" +"configuration invalide du paquet de d�marrage : terminaison attendue comme\n" +"dernier octet" -#: access/transam/twophase.c:255 -msgid "Set max_prepared_transactions to a nonzero value." -msgstr "Configure max_prepared_transactions � une valeur diff�rente de z�ro." +#: postmaster/postmaster.c:1796 +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" -#: access/transam/twophase.c:288 -#, c-format -msgid "transaction identifier \"%s\" is already in use" -msgstr "l'identifiant de la transaction � %s � est d�j� utilis�" +#: postmaster/postmaster.c:1853 +msgid "the database system is starting up" +msgstr "le syst�me de bases de donn�es se lance" -#: access/transam/twophase.c:297 -msgid "maximum number of prepared transactions reached" -msgstr "nombre maximum de transactions pr�par�es obtenu" +#: postmaster/postmaster.c:1858 +msgid "the database system is shutting down" +msgstr "le syst�me de base de donn�es s'arr�te" + +#: postmaster/postmaster.c:1863 +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:1868 storage/ipc/procarray.c:271 +#: storage/ipc/sinvaladt.c:302 storage/lmgr/proc.c:304 +msgid "sorry, too many clients already" +msgstr "d�sol�, trop de clients sont d�j� connect�s" -#: access/transam/twophase.c:298 +#: postmaster/postmaster.c:1930 #, c-format -msgid "Increase max_prepared_transactions (currently %d)." -msgstr "Augmentez max_prepared_transactions (actuellement %d)." +msgid "wrong key in cancel request for process %d" +msgstr "mauvaise cl� dans la demande d'annulation pour le processus %d" -#: access/transam/twophase.c:418 +#: postmaster/postmaster.c:1938 #, c-format -msgid "prepared transaction with identifier \"%s\" is busy" -msgstr "la transaction pr�par�e d'identifiant � %s � est occup�e" +msgid "PID %d in cancel request did not match any process" +msgstr "le PID %d dans la demande d'annulation ne correspond � aucun processus" -#: access/transam/twophase.c:426 -msgid "permission denied to finish prepared transaction" -msgstr "droit refus� pour terminer la transaction pr�par�e" +#: postmaster/postmaster.c:2010 postmaster/postmaster.c:2041 +#: postmaster/postmaster.c:3243 postmaster/postmaster.c:3922 +#: postmaster/postmaster.c:4007 postmaster/postmaster.c:4624 +#: utils/hash/dynahash.c:368 utils/hash/dynahash.c:445 +#: utils/hash/dynahash.c:959 utils/misc/guc.c:3298 utils/misc/guc.c:3311 +#: utils/misc/guc.c:3324 utils/misc/tzparser.c:455 utils/init/miscinit.c:150 +#: utils/init/miscinit.c:171 utils/init/miscinit.c:181 utils/fmgr/dfmgr.c:224 +#: utils/mb/mbutils.c:374 utils/mb/mbutils.c:675 utils/mmgr/aset.c:416 +#: utils/mmgr/aset.c:587 utils/mmgr/aset.c:765 utils/mmgr/aset.c:966 +#: utils/adt/regexp.c:219 utils/adt/varlena.c:3472 utils/adt/varlena.c:3493 +#: utils/adt/formatting.c:1524 utils/adt/formatting.c:1640 +#: utils/adt/formatting.c:1757 lib/stringinfo.c:266 commands/sequence.c:1014 +#: libpq/auth.c:1022 libpq/auth.c:1382 libpq/auth.c:1450 libpq/auth.c:1852 +#: storage/file/fd.c:364 storage/file/fd.c:761 storage/file/fd.c:879 +#: storage/file/fd.c:1443 storage/ipc/procarray.c:849 +#: storage/ipc/procarray.c:1260 storage/ipc/procarray.c:1267 +#: storage/ipc/procarray.c:1507 storage/ipc/procarray.c:1958 +#: storage/buffer/localbuf.c:350 storage/buffer/buf_init.c:154 +msgid "out of memory" +msgstr "m�moire �puis�e" -#: access/transam/twophase.c:427 -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." +#: postmaster/postmaster.c:2144 +msgid "received SIGHUP, reloading configuration files" +msgstr "a re�u SIGHUP, rechargement des fichiers de configuration" -#: access/transam/twophase.c:438 -msgid "prepared transaction belongs to another database" -msgstr "la transaction pr�par�e appartient � une autre base de donn�es" +#: postmaster/postmaster.c:2167 +msgid "pg_hba.conf not reloaded" +msgstr "pg_hba.conf non lu" -#: access/transam/twophase.c:439 -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." +#: postmaster/postmaster.c:2210 +msgid "received smart shutdown request" +msgstr "a re�u une demande d'arr�t intelligent" -#: access/transam/twophase.c:453 -#, c-format -msgid "prepared transaction with identifier \"%s\" does not exist" -msgstr "la transaction pr�par�e d'identifiant � %s � n'existe pas" +#: postmaster/postmaster.c:2257 +msgid "received fast shutdown request" +msgstr "a re�u une demande d'arr�t rapide" -#: access/transam/twophase.c:936 -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" +#: postmaster/postmaster.c:2275 +msgid "aborting any active transactions" +msgstr "annulation des transactions actives" -#: access/transam/twophase.c:954 -#, 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" +#: postmaster/postmaster.c:2304 +msgid "received immediate shutdown request" +msgstr "a re�u une demande d'arr�t imm�diat" -#: access/transam/twophase.c:968 -#: access/transam/twophase.c:985 -#: access/transam/twophase.c:1034 -#: access/transam/twophase.c:1445 -#: access/transam/twophase.c:1452 -#, 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" +#: postmaster/postmaster.c:2392 postmaster/postmaster.c:2413 +msgid "startup process" +msgstr "processus de lancement" -#: access/transam/twophase.c:994 -#, c-format -msgid "could not seek in two-phase state file: %m" +#: postmaster/postmaster.c:2395 +msgid "aborting startup due to startup process failure" msgstr "" -"n'a pas pu se d�placer dans le fichier de statut de la validation en deux\n" -"phases : %m" +"annulation du d�marrage � cause d'un �chec dans le processus de lancement" -#: access/transam/twophase.c:1040 -#: access/transam/twophase.c:1470 -#, 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" +#: postmaster/postmaster.c:2447 +msgid "database system is ready to accept connections" +msgstr "le syst�me de bases de donn�es est pr�t pour accepter les connexions" -#: access/transam/twophase.c:1112 -#: access/transam/twophase.c:1550 -#, 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" +#: postmaster/postmaster.c:2502 +msgid "background writer process" +msgstr "processus d'�criture en t�che de fond" -#: access/transam/twophase.c:1129 -#, c-format -msgid "could not stat two-phase state file \"%s\": %m" -msgstr "" -"n'a pas pu r�cup�rer des informations sur le fichier d'�tat de la validation\n" -"en deux phases nomm� � %s � : %m" +#: postmaster/postmaster.c:2518 +msgid "WAL writer process" +msgstr "processus d'�criture des journaux de transaction" -#: access/transam/twophase.c:1161 -#, 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" +#: postmaster/postmaster.c:2532 +msgid "WAL receiver process" +msgstr "processus de r�ception des journaux de transaction" -#: access/transam/twophase.c:1253 -#, 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" +#: postmaster/postmaster.c:2547 +msgid "autovacuum launcher process" +msgstr "processus de l'autovacuum" -#: access/transam/twophase.c:1407 -#, 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" +#: postmaster/postmaster.c:2562 +msgid "archiver process" +msgstr "processus d'archivage" -#: access/transam/twophase.c:1436 -#, 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" +#: postmaster/postmaster.c:2578 +msgid "statistics collector process" +msgstr "processus de r�cup�ration des statistiques" -#: access/transam/twophase.c:1464 -#, 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" +#: postmaster/postmaster.c:2592 +msgid "system logger process" +msgstr "processus des journaux applicatifs" -#: access/transam/twophase.c:1559 -#, 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" +#: postmaster/postmaster.c:2627 postmaster/postmaster.c:2646 +#: postmaster/postmaster.c:2653 postmaster/postmaster.c:2671 +msgid "server process" +msgstr "processus serveur" -#: access/transam/twophase.c:1566 -#, 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" +#: postmaster/postmaster.c:2707 +msgid "terminating any other active server processes" +msgstr "arr�t des autres processus serveur actifs" -#: access/transam/twophase.c:1631 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2872 #, 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 �" +msgid "%s (PID %d) exited with exit code %d" +msgstr "%s (PID %d) quitte avec le code de sortie %d" -#: access/transam/twophase.c:1647 -#: access/transam/twophase.c:1658 -#: access/transam/twophase.c:1771 -#: access/transam/twophase.c:1782 -#: access/transam/twophase.c:1855 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2881 #, c-format -msgid "removing corrupt two-phase state file \"%s\"" -msgstr "" -"suppression du fichier d'�tat corrompu de la validation en deux phases nomm�\n" -"� %s �" +msgid "%s (PID %d) was terminated by exception 0x%X" +msgstr "%s (PID %d) a �t� arr�t� par l'exception 0x%X" -#: access/transam/twophase.c:1760 -#: access/transam/twophase.c:1844 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2890 #, 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 �" +msgid "%s (PID %d) was terminated by signal %d: %s" +msgstr "%s (PID %d) a �t� arr�t� par le signal %d : %s" -#: access/transam/twophase.c:1862 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2900 #, c-format -msgid "recovering prepared transaction %u" -msgstr "r�cup�ration de la transaction pr�par�e %u" +msgid "%s (PID %d) was terminated by signal %d" +msgstr "%s (PID %d) a �t� arr�t� par le signal %d" -#: access/transam/varsup.c:114 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2909 #, c-format -msgid "database is not accepting commands to avoid wraparound data loss in database \"%s\"" -msgstr "" -"la base de donn�es n'accepte plus de requ�tes pour �viter des pertes de\n" -"donn�es � cause de la r�initialisation de l'identifiant de transaction dans\n" -"la base de donn�es � %s �" +msgid "%s (PID %d) exited with unrecognized status %d" +msgstr "%s (PID %d) a quitt� avec le statut inattendu %d" -#: 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 "" -"Arr�tez le postmaster et utilisez un moteur autonome pour ex�cuter VACUUM\n" -"sur la base de donn�es � %s �.\n" -"Vous pouvez avoir besoin d'enregistrer ou d'annuler les anciennes transactions pr�par�es." +#: postmaster/postmaster.c:3089 +msgid "abnormal database system shutdown" +msgstr "le syst�me de base de donn�es a �t� arr�t� anormalement" -#: access/transam/varsup.c:121 -#, c-format -msgid "database is not accepting commands to avoid wraparound data loss in database with OID %u" -msgstr "" -"la base de donn�es n'accepte plus de requ�tes pour �viter des pertes de\n" -"donn�es � cause de la r�initialisation de l'identifiant de transaction dans\n" -"la base de donn�es %u" +#: postmaster/postmaster.c:3128 +msgid "all server processes terminated; reinitializing" +msgstr "tous les processus serveur se sont arr�t�s, r�initialisation" -#: access/transam/varsup.c:133 -#: access/transam/varsup.c:368 +#: postmaster/postmaster.c:3311 #, 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" -"%u transactions" +msgid "could not fork new process for connection: %m" +msgstr "n'a pas pu lancer le nouveau processus fils pour la connexion : %m" -#: 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 "" -"Pour �viter un arr�t de la base de donn�es, ex�cutez un VACUUM sur toute la\n" -"base � %s �. Vous pouvez avoir besoin d'enregistrer ou d'annuler les anciennes\n" -"transactions pr�par�es." +#: postmaster/postmaster.c:3353 +msgid "could not fork new process for connection: " +msgstr "n'a pas pu lancer le nouveau processus fils pour la connexion : " -#: access/transam/varsup.c:140 -#: access/transam/varsup.c:375 +#: postmaster/postmaster.c:3467 #, 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" -"%u transactions" +msgid "connection received: host=%s port=%s" +msgstr "connexion re�ue : h�te=%s port=%s" -#: access/transam/varsup.c:333 +#: postmaster/postmaster.c:3472 #, c-format -msgid "transaction ID wrap limit is %u, limited by database with OID %u" -msgstr "" -"la limite de r�initialisation de l'identifiant de transaction est %u,\n" -"limit� par la base de donn�es d'OID %u" - -#: access/transam/xact.c:716 -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 "connection received: host=%s" +msgstr "connexion re�ue : h�te=%s" -#: access/transam/xact.c:1236 +#: postmaster/postmaster.c:3697 access/transam/xlog.c:2397 +#: access/transam/xlog.c:2530 access/transam/xlog.c:4463 +#: access/transam/xlog.c:9187 access/transam/xlog.c:9431 +#: storage/file/copydir.c:172 storage/smgr/md.c:289 #, 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:1993 -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" +msgid "could not create file \"%s\": %m" +msgstr "n'a pas pu cr�er le fichier � %s � : %m" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2782 +#: postmaster/postmaster.c:3707 postmaster/postmaster.c:3717 +#: utils/misc/guc.c:7432 utils/misc/guc.c:7457 utils/init/miscinit.c:1097 +#: utils/init/miscinit.c:1106 utils/init/miscinit.c:1113 +#: access/transam/xlog.c:2429 access/transam/xlog.c:2562 +#: access/transam/xlog.c:4515 access/transam/xlog.c:4578 +#: storage/file/copydir.c:197 #, c-format -msgid "%s cannot run inside a transaction block" -msgstr "%s ne peut pas �tre ex�cut� dans un bloc de transaction" +msgid "could not write to file \"%s\": %m" +msgstr "n'a pas pu �crire dans le fichier � %s � : %m" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2792 +#: postmaster/postmaster.c:3736 #, c-format -msgid "%s cannot run inside a subtransaction" -msgstr "%s ne peut pas �tre ex�cut� dans un sous-bloc de transaction" +msgid "could not execute server process \"%s\": %m" +msgstr "n'a pas pu ex�cuter le processus serveur � %s � : %m" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2802 -#, c-format -msgid "%s cannot be executed from a function or multi-command string" +#: postmaster/postmaster.c:4257 +msgid "database system is ready to accept read only connections" msgstr "" -"%s ne peut pas �tre ex�cut� � partir d'une fonction ou d'une cha�ne\n" -"contenant plusieurs commandes" - -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2853 -#, 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:3035 -msgid "there is already a transaction in progress" -msgstr "une transaction est d�j� en cours" - -#: access/transam/xact.c:3202 -#: access/transam/xact.c:3294 -msgid "there is no transaction in progress" -msgstr "aucune transaction en cours" - -#: access/transam/xact.c:3388 -#: access/transam/xact.c:3438 -#: access/transam/xact.c:3444 -#: access/transam/xact.c:3488 -#: access/transam/xact.c:3536 -#: access/transam/xact.c:3542 -msgid "no such savepoint" -msgstr "aucun point de sauvegarde" - -#: access/transam/xact.c:4172 -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" +"le syst�me de bases de donn�es est pr�t pour accepter les connexions en " +"lecture seule" -#: access/transam/xlog.c:1276 +#: postmaster/postmaster.c:4527 #, 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" +msgid "could not fork startup process: %m" +msgstr "n'a pas pu lancer le processus fils de d�marrage : %m" -#: access/transam/xlog.c:1284 +#: postmaster/postmaster.c:4531 #, 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" +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" -#: access/transam/xlog.c:1739 -#: access/transam/xlog.c:9602 -#: replication/walreceiver.c:482 -#: replication/walsender.c:596 +#: postmaster/postmaster.c:4535 #, c-format -msgid "could not seek in log file %u, segment %u to offset %u: %m" +msgid "could not fork WAL writer process: %m" msgstr "" -"n'a pas pu se d�placer dans le journal de transactions %u, du segment %u au\n" -"segment %u : %m" +"n'a pas pu cr�er un processus fils du processus d'�criture des journaux de\n" +"transaction : %m" -#: access/transam/xlog.c:1756 -#: replication/walreceiver.c:499 +#: postmaster/postmaster.c:4539 #, c-format -msgid "could not write to log file %u, segment %u at offset %u, length %lu: %m" +msgid "could not fork WAL receiver process: %m" msgstr "" -"n'a pas pu �crire le journal de transactions %u, segment %u au d�calage %u,\n" -"longueur %lu : %m" +"n'a pas pu cr�er un processus fils de r�ception des journaux de\n" +"transactions : %m" -#: access/transam/xlog.c:1958 +#: postmaster/postmaster.c:4543 #, c-format -msgid "updated min recovery point to %X/%X" -msgstr "mise � jour du point minimum de restauration sur %X/%X" +msgid "could not fork process: %m" +msgstr "n'a pas pu lancer le processus fils : %m" -#: access/transam/xlog.c:2299 -#: access/transam/xlog.c:2403 -#: access/transam/xlog.c:2632 -#: access/transam/xlog.c:2703 -#: access/transam/xlog.c:2760 -#: replication/walsender.c:584 +#: postmaster/postmaster.c:4828 #, c-format -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 "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" -#: access/transam/xlog.c:2324 -#: access/transam/xlog.c:2457 -#: access/transam/xlog.c:4287 -#: access/transam/xlog.c:8464 -#: access/transam/xlog.c:8619 -#: storage/smgr/md.c:278 -#: storage/file/copydir.c:172 -#: postmaster/postmaster.c:3645 +#: postmaster/postmaster.c:4860 #, c-format -msgid "could not create file \"%s\": %m" -msgstr "n'a pas pu cr�er le fichier � %s � : %m" +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" -#: access/transam/xlog.c:2356 -#: access/transam/xlog.c:2489 -#: access/transam/xlog.c:4339 -#: access/transam/xlog.c:4395 -#: commands/copy.c:1316 -#: storage/file/copydir.c:197 -#: postmaster/postmaster.c:3655 -#: postmaster/postmaster.c:3665 -#: utils/misc/guc.c:7008 -#: utils/misc/guc.c:7033 -#: utils/init/miscinit.c:1054 -#: utils/init/miscinit.c:1063 -#: utils/init/miscinit.c:1070 +#: postmaster/postmaster.c:4889 postmaster/postmaster.c:4896 #, c-format -msgid "could not write to file \"%s\": %m" -msgstr "n'a pas pu �crire dans le fichier � %s � : %m" +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" -#: access/transam/xlog.c:2364 -#: access/transam/xlog.c:2496 -#: access/transam/xlog.c:4401 -#: storage/smgr/md.c:909 -#: storage/smgr/md.c:1083 -#: storage/smgr/md.c:1226 -#: storage/file/copydir.c:269 +#: postmaster/postmaster.c:4905 #, c-format -msgid "could not fsync file \"%s\": %m" -msgstr "n'a pas pu synchroniser sur disque (fsync) le fichier � %s � : %m" +msgid "could not remove file \"%s\": %s\n" +msgstr "n'a pas pu supprimer le fichier � %s � : %s\n" -#: access/transam/xlog.c:2369 -#: access/transam/xlog.c:2501 -#: access/transam/xlog.c:4406 -#: storage/file/copydir.c:211 +#: postmaster/postmaster.c:4922 #, c-format -msgid "could not close file \"%s\": %m" -msgstr "n'a pas pu fermer le fichier � %s � : %m" +msgid "could not map view of backend variables: error code %d\n" +msgstr "" +"n'a pas pu ex�cuter MapViewOfFile sur les variables de configuration : code\n" +"d'erreur %d\n" -#: access/transam/xlog.c:2442 -#: access/transam/xlog.c:4114 -#: access/transam/xlog.c:4208 -#: access/transam/xlog.c:4306 -#: storage/smgr/md.c:532 -#: storage/smgr/md.c:785 -#: storage/file/copydir.c:165 -#: storage/file/copydir.c:255 -#: utils/error/elog.c:1403 -#: utils/init/miscinit.c:1005 -#: utils/init/miscinit.c:1118 +#: postmaster/postmaster.c:4931 #, c-format -msgid "could not open file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier � %s � : %m" +msgid "could not unmap view of backend variables: error code %d\n" +msgstr "" +"n'a pas pu ex�cuter UnmapViewOfFile sur les variables de configuration : " +"code\n" +"d'erreur %d\n" -#: access/transam/xlog.c:2470 -#: access/transam/xlog.c:4318 -#: access/transam/xlog.c:8567 -#: access/transam/xlog.c:8641 -#: access/transam/xlog.c:9024 -#: access/transam/xlog.c:9049 -#: storage/file/copydir.c:186 -#: utils/adt/genfile.c:133 +#: postmaster/postmaster.c:4938 #, c-format -msgid "could not read file \"%s\": %m" -msgstr "n'a pas pu lire le fichier � %s � : %m" +msgid "could not close handle to backend parameter variables: error code %d\n" +msgstr "" +"n'a pas pu fermer le lien vers les variables des param�tres du serveur :\n" +"code d'erreur %d\n" -#: access/transam/xlog.c:2473 -#, c-format -msgid "not enough data in file \"%s\"" -msgstr "donn�es insuffisantes dans le fichier � %s �" +#: postmaster/postmaster.c:5083 +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:5088 +msgid "could not post child completion status\n" +msgstr "n'a pas pu poster le statut de fin de l'enfant\n" -#: access/transam/xlog.c:2592 +#: utils/cache/ts_cache.c:620 commands/tsearchcmds.c:1753 +#: commands/tsearchcmds.c:1909 catalog/namespace.c:2276 #, c-format -msgid "could not link file \"%s\" to \"%s\" (initialization of log file %u, segment %u): %m" -msgstr "" -"n'a pas pu lier le fichier � %s � � � %s � (initialisation du journal de\n" -"transactions %u, segment %u) : %m" +msgid "text search configuration \"%s\" does not exist" +msgstr "la configuration de recherche plein texte � %s � n'existe pas" + +#: utils/cache/plancache.c:606 +msgid "cached plan must not change result type" +msgstr "le plan en cache ne doit pas modifier le type en r�sultat" -#: access/transam/xlog.c:2604 +#: utils/cache/relcache.c:4321 #, c-format -msgid "could not rename file \"%s\" to \"%s\" (initialization of log file %u, segment %u): %m" +msgid "could not create relation-cache initialization file \"%s\": %m" msgstr "" -"n'a pas pu renommer le fichier � %s � en � %s � (initialisation du journal\n" -"de transactions %u, segment %u) : %m" +"n'a pas pu cr�er le fichier d'initialisation relation-cache � %s � : %m" -#: access/transam/xlog.c:2787 -#: replication/walreceiver.c:456 -#, c-format -msgid "could not close log file %u, segment %u: %m" -msgstr "n'a pas pu fermer le journal de transactions %u, segment %u : %m" +#: utils/cache/relcache.c:4323 +msgid "Continuing anyway, but there's something wrong." +msgstr "Continue malgr� tout, mais quelque chose s'est mal pass�." -#: access/transam/xlog.c:2859 -#: access/transam/xlog.c:3024 -#: access/transam/xlog.c:8447 -#: storage/file/copydir.c:86 -#: storage/file/copydir.c:125 -#: utils/adt/dbsize.c:65 -#: utils/adt/dbsize.c:217 -#: utils/adt/dbsize.c:288 -#: utils/adt/genfile.c:170 +#: utils/cache/relcache.c:4537 #, c-format -msgid "could not stat file \"%s\": %m" -msgstr "n'a pas pu tester le fichier � %s � : %m" +msgid "could not remove cache file \"%s\": %m" +msgstr "n'a pas pu supprimer le fichier cache � %s � : %m" -#: access/transam/xlog.c:2867 -#: access/transam/xlog.c:8646 -#: storage/smgr/md.c:348 -#: storage/smgr/md.c:395 -#: storage/smgr/md.c:1192 -#, c-format -msgid "could not remove file \"%s\": %m" -msgstr "n'a pas pu supprimer le fichier � %s � : %m" +#: utils/cache/relmapper.c:454 +msgid "cannot PREPARE a transaction that modified relation mapping" +msgstr "" +"ne peut pas pr�parer (PREPARE) une transaction qui a modifi� la " +"correspondance\n" +"de relation" -#: access/transam/xlog.c:3003 +#: utils/cache/relmapper.c:596 utils/cache/relmapper.c:702 #, c-format -msgid "archive file \"%s\" has wrong size: %lu instead of %lu" -msgstr "le fichier d'archive � %s � a la mauvaise taille : %lu au lieu de %lu" +msgid "could not open relation mapping file \"%s\": %m" +msgstr "" +"n'a pas pu ouvrir le fichier de correspondance des relations � %s � : %m" -#: access/transam/xlog.c:3012 +#: utils/cache/relmapper.c:609 #, c-format -msgid "restored log file \"%s\" from archive" -msgstr "restauration du journal de transactions � %s � � partir de l'archive" +msgid "could not read relation mapping file \"%s\": %m" +msgstr "n'a pas pu lire le fichier de correspondance des relations � %s � : %m" -#: access/transam/xlog.c:3062 +#: utils/cache/relmapper.c:619 #, 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 "relation mapping file \"%s\" contains invalid data" +msgstr "" +"le fichier de correspondance des relations � %s � contient des donn�es " +"invalides" -#: access/transam/xlog.c:3177 +#: utils/cache/relmapper.c:629 #, c-format -msgid "%s \"%s\": return code %d" -msgstr "%s � %s � : code de retour %d" +msgid "relation mapping file \"%s\" contains incorrect checksum" +msgstr "" +"le fichier de correspondance des relations � %s � contient une somme de\n" +"contr�le incorrecte" -#: access/transam/xlog.c:3287 -#: access/transam/xlog.c:3470 +#: utils/cache/relmapper.c:741 #, 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" +msgid "could not write to relation mapping file \"%s\": %m" +msgstr "" +"n'a pas pu �crire le fichier de correspondance des relations � %s � : %m" -#: access/transam/xlog.c:3341 +#: utils/cache/relmapper.c:754 #, c-format -msgid "recycled transaction log file \"%s\"" -msgstr "recyclage du journal de transactions � %s �" +msgid "could not fsync relation mapping file \"%s\": %m" +msgstr "" +"n'a pas pu synchroniser (fsync) le fichier de correspondance des relations � " +"%s � : %m" -#: access/transam/xlog.c:3357 +#: utils/cache/relmapper.c:760 #, c-format -msgid "removing transaction log file \"%s\"" -msgstr "suppression du journal de transactions � %s �" +msgid "could not close relation mapping file \"%s\": %m" +msgstr "" +"n'a pas pu fermer le fichier de correspondance des relations � %s � : %m" -#: access/transam/xlog.c:3380 +#: utils/cache/lsyscache.c:2413 utils/cache/lsyscache.c:2446 +#: utils/cache/lsyscache.c:2479 utils/cache/lsyscache.c:2512 #, 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" +msgid "type %s is only a shell" +msgstr "le type %s est seulement un shell" -#: access/transam/xlog.c:3392 +#: utils/cache/lsyscache.c:2418 #, 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" +msgid "no input function available for type %s" +msgstr "aucune fonction en entr�e disponible pour le type %s" -#: access/transam/xlog.c:3430 -#: access/transam/xlog.c:3440 +#: utils/cache/lsyscache.c:2451 #, c-format -msgid "required WAL directory \"%s\" does not exist" -msgstr "le r�pertoire � %s � requis pour les journaux de transactions n'existe pas" +msgid "no output function available for type %s" +msgstr "aucune fonction en sortie disponible pour le type %s" -#: access/transam/xlog.c:3446 +#: utils/cache/lsyscache.c:2484 utils/adt/arrayfuncs.c:1307 #, c-format -msgid "creating missing WAL directory \"%s\"" -msgstr "cr�ation du r�pertoire manquant � %s � pour les journaux de transactions" +msgid "no binary input function available for type %s" +msgstr "aucune fonction d'entr�e binaire disponible pour le type %s" -#: access/transam/xlog.c:3449 +#: utils/cache/lsyscache.c:2517 utils/adt/arrayfuncs.c:1529 #, c-format -msgid "could not create missing directory \"%s\": %m" -msgstr "n'a pas pu cr�er le r�pertoire � %s � manquant : %m" +msgid "no binary output function available for type %s" +msgstr "aucune fonction de sortie binaire disponible pour le type %s" -#: access/transam/xlog.c:3483 +#: utils/cache/typcache.c:195 parser/parse_type.c:202 #, c-format -msgid "removing transaction log backup history file \"%s\"" -msgstr "suppression du fichier historique des journaux de transaction � %s �" +msgid "type \"%s\" is only a shell" +msgstr "le type � %s � est seulement un shell" -#: access/transam/xlog.c:3603 +#: utils/cache/typcache.c:634 #, c-format -msgid "incorrect hole size in record at %X/%X" -msgstr "taille du trou incorrect � l'enregistrement %X/%X" +msgid "type %s is not composite" +msgstr "le type %s n'est pas un type composite" -#: access/transam/xlog.c:3616 -#, c-format -msgid "incorrect total length in record at %X/%X" -msgstr "longueur totale incorrecte � l'enregistrement %X/%X" +#: utils/cache/typcache.c:648 +msgid "record type has not been registered" +msgstr "le type d'enregistrement n'a pas �t� enregistr�" -#: access/transam/xlog.c:3629 +#: utils/cache/typcache.c:1001 commands/typecmds.c:1272 #, 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" +msgid "%s is not an enum" +msgstr "%s n'est pas un enum" -#: access/transam/xlog.c:3698 -#: access/transam/xlog.c:3734 -#, c-format -msgid "invalid record offset at %X/%X" -msgstr "d�calage invalide de l'enregistrement %X/%X" +#: utils/hash/dynahash.c:955 storage/ipc/shmem.c:190 +#: storage/lmgr/predicate.c:2246 storage/lmgr/predicate.c:2261 +#: storage/lmgr/predicate.c:3653 storage/lmgr/predicate.c:4796 +#: storage/lmgr/proc.c:197 storage/lmgr/proc.c:216 storage/lmgr/lock.c:723 +#: storage/lmgr/lock.c:792 storage/lmgr/lock.c:2301 storage/lmgr/lock.c:2700 +#: storage/lmgr/lock.c:2765 +msgid "out of shared memory" +msgstr "m�moire partag�e �puis�e" -#: access/transam/xlog.c:3742 -#, c-format -msgid "contrecord is requested by %X/%X" -msgstr "� contrecord � est requis par %X/%X" +#: utils/misc/help_config.c:131 +msgid "internal error: unrecognized run-time parameter type\n" +msgstr "erreur interne : type de param�tre d'ex�cution non reconnu\n" -#: access/transam/xlog.c:3757 -#, c-format -msgid "invalid xlog switch record at %X/%X" -msgstr "enregistrement de basculement du journal de transaction invalide � %X/%X" +#: utils/misc/guc.c:525 +msgid "Ungrouped" +msgstr "D�group�" -#: access/transam/xlog.c:3765 -#, c-format -msgid "record with zero length at %X/%X" -msgstr "enregistrement de longueur nulle � %X/%X" +#: utils/misc/guc.c:527 +msgid "File Locations" +msgstr "Emplacement des fichiers" -#: access/transam/xlog.c:3774 -#, c-format -msgid "invalid record length at %X/%X" -msgstr "longueur invalide de l'enregistrement � %X/%X" +#: utils/misc/guc.c:529 +msgid "Connections and Authentication" +msgstr "Connexions et authentification" -#: access/transam/xlog.c:3781 -#, c-format -msgid "invalid resource manager ID %u at %X/%X" -msgstr "identifiant du gestionnaire de ressources invalide %u � %X/%X" +#: utils/misc/guc.c:531 +msgid "Connections and Authentication / Connection Settings" +msgstr "Connexions et authentification / Param�trages de connexion" -#: access/transam/xlog.c:3794 -#: access/transam/xlog.c:3810 -#, c-format -msgid "record with incorrect prev-link %X/%X at %X/%X" -msgstr "enregistrement avec prev-link %X/%X incorrect � %X/%X" +#: utils/misc/guc.c:533 +msgid "Connections and Authentication / Security and Authentication" +msgstr "Connexions et authentification / S�curit� et authentification" -#: access/transam/xlog.c:3839 -#, c-format -msgid "record length %u at %X/%X too long" -msgstr "longueur trop importante de l'enregistrement %u � %X/%X" +#: utils/misc/guc.c:535 +msgid "Resource Usage" +msgstr "Utilisation des ressources" -#: access/transam/xlog.c:3879 -#, c-format -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" +#: utils/misc/guc.c:537 +msgid "Resource Usage / Memory" +msgstr "Utilisation des ressources / M�moire" -#: access/transam/xlog.c:3889 -#, c-format -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" +#: utils/misc/guc.c:539 +msgid "Resource Usage / Kernel Resources" +msgstr "Utilisation des ressources / Ressources noyau" -#: access/transam/xlog.c:3979 -#, c-format -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" +#: utils/misc/guc.c:541 +msgid "Resource Usage / Cost-Based Vacuum Delay" +msgstr "Utilisation des ressources / D�lai du VACUUM bas� sur le co�t" -#: access/transam/xlog.c:3986 -#: access/transam/xlog.c:4032 -#, c-format -msgid "invalid info bits %04X in log file %u, segment %u, offset %u" -msgstr "" -"bits info %04X invalides dans le journal de transactions %u, segment %u,\n" -"d�calage %u" +#: utils/misc/guc.c:543 +msgid "Resource Usage / Background Writer" +msgstr "Utilisation des ressources / Processus d'�criture en t�che de fond" -#: access/transam/xlog.c:4008 -#: access/transam/xlog.c:4016 -#: access/transam/xlog.c:4023 -msgid "WAL file is from different database system" -msgstr "le journal de transactions provient d'un syst�me de bases de donn�es diff�rent" +#: utils/misc/guc.c:545 +msgid "Resource Usage / Asynchronous Behavior" +msgstr "Utilisation des ressources / Comportement asynchrone" -#: access/transam/xlog.c:4009 -#, c-format -msgid "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 de pg_control du syst�me de base de donn�es est %s." +#: utils/misc/guc.c:547 +msgid "Write-Ahead Log" +msgstr "Write-Ahead Log" -#: access/transam/xlog.c:4017 -msgid "Incorrect XLOG_SEG_SIZE in page header." -msgstr "XLOG_SEG_SIZE incorrecte dans l'en-t�te de page." +#: utils/misc/guc.c:549 +msgid "Write-Ahead Log / Settings" +msgstr "Write-Ahead Log / Param�trages" -#: access/transam/xlog.c:4024 -msgid "Incorrect XLOG_BLCKSZ in page header." -msgstr "XLOG_BLCKSZ incorrect dans l'en-t�te de page." +#: utils/misc/guc.c:551 +msgid "Write-Ahead Log / Checkpoints" +msgstr "Write-Ahead Log / Points de v�rification (Checkpoints)" -#: access/transam/xlog.c:4040 -#, c-format -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" +#: utils/misc/guc.c:553 +msgid "Write-Ahead Log / Archiving" +msgstr "Write-Ahead Log / Archivage" -#: access/transam/xlog.c:4052 -#, c-format -msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u" -msgstr "" -"identifiant timeline %u inattendu dans le journal de transactions %u,\n" -"segment %u, d�calage %u" +#: utils/misc/guc.c:555 +msgid "Replication" +msgstr "R�plication" -#: access/transam/xlog.c:4070 -#, c-format -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" +#: utils/misc/guc.c:557 +msgid "Replication / Master Server" +msgstr "R�plication / Serveur ma�tre" -#: access/transam/xlog.c:4143 -#, c-format -msgid "syntax error in history file: %s" -msgstr "erreur de syntaxe dans le fichier historique : %s" +#: utils/misc/guc.c:559 +msgid "Replication / Standby Servers" +msgstr "R�plication / Serveurs en attente" -#: access/transam/xlog.c:4144 -msgid "Expected a numeric timeline ID." -msgstr "Identifiant timeline num�rique attendue" +#: utils/misc/guc.c:561 +msgid "Query Tuning" +msgstr "Optimisation des requ�tes" -#: access/transam/xlog.c:4149 -#, c-format -msgid "invalid data in history file: %s" -msgstr "donn�es invalides dans le fichier historique : � %s �" +#: utils/misc/guc.c:563 +msgid "Query Tuning / Planner Method Configuration" +msgstr "" +"Optimisation des requ�tes / Configuration de la m�thode du planificateur" -#: access/transam/xlog.c:4150 -msgid "Timeline IDs must be in increasing sequence." -msgstr "Les identifiants timeline doivent �tre en ordre croissant." +#: utils/misc/guc.c:565 +msgid "Query Tuning / Planner Cost Constants" +msgstr "Optimisation des requ�tes / Constantes des co�ts du planificateur" -#: access/transam/xlog.c:4163 -#, c-format -msgid "invalid data in history file \"%s\"" -msgstr "donn�es invalides dans le fichier historique � %s �" +#: utils/misc/guc.c:567 +msgid "Query Tuning / Genetic Query Optimizer" +msgstr "Optimisation des requ�tes / Optimiseur g�n�tique de requ�tes" -#: access/transam/xlog.c:4164 -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." +#: utils/misc/guc.c:569 +msgid "Query Tuning / Other Planner Options" +msgstr "Optimisation des requ�tes / Autres options du planificateur" -#: access/transam/xlog.c:4423 -#, c-format -msgid "could not link file \"%s\" to \"%s\": %m" -msgstr "n'a pas pu lier le fichier � %s � � � %s � : %m" +#: utils/misc/guc.c:571 +msgid "Reporting and Logging" +msgstr "Rapports et traces" -#: access/transam/xlog.c:4430 -#: access/transam/xlog.c:5385 -#: access/transam/xlog.c:5438 -#: access/transam/xlog.c:6030 -#: postmaster/pgarch.c:715 -#, c-format -msgid "could not rename file \"%s\" to \"%s\": %m" -msgstr "n'a pas pu renommer le fichier � %s � en � %s � : %m" +#: utils/misc/guc.c:573 +msgid "Reporting and Logging / Where to Log" +msgstr "Rapports et traces / O� tracer" -#: access/transam/xlog.c:4512 -#, c-format -msgid "could not create control file \"%s\": %m" -msgstr "n'a pas pu cr�er le fichier de contr�le � %s � : %m" +#: utils/misc/guc.c:575 +msgid "Reporting and Logging / When to Log" +msgstr "Rapports et traces / Quand tracer" -#: access/transam/xlog.c:4523 -#: access/transam/xlog.c:4748 -#, c-format -msgid "could not write to control file: %m" -msgstr "n'a pas pu �crire le fichier de contr�le : %m" +#: utils/misc/guc.c:577 +msgid "Reporting and Logging / What to Log" +msgstr "Rapports et traces / Que tracer" -#: access/transam/xlog.c:4529 -#: access/transam/xlog.c:4754 -#, c-format -msgid "could not fsync control file: %m" -msgstr "n'a pas pu synchroniser sur disque (fsync) le fichier de contr�le : %m" +#: utils/misc/guc.c:579 +msgid "Statistics" +msgstr "Statistiques" -#: access/transam/xlog.c:4534 -#: access/transam/xlog.c:4759 -#, c-format -msgid "could not close control file: %m" -msgstr "n'a pas pu fermer le fichier de contr�le : %m" +#: utils/misc/guc.c:581 +msgid "Statistics / Monitoring" +msgstr "Statistiques / Surveillance" -#: access/transam/xlog.c:4552 -#: access/transam/xlog.c:4737 -#, c-format -msgid "could not open control file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier de contr�le � %s � : %m" +#: utils/misc/guc.c:583 +msgid "Statistics / Query and Index Statistics Collector" +msgstr "" +"Statistiques / R�cup�rateur des statistiques sur les requ�tes et sur les " +"index" -#: access/transam/xlog.c:4558 -#, c-format -msgid "could not read from control file: %m" -msgstr "n'a pas pu lire le fichier de contr�le : %m" +#: utils/misc/guc.c:585 +msgid "Autovacuum" +msgstr "Autovacuum" -#: access/transam/xlog.c:4571 -#: access/transam/xlog.c:4580 -#: access/transam/xlog.c:4604 -#: access/transam/xlog.c:4611 -#: access/transam/xlog.c:4618 -#: access/transam/xlog.c:4623 -#: access/transam/xlog.c:4630 -#: access/transam/xlog.c:4637 -#: access/transam/xlog.c:4644 -#: access/transam/xlog.c:4651 -#: access/transam/xlog.c:4658 -#: access/transam/xlog.c:4665 -#: access/transam/xlog.c:4674 -#: access/transam/xlog.c:4681 -#: access/transam/xlog.c:4690 -#: access/transam/xlog.c:4697 -#: access/transam/xlog.c:4706 -#: access/transam/xlog.c:4713 -#: utils/init/miscinit.c:1136 -msgid "database files are incompatible with server" -msgstr "les fichiers de la base de donn�es sont incompatibles avec le serveur" +#: utils/misc/guc.c:587 +msgid "Client Connection Defaults" +msgstr "Valeurs par d�faut pour les connexions client" -#: access/transam/xlog.c:4572 -#, 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)." +#: utils/misc/guc.c:589 +msgid "Client Connection Defaults / Statement Behavior" 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)." +"Valeurs par d�faut pour les connexions client / Comportement des instructions" -#: access/transam/xlog.c:4576 -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." +#: utils/misc/guc.c:591 +msgid "Client Connection Defaults / Locale and Formatting" +msgstr "Valeurs par d�faut pour les connexions client / Locale et formattage" -#: access/transam/xlog.c:4581 -#, c-format -msgid "The database cluster was initialized with PG_CONTROL_VERSION %d, but the server was compiled with PG_CONTROL_VERSION %d." +#: utils/misc/guc.c:593 +msgid "Client Connection Defaults / Other Defaults" 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." +"Valeurs par d�faut pour les connexions client / Autres valeurs par d�faut" -#: access/transam/xlog.c:4584 -#: access/transam/xlog.c:4608 -#: access/transam/xlog.c:4615 -#: access/transam/xlog.c:4620 -msgid "It looks like you need to initdb." -msgstr "Il semble que vous avez besoin d'initdb." +#: utils/misc/guc.c:595 +msgid "Lock Management" +msgstr "Gestion des verrous" -#: access/transam/xlog.c:4595 -msgid "incorrect checksum in control file" -msgstr "somme de contr�le incorrecte dans le fichier de contr�le" +#: utils/misc/guc.c:597 +msgid "Version and Platform Compatibility" +msgstr "Compatibilit� des versions et des plateformes" -#: access/transam/xlog.c:4605 -#, c-format -msgid "The database cluster was initialized with CATALOG_VERSION_NO %d, but the server was compiled with CATALOG_VERSION_NO %d." +#: utils/misc/guc.c:599 +msgid "Version and Platform Compatibility / Previous PostgreSQL Versions" 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." +"Compatibilit� des versions et des plateformes / Anciennes versions de " +"PostgreSQL" -#: access/transam/xlog.c:4612 -#, c-format -msgid "The database cluster was initialized with MAXALIGN %d, but the server was compiled with MAXALIGN %d." +#: utils/misc/guc.c:601 +msgid "Version and Platform Compatibility / Other Platforms and Clients" 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." +"Compatibilit� des versions et des plateformes / Anciennes plateformes et " +"anciens clients" -#: access/transam/xlog.c:4619 -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." +#: utils/misc/guc.c:603 +msgid "Error Handling" +msgstr "Gestion des erreurs" -#: access/transam/xlog.c:4624 -#, c-format -msgid "The database cluster was initialized with BLCKSZ %d, but the server was compiled with BLCKSZ %d." -msgstr "" -"Le cluster de base de donn�es a �t� initialis� avec un BLCKSZ � %d alors que\n" -"le serveur a �t� compil� avec un BLCKSZ � %d." +#: utils/misc/guc.c:605 +msgid "Preset Options" +msgstr "Options pr�-configur�es" -#: access/transam/xlog.c:4627 -#: access/transam/xlog.c:4634 -#: access/transam/xlog.c:4641 -#: access/transam/xlog.c:4648 -#: access/transam/xlog.c:4655 -#: access/transam/xlog.c:4662 -#: access/transam/xlog.c:4669 -#: access/transam/xlog.c:4677 -#: access/transam/xlog.c:4684 -#: access/transam/xlog.c:4693 -#: access/transam/xlog.c:4700 -#: access/transam/xlog.c:4709 -#: access/transam/xlog.c:4716 -msgid "It looks like you need to recompile or initdb." -msgstr "Il semble que vous avez besoin de recompiler ou de relancer initdb." +#: utils/misc/guc.c:607 +msgid "Customized Options" +msgstr "Options personnalis�es" -#: access/transam/xlog.c:4631 -#, c-format -msgid "The database cluster was initialized with RELSEG_SIZE %d, but the server was compiled with RELSEG_SIZE %d." -msgstr "" -"Le cluster de bases de donn�es a �t� initialis� avec un RELSEG_SIZE � %d\n" -"alors que le serveur a �t� compil� avec un RELSEG_SIZE � %d." +#: utils/misc/guc.c:609 +msgid "Developer Options" +msgstr "Options pour le d�veloppeur" -#: access/transam/xlog.c:4638 -#, c-format -msgid "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was compiled with XLOG_BLCKSZ %d." -msgstr "" -"Le cluster de base de donn�es a �t� initialis� avec un XLOG_BLCKSZ � %d\n" -"alors que le serveur a �t� compil� avec un XLOG_BLCKSZ � %d." +#: utils/misc/guc.c:663 +msgid "Enables the planner's use of sequential-scan plans." +msgstr "Active l'utilisation des parcours s�quentiels par le planificateur." -#: access/transam/xlog.c:4645 -#, c-format -msgid "The database cluster was initialized with XLOG_SEG_SIZE %d, but the server was compiled with XLOG_SEG_SIZE %d." -msgstr "" -"Le cluster de bases de donn�es a �t� initialis� avec un XLOG_SEG_SIZE � %d\n" -"alors que le serveur a �t� compil� avec un XLOG_SEG_SIZE � %d." +#: utils/misc/guc.c:672 +msgid "Enables the planner's use of index-scan plans." +msgstr "Active l'utilisation des parcours d'index par le planificateur." -#: access/transam/xlog.c:4652 -#, c-format -msgid "The database cluster was initialized with NAMEDATALEN %d, but the server was compiled with NAMEDATALEN %d." -msgstr "" -"Le cluster de bases de donn�es a �t� initialis� avec un NAMEDATALEN � %d\n" -"alors que le serveur a �t� compil� avec un NAMEDATALEN � %d." +#: utils/misc/guc.c:681 +msgid "Enables the planner's use of bitmap-scan plans." +msgstr "Active l'utilisation des parcours de bitmap par le planificateur." -#: access/transam/xlog.c:4659 -#, c-format -msgid "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server was compiled with INDEX_MAX_KEYS %d." -msgstr "" -"Le groupe de bases de donn�es a �t� initialis� avec un INDEX_MAX_KEYS � %d\n" -"alors que le serveur a �t� compil� avec un INDEX_MAX_KEYS � %d." +#: utils/misc/guc.c:690 +msgid "Enables the planner's use of TID scan plans." +msgstr "Active l'utilisation de plans de parcours TID par le planificateur." -#: access/transam/xlog.c:4666 -#, 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." +#: utils/misc/guc.c:699 +msgid "Enables the planner's use of explicit sort steps." msgstr "" -"Le cluster de bases de donn�es a �t� initialis� avec un TOAST_MAX_CHUNK_SIZE\n" -"� %d alors que le serveur a �t� compil� avec un TOAST_MAX_CHUNK_SIZE � %d." +"Active l'utilisation des �tapes de tris explicites par le planificateur." -#: access/transam/xlog.c:4675 -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." +#: utils/misc/guc.c:708 +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." -#: access/transam/xlog.c:4682 -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." +#: utils/misc/guc.c:717 +msgid "Enables the planner's use of materialization." +msgstr "Active l'utilisation de la mat�rialisation par le planificateur." -#: access/transam/xlog.c:4691 -msgid "The database cluster was initialized without USE_FLOAT4_BYVAL but the server was compiled with USE_FLOAT4_BYVAL." +#: utils/misc/guc.c:726 +msgid "Enables the planner's use of nested-loop join plans." 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." +"Active l'utilisation de plans avec des jointures imbriqu�es par le " +"planificateur." -#: access/transam/xlog.c:4698 -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." +#: utils/misc/guc.c:735 +msgid "Enables the planner's use of merge join plans." +msgstr "Active l'utilisation de plans de jointures MERGE par le planificateur." -#: access/transam/xlog.c:4707 -msgid "The database cluster was initialized without USE_FLOAT8_BYVAL but the server was compiled with USE_FLOAT8_BYVAL." +#: utils/misc/guc.c:744 +msgid "Enables the planner's use of hash join plans." 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." +"Active l'utilisation de plans de jointures h�ch�es par le planificateur." + +#: utils/misc/guc.c:753 +msgid "Enables genetic query optimization." +msgstr "Active l'optimisation g�n�tique des requ�tes." -#: access/transam/xlog.c:4714 -msgid "The database cluster was initialized with USE_FLOAT8_BYVAL but the server was compiled without USE_FLOAT8_BYVAL." +#: utils/misc/guc.c:754 +msgid "This algorithm attempts to do planning without exhaustive searching." 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." +"Cet algorithme essaie de faire une planification sans recherche exhaustive." -#: access/transam/xlog.c:4963 -#, c-format -msgid "could not write bootstrap transaction log file: %m" -msgstr "n'a pas pu �crire le � bootstrap � du journal des transactions : %m" +#: utils/misc/guc.c:764 +msgid "Shows whether the current user is a superuser." +msgstr "Affiche si l'utilisateur actuel est un super-utilisateur." -#: access/transam/xlog.c:4969 -#, 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" +#: utils/misc/guc.c:774 +msgid "Enables advertising the server via Bonjour." +msgstr "Active la publication du serveur via Bonjour." -#: access/transam/xlog.c:4974 -#, c-format -msgid "could not close bootstrap transaction log file: %m" -msgstr "n'a pas pu fermer le � bootstrap � du journal des transactions : %m" +#: utils/misc/guc.c:783 +msgid "Enables SSL connections." +msgstr "Active les connexions SSL." -#: access/transam/xlog.c:5136 -#, c-format -msgid "could not open recovery command file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier de restauration � %s � : %m" +#: utils/misc/guc.c:792 +msgid "Forces synchronization of updates to disk." +msgstr "Force la synchronisation des mises � jour sur le disque." -#: access/transam/xlog.c:5160 -#, c-format -msgid "restore_command = '%s'" -msgstr "restore_command = '%s'" +#: utils/misc/guc.c:793 +msgid "" +"The server will use the fsync() system call in several places to make sure " +"that updates are physically written to disk. This insures that a database " +"cluster will recover to a consistent state after an operating system or " +"hardware crash." +msgstr "" +"Le serveur utilisera l'appel syst�me fsync() � diff�rents endroits pour\n" +"s'assurer que les mises � jour sont �crites physiquement sur le disque. " +"Ceci\n" +"nous assure qu'un groupe de bases de donn�es se retrouvera dans un �tat\n" +"coh�rent apr�s un arr�t brutal d� au syst�me d'exploitation ou au mat�riel." -#: access/transam/xlog.c:5167 -#, c-format -msgid "recovery_end_command = '%s'" -msgstr "recovery_end_command = '%s'" +#: utils/misc/guc.c:804 +msgid "Continues processing past damaged page headers." +msgstr "Continue le travail apr�s les en-t�tes de page endommag�s." -#: access/transam/xlog.c:5174 -#, c-format -msgid "archive_cleanup_command = '%s'" -msgstr "archive_cleanup_command = '%s'" +#: utils/misc/guc.c:805 +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" +"Initialiser zero_damaged_pages � true fait que le syst�me ne rapporte qu'un\n" +"message d'attention et continue � travailler. Ce comportement d�truira des\n" +"donn�es, notamment toutes les lignes de la page endommag�e." -#: access/transam/xlog.c:5188 -#, c-format -msgid "recovery_target_timeline is not a valid number: \"%s\"" -msgstr "recovery_target_timeline n'est pas un nombre valide : � %s �" +#: utils/misc/guc.c:818 +msgid "Writes full pages to WAL when first modified after a checkpoint." +msgstr "" +"�crit des pages compl�tes dans les WAL lors d'une premi�re modification " +"apr�s\n" +"un point de v�rification." -#: access/transam/xlog.c:5193 -#, c-format -msgid "recovery_target_timeline = %u" -msgstr "recovery_target_timeline = %u" +#: utils/misc/guc.c:819 +msgid "" +"A page write in process during an operating system crash might be only " +"partially written to disk. During recovery, the row changes stored in WAL " +"are not enough to recover. This option writes pages when first modified " +"after a checkpoint to WAL so full recovery is possible." +msgstr "" +"Une page �crite au moment d'un arr�t brutal du syst�me d'exploitation\n" +"pourrait �tre seulement partiellement �crite sur le disque. Lors de la\n" +"r�cup�ration, les modifications de la ligne, stock�es dans le journal de\n" +"transaction, ne seront pas suffisantes pour terminer la r�cup�ration. Cette\n" +"option �crit les pages lors de la premi�re modification apr�s un point de\n" +"v�rification des journaux de transaction pour que la r�cup�ration compl�te\n" +"soit possible." -#: access/transam/xlog.c:5196 -msgid "recovery_target_timeline = latest" -msgstr "recovery_target_timeline = latest" +#: utils/misc/guc.c:831 +msgid "Runs the server silently." +msgstr "Lance le serveur de mani�re silencieuse." -#: access/transam/xlog.c:5204 -#, c-format -msgid "recovery_target_xid is not a valid number: \"%s\"" -msgstr "recovery_target_xid n'est pas un nombre valide : � %s �" +#: utils/misc/guc.c:832 +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" +"t�che de fond et les terminaux de contr�les seront d�s-associ�s." -#: access/transam/xlog.c:5207 -#, c-format -msgid "recovery_target_xid = %u" -msgstr "recovery_target_xid = %u" +#: utils/misc/guc.c:841 +msgid "Logs each checkpoint." +msgstr "Trace tous les points de v�rification." -#: access/transam/xlog.c:5230 -#, c-format -msgid "recovery_target_time = '%s'" -msgstr "recovery_target_time = '%s'" +#: utils/misc/guc.c:850 +msgid "Logs each successful connection." +msgstr "Trace toutes les connexions r�ussies." -#: access/transam/xlog.c:5241 -#: access/transam/xlog.c:5250 -#: utils/misc/guc.c:4895 -#, c-format -msgid "parameter \"%s\" requires a Boolean value" -msgstr "le param�tre � %s � requiert une valeur bool�enne" +#: utils/misc/guc.c:859 +msgid "Logs end of a session, including duration." +msgstr "Trace la fin d'une session, avec sa dur�e." -#: access/transam/xlog.c:5243 -#, c-format -msgid "recovery_target_inclusive = %s" -msgstr "recovery_target_inclusive = %s" +#: utils/misc/guc.c:868 +msgid "Turns on various assertion checks." +msgstr "Active les diff�rentes v�rifications des assertions." -#: access/transam/xlog.c:5252 -#, c-format -msgid "standby_mode = '%s'" -msgstr "standby_mode = '%s'" +#: utils/misc/guc.c:869 +msgid "This is a debugging aid." +msgstr "C'est une aide de d�bogage." -#: access/transam/xlog.c:5258 -#, c-format -msgid "primary_conninfo = '%s'" -msgstr "primary_conninfo = '%s'" +#: utils/misc/guc.c:883 +msgid "Terminate session on any error." +msgstr "Termine la session sans erreur." -#: access/transam/xlog.c:5265 -#, c-format -msgid "trigger_file = '%s'" -msgstr "trigger_file = '%s'" +#: utils/misc/guc.c:892 +msgid "Reinitialize server after backend crash." +msgstr "" +"R�initialisation du serveur apr�s un arr�t brutal d'un processus serveur." -#: access/transam/xlog.c:5270 -#, c-format -msgid "unrecognized recovery parameter \"%s\"" -msgstr "param�tre de restauration � %s � non reconnu" +#: utils/misc/guc.c:902 +msgid "Logs the duration of each completed SQL statement." +msgstr "Trace la dur�e de chaque instruction SQL termin�e." -#: access/transam/xlog.c:5278 -#, c-format -msgid "syntax error in recovery command file: %s" -msgstr "erreur de syntaxe dans le fichier de restauration : %s" +#: utils/misc/guc.c:911 +msgid "Logs each query's parse tree." +msgstr "Trace l'arbre d'analyse de chaque requ�te." + +#: utils/misc/guc.c:920 +msgid "Logs each query's rewritten parse tree." +msgstr "Trace l'arbre d'analyse r��crit de chaque requ�te." -#: access/transam/xlog.c:5280 -msgid "Lines should have the format parameter = 'value'." -msgstr "Les lignes devraient avoir le format param�tre = 'valeur'" +#: utils/misc/guc.c:929 +msgid "Logs each query's execution plan." +msgstr "Trace le plan d'ex�cution de chaque requ�te." -#: access/transam/xlog.c:5289 -#, 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" +#: utils/misc/guc.c:938 +msgid "Indents parse and plan tree displays." +msgstr "Indente l'affichage des arbres d'analyse et de planification." -#: access/transam/xlog.c:5291 -msgid "The database server will regularly poll the pg_xlog subdirectory to check for files placed there." +#: utils/misc/guc.c:947 +msgid "Writes parser performance statistics to the server log." msgstr "" -"Le serveur de la base de donn�es va r�guli�rement interroger le sous-r�pertoire\n" -"pg_xlog pour v�rifier les fichiers plac�s ici." +"�crit les statistiques de performance de l'analyseur dans les journaux " +"applicatifs\n" +"du serveur." -#: access/transam/xlog.c:5297 -#, c-format -msgid "recovery command file \"%s\" must specify restore_command when standby mode is not enabled" +#: utils/misc/guc.c:956 +msgid "Writes planner performance statistics to the server log." msgstr "" -"le fichier de restauration � %s � doit sp�cifier restore_command quand le mode\n" -"de restauration n'est pas activ�" +"�crit les statistiques de performance de planification dans les journaux\n" +"applicatifs du serveur." -#: access/transam/xlog.c:5317 -#, c-format -msgid "recovery target timeline %u does not exist" -msgstr "le timeline cible, %u, de la restauration n'existe pas" +#: utils/misc/guc.c:965 +msgid "Writes executor performance statistics to the server log." +msgstr "" +"�crit les statistiques de performance de l'ex�cuteur dans les journaux " +"applicatifs\n" +"du serveur." -#: access/transam/xlog.c:5442 -msgid "archive recovery complete" -msgstr "restauration termin�e de l'archive" +#: utils/misc/guc.c:974 +msgid "Writes cumulative performance statistics to the server log." +msgstr "" +"�crit les statistiques de performance cumulatives dans les journaux " +"applicatifs\n" +"du serveur." -#: access/transam/xlog.c:5532 -#, 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" +#: utils/misc/guc.c:984 utils/misc/guc.c:1049 utils/misc/guc.c:1059 +#: utils/misc/guc.c:1069 utils/misc/guc.c:1079 utils/misc/guc.c:1804 +#: utils/misc/guc.c:1814 +msgid "No description available." +msgstr "Aucune description disponible." -#: access/transam/xlog.c:5537 -#, 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" +#: utils/misc/guc.c:996 +msgid "Collects information about executing commands." +msgstr "R�cup�re les statistiques sur les commandes en ex�cution." -#: access/transam/xlog.c:5545 -#, 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" +#: utils/misc/guc.c:997 +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." -#: access/transam/xlog.c:5550 -#, 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" +#: utils/misc/guc.c:1007 +msgid "Collects statistics on database activity." +msgstr "R�cup�re les statistiques sur l'activit� de la base de donn�es." -#: access/transam/xlog.c:5633 -#, c-format -msgid "hot standby is not possible because %s = %d is a lower setting than on the master server (its value was %d)" +#: utils/misc/guc.c:1017 +msgid "Updates the process title to show the active SQL command." msgstr "" -"les connexions en restauration ne sont pas possibles car %s = %d est un\n" -"param�trage plus bas que celui du serveur ma�tre des journaux de transactions\n" -"(la valeur �tait %d)" +"Met � jour le titre du processus pour indiquer la commande SQL en cours\n" +"d'ex�cution." -#: access/transam/xlog.c:5655 -msgid "WAL was generated with wal_level=minimal, data may be missing" +#: utils/misc/guc.c:1018 +msgid "" +"Enables updating of the process title every time a new SQL command is " +"received by the server." msgstr "" -"le journal de transactions a �t� g�n�r� avec le param�tre wal_level configur�\n" -"� � minimal �, des donn�es pourraient manquer" +"Active la mise � jour du titre du processus chaque fois qu'une nouvelle\n" +"commande SQL est re�ue par le serveur." -#: access/transam/xlog.c:5656 -msgid "This happens if you temporarily set wal_level=minimal without taking a new base backup." -msgstr "" -"Ceci peut arriver si vous configurez temporairement wal_level � minimal sans avoir\n" -"pris une nouvelle sauvegarde de base." +#: utils/misc/guc.c:1027 +msgid "Starts the autovacuum subprocess." +msgstr "Ex�cute le sous-processus de l'autovacuum." + +#: utils/misc/guc.c:1037 +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:1091 +msgid "Logs long lock waits." +msgstr "Trace les attentes longues de verrou." + +#: utils/misc/guc.c:1101 +msgid "Logs the host name in the connection logs." +msgstr "Trace le nom d'h�te dans les traces de connexion." -#: access/transam/xlog.c:5667 -msgid "hot standby is not possible because wal_level was not set to \"hot_standby\" on the master server" +#: utils/misc/guc.c:1102 +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 "" -"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" +"Par d�faut, les traces de connexion n'affichent que l'adresse IP de l'h�te\n" +"se connectant. Si vous voulez que s'affiche le nom de l'h�te, vous devez\n" +"activer cette option mais suivant la configuration de la r�solution de noms\n" +"pour votre h�te, cela pourrait imposer des d�gradations de performances non\n" +"n�gligeables." -#: access/transam/xlog.c:5668 -msgid "Either set wal_level to \"hot_standby\" on the master, or turn off hot_standby here." +#: utils/misc/guc.c:1113 +msgid "Causes subtables to be included by default in various commands." msgstr "" -"Soit vous initialisez wal_level � � hot_standby � sur le ma�tre, soit vous\n" -"d�sactivez hot_standby ici." +"Fait que les sous-tables soient incluses par d�faut dans les diff�rentes\n" +"commandes." -#: access/transam/xlog.c:5715 -msgid "control file contains invalid data" -msgstr "le fichier de contr�le contient des donn�es invalides" +#: utils/misc/guc.c:1122 +msgid "Encrypt passwords." +msgstr "Chiffre les mots de passe." -#: access/transam/xlog.c:5719 -#, c-format -msgid "database system was shut down at %s" -msgstr "le syst�me de bases de donn�es a �t� arr�t� � %s" +#: utils/misc/guc.c:1123 +msgid "" +"When a password is specified in CREATE USER or ALTER USER without writing " +"either ENCRYPTED or UNENCRYPTED, this parameter determines whether the " +"password is to be encrypted." +msgstr "" +"Lorsqu'un mot de passe est sp�cifi� dans CREATE USER ou ALTER USER sans\n" +"indiquer ENCRYPTED ou UNENCRYPTED, ce param�tre d�termine si le mot de " +"passe\n" +"doit �tre chiffr�." -#: access/transam/xlog.c:5723 -#, 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" +#: utils/misc/guc.c:1133 +msgid "Treats \"expr=NULL\" as \"expr IS NULL\"." +msgstr "Traite � expr=NULL � comme � expr IS NULL �." -#: access/transam/xlog.c:5727 -#, 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" +#: utils/misc/guc.c:1134 +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)." -#: access/transam/xlog.c:5731 -#, 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" +#: utils/misc/guc.c:1146 +msgid "Enables per-database user names." +msgstr "Active les noms d'utilisateur par base de donn�es." -#: access/transam/xlog.c:5733 -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." +#: utils/misc/guc.c:1156 +msgid "This parameter doesn't do anything." +msgstr "Ce param�tre ne fait rien." -#: access/transam/xlog.c:5737 -#, c-format -msgid "database system was interrupted while in recovery at log time %s" +#: utils/misc/guc.c:1157 +msgid "" +"It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-" +"vintage clients." msgstr "" -"le syst�me de bases de donn�es a �t� interrompu lors d'une r�cup�ration � %s\n" -"(moment de la journalisation)" +"C'est ici uniquement pour ne pas avoir de probl�mes avec le SET AUTOCOMMIT\n" +"TO ON des clients 7.3." -#: access/transam/xlog.c:5739 -msgid "If this has occurred more than once some data might be corrupted and you might need to choose an earlier recovery target." +#: utils/misc/guc.c:1166 +msgid "Sets the default read-only status of new transactions." 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." +"Initialise le statut de lecture seule par d�faut des nouvelles transactions." -#: access/transam/xlog.c:5743 -#, 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" +#: utils/misc/guc.c:1175 +msgid "Sets the current transaction's read-only status." +msgstr "Affiche le statut de lecture seule de la transaction actuelle." -#: access/transam/xlog.c:5792 -#, c-format -msgid "requested timeline %u is not a child of database system timeline %u" -msgstr "" -"le timeline requis %u n'est pas un fils du timeline %u du syst�me de bases\n" -"de donn�es" +#: utils/misc/guc.c:1185 +msgid "Sets the default deferrable status of new transactions." +msgstr "Initialise le statut d�ferrable par d�faut des nouvelles transactions." -#: access/transam/xlog.c:5810 -msgid "entering standby mode" -msgstr "entre en mode standby" +#: utils/misc/guc.c:1194 +msgid "" +"Whether to defer a read-only serializable transaction until it can be " +"executed with no possible serialization failures." +msgstr "" +"S'il faut repousser une transaction s�rialisable en lecture seule jusqu'� ce " +"qu'elle\n" +"puisse �tre ex�cut�e sans �checs possibles de s�rialisation." -#: access/transam/xlog.c:5813 -#, c-format -msgid "starting point-in-time recovery to XID %u" -msgstr "d�but de la restauration de l'archive au XID %u" +#: utils/misc/guc.c:1204 +msgid "Check function bodies during CREATE FUNCTION." +msgstr "V�rifie les corps de fonction lors du CREATE FUNCTION." -#: access/transam/xlog.c:5817 -#, c-format -msgid "starting point-in-time recovery to %s" -msgstr "d�but de la restauration de l'archive � %s" +#: utils/misc/guc.c:1213 +msgid "Enable input of NULL elements in arrays." +msgstr "Active la saisie d'�l�ments NULL dans les tableaux." -#: access/transam/xlog.c:5821 -msgid "starting archive recovery" -msgstr "d�but de la restauration de l'archive" +#: utils/misc/guc.c:1214 +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." -#: access/transam/xlog.c:5836 -#: access/transam/xlog.c:5876 -#, c-format -msgid "checkpoint record is at %X/%X" -msgstr "l'enregistrement du point de v�rification est � %X/%X" +#: utils/misc/guc.c:1224 +msgid "Create new tables with OIDs by default." +msgstr "Cr�e des nouvelles tables avec des OID par d�faut." -#: access/transam/xlog.c:5850 -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" +#: utils/misc/guc.c:1233 +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." -#: access/transam/xlog.c:5851 -#: access/transam/xlog.c:5858 -#, c-format -msgid "If you are not restoring from a backup, try removing the file \"%s/backup_label\"." +#: utils/misc/guc.c:1242 +msgid "Truncate existing log files of same name during log rotation." msgstr "" -"Si vous n'avez pas pu restaurer une sauvegarde, essayez de supprimer le\n" -"fichier � %s/backup_label �." +"Tronque les journaux applicatifs existants du m�me nom lors de la rotation\n" +"des journaux applicatifs." -#: access/transam/xlog.c:5857 -msgid "could not locate required checkpoint record" -msgstr "n'a pas pu localiser l'enregistrement d'un point de v�rification requis" +#: utils/misc/guc.c:1253 +msgid "Emit information about resource usage in sorting." +msgstr "�met des informations sur l'utilisation des ressources lors d'un tri." -#: access/transam/xlog.c:5886 -#: access/transam/xlog.c:5901 -msgid "could not locate a valid checkpoint record" -msgstr "n'a pas pu localiser un enregistrement d'un point de v�rification valide" +#: utils/misc/guc.c:1267 +msgid "Generate debugging output for synchronized scanning." +msgstr "G�n�re une sortie de d�bogage pour les parcours synchronis�s." -#: access/transam/xlog.c:5895 -#, 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" +#: utils/misc/guc.c:1282 +msgid "Enable bounded sorting using heap sort." +msgstr "Active le tri limit� en utilisant le tri de heap." -#: access/transam/xlog.c:5910 -#, c-format -msgid "redo record is at %X/%X; shutdown %s" -msgstr "l'enregistrement � r�-ex�cuter se trouve � %X/%X ; arr�t %s" +#: utils/misc/guc.c:1295 +msgid "Emit WAL-related debugging output." +msgstr "�met une sortie de d�bogage concernant les journaux de transactions." -#: access/transam/xlog.c:5914 -#, c-format -msgid "next transaction ID: %u/%u; next OID: %u" -msgstr "prochain identifiant de transaction : %u/%u ; prochain OID : %u" +#: utils/misc/guc.c:1307 +msgid "Datetimes are integer based." +msgstr "Les types datetime sont bas�s sur des entiers" -#: access/transam/xlog.c:5918 -#, c-format -msgid "next MultiXactId: %u; next MultiXactOffset: %u" -msgstr "prochain MultiXactId : %u ; prochain MultiXactOffset : %u" +#: utils/misc/guc.c:1322 +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" +"sans se soucier de la casse." -#: access/transam/xlog.c:5921 -#, c-format -msgid "oldest unfrozen transaction ID: %u, in database %u" +#: utils/misc/guc.c:1332 +msgid "Warn about backslash escapes in ordinary string literals." msgstr "" -"identifiant de transaction non gel� le plus ancien : %u, dans la base de\n" -"donn�es %u" +"Avertie sur les �chappements par antislash dans les cha�nes ordinaires." -#: access/transam/xlog.c:5925 -msgid "invalid next transaction ID" -msgstr "prochain ID de transaction invalide" +#: utils/misc/guc.c:1342 +msgid "Causes '...' strings to treat backslashes literally." +msgstr "Fait que les cha�nes '...' traitent les antislashs litt�ralement." -#: access/transam/xlog.c:5944 -msgid "invalid redo in checkpoint record" -msgstr "r�-ex�cution invalide dans l'enregistrement du point de v�rification" +#: utils/misc/guc.c:1353 +msgid "Enable synchronized sequential scans." +msgstr "Active l'utilisation des parcours s�quentiels synchronis�s." -#: access/transam/xlog.c:5955 -msgid "invalid redo record in shutdown checkpoint" -msgstr "enregistrement de r�-ex�cution invalide dans le point de v�rification d'arr�t" +#: utils/misc/guc.c:1363 +msgid "Allows archiving of WAL files using archive_command." +msgstr "" +"Autorise l'archivage des journaux de transactions en utilisant " +"archive_command." + +#: utils/misc/guc.c:1373 +msgid "Allows connections and queries during recovery." +msgstr "Autorise les connexions et les requ�tes pendant la restauration." -#: access/transam/xlog.c:5985 -msgid "database system was not properly shut down; automatic recovery in progress" +#: utils/misc/guc.c:1383 +msgid "" +"Allows feedback from a hot standby to the primary that will avoid query " +"conflicts." msgstr "" -"le syst�me de bases de donn�es n'a pas �t� arr�t� proprement ; restauration\n" -"automatique en cours" +"Permet l'envoi d'informations d'un serveur Hot Standby vers le serveur\n" +"principal pour �viter les conflits de requ�tes." -#: access/transam/xlog.c:6049 -msgid "initializing for hot standby" -msgstr "initialisation pour � Hot Standby �" +#: utils/misc/guc.c:1393 +msgid "Allows modifications of the structure of system tables." +msgstr "Permet les modifications de la structure des tables syst�mes." -#: access/transam/xlog.c:6175 -#, c-format -msgid "redo starts at %X/%X" -msgstr "la r�-ex�cution commence � %X/%X" +#: utils/misc/guc.c:1404 +msgid "Disables reading from system indexes." +msgstr "D�sactive la lecture des index syst�me." -#: access/transam/xlog.c:6274 -#, c-format -msgid "redo done at %X/%X" -msgstr "r�-ex�cution faite � %X/%X" +#: utils/misc/guc.c:1405 +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." -#: access/transam/xlog.c:6279 -#: access/transam/xlog.c:7748 -#, c-format -msgid "last completed transaction was at log time %s" -msgstr "la derni�re transaction a eu lieu � %s (moment de la journalisation)" +#: utils/misc/guc.c:1416 +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." -#: access/transam/xlog.c:6287 -msgid "redo is not required" -msgstr "la r�-ex�cution n'est pas n�cessaire" +#: utils/misc/guc.c:1417 +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" +"9.0." -#: access/transam/xlog.c:6327 -msgid "requested recovery stop point is before consistent recovery point" +#: utils/misc/guc.c:1427 +msgid "When generating SQL fragments, quote all identifiers." msgstr "" -"le point d'arr�t de la restauration demand�e se trouve avant le point\n" -"coh�rent de restauration" +"Lors de la g�n�ration des rragments SQL, mettre entre guillemets tous les " +"identifiants." -#: access/transam/xlog.c:6330 -msgid "WAL ends before consistent recovery point" -msgstr "Le journal de transaction se termine avant un point de restauration coh�rent" +#: utils/misc/guc.c:1446 +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." -#: access/transam/xlog.c:6351 -#, c-format -msgid "selected new timeline ID: %u" -msgstr "identifiant d'un timeline nouvellement s�lectionn� : %u" +#: utils/misc/guc.c:1457 +msgid "Waits N seconds on connection startup after authentication." +msgstr "Attends N secondes apr�s l'authentification." -#: access/transam/xlog.c:6587 -#, c-format -msgid "consistent recovery state reached at %X/%X" -msgstr "�tat de restauration coh�rent atteint � %X/%X" +#: utils/misc/guc.c:1458 utils/misc/guc.c:1907 +msgid "This allows attaching a debugger to the process." +msgstr "Ceci permet d'attacher un d�bogueur au processus." -#: access/transam/xlog.c:6713 -msgid "invalid primary checkpoint link in control file" -msgstr "lien du point de v�rification primaire invalide dans le fichier de contr�le" +#: utils/misc/guc.c:1467 +msgid "Sets the default statistics target." +msgstr "Initialise la cible par d�faut des statistiques." -#: access/transam/xlog.c:6717 -msgid "invalid secondary checkpoint link in control file" -msgstr "lien du point de v�rification secondaire invalide dans le fichier de contr�le" +#: utils/misc/guc.c:1468 +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." -#: access/transam/xlog.c:6721 -msgid "invalid checkpoint link in backup_label file" -msgstr "lien du point de v�rification invalide dans le fichier backup_label" +#: utils/misc/guc.c:1477 +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." -#: access/transam/xlog.c:6735 -msgid "invalid primary checkpoint record" -msgstr "enregistrement du point de v�rification primaire invalide" +#: utils/misc/guc.c:1479 +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." -#: access/transam/xlog.c:6739 -msgid "invalid secondary checkpoint record" -msgstr "enregistrement du point de v�rification secondaire invalide" +#: utils/misc/guc.c:1489 +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" +"JOIN ne sont pas aplanies." -#: access/transam/xlog.c:6743 -msgid "invalid checkpoint record" -msgstr "enregistrement du point de v�rification invalide" +#: utils/misc/guc.c:1491 +msgid "" +"The planner will flatten explicit JOIN constructs into lists of FROM items " +"whenever a list of no more than this many items would result." +msgstr "" +"La planificateur applanira les constructions JOIN explicites dans des " +"listes\n" +"d'�l�ments FROM lorsqu'une liste d'au plus ce nombre d'�l�ments en\n" +"r�sulterait." -#: access/transam/xlog.c:6754 -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" +#: utils/misc/guc.c:1501 +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�." -#: access/transam/xlog.c:6758 -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" +#: utils/misc/guc.c:1510 +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." -#: access/transam/xlog.c:6762 -msgid "invalid resource manager ID in checkpoint record" -msgstr "identifiant du gestionnaire de ressource invalide dans l'enregistrement du point de v�rification" +#: utils/misc/guc.c:1519 +msgid "GEQO: number of individuals in the population." +msgstr "GEQO : nombre d'individus dans une population." -#: access/transam/xlog.c:6774 -msgid "invalid xl_info in primary checkpoint record" -msgstr "xl_info invalide dans l'enregistrement du point de v�rification primaire" +#: utils/misc/guc.c:1520 utils/misc/guc.c:1529 +msgid "Zero selects a suitable default value." +msgstr "Z�ro s�lectionne une valeur par d�faut convenable." -#: access/transam/xlog.c:6778 -msgid "invalid xl_info in secondary checkpoint record" -msgstr "xl_info invalide dans l'enregistrement du point de v�rification secondaire" +#: utils/misc/guc.c:1528 +msgid "GEQO: number of iterations of the algorithm." +msgstr "GEQO : nombre d'it�rations dans l'algorithme." -#: access/transam/xlog.c:6782 -msgid "invalid xl_info in checkpoint record" -msgstr "xl_info invalide dans l'enregistrement du point de v�rification" +#: utils/misc/guc.c:1539 +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." -#: access/transam/xlog.c:6794 -msgid "invalid length of primary checkpoint record" -msgstr "longueur invalide de l'enregistrement primaire du point de v�rification" +#: utils/misc/guc.c:1550 +msgid "" +"Sets the maximum delay before canceling queries when a hot standby server is " +"processing archived WAL data." +msgstr "" +"Initialise le d�lai maximum avant d'annuler les requ�tes lorsqu'un serveur " +"en\n" +"hotstandby traite les donn�es des journaux de transactions archiv�s" -#: access/transam/xlog.c:6798 -msgid "invalid length of secondary checkpoint record" -msgstr "longueur invalide de l'enregistrement secondaire du point de v�rification" +#: utils/misc/guc.c:1561 +msgid "" +"Sets the maximum delay before canceling queries when a hot standby server is " +"processing streamed WAL data." +msgstr "" +"Initialise le d�lai maximum avant d'annuler les requ�tes lorsqu'un serveur " +"en\n" +"hotstandby traite les donn�es des journaux de transactions envoy�s en flux." -#: access/transam/xlog.c:6802 -msgid "invalid length of checkpoint record" -msgstr "longueur invalide de l'enregistrement du point de v�rification" +#: utils/misc/guc.c:1572 +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." -#: access/transam/xlog.c:6964 -msgid "shutting down" -msgstr "arr�t en cours" +#: utils/misc/guc.c:1583 +msgid "Sets the maximum number of concurrent connections." +msgstr "Nombre maximum de connexions simultan�es." -#: access/transam/xlog.c:6986 -msgid "database system is shut down" -msgstr "le syst�me de base de donn�es est arr�t�" +#: utils/misc/guc.c:1593 +msgid "Sets the number of connection slots reserved for superusers." +msgstr "Nombre de connexions r�serv�es aux super-utilisateurs." + +#: utils/misc/guc.c:1607 +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." -#: access/transam/xlog.c:7379 -msgid "concurrent transaction log activity while database system is shutting down" +#: utils/misc/guc.c:1618 +msgid "Sets the maximum number of temporary buffers used by each session." 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" +"Nombre maximum de tampons en m�moire partag�e utilis�s par chaque session." -#: access/transam/xlog.c:7611 -msgid "skipping restartpoint, recovery has already ended" -msgstr "restartpoint ignor�, la r�cup�ration est d�j� termin�e" +#: utils/misc/guc.c:1629 +msgid "Sets the TCP port the server listens on." +msgstr "Port TCP sur lequel le serveur �coutera." -#: access/transam/xlog.c:7636 -#, c-format -msgid "skipping restartpoint, already performed at %X/%X" -msgstr "ignore le point de red�marrage, d�j� r�alis� � %X/%X" +#: utils/misc/guc.c:1639 +msgid "Sets the access permissions of the Unix-domain socket." +msgstr "Droits d'acc�s au socket domaine Unix." -#: access/transam/xlog.c:7746 -#, c-format -msgid "recovery restart point at %X/%X" -msgstr "la r�-ex�cution en restauration commence � %X/%X" +#: utils/misc/guc.c:1640 +msgid "" +"Unix-domain sockets use the usual Unix file system permission set. The " +"parameter value is expected to be a numeric mode specification in the form " +"accepted by the chmod and umask system calls. (To use the customary octal " +"format the number must start with a 0 (zero).)" +msgstr "" +"Les sockets de domaine Unix utilise l'ensemble des droits habituels du " +"syst�me\n" +"de fichiers Unix. La valeur de ce param�tre doit �tre une sp�cification en\n" +"mode num�rique de la forme accept�e par les appels syst�me chmod et umask\n" +"(pour utiliser le format octal, le nombre doit commencer avec un z�ro)." -#: access/transam/xlog.c:7915 -msgid "online backup was cancelled, recovery cannot continue" -msgstr "le mode de sauvegarde en ligne a �t� annul�, la restauration ne peut pas continuer" +#: utils/misc/guc.c:1654 +msgid "Sets the file permissions for log files." +msgstr "Initialise les droits des fichiers de trace." -#: access/transam/xlog.c:7967 -#, c-format -msgid "unexpected timeline ID %u (after %u) in checkpoint record" +#: utils/misc/guc.c:1655 +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 "" -"identifiant timeline %u inattendu (apr�s %u) dans l'enregistrement du point\n" -"de v�rification" +"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)." -#: access/transam/xlog.c:8003 -#, c-format -msgid "unexpected timeline ID %u (should be %u) in checkpoint record" +#: utils/misc/guc.c:1668 +msgid "Sets the maximum memory to be used for query workspaces." msgstr "" -"identifiant timeline %u inattendu (devrait �tre %u) dans l'enregistrement du\n" -"point de v�rification" +"Initialise la m�moire maximum utilis�e pour les espaces de travail des " +"requ�tes." -#: access/transam/xlog.c:8259 -#: access/transam/xlog.c:8285 -#, c-format -msgid "could not fsync log file %u, segment %u: %m" +#: utils/misc/guc.c:1669 +msgid "" +"This much memory can be used by each internal sort operation and hash table " +"before switching to temporary disk files." msgstr "" -"n'a pas pu synchroniser sur disque (fsync) le journal des transactions %u,\n" -"segment %u : %m" +"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." -#: access/transam/xlog.c:8293 -#, c-format -msgid "could not fsync write-through log file %u, segment %u: %m" +#: utils/misc/guc.c:1681 +msgid "Sets the maximum memory to be used for maintenance operations." msgstr "" -"n'a pas pu synchroniser sur disque (fsync) le journal des transactions %u,\n" -"segment %u : %m" +"Initialise la m�moire maximum utilis�e pour les op�rations de maintenance." -#: access/transam/xlog.c:8302 -#, c-format -msgid "could not fdatasync log file %u, segment %u: %m" -msgstr "" -"n'a pas pu synchroniser sur disque (fdatasync) le journal de transactions\n" -"%u, segment %u : %m" +#: utils/misc/guc.c:1682 +msgid "This includes operations such as VACUUM and CREATE INDEX." +msgstr "Ceci inclut les op�rations comme VACUUM et CREATE INDEX." -#: access/transam/xlog.c:8345 -#: access/transam/xlog.c:8537 -msgid "must be superuser to run a backup" -msgstr "doit �tre super-utilisateur pour ex�cuter une sauvegarde" - -#: access/transam/xlog.c:8350 -#: access/transam/xlog.c:8542 -#: access/transam/xlog.c:8745 -#: access/transam/xlog.c:8773 -#: access/transam/xlog.c:8806 -#: access/transam/xlog.c:8898 -#: access/transam/xlog.c:8973 -msgid "recovery is in progress" -msgstr "restauration en cours" +#: utils/misc/guc.c:1697 +msgid "Sets the maximum stack depth, in kilobytes." +msgstr "Initialise la profondeur maximale de la pile, en Ko." -#: access/transam/xlog.c:8351 -#: access/transam/xlog.c:8543 -#: access/transam/xlog.c:8746 -#: access/transam/xlog.c:8774 -#: access/transam/xlog.c:8807 -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." +#: utils/misc/guc.c:1708 +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." -#: access/transam/xlog.c:8356 -#: access/transam/xlog.c:8548 -msgid "WAL level not sufficient for making an online backup" -msgstr "" -"Le niveau de journalisation (configur� par wal_level) n'est pas suffisant pour\n" -"faire une sauvegarde en ligne." +#: utils/misc/guc.c:1718 +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." -#: access/transam/xlog.c:8357 -#: access/transam/xlog.c:8549 -msgid "wal_level must be set to \"archive\" or \"hot_standby\" at server start." -msgstr "" -"wal_level doit �tre configur� � � archive � ou � hot_standby � au d�marrage\n" -"du serveur." +#: utils/misc/guc.c:1728 +msgid "Vacuum cost for a page dirtied by vacuum." +msgstr "Co�t d'un VACUUM pour une page modifi�e par VACUUM." -#: access/transam/xlog.c:8384 -#: access/transam/xlog.c:8453 -msgid "a backup is already in progress" -msgstr "une sauvegarde est d�j� en cours" +#: utils/misc/guc.c:1738 +msgid "Vacuum cost amount available before napping." +msgstr "Co�t du VACUUM disponible avant un repos." -#: access/transam/xlog.c:8385 -msgid "Run pg_stop_backup() and try again." -msgstr "Ex�cutez pg_stop_backup() et tentez de nouveau." +#: utils/misc/guc.c:1748 +msgid "Vacuum cost delay in milliseconds." +msgstr "D�lai d'un co�t de VACUUM en millisecondes." -#: access/transam/xlog.c:8454 -#, c-format -msgid "If you're sure there is no backup in progress, remove file \"%s\" and try again." +#: utils/misc/guc.c:1759 +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:1770 +msgid "Vacuum cost amount available before napping, for autovacuum." +msgstr "Co�t du VACUUM disponible avant un repos, pour autovacuum." + +#: utils/misc/guc.c:1780 +msgid "" +"Sets the maximum number of simultaneously open files for each server process." msgstr "" -"Si vous �tes certain qu'aucune sauvegarde n'est en cours, supprimez le\n" -"fichier � %s � et recommencez de nouveau." +"Initialise le nombre maximum de fichiers ouverts simultan�ment pour chaque\n" +"processus serveur." -#: access/transam/xlog.c:8475 -#: access/transam/xlog.c:8632 -#, c-format -msgid "could not write file \"%s\": %m" -msgstr "impossible d'�crire le fichier � %s � : %m" +#: utils/misc/guc.c:1793 +msgid "Sets the maximum number of simultaneously prepared transactions." +msgstr "Initialise le nombre maximum de transactions pr�par�es simultan�ment." -#: access/transam/xlog.c:8571 -msgid "a backup is not in progress" -msgstr "une sauvegarde n'est pas en cours" +#: utils/misc/guc.c:1826 +msgid "Sets the maximum allowed duration of any statement." +msgstr "Initialise la dur�e maximum permise pour toute instruction." -#: access/transam/xlog.c:8583 -#: access/transam/xlog.c:9039 -#: access/transam/xlog.c:9045 -#, c-format -msgid "invalid data in file \"%s\"" -msgstr "donn�es invalides dans le fichier � %s �" +#: utils/misc/guc.c:1827 +msgid "A value of 0 turns off the timeout." +msgstr "Une valeur de 0 d�sactive le timeout." -#: access/transam/xlog.c:8695 -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" +#: utils/misc/guc.c:1837 +msgid "Minimum age at which VACUUM should freeze a table row." +msgstr "�ge minimum � partir duquel VACUUM devra geler une ligne de table." -#: access/transam/xlog.c:8705 -#, c-format -msgid "pg_stop_backup still waiting for all required WAL segments to be archived (%d seconds elapsed)" +#: utils/misc/guc.c:1847 +msgid "Age at which VACUUM should scan whole table to freeze tuples." 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)" +"�ge � partir duquel VACUUM devra parcourir une table compl�te pour geler " +"les\n" +"lignes." -#: access/transam/xlog.c:8707 -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." +#: utils/misc/guc.c:1857 +msgid "" +"Number of transactions by which VACUUM and HOT cleanup should be deferred, " +"if any." 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." +"Nombre de transactions � partir duquel les nettoyages VACUUM et HOT doivent " +"�tre d�ferr�s." -#: access/transam/xlog.c:8714 -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" +#: utils/misc/guc.c:1870 +msgid "Sets the maximum number of locks per transaction." +msgstr "Initialise le nombre maximum de verrous par transaction." -#: access/transam/xlog.c:8718 -msgid "WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup" +#: utils/misc/guc.c:1871 +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 "" -"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." +"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." -#: access/transam/xlog.c:8740 -msgid "must be superuser to switch transaction log files" -msgstr "doit �tre super-utilisateur pour changer de journal de transactions" +#: utils/misc/guc.c:1882 +msgid "Sets the maximum number of predicate locks per transaction." +msgstr "Initialise le nombre maximum de verrous pr�dicats par transaction." -#: access/transam/xlog.c:8899 -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." +#: utils/misc/guc.c:1883 +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." -#: access/transam/xlog.c:8909 -#: access/transam/xlog.c:8981 -#, c-format -msgid "could not parse transaction log location \"%s\"" +#: utils/misc/guc.c:1894 +msgid "Sets the maximum allowed time to complete client authentication." msgstr "" -"n'a pas pu analyser l'emplacement du journal des transactions nomm� � %s � :\n" -"%m" +"Initialise le temps maximum en secondes pour terminer l'authentification du\n" +"client." -#: access/transam/xlog.c:8974 -msgid "pg_xlogfile_name() cannot be executed during recovery." -msgstr "pg_xlogfile_name() ne peut pas �tre ex�cut� lors de la restauration." +#: utils/misc/guc.c:1906 +msgid "Waits N seconds on connection startup before authentication." +msgstr "" +"Attends N secondes au lancement de la connexion avant l'authentification." -#: access/transam/xlog.c:9071 -#, c-format -msgid "xlog redo %s" -msgstr "xlog redo %s" +#: utils/misc/guc.c:1917 +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." -#: access/transam/xlog.c:9111 -msgid "online backup mode cancelled" -msgstr "mode de sauvegarde en ligne annul�" +#: utils/misc/guc.c:1927 +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" +"point de v�rification (checkpoints) des journaux." -#: access/transam/xlog.c:9112 -#, c-format -msgid "\"%s\" was renamed to \"%s\"." -msgstr "� %s � a �t� renomm� en � %s �." +#: utils/misc/guc.c:1937 +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." -#: access/transam/xlog.c:9119 -msgid "online backup mode was not cancelled" -msgstr "le mode de sauvegarde en ligne n'a pas �t� annul�" +#: utils/misc/guc.c:1948 +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." -#: access/transam/xlog.c:9120 -#, c-format -msgid "Could not rename \"%s\" to \"%s\": %m." -msgstr "N'a pas pu renommer � %s � en � %s � : %m" +#: utils/misc/guc.c:1950 +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." -#: access/transam/xlog.c:9588 -#: access/transam/xlog.c:9610 -#, c-format -msgid "could not read from log file %u, segment %u, offset %u: %m" -msgstr "n'a pas pu lire le journal de transactions %u, segment %u, d�calage %u : %m" +#: utils/misc/guc.c:1962 +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." -#: access/transam/xlog.c:9698 -#, c-format -msgid "trigger file found: %s" -msgstr "fichier trigger trouv� : %s" +#: utils/misc/guc.c:1973 +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." -#: access/common/tupdesc.c:545 -#: parser/parse_relation.c:1165 -#, c-format -msgid "column \"%s\" cannot be declared SETOF" -msgstr "la colonne � %s � ne peut pas �tre d�clar�e SETOF" +#: utils/misc/guc.c:1985 +msgid "Sets the maximum number of simultaneously running WAL sender processes." +msgstr "" +"Initialise le nombre maximum de processus d'envoi des journaux de " +"transactions\n" +"ex�cut�s simultan�ment." -#: access/common/heaptuple.c:646 -#: access/common/heaptuple.c:1398 -#, c-format -msgid "number of columns (%d) exceeds limit (%d)" -msgstr "le nombre de colonnes (%d) d�passe la limite (%d)" +#: utils/misc/guc.c:1995 +msgid "WAL sender sleep time between WAL replications." +msgstr "" +"Temps d'endormissement du processus d'envoi des journaux de transactions " +"entre\n" +"les r�plications des journaux de transactions." -#: access/common/indextuple.c:57 -#, c-format -msgid "number of index columns (%d) exceeds limit (%d)" -msgstr "le nombre de colonnes index�es (%d) d�passe la limite (%d)" +#: utils/misc/guc.c:2006 +msgid "Sets the maximum time to wait for WAL replication." +msgstr "Initialise le temps maximum � attendre pour la r�plication des WAL." -#: access/common/indextuple.c:168 -#, c-format -msgid "index row requires %lu bytes, maximum size is %lu" -msgstr "la ligne index requiert %lu octets, la taille maximum est %lu" +#: utils/misc/guc.c:2017 +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." -#: access/common/printtup.c:278 -#: tcop/fastpath.c:181 -#: tcop/fastpath.c:561 -#: tcop/postgres.c:1704 -#, c-format -msgid "unsupported format code: %d" -msgstr "code de format non support� : %d" +#: utils/misc/guc.c:2028 +msgid "" +"Sets the minimum concurrent open transactions before performing commit_delay." +msgstr "" +"Initialise le nombre minimum de transactions ouvertes simultan�ment avant " +"le\n" +"commit_delay." -#: access/common/reloptions.c:323 -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" +#: utils/misc/guc.c:2039 +msgid "Sets the number of digits displayed for floating-point values." +msgstr "" +"Initialise le nombre de chiffres affich�s pour les valeurs � virgule " +"flottante." -#: access/common/reloptions.c:622 -msgid "RESET must not include values for parameters" -msgstr "RESET ne doit pas inclure de valeurs pour les param�tres" +#: utils/misc/guc.c:2040 +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�)." -#: access/common/reloptions.c:655 -#, c-format -msgid "unrecognized parameter namespace \"%s\"" -msgstr "espace de nom du param�tre � %s � non reconnu" +#: utils/misc/guc.c:2051 +msgid "Sets the minimum execution time above which statements will be logged." +msgstr "" +"Initialise le temps d'ex�cution minimum au-dessus de lequel les " +"instructions\n" +"seront trac�es." -#: access/common/reloptions.c:895 -#, c-format -msgid "unrecognized parameter \"%s\"" -msgstr "param�tre � %s � non reconnu" +#: utils/misc/guc.c:2053 +msgid "Zero prints all queries. -1 turns this feature off." +msgstr "Z�ro affiche toutes les requ�tes. -1 d�sactive cette fonctionnalit�." -#: access/common/reloptions.c:920 -#, c-format -msgid "parameter \"%s\" specified more than once" -msgstr "le param�tre � %s � est sp�cifi� plus d'une fois" +#: utils/misc/guc.c:2063 +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." -#: access/common/reloptions.c:935 -#, c-format -msgid "invalid value for boolean option \"%s\": %s" -msgstr "valeur invalide pour l'option bool�enne � %s � : %s" +#: utils/misc/guc.c:2065 +msgid "Zero prints all actions. -1 turns autovacuum logging off." +msgstr "Z�ro affiche toutes les requ�tes. -1 d�sactive cette fonctionnalit�." -#: access/common/reloptions.c:946 -#, c-format -msgid "invalid value for integer option \"%s\": %s" -msgstr "valeur invalide pour l'option de type integer � %s � : %s" +#: utils/misc/guc.c:2075 +msgid "Background writer sleep time between rounds." +msgstr "" +"Temps d'endormissement du processus d'�criture en t�che de fond en\n" +"millisecondes." -#: access/common/reloptions.c:951 -#: access/common/reloptions.c:969 -#, c-format -msgid "value %s out of bounds for option \"%s\"" -msgstr "valeur %s en dehors des limites pour l'option � %s �" +#: utils/misc/guc.c:2086 +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." -#: access/common/reloptions.c:953 -#, c-format -msgid "Valid values are between \"%d\" and \"%d\"." -msgstr "Les valeurs valides sont entre � %d � et � %d �." +#: utils/misc/guc.c:2102 +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." -#: access/common/reloptions.c:964 -#, c-format -msgid "invalid value for floating point option \"%s\": %s" -msgstr "valeur invalide pour l'option de type float � %s � : %s" +#: utils/misc/guc.c:2103 +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." -#: access/common/reloptions.c:971 -#, c-format -msgid "Valid values are between \"%f\" and \"%f\"." -msgstr "Les valeurs valides sont entre � %f � et � %f �." +#: utils/misc/guc.c:2116 +msgid "Automatic log file rotation will occur after N minutes." +msgstr "" +"La rotation automatique des journaux applicatifs s'effectue toutes les N\n" +"minutes." -#: access/common/tupconvert.c:107 -#, 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." +#: utils/misc/guc.c:2127 +msgid "Automatic log file rotation will occur after N kilobytes." +msgstr "" +"La rotation automatique des journaux applicatifs s'effectue apr�s N Ko." -#: access/common/tupconvert.c:135 -#, c-format -msgid "Number of returned columns (%d) does not match expected column count (%d)." -msgstr "" -"Le nombre de colonnes renvoy�es (%d) ne correspond pas au nombre de colonnes\n" -"attendues (%d)." +#: utils/misc/guc.c:2138 +msgid "Shows the maximum number of function arguments." +msgstr "Affiche le nombre maximum d'arguments de fonction." -#: access/common/tupconvert.c:240 -#, 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." +#: utils/misc/guc.c:2149 +msgid "Shows the maximum number of index keys." +msgstr "Affiche le nombre maximum de cl�s d'index." -#: access/common/tupconvert.c:252 -#, 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." +#: utils/misc/guc.c:2160 +msgid "Shows the maximum identifier length." +msgstr "Affiche la longueur maximum d'un identifiant" -#: access/gin/ginarrayproc.c:30 -msgid "array must not contain null values" -msgstr "le tableau ne doit pas contenir de valeurs NULL" +#: utils/misc/guc.c:2171 +msgid "Shows the size of a disk block." +msgstr "Affiche la taille d'un bloc de disque." -#: access/gin/ginentrypage.c:83 -#: access/gin/ginentrypage.c:118 -#: access/nbtree/nbtinsert.c:522 -#: access/nbtree/nbtsort.c:483 -#, 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 �" +#: utils/misc/guc.c:2182 +msgid "Shows the number of pages per disk file." +msgstr "Affiche le nombre de pages par fichier." -#: access/gin/ginscan.c:168 -#: access/gin/ginscan.c:231 -msgid "GIN indexes do not support whole-index scans" -msgstr "les index GIN ne supportent pas les parcours complets d'index" +#: utils/misc/guc.c:2193 +msgid "Shows the block size in the write ahead log." +msgstr "Affiche la taille du bloc dans les journaux de transactions." -#: access/gist/gistxlog.c:803 -#, c-format -msgid "index %u/%u/%u needs VACUUM FULL or REINDEX to finish crash recovery" -msgstr "" -"l'index %u/%u/%u a besoin d'un VACUUM FULL ou d'un REINDEX pour terminer la\n" -"r�cup�ration suite � un arr�t brutal" +#: utils/misc/guc.c:2204 +msgid "Shows the number of pages per write ahead log segment." +msgstr "Affiche le nombre de pages par journal de transactions." -#: access/gist/gistxlog.c:805 -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" -"l'arr�t brutal." +#: utils/misc/guc.c:2217 +msgid "Time to sleep between autovacuum runs." +msgstr "Dur�e d'endormissement entre deux ex�cutions d'autovacuum." -#: access/gist/gistsplit.c:372 -#, c-format -msgid "picksplit method for column %d of index \"%s\" failed" -msgstr "�chec de la m�thode picksplit pour la colonne %d de l'index � %s �" +#: utils/misc/guc.c:2227 +msgid "Minimum number of tuple updates or deletes prior to vacuum." +msgstr "Nombre minimum de lignes mises � jour ou supprim�es avant le VACUUM." -#: access/gist/gistsplit.c:374 -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." +#: utils/misc/guc.c:2236 +msgid "Minimum number of tuple inserts, updates or deletes prior to analyze." 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." +"Nombre minimum de lignes ins�r�es, mises � jour ou supprim�es avant un " +"ANALYZE." -#: access/gist/gistutil.c:407 -#, c-format -msgid "index \"%s\" needs VACUUM or REINDEX to finish crash recovery" +#: utils/misc/guc.c:2246 +msgid "" +"Age at which to autovacuum a table to prevent transaction ID wraparound." msgstr "" -"l'index � %s � a besoin d'un VACUUM ou d'un REINDEX pour terminer la\n" -"r�cup�ration suite � un arr�t brutal" +"�ge � partir duquel l'autovacuum se d�clenche sur une table pour emp�cher " +"la\n" +"r�initialisation de l'identifiant de transaction" -#: access/gist/gistutil.c:588 -#: access/hash/hashutil.c:165 -#: access/nbtree/nbtpage.c:432 -#, 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" +#: utils/misc/guc.c:2257 +msgid "" +"Sets the maximum number of simultaneously running autovacuum worker " +"processes." +msgstr "" +"Initialise le nombre maximum de processus autovacuum ex�cut�s simultan�ment." -#: access/gist/gistutil.c:591 -#: access/gist/gistutil.c:602 -#: access/hash/hashutil.c:168 -#: access/hash/hashutil.c:179 -#: access/hash/hashutil.c:191 -#: access/hash/hashutil.c:212 -#: access/nbtree/nbtpage.c:435 -#: access/nbtree/nbtpage.c:446 -msgid "Please REINDEX it." -msgstr "Merci d'ex�cuter REINDEX sur cet objet." +#: utils/misc/guc.c:2267 +msgid "Time between issuing TCP keepalives." +msgstr "Secondes entre l'ex�cution de � TCP keepalives �." -#: access/gist/gistutil.c:599 -#: access/hash/hashutil.c:176 -#: access/hash/hashutil.c:188 -#: access/nbtree/nbtpage.c:443 -#, c-format -msgid "index \"%s\" contains corrupted page at block %u" -msgstr "l'index � %s � contient une page corrompue au bloc %u" +#: utils/misc/guc.c:2268 utils/misc/guc.c:2279 +msgid "A value of 0 uses the system default." +msgstr "Une valeur de 0 d�sactive la valeur syst�me par d�faut." -#: access/gist/gistvacuum.c:72 -#, c-format -msgid "index \"%s\" needs VACUUM FULL or REINDEX to finish crash recovery" -msgstr "" -"l'index � %s � a besoin d'un VACUUM FULL ou d'un REINDEX pour terminer la\n" -"r�cup�ration suite � un arr�t brutal" +#: utils/misc/guc.c:2278 +msgid "Time between TCP keepalive retransmits." +msgstr "Secondes entre les retransmissions de � TCP keepalive �." -#: access/hash/hashutil.c:204 -#, c-format -msgid "index \"%s\" is not a hash index" -msgstr "l'index � %s � n'est pas un index hach�" +#: utils/misc/guc.c:2289 +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" +"des cl�s d'enchiffrement." -#: access/hash/hashutil.c:210 -#, c-format -msgid "index \"%s\" has wrong hash version" -msgstr "l'index � %s � a la mauvaise version de hachage" +#: utils/misc/guc.c:2300 +msgid "Maximum number of TCP keepalive retransmits." +msgstr "Nombre maximum de retransmissions de � TCP keepalive �." -#: access/hash/hashinsert.c:73 -#, 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" +#: utils/misc/guc.c:2301 +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." -#: access/hash/hashinsert.c:76 -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." +#: utils/misc/guc.c:2312 +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." -#: access/hash/hashovfl.c:546 -#, c-format -msgid "out of overflow pages in hash index \"%s\"" -msgstr "en dehors des pages surcharg�es dans l'index hach� � %s �" +#: utils/misc/guc.c:2323 +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." -#: access/hash/hashsearch.c:152 -msgid "hash indexes do not support whole-index scans" -msgstr "les index h�ch�s ne supportent pas les parcours complets d'index" +#: utils/misc/guc.c:2324 +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." -#: access/heap/heapam.c:1076 -#: access/heap/heapam.c:1104 -#: access/heap/heapam.c:1134 -#: catalog/aclchk.c:1720 -#, c-format -msgid "\"%s\" is an index" -msgstr "� %s � est un index" +#: utils/misc/guc.c:2337 +msgid "Shows the server version as an integer." +msgstr "Affiche la version du serveur sous la forme d'un entier." -#: access/heap/heapam.c:1081 -#: access/heap/heapam.c:1109 -#: access/heap/heapam.c:1139 -#: catalog/aclchk.c:1727 -#: commands/tablecmds.c:2162 -#: commands/tablecmds.c:6550 -#: commands/tablecmds.c:7856 -#, c-format -msgid "\"%s\" is a composite type" -msgstr "� %s � est un type composite" +#: utils/misc/guc.c:2348 +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." -#: access/heap/heapam.c:3149 -#: access/heap/heapam.c:3180 -#: access/heap/heapam.c:3215 -#, c-format -msgid "could not obtain lock on row in relation \"%s\"" -msgstr "n'a pas pu obtenir un verrou sur la relation � %s �" +#: utils/misc/guc.c:2349 +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�)." -#: access/heap/hio.c:175 -#: access/heap/rewriteheap.c:592 -#, c-format -msgid "row is too big: size %lu, maximum size %lu" -msgstr "la ligne est trop grande : taille %lu, taille maximale %lu" +#: utils/misc/guc.c:2359 +msgid "Sets the size reserved for pg_stat_activity.current_query, in bytes." +msgstr "" +"Configure la taille r�serv�e pour pg_stat_activity.current_query, en octets." -#: access/index/indexam.c:149 -#: commands/comment.c:559 -#: commands/indexcmds.c:1595 -#: commands/tablecmds.c:212 -#: commands/tablecmds.c:2357 -#, c-format -msgid "\"%s\" is not an index" -msgstr "� %s � n'est pas un index" +#: utils/misc/guc.c:2378 +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." -#: access/nbtree/nbtinsert.c:384 -#, c-format -msgid "duplicate key value violates unique constraint \"%s\"" -msgstr "la valeur d'une cl� dupliqu�e rompt la contrainte unique � %s �" +#: utils/misc/guc.c:2388 +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." -#: access/nbtree/nbtinsert.c:386 -#, c-format -msgid "Key %s already exists." -msgstr "La cl� � %s � existe d�j�." +#: utils/misc/guc.c:2398 +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" +"ligne." -#: access/nbtree/nbtinsert.c:448 -#: executor/execUtils.c:1319 -#, c-format -msgid "failed to re-find tuple within index \"%s\"" -msgstr "�chec pour retrouver la ligne dans l'index � %s �" +#: utils/misc/guc.c:2408 +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." -#: access/nbtree/nbtinsert.c:450 -#: executor/execUtils.c:1321 -msgid "This may be because of a non-immutable index expression." -msgstr "Ceci peut �tre d� � une expression d'index immutable." +#: utils/misc/guc.c:2418 +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." -#: access/nbtree/nbtinsert.c:526 -#: access/nbtree/nbtsort.c:487 +#: utils/misc/guc.c:2429 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." +"Sets the planner's estimate of the fraction of a cursor's rows that will be " +"retrieved." msgstr "" -"Les valeurs plus larges qu'un tiers d'une page de tampon ne peuvent pas �tre\n" -"index�es.\n" -"Utilisez un index sur le hachage MD5 de la valeur ou passez � l'indexation\n" -"de la recherche plein texte." +"Initialise l'estimation du planificateur de la fraction des lignes d'un " +"curseur � r�cup�rer." -#: access/nbtree/nbtpage.c:160 -#: access/nbtree/nbtpage.c:364 -#, c-format -msgid "index \"%s\" is not a btree" -msgstr "l'index � %s � n'est pas un btree" +#: utils/misc/guc.c:2440 +msgid "GEQO: selective pressure within the population." +msgstr "GEQO : pression s�lective dans la population." -#: access/nbtree/nbtpage.c:166 -#: access/nbtree/nbtpage.c:370 -#, 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" +#: utils/misc/guc.c:2450 +msgid "GEQO: seed for random path selection." +msgstr "GEQO : graine pour la s�lection du chemin al�atoire." -#: bootstrap/bootstrap.c:272 -#: tcop/postgres.c:3393 -#: postmaster/postmaster.c:675 -#, c-format -msgid "--%s requires a value" -msgstr "--%s requiert une valeur" +#: utils/misc/guc.c:2460 +msgid "Multiple of the average buffer usage to free per round." +msgstr "Multiplede l'utilisation moyenne des tampons � lib�rer � chaque tour." -#: bootstrap/bootstrap.c:277 -#: tcop/postgres.c:3398 -#: postmaster/postmaster.c:680 -#, c-format -msgid "-c %s requires a value" -msgstr "-c %s requiert une valeur" +#: utils/misc/guc.c:2470 +msgid "Sets the seed for random-number generation." +msgstr "Initialise la cl� pour la g�n�ration de nombres al�atoires." -#: bootstrap/bootstrap.c:288 -#: postmaster/postmaster.c:692 -#: postmaster/postmaster.c:705 -#, c-format -msgid "Try \"%s --help\" for more information.\n" -msgstr "Essayez � %s --help � pour plus d'informations.\n" +#: utils/misc/guc.c:2481 +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)." -#: bootstrap/bootstrap.c:297 -#, c-format -msgid "%s: invalid command-line arguments\n" -msgstr "%s : arguments invalides en ligne de commande\n" +#: utils/misc/guc.c:2490 +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" +"(fraction de reltuples)." -#: catalog/toasting.c:91 -#: commands/comment.c:573 -#: commands/indexcmds.c:187 -#: commands/indexcmds.c:1627 -#: commands/lockcmds.c:149 -#: commands/tablecmds.c:194 -#: commands/tablecmds.c:1096 -#: commands/tablecmds.c:3355 -#: commands/trigger.c:149 -#: commands/trigger.c:1063 -#, c-format -msgid "\"%s\" is not a table" -msgstr "� %s � n'est pas une table" +#: utils/misc/guc.c:2500 +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." -#: catalog/toasting.c:141 -msgid "shared tables cannot be toasted after initdb" +#: utils/misc/guc.c:2519 +msgid "Sets the shell command that will be called to archive a WAL file." msgstr "" -"les tables partag�es ne peuvent pas avoir une table TOAST apr�s la commande\n" -"initdb" +"La commande shell qui sera appel�e pour archiver un journal de transaction." -#: catalog/aclchk.c:196 -msgid "grant options can only be granted to roles" -msgstr "les options grant peuvent seulement �tre donn�es aux r�les" +#: utils/misc/guc.c:2529 +msgid "Sets the client's character set encoding." +msgstr "Initialise l'encodage du client." -#: catalog/aclchk.c:312 -#, 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 �" +#: utils/misc/guc.c:2540 +msgid "Controls information prefixed to each log line." +msgstr "Contr�le l'information pr�fix�e sur chaque ligne de trace." -#: catalog/aclchk.c:317 -#, c-format -msgid "no privileges were granted for \"%s\"" -msgstr "aucun droit n'a �t� accord� pour � %s �" +#: utils/misc/guc.c:2541 +msgid "If blank, no prefix is used." +msgstr "Si vide, aucun pr�fixe n'est utilis�." -#: catalog/aclchk.c:325 -#, 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 �" +#: utils/misc/guc.c:2550 +msgid "Sets the time zone to use in log messages." +msgstr "Initialise le fuseau horaire � utiliser pour les journaux applicatifs." -#: catalog/aclchk.c:330 -#, c-format -msgid "not all privileges were granted for \"%s\"" -msgstr "tous les droits n'ont pas �t� accord�s pour � %s �" +#: utils/misc/guc.c:2560 +msgid "Sets the display format for date and time values." +msgstr "Initialise le format d'affichage des valeurs date et time." -#: catalog/aclchk.c:341 -#, 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 �" +#: utils/misc/guc.c:2561 +msgid "Also controls interpretation of ambiguous date inputs." +msgstr "Contr�le aussi l'interpr�tation des dates ambigues en entr�e." -#: catalog/aclchk.c:346 -#, c-format -msgid "no privileges could be revoked for \"%s\"" -msgstr "aucun droit n'a pu �tre r�voqu� pour � %s �" +#: utils/misc/guc.c:2572 +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." -#: catalog/aclchk.c:354 -#, 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 �" +#: utils/misc/guc.c:2573 +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." -#: catalog/aclchk.c:359 -#, c-format -msgid "not all privileges could be revoked for \"%s\"" -msgstr "certains droits n'ont pu �tre r�voqu� pour � %s �" +#: utils/misc/guc.c:2583 +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" +"fichiers de tri." -#: catalog/aclchk.c:438 -#: catalog/aclchk.c:927 -#, c-format -msgid "invalid privilege type %s for relation" -msgstr "droit %s invalide pour la relation" +#: utils/misc/guc.c:2594 +msgid "Sets the path for dynamically loadable modules." +msgstr "Initialise le chemin des modules chargeables dynamiquement." -#: catalog/aclchk.c:442 -#: catalog/aclchk.c:931 -#, c-format -msgid "invalid privilege type %s for sequence" -msgstr "droit %s invalide pour la s�quence" +#: utils/misc/guc.c:2595 +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." -#: catalog/aclchk.c:446 -#, c-format -msgid "invalid privilege type %s for database" -msgstr "droit %s invalide pour la base de donn�es" +#: utils/misc/guc.c:2608 +msgid "Sets the location of the Kerberos server key file." +msgstr "Initalise l'emplacement du fichier de la cl� serveur pour Kerberos." -#: catalog/aclchk.c:450 -#: catalog/aclchk.c:935 -#, c-format -msgid "invalid privilege type %s for function" -msgstr "droit %s invalide pour la fonction" +#: utils/misc/guc.c:2619 +msgid "Sets the name of the Kerberos service." +msgstr "Initialise le nom du service Kerberos." -#: catalog/aclchk.c:454 -#, c-format -msgid "invalid privilege type %s for language" -msgstr "droit %s invalide pour le langage" +#: utils/misc/guc.c:2629 +msgid "Sets the Bonjour service name." +msgstr "Initialise le nom du service Bonjour." -#: catalog/aclchk.c:458 -#, c-format -msgid "invalid privilege type %s for large object" -msgstr "type de droit invalide, %s, pour le Large Object" +#: utils/misc/guc.c:2641 +msgid "Shows the collation order locale." +msgstr "Affiche la locale de tri et de groupement." -#: catalog/aclchk.c:462 -#, c-format -msgid "invalid privilege type %s for schema" -msgstr "droit %s invalide pour le sch�ma" +#: utils/misc/guc.c:2652 +msgid "Shows the character classification and case conversion locale." +msgstr "Affiche la classification des caract�res et la locale de conversions." -#: catalog/aclchk.c:466 -#, c-format -msgid "invalid privilege type %s for tablespace" -msgstr "droit %s invalide pour le tablespace" +#: utils/misc/guc.c:2663 +msgid "Sets the language in which messages are displayed." +msgstr "Initialise le langage dans lequel les messages sont affich�s." -#: catalog/aclchk.c:470 -#, c-format -msgid "invalid privilege type %s for foreign-data wrapper" -msgstr "type de droit %s invalide pour le wrapper de donn�es distantes" +#: utils/misc/guc.c:2673 +msgid "Sets the locale for formatting monetary amounts." +msgstr "Initialise la locale pour le formattage des montants mon�taires." -#: catalog/aclchk.c:474 -#, c-format -msgid "invalid privilege type %s for foreign server" -msgstr "type de droit %s invalide pour le serveur distant" +#: utils/misc/guc.c:2683 +msgid "Sets the locale for formatting numbers." +msgstr "Initialise la locale pour formater les nombres." -#: catalog/aclchk.c:513 -msgid "column privileges are only valid for relations" -msgstr "les droits sur la colonne sont seulement valides pour les relations" +#: utils/misc/guc.c:2693 +msgid "Sets the locale for formatting date and time values." +msgstr "Initialise la locale pour formater les valeurs date et time." -#: catalog/aclchk.c:614 -#: commands/comment.c:698 -#: commands/dbcommands.c:760 -#: commands/dbcommands.c:905 -#: commands/dbcommands.c:1004 -#: commands/dbcommands.c:1181 -#: commands/dbcommands.c:1366 -#: commands/dbcommands.c:1410 -#: commands/dbcommands.c:1456 -#: utils/adt/acl.c:2975 -#: utils/adt/dbsize.c:149 -#: utils/init/postinit.c:708 -#: utils/init/postinit.c:776 -#: utils/init/postinit.c:793 -#, c-format -msgid "database \"%s\" does not exist" -msgstr "la base de donn�es � %s � n'existe pas" +#: utils/misc/guc.c:2703 +msgid "Lists shared libraries to preload into server." +msgstr "Liste les biblioth�ques partag�es � pr�charger dans le serveur." -#: catalog/aclchk.c:640 -#: commands/comment.c:1220 -#: commands/functioncmds.c:836 -#: commands/functioncmds.c:1990 -#: commands/proclang.c:531 -#: commands/proclang.c:600 -#: commands/proclang.c:640 -#: utils/adt/acl.c:3562 -#, c-format -msgid "language \"%s\" does not exist" -msgstr "le langage � %s � n'existe pas" +#: utils/misc/guc.c:2714 +msgid "Lists shared libraries to preload into each backend." +msgstr "" +"Liste les biblioth�ques partag�es � pr�charger dans chaque processus serveur." -#: catalog/aclchk.c:656 -#: catalog/aclchk.c:3690 -#: catalog/aclchk.c:4381 -#: catalog/pg_largeobject.c:116 -#: catalog/pg_largeobject.c:176 -#: commands/comment.c:1415 -#: storage/large_object/inv_api.c:272 -#, c-format -msgid "large object %u does not exist" -msgstr "le � Large Object � %u n'existe pas" +#: utils/misc/guc.c:2725 +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." -#: catalog/aclchk.c:673 -#: catalog/aclchk.c:1051 -#: catalog/namespace.c:340 -#: catalog/namespace.c:2307 -#: catalog/namespace.c:2346 -#: catalog/namespace.c:2393 -#: catalog/namespace.c:3320 -#: commands/comment.c:806 -#: commands/schemacmds.c:190 -#: commands/schemacmds.c:264 -#: commands/schemacmds.c:335 -#: utils/adt/acl.c:3760 -#, c-format -msgid "schema \"%s\" does not exist" -msgstr "le sch�ma � %s � n'existe pas" +#: utils/misc/guc.c:2737 +msgid "Sets the server (database) character set encoding." +msgstr "Initialise le codage des caract�res pour le serveur (base de donn�es)." -#: catalog/aclchk.c:702 -#: commands/comment.c:737 -#: commands/dbcommands.c:436 -#: commands/dbcommands.c:1037 -#: commands/indexcmds.c:225 -#: commands/tablecmds.c:430 -#: commands/tablecmds.c:6809 -#: commands/tablespace.c:410 -#: commands/tablespace.c:808 -#: commands/tablespace.c:875 -#: commands/tablespace.c:980 -#: commands/tablespace.c:1036 -#: commands/tablespace.c:1160 -#: executor/execMain.c:2189 -#: utils/adt/acl.c:4134 -#: utils/adt/dbsize.c:248 -#, c-format -msgid "tablespace \"%s\" does not exist" -msgstr "le tablespace � %s � n'existe pas" +#: utils/misc/guc.c:2749 +msgid "Shows the server version." +msgstr "Affiche la version du serveur." -#: catalog/aclchk.c:869 -#: catalog/aclchk.c:877 -#: commands/copy.c:751 -#: commands/copy.c:769 -#: commands/copy.c:777 -#: commands/copy.c:785 -#: commands/copy.c:793 -#: commands/copy.c:801 -#: commands/copy.c:809 -#: commands/copy.c:817 -#: commands/copy.c:833 -#: 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/functioncmds.c:485 -#: commands/functioncmds.c:575 -#: commands/functioncmds.c:583 -#: commands/functioncmds.c:591 -#: commands/functioncmds.c:1953 -#: commands/functioncmds.c:1961 -#: commands/sequence.c:1025 -#: commands/sequence.c:1033 -#: commands/sequence.c:1041 -#: commands/sequence.c:1049 -#: commands/sequence.c:1057 -#: commands/sequence.c:1065 -#: commands/sequence.c:1073 -#: commands/sequence.c:1081 -#: commands/typecmds.c:274 -#: commands/user.c:140 -#: commands/user.c:157 -#: commands/user.c:165 -#: commands/user.c:173 -#: commands/user.c:181 -#: commands/user.c:189 -#: commands/user.c:197 -#: commands/user.c:205 -#: commands/user.c:213 -#: commands/user.c:221 -#: commands/user.c:229 -#: commands/user.c:467 -#: commands/user.c:479 -#: commands/user.c:487 -#: commands/user.c:495 -#: commands/user.c:503 -#: commands/user.c:511 -#: commands/user.c:519 -#: commands/user.c:528 -#: commands/user.c:536 -msgid "conflicting or redundant options" -msgstr "options en conflit ou redondantes" +#: utils/misc/guc.c:2761 +msgid "Sets the current role." +msgstr "Initialise le r�le courant." -#: catalog/aclchk.c:968 -msgid "default privileges cannot be set for columns" -msgstr "les droits par d�faut ne peuvent pas �tre configur�s pour les colonnes" +#: utils/misc/guc.c:2773 +msgid "Sets the session user name." +msgstr "Initialise le nom de l'utilisateur de la session." -#: catalog/aclchk.c:1470 -#: commands/analyze.c:341 -#: commands/comment.c:651 -#: commands/copy.c:3441 -#: commands/sequence.c:1309 -#: commands/tablecmds.c:3952 -#: commands/tablecmds.c:4042 -#: commands/tablecmds.c:4089 -#: commands/tablecmds.c:4185 -#: commands/tablecmds.c:4229 -#: commands/tablecmds.c:4308 -#: commands/tablecmds.c:4389 -#: commands/tablecmds.c:5840 -#: commands/tablecmds.c:5980 -#: commands/trigger.c:527 -#: parser/analyze.c:1823 -#: parser/parse_relation.c:1996 -#: parser/parse_relation.c:2051 -#: parser/parse_target.c:808 -#: parser/parse_type.c:117 -#: utils/adt/acl.c:2770 -#: utils/adt/ruleutils.c:1524 -#, c-format -msgid "column \"%s\" of relation \"%s\" does not exist" -msgstr "la colonne � %s � de la relation � %s � n'existe pas" +#: utils/misc/guc.c:2784 +msgid "Sets the destination for server log output." +msgstr "Initialise la destination des journaux applicatifs du serveur." -#: catalog/aclchk.c:1735 -#: commands/comment.c:566 -#: commands/sequence.c:953 -#: commands/tablecmds.c:200 -#: commands/tablecmds.c:2146 -#: commands/tablecmds.c:2365 -#: commands/tablecmds.c:7815 -#: utils/adt/acl.c:2006 -#: utils/adt/acl.c:2036 -#: utils/adt/acl.c:2068 -#: utils/adt/acl.c:2100 -#: utils/adt/acl.c:2128 -#: utils/adt/acl.c:2158 -#, c-format -msgid "\"%s\" is not a sequence" -msgstr "� %s � n'est pas une s�quence" +#: utils/misc/guc.c:2785 +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." -#: catalog/aclchk.c:1773 -#, 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" +#: utils/misc/guc.c:2796 +msgid "Sets the destination directory for log files." +msgstr "Initialise le r�pertoire de destination pour les journaux applicatifs." -#: catalog/aclchk.c:1790 -msgid "invalid privilege type USAGE for table" -msgstr "droit USAGE invalide pour la table" +#: utils/misc/guc.c:2797 +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." -#: catalog/aclchk.c:1940 -#, c-format -msgid "invalid privilege type %s for column" -msgstr "type de droit %s invalide pour la colonne" +#: utils/misc/guc.c:2807 +msgid "Sets the file name pattern for log files." +msgstr "Initialise le mod�le de nom de fichiers pour les journaux applicatifs." -#: catalog/aclchk.c:1953 -#, c-format -msgid "sequence \"%s\" only supports SELECT column privileges" -msgstr "la s�quence � %s � accepte seulement le droit SELECT pour les colonnes" +#: utils/misc/guc.c:2818 +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." -#: catalog/aclchk.c:2537 -#, c-format -msgid "language \"%s\" is not trusted" -msgstr "le langage � %s � n'est pas de confiance" +#: utils/misc/guc.c:2829 +msgid "Sets the time zone for displaying and interpreting time stamps." +msgstr "" +"Initialise la zone horaire pour afficher et interpr�ter les dates/heures." -#: catalog/aclchk.c:2539 -msgid "Only superusers can use untrusted languages." +#: utils/misc/guc.c:2839 +msgid "Selects a file of time zone abbreviations." msgstr "" -"Seuls les super-utilisateurs peuvent utiliser des langages qui ne sont pas\n" -"de confiance." +"S�lectionne un fichier contenant les abr�viations des fuseaux horaires." -#: catalog/aclchk.c:3046 -#, c-format -msgid "unrecognized privilege type \"%s\"" -msgstr "droit � %s � non reconnu" +#: utils/misc/guc.c:2849 +msgid "Sets the current transaction's isolation level." +msgstr "Initialise le niveau d'isolation de la transaction courante." -#: catalog/aclchk.c:3095 -#, c-format -msgid "permission denied for column %s" -msgstr "droit refus� pour la colonne %s" +#: utils/misc/guc.c:2860 +msgid "Sets the owning group of the Unix-domain socket." +msgstr "Initialise le groupe d'appartenance du socket domaine Unix." -#: catalog/aclchk.c:3097 -#, c-format -msgid "permission denied for relation %s" -msgstr "droit refus� pour la relation %s" +#: utils/misc/guc.c:2861 +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." -#: catalog/aclchk.c:3099 -#: commands/sequence.c:469 -#: commands/sequence.c:668 -#: commands/sequence.c:710 -#: commands/sequence.c:746 -#, c-format -msgid "permission denied for sequence %s" -msgstr "droit refus� pour la s�quence %s" +#: utils/misc/guc.c:2871 +msgid "Sets the directory where the Unix-domain socket will be created." +msgstr "Initialise le r�pertoire o� le socket domaine Unix sera cr��." -#: catalog/aclchk.c:3101 -#, c-format -msgid "permission denied for database %s" -msgstr "droit refus� pour la base de donn�es %s" +#: utils/misc/guc.c:2882 +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." -#: catalog/aclchk.c:3103 -#, c-format -msgid "permission denied for function %s" -msgstr "droit refus� pour la fonction %s" +#: utils/misc/guc.c:2893 +msgid "Sets the list of known custom variable classes." +msgstr "Initialise la liste des classes variables personnalis�es connues." -#: catalog/aclchk.c:3105 -#, c-format -msgid "permission denied for operator %s" -msgstr "droit refus� pour l'op�rateur %s" +#: utils/misc/guc.c:2904 +msgid "Sets the server's data directory." +msgstr "Initialise le r�pertoire des donn�es du serveur." -#: catalog/aclchk.c:3107 -#, c-format -msgid "permission denied for type %s" -msgstr "droit refus� pour le type %s" +#: utils/misc/guc.c:2915 +msgid "Sets the server's main configuration file." +msgstr "Voir le fichier de configuration principal du serveur." -#: catalog/aclchk.c:3109 -#, c-format -msgid "permission denied for language %s" -msgstr "droit refus� pour le langage %s" +#: utils/misc/guc.c:2926 +msgid "Sets the server's \"hba\" configuration file." +msgstr "Initialise le fichier de configuration � hba � du serveur." -#: catalog/aclchk.c:3111 -#, c-format -msgid "permission denied for large object %s" -msgstr "droit refus� pour le Large Object %s" +#: utils/misc/guc.c:2937 +msgid "Sets the server's \"ident\" configuration file." +msgstr "Initialise le fichier de configuration � ident � du serveur." -#: catalog/aclchk.c:3113 -#, c-format -msgid "permission denied for schema %s" -msgstr "droit refus� pour le sch�ma %s" +#: utils/misc/guc.c:2948 +msgid "Writes the postmaster PID to the specified file." +msgstr "�crit le PID du postmaster PID dans le fichier sp�cifi�." -#: catalog/aclchk.c:3115 -#, c-format -msgid "permission denied for operator class %s" -msgstr "droit refus� pour la classe d'op�rateur %s" +#: utils/misc/guc.c:2959 +msgid "Writes temporary statistics files to the specified directory." +msgstr "" +"�crit les fichiers statistiques temporaires dans le r�pertoire indiqu�." -#: catalog/aclchk.c:3117 -#, c-format -msgid "permission denied for operator family %s" -msgstr "droit refus� pour la famille d'op�rateur %s" +#: utils/misc/guc.c:2970 +msgid "List of names of potential synchronous standbys." +msgstr "Liste de noms de serveurs standbys synchrones potentiels." -#: catalog/aclchk.c:3119 -#, c-format -msgid "permission denied for conversion %s" -msgstr "droit refus� pour la conversion %s" +#: utils/misc/guc.c:2981 +msgid "Sets default text search configuration." +msgstr "Initialise le configuration par d�faut de la recherche plein texte" -#: catalog/aclchk.c:3121 -#, c-format -msgid "permission denied for tablespace %s" -msgstr "droit refus� pour le tablespace %s" +#: utils/misc/guc.c:2991 +msgid "Sets the list of allowed SSL ciphers." +msgstr "Initialise la liste des chiffrements SSL autoris�s." -#: catalog/aclchk.c:3123 -#, c-format -msgid "permission denied for text search dictionary %s" -msgstr "droit refus� pour le dictionnaire de recherche plein texte %s" +#: utils/misc/guc.c:3006 +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." -#: catalog/aclchk.c:3125 -#, c-format -msgid "permission denied for text search configuration %s" -msgstr "droit refus� pour la configuration de recherche plein texte %s" +#: utils/misc/guc.c:3026 +msgid "Sets whether \"\\'\" is allowed in string literals." +msgstr "Indique si � \\' � est autoris� dans une constante de cha�ne." -#: catalog/aclchk.c:3127 -#, c-format -msgid "permission denied for foreign-data wrapper %s" -msgstr "droit refus� pour le wrapper de donn�es distantes %s" +#: utils/misc/guc.c:3036 +msgid "Sets the output format for bytea." +msgstr "Initialise le format de sortie pour bytea." -#: catalog/aclchk.c:3129 -#, c-format -msgid "permission denied for foreign server %s" -msgstr "droit refus� pour le serveur distant %s" +#: utils/misc/guc.c:3046 +msgid "Sets the message levels that are sent to the client." +msgstr "Initialise les niveaux de message envoy�s au client." -#: catalog/aclchk.c:3135 -#: catalog/aclchk.c:3137 -#, c-format -msgid "must be owner of relation %s" -msgstr "doit �tre le propri�taire de la relation %s" +#: utils/misc/guc.c:3047 utils/misc/guc.c:3100 utils/misc/guc.c:3111 +#: utils/misc/guc.c:3167 +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." -#: catalog/aclchk.c:3139 -#, c-format -msgid "must be owner of sequence %s" -msgstr "doit �tre le propri�taire de la s�quence %s" +#: utils/misc/guc.c:3057 +msgid "Enables the planner to use constraints to optimize queries." +msgstr "" +"Active l'utilisation des contraintes par le planificateur pour optimiser les " +"requ�tes." -#: catalog/aclchk.c:3141 -#, c-format -msgid "must be owner of database %s" -msgstr "doit �tre le propri�taire de la base de donn�es %s" +#: utils/misc/guc.c:3058 +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." -#: catalog/aclchk.c:3143 -#, c-format -msgid "must be owner of function %s" -msgstr "doit �tre le propri�taire de la fonction %s" +#: utils/misc/guc.c:3068 +msgid "Sets the transaction isolation level of each new transaction." +msgstr "" +"Initialise le niveau d'isolation des transactions pour chaque nouvelle " +"transaction." -#: catalog/aclchk.c:3145 -#, c-format -msgid "must be owner of operator %s" -msgstr "doit �tre le prorpri�taire de l'op�rateur %s" +#: utils/misc/guc.c:3078 +msgid "Sets the display format for interval values." +msgstr "Initialise le format d'affichage des valeurs interval." -#: catalog/aclchk.c:3147 -#, c-format -msgid "must be owner of type %s" -msgstr "doit �tre le propri�taire du type %s" +#: utils/misc/guc.c:3089 +msgid "Sets the verbosity of logged messages." +msgstr "Initialise la verbosit� des messages trac�s." -#: catalog/aclchk.c:3149 -#, c-format -msgid "must be owner of language %s" -msgstr "doit �tre le propri�taire du langage %s" +#: utils/misc/guc.c:3099 +msgid "Sets the message levels that are logged." +msgstr "Initialise les niveaux de messages trac�s." -#: catalog/aclchk.c:3151 -#, c-format -msgid "must be owner of large object %s" -msgstr "doit �tre le propri�taire du Large Object %s" +#: utils/misc/guc.c:3110 +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." -#: catalog/aclchk.c:3153 -#, c-format -msgid "must be owner of schema %s" -msgstr "doit �tre le propri�taire du sch�ma %s" +#: utils/misc/guc.c:3121 +msgid "Sets the type of statements logged." +msgstr "Initialise le type d'instructions trac�es." -#: catalog/aclchk.c:3155 -#, c-format -msgid "must be owner of operator class %s" -msgstr "doit �tre le propri�taire de la classe d'op�rateur %s" +#: utils/misc/guc.c:3131 +msgid "Sets the syslog \"facility\" to be used when syslog enabled." +msgstr "" +"Initialise le niveau (� facility �) de syslog � utilis� lors de " +"l'activation\n" +"de syslog." -#: catalog/aclchk.c:3157 -#, c-format -msgid "must be owner of operator family %s" -msgstr "doit �tre le prorpri�taire de la famille d'op�rateur %s" +#: utils/misc/guc.c:3146 +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." -#: catalog/aclchk.c:3159 -#, c-format -msgid "must be owner of conversion %s" -msgstr "doit �tre le propri�taire de la conversion %s" +#: utils/misc/guc.c:3156 +msgid "Sets the current transaction's synchronization level." +msgstr "Initialise le niveau d'isolation de la transaction courante." -#: catalog/aclchk.c:3161 -#, c-format -msgid "must be owner of tablespace %s" -msgstr "doit �tre le propri�taire du tablespace %s" +#: utils/misc/guc.c:3166 +msgid "Enables logging of recovery-related debugging information." +msgstr "" +"Active les traces sur les informations de d�bogage relatives � la " +"restauration." -#: catalog/aclchk.c:3163 -#, c-format -msgid "must be owner of text search dictionary %s" -msgstr "doit �tre le propri�taire du dictionnaire de recherche plein texte %s" +#: utils/misc/guc.c:3182 +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." -#: catalog/aclchk.c:3165 -#, 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" +#: utils/misc/guc.c:3192 +msgid "Set the level of information written to the WAL." +msgstr "" +"Configure le niveau des informations �crites dans les journaux de " +"transactions." + +#: utils/misc/guc.c:3202 +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:3212 +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:3222 +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." -#: catalog/aclchk.c:3167 +#: utils/misc/guc.c:4064 #, c-format -msgid "must be owner of foreign-data wrapper %s" -msgstr "doit �tre le propri�taire du wrapper de donn�es distantes %s" +msgid "" +"%s does not know where to find the server configuration file.\n" +"You must specify the --config-file or -D invocation option or set the PGDATA " +"environment variable.\n" +msgstr "" +"%s ne sait pas o� trouver le fichier de configuration du serveur.\n" +"Vous devez soit sp�cifier l'option --config-file soit sp�cifier l'option -D\n" +"soit initialiser la variable d'environnement.\n" -#: catalog/aclchk.c:3169 +#: utils/misc/guc.c:4083 #, c-format -msgid "must be owner of foreign server %s" -msgstr "doit �tre le propri�taire de serveur distant %s" +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" -#: catalog/aclchk.c:3211 +#: utils/misc/guc.c:4103 #, c-format -msgid "permission denied for column \"%s\" of relation \"%s\"" -msgstr "droit refus� pour la colonne � %s � de la relation � %s �" +msgid "" +"%s does not know where to find the database system data.\n" +"This can be specified as \"data_directory\" in \"%s\", or by the -D " +"invocation option, or by the PGDATA environment variable.\n" +msgstr "" +"%s ne sait pas o� trouver les donn�es du syst�me de bases de donn�es.\n" +"Il est configurable avec � data_directory � dans � %s � ou avec l'option -D\n" +"ou encore avec la variable d'environnement PGDATA.\n" -#: catalog/aclchk.c:3238 +#: utils/misc/guc.c:4134 #, c-format -msgid "role with OID %u does not exist" -msgstr "le r�le d'OID %u n'existe pas" +msgid "" +"%s does not know where to find the \"hba\" configuration file.\n" +"This can be specified as \"hba_file\" in \"%s\", or by the -D invocation " +"option, or by the PGDATA environment variable.\n" +msgstr "" +"%s ne sait pas o� trouver le fichier de configuration � hba �.\n" +"Il est configurable avec � hba_file � dans � %s � ou avec l'option -D ou\n" +"encore avec la variable d'environnement PGDATA.\n" -#: catalog/aclchk.c:3331 -#: catalog/aclchk.c:3339 +#: utils/misc/guc.c:4157 #, c-format -msgid "attribute %d of relation with OID %u does not exist" -msgstr "l'attribut %d de la relation d'OID %u n'existe pas" +msgid "" +"%s does not know where to find the \"ident\" configuration file.\n" +"This can be specified as \"ident_file\" in \"%s\", or by the -D invocation " +"option, or by the PGDATA environment variable.\n" +msgstr "" +"%s ne sait pas o� trouver le fichier de configuration � hba �.\n" +"Il est configurable avec � ident_file � dans � %s � ou avec l'option -D ou\n" +"encore avec la variable d'environnement PGDATA.\n" + +#: utils/misc/guc.c:4739 utils/misc/guc.c:4903 +msgid "Value exceeds integer range." +msgstr "La valeur d�passe l'�chelle des entiers." + +#: utils/misc/guc.c:4758 +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:4817 +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 �." -#: catalog/aclchk.c:3412 -#: catalog/aclchk.c:4232 +#: utils/misc/guc.c:5100 utils/misc/guc.c:5869 utils/misc/guc.c:5921 +#: utils/misc/guc.c:6594 utils/misc/guc.c:6753 utils/misc/guc.c:7932 +#: guc-file.l:203 #, c-format -msgid "relation with OID %u does not exist" -msgstr "la relation d'OID %u n'existe pas" +msgid "unrecognized configuration parameter \"%s\"" +msgstr "param�tre de configuration � %s � non reconnu" -#: catalog/aclchk.c:3506 -#: catalog/aclchk.c:4596 -#: utils/adt/dbsize.c:127 +#: utils/misc/guc.c:5133 #, c-format -msgid "database with OID %u does not exist" -msgstr "la base de donn�es d'OID %u n'existe pas" +msgid "parameter \"%s\" cannot be changed" +msgstr "le param�tre � %s � ne peut pas �tre chang�" -#: catalog/aclchk.c:3560 -#: catalog/aclchk.c:4310 -#: tcop/fastpath.c:222 +#: utils/misc/guc.c:5162 utils/misc/guc.c:5336 utils/misc/guc.c:5433 +#: utils/misc/guc.c:5527 utils/misc/guc.c:5641 utils/misc/guc.c:5742 +#: guc-file.l:250 #, c-format -msgid "function with OID %u does not exist" -msgstr "la fonction d'OID %u n'existe pas" +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" -#: catalog/aclchk.c:3614 -#: catalog/aclchk.c:4336 +#: utils/misc/guc.c:5172 #, c-format -msgid "language with OID %u does not exist" -msgstr "le langage d'OID %u n'existe pas" +msgid "parameter \"%s\" cannot be changed now" +msgstr "le param�tre � %s � ne peut pas �tre modifi� maintenant" -#: catalog/aclchk.c:3775 -#: catalog/aclchk.c:4408 +#: utils/misc/guc.c:5203 #, c-format -msgid "schema with OID %u does not exist" -msgstr "le sch�ma d'OID %u n'existe pas" +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" -#: catalog/aclchk.c:3829 -#: catalog/aclchk.c:4435 +#: utils/misc/guc.c:5213 utils/misc/guc.c:7947 #, c-format -msgid "tablespace with OID %u does not exist" -msgstr "le tablespace d'OID %u n'existe pas" +msgid "permission denied to set parameter \"%s\"" +msgstr "droit refus� pour initialiser le param�tre � %s �" -#: catalog/aclchk.c:3887 +#: utils/misc/guc.c:5251 #, 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" +msgid "cannot set parameter \"%s\" within security-definer function" +msgstr "" +"ne peut pas configurer le param�tre � %s � � l'int�rieur d'une fonction\n" +"SECURITY DEFINER" -#: catalog/aclchk.c:3948 -#: catalog/aclchk.c:4569 +#: utils/misc/guc.c:5259 utils/init/miscinit.c:381 #, c-format -msgid "foreign server with OID %u does not exist" -msgstr "le serveur distant d'OID %u n'existe pas" +msgid "cannot set parameter \"%s\" within security-restricted operation" +msgstr "" +"ne peut pas configurer le param�tre � %s � � l'int�rieur d'une fonction\n" +"restreinte pour s�curit�" -#: catalog/aclchk.c:4258 +#: utils/misc/guc.c:5309 access/transam/xlog.c:5338 access/transam/xlog.c:5429 +#: access/transam/xlog.c:5440 commands/extension.c:527 +#: commands/extension.c:535 #, c-format -msgid "type with OID %u does not exist" -msgstr "le type d'OID %u n'existe pas" +msgid "parameter \"%s\" requires a Boolean value" +msgstr "le param�tre � %s � requiert une valeur bool�enne" -#: catalog/aclchk.c:4284 +#: utils/misc/guc.c:5397 utils/misc/guc.c:5711 utils/misc/guc.c:8111 +#: utils/misc/guc.c:8145 #, c-format -msgid "operator with OID %u does not exist" -msgstr "l'op�rateur d'OID %u n'existe pas" +msgid "invalid value for parameter \"%s\": \"%s\"" +msgstr "valeur invalide pour le param�tre � %s � : � %s �" -#: catalog/aclchk.c:4461 +#: utils/misc/guc.c:5399 utils/misc/guc.c:5713 utils/misc/guc.c:8014 +#: utils/misc/guc.c:8048 utils/misc/guc.c:8082 utils/misc/guc.c:8116 +#: utils/misc/guc.c:8151 commands/tablecmds.c:696 commands/user.c:957 +#: storage/lmgr/proc.c:1077 storage/lmgr/deadlock.c:951 +#: catalog/objectaddress.c:315 catalog/dependency.c:937 +#: catalog/dependency.c:938 catalog/dependency.c:944 catalog/dependency.c:945 +#: catalog/dependency.c:956 catalog/dependency.c:957 port/win32/security.c:51 #, c-format -msgid "operator class with OID %u does not exist" -msgstr "la classe d'op�rateur d'OID %u n'existe pas" +msgid "%s" +msgstr "%s" -#: catalog/aclchk.c:4488 +#: utils/misc/guc.c:5406 #, c-format -msgid "operator family with OID %u does not exist" -msgstr "la famille d'op�rateur d'OID %u n'existe pas" +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)" -#: catalog/aclchk.c:4515 +#: utils/misc/guc.c:5492 #, 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" +msgid "parameter \"%s\" requires a numeric value" +msgstr "le param�tre � %s � requiert une valeur num�rique" -#: catalog/aclchk.c:4542 +#: utils/misc/guc.c:5500 #, 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" +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)" -#: catalog/aclchk.c:4622 +#: utils/misc/guc.c:5877 utils/misc/guc.c:5925 utils/misc/guc.c:6757 #, c-format -msgid "conversion with OID %u does not exist" -msgstr "la conversion d'OID %u n'existe pas" +msgid "must be superuser to examine \"%s\"" +msgstr "doit �tre super-utilisateur pour examiner � %s �" -#: catalog/catalog.c:75 -msgid "invalid fork name" -msgstr "nom du fork invalide" +#: utils/misc/guc.c:5991 +#, c-format +msgid "SET %s takes only one argument" +msgstr "SET %s prend un seul argument" -#: catalog/catalog.c:76 -msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"." -msgstr "Les noms de fork valides sont � main �, � fsm � et � vm �." +#: utils/misc/guc.c:6224 +msgid "SET requires parameter name" +msgstr "SET requiert le nom du param�tre" -#: catalog/dependency.c:578 +#: utils/misc/guc.c:6339 #, c-format -msgid "cannot drop %s because %s requires it" -msgstr "n'a pas pu supprimer %s car il est requis par %s" +msgid "attempt to redefine parameter \"%s\"" +msgstr "tentative de red�finition du param�tre � %s �" -#: catalog/dependency.c:581 +#: utils/misc/guc.c:7527 utils/init/miscinit.c:1055 #, c-format -msgid "You can drop %s instead." -msgstr "Vous pouvez supprimer %s � la place." +msgid "could not read from file \"%s\": %m" +msgstr "n'a pas pu lire � partir du fichier � %s � : %m" -#: catalog/dependency.c:734 -#: catalog/pg_shdepend.c:560 +#: utils/misc/guc.c:7648 #, 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" +msgid "could not parse setting for parameter \"%s\"" +msgstr "n'a pas pu analyser la configuration du param�tre � %s �" -#: catalog/dependency.c:848 +#: utils/misc/guc.c:8009 utils/misc/guc.c:8043 #, c-format -msgid "drop auto-cascades to %s" -msgstr "DROP cascade automatiquement sur %s" +msgid "invalid value for parameter \"%s\": %d" +msgstr "valeur invalide pour le param�tre � %s � : %d" -#: catalog/dependency.c:860 -#: catalog/dependency.c:869 +#: utils/misc/guc.c:8077 #, c-format -msgid "%s depends on %s" -msgstr "%s d�pend de %s" +msgid "invalid value for parameter \"%s\": %g" +msgstr "valeur invalide pour le param�tre � %s � : %g" -#: catalog/dependency.c:881 -#: catalog/dependency.c:890 -#, c-format -msgid "drop cascades to %s" -msgstr "DROP cascade sur %s" +#: utils/misc/guc.c:8181 commands/variable.c:59 commands/tablespace.c:1167 +#: replication/syncrep.c:661 catalog/namespace.c:3559 +msgid "List syntax is invalid." +msgstr "La syntaxe de la liste est invalide." -#: catalog/dependency.c:898 -#: catalog/pg_shdepend.c:671 +#: utils/misc/guc.c:8205 commands/variable.c:160 #, c-format +msgid "Unrecognized key word: \"%s\"." +msgstr "Mot cl� non reconnu : � %s �" + +#: utils/misc/guc.c:8267 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" -"et %d autre objet (voir le journal applicatif du serveur pour une liste)" -msgstr[1] "" -"\n" -"et %d autres objets (voir le journal applicatif du serveur pour une liste)" +"\"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." -#: catalog/dependency.c:910 -#, c-format -msgid "cannot drop %s because other objects depend on it" -msgstr "n'a pas pu supprimer %s car d'autres objets en d�pendent" +#: utils/misc/guc.c:8279 +msgid "SET AUTOCOMMIT TO OFF is no longer supported" +msgstr "SET AUTOCOMMIT TO OFF n'est plus support�" -#: catalog/dependency.c:912 -#: catalog/dependency.c:913 -#: catalog/dependency.c:919 -#: catalog/dependency.c:920 -#: catalog/dependency.c:931 -#: catalog/dependency.c:932 -#: commands/tablecmds.c:658 -#: commands/trigger.c:832 -#: commands/trigger.c:848 -#: commands/trigger.c:860 -#: commands/user.c:902 -#: commands/user.c:903 -#: tcop/postgres.c:4300 -#: storage/lmgr/deadlock.c:942 -#: storage/lmgr/deadlock.c:943 -#: nodes/print.c:85 -#: utils/adt/xml.c:1363 -#: utils/adt/xml.c:1364 -#: utils/adt/xml.c:1370 -#: utils/adt/xml.c:1441 -#: utils/misc/guc.c:4963 -#: utils/misc/guc.c:5231 -#: utils/fmgr/dfmgr.c:381 -#, c-format -msgid "%s" -msgstr "%s" +#: utils/misc/guc.c:8354 +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" -#: catalog/dependency.c:914 -#: catalog/dependency.c:921 -msgid "Use DROP ... CASCADE to drop the dependent objects too." -msgstr "Utilisez DROP ... CASCADE pour supprimer aussi les objets d�pendants." +#: utils/misc/guc.c:8367 +msgid "Bonjour is not supported by this build" +msgstr "Bonjour n'est pas support� dans cette installation" -#: catalog/dependency.c:918 -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" +#: utils/misc/guc.c:8380 +msgid "SSL is not supported by this build" +msgstr "SSL n'est pas support� dans cette installation" -#. translator: %d always has a value larger than 1 -#: catalog/dependency.c:927 -#, c-format -msgid "drop cascades to %d other object" -msgid_plural "drop cascades to %d other objects" -msgstr[0] "DROP cascade sur %d autre objet" -msgstr[1] "DROP cascade sur %d autres objets" +#: utils/misc/guc.c:8392 +msgid "Cannot enable parameter when \"log_statement_stats\" is true." +msgstr "Ne peut pas activer le param�tre avec � log_statement_stats � � true." -#: catalog/dependency.c:2110 -#, c-format -msgid " column %s" -msgstr " colonne %s" +#: utils/misc/guc.c:8404 +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." -#: catalog/dependency.c:2116 +#: guc-file.l:274 #, c-format -msgid "function %s" -msgstr "fonction %s" +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" -#: catalog/dependency.c:2121 +#: guc-file.l:333 #, c-format -msgid "type %s" -msgstr "type %s" +msgid "parameter \"%s\" changed to \"%s\"" +msgstr "param�tre � %s � modifi� par � %s �" -#: catalog/dependency.c:2151 +#: guc-file.l:374 #, c-format -msgid "cast from %s to %s" -msgstr "conversion de %s en %s" +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�" -#: catalog/dependency.c:2178 +#: guc-file.l:409 libpq/hba.c:1683 #, c-format -msgid "constraint %s on %s" -msgstr "contrainte %s sur %s" +msgid "could not open configuration file \"%s\": %m" +msgstr "n'a pas pu ouvrir le fichier de configuration � %s � : %m" -#: catalog/dependency.c:2184 +#: guc-file.l:589 #, c-format -msgid "constraint %s" -msgstr "contrainte %s" +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" -#: catalog/dependency.c:2201 +#: guc-file.l:594 #, c-format -msgid "conversion %s" -msgstr "conversion %s" +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 �" -#: catalog/dependency.c:2238 +#: utils/misc/tzparser.c:61 #, c-format -msgid "default for %s" -msgstr "valeur par d�faut pour %s" +msgid "" +"time zone abbreviation \"%s\" is too long (maximum %d characters) in time " +"zone file \"%s\", line %d" +msgstr "" +"l'abr�viation � %s � du fuseau horaire est trop long (maximum %d " +"caract�res)\n" +"dans le fichier de fuseaux horaires � %s �, ligne %d" -#: catalog/dependency.c:2255 +#: utils/misc/tzparser.c:68 #, c-format -msgid "language %s" -msgstr "langage %s" +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" -#: catalog/dependency.c:2261 +#: utils/misc/tzparser.c:80 #, c-format -msgid "large object %u" -msgstr "� Large Object � %u" +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" -#: catalog/dependency.c:2266 +#: utils/misc/tzparser.c:115 #, c-format -msgid "operator %s" -msgstr "op�rateur %s" +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" -#: catalog/dependency.c:2298 +#: utils/misc/tzparser.c:124 #, c-format -msgid "operator class %s for access method %s" -msgstr "classe d'op�rateur %s pour la m�thode d'acc�s %s" +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" -#: catalog/dependency.c:2348 +#: utils/misc/tzparser.c:131 #, c-format -msgid "operator %d %s of %s" -msgstr "op�rateur %d %s de %s" +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" -#: catalog/dependency.c:2395 +#: utils/misc/tzparser.c:154 #, c-format -msgid "function %d %s of %s" -msgstr "fonction %d %s de %s" +msgid "invalid syntax in time zone file \"%s\", line %d" +msgstr "syntaxe invalide dans le fichier des fuseaux horaires � %s �, ligne %d" -#: catalog/dependency.c:2432 +#: utils/misc/tzparser.c:218 #, c-format -msgid "rule %s on " -msgstr "r�gle %s active" +msgid "time zone abbreviation \"%s\" is multiply defined" +msgstr "l'abr�viation � %s � du fuseau horaire est d�finie plusieurs fois" -#: catalog/dependency.c:2467 +#: utils/misc/tzparser.c:220 #, c-format -msgid "trigger %s on " -msgstr "trigger %s actif " +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." -#: catalog/dependency.c:2484 +#: utils/misc/tzparser.c:285 #, c-format -msgid "schema %s" -msgstr "sch�ma %s" +msgid "invalid time zone file name \"%s\"" +msgstr "nom du fichier de fuseaux horaires invalide : � %s �" -#: catalog/dependency.c:2497 +#: utils/misc/tzparser.c:298 #, c-format -msgid "text search parser %s" -msgstr "analyseur %s de la recherche plein texte" +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)" -#: catalog/dependency.c:2512 +#: utils/misc/tzparser.c:337 utils/misc/tzparser.c:350 #, c-format -msgid "text search dictionary %s" -msgstr "dictionnaire %s de la recherche plein texte" +msgid "could not read time zone file \"%s\": %m" +msgstr "n'a pas pu lire le fichier des fuseaux horaires � %s � : %m" -#: catalog/dependency.c:2527 +#: utils/misc/tzparser.c:360 #, c-format -msgid "text search template %s" -msgstr "mod�le %s de la recherche plein texte" +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" -#: catalog/dependency.c:2542 +#: utils/misc/tzparser.c:383 #, c-format -msgid "text search configuration %s" -msgstr "configuration %s de recherche plein texte" +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" -#: catalog/dependency.c:2550 +#: utils/init/miscinit.c:115 #, c-format -msgid "role %s" -msgstr "r�le %s" +msgid "could not change directory to \"%s\": %m" +msgstr "n'a pas pu modifier le r�pertoire par � %s � : %m" -#: catalog/dependency.c:2563 +#: utils/init/miscinit.c:432 utils/adt/acl.c:4852 commands/variable.c:893 +#: commands/variable.c:965 commands/user.c:623 commands/user.c:825 +#: commands/user.c:905 commands/user.c:1056 #, c-format -msgid "database %s" -msgstr "base de donn�es %s" +msgid "role \"%s\" does not exist" +msgstr "le r�le � %s � n'existe pas" -#: catalog/dependency.c:2575 +#: utils/init/miscinit.c:460 #, c-format -msgid "tablespace %s" -msgstr "tablespace %s" +msgid "role \"%s\" is not permitted to log in" +msgstr "le r�le � %s � n'est pas autoris� � se connecter" -#: catalog/dependency.c:2584 +#: utils/init/miscinit.c:478 #, c-format -msgid "foreign-data wrapper %s" -msgstr "wrapper de donn�es distantes %s" +msgid "too many connections for role \"%s\"" +msgstr "trop de connexions pour le r�le � %s �" -#: catalog/dependency.c:2593 +#: utils/init/miscinit.c:538 +msgid "permission denied to set session authorization" +msgstr "droit refus� pour initialiser une autorisation de session" + +#: utils/init/miscinit.c:618 #, c-format -msgid "server %s" -msgstr "serveur %s" +msgid "invalid role OID: %u" +msgstr "OID du r�le invalide : %u" -#: catalog/dependency.c:2618 +#: utils/init/miscinit.c:750 #, c-format -msgid "user mapping for %s" -msgstr "correspondance utilisateur pour %s" +msgid "could not create lock file \"%s\": %m" +msgstr "n'a pas pu cr�er le fichier verrou � %s � : %m" -#: catalog/dependency.c:2652 +#: utils/init/miscinit.c:764 #, 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" +msgid "could not open lock file \"%s\": %m" +msgstr "n'a pas pu ouvrir le fichier verrou � %s � : %m" -#: catalog/dependency.c:2657 +#: utils/init/miscinit.c:770 #, 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" +msgid "could not read lock file \"%s\": %m" +msgstr "n'a pas pu lire le fichier verrou � %s � : %m" -#: catalog/dependency.c:2662 +#: utils/init/miscinit.c:818 #, 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" +msgid "lock file \"%s\" already exists" +msgstr "le fichier verrou � %s � existe d�j�" -#: catalog/dependency.c:2668 +#: utils/init/miscinit.c:822 #, c-format -msgid "default privileges belonging to role %s" -msgstr "droits par d�faut appartenant au r�le %s" +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 � ?" -#: catalog/dependency.c:2676 +#: utils/init/miscinit.c:824 #, c-format -msgid " in schema %s" -msgstr " dans le sch�ma %s" +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 � ?" -#: catalog/dependency.c:2724 +#: utils/init/miscinit.c:827 #, c-format -msgid "table %s" -msgstr "table %s" +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 " +"� ?" -#: catalog/dependency.c:2728 +#: utils/init/miscinit.c:829 #, c-format -msgid "index %s" -msgstr "index %s" +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 � ?" -#: catalog/dependency.c:2732 +#: utils/init/miscinit.c:865 #, c-format -msgid "sequence %s" -msgstr "s�quence %s" +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" -#: catalog/dependency.c:2736 +#: utils/init/miscinit.c:868 #, c-format -msgid "uncataloged table %s" -msgstr "table %s sans catalogue" +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 �." -#: catalog/dependency.c:2740 +#: utils/init/miscinit.c:884 #, c-format -msgid "toast table %s" -msgstr "table TOAST %s" +msgid "could not remove old lock file \"%s\": %m" +msgstr "n'a pas pu supprimer le vieux fichier verrou � %s � : %m" -#: catalog/dependency.c:2744 +#: 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 "" +"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:927 utils/init/miscinit.c:938 +#: utils/init/miscinit.c:948 #, c-format -msgid "view %s" -msgstr "vue %s" +msgid "could not write lock file \"%s\": %m" +msgstr "n'a pas pu �crire le fichier verrou � %s � : %m" -#: catalog/dependency.c:2748 +#: utils/init/miscinit.c:1046 utils/init/miscinit.c:1161 +#: utils/error/elog.c:1549 access/transam/xlog.c:2515 +#: access/transam/xlog.c:4232 access/transam/xlog.c:4326 +#: access/transam/xlog.c:4482 replication/basebackup.c:895 +#: storage/file/copydir.c:165 storage/file/copydir.c:255 storage/smgr/md.c:553 +#: storage/smgr/md.c:810 #, c-format -msgid "composite type %s" -msgstr "type composite %s" +msgid "could not open file \"%s\": %m" +msgstr "n'a pas pu ouvrir le fichier � %s � : %m" -#: catalog/dependency.c:2753 +#: utils/init/miscinit.c:1155 utils/init/miscinit.c:1168 #, c-format -msgid "relation %s" -msgstr "relation %s" +msgid "\"%s\" is not a valid data directory" +msgstr "� %s � n'est pas un r�pertoire de donn�es valide" -#: catalog/dependency.c:2790 +#: utils/init/miscinit.c:1157 #, c-format -msgid "operator family %s for access method %s" -msgstr "famille d'op�rateur %s pour la m�thode d'acc�s %s" +msgid "File \"%s\" is missing." +msgstr "le fichier � %s � est manquant." -#: catalog/heap.c:257 +#: utils/init/miscinit.c:1170 #, c-format -msgid "permission denied to create \"%s.%s\"" -msgstr "droit refus� pour cr�er � %s.%s �" +msgid "File \"%s\" does not contain valid data." +msgstr "le fichier � %s � ne contient aucune donn�es valides." -#: catalog/heap.c:259 -msgid "System catalog modifications are currently disallowed." -msgstr "Les modifications du catalogue syst�me sont actuellement interdites." +#: utils/init/miscinit.c:1172 +msgid "You might need to initdb." +msgstr "Vous pouvez avoir besoin d'ex�cuter initdb." -#: catalog/heap.c:380 -#: commands/tablecmds.c:1235 -#: commands/tablecmds.c:1619 -#: commands/tablecmds.c:3723 +#: utils/init/miscinit.c:1179 access/transam/xlog.c:4754 +#: access/transam/xlog.c:4763 access/transam/xlog.c:4787 +#: access/transam/xlog.c:4794 access/transam/xlog.c:4801 +#: access/transam/xlog.c:4806 access/transam/xlog.c:4813 +#: access/transam/xlog.c:4820 access/transam/xlog.c:4827 +#: access/transam/xlog.c:4834 access/transam/xlog.c:4841 +#: access/transam/xlog.c:4848 access/transam/xlog.c:4857 +#: access/transam/xlog.c:4864 access/transam/xlog.c:4873 +#: access/transam/xlog.c:4880 access/transam/xlog.c:4889 +#: access/transam/xlog.c:4896 +msgid "database files are incompatible with server" +msgstr "les fichiers de la base de donn�es sont incompatibles avec le serveur" + +#: utils/init/miscinit.c:1180 #, c-format -msgid "tables can have at most %d columns" -msgstr "les tables peuvent avoir au plus %d colonnes" +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." -#: catalog/heap.c:397 +#: utils/init/miscinit.c:1228 #, 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" +msgid "invalid list syntax in parameter \"%s\"" +msgstr "syntaxe de liste invalide pour le param�tre � %s �" -#: catalog/heap.c:413 +#: utils/init/miscinit.c:1265 #, c-format -msgid "column name \"%s\" specified more than once" -msgstr "colonne � %s � sp�cifi�e plus d'une fois" +msgid "loaded library \"%s\"" +msgstr "biblioth�que � %s � charg�e" -#: catalog/heap.c:461 +#: utils/init/postinit.c:225 #, c-format -msgid "column \"%s\" has type \"unknown\"" -msgstr "la colonne � %s � est de type � unknown �" +msgid "replication connection authorized: user=%s" +msgstr "connexion de r�plication autoris�e : utilisateur=%s" -#: catalog/heap.c:462 -msgid "Proceeding with relation creation anyway." -msgstr "Poursuit malgr� tout la cr�ation de la relation." +#: utils/init/postinit.c:229 +#, c-format +msgid "connection authorized: user=%s database=%s" +msgstr "connexion autoris�e : utilisateur=%s, base de donn�es=%s" -#: catalog/heap.c:475 +#: utils/init/postinit.c:260 #, c-format -msgid "column \"%s\" has pseudo-type %s" -msgstr "la colonne � %s � a le pseudo type %s" +msgid "database \"%s\" has disappeared from pg_database" +msgstr "la base de donn�es � %s � a disparu de pg_database" -#: catalog/heap.c:498 +#: utils/init/postinit.c:262 #, 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" +msgid "Database OID %u now seems to belong to \"%s\"." +msgstr "La base de donn�es d'OID %u semble maintenant appartenir � � %s �." -#: catalog/heap.c:963 -#: catalog/index.c:621 -#: commands/tablecmds.c:2211 +#: utils/init/postinit.c:282 #, c-format -msgid "relation \"%s\" already exists" -msgstr "la relation � %s � existe d�j�" +msgid "database \"%s\" is not currently accepting connections" +msgstr "la base de donn�es � %s � n'accepte plus les connexions" -#: catalog/heap.c:979 -#: catalog/pg_type.c:385 -#: catalog/pg_type.c:665 -#: commands/typecmds.c:218 -#: commands/typecmds.c:795 -#: commands/typecmds.c:1120 -#: commands/typecmds.c:1543 +#: utils/init/postinit.c:295 #, c-format -msgid "type \"%s\" already exists" -msgstr "le type � %s � existe d�j�" +msgid "permission denied for database \"%s\"" +msgstr "droit refus� pour la base de donn�es � %s �" -#: catalog/heap.c:980 -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." +#: utils/init/postinit.c:296 +msgid "User does not have CONNECT privilege." +msgstr "L'utilisateur n'a pas le droit CONNECT." -#: catalog/heap.c:2023 +#: utils/init/postinit.c:313 #, c-format -msgid "check constraint \"%s\" already exists" -msgstr "la contrainte de v�rification � %s � existe d�j�" +msgid "too many connections for database \"%s\"" +msgstr "trop de connexions pour la base de donn�es � %s �" -#: catalog/heap.c:2167 -#: catalog/pg_constraint.c:639 -#: commands/tablecmds.c:4636 -#, c-format -msgid "constraint \"%s\" for relation \"%s\" already exists" -msgstr "la contrainte � %s � de la relation � %s � existe d�j�" +#: utils/init/postinit.c:335 utils/init/postinit.c:342 +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" -#: catalog/heap.c:2171 +#: utils/init/postinit.c:336 #, 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:2269 -msgid "cannot use column references in default expression" -msgstr "ne peut pas utiliser les r�f�rences de colonnes dans l'expression par d�faut" - -#: catalog/heap.c:2277 -msgid "default expression must not return a set" -msgstr "l'expression par d�faut ne doit pas renvoyer un ensemble" - -#: catalog/heap.c:2285 -msgid "cannot use subquery in default expression" -msgstr "ne peut pas utiliser une sous-requ�te dans l'expression par d�faut" - -#: catalog/heap.c:2289 -msgid "cannot use aggregate function in default expression" -msgstr "ne peut pas utiliser une fonction d'agr�gat dans une expression par d�faut" +msgid "" +"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()." -#: catalog/heap.c:2293 -msgid "cannot use window function in default expression" -msgstr "ne peut pas utiliser une fonction window dans une expression par d�faut" +#: utils/init/postinit.c:338 utils/init/postinit.c:345 +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." -#: catalog/heap.c:2312 -#: rewrite/rewriteHandler.c:952 +#: utils/init/postinit.c:343 #, c-format -msgid "column \"%s\" is of type %s but default expression is of type %s" -msgstr "la colonne � %s � est de type %s alors que l'expression par d�faut est de type %s" - -#: catalog/heap.c:2317 -#: commands/prepare.c:369 -#: parser/parse_node.c:370 -#: parser/parse_target.c:475 -#: parser/parse_target.c:734 -#: parser/parse_target.c:744 -#: rewrite/rewriteHandler.c:957 -msgid "You will need to rewrite or cast the expression." -msgstr "Vous devez r��crire l'expression ou lui appliquer une transformation de type." +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()." -#: catalog/heap.c:2353 -#, 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" +#: utils/init/postinit.c:608 +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" -#: catalog/heap.c:2362 -#: commands/typecmds.c:2298 -msgid "cannot use subquery in check constraint" -msgstr "ne peut pas utiliser une sous-requ�te dans la contrainte de v�rification" +#: utils/init/postinit.c:609 +#, c-format +msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;." +msgstr "Vous devez imm�diatement ex�cuter � CREATE USER \"%s\" CREATEUSER; �." -#: catalog/heap.c:2366 -#: commands/typecmds.c:2302 -msgid "cannot use aggregate function in check constraint" -msgstr "ne peut pas utiliser une fonction d'aggr�gat dans une contrainte de v�rification" +#: utils/init/postinit.c:632 +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" -#: catalog/heap.c:2370 -#: commands/typecmds.c:2306 -msgid "cannot use window function in check constraint" -msgstr "ne peut pas utiliser une fonction window dans une contrainte de v�rification" +#: utils/init/postinit.c:636 +msgid "must be superuser to connect during database shutdown" +msgstr "" +"doit �tre super-utilisateur pour se connecter pendant un arr�t de la base " +"de\n" +"donn�es" -#: catalog/heap.c:2609 -msgid "unsupported ON COMMIT and foreign key combination" -msgstr "combinaison ON COMMIT et cl� �trang�re non support�e" +#: utils/init/postinit.c:646 +msgid "must be superuser to connect in binary upgrade mode" +msgstr "" +"doit �tre super-utilisateur pour se connecter en mode de mise � jour binaire" -#: catalog/heap.c:2610 -#, c-format -msgid "Table \"%s\" references \"%s\", but they do not have the same ON COMMIT setting." +#: utils/init/postinit.c:660 +msgid "" +"remaining connection slots are reserved for non-replication superuser " +"connections" msgstr "" -"La table � %s � r�f�rence � %s � mais elles n'ont pas la m�me valeur pour le\n" -"param�tre ON COMMIT." +"les emplacements de connexions restants sont r�serv�s pour les connexion\n" +"superutilisateur non relatif � la r�plication" -#: catalog/heap.c:2615 -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" +#: utils/init/postinit.c:675 +msgid "must be replication role to start walsender" +msgstr "" +"doit �tre un r�le ayant l'attribut de r�plication pour ex�cuter walsender" -#: catalog/heap.c:2616 +#: utils/init/postinit.c:718 utils/init/postinit.c:786 +#: utils/init/postinit.c:803 commands/dbcommands.c:791 +#: commands/dbcommands.c:936 commands/dbcommands.c:1035 +#: commands/dbcommands.c:1208 commands/dbcommands.c:1393 +#: commands/dbcommands.c:1478 commands/dbcommands.c:1905 commands/comment.c:60 #, c-format -msgid "Table \"%s\" references \"%s\"." -msgstr "La table � %s � r�f�rence � %s �." +msgid "database \"%s\" does not exist" +msgstr "la base de donn�es � %s � n'existe pas" -#: catalog/heap.c:2618 +#: utils/init/postinit.c:735 #, c-format -msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." -msgstr "Tronquez la table � %s � en m�me temps, ou utilisez TRUNCATE ... CASCADE." - -#: catalog/index.c:582 -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" - -#: catalog/index.c:592 -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" +msgid "database %u does not exist" +msgstr "la base de donn�es � %u � n'existe pas" -#: catalog/index.c:610 -msgid "shared indexes cannot be created after initdb" -msgstr "les index partag�s ne peuvent pas �tre cr��s apr�s initdb" +#: utils/init/postinit.c:787 +msgid "It seems to have just been dropped or renamed." +msgstr "Cet objet semble avoir �t� tout juste supprim� ou renomm�." -#: catalog/index.c:2432 -msgid "cannot reindex temporary tables of other sessions" -msgstr "ne peut pas r�-indexer les tables temporaires des autres sessions" +#: utils/init/postinit.c:805 +#, c-format +msgid "The database subdirectory \"%s\" is missing." +msgstr "Le sous-r�pertoire de la base de donn�es � %s � est manquant." -#: catalog/namespace.c:232 -#: catalog/namespace.c:306 -#: commands/trigger.c:3961 +#: utils/init/postinit.c:810 #, 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 �" +msgid "could not access directory \"%s\": %m" +msgstr "n'a pas pu acc�der au r�pertoire � %s � : %m" -#: catalog/namespace.c:250 -#: catalog/namespace.c:317 -msgid "temporary tables cannot specify a schema name" -msgstr "les tables temporaires ne peuvent pas sp�cifier un nom de sch�ma" +#: utils/error/elog.c:311 utils/error/elog.c:1168 +#, c-format +msgid "error occurred at %s:%d before error message processing is available\n" +msgstr "" +"l'erreur survenue � %s:%d avant le traitement des messages d'erreurs est " +"disponible\n" -#: catalog/namespace.c:273 -#: commands/lockcmds.c:122 -#: parser/parse_relation.c:835 +#: utils/error/elog.c:1559 #, c-format -msgid "relation \"%s.%s\" does not exist" -msgstr "la relation � %s.%s � n'existe pas" +msgid "could not reopen file \"%s\" as stderr: %m" +msgstr "n'a pas pu r�-ouvrir le fichier � %s � comme stderr : %m" -#: catalog/namespace.c:278 -#: commands/lockcmds.c:127 -#: parser/parse_relation.c:848 -#: parser/parse_relation.c:856 -#: utils/adt/regproc.c:810 +#: utils/error/elog.c:1572 #, c-format -msgid "relation \"%s\" does not exist" -msgstr "la relation � %s � n'existe pas" +msgid "could not reopen file \"%s\" as stdout: %m" +msgstr "n'a pas pu r�-ouvrir le fichier � %s � comme stdout : %m" -#: catalog/namespace.c:358 -#: catalog/namespace.c:2410 -msgid "no schema has been selected to create in" -msgstr "aucun sch�ma n'a �t� s�lectionn� pour cette cr�ation" +#: utils/error/elog.c:1962 utils/error/elog.c:1972 utils/error/elog.c:1982 +msgid "[unknown]" +msgstr "[inconnu]" -#: catalog/namespace.c:1748 -#: commands/tsearchcmds.c:306 -#, c-format -msgid "text search parser \"%s\" does not exist" -msgstr "l'analyseur de recherche plein texte � %s � n'existe pas" +#: utils/error/elog.c:2333 utils/error/elog.c:2613 utils/error/elog.c:2691 +msgid "missing error text" +msgstr "texte d'erreur manquant" -#: catalog/namespace.c:1871 -#: commands/tsearchcmds.c:654 +#: utils/error/elog.c:2336 utils/error/elog.c:2339 utils/error/elog.c:2694 +#: utils/error/elog.c:2697 #, c-format -msgid "text search dictionary \"%s\" does not exist" -msgstr "le dictionnaire de recherche plein texte � %s � n'existe pas" +msgid " at character %d" +msgstr " au caract�re %d" -#: catalog/namespace.c:1995 -#: commands/tsearchcmds.c:1137 -#, c-format -msgid "text search template \"%s\" does not exist" -msgstr "le mod�le de recherche plein texte � %s � n'existe pas" +#: utils/error/elog.c:2349 utils/error/elog.c:2356 +msgid "DETAIL: " +msgstr "D�TAIL: " -#: catalog/namespace.c:2118 -#: commands/tsearchcmds.c:1532 -#: commands/tsearchcmds.c:1688 -#, c-format -msgid "text search configuration \"%s\" does not exist" -msgstr "la configuration de recherche plein texte � %s � n'existe pas" +#: utils/error/elog.c:2363 +msgid "HINT: " +msgstr "ASTUCE : " -#: catalog/namespace.c:2231 -#: parser/parse_expr.c:769 -#: parser/parse_target.c:998 -#, 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" +#: utils/error/elog.c:2370 +msgid "QUERY: " +msgstr "REQU�TE : " + +#: utils/error/elog.c:2377 +msgid "CONTEXT: " +msgstr "CONTEXTE : " -#: catalog/namespace.c:2237 -#: parser/parse_expr.c:776 -#: parser/parse_target.c:1005 -#: gram.y:3673 -#: gram.y:10605 +#: utils/error/elog.c:2387 #, c-format -msgid "improper qualified name (too many dotted names): %s" -msgstr "mauvaise qualification du nom (trop de points entre les noms) : %s" +msgid "LOCATION: %s, %s:%d\n" +msgstr "EMPLACEMENT : %s, %s:%d\n" -#: catalog/namespace.c:2442 +#: utils/error/elog.c:2394 #, c-format -msgid "improper relation name (too many dotted names): %s" -msgstr "nom de relation incorrecte (trop de points entre les noms) : %s" +msgid "LOCATION: %s:%d\n" +msgstr "EMPLACEMENT : %s:%d\n" + +#: utils/error/elog.c:2408 +msgid "STATEMENT: " +msgstr "INSTRUCTION : " -#: catalog/namespace.c:3024 +#. translator: This string will be truncated at 47 +#. characters expanded. +#: utils/error/elog.c:2812 #, 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 �" +msgid "operating system error %d" +msgstr "erreur %d du syst�me d'exploitation" -#: catalog/namespace.c:3040 -msgid "cannot create temporary tables during recovery" -msgstr "ne peut pas cr�er des tables temporaires lors de la restauration" +#: utils/error/elog.c:3007 +msgid "DEBUG" +msgstr "DEBUG" -#: catalog/pg_aggregate.c:100 -msgid "cannot determine transition data type" -msgstr "n'a pas pu d�terminer le type de donn�es de transition" +#: utils/error/elog.c:3011 +msgid "LOG" +msgstr "LOG" -#: catalog/pg_aggregate.c:101 -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 argument polymorphique." +#: utils/error/elog.c:3014 +msgid "INFO" +msgstr "INFO" -#: catalog/pg_aggregate.c:124 -#, 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" +#: utils/error/elog.c:3017 +msgid "NOTICE" +msgstr "NOTICE" -#: 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 "" -"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" +#: utils/error/elog.c:3020 +msgid "WARNING" +msgstr "ATTENTION" -#: catalog/pg_aggregate.c:175 -#: catalog/pg_proc.c:204 -msgid "cannot determine result data type" -msgstr "n'a pas pu d�terminer le type de donn�es en r�sultat" +#: utils/error/elog.c:3023 +msgid "ERROR" +msgstr "ERREUR" -#: catalog/pg_aggregate.c:176 -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." +#: utils/error/elog.c:3026 +msgid "FATAL" +msgstr "FATAL" -#: catalog/pg_aggregate.c:188 -#: catalog/pg_proc.c:210 -msgid "unsafe use of pseudo-type \"internal\"" -msgstr "utilisation non s�re des pseudo-types � INTERNAL �" +#: utils/error/elog.c:3029 +msgid "PANIC" +msgstr "PANIC" -#: catalog/pg_aggregate.c:189 -#: catalog/pg_proc.c:211 -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 �." +#: utils/error/assert.c:37 +msgid "TRAP: ExceptionalCondition: bad arguments\n" +msgstr "TRAP : ExceptionalCondition : mauvais arguments\n" -#: catalog/pg_aggregate.c:197 -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:331 -#: commands/typecmds.c:1269 -#: commands/typecmds.c:1320 -#: commands/typecmds.c:1351 -#: commands/typecmds.c:1374 -#: commands/typecmds.c:1395 -#: commands/typecmds.c:1422 -#: commands/typecmds.c:1449 -#: parser/parse_func.c:294 -#: parser/parse_func.c:305 -#: parser/parse_func.c:1464 +#: utils/error/assert.c:40 #, c-format -msgid "function %s does not exist" -msgstr "la fonction %s n'existe pas" +msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n" +msgstr "TRAP : %s(� %s �, fichier : � %s �, ligne : %d)\n" -#: catalog/pg_aggregate.c:337 +#: utils/sort/tuplesort.c:3131 #, c-format -msgid "function %s returns a set" -msgstr "la fonction %s renvoie un ensemble" +msgid "could not create unique index \"%s\"" +msgstr "n'a pas pu cr�er l'index unique � %s �" -#: catalog/pg_aggregate.c:362 +#: utils/sort/tuplesort.c:3133 #, c-format -msgid "function %s requires run-time type coercion" -msgstr "la fonction %s requiert une coercion sur le type � l'ex�cution" +msgid "Key %s is duplicated." +msgstr "La cl� %s est dupliqu�e." -#: catalog/pg_constraint.c:648 -#: commands/typecmds.c:2239 +#: utils/sort/logtape.c:213 #, c-format -msgid "constraint \"%s\" for domain \"%s\" already exists" -msgstr "la contrainte � %s � du domaine � %s � existe d�j�" +msgid "could not write block %ld of temporary file: %m" +msgstr "n'a pas pu �crire le bloc %ld du fichier temporaire : %m" -#: catalog/pg_constraint.c:767 -#, c-format -msgid "table \"%s\" has multiple constraints named \"%s\"" -msgstr "la table � %s � a de nombreuses contraintes nomm�es � %s �" +#: utils/sort/logtape.c:215 +msgid "Perhaps out of disk space?" +msgstr "Peut-�tre manquez-vous de place disque ?" -#: catalog/pg_constraint.c:779 +#: utils/sort/logtape.c:232 #, c-format -msgid "constraint \"%s\" for table \"%s\" does not exist" -msgstr "la contrainte � %s � de la table � %s � n'existe pas" +msgid "could not read block %ld of temporary file: %m" +msgstr "n'a pas pu lire le bloc %ld du fichier temporaire : %m" -#: catalog/pg_conversion.c:66 +#: utils/fmgr/fmgr.c:272 #, c-format -msgid "conversion \"%s\" already exists" -msgstr "la conversion � %s � existe d�j�" +msgid "internal function \"%s\" is not in internal lookup table" +msgstr "" +"la fonction interne � %s � n'est pas dans une table de recherche interne" -#: catalog/pg_conversion.c:79 +#: utils/fmgr/fmgr.c:482 #, c-format -msgid "default conversion for %s to %s already exists" -msgstr "la conversion par d�faut de %s vers %s existe d�j�" +msgid "unrecognized API version %d reported by info function \"%s\"" +msgstr "version API %d non reconnue mais rapport�e par la fonction info � %s �" -#: catalog/pg_depend.c:209 +#: utils/fmgr/fmgr.c:853 utils/fmgr/fmgr.c:2114 #, 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" - -#: catalog/pg_enum.c:70 -msgid "EnumValuesCreate() can only set a single OID" -msgstr "EnumValuesCreate() peut seulement initialiser un seul OID" +msgid "function %u has too many arguments (%d, maximum is %d)" +msgstr "la fonction %u a trop d'arguments (%d, le maximum �tant %d)" -#: catalog/pg_enum.c:110 +#: utils/fmgr/fmgr.c:2507 #, c-format -msgid "invalid enum label \"%s\"" -msgstr "nom du label enum � %s � invalide" +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" -#: catalog/pg_enum.c:111 +#: utils/fmgr/dfmgr.c:125 #, c-format -msgid "Labels must be %d characters or less." -msgstr "Les labels doivent avoir au plus %d caract�res" +msgid "could not find function \"%s\" in file \"%s\"" +msgstr "n'a pas pu trouver la fonction � %s � dans le fichier � %s �" -#: catalog/pg_largeobject.c:200 -#: commands/comment.c:1422 -#: libpq/be-fsstubs.c:287 +#: utils/fmgr/dfmgr.c:204 utils/fmgr/dfmgr.c:413 utils/fmgr/dfmgr.c:461 #, c-format -msgid "must be owner of large object %u" -msgstr "doit �tre le propri�taire du Large Object %u" +msgid "could not access file \"%s\": %m" +msgstr "n'a pas pu acc�der au fichier � %s � : %m" -#: catalog/pg_namespace.c:50 -#: commands/schemacmds.c:272 +#: utils/fmgr/dfmgr.c:242 #, c-format -msgid "schema \"%s\" already exists" -msgstr "le sch�ma � %s � existe d�j�" +msgid "could not load library \"%s\": %s" +msgstr "n'a pas pu charger la biblioth�que � %s � : %s" -#: catalog/pg_operator.c:220 -#: catalog/pg_operator.c:358 +#: utils/fmgr/dfmgr.c:274 #, c-format -msgid "\"%s\" is not a valid operator name" -msgstr "� %s � n'est pas un nom d'op�rateur valide" - -#: catalog/pg_operator.c:367 -msgid "only binary operators can have commutators" -msgstr "seuls les op�rateurs binaires peuvent avoir des commutateurs" - -#: catalog/pg_operator.c:371 -msgid "only binary operators can have join selectivity" -msgstr "seuls les op�rateurs binaires peuvent avoir une s�lectivit� des jointures" - -#: catalog/pg_operator.c:375 -msgid "only binary operators can merge join" -msgstr "seuls les op�rateurs binaires peuvent ex�cuter des jointures MERGE" - -#: catalog/pg_operator.c:379 -msgid "only binary operators can hash" -msgstr "seuls les op�rateurs binaires ont du hachage" +msgid "incompatible library \"%s\": missing magic block" +msgstr "biblioth�que � %s � incompatible : bloc magique manquant" -#: catalog/pg_operator.c:390 -msgid "only boolean operators can have negators" -msgstr "seuls les op�rateurs bool�ens peuvent avoir des n�gations" +#: utils/fmgr/dfmgr.c:276 +msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro." +msgstr "" +"Les biblioth�ques �tendues n�cessitent l'utilisation de la macro\n" +"PG_MODULE_MAGIC." -#: catalog/pg_operator.c:394 -msgid "only boolean operators can have restriction selectivity" -msgstr "seuls les op�rateurs bool�ens peuvent avoir une s�lectivit� des restrictions" +#: utils/fmgr/dfmgr.c:312 +#, c-format +msgid "incompatible library \"%s\": version mismatch" +msgstr "biblioth�que � %s � incompatible : versions diff�rentes" -#: catalog/pg_operator.c:398 -msgid "only boolean operators can have join selectivity" -msgstr "seuls les op�rateurs bool�ens peuvent avoir une s�lectivit� des jointures" +#: utils/fmgr/dfmgr.c:314 +#, c-format +msgid "Server is version %d.%d, library is version %d.%d." +msgstr "La version du serveur est %d.%d, celle de la biblioth�que est %d.%d." -#: catalog/pg_operator.c:402 -msgid "only boolean operators can merge join" -msgstr "seuls les op�rateurs bool�ens peuvent ex�cuter des jointures MERGE" +#: utils/fmgr/dfmgr.c:333 +#, c-format +msgid "Server has FUNC_MAX_ARGS = %d, library has %d." +msgstr "Le serveur a FUNC_MAX_ARGS = %d, la biblioth�que a %d." -#: catalog/pg_operator.c:406 -msgid "only boolean operators can hash" -msgstr "seuls les op�rateurs bool�ens peuvent hacher" +#: utils/fmgr/dfmgr.c:342 +#, c-format +msgid "Server has INDEX_MAX_KEYS = %d, library has %d." +msgstr "Le serveur a INDEX_MAX_KEYS = %d, la biblioth�que a %d." -#: catalog/pg_operator.c:418 +#: utils/fmgr/dfmgr.c:351 #, c-format -msgid "operator %s already exists" -msgstr "l'op�rateur %s existe d�j�" +msgid "Server has NAMEDATALEN = %d, library has %d." +msgstr "Le serveur a NAMEDATALEN = %d, la biblioth�que a %d." -#: catalog/pg_operator.c:607 -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" +#: utils/fmgr/dfmgr.c:360 +#, c-format +msgid "Server has FLOAT4PASSBYVAL = %s, library has %s." +msgstr "Le serveur a FLOAT4PASSBYVAL = %s, la biblioth�que a %s." -#: catalog/pg_proc.c:123 -#: parser/parse_func.c:1509 -#: parser/parse_func.c:1549 +#: utils/fmgr/dfmgr.c:369 #, c-format -msgid "functions cannot have more than %d argument" -msgid_plural "functions cannot have more than %d arguments" -msgstr[0] "les fonctions ne peuvent avoir plus de %d argument" -msgstr[1] "les fonctions ne peuvent avoir plus de %d arguments" +msgid "Server has FLOAT8PASSBYVAL = %s, library has %s." +msgstr "Le serveur a FLOAT8PASSBYVAL = %s, la biblioth�que a %s." -#: catalog/pg_proc.c:205 -msgid "A function returning a polymorphic type must have at least one polymorphic argument." +#: utils/fmgr/dfmgr.c:376 +msgid "Magic block has unexpected length or padding difference." msgstr "" -"Une fonction renvoyant un type polymorphique doit avoir au moins un argument\n" -"de type polymorphique." +"Le bloc magique a une longueur inattendue ou une diff�rence de padding." -#: catalog/pg_proc.c:223 +#: utils/fmgr/dfmgr.c:379 #, c-format -msgid "\"%s\" is already an attribute of type %s" -msgstr "� %s � est d�j� un attribut du type %s" +msgid "incompatible library \"%s\": magic block mismatch" +msgstr "biblioth�que � %s � incompatible : diff�rences dans le bloc magique" -#: catalog/pg_proc.c:362 +#: utils/fmgr/dfmgr.c:545 #, c-format -msgid "function \"%s\" already exists with same argument types" -msgstr "la fonction � %s � existe d�j� avec des types d'arguments identiques" - -#: catalog/pg_proc.c:376 -#: catalog/pg_proc.c:398 -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:377 -#: catalog/pg_proc.c:400 -#: catalog/pg_proc.c:442 -#: catalog/pg_proc.c:465 -#: catalog/pg_proc.c:491 -msgid "Use DROP FUNCTION first." -msgstr "Utilisez tout d'abord DROP FUNCTION." - -#: catalog/pg_proc.c:399 -msgid "Row type defined by OUT parameters is different." -msgstr "Le type de ligne d�fini par les param�tres OUT est diff�rent." +msgid "access to library \"%s\" is not allowed" +msgstr "l'acc�s � la biblioth�que � %s � n'est pas autoris�" -#: catalog/pg_proc.c:440 +#: utils/fmgr/dfmgr.c:572 #, c-format -msgid "cannot change name of input parameter \"%s\"" -msgstr "ne peut pas modifier le nom du param�tre en entr�e � %s �" +msgid "invalid macro name in dynamic library path: %s" +msgstr "nom de macro invalide dans le chemin des biblioth�ques partag�es : %s" -#: catalog/pg_proc.c:464 -msgid "cannot remove parameter defaults from existing function" +#: utils/fmgr/dfmgr.c:617 +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 +msgid "component in parameter \"dynamic_library_path\" is not an absolute path" msgstr "" -"ne peut pas supprimer les valeurs par d�faut des param�tres de la\n" -"fonction existante" +"Un composant du param�tre � dynamic_library_path � n'est pas un chemin absolu" -#: catalog/pg_proc.c:490 -msgid "cannot change data type of existing parameter default value" +#: utils/fmgr/funcapi.c:60 utils/mmgr/portalmem.c:985 commands/prepare.c:751 +#: commands/extension.c:1711 commands/extension.c:1820 +#: commands/extension.c:2013 foreign/foreign.c:350 executor/functions.c:785 +#: executor/execQual.c:1704 executor/execQual.c:1729 executor/execQual.c:2089 +#: executor/execQual.c:5242 replication/walsender.c:1421 +msgid "set-valued function called in context that cannot accept a set" msgstr "" -"ne peut pas modifier le type de donn�es d'un param�tre avec une valeur\n" -"par d�faut" +"la fonction avec set-value a �t� appel� dans un contexte qui n'accepte pas\n" +"un ensemble" -#: catalog/pg_proc.c:502 +#: utils/fmgr/funcapi.c:354 #, c-format -msgid "function \"%s\" is an aggregate function" -msgstr "la fonction � %s � est une fonction d'agr�gat" +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" -#: catalog/pg_proc.c:507 -#, c-format -msgid "function \"%s\" is not an aggregate function" -msgstr "la fonction � %s � n'est pas une fonction d'agr�gat" +#: utils/fmgr/funcapi.c:1208 utils/fmgr/funcapi.c:1239 +msgid "number of aliases does not match number of columns" +msgstr "le nombre d'alias ne correspond pas au nombre de colonnes" -#: catalog/pg_proc.c:515 -#, c-format -msgid "function \"%s\" is a window function" -msgstr "la fonction � %s � est une fonction window" +#: utils/fmgr/funcapi.c:1233 +msgid "no column alias was provided" +msgstr "aucun alias de colonne n'a �t� fourni" -#: catalog/pg_proc.c:520 -#, c-format -msgid "function \"%s\" is not a window function" -msgstr "la fonction � %s � n'est pas une fonction window" +#: utils/fmgr/funcapi.c:1257 +msgid "could not determine row description for function returning record" +msgstr "" +"n'a pas pu d�terminer la description de la ligne pour la fonction renvoyant\n" +"l'enregistrement" -#: catalog/pg_proc.c:688 +#: 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 "there is no built-in function named \"%s\"" -msgstr "il n'existe pas de fonction int�gr�e nomm�e � %s �" +msgid "unexpected encoding ID %d for ISO 8859 character sets" +msgstr "" +"identifiant d'encodage %d inattendu pour les jeux de caract�res ISO-8859" -#: catalog/pg_proc.c:780 +#: 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 "SQL functions cannot return type %s" -msgstr "les fonctions SQL ne peuvent pas renvoyer un type %s" +msgid "unexpected encoding ID %d for WIN character sets" +msgstr "identifiant d'encodage %d inattendu pour les jeux de caract�res WIN" -#: catalog/pg_proc.c:795 +#: utils/mb/conv.c:509 #, c-format -msgid "SQL functions cannot have arguments of type %s" -msgstr "les fonctions SQL ne peuvent avoir d'arguments du type %s" +msgid "invalid encoding number: %d" +msgstr "num�ro d'encodage invalide : %d" -#: catalog/pg_proc.c:861 -#: executor/functions.c:936 +#: utils/mb/encnames.c:485 +msgid "encoding name too long" +msgstr "nom d'encodage trop long" + +#: utils/mb/mbutils.c:281 #, c-format -msgid "SQL function \"%s\"" -msgstr "Fonction SQL � %s �" +msgid "conversion between %s and %s is not supported" +msgstr "la conversion entre %s et %s n'est pas support�e" -#: catalog/pg_shdepend.c:678 +#: utils/mb/mbutils.c:351 #, 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" -"et des objets dans %d autre base de donn�es (voir le journal applicatif du\n" -"serveur pour une liste)" -msgstr[1] "" -"\n" -"et des objets dans %d autres bases de donn�es (voir le journal applicatif du\n" -"serveur pour une liste)" +"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" -#: catalog/pg_shdepend.c:990 +#: utils/mb/mbutils.c:375 utils/mb/mbutils.c:676 #, c-format -msgid "role %u was concurrently dropped" -msgstr "le r�le %u a �t� supprim� simultan�ment" +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." -#: catalog/pg_shdepend.c:1009 +#: utils/mb/mbutils.c:462 #, c-format -msgid "tablespace %u was concurrently dropped" -msgstr "le tablespace %u a �t� supprim� simultan�ment" +msgid "invalid source encoding name \"%s\"" +msgstr "nom de l'encodage source � %s � invalide" -#: catalog/pg_shdepend.c:1024 +#: utils/mb/mbutils.c:467 #, c-format -msgid "database %u was concurrently dropped" -msgstr "la base de donn�es %u a �t� supprim� simultan�ment" +msgid "invalid destination encoding name \"%s\"" +msgstr "nom de l'encodage destination � %s � invalide" -#: catalog/pg_shdepend.c:1068 +#: utils/mb/mbutils.c:515 utils/adt/xml.c:159 #, c-format -msgid "owner of %s" -msgstr "propri�taire de %s" +msgid "invalid encoding name \"%s\"" +msgstr "nom d'encodage � %s � invalide" -#: catalog/pg_shdepend.c:1070 +#: utils/mb/mbutils.c:589 #, c-format -msgid "privileges for %s" -msgstr "droits pour � %s �" +msgid "invalid byte value for encoding \"%s\": 0x%02x" +msgstr "valeur d'octet invalide pour l'encodage � %s � : 0x%02x" -#. translator: %s will always be "database %s" -#: catalog/pg_shdepend.c:1078 +#: utils/mb/wchar.c:1777 #, 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" +msgid "invalid byte sequence for encoding \"%s\": 0x%s" +msgstr "s�quence d'octets invalide pour l'encodage � %s � : 0x%s" -#: catalog/pg_shdepend.c:1189 -#: catalog/pg_shdepend.c:1285 +#: utils/mb/wchar.c:1806 #, c-format -msgid "cannot drop objects owned by %s because they are required by the database system" -msgstr "" -"n'a pas pu supprimer les objets appartenant � %s car ils sont n�cessaires au\n" -"syst�me de bases de donn�es" +msgid "character 0x%s of encoding \"%s\" has no equivalent in \"%s\"" +msgstr "le caract�re 0x%s du codage � %s � n'a pas d'�quivalent dans � %s �" -#: catalog/pg_type.c:231 +#: utils/mmgr/aset.c:417 #, c-format -msgid "invalid type internal size %d" -msgstr "taille interne de type invalide %d" +msgid "Failed while creating memory context \"%s\"." +msgstr "�chec lors de la cr�ation du contexte m�moire � %s �." -#: catalog/pg_type.c:247 -#: catalog/pg_type.c:255 -#: catalog/pg_type.c:263 -#: catalog/pg_type.c:272 +#: utils/mmgr/aset.c:588 utils/mmgr/aset.c:766 utils/mmgr/aset.c:967 #, 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" +msgid "Failed on request of size %lu." +msgstr "�chec d'une requ�te de taille %lu." -#: catalog/pg_type.c:279 +#: utils/mmgr/portalmem.c:207 #, 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" +msgid "cursor \"%s\" already exists" +msgstr "le curseur � %s � existe d�j�" -#: catalog/pg_type.c:288 -#: catalog/pg_type.c:294 +#: utils/mmgr/portalmem.c:211 #, 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:302 -msgid "fixed-size types must have storage PLAIN" -msgstr "les types de taille fixe doivent avoir un stockage de base" +msgid "closing existing cursor \"%s\"" +msgstr "fermeture du curseur existant � %s �" -#: catalog/pg_type.c:730 +#: utils/mmgr/portalmem.c:478 #, 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" - -#: commands/view.c:139 -msgid "view must have at least one column" -msgstr "la vue doit avoir au moins une colonne" +msgid "cannot drop active portal \"%s\"" +msgstr "ne peut pas supprimer le portail actif � %s �" -#: commands/view.c:163 -#: commands/comment.c:580 -#: commands/tablecmds.c:206 -#: commands/tablecmds.c:2152 -#: commands/tablecmds.c:2373 -#: commands/tablecmds.c:7823 -#, c-format -msgid "\"%s\" is not a view" -msgstr "� %s � n'est pas une vue" +#: utils/mmgr/portalmem.c:668 +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" -#: commands/view.c:260 -#: commands/view.c:272 -msgid "cannot drop columns from view" -msgstr "ne peut pas supprimer les colonnes d'une vue" +#: utils/mmgr/portalmem.c:989 commands/prepare.c:755 commands/extension.c:1715 +#: commands/extension.c:1824 commands/extension.c:2017 foreign/foreign.c:355 +#: replication/walsender.c:1425 +msgid "materialize mode required, but it is not allowed in this context" +msgstr "mode mat�rialis� requis mais interdit dans ce contexte" -#: 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 �" +#: utils/adt/windowfuncs.c:243 +msgid "argument of ntile must be greater than zero" +msgstr "l'argument de ntile doit �tre sup�rieur � z�ro" -#: 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" - -#: commands/view.c:441 -msgid "CREATE VIEW specifies more column names than columns" -msgstr "CREATE VIEW sp�cifie plus de noms de colonnes que de colonnes" +#: utils/adt/windowfuncs.c:465 +msgid "argument of nth_value must be greater than zero" +msgstr "l'argument de nth_value doit �tre sup�rieur � z�ro" -#: commands/view.c:457 -#, c-format -msgid "view \"%s\" will be a temporary view" -msgstr "la vue � %s � sera une vue temporaire" +#: utils/adt/xml.c:138 +msgid "unsupported XML feature" +msgstr "fonctionnalit� XML non support�e" -#: commands/aggregatecmds.c:103 -#, c-format -msgid "aggregate attribute \"%s\" not recognized" -msgstr "l'attribut de l'agr�gat � %s � n'est pas reconnu" +#: utils/adt/xml.c:139 +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." -#: commands/aggregatecmds.c:113 -msgid "aggregate stype must be specified" -msgstr "le type source de l'agr�gat doit �tre sp�cifi�" +#: utils/adt/xml.c:140 +msgid "You need to rebuild PostgreSQL using --with-libxml." +msgstr "Vous devez recompiler PostgreSQL en utilisant --with-libxml." -#: commands/aggregatecmds.c:117 -msgid "aggregate sfunc must be specified" -msgstr "la fonction source de l'agr�gat doit �tre sp�cifi�e" +#: utils/adt/xml.c:405 utils/adt/xml.c:410 +msgid "invalid XML comment" +msgstr "commentaire XML invalide" -#: commands/aggregatecmds.c:134 -msgid "aggregate input type must be specified" -msgstr "le type de saisie de l'agr�gat doit �tre pr�cis�" +#: utils/adt/xml.c:539 +msgid "not an XML document" +msgstr "pas un document XML" -#: commands/aggregatecmds.c:159 -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" +#: utils/adt/xml.c:692 utils/adt/xml.c:715 +msgid "invalid XML processing instruction" +msgstr "instruction de traitement XML invalide" -#: commands/aggregatecmds.c:191 +#: utils/adt/xml.c:693 #, 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" +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 �." -#: commands/aggregatecmds.c:230 -#, c-format -msgid "aggregate %s(%s) does not exist, skipping" -msgstr "L'agr�gat %s(%s) n'existe pas, poursuite du traitement" +#: utils/adt/xml.c:716 +msgid "XML processing instruction cannot contain \"?>\"." +msgstr "l'instruction de traitement XML ne peut pas contenir � ?> �." -#: commands/aggregatecmds.c:292 -#: commands/functioncmds.c:1119 -#, c-format -msgid "function %s already exists in schema \"%s\"" -msgstr "la fonction %s existe d�j� dans le sch�ma � %s �" +#: utils/adt/xml.c:795 +msgid "xmlvalidate is not implemented" +msgstr "xmlvalidate n'est pas impl�ment�" -#: commands/analyze.c:166 -#, c-format -msgid "skipping \"%s\" --- only superuser can analyze it" -msgstr "ignore � %s � --- seul le super-utilisateur peut l'analyser" +#: utils/adt/xml.c:880 +msgid "could not initialize XML library" +msgstr "n'a pas pu initialiser la biblioth�que XML" -#: commands/analyze.c:170 +#: utils/adt/xml.c:881 #, c-format -msgid "skipping \"%s\" --- only superuser or database owner can analyze it" +msgid "" +"libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u." msgstr "" -"ignore � %s � --- seul le super-utilisateur ou le propri�taire de la base de\n" -"donn�es peut l'analyser" +"libxml2 a un type de caract�re incompatible : sizeof(char)=%u,\n" +"sizeof(xmlChar)=%u." -#: commands/analyze.c:174 -#, 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" +#: utils/adt/xml.c:1448 +msgid "Invalid character value." +msgstr "Valeur invalide pour le caract�re." -#: commands/analyze.c:190 -#, c-format -msgid "skipping \"%s\" --- cannot analyze indexes, views, or special system tables" -msgstr "ignore � %s � --- ne peut pas analyser les index, vues ou tables syst�me" +#: utils/adt/xml.c:1451 +msgid "Space required." +msgstr "Espace requis." -#: commands/analyze.c:283 -#, c-format -msgid "analyzing \"%s.%s\" inheritance tree" -msgstr "analyse l'arbre d'h�ritage � %s.%s �" +#: utils/adt/xml.c:1454 +msgid "standalone accepts only 'yes' or 'no'." +msgstr "la version autonome accepte seulement 'yes' et 'no'." -#: commands/analyze.c:288 -#, c-format -msgid "analyzing \"%s.%s\"" -msgstr "analyse � %s.%s �" +#: utils/adt/xml.c:1457 +msgid "Malformed declaration: missing version." +msgstr "D�claration mal form�e : version manquante." -#: commands/analyze.c:609 -#, 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" +#: utils/adt/xml.c:1460 +msgid "Missing encoding in text declaration." +msgstr "Encodage manquant dans la d�claration du texte." + +#: utils/adt/xml.c:1463 +msgid "Parsing XML declaration: '?>' expected." +msgstr "Analyse de la d�claration XML : � ?> � attendu." -#: commands/analyze.c:1249 +#: utils/adt/xml.c:1466 #, c-format -msgid "\"%s\": scanned %d of %u pages, containing %.0f live rows and %.0f dead rows; %d rows in sample, %.0f estimated total rows" -msgstr "" -"� %s � : %d pages parcourues sur %u,\n" -" contenant %.0f lignes � conserver et %.0f lignes � supprimer,\n" -" %d lignes dans l'�chantillon,\n" -" %.0f lignes totales estim�es" +msgid "Unrecognized libxml error code: %d." +msgstr "code d'erreur libxml inconnu : %d" -#: commands/analyze.c:1510 -#: executor/execQual.c:2735 -msgid "could not convert row type" -msgstr "n'a pas pu convertir le type de ligne" +#: utils/adt/xml.c:1717 utils/adt/date.c:217 +msgid "date out of range" +msgstr "date en dehors des limites" -#: commands/async.c:567 -msgid "channel name cannot be empty" -msgstr "le nom du canal ne peut pas �tre vide" +#: utils/adt/xml.c:1718 +msgid "XML does not support infinite date values." +msgstr "XML ne supporte pas les valeurs infinies de date." -#: commands/async.c:572 -msgid "channel name too long" -msgstr "nom du canal trop long" +#: utils/adt/xml.c:1740 utils/adt/xml.c:1747 utils/adt/xml.c:1767 +#: utils/adt/xml.c:1774 utils/adt/timestamp.c:226 utils/adt/timestamp.c:269 +#: utils/adt/timestamp.c:491 utils/adt/timestamp.c:531 +#: utils/adt/timestamp.c:2531 utils/adt/timestamp.c:2552 +#: utils/adt/timestamp.c:2565 utils/adt/timestamp.c:2574 +#: utils/adt/timestamp.c:2632 utils/adt/timestamp.c:2655 +#: utils/adt/timestamp.c:2668 utils/adt/timestamp.c:2679 +#: utils/adt/timestamp.c:3115 utils/adt/timestamp.c:3245 +#: utils/adt/timestamp.c:3286 utils/adt/timestamp.c:3374 +#: utils/adt/timestamp.c:3421 utils/adt/timestamp.c:3532 +#: utils/adt/timestamp.c:3845 utils/adt/timestamp.c:3982 +#: utils/adt/timestamp.c:3989 utils/adt/timestamp.c:4003 +#: utils/adt/timestamp.c:4013 utils/adt/timestamp.c:4076 +#: utils/adt/timestamp.c:4216 utils/adt/timestamp.c:4226 +#: utils/adt/timestamp.c:4441 utils/adt/timestamp.c:4520 +#: utils/adt/timestamp.c:4527 utils/adt/timestamp.c:4554 +#: utils/adt/timestamp.c:4558 utils/adt/timestamp.c:4615 +#: utils/adt/formatting.c:3247 utils/adt/formatting.c:3279 +#: utils/adt/formatting.c:3347 utils/adt/date.c:913 utils/adt/date.c:960 +#: utils/adt/date.c:1516 utils/adt/date.c:1553 utils/adt/date.c:2426 +#: utils/adt/nabstime.c:480 utils/adt/nabstime.c:523 utils/adt/nabstime.c:553 +#: utils/adt/nabstime.c:596 +msgid "timestamp out of range" +msgstr "timestamp en dehors des limites" -#: commands/async.c:579 -msgid "payload string too long" -msgstr "cha�ne de charge trop longue" +#: utils/adt/xml.c:1741 utils/adt/xml.c:1768 +msgid "XML does not support infinite timestamp values." +msgstr "XML ne supporte pas les valeurs infinies de timestamp." + +#: utils/adt/xml.c:2074 utils/adt/xml.c:2238 commands/portalcmds.c:168 +#: commands/portalcmds.c:222 executor/execCurrent.c:66 +#, c-format +msgid "cursor \"%s\" does not exist" +msgstr "le curseur � %s � n'existe pas" + +#: utils/adt/xml.c:2153 +msgid "invalid query" +msgstr "requ�te invalide" + +#: utils/adt/xml.c:3377 +msgid "invalid array for XML namespace mapping" +msgstr "tableau invalide pour la correspondance de l'espace de nom XML" -#: commands/async.c:763 -msgid "cannot PREPARE a transaction that has executed LISTEN, UNLISTEN or NOTIFY" +#: utils/adt/xml.c:3378 +msgid "" +"The array must be two-dimensional with length of the second axis equal to 2." msgstr "" -"ne peut pas ex�cuter PREPARE sur une transaction qui a ex�cut� LISTEN,\n" -"UNLISTEN ou NOTIFY" +"Le tableau doit avoir deux dimensions avec une longueur de 2 pour le\n" +"deuxi�me axe." -#: commands/async.c:868 -msgid "too many notifications in the NOTIFY queue" -msgstr "trop de notifications dans la queue NOTIFY" +#: utils/adt/xml.c:3402 +msgid "empty XPath expression" +msgstr "expression XPath vide" -#: commands/async.c:1421 -#, c-format -msgid "NOTIFY queue is %.0f%% full" -msgstr "la queue NOTIFY est pleine � %.0f%%" +#: utils/adt/xml.c:3450 +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" -#: commands/async.c:1423 +#: utils/adt/xml.c:3457 #, 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." - -#: commands/async.c:1426 -msgid "The NOTIFY queue cannot be emptied until that process ends its current transaction." +msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" msgstr "" -"La queue NOTIFY ne peut pas �tre vid�e jusqu'� ce que le processus finisse\n" -"sa transaction en cours." +"n'a pas pu enregistrer l'espace de noms XML de nom � %s � et d'URI � %s �" -#: commands/cluster.c:126 -#: commands/cluster.c:364 -msgid "cannot cluster temporary tables of other sessions" -msgstr "ne peut pas ex�cuter CLUSTER sur les tables temporaires des autres sessions" +#: utils/adt/regexp.c:204 tsearch/spell.c:439 +#, c-format +msgid "invalid regular expression: %s" +msgstr "expression rationnelle invalide : %s" -#: commands/cluster.c:156 +#: utils/adt/regexp.c:285 utils/adt/regexp.c:1234 utils/adt/varlena.c:2861 #, c-format -msgid "there is no previously clustered index for table \"%s\"" -msgstr "Il n'existe pas d'index CLUSTER pour la table � %s �" +msgid "regular expression failed: %s" +msgstr "l'expression rationnelle a �chou� : %s" -#: commands/cluster.c:170 -#: commands/tablecmds.c:6773 +#: utils/adt/regexp.c:422 #, c-format -msgid "index \"%s\" for table \"%s\" does not exist" -msgstr "l'index � %s � pour la table � %s � n'existe pas" +msgid "invalid regexp option: \"%c\"" +msgstr "option invalide de l'expression rationnelle : � %c �" -#: commands/cluster.c:353 -msgid "cannot cluster a shared catalog" -msgstr "ne peut pas ex�cuter CLUSTER sur un catalogue partag�" +#: utils/adt/regexp.c:694 utils/adt/like_match.c:289 +msgid "invalid escape string" +msgstr "cha�ne d'�chappement invalide" -#: commands/cluster.c:368 -msgid "cannot vacuum temporary tables of other sessions" -msgstr "ne peut pas ex�cuter VACUUM sur les tables temporaires des autres sessions" +#: utils/adt/regexp.c:695 utils/adt/like_match.c:290 +msgid "Escape string must be empty or one character." +msgstr "La cha�ne d'�chappement doit �tre vide ou ne contenir qu'un caract�re." -#: commands/cluster.c:384 -#, c-format -msgid "clustering \"%s.%s\"" -msgstr "ex�cution de CLUSTER sur � %s.%s �" +#: utils/adt/regexp.c:894 +msgid "regexp_split does not support the global option" +msgstr "regexp_split ne supporte pas l'option globale" -#: commands/cluster.c:389 -#: commands/vacuumlazy.c:320 -#, c-format -msgid "vacuuming \"%s.%s\"" -msgstr "ex�cution du VACUUM sur � %s.%s �" +#: utils/adt/datum.c:80 utils/adt/datum.c:92 +msgid "invalid Datum pointer" +msgstr "pointeur Datum invalide" -#: commands/cluster.c:421 -#, c-format -msgid "\"%s\" is not an index for table \"%s\"" -msgstr "� %s � n'est pas un index de la table � %s �" +#: utils/adt/array_userfuncs.c:48 +msgid "could not determine input data types" +msgstr "n'a pas pu d�terminer les types de donn�es en entr�e" + +#: utils/adt/array_userfuncs.c:82 +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/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/varlena.c:950 +#: utils/adt/varlena.c:1968 utils/adt/int8.c:1247 utils/adt/float.c:1157 +#: utils/adt/float.c:1216 utils/adt/float.c:2767 utils/adt/float.c:2783 +#: utils/adt/varbit.c:1139 utils/adt/varbit.c:1531 utils/adt/arrayfuncs.c:1276 +#: utils/adt/numeric.c:2253 utils/adt/numeric.c:2262 +msgid "integer out of range" +msgstr "entier en dehors des limites" + +#: utils/adt/array_userfuncs.c:121 +msgid "argument must be empty or one-dimensional array" +msgstr "l'argument doit �tre vide ou doit �tre un tableau � une dimension" -#: commands/cluster.c:429 +#: 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 "ne peut pas concat�ner des tableaux non compatibles" + +#: utils/adt/array_userfuncs.c:225 #, c-format -msgid "cannot cluster on index \"%s\" because access method does not support clustering" +msgid "" +"Arrays with element types %s and %s are not compatible for concatenation." 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" +"Les tableaux avec les types d'�l�ment %s et %s ne sont pas compatibles\n" +"pour la concat�nation." -#: commands/cluster.c:441 +#: utils/adt/array_userfuncs.c:264 #, c-format -msgid "cannot cluster on partial index \"%s\"" -msgstr "ne peut pas ex�cuter CLUSTER sur l'index partiel � %s �" +msgid "Arrays of %d and %d dimensions are not compatible for concatenation." +msgstr "" +"Les tableaux de dimensions %d et %d ne sont pas compatiblee pour la\n" +"concat�nation." -#: commands/cluster.c:461 -#, c-format -msgid "cannot cluster on index \"%s\" because access method does not handle null values" +#: utils/adt/array_userfuncs.c:301 +msgid "" +"Arrays with differing element dimensions are not compatible for " +"concatenation." msgstr "" -"ne peut pas cr�er un cluster sur l'index � %s � car la m�thode d'acc�s de\n" -"l'index ne g�re pas les valeurs NULL" +"Les tableaux de dimensions diff�rentes ne sont pas compatibles pour\n" +"une concat�nation." -#: commands/cluster.c:464 -#, c-format -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." +#: utils/adt/array_userfuncs.c:330 utils/adt/array_userfuncs.c:358 +msgid "Arrays with differing dimensions are not compatible for concatenation." msgstr "" -"Vous pourriez contourner ceci en marquant la colonne � %s � avec la\n" -"contrainte NOT NULL ou en utilisant ALTER TABLE ... SET WITHOUT CLUSTER pour\n" -"supprimer la sp�cification CLUSTER de la table." +"Les tableaux de dimensions diff�rentes ne sont pas compatibles pour\n" +"une concat�nation." -#: commands/cluster.c:466 +#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1238 +#: utils/adt/arrayfuncs.c:2911 utils/adt/arrayfuncs.c:4936 #, c-format -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 "invalid number of dimensions: %d" +msgstr "nombre de dimensions invalides : %d" -#: commands/cluster.c:477 +#: 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:4940 +#: executor/execQual.c:303 executor/execQual.c:331 executor/execQual.c:3101 #, c-format -msgid "cannot cluster on expressional index \"%s\" because its index access method does not handle null values" +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "" -"ne peut pas ex�cuter CLUSTER sur l'index � expression � %s � car sa m�thode\n" -"d'acc�s ne g�re pas les valeurs NULL" +"le nombre de dimensions du tableau (%d) d�passe le maximum autoris� (%d)" -#: commands/cluster.c:492 -#, c-format -msgid "cannot cluster on invalid index \"%s\"" -msgstr "ne peut pas ex�cuter la commande CLUSTER sur l'index invalide � %s �" +#: utils/adt/array_userfuncs.c:487 +msgid "could not determine input data type" +msgstr "n'a pas pu d�terminer le type de donn�es date en entr�e" -#: commands/comment.c:642 -#, c-format -msgid "\"%s\" is not a table, view, or composite type" -msgstr "� %s � n'est pas une table, une vue ou un type composite" +#: utils/adt/int.c:162 +msgid "int2vector has too many elements" +msgstr "int2vector a trop d'�l�ments" -#: commands/comment.c:681 -msgid "database name cannot be qualified" -msgstr "le nom de la base de donn�e ne peut �tre qualifi�" +#: utils/adt/int.c:237 +msgid "invalid int2vector data" +msgstr "donn�es int2vector invalide" -#: commands/comment.c:729 -msgid "tablespace name cannot be qualified" -msgstr "le nom du tablespace ne peut pas �tre qualifi�" +#: utils/adt/int.c:243 utils/adt/oid.c:212 utils/adt/oid.c:293 +msgid "oidvector has too many elements" +msgstr "oidvector a trop d'�l�ments" -#: commands/comment.c:766 -msgid "role name cannot be qualified" -msgstr "le nom du r�le ne peut pas �tre qualifi�" +#: 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/float.c:1175 +#: utils/adt/float.c:1233 utils/adt/numeric.c:2354 utils/adt/numeric.c:2365 +msgid "smallint out of range" +msgstr "smallint en dehors des limites" -#: commands/comment.c:775 -#, c-format -msgid "must be member of role \"%s\" to comment upon it" -msgstr "doit �tre un membre du r�le � %s � pour le commenter" +#: 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/timestamp.c:2877 utils/adt/geo_ops.c:4148 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/float.c:820 +#: utils/adt/float.c:884 utils/adt/float.c:2526 utils/adt/float.c:2589 +#: utils/adt/cash.c:507 utils/adt/cash.c:557 utils/adt/cash.c:608 +#: utils/adt/cash.c:657 utils/adt/cash.c:709 utils/adt/cash.c:759 +#: utils/adt/numeric.c:4507 utils/adt/numeric.c:4790 +msgid "division by zero" +msgstr "division par z�ro" -#: commands/comment.c:799 -#: commands/schemacmds.c:178 -msgid "schema name cannot be qualified" -msgstr "le nom du sch�ma ne peut pas �tre qualifi�" +#: utils/adt/int.c:1362 utils/adt/timestamp.c:4713 utils/adt/timestamp.c:4794 +#: utils/adt/int8.c:1409 +msgid "step size cannot equal zero" +msgstr "la taille du pas ne peut pas valoir z�ro" -#: commands/comment.c:874 -#, c-format -msgid "rule \"%s\" does not exist" -msgstr "la r�gle � %s � n'existe pas" +#: utils/adt/tsgistidx.c:100 +msgid "gtsvector_in not implemented" +msgstr "gtsvector_in n'est pas encore impl�ment�" -#: commands/comment.c:882 +#: utils/adt/bool.c:153 #, c-format -msgid "there are multiple rules named \"%s\"" -msgstr "il existe de nombreuses r�gles nomm�es � %s �" - -#: commands/comment.c:883 -msgid "Specify a relation name as well as a rule name." -msgstr "Sp�cifier un nom de relation ainsi qu'un nom de r�gle." - -#: commands/comment.c:910 -#: rewrite/rewriteDefine.c:687 -#: rewrite/rewriteDefine.c:749 -#: rewrite/rewriteRemove.c:62 -#, c-format -msgid "rule \"%s\" for relation \"%s\" does not exist" -msgstr "la r�gle � %s � de la relation � %s � n'existe pas" - -#: commands/comment.c:1105 -#: commands/trigger.c:994 -#: commands/trigger.c:1194 -#: commands/trigger.c:1305 -#, c-format -msgid "trigger \"%s\" for table \"%s\" does not exist" -msgstr "le trigger � %s � de la table � %s � n'existe pas" +msgid "invalid input syntax for type boolean: \"%s\"" +msgstr "syntaxe en entr�e invalide pour le type bool�en : � %s �" -#: commands/comment.c:1183 -#: commands/conversioncmds.c:153 -#: commands/conversioncmds.c:209 -#: commands/conversioncmds.c:262 +#: utils/adt/arrayutils.c:93 utils/adt/arrayutils.c:102 +#: utils/adt/arrayutils.c:109 utils/adt/arrayfuncs.c:871 +#: utils/adt/arrayfuncs.c:1473 utils/adt/arrayfuncs.c:2795 +#: utils/adt/arrayfuncs.c:2943 utils/adt/arrayfuncs.c:5036 #, c-format -msgid "conversion \"%s\" does not exist" -msgstr "la conversion � %s � n'existe pas" +msgid "array size exceeds the maximum allowed (%d)" +msgstr "la taille du tableau d�passe le maximum permis (%d)" -#: commands/comment.c:1213 -msgid "language name cannot be qualified" -msgstr "le nom du langage ne peut pas �tre qualifi�" +#: utils/adt/arrayutils.c:209 +msgid "typmod array must be type cstring[]" +msgstr "le tableau typmod doit �tre de type cstring[]" -#: commands/comment.c:1226 -msgid "must be superuser to comment on procedural language" -msgstr "" -"doit �tre super-utilisateur pour ajouter un commentaire sur un langage de\n" -"proc�dures" - -#: commands/comment.c:1261 -#: commands/comment.c:1342 -#: commands/indexcmds.c:295 -#: commands/opclasscmds.c:281 -#: commands/opclasscmds.c:669 -#: commands/opclasscmds.c:769 -#: commands/opclasscmds.c:1495 -#: commands/opclasscmds.c:1556 -#: commands/opclasscmds.c:1718 -#: commands/opclasscmds.c:1812 -#: commands/opclasscmds.c:1903 -#: commands/opclasscmds.c:2046 -#, c-format -msgid "access method \"%s\" does not exist" -msgstr "la m�thode d'acc�s � %s � n'existe pas" +#: utils/adt/arrayutils.c:214 +msgid "typmod array must be one-dimensional" +msgstr "le tableau typmod doit avoir une seule dimension" -#: commands/comment.c:1289 -#: commands/comment.c:1297 -#: commands/indexcmds.c:1149 -#: commands/indexcmds.c:1157 -#: commands/opclasscmds.c:1507 -#: commands/opclasscmds.c:1511 -#: commands/opclasscmds.c:1739 -#: commands/opclasscmds.c:1750 -#: commands/opclasscmds.c:1926 -#: commands/opclasscmds.c:1937 -#, c-format -msgid "operator class \"%s\" does not exist for access method \"%s\"" -msgstr "la classe d'op�rateur � %s � n'existe pas pour la m�thode d'acc�s � %s �" - -#: commands/comment.c:1370 -#: commands/comment.c:1378 -#: commands/opclasscmds.c:343 -#: commands/opclasscmds.c:789 -#: commands/opclasscmds.c:1568 -#: commands/opclasscmds.c:1572 -#: commands/opclasscmds.c:1833 -#: commands/opclasscmds.c:1844 -#: commands/opclasscmds.c:2069 -#: commands/opclasscmds.c:2080 -#, 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 �" +#: utils/adt/arrayutils.c:219 +msgid "typmod array must not contain nulls" +msgstr "le tableau typmod ne doit pas contenir de valeurs NULL" -#: commands/comment.c:1469 -#: commands/functioncmds.c:1777 -#, 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" +#: utils/adt/trigfuncs.c:41 +msgid "suppress_redundant_updates_trigger: must be called as trigger" +msgstr "suppress_redundant_updates_trigger : doit �tre appel� par un trigger" -#: commands/comment.c:1481 -#: commands/functioncmds.c:1522 -#: commands/functioncmds.c:1794 -#, 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" +#: utils/adt/trigfuncs.c:47 +msgid "suppress_redundant_updates_trigger: must be called on update" +msgstr "" +"suppress_redundant_updates_trigger : doit �tre appel� sur une mise � jour" -#: commands/comment.c:1501 -msgid "must be superuser to comment on text search parser" +#: utils/adt/trigfuncs.c:53 +msgid "suppress_redundant_updates_trigger: must be called before update" msgstr "" -"doit �tre super-utilisateur pour ajouter un commentaire sur l'analyseur de\n" -"recherche plein texte" +"suppress_redundant_updates_trigger : doit �tre appel� avant une mise � jour" -#: commands/comment.c:1530 -msgid "must be superuser to comment on text search template" +#: utils/adt/trigfuncs.c:59 +msgid "suppress_redundant_updates_trigger: must be called for each row" msgstr "" -"doit �tre super-utilisateur pour ajouter un commentaire sur un mod�le de\n" -"recherche plein texte" +"suppress_redundant_updates_trigger : doit �tre appel� pour chaque ligne" -#: commands/constraint.c:59 -#: utils/adt/ri_triggers.c:2999 -#, 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" +#: utils/adt/timestamp.c:92 utils/adt/varchar.c:43 utils/adt/date.c:66 +#: utils/adt/varbit.c:51 +msgid "invalid type modifier" +msgstr "modifieur de type invalide" -#: commands/constraint.c:66 -#: utils/adt/ri_triggers.c:3008 +#: utils/adt/timestamp.c:97 #, c-format -msgid "function \"%s\" must be fired AFTER ROW" -msgstr "la fonction � %s � doit �tre ex�cut�e pour l'instruction AFTER ROW" +msgid "TIMESTAMP(%d)%s precision must not be negative" +msgstr "la pr�cision de TIMESTAMP(%d)%s ne doit pas �tre n�gative" -#: commands/constraint.c:80 -#: utils/adt/ri_triggers.c:3029 +#: utils/adt/timestamp.c:103 #, 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" +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" -#: commands/conversioncmds.c:69 +#: utils/adt/timestamp.c:171 utils/adt/timestamp.c:435 #, c-format -msgid "source encoding \"%s\" does not exist" -msgstr "le codage source � %s � n'existe pas" +msgid "timestamp out of range: \"%s\"" +msgstr "timestamp en dehors de limites : � %s �" -#: commands/conversioncmds.c:76 +#: utils/adt/timestamp.c:189 utils/adt/timestamp.c:453 +#: utils/adt/timestamp.c:664 #, c-format -msgid "destination encoding \"%s\" does not exist" -msgstr "l'encodage de destination � %s � n'existe pas" +msgid "date/time value \"%s\" is no longer supported" +msgstr "la valeur date/time � %s � n'est plus support�e" -#: commands/conversioncmds.c:90 -#, c-format -msgid "encoding conversion function %s must return type \"void\"" -msgstr "la fonction de conversion d'encodage %s doit renvoyer le type � void �" +#: utils/adt/timestamp.c:260 +msgid "timestamp cannot be NaN" +msgstr "timestamp ne peut pas valoir NaN" -#: commands/conversioncmds.c:159 +#: utils/adt/timestamp.c:370 #, c-format -msgid "conversion \"%s\" does not exist, skipping" -msgstr "la conversion � %s � n'existe pas, poursuite du traitement" +msgid "timestamp(%d) precision must be between %d and %d" +msgstr "la pr�cision de timestamp(%d) doit �tre comprise entre %d et %d" -#: commands/conversioncmds.c:224 -#, c-format -msgid "conversion \"%s\" already exists in schema \"%s\"" -msgstr "la conversion � %s � existe d�j� dans le sch�ma � %s �" +#: utils/adt/timestamp.c:658 utils/adt/timestamp.c:3110 +#: utils/adt/timestamp.c:3240 utils/adt/timestamp.c:3625 +msgid "interval out of range" +msgstr "intervalle en dehors des limites" -#: commands/copy.c:312 -#: commands/copy.c:324 -#: commands/copy.c:358 -#: commands/copy.c:368 -msgid "COPY BINARY is not supported to stdout or from stdin" -msgstr "COPY BINARY n'est pas support� vers stdout ou � partir de stdin" +#: utils/adt/timestamp.c:787 utils/adt/timestamp.c:820 +msgid "invalid INTERVAL type modifier" +msgstr "modificateur de type INTERVAL invalide" -#: commands/copy.c:446 +#: utils/adt/timestamp.c:803 #, c-format -msgid "could not write to COPY file: %m" -msgstr "n'a pas pu �crire dans le fichier COPY : %m" +msgid "INTERVAL(%d) precision must not be negative" +msgstr "la pr�cision de l'intervalle INTERVAL(%d) ne doit pas �tre n�gative" -#: commands/copy.c:458 -msgid "connection lost during COPY to stdout" -msgstr "connexion perdue lors de l'op�ration COPY vers stdout" +#: utils/adt/timestamp.c:809 +#, 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" -#: commands/copy.c:499 +#: utils/adt/timestamp.c:1101 #, c-format -msgid "could not read from COPY file: %m" -msgstr "n'a pas pu lire le fichier COPY : %m" +msgid "interval(%d) precision must be between %d and %d" +msgstr "La pr�cision de interval(%d) doit �tre comprise entre %d et %d" -#: commands/copy.c:515 -#: commands/copy.c:534 -#: commands/copy.c:538 -#: tcop/fastpath.c:291 -#: tcop/postgres.c:348 -#: tcop/postgres.c:371 -msgid "unexpected EOF on client connection" -msgstr "fin de fichier (EOF) inattendue de la connexion du client" +#: utils/adt/timestamp.c:2307 +msgid "cannot subtract infinite timestamps" +msgstr "ne peut pas soustraire les valeurs timestamps infinies" -#: commands/copy.c:550 +#: utils/adt/timestamp.c:3366 utils/adt/timestamp.c:3962 +#: utils/adt/timestamp.c:4021 #, c-format -msgid "COPY from stdin failed: %s" -msgstr "�chec de la commande COPY � partir de stdin : %s" +msgid "timestamp units \"%s\" not supported" +msgstr "les unit�s timestamp � %s � ne sont pas support�es" -#: commands/copy.c:566 +#: utils/adt/timestamp.c:3380 utils/adt/timestamp.c:4031 #, 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" +msgid "timestamp units \"%s\" not recognized" +msgstr "les unit� � %s � ne sont pas reconnues pour le type timestamp" -#: commands/copy.c:762 +#: utils/adt/timestamp.c:3521 utils/adt/timestamp.c:4193 +#: utils/adt/timestamp.c:4234 #, c-format -msgid "COPY format \"%s\" not recognized" -msgstr "format COPY � %s � non reconnu" +msgid "timestamp with time zone units \"%s\" not supported" +msgstr "" +"les unit�s � %s � ne sont pas support�es pour le type � timestamp with " +"time\n" +"zone �" -#: commands/copy.c:825 -#: commands/copy.c:839 +#: utils/adt/timestamp.c:3538 utils/adt/timestamp.c:4243 #, 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" +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 �" -#: commands/copy.c:845 +#: utils/adt/timestamp.c:3618 utils/adt/timestamp.c:4349 #, c-format -msgid "option \"%s\" not recognized" -msgstr "option � %s � non reconnu" +msgid "interval units \"%s\" not supported" +msgstr "Les unit�s � %s � ne sont pas support�es pour le type interval" -#: commands/copy.c:856 -msgid "cannot specify DELIMITER in BINARY mode" -msgstr "ne peut pas sp�cifier le d�limiteur (DELIMITER) en mode binaire (BINARY)" +#: utils/adt/timestamp.c:3634 utils/adt/timestamp.c:4376 +#, c-format +msgid "interval units \"%s\" not recognized" +msgstr "Les unit�s � %s � ne sont pas reconnues pour le type interval" -#: commands/copy.c:861 -msgid "cannot specify NULL in BINARY mode" -msgstr "ne peut pas sp�cifier NULL en mode binaire (BINARY)" +#: utils/adt/timestamp.c:4446 utils/adt/timestamp.c:4619 +#, c-format +msgid "could not convert to time zone \"%s\"" +msgstr "n'a pas pu convertir vers le fuseau horaire � %s �" -#: commands/copy.c:883 -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" +#: utils/adt/timestamp.c:4453 utils/adt/timestamp.c:4626 utils/adt/date.c:2631 +#: utils/adt/datetime.c:928 utils/adt/datetime.c:1657 +#, c-format +msgid "time zone \"%s\" not recognized" +msgstr "le fuseau horaire � %s � n'est pas reconnu" -#: commands/copy.c:890 -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" +#: utils/adt/timestamp.c:4478 utils/adt/timestamp.c:4652 +#, c-format +msgid "interval time zone \"%s\" must not specify month" +msgstr "l'intervalle de fuseau horaire � %s � ne doit pas sp�cifier le mois" -#: commands/copy.c:896 -msgid "COPY null representation cannot use newline or carriage return" +#: utils/adt/selfuncs.c:4949 +msgid "case insensitive matching not supported on type bytea" msgstr "" -"la repr�sentation du NULL dans COPY ne peut pas utiliser le caract�re du\n" -"retour � la ligne ou du retour chariot" +"la recherche insensible � la casse n'est pas support�e avec le type bytea" -#: commands/copy.c:913 -#, c-format -msgid "COPY delimiter cannot be \"%s\"" -msgstr "le d�limiteur de COPY ne peut pas �tre � %s �" +#: utils/adt/selfuncs.c:4964 utils/adt/like.c:211 +msgid "could not determine which collation to use for ILIKE" +msgstr "n'a pas pu d�terminer le collationnement � utiliser pour ILIKE" -#: commands/copy.c:919 -msgid "COPY HEADER available only in CSV mode" -msgstr "COPY HEADER disponible uniquement en mode CSV" +#: utils/adt/selfuncs.c:4965 utils/adt/varlena.c:1315 +#: utils/adt/formatting.c:1515 utils/adt/formatting.c:1565 +#: utils/adt/formatting.c:1631 utils/adt/formatting.c:1681 +#: utils/adt/formatting.c:1748 utils/adt/formatting.c:1810 +#: utils/adt/like.c:212 commands/indexcmds.c:908 commands/view.c:145 +#: regex/regc_pg_locale.c:259 catalog/heap.c:560 +msgid "Use the COLLATE clause to set the collation explicitly." +msgstr "" +"Utilisez la clause COLLARE pour configurer explicitement le collationnement." -#: commands/copy.c:925 -msgid "COPY quote available only in CSV mode" -msgstr "le guillemet COPY n'est disponible que dans le mode CSV" +#: utils/adt/selfuncs.c:5052 +msgid "regular-expression matching not supported on type bytea" +msgstr "" +"la recherche par expression rationnelle n'est pas support�e sur le type bytea" -#: commands/copy.c:930 -msgid "COPY quote must be a single one-byte character" -msgstr "le guillemet COPY doit �tre sur un seul caract�re sur un octet" +#: utils/adt/varlena.c:246 utils/adt/varlena.c:287 utils/adt/encode.c:441 +#: utils/adt/encode.c:506 +msgid "invalid input syntax for type bytea" +msgstr "syntaxe en entr�e invalide pour le type bytea" -#: commands/copy.c:935 -msgid "COPY delimiter and quote must be different" -msgstr "le d�limiteur de COPY ne doit pas �tre un guillemet" +#: 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 utils/adt/varbit.c:1032 +#: utils/adt/varbit.c:1134 +msgid "negative substring length not allowed" +msgstr "longueur de sous-cha�ne n�gative non autoris�e" -#: commands/copy.c:941 -msgid "COPY escape available only in CSV mode" -msgstr "le caract�re d'�chappement COPY n'est disponible que dans le mode CSV" +#: utils/adt/varlena.c:1314 +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" -#: commands/copy.c:946 -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" +#: utils/adt/varlena.c:1358 utils/adt/varlena.c:1371 +#, c-format +msgid "could not convert string to UTF-16: error %lu" +msgstr "n'a pas pu convertir la cha�ne en UTF16 : erreur %lu" -#: commands/copy.c:952 -msgid "COPY force quote available only in CSV mode" -msgstr "le guillemet forc� COPY n'est disponible que dans le mode CSV" +#: utils/adt/varlena.c:1386 +#, c-format +msgid "could not compare Unicode strings: %m" +msgstr "n'a pas pu comparer les cha�nes unicode : %m" -#: commands/copy.c:956 -msgid "COPY force quote only available using COPY TO" -msgstr "le guillemet forc� COPY n'est disponible qu'en utilisant COPY TO" +#: 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 "index %d en dehors des limites valides, 0..%d" -#: commands/copy.c:962 -msgid "COPY force not null available only in CSV mode" -msgstr "� COPY force not null � n'est disponible que dans la version CSV" +#: utils/adt/varlena.c:2163 utils/adt/varbit.c:1768 +msgid "new bit must be 0 or 1" +msgstr "le nouveau bit doit valoir soit 0 soit 1" -#: commands/copy.c:966 -msgid "COPY force not null only available using COPY FROM" -msgstr "� COPY force not null � n'est disponible qu'en utilisant COPY FROM" +#: utils/adt/varlena.c:2245 utils/adt/varlena.c:2250 utils/adt/regproc.c:1320 +#: utils/adt/regproc.c:1325 +msgid "invalid name syntax" +msgstr "syntaxe du nom invalide" -#: commands/copy.c:972 -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" +#: utils/adt/varlena.c:2957 +msgid "field position must be greater than zero" +msgstr "la position du champ doit �tre plus grand que z�ro" -#: commands/copy.c:979 -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" +#: utils/adt/varlena.c:3826 utils/adt/varlena.c:3887 +msgid "unterminated conversion specifier" +msgstr "sp�cificateur de conversion non termin�" -#: commands/copy.c:985 -msgid "must be superuser to COPY to or from a file" -msgstr "doit �tre super-utilisateur pour utiliser COPY � partir ou vers un fichier" +#: utils/adt/varlena.c:3850 utils/adt/varlena.c:3866 +msgid "argument number is out of range" +msgstr "le nombre en argument est en dehors des limites" -#: commands/copy.c:986 -msgid "Anyone can COPY to stdout or from stdin. psql's \\copy command also works for anyone." +#: utils/adt/varlena.c:3893 +msgid "conversion specifies argument 0, but arguments are numbered from 1" 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." +"la conversion sp�cifie l'argument 0 mais les arguments doivent �tre " +"num�rot�s\n" +"� partir de 1" -#: commands/copy.c:1032 -#, c-format -msgid "table \"%s\" does not have OIDs" -msgstr "la table � %s � n'a pas d'OID" +#: utils/adt/varlena.c:3900 +msgid "too few arguments for format" +msgstr "trop peu d'arguments pour le format" -#: commands/copy.c:1049 -msgid "COPY (SELECT) WITH OIDS is not supported" -msgstr "COPY (SELECT) WITH OIDS n'est pas support�" +#: utils/adt/varlena.c:3921 +#, c-format +msgid "unrecognized conversion specifier \"%c\"" +msgstr "sp�cificateur de conversion � %c � inconnu" -#: commands/copy.c:1076 -msgid "COPY (SELECT INTO) is not supported" -msgstr "COPY (SELECT INTO) n'est pas support�" +#: utils/adt/varlena.c:3950 +msgid "null values cannot be formatted as an SQL identifier" +msgstr "les valeurs NULL ne peuvent pas �tre format�s comme un identifiant SQL" -#: commands/copy.c:1135 -#, 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" +#: utils/adt/like_match.c:104 utils/adt/like_match.c:164 +msgid "LIKE pattern must not end with escape character" +msgstr "le motif LIKE ne se termine pas de caract�res d'�chappement" -#: commands/copy.c:1157 +#: utils/adt/tid.c:70 utils/adt/tid.c:78 utils/adt/tid.c:86 #, 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" +msgid "invalid input syntax for type tid: \"%s\"" +msgstr "syntaxe en entr�e invalide pour le type tid : � %s �" -#: commands/copy.c:1235 -#, c-format -msgid "cannot copy from view \"%s\"" -msgstr "ne peut pas copier � partir de la vue � %s �" +#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:1432 utils/adt/geo_ops.c:3493 +#: utils/adt/geo_ops.c:4269 utils/adt/geo_ops.c:5198 +msgid "too many points requested" +msgstr "trop de points demand�" -#: commands/copy.c:1237 -msgid "Try the COPY (SELECT ...) TO variant." -msgstr "Tentez la variante COPY (SELECT ...) TO." +#: utils/adt/geo_ops.c:317 +msgid "could not format \"path\" value" +msgstr "n'a pas pu formater la valeur � path �" -#: commands/copy.c:1241 +#: utils/adt/geo_ops.c:392 #, c-format -msgid "cannot copy from sequence \"%s\"" -msgstr "ne peut pas copier � partir de la s�quence � %s �" +msgid "invalid input syntax for type box: \"%s\"" +msgstr "syntaxe en entr�e invalide pour le type box : � %s �" -#: commands/copy.c:1246 +#: utils/adt/geo_ops.c:956 #, 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" +msgid "invalid input syntax for type line: \"%s\"" +msgstr "syntaxe en entr�e invalide pour le type line: � %s �" -#: commands/copy.c:1270 -msgid "relative path not allowed for COPY to file" -msgstr "un chemin relatif n'est pas autoris� � utiliser COPY vers un fichier" +#: 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 "le type � line � n'est pas encore impl�ment�" -#: commands/copy.c:1279 +#: utils/adt/geo_ops.c:1412 utils/adt/geo_ops.c:1443 #, c-format -msgid "could not open file \"%s\" for writing: %m" -msgstr "n'a pas pu ouvrir le fichier � %s � en �criture : %m" +msgid "invalid input syntax for type path: \"%s\"" +msgstr "syntaxe en entr�e invalide pour le type path : � %s �" -#: commands/copy.c:1286 -#: commands/copy.c:1781 -#, c-format -msgid "\"%s\" is a directory" -msgstr "� %s � est un r�pertoire" +#: utils/adt/geo_ops.c:1482 +msgid "invalid number of points in external \"path\" value" +msgstr "nombre de points invalide dans la valeur externe de � path �" -#: commands/copy.c:1572 +#: utils/adt/geo_ops.c:1825 #, c-format -msgid "COPY %s, line %d, column %s" -msgstr "COPY %s, ligne %d, colonne %s" +msgid "invalid input syntax for type point: \"%s\"" +msgstr "syntaxe en entr�e invalide pour le type point : � %s �" -#: commands/copy.c:1576 -#: commands/copy.c:1621 +#: utils/adt/geo_ops.c:2053 #, c-format -msgid "COPY %s, line %d" -msgstr "COPY %s, ligne %d" +msgid "invalid input syntax for type lseg: \"%s\"" +msgstr "syntaxe en entr�e invalide pour le type lseg : � %s �" -#: commands/copy.c:1587 -#, c-format -msgid "COPY %s, line %d, column %s: \"%s\"" -msgstr "COPY %s, ligne %d, colonne %s : � %s �" +#: utils/adt/geo_ops.c:2657 +msgid "function \"dist_lb\" not implemented" +msgstr "la fonction � dist_lb � n'est pas impl�ment�e" -#: commands/copy.c:1595 -#, c-format -msgid "COPY %s, line %d, column %s: null input" -msgstr "COPY %s, ligne %d, colonne %s : NULL en entr�e" +#: utils/adt/geo_ops.c:3170 +msgid "function \"close_lb\" not implemented" +msgstr "la fonction � close_lb � n'est pas impl�ment�e" -#: commands/copy.c:1607 -#, c-format -msgid "COPY %s, line %d: \"%s\"" -msgstr "COPY %s, ligne %d : � %s �" +#: utils/adt/geo_ops.c:3459 +msgid "cannot create bounding box for empty polygon" +msgstr "ne peut pas cr�er une bo�te entour�e pour un polyg�ne vide" -#: commands/copy.c:1709 +#: utils/adt/geo_ops.c:3484 utils/adt/geo_ops.c:3504 #, c-format -msgid "cannot copy to view \"%s\"" -msgstr "ne peut pas copier vers la vue � %s �" +msgid "invalid input syntax for type polygon: \"%s\"" +msgstr "syntaxe en entr�e invalide pour le type polygon : � %s �" -#: commands/copy.c:1714 -#, c-format -msgid "cannot copy to sequence \"%s\"" -msgstr "ne peut pas copier vers la s�quence � %s �" +#: utils/adt/geo_ops.c:3544 +msgid "invalid number of points in external \"polygon\" value" +msgstr "nombre de points invalide dans la valeur externe de � polygon �" -#: commands/copy.c:1719 -#, 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" +#: utils/adt/geo_ops.c:4067 +msgid "function \"poly_distance\" not implemented" +msgstr "la fonction � poly_distance � n'est pas impl�ment�e" + +#: utils/adt/geo_ops.c:4381 +msgid "function \"path_center\" not implemented" +msgstr "la fonction � path_center � n'est pas impl�ment�e" -#: commands/copy.c:1774 -#: utils/adt/genfile.c:106 +#: utils/adt/geo_ops.c:4398 +msgid "open path cannot be converted to polygon" +msgstr "le chemin ouvert ne peut �tre converti en polyg�ne" + +#: utils/adt/geo_ops.c:4575 utils/adt/geo_ops.c:4585 utils/adt/geo_ops.c:4600 +#: utils/adt/geo_ops.c:4606 #, c-format -msgid "could not open file \"%s\" for reading: %m" -msgstr "n'a pas pu ouvrir le fichier � %s � pour une lecture : %m" +msgid "invalid input syntax for type circle: \"%s\"" +msgstr "syntaxe en entr�e invalide pour le type circle : � %s �" -#: commands/copy.c:1887 -msgid "COPY file signature not recognized" -msgstr "la signature du fichier COPY n'est pas reconnue" +#: utils/adt/geo_ops.c:4628 utils/adt/geo_ops.c:4636 +msgid "could not format \"circle\" value" +msgstr "n'a pas pu formater la valeur � circle �" -#: commands/copy.c:1892 -msgid "invalid COPY file header (missing flags)" -msgstr "en-t�te du fichier COPY invalide (options manquantes)" +#: utils/adt/geo_ops.c:4663 +msgid "invalid radius in external \"circle\" value" +msgstr "diam�tre invalide pour la valeur externe de � circle �" -#: commands/copy.c:1898 -msgid "unrecognized critical flags in COPY file header" -msgstr "options critiques non reconnues dans l'en-t�te du fichier COPY" +#: utils/adt/geo_ops.c:5184 +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" -#: commands/copy.c:1904 -msgid "invalid COPY file header (missing length)" -msgstr "en-t�te du fichier COPY invalide (longueur manquante)" +#: utils/adt/geo_ops.c:5189 +msgid "must request at least 2 points" +msgstr "doit demander au moins deux points" -#: commands/copy.c:1911 -msgid "invalid COPY file header (wrong length)" -msgstr "en-t�te du fichier COPY invalide (mauvaise longueur)" +#: utils/adt/geo_ops.c:5233 utils/adt/geo_ops.c:5256 +msgid "cannot convert empty polygon to circle" +msgstr "ne peut pas convertir un polyg�ne vide en cercle" -#: commands/copy.c:2002 -msgid "missing data for OID column" -msgstr "donn�es manquantes pour la colonne OID" +#: utils/adt/varchar.c:48 utils/adt/varbit.c:56 +#, c-format +msgid "length for type %s must be at least 1" +msgstr "la longueur du type %s doit �tre d'au moins 1" -#: commands/copy.c:2008 -msgid "null OID in COPY data" -msgstr "OID NULL dans les donn�es du COPY" +#: utils/adt/varchar.c:52 utils/adt/varbit.c:61 +#, c-format +msgid "length for type %s cannot exceed %d" +msgstr "la longueur du type %s ne peut pas exc�der %d" -#: commands/copy.c:2018 -#: commands/copy.c:2090 -msgid "invalid OID in COPY data" -msgstr "OID invalide dans les donn�es du COPY" +#: utils/adt/varchar.c:152 utils/adt/varchar.c:305 +#, c-format +msgid "value too long for type character(%d)" +msgstr "valeur trop longue pour le type character(%d)" -#: commands/copy.c:2033 +#: utils/adt/varchar.c:467 utils/adt/varchar.c:588 #, c-format -msgid "missing data for column \"%s\"" -msgstr "donn�es manquantes pour la colonne � %s �" +msgid "value too long for type character varying(%d)" +msgstr "valeur trop longue pour le type character varying(%d)" -#: commands/copy.c:2074 +#: 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 "row field count is %d, expected %d" -msgstr "le nombre de champs de la ligne est %d, %d attendus" +msgid "invalid input syntax for integer: \"%s\"" +msgstr "syntaxe en entr�e invalide pour l'entier : � %s �" -#: commands/copy.c:2217 -#: utils/misc/guc.c:7101 -#: utils/init/miscinit.c:1014 +#: utils/adt/int8.c:114 #, c-format -msgid "could not read from file \"%s\": %m" -msgstr "n'a pas pu lire � partir du fichier � %s � : %m" +msgid "value \"%s\" is out of range for type bigint" +msgstr "la valeur � %s � est en dehors des limites du type bigint" -#: commands/copy.c:2494 -#: commands/copy.c:2511 -msgid "literal carriage return found in data" -msgstr "retour chariot trouv� dans les donn�es" +#: 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/varbit.c:1611 utils/adt/numeric.c:2306 +msgid "bigint out of range" +msgstr "bigint en dehors des limites" -#: commands/copy.c:2495 -#: commands/copy.c:2512 -msgid "unquoted carriage return found in data" -msgstr "retour chariot sans guillemet trouv� dans les donn�es" +#: utils/adt/int8.c:1366 +msgid "OID out of range" +msgstr "OID en dehors des limites" -#: commands/copy.c:2497 -#: commands/copy.c:2514 -msgid "Use \"\\r\" to represent carriage return." -msgstr "Utilisez � \\r � pour repr�senter un retour chariot." +#: utils/adt/float.c:54 +msgid "value out of range: overflow" +msgstr "valeur en dehors des limites : d�passement" -#: commands/copy.c:2498 -#: commands/copy.c:2515 -msgid "Use quoted CSV field to represent carriage return." -msgstr "Utiliser le champ CSV entre guillemets pour repr�senter un retour chariot." +#: utils/adt/float.c:59 +msgid "value out of range: underflow" +msgstr "valeur en dehors des limites : trop petit" -#: commands/copy.c:2527 -msgid "literal newline found in data" -msgstr "retour � la ligne trouv� dans les donn�es" +#: utils/adt/float.c:206 utils/adt/float.c:270 utils/adt/float.c:326 +#, c-format +msgid "invalid input syntax for type real: \"%s\"" +msgstr "syntaxe en entr�e invalide pour le type real : � %s �" -#: commands/copy.c:2528 -msgid "unquoted newline found in data" -msgstr "retour � la ligne trouv� dans les donn�es" +#: utils/adt/float.c:265 +#, c-format +msgid "\"%s\" is out of range for type real" +msgstr "� %s � est hors des limites du type real" -#: commands/copy.c:2530 -msgid "" -"Use \"\\n" -"\" to represent newline." +#: utils/adt/float.c:427 utils/adt/float.c:491 utils/adt/float.c:547 +#: utils/adt/numeric.c:3969 utils/adt/numeric.c:3995 +#, 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:486 +#, 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:1359 utils/adt/numeric.c:5183 +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:1401 utils/adt/numeric.c:2166 +msgid "zero raised to a negative power is undefined" +msgstr "z�ro � une puissance n�gative est ind�fini" + +#: utils/adt/float.c:1405 utils/adt/numeric.c:2172 +msgid "a negative number raised to a non-integer power yields a complex result" msgstr "" -"Utilisez � \\n" -" � pour repr�senter un retour � la ligne." +"un nombre n�gatif �lev� � une puissance non enti�re donne un r�sultat " +"complexe" -#: commands/copy.c:2531 -msgid "Use quoted CSV field to represent newline." -msgstr "Utiliser un champ CSV entre guillemets pour repr�senter un retour � la ligne." +#: utils/adt/float.c:1471 utils/adt/float.c:1501 utils/adt/numeric.c:5401 +msgid "cannot take logarithm of zero" +msgstr "ne peut pas calculer le logarithme de z�ro" -#: commands/copy.c:2577 -#: commands/copy.c:2613 -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" +#: utils/adt/float.c:1475 utils/adt/float.c:1505 utils/adt/numeric.c:5405 +msgid "cannot take logarithm of a negative number" +msgstr "ne peut pas calculer le logarithme sur un nombre n�gatif" -#: commands/copy.c:2586 -#: commands/copy.c:2602 -msgid "end-of-copy marker corrupt" -msgstr "marqueur fin-de-copie corrompu" +#: utils/adt/float.c:1532 utils/adt/float.c:1553 utils/adt/float.c:1574 +#: utils/adt/float.c:1596 utils/adt/float.c:1617 utils/adt/float.c:1638 +#: utils/adt/float.c:1660 utils/adt/float.c:1681 +msgid "input is out of range" +msgstr "l'entr�e est en dehors des limites" -#: commands/copy.c:2729 -#: commands/copy.c:2764 -#: commands/copy.c:2944 -#: commands/copy.c:2979 -msgid "extra data after last expected column" -msgstr "donn�es suppl�mentaires apr�s la derni�re colonne attendue" +#: utils/adt/float.c:2743 utils/adt/numeric.c:1171 +msgid "count must be greater than zero" +msgstr "le total doit �tre sup�rieur � z�ro" -#: commands/copy.c:3026 -msgid "unterminated CSV quoted field" -msgstr "champ CSV entre guillemets non termin�" +#: utils/adt/float.c:2748 utils/adt/numeric.c:1178 +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" -#: commands/copy.c:3103 -#: commands/copy.c:3122 -msgid "unexpected EOF in COPY data" -msgstr "fin de fichier (EOF) inattendu dans les donn�es du COPY" +#: utils/adt/float.c:2754 +msgid "lower and upper bounds must be finite" +msgstr "les limites basse et haute doivent �tre finies" -#: commands/copy.c:3112 -msgid "invalid field size" -msgstr "taille du champ invalide" +#: utils/adt/float.c:2792 utils/adt/numeric.c:1191 +msgid "lower bound cannot equal upper bound" +msgstr "" +"la limite inf�rieure ne peut pas �tre plus �gale � la limite sup�rieure" -#: commands/copy.c:3135 -msgid "incorrect binary data format" -msgstr "format de donn�es binaires incorrect" +#: utils/adt/formatting.c:492 +msgid "invalid format specification for an interval value" +msgstr "format de sp�cification invalide pour une valeur intervalle" -#: commands/copy.c:3446 -#: commands/indexcmds.c:908 -#: commands/tablecmds.c:1260 -#: commands/tablecmds.c:2065 -#: parser/parse_expr.c:758 -#: utils/adt/tsvector_op.c:1347 -#, c-format -msgid "column \"%s\" does not exist" -msgstr "la colonne � %s � n'existe pas" +#: utils/adt/formatting.c:493 +msgid "Intervals are not tied to specific calendar dates." +msgstr "Les intervalles ne sont pas li�s aux dates de calendriers sp�cifiques." -#: commands/copy.c:3453 -#: commands/tablecmds.c:1286 -#: commands/trigger.c:536 -#: parser/parse_target.c:824 -#: parser/parse_target.c:835 -#, c-format -msgid "column \"%s\" specified more than once" -msgstr "la colonne � %s � est sp�cifi�e plus d'une fois" +#: utils/adt/formatting.c:1060 +msgid "\"EEEE\" must be the last pattern used" +msgstr "� EEEE � doit �tre le dernier motif utilis�" -#: commands/dbcommands.c:201 -msgid "LOCATION is not supported anymore" -msgstr "LOCATION n'est plus support�" +#: utils/adt/formatting.c:1068 +msgid "\"9\" must be ahead of \"PR\"" +msgstr "� 9 � doit �tre avant � PR �" -#: commands/dbcommands.c:202 -msgid "Consider using tablespaces instead." -msgstr "Consid�rer l'utilisation de tablespaces." +#: utils/adt/formatting.c:1084 +msgid "\"0\" must be ahead of \"PR\"" +msgstr "� 0 � doit �tre avant � PR �" -#: commands/dbcommands.c:225 -#: utils/adt/ascii.c:144 -#, c-format -msgid "%d is not a valid encoding code" -msgstr "%d n'est pas un code d'encodage valide" +#: utils/adt/formatting.c:1110 +msgid "multiple decimal points" +msgstr "multiples points d�cimaux" -#: commands/dbcommands.c:235 -#: utils/adt/ascii.c:126 -#, c-format -msgid "%s is not a valid encoding name" -msgstr "%s n'est pas un nom d'encodage valide" +#: utils/adt/formatting.c:1114 utils/adt/formatting.c:1197 +msgid "cannot use \"V\" and decimal point together" +msgstr "ne peut pas utiliser � V � et le point d�cimal ensemble" -#: commands/dbcommands.c:253 -#: commands/dbcommands.c:1347 -#: commands/user.c:255 -#: commands/user.c:562 -#, c-format -msgid "invalid connection limit: %d" -msgstr "limite de connexion invalide : %d" +#: utils/adt/formatting.c:1126 +msgid "cannot use \"S\" twice" +msgstr "ne peut pas utiliser � S � deux fois" -#: commands/dbcommands.c:272 -msgid "permission denied to create database" -msgstr "droit refus� pour cr�er une base de donn�es" +#: utils/adt/formatting.c:1130 +msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" +msgstr "ne peut pas utiliser � S � et � PL �/� MI �/� SG �/� PR � ensemble" -#: commands/dbcommands.c:295 -#, c-format -msgid "template database \"%s\" does not exist" -msgstr "la base de donn�es mod�le � %s � n'existe pas" +#: utils/adt/formatting.c:1150 +msgid "cannot use \"S\" and \"MI\" together" +msgstr "ne peut pas utiliser � S � et � MI � ensemble" -#: commands/dbcommands.c:307 -#, c-format -msgid "permission denied to copy database \"%s\"" -msgstr "droit refus� pour copier la base de donn�es � %s �" +#: utils/adt/formatting.c:1160 +msgid "cannot use \"S\" and \"PL\" together" +msgstr "ne peut pas utiliser � S � et � PL � ensemble" -#: commands/dbcommands.c:323 -#, c-format -msgid "invalid server encoding %d" -msgstr "encodage serveur %d invalide" +#: utils/adt/formatting.c:1170 +msgid "cannot use \"S\" and \"SG\" together" +msgstr "ne peut pas utiliser � S � et � SG � ensemble" -#: commands/dbcommands.c:329 -#: commands/dbcommands.c:333 -#, c-format -msgid "invalid locale name %s" -msgstr "nom de locale � %s � invalide" +#: utils/adt/formatting.c:1179 +msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" +msgstr "ne peut pas utiliser � PR � et � S �/� PL �/� MI �/� SG � ensemble" -#: commands/dbcommands.c:369 -#: commands/dbcommands.c:384 -#, c-format -msgid "encoding %s does not match locale %s" -msgstr "l'encodage %s ne correspond pas � la locale %s" +#: utils/adt/formatting.c:1205 +msgid "cannot use \"EEEE\" twice" +msgstr "ne peut pas utiliser � EEEE � deux fois" -#: commands/dbcommands.c:372 -#, c-format -msgid "The chosen LC_CTYPE setting requires encoding %s." -msgstr "Le param�tre LC_CTYPE choisi n�cessite l'encodage %s." +#: utils/adt/formatting.c:1211 +msgid "\"EEEE\" is incompatible with other formats" +msgstr "� EEEE � est incompatible avec les autres formats" -#: commands/dbcommands.c:387 -#, c-format -msgid "The chosen LC_COLLATE setting requires encoding %s." -msgstr "Le param�tre LC_COLLATE choisi n�cessite l'encodage %s." +#: utils/adt/formatting.c:1212 +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." -#: commands/dbcommands.c:405 +#: utils/adt/formatting.c:1412 #, c-format -msgid "new encoding (%s) is incompatible with the encoding of the template database (%s)" +msgid "\"%s\" is not a number" +msgstr "� %s � n'est pas un nombre" + +#: utils/adt/formatting.c:1514 utils/adt/formatting.c:1564 +msgid "could not determine which collation to use for lower() function" msgstr "" -"le nouvel encodage (%s� est incompatible avec l'encodage de la base de\n" -"donn�es mod�le (%s)" +"n'a pas pu d�terminer le collationnement � utiliser pour la fonction lower()" -#: commands/dbcommands.c:408 -msgid "Use the same encoding as in the template database, or use template0 as template." +#: utils/adt/formatting.c:1630 utils/adt/formatting.c:1680 +msgid "could not determine which collation to use for upper() function" msgstr "" -"Utilisez le m�me encodage que celui de la base de donn�es mod�le,\n" -"ou utilisez template0 comme mod�le." +"n'a pas pu d�terminer le collationnement � utiliser pour la fonction upper()" -#: commands/dbcommands.c:413 -#, c-format -msgid "new collation (%s) is incompatible with the collation of the template database (%s)" +#: utils/adt/formatting.c:1747 utils/adt/formatting.c:1809 +msgid "could not determine which collation to use for initcap() function" msgstr "" -"le nouveau tri (%s) est incompatible avec le tri de la base de\n" -"donn�es mod�le (%s)" +"n'a pas pu d�terminer le collationnement � utiliser pour la fonction " +"initcap()" -#: commands/dbcommands.c:415 -msgid "Use the same collation as in the template database, or use template0 as template." +#: utils/adt/formatting.c:2086 +msgid "invalid combination of date conventions" +msgstr "combinaison invalide des conventions de date" + +#: utils/adt/formatting.c:2087 +msgid "" +"Do not mix Gregorian and ISO week date conventions in a formatting template." msgstr "" -"Utilisez le m�me tri que celui de la base de donn�es mod�le,\n" -"ou utilisez template0 comme mod�le." +"Ne pas mixer les conventions de jour de semaine gr�gorien et ISO dans un\n" +"mod�le de formatage." -#: commands/dbcommands.c:420 +#: utils/adt/formatting.c:2104 #, c-format -msgid "new LC_CTYPE (%s) is incompatible with the LC_CTYPE of the template database (%s)" -msgstr "" -"le nouveau LC_CTYPE (%s) est incompatible avec le LC_CTYPE de la base de\n" -"donn�es mod�le (%s)" +msgid "conflicting values for \"%s\" field in formatting string" +msgstr "valeur conflictuelle pour le champ � %s � dans la cha�ne de formatage" -#: commands/dbcommands.c:422 -msgid "Use the same LC_CTYPE as in the template database, or use template0 as template." +#: utils/adt/formatting.c:2106 +msgid "This value contradicts a previous setting for the same field type." 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:449 -#: commands/dbcommands.c:1054 -msgid "pg_global cannot be used as default tablespace" -msgstr "pg_global ne peut pas �tre utilis� comme tablespace par d�faut" +"Cette valeur contredit une configuration pr�c�dente pour le m�me type de " +"champ." -#: commands/dbcommands.c:475 +#: utils/adt/formatting.c:2167 #, c-format -msgid "cannot assign new default tablespace \"%s\"" -msgstr "ne peut pas affecter un nouveau tablespace par d�faut � %s �" +msgid "source string too short for \"%s\" formatting field" +msgstr "cha�ne source trop petite pour le champ de formatage � %s �" -#: commands/dbcommands.c:477 +#: utils/adt/formatting.c:2169 #, c-format -msgid "There is a conflict because database \"%s\" already has some tables in this tablespace." -msgstr "" -"Il existe un conflit car la base de donn�es � %s � a d�j� quelques tables\n" -"dans son tablespace." +msgid "Field requires %d characters, but only %d remain." +msgstr "Le champ requiert %d caract�res, mais seuls %d restent." -#: commands/dbcommands.c:497 -#: commands/dbcommands.c:925 -#, c-format -msgid "database \"%s\" already exists" -msgstr "la base de donn�es � %s � existe d�j�" +#: utils/adt/formatting.c:2172 utils/adt/formatting.c:2186 +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 �." -#: commands/dbcommands.c:511 +#: utils/adt/formatting.c:2182 utils/adt/formatting.c:2195 +#: utils/adt/formatting.c:2325 #, c-format -msgid "source database \"%s\" is being accessed by other users" -msgstr "la base de donn�es source � %s � est acc�d�e par d'autres utilisateurs" +msgid "invalid value \"%s\" for \"%s\"" +msgstr "valeur � %s � invalide pour � %s �" -#: commands/dbcommands.c:767 +#: utils/adt/formatting.c:2184 #, c-format -msgid "database \"%s\" does not exist, skipping" -msgstr "la base de donn�es � %s � n'existe pas, poursuite du traitement" +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." -#: commands/dbcommands.c:788 -msgid "cannot drop a template database" -msgstr "ne peut pas supprimer une base de donn�es mod�le" +#: utils/adt/formatting.c:2197 +msgid "Value must be an integer." +msgstr "La valeur doit �tre un entier" -#: commands/dbcommands.c:794 -msgid "cannot drop the currently open database" -msgstr "ne peut pas supprimer la base de donn�es actuellement ouverte" +#: utils/adt/formatting.c:2202 +#, 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" -#: commands/dbcommands.c:805 -#: commands/dbcommands.c:947 -#: commands/dbcommands.c:1076 +#: utils/adt/formatting.c:2204 #, 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" +msgid "Value must be in the range %d to %d." +msgstr "La valeur doit �tre compris entre %d et %d" -#: commands/dbcommands.c:916 -msgid "permission denied to rename database" -msgstr "droit refus� pour le renommage de la base de donn�es" +#: utils/adt/formatting.c:2327 +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." -#: commands/dbcommands.c:936 -msgid "current database cannot be renamed" -msgstr "la base de donn�es actuelle ne peut pas �tre renomm�e" +#: utils/adt/formatting.c:2876 +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" -#: commands/dbcommands.c:1028 -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" +#: utils/adt/formatting.c:2980 +msgid "invalid input string for \"Y,YYY\"" +msgstr "cha�ne invalide en entr�e pour � Y,YYY �" -#: commands/dbcommands.c:1116 +#: utils/adt/formatting.c:3371 utils/adt/date.c:167 #, 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:1118 -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." +msgid "date out of range: \"%s\"" +msgstr "date en dehors des limites : � %s �" -#: commands/dbcommands.c:1246 -#: commands/dbcommands.c:1719 -#: commands/dbcommands.c:1913 -#: commands/dbcommands.c:1961 -#: commands/tablespace.c:579 +#: utils/adt/formatting.c:3503 #, 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 �" +msgid "hour \"%d\" is invalid for the 12-hour clock" +msgstr "l'heure � %d � est invalide pour une horloge sur 12 heures" -#: commands/dbcommands.c:1495 -msgid "permission denied to change owner of database" -msgstr "droit refus� pour modifier le propri�taire de la base de donn�es" +#: utils/adt/formatting.c:3505 +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." -#: commands/dbcommands.c:1807 +#: utils/adt/formatting.c:3543 #, 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 "inconsistent use of year %04d and \"BC\"" +msgstr "utilisation non coh�rente de l'ann�e %04d et de � BC �" -#: commands/dbcommands.c:1810 -#, c-format -msgid "There are %d other session(s) using the database." -msgstr "%d autres sessions utilisent la base de donn�es." +#: utils/adt/formatting.c:3590 +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" -#: commands/dbcommands.c:1813 -#, c-format -msgid "There are %d prepared transaction(s) using the database." -msgstr "%d transaction(s) pr�par�e(s) utilisent la base de donn�es" +#: utils/adt/formatting.c:4452 +msgid "\"EEEE\" not supported for input" +msgstr "� EEEE � non support� en entr�e" -#: 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 requiert un param�tre" +#: utils/adt/formatting.c:4464 +msgid "\"RN\" not supported for input" +msgstr "� RN � non support� en entr�e" -#: commands/define.c:108 -#: commands/define.c:119 -#: commands/define.c:189 -#: commands/define.c:207 +#: utils/adt/date.c:71 #, c-format -msgid "%s requires a numeric value" -msgstr "%s requiert une valeur num�rique" +msgid "TIME(%d)%s precision must not be negative" +msgstr "la pr�cision de TIME(%d)%s ne doit pas �tre n�gative" -#: commands/define.c:175 +#: utils/adt/date.c:77 #, c-format -msgid "%s requires a Boolean value" -msgstr "%s requiert une valeur bool�enne" +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" -#: commands/define.c:236 -#, c-format -msgid "argument of %s must be a name" -msgstr "l'argument de %s doit �tre un nom" +#: utils/adt/date.c:142 utils/adt/datetime.c:1186 utils/adt/datetime.c:1928 +msgid "date/time value \"current\" is no longer supported" +msgstr "la valeur � current � pour la date et heure n'est plus support�e" -#: commands/define.c:266 -#, c-format -msgid "argument of %s must be a type name" -msgstr "l'argument de %s doit �tre un nom de type" +#: utils/adt/date.c:359 +msgid "cannot subtract infinite dates" +msgstr "ne peut pas soustraire les valeurs dates infinies" -#: commands/define.c:291 -#, c-format -msgid "%s requires an integer value" -msgstr "%s requiert une valeur enti�re" +#: utils/adt/date.c:416 utils/adt/date.c:453 +msgid "date out of range for timestamp" +msgstr "date en dehors des limites pour un timestamp" -#: commands/define.c:312 -#, c-format -msgid "invalid argument for %s: \"%s\"" -msgstr "argument invalide pour %s : � %s �" +#: utils/adt/date.c:986 +msgid "cannot convert reserved abstime value to date" +msgstr "ne peut pas convertir la valeur r�serv�e abstime en date" -#: commands/explain.c:149 -#, c-format -msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\"" -msgstr "valeur non reconnue pour l'option EXPLAIN � %s � : %s" +#: 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 "heure en dehors des limites" -#: commands/explain.c:155 +#: utils/adt/date.c:1793 utils/adt/date.c:1810 #, c-format -msgid "unrecognized EXPLAIN option \"%s\"" -msgstr "option EXPLAIN � %s � non reconnu" +msgid "\"time\" units \"%s\" not recognized" +msgstr "l'unit� � %s � n'est pas reconnu pour le type � time �" -#: commands/explain.c:162 -msgid "EXPLAIN option BUFFERS requires ANALYZE" -msgstr "l'option BUFFERS d'EXPLAIN n�cessite ANALYZE" +#: utils/adt/date.c:1931 +msgid "time zone displacement out of range" +msgstr "d�placement du fuseau horaire en dehors des limites" -#: commands/foreigncmds.c:132 -#: commands/foreigncmds.c:141 +#: utils/adt/date.c:2556 utils/adt/date.c:2573 #, c-format -msgid "option \"%s\" not found" -msgstr "option � %s � non trouv�" +msgid "\"time with time zone\" units \"%s\" not recognized" +msgstr "L'unit� � %s � n'est pas reconnu pour le type � time with time zone �" -#: commands/foreigncmds.c:151 +#: utils/adt/date.c:2671 #, c-format -msgid "option \"%s\" provided more than once" -msgstr "option � %s � fournie plus d'une fois" +msgid "\"interval\" time zone \"%s\" not valid" +msgstr "le fuseau horaire � %s � n'est pas valide pour le type � interval �" -#: commands/foreigncmds.c:209 -#: commands/foreigncmds.c:217 +#: utils/adt/varbit.c:162 utils/adt/varbit.c:474 utils/adt/varbit.c:939 #, 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 �" - -#: commands/foreigncmds.c:211 -msgid "Must be superuser to change owner of a foreign-data wrapper." -msgstr "" -"Doit �tre super-utilisateur pour modifier le propri�taire du wrapper de\n" -"donn�es distantes." +msgid "bit string length exceeds the maximum allowed (%d)" +msgstr "la taille du tableau de bits d�passe le maximum permis (%d)" -#: commands/foreigncmds.c:219 -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." - -#: commands/foreigncmds.c:228 -#: commands/foreigncmds.c:452 -#: commands/foreigncmds.c:553 -#: foreign/foreign.c:90 +#: utils/adt/varbit.c:176 utils/adt/varbit.c:319 utils/adt/varbit.c:376 #, c-format -msgid "foreign-data wrapper \"%s\" does not exist" -msgstr "le wrapper de donn�es distantes � %s � n'existe pas" +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)" -#: commands/foreigncmds.c:270 -#: commands/foreigncmds.c:723 -#: commands/foreigncmds.c:813 -#: commands/foreigncmds.c:1089 -#: foreign/foreign.c:179 +#: utils/adt/varbit.c:198 utils/adt/varbit.c:510 #, c-format -msgid "server \"%s\" does not exist" -msgstr "le serveur � %s � n'existe pas" +msgid "\"%c\" is not a valid binary digit" +msgstr "� %c � n'est pas un chiffre binaire valide" -#: commands/foreigncmds.c:347 +#: utils/adt/varbit.c:223 utils/adt/varbit.c:535 #, c-format -msgid "permission denied to create foreign-data wrapper \"%s\"" -msgstr "droit refus� pour la cr�ation du wrapper de donn�es distantes � %s �" +msgid "\"%c\" is not a valid hexadecimal digit" +msgstr "� %c � n'est pas un chiffre hexad�cimal valide" -#: commands/foreigncmds.c:349 -msgid "Must be superuser to create a foreign-data wrapper." -msgstr "Doit �tre super-utilisateur pour cr�er un wrapper de donn�es distantes." +#: utils/adt/varbit.c:310 utils/adt/varbit.c:626 +msgid "invalid length in external bit string" +msgstr "longueur invalide dans la cha�ne bit externe" -#: commands/foreigncmds.c:360 +#: utils/adt/varbit.c:488 utils/adt/varbit.c:635 utils/adt/varbit.c:697 #, c-format -msgid "foreign-data wrapper \"%s\" already exists" -msgstr "le wrapper de donn�es distantes � %s � existe d�j�" +msgid "bit string too long for type bit varying(%d)" +msgstr "la cha�ne bit est trop longue pour le type bit varying(%d)" -#: commands/foreigncmds.c:442 -#, c-format -msgid "permission denied to alter foreign-data wrapper \"%s\"" -msgstr "droit refus� pour modifier le wrapper de donn�es distantes � %s �" +#: utils/adt/varbit.c:1192 +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" -#: commands/foreigncmds.c:444 -msgid "Must be superuser to alter a foreign-data wrapper." -msgstr "Doit �tre super-utilisateur pour modifier un wrapper de donn�es distantes" +#: utils/adt/varbit.c:1234 +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" -#: commands/foreigncmds.c:472 -msgid "changing the foreign-data wrapper validator can cause the options for dependent objects to become invalid" +#: utils/adt/varbit.c:1281 +msgid "cannot XOR bit strings of different sizes" 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" +"ne peut pas utiliser l'op�rateur XOR sur des cha�nes bit de tailles " +"diff�rentes" -#: commands/foreigncmds.c:544 +#: utils/adt/varbit.c:1759 utils/adt/varbit.c:1817 #, c-format -msgid "permission denied to drop foreign-data wrapper \"%s\"" -msgstr "droit refus� pour supprimer le wrapper de donn�es distantes � %s �" - -#: commands/foreigncmds.c:546 -msgid "Must be superuser to drop a foreign-data wrapper." -msgstr "Doit �tre super-utilisateur pour supprimer un wrapper de donn�es distantes." +msgid "bit index %d out of valid range (0..%d)" +msgstr "index de bit %d en dehors des limites valides (0..%d)" -#: commands/foreigncmds.c:558 +#: utils/adt/tsvector.c:216 #, 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" +msgid "word is too long (%ld bytes, max %ld bytes)" +msgstr "le mot est trop long (%ld octets, max %ld octets)" -#: commands/foreigncmds.c:625 +#: utils/adt/tsvector.c:223 #, c-format -msgid "server \"%s\" already exists" -msgstr "le serveur � %s � existe d�j�" +msgid "string is too long for tsvector (%ld bytes, max %ld bytes)" +msgstr "la cha�ne est trop longue pour tsvector (%ld octets, max %ld octets)" -#: commands/foreigncmds.c:817 +#: utils/adt/tsvector.c:273 utils/adt/tsvector_op.c:530 tsearch/to_tsany.c:165 #, c-format -msgid "server \"%s\" does not exist, skipping" -msgstr "le serveur � %s � n'existe pas, poursuite du traitement" +msgid "string is too long for tsvector (%d bytes, max %d bytes)" +msgstr "la cha�ne est trop longue (%d octets, max %d octets)" -#: commands/foreigncmds.c:920 +#: utils/adt/ascii.c:75 #, c-format -msgid "user mapping \"%s\" already exists for server %s" -msgstr "la correspondance utilisateur � %s � existe d�j� dans le serveur � %s �" +msgid "encoding conversion from %s to ASCII not supported" +msgstr "la conversion de l'encodage de %s vers l'ASCII n'est pas support�e" -#: commands/foreigncmds.c:998 -#: commands/foreigncmds.c:1105 +#: utils/adt/ascii.c:126 commands/dbcommands.c:236 #, c-format -msgid "user mapping \"%s\" does not exist for the server" -msgstr "la correspondance utilisateur � %s � n'existe pas pour le serveur" +msgid "%s is not a valid encoding name" +msgstr "%s n'est pas un nom d'encodage valide" -#: commands/foreigncmds.c:1092 -msgid "server does not exist, skipping" -msgstr "le serveur n'existe pas, poursuite du traitement" +#: utils/adt/ascii.c:144 commands/dbcommands.c:226 +#, c-format +msgid "%d is not a valid encoding code" +msgstr "%d n'est pas un code d'encodage valide" -#: commands/foreigncmds.c:1110 +#: utils/adt/dbsize.c:65 utils/adt/dbsize.c:211 utils/adt/dbsize.c:279 +#: utils/adt/genfile.c:107 utils/adt/genfile.c:279 access/transam/xlog.c:2932 +#: access/transam/xlog.c:3097 access/transam/xlog.c:9172 +#: access/transam/xlog.c:9351 storage/file/copydir.c:86 +#: storage/file/copydir.c:125 #, 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" -"du traitement" +msgid "could not stat file \"%s\": %m" +msgstr "n'a pas pu tester le fichier � %s � : %m" -#: commands/functioncmds.c:98 +#: utils/adt/dbsize.c:105 utils/adt/dbsize.c:189 #, c-format -msgid "SQL function cannot return shell type %s" -msgstr "la fonction SQL ne peut pas retourner le type shell %s" +msgid "could not open tablespace directory \"%s\": %m" +msgstr "n'a pas pu ouvrir le r�pertoire du tablespace � %s � : %m" -#: commands/functioncmds.c:103 +#: utils/adt/dbsize.c:127 catalog/aclchk.c:3492 catalog/aclchk.c:4609 #, c-format -msgid "return type %s is only a shell" -msgstr "le type de retour %s est seulement un shell" +msgid "database with OID %u does not exist" +msgstr "la base de donn�es d'OID %u n'existe pas" -#: commands/functioncmds.c:126 -#: commands/tablecmds.c:216 -#: commands/typecmds.c:650 -#: commands/typecmds.c:2572 -#: parser/parse_func.c:1485 -#: parser/parse_type.c:196 -#: utils/adt/regproc.c:973 +#: utils/adt/cash.c:237 #, c-format -msgid "type \"%s\" does not exist" -msgstr "le type � %s � n'existe pas" +msgid "invalid input syntax for type money: \"%s\"" +msgstr "syntaxe en entr�e invalide pour le type money : � %s �" -#: commands/functioncmds.c:132 -#: parser/parse_type.c:261 -#, 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 �" +#: utils/adt/tsrank.c:404 +msgid "array of weight must be one-dimensional" +msgstr "le tableau de poids doit �tre sur une seule dimension" -#: commands/functioncmds.c:138 -#, c-format -msgid "type \"%s\" is not yet defined" -msgstr "le type � %s � n'est pas encore d�fini" +#: utils/adt/tsrank.c:409 +msgid "array of weight is too short" +msgstr "le tableau de poids est trop court" -#: commands/functioncmds.c:139 -msgid "Creating a shell type definition." -msgstr "Cr�ation d'une d�finition d'un type shell." +#: utils/adt/tsrank.c:414 +msgid "array of weight must not contain nulls" +msgstr "le tableau de poids ne doit pas contenir de valeurs NULL" -#: commands/functioncmds.c:218 -#, c-format -msgid "SQL function cannot accept shell type %s" -msgstr "la fonction SQL ne peut pas accepter le type shell %s" +#: utils/adt/tsrank.c:423 utils/adt/tsrank.c:749 +msgid "weight out of range" +msgstr "poids en dehors des limites" -#: commands/functioncmds.c:223 -#, c-format -msgid "argument type %s is only a shell" -msgstr "le type d'argument %s est seulement un shell" +#: utils/adt/name.c:91 utils/adt/acl.c:166 +msgid "identifier too long" +msgstr "identifiant trop long" -#: commands/functioncmds.c:233 +#: utils/adt/name.c:92 utils/adt/acl.c:167 #, c-format -msgid "type %s does not exist" -msgstr "le type %s n'existe pas" +msgid "Identifier must be less than %d characters." +msgstr "L'identifiant doit faire moins de %d caract�res." -#: commands/functioncmds.c:241 -msgid "functions cannot accept set arguments" -msgstr "les fonctions ne peuvent pas accepter des arguments d'ensemble" +#. translator: first %s is inet or cidr +#: utils/adt/network.c:107 utils/adt/datetime.c:3558 +#, c-format +msgid "invalid input syntax for type %s: \"%s\"" +msgstr "syntaxe en entr�e invalide pour le type %s : � %s �" -#: commands/functioncmds.c:250 -msgid "VARIADIC parameter must be the last input parameter" -msgstr "le param�tre VARIADIC doit �tre le dernier param�tre en entr�e" +#: utils/adt/network.c:118 +#, c-format +msgid "invalid cidr value: \"%s\"" +msgstr "valeur cidr invalide : � %s �" -#: commands/functioncmds.c:277 -msgid "VARIADIC parameter must be an array" -msgstr "le param�tre VARIADIC doit �tre un tableau" +#: utils/adt/network.c:119 utils/adt/network.c:249 +msgid "Value has bits set to right of mask." +msgstr "La valeur a des bits positionn�s � la droite du masque." -#: commands/functioncmds.c:317 +#: utils/adt/network.c:160 utils/adt/network.c:614 utils/adt/network.c:639 +#: utils/adt/network.c:664 #, c-format -msgid "parameter name \"%s\" used more than once" -msgstr "le nom du param�tre � %s � est utilis� plus d'une fois" +msgid "could not format inet value: %m" +msgstr "n'a pas pu formater la valeur inet : %m" -#: commands/functioncmds.c:332 -msgid "only input parameters can have default values" -msgstr "seuls les param�tres en entr�e peuvent avoir des valeurs par d�faut" +#. translator: %s is inet or cidr +#: utils/adt/network.c:217 +#, c-format +msgid "invalid address family in external \"%s\" value" +msgstr "famille d'adresses invalide dans la valeur externe � %s �" -#: commands/functioncmds.c:344 -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" +#. translator: %s is inet or cidr +#: utils/adt/network.c:224 +#, c-format +msgid "invalid bits in external \"%s\" value" +msgstr "bits invalides dans la valeur externe � %s �" -#: commands/functioncmds.c:360 -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" +#. translator: %s is inet or cidr +#: utils/adt/network.c:233 +#, c-format +msgid "invalid length in external \"%s\" value" +msgstr "longueur invalide dans la valeur externe � %s �" -#: commands/functioncmds.c:364 -msgid "cannot use aggregate function in parameter default value" -msgstr "" -"ne peut pas utiliser une fonction d'agr�gat dans la valeur par d�faut d'un\n" -"param�tre" +#: utils/adt/network.c:248 +msgid "invalid external \"cidr\" value" +msgstr "valeur externe � cidr � invalide" -#: commands/functioncmds.c:368 -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" +#: utils/adt/network.c:370 utils/adt/network.c:397 +#, c-format +msgid "invalid mask length: %d" +msgstr "longueur du masque invalide : %d" -#: commands/functioncmds.c:378 -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" +#: utils/adt/network.c:682 +#, c-format +msgid "could not format cidr value: %m" +msgstr "n'a pas pu formater la valeur cidr : %m" -#: commands/functioncmds.c:617 -msgid "no function body specified" -msgstr "aucun corps de fonction sp�cifi�" +#: utils/adt/network.c:1255 +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" -#: commands/functioncmds.c:627 -msgid "no language specified" -msgstr "aucun langage sp�cifi�" +#: utils/adt/network.c:1287 +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" -#: commands/functioncmds.c:648 -#: commands/functioncmds.c:1349 -msgid "COST must be positive" -msgstr "COST doit �tre positif" +#: utils/adt/network.c:1348 utils/adt/network.c:1424 +msgid "result is out of range" +msgstr "le r�sultat est en dehors des limites" -#: commands/functioncmds.c:656 -#: commands/functioncmds.c:1357 -msgid "ROWS must be positive" -msgstr "ROWS doit �tre positif" +#: utils/adt/network.c:1389 +msgid "cannot subtract inet values of different sizes" +msgstr "ne peut pas soustraire des valeurs inet de tailles diff�rentes" -#: commands/functioncmds.c:695 +#: utils/adt/mac.c:65 #, c-format -msgid "unrecognized function attribute \"%s\" ignored" -msgstr "l'attribut � %s � non reconnu de la fonction a �t� ignor�" +msgid "invalid input syntax for type macaddr: \"%s\"" +msgstr "syntaxe en entr�e invalide pour le type macaddr : � %s �" -#: commands/functioncmds.c:746 +#: utils/adt/mac.c:72 #, 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:838 -#: commands/functioncmds.c:1992 -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." +msgid "invalid octet value in \"macaddr\" value: \"%s\"" +msgstr "valeur d'un octet invalide dans la valeur de � macaddr � : � %s �" -#: commands/functioncmds.c:885 +#: utils/adt/domains.c:80 #, 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" +msgid "type %s is not a domain" +msgstr "le type %s n'est pas un domaine" -#: commands/functioncmds.c:898 -msgid "function result type must be specified" -msgstr "le type de r�sultat de la fonction doit �tre sp�cifi�" +#: utils/adt/domains.c:128 executor/execQual.c:3893 +#, c-format +msgid "domain %s does not allow null values" +msgstr "le domaine %s n'autorise pas les valeurs NULL" -#: commands/functioncmds.c:933 -#: commands/functioncmds.c:1361 -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" +#: utils/adt/domains.c:164 executor/execQual.c:3922 +#, 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 �" -#: commands/functioncmds.c:985 +#: utils/adt/ruleutils.c:1580 utils/adt/acl.c:2772 commands/tablecmds.c:4525 +#: commands/tablecmds.c:4617 commands/tablecmds.c:4664 +#: commands/tablecmds.c:4760 commands/tablecmds.c:4804 +#: commands/tablecmds.c:4883 commands/tablecmds.c:4967 +#: commands/tablecmds.c:6624 commands/tablecmds.c:6833 commands/analyze.c:343 +#: commands/sequence.c:1443 commands/copy.c:3787 commands/trigger.c:607 +#: catalog/aclchk.c:1427 catalog/objectaddress.c:545 parser/analyze.c:2046 +#: parser/parse_target.c:898 parser/parse_relation.c:2060 +#: parser/parse_relation.c:2117 parser/parse_type.c:117 #, c-format -msgid "function %s(%s) does not exist, skipping" -msgstr "la fonction %s(%s) n'existe pas, poursuite du traitement" +msgid "column \"%s\" of relation \"%s\" does not exist" +msgstr "la colonne � %s � de la relation � %s � n'existe pas" -#: commands/functioncmds.c:1005 -#: commands/functioncmds.c:1105 -#: commands/functioncmds.c:1168 -#: commands/functioncmds.c:1319 -#: utils/adt/ruleutils.c:1635 +#: utils/adt/ruleutils.c:1696 commands/functioncmds.c:1007 +#: commands/functioncmds.c:1107 commands/functioncmds.c:1170 +#: commands/functioncmds.c:1321 #, c-format msgid "\"%s\" is an aggregate function" msgstr "� %s � est une fonction d'agr�gat" -#: commands/functioncmds.c:1007 -msgid "Use DROP AGGREGATE to drop aggregate functions." -msgstr "Utiliser DROP AGGREGATE pour supprimer les fonctions d'agr�gat." - -#: commands/functioncmds.c:1014 +#: utils/adt/ruleutils.c:2429 #, c-format -msgid "removing built-in function \"%s\"" -msgstr "suppression de la fonction interne � %s �" +msgid "rule \"%s\" has unsupported event type %d" +msgstr "la r�gle � %s � a un type d'�v�nement %d non support�" -#: commands/functioncmds.c:1107 -msgid "Use ALTER AGGREGATE to rename aggregate functions." -msgstr "Utiliser ALTER AGGREGATE pour renommer les fonctions d'agr�gat." +#: utils/adt/ruleutils.c:5891 utils/adt/ruleutils.c:5946 +#: utils/adt/ruleutils.c:5983 utils/adt/regproc.c:635 utils/adt/regproc.c:1485 +msgid "too many arguments" +msgstr "trop d'arguments" -#: commands/functioncmds.c:1170 -msgid "Use ALTER AGGREGATE to change owner of aggregate functions." -msgstr "Utiliser ALTER AGGREGATE pour changer le propri�taire des fonctions d'agr�gat." +#: utils/adt/pseudotypes.c:94 +msgid "cannot accept a value of type any" +msgstr "ne peut pas accepter une valeur de type any" -#: commands/functioncmds.c:1508 -#, c-format -msgid "source data type %s is a pseudo-type" -msgstr "le type de donn�es source %s est un pseudo-type" +#: utils/adt/pseudotypes.c:107 +msgid "cannot display a value of type any" +msgstr "ne peut pas afficher une valeur de type any" -#: commands/functioncmds.c:1514 -#, c-format -msgid "target data type %s is a pseudo-type" -msgstr "le type de donn�es cible %s est un pseudo-type" +#: utils/adt/pseudotypes.c:121 utils/adt/pseudotypes.c:149 +msgid "cannot accept a value of type anyarray" +msgstr "ne peut pas accepter une valeur de type anyarray" -#: commands/functioncmds.c:1551 -msgid "cast function must take one to three arguments" -msgstr "la fonction de conversion doit prendre de un � trois arguments" +#: utils/adt/pseudotypes.c:174 +msgid "cannot accept a value of type anyenum" +msgstr "ne peut pas accepter une valeur de type anyenum" -#: commands/functioncmds.c:1555 -msgid "argument of cast function must match or be binary-coercible from source data type" -msgstr "" -"l'argument de la fonction de conversion doit correspondre ou �tre binary-coercible\n" -"� partir du type de la donn�e source" +#: utils/adt/pseudotypes.c:252 +msgid "cannot accept a value of type trigger" +msgstr "ne peut pas accepter une valeur de type trigger" -#: commands/functioncmds.c:1559 -msgid "second argument of cast function must be type integer" -msgstr "le second argument de la fonction de conversion doit �tre de type entier" +#: utils/adt/pseudotypes.c:265 +msgid "cannot display a value of type trigger" +msgstr "ne peut pas afficher une valeur de type trigger" -#: commands/functioncmds.c:1563 -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" +#: utils/adt/pseudotypes.c:279 +msgid "cannot accept a value of type language_handler" +msgstr "ne peut pas accepter une valeur de type language_handler" -#: commands/functioncmds.c:1567 -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" +#: utils/adt/pseudotypes.c:292 +msgid "cannot display a value of type language_handler" +msgstr "ne peut pas afficher une valeur de type language_handler" -#: commands/functioncmds.c:1578 -msgid "cast function must not be volatile" -msgstr "la fonction de conversion ne doit pas �tre volatile" +#: utils/adt/pseudotypes.c:306 +msgid "cannot accept a value of type fdw_handler" +msgstr "ne peut pas accepter une valeur de type fdw_handler" -#: commands/functioncmds.c:1583 -msgid "cast function must not be an aggregate function" -msgstr "la fonction de conversion ne doit pas �tre une fonction d'agr�gat" +#: utils/adt/pseudotypes.c:319 +msgid "cannot display a value of type fdw_handler" +msgstr "ne peut pas afficher une valeur de type fdw_handler" -#: commands/functioncmds.c:1587 -msgid "cast function must not be a window function" -msgstr "la fonction de conversion ne doit pas �tre une fonction window" +#: utils/adt/pseudotypes.c:333 +msgid "cannot accept a value of type internal" +msgstr "ne peut pas accepter une valeur de type internal" -#: commands/functioncmds.c:1591 -msgid "cast function must not return a set" -msgstr "la fonction de conversion ne doit pas renvoyer un ensemble" +#: utils/adt/pseudotypes.c:346 +msgid "cannot display a value of type internal" +msgstr "ne peut pas afficher une valeur de type internal" -#: commands/functioncmds.c:1617 -msgid "must be superuser to create a cast WITHOUT FUNCTION" -msgstr "doit �tre super-utilisateur pour cr�er une fonction de conversion SANS FONCTION" +#: utils/adt/pseudotypes.c:360 +msgid "cannot accept a value of type opaque" +msgstr "ne peut pas accepter une valeur de type opaque" -#: commands/functioncmds.c:1632 -msgid "source and target data types are not physically compatible" -msgstr "les types de donn�es source et cible ne sont pas physiquement compatibles" +#: utils/adt/pseudotypes.c:373 +msgid "cannot display a value of type opaque" +msgstr "ne peut pas afficher une valeur de type opaque" -#: commands/functioncmds.c:1647 -msgid "composite data types are not binary-compatible" -msgstr "les types de donn�es composites ne sont pas compatibles binairement" +#: utils/adt/pseudotypes.c:387 +msgid "cannot accept a value of type anyelement" +msgstr "ne peut pas accepter une valeur de type anyelement" -#: commands/functioncmds.c:1653 -msgid "enum data types are not binary-compatible" -msgstr "les types de donn�es enum ne sont pas compatibles binairement" +#: utils/adt/pseudotypes.c:400 +msgid "cannot display a value of type anyelement" +msgstr "ne peut pas afficher une valeur de type anyelement" -#: commands/functioncmds.c:1659 -msgid "array data types are not binary-compatible" -msgstr "les types de donn�es tableau ne sont pas compatibles binairement" +#: utils/adt/pseudotypes.c:413 +msgid "cannot accept a value of type anynonarray" +msgstr "ne peut pas accepter une valeur de type anynonarray" -#: commands/functioncmds.c:1669 -msgid "source data type and target data type are the same" -msgstr "les types de donn�es source et cible sont identiques" +#: utils/adt/pseudotypes.c:426 +msgid "cannot display a value of type anynonarray" +msgstr "ne peut pas afficher une valeur de type anynonarray" -#: commands/functioncmds.c:1702 -#, 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�" +#: utils/adt/pseudotypes.c:439 +msgid "cannot accept a value of a shell type" +msgstr "ne peut pas accepter une valeur de type shell" -#: commands/functioncmds.c:1782 -#, 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" +#: utils/adt/pseudotypes.c:452 +msgid "cannot display a value of a shell type" +msgstr "ne peut pas afficher une valeur de type shell" -#: commands/functioncmds.c:1879 -#, c-format -msgid "function \"%s\" is already in schema \"%s\"" -msgstr "la fonction � %s � existe d�j� dans le sch�ma � %s �" +#: utils/adt/pseudotypes.c:474 utils/adt/pseudotypes.c:498 +msgid "cannot accept a value of type pg_node_tree" +msgstr "ne peut pas accepter une valeur de type pg_node_tree" -#: commands/functioncmds.c:1887 -#: commands/tablecmds.c:7884 -#: commands/typecmds.c:2794 -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" +#: utils/adt/char.c:169 +msgid "\"char\" out of range" +msgstr "� char � hors des limites" -#: commands/functioncmds.c:1893 -#: commands/tablecmds.c:7890 -#: commands/typecmds.c:2800 -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" +#: utils/adt/arrayfuncs.c:235 utils/adt/arrayfuncs.c:247 +msgid "missing dimension value" +msgstr "valeur de la dimension manquant" -#: commands/functioncmds.c:1902 -#, c-format -msgid "function \"%s\" already exists in schema \"%s\"" -msgstr "la fonction � %s � existe d�j� dans le sch�ma � %s �" +#: utils/adt/arrayfuncs.c:257 +msgid "missing \"]\" in array dimensions" +msgstr "� ] � dans les dimensions manquant" -#: commands/functioncmds.c:1974 -msgid "no inline code specified" -msgstr "aucun code en ligne sp�cifi�" +#: 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 "" +"la limite sup�rieure ne peut pas �tre plus petite que la limite inf�rieure" -#: commands/functioncmds.c:2022 -#, 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" +#: utils/adt/arrayfuncs.c:277 utils/adt/arrayfuncs.c:303 +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" -#: commands/indexcmds.c:162 -msgid "must specify at least one column" -msgstr "doit sp�cifier au moins une colonne" +#: utils/adt/arrayfuncs.c:291 +msgid "missing assignment operator" +msgstr "op�rateur d'affectation manquant" -#: commands/indexcmds.c:166 +#: utils/adt/arrayfuncs.c:308 utils/adt/arrayfuncs.c:314 +msgid "array dimensions incompatible with array literal" +msgstr "les dimensions du tableau sont incompatibles avec le tableau lit�ral" + +#: 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 "cannot use more than %d columns in an index" -msgstr "ne peut pas utiliser plus de %d colonnes dans un index" +msgid "malformed array literal: \"%s\"" +msgstr "tableau lit�ral mal form� : � %s �" -#: commands/indexcmds.c:196 -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" +#: utils/adt/arrayfuncs.c:542 executor/execQual.c:3121 +#: executor/execQual.c:3148 +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" -#: commands/indexcmds.c:256 -#: commands/tablecmds.c:455 -#: commands/tablecmds.c:7000 -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" +#: utils/adt/arrayfuncs.c:1249 +msgid "invalid array flags" +msgstr "drapeaux de tableau invalides" -#: commands/indexcmds.c:287 -msgid "substituting access method \"gist\" for obsolete method \"rtree\"" -msgstr "substitution de la m�thode d'acc�s obsol�te � rtree � par � gist � " +#: utils/adt/arrayfuncs.c:1257 +msgid "wrong element type" +msgstr "mauvais type d'�l�ment" -#: commands/indexcmds.c:304 -#, 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" +#: utils/adt/arrayfuncs.c:1411 utils/adt/rowtypes.c:572 libpq/pqformat.c:556 +#: libpq/pqformat.c:574 libpq/pqformat.c:595 +msgid "insufficient data left in message" +msgstr "donn�es insuffisantes laiss�es dans le message" -#: commands/indexcmds.c:309 +#: utils/adt/arrayfuncs.c:1447 #, 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" +msgid "improper binary format in array element %d" +msgstr "format binaire mal con�u dans l'�l�ment du tableau %d" -#: commands/indexcmds.c:314 -#, 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" +#: utils/adt/arrayfuncs.c:1903 +msgid "slices of fixed-length arrays not implemented" +msgstr "les morceaux des tableaux � longueur fixe ne sont pas impl�ment�s" -#: commands/indexcmds.c:347 -#: parser/parse_utilcmd.c:1212 -#: parser/parse_utilcmd.c:1298 -#, 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 �" +#: utils/adt/arrayfuncs.c:2076 utils/adt/arrayfuncs.c:2098 +#: utils/adt/arrayfuncs.c:2132 utils/adt/arrayfuncs.c:2418 +#: utils/adt/arrayfuncs.c:4916 utils/adt/arrayfuncs.c:4948 +#: utils/adt/arrayfuncs.c:4965 +msgid "wrong number of array subscripts" +msgstr "mauvais nombre d'indices du tableau" -#: commands/indexcmds.c:364 -msgid "primary keys cannot be expressions" -msgstr "les cl�s primaires ne peuvent pas �tre des expressions" +#: utils/adt/arrayfuncs.c:2081 utils/adt/arrayfuncs.c:2174 +#: utils/adt/arrayfuncs.c:2469 +msgid "array subscript out of range" +msgstr "indice du tableau en dehors de l'�chelle" + +#: utils/adt/arrayfuncs.c:2086 +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" + +#: utils/adt/arrayfuncs.c:2372 +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:2408 utils/adt/arrayfuncs.c:2495 +msgid "source array too small" +msgstr "tableau source trop petit" + +#: utils/adt/arrayfuncs.c:3050 +msgid "null array element not allowed in this context" +msgstr "�l�ment NULL de tableau interdit dans ce contexte" + +#: utils/adt/arrayfuncs.c:3153 utils/adt/arrayfuncs.c:3361 +#: utils/adt/arrayfuncs.c:3678 +msgid "cannot compare arrays of different element types" +msgstr "" +"ne peut pas comparer des tableaux ayant des types d'�l�ments diff�rents" -#: commands/indexcmds.c:394 -#: commands/indexcmds.c:903 -#: parser/parse_utilcmd.c:1445 +#: utils/adt/arrayfuncs.c:3176 utils/adt/arrayfuncs.c:3695 +#: utils/adt/rowtypes.c:1185 parser/parse_oper.c:225 #, c-format -msgid "column \"%s\" named in key does not exist" -msgstr "la colonne � %s � nomm�e dans la cl� n'existe pas" +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" -#: commands/indexcmds.c:468 +#: utils/adt/arrayfuncs.c:3378 utils/adt/rowtypes.c:950 +#: executor/execQual.c:4913 #, 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 �" +msgid "could not identify a comparison function for type %s" +msgstr "n'a pas pu identifier une fonction de comparaison pour le type %s" -#: commands/indexcmds.c:827 -msgid "cannot use subquery in index predicate" -msgstr "ne peut pas utiliser une sous-requ�te dans un pr�dicat d'index" +#: utils/adt/arrayfuncs.c:3563 +#, 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" -#: commands/indexcmds.c:831 -msgid "cannot use aggregate in index predicate" -msgstr "ne peut pas utiliser un agr�gat dans un pr�dicat d'index" +#: utils/adt/arrayfuncs.c:4814 utils/adt/arrayfuncs.c:4854 +msgid "dimension array or low bound array cannot be null" +msgstr "la dimension ou la limite basse du tableau ne peut pas �tre NULL" -#: commands/indexcmds.c:840 -msgid "functions in index predicate must be marked IMMUTABLE" -msgstr "les fonctions dans un pr�dicat d'index doivent �tre marqu�es comme IMMUTABLE" +#: utils/adt/arrayfuncs.c:4917 utils/adt/arrayfuncs.c:4949 +msgid "Dimension array must be one dimensional." +msgstr "le tableau doit avoir une seule dimension" -#: commands/indexcmds.c:942 -msgid "cannot use subquery in index expression" -msgstr "ne peut pas utiliser la sous-requ�te dans l'expression de l'index" +#: utils/adt/arrayfuncs.c:4922 utils/adt/arrayfuncs.c:4954 +msgid "wrong range of array subscripts" +msgstr "mauvais �chelle des indices du tableau" -#: commands/indexcmds.c:946 -msgid "cannot use aggregate function in index expression" -msgstr "ne peut pas utiliser la fonction d'agr�gat dans l'expression de l'index" +#: utils/adt/arrayfuncs.c:4923 utils/adt/arrayfuncs.c:4955 +msgid "Lower bound of dimension array must be one." +msgstr "La limite inf�rieure du tableau doit valoir un." -#: commands/indexcmds.c:956 -msgid "functions in index expression must be marked IMMUTABLE" +#: utils/adt/arrayfuncs.c:4928 utils/adt/arrayfuncs.c:4960 +msgid "dimension values cannot be null" +msgstr "les valeurs de dimension ne peuvent pas �tre NULL" + +#: utils/adt/arrayfuncs.c:4966 +msgid "Low bound array has different size than dimensions array." msgstr "" -"les fonctions dans l'expression de l'index doivent �tre marqu�es comme\n" -"IMMUTABLE" +"La limite basse du tableau a une taille diff�rentes des dimensions du " +"tableau." -#: commands/indexcmds.c:991 +#: utils/adt/tsquery.c:156 utils/adt/tsquery.c:392 +#: utils/adt/tsvector_parser.c:136 #, c-format -msgid "operator %s is not commutative" -msgstr "l'op�rateur %s n'est pas commutatif" - -#: commands/indexcmds.c:993 -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." +msgid "syntax error in tsquery: \"%s\"" +msgstr "erreur de syntaxe dans tsquery : � %s �" -#: commands/indexcmds.c:1019 +#: utils/adt/tsquery.c:177 #, 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 �" +msgid "no operand in tsquery: \"%s\"" +msgstr "aucun op�rande dans tsquery : � %s �" -#: commands/indexcmds.c:1022 -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." +#: utils/adt/tsquery.c:250 +#, c-format +msgid "value is too big in tsquery: \"%s\"" +msgstr "valeur trop importante dans tsquery : � %s �" -#: commands/indexcmds.c:1057 +#: utils/adt/tsquery.c:255 #, 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" +msgid "operand is too long in tsquery: \"%s\"" +msgstr "l'op�rande est trop long dans tsquery : � %s �" -#: commands/indexcmds.c:1062 +#: utils/adt/tsquery.c:283 #, 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" +msgid "word is too long in tsquery: \"%s\"" +msgstr "le mot est trop long dans tsquery : � %s �" -#: commands/indexcmds.c:1118 +#: utils/adt/tsquery.c:512 #, c-format -msgid "data type %s has no default operator class for access method \"%s\"" +msgid "text-search query doesn't contain lexemes: \"%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 �" +"la requ�te de recherche plein texte ne contient pas de lexemes : � %s �" -#: commands/indexcmds.c:1120 -msgid "You must specify an operator class for the index or define a default operator class for the data type." +#: utils/adt/tsquery.c:523 utils/adt/tsquery_util.c:341 +msgid "tsquery is too large" +msgstr "le champ tsquery est trop gros" + +#: utils/adt/misc.c:80 +msgid "must be superuser to signal other server processes" 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." +"doit �tre super-utilisateur pour envoyer un signal aux autres processus " +"serveur" -#: commands/indexcmds.c:1170 +#: utils/adt/misc.c:89 #, 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" +msgid "PID %d is not a PostgreSQL server process" +msgstr "le PID %d n'est pas un processus du serveur PostgreSQL" -#: commands/indexcmds.c:1260 +#: utils/adt/misc.c:102 storage/lmgr/proc.c:1087 #, 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" +msgid "could not send signal to process %d: %m" +msgstr "n'a pas pu envoyer le signal au processus %d : %m" + +#: utils/adt/misc.c:126 +msgid "must be superuser to signal the postmaster" +msgstr "doit �tre super-utilisateur pour envoyer un signal au postmaster" -#: commands/indexcmds.c:1639 +#: utils/adt/misc.c:131 #, c-format -msgid "table \"%s\" has no indexes" -msgstr "la table � %s � n'a pas d'index" +msgid "failed to send signal to postmaster: %m" +msgstr "n'a pas pu envoyer le signal au postmaster : %m" -#: commands/indexcmds.c:1667 -msgid "can only reindex the currently open database" -msgstr "peut seulement r�indexer la base de donn�es en cours" +#: utils/adt/misc.c:148 +msgid "must be superuser to rotate log files" +msgstr "" +"doit �tre super-utilisateur pour ex�cuter la rotation des journaux " +"applicatifs" -#: commands/indexcmds.c:1752 -#, c-format -msgid "table \"%s.%s\" was reindexed" -msgstr "la table � %s.%s � a �t� r�index�e" +#: utils/adt/misc.c:153 +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" -#: commands/lockcmds.c:93 +#: utils/adt/misc.c:195 +msgid "global tablespace never has databases" +msgstr "le tablespace global n'a jamais de bases de donn�es" + +#: utils/adt/misc.c:216 #, c-format -msgid "could not obtain lock on relation \"%s\"" -msgstr "n'a pas pu obtenir un verrou sur la relation � %s �" +msgid "%u is not a tablespace OID" +msgstr "%u n'est pas un OID de tablespace" -#: commands/lockcmds.c:98 +#: utils/adt/misc.c:352 +msgid "unreserved" +msgstr "non r�serv�" + +#: utils/adt/misc.c:356 +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:360 +msgid "reserved (can be function or type name)" +msgstr "r�serv� (peut �tre un nom de fonction ou de type)" + +#: utils/adt/misc.c:364 +msgid "reserved" +msgstr "r�serv�" + +#: 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:117 +msgid "requested length too large" +msgstr "longueur demand�e trop importante" + +#: utils/adt/oracle_compat.c:895 +msgid "requested character too large" +msgstr "caract�re demand� trop long" + +#: utils/adt/oracle_compat.c:941 utils/adt/oracle_compat.c:995 #, c-format -msgid "could not obtain lock on relation with OID %u" -msgstr "n'a pas pu obtenir un verrou sur la relation d'OID � %u �" +msgid "requested character too large for encoding: %d" +msgstr "caract�re demand� trop long pour l'encodage : %d" + +#: utils/adt/oracle_compat.c:988 +msgid "null character not permitted" +msgstr "caract�re nul interdit" + +#: utils/adt/tsvector_op.c:1173 +msgid "ts_stat query must return one tsvector column" +msgstr "la requ�te ts_stat doit renvoyer une colonne tsvector" -#: commands/opclasscmds.c:190 -#: commands/opclasscmds.c:701 +#: utils/adt/tsvector_op.c:1353 #, 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 �" +msgid "tsvector column \"%s\" does not exist" +msgstr "la colonne tsvector � %s � n'existe pas" -#: commands/opclasscmds.c:320 -msgid "must be superuser to create an operator class" -msgstr "doit �tre super-utilisateur pour cr�er une classe d'op�rateur" +#: utils/adt/tsvector_op.c:1359 +#, c-format +msgid "column \"%s\" is not of tsvector type" +msgstr "la colonne � %s � n'est pas de type tsvector" -#: commands/opclasscmds.c:403 -#: commands/opclasscmds.c:849 -#: commands/opclasscmds.c:971 +#: utils/adt/tsvector_op.c:1371 #, 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" +msgid "configuration column \"%s\" does not exist" +msgstr "la colonne de configuration � %s � n'existe pas" -#: commands/opclasscmds.c:446 -#: commands/opclasscmds.c:892 -#: commands/opclasscmds.c:986 +#: utils/adt/tsvector_op.c:1377 #, 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" +msgid "column \"%s\" is not of regconfig type" +msgstr "la colonne � %s � n'est pas de type regconfig" -#: commands/opclasscmds.c:476 -msgid "storage type specified more than once" -msgstr "type de stockage sp�cifi� plus d'une fois" +#: utils/adt/tsvector_op.c:1384 +#, c-format +msgid "configuration column \"%s\" must not be null" +msgstr "la colonne de configuration � %s � ne doit pas �tre NULL" -#: commands/opclasscmds.c:504 +#: utils/adt/tsvector_op.c:1397 #, c-format -msgid "storage type cannot be different from data type for access method \"%s\"" +msgid "text search configuration name \"%s\" must be schema-qualified" msgstr "" -"le type de stockage ne peut pas �tre diff�rent du type de donn�es pour la\n" -"m�thode d'acc�s � %s �" +"le nom de la configuration de la recherche plein texte � %s � doit �tre\n" +"qualifi� par son sch�ma" -#: commands/opclasscmds.c:520 +#: utils/adt/tsvector_op.c:1417 commands/tablecmds.c:1304 +#: commands/tablecmds.c:2079 commands/copy.c:3792 commands/indexcmds.c:823 +#: parser/parse_expr.c:766 #, 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 �" +msgid "column \"%s\" does not exist" +msgstr "la colonne � %s � n'existe pas" -#: commands/opclasscmds.c:548 +#: utils/adt/tsvector_op.c:1422 #, 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" +msgid "column \"%s\" is not of a character type" +msgstr "la colonne � %s � n'est pas de type caract�re" -#: commands/opclasscmds.c:551 +#: utils/adt/datetime.c:3531 utils/adt/datetime.c:3538 #, 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:687 -msgid "must be superuser to create an operator family" -msgstr "doit �tre super-utilisateur pour cr�er une famille d'op�rateur" +msgid "date/time field value out of range: \"%s\"" +msgstr "valeur du champ date/time en dehors des limites : � %s �" -#: commands/opclasscmds.c:802 -msgid "must be superuser to alter an operator family" -msgstr "doit �tre super-utilisateur pour modifier une famille d'op�rateur" +#: utils/adt/datetime.c:3540 +msgid "Perhaps you need a different \"datestyle\" setting." +msgstr "Peut-�tre avez-vous besoin d'un param�trage � datestyle � diff�rent." -#: commands/opclasscmds.c:865 -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" +#: utils/adt/datetime.c:3545 +#, c-format +msgid "interval field value out of range: \"%s\"" +msgstr "valeur du champ interval en dehors des limites : � %s �" -#: commands/opclasscmds.c:921 -msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY" -msgstr "STORAGE ne peut pas �tre sp�cifi� dans ALTER OPERATOR FAMILY" +#: utils/adt/datetime.c:3551 +#, c-format +msgid "time zone displacement out of range: \"%s\"" +msgstr "d�placement du fuseau horaire en dehors des limites : � %s �" -#: commands/opclasscmds.c:1037 -msgid "one or two argument types must be specified" -msgstr "un ou deux types d'argument doit �tre sp�cifi�" +#: utils/adt/genfile.c:60 +msgid "reference to parent directory (\"..\") not allowed" +msgstr "r�f�rence non autoris�e au r�pertoire parent (� .. �)" -#: commands/opclasscmds.c:1063 -msgid "index operators must be binary" -msgstr "les op�rateurs d'index doivent �tre binaires" +#: utils/adt/genfile.c:71 +msgid "absolute path not allowed" +msgstr "chemin absolu non autoris�" -#: commands/opclasscmds.c:1067 -msgid "index operators must return boolean" -msgstr "les op�rateurs d'index doivent renvoyer un bool�en" +#: utils/adt/genfile.c:76 +msgid "path must be in or below the current directory" +msgstr "le chemin doit �tre dans ou en-dessous du r�pertoire courant" -#: commands/opclasscmds.c:1105 -msgid "btree procedures must have two arguments" -msgstr "les proc�dures btree doivent avoir deux arguments" +#: utils/adt/genfile.c:122 commands/copy.c:2193 +#, 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/opclasscmds.c:1109 -msgid "btree procedures must return integer" -msgstr "les proc�dures btree doivent renvoyer un entier" +#: utils/adt/genfile.c:129 +#, c-format +msgid "could not seek in file \"%s\": %m" +msgstr "n'a pas pu parcourir le fichier � %s � : %m" -#: commands/opclasscmds.c:1124 -msgid "hash procedures must have one argument" -msgstr "les proc�dures de hachage doivent avoir un argument" +#: utils/adt/genfile.c:138 access/transam/xlog.c:2543 +#: access/transam/xlog.c:4494 access/transam/xlog.c:9363 +#: access/transam/xlog.c:9376 access/transam/xlog.c:9910 +#: access/transam/xlog.c:9945 storage/file/copydir.c:186 +#, c-format +msgid "could not read file \"%s\": %m" +msgstr "n'a pas pu lire le fichier � %s � : %m" -#: commands/opclasscmds.c:1128 -msgid "hash procedures must return integer" -msgstr "les proc�dures de hachage doivent renvoyer un entier" +#: 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 "doit �tre super-utilisateur pour lire des fichiers" -#: commands/opclasscmds.c:1153 -msgid "associated data types must be specified for index support procedure" +#: utils/adt/genfile.c:186 utils/adt/genfile.c:231 +msgid "requested length cannot be negative" +msgstr "la longueur demand�e ne peut pas �tre n�gative" + +#: utils/adt/genfile.c:272 +msgid "must be superuser to get file information" msgstr "" -"les types de donn�es associ�s doivent �tre indiqu�s pour la proc�dure de\n" -"support de l'index" +"doit �tre super-utilisateur pour obtenir des informations sur le fichier" -#: commands/opclasscmds.c:1179 -#, 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" +#: utils/adt/genfile.c:336 +msgid "must be superuser to get directory listings" +msgstr "doit �tre super-utilisateur pour obtenir le contenu du r�pertoire" -#: commands/opclasscmds.c:1186 -#, 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" +#: utils/adt/tsquery_rewrite.c:296 +msgid "ts_rewrite query must return two tsquery columns" +msgstr "la requ�te ts_rewrite doit renvoyer deux colonnes tsquery" -#: commands/opclasscmds.c:1234 -#, 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 �" +#: utils/adt/tsquery_cleanup.c:285 +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�" -#: commands/opclasscmds.c:1334 +#: utils/adt/uuid.c:128 #, 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 �" +msgid "invalid input syntax for uuid: \"%s\"" +msgstr "syntaxe invalide en entr�e pour l'uuid : � %s �" -#: commands/opclasscmds.c:1421 -#, 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 �" +#: utils/adt/rowtypes.c:99 utils/adt/rowtypes.c:488 +msgid "input of anonymous composite types is not implemented" +msgstr "l'ajout de colonnes ayant un type compos� n'est pas impl�ment�" -#: commands/opclasscmds.c:1461 +#: 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 "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 �" +msgid "malformed record literal: \"%s\"" +msgstr "enregistrement lit�ral invalide : � %s �" -#: commands/opclasscmds.c:1768 -#, c-format -msgid "operator class \"%s\" for access method \"%s\" already exists in schema \"%s\"" -msgstr "" -"la classe d'op�rateur � %s � de la m�thode d'acc�s � %s � existe d�j� dans\n" -"le sch�ma � %s �" +#: utils/adt/rowtypes.c:153 +msgid "Missing left parenthesis." +msgstr "Parenth�se gauche manquante" -#: commands/opclasscmds.c:1862 -#, c-format -msgid "operator family \"%s\" for access method \"%s\" already exists in schema \"%s\"" -msgstr "" -"la famille d'op�rateur � %s � de la m�thode d'acc�s � %s � existe d�j� dans\n" -"le sch�ma � %s �" +#: utils/adt/rowtypes.c:181 +msgid "Too few columns." +msgstr "Pas assez de colonnes." -#: commands/operatorcmds.c:98 -msgid "=> is deprecated as an operator name" -msgstr "=> est un nom d'op�rateur obsol�te" +#: utils/adt/rowtypes.c:205 utils/adt/rowtypes.c:213 +msgid "Unexpected end of input." +msgstr "Fin de l'entr�e inattendue." -#: commands/operatorcmds.c:99 -msgid "This name may be disallowed altogether in future versions of PostgreSQL." -msgstr "Ce nom pourrait �tre interdit dans les prochaines versions de PostgreSQL." +#: utils/adt/rowtypes.c:264 +msgid "Too many columns." +msgstr "Trop de colonnes." -#: commands/operatorcmds.c:120 -#: commands/operatorcmds.c:128 -msgid "SETOF type not allowed for operator argument" -msgstr "type SETOF non autoris� pour l'argument de l'op�rateur" +#: utils/adt/rowtypes.c:272 +msgid "Junk after right parenthesis." +msgstr "Probl�me apr�s la parenth�se droite." -#: commands/operatorcmds.c:156 +#: utils/adt/rowtypes.c:537 #, c-format -msgid "operator attribute \"%s\" not recognized" -msgstr "l'attribut � %s � de l'op�rateur n'est pas reconnu" - -#: commands/operatorcmds.c:166 -msgid "operator procedure must be specified" -msgstr "la proc�dure de l'op�rateur doit �tre sp�cifi�e" - -#: commands/operatorcmds.c:177 -msgid "at least one of leftarg or rightarg must be specified" -msgstr "au moins un des arguments (le gauche ou le droit) doit �tre sp�cifi�" +msgid "wrong number of columns: %d, expected %d" +msgstr "mauvais nombre de colonnes : %d, alors que %d attendu" -#: commands/operatorcmds.c:226 +#: utils/adt/rowtypes.c:564 #, 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" -"� float8 �" +msgid "wrong data type: %u, expected %u" +msgstr "mauvais type de donn�es : %u, alors que %u attendu" -#: commands/operatorcmds.c:265 +#: utils/adt/rowtypes.c:625 #, c-format -msgid "join estimator function %s must return type \"float8\"" -msgstr "" -"la fonction d'estimation de la jointure, de nom %s, doit renvoyer le type\n" -"� float8 �" +msgid "improper binary format in record column %d" +msgstr "format binaire invalide dans l'enregistrement de la colonne %d" -#: commands/operatorcmds.c:316 +#: utils/adt/rowtypes.c:925 utils/adt/rowtypes.c:1160 #, c-format -msgid "operator %s does not exist, skipping" -msgstr "l'op�rateur %s n'existe pas, poursuite du traitement" +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" -#: commands/portalcmds.c:61 -#: commands/portalcmds.c:160 -#: commands/portalcmds.c:212 -msgid "invalid cursor name: must not be empty" -msgstr "nom de curseur invalide : il ne doit pas �tre vide" +#: utils/adt/rowtypes.c:1011 utils/adt/rowtypes.c:1231 +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" -#: commands/portalcmds.c:168 -#: commands/portalcmds.c:222 -#: executor/execCurrent.c:66 -#: utils/adt/xml.c:2044 -#: utils/adt/xml.c:2208 +#: utils/adt/nabstime.c:160 #, c-format -msgid "cursor \"%s\" does not exist" -msgstr "le curseur � %s � n'existe pas" +msgid "invalid time zone name: \"%s\"" +msgstr "nom du fuseau horaire invalide : � %s �" -#: commands/portalcmds.c:329 -#: tcop/pquery.c:748 -#: tcop/pquery.c:1371 -#, c-format -msgid "portal \"%s\" cannot be run" -msgstr "le portail � %s � ne peut pas �tre ex�cut� de nouveau" +#: utils/adt/nabstime.c:506 utils/adt/nabstime.c:579 +msgid "cannot convert abstime \"invalid\" to timestamp" +msgstr "ne peut pas convertir un abstime � invalid � en timestamp" -#: commands/portalcmds.c:402 -msgid "could not reposition held cursor" -msgstr "n'a pas pu repositionner le curseur d�tenu" +#: utils/adt/nabstime.c:806 +msgid "invalid status in external \"tinterval\" value" +msgstr "statut invalide dans la valeur externe � tinterval �" -#: commands/prepare.c:70 -msgid "invalid statement name: must not be empty" -msgstr "nom de l'instruction invalide : ne doit pas �tre vide" +#: utils/adt/nabstime.c:880 +msgid "cannot convert reltime \"invalid\" to interval" +msgstr "ne peut pas convertir reltime � invalid � en interval" -#: commands/prepare.c:121 -#: tcop/postgres.c:1307 -#: parser/parse_param.c:293 +#: utils/adt/nabstime.c:1575 #, 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" - -#: commands/prepare.c:139 -msgid "utility statements cannot be prepared" -msgstr "les instructions utilitaires ne peuvent pas �tre pr�par�es" - -#: commands/prepare.c:239 -#: commands/prepare.c:246 -#: commands/prepare.c:702 -msgid "prepared statement is not a SELECT" -msgstr "l'instruction pr�par�e n'est pas un SELECT" +msgid "invalid input syntax for type tinterval: \"%s\"" +msgstr "syntaxe en entr�e invalide pour le type tinterval : � %s �" -#: commands/prepare.c:313 +#: utils/adt/numutils.c:75 #, c-format -msgid "wrong number of parameters for prepared statement \"%s\"" -msgstr "mauvais nombre de param�tres pour l'instruction pr�par�e � %s �" +msgid "value \"%s\" is out of range for type integer" +msgstr "la valeur � %s � est en dehors des limites du type integer" -#: commands/prepare.c:315 +#: utils/adt/numutils.c:81 #, c-format -msgid "Expected %d parameters but got %d." -msgstr "%d param�tres attendus mais %d re�us." - -#: commands/prepare.c:344 -msgid "cannot use subquery in EXECUTE parameter" -msgstr "ne peut pas utiliser les sous-requ�tes dans le param�tre EXECUTE" - -#: commands/prepare.c:348 -msgid "cannot use aggregate function in EXECUTE parameter" -msgstr "ne peut pas utiliser la fonction d'agr�gat dans le param�tre EXECUTE" - -#: commands/prepare.c:352 -msgid "cannot use window function in EXECUTE parameter" -msgstr "ne peut pas utiliser une fonction window dans le param�tre EXECUTE" +msgid "value \"%s\" is out of range for type smallint" +msgstr "la valeur � %s � est en dehors des limites du type smallint" -#: commands/prepare.c:365 +#: utils/adt/numutils.c:87 #, 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" -"type %s attendu" +msgid "value \"%s\" is out of range for 8-bit integer" +msgstr "la valeur � %s � est en dehors des limites des entiers sur 8 bits" -#: commands/prepare.c:463 +#: utils/adt/pg_locale.c:953 #, c-format -msgid "prepared statement \"%s\" already exists" -msgstr "l'instruction pr�par�e � %s � existe d�j�" +msgid "could not create locale \"%s\": %m" +msgstr "n'a pas pu cr�er la locale � %s � : %m" -#: commands/prepare.c:521 +#: utils/adt/pg_locale.c:956 #, c-format -msgid "prepared statement \"%s\" does not exist" -msgstr "l'instruction pr�par�e � %s � n'existe pas" +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 �." -#: commands/prepare.c:747 -#: executor/execQual.c:1615 -#: executor/execQual.c:1640 -#: executor/execQual.c:2001 -#: executor/execQual.c:5100 -#: executor/functions.c:652 -#: foreign/foreign.c:271 -#: utils/mmgr/portalmem.c:937 -#: utils/fmgr/funcapi.c:60 -msgid "set-valued function called in context that cannot accept a set" +#: utils/adt/pg_locale.c:1043 +msgid "" +"collations with different collate and ctype values are not supported on this " +"platform" msgstr "" -"la fonction avec set-value a �t� appel� dans un contexte qui n'accepte pas\n" -"un ensemble" +"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" -#: commands/prepare.c:751 -#: foreign/foreign.c:276 -#: utils/mmgr/portalmem.c:941 -msgid "materialize mode required, but it is not allowed in this context" -msgstr "mode mat�rialis� requis mais interdit dans ce contexte" +#: utils/adt/pg_locale.c:1058 +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" -#: commands/proclang.c:92 -msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters" +#: utils/adt/pg_locale.c:1229 +msgid "invalid multibyte character for locale" +msgstr "caract�re multi-octets invalide pour la locale" + +#: utils/adt/pg_locale.c:1230 +msgid "" +"The server's LC_CTYPE locale is probably incompatible with the database " +"encoding." msgstr "" -"utilisation des informations de pg_pltemplate au lieu des param�tres de\n" -"CREATE LANGUAGE" +"La locale LC_CTYPE du serveur est probablement incompatible avec l'encodage\n" +"de la base de donn�es." -#: commands/proclang.c:102 +#: utils/adt/encode.c:55 utils/adt/encode.c:91 #, c-format -msgid "must be superuser to create procedural language \"%s\"" -msgstr "doit �tre super-utilisateur pour cr�er le langage de proc�dures � %s �" +msgid "unrecognized encoding: \"%s\"" +msgstr "encodage non reconnu : � %s �" -#: commands/proclang.c:122 -#: commands/proclang.c:278 +#: utils/adt/encode.c:150 #, c-format -msgid "function %s must return type \"language_handler\"" -msgstr "la fonction %s doit renvoyer le type � language_handler �" +msgid "invalid hexadecimal digit: \"%c\"" +msgstr "chiffre hexad�cimal invalide : � %c �" -#: commands/proclang.c:242 -#, c-format -msgid "unsupported language \"%s\"" -msgstr "langage non support� � %s �" +#: utils/adt/encode.c:178 +msgid "invalid hexadecimal data: odd number of digits" +msgstr "donn�e hexad�cimale invalide : nombre pair de chiffres" -#: commands/proclang.c:244 -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." +#: utils/adt/encode.c:295 +msgid "unexpected \"=\"" +msgstr "� = � inattendu" -#: commands/proclang.c:252 -msgid "must be superuser to create custom procedural language" -msgstr "doit �tre super-utilisateur pour cr�er un langage de proc�dures personnalis�" +#: utils/adt/encode.c:307 +msgid "invalid symbol" +msgstr "symbole invalide" -#: commands/proclang.c:271 -#, c-format -msgid "changing return type of function %s from \"opaque\" to \"language_handler\"" -msgstr "" -"changement du type du code retour de la fonction %s d'� opaque � �\n" -"� language_handler �" +#: utils/adt/encode.c:327 +msgid "invalid end sequence" +msgstr "fin de s�quence invalide" -#: commands/proclang.c:356 -#: commands/proclang.c:606 +#: utils/adt/oid.c:43 utils/adt/oid.c:57 utils/adt/oid.c:63 utils/adt/oid.c:84 #, c-format -msgid "language \"%s\" already exists" -msgstr "le langage � %s � existe d�j�" +msgid "invalid input syntax for type oid: \"%s\"" +msgstr "syntaxe invalide en entr�e pour le type oid : � %s �" -#: commands/proclang.c:534 +#: utils/adt/oid.c:69 utils/adt/oid.c:107 #, c-format -msgid "language \"%s\" does not exist, skipping" -msgstr "le langage � %s � n'existe pas, poursuite du traitement" +msgid "value \"%s\" is out of range for type oid" +msgstr "la valeur � %s � est en dehors des limites pour le type oid" -#: commands/schemacmds.c:82 -#: commands/schemacmds.c:288 -#, c-format -msgid "unacceptable schema name \"%s\"" -msgstr "nom de sch�ma � %s � inacceptable" +#: utils/adt/oid.c:287 +msgid "invalid oidvector data" +msgstr "donn�e oidvector invalide" -#: commands/schemacmds.c:83 -#: commands/schemacmds.c:289 -msgid "The prefix \"pg_\" is reserved for system schemas." -msgstr "Le pr�fixe � pg_ � est r�serv� pour les sch�mas syst�me." - -#: commands/schemacmds.c:196 +#: utils/adt/acl.c:253 #, c-format -msgid "schema \"%s\" does not exist, skipping" -msgstr "le sch�ma � %s � n'existe pas, poursuite du traitement" +msgid "unrecognized key word: \"%s\"" +msgstr "mot cl� non reconnu : � %s �" -#: commands/sequence.c:553 -#, c-format -msgid "nextval: reached maximum value of sequence \"%s\" (%s)" -msgstr "nextval : valeur maximale de la s�quence � %s � (%s) atteinte" +#: utils/adt/acl.c:254 +msgid "ACL key word must be \"group\" or \"user\"." +msgstr "le mot cl� ACL doit �tre soit � group � soit � user �." -#: commands/sequence.c:576 -#, c-format -msgid "nextval: reached minimum value of sequence \"%s\" (%s)" -msgstr "nextval : valeur minimale de la s�quence � %s � (%s) atteinte" +#: utils/adt/acl.c:259 +msgid "missing name" +msgstr "nom manquant" -#: commands/sequence.c:674 -#, 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" +#: utils/adt/acl.c:260 +msgid "A name must follow the \"group\" or \"user\" key word." +msgstr "Un nom doit suivre le mot cl� � group � ou � user �." -#: commands/sequence.c:693 -#: commands/sequence.c:699 -msgid "lastval is not yet defined in this session" -msgstr "la derni�re valeur (lastval) n'est pas encore d�finie dans cette session" +#: utils/adt/acl.c:266 +msgid "missing \"=\" sign" +msgstr "signe � = � manquant" -#: commands/sequence.c:767 +#: utils/adt/acl.c:319 #, 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)" - -#: commands/sequence.c:936 -#: lib/stringinfo.c:266 -#: libpq/auth.c:1020 -#: libpq/auth.c:1374 -#: libpq/auth.c:1442 -#: libpq/auth.c:2016 -#: storage/buffer/buf_init.c:154 -#: storage/buffer/localbuf.c:348 -#: storage/file/fd.c:356 -#: storage/file/fd.c:739 -#: storage/file/fd.c:857 -#: storage/ipc/procarray.c:786 -#: storage/ipc/procarray.c:1176 -#: storage/ipc/procarray.c:1183 -#: storage/ipc/procarray.c:1418 -#: storage/ipc/procarray.c:1812 -#: postmaster/postmaster.c:1973 -#: postmaster/postmaster.c:2006 -#: postmaster/postmaster.c:3188 -#: postmaster/postmaster.c:3870 -#: postmaster/postmaster.c:3951 -#: postmaster/postmaster.c:4539 -#: utils/mmgr/aset.c:408 -#: utils/mmgr/aset.c:587 -#: utils/mmgr/aset.c:770 -#: utils/mmgr/aset.c:976 -#: utils/adt/formatting.c:1491 -#: utils/adt/formatting.c:1547 -#: utils/adt/formatting.c:1604 -#: utils/adt/regexp.c:205 -#: utils/adt/varlena.c:3246 -#: utils/adt/varlena.c:3267 -#: utils/misc/guc.c:2915 -#: utils/misc/guc.c:2928 -#: utils/misc/guc.c:2941 -#: utils/fmgr/dfmgr.c:224 -#: utils/hash/dynahash.c:363 -#: utils/hash/dynahash.c:435 -#: utils/hash/dynahash.c:929 -#: utils/init/miscinit.c:149 -#: utils/init/miscinit.c:170 -#: utils/init/miscinit.c:180 -#: utils/mb/mbutils.c:334 -#: utils/mb/mbutils.c:606 -msgid "out of memory" -msgstr "m�moire �puis�e" - -#: commands/sequence.c:1096 -msgid "INCREMENT must not be zero" -msgstr "la valeur INCREMENT ne doit pas �tre z�ro" +msgid "invalid mode character: must be one of \"%s\"" +msgstr "mode caract�re invalide : doit faire partie de � %s �" -#: commands/sequence.c:1142 -#, c-format -msgid "MINVALUE (%s) must be less than MAXVALUE (%s)" -msgstr "la valeur MINVALUE (%s) doit �tre moindre que la valeur MAXVALUE (%s)" +#: utils/adt/acl.c:341 +msgid "a name must follow the \"/\" sign" +msgstr "un nom doit suivre le signe � / �" -#: commands/sequence.c:1167 +#: utils/adt/acl.c:349 #, 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)" +msgid "defaulting grantor to user ID %u" +msgstr "" +"par d�faut, le � donneur de droits � devient l'utilisateur d'identifiant %u" -#: commands/sequence.c:1179 -#, 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)" +#: utils/adt/acl.c:540 +msgid "ACL array contains wrong data type" +msgstr "le tableau ACL contient un type de donn�es incorrect" -#: commands/sequence.c:1210 -#, 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)" +#: utils/adt/acl.c:544 +msgid "ACL arrays must be one-dimensional" +msgstr "les tableaux d'ACL doivent avoir une dimension" -#: commands/sequence.c:1222 -#, 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)" +#: utils/adt/acl.c:548 +msgid "ACL arrays must not contain null values" +msgstr "les tableaux d'ACL ne doivent pas contenir de valeurs NULL" -#: commands/sequence.c:1237 -#, c-format -msgid "CACHE (%s) must be greater than zero" -msgstr "la valeur CACHE (%s) doit �tre plus grande que z�ro" +#: utils/adt/acl.c:572 +msgid "extra garbage at the end of the ACL specification" +msgstr "donn�es superflues � la fin de la sp�cification de l'ACL" -#: commands/sequence.c:1268 -msgid "invalid OWNED BY option" -msgstr "option OWNED BY invalide" +#: utils/adt/acl.c:1129 +msgid "grant options cannot be granted back to your own grantor" +msgstr "les options grant ne peuvent pas �tre rendues � votre propre donateur" -#: commands/sequence.c:1269 -msgid "Specify OWNED BY table.column or OWNED BY NONE." -msgstr "Indiquer OWNED BY table.colonne ou OWNED BY NONE." +#: utils/adt/acl.c:1190 +msgid "dependent privileges exist" +msgstr "des privil�ges d�pendants existent" -#: commands/sequence.c:1291 -#: commands/tablecmds.c:4811 -#, c-format -msgid "referenced relation \"%s\" is not a table" -msgstr "la relation r�f�renc�e � %s � n'est pas une table" +#: utils/adt/acl.c:1191 +msgid "Use CASCADE to revoke them too." +msgstr "Utilisez CASCADE pour les r�voquer aussi." -#: commands/sequence.c:1298 -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" +#: utils/adt/acl.c:1470 +msgid "aclinsert is no longer supported" +msgstr "aclinsert n'est plus support�" -#: commands/sequence.c:1302 -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" +#: utils/adt/acl.c:1480 +msgid "aclremove is no longer supported" +msgstr "aclremove n'est plus support�" -#: commands/tablecmds.c:192 +#: utils/adt/acl.c:1566 utils/adt/acl.c:1620 #, c-format -msgid "table \"%s\" does not exist" -msgstr "la table � %s � n'existe pas" +msgid "unrecognized privilege type: \"%s\"" +msgstr "type de droit non reconnu : � %s �" -#: commands/tablecmds.c:193 +#: 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 +#: commands/tablecmds.c:210 commands/tablecmds.c:2178 +#: commands/tablecmds.c:2423 commands/tablecmds.c:9073 +#: commands/sequence.c:1032 catalog/aclchk.c:1692 catalog/objectaddress.c:398 #, c-format -msgid "table \"%s\" does not exist, skipping" -msgstr "la table � %s � n'existe pas, poursuite du traitement" - -#: commands/tablecmds.c:195 -msgid "Use DROP TABLE to remove a table." -msgstr "Utilisez DROP TABLE pour supprimer une table." +msgid "\"%s\" is not a sequence" +msgstr "� %s � n'est pas une s�quence" -#: commands/tablecmds.c:198 +#: utils/adt/acl.c:3359 utils/adt/regproc.c:118 utils/adt/regproc.c:139 +#: utils/adt/regproc.c:289 #, c-format -msgid "sequence \"%s\" does not exist" -msgstr "la s�quence � %s � n'existe pas" +msgid "function \"%s\" does not exist" +msgstr "la fonction � %s � n'existe pas" -#: commands/tablecmds.c:199 +#: utils/adt/acl.c:4613 #, c-format -msgid "sequence \"%s\" does not exist, skipping" -msgstr "la s�quence � %s � n'existe pas, poursuite du traitement" - -#: commands/tablecmds.c:201 -msgid "Use DROP SEQUENCE to remove a sequence." -msgstr "Utilisez DROP SEQUENCE pour supprimer une s�quence." +msgid "must be member of role \"%s\"" +msgstr "doit �tre un membre du r�le � %s �" -#: commands/tablecmds.c:204 +#: utils/adt/enum.c:49 utils/adt/enum.c:59 utils/adt/enum.c:118 +#: utils/adt/enum.c:128 #, c-format -msgid "view \"%s\" does not exist" -msgstr "la vue � %s � n'existe pas" +msgid "invalid input value for enum %s: \"%s\"" +msgstr "valeur en entr�e invalide pour le enum %s : � %s �" -#: commands/tablecmds.c:205 +#: utils/adt/enum.c:86 utils/adt/enum.c:153 utils/adt/enum.c:203 #, c-format -msgid "view \"%s\" does not exist, skipping" -msgstr "la vue � %s � n'existe pas, poursuite du traitement" +msgid "invalid internal value for enum: %u" +msgstr "valeur interne invalide pour le enum : %u" -#: commands/tablecmds.c:207 -msgid "Use DROP VIEW to remove a view." -msgstr "Utilisez DROP VIEW pour supprimer une vue." +#: utils/adt/enum.c:362 utils/adt/enum.c:391 utils/adt/enum.c:431 +#: utils/adt/enum.c:451 +msgid "could not determine actual enum type" +msgstr "n'a pas pu d�terminer le type enum actuel" -#: commands/tablecmds.c:210 +#: utils/adt/enum.c:370 utils/adt/enum.c:399 #, c-format -msgid "index \"%s\" does not exist" -msgstr "l'index � %s � n'existe pas" +msgid "enum %s contains no values" +msgstr "l'�num�ration � %s � ne contient aucune valeur" -#: commands/tablecmds.c:211 +#: 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:2886 +msgid "MATCH PARTIAL not yet implemented" +msgstr "MATCH PARTIAL non impl�ment�" + +#: utils/adt/ri_triggers.c:409 utils/adt/ri_triggers.c:2841 +#: utils/adt/ri_triggers.c:3535 utils/adt/ri_triggers.c:3567 #, c-format -msgid "index \"%s\" does not exist, skipping" -msgstr "l'index � %s � n'existe pas, poursuite du traitement" +msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\"" +msgstr "" +"une instruction insert ou update sur la table � %s � viole la contrainte de " +"cl�\n" +"�trang�re � %s �" -#: commands/tablecmds.c:213 -msgid "Use DROP INDEX to remove an index." -msgstr "Utilisez DROP INDEX pour supprimer un index." +#: utils/adt/ri_triggers.c:412 utils/adt/ri_triggers.c:2844 +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." -#: commands/tablecmds.c:217 -#: commands/typecmds.c:656 +#: utils/adt/ri_triggers.c:3080 commands/constraint.c:59 #, c-format -msgid "type \"%s\" does not exist, skipping" -msgstr "le type � %s � n'existe pas, poursuite du traitement" +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/tablecmds.c:218 +#: utils/adt/ri_triggers.c:3089 commands/constraint.c:66 #, c-format -msgid "\"%s\" is not a type" -msgstr "� %s � n'est pas un type" +msgid "function \"%s\" must be fired AFTER ROW" +msgstr "la fonction � %s � doit �tre ex�cut�e pour l'instruction AFTER ROW" -#: commands/tablecmds.c:219 -msgid "Use DROP TYPE to remove a type." -msgstr "Utilisez DROP TYPE pour supprimer un type." +#: utils/adt/ri_triggers.c:3097 +#, c-format +msgid "function \"%s\" must be fired for INSERT" +msgstr "la fonction � %s � doit �tre ex�cut�e pour l'instruction INSERT" -#: commands/tablecmds.c:390 -#: executor/execMain.c:2155 -msgid "ON COMMIT can only be used on temporary tables" -msgstr "ON COMMIT peut seulement �tre utilis� sur des tables temporaires" +#: utils/adt/ri_triggers.c:3103 +#, c-format +msgid "function \"%s\" must be fired for UPDATE" +msgstr "la fonction � %s � doit �tre ex�cut�e pour l'instruction UPDATE" -#: commands/tablecmds.c:400 -#: executor/execMain.c:2165 -msgid "cannot create temporary table within security-restricted operation" +#: utils/adt/ri_triggers.c:3110 commands/constraint.c:80 +#, c-format +msgid "function \"%s\" must be fired for INSERT or UPDATE" msgstr "" -"ne peut pas cr�er une table temporaire � l'int�rieur d'une fonction\n" -"restreinte pour s�curit�" +"la fonction � %s � doit �tre ex�cut�e pour les instructions INSERT ou UPDATE" -#: commands/tablecmds.c:777 -#: commands/tablecmds.c:1109 -#: commands/tablecmds.c:2001 -#: commands/tablecmds.c:3367 -#: commands/tablecmds.c:3396 -#: commands/tablecmds.c:4817 -#: commands/trigger.c:155 -#: commands/trigger.c:1069 -#: tcop/utility.c:92 -#: rewrite/rewriteDefine.c:258 +#: utils/adt/ri_triggers.c:3117 #, c-format -msgid "permission denied: \"%s\" is a system catalog" -msgstr "droit refus� : � %s � est un catalogue syst�me" +msgid "function \"%s\" must be fired for DELETE" +msgstr "la fonction � %s � doit �tre ex�cut�e pour l'instruction DELETE" -#: commands/tablecmds.c:889 +#: utils/adt/ri_triggers.c:3146 #, c-format -msgid "truncate cascades to table \"%s\"" -msgstr "TRUNCATE cascade sur la table � %s �" +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 �" -#: commands/tablecmds.c:1119 -msgid "cannot truncate temporary tables of other sessions" -msgstr "ne peut pas tronquer les tables temporaires des autres sessions" +#: utils/adt/ri_triggers.c:3148 +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." -#: commands/tablecmds.c:1314 -#: parser/parse_utilcmd.c:590 -#: parser/parse_utilcmd.c:1408 +#: utils/adt/ri_triggers.c:3502 #, c-format -msgid "inherited relation \"%s\" is not a table" -msgstr "la relation h�rit�e � %s � n'est pas une table" +msgid "" +"referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave " +"unexpected result" +msgstr "" +"la requ�te d'int�grit� r�f�rentielle sur � %s � � partir de la contrainte � " +"%s �\n" +"sur � %s � donne des r�sultats inattendus" -#: commands/tablecmds.c:1320 -#: commands/tablecmds.c:7228 -#, c-format -msgid "cannot inherit from temporary relation \"%s\"" -msgstr "ine peut pas h�riter � partir d'une relation temporaire � %s �" +#: utils/adt/ri_triggers.c:3506 +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." -#: commands/tablecmds.c:1337 -#: commands/tablecmds.c:7256 +#: utils/adt/ri_triggers.c:3537 #, c-format -msgid "relation \"%s\" would be inherited from more than once" -msgstr "la relation � %s � serait h�rit�e plus d'une fois" +msgid "No rows were found in \"%s\"." +msgstr "Aucune ligne trouv�e dans � %s �." -#: commands/tablecmds.c:1392 +#: utils/adt/ri_triggers.c:3569 #, c-format -msgid "merging multiple inherited definitions of column \"%s\"" -msgstr "assemblage de plusieurs d�finitions d'h�ritage pour la colonne � %s �" +msgid "Key (%s)=(%s) is not present in table \"%s\"." +msgstr "La cl� (%s)=(%s) n'est pas pr�sente dans la table � %s �." -#: commands/tablecmds.c:1400 +#: utils/adt/ri_triggers.c:3575 #, c-format -msgid "inherited column \"%s\" has a type conflict" -msgstr "la colonne h�rit�e � %s � a un conflit de type" +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 �" -#: commands/tablecmds.c:1402 -#: commands/tablecmds.c:1414 -#: commands/tablecmds.c:1574 -#: commands/tablecmds.c:1586 -#: parser/parse_coerce.c:1438 -#: parser/parse_coerce.c:1457 -#: parser/parse_coerce.c:1502 -#: parser/parse_param.c:214 +#: utils/adt/ri_triggers.c:3578 #, c-format -msgid "%s versus %s" -msgstr "%s versus %s" +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 �." -#: commands/tablecmds.c:1412 +#: 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 "inherited column \"%s\" has a storage parameter conflict" -msgstr "la colonne h�rit�e � %s � a un conflit de param�tre de stockage" +msgid "invalid input syntax for type numeric: \"%s\"" +msgstr "syntaxe en entr�e invalide pour le type numeric : � %s �" -#: commands/tablecmds.c:1564 -#, c-format -msgid "merging column \"%s\" with inherited definition" -msgstr "assemblage de la colonne � %s � avec une d�finition h�rit�e" +#: utils/adt/numeric.c:653 +msgid "invalid length in external \"numeric\" value" +msgstr "longueur invalide dans la valeur externe � numeric �" -#: commands/tablecmds.c:1572 -#, c-format -msgid "column \"%s\" has a type conflict" -msgstr "la colonne � %s � a un conflit de type" +#: utils/adt/numeric.c:664 +msgid "invalid sign in external \"numeric\" value" +msgstr "signe invalide dans la valeur externe � numeric �" + +#: utils/adt/numeric.c:674 +msgid "invalid digit in external \"numeric\" value" +msgstr "chiffre invalide dans la valeur externe � numeric �" -#: commands/tablecmds.c:1584 +#: utils/adt/numeric.c:814 utils/adt/numeric.c:828 #, c-format -msgid "column \"%s\" has a storage parameter conflict" -msgstr "la colonne � %s � a un conflit de param�tre de stockage" +msgid "NUMERIC precision %d must be between 1 and %d" +msgstr "la pr�cision NUMERIC %d doit �tre comprise entre 1 et %d" -#: commands/tablecmds.c:1636 +#: utils/adt/numeric.c:819 #, c-format -msgid "column \"%s\" inherits conflicting default values" -msgstr "la colonne � %s � h�rite de valeurs par d�faut conflictuelles" +msgid "NUMERIC scale %d must be between 0 and precision %d" +msgstr "l'�chelle NUMERIC %d doit �tre comprise entre 0 et %d" -#: commands/tablecmds.c:1638 -msgid "To resolve the conflict, specify a default explicitly." -msgstr "Pour r�soudre le conflit, sp�cifiez explicitement une valeur par d�faut." +#: utils/adt/numeric.c:837 +msgid "invalid NUMERIC type modifier" +msgstr "modificateur de type NUMERIC invalide" -#: commands/tablecmds.c:1685 -#, c-format -msgid "check constraint name \"%s\" appears multiple times but with different expressions" -msgstr "" -"le nom de la contrainte de v�rification, � %s �, appara�t plusieurs fois\n" -"mais avec des expressions diff�rentes" +#: utils/adt/numeric.c:1881 utils/adt/numeric.c:3754 +msgid "value overflows numeric format" +msgstr "la valeur d�passe le format numeric" -#: commands/tablecmds.c:1973 -msgid "cannot rename column of typed table" -msgstr "ne peut pas renommer une colonne d'une table typ�e" +#: utils/adt/numeric.c:2229 +msgid "cannot convert NaN to integer" +msgstr "ne peut pas convertir NaN en un entier" -#: commands/tablecmds.c:1989 -#, c-format -msgid "\"%s\" is not a table, view, composite type or index" -msgstr "� %s � n'est ni une table, ni une vue, ni un type composite, ni une s�quence" +#: utils/adt/numeric.c:2297 +msgid "cannot convert NaN to bigint" +msgstr "ne peut pas convertir NaN en un entier de type bigint" -#: commands/tablecmds.c:2055 -#, 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" +#: utils/adt/numeric.c:2345 +msgid "cannot convert NaN to smallint" +msgstr "ne peut pas convertir NaN en un entier de type smallint" -#: commands/tablecmds.c:2073 -#, c-format -msgid "cannot rename system column \"%s\"" -msgstr "ne peut pas renommer la colonne syst�me � %s �" +#: utils/adt/numeric.c:3824 +msgid "numeric field overflow" +msgstr "champ num�rique en dehors des limites" -#: commands/tablecmds.c:2088 +#: utils/adt/numeric.c:3825 #, c-format -msgid "cannot rename inherited column \"%s\"" -msgstr "ne peut pas renommer la colonne h�rit�e � %s �" +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." -#: commands/tablecmds.c:2099 -#: commands/tablecmds.c:3711 -#, c-format -msgid "column \"%s\" of relation \"%s\" already exists" -msgstr "la colonne � %s � de la relation � %s � existe d�j�" - -#: commands/tablecmds.c:2164 -#: commands/tablecmds.c:6552 -#: commands/tablecmds.c:7858 -msgid "Use ALTER TYPE instead." -msgstr "Utilisez ALTER TYPE � la place." +#: utils/adt/numeric.c:5273 +msgid "argument for function \"exp\" too big" +msgstr "l'argument de la fonction � exp � est trop gros" -#. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2287 +#: utils/adt/tsvector_parser.c:137 #, c-format -msgid "cannot %s \"%s\" because it is being used by active queries in this session" -msgstr "" -"ne peut pas ex�cuter %s � %s � car cet objet est en cours d'utilisation par\n" -"des requ�tes actives dans cette session" +msgid "syntax error in tsvector: \"%s\"" +msgstr "erreur de syntaxe dans tsvector : � %s �" -#. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2296 +#: utils/adt/tsvector_parser.c:202 #, 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" +msgid "there is no escaped character: \"%s\"" +msgstr "il n'existe pas de caract�res d'�chappement : � %s �" -#: commands/tablecmds.c:2909 +#: utils/adt/tsvector_parser.c:319 #, c-format -msgid "cannot rewrite system relation \"%s\"" -msgstr "ne peut pas r�-�crire la relation syst�me � %s �" - -#: commands/tablecmds.c:2919 -msgid "cannot rewrite temporary tables of other sessions" -msgstr "ne peut pas r�-�crire les tables temporaires des autres sessions" +msgid "wrong position info in tsvector: \"%s\"" +msgstr "mauvaise information de position dans tsvector : � %s �" -#: commands/tablecmds.c:3244 +#: utils/adt/regproc.c:123 utils/adt/regproc.c:143 #, c-format -msgid "column \"%s\" contains null values" -msgstr "la colonne � %s � contient des valeurs NULL" +msgid "more than one function named \"%s\"" +msgstr "il existe plus d'une fonction nomm�e � %s �" -#: commands/tablecmds.c:3258 +#: 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 #, c-format -msgid "check constraint \"%s\" is violated by some row" -msgstr "la contrainte de v�rification � %s � est rompue par une ligne" +msgid "operator does not exist: %s" +msgstr "l'op�rateur n'existe pas : %s" -#: commands/tablecmds.c:3349 -#: rewrite/rewriteDefine.c:252 +#: utils/adt/regproc.c:468 utils/adt/regproc.c:488 #, c-format -msgid "\"%s\" is not a table or view" -msgstr "� %s � n'est pas une table ou une vue" +msgid "more than one operator named %s" +msgstr "il existe plus d'un op�rateur nomm�%s" -#: commands/tablecmds.c:3385 -#: commands/tablecmds.c:4139 -#, c-format -msgid "\"%s\" is not a table or index" -msgstr "� %s � n'est pas une table ou un index" +#: utils/adt/regproc.c:630 gram.y:6216 +msgid "missing argument" +msgstr "argument manquant" -#: commands/tablecmds.c:3540 -#, c-format -msgid "cannot alter table \"%s\" because column \"%s\".\"%s\" uses its rowtype" +#: utils/adt/regproc.c:631 gram.y:6217 +msgid "Use NONE to denote the missing argument of a unary operator." msgstr "" -"ne peut pas modifier la table � %s � car la colonne � %s �.� %s � utilise\n" -"son type de ligne" +"Utilisez NONE pour d�noter l'argument manquant d'un op�rateur unitaire." + +#: utils/adt/regproc.c:636 +msgid "Provide two argument types for operator." +msgstr "Fournit deux types d'argument pour l'op�rateur." -#: commands/tablecmds.c:3547 +#: utils/adt/regproc.c:810 commands/lockcmds.c:127 catalog/namespace.c:290 +#: parser/parse_relation.c:857 parser/parse_relation.c:865 #, 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" +msgid "relation \"%s\" does not exist" +msgstr "la relation � %s � n'existe pas" -#: commands/tablecmds.c:3594 -msgid "cannot add column to typed table" -msgstr "ne peut pas ajouter une colonne � une table typ�e" +#: utils/adt/regproc.c:973 commands/tablecmds.c:226 +#: commands/functioncmds.c:128 commands/typecmds.c:660 +#: commands/typecmds.c:2661 parser/parse_func.c:1502 parser/parse_type.c:196 +#, c-format +msgid "type \"%s\" does not exist" +msgstr "le type � %s � n'existe pas" -#: commands/tablecmds.c:3623 -msgid "column must be added to child tables too" -msgstr "la colonne doit aussi �tre ajout�e aux tables filles" +#: utils/adt/regproc.c:1383 +msgid "expected a left parenthesis" +msgstr "attendait une parenth�se gauche" -#: commands/tablecmds.c:3668 -#: commands/tablecmds.c:7412 -#, 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 �" +#: utils/adt/regproc.c:1399 +msgid "expected a right parenthesis" +msgstr "attendait une parenth�se droite" -#: commands/tablecmds.c:3675 -#, c-format -msgid "child table \"%s\" has a conflicting \"%s\" column" -msgstr "la table fille � %s � a une colonne conflictuelle, � %s �" +#: utils/adt/regproc.c:1418 +msgid "expected a type name" +msgstr "attendait un nom de type" -#: commands/tablecmds.c:3687 -#, 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 �" +#: utils/adt/regproc.c:1450 +msgid "improper type name" +msgstr "nom du type invalide" -#: commands/tablecmds.c:3961 -#: commands/tablecmds.c:4051 -#: commands/tablecmds.c:4096 -#: commands/tablecmds.c:4192 -#: commands/tablecmds.c:4236 -#: commands/tablecmds.c:4315 -#: commands/tablecmds.c:5849 +#: snowball/dict_snowball.c:183 #, c-format -msgid "cannot alter system column \"%s\"" -msgstr "n'a pas pu modifier la colonne syst�me � %s �" +msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\"" +msgstr "" +"aucun stemmer Snowball disponible pour la langue � %s � et l'encodage � %s �" -#: commands/tablecmds.c:3995 -#, c-format -msgid "column \"%s\" is in a primary key" -msgstr "la colonne � %s � est dans une cl� primaire" +#: snowball/dict_snowball.c:206 tsearch/dict_ispell.c:75 +#: tsearch/dict_simple.c:50 +msgid "multiple StopWords parameters" +msgstr "plusieurs param�tres StopWords" -#: commands/tablecmds.c:4166 -#, c-format -msgid "statistics target %d is too low" -msgstr "la cible statistique %d est trop basse" +#: snowball/dict_snowball.c:215 +msgid "multiple Language parameters" +msgstr "multiples param�tres Language" -#: commands/tablecmds.c:4174 +#: snowball/dict_snowball.c:222 #, c-format -msgid "lowering statistics target to %d" -msgstr "abaissement de la cible statistique � %d" +msgid "unrecognized Snowball parameter: \"%s\"" +msgstr "param�tre Snowball non reconnu : � %s �" -#: commands/tablecmds.c:4296 +#: snowball/dict_snowball.c:230 +msgid "missing Language parameter" +msgstr "param�tre Language manquant" + +#: bootstrap/bootstrap.c:294 #, c-format -msgid "invalid storage type \"%s\"" -msgstr "type � %s � de stockage invalide" +msgid "%s: invalid command-line arguments\n" +msgstr "%s : arguments invalides en ligne de commande\n" -#: commands/tablecmds.c:4327 +#: lib/stringinfo.c:267 #, c-format -msgid "column data type %s can only have storage PLAIN" +msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes." msgstr "" -"le type de donn�es %s de la colonne peut seulement avoir un stockage texte\n" -"(PLAIN)" - -#: commands/tablecmds.c:4356 -msgid "cannot drop column from typed table" -msgstr "ne peut pas supprimer une colonne � une table typ�e" +"Ne peut pas agrandir de %d octets le tampon de cha�ne contenant d�j� %d " +"octets" -#: commands/tablecmds.c:4395 +#: tsearch/ts_locale.c:177 #, c-format -msgid "column \"%s\" of relation \"%s\" does not exist, skipping" -msgstr "la colonne � %s � de la relation � %s � n'existe pas, ignore" +msgid "line %d of configuration file \"%s\": \"%s\"" +msgstr "ligne %d du fichier de configuration � %s � : � %s �" -#: commands/tablecmds.c:4408 +#: tsearch/ts_locale.c:182 libpq/hba.c:781 libpq/hba.c:797 libpq/hba.c:833 +#: libpq/hba.c:855 libpq/hba.c:864 libpq/hba.c:887 libpq/hba.c:899 +#: libpq/hba.c:912 libpq/hba.c:927 libpq/hba.c:982 libpq/hba.c:1002 +#: libpq/hba.c:1016 libpq/hba.c:1033 libpq/hba.c:1046 libpq/hba.c:1062 +#: libpq/hba.c:1077 libpq/hba.c:1119 libpq/hba.c:1151 libpq/hba.c:1162 +#: libpq/hba.c:1182 libpq/hba.c:1193 libpq/hba.c:1204 libpq/hba.c:1221 +#: libpq/hba.c:1242 libpq/hba.c:1272 libpq/hba.c:1284 libpq/hba.c:1297 +#: libpq/hba.c:1331 libpq/hba.c:1405 libpq/hba.c:1423 libpq/hba.c:1444 +#: libpq/hba.c:1475 libpq/hba.c:1485 #, c-format -msgid "cannot drop system column \"%s\"" -msgstr "ne peut pas supprimer la colonne syst�me � %s �" +msgid "line %d of configuration file \"%s\"" +msgstr "ligne %d du fichier de configuration � %s �" -#: commands/tablecmds.c:4415 +#: tsearch/ts_locale.c:302 #, c-format -msgid "cannot drop inherited column \"%s\"" -msgstr "ne peut pas supprimer la colonne h�rit�e � %s �" +msgid "conversion from wchar_t to server encoding failed: %m" +msgstr "�chec de l'encodage de wchar_t vers l'encodage du serveur : %m" -#: commands/tablecmds.c:4746 -msgid "constraint must be added to child tables too" -msgstr "la contrainte doit aussi �tre ajout�e aux tables filles" +#: tsearch/dict_thesaurus.c:180 +#, c-format +msgid "could not open thesaurus file \"%s\": %m" +msgstr "n'a pas pu ouvrir le th�saurus � %s � : %m" -#: commands/tablecmds.c:4833 -msgid "cannot reference temporary table from permanent table constraint" -msgstr "" -"ne peut pas r�f�rencer une table temporaire � partir d'une contrainte de\n" -"table permanente" +#: tsearch/dict_thesaurus.c:213 +msgid "unexpected delimiter" +msgstr "d�limiteur inattendu" -#: commands/tablecmds.c:4840 -msgid "cannot reference permanent table from temporary table constraint" -msgstr "" -"ne peut pas r�f�rencer une table permanente � partir de la contrainte de\n" -"table temporaire" +#: tsearch/dict_thesaurus.c:263 tsearch/dict_thesaurus.c:279 +msgid "unexpected end of line or lexeme" +msgstr "fin de ligne ou lexeme inattendu" -#: commands/tablecmds.c:4900 -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" +#: tsearch/dict_thesaurus.c:288 +msgid "unexpected end of line" +msgstr "fin de ligne inattendue" -#: commands/tablecmds.c:4989 +#: tsearch/dict_thesaurus.c:412 #, 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" +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)" -#: commands/tablecmds.c:4992 +#: tsearch/dict_thesaurus.c:418 #, 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." +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)" -#: commands/tablecmds.c:5087 -#, 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" +#: tsearch/dict_thesaurus.c:421 +msgid "Use \"?\" to represent a stop word within a sample phrase." +msgstr "Utilisez � ? � pour repr�senter un terme courant dans une phrase." -#: commands/tablecmds.c:5092 +#: tsearch/dict_thesaurus.c:567 #, 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" +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)" -#: commands/tablecmds.c:5157 +#: tsearch/dict_thesaurus.c:574 #, 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" +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)" -#: commands/tablecmds.c:5174 +#: tsearch/dict_thesaurus.c:586 #, 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" +msgid "thesaurus substitute phrase is empty (rule %d)" +msgstr "la phrase substitut du th�saurus est vide (r�gle %d)" -#: commands/tablecmds.c:5324 -#, 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 �" +#: tsearch/dict_thesaurus.c:615 tsearch/dict_ispell.c:53 +msgid "multiple DictFile parameters" +msgstr "multiples param�tres DictFile" -#: commands/tablecmds.c:5329 -#, c-format -msgid "there is no unique constraint matching given keys for referenced table \"%s\"" -msgstr "" -"il n'existe aucune contrainte unique correspondant aux cl�s donn�es pour la\n" -"table � %s � r�f�renc�e" +#: tsearch/dict_thesaurus.c:624 +msgid "multiple Dictionary parameters" +msgstr "multiples param�tres Dictionary" -#: commands/tablecmds.c:5659 +#: tsearch/dict_thesaurus.c:631 #, 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 �" +msgid "unrecognized Thesaurus parameter: \"%s\"" +msgstr "param�tre Thesaurus non reconnu : � %s �" -#: commands/tablecmds.c:5686 -#: commands/tablecmds.c:5800 -#, c-format -msgid "constraint \"%s\" of relation \"%s\" does not exist" -msgstr "la contrainte � %s � de la relation � %s � n'existe pas" +#: tsearch/dict_thesaurus.c:639 tsearch/dict_ispell.c:103 +msgid "missing DictFile parameter" +msgstr "param�tre DictFile manquant" + +#: tsearch/dict_thesaurus.c:643 +msgid "missing Dictionary parameter" +msgstr "param�tre Dictionary manquant" -#: commands/tablecmds.c:5692 +#: 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 "le mot est trop long pour �tre index�" + +#: tsearch/ts_parse.c:392 tsearch/ts_parse.c:399 tsearch/ts_parse.c:562 +#: tsearch/ts_parse.c:569 #, c-format -msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" -msgstr "la contrainte � %s � de la relation � %s � n'existe pas, ignore" +msgid "Words longer than %d characters are ignored." +msgstr "Les mots de plus de %d caract�res sont ignor�s." -#: commands/tablecmds.c:5833 -msgid "cannot alter column type of typed table" -msgstr "ne peut pas modifier le type d'une colonne appartenant � une table typ�e" +#: tsearch/wparser.c:314 +msgid "text search parser does not support headline creation" +msgstr "l'analyseur de recherche plein texte ne supporte pas headline" -#: commands/tablecmds.c:5856 +#: tsearch/wparser_def.c:2555 #, c-format -msgid "cannot alter inherited column \"%s\"" -msgstr "ne peut pas modifier la colonne h�rit�e � %s �" +msgid "unrecognized headline parameter: \"%s\"" +msgstr "param�tre headline � %s � non reconnu" -#: commands/tablecmds.c:5893 -msgid "transform expression must not return a set" -msgstr "l'expression de transformation ne doit pas renvoyer un ensemble" +#: tsearch/wparser_def.c:2564 +msgid "MinWords should be less than MaxWords" +msgstr "MinWords doit avoir une valeur plus petite que celle de MaxWords" -#: commands/tablecmds.c:5899 -msgid "cannot use subquery in transform expression" -msgstr "ne peut pas utiliser une sous-requ�te dans l'expression de transformation" +#: tsearch/wparser_def.c:2568 +msgid "MinWords should be positive" +msgstr "MinWords doit �tre positif" -#: commands/tablecmds.c:5903 -msgid "cannot use aggregate function in transform expression" -msgstr "ne peut pas utiliser la fonction d'agr�gat dans l'expression de la transformation" +#: tsearch/wparser_def.c:2572 +msgid "ShortWord should be >= 0" +msgstr "ShortWord devrait �tre positif ou nul" -#: commands/tablecmds.c:5907 -msgid "cannot use window function in transform expression" -msgstr "ne peut pas utiliser la fonction window dans l'expression de la transformation" +#: tsearch/wparser_def.c:2576 +msgid "MaxFragments should be >= 0" +msgstr "MaxFragments devrait �tre positif ou nul" -#: commands/tablecmds.c:5925 +#: tsearch/spell.c:276 #, c-format -msgid "column \"%s\" cannot be cast to type %s" -msgstr "la colonne � %s � ne peut pas �tre convertie vers le type %s" +msgid "could not open dictionary file \"%s\": %m" +msgstr "n'a pas pu ouvrir le fichier dictionnaire � %s � : %m" -#: commands/tablecmds.c:5951 -#, 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" +#: tsearch/spell.c:518 tsearch/spell.c:535 tsearch/spell.c:552 +#: tsearch/spell.c:569 tsearch/spell.c:591 gram.y:12498 gram.y:12515 +msgid "syntax error" +msgstr "erreur de syntaxe" -#: commands/tablecmds.c:5990 -#, c-format -msgid "cannot alter type of column \"%s\" twice" -msgstr "ne peut pas modifier la colonne � %s � deux fois" +#: tsearch/spell.c:596 tsearch/spell.c:842 tsearch/spell.c:862 +msgid "multibyte flag character is not allowed" +msgstr "un caract�re drapeau multi-octet n'est pas autoris�" -#: commands/tablecmds.c:6024 +#: tsearch/spell.c:629 tsearch/spell.c:687 tsearch/spell.c:780 #, c-format -msgid "default for column \"%s\" cannot be cast to type %s" -msgstr "" -"la valeur par d�faut de la colonne � %s � ne peut pas �tre convertie vers le\n" -"type %s" - -#: commands/tablecmds.c:6150 -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" +msgid "could not open affix file \"%s\": %m" +msgstr "n'a pas pu ouvrir le fichier affixe � %s � : %m" -#: commands/tablecmds.c:6151 -#: commands/tablecmds.c:6169 -#, c-format -msgid "%s depends on column \"%s\"" -msgstr "%s d�pend de la colonne � %s �" +#: tsearch/spell.c:675 +msgid "Ispell dictionary supports only default flag value" +msgstr "" +"le dictionnaire Ispell supporte seulement la valeur par d�faut du drapeau" -#: commands/tablecmds.c:6168 -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" +#: tsearch/spell.c:873 +msgid "wrong affix file format for flag" +msgstr "mauvais format de fichier affixe pour le drapeau" + +#: tsearch/dict_ispell.c:64 +msgid "multiple AffFile parameters" +msgstr "multiples param�tres AffFile" -#: commands/tablecmds.c:6520 +#: tsearch/dict_ispell.c:83 #, c-format -msgid "cannot change owner of index \"%s\"" -msgstr "ne peut pas modifier le propri�taire de l'index � %s �" +msgid "unrecognized Ispell parameter: \"%s\"" +msgstr "param�tre Ispell non reconnu : � %s �" -#: commands/tablecmds.c:6522 -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." +#: tsearch/dict_ispell.c:97 +msgid "missing AffFile parameter" +msgstr "param�tre AffFile manquant" -#: commands/tablecmds.c:6538 +#: tsearch/ts_utils.c:53 #, c-format -msgid "cannot change owner of sequence \"%s\"" -msgstr "ne peut pas modifier le propri�taire de la s�quence � %s �" +msgid "invalid text search configuration file name \"%s\"" +msgstr "" +"nom du fichier de configuration de la recherche plein texte invalide : � %s �" -#: commands/tablecmds.c:6540 -#: commands/tablecmds.c:7848 +#: tsearch/ts_utils.c:91 #, c-format -msgid "Sequence \"%s\" is linked to table \"%s\"." -msgstr "La s�quence � %s � est li�e � la table � %s �." +msgid "could not open stop-word file \"%s\": %m" +msgstr "n'a pas pu ouvrir le fichier des termes courants � %s � : %m" -#: commands/tablecmds.c:6561 -#: commands/tablecmds.c:7866 +#: tsearch/dict_synonym.c:119 #, c-format -msgid "\"%s\" is not a table, view, or sequence" -msgstr "� %s � n'est pas une table, une vue ou une s�quence" +msgid "unrecognized synonym parameter: \"%s\"" +msgstr "param�tre synonyme non reconnu : � %s �" -#: commands/tablecmds.c:6820 -msgid "cannot have multiple SET TABLESPACE subcommands" -msgstr "ne peut pas avoir de nombreuses sous-commandes SET TABLESPACE" +#: tsearch/dict_synonym.c:126 +msgid "missing Synonyms parameter" +msgstr "param�tre Synonyms manquant" -#: commands/tablecmds.c:6872 +#: tsearch/dict_synonym.c:133 #, c-format -msgid "\"%s\" is not a table, index, or TOAST table" -msgstr "� %s � n'est pas une table, un index ou une table TOAST" +msgid "could not open synonym file \"%s\": %m" +msgstr "n'a pas pu ouvrir le fichier synonyme � %s � : %m" + +#: tsearch/dict_simple.c:59 +msgid "multiple Accept parameters" +msgstr "multiples param�tres Accept" -#: commands/tablecmds.c:6993 +#: tsearch/dict_simple.c:67 #, c-format -msgid "cannot move system relation \"%s\"" -msgstr "ne peut pas d�placer la colonne syst�me � %s �" +msgid "unrecognized simple dictionary parameter: \"%s\"" +msgstr "param�tre de dictionnaire simple non reconnu : � %s �" -#: commands/tablecmds.c:7009 -msgid "cannot move temporary tables of other sessions" -msgstr "ne peut pas d�placer les tables temporaires d'autres sessions" +#: tcop/pquery.c:661 +#, c-format +msgid "bind message has %d result formats but query has %d columns" +msgstr "le message bind a %d formats de r�sultat mais la requ�te a %d colonnes" -#: commands/tablecmds.c:7198 -msgid "cannot change inheritance of typed table" -msgstr "ne peut pas modifier l'h�ritage d'une table typ�e" +#: tcop/pquery.c:739 tcop/pquery.c:1403 commands/portalcmds.c:341 +#, c-format +msgid "portal \"%s\" cannot be run" +msgstr "le portail � %s � ne peut pas �tre ex�cut� de nouveau" -#: commands/tablecmds.c:7283 -msgid "circular inheritance not allowed" -msgstr "h�ritage circulaire interdit" +#: tcop/pquery.c:971 +msgid "cursor can only scan forward" +msgstr "le curseur peut seulement parcourir en avant" -#: commands/tablecmds.c:7284 -#, c-format -msgid "\"%s\" is already a child of \"%s\"." -msgstr "� %s � est d�j� un enfant de � %s �." +#: tcop/pquery.c:972 +msgid "Declare it with SCROLL option to enable backward scan." +msgstr "D�clarez-le avec l'option SCROLL pour activer le parcours inverse." -#: commands/tablecmds.c:7292 +#: tcop/fastpath.c:109 tcop/fastpath.c:485 tcop/fastpath.c:615 #, 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" +msgid "invalid argument size %d in function call message" +msgstr "" +"taille de l'argument %d invalide dans le message d'appel de la fonction" -#: commands/tablecmds.c:7419 +#: tcop/fastpath.c:180 tcop/fastpath.c:554 tcop/postgres.c:1666 +#: access/common/printtup.c:278 #, 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" +msgid "unsupported format code: %d" +msgstr "code de format non support� : %d" -#: commands/tablecmds.c:7435 +#: tcop/fastpath.c:221 catalog/aclchk.c:3546 catalog/aclchk.c:4296 #, c-format -msgid "child table is missing column \"%s\"" -msgstr "la colonne � %s � manque � la table enfant" +msgid "function with OID %u does not exist" +msgstr "la fonction d'OID %u n'existe pas" -#: commands/tablecmds.c:7514 -#, 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 �" +#: tcop/fastpath.c:290 tcop/postgres.c:351 tcop/postgres.c:374 +#: commands/copy.c:542 commands/copy.c:561 commands/copy.c:565 +msgid "unexpected EOF on client connection" +msgstr "fin de fichier (EOF) inattendue de la connexion du client" -#: commands/tablecmds.c:7538 -#, c-format -msgid "child table is missing constraint \"%s\"" -msgstr "la contrainte � %s � manque � la table enfant" +#: tcop/fastpath.c:303 tcop/postgres.c:919 tcop/postgres.c:1229 +#: tcop/postgres.c:1510 tcop/postgres.c:1952 tcop/postgres.c:2320 +#: tcop/postgres.c:2401 +msgid "" +"current transaction is aborted, commands ignored until end of transaction " +"block" +msgstr "" +"la transaction est annul�e, les commandes sont ignor�es jusqu'� la fin du " +"bloc\n" +"de la transaction" -#: commands/tablecmds.c:7619 +#: tcop/fastpath.c:331 #, 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 �" +msgid "fastpath function call: \"%s\" (OID %u)" +msgstr "appel de fonction fastpath : � %s � (OID %u)" -#: commands/tablecmds.c:7847 -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" +#: tcop/fastpath.c:411 tcop/postgres.c:1089 tcop/postgres.c:1376 +#: tcop/postgres.c:1793 tcop/postgres.c:2010 +#, c-format +msgid "duration: %s ms" +msgstr "dur�e : %s ms" -#: commands/tablecmds.c:7876 +#: tcop/fastpath.c:415 #, c-format -msgid "relation \"%s\" is already in schema \"%s\"" -msgstr "la relation � %s � existe d�j� dans le sch�ma � %s �" +msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" +msgstr "dur�e : %s ms, appel de fonction fastpath : � %s � (OID %u)" -#: commands/tablecmds.c:7939 +#: tcop/fastpath.c:453 tcop/fastpath.c:580 #, c-format -msgid "relation \"%s\" already exists in schema \"%s\"" -msgstr "la relation � %s � existe d�j� dans le sch�ma � %s �" +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" -#: commands/tablespace.c:157 -#: commands/tablespace.c:174 -#: commands/tablespace.c:185 -#: commands/tablespace.c:193 -#: commands/tablespace.c:598 -#: storage/file/copydir.c:61 +#: tcop/fastpath.c:461 #, c-format -msgid "could not create directory \"%s\": %m" -msgstr "n'a pas pu cr�er le r�pertoire � %s � : %m" +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" -#: commands/tablespace.c:204 +#: tcop/fastpath.c:548 tcop/fastpath.c:631 #, c-format -msgid "could not stat directory \"%s\": %m" -msgstr "n'a pas pu lire les informations sur le r�pertoire � %s � : %m" +msgid "incorrect binary data format in function argument %d" +msgstr "" +"format des donn�es binaires incorrect dans l'argument de la fonction %d" -#: commands/tablespace.c:213 +#: tcop/postgres.c:401 tcop/postgres.c:413 tcop/postgres.c:424 +#: tcop/postgres.c:436 tcop/postgres.c:4194 #, c-format -msgid "\"%s\" exists but is not a directory" -msgstr "� %s � existe mais n'est pas un r�pertoire" +msgid "invalid frontend message type %d" +msgstr "type %d du message de l'interface invalide" -#: commands/tablespace.c:243 +#: tcop/postgres.c:860 #, c-format -msgid "permission denied to create tablespace \"%s\"" -msgstr "droit refus� pour cr�er le tablespace � %s �" +msgid "statement: %s" +msgstr "instruction : %s" -#: commands/tablespace.c:245 -msgid "Must be superuser to create a tablespace." -msgstr "Doit �tre super-utilisateur pour cr�er un tablespace." +#: tcop/postgres.c:1094 +#, c-format +msgid "duration: %s ms statement: %s" +msgstr "dur�e : %s ms, instruction : %s" -#: commands/tablespace.c:261 -msgid "tablespace location cannot contain single quotes" -msgstr "le chemin du tablespace ne peut pas contenir de guillemets simples" +#: tcop/postgres.c:1144 +#, c-format +msgid "parse %s: %s" +msgstr "analyse %s : %s" -#: commands/tablespace.c:271 -msgid "tablespace location must be an absolute path" -msgstr "le chemin du tablespace doit �tre un chemin absolu" +#: tcop/postgres.c:1202 +msgid "cannot insert multiple commands into a prepared statement" +msgstr "" +"ne peut pas ins�rer les commandes multiples dans une instruction pr�par�e" -#: commands/tablespace.c:282 +#: tcop/postgres.c:1269 commands/prepare.c:122 parser/parse_param.c:303 #, c-format -msgid "tablespace location \"%s\" is too long" -msgstr "le chemin du tablespace � %s � est trop long" +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" -#: commands/tablespace.c:292 -#: commands/tablespace.c:824 +#: tcop/postgres.c:1381 #, c-format -msgid "unacceptable tablespace name \"%s\"" -msgstr "nom inacceptable pour le tablespace � %s �" - -#: commands/tablespace.c:294 -#: commands/tablespace.c:825 -msgid "The prefix \"pg_\" is reserved for system tablespaces." -msgstr "Le pr�fixe � pg_ � est r�serv� pour les tablespaces syst�me." +msgid "duration: %s ms parse %s: %s" +msgstr "dur�e : %s ms, analyse %s : %s" -#: commands/tablespace.c:304 -#: commands/tablespace.c:837 +#: tcop/postgres.c:1427 #, c-format -msgid "tablespace \"%s\" already exists" -msgstr "le tablespace � %s � existe d�j�" +msgid "bind %s to %s" +msgstr "lie %s � %s" -#: commands/tablespace.c:372 -#: commands/tablespace.c:524 -msgid "tablespaces are not supported on this platform" -msgstr "les tablespaces ne sont pas support�s sur cette plateforme" +#: tcop/postgres.c:1446 tcop/postgres.c:2300 +msgid "unnamed prepared statement does not exist" +msgstr "l'instruction pr�par�e non nomm�e n'existe pas" -#: commands/tablespace.c:416 +#: tcop/postgres.c:1488 #, c-format -msgid "tablespace \"%s\" does not exist, skipping" -msgstr "le tablespace � %s � n'existe pas, poursuite du traitement" +msgid "bind message has %d parameter formats but %d parameters" +msgstr "le message bind a %d formats de param�tres mais %d param�tres" -#: commands/tablespace.c:481 +#: tcop/postgres.c:1494 #, c-format -msgid "tablespace \"%s\" is not empty" -msgstr "le tablespace � %s � n'est pas vide" +msgid "" +"bind message supplies %d parameters, but prepared statement \"%s\" requires " +"%d" +msgstr "" +"le message bind fournit %d param�tres, mais l'instruction pr�par�e � %s � " +"en\n" +"requiert %d" -#: commands/tablespace.c:555 +#: tcop/postgres.c:1659 #, c-format -msgid "directory \"%s\" does not exist" -msgstr "le r�pertoire � %s � n'existe pas" +msgid "incorrect binary data format in bind parameter %d" +msgstr "format des donn�es binaires incorrect dans le param�tre bind %d" -#: commands/tablespace.c:556 +#: tcop/postgres.c:1798 #, c-format -msgid "Create directory \"%s\" for this tablespace before restarting the server." -msgstr "Cr�er le r�pertoire � %s � pour ce tablespace avant de red�marrer le serveur." +msgid "duration: %s ms bind %s%s%s: %s" +msgstr "dur�e : %s ms, lien %s%s%s : %s" -#: commands/tablespace.c:561 +#: tcop/postgres.c:1846 tcop/postgres.c:2387 #, c-format -msgid "could not set permissions on directory \"%s\": %m" -msgstr "n'a pas pu configurer les droits du r�pertoire � %s � : %m" +msgid "portal \"%s\" does not exist" +msgstr "le portail � %s � n'existe pas" -#: commands/tablespace.c:593 -#, c-format -msgid "directory \"%s\" already in use as a tablespace" -msgstr "r�pertoire � %s � d�j� en cours d'utilisation" +#: tcop/postgres.c:1933 tcop/postgres.c:2018 +msgid "execute fetch from" +msgstr "ex�cute fetch � partir de" -#: commands/tablespace.c:608 -#: commands/tablespace.c:745 -#, c-format -msgid "could not remove symbolic link \"%s\": %m" -msgstr "n'a pas pu supprimer le lien symbolique � %s � : %m" +#: tcop/postgres.c:1934 tcop/postgres.c:2019 +msgid "execute" +msgstr "ex�cute" -#: commands/tablespace.c:618 +#: tcop/postgres.c:1931 #, c-format -msgid "could not create symbolic link \"%s\": %m" -msgstr "n'a pas pu cr�er le lien symbolique � %s � : %m" +msgid "%s %s%s%s: %s" +msgstr "%s %s%s%s: %s" -#: commands/tablespace.c:679 -#: storage/file/copydir.c:67 -#: storage/file/copydir.c:106 -#: storage/file/fd.c:1600 -#: postmaster/postmaster.c:1142 -#: utils/adt/genfile.c:244 -#: utils/adt/misc.c:213 -#: utils/misc/tzparser.c:345 +#: tcop/postgres.c:2015 #, c-format -msgid "could not open directory \"%s\": %m" -msgstr "n'a pas pu ouvrir le r�pertoire � %s � : %m" +msgid "duration: %s ms %s %s%s%s: %s" +msgstr "dur�e : %s ms %s %s%s%s: %s" -#: commands/tablespace.c:709 -#: commands/tablespace.c:721 -#: commands/tablespace.c:737 +#: tcop/postgres.c:2141 #, c-format -msgid "could not remove directory \"%s\": %m" -msgstr "n'a pas pu supprimer le r�pertoire � %s � : %m" +msgid "prepare: %s" +msgstr "pr�paration : %s" -#: commands/tablespace.c:1421 +#: tcop/postgres.c:2204 #, c-format -msgid "tablespace %u is not empty" -msgstr "le tablespace %u n'est pas vide" +msgid "parameters: %s" +msgstr "param�tres : %s" -#: commands/trigger.c:192 -msgid "TRUNCATE FOR EACH ROW triggers are not supported" -msgstr "les triggers TRUNCATE FOR EACH ROW ne sont pas support�s" +#: tcop/postgres.c:2223 +msgid "abort reason: recovery conflict" +msgstr "raison de l'annulation : conflit de restauration" -#: commands/trigger.c:233 -msgid "cannot use subquery in trigger WHEN condition" -msgstr "ne peut pas utiliser une sous-requ�te dans la condition WHEN d'un trigger" +#: tcop/postgres.c:2239 +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." -#: commands/trigger.c:237 -msgid "cannot use aggregate function in trigger WHEN condition" -msgstr "ne peut pas utiliser la fonction d'agr�gat dans la condition WHEN d'un trigger" +#: tcop/postgres.c:2242 +msgid "User was holding a relation lock for too long." +msgstr "" +"L'utilisateur conservait un verrou sur une relation depuis trop longtemps." -#: commands/trigger.c:241 -msgid "cannot use window function in trigger WHEN condition" -msgstr "ne peut pas utiliser la fonction window dans la condition WHEN d'un trigger" +#: tcop/postgres.c:2245 +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�." -#: commands/trigger.c:261 -#: commands/trigger.c:274 -msgid "statement trigger's WHEN condition cannot reference column values" +#: tcop/postgres.c:2248 +msgid "User query might have needed to see row versions that must be removed." msgstr "" -"la condition WHEN de l'instruction du trigger ne peut pas r�f�rencer les valeurs\n" -"des colonnes" +"La requ�te de l'utilisateur pourrait avoir eu besoin de voir des versions " +"de\n" +"lignes qui doivent �tre supprim�es." -#: commands/trigger.c:266 -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" +#: tcop/postgres.c:2251 storage/ipc/standby.c:498 +msgid "User transaction caused buffer deadlock with recovery." +msgstr "" +"La transaction de l'utilisateur causait un verrou mortel lors de la " +"restauration." -#: commands/trigger.c:279 -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" +#: tcop/postgres.c:2254 +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�." -#: commands/trigger.c:284 -msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns" +#: tcop/postgres.c:2595 +msgid "terminating connection because of crash of another server process" msgstr "" -"la condition WHEN d'un trigger BEFORE ne doit pas r�f�rencer les colonnes\n" -"syst�me avec NEW" +"arr�t de la connexion � cause de l'arr�t brutal d'un autre processus serveur" -#: commands/trigger.c:322 -#, 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 �" +#: tcop/postgres.c:2596 +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." -#: commands/trigger.c:329 -#, c-format -msgid "function %s must return type \"trigger\"" -msgstr "la fonction %s doit renvoyer le type � trigger �" +#: tcop/postgres.c:2600 tcop/postgres.c:2950 +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." -#: commands/trigger.c:438 -#: commands/trigger.c:1152 -#, c-format -msgid "trigger \"%s\" for relation \"%s\" already exists" -msgstr "le trigger � %s � de la relation � %s � existe d�j�" +#: tcop/postgres.c:2712 +msgid "floating-point exception" +msgstr "exception d� � une virgule flottante" -#: commands/trigger.c:719 -msgid "Found referenced table's UPDATE trigger." -msgstr "Trigger UPDATE de la table r�f�renc�e trouv�." +#: tcop/postgres.c:2713 +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." -#: commands/trigger.c:720 -msgid "Found referenced table's DELETE trigger." -msgstr "Trigger DELETE de la table r�f�renc�e trouv�." +#: tcop/postgres.c:2881 +msgid "terminating autovacuum process due to administrator command" +msgstr "arr�t du processus autovacuum suite � la demande de l'administrateur" -#: commands/trigger.c:721 -msgid "Found referencing table's trigger." -msgstr "Trigger de la table r�f�renc�e trouv�." +#: tcop/postgres.c:2887 tcop/postgres.c:2897 tcop/postgres.c:2948 +msgid "terminating connection due to conflict with recovery" +msgstr "arr�t de la connexion � cause d'un conflit avec la restauration" -#: commands/trigger.c:830 -#: commands/trigger.c:846 -#, c-format -msgid "ignoring incomplete trigger group for constraint \"%s\" %s" -msgstr "ignore le groupe de trigger incomplet pour la contrainte � %s � %s" +#: tcop/postgres.c:2903 +msgid "terminating connection due to administrator command" +msgstr "arr�t des connexions suite � la demande de l'administrateur" -#: commands/trigger.c:858 -#, c-format -msgid "converting trigger group into constraint \"%s\" %s" -msgstr "conversion du groupe de trigger en une contrainte � %s � %s" +#: tcop/postgres.c:2918 +msgid "canceling authentication due to timeout" +msgstr "annulation de l'authentification � cause du d�lai �coul�" -#: commands/trigger.c:998 -#, 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" +#: tcop/postgres.c:2927 +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" -#: commands/trigger.c:1273 -#, c-format -msgid "permission denied: \"%s\" is a system trigger" -msgstr "droit refus� : � %s � est un trigger syst�me" +#: tcop/postgres.c:2936 +msgid "canceling autovacuum task" +msgstr "annulation de la t�che d'autovacuum" -#: commands/trigger.c:1848 -#, c-format -msgid "trigger function %u returned null value" -msgstr "la fonction trigger %u a renvoy� la valeur NULL" +#: tcop/postgres.c:2955 storage/ipc/standby.c:497 +msgid "canceling statement due to conflict with recovery" +msgstr "annulation de la requ�te � cause d'un conflit avec la restauration" -#: commands/trigger.c:1908 -#: commands/trigger.c:2023 -#: commands/trigger.c:2160 -#: commands/trigger.c:2335 -msgid "BEFORE STATEMENT trigger cannot return a value" -msgstr "le trigger BEFORE STATEMENT ne peut pas renvoyer une valeur" +#: tcop/postgres.c:2971 +msgid "canceling statement due to user request" +msgstr "annulation de la requ�te � la demande de l'utilisateur" -#: commands/trigger.c:2397 -#: executor/execMain.c:1613 -#: executor/nodeLockRows.c:137 -#: executor/nodeModifyTable.c:334 -#: executor/nodeModifyTable.c:505 -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" +#: tcop/postgres.c:3099 tcop/postgres.c:3121 +msgid "stack depth limit exceeded" +msgstr "d�passement de limite (en profondeur) de la pile" -#: commands/trigger.c:4012 +#: tcop/postgres.c:3100 tcop/postgres.c:3122 #, c-format -msgid "constraint \"%s\" is not deferrable" -msgstr "la contrainte � %s � n'est pas DEFERRABLE" +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." -#: commands/trigger.c:4035 +#: tcop/postgres.c:3138 #, c-format -msgid "constraint \"%s\" does not exist" -msgstr "la contrainte � %s � n'existe pas" +msgid "\"max_stack_depth\" must not exceed %ldkB." +msgstr "� max_stack_depth � ne doit pas d�passer %ld Ko." -#: commands/tsearchcmds.c:109 -#: commands/tsearchcmds.c:929 -#, c-format -msgid "function %s should return type %s" -msgstr "la fonction %s doit renvoyer le type %s" +#: tcop/postgres.c:3140 +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." -#: commands/tsearchcmds.c:178 -msgid "must be superuser to create text search parsers" -msgstr "doit �tre super-utilisateur pour cr�er des analyseurs de recherche plein texte" +#: tcop/postgres.c:3481 +msgid "invalid command-line arguments for server process" +msgstr "arguments invalides en ligne de commande pour le processus serveur" -#: commands/tsearchcmds.c:226 +#: tcop/postgres.c:3482 tcop/postgres.c:3488 #, c-format -msgid "text search parser parameter \"%s\" not recognized" -msgstr "param�tre de l'analyseur de recherche plein texte � %s � non reconnu" - -#: commands/tsearchcmds.c:236 -msgid "text search parser start method is required" -msgstr "la m�thode start de l'analyseur de recherche plein texte est requise" - -#: commands/tsearchcmds.c:241 -msgid "text search parser gettoken method is required" -msgstr "la m�thode gettoken de l'analyseur de recherche plein texte est requise" +msgid "Try \"%s --help\" for more information." +msgstr "Essayez � %s --help � pour plus d'informations." -#: commands/tsearchcmds.c:246 -msgid "text search parser end method is required" -msgstr "la m�thode end l'analyseur de recherche de texte est requise" +#: tcop/postgres.c:3486 +#, c-format +msgid "%s: invalid command-line arguments" +msgstr "%s : arguments invalides en ligne de commande" -#: commands/tsearchcmds.c:251 -msgid "text search parser lextypes method is required" -msgstr "la m�thode lextypes de l'analyseur de recherche plein texte est requise" +#: tcop/postgres.c:3565 +#, c-format +msgid "%s: no database nor user name specified" +msgstr "%s : aucune base de donn�es et aucun utilisateur sp�cifi�s" -#: commands/tsearchcmds.c:283 -msgid "must be superuser to drop text search parsers" -msgstr "" -"doit �tre super-utilisateur pour supprimer des analyseurs de recherche plein\n" -"texte" +#: tcop/postgres.c:4104 +#, c-format +msgid "invalid CLOSE message subtype %d" +msgstr "sous-type %d du message CLOSE invalide" -#: commands/tsearchcmds.c:312 +#: tcop/postgres.c:4137 #, 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" +msgid "invalid DESCRIBE message subtype %d" +msgstr "sous-type %d du message DESCRIBE invalide" -#: commands/tsearchcmds.c:367 -msgid "must be superuser to rename text search parsers" +#: tcop/postgres.c:4371 +#, c-format +msgid "" +"disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s" +"%s" msgstr "" -"doit �tre super-utilisateur pour renommer les analyseurs de recherche plein\n" -"texte" +"d�connexion : dur�e de la session : %d:%02d:%02d.%03d\n" +"utilisateur=%s base=%s h�te=%s%s%s" -#: commands/tsearchcmds.c:385 +#: tcop/utility.c:95 commands/tablecmds.c:820 commands/tablecmds.c:1153 +#: commands/tablecmds.c:2001 commands/tablecmds.c:3741 +#: commands/tablecmds.c:5487 commands/trigger.c:202 commands/trigger.c:1120 +#: rewrite/rewriteDefine.c:263 #, c-format -msgid "text search parser \"%s\" already exists" -msgstr "l'analyseur de recherche plein texte � %s � existe d�j�" +msgid "permission denied: \"%s\" is a system catalog" +msgstr "droit refus� : � %s � est un catalogue syst�me" -#: commands/tsearchcmds.c:462 +#. translator: %s is name of a SQL command, eg CREATE +#: tcop/utility.c:253 #, c-format -msgid "text search template \"%s\" does not accept options" -msgstr "le mod�le de recherche plein texte � %s � n'accepte pas d'options" - -#: commands/tsearchcmds.c:535 -msgid "text search template is required" -msgstr "le mod�le de la recherche plein texte est requis" +msgid "cannot execute %s in a read-only transaction" +msgstr "ne peut pas ex�cuter %s dans une transaction en lecture seule" -#: commands/tsearchcmds.c:600 +#. translator: %s is name of a SQL command, eg CREATE +#: tcop/utility.c:272 #, c-format -msgid "text search dictionary \"%s\" already exists" -msgstr "le dictionnaire de recherche plein texte � %s � existe d�j�" +msgid "cannot execute %s during recovery" +msgstr "ne peut pas ex�cut� %s lors de la restauration" -#: commands/tsearchcmds.c:660 +#. translator: %s is name of a SQL command, eg PREPARE +#: tcop/utility.c:290 #, c-format -msgid "text search dictionary \"%s\" does not exist, skipping" +msgid "cannot execute %s within security-restricted operation" msgstr "" -"le dictionnaire de recherche plein texte � %s � n'existe pas, poursuite du\n" -"traitement" +"ne peut pas ex�cuter %s � l'int�rieur d'une fonction restreinte\n" +"pour s�curit�" -#: commands/tsearchcmds.c:990 -msgid "must be superuser to create text search templates" -msgstr "doit �tre super-utilisateur pour cr�er des mod�les de recherche plein texte" +#: tcop/utility.c:1228 +msgid "must be superuser to do CHECKPOINT" +msgstr "" +"doit �tre super-utilisateur pour ex�cuter un point de v�rification " +"(CHECKPOINT)" -#: commands/tsearchcmds.c:1027 +#: access/common/tupconvert.c:107 #, c-format -msgid "text search template parameter \"%s\" not recognized" -msgstr "param�tre de mod�le de recherche plein texte � %s � non reconnu" - -#: commands/tsearchcmds.c:1037 -msgid "text search template lexize method is required" -msgstr "la m�thode lexize du mod�le de recherche plein texte est requise" +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." -#: commands/tsearchcmds.c:1072 -msgid "must be superuser to rename text search templates" -msgstr "doit �tre super-utilisateur pour renommer les mod�les de recherche plein texte" +#: access/common/tupconvert.c:135 +#, c-format +msgid "" +"Number of returned columns (%d) does not match expected column count (%d)." +msgstr "" +"Le nombre de colonnes renvoy�es (%d) ne correspond pas au nombre de " +"colonnes\n" +"attendues (%d)." -#: commands/tsearchcmds.c:1091 +#: access/common/tupconvert.c:240 #, c-format -msgid "text search template \"%s\" already exists" -msgstr "le mod�le de recherche plein texte � %s � existe d�j�" +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." -#: commands/tsearchcmds.c:1114 -msgid "must be superuser to drop text search templates" -msgstr "doit �tre super-utilisateur pour supprimer des mod�les de recherche plein texte" +#: access/common/tupconvert.c:252 +#, 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." -#: commands/tsearchcmds.c:1143 +#: access/common/indextuple.c:57 #, 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" +msgid "number of index columns (%d) exceeds limit (%d)" +msgstr "le nombre de colonnes index�es (%d) d�passe la limite (%d)" -#: commands/tsearchcmds.c:1338 +#: access/common/indextuple.c:168 #, c-format -msgid "text search configuration parameter \"%s\" not recognized" -msgstr "param�tre de configuration de recherche plein texte � %s � non reconnu" +msgid "index row requires %lu bytes, maximum size is %lu" +msgstr "la ligne index requiert %lu octets, la taille maximum est %lu" -#: commands/tsearchcmds.c:1345 -msgid "cannot specify both PARSER and COPY options" -msgstr "ne peut pas sp�cifier � la fois PARSER et COPY" +#: access/common/reloptions.c:323 +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" -#: commands/tsearchcmds.c:1373 -msgid "text search parser is required" -msgstr "l'analyseur de la recherche plein texte est requis" +#: access/common/reloptions.c:622 +msgid "RESET must not include values for parameters" +msgstr "RESET ne doit pas inclure de valeurs pour les param�tres" -#: commands/tsearchcmds.c:1479 +#: access/common/reloptions.c:655 #, c-format -msgid "text search configuration \"%s\" already exists" -msgstr "la configuration de recherche plein texte � %s � existe d�j�" +msgid "unrecognized parameter namespace \"%s\"" +msgstr "espace de nom du param�tre � %s � non reconnu" -#: commands/tsearchcmds.c:1538 +#: access/common/reloptions.c:898 #, 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" +msgid "unrecognized parameter \"%s\"" +msgstr "param�tre � %s � non reconnu" -#: commands/tsearchcmds.c:1760 +#: access/common/reloptions.c:923 #, c-format -msgid "token type \"%s\" does not exist" -msgstr "le type de jeton � %s � n'existe pas" +msgid "parameter \"%s\" specified more than once" +msgstr "le param�tre � %s � est sp�cifi� plus d'une fois" -#: commands/tsearchcmds.c:1984 +#: access/common/reloptions.c:938 #, c-format -msgid "mapping for token type \"%s\" does not exist" -msgstr "la correspondance pour le type de jeton � %s � n'existe pas" +msgid "invalid value for boolean option \"%s\": %s" +msgstr "valeur invalide pour l'option bool�enne � %s � : %s" -#: commands/tsearchcmds.c:1990 +#: access/common/reloptions.c:949 #, c-format -msgid "mapping for token type \"%s\" does not exist, skipping" -msgstr "" -"la correspondance pour le type de jeton � %s � n'existe pas, poursuite du\n" -"traitement" +msgid "invalid value for integer option \"%s\": %s" +msgstr "valeur invalide pour l'option de type integer � %s � : %s" -#: commands/tsearchcmds.c:2143 -#: commands/tsearchcmds.c:2254 +#: access/common/reloptions.c:954 access/common/reloptions.c:972 #, c-format -msgid "invalid parameter list format: \"%s\"" -msgstr "format de liste de param�tres invalide : � %s �" +msgid "value %s out of bounds for option \"%s\"" +msgstr "valeur %s en dehors des limites pour l'option � %s �" -#: commands/typecmds.c:163 -msgid "must be superuser to create a base type" -msgstr "doit �tre super-utilisateur pour cr�er un type de base" +#: access/common/reloptions.c:956 +#, c-format +msgid "Valid values are between \"%d\" and \"%d\"." +msgstr "Les valeurs valides sont entre � %d � et � %d �." -#: commands/typecmds.c:267 +#: access/common/reloptions.c:967 #, c-format -msgid "type attribute \"%s\" not recognized" -msgstr "attribut du type � %s � non reconnu" +msgid "invalid value for floating point option \"%s\": %s" +msgstr "valeur invalide pour l'option de type float � %s � : %s" -#: commands/typecmds.c:321 +#: access/common/reloptions.c:974 #, c-format -msgid "invalid type category \"%s\": must be simple ASCII" -msgstr "cat�gorie de type � %s � invalide : doit �tre de l'ASCII pur" +msgid "Valid values are between \"%f\" and \"%f\"." +msgstr "Les valeurs valides sont entre � %f � et � %f �." -#: commands/typecmds.c:340 +#: access/common/tupdesc.c:581 parser/parse_relation.c:1178 #, c-format -msgid "array element type cannot be %s" -msgstr "le type d'�l�ment tableau ne peut pas �tre %s" +msgid "column \"%s\" cannot be declared SETOF" +msgstr "la colonne � %s � ne peut pas �tre d�clar�e SETOF" -#: commands/typecmds.c:372 +#: access/common/heaptuple.c:646 access/common/heaptuple.c:1398 #, c-format -msgid "alignment \"%s\" not recognized" -msgstr "alignement � %s � non reconnu" +msgid "number of columns (%d) exceeds limit (%d)" +msgstr "le nombre de colonnes (%d) d�passe la limite (%d)" -#: commands/typecmds.c:389 +#: access/hash/hashovfl.c:547 #, c-format -msgid "storage \"%s\" not recognized" -msgstr "stockage � %s � non reconnu" +msgid "out of overflow pages in hash index \"%s\"" +msgstr "en dehors des pages surcharg�es dans l'index hach� � %s �" -#: commands/typecmds.c:398 -msgid "type input function must be specified" -msgstr "le type d'entr�e de la fonction doit �tre sp�cifi�" +#: access/hash/hashsearch.c:152 +msgid "hash indexes do not support whole-index scans" +msgstr "les index h�ch�s ne supportent pas les parcours complets d'index" -#: commands/typecmds.c:402 -msgid "type output function must be specified" -msgstr "le type de sortie de la fonction doit �tre sp�cifi�" +#: access/hash/hashinsert.c:73 +#, 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" -#: commands/typecmds.c:407 -msgid "type modifier output function is useless without a type modifier input function" +#: access/hash/hashinsert.c:76 +msgid "Values larger than a buffer page cannot be indexed." msgstr "" -"la fonction en sortie du modificateur de type est inutile sans une fonction\n" -"en entr�e du modificateur de type" +"Les valeurs plus larges qu'une page de tampon ne peuvent pas �tre index�es." -#: commands/typecmds.c:430 +#: access/hash/hashutil.c:170 access/nbtree/nbtpage.c:433 +#: access/gist/gistutil.c:632 #, 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" +msgid "index \"%s\" contains unexpected zero page at block %u" +msgstr "l'index � %s � contient une page z�ro inattendue au bloc %u" -#: commands/typecmds.c:437 +#: 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 +#: access/gist/gist.c:731 access/gist/gistutil.c:635 +#: access/gist/gistutil.c:646 access/gist/gistvacuum.c:274 +msgid "Please REINDEX it." +msgstr "Merci d'ex�cuter REINDEX sur cet objet." + +#: access/hash/hashutil.c:181 access/hash/hashutil.c:193 +#: access/nbtree/nbtpage.c:444 access/gist/gistutil.c:643 #, c-format -msgid "type input function %s must return type %s" -msgstr "le type d'entr�e de la fonction %s doit �tre %s" +msgid "index \"%s\" contains corrupted page at block %u" +msgstr "l'index � %s � contient une page corrompue au bloc %u" -#: commands/typecmds.c:447 +#: access/hash/hashutil.c:209 #, 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 �" +msgid "index \"%s\" is not a hash index" +msgstr "l'index � %s � n'est pas un index hach�" -#: commands/typecmds.c:454 +#: access/hash/hashutil.c:215 #, c-format -msgid "type output function %s must return type \"cstring\"" -msgstr "le type de sortie de la fonction %s doit �tre � cstring �" +msgid "index \"%s\" has wrong hash version" +msgstr "l'index � %s � a la mauvaise version de hachage" -#: commands/typecmds.c:463 +#: access/heap/hio.c:175 access/heap/rewriteheap.c:597 #, c-format -msgid "type receive function %s must return type %s" -msgstr "la fonction receive du type %s doit renvoyer le type %s" +msgid "row is too big: size %lu, maximum size %lu" +msgstr "la ligne est trop grande : taille %lu, taille maximale %lu" -#: commands/typecmds.c:472 +#: access/heap/heapam.c:1089 access/heap/heapam.c:1117 +#: access/heap/heapam.c:1147 catalog/aclchk.c:1677 #, c-format -msgid "type send function %s must return type \"bytea\"" -msgstr "la fonction send du type %s doit renvoyer le type � bytea �" +msgid "\"%s\" is an index" +msgstr "� %s � est un index" -#: commands/typecmds.c:677 -#: commands/typecmds.c:2205 +#: access/heap/heapam.c:1094 access/heap/heapam.c:1122 +#: access/heap/heapam.c:1152 commands/tablecmds.c:2200 +#: commands/tablecmds.c:7447 commands/tablecmds.c:9123 catalog/aclchk.c:1684 #, c-format -msgid "\"%s\" is not a domain" -msgstr "� %s � n'est pas un domaine" +msgid "\"%s\" is a composite type" +msgstr "� %s � est un type composite" -#: commands/typecmds.c:816 +#: access/heap/heapam.c:3224 access/heap/heapam.c:3255 +#: access/heap/heapam.c:3290 #, 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:885 -msgid "multiple default expressions" -msgstr "multiples expressions par d�faut" - -#: commands/typecmds.c:949 -#: commands/typecmds.c:958 -msgid "conflicting NULL/NOT NULL constraints" -msgstr "contraintes NULL/NOT NULL en conflit" - -#: commands/typecmds.c:977 -#: commands/typecmds.c:1902 -msgid "unique constraints not possible for domains" -msgstr "contraintes uniques impossible pour les domaines" - -#: commands/typecmds.c:983 -#: commands/typecmds.c:1908 -msgid "primary key constraints not possible for domains" -msgstr "contraintes de cl� primaire impossible pour les domaines" +msgid "could not obtain lock on row in relation \"%s\"" +msgstr "n'a pas pu obtenir un verrou sur la relation � %s �" -#: commands/typecmds.c:989 -#: commands/typecmds.c:1914 -msgid "exclusion constraints not possible for domains" -msgstr "contraintes d'exclusion impossible pour les domaines" +#: access/transam/xact.c:729 +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" -#: commands/typecmds.c:995 -#: commands/typecmds.c:1920 -msgid "foreign key constraints not possible for domains" -msgstr "contraintes de cl� �trang�re impossible pour les domaines" +#: access/transam/xact.c:1269 +#, c-format +msgid "maximum number of committed subtransactions (%d) exceeded" +msgstr "nombre maximum de sous-transactions valid�es (%d) d�pass�" -#: commands/typecmds.c:1004 -#: commands/typecmds.c:1929 -msgid "specifying constraint deferrability not supported for domains" -msgstr "sp�cifier des contraintes d�ferrantes n'est pas support� par les domaines" +#: access/transam/xact.c:2045 +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" -#: commands/typecmds.c:1251 +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2837 #, 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 �" +msgid "%s cannot run inside a transaction block" +msgstr "%s ne peut pas �tre ex�cut� dans un bloc de transaction" -#: commands/typecmds.c:1302 +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2847 #, 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" +msgid "%s cannot run inside a subtransaction" +msgstr "%s ne peut pas �tre ex�cut� dans un sous-bloc de transaction" -#: commands/typecmds.c:1401 +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2857 #, c-format -msgid "typmod_in function %s must return type \"integer\"" -msgstr "la fonction typmod_in %s doit renvoyer le type � entier �" +msgid "%s cannot be executed from a function or multi-command string" +msgstr "" +"%s ne peut pas �tre ex�cut� � partir d'une fonction ou d'une cha�ne\n" +"contenant plusieurs commandes" -#: commands/typecmds.c:1428 +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2908 #, c-format -msgid "typmod_out function %s must return type \"cstring\"" -msgstr "la fonction typmod_out %s doit renvoyer le type � cstring �" +msgid "%s can only be used in transaction blocks" +msgstr "%s peut seulement �tre utilis� dans des blocs de transaction" -#: commands/typecmds.c:1455 -#, c-format -msgid "type analyze function %s must return type \"boolean\"" -msgstr "la fonction analyze du type %s doit renvoyer le type � boolean �" +#: access/transam/xact.c:3090 +msgid "there is already a transaction in progress" +msgstr "une transaction est d�j� en cours" -#: commands/typecmds.c:1513 -msgid "composite type must have at least one attribute" -msgstr "le type composite doit avoir au moins un attribut" +#: access/transam/xact.c:3257 access/transam/xact.c:3349 +msgid "there is no transaction in progress" +msgstr "aucune transaction en cours" -#: commands/typecmds.c:1754 -#, c-format -msgid "column \"%s\" of table \"%s\" contains null values" -msgstr "la colonne � %s � de la table � %s � contient des valeurs NULL" +#: access/transam/xact.c:3443 access/transam/xact.c:3493 +#: access/transam/xact.c:3499 access/transam/xact.c:3543 +#: access/transam/xact.c:3591 access/transam/xact.c:3597 +msgid "no such savepoint" +msgstr "aucun point de sauvegarde" + +#: access/transam/xact.c:4244 +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" -#: commands/typecmds.c:2000 +#: access/transam/varsup.c:114 #, c-format -msgid "column \"%s\" of table \"%s\" contains values that violate the new constraint" +msgid "" +"database is not accepting commands to avoid wraparound data loss in database " +"\"%s\"" msgstr "" -"la colonne � %s � de la table � %s � contient des valeurs violant la\n" -"nouvelle contrainte" +"la base de donn�es n'accepte plus de requ�tes pour �viter des pertes de\n" +"donn�es � cause de la r�initialisation de l'identifiant de transaction dans\n" +"la base de donn�es � %s �" -#: commands/typecmds.c:2281 -#: commands/typecmds.c:2290 -msgid "cannot use table references in domain check constraint" +#: 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 "" -"ne peut pas utiliser les r�f�rences de table dans la contrainte de\n" -"v�rification du domaine" +"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." -#: commands/typecmds.c:2519 -#: commands/typecmds.c:2591 -#: commands/typecmds.c:2822 +#: access/transam/varsup.c:121 #, c-format -msgid "%s is a table's row type" -msgstr "� %s � est du type ligne de table" - -#: commands/typecmds.c:2521 -#: commands/typecmds.c:2593 -#: commands/typecmds.c:2824 -msgid "Use ALTER TABLE instead." -msgstr "Utilisez ALTER TABLE � la place." +msgid "" +"database is not accepting commands to avoid wraparound data loss in database " +"with OID %u" +msgstr "" +"la base de donn�es n'accepte plus de requ�tes pour �viter des pertes de\n" +"donn�es � cause de la r�initialisation de l'identifiant de transaction dans\n" +"la base de donn�es %u" -#: commands/typecmds.c:2528 -#: commands/typecmds.c:2600 -#: commands/typecmds.c:2739 +#: access/transam/varsup.c:133 access/transam/varsup.c:368 #, c-format -msgid "cannot alter array type %s" -msgstr "ne peut pas modifier le type array %s" +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" +"%u transactions" -#: commands/typecmds.c:2530 -#: commands/typecmds.c:2602 -#: commands/typecmds.c:2741 -#, 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." +#: 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 "" +"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." -#: commands/typecmds.c:2786 +#: access/transam/varsup.c:140 access/transam/varsup.c:375 #, c-format -msgid "type %s is already in schema \"%s\"" -msgstr "le type � %s � existe d�j� dans le sch�ma � %s �" +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" +"%u transactions" -#: commands/typecmds.c:2808 +#: access/transam/varsup.c:333 #, c-format -msgid "type \"%s\" already exists in schema \"%s\"" -msgstr "le type � %s � existe d�j� dans le sch�ma � %s �" +msgid "transaction ID wrap limit is %u, limited by database with OID %u" +msgstr "" +"la limite de r�initialisation de l'identifiant de transaction est %u,\n" +"limit� par la base de donn�es d'OID %u" -#: commands/user.c:150 -msgid "SYSID can no longer be specified" -msgstr "SYSID ne peut plus �tre sp�cifi�" +#: access/transam/twophase.c:250 +#, c-format +msgid "transaction identifier \"%s\" is too long" +msgstr "l'identifiant de la transaction � %s � est trop long" -#: commands/user.c:272 -msgid "must be superuser to create superusers" -msgstr "doit �tre super-utilisateur pour cr�er des super-utilisateurs" +#: access/transam/twophase.c:257 +msgid "prepared transactions are disabled" +msgstr "les transactions pr�par�es sont d�sactiv�es" -#: commands/user.c:279 -msgid "permission denied to create role" -msgstr "droit refus� pour cr�er un r�le" +#: access/transam/twophase.c:258 +msgid "Set max_prepared_transactions to a nonzero value." +msgstr "Configure max_prepared_transactions � une valeur diff�rente de z�ro." -#: commands/user.c:286 -#: commands/user.c:1033 +#: access/transam/twophase.c:291 #, c-format -msgid "role name \"%s\" is reserved" -msgstr "le nom du r�le � %s � est r�serv�" +msgid "transaction identifier \"%s\" is already in use" +msgstr "l'identifiant de la transaction � %s � est d�j� utilis�" -#: commands/user.c:300 -#: commands/user.c:1027 -#, c-format -msgid "role \"%s\" already exists" -msgstr "le r�le � %s � existe d�j�" +#: access/transam/twophase.c:300 +msgid "maximum number of prepared transactions reached" +msgstr "nombre maximum de transactions pr�par�es obtenu" -#: commands/user.c:579 -#: commands/user.c:767 -#: commands/user.c:851 -#: commands/user.c:1002 -#: commands/variable.c:735 -#: commands/variable.c:849 -#: utils/cache/lsyscache.c:2669 -#: utils/init/miscinit.c:413 +#: access/transam/twophase.c:301 #, c-format -msgid "role \"%s\" does not exist" -msgstr "le r�le � %s � n'existe pas" - -#: commands/user.c:592 -#: commands/user.c:784 -#: commands/user.c:1267 -#: commands/user.c:1404 -msgid "must be superuser to alter superusers" -msgstr "doit �tre super-utilisateur pour modifier des super-utilisateurs" - -#: commands/user.c:607 -#: commands/user.c:792 -msgid "permission denied" -msgstr "droit refus�" +msgid "Increase max_prepared_transactions (currently %d)." +msgstr "Augmentez max_prepared_transactions (actuellement %d)." -#: commands/user.c:802 +#: access/transam/twophase.c:421 #, c-format -msgid "database \"%s\" not found" -msgstr "base de donn�es � %s � non trouv�e" - -#: commands/user.c:824 -msgid "permission denied to drop role" -msgstr "droit refus� pour supprimer le r�le" +msgid "prepared transaction with identifier \"%s\" is busy" +msgstr "la transaction pr�par�e d'identifiant � %s � est occup�e" -#: commands/user.c:856 -#, c-format -msgid "role \"%s\" does not exist, skipping" -msgstr "le r�le � %s � n'existe pas, poursuite du traitement" +#: access/transam/twophase.c:429 +msgid "permission denied to finish prepared transaction" +msgstr "droit refus� pour terminer la transaction pr�par�e" -#: commands/user.c:868 -#: commands/user.c:872 -msgid "current user cannot be dropped" -msgstr "l'utilisateur actuel ne peut pas �tre supprim�" +#: access/transam/twophase.c:430 +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." -#: commands/user.c:876 -msgid "session user cannot be dropped" -msgstr "l'utilisateur de la session ne peut pas �tre supprim�" +#: access/transam/twophase.c:441 +msgid "prepared transaction belongs to another database" +msgstr "la transaction pr�par�e appartient � une autre base de donn�es" -#: commands/user.c:887 -msgid "must be superuser to drop superusers" -msgstr "doit �tre super-utilisateur pour supprimer des super-utilisateurs" +#: access/transam/twophase.c:442 +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." -#: commands/user.c:900 +#: access/transam/twophase.c:456 #, 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" - -#: commands/user.c:1017 -msgid "session user cannot be renamed" -msgstr "l'utilisateur de la session ne peut pas �tre renomm�" - -#: commands/user.c:1021 -msgid "current user cannot be renamed" -msgstr "l'utilisateur courant ne peut pas �tre renomm�" - -#: commands/user.c:1044 -msgid "must be superuser to rename superusers" -msgstr "doit �tre super-utilisateur pour renommer les super-utilisateurs" +msgid "prepared transaction with identifier \"%s\" does not exist" +msgstr "la transaction pr�par�e d'identifiant � %s � n'existe pas" -#: commands/user.c:1051 -msgid "permission denied to rename role" -msgstr "droit refus� pour renommer le r�le" +#: access/transam/twophase.c:939 +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" -#: commands/user.c:1072 -msgid "MD5 password cleared because of role rename" -msgstr "mot de passe MD5 effac� � cause du renommage du r�le" +#: access/transam/twophase.c:957 +#, 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" -#: commands/user.c:1128 -msgid "column names cannot be included in GRANT/REVOKE ROLE" -msgstr "les noms de colonne ne peuvent pas �tre inclus dans GRANT/REVOKE ROLE" +#: access/transam/twophase.c:971 access/transam/twophase.c:988 +#: access/transam/twophase.c:1044 access/transam/twophase.c:1464 +#: access/transam/twophase.c:1471 +#, 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" -#: commands/user.c:1166 -msgid "permission denied to drop objects" -msgstr "droit refus� pour supprimer les objets" +#: access/transam/twophase.c:997 +#, 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" -#: commands/user.c:1193 -#: commands/user.c:1202 -msgid "permission denied to reassign objects" -msgstr "droit refus� pour r�-affecter les objets" +#: access/transam/twophase.c:1050 access/transam/twophase.c:1489 +#, 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" -#: commands/user.c:1275 -#: commands/user.c:1412 +#: access/transam/twophase.c:1130 access/transam/twophase.c:1569 #, c-format -msgid "must have admin option on role \"%s\"" -msgstr "doit avoir l'option admin sur le r�le � %s �" +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" -#: commands/user.c:1283 -msgid "must be superuser to set grantor" -msgstr "doit �tre super-utilisateur pour configurer le � donneur de droits �" +#: access/transam/twophase.c:1147 +#, c-format +msgid "could not stat two-phase state file \"%s\": %m" +msgstr "" +"n'a pas pu r�cup�rer des informations sur le fichier d'�tat de la " +"validation\n" +"en deux phases nomm� � %s � : %m" -#: commands/user.c:1308 +#: access/transam/twophase.c:1179 #, c-format -msgid "role \"%s\" is a member of role \"%s\"" -msgstr "le r�le � %s � est un membre du r�le � %s �" +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" -#: commands/user.c:1323 +#: access/transam/twophase.c:1271 #, c-format -msgid "role \"%s\" is already a member of role \"%s\"" -msgstr "le r�le � %s � est d�j� un membre du r�le � %s �" +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" -#: commands/user.c:1434 +#: access/transam/twophase.c:1426 #, c-format -msgid "role \"%s\" is not a member of role \"%s\"" -msgstr "le r�le � %s � n'est pas un membre du r�le � %s �" - -#: commands/vacuum.c:421 -msgid "oldest xmin is far in the past" -msgstr "le plus ancien xmin est loin dans le pass�" - -#: commands/vacuum.c:422 -msgid "Close open transactions soon to avoid wraparound problems." +msgid "could not remove two-phase state file \"%s\": %m" msgstr "" -"Fermez les transactions ouvertes rapidement pour �viter des probl�mes de\n" -"r�initialisation." +"n'a pas pu supprimer le fichier d'�tat de la validation en deux phases\n" +"� %s � : %m" -#: commands/vacuum.c:747 -msgid "some databases have not been vacuumed in over 2 billion transactions" +#: access/transam/twophase.c:1455 +#, c-format +msgid "could not recreate two-phase state file \"%s\": %m" 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" +"n'a pas pu re-cr�er le fichier d'�tat de la validation en deux phases nomm�\n" +"� %s � : %m" -#: commands/vacuum.c:748 -msgid "You might have already suffered transaction-wraparound data loss." +#: access/transam/twophase.c:1483 +#, c-format +msgid "could not fsync two-phase state file: %m" msgstr "" -"Vous pouvez avoir d�j� souffert de pertes de donn�es suite � une\n" -"r�initialisation de l'identifiant des transactions." +"n'a pas pu synchroniser sur disque (fsync) le fichier d'�tat de la\n" +"validation en deux phases : %m" -#: commands/vacuum.c:873 +#: access/transam/twophase.c:1578 #, c-format -msgid "skipping \"%s\" --- only superuser can vacuum it" -msgstr "ignore � %s � --- seul le super-utilisateur peut ex�cuter un VACUUM" +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" -#: commands/vacuum.c:877 +#: access/transam/twophase.c:1585 #, c-format -msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" +msgid "could not close two-phase state file \"%s\": %m" msgstr "" -"ignore � %s � --- seul le super-utilisateur ou le propri�taire de la base de donn�es\n" -"peuvent ex�cuter un VACUUM" +"n'a pas pu fermer le fichier d'�tat de la validation en deux phases nomm�\n" +"� %s � : %m" -#: commands/vacuum.c:881 +#: access/transam/twophase.c:1650 #, c-format -msgid "skipping \"%s\" --- only table or database owner can vacuum it" +msgid "removing future two-phase state file \"%s\"" msgstr "" -"ignore � %s � --- seul le propri�taire de la table ou de la base de donn�es\n" -"peut ex�cuter un VACUUM" +"suppression du futur fichier d'�tat de la validation en deux phases nomm� � " +"%s �" -#: commands/vacuum.c:898 +#: access/transam/twophase.c:1666 access/transam/twophase.c:1677 +#: access/transam/twophase.c:1790 access/transam/twophase.c:1801 +#: access/transam/twophase.c:1874 #, c-format -msgid "skipping \"%s\" --- cannot vacuum indexes, views, or special system tables" +msgid "removing corrupt two-phase state file \"%s\"" msgstr "" -"ignore � %s � --- n'a pas pu ex�cuter un VACUUM sur les index, vues ou\n" -"tables syst�me" +"suppression du fichier d'�tat corrompu de la validation en deux phases " +"nomm�\n" +"� %s �" -#: commands/vacuumlazy.c:234 +#: access/transam/twophase.c:1779 access/transam/twophase.c:1863 #, 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" +msgid "removing stale two-phase state file \"%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 syst�me : %s" +"suppression du vieux fichier d'�tat de la validation en deux phases nomm� � " +"%s �" -#: commands/vacuumlazy.c:450 +#: access/transam/twophase.c:1881 #, c-format -msgid "relation \"%s\" page %u is uninitialized --- fixing" -msgstr "relation � %s � : la page %u n'est pas initialis�e --- correction en cours" +msgid "recovering prepared transaction %u" +msgstr "r�cup�ration de la transaction pr�par�e %u" -#: commands/vacuumlazy.c:801 +#: access/transam/slru.c:609 #, c-format -msgid "\"%s\": removed %.0f row versions in %u pages" -msgstr "� %s � : %.0f versions de ligne supprim�es parmi %u pages" +msgid "file \"%s\" doesn't exist, reading as zeroes" +msgstr "le fichier � %s � n'existe pas, contenu lu comme des z�ros" -#: commands/vacuumlazy.c:806 +#: 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 "\"%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" +msgid "could not access status of transaction %u" +msgstr "n'a pas pu acc�der au statut de la transaction %u" -#: commands/vacuumlazy.c:809 +#: access/transam/slru.c:840 #, 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 versions de lignes mortes ne peuvent pas encore �tre supprim�es.\n" -"Il y avait %.0f pointeurs d'�l�ments inutilis�s.\n" -"%u pages sont enti�rement vides.\n" -"%s." +msgid "Could not open file \"%s\": %m." +msgstr "N'a pas pu ouvrir le fichier � %s � : %m" -#: commands/vacuumlazy.c:867 +#: access/transam/slru.c:846 #, c-format -msgid "\"%s\": removed %d row versions in %d pages" -msgstr "� %s �: %d versions de ligne supprim�e parmi %d pages" +msgid "Could not seek in file \"%s\" to offset %u: %m." +msgstr "N'a pas pu se d�placer dans le fichier � %s � au d�calage %u : %m" -#: commands/vacuumlazy.c:870 -#: commands/vacuumlazy.c:962 -#: commands/vacuumlazy.c:1087 +#: access/transam/slru.c:853 #, c-format -msgid "%s." -msgstr "%s." +msgid "Could not read from file \"%s\" at offset %u: %m." +msgstr "N'a pas pu lire le fichier � %s � au d�calage %u : %m" -#: commands/vacuumlazy.c:959 +#: access/transam/slru.c:860 #, c-format -msgid "scanned index \"%s\" to remove %d row versions" -msgstr "a parcouru l'index � %s � pour supprimer %d versions de lignes" +msgid "Could not write to file \"%s\" at offset %u: %m." +msgstr "N'a pas pu �crire le fichier � %s � au d�calage %u : %m" -#: commands/vacuumlazy.c:1001 +#: access/transam/slru.c:867 #, 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" +msgid "Could not fsync file \"%s\": %m." +msgstr "N'a pas pu synchroniser sur disque (fsync) le fichier � %s � : %m" -#: commands/vacuumlazy.c:1005 +#: access/transam/slru.c:874 #, c-format -msgid "" -"%.0f index row versions were removed.\n" -"%u index pages have been deleted, %u are currently reusable.\n" -"%s." -msgstr "" -"%.0f versions de ligne d'index ont �t� supprim�es.\n" -"%u pages d'index ont �t� supprim�es, %u sont actuellement r�utilisables.\n" -"%s." +msgid "Could not close file \"%s\": %m." +msgstr "N'a pas pu fermer le fichier � %s � : %m" -#: commands/vacuumlazy.c:1084 +#: access/transam/slru.c:1101 #, c-format -msgid "\"%s\": truncated %u to %u pages" -msgstr "� %s � : %u pages tronqu�s en %u" - -#: commands/variable.c:62 -msgid "invalid list syntax for parameter \"datestyle\"" -msgstr "syntaxe de liste invalide pour le param�tre � datestyle �" +msgid "could not truncate directory \"%s\": apparent wraparound" +msgstr "n'a pas pu tronquer le r�pertoire � %s � : contournement apparent" -#: commands/variable.c:161 +#: access/transam/slru.c:1182 #, c-format -msgid "unrecognized \"datestyle\" key word: \"%s\"" -msgstr "mot cl� � datestyle � non reconnu : � %s �" - -#: commands/variable.c:175 -msgid "conflicting \"datestyle\" specifications" -msgstr "sp�cifications � datestyle � conflictuelles" - -#: commands/variable.c:285 -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" - -#: commands/variable.c:293 -msgid "invalid interval value for time zone: day not allowed" -msgstr "valeur d'intervalle invalide pour le fuseau horaire : jour non autoris�" +msgid "removing file \"%s\"" +msgstr "suppression du fichier � %s �" -#: commands/variable.c:361 -#: commands/variable.c:493 +#: access/transam/xlog.c:1340 #, c-format -msgid "unrecognized time zone name: \"%s\"" -msgstr "nom de fuseau horaire non reconnu : � %s �" +msgid "could not create archive status file \"%s\": %m" +msgstr "n'a pas pu cr�er le fichier de statut d'archivage � %s � : %m" -#: commands/variable.c:370 -#: commands/variable.c:502 +#: access/transam/xlog.c:1348 #, c-format -msgid "time zone \"%s\" appears to use leap seconds" -msgstr "le fuseau horaire � %s � semble utiliser les secondes � leap �" - -#: commands/variable.c:372 -#: commands/variable.c:504 -msgid "PostgreSQL does not support leap seconds." -msgstr "PostgreSQL ne supporte pas les secondes � leap �." - -#: commands/variable.c:557 -msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query" -msgstr "SET TRANSACTION ISOLATION LEVEL doit �tre appel� avant toute requ�te" +msgid "could not write archive status file \"%s\": %m" +msgstr "n'a pas pu �crire le fichier de statut d'archivage � %s � : %m" -#: commands/variable.c:566 -msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction" +#: access/transam/xlog.c:1803 access/transam/xlog.c:10543 +#: replication/walreceiver.c:515 replication/walsender.c:1013 +#, c-format +msgid "could not seek in log file %u, segment %u to offset %u: %m" msgstr "" -"SET TRANSACTION ISOLATION LEVEL ne doit pas �tre appel� dans une\n" -"sous-transaction" +"n'a pas pu se d�placer dans le journal de transactions %u, du segment %u au\n" +"segment %u : %m" -#: commands/variable.c:665 -#: utils/mb/mbutils.c:241 +#: access/transam/xlog.c:1820 replication/walreceiver.c:532 #, c-format -msgid "conversion between %s and %s is not supported" -msgstr "la conversion entre %s et %s n'est pas support�e" +msgid "could not write to log file %u, segment %u at offset %u, length %lu: %m" +msgstr "" +"n'a pas pu �crire le journal de transactions %u, segment %u au d�calage %u,\n" +"longueur %lu : %m" -#: commands/variable.c:865 +#: access/transam/xlog.c:2022 #, c-format -msgid "permission denied to set role \"%s\"" -msgstr "droit refus� pour configurer le r�le � %s �" +msgid "updated min recovery point to %X/%X" +msgstr "mise � jour du point minimum de restauration sur %X/%X" -#: tcop/fastpath.c:110 -#: tcop/fastpath.c:492 -#: tcop/fastpath.c:622 +#: access/transam/xlog.c:2372 access/transam/xlog.c:2476 +#: access/transam/xlog.c:2705 access/transam/xlog.c:2776 +#: access/transam/xlog.c:2833 replication/walsender.c:1001 #, 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:957 -#: tcop/postgres.c:1267 -#: tcop/postgres.c:1548 -#: tcop/postgres.c:1990 -#: tcop/postgres.c:2358 -#: tcop/postgres.c:2439 -msgid "current transaction is aborted, commands ignored until end of transaction block" -msgstr "" -"la transaction est annul�e, les commandes sont ignor�es jusqu'� la fin du bloc\n" -"de la transaction" +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" -#: tcop/fastpath.c:332 +#: access/transam/xlog.c:2437 access/transam/xlog.c:2569 +#: access/transam/xlog.c:4584 storage/file/copydir.c:269 storage/smgr/md.c:932 +#: storage/smgr/md.c:1137 storage/smgr/md.c:1291 #, c-format -msgid "fastpath function call: \"%s\" (OID %u)" -msgstr "appel de fonction fastpath : � %s � (OID %u)" - -#: tcop/fastpath.c:359 -#: parser/parse_func.c:1654 -msgid "argument to pg_get_expr() must come from system catalogs" -msgstr "l'argument de pg_get_expr() doit provenir des catalogues syst�mes" +msgid "could not fsync file \"%s\": %m" +msgstr "n'a pas pu synchroniser sur disque (fsync) le fichier � %s � : %m" -#: tcop/fastpath.c:418 -#: tcop/postgres.c:1127 -#: tcop/postgres.c:1414 -#: tcop/postgres.c:1831 -#: tcop/postgres.c:2048 +#: access/transam/xlog.c:2442 access/transam/xlog.c:2574 +#: access/transam/xlog.c:4589 commands/copy.c:1329 storage/file/copydir.c:211 #, c-format -msgid "duration: %s ms" -msgstr "dur�e : %s ms" +msgid "could not close file \"%s\": %m" +msgstr "n'a pas pu fermer le fichier � %s � : %m" -#: tcop/fastpath.c:422 +#: access/transam/xlog.c:2546 #, c-format -msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" -msgstr "dur�e : %s ms, appel de fonction fastpath : � %s � (OID %u)" +msgid "not enough data in file \"%s\"" +msgstr "donn�es insuffisantes dans le fichier � %s �" -#: tcop/fastpath.c:460 -#: tcop/fastpath.c:587 +#: access/transam/xlog.c:2665 #, c-format -msgid "function call message contains %d arguments but function requires %d" +msgid "" +"could not link file \"%s\" to \"%s\" (initialization of log file %u, segment " +"%u): %m" msgstr "" -"le message d'appel de la fonction contient %d arguments mais la fonction en\n" -"requiert %d" +"n'a pas pu lier le fichier � %s � � � %s � (initialisation du journal de\n" +"transactions %u, segment %u) : %m" -#: tcop/fastpath.c:468 +#: access/transam/xlog.c:2677 #, c-format -msgid "function call message contains %d argument formats but %d arguments" +msgid "" +"could not rename file \"%s\" to \"%s\" (initialization of log file %u, " +"segment %u): %m" msgstr "" -"le message d'appel de la fonction contient %d formats d'argument mais %d\n" -" arguments" +"n'a pas pu renommer le fichier � %s � en � %s � (initialisation du journal\n" +"de transactions %u, segment %u) : %m" -#: tcop/fastpath.c:555 -#: tcop/fastpath.c:638 +#: access/transam/xlog.c:2860 replication/walreceiver.c:489 #, 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" +msgid "could not close log file %u, segment %u: %m" +msgstr "n'a pas pu fermer le journal de transactions %u, segment %u : %m" -#: tcop/postgres.c:398 -#: tcop/postgres.c:410 -#: tcop/postgres.c:421 -#: tcop/postgres.c:433 -#: tcop/postgres.c:4156 +#: access/transam/xlog.c:2940 access/transam/xlog.c:9381 storage/smgr/md.c:371 +#: storage/smgr/md.c:420 storage/smgr/md.c:1251 #, c-format -msgid "invalid frontend message type %d" -msgstr "type %d du message de l'interface invalide" +msgid "could not remove file \"%s\": %m" +msgstr "n'a pas pu supprimer le fichier � %s � : %m" -#: tcop/postgres.c:898 +#: access/transam/xlog.c:3076 #, c-format -msgid "statement: %s" -msgstr "instruction : %s" +msgid "archive file \"%s\" has wrong size: %lu instead of %lu" +msgstr "le fichier d'archive � %s � a la mauvaise taille : %lu au lieu de %lu" -#: tcop/postgres.c:1132 +#: access/transam/xlog.c:3085 #, c-format -msgid "duration: %s ms statement: %s" -msgstr "dur�e : %s ms, instruction : %s" +msgid "restored log file \"%s\" from archive" +msgstr "restauration du journal de transactions � %s � � partir de l'archive" -#: tcop/postgres.c:1182 +#: access/transam/xlog.c:3135 #, c-format -msgid "parse %s: %s" -msgstr "analyse %s : %s" +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" -#: tcop/postgres.c:1240 -msgid "cannot insert multiple commands into a prepared statement" -msgstr "ne peut pas ins�rer les commandes multiples dans une instruction pr�par�e" +#. 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:3249 +#, c-format +msgid "%s \"%s\": return code %d" +msgstr "%s � %s � : code de retour %d" -#: tcop/postgres.c:1419 +#: access/transam/xlog.c:3359 access/transam/xlog.c:3542 #, c-format -msgid "duration: %s ms parse %s: %s" -msgstr "dur�e : %s ms, analyse %s : %s" +msgid "could not open transaction log directory \"%s\": %m" +msgstr "" +"n'a pas pu ouvrir le r�pertoire des journaux de transactions � %s � : %m" -#: tcop/postgres.c:1465 +#: access/transam/xlog.c:3413 #, c-format -msgid "bind %s to %s" -msgstr "lie %s � %s" +msgid "recycled transaction log file \"%s\"" +msgstr "recyclage du journal de transactions � %s �" -#: tcop/postgres.c:1484 -#: tcop/postgres.c:2338 -msgid "unnamed prepared statement does not exist" -msgstr "l'instruction pr�par�e non nomm�e n'existe pas" +#: access/transam/xlog.c:3429 +#, c-format +msgid "removing transaction log file \"%s\"" +msgstr "suppression du journal de transactions � %s �" -#: tcop/postgres.c:1526 +#: access/transam/xlog.c:3452 #, 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" +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:3464 +#, 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" -#: tcop/postgres.c:1532 +#: access/transam/xlog.c:3502 access/transam/xlog.c:3512 #, c-format -msgid "bind message supplies %d parameters, but prepared statement \"%s\" requires %d" +msgid "required WAL directory \"%s\" does not exist" msgstr "" -"le message bind fournit %d param�tres, mais l'instruction pr�par�e � %s � en\n" -"requiert %d" +"le r�pertoire � %s � requis pour les journaux de transactions n'existe pas" -#: tcop/postgres.c:1697 +#: access/transam/xlog.c:3518 #, c-format -msgid "incorrect binary data format in bind parameter %d" -msgstr "format des donn�es binaires incorrect dans le param�tre bind %d" +msgid "creating missing WAL directory \"%s\"" +msgstr "" +"cr�ation du r�pertoire manquant � %s � pour les journaux de transactions" -#: tcop/postgres.c:1836 +#: access/transam/xlog.c:3521 #, c-format -msgid "duration: %s ms bind %s%s%s: %s" -msgstr "dur�e : %s ms, lien %s%s%s : %s" +msgid "could not create missing directory \"%s\": %m" +msgstr "n'a pas pu cr�er le r�pertoire � %s � manquant : %m" -#: tcop/postgres.c:1884 -#: tcop/postgres.c:2425 +#: access/transam/xlog.c:3555 #, c-format -msgid "portal \"%s\" does not exist" -msgstr "le portail � %s � n'existe pas" +msgid "removing transaction log backup history file \"%s\"" +msgstr "suppression du fichier historique des journaux de transaction � %s �" -#: tcop/postgres.c:1971 -#: tcop/postgres.c:2056 -msgid "execute fetch from" -msgstr "ex�cute fetch � partir de" +#: access/transam/xlog.c:3697 +#, c-format +msgid "incorrect hole size in record at %X/%X" +msgstr "taille du trou incorrect � l'enregistrement %X/%X" -#: tcop/postgres.c:1972 -#: tcop/postgres.c:2057 -msgid "execute" -msgstr "ex�cute" +#: access/transam/xlog.c:3710 +#, c-format +msgid "incorrect total length in record at %X/%X" +msgstr "longueur totale incorrecte � l'enregistrement %X/%X" -#: tcop/postgres.c:1969 +#: access/transam/xlog.c:3723 #, c-format -msgid "%s %s%s%s: %s" -msgstr "%s %s%s%s: %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" -#: tcop/postgres.c:2053 +#: access/transam/xlog.c:3801 access/transam/xlog.c:3839 #, c-format -msgid "duration: %s ms %s %s%s%s: %s" -msgstr "dur�e : %s ms %s %s%s%s: %s" +msgid "invalid record offset at %X/%X" +msgstr "d�calage invalide de l'enregistrement %X/%X" -#: tcop/postgres.c:2179 +#: access/transam/xlog.c:3847 #, c-format -msgid "prepare: %s" -msgstr "pr�paration : %s" +msgid "contrecord is requested by %X/%X" +msgstr "� contrecord � est requis par %X/%X" -#: tcop/postgres.c:2242 +#: access/transam/xlog.c:3862 #, c-format -msgid "parameters: %s" -msgstr "param�tres : %s" - -#: tcop/postgres.c:2261 -msgid "abort reason: recovery conflict" -msgstr "raison de l'annulation : conflit de restauration" - -#: tcop/postgres.c:2277 -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." +msgid "invalid xlog switch record at %X/%X" +msgstr "" +"enregistrement de basculement du journal de transaction invalide � %X/%X" -#: tcop/postgres.c:2280 -msgid "User was holding a relation lock for too long." -msgstr "L'utilisateur conservait un verrou sur une relation depuis trop longtemps." +#: access/transam/xlog.c:3870 +#, c-format +msgid "record with zero length at %X/%X" +msgstr "enregistrement de longueur nulle � %X/%X" -#: tcop/postgres.c:2283 -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�." +#: access/transam/xlog.c:3879 +#, c-format +msgid "invalid record length at %X/%X" +msgstr "longueur invalide de l'enregistrement � %X/%X" -#: tcop/postgres.c:2286 -msgid "User query might have needed to see row versions that must be removed." -msgstr "" -"La requ�te de l'utilisateur pourrait avoir eu besoin de voir des versions de\n" -"lignes qui doivent �tre supprim�es." +#: access/transam/xlog.c:3886 +#, c-format +msgid "invalid resource manager ID %u at %X/%X" +msgstr "identifiant du gestionnaire de ressources invalide %u � %X/%X" -#: tcop/postgres.c:2289 -#: storage/ipc/standby.c:494 -msgid "User transaction caused buffer deadlock with recovery." -msgstr "La transaction de l'utilisateur causait un verrou mortel lors de la restauration." +#: access/transam/xlog.c:3899 access/transam/xlog.c:3915 +#, c-format +msgid "record with incorrect prev-link %X/%X at %X/%X" +msgstr "enregistrement avec prev-link %X/%X incorrect � %X/%X" -#: tcop/postgres.c:2292 -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�." +#: access/transam/xlog.c:3944 +#, c-format +msgid "record length %u at %X/%X too long" +msgstr "longueur trop importante de l'enregistrement %u � %X/%X" -#: tcop/postgres.c:2626 -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" +#: access/transam/xlog.c:3984 +#, c-format +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" -#: tcop/postgres.c:2627 -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." +#: access/transam/xlog.c:3994 +#, c-format +msgid "invalid contrecord length %u in log file %u, segment %u, offset %u" 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." +"longueur invalide du � contrecord � %u dans le journal de tranasctions %u,\n" +"segment %u, d�calage %u" -#: tcop/postgres.c:2631 -#: tcop/postgres.c:2963 -msgid "In a moment you should be able to reconnect to the database and repeat your command." +#: access/transam/xlog.c:4084 +#, c-format +msgid "invalid magic number %04X in log file %u, segment %u, offset %u" msgstr "" -"Dans un moment, vous devriez �tre capable de vous reconnecter � la base de\n" -"donn�es et de relancer votre commande." +"num�ro magique invalide %04X dans le journal de transactions %u, segment " +"%u,\n" +"d�calage %u" -#: tcop/postgres.c:2735 -msgid "floating-point exception" -msgstr "exception d� � une virgule flottante" +#: access/transam/xlog.c:4091 access/transam/xlog.c:4137 +#, c-format +msgid "invalid info bits %04X in log file %u, segment %u, offset %u" +msgstr "" +"bits info %04X invalides dans le journal de transactions %u, segment %u,\n" +"d�calage %u" -#: tcop/postgres.c:2736 -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." +#: access/transam/xlog.c:4113 access/transam/xlog.c:4121 +#: access/transam/xlog.c:4128 +msgid "WAL file is from different database system" 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." +"le journal de transactions provient d'un syst�me de bases de donn�es " +"diff�rent" -#: tcop/postgres.c:2903 -msgid "terminating autovacuum process due to administrator command" -msgstr "arr�t du processus autovacuum suite � la demande de l'administrateur" +#: access/transam/xlog.c:4114 +#, c-format +msgid "" +"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 de pg_control du syst�me de base de donn�es est %s." -#: tcop/postgres.c:2907 -#: tcop/postgres.c:2912 -#: tcop/postgres.c:2961 -msgid "terminating connection due to conflict with recovery" -msgstr "arr�t de la connexion � cause d'un conflit avec la restauration" +#: access/transam/xlog.c:4122 +msgid "Incorrect XLOG_SEG_SIZE in page header." +msgstr "XLOG_SEG_SIZE incorrecte dans l'en-t�te de page." -#: tcop/postgres.c:2917 -msgid "terminating connection due to administrator command" -msgstr "arr�t des connexions suite � la demande de l'administrateur" +#: access/transam/xlog.c:4129 +msgid "Incorrect XLOG_BLCKSZ in page header." +msgstr "XLOG_BLCKSZ incorrect dans l'en-t�te de page." -#: tcop/postgres.c:2932 -msgid "canceling authentication due to timeout" -msgstr "annulation de l'authentification � cause du d�lai �coul�" +#: access/transam/xlog.c:4145 +#, c-format +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" -#: tcop/postgres.c:2941 -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" +#: access/transam/xlog.c:4157 +#, c-format +msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u" +msgstr "" +"identifiant timeline %u inattendu dans le journal de transactions %u,\n" +"segment %u, d�calage %u" -#: tcop/postgres.c:2950 -msgid "canceling autovacuum task" -msgstr "annulation de la t�che d'autovacuum" +#: access/transam/xlog.c:4184 +#, c-format +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" -#: tcop/postgres.c:2968 -#: storage/ipc/standby.c:493 -msgid "canceling statement due to conflict with recovery" -msgstr "annulation de la requ�te � cause d'un conflit avec la restauration" +#: access/transam/xlog.c:4261 +#, c-format +msgid "syntax error in history file: %s" +msgstr "erreur de syntaxe dans le fichier historique : %s" -#: tcop/postgres.c:2984 -msgid "canceling statement due to user request" -msgstr "annulation de la requ�te � la demande de l'utilisateur" +#: access/transam/xlog.c:4262 +msgid "Expected a numeric timeline ID." +msgstr "Identifiant timeline num�rique attendue" -#: tcop/postgres.c:3060 -#: tcop/postgres.c:3081 -msgid "stack depth limit exceeded" -msgstr "d�passement de limite (en profondeur) de la pile" +#: access/transam/xlog.c:4267 +#, c-format +msgid "invalid data in history file: %s" +msgstr "donn�es invalides dans le fichier historique : � %s �" -#: tcop/postgres.c:3061 -#: tcop/postgres.c:3082 -msgid "Increase the configuration parameter \"max_stack_depth\", after ensuring the platform's stack depth limit is adequate." -msgstr "" -"Augmenter le param�tre � max_stack_depth � apr�s vous �tre assur� que la\n" -"limite de profondeur de la pile de la plateforme est ad�quate." +#: access/transam/xlog.c:4268 +msgid "Timeline IDs must be in increasing sequence." +msgstr "Les identifiants timeline doivent �tre en ordre croissant." -#: tcop/postgres.c:3099 +#: access/transam/xlog.c:4281 #, c-format -msgid "\"max_stack_depth\" must not exceed %ldkB" -msgstr "� max_stack_depth � ne doit pas d�passer %ld Ko" +msgid "invalid data in history file \"%s\"" +msgstr "donn�es invalides dans le fichier historique � %s �" -#: tcop/postgres.c:3101 -msgid "Increase the platform's stack depth limit via \"ulimit -s\" or local equivalent." +#: access/transam/xlog.c:4282 +msgid "Timeline IDs must be less than child timeline's ID." msgstr "" -"Augmenter la limite de profondeur de la pile sur votre plateforme via\n" -"� ulimit -s � ou l'�quivalent local." - -#: tcop/postgres.c:3424 -msgid "invalid command-line arguments for server process" -msgstr "arguments invalides en ligne de commande pour le processus serveur" +"Les identifiants timeline doivent �tre plus petits que les enfants des\n" +"identifiants timeline." -#: tcop/postgres.c:3425 -#: tcop/postgres.c:3431 +#: access/transam/xlog.c:4368 #, c-format -msgid "Try \"%s --help\" for more information." -msgstr "Essayez � %s --help � pour plus d'informations." +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" -#: tcop/postgres.c:3429 +#: access/transam/xlog.c:4381 #, c-format -msgid "%s: invalid command-line arguments" -msgstr "%s : arguments invalides en ligne de commande" +msgid "new target timeline is %u" +msgstr "la nouvelle timeline cible est %u" -#: tcop/postgres.c:3528 +#: access/transam/xlog.c:4606 #, c-format -msgid "%s: no database nor user name specified" -msgstr "%s : aucune base de donn�es et aucun utilisateur sp�cifi�s" +msgid "could not link file \"%s\" to \"%s\": %m" +msgstr "n'a pas pu lier le fichier � %s � � � %s � : %m" -#: tcop/postgres.c:4066 +#: access/transam/xlog.c:4695 #, c-format -msgid "invalid CLOSE message subtype %d" -msgstr "sous-type %d du message CLOSE invalide" +msgid "could not create control file \"%s\": %m" +msgstr "n'a pas pu cr�er le fichier de contr�le � %s � : %m" -#: tcop/postgres.c:4099 +#: access/transam/xlog.c:4706 access/transam/xlog.c:4931 #, c-format -msgid "invalid DESCRIBE message subtype %d" -msgstr "sous-type %d du message DESCRIBE invalide" +msgid "could not write to control file: %m" +msgstr "n'a pas pu �crire le fichier de contr�le : %m" -#: tcop/postgres.c:4330 +#: access/transam/xlog.c:4712 access/transam/xlog.c:4937 #, c-format -msgid "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%s" -msgstr "" -"d�connexion : dur�e de la session : %d:%02d:%02d.%03d\n" -"utilisateur=%s base=%s h�te=%s%s%s" +msgid "could not fsync control file: %m" +msgstr "n'a pas pu synchroniser sur disque (fsync) le fichier de contr�le : %m" -#: tcop/pquery.c:670 +#: access/transam/xlog.c:4717 access/transam/xlog.c:4942 #, c-format -msgid "bind message has %d result formats but query has %d columns" -msgstr "le message bind a %d formats de r�sultat mais la requ�te a %d colonnes" - -#: tcop/pquery.c:978 -msgid "cursor can only scan forward" -msgstr "le curseur peut seulement parcourir en avant" - -#: tcop/pquery.c:979 -msgid "Declare it with SCROLL option to enable backward scan." -msgstr "D�clarez-le avec l'option SCROLL pour activer le parcours inverse." +msgid "could not close control file: %m" +msgstr "n'a pas pu fermer le fichier de contr�le : %m" -#. translator: %s is name of a SQL command, eg CREATE -#: tcop/utility.c:242 +#: access/transam/xlog.c:4735 access/transam/xlog.c:4920 #, c-format -msgid "cannot execute %s in a read-only transaction" -msgstr "ne peut pas ex�cuter %s dans une transaction en lecture seule" +msgid "could not open control file \"%s\": %m" +msgstr "n'a pas pu ouvrir le fichier de contr�le � %s � : %m" -#. translator: %s is name of a SQL command, eg CREATE -#: tcop/utility.c:261 +#: access/transam/xlog.c:4741 #, c-format -msgid "cannot execute %s during recovery" -msgstr "ne peut pas ex�cut� %s lors de la restauration" +msgid "could not read from control file: %m" +msgstr "n'a pas pu lire le fichier de contr�le : %m" -#. translator: %s is name of a SQL command, eg PREPARE -#: tcop/utility.c:279 +#: access/transam/xlog.c:4755 #, c-format -msgid "cannot execute %s within security-restricted operation" +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 "" -"ne peut pas ex�cuter %s � l'int�rieur d'une fonction restreinte\n" -"pour s�curit�" +"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)." -#: tcop/utility.c:1129 -msgid "must be superuser to do CHECKPOINT" -msgstr "doit �tre super-utilisateur pour ex�cuter un point de v�rification (CHECKPOINT)" +#: access/transam/xlog.c:4759 +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." -#: executor/execCurrent.c:75 +#: access/transam/xlog.c:4764 #, c-format -msgid "cursor \"%s\" is not a SELECT query" -msgstr "le curseur � %s � n'est pas une requ�te SELECT" +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." -#: executor/execCurrent.c:81 -#, c-format -msgid "cursor \"%s\" is held from a previous transaction" -msgstr "le curseur � %s � est d�tenu par une transaction pr�c�dente" +#: access/transam/xlog.c:4767 access/transam/xlog.c:4791 +#: access/transam/xlog.c:4798 access/transam/xlog.c:4803 +msgid "It looks like you need to initdb." +msgstr "Il semble que vous avez besoin d'initdb." -#: executor/execCurrent.c:113 -#, 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 �" +#: access/transam/xlog.c:4778 +msgid "incorrect checksum in control file" +msgstr "somme de contr�le incorrecte dans le fichier de contr�le" -#: executor/execCurrent.c:122 +#: access/transam/xlog.c:4788 #, 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 "" +"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." -#: executor/execCurrent.c:132 -#: executor/execCurrent.c:178 +#: access/transam/xlog.c:4795 #, c-format -msgid "cursor \"%s\" is not positioned on a row" -msgstr "le curseur � %s � n'est pas positionn� sur une ligne" +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." -#: executor/execCurrent.c:165 -#, c-format -msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\"" -msgstr "le curseur � %s � n'est pas un parcours modifiable de la table � %s �" +#: access/transam/xlog.c:4802 +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." -#: executor/execCurrent.c:230 -#: executor/execQual.c:1024 +#: access/transam/xlog.c:4807 #, 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 "" +"The database cluster was initialized with BLCKSZ %d, but the server was " +"compiled with BLCKSZ %d." +msgstr "" +"Le cluster de base de donn�es a �t� initialis� avec un BLCKSZ � %d alors " +"que\n" +"le serveur a �t� compil� avec un BLCKSZ � %d." -#: executor/execCurrent.c:242 -#: executor/execQual.c:1035 -#, c-format -msgid "no value found for parameter %d" -msgstr "aucune valeur trouv�e pour le param�tre %d" +#: access/transam/xlog.c:4810 access/transam/xlog.c:4817 +#: access/transam/xlog.c:4824 access/transam/xlog.c:4831 +#: access/transam/xlog.c:4838 access/transam/xlog.c:4845 +#: access/transam/xlog.c:4852 access/transam/xlog.c:4860 +#: access/transam/xlog.c:4867 access/transam/xlog.c:4876 +#: access/transam/xlog.c:4883 access/transam/xlog.c:4892 +#: access/transam/xlog.c:4899 +msgid "It looks like you need to recompile or initdb." +msgstr "Il semble que vous avez besoin de recompiler ou de relancer initdb." -#: executor/execMain.c:874 +#: access/transam/xlog.c:4814 #, c-format -msgid "cannot change sequence \"%s\"" -msgstr "ne peut pas modifier la s�quence � %s �" +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." -#: executor/execMain.c:880 +#: access/transam/xlog.c:4821 #, c-format -msgid "cannot change TOAST relation \"%s\"" -msgstr "ne peut pas modifier la relation TOAST � %s �" +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." -#: executor/execMain.c:886 +#: access/transam/xlog.c:4828 #, c-format -msgid "cannot change view \"%s\"" -msgstr "ne peut pas modifier la vue � %s �" +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." -#: executor/execMain.c:892 +#: access/transam/xlog.c:4835 #, c-format -msgid "cannot change relation \"%s\"" -msgstr "ne peut pas modifier la relation � %s �" +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." -#: executor/execMain.c:1317 +#: access/transam/xlog.c:4842 #, 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 �" +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." -#: executor/execMain.c:1329 -#, c-format -msgid "new row for relation \"%s\" violates check constraint \"%s\"" -msgstr "la nouvelle ligne viole la contrainte de v�rification � %s � de la relation � %s �" - -#: executor/execQual.c:296 -#: executor/execQual.c:324 -#: executor/execQual.c:2988 -#: utils/adt/array_userfuncs.c:428 -#: utils/adt/arrayfuncs.c:204 -#: utils/adt/arrayfuncs.c:483 -#: utils/adt/arrayfuncs.c:1218 -#: utils/adt/arrayfuncs.c:2890 -#: utils/adt/arrayfuncs.c:4570 +#: access/transam/xlog.c:4849 #, 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)" +msgid "" +"The database cluster was initialized with TOAST_MAX_CHUNK_SIZE %d, but the " +"server was compiled with TOAST_MAX_CHUNK_SIZE %d." +msgstr "" +"Le cluster de bases de donn�es a �t� initialis� avec un " +"TOAST_MAX_CHUNK_SIZE\n" +"� %d alors que le serveur a �t� compil� avec un TOAST_MAX_CHUNK_SIZE � %d." -#: executor/execQual.c:309 -#: executor/execQual.c:337 -msgid "array subscript in assignment must not be null" -msgstr "l'indice du tableau dans l'affectation ne doit pas �tre NULL" +#: access/transam/xlog.c:4858 +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:4865 +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:4874 +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:4881 +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:4890 +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:4897 +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." -#: executor/execQual.c:633 -#: executor/execQual.c:3906 +#: access/transam/xlog.c:5222 #, c-format -msgid "attribute %d has wrong type" -msgstr "l'attribut %d a un type invalide" +msgid "could not write bootstrap transaction log file: %m" +msgstr "n'a pas pu �crire le � bootstrap � du journal des transactions : %m" -#: executor/execQual.c:634 -#: executor/execQual.c:3907 +#: access/transam/xlog.c:5228 #, 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." +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" -#: executor/execQual.c:698 -#: executor/execQual.c:717 -#: executor/execQual.c:916 -#: 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 "Le type de ligne de la table et celui sp�cifi� par la requ�te ne correspondent pas" +#: access/transam/xlog.c:5233 +#, c-format +msgid "could not close bootstrap transaction log file: %m" +msgstr "n'a pas pu fermer le � bootstrap � du journal des transactions : %m" -#: executor/execQual.c:699 +#: access/transam/xlog.c:5300 #, 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." +msgid "could not open recovery command file \"%s\": %m" +msgstr "n'a pas pu ouvrir le fichier de restauration � %s � : %m" -#: executor/execQual.c:718 -#: executor/nodeModifyTable.c:93 +#: access/transam/xlog.c:5354 #, 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." +msgid "recovery_target_timeline is not a valid number: \"%s\"" +msgstr "recovery_target_timeline n'est pas un nombre valide : � %s �" -#: executor/execQual.c:917 -#: executor/execQual.c:1505 +#: access/transam/xlog.c:5370 #, 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." +msgid "recovery_target_xid is not a valid number: \"%s\"" +msgstr "recovery_target_xid n'est pas un nombre valide : � %s �" -#: executor/execQual.c:1189 -#: parser/parse_func.c:97 -#: parser/parse_func.c:329 -#: parser/parse_func.c:645 +#: access/transam/xlog.c:5414 #, 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" +msgid "recovery_target_name is too long (maximum %d characters)" +msgstr "recovery_target_name est trop long (%d caract�res maximum)" -#: executor/execQual.c:1373 -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" +#: access/transam/xlog.c:5461 +#, c-format +msgid "unrecognized recovery parameter \"%s\"" +msgstr "param�tre de restauration � %s � non reconnu" -#: executor/execQual.c:1423 -msgid "function returning setof record called in context that cannot accept type record" +#: access/transam/xlog.c:5472 +#, c-format +msgid "" +"recovery command file \"%s\" specified neither primary_conninfo nor " +"restore_command" msgstr "" -"la fonction renvoyant des lignes a �t� appel�e dans un contexte qui\n" -"n'accepte pas un ensemble" +"le fichier de restauration � %s � n'a sp�cifi� ni primary_conninfo ni " +"restore_command" -#: executor/execQual.c:1478 -#: executor/execQual.c:1494 -#: executor/execQual.c:1504 -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" +#: access/transam/xlog.c:5474 +msgid "" +"The database server will regularly poll the pg_xlog subdirectory to check " +"for files placed there." +msgstr "" +"Le serveur de la base de donn�es va r�guli�rement interroger le sous-" +"r�pertoire\n" +"pg_xlog pour v�rifier les fichiers plac�s ici." -#: executor/execQual.c:1479 +#: access/transam/xlog.c:5480 #, 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." +msgid "" +"recovery command file \"%s\" must specify restore_command when standby mode " +"is not enabled" +msgstr "" +"le fichier de restauration � %s � doit sp�cifier restore_command quand le " +"mode\n" +"de restauration n'est pas activ�" -#: executor/execQual.c:1495 +#: access/transam/xlog.c:5500 #, 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." +msgid "recovery target timeline %u does not exist" +msgstr "le timeline cible, %u, de la restauration n'existe pas" -#: executor/execQual.c:1748 -#: executor/execQual.c:2171 -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�" +#: access/transam/xlog.c:5630 +msgid "archive recovery complete" +msgstr "restauration termin�e de l'archive" -#: executor/execQual.c:1768 -#: executor/execQual.c:2178 +#: access/transam/xlog.c:5748 #, c-format -msgid "unrecognized table-function returnMode: %d" -msgstr "returnMode de la fonction table non reconnu : %d" +msgid "recovery stopping after commit of transaction %u, time %s" +msgstr "arr�t de la restauration apr�s validation de la transaction %u, %s" -#: executor/execQual.c:2088 -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" +#: access/transam/xlog.c:5753 +#, 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" -#: executor/execQual.c:2145 -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" +#: access/transam/xlog.c:5761 +#, 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" -#: executor/execQual.c:2338 -msgid "IS DISTINCT FROM does not support set arguments" -msgstr "IS DISTINCT FROM ne supporte pas les arguments d'ensemble" +#: access/transam/xlog.c:5766 +#, 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" -#: executor/execQual.c:2413 -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" +#: access/transam/xlog.c:5775 +#, c-format +msgid "recovery stopping at restore point \"%s\", time %s" +msgstr "restauration en arr�t au point de restauration � %s �, heure %s" -#: executor/execQual.c:2966 -msgid "cannot merge incompatible arrays" -msgstr "ne peut pas fusionner les tableaux incompatibles" +#: access/transam/xlog.c:5809 +msgid "recovery has paused" +msgstr "restauration en pause" -#: executor/execQual.c:2967 -#, 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." +#: access/transam/xlog.c:5810 +msgid "Execute pg_xlog_replay_resume() to continue." +msgstr "Ex�cuter pg_xlog_replay_resume() pour continuer." -#: executor/execQual.c:3008 -#: executor/execQual.c:3035 -#: utils/adt/arrayfuncs.c:518 -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" +#: access/transam/xlog.c:5853 access/transam/xlog.c:5875 +#: access/transam/xlog.c:5897 +msgid "must be superuser to control recovery" +msgstr "doit �tre super-utilisateur pour contr�ler la restauration" -#: executor/execQual.c:3550 -msgid "NULLIF does not support set arguments" -msgstr "NULLIF ne supporte pas les arguments d'ensemble" +#: access/transam/xlog.c:5858 access/transam/xlog.c:5880 +#: access/transam/xlog.c:5902 +msgid "recovery is not in progress" +msgstr "la restauration n'est pas en cours" -#: executor/execQual.c:3780 -#: utils/adt/domains.c:128 -#, c-format -msgid "domain %s does not allow null values" -msgstr "le domaine %s n'autorise pas les valeurs NULL" +#: access/transam/xlog.c:5859 access/transam/xlog.c:5881 +#: access/transam/xlog.c:5903 +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" +"lors de la restauration." -#: executor/execQual.c:3809 -#: utils/adt/domains.c:164 +#: access/transam/xlog.c:5996 #, 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 �" +msgid "" +"hot standby is not possible because %s = %d is a lower setting than on the " +"master server (its value was %d)" +msgstr "" +"les connexions en restauration ne sont pas possibles car %s = %d est un\n" +"param�trage plus bas que celui du serveur ma�tre des journaux de " +"transactions\n" +"(la valeur �tait %d)" -#: executor/execQual.c:4277 -#: optimizer/util/clauses.c:572 -#: parser/parse_agg.c:160 -msgid "aggregate function calls cannot be nested" -msgstr "les appels � la fonction d'agr�gat ne peuvent pas �tre imbriqu�s" +#: access/transam/xlog.c:6018 +msgid "WAL was generated with wal_level=minimal, data may be missing" +msgstr "" +"le journal de transactions a �t� g�n�r� avec le param�tre wal_level " +"configur�\n" +"� � minimal �, des donn�es pourraient manquer" -#: executor/execQual.c:4315 -#: optimizer/util/clauses.c:646 -#: parser/parse_agg.c:207 -msgid "window function calls cannot be nested" -msgstr "les appels � la fonction window ne peuvent pas �tre imbriqu�s" +#: access/transam/xlog.c:6019 +msgid "" +"This happens if you temporarily set wal_level=minimal without taking a new " +"base backup." +msgstr "" +"Ceci peut arriver si vous configurez temporairement wal_level � minimal sans " +"avoir\n" +"pris une nouvelle sauvegarde de base." -#: executor/execQual.c:4515 -msgid "target type is not an array" -msgstr "le type cible n'est pas un tableau" +#: access/transam/xlog.c:6030 +msgid "" +"hot standby is not possible because wal_level was not set to \"hot_standby\" " +"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" -#: executor/execQual.c:4628 -#, 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" +#: access/transam/xlog.c:6031 +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." -#: executor/execQual.c:4759 -#: utils/adt/arrayfuncs.c:3310 -#: utils/adt/rowtypes.c:913 -#, 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" +#: access/transam/xlog.c:6079 +msgid "control file contains invalid data" +msgstr "le fichier de contr�le contient des donn�es invalides" -#: executor/execUtils.c:1296 +#: access/transam/xlog.c:6083 #, c-format -msgid "could not create exclusion constraint \"%s\"" -msgstr "n'a pas pu cr�er la contrainte d'exclusion � %s �" +msgid "database system was shut down at %s" +msgstr "le syst�me de bases de donn�es a �t� arr�t� � %s" -#: executor/execUtils.c:1298 +#: access/transam/xlog.c:6087 #, c-format -msgid "Key %s conflicts with key %s." -msgstr "La cl� %s est en conflit avec la cl� %s." +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" -#: executor/execUtils.c:1303 +#: access/transam/xlog.c:6091 #, c-format -msgid "conflicting key value violates exclusion constraint \"%s\"" -msgstr "la valeur d'une cl� en conflit rompt la contrainte d'exclusion � %s �" +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" -#: executor/execUtils.c:1305 +#: access/transam/xlog.c:6095 #, c-format -msgid "Key %s conflicts with existing key %s." -msgstr "La cl� %s est en conflit avec la cl� existante %s." +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" -#. translator: %s is a SQL statement name -#: executor/functions.c:154 -#, c-format -msgid "%s is not allowed in a SQL function" -msgstr "%s n'est pas autoris� dans une fonction SQL" +#: access/transam/xlog.c:6097 +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." -#. translator: %s is a SQL statement name -#: executor/functions.c:161 -#: executor/spi.c:1256 -#: executor/spi.c:1846 +#: access/transam/xlog.c:6101 #, c-format -msgid "%s is not allowed in a non-volatile function" -msgstr "%s n'est pas autoris� dans une fonction non volatile" +msgid "database system was interrupted while in recovery at log time %s" +msgstr "" +"le syst�me de bases de donn�es a �t� interrompu lors d'une r�cup�ration � " +"%s\n" +"(moment de la journalisation)" -#: executor/functions.c:259 -#, c-format -msgid "could not determine actual result type for function declared to return type %s" +#: access/transam/xlog.c:6103 +msgid "" +"If this has occurred more than once some data might be corrupted and you " +"might need to choose an earlier recovery target." msgstr "" -"n'a pas pu d�terminer le type du r�sultat actuel pour la fonction d�clarant\n" -"renvoyer le type %s" +"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." -#: executor/functions.c:298 +#: access/transam/xlog.c:6107 #, c-format -msgid "could not determine actual type of argument declared %s" -msgstr "n'a pas pu d�terminer le type actuel de l'argument d�clar� %s" +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" -#: executor/functions.c:923 +#: access/transam/xlog.c:6156 #, c-format -msgid "SQL function \"%s\" statement %d" -msgstr "fonction SQL � %s �, instruction %d" +msgid "requested timeline %u is not a child of database system timeline %u" +msgstr "" +"le timeline requis %u n'est pas un fils du timeline %u du syst�me de bases\n" +"de donn�es" + +#: access/transam/xlog.c:6174 +msgid "entering standby mode" +msgstr "entre en mode standby" -#: executor/functions.c:946 +#: access/transam/xlog.c:6177 #, c-format -msgid "SQL function \"%s\" during startup" -msgstr "fonction SQL � %s � lors du lancement" +msgid "starting point-in-time recovery to XID %u" +msgstr "d�but de la restauration de l'archive au XID %u" -#: executor/functions.c:1091 -#: executor/functions.c:1127 -#: executor/functions.c:1139 -#: executor/functions.c:1250 -#: executor/functions.c:1282 -#: executor/functions.c:1311 +#: access/transam/xlog.c:6181 #, 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" +msgid "starting point-in-time recovery to %s" +msgstr "d�but de la restauration de l'archive � %s" -#: executor/functions.c:1093 -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." +#: access/transam/xlog.c:6185 +#, c-format +msgid "starting point-in-time recovery to \"%s\"" +msgstr "d�but de la restauration PITR � � %s �" -#: executor/functions.c:1129 -msgid "Final statement must return exactly one column." -msgstr "L'instruction finale doit renvoyer exactement une colonne." +#: access/transam/xlog.c:6189 +msgid "starting archive recovery" +msgstr "d�but de la restauration de l'archive" -#: executor/functions.c:1141 +#: access/transam/xlog.c:6211 access/transam/xlog.c:6251 #, c-format -msgid "Actual return type is %s." -msgstr "Le code de retour r�el est %s." +msgid "checkpoint record is at %X/%X" +msgstr "l'enregistrement du point de v�rification est � %X/%X" -#: executor/functions.c:1252 -msgid "Final statement returns too many columns." -msgstr "L'instruction finale renvoie beaucoup trop de colonnes." +#: access/transam/xlog.c:6225 +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" -#: executor/functions.c:1284 +#: access/transam/xlog.c:6226 access/transam/xlog.c:6233 #, 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." +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 �." -#: executor/functions.c:1313 -msgid "Final statement returns too few columns." -msgstr "L'instruction finale renvoie trop peu de colonnes." +#: access/transam/xlog.c:6232 +msgid "could not locate required checkpoint record" +msgstr "" +"n'a pas pu localiser l'enregistrement d'un point de v�rification requis" -#: executor/functions.c:1361 -#, 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" +#: access/transam/xlog.c:6261 access/transam/xlog.c:6276 +msgid "could not locate a valid checkpoint record" +msgstr "" +"n'a pas pu localiser un enregistrement d'un point de v�rification valide" -#: executor/nodeAgg.c:1717 -#: executor/nodeWindowAgg.c:1842 +#: access/transam/xlog.c:6270 #, c-format -msgid "aggregate %u needs to have compatible input type and transition type" +msgid "using previous checkpoint record at %X/%X" msgstr "" -"L'agr�gat %u a besoin d'avoir un type en entr�e compatible avec le type en\n" -"transition" +"utilisation du pr�c�dent enregistrement d'un point de v�rification � %X/%X" -#: executor/nodeHashjoin.c:721 -#: executor/nodeHashjoin.c:755 +#: access/transam/xlog.c:6285 #, 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" +msgid "redo record is at %X/%X; shutdown %s" +msgstr "l'enregistrement � r�-ex�cuter se trouve � %X/%X ; arr�t %s" -#: executor/nodeHashjoin.c:789 -#: executor/nodeHashjoin.c:795 +#: access/transam/xlog.c:6289 #, c-format -msgid "could not write to hash-join temporary file: %m" -msgstr "n'a pas pu �crire le fichier temporaire de la jointure h�ch�e : %m" +msgid "next transaction ID: %u/%u; next OID: %u" +msgstr "prochain identifiant de transaction : %u/%u ; prochain OID : %u" -#: executor/nodeHashjoin.c:829 -#: executor/nodeHashjoin.c:839 +#: access/transam/xlog.c:6293 #, 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" - -#: executor/nodeLimit.c:251 -msgid "OFFSET must not be negative" -msgstr "OFFSET ne doit pas �tre n�gatif" - -#: executor/nodeLimit.c:278 -msgid "LIMIT must not be negative" -msgstr "LIMIT ne doit pas �tre n�gative" - -#: executor/nodeMergejoin.c:1586 -msgid "RIGHT JOIN is only supported with merge-joinable join conditions" -msgstr "RIGHT JOIN est support� seulement avec les conditions de jointures MERGE" - -#: executor/nodeMergejoin.c:1606 -#: optimizer/path/joinpath.c:1072 -msgid "FULL JOIN is only supported with merge-joinable join conditions" -msgstr "FULL JOIN est support� seulement avec les conditions de jointures MERGE" - -#: executor/nodeModifyTable.c:83 -msgid "Query has too many columns." -msgstr "La requ�te a trop de colonnes." +msgid "next MultiXactId: %u; next MultiXactOffset: %u" +msgstr "prochain MultiXactId : %u ; prochain MultiXactOffset : %u" -#: executor/nodeModifyTable.c:110 +#: access/transam/xlog.c:6296 #, c-format -msgid "Query provides a value for a dropped column at ordinal position %d." +msgid "oldest unfrozen transaction ID: %u, in database %u" msgstr "" -"La requ�te fournit une valeur pour une colonne supprim�e � la position\n" -"ordinale %d." - -#: executor/nodeModifyTable.c:118 -msgid "Query has too few columns." -msgstr "La requ�te n'a pas assez de colonnes." +"identifiant de transaction non gel� le plus ancien : %u, dans la base de\n" +"donn�es %u" -#: 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 "plus d'une ligne renvoy�e par une sous-requ�te utilis�e comme une expression" +#: access/transam/xlog.c:6300 +msgid "invalid next transaction ID" +msgstr "prochain ID de transaction invalide" -#: executor/nodeWindowAgg.c:1233 -msgid "frame starting offset must not be null" -msgstr "l'offset de d�but de frame ne doit pas �tre NULL" +#: access/transam/xlog.c:6328 +msgid "invalid redo in checkpoint record" +msgstr "r�-ex�cution invalide dans l'enregistrement du point de v�rification" -#: executor/nodeWindowAgg.c:1246 -msgid "frame starting offset must not be negative" -msgstr "l'offset de d�but de frame ne doit pas �tre n�gatif" +#: access/transam/xlog.c:6339 +msgid "invalid redo record in shutdown checkpoint" +msgstr "" +"enregistrement de r�-ex�cution invalide dans le point de v�rification d'arr�t" -#: executor/nodeWindowAgg.c:1259 -msgid "frame ending offset must not be null" -msgstr "l'offset de fin de frame ne doit pas �tre NULL" +#: access/transam/xlog.c:6369 +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" -#: executor/nodeWindowAgg.c:1272 -msgid "frame ending offset must not be negative" -msgstr "l'offset de fin de frame ne doit pas �tre n�gatif" +#: access/transam/xlog.c:6448 +msgid "initializing for hot standby" +msgstr "initialisation pour � Hot Standby �" -#: executor/spi.c:210 -msgid "transaction left non-empty SPI stack" -msgstr "transaction gauche non vide dans la pile SPI" +#: access/transam/xlog.c:6577 +#, c-format +msgid "redo starts at %X/%X" +msgstr "la r�-ex�cution commence � %X/%X" -#: executor/spi.c:211 -#: executor/spi.c:275 -msgid "Check for missing \"SPI_finish\" calls." -msgstr "V�rifiez les appels manquants � � SPI_finish �." +#: access/transam/xlog.c:6706 +#, c-format +msgid "redo done at %X/%X" +msgstr "r�-ex�cution faite � %X/%X" -#: executor/spi.c:274 -msgid "subtransaction left non-empty SPI stack" -msgstr "sous-transaction gauche non vide dans la pile SPI" +#: access/transam/xlog.c:6711 access/transam/xlog.c:8322 +#, c-format +msgid "last completed transaction was at log time %s" +msgstr "la derni�re transaction a eu lieu � %s (moment de la journalisation)" -#: executor/spi.c:1137 -msgid "cannot open multi-query plan as cursor" -msgstr "ne peut pas ouvrir le plan � plusieurs requ�tes comme curseur" +#: access/transam/xlog.c:6719 +msgid "redo is not required" +msgstr "la r�-ex�cution n'est pas n�cessaire" -#. translator: %s is name of a SQL command, eg INSERT -#: executor/spi.c:1142 -#, c-format -msgid "cannot open %s query as cursor" -msgstr "ne peut pas ouvrir la requ�te %s comme curseur" +#: access/transam/xlog.c:6767 +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" -#: executor/spi.c:1233 -#: parser/analyze.c:1978 -msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" -msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE n'est pas support�" +#: access/transam/xlog.c:6776 +msgid "WAL ends before end of online backup" +msgstr "" +"le journal de transactions se termine avant la fin de la sauvegarde de base" -#: executor/spi.c:1234 -#: parser/analyze.c:1979 -msgid "Scrollable cursors must be READ ONLY." -msgstr "Les curseurs d�pla�ables doivent �tre en lecture seule (READ ONLY)." +#: access/transam/xlog.c:6777 +msgid "" +"Online backup started with pg_start_backup() must be ended with " +"pg_stop_backup(), and all WAL up to that point must be available at recovery." +msgstr "" +"Une sauvegarde en ligne commenc�e avec pg_start_backup() doit se terminer " +"avec\n" +"pg_stop_backup() et tous les journaux de transactions g�n�r�s entre les " +"deux\n" +"doivent �tre disponibles pour la restauration." -#: executor/spi.c:2142 -#, c-format -msgid "SQL statement \"%s\"" -msgstr "instruction SQL � %s �" +#: access/transam/xlog.c:6780 +msgid "WAL ends before consistent recovery point" +msgstr "" +"Le journal de transaction se termine avant un point de restauration coh�rent" -#: foreign/foreign.c:230 +#: access/transam/xlog.c:6801 #, c-format -msgid "user mapping not found for \"%s\"" -msgstr "correspondance utilisateur non trouv�e pour � %s �" +msgid "selected new timeline ID: %u" +msgstr "identifiant d'un timeline nouvellement s�lectionn� : %u" -#: foreign/foreign.c:408 +#: access/transam/xlog.c:7051 #, c-format -msgid "invalid option \"%s\"" -msgstr "option � %s � invalide" +msgid "consistent recovery state reached at %X/%X" +msgstr "�tat de restauration coh�rent atteint � %X/%X" -#: foreign/foreign.c:409 -#, c-format -msgid "Valid options in this context are: %s" -msgstr "Les options valides dans ce contexte sont %s" +#: access/transam/xlog.c:7229 +msgid "invalid primary checkpoint link in control file" +msgstr "" +"lien du point de v�rification primaire invalide dans le fichier de contr�le" -#: lib/stringinfo.c:267 -#, 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" +#: access/transam/xlog.c:7233 +msgid "invalid secondary checkpoint link in control file" +msgstr "" +"lien du point de v�rification secondaire invalide dans le fichier de contr�le" -#: libpq/auth.c:255 -#, c-format -msgid "authentication failed for user \"%s\": host rejected" -msgstr "authentification �chou�e pour l'utilisateur � %s � : h�te rejet�" +#: access/transam/xlog.c:7237 +msgid "invalid checkpoint link in backup_label file" +msgstr "lien du point de v�rification invalide dans le fichier backup_label" -#: libpq/auth.c:258 -#, c-format -msgid "Kerberos 5 authentication failed for user \"%s\"" -msgstr "authentification Kerberos 5 �chou�e pour l'utilisateur � %s �" +#: access/transam/xlog.c:7251 +msgid "invalid primary checkpoint record" +msgstr "enregistrement du point de v�rification primaire invalide" -#: libpq/auth.c:261 -#, c-format -msgid "\"trust\" authentication failed for user \"%s\"" -msgstr "authentification � trust � �chou�e pour l'utilisateur � %s �" +#: access/transam/xlog.c:7255 +msgid "invalid secondary checkpoint record" +msgstr "enregistrement du point de v�rification secondaire invalide" -#: libpq/auth.c:264 -#, c-format -msgid "Ident authentication failed for user \"%s\"" -msgstr "authentification Ident �chou�e pour l'utilisateur � %s �" +#: access/transam/xlog.c:7259 +msgid "invalid checkpoint record" +msgstr "enregistrement du point de v�rification invalide" -#: libpq/auth.c:268 -#, c-format -msgid "password authentication failed for user \"%s\"" -msgstr "authentification par mot de passe �chou�e pour l'utilisateur � %s �" +#: access/transam/xlog.c:7270 +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" -#: libpq/auth.c:273 -#, c-format -msgid "GSSAPI authentication failed for user \"%s\"" -msgstr "authentification GSSAPI �chou�e pour l'utilisateur � %s �" +#: access/transam/xlog.c:7274 +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" -#: libpq/auth.c:276 -#, c-format -msgid "SSPI authentication failed for user \"%s\"" -msgstr "authentification SSPI �chou�e pour l'utilisateur � %s �" +#: access/transam/xlog.c:7278 +msgid "invalid resource manager ID in checkpoint record" +msgstr "" +"identifiant du gestionnaire de ressource invalide dans l'enregistrement du " +"point de v�rification" -#: libpq/auth.c:279 -#, c-format -msgid "PAM authentication failed for user \"%s\"" -msgstr "authentification PAM �chou�e pour l'utilisateur � %s �" +#: access/transam/xlog.c:7290 +msgid "invalid xl_info in primary checkpoint record" +msgstr "" +"xl_info invalide dans l'enregistrement du point de v�rification primaire" -#: libpq/auth.c:282 -#, c-format -msgid "LDAP authentication failed for user \"%s\"" -msgstr "authentification LDAP �chou�e pour l'utilisateur � %s �" +#: access/transam/xlog.c:7294 +msgid "invalid xl_info in secondary checkpoint record" +msgstr "" +"xl_info invalide dans l'enregistrement du point de v�rification secondaire" -#: libpq/auth.c:285 -#, c-format -msgid "certificate authentication failed for user \"%s\"" -msgstr "authentification par le certificat �chou�e pour l'utilisateur � %s �" +#: access/transam/xlog.c:7298 +msgid "invalid xl_info in checkpoint record" +msgstr "xl_info invalide dans l'enregistrement du point de v�rification" -#: libpq/auth.c:288 -#, c-format -msgid "RADIUS authentication failed for user \"%s\"" -msgstr "authentification RADIUS �chou�e pour l'utilisateur � %s �" +#: access/transam/xlog.c:7310 +msgid "invalid length of primary checkpoint record" +msgstr "" +"longueur invalide de l'enregistrement primaire du point de v�rification" -#: libpq/auth.c:291 -#, c-format -msgid "authentication failed for user \"%s\": invalid authentication method" +#: access/transam/xlog.c:7314 +msgid "invalid length of secondary checkpoint record" msgstr "" -"authentification �chou�e pour l'utilisateur � %s � :\n" -"m�thode d'authentification invalide" +"longueur invalide de l'enregistrement secondaire du point de v�rification" -#: libpq/auth.c:320 -msgid "missing or erroneous pg_hba.conf file" -msgstr "fichier pg_hba.conf manquant ou erron�" +#: access/transam/xlog.c:7318 +msgid "invalid length of checkpoint record" +msgstr "longueur invalide de l'enregistrement du point de v�rification" -#: libpq/auth.c:321 -msgid "See server log for details." -msgstr "Voir les journaux applicatifs du serveur pour plus de d�tails." +#: access/transam/xlog.c:7480 +msgid "shutting down" +msgstr "arr�t en cours" -#: libpq/auth.c:351 -msgid "connection requires a valid client certificate" -msgstr "la connexion requiert un certificat client valide" +#: access/transam/xlog.c:7502 +msgid "database system is shut down" +msgstr "le syst�me de base de donn�es est arr�t�" -#: libpq/auth.c:395 -#: libpq/auth.c:411 -#: libpq/auth.c:448 -#: libpq/auth.c:464 -msgid "SSL on" -msgstr "SSL actif" +#: access/transam/xlog.c:7934 +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" -#: libpq/auth.c:395 -#: libpq/auth.c:411 -#: libpq/auth.c:448 -#: libpq/auth.c:464 -msgid "SSL off" -msgstr "SSL inactif" +#: access/transam/xlog.c:8168 +msgid "skipping restartpoint, recovery has already ended" +msgstr "restartpoint ignor�, la r�cup�ration est d�j� termin�e" -#: libpq/auth.c:393 +#: access/transam/xlog.c:8193 #, c-format -msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s" -msgstr "" -"pg_hba.conf rejette la connexion de la r�plication pour l'h�te � %s �,\n" -"utilisateur � %s �, %s" +msgid "skipping restartpoint, already performed at %X/%X" +msgstr "ignore le point de red�marrage, d�j� r�alis� � %X/%X" -#: libpq/auth.c:399 +#: access/transam/xlog.c:8320 #, 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 �" +msgid "recovery restart point at %X/%X" +msgstr "la r�-ex�cution en restauration commence � %X/%X" -#: libpq/auth.c:408 +#: access/transam/xlog.c:8420 #, c-format -msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\", %s" +msgid "restore point \"%s\" created at %X/%X" +msgstr "point de restauration � %s � cr�� � %X/%X" + +#: access/transam/xlog.c:8520 +msgid "online backup was canceled, recovery cannot continue" msgstr "" -"pg_hba.conf rejette la connexion pour l'h�te � %s �, utilisateur � %s �, base\n" -"de donn�es � %s �, %s" +"la sauvegarde en ligne a �t� annul�e, la restauration ne peut pas continuer" -#: libpq/auth.c:415 +#: access/transam/xlog.c:8583 #, c-format -msgid "pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\"" +msgid "unexpected timeline ID %u (after %u) in checkpoint record" msgstr "" -"pg_hba.conf rejette la connexion pour l'h�te � %s �, utilisateur � %s �, base\n" -"de donn�es � %s �" +"identifiant timeline %u inattendu (apr�s %u) dans l'enregistrement du point\n" +"de v�rification" -#: libpq/auth.c:446 +#: access/transam/xlog.c:8628 #, c-format -msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\", %s" +msgid "unexpected timeline ID %u (should be %u) in checkpoint record" msgstr "" -"aucune entr�e dans pg_hba.conf pour la connexion de la r�plication � partir de\n" -"l'h�te � %s �, utilisateur � %s �, %s" +"identifiant timeline %u inattendu (devrait �tre %u) dans l'enregistrement " +"du\n" +"point de v�rification" -#: libpq/auth.c:452 +#: access/transam/xlog.c:8892 access/transam/xlog.c:8916 #, c-format -msgid "no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\"" +msgid "could not fsync log file %u, segment %u: %m" msgstr "" -"aucune entr�e dans pg_hba.conf pour la connexion de la r�plication � partir de\n" -"l'h�te � %s �, utilisateur � %s �" +"n'a pas pu synchroniser sur disque (fsync) le journal des transactions %u,\n" +"segment %u : %m" -#: libpq/auth.c:461 +#: access/transam/xlog.c:8924 #, c-format -msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s" +msgid "could not fsync write-through log file %u, segment %u: %m" msgstr "" -"aucune entr�e dans pg_hba.conf pour l'h�te � %s �, utilisateur � %s �,\n" -"base de donn�es � %s �, %s" +"n'a pas pu synchroniser sur disque (fsync) le journal des transactions %u,\n" +"segment %u : %m" -#: libpq/auth.c:468 +#: access/transam/xlog.c:8933 #, c-format -msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\"" +msgid "could not fdatasync log file %u, segment %u: %m" msgstr "" -"aucune entr�e dans pg_hba.conf pour l'h�te � %s �, utilisateur � %s �,\n" -"base de donn�es � %s �" +"n'a pas pu synchroniser sur disque (fdatasync) le journal de transactions\n" +"%u, segment %u : %m" -#: libpq/auth.c:526 -#, c-format -msgid "could not enable credential reception: %m" -msgstr "n'a pas pu activer la r�ception de lettres de cr�ance : %m" +#: access/transam/xlog.c:8971 access/transam/xlog.c:9258 +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" -#: libpq/auth.c:539 -#: libpq/hba.c:948 -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�" +#: access/transam/xlog.c:9022 access/transam/xlog.c:9304 +#: access/transam/xlog.c:9567 access/transam/xlog.c:9599 +#: access/transam/xlog.c:9640 access/transam/xlog.c:9673 +#: access/transam/xlog.c:9780 access/transam/xlog.c:9855 +msgid "recovery is in progress" +msgstr "restauration en cours" -#: libpq/auth.c:660 -#, 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" +#: access/transam/xlog.c:9023 access/transam/xlog.c:9305 +#: access/transam/xlog.c:9568 access/transam/xlog.c:9600 +#: access/transam/xlog.c:9641 access/transam/xlog.c:9674 +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." -#: libpq/auth.c:688 -msgid "invalid password packet size" -msgstr "taille du paquet du mot de passe invalide" +#: access/transam/xlog.c:9028 access/transam/xlog.c:9310 +msgid "WAL level not sufficient for making an online backup" +msgstr "" +"Le niveau de journalisation (configur� par wal_level) n'est pas suffisant " +"pour\n" +"faire une sauvegarde en ligne." -#: libpq/auth.c:692 -msgid "received password packet" -msgstr "paquet du mot de passe re�u" +#: access/transam/xlog.c:9029 access/transam/xlog.c:9311 +#: access/transam/xlog.c:9606 +msgid "" +"wal_level must be set to \"archive\" or \"hot_standby\" at server start." +msgstr "" +"wal_level doit �tre configur� � � archive � ou � hot_standby � au d�marrage\n" +"du serveur." -#: libpq/auth.c:750 +#: access/transam/xlog.c:9034 #, c-format -msgid "Kerberos initialization returned error %d" -msgstr "l'initialisation de Kerberos a retourn� l'erreur %d" +msgid "backup label too long (max %d bytes)" +msgstr "label de sauvegarde trop long (%d octets maximum)" -#: libpq/auth.c:760 -#, c-format -msgid "Kerberos keytab resolving returned error %d" -msgstr "la r�solution keytab de Kerberos a renvoy� l'erreur %d" +#: access/transam/xlog.c:9075 access/transam/xlog.c:9178 +msgid "a backup is already in progress" +msgstr "une sauvegarde est d�j� en cours" -#: libpq/auth.c:784 -#, 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" +#: access/transam/xlog.c:9076 +msgid "Run pg_stop_backup() and try again." +msgstr "Ex�cutez pg_stop_backup() et tentez de nouveau." -#: libpq/auth.c:829 +#: access/transam/xlog.c:9179 #, c-format -msgid "Kerberos recvauth returned error %d" -msgstr "recvauth de Kerberos a renvoy� l'erreur %d" +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." -#: libpq/auth.c:852 +#: access/transam/xlog.c:9194 access/transam/xlog.c:9443 #, c-format -msgid "Kerberos unparse_name returned error %d" -msgstr "unparse_name de Kerberos a renvoy� l'erreur %d" +msgid "could not write file \"%s\": %m" +msgstr "impossible d'�crire le fichier � %s � : %m" + +#: access/transam/xlog.c:9355 +msgid "a backup is not in progress" +msgstr "une sauvegarde n'est pas en cours" -#: libpq/auth.c:975 +#: access/transam/xlog.c:9394 access/transam/xlog.c:9925 +#: access/transam/xlog.c:9931 #, c-format -msgid "%s: %s" -msgstr "%s : %s" +msgid "invalid data in file \"%s\"" +msgstr "donn�es invalides dans le fichier � %s �" -#: libpq/auth.c:1001 -msgid "GSSAPI is not supported in protocol version 2" -msgstr "GSSAPI n'est pas support� dans le protocole de version 2" +#: access/transam/xlog.c:9492 +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" -#: libpq/auth.c:1056 +#: access/transam/xlog.c:9502 #, 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" +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)" -#: libpq/auth.c:1119 -msgid "accepting GSS security context failed" -msgstr "�chec de l'acceptation du contexte de s�curit� GSS" +#: access/transam/xlog.c:9504 +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." -#: libpq/auth.c:1145 -msgid "retrieving GSS user name failed" -msgstr "�chec lors de la r�cup�ration du nom de l'utilisateur avec GSS" +#: access/transam/xlog.c:9511 +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" -#: libpq/auth.c:1218 -#, c-format -msgid "SSPI error %x" -msgstr "erreur SSPI : %x" +#: access/transam/xlog.c:9515 +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." -#: libpq/auth.c:1222 -#, c-format -msgid "%s (%x)" -msgstr "%s (%x)" +#: access/transam/xlog.c:9562 +msgid "must be superuser to switch transaction log files" +msgstr "doit �tre super-utilisateur pour changer de journal de transactions" -#: libpq/auth.c:1262 -msgid "SSPI is not supported in protocol version 2" -msgstr "SSPI n'est pas support� dans le protocole de version 2" +#: access/transam/xlog.c:9594 +msgid "must be superuser to create a restore point" +msgstr "doit �tre super-utilisateur pour cr�er un point de restauration" -#: libpq/auth.c:1277 -msgid "could not acquire SSPI credentials" -msgstr "n'a pas pu obtenir les pi�ces d'identit� SSPI" +#: access/transam/xlog.c:9605 +msgid "WAL level not sufficient for creating a restore point" +msgstr "" +"le niveau de journalisation (configur� par wal_level) n'est pas suffisant " +"pour\n" +"cr�er un point de restauration" -#: libpq/auth.c:1294 +#: access/transam/xlog.c:9613 #, 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:1366 -msgid "could not accept SSPI security context" -msgstr "n'a pas pu accepter le contexte de s�curit� SSPI" +msgid "value too long for restore point (maximum %d characters)" +msgstr "" +"valeur trop longue pour le point de restauration (%d caract�res maximum)" -#: libpq/auth.c:1422 -msgid "could not get token from SSPI security context" -msgstr "n'a pas pu obtenir le jeton du contexte de s�curit� SSPI" +#: access/transam/xlog.c:9781 +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." -#: libpq/auth.c:1665 +#: access/transam/xlog.c:9791 access/transam/xlog.c:9863 #, 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" +msgid "could not parse transaction log location \"%s\"" +msgstr "n'a pas pu analyser l'emplacement du journal des transactions � %s �" -#: libpq/auth.c:1680 -#, c-format -msgid "could not bind to local address \"%s\": %m" -msgstr "n'a pas pu se lier � l'adresse locale � %s � : %m" +#: access/transam/xlog.c:9856 +msgid "pg_xlogfile_name() cannot be executed during recovery." +msgstr "pg_xlogfile_name() ne peut pas �tre ex�cut� lors de la restauration." -#: libpq/auth.c:1692 +#: access/transam/xlog.c:9967 #, 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" +msgid "xlog redo %s" +msgstr "xlog redo %s" -#: libpq/auth.c:1712 -#, 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" +#: access/transam/xlog.c:10007 +msgid "online backup mode canceled" +msgstr "mode de sauvegarde en ligne annul�" -#: libpq/auth.c:1727 +#: access/transam/xlog.c:10008 #, c-format -msgid "could not receive response from Ident server at address \"%s\", port %s: %m" -msgstr "" -"n'a pas pu recevoir la r�ponse du serveur Ident � l'adresse � %s �, port %s :\n" -"%m" +msgid "\"%s\" was renamed to \"%s\"." +msgstr "� %s � a �t� renomm� en � %s �." -#: libpq/auth.c:1737 -#, c-format -msgid "invalidly formatted response from Ident server: \"%s\"" -msgstr "r�ponse mal format�e du serveur Ident : � %s �" +#: access/transam/xlog.c:10015 +msgid "online backup mode was not canceled" +msgstr "le mode de sauvegarde en ligne n'a pas �t� annul�" -#: libpq/auth.c:1772 -#: libpq/auth.c:1802 -#: libpq/auth.c:1830 -#: libpq/auth.c:1906 +#: access/transam/xlog.c:10016 #, c-format -msgid "could not get peer credentials: %m" -msgstr "n'a pas pu obtenir l'authentification de l'autre : %m" +msgid "Could not rename \"%s\" to \"%s\": %m." +msgstr "N'a pas pu renommer � %s � en � %s � : %m" -#: libpq/auth.c:1781 -#: libpq/auth.c:1811 -#: libpq/auth.c:1848 -#: libpq/auth.c:1917 +#: access/transam/xlog.c:10529 access/transam/xlog.c:10551 #, 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 read from log file %u, segment %u, offset %u: %m" +msgstr "" +"n'a pas pu lire le journal de transactions %u, segment %u, d�calage %u : %m" + +#: access/transam/xlog.c:10640 +msgid "received promote request" +msgstr "a re�u une demande de promotion" -#: libpq/auth.c:1838 +#: access/transam/xlog.c:10653 #, c-format -msgid "could not get effective UID from peer credentials: %m" -msgstr "n'a pas pu obtenir l'UID r�el � partir des pi�ces d'identit� de l'autre : %m" +msgid "trigger file found: %s" +msgstr "fichier trigger trouv� : %s" -#: libpq/auth.c:1928 -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" +#: access/gin/ginentrypage.c:101 access/nbtree/nbtsort.c:483 +#: access/nbtree/nbtinsert.c:531 +#, 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 " +"�" -#: libpq/auth.c:2045 -#: libpq/auth.c:2317 -#: libpq/auth.c:2677 -msgid "empty password returned by client" -msgstr "mot de passe vide renvoy� par le client" +#: access/gin/ginscan.c:401 +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" +"recherches de valeurs NULL" -#: libpq/auth.c:2055 +#: access/gin/ginscan.c:402 #, c-format -msgid "error from underlying PAM layer: %s" -msgstr "erreur provenant de la couche PAM : %s" +msgid "To fix this, do REINDEX INDEX \"%s\"." +msgstr "Pour corriger ceci, faites un REINDEX INDEX � %s �." -#: libpq/auth.c:2124 +#: access/nbtree/nbtpage.c:161 access/nbtree/nbtpage.c:365 +#: parser/parse_utilcmd.c:1577 #, c-format -msgid "could not create PAM authenticator: %s" -msgstr "n'a pas pu cr�er l'authenticateur PAM : %s" +msgid "index \"%s\" is not a btree" +msgstr "l'index � %s � n'est pas un btree" -#: libpq/auth.c:2135 +#: access/nbtree/nbtpage.c:167 access/nbtree/nbtpage.c:371 #, c-format -msgid "pam_set_item(PAM_USER) failed: %s" -msgstr "pam_set_item(PAM_USER) a �chou� : %s" +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" -#: libpq/auth.c:2146 -#, c-format -msgid "pam_set_item(PAM_CONV) failed: %s" -msgstr "pam_set_item(PAM_CONV) a �chou� : %s" +#: access/nbtree/nbtsort.c:487 access/nbtree/nbtinsert.c:535 +msgid "" +"Values larger than 1/3 of a buffer page cannot be indexed.\n" +"Consider a function index of an MD5 hash of the value, or use full text " +"indexing." +msgstr "" +"Les valeurs plus larges qu'un tiers d'une page de tampon ne peuvent pas " +"�tre\n" +"index�es.\n" +"Utilisez un index sur le hachage MD5 de la valeur ou passez � l'indexation\n" +"de la recherche plein texte." -#: libpq/auth.c:2157 +#: access/nbtree/nbtinsert.c:393 #, c-format -msgid "pam_authenticate failed: %s" -msgstr "pam_authenticate a �chou� : %s" +msgid "duplicate key value violates unique constraint \"%s\"" +msgstr "la valeur d'une cl� dupliqu�e rompt la contrainte unique � %s �" -#: libpq/auth.c:2168 +#: access/nbtree/nbtinsert.c:395 #, c-format -msgid "pam_acct_mgmt failed: %s" -msgstr "pam_acct_mgmt a �chou� : %s" +msgid "Key %s already exists." +msgstr "La cl� � %s � existe d�j�." -#: libpq/auth.c:2179 +#: access/nbtree/nbtinsert.c:457 #, c-format -msgid "could not release PAM authenticator: %s" -msgstr "n'a pas pu fermer l'authenticateur PAM : %s" +msgid "failed to re-find tuple within index \"%s\"" +msgstr "�chec pour retrouver la ligne dans l'index � %s �" -#: libpq/auth.c:2212 -#: libpq/auth.c:2216 -#, c-format -msgid "could not initialize LDAP: error code %d" -msgstr "n'a pas pu initialiser LDAP : code d'erreur %d" +#: access/nbtree/nbtinsert.c:459 +msgid "This may be because of a non-immutable index expression." +msgstr "Ceci peut �tre d� � une expression d'index immutable." -#: libpq/auth.c:2226 +#: access/index/indexam.c:161 commands/tablecmds.c:222 +#: commands/tablecmds.c:2415 commands/indexcmds.c:1519 +#: catalog/objectaddress.c:391 #, c-format -msgid "could not set LDAP protocol version: error code %d" -msgstr "n'a pas pu initialiser la version du protocole LDAP : code d'erreur %d" +msgid "\"%s\" is not an index" +msgstr "� %s � n'est pas un index" -#: libpq/auth.c:2255 -msgid "could not load wldap32.dll" -msgstr "n'a pas pu charger wldap32.dll" +#: access/gist/gist.c:127 access/gist/gist.c:243 +msgid "unlogged GiST indexes are not supported" +msgstr "les index GiST non trac�s ne sont pas support�s" -#: libpq/auth.c:2263 -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" +#: access/gist/gist.c:728 access/gist/gistvacuum.c:271 +#, c-format +msgid "index \"%s\" contains an inner tuple marked as invalid" +msgstr "l'index � %s � contient une ligne interne marqu�e comme invalide" -#: libpq/auth.c:2264 -msgid "LDAP over SSL is not supported on this platform." -msgstr "LDAP via SSL n'est pas support� sur cette plateforme." +#: access/gist/gist.c:730 access/gist/gistvacuum.c:273 +msgid "" +"This is caused by an incomplete page split at crash recovery before " +"upgrading to PostgreSQL 9.1." +msgstr "" +"Ceci est d� � la division d'une page incompl�te � la restauration suite � " +"un\n" +"crash avant la mise � jour en 9.1." -#: libpq/auth.c:2279 +#: access/gist/gistsplit.c:446 #, c-format -msgid "could not start LDAP TLS session: error code %d" -msgstr "n'a pas pu d�marrer la session TLS LDAP : code d'erreur %d" - -#: libpq/auth.c:2301 -msgid "LDAP server not specified" -msgstr "serveur LDAP non pr�cis�" +msgid "picksplit method for column %d of index \"%s\" failed" +msgstr "�chec de la m�thode picksplit pour la colonne %d de l'index � %s �" -#: libpq/auth.c:2353 -msgid "invalid character in user name for LDAP authentication" -msgstr "caract�re invalide dans le nom de l'utilisateur pour l'authentification LDAP" +#: access/gist/gistsplit.c:448 +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." -#: libpq/auth.c:2368 +#: commands/lockcmds.c:93 #, c-format -msgid "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": error code %d" -msgstr "" -"n'a pas pu r�aliser la connexion LDAP initiale pour ldapbinddn � %s � sur le\n" -"serveur � %s � : code d'erreur %d" +msgid "could not obtain lock on relation \"%s\"" +msgstr "n'a pas pu obtenir un verrou sur la relation � %s �" -#: libpq/auth.c:2393 +#: commands/lockcmds.c:98 #, c-format -msgid "could not search LDAP for filter \"%s\" on server \"%s\": error code %d" -msgstr "" -"n'a pas pu rechercher dans LDAP pour filtrer � %s � sur le serveur � %s � :\n" -"code d'erreur %d" +msgid "could not obtain lock on relation with OID %u" +msgstr "n'a pas pu obtenir un verrou sur la relation d'OID � %u �" -#: libpq/auth.c:2403 +#: commands/lockcmds.c:122 catalog/namespace.c:285 parser/parse_relation.c:844 #, c-format -msgid "LDAP search failed for filter \"%s\" on server \"%s\": no such user" -msgstr "" -"�chec de la recherche LDAP pour le filtre � %s � sur le serveur � %s � :\n" -"utilisateur non trouv�" +msgid "relation \"%s.%s\" does not exist" +msgstr "la relation � %s.%s � n'existe pas" -#: libpq/auth.c:2407 +#: commands/lockcmds.c:149 commands/tablecmds.c:204 commands/tablecmds.c:1140 +#: commands/tablecmds.c:2407 commands/tablecmds.c:3759 +#: commands/tablecmds.c:6736 commands/indexcmds.c:203 +#: commands/indexcmds.c:1551 catalog/toasting.c:93 catalog/objectaddress.c:405 #, c-format -msgid "LDAP search failed for filter \"%s\" on server \"%s\": user is not unique (%ld matches)" -msgstr "" -"�chec de la recherche LDAP pour le filtre � %s � sur le serveur � %s � :\n" -"utilisateur non unique (%ld correspondances)" +msgid "\"%s\" is not a table" +msgstr "� %s � n'est pas une table" -#: libpq/auth.c:2424 +#: commands/define.c:67 commands/define.c:222 commands/define.c:254 +#: commands/define.c:282 #, c-format -msgid "could not get dn for the first entry matching \"%s\" on server \"%s\": %s" -msgstr "" -"n'a pas pu obtenir le dn pour la premi�re entr�e correspondante � %s � sur\n" -"le serveur � %s � : %s" +msgid "%s requires a parameter" +msgstr "%s requiert un param�tre" -#: libpq/auth.c:2444 +#: commands/define.c:108 commands/define.c:119 commands/define.c:189 +#: commands/define.c:207 #, 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" +msgid "%s requires a numeric value" +msgstr "%s requiert une valeur num�rique" -#: libpq/auth.c:2481 +#: commands/define.c:175 #, c-format -msgid "LDAP login failed for user \"%s\" on server \"%s\": error code %d" -msgstr "" -"�chec de connexion LDAP pour l'utilisateur � %s � sur le serveur � %s � :\n" -"code d'erreur %d" +msgid "%s requires a Boolean value" +msgstr "%s requiert une valeur bool�enne" -#: libpq/auth.c:2509 +#: commands/define.c:236 #, c-format -msgid "certificate authentication failed for user \"%s\": client certificate contains no user name" -msgstr "" -"l'authentification par le certificat a �chou� pour l'utilisateur � %s � :\n" -"le certificat du client ne contient aucun nom d'utilisateur" +msgid "argument of %s must be a name" +msgstr "l'argument de %s doit �tre un nom" -#: libpq/auth.c:2633 -msgid "RADIUS server not specified" -msgstr "serveur RADIUS non pr�cis�" +#: commands/define.c:266 +#, c-format +msgid "argument of %s must be a type name" +msgstr "l'argument de %s doit �tre un nom de type" -#: libpq/auth.c:2640 -msgid "RADIUS secret not specified" -msgstr "secret RADIUS non pr�cis�" +#: commands/define.c:291 +#, c-format +msgid "%s requires an integer value" +msgstr "%s requiert une valeur enti�re" -#: libpq/auth.c:2656 -#: libpq/hba.c:1213 +#: commands/define.c:312 #, 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" +msgid "invalid argument for %s: \"%s\"" +msgstr "argument invalide pour %s : � %s �" -#: libpq/auth.c:2684 -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" +#: commands/variable.c:172 +msgid "Conflicting \"datestyle\" specifications." +msgstr "Sp�cifications � datestyle � conflictuelles" -#: libpq/auth.c:2695 -msgid "could not generate random encryption vector" -msgstr "n'a pas pu g�n�rer le vecteur de chiffrement al�atoire" +#: commands/variable.c:328 +msgid "Cannot specify months in time zone interval." +msgstr "Ne peut pas sp�cifier des mois dans un interval avec fuseau horaire." -#: libpq/auth.c:2718 -msgid "could not perform MD5 encryption of password" -msgstr "n'a pas pu r�aliser le chiffrement MD5 du mot de passe" +#: commands/variable.c:334 +msgid "Cannot specify days in time zone interval." +msgstr "Ne peut pas sp�cifier des jours dans un interval avec fuseau horaire." -#: libpq/auth.c:2740 +#: commands/variable.c:380 commands/variable.c:519 #, c-format -msgid "could not create RADIUS socket: %m" -msgstr "n'a pas pu cr�er le socket RADIUS : %m" +msgid "time zone \"%s\" appears to use leap seconds" +msgstr "le fuseau horaire � %s � semble utiliser les secondes � leap �" -#: libpq/auth.c:2761 -#, c-format -msgid "could not bind local RADIUS socket: %m" -msgstr "n'a pas pu se lier � la socket RADIUS : %m" +#: commands/variable.c:382 commands/variable.c:521 +msgid "PostgreSQL does not support leap seconds." +msgstr "PostgreSQL ne supporte pas les secondes � leap �." -#: libpq/auth.c:2771 -#, c-format -msgid "could not send RADIUS packet: %m" -msgstr "n'a pas pu transmettre le paquet RADIUS : %m" +#: commands/variable.c:589 +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" -#: libpq/auth.c:2800 -#: libpq/auth.c:2825 -msgid "timeout waiting for RADIUS response" -msgstr "d�passement du d�lai pour la r�ponse du RADIUS" +#: commands/variable.c:596 +msgid "transaction read-write mode must be set before any query" +msgstr "" +"le mode de transaction lecture/�criture doit �tre configur� avant " +"d'ex�cuter\n" +"la premi�re requ�te" -#: libpq/auth.c:2818 -#, 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" +#: commands/variable.c:603 +msgid "cannot set transaction read-write mode during recovery" +msgstr "" +"ne peut pas initialiser le mode lecture-�criture des transactions lors de " +"la\n" +"restauration" -#: libpq/auth.c:2847 -#, c-format -msgid "could not read RADIUS response: %m" -msgstr "n'a pas pu lire la r�ponse RADIUS : %m" +#: commands/variable.c:652 +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:659 +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:666 storage/lmgr/predicate.c:1570 +msgid "cannot use serializable mode in a hot standby" +msgstr "" +"ne peut pas utiliser le mode s�rialisable sur un serveur en � Hot Standby �" + +#: commands/variable.c:667 +msgid "You can use REPEATABLE READ instead." +msgstr "Vous pouvez utiliser REPEATABLE READ � la place." + +#: commands/variable.c:715 +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:721 +msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query" +msgstr "SET TRANSACTION [NOT] DEFERRABLE doit �tre appel� avant toute requ�te" -#: libpq/auth.c:2859 -#: libpq/auth.c:2863 +#: commands/variable.c:803 #, c-format -msgid "RADIUS response was sent from incorrect port: %i" -msgstr "la r�ponse RADIUS a �t� envoy�e � partir d'un mauvais port : %i" +msgid "Conversion between %s and %s is not supported." +msgstr "La conversion entre %s et %s n'est pas support�e." -#: libpq/auth.c:2872 +#: commands/variable.c:810 +msgid "Cannot change \"client_encoding\" now." +msgstr "Ne peut pas modifier � client_encoding � maintenant." + +#: commands/variable.c:980 #, c-format -msgid "RADIUS response too short: %i" -msgstr "r�ponse RADIUS trop courte : %i" +msgid "permission denied to set role \"%s\"" +msgstr "droit refus� pour configurer le r�le � %s �" + +#: commands/prepare.c:71 +msgid "invalid statement name: must not be empty" +msgstr "nom de l'instruction invalide : ne doit pas �tre vide" + +#: commands/prepare.c:140 +msgid "utility statements cannot be prepared" +msgstr "les instructions utilitaires ne peuvent pas �tre pr�par�es" + +#: commands/prepare.c:240 commands/prepare.c:247 commands/prepare.c:706 +msgid "prepared statement is not a SELECT" +msgstr "l'instruction pr�par�e n'est pas un SELECT" -#: libpq/auth.c:2879 +#: commands/prepare.c:314 #, c-format -msgid "RADIUS response has corrupt length: %i (actual length %i)" -msgstr "la r�ponse RADIUS a une longueur corrompue : %i (longueur actuelle %i)" +msgid "wrong number of parameters for prepared statement \"%s\"" +msgstr "mauvais nombre de param�tres pour l'instruction pr�par�e � %s �" -#: libpq/auth.c:2887 +#: commands/prepare.c:316 #, c-format -msgid "RADIUS response is to a different request: %i (should be %i)" -msgstr "la r�ponse RADIUS correspond � une demande diff�rente : %i (devrait �tre %i)" +msgid "Expected %d parameters but got %d." +msgstr "%d param�tres attendus mais %d re�us." -#: libpq/auth.c:2912 -msgid "could not perform MD5 encryption of received packet" -msgstr "n'a pas pu r�aliser le chiffrement MD5 du paquet re�u" +#: commands/prepare.c:345 +msgid "cannot use subquery in EXECUTE parameter" +msgstr "ne peut pas utiliser les sous-requ�tes dans le param�tre EXECUTE" -#: libpq/auth.c:2921 -msgid "RADIUS response has incorrect MD5 signature" -msgstr "la r�ponse RADIUS a une signature MD5 erron�e" +#: commands/prepare.c:349 +msgid "cannot use aggregate function in EXECUTE parameter" +msgstr "ne peut pas utiliser la fonction d'agr�gat dans le param�tre EXECUTE" + +#: commands/prepare.c:353 +msgid "cannot use window function in EXECUTE parameter" +msgstr "ne peut pas utiliser une fonction window dans le param�tre EXECUTE" -#: libpq/auth.c:2938 +#: commands/prepare.c:366 #, c-format -msgid "RADIUS response has invalid code (%i) for user \"%s\"" -msgstr "la r�ponse RADIUS a un code invalide (%i) pour l'utilisateur � %s �" +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" +"type %s attendu" + +#: commands/prepare.c:370 rewrite/rewriteHandler.c:1060 catalog/heap.c:2446 +#: parser/parse_target.c:490 parser/parse_target.c:736 +#: parser/parse_target.c:746 parser/parse_node.c:410 +msgid "You will need to rewrite or cast the expression." +msgstr "" +"Vous devez r��crire l'expression ou lui appliquer une transformation de type." -#: 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:518 +#: commands/prepare.c:467 #, c-format -msgid "invalid large-object descriptor: %d" -msgstr "descripteur invalide de � Large Object � : %d" +msgid "prepared statement \"%s\" already exists" +msgstr "l'instruction pr�par�e � %s � existe d�j�" -#: libpq/be-fsstubs.c:173 -#: libpq/be-fsstubs.c:205 -#: libpq/be-fsstubs.c:528 +#: commands/prepare.c:525 #, c-format -msgid "permission denied for large object %u" -msgstr "droit refus� pour le Large Object %u" +msgid "prepared statement \"%s\" does not exist" +msgstr "l'instruction pr�par�e � %s � n'existe pas" -#: libpq/be-fsstubs.c:194 +#: commands/tablecmds.c:202 #, 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" +msgid "table \"%s\" does not exist" +msgstr "la table � %s � n'existe pas" -#: libpq/be-fsstubs.c:392 -msgid "must be superuser to use server-side lo_import()" -msgstr "doit �tre super-utilisateur pour utiliser lo_import() du c�t� serveur" +#: commands/tablecmds.c:203 +#, c-format +msgid "table \"%s\" does not exist, skipping" +msgstr "la table � %s � n'existe pas, poursuite du traitement" -#: libpq/be-fsstubs.c:393 -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." +#: commands/tablecmds.c:205 +msgid "Use DROP TABLE to remove a table." +msgstr "Utilisez DROP TABLE pour supprimer une table." -#: libpq/be-fsstubs.c:406 +#: commands/tablecmds.c:208 #, c-format -msgid "could not open server file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier serveur � %s � : %m" +msgid "sequence \"%s\" does not exist" +msgstr "la s�quence � %s � n'existe pas" -#: libpq/be-fsstubs.c:428 +#: commands/tablecmds.c:209 #, c-format -msgid "could not read server file \"%s\": %m" -msgstr "n'a pas pu lire le fichier serveur � %s � : %m" +msgid "sequence \"%s\" does not exist, skipping" +msgstr "la s�quence � %s � n'existe pas, poursuite du traitement" -#: libpq/be-fsstubs.c:458 -msgid "must be superuser to use server-side lo_export()" -msgstr "doit �tre super-utilisateur pour utiliser lo_export() du c�t� serveur" +#: commands/tablecmds.c:211 +msgid "Use DROP SEQUENCE to remove a sequence." +msgstr "Utilisez DROP SEQUENCE pour supprimer une s�quence." -#: libpq/be-fsstubs.c:459 -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." +#: commands/tablecmds.c:214 +#, c-format +msgid "view \"%s\" does not exist" +msgstr "la vue � %s � n'existe pas" -#: libpq/be-fsstubs.c:483 +#: commands/tablecmds.c:215 #, c-format -msgid "could not create server file \"%s\": %m" -msgstr "n'a pas pu cr�er le fichier serveur � %s � : %m" +msgid "view \"%s\" does not exist, skipping" +msgstr "la vue � %s � n'existe pas, poursuite du traitement" -#: libpq/be-fsstubs.c:495 +#: commands/tablecmds.c:216 commands/tablecmds.c:2184 +#: commands/tablecmds.c:2439 commands/tablecmds.c:3774 +#: commands/tablecmds.c:9081 commands/view.c:181 catalog/objectaddress.c:412 #, c-format -msgid "could not write server file \"%s\": %m" -msgstr "n'a pas pu �crire le fichier serveur � %s � : %m" +msgid "\"%s\" is not a view" +msgstr "� %s � n'est pas une vue" + +#: commands/tablecmds.c:217 +msgid "Use DROP VIEW to remove a view." +msgstr "Utilisez DROP VIEW pour supprimer une vue." -#: libpq/be-secure.c:283 -#: libpq/be-secure.c:378 +#: commands/tablecmds.c:220 parser/parse_utilcmd.c:1505 #, c-format -msgid "SSL error: %s" -msgstr "erreur SSL : %s" +msgid "index \"%s\" does not exist" +msgstr "l'index � %s � n'existe pas" -#: libpq/be-secure.c:292 -#: libpq/be-secure.c:387 -#: libpq/be-secure.c:951 +#: commands/tablecmds.c:221 #, c-format -msgid "unrecognized SSL error code: %d" -msgstr "code d'erreur SSL inconnu : %d" +msgid "index \"%s\" does not exist, skipping" +msgstr "l'index � %s � n'existe pas, poursuite du traitement" -#: libpq/be-secure.c:331 -#: libpq/be-secure.c:335 -#: libpq/be-secure.c:345 -msgid "SSL renegotiation failure" -msgstr "�chec lors de la re-n�gotiation SSL" +#: commands/tablecmds.c:223 +msgid "Use DROP INDEX to remove an index." +msgstr "Utilisez DROP INDEX pour supprimer un index." -#: libpq/be-secure.c:339 -msgid "SSL failed to send renegotiation request" -msgstr "SSL a �chou� lors de l'envoi de la requ�te de re-n�gotiation" +#: commands/tablecmds.c:227 commands/typecmds.c:666 +#, c-format +msgid "type \"%s\" does not exist, skipping" +msgstr "le type � %s � n'existe pas, poursuite du traitement" -#: libpq/be-secure.c:736 +#: commands/tablecmds.c:228 #, c-format -msgid "could not create SSL context: %s" -msgstr "n'a pas pu cr�er le contexte SSL : %s" +msgid "\"%s\" is not a type" +msgstr "� %s � n'est pas un type" -#: libpq/be-secure.c:746 +#: commands/tablecmds.c:229 +msgid "Use DROP TYPE to remove a type." +msgstr "Utilisez DROP TYPE pour supprimer un type." + +#: commands/tablecmds.c:232 commands/tablecmds.c:8991 #, c-format -msgid "could not load server certificate file \"%s\": %s" -msgstr "n'a pas pu charger le fichier du certificat serveur � %s � : %s" +msgid "foreign table \"%s\" does not exist" +msgstr "la table distante � %s � n'existe pas" -#: libpq/be-secure.c:752 +#: commands/tablecmds.c:233 #, 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" +msgid "foreign table \"%s\" does not exist, skipping" +msgstr "la table distante � %s � n'existe pas, poursuite du traitement" -#: libpq/be-secure.c:767 +#: commands/tablecmds.c:234 commands/tablecmds.c:2190 +#: commands/tablecmds.c:2447 commands/tablecmds.c:3777 +#: commands/tablecmds.c:9089 catalog/objectaddress.c:419 #, c-format -msgid "private key file \"%s\" has group or world access" +msgid "\"%s\" is not a foreign table" +msgstr "� %s � n'est pas une table distante" + +#: commands/tablecmds.c:235 +msgid "Use DROP FOREIGN TABLE to remove a foreign table." +msgstr "Utilisez DROP FOREIGN TABLE pour supprimer une table distante." + +#: commands/tablecmds.c:432 executor/execMain.c:2411 +msgid "ON COMMIT can only be used on temporary tables" +msgstr "ON COMMIT peut seulement �tre utilis� sur des tables temporaires" + +#: commands/tablecmds.c:436 +msgid "constraints on foreign tables are not supported" +msgstr "les contraintes sur les tables distantes ne sont pas support�es" + +#: commands/tablecmds.c:454 executor/execMain.c:2429 +msgid "cannot create temporary table within security-restricted operation" msgstr "" -"le fichier de cl� priv� � %s � est accessible par le groupe et/ou par les\n" -"autres" +"ne peut pas cr�er une table temporaire � l'int�rieur d'une fonction\n" +"restreinte pour s�curit�" -#: libpq/be-secure.c:769 -msgid "Permissions should be u=rw (0600) or less." -msgstr "Les droits devraient �tre u=rwx (0600) ou inf�rieures." +#: commands/tablecmds.c:486 commands/tablecmds.c:7971 commands/indexcmds.c:268 +#: executor/execMain.c:2462 +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" -#: libpq/be-secure.c:776 -#, 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" +#: commands/tablecmds.c:552 commands/tablecmds.c:4285 +msgid "default values on foreign tables are not supported" +msgstr "les valeurs par d�faut ne sont pas support�es sur les tables distantes" -#: libpq/be-secure.c:781 +#: commands/tablecmds.c:932 #, c-format -msgid "check of private key failed: %s" -msgstr "�chec de la v�rification de la cl� priv�e : %s" +msgid "truncate cascades to table \"%s\"" +msgstr "TRUNCATE cascade sur la table � %s �" -#: libpq/be-secure.c:809 -#, c-format -msgid "could not access root certificate file \"%s\": %m" -msgstr "n'a pas pu acc�der au fichier du certificat racine � %s � : %m" +#: commands/tablecmds.c:1163 +msgid "cannot truncate temporary tables of other sessions" +msgstr "ne peut pas tronquer les tables temporaires des autres sessions" -#: libpq/be-secure.c:820 +#: commands/tablecmds.c:1279 commands/tablecmds.c:1711 +#: commands/tablecmds.c:4210 catalog/heap.c:389 #, c-format -msgid "could not load root certificate file \"%s\": %s" -msgstr "n'a pas pu charger le fichier du certificat racine � %s � : %s" +msgid "tables can have at most %d columns" +msgstr "les tables peuvent avoir au plus %d colonnes" -#: libpq/be-secure.c:843 +#: commands/tablecmds.c:1330 commands/copy.c:3799 commands/trigger.c:616 +#: parser/parse_target.c:914 parser/parse_target.c:925 #, c-format -msgid "SSL certificate revocation list file \"%s\" ignored" -msgstr "liste de r�vocation des certificats SSL � %s � ignor�e" +msgid "column \"%s\" specified more than once" +msgstr "la colonne � %s � est sp�cifi�e plus d'une fois" -#: libpq/be-secure.c:845 -msgid "SSL library does not support certificate revocation lists." -msgstr "La biblioth�que SSL ne supporte pas les listes de r�vocation des certificats." +#: commands/tablecmds.c:1365 parser/parse_utilcmd.c:623 +#: parser/parse_utilcmd.c:1717 +#, c-format +msgid "inherited relation \"%s\" is not a table" +msgstr "la relation h�rit�e � %s � n'est pas une table" -#: libpq/be-secure.c:852 +#: commands/tablecmds.c:1372 commands/tablecmds.c:8203 #, c-format -msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s" -msgstr "liste de r�vocation des certificats SSL � %s � introuvable, continue : %s" +msgid "cannot inherit from temporary relation \"%s\"" +msgstr "ine peut pas h�riter � partir d'une relation temporaire � %s �" -#: libpq/be-secure.c:854 -msgid "Certificates will not be checked against revocation list." -msgstr "Les certificats ne seront pas v�rifi�s avec la liste de r�vocation." +#: commands/tablecmds.c:1380 commands/tablecmds.c:8211 +msgid "cannot inherit from temporary relation of another session" +msgstr "" +"ne peut pas h�riter � partir d'une relation temporaire d'une autre session" -#: libpq/be-secure.c:896 +#: commands/tablecmds.c:1396 commands/tablecmds.c:8245 #, c-format -msgid "could not initialize SSL connection: %s" -msgstr "n'a pas pu initialiser la connexion SSL : %s" +msgid "relation \"%s\" would be inherited from more than once" +msgstr "la relation � %s � serait h�rit�e plus d'une fois" -#: libpq/be-secure.c:905 +#: commands/tablecmds.c:1444 #, c-format -msgid "could not set SSL socket: %s" -msgstr "n'a pas pu cr�er le socket SSL : %s" +msgid "merging multiple inherited definitions of column \"%s\"" +msgstr "assemblage de plusieurs d�finitions d'h�ritage pour la colonne � %s �" -#: libpq/be-secure.c:931 +#: commands/tablecmds.c:1452 #, c-format -msgid "could not accept SSL connection: %m" -msgstr "n'a pas pu accepter la connexion SSL : %m" +msgid "inherited column \"%s\" has a type conflict" +msgstr "la colonne h�rit�e � %s � a un conflit de type" -#: libpq/be-secure.c:935 -#: libpq/be-secure.c:946 -msgid "could not accept SSL connection: EOF detected" -msgstr "n'a pas pu accepter la connexion SSL : fin de fichier d�tect�" +#: commands/tablecmds.c:1454 commands/tablecmds.c:1475 +#: commands/tablecmds.c:1656 commands/tablecmds.c:1678 +#: parser/parse_coerce.c:1540 parser/parse_coerce.c:1560 +#: parser/parse_coerce.c:1605 parser/parse_param.c:217 +#, c-format +msgid "%s versus %s" +msgstr "%s versus %s" -#: libpq/be-secure.c:940 +#: commands/tablecmds.c:1461 #, c-format -msgid "could not accept SSL connection: %s" -msgstr "n'a pas pu accepter la connexion SSL : %s" +msgid "inherited column \"%s\" has a collation conflict" +msgstr "la colonne h�rit�e � %s � a un conflit sur le collationnement" -#: libpq/be-secure.c:991 -msgid "SSL certificate's common name contains embedded null" -msgstr "le nom commun du certificat SSL contient des NULL" +#: commands/tablecmds.c:1463 commands/tablecmds.c:1666 +#: commands/tablecmds.c:4154 +#, c-format +msgid "\"%s\" versus \"%s\"" +msgstr "� %s � versus � %s �" -#: libpq/be-secure.c:998 +#: commands/tablecmds.c:1473 #, c-format -msgid "SSL connection from \"%s\"" -msgstr "connexion SSL de � %s �" +msgid "inherited column \"%s\" has a storage parameter conflict" +msgstr "la colonne h�rit�e � %s � a un conflit de param�tre de stockage" -#: libpq/be-secure.c:1042 -msgid "no SSL error reported" -msgstr "aucune erreur SSL report�e" +#: commands/tablecmds.c:1581 parser/parse_utilcmd.c:776 +#: parser/parse_utilcmd.c:1154 parser/parse_utilcmd.c:1230 +msgid "cannot convert whole-row table reference" +msgstr "ne peut pas convertir la r�f�rence d'une ligne compl�te" -#: libpq/be-secure.c:1046 +#: commands/tablecmds.c:1582 parser/parse_utilcmd.c:777 #, c-format -msgid "SSL error code %lu" -msgstr "erreur SSL %lu" +msgid "Constraint \"%s\" contains a whole-row reference to table \"%s\"." +msgstr "" +"La contrainte � %s � contient une r�f�rence de ligne compl�te � la table � " +"%s �." -#: libpq/hba.c:158 +#: commands/tablecmds.c:1646 #, c-format -msgid "authentication file token too long, skipping: \"%s\"" -msgstr "jeton du fichier d'authentification trop long, ignore : � %s �" +msgid "merging column \"%s\" with inherited definition" +msgstr "assemblage de la colonne � %s � avec une d�finition h�rit�e" -#: libpq/hba.c:351 +#: commands/tablecmds.c:1654 #, c-format -msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" -msgstr "" -"n'a pas pu ouvrir le fichier d'authentification secondaire � @%s � comme\n" -"� %s � : %m" +msgid "column \"%s\" has a type conflict" +msgstr "la colonne � %s � a un conflit de type" -#. translator: the second %s is a list of auth methods -#: libpq/hba.c:651 +#: commands/tablecmds.c:1664 #, c-format -msgid "authentication option \"%s\" is only valid for authentication methods %s" -msgstr "" -"l'option d'authentification � %s � est seulement valide pour les m�thodes\n" -"d'authentification � %s �" +msgid "column \"%s\" has a collation conflict" +msgstr "la colonne � %s � a un conflit sur le collationnement" -#: libpq/hba.c:667 +#: commands/tablecmds.c:1676 #, 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" - -#: libpq/hba.c:713 -msgid "hostssl not supported on this platform" -msgstr "hostssl non support� sur cette plateforme" +msgid "column \"%s\" has a storage parameter conflict" +msgstr "la colonne � %s � a un conflit de param�tre de stockage" -#: libpq/hba.c:714 -msgid "Compile with --with-openssl to use SSL connections." -msgstr "Compilez avec --with-ssl pour utiliser les connexions SSL" - -#: libpq/hba.c:736 +#: commands/tablecmds.c:1728 #, c-format -msgid "invalid connection type \"%s\"" -msgstr "type de connexion � %s � invalide" +msgid "column \"%s\" inherits conflicting default values" +msgstr "la colonne � %s � h�rite de valeurs par d�faut conflictuelles" -#: libpq/hba.c:749 -msgid "end-of-line before database specification" -msgstr "fin de ligne avant la sp�cification de la base de donn�es" +#: commands/tablecmds.c:1730 +msgid "To resolve the conflict, specify a default explicitly." +msgstr "" +"Pour r�soudre le conflit, sp�cifiez explicitement une valeur par d�faut." -#: libpq/hba.c:762 -msgid "end-of-line before role specification" -msgstr "fin de ligne avant la sp�cification du r�le" +#: commands/tablecmds.c:1777 +#, c-format +msgid "" +"check constraint name \"%s\" appears multiple times but with different " +"expressions" +msgstr "" +"le nom de la contrainte de v�rification, � %s �, appara�t plusieurs fois\n" +"mais avec des expressions diff�rentes" -#: libpq/hba.c:777 -msgid "end-of-line before IP address specification" -msgstr "fin de ligne avant la sp�cification de l'adresse IP" +#: commands/tablecmds.c:1972 +msgid "cannot rename column of typed table" +msgstr "ne peut pas renommer une colonne d'une table typ�e" -#: libpq/hba.c:823 +#: commands/tablecmds.c:1989 #, c-format -msgid "invalid IP address \"%s\": %s" -msgstr "adresse IP � %s � invalide : %s" +msgid "\"%s\" is not a table, view, composite type, index or foreign table" +msgstr "" +"� %s � n'est ni une table, ni une vue, ni un type composite, ni une table " +"distante" -#: libpq/hba.c:846 +#: commands/tablecmds.c:2055 #, c-format -msgid "invalid CIDR mask in address \"%s\"" -msgstr "masque CIDR invalide dans l'adresse � %s �" +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" -#: libpq/hba.c:864 -msgid "end-of-line before netmask specification" -msgstr "fin de ligne avant la sp�cification du masque r�seau" +#: commands/tablecmds.c:2087 +#, c-format +msgid "cannot rename system column \"%s\"" +msgstr "ne peut pas renommer la colonne syst�me � %s �" -#: libpq/hba.c:876 +#: commands/tablecmds.c:2102 #, c-format -msgid "invalid IP mask \"%s\": %s" -msgstr "masque IP � %s � invalide : %s" +msgid "cannot rename inherited column \"%s\"" +msgstr "ne peut pas renommer la colonne h�rit�e � %s �" -#: libpq/hba.c:893 -msgid "IP address and mask do not match" -msgstr "l'adresse IP et le masque ne correspondent pas" +#: commands/tablecmds.c:2113 commands/tablecmds.c:4198 +#, c-format +msgid "column \"%s\" of relation \"%s\" already exists" +msgstr "la colonne � %s � de la relation � %s � existe d�j�" -#: libpq/hba.c:908 -msgid "end-of-line before authentication method" -msgstr "fin de ligne avant la m�thode d'authentification" +#: commands/tablecmds.c:2202 commands/tablecmds.c:7449 +#: commands/tablecmds.c:9125 +msgid "Use ALTER TYPE instead." +msgstr "Utilisez ALTER TYPE � la place." -#: libpq/hba.c:979 +#: commands/tablecmds.c:2249 catalog/index.c:772 catalog/heap.c:1013 #, c-format -msgid "invalid authentication method \"%s\"" -msgstr "m�thode d'authentification � %s � invalide" +msgid "relation \"%s\" already exists" +msgstr "la relation � %s � existe d�j�" -#: libpq/hba.c:990 +#. translator: first %s is a SQL command, eg ALTER TABLE +#: commands/tablecmds.c:2325 #, c-format -msgid "invalid authentication method \"%s\": not supported on this platform" +msgid "" +"cannot %s \"%s\" because it is being used by active queries in this session" msgstr "" -"m�thode d'authentification � %s � invalide : non support�e sur cette\n" -"plateforme" +"ne peut pas ex�cuter %s � %s � car cet objet est en cours d'utilisation par\n" +"des requ�tes actives dans cette session" -#: libpq/hba.c:1003 -msgid "krb5 authentication is not supported on local sockets" +#. translator: first %s is a SQL command, eg ALTER TABLE +#: commands/tablecmds.c:2334 +#, c-format +msgid "cannot %s \"%s\" because it has pending trigger events" msgstr "" -"l'authentification krb5 n'est pas support�e sur les connexions locales par\n" -"socket" +"ne peut pas ex�cuter %s � %s � car il reste des �v�nements sur les triggers" -#: libpq/hba.c:1014 -msgid "gssapi authentication is not supported on local sockets" -msgstr "" -"l'authentification gssapi n'est pas support�e sur les connexions locales par\n" -"socket" +#: commands/tablecmds.c:2431 +#, c-format +msgid "\"%s\" is not a composite type" +msgstr "� %s � n'est pas un type composite" -#: libpq/hba.c:1031 -msgid "cert authentication is only supported on hostssl connections" -msgstr "l'authentification cert est seulement support�e sur les connexions hostssl" +#: commands/tablecmds.c:3261 +#, c-format +msgid "cannot rewrite system relation \"%s\"" +msgstr "ne peut pas r�-�crire la relation syst�me � %s �" + +#: commands/tablecmds.c:3271 +msgid "cannot rewrite temporary tables of other sessions" +msgstr "ne peut pas r�-�crire les tables temporaires des autres sessions" -#: libpq/hba.c:1052 +#: commands/tablecmds.c:3496 #, 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" +msgid "rewriting table \"%s\"" +msgstr "r�-�criture de la table � %s �" -#: libpq/hba.c:1067 -msgid "ident, krb5, gssapi, sspi and cert" -msgstr "ident, krb5, gssapi, sspi et cert" +#: commands/tablecmds.c:3500 +#, c-format +msgid "verifying table \"%s\"" +msgstr "v�rification de la table � %s �" -#: libpq/hba.c:1081 -msgid "clientcert can only be configured for \"hostssl\" rows" -msgstr "clientcert peut seulement �tre configur� pour les lignes � hostssl �" +#: commands/tablecmds.c:3607 +#, c-format +msgid "column \"%s\" contains null values" +msgstr "la colonne � %s � contient des valeurs NULL" -#: libpq/hba.c:1092 -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" +#: commands/tablecmds.c:3621 +#, c-format +msgid "check constraint \"%s\" is violated by some row" +msgstr "la contrainte de v�rification � %s � est rompue par une ligne" -#: libpq/hba.c:1093 -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" +#: commands/tablecmds.c:3762 commands/tablecmds.c:4714 +#, c-format +msgid "\"%s\" is not a table or index" +msgstr "� %s � n'est pas une table ou un index" -#: libpq/hba.c:1106 -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 �" +#: commands/tablecmds.c:3765 commands/trigger.c:196 commands/trigger.c:1114 +#: rewrite/rewriteDefine.c:257 +#, c-format +msgid "\"%s\" is not a table or view" +msgstr "� %s � n'est pas une table ou une vue" -#: libpq/hba.c:1140 +#: commands/tablecmds.c:3768 #, c-format -msgid "invalid LDAP port number: \"%s\"" -msgstr "num�ro de port LDAP invalide : � %s �" +msgid "\"%s\" is not a table or foreign table" +msgstr "� %s � n'est pas une table ou une table distante" -#: libpq/hba.c:1186 -#: libpq/hba.c:1194 -msgid "krb5, gssapi and sspi" -msgstr "krb5, gssapi et sspi" +#: commands/tablecmds.c:3771 +#, 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" -#: libpq/hba.c:1232 +#: commands/tablecmds.c:3781 #, c-format -msgid "invalid RADIUS port number: \"%s\"" -msgstr "num�ro de port RADIUS invalide : � %s �" +msgid "\"%s\" is of the wrong type" +msgstr "� %s � est du mauvais type" -#: libpq/hba.c:1252 +#: commands/tablecmds.c:3930 commands/tablecmds.c:3937 #, c-format -msgid "unrecognized authentication option name: \"%s\"" -msgstr "nom d'option de l'authentification inconnu : � %s �" +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" -#: libpq/hba.c:1284 -msgid "cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, or ldapsearchattribute together with ldapprefix" +#: commands/tablecmds.c:3944 +#, c-format +msgid "" +"cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type" msgstr "" -"ne peut pas utiliser ldapbasedn, ldapbinddn, ldapbindpasswd\n" -"ou ldapsearchattribute avec ldapprefix" +"ne peut pas modifier la table distante � %s � car la colonne � %s.%s � " +"utilise\n" +"son type de ligne" -#: libpq/hba.c:1294 -msgid "authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix\", or \"ldapsuffix\" to be set" +#: commands/tablecmds.c:3951 +#, c-format +msgid "cannot alter table \"%s\" because column \"%s.%s\" uses its row type" msgstr "" -"la m�thode d'authentification � ldap � requiert un argument � ldapbasedn �,\n" -"� ldapprefix � ou � ldapsuffix � pour �tre mise en place" +"ne peut pas modifier la table � %s � car la colonne � %s.%s � utilise\n" +"son type de ligne" -#: libpq/hba.c:1482 -#: guc-file.l:436 +#: commands/tablecmds.c:4013 #, c-format -msgid "could not open configuration file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier de configuration � %s � : %m" +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" -#: libpq/hba.c:1614 +#: commands/tablecmds.c:4015 +msgid "Use ALTER ... CASCADE to alter the typed tables too." +msgstr "Utilisez ALTER ... CASCADE pour modifier aussi les tables de type." + +#: commands/tablecmds.c:4059 #, c-format -msgid "invalid regular expression \"%s\": %s" -msgstr "expression rationnelle invalide � %s � : %s" +msgid "type %s is not a composite type" +msgstr "le type %s n'est pas un type composite" + +#: commands/tablecmds.c:4085 +msgid "cannot add column to typed table" +msgstr "ne peut pas ajouter une colonne � une table typ�e" -#: libpq/hba.c:1637 +#: commands/tablecmds.c:4146 commands/tablecmds.c:8399 #, c-format -msgid "regular expression match for \"%s\" failed: %s" -msgstr "la correspondance de l'expression rationnelle pour � %s � a �chou� : %s" +msgid "child table \"%s\" has different type for column \"%s\"" +msgstr "la table fille � %s � a un type diff�rent pour la colonne � %s �" -#: libpq/hba.c:1655 +#: commands/tablecmds.c:4152 commands/tablecmds.c:8406 #, c-format -msgid "regular expression \"%s\" has no subexpressions as requested by backreference in \"%s\"" +msgid "child table \"%s\" has different collation for column \"%s\"" msgstr "" -"l'expression rationnelle � %s � n'a pas de sous-expressions comme celle\n" -"demand�e par la r�f�rence dans � %s �" +"la table fille � %s � a un collationnement diff�rent pour la colonne � %s �" -#: libpq/hba.c:1721 +#: commands/tablecmds.c:4162 #, 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" +msgid "child table \"%s\" has a conflicting \"%s\" column" +msgstr "la table fille � %s � a une colonne conflictuelle, � %s �" -#: libpq/hba.c:1762 +#: commands/tablecmds.c:4174 #, 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" -"correspondent pas" +msgid "merging definition of column \"%s\" for child \"%s\"" +msgstr "assemblage de la d�finition de la colonne � %s � pour le fils � %s �" -#: libpq/hba.c:1783 -#, 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 �" +#: commands/tablecmds.c:4404 +msgid "column must be added to child tables too" +msgstr "la colonne doit aussi �tre ajout�e aux tables filles" -#: libpq/hba.c:1807 +#: commands/tablecmds.c:4534 commands/tablecmds.c:4626 +#: commands/tablecmds.c:4671 commands/tablecmds.c:4767 +#: commands/tablecmds.c:4811 commands/tablecmds.c:4890 +#: commands/tablecmds.c:6633 #, c-format -msgid "could not open usermap file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier usermap � %s � : %m" +msgid "cannot alter system column \"%s\"" +msgstr "n'a pas pu modifier la colonne syst�me � %s �" -#: libpq/pqcomm.c:294 +#: commands/tablecmds.c:4570 #, 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" +msgid "column \"%s\" is in a primary key" +msgstr "la colonne � %s � est dans une cl� primaire" -#: libpq/pqcomm.c:298 +#: commands/tablecmds.c:4741 #, 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" +msgid "statistics target %d is too low" +msgstr "la cible statistique %d est trop basse" -#: libpq/pqcomm.c:325 +#: commands/tablecmds.c:4749 #, 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�" +msgid "lowering statistics target to %d" +msgstr "abaissement de la cible statistique � %d" -#: libpq/pqcomm.c:334 -msgid "IPv4" -msgstr "IPv4" +#: commands/tablecmds.c:4871 +#, c-format +msgid "invalid storage type \"%s\"" +msgstr "type � %s � de stockage invalide" -#: libpq/pqcomm.c:338 -msgid "IPv6" -msgstr "IPv6" +#: commands/tablecmds.c:4902 +#, 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)" -#: libpq/pqcomm.c:343 -msgid "Unix" -msgstr "Unix" +#: commands/tablecmds.c:4932 +msgid "cannot drop column from typed table" +msgstr "ne peut pas supprimer une colonne � une table typ�e" -#: libpq/pqcomm.c:348 +#: commands/tablecmds.c:4973 #, c-format -msgid "unrecognized address family %d" -msgstr "famille d'adresse %d non reconnue" +msgid "column \"%s\" of relation \"%s\" does not exist, skipping" +msgstr "la colonne � %s � de la relation � %s � n'existe pas, ignore" -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:359 +#: commands/tablecmds.c:4986 #, c-format -msgid "could not create %s socket: %m" -msgstr "n'a pas pu cr�er le socket %s : %m" +msgid "cannot drop system column \"%s\"" +msgstr "ne peut pas supprimer la colonne syst�me � %s �" -#: libpq/pqcomm.c:384 +#: commands/tablecmds.c:4993 #, c-format -msgid "setsockopt(SO_REUSEADDR) failed: %m" -msgstr "setsockopt(SO_REUSEADDR) a �chou� : %m" +msgid "cannot drop inherited column \"%s\"" +msgstr "ne peut pas supprimer la colonne h�rit�e � %s �" -#: libpq/pqcomm.c:399 +#: commands/tablecmds.c:5219 #, c-format -msgid "setsockopt(IPV6_V6ONLY) failed: %m" -msgstr "setsockopt(IPV6_V6ONLY) a �chou� : %m" +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 �" -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:418 +#: commands/tablecmds.c:5289 catalog/pg_constraint.c:645 catalog/heap.c:2296 #, c-format -msgid "could not bind %s socket: %m" -msgstr "n'a pas pu se lier � la socket %s : %m" +msgid "constraint \"%s\" for relation \"%s\" already exists" +msgstr "la contrainte � %s � de la relation � %s � existe d�j�" -#: libpq/pqcomm.c:421 -#, 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." +#: commands/tablecmds.c:5413 +msgid "constraint must be added to child tables too" +msgstr "la contrainte doit aussi �tre ajout�e aux tables filles" -#: libpq/pqcomm.c:424 +#: commands/tablecmds.c:5481 commands/sequence.c:1425 #, c-format -msgid "Is another postmaster already running on port %d? If not, wait a few seconds and retry." +msgid "referenced relation \"%s\" is not a table" +msgstr "la relation r�f�renc�e � %s � n'est pas une table" + +#: commands/tablecmds.c:5504 +msgid "constraints on permanent tables may reference only permanent tables" msgstr "" -"Un autre postmaster fonctionne-t'il d�j� sur le port %d ?\n" -"Sinon, attendez quelques secondes et r�essayez." +"les contraintes sur les tables permanentes peuvent seulement r�f�rencer des " +"tables permanentes" -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:457 +#: commands/tablecmds.c:5511 +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:5517 +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:5521 +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:5582 +msgid "number of referencing and referenced columns for foreign key disagree" +msgstr "" +"nombre de colonnes de r�f�rence et r�f�renc�es pour la cl� �trang�re en " +"d�saccord" + +#: commands/tablecmds.c:5671 #, c-format -msgid "could not listen on %s socket: %m" -msgstr "n'a pas pu �couter sur le socket %s : %m" +msgid "foreign key constraint \"%s\" cannot be implemented" +msgstr "la contrainte de cl� �trang�re � %s � ne peut pas �tre impl�ment�e" -#: libpq/pqcomm.c:542 +#: commands/tablecmds.c:5674 #, c-format -msgid "group \"%s\" does not exist" -msgstr "le groupe � %s � n'existe pas" +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." -#: libpq/pqcomm.c:552 +#: commands/tablecmds.c:5788 #, c-format -msgid "could not set group of file \"%s\": %m" -msgstr "n'a pas pu initialiser le groupe du fichier � %s � : %m" +msgid "foreign key constraint \"%s\" of relation \"%s\" does not exist" +msgstr "la cl� �trang�re � %s � de la relation � %s � n'existe pas" -#: libpq/pqcomm.c:563 +#: commands/tablecmds.c:5851 #, c-format -msgid "could not set permissions of file \"%s\": %m" -msgstr "n'a pas pu initialiser les droits du fichier � %s � : %m" +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" -#: libpq/pqcomm.c:593 +#: commands/tablecmds.c:5856 #, c-format -msgid "could not accept new connection: %m" -msgstr "n'a pas pu accepter la nouvelle connexion : %m" +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" -#: libpq/pqcomm.c:779 -#: libpq/pqcomm.c:879 +#: commands/tablecmds.c:5921 #, c-format -msgid "could not receive data from client: %m" -msgstr "n'a pas pu recevoir les donn�es du client : %m" +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" -#: libpq/pqcomm.c:854 +#: commands/tablecmds.c:5938 #, c-format -msgid "could not set socket to non-blocking mode: %m" -msgstr "n'a pas pu activer le mode non-bloquant pour la socket : %m" +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" -#: libpq/pqcomm.c:900 -#: libpq/pqcomm.c:911 +#: commands/tablecmds.c:6090 #, c-format -msgid "could not set socket to blocking mode: %m" -msgstr "n'a pas pu activer le mode bloquant pour la socket : %m" +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 �" -#: libpq/pqcomm.c:1056 -msgid "unexpected EOF within message length word" -msgstr "fin de fichier (EOF) inattendue � l'int�rieur de la longueur du message" - -#: libpq/pqcomm.c:1067 -msgid "invalid message length" -msgstr "longueur du message invalide" - -#: libpq/pqcomm.c:1089 -#: libpq/pqcomm.c:1099 -msgid "incomplete message from client" -msgstr "message incomplet du client" - -#: libpq/pqcomm.c:1208 +#: commands/tablecmds.c:6095 #, c-format -msgid "could not send data to client: %m" -msgstr "n'a pas pu envoyer les donn�es au client : %m" - -#: libpq/pqformat.c:436 -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:1386 -#: utils/adt/rowtypes.c:557 -msgid "insufficient data left in message" -msgstr "donn�es insuffisantes laiss�es dans le message" - -#: libpq/pqformat.c:636 -msgid "invalid string in message" -msgstr "cha�ne invalide dans le message" - -#: libpq/pqformat.c:652 -msgid "invalid message format" -msgstr "format du message invalide" +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" -#: snowball/dict_snowball.c:183 +#: commands/tablecmds.c:6146 #, 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 �" - -#: snowball/dict_snowball.c:215 -msgid "multiple Language parameters" -msgstr "multiples param�tres Language" +msgid "validating foreign key constraint \"%s\"" +msgstr "validation de la contraintes de cl� �trang�re � %s �" -#: snowball/dict_snowball.c:222 +#: commands/tablecmds.c:6442 #, c-format -msgid "unrecognized Snowball parameter: \"%s\"" -msgstr "param�tre Snowball non reconnu : � %s �" - -#: snowball/dict_snowball.c:230 -msgid "missing Language parameter" -msgstr "param�tre Language manquant" +msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" +msgstr "" +"ne peut pas supprimer la contrainte h�rit�e � %s � de la relation � %s �" -#: storage/smgr/md.c:371 -#: storage/smgr/md.c:839 +#: commands/tablecmds.c:6469 commands/tablecmds.c:6582 #, c-format -msgid "could not truncate file \"%s\": %m" -msgstr "n'a pas pu tronquer le fichier � %s � : %m" +msgid "constraint \"%s\" of relation \"%s\" does not exist" +msgstr "la contrainte � %s � de la relation � %s � n'existe pas" -#: storage/smgr/md.c:439 +#: commands/tablecmds.c:6475 #, c-format -msgid "cannot extend file \"%s\" beyond %u blocks" -msgstr "ne peut pas �tendre le fichier � %s � de plus de %u blocs" +msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" +msgstr "la contrainte � %s � de la relation � %s � n'existe pas, ignore" -#: storage/smgr/md.c:461 -#: storage/smgr/md.c:621 -#: storage/smgr/md.c:694 -#, 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" +#: commands/tablecmds.c:6617 +msgid "cannot alter column type of typed table" +msgstr "" +"ne peut pas modifier le type d'une colonne appartenant � une table typ�e" -#: storage/smgr/md.c:469 +#: commands/tablecmds.c:6640 #, c-format -msgid "could not extend file \"%s\": %m" -msgstr "n'a pas pu �tendre le fichier � %s � : %m" +msgid "cannot alter inherited column \"%s\"" +msgstr "ne peut pas modifier la colonne h�rit�e � %s �" -#: storage/smgr/md.c:471 -#: storage/smgr/md.c:478 -#: storage/smgr/md.c:720 -msgid "Check free disk space." -msgstr "V�rifiez l'espace disque disponible." +#: commands/tablecmds.c:6682 +msgid "transform expression must not return a set" +msgstr "l'expression de transformation ne doit pas renvoyer un ensemble" -#: storage/smgr/md.c:475 -#, c-format -msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u" +#: commands/tablecmds.c:6688 +msgid "cannot use subquery in transform expression" msgstr "" -"n'a pas pu �tendre le fichier � %s � : a �crit seulement %d octets sur %d\n" -"au bloc %u" - -#: storage/smgr/md.c:638 -#, 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" +"ne peut pas utiliser une sous-requ�te dans l'expression de transformation" -#: storage/smgr/md.c:654 -#, c-format -msgid "could not read block %u in file \"%s\": read only %d of %d bytes" +#: commands/tablecmds.c:6692 +msgid "cannot use aggregate function in transform expression" msgstr "" -"n'a pas pu lire le bloc %u du fichier � %s � : a lu seulement %d octets\n" -"sur %d" +"ne peut pas utiliser la fonction d'agr�gat dans l'expression de la " +"transformation" -#: storage/smgr/md.c:711 -#, 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:716 -#, c-format -msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes" +#: commands/tablecmds.c:6696 +msgid "cannot use window function in transform expression" msgstr "" -"n'a pas pu �crire le bloc %u du fichier � %s � : a seulement �crit %d\n" -"octets sur %d" - -#: storage/smgr/md.c:815 -#, 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" +"ne peut pas utiliser la fonction window dans l'expression de la " +"transformation" -#: storage/smgr/md.c:864 +#: commands/tablecmds.c:6715 #, 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" +msgid "column \"%s\" cannot be cast to type %s" +msgstr "la colonne � %s � ne peut pas �tre convertie vers le type %s" -#: storage/smgr/md.c:1087 +#: commands/tablecmds.c:6762 #, c-format -msgid "could not fsync file \"%s\" but retrying: %m" +msgid "type of inherited column \"%s\" must be changed in child tables too" msgstr "" -"n'a pas pu synchroniser sur disque (fsync) le fichier � %s �, nouvelle\n" -"tentative : %m" - -#: storage/smgr/md.c:1586 -#, 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" +"le type de colonne h�rit�e � %s � doit aussi �tre renomm�e pour les tables " +"filles" -#: storage/smgr/md.c:1608 +#: commands/tablecmds.c:6843 #, c-format -msgid "could not seek to end of file \"%s\": %m" -msgstr "n'a pas pu trouver la fin du fichier � %s � : %m" - -#: storage/buffer/bufmgr.c:131 -#: storage/buffer/bufmgr.c:235 -msgid "cannot access temporary tables of other sessions" -msgstr "ne peut pas acc�der aux tables temporaires d'autres sessions" +msgid "cannot alter type of column \"%s\" twice" +msgstr "ne peut pas modifier la colonne � %s � deux fois" -#: storage/buffer/bufmgr.c:364 +#: commands/tablecmds.c:6879 #, c-format -msgid "unexpected data beyond EOF in block %u of relation %s" +msgid "default for column \"%s\" cannot be cast to type %s" msgstr "" -"donn�es inattendues apr�s la fin de fichier dans le bloc %u de la relation\n" -"%s" +"la valeur par d�faut de la colonne � %s � ne peut pas �tre convertie vers " +"le\n" +"type %s" -#: storage/buffer/bufmgr.c:366 -msgid "This has been seen to occur with buggy kernels; consider updating your system." +#: commands/tablecmds.c:7005 +msgid "cannot alter type of a column used by a view or rule" msgstr "" -"Ceci s'est d�j� vu avec des noyaux bugg�s ; pensez � mettre � jour votre\n" -"syst�me." +"ne peut pas modifier le type d'une colonne utilis�e dans une vue ou une r�gle" -#: storage/buffer/bufmgr.c:438 +#: commands/tablecmds.c:7006 commands/tablecmds.c:7025 #, c-format -msgid "invalid page header in block %u of relation %s; zeroing out page" +msgid "%s depends on column \"%s\"" +msgstr "%s d�pend de la colonne � %s �" + +#: commands/tablecmds.c:7024 +msgid "cannot alter type of a column used in a trigger definition" msgstr "" -"en-t�te de page invalide dans le bloc %u de la relation %s ; remplacement\n" -"de la page par des z�ros" +"ne peut pas modifier le type d'une colonne utilis�e dans la d�finition d'un " +"trigger" -#: storage/buffer/bufmgr.c:446 +#: commands/tablecmds.c:7417 #, c-format -msgid "invalid page header in block %u of relation %s" -msgstr "en-t�te de page invalide dans le bloc %u de la relation %s" +msgid "cannot change owner of index \"%s\"" +msgstr "ne peut pas modifier le propri�taire de l'index � %s �" -#: storage/buffer/bufmgr.c:2706 -#, c-format -msgid "could not write block %u of %s" -msgstr "n'a pas pu �crire le bloc %u de %s" +#: commands/tablecmds.c:7419 +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." -#: storage/buffer/bufmgr.c:2708 -msgid "Multiple failures --- write error might be permanent." -msgstr "�checs multiples --- l'erreur d'�criture pourrait �tre permanent." +#: commands/tablecmds.c:7435 +#, c-format +msgid "cannot change owner of sequence \"%s\"" +msgstr "ne peut pas modifier le propri�taire de la s�quence � %s �" -#: storage/buffer/bufmgr.c:2729 +#: commands/tablecmds.c:7437 commands/tablecmds.c:9115 #, c-format -msgid "writing block %u of relation %s" -msgstr "�criture du bloc %u de la relation %s" +msgid "Sequence \"%s\" is linked to table \"%s\"." +msgstr "La s�quence � %s � est li�e � la table � %s �." -#: storage/buffer/localbuf.c:189 -msgid "no empty local buffer available" -msgstr "aucun tampon local vide disponible" +#: commands/tablecmds.c:7458 commands/tablecmds.c:9133 +#, 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" -#: storage/file/fd.c:403 +#: commands/tablecmds.c:7743 commands/cluster.c:178 #, c-format -msgid "getrlimit failed: %m" -msgstr "�chec de getrlimit : %m" +msgid "index \"%s\" for table \"%s\" does not exist" +msgstr "l'index � %s � pour la table � %s � n'existe pas" -#: storage/file/fd.c:493 -msgid "insufficient file descriptors available to start server process" -msgstr "nombre de descripteurs de fichier insuffisants pour lancer le processus serveur" +#: commands/tablecmds.c:7790 +msgid "cannot have multiple SET TABLESPACE subcommands" +msgstr "ne peut pas avoir de nombreuses sous-commandes SET TABLESPACE" -#: storage/file/fd.c:494 +#: commands/tablecmds.c:7843 #, c-format -msgid "System allows %d, we need at least %d." -msgstr "Le syst�me autorise %d, nous avons besoin d'au moins %d." +msgid "\"%s\" is not a table, index, or TOAST table" +msgstr "� %s � n'est pas une table, un index ou une table TOAST" -#: storage/file/fd.c:535 -#: storage/file/fd.c:1446 -#: storage/file/fd.c:1561 +#: commands/tablecmds.c:7964 #, c-format -msgid "out of file descriptors: %m; release and retry" -msgstr "plus de descripteurs de fichiers : %m; quittez et r�-essayez" +msgid "cannot move system relation \"%s\"" +msgstr "ne peut pas d�placer la colonne syst�me � %s �" -#: storage/file/fd.c:1088 -#, c-format -msgid "temporary file: path \"%s\", size %lu" -msgstr "fichier temporaire : chemin � %s �, taille %lu" +#: commands/tablecmds.c:7980 +msgid "cannot move temporary tables of other sessions" +msgstr "ne peut pas d�placer les tables temporaires d'autres sessions" -#: storage/file/fd.c:1620 -#, c-format -msgid "could not read directory \"%s\": %m" -msgstr "n'a pas pu lire le r�pertoire � %s � : %m" +#: commands/tablecmds.c:8172 +msgid "cannot change inheritance of typed table" +msgstr "ne peut pas modifier l'h�ritage d'une table typ�e" -#: storage/ipc/procarray.c:270 -#: storage/ipc/sinvaladt.c:302 -#: storage/lmgr/proc.c:289 -#: postmaster/postmaster.c:1833 -msgid "sorry, too many clients already" -msgstr "d�sol�, trop de clients sont d�j� connect�s" +#: commands/tablecmds.c:8218 +msgid "cannot inherit to temporary relation of another session" +msgstr "ne peut pas h�riter de la table temporaire d'une autre session" -#: storage/ipc/procarray.c:639 -msgid "consistent state delayed because recovery snapshot incomplete" -msgstr "�tat de coh�rence pas encore atteint � cause d'un snapshot de restauration incomplet" - -#: storage/ipc/shmem.c:190 -#: storage/lmgr/lock.c:629 -#: storage/lmgr/lock.c:698 -#: storage/lmgr/lock.c:2132 -#: storage/lmgr/lock.c:2511 -#: storage/lmgr/lock.c:2576 -#: storage/lmgr/proc.c:192 -#: storage/lmgr/proc.c:210 -#: utils/hash/dynahash.c:925 -msgid "out of shared memory" -msgstr "m�moire partag�e �puis�e" +#: commands/tablecmds.c:8272 +msgid "circular inheritance not allowed" +msgstr "h�ritage circulaire interdit" -#: storage/ipc/shmem.c:346 -#: storage/ipc/shmem.c:399 +#: commands/tablecmds.c:8273 #, 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 "\"%s\" is already a child of \"%s\"." +msgstr "� %s � est d�j� un enfant de � %s �." -#: storage/ipc/shmem.c:365 +#: commands/tablecmds.c:8281 #, 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 �" +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" -#: storage/ipc/shmem.c:380 +#: commands/tablecmds.c:8417 #, 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" - -#: storage/ipc/shmem.c:427 -#: storage/ipc/shmem.c:446 -msgid "requested shared memory size overflows size_t" -msgstr "la taille de la m�moire partag�e demand�e d�passe size_t" +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" -#: storage/large_object/inv_api.c:550 -#: storage/large_object/inv_api.c:747 +#: commands/tablecmds.c:8433 #, c-format -msgid "large object %u was not opened for writing" -msgstr "le � Large Object � %u n'a pas �t� ouvert en �criture" +msgid "child table is missing column \"%s\"" +msgstr "la colonne � %s � manque � la table enfant" -#: storage/large_object/inv_api.c:557 -#: storage/large_object/inv_api.c:754 +#: commands/tablecmds.c:8512 #, c-format -msgid "large object %u was already dropped" -msgstr "le � Large Object � %u a d�j� �t� supprim�" +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 �" -#: storage/lmgr/deadlock.c:915 +#: commands/tablecmds.c:8536 #, c-format -msgid "Process %d waits for %s on %s; blocked by process %d." -msgstr "Le processus %d attend %s sur %s ; bloqu� par le processus %d." +msgid "child table is missing constraint \"%s\"" +msgstr "la contrainte � %s � manque � la table enfant" -#: storage/lmgr/deadlock.c:934 +#: commands/tablecmds.c:8616 #, c-format -msgid "Process %d: %s" -msgstr "Processus %d : %s" - -#: storage/lmgr/deadlock.c:941 -msgid "deadlock detected" -msgstr "Bloquage mortel d�tect�" +msgid "relation \"%s\" is not a parent of relation \"%s\"" +msgstr "la relation � %s � n'est pas un parent de la relation � %s �" -#: storage/lmgr/deadlock.c:944 -msgid "See server log for query details." -msgstr "Voir les journaux applicatifs du serveur pour les d�tails sur la requ�te." +#: commands/tablecmds.c:8833 +msgid "typed tables cannot inherit" +msgstr "les tables avec type ne peuvent pas h�riter d'autres tables" -#: storage/lmgr/lmgr.c:717 +#: commands/tablecmds.c:8864 #, c-format -msgid "relation %u of database %u" -msgstr "relation %u de la base de donn�es %u" +msgid "table is missing column \"%s\"" +msgstr "la colonne � %s � manque � la table" -#: storage/lmgr/lmgr.c:723 +#: commands/tablecmds.c:8874 #, c-format -msgid "extension of relation %u of database %u" -msgstr "extension de la relation %u de la base de donn�es %u" +msgid "table has column \"%s\" where type requires \"%s\"" +msgstr "la table a une colonne � %s � alors que le type impose � %s �." -#: storage/lmgr/lmgr.c:729 +#: commands/tablecmds.c:8883 #, 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" +msgid "table \"%s\" has different type for column \"%s\"" +msgstr "la table � %s � a un type diff�rent pour la colonne � %s �" -#: storage/lmgr/lmgr.c:736 +#: commands/tablecmds.c:8896 #, 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" +msgid "table has extra column \"%s\"" +msgstr "la table a une colonne suppl�mentaire � %s �" -#: storage/lmgr/lmgr.c:744 +#: commands/tablecmds.c:8943 #, c-format -msgid "transaction %u" -msgstr "transaction %u" +msgid "\"%s\" is not a typed table" +msgstr "� %s � n'est pas une table typ�e" -#: storage/lmgr/lmgr.c:749 -#, c-format -msgid "virtual transaction %d/%u" -msgstr "transaction virtuelle %d/%u" +#: commands/tablecmds.c:9114 +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" -#: storage/lmgr/lmgr.c:755 +#: commands/tablecmds.c:9221 #, 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" +msgid "relation \"%s\" already exists in schema \"%s\"" +msgstr "la relation � %s � existe d�j� dans le sch�ma � %s �" -#: storage/lmgr/lmgr.c:763 -#, c-format -msgid "user lock [%u,%u,%u]" -msgstr "verrou utilisateur [%u,%u,%u]" +#: commands/proclang.c:93 +msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters" +msgstr "" +"utilisation des informations de pg_pltemplate au lieu des param�tres de\n" +"CREATE LANGUAGE" -#: storage/lmgr/lmgr.c:770 +#: commands/proclang.c:103 #, c-format -msgid "advisory lock [%u,%u,%u,%u]" -msgstr "verrou informatif [%u,%u,%u,%u]" +msgid "must be superuser to create procedural language \"%s\"" +msgstr "doit �tre super-utilisateur pour cr�er le langage de proc�dures � %s �" -#: storage/lmgr/lmgr.c:778 +#: commands/proclang.c:123 commands/proclang.c:279 #, c-format -msgid "unrecognized locktag type %d" -msgstr "type locktag non reconnu %d" +msgid "function %s must return type \"language_handler\"" +msgstr "la fonction %s doit renvoyer le type � language_handler �" -#: storage/lmgr/lock.c:516 +#: commands/proclang.c:243 #, c-format -msgid "cannot acquire lock mode %s on database objects while recovery is in progress" +msgid "unsupported language \"%s\"" +msgstr "langage non support� � %s �" + +#: commands/proclang.c:245 +msgid "The supported languages are listed in the pg_pltemplate system catalog." 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" +"Les langages support�s sont list�s dans le catalogue syst�me pg_pltemplate." -#: storage/lmgr/lock.c:518 -msgid "Only RowExclusiveLock or less can be acquired on database objects during recovery." +#: commands/proclang.c:253 +msgid "must be superuser to create custom procedural language" msgstr "" -"Seuls RowExclusiveLock et les verrous inf�rieurs peuvent �tre acquis sur les\n" -"objets d'une base pendant une restauration." +"doit �tre super-utilisateur pour cr�er un langage de proc�dures personnalis�" -#: storage/lmgr/lock.c:630 -#: storage/lmgr/lock.c:699 -#: storage/lmgr/lock.c:2512 -#: storage/lmgr/lock.c:2577 -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:2133 -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." - -#: storage/lmgr/proc.c:1006 -#: utils/adt/misc.c:102 +#: commands/proclang.c:272 #, c-format -msgid "could not send signal to process %d: %m" -msgstr "n'a pas pu envoyer le signal au processus %d : %m" +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 �" -#: storage/lmgr/proc.c:1040 +#: commands/proclang.c:357 commands/proclang.c:606 #, c-format -msgid "process %d avoided deadlock for %s on %s by rearranging queue order after %ld.%03d ms" -msgstr "" -"le processus %d a �vit� un verrou mortel pour %s sur %s en modifiant l'ordre\n" -"de la queue apr�s %ld.%03d ms" +msgid "language \"%s\" already exists" +msgstr "le langage � %s � existe d�j�" -#: storage/lmgr/proc.c:1052 +#: commands/proclang.c:537 #, c-format -msgid "process %d detected deadlock while waiting for %s on %s after %ld.%03d ms" -msgstr "" -"le processus %d a d�tect� un verrou mortel alors qu'il �tait en attente de\n" -"%s sur %s apr�s %ld.%03d ms" +msgid "language \"%s\" does not exist, skipping" +msgstr "le langage � %s � n'existe pas, poursuite du traitement" -#: storage/lmgr/proc.c:1058 +#: commands/proclang.c:600 commands/proclang.c:640 commands/proclang.c:754 +#: commands/functioncmds.c:839 commands/functioncmds.c:2018 #, 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" +msgid "language \"%s\" does not exist" +msgstr "le langage � %s � n'existe pas" -#: storage/lmgr/proc.c:1062 +#: commands/analyze.c:153 #, 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" +msgid "skipping analyze of \"%s\" --- lock not available" +msgstr "ignore l'analyse de � %s � --- verrou non disponible" -#: storage/lmgr/proc.c:1078 +#: commands/analyze.c:170 #, 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" +msgid "skipping \"%s\" --- only superuser can analyze it" +msgstr "ignore � %s � --- seul le super-utilisateur peut l'analyser" -#: storage/page/bufpage.c:143 -#: storage/page/bufpage.c:390 -#: storage/page/bufpage.c:623 -#: storage/page/bufpage.c:753 +#: commands/analyze.c:174 #, 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" +msgid "skipping \"%s\" --- only superuser or database owner can analyze it" +msgstr "" +"ignore � %s � --- seul le super-utilisateur ou le propri�taire de la base " +"de\n" +"donn�es peut l'analyser" -#: storage/page/bufpage.c:433 +#: commands/analyze.c:178 #, c-format -msgid "corrupted item pointer: %u" -msgstr "pointeur d'�l�ment corrompu : %u" +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" -#: storage/page/bufpage.c:444 -#: storage/page/bufpage.c:805 +#: commands/analyze.c:194 #, c-format -msgid "corrupted item lengths: total %u, available space %u" -msgstr "longueurs d'�l�ment corrompus : total %u, espace disponible %u" +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" -#: storage/page/bufpage.c:642 -#: storage/page/bufpage.c:778 +#: commands/analyze.c:285 #, c-format -msgid "corrupted item pointer: offset = %u, size = %u" -msgstr "pointeur d'�l�ment corrompu : d�calage = %u, taille = %u" +msgid "analyzing \"%s.%s\" inheritance tree" +msgstr "analyse l'arbre d'h�ritage � %s.%s �" -#: nodes/nodeFuncs.c:110 -#: nodes/nodeFuncs.c:136 -#: parser/parse_coerce.c:1568 -#: parser/parse_coerce.c:1585 -#: parser/parse_coerce.c:1643 -#: parser/parse_expr.c:1606 -#: parser/parse_func.c:373 -#: parser/parse_oper.c:983 +#: commands/analyze.c:290 #, 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" +msgid "analyzing \"%s.%s\"" +msgstr "analyse � %s.%s �" -#: optimizer/plan/initsplan.c:585 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer join" +#: commands/analyze.c:598 +#, c-format +msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s" msgstr "" -"SELECT FOR UPDATE/SHARE ne peut �tre appliqu� sur le c�t� possiblement NULL\n" -"d'une jointure externe" - -#: optimizer/plan/planner.c:947 -#: parser/analyze.c:1205 -#: parser/analyze.c:1393 -#: parser/analyze.c:2035 -msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT" -msgstr "SELECT FOR UPDATE/SHARE n'est pas autoris� avec UNION/INTERSECT/EXCEPT" +"ANALYZE automatique de la table � %s.%s.%s � ; utilisation syst�me : %s" -#: optimizer/plan/planner.c:2215 -msgid "could not implement GROUP BY" -msgstr "n'a pas pu implant� GROUP BY" - -#: optimizer/plan/planner.c:2216 -#: optimizer/plan/planner.c:2385 -#: optimizer/prep/prepunion.c:769 -msgid "Some of the datatypes only support hashing, while others only support sorting." +#: commands/analyze.c:1238 +#, 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 "" -"Certains des types de donn�es supportent seulement le hachage,\n" -"alors que les autres supportent seulement le tri." +"� %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" -#: optimizer/plan/planner.c:2384 -msgid "could not implement DISTINCT" -msgstr "n'a pas pu implant� DISTINCT" +#: commands/analyze.c:1499 executor/execQual.c:2848 +msgid "could not convert row type" +msgstr "n'a pas pu convertir le type de ligne" -#: optimizer/plan/planner.c:2828 -msgid "could not implement window PARTITION BY" -msgstr "n'a pas pu implanter PARTITION BY de window" +#: commands/conversioncmds.c:71 +#, c-format +msgid "source encoding \"%s\" does not exist" +msgstr "le codage source � %s � n'existe pas" -#: optimizer/plan/planner.c:2829 -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." +#: commands/conversioncmds.c:78 +#, c-format +msgid "destination encoding \"%s\" does not exist" +msgstr "l'encodage de destination � %s � n'existe pas" -#: optimizer/plan/planner.c:2833 -msgid "could not implement window ORDER BY" -msgstr "n'a pas pu implanter ORDER BY dans le window" +#: commands/conversioncmds.c:92 +#, c-format +msgid "encoding conversion function %s must return type \"void\"" +msgstr "la fonction de conversion d'encodage %s doit renvoyer le type � void �" -#: optimizer/plan/planner.c:2834 -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." +#: commands/conversioncmds.c:152 +#, c-format +msgid "conversion \"%s\" does not exist, skipping" +msgstr "la conversion � %s � n'existe pas, poursuite du traitement" -#: optimizer/util/clauses.c:4030 +#: commands/conversioncmds.c:211 #, c-format -msgid "SQL function \"%s\" during inlining" -msgstr "fonction SQL � %s � durant � inlining �" +msgid "conversion \"%s\" already exists in schema \"%s\"" +msgstr "la conversion � %s � existe d�j� dans le sch�ma � %s �" -#: optimizer/prep/prepunion.c:374 -msgid "could not implement recursive UNION" -msgstr "n'a pas pu implant� le UNION r�cursif" +#: commands/sequence.c:127 +msgid "unlogged sequences are not supported" +msgstr "les s�quences non trac�es ne sont pas support�es" -#: optimizer/prep/prepunion.c:375 -msgid "All column datatypes must be hashable." -msgstr "Tous les types de donn�es colonnes doivent �tre hachables." +#: commands/sequence.c:537 commands/sequence.c:751 commands/sequence.c:793 +#: commands/sequence.c:830 commands/sequence.c:1495 catalog/aclchk.c:3071 +#, c-format +msgid "permission denied for sequence %s" +msgstr "droit refus� pour la s�quence %s" -#. translator: %s is UNION, INTERSECT, or EXCEPT -#: optimizer/prep/prepunion.c:768 +#: commands/sequence.c:620 #, c-format -msgid "could not implement %s" -msgstr "n'a pas pu implant� %s" +msgid "nextval: reached maximum value of sequence \"%s\" (%s)" +msgstr "nextval : valeur maximale de la s�quence � %s � (%s) atteinte" -#: parser/scansup.c:190 +#: commands/sequence.c:643 #, c-format -msgid "identifier \"%s\" will be truncated to \"%s\"" -msgstr "l'identifiant � %s � sera tronqu� en � %s �" +msgid "nextval: reached minimum value of sequence \"%s\" (%s)" +msgstr "nextval : valeur minimale de la s�quence � %s � (%s) atteinte" -#: parser/analyze.c:450 -msgid "INSERT ... SELECT cannot specify INTO" -msgstr "INSERT ... SELECT ne peut pas avoir INTO" +#: commands/sequence.c:757 +#, 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" -#: parser/analyze.c:552 -#: parser/analyze.c:977 -msgid "VALUES lists must all be the same length" -msgstr "les listes VALUES doivent toutes �tre de la m�me longueur" +#: commands/sequence.c:776 commands/sequence.c:782 +msgid "lastval is not yet defined in this session" +msgstr "" +"la derni�re valeur (lastval) n'est pas encore d�finie dans cette session" -#: parser/analyze.c:573 -#: parser/analyze.c:1082 -msgid "VALUES must not contain table references" -msgstr "VALUES ne doit pas contenir de r�f�rences de table" +#: commands/sequence.c:851 +#, 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)" + +#: commands/sequence.c:1142 commands/sequence.c:1150 commands/sequence.c:1158 +#: commands/sequence.c:1166 commands/sequence.c:1174 commands/sequence.c:1182 +#: commands/sequence.c:1190 commands/sequence.c:1198 +#: commands/functioncmds.c:488 commands/functioncmds.c:578 +#: commands/functioncmds.c:586 commands/functioncmds.c:594 +#: commands/functioncmds.c:1981 commands/functioncmds.c:1989 +#: 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:147 commands/dbcommands.c:155 +#: commands/dbcommands.c:163 commands/dbcommands.c:171 +#: commands/dbcommands.c:179 commands/dbcommands.c:187 +#: commands/dbcommands.c:195 commands/dbcommands.c:1342 +#: commands/dbcommands.c:1350 commands/extension.c:1250 +#: commands/extension.c:1258 commands/extension.c:1266 +#: commands/extension.c:2731 commands/collationcmds.c:93 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/foreigncmds.c:468 commands/foreigncmds.c:477 +#: commands/typecmds.c:282 catalog/aclchk.c:833 catalog/aclchk.c:841 +msgid "conflicting or redundant options" +msgstr "options en conflit ou redondantes" -#: parser/analyze.c:587 -#: parser/analyze.c:1096 -msgid "VALUES must not contain OLD or NEW references" -msgstr "VALUES ne doit pas contenir des r�f�rences � OLD et NEW" +#: commands/sequence.c:1220 +msgid "INCREMENT must not be zero" +msgstr "la valeur INCREMENT ne doit pas �tre z�ro" -#: parser/analyze.c:588 -#: parser/analyze.c:1097 -msgid "Use SELECT ... UNION ALL ... instead." -msgstr "Utilisez � la place SELECT ... UNION ALL ..." +#: commands/sequence.c:1276 +#, c-format +msgid "MINVALUE (%s) must be less than MAXVALUE (%s)" +msgstr "la valeur MINVALUE (%s) doit �tre moindre que la valeur MAXVALUE (%s)" -#: parser/analyze.c:698 -#: parser/analyze.c:1109 -msgid "cannot use aggregate function in VALUES" -msgstr "ne peut pas utiliser la fonction d'agr�gat dans un VALUES" +#: commands/sequence.c:1301 +#, 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)" -#: parser/analyze.c:704 -#: parser/analyze.c:1115 -msgid "cannot use window function in VALUES" -msgstr "ne peut pas utiliser la fonction window dans un VALUES" +#: commands/sequence.c:1313 +#, 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)" -#: parser/analyze.c:736 -msgid "INSERT has more expressions than target columns" -msgstr "INSERT a plus d'expressions que les colonnes cibles" +#: commands/sequence.c:1343 +#, 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)" -#: parser/analyze.c:744 -msgid "INSERT has more target columns than expressions" -msgstr "INSERT a plus de colonnes cibles que d'expressions" +#: commands/sequence.c:1355 +#, 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)" -#: parser/analyze.c:993 -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" +#: commands/sequence.c:1370 +#, c-format +msgid "CACHE (%s) must be greater than zero" +msgstr "la valeur CACHE (%s) doit �tre plus grande que z�ro" -#: parser/analyze.c:1063 -#: parser/analyze.c:2183 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES" -msgstr "SELECT FOR UPDATE/SHARE ne peut pas �tre appliqu� � VALUES" +#: commands/sequence.c:1402 +msgid "invalid OWNED BY option" +msgstr "option OWNED BY invalide" -#: parser/analyze.c:1316 -msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" -msgstr "clause UNION/INTERSECT/EXCEPT ORDER BY invalide" +#: commands/sequence.c:1403 +msgid "Specify OWNED BY table.column or OWNED BY NONE." +msgstr "Indiquer OWNED BY table.colonne ou OWNED BY NONE." -#: parser/analyze.c:1317 -msgid "Only result column names can be used, not expressions or functions." +#: commands/sequence.c:1432 +msgid "sequence must have same owner as table it is linked to" msgstr "" -"Seuls les noms de colonnes r�sultats peuvent �tre utilis�s, pas les\n" -"expressions et les fonctions." - -#: parser/analyze.c:1318 -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." +"la s�quence doit avoir le m�me propri�taire que la table avec laquelle elle " +"est li�e" -#: parser/analyze.c:1385 -msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" -msgstr "INTO est autoris� uniquement sur le premier SELECT d'un UNION/INTERSECT/EXCEPT" - -#: parser/analyze.c:1445 -msgid "UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of same query level" +#: commands/sequence.c:1436 +msgid "sequence must be in same schema as table it is linked to" 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" +"la s�quence doit �tre dans le m�me sch�ma que la table avec laquelle elle " +"est li�e" -#: parser/analyze.c:1530 +#: commands/functioncmds.c:100 #, 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" +msgid "SQL function cannot return shell type %s" +msgstr "la fonction SQL ne peut pas retourner le type shell %s" -#: parser/analyze.c:1722 -msgid "CREATE TABLE AS specifies too many column names" -msgstr "CREATE TABLE AS sp�cifie trop de noms de colonnes" +#: commands/functioncmds.c:105 +#, c-format +msgid "return type %s is only a shell" +msgstr "le type de retour %s est seulement un shell" -#: parser/analyze.c:1772 -msgid "cannot use aggregate function in UPDATE" -msgstr "ne peut pas utiliser une fonction d'agr�gat dans un UPDATE" +#: commands/functioncmds.c:134 parser/parse_type.c:278 +#, 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 �" -#: parser/analyze.c:1778 -msgid "cannot use window function in UPDATE" -msgstr "ne peut pas utiliser une fonction window dans un UPDATE" +#: commands/functioncmds.c:140 +#, c-format +msgid "type \"%s\" is not yet defined" +msgstr "le type � %s � n'est pas encore d�fini" -#: parser/analyze.c:1885 -msgid "cannot use aggregate function in RETURNING" -msgstr "ne peut pas utiliser une fonction d'agr�gat dans RETURNING" +#: commands/functioncmds.c:141 +msgid "Creating a shell type definition." +msgstr "Cr�ation d'une d�finition d'un type shell." -#: parser/analyze.c:1891 -msgid "cannot use window function in RETURNING" -msgstr "ne peut pas utiliser une fonction window dans RETURNING" +#: commands/functioncmds.c:220 +#, c-format +msgid "SQL function cannot accept shell type %s" +msgstr "la fonction SQL ne peut pas accepter le type shell %s" -#: parser/analyze.c:1910 -msgid "RETURNING cannot contain references to other relations" -msgstr "RETURNING ne doit pas contenir de r�f�rences � d'autres relations" +#: commands/functioncmds.c:225 +#, c-format +msgid "argument type %s is only a shell" +msgstr "le type d'argument %s est seulement un shell" -#: parser/analyze.c:1949 -msgid "cannot specify both SCROLL and NO SCROLL" -msgstr "ne peut pas sp�cifier � la fois SCROLL et NO SCROLL" +#: commands/functioncmds.c:235 +#, c-format +msgid "type %s does not exist" +msgstr "le type %s n'existe pas" -#: parser/analyze.c:1963 -msgid "DECLARE CURSOR cannot specify INTO" -msgstr "DECLARE CURSOR ne peut pas sp�cifier INTO" +#: commands/functioncmds.c:243 +msgid "functions cannot accept set arguments" +msgstr "les fonctions ne peuvent pas accepter des arguments d'ensemble" -#: parser/analyze.c:1971 -msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported" -msgstr "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE n'est pas support�" +#: commands/functioncmds.c:252 +msgid "VARIADIC parameter must be the last input parameter" +msgstr "le param�tre VARIADIC doit �tre le dernier param�tre en entr�e" -#: parser/analyze.c:1972 -msgid "Holdable cursors must be READ ONLY." -msgstr "Les curseurs d�tenables doivent �tre en lecture seule (READ ONLY)." +#: commands/functioncmds.c:279 +msgid "VARIADIC parameter must be an array" +msgstr "le param�tre VARIADIC doit �tre un tableau" -#: parser/analyze.c:1985 -msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported" -msgstr "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE n'est pas support�" +#: commands/functioncmds.c:319 +#, c-format +msgid "parameter name \"%s\" used more than once" +msgstr "le nom du param�tre � %s � est utilis� plus d'une fois" -#: parser/analyze.c:1986 -msgid "Insensitive cursors must be READ ONLY." -msgstr "Les curseurs insensibles doivent �tre en lecture seule (READ ONLY)." +#: commands/functioncmds.c:334 +msgid "only input parameters can have default values" +msgstr "seuls les param�tres en entr�e peuvent avoir des valeurs par d�faut" -#: parser/analyze.c:2039 -msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause" -msgstr "SELECT FOR UPDATE/SHARE n'est pas autoris� avec la clause DISTINCT" +#: commands/functioncmds.c:347 +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" -#: parser/analyze.c:2043 -msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause" -msgstr "SELECT FOR UPDATE/SHARE n'est pas autoris� avec la clause GROUP BY" +#: commands/functioncmds.c:363 +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" -#: parser/analyze.c:2047 -msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause" -msgstr "SELECT FOR UPDATE/SHARE n'est pas autoris� avec la clause HAVING" - -#: parser/analyze.c:2051 -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" - -#: parser/analyze.c:2055 -msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions" -msgstr "SELECT FOR UPDATE/SHARE n'est pas autoris� avec les fonctions window" +#: commands/functioncmds.c:367 +msgid "cannot use aggregate function in parameter default value" +msgstr "" +"ne peut pas utiliser une fonction d'agr�gat dans la valeur par d�faut d'un\n" +"param�tre" -#: parser/analyze.c:2059 -msgid "SELECT FOR UPDATE/SHARE is not allowed with set-returning functions in the target list" +#: commands/functioncmds.c:371 +msgid "cannot use window function in parameter default value" msgstr "" -"SELECT FOR UPDATE/SHARE n'est pas autoris� avec les fonctions renvoyant plusieurs lignes\n" -"dans la liste cible" +"ne peut pas utiliser la fonction window dans la valeur par d�faut d'un " +"param�tre" -#: parser/analyze.c:2135 -msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names" -msgstr "SELECT FOR UPDATE/SHARE doit indiqu� les noms de relation non qualifi�s" +#: commands/functioncmds.c:381 +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" -#: parser/analyze.c:2165 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join" -msgstr "SELECT FOR UPDATE/SHARE ne peut pas �tre appliqu� � une jointure" +#: commands/functioncmds.c:620 +msgid "no function body specified" +msgstr "aucun corps de fonction sp�cifi�" -#: parser/analyze.c:2171 -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" +#: commands/functioncmds.c:630 +msgid "no language specified" +msgstr "aucun langage sp�cifi�" -#: parser/analyze.c:2177 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function" -msgstr "SELECT FOR UPDATE/SHARE ne peut pas �tre appliqu� � une fonction" +#: commands/functioncmds.c:651 commands/functioncmds.c:1351 +msgid "COST must be positive" +msgstr "COST doit �tre positif" -#: parser/analyze.c:2189 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query" -msgstr "" -"SELECT FOR UPDATE/SHARE ne peut pas �tre appliqu� � une requ�te\n" -"WITH" +#: commands/functioncmds.c:659 commands/functioncmds.c:1359 +msgid "ROWS must be positive" +msgstr "ROWS doit �tre positif" -#: parser/analyze.c:2203 +#: commands/functioncmds.c:698 #, c-format -msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause" -msgstr "la relation � %s � d'une clause FOR UPDATE/SHARE introuvable dans la clause FROM" +msgid "unrecognized function attribute \"%s\" ignored" +msgstr "l'attribut � %s � non reconnu de la fonction a �t� ignor�" -#: parser/parse_agg.c:127 -#: parser/parse_oper.c:254 +#: commands/functioncmds.c:749 #, 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:129 -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." +msgid "only one AS item needed for language \"%s\"" +msgstr "seul un �l�ment AS est n�cessaire pour le langage � %s �" -#: parser/parse_agg.c:170 -msgid "aggregate function calls cannot contain window function calls" +#: commands/functioncmds.c:841 commands/functioncmds.c:2020 +msgid "Use CREATE LANGUAGE to load the language into the database." msgstr "" -"les appels � la fonction d'agr�gat ne peuvent pas contenir des appels � la\n" -"fonction window" +"Utiliser CREATE LANGUAGE pour charger le langage dans la base de donn�es." -#: parser/parse_agg.c:241 -#: parser/parse_clause.c:1620 +#: commands/functioncmds.c:888 #, c-format -msgid "window \"%s\" does not exist" -msgstr "le window � %s � n'existe pas" - -#: parser/parse_agg.c:331 -msgid "aggregates not allowed in WHERE clause" -msgstr "agr�gats non autoris�s dans une clause WHERE" +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" -#: parser/parse_agg.c:337 -msgid "aggregates not allowed in JOIN conditions" -msgstr "agr�gats non autoris�s dans une condition JOIN" +#: commands/functioncmds.c:901 +msgid "function result type must be specified" +msgstr "le type de r�sultat de la fonction doit �tre sp�cifi�" -#: parser/parse_agg.c:358 -msgid "aggregates not allowed in GROUP BY clause" -msgstr "agr�gats non autoris�s dans une clause GROUP BY" +#: commands/functioncmds.c:936 commands/functioncmds.c:1363 +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" -#: parser/parse_agg.c:426 -msgid "aggregate functions not allowed in a recursive query's recursive term" -msgstr "" -"fonctions d'agr�gat non autoris�es dans le terme r�cursif de la requ�te\n" -"r�cursive" +#: commands/functioncmds.c:987 +#, c-format +msgid "function %s(%s) does not exist, skipping" +msgstr "la fonction %s(%s) n'existe pas, poursuite du traitement" -#: parser/parse_agg.c:451 -msgid "window functions not allowed in WHERE clause" -msgstr "fonctions window non autoris�es dans une clause WHERE" +#: commands/functioncmds.c:1009 +msgid "Use DROP AGGREGATE to drop aggregate functions." +msgstr "Utiliser DROP AGGREGATE pour supprimer les fonctions d'agr�gat." -#: parser/parse_agg.c:457 -msgid "window functions not allowed in JOIN conditions" -msgstr "fonctions window non autoris�es dans une condition JOIN" +#: commands/functioncmds.c:1016 +#, c-format +msgid "removing built-in function \"%s\"" +msgstr "suppression de la fonction interne � %s �" -#: parser/parse_agg.c:463 -msgid "window functions not allowed in HAVING clause" -msgstr "fonctions window non autoris�es dans une clause WHERE" +#: commands/functioncmds.c:1109 +msgid "Use ALTER AGGREGATE to rename aggregate functions." +msgstr "Utiliser ALTER AGGREGATE pour renommer les fonctions d'agr�gat." -#: parser/parse_agg.c:476 -msgid "window functions not allowed in GROUP BY clause" -msgstr "fonctions window non autoris�es dans une clause GROUP BY" +#: commands/functioncmds.c:1121 commands/aggregatecmds.c:292 +#, c-format +msgid "function %s already exists in schema \"%s\"" +msgstr "la fonction %s existe d�j� dans le sch�ma � %s �" -#: parser/parse_agg.c:495 -#: parser/parse_agg.c:508 -msgid "window functions not allowed in window definition" -msgstr "fonctions window non autoris�es dans une d�finition window" +#: commands/functioncmds.c:1172 +msgid "Use ALTER AGGREGATE to change owner of aggregate functions." +msgstr "" +"Utiliser ALTER AGGREGATE pour changer le propri�taire des fonctions " +"d'agr�gat." -#: parser/parse_agg.c:630 +#: commands/functioncmds.c:1511 #, 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 "source data type %s is a pseudo-type" +msgstr "le type de donn�es source %s est un pseudo-type" -#: parser/parse_agg.c:636 +#: commands/functioncmds.c:1517 #, 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" +msgid "target data type %s is a pseudo-type" +msgstr "le type de donn�es cible %s est un pseudo-type" -#: parser/parse_clause.c:420 +#: commands/functioncmds.c:1525 commands/functioncmds.c:1813 +#: catalog/objectaddress.c:843 #, c-format -msgid "JOIN/ON clause refers to \"%s\", which is not part of JOIN" -msgstr "la clause JOIN/ON se r�f�re � � %s �, qui ne fait pas partie du JOIN" +msgid "must be owner of type %s or type %s" +msgstr "doit �tre le propri�taire du type %s ou du type %s" -#: parser/parse_clause.c:501 -msgid "subquery in FROM cannot have SELECT INTO" -msgstr "la sous-requ�te du FROM ne peut pas avoir de SELECT INTO" +#: commands/functioncmds.c:1554 +msgid "cast function must take one to three arguments" +msgstr "la fonction de conversion doit prendre de un � trois arguments" -#: parser/parse_clause.c:523 -msgid "subquery in FROM cannot refer to other relations of same query level" +#: commands/functioncmds.c:1558 +msgid "" +"argument of cast function must match or be binary-coercible from source data " +"type" 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" +"l'argument de la fonction de conversion doit correspondre ou �tre binary-" +"coercible\n" +"� partir du type de la donn�e source" -#: parser/parse_clause.c:574 -msgid "function expression in FROM cannot refer to other relations of same query level" +#: commands/functioncmds.c:1562 +msgid "second argument of cast function must be type integer" msgstr "" -"l'expression de la fonction du FROM ne peut pas faire r�f�rence � d'autres\n" -"relations sur le m�me niveau de la requ�te" +"le second argument de la fonction de conversion doit �tre de type entier" -#: parser/parse_clause.c:587 -msgid "cannot use aggregate function in function expression in FROM" +#: commands/functioncmds.c:1566 +msgid "third argument of cast function must be type boolean" msgstr "" -"ne peut pas utiliser la fonction d'agr�gat dans l'expression de la fonction\n" -"du FROM" +"le troisi�me argument de la fonction de conversion doit �tre de type bool�en" -#: parser/parse_clause.c:594 -msgid "cannot use window function in function expression in FROM" +#: commands/functioncmds.c:1570 +msgid "" +"return data type of cast function must match or be binary-coercible to " +"target data type" msgstr "" -"ne peut pas utiliser la fonction window dans l'expression de la fonction\n" -"du FROM" +"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" -#: parser/parse_clause.c:870 -#, 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" +#: commands/functioncmds.c:1581 +msgid "cast function must not be volatile" +msgstr "la fonction de conversion ne doit pas �tre volatile" -#: parser/parse_clause.c:885 -#, 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" -"gauche" +#: commands/functioncmds.c:1586 +msgid "cast function must not be an aggregate function" +msgstr "la fonction de conversion ne doit pas �tre une fonction d'agr�gat" -#: parser/parse_clause.c:894 -#, 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" +#: commands/functioncmds.c:1590 +msgid "cast function must not be a window function" +msgstr "la fonction de conversion ne doit pas �tre une fonction window" -#: parser/parse_clause.c:908 -#, c-format -msgid "common column name \"%s\" appears more than once in right table" +#: commands/functioncmds.c:1594 +msgid "cast function must not return a set" +msgstr "la fonction de conversion ne doit pas renvoyer un ensemble" + +#: commands/functioncmds.c:1620 +msgid "must be superuser to create a cast WITHOUT FUNCTION" msgstr "" -"le nom commun de la colonne � %s � appara�t plus d'une fois dans la table de\n" -" droite" +"doit �tre super-utilisateur pour cr�er une fonction de conversion SANS " +"FONCTION" -#: parser/parse_clause.c:917 -#, c-format -msgid "column \"%s\" specified in USING clause does not exist in right table" +#: commands/functioncmds.c:1635 +msgid "source and target data types are not physically compatible" msgstr "" -"la colonne � %s � sp�cifi�e dans la clause USING n'existe pas dans la table\n" -"de droite" +"les types de donn�es source et cible ne sont pas physiquement compatibles" -#: parser/parse_clause.c:974 -#, 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" +#: commands/functioncmds.c:1650 +msgid "composite data types are not binary-compatible" +msgstr "les types de donn�es composites ne sont pas compatibles binairement" -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1211 -#, c-format -msgid "argument of %s must not contain variables" -msgstr "l'argument de � %s � ne doit pas contenir de variables" +#: commands/functioncmds.c:1656 +msgid "enum data types are not binary-compatible" +msgstr "les types de donn�es enum ne sont pas compatibles binairement" -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1222 -#, c-format -msgid "argument of %s must not contain aggregate functions" -msgstr "l'argument de %s ne doit pas contenir de fonctions d'agr�gats" +#: commands/functioncmds.c:1662 +msgid "array data types are not binary-compatible" +msgstr "les types de donn�es tableau ne sont pas compatibles binairement" -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1233 +#: commands/functioncmds.c:1679 +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:1689 +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:1722 #, c-format -msgid "argument of %s must not contain window functions" -msgstr "l'argument de %s ne doit pas contenir des fonctions window" +msgid "cast from type %s to type %s already exists" +msgstr "la conversion du type %s vers le type %s existe d�j�" -#. translator: first %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1350 +#: commands/functioncmds.c:1802 #, c-format -msgid "%s \"%s\" is ambiguous" -msgstr "%s � %s � est ambigu" +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" -#. translator: %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1374 +#: commands/functioncmds.c:1840 #, c-format -msgid "non-integer constant in %s" -msgstr "constante non enti�re dans %s" +msgid "cast from type %s to type %s does not exist" +msgstr "la conversion du type %s vers le type %s n'existe pas" -#. translator: %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1392 +#: commands/functioncmds.c:1928 #, c-format -msgid "%s position %d is not in select list" -msgstr "%s, � la position %d, n'est pas dans la liste SELECT" +msgid "function \"%s\" already exists in schema \"%s\"" +msgstr "la fonction � %s � existe d�j� dans le sch�ma � %s �" -#: parser/parse_clause.c:1608 +#: commands/functioncmds.c:2002 +msgid "no inline code specified" +msgstr "aucun code en ligne sp�cifi�" + +#: commands/functioncmds.c:2050 #, c-format -msgid "window \"%s\" is already defined" -msgstr "le window � %s � est d�j� d�finie" +msgid "language \"%s\" does not support inline code execution" +msgstr "le langage � %s � ne supporte pas l'ex�cution de code en ligne" + +#: 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 n'est pas support� vers stdout ou � partir de stdin" -#: parser/parse_clause.c:1662 +#: commands/copy.c:473 #, c-format -msgid "cannot override PARTITION BY clause of window \"%s\"" -msgstr "n'a pas pu surcharger la clause PARTITION BY de window � %s �" +msgid "could not write to COPY file: %m" +msgstr "n'a pas pu �crire dans le fichier COPY : %m" + +#: commands/copy.c:485 +msgid "connection lost during COPY to stdout" +msgstr "connexion perdue lors de l'op�ration COPY vers stdout" -#: parser/parse_clause.c:1674 +#: commands/copy.c:526 #, c-format -msgid "cannot override ORDER BY clause of window \"%s\"" -msgstr "n'a pas pu surcharger la clause ORDER BY de window � %s �" +msgid "could not read from COPY file: %m" +msgstr "n'a pas pu lire le fichier COPY : %m" -#: parser/parse_clause.c:1696 +#: commands/copy.c:577 #, c-format -msgid "cannot override frame clause of window \"%s\"" -msgstr "ne peut pas surcharger la frame clause du window � %s �" +msgid "COPY from stdin failed: %s" +msgstr "�chec de la commande COPY � partir de stdin : %s" -#: parser/parse_clause.c:1762 -msgid "in an aggregate with DISTINCT, ORDER BY expressions must appear in argument list" +#: commands/copy.c:593 +#, c-format +msgid "unexpected message type 0x%02X during COPY from stdin" msgstr "" -"dans un agr�gat avec DISTINCT, les expressions ORDER BY doivent appara�tre\n" -"dans la liste d'argument" +"type 0x%02X du message, inattendu, lors d'une op�ration COPY � partir de " +"stdin" -#: parser/parse_clause.c:1763 -msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list" +#: commands/copy.c:745 +msgid "must be superuser to COPY to or from a file" msgstr "" -"pour SELECT DISTINCT, ORDER BY, les expressions doivent appara�tre dans la\n" -"liste SELECT" +"doit �tre super-utilisateur pour utiliser COPY � partir ou vers un fichier" -#: parser/parse_clause.c:1849 -#: parser/parse_clause.c:1881 -msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions" +#: commands/copy.c:746 +msgid "" +"Anyone can COPY to stdout or from stdin. psql's \\copy command also works " +"for anyone." msgstr "" -"les expressions SELECT DISTINCT ON doivent correspondre aux expressions\n" -"ORDER BY initiales" +"Tout le monde peut utiliser COPY vers stdout ou � partir de stdin.\n" +"La commande \\copy de psql fonctionne aussi pour tout le monde." -#: parser/parse_clause.c:2000 +#: commands/copy.c:874 #, 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:2002 -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." +msgid "COPY format \"%s\" not recognized" +msgstr "format COPY � %s � non reconnu" -#: parser/parse_coerce.c:841 -#: parser/parse_coerce.c:870 -#: parser/parse_coerce.c:888 -#: parser/parse_coerce.c:903 -#: parser/parse_expr.c:1640 -#: parser/parse_expr.c:2079 +#: commands/copy.c:937 commands/copy.c:951 #, c-format -msgid "cannot cast type %s to %s" -msgstr "ne peut pas convertir le type %s en %s" - -#: parser/parse_coerce.c:873 -msgid "Input has too few columns." -msgstr "L'entr�e n'a pas assez de colonnes." +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" -#: parser/parse_coerce.c:891 +#: commands/copy.c:964 #, c-format -msgid "Cannot cast type %s to %s in column %d." -msgstr "ne peut pas convertir le type %s en %s dans la colonne %d" - -#: parser/parse_coerce.c:906 -msgid "Input has too many columns." -msgstr "L'entr�e a trop de colonnes." +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" -#. translator: first %s is name of a SQL construct, eg WHERE -#: parser/parse_coerce.c:949 +#: commands/copy.c:970 #, c-format -msgid "argument of %s must be type boolean, not type %s" -msgstr "l'argument de %s doit �tre de type bool�en, et non du type %s" +msgid "option \"%s\" not recognized" +msgstr "option � %s � non reconnu" -#. translator: %s is name of a SQL construct, eg WHERE -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_coerce.c:959 -#: parser/parse_coerce.c:1008 -#, c-format -msgid "argument of %s must not return a set" -msgstr "l'argument de %s ne doit pas renvoyer un ensemble" +#: commands/copy.c:981 +msgid "cannot specify DELIMITER in BINARY mode" +msgstr "" +"ne peut pas sp�cifier le d�limiteur (DELIMITER) en mode binaire (BINARY)" -#. translator: first %s is name of a SQL construct, eg LIMIT -#: parser/parse_coerce.c:996 -#, c-format -msgid "argument of %s must be type %s, not type %s" -msgstr "l'argument de %s doit �tre de type %s, et non du type %s" +#: commands/copy.c:986 +msgid "cannot specify NULL in BINARY mode" +msgstr "ne peut pas sp�cifier NULL en mode binaire (BINARY)" -#. translator: first %s is name of a SQL construct, eg CASE -#: parser/parse_coerce.c:1129 -#, c-format -msgid "%s types %s and %s cannot be matched" -msgstr "les %s types %s et %s ne peuvent pas correspondre" +#: commands/copy.c:1008 +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" -#. translator: first %s is name of a SQL construct, eg CASE -#: parser/parse_coerce.c:1196 +#: commands/copy.c:1015 +msgid "COPY delimiter cannot be newline or carriage return" +msgstr "" +"le d�limiteur de COPY ne peut pas �tre un retour � la ligne ou un retour " +"chariot" + +#: commands/copy.c:1021 +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:1038 #, c-format -msgid "%s could not convert type %s to %s" -msgstr "%s n'a pas pu convertir le type %s en %s" +msgid "COPY delimiter cannot be \"%s\"" +msgstr "le d�limiteur de COPY ne peut pas �tre � %s �" -#: parser/parse_coerce.c:1437 -msgid "arguments declared \"anyelement\" are not all alike" -msgstr "les arguments d�clar�s � anyelement � ne sont pas tous identiques" +#: commands/copy.c:1044 +msgid "COPY HEADER available only in CSV mode" +msgstr "COPY HEADER disponible uniquement en mode CSV" -#: parser/parse_coerce.c:1456 -msgid "arguments declared \"anyarray\" are not all alike" -msgstr "les arguments d�clar�s � anyarray � ne sont pas tous identiques" +#: commands/copy.c:1050 +msgid "COPY quote available only in CSV mode" +msgstr "le guillemet COPY n'est disponible que dans le mode CSV" -#: parser/parse_coerce.c:1485 -#: parser/parse_coerce.c:1629 -#: parser/parse_coerce.c:1660 -#, 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" +#: commands/copy.c:1055 +msgid "COPY quote must be a single one-byte character" +msgstr "le guillemet COPY doit �tre sur un seul caract�re sur un octet" -#: parser/parse_coerce.c:1501 -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 �" +#: commands/copy.c:1060 +msgid "COPY delimiter and quote must be different" +msgstr "le d�limiteur de COPY ne doit pas �tre un guillemet" -#: parser/parse_coerce.c:1519 -msgid "could not determine polymorphic type because input has type \"unknown\"" +#: commands/copy.c:1066 +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:1071 +msgid "COPY escape must be a single one-byte character" msgstr "" -"n'a pas pu d�terminer le type polymorphique car l'entr�e dispose du type\n" -"� unknown �" +"le caract�re d'�chappement COPY doit �tre sur un seul caract�re sur un octet" -#: parser/parse_coerce.c:1529 -#, c-format -msgid "type matched to anynonarray is an array type: %s" -msgstr "le type d�clar� anynonarray est un type tableau : %s" +#: commands/copy.c:1077 +msgid "COPY force quote available only in CSV mode" +msgstr "le guillemet forc� COPY n'est disponible que dans le mode CSV" -#: parser/parse_coerce.c:1539 -#, c-format -msgid "type matched to anyenum is not an enum type: %s" -msgstr "le type d�clar� anyenum n'est pas un type enum : %s" +#: commands/copy.c:1081 +msgid "COPY force quote only available using COPY TO" +msgstr "le guillemet forc� COPY n'est disponible qu'en utilisant COPY TO" -#: parser/parse_cte.c:40 -#, c-format -msgid "recursive reference to query \"%s\" must not appear within its non-recursive term" -msgstr "" -"la r�f�rence r�cursive � la requ�te � %s � ne doit pas appara�tre �\n" -"l'int�rieur de son terme non r�cursif" +#: commands/copy.c:1087 +msgid "COPY force not null available only in CSV mode" +msgstr "� COPY force not null � n'est disponible que dans la version CSV" -#: parser/parse_cte.c:42 -#, c-format -msgid "recursive reference to query \"%s\" must not appear within a subquery" -msgstr "" -"la r�f�rence r�cursive � la requ�te � %s � ne doit pas appara�tre �\n" -"l'int�rieur d'une sous-requ�te" +#: commands/copy.c:1091 +msgid "COPY force not null only available using COPY FROM" +msgstr "� COPY force not null � n'est disponible qu'en utilisant COPY FROM" -#: parser/parse_cte.c:44 -#, c-format -msgid "recursive reference to query \"%s\" must not appear within an outer join" +#: commands/copy.c:1097 +msgid "COPY delimiter must not appear in the NULL specification" msgstr "" -"la r�f�rence r�cursive � la requ�te � %s � ne doit pas appara�tre �\n" -"l'int�rieur d'une jointure externe" +"le d�limiteur COPY ne doit pas appara�tre dans la sp�cification de NULL" -#: parser/parse_cte.c:46 -#, c-format -msgid "recursive reference to query \"%s\" must not appear within INTERSECT" +#: commands/copy.c:1104 +msgid "CSV quote character must not appear in the NULL specification" msgstr "" -"la r�f�rence r�cursive � la requ�te � %s � ne doit pas appara�tre �\n" -"l'int�rieur d'INTERSECT" +"le caract�re guillemet de CSV ne doit pas appara�tre dans la sp�cification " +"de NULL" -#: parser/parse_cte.c:48 +#: commands/copy.c:1166 #, c-format -msgid "recursive reference to query \"%s\" must not appear within EXCEPT" -msgstr "" -"la r�f�rence r�cursive � la requ�te � %s � ne doit pas appara�tre �\n" -"l'int�rieur d'EXCEPT" +msgid "table \"%s\" does not have OIDs" +msgstr "la table � %s � n'a pas d'OID" + +#: commands/copy.c:1183 +msgid "COPY (SELECT) WITH OIDS is not supported" +msgstr "COPY (SELECT) WITH OIDS n'est pas support�" + +#: commands/copy.c:1210 +msgid "COPY (SELECT INTO) is not supported" +msgstr "COPY (SELECT INTO) n'est pas support�" -#: parser/parse_cte.c:130 +#: commands/copy.c:1270 #, c-format -msgid "WITH query name \"%s\" specified more than once" -msgstr "le nom de la requ�te WITH � %s � est sp�cifi� plus d'une fois" +msgid "FORCE QUOTE column \"%s\" not referenced by COPY" +msgstr "la colonne � %s � FORCE QUOTE n'est pas r�f�renc�e par COPY" -#: parser/parse_cte.c:247 -msgid "subquery in WITH cannot have SELECT INTO" -msgstr "la sous-requ�te du WITH ne peut pas avoir de SELECT INTO" +#: commands/copy.c:1292 +#, 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" -#: parser/parse_cte.c:288 +#: commands/copy.c:1356 #, c-format -msgid "recursive query \"%s\" column %d has type %s in non-recursive term but type %s overall" -msgstr "" -"dans la requ�te r�cursive � %s �, la colonne %d a le type %s dans le terme non\n" -"r�cursif mais le type global %s" +msgid "cannot copy from view \"%s\"" +msgstr "ne peut pas copier � partir de la vue � %s �" -#: parser/parse_cte.c:294 -msgid "Cast the output of the non-recursive term to the correct type." -msgstr "Convertit la sortie du terme non r�cursif dans le bon type." +#: commands/copy.c:1358 commands/copy.c:1364 +msgid "Try the COPY (SELECT ...) TO variant." +msgstr "Tentez la variante COPY (SELECT ...) TO." -#: parser/parse_cte.c:376 +#: commands/copy.c:1362 #, 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" +msgid "cannot copy from foreign table \"%s\"" +msgstr "ne peut pas copier � partir de la table distante � %s �" -#: parser/parse_cte.c:556 -msgid "mutual recursion between WITH items is not implemented" -msgstr "la r�cursion mutuelle entre des �l�ments WITH n'est pas implant�e" +#: commands/copy.c:1368 +#, c-format +msgid "cannot copy from sequence \"%s\"" +msgstr "ne peut pas copier � partir de la s�quence � %s �" -#: parser/parse_cte.c:608 +#: commands/copy.c:1373 #, c-format -msgid "recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] recursive-term" +msgid "cannot copy from non-table relation \"%s\"" msgstr "" -"la requ�te r�cursive � %s � n'a pas la forme terme-non-r�cursive UNION [ALL]\n" -"terme-r�cursive" +"ne peut pas copier � partir de la relation � %s �, qui n'est pas une table" -#: parser/parse_cte.c:640 -msgid "ORDER BY in a recursive query is not implemented" -msgstr "ORDER BY dans une requ�te r�cursive n'est pas implant�" +#: commands/copy.c:1397 +msgid "relative path not allowed for COPY to file" +msgstr "un chemin relatif n'est pas autoris� � utiliser COPY vers un fichier" -#: parser/parse_cte.c:646 -msgid "OFFSET in a recursive query is not implemented" -msgstr "OFFSET dans une requ�te r�cursive n'est pas impl�ment�" +#: commands/copy.c:1407 +#, c-format +msgid "could not open file \"%s\" for writing: %m" +msgstr "n'a pas pu ouvrir le fichier � %s � en �criture : %m" -#: parser/parse_cte.c:652 -msgid "LIMIT in a recursive query is not implemented" -msgstr "LIMIT dans une requ�te r�cursive n'est pas impl�ment�" +#: commands/copy.c:1414 commands/copy.c:2200 +#, c-format +msgid "\"%s\" is a directory" +msgstr "� %s � est un r�pertoire" -#: parser/parse_cte.c:658 -msgid "FOR UPDATE/SHARE in a recursive query is not implemented" -msgstr "FOR UPDATE/SHARE dans une requ�te r�cursive n'est pas impl�ment�" +#: commands/copy.c:1738 +#, c-format +msgid "COPY %s, line %d, column %s" +msgstr "COPY %s, ligne %d, colonne %s" -#: parser/parse_cte.c:715 +#: commands/copy.c:1742 commands/copy.c:1787 #, 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" +msgid "COPY %s, line %d" +msgstr "COPY %s, ligne %d" -#: parser/parse_expr.c:358 -#: parser/parse_expr.c:751 +#: commands/copy.c:1753 #, c-format -msgid "column %s.%s does not exist" -msgstr "la colonne %s.%s n'existe pas" +msgid "COPY %s, line %d, column %s: \"%s\"" +msgstr "COPY %s, ligne %d, colonne %s : � %s �" -#: parser/parse_expr.c:370 +#: commands/copy.c:1761 #, c-format -msgid "column \"%s\" not found in data type %s" -msgstr "colonne � %s � introuvable pour le type de donn�es %s" +msgid "COPY %s, line %d, column %s: null input" +msgstr "COPY %s, ligne %d, colonne %s : NULL en entr�e" -#: parser/parse_expr.c:376 +#: commands/copy.c:1773 #, 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" +msgid "COPY %s, line %d: \"%s\"" +msgstr "COPY %s, ligne %d : � %s �" -#: parser/parse_expr.c:382 +#: commands/copy.c:1857 #, 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�" +msgid "cannot copy to view \"%s\"" +msgstr "ne peut pas copier vers la vue � %s �" -#: parser/parse_expr.c:412 -#: parser/parse_target.c:600 -msgid "row expansion via \"*\" is not supported here" -msgstr "l'expansion de ligne via � * � n'est pas support� ici" +#: commands/copy.c:1862 +#, c-format +msgid "cannot copy to foreign table \"%s\"" +msgstr "ne peut pas copier vers la table distante � %s �" -#: parser/parse_expr.c:735 -#: parser/parse_relation.c:478 -#: parser/parse_relation.c:551 -#: parser/parse_target.c:977 +#: commands/copy.c:1867 #, c-format -msgid "column reference \"%s\" is ambiguous" -msgstr "la r�f�rence � la colonne � %s � est ambigu" +msgid "cannot copy to sequence \"%s\"" +msgstr "ne peut pas copier vers la s�quence � %s �" -#: parser/parse_expr.c:803 -#: parser/parse_param.c:108 -#: parser/parse_param.c:139 -#: parser/parse_param.c:195 -#: parser/parse_param.c:287 +#: commands/copy.c:1872 #, c-format -msgid "there is no parameter $%d" -msgstr "Il n'existe pas de param�tres $%d" +msgid "cannot copy to non-table relation \"%s\"" +msgstr "ne peut pas copier vers une relation � %s � qui n'est pas une table" -#: parser/parse_expr.c:1008 -msgid "NULLIF requires = operator to yield boolean" -msgstr "NULLIF requiert l'op�rateur = pour comparer des boole�ns" +#: commands/copy.c:2219 +msgid "COPY file signature not recognized" +msgstr "la signature du fichier COPY n'est pas reconnue" -#: parser/parse_expr.c:1181 -msgid "arguments of row IN must all be row expressions" -msgstr "les arguments de la ligne IN doivent tous �tre des expressions de ligne" +#: commands/copy.c:2224 +msgid "invalid COPY file header (missing flags)" +msgstr "en-t�te du fichier COPY invalide (options manquantes)" -#: parser/parse_expr.c:1385 -msgid "subquery cannot have SELECT INTO" -msgstr "la sous-requ�te ne peut pas avoir de SELECT INTO" +#: commands/copy.c:2230 +msgid "unrecognized critical flags in COPY file header" +msgstr "options critiques non reconnues dans l'en-t�te du fichier COPY" -#: parser/parse_expr.c:1413 -msgid "subquery must return a column" -msgstr "la sous-requ�te doit renvoyer une colonne" +#: commands/copy.c:2236 +msgid "invalid COPY file header (missing length)" +msgstr "en-t�te du fichier COPY invalide (longueur manquante)" -#: parser/parse_expr.c:1420 -msgid "subquery must return only one column" -msgstr "la sous-requ�te doit renvoyer une seule colonne" +#: commands/copy.c:2243 +msgid "invalid COPY file header (wrong length)" +msgstr "en-t�te du fichier COPY invalide (mauvaise longueur)" -#: parser/parse_expr.c:1479 -msgid "subquery has too many columns" -msgstr "la sous-requ�te a trop de colonnes" +#: commands/copy.c:2376 commands/copy.c:3058 commands/copy.c:3288 +msgid "extra data after last expected column" +msgstr "donn�es suppl�mentaires apr�s la derni�re colonne attendue" -#: parser/parse_expr.c:1484 -msgid "subquery has too few columns" -msgstr "la sous-requ�te n'a pas assez de colonnes" +#: commands/copy.c:2386 +msgid "missing data for OID column" +msgstr "donn�es manquantes pour la colonne OID" -#: parser/parse_expr.c:1580 -msgid "cannot determine type of empty array" -msgstr "ne peut pas d�terminer le type d'un tableau vide" +#: commands/copy.c:2392 +msgid "null OID in COPY data" +msgstr "OID NULL dans les donn�es du COPY" -#: parser/parse_expr.c:1581 -msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]." -msgstr "Convertit explicitement vers le type d�sir�, par exemple ARRAY[]::integer[]." +#: commands/copy.c:2402 commands/copy.c:2501 +msgid "invalid OID in COPY data" +msgstr "OID invalide dans les donn�es du COPY" -#: parser/parse_expr.c:1595 +#: commands/copy.c:2417 #, 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:1793 -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" +msgid "missing data for column \"%s\"" +msgstr "donn�es manquantes pour la colonne � %s �" -#: parser/parse_expr.c:1794 -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" +#: commands/copy.c:2476 +msgid "received copy data after EOF marker" +msgstr "a re�u des donn�es de COPY apr�s le marqueur de fin" -#: parser/parse_expr.c:1809 +#: commands/copy.c:2483 #, 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" +msgid "row field count is %d, expected %d" +msgstr "le nombre de champs de la ligne est %d, %d attendus" -#: parser/parse_expr.c:1916 -#, c-format -msgid "cannot cast XMLSERIALIZE result to %s" -msgstr "ne peut pas convertir le r�sultat XMLSERIALIZE en %s" +#: commands/copy.c:2822 commands/copy.c:2839 +msgid "literal carriage return found in data" +msgstr "retour chariot trouv� dans les donn�es" -#: parser/parse_expr.c:2120 -#: parser/parse_expr.c:2318 -msgid "unequal number of entries in row expressions" -msgstr "nombre diff�rent d'entr�es dans les expressions de ligne" +#: commands/copy.c:2823 commands/copy.c:2840 +msgid "unquoted carriage return found in data" +msgstr "retour chariot sans guillemet trouv� dans les donn�es" -#: parser/parse_expr.c:2130 -msgid "cannot compare rows of zero length" -msgstr "n'a pas pu comparer des lignes de taille z�ro" +#: commands/copy.c:2825 commands/copy.c:2842 +msgid "Use \"\\r\" to represent carriage return." +msgstr "Utilisez � \\r � pour repr�senter un retour chariot." -#: parser/parse_expr.c:2155 -#, c-format -msgid "row comparison operator must yield type boolean, not type %s" +#: commands/copy.c:2826 commands/copy.c:2843 +msgid "Use quoted CSV field to represent carriage return." msgstr "" -"l'op�rateur de comparaison de ligne doit renvoyer le type bool�en, et non le\n" -"type %s" +"Utiliser le champ CSV entre guillemets pour repr�senter un retour chariot." -#: parser/parse_expr.c:2162 -msgid "row comparison operator must not return a set" -msgstr "l'op�rateur de comparaison de ligne ne doit pas renvoyer un ensemble" +#: commands/copy.c:2855 +msgid "literal newline found in data" +msgstr "retour � la ligne trouv� dans les donn�es" -#: parser/parse_expr.c:2221 -#: parser/parse_expr.c:2265 -#, 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" +#: commands/copy.c:2856 +msgid "unquoted newline found in data" +msgstr "retour � la ligne trouv� dans les donn�es" + +#: commands/copy.c:2858 +msgid "Use \"\\n\" to represent newline." +msgstr "Utilisez � \\n � pour repr�senter un retour � la ligne." -#: parser/parse_expr.c:2223 -msgid "Row comparison operators must be associated with btree operator families." +#: commands/copy.c:2859 +msgid "Use quoted CSV field to represent newline." msgstr "" -"Les op�rateurs de comparaison de lignes doivent �tre associ�s � des familles\n" -"d'op�rateurs btree." +"Utiliser un champ CSV entre guillemets pour repr�senter un retour � la ligne." -#: parser/parse_expr.c:2267 -msgid "There are multiple equally-plausible candidates." -msgstr "Il existe de nombreus candidats �galement plausibles." +#: commands/copy.c:2905 commands/copy.c:2941 +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" -#: parser/parse_expr.c:2358 -msgid "IS DISTINCT FROM requires = operator to yield boolean" -msgstr "IS DISTINCT FROM requiert l'op�rateur = pour comparer des bool�ens" +#: commands/copy.c:2914 commands/copy.c:2930 +msgid "end-of-copy marker corrupt" +msgstr "marqueur fin-de-copie corrompu" -#: parser/parse_func.c:153 -#, c-format -msgid "argument name \"%s\" used more than once" -msgstr "nom � %s � de l'argument sp�cifi� plus d'une fois" +#: commands/copy.c:3372 +msgid "unterminated CSV quoted field" +msgstr "champ CSV entre guillemets non termin�" -#: parser/parse_func.c:164 -msgid "positional argument cannot follow named argument" -msgstr "l'argument positionn� ne doit pas suivre l'argument nomm�" +#: commands/copy.c:3449 commands/copy.c:3468 +msgid "unexpected EOF in COPY data" +msgstr "fin de fichier (EOF) inattendu dans les donn�es du COPY" -#: parser/parse_func.c:242 -#, 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" +#: commands/copy.c:3458 +msgid "invalid field size" +msgstr "taille du champ invalide" -#: parser/parse_func.c:249 -#, 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" +#: commands/copy.c:3481 +msgid "incorrect binary data format" +msgstr "format de donn�es binaires incorrect" -#: parser/parse_func.c:255 -#, 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" +#: commands/cluster.c:134 commands/cluster.c:372 +msgid "cannot cluster temporary tables of other sessions" +msgstr "" +"ne peut pas ex�cuter CLUSTER sur les tables temporaires des autres sessions" -#: parser/parse_func.c:261 +#: commands/cluster.c:164 #, 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 "there is no previously clustered index for table \"%s\"" +msgstr "Il n'existe pas d'index CLUSTER pour la table � %s �" -#: parser/parse_func.c:283 -#, c-format -msgid "function %s is not unique" -msgstr "la fonction %s n'est pas unique" +#: commands/cluster.c:361 +msgid "cannot cluster a shared catalog" +msgstr "ne peut pas ex�cuter CLUSTER sur un catalogue partag�" -#: parser/parse_func.c:286 -msgid "Could not choose a best candidate function. You might need to add explicit type casts." +#: commands/cluster.c:376 +msgid "cannot vacuum temporary tables of other sessions" msgstr "" -"N'a pas pu choisir un meilleur candidat dans les fonctions. Vous pourriez\n" -"avoir besoin d'ajouter des conversions explicites de type." +"ne peut pas ex�cuter VACUUM sur les tables temporaires des autres sessions" -#: parser/parse_func.c:297 -msgid "No aggregate function matches the given name and argument types. Perhaps you misplaced ORDER BY; ORDER BY must appear after all regular arguments of the aggregate." -msgstr "" -"Aucune fonction d'agr�gat ne correspond au nom donn� et aux types d'arguments.\n" -"Peut-�tre avez-vous mal plac� la clause ORDER BY.\n" -"Cette derni�re doit appara�tre apr�s tous les arguments standards de l'agr�gat." +#: commands/cluster.c:426 +#, c-format +msgid "\"%s\" is not an index for table \"%s\"" +msgstr "� %s � n'est pas un index de la table � %s �" -#: parser/parse_func.c:308 -msgid "No function matches the given name and argument types. You might need to add explicit type casts." +#: commands/cluster.c:434 +#, c-format +msgid "" +"cannot cluster on index \"%s\" because access method does not support " +"clustering" msgstr "" -"Aucune fonction ne correspond au nom donn� et aux types d'arguments.\n" -"Vous devez ajouter des conversions explicites de type." +"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" -#: parser/parse_func.c:415 -#: parser/parse_func.c:480 +#: commands/cluster.c:446 #, 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" - -#: parser/parse_func.c:422 -msgid "aggregates cannot return sets" -msgstr "les agr�gats ne peuvent pas renvoyer des ensembles" - -#: parser/parse_func.c:434 -msgid "aggregates cannot use named arguments" -msgstr "les agr�gats ne peuvent pas utiliser des aguments nomm�s" - -#: parser/parse_func.c:453 -msgid "window function call requires an OVER clause" -msgstr "l'appel � la fonction window n�cessite une clause OVER" - -#: parser/parse_func.c:470 -msgid "DISTINCT is not implemented for window functions" -msgstr "DISTINCT n'est pas impl�ment� pour des fonctions window" +msgid "cannot cluster on partial index \"%s\"" +msgstr "ne peut pas ex�cuter CLUSTER sur l'index partiel � %s �" -#: parser/parse_func.c:490 -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" +#: commands/cluster.c:460 +#, c-format +msgid "cannot cluster on invalid index \"%s\"" +msgstr "ne peut pas ex�cuter la commande CLUSTER sur l'index invalide � %s �" -#: parser/parse_func.c:496 -msgid "window functions cannot return sets" -msgstr "les fonctions window ne peuvent pas renvoyer des ensembles" +#: commands/cluster.c:894 +#, c-format +msgid "clustering \"%s.%s\" using index scan on \"%s\"" +msgstr "cluster sur � %s.%s � en utilisant un parcours d'index sur � %s �" -#: parser/parse_func.c:507 -msgid "window functions cannot use named arguments" -msgstr "les fonctions window ne peuvent pas renvoyer des arguments nomm�s" +#: commands/cluster.c:900 +#, 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" -#: parser/parse_func.c:1572 +#: commands/cluster.c:905 commands/vacuumlazy.c:368 #, c-format -msgid "aggregate %s(*) does not exist" -msgstr "l'agr�gat %s(*) n'existe pas" +msgid "vacuuming \"%s.%s\"" +msgstr "ex�cution du VACUUM sur � %s.%s �" -#: parser/parse_func.c:1577 +#: commands/cluster.c:1065 #, c-format -msgid "aggregate %s does not exist" -msgstr "l'agr�gat %s n'existe pas" +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" -#: parser/parse_func.c:1596 +#: commands/cluster.c:1069 #, c-format -msgid "function %s is not an aggregate" -msgstr "la fonction %s n'est pas un agr�gat" +msgid "" +"%.0f dead row versions cannot be removed yet.\n" +"%s." +msgstr "" +"%.0f versions de lignes ne peuvent pas encore �tre supprim�es.\n" +"%s." -#: parser/parse_node.c:82 +#: commands/vacuumlazy.c:283 #, c-format -msgid "target lists can have at most %d entries" -msgstr "les listes cibles peuvent avoir au plus %d colonnes" +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 "" +"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 syst�me : %s" -#: parser/parse_node.c:222 +#: commands/vacuumlazy.c:537 #, c-format -msgid "cannot subscript type %s because it is not an array" -msgstr "ne peut pas indicer le type %s car il ne s'agit pas d'un tableau" +msgid "relation \"%s\" page %u is uninitialized --- fixing" +msgstr "" +"relation � %s � : la page %u n'est pas initialis�e --- correction en cours" -#: parser/parse_node.c:316 -#: parser/parse_node.c:342 -msgid "array subscript must have type integer" -msgstr "l'indice d'un tableau doit �tre de type entier" +#: commands/vacuumlazy.c:897 +#, c-format +msgid "\"%s\": removed %.0f row versions in %u pages" +msgstr "� %s � : %.0f versions de ligne supprim�es parmi %u pages" -#: parser/parse_node.c:366 +#: commands/vacuumlazy.c:902 #, 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" +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" -#: parser/parse_oper.c:124 -#: parser/parse_oper.c:751 -#: utils/adt/regproc.c:464 -#: utils/adt/regproc.c:484 -#: utils/adt/regproc.c:643 +#: commands/vacuumlazy.c:906 #, c-format -msgid "operator does not exist: %s" -msgstr "l'op�rateur n'existe pas : %s" +msgid "" +"%.0f dead row versions cannot be removed yet.\n" +"There were %.0f unused item pointers.\n" +"%u pages are entirely empty.\n" +"%s." +msgstr "" +"%.0f versions de lignes mortes ne peuvent pas encore �tre supprim�es.\n" +"Il y avait %.0f pointeurs d'�l�ments inutilis�s.\n" +"%u pages sont enti�rement vides.\n" +"%s." -#: parser/parse_oper.c:256 -msgid "Use an explicit ordering operator or modify the query." -msgstr "Utilisez un op�rateur explicite de tri ou modifiez la requ�te." +#: commands/vacuumlazy.c:964 +#, c-format +msgid "\"%s\": removed %d row versions in %d pages" +msgstr "� %s �: %d versions de ligne supprim�e parmi %d pages" -#: parser/parse_oper.c:260 -#: utils/adt/arrayfuncs.c:3109 -#: utils/adt/arrayfuncs.c:3510 -#: utils/adt/rowtypes.c:1139 +#: commands/vacuumlazy.c:967 commands/vacuumlazy.c:1059 +#: commands/vacuumlazy.c:1226 #, 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" +msgid "%s." +msgstr "%s." -#: parser/parse_oper.c:509 +#: commands/vacuumlazy.c:1056 #, c-format -msgid "operator requires run-time type coercion: %s" -msgstr "l'op�rateur requiert la coercion du type � l'ex�cution : %s" +msgid "scanned index \"%s\" to remove %d row versions" +msgstr "a parcouru l'index � %s � pour supprimer %d versions de lignes" -#: parser/parse_oper.c:743 +#: commands/vacuumlazy.c:1097 #, c-format -msgid "operator is not unique: %s" -msgstr "l'op�rateur n'est pas unique : %s" +msgid "index \"%s\" now contains %.0f row versions in %u pages" +msgstr "" +"l'index � %s � contient maintenant %.0f versions de ligne dans %u pages" -#: parser/parse_oper.c:745 -msgid "Could not choose a best candidate operator. You might need to add explicit type casts." +#: commands/vacuumlazy.c:1101 +#, c-format +msgid "" +"%.0f index row versions were removed.\n" +"%u index pages have been deleted, %u are currently reusable.\n" +"%s." msgstr "" -"N'a pas pu choisir un meilleur candidat pour l'op�rateur. Vous devez ajouter une\n" -"conversion explicite de type." +"%.0f versions de ligne d'index ont �t� supprim�es.\n" +"%u pages d'index ont �t� supprim�es, %u sont actuellement r�utilisables.\n" +"%s." -#: parser/parse_oper.c:753 -msgid "No operator matches the given name and argument type(s). You might need to add explicit type casts." +#: commands/vacuumlazy.c:1158 +#, c-format +msgid "\"%s\": stopping truncate due to conflicting lock request" msgstr "" -"Aucun op�rateur ne correspond au nom donn� et aux types d'arguments.\n" -"Vous devez ajouter des conversions explicites de type." +"� %s � : arr�t du tronquage � cause d'un conflit dans la demande de verrou" -#: parser/parse_oper.c:812 -#: parser/parse_oper.c:928 +#: commands/vacuumlazy.c:1223 #, c-format -msgid "operator is only a shell: %s" -msgstr "l'op�rateur est seulement un shell : %s" +msgid "\"%s\": truncated %u to %u pages" +msgstr "� %s � : %u pages tronqu�s en %u" -#: parser/parse_oper.c:916 -msgid "op ANY/ALL (array) requires array on right side" -msgstr "op ANY/ALL (tableau) requiert un tableau sur le c�t� droit" +#: commands/vacuumlazy.c:1279 +#, 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" -#: parser/parse_oper.c:958 -msgid "op ANY/ALL (array) requires operator to yield boolean" -msgstr "op ANY/ALL (tableau) requiert un op�rateur pour comparer des bool�ens" +#: commands/dbcommands.c:202 +msgid "LOCATION is not supported anymore" +msgstr "LOCATION n'est plus support�" -#: parser/parse_oper.c:963 -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" +#: commands/dbcommands.c:203 +msgid "Consider using tablespaces instead." +msgstr "Consid�rer l'utilisation de tablespaces." -#: parser/parse_param.c:212 +#: commands/dbcommands.c:254 commands/dbcommands.c:1374 commands/user.c:267 +#: commands/user.c:606 #, c-format -msgid "inconsistent types deduced for parameter $%d" -msgstr "types incoh�rents d�duit pour le param�tre $%d" +msgid "invalid connection limit: %d" +msgstr "limite de connexion invalide : %d" -#: parser/parse_relation.c:147 -#, c-format -msgid "table reference \"%s\" is ambiguous" -msgstr "la r�f�rence � la table � %s � est ambigu" +#: commands/dbcommands.c:273 +msgid "permission denied to create database" +msgstr "droit refus� pour cr�er une base de donn�es" -#: parser/parse_relation.c:183 +#: commands/dbcommands.c:296 #, c-format -msgid "table reference %u is ambiguous" -msgstr "la r�f�rence � la table %u est ambigu" +msgid "template database \"%s\" does not exist" +msgstr "la base de donn�es mod�le � %s � n'existe pas" -#: parser/parse_relation.c:343 +#: commands/dbcommands.c:308 #, c-format -msgid "table name \"%s\" specified more than once" -msgstr "le nom de la table � %s � est sp�cifi� plus d'une fois" +msgid "permission denied to copy database \"%s\"" +msgstr "droit refus� pour copier la base de donn�es � %s �" -#: parser/parse_relation.c:754 -#: parser/parse_relation.c:1043 -#: parser/parse_relation.c:1403 +#: commands/dbcommands.c:324 #, 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 "invalid server encoding %d" +msgstr "encodage serveur %d invalide" -#: parser/parse_relation.c:784 +#: commands/dbcommands.c:330 commands/dbcommands.c:334 #, 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 "invalid locale name %s" +msgstr "nom de locale � %s � invalide" -#: parser/parse_relation.c:850 +#: commands/dbcommands.c:353 #, c-format -msgid "There is a WITH item named \"%s\", but it cannot be referenced from this part of the query." +msgid "" +"new encoding (%s) is incompatible with the encoding of the template database " +"(%s)" 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." +"le nouvel encodage (%s� est incompatible avec l'encodage de la base de\n" +"donn�es mod�le (%s)" -#: parser/parse_relation.c:852 -msgid "Use WITH RECURSIVE, or re-order the WITH items to remove forward references." +#: commands/dbcommands.c:356 +msgid "" +"Use the same encoding as in the template database, or use template0 as " +"template." msgstr "" -"Utilisez WITH RECURSIVE ou r�-ordonnez les �l�ments WITH pour supprimer\n" -"les r�f�rences en avant." +"Utilisez le m�me encodage que celui de la base de donn�es mod�le,\n" +"ou utilisez template0 comme mod�le." -#: parser/parse_relation.c:1122 -msgid "a column definition list is only allowed for functions returning \"record\"" +#: commands/dbcommands.c:361 +#, c-format +msgid "" +"new collation (%s) is incompatible with the collation of the template " +"database (%s)" msgstr "" -"une liste de d�finition de colonnes est uniquement autoris�e pour les fonctions\n" -"renvoyant un � record �" +"le nouveau tri (%s) est incompatible avec le tri de la base de\n" +"donn�es mod�le (%s)" -#: parser/parse_relation.c:1130 -msgid "a column definition list is required for functions returning \"record\"" +#: commands/dbcommands.c:363 +msgid "" +"Use the same collation as in the template database, or use template0 as " +"template." msgstr "" -"une liste de d�finition de colonnes est requise pour les fonctions renvoyant\n" -"un � record �" +"Utilisez le m�me tri que celui de la base de donn�es mod�le,\n" +"ou utilisez template0 comme mod�le." -#: parser/parse_relation.c:1177 +#: commands/dbcommands.c:368 #, 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�" +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)" -#: parser/parse_relation.c:1249 -#, c-format -msgid "VALUES lists \"%s\" have %d columns available but %d columns specified" +#: commands/dbcommands.c:370 +msgid "" +"Use the same LC_CTYPE as in the template database, or use template0 as " +"template." msgstr "" -"les listes � %s � de VALUES ont %d colonnes disponibles mais %d colonnes\n" -"sp�cifi�es" +"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:392 commands/dbcommands.c:1081 +msgid "pg_global cannot be used as default tablespace" +msgstr "pg_global ne peut pas �tre utilis� comme tablespace par d�faut" -#: parser/parse_relation.c:1305 +#: commands/dbcommands.c:418 #, c-format -msgid "joins can have at most %d columns" -msgstr "les jointures peuvent avoir au plus %d colonnes" +msgid "cannot assign new default tablespace \"%s\"" +msgstr "ne peut pas affecter un nouveau tablespace par d�faut � %s �" -#: parser/parse_relation.c:2038 +#: commands/dbcommands.c:420 #, c-format -msgid "column %d of relation \"%s\" does not exist" -msgstr "la colonne %d de la relation � %s � n'existe pas" +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." -#: parser/parse_relation.c:2397 +#: commands/dbcommands.c:440 commands/dbcommands.c:956 #, 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 �" +msgid "database \"%s\" already exists" +msgstr "la base de donn�es � %s � existe d�j�" -#: parser/parse_relation.c:2400 +#: commands/dbcommands.c:454 #, 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 �." +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" -#: parser/parse_relation.c:2402 +#: commands/dbcommands.c:722 commands/dbcommands.c:737 #, c-format -msgid "There is an entry for table \"%s\", but it cannot be referenced from this part of the query." -msgstr "" -"Il existe une entr�e pour la table � %s � mais elle ne peut pas �tre\n" -"r�f�renc�e de cette partie de la requ�te." +msgid "encoding %s does not match locale %s" +msgstr "l'encodage %s ne correspond pas � la locale %s" -#: parser/parse_relation.c:2408 +#: commands/dbcommands.c:725 #, c-format -msgid "missing FROM-clause entry for table \"%s\"" -msgstr "entr�e manquante de la clause FROM pour la table � %s �" +msgid "The chosen LC_CTYPE setting requires encoding %s." +msgstr "Le param�tre LC_CTYPE choisi n�cessite l'encodage %s." -#: parser/parse_target.c:373 -#: parser/parse_target.c:661 +#: commands/dbcommands.c:740 #, c-format -msgid "cannot assign to system column \"%s\"" -msgstr "ne peut pas affecter � une colonne syst�me � %s �" +msgid "The chosen LC_COLLATE setting requires encoding %s." +msgstr "Le param�tre LC_COLLATE choisi n�cessite l'encodage %s." -#: parser/parse_target.c:398 -msgid "cannot set an array element to DEFAULT" -msgstr "ne peut pas initialiser un �l�ment d'un tableau avec DEFAULT" +#: commands/dbcommands.c:798 +#, c-format +msgid "database \"%s\" does not exist, skipping" +msgstr "la base de donn�es � %s � n'existe pas, poursuite du traitement" -#: parser/parse_target.c:403 -msgid "cannot set a subfield to DEFAULT" -msgstr "ne peut pas initialiser un sous-champ avec DEFAULT" +#: commands/dbcommands.c:819 +msgid "cannot drop a template database" +msgstr "ne peut pas supprimer une base de donn�es mod�le" -#: parser/parse_target.c:470 -#, c-format -msgid "column \"%s\" is of type %s but expression is of type %s" -msgstr "la colonne � %s � est de type %s mais l'expression est de type %s" +#: commands/dbcommands.c:825 +msgid "cannot drop the currently open database" +msgstr "ne peut pas supprimer la base de donn�es actuellement ouverte" -#: parser/parse_target.c:645 +#: commands/dbcommands.c:836 commands/dbcommands.c:978 +#: commands/dbcommands.c:1103 #, c-format -msgid "cannot assign to field \"%s\" of column \"%s\" because its type %s is not a composite type" +msgid "database \"%s\" is being accessed by other users" 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�" +"la base de donn�es � %s � est en cours d'utilisation par d'autres " +"utilisateurs" -#: parser/parse_target.c:654 -#, c-format -msgid "cannot assign to field \"%s\" of column \"%s\" because there is no such column in data type %s" +#: commands/dbcommands.c:947 +msgid "permission denied to rename database" +msgstr "droit refus� pour le renommage de la base de donn�es" + +#: commands/dbcommands.c:967 +msgid "current database cannot be renamed" +msgstr "la base de donn�es actuelle ne peut pas �tre renomm�e" + +#: commands/dbcommands.c:1059 +msgid "cannot change the tablespace of the currently open database" msgstr "" -"ne peut pas l'affecter au champ � %s � de la colonne � %s � parce qu'il n'existe\n" -"pas une telle colonne dans le type de donn�es %s" +"ne peut pas modifier le tablespace de la base de donn�es actuellement ouverte" -#: parser/parse_target.c:729 +#: commands/dbcommands.c:1143 #, c-format -msgid "array assignment to \"%s\" requires type %s but expression is of type %s" +msgid "some relations of database \"%s\" are already in tablespace \"%s\"" msgstr "" -"l'affectation d'un tableau avec � %s � requiert le type %s mais l'expression est\n" -"de type %s" +"certaines relations de la base de donn�es � %s � sont d�j� dans le\n" +"tablespace � %s �" -#: parser/parse_target.c:739 +#: commands/dbcommands.c:1145 +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:1273 commands/dbcommands.c:1752 +#: commands/dbcommands.c:1966 commands/dbcommands.c:2014 +#: commands/tablespace.c:584 #, c-format -msgid "subfield \"%s\" is of type %s but expression is of type %s" -msgstr "le sous-champ � %s � est de type %s mais l'expression est de type %s" +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 �" -#: parser/parse_target.c:1039 -msgid "SELECT * with no tables specified is not valid" -msgstr "Un SELECT * sans table sp�cifi�e n'est pas valide" +#: commands/dbcommands.c:1517 +msgid "permission denied to change owner of database" +msgstr "droit refus� pour modifier le propri�taire de la base de donn�es" -#: parser/parse_type.c:83 +#: commands/dbcommands.c:1853 #, c-format -msgid "improper %%TYPE reference (too few dotted names): %s" -msgstr "r�f�rence %%TYPE invalide (trop peu de points entre les noms) : %s" +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." -#: parser/parse_type.c:105 +#: commands/dbcommands.c:1856 #, c-format -msgid "improper %%TYPE reference (too many dotted names): %s" -msgstr "r�f�rence %%TYPE invalide (trop de points entre les noms) : %s" +msgid "There are %d other session(s) using the database." +msgstr "%d autres sessions utilisent la base de donn�es." -#: parser/parse_type.c:127 +#: commands/dbcommands.c:1859 #, c-format -msgid "type reference %s converted to %s" -msgstr "r�f�rence de type %s convertie en %s" +msgid "There are %d prepared transaction(s) using the database." +msgstr "%d transaction(s) pr�par�e(s) utilisent la base de donn�es" -#: parser/parse_type.c:202 -#: utils/cache/typcache.c:151 +#: commands/explain.c:153 #, c-format -msgid "type \"%s\" is only a shell" -msgstr "le type � %s � est seulement un shell" +msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\"" +msgstr "valeur non reconnue pour l'option EXPLAIN � %s � : %s" -#: parser/parse_type.c:270 +#: commands/explain.c:159 #, c-format -msgid "type modifier is not allowed for type \"%s\"" -msgstr "le modificateur de type n'est pas autoris� pour le type � %s �" +msgid "unrecognized EXPLAIN option \"%s\"" +msgstr "option EXPLAIN � %s � non reconnu" -#: parser/parse_type.c:313 -msgid "type modifiers must be simple constants or identifiers" -msgstr "les modificateurs de type doivent �tre des constantes ou des identifiants" +#: commands/explain.c:166 +msgid "EXPLAIN option BUFFERS requires ANALYZE" +msgstr "l'option BUFFERS d'EXPLAIN n�cessite ANALYZE" -#: parser/parse_type.c:548 -#: parser/parse_type.c:647 -#, c-format -msgid "invalid type name \"%s\"" -msgstr "nom de type � %s � invalide" +#: commands/indexcmds.c:162 +msgid "must specify at least one column" +msgstr "doit sp�cifier au moins une colonne" -#: parser/parse_utilcmd.c:306 -msgid "array of serial is not implemented" -msgstr "le tableau de type serial n'est pas implant�" +#: commands/indexcmds.c:166 +#, c-format +msgid "cannot use more than %d columns in an index" +msgstr "ne peut pas utiliser plus de %d colonnes dans un index" -#: parser/parse_utilcmd.c:350 +#: commands/indexcmds.c:198 #, 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 �" +msgid "cannot create index on foreign table \"%s\"" +msgstr "ne peut pas cr�er un index sur la table distante � %s �" + +#: commands/indexcmds.c:213 +msgid "cannot create indexes on temporary tables of other sessions" +msgstr "" +"ne peut pas cr�er les index sur les tables temporaires des autres sessions" + +#: commands/indexcmds.c:299 +msgid "substituting access method \"gist\" for obsolete method \"rtree\"" +msgstr "substitution de la m�thode d'acc�s obsol�te � rtree � par � gist � " -#: parser/parse_utilcmd.c:451 -#: parser/parse_utilcmd.c:463 +#: commands/indexcmds.c:307 commands/opclasscmds.c:369 +#: commands/opclasscmds.c:790 commands/opclasscmds.c:2202 #, 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 "access method \"%s\" does not exist" +msgstr "la m�thode d'acc�s � %s � n'existe pas" -#: parser/parse_utilcmd.c:475 +#: commands/indexcmds.c:316 #, c-format -msgid "multiple default values specified for column \"%s\" of table \"%s\"" -msgstr "" -"plusieurs valeurs par d�faut sont sp�cifi�es pour la colonne � %s � de la table\n" -"� %s �" +msgid "access method \"%s\" does not support unique indexes" +msgstr "la m�thode d'acc�s � %s � ne supporte pas les index uniques" -#: parser/parse_utilcmd.c:832 +#: commands/indexcmds.c:321 #, c-format -msgid "type %s is not a composite type" -msgstr "le type %s n'est pas un type composite" +msgid "access method \"%s\" does not support multicolumn indexes" +msgstr "la m�thode d'acc�s � %s � ne supporte pas les index multi-colonnes" -#: parser/parse_utilcmd.c:1457 +#: commands/indexcmds.c:326 #, 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" +msgid "access method \"%s\" does not support exclusion constraints" +msgstr "la m�thode d'acc�s � %s � ne supporte pas les contraintes d'exclusion" -#: parser/parse_utilcmd.c:1462 +#: commands/indexcmds.c:402 #, c-format -msgid "column \"%s\" appears twice in unique constraint" -msgstr "la colonne � %s � appara�t deux fois sur une contrainte unique" +msgid "%s %s will create implicit index \"%s\" for table \"%s\"" +msgstr "%s %s cr�era un index implicite � %s � pour la table � %s �" -#: parser/parse_utilcmd.c:1615 -msgid "index expression cannot return a set" -msgstr "l'expression de l'index ne peut pas renvoyer un ensemble" +#: commands/indexcmds.c:740 +msgid "cannot use subquery in index predicate" +msgstr "ne peut pas utiliser une sous-requ�te dans un pr�dicat d'index" -#: parser/parse_utilcmd.c:1625 -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" +#: commands/indexcmds.c:744 +msgid "cannot use aggregate in index predicate" +msgstr "ne peut pas utiliser un agr�gat dans un pr�dicat d'index" -#: parser/parse_utilcmd.c:1720 -msgid "rule WHERE condition cannot contain references to other relations" +#: commands/indexcmds.c:753 +msgid "functions in index predicate must be marked IMMUTABLE" msgstr "" -"la condition WHERE d'une r�gle ne devrait pas contenir de r�f�rences � d'autres\n" -"relations" +"les fonctions dans un pr�dicat d'index doivent �tre marqu�es comme IMMUTABLE" -#: parser/parse_utilcmd.c:1726 -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" +#: commands/indexcmds.c:818 parser/parse_utilcmd.c:1754 +#, c-format +msgid "column \"%s\" named in key does not exist" +msgstr "la colonne � %s � nomm�e dans la cl� n'existe pas" -#: parser/parse_utilcmd.c:1730 -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" +#: commands/indexcmds.c:871 +msgid "cannot use subquery in index expression" +msgstr "ne peut pas utiliser la sous-requ�te dans l'expression de l'index" -#: parser/parse_utilcmd.c:1802 -msgid "rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE actions" +#: commands/indexcmds.c:875 +msgid "cannot use aggregate function in index expression" msgstr "" -"les r�gles avec des conditions WHERE ne peuvent contenir que des actions\n" -"SELECT, INSERT, UPDATE ou DELETE " +"ne peut pas utiliser la fonction d'agr�gat dans l'expression de l'index" -#: parser/parse_utilcmd.c:1820 -#: parser/parse_utilcmd.c:1890 -#: rewrite/rewriteHandler.c:432 -#: rewrite/rewriteManip.c:1021 -msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" +#: commands/indexcmds.c:886 +msgid "functions in index expression must be marked IMMUTABLE" msgstr "" -"les instructions conditionnelles UNION/INTERSECT/EXCEPT ne sont pas\n" -"impl�ment�es" +"les fonctions dans l'expression de l'index doivent �tre marqu�es comme\n" +"IMMUTABLE" -#: parser/parse_utilcmd.c:1838 -msgid "ON SELECT rule cannot use OLD" -msgstr "la r�gle ON SELECT ne peut pas utiliser OLD" +#: commands/indexcmds.c:907 +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" -#: parser/parse_utilcmd.c:1842 -msgid "ON SELECT rule cannot use NEW" -msgstr "la r�gle ON SELECT ne peut pas utiliser NEW" +#: commands/indexcmds.c:915 commands/typecmds.c:843 +#: parser/parse_utilcmd.c:2592 parser/parse_expr.c:2165 +#: parser/parse_type.c:492 +#, c-format +msgid "collations are not supported by type %s" +msgstr "les collationnements ne sont pas support�s par le type %s" -#: parser/parse_utilcmd.c:1851 -msgid "ON INSERT rule cannot use OLD" -msgstr "la r�gle ON INSERT ne peut pas utiliser OLD" +#: commands/indexcmds.c:953 +#, c-format +msgid "operator %s is not commutative" +msgstr "l'op�rateur %s n'est pas commutatif" -#: parser/parse_utilcmd.c:1857 -msgid "ON DELETE rule cannot use NEW" -msgstr "la r�gle ON INSERT ne peut pas utiliser NEW" +#: commands/indexcmds.c:955 +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." -#: parser/parse_utilcmd.c:2138 -msgid "misplaced DEFERRABLE clause" -msgstr "clause DEFERRABLE mal plac�e" +#: commands/indexcmds.c:981 +#, 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 �" -#: parser/parse_utilcmd.c:2143 -#: parser/parse_utilcmd.c:2158 -msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" -msgstr "clauses DEFERRABLE/NOT DEFERRABLE multiples non autoris�es" +#: commands/indexcmds.c:984 +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." -#: parser/parse_utilcmd.c:2153 -msgid "misplaced NOT DEFERRABLE clause" -msgstr "clause NOT DEFERRABLE mal plac�e" +#: commands/indexcmds.c:1019 +#, 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" -#: parser/parse_utilcmd.c:2166 -#: parser/parse_utilcmd.c:2192 -#: gram.y:3485 -#: gram.y:3501 -msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" -msgstr "la contrainte d�clar�e INITIALLY DEFERRED doit �tre DEFERRABLE" +#: commands/indexcmds.c:1024 +#, 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" -#: parser/parse_utilcmd.c:2174 -msgid "misplaced INITIALLY DEFERRED clause" -msgstr "clause INITIALLY DEFERRED mal plac�e" +#: commands/indexcmds.c:1080 +#, 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 �" -#: parser/parse_utilcmd.c:2179 -#: parser/parse_utilcmd.c:2205 -msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" -msgstr "clauses INITIALLY IMMEDIATE/DEFERRED multiples non autoris�es" +#: commands/indexcmds.c:1082 +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." -#: parser/parse_utilcmd.c:2200 -msgid "misplaced INITIALLY IMMEDIATE clause" -msgstr "clause INITIALLY IMMEDIATE mal plac�e" +#: commands/indexcmds.c:1111 commands/indexcmds.c:1119 +#: commands/opclasscmds.c:212 commands/opclasscmds.c:1568 +#, 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 �" -#: parser/parse_utilcmd.c:2373 +#: commands/indexcmds.c:1132 #, c-format -msgid "CREATE specifies a schema (%s) different from the one being created (%s)" -msgstr "CREATE sp�cifie un sch�ma (%s) diff�rent de celui tout juste cr�� (%s)" +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" -#: gram.y:1255 -msgid "current database cannot be changed" -msgstr "la base de donn�es actuelle ne peut pas �tre chang�e" +#: commands/indexcmds.c:1222 +#, 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" -#: gram.y:1373 -#: gram.y:1388 -msgid "time zone interval must be HOUR or HOUR TO MINUTE" -msgstr "l'intervalle de fuseau horaire doit �tre HOUR ou HOUR TO MINUTE" +#: commands/indexcmds.c:1565 +#, c-format +msgid "table \"%s\" has no indexes" +msgstr "la table � %s � n'a pas d'index" -#: gram.y:1393 -#: gram.y:8280 -#: gram.y:10731 -msgid "interval precision specified twice" -msgstr "pr�cision d'intervalle sp�cifi�e deux fois" +#: commands/indexcmds.c:1593 +msgid "can only reindex the currently open database" +msgstr "peut seulement r�indexer la base de donn�es en cours" -#: gram.y:2522 -msgid "CHECK constraints cannot be deferred" -msgstr "les contraintes CHECK ne sont pas DEFERRABLE" - -#: gram.y:2611 -#: utils/adt/ri_triggers.c:373 -#: utils/adt/ri_triggers.c:433 -#: utils/adt/ri_triggers.c:596 -#: utils/adt/ri_triggers.c:836 -#: utils/adt/ri_triggers.c:1024 -#: utils/adt/ri_triggers.c:1186 -#: utils/adt/ri_triggers.c:1374 -#: utils/adt/ri_triggers.c:1545 -#: utils/adt/ri_triggers.c:1728 -#: utils/adt/ri_triggers.c:1899 -#: utils/adt/ri_triggers.c:2115 -#: utils/adt/ri_triggers.c:2297 -#: utils/adt/ri_triggers.c:2500 -#: utils/adt/ri_triggers.c:2548 -#: utils/adt/ri_triggers.c:2593 -#: utils/adt/ri_triggers.c:2721 -msgid "MATCH PARTIAL not yet implemented" -msgstr "MATCH PARTIAL non impl�ment�" +#: commands/indexcmds.c:1680 +#, c-format +msgid "table \"%s.%s\" was reindexed" +msgstr "la table � %s.%s � a �t� r�index�e" -#: gram.y:2726 -msgid "CREATE TABLE AS cannot specify INTO" -msgstr "CREATE TABLE AS ne peut pas sp�cifier INTO" +#: commands/view.c:143 +#, 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" -#: gram.y:3396 -msgid "duplicate trigger events specified" -msgstr "�v�nements de trigger dupliqu�s sp�cifi�s" +#: commands/view.c:158 +msgid "view must have at least one column" +msgstr "la vue doit avoir au moins une colonne" -#: gram.y:3565 -msgid "CREATE ASSERTION is not yet implemented" -msgstr "CREATE ASSERTION n'est pas encore impl�ment�" +#: commands/view.c:283 commands/view.c:295 +msgid "cannot drop columns from view" +msgstr "ne peut pas supprimer les colonnes d'une vue" -#: gram.y:3581 -msgid "DROP ASSERTION is not yet implemented" -msgstr "DROP ASSERTION n'est pas encore impl�ment�" +#: commands/view.c:300 +#, 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 �" -#: gram.y:3882 -msgid "RECHECK is no longer required" -msgstr "RECHECK n'est plus n�cessaire" +#: commands/view.c:308 +#, 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" -#: gram.y:3883 -msgid "Update your data type." -msgstr "Mettez � jour votre type de donn�es." +#: commands/view.c:447 +msgid "views must not contain SELECT INTO" +msgstr "les vues ne peuvent pas contenir SELECT INTO" -#: gram.y:5422 -#: utils/adt/regproc.c:630 -msgid "missing argument" -msgstr "argument manquant" +#: commands/view.c:451 +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" -#: gram.y:5423 -#: utils/adt/regproc.c:631 -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." +#: commands/view.c:479 +msgid "CREATE VIEW specifies more column names than columns" +msgstr "CREATE VIEW sp�cifie plus de noms de colonnes que de colonnes" -#: gram.y:6358 -#: gram.y:6364 -#: gram.y:6370 -msgid "WITH CHECK OPTION is not implemented" -msgstr "WITH CHECK OPTION n'est pas impl�ment�" +#: commands/view.c:487 +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" -#: gram.y:7046 -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" +#: commands/view.c:501 +#, c-format +msgid "view \"%s\" will be a temporary view" +msgstr "la vue � %s � sera une vue temporaire" -#: gram.y:7267 -msgid "number of columns does not match number of values" -msgstr "le nombre de colonnes ne correspond pas au nombre de valeurs" +#: commands/opclasscmds.c:136 commands/opclasscmds.c:1838 +#: commands/opclasscmds.c:1849 commands/opclasscmds.c:2083 +#: commands/opclasscmds.c:2094 +#, 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 �" -#: gram.y:7707 -msgid "LIMIT #,# syntax is not supported" -msgstr "la syntaxe LIMIT #,# n'est pas support�e" +#: commands/opclasscmds.c:271 +#, 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 �" -#: gram.y:7708 -msgid "Use separate LIMIT and OFFSET clauses." -msgstr "Utilisez les clauses s�par�es LIMIT et OFFSET." +#: commands/opclasscmds.c:408 +msgid "must be superuser to create an operator class" +msgstr "doit �tre super-utilisateur pour cr�er une classe d'op�rateur" -#: gram.y:7926 -msgid "VALUES in FROM must have an alias" -msgstr "VALUES dans FROM doit avoir un alias" +#: 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 "num�ro d'op�rateur %d invalide, doit �tre compris entre 1 et %d" -#: gram.y:7927 -msgid "For example, FROM (VALUES ...) [AS] foo." -msgstr "Par exemple, FROM (VALUES ...) [AS] quelquechose." +#: 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 "num�ro de proc�dure %d invalide, doit �tre compris entre 1 et %d" -#: gram.y:7932 -msgid "subquery in FROM must have an alias" -msgstr "la sous-requ�te du FROM doit avoir un alias" +#: commands/opclasscmds.c:561 +msgid "storage type specified more than once" +msgstr "type de stockage sp�cifi� plus d'une fois" -#: gram.y:7933 -msgid "For example, FROM (SELECT ...) [AS] foo." -msgstr "Par exemple, FROM (SELECT...) [AS] quelquechose." +#: commands/opclasscmds.c:589 +#, c-format +msgid "" +"storage type cannot be different from data type for access method \"%s\"" +msgstr "" +"le type de stockage ne peut pas �tre diff�rent du type de donn�es pour la\n" +"m�thode d'acc�s � %s �" -#: gram.y:8406 -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" +#: commands/opclasscmds.c:605 +#, 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 �" -#: gram.y:8415 -msgid "precision for type float must be less than 54 bits" -msgstr "la pr�cision du type float doit �tre inf�rieur � 54 bits" +#: commands/opclasscmds.c:633 +#, 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" -#: gram.y:9121 -msgid "UNIQUE predicate is not yet implemented" -msgstr "pr�dicat UNIQUE non impl�ment�" +#: commands/opclasscmds.c:636 +#, 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." -#: gram.y:9993 -msgid "RANGE PRECEDING is only supported with UNBOUNDED" -msgstr "RANGE PRECEDING est seulement support� avec UNBOUNDED" +#: commands/opclasscmds.c:760 +msgid "must be superuser to create an operator family" +msgstr "doit �tre super-utilisateur pour cr�er une famille d'op�rateur" -#: gram.y:9999 -msgid "RANGE FOLLOWING is only supported with UNBOUNDED" -msgstr "RANGE FOLLOWING est seulement support� avec UNBOUNDED" +#: commands/opclasscmds.c:816 +msgid "must be superuser to alter an operator family" +msgstr "doit �tre super-utilisateur pour modifier une famille d'op�rateur" -#: gram.y:10026 -#: gram.y:10049 -msgid "frame start cannot be UNBOUNDED FOLLOWING" -msgstr "la fin du frame ne peut pas �tre UNBOUNDED FOLLOWING" +#: commands/opclasscmds.c:880 +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" -#: gram.y:10031 -msgid "frame starting from following row cannot end with current row" -msgstr "la frame commen�ant apr�s la ligne suivante ne peut pas se terminer avec la ligne actuelle" +#: commands/opclasscmds.c:944 +msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY" +msgstr "STORAGE ne peut pas �tre sp�cifi� dans ALTER OPERATOR FAMILY" -#: gram.y:10054 -msgid "frame end cannot be UNBOUNDED PRECEDING" -msgstr "la fin du frame ne peut pas �tre UNBOUNDED PRECEDING" +#: commands/opclasscmds.c:1060 +msgid "one or two argument types must be specified" +msgstr "un ou deux types d'argument doit �tre sp�cifi�" -#: gram.y:10060 -msgid "frame starting from current row cannot have preceding rows" -msgstr "la frame commen�ant � la ligne courante ne peut pas avoir des lignes pr�c�dentes" +#: commands/opclasscmds.c:1086 +msgid "index operators must be binary" +msgstr "les op�rateurs d'index doivent �tre binaires" -#: gram.y:10067 -msgid "frame starting from following row cannot have preceding rows" -msgstr "la frame commen�ant � la ligne suivante ne peut pas avoir des lignes pr�c�dentes" +#: commands/opclasscmds.c:1111 +#, c-format +msgid "access method \"%s\" does not support ordering operators" +msgstr "la m�thode d'acc�s � %s � ne supporte pas les op�rateurs de tri" -#: gram.y:10706 -msgid "type modifier cannot have parameter name" -msgstr "le modificateur de type ne peut pas avoir de nom de param�tre" +#: commands/opclasscmds.c:1124 +msgid "index search operators must return boolean" +msgstr "les op�rateurs de recherche d'index doivent renvoyer un bool�en" -#: gram.y:11303 -#: gram.y:11511 -msgid "improper use of \"*\"" -msgstr "mauvaise utilisation de � * �" +#: commands/opclasscmds.c:1163 +msgid "btree procedures must have two arguments" +msgstr "les proc�dures btree doivent avoir deux arguments" -#: gram.y:11442 -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" +#: commands/opclasscmds.c:1167 +msgid "btree procedures must return integer" +msgstr "les proc�dures btree doivent renvoyer un entier" -#: gram.y:11449 -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" +#: commands/opclasscmds.c:1182 +msgid "hash procedures must have one argument" +msgstr "les proc�dures de hachage doivent avoir un argument" -#: gram.y:11574 -msgid "multiple ORDER BY clauses not allowed" -msgstr "clauses ORDER BY multiples non autoris�es" +#: commands/opclasscmds.c:1186 +msgid "hash procedures must return integer" +msgstr "les proc�dures de hachage doivent renvoyer un entier" -#: gram.y:11585 -msgid "multiple OFFSET clauses not allowed" -msgstr "clauses OFFSET multiples non autoris�es" +#: commands/opclasscmds.c:1211 +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" -#: gram.y:11594 -msgid "multiple LIMIT clauses not allowed" -msgstr "clauses LIMIT multiples non autoris�es" +#: commands/opclasscmds.c:1237 +#, 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" -#: gram.y:11603 -msgid "multiple WITH clauses not allowed" -msgstr "clauses WITH multiples non autoris�es" +#: commands/opclasscmds.c:1244 +#, 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" -#: gram.y:11757 -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" +#: commands/opclasscmds.c:1293 +#, 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 �" -#: scan.l:411 -msgid "unterminated /* comment" -msgstr "commentaire /* non termin�" +#: commands/opclasscmds.c:1406 +#, 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 �" -#: scan.l:440 -msgid "unterminated bit string literal" -msgstr "cha�ne litt�rale bit non termin�e" +#: commands/opclasscmds.c:1493 +#, 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 �" -#: scan.l:461 -msgid "unterminated hexadecimal string literal" -msgstr "cha�ne litt�rale hexad�cimale non termin�e" +#: commands/opclasscmds.c:1533 +#, 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 �" -#: scan.l:511 -msgid "unsafe use of string constant with Unicode escapes" -msgstr "utilisation non s�re de la constante de cha�ne avec des �chappements Unicode" +#: commands/opclasscmds.c:1618 +#, 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�" -#: scan.l:512 -msgid "String constants with Unicode escapes cannot be used when standard_conforming_strings is off." +#: commands/opclasscmds.c:1778 +#, c-format +msgid "" +"operator class \"%s\" for access method \"%s\" already exists in schema \"%s" +"\"" msgstr "" -"Les constantes de cha�ne avec des �chappements Unicode ne peuvent pas �tre\n" -"utilis�es quand standard_conforming_strings est d�sactiv�." +"la classe d'op�rateur � %s � de la m�thode d'acc�s � %s � existe d�j� dans\n" +"le sch�ma � %s �" -#: 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 "paire surrogate Unicode invalide" +#: commands/opclasscmds.c:1867 +#, c-format +msgid "" +"operator family \"%s\" for access method \"%s\" already exists in schema \"%s" +"\"" +msgstr "" +"la famille d'op�rateur � %s � de la m�thode d'acc�s � %s � existe d�j� dans\n" +"le sch�ma � %s �" -#: scan.l:586 -msgid "invalid Unicode escape" -msgstr "�chappement Unicode invalide" +#: commands/extension.c:149 commands/extension.c:2689 +#, c-format +msgid "extension \"%s\" does not exist" +msgstr "l'extension � %s � n'existe pas" -#: scan.l:587 -msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX." -msgstr "Les �chappements Unicode doivent �tre de la forme \\uXXXX ou \\UXXXXXXXX." +#: commands/extension.c:248 commands/extension.c:257 commands/extension.c:269 +#: commands/extension.c:279 +#, c-format +msgid "invalid extension name: \"%s\"" +msgstr "nom d'extension invalide : � %s �" -#: scan.l:598 -msgid "unsafe use of \\' in a string literal" -msgstr "utilisation non s�re de \\' dans une cha�ne litt�rale" +#: commands/extension.c:249 +msgid "Extension names must not be empty." +msgstr "Les noms d'extension ne doivent pas �tre vides." -#: scan.l:599 -msgid "Use '' to write quotes in strings. \\' is insecure in client-only encodings." +#: commands/extension.c:258 +msgid "Extension names must not contain \"--\"." +msgstr "Les noms d'extension ne doivent pas contenir � -- �." + +#: commands/extension.c:270 +msgid "Extension names must not begin or end with \"-\"." msgstr "" -"Utilisez '' pour �crire des guillemets dans une cha�ne. \\' n'est pas s�curis�\n" -"pour les encodages clients." +"Les noms des extensions ne doivent pas commencer ou finir avec un tiret (� - " +"�)." -#: scan.l:629 -msgid "unterminated quoted string" -msgstr "cha�ne entre guillemets non termin�e" +#: commands/extension.c:280 +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." -#: scan.l:674 -msgid "unterminated dollar-quoted string" -msgstr "cha�ne entre guillemets dollars non termin�e" +#: commands/extension.c:295 commands/extension.c:304 commands/extension.c:313 +#: commands/extension.c:323 +#, c-format +msgid "invalid extension version name: \"%s\"" +msgstr "nom de version de l'extension invalide : � %s �" -#: scan.l:691 -#: scan.l:703 -#: scan.l:717 -msgid "zero-length delimited identifier" -msgstr "identifiant d�limit� de longueur nulle" +#: commands/extension.c:296 +msgid "Version names must not be empty." +msgstr "Les noms de version ne doivent pas �tre vides." -#: scan.l:730 -msgid "unterminated quoted identifier" -msgstr "identifiant entre guillemets non termin�" +#: commands/extension.c:305 +msgid "Version names must not contain \"--\"." +msgstr "Les noms de version ne doivent pas contenir � -- �." -#: scan.l:834 -msgid "operator too long" -msgstr "op�rateur trop long" +#: commands/extension.c:314 +msgid "Version names must not begin or end with \"-\"." +msgstr "" +"Les noms de version ne doivent ni commencer ni se terminer avec un tiret." -#. translator: %s is typically the translation of "syntax error" -#: scan.l:992 -#, c-format -msgid "%s at end of input" -msgstr "%s � la fin de l'entr�e" +#: commands/extension.c:324 +msgid "Version names must not contain directory separator characters." +msgstr "" +"Les noms de version ne doivent pas contenir de caract�res s�parateurs de\n" +"r�pertoire." -#. translator: first %s is typically the translation of "syntax error" -#: scan.l:1000 +#: commands/extension.c:474 #, c-format -msgid "%s at or near \"%s\"" -msgstr "%s sur ou pr�s de � %s �" +msgid "could not open extension control file \"%s\": %m" +msgstr "n'a pas pu ouvrir le fichier de contr�le d'extension � %s � : %m" -#: 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" +#: commands/extension.c:495 commands/extension.c:505 +#, c-format +msgid "parameter \"%s\" cannot be set in a secondary extension control file" 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" +"le param�tre � %s � ne peut pas �tre configur� dans un fichier de contr�le\n" +"secondaire de l'extension" -#: scan.l:1189 -#: scan.l:1325 -msgid "invalid Unicode escape value" -msgstr "valeur d'�chappement Unicode invalide" +#: commands/extension.c:544 +#, c-format +msgid "\"%s\" is not a valid encoding name" +msgstr "� %s � n'est pas un nom d'encodage valide" -#: scan.l:1214 -msgid "invalid Unicode escape character" -msgstr "cha�ne d'�chappement Unicode invalide" +#: commands/extension.c:558 +#, c-format +msgid "parameter \"%s\" must be a list of extension names" +msgstr "l'argument � %s � doit �tre une liste de noms d'extension" -#: scan.l:1381 -msgid "nonstandard use of \\' in a string literal" -msgstr "utilisation non standard de \\' dans une cha�ne litt�rale" +#: commands/extension.c:565 +#, c-format +msgid "unrecognized parameter \"%s\" in file \"%s\"" +msgstr "param�tre � %s � non reconnu dans le fichier � %s �" -#: scan.l:1382 -msgid "Use '' to write quotes in strings, or use the escape string syntax (E'...')." +#: commands/extension.c:574 +msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true" msgstr "" -"Utilisez '' pour �crire des guillemets dans une cha�ne ou utilisez la syntaxe de\n" -"cha�ne d'�chappement (E'...')." +"le param�tre � schema � ne peut pas �tre indiqu� quand � relocatable � est " +"vrai" -#: scan.l:1391 -msgid "nonstandard use of \\\\ in a string literal" -msgstr "utilisation non standard de \\\\ dans une cha�ne litt�rale" +#: commands/extension.c:726 +msgid "" +"transaction control statements are not allowed within an extension script" +msgstr "" +"les instructions de contr�le des transactions ne sont pas autoris�es dans " +"un\n" +"script d'extension" -#: scan.l:1392 -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'\\\\'." +#: commands/extension.c:794 +#, c-format +msgid "permission denied to create extension \"%s\"" +msgstr "droit refus� pour cr�er l'extension � %s �" -#: scan.l:1406 -msgid "nonstandard use of escape in a string literal" -msgstr "utilisation non standard d'un �chappement dans une cha�ne litt�rale" +#: commands/extension.c:796 +msgid "Must be superuser to create this extension." +msgstr "Doit �tre super-utilisateur pour cr�er cette extension." + +#: commands/extension.c:800 +#, c-format +msgid "permission denied to update extension \"%s\"" +msgstr "droit refus� pour mettre � jour l'extension � %s �" + +#: commands/extension.c:802 +msgid "Must be superuser to update this extension." +msgstr "Doit �tre super-utilisateur pour mettre � jour cette extension." -#: scan.l:1407 +#: commands/extension.c:1084 +#, c-format msgid "" -"Use the escape string syntax for escapes, e.g., E'\\r\\n" -"'." +"extension \"%s\" has no update path from version \"%s\" to version \"%s\"" msgstr "" -"Utilisez la syntaxe de la cha�ne d'�chappement pour les �chappements,\n" -"c'est-�-dire E'\\r\\n" -"'." +"l'extension � %s � n'a pas de chemin de mise � jour pour aller de la version " +"� %s � � la version � %s �" -#: port/win32/security.c:43 +#: commands/extension.c:1211 #, c-format -msgid "could not open process token: error code %d\n" -msgstr "n'a pas pu ouvrir le jeton du processus : code d'erreur %d\n" +msgid "extension \"%s\" already exists, skipping" +msgstr "l'extension � %s � existe d�j�, poursuite du traitement" -#: port/win32/security.c:63 +#: commands/extension.c:1218 #, c-format -msgid "could not get SID for Administrators group: error code %d\n" -msgstr "n'a pas pu obtenir le SID du groupe d'administrateurs : code d'erreur %d\n" +msgid "extension \"%s\" already exists" +msgstr "l'extension � %s � existe d�j�" -#: port/win32/security.c:72 -#, c-format -msgid "could not get SID for PowerUsers group: error code %d\n" -msgstr "" -"n'a pas pu obtenir le SID du groupe des utilisateurs avec pouvoir :\n" -"code d'erreur %d\n" +#: commands/extension.c:1229 +msgid "nested CREATE EXTENSION is not supported" +msgstr "CREATE EXTENSION imbriqu� n'est pas support�" -#: port/win32/signal.c:189 +#: commands/extension.c:1284 commands/extension.c:2749 +msgid "version to install must be specified" +msgstr "la version � installer doit �tre pr�cis�e" + +#: commands/extension.c:1301 #, c-format -msgid "could not create signal listener pipe for pid %d: error code %d" +msgid "FROM version must be different from installation target version \"%s\"" msgstr "" -"n'a pas pu cr�er le tube d'�coute de signal pour le id processus %d :\n" -"code d'erreur %d" +"la version FROM doit �tre diff�rente de la version cible d'installation � %s " +"�" -#: port/win32/signal.c:269 -#: port/win32/signal.c:301 +#: commands/extension.c:1356 #, c-format -msgid "could not create signal listener pipe: error code %d; retrying\n" -msgstr "n'a pas pu cr�er le tube d'�coute de signal : code d'erreur %d ; nouvelle tentative\n" +msgid "extension \"%s\" must be installed in schema \"%s\"" +msgstr "l'extension � %s � doit �tre install�e dans le sch�ma � %s �" -#: port/win32/signal.c:312 -#, c-format -msgid "could not create signal dispatch thread: error code %d\n" -msgstr "n'a pas pu cr�er le thread de r�partition des signaux : code d'erreur %d\n" +#: commands/extension.c:1399 commands/extension.c:1405 catalog/namespace.c:358 +#: catalog/namespace.c:2589 +msgid "no schema has been selected to create in" +msgstr "aucun sch�ma n'a �t� s�lectionn� pour cette cr�ation" -#: port/win32_shmem.c:168 -#: port/win32_shmem.c:203 -#: port/win32_shmem.c:224 +#: commands/extension.c:1439 commands/extension.c:2890 #, c-format -msgid "could not create shared memory segment: %lu" -msgstr "n'a pas pu cr�er le segment de m�moire partag�e : %lu" +msgid "required extension \"%s\" is not installed" +msgstr "l'extension � %s � requise n'est pas install�e" -#: port/win32_shmem.c:169 +#: commands/extension.c:1600 commands/extension.c:2488 +#: catalog/objectaddress.c:289 +msgid "extension name cannot be qualified" +msgstr "le nom de l'extension ne peut pas �tre qualifi�" + +#: commands/extension.c:1608 #, 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 "extension \"%s\" does not exist, skipping" +msgstr "l'extension � %s � n'existe pas, poursuite du traitement" -#: port/win32_shmem.c:193 -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" +#: commands/extension.c:1663 +#, 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" -#: port/win32_shmem.c:194 -msgid "Check if there are any old server processes still running, and terminate them." +#: commands/extension.c:2134 +msgid "" +"pg_extension_config_dump() can only be called from an SQL script executed by " +"CREATE EXTENSION" msgstr "" -"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." +"pg_extension_config_dump() peut seulement �tre appel� � partir d'un script " +"SQL\n" +"ex�cut� par CREATE EXTENSION" -#: port/win32_shmem.c:204 -msgid "Failed system call was DuplicateHandle." -msgstr "L'appel syst�me qui a �chou� �tait DuplicateHandle." - -#: port/win32_shmem.c:225 -msgid "Failed system call was MapViewOfFileEx." -msgstr "L'appel syst�me qui a �chou� �tait MapViewOfFileEx." - -#: port/sysv_sema.c:114 -#: port/pg_sema.c:114 +#: commands/extension.c:2146 #, c-format -msgid "could not create semaphores: %m" -msgstr "n'a pas pu cr�er des s�maphores : %m" +msgid "OID %u does not refer to a table" +msgstr "l'OID %u ne fait pas r�f�rence � une table" -#: port/sysv_sema.c:115 -#: port/pg_sema.c:115 +#: commands/extension.c:2151 #, c-format -msgid "Failed system call was semget(%lu, %d, 0%o)." -msgstr "L'appel syst�me qui a �chou� �tait semget(%lu, %d, 0%o)." +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" -#: port/sysv_sema.c:119 -#: port/pg_sema.c:119 +#: commands/extension.c:2515 #, 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." +"cannot move extension \"%s\" into schema \"%s\" because the extension " +"contains the schema" msgstr "" -"Cette erreur ne signifie *pas* que vous manquez d'espace disque.\n" -"Il arrive que soit la limite syst�me de nombre maximum d'ensembles de\n" -"s�maphores (SEMMNI) ou le nombre maximum de s�maphores pour le syst�me\n" -"(SEMMNS) soit d�pass�e. Vous avez besoin d'augmenter le param�tre noyau\n" -"respectif. Autrement, r�duisez la consomnation de s�maphores par PostgreSQL\n" -"en r�duisant son param�tre max_connections (actuellement %d).\n" -"La documentation de PostgreSQL contient plus d'informations sur la\n" -"configuration de votre syst�me avec PostgreSQL." +"ne peut pas d�placer l'extension � %s � dans le sch�ma � %s � car " +"l'extension\n" +"contient le sch�ma" -#: port/sysv_sema.c:148 -#: port/pg_sema.c:148 +#: commands/extension.c:2555 commands/extension.c:2618 #, c-format -msgid "You possibly need to raise your kernel's SEMVMX value to be at least %d. Look into the PostgreSQL documentation for details." -msgstr "" -"Vous pouvez avoir besoin d'augmenter la valeur SEMVMX par noyau pour valoir\n" -"au moins de %d. Regardez dans la documentation de PostgreSQL pour les d�tails." +msgid "extension \"%s\" does not support SET SCHEMA" +msgstr "l'extension � %s � ne supporte pas SET SCHEMA" -#: port/sysv_shmem.c:147 -#: port/pg_shmem.c:147 +#: commands/extension.c:2620 #, 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" +msgid "%s is not in the extension's schema \"%s\"" +msgstr "%s n'est pas dans le sch�ma � %s � de l'extension" -#: 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 "L'appel syst�me qui a �chou� �tait shmget(cl�=%lu, taille=%lu, 0%o)." +#: commands/extension.c:2669 +msgid "nested ALTER EXTENSION is not supported" +msgstr "un ALTER EXTENSION imbriqu� n'est pas support�" -#: port/sysv_shmem.c:152 -#: port/pg_shmem.c:152 +#: commands/extension.c:2760 #, 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_buffers parameter (currently %d) and/or its max_connections parameter (currently %d).\n" -"If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising the request size or reconfiguring SHMMIN is called for.\n" -"The PostgreSQL documentation contains more information about shared memory configuration." -msgstr "" -"Cette erreur signifie habituellement que la demande de PostgreSQL pour un\n" -"segment de m�moire partag�e a d�pass� le param�tre SHMMAX de votre noyau.\n" -"Vous pouvez soit r�duire la taille de la requ�te soit reconfigurer le noyau\n" -"avec un SHMMAX plus important. Pour r�duire la taille de la requ�te\n" -"(actuellement %lu octets), r�duisez le param�tre de shared_buffers de\n" -"PostgreSQL (actuellement %d) et/ou le param�tre max_connections\n" -"(actuellement %d).\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 "version \"%s\" of extension \"%s\" is already installed" +msgstr "la version � %s � de l'extension � %s � est d�j� install�e" -#: port/sysv_shmem.c:165 -#: port/pg_shmem.c:165 +#: commands/extension.c:2983 catalog/pg_depend.c:164 #, 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_buffers parameter (currently %d) and/or its max_connections parameter (currently %d).\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 d�passe la m�moire disponible ou l'espace swap,\n" -"voire d�passe la valeur du param�tre SHMALL du noyau.\n" -"Vous pouvez soit r�duire la taille demand�e soit reconfigurer le noyau avec\n" -"un SHMALL plus gros.\n" -"Pour r�duire la taille demand�e (actuellement %lu octets), diminuez la valeur\n" -"du param�tre shared_buffers de PostgreSQL (actuellement %d) et/ou le param�tre\n" -"max_connections (actuellement %d).\n" -"La documentation de PostgreSQL contient plus d'informations sur la\n" -"configuration de la m�moire partag�e." +msgid "%s is already a member of extension \"%s\"" +msgstr "%s est d�j� un membre de l'extension � %s �" -#: port/sysv_shmem.c:176 -#: port/pg_shmem.c:176 +#: commands/extension.c:2995 #, 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), by reducing its shared_buffers parameter (currently %d) and/or its max_connections parameter (currently %d).\n" -"The PostgreSQL documentation contains more information about shared memory configuration." +"cannot add schema \"%s\" to extension \"%s\" because the schema contains the " +"extension" msgstr "" -"Cette erreur ne signifie *pas* que vous manquez d'espace disque. Elle\n" -"survient si tous les identifiants de m�moire partag� disponibles ont �t�\n" -"pris, auquel cas vous devez augmenter le param�tre SHMMIN de votre noyau, ou\n" -"parce que la limite maximum de la m�moire partag�e de votre syst�me a �t�\n" -"atteinte. Si vous ne pouvez pas augmenter la limite de la m�moire partag�e,\n" -"r�duisez la demande de m�moire partag�e de PostgreSQL (actuellement %lu\n" -"octets) en r�duisant le param�tre shared_buffers (actuellement %d) et/ou le\n" -"param�tre max_connections (actuellement %d).\n" -"La documentation de PostgreSQL contient plus d'informations sur la\n" -"configuration de la m�moire partag�e." - -#: port/sysv_shmem.c:431 -#: port/pg_shmem.c:431 -#, 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" +"ne peut pas ajouter le schem� � %s � � l'extension � %s � car le sch�ma\n" +"contient l'extension" -#: port/win32_sema.c:94 +#: commands/extension.c:3013 #, c-format -msgid "could not create semaphore: error code %d" -msgstr "n'a pas pu cr�er une s�maphore : code d'erreur %d" +msgid "%s is not a member of extension \"%s\"" +msgstr "%s n'est pas un membre de l'extension � %s �" -#: port/win32_sema.c:161 +#: commands/collationcmds.c:81 #, c-format -msgid "could not lock semaphore: error code %d" -msgstr "n'a pas pu verrouiller la s�maphore : code d'erreur %d" +msgid "collation attribute \"%s\" not recognized" +msgstr "attribut de collationnement � %s � non reconnu" -#: port/win32_sema.c:174 -#, c-format -msgid "could not unlock semaphore: error code %d" -msgstr "n'a pas pu d�verrouiller la s�maphore : code d'erreur %d" +#: commands/collationcmds.c:126 +msgid "parameter \"lc_collate\" must be specified" +msgstr "le param�tre � lc_collate � doit �tre sp�cifi�" -#: port/win32_sema.c:203 -#, c-format -msgid "could not try-lock semaphore: error code %d" -msgstr "n'a pas pu tenter le verrouillage de la s�maphore : code d'erreur %d" +#: commands/collationcmds.c:131 +msgid "parameter \"lc_ctype\" must be specified" +msgstr "le param�tre � lc_ctype � doit �tre sp�cifi�" -#: postmaster/autovacuum.c:359 +#: commands/collationcmds.c:177 #, 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:404 -msgid "autovacuum launcher started" -msgstr "lancement du processus autovacuum" - -#: postmaster/autovacuum.c:760 -msgid "autovacuum launcher shutting down" -msgstr "arr�t du processus autovacuum" +msgid "collation \"%s\" does not exist, skipping" +msgstr "le collationnement � %s � n'existe pas, poursuite du traitement" -#: postmaster/autovacuum.c:1394 +#: commands/collationcmds.c:237 commands/collationcmds.c:416 #, c-format -msgid "could not fork autovacuum worker process: %m" -msgstr "n'a pas pu ex�cuter le processus autovacuum worker : %m" +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 �" -#: postmaster/autovacuum.c:1595 +#: commands/collationcmds.c:249 commands/collationcmds.c:428 #, c-format -msgid "autovacuum: processing database \"%s\"" -msgstr "autovacuum : traitement de la base de donn�es � %s �" +msgid "collation \"%s\" already exists in schema \"%s\"" +msgstr "le collationnement � %s � existe d�j� dans le sch�ma � %s �" -#: postmaster/autovacuum.c:1998 +#: commands/comment.c:97 commands/seclabel.c:113 #, c-format -msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"" +msgid "\"%s\" is not a table, view, composite type, or foreign table" msgstr "" -"autovacuum : suppression de la table temporaire orpheline � %s.%s � dans la\n" -"base de donn�es � %s �" +"� %s � n'est ni une table, ni une vue, ni un type composite, ni une table " +"distante" -#: postmaster/autovacuum.c:2010 +#: 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 "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\"" -msgstr "" -"autovacuum : a trouv� la table temporaire orpheline � %s.%s � dans la base de\n" -"donn�es � %s �" +msgid "could not create directory \"%s\": %m" +msgstr "n'a pas pu cr�er le r�pertoire � %s � : %m" -#: postmaster/autovacuum.c:2280 +#: commands/tablespace.c:205 #, c-format -msgid "automatic vacuum of table \"%s.%s.%s\"" -msgstr "VACUUM automatique de la table � %s.%s.%s �" +msgid "could not stat directory \"%s\": %m" +msgstr "n'a pas pu lire les informations sur le r�pertoire � %s � : %m" -#: postmaster/autovacuum.c:2283 +#: commands/tablespace.c:214 #, c-format -msgid "automatic analyze of table \"%s.%s.%s\"" -msgstr "ANALYZE automatique de la table � %s.%s.%s �" +msgid "\"%s\" exists but is not a directory" +msgstr "� %s � existe mais n'est pas un r�pertoire" -#: postmaster/autovacuum.c:2761 -msgid "autovacuum not started because of misconfiguration" -msgstr "autovacuum non ex�cut� � cause d'une mauvaise configuration" +#: commands/tablespace.c:244 +#, c-format +msgid "permission denied to create tablespace \"%s\"" +msgstr "droit refus� pour cr�er le tablespace � %s �" -#: postmaster/autovacuum.c:2762 -msgid "Enable the \"track_counts\" option." -msgstr "Activez l'option � track_counts �." +#: commands/tablespace.c:246 +msgid "Must be superuser to create a tablespace." +msgstr "Doit �tre super-utilisateur pour cr�er un tablespace." -#: postmaster/bgwriter.c:472 -#, c-format -msgid "checkpoints are occurring too frequently (%d second apart)" -msgid_plural "checkpoints are occurring too frequently (%d seconds apart)" -msgstr[0] "" -"les points de v�rification (checkpoints) arrivent trop fr�quemment\n" -"(toutes les %d seconde)" -msgstr[1] "" -"les points de v�rification (checkpoints) arrivent trop fr�quemment\n" -"(toutes les %d secondes)" +#: commands/tablespace.c:262 +msgid "tablespace location cannot contain single quotes" +msgstr "le chemin du tablespace ne peut pas contenir de guillemets simples" -#: postmaster/bgwriter.c:476 -msgid "Consider increasing the configuration parameter \"checkpoint_segments\"." -msgstr "Consid�rez l'augmentation du param�tre � checkpoint_segments �." +#: commands/tablespace.c:272 +msgid "tablespace location must be an absolute path" +msgstr "le chemin du tablespace doit �tre un chemin absolu" -#: postmaster/bgwriter.c:588 +#: commands/tablespace.c:283 #, c-format -msgid "transaction log switch forced (archive_timeout=%d)" -msgstr "changement forc� du journal de transaction (archive_timeout=%d)" +msgid "tablespace location \"%s\" is too long" +msgstr "le chemin du tablespace � %s � est trop long" -#: postmaster/bgwriter.c:1044 -msgid "checkpoint request failed" -msgstr "�chec de la demande de point de v�rification" +#: commands/tablespace.c:293 commands/tablespace.c:857 +#, c-format +msgid "unacceptable tablespace name \"%s\"" +msgstr "nom inacceptable pour le tablespace � %s �" -#: postmaster/bgwriter.c:1045 -msgid "Consult recent messages in the server log for details." -msgstr "" -"Consultez les messages r�cents du serveur dans les journaux applicatifs pour\n" -"plus de d�tails." +#: commands/tablespace.c:295 commands/tablespace.c:858 +msgid "The prefix \"pg_\" is reserved for system tablespaces." +msgstr "Le pr�fixe � pg_ � est r�serv� pour les tablespaces syst�me." -#: postmaster/pgarch.c:158 +#: commands/tablespace.c:305 commands/tablespace.c:870 #, c-format -msgid "could not fork archiver: %m" -msgstr "n'a pas pu lancer le processus fils correspondant au processus d'archivage : %m" +msgid "tablespace \"%s\" already exists" +msgstr "le tablespace � %s � existe d�j�" -#: postmaster/pgarch.c:450 -msgid "archive_mode enabled, yet archive_command is not set" -msgstr "archive_mode activ�, cependant archive_command n'est pas configur�" +#: commands/tablespace.c:377 commands/tablespace.c:529 +#: replication/basebackup.c:169 replication/basebackup.c:756 +msgid "tablespaces are not supported on this platform" +msgstr "les tablespaces ne sont pas support�s sur cette plateforme" -#: postmaster/pgarch.c:465 +#: commands/tablespace.c:415 commands/tablespace.c:841 +#: commands/tablespace.c:908 commands/tablespace.c:1013 +#: commands/tablespace.c:1079 commands/tablespace.c:1217 +#: commands/tablespace.c:1417 #, c-format -msgid "transaction log file \"%s\" could not be archived: too many failures" -msgstr "le journal des transactions � %s � n'a pas pu �tre archiv� : trop d'�checs" +msgid "tablespace \"%s\" does not exist" +msgstr "le tablespace � %s � n'existe pas" -#: postmaster/pgarch.c:568 +#: commands/tablespace.c:421 #, c-format -msgid "archive command failed with exit code %d" -msgstr "�chec de la commande d'archivage avec un code de retour %d" +msgid "tablespace \"%s\" does not exist, skipping" +msgstr "le tablespace � %s � n'existe pas, poursuite du traitement" -#: postmaster/pgarch.c:570 -#: postmaster/pgarch.c:580 -#: postmaster/pgarch.c:587 -#: postmaster/pgarch.c:593 -#: postmaster/pgarch.c:602 +#: commands/tablespace.c:486 #, c-format -msgid "The failed archive command was: %s" -msgstr "La commande d'archivage qui a �chou� �tait : %s" +msgid "tablespace \"%s\" is not empty" +msgstr "le tablespace � %s � n'est pas vide" -#: postmaster/pgarch.c:577 +#: commands/tablespace.c:560 #, 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" +msgid "directory \"%s\" does not exist" +msgstr "le r�pertoire � %s � n'existe pas" -#: postmaster/pgarch.c:579 -#: postmaster/postmaster.c:2840 -msgid "See C include file \"ntstatus.h\" for a description of the hexadecimal value." -msgstr "" -"Voir le fichier d'en-t�te C � ntstatus.h � pour une description de la valeur\n" -"hexad�cimale." +#: commands/tablespace.c:561 +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." -#: postmaster/pgarch.c:584 +#: commands/tablespace.c:566 #, 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" +msgid "could not set permissions on directory \"%s\": %m" +msgstr "n'a pas pu configurer les droits du r�pertoire � %s � : %m" -#: postmaster/pgarch.c:591 +#: commands/tablespace.c:598 #, c-format -msgid "archive command was terminated by signal %d" -msgstr "la commande d'archivage a �t� termin�e par le signal %d" +msgid "directory \"%s\" already in use as a tablespace" +msgstr "r�pertoire � %s � d�j� en cours d'utilisation" -#: postmaster/pgarch.c:600 +#: commands/tablespace.c:613 commands/tablespace.c:777 #, c-format -msgid "archive command exited with unrecognized status %d" -msgstr "la commande d'archivage a quitt� avec le statut non reconnu %d" +msgid "could not remove symbolic link \"%s\": %m" +msgstr "n'a pas pu supprimer le lien symbolique � %s � : %m" -#: postmaster/pgarch.c:612 +#: commands/tablespace.c:623 #, c-format -msgid "archived transaction log file \"%s\"" -msgstr "journal des transactions archiv� � %s �" +msgid "could not create symbolic link \"%s\": %m" +msgstr "n'a pas pu cr�er le lien symbolique � %s � : %m" -#: postmaster/pgarch.c:661 +#: commands/tablespace.c:729 commands/tablespace.c:742 +#: commands/tablespace.c:766 #, 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" +msgid "could not remove directory \"%s\": %m" +msgstr "n'a pas pu supprimer le r�pertoire � %s � : %m" -#: postmaster/pgstat.c:328 +#: commands/tablespace.c:1084 #, c-format -msgid "could not resolve \"localhost\": %s" -msgstr "n'a pas pu r�soudre � localhost � : %s" - -#: postmaster/pgstat.c:351 -msgid "trying another address for the statistics collector" -msgstr "nouvelle tentative avec une autre adresse pour le r�cup�rateur de statistiques" +msgid "Tablespace \"%s\" does not exist." +msgstr "Le tablespace � %s � n'existe pas." -#: postmaster/pgstat.c:360 +#: commands/tablespace.c:1516 #, 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" +msgid "directories for tablespace %u could not be removed" +msgstr "les r�pertoires du tablespace %u n'ont pas pu �tre supprim�s" -#: postmaster/pgstat.c:372 -#, 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" +#: commands/tablespace.c:1518 +msgid "You can remove the directories manually if necessary." +msgstr "Vous pouvez supprimer les r�pertoires manuellement si n�cessaire." -#: postmaster/pgstat.c:383 +#: commands/schemacmds.c:82 commands/schemacmds.c:275 #, 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" +msgid "unacceptable schema name \"%s\"" +msgstr "nom de sch�ma � %s � inacceptable" -#: postmaster/pgstat.c:399 -#, 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" +#: commands/schemacmds.c:83 commands/schemacmds.c:276 +msgid "The prefix \"pg_\" is reserved for system schemas." +msgstr "Le pr�fixe � pg_ � est r�serv� pour les sch�mas syst�me." -#: postmaster/pgstat.c:420 -#, 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" +#: commands/schemacmds.c:178 catalog/objectaddress.c:298 +msgid "schema name cannot be qualified" +msgstr "le nom du sch�ma ne peut pas �tre qualifi�" -#: postmaster/pgstat.c:446 -#: postmaster/pgstat.c:2909 +#: commands/schemacmds.c:186 #, c-format -msgid "select() failed in statistics collector: %m" -msgstr "�chec du select() dans le r�cup�rateur de statistiques : %m" - -#: postmaster/pgstat.c:461 -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" +msgid "schema \"%s\" does not exist, skipping" +msgstr "le sch�ma � %s � n'existe pas, poursuite du traitement" -#: postmaster/pgstat.c:476 +#: commands/schemacmds.c:253 commands/schemacmds.c:322 +#: catalog/namespace.c:2610 catalog/namespace.c:3599 catalog/namespace.c:3602 #, 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:486 -msgid "incorrect test message transmission on socket for statistics collector" -msgstr "" -"transmission incorrecte du message de tests sur la socket du r�cup�rateur de\n" -"statistiques" +msgid "schema \"%s\" does not exist" +msgstr "le sch�ma � %s � n'existe pas" -#: postmaster/pgstat.c:509 +#: commands/schemacmds.c:259 catalog/pg_namespace.c:60 #, c-format -msgid "could not set statistics collector socket to nonblocking mode: %m" -msgstr "" -"n'a pas pu initialiser la socket du r�cup�rateur de statistiques dans le mode\n" -"non bloquant : %m" +msgid "schema \"%s\" already exists" +msgstr "le sch�ma � %s � existe d�j�" -#: postmaster/pgstat.c:519 -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" +#: commands/seclabel.c:58 +msgid "no security label providers have been loaded" +msgstr "aucun fournisseur de label de s�curit� n'a �t� charg�" -#: postmaster/pgstat.c:621 -#, c-format -msgid "could not fork statistics collector: %m" +#: commands/seclabel.c:62 +msgid "" +"must specify provider when multiple security label providers have been loaded" msgstr "" -"n'a pas pu lancer le processus fils correspondant au r�cup�rateur de\n" -"statistiques : %m" - -#: postmaster/pgstat.c:1151 -#: postmaster/pgstat.c:1175 -#: postmaster/pgstat.c:1206 -msgid "must be superuser to reset statistics counters" -msgstr "doit �tre super-utilisateur pour r�initialiser les compteurs statistiques" +"doit indiquer le fournisseur quand plusieurs fournisseurs de labels de " +"s�curit� sont charg�s" -#: postmaster/pgstat.c:1182 +#: commands/seclabel.c:80 #, c-format -msgid "unrecognized reset target: \"%s\"" -msgstr "cible reset non reconnu : � %s �" +msgid "security label provider \"%s\" is not loaded" +msgstr "le fournisseur � %s � de label de s�curit� n'est pas charg�" -#: postmaster/pgstat.c:1183 -msgid "Target must be \"bgwriter\"." -msgstr "La cible doit �tre � bgwriter �." +#: commands/portalcmds.c:61 commands/portalcmds.c:160 +#: commands/portalcmds.c:212 +msgid "invalid cursor name: must not be empty" +msgstr "nom de curseur invalide : il ne doit pas �tre vide" -#: postmaster/pgstat.c:2888 -#, c-format -msgid "poll() failed in statistics collector: %m" -msgstr "�chec du poll() dans le r�cup�rateur de statistiques : %m" +#: commands/portalcmds.c:415 +msgid "could not reposition held cursor" +msgstr "n'a pas pu repositionner le curseur d�tenu" -#: postmaster/pgstat.c:2933 +#: commands/aggregatecmds.c:103 #, c-format -msgid "could not read statistics message: %m" -msgstr "n'a pas pu lire le message des statistiques : %m" +msgid "aggregate attribute \"%s\" not recognized" +msgstr "l'attribut de l'agr�gat � %s � n'est pas reconnu" -#: postmaster/pgstat.c:3190 -#, c-format -msgid "could not open temporary statistics file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier temporaire des statistiques � %s � : %m" +#: commands/aggregatecmds.c:113 +msgid "aggregate stype must be specified" +msgstr "le type source de l'agr�gat doit �tre sp�cifi�" -#: postmaster/pgstat.c:3262 -#, c-format -msgid "could not write temporary statistics file \"%s\": %m" -msgstr "n'a pas pu �crire le fichier temporaire des statistiques � %s � : %m" +#: commands/aggregatecmds.c:117 +msgid "aggregate sfunc must be specified" +msgstr "la fonction source de l'agr�gat doit �tre sp�cifi�e" -#: postmaster/pgstat.c:3271 -#, c-format -msgid "could not close temporary statistics file \"%s\": %m" -msgstr "n'a pas pu fermer le fichier temporaire des statistiques � %s � : %m" +#: commands/aggregatecmds.c:134 +msgid "aggregate input type must be specified" +msgstr "le type de saisie de l'agr�gat doit �tre pr�cis�" -#: postmaster/pgstat.c:3279 -#, c-format -msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" +#: commands/aggregatecmds.c:159 +msgid "basetype is redundant with aggregate input type specification" msgstr "" -"n'a pas pu renommer le fichier temporaire des statistiques � %s � en\n" -"� %s � : %m" +"le type de base est redondant avec la sp�cification du type en entr�e de " +"l'agr�gat" -#: postmaster/pgstat.c:3379 -#: postmaster/pgstat.c:3608 +#: commands/aggregatecmds.c:191 #, c-format -msgid "could not open statistics file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier de statistiques � %s � : %m" +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" -#: postmaster/pgstat.c:3391 -#: postmaster/pgstat.c:3401 -#: postmaster/pgstat.c:3423 -#: postmaster/pgstat.c:3438 -#: postmaster/pgstat.c:3501 -#: postmaster/pgstat.c:3519 -#: postmaster/pgstat.c:3535 -#: postmaster/pgstat.c:3553 -#: postmaster/pgstat.c:3569 -#: postmaster/pgstat.c:3620 -#: postmaster/pgstat.c:3631 +#: commands/aggregatecmds.c:230 #, c-format -msgid "corrupted statistics file \"%s\"" -msgstr "fichier de statistiques � %s � corrompu" +msgid "aggregate %s(%s) does not exist, skipping" +msgstr "L'agr�gat %s(%s) n'existe pas, poursuite du traitement" -#: postmaster/pgstat.c:3925 -msgid "database hash table corrupted during cleanup --- abort" +#: commands/user.c:143 +msgid "SYSID can no longer be specified" +msgstr "SYSID ne peut plus �tre sp�cifi�" + +#: commands/user.c:284 +msgid "must be superuser to create superusers" +msgstr "doit �tre super-utilisateur pour cr�er des super-utilisateurs" + +#: commands/user.c:291 +msgid "must be superuser to create replication users" msgstr "" -"corruption de la table hach�e de la base de donn�es lors du lancement\n" -"--- annulation" +"doit �tre super-utilisateur pour cr�er des utilisateurs avec l'attribut " +"r�plication" -#: postmaster/postmaster.c:566 -#, c-format -msgid "%s: invalid argument for option -f: \"%s\"\n" -msgstr "%s : argument invalide pour l'option -f : � %s �\n" +#: commands/user.c:298 +msgid "permission denied to create role" +msgstr "droit refus� pour cr�er un r�le" -#: postmaster/postmaster.c:652 +#: commands/user.c:305 commands/user.c:1087 #, c-format -msgid "%s: invalid argument for option -t: \"%s\"\n" -msgstr "%s : argument invalide pour l'option -t : � %s �\n" +msgid "role name \"%s\" is reserved" +msgstr "le nom du r�le � %s � est r�serv�" -#: postmaster/postmaster.c:703 +#: commands/user.c:318 commands/user.c:1081 #, c-format -msgid "%s: invalid argument: \"%s\"\n" -msgstr "%s : argument invalide : � %s �\n" +msgid "role \"%s\" already exists" +msgstr "le r�le � %s � existe d�j�" -#: postmaster/postmaster.c:728 -#, 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" +#: commands/user.c:636 commands/user.c:842 commands/user.c:1321 +#: commands/user.c:1467 +msgid "must be superuser to alter superusers" +msgstr "doit �tre super-utilisateur pour modifier des super-utilisateurs" -#: postmaster/postmaster.c:733 -msgid "WAL archival (archive_mode=on) requires wal_level \"archive\" or \"hot_standby\"" +#: commands/user.c:643 +msgid "must be superuser to alter replication users" 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 �" +"doit �tre super-utilisateur pour modifier des utilisateurs ayant l'attribut " +"r�plication" -#: postmaster/postmaster.c:736 -msgid "WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or \"hot_standby\"" -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 �" +#: commands/user.c:659 commands/user.c:850 +msgid "permission denied" +msgstr "droit refus�" -#: postmaster/postmaster.c:744 +#: commands/user.c:878 +msgid "permission denied to drop role" +msgstr "droit refus� pour supprimer le r�le" + +#: commands/user.c:910 #, c-format -msgid "%s: invalid datetoken tables, please fix\n" -msgstr "%s : tables datetoken invalide, merci de corriger\n" +msgid "role \"%s\" does not exist, skipping" +msgstr "le r�le � %s � n'existe pas, poursuite du traitement" -#: postmaster/postmaster.c:850 -msgid "invalid list syntax for \"listen_addresses\"" -msgstr "syntaxe de liste invalide pour le param�tre � listen_addresses �" +#: commands/user.c:922 commands/user.c:926 +msgid "current user cannot be dropped" +msgstr "l'utilisateur actuel ne peut pas �tre supprim�" -#: postmaster/postmaster.c:871 +#: commands/user.c:930 +msgid "session user cannot be dropped" +msgstr "l'utilisateur de la session ne peut pas �tre supprim�" + +#: commands/user.c:941 +msgid "must be superuser to drop superusers" +msgstr "doit �tre super-utilisateur pour supprimer des super-utilisateurs" + +#: commands/user.c:954 #, c-format -msgid "could not create listen socket for \"%s\"" -msgstr "n'a pas pu cr�er le socket d'�coute pour � %s �" +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" -#: postmaster/postmaster.c:877 -msgid "could not create any TCP/IP sockets" -msgstr "n'a pas pu cr�er de socket TCP/IP" +#: commands/user.c:1071 +msgid "session user cannot be renamed" +msgstr "l'utilisateur de la session ne peut pas �tre renomm�" -#: postmaster/postmaster.c:928 -msgid "could not create Unix-domain socket" -msgstr "n'a pas pu cr�er le socket domaine Unix" +#: commands/user.c:1075 +msgid "current user cannot be renamed" +msgstr "l'utilisateur courant ne peut pas �tre renomm�" -#: postmaster/postmaster.c:936 -msgid "no socket created for listening" -msgstr "pas de socket cr�� pour l'�coute" +#: commands/user.c:1098 +msgid "must be superuser to rename superusers" +msgstr "doit �tre super-utilisateur pour renommer les super-utilisateurs" -#: postmaster/postmaster.c:962 -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" +#: commands/user.c:1105 +msgid "permission denied to rename role" +msgstr "droit refus� pour renommer le r�le" -#: postmaster/postmaster.c:1006 -#, 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" +#: commands/user.c:1126 +msgid "MD5 password cleared because of role rename" +msgstr "mot de passe MD5 effac� � cause du renommage du r�le" -#: postmaster/postmaster.c:1074 -#: utils/init/postinit.c:197 -msgid "could not load pg_hba.conf" -msgstr "n'a pas pu charger pg_hba.conf" +#: commands/user.c:1182 +msgid "column names cannot be included in GRANT/REVOKE ROLE" +msgstr "les noms de colonne ne peuvent pas �tre inclus dans GRANT/REVOKE ROLE" -#: postmaster/postmaster.c:1121 -#, c-format -msgid "%s: could not locate matching postgres executable" -msgstr "%s : n'a pas pu localiser l'ex�cutable postgres correspondant" +#: commands/user.c:1220 +msgid "permission denied to drop objects" +msgstr "droit refus� pour supprimer les objets" -#: postmaster/postmaster.c:1144 -#: utils/misc/tzparser.c:347 +#: commands/user.c:1247 commands/user.c:1256 +msgid "permission denied to reassign objects" +msgstr "droit refus� pour r�-affecter les objets" + +#: commands/user.c:1329 commands/user.c:1475 #, 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 "must have admin option on role \"%s\"" +msgstr "doit avoir l'option admin sur le r�le � %s �" + +#: commands/user.c:1346 +msgid "must be superuser to set grantor" +msgstr "doit �tre super-utilisateur pour configurer le � donneur de droits �" -#: postmaster/postmaster.c:1172 +#: commands/user.c:1371 #, c-format -msgid "data directory \"%s\" does not exist" -msgstr "le r�pertoire des donn�es � %s � n'existe pas" +msgid "role \"%s\" is a member of role \"%s\"" +msgstr "le r�le � %s � est un membre du r�le � %s �" -#: postmaster/postmaster.c:1177 +#: commands/user.c:1386 #, c-format -msgid "could not read permissions of directory \"%s\": %m" -msgstr "n'a pas pu lire les droits du r�pertoire � %s � : %m" +msgid "role \"%s\" is already a member of role \"%s\"" +msgstr "le r�le � %s � est d�j� un membre du r�le � %s �" -#: postmaster/postmaster.c:1185 +#: commands/user.c:1497 #, 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" +msgid "role \"%s\" is not a member of role \"%s\"" +msgstr "le r�le � %s � n'est pas un membre du r�le � %s �" -#: postmaster/postmaster.c:1201 +#: commands/foreigncmds.c:135 commands/foreigncmds.c:144 #, c-format -msgid "data directory \"%s\" has wrong ownership" -msgstr "le r�pertoire des donn�es � %s � a un mauvais propri�taire" +msgid "option \"%s\" not found" +msgstr "option � %s � non trouv�" -#: postmaster/postmaster.c:1203 -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." +#: commands/foreigncmds.c:154 +#, c-format +msgid "option \"%s\" provided more than once" +msgstr "option � %s � fournie plus d'une fois" -#: postmaster/postmaster.c:1223 +#: commands/foreigncmds.c:221 commands/foreigncmds.c:229 #, c-format -msgid "data directory \"%s\" has group or world access" +msgid "permission denied to change owner of foreign-data wrapper \"%s\"" msgstr "" -"le r�pertoire des donn�es � %s � est accessible par le groupe et/ou par les\n" -"autres" +"droit refus� pour modifier le propri�taire du wrapper de donn�es distantes � " +"%s �" -#: postmaster/postmaster.c:1225 -msgid "Permissions should be u=rwx (0700)." -msgstr "Les droits devraient �tre u=rwx (0700)." +#: commands/foreigncmds.c:223 +msgid "Must be superuser to change owner of a foreign-data wrapper." +msgstr "" +"Doit �tre super-utilisateur pour modifier le propri�taire du wrapper de\n" +"donn�es distantes." -#: postmaster/postmaster.c:1236 -#, 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" +#: commands/foreigncmds.c:231 +msgid "The owner of a foreign-data wrapper must be a superuser." msgstr "" -"%s : n'a pas pu trouver le syst�me de bases de donn�es\n" -"S'attendait � le trouver dans le r�pertoire � %s �,\n" -"mais n'a pas r�ussi � ouvrir le fichier � %s �: %s\n" +"Le propri�taire du wrapper de donn�es distantes doit �tre un super-" +"utilisateur." -#: postmaster/postmaster.c:1272 +#: commands/foreigncmds.c:265 commands/foreigncmds.c:636 +#: commands/foreigncmds.c:784 foreign/foreign.c:524 #, c-format -msgid "%s: could not open file \"%s\": %s\n" -msgstr "%s : n'a pas pu ouvrir le fichier � %s � : %s\n" +msgid "foreign-data wrapper \"%s\" does not exist" +msgstr "le wrapper de donn�es distantes � %s � n'existe pas" -#: postmaster/postmaster.c:1279 +#: commands/foreigncmds.c:292 catalog/aclchk.c:3873 catalog/aclchk.c:4555 #, c-format -msgid "%s: could not open log file \"%s/%s\": %s\n" -msgstr "%s : n'a pas pu ouvrir le journal applicatif � %s/%s � : %s\n" +msgid "foreign-data wrapper with OID %u does not exist" +msgstr "le wrapper de donn�es distantes d'OID %u n'existe pas" -#: postmaster/postmaster.c:1290 +#: commands/foreigncmds.c:366 commands/foreigncmds.c:962 +#: commands/foreigncmds.c:1050 commands/foreigncmds.c:1334 +#: foreign/foreign.c:544 #, c-format -msgid "%s: could not fork background process: %s\n" -msgstr "%s : n'a pas pu cr�er un processus fils : %s\n" +msgid "server \"%s\" does not exist" +msgstr "le serveur � %s � n'existe pas" -#: postmaster/postmaster.c:1312 +#: commands/foreigncmds.c:391 catalog/aclchk.c:3934 catalog/aclchk.c:4582 #, c-format -msgid "%s: could not dissociate from controlling TTY: %s\n" -msgstr "%s : n'a pas pu se dissocier du TTY contr�lant : %s\n" +msgid "foreign server with OID %u does not exist" +msgstr "le serveur distant d'OID %u n'existe pas" -#: postmaster/postmaster.c:1407 +#: commands/foreigncmds.c:418 #, c-format -msgid "select() failed in postmaster: %m" -msgstr "�chec de select() dans postmaster : %m" +msgid "function %s must return type \"fdw_handler\"" +msgstr "la fonction %s doit renvoyer le type � fdw_handler �" -#: postmaster/postmaster.c:1564 -#: postmaster/postmaster.c:1595 -msgid "incomplete startup packet" -msgstr "paquet de d�marrage incomplet" +#: commands/foreigncmds.c:513 +#, c-format +msgid "permission denied to create foreign-data wrapper \"%s\"" +msgstr "droit refus� pour la cr�ation du wrapper de donn�es distantes � %s �" -#: postmaster/postmaster.c:1576 -msgid "invalid length of startup packet" -msgstr "longueur invalide du paquet de d�marrage" +#: commands/foreigncmds.c:515 +msgid "Must be superuser to create a foreign-data wrapper." +msgstr "" +"Doit �tre super-utilisateur pour cr�er un wrapper de donn�es distantes." -#: postmaster/postmaster.c:1633 +#: commands/foreigncmds.c:526 #, 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" +msgid "foreign-data wrapper \"%s\" already exists" +msgstr "le wrapper de donn�es distantes � %s � existe d�j�" -#: postmaster/postmaster.c:1662 +#: commands/foreigncmds.c:626 #, c-format -msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" +msgid "permission denied to alter foreign-data wrapper \"%s\"" +msgstr "droit refus� pour modifier le wrapper de donn�es distantes � %s �" + +#: commands/foreigncmds.c:628 +msgid "Must be superuser to alter a foreign-data wrapper." msgstr "" -"Protocole non support�e de l'interface %u.%u : le serveur supporte de %u.0 �\n" -"%u.%u" +"Doit �tre super-utilisateur pour modifier un wrapper de donn�es distantes" -#: postmaster/postmaster.c:1713 -msgid "invalid value for boolean option \"replication\"" -msgstr "valeur invalide pour l'option bool�enne � replication �" +#: commands/foreigncmds.c:659 +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" -#: postmaster/postmaster.c:1733 -msgid "invalid startup packet layout: expected terminator as last byte" +#: commands/foreigncmds.c:673 +msgid "" +"changing the foreign-data wrapper validator can cause the options for " +"dependent objects to become invalid" msgstr "" -"configuration invalide du paquet de d�marrage : terminaison attendue comme\n" -"dernier octet" +"la modification du validateur du wrapper de donn�es distantes peut faire en\n" +"sorte que les options des objets d�pendants deviennent invalides" -#: postmaster/postmaster.c:1761 -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" +#: commands/foreigncmds.c:775 +#, c-format +msgid "permission denied to drop foreign-data wrapper \"%s\"" +msgstr "droit refus� pour supprimer le wrapper de donn�es distantes � %s �" -#: postmaster/postmaster.c:1818 -msgid "the database system is starting up" -msgstr "le syst�me de bases de donn�es se lance" +#: commands/foreigncmds.c:777 +msgid "Must be superuser to drop a foreign-data wrapper." +msgstr "" +"Doit �tre super-utilisateur pour supprimer un wrapper de donn�es distantes." -#: postmaster/postmaster.c:1823 -msgid "the database system is shutting down" -msgstr "le syst�me de base de donn�es s'arr�te" +#: commands/foreigncmds.c:789 +#, 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" -#: postmaster/postmaster.c:1828 -msgid "the database system is in recovery mode" -msgstr "le syst�me de bases de donn�es est en cours de restauration" +#: commands/foreigncmds.c:858 +#, c-format +msgid "server \"%s\" already exists" +msgstr "le serveur � %s � existe d�j�" -#: postmaster/postmaster.c:1895 +#: commands/foreigncmds.c:1054 #, c-format -msgid "wrong key in cancel request for process %d" -msgstr "mauvaise cl� dans la demande d'annulation pour le processus %d" +msgid "server \"%s\" does not exist, skipping" +msgstr "le serveur � %s � n'existe pas, poursuite du traitement" -#: postmaster/postmaster.c:1903 +#: commands/foreigncmds.c:1159 #, 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" +msgid "user mapping \"%s\" already exists for server %s" +msgstr "" +"la correspondance utilisateur � %s � existe d�j� dans le serveur � %s �" -#: postmaster/postmaster.c:2109 -msgid "received SIGHUP, reloading configuration files" -msgstr "a re�u SIGHUP, rechargement des fichiers de configuration" +#: commands/foreigncmds.c:1245 commands/foreigncmds.c:1350 +#, c-format +msgid "user mapping \"%s\" does not exist for the server" +msgstr "la correspondance utilisateur � %s � n'existe pas pour le serveur" -#: postmaster/postmaster.c:2132 -msgid "pg_hba.conf not reloaded" -msgstr "pg_hba.conf non lu" - -#: postmaster/postmaster.c:2175 -msgid "received smart shutdown request" -msgstr "a re�u une demande d'arr�t intelligent" - -#: postmaster/postmaster.c:2222 -msgid "received fast shutdown request" -msgstr "a re�u une demande d'arr�t rapide" +#: commands/foreigncmds.c:1337 +msgid "server does not exist, skipping" +msgstr "le serveur n'existe pas, poursuite du traitement" -#: postmaster/postmaster.c:2240 -msgid "aborting any active transactions" -msgstr "annulation des transactions actives" +#: commands/foreigncmds.c:1355 +#, 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" +"du traitement" -#: postmaster/postmaster.c:2269 -msgid "received immediate shutdown request" -msgstr "a re�u une demande d'arr�t imm�diat" +#: commands/vacuum.c:419 +msgid "oldest xmin is far in the past" +msgstr "le plus ancien xmin est loin dans le pass�" -#: postmaster/postmaster.c:2345 -#: postmaster/postmaster.c:2373 -msgid "startup process" -msgstr "processus de lancement" +#: commands/vacuum.c:420 +msgid "Close open transactions soon to avoid wraparound problems." +msgstr "" +"Fermez les transactions ouvertes rapidement pour �viter des probl�mes de\n" +"r�initialisation." -#: postmaster/postmaster.c:2348 -msgid "aborting startup due to startup process failure" -msgstr "annulation du d�marrage � cause d'un �chec dans le processus de lancement" +#: commands/vacuum.c:811 +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" -#: postmaster/postmaster.c:2407 -msgid "database system is ready to accept connections" -msgstr "le syst�me de bases de donn�es est pr�t pour accepter les connexions" +#: commands/vacuum.c:812 +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." -#: postmaster/postmaster.c:2462 -msgid "background writer process" -msgstr "processus d'�criture en t�che de fond" +#: commands/vacuum.c:919 +#, c-format +msgid "skipping vacuum of \"%s\" --- lock not available" +msgstr "ignore le vacuum de � %s � --- verrou non disponible" -#: postmaster/postmaster.c:2478 -msgid "WAL writer process" -msgstr "processus d'�criture des journaux de transaction" +#: commands/vacuum.c:945 +#, c-format +msgid "skipping \"%s\" --- only superuser can vacuum it" +msgstr "ignore � %s � --- seul le super-utilisateur peut ex�cuter un VACUUM" -#: postmaster/postmaster.c:2492 -msgid "WAL receiver process" -msgstr "processus de r�ception des journaux de transaction" +#: commands/vacuum.c:949 +#, c-format +msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" +msgstr "" +"ignore � %s � --- seul le super-utilisateur ou le propri�taire de la base de " +"donn�es\n" +"peuvent ex�cuter un VACUUM" -#: postmaster/postmaster.c:2507 -msgid "autovacuum launcher process" -msgstr "processus de l'autovacuum" +#: commands/vacuum.c:953 +#, 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" -#: postmaster/postmaster.c:2522 -msgid "archiver process" -msgstr "processus d'archivage" +#: commands/vacuum.c:970 +#, 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" -#: postmaster/postmaster.c:2538 -msgid "statistics collector process" -msgstr "processus de r�cup�ration des statistiques" +#: commands/async.c:568 +msgid "channel name cannot be empty" +msgstr "le nom du canal ne peut pas �tre vide" -#: postmaster/postmaster.c:2552 -msgid "system logger process" -msgstr "processus des journaux applicatifs" +#: commands/async.c:573 +msgid "channel name too long" +msgstr "nom du canal trop long" -#: postmaster/postmaster.c:2587 -#: postmaster/postmaster.c:2603 -#: postmaster/postmaster.c:2610 -#: postmaster/postmaster.c:2628 -msgid "server process" -msgstr "processus serveur" +#: commands/async.c:580 +msgid "payload string too long" +msgstr "cha�ne de charge trop longue" -#: postmaster/postmaster.c:2664 -msgid "terminating any other active server processes" -msgstr "arr�t des autres processus serveur actifs" +#: commands/async.c:765 +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" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2829 -#, c-format -msgid "%s (PID %d) exited with exit code %d" -msgstr "%s (PID %d) quitte avec le code de sortie %d" +#: commands/async.c:868 +msgid "too many notifications in the NOTIFY queue" +msgstr "trop de notifications dans la queue NOTIFY" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2838 +#: commands/async.c:1441 #, 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" +msgid "NOTIFY queue is %.0f%% full" +msgstr "la queue NOTIFY est pleine � %.0f%%" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2847 +#: commands/async.c:1443 #, 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" +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." -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2857 -#, c-format -msgid "%s (PID %d) was terminated by signal %d" -msgstr "%s (PID %d) a �t� arr�t� par le signal %d" +#: commands/async.c:1446 +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." -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2866 +#: commands/trigger.c:169 #, 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:3046 -msgid "abnormal database system shutdown" -msgstr "le syst�me de base de donn�es a �t� arr�t� anormalement" +msgid "\"%s\" is a table" +msgstr "� %s � est une table" -#: postmaster/postmaster.c:3084 -msgid "all server processes terminated; reinitializing" -msgstr "tous les processus serveur se sont arr�t�s, r�initialisation" +#: commands/trigger.c:171 +msgid "Tables cannot have INSTEAD OF triggers." +msgstr "Les tables ne peuvent pas avoir de triggers INSTEAD OF." -#: postmaster/postmaster.c:3256 +#: commands/trigger.c:182 commands/trigger.c:189 #, 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" +msgid "\"%s\" is a view" +msgstr "� %s � est une vue" -#: postmaster/postmaster.c:3298 -msgid "could not fork new process for connection: " -msgstr "n'a pas pu lancer le nouveau processus fils pour la connexion : " +#: commands/trigger.c:184 +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." -#: postmaster/postmaster.c:3412 -#, c-format -msgid "connection received: host=%s port=%s" -msgstr "connexion re�ue : h�te=%s port=%s" +#: commands/trigger.c:191 +msgid "Views cannot have TRUNCATE triggers." +msgstr "Les vues ne peuvent pas avoir de triggers TRUNCATE." -#: postmaster/postmaster.c:3417 -#, c-format -msgid "connection received: host=%s" -msgstr "connexion re�ue : h�te=%s" +#: commands/trigger.c:243 +msgid "TRUNCATE FOR EACH ROW triggers are not supported" +msgstr "les triggers TRUNCATE FOR EACH ROW ne sont pas support�s" -#: postmaster/postmaster.c:3684 -#, c-format -msgid "could not execute server process \"%s\": %m" -msgstr "n'a pas pu ex�cuter le processus serveur � %s � : %m" +#: commands/trigger.c:251 +msgid "INSTEAD OF triggers must be FOR EACH ROW" +msgstr "les triggers INSTEAD OF doivent �tre FOR EACH ROW" -#: postmaster/postmaster.c:4201 -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" +#: commands/trigger.c:255 +msgid "INSTEAD OF triggers cannot have WHEN conditions" +msgstr "les triggers INSTEAD OF ne peuvent pas avoir de conditions WHEN" -#: postmaster/postmaster.c:4442 -#, c-format -msgid "could not fork startup process: %m" -msgstr "n'a pas pu lancer le processus fils de d�marrage : %m" +#: commands/trigger.c:259 +msgid "INSTEAD OF triggers cannot have column lists" +msgstr "les triggers INSTEAD OF ne peuvent pas avoir de liste de colonnes" -#: postmaster/postmaster.c:4446 -#, c-format -msgid "could not fork background writer process: %m" +#: commands/trigger.c:303 +msgid "cannot use subquery in trigger WHEN condition" msgstr "" -"n'a pas pu cr�er un processus fils du processus d'�criture en t�che de\n" -"fond : %m" +"ne peut pas utiliser une sous-requ�te dans la condition WHEN d'un trigger" -#: postmaster/postmaster.c:4450 -#, c-format -msgid "could not fork WAL writer process: %m" +#: commands/trigger.c:307 +msgid "cannot use aggregate function in trigger WHEN condition" msgstr "" -"n'a pas pu cr�er un processus fils du processus d'�criture des journaux de\n" -"transaction : %m" +"ne peut pas utiliser la fonction d'agr�gat dans la condition WHEN d'un " +"trigger" -#: postmaster/postmaster.c:4454 -#, c-format -msgid "could not fork WAL receiver process: %m" +#: commands/trigger.c:311 +msgid "cannot use window function in trigger WHEN condition" msgstr "" -"n'a pas pu cr�er un processus fils de r�ception des journaux de\n" -"transactions : %m" - -#: postmaster/postmaster.c:4458 -#, c-format -msgid "could not fork process: %m" -msgstr "n'a pas pu lancer le processus fils : %m" - -#: postmaster/postmaster.c:4740 -#, 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:4772 -#, 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" +"ne peut pas utiliser la fonction window dans la condition WHEN d'un trigger" -#: postmaster/postmaster.c:4801 -#: postmaster/postmaster.c:4808 -#, 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" +#: commands/trigger.c:333 commands/trigger.c:346 +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" +"des colonnes" -#: postmaster/postmaster.c:4817 -#, c-format -msgid "could not remove file \"%s\": %s\n" -msgstr "n'a pas pu supprimer le fichier � %s � : %s\n" +#: commands/trigger.c:338 +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" -#: postmaster/postmaster.c:4834 -#, c-format -msgid "could not map view of backend variables: error code %d\n" +#: commands/trigger.c:351 +msgid "DELETE trigger's WHEN condition cannot reference NEW values" msgstr "" -"n'a pas pu ex�cuter MapViewOfFile sur les variables de configuration : code\n" -"d'erreur %d\n" +"la condition WHEN du trigger DELETE ne peut pas r�f�rencer les valeurs NEW" -#: postmaster/postmaster.c:4843 -#, c-format -msgid "could not unmap view of backend variables: error code %d\n" +#: commands/trigger.c:356 +msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns" msgstr "" -"n'a pas pu ex�cuter UnmapViewOfFile sur les variables de configuration : code\n" -"d'erreur %d\n" +"la condition WHEN d'un trigger BEFORE ne doit pas r�f�rencer les colonnes\n" +"syst�me avec NEW" -#: postmaster/postmaster.c:4850 +#: commands/trigger.c:401 #, c-format -msgid "could not close handle to backend parameter variables: error code %d\n" +msgid "changing return type of function %s from \"opaque\" to \"trigger\"" msgstr "" -"n'a pas pu fermer le lien vers les variables des param�tres du serveur :\n" -"code d'erreur %d\n" - -#: postmaster/postmaster.c:4993 -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:4998 -msgid "could not post child completion status\n" -msgstr "n'a pas pu poster le statut de fin de l'enfant\n" +"changement du type de retour de la fonction %s de � opaque � vers � trigger �" -#: postmaster/syslogger.c:387 +#: commands/trigger.c:408 #, c-format -msgid "select() failed in logger process: %m" -msgstr "�chec de select() dans le processus des journaux applicatifs : %m" +msgid "function %s must return type \"trigger\"" +msgstr "la fonction %s doit renvoyer le type � trigger �" -#: postmaster/syslogger.c:399 -#: postmaster/syslogger.c:973 +#: commands/trigger.c:518 commands/trigger.c:1256 #, c-format -msgid "could not read from logger pipe: %m" -msgstr "n'a pas pu lire � partir du tube des journaux applicatifs : %m" +msgid "trigger \"%s\" for relation \"%s\" already exists" +msgstr "le trigger � %s � de la relation � %s � existe d�j�" -#: postmaster/syslogger.c:446 -msgid "logger shutting down" -msgstr "arr�t en cours des journaux applicatifs" +#: commands/trigger.c:803 +msgid "Found referenced table's UPDATE trigger." +msgstr "Trigger UPDATE de la table r�f�renc�e trouv�." -#: postmaster/syslogger.c:490 -#: postmaster/syslogger.c:504 -#, c-format -msgid "could not create pipe for syslog: %m" -msgstr "n'a pas pu cr�er un tube pour syslog : %m" +#: commands/trigger.c:804 +msgid "Found referenced table's DELETE trigger." +msgstr "Trigger DELETE de la table r�f�renc�e trouv�." + +#: commands/trigger.c:805 +msgid "Found referencing table's trigger." +msgstr "Trigger de la table r�f�renc�e trouv�." -#: postmaster/syslogger.c:524 -#: postmaster/syslogger.c:1012 +#: commands/trigger.c:914 commands/trigger.c:930 #, c-format -msgid "could not create log file \"%s\": %m" -msgstr "n'a pas pu cr�er le journal applicatif � %s � : %m" +msgid "ignoring incomplete trigger group for constraint \"%s\" %s" +msgstr "ignore le groupe de trigger incomplet pour la contrainte � %s � %s" -#: postmaster/syslogger.c:539 +#: commands/trigger.c:942 #, c-format -msgid "could not fork system logger: %m" -msgstr "n'a pas pu lancer le processus des journaux applicatifs : %m" +msgid "converting trigger group into constraint \"%s\" %s" +msgstr "conversion du groupe de trigger en une contrainte � %s � %s" -#: postmaster/syslogger.c:570 +#: commands/trigger.c:1058 #, c-format -msgid "could not redirect stdout: %m" -msgstr "n'a pas pu rediriger la sortie (stdout) : %m" +msgid "trigger \"%s\" for table \"%s\" does not exist, skipping" +msgstr "" +"le trigger � %s � pour la table � %s � n'existe pas, poursuite du traitement" -#: postmaster/syslogger.c:575 -#: postmaster/syslogger.c:593 +#: commands/trigger.c:1185 commands/trigger.c:1298 commands/trigger.c:1409 #, c-format -msgid "could not redirect stderr: %m" -msgstr "n'a pas pu rediriger la sortie des erreurs (stderr) : %m" +msgid "trigger \"%s\" for table \"%s\" does not exist" +msgstr "le trigger � %s � de la table � %s � n'existe pas" -#: postmaster/syslogger.c:928 +#: commands/trigger.c:1377 #, c-format -msgid "could not write to log file: %s\n" -msgstr "n'a pas pu �crire dans le journal applicatif : %s\n" +msgid "permission denied: \"%s\" is a system trigger" +msgstr "droit refus� : � %s � est un trigger syst�me" -#: postmaster/syslogger.c:1083 -#: postmaster/syslogger.c:1141 +#: commands/trigger.c:1859 #, c-format -msgid "could not open new log file \"%s\": %m" -msgstr "n'a pas pu ouvrir le nouveau journal applicatif � %s � : %m" +msgid "trigger function %u returned null value" +msgstr "la fonction trigger %u a renvoy� la valeur NULL" -#: postmaster/syslogger.c:1095 -#: postmaster/syslogger.c:1153 -msgid "disabling automatic rotation (use SIGHUP to re-enable)" -msgstr "d�sactivation de la rotation automatique (utilisez SIGHUP pour la r�activer)" +#: commands/trigger.c:1918 commands/trigger.c:2117 commands/trigger.c:2301 +#: commands/trigger.c:2543 +msgid "BEFORE STATEMENT trigger cannot return a value" +msgstr "le trigger BEFORE STATEMENT ne peut pas renvoyer une valeur" -#: replication/libpqwalreceiver/libpqwalreceiver.c:99 -#, c-format -msgid "could not connect to the primary server: %s" -msgstr "n'a pas pu se connecter au serveur principal : %s" +#: commands/trigger.c:2605 executor/nodeLockRows.c:137 +#: executor/nodeModifyTable.c:366 executor/nodeModifyTable.c:588 +#: executor/execMain.c:1867 +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" -#: replication/libpqwalreceiver/libpqwalreceiver.c:111 +#: commands/trigger.c:4181 catalog/namespace.c:234 catalog/namespace.c:318 #, c-format -msgid "could not receive database system identifier and timeline ID from the primary server: %s" +msgid "cross-database references are not implemented: \"%s.%s.%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" +"les r�f�rences entre bases de donn�es ne sont pas impl�ment�es : � %s.%s.%s �" -#: replication/libpqwalreceiver/libpqwalreceiver.c:122 -msgid "invalid response from primary server" -msgstr "r�ponse invalide du serveur principal" +#: commands/trigger.c:4232 +#, c-format +msgid "constraint \"%s\" is not deferrable" +msgstr "la contrainte � %s � n'est pas DEFERRABLE" -#: replication/libpqwalreceiver/libpqwalreceiver.c:123 +#: commands/trigger.c:4255 #, 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." +msgid "constraint \"%s\" does not exist" +msgstr "la contrainte � %s � n'existe pas" -#: replication/libpqwalreceiver/libpqwalreceiver.c:138 -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" -"et le serveur en attente" +#: commands/operatorcmds.c:100 +msgid "=> is deprecated as an operator name" +msgstr "=> est un nom d'op�rateur obsol�te" -#: replication/libpqwalreceiver/libpqwalreceiver.c:139 -#, c-format -msgid "The primary's identifier is %s, the standby's identifier is %s." +#: commands/operatorcmds.c:101 +msgid "" +"This name may be disallowed altogether in future versions of PostgreSQL." msgstr "" -"L'identifiant du serveur principal est %s, l'identifiant du serveur en attente\n" -"est %s." +"Ce nom pourrait �tre interdit dans les prochaines versions de PostgreSQL." -#: replication/libpqwalreceiver/libpqwalreceiver.c:151 -#, c-format -msgid "timeline %u of the primary does not match recovery target timeline %u" -msgstr "" -"le timeline %u du serveur principal ne correspond pas au timeline %u de la\n" -"cible de restauration" +#: commands/operatorcmds.c:122 commands/operatorcmds.c:130 +msgid "SETOF type not allowed for operator argument" +msgstr "type SETOF non autoris� pour l'argument de l'op�rateur" -#: replication/libpqwalreceiver/libpqwalreceiver.c:163 +#: commands/operatorcmds.c:158 #, c-format -msgid "could not start WAL streaming: %s" -msgstr "n'a pas pu d�marrer l'envoi des WAL : %s" +msgid "operator attribute \"%s\" not recognized" +msgstr "l'attribut � %s � de l'op�rateur n'est pas reconnu" -#: replication/libpqwalreceiver/libpqwalreceiver.c:169 -msgid "streaming replication successfully connected to primary" -msgstr "r�plication de flux connect� avec succ�s au serveur principal" +#: commands/operatorcmds.c:168 +msgid "operator procedure must be specified" +msgstr "la proc�dure de l'op�rateur doit �tre sp�cifi�e" -#: replication/libpqwalreceiver/libpqwalreceiver.c:191 -msgid "socket not open" -msgstr "socket non ouvert" +#: commands/operatorcmds.c:179 +msgid "at least one of leftarg or rightarg must be specified" +msgstr "au moins un des arguments (le gauche ou le droit) doit �tre sp�cifi�" -#: replication/libpqwalreceiver/libpqwalreceiver.c:231 +#: commands/operatorcmds.c:228 #, c-format -msgid "select() failed: %m" -msgstr "�chec de select() : %m" +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" +"� float8 �" -#: replication/libpqwalreceiver/libpqwalreceiver.c:364 -#: replication/libpqwalreceiver/libpqwalreceiver.c:385 -#: replication/libpqwalreceiver/libpqwalreceiver.c:390 +#: commands/operatorcmds.c:267 #, 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:381 -msgid "replication terminated by primary server" -msgstr "r�plication termin�e par le serveur primaire" - -#: replication/walreceiver.c:138 -msgid "terminating walreceiver process due to administrator command" -msgstr "arr�t du processus walreceiver suite � la demande de l'administrateur" - -#: replication/walreceiver.c:287 -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" - -#: replication/walsender.c:116 -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" - -#: replication/walsender.c:278 -msgid "standby connections not allowed because wal_level=minimal" -msgstr "connexions standby non autoris�es car wal_level=minimal" +msgid "join estimator function %s must return type \"float8\"" +msgstr "" +"la fonction d'estimation de la jointure, de nom %s, doit renvoyer le type\n" +"� float8 �" -#: replication/walsender.c:300 +#: commands/operatorcmds.c:318 #, c-format -msgid "invalid standby query string: %s" -msgstr "cha�ne de requ�te invalide sur le serveur en attente : %s" +msgid "operator %s does not exist, skipping" +msgstr "l'op�rateur %s n'existe pas, poursuite du traitement" -#: replication/walsender.c:313 -#: replication/walsender.c:339 -msgid "unexpected EOF on standby connection" -msgstr "fin de fichier (EOF) inattendue de la connexion du serveur en attente" +#: commands/typecmds.c:169 +msgid "must be superuser to create a base type" +msgstr "doit �tre super-utilisateur pour cr�er un type de base" -#: replication/walsender.c:319 +#: commands/typecmds.c:224 commands/typecmds.c:806 commands/typecmds.c:1145 +#: commands/typecmds.c:1622 catalog/pg_type.c:396 catalog/pg_type.c:699 +#: catalog/heap.c:1029 #, c-format -msgid "invalid standby handshake message type %d" -msgstr "type %d du message de handshake du serveur en attente invalide" +msgid "type \"%s\" already exists" +msgstr "le type � %s � existe d�j�" -#: replication/walsender.c:360 +#: commands/typecmds.c:275 #, c-format -msgid "invalid standby closing message type %d" -msgstr "type %d du message de fermeture du serveur en attente invalide" +msgid "type attribute \"%s\" not recognized" +msgstr "attribut du type � %s � non reconnu" -#: replication/walsender.c:506 +#: commands/typecmds.c:329 #, c-format -msgid "number of requested standby connections exceeds max_wal_senders (currently %d)" -msgstr "" -"le nombre de connexions demand�es par le serveur en attente d�passe\n" -"max_wal_senders (actuellement %d)" +msgid "invalid type category \"%s\": must be simple ASCII" +msgstr "cat�gorie de type � %s � invalide : doit �tre de l'ASCII pur" -#: replication/walsender.c:578 -#: replication/walsender.c:640 +#: commands/typecmds.c:348 #, 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�" +msgid "array element type cannot be %s" +msgstr "le type d'�l�ment tableau ne peut pas �tre %s" -#: replication/walsender.c:611 +#: commands/typecmds.c:380 #, c-format -msgid "could not read from log file %u, segment %u, offset %u, length %lu: %m" -msgstr "" -"n'a pas pu lire le journal de transactions %u, segment %u au d�calage %u,\n" -"longueur %lu : %m" +msgid "alignment \"%s\" not recognized" +msgstr "alignement � %s � non reconnu" -#: rewrite/rewriteDefine.c:108 -#: rewrite/rewriteDefine.c:756 +#: commands/typecmds.c:397 #, 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:282 -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:283 -msgid "Use views or triggers instead." -msgstr "Utilisez � la place des vues ou des triggers." - -#: rewrite/rewriteDefine.c:287 -msgid "rule actions on NEW are not implemented" -msgstr "les actions de la r�gle sur NEW ne sont pas impl�ment�es" +msgid "storage \"%s\" not recognized" +msgstr "stockage � %s � non reconnu" -#: rewrite/rewriteDefine.c:288 -msgid "Use triggers instead." -msgstr "Utilisez des triggers � la place." +#: commands/typecmds.c:408 +msgid "type input function must be specified" +msgstr "le type d'entr�e de la fonction doit �tre sp�cifi�" -#: rewrite/rewriteDefine.c:301 -msgid "INSTEAD NOTHING rules on SELECT are not implemented" -msgstr "les r�gles INSTEAD NOTHING sur SELECT ne sont pas impl�ment�es" +#: commands/typecmds.c:412 +msgid "type output function must be specified" +msgstr "le type de sortie de la fonction doit �tre sp�cifi�" -#: rewrite/rewriteDefine.c:302 -msgid "Use views instead." -msgstr "Utilisez les vues � la place." +#: commands/typecmds.c:417 +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" -#: rewrite/rewriteDefine.c:310 -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" +#: commands/typecmds.c:440 +#, 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" -#: rewrite/rewriteDefine.c:322 -msgid "rules on SELECT must have action INSTEAD SELECT" -msgstr "les r�gles sur SELECT doivent avoir une action INSTEAD SELECT" +#: commands/typecmds.c:447 +#, c-format +msgid "type input function %s must return type %s" +msgstr "le type d'entr�e de la fonction %s doit �tre %s" -#: rewrite/rewriteDefine.c:330 -msgid "event qualifications are not implemented for rules on SELECT" +#: commands/typecmds.c:457 +#, c-format +msgid "changing return type of function %s from \"opaque\" to \"cstring\"" msgstr "" -"les qualifications d'�v�nements ne sont pas impl�ment�es pour les r�gles sur\n" -"SELECT" +"changement du type de retour de la fonction %s d'� opaque � vers � cstring �" -#: rewrite/rewriteDefine.c:355 +#: commands/typecmds.c:464 #, c-format -msgid "\"%s\" is already a view" -msgstr "� %s � est d�j� une vue" +msgid "type output function %s must return type \"cstring\"" +msgstr "le type de sortie de la fonction %s doit �tre � cstring �" -#: rewrite/rewriteDefine.c:379 +#: commands/typecmds.c:473 #, 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 �" +msgid "type receive function %s must return type %s" +msgstr "la fonction receive du type %s doit renvoyer le type %s" -#: rewrite/rewriteDefine.c:404 +#: commands/typecmds.c:482 #, 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" +msgid "type send function %s must return type \"bytea\"" +msgstr "la fonction send du type %s doit renvoyer le type � bytea �" -#: rewrite/rewriteDefine.c:411 +#: commands/typecmds.c:687 #, 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" - -#: rewrite/rewriteDefine.c:413 -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." +msgid "\"%s\" is not a domain" +msgstr "� %s � n'est pas un domaine" -#: rewrite/rewriteDefine.c:418 +#: commands/typecmds.c:827 #, 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" +msgid "\"%s\" is not a valid base type for a domain" +msgstr "� %s � n'est pas un type de base valide pour un domaine" -#: rewrite/rewriteDefine.c:424 -#, 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" +#: commands/typecmds.c:909 +msgid "multiple default expressions" +msgstr "multiples expressions par d�faut" -#: rewrite/rewriteDefine.c:451 -msgid "cannot have multiple RETURNING lists in a rule" -msgstr "ne peut pas avoir plusieurs listes RETURNING dans une r�gle" +#: commands/typecmds.c:973 commands/typecmds.c:982 +msgid "conflicting NULL/NOT NULL constraints" +msgstr "contraintes NULL/NOT NULL en conflit" -#: rewrite/rewriteDefine.c:456 -msgid "RETURNING lists are not supported in conditional rules" -msgstr "les listes RETURNING ne sont pas support�s dans des r�gles conditionnelles" +#: commands/typecmds.c:1001 commands/typecmds.c:1984 +msgid "unique constraints not possible for domains" +msgstr "contraintes uniques impossible pour les domaines" -#: rewrite/rewriteDefine.c:460 -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" +#: commands/typecmds.c:1007 commands/typecmds.c:1990 +msgid "primary key constraints not possible for domains" +msgstr "contraintes de cl� primaire impossible pour les domaines" -#: rewrite/rewriteDefine.c:539 -msgid "SELECT rule's target list has too many entries" -msgstr "la liste cible de la r�gle SELECT a trop d'entr�es" +#: commands/typecmds.c:1013 commands/typecmds.c:1996 +msgid "exclusion constraints not possible for domains" +msgstr "contraintes d'exclusion impossible pour les domaines" -#: rewrite/rewriteDefine.c:540 -msgid "RETURNING list has too many entries" -msgstr "la liste RETURNING a trop d'entr�es" +#: commands/typecmds.c:1019 commands/typecmds.c:2002 +msgid "foreign key constraints not possible for domains" +msgstr "contraintes de cl� �trang�re impossible pour les domaines" -#: rewrite/rewriteDefine.c:556 -msgid "cannot convert relation containing dropped columns to view" -msgstr "ne peut pas convertir la relation contenant les colonnes supprim�es de la vue" +#: commands/typecmds.c:1028 commands/typecmds.c:2011 +msgid "specifying constraint deferrability not supported for domains" +msgstr "" +"sp�cifier des contraintes d�ferrantes n'est pas support� par les domaines" -#: rewrite/rewriteDefine.c:561 +#: commands/typecmds.c:1332 #, c-format -msgid "SELECT rule's target entry %d has different column name from \"%s\"" +msgid "changing argument type of function %s from \"opaque\" to \"cstring\"" msgstr "" -"l'entr�e cible de la r�gle SELECT %d a des noms de colonnes diff�rents �\n" -"partir de � %s �" +"changement du type d'argument de la fonction %s d'� opaque � � � cstring �" -#: rewrite/rewriteDefine.c:567 +#: 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 catalog/pg_aggregate.c:331 parser/parse_func.c:288 +#: parser/parse_func.c:299 parser/parse_func.c:1481 #, 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 �" +msgid "function %s does not exist" +msgstr "la fonction %s n'existe pas" -#: rewrite/rewriteDefine.c:569 +#: commands/typecmds.c:1383 #, 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 �" +msgid "changing argument type of function %s from \"opaque\" to %s" +msgstr "changement du type d'argument de la fonction %s d'� opaque � � %s" -#: rewrite/rewriteDefine.c:584 +#: commands/typecmds.c:1482 #, 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 �" +msgid "typmod_in function %s must return type \"integer\"" +msgstr "la fonction typmod_in %s doit renvoyer le type � entier �" -#: rewrite/rewriteDefine.c:586 +#: commands/typecmds.c:1509 #, 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 �" - -#: rewrite/rewriteDefine.c:594 -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:595 -msgid "RETURNING list has too few entries" -msgstr "la liste RETURNING n'a pas assez d'entr�es" - -#: rewrite/rewriteHandler.c:495 -msgid "cannot have RETURNING lists in multiple rules" -msgstr "ne peut pas avoir des listes RETURNING dans plusieurs r�gles" +msgid "typmod_out function %s must return type \"cstring\"" +msgstr "la fonction typmod_out %s doit renvoyer le type � cstring �" -#: rewrite/rewriteHandler.c:796 -#: rewrite/rewriteHandler.c:814 +#: commands/typecmds.c:1536 #, c-format -msgid "multiple assignments to same column \"%s\"" -msgstr "affectations multiples pour la m�me colonne � %s �" +msgid "type analyze function %s must return type \"boolean\"" +msgstr "la fonction analyze du type %s doit renvoyer le type � boolean �" -#: rewrite/rewriteHandler.c:1417 -#: rewrite/rewriteHandler.c:1740 +#: commands/typecmds.c:1836 #, 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 �" +msgid "column \"%s\" of table \"%s\" contains null values" +msgstr "la colonne � %s � de la table � %s � contient des valeurs NULL" -#: rewrite/rewriteHandler.c:1778 +#: commands/typecmds.c:2082 #, 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:1780 -msgid "You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." +msgid "" +"column \"%s\" of table \"%s\" contains values that violate the new constraint" msgstr "" -"Vous avez besoin d'une r�gle ON INSERT DO INSTEAD sans condition avec une\n" -"clause RETURNING." +"la colonne � %s � de la table � %s � contient des valeurs violant la\n" +"nouvelle contrainte" -#: rewrite/rewriteHandler.c:1785 +#: commands/typecmds.c:2287 #, 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:1787 -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." +msgid "%s is not a domain" +msgstr "%s n'est pas un domaine" -#: rewrite/rewriteHandler.c:1792 +#: commands/typecmds.c:2321 catalog/pg_constraint.c:654 #, c-format -msgid "cannot perform DELETE RETURNING on relation \"%s\"" -msgstr "ne peut pas ex�cuter DELETE RETURNING sur la relation � %s �" +msgid "constraint \"%s\" for domain \"%s\" already exists" +msgstr "la contrainte � %s � du domaine � %s � existe d�j�" -#: rewrite/rewriteHandler.c:1794 -msgid "You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." +#: commands/typecmds.c:2369 commands/typecmds.c:2378 +msgid "cannot use table references in domain check constraint" msgstr "" -"Vous avez besoin d'une r�gle ON DELETE DO INSTEAD sans condition avec une\n" -"clause RETURNING." - -#: rewrite/rewriteHandler.c:1892 -msgid "cannot insert into a view" -msgstr "ne peut pas ins�rer dans une vue" - -#: rewrite/rewriteHandler.c:1893 -msgid "You need an unconditional ON INSERT DO INSTEAD rule." -msgstr "Vous avez besoin d'une r�gle ON INSERT DO INSTEAD." +"ne peut pas utiliser les r�f�rences de table dans la contrainte de\n" +"v�rification du domaine" -#: rewrite/rewriteHandler.c:1898 -msgid "cannot update a view" -msgstr "ne peut pas mettre � jour une vue" +#: commands/typecmds.c:2386 catalog/heap.c:2501 +msgid "cannot use subquery in check constraint" +msgstr "" +"ne peut pas utiliser une sous-requ�te dans la contrainte de v�rification" -#: rewrite/rewriteHandler.c:1899 -msgid "You need an unconditional ON UPDATE DO INSTEAD rule." -msgstr "Vous avez besoin d'une r�gle non conditionnelle ON UPDATE DO INSTEAD." +#: commands/typecmds.c:2390 catalog/heap.c:2505 +msgid "cannot use aggregate function in check constraint" +msgstr "" +"ne peut pas utiliser une fonction d'aggr�gat dans une contrainte de " +"v�rification" -#: rewrite/rewriteHandler.c:1904 -msgid "cannot delete from a view" -msgstr "ne peut pas supprimer � partir d'une vue" +#: commands/typecmds.c:2394 catalog/heap.c:2509 +msgid "cannot use window function in check constraint" +msgstr "" +"ne peut pas utiliser une fonction window dans une contrainte de v�rification" -#: rewrite/rewriteHandler.c:1905 -msgid "You need an unconditional ON DELETE DO INSTEAD rule." -msgstr "Vous avez besoin d'une r�gle inconditionnelle ON DELETE DO INSTEAD." +#: commands/typecmds.c:2608 commands/typecmds.c:2680 commands/typecmds.c:2919 +#, c-format +msgid "%s is a table's row type" +msgstr "� %s � est du type ligne de table" -#: rewrite/rewriteManip.c:1009 -msgid "conditional utility statements are not implemented" -msgstr "les instructions conditionnelles ne sont pas impl�ment�es" +#: commands/typecmds.c:2610 commands/typecmds.c:2682 commands/typecmds.c:2921 +msgid "Use ALTER TABLE instead." +msgstr "Utilisez ALTER TABLE � la place." -#: rewrite/rewriteManip.c:1174 -msgid "WHERE CURRENT OF on a view is not implemented" -msgstr "WHERE CURRENT OF n'est pas impl�ment� sur une vue" +#: commands/typecmds.c:2617 commands/typecmds.c:2689 commands/typecmds.c:2838 +#, c-format +msgid "cannot alter array type %s" +msgstr "ne peut pas modifier le type array %s" -#: rewrite/rewriteRemove.c:66 +#: commands/typecmds.c:2619 commands/typecmds.c:2691 commands/typecmds.c:2840 #, 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" +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." -#: utils/cache/typcache.c:331 +#: commands/typecmds.c:2905 #, c-format -msgid "type %s is not composite" -msgstr "le type %s n'est pas un type composite" +msgid "type \"%s\" already exists in schema \"%s\"" +msgstr "le type � %s � existe d�j� dans le sch�ma � %s �" -#: utils/cache/typcache.c:345 -msgid "record type has not been registered" -msgstr "le type d'enregistrement n'a pas �t� enregistr�" +#: commands/tsearchcmds.c:117 commands/tsearchcmds.c:1044 +#, c-format +msgid "function %s should return type %s" +msgstr "la fonction %s doit renvoyer le type %s" + +#: commands/tsearchcmds.c:189 +msgid "must be superuser to create text search parsers" +msgstr "" +"doit �tre super-utilisateur pour cr�er des analyseurs de recherche plein " +"texte" -#: utils/cache/lsyscache.c:2234 -#: utils/cache/lsyscache.c:2267 -#: utils/cache/lsyscache.c:2300 -#: utils/cache/lsyscache.c:2333 +#: commands/tsearchcmds.c:237 #, c-format -msgid "type %s is only a shell" -msgstr "le type %s est seulement un shell" +msgid "text search parser parameter \"%s\" not recognized" +msgstr "param�tre de l'analyseur de recherche plein texte � %s � non reconnu" + +#: commands/tsearchcmds.c:247 +msgid "text search parser start method is required" +msgstr "la m�thode start de l'analyseur de recherche plein texte est requise" -#: utils/cache/lsyscache.c:2239 +#: commands/tsearchcmds.c:252 +msgid "text search parser gettoken method is required" +msgstr "" +"la m�thode gettoken de l'analyseur de recherche plein texte est requise" + +#: commands/tsearchcmds.c:257 +msgid "text search parser end method is required" +msgstr "la m�thode end l'analyseur de recherche de texte est requise" + +#: commands/tsearchcmds.c:262 +msgid "text search parser lextypes method is required" +msgstr "" +"la m�thode lextypes de l'analyseur de recherche plein texte est requise" + +#: commands/tsearchcmds.c:297 +msgid "must be superuser to drop text search parsers" +msgstr "" +"doit �tre super-utilisateur pour supprimer des analyseurs de recherche " +"plein\n" +"texte" + +#: commands/tsearchcmds.c:320 catalog/namespace.c:1906 #, c-format -msgid "no input function available for type %s" -msgstr "aucune fonction en entr�e disponible pour le type %s" +msgid "text search parser \"%s\" does not exist" +msgstr "l'analyseur de recherche plein texte � %s � n'existe pas" -#: utils/cache/lsyscache.c:2272 +#: commands/tsearchcmds.c:326 #, c-format -msgid "no output function available for type %s" -msgstr "aucune fonction en sortie disponible pour le type %s" +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/tsearchcmds.c:381 +msgid "must be superuser to rename text search parsers" +msgstr "" +"doit �tre super-utilisateur pour renommer les analyseurs de recherche plein\n" +"texte" -#: utils/cache/lsyscache.c:2305 -#: utils/adt/arrayfuncs.c:1282 +#: commands/tsearchcmds.c:399 #, c-format -msgid "no binary input function available for type %s" -msgstr "aucune fonction d'entr�e binaire disponible pour le type %s" +msgid "text search parser \"%s\" already exists" +msgstr "l'analyseur de recherche plein texte � %s � existe d�j�" -#: utils/cache/lsyscache.c:2338 -#: utils/adt/arrayfuncs.c:1504 +#: commands/tsearchcmds.c:525 #, c-format -msgid "no binary output function available for type %s" -msgstr "aucune fonction de sortie binaire disponible pour le type %s" +msgid "text search template \"%s\" does not accept options" +msgstr "le mod�le de recherche plein texte � %s � n'accepte pas d'options" -#: utils/cache/plancache.c:589 -msgid "cached plan must not change result type" -msgstr "le plan en cache ne doit pas modifier le type en r�sultat" +#: commands/tsearchcmds.c:598 +msgid "text search template is required" +msgstr "le mod�le de la recherche plein texte est requis" -#: utils/cache/relcache.c:4299 +#: commands/tsearchcmds.c:667 #, 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" +msgid "text search dictionary \"%s\" already exists" +msgstr "le dictionnaire de recherche plein texte � %s � existe d�j�" -#: utils/cache/relcache.c:4301 -msgid "Continuing anyway, but there's something wrong." -msgstr "Continue malgr� tout, mais quelque chose s'est mal pass�." +#: commands/tsearchcmds.c:769 catalog/namespace.c:2029 +#, c-format +msgid "text search dictionary \"%s\" does not exist" +msgstr "le dictionnaire de recherche plein texte � %s � n'existe pas" -#: utils/cache/relmapper.c:454 -msgid "cannot PREPARE a transaction that modified relation mapping" +#: commands/tsearchcmds.c:775 +#, c-format +msgid "text search dictionary \"%s\" does not exist, skipping" msgstr "" -"ne peut pas pr�parer (PREPARE) une transaction qui a modifi� la correspondance\n" -"de relation" +"le dictionnaire de recherche plein texte � %s � n'existe pas, poursuite du\n" +"traitement" + +#: commands/tsearchcmds.c:1108 +msgid "must be superuser to create text search templates" +msgstr "" +"doit �tre super-utilisateur pour cr�er des mod�les de recherche plein texte" -#: utils/cache/relmapper.c:596 -#: utils/cache/relmapper.c:702 +#: commands/tsearchcmds.c:1145 #, 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" +msgid "text search template parameter \"%s\" not recognized" +msgstr "param�tre de mod�le de recherche plein texte � %s � non reconnu" -#: utils/cache/relmapper.c:609 +#: commands/tsearchcmds.c:1155 +msgid "text search template lexize method is required" +msgstr "la m�thode lexize du mod�le de recherche plein texte est requise" + +#: commands/tsearchcmds.c:1193 +msgid "must be superuser to rename text search templates" +msgstr "" +"doit �tre super-utilisateur pour renommer les mod�les de recherche plein " +"texte" + +#: commands/tsearchcmds.c:1212 #, 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" +msgid "text search template \"%s\" already exists" +msgstr "le mod�le de recherche plein texte � %s � existe d�j�" -#: utils/cache/relmapper.c:619 +#: commands/tsearchcmds.c:1281 +msgid "must be superuser to drop text search templates" +msgstr "" +"doit �tre super-utilisateur pour supprimer des mod�les de recherche plein " +"texte" + +#: commands/tsearchcmds.c:1304 catalog/namespace.c:2153 #, c-format -msgid "relation mapping file \"%s\" contains invalid data" -msgstr "le fichier de correspondance des relations � %s � contient des donn�es invalides" +msgid "text search template \"%s\" does not exist" +msgstr "le mod�le de recherche plein texte � %s � n'existe pas" -#: utils/cache/relmapper.c:629 +#: commands/tsearchcmds.c:1310 #, c-format -msgid "relation mapping file \"%s\" contains incorrect checksum" +msgid "text search template \"%s\" does not exist, skipping" msgstr "" -"le fichier de correspondance des relations � %s � contient une somme de\n" -"contr�le incorrecte" +"le mod�le de recherche plein texte � %s � n'existe pas, poursuite du " +"traitement" -#: utils/cache/relmapper.c:741 +#: commands/tsearchcmds.c:1508 #, 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" +msgid "text search configuration parameter \"%s\" not recognized" +msgstr "param�tre de configuration de recherche plein texte � %s � non reconnu" -#: utils/cache/relmapper.c:754 -#, 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" +#: commands/tsearchcmds.c:1515 +msgid "cannot specify both PARSER and COPY options" +msgstr "ne peut pas sp�cifier � la fois PARSER et COPY" -#: utils/cache/relmapper.c:760 +#: commands/tsearchcmds.c:1543 +msgid "text search parser is required" +msgstr "l'analyseur de la recherche plein texte est requis" + +#: commands/tsearchcmds.c:1652 #, 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" +msgid "text search configuration \"%s\" already exists" +msgstr "la configuration de recherche plein texte � %s � existe d�j�" -#: utils/sort/logtape.c:213 +#: commands/tsearchcmds.c:1759 #, 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" +msgid "text search configuration \"%s\" does not exist, skipping" +msgstr "" +"la configuration de recherche plein texte � %s � n'existe pas, poursuite du\n" +"traitement" -#: utils/sort/logtape.c:215 -msgid "Perhaps out of disk space?" -msgstr "Peut-�tre manquez-vous de place disque ?" +#: commands/tsearchcmds.c:1981 +#, c-format +msgid "token type \"%s\" does not exist" +msgstr "le type de jeton � %s � n'existe pas" -#: utils/sort/logtape.c:232 +#: commands/tsearchcmds.c:2203 #, 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" +msgid "mapping for token type \"%s\" does not exist" +msgstr "la correspondance pour le type de jeton � %s � n'existe pas" -#: utils/sort/tuplesort.c:2806 +#: commands/tsearchcmds.c:2209 #, c-format -msgid "could not create unique index \"%s\"" -msgstr "n'a pas pu cr�er l'index unique � %s �" +msgid "mapping for token type \"%s\" does not exist, skipping" +msgstr "" +"la correspondance pour le type de jeton � %s � n'existe pas, poursuite du\n" +"traitement" -#: utils/sort/tuplesort.c:2808 +#: commands/tsearchcmds.c:2362 commands/tsearchcmds.c:2473 #, c-format -msgid "Key %s is duplicated." -msgstr "La cl� %s est dupliqu�e." +msgid "invalid parameter list format: \"%s\"" +msgstr "format de liste de param�tres invalide : � %s �" -#: utils/mmgr/aset.c:409 +#: commands/alter.c:413 #, c-format -msgid "Failed while creating memory context \"%s\"." -msgstr "�chec lors de la cr�ation du contexte m�moire � %s �." +msgid "must be superuser to set schema of %s" +msgstr "doit �tre super-utilisateur pour configurer le sch�ma de %s" -#: utils/mmgr/aset.c:588 -#: utils/mmgr/aset.c:771 -#: utils/mmgr/aset.c:977 +#: commands/alter.c:441 #, c-format -msgid "Failed on request of size %lu." -msgstr "�chec d'une requ�te de taille %lu." +msgid "%s already exists in schema \"%s\"" +msgstr "%s existe d�j� dans le sch�ma � %s �" -#: utils/mmgr/portalmem.c:207 +#: foreign/foreign.c:198 #, c-format -msgid "cursor \"%s\" already exists" -msgstr "le curseur � %s � existe d�j�" +msgid "user mapping not found for \"%s\"" +msgstr "correspondance utilisateur non trouv�e pour � %s �" -#: utils/mmgr/portalmem.c:211 +#: foreign/foreign.c:321 #, c-format -msgid "closing existing cursor \"%s\"" -msgstr "fermeture du curseur existant � %s �" +msgid "foreign-data wrapper \"%s\" has no handler" +msgstr "le wrapper de donn�es distantes � %s � n'a pas de gestionnaire" -#: utils/mmgr/portalmem.c:422 +#: foreign/foreign.c:498 #, c-format -msgid "cannot drop active portal \"%s\"" -msgstr "ne peut pas supprimer le portail actif � %s �" +msgid "invalid option \"%s\"" +msgstr "option � %s � invalide" -#: utils/mmgr/portalmem.c:627 -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" +#: foreign/foreign.c:499 +#, c-format +msgid "Valid options in this context are: %s" +msgstr "Les options valides dans ce contexte sont %s" -#: utils/adt/xml.c:135 -msgid "unsupported XML feature" -msgstr "fonctionnalit� XML non support�e" +#: regex/regc_pg_locale.c:258 +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" -#: utils/adt/xml.c:136 -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." +#: nodes/nodeFuncs.c:114 nodes/nodeFuncs.c:140 parser/parse_coerce.c:1671 +#: parser/parse_coerce.c:1688 parser/parse_coerce.c:1750 +#: parser/parse_expr.c:1638 parser/parse_oper.c:948 parser/parse_func.c:367 +#, 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" -#: utils/adt/xml.c:137 -msgid "You need to rebuild PostgreSQL using --with-libxml." -msgstr "Vous devez recompiler PostgreSQL en utilisant --with-libxml." +#: executor/nodeSubplan.c:302 executor/nodeSubplan.c:341 +#: executor/nodeSubplan.c:968 +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" -#: utils/adt/xml.c:156 -#: utils/mb/mbutils.c:476 -#, c-format -msgid "invalid encoding name \"%s\"" -msgstr "nom d'encodage � %s � invalide" +#: executor/nodeWindowAgg.c:1238 +msgid "frame starting offset must not be null" +msgstr "l'offset de d�but de frame ne doit pas �tre NULL" -#: utils/adt/xml.c:402 -#: utils/adt/xml.c:407 -msgid "invalid XML comment" -msgstr "commentaire XML invalide" +#: executor/nodeWindowAgg.c:1251 +msgid "frame starting offset must not be negative" +msgstr "l'offset de d�but de frame ne doit pas �tre n�gatif" -#: utils/adt/xml.c:536 -msgid "not an XML document" -msgstr "pas un document XML" +#: executor/nodeWindowAgg.c:1264 +msgid "frame ending offset must not be null" +msgstr "l'offset de fin de frame ne doit pas �tre NULL" -#: utils/adt/xml.c:689 -#: utils/adt/xml.c:712 -msgid "invalid XML processing instruction" -msgstr "instruction de traitement XML invalide" +#: executor/nodeWindowAgg.c:1277 +msgid "frame ending offset must not be negative" +msgstr "l'offset de fin de frame ne doit pas �tre n�gatif" -#: utils/adt/xml.c:690 +#: executor/nodeWindowAgg.c:1851 executor/nodeAgg.c:1730 #, 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 �." +msgid "aggregate %u needs to have compatible input type and transition type" +msgstr "" +"L'agr�gat %u a besoin d'avoir un type en entr�e compatible avec le type en\n" +"transition" -#: utils/adt/xml.c:713 -msgid "XML processing instruction cannot contain \"?>\"." -msgstr "l'instruction de traitement XML ne peut pas contenir � ?> �." +#: executor/functions.c:195 +#, c-format +msgid "could not determine actual type of argument declared %s" +msgstr "n'a pas pu d�terminer le type actuel de l'argument d�clar� %s" -#: utils/adt/xml.c:792 -msgid "xmlvalidate is not implemented" -msgstr "xmlvalidate n'est pas impl�ment�" +#. translator: %s is a SQL statement name +#: executor/functions.c:295 +#, c-format +msgid "%s is not allowed in a SQL function" +msgstr "%s n'est pas autoris� dans une fonction SQL" -#: utils/adt/xml.c:877 -msgid "could not initialize XML library" -msgstr "n'a pas pu initialiser la biblioth�que XML" +#. 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 "%s n'est pas autoris� dans une fonction non volatile" -#: utils/adt/xml.c:878 +#: executor/functions.c:408 #, c-format -msgid "libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u." +msgid "" +"could not determine actual result type for function declared to return type " +"%s" msgstr "" -"libxml2 a un type de caract�re incompatible : sizeof(char)=%u,\n" -"sizeof(xmlChar)=%u." +"n'a pas pu d�terminer le type du r�sultat actuel pour la fonction d�clarant\n" +"renvoyer le type %s" -#: utils/adt/xml.c:1417 -msgid "Invalid character value." -msgstr "Valeur invalide pour le caract�re." +#: executor/functions.c:1146 +#, c-format +msgid "SQL function \"%s\" statement %d" +msgstr "fonction SQL � %s �, instruction %d" -#: utils/adt/xml.c:1420 -msgid "Space required." -msgstr "Espace requis." +#: executor/functions.c:1162 catalog/pg_proc.c:916 +#, c-format +msgid "SQL function \"%s\"" +msgstr "Fonction SQL � %s �" -#: utils/adt/xml.c:1423 -msgid "standalone accepts only 'yes' or 'no'." -msgstr "la version autonome accepte seulement 'yes' et 'no'." +#: executor/functions.c:1172 +#, c-format +msgid "SQL function \"%s\" during startup" +msgstr "fonction SQL � %s � lors du lancement" -#: utils/adt/xml.c:1426 -msgid "Malformed declaration: missing version." -msgstr "D�claration mal form�e : version manquante." +#: 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 "" +"le type de retour ne correspond pas � la fonction d�clarant renvoyer %s" -#: utils/adt/xml.c:1429 -msgid "Missing encoding in text declaration." -msgstr "Encodage manquant dans la d�claration du texte." +#: executor/functions.c:1334 +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." -#: utils/adt/xml.c:1432 -msgid "Parsing XML declaration: '?>' expected." -msgstr "Analyse de la d�claration XML : � ?> � attendu." +#: executor/functions.c:1370 +msgid "Final statement must return exactly one column." +msgstr "L'instruction finale doit renvoyer exactement une colonne." -#: utils/adt/xml.c:1435 +#: executor/functions.c:1382 #, c-format -msgid "Unrecognized libxml error code: %d." -msgstr "code d'erreur libxml inconnu : %d" +msgid "Actual return type is %s." +msgstr "Le code de retour r�el est %s." -#: utils/adt/xml.c:1688 -#: utils/adt/date.c:217 -msgid "date out of range" -msgstr "date en dehors des limites" +#: executor/functions.c:1495 +msgid "Final statement returns too many columns." +msgstr "L'instruction finale renvoie beaucoup trop de colonnes." -#: utils/adt/xml.c:1689 -msgid "XML does not support infinite date values." -msgstr "XML ne supporte pas les valeurs infinies de date." +#: executor/functions.c:1528 +#, 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." -#: utils/adt/xml.c:1711 -#: utils/adt/xml.c:1718 -#: utils/adt/xml.c:1738 -#: utils/adt/xml.c:1745 -#: 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:2956 -#: utils/adt/formatting.c:2988 -#: utils/adt/formatting.c:3056 -#: 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 en dehors des limites" +#: executor/functions.c:1558 +msgid "Final statement returns too few columns." +msgstr "L'instruction finale renvoie trop peu de colonnes." -#: utils/adt/xml.c:1712 -#: utils/adt/xml.c:1739 -msgid "XML does not support infinite timestamp values." -msgstr "XML ne supporte pas les valeurs infinies de timestamp." +#: executor/functions.c:1607 +#, 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" -#: utils/adt/xml.c:2123 -msgid "invalid query" -msgstr "requ�te invalide" +#: executor/nodeModifyTable.c:82 executor/nodeModifyTable.c:92 +#: executor/nodeModifyTable.c:109 executor/nodeModifyTable.c:117 +#: executor/execQual.c:837 executor/execQual.c:854 executor/execQual.c:1014 +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" -#: utils/adt/xml.c:3352 -msgid "invalid array for XML namespace mapping" -msgstr "tableau invalide pour la correspondance de l'espace de nom XML" +#: executor/nodeModifyTable.c:83 +msgid "Query has too many columns." +msgstr "La requ�te a trop de colonnes." -#: utils/adt/xml.c:3353 -msgid "The array must be two-dimensional with length of the second axis equal to 2." +#: executor/nodeModifyTable.c:93 executor/execQual.c:855 +#, c-format +msgid "Table has type %s at ordinal position %d, but query expects %s." msgstr "" -"Le tableau doit avoir deux dimensions avec une longueur de 2 pour le\n" -"deuxi�me axe." +"La table a le type %s � la position ordinale %d alors que la requ�te attend " +"%s." -#: utils/adt/xml.c:3377 -msgid "empty XPath expression" -msgstr "expression XPath vide" +#: executor/nodeModifyTable.c:110 +#, c-format +msgid "Query provides a value for a dropped column at ordinal position %d." +msgstr "" +"La requ�te fournit une valeur pour une colonne supprim�e � la position\n" +"ordinale %d." -#: utils/adt/xml.c:3425 -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" +#: executor/nodeModifyTable.c:118 +msgid "Query has too few columns." +msgstr "La requ�te n'a pas assez de colonnes." -#: utils/adt/xml.c:3432 -#, 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 �" +#: executor/nodeLimit.c:253 +msgid "OFFSET must not be negative" +msgstr "OFFSET ne doit pas �tre n�gatif" -#: utils/adt/acl.c:164 -#: utils/adt/name.c:87 -msgid "identifier too long" -msgstr "identifiant trop long" +#: executor/nodeLimit.c:280 +msgid "LIMIT must not be negative" +msgstr "LIMIT ne doit pas �tre n�gative" -#: utils/adt/acl.c:165 -#: utils/adt/name.c:88 +#: executor/execMain.c:999 #, c-format -msgid "Identifier must be less than %d characters." -msgstr "L'identifiant doit faire moins de %d caract�res." +msgid "cannot change sequence \"%s\"" +msgstr "ne peut pas modifier la s�quence � %s �" -#: utils/adt/acl.c:251 +#: executor/execMain.c:1005 #, c-format -msgid "unrecognized key word: \"%s\"" -msgstr "mot cl� non reconnu : � %s �" +msgid "cannot change TOAST relation \"%s\"" +msgstr "ne peut pas modifier la relation TOAST � %s �" -#: utils/adt/acl.c:252 -msgid "ACL key word must be \"group\" or \"user\"." -msgstr "le mot cl� ACL doit �tre soit � group � soit � user �." +#: executor/execMain.c:1015 +#, c-format +msgid "cannot insert into view \"%s\"" +msgstr "ne peut pas ins�rer dans la vue � %s �" -#: utils/adt/acl.c:257 -msgid "missing name" -msgstr "nom manquant" +#: executor/execMain.c:1017 +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." -#: utils/adt/acl.c:258 -msgid "A name must follow the \"group\" or \"user\" key word." -msgstr "Un nom doit suivre le mot cl� � group � ou � user �." +#: executor/execMain.c:1023 +#, c-format +msgid "cannot update view \"%s\"" +msgstr "ne peut pas mettre � jour la vue � %s �" -#: utils/adt/acl.c:264 -msgid "missing \"=\" sign" -msgstr "signe � = � manquant" +#: executor/execMain.c:1025 +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." -#: utils/adt/acl.c:317 +#: executor/execMain.c:1031 #, c-format -msgid "invalid mode character: must be one of \"%s\"" -msgstr "mode caract�re invalide : doit faire partie de � %s �" +msgid "cannot delete from view \"%s\"" +msgstr "ne peut pas supprimer � partir de la vue � %s �" -#: utils/adt/acl.c:339 -msgid "a name must follow the \"/\" sign" -msgstr "un nom doit suivre le signe � / �" +#: executor/execMain.c:1033 +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." -#: utils/adt/acl.c:347 +#: executor/execMain.c:1043 #, c-format -msgid "defaulting grantor to user ID %u" -msgstr "par d�faut, le � donneur de droits � devient l'utilisateur d'identifiant %u" +msgid "cannot change foreign table \"%s\"" +msgstr "ne peut pas modifier la table distante � %s �" -#: utils/adt/acl.c:538 -msgid "ACL array contains wrong data type" -msgstr "le tableau ACL contient un type de donn�es incorrect" +#: executor/execMain.c:1049 +#, c-format +msgid "cannot change relation \"%s\"" +msgstr "ne peut pas modifier la relation � %s �" -#: utils/adt/acl.c:542 -msgid "ACL arrays must be one-dimensional" -msgstr "les tableaux d'ACL doivent avoir une dimension" +#: executor/execMain.c:1073 +#, c-format +msgid "cannot lock rows in sequence \"%s\"" +msgstr "ne peut pas verrouiller les lignes dans la s�quence � %s �" -#: utils/adt/acl.c:546 -msgid "ACL arrays must not contain null values" -msgstr "les tableaux d'ACL ne doivent pas contenir de valeurs NULL" +#: executor/execMain.c:1080 +#, c-format +msgid "cannot lock rows in TOAST relation \"%s\"" +msgstr "ne peut pas verrouiller les lignes dans la relation TOAST � %s �" -#: utils/adt/acl.c:570 -msgid "extra garbage at the end of the ACL specification" -msgstr "donn�es superflues � la fin de la sp�cification de l'ACL" +#: executor/execMain.c:1087 +#, c-format +msgid "cannot lock rows in view \"%s\"" +msgstr "ne peut pas verrouiller les lignes dans la vue � %s �" -#: utils/adt/acl.c:1127 -msgid "grant options cannot be granted back to your own grantor" -msgstr "les options grant ne peuvent pas �tre rendues � votre propre donateur" +#: executor/execMain.c:1094 +#, c-format +msgid "cannot lock rows in foreign table \"%s\"" +msgstr "ne peut pas verrouiller la table distante � %s �" -#: utils/adt/acl.c:1188 -msgid "dependent privileges exist" -msgstr "des privil�ges d�pendants existent" +#: executor/execMain.c:1100 +#, c-format +msgid "cannot lock rows in relation \"%s\"" +msgstr "n'a pas pu verrouiller les lignes dans la relation � %s �" -#: utils/adt/acl.c:1189 -msgid "Use CASCADE to revoke them too." -msgstr "Utilisez CASCADE pour les r�voquer aussi." +#: executor/execMain.c:1571 +#, 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 �" -#: utils/adt/acl.c:1468 -msgid "aclinsert is no longer supported" -msgstr "aclinsert n'est plus support�" +#: executor/execMain.c:1583 +#, 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 �" -#: utils/adt/acl.c:1478 -msgid "aclremove is no longer supported" -msgstr "aclremove n'est plus support�" +#: executor/nodeMergejoin.c:1604 +msgid "RIGHT JOIN is only supported with merge-joinable join conditions" +msgstr "" +"RIGHT JOIN est support� seulement avec les conditions de jointures MERGE" + +#: executor/nodeMergejoin.c:1624 +msgid "FULL JOIN is only supported with merge-joinable join conditions" +msgstr "" +"FULL JOIN est support� seulement avec les conditions de jointures MERGE" -#: utils/adt/acl.c:1564 -#: utils/adt/acl.c:1618 +#: executor/execUtils.c:1308 #, c-format -msgid "unrecognized privilege type: \"%s\"" -msgstr "type de droit non reconnu : � %s �" +msgid "could not create exclusion constraint \"%s\"" +msgstr "n'a pas pu cr�er la contrainte d'exclusion � %s �" -#: utils/adt/acl.c:3364 -#: utils/adt/regproc.c:118 -#: utils/adt/regproc.c:139 -#: utils/adt/regproc.c:289 +#: executor/execUtils.c:1310 #, c-format -msgid "function \"%s\" does not exist" -msgstr "la fonction � %s � n'existe pas" +msgid "Key %s conflicts with key %s." +msgstr "La cl� %s est en conflit avec la cl� %s." -#: utils/adt/acl.c:4635 +#: executor/execUtils.c:1315 #, c-format -msgid "must be member of role \"%s\"" -msgstr "doit �tre un membre du r�le � %s �" +msgid "conflicting key value violates exclusion constraint \"%s\"" +msgstr "la valeur d'une cl� en conflit rompt la contrainte d'exclusion � %s �" -#: utils/adt/array_userfuncs.c:48 -msgid "could not determine input data types" -msgstr "n'a pas pu d�terminer les types de donn�es en entr�e" +#: executor/execUtils.c:1317 +#, c-format +msgid "Key %s conflicts with existing key %s." +msgstr "La cl� %s est en conflit avec la cl� existante %s." -#: utils/adt/array_userfuncs.c:82 -msgid "neither input type is an array" -msgstr "aucun type de donn�es n'est un tableau" +#: executor/spi.c:210 +msgid "transaction left non-empty SPI stack" +msgstr "transaction gauche non vide dans la pile SPI" -#: utils/adt/array_userfuncs.c:103 -#: utils/adt/array_userfuncs.c:113 -#: utils/adt/arrayfuncs.c:1251 -#: utils/adt/float.c:1101 -#: utils/adt/float.c:1160 -#: utils/adt/float.c:2711 -#: utils/adt/float.c:2727 -#: utils/adt/int.c:622 -#: utils/adt/int.c:651 -#: utils/adt/int.c:672 -#: utils/adt/int.c:692 -#: utils/adt/int.c:714 -#: utils/adt/int.c:743 -#: utils/adt/int.c:757 -#: utils/adt/int.c:772 -#: utils/adt/int.c:911 -#: utils/adt/int.c:932 -#: utils/adt/int.c:959 -#: utils/adt/int.c:999 -#: utils/adt/int.c:1020 -#: utils/adt/int.c:1047 -#: utils/adt/int.c:1078 -#: utils/adt/int.c:1141 -#: utils/adt/int8.c:1213 -#: utils/adt/numeric.c:2062 -#: utils/adt/numeric.c:2071 -#: utils/adt/varbit.c:1098 -#: utils/adt/varbit.c:1483 -#: utils/adt/varlena.c:942 -#: utils/adt/varlena.c:1915 -msgid "integer out of range" -msgstr "entier en dehors des limites" +#: executor/spi.c:211 executor/spi.c:275 +msgid "Check for missing \"SPI_finish\" calls." +msgstr "V�rifiez les appels manquants � � SPI_finish �." -#: utils/adt/array_userfuncs.c:121 -msgid "argument must be empty or one-dimensional array" -msgstr "l'argument doit �tre vide ou doit �tre un tableau � une dimension" +#: executor/spi.c:274 +msgid "subtransaction left non-empty SPI stack" +msgstr "sous-transaction gauche non vide dans la pile SPI" -#: 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 "ne peut pas concat�ner des tableaux non compatibles" +#: executor/spi.c:1137 +msgid "cannot open multi-query plan as cursor" +msgstr "ne peut pas ouvrir le plan � plusieurs requ�tes comme curseur" -#: utils/adt/array_userfuncs.c:225 +#. translator: %s is name of a SQL command, eg INSERT +#: executor/spi.c:1142 #, c-format -msgid "Arrays with element types %s and %s are not compatible for concatenation." -msgstr "" -"Les tableaux avec les types d'�l�ment %s et %s ne sont pas compatibles\n" -"pour la concat�nation." +msgid "cannot open %s query as cursor" +msgstr "ne peut pas ouvrir la requ�te %s comme curseur" -#: utils/adt/array_userfuncs.c:264 -#, c-format -msgid "Arrays of %d and %d dimensions are not compatible for concatenation." -msgstr "" -"Les tableaux de dimensions %d et %d ne sont pas compatiblee pour la\n" -"concat�nation." +#: executor/spi.c:1233 parser/analyze.c:2213 +msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE n'est pas support�" -#: utils/adt/array_userfuncs.c:301 -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." +#: executor/spi.c:1234 parser/analyze.c:2214 +msgid "Scrollable cursors must be READ ONLY." +msgstr "Les curseurs d�pla�ables doivent �tre en lecture seule (READ ONLY)." -#: utils/adt/array_userfuncs.c:330 -#: utils/adt/array_userfuncs.c:358 -msgid "Arrays with differing dimensions are not compatible for concatenation." -msgstr "" -"Les tableaux de dimensions diff�rentes ne sont pas compatibles pour\n" -"une concat�nation." +#: executor/spi.c:2157 +#, c-format +msgid "SQL statement \"%s\"" +msgstr "instruction SQL � %s �" -#: utils/adt/array_userfuncs.c:424 -#: utils/adt/arrayfuncs.c:1214 -#: utils/adt/arrayfuncs.c:2886 -#: utils/adt/arrayfuncs.c:4566 +#: executor/nodeHashjoin.c:814 executor/nodeHashjoin.c:844 #, c-format -msgid "invalid number of dimensions: %d" -msgstr "nombre de dimensions invalides : %d" +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" -#: utils/adt/array_userfuncs.c:484 -msgid "could not determine input data type" -msgstr "n'a pas pu d�terminer le type de donn�es date en entr�e" +#: executor/nodeHashjoin.c:879 executor/nodeHashjoin.c:885 +#, c-format +msgid "could not write to hash-join temporary file: %m" +msgstr "n'a pas pu �crire le fichier temporaire de la jointure h�ch�e : %m" -#: utils/adt/arrayfuncs.c:211 -#: utils/adt/arrayfuncs.c:223 -msgid "missing dimension value" -msgstr "valeur de la dimension manquant" +#: executor/nodeHashjoin.c:919 executor/nodeHashjoin.c:929 +#, 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" -#: utils/adt/arrayfuncs.c:233 -msgid "missing \"]\" in array dimensions" -msgstr "� ] � dans les dimensions manquant" +#: executor/execCurrent.c:75 +#, c-format +msgid "cursor \"%s\" is not a SELECT query" +msgstr "le curseur � %s � n'est pas une requ�te SELECT" -#: utils/adt/arrayfuncs.c:241 -#: utils/adt/arrayfuncs.c:2411 -#: utils/adt/arrayfuncs.c:2439 -#: utils/adt/arrayfuncs.c:2454 -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" +#: executor/execCurrent.c:81 +#, c-format +msgid "cursor \"%s\" is held from a previous transaction" +msgstr "le curseur � %s � est d�tenu par une transaction pr�c�dente" -#: utils/adt/arrayfuncs.c:253 -#: utils/adt/arrayfuncs.c:279 -msgid "array value must start with \"{\" or dimension information" +#: executor/execCurrent.c:113 +#, c-format +msgid "cursor \"%s\" has multiple FOR UPDATE/SHARE references to table \"%s\"" msgstr "" -"la valeur du tableau doit commencer avec � { � ou avec l'information de la\n" -"dimension" +"le curseur � %s � a plusieurs r�f�rences FOR UPDATE/SHARE pour la table � %s " +"�" -#: utils/adt/arrayfuncs.c:267 -msgid "missing assignment operator" -msgstr "op�rateur d'affectation manquant" +#: executor/execCurrent.c:122 +#, 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 �" -#: utils/adt/arrayfuncs.c:284 -#: utils/adt/arrayfuncs.c:290 -msgid "array dimensions incompatible with array literal" -msgstr "les dimensions du tableau sont incompatibles avec le tableau lit�ral" +#: executor/execCurrent.c:132 executor/execCurrent.c:178 +#, c-format +msgid "cursor \"%s\" is not positioned on a row" +msgstr "le curseur � %s � n'est pas positionn� sur une ligne" -#: utils/adt/arrayfuncs.c:420 -#: utils/adt/arrayfuncs.c:435 -#: utils/adt/arrayfuncs.c:444 -#: utils/adt/arrayfuncs.c:458 -#: utils/adt/arrayfuncs.c:478 -#: utils/adt/arrayfuncs.c:506 -#: utils/adt/arrayfuncs.c:511 -#: utils/adt/arrayfuncs.c:551 -#: utils/adt/arrayfuncs.c:572 -#: utils/adt/arrayfuncs.c:591 -#: utils/adt/arrayfuncs.c:701 -#: utils/adt/arrayfuncs.c:710 -#: utils/adt/arrayfuncs.c:740 -#: utils/adt/arrayfuncs.c:755 -#: utils/adt/arrayfuncs.c:808 +#: executor/execCurrent.c:165 #, c-format -msgid "malformed array literal: \"%s\"" -msgstr "tableau lit�ral mal form� : � %s �" +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 �" -#: utils/adt/arrayfuncs.c:847 -#: utils/adt/arrayfuncs.c:1448 -#: utils/adt/arrayfuncs.c:2770 -#: utils/adt/arrayfuncs.c:2918 -#: utils/adt/arrayfuncs.c:4666 -#: utils/adt/arrayutils.c:93 -#: utils/adt/arrayutils.c:102 -#: utils/adt/arrayutils.c:109 +#: executor/execCurrent.c:230 executor/execQual.c:1126 #, c-format -msgid "array size exceeds the maximum allowed (%d)" -msgstr "la taille du tableau d�passe le maximum permis (%d)" +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)" -#: utils/adt/arrayfuncs.c:1225 -msgid "invalid array flags" -msgstr "drapeaux de tableau invalides" +#: executor/execCurrent.c:242 executor/execQual.c:1138 +#, c-format +msgid "no value found for parameter %d" +msgstr "aucune valeur trouv�e pour le param�tre %d" -#: utils/adt/arrayfuncs.c:1233 -msgid "wrong element type" -msgstr "mauvais type d'�l�ment" +#: executor/execQual.c:316 executor/execQual.c:344 +msgid "array subscript in assignment must not be null" +msgstr "l'indice du tableau dans l'affectation ne doit pas �tre NULL" -#: utils/adt/arrayfuncs.c:1422 +#: executor/execQual.c:637 executor/execQual.c:4019 #, 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:1878 -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:2051 -#: utils/adt/arrayfuncs.c:2073 -#: utils/adt/arrayfuncs.c:2107 -#: utils/adt/arrayfuncs.c:2393 -#: utils/adt/arrayfuncs.c:4546 -#: utils/adt/arrayfuncs.c:4578 -#: utils/adt/arrayfuncs.c:4595 -msgid "wrong number of array subscripts" -msgstr "mauvais nombre d'indices du tableau" +msgid "attribute %d has wrong type" +msgstr "l'attribut %d a un type invalide" -#: utils/adt/arrayfuncs.c:2056 -#: utils/adt/arrayfuncs.c:2149 -#: utils/adt/arrayfuncs.c:2444 -msgid "array subscript out of range" -msgstr "indice du tableau en dehors de l'�chelle" +#: executor/execQual.c:638 executor/execQual.c:4020 +#, 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." -#: utils/adt/arrayfuncs.c:2061 -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" +#: executor/execQual.c:838 +#, 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." -#: utils/adt/arrayfuncs.c:2347 -msgid "updates on slices of fixed-length arrays not implemented" +#: executor/execQual.c:1015 executor/execQual.c:1612 +#, c-format +msgid "Physical storage mismatch on dropped attribute at ordinal position %d." msgstr "" -"les mises � jour de morceaux des tableaux � longueur fixe ne sont pas\n" -"impl�ment�es" - -#: utils/adt/arrayfuncs.c:2383 -#: utils/adt/arrayfuncs.c:2470 -msgid "source array too small" -msgstr "tableau source trop petit" +"Le stockage physique ne correspond pas � l'attribut supprim� � la position\n" +"ordinale %d." -#: utils/adt/arrayfuncs.c:3025 -msgid "null array element not allowed in this context" -msgstr "�l�ment NULL de tableau interdit dans ce contexte" +#: executor/execQual.c:1291 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] "ne peut pas passer plus de %d argument � une fonction" +msgstr[1] "ne peut pas passer plus de %d arguments � une fonction" -#: utils/adt/arrayfuncs.c:3086 -#: utils/adt/arrayfuncs.c:3293 -#: utils/adt/arrayfuncs.c:3493 -msgid "cannot compare arrays of different element types" -msgstr "ne peut pas comparer des tableaux ayant des types d'�l�ments diff�rents" +#: executor/execQual.c:1480 +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" -#: utils/adt/arrayfuncs.c:4444 -#: utils/adt/arrayfuncs.c:4484 -msgid "dimension array or low bound array cannot be NULL" -msgstr "la dimension ou la limite basse du tableau ne peut pas �tre NULL" +#: executor/execQual.c:1530 +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" -#: utils/adt/arrayfuncs.c:4547 -#: utils/adt/arrayfuncs.c:4579 -msgid "Dimension array must be one dimensional." -msgstr "le tableau doit avoir une seule dimension" +#: executor/execQual.c:1585 executor/execQual.c:1601 executor/execQual.c:1611 +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" -#: utils/adt/arrayfuncs.c:4552 -#: utils/adt/arrayfuncs.c:4584 -msgid "wrong range of array subscripts" -msgstr "mauvais �chelle des indices du tableau" +#: executor/execQual.c:1586 +#, 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." -#: utils/adt/arrayfuncs.c:4553 -#: utils/adt/arrayfuncs.c:4585 -msgid "Lower bound of dimension array must be one." -msgstr "La limite inf�rieure du tableau doit valoir un." +#: executor/execQual.c:1602 +#, 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." -#: utils/adt/arrayfuncs.c:4558 -#: utils/adt/arrayfuncs.c:4590 -msgid "dimension values cannot be null" -msgstr "les valeurs de dimension ne peuvent pas �tre NULL" +#: executor/execQual.c:1836 executor/execQual.c:2260 +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�" -#: utils/adt/arrayfuncs.c:4596 -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." +#: executor/execQual.c:1856 executor/execQual.c:2267 +#, c-format +msgid "unrecognized table-function returnMode: %d" +msgstr "returnMode de la fonction table non reconnu : %d" -#: utils/adt/arrayutils.c:209 -msgid "typmod array must be type cstring[]" -msgstr "le tableau typmod doit �tre de type cstring[]" +#: executor/execQual.c:2177 +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" -#: utils/adt/arrayutils.c:214 -msgid "typmod array must be one-dimensional" -msgstr "le tableau typmod doit avoir une seule dimension" +#: executor/execQual.c:2234 +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" -#: utils/adt/arrayutils.c:219 -msgid "typmod array must not contain nulls" -msgstr "le tableau typmod ne doit pas contenir de valeurs NULL" +#: executor/execQual.c:2449 +msgid "IS DISTINCT FROM does not support set arguments" +msgstr "IS DISTINCT FROM ne supporte pas les arguments d'ensemble" -#: utils/adt/ascii.c:75 -#, c-format -msgid "encoding conversion from %s to ASCII not supported" -msgstr "la conversion de l'encodage de %s vers l'ASCII n'est pas support�e" +#: executor/execQual.c:2526 +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" -#: utils/adt/bool.c:153 -#, c-format -msgid "invalid input syntax for type boolean: \"%s\"" -msgstr "syntaxe en entr�e invalide pour le type bool�en : � %s �" +#: executor/execQual.c:3079 +msgid "cannot merge incompatible arrays" +msgstr "ne peut pas fusionner les tableaux incompatibles" -#: utils/adt/cash.c:232 +#: executor/execQual.c:3080 #, c-format -msgid "invalid input syntax for type money: \"%s\"" -msgstr "syntaxe en entr�e invalide pour le type money : � %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." -#: utils/adt/cash.c:524 -#: utils/adt/cash.c:575 -#: utils/adt/cash.c:624 -#: utils/adt/cash.c:676 -#: utils/adt/cash.c:726 -#: 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:4128 -#: utils/adt/int.c:729 -#: utils/adt/int.c:874 -#: utils/adt/int.c:973 -#: utils/adt/int.c:1062 -#: utils/adt/int.c:1092 -#: utils/adt/int.c:1116 -#: utils/adt/int8.c:598 -#: utils/adt/int8.c:649 -#: utils/adt/int8.c:830 -#: utils/adt/int8.c:929 -#: utils/adt/int8.c:1018 -#: utils/adt/int8.c:1117 -#: utils/adt/numeric.c:4298 -#: utils/adt/numeric.c:4581 -#: utils/adt/timestamp.c:2876 -msgid "division by zero" -msgstr "division par z�ro" +#: executor/execQual.c:3663 +msgid "NULLIF does not support set arguments" +msgstr "NULLIF ne supporte pas les arguments d'ensemble" -#: utils/adt/char.c:169 -msgid "\"char\" out of range" -msgstr "� char � hors des limites" +#: executor/execQual.c:4415 optimizer/util/clauses.c:573 +#: parser/parse_agg.c:164 +msgid "aggregate function calls cannot be nested" +msgstr "les appels � la fonction d'agr�gat ne peuvent pas �tre imbriqu�s" -#: utils/adt/date.c:66 -#: utils/adt/timestamp.c:92 -#: utils/adt/varbit.c:49 -#: utils/adt/varchar.c:43 -msgid "invalid type modifier" -msgstr "modifieur de type invalide" +#: executor/execQual.c:4453 optimizer/util/clauses.c:647 +#: parser/parse_agg.c:211 +msgid "window function calls cannot be nested" +msgstr "les appels � la fonction window ne peuvent pas �tre imbriqu�s" -#: utils/adt/date.c:71 -#, c-format -msgid "TIME(%d)%s precision must not be negative" -msgstr "la pr�cision de TIME(%d)%s ne doit pas �tre n�gative" +#: executor/execQual.c:4665 +msgid "target type is not an array" +msgstr "le type cible n'est pas un tableau" -#: utils/adt/date.c:77 +#: executor/execQual.c:4778 #, c-format -msgid "TIME(%d)%s precision reduced to maximum allowed, %d" -msgstr "la pr�cision de TIME(%d)%s a �t� r�duit au maximum autoris�e, %d" +msgid "ROW() column has type %s instead of type %s" +msgstr "une colonne ROW() a le type %s au lieu du type %s" -#: 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 "la valeur � current � pour la date et heure n'est plus support�e" +#: replication/walreceiver.c:150 +msgid "terminating walreceiver process due to administrator command" +msgstr "arr�t du processus walreceiver suite � la demande de l'administrateur" -#: utils/adt/date.c:167 -#, c-format -msgid "date out of range: \"%s\"" -msgstr "date en dehors des limites : � %s �" +#: replication/walreceiver.c:304 +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" -#: utils/adt/date.c:359 -msgid "cannot subtract infinite dates" -msgstr "ne peut pas soustraire les valeurs dates infinies" +#: replication/walsender.c:142 +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" -#: utils/adt/date.c:416 -#: utils/adt/date.c:453 -msgid "date out of range for timestamp" -msgstr "date en dehors des limites pour un timestamp" +#: replication/walsender.c:262 replication/walsender.c:490 +#: replication/walsender.c:548 +msgid "unexpected EOF on standby connection" +msgstr "fin de fichier (EOF) inattendue de la connexion du serveur en attente" -#: utils/adt/date.c:986 -msgid "cannot convert reserved abstime value to date" -msgstr "ne peut pas convertir la valeur r�serv�e abstime en date" +#: replication/walsender.c:268 +#, c-format +msgid "invalid standby handshake message type %d" +msgstr "type %d du message de handshake du serveur en attente invalide" -#: 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 "heure en dehors des limites" +#: replication/walsender.c:380 +msgid "standby connections not allowed because wal_level=minimal" +msgstr "connexions standby non autoris�es car wal_level=minimal" -#: utils/adt/date.c:1793 -#: utils/adt/date.c:1810 +#: replication/walsender.c:462 #, c-format -msgid "\"time\" units \"%s\" not recognized" -msgstr "l'unit� � %s � n'est pas reconnu pour le type � time �" +msgid "invalid standby query string: %s" +msgstr "cha�ne de requ�te invalide sur le serveur en attente : %s" -#: utils/adt/date.c:1932 -msgid "time zone displacement out of range" -msgstr "d�placement du fuseau horaire en dehors des limites" +#: replication/walsender.c:519 +#, c-format +msgid "invalid standby message type \"%c\"" +msgstr "type de message � %c � invalide pour le serveur en standby" -#: utils/adt/date.c:2557 -#: utils/adt/date.c:2574 +#: replication/walsender.c:570 #, 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 �" +msgid "unexpected message type \"%c\"" +msgstr "type de message � %c � inattendu" -#: 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 +#: replication/walsender.c:764 #, c-format -msgid "time zone \"%s\" not recognized" -msgstr "le fuseau horaire � %s � n'est pas reconnu" +msgid "standby \"%s\" has now caught up with primary" +msgstr "le serveur standby � %s � a maintenant rattrap� le serveur primaire" + +#: replication/walsender.c:844 +msgid "terminating walsender process due to replication timeout" +msgstr "" +"arr�t du processus walreceiver suite � l'expiration du d�lai de r�plication" -#: utils/adt/date.c:2672 +#: replication/walsender.c:911 #, c-format -msgid "\"interval\" time zone \"%s\" not valid" -msgstr "le fuseau horaire � %s � n'est pas valide pour le type � interval �" +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)" -#: utils/adt/datetime.c:3529 -#: utils/adt/datetime.c:3536 +#: replication/walsender.c:995 replication/walsender.c:1057 #, c-format -msgid "date/time field value out of range: \"%s\"" -msgstr "valeur du champ date/time en dehors des limites : � %s �" +msgid "requested WAL segment %s has already been removed" +msgstr "le segment demand� du journal de transaction, %s, a d�j� �t� supprim�" -#: utils/adt/datetime.c:3538 -msgid "Perhaps you need a different \"datestyle\" setting." -msgstr "Peut-�tre avez-vous besoin d'un param�trage � datestyle � diff�rent." +#: replication/walsender.c:1028 +#, c-format +msgid "could not read from log file %u, segment %u, offset %u, length %lu: %m" +msgstr "" +"n'a pas pu lire le journal de transactions %u, segment %u au d�calage %u,\n" +"longueur %lu : %m" -#: utils/adt/datetime.c:3543 +#: replication/basebackup.c:132 replication/basebackup.c:737 #, c-format -msgid "interval field value out of range: \"%s\"" -msgstr "valeur du champ interval en dehors des limites : � %s �" +msgid "could not read symbolic link \"%s\": %m" +msgstr "n'a pas pu lire le lien symbolique � %s � : %m" -#: utils/adt/datetime.c:3549 +#: replication/basebackup.c:139 replication/basebackup.c:741 #, c-format -msgid "time zone displacement out of range: \"%s\"" -msgstr "d�placement du fuseau horaire en dehors des limites : � %s �" +msgid "symbolic link \"%s\" target is too long" +msgstr "la cible du lien symbolique � %s � est trop long" -#. translator: first %s is inet or cidr -#: utils/adt/datetime.c:3556 -#: utils/adt/network.c:107 +#: replication/basebackup.c:207 #, c-format -msgid "invalid input syntax for type %s: \"%s\"" -msgstr "syntaxe en entr�e invalide pour le type %s : � %s �" +msgid "could not stat control file \"%s\": %m" +msgstr "" +"n'a pas pu r�cup�rer les informations sur le fichier de contr�le � %s � : %m" -#: utils/adt/datum.c:80 -#: utils/adt/datum.c:92 -msgid "invalid Datum pointer" -msgstr "pointeur Datum invalide" +#: replication/basebackup.c:284 replication/basebackup.c:914 +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" -#: utils/adt/dbsize.c:105 -#: utils/adt/dbsize.c:195 +#: replication/basebackup.c:331 replication/basebackup.c:340 +#: replication/basebackup.c:349 replication/basebackup.c:358 +#: replication/basebackup.c:367 #, c-format -msgid "could not open tablespace directory \"%s\": %m" -msgstr "n'a pas pu ouvrir le r�pertoire du tablespace � %s � : %m" +msgid "duplicate option \"%s\"" +msgstr "option � %s � dupliqu�e" -#: utils/adt/domains.c:80 +#: replication/basebackup.c:419 #, c-format -msgid "type %s is not a domain" -msgstr "le type %s n'est pas un domaine" +msgid "could not open directory \"pg_tblspc\": %m" +msgstr "n'a pas pu ouvrir le r�pertoire � pg_tblspc � : %m" -#: utils/adt/encode.c:55 -#: utils/adt/encode.c:91 +#: replication/basebackup.c:616 replication/basebackup.c:691 #, c-format -msgid "unrecognized encoding: \"%s\"" -msgstr "encodage non reconnu : � %s �" +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" -#: utils/adt/encode.c:150 -#, c-format -msgid "invalid hexadecimal digit: \"%c\"" -msgstr "chiffre hexad�cimal invalide : � %c �" +#: replication/basebackup.c:677 +msgid "shutdown requested, aborting active base backup" +msgstr "arr�t demand�, annulation de la sauvegarde active de base" -#: utils/adt/encode.c:178 -msgid "invalid hexadecimal data: odd number of digits" -msgstr "donn�e hexad�cimale invalide : nombre pair de chiffres" +#: replication/basebackup.c:814 +#, c-format +msgid "skipping special file \"%s\"" +msgstr "ignore le fichier sp�cial � %s �" -#: utils/adt/encode.c:295 -msgid "unexpected \"=\"" -msgstr "� = � inattendu" +#: replication/basebackup.c:904 +#, c-format +msgid "archive member \"%s\" too large for tar format" +msgstr "membre � %s � de l'archive trop volumineux pour le format tar" -#: utils/adt/encode.c:307 -msgid "invalid symbol" -msgstr "symbole invalide" +#: replication/syncrep.c:210 +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" -#: utils/adt/encode.c:327 -msgid "invalid end sequence" -msgstr "fin de s�quence invalide" +#: replication/syncrep.c:211 replication/syncrep.c:228 +msgid "" +"The transaction has already committed locally, but might not have been " +"replicated to the standby." +msgstr "" +"La transaction a d�j� enregistr� les donn�es localement, mais il se peut " +"que\n" +"cela n'ait pas �t� r�pliqu� sur le serveur en standby." -#: utils/adt/encode.c:441 -#: utils/adt/encode.c:506 -#: utils/adt/varlena.c:238 -#: utils/adt/varlena.c:279 -msgid "invalid input syntax for type bytea" -msgstr "syntaxe en entr�e invalide pour le type bytea" +#: replication/syncrep.c:227 +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" -#: utils/adt/enum.c:44 -#: utils/adt/enum.c:54 -#: utils/adt/enum.c:109 -#: utils/adt/enum.c:119 +#: replication/syncrep.c:358 #, c-format -msgid "invalid input value for enum %s: \"%s\"" -msgstr "valeur en entr�e invalide pour le enum %s : � %s �" +msgid "standby \"%s\" now has synchronous standby priority %u" +msgstr "" +"le serveur � %s � en standby a maintenant une priorit� %u en tant que " +"standby\n" +"synchrone" -#: utils/adt/enum.c:81 -#: utils/adt/enum.c:144 +#: replication/syncrep.c:456 #, c-format -msgid "invalid internal value for enum: %u" -msgstr "valeur interne invalide pour le enum : %u" +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" -#: utils/adt/enum.c:264 -#: utils/adt/enum.c:303 -#: utils/adt/enum.c:350 -#: utils/adt/enum.c:370 -msgid "could not determine actual enum type" -msgstr "n'a pas pu d�terminer le type enum actuel" +#: repl_scanner.l:76 +msgid "invalid streaming start location" +msgstr "emplacement de d�marrage du flux de r�plication invalide" -#: utils/adt/float.c:54 -msgid "value out of range: overflow" -msgstr "valeur en dehors des limites : d�passement" +#: repl_scanner.l:97 scan.l:629 +msgid "unterminated quoted string" +msgstr "cha�ne entre guillemets non termin�e" -#: utils/adt/float.c:59 -msgid "value out of range: underflow" -msgstr "valeur en dehors des limites : trop petit" +#: repl_scanner.l:107 +#, c-format +msgid "syntax error: unexpected character \"%s\"" +msgstr "erreur de syntaxe : caract�re � %s � inattendu" -#: utils/adt/float.c:206 -#: utils/adt/float.c:247 -#: utils/adt/float.c:298 +#: replication/libpqwalreceiver/libpqwalreceiver.c:101 #, c-format -msgid "invalid input syntax for type real: \"%s\"" -msgstr "syntaxe en entr�e invalide pour le type real : � %s �" +msgid "could not connect to the primary server: %s" +msgstr "n'a pas pu se connecter au serveur principal : %s" -#: utils/adt/float.c:242 +#: replication/libpqwalreceiver/libpqwalreceiver.c:113 #, c-format -msgid "\"%s\" is out of range for type real" -msgstr "� %s � est hors des limites du type real" +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" -#: utils/adt/float.c:399 -#: utils/adt/float.c:440 -#: utils/adt/float.c:491 -#: utils/adt/numeric.c:3760 -#: utils/adt/numeric.c:3786 -#, c-format -msgid "invalid input syntax for type double precision: \"%s\"" -msgstr "syntaxe en entr�e invalide pour le type double precision : � %s �" +#: replication/libpqwalreceiver/libpqwalreceiver.c:124 +msgid "invalid response from primary server" +msgstr "r�ponse invalide du serveur principal" -#: utils/adt/float.c:435 +#: replication/libpqwalreceiver/libpqwalreceiver.c:125 #, c-format -msgid "\"%s\" is out of range for type double precision" -msgstr "� %s � est en dehors des limites du type double precision" +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." -#: utils/adt/float.c:1119 -#: utils/adt/float.c:1177 -#: utils/adt/int.c:348 -#: utils/adt/int.c:788 -#: utils/adt/int.c:817 -#: utils/adt/int.c:838 -#: utils/adt/int.c:858 -#: utils/adt/int.c:890 -#: utils/adt/int.c:1156 -#: utils/adt/int8.c:1238 -#: utils/adt/numeric.c:2163 -#: utils/adt/numeric.c:2174 -msgid "smallint out of range" -msgstr "smallint en dehors des limites" +#: replication/libpqwalreceiver/libpqwalreceiver.c:140 +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" +"et le serveur en attente" -#: utils/adt/float.c:1303 -#: utils/adt/numeric.c:4974 -msgid "cannot take square root of a negative number" -msgstr "ne peut pas calculer la racine carr� d'un nombre n�gatif" +#: replication/libpqwalreceiver/libpqwalreceiver.c:141 +#, 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" +"est %s." -#: utils/adt/float.c:1345 -#: utils/adt/numeric.c:1975 -msgid "zero raised to a negative power is undefined" -msgstr "z�ro � une puissance n�gative est ind�fini" +#: replication/libpqwalreceiver/libpqwalreceiver.c:153 +#, c-format +msgid "timeline %u of the primary does not match recovery target timeline %u" +msgstr "" +"le timeline %u du serveur principal ne correspond pas au timeline %u de la\n" +"cible de restauration" -#: utils/adt/float.c:1349 -#: utils/adt/numeric.c:1981 -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" +#: replication/libpqwalreceiver/libpqwalreceiver.c:165 +#, c-format +msgid "could not start WAL streaming: %s" +msgstr "n'a pas pu d�marrer l'envoi des WAL : %s" -#: utils/adt/float.c:1415 -#: utils/adt/float.c:1445 -#: utils/adt/numeric.c:5192 -msgid "cannot take logarithm of zero" -msgstr "ne peut pas calculer le logarithme de z�ro" +#: replication/libpqwalreceiver/libpqwalreceiver.c:171 +msgid "streaming replication successfully connected to primary" +msgstr "r�plication de flux connect� avec succ�s au serveur principal" -#: utils/adt/float.c:1419 -#: utils/adt/float.c:1449 -#: utils/adt/numeric.c:5196 -msgid "cannot take logarithm of a negative number" -msgstr "ne peut pas calculer le logarithme sur un nombre n�gatif" +#: replication/libpqwalreceiver/libpqwalreceiver.c:193 +msgid "socket not open" +msgstr "socket non ouvert" -#: 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 "l'entr�e est en dehors des limites" +#: replication/libpqwalreceiver/libpqwalreceiver.c:233 port/pg_latch.c:265 +#: port/unix_latch.c:265 +#, c-format +msgid "select() failed: %m" +msgstr "�chec de select() : %m" -#: utils/adt/float.c:2687 -#: utils/adt/numeric.c:982 -msgid "count must be greater than zero" -msgstr "le total doit �tre sup�rieur � z�ro" +#: 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 "n'a pas pu recevoir des donn�es du flux de WAL : %s" -#: utils/adt/float.c:2692 -#: utils/adt/numeric.c:989 -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" +#: replication/libpqwalreceiver/libpqwalreceiver.c:384 +msgid "replication terminated by primary server" +msgstr "r�plication termin�e par le serveur primaire" -#: utils/adt/float.c:2698 -msgid "lower and upper bounds must be finite" -msgstr "les limites basse et haute doivent �tre finies" +#: replication/libpqwalreceiver/libpqwalreceiver.c:415 +#, c-format +msgid "could not send data to WAL stream: %s" +msgstr "n'a pas pu transmettre les donn�es au flux WAL : %s" -#: utils/adt/float.c:2736 -#: utils/adt/numeric.c:1002 -msgid "lower bound cannot equal upper bound" -msgstr "la limite inf�rieure ne peut pas �tre plus �gale � la limite sup�rieure" +#: optimizer/plan/initsplan.c:598 +msgid "" +"SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer " +"join" +msgstr "" +"SELECT FOR UPDATE/SHARE ne peut �tre appliqu� sur le c�t� possiblement NULL\n" +"d'une jointure externe" -#: utils/adt/formatting.c:491 -msgid "invalid format specification for an interval value" -msgstr "format de sp�cification invalide pour une valeur intervalle" +#: optimizer/plan/planner.c:940 parser/analyze.c:1333 parser/analyze.c:1541 +#: parser/analyze.c:2270 +msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT" +msgstr "SELECT FOR UPDATE/SHARE n'est pas autoris� avec UNION/INTERSECT/EXCEPT" -#: utils/adt/formatting.c:492 -msgid "Intervals are not tied to specific calendar dates." -msgstr "Les intervalles ne sont pas li�s aux dates de calendriers sp�cifiques." +#: optimizer/plan/planner.c:2235 +msgid "could not implement GROUP BY" +msgstr "n'a pas pu implant� GROUP BY" -#: utils/adt/formatting.c:1059 -msgid "\"EEEE\" must be the last pattern used" -msgstr "� EEEE � doit �tre le dernier motif utilis�" +#: optimizer/plan/planner.c:2236 optimizer/plan/planner.c:2408 +#: optimizer/prep/prepunion.c:801 +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." -#: utils/adt/formatting.c:1067 -msgid "\"9\" must be ahead of \"PR\"" -msgstr "� 9 � doit �tre avant � PR �" +#: optimizer/plan/planner.c:2407 +msgid "could not implement DISTINCT" +msgstr "n'a pas pu implant� DISTINCT" -#: utils/adt/formatting.c:1083 -msgid "\"0\" must be ahead of \"PR\"" -msgstr "� 0 � doit �tre avant � PR �" +#: optimizer/plan/planner.c:2873 +msgid "could not implement window PARTITION BY" +msgstr "n'a pas pu implanter PARTITION BY de window" -#: utils/adt/formatting.c:1109 -msgid "multiple decimal points" -msgstr "multiples points d�cimaux" +#: optimizer/plan/planner.c:2874 +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." -#: utils/adt/formatting.c:1113 -#: utils/adt/formatting.c:1196 -msgid "cannot use \"V\" and decimal point together" -msgstr "ne peut pas utiliser � V � et le point d�cimal ensemble" +#: optimizer/plan/planner.c:2878 +msgid "could not implement window ORDER BY" +msgstr "n'a pas pu implanter ORDER BY dans le window" -#: utils/adt/formatting.c:1125 -msgid "cannot use \"S\" twice" -msgstr "ne peut pas utiliser � S � deux fois" +#: optimizer/plan/planner.c:2879 +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." -#: utils/adt/formatting.c:1129 -msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" -msgstr "ne peut pas utiliser � S � et � PL �/� MI �/� SG �/� PR � ensemble" +#: optimizer/prep/prepunion.c:395 +msgid "could not implement recursive UNION" +msgstr "n'a pas pu implant� le UNION r�cursif" -#: utils/adt/formatting.c:1149 -msgid "cannot use \"S\" and \"MI\" together" -msgstr "ne peut pas utiliser � S � et � MI � ensemble" +#: optimizer/prep/prepunion.c:396 +msgid "All column datatypes must be hashable." +msgstr "Tous les types de donn�es colonnes doivent �tre hachables." -#: utils/adt/formatting.c:1159 -msgid "cannot use \"S\" and \"PL\" together" -msgstr "ne peut pas utiliser � S � et � PL � ensemble" +#. translator: %s is UNION, INTERSECT, or EXCEPT +#: optimizer/prep/prepunion.c:800 +#, c-format +msgid "could not implement %s" +msgstr "n'a pas pu implant� %s" -#: utils/adt/formatting.c:1169 -msgid "cannot use \"S\" and \"SG\" together" -msgstr "ne peut pas utiliser � S � et � SG � ensemble" +#: optimizer/path/joinrels.c:673 +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" +"jointures HASH JOIN" -#: utils/adt/formatting.c:1178 -msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" -msgstr "ne peut pas utiliser � PR � et � S �/� PL �/� MI �/� SG � ensemble" +#: optimizer/util/plancat.c:97 +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" -#: utils/adt/formatting.c:1204 -msgid "cannot use \"EEEE\" twice" -msgstr "ne peut pas utiliser � EEEE � deux fois" +#: optimizer/util/clauses.c:4187 +#, c-format +msgid "SQL function \"%s\" during inlining" +msgstr "fonction SQL � %s � durant � inlining �" -#: utils/adt/formatting.c:1210 -msgid "\"EEEE\" is incompatible with other formats" -msgstr "� EEEE � est incompatible avec les autres formats" +#: libpq/pqcomm.c:306 +#, 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" -#: utils/adt/formatting.c:1211 -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." +#: libpq/pqcomm.c:310 +#, 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" -#: utils/adt/formatting.c:1411 +#: libpq/pqcomm.c:337 #, c-format -msgid "\"%s\" is not a number" -msgstr "� %s � n'est pas un nombre" +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�" -#: utils/adt/formatting.c:1788 -msgid "invalid combination of date conventions" -msgstr "combinaison invalide des conventions de date" +#: libpq/pqcomm.c:346 +msgid "IPv4" +msgstr "IPv4" -#: utils/adt/formatting.c:1789 -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." +#: libpq/pqcomm.c:350 +msgid "IPv6" +msgstr "IPv6" -#: utils/adt/formatting.c:1806 -#, c-format -msgid "conflicting values for \"%s\" field in formatting string" -msgstr "valeur conflictuelle pour le champ � %s � dans la cha�ne de formatage" +#: libpq/pqcomm.c:355 +msgid "Unix" +msgstr "Unix" -#: utils/adt/formatting.c:1808 -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." +#: libpq/pqcomm.c:360 +#, c-format +msgid "unrecognized address family %d" +msgstr "famille d'adresse %d non reconnue" -#: utils/adt/formatting.c:1869 +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:371 #, c-format -msgid "source string too short for \"%s\" formatting field" -msgstr "cha�ne source trop petite pour le champ de formatage � %s �" +msgid "could not create %s socket: %m" +msgstr "n'a pas pu cr�er le socket %s : %m" -#: utils/adt/formatting.c:1871 +#: libpq/pqcomm.c:396 #, c-format -msgid "Field requires %d characters, but only %d remain." -msgstr "Le champ requiert %d caract�res, mais seuls %d restent." +msgid "setsockopt(SO_REUSEADDR) failed: %m" +msgstr "setsockopt(SO_REUSEADDR) a �chou� : %m" -#: utils/adt/formatting.c:1874 -#: utils/adt/formatting.c:1888 -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 �." +#: libpq/pqcomm.c:411 +#, c-format +msgid "setsockopt(IPV6_V6ONLY) failed: %m" +msgstr "setsockopt(IPV6_V6ONLY) a �chou� : %m" -#: utils/adt/formatting.c:1884 -#: utils/adt/formatting.c:1897 -#: utils/adt/formatting.c:2027 +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:430 #, c-format -msgid "invalid value \"%s\" for \"%s\"" -msgstr "valeur � %s � invalide pour � %s �" +msgid "could not bind %s socket: %m" +msgstr "n'a pas pu se lier � la socket %s : %m" -#: utils/adt/formatting.c:1886 +#: libpq/pqcomm.c:433 #, 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." +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." -#: utils/adt/formatting.c:1899 -msgid "Value must be an integer." -msgstr "La valeur doit �tre un entier" +#: libpq/pqcomm.c:436 +#, c-format +msgid "" +"Is another postmaster already running on port %d? If not, wait a few seconds " +"and retry." +msgstr "" +"Un autre postmaster fonctionne-t'il d�j� sur le port %d ?\n" +"Sinon, attendez quelques secondes et r�essayez." -#: utils/adt/formatting.c:1904 +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:469 #, 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" +msgid "could not listen on %s socket: %m" +msgstr "n'a pas pu �couter sur le socket %s : %m" -#: utils/adt/formatting.c:1906 +#: libpq/pqcomm.c:499 #, c-format -msgid "Value must be in the range %d to %d." -msgstr "La valeur doit �tre compris entre %d et %d" +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)" -#: utils/adt/formatting.c:2029 -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." +#: libpq/pqcomm.c:562 +#, c-format +msgid "group \"%s\" does not exist" +msgstr "le groupe � %s � n'existe pas" -#: utils/adt/formatting.c:2585 -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" +#: libpq/pqcomm.c:572 +#, c-format +msgid "could not set group of file \"%s\": %m" +msgstr "n'a pas pu initialiser le groupe du fichier � %s � : %m" -#: utils/adt/formatting.c:2689 -msgid "invalid input string for \"Y,YYY\"" -msgstr "cha�ne invalide en entr�e pour � Y,YYY �" +#: libpq/pqcomm.c:583 +#, c-format +msgid "could not set permissions of file \"%s\": %m" +msgstr "n'a pas pu initialiser les droits du fichier � %s � : %m" -#: utils/adt/formatting.c:3206 +#: libpq/pqcomm.c:613 #, c-format -msgid "hour \"%d\" is invalid for the 12-hour clock" -msgstr "l'heure � %d � est invalide pour une horloge sur 12 heures" +msgid "could not accept new connection: %m" +msgstr "n'a pas pu accepter la nouvelle connexion : %m" -#: utils/adt/formatting.c:3208 -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." +#: libpq/pqcomm.c:781 +#, c-format +msgid "could not set socket to non-blocking mode: %m" +msgstr "n'a pas pu activer le mode non-bloquant pour la socket : %m" -#: utils/adt/formatting.c:3246 +#: libpq/pqcomm.c:787 #, c-format -msgid "inconsistent use of year %04d and \"BC\"" -msgstr "utilisation non coh�rente de l'ann�e %04d et de � BC �" +msgid "could not set socket to blocking mode: %m" +msgstr "n'a pas pu activer le mode bloquant pour la socket : %m" -#: utils/adt/formatting.c:3293 -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" +#: libpq/pqcomm.c:839 libpq/pqcomm.c:929 +#, c-format +msgid "could not receive data from client: %m" +msgstr "n'a pas pu recevoir les donn�es du client : %m" -#: utils/adt/formatting.c:4151 -msgid "\"EEEE\" not supported for input" -msgstr "� EEEE � non support� en entr�e" +#: libpq/pqcomm.c:1080 +msgid "unexpected EOF within message length word" +msgstr "" +"fin de fichier (EOF) inattendue � l'int�rieur de la longueur du message" -#: utils/adt/formatting.c:4163 -msgid "\"RN\" not supported for input" -msgstr "� RN � non support� en entr�e" +#: libpq/pqcomm.c:1091 +msgid "invalid message length" +msgstr "longueur du message invalide" -#: utils/adt/genfile.c:58 -msgid "reference to parent directory (\"..\") not allowed" -msgstr "r�f�rence non autoris�e au r�pertoire parent (� .. �)" +#: libpq/pqcomm.c:1113 libpq/pqcomm.c:1123 +msgid "incomplete message from client" +msgstr "message incomplet du client" -#: utils/adt/genfile.c:72 -msgid "absolute path not allowed" -msgstr "chemin absolu non autoris�" +#: libpq/pqcomm.c:1253 +#, c-format +msgid "could not send data to client: %m" +msgstr "n'a pas pu envoyer les donn�es au client : %m" -#: utils/adt/genfile.c:99 -msgid "must be superuser to read files" -msgstr "doit �tre super-utilisateur pour lire des fichiers" +#: libpq/be-secure.c:284 libpq/be-secure.c:379 +#, c-format +msgid "SSL error: %s" +msgstr "erreur SSL : %s" -#: utils/adt/genfile.c:113 +#: libpq/be-secure.c:293 libpq/be-secure.c:388 libpq/be-secure.c:962 #, c-format -msgid "could not seek in file \"%s\": %m" -msgstr "n'a pas pu parcourir le fichier � %s � : %m" +msgid "unrecognized SSL error code: %d" +msgstr "code d'erreur SSL inconnu : %d" -#: utils/adt/genfile.c:118 -msgid "requested length cannot be negative" -msgstr "la longueur demand�e ne peut pas �tre n�gative" - -#: utils/adt/genfile.c:124 -#: utils/adt/oracle_compat.c:181 -#: utils/adt/oracle_compat.c:279 -#: utils/adt/oracle_compat.c:755 -#: utils/adt/oracle_compat.c:1045 -msgid "requested length too large" -msgstr "longueur demand�e trop importante" - -#: utils/adt/genfile.c:163 -msgid "must be superuser to get file information" -msgstr "doit �tre super-utilisateur pour obtenir des informations sur le fichier" +#: libpq/be-secure.c:332 libpq/be-secure.c:336 libpq/be-secure.c:346 +msgid "SSL renegotiation failure" +msgstr "�chec lors de la re-n�gotiation SSL" -#: utils/adt/genfile.c:227 -msgid "must be superuser to get directory listings" -msgstr "doit �tre super-utilisateur pour obtenir le contenu du r�pertoire" +#: libpq/be-secure.c:340 +msgid "SSL failed to send renegotiation request" +msgstr "SSL a �chou� lors de l'envoi de la requ�te de re-n�gotiation" -#: utils/adt/geo_ops.c:294 -#: utils/adt/geo_ops.c:4249 -#: utils/adt/geo_ops.c:5166 -msgid "too many points requested" -msgstr "trop de points demand�" +#: libpq/be-secure.c:741 +#, c-format +msgid "could not create SSL context: %s" +msgstr "n'a pas pu cr�er le contexte SSL : %s" -#: utils/adt/geo_ops.c:317 -msgid "could not format \"path\" value" -msgstr "n'a pas pu formater la valeur � path �" +#: libpq/be-secure.c:757 +#, c-format +msgid "could not load server certificate file \"%s\": %s" +msgstr "n'a pas pu charger le fichier du certificat serveur � %s � : %s" -#: utils/adt/geo_ops.c:392 +#: libpq/be-secure.c:763 #, c-format -msgid "invalid input syntax for type box: \"%s\"" -msgstr "syntaxe en entr�e invalide pour le type box : � %s �" +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" -#: utils/adt/geo_ops.c:956 +#: libpq/be-secure.c:778 #, c-format -msgid "invalid input syntax for type line: \"%s\"" -msgstr "syntaxe en entr�e invalide pour le type line: � %s �" +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" -#: 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 "le type � line � n'est pas encore impl�ment�" +#: libpq/be-secure.c:780 +msgid "Permissions should be u=rw (0600) or less." +msgstr "Les droits devraient �tre u=rwx (0600) ou inf�rieures." -#: utils/adt/geo_ops.c:1411 -#: utils/adt/geo_ops.c:1434 +#: libpq/be-secure.c:787 #, 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:1473 -msgid "invalid number of points in external \"path\" value" -msgstr "nombre de points invalide dans la valeur externe de � path �" +msgid "could not load private key file \"%s\": %s" +msgstr "n'a pas pu charger le fichier de cl� priv�e � %s � : %s" -#: utils/adt/geo_ops.c:1814 +#: libpq/be-secure.c:792 #, c-format -msgid "invalid input syntax for type point: \"%s\"" -msgstr "syntaxe en entr�e invalide pour le type point : � %s �" +msgid "check of private key failed: %s" +msgstr "�chec de la v�rification de la cl� priv�e : %s" -#: utils/adt/geo_ops.c:2042 +#: libpq/be-secure.c:820 #, c-format -msgid "invalid input syntax for type lseg: \"%s\"" -msgstr "syntaxe en entr�e invalide pour le type lseg : � %s �" +msgid "could not access root certificate file \"%s\": %m" +msgstr "n'a pas pu acc�der au fichier du certificat racine � %s � : %m" -#: utils/adt/geo_ops.c:2646 -msgid "function \"dist_lb\" not implemented" -msgstr "la fonction � dist_lb � n'est pas impl�ment�e" +#: libpq/be-secure.c:831 +#, c-format +msgid "could not load root certificate file \"%s\": %s" +msgstr "n'a pas pu charger le fichier du certificat racine � %s � : %s" -#: utils/adt/geo_ops.c:3159 -msgid "function \"close_lb\" not implemented" -msgstr "la fonction � close_lb � n'est pas impl�ment�e" +#: libpq/be-secure.c:854 +#, c-format +msgid "SSL certificate revocation list file \"%s\" ignored" +msgstr "liste de r�vocation des certificats SSL � %s � ignor�e" -#: utils/adt/geo_ops.c:3448 -msgid "cannot create bounding box for empty polygon" -msgstr "ne peut pas cr�er une bo�te entour�e pour un polyg�ne vide" +#: libpq/be-secure.c:856 +msgid "SSL library does not support certificate revocation lists." +msgstr "" +"La biblioth�que SSL ne supporte pas les listes de r�vocation des certificats." -#: utils/adt/geo_ops.c:3472 -#: utils/adt/geo_ops.c:3484 +#: libpq/be-secure.c:863 #, 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:3524 -msgid "invalid number of points in external \"polygon\" value" -msgstr "nombre de points invalide dans la valeur externe de � polygon �" +msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s" +msgstr "" +"liste de r�vocation des certificats SSL � %s � introuvable, continue : %s" -#: utils/adt/geo_ops.c:4047 -msgid "function \"poly_distance\" not implemented" -msgstr "la fonction � poly_distance � n'est pas impl�ment�e" +#: libpq/be-secure.c:865 +msgid "Certificates will not be checked against revocation list." +msgstr "Les certificats ne seront pas v�rifi�s avec la liste de r�vocation." -#: utils/adt/geo_ops.c:4359 -msgid "function \"path_center\" not implemented" -msgstr "la fonction � path_center � n'est pas impl�ment�e" +#: libpq/be-secure.c:907 +#, c-format +msgid "could not initialize SSL connection: %s" +msgstr "n'a pas pu initialiser la connexion SSL : %s" -#: utils/adt/geo_ops.c:4376 -msgid "open path cannot be converted to polygon" -msgstr "le chemin ouvert ne peut �tre converti en polyg�ne" +#: libpq/be-secure.c:916 +#, c-format +msgid "could not set SSL socket: %s" +msgstr "n'a pas pu cr�er le socket SSL : %s" -#: utils/adt/geo_ops.c:4543 -#: utils/adt/geo_ops.c:4553 -#: utils/adt/geo_ops.c:4568 -#: utils/adt/geo_ops.c:4574 +#: libpq/be-secure.c:942 #, c-format -msgid "invalid input syntax for type circle: \"%s\"" -msgstr "syntaxe en entr�e invalide pour le type circle : � %s �" +msgid "could not accept SSL connection: %m" +msgstr "n'a pas pu accepter la connexion SSL : %m" -#: utils/adt/geo_ops.c:4596 -#: utils/adt/geo_ops.c:4604 -msgid "could not format \"circle\" value" -msgstr "n'a pas pu formater la valeur � circle �" +#: libpq/be-secure.c:946 libpq/be-secure.c:957 +msgid "could not accept SSL connection: EOF detected" +msgstr "n'a pas pu accepter la connexion SSL : fin de fichier d�tect�" -#: utils/adt/geo_ops.c:4631 -msgid "invalid radius in external \"circle\" value" -msgstr "diam�tre invalide pour la valeur externe de � circle �" +#: libpq/be-secure.c:951 +#, c-format +msgid "could not accept SSL connection: %s" +msgstr "n'a pas pu accepter la connexion SSL : %s" -#: utils/adt/geo_ops.c:5152 -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" +#: libpq/be-secure.c:1007 +msgid "SSL certificate's common name contains embedded null" +msgstr "le nom commun du certificat SSL contient des NULL" -#: utils/adt/geo_ops.c:5157 -msgid "must request at least 2 points" -msgstr "doit demander au moins deux points" +#: libpq/be-secure.c:1018 +#, c-format +msgid "SSL connection from \"%s\"" +msgstr "connexion SSL de � %s �" -#: utils/adt/geo_ops.c:5201 -#: utils/adt/geo_ops.c:5224 -msgid "cannot convert empty polygon to circle" -msgstr "ne peut pas convertir un polyg�ne vide en cercle" +#: libpq/be-secure.c:1069 +msgid "no SSL error reported" +msgstr "aucune erreur SSL report�e" -#: utils/adt/int.c:162 -msgid "int2vector has too many elements" -msgstr "int2vector a trop d'�l�ments" +#: libpq/be-secure.c:1073 +#, c-format +msgid "SSL error code %lu" +msgstr "erreur SSL %lu" -#: utils/adt/int.c:236 -msgid "invalid int2vector data" -msgstr "donn�es int2vector invalide" +#: libpq/pqformat.c:436 +msgid "no data left in message" +msgstr "pas de donn�es dans le message" -#: utils/adt/int.c:242 -#: utils/adt/oid.c:212 -#: utils/adt/oid.c:292 -msgid "oidvector has too many elements" -msgstr "oidvector a trop d'�l�ments" +#: libpq/pqformat.c:636 +msgid "invalid string in message" +msgstr "cha�ne invalide dans le message" -#: utils/adt/int.c:1344 -#: utils/adt/int8.c:1375 -#: utils/adt/timestamp.c:4712 -#: utils/adt/timestamp.c:4793 -msgid "step size cannot equal zero" -msgstr "la taille du pas ne peut pas valoir z�ro" +#: libpq/pqformat.c:652 +msgid "invalid message format" +msgstr "format du message invalide" -#: utils/adt/int8.c:97 -#: utils/adt/int8.c:132 -#: utils/adt/numutils.c:53 -#: utils/adt/numutils.c:63 -#: utils/adt/numutils.c:105 +#: libpq/auth.c:257 #, c-format -msgid "invalid input syntax for integer: \"%s\"" -msgstr "syntaxe en entr�e invalide pour l'entier : � %s �" +msgid "authentication failed for user \"%s\": host rejected" +msgstr "authentification �chou�e pour l'utilisateur � %s � : h�te rejet�" -#: utils/adt/int8.c:113 +#: libpq/auth.c:260 #, c-format -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:502 -#: utils/adt/int8.c:531 -#: utils/adt/int8.c:552 -#: utils/adt/int8.c:582 -#: utils/adt/int8.c:614 -#: utils/adt/int8.c:632 -#: utils/adt/int8.c:681 -#: utils/adt/int8.c:698 -#: utils/adt/int8.c:767 -#: utils/adt/int8.c:788 -#: utils/adt/int8.c:815 -#: utils/adt/int8.c:846 -#: utils/adt/int8.c:867 -#: utils/adt/int8.c:888 -#: utils/adt/int8.c:915 -#: utils/adt/int8.c:955 -#: utils/adt/int8.c:976 -#: utils/adt/int8.c:1003 -#: utils/adt/int8.c:1034 -#: utils/adt/int8.c:1055 -#: utils/adt/int8.c:1076 -#: utils/adt/int8.c:1103 -#: utils/adt/int8.c:1276 -#: utils/adt/int8.c:1315 -#: utils/adt/numeric.c:2115 -#: utils/adt/varbit.c:1563 -msgid "bigint out of range" -msgstr "bigint en dehors des limites" +msgid "Kerberos 5 authentication failed for user \"%s\"" +msgstr "authentification Kerberos 5 �chou�e pour l'utilisateur � %s �" -#: utils/adt/int8.c:1332 -msgid "OID out of range" -msgstr "OID en dehors des limites" +#: libpq/auth.c:263 +#, c-format +msgid "\"trust\" authentication failed for user \"%s\"" +msgstr "authentification � trust � �chou�e pour l'utilisateur � %s �" -#: utils/adt/like_match.c:103 -#: utils/adt/like_match.c:163 -msgid "LIKE pattern must not end with escape character" -msgstr "le motif LIKE ne se termine pas de caract�res d'�chappement" +#: libpq/auth.c:266 +#, c-format +msgid "Ident authentication failed for user \"%s\"" +msgstr "authentification Ident �chou�e pour l'utilisateur � %s �" -#: utils/adt/like_match.c:287 -#: utils/adt/regexp.c:668 -msgid "invalid escape string" -msgstr "cha�ne d'�chappement invalide" +#: libpq/auth.c:269 +#, c-format +msgid "Peer authentication failed for user \"%s\"" +msgstr "authentification peer �chou�e pour l'utilisateur � %s �" -#: utils/adt/like_match.c:288 -#: utils/adt/regexp.c:669 -msgid "Escape string must be empty or one character." -msgstr "La cha�ne d'�chappement doit �tre vide ou ne contenir qu'un caract�re." +#: libpq/auth.c:273 +#, c-format +msgid "password authentication failed for user \"%s\"" +msgstr "authentification par mot de passe �chou�e pour l'utilisateur � %s �" -#: utils/adt/mac.c:65 +#: libpq/auth.c:278 #, c-format -msgid "invalid input syntax for type macaddr: \"%s\"" -msgstr "syntaxe en entr�e invalide pour le type macaddr : � %s �" +msgid "GSSAPI authentication failed for user \"%s\"" +msgstr "authentification GSSAPI �chou�e pour l'utilisateur � %s �" -#: utils/adt/mac.c:72 +#: libpq/auth.c:281 #, c-format -msgid "invalid octet value in \"macaddr\" value: \"%s\"" -msgstr "valeur d'un octet invalide dans la valeur de � macaddr � : � %s �" +msgid "SSPI authentication failed for user \"%s\"" +msgstr "authentification SSPI �chou�e pour l'utilisateur � %s �" -#: utils/adt/misc.c:80 -msgid "must be superuser to signal other server processes" -msgstr "doit �tre super-utilisateur pour envoyer un signal aux autres processus serveur" +#: libpq/auth.c:284 +#, c-format +msgid "PAM authentication failed for user \"%s\"" +msgstr "authentification PAM �chou�e pour l'utilisateur � %s �" -#: utils/adt/misc.c:89 +#: libpq/auth.c:287 #, c-format -msgid "PID %d is not a PostgreSQL server process" -msgstr "le PID %d n'est pas un processus du serveur PostgreSQL" +msgid "LDAP authentication failed for user \"%s\"" +msgstr "authentification LDAP �chou�e pour l'utilisateur � %s �" -#: utils/adt/misc.c:126 -msgid "must be superuser to signal the postmaster" -msgstr "doit �tre super-utilisateur pour envoyer un signal au postmaster" +#: libpq/auth.c:290 +#, c-format +msgid "certificate authentication failed for user \"%s\"" +msgstr "authentification par le certificat �chou�e pour l'utilisateur � %s �" -#: utils/adt/misc.c:131 +#: libpq/auth.c:293 #, c-format -msgid "failed to send signal to postmaster: %m" -msgstr "n'a pas pu envoyer le signal au postmaster : %m" +msgid "RADIUS authentication failed for user \"%s\"" +msgstr "authentification RADIUS �chou�e pour l'utilisateur � %s �" -#: utils/adt/misc.c:148 -msgid "must be superuser to rotate log files" -msgstr "doit �tre super-utilisateur pour ex�cuter la rotation des journaux applicatifs" +#: libpq/auth.c:296 +#, 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" -#: utils/adt/misc.c:153 -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" +#: libpq/auth.c:325 +msgid "missing or erroneous pg_hba.conf file" +msgstr "fichier pg_hba.conf manquant ou erron�" -#: utils/adt/misc.c:195 -msgid "global tablespace never has databases" -msgstr "le tablespace global n'a jamais de bases de donn�es" +#: libpq/auth.c:326 +msgid "See server log for details." +msgstr "Voir les journaux applicatifs du serveur pour plus de d�tails." -#: utils/adt/misc.c:216 -#, c-format -msgid "%u is not a tablespace OID" -msgstr "%u n'est pas un OID de tablespace" +#: libpq/auth.c:356 +msgid "connection requires a valid client certificate" +msgstr "la connexion requiert un certificat client valide" -#: utils/adt/misc.c:352 -msgid "unreserved" -msgstr "non r�serv�" +#: libpq/auth.c:400 libpq/auth.c:416 libpq/auth.c:464 libpq/auth.c:482 +msgid "SSL on" +msgstr "SSL actif" -#: utils/adt/misc.c:356 -msgid "unreserved (cannot be function or type name)" -msgstr "non r�serv� (ne peut pas �tre un nom de fonction ou de type)" +#: libpq/auth.c:400 libpq/auth.c:416 libpq/auth.c:464 libpq/auth.c:482 +msgid "SSL off" +msgstr "SSL inactif" -#: utils/adt/misc.c:360 -msgid "reserved (can be function or type name)" -msgstr "r�serv� (peut �tre un nom de fonction ou de type)" +#: libpq/auth.c:398 +#, c-format +msgid "" +"pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s" +msgstr "" +"pg_hba.conf rejette la connexion de la r�plication pour l'h�te � %s �,\n" +"utilisateur � %s �, %s" -#: utils/adt/misc.c:364 -msgid "reserved" -msgstr "r�serv�" +#: libpq/auth.c:404 +#, 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 �" -#: utils/adt/nabstime.c:160 +#: libpq/auth.c:413 #, c-format -msgid "invalid time zone name: \"%s\"" -msgstr "nom du fuseau horaire invalide : � %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" +"de donn�es � %s �, %s" -#: utils/adt/nabstime.c:506 -#: utils/adt/nabstime.c:579 -msgid "cannot convert abstime \"invalid\" to timestamp" -msgstr "ne peut pas convertir un abstime � invalid � en timestamp" - -#: utils/adt/nabstime.c:806 -msgid "invalid status in external \"tinterval\" value" -msgstr "statut invalide dans la valeur externe � tinterval �" - -#: utils/adt/nabstime.c:880 -msgid "cannot convert reltime \"invalid\" to interval" -msgstr "ne peut pas convertir reltime � invalid � en interval" - -#: utils/adt/nabstime.c:1562 +#: libpq/auth.c:420 #, c-format -msgid "invalid input syntax for type tinterval: \"%s\"" -msgstr "syntaxe en entr�e invalide pour le type tinterval : � %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" +"de donn�es � %s �" -#: utils/adt/network.c:118 +#: libpq/auth.c:449 #, c-format -msgid "invalid cidr value: \"%s\"" -msgstr "valeur cidr invalide : � %s �" - -#: utils/adt/network.c:119 -#: utils/adt/network.c:249 -msgid "Value has bits set to right of mask." -msgstr "La valeur a des bits positionn�s � la droite du masque." +msgid "Client IP address resolved to \"%s\", forward lookup matches." +msgstr "" +"Adresse IP du client r�solue en � %s �, la recherche inverse correspond bien." -#: utils/adt/network.c:160 -#: utils/adt/network.c:614 -#: utils/adt/network.c:639 -#: utils/adt/network.c:664 +#: libpq/auth.c:451 #, c-format -msgid "could not format inet value: %m" -msgstr "n'a pas pu formater la valeur inet : %m" +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." -#. translator: %s is inet or cidr -#: utils/adt/network.c:217 +#: libpq/auth.c:453 #, c-format -msgid "invalid address family in external \"%s\" value" -msgstr "famille d'adresses invalide dans la valeur externe � %s �" +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." -#. translator: %s is inet or cidr -#: utils/adt/network.c:224 +#: libpq/auth.c:462 #, c-format -msgid "invalid bits in external \"%s\" value" -msgstr "bits invalides dans la valeur externe � %s �" +msgid "" +"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s" +"\", %s" +msgstr "" +"aucune entr�e dans pg_hba.conf pour la connexion de la r�plication � partir " +"de\n" +"l'h�te � %s �, utilisateur � %s �, %s" -#. translator: %s is inet or cidr -#: utils/adt/network.c:233 +#: libpq/auth.c:469 #, c-format -msgid "invalid length in external \"%s\" value" -msgstr "longueur invalide dans la valeur externe � %s �" - -#: utils/adt/network.c:248 -msgid "invalid external \"cidr\" value" -msgstr "valeur externe � cidr � invalide" +msgid "" +"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\"" +msgstr "" +"aucune entr�e dans pg_hba.conf pour la connexion de la r�plication � partir " +"de\n" +"l'h�te � %s �, utilisateur � %s �" -#: utils/adt/network.c:370 -#: utils/adt/network.c:397 +#: libpq/auth.c:479 #, c-format -msgid "invalid mask length: %d" -msgstr "longueur du masque invalide : %d" +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" -#: utils/adt/network.c:682 +#: libpq/auth.c:487 #, c-format -msgid "could not format cidr value: %m" -msgstr "n'a pas pu formater la valeur cidr : %m" - -#: utils/adt/network.c:1255 -msgid "cannot AND inet values of different sizes" +msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\"" msgstr "" -"ne peut pas utiliser l'op�rateur AND sur des champs de type inet de tailles\n" -"diff�rentes" +"aucune entr�e dans pg_hba.conf pour l'h�te � %s �, utilisateur � %s �,\n" +"base de donn�es � %s �" -#: utils/adt/network.c:1287 -msgid "cannot OR inet values of different sizes" +#: libpq/auth.c:539 libpq/hba.c:1118 +msgid "" +"MD5 authentication is not supported when \"db_user_namespace\" is enabled" msgstr "" -"ne peut pas utiliser l'op�rateur OR sur des champs de type inet de tailles\n" -"diff�rentes" +"l'authentification MD5 n'est pas support�e quand � db_user_namespace � est " +"activ�" -#: utils/adt/network.c:1348 -#: utils/adt/network.c:1424 -msgid "result is out of range" -msgstr "le r�sultat est en dehors des limites" +#: libpq/auth.c:663 +#, 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" -#: utils/adt/network.c:1389 -msgid "cannot subtract inet values of different sizes" -msgstr "ne peut pas soustraire des valeurs inet de tailles diff�rentes" +#: libpq/auth.c:691 +msgid "invalid password packet size" +msgstr "taille du paquet du mot de passe invalide" -#: utils/adt/numeric.c:352 -#: utils/adt/numeric.c:379 -#: utils/adt/numeric.c:3083 -#: utils/adt/numeric.c:3106 -#: utils/adt/numeric.c:3130 -#: utils/adt/numeric.c:3137 -#, c-format -msgid "invalid input syntax for type numeric: \"%s\"" -msgstr "syntaxe en entr�e invalide pour le type numeric : � %s �" +#: libpq/auth.c:695 +msgid "received password packet" +msgstr "paquet du mot de passe re�u" -#: utils/adt/numeric.c:482 -msgid "invalid length in external \"numeric\" value" -msgstr "longueur invalide dans la valeur externe � numeric �" +#: libpq/auth.c:753 +#, c-format +msgid "Kerberos initialization returned error %d" +msgstr "l'initialisation de Kerberos a retourn� l'erreur %d" -#: utils/adt/numeric.c:493 -msgid "invalid sign in external \"numeric\" value" -msgstr "signe invalide dans la valeur externe � numeric �" +#: libpq/auth.c:763 +#, c-format +msgid "Kerberos keytab resolving returned error %d" +msgstr "la r�solution keytab de Kerberos a renvoy� l'erreur %d" -#: utils/adt/numeric.c:503 -msgid "invalid digit in external \"numeric\" value" -msgstr "chiffre invalide dans la valeur externe � numeric �" +#: libpq/auth.c:787 +#, 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" -#: utils/adt/numeric.c:634 -#: utils/adt/numeric.c:648 +#: libpq/auth.c:832 #, 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" +msgid "Kerberos recvauth returned error %d" +msgstr "recvauth de Kerberos a renvoy� l'erreur %d" -#: utils/adt/numeric.c:639 +#: libpq/auth.c:855 #, 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" +msgid "Kerberos unparse_name returned error %d" +msgstr "unparse_name de Kerberos a renvoy� l'erreur %d" -#: utils/adt/numeric.c:657 -msgid "invalid NUMERIC type modifier" -msgstr "modificateur de type NUMERIC invalide" +#: libpq/auth.c:1003 +msgid "GSSAPI is not supported in protocol version 2" +msgstr "GSSAPI n'est pas support� dans le protocole de version 2" -#: utils/adt/numeric.c:1690 -#: utils/adt/numeric.c:3545 -msgid "value overflows numeric format" -msgstr "la valeur d�passe le format numeric" +#: libpq/auth.c:1058 +#, 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" -#: utils/adt/numeric.c:2038 -msgid "cannot convert NaN to integer" -msgstr "ne peut pas convertir NaN en un entier" +#: libpq/auth.c:1121 +msgid "accepting GSS security context failed" +msgstr "�chec de l'acceptation du contexte de s�curit� GSS" -#: utils/adt/numeric.c:2106 -msgid "cannot convert NaN to bigint" -msgstr "ne peut pas convertir NaN en un entier de type bigint" +#: libpq/auth.c:1147 +msgid "retrieving GSS user name failed" +msgstr "�chec lors de la r�cup�ration du nom de l'utilisateur avec GSS" -#: utils/adt/numeric.c:2154 -msgid "cannot convert NaN to smallint" -msgstr "ne peut pas convertir NaN en un entier de type smallint" +#: libpq/auth.c:1264 +msgid "SSPI is not supported in protocol version 2" +msgstr "SSPI n'est pas support� dans le protocole de version 2" -#: utils/adt/numeric.c:3615 -msgid "numeric field overflow" -msgstr "champ num�rique en dehors des limites" +#: libpq/auth.c:1279 +msgid "could not acquire SSPI credentials" +msgstr "n'a pas pu obtenir les pi�ces d'identit� SSPI" -#: utils/adt/numeric.c:3616 +#: libpq/auth.c:1296 #, c-format -msgid "A field with precision %d, scale %d must round to an absolute value less than %s%d." -msgstr "" -"Un champ de pr�cision %d et d'�chelle %d doit �tre arrondi � une valeur\n" -"absolue inf�rieure � %s%d." +msgid "expected SSPI response, got message type %d" +msgstr "en attente d'une r�ponse SSPI, a re�u un message de type %d" -#: utils/adt/numeric.c:5064 -msgid "argument for function \"exp\" too big" -msgstr "l'argument de la fonction � exp � est trop gros" +#: libpq/auth.c:1368 +msgid "could not accept SSPI security context" +msgstr "n'a pas pu accepter le contexte de s�curit� SSPI" -#: utils/adt/numutils.c:77 +#: libpq/auth.c:1430 +msgid "could not get token from SSPI security context" +msgstr "n'a pas pu obtenir le jeton du contexte de s�curit� SSPI" + +#: libpq/auth.c:1674 #, c-format -msgid "value \"%s\" is out of range for type integer" -msgstr "la valeur � %s � est en dehors des limites du type integer" +msgid "could not create socket for Ident connection: %m" +msgstr "n'a pas pu cr�er le socket pour la connexion Ident : %m" -#: utils/adt/numutils.c:83 +#: libpq/auth.c:1689 #, c-format -msgid "value \"%s\" is out of range for type smallint" -msgstr "la valeur � %s � est en dehors des limites du type smallint" +msgid "could not bind to local address \"%s\": %m" +msgstr "n'a pas pu se lier � l'adresse locale � %s � : %m" -#: utils/adt/numutils.c:89 +#: libpq/auth.c:1701 #, c-format -msgid "value \"%s\" is out of range for 8-bit integer" -msgstr "la valeur � %s � est en dehors des limites des entiers sur 8 bits" +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" -#: utils/adt/oid.c:43 -#: utils/adt/oid.c:57 -#: utils/adt/oid.c:63 -#: utils/adt/oid.c:84 +#: libpq/auth.c:1721 #, c-format -msgid "invalid input syntax for type oid: \"%s\"" -msgstr "syntaxe invalide en entr�e pour le type oid : � %s �" +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" -#: utils/adt/oid.c:69 -#: utils/adt/oid.c:107 +#: libpq/auth.c:1736 #, c-format -msgid "value \"%s\" is out of range for type oid" -msgstr "la valeur � %s � est en dehors des limites pour le type oid" +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" +"%m" -#: utils/adt/oid.c:286 -msgid "invalid oidvector data" -msgstr "donn�e oidvector invalide" +#: libpq/auth.c:1746 +#, c-format +msgid "invalidly formatted response from Ident server: \"%s\"" +msgstr "r�ponse mal format�e du serveur Ident : � %s �" -#: utils/adt/oracle_compat.c:892 -msgid "requested character too large" -msgstr "caract�re demand� trop long" +#: libpq/auth.c:1785 +msgid "peer authentication is not supported on this platform" +msgstr "" +"la m�thode d'authentification �peer n'est pas support�e sur cette plateforme" -#: utils/adt/oracle_compat.c:938 -#: utils/adt/oracle_compat.c:992 +#: libpq/auth.c:1789 #, c-format -msgid "requested character too large for encoding: %d" -msgstr "caract�re demand� trop long pour l'encodage : %d" +msgid "could not get peer credentials: %m" +msgstr "n'a pas pu obtenir l'authentification de l'autre : %m" -#: utils/adt/oracle_compat.c:985 -msgid "null character not permitted" -msgstr "caract�re nul interdit" +#: libpq/auth.c:1798 +#, c-format +msgid "local user with ID %d does not exist" +msgstr "l'utilisateur local dont l'identifiant est %d n'existe pas" -#: utils/adt/pseudotypes.c:94 -msgid "cannot accept a value of type any" -msgstr "ne peut pas accepter une valeur de type any" +#: libpq/auth.c:1881 libpq/auth.c:2153 libpq/auth.c:2513 +msgid "empty password returned by client" +msgstr "mot de passe vide renvoy� par le client" -#: utils/adt/pseudotypes.c:107 -msgid "cannot display a value of type any" -msgstr "ne peut pas afficher une valeur de type any" +#: libpq/auth.c:1891 +#, c-format +msgid "error from underlying PAM layer: %s" +msgstr "erreur provenant de la couche PAM : %s" -#: utils/adt/pseudotypes.c:121 -#: utils/adt/pseudotypes.c:149 -msgid "cannot accept a value of type anyarray" -msgstr "ne peut pas accepter une valeur de type anyarray" +#: libpq/auth.c:1960 +#, c-format +msgid "could not create PAM authenticator: %s" +msgstr "n'a pas pu cr�er l'authenticateur PAM : %s" -#: utils/adt/pseudotypes.c:174 -msgid "cannot accept a value of type anyenum" -msgstr "ne peut pas accepter une valeur de type anyenum" +#: libpq/auth.c:1971 +#, c-format +msgid "pam_set_item(PAM_USER) failed: %s" +msgstr "pam_set_item(PAM_USER) a �chou� : %s" -#: utils/adt/pseudotypes.c:224 -msgid "cannot accept a value of type trigger" -msgstr "ne peut pas accepter une valeur de type trigger" +#: libpq/auth.c:1982 +#, c-format +msgid "pam_set_item(PAM_CONV) failed: %s" +msgstr "pam_set_item(PAM_CONV) a �chou� : %s" -#: utils/adt/pseudotypes.c:237 -msgid "cannot display a value of type trigger" -msgstr "ne peut pas afficher une valeur de type trigger" +#: libpq/auth.c:1993 +#, c-format +msgid "pam_authenticate failed: %s" +msgstr "pam_authenticate a �chou� : %s" -#: utils/adt/pseudotypes.c:251 -msgid "cannot accept a value of type language_handler" -msgstr "ne peut pas accepter une valeur de type language_handler" +#: libpq/auth.c:2004 +#, c-format +msgid "pam_acct_mgmt failed: %s" +msgstr "pam_acct_mgmt a �chou� : %s" -#: utils/adt/pseudotypes.c:264 -msgid "cannot display a value of type language_handler" -msgstr "ne peut pas afficher une valeur de type language_handler" +#: libpq/auth.c:2015 +#, c-format +msgid "could not release PAM authenticator: %s" +msgstr "n'a pas pu fermer l'authenticateur PAM : %s" -#: utils/adt/pseudotypes.c:278 -msgid "cannot accept a value of type internal" -msgstr "ne peut pas accepter une valeur de type internal" +#: libpq/auth.c:2048 libpq/auth.c:2052 +#, c-format +msgid "could not initialize LDAP: error code %d" +msgstr "n'a pas pu initialiser LDAP : code d'erreur %d" -#: utils/adt/pseudotypes.c:291 -msgid "cannot display a value of type internal" -msgstr "ne peut pas afficher une valeur de type internal" +#: libpq/auth.c:2062 +#, c-format +msgid "could not set LDAP protocol version: error code %d" +msgstr "n'a pas pu initialiser la version du protocole LDAP : code d'erreur %d" -#: utils/adt/pseudotypes.c:305 -msgid "cannot accept a value of type opaque" -msgstr "ne peut pas accepter une valeur de type opaque" +#: libpq/auth.c:2091 +msgid "could not load wldap32.dll" +msgstr "n'a pas pu charger wldap32.dll" -#: utils/adt/pseudotypes.c:318 -msgid "cannot display a value of type opaque" -msgstr "ne peut pas afficher une valeur de type opaque" +#: libpq/auth.c:2099 +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" -#: utils/adt/pseudotypes.c:332 -msgid "cannot accept a value of type anyelement" -msgstr "ne peut pas accepter une valeur de type anyelement" +#: libpq/auth.c:2100 +msgid "LDAP over SSL is not supported on this platform." +msgstr "LDAP via SSL n'est pas support� sur cette plateforme." -#: utils/adt/pseudotypes.c:345 -msgid "cannot display a value of type anyelement" -msgstr "ne peut pas afficher une valeur de type anyelement" +#: libpq/auth.c:2115 +#, c-format +msgid "could not start LDAP TLS session: error code %d" +msgstr "n'a pas pu d�marrer la session TLS LDAP : code d'erreur %d" -#: utils/adt/pseudotypes.c:358 -msgid "cannot accept a value of type anynonarray" -msgstr "ne peut pas accepter une valeur de type anynonarray" - -#: utils/adt/pseudotypes.c:371 -msgid "cannot display a value of type anynonarray" -msgstr "ne peut pas afficher une valeur de type anynonarray" - -#: utils/adt/pseudotypes.c:384 -msgid "cannot accept a value of a shell type" -msgstr "ne peut pas accepter une valeur de type shell" +#: libpq/auth.c:2137 +msgid "LDAP server not specified" +msgstr "serveur LDAP non pr�cis�" -#: utils/adt/pseudotypes.c:397 -msgid "cannot display a value of a shell type" -msgstr "ne peut pas afficher une valeur de type shell" +#: libpq/auth.c:2189 +msgid "invalid character in user name for LDAP authentication" +msgstr "" +"caract�re invalide dans le nom de l'utilisateur pour l'authentification LDAP" -#: utils/adt/regexp.c:269 -#: utils/adt/varlena.c:2797 +#: libpq/auth.c:2204 #, c-format -msgid "regular expression failed: %s" -msgstr "l'expression rationnelle a �chou� : %s" +msgid "" +"could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": " +"error code %d" +msgstr "" +"n'a pas pu r�aliser la connexion LDAP initiale pour ldapbinddn � %s � sur " +"le\n" +"serveur � %s � : code d'erreur %d" -#: utils/adt/regexp.c:404 +#: libpq/auth.c:2229 #, c-format -msgid "invalid regexp option: \"%c\"" -msgstr "option invalide de l'expression rationnelle : � %c �" - -#: utils/adt/regexp.c:865 -msgid "regexp_split does not support the global option" -msgstr "regexp_split ne supporte pas l'option globale" +msgid "could not search LDAP for filter \"%s\" on server \"%s\": error code %d" +msgstr "" +"n'a pas pu rechercher dans LDAP pour filtrer � %s � sur le serveur � %s � :\n" +"code d'erreur %d" -#: utils/adt/regproc.c:123 -#: utils/adt/regproc.c:143 +#: libpq/auth.c:2239 #, c-format -msgid "more than one function named \"%s\"" -msgstr "il existe plus d'une fonction nomm�e � %s �" +msgid "LDAP search failed for filter \"%s\" on server \"%s\": no such user" +msgstr "" +"�chec de la recherche LDAP pour le filtre � %s � sur le serveur � %s � :\n" +"utilisateur non trouv�" -#: utils/adt/regproc.c:468 -#: utils/adt/regproc.c:488 +#: libpq/auth.c:2243 #, c-format -msgid "more than one operator named %s" -msgstr "il existe plus d'un op�rateur nomm�%s" - -#: utils/adt/regproc.c:635 -#: utils/adt/regproc.c:1485 -#: utils/adt/ruleutils.c:5513 -#: utils/adt/ruleutils.c:5568 -#: utils/adt/ruleutils.c:5605 -msgid "too many arguments" -msgstr "trop d'arguments" +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)" -#: utils/adt/regproc.c:636 -msgid "Provide two argument types for operator." -msgstr "Fournit deux types d'argument pour l'op�rateur." +#: libpq/auth.c:2260 +#, c-format +msgid "" +"could not get dn for the first entry matching \"%s\" on server \"%s\": %s" +msgstr "" +"n'a pas pu obtenir le dn pour la premi�re entr�e correspondante � %s � sur\n" +"le serveur � %s � : %s" -#: utils/adt/regproc.c:1320 -#: utils/adt/regproc.c:1325 -#: utils/adt/varlena.c:2198 -#: utils/adt/varlena.c:2203 -msgid "invalid name syntax" -msgstr "syntaxe du nom invalide" +#: libpq/auth.c:2280 +#, 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" -#: utils/adt/regproc.c:1383 -msgid "expected a left parenthesis" -msgstr "attendait une parenth�se gauche" +#: libpq/auth.c:2317 +#, c-format +msgid "LDAP login failed for user \"%s\" on server \"%s\": error code %d" +msgstr "" +"�chec de connexion LDAP pour l'utilisateur � %s � sur le serveur � %s � :\n" +"code d'erreur %d" -#: utils/adt/regproc.c:1399 -msgid "expected a right parenthesis" -msgstr "attendait une parenth�se droite" +#: libpq/auth.c:2345 +#, c-format +msgid "" +"certificate authentication failed for user \"%s\": client certificate " +"contains no user name" +msgstr "" +"l'authentification par le certificat a �chou� pour l'utilisateur � %s � :\n" +"le certificat du client ne contient aucun nom d'utilisateur" -#: utils/adt/regproc.c:1418 -msgid "expected a type name" -msgstr "attendait un nom de type" +#: libpq/auth.c:2469 +msgid "RADIUS server not specified" +msgstr "serveur RADIUS non pr�cis�" -#: utils/adt/regproc.c:1450 -msgid "improper type name" -msgstr "nom du type invalide" +#: libpq/auth.c:2476 +msgid "RADIUS secret not specified" +msgstr "secret RADIUS non pr�cis�" -#: utils/adt/ri_triggers.c:407 -#: utils/adt/ri_triggers.c:2803 -#: utils/adt/ri_triggers.c:3454 -#: utils/adt/ri_triggers.c:3486 +#: libpq/auth.c:2492 libpq/hba.c:1403 #, c-format -msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\"" +msgid "could not translate RADIUS server name \"%s\" to address: %s" msgstr "" -"une instruction insert ou update sur la table � %s � viole la contrainte de cl�\n" -"�trang�re � %s �" +"n'a pas pu traduire le nom du serveur RADIUS � %s � en une adresse : %s" -#: utils/adt/ri_triggers.c:410 -#: utils/adt/ri_triggers.c:2806 -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." +#: libpq/auth.c:2520 +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" -#: utils/adt/ri_triggers.c:3016 -#, c-format -msgid "function \"%s\" must be fired for INSERT" -msgstr "la fonction � %s � doit �tre ex�cut�e pour l'instruction INSERT" +#: libpq/auth.c:2531 +msgid "could not generate random encryption vector" +msgstr "n'a pas pu g�n�rer le vecteur de chiffrement al�atoire" -#: utils/adt/ri_triggers.c:3022 -#, c-format -msgid "function \"%s\" must be fired for UPDATE" -msgstr "la fonction � %s � doit �tre ex�cut�e pour l'instruction UPDATE" +#: libpq/auth.c:2554 +msgid "could not perform MD5 encryption of password" +msgstr "n'a pas pu r�aliser le chiffrement MD5 du mot de passe" -#: utils/adt/ri_triggers.c:3036 +#: libpq/auth.c:2576 #, c-format -msgid "function \"%s\" must be fired for DELETE" -msgstr "la fonction � %s � doit �tre ex�cut�e pour l'instruction DELETE" +msgid "could not create RADIUS socket: %m" +msgstr "n'a pas pu cr�er le socket RADIUS : %m" -#: utils/adt/ri_triggers.c:3065 +#: libpq/auth.c:2597 #, 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:3067 -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." +msgid "could not bind local RADIUS socket: %m" +msgstr "n'a pas pu se lier � la socket RADIUS : %m" -#: utils/adt/ri_triggers.c:3421 +#: libpq/auth.c:2607 #, c-format -msgid "referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave unexpected result" -msgstr "" -"la requ�te d'int�grit� r�f�rentielle sur � %s � � partir de la contrainte � %s �\n" -"sur � %s � donne des r�sultats inattendus" +msgid "could not send RADIUS packet: %m" +msgstr "n'a pas pu transmettre le paquet RADIUS : %m" -#: utils/adt/ri_triggers.c:3425 -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." +#: libpq/auth.c:2636 libpq/auth.c:2661 +msgid "timeout waiting for RADIUS response" +msgstr "d�passement du d�lai pour la r�ponse du RADIUS" -#: utils/adt/ri_triggers.c:3456 +#: libpq/auth.c:2654 #, c-format -msgid "No rows were found in \"%s\"." -msgstr "Aucune ligne trouv�e dans � %s �." +msgid "could not check status on RADIUS socket: %m" +msgstr "n'a pas pu v�rifier le statut sur la socket RADIUS : %m" -#: utils/adt/ri_triggers.c:3488 +#: libpq/auth.c:2683 #, 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 �." +msgid "could not read RADIUS response: %m" +msgstr "n'a pas pu lire la r�ponse RADIUS : %m" -#: utils/adt/ri_triggers.c:3494 +#: libpq/auth.c:2695 libpq/auth.c:2699 #, 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 �" +msgid "RADIUS response was sent from incorrect port: %i" +msgstr "la r�ponse RADIUS a �t� envoy�e � partir d'un mauvais port : %i" -#: utils/adt/ri_triggers.c:3497 +#: libpq/auth.c:2708 #, 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:98 -#: utils/adt/rowtypes.c:473 -msgid "input of anonymous composite types is not implemented" -msgstr "l'ajout de colonnes ayant un type compos� n'est pas impl�ment�" +msgid "RADIUS response too short: %i" +msgstr "r�ponse RADIUS trop courte : %i" -#: 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 +#: libpq/auth.c:2715 #, c-format -msgid "malformed record literal: \"%s\"" -msgstr "enregistrement lit�ral invalide : � %s �" - -#: utils/adt/rowtypes.c:152 -msgid "Missing left parenthesis." -msgstr "Parenth�se gauche manquante" +msgid "RADIUS response has corrupt length: %i (actual length %i)" +msgstr "la r�ponse RADIUS a une longueur corrompue : %i (longueur actuelle %i)" -#: utils/adt/rowtypes.c:180 -msgid "Too few columns." -msgstr "Pas assez de colonnes." +#: libpq/auth.c:2723 +#, c-format +msgid "RADIUS response is to a different request: %i (should be %i)" +msgstr "" +"la r�ponse RADIUS correspond � une demande diff�rente : %i (devrait �tre %i)" -#: utils/adt/rowtypes.c:204 -#: utils/adt/rowtypes.c:212 -msgid "Unexpected end of input." -msgstr "Fin de l'entr�e inattendue." +#: libpq/auth.c:2748 +msgid "could not perform MD5 encryption of received packet" +msgstr "n'a pas pu r�aliser le chiffrement MD5 du paquet re�u" -#: utils/adt/rowtypes.c:263 -msgid "Too many columns." -msgstr "Trop de colonnes." +#: libpq/auth.c:2757 +msgid "RADIUS response has incorrect MD5 signature" +msgstr "la r�ponse RADIUS a une signature MD5 erron�e" -#: utils/adt/rowtypes.c:271 -msgid "Junk after right parenthesis." -msgstr "Probl�me apr�s la parenth�se droite." +#: libpq/auth.c:2774 +#, c-format +msgid "RADIUS response has invalid code (%i) for user \"%s\"" +msgstr "la r�ponse RADIUS a un code invalide (%i) pour l'utilisateur � %s �" -#: utils/adt/rowtypes.c:522 +#: libpq/hba.c:160 #, c-format -msgid "wrong number of columns: %d, expected %d" -msgstr "mauvais nombre de colonnes : %d, alors que %d attendu" +msgid "authentication file token too long, skipping: \"%s\"" +msgstr "jeton du fichier d'authentification trop long, ignore : � %s �" -#: utils/adt/rowtypes.c:549 +#: libpq/hba.c:355 #, c-format -msgid "wrong data type: %u, expected %u" -msgstr "mauvais type de donn�es : %u, alors que %u attendu" +msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" +msgstr "" +"n'a pas pu ouvrir le fichier d'authentification secondaire � @%s � comme\n" +"� %s � : %m" -#: utils/adt/rowtypes.c:610 +#: libpq/hba.c:628 #, c-format -msgid "improper binary format in record column %d" -msgstr "format binaire invalide dans l'enregistrement de la colonne %d" +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" -#: utils/adt/rowtypes.c:896 -#: utils/adt/rowtypes.c:1122 +#. translator: the second %s is a list of auth methods +#: libpq/hba.c:779 #, c-format -msgid "cannot compare dissimilar column types %s and %s at record column %d" +msgid "" +"authentication option \"%s\" is only valid for authentication methods %s" msgstr "" -"ne peut pas comparer les types de colonnes non similaires %s et %s pour la\n" -"colonne %d de l'enregistrement" +"l'option d'authentification � %s � est seulement valide pour les m�thodes\n" +"d'authentification � %s �" -#: utils/adt/rowtypes.c:974 -#: utils/adt/rowtypes.c:1185 -msgid "cannot compare record types with different numbers of columns" +#: libpq/hba.c:795 +#, c-format +msgid "authentication method \"%s\" requires argument \"%s\" to be set" msgstr "" -"ne peut pas comparer les types d'enregistrement avec des num�ros diff�rents\n" -"des colonnes" +"la m�thode d'authentification � %s � requiert un argument � %s � pour " +"�tremise en place" -#: utils/adt/ruleutils.c:2237 -#, c-format -msgid "rule \"%s\" has unsupported event type %d" -msgstr "la r�gle � %s � a un type d'�v�nement %d non support�" +#: libpq/hba.c:832 +msgid "local connections are not supported by this build" +msgstr "les connexions locales ne sont pas support�es dans cette installation" -#: utils/adt/selfuncs.c:4761 -#: utils/adt/selfuncs.c:5190 -msgid "case insensitive matching not supported on type bytea" -msgstr "la recherche insensible � la casse n'est pas support�e avec le type bytea" +#: libpq/hba.c:853 +msgid "hostssl requires SSL to be turned on" +msgstr "hostssl requiert que SSL soit activ�" -#: utils/adt/selfuncs.c:4866 -#: utils/adt/selfuncs.c:5350 -msgid "regular-expression matching not supported on type bytea" -msgstr "la recherche par expression rationnelle n'est pas support�e sur le type bytea" +#: libpq/hba.c:854 +msgid "Set ssl = on in postgresql.conf." +msgstr "Configurez ssl = on dans le postgresql.conf." -#: 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 "syntaxe en entr�e invalide pour le type tid : � %s �" +#: libpq/hba.c:862 +msgid "hostssl is not supported by this build" +msgstr "hostssl n'est pas support� par cette installation" -#: utils/adt/timestamp.c:97 +#: libpq/hba.c:863 +msgid "Compile with --with-openssl to use SSL connections." +msgstr "Compilez avec --with-ssl pour utiliser les connexions SSL" + +#: libpq/hba.c:885 #, 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" +msgid "invalid connection type \"%s\"" +msgstr "type de connexion � %s � invalide" -#: utils/adt/timestamp.c:103 +#: libpq/hba.c:898 +msgid "end-of-line before database specification" +msgstr "fin de ligne avant la sp�cification de la base de donn�es" + +#: libpq/hba.c:911 +msgid "end-of-line before role specification" +msgstr "fin de ligne avant la sp�cification du r�le" + +#: libpq/hba.c:926 +msgid "end-of-line before IP address specification" +msgstr "fin de ligne avant la sp�cification de l'adresse IP" + +#: libpq/hba.c:980 #, 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" +msgid "invalid IP address \"%s\": %s" +msgstr "adresse IP � %s � invalide : %s" -#: utils/adt/timestamp.c:171 -#: utils/adt/timestamp.c:435 +#: libpq/hba.c:1000 #, c-format -msgid "timestamp out of range: \"%s\"" -msgstr "timestamp en dehors de limites : � %s �" +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 �" -#: utils/adt/timestamp.c:189 -#: utils/adt/timestamp.c:453 -#: utils/adt/timestamp.c:664 +#: libpq/hba.c:1014 #, c-format -msgid "date/time value \"%s\" is no longer supported" -msgstr "la valeur date/time � %s � n'est plus support�e" +msgid "invalid CIDR mask in address \"%s\"" +msgstr "masque CIDR invalide dans l'adresse � %s �" -#: utils/adt/timestamp.c:260 -msgid "timestamp cannot be NaN" -msgstr "timestamp ne peut pas valoir NaN" +#: libpq/hba.c:1032 +msgid "end-of-line before netmask specification" +msgstr "fin de ligne avant la sp�cification du masque r�seau" -#: utils/adt/timestamp.c:370 +#: libpq/hba.c:1044 #, 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" +msgid "invalid IP mask \"%s\": %s" +msgstr "masque IP � %s � invalide : %s" -#: 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 "intervalle en dehors des limites" +#: libpq/hba.c:1061 +msgid "IP address and mask do not match" +msgstr "l'adresse IP et le masque ne correspondent pas" -#: utils/adt/timestamp.c:787 -#: utils/adt/timestamp.c:820 -msgid "invalid INTERVAL type modifier" -msgstr "modificateur de type INTERVAL invalide" +#: libpq/hba.c:1076 +msgid "end-of-line before authentication method" +msgstr "fin de ligne avant la m�thode d'authentification" -#: utils/adt/timestamp.c:803 +#: libpq/hba.c:1149 #, 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" +msgid "invalid authentication method \"%s\"" +msgstr "m�thode d'authentification � %s � invalide" -#: utils/adt/timestamp.c:809 +#: libpq/hba.c:1160 #, 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" +msgid "invalid authentication method \"%s\": not supported by this build" +msgstr "" +"m�thode d'authentification � %s � invalide : non support�e sur cette\n" +"installation" -#: utils/adt/timestamp.c:1101 -#, 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" +#: libpq/hba.c:1181 +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" -#: utils/adt/timestamp.c:2306 -msgid "cannot subtract infinite timestamps" -msgstr "ne peut pas soustraire les valeurs timestamps infinies" +#: libpq/hba.c:1192 +msgid "gssapi authentication is not supported on local sockets" +msgstr "" +"l'authentification gssapi n'est pas support�e sur les connexions locales " +"par\n" +"socket" -#: utils/adt/timestamp.c:3365 -#: utils/adt/timestamp.c:3961 -#: utils/adt/timestamp.c:4020 -#, c-format -msgid "timestamp units \"%s\" not supported" -msgstr "les unit�s timestamp � %s � ne sont pas support�es" +#: libpq/hba.c:1203 +msgid "peer authentication is only supported on local sockets" +msgstr "" +"l'authentification peer est seulement support�e sur les connexions locales " +"par\n" +"socket" -#: utils/adt/timestamp.c:3379 -#: utils/adt/timestamp.c:4030 -#, c-format -msgid "timestamp units \"%s\" not recognized" -msgstr "les unit� � %s � ne sont pas reconnues pour le type timestamp" +#: libpq/hba.c:1220 +msgid "cert authentication is only supported on hostssl connections" +msgstr "" +"l'authentification cert est seulement support�e sur les connexions hostssl" -#: utils/adt/timestamp.c:3520 -#: utils/adt/timestamp.c:4192 -#: utils/adt/timestamp.c:4233 +#: libpq/hba.c:1241 #, c-format -msgid "timestamp with time zone units \"%s\" not supported" +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:1257 +msgid "ident, peer, krb5, gssapi, sspi and cert" +msgstr "ident, peer, krb5, gssapi, sspi et cert" + +#: libpq/hba.c:1271 +msgid "clientcert can only be configured for \"hostssl\" rows" +msgstr "clientcert peut seulement �tre configur� pour les lignes � hostssl �" + +#: libpq/hba.c:1282 +msgid "" +"client certificates can only be checked if a root certificate store is " +"available" msgstr "" -"les unit�s � %s � ne sont pas support�es pour le type � timestamp with time\n" -"zone �" +"les certificats cert peuvent seulement �tre v�rifi�s si un emplacement de\n" +"certificat racine est disponible" -#: utils/adt/timestamp.c:3537 -#: utils/adt/timestamp.c:4242 -#, c-format -msgid "timestamp with time zone units \"%s\" not recognized" +#: libpq/hba.c:1283 +msgid "Make sure the root.crt file is present and readable." msgstr "" -"Les unit�s � %s � ne sont pas reconnues pour le type � timestamp with time\n" -"zone �" +"Assurez-vous que le certificat racine (root.crt) est pr�sent et lisible" -#: utils/adt/timestamp.c:3617 -#: utils/adt/timestamp.c:4348 -#, c-format -msgid "interval units \"%s\" not supported" -msgstr "Les unit�s � %s � ne sont pas support�es pour le type interval" +#: libpq/hba.c:1296 +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 �" -#: utils/adt/timestamp.c:3633 -#: utils/adt/timestamp.c:4375 +#: libpq/hba.c:1330 #, c-format -msgid "interval units \"%s\" not recognized" -msgstr "Les unit�s � %s � ne sont pas reconnues pour le type interval" +msgid "invalid LDAP port number: \"%s\"" +msgstr "num�ro de port LDAP invalide : � %s �" -#: utils/adt/timestamp.c:4445 -#: utils/adt/timestamp.c:4618 +#: libpq/hba.c:1376 libpq/hba.c:1384 +msgid "krb5, gssapi and sspi" +msgstr "krb5, gssapi et sspi" + +#: libpq/hba.c:1422 #, c-format -msgid "could not convert to time zone \"%s\"" -msgstr "n'a pas pu convertir vers le fuseau horaire � %s �" +msgid "invalid RADIUS port number: \"%s\"" +msgstr "num�ro de port RADIUS invalide : � %s �" -#: utils/adt/timestamp.c:4477 -#: utils/adt/timestamp.c:4651 +#: libpq/hba.c:1442 #, c-format -msgid "interval time zone \"%s\" must not specify month" -msgstr "l'intervalle de fuseau horaire � %s � ne doit pas sp�cifier le mois" +msgid "unrecognized authentication option name: \"%s\"" +msgstr "nom d'option de l'authentification inconnu : � %s �" -#: utils/adt/trigfuncs.c:41 -msgid "suppress_redundant_updates_trigger: must be called as trigger" -msgstr "suppress_redundant_updates_trigger : doit �tre appel� par un trigger" +#: libpq/hba.c:1474 +msgid "" +"cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, or ldapsearchattribute " +"together with ldapprefix" +msgstr "" +"ne peut pas utiliser ldapbasedn, ldapbinddn, ldapbindpasswd\n" +"ou ldapsearchattribute avec ldapprefix" -#: utils/adt/trigfuncs.c:47 -msgid "suppress_redundant_updates_trigger: must be called on update" -msgstr "suppress_redundant_updates_trigger : doit �tre appel� sur une mise � jour" +#: libpq/hba.c:1484 +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" -#: utils/adt/trigfuncs.c:53 -msgid "suppress_redundant_updates_trigger: must be called before update" -msgstr "suppress_redundant_updates_trigger : doit �tre appel� avant une mise � jour" +#: libpq/hba.c:1815 +#, c-format +msgid "invalid regular expression \"%s\": %s" +msgstr "expression rationnelle invalide � %s � : %s" -#: utils/adt/trigfuncs.c:59 -msgid "suppress_redundant_updates_trigger: must be called for each row" -msgstr "suppress_redundant_updates_trigger : doit �tre appel� pour chaque ligne" +#: libpq/hba.c:1838 +#, c-format +msgid "regular expression match for \"%s\" failed: %s" +msgstr "" +"la correspondance de l'expression rationnelle pour � %s � a �chou� : %s" -#: utils/adt/tsgistidx.c:100 -msgid "gtsvector_in not implemented" -msgstr "gtsvector_in n'est pas encore impl�ment�" +#: libpq/hba.c:1856 +#, c-format +msgid "" +"regular expression \"%s\" has no subexpressions as requested by " +"backreference in \"%s\"" +msgstr "" +"l'expression rationnelle � %s � n'a pas de sous-expressions comme celle\n" +"demand�e par la r�f�rence dans � %s �" -#: utils/adt/tsquery.c:156 -#: utils/adt/tsquery.c:392 -#: utils/adt/tsvector_parser.c:136 +#: libpq/hba.c:1922 #, c-format -msgid "syntax error in tsquery: \"%s\"" -msgstr "erreur de syntaxe dans tsquery : � %s �" +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" -#: utils/adt/tsquery.c:177 +#: libpq/hba.c:1963 #, c-format -msgid "no operand in tsquery: \"%s\"" -msgstr "aucun op�rande dans tsquery : � %s �" +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" +"correspondent pas" -#: utils/adt/tsquery.c:250 +#: libpq/hba.c:1984 #, c-format -msgid "value is too big in tsquery: \"%s\"" -msgstr "valeur trop importante dans tsquery : � %s �" +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 �" -#: utils/adt/tsquery.c:255 +#: libpq/hba.c:2008 #, c-format -msgid "operand is too long in tsquery: \"%s\"" -msgstr "l'op�rande est trop long dans tsquery : � %s �" +msgid "could not open usermap file \"%s\": %m" +msgstr "n'a pas pu ouvrir le fichier usermap � %s � : %m" -#: utils/adt/tsquery.c:283 +#: 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 "word is too long in tsquery: \"%s\"" -msgstr "le mot est trop long dans tsquery : � %s �" +msgid "invalid large-object descriptor: %d" +msgstr "descripteur invalide de � Large Object � : %d" -#: utils/adt/tsquery.c:512 +#: libpq/be-fsstubs.c:173 libpq/be-fsstubs.c:205 libpq/be-fsstubs.c:529 #, 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 �" +msgid "permission denied for large object %u" +msgstr "droit refus� pour le Large Object %u" -#: utils/adt/tsquery_cleanup.c:285 -msgid "text-search query contains only stop words or doesn't contain lexemes, ignored" +#: libpq/be-fsstubs.c:194 +#, c-format +msgid "large object descriptor %d was not opened for writing" msgstr "" -"la requ�te de recherche plein texte ne contient que des termes courants\n" -"ou ne contient pas de lexemes, ignor�" - -#: utils/adt/tsquery_rewrite.c:296 -msgid "ts_rewrite query must return two tsquery columns" -msgstr "la requ�te ts_rewrite doit renvoyer deux colonnes tsquery" +"le descripteur %d du � Large Object � n'a pas �t� ouvert pour l'�criture" -#: utils/adt/tsrank.c:404 -msgid "array of weight must be one-dimensional" -msgstr "le tableau de poids doit �tre sur une seule dimension" - -#: utils/adt/tsrank.c:409 -msgid "array of weight is too short" -msgstr "le tableau de poids est trop court" +#: libpq/be-fsstubs.c:287 catalog/objectaddress.c:828 +#: catalog/pg_largeobject.c:200 +#, c-format +msgid "must be owner of large object %u" +msgstr "doit �tre le propri�taire du Large Object %u" -#: utils/adt/tsrank.c:414 -msgid "array of weight must not contain nulls" -msgstr "le tableau de poids ne doit pas contenir de valeurs NULL" +#: libpq/be-fsstubs.c:392 +msgid "must be superuser to use server-side lo_import()" +msgstr "doit �tre super-utilisateur pour utiliser lo_import() du c�t� serveur" -#: utils/adt/tsrank.c:423 -#: utils/adt/tsrank.c:749 -msgid "weight out of range" -msgstr "poids en dehors des limites" +#: libpq/be-fsstubs.c:393 +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." -#: utils/adt/tsvector.c:215 +#: libpq/be-fsstubs.c:406 #, c-format -msgid "word is too long (%ld bytes, max %ld bytes)" -msgstr "le mot est trop long (%ld octets, max %ld octets)" +msgid "could not open server file \"%s\": %m" +msgstr "n'a pas pu ouvrir le fichier serveur � %s � : %m" -#: utils/adt/tsvector.c:222 +#: libpq/be-fsstubs.c:428 #, c-format -msgid "string is too long for tsvector (%ld bytes, max %ld bytes)" -msgstr "la cha�ne est trop longue pour tsvector (%ld octets, max %ld octets)" - -#: utils/adt/tsvector_op.c:1103 -msgid "ts_stat query must return one tsvector column" -msgstr "la requ�te ts_stat doit renvoyer une colonne tsvector" +msgid "could not read server file \"%s\": %m" +msgstr "n'a pas pu lire le fichier serveur � %s � : %m" -#: utils/adt/tsvector_op.c:1283 -#, c-format -msgid "tsvector column \"%s\" does not exist" -msgstr "la colonne tsvector � %s � n'existe pas" +#: libpq/be-fsstubs.c:458 +msgid "must be superuser to use server-side lo_export()" +msgstr "doit �tre super-utilisateur pour utiliser lo_export() du c�t� serveur" -#: utils/adt/tsvector_op.c:1289 -#, c-format -msgid "column \"%s\" is not of tsvector type" -msgstr "la colonne � %s � n'est pas de type tsvector" +#: libpq/be-fsstubs.c:459 +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." -#: utils/adt/tsvector_op.c:1301 +#: libpq/be-fsstubs.c:484 #, c-format -msgid "configuration column \"%s\" does not exist" -msgstr "la colonne de configuration � %s � n'existe pas" +msgid "could not create server file \"%s\": %m" +msgstr "n'a pas pu cr�er le fichier serveur � %s � : %m" -#: utils/adt/tsvector_op.c:1307 +#: libpq/be-fsstubs.c:496 #, c-format -msgid "column \"%s\" is not of regconfig type" -msgstr "la colonne � %s � n'est pas de type regconfig" +msgid "could not write server file \"%s\": %m" +msgstr "n'a pas pu �crire le fichier serveur � %s � : %m" -#: utils/adt/tsvector_op.c:1314 +#: storage/file/fd.c:411 #, c-format -msgid "configuration column \"%s\" must not be null" -msgstr "la colonne de configuration � %s � ne doit pas �tre NULL" +msgid "getrlimit failed: %m" +msgstr "�chec de getrlimit : %m" -#: utils/adt/tsvector_op.c:1327 -#, c-format -msgid "text search configuration name \"%s\" must be schema-qualified" +#: storage/file/fd.c:501 +msgid "insufficient file descriptors available to start server process" msgstr "" -"le nom de la configuration de la recherche plein texte � %s � doit �tre\n" -"qualifi� par son sch�ma" +"nombre de descripteurs de fichier insuffisants pour lancer le processus " +"serveur" -#: utils/adt/tsvector_op.c:1352 +#: storage/file/fd.c:502 #, c-format -msgid "column \"%s\" is not of a character type" -msgstr "la colonne � %s � n'est pas de type caract�re" +msgid "System allows %d, we need at least %d." +msgstr "Le syst�me autorise %d, nous avons besoin d'au moins %d." -#: utils/adt/tsvector_parser.c:137 +#: storage/file/fd.c:543 storage/file/fd.c:1528 storage/file/fd.c:1643 #, c-format -msgid "syntax error in tsvector: \"%s\"" -msgstr "erreur de syntaxe dans tsvector : � %s �" +msgid "out of file descriptors: %m; release and retry" +msgstr "plus de descripteurs de fichiers : %m; quittez et r�-essayez" -#: utils/adt/tsvector_parser.c:202 +#: storage/file/fd.c:1110 #, c-format -msgid "there is no escaped character: \"%s\"" -msgstr "il n'existe pas de caract�res d'�chappement : � %s �" +msgid "temporary file: path \"%s\", size %lu" +msgstr "fichier temporaire : chemin � %s �, taille %lu" -#: utils/adt/tsvector_parser.c:319 +#: storage/file/fd.c:1504 #, c-format -msgid "wrong position info in tsvector: \"%s\"" -msgstr "mauvaise information de position dans tsvector : � %s �" +msgid "exceeded maxAllocatedDescs (%d) while trying to open file \"%s\"" +msgstr "" +"d�passement de maxAllocatedDescs (%d) lors de l'ouverture du fichier � %s �" -#: utils/adt/uuid.c:128 +#: storage/file/fd.c:1619 #, c-format -msgid "invalid input syntax for uuid: \"%s\"" -msgstr "syntaxe invalide en entr�e pour l'uuid : � %s �" +msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\"" +msgstr "" +"d�passement de maxAllocatedDescs (%d) lors de l'ouverture du r�pertoire � %s " +"�" -#: utils/adt/varbit.c:54 -#: utils/adt/varchar.c:48 +#: storage/file/fd.c:1702 #, c-format -msgid "length for type %s must be at least 1" -msgstr "la longueur du type %s doit �tre d'au moins 1" +msgid "could not read directory \"%s\": %m" +msgstr "n'a pas pu lire le r�pertoire � %s � : %m" -#: utils/adt/varbit.c:59 -#: utils/adt/varchar.c:52 +#: storage/ipc/shmem.c:346 storage/ipc/shmem.c:399 #, c-format -msgid "length for type %s cannot exceed %d" -msgstr "la longueur du type %s ne peut pas exc�der %d" +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)" -#: utils/adt/varbit.c:162 -#: utils/adt/varbit.c:302 -#: utils/adt/varbit.c:358 +#: storage/ipc/shmem.c:365 #, 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)" +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 �" -#: utils/adt/varbit.c:184 -#: utils/adt/varbit.c:482 +#: storage/ipc/shmem.c:380 #, c-format -msgid "\"%c\" is not a valid binary digit" -msgstr "� %c � n'est pas un chiffre binaire valide" +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" -#: utils/adt/varbit.c:209 -#: utils/adt/varbit.c:507 -#, c-format -msgid "\"%c\" is not a valid hexadecimal digit" -msgstr "� %c � n'est pas un chiffre hexad�cimal valide" +#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446 +msgid "requested shared memory size overflows size_t" +msgstr "la taille de la m�moire partag�e demand�e d�passe size_t" -#: utils/adt/varbit.c:293 -#: utils/adt/varbit.c:594 -msgid "invalid length in external bit string" -msgstr "longueur invalide dans la cha�ne bit externe" +#: storage/buffer/bufmgr.c:134 storage/buffer/bufmgr.c:242 +msgid "cannot access temporary tables of other sessions" +msgstr "ne peut pas acc�der aux tables temporaires d'autres sessions" -#: utils/adt/varbit.c:460 -#: utils/adt/varbit.c:603 -#: utils/adt/varbit.c:664 +#: storage/buffer/bufmgr.c:378 #, c-format -msgid "bit string too long for type bit varying(%d)" -msgstr "la cha�ne bit est trop longue pour le type bit varying(%d)" +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" -#: utils/adt/varbit.c:991 -#: utils/adt/varbit.c:1093 -#: utils/adt/varlena.c:729 -#: utils/adt/varlena.c:793 -#: utils/adt/varlena.c:937 -#: utils/adt/varlena.c:1843 -#: utils/adt/varlena.c:1910 -msgid "negative substring length not allowed" -msgstr "longueur de sous-cha�ne n�gative non autoris�e" - -#: utils/adt/varbit.c:1149 -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" +#: storage/buffer/bufmgr.c:380 +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." -#: utils/adt/varbit.c:1190 -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" +#: storage/buffer/bufmgr.c:452 +#, c-format +msgid "invalid page header in block %u of relation %s; zeroing out page" +msgstr "" +"en-t�te de page invalide dans le bloc %u de la relation %s ; remplacement\n" +"de la page par des z�ros" -#: utils/adt/varbit.c:1236 -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" +#: storage/buffer/bufmgr.c:460 +#, c-format +msgid "invalid page header in block %u of relation %s" +msgstr "en-t�te de page invalide dans le bloc %u de la relation %s" -#: utils/adt/varbit.c:1710 -#: utils/adt/varbit.c:1768 +#: storage/buffer/bufmgr.c:2746 #, c-format -msgid "bit index %d out of valid range (0..%d)" -msgstr "index de bit %d en dehors des limites valides (0..%d)" +msgid "could not write block %u of %s" +msgstr "n'a pas pu �crire le bloc %u de %s" -#: utils/adt/varbit.c:1719 -#: utils/adt/varlena.c:2110 -msgid "new bit must be 0 or 1" -msgstr "le nouveau bit doit valoir soit 0 soit 1" +#: storage/buffer/bufmgr.c:2748 +msgid "Multiple failures --- write error might be permanent." +msgstr "�checs multiples --- l'erreur d'�criture pourrait �tre permanent." -#: utils/adt/varchar.c:152 -#: utils/adt/varchar.c:305 +#: storage/buffer/bufmgr.c:2769 storage/buffer/bufmgr.c:2788 #, c-format -msgid "value too long for type character(%d)" -msgstr "valeur trop longue pour le type character(%d)" +msgid "writing block %u of relation %s" +msgstr "�criture du bloc %u de la relation %s" -#: utils/adt/varchar.c:473 -#: utils/adt/varchar.c:594 -#, c-format -msgid "value too long for type character varying(%d)" -msgstr "valeur trop longue pour le type character varying(%d)" +#: storage/buffer/localbuf.c:190 +msgid "no empty local buffer available" +msgstr "aucun tampon local vide disponible" -#: utils/adt/varlena.c:1333 -#: utils/adt/varlena.c:1346 +#: storage/large_object/inv_api.c:266 catalog/aclchk.c:647 +#: catalog/aclchk.c:3676 catalog/aclchk.c:4367 catalog/objectaddress.c:199 +#: catalog/pg_largeobject.c:116 catalog/pg_largeobject.c:176 #, c-format -msgid "could not convert string to UTF-16: error %lu" -msgstr "n'a pas pu convertir la cha�ne en UTF16 : erreur %lu" +msgid "large object %u does not exist" +msgstr "le � Large Object � %u n'existe pas" -#: utils/adt/varlena.c:1356 +#: storage/large_object/inv_api.c:563 storage/large_object/inv_api.c:760 #, c-format -msgid "could not compare Unicode strings: %m" -msgstr "n'a pas pu comparer les cha�nes unicode : %m" +msgid "large object %u was not opened for writing" +msgstr "le � Large Object � %u n'a pas �t� ouvert en �criture" -#: utils/adt/varlena.c:1988 -#: utils/adt/varlena.c:2019 -#: utils/adt/varlena.c:2055 -#: utils/adt/varlena.c:2098 +#: storage/large_object/inv_api.c:570 storage/large_object/inv_api.c:767 #, c-format -msgid "index %d out of valid range, 0..%d" -msgstr "index %d en dehors des limites valides, 0..%d" - -#: utils/adt/varlena.c:2890 -msgid "field position must be greater than zero" -msgstr "la position du champ doit �tre plus grand que z�ro" - -#: utils/adt/windowfuncs.c:243 -msgid "argument of ntile must be greater than zero" -msgstr "l'argument de ntile doit �tre sup�rieur � z�ro" - -#: utils/adt/windowfuncs.c:465 -msgid "argument of nth_value must be greater than zero" -msgstr "l'argument de nth_value doit �tre sup�rieur � z�ro" +msgid "large object %u was already dropped" +msgstr "le � Large Object � %u a d�j� �t� supprim�" -#: utils/misc/tzparser.c:63 +#: storage/page/bufpage.c:143 storage/page/bufpage.c:390 +#: storage/page/bufpage.c:623 storage/page/bufpage.c:753 #, c-format -msgid "time zone abbreviation \"%s\" is too long (maximum %d characters) in time zone file \"%s\", line %d" +msgid "corrupted page pointers: lower = %u, upper = %u, special = %u" msgstr "" -"l'abr�viation � %s � du fuseau horaire est trop long (maximum %d caract�res)\n" -"dans le fichier de fuseaux horaires � %s �, ligne %d" +"pointeurs de page corrompus : le plus bas = %u, le plus haut = %u, sp�cial = " +"%u" -#: utils/misc/tzparser.c:72 +#: storage/page/bufpage.c:433 #, 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" +msgid "corrupted item pointer: %u" +msgstr "pointeur d'�l�ment corrompu : %u" -#: utils/misc/tzparser.c:86 +#: storage/page/bufpage.c:444 storage/page/bufpage.c:805 #, 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" +msgid "corrupted item lengths: total %u, available space %u" +msgstr "longueurs d'�l�ment corrompus : total %u, espace disponible %u" -#: utils/misc/tzparser.c:123 +#: storage/page/bufpage.c:642 storage/page/bufpage.c:778 #, 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" +msgid "corrupted item pointer: offset = %u, size = %u" +msgstr "pointeur d'�l�ment corrompu : d�calage = %u, taille = %u" -#: utils/misc/tzparser.c:134 +#: storage/smgr/md.c:393 storage/smgr/md.c:863 #, 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" +msgid "could not truncate file \"%s\": %m" +msgstr "n'a pas pu tronquer le fichier � %s � : %m" -#: utils/misc/tzparser.c:143 +#: storage/smgr/md.c:460 #, 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" +msgid "cannot extend file \"%s\" beyond %u blocks" +msgstr "ne peut pas �tendre le fichier � %s � de plus de %u blocs" -#: utils/misc/tzparser.c:168 +#: storage/smgr/md.c:482 storage/smgr/md.c:643 storage/smgr/md.c:718 #, c-format -msgid "invalid syntax in time zone file \"%s\", line %d" -msgstr "syntaxe invalide dans le fichier des fuseaux horaires � %s �, ligne %d" +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" -#: utils/misc/tzparser.c:234 +#: storage/smgr/md.c:490 #, c-format -msgid "time zone abbreviation \"%s\" is multiply defined" -msgstr "l'abr�viation � %s � du fuseau horaire est d�finie plusieurs fois" +msgid "could not extend file \"%s\": %m" +msgstr "n'a pas pu �tendre le fichier � %s � : %m" + +#: storage/smgr/md.c:492 storage/smgr/md.c:499 storage/smgr/md.c:745 +msgid "Check free disk space." +msgstr "V�rifiez l'espace disque disponible." -#: utils/misc/tzparser.c:236 +#: storage/smgr/md.c:496 #, c-format -msgid "Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s\", line %d." +msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u" 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." +"n'a pas pu �tendre le fichier � %s � : a �crit seulement %d octets sur %d\n" +"au bloc %u" -#: utils/misc/tzparser.c:303 +#: storage/smgr/md.c:661 #, c-format -msgid "invalid time zone file name \"%s\"" -msgstr "nom du fichier de fuseaux horaires invalide : � %s �" +msgid "could not read block %u in file \"%s\": %m" +msgstr "n'a pas pu lire le bloc %u dans le fichier � %s � : %m" -#: utils/misc/tzparser.c:318 +#: storage/smgr/md.c:677 #, c-format -msgid "time zone file recursion limit exceeded in file \"%s\"" +msgid "could not read block %u in file \"%s\": read only %d of %d bytes" msgstr "" -"limite de r�cursion d�pass�e dans le fichier � %s � (fichier des fuseaux\n" -"horaires)" +"n'a pas pu lire le bloc %u du fichier � %s � : a lu seulement %d octets\n" +"sur %d" -#: utils/misc/tzparser.c:361 -#: utils/misc/tzparser.c:376 +#: storage/smgr/md.c:736 #, c-format -msgid "could not read time zone file \"%s\": %m" -msgstr "n'a pas pu lire le fichier des fuseaux horaires � %s � : %m" +msgid "could not write block %u in file \"%s\": %m" +msgstr "n'a pas pu �crire le bloc %u dans le fichier � %s � : %m" -#: utils/misc/tzparser.c:388 +#: storage/smgr/md.c:741 #, c-format -msgid "line is too long in time zone file \"%s\", line %d" +msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes" msgstr "" -"une ligne est trop longue dans le fichier des fuseaux horaires � %s �,\n" -"ligne %d" +"n'a pas pu �crire le bloc %u du fichier � %s � : a seulement �crit %d\n" +"octets sur %d" -#: utils/misc/tzparser.c:413 +#: storage/smgr/md.c:839 #, c-format -msgid "@INCLUDE without file name in time zone file \"%s\", line %d" +msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now" msgstr "" -"@INCLUDE sans nom de fichier dans le fichier des fuseaux horaires � %s �,\n" -"ligne %d" +"n'a pas pu tronquer le fichier � %s � en %u blocs : il y a seulement %u blocs" -#: utils/misc/guc.c:476 -msgid "Ungrouped" -msgstr "D�group�" - -#: utils/misc/guc.c:478 -msgid "File Locations" -msgstr "Emplacement des fichiers" +#: storage/smgr/md.c:888 +#, 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" -#: utils/misc/guc.c:480 -msgid "Connections and Authentication" -msgstr "Connexions et authentification" +#: storage/smgr/md.c:1141 +#, 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" -#: utils/misc/guc.c:482 -msgid "Connections and Authentication / Connection Settings" -msgstr "Connexions et authentification / Param�trages de connexion" +#: storage/smgr/md.c:1286 +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" -#: utils/misc/guc.c:484 -msgid "Connections and Authentication / Security and Authentication" -msgstr "Connexions et authentification / S�curit� et authentification" +#: storage/smgr/md.c:1661 +#, 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" -#: utils/misc/guc.c:486 -msgid "Resource Usage" -msgstr "Utilisation des ressources" +#: storage/smgr/md.c:1683 +#, c-format +msgid "could not seek to end of file \"%s\": %m" +msgstr "n'a pas pu trouver la fin du fichier � %s � : %m" -#: utils/misc/guc.c:488 -msgid "Resource Usage / Memory" -msgstr "Utilisation des ressources / M�moire" +#: storage/lmgr/predicate.c:665 +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" -#: utils/misc/guc.c:490 -msgid "Resource Usage / Kernel Resources" -msgstr "Utilisation des ressources / Ressources noyau" +#: storage/lmgr/predicate.c:666 storage/lmgr/predicate.c:694 +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." -#: utils/misc/guc.c:492 -msgid "Resource Usage / Cost-Based Vacuum Delay" -msgstr "Utilisation des ressources / D�lai du VACUUM bas� sur le co�t" +#: storage/lmgr/predicate.c:693 +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" -#: utils/misc/guc.c:494 -msgid "Resource Usage / Background Writer" -msgstr "Utilisation des ressources / Processus d'�criture en t�che de fond" +#: storage/lmgr/predicate.c:898 +msgid "memory for serializable conflict tracking is nearly exhausted" +msgstr "" +"la m�moire pour tracer les conflits s�rialisables est pratiquement pleine" -#: utils/misc/guc.c:496 -msgid "Resource Usage / Asynchronous Behavior" -msgstr "Utilisation des ressources / Comportement asynchrone" +#: storage/lmgr/predicate.c:899 +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." -#: utils/misc/guc.c:498 -msgid "Write-Ahead Log" -msgstr "Write-Ahead Log" +#: storage/lmgr/predicate.c:1181 storage/lmgr/predicate.c:1253 +#, c-format +msgid "" +"not enough shared memory for elements of data structure \"%s\" (%lu 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)" -#: utils/misc/guc.c:500 -msgid "Write-Ahead Log / Settings" -msgstr "Write-Ahead Log / Param�trages" +#: storage/lmgr/predicate.c:1536 +msgid "deferrable snapshot was unsafe; trying a new one" +msgstr "l'image d�ferrable est non s�re ; tentative avec une nouvelle image" -#: utils/misc/guc.c:502 -msgid "Write-Ahead Log / Checkpoints" -msgstr "Write-Ahead Log / Points de v�rification (Checkpoints)" +#: storage/lmgr/predicate.c:1571 +msgid "\"default_transaction_isolation\" is set to \"serializable\"." +msgstr "� default_transaction_isolation � est configur� � � serializable �." -#: utils/misc/guc.c:504 -msgid "Write-Ahead Log / Archiving" -msgstr "Write-Ahead Log / Archivage" +#: storage/lmgr/predicate.c:1572 +msgid "" +"You can use \"SET default_transaction_isolation = 'repeatable read'\" to " +"change the default." +msgstr "" +"Vous pouvez utiliser � SET default_transaction_isolation = 'repeatable read' " +"�\n" +"pour modifier la valeur par d�faut." + +#: storage/lmgr/predicate.c:2247 storage/lmgr/predicate.c:2262 +#: storage/lmgr/predicate.c:3654 +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:3808 storage/lmgr/predicate.c:3897 +#: storage/lmgr/predicate.c:3905 storage/lmgr/predicate.c:3944 +#: storage/lmgr/predicate.c:4183 storage/lmgr/predicate.c:4520 +#: storage/lmgr/predicate.c:4532 storage/lmgr/predicate.c:4574 +#: storage/lmgr/predicate.c:4612 +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" -#: utils/misc/guc.c:506 -msgid "Write-Ahead Log / Streaming Replication" -msgstr "Write-Ahead Log / R�plication en flux" +#: storage/lmgr/predicate.c:3810 storage/lmgr/predicate.c:3899 +#: storage/lmgr/predicate.c:3907 storage/lmgr/predicate.c:3946 +#: storage/lmgr/predicate.c:4185 storage/lmgr/predicate.c:4522 +#: storage/lmgr/predicate.c:4534 storage/lmgr/predicate.c:4576 +#: storage/lmgr/predicate.c:4614 +msgid "The transaction might succeed if retried." +msgstr "La transaction pourrait r�ussir apr�s une nouvelle tentative." -#: utils/misc/guc.c:508 -msgid "Write-Ahead Log / Standby Servers" -msgstr "Write-Ahead Log / Serveurs en attente" +#: storage/lmgr/proc.c:1065 +#, c-format +msgid "Process %d waits for %s on %s." +msgstr "Le processus %d attend %s sur %s." -#: utils/misc/guc.c:510 -msgid "Query Tuning" -msgstr "Optimisation des requ�tes" +#: storage/lmgr/proc.c:1075 +#, c-format +msgid "sending cancel to blocking autovacuum PID %d" +msgstr "envoi d'une annulation � l'autovacuum bloquant de PID %d" -#: utils/misc/guc.c:512 -msgid "Query Tuning / Planner Method Configuration" -msgstr "Optimisation des requ�tes / Configuration de la m�thode du planificateur" +#: storage/lmgr/proc.c:1121 +#, c-format +msgid "" +"process %d avoided deadlock for %s on %s by rearranging queue order after " +"%ld.%03d ms" +msgstr "" +"le processus %d a �vit� un verrou mortel pour %s sur %s en modifiant " +"l'ordre\n" +"de la queue apr�s %ld.%03d ms" -#: utils/misc/guc.c:514 -msgid "Query Tuning / Planner Cost Constants" -msgstr "Optimisation des requ�tes / Constantes des co�ts du planificateur" +#: storage/lmgr/proc.c:1133 +#, c-format +msgid "" +"process %d detected deadlock while waiting for %s on %s after %ld.%03d ms" +msgstr "" +"le processus %d a d�tect� un verrou mortel alors qu'il �tait en attente de\n" +"%s sur %s apr�s %ld.%03d ms" -#: utils/misc/guc.c:516 -msgid "Query Tuning / Genetic Query Optimizer" -msgstr "Optimisation des requ�tes / Optimiseur g�n�tique de requ�tes" +#: storage/lmgr/proc.c:1139 +#, 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" -#: utils/misc/guc.c:518 -msgid "Query Tuning / Other Planner Options" -msgstr "Optimisation des requ�tes / Autres options du planificateur" +#: storage/lmgr/proc.c:1143 +#, 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" -#: utils/misc/guc.c:520 -msgid "Reporting and Logging" -msgstr "Rapports et traces" +#: storage/lmgr/proc.c:1159 +#, 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" -#: utils/misc/guc.c:522 -msgid "Reporting and Logging / Where to Log" -msgstr "Rapports et traces / O� tracer" +#: storage/lmgr/lock.c:609 +#, c-format +msgid "" +"cannot acquire lock mode %s on database objects while recovery is in progress" +msgstr "" +"ne peut pas acqu�rir le mode de verrou %s sur les objets de base de donn�es\n" +"alors que la restauration est en cours" -#: utils/misc/guc.c:524 -msgid "Reporting and Logging / When to Log" -msgstr "Rapports et traces / Quand tracer" +#: storage/lmgr/lock.c:611 +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" +"objets d'une base pendant une restauration." -#: utils/misc/guc.c:526 -msgid "Reporting and Logging / What to Log" -msgstr "Rapports et traces / Que tracer" +#: storage/lmgr/lock.c:724 storage/lmgr/lock.c:793 storage/lmgr/lock.c:2701 +#: storage/lmgr/lock.c:2766 +msgid "You might need to increase max_locks_per_transaction." +msgstr "Vous pourriez avoir besoin d'augmenter max_locks_per_transaction." -#: utils/misc/guc.c:528 -msgid "Statistics" -msgstr "Statistiques" +#: storage/lmgr/lock.c:2116 storage/lmgr/lock.c:2210 +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" -#: utils/misc/guc.c:530 -msgid "Statistics / Monitoring" -msgstr "Statistiques / Surveillance" +#: storage/lmgr/lock.c:2302 +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." -#: utils/misc/guc.c:532 -msgid "Statistics / Query and Index Statistics Collector" -msgstr "Statistiques / R�cup�rateur des statistiques sur les requ�tes et sur les index" +#: storage/lmgr/deadlock.c:923 +#, c-format +msgid "Process %d waits for %s on %s; blocked by process %d." +msgstr "Le processus %d attend %s sur %s ; bloqu� par le processus %d." -#: utils/misc/guc.c:534 -msgid "Autovacuum" -msgstr "Autovacuum" +#: storage/lmgr/deadlock.c:942 +#, c-format +msgid "Process %d: %s" +msgstr "Processus %d : %s" -#: utils/misc/guc.c:536 -msgid "Client Connection Defaults" -msgstr "Valeurs par d�faut pour les connexions client" +#: storage/lmgr/deadlock.c:949 +msgid "deadlock detected" +msgstr "Bloquage mortel d�tect�" -#: utils/misc/guc.c:538 -msgid "Client Connection Defaults / Statement Behavior" -msgstr "Valeurs par d�faut pour les connexions client / Comportement des instructions" +#: storage/lmgr/deadlock.c:952 +msgid "See server log for query details." +msgstr "" +"Voir les journaux applicatifs du serveur pour les d�tails sur la requ�te." -#: utils/misc/guc.c:540 -msgid "Client Connection Defaults / Locale and Formatting" -msgstr "Valeurs par d�faut pour les connexions client / Locale et formattage" +#: storage/lmgr/lmgr.c:756 +#, c-format +msgid "relation %u of database %u" +msgstr "relation %u de la base de donn�es %u" -#: utils/misc/guc.c:542 -msgid "Client Connection Defaults / Other Defaults" -msgstr "Valeurs par d�faut pour les connexions client / Autres valeurs par d�faut" +#: storage/lmgr/lmgr.c:762 +#, c-format +msgid "extension of relation %u of database %u" +msgstr "extension de la relation %u de la base de donn�es %u" -#: utils/misc/guc.c:544 -msgid "Lock Management" -msgstr "Gestion des verrous" +#: storage/lmgr/lmgr.c:768 +#, 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" -#: utils/misc/guc.c:546 -msgid "Version and Platform Compatibility" -msgstr "Compatibilit� des versions et des plateformes" +#: storage/lmgr/lmgr.c:775 +#, 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" -#: utils/misc/guc.c:548 -msgid "Version and Platform Compatibility / Previous PostgreSQL Versions" -msgstr "Compatibilit� des versions et des plateformes / Anciennes versions de PostgreSQL" +#: storage/lmgr/lmgr.c:783 +#, c-format +msgid "transaction %u" +msgstr "transaction %u" -#: utils/misc/guc.c:550 -msgid "Version and Platform Compatibility / Other Platforms and Clients" -msgstr "Compatibilit� des versions et des plateformes / Anciennes plateformes et anciens clients" +#: storage/lmgr/lmgr.c:788 +#, c-format +msgid "virtual transaction %d/%u" +msgstr "transaction virtuelle %d/%u" -#: utils/misc/guc.c:552 -msgid "Preset Options" -msgstr "Options pr�-configur�es" +#: storage/lmgr/lmgr.c:794 +#, 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" -#: utils/misc/guc.c:554 -msgid "Customized Options" -msgstr "Options personnalis�es" +#: storage/lmgr/lmgr.c:802 +#, c-format +msgid "user lock [%u,%u,%u]" +msgstr "verrou utilisateur [%u,%u,%u]" -#: utils/misc/guc.c:556 -msgid "Developer Options" -msgstr "Options pour le d�veloppeur" +#: storage/lmgr/lmgr.c:809 +#, c-format +msgid "advisory lock [%u,%u,%u,%u]" +msgstr "verrou informatif [%u,%u,%u,%u]" -#: utils/misc/guc.c:610 -msgid "Enables the planner's use of sequential-scan plans." -msgstr "Active l'utilisation des parcours s�quentiels par le planificateur." +#: storage/lmgr/lmgr.c:817 +#, c-format +msgid "unrecognized locktag type %d" +msgstr "type locktag non reconnu %d" -#: utils/misc/guc.c:618 -msgid "Enables the planner's use of index-scan plans." -msgstr "Active l'utilisation des parcours d'index par le planificateur." +#: rewrite/rewriteRemove.c:62 rewrite/rewriteSupport.c:117 +#: rewrite/rewriteDefine.c:700 rewrite/rewriteDefine.c:762 +#, c-format +msgid "rule \"%s\" for relation \"%s\" does not exist" +msgstr "la r�gle � %s � de la relation � %s � n'existe pas" -#: utils/misc/guc.c:626 -msgid "Enables the planner's use of bitmap-scan plans." -msgstr "Active l'utilisation des parcours de bitmap par le planificateur." +#: rewrite/rewriteRemove.c:66 +#, 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" -#: utils/misc/guc.c:634 -msgid "Enables the planner's use of TID scan plans." -msgstr "Active l'utilisation de plans de parcours TID par le planificateur." +#: rewrite/rewriteManip.c:1012 +msgid "conditional utility statements are not implemented" +msgstr "les instructions conditionnelles ne sont pas impl�ment�es" -#: utils/misc/guc.c:642 -msgid "Enables the planner's use of explicit sort steps." -msgstr "Active l'utilisation des �tapes de tris explicites par le planificateur." +#: rewrite/rewriteManip.c:1024 rewrite/rewriteHandler.c:467 +#: parser/parse_utilcmd.c:2139 parser/parse_utilcmd.c:2238 +msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" +msgstr "" +"les instructions conditionnelles UNION/INTERSECT/EXCEPT ne sont pas\n" +"impl�ment�es" -#: utils/misc/guc.c:650 -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." +#: rewrite/rewriteManip.c:1177 +msgid "WHERE CURRENT OF on a view is not implemented" +msgstr "WHERE CURRENT OF n'est pas impl�ment� sur une vue" -#: utils/misc/guc.c:658 -msgid "Enables the planner's use of materialization." -msgstr "Active l'utilisation de la mat�rialisation par le planificateur." +#: rewrite/rewriteSupport.c:156 +#, c-format +msgid "rule \"%s\" does not exist" +msgstr "la r�gle � %s � n'existe pas" -#: utils/misc/guc.c:666 -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." +#: rewrite/rewriteSupport.c:165 +#, c-format +msgid "there are multiple rules named \"%s\"" +msgstr "il existe de nombreuses r�gles nomm�es � %s �" -#: utils/misc/guc.c:674 -msgid "Enables the planner's use of merge join plans." -msgstr "Active l'utilisation de plans de jointures MERGE par le planificateur." +#: rewrite/rewriteSupport.c:166 +msgid "Specify a relation name as well as a rule name." +msgstr "Sp�cifier un nom de relation ainsi qu'un nom de r�gle." -#: utils/misc/guc.c:682 -msgid "Enables the planner's use of hash join plans." -msgstr "Active l'utilisation de plans de jointures h�ch�es par le planificateur." +#: rewrite/rewriteHandler.c:510 +#, c-format +msgid "" +"WITH query name \"%s\" appears in both a rule action and the query being " +"rewritten" +msgstr "" +"Le nom de la requ�te WITH �%s � appara�t � la fois dans l'action d'une " +"r�gle\n" +"et la requ�te en cours de r�-�criture." -#: utils/misc/guc.c:690 -msgid "Enables genetic query optimization." -msgstr "Active l'optimisation g�n�tique des requ�tes." +#: rewrite/rewriteHandler.c:568 +msgid "cannot have RETURNING lists in multiple rules" +msgstr "ne peut pas avoir des listes RETURNING dans plusieurs r�gles" -#: utils/misc/guc.c:691 -msgid "This algorithm attempts to do planning without exhaustive searching." -msgstr "Cet algorithme essaie de faire une planification sans recherche exhaustive." +#: rewrite/rewriteHandler.c:899 rewrite/rewriteHandler.c:917 +#, c-format +msgid "multiple assignments to same column \"%s\"" +msgstr "affectations multiples pour la m�me colonne � %s �" -#: utils/misc/guc.c:700 -msgid "Shows whether the current user is a superuser." -msgstr "Affiche si l'utilisateur actuel est un super-utilisateur." +#: rewrite/rewriteHandler.c:1055 catalog/heap.c:2441 +#, 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" -#: utils/misc/guc.c:709 -msgid "Enables advertising the server via Bonjour." -msgstr "Active la publication du serveur via Bonjour." +#: rewrite/rewriteHandler.c:1652 rewrite/rewriteHandler.c:2050 +#, 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 �" -#: utils/misc/guc.c:717 -msgid "Enables SSL connections." -msgstr "Active les connexions SSL." +#: rewrite/rewriteHandler.c:1911 +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" -#: utils/misc/guc.c:725 -msgid "Forces synchronization of updates to disk." -msgstr "Force la synchronisation des mises � jour sur le disque." +#: rewrite/rewriteHandler.c:1925 +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" -#: utils/misc/guc.c:726 -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." +#: rewrite/rewriteHandler.c:1929 +msgid "DO ALSO rules are not supported for data-modifying statements in WITH" msgstr "" -"Le serveur utilisera l'appel syst�me fsync() � diff�rents endroits pour\n" -"s'assurer que les mises � jour sont �crites physiquement sur le disque. Ceci\n" -"nous assure qu'un groupe de bases de donn�es se retrouvera dans un �tat\n" -"coh�rent apr�s un arr�t brutal d� au syst�me d'exploitation ou au mat�riel." +"les r�gles DO ALSO ne sont pas support�es par les instructions de " +"modification\n" +"de donn�es dans WITH" -#: utils/misc/guc.c:736 -msgid "Sets immediate fsync at commit." -msgstr "Configure un fsync imm�diat lors du commit." +#: rewrite/rewriteHandler.c:1934 +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" -#: utils/misc/guc.c:744 -msgid "Continues processing past damaged page headers." -msgstr "Continue le travail apr�s les en-t�tes de page endommag�s." +#: rewrite/rewriteHandler.c:2088 +#, c-format +msgid "cannot perform INSERT RETURNING on relation \"%s\"" +msgstr "ne peut pas ex�cuter INSERT RETURNING sur la relation � %s �" -#: utils/misc/guc.c:745 -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." +#: rewrite/rewriteHandler.c:2090 +msgid "" +"You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." 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" -"Initialiser zero_damaged_pages � true fait que le syst�me ne rapporte qu'un\n" -"message d'attention et continue � travailler. Ce comportement d�truira des\n" -"donn�es, notamment toutes les lignes de la page endommag�e." +"Vous avez besoin d'une r�gle ON INSERT DO INSTEAD sans condition avec une\n" +"clause RETURNING." -#: utils/misc/guc.c:757 -msgid "Writes full pages to WAL when first modified after a checkpoint." -msgstr "" -"�crit des pages compl�tes dans les WAL lors d'une premi�re modification apr�s\n" -"un point de v�rification." +#: rewrite/rewriteHandler.c:2095 +#, c-format +msgid "cannot perform UPDATE RETURNING on relation \"%s\"" +msgstr "ne peut pas ex�cuter UPDATE RETURNING sur la relation � %s �" -#: utils/misc/guc.c:758 -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." +#: rewrite/rewriteHandler.c:2097 +msgid "" +"You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." msgstr "" -"Une page �crite au moment d'un arr�t brutal du syst�me d'exploitation\n" -"pourrait �tre seulement partiellement �crite sur le disque. Lors de la\n" -"r�cup�ration, les modifications de la ligne, stock�es dans le journal de\n" -"transaction, ne seront pas suffisantes pour terminer la r�cup�ration. Cette\n" -"option �crit les pages lors de la premi�re modification apr�s un point de\n" -"v�rification des journaux de transaction pour que la r�cup�ration compl�te\n" -"soit possible." +"Vous avez besoin d'une r�gle ON UPDATE DO INSTEAD sans condition avec une\n" +"clause RETURNING." -#: utils/misc/guc.c:769 -msgid "Runs the server silently." -msgstr "Lance le serveur de mani�re silencieuse." +#: rewrite/rewriteHandler.c:2102 +#, c-format +msgid "cannot perform DELETE RETURNING on relation \"%s\"" +msgstr "ne peut pas ex�cuter DELETE RETURNING sur la relation � %s �" -#: utils/misc/guc.c:770 -msgid "If this parameter is set, the server will automatically run in the background and any controlling terminals are dissociated." +#: rewrite/rewriteHandler.c:2104 +msgid "" +"You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." msgstr "" -"Si ce param�tre est initialis�, le serveur sera ex�cut� automatiquement en\n" -"t�che de fond et les terminaux de contr�les seront d�s-associ�s." +"Vous avez besoin d'une r�gle ON DELETE DO INSTEAD sans condition avec une\n" +"clause RETURNING." -#: utils/misc/guc.c:778 -msgid "Logs each checkpoint." -msgstr "Trace tous les points de v�rification." +#: rewrite/rewriteHandler.c:2168 +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" -#: utils/misc/guc.c:786 -msgid "Logs each successful connection." -msgstr "Trace toutes les connexions r�ussies." +#: rewrite/rewriteDefine.c:109 rewrite/rewriteDefine.c:769 +#, c-format +msgid "rule \"%s\" for relation \"%s\" already exists" +msgstr "la r�gle � %s � existe d�j� pour la relation � %s �" -#: utils/misc/guc.c:794 -msgid "Logs end of a session, including duration." -msgstr "Trace la fin d'une session, avec sa dur�e." +#: rewrite/rewriteDefine.c:287 +msgid "rule actions on OLD are not implemented" +msgstr "les actions de la r�gle sur OLD ne sont pas impl�ment�es" -#: utils/misc/guc.c:802 -msgid "Turns on various assertion checks." -msgstr "Active les diff�rentes v�rifications des assertions." +#: rewrite/rewriteDefine.c:288 +msgid "Use views or triggers instead." +msgstr "Utilisez � la place des vues ou des triggers." -#: utils/misc/guc.c:803 -msgid "This is a debugging aid." -msgstr "C'est une aide de d�bogage." +#: rewrite/rewriteDefine.c:292 +msgid "rule actions on NEW are not implemented" +msgstr "les actions de la r�gle sur NEW ne sont pas impl�ment�es" -#: utils/misc/guc.c:817 -#: utils/misc/guc.c:899 -#: utils/misc/guc.c:958 -#: utils/misc/guc.c:967 -#: utils/misc/guc.c:976 -#: utils/misc/guc.c:985 -#: utils/misc/guc.c:1587 -#: utils/misc/guc.c:1596 -msgid "No description available." -msgstr "Aucune description disponible." +#: rewrite/rewriteDefine.c:293 +msgid "Use triggers instead." +msgstr "Utilisez des triggers � la place." -#: utils/misc/guc.c:826 -msgid "Logs the duration of each completed SQL statement." -msgstr "Trace la dur�e de chaque instruction SQL termin�e." +#: rewrite/rewriteDefine.c:306 +msgid "INSTEAD NOTHING rules on SELECT are not implemented" +msgstr "les r�gles INSTEAD NOTHING sur SELECT ne sont pas impl�ment�es" -#: utils/misc/guc.c:834 -msgid "Logs each query's parse tree." -msgstr "Trace l'arbre d'analyse de chaque requ�te." +#: rewrite/rewriteDefine.c:307 +msgid "Use views instead." +msgstr "Utilisez les vues � la place." -#: utils/misc/guc.c:842 -msgid "Logs each query's rewritten parse tree." -msgstr "Trace l'arbre d'analyse r��crit de chaque requ�te." +#: rewrite/rewriteDefine.c:315 +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" -#: utils/misc/guc.c:850 -msgid "Logs each query's execution plan." -msgstr "Trace le plan d'ex�cution de chaque requ�te." +#: rewrite/rewriteDefine.c:327 +msgid "rules on SELECT must have action INSTEAD SELECT" +msgstr "les r�gles sur SELECT doivent avoir une action INSTEAD SELECT" -#: utils/misc/guc.c:858 -msgid "Indents parse and plan tree displays." -msgstr "Indente l'affichage des arbres d'analyse et de planification." +#: rewrite/rewriteDefine.c:335 +msgid "rules on SELECT must not contain data-modifying statements in WITH" +msgstr "" +"les r�gles sur SELECT ne doivent pas contenir d'instructions de " +"modification\n" +"de donn�es avec WITH" -#: utils/misc/guc.c:866 -msgid "Writes parser performance statistics to the server log." +#: rewrite/rewriteDefine.c:343 +msgid "event qualifications are not implemented for rules on SELECT" msgstr "" -"�crit les statistiques de performance de l'analyseur dans les journaux applicatifs\n" -"du serveur." +"les qualifications d'�v�nements ne sont pas impl�ment�es pour les r�gles " +"sur\n" +"SELECT" -#: utils/misc/guc.c:874 -msgid "Writes planner performance statistics to the server log." +#: rewrite/rewriteDefine.c:368 +#, c-format +msgid "\"%s\" is already a view" +msgstr "� %s � est d�j� une vue" + +#: rewrite/rewriteDefine.c:392 +#, 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:417 +#, c-format +msgid "could not convert table \"%s\" to a view because it is not empty" msgstr "" -"�crit les statistiques de performance de planification dans les journaux\n" -"applicatifs du serveur." +"n'a pas pu convertir la table � %s � en une vue car elle n'est pas vide" -#: utils/misc/guc.c:882 -msgid "Writes executor performance statistics to the server log." +#: rewrite/rewriteDefine.c:424 +#, c-format +msgid "could not convert table \"%s\" to a view because it has triggers" msgstr "" -"�crit les statistiques de performance de l'ex�cuteur dans les journaux applicatifs\n" -"du serveur." +"n'a pas pu convertir la table � %s � en une vue parce qu'elle a des triggers" -#: utils/misc/guc.c:890 -msgid "Writes cumulative performance statistics to the server log." +#: rewrite/rewriteDefine.c:426 +msgid "" +"In particular, the table cannot be involved in any foreign key relationships." msgstr "" -"�crit les statistiques de performance cumulatives dans les journaux applicatifs\n" -"du serveur." +"En particulier, la table ne peut pas �tre impliqu�e dans les relations des\n" +"cl�s �trang�res." -#: utils/misc/guc.c:910 -msgid "Collects information about executing commands." -msgstr "R�cup�re les statistiques sur les commandes en ex�cution." +#: rewrite/rewriteDefine.c:431 +#, 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" -#: utils/misc/guc.c:911 -msgid "Enables the collection of information on the currently executing command of each session, along with the time at which that command began execution." +#: rewrite/rewriteDefine.c:437 +#, c-format +msgid "could not convert table \"%s\" to a view because it has child tables" 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." +"n'a pas pu convertir la table � %s � en une vue parce qu'elle a des tables " +"filles" -#: utils/misc/guc.c:920 -msgid "Collects statistics on database activity." -msgstr "R�cup�re les statistiques sur l'activit� de la base de donn�es." +#: rewrite/rewriteDefine.c:464 +msgid "cannot have multiple RETURNING lists in a rule" +msgstr "ne peut pas avoir plusieurs listes RETURNING dans une r�gle" -#: utils/misc/guc.c:929 -msgid "Updates the process title to show the active SQL command." +#: rewrite/rewriteDefine.c:469 +msgid "RETURNING lists are not supported in conditional rules" msgstr "" -"Met � jour le titre du processus pour indiquer la commande SQL en cours\n" -"d'ex�cution." +"les listes RETURNING ne sont pas support�s dans des r�gles conditionnelles" + +#: rewrite/rewriteDefine.c:473 +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" + +#: rewrite/rewriteDefine.c:552 +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:553 +msgid "RETURNING list has too many entries" +msgstr "la liste RETURNING a trop d'entr�es" + +#: rewrite/rewriteDefine.c:569 +msgid "cannot convert relation containing dropped columns to view" +msgstr "" +"ne peut pas convertir la relation contenant les colonnes supprim�es de la vue" + +#: rewrite/rewriteDefine.c:574 +#, 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 �" + +#: rewrite/rewriteDefine.c:580 +#, 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 �" + +#: rewrite/rewriteDefine.c:582 +#, 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 �" + +#: rewrite/rewriteDefine.c:597 +#, 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 �" + +#: rewrite/rewriteDefine.c:599 +#, 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 �" + +#: rewrite/rewriteDefine.c:607 +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:608 +msgid "RETURNING list has too few entries" +msgstr "la liste RETURNING n'a pas assez d'entr�es" + +#: catalog/pg_aggregate.c:100 +msgid "cannot determine transition data type" +msgstr "n'a pas pu d�terminer le type de donn�es de transition" + +#: catalog/pg_aggregate.c:101 +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 argument polymorphique." + +#: catalog/pg_aggregate.c:124 +#, 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:144 +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" +"stricte et que le type de transition n'est pas compatible avec le type en\n" +"entr�e" + +#: catalog/pg_aggregate.c:175 catalog/pg_proc.c:205 +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:176 +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:188 catalog/pg_proc.c:211 +msgid "unsafe use of pseudo-type \"internal\"" +msgstr "utilisation non s�re des pseudo-types � INTERNAL �" + +#: catalog/pg_aggregate.c:189 catalog/pg_proc.c:212 +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:197 +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:337 +#, c-format +msgid "function %s returns a set" +msgstr "la fonction %s renvoie un ensemble" + +#: catalog/pg_aggregate.c:362 +#, c-format +msgid "function %s requires run-time type coercion" +msgstr "la fonction %s requiert une coercion sur le type � l'ex�cution" + +#: catalog/pg_collation.c:75 +#, c-format +msgid "collation \"%s\" for encoding \"%s\" already exists" +msgstr "le collationnement � %s � pour l'encodage � %s � existe d�j�" + +#: catalog/pg_collation.c:89 +#, c-format +msgid "collation \"%s\" already exists" +msgstr "le collationnement � %s � existe d�j�" + +#: catalog/index.c:205 parser/parse_utilcmd.c:1352 parser/parse_utilcmd.c:1438 +#, 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 �" + +#: catalog/index.c:223 +msgid "primary keys cannot be expressions" +msgstr "les cl�s primaires ne peuvent pas �tre des expressions" + +#: catalog/index.c:733 catalog/index.c:1131 +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" + +#: catalog/index.c:743 +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:761 +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:1740 +#, c-format +msgid "building index \"%s\" on table \"%s\"" +msgstr "construction de l'index � %s � sur la table � %s �" + +#: catalog/index.c:2881 +msgid "cannot reindex temporary tables of other sessions" +msgstr "ne peut pas r�-indexer les tables temporaires des autres sessions" + +#: catalog/pg_conversion.c:67 +#, c-format +msgid "conversion \"%s\" already exists" +msgstr "la conversion � %s � existe d�j�" + +#: catalog/pg_conversion.c:80 +#, c-format +msgid "default conversion for %s to %s already exists" +msgstr "la conversion par d�faut de %s vers %s existe d�j�" + +#: catalog/toasting.c:144 +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" + +#: 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] "les fonctions ne peuvent avoir plus de %d argument" +msgstr[1] "les fonctions ne peuvent avoir plus de %d arguments" + +#: catalog/pg_proc.c:206 +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" +"de type polymorphique." + +#: catalog/pg_proc.c:224 +#, c-format +msgid "\"%s\" is already an attribute of type %s" +msgstr "� %s � est d�j� un attribut du type %s" + +#: catalog/pg_proc.c:292 +msgid "window functions cannot have default arguments" +msgstr "" +"les fonctions de fen�trage ne peuvent pas avoir des arguments par d�faut" + +#: catalog/pg_proc.c:369 +#, c-format +msgid "function \"%s\" already exists with same argument types" +msgstr "la fonction � %s � existe d�j� avec des types d'arguments identiques" + +#: catalog/pg_proc.c:383 catalog/pg_proc.c:405 +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:384 catalog/pg_proc.c:407 catalog/pg_proc.c:449 +#: catalog/pg_proc.c:472 catalog/pg_proc.c:498 +msgid "Use DROP FUNCTION first." +msgstr "Utilisez tout d'abord DROP FUNCTION." + +#: catalog/pg_proc.c:406 +msgid "Row type defined by OUT parameters is different." +msgstr "Le type de ligne d�fini par les param�tres OUT est diff�rent." + +#: catalog/pg_proc.c:447 +#, c-format +msgid "cannot change name of input parameter \"%s\"" +msgstr "ne peut pas modifier le nom du param�tre en entr�e � %s �" + +#: catalog/pg_proc.c:471 +msgid "cannot remove parameter defaults from existing function" +msgstr "" +"ne peut pas supprimer les valeurs par d�faut des param�tres de la\n" +"fonction existante" + +#: catalog/pg_proc.c:497 +msgid "cannot change data type of existing parameter default value" +msgstr "" +"ne peut pas modifier le type de donn�es d'un param�tre avec une valeur\n" +"par d�faut" + +#: catalog/pg_proc.c:509 +#, c-format +msgid "function \"%s\" is an aggregate function" +msgstr "la fonction � %s � est une fonction d'agr�gat" + +#: catalog/pg_proc.c:514 +#, c-format +msgid "function \"%s\" is not an aggregate function" +msgstr "la fonction � %s � n'est pas une fonction d'agr�gat" + +#: catalog/pg_proc.c:522 +#, c-format +msgid "function \"%s\" is a window function" +msgstr "la fonction � %s � est une fonction window" + +#: catalog/pg_proc.c:527 +#, c-format +msgid "function \"%s\" is not a window function" +msgstr "la fonction � %s � n'est pas une fonction window" + +#: catalog/pg_proc.c:717 +#, c-format +msgid "there is no built-in function named \"%s\"" +msgstr "il n'existe pas de fonction int�gr�e nomm�e � %s �" + +#: catalog/pg_proc.c:815 +#, c-format +msgid "SQL functions cannot return type %s" +msgstr "les fonctions SQL ne peuvent pas renvoyer un type %s" + +#: catalog/pg_proc.c:830 +#, c-format +msgid "SQL functions cannot have arguments of type %s" +msgstr "les fonctions SQL ne peuvent avoir d'arguments du type %s" + +#: catalog/catalog.c:76 +msgid "invalid fork name" +msgstr "nom du fork invalide" + +#: catalog/catalog.c:77 +msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"." +msgstr "Les noms de fork valides sont � main �, � fsm � et � vm �." + +#: catalog/pg_shdepend.c:566 catalog/dependency.c:757 +#, 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" + +#: catalog/pg_shdepend.c:677 catalog/dependency.c:923 +#, 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" +"et %d autre objet (voir le journal applicatif du serveur pour une liste)" +msgstr[1] "" +"\n" +"et %d autres objets (voir le journal applicatif du serveur pour une liste)" + +#: catalog/pg_shdepend.c:684 +#, 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" +"et des objets dans %d autre base de donn�es (voir le journal applicatif du\n" +"serveur pour une liste)" +msgstr[1] "" +"\n" +"et des objets dans %d autres bases de donn�es (voir le journal applicatif " +"du\n" +"serveur pour une liste)" + +#: catalog/pg_shdepend.c:996 +#, c-format +msgid "role %u was concurrently dropped" +msgstr "le r�le %u a �t� supprim� simultan�ment" + +#: catalog/pg_shdepend.c:1015 +#, c-format +msgid "tablespace %u was concurrently dropped" +msgstr "le tablespace %u a �t� supprim� simultan�ment" + +#: catalog/pg_shdepend.c:1030 +#, c-format +msgid "database %u was concurrently dropped" +msgstr "la base de donn�es %u a �t� supprim� simultan�ment" + +#: catalog/pg_shdepend.c:1074 +#, c-format +msgid "owner of %s" +msgstr "propri�taire de %s" + +#: catalog/pg_shdepend.c:1076 +#, c-format +msgid "privileges for %s" +msgstr "droits pour � %s �" + +#. translator: %s will always be "database %s" +#: catalog/pg_shdepend.c:1084 +#, 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:1195 +#, c-format +msgid "" +"cannot drop objects owned by %s because they are required by the database " +"system" +msgstr "" +"n'a pas pu supprimer les objets appartenant � %s car ils sont n�cessaires " +"au\n" +"syst�me de bases de donn�es" + +#: catalog/pg_shdepend.c:1298 +#, c-format +msgid "" +"cannot reassign ownership of objects owned by %s because they are required " +"by the database system" +msgstr "" +"ne peut pas r�affecter les objets appartenant � %s car ils sont n�cessaires " +"au\n" +"syst�me de bases de donn�es" + +#: catalog/pg_constraint.c:802 +#, c-format +msgid "table \"%s\" has multiple constraints named \"%s\"" +msgstr "la table � %s � a de nombreuses contraintes nomm�es � %s �" + +#: catalog/pg_constraint.c:814 +#, c-format +msgid "constraint \"%s\" for table \"%s\" does not exist" +msgstr "la contrainte � %s � de la table � %s � n'existe pas" + +#: catalog/pg_type.c:241 +#, c-format +msgid "invalid type internal size %d" +msgstr "taille interne de type invalide %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 "" +"l'alignement � %c � est invalide pour le type pass� par valeur de taille %d" + +#: catalog/pg_type.c:289 +#, 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:298 catalog/pg_type.c:304 +#, 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:312 +msgid "fixed-size types must have storage PLAIN" +msgstr "les types de taille fixe doivent avoir un stockage de base" + +#: catalog/pg_type.c:764 +#, 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/aclchk.c:200 +msgid "grant options can only be granted to roles" +msgstr "les options grant peuvent seulement �tre donn�es aux r�les" + +#: catalog/aclchk.c:316 +#, c-format +msgid "no privileges were granted for column \"%s\" of relation \"%s\"" +msgstr "" +"aucun droit n'a pu �tre accord� pour la colonne � %s � de la relation � %s �" + +#: catalog/aclchk.c:321 +#, c-format +msgid "no privileges were granted for \"%s\"" +msgstr "aucun droit n'a �t� accord� pour � %s �" + +#: catalog/aclchk.c:329 +#, c-format +msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" +msgstr "" +"certains droits n'ont pu �tre accord� pour la colonne � %s � de la relation " +"� %s �" + +#: catalog/aclchk.c:334 +#, c-format +msgid "not all privileges were granted for \"%s\"" +msgstr "tous les droits n'ont pas �t� accord�s pour � %s �" + +#: catalog/aclchk.c:345 +#, c-format +msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" +msgstr "" +"aucun droit n'a pu �tre r�voqu� pour la colonne � %s � de la relation � %s �" + +#: catalog/aclchk.c:350 +#, c-format +msgid "no privileges could be revoked for \"%s\"" +msgstr "aucun droit n'a pu �tre r�voqu� pour � %s �" + +#: catalog/aclchk.c:358 +#, c-format +msgid "" +"not all privileges could be revoked for column \"%s\" of relation \"%s\"" +msgstr "" +"certains droits n'ont pu �tre r�voqu� pour la colonne � %s � de la relation " +"� %s �" + +#: catalog/aclchk.c:363 +#, c-format +msgid "not all privileges could be revoked for \"%s\"" +msgstr "certains droits n'ont pu �tre r�voqu� pour � %s �" + +#: catalog/aclchk.c:442 catalog/aclchk.c:891 +#, c-format +msgid "invalid privilege type %s for relation" +msgstr "droit %s invalide pour la relation" + +#: catalog/aclchk.c:446 catalog/aclchk.c:895 +#, c-format +msgid "invalid privilege type %s for sequence" +msgstr "droit %s invalide pour la s�quence" + +#: catalog/aclchk.c:450 +#, c-format +msgid "invalid privilege type %s for database" +msgstr "droit %s invalide pour la base de donn�es" + +#: catalog/aclchk.c:454 catalog/aclchk.c:899 +#, c-format +msgid "invalid privilege type %s for function" +msgstr "droit %s invalide pour la fonction" + +#: catalog/aclchk.c:458 +#, c-format +msgid "invalid privilege type %s for language" +msgstr "droit %s invalide pour le langage" + +#: catalog/aclchk.c:462 +#, c-format +msgid "invalid privilege type %s for large object" +msgstr "type de droit invalide, %s, pour le Large Object" + +#: catalog/aclchk.c:466 +#, c-format +msgid "invalid privilege type %s for schema" +msgstr "droit %s invalide pour le sch�ma" + +#: catalog/aclchk.c:470 +#, c-format +msgid "invalid privilege type %s for tablespace" +msgstr "droit %s invalide pour le tablespace" + +#: catalog/aclchk.c:474 +#, c-format +msgid "invalid privilege type %s for foreign-data wrapper" +msgstr "type de droit %s invalide pour le wrapper de donn�es distantes" + +#: catalog/aclchk.c:478 +#, c-format +msgid "invalid privilege type %s for foreign server" +msgstr "type de droit %s invalide pour le serveur distant" + +#: catalog/aclchk.c:517 +msgid "column privileges are only valid for relations" +msgstr "les droits sur la colonne sont seulement valides pour les relations" + +#: catalog/aclchk.c:932 +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:1730 +#, c-format +msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" +msgstr "" +"la s�quence � %s � accepte seulement les droits USAGE, SELECT et UPDATE" + +#: catalog/aclchk.c:1747 +msgid "invalid privilege type USAGE for table" +msgstr "droit USAGE invalide pour la table" + +#: catalog/aclchk.c:1912 +#, c-format +msgid "invalid privilege type %s for column" +msgstr "type de droit %s invalide pour la colonne" + +#: catalog/aclchk.c:1925 +#, c-format +msgid "sequence \"%s\" only supports SELECT column privileges" +msgstr "la s�quence � %s � accepte seulement le droit SELECT pour les colonnes" + +#: catalog/aclchk.c:2509 +#, c-format +msgid "language \"%s\" is not trusted" +msgstr "le langage � %s � n'est pas de confiance" + +#: catalog/aclchk.c:2511 +msgid "Only superusers can use untrusted languages." +msgstr "" +"Seuls les super-utilisateurs peuvent utiliser des langages qui ne sont pas\n" +"de confiance." + +#: catalog/aclchk.c:3018 +#, c-format +msgid "unrecognized privilege type \"%s\"" +msgstr "droit � %s � non reconnu" + +#: catalog/aclchk.c:3067 +#, c-format +msgid "permission denied for column %s" +msgstr "droit refus� pour la colonne %s" + +#: catalog/aclchk.c:3069 +#, c-format +msgid "permission denied for relation %s" +msgstr "droit refus� pour la relation %s" + +#: catalog/aclchk.c:3073 +#, c-format +msgid "permission denied for database %s" +msgstr "droit refus� pour la base de donn�es %s" + +#: catalog/aclchk.c:3075 +#, c-format +msgid "permission denied for function %s" +msgstr "droit refus� pour la fonction %s" + +#: catalog/aclchk.c:3077 +#, c-format +msgid "permission denied for operator %s" +msgstr "droit refus� pour l'op�rateur %s" + +#: catalog/aclchk.c:3079 +#, c-format +msgid "permission denied for type %s" +msgstr "droit refus� pour le type %s" + +#: catalog/aclchk.c:3081 +#, c-format +msgid "permission denied for language %s" +msgstr "droit refus� pour le langage %s" + +#: catalog/aclchk.c:3083 +#, c-format +msgid "permission denied for large object %s" +msgstr "droit refus� pour le Large Object %s" + +#: catalog/aclchk.c:3085 +#, c-format +msgid "permission denied for schema %s" +msgstr "droit refus� pour le sch�ma %s" + +#: catalog/aclchk.c:3087 +#, c-format +msgid "permission denied for operator class %s" +msgstr "droit refus� pour la classe d'op�rateur %s" + +#: catalog/aclchk.c:3089 +#, c-format +msgid "permission denied for operator family %s" +msgstr "droit refus� pour la famille d'op�rateur %s" + +#: catalog/aclchk.c:3091 +#, c-format +msgid "permission denied for collation %s" +msgstr "droit refus� pour le collationnement %s" + +#: catalog/aclchk.c:3093 +#, c-format +msgid "permission denied for conversion %s" +msgstr "droit refus� pour la conversion %s" + +#: catalog/aclchk.c:3095 +#, c-format +msgid "permission denied for tablespace %s" +msgstr "droit refus� pour le tablespace %s" + +#: catalog/aclchk.c:3097 +#, c-format +msgid "permission denied for text search dictionary %s" +msgstr "droit refus� pour le dictionnaire de recherche plein texte %s" + +#: catalog/aclchk.c:3099 +#, c-format +msgid "permission denied for text search configuration %s" +msgstr "droit refus� pour la configuration de recherche plein texte %s" + +#: catalog/aclchk.c:3101 +#, c-format +msgid "permission denied for foreign-data wrapper %s" +msgstr "droit refus� pour le wrapper de donn�es distantes %s" + +#: catalog/aclchk.c:3103 +#, c-format +msgid "permission denied for foreign server %s" +msgstr "droit refus� pour le serveur distant %s" + +#: catalog/aclchk.c:3105 +#, c-format +msgid "permission denied for extension %s" +msgstr "droit refus� pour l'extension %s" + +#: catalog/aclchk.c:3111 catalog/aclchk.c:3113 +#, c-format +msgid "must be owner of relation %s" +msgstr "doit �tre le propri�taire de la relation %s" + +#: catalog/aclchk.c:3115 +#, c-format +msgid "must be owner of sequence %s" +msgstr "doit �tre le propri�taire de la s�quence %s" + +#: catalog/aclchk.c:3117 +#, c-format +msgid "must be owner of database %s" +msgstr "doit �tre le propri�taire de la base de donn�es %s" + +#: catalog/aclchk.c:3119 +#, c-format +msgid "must be owner of function %s" +msgstr "doit �tre le propri�taire de la fonction %s" + +#: catalog/aclchk.c:3121 +#, c-format +msgid "must be owner of operator %s" +msgstr "doit �tre le prorpri�taire de l'op�rateur %s" + +#: catalog/aclchk.c:3123 +#, c-format +msgid "must be owner of type %s" +msgstr "doit �tre le propri�taire du type %s" + +#: catalog/aclchk.c:3125 +#, c-format +msgid "must be owner of language %s" +msgstr "doit �tre le propri�taire du langage %s" + +#: catalog/aclchk.c:3127 +#, c-format +msgid "must be owner of large object %s" +msgstr "doit �tre le propri�taire du Large Object %s" + +#: catalog/aclchk.c:3129 +#, c-format +msgid "must be owner of schema %s" +msgstr "doit �tre le propri�taire du sch�ma %s" + +#: catalog/aclchk.c:3131 +#, c-format +msgid "must be owner of operator class %s" +msgstr "doit �tre le propri�taire de la classe d'op�rateur %s" + +#: catalog/aclchk.c:3133 +#, c-format +msgid "must be owner of operator family %s" +msgstr "doit �tre le prorpri�taire de la famille d'op�rateur %s" + +#: catalog/aclchk.c:3135 +#, c-format +msgid "must be owner of collation %s" +msgstr "doit �tre le propri�taire du collationnement %s" + +#: catalog/aclchk.c:3137 +#, c-format +msgid "must be owner of conversion %s" +msgstr "doit �tre le propri�taire de la conversion %s" + +#: catalog/aclchk.c:3139 +#, c-format +msgid "must be owner of tablespace %s" +msgstr "doit �tre le propri�taire du tablespace %s" + +#: catalog/aclchk.c:3141 +#, c-format +msgid "must be owner of text search dictionary %s" +msgstr "doit �tre le propri�taire du dictionnaire de recherche plein texte %s" + +#: catalog/aclchk.c:3143 +#, c-format +msgid "must be owner of text search configuration %s" +msgstr "" +"doit �tre le propri�taire de la configuration de recherche plein texte %s" + +#: catalog/aclchk.c:3145 +#, c-format +msgid "must be owner of foreign-data wrapper %s" +msgstr "doit �tre le propri�taire du wrapper de donn�es distantes %s" + +#: catalog/aclchk.c:3147 +#, c-format +msgid "must be owner of foreign server %s" +msgstr "doit �tre le propri�taire de serveur distant %s" + +#: catalog/aclchk.c:3149 +#, c-format +msgid "must be owner of extension %s" +msgstr "doit �tre le propri�taire de l'extension %s" + +#: catalog/aclchk.c:3191 +#, c-format +msgid "permission denied for column \"%s\" of relation \"%s\"" +msgstr "droit refus� pour la colonne � %s � de la relation � %s �" + +#: catalog/aclchk.c:3218 +#, c-format +msgid "role with OID %u does not exist" +msgstr "le r�le d'OID %u n'existe pas" + +#: catalog/aclchk.c:3311 catalog/aclchk.c:3319 +#, c-format +msgid "attribute %d of relation with OID %u does not exist" +msgstr "l'attribut %d de la relation d'OID %u n'existe pas" + +#: catalog/aclchk.c:3392 catalog/aclchk.c:4218 +#, c-format +msgid "relation with OID %u does not exist" +msgstr "la relation d'OID %u n'existe pas" + +#: catalog/aclchk.c:3600 catalog/aclchk.c:4322 +#, c-format +msgid "language with OID %u does not exist" +msgstr "le langage d'OID %u n'existe pas" + +#: catalog/aclchk.c:3761 catalog/aclchk.c:4394 +#, c-format +msgid "schema with OID %u does not exist" +msgstr "le sch�ma d'OID %u n'existe pas" + +#: catalog/aclchk.c:3815 catalog/aclchk.c:4421 +#, c-format +msgid "tablespace with OID %u does not exist" +msgstr "le tablespace d'OID %u n'existe pas" + +#: catalog/aclchk.c:4244 +#, c-format +msgid "type with OID %u does not exist" +msgstr "le type d'OID %u n'existe pas" + +#: catalog/aclchk.c:4270 +#, c-format +msgid "operator with OID %u does not exist" +msgstr "l'op�rateur d'OID %u n'existe pas" + +#: catalog/aclchk.c:4447 +#, 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:4474 +#, 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:4501 +#, 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:4528 +#, 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:4635 +#, c-format +msgid "collation with OID %u does not exist" +msgstr "le collationnement d'OID %u n'existe pas" + +#: catalog/aclchk.c:4661 +#, c-format +msgid "conversion with OID %u does not exist" +msgstr "la conversion d'OID %u n'existe pas" + +#: catalog/aclchk.c:4702 +#, c-format +msgid "extension with OID %u does not exist" +msgstr "l'extension d'OID %u n'existe pas" + +#: catalog/namespace.c:260 +msgid "temporary tables cannot specify a schema name" +msgstr "les tables temporaires ne peuvent pas sp�cifier un nom de sch�ma" + +#: catalog/namespace.c:410 catalog/namespace.c:423 +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" + +#: catalog/namespace.c:414 +msgid "cannot create temporary relation in non-temporary schema" +msgstr "" +"ne peut pas cr�er une relation temporaire dans un sch�ma non temporaire" + +#: catalog/namespace.c:429 +msgid "only temporary relations may be created in temporary schemas" +msgstr "" +"seules les relations temporaires peuvent �tre cr��es dans des sch�mas " +"temporaires" + +#: catalog/namespace.c:2389 parser/parse_expr.c:777 parser/parse_target.c:1088 +#, 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:2395 gram.y:11651 gram.y:12832 parser/parse_expr.c:784 +#: parser/parse_target.c:1095 +#, 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:2523 +#, c-format +msgid "%s is already in schema \"%s\"" +msgstr "%s existe d�j� dans le sch�ma � %s �" + +#: catalog/namespace.c:2531 +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" + +#: catalog/namespace.c:2537 +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:2641 +#, 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:3040 +#, 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:3092 +#, c-format +msgid "conversion \"%s\" does not exist" +msgstr "la conversion � %s � n'existe pas" + +#: catalog/namespace.c:3297 +#, 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 �" + +#: catalog/namespace.c:3313 +msgid "cannot create temporary tables during recovery" +msgstr "ne peut pas cr�er des tables temporaires lors de la restauration" + +#: catalog/objectaddress.c:286 +msgid "database name cannot be qualified" +msgstr "le nom de la base de donn�e ne peut �tre qualifi�" + +#: catalog/objectaddress.c:292 +msgid "tablespace name cannot be qualified" +msgstr "le nom du tablespace ne peut pas �tre qualifi�" + +#: catalog/objectaddress.c:295 +msgid "role name cannot be qualified" +msgstr "le nom du r�le ne peut pas �tre qualifi�" + +#: catalog/objectaddress.c:301 +msgid "language name cannot be qualified" +msgstr "le nom du langage ne peut pas �tre qualifi�" + +#: catalog/objectaddress.c:304 +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:307 +msgid "server name cannot be qualified" +msgstr "le nom du serveur ne peut pas �tre qualifi�" + +#: catalog/objectaddress.c:532 +msgid "column name must be qualified" +msgstr "le nom de la colonne doit �tre qualifi�" + +#: catalog/objectaddress.c:874 catalog/objectaddress.c:890 +msgid "must be superuser" +msgstr "doit �tre super-utilisateur" + +#: catalog/objectaddress.c:881 +msgid "must have CREATEROLE privilege" +msgstr "doit avoir l'attribut CREATEROLE" + +#: catalog/dependency.c:593 +#, c-format +msgid "cannot drop %s because %s requires it" +msgstr "n'a pas pu supprimer %s car il est requis par %s" + +#: catalog/dependency.c:596 +#, c-format +msgid "You can drop %s instead." +msgstr "Vous pouvez supprimer %s � la place." + +#: catalog/dependency.c:873 +#, c-format +msgid "drop auto-cascades to %s" +msgstr "DROP cascade automatiquement sur %s" + +#: catalog/dependency.c:885 catalog/dependency.c:894 +#, c-format +msgid "%s depends on %s" +msgstr "%s d�pend de %s" + +#: catalog/dependency.c:906 catalog/dependency.c:915 +#, c-format +msgid "drop cascades to %s" +msgstr "DROP cascade sur %s" + +#: catalog/dependency.c:935 +#, c-format +msgid "cannot drop %s because other objects depend on it" +msgstr "n'a pas pu supprimer %s car d'autres objets en d�pendent" + +#: catalog/dependency.c:939 catalog/dependency.c:946 +msgid "Use DROP ... CASCADE to drop the dependent objects too." +msgstr "Utilisez DROP ... CASCADE pour supprimer aussi les objets d�pendants." + +#: catalog/dependency.c:943 +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" + +#. translator: %d always has a value larger than 1 +#: catalog/dependency.c:952 +#, c-format +msgid "drop cascades to %d other object" +msgid_plural "drop cascades to %d other objects" +msgstr[0] "DROP cascade sur %d autre objet" +msgstr[1] "DROP cascade sur %d autres objets" + +#: catalog/dependency.c:2223 +#, c-format +msgid " column %s" +msgstr " colonne %s" + +#: catalog/dependency.c:2229 +#, c-format +msgid "function %s" +msgstr "fonction %s" + +#: catalog/dependency.c:2234 +#, c-format +msgid "type %s" +msgstr "type %s" + +#: catalog/dependency.c:2264 +#, c-format +msgid "cast from %s to %s" +msgstr "conversion de %s en %s" + +#: catalog/dependency.c:2284 +#, c-format +msgid "collation %s" +msgstr "collationnement %s" + +#: catalog/dependency.c:2308 +#, c-format +msgid "constraint %s on %s" +msgstr "contrainte %s sur %s" + +#: catalog/dependency.c:2314 +#, c-format +msgid "constraint %s" +msgstr "contrainte %s" + +#: catalog/dependency.c:2331 +#, c-format +msgid "conversion %s" +msgstr "conversion %s" + +#: catalog/dependency.c:2368 +#, c-format +msgid "default for %s" +msgstr "valeur par d�faut pour %s" + +#: catalog/dependency.c:2385 +#, c-format +msgid "language %s" +msgstr "langage %s" + +#: catalog/dependency.c:2391 +#, c-format +msgid "large object %u" +msgstr "� Large Object � %u" + +#: catalog/dependency.c:2396 +#, c-format +msgid "operator %s" +msgstr "op�rateur %s" + +#: catalog/dependency.c:2428 +#, c-format +msgid "operator class %s for access method %s" +msgstr "classe d'op�rateur %s pour la m�thode d'acc�s %s" + +#. translator: %d is the operator strategy (a number), the +#. first two %s's are data type names, the third %s is the +#. description of the operator family, and the last %s is the +#. textual form of the operator with arguments. +#: catalog/dependency.c:2478 +#, c-format +msgid "operator %d (%s, %s) of %s: %s" +msgstr "op�rateur %d (%s, %s) de %s : %s" + +#. translator: %d is the function number, the first two %s's +#. are data type names, the third %s is the description of the +#. operator family, and the last %s is the textual form of the +#. function with arguments. +#: catalog/dependency.c:2528 +#, c-format +msgid "function %d (%s, %s) of %s: %s" +msgstr "fonction %d (%s, %s) de %s : %s" + +#: catalog/dependency.c:2568 +#, c-format +msgid "rule %s on " +msgstr "r�gle %s active " + +#: catalog/dependency.c:2603 +#, c-format +msgid "trigger %s on " +msgstr "trigger %s actif " + +#: catalog/dependency.c:2620 +#, c-format +msgid "schema %s" +msgstr "sch�ma %s" + +#: catalog/dependency.c:2633 +#, c-format +msgid "text search parser %s" +msgstr "analyseur %s de la recherche plein texte" + +#: catalog/dependency.c:2648 +#, c-format +msgid "text search dictionary %s" +msgstr "dictionnaire %s de la recherche plein texte" + +#: catalog/dependency.c:2663 +#, c-format +msgid "text search template %s" +msgstr "mod�le %s de la recherche plein texte" + +#: catalog/dependency.c:2678 +#, c-format +msgid "text search configuration %s" +msgstr "configuration %s de recherche plein texte" + +#: catalog/dependency.c:2686 +#, c-format +msgid "role %s" +msgstr "r�le %s" + +#: catalog/dependency.c:2699 +#, c-format +msgid "database %s" +msgstr "base de donn�es %s" + +#: catalog/dependency.c:2711 +#, c-format +msgid "tablespace %s" +msgstr "tablespace %s" + +#: catalog/dependency.c:2720 +#, c-format +msgid "foreign-data wrapper %s" +msgstr "wrapper de donn�es distantes %s" + +#: catalog/dependency.c:2729 +#, c-format +msgid "server %s" +msgstr "serveur %s" + +#: catalog/dependency.c:2754 +#, c-format +msgid "user mapping for %s" +msgstr "correspondance utilisateur pour %s" + +#: catalog/dependency.c:2788 +#, 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/dependency.c:2793 +#, 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/dependency.c:2798 +#, 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/dependency.c:2804 +#, c-format +msgid "default privileges belonging to role %s" +msgstr "droits par d�faut appartenant au r�le %s" + +#: catalog/dependency.c:2812 +#, c-format +msgid " in schema %s" +msgstr " dans le sch�ma %s" + +#: catalog/dependency.c:2829 +#, c-format +msgid "extension %s" +msgstr "extension %s" + +#: catalog/dependency.c:2887 +#, c-format +msgid "table %s" +msgstr "table %s" + +#: catalog/dependency.c:2891 +#, c-format +msgid "index %s" +msgstr "index %s" + +#: catalog/dependency.c:2895 +#, c-format +msgid "sequence %s" +msgstr "s�quence %s" + +#: catalog/dependency.c:2899 +#, c-format +msgid "uncataloged table %s" +msgstr "table %s sans catalogue" + +#: catalog/dependency.c:2903 +#, c-format +msgid "toast table %s" +msgstr "table TOAST %s" + +#: catalog/dependency.c:2907 +#, c-format +msgid "view %s" +msgstr "vue %s" + +#: catalog/dependency.c:2911 +#, c-format +msgid "composite type %s" +msgstr "type composite %s" + +#: catalog/dependency.c:2915 +#, c-format +msgid "foreign table %s" +msgstr "table distante %s" + +#: catalog/dependency.c:2920 +#, c-format +msgid "relation %s" +msgstr "relation %s" + +#: catalog/dependency.c:2957 +#, 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_operator.c:221 catalog/pg_operator.c:363 +#, c-format +msgid "\"%s\" is not a valid operator name" +msgstr "� %s � n'est pas un nom d'op�rateur valide" + +#: catalog/pg_operator.c:372 +msgid "only binary operators can have commutators" +msgstr "seuls les op�rateurs binaires peuvent avoir des commutateurs" + +#: catalog/pg_operator.c:376 +msgid "only binary operators can have join selectivity" +msgstr "" +"seuls les op�rateurs binaires peuvent avoir une s�lectivit� des jointures" + +#: catalog/pg_operator.c:380 +msgid "only binary operators can merge join" +msgstr "seuls les op�rateurs binaires peuvent ex�cuter des jointures MERGE" + +#: catalog/pg_operator.c:384 +msgid "only binary operators can hash" +msgstr "seuls les op�rateurs binaires ont du hachage" + +#: catalog/pg_operator.c:395 +msgid "only boolean operators can have negators" +msgstr "seuls les op�rateurs bool�ens peuvent avoir des n�gations" + +#: catalog/pg_operator.c:399 +msgid "only boolean operators can have restriction selectivity" +msgstr "" +"seuls les op�rateurs bool�ens peuvent avoir une s�lectivit� des restrictions" + +#: catalog/pg_operator.c:403 +msgid "only boolean operators can have join selectivity" +msgstr "" +"seuls les op�rateurs bool�ens peuvent avoir une s�lectivit� des jointures" + +#: catalog/pg_operator.c:407 +msgid "only boolean operators can merge join" +msgstr "seuls les op�rateurs bool�ens peuvent ex�cuter des jointures MERGE" + +#: catalog/pg_operator.c:411 +msgid "only boolean operators can hash" +msgstr "seuls les op�rateurs bool�ens peuvent hacher" + +#: catalog/pg_operator.c:423 +#, c-format +msgid "operator %s already exists" +msgstr "l'op�rateur %s existe d�j�" + +#: catalog/pg_operator.c:616 +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" + +#: catalog/pg_enum.c:113 catalog/pg_enum.c:199 +#, c-format +msgid "invalid enum label \"%s\"" +msgstr "nom du label enum � %s � invalide" + +#: catalog/pg_enum.c:114 catalog/pg_enum.c:200 +#, c-format +msgid "Labels must be %d characters or less." +msgstr "Les labels doivent avoir au plus %d caract�res" + +#: catalog/pg_enum.c:264 +#, c-format +msgid "\"%s\" is not an existing enum label" +msgstr "� %s � n'est pas un label enum existant" + +#: catalog/pg_enum.c:325 +msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade" +msgstr "" +"ALTER TYPE ADD BEFORE/AFTER est incompatible avec la mise � jour binaire" + +#: catalog/heap.c:264 +#, c-format +msgid "permission denied to create \"%s.%s\"" +msgstr "droit refus� pour cr�er � %s.%s �" + +#: catalog/heap.c:266 +msgid "System catalog modifications are currently disallowed." +msgstr "Les modifications du catalogue syst�me sont actuellement interdites." + +#: catalog/heap.c:406 +#, 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" + +#: catalog/heap.c:422 +#, c-format +msgid "column name \"%s\" specified more than once" +msgstr "colonne � %s � sp�cifi�e plus d'une fois" + +#: catalog/heap.c:472 +#, c-format +msgid "column \"%s\" has type \"unknown\"" +msgstr "la colonne � %s � est de type � unknown �" + +#: catalog/heap.c:473 +msgid "Proceeding with relation creation anyway." +msgstr "Poursuit malgr� tout la cr�ation de la relation." + +#: catalog/heap.c:486 +#, c-format +msgid "column \"%s\" has pseudo-type %s" +msgstr "la colonne � %s � a le pseudo type %s" + +#: catalog/heap.c:516 +#, 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:558 +#, 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" + +#: catalog/heap.c:1030 +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:2150 +#, c-format +msgid "check constraint \"%s\" already exists" +msgstr "la contrainte de v�rification � %s � existe d�j�" + +#: catalog/heap.c:2300 +#, 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:2398 +msgid "cannot use column references in default expression" +msgstr "" +"ne peut pas utiliser les r�f�rences de colonnes dans l'expression par d�faut" + +#: catalog/heap.c:2406 +msgid "default expression must not return a set" +msgstr "l'expression par d�faut ne doit pas renvoyer un ensemble" + +#: catalog/heap.c:2414 +msgid "cannot use subquery in default expression" +msgstr "ne peut pas utiliser une sous-requ�te dans l'expression par d�faut" + +#: catalog/heap.c:2418 +msgid "cannot use aggregate function in default expression" +msgstr "" +"ne peut pas utiliser une fonction d'agr�gat dans une expression par d�faut" + +#: catalog/heap.c:2422 +msgid "cannot use window function in default expression" +msgstr "" +"ne peut pas utiliser une fonction window dans une expression par d�faut" + +#: catalog/heap.c:2492 +#, c-format +msgid "only table \"%s\" can be referenced in check constraint" +msgstr "" +"seule la table � %s � peut �tre r�f�renc�e dans la contrainte de v�rification" + +#: catalog/heap.c:2748 +msgid "unsupported ON COMMIT and foreign key combination" +msgstr "combinaison ON COMMIT et cl� �trang�re non support�e" + +#: catalog/heap.c:2749 +#, c-format +msgid "" +"Table \"%s\" references \"%s\", but they do not have the same ON COMMIT " +"setting." +msgstr "" +"La table � %s � r�f�rence � %s � mais elles n'ont pas la m�me valeur pour " +"le\n" +"param�tre ON COMMIT." + +#: catalog/heap.c:2754 +msgid "cannot truncate a table referenced in a foreign key constraint" +msgstr "" +"ne peut pas tronquer une table r�f�renc�e dans une contrainte de cl� " +"�trang�re" + +#: catalog/heap.c:2755 +#, c-format +msgid "Table \"%s\" references \"%s\"." +msgstr "La table � %s � r�f�rence � %s �." + +#: catalog/heap.c:2757 +#, c-format +msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." +msgstr "" +"Tronquez la table � %s � en m�me temps, ou utilisez TRUNCATE ... CASCADE." + +#: catalog/pg_depend.c:323 +#, 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" + +#: main/main.c:247 +#, c-format +msgid "%s: setsysinfo failed: %s\n" +msgstr "%s : setsysinfo a �chou� : %s\n" + +#: main/main.c:269 +#, c-format +msgid "%s: WSAStartup failed: %d\n" +msgstr "%s : WSAStartup a �chou� : %d\n" + +#: main/main.c:288 +#, c-format +msgid "" +"%s is the PostgreSQL server.\n" +"\n" +msgstr "" +"%s est le serveur PostgreSQL.\n" +"\n" + +#: main/main.c:289 +#, c-format +msgid "" +"Usage:\n" +" %s [OPTION]...\n" +"\n" +msgstr "" +"Usage :\n" +" %s [OPTION]...\n" +"\n" + +#: main/main.c:290 +#, c-format +msgid "Options:\n" +msgstr "Options :\n" + +#: main/main.c:292 +#, 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" +" l'ex�cution\n" + +#: main/main.c:294 +#, c-format +msgid " -B NBUFFERS number of shared buffers\n" +msgstr " -B NBUFFERS nombre de tampons partag�s\n" + +#: main/main.c:295 +#, 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:296 +#, c-format +msgid " -d 1-5 debugging level\n" +msgstr " -d 1-5 niveau de d�bogage\n" + +#: main/main.c:297 +#, c-format +msgid " -D DATADIR database directory\n" +msgstr " -D REPDONNEES r�pertoire de la base de donn�es\n" + +#: main/main.c:298 +#, c-format +msgid " -e use European date input format (DMY)\n" +msgstr "" +" -e utilise le format de saisie europ�en des dates (DMY)\n" + +#: main/main.c:299 +#, c-format +msgid " -F turn fsync off\n" +msgstr " -F d�sactive fsync\n" + +#: main/main.c:300 +#, 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:301 +#, c-format +msgid " -i enable TCP/IP connections\n" +msgstr " -i active les connexions TCP/IP\n" + +#: main/main.c:302 +#, c-format +msgid " -k DIRECTORY Unix-domain socket location\n" +msgstr " -k REPERTOIRE emplacement des sockets de domaine Unix\n" + +#: main/main.c:304 +#, c-format +msgid " -l enable SSL connections\n" +msgstr " -l active les connexions SSL\n" + +#: main/main.c:306 +#, c-format +msgid " -N MAX-CONNECT maximum number of allowed connections\n" +msgstr " -N MAX-CONNECT nombre maximum de connexions simultan�es\n" -#: utils/misc/guc.c:930 -msgid "Enables updating of the process title every time a new SQL command is received by the server." +#: main/main.c:307 +#, c-format +msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n" msgstr "" -"Active la mise � jour du titre du processus chaque fois qu'une nouvelle\n" -"commande SQL est re�ue par le serveur." +" -o OPTIONS passe � OPTIONS � � chaque processus serveur " +"(obsol�te)\n" -#: utils/misc/guc.c:938 -msgid "Starts the autovacuum subprocess." -msgstr "Ex�cute le sous-processus de l'autovacuum." +#: main/main.c:308 +#, c-format +msgid " -p PORT port number to listen on\n" +msgstr " -p PORT num�ro du port � �couter\n" -#: utils/misc/guc.c:947 -msgid "Generates debugging output for LISTEN and NOTIFY." -msgstr "G�n�re une sortie de d�bogage pour LISTEN et NOTIFY." +#: main/main.c:309 +#, c-format +msgid " -s show statistics after each query\n" +msgstr " -s affiche les statistiques apr�s chaque requ�te\n" -#: utils/misc/guc.c:996 -msgid "Logs long lock waits." -msgstr "Trace les attentes longues de verrou." +#: main/main.c:310 +#, 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" -#: utils/misc/guc.c:1005 -msgid "Logs the host name in the connection logs." -msgstr "Trace le nom d'h�te dans les traces de connexion." +#: main/main.c:311 +#, c-format +msgid " --NAME=VALUE set run-time parameter\n" +msgstr " -c NOM=VALEUR configure un param�tre d'ex�cution\n" -#: utils/misc/guc.c:1006 -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." +#: main/main.c:312 +#, c-format +msgid " --describe-config describe configuration parameters, then exit\n" msgstr "" -"Par d�faut, les traces de connexion n'affichent que l'adresse IP de l'h�te\n" -"se connectant. Si vous voulez que s'affiche le nom de l'h�te, vous devez\n" -"activer cette option mais suivant la configuration de la r�solution de noms\n" -"pour votre h�te, cela pourrait imposer des d�gradations de performances non\n" -"n�gligeables." +" --describe-config d�crit les param�tres de configuration, puis quitte\n" -#: utils/misc/guc.c:1016 -msgid "Causes subtables to be included by default in various commands." +#: main/main.c:313 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help affiche cette aide, puis quitte\n" + +#: main/main.c:314 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version affiche la version, puis quitte\n" + +#: main/main.c:316 +#, c-format +msgid "" +"\n" +"Developer options:\n" msgstr "" -"Fait que les sous-tables soient incluses par d�faut dans les diff�rentes\n" -"commandes." +"\n" +"Options pour le d�veloppeur :\n" -#: utils/misc/guc.c:1024 -msgid "Encrypt passwords." -msgstr "Chiffre les mots de passe." +#: main/main.c:317 +#, 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" -#: utils/misc/guc.c:1025 -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." +#: main/main.c:318 +#, c-format +msgid "" +" -n do not reinitialize shared memory after abnormal exit\n" msgstr "" -"Lorsqu'un mot de passe est sp�cifi� dans CREATE USER ou ALTER USER sans\n" -"indiquer ENCRYPTED ou UNENCRYPTED, ce param�tre d�termine si le mot de passe\n" -"doit �tre chiffr�." +" -n ne r�initialise pas la m�moire partag�e apr�s un arr�t\n" +" brutal\n" -#: utils/misc/guc.c:1034 -msgid "Treats \"expr=NULL\" as \"expr IS NULL\"." -msgstr "Traite � expr=NULL � comme � expr IS NULL �." +#: main/main.c:319 +#, 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:320 +#, c-format +msgid " -P disable system indexes\n" +msgstr " -P d�sactive les index syst�me\n" + +#: main/main.c:321 +#, c-format +msgid " -t pa|pl|ex show timings after each query\n" +msgstr " -t pa|pl|ex affiche les temps pour chaque requ�te\n" -#: utils/misc/guc.c:1035 -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)." +#: main/main.c:322 +#, c-format +msgid " -T send SIGSTOP to all backend processes if one dies\n" 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)." +" -T envoie SIGSTOP � tous les processus serveur si l'un\n" +" d'entre eux meurt\n" -#: utils/misc/guc.c:1046 -msgid "Enables per-database user names." -msgstr "Active les noms d'utilisateur par base de donn�es." +#: main/main.c:323 +#, 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" -#: utils/misc/guc.c:1055 -msgid "This parameter doesn't do anything." -msgstr "Ce param�tre ne fait rien." +#: main/main.c:325 +#, c-format +msgid "" +"\n" +"Options for single-user mode:\n" +msgstr "" +"\n" +"Options pour le mode mono-utilisateur :\n" -#: utils/misc/guc.c:1056 -msgid "It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-vintage clients." +#: main/main.c:326 +#, c-format +msgid " --single selects single-user mode (must be first argument)\n" msgstr "" -"C'est ici uniquement pour ne pas avoir de probl�mes avec le SET AUTOCOMMIT\n" -"TO ON des clients 7.3." +" --single s�lectionne le mode mono-utilisateur (doit �tre le\n" +" premier argument)\n" -#: utils/misc/guc.c:1064 -msgid "Sets the default read-only status of new transactions." -msgstr "Initialise le statut de lecture seule par d�faut des nouvelles transactions." +#: main/main.c:327 +#, 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" -#: utils/misc/guc.c:1072 -msgid "Sets the current transaction's read-only status." -msgstr "Affiche le statut de lecture seule de la transaction actuelle." +#: main/main.c:328 +#, c-format +msgid " -d 0-5 override debugging level\n" +msgstr " -d 0-5 surcharge le niveau de d�bogage\n" + +#: main/main.c:329 +#, c-format +msgid " -E echo statement before execution\n" +msgstr " -E affiche la requ�te avant de l'ex�cuter\n" + +#: main/main.c:330 +#, c-format +msgid " -j do not use newline as interactive query delimiter\n" +msgstr "" +" -N n'utilise pas le retour � la ligne comme d�limiteur de\n" +" requ�te\n" + +#: main/main.c:331 main/main.c:336 +#, 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:333 +#, c-format +msgid "" +"\n" +"Options for bootstrapping mode:\n" +msgstr "" +"\n" +"Options pour le mode � bootstrapping � :\n" + +#: main/main.c:334 +#, c-format +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:335 +#, c-format +msgid "" +" DBNAME database name (mandatory argument in bootstrapping mode)\n" +msgstr "" +" NOMBASE nom de la base (argument obligatoire dans ce mode)\n" + +#: main/main.c:337 +#, c-format +msgid " -x NUM internal use\n" +msgstr " -x NUM utilisation interne\n" + +#: main/main.c:339 +#, 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" +"Merci de lire la documentation pour la liste compl�te des param�tres de\n" +"configuration � l'ex�cution et pour savoir comment les configurer � la\n" +"ligne de commande ou dans le fichier de configuration.\n" +"\n" +"Rapportez les bogues � .\n" + +#: main/main.c:353 +msgid "" +"\"root\" execution of the PostgreSQL server is not permitted.\n" +"The server must be started under an unprivileged user ID to prevent\n" +"possible system security compromise. See the documentation for\n" +"more information on how to properly start the server.\n" +msgstr "" +"L'ex�cution du serveur PostgreSQL par l'utilisateur � root � n'est pas\n" +"autoris�e.\n" +"Le serveur doit �tre lanc� avec un utilisateur non privil�gi� pour emp�cher\n" +"tout probl�me possible de s�curit� sur le serveur. Voir la documentation " +"pour\n" +"plus d'informations sur le lancement propre du serveur.\n" + +#: main/main.c:370 +#, 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" + +#: main/main.c:377 +msgid "" +"Execution of PostgreSQL by a user with administrative permissions is not\n" +"permitted.\n" +"The server must be started under an unprivileged user ID to prevent\n" +"possible system security compromises. See the documentation for\n" +"more information on how to properly start the server.\n" +msgstr "" +"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:398 +#, c-format +msgid "%s: invalid effective UID: %d\n" +msgstr "%s : UID effectif invalide : %d\n" + +#: main/main.c:411 +#, 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" + +#: parser/parse_coerce.c:932 parser/parse_coerce.c:962 +#: parser/parse_coerce.c:980 parser/parse_coerce.c:995 +#: parser/parse_expr.c:1672 parser/parse_expr.c:2134 parser/parse_target.c:832 +#, c-format +msgid "cannot cast type %s to %s" +msgstr "ne peut pas convertir le type %s en %s" + +#: parser/parse_coerce.c:965 +msgid "Input has too few columns." +msgstr "L'entr�e n'a pas assez de colonnes." + +#: parser/parse_coerce.c:983 +#, c-format +msgid "Cannot cast type %s to %s in column %d." +msgstr "ne peut pas convertir le type %s en %s dans la colonne %d" + +#: parser/parse_coerce.c:998 +msgid "Input has too many columns." +msgstr "L'entr�e a trop de colonnes." + +#. translator: first %s is name of a SQL construct, eg WHERE +#: parser/parse_coerce.c:1041 +#, c-format +msgid "argument of %s must be type boolean, not type %s" +msgstr "l'argument de %s doit �tre de type bool�en, et non du type %s" + +#. 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 +#, c-format +msgid "argument of %s must not return a set" +msgstr "l'argument de %s ne doit pas renvoyer un ensemble" + +#. translator: first %s is name of a SQL construct, eg LIMIT +#: parser/parse_coerce.c:1088 +#, c-format +msgid "argument of %s must be type %s, not type %s" +msgstr "l'argument de %s doit �tre de type %s, et non du type %s" + +#. translator: first %s is name of a SQL construct, eg CASE +#: parser/parse_coerce.c:1221 +#, c-format +msgid "%s types %s and %s cannot be matched" +msgstr "les %s types %s et %s ne peuvent pas correspondre" + +#. translator: first %s is name of a SQL construct, eg CASE +#: parser/parse_coerce.c:1288 +#, c-format +msgid "%s could not convert type %s to %s" +msgstr "%s n'a pas pu convertir le type %s en %s" -#: utils/misc/guc.c:1081 -msgid "Check function bodies during CREATE FUNCTION." -msgstr "V�rifie les corps de fonction lors du CREATE FUNCTION." +#: parser/parse_coerce.c:1539 +msgid "arguments declared \"anyelement\" are not all alike" +msgstr "les arguments d�clar�s � anyelement � ne sont pas tous identiques" -#: utils/misc/guc.c:1089 -msgid "Enable input of NULL elements in arrays." -msgstr "Active la saisie d'�l�ments NULL dans les tableaux." +#: parser/parse_coerce.c:1559 +msgid "arguments declared \"anyarray\" are not all alike" +msgstr "les arguments d�clar�s � anyarray � ne sont pas tous identiques" -#: utils/misc/guc.c:1090 -msgid "When turned on, unquoted NULL in an array input value means a null value; otherwise it is taken literally." +#: parser/parse_coerce.c:1588 parser/parse_coerce.c:1736 +#: parser/parse_coerce.c:1768 +#, c-format +msgid "argument declared \"anyarray\" is not an array but type %s" 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:1099 -msgid "Create new tables with OIDs by default." -msgstr "Cr�e des nouvelles tables avec des OID par d�faut." +"l'argument d�clar� � anyarray � n'est pas un tableau mais est du type %s" -#: utils/misc/guc.c:1107 -msgid "Start a subprocess to capture stderr output and/or csvlogs into log files." +#: parser/parse_coerce.c:1604 +msgid "" +"argument declared \"anyarray\" is not consistent with argument declared " +"\"anyelement\"" msgstr "" -"Lance un sous-processus pour capturer la sortie d'erreurs (stderr) et/ou\n" -"csvlogs dans des journaux applicatifs." +"l'argument d�clar� � anyarray � n'est pas coh�rent avec l'argument d�clar�\n" +"� anyelement �" -#: utils/misc/guc.c:1115 -msgid "Truncate existing log files of same name during log rotation." +#: parser/parse_coerce.c:1622 +msgid "could not determine polymorphic type because input has type \"unknown\"" msgstr "" -"Tronque les journaux applicatifs existants du m�me nom lors de la rotation\n" -"des journaux applicatifs." +"n'a pas pu d�terminer le type polymorphique car l'entr�e dispose du type\n" +"� unknown �" -#: utils/misc/guc.c:1125 -msgid "Emit information about resource usage in sorting." -msgstr "�met des informations sur l'utilisation des ressources lors d'un tri." +#: parser/parse_coerce.c:1632 +#, c-format +msgid "type matched to anynonarray is an array type: %s" +msgstr "le type d�clar� anynonarray est un type tableau : %s" -#: utils/misc/guc.c:1138 -msgid "Generate debugging output for synchronized scanning." -msgstr "G�n�re une sortie de d�bogage pour les parcours synchronis�s." +#: parser/parse_coerce.c:1642 +#, c-format +msgid "type matched to anyenum is not an enum type: %s" +msgstr "le type d�clar� anyenum n'est pas un type enum : %s" -#: utils/misc/guc.c:1152 -msgid "Enable bounded sorting using heap sort." -msgstr "Active le tri limit� en utilisant le tri de heap." +#: gram.y:914 +#, c-format +msgid "unrecognized role option \"%s\"" +msgstr "option � %s � du r�le non reconnu" -#: utils/misc/guc.c:1164 -msgid "Emit WAL-related debugging output." -msgstr "�met une sortie de d�bogage concernant les journaux de transactions." +#: gram.y:1300 +msgid "current database cannot be changed" +msgstr "la base de donn�es actuelle ne peut pas �tre chang�e" -#: utils/misc/guc.c:1175 -msgid "Datetimes are integer based." -msgstr "Les types datetime sont bas�s sur des entiers" +#: gram.y:1418 gram.y:1433 +msgid "time zone interval must be HOUR or HOUR TO MINUTE" +msgstr "l'intervalle de fuseau horaire doit �tre HOUR ou HOUR TO MINUTE" -#: utils/misc/guc.c:1189 -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" -"sans se soucier de la casse." +#: gram.y:1438 gram.y:9244 gram.y:11776 +msgid "interval precision specified twice" +msgstr "pr�cision d'intervalle sp�cifi�e deux fois" -#: utils/misc/guc.c:1198 -msgid "Warn about backslash escapes in ordinary string literals." -msgstr "Avertie sur les �chappements par antislash dans les cha�nes ordinaires." +#: gram.y:3004 +msgid "CREATE TABLE AS cannot specify INTO" +msgstr "CREATE TABLE AS ne peut pas sp�cifier INTO" -#: utils/misc/guc.c:1207 -msgid "Causes '...' strings to treat backslashes literally." -msgstr "Fait que les cha�nes '...' traitent les antislashs litt�ralement." +#: gram.y:4057 +msgid "duplicate trigger events specified" +msgstr "�v�nements de trigger dupliqu�s sp�cifi�s" -#: utils/misc/guc.c:1217 -msgid "Enable synchronized sequential scans." -msgstr "Active l'utilisation des parcours s�quentiels synchronis�s." +#: gram.y:4152 parser/parse_utilcmd.c:2513 parser/parse_utilcmd.c:2539 +msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" +msgstr "la contrainte d�clar�e INITIALLY DEFERRED doit �tre DEFERRABLE" -#: utils/misc/guc.c:1226 -msgid "Allows archiving of WAL files using archive_command." -msgstr "Autorise l'archivage des journaux de transactions en utilisant archive_command." +#: gram.y:4159 +msgid "conflicting constraint properties" +msgstr "propri�t�s de contrainte en conflit" -#: utils/misc/guc.c:1235 -msgid "Allows connections and queries during recovery." -msgstr "Autorise les connexions et les requ�tes pendant la restauration." +#: gram.y:4220 +msgid "CREATE ASSERTION is not yet implemented" +msgstr "CREATE ASSERTION n'est pas encore impl�ment�" -#: utils/misc/guc.c:1244 -msgid "Allows modifications of the structure of system tables." -msgstr "Permet les modifications de la structure des tables syst�mes." +#: gram.y:4236 +msgid "DROP ASSERTION is not yet implemented" +msgstr "DROP ASSERTION n'est pas encore impl�ment�" -#: utils/misc/guc.c:1254 -msgid "Disables reading from system indexes." -msgstr "D�sactive la lecture des index syst�me." +#: gram.y:4572 +msgid "RECHECK is no longer required" +msgstr "RECHECK n'est plus n�cessaire" -#: utils/misc/guc.c:1255 -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." +#: gram.y:4573 +msgid "Update your data type." +msgstr "Mettez � jour votre type de donn�es." -#: utils/misc/guc.c:1265 -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." +#: gram.y:7296 gram.y:7302 gram.y:7308 +msgid "WITH CHECK OPTION is not implemented" +msgstr "WITH CHECK OPTION n'est pas impl�ment�" -#: utils/misc/guc.c:1266 -msgid "Skips privilege checks when reading or modifying large objects, for compatibility with PostgreSQL releases prior to 9.0." +#: gram.y:7984 +msgid "column name list not allowed in CREATE TABLE / AS EXECUTE" 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" -"9.0." +"la liste de noms de colonnes n'est pas autoris�e dans CREATE TABLE / AS " +"EXECUTE" -#: utils/misc/guc.c:1284 -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." +#: gram.y:8208 +msgid "number of columns does not match number of values" +msgstr "le nombre de colonnes ne correspond pas au nombre de valeurs" -#: utils/misc/guc.c:1294 -msgid "Waits N seconds on connection startup after authentication." -msgstr "Attends N secondes apr�s l'authentification." +#: gram.y:8658 +msgid "LIMIT #,# syntax is not supported" +msgstr "la syntaxe LIMIT #,# n'est pas support�e" -#: utils/misc/guc.c:1295 -#: utils/misc/guc.c:1670 -msgid "This allows attaching a debugger to the process." -msgstr "Ceci permet d'attacher un d�bogueur au processus." +#: gram.y:8659 +msgid "Use separate LIMIT and OFFSET clauses." +msgstr "Utilisez les clauses s�par�es LIMIT et OFFSET." -#: utils/misc/guc.c:1303 -msgid "Sets the default statistics target." -msgstr "Initialise la cible par d�faut des statistiques." +#: gram.y:8877 +msgid "VALUES in FROM must have an alias" +msgstr "VALUES dans FROM doit avoir un alias" -#: utils/misc/guc.c:1304 -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." +#: gram.y:8878 +msgid "For example, FROM (VALUES ...) [AS] foo." +msgstr "Par exemple, FROM (VALUES ...) [AS] quelquechose." -#: utils/misc/guc.c:1312 -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." +#: gram.y:8883 +msgid "subquery in FROM must have an alias" +msgstr "la sous-requ�te du FROM doit avoir un alias" -#: utils/misc/guc.c:1314 -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." +#: gram.y:8884 +msgid "For example, FROM (SELECT ...) [AS] foo." +msgstr "Par exemple, FROM (SELECT...) [AS] quelquechose." -#: utils/misc/guc.c:1323 -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" -"JOIN ne sont pas aplanies." +#: gram.y:9370 +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" -#: utils/misc/guc.c:1325 -msgid "The planner will flatten explicit JOIN constructs into lists of FROM items whenever a list of no more than this many items would result." -msgstr "" -"La planificateur applanira les constructions JOIN explicites dans des listes\n" -"d'�l�ments FROM lorsqu'une liste d'au plus ce nombre d'�l�ments en\n" -"r�sulterait." +#: gram.y:9379 +msgid "precision for type float must be less than 54 bits" +msgstr "la pr�cision du type float doit �tre inf�rieur � 54 bits" -#: utils/misc/guc.c:1334 -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�." +#: gram.y:9918 +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" -#: utils/misc/guc.c:1342 -msgid "GEQO: effort is used to set the default for other GEQO parameters." +#: gram.y:9923 +msgid "wrong number of parameters on right side of OVERLAPS expression" msgstr "" -"GEQO : l'effort est utilis� pour initialiser une valeur par d�faut pour les\n" -"autres param�tres GEQO." +"mauvais nombre de param�tres sur le c�t� droit de l'expression OVERLAPS" -#: utils/misc/guc.c:1350 -msgid "GEQO: number of individuals in the population." -msgstr "GEQO : nombre d'individus dans une population." +#: gram.y:10112 +msgid "UNIQUE predicate is not yet implemented" +msgstr "pr�dicat UNIQUE non impl�ment�" -#: utils/misc/guc.c:1351 -#: utils/misc/guc.c:1359 -msgid "Zero selects a suitable default value." -msgstr "Z�ro s�lectionne une valeur par d�faut convenable." +#: gram.y:11043 +msgid "RANGE PRECEDING is only supported with UNBOUNDED" +msgstr "RANGE PRECEDING est seulement support� avec UNBOUNDED" -#: utils/misc/guc.c:1358 -msgid "GEQO: number of iterations of the algorithm." -msgstr "GEQO : nombre d'it�rations dans l'algorithme." +#: gram.y:11049 +msgid "RANGE FOLLOWING is only supported with UNBOUNDED" +msgstr "RANGE FOLLOWING est seulement support� avec UNBOUNDED" -#: utils/misc/guc.c:1368 -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." +#: gram.y:11076 gram.y:11099 +msgid "frame start cannot be UNBOUNDED FOLLOWING" +msgstr "la fin du frame ne peut pas �tre UNBOUNDED FOLLOWING" -#: utils/misc/guc.c:1378 -msgid "Sets the maximum delay before canceling queries when a hot standby server is processing archived WAL data." +#: gram.y:11081 +msgid "frame starting from following row cannot end with current row" msgstr "" -"Initialise le d�lai maximum avant d'annuler les requ�tes lorsqu'un serveur en\n" -"hotstandby traite les donn�es des journaux de transactions archiv�s" +"la frame commen�ant apr�s la ligne suivante ne peut pas se terminer avec la " +"ligne actuelle" -#: utils/misc/guc.c:1388 -msgid "Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data." -msgstr "" -"Initialise le d�lai maximum avant d'annuler les requ�tes lorsqu'un serveur en\n" -"hotstandby traite les donn�es des journaux de transactions envoy�s en flux." +#: gram.y:11104 +msgid "frame end cannot be UNBOUNDED PRECEDING" +msgstr "la fin du frame ne peut pas �tre UNBOUNDED PRECEDING" -#: utils/misc/guc.c:1408 -msgid "Sets the maximum number of concurrent connections." -msgstr "Nombre maximum de connexions simultan�es." +#: gram.y:11110 +msgid "frame starting from current row cannot have preceding rows" +msgstr "" +"la frame commen�ant � la ligne courante ne peut pas avoir des lignes " +"pr�c�dentes" -#: utils/misc/guc.c:1417 -msgid "Sets the number of connection slots reserved for superusers." -msgstr "Nombre de connexions r�serv�es aux super-utilisateurs." +#: gram.y:11117 +msgid "frame starting from following row cannot have preceding rows" +msgstr "" +"la frame commen�ant � la ligne suivante ne peut pas avoir des lignes " +"pr�c�dentes" -#: utils/misc/guc.c:1426 -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." +#: gram.y:11751 +msgid "type modifier cannot have parameter name" +msgstr "le modificateur de type ne peut pas avoir de nom de param�tre" -#: utils/misc/guc.c:1436 -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." +#: gram.y:12360 gram.y:12535 +msgid "improper use of \"*\"" +msgstr "mauvaise utilisation de � * �" -#: utils/misc/guc.c:1446 -msgid "Sets the TCP port the server listens on." -msgstr "Port TCP sur lequel le serveur �coutera." +#: gram.y:12598 +msgid "multiple ORDER BY clauses not allowed" +msgstr "clauses ORDER BY multiples non autoris�es" -#: utils/misc/guc.c:1455 -msgid "Sets the access permissions of the Unix-domain socket." -msgstr "Droits d'acc�s au socket domaine Unix." +#: gram.y:12609 +msgid "multiple OFFSET clauses not allowed" +msgstr "clauses OFFSET multiples non autoris�es" -#: utils/misc/guc.c:1456 -msgid "Unix-domain sockets use the usual Unix file system permission set. The parameter value is expected to be a numeric mode specification in the form accepted by the chmod and umask system calls. (To use the customary octal format the number must start with a 0 (zero).)" -msgstr "" -"Les sockets de domaine Unix utilise l'ensemble des droits habituels du syst�me\n" -"de fichiers Unix. La valeur de ce param�tre doit �tre une sp�cification en\n" -"mode num�rique de la forme accept�e par les appels syst�me chmod et umask\n" -"(pour utiliser le format octal, le nombre doit commencer avec un z�ro)." +#: gram.y:12618 +msgid "multiple LIMIT clauses not allowed" +msgstr "clauses LIMIT multiples non autoris�es" -#: utils/misc/guc.c:1468 -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." +#: gram.y:12627 +msgid "multiple WITH clauses not allowed" +msgstr "clauses WITH multiples non autoris�es" -#: utils/misc/guc.c:1469 -msgid "This much memory can be used by each internal sort operation and hash table before switching to temporary disk files." +#: gram.y:12773 +msgid "OUT and INOUT arguments aren't allowed in TABLE functions" 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." - -#: utils/misc/guc.c:1480 -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." +"les arguments OUT et INOUT ne sont pas autoris�s dans des fonctions TABLE" -#: utils/misc/guc.c:1481 -msgid "This includes operations such as VACUUM and CREATE INDEX." -msgstr "Ceci inclut les op�rations comme VACUUM et CREATE INDEX." +#: gram.y:12874 +msgid "multiple COLLATE clauses not allowed" +msgstr "clauses COLLATE multiples non autoris�es" -#: utils/misc/guc.c:1490 -msgid "Sets the maximum stack depth, in kilobytes." -msgstr "Initialise la profondeur maximale de la pile, en Ko." +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:12912 gram.y:12925 +#, c-format +msgid "%s constraints cannot be marked DEFERRABLE" +msgstr "les contraintes %s ne peuvent pas �tre marqu�es comme DEFERRABLE" -#: utils/misc/guc.c:1500 -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." +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:12938 +#, c-format +msgid "%s constraints cannot be marked NOT VALID" +msgstr "les contraintes %s ne peuvent pas �tre marqu�es comme NOT VALID" -#: utils/misc/guc.c:1509 -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." +#: parser/parse_utilcmd.c:182 +#, c-format +msgid "relation \"%s\" already exists, skipping" +msgstr "la relation � %s � existe d�j�, poursuite du traitement" -#: utils/misc/guc.c:1518 -msgid "Vacuum cost for a page dirtied by vacuum." -msgstr "Co�t d'un VACUUM pour une page modifi�e par VACUUM." +#: parser/parse_utilcmd.c:335 +msgid "array of serial is not implemented" +msgstr "le tableau de type serial n'est pas implant�" -#: utils/misc/guc.c:1527 -msgid "Vacuum cost amount available before napping." -msgstr "Co�t du VACUUM disponible avant un repos." +#: parser/parse_utilcmd.c:383 +#, 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 �" -#: utils/misc/guc.c:1536 -msgid "Vacuum cost delay in milliseconds." -msgstr "D�lai d'un co�t de VACUUM en millisecondes." +#: 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 �" -#: utils/misc/guc.c:1546 -msgid "Vacuum cost delay in milliseconds, for autovacuum." -msgstr "D�lai d'un co�t de VACUUM en millisecondes, pour autovacuum." +#: 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" +"� %s �" -#: utils/misc/guc.c:1556 -msgid "Vacuum cost amount available before napping, for autovacuum." -msgstr "Co�t du VACUUM disponible avant un repos, pour autovacuum." +#: parser/parse_utilcmd.c:1155 parser/parse_utilcmd.c:1231 +#, c-format +msgid "Index \"%s\" contains a whole-row table reference." +msgstr "L'index � %s � contient une r�f�rence de ligne compl�te." -#: utils/misc/guc.c:1565 -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." +#: parser/parse_utilcmd.c:1496 +msgid "cannot use an existing index in CREATE TABLE" +msgstr "ne peut pas utiliser un index existant dans CREATE TABLE" -#: utils/misc/guc.c:1577 -msgid "Sets the maximum number of simultaneously prepared transactions." -msgstr "Initialise le nombre maximum de transactions pr�par�es simultan�ment." +#: parser/parse_utilcmd.c:1516 +#, c-format +msgid "index \"%s\" is already associated with a constraint" +msgstr "l'index � %s � est d�j� associ� � une contrainte" -#: utils/misc/guc.c:1607 -msgid "Sets the maximum allowed duration of any statement." -msgstr "Initialise la dur�e maximum permise pour toute instruction." +#: parser/parse_utilcmd.c:1524 +#, c-format +msgid "index \"%s\" does not belong to table \"%s\"" +msgstr "l'index � %s � n'appartient pas � la table � %s �" -#: utils/misc/guc.c:1608 -msgid "A value of 0 turns off the timeout." -msgstr "Une valeur de 0 d�sactive le timeout." +#: parser/parse_utilcmd.c:1531 +#, c-format +msgid "index \"%s\" is not valid" +msgstr "l'index � %s � n'est pas valide" -#: utils/misc/guc.c:1617 -msgid "Minimum age at which VACUUM should freeze a table row." -msgstr "�ge minimum � partir duquel VACUUM devra geler une ligne de table." +#: parser/parse_utilcmd.c:1537 +#, c-format +msgid "\"%s\" is not a unique index" +msgstr "� %s � n'est pas un index unique" -#: utils/misc/guc.c:1626 -msgid "Age at which VACUUM should scan whole table to freeze tuples." +#: parser/parse_utilcmd.c:1538 parser/parse_utilcmd.c:1545 +#: parser/parse_utilcmd.c:1552 parser/parse_utilcmd.c:1622 +msgid "Cannot create a primary key or unique constraint using such an index." msgstr "" -"�ge � partir duquel VACUUM devra parcourir une table compl�te pour geler les\n" -"lignes." +"Ne peut pas cr�er une cl� primaire ou une contrainte unique avec cet index." -#: utils/misc/guc.c:1635 -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." +#: parser/parse_utilcmd.c:1544 +#, c-format +msgid "index \"%s\" contains expressions" +msgstr "l'index � %s � contient des expressions" -#: utils/misc/guc.c:1647 -msgid "Sets the maximum number of locks per transaction." -msgstr "Initialise le nombre maximum de verrous par transaction." +#: parser/parse_utilcmd.c:1551 +#, c-format +msgid "\"%s\" is a partial index" +msgstr "� %s � est un index partiel" + +#: parser/parse_utilcmd.c:1563 +#, c-format +msgid "\"%s\" is a deferrable index" +msgstr "� %s � est un index d�ferrable" -#: utils/misc/guc.c:1648 -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." +#: parser/parse_utilcmd.c:1564 +msgid "Cannot create a non-deferrable constraint using a deferrable index." 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." +"Ne peut pas cr�er une contrainte non-d�ferrable utilisant un index " +"d�ferrable." -#: utils/misc/guc.c:1658 -msgid "Sets the maximum allowed time to complete client authentication." +#: parser/parse_utilcmd.c:1621 +#, 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:1766 +#, c-format +msgid "column \"%s\" appears twice in primary key constraint" msgstr "" -"Initialise le temps maximum en secondes pour terminer l'authentification du\n" -"client." +"la colonne � %s � appara�t deux fois dans la contrainte de la cl� primaire" -#: utils/misc/guc.c:1669 -msgid "Waits N seconds on connection startup before authentication." -msgstr "Attends N secondes au lancement de la connexion avant l'authentification." +#: parser/parse_utilcmd.c:1772 +#, c-format +msgid "column \"%s\" appears twice in unique constraint" +msgstr "la colonne � %s � appara�t deux fois sur une contrainte unique" -#: utils/misc/guc.c:1679 -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." +#: parser/parse_utilcmd.c:1932 +msgid "index expression cannot return a set" +msgstr "l'expression de l'index ne peut pas renvoyer un ensemble" -#: utils/misc/guc.c:1688 -msgid "Sets the maximum distance in log segments between automatic WAL checkpoints." +#: parser/parse_utilcmd.c:1942 +msgid "" +"index expressions and predicates can refer only to the table being indexed" msgstr "" -"Initialise la distance maximale dans les journaux de transaction entre chaque\n" -"point de v�rification (checkpoints) des journaux." +"les expressions et pr�dicats d'index peuvent seulement faire r�f�rence � la " +"table en cours d'indexage" -#: utils/misc/guc.c:1697 -msgid "Sets the maximum time between automatic WAL checkpoints." +#: parser/parse_utilcmd.c:2039 +msgid "rule WHERE condition cannot contain references to other relations" msgstr "" -"Initialise le temps maximum entre des points de v�rification (checkpoints)\n" -"pour les journaux de transactions." +"la condition WHERE d'une r�gle ne devrait pas contenir de r�f�rences � " +"d'autres\n" +"relations" -#: utils/misc/guc.c:1707 -msgid "Enables warnings if checkpoint segments are filled more frequently than this." +#: parser/parse_utilcmd.c:2045 +msgid "cannot use aggregate function in rule WHERE condition" msgstr "" -"Active des messages d'avertissement si les segments des points de\n" -"v�rifications se remplissent plus fr�quemment que cette dur�e." +"ne peut pas utiliser la fonction d'agr�gat dans la condition d'une r�gle " +"WHERE" -#: utils/misc/guc.c:1709 -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." +#: parser/parse_utilcmd.c:2049 +msgid "cannot use window function in rule WHERE condition" 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." +"ne peut pas utiliser la fonction window dans la condition d'une r�gle WHERE" -#: utils/misc/guc.c:1720 -msgid "Sets the number of disk-page buffers in shared memory for WAL." +#: parser/parse_utilcmd.c:2121 +msgid "" +"rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE " +"actions" msgstr "" -"Initialise le nombre de tampons de pages disque dans la m�moire partag�e\n" -"pour les journaux de transactions." +"les r�gles avec des conditions WHERE ne peuvent contenir que des actions\n" +"SELECT, INSERT, UPDATE ou DELETE " -#: utils/misc/guc.c:1730 -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." +#: parser/parse_utilcmd.c:2157 +msgid "ON SELECT rule cannot use OLD" +msgstr "la r�gle ON SELECT ne peut pas utiliser OLD" -#: utils/misc/guc.c:1741 -msgid "Sets the maximum number of simultaneously running WAL sender processes." -msgstr "" -"Initialise le nombre maximum de processus d'envoi des journaux de transactions\n" -"ex�cut�s simultan�ment." +#: parser/parse_utilcmd.c:2161 +msgid "ON SELECT rule cannot use NEW" +msgstr "la r�gle ON SELECT ne peut pas utiliser NEW" -#: utils/misc/guc.c:1750 -msgid "WAL sender sleep time between WAL replications." -msgstr "" -"Temps d'endormissement du processus d'envoi des journaux de transactions entre\n" -"les r�plications des journaux de transactions." +#: parser/parse_utilcmd.c:2170 +msgid "ON INSERT rule cannot use OLD" +msgstr "la r�gle ON INSERT ne peut pas utiliser OLD" -#: utils/misc/guc.c:1760 -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." +#: parser/parse_utilcmd.c:2176 +msgid "ON DELETE rule cannot use NEW" +msgstr "la r�gle ON INSERT ne peut pas utiliser NEW" -#: utils/misc/guc.c:1770 -msgid "Sets the minimum concurrent open transactions before performing commit_delay." -msgstr "" -"Initialise le nombre minimum de transactions ouvertes simultan�ment avant le\n" -"commit_delay." +#: parser/parse_utilcmd.c:2204 +msgid "cannot refer to OLD within WITH query" +msgstr "ne peut r�f�rencer OLD dans une requ�te WITH" -#: utils/misc/guc.c:1780 -msgid "Sets the number of digits displayed for floating-point values." -msgstr "Initialise le nombre de chiffres affich�s pour les valeurs � virgule flottante." +#: parser/parse_utilcmd.c:2211 +msgid "cannot refer to NEW within WITH query" +msgstr "ne peut r�f�rencer NEW dans une requ�te WITH" -#: utils/misc/guc.c:1781 -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�)." +#: parser/parse_utilcmd.c:2485 +msgid "misplaced DEFERRABLE clause" +msgstr "clause DEFERRABLE mal plac�e" -#: utils/misc/guc.c:1791 -msgid "Sets the minimum execution time above which statements will be logged." -msgstr "" -"Initialise le temps d'ex�cution minimum au-dessus de lequel les instructions\n" -"seront trac�es." +#: parser/parse_utilcmd.c:2490 parser/parse_utilcmd.c:2505 +msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" +msgstr "clauses DEFERRABLE/NOT DEFERRABLE multiples non autoris�es" -#: utils/misc/guc.c:1793 -msgid "Zero prints all queries. -1 turns this feature off." -msgstr "Z�ro affiche toutes les requ�tes. -1 d�sactive cette fonctionnalit�." +#: parser/parse_utilcmd.c:2500 +msgid "misplaced NOT DEFERRABLE clause" +msgstr "clause NOT DEFERRABLE mal plac�e" -#: utils/misc/guc.c:1802 -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." +#: parser/parse_utilcmd.c:2521 +msgid "misplaced INITIALLY DEFERRED clause" +msgstr "clause INITIALLY DEFERRED mal plac�e" -#: utils/misc/guc.c:1804 -msgid "Zero prints all actions. -1 turns autovacuum logging off." -msgstr "Z�ro affiche toutes les requ�tes. -1 d�sactive cette fonctionnalit�." +#: parser/parse_utilcmd.c:2526 parser/parse_utilcmd.c:2552 +msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" +msgstr "clauses INITIALLY IMMEDIATE/DEFERRED multiples non autoris�es" -#: utils/misc/guc.c:1813 -msgid "Background writer sleep time between rounds." -msgstr "" -"Temps d'endormissement du processus d'�criture en t�che de fond en\n" -"millisecondes." +#: parser/parse_utilcmd.c:2547 +msgid "misplaced INITIALLY IMMEDIATE clause" +msgstr "clause INITIALLY IMMEDIATE mal plac�e" -#: utils/misc/guc.c:1823 -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." +#: parser/parse_utilcmd.c:2738 +#, c-format +msgid "" +"CREATE specifies a schema (%s) different from the one being created (%s)" +msgstr "CREATE sp�cifie un sch�ma (%s) diff�rent de celui tout juste cr�� (%s)" -#: utils/misc/guc.c:1838 -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." +#: parser/parse_agg.c:131 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" -#: utils/misc/guc.c:1839 -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." +#: parser/parse_agg.c:133 +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." -#: utils/misc/guc.c:1852 -msgid "Automatic log file rotation will occur after N minutes." +#: parser/parse_agg.c:174 +msgid "aggregate function calls cannot contain window function calls" msgstr "" -"La rotation automatique des journaux applicatifs s'effectue toutes les N\n" -"minutes." +"les appels � la fonction d'agr�gat ne peuvent pas contenir des appels � la\n" +"fonction window" -#: utils/misc/guc.c:1862 -msgid "Automatic log file rotation will occur after N kilobytes." -msgstr "La rotation automatique des journaux applicatifs s'effectue apr�s N Ko." +#: parser/parse_agg.c:245 parser/parse_clause.c:1637 +#, c-format +msgid "window \"%s\" does not exist" +msgstr "le window � %s � n'existe pas" -#: utils/misc/guc.c:1872 -msgid "Shows the maximum number of function arguments." -msgstr "Affiche le nombre maximum d'arguments de fonction." +#: parser/parse_agg.c:336 +msgid "aggregates not allowed in WHERE clause" +msgstr "agr�gats non autoris�s dans une clause WHERE" -#: utils/misc/guc.c:1882 -msgid "Shows the maximum number of index keys." -msgstr "Affiche le nombre maximum de cl�s d'index." +#: parser/parse_agg.c:342 +msgid "aggregates not allowed in JOIN conditions" +msgstr "agr�gats non autoris�s dans une condition JOIN" -#: utils/misc/guc.c:1892 -msgid "Shows the maximum identifier length." -msgstr "Affiche la longueur maximum d'un identifiant" +#: parser/parse_agg.c:363 +msgid "aggregates not allowed in GROUP BY clause" +msgstr "agr�gats non autoris�s dans une clause GROUP BY" -#: utils/misc/guc.c:1902 -msgid "Shows the size of a disk block." -msgstr "Affiche la taille d'un bloc de disque." +#: parser/parse_agg.c:433 +msgid "aggregate functions not allowed in a recursive query's recursive term" +msgstr "" +"fonctions d'agr�gat non autoris�es dans le terme r�cursif de la requ�te\n" +"r�cursive" -#: utils/misc/guc.c:1912 -msgid "Shows the number of pages per disk file." -msgstr "Affiche le nombre de pages par fichier." +#: parser/parse_agg.c:458 +msgid "window functions not allowed in WHERE clause" +msgstr "fonctions window non autoris�es dans une clause WHERE" -#: utils/misc/guc.c:1922 -msgid "Shows the block size in the write ahead log." -msgstr "Affiche la taille du bloc dans les journaux de transactions." +#: parser/parse_agg.c:464 +msgid "window functions not allowed in JOIN conditions" +msgstr "fonctions window non autoris�es dans une condition JOIN" -#: utils/misc/guc.c:1932 -msgid "Shows the number of pages per write ahead log segment." -msgstr "Affiche le nombre de pages par journal de transactions." +#: parser/parse_agg.c:470 +msgid "window functions not allowed in HAVING clause" +msgstr "fonctions window non autoris�es dans une clause WHERE" -#: utils/misc/guc.c:1945 -msgid "Time to sleep between autovacuum runs." -msgstr "Dur�e d'endormissement entre deux ex�cutions d'autovacuum." +#: parser/parse_agg.c:483 +msgid "window functions not allowed in GROUP BY clause" +msgstr "fonctions window non autoris�es dans une clause GROUP BY" -#: utils/misc/guc.c:1954 -msgid "Minimum number of tuple updates or deletes prior to vacuum." -msgstr "Nombre minimum de lignes mises � jour ou supprim�es avant le VACUUM." +#: parser/parse_agg.c:502 parser/parse_agg.c:515 +msgid "window functions not allowed in window definition" +msgstr "fonctions window non autoris�es dans une d�finition window" -#: utils/misc/guc.c:1962 -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." +#: 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 "" +"la colonne � %s.%s � doit appara�tre dans la clause GROUP BY ou doit �tre " +"utilis� dans une fonction d'agr�gat" -#: utils/misc/guc.c:1971 -msgid "Age at which to autovacuum a table to prevent transaction ID wraparound." +#: parser/parse_agg.c:679 +#, c-format +msgid "subquery uses ungrouped column \"%s.%s\" from outer query" msgstr "" -"�ge � partir duquel l'autovacuum se d�clenche sur une table pour emp�cher la\n" -"r�initialisation de l'identifiant de transaction" +"la sous-requ�te utilise une colonne � %s.%s � non group�e dans la requ�te\n" +"externe" -#: utils/misc/guc.c:1981 -msgid "Sets the maximum number of simultaneously running autovacuum worker processes." -msgstr "Initialise le nombre maximum de processus autovacuum ex�cut�s simultan�ment." +#: parser/analyze.c:472 +msgid "INSERT ... SELECT cannot specify INTO" +msgstr "INSERT ... SELECT ne peut pas avoir INTO" -#: utils/misc/guc.c:1990 -msgid "Time between issuing TCP keepalives." -msgstr "Secondes entre l'ex�cution de � TCP keepalives �." +#: parser/analyze.c:565 parser/analyze.c:1071 +msgid "VALUES lists must all be the same length" +msgstr "les listes VALUES doivent toutes �tre de la m�me longueur" -#: utils/misc/guc.c:1991 -#: utils/misc/guc.c:2001 -msgid "A value of 0 uses the system default." -msgstr "Une valeur de 0 d�sactive la valeur syst�me par d�faut." +#: parser/analyze.c:607 parser/analyze.c:1212 +msgid "VALUES must not contain table references" +msgstr "VALUES ne doit pas contenir de r�f�rences de table" -#: utils/misc/guc.c:2000 -msgid "Time between TCP keepalive retransmits." -msgstr "Secondes entre les retransmissions de � TCP keepalive �." +#: parser/analyze.c:621 parser/analyze.c:1226 +msgid "VALUES must not contain OLD or NEW references" +msgstr "VALUES ne doit pas contenir des r�f�rences � OLD et NEW" -#: utils/misc/guc.c:2010 -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" -"des cl�s d'enchiffrement." +#: parser/analyze.c:622 parser/analyze.c:1227 +msgid "Use SELECT ... UNION ALL ... instead." +msgstr "Utilisez � la place SELECT ... UNION ALL ..." -#: utils/misc/guc.c:2020 -msgid "Maximum number of TCP keepalive retransmits." -msgstr "Nombre maximum de retransmissions de � TCP keepalive �." +#: parser/analyze.c:726 parser/analyze.c:1239 +msgid "cannot use aggregate function in VALUES" +msgstr "ne peut pas utiliser la fonction d'agr�gat dans un VALUES" -#: utils/misc/guc.c:2021 -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." +#: parser/analyze.c:732 parser/analyze.c:1245 +msgid "cannot use window function in VALUES" +msgstr "ne peut pas utiliser la fonction window dans un VALUES" -#: utils/misc/guc.c:2031 -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." +#: parser/analyze.c:766 +msgid "INSERT has more expressions than target columns" +msgstr "INSERT a plus d'expressions que les colonnes cibles" -#: utils/misc/guc.c:2041 -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." +#: parser/analyze.c:784 +msgid "INSERT has more target columns than expressions" +msgstr "INSERT a plus de colonnes cibles que d'expressions" -#: utils/misc/guc.c:2042 -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." +#: parser/analyze.c:788 +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 "" -"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:2054 -msgid "Shows the server version as an integer." -msgstr "Affiche la version du serveur sous la forme d'un entier." +"La source d'insertion est une expression de ligne contenant le m�me nombre\n" +"de colonnes que celui attendu par INSERT. Auriez-vous utilis� des " +"parenth�ses\n" +"suppl�mentaires ?" -#: utils/misc/guc.c:2064 -msgid "Log the use of temporary files larger than this number of kilobytes." +#: parser/analyze.c:1085 +msgid "DEFAULT can only appear in a VALUES list within INSERT" msgstr "" -"Trace l'utilisation de fichiers temporaires plus gros que ce nombre de\n" -"kilooctets." +"DEFAULT peut seulement appara�tre dans la liste VALUES comprise dans un " +"INSERT" -#: utils/misc/guc.c:2065 -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�)." +#: parser/analyze.c:1193 parser/analyze.c:2421 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES" +msgstr "SELECT FOR UPDATE/SHARE ne peut pas �tre appliqu� � VALUES" -#: utils/misc/guc.c:2074 -msgid "Sets the size reserved for pg_stat_activity.current_query, in bytes." -msgstr "Configure la taille r�serv�e pour pg_stat_activity.current_query, en octets." +#: parser/analyze.c:1456 +msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" +msgstr "clause UNION/INTERSECT/EXCEPT ORDER BY invalide" -#: utils/misc/guc.c:2092 -msgid "Sets the planner's estimate of the cost of a sequentially fetched disk page." +#: parser/analyze.c:1457 +msgid "Only result column names can be used, not expressions or functions." msgstr "" -"Initialise l'estimation du planificateur pour le co�t d'une page disque\n" -"r�cup�r�e s�quentiellement." +"Seuls les noms de colonnes r�sultats peuvent �tre utilis�s, pas les\n" +"expressions et les fonctions." -#: utils/misc/guc.c:2101 -msgid "Sets the planner's estimate of the cost of a nonsequentially fetched disk page." +#: parser/analyze.c:1458 +msgid "" +"Add the expression/function to every SELECT, or move the UNION into a FROM " +"clause." msgstr "" -"Initialise l'estimation du plnnificateur pour le co�t d'une page disque\n" -"r�cup�r�e non s�quentiellement." +"Ajouter l'expression/fonction � chaque SELECT, ou d�placer l'UNION dans une " +"clause FROM." -#: utils/misc/guc.c:2110 -msgid "Sets the planner's estimate of the cost of processing each tuple (row)." +#: parser/analyze.c:1533 +msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" msgstr "" -"Initialise l'estimation du planificateur pour le co�t d'ex�cution sur chaque\n" -"ligne." +"INTO est autoris� uniquement sur le premier SELECT d'un UNION/INTERSECT/" +"EXCEPT" -#: utils/misc/guc.c:2119 -msgid "Sets the planner's estimate of the cost of processing each index entry during an index scan." +#: parser/analyze.c:1593 +msgid "" +"UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of " +"same query level" msgstr "" -"Initialise l'estimation du planificateur pour le co�t de traitement de\n" -"chaque ligne index�e lors d'un parcours d'index." +"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:1681 +#, 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:1937 +msgid "CREATE TABLE AS specifies too many column names" +msgstr "CREATE TABLE AS sp�cifie trop de noms de colonnes" -#: utils/misc/guc.c:2128 -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." +#: parser/analyze.c:1995 +msgid "cannot use aggregate function in UPDATE" +msgstr "ne peut pas utiliser une fonction d'agr�gat dans un UPDATE" -#: utils/misc/guc.c:2138 -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." +#: parser/analyze.c:2001 +msgid "cannot use window function in UPDATE" +msgstr "ne peut pas utiliser une fonction window dans un UPDATE" -#: utils/misc/guc.c:2148 -msgid "GEQO: selective pressure within the population." -msgstr "GEQO : pression s�lective dans la population." +#: parser/analyze.c:2110 +msgid "cannot use aggregate function in RETURNING" +msgstr "ne peut pas utiliser une fonction d'agr�gat dans RETURNING" -#: utils/misc/guc.c:2157 -msgid "GEQO: seed for random path selection." -msgstr "GEQO : graine pour la s�lection du chemin al�atoire." +#: parser/analyze.c:2116 +msgid "cannot use window function in RETURNING" +msgstr "ne peut pas utiliser une fonction window dans RETURNING" -#: utils/misc/guc.c:2166 -msgid "Multiple of the average buffer usage to free per round." -msgstr "Multiplede l'utilisation moyenne des tampons � lib�rer � chaque tour." +#: parser/analyze.c:2135 +msgid "RETURNING cannot contain references to other relations" +msgstr "RETURNING ne doit pas contenir de r�f�rences � d'autres relations" -#: utils/misc/guc.c:2175 -msgid "Sets the seed for random-number generation." -msgstr "Initialise la cl� pour la g�n�ration de nombres al�atoires." +#: parser/analyze.c:2174 +msgid "cannot specify both SCROLL and NO SCROLL" +msgstr "ne peut pas sp�cifier � la fois SCROLL et NO SCROLL" -#: utils/misc/guc.c:2185 -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)." +#: parser/analyze.c:2188 +msgid "DECLARE CURSOR cannot specify INTO" +msgstr "DECLARE CURSOR ne peut pas sp�cifier INTO" -#: utils/misc/guc.c:2193 -msgid "Number of tuple inserts, updates or deletes prior to analyze as a fraction of reltuples." +#: parser/analyze.c:2200 +msgid "DECLARE CURSOR must not contain data-modifying statements in WITH" msgstr "" -"Nombre de lignes ins�r�es, mises � jour ou supprim�es avant d'analyser\n" -"(fraction de reltuples)." +"DECLARE CURSOR ne doit pas contenir des instructions de modification de " +"donn�es dans WITH" -#: utils/misc/guc.c:2202 -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." +#: parser/analyze.c:2206 +msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE n'est pas support�" -#: utils/misc/guc.c:2220 -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." +#: parser/analyze.c:2207 +msgid "Holdable cursors must be READ ONLY." +msgstr "Les curseurs d�tenables doivent �tre en lecture seule (READ ONLY)." -#: utils/misc/guc.c:2229 -msgid "Sets the client's character set encoding." -msgstr "Initialise l'encodage du client." +#: parser/analyze.c:2220 +msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE n'est pas support�" -#: utils/misc/guc.c:2239 -msgid "Controls information prefixed to each log line." -msgstr "Contr�le l'information pr�fix�e sur chaque ligne de trace." +#: parser/analyze.c:2221 +msgid "Insensitive cursors must be READ ONLY." +msgstr "Les curseurs insensibles doivent �tre en lecture seule (READ ONLY)." -#: utils/misc/guc.c:2240 -msgid "If blank, no prefix is used." -msgstr "Si vide, aucun pr�fixe n'est utilis�." +#: parser/analyze.c:2274 +msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause" +msgstr "SELECT FOR UPDATE/SHARE n'est pas autoris� avec la clause DISTINCT" -#: utils/misc/guc.c:2248 -msgid "Sets the time zone to use in log messages." -msgstr "Initialise le fuseau horaire � utiliser pour les journaux applicatifs." +#: parser/analyze.c:2278 +msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause" +msgstr "SELECT FOR UPDATE/SHARE n'est pas autoris� avec la clause GROUP BY" -#: utils/misc/guc.c:2257 -msgid "Sets the display format for date and time values." -msgstr "Initialise le format d'affichage des valeurs date et time." +#: parser/analyze.c:2282 +msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause" +msgstr "SELECT FOR UPDATE/SHARE n'est pas autoris� avec la clause HAVING" -#: utils/misc/guc.c:2258 -msgid "Also controls interpretation of ambiguous date inputs." -msgstr "Contr�le aussi l'interpr�tation des dates ambigues en entr�e." +#: parser/analyze.c:2286 +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" -#: utils/misc/guc.c:2268 -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." +#: parser/analyze.c:2290 +msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions" +msgstr "SELECT FOR UPDATE/SHARE n'est pas autoris� avec les fonctions window" -#: utils/misc/guc.c:2269 -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." +#: parser/analyze.c:2294 +msgid "" +"SELECT FOR UPDATE/SHARE is not allowed with set-returning functions in the " +"target list" +msgstr "" +"SELECT FOR UPDATE/SHARE n'est pas autoris� avec les fonctions renvoyant " +"plusieurs lignes\n" +"dans la liste cible" -#: utils/misc/guc.c:2278 -msgid "Sets the tablespace(s) to use for temporary tables and sort files." +#: parser/analyze.c:2373 +msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names" msgstr "" -"Initialise le(s) tablespace(s) � utiliser pour les tables temporaires et les\n" -"fichiers de tri." +"SELECT FOR UPDATE/SHARE doit indiqu� les noms de relation non qualifi�s" -#: utils/misc/guc.c:2288 -msgid "Sets the path for dynamically loadable modules." -msgstr "Initialise le chemin des modules chargeables dynamiquement." +#: parser/analyze.c:2390 +#, c-format +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 �" -#: utils/misc/guc.c:2289 -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." +#: parser/analyze.c:2409 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join" +msgstr "SELECT FOR UPDATE/SHARE ne peut pas �tre appliqu� � une jointure" + +#: parser/analyze.c:2415 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function" +msgstr "SELECT FOR UPDATE/SHARE ne peut pas �tre appliqu� � une fonction" + +#: parser/analyze.c:2427 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query" 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." +"SELECT FOR UPDATE/SHARE ne peut pas �tre appliqu� � une requ�te\n" +"WITH" -#: utils/misc/guc.c:2301 -msgid "Sets the location of the Kerberos server key file." -msgstr "Initalise l'emplacement du fichier de la cl� serveur pour Kerberos." +#: parser/analyze.c:2441 +#, c-format +msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause" +msgstr "" +"la relation � %s � d'une clause FOR UPDATE/SHARE introuvable dans la clause " +"FROM" -#: utils/misc/guc.c:2311 -msgid "Sets the name of the Kerberos service." -msgstr "Initialise le nom du service Kerberos." +#: parser/parse_clause.c:421 +#, c-format +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" -#: utils/misc/guc.c:2320 -msgid "Sets the Bonjour service name." -msgstr "Initialise le nom du service Bonjour." +#: parser/parse_clause.c:502 +msgid "subquery in FROM cannot have SELECT INTO" +msgstr "la sous-requ�te du FROM ne peut pas avoir de SELECT INTO" -#: utils/misc/guc.c:2331 -msgid "Shows the collation order locale." -msgstr "Affiche la locale de tri et de groupement." +#: parser/parse_clause.c:524 +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" -#: utils/misc/guc.c:2341 -msgid "Shows the character classification and case conversion locale." -msgstr "Affiche la classification des caract�res et la locale de conversions." +#: parser/parse_clause.c:580 +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" +"relations sur le m�me niveau de la requ�te" -#: utils/misc/guc.c:2351 -msgid "Sets the language in which messages are displayed." -msgstr "Initialise le langage dans lequel les messages sont affich�s." +#: parser/parse_clause.c:593 +msgid "cannot use aggregate function in function expression in FROM" +msgstr "" +"ne peut pas utiliser la fonction d'agr�gat dans l'expression de la fonction\n" +"du FROM" -#: utils/misc/guc.c:2360 -msgid "Sets the locale for formatting monetary amounts." -msgstr "Initialise la locale pour le formattage des montants mon�taires." +#: parser/parse_clause.c:600 +msgid "cannot use window function in function expression in FROM" +msgstr "" +"ne peut pas utiliser la fonction window dans l'expression de la fonction\n" +"du FROM" -#: utils/misc/guc.c:2369 -msgid "Sets the locale for formatting numbers." -msgstr "Initialise la locale pour formater les nombres." +#: parser/parse_clause.c:877 +#, 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" -#: utils/misc/guc.c:2378 -msgid "Sets the locale for formatting date and time values." -msgstr "Initialise la locale pour formater les valeurs date et time." +#: parser/parse_clause.c:892 +#, 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" +"gauche" -#: utils/misc/guc.c:2387 -msgid "Lists shared libraries to preload into server." -msgstr "Liste les biblioth�ques partag�es � pr�charger dans le serveur." +#: parser/parse_clause.c:901 +#, 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" -#: utils/misc/guc.c:2397 -msgid "Lists shared libraries to preload into each backend." -msgstr "Liste les biblioth�ques partag�es � pr�charger dans chaque processus serveur." +#: parser/parse_clause.c:915 +#, 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" +" droite" -#: utils/misc/guc.c:2407 -msgid "Sets the schema search order for names that are not schema-qualified." +#: parser/parse_clause.c:924 +#, c-format +msgid "column \"%s\" specified in USING clause does not exist in right table" msgstr "" -"Initialise l'ordre de recherche des sch�mas pour les noms qui ne pr�cisent\n" -"pas le sch�ma." +"la colonne � %s � sp�cifi�e dans la clause USING n'existe pas dans la table\n" +"de droite" -#: utils/misc/guc.c:2418 -msgid "Sets the server (database) character set encoding." -msgstr "Initialise le codage des caract�res pour le serveur (base de donn�es)." +#: parser/parse_clause.c:981 +#, 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" -#: utils/misc/guc.c:2429 -msgid "Shows the server version." -msgstr "Affiche la version du serveur." +#. 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 "l'argument de � %s � ne doit pas contenir de variables" -#: utils/misc/guc.c:2440 -msgid "Sets the current role." -msgstr "Initialise le r�le courant." +#. 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 "l'argument de %s ne doit pas contenir de fonctions d'agr�gats" -#: utils/misc/guc.c:2451 -msgid "Sets the session user name." -msgstr "Initialise le nom de l'utilisateur de la session." +#. 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 "l'argument de %s ne doit pas contenir des fonctions window" -#: utils/misc/guc.c:2461 -msgid "Sets the destination for server log output." -msgstr "Initialise la destination des journaux applicatifs du serveur." +#. 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 � est ambigu" -#: utils/misc/guc.c:2462 -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." +#. 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 "constante non enti�re dans %s" -#: utils/misc/guc.c:2472 -msgid "Sets the destination directory for log files." -msgstr "Initialise le r�pertoire de destination pour les journaux applicatifs." +#. 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, � la position %d, n'est pas dans la liste SELECT" -#: utils/misc/guc.c:2473 -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." +#: parser/parse_clause.c:1625 +#, c-format +msgid "window \"%s\" is already defined" +msgstr "le window � %s � est d�j� d�finie" -#: utils/misc/guc.c:2482 -msgid "Sets the file name pattern for log files." -msgstr "Initialise le mod�le de nom de fichiers pour les journaux applicatifs." +#: parser/parse_clause.c:1684 +#, c-format +msgid "cannot override PARTITION BY clause of window \"%s\"" +msgstr "n'a pas pu surcharger la clause PARTITION BY de window � %s �" -#: utils/misc/guc.c:2493 -msgid "Sets the program name used to identify PostgreSQL messages in syslog." +#: parser/parse_clause.c:1696 +#, 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:1726 parser/parse_clause.c:1732 +#, c-format +msgid "cannot copy window \"%s\" because it has a frame clause" msgstr "" -"Initialise le nom du programme utilis� pour identifier les messages de\n" -"PostgreSQL dans syslog." +"ne peut pas copier la fen�tre � %s � car il dispose d'une clause de port�e" -#: utils/misc/guc.c:2504 -msgid "Sets the time zone for displaying and interpreting time stamps." -msgstr "Initialise la zone horaire pour afficher et interpr�ter les dates/heures." +#: parser/parse_clause.c:1734 +msgid "Omit the parentheses in this OVER clause." +msgstr "Omettre les parenth�ses dans cette clause OVER." -#: utils/misc/guc.c:2513 -msgid "Selects a file of time zone abbreviations." -msgstr "S�lectionne un fichier contenant les abr�viations des fuseaux horaires." +#: parser/parse_clause.c:1800 +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" -#: utils/misc/guc.c:2522 -msgid "Sets the current transaction's isolation level." -msgstr "Initialise le niveau d'isolation de la transaction courante." +#: parser/parse_clause.c:1801 +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" -#: utils/misc/guc.c:2532 -msgid "Sets the owning group of the Unix-domain socket." -msgstr "Initialise le groupe d'appartenance du socket domaine Unix." +#: parser/parse_clause.c:1887 parser/parse_clause.c:1919 +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" -#: utils/misc/guc.c:2533 -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." +#: parser/parse_clause.c:2041 +#, 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" -#: utils/misc/guc.c:2542 -msgid "Sets the directory where the Unix-domain socket will be created." -msgstr "Initialise le r�pertoire o� le socket domaine Unix sera cr��." +#: parser/parse_clause.c:2043 +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." -#: utils/misc/guc.c:2552 -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." +#: parser/parse_expr.c:366 parser/parse_expr.c:759 +#, c-format +msgid "column %s.%s does not exist" +msgstr "la colonne %s.%s n'existe pas" -#: utils/misc/guc.c:2562 -msgid "Sets the list of known custom variable classes." -msgstr "Initialise la liste des classes variables personnalis�es connues." +#: parser/parse_expr.c:378 +#, c-format +msgid "column \"%s\" not found in data type %s" +msgstr "colonne � %s � introuvable pour le type de donn�es %s" -#: utils/misc/guc.c:2572 -msgid "Sets the server's data directory." -msgstr "Initialise le r�pertoire des donn�es du serveur." +#: parser/parse_expr.c:384 +#, 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" -#: utils/misc/guc.c:2582 -msgid "Sets the server's main configuration file." -msgstr "Voir le fichier de configuration principal du serveur." +#: parser/parse_expr.c:390 +#, 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�" -#: utils/misc/guc.c:2592 -msgid "Sets the server's \"hba\" configuration file." -msgstr "Initialise le fichier de configuration � hba � du serveur." +#: parser/parse_expr.c:420 parser/parse_target.c:618 +msgid "row expansion via \"*\" is not supported here" +msgstr "l'expansion de ligne via � * � n'est pas support� ici" -#: utils/misc/guc.c:2602 -msgid "Sets the server's \"ident\" configuration file." -msgstr "Initialise le fichier de configuration � ident � du serveur." +#: parser/parse_expr.c:743 parser/parse_target.c:1067 +#: parser/parse_relation.c:479 parser/parse_relation.c:559 +#, c-format +msgid "column reference \"%s\" is ambiguous" +msgstr "la r�f�rence � la colonne � %s � est ambigu" -#: utils/misc/guc.c:2612 -msgid "Writes the postmaster PID to the specified file." -msgstr "�crit le PID du postmaster PID dans le fichier sp�cifi�." +#: 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 +#, c-format +msgid "there is no parameter $%d" +msgstr "Il n'existe pas de param�tres $%d" -#: utils/misc/guc.c:2622 -msgid "Writes temporary statistics files to the specified directory." -msgstr "�crit les fichiers statistiques temporaires dans le r�pertoire indiqu�." +#: parser/parse_expr.c:1023 +msgid "NULLIF requires = operator to yield boolean" +msgstr "NULLIF requiert l'op�rateur = pour comparer des boole�ns" -#: utils/misc/guc.c:2632 -msgid "Sets default text search configuration." -msgstr "Initialise le configuration par d�faut de la recherche plein texte" +#: parser/parse_expr.c:1416 +msgid "subquery cannot have SELECT INTO" +msgstr "la sous-requ�te ne peut pas avoir de SELECT INTO" -#: utils/misc/guc.c:2642 -msgid "Sets the list of allowed SSL ciphers." -msgstr "Initialise la liste des chiffrements SSL autoris�s." +#: parser/parse_expr.c:1444 +msgid "subquery must return a column" +msgstr "la sous-requ�te doit renvoyer une colonne" -#: utils/misc/guc.c:2653 -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." +#: parser/parse_expr.c:1451 +msgid "subquery must return only one column" +msgstr "la sous-requ�te doit renvoyer une seule colonne" -#: utils/misc/guc.c:2672 -msgid "Sets whether \"\\'\" is allowed in string literals." -msgstr "Indique si � \\' � est autoris� dans une constante de cha�ne." +#: parser/parse_expr.c:1511 +msgid "subquery has too many columns" +msgstr "la sous-requ�te a trop de colonnes" -#: utils/misc/guc.c:2681 -msgid "Sets the output format for bytea." -msgstr "Initialise le format de sortie pour bytea." +#: parser/parse_expr.c:1516 +msgid "subquery has too few columns" +msgstr "la sous-requ�te n'a pas assez de colonnes" -#: utils/misc/guc.c:2690 -msgid "Sets the message levels that are sent to the client." -msgstr "Initialise les niveaux de message envoy�s au client." +#: parser/parse_expr.c:1612 +msgid "cannot determine type of empty array" +msgstr "ne peut pas d�terminer le type d'un tableau vide" -#: utils/misc/guc.c:2691 -#: utils/misc/guc.c:2740 -#: utils/misc/guc.c:2750 -#: utils/misc/guc.c:2790 -msgid "Each level includes all the levels that follow it. The later the level, the fewer messages are sent." +#: parser/parse_expr.c:1613 +msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]." msgstr "" -"Chaque niveau inclut les niveaux qui suivent. Plus loin sera le niveau,\n" -"moindre sera le nombre de messages envoy�s." +"Convertit explicitement vers le type d�sir�, par exemple ARRAY[]::integer[]." -#: utils/misc/guc.c:2700 -msgid "Enables the planner to use constraints to optimize queries." -msgstr "Active l'utilisation des contraintes par le planificateur pour optimiser les requ�tes." +#: parser/parse_expr.c:1627 +#, 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" -#: utils/misc/guc.c:2701 -msgid "Table scans will be skipped if their constraints guarantee that no rows match the query." +#: parser/parse_expr.c:1841 +msgid "unnamed XML attribute value must be a column reference" msgstr "" -"Les parcours de tables seront ignor�s si leur contraintes garantissent\n" -"qu'aucune ligne ne correspond � la requ�te." +"la valeur d'un attribut XML sans nom doit �tre une r�f�rence de colonne" -#: utils/misc/guc.c:2711 -msgid "Sets the transaction isolation level of each new transaction." -msgstr "Initialise le niveau d'isolation des transactions pour chaque nouvelle transaction." +#: parser/parse_expr.c:1842 +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" -#: utils/misc/guc.c:2720 -msgid "Sets the display format for interval values." -msgstr "Initialise le format d'affichage des valeurs interval." +#: parser/parse_expr.c:1857 +#, 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" -#: utils/misc/guc.c:2730 -msgid "Sets the verbosity of logged messages." -msgstr "Initialise la verbosit� des messages trac�s." +#: parser/parse_expr.c:1964 +#, c-format +msgid "cannot cast XMLSERIALIZE result to %s" +msgstr "ne peut pas convertir le r�sultat XMLSERIALIZE en %s" -#: utils/misc/guc.c:2739 -msgid "Sets the message levels that are logged." -msgstr "Initialise les niveaux de messages trac�s." +#: parser/parse_expr.c:2207 parser/parse_expr.c:2407 +msgid "unequal number of entries in row expressions" +msgstr "nombre diff�rent d'entr�es dans les expressions de ligne" -#: utils/misc/guc.c:2749 -msgid "Causes all statements generating error at or above this level to be logged." +#: parser/parse_expr.c:2217 +msgid "cannot compare rows of zero length" +msgstr "n'a pas pu comparer des lignes de taille z�ro" + +#: parser/parse_expr.c:2242 +#, c-format +msgid "row comparison operator must yield type boolean, not type %s" msgstr "" -"G�n�re une trace pour toutes les instructions qui produisent une erreur de\n" -"ce niveau ou de niveaux plus importants." +"l'op�rateur de comparaison de ligne doit renvoyer le type bool�en, et non " +"le\n" +"type %s" -#: utils/misc/guc.c:2759 -msgid "Sets the type of statements logged." -msgstr "Initialise le type d'instructions trac�es." +#: parser/parse_expr.c:2249 +msgid "row comparison operator must not return a set" +msgstr "l'op�rateur de comparaison de ligne ne doit pas renvoyer un ensemble" -#: utils/misc/guc.c:2769 -msgid "Sets the syslog \"facility\" to be used when syslog enabled." +#: parser/parse_expr.c:2308 parser/parse_expr.c:2353 +#, c-format +msgid "could not determine interpretation of row comparison operator %s" msgstr "" -"Initialise le niveau (� facility �) de syslog � utilis� lors de l'activation\n" -"de syslog." +"n'a pas pu d�terminer l'interpr�tation de l'op�rateur de comparaison de " +"ligne %s" -#: utils/misc/guc.c:2779 -msgid "Sets the session's behavior for triggers and rewrite rules." +#: parser/parse_expr.c:2310 +msgid "" +"Row comparison operators must be associated with btree operator families." msgstr "" -"Configure le comportement des sessions pour les triggers et les r�gles de\n" -"r�-�criture." - -#: utils/misc/guc.c:2789 -msgid "Enables logging of recovery-related debugging information." -msgstr "Active les traces sur les informations de d�bogage relatives � la restauration." - -#: utils/misc/guc.c:2803 -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." +"Les op�rateurs de comparaison de lignes doivent �tre associ�s � des " +"familles\n" +"d'op�rateurs btree." -#: utils/misc/guc.c:2812 -msgid "Set the level of information written to the WAL." -msgstr "Configure le niveau des informations �crites dans les journaux de transactions." +#: parser/parse_expr.c:2355 +msgid "There are multiple equally-plausible candidates." +msgstr "Il existe de nombreus candidats �galement plausibles." -#: utils/misc/guc.c:2821 -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." +#: parser/parse_expr.c:2447 +msgid "IS DISTINCT FROM requires = operator to yield boolean" +msgstr "IS DISTINCT FROM requiert l'op�rateur = pour comparer des bool�ens" -#: utils/misc/guc.c:2831 -msgid "Sets how binary values are to be encoded in XML." -msgstr "Configure comment les valeurs binaires seront cod�es en XML." +#: parser/parse_target.c:383 parser/parse_target.c:671 +#, c-format +msgid "cannot assign to system column \"%s\"" +msgstr "ne peut pas affecter � une colonne syst�me � %s �" -#: utils/misc/guc.c:2840 -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." +#: parser/parse_target.c:411 +msgid "cannot set an array element to DEFAULT" +msgstr "ne peut pas initialiser un �l�ment d'un tableau avec DEFAULT" -#: utils/misc/guc.c:3612 -#, c-format -msgid "" -"%s does not know where to find the server configuration file.\n" -"You must specify the --config-file or -D invocation option or set the PGDATA environment variable.\n" -msgstr "" -"%s ne sait pas o� trouver le fichier de configuration du serveur.\n" -"Vous devez soit sp�cifier l'option --config-file soit sp�cifier l'option -D\n" -"soit initialiser la variable d'environnement.\n" +#: parser/parse_target.c:416 +msgid "cannot set a subfield to DEFAULT" +msgstr "ne peut pas initialiser un sous-champ avec DEFAULT" -#: utils/misc/guc.c:3631 +#: parser/parse_target.c:485 #, 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" +msgid "column \"%s\" is of type %s but expression is of type %s" +msgstr "la colonne � %s � est de type %s mais l'expression est de type %s" -#: utils/misc/guc.c:3651 +#: parser/parse_target.c:655 #, 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" +"cannot assign to field \"%s\" of column \"%s\" because its type %s is not a " +"composite type" 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" +"ne peut pas l'affecter au champ � %s � de la colonne � %s � parce que son\n" +"type %s n'est pas un type compos�" -#: utils/misc/guc.c:3682 +#: parser/parse_target.c:664 #, 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" +"cannot assign to field \"%s\" of column \"%s\" because there is no such " +"column in data type %s" 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" +"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" -#: utils/misc/guc.c:3705 +#: parser/parse_target.c:731 #, 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" +"array assignment to \"%s\" requires type %s but expression is of type %s" 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:4310 -#: utils/misc/guc.c:4474 -msgid "Value exceeds integer range." -msgstr "La valeur d�passe l'�chelle des entiers." +"l'affectation d'un tableau avec � %s � requiert le type %s mais l'expression " +"est\n" +"de type %s" -#: utils/misc/guc.c:4329 -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 �." +#: parser/parse_target.c:741 +#, c-format +msgid "subfield \"%s\" is of type %s but expression is of type %s" +msgstr "le sous-champ � %s � est de type %s mais l'expression est de type %s" -#: utils/misc/guc.c:4388 -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 �." +#: parser/parse_target.c:1129 +msgid "SELECT * with no tables specified is not valid" +msgstr "Un SELECT * sans table sp�cifi�e n'est pas valide" -#: utils/misc/guc.c:4697 -#: utils/misc/guc.c:5361 -#: utils/misc/guc.c:5411 -#: utils/misc/guc.c:6115 -#: utils/misc/guc.c:6274 -#: utils/misc/guc.c:7496 -#: guc-file.l:217 +#: parser/parse_param.c:215 #, c-format -msgid "unrecognized configuration parameter \"%s\"" -msgstr "param�tre de configuration � %s � non reconnu" +msgid "inconsistent types deduced for parameter $%d" +msgstr "types incoh�rents d�duit pour le param�tre $%d" -#: utils/misc/guc.c:4724 +#: parser/parse_node.c:83 #, c-format -msgid "parameter \"%s\" cannot be changed" -msgstr "le param�tre � %s � ne peut pas �tre chang�" +msgid "target lists can have at most %d entries" +msgstr "les listes cibles peuvent avoir au plus %d colonnes" -#: utils/misc/guc.c:4741 -#: utils/misc/guc.c:4749 -#: guc-file.l:264 +#: parser/parse_node.c:252 #, 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" +msgid "cannot subscript type %s because it is not an array" +msgstr "ne peut pas indicer le type %s car il ne s'agit pas d'un tableau" -#: utils/misc/guc.c:4759 -#, c-format -msgid "parameter \"%s\" cannot be changed now" -msgstr "le param�tre � %s � ne peut pas �tre modifi� maintenant" +#: parser/parse_node.c:355 parser/parse_node.c:382 +msgid "array subscript must have type integer" +msgstr "l'indice d'un tableau doit �tre de type entier" -#: utils/misc/guc.c:4790 +#: parser/parse_node.c:406 #, 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" +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" -#: utils/misc/guc.c:4800 -#: utils/misc/guc.c:7511 +#: parser/parse_collate.c:214 parser/parse_collate.c:538 #, c-format -msgid "permission denied to set parameter \"%s\"" -msgstr "droit refus� pour initialiser le param�tre � %s �" +msgid "collation mismatch between implicit collations \"%s\" and \"%s\"" +msgstr "" +"le collationnement ne correspond pas aux collationnements implicites � %s � " +"et � %s �" -#: utils/misc/guc.c:4838 -#, c-format -msgid "cannot set parameter \"%s\" within security-definer function" +#: 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 "" -"ne peut pas configurer le param�tre � %s � � l'int�rieur d'une fonction\n" -"SECURITY DEFINER" +"Vous pouvez choisir le collationnement en appliquant la clause COLLATE � une " +"ou aux deux expressions." -#: utils/misc/guc.c:4846 -#: utils/init/miscinit.c:380 +#: parser/parse_collate.c:769 #, c-format -msgid "cannot set parameter \"%s\" within security-restricted operation" +msgid "collation mismatch between explicit collations \"%s\" and \"%s\"" msgstr "" -"ne peut pas configurer le param�tre � %s � � l'int�rieur d'une fonction\n" -"restreinte pour s�curit�" +"le collationnement ne correspond pas aux collationnements explicites � %s � " +"et � %s �" -#: utils/misc/guc.c:4917 -#: utils/misc/guc.c:4992 +#: parser/parse_relation.c:148 #, c-format -msgid "invalid value for parameter \"%s\": %d" -msgstr "valeur invalide pour le param�tre � %s � : %d" +msgid "table reference \"%s\" is ambiguous" +msgstr "la r�f�rence � la table � %s � est ambigu" -#: utils/misc/guc.c:4961 -#: utils/misc/guc.c:5163 -#: utils/misc/guc.c:5229 -#: utils/misc/guc.c:5255 -#: guc-file.l:178 +#: parser/parse_relation.c:184 #, c-format -msgid "invalid value for parameter \"%s\": \"%s\"" -msgstr "valeur invalide pour le param�tre � %s � : � %s �" +msgid "table reference %u is ambiguous" +msgstr "la r�f�rence � la table %u est ambigu" -#: utils/misc/guc.c:4970 +#: parser/parse_relation.c:344 #, 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)" +msgid "table name \"%s\" specified more than once" +msgstr "le nom de la table � %s � est sp�cifi� plus d'une fois" -#: utils/misc/guc.c:5034 +#: parser/parse_relation.c:763 parser/parse_relation.c:1054 +#: parser/parse_relation.c:1441 #, c-format -msgid "parameter \"%s\" requires a numeric value" -msgstr "le param�tre � %s � requiert une valeur num�rique" +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" -#: utils/misc/guc.c:5042 +#: parser/parse_relation.c:793 #, 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)" +msgid "too many column aliases specified for function %s" +msgstr "trop d'alias de colonnes sp�cifi�es pour la fonction %s" -#: utils/misc/guc.c:5064 +#: parser/parse_relation.c:859 #, c-format -msgid "invalid value for parameter \"%s\": %g" -msgstr "valeur invalide pour le param�tre � %s � : %g" +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:861 +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:1134 +msgid "" +"a column definition list is only allowed for functions returning \"record\"" +msgstr "" +"une liste de d�finition de colonnes est uniquement autoris�e pour les " +"fonctions\n" +"renvoyant un � record �" + +#: parser/parse_relation.c:1142 +msgid "a column definition list is required for functions returning \"record\"" +msgstr "" +"une liste de d�finition de colonnes est requise pour les fonctions " +"renvoyant\n" +"un � record �" -#: utils/misc/guc.c:5367 -#: utils/misc/guc.c:5415 -#: utils/misc/guc.c:6278 +#: parser/parse_relation.c:1193 #, c-format -msgid "must be superuser to examine \"%s\"" -msgstr "doit �tre super-utilisateur pour examiner � %s �" +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�" -#: utils/misc/guc.c:5526 +#: parser/parse_relation.c:1267 #, c-format -msgid "SET %s takes only one argument" -msgstr "SET %s prend un seul argument" +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" -#: utils/misc/guc.c:5753 -msgid "SET requires parameter name" -msgstr "SET requiert le nom du param�tre" +#: parser/parse_relation.c:1323 +#, c-format +msgid "joins can have at most %d columns" +msgstr "les jointures peuvent avoir au plus %d colonnes" -#: utils/misc/guc.c:5868 +#: parser/parse_relation.c:1414 #, c-format -msgid "attempt to redefine parameter \"%s\"" -msgstr "tentative de red�finition du param�tre � %s �" +msgid "WITH query \"%s\" does not have a RETURNING clause" +msgstr "La requ�te WITH � %s � n'a pas de clause RETURNING" -#: utils/misc/guc.c:7212 +#: parser/parse_relation.c:2104 #, c-format -msgid "could not parse setting for parameter \"%s\"" -msgstr "n'a pas pu analyser la configuration du param�tre � %s �" +msgid "column %d of relation \"%s\" does not exist" +msgstr "la colonne %d de la relation � %s � n'existe pas" -#: utils/misc/guc.c:7555 -msgid "invalid list syntax for parameter \"log_destination\"" -msgstr "syntaxe de liste invalide pour le param�tre � log_destination �" +#: parser/parse_relation.c:2489 +#, 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 �" -#: utils/misc/guc.c:7579 +#: parser/parse_relation.c:2492 #, c-format -msgid "unrecognized \"log_destination\" key word: \"%s\"" -msgstr "mot cl� � log_destination � non reconnu : � %s �" +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 �." -#: utils/misc/guc.c:7654 -msgid "SET AUTOCOMMIT TO OFF is no longer supported" -msgstr "SET AUTOCOMMIT TO OFF n'est plus support�" +#: parser/parse_relation.c:2494 +#, c-format +msgid "" +"There is an entry for table \"%s\", but it cannot be referenced from this " +"part of the query." +msgstr "" +"Il existe une entr�e pour la table � %s � mais elle ne peut pas �tre\n" +"r�f�renc�e de cette partie de la requ�te." -#: utils/misc/guc.c:7726 -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" +#: parser/parse_relation.c:2500 +#, c-format +msgid "missing FROM-clause entry for table \"%s\"" +msgstr "entr�e manquante de la clause FROM pour la table � %s �" -#: utils/misc/guc.c:7741 -msgid "Bonjour is not supported by this build" -msgstr "Bonjour n'est pas support� dans cette installation" +#: scan.l:411 +msgid "unterminated /* comment" +msgstr "commentaire /* non termin�" -#: utils/misc/guc.c:7756 -msgid "SSL is not supported by this build" -msgstr "SSL n'est pas support� dans cette installation" +#: scan.l:440 +msgid "unterminated bit string literal" +msgstr "cha�ne litt�rale bit non termin�e" -#: utils/misc/guc.c:7770 -msgid "cannot enable parameter when \"log_statement_stats\" is true" -msgstr "ne peut pas activer le param�tre avec � log_statement_stats � � true" +#: scan.l:461 +msgid "unterminated hexadecimal string literal" +msgstr "cha�ne litt�rale hexad�cimale non termin�e" -#: utils/misc/guc.c:7786 -msgid "cannot enable \"log_statement_stats\" when \"log_parser_stats\", \"log_planner_stats\", or \"log_executor_stats\" is true" +#: scan.l:511 +msgid "unsafe use of string constant with Unicode escapes" msgstr "" -"ne peut pas activer � log_statement_stats � lorsque � log_parser_stats �,\n" -"� log_planner_stats � ou � log_executor_stats � est true" +"utilisation non s�re de la constante de cha�ne avec des �chappements Unicode" -#: utils/misc/guc.c:7804 -msgid "cannot set transaction read-write mode inside a read-only transaction" +#: scan.l:512 +msgid "" +"String constants with Unicode escapes cannot be used when " +"standard_conforming_strings is off." msgstr "" -"ne peut pas initialiser le mode lecture-�criture de la transaction �\n" -"l'int�rieur d'une transaction en lecture seule" +"Les constantes de cha�ne avec des �chappements Unicode ne peuvent pas �tre\n" +"utilis�es quand standard_conforming_strings est d�sactiv�." -#: utils/misc/guc.c:7815 -msgid "cannot set transaction read-write mode during recovery" -msgstr "" -"ne peut pas initialiser le mode lecture-�criture des transactions lors de la\n" -"restauration" +#: scan.l:564 scan.l:572 scan.l:580 scan.l:581 scan.l:582 scan.l:1242 +#: scan.l:1269 scan.l:1273 scan.l:1311 scan.l:1315 scan.l:1337 +msgid "invalid Unicode surrogate pair" +msgstr "paire surrogate Unicode invalide" -#: utils/misc/help_config.c:131 -msgid "internal error: unrecognized run-time parameter type\n" -msgstr "erreur interne : type de param�tre d'ex�cution non reconnu\n" +#: scan.l:586 +msgid "invalid Unicode escape" +msgstr "�chappement Unicode invalide" -#: guc-file.l:288 -#, c-format -msgid "parameter \"%s\" removed from configuration file, reset to default" +#: scan.l:587 +msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX." msgstr "" -"param�tre � %s � supprim� du fichier de configuration ;\n" -"r�initialisation � la valeur par d�faut" +"Les �chappements Unicode doivent �tre de la forme \\uXXXX ou \\UXXXXXXXX." -#: guc-file.l:344 -#, c-format -msgid "parameter \"%s\" changed to \"%s\"" -msgstr "param�tre � %s � modifi� par � %s �" +#: scan.l:598 +msgid "unsafe use of \\' in a string literal" +msgstr "utilisation non s�re de \\' dans une cha�ne litt�rale" -#: guc-file.l:412 -#, c-format -msgid "could not open configuration file \"%s\": maximum nesting depth exceeded" +#: scan.l:599 +msgid "" +"Use '' to write quotes in strings. \\' is insecure in client-only encodings." msgstr "" -"n'a pas pu ouvrir le fichier de configuration � %s � : profondeur\n" -"d'imbrication d�pass�" +"Utilisez '' pour �crire des guillemets dans une cha�ne. \\' n'est pas " +"s�curis�\n" +"pour les encodages clients." -#: guc-file.l:575 -#, 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" +#: scan.l:674 +msgid "unterminated dollar-quoted string" +msgstr "cha�ne entre guillemets dollars non termin�e" -#: guc-file.l:580 -#, 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 �" +#: scan.l:691 scan.l:704 scan.l:720 +msgid "zero-length delimited identifier" +msgstr "identifiant d�limit� de longueur nulle" -#: utils/error/assert.c:37 -msgid "TRAP: ExceptionalCondition: bad arguments\n" -msgstr "TRAP : ExceptionalCondition : mauvais arguments\n" +#: scan.l:734 +msgid "unterminated quoted identifier" +msgstr "identifiant entre guillemets non termin�" -#: utils/error/assert.c:40 -#, c-format -msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n" -msgstr "TRAP : %s(� %s �, fichier : � %s �, ligne : %d)\n" +#: scan.l:838 +msgid "operator too long" +msgstr "op�rateur trop long" -#: utils/error/elog.c:1413 +#. translator: %s is typically the translation of "syntax error" +#: scan.l:996 #, c-format -msgid "could not reopen file \"%s\" as stderr: %m" -msgstr "n'a pas pu r�-ouvrir le fichier � %s � comme stderr : %m" +msgid "%s at end of input" +msgstr "%s � la fin de l'entr�e" -#: utils/error/elog.c:1426 +#. translator: first %s is typically the translation of "syntax error" +#: scan.l:1004 #, c-format -msgid "could not reopen file \"%s\" as stdout: %m" -msgstr "n'a pas pu r�-ouvrir le fichier � %s � comme stdout : %m" +msgid "%s at or near \"%s\"" +msgstr "%s sur ou pr�s de � %s �" -#: utils/error/elog.c:1815 -#: utils/error/elog.c:1825 -#: utils/error/elog.c:1835 -msgid "[unknown]" -msgstr "[inconnu]" +#: scan.l:1165 scan.l:1197 +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" -#: utils/error/elog.c:2183 -#: utils/error/elog.c:2463 -#: utils/error/elog.c:2541 -msgid "missing error text" -msgstr "texte d'erreur manquant" +#: scan.l:1193 scan.l:1329 +msgid "invalid Unicode escape value" +msgstr "valeur d'�chappement Unicode invalide" -#: utils/error/elog.c:2186 -#: utils/error/elog.c:2189 -#: utils/error/elog.c:2544 -#: utils/error/elog.c:2547 -#, c-format -msgid " at character %d" -msgstr " au caract�re %d" +#: scan.l:1218 +msgid "invalid Unicode escape character" +msgstr "cha�ne d'�chappement Unicode invalide" -#: utils/error/elog.c:2199 -#: utils/error/elog.c:2206 -msgid "DETAIL: " -msgstr "D�TAIL: " +#: scan.l:1385 +msgid "nonstandard use of \\' in a string literal" +msgstr "utilisation non standard de \\' dans une cha�ne litt�rale" -#: utils/error/elog.c:2213 -msgid "HINT: " -msgstr "ASTUCE : " +#: scan.l:1386 +msgid "" +"Use '' to write quotes in strings, or use the escape string syntax (E'...')." +msgstr "" +"Utilisez '' pour �crire des guillemets dans une cha�ne ou utilisez la " +"syntaxe de\n" +"cha�ne d'�chappement (E'...')." -#: utils/error/elog.c:2220 -msgid "QUERY: " -msgstr "REQU�TE : " +#: scan.l:1395 +msgid "nonstandard use of \\\\ in a string literal" +msgstr "utilisation non standard de \\\\ dans une cha�ne litt�rale" -#: utils/error/elog.c:2227 -msgid "CONTEXT: " -msgstr "CONTEXTE : " +#: scan.l:1396 +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'\\\\'." -#: utils/error/elog.c:2237 -#, c-format -msgid "LOCATION: %s, %s:%d\n" -msgstr "EMPLACEMENT : %s, %s:%d\n" +#: scan.l:1410 +msgid "nonstandard use of escape in a string literal" +msgstr "utilisation non standard d'un �chappement dans une cha�ne litt�rale" -#: utils/error/elog.c:2244 -#, c-format -msgid "LOCATION: %s:%d\n" -msgstr "EMPLACEMENT : %s:%d\n" +#: scan.l:1411 +msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'." +msgstr "" +"Utilisez la syntaxe de la cha�ne d'�chappement pour les �chappements,\n" +"c'est-�-dire E'\\r\\n'." -#: utils/error/elog.c:2258 -msgid "STATEMENT: " -msgstr "INSTRUCTION : " +#: parser/parse_oper.c:221 +msgid "Use an explicit ordering operator or modify the query." +msgstr "Utilisez un op�rateur explicite de tri ou modifiez la requ�te." -#. translator: This string will be truncated at 47 -#. characters expanded. -#: utils/error/elog.c:2656 +#: parser/parse_oper.c:476 #, c-format -msgid "operating system error %d" -msgstr "erreur %d du syst�me d'exploitation" - -#: utils/error/elog.c:2679 -msgid "DEBUG" -msgstr "DEBUG" +msgid "operator requires run-time type coercion: %s" +msgstr "l'op�rateur requiert la coercion du type � l'ex�cution : %s" -#: utils/error/elog.c:2683 -msgid "LOG" -msgstr "LOG" +#: parser/parse_oper.c:710 +#, c-format +msgid "operator is not unique: %s" +msgstr "l'op�rateur n'est pas unique : %s" -#: utils/error/elog.c:2686 -msgid "INFO" -msgstr "INFO" +#: parser/parse_oper.c:712 +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" +"conversion explicite de type." -#: utils/error/elog.c:2689 -msgid "NOTICE" -msgstr "NOTICE" +#: parser/parse_oper.c:720 +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." -#: utils/error/elog.c:2692 -msgid "WARNING" -msgstr "ATTENTION" +#: parser/parse_oper.c:779 parser/parse_oper.c:893 +#, c-format +msgid "operator is only a shell: %s" +msgstr "l'op�rateur est seulement un shell : %s" -#: utils/error/elog.c:2695 -msgid "ERROR" -msgstr "ERREUR" +#: parser/parse_oper.c:881 +msgid "op ANY/ALL (array) requires array on right side" +msgstr "op ANY/ALL (tableau) requiert un tableau sur le c�t� droit" -#: utils/error/elog.c:2698 -msgid "FATAL" -msgstr "FATAL" +#: parser/parse_oper.c:923 +msgid "op ANY/ALL (array) requires operator to yield boolean" +msgstr "op ANY/ALL (tableau) requiert un op�rateur pour comparer des bool�ens" -#: utils/error/elog.c:2701 -msgid "PANIC" -msgstr "PANIC" +#: parser/parse_oper.c:928 +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" -#: utils/fmgr/dfmgr.c:125 +#: parser/parse_func.c:147 #, c-format -msgid "could not find function \"%s\" in file \"%s\"" -msgstr "n'a pas pu trouver la fonction � %s � dans le fichier � %s �" +msgid "argument name \"%s\" used more than once" +msgstr "nom � %s � de l'argument sp�cifi� plus d'une fois" -#: 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 "n'a pas pu acc�der au fichier � %s � : %m" +#: parser/parse_func.c:158 +msgid "positional argument cannot follow named argument" +msgstr "l'argument positionn� ne doit pas suivre l'argument nomm�" -#: utils/fmgr/dfmgr.c:242 +#: parser/parse_func.c:236 #, c-format -msgid "could not load library \"%s\": %s" -msgstr "n'a pas pu charger la biblioth�que � %s � : %s" +msgid "%s(*) specified, but %s is not an aggregate function" +msgstr "%s(*) sp�cifi�, mais %s n'est pas une fonction d'agr�gat" -#: utils/fmgr/dfmgr.c:274 +#: parser/parse_func.c:243 #, c-format -msgid "incompatible library \"%s\": missing magic block" -msgstr "biblioth�que � %s � incompatible : bloc magique manquant" - -#: utils/fmgr/dfmgr.c:276 -msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro." -msgstr "" -"Les biblioth�ques �tendues n�cessitent l'utilisation de la macro\n" -"PG_MODULE_MAGIC." +msgid "DISTINCT specified, but %s is not an aggregate function" +msgstr "DISTINCT sp�cifi� mais %s n'est pas une fonction d'agr�gat" -#: utils/fmgr/dfmgr.c:312 +#: parser/parse_func.c:249 #, c-format -msgid "incompatible library \"%s\": version mismatch" -msgstr "biblioth�que � %s � incompatible : versions diff�rentes" +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" -#: utils/fmgr/dfmgr.c:314 +#: parser/parse_func.c:255 #, c-format -msgid "Server is version %d.%d, library is version %d.%d." -msgstr "La version du serveur est %d.%d, celle de la biblioth�que est %d.%d." +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" -#: utils/fmgr/dfmgr.c:333 +#: parser/parse_func.c:277 #, c-format -msgid "Server has FUNC_MAX_ARGS = %d, library has %d." -msgstr "Le serveur a FUNC_MAX_ARGS = %d, la biblioth�que a %d." +msgid "function %s is not unique" +msgstr "la fonction %s n'est pas unique" -#: utils/fmgr/dfmgr.c:342 -#, c-format -msgid "Server has INDEX_MAX_KEYS = %d, library has %d." -msgstr "Le serveur a INDEX_MAX_KEYS = %d, la biblioth�que a %d." +#: parser/parse_func.c:280 +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." -#: utils/fmgr/dfmgr.c:351 -#, c-format -msgid "Server has NAMEDATALEN = %d, library has %d." -msgstr "Le serveur a NAMEDATALEN = %d, la biblioth�que a %d." +#: 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 "" +"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." -#: utils/fmgr/dfmgr.c:360 -#, c-format -msgid "Server has FLOAT4PASSBYVAL = %s, library has %s." -msgstr "Le serveur a FLOAT4PASSBYVAL = %s, la biblioth�que a %s." +#: parser/parse_func.c:302 +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." -#: utils/fmgr/dfmgr.c:369 +#: parser/parse_func.c:412 parser/parse_func.c:478 #, c-format -msgid "Server has FLOAT8PASSBYVAL = %s, library has %s." -msgstr "Le serveur a FLOAT8PASSBYVAL = %s, la biblioth�que a %s." +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" -#: 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." +#: parser/parse_func.c:419 +msgid "aggregates cannot return sets" +msgstr "les agr�gats ne peuvent pas renvoyer des ensembles" -#: 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" +#: parser/parse_func.c:431 +msgid "aggregates cannot use named arguments" +msgstr "les agr�gats ne peuvent pas utiliser des aguments nomm�s" -#: utils/fmgr/dfmgr.c:545 -#, c-format -msgid "access to library \"%s\" is not allowed" -msgstr "l'acc�s � la biblioth�que � %s � n'est pas autoris�" +#: parser/parse_func.c:450 +msgid "window function call requires an OVER clause" +msgstr "l'appel � la fonction window n�cessite une clause OVER" -#: utils/fmgr/dfmgr.c:572 -#, 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" +#: parser/parse_func.c:468 +msgid "DISTINCT is not implemented for window functions" +msgstr "DISTINCT n'est pas impl�ment� pour des fonctions window" -#: utils/fmgr/dfmgr.c:617 -msgid "zero-length component in parameter \"dynamic_library_path\"" -msgstr "composant de longueur z�ro dans le param�tre � dynamic_library_path �" +#: parser/parse_func.c:488 +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" -#: utils/fmgr/dfmgr.c:636 -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" +#: parser/parse_func.c:494 +msgid "window functions cannot return sets" +msgstr "les fonctions window ne peuvent pas renvoyer des ensembles" -#: utils/fmgr/fmgr.c:264 -#, 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" +#: parser/parse_func.c:505 +msgid "window functions cannot use named arguments" +msgstr "les fonctions window ne peuvent pas renvoyer des arguments nomm�s" -#: utils/fmgr/fmgr.c:468 +#: parser/parse_func.c:1589 #, 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 �" +msgid "aggregate %s(*) does not exist" +msgstr "l'agr�gat %s(*) n'existe pas" -#: utils/fmgr/fmgr.c:839 -#: utils/fmgr/fmgr.c:2071 +#: parser/parse_func.c:1594 #, 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)" +msgid "aggregate %s does not exist" +msgstr "l'agr�gat %s n'existe pas" -#: utils/fmgr/funcapi.c:354 +#: parser/parse_func.c:1613 #, c-format -msgid "could not determine actual result type for function \"%s\" declared to return type %s" -msgstr "" -"n'a pas pu d�terminer le type du r�sultat actuel pour la fonction � %s �\n" -"d�clarant retourner le type %s" - -#: utils/fmgr/funcapi.c:1187 -#: utils/fmgr/funcapi.c:1218 -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:1212 -msgid "no column alias was provided" -msgstr "aucun alias de colonne n'a �t� fourni" +msgid "function %s is not an aggregate" +msgstr "la fonction %s n'est pas un agr�gat" -#: utils/fmgr/funcapi.c:1236 -msgid "could not determine row description for function returning record" -msgstr "" -"n'a pas pu d�terminer la description de la ligne pour la fonction renvoyant\n" -"l'enregistrement" +#: parser/parse_type.c:83 +#, c-format +msgid "improper %%TYPE reference (too few dotted names): %s" +msgstr "r�f�rence %%TYPE invalide (trop peu de points entre les noms) : %s" -#: utils/init/miscinit.c:114 +#: parser/parse_type.c:105 #, c-format -msgid "could not change directory to \"%s\": %m" -msgstr "n'a pas pu modifier le r�pertoire par � %s � : %m" +msgid "improper %%TYPE reference (too many dotted names): %s" +msgstr "r�f�rence %%TYPE invalide (trop de points entre les noms) : %s" -#: utils/init/miscinit.c:441 +#: parser/parse_type.c:127 #, c-format -msgid "role \"%s\" is not permitted to log in" -msgstr "le r�le � %s � n'est pas autoris� � se connecter" +msgid "type reference %s converted to %s" +msgstr "r�f�rence de type %s convertie en %s" -#: utils/init/miscinit.c:459 +#: parser/parse_type.c:287 #, c-format -msgid "too many connections for role \"%s\"" -msgstr "trop de connexions pour le r�le � %s �" +msgid "type modifier is not allowed for type \"%s\"" +msgstr "le modificateur de type n'est pas autoris� pour le type � %s �" -#: utils/init/miscinit.c:519 -msgid "permission denied to set session authorization" -msgstr "droit refus� pour initialiser une autorisation de session" +#: parser/parse_type.c:330 +msgid "type modifiers must be simple constants or identifiers" +msgstr "" +"les modificateurs de type doivent �tre des constantes ou des identifiants" -#: utils/init/miscinit.c:599 +#: parser/parse_type.c:641 parser/parse_type.c:740 #, c-format -msgid "invalid role OID: %u" -msgstr "OID du r�le invalide : %u" +msgid "invalid type name \"%s\"" +msgstr "nom de type � %s � invalide" -#: utils/init/miscinit.c:731 +#: parser/scansup.c:192 #, c-format -msgid "could not create lock file \"%s\": %m" -msgstr "n'a pas pu cr�er le fichier verrou � %s � : %m" +msgid "identifier \"%s\" will be truncated to \"%s\"" +msgstr "l'identifiant � %s � sera tronqu� en � %s �" -#: utils/init/miscinit.c:745 +#: parser/parse_cte.c:42 #, c-format -msgid "could not open lock file \"%s\": %m" -msgstr "n'a pas pu ouvrir le fichier verrou � %s � : %m" +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" -#: utils/init/miscinit.c:751 +#: parser/parse_cte.c:44 #, c-format -msgid "could not read lock file \"%s\": %m" -msgstr "n'a pas pu lire le fichier verrou � %s � : %m" +msgid "recursive reference to query \"%s\" must not appear within a subquery" +msgstr "" +"la r�f�rence r�cursive � la requ�te � %s � ne doit pas appara�tre �\n" +"l'int�rieur d'une sous-requ�te" -#: utils/init/miscinit.c:799 +#: parser/parse_cte.c:46 #, c-format -msgid "lock file \"%s\" already exists" -msgstr "le fichier verrou � %s � existe d�j�" +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" -#: utils/init/miscinit.c:803 +#: parser/parse_cte.c:48 #, c-format -msgid "Is another postgres (PID %d) running in data directory \"%s\"?" +msgid "recursive reference to query \"%s\" must not appear within INTERSECT" msgstr "" -"Un autre postgres (de PID %d) est-il d�j� lanc� avec comme r�pertoire de\n" -"donn�es � %s � ?" +"la r�f�rence r�cursive � la requ�te � %s � ne doit pas appara�tre �\n" +"l'int�rieur d'INTERSECT" -#: utils/init/miscinit.c:805 +#: parser/parse_cte.c:50 #, c-format -msgid "Is another postmaster (PID %d) running in data directory \"%s\"?" +msgid "recursive reference to query \"%s\" must not appear within EXCEPT" msgstr "" -"Un autre postmaster (de PID %d) est-il d�j� lanc� avec comme r�pertoire de\n" -"donn�es � %s � ?" +"la r�f�rence r�cursive � la requ�te � %s � ne doit pas appara�tre �\n" +"l'int�rieur d'EXCEPT" -#: utils/init/miscinit.c:808 +#: parser/parse_cte.c:132 #, 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 � ?" +msgid "WITH query name \"%s\" specified more than once" +msgstr "le nom de la requ�te WITH � %s � est sp�cifi� plus d'une fois" -#: utils/init/miscinit.c:810 -#, 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 � ?" +#: parser/parse_cte.c:259 +msgid "subquery in WITH cannot have SELECT INTO" +msgstr "la sous-requ�te du WITH ne peut pas avoir de SELECT INTO" -#: utils/init/miscinit.c:841 -#, c-format -msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use" +#: parser/parse_cte.c:271 +msgid "" +"WITH clause containing a data-modifying statement must be at the top level" msgstr "" -"le bloc de m�moire partag� pr�-existant (cl� %lu, ID %lu) est en cours\n" -"d'utilisation" +"la clause WITH contenant une instruction de modification de donn�es doit " +"�tre\n" +"au plus haut niveau" -#: utils/init/miscinit.c:844 +#: parser/parse_cte.c:320 #, 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 "" +"recursive query \"%s\" column %d has type %s in non-recursive term but type " +"%s overall" 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 �." +"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:326 +msgid "Cast the output of the non-recursive term to the correct type." +msgstr "Convertit la sortie du terme non r�cursif dans le bon type." -#: utils/init/miscinit.c:861 +#: parser/parse_cte.c:331 #, c-format -msgid "could not remove old lock file \"%s\": %m" -msgstr "n'a pas pu supprimer le vieux fichier verrou � %s � : %m" +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" -#: utils/init/miscinit.c:863 -msgid "The file seems accidentally left over, but it could not be removed. Please remove the file by hand and try again." +#: parser/parse_cte.c:335 +msgid "Use the COLLATE clause to set the collation of the non-recursive term." msgstr "" -"Le fichier semble avoir �t� oubli� accidentellement mais il ne peut pas �tre\n" -"supprim�. Merci de supprimer ce fichier manuellement et de r�-essayer." +"Utilisez la clause COLLATE pour configurer le collationnement du terme non " +"r�cursif." -#: utils/init/miscinit.c:885 -#: utils/init/miscinit.c:896 -#: utils/init/miscinit.c:906 +#: parser/parse_cte.c:426 #, c-format -msgid "could not write lock file \"%s\": %m" -msgstr "n'a pas pu �crire le fichier verrou � %s � : %m" +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" -#: utils/init/miscinit.c:1112 -#: utils/init/miscinit.c:1125 -#, c-format -msgid "\"%s\" is not a valid data directory" -msgstr "� %s � n'est pas un r�pertoire de donn�es valide" +#: parser/parse_cte.c:606 +msgid "mutual recursion between WITH items is not implemented" +msgstr "la r�cursion mutuelle entre des �l�ments WITH n'est pas implant�e" -#: utils/init/miscinit.c:1114 +#: parser/parse_cte.c:658 #, c-format -msgid "File \"%s\" is missing." -msgstr "le fichier � %s � est manquant." +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" -#: utils/init/miscinit.c:1127 +#: parser/parse_cte.c:666 #, c-format -msgid "File \"%s\" does not contain valid data." -msgstr "le fichier � %s � ne contient aucune donn�es valides." +msgid "" +"recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] " +"recursive-term" +msgstr "" +"la requ�te r�cursive � %s � n'a pas la forme terme-non-r�cursive UNION " +"[ALL]\n" +"terme-r�cursive" -#: utils/init/miscinit.c:1129 -msgid "You might need to initdb." -msgstr "Vous pouvez avoir besoin d'ex�cuter initdb." +#: parser/parse_cte.c:710 +msgid "ORDER BY in a recursive query is not implemented" +msgstr "ORDER BY dans une requ�te r�cursive n'est pas implant�" + +#: parser/parse_cte.c:716 +msgid "OFFSET in a recursive query is not implemented" +msgstr "OFFSET dans une requ�te r�cursive n'est pas impl�ment�" + +#: parser/parse_cte.c:722 +msgid "LIMIT in a recursive query is not implemented" +msgstr "LIMIT dans une requ�te r�cursive n'est pas impl�ment�" + +#: parser/parse_cte.c:728 +msgid "FOR UPDATE/SHARE in a recursive query is not implemented" +msgstr "FOR UPDATE/SHARE dans une requ�te r�cursive n'est pas impl�ment�" -#: utils/init/miscinit.c:1137 +#: parser/parse_cte.c:785 #, c-format -msgid "The data directory was initialized by PostgreSQL version %ld.%ld, which is not compatible with this version %s." +msgid "recursive reference to query \"%s\" must not appear more than once" msgstr "" -"Le r�pertoire des donn�es a �t� initialis� avec PostgreSQL version %ld.%ld,\n" -"qui est non compatible avec cette version %s." +"la r�f�rence r�cursive � la requ�te � %s � ne doit pas appara�tre plus d'une " +"fois" -#: utils/init/miscinit.c:1185 +#: port/win32_sema.c:94 #, c-format -msgid "invalid list syntax in parameter \"%s\"" -msgstr "syntaxe de liste invalide pour le param�tre � %s �" +msgid "could not create semaphore: error code %d" +msgstr "n'a pas pu cr�er une s�maphore : code d'erreur %d" -#: utils/init/miscinit.c:1222 +#: port/win32_sema.c:165 #, c-format -msgid "loaded library \"%s\"" -msgstr "biblioth�que � %s � charg�e" +msgid "could not lock semaphore: error code %d" +msgstr "n'a pas pu verrouiller la s�maphore : code d'erreur %d" -#: utils/init/postinit.c:229 +#: port/win32_sema.c:178 #, c-format -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 "could not unlock semaphore: error code %d" +msgstr "n'a pas pu d�verrouiller la s�maphore : code d'erreur %d" -#: utils/init/postinit.c:235 +#: port/win32_sema.c:207 #, c-format -msgid "replication connection authorized: user=%s host=%s" -msgstr "connexion de r�plication autoris�e : utilisateur=%s, base de donn�es=%s" +msgid "could not try-lock semaphore: error code %d" +msgstr "n'a pas pu tenter le verrouillage de la s�maphore : code d'erreur %d" -#: utils/init/postinit.c:241 +#: port/sysv_shmem.c:146 port/pg_shmem.c:146 #, c-format -msgid "connection authorized: user=%s database=%s" -msgstr "connexion autoris�e : utilisateur=%s, base de donn�es=%s" +msgid "could not create shared memory segment: %m" +msgstr "n'a pas pu cr�er le segment de m�moire partag�e : %m" -#: utils/init/postinit.c:271 +#: port/sysv_shmem.c:147 port/pg_shmem.c:147 #, c-format -msgid "database \"%s\" has disappeared from pg_database" -msgstr "la base de donn�es � %s � a disparu de pg_database" +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)." -#: utils/init/postinit.c:273 +#: port/sysv_shmem.c:151 port/pg_shmem.c:151 #, 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 �." +msgid "" +"This error usually means that PostgreSQL's request for a shared memory " +"segment exceeded your kernel's SHMMAX parameter. You can either reduce the " +"request size or reconfigure the kernel with larger SHMMAX. To reduce the " +"request size (currently %lu bytes), reduce PostgreSQL's shared memory usage, " +"perhaps by reducing shared_buffers or max_connections.\n" +"If the request size is already small, it's possible that it is less than " +"your kernel's SHMMIN parameter, in which case raising the request size or " +"reconfiguring SHMMIN is called for.\n" +"The PostgreSQL documentation contains more information about shared memory " +"configuration." +msgstr "" +"Cette erreur signifie habituellement que la demande de PostgreSQL pour un\n" +"segment de m�moire partag�e a d�pass� le param�tre SHMMAX de votre noyau.\n" +"Vous pouvez soit r�duire la taille de la requ�te soit reconfigurer le noyau\n" +"avec un SHMMAX plus important. Pour r�duire la taille de la requ�te\n" +"(actuellement %lu octets), r�duisez l'utilisation de la m�moire partag�e par " +"PostgreSQL,par exemple en r�duisant shared_buffers ou max_connections\n" +"Si la taille de la requ�te est d�j� petite, il est possible qu'elle soit\n" +"moindre que le param�tre SHMMIN de votre noyau, auquel cas, augmentez la\n" +"taille de la requ�te ou reconfigurez SHMMIN.\n" +"La documentation de PostgreSQL contient plus d'informations sur la\n" +"configuration de la m�moire partag�e." -#: utils/init/postinit.c:293 +#: port/sysv_shmem.c:164 port/pg_shmem.c:164 #, c-format -msgid "database \"%s\" is not currently accepting connections" -msgstr "la base de donn�es � %s � n'accepte plus les connexions" +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 "" +"Cette erreur signifie habituellement que la demande de PostgreSQL pour un\n" +"segment de m�moire partag�e d�passe la m�moire disponible ou l'espace swap,\n" +"voire d�passe la valeur du param�tre SHMALL du noyau.\n" +"Vous pouvez soit r�duire la taille demand�e soit reconfigurer le noyau avec\n" +"un SHMALL plus gros.\n" +"Pour r�duire la taille demand�e (actuellement %lu octets), diminuez la " +"valeur\n" +"du param�tre shared_buffers de PostgreSQL ou le param�tre max_connections.\n" +"La documentation de PostgreSQL contient plus d'informations sur la\n" +"configuration de la m�moire partag�e." -#: utils/init/postinit.c:306 +#: port/sysv_shmem.c:175 port/pg_shmem.c:175 #, c-format -msgid "permission denied for database \"%s\"" -msgstr "droit refus� pour la base de donn�es � %s �" +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 "" +"Cette erreur ne signifie *pas* que vous manquez d'espace disque. Elle\n" +"survient si tous les identifiants de m�moire partag� disponibles ont �t�\n" +"pris, auquel cas vous devez augmenter le param�tre SHMMNI de votre noyau, " +"ou\n" +"parce que la limite maximum de la m�moire partag�e de votre syst�me a �t�\n" +"atteinte. Si vous ne pouvez pas augmenter la limite de la m�moire partag�e,\n" +"r�duisez la demande de m�moire partag�e de PostgreSQL (actuellement %lu\n" +"octets) en r�duisant le param�tre shared_buffers ou max_connections.\n" +"La documentation de PostgreSQL contient plus d'informations sur la\n" +"configuration de la m�moire partag�e." -#: utils/init/postinit.c:307 -msgid "User does not have CONNECT privilege." -msgstr "L'utilisateur n'a pas le droit CONNECT." +#: port/sysv_shmem.c:438 port/pg_shmem.c:438 +#, 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" -#: utils/init/postinit.c:324 +#: port/sysv_sema.c:116 port/pg_sema.c:116 #, c-format -msgid "too many connections for database \"%s\"" -msgstr "trop de connexions pour la base de donn�es � %s �" - -#: utils/init/postinit.c:346 -#: utils/init/postinit.c:353 -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" +msgid "could not create semaphores: %m" +msgstr "n'a pas pu cr�er des s�maphores : %m" -#: utils/init/postinit.c:347 +#: port/sysv_sema.c:117 port/pg_sema.c:117 #, c-format -msgid "The database was initialized with LC_COLLATE \"%s\", which is not recognized by setlocale()." -msgstr "" -"La base de donn�es a �t� initialis�e avec un LC_COLLATE � � %s �,\n" -"qui n'est pas reconnu par setlocale()." +msgid "Failed system call was semget(%lu, %d, 0%o)." +msgstr "L'appel syst�me qui a �chou� �tait semget(%lu, %d, 0%o)." -#: utils/init/postinit.c:349 -#: utils/init/postinit.c:356 -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." +#: port/sysv_sema.c:121 port/pg_sema.c:121 +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 "" +"Cette erreur ne signifie *pas* que vous manquez d'espace disque. Il arrive\n" +"que soit la limite syst�me du nombre maximum d'ensembles de s�maphores\n" +"(SEMMNI) ou le nombre maximum de s�maphores pour le syst�me (SEMMNS) soit\n" +"d�pass�e. Vous avez besoin d'augmenter le param�tre noyau respectif.\n" +"Autrement, r�duisez la consommation de s�maphores par PostgreSQL en " +"r�duisant\n" +"son param�tre max_connections.\n" +"La documentation de PostgreSQL contient plus d'informations sur la\n" +"configuration de votre syst�me avec PostgreSQL." -#: utils/init/postinit.c:354 +#: port/sysv_sema.c:151 port/pg_sema.c:151 #, c-format -msgid "The database was initialized with LC_CTYPE \"%s\", which is not recognized by setlocale()." +msgid "" +"You possibly need to raise your kernel's SEMVMX value to be at least %d. " +"Look into the PostgreSQL documentation for details." 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:608 -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" +"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." -#: utils/init/postinit.c:609 +#: port/win32_shmem.c:168 port/win32_shmem.c:203 port/win32_shmem.c:224 #, c-format -msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;." -msgstr "Vous devez imm�diatement ex�cuter � CREATE USER \"%s\" CREATEUSER; �." +msgid "could not create shared memory segment: %lu" +msgstr "n'a pas pu cr�er le segment de m�moire partag�e : %lu" -#: utils/init/postinit.c:632 -msgid "new replication connections are not allowed during database shutdown" +#: port/win32_shmem.c:169 +#, c-format +msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)." 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" +"L'appel syst�me qui a �chou� �tait CreateFileMapping(taille=%lu, nom=%s)." -#: utils/init/postinit.c:636 -msgid "must be superuser to connect during database shutdown" +#: port/win32_shmem.c:193 +msgid "pre-existing shared memory block is still in use" msgstr "" -"doit �tre super-utilisateur pour se connecter pendant un arr�t de la base de\n" -"donn�es" +"le bloc de m�moire partag� pr�-existant est toujours en cours d'utilisation" -#: utils/init/postinit.c:650 -msgid "remaining connection slots are reserved for non-replication superuser connections" +#: port/win32_shmem.c:194 +msgid "" +"Check if there are any old server processes still running, and terminate " +"them." msgstr "" -"les emplacements de connexions restants sont r�serv�s pour les connexion\n" -"superutilisateur non relatif � la r�plication" +"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." -#: utils/init/postinit.c:665 -msgid "must be superuser to start walsender" -msgstr "doit �tre super-utilisateur pour ex�cuter walsender" +#: port/win32_shmem.c:204 +msgid "Failed system call was DuplicateHandle." +msgstr "L'appel syst�me qui a �chou� �tait DuplicateHandle." -#: utils/init/postinit.c:725 -#, c-format -msgid "database %u does not exist" -msgstr "la base de donn�es � %u � n'existe pas" +#: port/win32_shmem.c:225 +msgid "Failed system call was MapViewOfFileEx." +msgstr "L'appel syst�me qui a �chou� �tait MapViewOfFileEx." -#: utils/init/postinit.c:777 -msgid "It seems to have just been dropped or renamed." -msgstr "Cet objet semble avoir �t� tout juste supprim� ou renomm�." +#: port/win32/security.c:43 +#, c-format +msgid "could not open process token: error code %d\n" +msgstr "n'a pas pu ouvrir le jeton du processus : code d'erreur %d\n" -#: utils/init/postinit.c:795 +#: port/win32/security.c:63 #, c-format -msgid "The database subdirectory \"%s\" is missing." -msgstr "Le sous-r�pertoire de la base de donn�es � %s � est manquant." +msgid "could not get SID for Administrators group: error code %d\n" +msgstr "" +"n'a pas pu obtenir le SID du groupe d'administrateurs : code d'erreur %d\n" -#: utils/init/postinit.c:800 +#: port/win32/security.c:72 #, c-format -msgid "could not access directory \"%s\": %m" -msgstr "n'a pas pu acc�der au r�pertoire � %s � : %m" +msgid "could not get SID for PowerUsers group: error code %d\n" +msgstr "" +"n'a pas pu obtenir le SID du groupe des utilisateurs avec pouvoir :\n" +"code d'erreur %d\n" -#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:136 -#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:163 +#: port/win32/signal.c:189 #, 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" +msgid "could not create signal listener pipe for PID %d: error code %d" +msgstr "" +"n'a pas pu cr�er le tube d'�coute de signal pour l'identifiant de processus " +"%d :\n" +"code d'erreur %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 +#: port/win32/signal.c:269 port/win32/signal.c:301 #, c-format -msgid "unexpected encoding ID %d for WIN character sets" -msgstr "identifiant d'encodage %d inattendu pour les jeux de caract�res WIN" +msgid "could not create signal listener pipe: error code %d; retrying\n" +msgstr "" +"n'a pas pu cr�er le tube d'�coute de signal : code d'erreur %d ; nouvelle " +"tentative\n" -#: utils/mb/conv.c:509 +#: port/win32/signal.c:312 #, c-format -msgid "invalid encoding number: %d" -msgstr "num�ro d'encodage invalide : %d" +msgid "could not create signal dispatch thread: error code %d\n" +msgstr "" +"n'a pas pu cr�er le thread de r�partition des signaux : code d'erreur %d\n" -#: utils/mb/encnames.c:485 -msgid "encoding name too long" -msgstr "nom d'encodage trop long" +#: port/win32/crashdump.c:108 +msgid "could not load dbghelp.dll, cannot write crash dump\n" +msgstr "n'a pas pu charger dbghelp.dll, ne peut pas �crire le � crashdump �\n" -#: utils/mb/mbutils.c:311 -#, c-format -msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist" +#: port/win32/crashdump.c:116 +msgid "" +"could not load required functions in dbghelp.dll, cannot write crash dump\n" msgstr "" -"la fonction de conversion par d�faut pour l'encodage de � %s � en � %s �\n" -"n'existe pas" +"n'a pas pu charger les fonctions requises dans dbghelp.dll, ne peut pas " +"�crire le � crashdump �\n" -#: utils/mb/mbutils.c:335 -#: utils/mb/mbutils.c:607 +#: port/win32/crashdump.c:147 #, 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." +msgid "could not open crash dump file \"%s\" for writing: error code %u\n" +msgstr "" +"n'a pas pu ouvrir le fichier � crashdump � � %s � en �criture : code " +"d'erreur %u\n" -#: utils/mb/mbutils.c:422 +#: port/win32/crashdump.c:154 #, c-format -msgid "invalid source encoding name \"%s\"" -msgstr "nom de l'encodage source � %s � invalide" +msgid "wrote crash dump to file \"%s\"\n" +msgstr "a �crit le � crash dump � dans le fichier � %s �\n" -#: utils/mb/mbutils.c:427 +#: port/win32/crashdump.c:156 #, c-format -msgid "invalid destination encoding name \"%s\"" -msgstr "nom de l'encodage destination � %s � invalide" +msgid "could not write crash dump to file \"%s\": error code %08x\n" +msgstr "" +"n'a pas pu �crire le � crashdump � dans le fichier � %s � : code d'erreur " +"%08x\n" + +#: ../port/open.c:113 +msgid "sharing violation" +msgstr "violation du partage" -#: utils/mb/mbutils.c:539 +#: ../port/open.c:113 +msgid "lock violation" +msgstr "violation du verrou" + +#: ../port/open.c:112 #, c-format -msgid "invalid byte value for encoding \"%s\": 0x%02x" -msgstr "valeur d'octet invalide pour l'encodage � %s � : 0x%02x" +msgid "could not open file \"%s\": %s" +msgstr "n'a pas pu ouvrir le fichier � %s � : %s" -#: utils/mb/mbutils.c:734 -msgid "invalid multibyte character for locale" -msgstr "caract�re multi-octets invalide pour la locale" +#: ../port/open.c:114 +msgid "Continuing to retry for 30 seconds." +msgstr "Continue � tenter pendant 30 secondes." -#: utils/mb/mbutils.c:735 -msgid "The server's LC_CTYPE locale is probably incompatible with the database encoding." +#: ../port/open.c:115 +msgid "" +"You might have antivirus, backup, or similar software interfering with the " +"database system." msgstr "" -"La locale LC_CTYPE du serveur est probablement incompatible avec l'encodage\n" -"de la base de donn�es." +"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." -#: utils/mb/wchar.c:1609 +#: ../port/strerror.c:25 #, c-format -msgid "invalid byte sequence for encoding \"%s\": 0x%s" -msgstr "s�quence d'octets invalide pour l'encodage � %s � : 0x%s" +msgid "unrecognized error %d" +msgstr "erreur %d non reconnue" -#: utils/mb/wchar.c:1638 +#: ../port/win32error.c:189 #, c-format -msgid "character 0x%s of encoding \"%s\" has no equivalent in \"%s\"" -msgstr "le caract�re 0x%s du codage � %s � n'a pas d'�quivalent dans � %s �" +msgid "mapped win32 error code %lu to %d" +msgstr "correspondance du code d'erreur win32 %lu en %d" -#: ../port/chklocale.c:326 -#: ../port/chklocale.c:332 +#: ../port/win32error.c:201 #, 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/chklocale.c:334 -msgid "Please report this to ." -msgstr "Veuillez rapporter ceci � ." +msgid "unrecognized win32 error code: %lu" +msgstr "code d'erreur win32 non reconnu : %lu" -#: ../port/dirmod.c:75 -#: ../port/dirmod.c:88 -#: ../port/dirmod.c:101 +#: ../port/dirmod.c:75 ../port/dirmod.c:88 ../port/dirmod.c:101 #, c-format msgid "out of memory\n" msgstr "m�moire �puis�e\n" @@ -17842,32 +19513,50 @@ msgstr "n'a pas pu configurer la jonction pour msgid "could not set junction for \"%s\": %s\n" msgstr "n'a pas pu configurer la jonction pour � %s � : %s\n" -#: ../port/dirmod.c:325 +#: ../port/dirmod.c:358 +#, c-format +msgid "could not get junction for \"%s\": %s" +msgstr "n'a pas pu obtenir la jonction pour � %s � : %s" + +#: ../port/dirmod.c:361 +#, 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:443 #, 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:362 +#: ../port/dirmod.c:480 #, 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:445 +#: ../port/dirmod.c:563 #, 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:472 -#: ../port/dirmod.c:489 +#: ../port/dirmod.c:590 ../port/dirmod.c:607 #, 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:125 -#: ../port/exec.c:239 -#: ../port/exec.c:282 +#: ../port/chklocale.c:329 ../port/chklocale.c:335 +#, 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/chklocale.c:337 +msgid "Please report this to ." +msgstr "Veuillez rapporter ceci � ." + +#: ../port/exec.c:125 ../port/exec.c:239 ../port/exec.c:282 #, c-format msgid "could not identify current directory: %s" msgstr "n'a pas pu identifier le r�pertoire courant : %s" @@ -17882,84 +19571,278 @@ msgstr "binaire msgid "could not read binary \"%s\"" msgstr "n'a pas pu lire le binaire � %s �" -#: ../port/exec.c:200 -#, c-format -msgid "could not find a \"%s\" to execute" -msgstr "n'a pas pu trouver un � %s � � ex�cuter" +#: ../port/exec.c:200 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "n'a pas pu trouver un � %s � � ex�cuter" + +#: ../port/exec.c:255 ../port/exec.c:291 +#, c-format +msgid "could not change directory to \"%s\"" +msgstr "n'a pas pu acc�der au r�pertoire � %s �" + +#: ../port/exec.c:270 +#, c-format +msgid "could not read symbolic link \"%s\"" +msgstr "n'a pas pu lire le lien symbolique � %s �" + +#: ../port/exec.c:525 +#, c-format +msgid "child process exited with exit code %d" +msgstr "le processus fils a quitt� avec le code de sortie %d" + +#: ../port/exec.c:529 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "le processus fils a �t� termin� par l'exception 0x%X" + +#: ../port/exec.c:538 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "le processus fils a �t� termin� par le signal %s" + +#: ../port/exec.c:541 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "le processus fils a �t� termin� par le signal %d" + +#: ../port/exec.c:545 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "le processus fils a quitt� avec un statut %d non reconnu" + +#~ msgid "cannot override frame clause of window \"%s\"" +#~ msgstr "ne peut pas surcharger la frame clause du window � %s �" + +#~ 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 "arguments of row IN must all be row expressions" +#~ msgstr "" +#~ "les arguments de la ligne IN doivent tous �tre des expressions de ligne" + +#~ msgid "index \"%s\" is not ready" +#~ msgstr "l'index � %s � n'est pas pr�t" + +#~ msgid "tablespace %u is not empty" +#~ msgstr "le tablespace %u n'est pas vide" + +#~ msgid "consistent state delayed because recovery snapshot incomplete" +#~ msgstr "" +#~ "�tat de coh�rence pas encore atteint � cause d'un snapshot de " +#~ "restauration incomplet" + +#~ msgid "%s: %s" +#~ msgstr "%s : %s" + +#~ msgid "SSPI error %x" +#~ msgstr "erreur SSPI : %x" + +#~ msgid "%s (%x)" +#~ msgstr "%s (%x)" + +#~ msgid "resetting unlogged relations: cleanup %d init %d" +#~ msgstr "" +#~ "r�initialisation des relations non trac�es : nettoyage %d initialisation " +#~ "%d" + +#~ msgid "must be superuser to SET SCHEMA of %s" +#~ msgstr "doit �tre super-utilisateur pour ex�cuter SET SCHEMA vers %s" + +#~ msgid "ALTER TYPE USING is only supported on plain tables" +#~ msgstr "ALTER TYPE USING est seulement support�s sur les tables standards" + +#~ msgid "index \"%s\" is not a b-tree" +#~ msgstr "l'index � %s � n'est pas un btree" + +#~ msgid "unable to read symbolic link %s: %m" +#~ msgstr "incapable de lire le lien symbolique %s : %m" + +#~ msgid "unable to open directory pg_tblspc: %m" +#~ msgstr "impossible d'ouvrir le r�pertoire p_tblspc : %m" + +#~ msgid "Write-Ahead Log / Streaming Replication" +#~ msgstr "Write-Ahead Log / R�plication en flux" + +#~ msgid "syntax error in recovery command file: %s" +#~ msgstr "erreur de syntaxe dans le fichier de restauration : %s" + +#~ msgid "Lines should have the format parameter = 'value'." +#~ msgstr "Les lignes devraient avoir le format param�tre = 'valeur'" + +#~ msgid "array must not contain null values" +#~ msgstr "le tableau ne doit pas contenir de valeurs NULL" + +#~ msgid "index %u/%u/%u needs VACUUM FULL or REINDEX to finish crash recovery" +#~ msgstr "" +#~ "l'index %u/%u/%u a besoin d'un VACUUM FULL ou d'un REINDEX pour terminer " +#~ "la\n" +#~ "r�cup�ration suite � un arr�t brutal" + +#~ msgid "Incomplete insertion detected during crash replay." +#~ msgstr "" +#~ "Insertion incompl�te d�tect�e lors de la r�-ex�cution des requ�tes suite " +#~ "�\n" +#~ "l'arr�t brutal." + +#~ msgid "index \"%s\" needs VACUUM or REINDEX to finish crash recovery" +#~ msgstr "" +#~ "l'index � %s � a besoin d'un VACUUM ou d'un REINDEX pour terminer la\n" +#~ "r�cup�ration suite � un arr�t brutal" + +#~ msgid "index \"%s\" needs VACUUM FULL or REINDEX to finish crash recovery" +#~ msgstr "" +#~ "l'index � %s � a besoin d'un VACUUM FULL ou d'un REINDEX pour terminer " +#~ "la\n" +#~ "r�cup�ration suite � un arr�t brutal" + +#~ msgid "EnumValuesCreate() can only set a single OID" +#~ msgstr "EnumValuesCreate() peut seulement initialiser un seul OID" + +#~ msgid "clustering \"%s.%s\"" +#~ msgstr "ex�cution de CLUSTER sur � %s.%s �" + +#~ msgid "" +#~ "cannot cluster on index \"%s\" because access method does not handle null " +#~ "values" +#~ msgstr "" +#~ "ne peut pas cr�er un cluster sur l'index � %s � car la m�thode d'acc�s " +#~ "de\n" +#~ "l'index ne g�re pas les valeurs NULL" + +#~ msgid "" +#~ "You might be able to work around this by marking column \"%s\" NOT NULL, " +#~ "or use ALTER TABLE ... SET WITHOUT CLUSTER to remove the cluster " +#~ "specification from the table." +#~ msgstr "" +#~ "Vous pourriez contourner ceci en marquant la colonne � %s � avec la\n" +#~ "contrainte NOT NULL ou en utilisant ALTER TABLE ... SET WITHOUT CLUSTER " +#~ "pour\n" +#~ "supprimer la sp�cification CLUSTER de la table." + +#~ msgid "" +#~ "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 "" +#~ "cannot cluster on expressional index \"%s\" because its index access " +#~ "method does not handle null values" +#~ msgstr "" +#~ "ne peut pas ex�cuter CLUSTER sur l'index � expression � %s � car sa " +#~ "m�thode\n" +#~ "d'acc�s ne g�re pas les valeurs NULL" + +#~ msgid "\"%s\" is not a table, view, or composite type" +#~ msgstr "� %s � n'est pas une table, une vue ou un type composite" + +#~ msgid "must be member of role \"%s\" to comment upon it" +#~ msgstr "doit �tre un membre du r�le � %s � pour le commenter" + +#~ msgid "must be superuser to comment on procedural language" +#~ msgstr "" +#~ "doit �tre super-utilisateur pour ajouter un commentaire sur un langage " +#~ "de\n" +#~ "proc�dures" + +#~ msgid "must be superuser to comment on text search parser" +#~ msgstr "" +#~ "doit �tre super-utilisateur pour ajouter un commentaire sur l'analyseur " +#~ "de\n" +#~ "recherche plein texte" + +#~ msgid "must be superuser to comment on text search template" +#~ msgstr "" +#~ "doit �tre super-utilisateur pour ajouter un commentaire sur un mod�le de\n" +#~ "recherche plein texte" + +#~ msgid "function \"%s\" is already in schema \"%s\"" +#~ msgstr "la fonction � %s � existe d�j� dans le sch�ma � %s �" + +#~ msgid "cannot reference temporary table from permanent table constraint" +#~ msgstr "" +#~ "ne peut pas r�f�rencer une table temporaire � partir d'une contrainte de\n" +#~ "table permanente" + +#~ msgid "cannot reference permanent table from temporary table constraint" +#~ msgstr "" +#~ "ne peut pas r�f�rencer une table permanente � partir de la contrainte de\n" +#~ "table temporaire" + +#~ msgid "composite type must have at least one attribute" +#~ msgstr "le type composite doit avoir au moins un attribut" + +#~ msgid "database \"%s\" not found" +#~ msgstr "base de donn�es � %s � non trouv�e" -#: ../port/exec.c:255 -#: ../port/exec.c:291 -#, c-format -msgid "could not change directory to \"%s\"" -msgstr "n'a pas pu acc�der au r�pertoire � %s �" +#~ msgid "invalid list syntax for parameter \"datestyle\"" +#~ msgstr "syntaxe de liste invalide pour le param�tre � datestyle �" -#: ../port/exec.c:270 -#, c-format -msgid "could not read symbolic link \"%s\"" -msgstr "n'a pas pu lire le lien symbolique � %s �" +#~ msgid "unrecognized \"datestyle\" key word: \"%s\"" +#~ msgstr "mot cl� � datestyle � non reconnu : � %s �" -#: ../port/exec.c:516 -#, c-format -msgid "child process exited with exit code %d" -msgstr "le processus fils a quitt� avec le code de sortie %d" +#~ 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" -#: ../port/exec.c:520 -#, c-format -msgid "child process was terminated by exception 0x%X" -msgstr "le processus fils a �t� termin� par l'exception 0x%X" +#~ msgid "invalid interval value for time zone: day not allowed" +#~ msgstr "" +#~ "valeur d'intervalle invalide pour le fuseau horaire : jour non autoris�" -#: ../port/exec.c:529 -#, c-format -msgid "child process was terminated by signal %s" -msgstr "le processus fils a �t� termin� par le signal %s" +#~ msgid "unrecognized time zone name: \"%s\"" +#~ msgstr "nom de fuseau horaire non reconnu : � %s �" -#: ../port/exec.c:532 -#, c-format -msgid "child process was terminated by signal %d" -msgstr "le processus fils a �t� termin� par le signal %d" +#~ msgid "argument to pg_get_expr() must come from system catalogs" +#~ msgstr "l'argument de pg_get_expr() doit provenir des catalogues syst�mes" -#: ../port/exec.c:536 -#, c-format -msgid "child process exited with unrecognized status %d" -msgstr "le processus fils a quitt� avec un statut %d non reconnu" +#~ msgid "cannot change view \"%s\"" +#~ msgstr "ne peut pas modifier la vue � %s �" -#: ../port/open.c:113 -msgid "sharing violation" -msgstr "violation du partage" +#~ msgid "could not enable credential reception: %m" +#~ msgstr "n'a pas pu activer la r�ception de lettres de cr�ance : %m" -#: ../port/open.c:113 -msgid "lock violation" -msgstr "violation du verrou" +#~ 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" -#: ../port/open.c:112 -#, c-format -msgid "could not open file \"%s\": %s" -msgstr "n'a pas pu ouvrir le fichier � %s � : %s" +#~ msgid "" +#~ "Ident authentication is not supported on local connections on this " +#~ "platform" +#~ msgstr "" +#~ "l'authentification Ident n'est pas support�e sur les connexions locales " +#~ "sur cette plateforme" -#: ../port/open.c:114 -msgid "Continuing to retry for 30 seconds." -msgstr "Continue � tenter pendant 30 secondes." +#~ msgid "hostssl not supported on this platform" +#~ msgstr "hostssl non support� sur cette plateforme" -#: ../port/open.c:115 -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." +#~ 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" -#: ../port/strerror.c:25 -#, c-format -msgid "unrecognized error %d" -msgstr "erreur %d non reconnue" +#~ msgid "could not create log file \"%s\": %m" +#~ msgstr "n'a pas pu cr�er le journal applicatif � %s � : %m" -#: ../port/win32error.c:184 -#, c-format -msgid "mapped win32 error code %lu to %d" -msgstr "correspondance du code d'erreur win32 %lu en %d" +#~ msgid "could not open new log file \"%s\": %m" +#~ msgstr "n'a pas pu ouvrir le nouveau journal applicatif � %s � : %m" -#: ../port/win32error.c:195 -#, c-format -msgid "unrecognized win32 error code: %lu" -msgstr "code d'erreur win32 non reconnu : %lu" +#~ msgid "Sets immediate fsync at commit." +#~ msgstr "Configure un fsync imm�diat lors du commit." + +#~ msgid "invalid list syntax for parameter \"log_destination\"" +#~ msgstr "syntaxe de liste invalide pour le param�tre � log_destination �" + +#~ msgid "unrecognized \"log_destination\" key word: \"%s\"" +#~ msgstr "mot cl� � log_destination � non reconnu : � %s �" + +#~ msgid "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 "" #~ "cannot drop \"%s\" because it is being used by active queries in this " @@ -17968,37 +19851,49 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "ne peut pas supprimer � %s � car cet objet est en cours d'utilisation " #~ "par\n" #~ "des requ�tes actives dans cette session" + #~ msgid "parameter \"recovery_target_inclusive\" requires a Boolean value" #~ msgstr "" #~ "le param�tre � recovery_target_inclusive � requiert une valeur bool�enne" + #~ msgid "parameter \"standby_mode\" requires a Boolean value" #~ msgstr "le param�tre � standby_mode � requiert une valeur bool�enne" + #~ msgid "access to %s" #~ msgstr "acc�s � %s" + #~ msgid "Sets the message levels that are logged during recovery." #~ msgstr "" #~ "Initialise les niveaux de messages qui sont trac�s lors de la " #~ "restauration." + #~ msgid "Not safe to send CSV data\n" #~ msgstr "Envoi non s�r des donn�es CSV\n" + #~ msgid "recovery restart point at %X/%X with latest known log time %s" #~ msgstr "" #~ "point de relancement de la restauration sur %X/%X avec %s comme derni�re\n" #~ "date connue du journal" + #~ msgid "restartpoint_command = '%s'" #~ msgstr "restartpoint_command = '%s'" + #~ msgid "usermap \"%s\"" #~ msgstr "correspondance utilisateur � %s �" + #~ msgid "WAL archiving is not active" #~ msgstr "l'archivage des journaux de transactions n'est pas actif" + #~ msgid "archive_mode must be enabled at server start." #~ msgstr "archive_mode doit �tre activ� au lancement du serveur." + #~ msgid "" #~ "archive_command must be defined before online backups can be made safely." #~ msgstr "" #~ "archive_command doit �tre d�fini avant que les sauvegardes � chaud " #~ "puissent\n" #~ "s'effectuer correctement." + #~ msgid "" #~ "During recovery, allows connections and queries. During normal running, " #~ "causes additional info to be written to WAL to enable hot standby mode on " @@ -18011,23 +19906,29 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "les journaux de transactions pour activer le mode Hot Standby sur les " #~ "n�uds\n" #~ "en attente." + #~ msgid "unlogged operation performed, data may be missing" #~ msgstr "op�ration r�alis�e non trac�e, les donn�es pourraient manquer" + #~ msgid "not enough shared memory for walsender" #~ msgstr "" #~ "pas assez de m�moire partag�e pour le processus d'envoi des journaux de " #~ "transactions" + #~ msgid "not enough shared memory for walreceiver" #~ msgstr "" #~ "pas assez de m�moire partag�e pour le processus de r�ception des journaux " #~ "de\n" #~ "transactions" + #~ msgid "connection limit exceeded for non-superusers" #~ msgstr "limite de connexions d�pass�e pour les utilisateurs standards" + #~ msgid "not enough shared memory for background writer" #~ msgstr "" #~ "pas assez de m�moire partag�e pour le processus d'�criture en t�che de " #~ "fond" + #~ msgid "could not allocate shared memory segment \"%s\"" #~ msgstr "n'a pas pu allouer un segment de m�moire partag�e � %s �" @@ -18038,6 +19939,7 @@ msgstr "code d'erreur win32 non reconnu : %lu" #, fuzzy #~ msgid "couldn't put socket to blocking mode: %m" #~ msgstr "n'a pas pu activer le mode bloquant pour la socket : %s\n" + #~ msgid "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" @@ -18053,14 +19955,19 @@ msgstr "code d'erreur win32 non reconnu : %lu" #, fuzzy #~ msgid "invalid replication message type %d" #~ msgstr "type %d du message de l'interface invalide" + #~ msgid "PID %d is among the slowest backends." #~ msgstr "Le PID %d est parmi les processus serveur les plus lents." + #~ msgid "transaction is read-only" #~ msgstr "la transaction est en lecture seule" + #~ msgid "binary value is out of range for type bigint" #~ msgstr "la valeur binaire est en dehors des limites du type bigint" + #~ msgid "redo starts at %X/%X, consistency will be reached at %X/%X" #~ msgstr "la restauration comme � %X/%X, la coh�rence sera atteinte � %X/%X" + #~ msgid "" #~ "This error can also happen if the byte sequence does not match the " #~ "encoding expected by the server, which is controlled by \"client_encoding" @@ -18070,31 +19977,40 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "pas\n" #~ "au jeu de caract�res attendu par le serveur, le jeu �tant contr�l� par\n" #~ "� client_encoding �." + #~ msgid "Sets the language used in DO statement if LANGUAGE is not specified." #~ msgstr "" #~ "Configure le langage utilis� dans une instruction DO si la clause " #~ "LANGUAGE n'est\n" #~ "pas sp�cifi�e." + #~ msgid "shared index \"%s\" can only be reindexed in stand-alone mode" #~ msgstr "" #~ "un index partag� � %s � peut seulement �tre r�index� en mode autonome" + #~ msgid "\"%s\" is a system catalog" #~ msgstr "� %s � est un catalogue syst�me" + #~ msgid "shared table \"%s\" can only be reindexed in stand-alone mode" #~ msgstr "" #~ "la table partag�e � %s � peut seulement �tre r�index� en mode autonome" + #~ msgid "cannot truncate system relation \"%s\"" #~ msgstr "ne peut pas tronquer la relation syst�me � %s �" + #~ msgid "number of distinct values %g is too low" #~ msgstr "le nombre de valeurs distinctes %g est trop basse" + #~ msgid "directory \"%s\" is not empty" #~ msgstr "le r�pertoire � %s � n'est pas vide" + #~ msgid "" #~ "relation \"%s\" TID %u/%u: XMIN_COMMITTED not set for transaction %u --- " #~ "cannot shrink relation" #~ msgstr "" #~ "relation � %s �, TID %u/%u : XMIN_COMMITTED non configur� pour la\n" #~ "transaction %u --- n'a pas pu diminuer la taille de la relation" + #~ msgid "" #~ "relation \"%s\" TID %u/%u: dead HOT-updated tuple --- cannot shrink " #~ "relation" @@ -18102,6 +20018,7 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "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: InsertTransactionInProgress %u --- cannot " #~ "shrink relation" @@ -18109,6 +20026,7 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "relation � %s �, TID %u/%u : InsertTransactionInProgress %u --- n'a pas " #~ "pu\n" #~ "diminuer la taille de la relation" + #~ msgid "" #~ "relation \"%s\" TID %u/%u: DeleteTransactionInProgress %u --- cannot " #~ "shrink relation" @@ -18116,11 +20034,7 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "relation � %s �, TID %u/%u : DeleteTransactionInProgress %u --- n'a pas " #~ "pu\n" #~ "diminuer la taille de la relation" -#~ 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" + #~ msgid "" #~ "%.0f dead row versions cannot be removed yet.\n" #~ "Nonremovable row versions range from %lu to %lu bytes long.\n" @@ -18142,14 +20056,17 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "d�placement\n" #~ "disponibles.\n" #~ "%s." + #~ msgid "\"%s\": moved %u row versions, truncated %u to %u pages" #~ msgstr "� %s � : %u versions de ligne d�plac�es, %u pages tronqu�es sur %u" + #~ msgid "" #~ "%u index pages have been deleted, %u are currently reusable.\n" #~ "%s." #~ msgstr "" #~ "%u pages d'index ont �t� supprim�es, %u sont actuellement r�utilisables.\n" #~ "%s." + #~ msgid "" #~ "index \"%s\" contains %.0f row versions, but table contains %.0f row " #~ "versions" @@ -18157,43 +20074,59 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "l'index � %s � contient %.0f versions de ligne, mais la table contient " #~ "%.0f\n" #~ "versions de ligne" + #~ msgid "Rebuild the index with REINDEX." #~ msgstr "Reconstruisez l'index avec REINDEX." + #~ msgid "frame start at CURRENT ROW is not implemented" #~ msgstr "d�but du frame � CURRENT ROW n'est pas impl�ment�" + #~ msgid "database system is in consistent recovery mode" #~ msgstr "" #~ "le syst�me de bases de donn�es est dans un mode de restauration coh�rent" + #~ msgid "DISTINCT is supported only for single-argument aggregates" #~ msgstr "" #~ "DISTINCT est seulement support� pour les agr�gats � un seul argument" + #~ msgid "index row size %lu exceeds btree maximum, %lu" #~ msgstr "la taille de la ligne index %lu d�passe le maximum de btree, %lu" + #~ msgid "Table contains duplicated values." #~ msgstr "La table contient des valeurs dupliqu�es." + #~ msgid "Automatically adds missing table references to FROM clauses." #~ msgstr "" #~ "Ajoute automatiquement les r�f�rences � la table manquant dans les " #~ "clauses\n" #~ "FROM." + #~ msgid "Sets the regular expression \"flavor\"." #~ msgstr "Initialise l'expression rationnelle � flavor �." + #~ msgid "attempted change of parameter \"%s\" ignored" #~ msgstr "tentative de modification du param�tre � %s � ignor�" + #~ msgid "This parameter cannot be changed after server start." #~ msgstr "Ce param�tre ne peut pas �tre modifi� apr�s le lancement du serveur" + #~ msgid "invalid database name \"%s\"" #~ msgstr "nom de base de donn�es � %s � invalide" + #~ msgid "invalid role name \"%s\"" #~ msgstr "nom de r�le � %s � invalide" + #~ msgid "invalid role password \"%s\"" #~ msgstr "mot de passe � %s � de l'utilisateur invalide" + #~ msgid "cannot specify CSV in BINARY mode" #~ msgstr "ne peut pas sp�cifier CSV en mode binaire (BINARY)" + #~ msgid "cannot set session authorization within security-definer function" #~ msgstr "" #~ "ne peut pas ex�cuter SESSION AUTHORIZATION sur la fonction SECURITY " #~ "DEFINER" + #~ msgid "" #~ "SELECT FOR UPDATE/SHARE is not supported within a query with multiple " #~ "result relations" @@ -18201,68 +20134,94 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "SELECT FOR UPDATE/SHARE n'est pas support� dans une requ�te avec " #~ "plusieurs\n" #~ "relations" + #~ msgid "could not remove relation %s: %m" #~ msgstr "n'a pas pu supprimer la relation %s : %m" + #~ msgid "could not remove segment %u of relation %s: %m" #~ msgstr "n'a pas pu supprimer le segment %u de la relation %s : %m" + #~ msgid "could not seek to block %u of relation %s: %m" #~ msgstr "n'a pas pu se positionner sur le bloc %u de la relation %s : %m" + #~ msgid "could not extend relation %s: %m" #~ msgstr "n'a pas pu �tendre la relation %s : %m" + #~ msgid "could not open relation %s: %m" #~ msgstr "n'a pas pu ouvrir la relation %s : %m" + #~ msgid "could not read block %u of relation %s: %m" #~ msgstr "n'a pas pu lire le bloc %u de la relation %s : %m" + #~ msgid "could not write block %u of relation %s: %m" #~ msgstr "n'a pas pu �crire le bloc %u de la relation %s : %m" + #~ msgid "could not open segment %u of relation %s: %m" #~ msgstr "n'a pas pu ouvrir le segment %u de la relation %s : %m" + #~ msgid "could not fsync segment %u of relation %s: %m" #~ msgstr "" #~ "n'a pas pu synchroniser sur disque (fsync) le segment %u de la relation\n" #~ "%s : %m" + #~ msgid "could not fsync segment %u of relation %s but retrying: %m" #~ msgstr "" #~ "n'a pas pu synchroniser sur disque (fsync) le segment %u de la relation\n" #~ "%s, nouvelle tentative : %m" + #~ msgid "could not seek to end of segment %u of relation %s: %m" #~ msgstr "" #~ "n'a pas pu se d�placer � la fin du segment %u de la relation %s : %m" + #~ msgid "unsupported PAM conversation %d/%s" #~ msgstr "conversation PAM %d/%s non support�e" + #~ msgid "SELECT FOR UPDATE/SHARE is not allowed in subqueries" #~ msgstr "SELECT FOR UPDATE/SHARE n'est pas autoris� dans les sous-requ�tes" + #~ msgid "adding missing FROM-clause entry for table \"%s\"" #~ msgstr "ajout d'une entr�e manquante dans FROM (table � %s �)" + #~ msgid "OLD used in query that is not in a rule" #~ msgstr "OLD utilis� dans une requ�te qui n'est pas une r�gle" + #~ msgid "NEW used in query that is not in a rule" #~ msgstr "NEW utilis� dans une requ�te qui ne fait pas partie d'une r�gle" + #~ msgid "hurrying in-progress restartpoint" #~ msgstr "acc�l�ration du restartpoint en cours" + #~ msgid "multiple DELETE events specified" #~ msgstr "multiples �v�nements DELETE sp�cifi�s" + #~ msgid "multiple UPDATE events specified" #~ msgstr "multiples �v�nements UPDATE sp�cifi�s" + #~ msgid "multiple TRUNCATE events specified" #~ msgstr "multiples �v�nements TRUNCATE sp�cifi�s" + #~ msgid "could not create XPath object" #~ msgstr "n'a pas pu cr�er l'objet XPath" #, fuzzy #~ msgid "wrong number of array_subscripts" #~ msgstr "mauvais nombre d'indices du tableau" + #~ msgid "fillfactor=%d is out of range (should be between %d and 100)" #~ msgstr "" #~ "le facteur de remplissage (%d) est en dehors des limites (il devrait �tre " #~ "entre %d et 100)" + #~ msgid "GIN index does not support search with void query" #~ msgstr "" #~ "les index GIN ne supportent pas la recherche avec des requ�tes vides" + #~ msgid "invalid LC_COLLATE setting" #~ msgstr "param�tre LC_COLLATE invalide" + #~ msgid "invalid LC_CTYPE setting" #~ msgstr "param�tre LC_CTYPE invalide" + #~ msgid "" #~ "The database cluster was initialized with LOCALE_NAME_BUFLEN %d, but the " #~ "server was compiled with LOCALE_NAME_BUFLEN %d." @@ -18270,40 +20229,47 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "Le cluster de bases de donn�es a �t� initialis� avec un " #~ "LOCALE_NAME_BUFLEN\n" #~ "� %d alors que le serveur a �t� compil� avec un LOCALE_NAME_BUFLEN � %d." + #~ msgid "It looks like you need to initdb or install locale support." #~ msgstr "" #~ "Il semble que vous avez besoin d'ex�cuter initdb ou d'installer le " #~ "support\n" #~ "des locales." + #~ msgid "log_restartpoints = %s" #~ msgstr "log_restartpoints = %s" -#~ msgid "WAL ends before end time of backup dump" -#~ msgstr "" -#~ "le journal de transactions se termine avant l'heure de fin de la " -#~ "sauvegarde" + #~ msgid "syntax error: cannot back up" #~ msgstr "erreur de syntaxe : n'a pas pu revenir" + #~ msgid "syntax error; also virtual memory exhausted" #~ msgstr "erreur de syntaxe ; de plus, m�moire virtuelle satur�e" + #~ msgid "parser stack overflow" #~ msgstr "saturation de la pile de l'analyseur" + #~ msgid "failed to drop all objects depending on %s" #~ msgstr "�chec lors de la suppression de tous les objets d�pendant de %s" + #~ msgid "there are objects dependent on %s" #~ msgstr "des objets d�pendent de %s" + #~ msgid "multiple constraints named \"%s\" were dropped" #~ msgstr "les contraintes multiples nomm�es � %s � ont �t� supprim�es" + #~ msgid "constraint definition for check constraint \"%s\" does not match" #~ msgstr "" #~ "la d�finition de la contrainte � %s � pour la contrainte de v�rification " #~ "ne\n" #~ "correspond pas" + #~ msgid "" #~ "relation \"%s.%s\" contains more than \"max_fsm_pages\" pages with useful " #~ "free space" #~ msgstr "" #~ "la relation � %s.%s � contient plus de � max_fsm_pages � pages d'espace\n" #~ "libre utile" + #~ msgid "" #~ "Consider using VACUUM FULL on this relation or increasing the " #~ "configuration parameter \"max_fsm_pages\"." @@ -18311,11 +20277,14 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "Pensez � compacter cette relation en utilisant VACUUM FULL ou � augmenter " #~ "le\n" #~ "param�tre de configuration � max_fsm_pages �." + #~ msgid "Consider increasing the configuration parameter \"max_fsm_pages\"." #~ msgstr "" #~ "Consid�rez l'augmentation du param�tre de configuration � max_fsm_pages �." + #~ msgid "cannot change number of columns in view" #~ msgstr "ne peut pas modifier le nombre de colonnes dans la vue" + #~ msgid "" #~ "unexpected Kerberos user name received from client (received \"%s\", " #~ "expected \"%s\")" @@ -18323,14 +20292,19 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "nom d'utilisateur Kerberos inattendu re�u � partir du client (re�u � %s " #~ "�,\n" #~ "attendu � %s �)" + #~ msgid "Kerberos 5 not implemented on this server" #~ msgstr "Kerberos 5 non impl�ment� sur ce serveur" + #~ msgid "GSSAPI not implemented on this server" #~ msgstr "GSSAPI non impl�ment� sur ce serveur" + #~ msgid "could not get security token from context" #~ msgstr "n'a pas pu r�cup�rer le jeton de s�curit� � partir du contexte" + #~ msgid "unsafe permissions on private key file \"%s\"" #~ msgstr "droits non s�rs sur le fichier de la cl� priv�e � %s �" + #~ msgid "" #~ "File must be owned by the database user and must have no permissions for " #~ "\"group\" or \"other\"." @@ -18338,6 +20312,7 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "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 "" #~ "cannot use authentication method \"crypt\" because password is MD5-" #~ "encrypted" @@ -18345,38 +20320,51 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "n'a pas pu utiliser la m�thode d'authentification � crypt � car le mot " #~ "de\n" #~ "passe est chiffr� avec MD5" + #~ 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 "missing field in file \"%s\" at end of line %d" #~ msgstr "champ manquant dans le fichier � %s � � la fin de la ligne %d" + #~ msgid "cannot use Ident authentication without usermap field" #~ msgstr "n'a pas pu utiliser l'authentication Ident sans le champ usermap" + #~ msgid "Ident protocol identifies remote user as \"%s\"" #~ msgstr "le protocole Ident identifie l'utilisateur distant comme � %s �" + #~ msgid "SELECT FOR UPDATE/SHARE is not supported for inheritance queries" #~ msgstr "" #~ "SELECT FOR UPDATE/SHARE n'est pas support� pour les requ�tes d'h�ritage" + #~ msgid "missing FROM-clause entry in subquery for table \"%s\"" #~ msgstr "" #~ "entr�e manquante de la clause FROM dans la sous-requ�te de la table � %s �" + #~ msgid "adding missing FROM-clause entry in subquery for table \"%s\"" #~ msgstr "" #~ "entr�e manquante de la clause FROM dans la sous-requ�te pour la table � " #~ "%s �" + #~ msgid "" #~ "%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 "could not set statistics collector timer: %m" #~ msgstr "n'a pas pu configurer le timer du r�cup�rateur de statistiques : %m" + #~ msgid "insufficient shared memory for free space map" #~ msgstr "m�moire partag�e insuffisante pour la structure FSM" + #~ msgid "max_fsm_pages must exceed max_fsm_relations * %d" #~ msgstr "max_fsm_pages doit exc�der max_fsm_relations * %d" + #~ msgid "free space map contains %d pages in %d relations" #~ msgstr "la structure FSM contient %d pages dans %d relations" + #~ msgid "" #~ "A total of %.0f page slots are in use (including overhead).\n" #~ "%.0f page slots are required to track all free space.\n" @@ -18387,8 +20375,10 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "%.0f emplacements de pages sont requis pour tracer tout l'espace libre.\n" #~ "Les limites actuelles sont : %d emplacements de pages, %d relations,\n" #~ "utilisant %.0f Ko." + #~ msgid "max_fsm_relations(%d) equals the number of relations checked" #~ msgstr "max_fsm_relations(%d) �quivaut au nombre de relations trac�es" + #~ msgid "" #~ "You have at least %d relations. Consider increasing the configuration " #~ "parameter \"max_fsm_relations\"." @@ -18396,10 +20386,12 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "Vous avez au moins %d relations.Consid�rez l'augmentation du param�tre " #~ "de\n" #~ "configuration � max_fsm_relations �." + #~ msgid "number of page slots needed (%.0f) exceeds max_fsm_pages (%d)" #~ msgstr "" #~ "le nombre d'emplacements de pages n�cessaires (%.0f) d�passe " #~ "max_fsm_pages (%d)" + #~ msgid "" #~ "Consider increasing the configuration parameter \"max_fsm_pages\" to a " #~ "value over %.0f." @@ -18407,19 +20399,25 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "Consid�rez l'augmentation du param�tre de configuration � max_fsm_pages " #~ "�\n" #~ "� une valeur sup�rieure � %.0f." + #~ msgid "string is too long for tsvector" #~ msgstr "la cha�ne est trop longue pour un tsvector" + #~ msgid "Prints the parse tree to the server log." #~ msgstr "Affiche l'arbre d'analyse 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." + #~ msgid "Prints the execution plan to server log." #~ msgstr "" #~ "Affiche le plan d'ex�cution dans les journaux applicatifs du serveur." + #~ msgid "Uses the indented output format for EXPLAIN VERBOSE." #~ msgstr "Utilise le format de sortie indent� pour EXPLAIN VERBOSE." + #~ msgid "" #~ "Sets the maximum number of tables and indexes for which free space is " #~ "tracked." @@ -18427,14 +20425,17 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "Initialise le nombre maximum de tables et index pour lesquels l'espace " #~ "libre\n" #~ "est trac�." + #~ msgid "" #~ "Sets the maximum number of disk pages for which free space is tracked." #~ msgstr "" #~ "Initialise le nombre maximum de pages disque pour lesquelles l'espace " #~ "libre\n" #~ "est trac�." + #~ msgid "Valid values are ON, OFF, and SAFE_ENCODING." #~ msgstr "Les valeurs valides sont ON, OFF et SAFE_ENCODING." + #~ msgid "" #~ "Valid values are DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, " #~ "WARNING, ERROR, LOG, FATAL, and PANIC. Each level includes all the levels " @@ -18444,6 +20445,7 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "NOTICE, WARNING, ERROR, LOG, FATAL et PANIC. Chaque niveau incut tous " #~ "les\n" #~ "niveaux qui le suit." + #~ msgid "" #~ "All SQL statements that cause an error of the specified level or a higher " #~ "level are logged." @@ -18451,6 +20453,7 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "Toutes les instructions SQL causant une erreur du niveau sp�cifi� ou " #~ "d'un\n" #~ "niveau sup�rieur sont trac�es." + #~ msgid "" #~ "Each SQL transaction has an isolation level, which can be either \"read " #~ "uncommitted\", \"read committed\", \"repeatable read\", or \"serializable" @@ -18459,127 +20462,181 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "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 "Each session can be either \"origin\", \"replica\", or \"local\"." #~ msgstr "" #~ "Chaque session peut valoir soit � origin � soit � replica � soit � local " #~ "�." + #~ msgid "Sets realm to match Kerberos and GSSAPI users against." #~ msgstr "" #~ "Indique le royaume pour l'authentification des utilisateurs via Kerberos " #~ "et\n" #~ "GSSAPI." + #~ msgid "Sets the hostname of the Kerberos server." #~ msgstr "Initalise le nom d'h�te du serveur Kerberos." + #~ msgid "This can be set to advanced, extended, or basic." #~ msgstr "" #~ "Ceci peut �tre initialis� avec advanced (avanc�), extended (�tendu) ou\n" #~ "basic (basique)." + #~ 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." + #~ msgid "Valid values are BASE64 and HEX." #~ msgstr "Les valeurs valides sont BASE64 et HEX." + #~ msgid "Valid values are DOCUMENT and CONTENT." #~ msgstr "Les valeurs valides sont DOCUMENT et CONTENT." + #~ msgid "invalid argument for power function" #~ msgstr "argument invalide pour la fonction puissance (power)" + #~ msgid "not unique \"S\"" #~ msgstr "� S � non unique" + #~ msgid "invalid AM/PM string" #~ msgstr "cha�ne AM/PM invalide" + #~ msgid "\"TZ\"/\"tz\" not supported" #~ msgstr "� TZ �/� tz � non support�" + #~ msgid "January" #~ msgstr "Janvier" + #~ msgid "February" #~ msgstr "F�vrier" + #~ msgid "March" #~ msgstr "Mars" + #~ msgid "April" #~ msgstr "Avril" + #~ msgid "May" #~ msgstr "Mai" + #~ msgid "June" #~ msgstr "Juin" + #~ msgid "July" #~ msgstr "Juillet" + #~ msgid "August" #~ msgstr "Ao�t" + #~ msgid "September" #~ msgstr "Septembre" + #~ msgid "October" #~ msgstr "Octobre" + #~ msgid "November" #~ msgstr "Novembre" + #~ msgid "December" #~ msgstr "D�cembre" + #~ msgid "Jan" #~ msgstr "Jan" + #~ msgid "Feb" #~ msgstr "F�v" + #~ msgid "Mar" #~ msgstr "Mar" + #~ msgid "Apr" #~ msgstr "Avr" + #~ msgid "S:May" #~ msgstr "S:Mai" + #~ msgid "Jun" #~ msgstr "Juin" + #~ msgid "Jul" #~ msgstr "Juil" + #~ msgid "Aug" #~ msgstr "Ao�" + #~ msgid "Sep" #~ msgstr "Sep" + #~ msgid "Oct" #~ msgstr "Oct" + #~ msgid "Nov" #~ msgstr "Nov" + #~ msgid "Dec" #~ msgstr "D�c" + #~ msgid "Sunday" #~ msgstr "Dimanche" + #~ msgid "Monday" #~ msgstr "Lundi" + #~ msgid "Tuesday" #~ msgstr "Mardi" + #~ msgid "Wednesday" #~ msgstr "Mercredi" + #~ msgid "Thursday" #~ msgstr "Jeudi" + #~ msgid "Friday" #~ msgstr "Vendredi" + #~ msgid "Saturday" #~ msgstr "Samedi" + #~ msgid "Sun" #~ msgstr "Dim" + #~ msgid "Mon" #~ msgstr "Lun" + #~ msgid "Tue" #~ msgstr "Mar" + #~ msgid "Wed" #~ msgstr "Mer" + #~ msgid "Thu" #~ msgstr "Jeu" + #~ msgid "Fri" #~ msgstr "Ven" + #~ msgid "Sat" #~ msgstr "Sam" + #~ msgid "AM/PM hour must be between 1 and 12" #~ msgstr "l'heure AM/PM doit �tre compris entre 1 et 12" + #~ msgid "UTF-16 to UTF-8 translation failed: %lu" #~ msgstr "�chec de la conversion d'UTF16 vers UTF8 : %lu" + #~ msgid "cannot calculate week number without year information" #~ msgstr "" #~ "ne peut pas calculer le num�ro de la semaine sans informations sur l'ann�e" + #~ msgid "query requires full scan, which is not supported by GIN indexes" #~ msgstr "" #~ "la requ�te n�cessite un parcours complet, ce qui n'est pas support� par " #~ "les\n" #~ "index GIN" + #~ msgid "" #~ "@@ operator does not support lexeme weight restrictions in GIN index " #~ "searches" @@ -18587,17 +20644,22 @@ msgstr "code d'erreur win32 non reconnu : %lu" #~ "l'op�rateur @@ ne supporte pas les restrictions de poids de lexeme dans " #~ "les\n" #~ "recherches par index GIN" + #~ msgid "Use the @@@ operator instead." #~ msgstr "Utilisez � la place l'op�rateur @@@." + #~ msgid "unexpected delimiter at line %d of thesaurus file \"%s\"" #~ msgstr "d�limiteur inattendu sur la ligne %d du thesaurus � %s �" + #~ msgid "unexpected end of line or lexeme at line %d of thesaurus file \"%s\"" #~ msgstr "" #~ "fin de ligne ou de lexeme inattendu sur la ligne %d du thesaurus � %s �" + #~ msgid "unexpected end of line at line %d of thesaurus file \"%s\"" #~ msgstr "fin de ligne inattendue � la ligne %d du th�saurus � %s �" + #~ msgid "syntax error at line %d of affix file \"%s\"" #~ msgstr "erreur de syntaxe � la ligne %d du fichier affixe � %s �" + #~ msgid "could not remove database directory \"%s\"" #~ msgstr "n'a pas pu supprimer le r�pertoire de bases de donn�es � %s �" - diff --git a/src/backend/po/it.po b/src/backend/po/it.po new file mode 100644 index 0000000000..0b290e3671 --- /dev/null +++ b/src/backend/po/it.po @@ -0,0 +1,17020 @@ +# +# Translation of postgres to Italian +# PostgreSQL Project +# +# Associazione Culturale ITPUG - Italian PostgreSQL Users Group +# http://www.itpug.org/ - info@itpug.org +# +# Traduttori: +# * Daniele Varrazzo +# * Vincenzo Romano +# +# Copyright (c) 2010, Associazione Culturale ITPUG +# Distributed under the same license of the PostgreSQL project +# +msgid "" +msgstr "" +"Project-Id-Version: postgres (PostgreSQL) 9.1\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2014-02-09 12:10+0000\n" +"PO-Revision-Date: 2014-02-09 21:28+0100\n" +"Last-Translator: Daniele Varrazzo \n" +"Language-Team: Gruppo traduzioni ITPUG \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Poedit 1.5.4\n" + +#: postmaster/bgwriter.c:483 +#, c-format +msgid "checkpoints are occurring too frequently (%d second apart)" +msgid_plural "checkpoints are occurring too frequently (%d seconds apart)" +msgstr[0] "i checkpoint stanno avvenendo troppo frequentemente (a distanza di %d secondo)" +msgstr[1] "i checkpoint stanno avvenendo troppo frequentemente (a distanza di %d secondi)" + +#: postmaster/bgwriter.c:487 +msgid "Consider increasing the configuration parameter \"checkpoint_segments\"." +msgstr "Considera di incrementare il parametro di configurazione \"checkpoint_segments\"." + +#: postmaster/bgwriter.c:599 +#, c-format +msgid "transaction log switch forced (archive_timeout=%d)" +msgstr "passaggio al prossimo log delle transazioni forzato (archive_timeout=%d)" + +#: postmaster/bgwriter.c:1062 +msgid "checkpoint request failed" +msgstr "richiesta di checkpoint fallita" + +#: postmaster/bgwriter.c:1063 +msgid "Consult recent messages in the server log for details." +msgstr "Consulta i messaggi recenti nel log del server per i dettagli." + +#: postmaster/bgwriter.c:1245 +#, c-format +msgid "compacted fsync request queue from %d entries to %d entries" +msgstr "coda di richieste di fsync ridotta da %d a %d elementi" + +#: postmaster/pgstat.c:330 +#, c-format +msgid "could not resolve \"localhost\": %s" +msgstr "risoluzione di \"localhost\" fallita: %s" + +#: postmaster/pgstat.c:353 +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:362 +#, 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:374 +#, 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:385 +#, 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:401 +#, c-format +msgid "could not connect socket for statistics collector: %m" +msgstr "connessione al socket per il raccoglitore statistiche fallita: %m" + +#: postmaster/pgstat.c:422 +#, 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:448 postmaster/pgstat.c:2996 +#, c-format +msgid "select() failed in statistics collector: %m" +msgstr "select() fallita nel raccoglitore di statistiche: %m" + +#: postmaster/pgstat.c:463 +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:478 +#, 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:488 +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:511 +#, 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:521 +msgid "disabling statistics collector for lack of working socket" +msgstr "raccoglitore di statistiche disabilitato per mancanza di un socket funzionante" + +#: postmaster/pgstat.c:623 +#, c-format +msgid "could not fork statistics collector: %m" +msgstr "fork del raccoglitore di statistiche fallito: %m" + +#: postmaster/pgstat.c:1153 postmaster/pgstat.c:1177 postmaster/pgstat.c:1208 +msgid "must be superuser to reset statistics counters" +msgstr "occorre essere un superutente per resettare i contatori delle statistiche" + +#: postmaster/pgstat.c:1184 utils/adt/pgstatfuncs.c:1548 +#, c-format +msgid "unrecognized reset target: \"%s\"" +msgstr "obiettivo del reset sconosciuto: \"%s\"" + +#: postmaster/pgstat.c:1185 utils/adt/pgstatfuncs.c:1549 +msgid "Target must be \"bgwriter\"." +msgstr "L'obiettivo deve essere \"bgwriter\"." + +#: postmaster/pgstat.c:2975 +#, c-format +msgid "poll() failed in statistics collector: %m" +msgstr "poll() fallita nel raccoglitore di statistiche: %m" + +#: postmaster/pgstat.c:3020 +#, c-format +msgid "could not read statistics message: %m" +msgstr "lettura del messaggio delle statistiche fallito: %m" + +#: postmaster/pgstat.c:3291 +#, c-format +msgid "could not open temporary statistics file \"%s\": %m" +msgstr "apertura del file temporaneo delle statistiche \"%s\" fallita: %m" + +#: postmaster/pgstat.c:3363 +#, c-format +msgid "could not write temporary statistics file \"%s\": %m" +msgstr "scrittura del file temporaneo delle statistiche \"%s\" fallita: %m" + +#: postmaster/pgstat.c:3372 +#, c-format +msgid "could not close temporary statistics file \"%s\": %m" +msgstr "chiusura del file temporaneo delle statistiche \"%s\" fallita: %m" + +#: postmaster/pgstat.c:3380 +#, 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:3486 postmaster/pgstat.c:3715 +#, c-format +msgid "could not open statistics file \"%s\": %m" +msgstr "apertura del file delle statistiche \"%s\" fallita: %m" + +#: postmaster/pgstat.c:3498 postmaster/pgstat.c:3508 postmaster/pgstat.c:3530 +#: postmaster/pgstat.c:3545 postmaster/pgstat.c:3608 postmaster/pgstat.c:3626 +#: postmaster/pgstat.c:3642 postmaster/pgstat.c:3660 postmaster/pgstat.c:3676 +#: postmaster/pgstat.c:3727 postmaster/pgstat.c:3738 +#, c-format +msgid "corrupted statistics file \"%s\"" +msgstr "file delle statistiche corrotto \"%s\"" + +#: postmaster/pgstat.c:4036 +msgid "database hash table corrupted during cleanup --- abort" +msgstr "tabella hash del database corrotta durante la pulizia --- interruzione" + +#: postmaster/autovacuum.c:359 +#, c-format +msgid "could not fork autovacuum launcher process: %m" +msgstr "fork del processo di esecuzione di autovacuum fallito: %m" + +#: postmaster/autovacuum.c:404 +msgid "autovacuum launcher started" +msgstr "esecutore di autovacuum avviato" + +#: postmaster/autovacuum.c:781 +msgid "autovacuum launcher shutting down" +msgstr "arresto dell'esecutore di autovacuum" + +#: postmaster/autovacuum.c:1416 +#, c-format +msgid "could not fork autovacuum worker process: %m" +msgstr "fork del processo di lavoro di autovacuum fallito: %m" + +#: postmaster/autovacuum.c:1634 +#, c-format +msgid "autovacuum: processing database \"%s\"" +msgstr "autovacuum: elaborazione del database \"%s\"" + +#: postmaster/autovacuum.c:2037 +#, 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:2049 +#, 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:2319 +#, c-format +msgid "automatic vacuum of table \"%s.%s.%s\"" +msgstr "pulizia automatica della tabella \"%s.%s.%s\"" + +#: postmaster/autovacuum.c:2322 +#, c-format +msgid "automatic analyze of table \"%s.%s.%s\"" +msgstr "analisi automatica della tabella \"%s.%s.%s\"" + +#: postmaster/autovacuum.c:2808 +msgid "autovacuum not started because of misconfiguration" +msgstr "autovacuum non avviato a causa di configurazione errata" + +#: postmaster/autovacuum.c:2809 +msgid "Enable the \"track_counts\" option." +msgstr "Abilita l'opzione \"track_counts\"." + +#: postmaster/syslogger.c:418 +#, c-format +msgid "select() failed in logger process: %m" +msgstr "select() fallita nel processo logger: %m" + +#: postmaster/syslogger.c:430 postmaster/syslogger.c:1014 +#, c-format +msgid "could not read from logger pipe: %m" +msgstr "lettura dalla pipe del logger fallita: %m" + +#: postmaster/syslogger.c:477 +msgid "logger shutting down" +msgstr "spegnimento del logger" + +#: postmaster/syslogger.c:521 postmaster/syslogger.c:535 +#, c-format +msgid "could not create pipe for syslog: %m" +msgstr "creazione della pipe per il syslog fallita: %m" + +#: postmaster/syslogger.c:571 +#, c-format +msgid "could not fork system logger: %m" +msgstr "fork del logger di sistema fallito: %m" + +#: postmaster/syslogger.c:602 +#, c-format +msgid "could not redirect stdout: %m" +msgstr "redirezione di stdout fallita: %m" + +#: postmaster/syslogger.c:607 postmaster/syslogger.c:625 +#, c-format +msgid "could not redirect stderr: %m" +msgstr "redirezione di stderr fallita: %m" + +#: postmaster/syslogger.c:969 +#, c-format +msgid "could not write to log file: %s\n" +msgstr "scrittura nel file di log fallita: %s\n" + +#: postmaster/syslogger.c:1095 +#, c-format +msgid "could not open log file \"%s\": %m" +msgstr "apertura del file di log \"%s\" fallita: %m" + +#: postmaster/syslogger.c:1157 postmaster/syslogger.c:1201 +msgid "disabling automatic rotation (use SIGHUP to re-enable)" +msgstr "rotazione automatica disabilitata (usa SIGHUP per abilitarla di nuovo)" + +#: postmaster/pgarch.c:158 +#, c-format +msgid "could not fork archiver: %m" +msgstr "non è possibile fare un fork dell'archiver: %m" + +#: postmaster/pgarch.c:450 +msgid "archive_mode enabled, yet archive_command is not set" +msgstr "archive_mode abilitato, ma archive_command non è impostato" + +#: postmaster/pgarch.c:465 +#, c-format +msgid "transaction log file \"%s\" could not be archived: too many failures" +msgstr "non è stato possibile archiviare il file di log delle transazioni \"%s\": troppi fallimenti" + +#: postmaster/pgarch.c:568 +#, c-format +msgid "archive command failed with exit code %d" +msgstr "comando di archiviazione fallito con codice di uscita %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 "Il comando di archiviazione fallito era: %s" + +#: postmaster/pgarch.c:577 +#, c-format +msgid "archive command was terminated by exception 0x%X" +msgstr "comando di archiviazione terminato da eccezione 0x%X" + +#: postmaster/pgarch.c:579 postmaster/postmaster.c:2883 +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:584 +#, c-format +msgid "archive command was terminated by signal %d: %s" +msgstr "comando di archiviazione terminato dal segnale %d: %s" + +#: postmaster/pgarch.c:591 +#, c-format +msgid "archive command was terminated by signal %d" +msgstr "comando di archiviazione terminato dal segnale %d" + +#: postmaster/pgarch.c:600 +#, c-format +msgid "archive command exited with unrecognized status %d" +msgstr "processo di archiviazione uscito con stato sconosciuto %d" + +#: postmaster/pgarch.c:612 +#, c-format +msgid "archived transaction log file \"%s\"" +msgstr "file di log delle transazioni archiviato \"%s\"" + +#: postmaster/pgarch.c:661 +#, c-format +msgid "could not open archive status directory \"%s\": %m" +msgstr "apertura della directory dello stato dell'archivio \"%s\" fallita: %m" + +#: postmaster/pgarch.c:715 access/transam/xlog.c:4613 +#: access/transam/xlog.c:5573 access/transam/xlog.c:5626 +#: access/transam/xlog.c:6421 +#, c-format +msgid "could not rename file \"%s\" to \"%s\": %m" +msgstr "non è stato possibile rinominare il file \"%s\" in \"%s\": %m" + +#: postmaster/postmaster.c:569 +#, 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:655 +#, 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:678 bootstrap/bootstrap.c:269 tcop/postgres.c:3448 +#, c-format +msgid "--%s requires a value" +msgstr "--%s richiede un valore" + +#: postmaster/postmaster.c:683 bootstrap/bootstrap.c:274 tcop/postgres.c:3453 +#, c-format +msgid "-c %s requires a value" +msgstr "-c %s richiede un valore" + +#: postmaster/postmaster.c:695 postmaster/postmaster.c:708 +#: bootstrap/bootstrap.c:285 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Prova \"%s --help\" per maggiori informazioni.\n" + +#: postmaster/postmaster.c:706 +#, c-format +msgid "%s: invalid argument: \"%s\"\n" +msgstr "%s: argomento non valido: \"%s\"\n" + +#: postmaster/postmaster.c:731 +#, 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:736 +#, 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:741 +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\"" + +#: postmaster/postmaster.c:744 +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\"" + +#: postmaster/postmaster.c:752 +#, c-format +msgid "%s: invalid datetoken tables, please fix\n" +msgstr "%s: datetoken tables non valido, per favore correggilo\n" + +#: postmaster/postmaster.c:852 +msgid "invalid list syntax for \"listen_addresses\"" +msgstr "sintassi della lista non valida per \"listen_addresses\"" + +#: postmaster/postmaster.c:882 +#, c-format +msgid "could not create listen socket for \"%s\"" +msgstr "creazione del socket di ascolto per \"%s\" fallita" + +#: postmaster/postmaster.c:888 +msgid "could not create any TCP/IP sockets" +msgstr "non è stato possibile creare alcun socket TCP/IP" + +#: postmaster/postmaster.c:939 +msgid "could not create Unix-domain socket" +msgstr "creazione del socket di dominio Unix fallita" + +#: postmaster/postmaster.c:947 +msgid "no socket created for listening" +msgstr "nessun socket per l'ascolto è stato creato" + +#: postmaster/postmaster.c:986 +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:1030 +#, 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:1098 utils/init/postinit.c:197 +msgid "could not load pg_hba.conf" +msgstr "caricamento di pg_hba.conf fallito" + +#: postmaster/postmaster.c:1151 +#, c-format +msgid "%s: could not locate matching postgres executable" +msgstr "%s: eseguibile postgres corrispondente non trovato" + +#: postmaster/postmaster.c:1172 utils/misc/tzparser.c:323 utils/adt/misc.c:213 +#: utils/adt/genfile.c:353 commands/tablespace.c:689 commands/tablespace.c:699 +#: storage/file/fd.c:1682 storage/file/copydir.c:67 storage/file/copydir.c:106 +#, c-format +msgid "could not open directory \"%s\": %m" +msgstr "apertura della directory \"%s\" fallita: %m" + +#: postmaster/postmaster.c:1174 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 "Questo potrebbe indicare una installazione di PostgreSQL incompleta, o che il file \"%s\" sia stato spostato dalla sua posizione corretta." + +#: postmaster/postmaster.c:1202 +#, c-format +msgid "data directory \"%s\" does not exist" +msgstr "la directory dei dati \"%s\" non esiste" + +#: postmaster/postmaster.c:1207 +#, c-format +msgid "could not read permissions of directory \"%s\": %m" +msgstr "lettura dei permessi della directory \"%s\" fallita: %m" + +#: postmaster/postmaster.c:1215 +#, c-format +msgid "specified data directory \"%s\" is not a directory" +msgstr "la directory dei dati specificata \"%s\" non è una directory" + +#: postmaster/postmaster.c:1231 +#, c-format +msgid "data directory \"%s\" has wrong ownership" +msgstr "la directory dei dati \"%s\" ha il proprietario errato" + +#: postmaster/postmaster.c:1233 +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:1253 +#, 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:1255 +msgid "Permissions should be u=rwx (0700)." +msgstr "I permessi dovrebbero essere u=rwx (0700)." + +#: postmaster/postmaster.c:1266 +#, 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: database non trovato\n" +"Sarebbe dovuto essere nella directory \"%s\",\n" +"ma l'apertura del file \"%s\" è fallita: %s\n" + +#: postmaster/postmaster.c:1302 +#, c-format +msgid "%s: could not open file \"%s\": %s\n" +msgstr "%s: non è stato possibile aprire il file \"%s\": %s\n" + +#: postmaster/postmaster.c:1309 +#, c-format +msgid "%s: could not open log file \"%s/%s\": %s\n" +msgstr "%s: non è stato possibile aprire il file di log \"%s/%s\": %s\n" + +#: postmaster/postmaster.c:1320 +#, c-format +msgid "%s: could not fork background process: %s\n" +msgstr "%s: non è stato possibile effettuare il fork del processo di scrittura in background: %s\n" + +#: postmaster/postmaster.c:1342 +#, c-format +msgid "%s: could not dissociate from controlling TTY: %s\n" +msgstr "%s: non è stato possibile dissociarsi dal terminale di controllo: %s\n" + +#: postmaster/postmaster.c:1437 +#, c-format +msgid "select() failed in postmaster: %m" +msgstr "select() fallita in postmaster: %m" + +#: postmaster/postmaster.c:1599 postmaster/postmaster.c:1630 +msgid "incomplete startup packet" +msgstr "pacchetto di avvio incompleto" + +#: postmaster/postmaster.c:1611 +msgid "invalid length of startup packet" +msgstr "dimensione del pacchetto di avvio non valida" + +#: postmaster/postmaster.c:1668 +#, c-format +msgid "failed to send SSL negotiation response: %m" +msgstr "invio della risposta di negoziazione SSL fallito: %m" + +#: postmaster/postmaster.c:1697 +#, 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:1748 +msgid "invalid value for boolean option \"replication\"" +msgstr "valore per l'opzione booleana \"replication\" non valido" + +#: postmaster/postmaster.c:1768 +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:1796 +msgid "no PostgreSQL user name specified in startup packet" +msgstr "nessun utente PostgreSQL specificato nel pacchetto di avvio" + +#: postmaster/postmaster.c:1853 +msgid "the database system is starting up" +msgstr "il database si sta avviando" + +#: postmaster/postmaster.c:1858 +msgid "the database system is shutting down" +msgstr "il database si sta spegnendo" + +#: postmaster/postmaster.c:1863 +msgid "the database system is in recovery mode" +msgstr "il database è in modalità di ripristino" + +#: postmaster/postmaster.c:1868 storage/ipc/procarray.c:271 +#: storage/ipc/sinvaladt.c:302 storage/lmgr/proc.c:304 +msgid "sorry, too many clients already" +msgstr "spiacente, troppi client già connessi" + +#: postmaster/postmaster.c:1930 +#, 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:1938 +#, 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:2010 postmaster/postmaster.c:2041 +#: postmaster/postmaster.c:3243 postmaster/postmaster.c:3922 +#: postmaster/postmaster.c:4007 postmaster/postmaster.c:4624 +#: utils/hash/dynahash.c:368 utils/hash/dynahash.c:445 +#: utils/hash/dynahash.c:959 utils/misc/guc.c:3298 utils/misc/guc.c:3311 +#: utils/misc/guc.c:3324 utils/misc/tzparser.c:455 utils/init/miscinit.c:150 +#: utils/init/miscinit.c:171 utils/init/miscinit.c:181 utils/fmgr/dfmgr.c:224 +#: utils/mb/mbutils.c:374 utils/mb/mbutils.c:675 utils/mmgr/aset.c:416 +#: utils/mmgr/aset.c:587 utils/mmgr/aset.c:765 utils/mmgr/aset.c:966 +#: utils/adt/regexp.c:209 utils/adt/varlena.c:3471 utils/adt/varlena.c:3492 +#: utils/adt/formatting.c:1524 utils/adt/formatting.c:1640 +#: utils/adt/formatting.c:1757 lib/stringinfo.c:266 commands/sequence.c:1014 +#: libpq/auth.c:1022 libpq/auth.c:1382 libpq/auth.c:1450 libpq/auth.c:1852 +#: storage/file/fd.c:364 storage/file/fd.c:761 storage/file/fd.c:879 +#: storage/file/fd.c:1443 storage/ipc/procarray.c:849 +#: storage/ipc/procarray.c:1260 storage/ipc/procarray.c:1267 +#: storage/ipc/procarray.c:1507 storage/ipc/procarray.c:1958 +#: storage/buffer/localbuf.c:350 storage/buffer/buf_init.c:154 +msgid "out of memory" +msgstr "memoria esaurita" + +#: postmaster/postmaster.c:2144 +msgid "received SIGHUP, reloading configuration files" +msgstr "SIGHUP ricevuto, sto ricaricando i file di configurazione" + +#: postmaster/postmaster.c:2167 +msgid "pg_hba.conf not reloaded" +msgstr "pg_hba.conf non è stato ricaricato" + +#: postmaster/postmaster.c:2210 +msgid "received smart shutdown request" +msgstr "richiesta di arresto smart ricevuta" + +#: postmaster/postmaster.c:2257 +msgid "received fast shutdown request" +msgstr "richiesta di arresto fast ricevuta" + +#: postmaster/postmaster.c:2275 +msgid "aborting any active transactions" +msgstr "interruzione di tutte le transazioni attive" + +#: postmaster/postmaster.c:2304 +msgid "received immediate shutdown request" +msgstr "richiesta di arresto immediate ricevuta" + +#: postmaster/postmaster.c:2392 postmaster/postmaster.c:2413 +msgid "startup process" +msgstr "avvio del processo" + +#: postmaster/postmaster.c:2395 +msgid "aborting startup due to startup process failure" +msgstr "avvio interrotto a causa del fallimento del processo di avvio" + +#: postmaster/postmaster.c:2447 +msgid "database system is ready to accept connections" +msgstr "il database è pronto ad accettare connessioni" + +#: postmaster/postmaster.c:2502 +msgid "background writer process" +msgstr "processo di scrittura in background" + +#: postmaster/postmaster.c:2518 +msgid "WAL writer process" +msgstr "processo di scrittura WAL" + +#: postmaster/postmaster.c:2532 +msgid "WAL receiver process" +msgstr "processo di ricezione WAL" + +#: postmaster/postmaster.c:2547 +msgid "autovacuum launcher process" +msgstr "processo del lanciatore di autovacuum" + +#: postmaster/postmaster.c:2562 +msgid "archiver process" +msgstr "processo di archiviazione" + +#: postmaster/postmaster.c:2578 +msgid "statistics collector process" +msgstr "processo del raccoglitore di statistiche" + +#: postmaster/postmaster.c:2592 +msgid "system logger process" +msgstr "processo del logger di sistema" + +#: postmaster/postmaster.c:2627 postmaster/postmaster.c:2646 +#: postmaster/postmaster.c:2653 postmaster/postmaster.c:2671 +msgid "server process" +msgstr "processo del server" + +#: postmaster/postmaster.c:2707 +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:2872 +#, c-format +msgid "%s (PID %d) exited with exit code %d" +msgstr "%s (PID %d) è uscito con codice di uscita %d" + +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2881 +#, 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:2890 +#, 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:2900 +#, 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:2909 +#, c-format +msgid "%s (PID %d) exited with unrecognized status %d" +msgstr "%s (PID %d) uscito con stato sconosciuto %d" + +#: postmaster/postmaster.c:3089 +msgid "abnormal database system shutdown" +msgstr "spegnimento anormale del database" + +#: postmaster/postmaster.c:3128 +msgid "all server processes terminated; reinitializing" +msgstr "tutti i processi server sono terminati; re-inizializzazione" + +#: postmaster/postmaster.c:3311 +#, c-format +msgid "could not fork new process for connection: %m" +msgstr "fork del nuovo processo per la connessione fallito: %m" + +#: postmaster/postmaster.c:3353 +msgid "could not fork new process for connection: " +msgstr "fork del nuovo processo per la connessione fallito: " + +#: postmaster/postmaster.c:3467 +#, c-format +msgid "connection received: host=%s port=%s" +msgstr "connessione ricevuta: host=%s porta=%s" + +#: postmaster/postmaster.c:3472 +#, c-format +msgid "connection received: host=%s" +msgstr "connessione ricevuta: host=%s" + +#: postmaster/postmaster.c:3697 access/transam/xlog.c:2397 +#: access/transam/xlog.c:2530 access/transam/xlog.c:4463 +#: access/transam/xlog.c:9183 access/transam/xlog.c:9427 +#: storage/file/copydir.c:172 storage/smgr/md.c:289 +#, c-format +msgid "could not create file \"%s\": %m" +msgstr "creazione del file \"%s\" fallita: %m" + +#: postmaster/postmaster.c:3707 postmaster/postmaster.c:3717 +#: utils/misc/guc.c:7432 utils/misc/guc.c:7457 utils/init/miscinit.c:1097 +#: utils/init/miscinit.c:1106 utils/init/miscinit.c:1113 +#: access/transam/xlog.c:2429 access/transam/xlog.c:2562 +#: access/transam/xlog.c:4515 access/transam/xlog.c:4578 +#: storage/file/copydir.c:197 +#, c-format +msgid "could not write to file \"%s\": %m" +msgstr "scrittura nel file \"%s\" fallita: %m" + +#: postmaster/postmaster.c:3736 +#, c-format +msgid "could not execute server process \"%s\": %m" +msgstr "esecuzione del processo del server \"%s\" fallita: %m" + +#: postmaster/postmaster.c:4257 +msgid "database system is ready to accept read only connections" +msgstr "il database è pronto ad accettare connessioni in sola lettura" + +#: postmaster/postmaster.c:4527 +#, c-format +msgid "could not fork startup process: %m" +msgstr "fork del processo di avvio fallito: %m" + +#: postmaster/postmaster.c:4531 +#, c-format +msgid "could not fork background writer process: %m" +msgstr "fork del processo di scrittura in background fallito: %m" + +#: postmaster/postmaster.c:4535 +#, c-format +msgid "could not fork WAL writer process: %m" +msgstr "fork del processo di scrittura dei WAL fallito: %m" + +#: postmaster/postmaster.c:4539 +#, c-format +msgid "could not fork WAL receiver process: %m" +msgstr "fork del processo di ricezione dei WAL fallito: %m" + +#: postmaster/postmaster.c:4543 +#, c-format +msgid "could not fork process: %m" +msgstr "fork del processo fallito: %m" + +#: postmaster/postmaster.c:4828 +#, c-format +msgid "could not duplicate socket %d for use in backend: error code %d" +msgstr "duplicazione del socket %d da usare nel backend fallita: codice errore %d" + +#: postmaster/postmaster.c:4860 +#, c-format +msgid "could not create inherited socket: error code %d\n" +msgstr "creazione del socket ereditato fallita: codice errore %d\n" + +#: postmaster/postmaster.c:4889 postmaster/postmaster.c:4896 +#, c-format +msgid "could not read from backend variables file \"%s\": %s\n" +msgstr "lettura dal file delle variabili del backend \"%s\" fallita: %s\n" + +#: postmaster/postmaster.c:4905 +#, c-format +msgid "could not remove file \"%s\": %s\n" +msgstr "rimozione del file \"%s\" fallita: %s\n" + +#: postmaster/postmaster.c:4922 +#, c-format +msgid "could not map view of backend variables: error code %d\n" +msgstr "non è stato possibile mappare la vista delle variabili del backend: codice errore %d\n" + +#: postmaster/postmaster.c:4931 +#, c-format +msgid "could not unmap view of backend variables: error code %d\n" +msgstr "non è stato possibile rimuovere la mappa della vista delle variabili del backend: codice errore %d\n" + +#: postmaster/postmaster.c:4938 +#, c-format +msgid "could not close handle to backend parameter variables: error code %d\n" +msgstr "non è stato possibile chiudere l'handle dei parametri variabili del backend: codice errore %d\n" + +#: postmaster/postmaster.c:5083 +msgid "could not read exit code for process\n" +msgstr "lettura del codice di uscita del processo fallita\n" + +#: postmaster/postmaster.c:5088 +msgid "could not post child completion status\n" +msgstr "invio dello stato di completamento del figlio fallito\n" + +#: utils/cache/ts_cache.c:620 commands/tsearchcmds.c:1753 +#: commands/tsearchcmds.c:1909 catalog/namespace.c:2276 +#, c-format +msgid "text search configuration \"%s\" does not exist" +msgstr "la configurazione di ricerca di testo \"%s\" non esiste" + +#: utils/cache/plancache.c:606 +msgid "cached plan must not change result type" +msgstr "il cached plan non deve cambiare il tipo del risultato" + +#: utils/cache/relcache.c:4321 +#, 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:4323 +msgid "Continuing anyway, but there's something wrong." +msgstr "Proseguo in ogni caso, ma c'è qualcosa che non funziona." + +#: utils/cache/relcache.c:4537 +#, c-format +msgid "could not remove cache file \"%s\": %m" +msgstr "rimozione del file di cache \"%s\" fallita: %m" + +#: utils/cache/relmapper.c:454 +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:702 +#, 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 +#, 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 +#, 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 +#, 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:741 +#, 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:754 +#, 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:760 +#, c-format +msgid "could not close relation mapping file \"%s\": %m" +msgstr "chiusura del file della mappa delle relazioni \"%s\" fallita: %m" + +#: utils/cache/lsyscache.c:2413 utils/cache/lsyscache.c:2446 +#: utils/cache/lsyscache.c:2479 utils/cache/lsyscache.c:2512 +#, c-format +msgid "type %s is only a shell" +msgstr "il tipo %s non è completamente definito" + +#: utils/cache/lsyscache.c:2418 +#, c-format +msgid "no input function available for type %s" +msgstr "nessuna funzione di input disponibile per il tipo %s" + +#: utils/cache/lsyscache.c:2451 +#, c-format +msgid "no output function available for type %s" +msgstr "nessuna funzione di output disponibile per il tipo %s" + +#: utils/cache/lsyscache.c:2484 utils/adt/arrayfuncs.c:1307 +#, c-format +msgid "no binary input function available for type %s" +msgstr "non esiste una funzione di input binario per il tipo %s" + +#: utils/cache/lsyscache.c:2517 utils/adt/arrayfuncs.c:1529 +#, c-format +msgid "no binary output function available for type %s" +msgstr "non esiste una funzione di output binario per il tipo %s" + +#: utils/cache/typcache.c:195 parser/parse_type.c:202 +#, c-format +msgid "type \"%s\" is only a shell" +msgstr "il tipo \"%s\" non è completamente definito" + +#: utils/cache/typcache.c:634 +#, c-format +msgid "type %s is not composite" +msgstr "il tipo %s non è composito" + +#: utils/cache/typcache.c:648 +msgid "record type has not been registered" +msgstr "il tipo del record non è stato registrato" + +#: utils/cache/typcache.c:1001 commands/typecmds.c:1272 +#, c-format +msgid "%s is not an enum" +msgstr "%s non è una enumerazione" + +#: utils/hash/dynahash.c:955 storage/ipc/shmem.c:190 +#: storage/lmgr/predicate.c:2246 storage/lmgr/predicate.c:2261 +#: storage/lmgr/predicate.c:3653 storage/lmgr/predicate.c:4796 +#: storage/lmgr/proc.c:197 storage/lmgr/proc.c:216 storage/lmgr/lock.c:723 +#: storage/lmgr/lock.c:792 storage/lmgr/lock.c:2301 storage/lmgr/lock.c:2700 +#: storage/lmgr/lock.c:2765 +msgid "out of shared memory" +msgstr "memoria condivisa esaurita" + +#: utils/misc/help_config.c:131 +msgid "internal error: unrecognized run-time parameter type\n" +msgstr "errore interno: tipo di parametro sconosciuto\n" + +#: utils/misc/guc.c:525 +msgid "Ungrouped" +msgstr "Varie" + +#: utils/misc/guc.c:527 +msgid "File Locations" +msgstr "Posizione dei File" + +#: utils/misc/guc.c:529 +msgid "Connections and Authentication" +msgstr "Connessioni ed Autenticazione" + +#: utils/misc/guc.c:531 +msgid "Connections and Authentication / Connection Settings" +msgstr "Connessioni ed Autenticazione / Impostazioni di Connessione" + +#: utils/misc/guc.c:533 +msgid "Connections and Authentication / Security and Authentication" +msgstr "Connessioni ed Autenticazione / Sicurezza ed Autenticazione" + +#: utils/misc/guc.c:535 +msgid "Resource Usage" +msgstr "Uso delle Risorse" + +#: utils/misc/guc.c:537 +msgid "Resource Usage / Memory" +msgstr "Uso delle Risorse / Memoria" + +#: utils/misc/guc.c:539 +msgid "Resource Usage / Kernel Resources" +msgstr "Uso delle Risorse / Risorse del Kernel" + +#: utils/misc/guc.c:541 +msgid "Resource Usage / Cost-Based Vacuum Delay" +msgstr "Uso delle Risorse / Intervallo di Vacuum Basato sul Costo" + +#: utils/misc/guc.c:543 +msgid "Resource Usage / Background Writer" +msgstr "Uso delle Risorse / Scrittura in Background" + +#: utils/misc/guc.c:545 +msgid "Resource Usage / Asynchronous Behavior" +msgstr "Uso delle Risorse / Comportamento Asincrono" + +#: utils/misc/guc.c:547 +msgid "Write-Ahead Log" +msgstr "Write-Ahead Log" + +#: utils/misc/guc.c:549 +msgid "Write-Ahead Log / Settings" +msgstr "Write-Ahead Log / Impostazioni" + +#: utils/misc/guc.c:551 +msgid "Write-Ahead Log / Checkpoints" +msgstr "Write-Ahead Log / Checkpoint" + +#: utils/misc/guc.c:553 +msgid "Write-Ahead Log / Archiving" +msgstr "Write-Ahead Log / Archiviazione" + +#: utils/misc/guc.c:555 +msgid "Replication" +msgstr "Replica" + +#: utils/misc/guc.c:557 +msgid "Replication / Master Server" +msgstr "Replica / Server Master" + +#: utils/misc/guc.c:559 +msgid "Replication / Standby Servers" +msgstr "Replica / Serve in Standby" + +#: utils/misc/guc.c:561 +msgid "Query Tuning" +msgstr "Tuning delle Query" + +#: utils/misc/guc.c:563 +msgid "Query Tuning / Planner Method Configuration" +msgstr "Tuning delle Query / Configurazione dei Metodi del Planner" + +#: utils/misc/guc.c:565 +msgid "Query Tuning / Planner Cost Constants" +msgstr "Tuning delle Query / Costanti di Costo del Planner" + +#: utils/misc/guc.c:567 +msgid "Query Tuning / Genetic Query Optimizer" +msgstr "Tuning delle Query / Ottimizzatore Genetico delle Query" + +#: utils/misc/guc.c:569 +msgid "Query Tuning / Other Planner Options" +msgstr "Tuning delle Query / Altre Opzioni del Planner" + +#: utils/misc/guc.c:571 +msgid "Reporting and Logging" +msgstr "Report e Log" + +#: utils/misc/guc.c:573 +msgid "Reporting and Logging / Where to Log" +msgstr "Report e Log / Dove inviare i Log" + +#: utils/misc/guc.c:575 +msgid "Reporting and Logging / When to Log" +msgstr "Report e Log / Quando inviare i Log" + +#: utils/misc/guc.c:577 +msgid "Reporting and Logging / What to Log" +msgstr "Report e Log / Cosa indicare nei Log" + +#: utils/misc/guc.c:579 +msgid "Statistics" +msgstr "Statistiche" + +#: utils/misc/guc.c:581 +msgid "Statistics / Monitoring" +msgstr "Statistiche / Monitoring" + +#: utils/misc/guc.c:583 +msgid "Statistics / Query and Index Statistics Collector" +msgstr "Statistiche / Raccolta delle Statistiche su Query e Indici" + +#: utils/misc/guc.c:585 +msgid "Autovacuum" +msgstr "Autovacuum" + +#: utils/misc/guc.c:587 +msgid "Client Connection Defaults" +msgstr "Valori Predefiniti Connessioni Client" + +#: utils/misc/guc.c:589 +msgid "Client Connection Defaults / Statement Behavior" +msgstr "Valori Predefiniti Connessioni Client / Comportamento Istruzioni" + +#: utils/misc/guc.c:591 +msgid "Client Connection Defaults / Locale and Formatting" +msgstr "Valori Predefiniti Connessioni Client / Locale e Formattazione" + +#: utils/misc/guc.c:593 +msgid "Client Connection Defaults / Other Defaults" +msgstr "Valori Predefiniti Connessioni Client / Altri Default" + +#: utils/misc/guc.c:595 +msgid "Lock Management" +msgstr "Gestione dei Lock" + +#: utils/misc/guc.c:597 +msgid "Version and Platform Compatibility" +msgstr "Versione e Compatibilità della Piattaforma" + +#: utils/misc/guc.c:599 +msgid "Version and Platform Compatibility / Previous PostgreSQL Versions" +msgstr "Versione e Compatibilità della Piattaforma / Versioni Precedenti di PostgreSQL" + +#: utils/misc/guc.c:601 +msgid "Version and Platform Compatibility / Other Platforms and Clients" +msgstr "Versione e Compatibilità della Piattaforma / Altre Piattaforme e Client" + +#: utils/misc/guc.c:603 +msgid "Error Handling" +msgstr "Gestione degli Errori" + +#: utils/misc/guc.c:605 +msgid "Preset Options" +msgstr "Opzioni Preimpostate" + +#: utils/misc/guc.c:607 +msgid "Customized Options" +msgstr "Opzioni Personalizzate" + +#: utils/misc/guc.c:609 +msgid "Developer Options" +msgstr "Opzioni di Sviluppo" + +#: utils/misc/guc.c:663 +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:672 +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:681 +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:690 +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:699 +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:708 +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:717 +msgid "Enables the planner's use of materialization." +msgstr "Abilita l'uso da parte del planner di materializzazione." + +#: utils/misc/guc.c:726 +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:735 +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:744 +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:753 +msgid "Enables genetic query optimization." +msgstr "Abilita l'ottimizzatore genetico di query." + +#: utils/misc/guc.c:754 +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:764 +msgid "Shows whether the current user is a superuser." +msgstr "Mostra se l'utente attuale è un superutente o meno." + +#: utils/misc/guc.c:774 +msgid "Enables advertising the server via Bonjour." +msgstr "Abilita la pubblicazione del server via Bonjour." + +#: utils/misc/guc.c:783 +msgid "Enables SSL connections." +msgstr "Abilita le connessioni SSL." + +#: utils/misc/guc.c:792 +msgid "Forces synchronization of updates to disk." +msgstr "Forza la sincronizzazione degli aggiornamenti sul disco." + +#: utils/misc/guc.c:793 +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:804 +msgid "Continues processing past damaged page headers." +msgstr "Continua l'esecuzione oltre le intestazioni di pagina danneggiate." + +#: utils/misc/guc.c:805 +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:818 +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:819 +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:831 +msgid "Runs the server silently." +msgstr "Esegui il server silenziosamente." + +#: utils/misc/guc.c:832 +msgid "If this parameter is set, the server will automatically run in the background and any controlling terminals are dissociated." +msgstr "Se questo parametro è impostato, il server verrà eseguito automaticamente in background, dissociato dai terminali di controllo." + +#: utils/misc/guc.c:841 +msgid "Logs each checkpoint." +msgstr "Registra nel log ogni checkpoint." + +#: utils/misc/guc.c:850 +msgid "Logs each successful connection." +msgstr "Registra nel log tutte le connessioni avvenute con successo." + +#: utils/misc/guc.c:859 +msgid "Logs end of a session, including duration." +msgstr "Registra nel log la fine delle sessioni, compresa la sua durata." + +#: utils/misc/guc.c:868 +msgid "Turns on various assertion checks." +msgstr "Abilita vari controlli di asserzione." + +#: utils/misc/guc.c:869 +msgid "This is a debugging aid." +msgstr "Questo è un ausilio al debug." + +#: utils/misc/guc.c:883 +msgid "Terminate session on any error." +msgstr "Termina la sessione su qualunque errore." + +#: utils/misc/guc.c:892 +msgid "Reinitialize server after backend crash." +msgstr "Reinizializza il server dopo un crash del backend." + +#: utils/misc/guc.c:902 +msgid "Logs the duration of each completed SQL statement." +msgstr "Registra nel log la durata di ogni istruzione SQL completata." + +#: utils/misc/guc.c:911 +msgid "Logs each query's parse tree." +msgstr "Registra nel log l'albero di parsing di tutte le query." + +#: utils/misc/guc.c:920 +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:929 +msgid "Logs each query's execution plan." +msgstr "Registra nel log il piano di esecuzione di tutte le query." + +#: utils/misc/guc.c:938 +msgid "Indents parse and plan tree displays." +msgstr "Indenta gli alberi di parsing e dei piani di esecuzione." + +#: utils/misc/guc.c:947 +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:956 +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:965 +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:974 +msgid "Writes cumulative performance statistics to the server log." +msgstr "Registra nel log del server le statistiche sulle prestazioni cumulative." + +#: utils/misc/guc.c:984 utils/misc/guc.c:1049 utils/misc/guc.c:1059 +#: utils/misc/guc.c:1069 utils/misc/guc.c:1079 utils/misc/guc.c:1804 +#: utils/misc/guc.c:1814 +msgid "No description available." +msgstr "Nessuna descrizione disponibile." + +#: utils/misc/guc.c:996 +msgid "Collects information about executing commands." +msgstr "Raccogli informazioni sull'esecuzione dei comandi." + +#: utils/misc/guc.c:997 +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:1007 +msgid "Collects statistics on database activity." +msgstr "Raccogli statistiche sull'attività del database." + +#: utils/misc/guc.c:1017 +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:1018 +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:1027 +msgid "Starts the autovacuum subprocess." +msgstr "Avvia il sottoprocesso autovacuum." + +#: utils/misc/guc.c:1037 +msgid "Generates debugging output for LISTEN and NOTIFY." +msgstr "Genera un output di debug per LISTEN e NOTIFY." + +#: utils/misc/guc.c:1091 +msgid "Logs long lock waits." +msgstr "Inserisci nel log le attese lunghe su lock." + +#: utils/misc/guc.c:1101 +msgid "Logs the host name in the connection logs." +msgstr "Inserisci nel log lo host name delle connessioni." + +#: utils/misc/guc.c:1102 +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:1113 +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:1122 +msgid "Encrypt passwords." +msgstr "Cripta le password." + +#: utils/misc/guc.c:1123 +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:1133 +msgid "Treats \"expr=NULL\" as \"expr IS NULL\"." +msgstr "Tratta l'espressione \"expr=NULL\" come \"expr IS NULL\"." + +#: utils/misc/guc.c:1134 +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:1146 +msgid "Enables per-database user names." +msgstr "Abilita nomi di utenti diversificati per ogni database." + +#: utils/misc/guc.c:1156 +msgid "This parameter doesn't do anything." +msgstr "Questo parametro non comporta alcuna azione." + +#: utils/misc/guc.c:1157 +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:1166 +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:1175 +msgid "Sets the current transaction's read-only status." +msgstr "Imposta lo stato di sola lettura per la transazione corrente." + +#: utils/misc/guc.c:1185 +msgid "Sets the default deferrable status of new transactions." +msgstr "Imposta lo stato predefinito deferibile per le nuove transazioni." + +#: utils/misc/guc.c:1194 +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:1204 +msgid "Check function bodies during CREATE FUNCTION." +msgstr "Esegui un controllo sulla definizione del corpo durante la CREATE FUNCTION." + +#: utils/misc/guc.c:1213 +msgid "Enable input of NULL elements in arrays." +msgstr "Abilita l'input di elementi NULL negli array." + +#: utils/misc/guc.c:1214 +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:1224 +msgid "Create new tables with OIDs by default." +msgstr "Crea le nuove tabella con gli OID in maniera predefinita." + +#: utils/misc/guc.c:1233 +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:1242 +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:1253 +msgid "Emit information about resource usage in sorting." +msgstr "Genera informazioni sull'uso delle risorse durante gli ordinamenti." + +#: utils/misc/guc.c:1267 +msgid "Generate debugging output for synchronized scanning." +msgstr "Genera output di debug per le scansioni sincronizzate." + +#: utils/misc/guc.c:1282 +msgid "Enable bounded sorting using heap sort." +msgstr "Abilita il bounded sorting usando lo heap sort." + +#: utils/misc/guc.c:1295 +msgid "Emit WAL-related debugging output." +msgstr "Genera output di debug relativo al WAL." + +#: utils/misc/guc.c:1307 +msgid "Datetimes are integer based." +msgstr "I valori di data e tempo sono basati su interi." + +#: utils/misc/guc.c:1322 +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:1332 +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:1342 +msgid "Causes '...' strings to treat backslashes literally." +msgstr "Fa sì che le stringhe '...' trattino i backslash letteralmente." + +#: utils/misc/guc.c:1353 +msgid "Enable synchronized sequential scans." +msgstr "Abilita le scansioni sequenziali sincronizzate." + +#: utils/misc/guc.c:1363 +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:1373 +msgid "Allows connections and queries during recovery." +msgstr "Consente connessioni e query durante il recupero" + +#: utils/misc/guc.c:1383 +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:1393 +msgid "Allows modifications of the structure of system tables." +msgstr "Consente le modifiche alla struttura delle tabelle di sistema." + +#: utils/misc/guc.c:1404 +msgid "Disables reading from system indexes." +msgstr "Disabilita la lettura dagli indici di sistema." + +#: utils/misc/guc.c:1405 +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:1416 +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:1417 +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:1427 +msgid "When generating SQL fragments, quote all identifiers." +msgstr "Quando vengono generati frammenti SQL, metti tra virgolette tutti gli identificatori." + +#: utils/misc/guc.c:1446 +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:1457 +msgid "Waits N seconds on connection startup after authentication." +msgstr "Attendi N secondi all'avvio della connessione dopo l'autenticazione." + +#: utils/misc/guc.c:1458 utils/misc/guc.c:1907 +msgid "This allows attaching a debugger to the process." +msgstr "Ciò consente di agganciare un debugger al processo." + +#: utils/misc/guc.c:1467 +msgid "Sets the default statistics target." +msgstr "Definisce la destinazione delle statistiche di default." + +#: utils/misc/guc.c:1468 +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:1477 +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:1479 +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:1489 +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:1491 +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:1501 +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:1510 +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:1519 +msgid "GEQO: number of individuals in the population." +msgstr "GEQO: numero di individui nella popolazione." + +#: utils/misc/guc.c:1520 utils/misc/guc.c:1529 +msgid "Zero selects a suitable default value." +msgstr "Lo zero selezione un valore ammissibile come default." + +#: utils/misc/guc.c:1528 +msgid "GEQO: number of iterations of the algorithm." +msgstr "GEQO: numero di iterazioni dell'algoritmo." + +#: utils/misc/guc.c:1539 +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:1550 +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:1561 +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:1572 +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:1583 +msgid "Sets the maximum number of concurrent connections." +msgstr "Imposta il numero massimo di connessioni concorrenti." + +#: utils/misc/guc.c:1593 +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:1607 +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:1618 +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:1629 +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:1639 +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:1640 +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:1654 +msgid "Sets the file permissions for log files." +msgstr "Imposta i permessi dei file di log." + +#: utils/misc/guc.c:1655 +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:1668 +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:1669 +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:1681 +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:1682 +msgid "This includes operations such as VACUUM and CREATE INDEX." +msgstr "Queste includono operazioni quali VACUUM e CREATE INDEX." + +#: utils/misc/guc.c:1697 +msgid "Sets the maximum stack depth, in kilobytes." +msgstr "Imposta la profondità massima dello stack, in kilobyte." + +#: utils/misc/guc.c:1708 +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:1718 +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:1728 +msgid "Vacuum cost for a page dirtied by vacuum." +msgstr "Costo del VACUUM per una pagina resa sporca dal VACUUM." + +#: utils/misc/guc.c:1738 +msgid "Vacuum cost amount available before napping." +msgstr "Costo totale del VACUUM prima della pausa." + +#: utils/misc/guc.c:1748 +msgid "Vacuum cost delay in milliseconds." +msgstr "Il costo del VACUUM come ritardo in millisecondi." + +#: utils/misc/guc.c:1759 +msgid "Vacuum cost delay in milliseconds, for autovacuum." +msgstr "Il costo del VACUUM come ritardo in millisecondi, per l'autovacuum." + +#: utils/misc/guc.c:1770 +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:1780 +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:1793 +msgid "Sets the maximum number of simultaneously prepared transactions." +msgstr "Imposta il numero massimo di transazioni preparate contemporanee." + +#: utils/misc/guc.c:1826 +msgid "Sets the maximum allowed duration of any statement." +msgstr "Imposta la durata massima consentita per qualsiasi istruzione." + +#: utils/misc/guc.c:1827 +msgid "A value of 0 turns off the timeout." +msgstr "Il valore 0 disabilita il timeout." + +#: utils/misc/guc.c:1837 +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:1847 +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:1857 +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:1870 +msgid "Sets the maximum number of locks per transaction." +msgstr "Definisce il numero massimo di lock per transazione." + +#: utils/misc/guc.c:1871 +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:1882 +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:1883 +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:1894 +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:1906 +msgid "Waits N seconds on connection startup before authentication." +msgstr "Attendi N secondi all'avvio della connessione prima dell'autenticazione." + +#: utils/misc/guc.c:1917 +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:1927 +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:1937 +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:1948 +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:1950 +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:1962 +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:1973 +msgid "WAL writer sleep time between WAL flushes." +msgstr "Tempo di pausa del WAL writer tra due flush dei WAL." + +#: utils/misc/guc.c:1985 +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:1995 +msgid "WAL sender sleep time between WAL replications." +msgstr "Tempo di pausa del WAL sender tra due repliche WAL." + +#: utils/misc/guc.c:2006 +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:2017 +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:2028 +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:2039 +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:2040 +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:2051 +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:2053 +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:2063 +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:2065 +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:2075 +msgid "Background writer sleep time between rounds." +msgstr "Il tempo di pausa fra due tornate del background writer." + +#: utils/misc/guc.c:2086 +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:2102 +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:2103 +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:2116 +msgid "Automatic log file rotation will occur after N minutes." +msgstr "La rotazione automatica dei log avviene dopo N minuti." + +#: utils/misc/guc.c:2127 +msgid "Automatic log file rotation will occur after N kilobytes." +msgstr "La rotazione automatica dei log avviene dopo N kilobyte." + +#: utils/misc/guc.c:2138 +msgid "Shows the maximum number of function arguments." +msgstr "Mostra il numero massimo di argomenti delle funzioni." + +#: utils/misc/guc.c:2149 +msgid "Shows the maximum number of index keys." +msgstr "Mostra il numero massimo di chiavi degli indici." + +#: utils/misc/guc.c:2160 +msgid "Shows the maximum identifier length." +msgstr "Mostra la lunghezza massima per gli identificatori." + +#: utils/misc/guc.c:2171 +msgid "Shows the size of a disk block." +msgstr "Mostra la dimensione di un blocco su disco." + +#: utils/misc/guc.c:2182 +msgid "Shows the number of pages per disk file." +msgstr "Mostra il numero di pagine per file su disco." + +#: utils/misc/guc.c:2193 +msgid "Shows the block size in the write ahead log." +msgstr "Mostra la dimensione del log di write ahead." + +#: utils/misc/guc.c:2204 +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:2217 +msgid "Time to sleep between autovacuum runs." +msgstr "Tempo di pausa fra due esecuzioni di autovacuum." + +#: utils/misc/guc.c:2227 +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:2236 +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:2246 +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:2257 +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:2267 +msgid "Time between issuing TCP keepalives." +msgstr "Tempo di attesa fra due keepalive TCP." + +#: utils/misc/guc.c:2268 utils/misc/guc.c:2279 +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:2278 +msgid "Time between TCP keepalive retransmits." +msgstr "Tempo che intercorre fra due ritrasmissioni del keepalive TCP." + +#: utils/misc/guc.c:2289 +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:2300 +msgid "Maximum number of TCP keepalive retransmits." +msgstr "Numero massimo di ritrasmissioni del keepalive TCP." + +#: utils/misc/guc.c:2301 +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:2312 +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:2323 +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:2324 +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:2337 +msgid "Shows the server version as an integer." +msgstr "Mostra la versione del server come un intero." + +#: utils/misc/guc.c:2348 +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:2349 +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:2359 +msgid "Sets the size reserved for pg_stat_activity.current_query, in bytes." +msgstr "Imposta la dimensione in byte riservata a pg_stat_activity.current_query." + +#: utils/misc/guc.c:2378 +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:2388 +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:2398 +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:2408 +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:2418 +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:2429 +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:2440 +msgid "GEQO: selective pressure within the population." +msgstr "GEQO: pressione selettiva all'interno della popolazione." + +#: utils/misc/guc.c:2450 +msgid "GEQO: seed for random path selection." +msgstr "GEQO: seme per la selezione casuale dei percorsi." + +#: utils/misc/guc.c:2460 +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:2470 +msgid "Sets the seed for random-number generation." +msgstr "Imposta il seme per la generazione di numeri casuali." + +#: utils/misc/guc.c:2481 +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:2490 +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:2500 +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:2519 +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:2529 +msgid "Sets the client's character set encoding." +msgstr "Imposta la codifica dei caratteri del client." + +#: utils/misc/guc.c:2540 +msgid "Controls information prefixed to each log line." +msgstr "Controlla l'informazione usata come prefisso per ogni riga di log." + +#: utils/misc/guc.c:2541 +msgid "If blank, no prefix is used." +msgstr "Se lasciata vuota non sarà usato alcun prefisso." + +#: utils/misc/guc.c:2550 +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:2560 +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:2561 +msgid "Also controls interpretation of ambiguous date inputs." +msgstr "Controlla anche l'interpretazione di input ambigui per le date." + +#: utils/misc/guc.c:2572 +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:2573 +msgid "An empty string selects the database's default tablespace." +msgstr "Una stringa vuota selezione il tablespace predefinito del database." + +#: utils/misc/guc.c:2583 +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:2594 +msgid "Sets the path for dynamically loadable modules." +msgstr "Definisce il percorso per i moduli caricabili dinamicamente." + +#: utils/misc/guc.c:2595 +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:2608 +msgid "Sets the location of the Kerberos server key file." +msgstr "Imposta la posizione del key file del server Kerberos." + +#: utils/misc/guc.c:2619 +msgid "Sets the name of the Kerberos service." +msgstr "Imposta il nome del servizio Kerberos." + +#: utils/misc/guc.c:2629 +msgid "Sets the Bonjour service name." +msgstr "Imposta il nome del servizio Bonjour." + +#: utils/misc/guc.c:2641 +msgid "Shows the collation order locale." +msgstr "Mostra la localizzazione dell'ordine di collazione." + +#: utils/misc/guc.c:2652 +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:2663 +msgid "Sets the language in which messages are displayed." +msgstr "Mostra la lingua in cui i messaggi sono visualizzati." + +#: utils/misc/guc.c:2673 +msgid "Sets the locale for formatting monetary amounts." +msgstr "Imposta la localizzazione per la formattazione delle quantità monetarie." + +#: utils/misc/guc.c:2683 +msgid "Sets the locale for formatting numbers." +msgstr "Imposta la localizzazione per la formattazione dei numeri." + +#: utils/misc/guc.c:2693 +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:2703 +msgid "Lists shared libraries to preload into server." +msgstr "Imposta la lista delle librerie condivise da precaricare nel server." + +#: utils/misc/guc.c:2714 +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:2725 +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:2737 +msgid "Sets the server (database) character set encoding." +msgstr "Imposta la codifica del set di caratteri per il server (database)." + +#: utils/misc/guc.c:2749 +msgid "Shows the server version." +msgstr "Mostra la versione del server." + +#: utils/misc/guc.c:2761 +msgid "Sets the current role." +msgstr "Mostra il ruolo corrente." + +#: utils/misc/guc.c:2773 +msgid "Sets the session user name." +msgstr "Mostra il nome dell'utente della sessione." + +#: utils/misc/guc.c:2784 +msgid "Sets the destination for server log output." +msgstr "Imposta la destinazione per l'output dei log del server." + +#: utils/misc/guc.c:2785 +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:2796 +msgid "Sets the destination directory for log files." +msgstr "Imposta la directory di destinazione dei file di log." + +#: utils/misc/guc.c:2797 +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:2807 +msgid "Sets the file name pattern for log files." +msgstr "Imposta il pattern dei nomi dei file di log." + +#: utils/misc/guc.c:2818 +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:2829 +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:2839 +msgid "Selects a file of time zone abbreviations." +msgstr "Seleziona un file contenente le abbreviazioni dei fusi orari." + +#: utils/misc/guc.c:2849 +msgid "Sets the current transaction's isolation level." +msgstr "Imposta il livello di isolamento per la transazione in corso." + +#: utils/misc/guc.c:2860 +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:2861 +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:2871 +msgid "Sets the directory where the Unix-domain socket will be created." +msgstr "Imposta la directory dove verranno creati i socket di dominio Unix." + +#: utils/misc/guc.c:2882 +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:2893 +msgid "Sets the list of known custom variable classes." +msgstr "Imposta la lista delle variabili di classe conosciute." + +#: utils/misc/guc.c:2904 +msgid "Sets the server's data directory." +msgstr "Imposta la posizione della directory dati" + +#: utils/misc/guc.c:2915 +msgid "Sets the server's main configuration file." +msgstr "Imposta il file primario di configurazione del server." + +#: utils/misc/guc.c:2926 +msgid "Sets the server's \"hba\" configuration file." +msgstr "Imposta il file di configurazione \"hba\" del server." + +#: utils/misc/guc.c:2937 +msgid "Sets the server's \"ident\" configuration file." +msgstr "Imposta il file di configurazione \"ident\" del server." + +#: utils/misc/guc.c:2948 +msgid "Writes the postmaster PID to the specified file." +msgstr "Scrivi il PID del postmaster nel file specificato." + +#: utils/misc/guc.c:2959 +msgid "Writes temporary statistics files to the specified directory." +msgstr "Scrive i file di statistiche temporanee nella directory specificata." + +#: utils/misc/guc.c:2970 +msgid "List of names of potential synchronous standbys." +msgstr "Elenco dei nomi dei potenziali standby sincroni." + +#: utils/misc/guc.c:2981 +msgid "Sets default text search configuration." +msgstr "Imposta la configurazione di ricerca di testo predefinita." + +#: utils/misc/guc.c:2991 +msgid "Sets the list of allowed SSL ciphers." +msgstr "Imposta la lista di codici SSL consentiti." + +#: utils/misc/guc.c:3006 +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:3026 +msgid "Sets whether \"\\'\" is allowed in string literals." +msgstr "Imposta se \"\\'\" è consentito nei letterali stringa." + +#: utils/misc/guc.c:3036 +msgid "Sets the output format for bytea." +msgstr "Imposta il formato di output di bytea." + +#: utils/misc/guc.c:3046 +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:3047 utils/misc/guc.c:3100 utils/misc/guc.c:3111 +#: utils/misc/guc.c:3167 +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:3057 +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:3058 +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:3068 +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:3078 +msgid "Sets the display format for interval values." +msgstr "Imposta il formato di visualizzazione per intervalli." + +#: utils/misc/guc.c:3089 +msgid "Sets the verbosity of logged messages." +msgstr "Imposta la prolissità dei messaggi registrati." + +#: utils/misc/guc.c:3099 +msgid "Sets the message levels that are logged." +msgstr "Imposta i livelli dei messaggi registrati." + +#: utils/misc/guc.c:3110 +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:3121 +msgid "Sets the type of statements logged." +msgstr "Imposta il tipo di istruzioni registrato nel log." + +#: utils/misc/guc.c:3131 +msgid "Sets the syslog \"facility\" to be used when syslog enabled." +msgstr "Imposta la \"facility\" da usare quando syslog è abilitato." + +#: utils/misc/guc.c:3146 +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:3156 +msgid "Sets the current transaction's synchronization level." +msgstr "Imposta il livello di sincronizzazione della transazione corrente." + +#: utils/misc/guc.c:3166 +msgid "Enables logging of recovery-related debugging information." +msgstr "Abilita il logging di informazioni di debug relative al recupero." + +#: utils/misc/guc.c:3182 +msgid "Collects function-level statistics on database activity." +msgstr "Raccogli statistiche al livello di funzioni sull'attività del database." + +#: utils/misc/guc.c:3192 +msgid "Set the level of information written to the WAL." +msgstr "Imposta il livello delle informazioni scritte nel WAL." + +#: utils/misc/guc.c:3202 +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:3212 +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:3222 +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:4064 +#, 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 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:4083 +#, 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:4103 +#, 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 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:4134 +#, 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 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:4157 +#, 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 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:4739 utils/misc/guc.c:4903 +msgid "Value exceeds integer range." +msgstr "Il valore non rientra nel limite possibile per gli interi." + +#: utils/misc/guc.c:4758 +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:4817 +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:5100 utils/misc/guc.c:5869 utils/misc/guc.c:5921 +#: utils/misc/guc.c:6594 utils/misc/guc.c:6753 utils/misc/guc.c:7932 +#: guc-file.l:203 +#, c-format +msgid "unrecognized configuration parameter \"%s\"" +msgstr "parametro di configurazione \"%s\" sconosciuto" + +#: utils/misc/guc.c:5133 +#, c-format +msgid "parameter \"%s\" cannot be changed" +msgstr "il parametro \"%s\" non può essere cambiato" + +#: utils/misc/guc.c:5162 utils/misc/guc.c:5336 utils/misc/guc.c:5433 +#: utils/misc/guc.c:5527 utils/misc/guc.c:5641 utils/misc/guc.c:5742 +#: guc-file.l:250 +#, 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:5172 +#, c-format +msgid "parameter \"%s\" cannot be changed now" +msgstr "il parametro \"%s\" non può essere cambiato ora" + +#: utils/misc/guc.c:5203 +#, 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:5213 utils/misc/guc.c:7947 +#, c-format +msgid "permission denied to set parameter \"%s\"" +msgstr "permesso di impostare il parametro \"%s\" negato" + +#: utils/misc/guc.c:5251 +#, c-format +msgid "cannot set parameter \"%s\" within security-definer function" +msgstr "il parametro \"%s\" non può essere impostato da una funzione che ha i privilegi del creatore" + +#: utils/misc/guc.c:5259 utils/init/miscinit.c:381 +#, c-format +msgid "cannot set parameter \"%s\" within security-restricted operation" +msgstr "non è possibile impostare il parametro \"%s\" nell'ambito di operazioni a sicurezza ristretta" + +#: utils/misc/guc.c:5309 access/transam/xlog.c:5338 access/transam/xlog.c:5429 +#: access/transam/xlog.c:5440 commands/extension.c:527 +#: commands/extension.c:535 +#, c-format +msgid "parameter \"%s\" requires a Boolean value" +msgstr "il parametro \"%s\" richiede un valore booleano" + +#: utils/misc/guc.c:5397 utils/misc/guc.c:5711 utils/misc/guc.c:8111 +#: utils/misc/guc.c:8145 +#, c-format +msgid "invalid value for parameter \"%s\": \"%s\"" +msgstr "valore non valido per il parametro \"%s\": \"%s\"" + +#: utils/misc/guc.c:5399 utils/misc/guc.c:5713 utils/misc/guc.c:8014 +#: utils/misc/guc.c:8048 utils/misc/guc.c:8082 utils/misc/guc.c:8116 +#: utils/misc/guc.c:8151 commands/tablecmds.c:693 commands/user.c:957 +#: storage/lmgr/proc.c:1077 storage/lmgr/deadlock.c:951 +#: catalog/objectaddress.c:315 catalog/dependency.c:937 +#: catalog/dependency.c:938 catalog/dependency.c:944 catalog/dependency.c:945 +#: catalog/dependency.c:956 catalog/dependency.c:957 port/win32/security.c:51 +#, c-format +msgid "%s" +msgstr "%s" + +#: utils/misc/guc.c:5406 +#, 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:5492 +#, c-format +msgid "parameter \"%s\" requires a numeric value" +msgstr "il parametro \"%s\" richiede un valore numerico" + +#: utils/misc/guc.c:5500 +#, 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:5877 utils/misc/guc.c:5925 utils/misc/guc.c:6757 +#, c-format +msgid "must be superuser to examine \"%s\"" +msgstr "solo un superutente può esaminare \"%s\"" + +#: utils/misc/guc.c:5991 +#, c-format +msgid "SET %s takes only one argument" +msgstr "SET %s accetta un unico argomento" + +#: utils/misc/guc.c:6224 +msgid "SET requires parameter name" +msgstr "SET richiede il nome del parametro" + +#: utils/misc/guc.c:6339 +#, c-format +msgid "attempt to redefine parameter \"%s\"" +msgstr "tentativo di ridefinire il parametro \"%s\"" + +#: utils/misc/guc.c:7527 utils/init/miscinit.c:1055 +#, c-format +msgid "could not read from file \"%s\": %m" +msgstr "lettura dal file \"%s\" fallita: %m" + +#: utils/misc/guc.c:7648 +#, c-format +msgid "could not parse setting for parameter \"%s\"" +msgstr "non è stato possibile interpretare l'impostazione del parametro \"%s\"" + +#: utils/misc/guc.c:8009 utils/misc/guc.c:8043 +#, c-format +msgid "invalid value for parameter \"%s\": %d" +msgstr "valore non valido per il parametro \"%s\": %d" + +#: utils/misc/guc.c:8077 +#, c-format +msgid "invalid value for parameter \"%s\": %g" +msgstr "valore non valido per il parametro \"%s\": %g" + +#: utils/misc/guc.c:8181 commands/variable.c:59 commands/tablespace.c:1167 +#: replication/syncrep.c:661 catalog/namespace.c:3559 +msgid "List syntax is invalid." +msgstr "La sintassi della lista non è valida." + +#: utils/misc/guc.c:8205 commands/variable.c:160 +#, c-format +msgid "Unrecognized key word: \"%s\"." +msgstr "Parola chiave non riconosciuta: \"%s\"." + +#: utils/misc/guc.c:8267 +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:8279 +msgid "SET AUTOCOMMIT TO OFF is no longer supported" +msgstr "SET AUTOCOMMIT TO OFF non è più supportato" + +#: utils/misc/guc.c:8354 +msgid "assertion checking is not supported by this build" +msgstr "il controllo delle asserzioni non è supportato in questo binario" + +#: utils/misc/guc.c:8367 +msgid "Bonjour is not supported by this build" +msgstr "Bonjour non è supportato in questo binario" + +#: utils/misc/guc.c:8380 +msgid "SSL is not supported by this build" +msgstr "SSL non è supportato in questo binario" + +#: utils/misc/guc.c:8392 +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:8404 +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." + +#: guc-file.l:274 +#, 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:333 +#, c-format +msgid "parameter \"%s\" changed to \"%s\"" +msgstr "il parametro \"%s\" è stato modificato a \"%s\"" + +#: guc-file.l:374 +#, 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:409 libpq/hba.c:1683 +#, c-format +msgid "could not open configuration file \"%s\": %m" +msgstr "apertura del file di configurazione \"%s\" fallita: %m" + +#: guc-file.l:589 +#, 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:594 +#, 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\"" + +#: 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 "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 +#, 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 +#, 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 +#, 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 +#, 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 +#, 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 +#, 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 +#, 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 +#, c-format +msgid "invalid time zone file name \"%s\"" +msgstr "nome del file di fusi orari non valido: \"%s\"" + +#: utils/misc/tzparser.c:298 +#, 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 +#, 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 +#, 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 +#, 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/init/miscinit.c:115 +#, c-format +msgid "could not change directory to \"%s\": %m" +msgstr "spostamento nella directory \"%s\" fallito: %m" + +#: utils/init/miscinit.c:432 utils/adt/acl.c:4822 commands/variable.c:893 +#: commands/variable.c:965 commands/user.c:623 commands/user.c:825 +#: commands/user.c:905 commands/user.c:1056 +#, c-format +msgid "role \"%s\" does not exist" +msgstr "il ruolo \"%s\" non esiste" + +#: utils/init/miscinit.c:460 +#, c-format +msgid "role \"%s\" is not permitted to log in" +msgstr "al ruolo \"%s\" non è consentito effettuare il login" + +#: utils/init/miscinit.c:478 +#, c-format +msgid "too many connections for role \"%s\"" +msgstr "troppe connessioni per il ruolo \"%s\"" + +#: utils/init/miscinit.c:538 +msgid "permission denied to set session authorization" +msgstr "permesso di impostare l'autorizzazione della sessione negato" + +#: utils/init/miscinit.c:618 +#, c-format +msgid "invalid role OID: %u" +msgstr "OID del ruolo non valido: %u" + +#: utils/init/miscinit.c:750 +#, c-format +msgid "could not create lock file \"%s\": %m" +msgstr "creazione del file di lock \"%s\" fallita: %m" + +#: utils/init/miscinit.c:764 +#, c-format +msgid "could not open lock file \"%s\": %m" +msgstr "apertura del file di lock \"%s\" fallita: %m" + +#: utils/init/miscinit.c:770 +#, c-format +msgid "could not read lock file \"%s\": %m" +msgstr "lettura dal file di lock \"%s\" fallita: %m" + +#: utils/init/miscinit.c:818 +#, c-format +msgid "lock file \"%s\" already exists" +msgstr "il file di lock \"%s\" esiste già" + +#: utils/init/miscinit.c:822 +#, 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:824 +#, 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:827 +#, 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:829 +#, 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:865 +#, 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: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 "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:884 +#, 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:886 +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:927 utils/init/miscinit.c:938 +#: utils/init/miscinit.c:948 +#, c-format +msgid "could not write lock file \"%s\": %m" +msgstr "scrittura del file di lock \"%s\" fallita: %m" + +#: utils/init/miscinit.c:1046 utils/init/miscinit.c:1161 +#: utils/error/elog.c:1537 access/transam/xlog.c:2515 +#: access/transam/xlog.c:4232 access/transam/xlog.c:4326 +#: access/transam/xlog.c:4482 replication/basebackup.c:895 +#: storage/file/copydir.c:165 storage/file/copydir.c:255 storage/smgr/md.c:553 +#: storage/smgr/md.c:810 +#, c-format +msgid "could not open file \"%s\": %m" +msgstr "apertura del file \"%s\" fallita: %m" + +#: utils/init/miscinit.c:1155 utils/init/miscinit.c:1168 +#, c-format +msgid "\"%s\" is not a valid data directory" +msgstr "\"%s\" non è una directory di dati valida" + +#: utils/init/miscinit.c:1157 +#, c-format +msgid "File \"%s\" is missing." +msgstr "Il file \"%s\" è mancante." + +#: utils/init/miscinit.c:1170 +#, c-format +msgid "File \"%s\" does not contain valid data." +msgstr "Il file \"%s\" non contiene dati validi." + +#: utils/init/miscinit.c:1172 +msgid "You might need to initdb." +msgstr "Potrebbe essere necessario eseguire initdb." + +#: utils/init/miscinit.c:1179 access/transam/xlog.c:4754 +#: access/transam/xlog.c:4763 access/transam/xlog.c:4787 +#: access/transam/xlog.c:4794 access/transam/xlog.c:4801 +#: access/transam/xlog.c:4806 access/transam/xlog.c:4813 +#: access/transam/xlog.c:4820 access/transam/xlog.c:4827 +#: access/transam/xlog.c:4834 access/transam/xlog.c:4841 +#: access/transam/xlog.c:4848 access/transam/xlog.c:4857 +#: access/transam/xlog.c:4864 access/transam/xlog.c:4873 +#: access/transam/xlog.c:4880 access/transam/xlog.c:4889 +#: access/transam/xlog.c:4896 +msgid "database files are incompatible with server" +msgstr "i file del database sono incompatibili col server" + +#: utils/init/miscinit.c:1180 +#, 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:1228 +#, c-format +msgid "invalid list syntax in parameter \"%s\"" +msgstr "sintassi di lista non valida nel parametro \"%s\"" + +#: utils/init/miscinit.c:1265 +#, c-format +msgid "loaded library \"%s\"" +msgstr "libreria \"%s\" caricata" + +#: utils/init/postinit.c:225 +#, c-format +msgid "replication connection authorized: user=%s" +msgstr "connessione di replica autorizzata: utente=%s" + +#: utils/init/postinit.c:229 +#, c-format +msgid "connection authorized: user=%s database=%s" +msgstr "connessione autorizzata: utente=%s database=%s" + +#: utils/init/postinit.c:260 +#, c-format +msgid "database \"%s\" has disappeared from pg_database" +msgstr "il database \"%s\" è scomparso da database pg_database" + +#: utils/init/postinit.c:262 +#, 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:282 +#, c-format +msgid "database \"%s\" is not currently accepting connections" +msgstr "il database \"%s\" attualmente non accetta connessioni" + +#: utils/init/postinit.c:295 +#, c-format +msgid "permission denied for database \"%s\"" +msgstr "permesso negato per il database \"%s\"" + +#: utils/init/postinit.c:296 +msgid "User does not have CONNECT privilege." +msgstr "L'utente non ha il privilegio CONNECT." + +#: utils/init/postinit.c:313 +#, c-format +msgid "too many connections for database \"%s\"" +msgstr "troppe connessioni al database \"%s\"" + +#: utils/init/postinit.c:335 utils/init/postinit.c:342 +msgid "database locale is incompatible with operating system" +msgstr "il locale del database è incompatibile col sistema operativo" + +#: utils/init/postinit.c:336 +#, 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:338 utils/init/postinit.c:345 +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:343 +#, 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:608 +msgid "no roles are defined in this database system" +msgstr "nessun ruolo definito in questo database" + +#: utils/init/postinit.c:609 +#, c-format +msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;." +msgstr "Dovresti eseguire immediatamente CREATE USER \"%s\" SUPERUSER;." + +#: utils/init/postinit.c:632 +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:636 +msgid "must be superuser to connect during database shutdown" +msgstr "solo un superutente può connettersi durante lo spegnimento del database" + +#: utils/init/postinit.c:646 +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:660 +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:675 +msgid "must be replication role to start walsender" +msgstr "solo il ruolo di replica può avviare walsender" + +#: utils/init/postinit.c:718 utils/init/postinit.c:786 +#: utils/init/postinit.c:803 commands/dbcommands.c:791 +#: commands/dbcommands.c:936 commands/dbcommands.c:1035 +#: commands/dbcommands.c:1208 commands/dbcommands.c:1393 +#: commands/dbcommands.c:1478 commands/dbcommands.c:1905 commands/comment.c:60 +#, c-format +msgid "database \"%s\" does not exist" +msgstr "il database \"%s\" non esiste" + +#: utils/init/postinit.c:735 +#, c-format +msgid "database %u does not exist" +msgstr "il database %u non esiste" + +#: utils/init/postinit.c:787 +msgid "It seems to have just been dropped or renamed." +msgstr "Sembra sia stato appena eliminato o rinominato." + +#: utils/init/postinit.c:805 +#, c-format +msgid "The database subdirectory \"%s\" is missing." +msgstr "La sottodirectory del database \"%s\" risulta mancante." + +#: utils/init/postinit.c:810 +#, c-format +msgid "could not access directory \"%s\": %m" +msgstr "accesso alla directory \"%s\" fallito: %m" + +#: utils/error/elog.c:311 utils/error/elog.c:1156 +#, 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:1547 +#, c-format +msgid "could not reopen file \"%s\" as stderr: %m" +msgstr "riapertura del file \"%s\" come stderr fallita: %m" + +#: utils/error/elog.c:1560 +#, c-format +msgid "could not reopen file \"%s\" as stdout: %m" +msgstr "riapertura del file \"%s\" come stdout fallita: %m" + +#: utils/error/elog.c:1950 utils/error/elog.c:1960 utils/error/elog.c:1970 +msgid "[unknown]" +msgstr "[sconosciuto]" + +#: utils/error/elog.c:2321 utils/error/elog.c:2601 utils/error/elog.c:2679 +msgid "missing error text" +msgstr "testo dell'errore mancante" + +#: utils/error/elog.c:2324 utils/error/elog.c:2327 utils/error/elog.c:2682 +#: utils/error/elog.c:2685 +#, c-format +msgid " at character %d" +msgstr " al carattere %d" + +#: utils/error/elog.c:2337 utils/error/elog.c:2344 +msgid "DETAIL: " +msgstr "DETTAGLI: " + +#: utils/error/elog.c:2351 +msgid "HINT: " +msgstr "SUGGERIMENTO: " + +#: utils/error/elog.c:2358 +msgid "QUERY: " +msgstr "QUERY: " + +#: utils/error/elog.c:2365 +msgid "CONTEXT: " +msgstr "CONTESTO: " + +#: utils/error/elog.c:2375 +#, c-format +msgid "LOCATION: %s, %s:%d\n" +msgstr "POSIZIONE: %s, %s:%d\n" + +#: utils/error/elog.c:2382 +#, c-format +msgid "LOCATION: %s:%d\n" +msgstr "POSIZIONE: %s:%d\n" + +#: utils/error/elog.c:2396 +msgid "STATEMENT: " +msgstr "ISTRUZIONE: " + +#. translator: This string will be truncated at 47 +#. characters expanded. +#: utils/error/elog.c:2800 +#, c-format +msgid "operating system error %d" +msgstr "errore del sistema operativo %d" + +#: utils/error/elog.c:2995 +msgid "DEBUG" +msgstr "DEBUG" + +#: utils/error/elog.c:2999 +msgid "LOG" +msgstr "LOG" + +#: utils/error/elog.c:3002 +msgid "INFO" +msgstr "INFO" + +#: utils/error/elog.c:3005 +msgid "NOTICE" +msgstr "NOTIFICA" + +#: utils/error/elog.c:3008 +msgid "WARNING" +msgstr "ATTENZIONE" + +#: utils/error/elog.c:3011 +msgid "ERROR" +msgstr "ERRORE" + +#: utils/error/elog.c:3014 +msgid "FATAL" +msgstr "FATALE" + +#: utils/error/elog.c:3017 +msgid "PANIC" +msgstr "PANICO" + +#: utils/error/assert.c:37 +msgid "TRAP: ExceptionalCondition: bad arguments\n" +msgstr "TRAP: ExceptionalCondition: argomenti non corretti\n" + +#: utils/error/assert.c:40 +#, c-format +msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n" +msgstr "TRAP: %s(\"%s\", File: \"%s\", Linea: %d)\n" + +#: utils/sort/tuplesort.c:3131 +#, c-format +msgid "could not create unique index \"%s\"" +msgstr "creazione dell'indice univoco \"%s\" fallita" + +#: utils/sort/tuplesort.c:3133 +#, c-format +msgid "Key %s is duplicated." +msgstr "La chiave %s è duplicata." + +#: utils/sort/logtape.c:213 +#, c-format +msgid "could not write block %ld of temporary file: %m" +msgstr "scrittura del blocco %ld del file temporaneo fallita: %m" + +#: utils/sort/logtape.c:215 +msgid "Perhaps out of disk space?" +msgstr "Possibile che lo spazio su disco sia esaurito?" + +#: utils/sort/logtape.c:232 +#, c-format +msgid "could not read block %ld of temporary file: %m" +msgstr "lettura del blocco %ld dal file temporaneo fallita: %m" + +#: utils/fmgr/fmgr.c:271 +#, 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 +#, 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 +#, 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/dfmgr.c:125 +#, c-format +msgid "could not find function \"%s\" in file \"%s\"" +msgstr "funzione \"%s\" non trovata nel 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 "accesso al file \"%s\" fallito: %m" + +#: utils/fmgr/dfmgr.c:242 +#, c-format +msgid "could not load library \"%s\": %s" +msgstr "caricamento della libreria \"%s\" fallito: %s" + +#: utils/fmgr/dfmgr.c:274 +#, c-format +msgid "incompatible library \"%s\": missing magic block" +msgstr "libreria \"%s\" incompatibile: manca il magic block" + +#: utils/fmgr/dfmgr.c:276 +msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro." +msgstr "Le librerie di estensione devono usare la macro PG_MODULE_MAGIC." + +#: utils/fmgr/dfmgr.c:312 +#, c-format +msgid "incompatible library \"%s\": version mismatch" +msgstr "libreria incompatibile \"%s\": versione non corrispondente" + +#: utils/fmgr/dfmgr.c:314 +#, c-format +msgid "Server is version %d.%d, library is version %d.%d." +msgstr "Il server ha versione %d.%d, la libreria versione %d.%d." + +#: utils/fmgr/dfmgr.c:333 +#, c-format +msgid "Server has FUNC_MAX_ARGS = %d, library has %d." +msgstr "Il server ha FUNC_MAX_ARGS = %d, la libreria ha %d." + +#: utils/fmgr/dfmgr.c:342 +#, c-format +msgid "Server has INDEX_MAX_KEYS = %d, library has %d." +msgstr "Il server ha INDEX_MAX_KEYS = %d, la libreria ha %d." + +#: utils/fmgr/dfmgr.c:351 +#, c-format +msgid "Server has NAMEDATALEN = %d, library has %d." +msgstr "Il server ha NAMEDATALEN = %d, la libreria %d." + +#: utils/fmgr/dfmgr.c:360 +#, c-format +msgid "Server has FLOAT4PASSBYVAL = %s, library has %s." +msgstr "Il server ha FLOAT4PASSBYVAL = %s, la libreria %s." + +#: utils/fmgr/dfmgr.c:369 +#, c-format +msgid "Server has FLOAT8PASSBYVAL = %s, library has %s." +msgstr "Il server ha FLOAT8PASSBYVAL = %s, la libreria %s." + +#: utils/fmgr/dfmgr.c:376 +msgid "Magic block has unexpected length or padding difference." +msgstr "Il magic block ha una lunghezza imprevista o una differenza di allineamento." + +#: utils/fmgr/dfmgr.c:379 +#, c-format +msgid "incompatible library \"%s\": magic block mismatch" +msgstr "la libreria \"%s\" non è compatibile: magic block non corrispondente" + +#: utils/fmgr/dfmgr.c:545 +#, c-format +msgid "access to library \"%s\" is not allowed" +msgstr "l'accesso alla libreria \"%s\" non è consentito" + +#: utils/fmgr/dfmgr.c:572 +#, 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 +msgid "zero-length component in parameter \"dynamic_library_path\"" +msgstr "componente di lunghezza zero nel parametro \"dynamic_library_path\"" + +#: utils/fmgr/dfmgr.c:636 +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/funcapi.c:60 utils/mmgr/portalmem.c:985 commands/prepare.c:751 +#: commands/extension.c:1711 commands/extension.c:1820 +#: commands/extension.c:2013 foreign/foreign.c:350 executor/functions.c:785 +#: executor/execQual.c:1704 executor/execQual.c:1729 executor/execQual.c:2089 +#: executor/execQual.c:5242 replication/walsender.c:1421 +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" + +#: utils/fmgr/funcapi.c:354 +#, 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:1208 utils/fmgr/funcapi.c:1239 +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:1233 +msgid "no column alias was provided" +msgstr "non è stato fornito nessun alias colonna" + +#: utils/fmgr/funcapi.c:1257 +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" + +#: 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 di codifica %d non previsto per il set di caratteri 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 di codifica %d non previsto per il set di caratteri WIN" + +#: utils/mb/conv.c:509 +#, c-format +msgid "invalid encoding number: %d" +msgstr "il numero di codifica non è valido: %d" + +#: utils/mb/encnames.c:485 +msgid "encoding name too long" +msgstr "il nome della codifica è troppo lungo" + +#: utils/mb/mbutils.c:281 +#, 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 +#, 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 +#, 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 +#, c-format +msgid "invalid source encoding name \"%s\"" +msgstr "il nome della codifica di origine \"%s\" non è valido" + +#: utils/mb/mbutils.c:467 +#, c-format +msgid "invalid destination encoding name \"%s\"" +msgstr "il nome della codifica di destinazione \"%s\" non è valido" + +#: utils/mb/mbutils.c:515 utils/adt/xml.c:159 +#, c-format +msgid "invalid encoding name \"%s\"" +msgstr "nome di codifica non valido \"%s\"" + +#: utils/mb/mbutils.c:589 +#, 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:1777 +#, c-format +msgid "invalid byte sequence for encoding \"%s\": 0x%s" +msgstr "sequenza di byte non valida per la codifica \"%s\": 0x%s" + +#: utils/mb/wchar.c:1806 +#, c-format +msgid "character 0x%s of encoding \"%s\" has no equivalent in \"%s\"" +msgstr "il carattere con sequenza di byte 0x%s nella codifica \"%s\" non ha un equivalente nella codifica \"%s\"" + +#: utils/mmgr/aset.c:417 +#, 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 +#, c-format +msgid "Failed on request of size %lu." +msgstr "Errore nella richiesta della dimensione %lu." + +#: utils/mmgr/portalmem.c:207 +#, c-format +msgid "cursor \"%s\" already exists" +msgstr "il cursore \"%s\" esiste già" + +#: utils/mmgr/portalmem.c:211 +#, c-format +msgid "closing existing cursor \"%s\"" +msgstr "chiusura del cursore esistente \"%s\"" + +#: utils/mmgr/portalmem.c:478 +#, c-format +msgid "cannot drop active portal \"%s\"" +msgstr "non è possibile eliminare il portale attivo \"%s\"" + +#: utils/mmgr/portalmem.c:668 +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/mmgr/portalmem.c:989 commands/prepare.c:755 commands/extension.c:1715 +#: commands/extension.c:1824 commands/extension.c:2017 foreign/foreign.c:355 +#: replication/walsender.c:1425 +msgid "materialize mode required, but it is not allowed in this context" +msgstr "necessaria modalità materializzata, ma non ammessa in questo contesto" + +#: utils/adt/windowfuncs.c:243 +msgid "argument of ntile must be greater than zero" +msgstr "l'argomento della funzione ntile deve essere maggiore di zero" + +#: utils/adt/windowfuncs.c:465 +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:138 +msgid "unsupported XML feature" +msgstr "caratteristica XML non supportata" + +#: utils/adt/xml.c:139 +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:140 +msgid "You need to rebuild PostgreSQL using --with-libxml." +msgstr "Occorre configurare PostgreSQL con l'opzione --with-libxml e ricompilarlo." + +#: utils/adt/xml.c:405 utils/adt/xml.c:410 +msgid "invalid XML comment" +msgstr "commento XML non valido" + +#: utils/adt/xml.c:539 +msgid "not an XML document" +msgstr "non è un documento XML" + +#: utils/adt/xml.c:692 utils/adt/xml.c:715 +msgid "invalid XML processing instruction" +msgstr "istruzione di elaborazione XML non valida" + +#: utils/adt/xml.c:693 +#, 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:716 +msgid "XML processing instruction cannot contain \"?>\"." +msgstr "Un'istruzione di elaborazione XML non può contenere \"?>\"." + +#: utils/adt/xml.c:795 +msgid "xmlvalidate is not implemented" +msgstr "la funzione xmlvalidate non è implementata" + +#: utils/adt/xml.c:880 +msgid "could not initialize XML library" +msgstr "inizializzazione della libreria XML fallita" + +#: utils/adt/xml.c:881 +#, 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:1448 +msgid "Invalid character value." +msgstr "Valore di carattere non valido." + +#: utils/adt/xml.c:1451 +msgid "Space required." +msgstr "È necessario uno spazio." + +#: utils/adt/xml.c:1454 +msgid "standalone accepts only 'yes' or 'no'." +msgstr "Solo 'yes' o 'no' sono accettati da standalone." + +#: utils/adt/xml.c:1457 +msgid "Malformed declaration: missing version." +msgstr "La dichiarazione non è definita correttamente: manca la versione." + +#: utils/adt/xml.c:1460 +msgid "Missing encoding in text declaration." +msgstr "Manca la codifica nella dichiarazione del testo." + +#: utils/adt/xml.c:1463 +msgid "Parsing XML declaration: '?>' expected." +msgstr "Durante l'analisi XML è stato riscontrato che manca '?>'." + +#: utils/adt/xml.c:1466 +#, c-format +msgid "Unrecognized libxml error code: %d." +msgstr "Codice di errore di libxml sconosciuto: %d." + +#: utils/adt/xml.c:1717 utils/adt/date.c:217 +msgid "date out of range" +msgstr "data fuori dall'intervallo consentito" + +#: utils/adt/xml.c:1718 +msgid "XML does not support infinite date values." +msgstr "XML non supporta i valori infiniti per il tipo date." + +#: utils/adt/xml.c:1740 utils/adt/xml.c:1747 utils/adt/xml.c:1767 +#: utils/adt/xml.c:1774 utils/adt/timestamp.c:226 utils/adt/timestamp.c:269 +#: utils/adt/timestamp.c:491 utils/adt/timestamp.c:531 +#: utils/adt/timestamp.c:2531 utils/adt/timestamp.c:2552 +#: utils/adt/timestamp.c:2565 utils/adt/timestamp.c:2574 +#: utils/adt/timestamp.c:2632 utils/adt/timestamp.c:2655 +#: utils/adt/timestamp.c:2668 utils/adt/timestamp.c:2679 +#: utils/adt/timestamp.c:3115 utils/adt/timestamp.c:3245 +#: utils/adt/timestamp.c:3286 utils/adt/timestamp.c:3374 +#: utils/adt/timestamp.c:3421 utils/adt/timestamp.c:3532 +#: utils/adt/timestamp.c:3845 utils/adt/timestamp.c:3982 +#: utils/adt/timestamp.c:3989 utils/adt/timestamp.c:4003 +#: utils/adt/timestamp.c:4013 utils/adt/timestamp.c:4076 +#: utils/adt/timestamp.c:4216 utils/adt/timestamp.c:4226 +#: utils/adt/timestamp.c:4441 utils/adt/timestamp.c:4520 +#: utils/adt/timestamp.c:4527 utils/adt/timestamp.c:4554 +#: utils/adt/timestamp.c:4558 utils/adt/timestamp.c:4615 +#: utils/adt/formatting.c:3247 utils/adt/formatting.c:3279 +#: utils/adt/formatting.c:3347 utils/adt/date.c:913 utils/adt/date.c:960 +#: utils/adt/date.c:1516 utils/adt/date.c:1553 utils/adt/date.c:2426 +#: utils/adt/nabstime.c:480 utils/adt/nabstime.c:523 utils/adt/nabstime.c:553 +#: utils/adt/nabstime.c:596 +msgid "timestamp out of range" +msgstr "timestamp fuori dall'intervallo consentito" + +#: utils/adt/xml.c:1741 utils/adt/xml.c:1768 +msgid "XML does not support infinite timestamp values." +msgstr "XML non supporta i valori infiniti per il tipo timestamp." + +#: utils/adt/xml.c:2074 utils/adt/xml.c:2238 commands/portalcmds.c:168 +#: commands/portalcmds.c:222 executor/execCurrent.c:66 +#, c-format +msgid "cursor \"%s\" does not exist" +msgstr "il cursore \"%s\" non esiste" + +#: utils/adt/xml.c:2153 +msgid "invalid query" +msgstr "query non valida" + +#: utils/adt/xml.c:3377 +msgid "invalid array for XML namespace mapping" +msgstr "l'array per il mapping del namespace XML non è valido" + +#: utils/adt/xml.c:3378 +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:3402 +msgid "empty XPath expression" +msgstr "l'espressione XPath è vuota" + +#: utils/adt/xml.c:3450 +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:3457 +#, 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/adt/regexp.c:194 tsearch/spell.c:439 +#, c-format +msgid "invalid regular expression: %s" +msgstr "espressione regolare non valida: %s" + +#: utils/adt/regexp.c:274 utils/adt/regexp.c:1222 utils/adt/varlena.c:2860 +#, c-format +msgid "regular expression failed: %s" +msgstr "l'espressione regolare %s è fallita" + +#: utils/adt/regexp.c:411 +#, c-format +msgid "invalid regexp option: \"%c\"" +msgstr "l'opzione regexp \"%c\" non è valida" + +#: utils/adt/regexp.c:683 utils/adt/like_match.c:289 +msgid "invalid escape string" +msgstr "la stringa di escape non è valida" + +#: utils/adt/regexp.c:684 utils/adt/like_match.c:290 +msgid "Escape string must be empty or one character." +msgstr "La stringa di escape deve essere vuota o contenere un solo carattere." + +#: utils/adt/regexp.c:883 +msgid "regexp_split does not support the global option" +msgstr "l'opzione global (g) non è supportata per regexp_split" + +#: utils/adt/datum.c:80 utils/adt/datum.c:92 +msgid "invalid Datum pointer" +msgstr "puntatore al Datum non valido" + +#: utils/adt/array_userfuncs.c:48 +msgid "could not determine input data types" +msgstr "non è stato possibile determinare i tipi di dati di input" + +#: utils/adt/array_userfuncs.c:82 +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/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/varlena.c:950 +#: utils/adt/varlena.c:1968 utils/adt/int8.c:1247 utils/adt/float.c:1157 +#: utils/adt/float.c:1216 utils/adt/float.c:2767 utils/adt/float.c:2783 +#: utils/adt/varbit.c:1111 utils/adt/varbit.c:1503 utils/adt/arrayfuncs.c:1276 +#: utils/adt/numeric.c:2253 utils/adt/numeric.c:2262 +msgid "integer out of range" +msgstr "intero fuori dall'intervallo" + +#: utils/adt/array_userfuncs.c:121 +msgid "argument must be empty or one-dimensional array" +msgstr "l'argomento deve essere vuoto o un array con una sola dimensione" + +#: utils/adt/array_userfuncs.c: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 "non è possibile concatenare array non compatibili" + +#: utils/adt/array_userfuncs.c:225 +#, c-format +msgid "Arrays with element types %s and %s are not compatible for concatenation." +msgstr "Array con elementi di tipi %s e %s non sono compatibili per il concatenamento." + +#: utils/adt/array_userfuncs.c:264 +#, c-format +msgid "Arrays of %d and %d dimensions are not compatible for concatenation." +msgstr "Array con dimensioni %d e %d non sono compatibili per il concatenamento." + +#: utils/adt/array_userfuncs.c:301 +msgid "Arrays with differing element dimensions are not compatible for concatenation." +msgstr "Array con elementi dalle dimensioni diverse non sono compatibili per il concatenamento." + +#: utils/adt/array_userfuncs.c:330 utils/adt/array_userfuncs.c:358 +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:1238 +#: utils/adt/arrayfuncs.c:2911 utils/adt/arrayfuncs.c:4936 +#, c-format +msgid "invalid number of dimensions: %d" +msgstr "numero di dimensioni non valido: %d" + +#: 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:4940 +#: executor/execQual.c:303 executor/execQual.c:331 executor/execQual.c:3101 +#, 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)" + +#: utils/adt/array_userfuncs.c:487 +msgid "could not determine input data type" +msgstr "non è stato possibile determinare il tipo di dato di input" + +#: utils/adt/int.c:162 +msgid "int2vector has too many elements" +msgstr "ci sono troppi elementi nell'int2vector" + +#: utils/adt/int.c:237 +msgid "invalid int2vector data" +msgstr "dati int2vector non validi" + +#: utils/adt/int.c:243 utils/adt/oid.c:212 utils/adt/oid.c:293 +msgid "oidvector has too many elements" +msgstr "ci sono troppi elementi nell'oidvector" + +#: 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/float.c:1175 +#: utils/adt/float.c:1233 utils/adt/numeric.c:2354 utils/adt/numeric.c:2365 +msgid "smallint out of range" +msgstr "il valore è fuori dall'intervallo consentito per il tipo smallint" + +#: 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/timestamp.c:2877 utils/adt/geo_ops.c:4130 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/float.c:820 +#: utils/adt/float.c:884 utils/adt/float.c:2526 utils/adt/float.c:2589 +#: utils/adt/cash.c:507 utils/adt/cash.c:557 utils/adt/cash.c:608 +#: utils/adt/cash.c:657 utils/adt/cash.c:709 utils/adt/cash.c:759 +#: utils/adt/numeric.c:4507 utils/adt/numeric.c:4790 +msgid "division by zero" +msgstr "divisione per zero" + +#: utils/adt/int.c:1362 utils/adt/timestamp.c:4713 utils/adt/timestamp.c:4794 +#: utils/adt/int8.c:1409 +msgid "step size cannot equal zero" +msgstr "il valore del passo non può essere uguale a zero" + +#: utils/adt/tsgistidx.c:100 +msgid "gtsvector_in not implemented" +msgstr "la funzione gtsvector_in non è implementata" + +#: utils/adt/bool.c:153 +#, c-format +msgid "invalid input syntax for type boolean: \"%s\"" +msgstr "sintassi di input non valida per il tipo booleano: \"%s\"" + +#: utils/adt/arrayutils.c:93 utils/adt/arrayutils.c:102 +#: utils/adt/arrayutils.c:109 utils/adt/arrayfuncs.c:871 +#: utils/adt/arrayfuncs.c:1473 utils/adt/arrayfuncs.c:2795 +#: utils/adt/arrayfuncs.c:2943 utils/adt/arrayfuncs.c:5036 +#, c-format +msgid "array size exceeds the maximum allowed (%d)" +msgstr "la dimensione dell'array supera il massimo consentito (%d)" + +#: utils/adt/arrayutils.c:209 +msgid "typmod array must be type cstring[]" +msgstr "il typmod dell'array deve essere di tipo cstring[]" + +#: utils/adt/arrayutils.c:214 +msgid "typmod array must be one-dimensional" +msgstr "il typmod dell'array deve avere una sola dimensione" + +#: utils/adt/arrayutils.c:219 +msgid "typmod array must not contain nulls" +msgstr "il typmod dell'array non può contenere valori nulli" + +#: utils/adt/trigfuncs.c:41 +msgid "suppress_redundant_updates_trigger: must be called as trigger" +msgstr "la funzione trigger suppress_redundant_updates_deve essere invocata come un trigger" + +#: utils/adt/trigfuncs.c:47 +msgid "suppress_redundant_updates_trigger: must be called on update" +msgstr "la funzione trigger suppress_redundant_updates deve essere invocata su UPDATE" + +#: utils/adt/trigfuncs.c:53 +msgid "suppress_redundant_updates_trigger: must be called before update" +msgstr "la funzione trigger suppress_redundant_updates deve essere invocata prima di un UPDATE" + +#: utils/adt/trigfuncs.c:59 +msgid "suppress_redundant_updates_trigger: must be called for each row" +msgstr "la funzione trigger suppress_redundant_updates deve essere invocata su ogni riga" + +#: utils/adt/timestamp.c:92 utils/adt/varchar.c:43 utils/adt/date.c:66 +#: utils/adt/varbit.c:51 +msgid "invalid type modifier" +msgstr "modificatore di tipo non valido" + +#: utils/adt/timestamp.c:97 +#, 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:103 +#, 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:171 utils/adt/timestamp.c:435 +#, c-format +msgid "timestamp out of range: \"%s\"" +msgstr "timestamp fuori dall'intervallo consentito: \"%s\"" + +#: 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 "il valore \"%s\" per i tipi date/time non è più supportato" + +#: utils/adt/timestamp.c:260 +msgid "timestamp cannot be NaN" +msgstr "il timestamp non può essere NaN" + +#: utils/adt/timestamp.c:370 +#, 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:658 utils/adt/timestamp.c:3110 +#: utils/adt/timestamp.c:3240 utils/adt/timestamp.c:3625 +msgid "interval out of range" +msgstr "il valore di interval è fuori dall'intervallo consentito" + +#: utils/adt/timestamp.c:787 utils/adt/timestamp.c:820 +msgid "invalid INTERVAL type modifier" +msgstr "il modificatore di tipo su INTERVAL non è valido" + +#: utils/adt/timestamp.c:803 +#, c-format +msgid "INTERVAL(%d) precision must not be negative" +msgstr "la precisione di INTERVAL(%d) non può essere negativa" + +#: utils/adt/timestamp.c:809 +#, 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:1101 +#, 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:2307 +msgid "cannot subtract infinite timestamps" +msgstr "non è possibile sottrarre valori infiniti di TIMESTAMP" + +#: utils/adt/timestamp.c:3366 utils/adt/timestamp.c:3962 +#: utils/adt/timestamp.c:4021 +#, c-format +msgid "timestamp units \"%s\" not supported" +msgstr "unità \"%s\" di timestamp non supportata" + +#: utils/adt/timestamp.c:3380 utils/adt/timestamp.c:4031 +#, c-format +msgid "timestamp units \"%s\" not recognized" +msgstr "unità \"%s\" di timestamp non riconosciuta" + +#: utils/adt/timestamp.c:3521 utils/adt/timestamp.c:4193 +#: utils/adt/timestamp.c:4234 +#, 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:3538 utils/adt/timestamp.c:4243 +#, 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:3618 utils/adt/timestamp.c:4349 +#, c-format +msgid "interval units \"%s\" not supported" +msgstr "unità \"%s\" di interval non supportata" + +#: utils/adt/timestamp.c:3634 utils/adt/timestamp.c:4376 +#, c-format +msgid "interval units \"%s\" not recognized" +msgstr "unità \"%s\" di interval non riconosciuta" + +#: utils/adt/timestamp.c:4446 utils/adt/timestamp.c:4619 +#, c-format +msgid "could not convert to time zone \"%s\"" +msgstr "conversione al fuso orario \"%s\" fallita" + +#: utils/adt/timestamp.c:4453 utils/adt/timestamp.c:4626 utils/adt/date.c:2631 +#: utils/adt/datetime.c:928 utils/adt/datetime.c:1657 +#, c-format +msgid "time zone \"%s\" not recognized" +msgstr "fuso orario \"%s\" non riconosciuto" + +#: utils/adt/timestamp.c:4478 utils/adt/timestamp.c:4652 +#, c-format +msgid "interval time zone \"%s\" must not specify month" +msgstr "il fuso orario dell'intervallo \"%s\" non può specificare i mesi" + +#: utils/adt/selfuncs.c:4932 +msgid "case insensitive matching not supported on type bytea" +msgstr "il confronto case insensitive sul tipo bytea non è supportato" + +#: utils/adt/selfuncs.c:4947 utils/adt/like.c:211 +msgid "could not determine which collation to use for ILIKE" +msgstr "non è stato possibile determinare quale ordinamento usare per ILIKE" + +#: utils/adt/selfuncs.c:4948 utils/adt/varlena.c:1315 +#: utils/adt/formatting.c:1515 utils/adt/formatting.c:1565 +#: utils/adt/formatting.c:1631 utils/adt/formatting.c:1681 +#: utils/adt/formatting.c:1748 utils/adt/formatting.c:1810 +#: utils/adt/like.c:212 commands/indexcmds.c:903 commands/view.c:145 +#: regex/regc_pg_locale.c:259 catalog/heap.c:560 +msgid "Use the COLLATE clause to set the collation explicitly." +msgstr "Usa la clausola COLLATE per impostare esplicitamente l'ordinamento." + +#: utils/adt/selfuncs.c:5035 +msgid "regular-expression matching not supported on type bytea" +msgstr "il confronto con espressioni regolari sul tipo bytea non è supportato" + +#: utils/adt/varlena.c:246 utils/adt/varlena.c:287 utils/adt/encode.c:441 +#: utils/adt/encode.c:506 +msgid "invalid input syntax for type bytea" +msgstr "la sintassi in input per il tipo bytea non è valida" + +#: 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 utils/adt/varbit.c:1004 +#: utils/adt/varbit.c:1106 +msgid "negative substring length not allowed" +msgstr "non è consentita una stringa con lunghezza negativa" + +#: utils/adt/varlena.c:1314 +msgid "could not determine which collation to use for string comparison" +msgstr "non è stato possibile determinare quale ordinamento usare per la comparazione tra stringhe" + +#: utils/adt/varlena.c:1358 utils/adt/varlena.c:1371 +#, c-format +msgid "could not convert string to UTF-16: error %lu" +msgstr "non è stato possibile convertire la stringa in UTF-16: errore %lu" + +#: utils/adt/varlena.c:1386 +#, c-format +msgid "could not compare Unicode strings: %m" +msgstr "comparazione delle stringhe Unicode fallita: %m" + +#: 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 "l'indice %d è fuori dall'intervallo valido, 0..%d" + +#: utils/adt/varlena.c:2163 utils/adt/varbit.c:1740 +msgid "new bit must be 0 or 1" +msgstr "il nuovo bit deve essere 0 o 1" + +#: utils/adt/varlena.c:2245 utils/adt/varlena.c:2250 utils/adt/regproc.c:1320 +#: utils/adt/regproc.c:1325 +msgid "invalid name syntax" +msgstr "la sintassi per il nome non è valida" + +#: utils/adt/varlena.c:2956 +msgid "field position must be greater than zero" +msgstr "il campo deve essere maggiore di zero" + +#: utils/adt/varlena.c:3825 utils/adt/varlena.c:3886 +msgid "unterminated conversion specifier" +msgstr "specificatore di conversione non terminato" + +#: utils/adt/varlena.c:3849 utils/adt/varlena.c:3865 +msgid "argument number is out of range" +msgstr "numero di argomento fuori dall'intervallo consentito" + +#: utils/adt/varlena.c:3892 +msgid "conversion specifies argument 0, but arguments are numbered from 1" +msgstr "la conversione specifica l'argomento 0, ma gli argomenti sono numerati a partire da 1" + +#: utils/adt/varlena.c:3899 +msgid "too few arguments for format" +msgstr "troppi pochi argomenti per il formato" + +#: utils/adt/varlena.c:3920 +#, c-format +msgid "unrecognized conversion specifier \"%c\"" +msgstr "specificatore di conversione sconosciuto \"%c\"" + +#: utils/adt/varlena.c:3949 +msgid "null values cannot be formatted as an SQL identifier" +msgstr "i valori vuoti non possono essere formattati come un identificativo SQL" + +#: utils/adt/like_match.c:104 utils/adt/like_match.c:164 +msgid "LIKE pattern must not end with escape character" +msgstr "i pattern per LIKE non possono terminare con un carattere di escape" + +#: 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 "sintassi di input non valida per il tipo tid: \"%s\"" + +#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:4251 utils/adt/geo_ops.c:5172 +msgid "too many points requested" +msgstr "il numero di punti richiesti è eccessivo" + +#: utils/adt/geo_ops.c:317 +msgid "could not format \"path\" value" +msgstr "formattazione del valore \"path\" fallita" + +#: utils/adt/geo_ops.c:392 +#, 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:956 +#, 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: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 "il tipo \"line\" non è stato ancora implementato" + +#: utils/adt/geo_ops.c:1411 utils/adt/geo_ops.c:1434 +#, 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:1473 +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:1816 +#, 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:2044 +#, 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:2648 +msgid "function \"dist_lb\" not implemented" +msgstr "la funzione \"dist_lb\" non è implementata" + +#: utils/adt/geo_ops.c:3161 +msgid "function \"close_lb\" not implemented" +msgstr "la funzione \"close_lb\" non è implementata" + +#: utils/adt/geo_ops.c:3450 +msgid "cannot create bounding box for empty polygon" +msgstr "non è possibile creare un bounding box per il poligono vuoto" + +#: utils/adt/geo_ops.c:3474 utils/adt/geo_ops.c:3486 +#, 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:3526 +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:4049 +msgid "function \"poly_distance\" not implemented" +msgstr "la funzione \"poly_distance\" non è implementata" + +#: utils/adt/geo_ops.c:4363 +msgid "function \"path_center\" not implemented" +msgstr "la funzione \"path_center\" non è implementata" + +#: utils/adt/geo_ops.c:4380 +msgid "open path cannot be converted to polygon" +msgstr "un path aperto non può essere convertito in un poligono" + +#: 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 "sintassi di input non valida per il tipo circle: \"%s\"" + +#: utils/adt/geo_ops.c:4602 utils/adt/geo_ops.c:4610 +msgid "could not format \"circle\" value" +msgstr "formattazione del valore \"circle\" fallita" + +#: utils/adt/geo_ops.c:4637 +msgid "invalid radius in external \"circle\" value" +msgstr "il raggio nel valore esterno di \"circle\" non è valido" + +#: utils/adt/geo_ops.c:5158 +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:5163 +msgid "must request at least 2 points" +msgstr "devono essere richiesti almeno 2 punti" + +#: utils/adt/geo_ops.c:5207 utils/adt/geo_ops.c:5230 +msgid "cannot convert empty polygon to circle" +msgstr "non è possibile convertire un poligono vuoto in un cerchio" + +#: utils/adt/varchar.c:48 utils/adt/varbit.c:56 +#, c-format +msgid "length for type %s must be at least 1" +msgstr "la lunghezza per il tipo %s dev'essere almeno 1" + +#: utils/adt/varchar.c:52 utils/adt/varbit.c:61 +#, c-format +msgid "length for type %s cannot exceed %d" +msgstr "la lunghezza per il tipo %s non può essere superiore a %d" + +#: utils/adt/varchar.c:152 utils/adt/varchar.c:305 +#, c-format +msgid "value too long for type character(%d)" +msgstr "il valore è troppo lungo per il tipo character(%d)" + +#: utils/adt/varchar.c:467 utils/adt/varchar.c:588 +#, c-format +msgid "value too long for type character varying(%d)" +msgstr "il valore è troppo lungo per il tipo character varying(%d)" + +#: 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 "sintassi di input non valida per il tipo integer: \"%s\"" + +#: utils/adt/int8.c:114 +#, c-format +msgid "value \"%s\" is out of range for type bigint" +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/varbit.c:1583 utils/adt/numeric.c:2306 +msgid "bigint out of range" +msgstr "bigint fuori dall'intervallo consentito" + +#: utils/adt/int8.c:1366 +msgid "OID out of range" +msgstr "OID fuori dall'intervallo consentito" + +#: utils/adt/float.c:54 +msgid "value out of range: overflow" +msgstr "il valore è fuori dall'intervallo consentito: overflow" + +#: utils/adt/float.c:59 +msgid "value out of range: underflow" +msgstr "il valore è fuori dall'intervallo consentito: underflow" + +#: utils/adt/float.c:206 utils/adt/float.c:270 utils/adt/float.c:326 +#, c-format +msgid "invalid input syntax for type real: \"%s\"" +msgstr "la sintassi in input per il tipo real non è valida: \"%s\"" + +#: utils/adt/float.c:265 +#, c-format +msgid "\"%s\" is out of range for type real" +msgstr "\"%s\" è fuori dall'intervallo consentito per il tipo real" + +#: utils/adt/float.c:427 utils/adt/float.c:491 utils/adt/float.c:547 +#: utils/adt/numeric.c:3969 utils/adt/numeric.c:3995 +#, 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:486 +#, 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:1359 utils/adt/numeric.c:5183 +msgid "cannot take square root of a negative number" +msgstr "non è possibile estrarre la radice quadrata di un numero negativo" + +#: utils/adt/float.c:1401 utils/adt/numeric.c:2166 +msgid "zero raised to a negative power is undefined" +msgstr "zero elevato a potenza negativa non è definito" + +#: utils/adt/float.c:1405 utils/adt/numeric.c:2172 +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:1471 utils/adt/float.c:1501 utils/adt/numeric.c:5401 +msgid "cannot take logarithm of zero" +msgstr "non è possibile calcolare il logaritmo di zero" + +#: utils/adt/float.c:1475 utils/adt/float.c:1505 utils/adt/numeric.c:5405 +msgid "cannot take logarithm of a negative number" +msgstr "non è possibile calcolare il logaritmo di un numero negativo" + +#: utils/adt/float.c:1532 utils/adt/float.c:1553 utils/adt/float.c:1574 +#: utils/adt/float.c:1596 utils/adt/float.c:1617 utils/adt/float.c:1638 +#: utils/adt/float.c:1660 utils/adt/float.c:1681 +msgid "input is out of range" +msgstr "il valore di input è fuori dall'intervallo consentito" + +#: utils/adt/float.c:2743 utils/adt/numeric.c:1171 +msgid "count must be greater than zero" +msgstr "il valore count dev'essere maggiore di zero" + +#: utils/adt/float.c:2748 utils/adt/numeric.c:1178 +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:2754 +msgid "lower and upper bounds must be finite" +msgstr "i valori minimo e massimo devono essere finiti" + +#: utils/adt/float.c:2792 utils/adt/numeric.c:1191 +msgid "lower bound cannot equal upper bound" +msgstr "il valore minimo non può essere uguale a quello massimo" + +#: utils/adt/formatting.c:492 +msgid "invalid format specification for an interval value" +msgstr "la specifica di formato per un intervallo non è valida" + +#: utils/adt/formatting.c:493 +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 +msgid "\"EEEE\" must be the last pattern used" +msgstr "\"EEEE\" dev'essere l'ultimo pattern usato" + +#: utils/adt/formatting.c:1068 +msgid "\"9\" must be ahead of \"PR\"" +msgstr "\"9\" dev'essere più avanti di \"PR\"" + +#: utils/adt/formatting.c:1084 +msgid "\"0\" must be ahead of \"PR\"" +msgstr "\"0\" dev'essere più avanti di \"PR\"" + +#: utils/adt/formatting.c:1110 +msgid "multiple decimal points" +msgstr "troppi punti decimali" + +#: utils/adt/formatting.c:1114 utils/adt/formatting.c:1197 +msgid "cannot use \"V\" and decimal point together" +msgstr "non è possibile usare \"V\" ed un punto decimale insieme" + +#: utils/adt/formatting.c:1126 +msgid "cannot use \"S\" twice" +msgstr "non è possibile usare \"S\" due volte" + +#: utils/adt/formatting.c:1130 +msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" +msgstr "non è possibile usare sia \"S\" che \"PL\"/\"MI\"/\"SG\"/\"PR\" insieme" + +#: utils/adt/formatting.c:1150 +msgid "cannot use \"S\" and \"MI\" together" +msgstr "non è possibile usare sia \"S\" che \"MI\" insieme" + +#: utils/adt/formatting.c:1160 +msgid "cannot use \"S\" and \"PL\" together" +msgstr "non è possibile usare sia \"S\" che \"PL\" insieme" + +#: utils/adt/formatting.c:1170 +msgid "cannot use \"S\" and \"SG\" together" +msgstr "non è possibile usare sia \"S\" che \"SG\" insieme" + +#: utils/adt/formatting.c:1179 +msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" +msgstr "non è possibile usare sia \"PR\" che \"S\"/\"PL\"/\"MI\"/\"SG\" insieme" + +#: utils/adt/formatting.c:1205 +msgid "cannot use \"EEEE\" twice" +msgstr "non è possibile usare \"EEEE\" due volte" + +#: utils/adt/formatting.c:1211 +msgid "\"EEEE\" is incompatible with other formats" +msgstr "\"EEEE\" non è compatibile con altri formati" + +#: utils/adt/formatting.c:1212 +msgid "\"EEEE\" may only be used together with digit and decimal point patterns." +msgstr "\"EEEE\" può essere usato soltanto insieme a pattern di cifre e punti decimali." + +#: utils/adt/formatting.c:1412 +#, c-format +msgid "\"%s\" is not a number" +msgstr "\"%s\" non è un numero" + +#: utils/adt/formatting.c:1514 utils/adt/formatting.c:1564 +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:1630 utils/adt/formatting.c:1680 +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:1747 utils/adt/formatting.c:1809 +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:2086 +msgid "invalid combination of date conventions" +msgstr "la combinazione di convenzioni di date non è valida" + +#: utils/adt/formatting.c:2087 +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:2104 +#, 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:2106 +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:2167 +#, c-format +msgid "source string too short for \"%s\" formatting field" +msgstr "la stringa di origine è troppo corta per il campo di formattazione \"%s\"" + +#: utils/adt/formatting.c:2169 +#, 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:2172 utils/adt/formatting.c:2186 +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:2182 utils/adt/formatting.c:2195 +#: utils/adt/formatting.c:2325 +#, c-format +msgid "invalid value \"%s\" for \"%s\"" +msgstr "valore \"%s\" per \"%s\" non valido" + +#: utils/adt/formatting.c:2184 +#, 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:2197 +msgid "Value must be an integer." +msgstr "Il valore deve essere un integer." + +#: utils/adt/formatting.c:2202 +#, c-format +msgid "value for \"%s\" in source string is out of range" +msgstr "il valore \"%s\" nella stringa di origine è fuori dall'intervallo consentito" + +#: utils/adt/formatting.c:2204 +#, 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:2327 +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:2876 +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" + +#: utils/adt/formatting.c:2980 +msgid "invalid input string for \"Y,YYY\"" +msgstr "stringa di input non valida per \"Y,YYY\"" + +#: utils/adt/formatting.c:3371 utils/adt/date.c:167 +#, c-format +msgid "date out of range: \"%s\"" +msgstr "data fuori dall'intervallo consentito: \"%s\"" + +#: utils/adt/formatting.c:3503 +#, 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:3505 +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:3543 +#, c-format +msgid "inconsistent use of year %04d and \"BC\"" +msgstr "l'uso dell'anno %04d e di \"BC\" non è consistente" + +#: utils/adt/formatting.c:3590 +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:4452 +msgid "\"EEEE\" not supported for input" +msgstr "l'uso di \"EEEE\" non è supportato per l'input" + +#: utils/adt/formatting.c:4464 +msgid "\"RN\" not supported for input" +msgstr "l'uso di \"RN\" non è supportato per l'input" + +#: utils/adt/date.c:71 +#, c-format +msgid "TIME(%d)%s precision must not be negative" +msgstr "la precisione di TIME(%d)%s non può essere negativa" + +#: utils/adt/date.c:77 +#, c-format +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:142 utils/adt/datetime.c:1186 utils/adt/datetime.c:1928 +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:359 +msgid "cannot subtract infinite dates" +msgstr "non si possono sottrarre date infinite" + +#: utils/adt/date.c:416 utils/adt/date.c:453 +msgid "date out of range for timestamp" +msgstr "data fuori dall'intervallo consentito per timestamp" + +#: utils/adt/date.c:986 +msgid "cannot convert reserved abstime value to date" +msgstr "non è possibile convertire un valore speciale per abstime in una data" + +#: 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 "ora fuori dall'intervallo consentito" + +#: utils/adt/date.c:1793 utils/adt/date.c:1810 +#, c-format +msgid "\"time\" units \"%s\" not recognized" +msgstr "unità \"%s\" di \"time\" non è riconosciuta" + +#: utils/adt/date.c:1931 +msgid "time zone displacement out of range" +msgstr "la differenza di fuso orario è fuori dall'intervallo consentito" + +#: utils/adt/date.c:2556 utils/adt/date.c:2573 +#, 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:2671 +#, c-format +msgid "\"interval\" time zone \"%s\" not valid" +msgstr "il fuso orario \"%s\" dell'\"interval\" non è valido" + +#: 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 "la lunghezza della stringa di bit %d non corrisponde a quella del tipo bit(%d)" + +#: utils/adt/varbit.c:188 utils/adt/varbit.c:490 +#, c-format +msgid "\"%c\" is not a valid binary digit" +msgstr "\"%c\" non è una cifra binaria valida" + +#: utils/adt/varbit.c:213 utils/adt/varbit.c:515 +#, c-format +msgid "\"%c\" is not a valid hexadecimal digit" +msgstr "\"%c\" non è una cifra esadecimale valida" + +#: utils/adt/varbit.c:300 utils/adt/varbit.c:603 +msgid "invalid length in external bit string" +msgstr "la lunghezza della stringa esterna di bit non è valida" + +#: 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 "la stringa di bit è troppo lunga per il tipo bit varying(%d)" + +#: utils/adt/varbit.c:1164 +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:1206 +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:1253 +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:1731 utils/adt/varbit.c:1789 +#, c-format +msgid "bit index %d out of valid range (0..%d)" +msgstr "l'indice %d è fuori dall'intervallo valido (0..%d)" + +#: utils/adt/tsvector.c:215 +#, 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:222 +#, 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)" + +#: utils/adt/tsvector.c:272 utils/adt/tsvector_op.c:530 tsearch/to_tsany.c:165 +#, 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)" + +#: utils/adt/ascii.c:75 +#, c-format +msgid "encoding conversion from %s to ASCII not supported" +msgstr "la conversione di codifica da %s a ASCII non è supportata" + +#: utils/adt/ascii.c:126 commands/dbcommands.c:236 +#, c-format +msgid "%s is not a valid encoding name" +msgstr "%s non è un nome di codifica valido" + +#: utils/adt/ascii.c:144 commands/dbcommands.c:226 +#, c-format +msgid "%d is not a valid encoding code" +msgstr "%d non è un codice di codifica valido" + +#: utils/adt/dbsize.c:65 utils/adt/dbsize.c:211 utils/adt/dbsize.c:279 +#: utils/adt/genfile.c:107 utils/adt/genfile.c:279 access/transam/xlog.c:2932 +#: access/transam/xlog.c:3097 access/transam/xlog.c:9168 +#: access/transam/xlog.c:9347 storage/file/copydir.c:86 +#: storage/file/copydir.c:125 +#, c-format +msgid "could not stat file \"%s\": %m" +msgstr "non è stato possibile ottenere informazioni sul file \"%s\": %m" + +#: utils/adt/dbsize.c:105 utils/adt/dbsize.c:189 +#, c-format +msgid "could not open tablespace directory \"%s\": %m" +msgstr "apertura della directory del tablespace \"%s\" fallita: %m" + +#: utils/adt/dbsize.c:127 catalog/aclchk.c:3492 catalog/aclchk.c:4609 +#, c-format +msgid "database with OID %u does not exist" +msgstr "il database con OID %u non esiste" + +#: utils/adt/cash.c:237 +#, c-format +msgid "invalid input syntax for type money: \"%s\"" +msgstr "sintassi di input non valida per il tipo money: \"%s\"" + +#: utils/adt/tsrank.c:404 +msgid "array of weight must be one-dimensional" +msgstr "l'array dei pesi deve avere una sola dimensione" + +#: utils/adt/tsrank.c:409 +msgid "array of weight is too short" +msgstr "l'array dei pesi è troppo corto" + +#: utils/adt/tsrank.c:414 +msgid "array of weight must not contain nulls" +msgstr "l'array dei pesi non può contenere valori nulli" + +#: utils/adt/tsrank.c:423 utils/adt/tsrank.c:749 +msgid "weight out of range" +msgstr "il peso è fuori dall'intervallo consentito" + +#: utils/adt/name.c:91 utils/adt/acl.c:166 +msgid "identifier too long" +msgstr "l'identificativo è troppo lungo" + +#: utils/adt/name.c:92 utils/adt/acl.c:167 +#, c-format +msgid "Identifier must be less than %d characters." +msgstr "Gli identificatori devono essere più corti di %d caratteri." + +#. translator: first %s is inet or cidr +#: utils/adt/network.c:107 utils/adt/datetime.c:3558 +#, c-format +msgid "invalid input syntax for type %s: \"%s\"" +msgstr "sintassi di input non valida per il tipo %s: \"%s\"" + +#: utils/adt/network.c:118 +#, 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 +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 +#, 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 +#, 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 +#, 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 +#, c-format +msgid "invalid length in external \"%s\" value" +msgstr "lunghezza non valida nel valore esterno \"%s\"" + +#: utils/adt/network.c:248 +msgid "invalid external \"cidr\" value" +msgstr "valore \"cidr\" esterno non valido" + +#: utils/adt/network.c:370 utils/adt/network.c:397 +#, c-format +msgid "invalid mask length: %d" +msgstr "la lunghezza della maschera non è valida: %d" + +#: utils/adt/network.c:682 +#, c-format +msgid "could not format cidr value: %m" +msgstr "formattazione del valore cidr fallita: %m" + +#: utils/adt/network.c:1255 +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 +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 +msgid "result is out of range" +msgstr "il risultato è fuori dall'intervallo consentito" + +#: utils/adt/network.c:1389 +msgid "cannot subtract inet values of different sizes" +msgstr "non è possibile sottrarre valori di tipo inet di dimensione diversa" + +#: utils/adt/mac.c:65 +#, c-format +msgid "invalid input syntax for type macaddr: \"%s\"" +msgstr "sintassi di input non valida per il tipo macaddr: \"%s\"" + +#: utils/adt/mac.c:72 +#, c-format +msgid "invalid octet value in \"macaddr\" value: \"%s\"" +msgstr "ottetto non valido nel valore \"macaddr\": \"%s\"" + +#: utils/adt/domains.c:80 +#, c-format +msgid "type %s is not a domain" +msgstr "il tipo %s non è un dominio" + +#: utils/adt/domains.c:128 executor/execQual.c:3893 +#, c-format +msgid "domain %s does not allow null values" +msgstr "il DOMAIN %s non consente valori nulli" + +#: utils/adt/domains.c:164 executor/execQual.c:3922 +#, c-format +msgid "value for domain %s violates check constraint \"%s\"" +msgstr "il valore per il DOMAIN %s viola il vincolo di controllo \"%s\"" + +#: utils/adt/ruleutils.c:1580 utils/adt/acl.c:2772 commands/tablecmds.c:4524 +#: commands/tablecmds.c:4616 commands/tablecmds.c:4663 +#: commands/tablecmds.c:4759 commands/tablecmds.c:4803 +#: commands/tablecmds.c:4882 commands/tablecmds.c:4966 +#: commands/tablecmds.c:6619 commands/tablecmds.c:6828 commands/analyze.c:343 +#: commands/sequence.c:1443 commands/copy.c:3787 commands/trigger.c:592 +#: catalog/aclchk.c:1427 catalog/objectaddress.c:545 parser/analyze.c:2046 +#: parser/parse_target.c:898 parser/parse_relation.c:2060 +#: parser/parse_relation.c:2117 parser/parse_type.c:117 +#, c-format +msgid "column \"%s\" of relation \"%s\" does not exist" +msgstr "la colonna \"%s\" della relazione \"%s\" non esiste" + +#: utils/adt/ruleutils.c:1696 commands/functioncmds.c:1008 +#: commands/functioncmds.c:1108 commands/functioncmds.c:1171 +#: commands/functioncmds.c:1322 +#, c-format +msgid "\"%s\" is an aggregate function" +msgstr "\"%s\" è una funzione di aggregazione" + +#: utils/adt/ruleutils.c:2429 +#, c-format +msgid "rule \"%s\" has unsupported event type %d" +msgstr "la regola \"%s\" ha un tipo di evento non supportato %d" + +#: utils/adt/ruleutils.c:5888 utils/adt/ruleutils.c:5943 +#: utils/adt/ruleutils.c:5980 utils/adt/regproc.c:635 utils/adt/regproc.c:1485 +msgid "too many arguments" +msgstr "troppi argomenti" + +#: utils/adt/pseudotypes.c:94 +msgid "cannot accept a value of type any" +msgstr "non è possibile accettare un valore di tipo any" + +#: utils/adt/pseudotypes.c:107 +msgid "cannot display a value of type any" +msgstr "non è possibile mostrare un valore di tipo any" + +#: utils/adt/pseudotypes.c:121 utils/adt/pseudotypes.c:149 +msgid "cannot accept a value of type anyarray" +msgstr "non è possibile accettare un valore di tipo anyarray" + +#: utils/adt/pseudotypes.c:174 +msgid "cannot accept a value of type anyenum" +msgstr "non è possibile accettare un valore di tipo anyenum" + +#: utils/adt/pseudotypes.c:252 +msgid "cannot accept a value of type trigger" +msgstr "non è possibile accettare un valore di tipo trigger" + +#: utils/adt/pseudotypes.c:265 +msgid "cannot display a value of type trigger" +msgstr "non è possibile mostrare un valore di tipo trigger" + +#: utils/adt/pseudotypes.c:279 +msgid "cannot accept a value of type language_handler" +msgstr "non è possibile accettare un valore di tipo language_handler" + +#: utils/adt/pseudotypes.c:292 +msgid "cannot display a value of type language_handler" +msgstr "non è possibile mostrare un valore di tipo language_handler" + +#: utils/adt/pseudotypes.c:306 +msgid "cannot accept a value of type fdw_handler" +msgstr "non è possibile accettare un valore di tipo fdw_handler" + +#: utils/adt/pseudotypes.c:319 +msgid "cannot display a value of type fdw_handler" +msgstr "non è possibile mostrare un valore di tipo fdw_handler" + +#: utils/adt/pseudotypes.c:333 +msgid "cannot accept a value of type internal" +msgstr "non è possibile accettare un valore di tipo internal" + +#: utils/adt/pseudotypes.c:346 +msgid "cannot display a value of type internal" +msgstr "non è possibile mostrare un valore di tipo internal" + +#: utils/adt/pseudotypes.c:360 +msgid "cannot accept a value of type opaque" +msgstr "non è possibile accettare un valore di tipo opaque" + +#: utils/adt/pseudotypes.c:373 +msgid "cannot display a value of type opaque" +msgstr "non è possibile mostrare un valore di tipo opaque" + +#: utils/adt/pseudotypes.c:387 +msgid "cannot accept a value of type anyelement" +msgstr "non è possibile accettare un valore di tipo anyelement" + +#: utils/adt/pseudotypes.c:400 +msgid "cannot display a value of type anyelement" +msgstr "non è possibile mostrare un valore di tipo anyelement" + +#: utils/adt/pseudotypes.c:413 +msgid "cannot accept a value of type anynonarray" +msgstr "non è possibile accettare un valore di tipo anynonarray" + +#: utils/adt/pseudotypes.c:426 +msgid "cannot display a value of type anynonarray" +msgstr "non è possibile mostrare un valore di tipo anynonarray" + +#: utils/adt/pseudotypes.c:439 +msgid "cannot accept a value of a shell type" +msgstr "non è possibile accettare un valore di un tipo non completamente definito" + +#: utils/adt/pseudotypes.c:452 +msgid "cannot display a value of a shell type" +msgstr "non è possibile mostrare un valore di un tipo non completamente definito" + +#: utils/adt/pseudotypes.c:474 utils/adt/pseudotypes.c:498 +msgid "cannot accept a value of type pg_node_tree" +msgstr "non è possibile accettare un valore di tipo pg_node_tree" + +#: utils/adt/char.c:169 +msgid "\"char\" out of range" +msgstr "\"char\" fuori dall'intervallo consentito" + +#: utils/adt/arrayfuncs.c:235 utils/adt/arrayfuncs.c:247 +msgid "missing dimension value" +msgstr "manca il valore della dimensione" + +#: utils/adt/arrayfuncs.c:257 +msgid "missing \"]\" in array dimensions" +msgstr "manca \"]\" nelle dimensioni dell'array" + +#: 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 "il limite massimo non può essere minore del limite minimo" + +#: utils/adt/arrayfuncs.c:277 utils/adt/arrayfuncs.c:303 +msgid "array value must start with \"{\" or dimension information" +msgstr "un valore array deve iniziare col simbolo \"{\"o con l'informazione della dimensione" + +#: utils/adt/arrayfuncs.c:291 +msgid "missing assignment operator" +msgstr "manca l'operatore di assegnamento" + +#: utils/adt/arrayfuncs.c:308 utils/adt/arrayfuncs.c:314 +msgid "array dimensions incompatible with array literal" +msgstr "le dimensioni dell'array non sono compatibili con il letterale array" + +#: 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 "il letterale array non è definito in modo corretto: \"%s\"" + +#: utils/adt/arrayfuncs.c:542 executor/execQual.c:3121 +#: executor/execQual.c:3148 +msgid "multidimensional arrays must have array expressions with matching dimensions" +msgstr "gli array multidimensionali devono avere espressioni array di dimensioni corrispondenti" + +#: utils/adt/arrayfuncs.c:1249 +msgid "invalid array flags" +msgstr "i flag dell'array non sono validi" + +#: utils/adt/arrayfuncs.c:1257 +msgid "wrong element type" +msgstr "il tipo di elemento è errato" + +#: utils/adt/arrayfuncs.c:1411 utils/adt/rowtypes.c:572 libpq/pqformat.c:556 +#: libpq/pqformat.c:574 libpq/pqformat.c:595 +msgid "insufficient data left in message" +msgstr "i dati rimasti nel messaggio non sono sufficienti" + +#: utils/adt/arrayfuncs.c:1447 +#, 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:1903 +msgid "slices of fixed-length arrays not implemented" +msgstr "le sezioni di array a lunghezza fissa non sono implementate" + +#: utils/adt/arrayfuncs.c:2076 utils/adt/arrayfuncs.c:2098 +#: utils/adt/arrayfuncs.c:2132 utils/adt/arrayfuncs.c:2418 +#: utils/adt/arrayfuncs.c:4916 utils/adt/arrayfuncs.c:4948 +#: utils/adt/arrayfuncs.c:4965 +msgid "wrong number of array subscripts" +msgstr "il numero di indici di array è errato" + +#: utils/adt/arrayfuncs.c:2081 utils/adt/arrayfuncs.c:2174 +#: utils/adt/arrayfuncs.c:2469 +msgid "array subscript out of range" +msgstr "indice dell'array fuori dall'intervallo" + +#: utils/adt/arrayfuncs.c:2086 +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:2372 +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:2408 utils/adt/arrayfuncs.c:2495 +msgid "source array too small" +msgstr "l'array di origine è troppo piccolo" + +#: utils/adt/arrayfuncs.c:3050 +msgid "null array element not allowed in this context" +msgstr "in questo contesto non è consentito un elemento di array nullo" + +#: utils/adt/arrayfuncs.c:3153 utils/adt/arrayfuncs.c:3361 +#: utils/adt/arrayfuncs.c:3678 +msgid "cannot compare arrays of different element types" +msgstr "non è possibile confrontare array con elementi di tipo diverso" + +#: utils/adt/arrayfuncs.c:3176 utils/adt/arrayfuncs.c:3695 +#: utils/adt/rowtypes.c:1185 parser/parse_oper.c:225 +#, c-format +msgid "could not identify an equality operator for type %s" +msgstr "operatore di uguaglianza per il tipo %s non trovato" + +#: utils/adt/arrayfuncs.c:3378 utils/adt/rowtypes.c:950 +#: executor/execQual.c:4913 +#, 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" + +#: utils/adt/arrayfuncs.c:3563 +#, 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:4814 utils/adt/arrayfuncs.c:4854 +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:4917 utils/adt/arrayfuncs.c:4949 +msgid "Dimension array must be one dimensional." +msgstr "L'array delle dimensioni deve avere una sola dimensione." + +#: utils/adt/arrayfuncs.c:4922 utils/adt/arrayfuncs.c:4954 +msgid "wrong range of array subscripts" +msgstr "il range degli indici dell'array non è corretto" + +#: utils/adt/arrayfuncs.c:4923 utils/adt/arrayfuncs.c:4955 +msgid "Lower bound of dimension array must be one." +msgstr "Il valore minimo dell'array delle dimensioni deve essere uno." + +#: utils/adt/arrayfuncs.c:4928 utils/adt/arrayfuncs.c:4960 +msgid "dimension values cannot be null" +msgstr "i valori di dimensione non possono essere nulli" + +#: utils/adt/arrayfuncs.c:4966 +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/tsquery.c:156 utils/adt/tsquery.c:392 +#: utils/adt/tsvector_parser.c:136 +#, c-format +msgid "syntax error in tsquery: \"%s\"" +msgstr "errore di sintassi in tsquery: \"%s\"" + +#: utils/adt/tsquery.c:177 +#, c-format +msgid "no operand in tsquery: \"%s\"" +msgstr "non ci sono operandi in tsquery: \"%s\"" + +#: utils/adt/tsquery.c:250 +#, c-format +msgid "value is too big in tsquery: \"%s\"" +msgstr "il valore in tsquery è troppo grande: \"%s\"" + +#: utils/adt/tsquery.c:255 +#, c-format +msgid "operand is too long in tsquery: \"%s\"" +msgstr "l'operando in tsquery è troppo lungo: \"%s\"" + +#: utils/adt/tsquery.c:283 +#, c-format +msgid "word is too long in tsquery: \"%s\"" +msgstr "la parola in tsquery è troppo lunga: \"%s\"" + +#: utils/adt/tsquery.c:512 +#, c-format +msgid "text-search query doesn't contain lexemes: \"%s\"" +msgstr "la query di ricerca di testo non contiene alcun lessema: \"%s\"" + +#: utils/adt/misc.c:80 +msgid "must be superuser to signal other server processes" +msgstr "solo un superutente può inviare segnali ad un altro processo del server" + +#: utils/adt/misc.c:89 +#, c-format +msgid "PID %d is not a PostgreSQL server process" +msgstr "il PID %d non è un processo del server PostgreSQL" + +#: utils/adt/misc.c:102 storage/lmgr/proc.c:1087 +#, c-format +msgid "could not send signal to process %d: %m" +msgstr "invio del segnale al processo %d fallito: %m" + +#: utils/adt/misc.c:126 +msgid "must be superuser to signal the postmaster" +msgstr "solo un superutente può inviare segnali al postmaster" + +#: utils/adt/misc.c:131 +#, c-format +msgid "failed to send signal to postmaster: %m" +msgstr "invio del segnale al postmaster fallito: %m" + +#: utils/adt/misc.c:148 +msgid "must be superuser to rotate log files" +msgstr "solo un superutente può eseguire la rotazione dei file di log" + +#: utils/adt/misc.c:153 +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:195 +msgid "global tablespace never has databases" +msgstr "il tablespace globale non contiene mai dei database" + +#: utils/adt/misc.c:216 +#, c-format +msgid "%u is not a tablespace OID" +msgstr "%u non è l'OID di un tablespace" + +#: utils/adt/misc.c:352 +msgid "unreserved" +msgstr "non riservato" + +#: utils/adt/misc.c:356 +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:360 +msgid "reserved (can be function or type name)" +msgstr "riservato (può essere una funzione o il nome di un tipo)" + +#: utils/adt/misc.c:364 +msgid "reserved" +msgstr "riservato" + +#: 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:117 +msgid "requested length too large" +msgstr "la lunghezza richiesta è eccessiva" + +#: utils/adt/oracle_compat.c:895 +msgid "requested character too large" +msgstr "il carattere richiesto è troppo grande" + +#: utils/adt/oracle_compat.c:941 utils/adt/oracle_compat.c:995 +#, 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 +msgid "null character not permitted" +msgstr "non sono consentiti caratteri nulli" + +#: utils/adt/tsvector_op.c:1173 +msgid "ts_stat query must return one tsvector column" +msgstr "la query ts_stat deve restituire una colonna tsvector" + +#: utils/adt/tsvector_op.c:1353 +#, c-format +msgid "tsvector column \"%s\" does not exist" +msgstr "la colonna tsvector \"%s\" non esiste" + +#: utils/adt/tsvector_op.c:1359 +#, c-format +msgid "column \"%s\" is not of tsvector type" +msgstr "la colonna \"%s\" non è di tipo tsvector" + +#: utils/adt/tsvector_op.c:1371 +#, c-format +msgid "configuration column \"%s\" does not exist" +msgstr "la configurazione della colonna \"%s\" non esiste" + +#: utils/adt/tsvector_op.c:1377 +#, c-format +msgid "column \"%s\" is not of regconfig type" +msgstr "la colonna \"%s\" non è di tipo regconfig" + +#: utils/adt/tsvector_op.c:1384 +#, c-format +msgid "configuration column \"%s\" must not be null" +msgstr "la colonna di configurazione \"%s\" non può essere nulla" + +#: utils/adt/tsvector_op.c:1397 +#, c-format +msgid "text search configuration name \"%s\" must be schema-qualified" +msgstr "la configurazione di ricerca di testo \"%s\" deve avere uno schema" + +#: utils/adt/tsvector_op.c:1417 commands/tablecmds.c:1301 +#: commands/tablecmds.c:2076 commands/copy.c:3792 commands/indexcmds.c:818 +#: parser/parse_expr.c:766 +#, c-format +msgid "column \"%s\" does not exist" +msgstr "la colonna \"%s\" non esiste" + +#: utils/adt/tsvector_op.c:1422 +#, c-format +msgid "column \"%s\" is not of a character type" +msgstr "la colonna \"%s\" non è di tipo carattere" + +#: utils/adt/datetime.c:3531 utils/adt/datetime.c:3538 +#, 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:3540 +msgid "Perhaps you need a different \"datestyle\" setting." +msgstr "Forse è necessario impostare un \"datestyle\" diverso." + +#: utils/adt/datetime.c:3545 +#, c-format +msgid "interval field value out of range: \"%s\"" +msgstr "valore del campo interval fuori dall'intervallo consentito: \"%s\"" + +#: utils/adt/datetime.c:3551 +#, c-format +msgid "time zone displacement out of range: \"%s\"" +msgstr "la differenza di fuso orario è fuori dall'intervallo consentito: \"%s\"" + +#: utils/adt/genfile.c:60 +msgid "reference to parent directory (\"..\") not allowed" +msgstr "i riferimenti alla directory padre (\"..\") non sono consentiti" + +#: utils/adt/genfile.c:71 +msgid "absolute path not allowed" +msgstr "i percorsi assoluti non sono consentiti" + +#: utils/adt/genfile.c:76 +msgid "path must be in or below the current directory" +msgstr "il percorso dev'essere nella directory corrente o in una sua sottodirectory" + +#: utils/adt/genfile.c:122 commands/copy.c:2193 +#, c-format +msgid "could not open file \"%s\" for reading: %m" +msgstr "apertura del file \"%s\" in lettura fallita: %m" + +#: utils/adt/genfile.c:129 +#, c-format +msgid "could not seek in file \"%s\": %m" +msgstr "spostamento nel file \"%s\" fallito: %m" + +#: utils/adt/genfile.c:138 access/transam/xlog.c:2543 +#: access/transam/xlog.c:4494 access/transam/xlog.c:9359 +#: access/transam/xlog.c:9372 access/transam/xlog.c:9906 +#: access/transam/xlog.c:9941 storage/file/copydir.c:186 +#, c-format +msgid "could not read file \"%s\": %m" +msgstr "lettura de file \"%s\" fallita: %m" + +#: 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 "solo un superutente può leggere i file" + +#: utils/adt/genfile.c:186 utils/adt/genfile.c:231 +msgid "requested length cannot be negative" +msgstr "la lunghezza richiesta non può essere negativa" + +#: utils/adt/genfile.c:272 +msgid "must be superuser to get file information" +msgstr "solo un superutente può ottenere informazioni sul file" + +#: utils/adt/genfile.c:336 +msgid "must be superuser to get directory listings" +msgstr "solo un superutente può elencare il contenuto della directory" + +#: utils/adt/tsquery_rewrite.c:296 +msgid "ts_rewrite query must return two tsquery columns" +msgstr "la query ts_rewrite deve restituire due colonne tsquery" + +#: utils/adt/tsquery_cleanup.c:285 +msgid "text-search query contains only stop words or doesn't contain lexemes, ignored" +msgstr "la query di ricerca di testo contiene solo stop word o non contiene lessemi, ignorata" + +#: utils/adt/uuid.c:128 +#, c-format +msgid "invalid input syntax for uuid: \"%s\"" +msgstr "sintassi di input non valida per il tipo uuid: \"%s\"" + +#: utils/adt/rowtypes.c:99 utils/adt/rowtypes.c:488 +msgid "input of anonymous composite types is not implemented" +msgstr "l'input di un tipo composito anonimo non è implementato" + +#: 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 "letterale record non corretto: \"%s\"" + +#: utils/adt/rowtypes.c:153 +msgid "Missing left parenthesis." +msgstr "Manca la parentesi tonda aperta." + +#: utils/adt/rowtypes.c:181 +msgid "Too few columns." +msgstr "Il numero di colonne è insufficiente." + +#: utils/adt/rowtypes.c:205 utils/adt/rowtypes.c:213 +msgid "Unexpected end of input." +msgstr "L'input è terminato in modo inatteso." + +#: utils/adt/rowtypes.c:264 +msgid "Too many columns." +msgstr "Troppe colonne." + +#: utils/adt/rowtypes.c:272 +msgid "Junk after right parenthesis." +msgstr "Sono presenti caratteri spuri dopo la parentesi chiusa." + +#: utils/adt/rowtypes.c:537 +#, 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:564 +#, c-format +msgid "wrong data type: %u, expected %u" +msgstr "il tipo di dati non è corretto, %u invece di %u" + +#: utils/adt/rowtypes.c:625 +#, 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:925 utils/adt/rowtypes.c:1160 +#, 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:1011 utils/adt/rowtypes.c:1231 +msgid "cannot compare record types with different numbers of columns" +msgstr "non è possibile confrontare tipi di record con diverso numero di colonne" + +#: utils/adt/nabstime.c:160 +#, c-format +msgid "invalid time zone name: \"%s\"" +msgstr "il nome del fuso orario \"%s\" non è valido" + +#: utils/adt/nabstime.c:506 utils/adt/nabstime.c:579 +msgid "cannot convert abstime \"invalid\" to timestamp" +msgstr "non è possibile convertire il valore abstime \"invalid\" in timestamp" + +#: utils/adt/nabstime.c:806 +msgid "invalid status in external \"tinterval\" value" +msgstr "lo stato nel valore del \"tinterval\" esterno non è valido" + +#: utils/adt/nabstime.c:880 +msgid "cannot convert reltime \"invalid\" to interval" +msgstr "non è possibile convertire il valore reltime \"invalid\" in interval" + +#: utils/adt/nabstime.c:1575 +#, c-format +msgid "invalid input syntax for type tinterval: \"%s\"" +msgstr "sintassi di input non valida per il tipo tinterval: \"%s\"" + +#: utils/adt/numutils.c:75 +#, c-format +msgid "value \"%s\" is out of range for type integer" +msgstr "il valore \"%s\" è fuori dall'intervallo consentito per il tipo integer" + +#: utils/adt/numutils.c:81 +#, c-format +msgid "value \"%s\" is out of range for type smallint" +msgstr "il valore \"%s\" è fuori dall'intervallo consentito per il tipo smallint" + +#: utils/adt/numutils.c:87 +#, c-format +msgid "value \"%s\" is out of range for 8-bit integer" +msgstr "il valore \"%s\" è fuori dall'intervallo consentito per un intero a 8 bit" + +#: utils/adt/pg_locale.c:953 +#, c-format +msgid "could not create locale \"%s\": %m" +msgstr "creazione del locale \"%s\" fallita: %m" + +#: utils/adt/pg_locale.c:956 +#, 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:1043 +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:1058 +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:1229 +msgid "invalid multibyte character for locale" +msgstr "carattere multibyte non valido per il locale" + +#: utils/adt/pg_locale.c:1230 +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/encode.c:55 utils/adt/encode.c:91 +#, c-format +msgid "unrecognized encoding: \"%s\"" +msgstr "codifica sconosciuta: \"%s\"" + +#: utils/adt/encode.c:150 +#, c-format +msgid "invalid hexadecimal digit: \"%c\"" +msgstr "cifra esadecimale non valida: \"%c\"" + +#: utils/adt/encode.c:178 +msgid "invalid hexadecimal data: odd number of digits" +msgstr "i dati esadecimali non sono validi: numero dispari di cifre" + +#: utils/adt/encode.c:295 +msgid "unexpected \"=\"" +msgstr "il simbolo \"=\" non era previsto" + +#: utils/adt/encode.c:307 +msgid "invalid symbol" +msgstr "il simbolo non è valido" + +#: utils/adt/encode.c:327 +msgid "invalid end sequence" +msgstr "la sequenza finale non è valida" + +#: 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 "sintassi di input non valida per il 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 "il valore \"%s\" è fuori dall'intervallo consentito per il tipo oid" + +#: utils/adt/oid.c:287 +msgid "invalid oidvector data" +msgstr "i dati nell'oidvector non sono validi" + +#: utils/adt/acl.c:253 +#, c-format +msgid "unrecognized key word: \"%s\"" +msgstr "parola chiave sconosciuta: \"%s\"" + +#: utils/adt/acl.c:254 +msgid "ACL key word must be \"group\" or \"user\"." +msgstr "la parola chiave ACL deve essere \"group\" o \"user\"." + +#: utils/adt/acl.c:259 +msgid "missing name" +msgstr "manca il nome" + +#: utils/adt/acl.c:260 +msgid "A name must follow the \"group\" or \"user\" key word." +msgstr "le parole chiave \"group\" o \"user\" devono essere seguite da un nome." + +#: utils/adt/acl.c:266 +msgid "missing \"=\" sign" +msgstr "manca il simbolo \"=\"" + +#: utils/adt/acl.c:319 +#, c-format +msgid "invalid mode character: must be one of \"%s\"" +msgstr "il carattere di modo non è valido: deve essere uno fra \"%s\"" + +#: utils/adt/acl.c:341 +msgid "a name must follow the \"/\" sign" +msgstr "il simbolo \"/\" deve essere seguito da un nome" + +#: utils/adt/acl.c:349 +#, c-format +msgid "defaulting grantor to user ID %u" +msgstr "l'user ID %u è ora chi concede i ruoli in maniera predefinita" + +#: utils/adt/acl.c:540 +msgid "ACL array contains wrong data type" +msgstr "l'array di ACL array contiene tipi di dati errati" + +#: utils/adt/acl.c:544 +msgid "ACL arrays must be one-dimensional" +msgstr "gli array di ACL devono avere una sola dimensione" + +#: utils/adt/acl.c:548 +msgid "ACL arrays must not contain null values" +msgstr "gli array di ACL non possono contenere valori nulli" + +#: utils/adt/acl.c:572 +msgid "extra garbage at the end of the ACL specification" +msgstr "ci sono caratteri spuri al termine della specifica dell'ACL" + +#: utils/adt/acl.c:1129 +msgid "grant options cannot be granted back to your own grantor" +msgstr "le opzioni di concessione non possono essere concesse a chi le ha concesse a te" + +#: utils/adt/acl.c:1190 +msgid "dependent privileges exist" +msgstr "esistono privilegi dipendenti" + +#: utils/adt/acl.c:1191 +msgid "Use CASCADE to revoke them too." +msgstr "Usa CASCADE per revocare anch'essi." + +#: utils/adt/acl.c:1470 +msgid "aclinsert is no longer supported" +msgstr "aclinsert non è più supportato" + +#: utils/adt/acl.c:1480 +msgid "aclremove is no longer supported" +msgstr "aclremove non è più supportato" + +#: utils/adt/acl.c:1566 utils/adt/acl.c:1620 +#, c-format +msgid "unrecognized privilege type: \"%s\"" +msgstr "tipo di privilegio sconosciuto: \"%s\"" + +#: 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 +#: commands/tablecmds.c:209 commands/tablecmds.c:2175 +#: commands/tablecmds.c:2422 commands/tablecmds.c:9037 +#: commands/sequence.c:1032 catalog/aclchk.c:1692 catalog/objectaddress.c:398 +#, c-format +msgid "\"%s\" is not a sequence" +msgstr "\"%s\" non è una sequenza" + +#: 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 "la funzione \"%s\" non esiste" + +#: utils/adt/acl.c:4608 +#, c-format +msgid "must be member of role \"%s\"" +msgstr "occorre far parte del ruolo \"%s\"" + +#: utils/adt/enum.c:49 utils/adt/enum.c:59 utils/adt/enum.c:118 +#: utils/adt/enum.c:128 +#, c-format +msgid "invalid input value for enum %s: \"%s\"" +msgstr "la sintassi per l'enumerazione %s non è valida: \"%s\"" + +#: utils/adt/enum.c:86 utils/adt/enum.c:153 utils/adt/enum.c:203 +#, c-format +msgid "invalid internal value for enum: %u" +msgstr "il valore interno per l'enumerazione non è valido: %u" + +#: utils/adt/enum.c:362 utils/adt/enum.c:391 utils/adt/enum.c:431 +#: utils/adt/enum.c:451 +msgid "could not determine actual enum type" +msgstr "determinazione del tipo reale di enumerazione fallita" + +#: utils/adt/enum.c:370 utils/adt/enum.c:399 +#, c-format +msgid "enum %s contains no values" +msgstr "l'enumerazione %s non contiene valori" + +#: 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:2888 +msgid "MATCH PARTIAL not yet implemented" +msgstr "il MATCH PARTIAL non è stato ancora implementato" + +#: utils/adt/ri_triggers.c:409 utils/adt/ri_triggers.c:2841 +#: utils/adt/ri_triggers.c:3535 utils/adt/ri_triggers.c:3567 +#, 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:412 utils/adt/ri_triggers.c:2844 +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:3080 commands/constraint.c:59 +#, c-format +msgid "function \"%s\" was not called by trigger manager" +msgstr "la funzione \"%s\" non è stata invocata dal trigger manager" + +#: utils/adt/ri_triggers.c:3089 commands/constraint.c:66 +#, c-format +msgid "function \"%s\" must be fired AFTER ROW" +msgstr "la funzione \"%s\" deve essere eseguita AFTER ROW" + +#: utils/adt/ri_triggers.c:3097 +#, 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:3103 +#, 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:3110 commands/constraint.c:80 +#, c-format +msgid "function \"%s\" must be fired for INSERT or UPDATE" +msgstr "la funzione \"%s\" deve essere eseguita per un INSERT o un UPDATE" + +#: utils/adt/ri_triggers.c:3117 +#, 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:3146 +#, 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:3148 +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:3502 +#, 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:3506 +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:3537 +#, c-format +msgid "No rows were found in \"%s\"." +msgstr "Non sono state trovate righe in \"%s\"." + +#: utils/adt/ri_triggers.c:3569 +#, 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:3575 +#, 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:3578 +#, c-format +msgid "Key (%s)=(%s) is still referenced from table \"%s\"." +msgstr "La chiave (%s)=(%s) è ancora referenziata dalla tabella \"%s\"." + +#: 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 "la sintassi di input non è valida per il tipo numeric: \"%s\"" + +#: utils/adt/numeric.c:653 +msgid "invalid length in external \"numeric\" value" +msgstr "la lunghezza nel valore \"numeric\" esterno non è valida" + +#: utils/adt/numeric.c:664 +msgid "invalid sign in external \"numeric\" value" +msgstr "il segno nel valore \"numeric\" esterno non è valido" + +#: utils/adt/numeric.c:674 +msgid "invalid digit in external \"numeric\" value" +msgstr "una delle cifre nel valore \"numeric\" esterno non è valida" + +#: utils/adt/numeric.c:814 utils/adt/numeric.c:828 +#, 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:819 +#, 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:837 +msgid "invalid NUMERIC type modifier" +msgstr "modificatore del tipo NUMERIC non valido" + +#: utils/adt/numeric.c:1881 utils/adt/numeric.c:3754 +msgid "value overflows numeric format" +msgstr "il valore causa un overflow nel formato numeric" + +#: utils/adt/numeric.c:2229 +msgid "cannot convert NaN to integer" +msgstr "non è possibile convertire NaN in un integer" + +#: utils/adt/numeric.c:2297 +msgid "cannot convert NaN to bigint" +msgstr "non è possibile convertire NaN in un bigint" + +#: utils/adt/numeric.c:2345 +msgid "cannot convert NaN to smallint" +msgstr "non è possibile convertire NaN in uno smallint" + +#: utils/adt/numeric.c:3824 +msgid "numeric field overflow" +msgstr "il campo numeric causa un overflow" + +#: 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 "Un campo con precisione %d e %d cifre decimali deve arrotondarsi ad un valore assoluto inferiore a %s%d." + +#: utils/adt/numeric.c:5273 +msgid "argument for function \"exp\" too big" +msgstr "il valore dell'argomento per la funzione \"exp\" è troppo grande" + +#: utils/adt/tsvector_parser.c:137 +#, c-format +msgid "syntax error in tsvector: \"%s\"" +msgstr "errore di sintassi in tsvector: \"%s\"" + +#: utils/adt/tsvector_parser.c:202 +#, c-format +msgid "there is no escaped character: \"%s\"" +msgstr "non c'è alcun carattere sottoposto ad escape: \"%s\"" + +#: utils/adt/tsvector_parser.c:319 +#, c-format +msgid "wrong position info in tsvector: \"%s\"" +msgstr "le informazioni di posizione nel tsvector sono errate: \"%s\"" + +#: utils/adt/regproc.c:123 utils/adt/regproc.c:143 +#, c-format +msgid "more than one function named \"%s\"" +msgstr "più di una funzione si chiama \"%s\"" + +#: 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 +#, c-format +msgid "operator does not exist: %s" +msgstr "l'operatore non esiste: %s" + +#: utils/adt/regproc.c:468 utils/adt/regproc.c:488 +#, c-format +msgid "more than one operator named %s" +msgstr "più di un operatore si chiama %s" + +#: utils/adt/regproc.c:630 gram.y:6218 +msgid "missing argument" +msgstr "argomento mancante" + +#: utils/adt/regproc.c:631 gram.y:6219 +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:636 +msgid "Provide two argument types for operator." +msgstr "Fornisci due tipi di argomento per l'operatore." + +#: utils/adt/regproc.c:810 commands/lockcmds.c:127 catalog/namespace.c:290 +#: parser/parse_relation.c:857 parser/parse_relation.c:865 +#, c-format +msgid "relation \"%s\" does not exist" +msgstr "la relazione \"%s\" non esiste" + +#: utils/adt/regproc.c:973 commands/tablecmds.c:225 +#: commands/functioncmds.c:128 commands/typecmds.c:660 +#: commands/typecmds.c:2661 parser/parse_func.c:1502 parser/parse_type.c:196 +#, c-format +msgid "type \"%s\" does not exist" +msgstr "il tipo \"%s\" non esiste" + +#: utils/adt/regproc.c:1383 +msgid "expected a left parenthesis" +msgstr "era attesa un parentesi tonda aperta" + +#: utils/adt/regproc.c:1399 +msgid "expected a right parenthesis" +msgstr "era attesa un parentesi tonda chiusa" + +#: utils/adt/regproc.c:1418 +msgid "expected a type name" +msgstr "era atteso il nome di un tipo" + +#: utils/adt/regproc.c:1450 +msgid "improper type name" +msgstr "il nome del tipo non è corretto" + +#: snowball/dict_snowball.c:183 +#, c-format +msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\"" +msgstr "non è disponibile uno stemmer Snowball per la lingua \"%s\" e la codifica \"%s\"" + +#: snowball/dict_snowball.c:206 tsearch/dict_ispell.c:75 +#: tsearch/dict_simple.c:50 +msgid "multiple StopWords parameters" +msgstr "più di un parametro StopWords" + +#: snowball/dict_snowball.c:215 +msgid "multiple Language parameters" +msgstr "più di un parametro Language" + +#: snowball/dict_snowball.c:222 +#, c-format +msgid "unrecognized Snowball parameter: \"%s\"" +msgstr "parametro Snowball sconosciuto: \"%s\"" + +#: snowball/dict_snowball.c:230 +msgid "missing Language parameter" +msgstr "parametro Language mancante" + +#: bootstrap/bootstrap.c:294 +#, c-format +msgid "%s: invalid command-line arguments\n" +msgstr "%s: parametri della riga di comando non validi\n" + +#: lib/stringinfo.c:267 +#, 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." + +#: tsearch/ts_locale.c:177 +#, c-format +msgid "line %d of configuration file \"%s\": \"%s\"" +msgstr "riga %d del file di configurazione \"%s\": \"%s\"" + +#: tsearch/ts_locale.c:182 libpq/hba.c:781 libpq/hba.c:797 libpq/hba.c:833 +#: libpq/hba.c:855 libpq/hba.c:864 libpq/hba.c:887 libpq/hba.c:899 +#: libpq/hba.c:912 libpq/hba.c:927 libpq/hba.c:982 libpq/hba.c:1002 +#: libpq/hba.c:1016 libpq/hba.c:1033 libpq/hba.c:1046 libpq/hba.c:1062 +#: libpq/hba.c:1077 libpq/hba.c:1119 libpq/hba.c:1151 libpq/hba.c:1162 +#: libpq/hba.c:1182 libpq/hba.c:1193 libpq/hba.c:1204 libpq/hba.c:1221 +#: libpq/hba.c:1242 libpq/hba.c:1272 libpq/hba.c:1284 libpq/hba.c:1297 +#: libpq/hba.c:1331 libpq/hba.c:1405 libpq/hba.c:1423 libpq/hba.c:1444 +#: libpq/hba.c:1475 libpq/hba.c:1485 +#, c-format +msgid "line %d of configuration file \"%s\"" +msgstr "riga %d del file di configurazione \"%s\"" + +#: tsearch/ts_locale.c:302 +#, c-format +msgid "conversion from wchar_t to server encoding failed: %m" +msgstr "conversione da wchar_t a codifica server fallita: %m" + +#: tsearch/dict_thesaurus.c:180 +#, c-format +msgid "could not open thesaurus file \"%s\": %m" +msgstr "apertura del file thesaurus \"%s\" fallita: %m" + +#: tsearch/dict_thesaurus.c:213 +msgid "unexpected delimiter" +msgstr "delimitatore non previsto" + +#: tsearch/dict_thesaurus.c:263 tsearch/dict_thesaurus.c:279 +msgid "unexpected end of line or lexeme" +msgstr "fine della riga o del lessema inaspettata" + +#: tsearch/dict_thesaurus.c:288 +msgid "unexpected end of line" +msgstr "fine della riga non attesa" + +#: tsearch/dict_thesaurus.c:412 +#, 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:418 +#, 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:421 +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:567 +#, 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:574 +#, 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:586 +#, c-format +msgid "thesaurus substitute phrase is empty (rule %d)" +msgstr "la frase di sostituzione del thesaurus è vuota (regola %d)" + +#: tsearch/dict_thesaurus.c:615 tsearch/dict_ispell.c:53 +msgid "multiple DictFile parameters" +msgstr "più di un parametro DictFile" + +#: tsearch/dict_thesaurus.c:624 +msgid "multiple Dictionary parameters" +msgstr "più di un parametro Dictionary" + +#: tsearch/dict_thesaurus.c:631 +#, c-format +msgid "unrecognized Thesaurus parameter: \"%s\"" +msgstr "parametro di Thesaurus sconosciuto: \"%s\"" + +#: tsearch/dict_thesaurus.c:639 tsearch/dict_ispell.c:103 +msgid "missing DictFile parameter" +msgstr "parametro DictFile mancante" + +#: tsearch/dict_thesaurus.c:643 +msgid "missing Dictionary parameter" +msgstr "parametro di Dictionary mancante" + +#: 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 "la parola è troppo lunga per essere indicizzata" + +#: 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 "Le parole più lunghe di %d caratteri sono ignorate." + +#: tsearch/wparser.c:314 +msgid "text search parser does not support headline creation" +msgstr "l'analizzatore di ricerca di testo non supporta la creazione di intestazioni" + +#: tsearch/wparser_def.c:2555 +#, c-format +msgid "unrecognized headline parameter: \"%s\"" +msgstr "parametro di intestazione sconosciuto: \"%s\"" + +#: tsearch/wparser_def.c:2564 +msgid "MinWords should be less than MaxWords" +msgstr "MinWords dovrebbe essere minore di MaxWords" + +#: tsearch/wparser_def.c:2568 +msgid "MinWords should be positive" +msgstr "MinWords dovrebbe essere positivo" + +#: tsearch/wparser_def.c:2572 +msgid "ShortWord should be >= 0" +msgstr "ShortWord dovrebbe essere >= 0" + +#: tsearch/wparser_def.c:2576 +msgid "MaxFragments should be >= 0" +msgstr "MaxFragments dovrebbe essere >= 0" + +#: tsearch/spell.c:276 +#, c-format +msgid "could not open dictionary file \"%s\": %m" +msgstr "apertura del file dictionary \"%s\" fallita: %m" + +#: tsearch/spell.c:518 tsearch/spell.c:535 tsearch/spell.c:552 +#: tsearch/spell.c:569 tsearch/spell.c:591 gram.y:12514 gram.y:12531 +msgid "syntax error" +msgstr "errore di sintassi" + +#: tsearch/spell.c:596 tsearch/spell.c:842 tsearch/spell.c:862 +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 +#, c-format +msgid "could not open affix file \"%s\": %m" +msgstr "apertura del file affix \"%s\" fallita: %m" + +#: tsearch/spell.c:675 +msgid "Ispell dictionary supports only default flag value" +msgstr "il dizionario Ispell supporta solo il flag di valore default" + +#: tsearch/spell.c:873 +msgid "wrong affix file format for flag" +msgstr "formato del file affix non corretto per il flag" + +#: tsearch/dict_ispell.c:64 +msgid "multiple AffFile parameters" +msgstr "più di un parametro AffFile" + +#: tsearch/dict_ispell.c:83 +#, c-format +msgid "unrecognized Ispell parameter: \"%s\"" +msgstr "parametro Ispell sconosciuto: \"%s\"" + +#: tsearch/dict_ispell.c:97 +msgid "missing AffFile parameter" +msgstr "parametro AffFile mancante" + +#: tsearch/ts_utils.c:53 +#, c-format +msgid "invalid text search configuration file name \"%s\"" +msgstr "nome del file di configurazione di ricerca di test non valido \"%s\"" + +#: tsearch/ts_utils.c:91 +#, c-format +msgid "could not open stop-word file \"%s\": %m" +msgstr "apertura del file delle stop word \"%s\" fallita: %m" + +#: tsearch/dict_synonym.c:119 +#, c-format +msgid "unrecognized synonym parameter: \"%s\"" +msgstr "parametro synonym sconosciuto: \"%s\"" + +#: tsearch/dict_synonym.c:126 +msgid "missing Synonyms parameter" +msgstr "parametro Synonyms mancante" + +#: tsearch/dict_synonym.c:133 +#, c-format +msgid "could not open synonym file \"%s\": %m" +msgstr "apertura del file synonym \"%s\" fallita: %m" + +#: tsearch/dict_simple.c:59 +msgid "multiple Accept parameters" +msgstr "più di un parametro Accept" + +#: tsearch/dict_simple.c:67 +#, c-format +msgid "unrecognized simple dictionary parameter: \"%s\"" +msgstr "parametro del dizionario simple sconosciuto: \"%s\"" + +#: tcop/pquery.c:661 +#, c-format +msgid "bind message has %d result formats but query has %d columns" +msgstr "il messaggio di bind ha %d formati di risultato ma la query ha %d colonne" + +#: tcop/pquery.c:739 tcop/pquery.c:1403 commands/portalcmds.c:341 +#, c-format +msgid "portal \"%s\" cannot be run" +msgstr "il portale \"%s\" non può essere eseguito" + +#: tcop/pquery.c:971 +msgid "cursor can only scan forward" +msgstr "il cursore effettuare solo scansioni in avanti" + +#: tcop/pquery.c:972 +msgid "Declare it with SCROLL option to enable backward scan." +msgstr "Dichiaralo con l'opzione SCROLL per abilitare le scansioni all'indietro." + +#: tcop/fastpath.c:109 tcop/fastpath.c:485 tcop/fastpath.c:615 +#, 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:180 tcop/fastpath.c:554 tcop/postgres.c:1666 +#: access/common/printtup.c:278 +#, c-format +msgid "unsupported format code: %d" +msgstr "codice di formato non supportato: %d" + +#: tcop/fastpath.c:221 catalog/aclchk.c:3546 catalog/aclchk.c:4296 +#, c-format +msgid "function with OID %u does not exist" +msgstr "la funzione con OID %u non esiste" + +#: tcop/fastpath.c:290 tcop/postgres.c:351 tcop/postgres.c:374 +#: commands/copy.c:542 commands/copy.c:561 commands/copy.c:565 +msgid "unexpected EOF on client connection" +msgstr "fine file inaspettata nella connessione al client" + +#: tcop/fastpath.c:303 tcop/postgres.c:919 tcop/postgres.c:1229 +#: tcop/postgres.c:1510 tcop/postgres.c:1952 tcop/postgres.c:2320 +#: tcop/postgres.c:2401 +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:331 +#, c-format +msgid "fastpath function call: \"%s\" (OID %u)" +msgstr "chiamata funzione fastpath: \"%s\" (OID %u)" + +#: tcop/fastpath.c:411 tcop/postgres.c:1089 tcop/postgres.c:1376 +#: tcop/postgres.c:1793 tcop/postgres.c:2010 +#, c-format +msgid "duration: %s ms" +msgstr "durata: %s ms" + +#: tcop/fastpath.c:415 +#, 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:453 tcop/fastpath.c:580 +#, 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:461 +#, 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:548 tcop/fastpath.c:631 +#, 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:401 tcop/postgres.c:413 tcop/postgres.c:424 +#: tcop/postgres.c:436 tcop/postgres.c:4194 +#, c-format +msgid "invalid frontend message type %d" +msgstr "messaggio frontend di tipo %d non valido" + +#: tcop/postgres.c:860 +#, c-format +msgid "statement: %s" +msgstr "istruzione: %s" + +#: tcop/postgres.c:1094 +#, c-format +msgid "duration: %s ms statement: %s" +msgstr "durata: %s ms istruzione: %s" + +#: tcop/postgres.c:1144 +#, c-format +msgid "parse %s: %s" +msgstr "analisi di %s: %s" + +#: tcop/postgres.c:1202 +msgid "cannot insert multiple commands into a prepared statement" +msgstr "non è possibile inserire comandi multipli in una istruzione preparata" + +#: tcop/postgres.c:1269 commands/prepare.c:122 parser/parse_param.c:303 +#, c-format +msgid "could not determine data type of parameter $%d" +msgstr "non è stato possibile determinare il tipo di dato del parametro $%d" + +#: tcop/postgres.c:1381 +#, c-format +msgid "duration: %s ms parse %s: %s" +msgstr "durata: %s ms analisi di %s: %s" + +#: tcop/postgres.c:1427 +#, c-format +msgid "bind %s to %s" +msgstr "bind di %s a %s" + +#: tcop/postgres.c:1446 tcop/postgres.c:2300 +msgid "unnamed prepared statement does not exist" +msgstr "l'istruzione preparata senza nome non esiste" + +#: tcop/postgres.c:1488 +#, 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:1494 +#, 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:1659 +#, 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:1798 +#, c-format +msgid "duration: %s ms bind %s%s%s: %s" +msgstr "durata: %s ms bind %s%s%s: %s" + +#: tcop/postgres.c:1846 tcop/postgres.c:2387 +#, c-format +msgid "portal \"%s\" does not exist" +msgstr "il portale \"%s\" non esiste" + +#: tcop/postgres.c:1933 tcop/postgres.c:2018 +msgid "execute fetch from" +msgstr "esecuzione di fetch da" + +#: tcop/postgres.c:1934 tcop/postgres.c:2019 +msgid "execute" +msgstr "esecuzione di" + +#: tcop/postgres.c:1931 +#, c-format +msgid "%s %s%s%s: %s" +msgstr "%s %s%s%s: %s" + +#: tcop/postgres.c:2015 +#, c-format +msgid "duration: %s ms %s %s%s%s: %s" +msgstr "durata: %s ms %s %s%s%s: %s" + +#: tcop/postgres.c:2141 +#, c-format +msgid "prepare: %s" +msgstr "preparazione: %s" + +#: tcop/postgres.c:2204 +#, c-format +msgid "parameters: %s" +msgstr "parametri: %s" + +#: tcop/postgres.c:2223 +msgid "abort reason: recovery conflict" +msgstr "motivo dell'interruzione: conflitto di recupero" + +#: tcop/postgres.c:2239 +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:2242 +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:2245 +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:2248 +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:2251 storage/ipc/standby.c:498 +msgid "User transaction caused buffer deadlock with recovery." +msgstr "La transazione utente ha causato un deadlock del buffer con il ripristino." + +#: tcop/postgres.c:2254 +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:2595 +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:2596 +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:2600 tcop/postgres.c:2950 +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:2712 +msgid "floating-point exception" +msgstr "eccezione floating-point" + +#: tcop/postgres.c:2713 +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:2881 +msgid "terminating autovacuum process due to administrator command" +msgstr "interruzione del processo autovacuum su comando dell'amministratore" + +#: tcop/postgres.c:2887 tcop/postgres.c:2897 tcop/postgres.c:2948 +msgid "terminating connection due to conflict with recovery" +msgstr "interruzione della connessione a causa di conflitto con il ripristino" + +#: tcop/postgres.c:2903 +msgid "terminating connection due to administrator command" +msgstr "interruzione della connessione su comando dell'amministratore" + +#: tcop/postgres.c:2918 +msgid "canceling authentication due to timeout" +msgstr "annullamento dell'autenticazione a causa di timeout" + +#: tcop/postgres.c:2927 +msgid "canceling statement due to statement timeout" +msgstr "annullamento dell'istruzione a causa di timeout" + +#: tcop/postgres.c:2936 +msgid "canceling autovacuum task" +msgstr "annullamento del task di autovacuum" + +#: tcop/postgres.c:2955 storage/ipc/standby.c:497 +msgid "canceling statement due to conflict with recovery" +msgstr "annullamento dell'istruzione a causa di un conflitto con il ripristino" + +#: tcop/postgres.c:2971 +msgid "canceling statement due to user request" +msgstr "annullamento dell'istruzione su richiesta dell'utente" + +#: tcop/postgres.c:3099 tcop/postgres.c:3121 +msgid "stack depth limit exceeded" +msgstr "limite di profondità dello stack superato" + +#: tcop/postgres.c:3100 tcop/postgres.c:3122 +#, 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:3138 +#, c-format +msgid "\"max_stack_depth\" must not exceed %ldkB." +msgstr "\"max_stack_depth\" non deve superare %ldkB" + +#: tcop/postgres.c:3140 +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:3481 +msgid "invalid command-line arguments for server process" +msgstr "argomento della riga di comando non valido per il processo server" + +#: tcop/postgres.c:3482 tcop/postgres.c:3488 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Prova \"%s --help\" per maggiori informazioni." + +#: tcop/postgres.c:3486 +#, c-format +msgid "%s: invalid command-line arguments" +msgstr "%s: parametri della riga di comando non validi" + +#: tcop/postgres.c:3565 +#, c-format +msgid "%s: no database nor user name specified" +msgstr "%s: nessun database né nome utente specificato" + +#: tcop/postgres.c:4104 +#, c-format +msgid "invalid CLOSE message subtype %d" +msgstr "sottotipo %d del messaggio CLOSE non valido" + +#: tcop/postgres.c:4137 +#, c-format +msgid "invalid DESCRIBE message subtype %d" +msgstr "sottotipo %d del messaggio DESCRIBE non valido" + +#: tcop/postgres.c:4371 +#, c-format +msgid "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%s" +msgstr "disconnessione: tempo della sessione: %d:%02d:%02d.%03d utente=%s database=%s host=%s%s%s" + +#: tcop/utility.c:95 commands/tablecmds.c:817 commands/tablecmds.c:1150 +#: commands/tablecmds.c:1998 commands/tablecmds.c:3740 +#: commands/tablecmds.c:5483 commands/trigger.c:192 commands/trigger.c:1105 +#: rewrite/rewriteDefine.c:263 +#, c-format +msgid "permission denied: \"%s\" is a system catalog" +msgstr "permesso negato: \"%s\" è un catalogo di sistema" + +#. 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 "non è possibile eseguire %s in una transazione a sola lettura" + +#. translator: %s is name of a SQL command, eg CREATE +#: tcop/utility.c:272 +#, 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:290 +#, c-format +msgid "cannot execute %s within security-restricted operation" +msgstr "non è possibile eseguire %s nell'ambito di operazioni a sicurezza ristretta" + +#: tcop/utility.c:1198 +msgid "must be superuser to do CHECKPOINT" +msgstr "solo un superutente può eseguire CHECKPOINT" + +#: access/common/tupconvert.c:107 +#, c-format +msgid "Returned type %s does not match expected type %s in column %d." +msgstr "Il tipo restituito %s non corrisponde al tipo attesto %s nella colonna %d." + +#: access/common/tupconvert.c:135 +#, c-format +msgid "Number of returned columns (%d) does not match expected column count (%d)." +msgstr "il numero di colonne restituito (%d) non coincide col numero di colonne atteso (%d)" + +#: access/common/tupconvert.c:240 +#, c-format +msgid "Attribute \"%s\" of type %s does not match corresponding attribute of type %s." +msgstr "L'attributo \"%s\" di tipo %s non combacia con l'attributo corrispondente di tipo %s." + +#: access/common/tupconvert.c:252 +#, c-format +msgid "Attribute \"%s\" of type %s does not exist in type %s." +msgstr "L'attributo \"%s\" di tipo %s non esiste nel tipo %s." + +#: access/common/indextuple.c:57 +#, c-format +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 +#, c-format +msgid "index row requires %lu bytes, maximum size is %lu" +msgstr "la riga dell'indice richiede %lu byte, la dimensione massima è %lu" + +#: access/common/reloptions.c:323 +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:622 +msgid "RESET must not include values for parameters" +msgstr "RESET non deve contenere valori per i parametri" + +#: access/common/reloptions.c:655 +#, c-format +msgid "unrecognized parameter namespace \"%s\"" +msgstr "parametro del namespace \"%s\" sconosciuto" + +#: access/common/reloptions.c:898 +#, c-format +msgid "unrecognized parameter \"%s\"" +msgstr "parametro \"%s\" non identificato" + +#: access/common/reloptions.c:923 +#, c-format +msgid "parameter \"%s\" specified more than once" +msgstr "parametro \"%s\" specificato più di una volta" + +#: access/common/reloptions.c:938 +#, c-format +msgid "invalid value for boolean option \"%s\": %s" +msgstr "valore non valido per l'opzione booleana \"%s\": %s" + +#: access/common/reloptions.c:949 +#, c-format +msgid "invalid value for integer option \"%s\": %s" +msgstr "valore non valido per l'opzione intera \"%s\": %s" + +#: access/common/reloptions.c:954 access/common/reloptions.c:972 +#, 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:956 +#, 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:967 +#, 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:974 +#, c-format +msgid "Valid values are between \"%f\" and \"%f\"." +msgstr "I valori validi sono quelli compresi fra \"%f\" e \"%f\"." + +#: access/common/tupdesc.c:581 parser/parse_relation.c:1178 +#, c-format +msgid "column \"%s\" cannot be declared SETOF" +msgstr "la colonna \"%s\" non può essere dichiarata SETOF" + +#: access/common/heaptuple.c:646 access/common/heaptuple.c:1398 +#, c-format +msgid "number of columns (%d) exceeds limit (%d)" +msgstr "il numero di colonne (%d) eccede il limite (%d)" + +#: access/hash/hashovfl.c:547 +#, c-format +msgid "out of overflow pages in hash index \"%s\"" +msgstr "pagine di overflow esaurite per l'indice hash \"%s\"" + +#: access/hash/hashsearch.c:152 +msgid "hash indexes do not support whole-index scans" +msgstr "gli indici hash non supportano scansioni sull'intero indice" + +#: access/hash/hashinsert.c:73 +#, 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" + +#: access/hash/hashinsert.c:76 +msgid "Values larger than a buffer page cannot be indexed." +msgstr "Non si possono indicizzare valori più grandi di una pagina di buffer." + +#: access/hash/hashutil.c:170 access/nbtree/nbtpage.c:433 +#: access/gist/gistutil.c:632 +#, 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/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 +#: access/gist/gist.c:731 access/gist/gistutil.c:635 +#: access/gist/gistutil.c:646 access/gist/gistvacuum.c:274 +msgid "Please REINDEX it." +msgstr "Si richiede l'esecuzione di REINDEX." + +#: access/hash/hashutil.c:181 access/hash/hashutil.c:193 +#: access/nbtree/nbtpage.c:444 access/gist/gistutil.c:643 +#, c-format +msgid "index \"%s\" contains corrupted page at block %u" +msgstr "l'indice \"%s\" contiene una pagina corrotta al blocco %u" + +#: access/hash/hashutil.c:209 +#, c-format +msgid "index \"%s\" is not a hash index" +msgstr "l'indice \"%s\" non è un indice hash" + +#: access/hash/hashutil.c:215 +#, c-format +msgid "index \"%s\" has wrong hash version" +msgstr "l'indice \"%s\" ha una versione errata dell'hash" + +#: access/heap/hio.c:175 access/heap/rewriteheap.c:597 +#, c-format +msgid "row is too big: size %lu, maximum size %lu" +msgstr "riga troppo grande: la dimensione è %lu mentre il massimo è %lu" + +#: access/heap/heapam.c:1089 access/heap/heapam.c:1117 +#: access/heap/heapam.c:1147 catalog/aclchk.c:1677 +#, c-format +msgid "\"%s\" is an index" +msgstr "\"%s\" è un indice" + +#: access/heap/heapam.c:1094 access/heap/heapam.c:1122 +#: access/heap/heapam.c:1152 commands/tablecmds.c:2197 +#: commands/tablecmds.c:7413 commands/tablecmds.c:9087 catalog/aclchk.c:1684 +#, c-format +msgid "\"%s\" is a composite type" +msgstr "\"%s\" è un tipo composito" + +#: access/heap/heapam.c:3224 access/heap/heapam.c:3255 +#: access/heap/heapam.c:3290 +#, c-format +msgid "could not obtain lock on row in relation \"%s\"" +msgstr "lock di riga nella relazione \"%s\" fallito" + +#: access/transam/xact.c:729 +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" + +#: access/transam/xact.c:1269 +#, c-format +msgid "maximum number of committed subtransactions (%d) exceeded" +msgstr "il numero massimo di sottotransazioni committed (%d) è stato superato" + +#: access/transam/xact.c:2045 +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" + +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2837 +#, 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:2847 +#, 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:2857 +#, 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:2908 +#, 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:3090 +msgid "there is already a transaction in progress" +msgstr "c'è già una transazione in corso" + +#: access/transam/xact.c:3257 access/transam/xact.c:3349 +msgid "there is no transaction in progress" +msgstr "non c'è alcuna transazione in corso" + +#: access/transam/xact.c:3443 access/transam/xact.c:3493 +#: access/transam/xact.c:3499 access/transam/xact.c:3543 +#: access/transam/xact.c:3591 access/transam/xact.c:3597 +msgid "no such savepoint" +msgstr "punto di salvataggio inesistente" + +#: access/transam/xact.c:4244 +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/varsup.c:114 +#, c-format +msgid "database is not accepting commands to avoid wraparound data loss in database \"%s\"" +msgstr "il database non accetta comandi per evitare perdita di dati per wraparound \"%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 "" +"Arresta il processo postmaster ed utilizza un backend autonomo per effettuare il VACUUM sul database.\n" +"Potrebbe essere necessario inoltre effettuare il COMMIT o il ROLLBACK di vecchie transazioni preparate." + +#: access/transam/varsup.c:121 +#, c-format +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:133 access/transam/varsup.c:368 +#, 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: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 "" +"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/varsup.c:140 access/transam/varsup.c:375 +#, 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:333 +#, 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/twophase.c:250 +#, c-format +msgid "transaction identifier \"%s\" is too long" +msgstr "l'identificativo di transazione \"%s\" è troppo lungo" + +#: access/transam/twophase.c:257 +msgid "prepared transactions are disabled" +msgstr "le transazione preparate sono disabilitate" + +#: access/transam/twophase.c:258 +msgid "Set max_prepared_transactions to a nonzero value." +msgstr "Imposta max_prepared_transactions ad un valore non nullo." + +#: access/transam/twophase.c:291 +#, c-format +msgid "transaction identifier \"%s\" is already in use" +msgstr "l'identificativo di transazione \"%s\" è già in uso" + +#: access/transam/twophase.c:300 +msgid "maximum number of prepared transactions reached" +msgstr "è stato raggiunto il numero massimo di transazioni preparate" + +#: access/transam/twophase.c:301 +#, 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:421 +#, c-format +msgid "prepared transaction with identifier \"%s\" is busy" +msgstr "la transazione preparata con identificativo \"%s\" è in uso" + +#: access/transam/twophase.c:429 +msgid "permission denied to finish prepared transaction" +msgstr "non è consentito portare a termine la transazione preparata" + +#: access/transam/twophase.c:430 +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:441 +msgid "prepared transaction belongs to another database" +msgstr "la transazione preparata appartiene ad un altro database" + +#: access/transam/twophase.c:442 +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:456 +#, c-format +msgid "prepared transaction with identifier \"%s\" does not exist" +msgstr "la transazione preparata con identificativo \"%s\" non esiste" + +#: access/transam/twophase.c:939 +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:957 +#, 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:971 access/transam/twophase.c:988 +#: access/transam/twophase.c:1044 access/transam/twophase.c:1464 +#: access/transam/twophase.c:1471 +#, 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:997 +#, 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:1050 access/transam/twophase.c:1489 +#, 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:1130 access/transam/twophase.c:1569 +#, 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:1147 +#, 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:1179 +#, 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:1271 +#, 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:1426 +#, 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:1455 +#, 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:1483 +#, 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:1578 +#, 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:1585 +#, 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:1650 +#, 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:1666 access/transam/twophase.c:1677 +#: access/transam/twophase.c:1790 access/transam/twophase.c:1801 +#: access/transam/twophase.c:1874 +#, 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:1779 access/transam/twophase.c:1863 +#, 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:1881 +#, c-format +msgid "recovering prepared transaction %u" +msgstr "recupero della transazione preparata %u" + +#: access/transam/slru.c:609 +#, c-format +msgid "file \"%s\" doesn't exist, reading as zeroes" +msgstr "il file \"%s\" non esiste, interpretato come zeri" + +#: 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 "non è stato possibile accedere allo stato della transazione %u" + +#: access/transam/slru.c:840 +#, c-format +msgid "Could not open file \"%s\": %m." +msgstr "Apertura del file \"%s\" fallita: %m." + +#: access/transam/slru.c:846 +#, c-format +msgid "Could not seek in file \"%s\" to offset %u: %m." +msgstr "Spostamento nel file \"%s\" all'offset %u fallito: %m." + +#: access/transam/slru.c:853 +#, c-format +msgid "Could not read from file \"%s\" at offset %u: %m." +msgstr "Lettura dal file \"%s\" all'offset %u fallita: %m." + +#: access/transam/slru.c:860 +#, c-format +msgid "Could not write to file \"%s\" at offset %u: %m." +msgstr "Scrittura nel file \"%s\" all'offset %u fallita: %m." + +#: access/transam/slru.c:867 +#, c-format +msgid "Could not fsync file \"%s\": %m." +msgstr "fsync del file \"%s\" fallito: %m." + +#: access/transam/slru.c:874 +#, c-format +msgid "Could not close file \"%s\": %m." +msgstr "Chiusura del file \"%s\" fallita: %m." + +#: access/transam/slru.c:1101 +#, c-format +msgid "could not truncate directory \"%s\": apparent wraparound" +msgstr "troncamento della directory \"%s\" fallito: probabile wraparound" + +#: access/transam/slru.c:1182 +#, c-format +msgid "removing file \"%s\"" +msgstr "cancellazione del file \"%s\"" + +#: access/transam/xlog.c:1340 +#, c-format +msgid "could not create archive status file \"%s\": %m" +msgstr "creazione del file di stato dell'archivio \"%s\" fallita: %m" + +#: access/transam/xlog.c:1348 +#, c-format +msgid "could not write archive status file \"%s\": %m" +msgstr "scrittura del file di stato dell'archivio \"%s\" fallita: %m" + +#: access/transam/xlog.c:1803 access/transam/xlog.c:10539 +#: replication/walreceiver.c:515 replication/walsender.c:1013 +#, c-format +msgid "could not seek in log file %u, segment %u to offset %u: %m" +msgstr "spostamento nel file di log %u fallito, segmento %u all'offset %u: %m" + +#: access/transam/xlog.c:1820 replication/walreceiver.c:532 +#, c-format +msgid "could not write to log file %u, segment %u at offset %u, length %lu: %m" +msgstr "scrittura nel file di log %u fallita, segmento %u all'offset %u, lunghezza %lu: %m" + +#: access/transam/xlog.c:2022 +#, c-format +msgid "updated min recovery point to %X/%X" +msgstr "min recovery point aggiornato a %X/%X" + +#: access/transam/xlog.c:2372 access/transam/xlog.c:2476 +#: access/transam/xlog.c:2705 access/transam/xlog.c:2776 +#: access/transam/xlog.c:2833 replication/walsender.c:1001 +#, c-format +msgid "could not open file \"%s\" (log file %u, segment %u): %m" +msgstr "apertura del file \"%s\" fallita (file di log %u, segmento %u): %m" + +#: access/transam/xlog.c:2437 access/transam/xlog.c:2569 +#: access/transam/xlog.c:4584 storage/file/copydir.c:269 storage/smgr/md.c:932 +#: storage/smgr/md.c:1137 storage/smgr/md.c:1291 +#, c-format +msgid "could not fsync file \"%s\": %m" +msgstr "fsync del file \"%s\" fallito: %m" + +#: access/transam/xlog.c:2442 access/transam/xlog.c:2574 +#: access/transam/xlog.c:4589 commands/copy.c:1329 storage/file/copydir.c:211 +#, c-format +msgid "could not close file \"%s\": %m" +msgstr "chiusura del file \"%s\" fallita: %m" + +#: access/transam/xlog.c:2546 +#, c-format +msgid "not enough data in file \"%s\"" +msgstr "il file \"%s\" non contiene abbastanza dati" + +#: access/transam/xlog.c:2665 +#, c-format +msgid "could not link file \"%s\" to \"%s\" (initialization of log file %u, segment %u): %m" +msgstr "creazione del link del file \"%s\" a \"%s\" fallita (inizializzazione del file di log %u, segmento %u): %m" + +#: access/transam/xlog.c:2677 +#, c-format +msgid "could not rename file \"%s\" to \"%s\" (initialization of log file %u, segment %u): %m" +msgstr "non è stato possibile rinominare il file da \"%s\" a \"%s\" (inizializzazione del file di log %u, segmento %u): %m" + +#: access/transam/xlog.c:2860 replication/walreceiver.c:489 +#, c-format +msgid "could not close log file %u, segment %u: %m" +msgstr "chiusura del file di log %u fallita, segmento %u: %m" + +#: access/transam/xlog.c:2940 access/transam/xlog.c:9377 storage/smgr/md.c:371 +#: storage/smgr/md.c:420 storage/smgr/md.c:1251 +#, c-format +msgid "could not remove file \"%s\": %m" +msgstr "rimozione del file \"%s\" fallita: %m" + +#: access/transam/xlog.c:3076 +#, c-format +msgid "archive file \"%s\" has wrong size: %lu instead of %lu" +msgstr "il file archivio \"%s\" è di dimensione errata: %lu invece di %lu" + +#: access/transam/xlog.c:3085 +#, c-format +msgid "restored log file \"%s\" from archive" +msgstr "file di log \"%s\" ripristinato dall'archivio" + +#: access/transam/xlog.c:3135 +#, 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" + +#. 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:3249 +#, c-format +msgid "%s \"%s\": return code %d" +msgstr "%s \"%s\": codice di uscita %d" + +# da non tradursi +# DV: perché? (trovato tradotto, tra l'altro) +#: access/transam/xlog.c:3359 access/transam/xlog.c:3542 +#, 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:3413 +#, c-format +msgid "recycled transaction log file \"%s\"" +msgstr "il file di log delle transazioni \"%s\" è stato riciclato" + +#: access/transam/xlog.c:3429 +#, c-format +msgid "removing transaction log file \"%s\"" +msgstr "eliminazione del file di log delle transazioni \"%s\"" + +#: access/transam/xlog.c:3452 +#, 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:3464 +#, 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:3502 access/transam/xlog.c:3512 +#, c-format +msgid "required WAL directory \"%s\" does not exist" +msgstr "la directory dei file WAL \"%s\" necessaria non esiste" + +#: access/transam/xlog.c:3518 +#, c-format +msgid "creating missing WAL directory \"%s\"" +msgstr "creazione della directory dei file WAL mancante \"%s\"" + +#: access/transam/xlog.c:3521 +#, c-format +msgid "could not create missing directory \"%s\": %m" +msgstr "creazione della directory mancante \"%s\" fallita: %m" + +#: access/transam/xlog.c:3555 +#, 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:3697 +#, c-format +msgid "incorrect hole size in record at %X/%X" +msgstr "lo hole size nel record in %X/%X non è corretto" + +#: access/transam/xlog.c:3710 +#, c-format +msgid "incorrect total length in record at %X/%X" +msgstr "la lunghezza totale del record in %X/%X non è corretta" + +#: access/transam/xlog.c:3723 +#, c-format +msgid "incorrect resource manager data checksum in record at %X/%X" +msgstr "il checksum dei dati del resource manager del record in %X/%X non è corretto" + +#: access/transam/xlog.c:3801 access/transam/xlog.c:3839 +#, c-format +msgid "invalid record offset at %X/%X" +msgstr "l'offset del record in %X/%X non è valido" + +#: access/transam/xlog.c:3847 +#, c-format +msgid "contrecord is requested by %X/%X" +msgstr "richiesto contrecord da %X/%X" + +#: access/transam/xlog.c:3862 +#, c-format +msgid "invalid xlog switch record at %X/%X" +msgstr "il record di xlog switch in %X/%X non è valido" + +#: access/transam/xlog.c:3870 +#, c-format +msgid "record with zero length at %X/%X" +msgstr "il record in %X/%X ha lunghezza nulla" + +#: access/transam/xlog.c:3879 +#, c-format +msgid "invalid record length at %X/%X" +msgstr "la lunghezza del record in %X/%X non è valida" + +#: access/transam/xlog.c:3886 +#, c-format +msgid "invalid resource manager ID %u at %X/%X" +msgstr "l'ID %u del resource manager in %X/%X non è valido" + +#: access/transam/xlog.c:3899 access/transam/xlog.c:3915 +#, c-format +msgid "record with incorrect prev-link %X/%X at %X/%X" +msgstr "il puntatore all'indietro %X/%X del record in %X/%X non è corretto" + +#: access/transam/xlog.c:3944 +#, c-format +msgid "record length %u at %X/%X too long" +msgstr "la lunghezza %u del record in %X/%X è eccessiva" + +#: access/transam/xlog.c:3984 +#, c-format +msgid "there is no contrecord flag in log file %u, segment %u, offset %u" +msgstr "non esiste alcun flag di contrecord nel file di log %u, segmento %u, offset %u" + +#: access/transam/xlog.c:3994 +#, c-format +msgid "invalid contrecord length %u in log file %u, segment %u, offset %u" +msgstr "la lunghezza %u del contrecord nel file di log %u, segmento %u, offset %u non è valida" + +#: access/transam/xlog.c:4084 +#, c-format +msgid "invalid magic number %04X in log file %u, segment %u, offset %u" +msgstr "il magic number %04X nel file di log %u, segmento %u, offset %u non è valido" + +#: access/transam/xlog.c:4091 access/transam/xlog.c:4137 +#, c-format +msgid "invalid info bits %04X in log file %u, segment %u, offset %u" +msgstr "i bit informativi %04X nel file registro %u, segmento %u, offset %u non sono validi" + +#: access/transam/xlog.c:4113 access/transam/xlog.c:4121 +#: access/transam/xlog.c:4128 +msgid "WAL file is from different database system" +msgstr "il file WAL proviene da un sistema diverso" + +#: access/transam/xlog.c:4114 +#, c-format +msgid "WAL file database system identifier is %s, pg_control database system identifier is %s." +msgstr "l'identificativo di sistema del database del file WAL è %s, l'identificativo di sistema del database di pg_control è %s." + +#: access/transam/xlog.c:4122 +msgid "Incorrect XLOG_SEG_SIZE in page header." +msgstr "XLOG_SEG_SIZE non corretto nell'intestazione pagina." + +#: access/transam/xlog.c:4129 +msgid "Incorrect XLOG_BLCKSZ in page header." +msgstr "XLOG_BLCKSZ non corretto nell'intestazione pagina." + +#: access/transam/xlog.c:4145 +#, c-format +msgid "unexpected pageaddr %X/%X in log file %u, segment %u, offset %u" +msgstr "il pageaddr %X/%X nel file di log %u, segmento %u, offset %u non era previsto" + +#: access/transam/xlog.c:4157 +#, c-format +msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u" +msgstr "l'ID della timeline %u nel file di log %u, segmento %u, offset %u non era previsto" + +#: access/transam/xlog.c:4184 +#, c-format +msgid "out-of-sequence timeline ID %u (after %u) in log file %u, segment %u, offset %u" +msgstr "l'ID della timeline %u (dopo %u) nel file di log %u, segmento %u, offset %u è fuori sequenza" + +#: access/transam/xlog.c:4261 +#, c-format +msgid "syntax error in history file: %s" +msgstr "errore di sintassi nel file dello storico: %s" + +#: access/transam/xlog.c:4262 +msgid "Expected a numeric timeline ID." +msgstr "L'ID della timeline deve essere numerico." + +#: access/transam/xlog.c:4267 +#, c-format +msgid "invalid data in history file: %s" +msgstr "dati non validi nel file dello storico: %s" + +#: access/transam/xlog.c:4268 +msgid "Timeline IDs must be in increasing sequence." +msgstr "Gli ID della timeline devono essere in ordine crescente" + +#: access/transam/xlog.c:4281 +#, c-format +msgid "invalid data in history file \"%s\"" +msgstr "dati non validi nel file dello storico \"%s\"" + +#: access/transam/xlog.c:4282 +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/xlog.c:4368 +#, 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:4381 +#, c-format +msgid "new target timeline is %u" +msgstr "la nuova timeline di destinazione %u" + +#: access/transam/xlog.c:4606 +#, c-format +msgid "could not link file \"%s\" to \"%s\": %m" +msgstr "creazione del collegamento il file \"%s\" a \"%s\" fallita: %m" + +#: access/transam/xlog.c:4695 +#, c-format +msgid "could not create control file \"%s\": %m" +msgstr "creazione del file di controllo \"%s\" fallita: %m" + +#: access/transam/xlog.c:4706 access/transam/xlog.c:4931 +#, c-format +msgid "could not write to control file: %m" +msgstr "scrittura nel file di controllo fallita: %m" + +#: access/transam/xlog.c:4712 access/transam/xlog.c:4937 +#, c-format +msgid "could not fsync control file: %m" +msgstr "fsync del file di controllo fallito: %m" + +#: access/transam/xlog.c:4717 access/transam/xlog.c:4942 +#, c-format +msgid "could not close control file: %m" +msgstr "chiusura del file di controllo fallita: %m" + +#: access/transam/xlog.c:4735 access/transam/xlog.c:4920 +#, c-format +msgid "could not open control file \"%s\": %m" +msgstr "apertura del file di controllo \"%s\" fallita: %m" + +#: access/transam/xlog.c:4741 +#, c-format +msgid "could not read from control file: %m" +msgstr "lettura dal file di controllo fallita: %m" + +#: access/transam/xlog.c:4755 +#, 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:4759 +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:4764 +#, 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:4767 access/transam/xlog.c:4791 +#: access/transam/xlog.c:4798 access/transam/xlog.c:4803 +msgid "It looks like you need to initdb." +msgstr "Sembra sia necessario eseguire initdb." + +#: access/transam/xlog.c:4778 +msgid "incorrect checksum in control file" +msgstr "il checksum nel file di controllo non è corretto" + +#: access/transam/xlog.c:4788 +#, 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:4795 +#, 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:4802 +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:4807 +#, 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:4810 access/transam/xlog.c:4817 +#: access/transam/xlog.c:4824 access/transam/xlog.c:4831 +#: access/transam/xlog.c:4838 access/transam/xlog.c:4845 +#: access/transam/xlog.c:4852 access/transam/xlog.c:4860 +#: access/transam/xlog.c:4867 access/transam/xlog.c:4876 +#: access/transam/xlog.c:4883 access/transam/xlog.c:4892 +#: access/transam/xlog.c:4899 +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:4814 +#, 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:4821 +#, 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:4828 +#, 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:4835 +#, 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:4842 +#, 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:4849 +#, 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:4858 +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:4865 +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:4874 +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:4881 +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:4890 +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:4897 +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:5222 +#, 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:5228 +#, 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:5233 +#, 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:5300 +#, c-format +msgid "could not open recovery command file \"%s\": %m" +msgstr "apertura del file di ripristino \"%s\" fallita: %m" + +# da non tradurre +# DV: perché (già tradotto peraltro) +#: access/transam/xlog.c:5354 +#, 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:5370 +#, 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:5414 +#, 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:5461 +#, c-format +msgid "unrecognized recovery parameter \"%s\"" +msgstr "parametro di ripristino \"%s\" sconosciuto" + +#: access/transam/xlog.c:5472 +#, 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:5474 +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:5480 +#, 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:5500 +#, c-format +msgid "recovery target timeline %u does not exist" +msgstr "la timeline destinazione di recupero %u non esiste" + +#: access/transam/xlog.c:5630 +msgid "archive recovery complete" +msgstr "il ripristino dell'archivio è stato completato" + +#: access/transam/xlog.c:5748 +#, 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:5753 +#, 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:5761 +#, 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:5766 +#, 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:5775 +#, 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:5809 +msgid "recovery has paused" +msgstr "ripristino in pausa" + +#: access/transam/xlog.c:5810 +msgid "Execute pg_xlog_replay_resume() to continue." +msgstr "Esegui pg_xlog_replay_resume() per continuare." + +#: access/transam/xlog.c:5853 access/transam/xlog.c:5875 +#: access/transam/xlog.c:5897 +msgid "must be superuser to control recovery" +msgstr "solo un superutente può controllare il recupero" + +#: access/transam/xlog.c:5858 access/transam/xlog.c:5880 +#: access/transam/xlog.c:5902 +msgid "recovery is not in progress" +msgstr "il recupero non è in corso" + +#: access/transam/xlog.c:5859 access/transam/xlog.c:5881 +#: access/transam/xlog.c:5903 +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/xlog.c:5996 +#, 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:6018 +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:6019 +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:6030 +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" + +#: access/transam/xlog.c:6031 +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:6079 +msgid "control file contains invalid data" +msgstr "il file di controllo contiene dati non validi" + +#: access/transam/xlog.c:6083 +#, c-format +msgid "database system was shut down at %s" +msgstr "il database è stato arrestato alle %s" + +#: access/transam/xlog.c:6087 +#, 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:6091 +#, 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:6095 +#, 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:6097 +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:6101 +#, 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:6103 +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:6107 +#, 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:6156 +#, c-format +msgid "requested timeline %u is not a child of database system timeline %u" +msgstr "la timeline %u richiesta non è figlia della timeline %u del database" + +#: access/transam/xlog.c:6174 +msgid "entering standby mode" +msgstr "inizio modalità standby" + +#: access/transam/xlog.c:6177 +#, 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:6181 +#, c-format +msgid "starting point-in-time recovery to %s" +msgstr "avvio del ripristino point-in-time alle %s" + +#: access/transam/xlog.c:6185 +#, c-format +msgid "starting point-in-time recovery to \"%s\"" +msgstr "avvio del ripristino point-in-time a \"%s\"" + +#: access/transam/xlog.c:6189 +msgid "starting archive recovery" +msgstr "avvio del ripristino dell'archivio" + +#: access/transam/xlog.c:6211 access/transam/xlog.c:6251 +#, c-format +msgid "checkpoint record is at %X/%X" +msgstr "il record di checkpoint si trova in %X/%X" + +#: access/transam/xlog.c:6225 +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:6226 access/transam/xlog.c:6233 +#, 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:6232 +msgid "could not locate required checkpoint record" +msgstr "localizzazione del record di checkpoint richiesto fallita" + +#: access/transam/xlog.c:6261 access/transam/xlog.c:6276 +msgid "could not locate a valid checkpoint record" +msgstr "localizzazione di un record di checkpoint valido fallita" + +#: access/transam/xlog.c:6270 +#, 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:6285 +#, 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:6289 +#, 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:6293 +#, c-format +msgid "next MultiXactId: %u; next MultiXactOffset: %u" +msgstr "prossimo MultiXactId: %u; prossimo MultiXactOffset: %u" + +#: access/transam/xlog.c:6296 +#, 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:6300 +msgid "invalid next transaction ID" +msgstr "l'ID della prossima transazione non è valido" + +#: access/transam/xlog.c:6328 +msgid "invalid redo in checkpoint record" +msgstr "il redo nel record di checkpoint non è valido" + +#: access/transam/xlog.c:6339 +msgid "invalid redo record in shutdown checkpoint" +msgstr "record di redo non valido nel checkpoint di arresto" + +#: access/transam/xlog.c:6369 +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:6448 +msgid "initializing for hot standby" +msgstr "inizializzazione per l'hot standby" + +#: access/transam/xlog.c:6573 +#, c-format +msgid "redo starts at %X/%X" +msgstr "il redo inizia in %X/%X" + +#: access/transam/xlog.c:6702 +#, c-format +msgid "redo done at %X/%X" +msgstr "redo concluso in %X/%X" + +#: access/transam/xlog.c:6707 access/transam/xlog.c:8318 +#, 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:6715 +msgid "redo is not required" +msgstr "redo non richiesto" + +#: access/transam/xlog.c:6763 +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:6772 +msgid "WAL ends before end of online backup" +msgstr "il WAL termina prima della fine del backup online" + +#: access/transam/xlog.c:6773 +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:6776 +msgid "WAL ends before consistent recovery point" +msgstr "il WAL termina prima di un punto di ripristino consistente" + +#: access/transam/xlog.c:6797 +#, c-format +msgid "selected new timeline ID: %u" +msgstr "l'ID della nuova timeline selezionata è %u" + +#: access/transam/xlog.c:7047 +#, 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:7225 +msgid "invalid primary checkpoint link in control file" +msgstr "il link nel file di controllo al checkpoint primario non è valido" + +#: access/transam/xlog.c:7229 +msgid "invalid secondary checkpoint link in control file" +msgstr "il link nel file di controllo al checkpoint secondario non è valido" + +#: access/transam/xlog.c:7233 +msgid "invalid checkpoint link in backup_label file" +msgstr "il link al checkpoint nel file backup_label non è valido" + +#: access/transam/xlog.c:7247 +msgid "invalid primary checkpoint record" +msgstr "il record del checkpoint primario non è valido" + +#: access/transam/xlog.c:7251 +msgid "invalid secondary checkpoint record" +msgstr "il record del checkpoint secondario non è valido" + +#: access/transam/xlog.c:7255 +msgid "invalid checkpoint record" +msgstr "il record del checkpoint non è valido" + +#: access/transam/xlog.c:7266 +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:7270 +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:7274 +msgid "invalid resource manager ID in checkpoint record" +msgstr "l'ID del resource manager nel record del checkpoint non è valido" + +#: access/transam/xlog.c:7286 +msgid "invalid xl_info in primary checkpoint record" +msgstr "l'xl_info nel record del checkpoint primario non è valido" + +#: access/transam/xlog.c:7290 +msgid "invalid xl_info in secondary checkpoint record" +msgstr "l'xl_info nel record del checkpoint secondario non è valido" + +#: access/transam/xlog.c:7294 +msgid "invalid xl_info in checkpoint record" +msgstr "l'xl_info nel record del checkpoint non è valido" + +#: access/transam/xlog.c:7306 +msgid "invalid length of primary checkpoint record" +msgstr "la lunghezza del record del checkpoint primario non è valida" + +#: access/transam/xlog.c:7310 +msgid "invalid length of secondary checkpoint record" +msgstr "la lunghezza del record del checkpoint secondario non è valida" + +#: access/transam/xlog.c:7314 +msgid "invalid length of checkpoint record" +msgstr "la lunghezza del record del checkpoint non è valida" + +#: access/transam/xlog.c:7476 +msgid "shutting down" +msgstr "arresto in corso" + +#: access/transam/xlog.c:7498 +msgid "database system is shut down" +msgstr "il database è stato arrestato" + +#: access/transam/xlog.c:7930 +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:8164 +msgid "skipping restartpoint, recovery has already ended" +msgstr "si tralascia il restartpoint, il ripristino è ormai terminato" + +#: access/transam/xlog.c:8189 +#, c-format +msgid "skipping restartpoint, already performed at %X/%X" +msgstr "si tralascia il restartpoint, già eseguito in %X/%X" + +#: access/transam/xlog.c:8316 +#, c-format +msgid "recovery restart point at %X/%X" +msgstr "punto di avvio del ripristino in %X/%X" + +#: access/transam/xlog.c:8416 +#, c-format +msgid "restore point \"%s\" created at %X/%X" +msgstr "punto di ripristino \"%s\" creato in %X/%X" + +#: access/transam/xlog.c:8516 +msgid "online backup was canceled, recovery cannot continue" +msgstr "il backup online è stato annullato, il ripristino non può continuare" + +#: access/transam/xlog.c:8579 +#, 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:8624 +#, 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:8888 access/transam/xlog.c:8912 +#, c-format +msgid "could not fsync log file %u, segment %u: %m" +msgstr "fsync del file di log %u fallito, segmento %u: %m" + +#: access/transam/xlog.c:8920 +#, c-format +msgid "could not fsync write-through log file %u, segment %u: %m" +msgstr "fsync write-through sul file di log %u fallito, segmento %u: %m" + +#: access/transam/xlog.c:8929 +#, c-format +msgid "could not fdatasync log file %u, segment %u: %m" +msgstr "fdatasync del file di log %u fallito, segmento %u: %m" + +#: access/transam/xlog.c:8967 access/transam/xlog.c:9254 +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/xlog.c:9018 access/transam/xlog.c:9300 +#: access/transam/xlog.c:9563 access/transam/xlog.c:9595 +#: access/transam/xlog.c:9636 access/transam/xlog.c:9669 +#: access/transam/xlog.c:9776 access/transam/xlog.c:9851 +msgid "recovery is in progress" +msgstr "il ripristino è in corso" + +#: access/transam/xlog.c:9019 access/transam/xlog.c:9301 +#: access/transam/xlog.c:9564 access/transam/xlog.c:9596 +#: access/transam/xlog.c:9637 access/transam/xlog.c:9670 +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:9024 access/transam/xlog.c:9306 +msgid "WAL level not sufficient for making an online backup" +msgstr "livello WAL non sufficiente per creare un backup online" + +#: access/transam/xlog.c:9025 access/transam/xlog.c:9307 +#: access/transam/xlog.c:9602 +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." + +#: access/transam/xlog.c:9030 +#, c-format +msgid "backup label too long (max %d bytes)" +msgstr "etichetta di backup troppo lunga (massimo %d byte)" + +#: access/transam/xlog.c:9071 access/transam/xlog.c:9174 +msgid "a backup is already in progress" +msgstr "c'è già un backup in corso" + +#: access/transam/xlog.c:9072 +msgid "Run pg_stop_backup() and try again." +msgstr "Esegui pg_stop_backup() e prova di nuovo." + +#: access/transam/xlog.c:9175 +#, 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:9190 access/transam/xlog.c:9439 +#, c-format +msgid "could not write file \"%s\": %m" +msgstr "scrittura nel file \"%s\" fallita: %m" + +#: access/transam/xlog.c:9351 +msgid "a backup is not in progress" +msgstr "nessuno backup in esecuzione" + +#: access/transam/xlog.c:9390 access/transam/xlog.c:9921 +#: access/transam/xlog.c:9927 +#, c-format +msgid "invalid data in file \"%s\"" +msgstr "i dati nel file \"%s\" non sono validi" + +#: access/transam/xlog.c:9488 +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:9498 +#, 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:9500 +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:9507 +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:9511 +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:9558 +msgid "must be superuser to switch transaction log files" +msgstr "solo un superutente può cambiare i file di log delle transazioni" + +#: access/transam/xlog.c:9590 +msgid "must be superuser to create a restore point" +msgstr "Solo un superutente può creare un punto di ripristino" + +#: access/transam/xlog.c:9601 +msgid "WAL level not sufficient for creating a restore point" +msgstr "livello WAL non sufficiente per creare un punto di ripristino" + +#: access/transam/xlog.c:9609 +#, 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/xlog.c:9777 +msgid "pg_xlogfile_name_offset() cannot be executed during recovery." +msgstr "pg_xlogfile_name_offset() non può essere eseguito durante il recupero." + +#: access/transam/xlog.c:9787 access/transam/xlog.c:9859 +#, c-format +msgid "could not parse transaction log location \"%s\"" +msgstr "non è stato possibile interpretare la posizione del log delle transazioni \"%s\"" + +#: access/transam/xlog.c:9852 +msgid "pg_xlogfile_name() cannot be executed during recovery." +msgstr "pg_xlogfile_name() non può essere eseguito durante il recupero." + +#: access/transam/xlog.c:9963 +#, c-format +msgid "xlog redo %s" +msgstr "xlog redo %s" + +#: access/transam/xlog.c:10003 +msgid "online backup mode canceled" +msgstr "modalità backup online annullata" + +#: access/transam/xlog.c:10004 +#, c-format +msgid "\"%s\" was renamed to \"%s\"." +msgstr "\"%s\" è stato rinominato in \"%s\"." + +#: access/transam/xlog.c:10011 +msgid "online backup mode was not canceled" +msgstr "la modalità di backup online non è stata annullata" + +#: access/transam/xlog.c:10012 +#, c-format +msgid "Could not rename \"%s\" to \"%s\": %m." +msgstr "Non è stato possibile rinominare \"%s\" in \"%s\": %m." + +#: access/transam/xlog.c:10525 access/transam/xlog.c:10547 +#, c-format +msgid "could not read from log file %u, segment %u, offset %u: %m" +msgstr "lettura dal file di log %u fallita, segmento %u, offset %u: %m" + +#: access/transam/xlog.c:10636 +msgid "received promote request" +msgstr "richiesta di promozione ricevuta" + +#: access/transam/xlog.c:10649 +#, c-format +msgid "trigger file found: %s" +msgstr "trovato il file trigger: %s" + +#: access/gin/ginentrypage.c:101 access/nbtree/nbtsort.c:483 +#: access/nbtree/nbtinsert.c:531 +#, 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\"" + +#: access/gin/ginscan.c:401 +msgid "old GIN indexes do not support whole-index scans nor searches for nulls" +msgstr "i vecchi indici GIN non supportano le scansioni sull'intero indice nè le ricerche di null" + +#: access/gin/ginscan.c:402 +#, c-format +msgid "To fix this, do REINDEX INDEX \"%s\"." +msgstr "Per correggere questo problema esegui REINDEX INDEX \"%s\"." + +#: access/nbtree/nbtpage.c:161 access/nbtree/nbtpage.c:365 +#: parser/parse_utilcmd.c:1577 +#, c-format +msgid "index \"%s\" is not a btree" +msgstr "l'indice \"%s\" non è un btree" + +#: 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 "le versioni non corrispondono per l'indice \"%s\": la versione sul file è %d, quella del codice %d" + +#: access/nbtree/nbtsort.c:487 access/nbtree/nbtinsert.c:535 +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 "" +"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/nbtinsert.c:393 +#, c-format +msgid "duplicate key value violates unique constraint \"%s\"" +msgstr "un valore chiave duplicato viola il vincolo univoco \"%s\"" + +#: access/nbtree/nbtinsert.c:395 +#, c-format +msgid "Key %s already exists." +msgstr "La chiave %s esiste già." + +#: access/nbtree/nbtinsert.c:457 +#, c-format +msgid "failed to re-find tuple within index \"%s\"" +msgstr "non ho ritrovato la tupla nell'indice \"%s\"" + +#: access/nbtree/nbtinsert.c:459 +msgid "This may be because of a non-immutable index expression." +msgstr "Ciò potrebbe essere causato da un'espressione dell'indice non immutabile." + +#: access/index/indexam.c:161 commands/tablecmds.c:221 +#: commands/tablecmds.c:2414 commands/indexcmds.c:1514 +#: catalog/objectaddress.c:391 +#, c-format +msgid "\"%s\" is not an index" +msgstr "\"%s\" non è un indice" + +#: access/gist/gist.c:127 access/gist/gist.c:243 +msgid "unlogged GiST indexes are not supported" +msgstr "gli indici GiST non loggati non sono supportati" + +#: access/gist/gist.c:728 access/gist/gistvacuum.c:271 +#, 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:730 access/gist/gistvacuum.c:273 +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/gistsplit.c:446 +#, c-format +msgid "picksplit method for column %d of index \"%s\" failed" +msgstr "il metodo picksplit per la colonna %d dell'indice \"%s\" è fallito" + +#: access/gist/gistsplit.c:448 +msgid "The index is not optimal. To optimize it, contact a developer, or try to use the column as the second one in the CREATE INDEX command." +msgstr "L'indice non è ottimale. Per ottimizzarlo si contatti uno sviluppatore o si usi la colonna ponendola in seconda posizione nel comando CREATE INDEX." + +#: commands/lockcmds.c:93 +#, c-format +msgid "could not obtain lock on relation \"%s\"" +msgstr "lock della relazione \"%s\" fallito" + +#: commands/lockcmds.c:98 +#, c-format +msgid "could not obtain lock on relation with OID %u" +msgstr "non è stato possibile ottenere il lock sulla relazione con OID %u" + +#: commands/lockcmds.c:122 catalog/namespace.c:285 parser/parse_relation.c:844 +#, c-format +msgid "relation \"%s.%s\" does not exist" +msgstr "la relazione \"%s.%s\" non esiste" + +#: commands/lockcmds.c:149 commands/tablecmds.c:203 commands/tablecmds.c:1137 +#: commands/tablecmds.c:2406 commands/tablecmds.c:3758 +#: commands/tablecmds.c:6731 commands/indexcmds.c:198 +#: commands/indexcmds.c:1546 catalog/toasting.c:93 catalog/objectaddress.c:405 +#, c-format +msgid "\"%s\" is not a table" +msgstr "\"%s\" non è una tabella" + +#: 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 richiede un parametro" + +#: 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 richiede un valore numerico" + +#: commands/define.c:175 +#, c-format +msgid "%s requires a Boolean value" +msgstr "%s richiede un valore booleano" + +#: commands/define.c:236 +#, c-format +msgid "argument of %s must be a name" +msgstr "l'argomento di %s dev'essere un nome" + +#: commands/define.c:266 +#, 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:291 +#, c-format +msgid "%s requires an integer value" +msgstr "%s richiede un valore intero" + +#: commands/define.c:312 +#, c-format +msgid "invalid argument for %s: \"%s\"" +msgstr "argomento non valido per %s: \"%s\"" + +#: commands/variable.c:172 +msgid "Conflicting \"datestyle\" specifications." +msgstr "Specifiche di \"datestyle\" in conflitto." + +#: commands/variable.c:328 +msgid "Cannot specify months in time zone interval." +msgstr "Non è possibile specificare i mesi nell'intervallo del fuso orario." + +#: commands/variable.c:334 +msgid "Cannot specify days in time zone interval." +msgstr "Non è possibile specificare i giorni nell'intervallo del fuso orario." + +#: commands/variable.c:380 commands/variable.c:519 +#, 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:382 commands/variable.c:521 +msgid "PostgreSQL does not support leap seconds." +msgstr "PostgreSQL non supporta il secondo intercalare." + +#: commands/variable.c:589 +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:596 +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:603 +msgid "cannot set transaction read-write mode during recovery" +msgstr "non è possibile impostare la transazione in lettura/scrittura durante il ripristino" + +#: commands/variable.c:652 +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:659 +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:666 storage/lmgr/predicate.c:1570 +msgid "cannot use serializable mode in a hot standby" +msgstr "non è possibile usare la modalità SERIALIZABLE in un hot standby" + +#: commands/variable.c:667 +msgid "You can use REPEATABLE READ instead." +msgstr "Puoi utilizzare REPEATABLE READ invece." + +#: commands/variable.c:715 +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:721 +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:803 +#, c-format +msgid "Conversion between %s and %s is not supported." +msgstr "La conversione fra %s e %s non è supportata." + +#: commands/variable.c:810 +msgid "Cannot change \"client_encoding\" now." +msgstr "Non è possibile cambiare \"client_encoding\" ora." + +#: commands/variable.c:980 +#, c-format +msgid "permission denied to set role \"%s\"" +msgstr "permesso di impostare il ruolo \"%s\" negato" + +#: commands/prepare.c:71 +msgid "invalid statement name: must not be empty" +msgstr "nome di istruzione non valido: non deve essere vuoto" + +#: commands/prepare.c:140 +msgid "utility statements cannot be prepared" +msgstr "le istruzioni di utilità non possono essere preparate" + +#: commands/prepare.c:240 commands/prepare.c:247 commands/prepare.c:706 +msgid "prepared statement is not a SELECT" +msgstr "l'istruzione preparata non è una SELECT" + +#: commands/prepare.c:314 +#, c-format +msgid "wrong number of parameters for prepared statement \"%s\"" +msgstr "numero errato di parametri per l'istruzione preparata \"%s\"" + +#: commands/prepare.c:316 +#, c-format +msgid "Expected %d parameters but got %d." +msgstr "Erano attesi %d parametri ma ottenuti %d." + +#: commands/prepare.c:345 +msgid "cannot use subquery in EXECUTE parameter" +msgstr "non si possono usare sottoquery nel parametro EXECUTE" + +#: commands/prepare.c:349 +msgid "cannot use aggregate function in EXECUTE parameter" +msgstr "non si possono usare funzioni aggregate nel parametro EXECUTE" + +#: commands/prepare.c:353 +msgid "cannot use window function in EXECUTE parameter" +msgstr "non si possono usare funzioni finestra nel parametro EXECUTE" + +#: commands/prepare.c:366 +#, c-format +msgid "parameter $%d of type %s cannot be coerced to the expected type %s" +msgstr "il parametro $%d di tipo %s non può essere forzato al tipo previsto %s" + +#: commands/prepare.c:370 rewrite/rewriteHandler.c:1035 catalog/heap.c:2446 +#: parser/parse_target.c:490 parser/parse_target.c:736 +#: parser/parse_target.c:746 parser/parse_node.c:410 +msgid "You will need to rewrite or cast the expression." +msgstr "Devi riscrivere o convertire il tipo dell'espressione" + +#: commands/prepare.c:467 +#, c-format +msgid "prepared statement \"%s\" already exists" +msgstr "l'istruzione preparata \"%s\" esiste già" + +#: commands/prepare.c:525 +#, c-format +msgid "prepared statement \"%s\" does not exist" +msgstr "l'istruzione preparata \"%s\" non esiste" + +#: commands/tablecmds.c:201 +#, c-format +msgid "table \"%s\" does not exist" +msgstr "la tabella \"%s\" non esiste" + +#: commands/tablecmds.c:202 +#, c-format +msgid "table \"%s\" does not exist, skipping" +msgstr "la tabella \"%s\" non esiste, saltata" + +#: commands/tablecmds.c:204 +msgid "Use DROP TABLE to remove a table." +msgstr "Usa DROP TABLE per eliminare una tabella." + +#: commands/tablecmds.c:207 +#, c-format +msgid "sequence \"%s\" does not exist" +msgstr "la sequenza \"%s\" non esiste" + +#: commands/tablecmds.c:208 +#, c-format +msgid "sequence \"%s\" does not exist, skipping" +msgstr "la sequenza \"%s\" non esiste, saltata" + +#: commands/tablecmds.c:210 +msgid "Use DROP SEQUENCE to remove a sequence." +msgstr "Usa DROP SEQUENCE per eliminare una sequenza." + +#: commands/tablecmds.c:213 +#, c-format +msgid "view \"%s\" does not exist" +msgstr "la vista \"%s\" non esiste" + +#: commands/tablecmds.c:214 +#, c-format +msgid "view \"%s\" does not exist, skipping" +msgstr "la vista \"%s\" non esiste, saltata" + +#: commands/tablecmds.c:215 commands/tablecmds.c:2181 +#: commands/tablecmds.c:2438 commands/tablecmds.c:3773 +#: commands/tablecmds.c:9045 commands/view.c:181 catalog/objectaddress.c:412 +#, c-format +msgid "\"%s\" is not a view" +msgstr "\"%s\" non è una vista" + +#: commands/tablecmds.c:216 +msgid "Use DROP VIEW to remove a view." +msgstr "Usa DROP VIEW per eliminare una vista." + +#: commands/tablecmds.c:219 parser/parse_utilcmd.c:1505 +#, c-format +msgid "index \"%s\" does not exist" +msgstr "l'indice \"%s\" non esiste" + +#: commands/tablecmds.c:220 +#, c-format +msgid "index \"%s\" does not exist, skipping" +msgstr "l'indice \"%s\" non esiste, saltato" + +#: commands/tablecmds.c:222 +msgid "Use DROP INDEX to remove an index." +msgstr "Usa DROP INDEX per eliminare un indice." + +#: commands/tablecmds.c:226 commands/typecmds.c:666 +#, c-format +msgid "type \"%s\" does not exist, skipping" +msgstr "il tipo \"%s\" non esiste, saltato" + +#: commands/tablecmds.c:227 +#, c-format +msgid "\"%s\" is not a type" +msgstr "\"%s\" non è un tipo" + +#: commands/tablecmds.c:228 +msgid "Use DROP TYPE to remove a type." +msgstr "Usa DROP TYPE per eliminare un tipo." + +#: commands/tablecmds.c:231 commands/tablecmds.c:8957 +#, c-format +msgid "foreign table \"%s\" does not exist" +msgstr "la tabella esterna \"%s\" non esiste" + +#: commands/tablecmds.c:232 +#, c-format +msgid "foreign table \"%s\" does not exist, skipping" +msgstr "la tabella esterna \"%s\" non esiste, saltata" + +#: commands/tablecmds.c:233 commands/tablecmds.c:2187 +#: commands/tablecmds.c:2446 commands/tablecmds.c:3776 +#: commands/tablecmds.c:9053 catalog/objectaddress.c:419 +#, c-format +msgid "\"%s\" is not a foreign table" +msgstr "\"%s\" non è una tabella esterna" + +#: commands/tablecmds.c:234 +msgid "Use DROP FOREIGN TABLE to remove a foreign table." +msgstr "Usa DROP FOREIGN TABLE per eliminare una tabella esterna." + +#: commands/tablecmds.c:429 executor/execMain.c:2411 +msgid "ON COMMIT can only be used on temporary tables" +msgstr "ON COMMIT può essere usato solo con le tabelle temporanee" + +#: commands/tablecmds.c:433 +msgid "constraints on foreign tables are not supported" +msgstr "i vincoli sulle tabelle esterne non sono supportati" + +#: commands/tablecmds.c:451 executor/execMain.c:2429 +msgid "cannot create temporary table within security-restricted operation" +msgstr "non è possibile creare la tabella temporanea nell'ambito di operazioni a sicurezza ristretta" + +#: commands/tablecmds.c:483 commands/tablecmds.c:7937 commands/indexcmds.c:263 +#: executor/execMain.c:2462 +msgid "only shared relations can be placed in pg_global tablespace" +msgstr "solo le relazioni condivise possono essere poste nel tablespace pg_global" + +#: commands/tablecmds.c:549 commands/tablecmds.c:4284 +msgid "default values on foreign tables are not supported" +msgstr "i valori di default sulle tabelle esterne non sono supportati" + +#: commands/tablecmds.c:929 +#, c-format +msgid "truncate cascades to table \"%s\"" +msgstr "truncate si propaga in cascata alla tabella \"%s\"" + +#: commands/tablecmds.c:1160 +msgid "cannot truncate temporary tables of other sessions" +msgstr "non è possibile troncare tabelle temporanee di altre sessioni" + +#: commands/tablecmds.c:1276 commands/tablecmds.c:1708 +#: commands/tablecmds.c:4209 catalog/heap.c:389 +#, c-format +msgid "tables can have at most %d columns" +msgstr "le tabelle possono avere al massimo %d colonne" + +#: commands/tablecmds.c:1327 commands/copy.c:3799 commands/trigger.c:601 +#: parser/parse_target.c:914 parser/parse_target.c:925 +#, c-format +msgid "column \"%s\" specified more than once" +msgstr "la colonna \"%s\" è stata specificata più di una volta" + +#: commands/tablecmds.c:1362 parser/parse_utilcmd.c:623 +#: parser/parse_utilcmd.c:1717 +#, c-format +msgid "inherited relation \"%s\" is not a table" +msgstr "la relazione ereditata \"%s\" non è una tabella" + +#: commands/tablecmds.c:1369 commands/tablecmds.c:8169 +#, c-format +msgid "cannot inherit from temporary relation \"%s\"" +msgstr "non è possibile ereditare dalla relazione temporanea \"%s\"" + +#: commands/tablecmds.c:1377 commands/tablecmds.c:8177 +msgid "cannot inherit from temporary relation of another session" +msgstr "non è possibile ereditare da una relazione temporanea di un'altra sessione" + +#: commands/tablecmds.c:1393 commands/tablecmds.c:8211 +#, 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:1441 +#, c-format +msgid "merging multiple inherited definitions of column \"%s\"" +msgstr "unione delle definizioni multiple ereditate della colonna \"%s\"" + +#: commands/tablecmds.c:1449 +#, c-format +msgid "inherited column \"%s\" has a type conflict" +msgstr "la colonna ereditata \"%s\" ha un conflitto di tipo" + +#: commands/tablecmds.c:1451 commands/tablecmds.c:1472 +#: commands/tablecmds.c:1653 commands/tablecmds.c:1675 +#: parser/parse_coerce.c:1540 parser/parse_coerce.c:1560 +#: parser/parse_coerce.c:1605 parser/parse_param.c:217 +#, c-format +msgid "%s versus %s" +msgstr "tra %s e %s" + +#: commands/tablecmds.c:1458 +#, c-format +msgid "inherited column \"%s\" has a collation conflict" +msgstr "la colonna ereditata \"%s\" ha un conflitto di ordinamento" + +#: commands/tablecmds.c:1460 commands/tablecmds.c:1663 +#: commands/tablecmds.c:4153 +#, c-format +msgid "\"%s\" versus \"%s\"" +msgstr "tra \"%s\" e \"%s\"" + +#: commands/tablecmds.c:1470 +#, 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:1578 parser/parse_utilcmd.c:776 +#: parser/parse_utilcmd.c:1154 parser/parse_utilcmd.c:1230 +msgid "cannot convert whole-row table reference" +msgstr "non è possibile convertire riferimenti ad una riga intera di tabella" + +#: commands/tablecmds.c:1579 parser/parse_utilcmd.c:777 +#, 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:1643 +#, c-format +msgid "merging column \"%s\" with inherited definition" +msgstr "unione della colonna \"%s\" con la definizione ereditata" + +#: commands/tablecmds.c:1651 +#, c-format +msgid "column \"%s\" has a type conflict" +msgstr "la colonna \"%s\" ha un conflitto di tipi" + +#: commands/tablecmds.c:1661 +#, c-format +msgid "column \"%s\" has a collation conflict" +msgstr "la colonna \"%s\" ha un conflitto di ordinamento" + +#: commands/tablecmds.c:1673 +#, c-format +msgid "column \"%s\" has a storage parameter conflict" +msgstr "la colonna \"%s\" ha un conflitto di parametri di memorizzazione" + +#: commands/tablecmds.c:1725 +#, c-format +msgid "column \"%s\" inherits conflicting default values" +msgstr "la colonna \"%s\" eredita valori predefiniti in conflitto tra loro" + +#: commands/tablecmds.c:1727 +msgid "To resolve the conflict, specify a default explicitly." +msgstr "Per risolvere il conflitto, specificare esplicitamente un valore predefinito." + +#: commands/tablecmds.c:1774 +#, 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:1969 +msgid "cannot rename column of typed table" +msgstr "non è possibile rinominare la colonna di una tabella con tipo" + +#: commands/tablecmds.c:1986 +#, c-format +msgid "\"%s\" is not a table, view, composite type, index or foreign table" +msgstr "\"%s\" non è una tabella, una vista, un tipo composito, un indice né una tabella esterna" + +#: commands/tablecmds.c:2052 +#, 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:2084 +#, c-format +msgid "cannot rename system column \"%s\"" +msgstr "non è possibile rinominare la colonna di sistema \"%s\"" + +#: commands/tablecmds.c:2099 +#, c-format +msgid "cannot rename inherited column \"%s\"" +msgstr "non è possibile rinominare la colonna ereditata \"%s\"" + +#: commands/tablecmds.c:2110 commands/tablecmds.c:4197 +#, c-format +msgid "column \"%s\" of relation \"%s\" already exists" +msgstr "la colonna \"%s\" della relazione \"%s\" esiste già" + +#: commands/tablecmds.c:2199 commands/tablecmds.c:7415 +#: commands/tablecmds.c:9089 +msgid "Use ALTER TYPE instead." +msgstr "È possibile usare ALTER TYPE invece." + +#: commands/tablecmds.c:2246 catalog/index.c:773 catalog/heap.c:1013 +#, c-format +msgid "relation \"%s\" already exists" +msgstr "la relazione \"%s\" esiste già" + +#. translator: first %s is a SQL command, eg ALTER TABLE +#: commands/tablecmds.c:2322 +#, 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:2331 +#, 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:2430 +#, c-format +msgid "\"%s\" is not a composite type" +msgstr "\"%s\" non è un tipo composito" + +#: commands/tablecmds.c:3260 +#, c-format +msgid "cannot rewrite system relation \"%s\"" +msgstr "non è possibile riscrivere la relazione di sistema \"%s\"" + +#: commands/tablecmds.c:3270 +msgid "cannot rewrite temporary tables of other sessions" +msgstr "non è possibile riscrivere tabelle temporanee di altre sessioni" + +#: commands/tablecmds.c:3495 +#, c-format +msgid "rewriting table \"%s\"" +msgstr "riscrittura della tabella \"%s\"" + +#: commands/tablecmds.c:3499 +#, c-format +msgid "verifying table \"%s\"" +msgstr "verifica della tabella \"%s\"" + +#: commands/tablecmds.c:3606 +#, c-format +msgid "column \"%s\" contains null values" +msgstr "la colonna \"%s\" contiene valori null" + +#: commands/tablecmds.c:3620 +#, c-format +msgid "check constraint \"%s\" is violated by some row" +msgstr "il vincolo di controllo \"%s\" è violato da alcune righe" + +#: commands/tablecmds.c:3761 commands/tablecmds.c:4713 +#, c-format +msgid "\"%s\" is not a table or index" +msgstr "\"%s\" non è una tabella né un indice" + +#: commands/tablecmds.c:3764 commands/trigger.c:186 commands/trigger.c:1099 +#: rewrite/rewriteDefine.c:257 +#, c-format +msgid "\"%s\" is not a table or view" +msgstr "\"%s\" non è una tabella né una vista" + +#: commands/tablecmds.c:3767 +#, c-format +msgid "\"%s\" is not a table or foreign table" +msgstr "\"%s\" non è una tabella né una tabella esterna" + +#: commands/tablecmds.c:3770 +#, 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:3780 +#, c-format +msgid "\"%s\" is of the wrong type" +msgstr "\"%s\" è del tipo sbagliato" + +#: commands/tablecmds.c:3929 commands/tablecmds.c:3936 +#, 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:3943 +#, 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:3950 +#, 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:4012 +#, 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:4014 +msgid "Use ALTER ... CASCADE to alter the typed tables too." +msgstr "Usa DROP ... CASCADE per eliminare anche le tabelle con tipo." + +#: commands/tablecmds.c:4058 +#, c-format +msgid "type %s is not a composite type" +msgstr "il tipo %s non è un tipo composito" + +#: commands/tablecmds.c:4084 +msgid "cannot add column to typed table" +msgstr "non è possibile aggiungere una colonna ad una tabella con tipo" + +#: commands/tablecmds.c:4145 commands/tablecmds.c:8365 +#, 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:4151 commands/tablecmds.c:8372 +#, 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:4161 +#, 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:4173 +#, 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:4403 +msgid "column must be added to child tables too" +msgstr "la colonna deve essere aggiunta anche alle tabelle figlie" + +#: commands/tablecmds.c:4533 commands/tablecmds.c:4625 +#: commands/tablecmds.c:4670 commands/tablecmds.c:4766 +#: commands/tablecmds.c:4810 commands/tablecmds.c:4889 +#: commands/tablecmds.c:6628 +#, c-format +msgid "cannot alter system column \"%s\"" +msgstr "non è possibile modificare la colonna di sistema \"%s\"" + +#: commands/tablecmds.c:4569 +#, c-format +msgid "column \"%s\" is in a primary key" +msgstr "la colonna \"%s\" è in una chiave primaria" + +#: commands/tablecmds.c:4740 +#, c-format +msgid "statistics target %d is too low" +msgstr "il target delle statistiche %d è troppo basso" + +#: commands/tablecmds.c:4748 +#, c-format +msgid "lowering statistics target to %d" +msgstr "target delle statistiche abbassato a %d" + +#: commands/tablecmds.c:4870 +#, c-format +msgid "invalid storage type \"%s\"" +msgstr "tipo di immagazzinamento non valido \"%s\"" + +#: commands/tablecmds.c:4901 +#, 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:4931 +msgid "cannot drop column from typed table" +msgstr "non è possibile eliminare la colonna da una tabella con tipo" + +#: commands/tablecmds.c:4972 +#, 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:4985 +#, c-format +msgid "cannot drop system column \"%s\"" +msgstr "non è possibile eliminare la colonna di sistema \"%s\"" + +#: commands/tablecmds.c:4992 +#, c-format +msgid "cannot drop inherited column \"%s\"" +msgstr "non è possibile eliminare la colonna ereditata \"%s\"" + +#: commands/tablecmds.c:5218 +#, 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:5288 catalog/pg_constraint.c:645 catalog/heap.c:2296 +#, c-format +msgid "constraint \"%s\" for relation \"%s\" already exists" +msgstr "il vincolo \"%s\" per la relazione \"%s\" esiste già" + +#: commands/tablecmds.c:5412 +msgid "constraint must be added to child tables too" +msgstr "il vincolo deve essere aggiunto anche alle tabelle figlie" + +#: commands/tablecmds.c:5477 commands/sequence.c:1425 +#, c-format +msgid "referenced relation \"%s\" is not a table" +msgstr "la relazione referenziata \"%s\" non è una tabella" + +#: commands/tablecmds.c:5500 +msgid "constraints on permanent tables may reference only permanent tables" +msgstr "i vincoli su tabelle permanenti possono referenziare solo tabelle permanenti" + +#: commands/tablecmds.c:5507 +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:5513 +msgid "constraints on temporary tables may reference only temporary tables" +msgstr "i vincoli su tabelle temporanee possono referenziare solo tabelle temporanee" + +#: commands/tablecmds.c:5517 +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:5578 +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:5667 +#, c-format +msgid "foreign key constraint \"%s\" cannot be implemented" +msgstr "non è possibile implementare il vincolo di chiave esterna \"%s\"" + +#: commands/tablecmds.c:5670 +#, 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:5783 +#, c-format +msgid "foreign key constraint \"%s\" of relation \"%s\" does not exist" +msgstr "il vincolo di chiave esterna \"%s\" della relazione \"%s\" non esiste" + +#: commands/tablecmds.c:5846 +#, 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:5851 +#, 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:5916 +#, 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:5933 +#, 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:6085 +#, 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:6090 +#, 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:6141 +#, c-format +msgid "validating foreign key constraint \"%s\"" +msgstr "validazione del vincolo di chiave esterna \"%s\"" + +#: commands/tablecmds.c:6437 +#, 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:6464 commands/tablecmds.c:6577 +#, c-format +msgid "constraint \"%s\" of relation \"%s\" does not exist" +msgstr "il vincolo \"%s\" della relazione \"%s\" non esiste" + +#: commands/tablecmds.c:6470 +#, 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:6612 +msgid "cannot alter column type of typed table" +msgstr "non è possibile modificare il tipo di colonna di una tabella con tipo" + +#: commands/tablecmds.c:6635 +#, c-format +msgid "cannot alter inherited column \"%s\"" +msgstr "non è possibile modificare la colonna ereditata \"%s\"" + +#: commands/tablecmds.c:6677 +msgid "transform expression must not return a set" +msgstr "l'espressione di trasformazione non può restituire un insieme" + +#: commands/tablecmds.c:6683 +msgid "cannot use subquery in transform expression" +msgstr "non è possibile usare sottoquery in un'espressione di trasformazione" + +#: commands/tablecmds.c:6687 +msgid "cannot use aggregate function in transform expression" +msgstr "non è possibile usare funzioni aggregate in un'espressione di trasformazione" + +#: commands/tablecmds.c:6691 +msgid "cannot use window function in transform expression" +msgstr "non è possibile usare funzioni finestra in un'espressione di trasformazione" + +#: commands/tablecmds.c:6710 +#, c-format +msgid "column \"%s\" cannot be cast to type %s" +msgstr "la colonna \"%s\" non può essere convertita al tipo %s" + +#: commands/tablecmds.c:6757 +#, 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:6838 +#, c-format +msgid "cannot alter type of column \"%s\" twice" +msgstr "non è possibile cambiare il tipo della colonna \"%s\" due volte" + +#: commands/tablecmds.c:6874 +#, c-format +msgid "default for column \"%s\" cannot be cast to type %s" +msgstr "il valore predefinito della colonna \"%s\" non può essere convertito al tipo %s" + +#: commands/tablecmds.c:7000 +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:7001 commands/tablecmds.c:7020 +#, c-format +msgid "%s depends on column \"%s\"" +msgstr "%s dipende dalla colonna \"%s\"" + +#: commands/tablecmds.c:7019 +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:7383 +#, c-format +msgid "cannot change owner of index \"%s\"" +msgstr "non è possibile cambiare il proprietario dell'indice \"%s\"" + +#: commands/tablecmds.c:7385 +msgid "Change the ownership of the index's table, instead." +msgstr "Cambia il proprietario della tabella dell'indice invece." + +#: commands/tablecmds.c:7401 +#, c-format +msgid "cannot change owner of sequence \"%s\"" +msgstr "non è possibile cambiare il proprietario della sequenza \"%s\"" + +#: commands/tablecmds.c:7403 commands/tablecmds.c:9079 +#, c-format +msgid "Sequence \"%s\" is linked to table \"%s\"." +msgstr "La sequenza \"%s\" è collegata alla tabella \"%s\"." + +#: commands/tablecmds.c:7424 commands/tablecmds.c:9097 +#, 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:7709 commands/cluster.c:178 +#, c-format +msgid "index \"%s\" for table \"%s\" does not exist" +msgstr "l'indice \"%s\" per la tabella \"%s\" non esiste" + +#: commands/tablecmds.c:7756 +msgid "cannot have multiple SET TABLESPACE subcommands" +msgstr "non è possibile avere più di un sottocomando SET TABLESPACE" + +#: commands/tablecmds.c:7809 +#, c-format +msgid "\"%s\" is not a table, index, or TOAST table" +msgstr "\"%s\" non è una tabella, un indice né una tabella TOAST" + +#: commands/tablecmds.c:7930 +#, c-format +msgid "cannot move system relation \"%s\"" +msgstr "non è possibile spostare la relazione \"%s\"" + +#: commands/tablecmds.c:7946 +msgid "cannot move temporary tables of other sessions" +msgstr "non è possibile spostare tabelle temporanee di altre sessioni" + +#: commands/tablecmds.c:8138 +msgid "cannot change inheritance of typed table" +msgstr "non è possibile cambiare ereditarietà di tabelle con tipo" + +#: commands/tablecmds.c:8184 +msgid "cannot inherit to temporary relation of another session" +msgstr "non è possibile ereditare tabelle temporanee di un'altra sessione" + +#: commands/tablecmds.c:8238 +msgid "circular inheritance not allowed" +msgstr "l'ereditarietà circolare non è consentita" + +#: commands/tablecmds.c:8239 +#, c-format +msgid "\"%s\" is already a child of \"%s\"." +msgstr "\"%s\" è già figlia di \"%s\"." + +#: commands/tablecmds.c:8247 +#, 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:8383 +#, 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:8399 +#, c-format +msgid "child table is missing column \"%s\"" +msgstr "la tabella figlia non ha la colonna \"%s\"" + +#: commands/tablecmds.c:8478 +#, 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:8502 +#, c-format +msgid "child table is missing constraint \"%s\"" +msgstr "la tabella figlia non ha il vincolo \"%s\"" + +#: commands/tablecmds.c:8582 +#, c-format +msgid "relation \"%s\" is not a parent of relation \"%s\"" +msgstr "la relazione \"%s\" non è genitore della relazione \"%s\"" + +#: commands/tablecmds.c:8799 +msgid "typed tables cannot inherit" +msgstr "le tabelle con tipo non possono essere ereditate" + +#: commands/tablecmds.c:8830 +#, c-format +msgid "table is missing column \"%s\"" +msgstr "la tabella non ha la colonna \"%s\"" + +#: commands/tablecmds.c:8840 +#, 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:8849 +#, 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:8862 +#, c-format +msgid "table has extra column \"%s\"" +msgstr "la tabella ha la colonna \"%s\" in eccesso" + +#: commands/tablecmds.c:8909 +#, c-format +msgid "\"%s\" is not a typed table" +msgstr "\"%s\" non è una tabella con tipo" + +#: commands/tablecmds.c:9078 +msgid "cannot move an owned sequence into another schema" +msgstr "non è possibile spostare una sequenza con proprietario in uno schema diverso" + +#: commands/tablecmds.c:9185 +#, c-format +msgid "relation \"%s\" already exists in schema \"%s\"" +msgstr "la relazione \"%s\" esiste già nello schema \"%s\"" + +#: commands/proclang.c:93 +msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters" +msgstr "vengono usate le informazioni di pg_pltemplate invece dei parametri di CREATE LANGUAGE" + +#: commands/proclang.c:103 +#, c-format +msgid "must be superuser to create procedural language \"%s\"" +msgstr "solo i superutenti possono creare il linguaggio procedurale \"%s\"" + +#: commands/proclang.c:123 commands/proclang.c:279 +#, c-format +msgid "function %s must return type \"language_handler\"" +msgstr "la funzione %s deve restituire un tipo \"language_handler\"" + +#: commands/proclang.c:243 +#, c-format +msgid "unsupported language \"%s\"" +msgstr "linguaggio non supportato \"%s\"" + +#: commands/proclang.c:245 +msgid "The supported languages are listed in the pg_pltemplate system catalog." +msgstr "I linguaggi supportati sono elencate nel catalogo di sistema pg_pltemplate" + +#: commands/proclang.c:253 +msgid "must be superuser to create custom procedural language" +msgstr "solo i superutenti possono creare un linguaggio procedurale personalizzato" + +#: commands/proclang.c:272 +#, c-format +msgid "changing return type of function %s from \"opaque\" to \"language_handler\"" +msgstr "cambio del tipo restituito dalla funzione %s da \"opaque\" a \"language_handler\"" + +#: commands/proclang.c:357 commands/proclang.c:606 +#, c-format +msgid "language \"%s\" already exists" +msgstr "il linguaggio \"%s\" esiste già" + +#: commands/proclang.c:537 +#, c-format +msgid "language \"%s\" does not exist, skipping" +msgstr "il linguaggio \"%s\" non esiste, saltato" + +#: commands/proclang.c:600 commands/proclang.c:640 commands/proclang.c:754 +#: commands/functioncmds.c:839 commands/functioncmds.c:2019 +#, c-format +msgid "language \"%s\" does not exist" +msgstr "il linguaggio \"%s\" non esiste" + +#: commands/analyze.c:153 +#, c-format +msgid "skipping analyze of \"%s\" --- lock not available" +msgstr "analisi di \"%s\" saltata --- lock non disponibile" + +#: commands/analyze.c:170 +#, c-format +msgid "skipping \"%s\" --- only superuser can analyze it" +msgstr "\"%s\" saltato --- solo un superutente può analizzarlo" + +#: commands/analyze.c:174 +#, 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:178 +#, 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:194 +#, 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:285 +#, c-format +msgid "analyzing \"%s.%s\" inheritance tree" +msgstr "analisi dell'albero di ereditarietà di \"%s.%s\"" + +#: commands/analyze.c:290 +#, c-format +msgid "analyzing \"%s.%s\"" +msgstr "analisi di \"%s.%s\"" + +#: commands/analyze.c:598 +#, 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:1238 +#, 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:1499 executor/execQual.c:2848 +msgid "could not convert row type" +msgstr "conversione del tipo riga fallita" + +#: commands/conversioncmds.c:71 +#, c-format +msgid "source encoding \"%s\" does not exist" +msgstr "la codifica di partenza \"%s\" non esiste" + +#: commands/conversioncmds.c:78 +#, c-format +msgid "destination encoding \"%s\" does not exist" +msgstr "la codifica di destinazione \"%s\" non esiste" + +#: commands/conversioncmds.c:92 +#, c-format +msgid "encoding conversion function %s must return type \"void\"" +msgstr "la funzioni di conversione dell'encoding %s deve restituire il tipo \"void\"" + +#: commands/conversioncmds.c:152 +#, c-format +msgid "conversion \"%s\" does not exist, skipping" +msgstr "la conversione \"%s\" non esiste, saltata" + +#: commands/conversioncmds.c:211 +#, c-format +msgid "conversion \"%s\" already exists in schema \"%s\"" +msgstr "la conversione \"%s\" già esiste nello schema \"%s\"" + +#: commands/sequence.c:127 +msgid "unlogged sequences are not supported" +msgstr "le sequenze non loggate non sono supportate" + +#: commands/sequence.c:537 commands/sequence.c:751 commands/sequence.c:793 +#: commands/sequence.c:830 commands/sequence.c:1495 catalog/aclchk.c:3071 +#, c-format +msgid "permission denied for sequence %s" +msgstr "permesso negato per la sequenza %s" + +#: commands/sequence.c:620 +#, 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:643 +#, 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:757 +#, 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:776 commands/sequence.c:782 +msgid "lastval is not yet defined in this session" +msgstr "lastval non è stato ancora definito in questa sessione" + +#: commands/sequence.c:851 +#, 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:1142 commands/sequence.c:1150 commands/sequence.c:1158 +#: commands/sequence.c:1166 commands/sequence.c:1174 commands/sequence.c:1182 +#: commands/sequence.c:1190 commands/sequence.c:1198 +#: 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/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:147 commands/dbcommands.c:155 +#: commands/dbcommands.c:163 commands/dbcommands.c:171 +#: commands/dbcommands.c:179 commands/dbcommands.c:187 +#: commands/dbcommands.c:195 commands/dbcommands.c:1342 +#: commands/dbcommands.c:1350 commands/extension.c:1250 +#: commands/extension.c:1258 commands/extension.c:1266 +#: commands/extension.c:2731 commands/collationcmds.c:93 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/foreigncmds.c:468 commands/foreigncmds.c:477 +#: commands/typecmds.c:282 catalog/aclchk.c:833 catalog/aclchk.c:841 +msgid "conflicting or redundant options" +msgstr "opzioni contraddittorie o ridondanti" + +#: commands/sequence.c:1220 +msgid "INCREMENT must not be zero" +msgstr "INCREMENT non può essere zero" + +#: commands/sequence.c:1276 +#, c-format +msgid "MINVALUE (%s) must be less than MAXVALUE (%s)" +msgstr "MINVALUE (%s) deve essere minore del MAXVALUE (%s)" + +#: commands/sequence.c:1301 +#, 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:1313 +#, 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:1343 +#, 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:1355 +#, 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:1370 +#, c-format +msgid "CACHE (%s) must be greater than zero" +msgstr "CACHE (%s) dev'essere maggiore di zero" + +#: commands/sequence.c:1402 +msgid "invalid OWNED BY option" +msgstr "opzione OWNED BY non valida" + +#: commands/sequence.c:1403 +msgid "Specify OWNED BY table.column or OWNED BY NONE." +msgstr "Specifica OWNED BY tabella.colonna oppure OWNED BY NONE." + +#: commands/sequence.c:1432 +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:1436 +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/functioncmds.c:100 +#, 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:105 +#, c-format +msgid "return type %s is only a shell" +msgstr "il tipo restituito %s non è completamente definito" + +#: commands/functioncmds.c:134 parser/parse_type.c:278 +#, 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:140 +#, c-format +msgid "type \"%s\" is not yet defined" +msgstr "il tipo \"%s\" non è ancora definito" + +#: commands/functioncmds.c:141 +msgid "Creating a shell type definition." +msgstr "Creazione di un tipo non completamente definito." + +#: commands/functioncmds.c:220 +#, 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:225 +#, c-format +msgid "argument type %s is only a shell" +msgstr "il tipo %s dell'argomento non è completamente definito" + +#: commands/functioncmds.c:235 +#, c-format +msgid "type %s does not exist" +msgstr "il tipo %s non esiste" + +#: commands/functioncmds.c:243 +msgid "functions cannot accept set arguments" +msgstr "le funzioni non possono accettare insiemi come argomenti" + +#: commands/functioncmds.c:252 +msgid "VARIADIC parameter must be the last input parameter" +msgstr "il parametro VARIADIC deve essere l'ultimo dei parametri di input" + +#: commands/functioncmds.c:279 +msgid "VARIADIC parameter must be an array" +msgstr "il parametro VARIADIC dev'essere un array" + +#: commands/functioncmds.c:319 +#, c-format +msgid "parameter name \"%s\" used more than once" +msgstr "il nome di parametro \"%s\" è usato più di una volta" + +#: commands/functioncmds.c:334 +msgid "only input parameters can have default values" +msgstr "solo i parametri di input possono avere un valore di default" + +#: commands/functioncmds.c:347 +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:363 +msgid "cannot use subquery in parameter default value" +msgstr "non si possono usare sottoquery nei valori predefiniti dei parametri" + +#: commands/functioncmds.c:367 +msgid "cannot use aggregate function in parameter default value" +msgstr "non si possono usare funzioni aggregate nei valori predefiniti dei parametri" + +#: commands/functioncmds.c:371 +msgid "cannot use window function in parameter default value" +msgstr "non si possono usare funzioni finestra nei valori predefiniti dei parametri" + +#: commands/functioncmds.c:381 +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:620 +msgid "no function body specified" +msgstr "non è stato specificato alcun corpo della funzione" + +#: commands/functioncmds.c:630 +msgid "no language specified" +msgstr "nessun linguaggio specificato" + +#: commands/functioncmds.c:651 commands/functioncmds.c:1352 +msgid "COST must be positive" +msgstr "COST dev'essere positivo" + +#: commands/functioncmds.c:659 commands/functioncmds.c:1360 +msgid "ROWS must be positive" +msgstr "ROWS dev'essere positivo" + +#: commands/functioncmds.c:698 +#, c-format +msgid "unrecognized function attribute \"%s\" ignored" +msgstr "attributo di funzione sconosciuto \"%s\" ignorato" + +#: commands/functioncmds.c:749 +#, c-format +msgid "only one AS item needed for language \"%s\"" +msgstr "solo un elemento AS è necessario per il linguaggio \"%s\"" + +#: commands/functioncmds.c:841 commands/functioncmds.c:2021 +msgid "Use CREATE LANGUAGE to load the language into the database." +msgstr "Usa CREATE LANGUAGE per caricare il linguaggio nel database." + +#: commands/functioncmds.c:888 +#, 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:901 +msgid "function result type must be specified" +msgstr "il tipo di risultato della funzione dev'essere specificato" + +#: commands/functioncmds.c:936 commands/functioncmds.c:1364 +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:988 +#, c-format +msgid "function %s(%s) does not exist, skipping" +msgstr "la funzione %s(%s) non esiste, saltata" + +#: commands/functioncmds.c:1010 +msgid "Use DROP AGGREGATE to drop aggregate functions." +msgstr "Usa DROP AGGREGATE per rimuovere le funzioni di aggregazione." + +#: commands/functioncmds.c:1017 +#, c-format +msgid "removing built-in function \"%s\"" +msgstr "rimozione della funzione predefinita \"%s\"" + +#: commands/functioncmds.c:1110 +msgid "Use ALTER AGGREGATE to rename aggregate functions." +msgstr "Usare ALTER AGGREGATE per rinominare le funzioni di aggregazione." + +#: commands/functioncmds.c:1122 commands/aggregatecmds.c:292 +#, c-format +msgid "function %s already exists in schema \"%s\"" +msgstr "la funzione %s esiste già nello schema \"%s\"" + +#: commands/functioncmds.c:1173 +msgid "Use ALTER AGGREGATE to change owner of aggregate functions." +msgstr "Usare ALTER AGGREGATE per cambiare il proprietario delle funzioni di aggregazione" + +#: commands/functioncmds.c:1512 +#, c-format +msgid "source data type %s is a pseudo-type" +msgstr "il tipo di dati di origine %s è uno pseudo-tipo" + +#: commands/functioncmds.c:1518 +#, 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:1526 commands/functioncmds.c:1814 +#: catalog/objectaddress.c:843 +#, c-format +msgid "must be owner of type %s or type %s" +msgstr "occorre essere proprietari del tipo %s o del tipo %s" + +#: commands/functioncmds.c:1555 +msgid "cast function must take one to three arguments" +msgstr "la funzione di conversione deve prendere da uno a tre argomenti" + +#: commands/functioncmds.c:1559 +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 origine" + +#: commands/functioncmds.c:1563 +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:1567 +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:1571 +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:1582 +msgid "cast function must not be volatile" +msgstr "la funzione di conversione non può essere volatile" + +#: commands/functioncmds.c:1587 +msgid "cast function must not be an aggregate function" +msgstr "la funzione di conversione non può essere una funzione di aggregazione" + +#: commands/functioncmds.c:1591 +msgid "cast function must not be a window function" +msgstr "la funzione di conversione non può essere una funzione finestra" + +#: commands/functioncmds.c:1595 +msgid "cast function must not return a set" +msgstr "la funzione di conversione non può restituire un insieme" + +#: commands/functioncmds.c:1621 +msgid "must be superuser to create a cast WITHOUT FUNCTION" +msgstr "occorre essere un superutente per creare un cast WITHOUT FUNCTION" + +#: commands/functioncmds.c:1636 +msgid "source and target data types are not physically compatible" +msgstr "i tipi di dati di origine e di destinazione non sono fisicamente compatibili" + +#: commands/functioncmds.c:1651 +msgid "composite data types are not binary-compatible" +msgstr "i tipi di dati compositi non sono compatibili a livello binario" + +#: commands/functioncmds.c:1657 +msgid "enum data types are not binary-compatible" +msgstr "le enumerazioni non sono compatibili a livello binario" + +#: commands/functioncmds.c:1663 +msgid "array data types are not binary-compatible" +msgstr "i tipi di dati array non sono compatibili a livello binario" + +#: commands/functioncmds.c:1680 +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:1690 +msgid "source data type and target data type are the same" +msgstr "i tipi di dati di origine e di destinazione sono gli stessi" + +#: commands/functioncmds.c:1723 +#, 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:1803 +#, 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/functioncmds.c:1841 +#, 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:1929 +#, c-format +msgid "function \"%s\" already exists in schema \"%s\"" +msgstr "la funzione \"%s\" esiste già nello schema \"%s\"" + +#: commands/functioncmds.c:2003 +msgid "no inline code specified" +msgstr "nessun codice inline specificato" + +#: commands/functioncmds.c:2051 +#, c-format +msgid "language \"%s\" does not support inline code execution" +msgstr "il linguaggio \"%s\" non supporta l'esecuzione di codice inline" + +#: 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 non è supportato verso stdout o da stdin" + +#: commands/copy.c:473 +#, c-format +msgid "could not write to COPY file: %m" +msgstr "scrittura nel file COPY fallita: %m" + +#: commands/copy.c:485 +msgid "connection lost during COPY to stdout" +msgstr "connessione persa durante COPY verso stdout" + +#: commands/copy.c:526 +#, c-format +msgid "could not read from COPY file: %m" +msgstr "lettura dal file COPY fallita: %m" + +#: commands/copy.c:577 +#, c-format +msgid "COPY from stdin failed: %s" +msgstr "COPY da stdin fallita: %s" + +#: commands/copy.c:593 +#, 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:745 +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:746 +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:874 +#, c-format +msgid "COPY format \"%s\" not recognized" +msgstr "Formato di COPY \"%s\" non riconosciuto" + +#: commands/copy.c:937 commands/copy.c:951 +#, 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:964 +#, 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:970 +#, c-format +msgid "option \"%s\" not recognized" +msgstr "opzione \"%s\" non riconosciuta" + +#: commands/copy.c:981 +msgid "cannot specify DELIMITER in BINARY mode" +msgstr "non è possibile specificare DELIMITER in BINARY mode" + +#: commands/copy.c:986 +msgid "cannot specify NULL in BINARY mode" +msgstr "non è possibile specificare NULL in BINARY mode" + +#: commands/copy.c:1008 +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:1015 +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:1021 +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:1038 +#, c-format +msgid "COPY delimiter cannot be \"%s\"" +msgstr "il delimitatore di COPY non può essere \"%s\"" + +#: commands/copy.c:1044 +msgid "COPY HEADER available only in CSV mode" +msgstr "l'HEADER di COPY è disponibile solo in modalità CSV" + +#: commands/copy.c:1050 +msgid "COPY quote available only in CSV mode" +msgstr "il quoting di COPY è disponibile solo in modalità CSV" + +#: commands/copy.c:1055 +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:1060 +msgid "COPY delimiter and quote must be different" +msgstr "il delimitatore e il quote di COPY devono essere diversi" + +#: commands/copy.c:1066 +msgid "COPY escape available only in CSV mode" +msgstr "l'escape di COPY è disponibile solo in modalità CSV" + +#: commands/copy.c:1071 +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:1077 +msgid "COPY force quote available only in CSV mode" +msgstr "il \"force quote\" di COPY è disponibile solo in modalità CSV" + +#: commands/copy.c:1081 +msgid "COPY force quote only available using COPY TO" +msgstr "il \"force quote\" di COPY è disponibile solo in modalità CSV" + +#: commands/copy.c:1087 +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:1091 +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:1097 +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:1104 +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:1166 +#, c-format +msgid "table \"%s\" does not have OIDs" +msgstr "la tabella \"%s\" non ha OID" + +#: commands/copy.c:1183 +msgid "COPY (SELECT) WITH OIDS is not supported" +msgstr "COPY (SELECT) WITH OIDS non è supportata" + +#: commands/copy.c:1210 +msgid "COPY (SELECT INTO) is not supported" +msgstr "COPY (SELECT INTO) non è supportata" + +#: commands/copy.c:1270 +#, c-format +msgid "FORCE QUOTE column \"%s\" not referenced by COPY" +msgstr "la colonna FORCE QUOTE \"%s\" non è referenziata da COPY" + +#: commands/copy.c:1292 +#, 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:1356 +#, c-format +msgid "cannot copy from view \"%s\"" +msgstr "non è possibile copiare dalla vista \"%s\"" + +#: commands/copy.c:1358 commands/copy.c:1364 +msgid "Try the COPY (SELECT ...) TO variant." +msgstr "Prova la variante COPY (SELECT ...) TO." + +#: commands/copy.c:1362 +#, c-format +msgid "cannot copy from foreign table \"%s\"" +msgstr "non è possibile copiare dalla tabella esterna \"%s\"" + +#: commands/copy.c:1368 +#, c-format +msgid "cannot copy from sequence \"%s\"" +msgstr "non è possibile copiare dalla sequenza \"%s\"" + +#: commands/copy.c:1373 +#, c-format +msgid "cannot copy from non-table relation \"%s\"" +msgstr "non è possibile copiare dalla relazione \"%s\" perché non è una tabella" + +#: commands/copy.c:1397 +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:1407 +#, c-format +msgid "could not open file \"%s\" for writing: %m" +msgstr "apertura del file \"%s\" in scrittura fallita: %m" + +#: commands/copy.c:1414 commands/copy.c:2200 +#, c-format +msgid "\"%s\" is a directory" +msgstr "\"%s\" è una directory" + +#: commands/copy.c:1738 +#, c-format +msgid "COPY %s, line %d, column %s" +msgstr "COPY %s, riga %d, colonna %s" + +#: commands/copy.c:1742 commands/copy.c:1787 +#, c-format +msgid "COPY %s, line %d" +msgstr "COPY %s, riga %d" + +#: commands/copy.c:1753 +#, c-format +msgid "COPY %s, line %d, column %s: \"%s\"" +msgstr "COPY %s, riga %d, colonna %s: \"%s\"" + +#: commands/copy.c:1761 +#, c-format +msgid "COPY %s, line %d, column %s: null input" +msgstr "COPY %s, riga %d, colonna %s: input nullo" + +#: commands/copy.c:1773 +#, c-format +msgid "COPY %s, line %d: \"%s\"" +msgstr "COPY %s, riga %d: \"%s\"" + +#: commands/copy.c:1857 +#, c-format +msgid "cannot copy to view \"%s\"" +msgstr "non è possibile copiare verso la vista \"%s\"" + +#: commands/copy.c:1862 +#, c-format +msgid "cannot copy to foreign table \"%s\"" +msgstr "non è possibile copiare verso la tabella esterna \"%s\"" + +#: commands/copy.c:1867 +#, c-format +msgid "cannot copy to sequence \"%s\"" +msgstr "non è possibile copiare verso sequenza \"%s\"" + +#: commands/copy.c:1872 +#, 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:2219 +msgid "COPY file signature not recognized" +msgstr "formato del file COPY non riconosciuto" + +#: commands/copy.c:2224 +msgid "invalid COPY file header (missing flags)" +msgstr "intestazione del file COPY non valida (flag mancanti)" + +#: commands/copy.c:2230 +msgid "unrecognized critical flags in COPY file header" +msgstr "alcune flag critici non sono stati riconosciuti nell'intestazione del file COPY" + +#: commands/copy.c:2236 +msgid "invalid COPY file header (missing length)" +msgstr "intestazione del file COPY non valida (manca la lunghezza)" + +#: commands/copy.c:2243 +msgid "invalid COPY file header (wrong length)" +msgstr "intestazione del file COPY non valida (lunghezza errata)" + +#: commands/copy.c:2376 commands/copy.c:3058 commands/copy.c:3288 +msgid "extra data after last expected column" +msgstr "ci sono dati in eccesso dopo l'ultima colonna attesa" + +#: commands/copy.c:2386 +msgid "missing data for OID column" +msgstr "dati per la colonna OID mancanti" + +#: commands/copy.c:2392 +msgid "null OID in COPY data" +msgstr "OID nullo nei dati da COPY" + +#: commands/copy.c:2402 commands/copy.c:2501 +msgid "invalid OID in COPY data" +msgstr "OID non valido nei dati da COPY" + +#: commands/copy.c:2417 +#, c-format +msgid "missing data for column \"%s\"" +msgstr "dati mancanti per la colonna \"%s\"" + +#: commands/copy.c:2476 +msgid "received copy data after EOF marker" +msgstr "dati da copiare ricevuti dopo il segnalatore di fine file" + +#: commands/copy.c:2483 +#, c-format +msgid "row field count is %d, expected %d" +msgstr "il numero di campi è %d, ne erano attesi %d" + +#: commands/copy.c:2822 commands/copy.c:2839 +msgid "literal carriage return found in data" +msgstr "\"ritorno carrello\" trovato nei dati" + +#: commands/copy.c:2823 commands/copy.c:2840 +msgid "unquoted carriage return found in data" +msgstr "\"ritorno carrello\" non quotato trovato nei dati" + +#: commands/copy.c:2825 commands/copy.c:2842 +msgid "Use \"\\r\" to represent carriage return." +msgstr "Usa \"\\r\" per rappresentare i caratteri \"ritorno carrello\"." + +#: commands/copy.c:2826 commands/copy.c:2843 +msgid "Use quoted CSV field to represent carriage return." +msgstr "Usa un campo CSV quotato per rappresentare i caratteri \"ritorno carrello\"." + +#: commands/copy.c:2855 +msgid "literal newline found in data" +msgstr "\"nuova riga\" letterale trovato nei dati" + +#: commands/copy.c:2856 +msgid "unquoted newline found in data" +msgstr "\"nuova riga\" non quotato trovato nei dati" + +#: commands/copy.c:2858 +msgid "Use \"\\n\" to represent newline." +msgstr "Usa \"\\n\" per rappresentare i caratteri \"nuova riga\"." + +#: commands/copy.c:2859 +msgid "Use quoted CSV field to represent newline." +msgstr "Usa un campo CSV quotato per rappresentare i caratteri \"nuova riga\"." + +#: commands/copy.c:2905 commands/copy.c:2941 +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:2914 commands/copy.c:2930 +msgid "end-of-copy marker corrupt" +msgstr "il marcatore di fine copia è corrotto" + +#: commands/copy.c:3372 +msgid "unterminated CSV quoted field" +msgstr "campo CSV tra virgolette non terminato" + +#: commands/copy.c:3449 commands/copy.c:3468 +msgid "unexpected EOF in COPY data" +msgstr "fine file inattesa dei dati da COPY" + +#: commands/copy.c:3458 +msgid "invalid field size" +msgstr "dimensione del campo non valida" + +#: commands/copy.c:3481 +msgid "incorrect binary data format" +msgstr "formato di dati binari non corretto" + +#: commands/cluster.c:134 commands/cluster.c:372 +msgid "cannot cluster temporary tables of other sessions" +msgstr "non è possibile raggruppare tabelle temporanee di altre sessioni" + +#: commands/cluster.c:164 +#, 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:361 +msgid "cannot cluster a shared catalog" +msgstr "non è possibile raggruppare un catalogo condiviso" + +#: commands/cluster.c:376 +msgid "cannot vacuum temporary tables of other sessions" +msgstr "non è possibile ripulire tabelle temporanee di altre sessioni" + +#: commands/cluster.c:426 +#, c-format +msgid "\"%s\" is not an index for table \"%s\"" +msgstr "\"%s\" non è un indice per la tabella \"%s\"" + +#: commands/cluster.c:434 +#, 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:446 +#, c-format +msgid "cannot cluster on partial index \"%s\"" +msgstr "non è possibile raggruppare sull'indice parziale \"%s\"" + +#: commands/cluster.c:460 +#, c-format +msgid "cannot cluster on invalid index \"%s\"" +msgstr "non è possibile raggruppare sull'indice non valido \"%s\"" + +#: commands/cluster.c:894 +#, 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:900 +#, 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:905 commands/vacuumlazy.c:368 +#, c-format +msgid "vacuuming \"%s.%s\"" +msgstr "pulizia di \"%s.%s\"" + +#: commands/cluster.c:1065 +#, 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:1069 +#, c-format +msgid "" +"%.0f dead row versions cannot be removed yet.\n" +"%s." +msgstr "" +"%.0f versioni di riga morte non possono ancora essere rimosse.\n" +"%s." + +#: commands/vacuumlazy.c:283 +#, 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 "" +"pulizia automatica della tabella \"%s.%s.%s\": scansioni di indici: %d\n" +"pagine: %d rimosse, %d restanti\n" +"tuple: %.0f rimosse, %.0f restanti\n" +"utilizzo del sistema: %s" + +#: commands/vacuumlazy.c:537 +#, c-format +msgid "relation \"%s\" page %u is uninitialized --- fixing" +msgstr "la relazione \"%s\" pagina %u non è inizializzata --- in correzione" + +#: commands/vacuumlazy.c:897 +#, c-format +msgid "\"%s\": removed %.0f row versions in %u pages" +msgstr "\"%s\": %.0f versioni di riga rimosse in %u pagine" + +#: commands/vacuumlazy.c:902 +#, 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:906 +#, 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 versioni di riga morte non possono essere ancora rimosse.\n" +"C'erano %.0f puntatori ad oggetti non usati.\n" +"%u pagine sono completamente vuote.\n" +"%s." + +#: commands/vacuumlazy.c:964 +#, c-format +msgid "\"%s\": removed %d row versions in %d pages" +msgstr "\"%s\": %d versioni di riga rimosse in %d pagine" + +#: commands/vacuumlazy.c:967 commands/vacuumlazy.c:1059 +#: commands/vacuumlazy.c:1226 +#, c-format +msgid "%s." +msgstr "%s." + +#: commands/vacuumlazy.c:1056 +#, 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:1097 +#, 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:1101 +#, c-format +msgid "" +"%.0f index row versions were removed.\n" +"%u index pages have been deleted, %u are currently reusable.\n" +"%s." +msgstr "" +"%.0f versioni di riga dell'indice sono state rimosse.\n" +"%u pagine dell'indice sono state cancellate, %u sono attualmente riusabili.\n" +"%s." + +#: commands/vacuumlazy.c:1158 +#, 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:1223 +#, c-format +msgid "\"%s\": truncated %u to %u pages" +msgstr "\"%s\": %u pagine ridotte a %u" + +#: commands/vacuumlazy.c:1279 +#, 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/dbcommands.c:202 +msgid "LOCATION is not supported anymore" +msgstr "LOCATION non è più supportato" + +#: commands/dbcommands.c:203 +msgid "Consider using tablespaces instead." +msgstr "Puoi prendere in considerazione l'uso dei tablespace." + +#: commands/dbcommands.c:254 commands/dbcommands.c:1374 commands/user.c:267 +#: commands/user.c:606 +#, c-format +msgid "invalid connection limit: %d" +msgstr "limite di connessioni non valido: %d" + +#: commands/dbcommands.c:273 +msgid "permission denied to create database" +msgstr "permesso di creare il database negato" + +#: commands/dbcommands.c:296 +#, c-format +msgid "template database \"%s\" does not exist" +msgstr "il modello di database \"%s\" non esiste" + +#: commands/dbcommands.c:308 +#, c-format +msgid "permission denied to copy database \"%s\"" +msgstr "permesso di copiare il database \"%s\" negato" + +#: commands/dbcommands.c:324 +#, c-format +msgid "invalid server encoding %d" +msgstr "codifica del server non valida: %d" + +#: commands/dbcommands.c:330 commands/dbcommands.c:334 +#, c-format +msgid "invalid locale name %s" +msgstr "nome locale non valido %s" + +#: commands/dbcommands.c:353 +#, c-format +msgid "new encoding (%s) is incompatible with the encoding of the template database (%s)" +msgstr "la nuova codifica (%s) è incompatibile con la codifica del modello di database (%s)" + +#: commands/dbcommands.c:356 +msgid "Use the same encoding as in the template database, or use template0 as template." +msgstr "Usa la stessa codifica del modello di database, o usa template0 come modello." + +#: commands/dbcommands.c:361 +#, c-format +msgid "new collation (%s) is incompatible with the collation of the template database (%s)" +msgstr "il nuovo ordinamento (%s) non è compatibile con l'ordinamento del modello del database (%s)" + +#: commands/dbcommands.c:363 +msgid "Use the same collation as in the template database, or use template0 as template." +msgstr "Usa lo stesso ordinamento del modello di database, o usa template0 come modello." + +#: commands/dbcommands.c:368 +#, c-format +msgid "new LC_CTYPE (%s) is incompatible with the LC_CTYPE of the template database (%s)" +msgstr "il nuovo LC_CTYPE (%s) è incompatibile con l'LC_CTYPE del modello del database (%s)" + +#: commands/dbcommands.c:370 +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:392 commands/dbcommands.c:1081 +msgid "pg_global cannot be used as default tablespace" +msgstr "pg_global non può essere usato come tablespace predefinito" + +#: commands/dbcommands.c:418 +#, c-format +msgid "cannot assign new default tablespace \"%s\"" +msgstr "non è possibile assegnare il nuovo tablespace predefinito \"%s\"" + +#: commands/dbcommands.c:420 +#, c-format +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:440 commands/dbcommands.c:956 +#, c-format +msgid "database \"%s\" already exists" +msgstr "il database \"%s\" esiste già" + +#: commands/dbcommands.c:454 +#, c-format +msgid "source database \"%s\" is being accessed by other users" +msgstr "il database sorgente \"%s\" ha attualmente altri utenti collegati" + +#: commands/dbcommands.c:722 commands/dbcommands.c:737 +#, c-format +msgid "encoding %s does not match locale %s" +msgstr "la codifica %s non corrisponde al locale %s" + +#: commands/dbcommands.c:725 +#, c-format +msgid "The chosen LC_CTYPE setting requires encoding %s." +msgstr "L'impostazione LC_CTYPE scelta richiede la codifica %s." + +#: commands/dbcommands.c:740 +#, c-format +msgid "The chosen LC_COLLATE setting requires encoding %s." +msgstr "L'impostazione LC_COLLATE scelta richiede la codifica %s." + +#: commands/dbcommands.c:798 +#, c-format +msgid "database \"%s\" does not exist, skipping" +msgstr "il database \"%s\" non esiste, saltato" + +#: commands/dbcommands.c:819 +msgid "cannot drop a template database" +msgstr "non è possibile eliminare un modello di database" + +#: commands/dbcommands.c:825 +msgid "cannot drop the currently open database" +msgstr "non si può eliminare il database aperto attualmente" + +#: commands/dbcommands.c:836 commands/dbcommands.c:978 +#: commands/dbcommands.c:1103 +#, c-format +msgid "database \"%s\" is being accessed by other users" +msgstr "il database \"%s\" è attualmente utilizzato da altri utenti" + +#: commands/dbcommands.c:947 +msgid "permission denied to rename database" +msgstr "permesso di rinominare il database negato" + +#: commands/dbcommands.c:967 +msgid "current database cannot be renamed" +msgstr "il database corrente non può essere rinominato" + +#: commands/dbcommands.c:1059 +msgid "cannot change the tablespace of the currently open database" +msgstr "non è possibile cambiare il tablespace del database attualmente aperto" + +#: commands/dbcommands.c:1143 +#, 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:1145 +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:1273 commands/dbcommands.c:1752 +#: commands/dbcommands.c:1966 commands/dbcommands.c:2014 +#: commands/tablespace.c:584 +#, 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:1517 +msgid "permission denied to change owner of database" +msgstr "permesso di cambiare il proprietario del database negato" + +#: commands/dbcommands.c:1853 +#, 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:1856 +#, c-format +msgid "There are %d other session(s) using the database." +msgstr "Ci sono altre %d sessioni che stanno usando il database." + +#: commands/dbcommands.c:1859 +#, c-format +msgid "There are %d prepared transaction(s) using the database." +msgstr "Ci sono %d transazioni preparate che stanno usando il database." + +#: commands/explain.c:153 +#, c-format +msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\"" +msgstr "valore sconosciuto per l'opzione di EXPLAIN \"%s\": \"%s\"" + +#: commands/explain.c:159 +#, c-format +msgid "unrecognized EXPLAIN option \"%s\"" +msgstr "opzione di EXPLAIN non riconosciuta \"%s\"" + +#: commands/explain.c:166 +msgid "EXPLAIN option BUFFERS requires ANALYZE" +msgstr "l'opzione BUFFERS di EXPLAIN richiede ANALYZE" + +#: commands/indexcmds.c:161 +msgid "must specify at least one column" +msgstr "occorre specificare almeno una colonna" + +#: commands/indexcmds.c:165 +#, 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:193 +#, c-format +msgid "cannot create index on foreign table \"%s\"" +msgstr "non è possibile creare indici sulla tabella esterna \"%s\"" + +#: commands/indexcmds.c:208 +msgid "cannot create indexes on temporary tables of other sessions" +msgstr "non è possibile creare indici su tabelle temporanee di altre sessioni" + +#: commands/indexcmds.c:294 +msgid "substituting access method \"gist\" for obsolete method \"rtree\"" +msgstr "sostituzione del metodo di accesso \"gist\" per il metodo obsoleto \"rtree\"" + +#: commands/indexcmds.c:302 commands/opclasscmds.c:369 +#: commands/opclasscmds.c:790 commands/opclasscmds.c:2202 +#, c-format +msgid "access method \"%s\" does not exist" +msgstr "Il metodo di accesso \"%s\" non esiste" + +#: commands/indexcmds.c:311 +#, 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:316 +#, 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:321 +#, 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:397 +#, 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:735 +msgid "cannot use subquery in index predicate" +msgstr "non è possibile usare sottoquery nel predicato dell'indice" + +#: commands/indexcmds.c:739 +msgid "cannot use aggregate in index predicate" +msgstr "non si possono usare funzioni di aggregazione nel predicato dell'indice" + +#: commands/indexcmds.c:748 +msgid "functions in index predicate must be marked IMMUTABLE" +msgstr "le funzioni nel predicato dell'indice devono essere marcate IMMUTABLE" + +#: commands/indexcmds.c:813 parser/parse_utilcmd.c:1754 +#, c-format +msgid "column \"%s\" named in key does not exist" +msgstr "la colonna \"%s\" nominata nella chiave non esiste" + +#: commands/indexcmds.c:866 +msgid "cannot use subquery in index expression" +msgstr "non si possono usare sottoquery nell'espressione dell'indice" + +#: commands/indexcmds.c:870 +msgid "cannot use aggregate function in index expression" +msgstr "non si possono usare funzioni di aggregazione nell'espressione dell'indice" + +#: commands/indexcmds.c:881 +msgid "functions in index expression must be marked IMMUTABLE" +msgstr "le funzioni nell'espressione dell'indice devono essere marcate IMMUTABLE" + +#: commands/indexcmds.c:902 +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:910 commands/typecmds.c:843 +#: parser/parse_utilcmd.c:2606 parser/parse_expr.c:2165 +#: parser/parse_type.c:492 +#, c-format +msgid "collations are not supported by type %s" +msgstr "gli ordinamenti non sono supportati dal tipo %s" + +#: commands/indexcmds.c:948 +#, c-format +msgid "operator %s is not commutative" +msgstr "l'operatore %s non è commutativo" + +#: commands/indexcmds.c:950 +msgid "Only commutative operators can be used in exclusion constraints." +msgstr "Solo operatori commutativi possono essere usati nei vincoli di esclusione." + +#: commands/indexcmds.c:976 +#, 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:979 +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:1014 +#, 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:1019 +#, 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:1075 +#, 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:1077 +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:1106 commands/indexcmds.c:1114 +#: commands/opclasscmds.c:212 commands/opclasscmds.c:1568 +#, 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:1127 +#, 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:1217 +#, 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:1560 +#, c-format +msgid "table \"%s\" has no indexes" +msgstr "la tabella \"%s\" non ha indici" + +#: commands/indexcmds.c:1588 +msgid "can only reindex the currently open database" +msgstr "è possibile reindicizzare solo il database corrente" + +#: commands/indexcmds.c:1675 +#, c-format +msgid "table \"%s.%s\" was reindexed" +msgstr "la tabella \"%s.%s\" è stata reindicizzata" + +#: commands/view.c:143 +#, 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:158 +msgid "view must have at least one column" +msgstr "la vista deve avere almeno una colonna" + +#: commands/view.c:283 commands/view.c:295 +msgid "cannot drop columns from view" +msgstr "non è possibile eliminare colonne da una vista" + +#: commands/view.c:300 +#, 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:308 +#, 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:447 +msgid "views must not contain SELECT INTO" +msgstr "le viste non possono contenere SELECT INTO" + +#: commands/view.c:451 +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:479 +msgid "CREATE VIEW specifies more column names than columns" +msgstr "CREATE VIEW specifica più nomi di colonne che colonne" + +#: commands/view.c:487 +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:501 +#, c-format +msgid "view \"%s\" will be a temporary view" +msgstr "la vista \"%s\" sarà una vista temporanea" + +#: commands/opclasscmds.c:136 commands/opclasscmds.c:1838 +#: commands/opclasscmds.c:1849 commands/opclasscmds.c:2083 +#: commands/opclasscmds.c:2094 +#, 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:271 +#, 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:408 +msgid "must be superuser to create an operator class" +msgstr "devi essere un superutente per creare una classe di operatori" + +#: 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 "numero di operatore %d non valido, deve essere tra 1 e %d" + +#: 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 "numero di procedura %d non valido, deve essere tra 1 e %d" + +#: commands/opclasscmds.c:561 +msgid "storage type specified more than once" +msgstr "tipo di immagazzinamento specificato più di una volta" + +#: commands/opclasscmds.c:589 +#, 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:605 +#, 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:633 +#, 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:636 +#, c-format +msgid "Operator class \"%s\" already is the default." +msgstr "La classe di operatori \"%s\" è già predefinita." + +#: commands/opclasscmds.c:760 +msgid "must be superuser to create an operator family" +msgstr "solo un superutente può creare una famiglia di operatori" + +#: commands/opclasscmds.c:816 +msgid "must be superuser to alter an operator family" +msgstr "solo un superutente può modificare una famiglia di operatori" + +#: commands/opclasscmds.c:880 +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:944 +msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY" +msgstr "STORAGE non può essere specificato in ALTER OPERATOR FAMILY" + +#: commands/opclasscmds.c:1060 +msgid "one or two argument types must be specified" +msgstr "devono essere specificati uno due argomenti" + +#: commands/opclasscmds.c:1086 +msgid "index operators must be binary" +msgstr "gli operatori dell'indice devono essere binari" + +#: commands/opclasscmds.c:1111 +#, 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:1124 +msgid "index search operators must return boolean" +msgstr "gli operatori di ricerca degli indici devono restituire un booleano" + +#: commands/opclasscmds.c:1163 +msgid "btree procedures must have two arguments" +msgstr "le procedure btree devono avere due argomenti" + +#: commands/opclasscmds.c:1167 +msgid "btree procedures must return integer" +msgstr "le procedure btree devono restituire un integer" + +#: commands/opclasscmds.c:1182 +msgid "hash procedures must have one argument" +msgstr "la procedura di hash deve avere un argomento." + +#: commands/opclasscmds.c:1186 +msgid "hash procedures must return integer" +msgstr "la procedura di hash deve restituire un intero" + +#: commands/opclasscmds.c:1211 +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:1237 +#, 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:1244 +#, 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:1293 +#, 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:1406 +#, 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:1493 +#, 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:1533 +#, 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:1618 +#, 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" + +#: commands/opclasscmds.c:1778 +#, 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:1867 +#, 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\"" + +#: commands/extension.c:149 commands/extension.c:2689 +#, c-format +msgid "extension \"%s\" does not exist" +msgstr "l'estensione \"%s\" non esiste" + +#: commands/extension.c:248 commands/extension.c:257 commands/extension.c:269 +#: commands/extension.c:279 +#, c-format +msgid "invalid extension name: \"%s\"" +msgstr "nome di estensione non valido: \"%s\"" + +#: commands/extension.c:249 +msgid "Extension names must not be empty." +msgstr "I nomi delle estensioni non possono essere vuoti." + +#: commands/extension.c:258 +msgid "Extension names must not contain \"--\"." +msgstr "I nomi delle estensioni non possono contenere \"--\"." + +#: commands/extension.c:270 +msgid "Extension names must not begin or end with \"-\"." +msgstr "I nomi delle estensioni non possono iniziare o finire con \"-\"." + +#: commands/extension.c:280 +msgid "Extension names must not contain directory separator characters." +msgstr "I nomi delle estensioni non possono contenere caratteri separatore directory." + +#: commands/extension.c:295 commands/extension.c:304 commands/extension.c:313 +#: commands/extension.c:323 +#, c-format +msgid "invalid extension version name: \"%s\"" +msgstr "nome di versione dell'estensione non valido: \"%s\"" + +#: commands/extension.c:296 +msgid "Version names must not be empty." +msgstr "I nomi di versione non possono essere vuoti." + +#: commands/extension.c:305 +msgid "Version names must not contain \"--\"." +msgstr "I nomi di versione non possono contenere \"--\"." + +#: commands/extension.c:314 +msgid "Version names must not begin or end with \"-\"." +msgstr "I nomi di versione non possono iniziare o finire con \"-\"." + +#: commands/extension.c:324 +msgid "Version names must not contain directory separator characters." +msgstr "I nomi di versione non possono contenere caratteri separatore directory." + +#: commands/extension.c:474 +#, c-format +msgid "could not open extension control file \"%s\": %m" +msgstr "apertura del file di controllo dell'estensione \"%s\" fallita: %m" + +#: commands/extension.c:495 commands/extension.c:505 +#, c-format +msgid "parameter \"%s\" cannot be set in a secondary extension control file" +msgstr "il parametro \"%s\" non può essere impostato in un file di controllo secondario di estensione" + +#: commands/extension.c:544 +#, c-format +msgid "\"%s\" is not a valid encoding name" +msgstr "\"%s\" non è un nome di codifica valido" + +#: commands/extension.c:558 +#, c-format +msgid "parameter \"%s\" must be a list of extension names" +msgstr "il parametro \"%s\" dev'essere una lista di nomi di estensioni" + +#: commands/extension.c:565 +#, c-format +msgid "unrecognized parameter \"%s\" in file \"%s\"" +msgstr "parametro sconosciuto \"%s\" nel file \"%s\"" + +#: commands/extension.c:574 +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 +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 +#, c-format +msgid "permission denied to create extension \"%s\"" +msgstr "permesso di creare l'estensione \"%s\" negato" + +#: commands/extension.c:796 +msgid "Must be superuser to create this extension." +msgstr "Solo un superutente può creare questa estensione." + +#: commands/extension.c:800 +#, c-format +msgid "permission denied to update extension \"%s\"" +msgstr "permesso di modificare l'estensione \"%s\" negato" + +#: commands/extension.c:802 +msgid "Must be superuser to update this extension." +msgstr "Solo un superutente può modificare questa estensione." + +#: commands/extension.c:1084 +#, 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 +#, c-format +msgid "extension \"%s\" already exists, skipping" +msgstr "l'estensione \"%s\" esiste già, saltata" + +#: commands/extension.c:1218 +#, c-format +msgid "extension \"%s\" already exists" +msgstr "l'estensione \"%s\" esiste già" + +#: commands/extension.c:1229 +msgid "nested CREATE EXTENSION is not supported" +msgstr "CREATE EXTENSION annidati non sono supportati" + +#: commands/extension.c:1284 commands/extension.c:2749 +msgid "version to install must be specified" +msgstr "il nome di versione da installare deve essere specificato" + +#: commands/extension.c:1301 +#, 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 +#, c-format +msgid "extension \"%s\" must be installed in schema \"%s\"" +msgstr "l'estensione \"%s\" dev'essere installata nello schema \"%s\"" + +#: commands/extension.c:1399 commands/extension.c:1405 catalog/namespace.c:358 +#: catalog/namespace.c:2589 +msgid "no schema has been selected to create in" +msgstr "nessuna schema selezionato per crearci dentro" + +#: commands/extension.c:1439 commands/extension.c:2890 +#, c-format +msgid "required extension \"%s\" is not installed" +msgstr "l'estensione richiesta \"%s\" non è installata" + +#: commands/extension.c:1600 commands/extension.c:2488 +#: catalog/objectaddress.c:289 +msgid "extension name cannot be qualified" +msgstr "il nome dell'estensione non può essere qualificato" + +#: commands/extension.c:1608 +#, c-format +msgid "extension \"%s\" does not exist, skipping" +msgstr "l'estensione \"%s\" non esiste, saltata" + +#: commands/extension.c:1663 +#, 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:2134 +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:2146 +#, c-format +msgid "OID %u does not refer to a table" +msgstr "l'OID %u non si riferisce ad una tabella" + +#: commands/extension.c:2151 +#, 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:2515 +#, 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:2555 commands/extension.c:2618 +#, c-format +msgid "extension \"%s\" does not support SET SCHEMA" +msgstr "l'estensione \"%s\" non supporta SET SCHEMA" + +#: commands/extension.c:2620 +#, c-format +msgid "%s is not in the extension's schema \"%s\"" +msgstr "%s non è nello schema dell'estensione \"%s\"" + +#: commands/extension.c:2669 +msgid "nested ALTER EXTENSION is not supported" +msgstr "ALTER EXTENSION annidati non sono supportati" + +#: commands/extension.c:2760 +#, c-format +msgid "version \"%s\" of extension \"%s\" is already installed" +msgstr "la versione \"%s\" dell'estensione \"%s\" è già installata" + +#: commands/extension.c:2983 catalog/pg_depend.c:164 +#, c-format +msgid "%s is already a member of extension \"%s\"" +msgstr "%s fa già parte dell'estensione \"%s\"" + +#: commands/extension.c:2995 +#, 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:3013 +#, c-format +msgid "%s is not a member of extension \"%s\"" +msgstr "%s non fa parte dell'estensione \"%s\"" + +#: commands/collationcmds.c:81 +#, c-format +msgid "collation attribute \"%s\" not recognized" +msgstr "attributo dell'ordinamento \"%s\" non riconosciuto" + +#: commands/collationcmds.c:126 +msgid "parameter \"lc_collate\" must be specified" +msgstr "il parametro \"lc_collate\" deve essere specificato" + +#: commands/collationcmds.c:131 +msgid "parameter \"lc_ctype\" must be specified" +msgstr "il parametro \"lc_ctype\" deve essere specificato" + +#: commands/collationcmds.c:177 +#, c-format +msgid "collation \"%s\" does not exist, skipping" +msgstr "l'ordinamento \"%s\" non esiste, saltato" + +#: commands/collationcmds.c:237 commands/collationcmds.c:416 +#, c-format +msgid "collation \"%s\" for encoding \"%s\" already exists in schema \"%s\"" +msgstr "l'ordinamento \"%s\" per la codifica \"%s\" già esiste nello schema \"%s\"" + +#: commands/collationcmds.c:249 commands/collationcmds.c:428 +#, c-format +msgid "collation \"%s\" already exists in schema \"%s\"" +msgstr "l'ordinamento \"%s\" già esiste nello schema \"%s\"" + +#: commands/comment.c:97 commands/seclabel.c:113 +#, c-format +msgid "\"%s\" is not a table, view, composite type, or foreign table" +msgstr "\"%s\" non è una tabella, vista, tipo composito né una tabella esterna" + +#: 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 "creazione della directory \"%s\" fallita: %m" + +#: commands/tablespace.c:205 +#, c-format +msgid "could not stat directory \"%s\": %m" +msgstr "non è stato possibile ottenere informazioni sulla directory \"%s\": %m" + +#: commands/tablespace.c:214 +#, c-format +msgid "\"%s\" exists but is not a directory" +msgstr "\"%s\" esiste ma non è una directory" + +#: commands/tablespace.c:244 +#, c-format +msgid "permission denied to create tablespace \"%s\"" +msgstr "permesso di creare il tablespace \"%s\" negato" + +#: commands/tablespace.c:246 +msgid "Must be superuser to create a tablespace." +msgstr "Solo un superutente può incrementare questo valore." + +#: commands/tablespace.c:262 +msgid "tablespace location cannot contain single quotes" +msgstr "la posizione del tablespace non può contenere apici" + +#: commands/tablespace.c:272 +msgid "tablespace location must be an absolute path" +msgstr "la posizione del tablespace dev'essere un percorso assoluto" + +#: commands/tablespace.c:283 +#, c-format +msgid "tablespace location \"%s\" is too long" +msgstr "la posizione del tablespace \"%s\" è troppo lunga" + +#: commands/tablespace.c:293 commands/tablespace.c:857 +#, c-format +msgid "unacceptable tablespace name \"%s\"" +msgstr "il nome del tablespace \"%s\" non è accettabile" + +#: commands/tablespace.c:295 commands/tablespace.c:858 +msgid "The prefix \"pg_\" is reserved for system tablespaces." +msgstr "Il prefisso \"pg_\" è riservato per i tablespace di sistema." + +#: commands/tablespace.c:305 commands/tablespace.c:870 +#, c-format +msgid "tablespace \"%s\" already exists" +msgstr "il tablespace \"%s\" esiste già" + +#: commands/tablespace.c:377 commands/tablespace.c:529 +#: replication/basebackup.c:169 replication/basebackup.c:756 +msgid "tablespaces are not supported on this platform" +msgstr "i tablespace non sono supportati su questa piattaforma" + +#: commands/tablespace.c:415 commands/tablespace.c:841 +#: commands/tablespace.c:908 commands/tablespace.c:1013 +#: commands/tablespace.c:1079 commands/tablespace.c:1217 +#: commands/tablespace.c:1417 +#, c-format +msgid "tablespace \"%s\" does not exist" +msgstr "il tablespace \"%s\" non esiste" + +#: commands/tablespace.c:421 +#, c-format +msgid "tablespace \"%s\" does not exist, skipping" +msgstr "il tablespace \"%s\" non esiste, saltato" + +#: commands/tablespace.c:486 +#, c-format +msgid "tablespace \"%s\" is not empty" +msgstr "il tablespace \"%s\" non è vuoto" + +#: commands/tablespace.c:560 +#, c-format +msgid "directory \"%s\" does not exist" +msgstr "la directory \"%s\" non esiste" + +#: commands/tablespace.c:561 +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:566 +#, c-format +msgid "could not set permissions on directory \"%s\": %m" +msgstr "impostazione dei permessi sulla directory \"%s\" fallita: %m" + +#: commands/tablespace.c:598 +#, c-format +msgid "directory \"%s\" already in use as a tablespace" +msgstr "la directory \"%s\" già è in uso come tablespace" + +#: commands/tablespace.c:613 commands/tablespace.c:777 +#, c-format +msgid "could not remove symbolic link \"%s\": %m" +msgstr "rimozione del link simbolico \"%s\" fallita: %m" + +#: commands/tablespace.c:623 +#, c-format +msgid "could not create symbolic link \"%s\": %m" +msgstr "creazione del link simbolico \"%s\" fallita: %m" + +#: commands/tablespace.c:729 commands/tablespace.c:742 +#: commands/tablespace.c:766 +#, c-format +msgid "could not remove directory \"%s\": %m" +msgstr "rimozione della directory \"%s\" fallita: %m" + +#: commands/tablespace.c:1084 +#, c-format +msgid "Tablespace \"%s\" does not exist." +msgstr "Il tablespace \"%s\" non esiste." + +#: commands/tablespace.c:1516 +#, c-format +msgid "directories for tablespace %u could not be removed" +msgstr "rimozioni delle directory per il tablespace %u fallita" + +#: commands/tablespace.c:1518 +msgid "You can remove the directories manually if necessary." +msgstr "Puoi rimuovere le directory manualmente se necessario." + +#: commands/schemacmds.c:82 commands/schemacmds.c:275 +#, c-format +msgid "unacceptable schema name \"%s\"" +msgstr "nome dello schema \"%s\" non accettabile" + +#: commands/schemacmds.c:83 commands/schemacmds.c:276 +msgid "The prefix \"pg_\" is reserved for system schemas." +msgstr "Il prefisso \"pg_\" è riservato agli schemi di sistema." + +#: commands/schemacmds.c:178 catalog/objectaddress.c:298 +msgid "schema name cannot be qualified" +msgstr "il nome dello schema non può essere qualificato" + +#: commands/schemacmds.c:186 +#, c-format +msgid "schema \"%s\" does not exist, skipping" +msgstr "lo schema \"%s\" non esiste, saltato" + +#: commands/schemacmds.c:253 commands/schemacmds.c:322 +#: catalog/namespace.c:2610 catalog/namespace.c:3599 catalog/namespace.c:3602 +#, c-format +msgid "schema \"%s\" does not exist" +msgstr "lo schema \"%s\" non esiste" + +#: commands/schemacmds.c:259 catalog/pg_namespace.c:60 +#, c-format +msgid "schema \"%s\" already exists" +msgstr "lo schema \"%s\" esiste già" + +#: commands/seclabel.c:58 +msgid "no security label providers have been loaded" +msgstr "nessun fornitore di etichette di sicurezza è stato caricato" + +#: commands/seclabel.c:62 +msgid "must specify provider when multiple security label providers have been loaded" +msgstr "occorre specificare un fornitore quando più di un fornitore di etichette di sicurezza è stato caricato" + +#: commands/seclabel.c:80 +#, c-format +msgid "security label provider \"%s\" is not loaded" +msgstr "il fornitore di etichette di sicurezza \"%s\" non è stato caricato" + +#: commands/portalcmds.c:61 commands/portalcmds.c:160 +#: commands/portalcmds.c:212 +msgid "invalid cursor name: must not be empty" +msgstr "nome di cursore non valido: non deve essere vuoto" + +#: commands/portalcmds.c:415 +msgid "could not reposition held cursor" +msgstr "riposizionamento del cursore held fallito" + +#: commands/aggregatecmds.c:103 +#, c-format +msgid "aggregate attribute \"%s\" not recognized" +msgstr "attributo dell'aggregato \"%s\" non riconosciuto" + +#: commands/aggregatecmds.c:113 +msgid "aggregate stype must be specified" +msgstr "l'attributo stype dell'aggregato deve essere specificato" + +#: commands/aggregatecmds.c:117 +msgid "aggregate sfunc must be specified" +msgstr "l'attributo sfunc dell'aggregato deve essere specificato" + +#: commands/aggregatecmds.c:134 +msgid "aggregate input type must be specified" +msgstr "il tipo di input dell'aggregato deve essere specificato" + +#: commands/aggregatecmds.c:159 +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:191 +#, c-format +msgid "aggregate transition data type cannot be %s" +msgstr "il tipo di dato della transizione dell'aggregato non può essere %s" + +#: commands/aggregatecmds.c:230 +#, c-format +msgid "aggregate %s(%s) does not exist, skipping" +msgstr "la funzione di aggregazione %s(%s) non esiste, saltato" + +#: commands/user.c:143 +msgid "SYSID can no longer be specified" +msgstr "SYSID non può più essere specificato" + +#: commands/user.c:284 +msgid "must be superuser to create superusers" +msgstr "solo i superutenti possono creare superutenti" + +#: commands/user.c:291 +msgid "must be superuser to create replication users" +msgstr "solo i superutenti possono creare utenti di replica" + +#: commands/user.c:298 +msgid "permission denied to create role" +msgstr "permesso di creare il ruolo negato" + +#: commands/user.c:305 commands/user.c:1087 +#, c-format +msgid "role name \"%s\" is reserved" +msgstr "il nome di ruolo \"%s\" è riservato" + +#: commands/user.c:318 commands/user.c:1081 +#, c-format +msgid "role \"%s\" already exists" +msgstr "il ruolo \"%s\" esiste già" + +#: commands/user.c:636 commands/user.c:842 commands/user.c:1321 +#: commands/user.c:1458 +msgid "must be superuser to alter superusers" +msgstr "solo i superutenti possono modificare superutenti" + +#: commands/user.c:643 +msgid "must be superuser to alter replication users" +msgstr "solo i superutenti possono modificare utenti di replica" + +#: commands/user.c:659 commands/user.c:850 +msgid "permission denied" +msgstr "permesso negato" + +#: commands/user.c:878 +msgid "permission denied to drop role" +msgstr "permesso di eliminare il ruolo negato" + +#: commands/user.c:910 +#, c-format +msgid "role \"%s\" does not exist, skipping" +msgstr "il ruolo \"%s\" non esiste, saltato" + +#: commands/user.c:922 commands/user.c:926 +msgid "current user cannot be dropped" +msgstr "l'utente corrente non può essere eliminato" + +#: commands/user.c:930 +msgid "session user cannot be dropped" +msgstr "l'utente della sessione non può essere eliminato" + +#: commands/user.c:941 +msgid "must be superuser to drop superusers" +msgstr "solo i superutenti possono eliminare superutenti" + +#: commands/user.c:954 +#, c-format +msgid "role \"%s\" cannot be dropped because some objects depend on it" +msgstr "il ruolo \"%s\" non può essere eliminato perché alcuni oggetti ne dipendono" + +#: commands/user.c:1071 +msgid "session user cannot be renamed" +msgstr "l'utente della sessione non può essere rinominato" + +#: commands/user.c:1075 +msgid "current user cannot be renamed" +msgstr "l'utente corrente non può essere eliminato" + +#: commands/user.c:1098 +msgid "must be superuser to rename superusers" +msgstr "solo i superutenti possono rinominare superutenti" + +#: commands/user.c:1105 +msgid "permission denied to rename role" +msgstr "permesso di rinominare il ruolo negato" + +#: commands/user.c:1126 +msgid "MD5 password cleared because of role rename" +msgstr "L'MD5 della password è stato cancellato perché il ruolo è stato rinominato" + +#: commands/user.c:1182 +msgid "column names cannot be included in GRANT/REVOKE ROLE" +msgstr "la colonna dei nomi non può essere inclusa in GRANT/REVOKE ROLE" + +#: commands/user.c:1220 +msgid "permission denied to drop objects" +msgstr "permesso di eliminare gli oggetti negato" + +#: commands/user.c:1247 commands/user.c:1256 +msgid "permission denied to reassign objects" +msgstr "permesso di riassegnare gli oggetti negato" + +#: commands/user.c:1329 commands/user.c:1466 +#, c-format +msgid "must have admin option on role \"%s\"" +msgstr "occorre avere l'opzione admin sul ruolo \"%s\"" + +#: commands/user.c:1337 +msgid "must be superuser to set grantor" +msgstr "solo i superutenti possono impostare chi ha concesso il privilegio" + +#: commands/user.c:1362 +#, c-format +msgid "role \"%s\" is a member of role \"%s\"" +msgstr "il ruolo \"%s\" è membro del ruolo \"%s\"" + +#: commands/user.c:1377 +#, c-format +msgid "role \"%s\" is already a member of role \"%s\"" +msgstr "il ruolo \"%s\" è già membro del ruolo \"%s\"" + +#: commands/user.c:1488 +#, c-format +msgid "role \"%s\" is not a member of role \"%s\"" +msgstr "il ruolo \"%s\" non è membro del ruolo \"%s\"" + +#: commands/foreigncmds.c:135 commands/foreigncmds.c:144 +#, c-format +msgid "option \"%s\" not found" +msgstr "opzione \"%s\" non trovata" + +#: commands/foreigncmds.c:154 +#, c-format +msgid "option \"%s\" provided more than once" +msgstr "opzione \"%s\" fornita più di una volta" + +#: commands/foreigncmds.c:221 commands/foreigncmds.c:229 +#, c-format +msgid "permission denied to change owner of foreign-data wrapper \"%s\"" +msgstr "permesso di cambiare proprietario del wrapper di dati esterni \"%s\" negato" + +#: commands/foreigncmds.c:223 +msgid "Must be superuser to change owner of a foreign-data wrapper." +msgstr "Solo un superutente può cambiare proprietario di un wrapper di dati esterni." + +#: commands/foreigncmds.c:231 +msgid "The owner of a foreign-data wrapper must be a superuser." +msgstr "Il proprietario di un wrapper di dati esterni dev'essere un superutente." + +#: commands/foreigncmds.c:265 commands/foreigncmds.c:636 +#: commands/foreigncmds.c:784 foreign/foreign.c:524 +#, c-format +msgid "foreign-data wrapper \"%s\" does not exist" +msgstr "il wrapper di dati esterni \"%s\" non esiste" + +#: commands/foreigncmds.c:292 catalog/aclchk.c:3873 catalog/aclchk.c:4555 +#, c-format +msgid "foreign-data wrapper with OID %u does not exist" +msgstr "il wrapper di dati esterni con OID %u non esiste" + +#: commands/foreigncmds.c:366 commands/foreigncmds.c:962 +#: commands/foreigncmds.c:1050 commands/foreigncmds.c:1334 +#: foreign/foreign.c:544 +#, c-format +msgid "server \"%s\" does not exist" +msgstr "il server \"%s\" non esiste" + +#: commands/foreigncmds.c:391 catalog/aclchk.c:3934 catalog/aclchk.c:4582 +#, c-format +msgid "foreign server with OID %u does not exist" +msgstr "il server esterno con OID %u non esiste" + +#: commands/foreigncmds.c:418 +#, c-format +msgid "function %s must return type \"fdw_handler\"" +msgstr "la funzione %s deve restituire un tipo \"fdw_handler\"" + +#: commands/foreigncmds.c:513 +#, c-format +msgid "permission denied to create foreign-data wrapper \"%s\"" +msgstr "permesso di creare il wrapper di dati esterni \"%s\" negato" + +#: commands/foreigncmds.c:515 +msgid "Must be superuser to create a foreign-data wrapper." +msgstr "Solo un superutente può creare un wrapper di dati esterni." + +#: commands/foreigncmds.c:526 +#, c-format +msgid "foreign-data wrapper \"%s\" already exists" +msgstr "il wrapper di dati esterni \"%s\" esiste già" + +#: commands/foreigncmds.c:626 +#, c-format +msgid "permission denied to alter foreign-data wrapper \"%s\"" +msgstr "permesso di modificare il wrapper di dati esterni \"%s\" negato" + +#: commands/foreigncmds.c:628 +msgid "Must be superuser to alter a foreign-data wrapper." +msgstr "Solo un superutente può modificare un wrapper di dati esterni." + +#: commands/foreigncmds.c:659 +msgid "changing the foreign-data wrapper handler can change behavior of existing foreign tables" +msgstr "cambiare il gestore del wrapper di dati esterni può cambiare il comportamento di tabelle esterne esistenti" + +#: commands/foreigncmds.c:673 +msgid "changing the foreign-data wrapper validator can cause the options for dependent objects to become invalid" +msgstr "cambiare il validatore del wrapper di dati esterni può rendere non valide le opzioni degli oggetti dipendenti" + +#: commands/foreigncmds.c:775 +#, c-format +msgid "permission denied to drop foreign-data wrapper \"%s\"" +msgstr "permesso di eliminare il wrapper di dati esterni \"%s\" negato" + +#: commands/foreigncmds.c:777 +msgid "Must be superuser to drop a foreign-data wrapper." +msgstr "Solo un superutente può eliminare un wrapper di dati esterni." + +#: commands/foreigncmds.c:789 +#, c-format +msgid "foreign-data wrapper \"%s\" does not exist, skipping" +msgstr "il wrapper di dati remoti \"%s\" non esiste, saltato" + +#: commands/foreigncmds.c:858 +#, c-format +msgid "server \"%s\" already exists" +msgstr "il server \"%s\" esiste già" + +#: commands/foreigncmds.c:1054 +#, c-format +msgid "server \"%s\" does not exist, skipping" +msgstr "il server \"%s\" non esiste, saltato" + +#: commands/foreigncmds.c:1159 +#, c-format +msgid "user mapping \"%s\" already exists for server %s" +msgstr "la mappatura utenti \"%s\" esiste già per il server %s" + +#: commands/foreigncmds.c:1245 commands/foreigncmds.c:1350 +#, c-format +msgid "user mapping \"%s\" does not exist for the server" +msgstr "la mappatura utenti \"%s\" non esiste per il server" + +#: commands/foreigncmds.c:1337 +msgid "server does not exist, skipping" +msgstr "il server non esiste, saltato" + +#: commands/foreigncmds.c:1355 +#, c-format +msgid "user mapping \"%s\" does not exist for the server, skipping" +msgstr "la mappatura utenti \"%s\" non esiste per il server, saltata" + +#: commands/vacuum.c:419 +msgid "oldest xmin is far in the past" +msgstr "il più vecchio xmin è molto lontano nel tempo" + +#: commands/vacuum.c:420 +msgid "Close open transactions soon to avoid wraparound problems." +msgstr "Chiudi presto le transazioni per evitare problemi di wraparound." + +#: commands/vacuum.c:811 +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:812 +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:919 +#, c-format +msgid "skipping vacuum of \"%s\" --- lock not available" +msgstr "pulizia di \"%s\" saltata --- lock non disponibile" + +#: commands/vacuum.c:945 +#, c-format +msgid "skipping \"%s\" --- only superuser can vacuum it" +msgstr "\"%s\" saltato --- solo i superutenti possono pulirla" + +#: commands/vacuum.c:949 +#, 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:953 +#, 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:970 +#, 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/async.c:567 +msgid "channel name cannot be empty" +msgstr "Il nome del canale non può essere vuoto" + +#: commands/async.c:572 +msgid "channel name too long" +msgstr "il nome del canale è troppo lungo" + +#: commands/async.c:579 +msgid "payload string too long" +msgstr "la stringa del carico è troppo lunga" + +#: commands/async.c:764 +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:867 +msgid "too many notifications in the NOTIFY queue" +msgstr "troppe notifiche nella coda di NOTIFY" + +#: commands/async.c:1440 +#, c-format +msgid "NOTIFY queue is %.0f%% full" +msgstr "la coda di NOTIFY è piena al %.0f%%" + +#: commands/async.c:1442 +#, 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:1445 +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/trigger.c:159 +#, c-format +msgid "\"%s\" is a table" +msgstr "\"%s\" non è una tabella" + +#: commands/trigger.c:161 +msgid "Tables cannot have INSTEAD OF triggers." +msgstr "Le tabelle non possono avere trigger INSTEAD OF." + +#: commands/trigger.c:172 commands/trigger.c:179 +#, c-format +msgid "\"%s\" is a view" +msgstr "\"%s\" è una vista" + +#: commands/trigger.c:174 +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:181 +msgid "Views cannot have TRUNCATE triggers." +msgstr "Le viste non possono avere trigger TRUNCATE." + +#: commands/trigger.c:228 +msgid "TRUNCATE FOR EACH ROW triggers are not supported" +msgstr "i trigger TRUNCATE FOR EACH ROW non sono supportati" + +#: commands/trigger.c:236 +msgid "INSTEAD OF triggers must be FOR EACH ROW" +msgstr "i trigger INSTEAD OF devono essere FOR EACH ROW" + +#: commands/trigger.c:240 +msgid "INSTEAD OF triggers cannot have WHEN conditions" +msgstr "i trigger INSTEAD OF non possono avere condizioni WHEN" + +#: commands/trigger.c:244 +msgid "INSTEAD OF triggers cannot have column lists" +msgstr "i trigger INSTEAD OF non possono avere liste di colonne" + +#: commands/trigger.c:288 +msgid "cannot use subquery in trigger WHEN condition" +msgstr "non è possibile usare sottoquery nella condizione WHEN del trigger" + +#: commands/trigger.c:292 +msgid "cannot use aggregate function in trigger WHEN condition" +msgstr "non è possibile usare funzioni di aggregazione nella condizione WHEN del trigger" + +#: commands/trigger.c:296 +msgid "cannot use window function in trigger WHEN condition" +msgstr "non è possibile usare funzioni finestra nella condizione WHEN del trigger" + +#: commands/trigger.c:318 commands/trigger.c:331 +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:323 +msgid "INSERT trigger's WHEN condition cannot reference OLD values" +msgstr "la condizione WHEN dei trigger INSERT non può usare OLD" + +#: commands/trigger.c:336 +msgid "DELETE trigger's WHEN condition cannot reference NEW values" +msgstr "la condizione WHEN del trigger DELETE non può usare NEW" + +#: commands/trigger.c:341 +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:386 +#, 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:393 +#, 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:1241 +#, c-format +msgid "trigger \"%s\" for relation \"%s\" already exists" +msgstr "il trigger \"%s\" per la relazione \"%s\" esiste già" + +#: commands/trigger.c:788 +msgid "Found referenced table's UPDATE trigger." +msgstr "Trovato trigger UPDATE della tabella referenziata." + +#: commands/trigger.c:789 +msgid "Found referenced table's DELETE trigger." +msgstr "Trovato trigger DELETE della tabella referenziata." + +#: commands/trigger.c:790 +msgid "Found referencing table's trigger." +msgstr "Trovato trigger della tabella referenziante." + +#: commands/trigger.c:899 commands/trigger.c:915 +#, 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 +#, c-format +msgid "converting trigger group into constraint \"%s\" %s" +msgstr "conversione del gruppo di trigger nel vincolo \"%s\" %s" + +#: commands/trigger.c:1043 +#, c-format +msgid "trigger \"%s\" for table \"%s\" does not exist, skipping" +msgstr "il trigger \"%s\" per la tabella \"%s\" non esiste, saltato" + +#: commands/trigger.c:1170 commands/trigger.c:1283 commands/trigger.c:1394 +#, c-format +msgid "trigger \"%s\" for table \"%s\" does not exist" +msgstr "il trigger \"%s\" per la tabella \"%s\" non esiste" + +#: commands/trigger.c:1362 +#, c-format +msgid "permission denied: \"%s\" is a system trigger" +msgstr "permesso negato: \"%s\" è un trigger di sistema" + +#: commands/trigger.c:1844 +#, c-format +msgid "trigger function %u returned null value" +msgstr "la funzione trigger %u ha restituito un valore null" + +#: commands/trigger.c:1903 commands/trigger.c:2102 commands/trigger.c:2286 +#: commands/trigger.c:2528 +msgid "BEFORE STATEMENT trigger cannot return a value" +msgstr "il trigger BEFORE STATEMENT non può restituire un valore" + +#: commands/trigger.c:2590 executor/nodeLockRows.c:137 +#: executor/nodeModifyTable.c:366 executor/nodeModifyTable.c:588 +#: executor/execMain.c:1867 +msgid "could not serialize access due to concurrent update" +msgstr "serializzazione dell'accesso fallita a causa di modifiche concorrenti" + +#: commands/trigger.c:4166 catalog/namespace.c:234 catalog/namespace.c:318 +#, c-format +msgid "cross-database references are not implemented: \"%s.%s.%s\"" +msgstr "i riferimenti tra database diversi non sono implementati: \"%s.%s.%s\"" + +#: commands/trigger.c:4217 +#, c-format +msgid "constraint \"%s\" is not deferrable" +msgstr "il vincolo \"%s\" non è deferibile" + +#: commands/trigger.c:4240 +#, c-format +msgid "constraint \"%s\" does not exist" +msgstr "il vincolo \"%s\" non esiste" + +#: commands/operatorcmds.c:100 +msgid "=> is deprecated as an operator name" +msgstr "=> è deprecato come nome di operatore" + +#: commands/operatorcmds.c:101 +msgid "This name may be disallowed altogether in future versions of PostgreSQL." +msgstr "Questo nome potrebbe essere vietato del tutto in una prossima versione di PostgreSQL" + +#: commands/operatorcmds.c:122 commands/operatorcmds.c:130 +msgid "SETOF type not allowed for operator argument" +msgstr "il tipo SETOF non è permesso come argomento dell'operatore." + +#: commands/operatorcmds.c:158 +#, c-format +msgid "operator attribute \"%s\" not recognized" +msgstr "attributo dell'operatore \"%s\" non riconosciuto" + +#: commands/operatorcmds.c:168 +msgid "operator procedure must be specified" +msgstr "la procedura dell'operatore deve essere specificata" + +#: commands/operatorcmds.c:179 +msgid "at least one of leftarg or rightarg must be specified" +msgstr "almeno uno tra leftarg e rightarg deve essere specificato" + +#: commands/operatorcmds.c:228 +#, c-format +msgid "restriction estimator function %s must return type \"float8\"" +msgstr "la funzione di stima di restrizione %s deve restituire il tipo \"float8\"" + +#: commands/operatorcmds.c:267 +#, c-format +msgid "join estimator function %s must return type \"float8\"" +msgstr "la funzione di stima del join %s deve restituire il tipo \"float8\"" + +#: commands/operatorcmds.c:318 +#, c-format +msgid "operator %s does not exist, skipping" +msgstr "l'operatore %s non esiste, saltato" + +#: commands/typecmds.c:169 +msgid "must be superuser to create a base type" +msgstr "solo un superutente può creare un tipo di base" + +#: commands/typecmds.c:224 commands/typecmds.c:806 commands/typecmds.c:1145 +#: commands/typecmds.c:1622 catalog/pg_type.c:396 catalog/pg_type.c:699 +#: catalog/heap.c:1029 +#, c-format +msgid "type \"%s\" already exists" +msgstr "il tipo \"%s\" esiste già" + +#: commands/typecmds.c:275 +#, c-format +msgid "type attribute \"%s\" not recognized" +msgstr "attributo del tipo \"%s\" non riconosciuto" + +#: commands/typecmds.c:329 +#, c-format +msgid "invalid type category \"%s\": must be simple ASCII" +msgstr "categoria non valida \"%s\": dev'essere semplice ASCII" + +#: commands/typecmds.c:348 +#, c-format +msgid "array element type cannot be %s" +msgstr "il tipo di elemento dell'array non può essere %s" + +#: commands/typecmds.c:380 +#, c-format +msgid "alignment \"%s\" not recognized" +msgstr "allineamento \"%s\" non riconosciuto" + +#: commands/typecmds.c:397 +#, c-format +msgid "storage \"%s\" not recognized" +msgstr "immagazzinamento \"%s\" non riconosciuto" + +#: commands/typecmds.c:408 +msgid "type input function must be specified" +msgstr "la funzione di input del tipo deve essere specificata" + +#: commands/typecmds.c:412 +msgid "type output function must be specified" +msgstr "la funzione di output del tipo deve essere specificata" + +#: commands/typecmds.c:417 +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:440 +#, 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:447 +#, 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:457 +#, 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:464 +#, 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:473 +#, 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:482 +#, 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:687 +#, c-format +msgid "\"%s\" is not a domain" +msgstr "\"%s\" non è un dominio" + +#: commands/typecmds.c:827 +#, 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:909 +msgid "multiple default expressions" +msgstr "più di una espressione di default" + +#: commands/typecmds.c:973 commands/typecmds.c:982 +msgid "conflicting NULL/NOT NULL constraints" +msgstr "vincoli NULL/NOT NULL in conflitto" + +#: commands/typecmds.c:1001 commands/typecmds.c:1984 +msgid "unique constraints not possible for domains" +msgstr "i vincoli univoci non sono ammessi per i domini" + +#: commands/typecmds.c:1007 commands/typecmds.c:1990 +msgid "primary key constraints not possible for domains" +msgstr "i vincoli di chiave primaria non sono ammessi per i domini" + +#: commands/typecmds.c:1013 commands/typecmds.c:1996 +msgid "exclusion constraints not possible for domains" +msgstr "i vincoli di esclusione non sono ammessi per i domini" + +#: commands/typecmds.c:1019 commands/typecmds.c:2002 +msgid "foreign key constraints not possible for domains" +msgstr "i vincoli di chiave esterna non sono ammessi per i domini" + +#: commands/typecmds.c:1028 commands/typecmds.c:2011 +msgid "specifying constraint deferrability not supported for domains" +msgstr "specificare la deferibilità dei vincoli non è ammesso per i domini" + +#: commands/typecmds.c:1332 +#, 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: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 catalog/pg_aggregate.c:331 parser/parse_func.c:288 +#: parser/parse_func.c:299 parser/parse_func.c:1481 +#, c-format +msgid "function %s does not exist" +msgstr "la funzione %s non esiste" + +#: commands/typecmds.c:1383 +#, 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:1482 +#, 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:1509 +#, 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:1536 +#, 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:1836 +#, c-format +msgid "column \"%s\" of table \"%s\" contains null values" +msgstr "la colonna \"%s\" della tabella \"%s\" contiene valori null" + +#: commands/typecmds.c:2082 +#, 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:2287 +#, c-format +msgid "%s is not a domain" +msgstr "%s non è un dominio" + +#: commands/typecmds.c:2321 catalog/pg_constraint.c:654 +#, c-format +msgid "constraint \"%s\" for domain \"%s\" already exists" +msgstr "il vincolo \"%s\" del dominio \"%s\" esiste già" + +#: commands/typecmds.c:2369 commands/typecmds.c:2378 +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:2386 catalog/heap.c:2501 +msgid "cannot use subquery in check constraint" +msgstr "non si può usare una sottoquery nel vincolo di controllo" + +#: commands/typecmds.c:2390 catalog/heap.c:2505 +msgid "cannot use aggregate function in check constraint" +msgstr "non si possono usare funzioni di aggregazione nel vincolo di controllo" + +#: commands/typecmds.c:2394 catalog/heap.c:2509 +msgid "cannot use window function in check constraint" +msgstr "non si possono usare funzioni finestra nel vincolo di controllo" + +#: commands/typecmds.c:2608 commands/typecmds.c:2680 commands/typecmds.c:2919 +#, c-format +msgid "%s is a table's row type" +msgstr "%s è il tipo della riga di una tabella" + +#: commands/typecmds.c:2610 commands/typecmds.c:2682 commands/typecmds.c:2921 +msgid "Use ALTER TABLE instead." +msgstr "Usa ALTER TABLE invece." + +#: commands/typecmds.c:2617 commands/typecmds.c:2689 commands/typecmds.c:2838 +#, c-format +msgid "cannot alter array type %s" +msgstr "non è possibile modificare il tipo di array %s" + +#: commands/typecmds.c:2619 commands/typecmds.c:2691 commands/typecmds.c:2840 +#, 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:2905 +#, c-format +msgid "type \"%s\" already exists in schema \"%s\"" +msgstr "il tipo \"%s\" esiste già nello schema \"%s\"" + +#: commands/tsearchcmds.c:117 commands/tsearchcmds.c:1044 +#, c-format +msgid "function %s should return type %s" +msgstr "la funzione %s dovrebbe restituire il tipo %s" + +#: commands/tsearchcmds.c:189 +msgid "must be superuser to create text search parsers" +msgstr "solo un superutente può creare analizzatori di ricerca di testo" + +#: commands/tsearchcmds.c:237 +#, c-format +msgid "text search parser parameter \"%s\" not recognized" +msgstr "parametro dell'analizzatore di ricerca di testo \"%s\" non riconosciuto" + +#: commands/tsearchcmds.c:247 +msgid "text search parser start method is required" +msgstr "il metodo start dell'analizzatore di ricerca di testo è richiesto" + +#: commands/tsearchcmds.c:252 +msgid "text search parser gettoken method is required" +msgstr "il metodo gettoken dell'analizzatore di ricerca di testo è richiesto" + +#: commands/tsearchcmds.c:257 +msgid "text search parser end method is required" +msgstr "il metodo end dell'analizzatore di ricerca di testo è richiesto" + +#: commands/tsearchcmds.c:262 +msgid "text search parser lextypes method is required" +msgstr "il metodo lextype dell'analizzatore di ricerca di testo è richiesto" + +#: commands/tsearchcmds.c:297 +msgid "must be superuser to drop text search parsers" +msgstr "solo un superutente può eliminare analizzatori di ricerca di testo" + +#: commands/tsearchcmds.c:320 catalog/namespace.c:1906 +#, c-format +msgid "text search parser \"%s\" does not exist" +msgstr "l'analizzatore di ricerca di testo \"%s\" non esiste" + +#: commands/tsearchcmds.c:326 +#, c-format +msgid "text search parser \"%s\" does not exist, skipping" +msgstr "l'analizzatore di ricerca di testo \"%s\" non esiste, saltato" + +#: commands/tsearchcmds.c:381 +msgid "must be superuser to rename text search parsers" +msgstr "solo un superutente può rinominare analizzatori di ricerca di testo" + +#: commands/tsearchcmds.c:399 +#, c-format +msgid "text search parser \"%s\" already exists" +msgstr "l'analizzatore di ricerca di testo \"%s\" esiste già" + +#: commands/tsearchcmds.c:525 +#, c-format +msgid "text search template \"%s\" does not accept options" +msgstr "il modello di ricerca di testo \"%s\" non accetta opzioni" + +#: commands/tsearchcmds.c:598 +msgid "text search template is required" +msgstr "il modello di ricerca di testo è richiesto" + +#: commands/tsearchcmds.c:667 +#, c-format +msgid "text search dictionary \"%s\" already exists" +msgstr "il dizionario di ricerca di testo \"%s\" esiste già" + +#: commands/tsearchcmds.c:769 catalog/namespace.c:2029 +#, c-format +msgid "text search dictionary \"%s\" does not exist" +msgstr "il dizionario di ricerca di testo \"%s\" non esiste" + +#: commands/tsearchcmds.c:775 +#, c-format +msgid "text search dictionary \"%s\" does not exist, skipping" +msgstr "il dizionario di ricerca di testo \"%s\" non esiste, saltato" + +#: commands/tsearchcmds.c:1108 +msgid "must be superuser to create text search templates" +msgstr "solo un superutente può creare modelli di ricerca di testo" + +#: commands/tsearchcmds.c:1145 +#, c-format +msgid "text search template parameter \"%s\" not recognized" +msgstr "parametro del modello di ricerca di testo \"%s\" non riconosciuto" + +#: commands/tsearchcmds.c:1155 +msgid "text search template lexize method is required" +msgstr "il metodo lexize del modello di ricerca di testo è richiesto" + +#: commands/tsearchcmds.c:1193 +msgid "must be superuser to rename text search templates" +msgstr "solo un superutente può rinominare modelli di ricerca di testo" + +#: commands/tsearchcmds.c:1212 +#, c-format +msgid "text search template \"%s\" already exists" +msgstr "il modello di ricerca di testo \"%s\" esiste già" + +#: commands/tsearchcmds.c:1281 +msgid "must be superuser to drop text search templates" +msgstr "solo un superutente può eliminare modelli di ricerca di testo" + +#: commands/tsearchcmds.c:1304 catalog/namespace.c:2153 +#, c-format +msgid "text search template \"%s\" does not exist" +msgstr "il modello di ricerca di testo \"%s\" non esiste" + +#: commands/tsearchcmds.c:1310 +#, c-format +msgid "text search template \"%s\" does not exist, skipping" +msgstr "il modello di ricerca di testo \"%s\" non esiste, saltato" + +#: commands/tsearchcmds.c:1508 +#, c-format +msgid "text search configuration parameter \"%s\" not recognized" +msgstr "parametro della configurazione di ricerca di testo \"%s\" non riconosciuto" + +#: commands/tsearchcmds.c:1515 +msgid "cannot specify both PARSER and COPY options" +msgstr "non è possibile specificare sia l'opzione PARSER che COPY" + +#: commands/tsearchcmds.c:1543 +msgid "text search parser is required" +msgstr "l'analizzatore per la ricerca di testo è richiesto" + +#: commands/tsearchcmds.c:1652 +#, c-format +msgid "text search configuration \"%s\" already exists" +msgstr "la configurazione di ricerca di testo \"%s\" esiste già" + +#: commands/tsearchcmds.c:1759 +#, c-format +msgid "text search configuration \"%s\" does not exist, skipping" +msgstr "la combinazione di ricerca di testo \"%s\" non esiste, saltato" + +#: commands/tsearchcmds.c:1981 +#, c-format +msgid "token type \"%s\" does not exist" +msgstr "il tipo di token \"%s\" non esiste" + +#: commands/tsearchcmds.c:2203 +#, c-format +msgid "mapping for token type \"%s\" does not exist" +msgstr "la mappatura per il token \"%s\" non esiste" + +#: commands/tsearchcmds.c:2209 +#, c-format +msgid "mapping for token type \"%s\" does not exist, skipping" +msgstr "la mappatura per il token \"%s\" non esiste, saltato" + +#: commands/tsearchcmds.c:2362 commands/tsearchcmds.c:2473 +#, c-format +msgid "invalid parameter list format: \"%s\"" +msgstr "formato di lista di parametri non valido: \"%s\"" + +#: commands/alter.c:415 +#, c-format +msgid "must be superuser to set schema of %s" +msgstr "occorre essere un superutente per impostare lo schema di %s" + +#: commands/alter.c:443 +#, c-format +msgid "%s already exists in schema \"%s\"" +msgstr "%s esiste già nello schema \"%s\"" + +#: foreign/foreign.c:198 +#, c-format +msgid "user mapping not found for \"%s\"" +msgstr "mappatura utenti non trovata per \"%s\"" + +#: foreign/foreign.c:321 +#, c-format +msgid "foreign-data wrapper \"%s\" has no handler" +msgstr "il wrapper di dati remoti \"%s\" non ha un handler" + +#: foreign/foreign.c:498 +#, c-format +msgid "invalid option \"%s\"" +msgstr "opzione \"%s\" non valida" + +#: foreign/foreign.c:499 +#, c-format +msgid "Valid options in this context are: %s" +msgstr "Le opzioni valide in questo contesto sono: %s" + +#: regex/regc_pg_locale.c:258 +msgid "could not determine which collation to use for regular expression" +msgstr "non è stato possibile determinare quale ordinamento usare per le espressioni regolari" + +#: nodes/nodeFuncs.c:114 nodes/nodeFuncs.c:140 parser/parse_coerce.c:1671 +#: parser/parse_coerce.c:1688 parser/parse_coerce.c:1750 +#: parser/parse_expr.c:1638 parser/parse_oper.c:948 parser/parse_func.c:367 +#, 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" + +#: executor/nodeSubplan.c:302 executor/nodeSubplan.c:341 +#: executor/nodeSubplan.c:968 +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:1238 +msgid "frame starting offset must not be null" +msgstr "l'offset di inizio della finestra dev'essere non nullo" + +#: executor/nodeWindowAgg.c:1251 +msgid "frame starting offset must not be negative" +msgstr "l'offset di inizio della finestra non può essere negativo" + +#: executor/nodeWindowAgg.c:1264 +msgid "frame ending offset must not be null" +msgstr "l'offset di fine della finestra dev'essere non nullo" + +#: executor/nodeWindowAgg.c:1277 +msgid "frame ending offset must not be negative" +msgstr "l'offset di fine della finestra non può essere negativo" + +#: executor/nodeWindowAgg.c:1851 executor/nodeAgg.c:1730 +#, c-format +msgid "aggregate %u needs to have compatible input type and transition type" +msgstr "l'aggregato %u deve avere tipi di input e transizione compatibili" + +#: executor/functions.c:195 +#, c-format +msgid "could not determine actual type of argument declared %s" +msgstr "non è stato possibile determinare il tipo reale dell'argomento dichiarato %s" + +#. translator: %s is a SQL statement name +#: executor/functions.c:295 +#, c-format +msgid "%s is not allowed in a SQL function" +msgstr "%s non è consentito in una funzione SQL" + +#. translator: %s is a SQL statement name +#: executor/functions.c:302 executor/spi.c:1256 executor/spi.c:1891 +#, c-format +msgid "%s is not allowed in a non-volatile function" +msgstr "%s non è consentito in una funzione non volatile" + +#: executor/functions.c:408 +#, c-format +msgid "could not determine actual result type for function declared to return type %s" +msgstr "non è stato possibile determinare il tipo reale restituito dalla funzione dichiarata con tipo restituito %s" + +#: executor/functions.c:1146 +#, c-format +msgid "SQL function \"%s\" statement %d" +msgstr "funzione SQL \"%s\" istruzione %d" + +#: executor/functions.c:1162 catalog/pg_proc.c:907 +#, c-format +msgid "SQL function \"%s\"" +msgstr "funzione SQL \"%s\"" + +#: executor/functions.c:1172 +#, c-format +msgid "SQL function \"%s\" during startup" +msgstr "funzione SQL \"%s\" durante l'avvio" + +#: 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 "il tipo restituito non combacia nella funzione dichiarata con tipo restituito %s" + +#: executor/functions.c:1334 +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:1370 +msgid "Final statement must return exactly one column." +msgstr "L'istruzione finale deve restituire esattamente una colonna." + +#: executor/functions.c:1382 +#, c-format +msgid "Actual return type is %s." +msgstr "Il tipo restituito realmente è %s." + +#: executor/functions.c:1495 +msgid "Final statement returns too many columns." +msgstr "L'istruzione finale restituisce troppe colonne." + +#: executor/functions.c:1528 +#, 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:1558 +msgid "Final statement returns too few columns." +msgstr "L'istruzione finale restituisce troppe poche colonne." + +#: executor/functions.c:1607 +#, 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/nodeModifyTable.c:82 executor/nodeModifyTable.c:92 +#: executor/nodeModifyTable.c:109 executor/nodeModifyTable.c:117 +#: executor/execQual.c:837 executor/execQual.c:854 executor/execQual.c:1014 +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/nodeModifyTable.c:83 +msgid "Query has too many columns." +msgstr "La query ha troppe colonne." + +#: executor/nodeModifyTable.c:93 executor/execQual.c:855 +#, 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/nodeModifyTable.c:110 +#, c-format +msgid "Query provides a value for a dropped column at ordinal position %d." +msgstr "La query produce un valore per una colonna eliminata in posizione %d." + +#: executor/nodeModifyTable.c:118 +msgid "Query has too few columns." +msgstr "La query ha troppe poche colonne." + +#: executor/nodeLimit.c:253 +msgid "OFFSET must not be negative" +msgstr "OFFSET non può essere negativo" + +#: executor/nodeLimit.c:280 +msgid "LIMIT must not be negative" +msgstr "LIMIT non può essere negativo" + +#: executor/execMain.c:999 +#, c-format +msgid "cannot change sequence \"%s\"" +msgstr "non è possibile modificare la sequenza \"%s\"" + +#: executor/execMain.c:1005 +#, c-format +msgid "cannot change TOAST relation \"%s\"" +msgstr "non è possibile modificare la relazione TOAST \"%s\"" + +#: executor/execMain.c:1015 +#, c-format +msgid "cannot insert into view \"%s\"" +msgstr "non è possibile inserire nella vista \"%s\"" + +#: executor/execMain.c:1017 +msgid "You need an unconditional ON INSERT DO INSTEAD rule or an INSTEAD OF INSERT trigger." +msgstr "È necessaria una regola ON INSERT DO INSTEAD senza alcuna condizione oppure un trigger INSTEAD OF INSERT." + +#: executor/execMain.c:1023 +#, c-format +msgid "cannot update view \"%s\"" +msgstr "non è possibile modificare la vista \"%s\"" + +#: executor/execMain.c:1025 +msgid "You need an unconditional ON UPDATE DO INSTEAD rule or an INSTEAD OF UPDATE trigger." +msgstr "È necessaria una regola ON UPDATE DO INSTEAD senza alcuna condizione oppure un trigger INSTEAD OF UPDATE." + +#: executor/execMain.c:1031 +#, c-format +msgid "cannot delete from view \"%s\"" +msgstr "non è possibile cancellare dalla vista \"%s\"" + +#: executor/execMain.c:1033 +msgid "You need an unconditional ON DELETE DO INSTEAD rule or an INSTEAD OF DELETE trigger." +msgstr "È necessaria una regola ON DELETE DO INSTEAD senza alcuna condizione oppure un trigger INSTEAD OF DELETE." + +#: executor/execMain.c:1043 +#, c-format +msgid "cannot change foreign table \"%s\"" +msgstr "non è possibile modificare la tabella esterna \"%s\"" + +#: executor/execMain.c:1049 +#, c-format +msgid "cannot change relation \"%s\"" +msgstr "non è possibile modificare la relazione \"%s\"" + +#: executor/execMain.c:1073 +#, c-format +msgid "cannot lock rows in sequence \"%s\"" +msgstr "non è possibile bloccare righe nella sequenza \"%s\"" + +#: executor/execMain.c:1080 +#, c-format +msgid "cannot lock rows in TOAST relation \"%s\"" +msgstr "non è possibile bloccare righe nella relazione TOAST \"%s\"" + +#: executor/execMain.c:1087 +#, c-format +msgid "cannot lock rows in view \"%s\"" +msgstr "non è possibile bloccare righe vista \"%s\"" + +#: executor/execMain.c:1094 +#, c-format +msgid "cannot lock rows in foreign table \"%s\"" +msgstr "non è possibile bloccare righe nella tabella esterna \"%s\"" + +#: executor/execMain.c:1100 +#, c-format +msgid "cannot lock rows in relation \"%s\"" +msgstr "non è possibile bloccare righe nella relazione \"%s\"" + +#: executor/execMain.c:1571 +#, 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:1583 +#, 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/nodeMergejoin.c:1604 +msgid "RIGHT JOIN is only supported with merge-joinable join conditions" +msgstr "RIGHT JOIN è supportato solo con condizioni di join che supportano merge" + +#: executor/nodeMergejoin.c:1624 +msgid "FULL JOIN is only supported with merge-joinable join conditions" +msgstr "FULL JOIN è supportato solo con condizioni di join che supportano merge" + +#: executor/execUtils.c:1308 +#, c-format +msgid "could not create exclusion constraint \"%s\"" +msgstr "creazione del vincolo di esclusione \"%s\" fallita" + +#: executor/execUtils.c:1310 +#, c-format +msgid "Key %s conflicts with key %s." +msgstr "La chiave %s è in conflitto con la chiave %s." + +#: executor/execUtils.c:1315 +#, c-format +msgid "conflicting key value violates exclusion constraint \"%s\"" +msgstr "le chiavi in conflitto violano il vincolo di esclusione \"%s\"" + +#: executor/execUtils.c:1317 +#, c-format +msgid "Key %s conflicts with existing key %s." +msgstr "La chiave %s è in conflitto con la chiave esistente %s." + +#: executor/spi.c:210 +msgid "transaction left non-empty SPI stack" +msgstr "la transazione ha lasciato lo stack SPI non vuoto" + +#: executor/spi.c:211 executor/spi.c:275 +msgid "Check for missing \"SPI_finish\" calls." +msgstr "Verifica che non ci siano chiamate \"SPI_finish\" mancanti." + +#: executor/spi.c:274 +msgid "subtransaction left non-empty SPI stack" +msgstr "la sottotransazione ha lasciato lo stack SPI non vuoto" + +#: executor/spi.c:1137 +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:1142 +#, c-format +msgid "cannot open %s query as cursor" +msgstr "non è possibile aprire una query %s come cursore" + +#: executor/spi.c:1233 parser/analyze.c:2213 +msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE non è supportato" + +#: executor/spi.c:1234 parser/analyze.c:2214 +msgid "Scrollable cursors must be READ ONLY." +msgstr "Un cursore scorribile dev'essere READ ONLY." + +#: executor/spi.c:2157 +#, c-format +msgid "SQL statement \"%s\"" +msgstr "istruzione SQL \"%s\"" + +#: executor/nodeHashjoin.c:814 executor/nodeHashjoin.c:844 +#, c-format +msgid "could not rewind hash-join temporary file: %m" +msgstr "riavvolgimento del file temporaneo per l'hash-join fallito: %m" + +#: executor/nodeHashjoin.c:879 executor/nodeHashjoin.c:885 +#, c-format +msgid "could not write to hash-join temporary file: %m" +msgstr "scrittura nel file temporaneo per l'hash-join fallita: %m" + +#: executor/nodeHashjoin.c:919 executor/nodeHashjoin.c:929 +#, c-format +msgid "could not read from hash-join temporary file: %m" +msgstr "lettura dal file temporaneo per l'hash-join fallita: %m" + +#: executor/execCurrent.c:75 +#, c-format +msgid "cursor \"%s\" is not a SELECT query" +msgstr "il cursore \"%s\" non è una query SELECT" + +#: executor/execCurrent.c:81 +#, c-format +msgid "cursor \"%s\" is held from a previous transaction" +msgstr "il cursore \"%s\" è trattenuto da una precedente transazione" + +#: executor/execCurrent.c:113 +#, c-format +msgid "cursor \"%s\" has multiple FOR UPDATE/SHARE references to table \"%s\"" +msgstr "il cursore \"%s\" ha più di un riferimento FOR UPDATE/SHARE alla tabella \"%s\"" + +#: executor/execCurrent.c:122 +#, c-format +msgid "cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\"" +msgstr "il cursore \"%s\" non ha alcun riferimento FOR UPDATE/SHARE alla tabella \"%s\"" + +#: executor/execCurrent.c:132 executor/execCurrent.c:178 +#, c-format +msgid "cursor \"%s\" is not positioned on a row" +msgstr "il cursore \"%s\" non è posizionato su una riga" + +#: executor/execCurrent.c:165 +#, c-format +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:230 executor/execQual.c:1126 +#, 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:242 executor/execQual.c:1138 +#, c-format +msgid "no value found for parameter %d" +msgstr "nessun valore trovato per il parametro %d" + +#: executor/execQual.c:316 executor/execQual.c:344 +msgid "array subscript in assignment must not be null" +msgstr "l'indice di un array nell'assegnamento non può essere nullo" + +#: executor/execQual.c:637 executor/execQual.c:4019 +#, c-format +msgid "attribute %d has wrong type" +msgstr "l'attributo %d è di tipo errato" + +#: executor/execQual.c:638 executor/execQual.c:4020 +#, 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:838 +#, 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:1015 executor/execQual.c:1612 +#, 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:1291 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] "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:1480 +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:1530 +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:1585 executor/execQual.c:1601 executor/execQual.c:1611 +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:1586 +#, 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:1602 +#, 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:1836 executor/execQual.c:2260 +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:1856 executor/execQual.c:2267 +#, c-format +msgid "unrecognized table-function returnMode: %d" +msgstr "returnMode tabella-funzione sconosciuto: %d" + +#: executor/execQual.c:2177 +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:2234 +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:2449 +msgid "IS DISTINCT FROM does not support set arguments" +msgstr "IS DISTINCT FROM non supporta argomenti di tipo insieme" + +#: executor/execQual.c:2526 +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:3079 +msgid "cannot merge incompatible arrays" +msgstr "non è possibile unire array non compatibili" + +#: executor/execQual.c:3080 +#, 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:3663 +msgid "NULLIF does not support set arguments" +msgstr "NULLIF non supporta argomenti di tipo insieme" + +#: executor/execQual.c:4415 optimizer/util/clauses.c:573 +#: parser/parse_agg.c:164 +msgid "aggregate function calls cannot be nested" +msgstr "le chiamate a funzioni di aggregazione non possono essere annidate" + +#: executor/execQual.c:4453 optimizer/util/clauses.c:647 +#: parser/parse_agg.c:211 +msgid "window function calls cannot be nested" +msgstr "le chiamate a funzioni finestra non possono essere annidate" + +#: executor/execQual.c:4665 +msgid "target type is not an array" +msgstr "il tipo di destinazione non è un array" + +#: executor/execQual.c:4778 +#, c-format +msgid "ROW() column has type %s instead of type %s" +msgstr "la colonna ROW() è di tipo %s invece di %s" + +#: replication/walreceiver.c:150 +msgid "terminating walreceiver process due to administrator command" +msgstr "interruzione del processo walreceiver su comando dell'amministratore" + +#: replication/walreceiver.c:304 +msgid "cannot continue WAL streaming, recovery has already ended" +msgstr "non è possibile continuare lo streaming dei WAL, il recupero è già terminato" + +#: replication/walsender.c:142 +msgid "recovery is still in progress, can't accept WAL streaming connections" +msgstr "il ripristino è ancora in corso, non è possibile accettare connessioni streaming WAL" + +#: replication/walsender.c:262 replication/walsender.c:490 +#: replication/walsender.c:548 +msgid "unexpected EOF on standby connection" +msgstr "fine del file inaspettato sulla connessione di standby" + +#: replication/walsender.c:268 +#, c-format +msgid "invalid standby handshake message type %d" +msgstr "tipo di messaggio %d di handshake di standby non valido" + +#: replication/walsender.c:380 +msgid "standby connections not allowed because wal_level=minimal" +msgstr "le connessioni di standby non sono consentite perché wal_level=minimal" + +#: replication/walsender.c:462 +#, c-format +msgid "invalid standby query string: %s" +msgstr "stringa di query di standby non valida: %s" + +#: replication/walsender.c:519 +#, c-format +msgid "invalid standby message type \"%c\"" +msgstr "tipo di messaggio \"%c\" di standby non valido" + +#: replication/walsender.c:570 +#, c-format +msgid "unexpected message type \"%c\"" +msgstr "tipo di messaggio \"%c\" inatteso" + +#: replication/walsender.c:764 +#, c-format +msgid "standby \"%s\" has now caught up with primary" +msgstr "lo standby \"%s\" ha ora raggiunto il primario" + +#: replication/walsender.c:844 +msgid "terminating walsender process due to replication timeout" +msgstr "interruzione del processo walsender a causa di timeout di replica" + +#: replication/walsender.c:911 +#, 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)" + +#: replication/walsender.c:995 replication/walsender.c:1057 +#, c-format +msgid "requested WAL segment %s has already been removed" +msgstr "il segmento WAL richiesto %s è stato già rimosso" + +#: replication/walsender.c:1028 +#, c-format +msgid "could not read from log file %u, segment %u, offset %u, length %lu: %m" +msgstr "lettura dal file di log %u fallita, segmento %u, offset %u, lunghezza %lu: %m" + +#: replication/basebackup.c:132 replication/basebackup.c:737 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "lettura del link simbolico \"%s\" fallita: %m" + +#: replication/basebackup.c:139 replication/basebackup.c:741 +#, c-format +msgid "symbolic link \"%s\" target is too long" +msgstr "la destinazione del link simbolico \"%s\" è troppo lunga" + +#: replication/basebackup.c:207 +#, 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:284 replication/basebackup.c:914 +msgid "base backup could not send data, aborting backup" +msgstr "invio dati da parte del backup di base fallito, backup interrotto" + +#: replication/basebackup.c:331 replication/basebackup.c:340 +#: replication/basebackup.c:349 replication/basebackup.c:358 +#: replication/basebackup.c:367 +#, c-format +msgid "duplicate option \"%s\"" +msgstr "opzione duplicata \"%s\"" + +#: replication/basebackup.c:419 +#, c-format +msgid "could not open directory \"pg_tblspc\": %m" +msgstr "non è stato possibile aprire la directory \"pg_tblspc\": %m" + +#: replication/basebackup.c:616 replication/basebackup.c:691 +#, 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:677 +msgid "shutdown requested, aborting active base backup" +msgstr "arresto richiesto, interruzione del backup di base attivo" + +#: replication/basebackup.c:814 +#, c-format +msgid "skipping special file \"%s\"" +msgstr "file speciale \"%s\" saltato" + +#: replication/basebackup.c:904 +#, c-format +msgid "archive member \"%s\" too large for tar format" +msgstr "il membro \"%s\" dell'archivio è troppo grande per il formato tar" + +#: replication/syncrep.c:210 +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:211 replication/syncrep.c:228 +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:227 +msgid "canceling wait for synchronous replication due to user request" +msgstr "annullamento dell'attesa di replica sincrona su richiesta utente" + +#: replication/syncrep.c:358 +#, 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 +#, c-format +msgid "standby \"%s\" is now the synchronous standby with priority %u" +msgstr "lo standby \"%s\" è ora in standby sincrono con priorità %u" + +#: repl_scanner.l:76 +msgid "invalid streaming start location" +msgstr "posizione di avvio dello streaming non valida" + +#: repl_scanner.l:97 scan.l:629 +msgid "unterminated quoted string" +msgstr "stringa tra virgolette non terminata" + +#: repl_scanner.l:107 +#, c-format +msgid "syntax error: unexpected character \"%s\"" +msgstr "errore di sintassi: carattere \"%s\" inaspettato" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:101 +#, c-format +msgid "could not connect to the primary server: %s" +msgstr "connessione al server primario fallita: %s" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:113 +#, 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:124 +msgid "invalid response from primary server" +msgstr "risposta non valida dal server primario" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:125 +#, 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." + +#: replication/libpqwalreceiver/libpqwalreceiver.c:140 +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:141 +#, 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:153 +#, c-format +msgid "timeline %u of the primary does not match recovery target timeline %u" +msgstr "la timeline del primario %u non combacia con la timeline di destinazione di recupero %u" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:165 +#, c-format +msgid "could not start WAL streaming: %s" +msgstr "avvio dello streaming dei WAL fallito: %s" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:171 +msgid "streaming replication successfully connected to primary" +msgstr "streaming di replica connesso con successo al primario" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:193 +msgid "socket not open" +msgstr "socket non aperto" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:233 port/pg_latch.c:265 +#: port/unix_latch.c:265 +#, c-format +msgid "select() failed: %m" +msgstr "select() fallita: %m" + +#: 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 "ricezione dati dallo stream WAL fallita: %s" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:384 +msgid "replication terminated by primary server" +msgstr "replica terminata dal server primario" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:415 +#, c-format +msgid "could not send data to WAL stream: %s" +msgstr "invio dati allo stream WAL fallito: %s" + +#: optimizer/plan/initsplan.c:598 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer join" +msgstr "SELECT FOR UPDATE/SHARE non può essere applicato al lato di un join esterno che può essere null" + +#: optimizer/plan/planner.c:940 parser/analyze.c:1333 parser/analyze.c:1541 +#: parser/analyze.c:2270 +msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT" +msgstr "SELECT FOR UPDATE/SHARE non è consentito con UNION/INTERSECT/EXCEPT" + +#: optimizer/plan/planner.c:2235 +msgid "could not implement GROUP BY" +msgstr "non è stato possibile implementare GROUP BY" + +#: optimizer/plan/planner.c:2236 optimizer/plan/planner.c:2408 +#: optimizer/prep/prepunion.c:801 +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:2407 +msgid "could not implement DISTINCT" +msgstr "non è stato possibile implementare DISTINCT" + +#: optimizer/plan/planner.c:2873 +msgid "could not implement window PARTITION BY" +msgstr "non è stato possibile implementare PARTITION BY della finestra" + +#: optimizer/plan/planner.c:2874 +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:2878 +msgid "could not implement window ORDER BY" +msgstr "non è stato possibile implementare ORDER BY della finestra" + +#: optimizer/plan/planner.c:2879 +msgid "Window ordering columns must be of sortable datatypes." +msgstr "La colonna di ordinamento della finestra dev'essere un tipo di dato ordinabile." + +#: optimizer/prep/prepunion.c:395 +msgid "could not implement recursive UNION" +msgstr "non è stato possibile implementare la UNION ricorsiva" + +#: optimizer/prep/prepunion.c:396 +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:800 +#, c-format +msgid "could not implement %s" +msgstr "non è stato possibile implementare %s" + +#: optimizer/path/joinrels.c:673 +msgid "FULL JOIN is only supported with merge-joinable or hash-joinable join conditions" +msgstr "FULL JOIN è supportato solo con condizioni di join realizzabili con merge o hash" + +#: optimizer/util/plancat.c:97 +msgid "cannot access temporary or unlogged relations during recovery" +msgstr "non è possibile accedere a relazioni temporanee o non loggate durante il ripristino" + +#: optimizer/util/clauses.c:4187 +#, c-format +msgid "SQL function \"%s\" during inlining" +msgstr "funzione SQL \"%s\" durante l'inlining" + +#: libpq/pqcomm.c:306 +#, 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:310 +#, c-format +msgid "could not translate service \"%s\" to address: %s" +msgstr "conversione del servizio \"%s\" in indirizzo fallita: %s" + +#: libpq/pqcomm.c:337 +#, 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:346 +msgid "IPv4" +msgstr "IPv4" + +#: libpq/pqcomm.c:350 +msgid "IPv6" +msgstr "IPv6" + +#: libpq/pqcomm.c:355 +msgid "Unix" +msgstr "Unix" + +#: libpq/pqcomm.c:360 +#, c-format +msgid "unrecognized address family %d" +msgstr "famiglia di indirizzi %d sconosciuto" + +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:371 +#, c-format +msgid "could not create %s socket: %m" +msgstr "non è stato possibile creare il socket %s: %m" + +#: libpq/pqcomm.c:396 +#, c-format +msgid "setsockopt(SO_REUSEADDR) failed: %m" +msgstr "setsockopt(SO_REUSEADDR) fallito: %m" + +#: libpq/pqcomm.c:411 +#, c-format +msgid "setsockopt(IPV6_V6ONLY) failed: %m" +msgstr "setsockopt(IPV6_V6ONLY) fallito: %m" + +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:430 +#, c-format +msgid "could not bind %s socket: %m" +msgstr "bind del socket %s fallito: %m" + +#: libpq/pqcomm.c:433 +#, 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:436 +#, 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:469 +#, c-format +msgid "could not listen on %s socket: %m" +msgstr "ascolto sul socket %s fallito: %m" + +#: libpq/pqcomm.c:499 +#, 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:562 +#, c-format +msgid "group \"%s\" does not exist" +msgstr "il gruppo \"%s\" non esiste" + +#: libpq/pqcomm.c:572 +#, c-format +msgid "could not set group of file \"%s\": %m" +msgstr "impostazione del gruppo del file \"%s\" fallita: %m" + +#: libpq/pqcomm.c:583 +#, c-format +msgid "could not set permissions of file \"%s\": %m" +msgstr "impostazione dei permessi del file \"%s\" fallita: %m" + +#: libpq/pqcomm.c:613 +#, c-format +msgid "could not accept new connection: %m" +msgstr "impossibile accettare la nuova connessione: %m" + +#: libpq/pqcomm.c:781 +#, c-format +msgid "could not set socket to non-blocking mode: %m" +msgstr "impostazione del socket in modalità non bloccante fallita: %m" + +#: libpq/pqcomm.c:787 +#, c-format +msgid "could not set socket to blocking mode: %m" +msgstr "impostazione del socket in modalità bloccante fallita: %m" + +#: libpq/pqcomm.c:839 libpq/pqcomm.c:929 +#, c-format +msgid "could not receive data from client: %m" +msgstr "ricezione dati dal client fallita: %m" + +#: libpq/pqcomm.c:1080 +msgid "unexpected EOF within message length word" +msgstr "fine file inattesa nella word della lunghezza del messaggio" + +#: libpq/pqcomm.c:1091 +msgid "invalid message length" +msgstr "lunghezza del messaggio non valida" + +#: libpq/pqcomm.c:1113 libpq/pqcomm.c:1123 +msgid "incomplete message from client" +msgstr "messaggio incompleto dal client" + +#: libpq/pqcomm.c:1253 +#, c-format +msgid "could not send data to client: %m" +msgstr "invio dati al client fallito: %m" + +#: libpq/be-secure.c:284 libpq/be-secure.c:379 +#, c-format +msgid "SSL error: %s" +msgstr "errore SSL: %s" + +#: libpq/be-secure.c:293 libpq/be-secure.c:388 libpq/be-secure.c:962 +#, 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 +msgid "SSL renegotiation failure" +msgstr "negoziazione SSL fallita" + +#: libpq/be-secure.c:340 +msgid "SSL failed to send renegotiation request" +msgstr "SSL non è riuscito a inviare la richiesta di rinegoziazione" + +#: libpq/be-secure.c:741 +#, c-format +msgid "could not create SSL context: %s" +msgstr "creazione del contesto SSL fallita: %s" + +#: libpq/be-secure.c:757 +#, 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 +#, 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 +#, 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 +msgid "Permissions should be u=rw (0600) or less." +msgstr "Il permesso dovrebbe essere u=rw (0600) o inferiore." + +#: libpq/be-secure.c:787 +#, 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 +#, c-format +msgid "check of private key failed: %s" +msgstr "controllo della chiave privata fallito: %s" + +#: libpq/be-secure.c:820 +#, c-format +msgid "could not access root certificate file \"%s\": %m" +msgstr "non è stato possibile accedere al file del certificato radice \"%s\": %m" + +#: libpq/be-secure.c:831 +#, 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:854 +#, 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:856 +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:863 +#, c-format +msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s" +msgstr "file di lista di revoche di certificati SSL \"%s\" non trovato, saltato: %s" + +#: libpq/be-secure.c:865 +msgid "Certificates will not be checked against revocation list." +msgstr "I certificati non verranno verificati rispetto alla lista di revoche." + +#: libpq/be-secure.c:907 +#, c-format +msgid "could not initialize SSL connection: %s" +msgstr "inizializzazione della connessione SSL fallita: %s" + +#: libpq/be-secure.c:916 +#, c-format +msgid "could not set SSL socket: %s" +msgstr "impostazione del socket SSL fallita: %s" + +#: libpq/be-secure.c:942 +#, c-format +msgid "could not accept SSL connection: %m" +msgstr "accettazione della connessione SSL fallita: %m" + +#: libpq/be-secure.c:946 libpq/be-secure.c:957 +msgid "could not accept SSL connection: EOF detected" +msgstr "accettazione della connessione SSL fallita: fine file individuata" + +#: libpq/be-secure.c:951 +#, c-format +msgid "could not accept SSL connection: %s" +msgstr "accettazione della connessione SSL fallita: %s" + +#: libpq/be-secure.c:1007 +msgid "SSL certificate's common name contains embedded null" +msgstr "Il nome comune del certificato SSL contiene un null" + +#: libpq/be-secure.c:1018 +#, c-format +msgid "SSL connection from \"%s\"" +msgstr "connessione SSL da \"%s\"" + +#: libpq/be-secure.c:1069 +msgid "no SSL error reported" +msgstr "nessun errore SSL riportato" + +#: libpq/be-secure.c:1073 +#, c-format +msgid "SSL error code %lu" +msgstr "codice di errore SSL: %lu" + +#: libpq/pqformat.c:436 +msgid "no data left in message" +msgstr "nessun dato rimasto nel messaggio" + +#: libpq/pqformat.c:636 +msgid "invalid string in message" +msgstr "stringa non valida nel messaggio" + +#: libpq/pqformat.c:652 +msgid "invalid message format" +msgstr "formato del messaggio non valido" + +#: libpq/auth.c:257 +#, 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 +#, c-format +msgid "\"trust\" authentication failed for user \"%s\"" +msgstr "autenticazione \"trust\" fallita per l'utente \"%s\"" + +#: libpq/auth.c:266 +#, c-format +msgid "Ident authentication failed for user \"%s\"" +msgstr "autenticazione Ident fallita per l'utente \"%s\"" + +#: libpq/auth.c:269 +#, c-format +msgid "Peer authentication failed for user \"%s\"" +msgstr "autenticazione Peer fallita per l'utente \"%s\"" + +#: libpq/auth.c:273 +#, c-format +msgid "password authentication failed for user \"%s\"" +msgstr "autenticazione con password fallita per l'utente \"%s\"" + +#: libpq/auth.c:278 +#, c-format +msgid "GSSAPI authentication failed for user \"%s\"" +msgstr "autenticazione GSSAPI fallita per l'utente \"%s\"" + +#: libpq/auth.c:281 +#, c-format +msgid "SSPI authentication failed for user \"%s\"" +msgstr "autenticazione SSPI fallita per l'utente \"%s\"" + +#: libpq/auth.c:284 +#, c-format +msgid "PAM authentication failed for user \"%s\"" +msgstr "autenticazione PAM fallita per l'utente \"%s\"" + +#: libpq/auth.c:287 +#, c-format +msgid "LDAP authentication failed for user \"%s\"" +msgstr "autenticazione LDAP fallita per l'utente \"%s\"" + +#: libpq/auth.c:290 +#, c-format +msgid "certificate authentication failed for user \"%s\"" +msgstr "autenticazione con certificato fallita per l'utente \"%s\"" + +#: libpq/auth.c:293 +#, c-format +msgid "RADIUS authentication failed for user \"%s\"" +msgstr "autenticazione RADIUS fallita per l'utente \"%s\"" + +#: libpq/auth.c:296 +#, 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:325 +msgid "missing or erroneous pg_hba.conf file" +msgstr "file pg_hba.conf mancante o errato" + +#: libpq/auth.c:326 +msgid "See server log for details." +msgstr "Vedi il log del server per i dettagli." + +#: libpq/auth.c:356 +msgid "connection requires a valid client certificate" +msgstr "la connessione richiede un certificato valido per il client" + +#: libpq/auth.c:400 libpq/auth.c:416 libpq/auth.c:464 libpq/auth.c:482 +msgid "SSL on" +msgstr "SSL abilitato" + +#: libpq/auth.c:400 libpq/auth.c:416 libpq/auth.c:464 libpq/auth.c:482 +msgid "SSL off" +msgstr "SSL non abilitato" + +#: libpq/auth.c:398 +#, 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:404 +#, 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:413 +#, 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:420 +#, 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:449 +#, 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:451 +#, 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:453 +#, 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:462 +#, 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:469 +#, 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:479 +#, 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:487 +#, 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:539 libpq/hba.c:1118 +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:663 +#, c-format +msgid "expected password response, got message type %d" +msgstr "era attesa una risposta password, ricevuto messaggio di tipo %d" + +#: libpq/auth.c:691 +msgid "invalid password packet size" +msgstr "dimensione del pacchetto password non valida" + +#: libpq/auth.c:695 +msgid "received password packet" +msgstr "pacchetto password ricevuto" + +#: libpq/auth.c:753 +#, c-format +msgid "Kerberos initialization returned error %d" +msgstr "l'inizializzazione Kerberos è fallita con errore %d" + +#: libpq/auth.c:763 +#, c-format +msgid "Kerberos keytab resolving returned error %d" +msgstr "la risoluzione della keytab di Kerberos è fallita con errore %d" + +#: libpq/auth.c:787 +#, 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:832 +#, c-format +msgid "Kerberos recvauth returned error %d" +msgstr "Kerberos recvauth fallito con errore %d" + +#: libpq/auth.c:855 +#, c-format +msgid "Kerberos unparse_name returned error %d" +msgstr "Kerberos unparse_name fallito con errore %d" + +#: libpq/auth.c:1003 +msgid "GSSAPI is not supported in protocol version 2" +msgstr "GSSAPI non è supportato con la versione 2 del protocollo" + +#: libpq/auth.c:1058 +#, c-format +msgid "expected GSS response, got message type %d" +msgstr "era attesa una risposta GSS, ricevuto messaggio di tipo %d" + +#: libpq/auth.c:1121 +msgid "accepting GSS security context failed" +msgstr "contesto di sicurezza accettazione GSS fallito" + +#: libpq/auth.c:1147 +msgid "retrieving GSS user name failed" +msgstr "la richiesta del GSS user name è fallita" + +#: libpq/auth.c:1264 +msgid "SSPI is not supported in protocol version 2" +msgstr "SSPI non è supportato con la versione 2 del protocollo" + +#: libpq/auth.c:1279 +msgid "could not acquire SSPI credentials" +msgstr "non è stato possibile ottenere le credenziali SSPI" + +#: libpq/auth.c:1296 +#, c-format +msgid "expected SSPI response, got message type %d" +msgstr "era attesa una risposta SSPI, ricevuto messaggio di tipo %d" + +#: libpq/auth.c:1368 +msgid "could not accept SSPI security context" +msgstr "non è stato possibile accettare il contesto di sicurezza SSPI" + +#: libpq/auth.c:1430 +msgid "could not get token from SSPI security context" +msgstr "non è stato possibile ottenere il token dal contesto di sicurezza SSPI" + +#: libpq/auth.c:1674 +#, c-format +msgid "could not create socket for Ident connection: %m" +msgstr "creazione del socket per la connessione Ident fallita: %m" + +#: libpq/auth.c:1689 +#, c-format +msgid "could not bind to local address \"%s\": %m" +msgstr "bind sull'indirizzo locale \"%s\" fallito: %m" + +#: libpq/auth.c:1701 +#, 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:1721 +#, 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:1736 +#, 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:1746 +#, c-format +msgid "invalidly formatted response from Ident server: \"%s\"" +msgstr "risposta dal server Ident formattata in maniera non corretta: \"%s\"" + +#: libpq/auth.c:1785 +msgid "peer authentication is not supported on this platform" +msgstr "il metodo di autenticazione peer non è supportato su questa piattaforma" + +#: libpq/auth.c:1789 +#, c-format +msgid "could not get peer credentials: %m" +msgstr "non è stato possibile recuperare le credenziali del peer: %m" + +#: libpq/auth.c:1798 +#, c-format +msgid "local user with ID %d does not exist" +msgstr "l'utente locale con ID %d non esiste" + +#: libpq/auth.c:1881 libpq/auth.c:2153 libpq/auth.c:2513 +msgid "empty password returned by client" +msgstr "il client ha restituito una password vuota" + +#: libpq/auth.c:1891 +#, c-format +msgid "error from underlying PAM layer: %s" +msgstr "errore dal livello PAM sottostante: %s" + +#: libpq/auth.c:1960 +#, c-format +msgid "could not create PAM authenticator: %s" +msgstr "creazione dell'autenticatore PAM fallita: %s" + +#: libpq/auth.c:1971 +#, c-format +msgid "pam_set_item(PAM_USER) failed: %s" +msgstr "pam_set_item(PAM_USER) fallita: %s" + +#: libpq/auth.c:1982 +#, c-format +msgid "pam_set_item(PAM_CONV) failed: %s" +msgstr "pam_set_item(PAM_CONV) fallita: %s" + +#: libpq/auth.c:1993 +#, c-format +msgid "pam_authenticate failed: %s" +msgstr "pam_authenticate fallita: %s" + +#: libpq/auth.c:2004 +#, c-format +msgid "pam_acct_mgmt failed: %s" +msgstr "pam_acct_mgmt fallita: %s" + +#: libpq/auth.c:2015 +#, c-format +msgid "could not release PAM authenticator: %s" +msgstr "rilascio dell'autenticatore PAM fallito: %s" + +#: libpq/auth.c:2048 libpq/auth.c:2052 +#, c-format +msgid "could not initialize LDAP: error code %d" +msgstr "inizializzazione LDAP fallita: codice errore %d" + +#: libpq/auth.c:2062 +#, c-format +msgid "could not set LDAP protocol version: error code %d" +msgstr "impostazione versione del protocollo LDAP fallita: codice errore %d" + +#: libpq/auth.c:2091 +msgid "could not load wldap32.dll" +msgstr "caricamento wldap32.dll fallito" + +#: libpq/auth.c:2099 +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:2100 +msgid "LDAP over SSL is not supported on this platform." +msgstr "LDAP su SSL non è supportato su questa piattaforma." + +#: libpq/auth.c:2115 +#, c-format +msgid "could not start LDAP TLS session: error code %d" +msgstr "avvio della sessione LDAP TLS fallito: codice errore %d" + +#: libpq/auth.c:2137 +msgid "LDAP server not specified" +msgstr "server LDAP non specificato" + +#: libpq/auth.c:2189 +msgid "invalid character in user name for LDAP authentication" +msgstr "carattere non valido nel nome utente per l'autenticazione LDAP" + +#: libpq/auth.c:2204 +#, c-format +msgid "could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": error code %d" +msgstr "bind iniziale LDAP per ldapbinddn \"%s\" sul server \"%s\" fallito: codice errore %d" + +#: libpq/auth.c:2229 +#, c-format +msgid "could not search LDAP for filter \"%s\" on server \"%s\": error code %d" +msgstr "filtro \"%s\" non trovato in LDAP sul server \"%s\": codice errore %d" + +#: libpq/auth.c:2239 +#, c-format +msgid "LDAP search failed for filter \"%s\" on server \"%s\": no such user" +msgstr "ricerca LDAP fallita per il filtro \"%s\" sul server \"%s\": utente non trovato" + +#: libpq/auth.c:2243 +#, c-format +msgid "LDAP search failed for filter \"%s\" on server \"%s\": user is not unique (%ld matches)" +msgstr "ricerca LDAP fallita per il filtro \"%s\" sul server \"%s\": l'utente non è unico (trovati %ld)" + +#: libpq/auth.c:2260 +#, c-format +msgid "could not get dn for the first entry matching \"%s\" on server \"%s\": %s" +msgstr "dn per il primo risultato di \"%s\" non trovato sul server \"%s\": %s" + +#: libpq/auth.c:2280 +#, 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:2317 +#, c-format +msgid "LDAP login failed for user \"%s\" on server \"%s\": error code %d" +msgstr "login LDAP fallito per l'utente \"%s\" sul server \"%s\": codice errore %d" + +#: libpq/auth.c:2345 +#, 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:2469 +msgid "RADIUS server not specified" +msgstr "server RADIUS non specificato" + +#: libpq/auth.c:2476 +msgid "RADIUS secret not specified" +msgstr "segreto RADIUS non specificato" + +#: libpq/auth.c:2492 libpq/hba.c:1403 +#, 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:2520 +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:2531 +msgid "could not generate random encryption vector" +msgstr "generazione del vettore di criptaggio casuale fallita" + +#: libpq/auth.c:2554 +msgid "could not perform MD5 encryption of password" +msgstr "criptaggio MD5 della password fallito" + +#: libpq/auth.c:2576 +#, c-format +msgid "could not create RADIUS socket: %m" +msgstr "creazione del socket RADIUS fallita: %m" + +#: libpq/auth.c:2597 +#, c-format +msgid "could not bind local RADIUS socket: %m" +msgstr "bind del socket RADIUS fallito: %m" + +#: libpq/auth.c:2607 +#, c-format +msgid "could not send RADIUS packet: %m" +msgstr "invio del pacchetto RADIUS fallito: %m" + +#: libpq/auth.c:2636 libpq/auth.c:2661 +msgid "timeout waiting for RADIUS response" +msgstr "tempo scaduto in attesa della risposta RADIUS" + +#: libpq/auth.c:2654 +#, c-format +msgid "could not check status on RADIUS socket: %m" +msgstr "controllo dello stato sul socket RADIUS fallito: %m" + +#: libpq/auth.c:2683 +#, c-format +msgid "could not read RADIUS response: %m" +msgstr "lettura della risposta RADIUS fallita: %m" + +#: libpq/auth.c:2695 libpq/auth.c:2699 +#, c-format +msgid "RADIUS response was sent from incorrect port: %i" +msgstr "la risposta RADIUS è stata inviata da una porta sbagliata: %i" + +#: libpq/auth.c:2708 +#, c-format +msgid "RADIUS response too short: %i" +msgstr "risposta RADIUS troppo breve: %i" + +#: libpq/auth.c:2715 +#, c-format +msgid "RADIUS response has corrupt length: %i (actual length %i)" +msgstr "la risposta RADIUS ha una lunghezza corrotta: %i (lunghezza reale %i)" + +#: libpq/auth.c:2723 +#, c-format +msgid "RADIUS response is to a different request: %i (should be %i)" +msgstr "la risposta RADIUS è a una richiesta differente: %i (dovrebbe essere %i)" + +#: libpq/auth.c:2748 +msgid "could not perform MD5 encryption of received packet" +msgstr "criptaggio MD5 dei pacchetti ricevuti fallito" + +#: libpq/auth.c:2757 +msgid "RADIUS response has incorrect MD5 signature" +msgstr "la firma MD5 della risposta RADIUS non è corretta" + +#: libpq/auth.c:2774 +#, c-format +msgid "RADIUS response has invalid code (%i) for user \"%s\"" +msgstr "il codice della risposta RADIUS (%i) per l'utente \"%s\" non è corretto" + +#: libpq/hba.c:160 +#, c-format +msgid "authentication file token too long, skipping: \"%s\"" +msgstr "token del file di autenticazione troppo lungo, saltato: \"%s\"" + +#: libpq/hba.c:355 +#, c-format +msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" +msgstr "apertura del file secondario di autenticazione \"@%s\" come \"%s\" fallita: %m" + +#: libpq/hba.c:628 +#, 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:779 +#, 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:795 +#, 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:832 +msgid "local connections are not supported by this build" +msgstr "le connessioni locali non sono supportate in questo binario" + +#: libpq/hba.c:853 +msgid "hostssl requires SSL to be turned on" +msgstr "hostssl richiede che SSL sia abilitato" + +#: libpq/hba.c:854 +msgid "Set ssl = on in postgresql.conf." +msgstr "Imposta ssl = on in postgresql.conf." + +#: libpq/hba.c:862 +msgid "hostssl is not supported by this build" +msgstr "hostssl non è supportato in questo binario" + +#: libpq/hba.c:863 +msgid "Compile with --with-openssl to use SSL connections." +msgstr "Compila con --with-openssl per usare connessioni SSL." + +#: libpq/hba.c:885 +#, c-format +msgid "invalid connection type \"%s\"" +msgstr "tipo di connessione \"%s\" non valido" + +#: libpq/hba.c:898 +msgid "end-of-line before database specification" +msgstr "fine riga prima della specificazione del database" + +#: libpq/hba.c:911 +msgid "end-of-line before role specification" +msgstr "fine riga prima della specificazione del ruolo" + +#: libpq/hba.c:926 +msgid "end-of-line before IP address specification" +msgstr "fine riga prima della specificazione dell'indirizzo IP" + +#: libpq/hba.c:980 +#, c-format +msgid "invalid IP address \"%s\": %s" +msgstr "indirizzo IP non valido \"%s\": %s" + +#: libpq/hba.c:1000 +#, 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:1014 +#, c-format +msgid "invalid CIDR mask in address \"%s\"" +msgstr "maschera CIDR non valida nell'indirizzo \"%s\"" + +#: libpq/hba.c:1032 +msgid "end-of-line before netmask specification" +msgstr "fine riga prima della specificazione della maschera di rete" + +#: libpq/hba.c:1044 +#, c-format +msgid "invalid IP mask \"%s\": %s" +msgstr "maschera IP non valida \"%s\": %s" + +#: libpq/hba.c:1061 +msgid "IP address and mask do not match" +msgstr "l'indirizzo IP e la maschera non combaciano" + +#: libpq/hba.c:1076 +msgid "end-of-line before authentication method" +msgstr "fine riga prima del metodo di autenticazione" + +#: libpq/hba.c:1149 +#, c-format +msgid "invalid authentication method \"%s\"" +msgstr "metodo di autenticazione \"%s\" non valido" + +#: libpq/hba.c:1160 +#, 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:1181 +msgid "krb5 authentication is not supported on local sockets" +msgstr "l'autenticazione krb5 non è supportata su socket locali" + +#: libpq/hba.c:1192 +msgid "gssapi authentication is not supported on local sockets" +msgstr "l'autenticazione gssapi non è supportata su socket locali" + +#: libpq/hba.c:1203 +msgid "peer authentication is only supported on local sockets" +msgstr "l'autenticazione peer è supportata solo su socket locali" + +#: libpq/hba.c:1220 +msgid "cert authentication is only supported on hostssl connections" +msgstr "l'autenticazione cert è supportata solo su connessioni hostssl" + +#: libpq/hba.c:1241 +#, c-format +msgid "authentication option not in name=value format: %s" +msgstr "opzione di autenticazione non in formato nome=valore: %s" + +#: libpq/hba.c:1257 +msgid "ident, peer, krb5, gssapi, sspi and cert" +msgstr "ident, peer, krb5, gssapi, sspi e cert" + +#: libpq/hba.c:1271 +msgid "clientcert can only be configured for \"hostssl\" rows" +msgstr "il clientcert può essere configurato solo per le righe \"hostssl\"" + +#: libpq/hba.c:1282 +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:1283 +msgid "Make sure the root.crt file is present and readable." +msgstr "Assicurati che il file root.crt sia presente e leggibile." + +#: libpq/hba.c:1296 +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:1330 +#, c-format +msgid "invalid LDAP port number: \"%s\"" +msgstr "numero di porta LDAP non valido: \"%s\"" + +#: libpq/hba.c:1376 libpq/hba.c:1384 +msgid "krb5, gssapi and sspi" +msgstr "krb5, gssapi e sspi" + +#: libpq/hba.c:1422 +#, c-format +msgid "invalid RADIUS port number: \"%s\"" +msgstr "numero di porta RADIUS non valido: \"%s\"" + +#: libpq/hba.c:1442 +#, c-format +msgid "unrecognized authentication option name: \"%s\"" +msgstr "nome di opzione di autenticazione sconosciuto: \"%s\"" + +#: libpq/hba.c:1474 +msgid "cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, or ldapsearchattribute together with ldapprefix" +msgstr "non è possibile usare ldapbasedn, ldapbinddn, ldapbindpasswd o ldapsearchattribute insieme a ldapprefix" + +#: libpq/hba.c:1484 +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" + +#: libpq/hba.c:1815 +#, c-format +msgid "invalid regular expression \"%s\": %s" +msgstr "espressione regolare non valida \"%s\": %s" + +#: libpq/hba.c:1838 +#, c-format +msgid "regular expression match for \"%s\" failed: %s" +msgstr "corrispondenza dell'espressione regolare \"%s\" fallita: %s" + +#: libpq/hba.c:1856 +#, 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:1922 +#, 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:1963 +#, 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:1984 +#, 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:2008 +#, c-format +msgid "could not open usermap file \"%s\": %m" +msgstr "apertura del file usermap \"%s\" fallita: %m" + +#: 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 "descrittore di large object non valido: %d" + +#: 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 "permesso per il large object %u negato" + +#: libpq/be-fsstubs.c:194 +#, c-format +msgid "large object descriptor %d was not opened for writing" +msgstr "il descrittore per il large object %d non era aperto in scrittura" + +#: libpq/be-fsstubs.c:287 catalog/objectaddress.c:828 +#: catalog/pg_largeobject.c:200 +#, c-format +msgid "must be owner of large object %u" +msgstr "occorre essere proprietari del large object %u" + +#: libpq/be-fsstubs.c:392 +msgid "must be superuser to use server-side lo_import()" +msgstr "solo un superutente può usare lo_import() lato server" + +#: libpq/be-fsstubs.c:393 +msgid "Anyone can use the client-side lo_import() provided by libpq." +msgstr "Chiunque può invece usare lo_import() lato client fornito da libpq." + +#: libpq/be-fsstubs.c:406 +#, c-format +msgid "could not open server file \"%s\": %m" +msgstr "apertura del file del server \"%s\" fallita: %m" + +#: libpq/be-fsstubs.c:428 +#, c-format +msgid "could not read server file \"%s\": %m" +msgstr "lettura dal file del server \"%s\" fallita: %m" + +#: libpq/be-fsstubs.c:458 +msgid "must be superuser to use server-side lo_export()" +msgstr "solo un superutente può usare lo_export() lato server" + +#: libpq/be-fsstubs.c:459 +msgid "Anyone can use the client-side lo_export() provided by libpq." +msgstr "Chiunque può invece usare lo_export() lato client fornito da libpq." + +#: libpq/be-fsstubs.c:484 +#, c-format +msgid "could not create server file \"%s\": %m" +msgstr "creazione del file del server \"%s\" fallita: %m" + +#: libpq/be-fsstubs.c:496 +#, c-format +msgid "could not write server file \"%s\": %m" +msgstr "scrittura del file del server \"%s\" fallita: %m" + +#: storage/file/fd.c:411 +#, c-format +msgid "getrlimit failed: %m" +msgstr "getrlimit fallito: %m" + +#: storage/file/fd.c:501 +msgid "insufficient file descriptors available to start server process" +msgstr "descrittori di file non sufficienti per avviare il processo server" + +#: storage/file/fd.c:502 +#, 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:543 storage/file/fd.c:1528 storage/file/fd.c:1643 +#, 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:1110 +#, c-format +msgid "temporary file: path \"%s\", size %lu" +msgstr "file temporaneo: percorso \"%s\", dimensione %lu" + +#: storage/file/fd.c:1504 +#, 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:1619 +#, 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:1702 +#, c-format +msgid "could not read directory \"%s\": %m" +msgstr "lettura della directory \"%s\" fallita: %m" + +#: 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 "memoria condivisa insufficiente per la struttura di dati \"%s\" (%lu byte richiesti)" + +#: storage/ipc/shmem.c:365 +#, 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 +#, 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" + +#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446 +msgid "requested shared memory size overflows size_t" +msgstr "la dimensione richiesta di memoria condivisa supera size_t" + +#: storage/buffer/bufmgr.c:134 storage/buffer/bufmgr.c:242 +msgid "cannot access temporary tables of other sessions" +msgstr "non è possibile accedere a tabelle temporanee di altre sessioni" + +#: storage/buffer/bufmgr.c:378 +#, 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:380 +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:452 +#, c-format +msgid "invalid page header in block %u of relation %s; zeroing out page" +msgstr "intestazione di pagina non valida nel blocco %u della relazione %s; azzeramento della pagina" + +#: storage/buffer/bufmgr.c:460 +#, c-format +msgid "invalid page header in block %u of relation %s" +msgstr "intestazione di pagina non valida nel blocco %u della relazione %s" + +#: storage/buffer/bufmgr.c:2746 +#, c-format +msgid "could not write block %u of %s" +msgstr "scrittura del blocco %u di %s fallita" + +#: storage/buffer/bufmgr.c:2748 +msgid "Multiple failures --- write error might be permanent." +msgstr "Più di un fallimento --- l'errore in scrittura potrebbe essere permanente." + +#: storage/buffer/bufmgr.c:2769 storage/buffer/bufmgr.c:2788 +#, c-format +msgid "writing block %u of relation %s" +msgstr "scrittura del blocco %u della relazione %s" + +#: storage/buffer/localbuf.c:190 +msgid "no empty local buffer available" +msgstr "nessun buffer locale vuoto disponibile" + +#: storage/large_object/inv_api.c:266 catalog/aclchk.c:647 +#: catalog/aclchk.c:3676 catalog/aclchk.c:4367 catalog/objectaddress.c:199 +#: catalog/pg_largeobject.c:116 catalog/pg_largeobject.c:176 +#, c-format +msgid "large object %u does not exist" +msgstr "il large object %u non esiste" + +#: storage/large_object/inv_api.c:563 storage/large_object/inv_api.c:760 +#, c-format +msgid "large object %u was not opened for writing" +msgstr "il large object %u non è stato aperto in scrittura" + +#: storage/large_object/inv_api.c:570 storage/large_object/inv_api.c:767 +#, c-format +msgid "large object %u was already dropped" +msgstr "il large object %u è stato già eliminato" + +#: 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 "puntatore di pagina corrotto: lower = %u, upper = %u, special = %u" + +#: storage/page/bufpage.c:433 +#, c-format +msgid "corrupted item pointer: %u" +msgstr "puntatore di elemento corrotto: %u" + +#: storage/page/bufpage.c:444 storage/page/bufpage.c:805 +#, 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:642 storage/page/bufpage.c:778 +#, c-format +msgid "corrupted item pointer: offset = %u, size = %u" +msgstr "puntatore di elemento corrotto: offset = %u, size = %u" + +#: storage/smgr/md.c:393 storage/smgr/md.c:863 +#, c-format +msgid "could not truncate file \"%s\": %m" +msgstr "troncamento del file \"%s\" fallito: %m" + +#: storage/smgr/md.c:460 +#, c-format +msgid "cannot extend file \"%s\" beyond %u blocks" +msgstr "estendere il file \"%s\" oltre %u blocchi" + +#: storage/smgr/md.c:482 storage/smgr/md.c:643 storage/smgr/md.c:718 +#, 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:490 +#, c-format +msgid "could not extend file \"%s\": %m" +msgstr "non è stato possibile estendere il file \"%s\": %m" + +#: storage/smgr/md.c:492 storage/smgr/md.c:499 storage/smgr/md.c:745 +msgid "Check free disk space." +msgstr "Controlla lo spazio libero sul disco." + +#: storage/smgr/md.c:496 +#, 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:661 +#, 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:677 +#, 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:736 +#, 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:741 +#, 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:839 +#, 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:888 +#, 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:1141 +#, 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:1286 +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:1661 +#, c-format +msgid "could not open file \"%s\" (target block %u): %m" +msgstr "apertura del file \"%s\" fallita (blocco di destinazione %u): %m" + +#: storage/smgr/md.c:1683 +#, c-format +msgid "could not seek to end of file \"%s\": %m" +msgstr "non è stato possibile spostarsi alla fine del file \"%s\": %m" + +#: storage/lmgr/predicate.c:665 +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:666 storage/lmgr/predicate.c:694 +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:693 +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:898 +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:899 +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:1181 storage/lmgr/predicate.c:1253 +#, 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)" + +#: storage/lmgr/predicate.c:1536 +msgid "deferrable snapshot was unsafe; trying a new one" +msgstr "lo snapshot deferibile era insicuro; ne sto provando uno nuovo" + +#: storage/lmgr/predicate.c:1571 +msgid "\"default_transaction_isolation\" is set to \"serializable\"." +msgstr "\"default_transaction_isolation\" è impostato a \"serializable\"." + +#: storage/lmgr/predicate.c:1572 +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:2247 storage/lmgr/predicate.c:2262 +#: storage/lmgr/predicate.c:3654 +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:3808 storage/lmgr/predicate.c:3897 +#: storage/lmgr/predicate.c:3905 storage/lmgr/predicate.c:3944 +#: storage/lmgr/predicate.c:4183 storage/lmgr/predicate.c:4520 +#: storage/lmgr/predicate.c:4532 storage/lmgr/predicate.c:4574 +#: storage/lmgr/predicate.c:4612 +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:3810 storage/lmgr/predicate.c:3899 +#: storage/lmgr/predicate.c:3907 storage/lmgr/predicate.c:3946 +#: storage/lmgr/predicate.c:4185 storage/lmgr/predicate.c:4522 +#: storage/lmgr/predicate.c:4534 storage/lmgr/predicate.c:4576 +#: storage/lmgr/predicate.c:4614 +msgid "The transaction might succeed if retried." +msgstr "La transazione potrebbe riuscire se ritentata." + +#: storage/lmgr/proc.c:1065 +#, c-format +msgid "Process %d waits for %s on %s." +msgstr "Processo %d in attesa di %s su %s." + +#: storage/lmgr/proc.c:1075 +#, 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:1121 +#, 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:1133 +#, 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:1139 +#, 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:1143 +#, 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:1159 +#, 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/lmgr/lock.c:609 +#, c-format +msgid "cannot acquire lock mode %s on database objects while recovery is in progress" +msgstr "non è possibile acquisire lock in modo %s sugli oggetti del database mentre è in corso il ripristino" + +#: storage/lmgr/lock.c:611 +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:724 storage/lmgr/lock.c:793 storage/lmgr/lock.c:2701 +#: storage/lmgr/lock.c:2766 +msgid "You might need to increase max_locks_per_transaction." +msgstr "Potrebbe essere necessario incrementare max_locks_per_transaction." + +#: storage/lmgr/lock.c:2116 storage/lmgr/lock.c:2210 +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/lock.c:2302 +msgid "Not enough memory for reassigning the prepared transaction's locks." +msgstr "Memoria insufficiente per riassegnare i lock della transazione preparata." + +#: storage/lmgr/deadlock.c:923 +#, c-format +msgid "Process %d waits for %s on %s; blocked by process %d." +msgstr "Il processo %d è in attesa di %s su %s; bloccato dal processo %d" + +#: storage/lmgr/deadlock.c:942 +#, c-format +msgid "Process %d: %s" +msgstr "Processo %d: %s" + +#: storage/lmgr/deadlock.c:949 +msgid "deadlock detected" +msgstr "rilevato deadlock" + +#: storage/lmgr/deadlock.c:952 +msgid "See server log for query details." +msgstr "Vedi i log del server per i dettagli della query." + +#: storage/lmgr/lmgr.c:756 +#, c-format +msgid "relation %u of database %u" +msgstr "la relazione %u del database %u" + +#: storage/lmgr/lmgr.c:762 +#, c-format +msgid "extension of relation %u of database %u" +msgstr "l'estensione della relazione %u del database %u" + +#: storage/lmgr/lmgr.c:768 +#, 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:775 +#, 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:783 +#, c-format +msgid "transaction %u" +msgstr "la transazione %u" + +#: storage/lmgr/lmgr.c:788 +#, c-format +msgid "virtual transaction %d/%u" +msgstr "la transazione virtuale %d/%u" + +#: storage/lmgr/lmgr.c:794 +#, 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:802 +#, c-format +msgid "user lock [%u,%u,%u]" +msgstr "il lock utente [%u,%u,%u]" + +#: storage/lmgr/lmgr.c:809 +#, c-format +msgid "advisory lock [%u,%u,%u,%u]" +msgstr "l'advisory lock [%u,%u,%u,%u]" + +#: storage/lmgr/lmgr.c:817 +#, c-format +msgid "unrecognized locktag type %d" +msgstr "tipo di locktag %d sconosciuto" + +#: rewrite/rewriteRemove.c:62 rewrite/rewriteSupport.c:117 +#: rewrite/rewriteDefine.c:700 rewrite/rewriteDefine.c:762 +#, c-format +msgid "rule \"%s\" for relation \"%s\" does not exist" +msgstr "la regola \"%s\" per la relazione \"%s\" non esiste" + +#: rewrite/rewriteRemove.c:66 +#, c-format +msgid "rule \"%s\" for relation \"%s\" does not exist, skipping" +msgstr "la regola \"%s\" per la relazione \"%s\" non esiste, saltata" + +#: rewrite/rewriteManip.c:1012 +msgid "conditional utility statements are not implemented" +msgstr "i comandi di utilità condizionali non sono implementati" + +#: rewrite/rewriteManip.c:1024 rewrite/rewriteHandler.c:442 +#: parser/parse_utilcmd.c:2144 parser/parse_utilcmd.c:2243 +msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" +msgstr "le istruzioni UNION/INTERSECT/EXCEPT condizionali non sono implementate" + +#: rewrite/rewriteManip.c:1177 +msgid "WHERE CURRENT OF on a view is not implemented" +msgstr "WHERE CURRENT OF su una vista non è implementato" + +#: rewrite/rewriteSupport.c:156 +#, c-format +msgid "rule \"%s\" does not exist" +msgstr "la regola \"%s\" non esiste" + +#: rewrite/rewriteSupport.c:165 +#, c-format +msgid "there are multiple rules named \"%s\"" +msgstr "esiste più di una regola chiamata \"%s\"" + +#: rewrite/rewriteSupport.c:166 +msgid "Specify a relation name as well as a rule name." +msgstr "Specifica sia un nome di relazione che un nome di regola." + +#: rewrite/rewriteHandler.c:485 +#, 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:543 +msgid "cannot have RETURNING lists in multiple rules" +msgstr "non è possibile avere liste RETURNING in più di una regola" + +#: rewrite/rewriteHandler.c:874 rewrite/rewriteHandler.c:892 +#, c-format +msgid "multiple assignments to same column \"%s\"" +msgstr "più di un assegnamento alla stessa colonna \"%s\"" + +#: rewrite/rewriteHandler.c:1030 catalog/heap.c:2441 +#, 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" + +#: rewrite/rewriteHandler.c:1627 rewrite/rewriteHandler.c:2022 +#, c-format +msgid "infinite recursion detected in rules for relation \"%s\"" +msgstr "ricorsione infinita individuata nelle regole per la relazione \"%s\"" + +#: rewrite/rewriteHandler.c:1883 +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:1897 +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:1901 +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:1906 +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:2060 +#, c-format +msgid "cannot perform INSERT RETURNING on relation \"%s\"" +msgstr "non è possibile eseguire INSERT RETURNING sulla relazione \"%s\"" + +#: rewrite/rewriteHandler.c:2062 +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:2067 +#, c-format +msgid "cannot perform UPDATE RETURNING on relation \"%s\"" +msgstr "non è possibile eseguire UPDATE RETURNING sulla relazione \"%s\"" + +#: rewrite/rewriteHandler.c:2069 +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:2074 +#, c-format +msgid "cannot perform DELETE RETURNING on relation \"%s\"" +msgstr "non è possibile eseguire DELETE RETURNING sulla relazione \"%s\"" + +#: rewrite/rewriteHandler.c:2076 +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:2140 +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/rewriteDefine.c:109 rewrite/rewriteDefine.c:769 +#, c-format +msgid "rule \"%s\" for relation \"%s\" already exists" +msgstr "la regola \"%s\" per la relazione \"%s\" esiste già" + +#: rewrite/rewriteDefine.c:287 +msgid "rule actions on OLD are not implemented" +msgstr "le regole di azione su OLD non sono implementate" + +#: rewrite/rewriteDefine.c:288 +msgid "Use views or triggers instead." +msgstr "Usa le viste o i trigger invece." + +#: rewrite/rewriteDefine.c:292 +msgid "rule actions on NEW are not implemented" +msgstr "le regole di azione su NEW non sono implementate" + +#: rewrite/rewriteDefine.c:293 +msgid "Use triggers instead." +msgstr "Usa i trigger invece." + +#: rewrite/rewriteDefine.c:306 +msgid "INSTEAD NOTHING rules on SELECT are not implemented" +msgstr "le regole INSTEAD NOTHING su SELECT non sono implementate" + +#: rewrite/rewriteDefine.c:307 +msgid "Use views instead." +msgstr "Usa le viste invece." + +#: rewrite/rewriteDefine.c:315 +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:327 +msgid "rules on SELECT must have action INSTEAD SELECT" +msgstr "le regole su SELECT devono avere un'azione INSTEAD SELECT" + +#: rewrite/rewriteDefine.c:335 +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:343 +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:368 +#, c-format +msgid "\"%s\" is already a view" +msgstr "\"%s\" è già una vista" + +#: rewrite/rewriteDefine.c:392 +#, c-format +msgid "view rule for \"%s\" must be named \"%s\"" +msgstr "la regola della vista \"%s\" deve essere chiamata \"%s\"" + +#: rewrite/rewriteDefine.c:417 +#, 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" + +#: rewrite/rewriteDefine.c:424 +#, c-format +msgid "could not convert table \"%s\" to a view because it has triggers" +msgstr "conversione della tabella \"%s\" in vista fallita perché ha dei trigger" + +#: rewrite/rewriteDefine.c:426 +msgid "In particular, the table cannot be involved in any foreign key relationships." +msgstr "In particolare, la tabella non può prendere parte in alcuna relazione di chiave esterna." + +#: rewrite/rewriteDefine.c:431 +#, c-format +msgid "could not convert table \"%s\" to a view because it has indexes" +msgstr "conversione della tabella \"%s\" in vista fallita perché ha indici" + +#: rewrite/rewriteDefine.c:437 +#, c-format +msgid "could not convert table \"%s\" to a view because it has child tables" +msgstr "conversione della tabella \"%s\" in vista fallita perché ha tabelle figlie" + +#: rewrite/rewriteDefine.c:464 +msgid "cannot have multiple RETURNING lists in a rule" +msgstr "non è possibile avere più di una lista RETURNING in una regola" + +#: rewrite/rewriteDefine.c:469 +msgid "RETURNING lists are not supported in conditional rules" +msgstr "le liste RETURNING non sono supportate in regole condizionali" + +#: rewrite/rewriteDefine.c:473 +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:552 +msgid "SELECT rule's target list has too many entries" +msgstr "la lista di destinazione della regola SELECT ha troppi elementi" + +#: rewrite/rewriteDefine.c:553 +msgid "RETURNING list has too many entries" +msgstr "la lista RETURNING ha troppi elementi" + +#: rewrite/rewriteDefine.c:569 +msgid "cannot convert relation containing dropped columns to view" +msgstr "non è possibile convertire una relazione contenente colonne eliminate in una vista" + +#: rewrite/rewriteDefine.c:574 +#, 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\"" + +#: rewrite/rewriteDefine.c:580 +#, 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:582 +#, 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:597 +#, 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:599 +#, 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:607 +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:608 +msgid "RETURNING list has too few entries" +msgstr "la lista RETURNING ha troppi pochi elementi" + +#: catalog/pg_aggregate.c:100 +msgid "cannot determine transition data type" +msgstr "non è possibile determinare il tipo di dati della transizione" + +#: catalog/pg_aggregate.c:101 +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:124 +#, 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:144 +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:175 catalog/pg_proc.c:205 +msgid "cannot determine result data type" +msgstr "non è possibile determinare il tipo di dati del risultato" + +#: catalog/pg_aggregate.c:176 +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:188 catalog/pg_proc.c:211 +msgid "unsafe use of pseudo-type \"internal\"" +msgstr "uso dello pseudo-tipo \"internal\" non sicuro" + +#: catalog/pg_aggregate.c:189 catalog/pg_proc.c:212 +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:197 +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:337 +#, c-format +msgid "function %s returns a set" +msgstr "la funzione %s restituisce un insieme" + +#: catalog/pg_aggregate.c:362 +#, c-format +msgid "function %s requires run-time type coercion" +msgstr "la funzione %s richiede una coercizione di tipo a run-time" + +#: catalog/pg_collation.c:75 +#, c-format +msgid "collation \"%s\" for encoding \"%s\" already exists" +msgstr "l'ordinamento \"%s\" per la codifica \"%s\" esiste già" + +#: catalog/pg_collation.c:89 +#, c-format +msgid "collation \"%s\" already exists" +msgstr "l'ordinamento \"%s\" esiste già" + +#: catalog/index.c:206 parser/parse_utilcmd.c:1352 parser/parse_utilcmd.c:1438 +#, 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:224 +msgid "primary keys cannot be expressions" +msgstr "le chiavi primarie non possono essere delle espressioni" + +#: catalog/index.c:734 catalog/index.c:1132 +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:744 +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:762 +msgid "shared indexes cannot be created after initdb" +msgstr "indici condivisi non possono essere creati dopo initdb" + +#: catalog/index.c:1745 +#, c-format +msgid "building index \"%s\" on table \"%s\"" +msgstr "creazione dell'indice \"%s\" sulla tabella \"%s\"" + +#: catalog/index.c:2886 +msgid "cannot reindex temporary tables of other sessions" +msgstr "non è possibile reindicizzare le tabelle temporanee di altre sessioni" + +#: catalog/pg_conversion.c:67 +#, c-format +msgid "conversion \"%s\" already exists" +msgstr "la conversione \"%s\" esiste già" + +#: catalog/pg_conversion.c:80 +#, c-format +msgid "default conversion for %s to %s already exists" +msgstr "la conversione predefinita da %s a %s esiste già" + +#: catalog/toasting.c:144 +msgid "shared tables cannot be toasted after initdb" +msgstr "le tabelle condivise non possono essere trasformate in toast dopo initdb" + +#: 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] "le funzioni non possono avere più di %d argomento" +msgstr[1] "le funzioni non possono avere più di %d argomenti" + +#: catalog/pg_proc.c:206 +msgid "A function returning a polymorphic type must have at least one polymorphic argument." +msgstr "Una funzione che restituisce un tipo polimorfico deve avere almeno un argomento polimorfico." + +#: catalog/pg_proc.c:224 +#, c-format +msgid "\"%s\" is already an attribute of type %s" +msgstr "\"%s\" è già un attributo del tipo %s" + +#: catalog/pg_proc.c:292 +msgid "window functions cannot have default arguments" +msgstr "le funzioni finestra non possono avere argomenti di default" + +#: catalog/pg_proc.c:369 +#, c-format +msgid "function \"%s\" already exists with same argument types" +msgstr "la funzione \"%s\" esiste già, con gli stessi tipi di argomenti" + +#: catalog/pg_proc.c:383 catalog/pg_proc.c:405 +msgid "cannot change return type of existing function" +msgstr "non è possibile cambiare il tipo restituito da una funzione esistente" + +#: catalog/pg_proc.c:384 catalog/pg_proc.c:407 catalog/pg_proc.c:449 +#: catalog/pg_proc.c:472 catalog/pg_proc.c:498 +msgid "Use DROP FUNCTION first." +msgstr "usare prima DROP FUNCTION." + +#: catalog/pg_proc.c:406 +msgid "Row type defined by OUT parameters is different." +msgstr "Il tipo della riga definito dai parametri di OUT è diverso." + +#: catalog/pg_proc.c:447 +#, c-format +msgid "cannot change name of input parameter \"%s\"" +msgstr "non è possibile cambiare nome del parametro di ingresso \"%s\"" + +#: catalog/pg_proc.c:471 +msgid "cannot remove parameter defaults from existing function" +msgstr "non è possibile rimuovere i valori predefiniti dei parametri da funzioni esistenti" + +#: catalog/pg_proc.c:497 +msgid "cannot change data type of existing parameter default value" +msgstr "non è possibile cambiare tipo di dati dei valori predefiniti di parametri esistenti" + +#: catalog/pg_proc.c:509 +#, c-format +msgid "function \"%s\" is an aggregate function" +msgstr "la funzione \"%s\" è una funzione di aggregazione" + +#: catalog/pg_proc.c:514 +#, c-format +msgid "function \"%s\" is not an aggregate function" +msgstr "la funzione \"%s\" non è una funzione di aggregazione" + +#: catalog/pg_proc.c:522 +#, c-format +msgid "function \"%s\" is a window function" +msgstr "la funzione \"%s\" è una funzione finestra" + +#: catalog/pg_proc.c:527 +#, c-format +msgid "function \"%s\" is not a window function" +msgstr "la funzione \"%s\" non è una funzione finestra" + +#: catalog/pg_proc.c:714 +#, c-format +msgid "there is no built-in function named \"%s\"" +msgstr "non c'è nessuna funzione predefinita chiamata \"%s\"" + +#: catalog/pg_proc.c:806 +#, c-format +msgid "SQL functions cannot return type %s" +msgstr "Le funzioni SQL non possono restituire il tipo %s" + +#: catalog/pg_proc.c:821 +#, c-format +msgid "SQL functions cannot have arguments of type %s" +msgstr "le funzioni SQL non possono avere argomenti di tipo %s" + +#: catalog/catalog.c:76 +msgid "invalid fork name" +msgstr "Nome del fork non valido" + +#: catalog/catalog.c:77 +msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"." +msgstr "Nomi di fork validi sono \"main\", \"fsm\", e \"vm\"." + +#: catalog/pg_shdepend.c:566 catalog/dependency.c:757 +#, c-format +msgid "cannot drop %s because it is required by the database system" +msgstr "non è possibile eliminare %s perché richiesto dal sistema database" + +#: catalog/pg_shdepend.c:677 catalog/dependency.c:923 +#, 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" +"e %d altro oggetto (vedere il log del server per la lista)" +msgstr[1] "" +"\n" +"e %d altri oggetti (vedere il log del server per la lista)" + +#: catalog/pg_shdepend.c:684 +#, 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" +"ed oggetti in %d altro database (guarda il log per la lista)" +msgstr[1] "" +"\n" +"ed oggetti in %d altri database (guarda il log per la lista)" + +#: catalog/pg_shdepend.c:996 +#, c-format +msgid "role %u was concurrently dropped" +msgstr "la regola %u è stata eliminata concorrentemente" + +#: catalog/pg_shdepend.c:1015 +#, c-format +msgid "tablespace %u was concurrently dropped" +msgstr "Il tablespace %u è stato eliminato concorrentemente" + +#: catalog/pg_shdepend.c:1030 +#, c-format +msgid "database %u was concurrently dropped" +msgstr "Il database %u è stato eliminato concorrentemente" + +#: catalog/pg_shdepend.c:1074 +#, c-format +msgid "owner of %s" +msgstr "proprietario di %s" + +#: catalog/pg_shdepend.c:1076 +#, c-format +msgid "privileges for %s" +msgstr "privilegi per %s" + +#. translator: %s will always be "database %s" +#: catalog/pg_shdepend.c:1084 +#, 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:1195 +#, 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:1298 +#, 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_constraint.c:783 +#, 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:795 +#, c-format +msgid "constraint \"%s\" for table \"%s\" does not exist" +msgstr "il vincolo \"%s\" per la tabella \"%s\" non esiste" + +#: catalog/pg_type.c:241 +#, c-format +msgid "invalid type internal size %d" +msgstr "dimensione interna del tipo %d non valida" + +#: 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 "l'allineamento \"%c\" non è valido per tipi passati per valore di grandezza %d" + +#: catalog/pg_type.c:289 +#, 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:298 catalog/pg_type.c:304 +#, 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:312 +msgid "fixed-size types must have storage PLAIN" +msgstr "i tipi a dimensione fissa devono avere immagazzinamento PLAIN" + +#: catalog/pg_type.c:764 +#, 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/aclchk.c:200 +msgid "grant options can only be granted to roles" +msgstr "le opzioni di concessione possono essere concesse solo ai ruoli" + +#: catalog/aclchk.c:316 +#, c-format +msgid "no privileges were granted for column \"%s\" of relation \"%s\"" +msgstr "nessun privilegio è stato concesso per la colonna \"%s\" della relazione \"%s\"" + +#: catalog/aclchk.c:321 +#, c-format +msgid "no privileges were granted for \"%s\"" +msgstr "nessun privilegio è stato concesso per \"%s\"" + +#: catalog/aclchk.c:329 +#, c-format +msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" +msgstr "non tutti i privilegi sono stati concessi per la colonna \"%s\" della relazione \"%s\"" + +#: catalog/aclchk.c:334 +#, c-format +msgid "not all privileges were granted for \"%s\"" +msgstr "non tutti i privilegi sono stati concessi per \"%s\"" + +#: catalog/aclchk.c:345 +#, c-format +msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" +msgstr "non è stato possibile revocare alcun privilegio per la colonna \"%s\" della relazione \"%s\"" + +#: catalog/aclchk.c:350 +#, c-format +msgid "no privileges could be revoked for \"%s\"" +msgstr "non è stato possibile revocare alcun privilegio per \"%s\"" + +#: catalog/aclchk.c:358 +#, c-format +msgid "not all privileges could be revoked for column \"%s\" of relation \"%s\"" +msgstr "non è stato possibile revocare tutti i privilegi per la colonna \"%s\" della relazione \"%s\"" + +#: catalog/aclchk.c:363 +#, c-format +msgid "not all privileges could be revoked for \"%s\"" +msgstr "non è stato possibile revocare tutti i privilegi per \"%s\"" + +#: catalog/aclchk.c:442 catalog/aclchk.c:891 +#, c-format +msgid "invalid privilege type %s for relation" +msgstr "tipo di privilegio %s non valido per la relazione" + +#: catalog/aclchk.c:446 catalog/aclchk.c:895 +#, c-format +msgid "invalid privilege type %s for sequence" +msgstr "tipo di privilegio %s non valido per la sequenza" + +#: catalog/aclchk.c:450 +#, c-format +msgid "invalid privilege type %s for database" +msgstr "tipo di privilegio %s non valido per il database" + +#: catalog/aclchk.c:454 catalog/aclchk.c:899 +#, c-format +msgid "invalid privilege type %s for function" +msgstr "tipo di privilegio %s non valido per la funzione" + +#: catalog/aclchk.c:458 +#, c-format +msgid "invalid privilege type %s for language" +msgstr "tipo di privilegio %s non valido per il linguaggio" + +#: catalog/aclchk.c:462 +#, c-format +msgid "invalid privilege type %s for large object" +msgstr "tipo di privilegio %s non valido per il large object" + +#: catalog/aclchk.c:466 +#, c-format +msgid "invalid privilege type %s for schema" +msgstr "tipo di privilegio %s non valido per lo schema" + +#: catalog/aclchk.c:470 +#, c-format +msgid "invalid privilege type %s for tablespace" +msgstr "tipo di privilegio %s non valido per il tablespace" + +#: catalog/aclchk.c:474 +#, c-format +msgid "invalid privilege type %s for foreign-data wrapper" +msgstr "tipo di privilegio %s non valido per il wrapper di dati esterni" + +#: catalog/aclchk.c:478 +#, c-format +msgid "invalid privilege type %s for foreign server" +msgstr "tipo di privilegio %s non valido per il server esterno" + +#: catalog/aclchk.c:517 +msgid "column privileges are only valid for relations" +msgstr "i privilegi della colonna sono validi solo per le relazioni" + +#: catalog/aclchk.c:932 +msgid "default privileges cannot be set for columns" +msgstr "i privilegi predefiniti non possono essere impostati sulle colonne" + +#: catalog/aclchk.c:1730 +#, c-format +msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" +msgstr "la sequenza \"%s\" supporta solo i privilegi USAGE, SELECT e UPDATE" + +#: catalog/aclchk.c:1747 +msgid "invalid privilege type USAGE for table" +msgstr "tipo di privilegio USAGE non valido per la tabella" + +#: catalog/aclchk.c:1912 +#, c-format +msgid "invalid privilege type %s for column" +msgstr "tipo di privilegio %s non valido per la colonna" + +#: catalog/aclchk.c:1925 +#, c-format +msgid "sequence \"%s\" only supports SELECT column privileges" +msgstr "la sequenza \"%s\" supporta solo i privilegi di SELECT sulla colonna" + +#: catalog/aclchk.c:2509 +#, c-format +msgid "language \"%s\" is not trusted" +msgstr "il linguaggio \"%s\" non è fidato" + +#: catalog/aclchk.c:2511 +msgid "Only superusers can use untrusted languages." +msgstr "Solo un superutente può usare linguaggi non fidati." + +#: catalog/aclchk.c:3018 +#, c-format +msgid "unrecognized privilege type \"%s\"" +msgstr "tipo di privilegio \"%s\" sconosciuto" + +#: catalog/aclchk.c:3067 +#, c-format +msgid "permission denied for column %s" +msgstr "permesso negato per la colonna %s" + +#: catalog/aclchk.c:3069 +#, c-format +msgid "permission denied for relation %s" +msgstr "permesso negato per la relazione %s" + +#: catalog/aclchk.c:3073 +#, c-format +msgid "permission denied for database %s" +msgstr "permesso negato per il database %s" + +#: catalog/aclchk.c:3075 +#, c-format +msgid "permission denied for function %s" +msgstr "permesso negato per la funzione %s" + +#: catalog/aclchk.c:3077 +#, c-format +msgid "permission denied for operator %s" +msgstr "permesso negato per l'operatore %s" + +#: catalog/aclchk.c:3079 +#, c-format +msgid "permission denied for type %s" +msgstr "permesso negato per il tipo %s" + +#: catalog/aclchk.c:3081 +#, c-format +msgid "permission denied for language %s" +msgstr "permesso negato per il linguaggio %s" + +#: catalog/aclchk.c:3083 +#, c-format +msgid "permission denied for large object %s" +msgstr "permesso negato per large object %s" + +#: catalog/aclchk.c:3085 +#, c-format +msgid "permission denied for schema %s" +msgstr "permesso negato per lo schema %s" + +#: catalog/aclchk.c:3087 +#, c-format +msgid "permission denied for operator class %s" +msgstr "permesso negato per la classe di operatori %s" + +#: catalog/aclchk.c:3089 +#, c-format +msgid "permission denied for operator family %s" +msgstr "permesso negato per la famiglia di operatori %s" + +#: catalog/aclchk.c:3091 +#, c-format +msgid "permission denied for collation %s" +msgstr "permesso negato per l'ordinamento %s" + +#: catalog/aclchk.c:3093 +#, c-format +msgid "permission denied for conversion %s" +msgstr "permesso negato per la conversione %s" + +#: catalog/aclchk.c:3095 +#, c-format +msgid "permission denied for tablespace %s" +msgstr "permesso negato per il tablespace %s" + +#: catalog/aclchk.c:3097 +#, c-format +msgid "permission denied for text search dictionary %s" +msgstr "permesso negato per il dizionario di ricerca di testo %s" + +#: catalog/aclchk.c:3099 +#, c-format +msgid "permission denied for text search configuration %s" +msgstr "permesso negato per la configurazione di ricerca di testo %s" + +#: catalog/aclchk.c:3101 +#, c-format +msgid "permission denied for foreign-data wrapper %s" +msgstr "permesso negato per il wrapper di dati esterni %s" + +#: catalog/aclchk.c:3103 +#, c-format +msgid "permission denied for foreign server %s" +msgstr "permesso negato per il server esterno %s" + +#: catalog/aclchk.c:3105 +#, c-format +msgid "permission denied for extension %s" +msgstr "permesso negato per l'estensione %s" + +#: catalog/aclchk.c:3111 catalog/aclchk.c:3113 +#, c-format +msgid "must be owner of relation %s" +msgstr "bisogna essere proprietari della relazione %s" + +#: catalog/aclchk.c:3115 +#, c-format +msgid "must be owner of sequence %s" +msgstr "bisogna essere proprietari della sequenza %s" + +#: catalog/aclchk.c:3117 +#, c-format +msgid "must be owner of database %s" +msgstr "bisogna essere proprietari del database %s" + +#: catalog/aclchk.c:3119 +#, c-format +msgid "must be owner of function %s" +msgstr "bisogna essere proprietari della funzione %s" + +#: catalog/aclchk.c:3121 +#, c-format +msgid "must be owner of operator %s" +msgstr "bisogna essere proprietari dell'operatore %s" + +#: catalog/aclchk.c:3123 +#, c-format +msgid "must be owner of type %s" +msgstr "bisogna essere proprietari del tipo %s" + +#: catalog/aclchk.c:3125 +#, c-format +msgid "must be owner of language %s" +msgstr "bisogna essere proprietari del linguaggio %s" + +#: catalog/aclchk.c:3127 +#, c-format +msgid "must be owner of large object %s" +msgstr "bisogna essere proprietari del large object %s" + +#: catalog/aclchk.c:3129 +#, c-format +msgid "must be owner of schema %s" +msgstr "bisogna essere proprietari dello schema %s" + +#: catalog/aclchk.c:3131 +#, c-format +msgid "must be owner of operator class %s" +msgstr "bisogna essere proprietari della classe di operatore %s" + +#: catalog/aclchk.c:3133 +#, c-format +msgid "must be owner of operator family %s" +msgstr "bisogna essere proprietari della famiglia di operatori %s" + +#: catalog/aclchk.c:3135 +#, c-format +msgid "must be owner of collation %s" +msgstr "bisogna essere proprietari dell'ordinamento %s" + +#: catalog/aclchk.c:3137 +#, c-format +msgid "must be owner of conversion %s" +msgstr "bisogna essere proprietari della conversione %s" + +#: catalog/aclchk.c:3139 +#, c-format +msgid "must be owner of tablespace %s" +msgstr "bisogna essere proprietari del tablespace %s" + +#: catalog/aclchk.c:3141 +#, c-format +msgid "must be owner of text search dictionary %s" +msgstr "bisogna essere proprietari del dizionario di ricerca di testo %s" + +#: catalog/aclchk.c:3143 +#, c-format +msgid "must be owner of text search configuration %s" +msgstr "bisogna essere proprietari della configurazione di ricerca di testo %s" + +#: catalog/aclchk.c:3145 +#, c-format +msgid "must be owner of foreign-data wrapper %s" +msgstr "bisogna essere proprietari del wrapper di dati esterni %s" + +#: catalog/aclchk.c:3147 +#, c-format +msgid "must be owner of foreign server %s" +msgstr "bisogna essere proprietari del server esterno %s" + +#: catalog/aclchk.c:3149 +#, c-format +msgid "must be owner of extension %s" +msgstr "bisogna essere proprietari dell'estensione %s" + +#: catalog/aclchk.c:3191 +#, c-format +msgid "permission denied for column \"%s\" of relation \"%s\"" +msgstr "permesso negato per la colonna \"%s\" della relazione \"%s\"" + +#: catalog/aclchk.c:3218 +#, c-format +msgid "role with OID %u does not exist" +msgstr "il ruolo con OID %u non esiste" + +#: catalog/aclchk.c:3311 catalog/aclchk.c:3319 +#, c-format +msgid "attribute %d of relation with OID %u does not exist" +msgstr "l'attributo %d della relazione con OID %u non esiste" + +#: catalog/aclchk.c:3392 catalog/aclchk.c:4218 +#, c-format +msgid "relation with OID %u does not exist" +msgstr "la relazione con OID %u non esiste" + +#: catalog/aclchk.c:3600 catalog/aclchk.c:4322 +#, c-format +msgid "language with OID %u does not exist" +msgstr "il linguaggio con OID %u non esiste" + +#: catalog/aclchk.c:3761 catalog/aclchk.c:4394 +#, c-format +msgid "schema with OID %u does not exist" +msgstr "lo schema con OID %u non esiste" + +#: catalog/aclchk.c:3815 catalog/aclchk.c:4421 +#, c-format +msgid "tablespace with OID %u does not exist" +msgstr "il tablespace con l'OID %u non esiste" + +#: catalog/aclchk.c:4244 +#, c-format +msgid "type with OID %u does not exist" +msgstr "il tipo con OID %u non esiste" + +#: catalog/aclchk.c:4270 +#, c-format +msgid "operator with OID %u does not exist" +msgstr "l'operatore con OID %u non esiste" + +#: catalog/aclchk.c:4447 +#, c-format +msgid "operator class with OID %u does not exist" +msgstr "la classe di operatori con OID %u non esiste" + +#: catalog/aclchk.c:4474 +#, c-format +msgid "operator family with OID %u does not exist" +msgstr "la famiglia di operatori con OID %u non esiste" + +#: catalog/aclchk.c:4501 +#, 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:4528 +#, 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:4635 +#, c-format +msgid "collation with OID %u does not exist" +msgstr "l'ordinamento con OID %u non esiste" + +#: catalog/aclchk.c:4661 +#, c-format +msgid "conversion with OID %u does not exist" +msgstr "la conversione con OID %u non esiste" + +#: catalog/aclchk.c:4702 +#, c-format +msgid "extension with OID %u does not exist" +msgstr "l'estensione con OID %u non esiste" + +#: catalog/namespace.c:260 +msgid "temporary tables cannot specify a schema name" +msgstr "Le tabelle temporanee non possono specificare un nome di schema" + +#: catalog/namespace.c:410 catalog/namespace.c:423 +msgid "cannot create relations in temporary schemas of other sessions" +msgstr "non si possono creare relazioni in schemi temporanei di altre sessioni" + +#: catalog/namespace.c:414 +msgid "cannot create temporary relation in non-temporary schema" +msgstr "non si possono creare relazioni temporanee in schemi non temporanei" + +#: catalog/namespace.c:429 +msgid "only temporary relations may be created in temporary schemas" +msgstr "solo relazioni temporanee possono essere create in schemi temporanei" + +#: catalog/namespace.c:2389 parser/parse_expr.c:777 parser/parse_target.c:1088 +#, c-format +msgid "cross-database references are not implemented: %s" +msgstr "i riferimenti tra database diversi non sono implementati: %s" + +#: catalog/namespace.c:2395 gram.y:11634 gram.y:12848 parser/parse_expr.c:784 +#: parser/parse_target.c:1095 +#, c-format +msgid "improper qualified name (too many dotted names): %s" +msgstr "nome qualificato improprio (troppi nomi puntati): %s" + +#: catalog/namespace.c:2523 +#, c-format +msgid "%s is already in schema \"%s\"" +msgstr "%s è già nello schema \"%s\"" + +#: catalog/namespace.c:2531 +msgid "cannot move objects into or out of temporary schemas" +msgstr "non posso spostare oggetti dentro o fuori gli schemi temporanei" + +#: catalog/namespace.c:2537 +msgid "cannot move objects into or out of TOAST schema" +msgstr "non posso spostare oggetti dentro o fuori lo schema TOAST" + +#: catalog/namespace.c:2641 +#, c-format +msgid "improper relation name (too many dotted names): %s" +msgstr "nome di relazione improprio (troppi nomi puntati): %s" + +#: catalog/namespace.c:3040 +#, c-format +msgid "collation \"%s\" for encoding \"%s\" does not exist" +msgstr "l'ordinamento \"%s\" per la codifica \"%s\" non esiste" + +#: catalog/namespace.c:3092 +#, c-format +msgid "conversion \"%s\" does not exist" +msgstr "la conversione \"%s\" non esiste" + +#: catalog/namespace.c:3297 +#, 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:3313 +msgid "cannot create temporary tables during recovery" +msgstr "non è possibile creare tabelle temporanee durante il recupero" + +#: catalog/objectaddress.c:286 +msgid "database name cannot be qualified" +msgstr "il nome del database non può essere qualificato" + +#: catalog/objectaddress.c:292 +msgid "tablespace name cannot be qualified" +msgstr "il nome del tablespace non può essere qualificato" + +#: catalog/objectaddress.c:295 +msgid "role name cannot be qualified" +msgstr "il nome del ruolo non può essere qualificato" + +#: catalog/objectaddress.c:301 +msgid "language name cannot be qualified" +msgstr "il nome del linguaggio non può essere qualificato" + +#: catalog/objectaddress.c:304 +msgid "foreign-data wrapper name cannot be qualified" +msgstr "il nome del wrapper di dati esterni non può essere qualificato" + +#: catalog/objectaddress.c:307 +msgid "server name cannot be qualified" +msgstr "il nome del server non può essere qualificato" + +#: catalog/objectaddress.c:532 +msgid "column name must be qualified" +msgstr "il nome della colonna deve essere qualificato" + +#: catalog/objectaddress.c:874 catalog/objectaddress.c:890 +msgid "must be superuser" +msgstr "occorre essere superutenti" + +#: catalog/objectaddress.c:881 +msgid "must have CREATEROLE privilege" +msgstr "occorre avere privilegio CREATEROLE" + +#: catalog/dependency.c:593 +#, c-format +msgid "cannot drop %s because %s requires it" +msgstr "non è possibile eliminare %s perché %s lo richiede" + +#: catalog/dependency.c:596 +#, c-format +msgid "You can drop %s instead." +msgstr "È invece possibile eliminare %s." + +#: catalog/dependency.c:873 +#, c-format +msgid "drop auto-cascades to %s" +msgstr "l'eliminazione elimina anche %s in cascata automatica" + +#: catalog/dependency.c:885 catalog/dependency.c:894 +#, c-format +msgid "%s depends on %s" +msgstr "%s dipende da %s" + +#: catalog/dependency.c:906 catalog/dependency.c:915 +#, c-format +msgid "drop cascades to %s" +msgstr "l'eliminazione elimina anche %s in cascata" + +#: catalog/dependency.c:935 +#, c-format +msgid "cannot drop %s because other objects depend on it" +msgstr "non è possibile eliminare %s perché altri oggetti dipendono da esso" + +#: catalog/dependency.c:939 catalog/dependency.c:946 +msgid "Use DROP ... CASCADE to drop the dependent objects too." +msgstr "Usa DROP ... CASCADE per eliminare anche gli oggetti dipendenti." + +#: catalog/dependency.c:943 +msgid "cannot drop desired object(s) because other objects depend on them" +msgstr "non è possibile eliminare gli oggetti desiderati perché altri oggetti dipendono da essi" + +#. translator: %d always has a value larger than 1 +#: catalog/dependency.c:952 +#, c-format +msgid "drop cascades to %d other object" +msgid_plural "drop cascades to %d other objects" +msgstr[0] "l'eliminazione elimina in cascata %d altro oggetto" +msgstr[1] "l'eliminazione elimina in cascata %d altri oggetti" + +#: catalog/dependency.c:2223 +#, c-format +msgid " column %s" +msgstr " colonna %s" + +#: catalog/dependency.c:2229 +#, c-format +msgid "function %s" +msgstr "funzione %s" + +#: catalog/dependency.c:2234 +#, c-format +msgid "type %s" +msgstr "tipo %s" + +#: catalog/dependency.c:2264 +#, c-format +msgid "cast from %s to %s" +msgstr "conversione da %s a %s" + +#: catalog/dependency.c:2284 +#, c-format +msgid "collation %s" +msgstr "ordinamento %s" + +#: catalog/dependency.c:2308 +#, c-format +msgid "constraint %s on %s" +msgstr "vincolo %s su %s" + +#: catalog/dependency.c:2314 +#, c-format +msgid "constraint %s" +msgstr "vincolo %s" + +#: catalog/dependency.c:2331 +#, c-format +msgid "conversion %s" +msgstr "conversione %s" + +#: catalog/dependency.c:2368 +#, c-format +msgid "default for %s" +msgstr "predefinito per %s" + +#: catalog/dependency.c:2385 +#, c-format +msgid "language %s" +msgstr "linguaggio %s" + +#: catalog/dependency.c:2391 +#, c-format +msgid "large object %u" +msgstr "large object %u" + +#: catalog/dependency.c:2396 +#, c-format +msgid "operator %s" +msgstr "operatore %s" + +#: catalog/dependency.c:2428 +#, c-format +msgid "operator class %s for access method %s" +msgstr "classe di operatori %s per il metodo di accesso %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:2478 +#, c-format +msgid "operator %d (%s, %s) of %s: %s" +msgstr "operatore %d (%s, %s) della %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/dependency.c:2528 +#, c-format +msgid "function %d (%s, %s) of %s: %s" +msgstr "funzione %d (%s, %s) della %s: %s" + +#: catalog/dependency.c:2568 +#, c-format +msgid "rule %s on " +msgstr "regola %s on " + +#: catalog/dependency.c:2603 +#, c-format +msgid "trigger %s on " +msgstr "trigger %s su " + +#: catalog/dependency.c:2620 +#, c-format +msgid "schema %s" +msgstr "schema %s" + +#: catalog/dependency.c:2633 +#, c-format +msgid "text search parser %s" +msgstr "analizzatore di ricerca di testo %s" + +#: catalog/dependency.c:2648 +#, c-format +msgid "text search dictionary %s" +msgstr "dizionario di ricerca di testo %s" + +#: catalog/dependency.c:2663 +#, c-format +msgid "text search template %s" +msgstr "modello di ricerca di testo %s" + +#: catalog/dependency.c:2678 +#, c-format +msgid "text search configuration %s" +msgstr "configurazione di ricerca di testo %s" + +#: catalog/dependency.c:2686 +#, c-format +msgid "role %s" +msgstr "regola %s" + +#: catalog/dependency.c:2699 +#, c-format +msgid "database %s" +msgstr "database %s" + +#: catalog/dependency.c:2711 +#, c-format +msgid "tablespace %s" +msgstr "tablespace %s" + +#: catalog/dependency.c:2720 +#, c-format +msgid "foreign-data wrapper %s" +msgstr "wrapper di dati esterni %s" + +#: catalog/dependency.c:2729 +#, c-format +msgid "server %s" +msgstr "server %s" + +#: catalog/dependency.c:2754 +#, c-format +msgid "user mapping for %s" +msgstr "mappatura utenti per %s" + +#: catalog/dependency.c:2788 +#, c-format +msgid "default privileges on new relations belonging to role %s" +msgstr "privilegi predefiniti sulle nuove relazioni appartenenti al ruolo %s" + +#: catalog/dependency.c:2793 +#, c-format +msgid "default privileges on new sequences belonging to role %s" +msgstr "privilegi predefiniti sulle nuove sequenze appartenenti al ruolo %s" + +#: catalog/dependency.c:2798 +#, c-format +msgid "default privileges on new functions belonging to role %s" +msgstr "privilegi predefiniti sulle nuove funzioni appartenenti al ruolo %s" + +#: catalog/dependency.c:2804 +#, c-format +msgid "default privileges belonging to role %s" +msgstr "privilegi predefiniti appartenenti al ruolo %s" + +#: catalog/dependency.c:2812 +#, c-format +msgid " in schema %s" +msgstr " nello schema %s" + +#: catalog/dependency.c:2829 +#, c-format +msgid "extension %s" +msgstr "estensione %s" + +#: catalog/dependency.c:2887 +#, c-format +msgid "table %s" +msgstr "tabella %s" + +#: catalog/dependency.c:2891 +#, c-format +msgid "index %s" +msgstr "indice %s" + +#: catalog/dependency.c:2895 +#, c-format +msgid "sequence %s" +msgstr "sequenza %s" + +#: catalog/dependency.c:2899 +#, c-format +msgid "uncataloged table %s" +msgstr "tabella non allocata %s" + +#: catalog/dependency.c:2903 +#, c-format +msgid "toast table %s" +msgstr "tabella toast %s" + +#: catalog/dependency.c:2907 +#, c-format +msgid "view %s" +msgstr "vista %s" + +#: catalog/dependency.c:2911 +#, c-format +msgid "composite type %s" +msgstr "tipo composito %s" + +#: catalog/dependency.c:2915 +#, c-format +msgid "foreign table %s" +msgstr "tabella esterna %s" + +#: catalog/dependency.c:2920 +#, c-format +msgid "relation %s" +msgstr "relazione %s" + +#: catalog/dependency.c:2957 +#, c-format +msgid "operator family %s for access method %s" +msgstr "famiglia di operatori %s per il metodo d'accesso %s" + +#: catalog/pg_operator.c:221 catalog/pg_operator.c:363 +#, c-format +msgid "\"%s\" is not a valid operator name" +msgstr "\"%s\" non è un nome di operatore valido" + +#: catalog/pg_operator.c:372 +msgid "only binary operators can have commutators" +msgstr "solo gli operatori binari possono avere commutatori" + +#: catalog/pg_operator.c:376 +msgid "only binary operators can have join selectivity" +msgstr "solo gli operatori binari possono avere selettività di unione" + +#: catalog/pg_operator.c:380 +msgid "only binary operators can merge join" +msgstr "solo gli operatori binari possono fare dei merge-join" + +#: catalog/pg_operator.c:384 +msgid "only binary operators can hash" +msgstr "solo gli operatori binari possono supportare l'hash" + +#: catalog/pg_operator.c:395 +msgid "only boolean operators can have negators" +msgstr "solo gli operatori booleani possono avere un negatore" + +#: catalog/pg_operator.c:399 +msgid "only boolean operators can have restriction selectivity" +msgstr "solo gli operatori booleani possono avere restrizione di selettività" + +#: catalog/pg_operator.c:403 +msgid "only boolean operators can have join selectivity" +msgstr "solo gli operatori booleani possono avere selettività di unione" + +#: catalog/pg_operator.c:407 +msgid "only boolean operators can merge join" +msgstr "solo gli operatori booleani possono fare dei merge-join" + +#: catalog/pg_operator.c:411 +msgid "only boolean operators can hash" +msgstr "solo gli operatori booleani possono supportare l'hash" + +#: catalog/pg_operator.c:423 +#, c-format +msgid "operator %s already exists" +msgstr "l'operatore %s esiste già " + +#: catalog/pg_operator.c:616 +msgid "operator cannot be its own negator or sort operator" +msgstr "l'operatore non può negare o ordinare se stesso" + +#: catalog/pg_enum.c:113 catalog/pg_enum.c:199 +#, c-format +msgid "invalid enum label \"%s\"" +msgstr "etichetta enumerata non valida \"%s\"" + +#: catalog/pg_enum.c:114 catalog/pg_enum.c:200 +#, c-format +msgid "Labels must be %d characters or less." +msgstr "Le etichette devono essere lunghe %d caratteri o meno." + +#: catalog/pg_enum.c:264 +#, c-format +msgid "\"%s\" is not an existing enum label" +msgstr "\"%s\" non è un'etichetta enumerata esistente" + +#: catalog/pg_enum.c:325 +msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade" +msgstr "ALTER TYPE ADD BEFORE/AFTER non è compatibile con gli aggiornamenti binari" + +#: catalog/heap.c:264 +#, c-format +msgid "permission denied to create \"%s.%s\"" +msgstr "permesso di creare \"%s.%s\" negato" + +#: catalog/heap.c:266 +msgid "System catalog modifications are currently disallowed." +msgstr "Le modifiche al catalogo di sistema non sono attualmente consentite." + +#: catalog/heap.c:406 +#, 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:422 +#, c-format +msgid "column name \"%s\" specified more than once" +msgstr "nome di colonna \"%s\" specificato più di una volta" + +#: catalog/heap.c:472 +#, c-format +msgid "column \"%s\" has type \"unknown\"" +msgstr "la colonna \"%s\" è di tipo \"unknown\"" + +#: catalog/heap.c:473 +msgid "Proceeding with relation creation anyway." +msgstr "Si procede comunque alla creazione della relazione." + +#: catalog/heap.c:486 +#, c-format +msgid "column \"%s\" has pseudo-type %s" +msgstr "la colonna \"%s\" ha pseudo-tipo %s" + +#: catalog/heap.c:516 +#, 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:558 +#, 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:1030 +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:2150 +#, c-format +msgid "check constraint \"%s\" already exists" +msgstr "il vincolo di controllo \"%s\" esiste già" + +#: catalog/heap.c:2300 +#, c-format +msgid "merging constraint \"%s\" with inherited definition" +msgstr "unione del vincolo \"%s\" con una definizione ereditata" + +#: catalog/heap.c:2398 +msgid "cannot use column references in default expression" +msgstr "non si possono usare riferimenti a colonne nell'espressione predefinita" + +#: catalog/heap.c:2406 +msgid "default expression must not return a set" +msgstr "le espressioni predefinite non devono restituire un insieme" + +#: catalog/heap.c:2414 +msgid "cannot use subquery in default expression" +msgstr "non si possono usare sottoquery nell'espressione predefinita" + +#: catalog/heap.c:2418 +msgid "cannot use aggregate function in default expression" +msgstr "non si possono usare funzioni di aggregazione nell'espressione predefinita" + +#: catalog/heap.c:2422 +msgid "cannot use window function in default expression" +msgstr "non si possono usare funzioni finestra nell'espressione predefinita" + +#: catalog/heap.c:2492 +#, 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:2748 +msgid "unsupported ON COMMIT and foreign key combination" +msgstr "la combinazione di COMMIT con una chiave esterna non è supportata" + +#: catalog/heap.c:2749 +#, 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:2754 +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:2755 +#, c-format +msgid "Table \"%s\" references \"%s\"." +msgstr "La tabella \"%s\" referenzia \"%s\"." + +#: catalog/heap.c:2757 +#, 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/pg_depend.c:323 +#, c-format +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" + +#: main/main.c:247 +#, c-format +msgid "%s: setsysinfo failed: %s\n" +msgstr "%s: setsysinfo fallita: %s\n" + +#: main/main.c:269 +#, c-format +msgid "%s: WSAStartup failed: %d\n" +msgstr "%s: WSAStartup fallita: %d\n" + +#: main/main.c:288 +#, c-format +msgid "" +"%s is the PostgreSQL server.\n" +"\n" +msgstr "" +"%s è il server PostgreSQL.\n" +"\n" + +#: main/main.c:289 +#, c-format +msgid "" +"Usage:\n" +" %s [OPTION]...\n" +"\n" +msgstr "" +"Utilizzo:\n" +" %s [OPZIONE]...\n" +"\n" + +#: main/main.c:290 +#, c-format +msgid "Options:\n" +msgstr "Opzioni:\n" + +#: main/main.c:292 +#, 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:294 +#, c-format +msgid " -B NBUFFERS number of shared buffers\n" +msgstr " -B NBUFFERS numero di buffer condivisi\n" + +#: main/main.c:295 +#, c-format +msgid " -c NAME=VALUE set run-time parameter\n" +msgstr " -c NOME=VALORE imposta un parametro di esecuzione\n" + +#: main/main.c:296 +#, c-format +msgid " -d 1-5 debugging level\n" +msgstr " -d 1-5 livello di debugging\n" + +#: main/main.c:297 +#, c-format +msgid " -D DATADIR database directory\n" +msgstr " -D DATADIR directory del database\n" + +#: main/main.c:298 +#, c-format +msgid " -e use European date input format (DMY)\n" +msgstr " -e usa il formato date europeo (GMA)\n" + +#: main/main.c:299 +#, c-format +msgid " -F turn fsync off\n" +msgstr " -F disabilita fsync\n" + +#: main/main.c:300 +#, 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:301 +#, c-format +msgid " -i enable TCP/IP connections\n" +msgstr " -i abilita le connessioni TCP/IP\n" + +#: main/main.c:302 +#, c-format +msgid " -k DIRECTORY Unix-domain socket location\n" +msgstr " -k DIRECTORY locazione dei socket di dominio Unix\n" + +#: main/main.c:304 +#, c-format +msgid " -l enable SSL connections\n" +msgstr " -l abilita la connessione SSL\n" + +#: main/main.c:306 +#, 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:307 +#, 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:308 +#, c-format +msgid " -p PORT port number to listen on\n" +msgstr " -p PORT numero di porta sul quale ascoltare\n" + +#: main/main.c:309 +#, c-format +msgid " -s show statistics after each query\n" +msgstr " -s mostra le statistiche dopo ogni query\n" + +#: main/main.c:310 +#, 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:311 +#, c-format +msgid " --NAME=VALUE set run-time parameter\n" +msgstr " --NOME=VALORE imposta un parametro di esecuzione\n" + +#: main/main.c:312 +#, 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:313 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help mostra questo aiuto ed esci\n" + +#: main/main.c:314 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version mostra informazioni sulla versione ed esci\n" + +#: main/main.c:316 +#, c-format +msgid "" +"\n" +"Developer options:\n" +msgstr "" +"\n" +"Opzioni per gli sviluppatori:\n" + +#: main/main.c:317 +#, 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:318 +#, 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:319 +#, 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:320 +#, c-format +msgid " -P disable system indexes\n" +msgstr " -P disabilita gli indici di sistema\n" + +#: main/main.c:321 +#, 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:322 +#, 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:323 +#, 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:325 +#, c-format +msgid "" +"\n" +"Options for single-user mode:\n" +msgstr "" +"\n" +"Opzione per la modalità a singolo utente:\n" + +#: main/main.c:326 +#, 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:327 +#, 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:328 +#, c-format +msgid " -d 0-5 override debugging level\n" +msgstr " -d 0-5 scavalca il livello di debugging\n" + +#: main/main.c:329 +#, c-format +msgid " -E echo statement before execution\n" +msgstr " -E stampa le istruzioni prima dell'esecuzione\n" + +#: main/main.c:330 +#, 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:331 main/main.c:336 +#, 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" + +#: main/main.c:333 +#, c-format +msgid "" +"\n" +"Options for bootstrapping mode:\n" +msgstr "" +"\n" +"Opzioni per la modalità di inizializzazione:\n" + +#: main/main.c:334 +#, 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:335 +#, 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:337 +#, c-format +msgid " -x NUM internal use\n" +msgstr " -x NUM uso interno\n" + +#: main/main.c:339 +#, 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" +"Si prega di leggere la documentazione per la lista completa di impostazioni\n" +"di configurazione e su come impostarle sulla riga di comando o nel file di\n" +"configurazione\n" +"\n" +"Puoi segnalare eventuali bug a .\n" + +#: main/main.c:353 +msgid "" +"\"root\" execution of the PostgreSQL server is not permitted.\n" +"The server must be started under an unprivileged user ID to prevent\n" +"possible system security compromise. See the documentation for\n" +"more information on how to properly start the server.\n" +msgstr "" +"Non è consentito eseguire il server PostgreSQL come \"root\".\n" +"Il server deve essere avviato con un ID utente non privilegiato per\n" +"prevenire possibili problemi di sicurezza. Consulta la documentazione\n" +"per avere maggiori informazioni su come avviare il server correttamente.\n" + +#: main/main.c:370 +#, 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:377 +msgid "" +"Execution of PostgreSQL by a user with administrative permissions is not\n" +"permitted.\n" +"The server must be started under an unprivileged user ID to prevent\n" +"possible system security compromises. See the documentation for\n" +"more information on how to properly start the server.\n" +msgstr "" +"Non è consentito eseguire il server PostgreSQL con un utente con permessi\n" +"amministrativi.\n" +"Il server deve essere avviato con un ID utente non privilegiato per\n" +"prevenire possibili problemi di sicurezza. Consulta la documentazione\n" +"per avere maggiori informazioni su come avviare il server correttamente.\n" + +#: main/main.c:398 +#, c-format +msgid "%s: invalid effective UID: %d\n" +msgstr "%s: UID effettivo non valido: %d\n" + +#: main/main.c:411 +#, c-format +msgid "%s: could not determine user name (GetUserName failed)\n" +msgstr "%s: non è stato possibile determinare il nome utente (GetUserName fallita)\n" + +#: parser/parse_coerce.c:932 parser/parse_coerce.c:962 +#: parser/parse_coerce.c:980 parser/parse_coerce.c:995 +#: parser/parse_expr.c:1672 parser/parse_expr.c:2134 parser/parse_target.c:832 +#, c-format +msgid "cannot cast type %s to %s" +msgstr "non è possibile convertire il tipo %s in %s" + +#: parser/parse_coerce.c:965 +msgid "Input has too few columns." +msgstr "L'input ha troppe poche colonne." + +#: parser/parse_coerce.c:983 +#, c-format +msgid "Cannot cast type %s to %s in column %d." +msgstr "Non è possibile convertire il tipo %s in %s nella colonna %d." + +#: parser/parse_coerce.c:998 +msgid "Input has too many columns." +msgstr "L'input ha troppe colonne." + +#. translator: first %s is name of a SQL construct, eg WHERE +#: parser/parse_coerce.c:1041 +#, c-format +msgid "argument of %s must be type boolean, not type %s" +msgstr "l'argomento di %s deve essere di tipo booleano, non %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 +#, c-format +msgid "argument of %s must not return a set" +msgstr "l'argomento di %s non deve restituire un set" + +#. translator: first %s is name of a SQL construct, eg LIMIT +#: parser/parse_coerce.c:1088 +#, c-format +msgid "argument of %s must be type %s, not type %s" +msgstr "l'argomento di %s deve essere di tipo %s, non %s" + +#. translator: first %s is name of a SQL construct, eg CASE +#: parser/parse_coerce.c:1221 +#, c-format +msgid "%s types %s and %s cannot be matched" +msgstr "in %s i tipi %s e %s non combaciano" + +#. translator: first %s is name of a SQL construct, eg CASE +#: parser/parse_coerce.c:1288 +#, c-format +msgid "%s could not convert type %s to %s" +msgstr "in %s conversione del tipo %s in %s fallita" + +#: parser/parse_coerce.c:1539 +msgid "arguments declared \"anyelement\" are not all alike" +msgstr "gli argomenti dichiarati \"anyelement\" non sono tutti simili" + +#: parser/parse_coerce.c:1559 +msgid "arguments declared \"anyarray\" are not all alike" +msgstr "gli argomenti dichiarati \"anyarray\" non sono tutti simili" + +#: parser/parse_coerce.c:1588 parser/parse_coerce.c:1736 +#: parser/parse_coerce.c:1768 +#, c-format +msgid "argument declared \"anyarray\" is not an array but type %s" +msgstr "l'argomento dichiarato \"anyarray\" non è un array ma di tipo %s" + +#: parser/parse_coerce.c:1604 +msgid "argument declared \"anyarray\" is not consistent with argument declared \"anyelement\"" +msgstr "l'argomento dichiarato \"anyarray\" non è consistente con l'argomento dichiarato \"anyelement\"" + +#: parser/parse_coerce.c:1622 +msgid "could not determine polymorphic type because input has type \"unknown\"" +msgstr "determinazione del tipo polimorfico fallita perché l'input è di tipo \"unknown\"" + +#: parser/parse_coerce.c:1632 +#, c-format +msgid "type matched to anynonarray is an array type: %s" +msgstr "il tipo associato ad anynonarray è di tipo array: %s" + +#: parser/parse_coerce.c:1642 +#, c-format +msgid "type matched to anyenum is not an enum type: %s" +msgstr "il tipo associato ad anyenum non è una enumerazione: %s" + +#: gram.y:916 +#, c-format +msgid "unrecognized role option \"%s\"" +msgstr "opzione di ruolo \"%s\" sconosciuta" + +#: gram.y:1302 +msgid "current database cannot be changed" +msgstr "il database corrente non può essere cambiato" + +#: gram.y:1420 gram.y:1435 +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:1440 gram.y:9246 gram.y:11759 +msgid "interval precision specified twice" +msgstr "intervallo di precisione specificato due volte" + +#: gram.y:3006 +msgid "CREATE TABLE AS cannot specify INTO" +msgstr "CREATE TABLE AS non può specificare INTO" + +#: gram.y:4059 +msgid "duplicate trigger events specified" +msgstr "evento del trigger specificato più volte" + +#: gram.y:4154 parser/parse_utilcmd.c:2527 parser/parse_utilcmd.c:2553 +msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" +msgstr "un vincolo dichiarato INITIALLY DEFERRED dev'essere DEFERRABLE" + +#: gram.y:4161 +msgid "conflicting constraint properties" +msgstr "proprietà del vincolo in conflitto" + +#: gram.y:4222 +msgid "CREATE ASSERTION is not yet implemented" +msgstr "CREATE ASSERTION non è stata ancora implementata" + +#: gram.y:4238 +msgid "DROP ASSERTION is not yet implemented" +msgstr "DROP ASSERTION non è stata ancora implementata" + +#: gram.y:4574 +msgid "RECHECK is no longer required" +msgstr "RECHECK non è più richiesto" + +#: gram.y:4575 +msgid "Update your data type." +msgstr "Aggiorna il tuo tipo di dato." + +#: gram.y:7298 gram.y:7304 gram.y:7310 +msgid "WITH CHECK OPTION is not implemented" +msgstr "WITH CHECK OPTION non è implementata" + +#: gram.y:7986 +msgid "column name list not allowed in CREATE TABLE / AS EXECUTE" +msgstr "una lista di nomi di colonne non è consentita in CREATE TABLE / AS EXECUTE" + +#: gram.y:8210 +msgid "number of columns does not match number of values" +msgstr "il numero di colonne non corrisponde al numero di valori" + +#: gram.y:8660 +msgid "LIMIT #,# syntax is not supported" +msgstr "La sintassi LIMIT #,# non è supportata" + +#: gram.y:8661 +msgid "Use separate LIMIT and OFFSET clauses." +msgstr "Usa separatamente le clausole LIMIT ed OFFSET." + +#: gram.y:8879 +msgid "VALUES in FROM must have an alias" +msgstr "VALUES nel FROM deve avere un alias" + +#: gram.y:8880 +msgid "For example, FROM (VALUES ...) [AS] foo." +msgstr "Per esempio, FROM (VALUES ...) [AS] foo." + +#: gram.y:8885 +msgid "subquery in FROM must have an alias" +msgstr "la sottoquery in FROM deve avere un alias" + +#: gram.y:8886 +msgid "For example, FROM (SELECT ...) [AS] foo." +msgstr "Per esempio, FROM (SELECT ...) [AS] foo." + +#: gram.y:9372 +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:9381 +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:10095 +msgid "UNIQUE predicate is not yet implemented" +msgstr "il predicato UNIQUE non è stato ancora implementato" + +#: gram.y:11026 +msgid "RANGE PRECEDING is only supported with UNBOUNDED" +msgstr "RANGE PRECEDING è supportato solo con UNBOUNDED" + +#: gram.y:11032 +msgid "RANGE FOLLOWING is only supported with UNBOUNDED" +msgstr "RANGE FOLLOWING è supportato solo con UNBOUNDED" + +#: gram.y:11059 gram.y:11082 +msgid "frame start cannot be UNBOUNDED FOLLOWING" +msgstr "l'inizio della finestra non può essere UNBOUNDED FOLLOWING" + +#: gram.y:11064 +msgid "frame starting from following row cannot end with current row" +msgstr "una finestra che inizia dalla riga seguente non può terminare alla riga corrente" + +#: gram.y:11087 +msgid "frame end cannot be UNBOUNDED PRECEDING" +msgstr "la fine della finestra non può essere UNBOUNDED PRECEDING" + +#: gram.y:11093 +msgid "frame starting from current row cannot have preceding rows" +msgstr "una finestra che inizia dalla riga corrente non può avere righe precedenti" + +#: gram.y:11100 +msgid "frame starting from following row cannot have preceding rows" +msgstr "una finestra che inizia dalla riga seguente non può avere righe precedenti" + +#: gram.y:11734 +msgid "type modifier cannot have parameter name" +msgstr "un modificatore di tipo non può avere un nome di parametro" + +#: gram.y:12343 gram.y:12551 +msgid "improper use of \"*\"" +msgstr "uso improprio di \"*\"" + +#: gram.y:12482 +msgid "wrong number of parameters on left side of OVERLAPS expression" +msgstr "numero errato di parametri a sinistra dell'espressione OVERLAPS" + +#: gram.y:12489 +msgid "wrong number of parameters on right side of OVERLAPS expression" +msgstr "numero errato di parametri a destra dell'espressione OVERLAPS" + +#: gram.y:12614 +msgid "multiple ORDER BY clauses not allowed" +msgstr "non è possibile avere più di una clausola ORDER BY" + +#: gram.y:12625 +msgid "multiple OFFSET clauses not allowed" +msgstr "non è possibile avere più di una clausola OFFSET" + +#: gram.y:12634 +msgid "multiple LIMIT clauses not allowed" +msgstr "non è possibile avere più di una clausola LIMIT" + +#: gram.y:12643 +msgid "multiple WITH clauses not allowed" +msgstr "non è possibile avere più di una clausola WITH" + +#: gram.y:12789 +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:12890 +msgid "multiple COLLATE clauses not allowed" +msgstr "non è possibile avere più di una clausola COLLATE" + +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:12928 gram.y:12941 +#, 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:12954 +#, c-format +msgid "%s constraints cannot be marked NOT VALID" +msgstr "un vincolo %s non può essere marcato NOT VALID" + +#: parser/parse_utilcmd.c:182 +#, c-format +msgid "relation \"%s\" already exists, skipping" +msgstr "la relazione \"%s\" esiste già, saltata" + +#: parser/parse_utilcmd.c:335 +msgid "array of serial is not implemented" +msgstr "gli array di serial non sono implementati" + +#: parser/parse_utilcmd.c:383 +#, c-format +msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\"" +msgstr "%s creerà la sequenza implicita \"%s\" per la colonna serial \"%s.%s\"" + +#: parser/parse_utilcmd.c: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: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:1155 parser/parse_utilcmd.c:1231 +#, 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:1496 +msgid "cannot use an existing index in CREATE TABLE" +msgstr "non è possibile usare un indice preesistente in CREATE TABLE" + +#: parser/parse_utilcmd.c:1516 +#, c-format +msgid "index \"%s\" is already associated with a constraint" +msgstr "l'indice \"%s\" è già associato ad un vincolo" + +#: parser/parse_utilcmd.c:1524 +#, c-format +msgid "index \"%s\" does not belong to table \"%s\"" +msgstr "l'indice \"%s\" non appartiene alla tabella \"%s\"" + +#: parser/parse_utilcmd.c:1531 +#, c-format +msgid "index \"%s\" is not valid" +msgstr "l'indice \"%s\" non è valido" + +#: parser/parse_utilcmd.c:1537 +#, c-format +msgid "\"%s\" is not a unique index" +msgstr "\"%s\" non è un indice univoco" + +#: parser/parse_utilcmd.c:1538 parser/parse_utilcmd.c:1545 +#: parser/parse_utilcmd.c:1552 parser/parse_utilcmd.c:1622 +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:1544 +#, c-format +msgid "index \"%s\" contains expressions" +msgstr "l'indice \"%s\" contiene espressioni" + +#: parser/parse_utilcmd.c:1551 +#, c-format +msgid "\"%s\" is a partial index" +msgstr "\"%s\" è un indice parziale" + +#: parser/parse_utilcmd.c:1563 +#, c-format +msgid "\"%s\" is a deferrable index" +msgstr "\"%s\" è un indice deferibile" + +#: parser/parse_utilcmd.c:1564 +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:1621 +#, c-format +msgid "index \"%s\" does not have default sorting behavior" +msgstr "l'indice \"%s\" non ha un ordinamento predefinito" + +#: parser/parse_utilcmd.c:1766 +#, 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:1772 +#, c-format +msgid "column \"%s\" appears twice in unique constraint" +msgstr "la colonna \"%s\" appare due volte nel vincolo univoco" + +#: parser/parse_utilcmd.c:1937 +msgid "index expression cannot return a set" +msgstr "l'espressione dell'indice non può restituire un insieme" + +#: parser/parse_utilcmd.c:1947 +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:2044 +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:2050 +msgid "cannot use aggregate function in rule WHERE condition" +msgstr "non è possibile usare funzioni di aggregazioni nella condizione WHERE della regola" + +#: parser/parse_utilcmd.c:2054 +msgid "cannot use window function in rule WHERE condition" +msgstr "non è possibile usare funzioni finestra nella condizione WHERE della regola" + +#: parser/parse_utilcmd.c:2126 +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:2162 +msgid "ON SELECT rule cannot use OLD" +msgstr "la regola ON SELECT non può usare OLD" + +#: parser/parse_utilcmd.c:2166 +msgid "ON SELECT rule cannot use NEW" +msgstr "la regola ON SELECT non può usare NEW" + +#: parser/parse_utilcmd.c:2175 +msgid "ON INSERT rule cannot use OLD" +msgstr "la regola ON INSERT non può usare OLD" + +#: parser/parse_utilcmd.c:2181 +msgid "ON DELETE rule cannot use NEW" +msgstr "La regola ON DELETE non può usare NEW" + +#: parser/parse_utilcmd.c:2209 +msgid "cannot refer to OLD within WITH query" +msgstr "non ci si può riferire ad OLD nella query WITH" + +#: parser/parse_utilcmd.c:2216 +msgid "cannot refer to NEW within WITH query" +msgstr "non ci si può riferire a NEW nella query WITH" + +#: parser/parse_utilcmd.c:2499 +msgid "misplaced DEFERRABLE clause" +msgstr "clausola DEFERRABLE mal posizionata" + +#: parser/parse_utilcmd.c:2504 parser/parse_utilcmd.c:2519 +msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" +msgstr "clausole DEFERRABLE/NOT DEFERRABLE multiple non consentite" + +#: parser/parse_utilcmd.c:2514 +msgid "misplaced NOT DEFERRABLE clause" +msgstr "clausola NOT DEFERRABLE mal posizionata" + +#: parser/parse_utilcmd.c:2535 +msgid "misplaced INITIALLY DEFERRED clause" +msgstr "clausola INITIALLY DEFERRED mal posizionata" + +#: parser/parse_utilcmd.c:2540 parser/parse_utilcmd.c:2566 +msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" +msgstr "clausole INITIALLY IMMEDIATE/DEFERRED multiple non sono consentite" + +#: parser/parse_utilcmd.c:2561 +msgid "misplaced INITIALLY IMMEDIATE clause" +msgstr "clausola INITIALLY IMMEDIATE mal posizionata" + +#: parser/parse_utilcmd.c:2752 +#, 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)" + +#: parser/parse_agg.c:131 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:133 +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." + +#: parser/parse_agg.c:174 +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:245 parser/parse_clause.c:1637 +#, c-format +msgid "window \"%s\" does not exist" +msgstr "la finestra \"%s\" non esiste" + +#: parser/parse_agg.c:336 +msgid "aggregates not allowed in WHERE clause" +msgstr "le funzioni di aggregazione non sono consentite nella clausola WHERE" + +#: parser/parse_agg.c:342 +msgid "aggregates not allowed in JOIN conditions" +msgstr "le funzioni di aggregazione non sono consentite nelle condizioni JOIN" + +#: parser/parse_agg.c:363 +msgid "aggregates not allowed in GROUP BY clause" +msgstr "le funzioni di aggregazione non sono consentite nella clausola GROUP BY" + +#: parser/parse_agg.c:433 +msgid "aggregate functions not allowed in a recursive query's recursive term" +msgstr "le funzioni di aggregazione non sono consentite nel termine ricorsivo di una query ricorsiva" + +#: parser/parse_agg.c:458 +msgid "window functions not allowed in WHERE clause" +msgstr "le funzioni finestra non sono consentiti nella clausola WHERE" + +#: parser/parse_agg.c:464 +msgid "window functions not allowed in JOIN conditions" +msgstr "gli aggregati non sono consentiti nella condizioni JOIN" + +#: parser/parse_agg.c:470 +msgid "window functions not allowed in HAVING clause" +msgstr "le funzioni finestra non sono consentite nella clausola HAVING" + +#: parser/parse_agg.c:483 +msgid "window functions not allowed in GROUP BY clause" +msgstr "le funzioni finestra non sono consentite nella clausola GROUP BY" + +#: parser/parse_agg.c:502 parser/parse_agg.c:515 +msgid "window functions not allowed in window definition" +msgstr "le funzioni finestra non sono consentite nella definizioni di finestra" + +#: 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 "la colonna \"%s.%s\" deve comparire nella clausola GROUP BY o essere usata in una funzione di aggregazione" + +#: parser/parse_agg.c:679 +#, 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/analyze.c:472 +msgid "INSERT ... SELECT cannot specify INTO" +msgstr "INSERT ... SELECT non può specificare INTO" + +#: parser/analyze.c:565 parser/analyze.c:1071 +msgid "VALUES lists must all be the same length" +msgstr "le liste VALUES devono essere tutte della stessa lunghezza" + +#: parser/analyze.c:607 parser/analyze.c:1212 +msgid "VALUES must not contain table references" +msgstr "VALUES non può contenere riferimenti a tabelle" + +#: parser/analyze.c:621 parser/analyze.c:1226 +msgid "VALUES must not contain OLD or NEW references" +msgstr "VALUES non può contenere riferimenti a OLD o a NEW" + +#: parser/analyze.c:622 parser/analyze.c:1227 +msgid "Use SELECT ... UNION ALL ... instead." +msgstr "Usa SELECT ... UNION ALL ... invece." + +#: parser/analyze.c:726 parser/analyze.c:1239 +msgid "cannot use aggregate function in VALUES" +msgstr "non si possono usare funzioni di aggregazione in VALUES" + +#: parser/analyze.c:732 parser/analyze.c:1245 +msgid "cannot use window function in VALUES" +msgstr "non si possono usare funzioni finestra in VALUES" + +#: parser/analyze.c:766 +msgid "INSERT has more expressions than target columns" +msgstr "INSERT ha più espressioni che colonne di destinazione" + +#: parser/analyze.c:784 +msgid "INSERT has more target columns than expressions" +msgstr "INSERT ha più colonne di destinazione che espressioni" + +#: parser/analyze.c:788 +msgid "The insertion source is a row expression containing the same number of columns expected by the INSERT. Did you accidentally use extra parentheses?" +msgstr "L'origine dell'inserimento è un'espressione riga con lo stesso numero di colonne attese da INSERT. Forse hai usato accidentalmente parentesi in eccesso?" + +#: parser/analyze.c:1085 +msgid "DEFAULT can only appear in a VALUES list within INSERT" +msgstr "DEFAULT può apparire solo nella lista di VALUES usata in un INSERT" + +#: parser/analyze.c:1193 parser/analyze.c:2421 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES" +msgstr "SELECT FOR UPDATE/SHARE non è consentito con VALUES" + +#: parser/analyze.c:1456 +msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" +msgstr "clausola UNION/INTERSECT/EXCEPT ORDER BY non valida" + +#: parser/analyze.c:1457 +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:1458 +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:1533 +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:1593 +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:1681 +#, 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:1937 +msgid "CREATE TABLE AS specifies too many column names" +msgstr "troppi nomi di colonna specificati in CREATE TABLE AS" + +#: parser/analyze.c:1995 +msgid "cannot use aggregate function in UPDATE" +msgstr "non è possibile usare funzioni di aggregazione in UPDATE" + +#: parser/analyze.c:2001 +msgid "cannot use window function in UPDATE" +msgstr "non è possibile usare funzioni finestra in UPDATE" + +#: parser/analyze.c:2110 +msgid "cannot use aggregate function in RETURNING" +msgstr "non è possibile usare funzioni di aggregazione in RETURNING" + +#: parser/analyze.c:2116 +msgid "cannot use window function in RETURNING" +msgstr "non è possibile usare funzioni finestra in RETURNING" + +#: parser/analyze.c:2135 +msgid "RETURNING cannot contain references to other relations" +msgstr "RETURNING non può contenere riferimenti ad altre relazioni" + +#: parser/analyze.c:2174 +msgid "cannot specify both SCROLL and NO SCROLL" +msgstr "non è possibile specificare sia SCROLL che NO SCROLL" + +#: parser/analyze.c:2188 +msgid "DECLARE CURSOR cannot specify INTO" +msgstr "DECLARE CURSOR non può specificare INTO" + +#: parser/analyze.c:2200 +msgid "DECLARE CURSOR must not contain data-modifying statements in WITH" +msgstr "DECLARE CURSOR non può contenere istruzioni di modifica dei dati nel WITH" + +#: parser/analyze.c:2206 +msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE non è supportato" + +#: parser/analyze.c:2207 +msgid "Holdable cursors must be READ ONLY." +msgstr "I cursori trattenibili devono essere READ ONLY." + +#: parser/analyze.c:2220 +msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE non è supportato" + +#: parser/analyze.c:2221 +msgid "Insensitive cursors must be READ ONLY." +msgstr "I cursori Insensitive devono essere READ ONLY." + +#: parser/analyze.c:2274 +msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause" +msgstr "SELECT FOR UPDATE/SHARE non è consentito con la clausola DISTINCT" + +#: parser/analyze.c:2278 +msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause" +msgstr "SELECT FOR UPDATE/SHARE non è consentito con la clausola DISTINCT" + +#: parser/analyze.c:2282 +msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause" +msgstr "SELECT FOR UPDATE/SHARE non è consentito con la clausola HAVING" + +#: parser/analyze.c:2286 +msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions" +msgstr "SELECT FOR UPDATE/SHARE non è consentito con funzioni di aggregazione" + +#: parser/analyze.c:2290 +msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions" +msgstr "SELECT FOR UPDATE/SHARE non è consentito con funzioni finestra" + +#: parser/analyze.c:2294 +msgid "SELECT FOR UPDATE/SHARE is not allowed with set-returning functions in the target list" +msgstr "SELECT FOR UPDATE/SHARE non è consentito con funzioni che ritornano insiemi nella lista di destinazione" + +#: parser/analyze.c:2373 +msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names" +msgstr "SELECT FOR UPDATE/SHARE deve specificare nomi di relazioni non qualificati" + +#: parser/analyze.c:2390 +#, c-format +msgid "SELECT FOR UPDATE/SHARE cannot be used with foreign table \"%s\"" +msgstr "SELECT FOR UPDATE/SHARE non può essere usato con la tabella esterna \"%s\"" + +#: parser/analyze.c:2409 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join" +msgstr "SELECT FOR UPDATE/SHARE non può essere applicato ad un JOIN" + +#: parser/analyze.c:2415 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function" +msgstr "SELECT FOR UPDATE/SHARE non può essere applicato ad una funzione" + +#: parser/analyze.c:2427 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query" +msgstr "SELECT FOR UPDATE/SHARE non può essere applicato ad una query WITH" + +#: parser/analyze.c:2441 +#, c-format +msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause" +msgstr "la relazione \"%s\" nella clausola FOR UPDATE/SHARE non è indicata nella clausola FROM" + +#: parser/parse_clause.c:421 +#, c-format +msgid "JOIN/ON clause refers to \"%s\", which is not part of JOIN" +msgstr "la clausola JOIN/ON si riferisce a \"%s\", che non fa parte del JOIN" + +#: parser/parse_clause.c:502 +msgid "subquery in FROM cannot have SELECT INTO" +msgstr "la sottoquery in FROM non può avere SELECT INTO" + +#: parser/parse_clause.c:524 +msgid "subquery in FROM cannot refer to other relations of same query level" +msgstr "la sottoquery nel FROM non può riferirsi ad altre relazioni allo stesso livello di query" + +#: parser/parse_clause.c:580 +msgid "function expression in FROM cannot refer to other relations of same query level" +msgstr "l'espressione funzionale nel FROM non può riferirsi ad altre relazioni allo stesso livello di query" + +#: parser/parse_clause.c:593 +msgid "cannot use aggregate function in function expression in FROM" +msgstr "non è possibile usare funzioni di aggregazione nell'espressione funzionale del FROM" + +#: parser/parse_clause.c:600 +msgid "cannot use window function in function expression in FROM" +msgstr "non è possibile usare funzioni finestra nell'espressione funzionale del FROM" + +#: parser/parse_clause.c:877 +#, 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:892 +#, 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:901 +#, 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:915 +#, 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:924 +#, 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:981 +#, 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:1228 +#, c-format +msgid "argument of %s must not contain variables" +msgstr "l'argomento di %s non può contenere variabili" + +#. 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 "l'argomento di %s non può contenere funzioni di aggregazione" + +#. 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 "l'argomento di %s non può contenere funzioni finestra" + +#. 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\" è ambiguo" + +#. 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 "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:1409 +#, c-format +msgid "%s position %d is not in select list" +msgstr "%s in posizione %d non è nella lista SELECT" + +#: parser/parse_clause.c:1625 +#, c-format +msgid "window \"%s\" is already defined" +msgstr "la finestra \"%s\" è già definita" + +#: parser/parse_clause.c:1684 +#, 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:1696 +#, 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:1726 parser/parse_clause.c:1732 +#, c-format +msgid "cannot copy window \"%s\" because it has a frame clause" +msgstr "non è possibile copiare la finestra \"%s\" perché ha una clausola frame" + +#: parser/parse_clause.c:1734 +msgid "Omit the parentheses in this OVER clause." +msgstr "Omettere le parentesi in questa clausola OVER." + +#: parser/parse_clause.c:1800 +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:1801 +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:1887 parser/parse_clause.c:1919 +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:2041 +#, 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:2043 +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_expr.c:366 parser/parse_expr.c:759 +#, c-format +msgid "column %s.%s does not exist" +msgstr "la colonna %s.%s non esiste" + +#: parser/parse_expr.c:378 +#, 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:384 +#, 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:390 +#, 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:420 parser/parse_target.c:618 +msgid "row expansion via \"*\" is not supported here" +msgstr "l'espansione della riga tramite \"*\" non è supportata qui" + +#: parser/parse_expr.c:743 parser/parse_target.c:1067 +#: parser/parse_relation.c:479 parser/parse_relation.c:559 +#, c-format +msgid "column reference \"%s\" is ambiguous" +msgstr "il riferimento alla colonna \"%s\" è ambiguo" + +#: 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 +#, c-format +msgid "there is no parameter $%d" +msgstr "parametro $%d non presente" + +#: parser/parse_expr.c:1023 +msgid "NULLIF requires = operator to yield boolean" +msgstr "NULLIF richiede che l'operatore = restituisca un valore booleano" + +#: parser/parse_expr.c:1416 +msgid "subquery cannot have SELECT INTO" +msgstr "sa sottoquery non può avere SELECT INTO" + +#: parser/parse_expr.c:1444 +msgid "subquery must return a column" +msgstr "la sottoquery deve restituire una colonna" + +#: parser/parse_expr.c:1451 +msgid "subquery must return only one column" +msgstr "la sottoquery deve restituire solo una colonna" + +#: parser/parse_expr.c:1511 +msgid "subquery has too many columns" +msgstr "la sottoquery ha troppe colonne" + +#: parser/parse_expr.c:1516 +msgid "subquery has too few columns" +msgstr "la sottoquery ha troppe poche colonne" + +#: parser/parse_expr.c:1612 +msgid "cannot determine type of empty array" +msgstr "non è possibile determinare il tipo di un array vuoto" + +#: parser/parse_expr.c:1613 +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:1627 +#, 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:1841 +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:1842 +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:1857 +#, 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:1964 +#, c-format +msgid "cannot cast XMLSERIALIZE result to %s" +msgstr "non è possibile convertire il risultato di XMLSERIALIZE a %s" + +#: parser/parse_expr.c:2207 parser/parse_expr.c:2407 +msgid "unequal number of entries in row expressions" +msgstr "numero di elementi differente nelle espressioni di riga" + +#: parser/parse_expr.c:2217 +msgid "cannot compare rows of zero length" +msgstr "non possono comparire righe di lunghezza zero" + +#: parser/parse_expr.c:2242 +#, 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:2249 +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:2308 parser/parse_expr.c:2353 +#, 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:2310 +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:2355 +msgid "There are multiple equally-plausible candidates." +msgstr "C'è più di un candidato egualmente plausibile." + +#: parser/parse_expr.c:2447 +msgid "IS DISTINCT FROM requires = operator to yield boolean" +msgstr "IS DISTINCT FROM richiede che l'operatore = restituisca un valore booleano" + +#: parser/parse_target.c:383 parser/parse_target.c:671 +#, c-format +msgid "cannot assign to system column \"%s\"" +msgstr "non è possibile assegnare alla colonna di sistema \"%s\"" + +#: parser/parse_target.c:411 +msgid "cannot set an array element to DEFAULT" +msgstr "non è possibile impostare gli elementi di un array a DEFAULT" + +#: parser/parse_target.c:416 +msgid "cannot set a subfield to DEFAULT" +msgstr "non è possibile impostare un sottocampo a DEFAULT" + +#: parser/parse_target.c:485 +#, c-format +msgid "column \"%s\" is of type %s but expression is of type %s" +msgstr "la colonna \"%s\" è di tipo %s ma l'espressione è di tipo %s" + +#: parser/parse_target.c:655 +#, c-format +msgid "cannot assign to field \"%s\" of column \"%s\" because its type %s is not a composite type" +msgstr "non è possibile assegnare al campo \"%s\" della colonna \"%s\" perché il suo tipo %s non è un tipo composito" + +#: parser/parse_target.c:664 +#, c-format +msgid "cannot assign to field \"%s\" of column \"%s\" because there is no such column in data type %s" +msgstr "non è possibile assegnare al campo \"%s\" della colonna \"%s\" perché non questa colonna non compare nel tipo di dato %s" + +#: parser/parse_target.c:731 +#, c-format +msgid "array assignment to \"%s\" requires type %s but expression is of type %s" +msgstr "l'assegnamento array a \"%s\" richiede il tipo %s ma l'espressione è di tipo %s" + +#: parser/parse_target.c:741 +#, c-format +msgid "subfield \"%s\" is of type %s but expression is of type %s" +msgstr "il sottocampo \"%s\" è di tipo %s ma l'espressione è di tipo %s" + +#: parser/parse_target.c:1129 +msgid "SELECT * with no tables specified is not valid" +msgstr "SELECT * senza tabelle specificate non è consentito" + +#: parser/parse_param.c:215 +#, c-format +msgid "inconsistent types deduced for parameter $%d" +msgstr "tipi di dati dedotti per il parametro $%d non consistenti" + +#: parser/parse_node.c:83 +#, c-format +msgid "target lists can have at most %d entries" +msgstr "le liste di destinazione possono avere al più %d elementi" + +#: parser/parse_node.c:252 +#, c-format +msgid "cannot subscript type %s because it is not an array" +msgstr "non è possibile usare un indice su %s perché non è un array" + +#: parser/parse_node.c:355 parser/parse_node.c:382 +msgid "array subscript must have type integer" +msgstr "l'indice di un array dev'essere di tipo intero" + +#: parser/parse_node.c:406 +#, c-format +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_collate.c:214 parser/parse_collate.c:538 +#, 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:541 +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:769 +#, c-format +msgid "collation mismatch between explicit collations \"%s\" and \"%s\"" +msgstr "mancata corrispondenza degli ordinamenti espliciti \"%s\" e \"%s\"" + +#: parser/parse_relation.c:148 +#, c-format +msgid "table reference \"%s\" is ambiguous" +msgstr "il riferimento alla tabella \"%s\" è ambiguo" + +#: parser/parse_relation.c:184 +#, c-format +msgid "table reference %u is ambiguous" +msgstr "il riferimento alla tabella %u è ambiguo" + +#: parser/parse_relation.c:344 +#, c-format +msgid "table name \"%s\" specified more than once" +msgstr "la tabella di nome \"%s\" è stata specificata più di una volta" + +#: parser/parse_relation.c:763 parser/parse_relation.c:1054 +#: parser/parse_relation.c:1441 +#, c-format +msgid "table \"%s\" has %d columns available but %d columns specified" +msgstr "la tabella \"%s\" ha %d colonne disponibili ma %d colonne specificate" + +#: parser/parse_relation.c:793 +#, c-format +msgid "too many column aliases specified for function %s" +msgstr "troppi alias di colonna specificati per la funzione %s" + +#: parser/parse_relation.c:859 +#, 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:861 +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:1134 +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:1142 +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:1193 +#, 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:1267 +#, 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:1323 +#, c-format +msgid "joins can have at most %d columns" +msgstr "i join possono avere al più %d colonne" + +#: parser/parse_relation.c:1414 +#, 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:2104 +#, c-format +msgid "column %d of relation \"%s\" does not exist" +msgstr "la colonna %d della relazione \"%s\" non esiste" + +#: parser/parse_relation.c:2489 +#, 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:2492 +#, 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:2494 +#, c-format +msgid "There is an entry for table \"%s\", but it cannot be referenced from this part of the query." +msgstr "C'è un elemento per la tabella \"%s\", ma non può essere referenziato da questa parte della query." + +#: parser/parse_relation.c:2500 +#, c-format +msgid "missing FROM-clause entry for table \"%s\"" +msgstr "elemento FROM per la tabella \"%s\" mancante" + +#: scan.l:411 +msgid "unterminated /* comment" +msgstr "commento /* non terminato" + +#: scan.l:440 +msgid "unterminated bit string literal" +msgstr "letterale di stringa di bit non terminato" + +#: scan.l:461 +msgid "unterminated hexadecimal string literal" +msgstr "letterale di stringa esadecimale non terminato" + +#: scan.l:511 +msgid "unsafe use of string constant with Unicode escapes" +msgstr "uso non sicuro di stringa costante con gli escape Unicode" + +#: scan.l:512 +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: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 "coppia surrogata Unicode non valida" + +#: scan.l:586 +msgid "invalid Unicode escape" +msgstr "escape Unicode non valido" + +#: scan.l:587 +msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX." +msgstr "Gli escape Unicode devono essere \\uXXXX or \\UXXXXXXXX." + +#: scan.l:598 +msgid "unsafe use of \\' in a string literal" +msgstr "uso non sicuro di \\' in una stringa letterale" + +#: scan.l:599 +msgid "Use '' to write quotes in strings. \\' is insecure in client-only encodings." +msgstr "Usa '' per scrivere gli apici in una stringa. \\' non è sicuro in codifiche solo client." + +#: scan.l:674 +msgid "unterminated dollar-quoted string" +msgstr "stringa delimitata da dollari non terminata" + +#: scan.l:691 scan.l:703 scan.l:717 +msgid "zero-length delimited identifier" +msgstr "identificativo delimitato di lunghezza zero" + +#: scan.l:730 +msgid "unterminated quoted identifier" +msgstr "identificativo tra virgolette non terminato" + +#: scan.l:834 +msgid "operator too long" +msgstr "operatore troppo lungo" + +#. translator: %s is typically the translation of "syntax error" +#: scan.l:992 +#, 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:1000 +#, c-format +msgid "%s at or near \"%s\"" +msgstr "%s a o presso \"%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 "i valori escape Unicode non possono essere usati per code point superiori a 007F se la codifica del server non è UTF8" + +#: scan.l:1189 scan.l:1325 +msgid "invalid Unicode escape value" +msgstr "valore escape Unicode non valido" + +#: scan.l:1214 +msgid "invalid Unicode escape character" +msgstr "carattere escape Unicode non valido" + +#: scan.l:1381 +msgid "nonstandard use of \\' in a string literal" +msgstr "uso non standard di \\' in una stringa letterale" + +#: scan.l:1382 +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:1391 +msgid "nonstandard use of \\\\ in a string literal" +msgstr "uso non standard di \\\\ in una stringa letterale" + +#: scan.l:1392 +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:1406 +msgid "nonstandard use of escape in a string literal" +msgstr "uso non standard dell'escape in una stringa letterale" + +#: scan.l:1407 +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'." + +#: parser/parse_oper.c:221 +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:476 +#, c-format +msgid "operator requires run-time type coercion: %s" +msgstr "l'operatore richiede una coercizione di tipo a run-time: %s" + +#: parser/parse_oper.c:710 +#, c-format +msgid "operator is not unique: %s" +msgstr "l'operatore non è unico: %s" + +#: parser/parse_oper.c:712 +msgid "Could not choose a best candidate operator. You might need to add explicit type casts." +msgstr "Non è stato possibile scegliere l'operatore migliore. Potrebbe essere necessario convertire i tipi esplicitamente." + +#: parser/parse_oper.c:720 +msgid "No operator matches the given name and argument type(s). You might need to add explicit type casts." +msgstr "Nessun operatore trovato con nome e tipi di argomenti forniti. Potrebbe essere necessario convertire i tipi esplicitamente." + +#: parser/parse_oper.c:779 parser/parse_oper.c:893 +#, c-format +msgid "operator is only a shell: %s" +msgstr "l'operatore non è completamente definito: %s" + +#: parser/parse_oper.c:881 +msgid "op ANY/ALL (array) requires array on right side" +msgstr "op ANY/ALL (array) richiede un array sul lato destro" + +#: parser/parse_oper.c:923 +msgid "op ANY/ALL (array) requires operator to yield boolean" +msgstr "op ANY/ALL (array) richiede che l'operatore restituisca un valore booleano" + +#: parser/parse_oper.c:928 +msgid "op ANY/ALL (array) requires operator not to return a set" +msgstr "op ANY/ALL (array) richiede che l'operatore non restituisca un insieme" + +#: parser/parse_func.c:147 +#, 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:158 +msgid "positional argument cannot follow named argument" +msgstr "gli argomenti posizionali non possono seguire gli argomenti con nome" + +#: parser/parse_func.c:236 +#, 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:243 +#, 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:249 +#, 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:255 +#, 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:277 +#, c-format +msgid "function %s is not unique" +msgstr "la funzione %s non è unica" + +#: parser/parse_func.c:280 +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: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 "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:302 +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:412 parser/parse_func.c:478 +#, 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:419 +msgid "aggregates cannot return sets" +msgstr "le funzioni di aggregazione non possono restituire insiemi" + +#: parser/parse_func.c:431 +msgid "aggregates cannot use named arguments" +msgstr "le funzioni di aggregazione non possono usare argomenti con nome" + +#: parser/parse_func.c:450 +msgid "window function call requires an OVER clause" +msgstr "una chiamata ad una funzione finestra richiede una clausola OVER" + +#: parser/parse_func.c:468 +msgid "DISTINCT is not implemented for window functions" +msgstr "DISTINCT non è implementato per funzioni finestra" + +#: parser/parse_func.c:488 +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:494 +msgid "window functions cannot return sets" +msgstr "le funzioni finestra non possono restituire insiemi" + +#: parser/parse_func.c:505 +msgid "window functions cannot use named arguments" +msgstr "le funzioni finestra non possono usare argomenti con nome" + +#: parser/parse_func.c:1589 +#, c-format +msgid "aggregate %s(*) does not exist" +msgstr "la funzione di aggregazione %s(*) non esiste" + +#: parser/parse_func.c:1594 +#, c-format +msgid "aggregate %s does not exist" +msgstr "la funzione di aggregazione %s non esiste" + +#: parser/parse_func.c:1613 +#, c-format +msgid "function %s is not an aggregate" +msgstr "la funzione %s non è una funzione di aggregazione" + +#: parser/parse_type.c:83 +#, c-format +msgid "improper %%TYPE reference (too few dotted names): %s" +msgstr "riferimento %%TYPE improprio (troppi pochi nomi puntati): %s" + +#: parser/parse_type.c:105 +#, c-format +msgid "improper %%TYPE reference (too many dotted names): %s" +msgstr "riferimento %%TYPE improprio (troppi nomi puntati): %s" + +#: parser/parse_type.c:127 +#, c-format +msgid "type reference %s converted to %s" +msgstr "riferimento al tipo %s convertito in %s" + +#: parser/parse_type.c:287 +#, 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:330 +msgid "type modifiers must be simple constants or identifiers" +msgstr "i modificatori di tipo devono essere costanti o identificatori semplici" + +#: parser/parse_type.c:641 parser/parse_type.c:740 +#, c-format +msgid "invalid type name \"%s\"" +msgstr "nome di tipo \"%s\" non valido" + +#: parser/scansup.c:192 +#, c-format +msgid "identifier \"%s\" will be truncated to \"%s\"" +msgstr "l'identificativo \"%s\" sarà troncato a \"%s\"" + +#: parser/parse_cte.c:42 +#, c-format +msgid "recursive reference to query \"%s\" must not appear within its non-recursive term" +msgstr "il riferimento ricorsivo alla query \"%s\" non può figurare nel suo termine non ricorsivo" + +#: parser/parse_cte.c:44 +#, c-format +msgid "recursive reference to query \"%s\" must not appear within a subquery" +msgstr "il riferimento ricorsivo alla query \"%s\" non può figurare in una sottoquery" + +#: parser/parse_cte.c:46 +#, c-format +msgid "recursive reference to query \"%s\" must not appear within an outer join" +msgstr "il riferimento ricorsivo alla query \"%s\" non può figurare in un join esterno" + +#: parser/parse_cte.c:48 +#, c-format +msgid "recursive reference to query \"%s\" must not appear within INTERSECT" +msgstr "il riferimento ricorsivo alla query \"%s\" non può figurare in INTERSECT" + +#: parser/parse_cte.c:50 +#, c-format +msgid "recursive reference to query \"%s\" must not appear within EXCEPT" +msgstr "il riferimento ricorsivo alla query \"%s\" non può figurare in EXCEPT" + +#: parser/parse_cte.c:132 +#, c-format +msgid "WITH query name \"%s\" specified more than once" +msgstr "il nome della query WITH \"%s\" è stato specificato più di una volta" + +#: parser/parse_cte.c:259 +msgid "subquery in WITH cannot have SELECT INTO" +msgstr "la sottoquery nel WITH non può avere SELECT INTO" + +#: parser/parse_cte.c:271 +msgid "WITH clause containing a data-modifying statement must be at the top level" +msgstr "la clausola WITH contenente un'istruzione di modifica dei dati deve apparire al livello superiore" + +#: 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 "nella query ricorsiva \"%s\" la colonna %d è di tipo %s nel suo termine non ricorsivo ma %s globalmente" + +#: parser/parse_cte.c:326 +msgid "Cast the output of the non-recursive term to the correct type." +msgstr "Converti l'output del termine non ricorsivo nel tipo corretto." + +#: 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 "nella query ricorsiva \"%s\" la colonna %d ha ordinamento \"%s\" nel suo termine non ricorsivo ma \"%s\" globalmente" + +#: parser/parse_cte.c:335 +msgid "Use the COLLATE clause to set the collation of the non-recursive term." +msgstr "Usa la clausola COLLATE per impostare l'ordinamento del termine non ricorsivo." + +#: parser/parse_cte.c:426 +#, c-format +msgid "WITH query \"%s\" has %d columns available but %d columns specified" +msgstr "la query WITH \"%s\" ha %d colonne disponibili ma %d colonne specificate" + +#: parser/parse_cte.c:606 +msgid "mutual recursion between WITH items is not implemented" +msgstr "il riferimento reciproco tra elementi WITH non è implementato" + +#: parser/parse_cte.c:658 +#, c-format +msgid "recursive query \"%s\" must not contain data-modifying statements" +msgstr "la query ricorsiva \"%s\" non può contenere istruzioni di modifica dei dati" + +#: parser/parse_cte.c:666 +#, c-format +msgid "recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] recursive-term" +msgstr "la query ricorsiva \"%s\" non ha la forma termine-non-ricorsivo UNION [ALL] termine-ricorsivo" + +#: parser/parse_cte.c:710 +msgid "ORDER BY in a recursive query is not implemented" +msgstr "ORDER BY non è implementato in una query ricorsiva" + +#: parser/parse_cte.c:716 +msgid "OFFSET in a recursive query is not implemented" +msgstr "OFFSET non è implementato in una query ricorsiva" + +#: parser/parse_cte.c:722 +msgid "LIMIT in a recursive query is not implemented" +msgstr "LIMIT non è implementato in una query ricorsiva" + +#: parser/parse_cte.c:728 +msgid "FOR UPDATE/SHARE in a recursive query is not implemented" +msgstr "FOR UPDATE/SHARE non è implementato in una query ricorsiva" + +#: parser/parse_cte.c:785 +#, c-format +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" + +#: port/win32_sema.c:94 +#, c-format +msgid "could not create semaphore: error code %d" +msgstr "non è stato possibile creare il semaforo: codice errore %d" + +#: port/win32_sema.c:165 +#, c-format +msgid "could not lock semaphore: error code %d" +msgstr "non è stato possibile bloccare il semaforo: codice errore %d" + +#: port/win32_sema.c:178 +#, c-format +msgid "could not unlock semaphore: error code %d" +msgstr "non è stato possibile sbloccare il semaforo: codice errore %d" + +#: port/win32_sema.c:207 +#, c-format +msgid "could not try-lock semaphore: error code %d" +msgstr "non è stato possibile provare a bloccare il semaforo: codice errore %d" + +#: port/sysv_shmem.c:146 port/pg_shmem.c:146 +#, c-format +msgid "could not create shared memory segment: %m" +msgstr "creazione del segmento di memoria condivisa fallita: %m" + +#: port/sysv_shmem.c:147 port/pg_shmem.c:147 +#, 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)." + +#: port/sysv_shmem.c:151 port/pg_shmem.c:151 +#, 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 "" +"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. Puoi ridurre la dimensione richiesta oppure riconfigurare il kernel con uno SHMMAX più grande. Per ridurre la dimensione richiesta (attualmente %lu byte), riduci l'utilizzo di memoria condivisa di PostgreSQL, ad esempio riducendo shared_buffers o max_connections. Se la dimensione richiesta è già piccola, è possibile che sia inferiore al parametro SHMMIN del tuo kernel, nel cui caso sarebbe necessario aumentare la dimensione richiesta o riconfigurare SHMMIN.\n" +"La documentazione di PostgreSQL contiene ulteriori informazioni sulla configurazione della memoria condivisa." + +#: port/sysv_shmem.c:164 port/pg_shmem.c:164 +#, 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 "" +"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, oppure supera il parametro SHMALL del tuo kernel. Puoi ridurre la dimensione richiesta oppure riconfigurare il kernel con uno SHMALL più grande. Per ridurre la dimensione richiesta (attualmente %lu byte), riduci l'utilizzo di memoria condivisa di PostgreSQL, ad esempio riducendo shared_buffers o max_connections.\n" +"La documentazione di PostgreSQL contiene ulteriori informazioni sulla configurazione della memoria condivisa." + +#: port/sysv_shmem.c:175 port/pg_shmem.c:175 +#, 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 "" +"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. Se non puoi incrementare il limite di memoria condivisa, riduci la richiesta di memoria condivisa di PostgreSQL (attualmente %lu byte), ad esempio riducendo shared_buffers o max_connections.\n" +"La documentazione di PostgreSQL contiene ulteriori informazioni sulla configurazione della memoria condivisa." + +#: port/sysv_shmem.c:438 port/pg_shmem.c:438 +#, c-format +msgid "could not stat data directory \"%s\": %m" +msgstr "non è stato possibile ottenere informazioni sulla directory dati \"%s\": %m" + +#: port/sysv_sema.c:116 port/pg_sema.c:116 +#, c-format +msgid "could not create semaphores: %m" +msgstr "creazione dei semafori fallita: %m" + +#: port/sysv_sema.c:117 port/pg_sema.c:117 +#, c-format +msgid "Failed system call was semget(%lu, %d, 0%o)." +msgstr "La chiamata di sistema fallita era semget(%lu, %d, 0%o)." + +#: port/sysv_sema.c:121 port/pg_sema.c:121 +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 "" +"Questo errore *non* significa che è finito lo spazio su disco. Può succedere quando il limite di sistema per il massimo numero di semafori impostati (SEMMNI), oppure il massimo numero di semafori di sistema (SEMMNS), verrebbe superato. È necessario aumentare i rispettivi parametri del kernel. Alternativamente, riduci l'utilizzo di semafori di PostgreSQL riducendo il parametro max_connections.\n" +"La documentazione di PostgreSQL contiene più informazioni su come configurare il tuo sistema per PostgreSQL." + +#: port/sysv_sema.c:151 port/pg_sema.c:151 +#, 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 "Potresti dover aumentare il valore SEMVMX del tuo kernel ad almeno %d. Consulta la documentazione di PostgreSQL per ulteriori dettagli." + +#: 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 "non è stato possibile creare il segmento di memoria condivisa: %lu" + +#: port/win32_shmem.c:169 +#, c-format +msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)." +msgstr "La chiamata di sistema fallita era CreateFileMapping(size=%lu, name=%s)." + +#: port/win32_shmem.c:193 +msgid "pre-existing shared memory block is still in use" +msgstr "blocco di memoria condivisa preesistente ancora in uso" + +#: port/win32_shmem.c:194 +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 +msgid "Failed system call was DuplicateHandle." +msgstr "La chiamata di sistema fallita era DuplicateHandle." + +#: port/win32_shmem.c:225 +msgid "Failed system call was MapViewOfFileEx." +msgstr "La chiamata di sistema fallita era MapViewOfFileEx." + +#: port/win32/security.c:43 +#, c-format +msgid "could not open process token: error code %d\n" +msgstr "non è stato possibile aprire il token del processo: codice errore %d\n" + +#: port/win32/security.c:63 +#, c-format +msgid "could not get SID for Administrators group: error code %d\n" +msgstr "non è stato possibile ottenere il SID del gruppo Amministratori: codice errore %d\n" + +#: port/win32/security.c:72 +#, c-format +msgid "could not get SID for PowerUsers group: error code %d\n" +msgstr "non è stato possibile ottenere il SID del gruppo PowerUsers: codice errore %d\n" + +#: port/win32/signal.c:189 +#, c-format +msgid "could not create signal listener pipe for PID %d: error code %d" +msgstr "non è stato possibile creare la pipe di ascolto dei segnali per il PID %d: codice errore %d" + +#: 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 "non è stato possibile creare la pipe di ascolto dei segnali: codice errore %d; sto riprovando\n" + +#: port/win32/signal.c:312 +#, c-format +msgid "could not create signal dispatch thread: error code %d\n" +msgstr "non è stato possibile creare il thread per la distribuzione dei segnali: codice errore %d\n" + +#: port/win32/crashdump.c:108 +msgid "could not load dbghelp.dll, cannot write crash dump\n" +msgstr "caricamento di dbghelp.dll fallito, impossibile salvare il crash dump\n" + +#: port/win32/crashdump.c:116 +msgid "could not load required functions in dbghelp.dll, cannot write crash dump\n" +msgstr "caricamento della funzione richiesta in dbghelp.dll fallito, impossibile salvare il crash dump\n" + +#: port/win32/crashdump.c:147 +#, c-format +msgid "could not open crash dump file \"%s\" for writing: error code %u\n" +msgstr "non è stato possibile aprire il file del crash dump \"%s\" in scrittura: codice errore %u\n" + +#: port/win32/crashdump.c:154 +#, c-format +msgid "wrote crash dump to file \"%s\"\n" +msgstr "crash dump salvato nel file \"%s\"\n" + +#: port/win32/crashdump.c:156 +#, c-format +msgid "could not write crash dump to file \"%s\": error code %08x\n" +msgstr "non è stato possibile scrivere il crash dump nel file \"%s\": codice errore %08x\n" + +#: ../port/open.c:113 +msgid "sharing violation" +msgstr "violazione della condivisione" + +#: ../port/open.c:113 +msgid "lock violation" +msgstr "violazione del lock" + +#: ../port/open.c:112 +#, c-format +msgid "could not open file \"%s\": %s" +msgstr "apertura del file \"%s\" fallita: %s" + +#: ../port/open.c:114 +msgid "Continuing to retry for 30 seconds." +msgstr "Si continuerà a provare per 30 secondi" + +#: ../port/open.c:115 +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/strerror.c:25 +#, c-format +msgid "unrecognized error %d" +msgstr "errore sconosciuto %d" + +#: ../port/win32error.c:189 +#, c-format +msgid "mapped win32 error code %lu to %d" +msgstr "codice di errore win32 %lu mappato su %d" + +#: ../port/win32error.c:201 +#, c-format +msgid "unrecognized win32 error code: %lu" +msgstr "codice di errore win32 sconosciuto: %lu" + +#: ../port/dirmod.c:75 ../port/dirmod.c:88 ../port/dirmod.c:101 +#, c-format +msgid "out of memory\n" +msgstr "memoria esaurita\n" + +#: ../port/dirmod.c:283 +#, c-format +msgid "could not set junction for \"%s\": %s" +msgstr "non è stato possibile impostare la giunzione per \"%s\": %s" + +#: ../port/dirmod.c:286 +#, 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:358 +#, c-format +msgid "could not get junction for \"%s\": %s" +msgstr "non è stato possibile ottenere la giunzione per \"%s\": %s" + +#: ../port/dirmod.c:361 +#, 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:443 +#, c-format +msgid "could not open directory \"%s\": %s\n" +msgstr "apertura della directory \"%s\" fallita: %s\n" + +#: ../port/dirmod.c:480 +#, c-format +msgid "could not read directory \"%s\": %s\n" +msgstr "lettura della directory \"%s\" fallita: %s\n" + +#: ../port/dirmod.c:563 +#, 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:590 ../port/dirmod.c:607 +#, c-format +msgid "could not remove file or directory \"%s\": %s\n" +msgstr "rimozione del file o directory \"%s\" fallita: %s\n" + +#: ../port/chklocale.c:329 ../port/chklocale.c:335 +#, 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/chklocale.c:337 +msgid "Please report this to ." +msgstr "Per favore segnala questo problema a ." + +#: ../port/exec.c:125 ../port/exec.c:239 ../port/exec.c:282 +#, c-format +msgid "could not identify current directory: %s" +msgstr "identificazione della directory corrente fallita: %s" + +#: ../port/exec.c:144 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "binario non valido \"%s\"" + +#: ../port/exec.c:193 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "lettura del binario \"%s\" fallita" + +#: ../port/exec.c:200 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "programma \"%s\" da eseguire non trovato" + +#: ../port/exec.c:255 ../port/exec.c:291 +#, c-format +msgid "could not change directory to \"%s\"" +msgstr "spostamento nella directory \"%s\" fallito" + +#: ../port/exec.c:270 +#, c-format +msgid "could not read symbolic link \"%s\"" +msgstr "lettura del link simbolico \"%s\" fallita" + +#: ../port/exec.c:525 +#, c-format +msgid "child process exited with exit code %d" +msgstr "processo figlio uscito con codice di uscita %d" + +#: ../port/exec.c:529 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "processo figlio terminato da eccezione 0x%X" + +#: ../port/exec.c:538 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "processo figlio terminato da segnale %s" + +#: ../port/exec.c:541 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "processo figlio terminato da segnale %d" + +#: ../port/exec.c:545 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "processo figlio uscito con stato non riconosciuto %d" diff --git a/src/backend/po/ja.po b/src/backend/po/ja.po index 287ad2e2e6..6be912206c 100644 --- a/src/backend/po/ja.po +++ b/src/backend/po/ja.po @@ -1,10460 +1,11633 @@ # backend.po -# HOTTA Michihide , 2010. +# HOTTA Michihide , 2011. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0 beta 3\n" +"Project-Id-Version: PostgreSQL 9.1 beta 2\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-07-19 21:50+0900\n" -"PO-Revision-Date: 2011-01-15 22:36+0900\n" +"POT-Creation-Date: 2011-06-15 21:32+0900\n" +"PO-Revision-Date: 2011-06-29 23:47+0900\n" "Last-Translator: HOTTA Michihide \n" "Language-Team: jpug-doc \n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: executor/nodeSubplan.c:308 executor/nodeSubplan.c:347 -#: executor/nodeSubplan.c:962 -msgid "more than one row returned by a subquery used as an expression" -msgstr "副問い合わせで1行を超える行を返すものが式として使用されました" - -#: executor/nodeHashjoin.c:721 executor/nodeHashjoin.c:755 +#: snowball/dict_snowball.c:183 #, c-format -msgid "could not rewind hash-join temporary file: %m" -msgstr "ハッシュ結合用一時ファイルを巻き戻しできません" +msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\"" +msgstr "" +"言語\"%s\"および符号化方式\"%s\"用に使用可能なSnowball語幹抽出がありません" + +#: snowball/dict_snowball.c:206 tsearch/dict_simple.c:50 +#: tsearch/dict_ispell.c:75 +msgid "multiple StopWords parameters" +msgstr "重複するStopWordsパラメータ" + +#: snowball/dict_snowball.c:215 +msgid "multiple Language parameters" +msgstr "重複するLanguageパラメータ" -#: executor/nodeHashjoin.c:789 executor/nodeHashjoin.c:795 +#: snowball/dict_snowball.c:222 #, c-format -msgid "could not write to hash-join temporary file: %m" -msgstr "ハッシュ結合用一時ファイルを書き出せません: %m" +msgid "unrecognized Snowball parameter: \"%s\"" +msgstr "未知のSnowballパラメータ: \"%s\"" + +#: snowball/dict_snowball.c:230 +msgid "missing Language parameter" +msgstr "Languageパラメータがありません" -#: executor/nodeHashjoin.c:829 executor/nodeHashjoin.c:839 +#: main/main.c:237 #, c-format -msgid "could not read from hash-join temporary file: %m" -msgstr "ハッシュ結合用一時ファイルから読み取れません: %m" +msgid "%s: setsysinfo failed: %s\n" +msgstr "%s: setsysinfoが失敗しました: %s\n" -#: executor/execMain.c:876 +#: main/main.c:259 #, c-format -msgid "cannot change sequence \"%s\"" -msgstr "シーケンス\"%s\"を変更できません" +msgid "%s: WSAStartup failed: %d\n" +msgstr "%s: WSAStartupが失敗しました: %d\n" -#: executor/execMain.c:882 +#: main/main.c:278 #, c-format -msgid "cannot change TOAST relation \"%s\"" -msgstr "TOASTリレーション\"%s\"を変更できません" +msgid "" +"%s is the PostgreSQL server.\n" +"\n" +msgstr "" +"%sはPostgreSQLサーバです\n" +"\n" -#: executor/execMain.c:888 +#: main/main.c:279 #, c-format -msgid "cannot change view \"%s\"" -msgstr "ビュー\"%s\"を変更できません" +msgid "" +"Usage:\n" +" %s [OPTION]...\n" +"\n" +msgstr "" +"使用方法:\n" +"\" %s [オプション]...\n" +"\n" -#: executor/execMain.c:894 +#: main/main.c:280 #, c-format -msgid "cannot change relation \"%s\"" -msgstr "リレーション\"%s\"を変更できません" +msgid "Options:\n" +msgstr "オプション:\n" -#: executor/execMain.c:1319 +#: main/main.c:282 #, c-format -msgid "null value in column \"%s\" violates not-null constraint" -msgstr "列\"%s\"内のNULL値はNOT NULL制約違反です" +msgid " -A 1|0 enable/disable run-time assert checking\n" +msgstr " -A 1|0 実行時のアサート検査を有効/無効にします\n" -#: executor/execMain.c:1331 +#: main/main.c:284 #, c-format -msgid "new row for relation \"%s\" violates check constraint \"%s\"" -msgstr "リレーション\"%s\"の新しい行は検査制約\"%s\"に違反しています" +msgid " -B NBUFFERS number of shared buffers\n" +msgstr " -B NBUFFERS 共有バッファ数です\n" -#: executor/execMain.c:1544 executor/nodeLockRows.c:136 -#: executor/nodeModifyTable.c:334 executor/nodeModifyTable.c:522 -#: commands/trigger.c:2366 -msgid "could not serialize access due to concurrent update" -msgstr "同時更新のため直列化アクセスができませんでした" +#: main/main.c:285 +#, c-format +msgid " -c NAME=VALUE set run-time parameter\n" +msgstr " -c NAME=VALUE 実行時パラメータを設定します\n" -#: executor/execMain.c:2091 commands/tablecmds.c:378 -msgid "ON COMMIT can only be used on temporary tables" -msgstr "ON COMMITは一時テーブルでのみ使用できます" +#: main/main.c:286 +#, c-format +msgid " -d 1-5 debugging level\n" +msgstr " -d 1-5 デバッグレベルです\n" -#: executor/execMain.c:2101 commands/tablecmds.c:388 -msgid "cannot create temporary table within security-restricted operation" -msgstr "セキュリティー制限操作中は、一時テーブルを作成できません" +#: main/main.c:287 +#, c-format +msgid " -D DATADIR database directory\n" +msgstr " -D DATADIR データベースディレクトリです\n" -#: executor/execMain.c:2125 commands/indexcmds.c:225 commands/tablecmds.c:418 -#: commands/tablecmds.c:6746 commands/comment.c:737 commands/tablespace.c:410 -#: commands/tablespace.c:779 commands/tablespace.c:846 -#: commands/tablespace.c:951 commands/tablespace.c:1007 -#: commands/tablespace.c:1131 commands/dbcommands.c:436 -#: commands/dbcommands.c:1037 catalog/aclchk.c:702 utils/adt/dbsize.c:248 -#: utils/adt/acl.c:4134 +#: main/main.c:288 #, c-format -msgid "tablespace \"%s\" does not exist" -msgstr "テーブル空間\"%s\"は存在しません" +msgid " -e use European date input format (DMY)\n" +msgstr " -e ヨーロッパ方式の日付入力を行います(DMY)\n" -#: executor/nodeAgg.c:1717 executor/nodeWindowAgg.c:1842 +#: main/main.c:289 #, c-format -msgid "aggregate %u needs to have compatible input type and transition type" -msgstr "集約%uは入力データ型と遷移用の型間で互換性が必要です" +msgid " -F turn fsync off\n" +msgstr " -F fsyncを無効にします\n" -#: executor/spi.c:210 -msgid "transaction left non-empty SPI stack" -msgstr "トランザクションは空でないSPIスタックを残しました" +#: main/main.c:290 +#, c-format +msgid " -h HOSTNAME host name or IP address to listen on\n" +msgstr " -h HOSTNAME 接続を監視するホスト名またはIPアドレスです\n" -#: executor/spi.c:211 executor/spi.c:275 -msgid "Check for missing \"SPI_finish\" calls." -msgstr "\"SPI_finish\"呼出の抜けを確認ください" +#: main/main.c:291 +#, c-format +msgid " -i enable TCP/IP connections\n" +msgstr " -i TCP/IP接続を有効にします\n" -#: executor/spi.c:274 -msgid "subtransaction left non-empty SPI stack" -msgstr "サブトランザクションが空でないSPIスタックを残しました" +#: main/main.c:292 +#, c-format +msgid " -k DIRECTORY Unix-domain socket location\n" +msgstr " -k DIRECTORY Unixドメインソケットの場所です\n" -#: executor/spi.c:1137 -msgid "cannot open multi-query plan as cursor" -msgstr "カーソルにマルチクエリプランを開くことができません" +#: main/main.c:294 +#, c-format +msgid " -l enable SSL connections\n" +msgstr " -l SSL接続を有効にします\n" -#. translator: %s is name of a SQL command, eg INSERT -#: executor/spi.c:1142 +#: main/main.c:296 #, c-format -msgid "cannot open %s query as cursor" -msgstr "カーソルで%s問い合わせを開くことができません" +msgid " -N MAX-CONNECT maximum number of allowed connections\n" +msgstr " -N MAX-CONNECT 許容する最大接続数です\n" -#: executor/spi.c:1233 parser/analyze.c:1969 -msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" -msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHAREはサポートされていません" +#: main/main.c:297 +#, c-format +msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n" +msgstr "" +" -o OPTIONS 個々のサーバプロセスに\"OPTIONS\"を渡します(古い形式)\n" -#: executor/spi.c:1234 parser/analyze.c:1970 -msgid "Scrollable cursors must be READ ONLY." -msgstr "スクロール可能カーソルは読み取りのみでなければなりません" +#: main/main.c:298 +#, c-format +msgid " -p PORT port number to listen on\n" +msgstr " -p PORT 接続を監視するポート番号です\n" -#. translator: %s is a SQL statement name -#: executor/spi.c:1256 executor/spi.c:1846 executor/functions.c:161 +#: main/main.c:299 #, c-format -msgid "%s is not allowed in a non-volatile function" -msgstr "volatile関数以外では%sは許されません" +msgid " -s show statistics after each query\n" +msgstr " -s 各問い合わせの後に統計情報を表示します\n" -#: executor/spi.c:2142 +#: main/main.c:300 #, c-format -msgid "SQL statement \"%s\"" -msgstr "SQL文 \"%s\"" +msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n" +msgstr " -S WORK-MEM ソート用のメモリ量です(KB単位)\n" -#: executor/execUtils.c:1296 +#: main/main.c:301 #, c-format -msgid "could not create exclusion constraint \"%s\"" -msgstr "排除制約 \"%s\" を作成できませんでした" +msgid " --NAME=VALUE set run-time parameter\n" +msgstr " --NAME=VALUE 実行時パラメータを設定します\n" -#: executor/execUtils.c:1298 +#: main/main.c:302 #, c-format -msgid "Key %s conflicts with key %s." -msgstr "キー %s がキー %s と競合しています" +msgid " --describe-config describe configuration parameters, then exit\n" +msgstr " --describe-config 設定パラメータを出力し終了します\n" -#: executor/execUtils.c:1303 +#: main/main.c:303 #, c-format -msgid "conflicting key value violates exclusion constraint \"%s\"" -msgstr "重複キーの値が排除制約 \"%s\" に違反しています" +msgid " --help show this help, then exit\n" +msgstr " --help ヘルプを表示し終了します\n" -#: executor/execUtils.c:1305 +#: main/main.c:304 #, c-format -msgid "Key %s conflicts with existing key %s." -msgstr "キー %s が既存のキー %s と競合しています" +msgid " --version output version information, then exit\n" +msgstr " --version バージョン情報を出力し終了します\n" -#: executor/execUtils.c:1319 access/nbtree/nbtinsert.c:449 +#: main/main.c:306 #, c-format -msgid "failed to re-find tuple within index \"%s\"" -msgstr "インデックス \"%s\" 内で行の再検索に失敗しました" +msgid "" +"\n" +"Developer options:\n" +msgstr "" +"\n" +"開発者向けオプション:\n" -#: executor/execUtils.c:1321 access/nbtree/nbtinsert.c:451 -msgid "This may be because of a non-immutable index expression." -msgstr "これは不変でないインデックス評価式が原因である可能性があります" +#: main/main.c:307 +#, c-format +msgid " -f s|i|n|m|h forbid use of some plan types\n" +msgstr "いくつかの計画型を禁止します\n" -#: executor/execCurrent.c:66 commands/portalcmds.c:168 -#: commands/portalcmds.c:222 utils/adt/xml.c:2044 utils/adt/xml.c:2208 +#: main/main.c:308 #, c-format -msgid "cursor \"%s\" does not exist" -msgstr "カーソル\"%s\"は存在しません" +msgid "" +" -n do not reinitialize shared memory after abnormal exit\n" +msgstr " -n 異常終了後に共有メモリの再初期化を行いません\n" -#: executor/execCurrent.c:75 +#: main/main.c:309 #, c-format -msgid "cursor \"%s\" is not a SELECT query" -msgstr "カーソル\"%s\"はSELECT問い合わせではありません" +msgid " -O allow system table structure changes\n" +msgstr " -O システムテーブル構造の変更を許可します\n" -#: executor/execCurrent.c:81 +#: main/main.c:310 #, c-format -msgid "cursor \"%s\" is held from a previous transaction" -msgstr "カーソル\"%s\"は以前のトランザクションから保持されています" +msgid " -P disable system indexes\n" +msgstr " -P システムインデックスを無効にします\n" -#: executor/execCurrent.c:113 +#: main/main.c:311 #, c-format -msgid "cursor \"%s\" has multiple FOR UPDATE/SHARE references to table \"%s\"" -msgstr "" -"カーソル \"%s\" にはテーブル \"%s\" に対する複数の FOR UPDATE/SHARE参照が含ま" -"れています" +msgid " -t pa|pl|ex show timings after each query\n" +msgstr " -t pa|pl|ex 各問い合わせの後にタイミングを表示します\n" -#: executor/execCurrent.c:122 +#: main/main.c:312 #, c-format -msgid "" -"cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\"" +msgid " -T send SIGSTOP to all backend processes if one dies\n" msgstr "" -"カーソル \"%s\" はテーブル \"%s\" への FOR UPDATE/SHARE 参照を持っていません" +" -T 1つのバックエンドサーバが停止した時に全てのバックエンド" +"サーバに SIGSTOP を送信します\n" -#: executor/execCurrent.c:132 executor/execCurrent.c:178 +#: main/main.c:313 #, c-format -msgid "cursor \"%s\" is not positioned on a row" -msgstr "カーソル\"%s\"は行上に位置していません" +msgid " -W NUM wait NUM seconds to allow attach from a debugger\n" +msgstr " -W NUM デバッガを設定できるようにNUM秒待機します\n" -#: executor/execCurrent.c:165 +#: main/main.c:315 #, c-format -msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\"" -msgstr "カーソル\"%s\"はテーブル\"%s\"を単純な更新可能スキャンではありません" - -#: executor/execCurrent.c:230 executor/execQual.c:1024 msgid "" -"type of parameter %d (%s) does not match that when preparing the plan (%s)" +"\n" +"Options for single-user mode:\n" msgstr "" -"パラメータの型 %d (%s) がプラン (%s) を準備する時点と一致しません" +"\n" +"シングルユーザモード用のオプション:\n" -#: executor/execCurrent.c:242 executor/execQual.c:1035 +#: main/main.c:316 #, c-format -msgid "no value found for parameter %d" -msgstr "パラメータ%dの値がありません" +msgid " --single selects single-user mode (must be first argument)\n" +msgstr "" +" --single シングルユーザモードを選択します(最初の引数でなければなり" +"ません)\n" -#: executor/execQual.c:296 executor/execQual.c:324 executor/execQual.c:2978 -#: utils/adt/arrayfuncs.c:203 utils/adt/arrayfuncs.c:461 -#: utils/adt/arrayfuncs.c:1196 utils/adt/arrayfuncs.c:2860 -#: utils/adt/arrayfuncs.c:4540 utils/adt/array_userfuncs.c:428 +#: main/main.c:317 #, c-format -msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" -msgstr "配列の次数(%d)が上限(%d)を超えています" +msgid " DBNAME database name (defaults to user name)\n" +msgstr " DBNAME データベース(デフォルトはユーザ名です)\n" -#: executor/execQual.c:309 executor/execQual.c:337 -msgid "array subscript in assignment must not be null" -msgstr "代入における配列の添え字はNULLではいけません" +#: main/main.c:318 +#, c-format +msgid " -d 0-5 override debugging level\n" +msgstr " -d 1-5 デバッグレベルを上書きします\n" -#: executor/execQual.c:633 executor/execQual.c:3896 +#: main/main.c:319 #, c-format -msgid "attribute %d has wrong type" -msgstr "属性%dの型が間違っています" +msgid " -E echo statement before execution\n" +msgstr " -E 実行前に文を表示します\n" -#: executor/execQual.c:634 executor/execQual.c:3897 +#: main/main.c:320 #, c-format -msgid "Table has type %s, but query expects %s." -msgstr "テーブルの型は%sですが、問い合わせでは%sを想定しています。" +msgid " -j do not use newline as interactive query delimiter\n" +msgstr " -j 対話式問い合わせの区切りとして改行を使用しません\n" -#: executor/execQual.c:698 executor/execQual.c:717 executor/execQual.c:916 -#: 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:699 +#: main/main.c:321 main/main.c:326 #, 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を想定しています。" -msgstr[1] "テーブル行には%d属性ありますが、問い合わせでは%dを想定しています。" +msgid " -r FILENAME send stdout and stderr to given file\n" +msgstr "" +" -r FILENAME 標準出力と標準エラー出力を指定したファイルに送信します\n" -#: executor/execQual.c:718 executor/nodeModifyTable.c:93 +#: main/main.c:323 #, c-format -msgid "Table has type %s at ordinal position %d, but query expects %s." +msgid "" +"\n" +"Options for bootstrapping mode:\n" msgstr "" -"テーブルでは %2$d 番目の型は %1$s ですが、問い合わせでは %3$s を想定していま" -"す。" +"\n" +"初期起動用のオプション:\n" -#: executor/execQual.c:917 executor/execQual.c:1505 +#: main/main.c:324 #, c-format -msgid "Physical storage mismatch on dropped attribute at ordinal position %d." -msgstr "序数位置%dの削除された属性における物理格納方式が一致しません。" +msgid " --boot selects bootstrapping mode (must be first argument)\n" +msgstr "" +" --boot 初期起動モードを選択します(最初の引数でなければなりませ" +"ん)\n" -#: executor/execQual.c:1189 parser/parse_func.c:91 parser/parse_func.c:310 -#: parser/parse_func.c:623 +#: main/main.c:325 #, 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を超える引数を渡せません" -msgstr[1] "関数に%dを超える引数を渡せません" +msgid "" +" DBNAME database name (mandatory argument in bootstrapping mode)\n" +msgstr " DBNAME データベース名(初期起動モードでは義務的な引数)\n" -#: executor/execQual.c:1373 -msgid "functions and operators can take at most one set argument" -msgstr "関数と演算子は多くても1つの集合引数を取ることができます" +#: main/main.c:327 +#, c-format +msgid " -x NUM internal use\n" +msgstr " -x NUM 内部使用\n" -#: executor/execQual.c:1423 +#: main/main.c:329 +#, c-format msgid "" -"function returning setof record called in context that cannot accept type " -"record" +"\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" -#: executor/execQual.c:1478 executor/execQual.c:1494 executor/execQual.c:1504 -msgid "function return row and query-specified return row do not match" -msgstr "問い合わせが指定した戻り値の行と実際の関数の戻り値の行が一致しません" +#: 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 security compromise. See the documentation for\n" +"more information on how to properly start the server.\n" +msgstr "" +"PostgreSQLを\"root\"で実行することはできません。\n" +"システムセキュリティの危険防止のため非特権ユーザIDでサーバを起動しな\n" +"ければなりません。適切なサーバの起動方法に関する詳細はドキュメントを\n" +"参照してください\n" -#: executor/execQual.c:1479 +#: main/main.c:360 #, 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を想定しています。" -msgstr[1] "%d属性を持つ行が返されました。問い合わせでは%dを想定しています。" +msgid "%s: real and effective user IDs must match\n" +msgstr "%s: リアルユーザIDと実効ユーザIDは一致しなければなりません\n" -#: executor/execQual.c:1495 -#, c-format -msgid "Returned type %s at ordinal position %d, but query expects %s." +#: 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 security compromises. See the documentation for\n" +"more information on how to properly start the server.\n" msgstr "" -"序数位置%2$dの型%1$sが返されました。問い合わせでは%3$sを想定しています。" - -#: executor/execQual.c:1615 executor/execQual.c:1640 executor/execQual.c:2001 -#: executor/execQual.c:5090 executor/functions.c:652 commands/prepare.c:747 -#: utils/mmgr/portalmem.c:926 utils/fmgr/funcapi.c:60 foreign/foreign.c:271 -msgid "set-valued function called in context that cannot accept a set" -msgstr "このコンテキストで集合値の関数は集合を受け付けられません" - -#: executor/execQual.c:1748 executor/execQual.c:2161 -msgid "table-function protocol for materialize mode was not followed" -msgstr "materializeモードではテーブル関数プロトコルに従いません" +"PostgreSQLを管理者権限を持つユーザで実行することはできません。\n" +"システムセキュリティの危険防止のため非特権ユーザIDでサーバを起動しな\n" +"ければなりません。適切なサーバの起動方法に関する詳細はドキュメントを\n" +"参照してください\n" -#: executor/execQual.c:1768 executor/execQual.c:2168 +#: main/main.c:388 #, c-format -msgid "unrecognized table-function returnMode: %d" -msgstr "テーブル関数のreturnModeが不明です: %d" - -#: executor/execQual.c:2088 -msgid "function returning set of rows cannot return null value" -msgstr "行の集合を返す関数はNULL値を返すことはできません" +msgid "%s: invalid effective UID: %d\n" +msgstr "%s: 実効UIDが無効です: %d\n" -#: executor/execQual.c:2328 -msgid "IS DISTINCT FROM does not support set arguments" -msgstr "IS DISTINCT FROM<は集合引数をサポートしません" +#: main/main.c:401 +#, c-format +msgid "%s: could not determine user name (GetUserName failed)\n" +msgstr "%s: ユーザ名を決定できませんでした(GetUserNameが失敗しました)\n" -#: executor/execQual.c:2403 -msgid "op ANY/ALL (array) does not support set arguments" -msgstr "op ANY/ALL (array)は集合引数をサポートしません" +#: regex/regc_pg_locale.c:258 utils/adt/selfuncs.c:4969 +#, +msgid "could not determine which collation to use for regular expression" +msgstr "正規表現の際にどの照合規則を使うべきかを決定できませんでした" -#: executor/execQual.c:2725 commands/analyze.c:1481 -msgid "could not convert row type" -msgstr "行の型に変換できませんでした" +#: regex/regc_pg_locale.c:259 catalog/heap.c:560 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/varlena.c:1315 utils/adt/like.c:212 +#: utils/adt/selfuncs.c:4853 utils/adt/selfuncs.c:4970 +#: commands/indexcmds.c:931 commands/view.c:145 +msgid "Use the COLLATE clause to set the collation explicitly." +msgstr "照合順序を明示するには COLLATE 句を使います" -#: executor/execQual.c:2956 -msgid "cannot merge incompatible arrays" -msgstr "互換性がない配列をマージできません" +#: access/gin/ginscan.c:401 +#, +msgid "old GIN indexes do not support whole-index scans nor searches for nulls" +msgstr "古い GIN インデックスはインデックス全体のスキャンや NULL の検索を" +"サポートしていません" -#: executor/execQual.c:2957 +#: access/gin/ginscan.c:402 #, 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:2998 executor/execQual.c:3025 -#: utils/adt/arrayfuncs.c:496 -msgid "" -"multidimensional arrays must have array expressions with matching dimensions" -msgstr "多次元配列は次数に合った配列式を持たなければなりません" - -#: executor/execQual.c:3540 -msgid "NULLIF does not support set arguments" -msgstr "NULLIFは集合引数をサポートしません" +msgid "To fix this, do REINDEX INDEX \"%s\"." +msgstr "修復するには REINDEX INDEX \"%s\" をおこなってください" -#: executor/execQual.c:3770 utils/adt/domains.c:128 +#: access/gin/ginentrypage.c:101 access/nbtree/nbtinsert.c:531 +#: access/nbtree/nbtsort.c:483 #, c-format -msgid "domain %s does not allow null values" -msgstr "ドメイン%sはNULL値を許しません" +msgid "index row size %lu exceeds maximum %lu for index \"%s\"" +msgstr "" +"インデックス \"%3$s\" でインデックス行のサイズ %1$lu が最大値 %2$lu を" +"超えています" -#: executor/execQual.c:3799 utils/adt/domains.c:164 +#: access/index/indexam.c:161 catalog/objectaddress.c:391 +#: commands/tablecmds.c:220 commands/tablecmds.c:2485 +#: commands/indexcmds.c:1542 #, c-format -msgid "value for domain %s violates check constraint \"%s\"" -msgstr "ドメイン%sの値が検査制約\"%s\"に違反しています" - -#: executor/execQual.c:4267 optimizer/util/clauses.c:560 -#: parser/parse_agg.c:160 -msgid "aggregate function calls cannot be nested" -msgstr "集約関数の呼び出しを入れ子にすることはできません" +msgid "\"%s\" is not an index" +msgstr "\"%s\"はインデックスではありません" -#: executor/execQual.c:4305 optimizer/util/clauses.c:634 -#: parser/parse_agg.c:207 -msgid "window function calls cannot be nested" -msgstr "ウィンドウ関数の呼び出しを入れ子にすることはできません" +#: access/transam/xlog.c:1328 +#, c-format +msgid "could not create archive status file \"%s\": %m" +msgstr "アーカイブステータスファイル\"%s\"を作成できませんでした: %m" -#: executor/execQual.c:4505 -msgid "target type is not an array" -msgstr "対照型は配列ではありません" +#: access/transam/xlog.c:1336 +#, c-format +msgid "could not write archive status file \"%s\": %m" +msgstr "アーカイブステータスファイル\\\"%s\\\"を書き出せませんでした: %m" -#: executor/execQual.c:4618 +#: access/transam/xlog.c:1791 access/transam/xlog.c:10337 +#: replication/walsender.c:1003 replication/walreceiver.c:506 #, c-format -msgid "ROW() column has type %s instead of type %s" -msgstr "ROW()の列は型%2$sではなく型%1$sを持ちます" +msgid "could not seek in log file %u, segment %u to offset %u: %m" +msgstr "" +"ログファイル%u、セグメント%uをオフセット%uまでシークできませんでした: %m" -#: executor/execQual.c:4749 utils/adt/arrayfuncs.c:3280 -#: utils/adt/rowtypes.c:913 +#: access/transam/xlog.c:1808 replication/walreceiver.c:523 #, c-format -msgid "could not identify a comparison function for type %s" -msgstr "型%sの比較関数を識別できません" +msgid "could not write to log file %u, segment %u at offset %u, length %lu: %m" +msgstr "" +"ログファイル%u、セグメント%uをオフセット%u、長さ%luで書き出せませんでした: %m" -#: executor/nodeWindowAgg.c:1233 -msgid "frame starting offset must not be null" -msgstr "フレームポインタのオフセットは NULL であってはなりません" +#: access/transam/xlog.c:2010 +#, c-format +msgid "updated min recovery point to %X/%X" +msgstr "最小リカバリポイントを %X/%X に更新しました" -#: executor/nodeWindowAgg.c:1246 -msgid "frame starting offset must not be negative" -msgstr "フレーム開始オフセットは負数であってはなりません" +#: 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" -#: executor/nodeWindowAgg.c:1259 -msgid "frame ending offset must not be null" -msgstr "フレーム終了オフセットは NULL であってはなりません" +#: 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 postmaster/postmaster.c:3690 +#: storage/smgr/md.c:285 storage/file/copydir.c:172 +#, c-format +msgid "could not create file \"%s\": %m" +msgstr "ファイル\"%s\"を作成できませんでした: %m" -#: executor/nodeWindowAgg.c:1272 -msgid "frame ending offset must not be negative" -msgstr "フレーム終了オフセットは負数であってはなりません" +#: access/transam/xlog.c:2408 access/transam/xlog.c:2541 +#: access/transam/xlog.c:4449 access/transam/xlog.c:4512 +#: postmaster/postmaster.c:3700 postmaster/postmaster.c:3710 +#: storage/file/copydir.c:197 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" -#: executor/nodeLimit.c:251 -msgid "OFFSET must not be negative" -msgstr "OFFSET は負数であってはなりません" +#: 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 "ファイル\"%s\"をfsyncできませんでした: %m" -#: executor/nodeLimit.c:278 -msgid "LIMIT must not be negative" -msgstr "LIMIT は負数であってはなりません" +#: access/transam/xlog.c:2421 access/transam/xlog.c:2553 +#: access/transam/xlog.c:4523 storage/file/copydir.c:211 commands/copy.c:1329 +#, c-format +msgid "could not close file \"%s\": %m" +msgstr "ファイル\"%s\"をクローズできませんでした: %m" -#: executor/nodeModifyTable.c:83 -msgid "Query has too many columns." -msgstr "問い合わせの列が多すぎます" +#: access/transam/xlog.c:2494 access/transam/xlog.c:4166 +#: access/transam/xlog.c:4260 access/transam/xlog.c:4416 +#: replication/basebackup.c:725 storage/smgr/md.c:539 storage/smgr/md.c:796 +#: storage/file/copydir.c:165 storage/file/copydir.c:255 +#: 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" -#: executor/nodeModifyTable.c:110 +#: 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 "Query provides a value for a dropped column at ordinal position %d." -msgstr "クエリーで %d 番目に削除されるカラムの値を指定しています。" +msgid "could not read file \"%s\": %m" +msgstr "ファイル\"%s\"を読み込めませんでした: %m" -#: executor/nodeModifyTable.c:118 -msgid "Query has too few columns." -msgstr "問い合わせの列が少なすぎます" +#: access/transam/xlog.c:2525 +#, c-format +msgid "not enough data in file \"%s\"" +msgstr "ファイル\"%s\"内のデータが不十分です" -#. translator: %s is a SQL statement name -#: executor/functions.c:154 +#: access/transam/xlog.c:2644 #, c-format -msgid "%s is not allowed in a SQL function" -msgstr "SQL関数では%sは許されません" +msgid "" +"could not link file \"%s\" to \"%s\" (initialization of log file %u, segment " +"%u): %m" +msgstr "" +"ファイル\"%s\"を\"%s\"にリンクできませんでした(ログファイル%u、セグメント%uの" +"初期化): %m" -#: executor/functions.c:259 +#: access/transam/xlog.c:2656 #, c-format msgid "" -"could not determine actual result type for function declared to return type %" -"s" -msgstr "戻り値型%sとして宣言された関数の実際の結果型を決定できません" +"could not rename file \"%s\" to \"%s\" (initialization of log file %u, " +"segment %u): %m" +msgstr "" +"ファイル\"%s\"の名前を\"%s\"に変更できませんでした(ログファイル%u、セグメン" +"ト%uの初期化): %m" -#: executor/functions.c:298 +#: access/transam/xlog.c:2839 replication/walreceiver.c:480 #, c-format -msgid "could not determine actual type of argument declared %s" -msgstr "%s都宣言された引数の型を決定できません" +msgid "could not close log file %u, segment %u: %m" +msgstr "ログファイル%u、セグメント%uをクローズできませんでした: %m" -#: executor/functions.c:923 +#: 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 "SQL function \"%s\" statement %d" -msgstr "SQL関数\"%s\"の行番号 %d" +msgid "could not stat file \"%s\": %m" +msgstr "ファイル\"%s\"のstatができませんでした: %m" -#: executor/functions.c:936 catalog/pg_proc.c:861 +#: 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 "SQL function \"%s\"" -msgstr "SQL関数\"%s\"" +msgid "could not remove file \"%s\": %m" +msgstr "ファイル\"%s\"を削除できませんでした: %m" -#: executor/functions.c:946 +#: access/transam/xlog.c:3055 #, c-format -msgid "SQL function \"%s\" during startup" -msgstr "SQL関数\"%s\"の起動中" +msgid "archive file \"%s\" has wrong size: %lu instead of %lu" +msgstr "アーカイブファイル\"%s\"のサイズが不正です: %lu。%luを想定" -#: executor/functions.c:1091 executor/functions.c:1127 -#: executor/functions.c:1139 executor/functions.c:1245 -#: executor/functions.c:1277 executor/functions.c:1306 +#: access/transam/xlog.c:3064 #, c-format -msgid "return type mismatch in function declared to return %s" -msgstr "%sを返すと宣言された関数において戻り値型が一致しません" +msgid "restored log file \"%s\" from archive" +msgstr "ログファイル\"%s\"をアーカイブからリストアしました" -#: executor/functions.c:1093 -msgid "" -"Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING." -msgstr "" -"関数の最後のステートメントは SELECT もしくは RETURNING 付きのINSERT/UPDATE/" -"DELETE のいずれかでなければなりません" +#: access/transam/xlog.c:3114 +#, c-format +msgid "could not restore file \"%s\" from archive: return code %d" +msgstr "アーカイブからファイル\"%s\"をリストアできませんでした: 戻りコード %d" -#: executor/functions.c:1129 -msgid "Final statement must return exactly one column." -msgstr "最後のステートメントは正確に1列を返さなければなりません" +#: access/transam/xlog.c:3229 +#, c-format +msgid "%s \"%s\": return code %d" +msgstr "%s \"%s\": リターンコード %d" -#: executor/functions.c:1141 +#: access/transam/xlog.c:3339 access/transam/xlog.c:3522 #, c-format -msgid "Actual return type is %s." -msgstr "実際の戻り値型は%sです" +msgid "could not open transaction log directory \"%s\": %m" +msgstr "トランザクションログディレクトリ\"%s\"をオープンできませんでした: %m" -#: executor/functions.c:1247 -msgid "Final statement returns too many columns." -msgstr "最後のステートメントが返す列が多すぎます" +#: access/transam/xlog.c:3393 +#, c-format +msgid "recycled transaction log file \"%s\"" +msgstr "トランザクションログファイル\"%s\"を回収しました" -#: executor/functions.c:1279 +#: access/transam/xlog.c:3409 #, c-format -msgid "Final statement returns %s instead of %s at column %d." -msgstr "最後のステートメントが列 %3$d で %2$s ではなく %1$s を返しました" - -#: executor/functions.c:1308 -msgid "Final statement returns too few columns." -msgstr "最後のステートメントが返す列が少なすぎます" +msgid "removing transaction log file \"%s\"" +msgstr "トランザクションログファイル\"%s\"を削除しました" -#: executor/functions.c:1356 +#: access/transam/xlog.c:3432 #, c-format -msgid "return type %s is not supported for SQL functions" -msgstr "戻り値型%sはSQL関数でサポートされていません" - -#: executor/nodeMergejoin.c:1586 -msgid "RIGHT JOIN is only supported with merge-joinable join conditions" -msgstr "RIGHT JOINはマージ結合可能な結合条件でのみサポートされています" - -#: executor/nodeMergejoin.c:1606 optimizer/path/joinpath.c:1072 -msgid "FULL JOIN is only supported with merge-joinable join conditions" -msgstr "FULL JOINはマージ結合可能な結合条件でのみサポートされています" - -#: rewrite/rewriteManip.c:1009 -msgid "conditional utility statements are not implemented" -msgstr "条件付きのユーティリティ文は実装されていません" +msgid "could not rename old transaction log file \"%s\": %m" +msgstr "古いトランザクションログファイル \"%s\" をリネームできませんでした: %m" -#: rewrite/rewriteManip.c:1021 rewrite/rewriteHandler.c:432 -#: parser/parse_utilcmd.c:1808 parser/parse_utilcmd.c:1878 -msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" -msgstr "条件付きのUNION/INTERSECT/EXCEPT文は実装されていません" +#: access/transam/xlog.c:3444 +#, c-format +msgid "could not remove old transaction log file \"%s\": %m" +msgstr "古いトランザクションログファイル \"%s\" を削除できませんでした: %m" -#: rewrite/rewriteManip.c:1174 -msgid "WHERE CURRENT OF on a view is not implemented" -msgstr "ビューに対するWHERE CURRENT OFは実装されていません" +#: access/transam/xlog.c:3482 access/transam/xlog.c:3492 +#, c-format +msgid "required WAL directory \"%s\" does not exist" +msgstr "WAL ディレクトリ\"%s\"は存在しません" -#: rewrite/rewriteRemove.c:62 rewrite/rewriteDefine.c:687 -#: rewrite/rewriteDefine.c:749 commands/comment.c:910 +#: access/transam/xlog.c:3498 #, c-format -msgid "rule \"%s\" for relation \"%s\" does not exist" -msgstr "リレーション\"%2$s\"のルール\"%1$s\"は存在しません" +msgid "creating missing WAL directory \"%s\"" +msgstr "見つからなかった WAL ディレクトリ \"%s\" を作成しています ... " -#: rewrite/rewriteRemove.c:66 +#: access/transam/xlog.c:3501 #, c-format -msgid "rule \"%s\" for relation \"%s\" does not exist, skipping" -msgstr "リレーション\"%2$s\"のルール\"%1$s\"は存在しません。省略します" +msgid "could not create missing directory \"%s\": %m" +msgstr "ディレクトリ\"%s\"を作成できませんでした: %m" -#: rewrite/rewriteDefine.c:108 rewrite/rewriteDefine.c:756 +#: access/transam/xlog.c:3535 #, c-format -msgid "rule \"%s\" for relation \"%s\" already exists" -msgstr "リレーション\"%2$s\"のルール\"%1$s\"はすでに存在します" +msgid "removing transaction log backup history file \"%s\"" +msgstr "トランザクションログバックアップ履歴ファイル\"%s\"を削除しています" -#: rewrite/rewriteDefine.c:252 commands/tablecmds.c:3329 +#: access/transam/xlog.c:3655 #, c-format -msgid "\"%s\" is not a table or view" -msgstr "\"%s\"はテーブルやビューではありません" +msgid "incorrect hole size in record at %X/%X" +msgstr "%X/%Xのレコードのホールサイズが不正です" -#: rewrite/rewriteDefine.c:258 tcop/utility.c:92 commands/tablecmds.c:761 -#: commands/tablecmds.c:1093 commands/tablecmds.c:1985 -#: commands/tablecmds.c:3347 commands/tablecmds.c:3376 -#: commands/tablecmds.c:4778 commands/trigger.c:155 commands/trigger.c:1069 +#: access/transam/xlog.c:3668 #, c-format -msgid "permission denied: \"%s\" is a system catalog" -msgstr "権限がありません: \"%s\"はシステムカタログです" +msgid "incorrect total length in record at %X/%X" +msgstr "%X/%Xのレコード内の全長が不正です" -#: rewrite/rewriteDefine.c:282 -msgid "rule actions on OLD are not implemented" -msgstr "OLDに対するルールアクションは実装されていません" +#: access/transam/xlog.c:3681 +#, c-format +msgid "incorrect resource manager data checksum in record at %X/%X" +msgstr "%X/%Xのレコード内のリソースマネージャデータのチェックサムが不正です" -#: rewrite/rewriteDefine.c:283 -msgid "Use views or triggers instead." -msgstr "代わりにビューかトリガを使用してください。" +#: access/transam/xlog.c:3750 access/transam/xlog.c:3786 +#, c-format +msgid "invalid record offset at %X/%X" +msgstr "%X/%Xのレコードオフセットが無効です" -#: rewrite/rewriteDefine.c:287 -msgid "rule actions on NEW are not implemented" -msgstr "NEWに対するルールアクションは実装されていません" +#: access/transam/xlog.c:3794 +#, c-format +msgid "contrecord is requested by %X/%X" +msgstr "%X/%Xではcontrecordが必要です" -#: rewrite/rewriteDefine.c:288 -msgid "Use triggers instead." -msgstr "代わりにトリガを使用してください。" +#: access/transam/xlog.c:3809 +#, c-format +msgid "invalid xlog switch record at %X/%X" +msgstr "%X/%Xのxlog切り替えレコードが無効です" -#: rewrite/rewriteDefine.c:301 -msgid "INSTEAD NOTHING rules on SELECT are not implemented" -msgstr "SELECTに対するINSTEAD NOTHINGルールは実装されていません" +#: access/transam/xlog.c:3817 +#, c-format +msgid "record with zero length at %X/%X" +msgstr "%X/%Xのレコードのサイズは0です" -#: rewrite/rewriteDefine.c:302 -msgid "Use views instead." -msgstr "代わりにビューを使用してください" +#: access/transam/xlog.c:3826 +#, c-format +msgid "invalid record length at %X/%X" +msgstr "%X/%Xのレコード長が無効です" -#: rewrite/rewriteDefine.c:310 -msgid "multiple actions for rules on SELECT are not implemented" -msgstr "SELECTに対するルールにおける複数のアクションは実装されていません" +#: access/transam/xlog.c:3833 +#, c-format +msgid "invalid resource manager ID %u at %X/%X" +msgstr "%2$X/%3$XのリソースマネージャID %1$uが無効です" -#: rewrite/rewriteDefine.c:322 -msgid "rules on SELECT must have action INSTEAD SELECT" -msgstr "SELECTに対するルールはINSTEAD SELECTアクションを持たなければなりません" +#: access/transam/xlog.c:3846 access/transam/xlog.c:3862 +#, c-format +msgid "record with incorrect prev-link %X/%X at %X/%X" +msgstr "直前のリンク%1$X/%2$Xが不正なレコードが%3$X/%4$Xにあります" -#: rewrite/rewriteDefine.c:330 -msgid "event qualifications are not implemented for rules on SELECT" -msgstr "SELECTに対するルールではイベント条件は実装されていません" +#: access/transam/xlog.c:3891 +#, c-format +msgid "record length %u at %X/%X too long" +msgstr "%2$X/%3$Xのレコード長%1$uが大きすぎます" -#: rewrite/rewriteDefine.c:355 +#: access/transam/xlog.c:3931 #, c-format -msgid "\"%s\" is already a view" -msgstr "\"%s\"はすでにビューです" +msgid "there is no contrecord flag in log file %u, segment %u, offset %u" +msgstr "ログファイル%u、セグメント%u、オフセット%uにcontrecordがありません" -#: rewrite/rewriteDefine.c:379 +#: access/transam/xlog.c:3941 #, c-format -msgid "view rule for \"%s\" must be named \"%s\"" -msgstr "\"%s\"用のビューのルールの名前は\"%s\"でなければなりません" +msgid "invalid contrecord length %u in log file %u, segment %u, offset %u" +msgstr "" +"ログファイル%2$u、セグメント%3$u、オフセット%4$uのcontrecordの長さ%1$uが無効" +"です" -#: rewrite/rewriteDefine.c:404 +#: access/transam/xlog.c:4031 #, c-format -msgid "could not convert table \"%s\" to a view because it is not empty" -msgstr "空ではありませんのでテーブル\"%s\"をビューに変換できません" +msgid "invalid magic number %04X in log file %u, segment %u, offset %u" +msgstr "" +"ログファイル%2$u、セグメント%3$u、オフセット%4$uのマジック番号%1$04Xは無効で" +"す" -#: rewrite/rewriteDefine.c:411 +#: access/transam/xlog.c:4038 access/transam/xlog.c:4084 #, c-format -msgid "could not convert table \"%s\" to a view because it has triggers" -msgstr "トリガを持っているためテーブル\"%s\"をビューに変換できませんでした" +msgid "invalid info bits %04X in log file %u, segment %u, offset %u" +msgstr "" +"ログファイル %2$u のセグメント %3$u、オフセット %4$u の情報ビット %1$04X は無" +"効です" -#: rewrite/rewriteDefine.c:413 -msgid "" -"In particular, the table cannot be involved in any foreign key relationships." -msgstr "具体的には、テーブルに外部キー関係を持たせることはできません" +#: 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 ファイルは異なるデータベースシステム由来のものです" -#: rewrite/rewriteDefine.c:418 +#: access/transam/xlog.c:4061 #, c-format -msgid "could not convert table \"%s\" to a view because it has indexes" +msgid "" +"WAL file database system identifier is %s, pg_control database system " +"identifier is %s." msgstr "" -"インデックスを持っているためテーブル\"%s\"をビューに変換できませんでした" +"WAL ファイルにおけるデータベースシステムの識別子は %s で、pg_control における" +"データベースシステムの識別子は %s です。" -#: rewrite/rewriteDefine.c:424 -#, c-format -msgid "could not convert table \"%s\" to a view because it has child tables" -msgstr "子テーブルを持っているためテーブル\"%s\"をビューに変換できませんでした" +#: access/transam/xlog.c:4069 +msgid "Incorrect XLOG_SEG_SIZE in page header." +msgstr "ページヘッダ内のXLOG_SEG_SIZEが不正です。" -#: rewrite/rewriteDefine.c:451 -msgid "cannot have multiple RETURNING lists in a rule" -msgstr "ルールでは複数のRETURNING行を持つことができません" +#: access/transam/xlog.c:4076 +msgid "Incorrect XLOG_BLCKSZ in page header." +msgstr "ページヘッダ内のXLOG_BLCKSZが不正です。" -#: rewrite/rewriteDefine.c:456 -msgid "RETURNING lists are not supported in conditional rules" -msgstr "条件付のルールではRETURNINGリストはサポートされません" +#: access/transam/xlog.c:4092 +#, c-format +msgid "unexpected pageaddr %X/%X in log file %u, segment %u, offset %u" +msgstr "" +"ログファイル%3$u、セグメント%4$u、オフセット%5$uのページアドレス%1$X/%2$Xは想" +"定外です" -#: rewrite/rewriteDefine.c:460 -msgid "RETURNING lists are not supported in non-INSTEAD rules" -msgstr "INSTEAD以外のルールではRETURNINGはサポートされません" +#: access/transam/xlog.c:4104 +#, c-format +msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u" +msgstr "" +"ログファイル%2$u、セグメント%3$u、オフセット%4$uの時系列ID%1$uは想定外です" -#: rewrite/rewriteDefine.c:539 -msgid "SELECT rule's target list has too many entries" -msgstr "SELECTルールの対象リストの項目が多すぎます" +#: 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 "" +"ログファイル%3$u、セグメント%4$u、オフセット%5$uの時系列ID %1$u(%2$uの後)は順" +"序に従っていません" -#: rewrite/rewriteDefine.c:540 -msgid "RETURNING list has too many entries" -msgstr "RETURNINGリストの項目が多すぎます" +#: access/transam/xlog.c:4195 +#, c-format +msgid "syntax error in history file: %s" +msgstr "履歴ファイル内の構文エラー: %s" -#: rewrite/rewriteDefine.c:556 -msgid "cannot convert relation containing dropped columns to view" -msgstr "削除された列を持つリレーションをビューに変換できません" +#: access/transam/xlog.c:4196 +msgid "Expected a numeric timeline ID." +msgstr "数字の時系列IDを想定しました。" -#: rewrite/rewriteDefine.c:561 +#: access/transam/xlog.c:4201 #, c-format -msgid "SELECT rule's target entry %d has different column name from \"%s\"" -msgstr "SELECTルールの対象項目%dは\"%s\"と異なる列名を持っています" +msgid "invalid data in history file: %s" +msgstr "履歴ファイル内の無効なデータ: %s" -#: rewrite/rewriteDefine.c:567 -#, c-format -msgid "SELECT rule's target entry %d has different type from column \"%s\"" -msgstr "SELECTルールの対象項目%dは\"%s\"と異なる列型を持っています" +#: access/transam/xlog.c:4202 +msgid "Timeline IDs must be in increasing sequence." +msgstr "時系列IDは昇順の並びでなければなりません" -#: rewrite/rewriteDefine.c:569 +#: access/transam/xlog.c:4215 #, c-format -msgid "RETURNING list's entry %d has different type from column \"%s\"" -msgstr "RETURNINGリスト項目%dは\"%s\"と異なる列型を持っています" +msgid "invalid data in history file \"%s\"" +msgstr "履歴ファイル\"%s\"内に無効なデータがありました" -#: rewrite/rewriteDefine.c:584 +#: access/transam/xlog.c:4216 +msgid "Timeline IDs must be less than child timeline's ID." +msgstr "時系列IDは副時系列IDより小さくなければなりません。" + +#: access/transam/xlog.c:4302 #, c-format -msgid "SELECT rule's target entry %d has different size from column \"%s\"" -msgstr "SELECTルールの対象項目%dは\"%s\"と異なる列のサイズを持っています" +msgid "new timeline %u is not a child of database system timeline %u" +msgstr "新しい時系列 %u はデータベースシステムの時系列 %u の系列ではありません" -#: rewrite/rewriteDefine.c:586 +#: access/transam/xlog.c:4315 #, c-format -msgid "RETURNING list's entry %d has different size from column \"%s\"" -msgstr "RETURNINGリスト項目%dは\"%s\"と異なる列のサイズを持っています" +msgid "new target timeline is %u" +msgstr "新しい対象時系列は %u です" -#: rewrite/rewriteDefine.c:594 -msgid "SELECT rule's target list has too few entries" -msgstr "SELECTルールの対象リストの項目が少なすぎます" +#: access/transam/xlog.c:4540 +#, c-format +msgid "could not link file \"%s\" to \"%s\": %m" +msgstr "ファイル\"%s\"から\"%s\"へのリンクができませんでした: %m" -#: rewrite/rewriteDefine.c:595 -msgid "RETURNING list has too few entries" -msgstr "RETURNINGリストの項目が少なすぎます" +#: 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" -#: rewrite/rewriteHandler.c:495 -msgid "cannot have RETURNING lists in multiple rules" -msgstr "複数ルールではRETURNINGリストを持つことはできません" +#: access/transam/xlog.c:4629 +#, c-format +msgid "could not create control file \"%s\": %m" +msgstr "制御ファイル\"%s\"を作成できませんでした: %m" -#: rewrite/rewriteHandler.c:796 rewrite/rewriteHandler.c:814 +#: access/transam/xlog.c:4640 access/transam/xlog.c:4865 #, c-format -msgid "multiple assignments to same column \"%s\"" -msgstr "同じ列\"%s\"に複数の代入があります" +msgid "could not write to control file: %m" +msgstr "制御ファイルを書き出せませんでした: %m" -#: rewrite/rewriteHandler.c:952 catalog/heap.c:2280 +#: access/transam/xlog.c:4646 access/transam/xlog.c:4871 #, c-format -msgid "column \"%s\" is of type %s but default expression is of type %s" -msgstr "列\"%s\"の型は%sですが、デフォルト式の型は%sです" +msgid "could not fsync control file: %m" +msgstr "制御ファイルをfsyncできませんでした: %m" -#: rewrite/rewriteHandler.c:957 commands/prepare.c:369 catalog/heap.c:2285 -#: parser/parse_node.c:370 parser/parse_target.c:475 parser/parse_target.c:734 -#: parser/parse_target.c:744 -msgid "You will need to rewrite or cast the expression." -msgstr "式を書き換えるかキャストしなければなりません" +#: access/transam/xlog.c:4651 access/transam/xlog.c:4876 +#, c-format +msgid "could not close control file: %m" +msgstr "制御ファイルをクローズできませんでした: %m" -#: rewrite/rewriteHandler.c:1417 rewrite/rewriteHandler.c:1740 +#: access/transam/xlog.c:4669 access/transam/xlog.c:4854 #, c-format -msgid "infinite recursion detected in rules for relation \"%s\"" -msgstr "リレーション\"%s\"のルールで無限再帰を検出しました" +msgid "could not open control file \"%s\": %m" +msgstr "制御ファイル\"%s\"をオープンできませんでした: %m" -#: rewrite/rewriteHandler.c:1778 +#: access/transam/xlog.c:4675 #, c-format -msgid "cannot perform INSERT RETURNING on relation \"%s\"" -msgstr "リレーション\"%s\"へのINSERT RETURNINGを行うことはできません" +msgid "could not read from control file: %m" +msgstr "制御ファイルを読み取れませんでした: %m" -#: rewrite/rewriteHandler.c:1780 -msgid "" -"You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." -msgstr "RETURNING句を持つ無条件のON INSERT DO INSTEADルールが必要です。" +#: 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 "データベースファイルがサーバと互換性がありません" -#: rewrite/rewriteHandler.c:1785 +#: access/transam/xlog.c:4689 #, c-format -msgid "cannot perform UPDATE RETURNING on relation \"%s\"" -msgstr "リレーション\"%s\"へのUPDATE RETURNINGを行うことはできません" +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)でコンパイルされています。" -#: rewrite/rewriteHandler.c:1787 +#: access/transam/xlog.c:4693 msgid "" -"You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." -msgstr "RETURNING句を持つ無条件のON UPDATE DO INSTEADルールが必要です。" +"This could be a problem of mismatched byte ordering. It looks like you need " +"to initdb." +msgstr "" +"これはバイトオーダの不整合問題になり得ます。initdbしなければならない\n" +"ようです。" -#: rewrite/rewriteHandler.c:1792 +#: access/transam/xlog.c:4698 #, c-format -msgid "cannot perform DELETE RETURNING on relation \"%s\"" -msgstr "リレーション\"%s\"へのDELETE RETURNINGを行うことはできません" - -#: rewrite/rewriteHandler.c:1794 msgid "" -"You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." -msgstr "RETURNING句を持つ無条件のON DELETE DO INSTEADルールが必要です。" - -#: rewrite/rewriteHandler.c:1892 -msgid "cannot insert into a view" -msgstr "ビューへの挿入はできません" +"The database cluster was initialized with PG_CONTROL_VERSION %d, but the " +"server was compiled with PG_CONTROL_VERSION %d." +msgstr "" +"データベースクラスタはPG_CONTROL_VERSION %d で初期化されましたが、サーバは " +"PG_CONTROL_VERSION %d でコンパイルされています。" -#: rewrite/rewriteHandler.c:1893 -msgid "You need an unconditional ON INSERT DO INSTEAD rule." -msgstr "無条件のON INSERT DO INSTEADルールが必要です。" - -#: rewrite/rewriteHandler.c:1898 -msgid "cannot update a view" -msgstr "ビューの更新はできません" - -#: rewrite/rewriteHandler.c:1899 -msgid "You need an unconditional ON UPDATE DO INSTEAD rule." -msgstr "無条件のON UPDATE DO INSTEADルールが必要です。" +#: 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が必要のようです" -#: rewrite/rewriteHandler.c:1904 -msgid "cannot delete from a view" -msgstr "ビューからの削除はできません" +#: access/transam/xlog.c:4712 +msgid "incorrect checksum in control file" +msgstr "制御ファイル内のチェックサムが不正です" -#: rewrite/rewriteHandler.c:1905 -msgid "You need an unconditional ON DELETE DO INSTEAD rule." -msgstr "無条件のON DELETE DO INSTEADルールが必要です。" +#: 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 "" +"データベースクラスタは CATALOG_VERSION_NO %d で初期化されましたが、サーバは " +"CATALOG_VERSION_NO %d でコンパイルされています。" -#. translator: %s is name of a SQL command, eg CREATE -#: tcop/utility.c:242 -msgid "cannot execute %s in a read-only transaction" +#: 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 "" -"リードオンリーのトランザクションでは %s を実行できません" +"データベースクラスタは MAXALIGN %d で初期化されましたが、サーバは MAXALIGN %" +"d でコンパイルされています。" -#. translator: %s is name of a SQL command, eg CREATE -#: tcop/utility.c:261 -msgid "cannot execute %s during recovery" -msgstr "リカバリー中は %s を実行できません" +#: access/transam/xlog.c:4736 +msgid "" +"The database cluster appears to use a different floating-point number format " +"than the server executable." +msgstr "" +"データベースクラスタはサーバ実行ファイルと異なる浮動小数点書式を使用している" +"ようです。" -#. translator: %s is name of a SQL command, eg PREPARE -#: tcop/utility.c:279 +#: access/transam/xlog.c:4741 #, c-format -msgid "cannot execute %s within security-restricted operation" -msgstr "セキュリティー制限操作の中では %s を実行できません" +msgid "" +"The database cluster was initialized with BLCKSZ %d, but the server was " +"compiled with BLCKSZ %d." +msgstr "" +"データベースクラスタは BLCKSZ %d で初期化されましたが、サーバは BLCKSZ %d で" +"コンパイルされています。" -#: tcop/utility.c:1128 -msgid "must be superuser to do CHECKPOINT" -msgstr "CHECKPOINTを実行するにはスーパーユーザでなければなりません" +#: 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 が必要そうです" -#: tcop/fastpath.c:110 tcop/fastpath.c:492 tcop/fastpath.c:622 +#: access/transam/xlog.c:4748 #, c-format -msgid "invalid argument size %d in function call message" -msgstr "関数呼び出しメッセージ内の引数サイズ%dが無効です" +msgid "" +"The database cluster was initialized with RELSEG_SIZE %d, but the server was " +"compiled with RELSEG_SIZE %d." +msgstr "" +"データベースクラスタは RELSEG_SIZE %d で初期化されましたが、サーバは " +"RELSEG_SIZE %d でコンパイルされています。" -#: tcop/fastpath.c:181 tcop/fastpath.c:561 tcop/postgres.c:1698 -#: access/common/printtup.c:278 +#: access/transam/xlog.c:4755 #, c-format -msgid "unsupported format code: %d" -msgstr "未サポートの書式コード: %d" +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 でコンパイルされています。" -#: tcop/fastpath.c:222 catalog/aclchk.c:3554 catalog/aclchk.c:4304 +#: access/transam/xlog.c:4762 #, c-format -msgid "function with OID %u does not exist" -msgstr "OID %uの関数は存在しません" +msgid "" +"The database cluster was initialized with XLOG_SEG_SIZE %d, but the server " +"was compiled with XLOG_SEG_SIZE %d." +msgstr "" +"データベースクラスタは XLOG_SEG_SIZE %d で初期化されましたが、サーバは " +"XLOG_SEG_SIZE %d でコンパイルされています。" -#: tcop/fastpath.c:291 tcop/postgres.c:342 tcop/postgres.c:365 -#: commands/copy.c:515 commands/copy.c:534 commands/copy.c:538 -msgid "unexpected EOF on client connection" -msgstr "クライアント接続に想定外のEOFがありました" +#: 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 "" +"データベースクラスタは NAMEDATALEN %d で初期化されましたが、サーバは " +"NAMEDATALEN %d でコンパイルされています。" -#: tcop/fastpath.c:304 tcop/postgres.c:951 tcop/postgres.c:1261 -#: tcop/postgres.c:1542 tcop/postgres.c:1984 tcop/postgres.c:2352 -#: tcop/postgres.c:2433 +#: access/transam/xlog.c:4776 +#, c-format msgid "" -"current transaction is aborted, commands ignored until end of transaction " -"block" +"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 でコンパイルされています。" -#: tcop/fastpath.c:332 +#: access/transam/xlog.c:4783 #, c-format -msgid "fastpath function call: \"%s\" (OID %u)" -msgstr "近道関数呼び出し: \"%s\"(OID %u))" +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 でコンパイルされています。" -#: tcop/fastpath.c:359 parser/parse_expr.c:1315 -msgid "argument to pg_get_expr() must come from system catalogs" -msgstr "pg_get_expr() への引数はシステムカタログ由来のものでなければなりません" +#: 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 "" +"データベースクラスタは HAVE_INT64_TIMESTAMP なしで初期化されましたが、サーバ" +"は HAVE_INT64_TIMESTAMP でコンパイルされています。" -#: tcop/fastpath.c:418 tcop/postgres.c:1121 tcop/postgres.c:1408 -#: tcop/postgres.c:1825 tcop/postgres.c:2042 -#, c-format -msgid "duration: %s ms" -msgstr "期間: %s ミリ秒" +#: 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 "" +"データベースクラスタは HAVE_INT64_TIMESTAMP で初期化されましたが、サーバは " +"HAVE_INT64_TIMESTAMP なしでコンパイルされています。" -#: tcop/fastpath.c:422 -#, c-format -msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" -msgstr "期間: %s ミリ秒 近道関数呼び出し: \"%s\" (OID %u)" +#: 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 付きでコンパイルされています。" -#: tcop/fastpath.c:460 tcop/fastpath.c:587 -#, c-format -msgid "function call message contains %d arguments but function requires %d" -msgstr "関数呼び出しメッセージには%d引数ありましたが、関数には%d必要です" +#: 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 なしでコンパイルされています。" -#: tcop/fastpath.c:468 -#, c-format -msgid "function call message contains %d argument formats but %d arguments" -msgstr "関数呼び出しメッセージには%dの引数書式がありましたが、引数は%dでした" +#: 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 付きでコンパイルされています。" -#: tcop/fastpath.c:555 tcop/fastpath.c:638 -#, c-format -msgid "incorrect binary data format in function argument %d" -msgstr "関数引数%dのバイナリデータ書式が不正です" +#: 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 なしでコンパイルされています。" -#: tcop/pquery.c:670 +#: access/transam/xlog.c:5156 #, c-format -msgid "bind message has %d result formats but query has %d columns" -msgstr "バインドメッセージは%dの結果書式がありましたが、問い合わせは%d列でした" +msgid "could not write bootstrap transaction log file: %m" +msgstr "" +"ブートストラップ・トランザクションのログファイルを書き出せませんでした: %m" -#: tcop/pquery.c:748 tcop/pquery.c:1371 commands/portalcmds.c:329 +#: access/transam/xlog.c:5162 #, c-format -msgid "portal \"%s\" cannot be run" -msgstr "ポータル\"%s\"を実行できません" - -#: tcop/pquery.c:978 -msgid "cursor can only scan forward" -msgstr "カーゾルは前方へのスキャンしかできません" +msgid "could not fsync bootstrap transaction log file: %m" +msgstr "" +"ブートストラップ・トランザクションログファイルをfsyncできませんでした: %m" -#: tcop/pquery.c:979 -msgid "Declare it with SCROLL option to enable backward scan." +#: access/transam/xlog.c:5167 +#, c-format +msgid "could not close bootstrap transaction log file: %m" msgstr "" -"後方スキャンを有効にするためにはSCROLLオプションを付けて宣言してください。" +"ブートストラップ・トランザクションログファイルをクローズできませんでした: %m" -#: tcop/postgres.c:392 tcop/postgres.c:404 tcop/postgres.c:415 -#: tcop/postgres.c:427 tcop/postgres.c:4094 +#: access/transam/xlog.c:5234 #, c-format -msgid "invalid frontend message type %d" -msgstr "フロントエンドメッセージ種類%dが無効です" +msgid "could not open recovery command file \"%s\": %m" +msgstr "リカバリコマンドファイル \"%s\" をオープンできませんでした: %m" -#: tcop/postgres.c:892 +#: access/transam/xlog.c:5250 #, c-format -msgid "statement: %s" -msgstr "文: %s" +msgid "restore_command = '%s'" +msgstr "restore_command = '%s'" -#: tcop/postgres.c:1126 +#: access/transam/xlog.c:5257 #, c-format -msgid "duration: %s ms statement: %s" -msgstr "期間: %s ミリ秒 文: %s" +msgid "recovery_end_command = '%s'" +msgstr "recovery_end_command = '%s'" -#: tcop/postgres.c:1176 +#: access/transam/xlog.c:5264 #, c-format -msgid "parse %s: %s" -msgstr "解析 %s: %s" +msgid "archive_cleanup_command = '%s'" +msgstr "archive_cleanup_command = '%s'" -#: tcop/postgres.c:1234 -msgid "cannot insert multiple commands into a prepared statement" -msgstr "準備された文に複数のコマンドを挿入できません" +#: access/transam/xlog.c:5272 access/transam/xlog.c:5361 +#: access/transam/xlog.c:5370 utils/misc/guc.c:5305 commands/extension.c:525 +#: commands/extension.c:533 +#, c-format +msgid "parameter \"%s\" requires a Boolean value" +msgstr "パラメータ\"%s\"はboolean値が必要です" -#: tcop/postgres.c:1301 commands/prepare.c:121 parser/parse_param.c:293 +#: access/transam/xlog.c:5274 #, c-format -msgid "could not determine data type of parameter $%d" -msgstr "パラメータ$%dのデータ型が決定できません" +msgid "pause_at_recovery_target = '%s'" +msgstr "pause_at_recovery_target = '%s'" -#: tcop/postgres.c:1413 +#: access/transam/xlog.c:5287 #, c-format -msgid "duration: %s ms parse %s: %s" -msgstr "期間: %s ミリ秒 解析%s : %s" +msgid "recovery_target_timeline is not a valid number: \"%s\"" +msgstr "recovery_target_timelineが無効な番号です: \"%s\"" -#: tcop/postgres.c:1459 +#: access/transam/xlog.c:5292 #, c-format -msgid "bind %s to %s" -msgstr "バインド%s: %s" +msgid "recovery_target_timeline = %u" +msgstr "recovery_target_timeline = %u" -#: tcop/postgres.c:1478 tcop/postgres.c:2332 -msgid "unnamed prepared statement does not exist" -msgstr "無名の準備された文が存在しません" +#: access/transam/xlog.c:5295 +msgid "recovery_target_timeline = latest" +msgstr "recovery_target_timeline = latest" -#: tcop/postgres.c:1520 +#: access/transam/xlog.c:5303 #, c-format -msgid "bind message has %d parameter formats but %d parameters" -msgstr "バインドメッセージは%dパラメータ書式ありましたがパラメータは%dでした" +msgid "recovery_target_xid is not a valid number: \"%s\"" +msgstr "recovery_target_xidが無効な番号です: \"%s\"" -#: tcop/postgres.c:1526 +#: access/transam/xlog.c:5306 #, c-format -msgid "" -"bind message supplies %d parameters, but prepared statement \"%s\" requires %" -"d" -msgstr "" -"バインドメッセージは%dパラメータを提供しましたが、準備された文\"%s\"では%d必" -"要でした" +msgid "recovery_target_xid = %u" +msgstr "recovery_target_xid = %u" -#: tcop/postgres.c:1691 +#: access/transam/xlog.c:5330 #, c-format -msgid "incorrect binary data format in bind parameter %d" -msgstr "バインドパラメータ%dにおいてバイナリデータ書式が不正です" +msgid "recovery_target_time = '%s'" +msgstr "recovery_target_time = '%s'" -#: tcop/postgres.c:1830 +#: access/transam/xlog.c:5347 #, c-format -msgid "duration: %s ms bind %s%s%s: %s" -msgstr "期間: %s ミリ秒 バインド %s%s%s: %s" +msgid "recovery_target_name is too long (maximum %d characters)" +msgstr "" -#: tcop/postgres.c:1878 tcop/postgres.c:2419 +#: access/transam/xlog.c:5350 #, c-format -msgid "portal \"%s\" does not exist" -msgstr "ポータル\"%s\"は存在しません" +msgid "recovery_target_name = '%s'" +msgstr "recovery_target_name = '%s'" -#: tcop/postgres.c:1963 +#: access/transam/xlog.c:5363 #, c-format -msgid "%s %s%s%s: %s" -msgstr "%s %s%s%s: %s" +msgid "recovery_target_inclusive = %s" +msgstr "recovery_target_inclusive = %s" -#: tcop/postgres.c:1965 tcop/postgres.c:2050 -msgid "execute fetch from" -msgstr "取り出し実行" +#: access/transam/xlog.c:5372 +#, c-format +msgid "standby_mode = '%s'" +msgstr "standby_mode = '%s'" -#: tcop/postgres.c:1966 tcop/postgres.c:2051 -msgid "execute" -msgstr "実行" +#: access/transam/xlog.c:5378 +#, c-format +msgid "primary_conninfo = '%s'" +msgstr "primary_conninfo = '%s'" -#: tcop/postgres.c:2047 +#: access/transam/xlog.c:5385 #, c-format -msgid "duration: %s ms %s %s%s%s: %s" -msgstr "期間: %s ミリ秒 %s %s%s%s: %s" +msgid "trigger_file = '%s'" +msgstr "trigger_file = '%s'" -#: tcop/postgres.c:2173 +#: access/transam/xlog.c:5390 #, c-format -msgid "prepare: %s" -msgstr "準備: %s" +msgid "unrecognized recovery parameter \"%s\"" +msgstr "リカバリパラメータ \"%s\"が不明です" -#: tcop/postgres.c:2236 +#: access/transam/xlog.c:5401 #, c-format -msgid "parameters: %s" -msgstr "パラメータ: %s" +msgid "" +"recovery command file \"%s\" specified neither primary_conninfo nor " +"restore_command" +msgstr "" +"リカバリコマンドファイル \"%s\" で primary_conninfo と restore_command のいず" +"れも指定されていません" -#: tcop/postgres.c:2255り -msgid "abort reason: recovery conflict" -msgstr "異常終了の理由:リカバリが衝突したため" +#: 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 サブディレクトリを poll して(定期的に監視し" +"て)、そこにファイルが置かれたかどうかを調べます。" -#: tcop/postgres.c:2271 -msgid "User was holding shared buffer pin for too long." -msgstr "ユーザが共有バッファ・ピンを長く保持し過ぎていました" +#: 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 を指定しなければなりません" -#: tcop/postgres.c:2274 -msgid "User was holding a relation lock for too long." -msgstr "ユーザリレーションのロックを長く保持し過ぎていました" +#: access/transam/xlog.c:5429 +#, c-format +msgid "recovery target timeline %u does not exist" +msgstr "リカバリ対象時系列%uが存在しません" -#: tcop/postgres.c:2277 -msgid "User was or might have been using tablespace that must be dropped." -msgstr "削除されるべきテーブルスペースをユーザが使っていました(もしくはその可能性がありました)。" +#: access/transam/xlog.c:5559 +msgid "archive recovery complete" +msgstr "アーカイブリカバリが完了しました" -#: tcop/postgres.c:2280 -msgid "User query might have needed to see row versions that must be removed." -msgstr "削除されるべきバージョンの行をユーザクエリが参照しなければならなかった可能性がありました。" +#: access/transam/xlog.c:5677 +#, c-format +msgid "recovery stopping after commit of transaction %u, time %s" +msgstr "リカバリがトランザクション%uのコミット、時刻%sの後に停止しました" -#: tcop/postgres.c:2283 storage/ipc/standby.c:507 -msgid "User transaction caused buffer deadlock with recovery." -msgstr "リカバリ時にユーザのトランザクションがバッファのデッドロックを引き起こしました。" +#: access/transam/xlog.c:5682 +#, c-format +msgid "recovery stopping before commit of transaction %u, time %s" +msgstr "リカバリがトランザクション%uのコミット、時刻%sの前に停止しました" -#: tcop/postgres.c:2286 -msgid "User was connected to a database that must be dropped." -msgstr "削除されるべきデータベースにユーザが接続していました。" +#: access/transam/xlog.c:5690 +#, c-format +msgid "recovery stopping after abort of transaction %u, time %s" +msgstr "リカバリがトランザクション%uのアボート、時刻%sの後に停止しました" -#: tcop/postgres.c:2620 -msgid "terminating connection because of crash of another server process" -msgstr "他のサーバプロセスがクラッシュしたため接続を終了しています" +#: access/transam/xlog.c:5695 +#, c-format +msgid "recovery stopping before abort of transaction %u, time %s" +msgstr "リカバリがトランザクション%uのアボート、時刻%sの前に停止しました" -#: tcop/postgres.c:2621 -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 "" -"他のサーバプロセスが異常終了し共有メモリが破損した可能性がありましたので、\n" -"postmasterはこのサーバプロセスに対し、現在のトランザクションをロールバック\n" -"し終了するよう指示しました。" +#: access/transam/xlog.c:5704 +#, c-format +msgid "recovery stopping at restore point \"%s\", time %s" +msgstr "リカバリが時刻 %2$s に復元ポイント \"%1$s\" で停止しました" -#: tcop/postgres.c:2625 tcop/postgres.c:2957 -msgid "" -"In a moment you should be able to reconnect to the database and repeat your " -"command." -msgstr "この後、データベースに再接続し、コマンドを繰り返さなければなりません。" +#: access/transam/xlog.c:5732 +#, +msgid "recovery has paused" +msgstr "リカバリはすでに停止されています" -#: tcop/postgres.c:2729 -msgid "floating-point exception" -msgstr "浮動小数点例外" +#: access/transam/xlog.c:5733 +msgid "Execute pg_xlog_replay_resume() to continue." +msgstr "pg_xlog_replay_resume() を動かして処理を継続してください" + +#: 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: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 "リカバリ制御関数を実行できるのはリカバリ中のみです" -#: tcop/postgres.c:2730 +#: access/transam/xlog.c:5918 +#, 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." +"hot standby is not possible because %s = %d is a lower setting than on the " +"master server (its value was %d)" msgstr "" -"無効な浮動小数点操作が通知されました。おそらくこれは、範囲外の結果や0割りな\n" -"どの無効な操作を意味しています。" +"%s = %d がマスターサーバの設定値(%d)より小さいので、ホットスタンバイは利用" +"できません" -#: tcop/postgres.c:2897 -msgid "terminating autovacuum process due to administrator command" -msgstr "管理者コマンドにより自動バキュームを終了しています" +#: access/transam/xlog.c:5940 +msgid "WAL was generated with wal_level=minimal, data may be missing" +msgstr "" +"wal_level=minimal で WAL が生成されました。データがない場合があります。" -#: tcop/postgres.c:2901 tcop/postgres.c:2906 tcop/postgres.c:2955 -msgid "terminating connection due to conflict with recovery" -msgstr "リカバリで競合が発生したため、接続を終了しています" +#: 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 にした場合です。" -#: tcop/postgres.c:2911 -msgid "terminating connection due to administrator command" -msgstr "管理者コマンドにより接続を終了しています" +#: 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\" になっていなかったので、ホット" +"スタンバイを使用できません" -#: tcop/postgres.c:2926 -msgid "canceling authentication due to timeout" -msgstr "タイムアウトにより認証処理をキャンセルしています" +#: 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\" にするか、またはここでホットスタンバ" +"イを無効にしてください。" -#: tcop/postgres.c:2935 -msgid "canceling statement due to statement timeout" -msgstr "ステートメントのタイムアウトによりステートメントをキャンセルしています" +#: access/transam/xlog.c:6000 +msgid "control file contains invalid data" +msgstr "制御ファイル内に無効なデータがあります" -#: tcop/postgres.c:2944 -msgid "canceling autovacuum task" -msgstr "自動バキューム作業をキャンセルしています" +#: access/transam/xlog.c:6004 +#, c-format +msgid "database system was shut down at %s" +msgstr "データベースシステムは %s にシャットダウンしました" -#: tcop/postgres.c:2962 storage/ipc/standby.c:506 -msgid "canceling statement due to conflict with recovery" -msgstr "リカバリーで競合が発生したためステートメントをキャンセルしています" +#: access/transam/xlog.c:6008 +#, c-format +msgid "database system was shut down in recovery at %s" +msgstr "データベースシステムがリカバリ中に %s でシャットダウンしました" -#: tcop/postgres.c:2978 -msgid "canceling statement due to user request" -msgstr "ユーザからの要求により文をキャンセルしています" +#: access/transam/xlog.c:6012 +#, c-format +msgid "database system shutdown was interrupted; last known up at %s" +msgstr "" +"データベースシステムのシャットダウンが中断されました:今回は %s までは到達しま" +"した" -#: tcop/postgres.c:3023 -msgid "stack depth limit exceeded" -msgstr "スタック長制限を越えました" +#: access/transam/xlog.c:6016 +#, c-format +msgid "database system was interrupted while in recovery at %s" +msgstr "データベースシステムはリカバリ中に %s で中断されました" -#: tcop/postgres.c:3024 +#: access/transam/xlog.c:6018 msgid "" -"Increase the configuration parameter \"max_stack_depth\", after ensuring the " -"platform's stack depth limit is adequate." +"This probably means that some data is corrupted and you will have to use the " +"last backup for recovery." msgstr "" -"プラットフォームのスタック長上限に合うことを確認した後に、設定パラメータ" -"\"max_stack_depth\"を増やしてください。" +"これはおそらくデータ破損の可能性があり、リカバリのために直前のバックアップを" +"使用しなければならないことを意味します。" -#: tcop/postgres.c:3040 +#: access/transam/xlog.c:6022 #, c-format -msgid "\"max_stack_depth\" must not exceed %ldkB" -msgstr "\"max_stack_depth\"は%ldkBを越えてはいけません" +msgid "database system was interrupted while in recovery at log time %s" +msgstr "データベースシステムはログ時間%sにリカバリ中に中断されました" -#: tcop/postgres.c:3042 +#: access/transam/xlog.c:6024 msgid "" -"Increase the platform's stack depth limit via \"ulimit -s\" or local " -"equivalent." +"If this has occurred more than once some data might be corrupted and you " +"might need to choose an earlier recovery target." msgstr "" -"プラットフォームのスタック長を\"ulimit -s\"(システムに合わせてください)を使" -"用して増加してください" +"これが何回も発生する場合、データが破損している可能性があります。これ以前の状" +"態までリカバリーで戻してやらないといけないかもしれません。" -#: tcop/postgres.c:3334 postmaster/postmaster.c:675 bootstrap/bootstrap.c:272 +#: access/transam/xlog.c:6028 #, c-format -msgid "--%s requires a value" -msgstr "--%sには値が必要です" +msgid "database system was interrupted; last known up at %s" +msgstr "データベースシステムは中断されました: 今回は %s までは到達しています" -#: tcop/postgres.c:3339 postmaster/postmaster.c:680 bootstrap/bootstrap.c:277 +#: access/transam/xlog.c:6077 #, c-format -msgid "-c %s requires a value" -msgstr "-c %sは値が必要です" +msgid "requested timeline %u is not a child of database system timeline %u" +msgstr "要求された時系列%uはデータベースシステムの時系列%uの系列ではありません" -#: tcop/postgres.c:3365 -msgid "invalid command-line arguments for server process" -msgstr "サーバプロセス用のコマンドラインオプションが無効です" +#: access/transam/xlog.c:6095 +msgid "entering standby mode" +msgstr "スタンバイモードに入ります" -#: tcop/postgres.c:3366 tcop/postgres.c:3372 +#: access/transam/xlog.c:6098 #, c-format -msgid "Try \"%s --help\" for more information." -msgstr "詳細は\"%s --help\"を実行してください。" +msgid "starting point-in-time recovery to XID %u" +msgstr "XID %u に対してポイントインタイムリカバリを開始しています" -#: tcop/postgres.c:3370 +#: access/transam/xlog.c:6102 #, c-format -msgid "%s: invalid command-line arguments" -msgstr "%s: コマンドライン引数が無効です" +msgid "starting point-in-time recovery to %s" +msgstr "%s に対してポイントインタイムリカバリを開始しています" -#: tcop/postgres.c:3466 +#: access/transam/xlog.c:6106 #, c-format -msgid "%s: no database nor user name specified" -msgstr "%s: データベース名もユーザ名も指定されていません" +msgid "starting point-in-time recovery to \"%s\"" +msgstr "\"%s\" に対してポイントインタイムリカバリを開始しています" -#: tcop/postgres.c:4004 -#, c-format -msgid "invalid CLOSE message subtype %d" -msgstr "CLOSEメッセージのサブタイプ%dが無効です" +#: access/transam/xlog.c:6110 +msgid "starting archive recovery" +msgstr "アーカイブリカバリを開始しています" -#: tcop/postgres.c:4037 +#: access/transam/xlog.c:6132 access/transam/xlog.c:6172 #, c-format -msgid "invalid DESCRIBE message subtype %d" -msgstr "DESCRIBEメッセージのサブタイプ%dが無効です" +msgid "checkpoint record is at %X/%X" +msgstr "%X/%Xにおけるチェックポイントレコードです" -#: tcop/postgres.c:4238 commands/tablecmds.c:642 commands/user.c:902 -#: commands/user.c:903 commands/trigger.c:832 commands/trigger.c:848 -#: commands/trigger.c:860 catalog/dependency.c:912 catalog/dependency.c:913 -#: catalog/dependency.c:919 catalog/dependency.c:920 catalog/dependency.c:931 -#: catalog/dependency.c:932 utils/adt/xml.c:1363 utils/adt/xml.c:1364 -#: utils/adt/xml.c:1370 utils/adt/xml.c:1441 utils/misc/guc.c:4959 -#: utils/misc/guc.c:5227 utils/fmgr/dfmgr.c:381 storage/lmgr/deadlock.c:942 -#: storage/lmgr/deadlock.c:943 nodes/print.c:85 -#, c-format -msgid "%s" -msgstr "%s" +#: access/transam/xlog.c:6146 +#, +msgid "could not find redo location referenced by checkpoint record" +msgstr "" +"チェックポイントレコードが参照している redo 位置を見つけられませんでした" -#: tcop/postgres.c:4268 +#: access/transam/xlog.c:6147 access/transam/xlog.c:6154 #, c-format msgid "" -"disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%" -"s" +"If you are not restoring from a backup, try removing the file \"%s/" +"backup_label\"." msgstr "" -"接続を切断: セッション期間: %d:%02d:%02d.%03d ユーザ=%s データベース=%s ホス" -"ト=%s%s%s" - -#: commands/schemacmds.c:82 commands/schemacmds.c:288 -#, c-format -msgid "unacceptable schema name \"%s\"" -msgstr "スキーマ名\"%s\"は受け付けられません" +"バックアップの順序を変更していない場合は、ファイル \"%s/backup_label\" を削除" +"してください" -#: commands/schemacmds.c:83 commands/schemacmds.c:289 -msgid "The prefix \"pg_\" is reserved for system schemas." -msgstr "接頭辞\"pg_\"はシステムスキーマ用に予約されています" +#: access/transam/xlog.c:6153 +msgid "could not locate required checkpoint record" +msgstr "要求チェックポイント位置へ移動できませんでした" -#: commands/schemacmds.c:178 commands/comment.c:799 -msgid "schema name cannot be qualified" -msgstr "スキーマ名を修飾することはできません" +#: access/transam/xlog.c:6182 access/transam/xlog.c:6197 +msgid "could not locate a valid checkpoint record" +msgstr "有効なチェックポイントに移動できませんでした" -#: commands/schemacmds.c:190 commands/schemacmds.c:264 -#: commands/schemacmds.c:335 commands/comment.c:806 catalog/namespace.c:340 -#: catalog/namespace.c:2307 catalog/namespace.c:2346 catalog/namespace.c:2393 -#: catalog/namespace.c:3312 catalog/aclchk.c:673 catalog/aclchk.c:1051 -#: utils/adt/acl.c:3760 +#: access/transam/xlog.c:6191 #, c-format -msgid "schema \"%s\" does not exist" -msgstr "スキーマ\"%s\"は存在しません" +msgid "using previous checkpoint record at %X/%X" +msgstr "%X/%Xにおけるチェックポイントレコードの前を使用しています" -#: commands/schemacmds.c:196 +#: access/transam/xlog.c:6206 #, c-format -msgid "schema \"%s\" does not exist, skipping" -msgstr "スキーマ\"%s\"は存在しません。省略します" +msgid "redo record is at %X/%X; shutdown %s" +msgstr "REDOレコードは%X/%X シャットダウン %s" -#: commands/schemacmds.c:272 catalog/pg_namespace.c:50 +#: access/transam/xlog.c:6210 #, c-format -msgid "schema \"%s\" already exists" -msgstr "スキーマ\"%s\"はすでに存在します" +msgid "next transaction ID: %u/%u; next OID: %u" +msgstr "次のトランザクションID: %u/%u 次のOID: %u" -#: commands/define.c:67 commands/define.c:222 commands/define.c:254 -#: commands/define.c:282 +#: access/transam/xlog.c:6214 #, c-format -msgid "%s requires a parameter" -msgstr "%sはパラメータが必要です" +msgid "next MultiXactId: %u; next MultiXactOffset: %u" +msgstr "次のMultiXactId: %u 次のMultiXactOffset: %u" -#: commands/define.c:108 commands/define.c:119 commands/define.c:189 -#: commands/define.c:207 +#: access/transam/xlog.c:6217 #, c-format -msgid "%s requires a numeric value" -msgstr "%sは数値が必要です" +msgid "oldest unfrozen transaction ID: %u, in database %u" +msgstr "データベース %2$u 内で最古の未凍結トランザクション ID: %1$u" -#: commands/define.c:175 -#, c-format -msgid "%s requires a Boolean value" -msgstr "パラメータ\"%s\"はboolean値が必要です" +#: access/transam/xlog.c:6221 +msgid "invalid next transaction ID" +msgstr "次のトランザクションIDが無効です" -#: commands/define.c:236 -#, c-format -msgid "argument of %s must be a name" -msgstr "%sの引数は名前でなければなりません" +#: access/transam/xlog.c:6240 +msgid "invalid redo in checkpoint record" +msgstr "チェックポイントレコード内のREDOが無効です" -#: commands/define.c:266 -#, c-format -msgid "argument of %s must be a type name" -msgstr "%sの引数は型名でなければなりません" +#: access/transam/xlog.c:6251 +msgid "invalid redo record in shutdown checkpoint" +msgstr "シャットダウン・チェックポイントにおけるREDOレコードが無効です" -#: commands/define.c:291 -#, c-format -msgid "%s requires an integer value" -msgstr "%sは整数値が必要です" +#: access/transam/xlog.c:6281 +msgid "" +"database system was not properly shut down; automatic recovery in progress" +msgstr "" +"データベースシステムは適切にシャットダウンされませんでした。自動リカバリを" +"行っています" -#: commands/define.c:312 -#, c-format -msgid "invalid argument for %s: \"%s\"" -msgstr "%sの引数が無効です: \"%s\"" +#: access/transam/xlog.c:6353 +msgid "initializing for hot standby" +msgstr "ホットスタンバイのための初期化を行っています" -#: commands/foreigncmds.c:132 commands/foreigncmds.c:141 +#: access/transam/xlog.c:6481 #, c-format -msgid "option \"%s\" not found" -msgstr "オプション \"%s\" が見つかりません" +msgid "redo starts at %X/%X" +msgstr "%X/%XのREDOを開始します" -#: commands/foreigncmds.c:151 +#: access/transam/xlog.c:6596 #, c-format -msgid "option \"%s\" provided more than once" -msgstr "オプション \"%s\" が2回以上指定されました" +msgid "redo done at %X/%X" +msgstr "%X/%XのREDOが終わりました" -#: commands/foreigncmds.c:209 commands/foreigncmds.c:217 +#: access/transam/xlog.c:6601 access/transam/xlog.c:8178 #, c-format -msgid "permission denied to change owner of foreign-data wrapper \"%s\"" -msgstr "外部データラッパー \"%s\" の所有者を変更する権限がありません" +msgid "last completed transaction was at log time %s" +msgstr "最後に完了したトランザクションはログ時刻%sでした" -#: commands/foreigncmds.c:211 -msgid "Must be superuser to change owner of a foreign-data wrapper." -msgstr "スーパーユーザのみが外部データラッパーの所有者を変更できます" +#: access/transam/xlog.c:6609 +msgid "redo is not required" +msgstr "REDOは必要ありません" -#: commands/foreigncmds.c:219 -msgid "The owner of a foreign-data wrapper must be a superuser." -msgstr "外部データラッパーの所有者はスーパーユーザでなければなりません" +#: access/transam/xlog.c:6657 +msgid "requested recovery stop point is before consistent recovery point" +msgstr "" +"要求されたリカバリ停止ポイントが、対応するリカバリポイントより前にあります" -#: commands/foreigncmds.c:228 commands/foreigncmds.c:452 -#: commands/foreigncmds.c:553 foreign/foreign.c:90 -#, c-format -msgid "foreign-data wrapper \"%s\" does not exist" -msgstr "外部データラッパー \"%s\" は存在しません" +#: 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 "" +"pg_start_backup() を使ったオンラインバックアップは pg_stop_backup() で" +"終了する必要があり、またその時点までのすべての WAL はリカバリにおいて" +"利用可能でなければなりません" + +#: access/transam/xlog.c:6677 +msgid "WAL ends before consistent recovery point" +msgstr "WAL が対応するリカバリポイントより前で終了します" -#: commands/foreigncmds.c:270 commands/foreigncmds.c:723 -#: commands/foreigncmds.c:813 commands/foreigncmds.c:1089 -#: foreign/foreign.c:179 +#: access/transam/xlog.c:6699 #, c-format -msgid "server \"%s\" does not exist" -msgstr "サーバー \"%s\" は存在しません" +msgid "selected new timeline ID: %u" +msgstr "選択された新しいタイムラインID: %u" -#: commands/foreigncmds.c:347 +#: access/transam/xlog.c:6941 #, c-format -msgid "permission denied to create foreign-data wrapper \"%s\"" -msgstr "外部データラッパー \"%s\" を作成する権限がありません" +msgid "consistent recovery state reached at %X/%X" +msgstr "%X/%X でリカバリー状態の整合が取れました" -#: commands/foreigncmds.c:349 -msgid "Must be superuser to create a foreign-data wrapper." -msgstr "テーブル空間を作成するにはスーパーユーザでなければなりません" +#: access/transam/xlog.c:7107 +msgid "invalid primary checkpoint link in control file" +msgstr "制御ファイル内のプライマリチェックポイントリンクが無効です" -#: commands/foreigncmds.c:360 -#, c-format -msgid "foreign-data wrapper \"%s\" already exists" -msgstr "外部データラッパー \"%s\" はすでに存在します" +#: access/transam/xlog.c:7111 +msgid "invalid secondary checkpoint link in control file" +msgstr "制御ファイル内のセカンダリチェックポイントリンクが無効です" -#: commands/foreigncmds.c:442 -#, c-format -msgid "permission denied to alter foreign-data wrapper \"%s\"" -msgstr "外部データラッパー \"%s\" を変更する権限がありません" +#: access/transam/xlog.c:7115 +msgid "invalid checkpoint link in backup_label file" +msgstr "backup_labelファイル内のチェックポイントリンクが無効です" -#: commands/foreigncmds.c:444 -msgid "Must be superuser to alter a foreign-data wrapper." -msgstr "外部データラッパーを変更するにはスーパーユーザでなければなりません" +#: access/transam/xlog.c:7129 +msgid "invalid primary checkpoint record" +msgstr "プライマリチェックポイントレコードが無効です" -#: commands/foreigncmds.c:472 -msgid "" -"changing the foreign-data wrapper validator can cause the options for " -"dependent objects to become invalid" -msgstr "" -"外部データラッパーのバリデータ(検証用関数)を変更すると、それに依存するオプ" -"ションが無効になる場合があります" +#: access/transam/xlog.c:7133 +msgid "invalid secondary checkpoint record" +msgstr "セカンダリチェックポイントレコードが無効です" -#: commands/foreigncmds.c:544 -#, c-format -msgid "permission denied to drop foreign-data wrapper \"%s\"" -msgstr "外部データラッパー \"%s\" を削除する権限がありません" +#: access/transam/xlog.c:7137 +msgid "invalid checkpoint record" +msgstr "チェックポイントレコードが無効です" -#: commands/foreigncmds.c:546 -msgid "Must be superuser to drop a foreign-data wrapper." -msgstr "外部データラッパーを削除するにはスーパーユーザでなければなりません" +#: access/transam/xlog.c:7148 +msgid "invalid resource manager ID in primary checkpoint record" +msgstr "プライマリチェックポイントレコード内のリソースマネージャIDが無効です" -#: commands/foreigncmds.c:558 -#, c-format -msgid "foreign-data wrapper \"%s\" does not exist, skipping" -msgstr "外部データラッパー \"%s\" は存在しません。スキップします" +#: access/transam/xlog.c:7152 +msgid "invalid resource manager ID in secondary checkpoint record" +msgstr "セカンダリチェックポイントレコード内のリソースマネージャIDが無効です" -#: commands/foreigncmds.c:625 -#, c-format -msgid "server \"%s\" already exists" -msgstr "サーバー \"%s\" はすでに存在します" +#: access/transam/xlog.c:7156 +msgid "invalid resource manager ID in checkpoint record" +msgstr "チェックポイントレコード内のリソースマネージャIDが無効です" -#: commands/foreigncmds.c:817 -#, c-format -msgid "server \"%s\" does not exist, skipping" -msgstr "外部データラッパー \"%s\" は存在しません。スキップします" +#: access/transam/xlog.c:7168 +msgid "invalid xl_info in primary checkpoint record" +msgstr "プライマリチェックポイントレコード内のxl_infoが無効です" -#: commands/foreigncmds.c:920 -#, c-format -msgid "user mapping \"%s\" already exists for server %s" -msgstr "ユーザーマッピング \"%s\" はサーバー \"%s\" 用としてすでに存在します" +#: access/transam/xlog.c:7172 +msgid "invalid xl_info in secondary checkpoint record" +msgstr "セカンダリチェックポイントレコード内のxl_infoが無効です" -#: commands/foreigncmds.c:998 commands/foreigncmds.c:1105 -#, c-format -msgid "user mapping \"%s\" does not exist for the server" -msgstr "そのサーバー用のユーザーマッピング \"%s\" は存在しません" +#: access/transam/xlog.c:7176 +msgid "invalid xl_info in checkpoint record" +msgstr "チェックポイントレコード内のxl_infoが無効です" -#: commands/foreigncmds.c:1092 -msgid "server does not exist, skipping" -msgstr "サーバーが存在しません。スキップします" +#: access/transam/xlog.c:7188 +msgid "invalid length of primary checkpoint record" +msgstr "プライマリチェックポイントレコードのサイズが無効です" -#: commands/foreigncmds.c:1110 -#, c-format -msgid "user mapping \"%s\" does not exist for the server, skipping" -msgstr "" -"そのサーバー用のユーザーマッピング \"%s\" は存在しません。スキップします" +#: access/transam/xlog.c:7192 +msgid "invalid length of secondary checkpoint record" +msgstr "セカンダリチェックポイントレコードのサイズが無効です" -#: commands/cluster.c:126 commands/cluster.c:364 -msgid "cannot cluster temporary tables of other sessions" -msgstr "他のセッションの一時テーブルをクラスタ化できません" +#: access/transam/xlog.c:7196 +msgid "invalid length of checkpoint record" +msgstr "チェックポイントレコードのサイズが無効です" -#: commands/cluster.c:156 -#, c-format -msgid "there is no previously clustered index for table \"%s\"" -msgstr "テーブル\"%s\"には事前にクラスタ化されたインデックスはありません" +#: access/transam/xlog.c:7358 +msgid "shutting down" +msgstr "シャットダウンしています" -#: commands/cluster.c:170 commands/tablecmds.c:6710 -#, c-format -msgid "index \"%s\" for table \"%s\" does not exist" -msgstr "テーブル\"%2$s\"にはインデックス\"%1$s\"は存在しません" +#: access/transam/xlog.c:7380 +msgid "database system is shut down" +msgstr "データベースシステムはシャットダウンしました" -#: commands/cluster.c:353 -msgid "cannot cluster a shared catalog" -msgstr "共有カタログをクラスタ化できません" +#: access/transam/xlog.c:7806 +msgid "" +"concurrent transaction log activity while database system is shutting down" +msgstr "" +"データベースシャットダウン中に、同時に実行中のトランザクションログ処理があり" +"ました" -#: commands/cluster.c:368 -msgid "cannot vacuum temporary tables of other sessions" -msgstr "他のセッションの一時テーブルはバキュームできません" +#: access/transam/xlog.c:8039 +msgid "skipping restartpoint, recovery has already ended" +msgstr "再開ポイントをスキップします。リカバリはすでに終わっています。" -#: commands/cluster.c:384 +#: access/transam/xlog.c:8064 #, c-format -msgid "clustering \"%s.%s\"" -msgstr "\"%s.%s\"をクラスタ化しています" +msgid "skipping restartpoint, already performed at %X/%X" +msgstr "%X/%X ですでに実行済みの再開ポイントをスキップしています" -#: commands/cluster.c:389 commands/vacuumlazy.c:320 +#: access/transam/xlog.c:8176 #, c-format -msgid "vacuuming \"%s.%s\"" -msgstr "\"%s.%s\"をバキュームしています" +msgid "recovery restart point at %X/%X" +msgstr "ポイント %X/%X でリカバリを再開します" -#: commands/cluster.c:421 +#: access/transam/xlog.c:8276 #, c-format -msgid "\"%s\" is not an index for table \"%s\"" -msgstr "\"%s\"はテーブル\"%s\"のインデックスではありません" +msgid "restore point \"%s\" created at %X/%X" +msgstr "%2$X/%3$X にリストアポイント \"%1$s\" を書き込みました" -#: commands/cluster.c:429 -#, c-format -msgid "" -"cannot cluster on index \"%s\" because access method does not support " -"clustering" -msgstr "" -"インデックス\"%s\"でクラスタ化できません。アクセスメソッドがクラスタ化をサ" -"ポートしないためです" +#: access/transam/xlog.c:8373 +msgid "online backup was cancelled, recovery cannot continue" +msgstr "オンラインバックアップはキャンセルされ、リカバリを継続できません" -#: commands/cluster.c:441 +#: access/transam/xlog.c:8425 #, c-format -msgid "cannot cluster on partial index \"%s\"" -msgstr "部分インデックス\"%s\"をクラスタ化できません" +msgid "unexpected timeline ID %u (after %u) in checkpoint record" +msgstr "" +"チェックポイントレコードにおいて想定外の時系列ID %u(%uの後)がありました" -#: commands/cluster.c:461 +#: access/transam/xlog.c:8461 #, c-format -msgid "" -"cannot cluster on index \"%s\" because access method does not handle null " -"values" +msgid "unexpected timeline ID %u (should be %u) in checkpoint record" msgstr "" -"インデックス\"%s\"でクラスタ化できません。アクセスメソッドがNULL値を扱わない" -"ためです" +"チェックポイントレコードにおいて想定外の時系列ID %u(%uのはず)がありました" -#: commands/cluster.c:464 +#: access/transam/xlog.c:8725 access/transam/xlog.c:8749 #, c-format -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を使用" -"してテー\n" -"ブルからクラスタ指定を削除することで、この問題を回避できる可能性があります。" +msgid "could not fsync log file %u, segment %u: %m" +msgstr "ログファイル%u、セグメント%uをfsyncできませんでした: %m" -#: commands/cluster.c:466 +#: access/transam/xlog.c:8757 #, c-format -msgid "" -"You might be able to work around this by marking column \"%s\" NOT NULL." -msgstr "列\"%s\"をNOT NULLとすることで、これを回避できるかもしれません" +msgid "could not fsync write-through log file %u, segment %u: %m" +msgstr "write-throughログファイル%u、セグメント%uをfsyncできませんでした: %m" -#: commands/cluster.c:477 +#: access/transam/xlog.c:8766 #, c-format +msgid "could not fdatasync log file %u, segment %u: %m" +msgstr "ログファイル%u、セグメント%uをfdatasyncできませんでした: %m" + +#: 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: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 "" -"cannot cluster on expressional index \"%s\" because its index access method " -"does not handle null values" +"wal_level must be set to \"archive\" or \"hot_standby\" at server start." msgstr "" -"式インデックス\"%s\"でクラスタ化できません。インデックスアクセスメソッドが" -"NULL値を扱わないためです" +"サーバの開始時に wal_level を \"archive\" または \"hot_standby\" にセットして" +"ください" -#: commands/cluster.c:492 +#: access/transam/xlog.c:8864 #, c-format -msgid "cannot cluster on invalid index \"%s\"" -msgstr "無効なインデックス\"%s\"をクラスタ化できません" +msgid "backup label too long (max %d bytes)" +msgstr "バックアップラベルが長すぎます(最大 %d バイト)" + +#: 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()を実行し、再試行してください" -#: commands/vacuumlazy.c:234 +#: access/transam/xlog.c:9007 #, 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" +"If you're sure there is no backup in progress, remove file \"%s\" and try " +"again." msgstr "" -"テーブル\"%s.%s.%s\"の自動バキューム: インデックススキャン: %d\n" -"ページ: %dを削除、%dが残存\n" -"タプル: %.0fを削除、%.0fが残存\n" -"システム使用状況: %s" +"バックアップを行っていないことが確実であれば、ファイル\"%s\"を削除し、再実行" +"してください" -#: commands/vacuumlazy.c:449 +#: access/transam/xlog.c:9021 access/transam/xlog.c:9267 #, c-format -msgid "relation \"%s\" page %u is uninitialized --- fixing" -msgstr "リレーション\"%s\" ページ%uは初期化されていません --- 修正しています" +msgid "could not write file \"%s\": %m" +msgstr "ファイル\"%s\"を書き出せませんでした: %m" -#: commands/vacuumlazy.c:785 -#, c-format -msgid "\"%s\": removed %.0f row versions in %u pages" -msgstr "\"%s\": %.0f行バージョンを%uページから削除しました" +#: access/transam/xlog.c:9179 +msgid "a backup is not in progress" +msgstr "バックアップが実行中ではありません" -#: commands/vacuumlazy.c:790 +#: 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 "" -"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u " -"pages" +"pg_stop_backup cleanup done, waiting for required WAL segments to be archived" msgstr "" -"\"%1$s\": 全 %5$u ページ中の %4$u ページで見つかった行バージョン:移動可能 %2" -"$.0f 行、削除不可 %3$.0f 行" +"pg_stop_backup のクリーンアップが終了し、要求された WAL セグメントがアーカイ" +"ブされるのを待っています" -#: commands/vacuumlazy.c:793 +#: access/transam/xlog.c:9326 #, 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." +"pg_stop_backup still waiting for all required WAL segments to be archived (%" +"d seconds elapsed)" msgstr "" -"%.0f の不要な行バージョンはまだ削除できません。\n" -"未使用アイテムへのポインタが %.0f 個ありました。\n" -"%u ページが完全に空です。\n" -"%s" - -#: commands/vacuumlazy.c:851 -#, c-format -msgid "\"%s\": removed %d row versions in %d pages" -msgstr "\"%s\": %d行バージョンを%dページから削除しました" - -#: commands/vacuumlazy.c:854 commands/vacuumlazy.c:946 -#: commands/vacuumlazy.c:1071 -#, c-format -msgid "%s." -msgstr "%s。" +"pg_stop_backup は未だに要求されたすべての WAL セグメントがアーカイブされるの" +"を待っています(%d 秒経過)" -#: commands/vacuumlazy.c:943 -#, c-format -msgid "scanned index \"%s\" to remove %d row versions" -msgstr "%2$d行バージョンを削除するためインデックス\"%1$s\"をスキャンしました" +#: 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 "" +"archive_command が適切に実行されたことを確認してください。pg_stop_backup は安" +"全に取り消すことができますが、すべての WAL セグメントがないとデータベースの" +"バックアップは使用できません。" -#: commands/vacuumlazy.c:985 -#, c-format -msgid "index \"%s\" now contains %.0f row versions in %u pages" -msgstr "現在インデックス\"%s\"は%.0f行バージョンを%uページで含んでいます" +#: access/transam/xlog.c:9335 +msgid "pg_stop_backup complete, all required WAL segments have been archived" +msgstr "" +"pg_stop_backup が完了し、要求されたすべての WAL セグメントがアーカイブされま" +"した" -#: commands/vacuumlazy.c:989 -#, c-format +#: access/transam/xlog.c:9339 msgid "" -"%.0f index row versions were removed.\n" -"%u index pages have been deleted, %u are currently reusable.\n" -"%s." +"WAL archiving is not enabled; you must ensure that all required WAL segments " +"are copied through other means to complete the backup" msgstr "" -"%.0fインデックス行バージョンが削除されました\n" -"%uインデックスページが削除され、%uが現在再利用可能です\n" -"%s" +"WAL アーカイブが有効になっていません。要求されたすべての WAL セグメントが別の" +"方法でコピーされ、バックアップが完了できることを確認してください。" -#: commands/vacuumlazy.c:1068 -#, c-format -msgid "\"%s\": truncated %u to %u pages" -msgstr "\"%s\": %u削除され、%uページになりました" +#: access/transam/xlog.c:9386 +msgid "must be superuser to switch transaction log files" +msgstr "トランザクションログファイルを切り替えられるのはスーパーユーザだけです" -#: commands/indexcmds.c:162 -msgid "must specify at least one column" -msgstr "少なくとも1つの列を指定しなければなりません" +#: access/transam/xlog.c:9418 +#, +msgid "must be superuser to create a restore point" +msgstr "リストアポイントを作れるのはスーパーユーザだけです" -#: commands/indexcmds.c:166 -#, c-format -msgid "cannot use more than %d columns in an index" -msgstr "インデックスには%dを超える列を使用できません" +#: access/transam/xlog.c:9429 +#, +msgid "WAL level not sufficient for creating a restore point" +msgstr "リストアポイントを作るには WAL レベルが不足しています" -#: commands/indexcmds.c:187 commands/indexcmds.c:1627 commands/tablecmds.c:194 -#: commands/tablecmds.c:1080 commands/tablecmds.c:3335 commands/comment.c:573 -#: commands/trigger.c:149 commands/trigger.c:1063 commands/lockcmds.c:149 -#: catalog/toasting.c:91 +#: access/transam/xlog.c:9437 #, c-format -msgid "\"%s\" is not a table" -msgstr "\"%s\"はテーブルではありません" - -#: commands/indexcmds.c:196 -msgid "cannot create indexes on temporary tables of other sessions" -msgstr "他のセッションの一時テーブルに対するインデックスを作成できません" +msgid "value too long for restore point (maximum %d characters)" +msgstr "リストアポイントとしては値が長すぎます(最大 %d 文字)" -#: commands/indexcmds.c:256 commands/tablecmds.c:443 commands/tablecmds.c:6937 -msgid "only shared relations can be placed in pg_global tablespace" -msgstr "共有リレーションのみをpg_globalテーブル空間に格納することができます" +#: access/transam/xlog.c:9605 +msgid "pg_xlogfile_name_offset() cannot be executed during recovery." +msgstr "リカバリ中は pg_xlogfile_name_offset() を実行できません" -#: commands/indexcmds.c:287 -msgid "substituting access method \"gist\" for obsolete method \"rtree\"" -msgstr "古いメソッド\"rtree\"をアクセスメソッド\"gist\"に置換しています" - -#: commands/indexcmds.c:295 commands/opclasscmds.c:281 -#: commands/opclasscmds.c:669 commands/opclasscmds.c:769 -#: commands/opclasscmds.c:1495 commands/opclasscmds.c:1556 -#: commands/opclasscmds.c:1718 commands/opclasscmds.c:1812 -#: commands/opclasscmds.c:1903 commands/opclasscmds.c:2046 -#: commands/comment.c:1261 commands/comment.c:1342 +#: access/transam/xlog.c:9615 access/transam/xlog.c:9687 #, c-format -msgid "access method \"%s\" does not exist" -msgstr "アクセスメソッド\"%s\"は存在しません" +msgid "could not parse transaction log location \"%s\"" +msgstr "トランザクションログ位置\"%s\"を解析できませんでした" -#: commands/indexcmds.c:304 -#, c-format -msgid "access method \"%s\" does not support unique indexes" -msgstr "アクセスメソッド \"%s\" では一意性インデックスをサポートしていません" +#: access/transam/xlog.c:9680 +msgid "pg_xlogfile_name() cannot be executed during recovery." +msgstr "リカバリ中は pg_xlogfile_name() を実行できません" -#: commands/indexcmds.c:309 +#: access/transam/xlog.c:9777 #, c-format -msgid "access method \"%s\" does not support multicolumn indexes" -msgstr "アクセスメソッド\"%s\"は複数列インデックスをサポートしません" +msgid "xlog redo %s" +msgstr "xlog 再実行 %s" -#: commands/indexcmds.c:314 -#, c-format -msgid "access method \"%s\" does not support exclusion constraints" -msgstr "アクセスメソッド \"%s\" は排除制約をサポートしていません" +#: access/transam/xlog.c:9817 +msgid "online backup mode cancelled" +msgstr "オンラインバックアップモードがキャンセルされました" -#: commands/indexcmds.c:347 parser/parse_utilcmd.c:1200 -#: parser/parse_utilcmd.c:1286 +#: access/transam/xlog.c:9818 #, c-format -msgid "multiple primary keys for table \"%s\" are not allowed" -msgstr "テーブル\"%s\"に複数のプライマリキーを持たせることはできません" +msgid "\"%s\" was renamed to \"%s\"." +msgstr "\"%s\" は \"%s\" にリネームされました" -#: commands/indexcmds.c:364 -msgid "primary keys cannot be expressions" -msgstr "プライマリキーを式にすることはできません" +#: access/transam/xlog.c:9825 +msgid "online backup mode was not cancelled" +msgstr "オンラインバックアップモードはキャンセルされていません" -#: commands/indexcmds.c:394 commands/indexcmds.c:903 -#: parser/parse_utilcmd.c:1433 +#: access/transam/xlog.c:9826 #, c-format -msgid "column \"%s\" named in key does not exist" -msgstr "キーとして指名された列\"%s\"は存在しません" +msgid "Could not rename \"%s\" to \"%s\": %m." +msgstr "\"%s\" という名前を \"%s\" に変更できませんでした: %m" -#: commands/indexcmds.c:468 +#: access/transam/xlog.c:10323 access/transam/xlog.c:10345 #, 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:827 -msgid "cannot use subquery in index predicate" -msgstr "インデックスの述部に副問い合わせを使用できません" - -#: commands/indexcmds.c:831 -msgid "cannot use aggregate in index predicate" -msgstr "インデックスの述部に集約を使用できません" +msgid "could not read from log file %u, segment %u, offset %u: %m" +msgstr "ログファイル%u、セグメント%u、オフセット%uを読み取れませんでした: %m" -#: commands/indexcmds.c:840 -msgid "functions in index predicate must be marked IMMUTABLE" -msgstr "インデックスの述部の関数はIMMUTABLEマークが必要です" +#: access/transam/xlog.c:10434 +#, +msgid "received promote request" +msgstr "推進要求(promote request)を受け取りました" -#: commands/indexcmds.c:908 commands/copy.c:3446 commands/tablecmds.c:1244 -#: commands/tablecmds.c:2049 utils/adt/tsvector_op.c:1347 -#: parser/parse_expr.c:762 +#: access/transam/xlog.c:10447 #, c-format -msgid "column \"%s\" does not exist" -msgstr "列\"%s\"は存在しません" - -#: commands/indexcmds.c:942 -msgid "cannot use subquery in index expression" -msgstr "式インデックスには副問い合わせを使用できません" - -#: commands/indexcmds.c:946 -msgid "cannot use aggregate function in index expression" -msgstr "式インデックスには集約関数を使用できません" - -#: commands/indexcmds.c:956 -msgid "functions in index expression must be marked IMMUTABLE" -msgstr "式インデックスの関数はIMMUTABLEマークが必要です" - -#: commands/indexcmds.c:991 -msgid "operator %s is not commutative" -msgstr "演算子 %s は交換可能ではありません" - -#: commands/indexcmds.c:993 -msgid "Only commutative operators can be used in exclusion constraints." -msgstr "排除制約で使えるのは交換演算子だけです" +msgid "trigger file found: %s" +msgstr "トリガファイルが見つかりました:%s" -#: commands/indexcmds.c:1019 +#: access/transam/varsup.c:114 #, c-format -msgid "operator %s is not a member of operator family \"%s\"" -msgstr "演算子 %s は演算子ファミリー \"%s\" のメンバーではありません" - -#: commands/indexcmds.c:1022 msgid "" -"The exclusion operator must be related to the index operator class for the " -"constraint." +"database is not accepting commands to avoid wraparound data loss in database " +"\"%s\"" msgstr "" -"この制約条件については、インデックス演算子クラスに対して排除制約が関連付けら" -"れなければなりません" +"データベース\"%s\"における周回によるデータ損失を防ぐために、データベースは問" +"い合わせを受付けません" -#: commands/indexcmds.c:1057 -#, c-format -msgid "access method \"%s\" does not support ASC/DESC options" -msgstr "アクセスメソッド\"%s\"はASC/DESCオプションをサポートしません" +#: 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 を停止後、スタンドアロンバックエンドを使ってそのデータベースをバ" +"キュームしてください。\n" +"古い準備済みトランザクションのコミットまたはロールバックが必要な場合もありま" +"す。" -#: commands/indexcmds.c:1062 +#: access/transam/varsup.c:121 #, c-format -msgid "access method \"%s\" does not support NULLS FIRST/LAST options" -msgstr "アクセスメソッド\"%s\"はNULLS FIRST/LASTオプションをサポートしません" +msgid "" +"database is not accepting commands to avoid wraparound data loss in database " +"with OID %u" +msgstr "" +"OID %u を持つデータベースは周回によるデータ損失を防ぐために、現在は問い合わせ" +"を受付けない状態になっています" -#: commands/indexcmds.c:1118 +#: access/transam/varsup.c:133 access/transam/varsup.c:368 #, c-format -msgid "data type %s has no default operator class for access method \"%s\"" +msgid "database \"%s\" must be vacuumed within %u transactions" msgstr "" -"アクセスメソッド\"%2$s\"にはデータ型%1$s用のデフォルトの演算子クラスがありま" -"せん" +"データベース\"%s\"は%uトランザクション以内にバキュームしなければなりません" -#: commands/indexcmds.c:1120 +#: access/transam/varsup.c:136 access/transam/varsup.c:143 +#: access/transam/varsup.c:371 access/transam/varsup.c:378 msgid "" -"You must specify an operator class for the index or define a default " -"operator class for the data type." +"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" +"古い準備済みトランザクションのコミットまたはロールバックが必要な場合もありま" +"す。" -#: commands/indexcmds.c:1149 commands/indexcmds.c:1157 -#: commands/opclasscmds.c:1507 commands/opclasscmds.c:1511 -#: commands/opclasscmds.c:1739 commands/opclasscmds.c:1750 -#: commands/opclasscmds.c:1926 commands/opclasscmds.c:1937 -#: commands/comment.c:1289 commands/comment.c:1297 +#: access/transam/varsup.c:140 access/transam/varsup.c:375 #, c-format -msgid "operator class \"%s\" does not exist for access method \"%s\"" -msgstr "アクセスメソッド\"%2$s\"用の演算子クラス\"%1$s\"は存在しません" +msgid "database with OID %u must be vacuumed within %u transactions" +msgstr "" +"OID %u を持つデータベースは %u トランザクション以内にバキュームされなければな" +"りません" -#: commands/indexcmds.c:1170 +#: access/transam/varsup.c:333 #, c-format -msgid "operator class \"%s\" does not accept data type %s" -msgstr "演算子クラス\"%s\"はデータ型%sを受け付けません" +msgid "transaction ID wrap limit is %u, limited by database with OID %u" +msgstr "" +"トランザクション ID の周回制限は %u で、OID %u を持つデータベースにより制限さ" +"れています" -#: commands/indexcmds.c:1260 +#: access/transam/twophase.c:250 #, c-format -msgid "there are multiple default operator classes for data type %s" -msgstr "データ型%sには複数のデフォルトの演算子クラスがあります" +msgid "transaction identifier \"%s\" is too long" +msgstr "トランザクション識別子\"%s\"は長すぎます" + +#: 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を非ゼロに設定してください。" -#: commands/indexcmds.c:1595 commands/tablecmds.c:212 -#: commands/tablecmds.c:2341 commands/comment.c:559 access/index/indexam.c:149 +#: access/transam/twophase.c:291 #, c-format -msgid "\"%s\" is not an index" -msgstr "\"%s\"はインデックスではありません" +msgid "transaction identifier \"%s\" is already in use" +msgstr "トランザクション識別子\"%s\"はすでに存在します" + +#: access/transam/twophase.c:300 +msgid "maximum number of prepared transactions reached" +msgstr "準備済みのトランザクションの最大数に達しました" -#: commands/indexcmds.c:1639 +#: access/transam/twophase.c:301 #, c-format -msgid "table \"%s\" has no indexes" -msgstr "テーブル\"%s\"にはインデックスはありません" +msgid "Increase max_prepared_transactions (currently %d)." +msgstr "max_prepared_transactionsを増加してください(現状%d)。" -#: commands/indexcmds.c:1667 -msgid "can only reindex the currently open database" -msgstr "" -"現在オープンしているデータベースのみを再インデックス付けすることができます" +#: access/transam/twophase.c:421 +#, c-format +msgid "prepared transaction with identifier \"%s\" is busy" +msgstr "準備されたトランザクション識別子\"%s\"は実行中です" -#: commands/indexcmds.c:1752 -msgid "table \"%s.%s\" was reindexed" -msgstr "テーブル\"%s.%s\"は再インデックス化されました" +#: access/transam/twophase.c:429 +msgid "permission denied to finish prepared transaction" +msgstr "準備されたトランザクションを終了するための権限がありません" -#: commands/proclang.c:92 -msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters" -msgstr "CREATE LANGUAGEパラメータの代わりにpg_pltemplateの情報を使用しています" +#: access/transam/twophase.c:430 +msgid "Must be superuser or the user that prepared the transaction." +msgstr "トランザクションを準備するユーザはスーパーユーザでなければなりません。" + +#: 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/proclang.c:102 +#: access/transam/twophase.c:456 #, c-format -msgid "must be superuser to create procedural language \"%s\"" -msgstr "手続き言語\"%s\"の作成にはスーパーユーザでなければなりません" +msgid "prepared transaction with identifier \"%s\" does not exist" +msgstr "準備されたトランザクションの中に識別子 \"%s\" を持つものはありません" -#: commands/proclang.c:122 commands/proclang.c:278 +#: access/transam/twophase.c:939 +msgid "two-phase state file maximum length exceeded" +msgstr "2相状態ファイルの最大長が制限を超えました" + +#: access/transam/twophase.c:957 #, c-format -msgid "function %s must return type \"language_handler\"" -msgstr "関数%sは\"language_handler\"型を返さなければなりません" +msgid "could not create two-phase state file \"%s\": %m" +msgstr "2相状態ファイル\"%s\"を作成できませんでした: %m" -#: commands/proclang.c:242 +#: 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 "unsupported language \"%s\"" -msgstr "言語\"%s\"はサポートされていません" +msgid "could not write two-phase state file: %m" +msgstr "2相状態ファイルに書き出せませんでした: %m" -#: commands/proclang.c:244 -msgid "The supported languages are listed in the pg_pltemplate system catalog." -msgstr "" -"サポートされている言語はpg_pltemplateシステムカタログ内に列挙されています" +#: access/transam/twophase.c:997 +#, c-format +msgid "could not seek in two-phase state file: %m" +msgstr "2相状態ファイルをシークできませんでした: %m" -#: commands/proclang.c:252 -msgid "must be superuser to create custom procedural language" -msgstr "手続き言語の作成にはスーパーユーザでなければなりません" +#: access/transam/twophase.c:1050 access/transam/twophase.c:1490 +#, c-format +msgid "could not close two-phase state file: %m" +msgstr "2相状態ファイルをクローズできませんでした: %m" -#: commands/proclang.c:271 +#: access/transam/twophase.c:1130 access/transam/twophase.c:1570 #, c-format -msgid "" -"changing return type of function %s from \"opaque\" to \"language_handler\"" -msgstr "関数%sの戻り値型を\"opaque\"から\"language_handler\"に変更しています" +msgid "could not open two-phase state file \"%s\": %m" +msgstr "2相状態ファイル\"%s\"をオープンできませんでした: %m" -#: commands/proclang.c:356 commands/proclang.c:606 +#: access/transam/twophase.c:1147 #, c-format -msgid "language \"%s\" already exists" -msgstr "言語\"%s\"はすでに存在します" +msgid "could not stat two-phase state file \"%s\": %m" +msgstr "2相状態ファイル\"%s\"のstatができませんでした: %m" -#: commands/proclang.c:531 commands/proclang.c:600 commands/proclang.c:640 -#: commands/comment.c:1220 commands/functioncmds.c:836 -#: commands/functioncmds.c:1990 catalog/aclchk.c:640 utils/adt/acl.c:3562 +#: access/transam/twophase.c:1179 #, c-format -msgid "language \"%s\" does not exist" -msgstr "言語\"%s\"は存在しません" +msgid "could not read two-phase state file \"%s\": %m" +msgstr "2相状態ファイル\"%s\"を読み取れませんでした: %m" -#: commands/proclang.c:534 +#: access/transam/twophase.c:1271 #, c-format -msgid "language \"%s\" does not exist, skipping" -msgstr "言語\"%s\"は存在しません。省略します" +msgid "two-phase state file for transaction %u is corrupt" +msgstr "トランザクション%u用の2相状態ファイルが破損しています" -#: commands/copy.c:312 commands/copy.c:324 commands/copy.c:358 -#: commands/copy.c:368 -msgid "COPY BINARY is not supported to stdout or from stdin" -msgstr "標準入出力を介したCOPY BINARYはサポートされていません" +#: access/transam/twophase.c:1427 +#, c-format +msgid "could not remove two-phase state file \"%s\": %m" +msgstr "2相状態ファイル\"%s\"を削除できませんでした: %m" -#: commands/copy.c:446 +#: access/transam/twophase.c:1456 #, c-format -msgid "could not write to COPY file: %m" -msgstr "COPYファイルに書き出せませんでした: %m" +msgid "could not recreate two-phase state file \"%s\": %m" +msgstr "2相状態ファイル\"%s\"を再作成できませんでした: %m" -#: commands/copy.c:458 -msgid "connection lost during COPY to stdout" -msgstr "標準出力へのCOPY中に接続が失われました" +#: access/transam/twophase.c:1484 +#, c-format +msgid "could not fsync two-phase state file: %m" +msgstr "2相状態ファイルをfsyncできませんでした: %m" -#: commands/copy.c:499 +#: access/transam/twophase.c:1579 #, c-format -msgid "could not read from COPY file: %m" -msgstr "COPYファイルから読み込めませんでした: %m" +msgid "could not fsync two-phase state file \"%s\": %m" +msgstr "2相状態ファイル\"%s\"をfsyncできませんでした: %m" -#: commands/copy.c:550 +#: access/transam/twophase.c:1586 #, c-format -msgid "COPY from stdin failed: %s" -msgstr "標準入力からのCOPYが失敗しました: %s" +msgid "could not close two-phase state file \"%s\": %m" +msgstr "2相状態ファイル\"%s\"をクローズできませんでした: %m" -#: commands/copy.c:566 +#: access/transam/twophase.c:1651 #, c-format -msgid "unexpected message type 0x%02X during COPY from stdin" -msgstr "標準入力からのCOPY中に想定外のメッセージ種類0x%02Xがありました" +msgid "removing future two-phase state file \"%s\"" +msgstr "将来の2相状態ファイル\"%s\"を削除しています" -#: commands/copy.c:751 commands/copy.c:769 commands/copy.c:777 -#: commands/copy.c:785 commands/copy.c:793 commands/copy.c:801 -#: commands/copy.c:809 commands/copy.c:817 commands/copy.c:833 -#: commands/typecmds.c:274 commands/user.c:140 commands/user.c:157 -#: commands/user.c:165 commands/user.c:173 commands/user.c:181 -#: commands/user.c:189 commands/user.c:197 commands/user.c:205 -#: commands/user.c:213 commands/user.c:221 commands/user.c:229 -#: commands/user.c:467 commands/user.c:479 commands/user.c:487 -#: commands/user.c:495 commands/user.c:503 commands/user.c:511 -#: commands/user.c:519 commands/user.c:528 commands/user.c:536 -#: commands/functioncmds.c:485 commands/functioncmds.c:575 -#: commands/functioncmds.c:583 commands/functioncmds.c:591 -#: commands/functioncmds.c:1953 commands/functioncmds.c:1961 -#: commands/sequence.c:1025 commands/sequence.c:1033 commands/sequence.c:1041 -#: commands/sequence.c:1049 commands/sequence.c:1057 commands/sequence.c:1065 -#: commands/sequence.c:1073 commands/sequence.c:1081 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 catalog/aclchk.c:869 -#: catalog/aclchk.c:877 -msgid "conflicting or redundant options" -msgstr "競合するオプション、あるいは余計なオプションがあります" +#: 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 "破損した2相状態ファイル\"%s\"を削除しています" -#: commands/copy.c:762 +#: access/transam/twophase.c:1780 access/transam/twophase.c:1864 #, c-format -msgid "COPY format \"%s\" not recognized" -msgstr "COPY フォーマット \"%s\" を認識できません" +msgid "removing stale two-phase state file \"%s\"" +msgstr "古くなった2相状態ファイル\"%s\"を削除しています" -#: commands/copy.c:825 commands/copy.c:839 +#: access/transam/twophase.c:1882 #, c-format -msgid "argument to option \"%s\" must be a list of column names" -msgstr "オプション \"%s\" の引数は列名の並びでなければなりません" +msgid "recovering prepared transaction %u" +msgstr "準備されたトランザクション%uを復旧しています" -#: commands/copy.c:845 +#: access/transam/slru.c:609 #, c-format -msgid "option \"%s\" not recognized" -msgstr "時間帯 \"%s\" を認識できません" +msgid "file \"%s\" doesn't exist, reading as zeroes" +msgstr "ファイル\"%s\"が存在しません。ゼロとして読み込みます" -#: commands/copy.c:856 -msgid "cannot specify DELIMITER in BINARY mode" -msgstr "BINARYモードではDELIMITERを指定できません" +#: 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のステータスにアクセスできませんでした" -#: commands/copy.c:861 -msgid "cannot specify NULL in BINARY mode" -msgstr "BINARYモードではNULLを指定できません" +#: access/transam/slru.c:840 +#, c-format +msgid "Could not open file \"%s\": %m." +msgstr "ファイル\"%s\"をオープンできませんでした: %m。" -#: commands/copy.c:883 -msgid "COPY delimiter must be a single one-byte character" -msgstr "COPYの区切り文字は単一の1バイト文字でなければなりません" +#: access/transam/slru.c:846 +#, c-format +msgid "Could not seek in file \"%s\" to offset %u: %m." +msgstr "ファイル\"%s\"のオフセット%uにシークできませんでした: %m。" -#: commands/copy.c:890 -msgid "COPY delimiter cannot be newline or carriage return" -msgstr "COPYの区切り文字は改行や復帰記号とすることができません" +#: access/transam/slru.c:853 +#, c-format +msgid "Could not read from file \"%s\" at offset %u: %m." +msgstr "ファイル\"%s\"のオフセット%uを読み取れませんでした: %m。" -#: commands/copy.c:896 -msgid "COPY null representation cannot use newline or carriage return" -msgstr "COPYのNULL表現には改行や復帰記号を使用することはできません" +#: access/transam/slru.c:860 +#, c-format +msgid "Could not write to file \"%s\" at offset %u: %m." +msgstr "ファイル\"%s\"のオフセット%uに書き出せませんでした: %m。" -#: commands/copy.c:913 +#: access/transam/slru.c:867 #, c-format -msgid "COPY delimiter cannot be \"%s\"" -msgstr "COPYの区切り文字を\"%s\"とすることはできません" +msgid "Could not fsync file \"%s\": %m." +msgstr "ファイル\"%s\"をfsyncできませんでした: %m。" -#: commands/copy.c:919 -msgid "COPY HEADER available only in CSV mode" -msgstr "COPY HEADERはCSVモードでのみ使用できます" +#: access/transam/slru.c:874 +#, c-format +msgid "Could not close file \"%s\": %m." +msgstr "ファイル\"%s\"をクローズできませんでした: %m。" -#: commands/copy.c:925 -msgid "COPY quote available only in CSV mode" -msgstr "COPYの引用符はCSVモードでのみ使用できます" +#: access/transam/slru.c:1101 +#, c-format +msgid "could not truncate directory \"%s\": apparent wraparound" +msgstr "ディレクトリ\"%s\"を切り詰めできませんでした: 周回している様子" -#: commands/copy.c:930 -msgid "COPY quote must be a single one-byte character" -msgstr "COPYの引用符は単一の1バイト文字でなければなりません" +#: access/transam/slru.c:1182 +#, c-format +msgid "removing file \"%s\"" +msgstr "ファイル\"%s\"を削除しています" -#: commands/copy.c:935 -msgid "COPY delimiter and quote must be different" -msgstr "COPYの区切り文字と引用符は異なる文字でなければなりません" +#: access/transam/xact.c:729 +msgid "cannot have more than 2^32-1 commands in a transaction" +msgstr "1 トランザクション内には 2^32-1 個以上のコマンドを保持できません" -#: commands/copy.c:941 -msgid "COPY escape available only in CSV mode" -msgstr "COPYのエスケープはCSVモードでのみ使用できます" +#: access/transam/xact.c:1268 +#, c-format +msgid "maximum number of committed subtransactions (%d) exceeded" +msgstr "コミットされたサブトランザクションの最大数 (%d) が制限を越えました" -#: commands/copy.c:946 -msgid "COPY escape must be a single one-byte character" -msgstr "COPYのエスケープは単一の1バイト文字でなければなりません" +#: access/transam/xact.c:2044 +msgid "cannot PREPARE a transaction that has operated on temporary tables" +msgstr "" +"一時テーブルに対する操作を行うトランザクションをPREPAREすることはできません" -#: commands/copy.c:952 -msgid "COPY force quote available only in CSV mode" -msgstr "COPYの force quote句はCSVモードでのみ使用できます" +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2835 +#, c-format +msgid "%s cannot run inside a transaction block" +msgstr "%sはトランザクションブロックの内側では実行できません" -#: commands/copy.c:956 -msgid "COPY force quote only available using COPY TO" -msgstr "COPYの force quote句はCOPY TOでのみ使用できます" +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2845 +#, c-format +msgid "%s cannot run inside a subtransaction" +msgstr "%sはサブトランザクションブロックの内側では実行できません" -#: commands/copy.c:962 -msgid "COPY force not null available only in CSV mode" -msgstr "COPYの force not null句はCSVモードでのみ使用できます" +#. 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は関数または複数コマンド文字列から実行できません" -#: commands/copy.c:966 -msgid "COPY force not null only available using COPY FROM" -msgstr "COPYの force not null句はCOPY FROMでのみ使用できます" +#. 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はトランザクションブロック内でのみ使用できます" -#: commands/copy.c:972 -msgid "COPY delimiter must not appear in the NULL specification" -msgstr "COPYの区切り文字をNULL句の値に使用できません" +#: access/transam/xact.c:3088 +msgid "there is already a transaction in progress" +msgstr "すでにトランザクションが進行中です" -#: commands/copy.c:979 -msgid "CSV quote character must not appear in the NULL specification" -msgstr "COPYの引用符をNULL句の値に使用できません" +#: access/transam/xact.c:3255 access/transam/xact.c:3347 +msgid "there is no transaction in progress" +msgstr "進行中のトランザクションがありません" -#: commands/copy.c:985 -msgid "must be superuser to COPY to or from a file" +#: 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 "そのようなセーブポイントはありません" + +#: access/transam/xact.c:4225 +msgid "cannot have more than 2^32-1 subtransactions in a transaction" msgstr "" -"ファイル経由のCOPY FROM、COPY TOを行うにはスーパーユーザでなければなりません" +"1 トランザクション内には 2^32-1 個以上のサブトランザクションを保持できません" -#: commands/copy.c:986 -msgid "" -"Anyone can COPY to stdout or from stdin. psql's \\copy command also works " -"for anyone." +#: 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:167 access/nbtree/nbtpage.c:371 +#, c-format +msgid "version mismatch in index \"%s\": file version %d, code version %d" msgstr "" -"標準入出力経由のCOPYは誰でも実行可能です。またpsqlの\\\\copyも誰でも実行でき" -"ます" +"インデックス\"%s\"におけるバージョンの不整合: ファイルバージョン %d、コード" +"バージョン %d" -#: commands/copy.c:1032 +#: access/nbtree/nbtpage.c:433 access/hash/hashutil.c:170 +#: access/gist/gistutil.c:589 #, c-format -msgid "table \"%s\" does not have OIDs" -msgstr "テーブル\"%s\"はOIDを持ちません" +msgid "index \"%s\" contains unexpected zero page at block %u" +msgstr "インデックス\"%s\"のブロック %uに予期しないゼロページがあります" -#: commands/copy.c:1049 -msgid "COPY (SELECT) WITH OIDS is not supported" -msgstr "COPY (SELECT) WITH OIDSはサポートされていません" +#: access/nbtree/nbtpage.c:436 access/nbtree/nbtpage.c:447 +#: access/hash/hashutil.c:173 access/hash/hashutil.c:184 +#: access/hash/hashutil.c:196 access/hash/hashutil.c:217 +#: access/gist/gistutil.c:592 access/gist/gistutil.c:603 +#: access/gist/gist.c:718 access/gist/gistvacuum.c:274 +msgid "Please REINDEX it." +msgstr "REINDEXを行ってください。" -#: commands/copy.c:1076 -msgid "COPY (SELECT INTO) is not supported" -msgstr "COPY (SELECT INTO)はサポートされていません" +#: access/nbtree/nbtpage.c:444 access/hash/hashutil.c:181 +#: access/hash/hashutil.c:193 access/gist/gistutil.c:600 +#, c-format +msgid "index \"%s\" contains corrupted page at block %u" +msgstr "インデックス\"%s\"のブロック %uに破損したページがあります" -#: commands/copy.c:1135 +#: access/nbtree/nbtinsert.c:393 #, c-format -msgid "FORCE QUOTE column \"%s\" not referenced by COPY" -msgstr "FORCE QUOTEされた列\"%s\"はCOPYで参照されません" +msgid "duplicate key value violates unique constraint \"%s\"" +msgstr "重複キーが一意性制約\"%s\"に違反しています" -#: commands/copy.c:1157 +#: access/nbtree/nbtinsert.c:395 #, c-format -msgid "FORCE NOT NULL column \"%s\" not referenced by COPY" -msgstr "FORCE NOT NULLされた列\"%s\"はCOPYで参照されません" +msgid "Key %s already exists." +msgstr "キー %s はすでに存在します" -#: commands/copy.c:1235 +#: access/nbtree/nbtinsert.c:457 #, c-format -msgid "cannot copy from view \"%s\"" -msgstr "ビュー\"%s\"からのコピーはできません" +msgid "failed to re-find tuple within index \"%s\"" +msgstr "インデックス \"%s\" 内で行の再検索に失敗しました" -#: commands/copy.c:1237 -msgid "Try the COPY (SELECT ...) TO variant." -msgstr "COPY (SELECT ...) TO構文を試してください" +#: access/nbtree/nbtinsert.c:459 +msgid "This may be because of a non-immutable index expression." +msgstr "これは不変でないインデックス評価式が原因である可能性があります" -#: commands/copy.c:1241 -#, c-format -msgid "cannot copy from sequence \"%s\"" -msgstr "シーケンス\"%s\"からのコピーはできません" +#: 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ハッシュへのインデックスを行う関数インデックスを検討するか、" +"もしくは全文テキストインデックスを使用してください。" -#: commands/copy.c:1246 +#: access/heap/rewriteheap.c:597 access/heap/hio.c:175 #, c-format -msgid "cannot copy from non-table relation \"%s\"" -msgstr "テーブル以外のリレーション\"%s\"からのコピーはできません" +msgid "row is too big: size %lu, maximum size %lu" +msgstr "行が大きすぎます: サイズは%lu、上限は%lu" -#: commands/copy.c:1270 -msgid "relative path not allowed for COPY to file" -msgstr "ファイルへのCOPYでは相対パスで指定できません" +#: 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\"はインデックスです" -#: commands/copy.c:1279 +#: access/heap/heapam.c:1091 access/heap/heapam.c:1119 +#: access/heap/heapam.c:1149 catalog/aclchk.c:1685 commands/tablecmds.c:2268 +#: commands/tablecmds.c:7400 commands/tablecmds.c:8982 #, c-format -msgid "could not open file \"%s\" for writing: %m" -msgstr "ファイル\"%s\"を書き込み用にオープンできませんでした: %m" +msgid "\"%s\" is a composite type" +msgstr "\"%s\"は複合型です" -#: commands/copy.c:1286 commands/copy.c:1781 +#: access/heap/heapam.c:3201 access/heap/heapam.c:3232 +#: access/heap/heapam.c:3267 #, c-format -msgid "\"%s\" is a directory" -msgstr "\"%s\"はディレクトリです" +msgid "could not obtain lock on row in relation \"%s\"" +msgstr "リレーション\"%s\"の行ロックを取得できませんでした" + +#: access/hash/hashsearch.c:152 +msgid "hash indexes do not support whole-index scans" +msgstr "ハッシュインデックスはインデックス全体のスキャンをサポートしていません" -#: commands/copy.c:1316 utils/init/miscinit.c:1040 utils/init/miscinit.c:1049 -#: utils/misc/guc.c:7004 utils/misc/guc.c:7029 storage/file/copydir.c:197 -#: postmaster/postmaster.c:3637 postmaster/postmaster.c:3647 -#: access/transam/xlog.c:2355 access/transam/xlog.c:2488 -#: access/transam/xlog.c:4338 access/transam/xlog.c:4394 +#: access/hash/hashutil.c:209 #, c-format -msgid "could not write to file \"%s\": %m" -msgstr "ファイル\"%s\"を書き出せませんでした: %m" +msgid "index \"%s\" is not a hash index" +msgstr "インデックス\"%s\"はハッシュインデックスではありません" -#: commands/copy.c:1572 +#: access/hash/hashutil.c:215 #, c-format -msgid "COPY %s, line %d, column %s" -msgstr "%sのCOPY。行番号 %d。列 %s" +msgid "index \"%s\" has wrong hash version" +msgstr "インデックス\"%s\"のハッシュバージョンが不正です" -#: commands/copy.c:1576 commands/copy.c:1621 +#: access/hash/hashovfl.c:547 #, c-format -msgid "COPY %s, line %d" -msgstr "%sのCOPY。行番号 %d" +msgid "out of overflow pages in hash index \"%s\"" +msgstr "ハッシュインデックス\"%s\"の中のオーバーフローページがありません" -#: commands/copy.c:1587 +#: access/hash/hashinsert.c:73 #, c-format -msgid "COPY %s, line %d, column %s: \"%s\"" -msgstr "%sのCOPY。行番号 %d。列 %s: \"%s\"" +msgid "index row size %lu exceeds hash maximum %lu" +msgstr "インデックスの行サイズ%luがハッシュの最大%luを超えています" + +#: access/hash/hashinsert.c:76 +msgid "Values larger than a buffer page cannot be indexed." +msgstr "バッファページよりも大きな値をインデックスすることはできません。" -#: commands/copy.c:1595 +#: access/common/tupdesc.c:575 parser/parse_relation.c:1169 #, c-format -msgid "COPY %s, line %d, column %s: null input" -msgstr "%sのCOPY。行番号 %d。列 %s: 入力がヌルです" +msgid "column \"%s\" cannot be declared SETOF" +msgstr "列\"%s\"をSETOFで宣言できません" -#: commands/copy.c:1607 +#: access/common/tupconvert.c:107 #, c-format -msgid "COPY %s, line %d: \"%s\"" -msgstr "%sのCOPY。行番号 %d: \"%s\"" +msgid "Returned type %s does not match expected type %s in column %d." +msgstr "列 %3$d で返された型 %1$s が期待する型 %2$s と一致しません" -#: commands/copy.c:1709 +#: access/common/tupconvert.c:135 #, c-format -msgid "cannot copy to view \"%s\"" -msgstr "ビュー\"%s\"へのコピーはできません" +msgid "" +"Number of returned columns (%d) does not match expected column count (%d)." +msgstr "返された列数(%d)が期待する列数(%d)と一致しません" -#: commands/copy.c:1714 +#: access/common/tupconvert.c:240 #, c-format -msgid "cannot copy to sequence \"%s\"" -msgstr "シーケンス\"%s\"へのコピーはできません" +msgid "" +"Attribute \"%s\" of type %s does not match corresponding attribute of type %" +"s." +msgstr "型 %1$s の属性 \"%2$s\" が対応する型 %3$s の属性と合致しません" -#: commands/copy.c:1719 +#: access/common/tupconvert.c:252 #, c-format -msgid "cannot copy to non-table relation \"%s\"" -msgstr "テーブル以外のリレーション\"%s\"へのコピーはできません" +msgid "Attribute \"%s\" of type %s does not exist in type %s." +msgstr "型 %2$s の属性 \"%1$s\" が型 %3$s 中に存在しません" -#: commands/copy.c:1774 utils/adt/genfile.c:106 +#: access/common/heaptuple.c:646 access/common/heaptuple.c:1398 #, c-format -msgid "could not open file \"%s\" for reading: %m" -msgstr "ファイル\"%s\"を読み取り用にオープンできませんでした: %m" +msgid "number of columns (%d) exceeds limit (%d)" +msgstr "列数(%d)が上限(%d)を超えています" -#: commands/copy.c:1887 -msgid "COPY file signature not recognized" -msgstr "COPYファイルのシグネチャが不明です" +#: access/common/reloptions.c:323 +msgid "user-defined relation parameter types limit exceeded" +msgstr "ユーザ定義リレーションのパラメータ型の制限を超えました" -#: commands/copy.c:1892 -msgid "invalid COPY file header (missing flags)" -msgstr "COPYファイルのヘッダが無効です(フラグがありません)" +#: access/common/reloptions.c:622 +msgid "RESET must not include values for parameters" +msgstr "RESETにはパラメータの値を含めてはいけません" -#: commands/copy.c:1898 -msgid "unrecognized critical flags in COPY file header" -msgstr "COPYファイルのヘッダ内の重要なフラグが不明です" +#: access/common/reloptions.c:655 +#, c-format +msgid "unrecognized parameter namespace \"%s\"" +msgstr "未知のパラメータ namaspace \"%s\"" -#: commands/copy.c:1904 -msgid "invalid COPY file header (missing length)" -msgstr "COPYファイルのヘッダが無効です(サイズがありません)" +#: access/common/reloptions.c:898 +#, c-format +msgid "unrecognized parameter \"%s\"" +msgstr "未知のパラメータ \"%s\"" -#: commands/copy.c:1911 -msgid "invalid COPY file header (wrong length)" -msgstr "COPYファイルのヘッダが無効です(サイズが不正です)" +#: access/common/reloptions.c:923 +#, c-format +msgid "parameter \"%s\" specified more than once" +msgstr "パラメータ\"%s\"が複数指定されました" -#: commands/copy.c:2002 -msgid "missing data for OID column" -msgstr "OID列のデータがありません" +#: access/common/reloptions.c:938 +#, c-format +msgid "invalid value for boolean option \"%s\": %s" +msgstr "ブールオプション値 \"%s\" は無効です: %s" -#: commands/copy.c:2008 -msgid "null OID in COPY data" -msgstr "COPYデータのOIDがNULLでした" +#: access/common/reloptions.c:949 +#, c-format +msgid "invalid value for integer option \"%s\": %s" +msgstr "整数値オプションの値 \"%s\" が無効です: %s" -#: commands/copy.c:2018 commands/copy.c:2090 -msgid "invalid OID in COPY data" -msgstr "COPYデータのOIDが無効です" +#: access/common/reloptions.c:954 access/common/reloptions.c:972 +#, c-format +msgid "value %s out of bounds for option \"%s\"" +msgstr "値 %s はオプション \"%s\" の範囲外です" -#: commands/copy.c:2033 +#: access/common/reloptions.c:956 #, c-format -msgid "missing data for column \"%s\"" -msgstr "列\"%s\"のデータがありません" +msgid "Valid values are between \"%d\" and \"%d\"." +msgstr "有効な値の範囲は \"%d\" ~ \"%d\" です。" -#: commands/copy.c:2074 +#: access/common/reloptions.c:967 #, c-format -msgid "row field count is %d, expected %d" -msgstr "行のフィールド数は%d、その期待値は%dです" +msgid "invalid value for floating point option \"%s\": %s" +msgstr "浮動小数点オプションの値 \"%s\" が無効です: %s" -#: commands/copy.c:2217 utils/init/miscinit.c:1000 utils/misc/guc.c:7097 +#: access/common/reloptions.c:974 #, c-format -msgid "could not read from file \"%s\": %m" -msgstr "ファイル\"%s\"から読み取れませんでした: %m" +msgid "Valid values are between \"%f\" and \"%f\"." +msgstr "有効な値の範囲は \"%f\" ~ \"%f\" です。" -#: commands/copy.c:2494 commands/copy.c:2511 -msgid "literal carriage return found in data" -msgstr "データの中に復帰記号そのものがありました" +#: access/common/printtup.c:278 tcop/postgres.c:1664 tcop/fastpath.c:180 +#: tcop/fastpath.c:554 +#, c-format +msgid "unsupported format code: %d" +msgstr "未サポートの書式コード: %d" -#: commands/copy.c:2495 commands/copy.c:2512 -msgid "unquoted carriage return found in data" -msgstr "データの中に引用符のない復帰記号がありました" +#: access/common/indextuple.c:57 +#, c-format +msgid "number of index columns (%d) exceeds limit (%d)" +msgstr "インデックス列数(%d)が上限(%d)を超えています" -#: commands/copy.c:2497 commands/copy.c:2514 -msgid "Use \"\\r\" to represent carriage return." -msgstr "復帰記号は\"\\r\"と表現してください" +#: access/common/indextuple.c:168 +#, c-format +msgid "index row requires %lu bytes, maximum size is %lu" +msgstr "インデックス行は%luバイト要求。最大サイズは%luです" -#: commands/copy.c:2498 commands/copy.c:2515 -msgid "Use quoted CSV field to represent carriage return." -msgstr "復帰記号を表現するにはCSVフィールドを引用符で括ってください" +#: access/gist/gistsplit.c:375 +#, c-format +msgid "picksplit method for column %d of index \"%s\" failed" +msgstr "" +"インデックス\"%2$s\"の列%1$dに対するピックスプリットメソッドが失敗しました" -#: commands/copy.c:2527 -msgid "literal newline found in data" -msgstr "データの中に改行記号そのものがありました" +#: 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 "" +"インデックスは最適ではありません。最適化するためには開発者に連絡するか\n" +"この列をCREATE INDEXコマンドの2番目のものとして使用することを試みてください" -#: commands/copy.c:2528 -msgid "unquoted newline found in data" -msgstr "データの中に引用符のない改行記号がありました" +#: access/gist/gist.c:230 +#, +msgid "unlogged GiST indexes are not supported" +msgstr "ログの取得を行わない(unlogged) GiST インデックスはサポートされません" -#: commands/copy.c:2530 -msgid "Use \"\\n\" to represent newline." -msgstr "改行記号は\"\\n\"と表現してください" +#: access/gist/gist.c:715 access/gist/gistvacuum.c:271 +#, c-format +msgid "index \"%s\" contains an inner tuple marked as invalid" +msgstr "インデックス \"%s\" 内に無効と判断されている内部タプルがあります" -#: commands/copy.c:2531 -msgid "Use quoted CSV field to represent newline." -msgstr "改行記号を表現するにはCSVフィールドを引用符で括ってください" +#: 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 "" -#: commands/copy.c:2577 commands/copy.c:2613 -msgid "end-of-copy marker does not match previous newline style" -msgstr "コピー終端記号がこれまでの改行方式と一致しません" +#: executor/nodeAgg.c:1730 executor/nodeWindowAgg.c:1851 +#, c-format +msgid "aggregate %u needs to have compatible input type and transition type" +msgstr "集約%uは入力データ型と遷移用の型間で互換性が必要です" -#: commands/copy.c:2586 commands/copy.c:2602 -msgid "end-of-copy marker corrupt" -msgstr "コピー終端記号が破損しています" +#: executor/execUtils.c:1304 +#, c-format +msgid "could not create exclusion constraint \"%s\"" +msgstr "排除制約 \"%s\" を作成できませんでした" -#: commands/copy.c:2729 commands/copy.c:2764 commands/copy.c:2944 -#: commands/copy.c:2979 -msgid "extra data after last expected column" -msgstr "推定最終列の後に余計なデータがありました" +#: executor/execUtils.c:1306 +#, c-format +msgid "Key %s conflicts with key %s." +msgstr "キー %s がキー %s と競合しています" -#: commands/copy.c:3026 -msgid "unterminated CSV quoted field" -msgstr "CSV引用符が閉じていません" +#: executor/execUtils.c:1311 +#, c-format +msgid "conflicting key value violates exclusion constraint \"%s\"" +msgstr "重複キーの値が排除制約 \"%s\" に違反しています" -#: commands/copy.c:3103 commands/copy.c:3122 -msgid "unexpected EOF in COPY data" -msgstr "COPYデータの中に想定外のEOFがあります" +#: executor/execUtils.c:1313 +#, c-format +msgid "Key %s conflicts with existing key %s." +msgstr "キー %s が既存のキー %s と競合しています" -#: commands/copy.c:3112 -msgid "invalid field size" -msgstr "フィールドサイズが無効です" +#: executor/nodeMergejoin.c:1604 +msgid "RIGHT JOIN is only supported with merge-joinable join conditions" +msgstr "RIGHT JOINはマージ結合可能な結合条件でのみサポートされています" -#: commands/copy.c:3135 -msgid "incorrect binary data format" -msgstr "バイナリデータ書式が不正です" +#: executor/nodeMergejoin.c:1624 +msgid "FULL JOIN is only supported with merge-joinable join conditions" +msgstr "FULL JOINはマージ結合可能な結合条件でのみサポートされています" -#: commands/copy.c:3441 commands/tablecmds.c:3930 commands/tablecmds.c:4020 -#: commands/tablecmds.c:4067 commands/tablecmds.c:4163 -#: commands/tablecmds.c:4207 commands/tablecmds.c:4286 -#: commands/tablecmds.c:4359 commands/tablecmds.c:5796 -#: commands/tablecmds.c:5934 commands/comment.c:651 commands/sequence.c:1309 -#: commands/trigger.c:527 commands/analyze.c:340 catalog/aclchk.c:1464 -#: utils/adt/acl.c:2770 utils/adt/ruleutils.c:1523 parser/parse_type.c:117 -#: parser/parse_target.c:808 parser/parse_relation.c:1996 -#: parser/parse_relation.c:2051 parser/analyze.c:1814 +#: executor/functions.c:195 #, c-format -msgid "column \"%s\" of relation \"%s\" does not exist" -msgstr "リレーション\"%2$s\"の列\"%1$s\"は存在しません" +msgid "could not determine actual type of argument declared %s" +msgstr "%s都宣言された引数の型を決定できません" -#: commands/copy.c:3453 commands/tablecmds.c:1270 commands/trigger.c:536 -#: parser/parse_target.c:824 parser/parse_target.c:835 +#. translator: %s is a SQL statement name +#: executor/functions.c:295 #, c-format -msgid "column \"%s\" specified more than once" -msgstr "列\"%s\"が複数指定されました" - -#: commands/typecmds.c:163 -msgid "must be superuser to create a base type" -msgstr "基本型を作成できるのはスーパーユーザだけです" +msgid "%s is not allowed in a SQL function" +msgstr "SQL関数では%sは許されません" -#: commands/typecmds.c:218 commands/typecmds.c:795 commands/typecmds.c:1120 -#: commands/typecmds.c:1543 catalog/heap.c:943 catalog/pg_type.c:385 -#: catalog/pg_type.c:665 +#. translator: %s is a SQL statement name +#: executor/functions.c:302 executor/spi.c:1256 executor/spi.c:1891 #, c-format -msgid "type \"%s\" already exists" -msgstr "型\"%s\"はすでに存在します" +msgid "%s is not allowed in a non-volatile function" +msgstr "volatile関数以外では%sは許されません" -#: commands/typecmds.c:267 +#: executor/functions.c:408 #, c-format -msgid "type attribute \"%s\" not recognized" -msgstr "型の属性\"%s\"は不明です" +msgid "" +"could not determine actual result type for function declared to return type %" +"s" +msgstr "戻り値型%sとして宣言された関数の実際の結果型を決定できません" -#: commands/typecmds.c:321 -#, c-format -msgid "invalid type category \"%s\": must be simple ASCII" -msgstr "型カテゴリ \"%s\" が無効です。単純な ASCII でなければなりません" +#: executor/functions.c:785 executor/execQual.c:1613 executor/execQual.c:1638 +#: executor/execQual.c:1999 executor/execQual.c:5115 +#: replication/walsender.c:1387 utils/fmgr/funcapi.c:60 +#: utils/mmgr/portalmem.c:946 foreign/foreign.c:350 commands/prepare.c:751 +#: commands/extension.c:1679 commands/extension.c:1788 +#: commands/extension.c:1981 +msgid "set-valued function called in context that cannot accept a set" +msgstr "このコンテキストで集合値の関数は集合を受け付けられません" -#: commands/typecmds.c:340 +#: executor/functions.c:1146 #, c-format -msgid "array element type cannot be %s" -msgstr "%sを配列要素の型にすることはできません" +msgid "SQL function \"%s\" statement %d" +msgstr "SQL関数\"%s\"の行番号 %d" -#: commands/typecmds.c:372 +#: executor/functions.c:1162 catalog/pg_proc.c:888 #, c-format -msgid "alignment \"%s\" not recognized" -msgstr "アライメント\"%s\"は不明です" +msgid "SQL function \"%s\"" +msgstr "SQL関数\"%s\"" -#: commands/typecmds.c:389 +#: executor/functions.c:1172 #, c-format -msgid "storage \"%s\" not recognized" -msgstr "格納方式\"%s\"は不明です" - -#: commands/typecmds.c:398 -msgid "type input function must be specified" -msgstr "型の入力関数を指定しなければなりません" +msgid "SQL function \"%s\" during startup" +msgstr "SQL関数\"%s\"の起動中" -#: commands/typecmds.c:402 -msgid "type output function must be specified" -msgstr "型の出力関数を指定しなければなりません" +#: 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を返すと宣言された関数において戻り値型が一致しません" -#: commands/typecmds.c:407 +#: executor/functions.c:1334 msgid "" -"type modifier output function is useless without a type modifier input " -"function" -msgstr "型修正入力関数がない場合の型修正出力関数は意味がありません" - -#: commands/typecmds.c:430 -#, c-format -msgid "changing return type of function %s from \"opaque\" to %s" -msgstr "関数%sの戻り値型を\"opaque\"から%sに変更しています" +"Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING." +msgstr "" +"関数の最後のステートメントは SELECT もしくは RETURNING 付きのINSERT/UPDATE/" +"DELETE のいずれかでなければなりません" -#: commands/typecmds.c:437 -#, c-format -msgid "type input function %s must return type %s" -msgstr "型の入力関数%sは型%sを返さなければなりません" +#: executor/functions.c:1370 +msgid "Final statement must return exactly one column." +msgstr "最後のステートメントは正確に1列を返さなければなりません" -#: commands/typecmds.c:447 +#: executor/functions.c:1382 #, c-format -msgid "changing return type of function %s from \"opaque\" to \"cstring\"" -msgstr "関数%sの戻り値型を\"opaque\"から\"cstring\"に変更しています" +msgid "Actual return type is %s." +msgstr "実際の戻り値型は%sです" -#: commands/typecmds.c:454 -#, c-format -msgid "type output function %s must return type \"cstring\"" -msgstr "型の出力関数%sは型\"cstring\"を返さなければなりません" +#: executor/functions.c:1495 +msgid "Final statement returns too many columns." +msgstr "最後のステートメントが返す列が多すぎます" -#: commands/typecmds.c:463 +#: executor/functions.c:1528 #, c-format -msgid "type receive function %s must return type %s" -msgstr "型の受信関数%sは型%sを返さなければなりません" +msgid "Final statement returns %s instead of %s at column %d." +msgstr "最後のステートメントが列 %3$d で %2$s ではなく %1$s を返しました" -#: commands/typecmds.c:472 -#, c-format -msgid "type send function %s must return type \"bytea\"" -msgstr "型の送信関数%sは型\"bytea\"を返さなければなりません" +#: executor/functions.c:1558 +msgid "Final statement returns too few columns." +msgstr "最後のステートメントが返す列が少なすぎます" -#: commands/typecmds.c:650 commands/typecmds.c:2572 commands/tablecmds.c:216 -#: commands/functioncmds.c:126 utils/adt/regproc.c:973 parser/parse_type.c:196 -#: parser/parse_func.c:1463 +#: executor/functions.c:1607 #, c-format -msgid "type \"%s\" does not exist" -msgstr "型\"%s\"は存在しません" +msgid "return type %s is not supported for SQL functions" +msgstr "戻り値型%sはSQL関数でサポートされていません" -#: commands/typecmds.c:656 commands/tablecmds.c:217 +#: executor/execMain.c:995 #, c-format -msgid "type \"%s\" does not exist, skipping" -msgstr "型\"%s\"は存在しません。省略します" +msgid "cannot change sequence \"%s\"" +msgstr "シーケンス\"%s\"を変更できません" -#: commands/typecmds.c:677 commands/typecmds.c:2205 +#: executor/execMain.c:1001 #, c-format -msgid "\"%s\" is not a domain" -msgstr "\"%s\"はドメインではありません" +msgid "cannot change TOAST relation \"%s\"" +msgstr "TOASTリレーション\"%s\"を変更できません" -#: commands/typecmds.c:816 +#: executor/execMain.c:1011 #, c-format -msgid "\"%s\" is not a valid base type for a domain" -msgstr "\"%s\"はドメインの基本型として無効です" - -#: commands/typecmds.c:885 -msgid "multiple default expressions" -msgstr "デフォルト式が複数あります" - -#: commands/typecmds.c:949 commands/typecmds.c:958 -msgid "conflicting NULL/NOT NULL constraints" -msgstr "NULL制約とNOT NULL制約が競合しています" +msgid "cannot insert into view \"%s\"" +msgstr "ビュー \"%s\" へは挿入(INSERT)できません" -#: commands/typecmds.c:977 commands/typecmds.c:1902 -msgid "unique constraints not possible for domains" -msgstr "ドメインでは一意性制約は使用できません" +#: executor/execMain.c:1013 +#, +msgid "" +"You need an unconditional ON INSERT DO INSTEAD rule or an INSTEAD OF INSERT " +"trigger." +msgstr "無条件の ON INSERT DO INSTEAD ルールもしくは" +" INSTEAD OF INSERT トリガーが必要です" -#: commands/typecmds.c:983 commands/typecmds.c:1908 -msgid "primary key constraints not possible for domains" -msgstr "ドメインではプライマリキー制約はできません" +#: executor/execMain.c:1019 +#, c-format +msgid "cannot update view \"%s\"" +msgstr "ビュー \"%s\" は更新できません" -#: commands/typecmds.c:989 commands/typecmds.c:1914 -msgid "exclusion constraints not possible for domains" -msgstr "ドメインでは排除制約は使用できません" +#: executor/execMain.c:1021 +#, +msgid "" +"You need an unconditional ON UPDATE DO INSTEAD rule or an INSTEAD OF UPDATE " +"trigger." +msgstr "無条件の ON UPDATE DO INSTEAD ルールもしくは" +" INSTEAD OF UPDATE トリガーが必要です" -#: commands/typecmds.c:995 commands/typecmds.c:1920 -msgid "foreign key constraints not possible for domains" -msgstr "ドメイン用の外部キー制約はできません" +#: executor/execMain.c:1027 +#, c-format +msgid "cannot delete from view \"%s\"" +msgstr "ビュー \"%s\" からは削除できません" -#: commands/typecmds.c:1004 commands/typecmds.c:1929 -msgid "specifying constraint deferrability not supported for domains" -msgstr "ドメインでは制約遅延の指定はサポートしていません" +#: executor/execMain.c:1029 +#, +msgid "" +"You need an unconditional ON DELETE DO INSTEAD rule or an INSTEAD OF DELETE " +"trigger." +msgstr "無条件の ON DELETE DO INSTEAD ルールもしくは" +" INSTEAD OF DELETE トリガーが必要です" -#: commands/typecmds.c:1251 +#: executor/execMain.c:1039 #, c-format -msgid "changing argument type of function %s from \"opaque\" to \"cstring\"" -msgstr "関数%sの引数型を\"opaque\"から\"cstring\"に変更しています" +msgid "cannot change foreign table \"%s\"" +msgstr "外部テーブル \"%s\"を変更できません" -#: commands/typecmds.c:1269 commands/typecmds.c:1320 commands/typecmds.c:1351 -#: commands/typecmds.c:1374 commands/typecmds.c:1395 commands/typecmds.c:1422 -#: commands/typecmds.c:1449 catalog/pg_aggregate.c:331 parser/parse_func.c:286 -#: parser/parse_func.c:1442 +#: executor/execMain.c:1045 #, c-format -msgid "function %s does not exist" -msgstr "関数%sは存在しません" +msgid "cannot change relation \"%s\"" +msgstr "リレーション\"%s\"を変更できません" -#: commands/typecmds.c:1302 +#: executor/execMain.c:1069 #, c-format -msgid "changing argument type of function %s from \"opaque\" to %s" -msgstr "関数%sの引数型を\"opaque\"から%sに変更しています" +msgid "cannot lock rows in sequence \"%s\"" +msgstr "シーケンス \"%s\" では行のロックはできません" -#: commands/typecmds.c:1401 +#: executor/execMain.c:1076 #, c-format -msgid "typmod_in function %s must return type \"integer\"" -msgstr "typmod_in関数%sは\"integer\"型を返さなければなりません" +msgid "cannot lock rows in TOAST relation \"%s\"" +msgstr "TOAST リレーション \"%s\" では行のロックはできません" -#: commands/typecmds.c:1428 +#: executor/execMain.c:1083 #, c-format -msgid "typmod_out function %s must return type \"cstring\"" -msgstr "typmod_out関数%sは型\"cstring\"を返さなければなりません" +msgid "cannot lock rows in view \"%s\"" +msgstr "ビュー \"%s\" では行のロックはできません" -#: commands/typecmds.c:1455 +#: executor/execMain.c:1090 #, c-format -msgid "type analyze function %s must return type \"boolean\"" -msgstr "型の解析関数%sは\"boolean\"型を返さなければなりません" - -#: commands/typecmds.c:1513 -msgid "composite type must have at least one attribute" -msgstr "複合型は少なくとも1つの属性を持たなければなりません" +msgid "cannot lock rows in foreign table \"%s\"" +msgstr "外部テーブル \"%s\" では行のロックはできません" -#: commands/typecmds.c:1754 +#: executor/execMain.c:1096 #, c-format -msgid "column \"%s\" of table \"%s\" contains null values" -msgstr "テーブル\"%2$s\"の列\"%1$s\"にNULL値があります" +msgid "cannot lock rows in relation \"%s\"" +msgstr "リレーション \"%s\" では行のロックはできません" -#: commands/typecmds.c:2000 +#: executor/execMain.c:1567 #, c-format -msgid "" -"column \"%s\" of table \"%s\" contains values that violate the new constraint" -msgstr "テーブル\"%2$s\"の列\"%1$s\"に新しい制約に違反する値があります" +msgid "null value in column \"%s\" violates not-null constraint" +msgstr "列\"%s\"内のNULL値はNOT NULL制約違反です" -#: commands/typecmds.c:2239 catalog/pg_constraint.c:648 +#: executor/execMain.c:1579 #, c-format -msgid "constraint \"%s\" for domain \"%s\" already exists" -msgstr "ドメイン\"%2$s\"の制約\"%1$s\"はすでに存在します" - -#: commands/typecmds.c:2281 commands/typecmds.c:2290 -msgid "cannot use table references in domain check constraint" -msgstr "ドメインの検査制約ではテーブル参照を使用できません" +msgid "new row for relation \"%s\" violates check constraint \"%s\"" +msgstr "リレーション\"%s\"の新しい行は検査制約\"%s\"に違反しています" -#: commands/typecmds.c:2298 catalog/heap.c:2330 -msgid "cannot use subquery in check constraint" -msgstr "チェック制約では副問い合わせを使用できません" +#: executor/execMain.c:1863 executor/nodeLockRows.c:137 +#: executor/nodeModifyTable.c:366 executor/nodeModifyTable.c:582 +#: commands/trigger.c:2589 +msgid "could not serialize access due to concurrent update" +msgstr "同時更新のため直列化アクセスができませんでした" -#: commands/typecmds.c:2302 catalog/heap.c:2334 -msgid "cannot use aggregate function in check constraint" -msgstr "チェック制約では集約関数を使用できません" +#: executor/execMain.c:2415 commands/tablecmds.c:425 +msgid "ON COMMIT can only be used on temporary tables" +msgstr "ON COMMITは一時テーブルでのみ使用できます" -#: commands/typecmds.c:2306 catalog/heap.c:2338 -msgid "cannot use window function in check constraint" -msgstr "チェック制約ではウィンドウ関数を使用できません" +#: executor/execMain.c:2426 commands/tablecmds.c:440 +msgid "cannot create temporary table within security-restricted operation" +msgstr "セキュリティー制限操作中は、一時テーブルを作成できません" -#: commands/typecmds.c:2519 commands/typecmds.c:2591 commands/typecmds.c:2822 +#: executor/nodeHashjoin.c:814 executor/nodeHashjoin.c:844 #, c-format -msgid "%s is a table's row type" -msgstr "%sはテーブルの行型です" +msgid "could not rewind hash-join temporary file: %m" +msgstr "ハッシュ結合用一時ファイルを巻き戻しできません" -#: commands/typecmds.c:2521 commands/typecmds.c:2593 commands/typecmds.c:2824 -msgid "Use ALTER TABLE instead." -msgstr "代わりにALTER TABLEを使用してください" - -#: commands/typecmds.c:2528 commands/typecmds.c:2600 commands/typecmds.c:2739 -#, c-format -msgid "cannot alter array type %s" -msgstr "配列型%sを変更できません" - -#: commands/typecmds.c:2530 commands/typecmds.c:2602 commands/typecmds.c:2741 +#: executor/nodeHashjoin.c:879 executor/nodeHashjoin.c:885 #, c-format -msgid "You can alter type %s, which will alter the array type as well." -msgstr "型%sを変更することができます。これは同時にその配列型も変更します。" +msgid "could not write to hash-join temporary file: %m" +msgstr "ハッシュ結合用一時ファイルを書き出せません: %m" -#: commands/typecmds.c:2786 +#: executor/nodeHashjoin.c:919 executor/nodeHashjoin.c:929 #, c-format -msgid "type %s is already in schema \"%s\"" -msgstr "型%sはすでにスキーマ\"%s\"内に存在します" - -#: commands/typecmds.c:2794 commands/tablecmds.c:7801 -#: commands/functioncmds.c:1887 -msgid "cannot move objects into or out of temporary schemas" -msgstr "一時スキーマへ、または一時スキーマからオブジェクトを移動できません" - -#: commands/typecmds.c:2800 commands/tablecmds.c:7807 -#: commands/functioncmds.c:1893 -msgid "cannot move objects into or out of TOAST schema" -msgstr "TOASTスキーマへ、またはTOASTスキーマからオブジェクトを移動できません" +msgid "could not read from hash-join temporary file: %m" +msgstr "ハッシュ結合用一時ファイルから読み取れません: %m" -#: commands/typecmds.c:2808 +#: executor/execCurrent.c:66 utils/adt/xml.c:2046 utils/adt/xml.c:2210 +#: commands/portalcmds.c:168 commands/portalcmds.c:222 #, c-format -msgid "type \"%s\" already exists in schema \"%s\"" -msgstr "型\"%s\"はスキーマ\"%s\"内にすでに存在します" +msgid "cursor \"%s\" does not exist" +msgstr "カーソル\"%s\"は存在しません" -#: commands/opclasscmds.c:190 commands/opclasscmds.c:701 +#: executor/execCurrent.c:75 #, c-format -msgid "operator family \"%s\" for access method \"%s\" already exists" -msgstr "アクセスメソッド\"%2$s\"の演算子族\"%1$s\"はすでに存在します" - -#: commands/opclasscmds.c:320 -msgid "must be superuser to create an operator class" -msgstr "演算子クラスを作成するにはスーパーユーザでなければなりません" +msgid "cursor \"%s\" is not a SELECT query" +msgstr "カーソル\"%s\"はSELECT問い合わせではありません" -#: commands/opclasscmds.c:343 commands/opclasscmds.c:789 -#: commands/opclasscmds.c:1568 commands/opclasscmds.c:1572 -#: commands/opclasscmds.c:1833 commands/opclasscmds.c:1844 -#: commands/opclasscmds.c:2069 commands/opclasscmds.c:2080 -#: commands/comment.c:1370 commands/comment.c:1378 +#: executor/execCurrent.c:81 #, c-format -msgid "operator family \"%s\" does not exist for access method \"%s\"" -msgstr "アクセスメソッド\"%2$s\"用の演算子族\"%1$s\"は存在しません" +msgid "cursor \"%s\" is held from a previous transaction" +msgstr "カーソル\"%s\"は以前のトランザクションから保持されています" -#: commands/opclasscmds.c:403 commands/opclasscmds.c:849 -#: commands/opclasscmds.c:971 +#: executor/execCurrent.c:113 #, c-format -msgid "invalid operator number %d, must be between 1 and %d" -msgstr "演算子番号%dが無効です。1から%dまででなければなりません" +msgid "cursor \"%s\" has multiple FOR UPDATE/SHARE references to table \"%s\"" +msgstr "" +"カーソル \"%s\" にはテーブル \"%s\" に対する複数の FOR UPDATE/SHARE参照が含ま" +"れています" -#: commands/opclasscmds.c:446 commands/opclasscmds.c:892 -#: commands/opclasscmds.c:986 +#: executor/execCurrent.c:122 #, c-format -msgid "invalid procedure number %d, must be between 1 and %d" -msgstr "プロシージャ番号%dが無効です。1から%dまででなければなりません" - -#: commands/opclasscmds.c:476 -msgid "storage type specified more than once" -msgstr "格納型が複数指定されました" +msgid "" +"cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\"" +msgstr "" +"カーソル \"%s\" はテーブル \"%s\" への FOR UPDATE/SHARE 参照を持っていません" -#: commands/opclasscmds.c:504 +#: executor/execCurrent.c:132 executor/execCurrent.c:178 #, c-format -msgid "" -"storage type cannot be different from data type for access method \"%s\"" -msgstr "アクセスメソッド\"%s\"用のデータ型と異なる格納型を使用できません" +msgid "cursor \"%s\" is not positioned on a row" +msgstr "カーソル\"%s\"は行上に位置していません" -#: commands/opclasscmds.c:520 +#: executor/execCurrent.c:165 #, c-format -msgid "operator class \"%s\" for access method \"%s\" already exists" -msgstr "アクセスメソッド\"%2$s\"の演算子クラス\"%1$s\"はすでに存在します" +msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\"" +msgstr "カーソル\"%s\"はテーブル\"%s\"を単純な更新可能スキャンではありません" -#: commands/opclasscmds.c:548 +#: executor/execCurrent.c:230 executor/execQual.c:1033 #, c-format -msgid "could not make operator class \"%s\" be default for type %s" -msgstr "演算子クラス\"%s\"を型%sのデフォルトにすることができませんでした" +msgid "" +"type of parameter %d (%s) does not match that when preparing the plan (%s)" +msgstr "パラメータの型 %d (%s) がプラン (%s) を準備する時点と一致しません" -#: commands/opclasscmds.c:551 +#: executor/execCurrent.c:242 executor/execQual.c:1045 #, c-format -msgid "Operator class \"%s\" already is the default." -msgstr "演算子クラス\"%s\"はすでにデフォルトです。" +msgid "no value found for parameter %d" +msgstr "パラメータ%dの値がありません" -#: commands/opclasscmds.c:687 -msgid "must be superuser to create an operator family" -msgstr "演算子族を作成するにはスーパーユーザでなければなりません" +#: 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 "副問い合わせで1行を超える行を返すものが式として使用されました" -#: commands/opclasscmds.c:802 -msgid "must be superuser to alter an operator family" -msgstr "演算子族を変更するにはスーパーユーザでなければなりません" +#: executor/nodeWindowAgg.c:1238 +msgid "frame starting offset must not be null" +msgstr "フレームポインタのオフセットは NULL であってはなりません" -#: commands/opclasscmds.c:865 -msgid "operator argument types must be specified in ALTER OPERATOR FAMILY" -msgstr "演算子の引数型はALTER OPERATOR FAMILYで指定しなければなりません" +#: executor/nodeWindowAgg.c:1251 +msgid "frame starting offset must not be negative" +msgstr "フレーム開始オフセットは負数であってはなりません" -#: commands/opclasscmds.c:921 -msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY" -msgstr "ALTER OPERATOR FAMILYではSTORAGEを指定できません" +#: executor/nodeWindowAgg.c:1264 +msgid "frame ending offset must not be null" +msgstr "フレーム終了オフセットは NULL であってはなりません" -#: commands/opclasscmds.c:1037 -msgid "one or two argument types must be specified" -msgstr "1または2つの引数型が指定されなければなりません" +#: executor/nodeWindowAgg.c:1277 +msgid "frame ending offset must not be negative" +msgstr "フレーム終了オフセットは負数であってはなりません" -#: commands/opclasscmds.c:1063 -msgid "index operators must be binary" -msgstr "インデックス演算子は二項演算子でなければなりません" +#: executor/spi.c:210 +msgid "transaction left non-empty SPI stack" +msgstr "トランザクションは空でないSPIスタックを残しました" -#: commands/opclasscmds.c:1067 -msgid "index operators must return boolean" -msgstr "インデックス演算子は論理型を返さなければなりません" +#: executor/spi.c:211 executor/spi.c:275 +msgid "Check for missing \"SPI_finish\" calls." +msgstr "\"SPI_finish\"呼出の抜けを確認ください" -#: commands/opclasscmds.c:1105 -msgid "btree procedures must have two arguments" -msgstr "btreeプロシージャは2つの引数を取らなければなりません" +#: executor/spi.c:274 +msgid "subtransaction left non-empty SPI stack" +msgstr "サブトランザクションが空でないSPIスタックを残しました" -#: commands/opclasscmds.c:1109 -msgid "btree procedures must return integer" -msgstr "btreeプロシージャは整数を返さなければなりません" +#: executor/spi.c:1137 +msgid "cannot open multi-query plan as cursor" +msgstr "カーソルにマルチクエリプランを開くことができません" -#: commands/opclasscmds.c:1124 -msgid "hash procedures must have one argument" -msgstr "ハッシュプロシージャは1つの引数を取らなければなりません" +#. 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/opclasscmds.c:1128 -msgid "hash procedures must return integer" -msgstr "ハッシュプロシージャは整数を返さなければなりません" +#: executor/spi.c:1233 parser/analyze.c:2206 +msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHAREはサポートされていません" -#: commands/opclasscmds.c:1153 -msgid "associated data types must be specified for index support procedure" -msgstr "" -"関連するデータ型はインデックスサポートプロシージャで指定されなければなりませ" -"ん" +#: executor/spi.c:1234 parser/analyze.c:2207 +msgid "Scrollable cursors must be READ ONLY." +msgstr "スクロール可能カーソルは読み取りのみでなければなりません" -#: commands/opclasscmds.c:1179 +#: executor/spi.c:2157 #, c-format -msgid "procedure number %d for (%s,%s) appears more than once" -msgstr "(%2$s,%3$s)用のプロシージャ番号%1$dが複数あります" +msgid "SQL statement \"%s\"" +msgstr "SQL文 \"%s\"" -#: commands/opclasscmds.c:1186 +#: 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:4940 #, c-format -msgid "operator number %d for (%s,%s) appears more than once" -msgstr "(%2$s,%3$s)用の演算子番号%1$dが複数あります" +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgstr "配列の次数(%d)が上限(%d)を超えています" -#: commands/opclasscmds.c:1234 -#, c-format -msgid "operator %d(%s,%s) already exists in operator family \"%s\"" -msgstr "演算子%d(%s,%s)はすでに演算子族\"%s\"に存在します" +#: executor/execQual.c:311 executor/execQual.c:339 +msgid "array subscript in assignment must not be null" +msgstr "代入における配列の添え字はNULLではいけません" -#: commands/opclasscmds.c:1334 +#: executor/execQual.c:635 executor/execQual.c:3905 #, c-format -msgid "function %d(%s,%s) already exists in operator family \"%s\"" -msgstr "関数%d(%s,%s)はすでに演算子族\"%s\"内に存在します" +msgid "attribute %d has wrong type" +msgstr "属性%dの型が間違っています" -#: commands/opclasscmds.c:1421 +#: executor/execQual.c:636 executor/execQual.c:3906 #, c-format -msgid "operator %d(%s,%s) does not exist in operator family \"%s\"" -msgstr "演算子%d(%s,%s)は演算子族\"%s\"内にありません" +msgid "Table has type %s, but query expects %s." +msgstr "テーブルの型は%sですが、問い合わせでは%sを想定しています。" -#: commands/opclasscmds.c:1461 -#, c-format -msgid "function %d(%s,%s) does not exist in operator family \"%s\"" -msgstr "関数%d(%s,%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 "テーブルの行型と問い合わせで指定した行型が一致しません" -#: commands/opclasscmds.c:1768 +#: executor/execQual.c:701 #, c-format -msgid "" -"operator class \"%s\" for access method \"%s\" already exists in schema \"%s" -"\"" -msgstr "" -"アクセスメソッド\"%2$s\"用の演算子クラス\"%1$s\"はスキーマ\"%3$s\"内にすでに" -"存在します" +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を想定しています。" +msgstr[1] "テーブル行には%d属性ありますが、問い合わせでは%dを想定しています。" -#: commands/opclasscmds.c:1862 +#: executor/execQual.c:720 executor/nodeModifyTable.c:93 #, c-format -msgid "" -"operator family \"%s\" for access method \"%s\" already exists in schema \"%s" -"\"" +msgid "Table has type %s at ordinal position %d, but query expects %s." msgstr "" -"アクセスメソッド\"%2$s\"用の演算子族\"%1$s\"はスキーマ\"%3$s\"内にすでに存在" -"します" - -#: commands/portalcmds.c:61 commands/portalcmds.c:160 -#: commands/portalcmds.c:212 -msgid "invalid cursor name: must not be empty" -msgstr "カーソル名が無効です: 空ではいけません" - -#: commands/portalcmds.c:402 -msgid "could not reposition held cursor" -msgstr "保持したカーソルの位置を変更できませんでした" +"テーブルでは %2$d 番目の型は %1$s ですが、問い合わせでは %3$s を想定していま" +"す。" -#: commands/tablecmds.c:192 +#: executor/execQual.c:919 executor/execQual.c:1519 #, c-format -msgid "table \"%s\" does not exist" -msgstr "テーブル\"%s\"は存在しません" +msgid "Physical storage mismatch on dropped attribute at ordinal position %d." +msgstr "序数位置%dの削除された属性における物理格納方式が一致しません。" -#: commands/tablecmds.c:193 +#: executor/execQual.c:1198 parser/parse_func.c:91 parser/parse_func.c:323 +#: parser/parse_func.c:640 #, c-format -msgid "table \"%s\" does not exist, skipping" -msgstr "テーブル\"%s\"は存在しません。省略します" +msgid "cannot pass more than %d argument to a function" +msgid_plural "cannot pass more than %d arguments to a function" +msgstr[0] "関数に%dを超える引数を渡せません" +msgstr[1] "関数に%dを超える引数を渡せません" -#: commands/tablecmds.c:195 -msgid "Use DROP TABLE to remove a table." -msgstr "テーブルを削除するにはDROP TABLEを使用してください。" +#: executor/execQual.c:1387 +msgid "functions and operators can take at most one set argument" +msgstr "関数と演算子は多くても1つの集合引数を取ることができます" -#: commands/tablecmds.c:198 -#, c-format -msgid "sequence \"%s\" does not exist" -msgstr "シーケンス\"%s\"は存在しません" +#: executor/execQual.c:1437 +msgid "" +"function returning setof record called in context that cannot accept type " +"record" +msgstr "" +"複数行レコードを返す関数が、レコード型を受け付けない文脈で呼び出されました" + +#: 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 "問い合わせが指定した戻り値の行と実際の関数の戻り値の行が一致しません" -#: commands/tablecmds.c:199 +#: executor/execQual.c:1493 #, c-format -msgid "sequence \"%s\" does not exist, skipping" -msgstr "シーケンス\"%s\"は存在しません。省略します" +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を想定しています。" +msgstr[1] "%d属性を持つ行が返されました。問い合わせでは%dを想定しています。" -#: commands/tablecmds.c:200 commands/tablecmds.c:2130 -#: commands/tablecmds.c:2349 commands/tablecmds.c:7732 commands/comment.c:566 -#: commands/sequence.c:953 catalog/aclchk.c:1729 utils/adt/acl.c:2006 -#: utils/adt/acl.c:2036 utils/adt/acl.c:2068 utils/adt/acl.c:2100 -#: utils/adt/acl.c:2128 utils/adt/acl.c:2158 +#: executor/execQual.c:1509 #, c-format -msgid "\"%s\" is not a sequence" -msgstr "\"%s\"はシーケンスではありません" +msgid "Returned type %s at ordinal position %d, but query expects %s." +msgstr "" +"序数位置%2$dの型%1$sが返されました。問い合わせでは%3$sを想定しています。" -#: commands/tablecmds.c:201 -msgid "Use DROP SEQUENCE to remove a sequence." -msgstr "シーケンスを削除するにはDROP SEQUENCEを使用してください。" +#: executor/execQual.c:1745 executor/execQual.c:2170 +msgid "table-function protocol for materialize mode was not followed" +msgstr "materializeモードではテーブル関数プロトコルに従いません" -#: commands/tablecmds.c:204 +#: executor/execQual.c:1765 executor/execQual.c:2177 #, c-format -msgid "view \"%s\" does not exist" -msgstr "ビュー\"%s\"は存在しません" +msgid "unrecognized table-function returnMode: %d" +msgstr "テーブル関数のreturnModeが不明です: %d" -#: commands/tablecmds.c:205 -#, c-format -msgid "view \"%s\" does not exist, skipping" -msgstr "ビュー\"%s\"は存在しません。省略します" +#: executor/execQual.c:2087 +msgid "function returning set of rows cannot return null value" +msgstr "行の集合を返す関数はNULL値を返すことはできません" -#: commands/tablecmds.c:206 commands/tablecmds.c:2136 -#: commands/tablecmds.c:2357 commands/tablecmds.c:7740 commands/comment.c:580 -#: commands/view.c:163 -#, c-format -msgid "\"%s\" is not a view" -msgstr "\"%s\"はビューではありません" +#: executor/execQual.c:2144 +msgid "rows returned by function are not all of the same row type" +msgstr "関数から戻された行はすべてが同じ行型ではありません" -#: commands/tablecmds.c:207 -msgid "Use DROP VIEW to remove a view." -msgstr "ビューを削除するにはDROP VIEWを使用してください。" +#: executor/execQual.c:2335 +msgid "IS DISTINCT FROM does not support set arguments" +msgstr "IS DISTINCT FROM は集合引数をサポートしません" -#: commands/tablecmds.c:210 -#, c-format -msgid "index \"%s\" does not exist" -msgstr "インデックス\"%s\"は存在しません" +#: executor/execQual.c:2412 +msgid "op ANY/ALL (array) does not support set arguments" +msgstr "op ANY/ALL (array)は集合引数をサポートしません" -#: commands/tablecmds.c:211 -#, c-format -msgid "index \"%s\" does not exist, skipping" -msgstr "インデックス\"%s\"は存在しません。省略します" +#: executor/execQual.c:2734 commands/analyze.c:1513 +msgid "could not convert row type" +msgstr "行の型に変換できませんでした" -#: commands/tablecmds.c:213 -msgid "Use DROP INDEX to remove an index." -msgstr "インデックスを削除するにはDROP INDEXを使用してください" +#: executor/execQual.c:2965 +msgid "cannot merge incompatible arrays" +msgstr "互換性がない配列をマージできません" -#: commands/tablecmds.c:218 +#: executor/execQual.c:2966 #, c-format -msgid "\"%s\" is not a type" -msgstr "\"%s\"は型ではありません" - -#: commands/tablecmds.c:219 -msgid "Use DROP TYPE to remove a type." -msgstr "型を削除するにはDROP TYPEを使用してください" +msgid "" +"Array with element type %s cannot be included in ARRAY construct with " +"element type %s." +msgstr "要素型%sの配列を要素型%sのARRAY式に含められません" -#: commands/tablecmds.c:873 -#, c-format -msgid "truncate cascades to table \"%s\"" -msgstr "テーブル\"%s\"へのカスケードを削除します" +#: executor/execQual.c:3007 executor/execQual.c:3034 +#: utils/adt/arrayfuncs.c:542 +msgid "" +"multidimensional arrays must have array expressions with matching dimensions" +msgstr "多次元配列は次数に合った配列式を持たなければなりません" -#: commands/tablecmds.c:1103 -msgid "cannot truncate temporary tables of other sessions" -msgstr "他のセッションの一時テーブルを削除できません" +#: executor/execQual.c:3549 +msgid "NULLIF does not support set arguments" +msgstr "NULLIFは集合引数をサポートしません" -#: commands/tablecmds.c:1219 commands/tablecmds.c:1603 -#: commands/tablecmds.c:3703 catalog/heap.c:380 +#: executor/execQual.c:3779 utils/adt/domains.c:128 #, c-format -msgid "tables can have at most %d columns" -msgstr "テーブルは最大で%d列持つことができます" +msgid "domain %s does not allow null values" +msgstr "ドメイン%sはNULL値を許しません" -#: commands/tablecmds.c:1298 parser/parse_utilcmd.c:578 -#: parser/parse_utilcmd.c:1396 +#: executor/execQual.c:3808 utils/adt/domains.c:164 #, c-format -msgid "inherited relation \"%s\" is not a table" -msgstr "継承されるリレーション\"%s\"はテーブルではありません" +msgid "value for domain %s violates check constraint \"%s\"" +msgstr "ドメイン%sの値が検査制約\"%s\"に違反しています" -#: commands/tablecmds.c:1304 commands/tablecmds.c:7145 -#, c-format -msgid "cannot inherit from temporary relation \"%s\"" -msgstr "一時リレーション\"%s\"から継承することはできません" +#: executor/execQual.c:4288 parser/parse_agg.c:164 +#: optimizer/util/clauses.c:608 +msgid "aggregate function calls cannot be nested" +msgstr "集約関数の呼び出しを入れ子にすることはできません" -#: commands/tablecmds.c:1321 commands/tablecmds.c:7173 -#, c-format -msgid "relation \"%s\" would be inherited from more than once" -msgstr "リレーション\"%s\"が複数回継承されました" +#: executor/execQual.c:4326 parser/parse_agg.c:211 +#: optimizer/util/clauses.c:682 +msgid "window function calls cannot be nested" +msgstr "ウィンドウ関数の呼び出しを入れ子にすることはできません" -#: commands/tablecmds.c:1376 -#, c-format -msgid "merging multiple inherited definitions of column \"%s\"" -msgstr "複数の継承される列\"%s\"の定義をマージしています" +#: executor/execQual.c:4538 +msgid "target type is not an array" +msgstr "対照型は配列ではありません" -#: commands/tablecmds.c:1384 +#: executor/execQual.c:4651 #, c-format -msgid "inherited column \"%s\" has a type conflict" -msgstr "継承される列\"%s\"の型が競合しています" +msgid "ROW() column has type %s instead of type %s" +msgstr "ROW()の列は型%2$sではなく型%1$sを持ちます" -#: commands/tablecmds.c:1386 commands/tablecmds.c:1398 -#: commands/tablecmds.c:1558 commands/tablecmds.c:1570 -#: parser/parse_coerce.c:1438 parser/parse_coerce.c:1457 -#: parser/parse_coerce.c:1502 parser/parse_param.c:214 +#: executor/execQual.c:4786 utils/adt/rowtypes.c:922 +#: utils/adt/arrayfuncs.c:3378 #, c-format -msgid "%s versus %s" -msgstr "%s対%s" +msgid "could not identify a comparison function for type %s" +msgstr "型%sの比較関数を識別できません" -#: commands/tablecmds.c:1396 -#, c-format -msgid "inherited column \"%s\" has a storage parameter conflict" -msgstr "継承される列 \"%s\" の格納パラメーターが競合しています" +#: executor/nodeModifyTable.c:83 +msgid "Query has too many columns." +msgstr "問い合わせの列が多すぎます" -#: commands/tablecmds.c:1548 +#: executor/nodeModifyTable.c:110 #, c-format -msgid "merging column \"%s\" with inherited definition" -msgstr "継承される定義で列 \"%s\" をマージしています" +msgid "Query provides a value for a dropped column at ordinal position %d." +msgstr "クエリーで %d 番目に削除されるカラムの値を指定しています。" + +#: executor/nodeModifyTable.c:118 +msgid "Query has too few columns." +msgstr "問い合わせの列が少なすぎます" + +#: executor/nodeLimit.c:253 +msgid "OFFSET must not be negative" +msgstr "OFFSET は負数であってはなりません" + +#: executor/nodeLimit.c:280 +msgid "LIMIT must not be negative" +msgstr "LIMIT は負数であってはなりません" -#: commands/tablecmds.c:1556 +#: nodes/print.c:85 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 tcop/postgres.c:4297 +#: storage/lmgr/deadlock.c:942 storage/lmgr/deadlock.c:943 +#: utils/fmgr/dfmgr.c:381 utils/adt/xml.c:1366 utils/adt/xml.c:1367 +#: utils/adt/xml.c:1373 utils/adt/xml.c:1444 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 port/win32/security.c:51 commands/tablecmds.c:688 +#: commands/trigger.c:899 commands/trigger.c:915 commands/trigger.c:927 +#: commands/user.c:956 commands/user.c:957 #, c-format -msgid "column \"%s\" has a type conflict" -msgstr "列\"%s\"の型が競合しています" +msgid "%s" +msgstr "%s" -#: commands/tablecmds.c:1568 +#: nodes/nodeFuncs.c:114 nodes/nodeFuncs.c:140 parser/parse_oper.c:948 +#: parser/parse_expr.c:1633 parser/parse_func.c:367 parser/parse_coerce.c:1645 +#: parser/parse_coerce.c:1662 parser/parse_coerce.c:1724 #, c-format -msgid "column \"%s\" has a storage parameter conflict" -msgstr "列 \"%s\" の格納パラメーターが競合しています" +msgid "could not find array type for data type %s" +msgstr "データ型%sの配列型がありませんでした" -#: commands/tablecmds.c:1620 +#: parser/parse_target.c:382 parser/parse_target.c:670 #, c-format -msgid "column \"%s\" inherits conflicting default values" -msgstr "列\"%s\"は競合するデフォルト値を継承します" +msgid "cannot assign to system column \"%s\"" +msgstr "システム列\"%s\"に代入できません" -#: commands/tablecmds.c:1622 -msgid "To resolve the conflict, specify a default explicitly." -msgstr "競合を解消するには明示的にデフォルトを指定してください" +#: parser/parse_target.c:410 +msgid "cannot set an array element to DEFAULT" +msgstr "配列要素にDEFAULTを設定できません" -#: commands/tablecmds.c:1669 +#: parser/parse_target.c:415 +msgid "cannot set a subfield to DEFAULT" +msgstr "サブフィールドにDEFAULTを設定できません" + +#: parser/parse_target.c:484 #, c-format -msgid "" -"check constraint name \"%s\" appears multiple times but with different " -"expressions" -msgstr "異なる式を持つ検査制約名\"%s\"が複数あります。" +msgid "column \"%s\" is of type %s but expression is of type %s" +msgstr "列\"%s\"は型%sですが、式は型%sでした" -#: commands/tablecmds.c:1957 -msgid "cannot rename column of typed table" -msgstr "型付けされたテーブルのカラムをリネームできません" +#: parser/parse_target.c:489 parser/parse_target.c:735 +#: parser/parse_target.c:745 parser/parse_node.c:397 catalog/heap.c:2432 +#: commands/prepare.c:370 rewrite/rewriteHandler.c:1035 +msgid "You will need to rewrite or cast the expression." +msgstr "式を書き換えるかキャストしなければなりません" -#: commands/tablecmds.c:1973 -msgid "\"%s\" is not a table, view, composite type or index" -msgstr "\"%s\"はテーブル、ビュー、複合インデックスのいずれでもありません" +#: parser/parse_target.c:617 parser/parse_expr.c:418 +msgid "row expansion via \"*\" is not supported here" +msgstr "\"*\" を通した行展開は、ここではサポートされていません" -#: commands/tablecmds.c:2039 +#: parser/parse_target.c:654 #, c-format -msgid "inherited column \"%s\" must be renamed in child tables too" -msgstr "継承される列\"%s\"の名前を子テーブルで変更しなければなりません" +msgid "" +"cannot assign to field \"%s\" of column \"%s\" because its type %s is not a " +"composite type" +msgstr "" +"型%3$sが複合型でありませんので、列\"%2$s\"のフィールド\"%1$s\"に代入できませ" +"ん。" -#: commands/tablecmds.c:2057 +#: parser/parse_target.c:663 #, c-format -msgid "cannot rename system column \"%s\"" -msgstr "システム列%s\"の名前を変更できません" +msgid "" +"cannot assign to field \"%s\" of column \"%s\" because there is no such " +"column in data type %s" +msgstr "" +"データ型%3$sの列がありませんので、列\"%2$s\"のフィールド\"%1$s\"に代入できま" +"せん。" -#: commands/tablecmds.c:2072 +#: parser/parse_target.c:730 #, c-format -msgid "cannot rename inherited column \"%s\"" -msgstr "継承される列\"%s\"の名前を変更できません" +msgid "" +"array assignment to \"%s\" requires type %s but expression is of type %s" +msgstr "\"%s\"への配列代入には型%sが必要ですが、式は型%sでした" -#: commands/tablecmds.c:2083 commands/tablecmds.c:3691 +#: parser/parse_target.c:740 #, c-format -msgid "column \"%s\" of relation \"%s\" already exists" -msgstr "リレーション\"%2$s\"の列\"%1$s\"はすでに存在します" +msgid "subfield \"%s\" is of type %s but expression is of type %s" +msgstr "サブフィールド\"%s\"は型%sですが、式は型%sでした" -#: commands/tablecmds.c:2146 commands/tablecmds.c:6487 -#: commands/tablecmds.c:7773 catalog/aclchk.c:1721 access/heap/heapam.c:1081 -#: access/heap/heapam.c:1109 access/heap/heapam.c:1139 +#: parser/parse_target.c:829 parser/parse_expr.c:1667 parser/parse_expr.c:2109 +#: parser/parse_coerce.c:906 parser/parse_coerce.c:936 +#: parser/parse_coerce.c:954 parser/parse_coerce.c:969 #, c-format -msgid "\"%s\" is a composite type" -msgstr "\"%s\"は複合型です" +msgid "cannot cast type %s to %s" +msgstr "型%sから%sへキャストできません" -#: commands/tablecmds.c:2148 commands/tablecmds.c:6489 -#: commands/tablecmds.c:7775 -msgid "Use ALTER TYPE instead." -msgstr "代わりにALTER TYPEを使用してください" +#: parser/parse_target.c:895 parser/parse_relation.c:2043 +#: parser/parse_relation.c:2100 parser/analyze.c:2039 parser/parse_type.c:117 +#: catalog/aclchk.c:1428 catalog/objectaddress.c:536 utils/adt/acl.c:2772 +#: utils/adt/ruleutils.c:1581 commands/tablecmds.c:4564 +#: commands/tablecmds.c:4654 commands/tablecmds.c:4701 +#: commands/tablecmds.c:4797 commands/tablecmds.c:4841 +#: commands/tablecmds.c:4920 commands/tablecmds.c:5004 +#: commands/tablecmds.c:6612 commands/tablecmds.c:6820 +#: commands/sequence.c:1419 commands/analyze.c:344 commands/trigger.c:590 +#: commands/copy.c:3774 +#, c-format +msgid "column \"%s\" of relation \"%s\" does not exist" +msgstr "リレーション\"%2$s\"の列\"%1$s\"は存在しません" -#: commands/tablecmds.c:2195 catalog/heap.c:927 catalog/index.c:621 +#: parser/parse_target.c:911 parser/parse_target.c:922 +#: commands/tablecmds.c:1318 commands/trigger.c:599 commands/copy.c:3786 #, c-format -msgid "relation \"%s\" already exists" -msgstr "リレーション\"%s\"はすでに存在します" +msgid "column \"%s\" specified more than once" +msgstr "列\"%s\"が複数指定されました" -#. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2271 +#: parser/parse_target.c:1064 parser/parse_relation.c:478 +#: parser/parse_relation.c:551 parser/parse_expr.c:741 #, c-format -msgid "" -"cannot %s \"%s\" because it is being used by active queries in this session" -msgstr "" -"このセッションで実行中の問い合わせで使用されているため \"%2$s\" を %1$s でき" -"ません" +msgid "column reference \"%s\" is ambiguous" +msgstr "列参照\"%s\"は曖昧です" -#. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2280 +#: parser/parse_target.c:1085 parser/parse_expr.c:775 catalog/namespace.c:2348 #, c-format -msgid "cannot %s \"%s\" because it has pending trigger events" -msgstr "トリガイベントを待機しているため \"%2$s\" を %1$s できません" +msgid "cross-database references are not implemented: %s" +msgstr "データベース間の参照は実装されていません: %s" -#: commands/tablecmds.c:2890 +#: parser/parse_target.c:1092 gram.y:11615 gram.y:12814 +#: parser/parse_expr.c:782 catalog/namespace.c:2354 #, c-format -msgid "cannot rewrite system relation \"%s\"" -msgstr "システムリレーション\"%sを書き換えられません" +msgid "improper qualified name (too many dotted names): %s" +msgstr "修飾名が不適切です(ドット付きの名前が多すぎます): %s" -#: commands/tablecmds.c:2900 -msgid "cannot rewrite temporary tables of other sessions" -msgstr "他のセッションの一時テーブルを書き換えられません" +#: parser/parse_target.c:1126 +msgid "SELECT * with no tables specified is not valid" +msgstr "テーブル指定のないSELECT *は無効です" -#: commands/tablecmds.c:3224 +#: parser/parse_param.c:109 parser/parse_param.c:141 parser/parse_param.c:198 +#: parser/parse_param.c:297 parser/parse_expr.c:809 #, c-format -msgid "column \"%s\" contains null values" -msgstr "列\"%s\"にはNULL値があります" +msgid "there is no parameter $%d" +msgstr "パラメータ$%dがありません" -#: commands/tablecmds.c:3238 +#: parser/parse_param.c:215 #, c-format -msgid "check constraint \"%s\" is violated by some row" -msgstr "一部の行で検査制約\"%s\"に違反しています" +msgid "inconsistent types deduced for parameter $%d" +msgstr "パラメータ$%dについて推定された型が不整合です" -#: commands/tablecmds.c:3365 commands/tablecmds.c:4117 +#: parser/parse_param.c:217 parser/parse_coerce.c:1514 +#: parser/parse_coerce.c:1534 parser/parse_coerce.c:1579 +#: commands/tablecmds.c:1443 commands/tablecmds.c:1464 +#: commands/tablecmds.c:1629 commands/tablecmds.c:1651 #, c-format -msgid "\"%s\" is not a table or index" -msgstr "\"%s\"はテーブルやインデックスではありません" +msgid "%s versus %s" +msgstr "%s対%s" -#: commands/tablecmds.c:3520 +#: parser/parse_param.c:303 tcop/postgres.c:1267 commands/prepare.c:122 #, c-format -msgid "cannot alter table \"%s\" because column \"%s\".\"%s\" uses its rowtype" -msgstr "" -"テーブル\"%s\"を変更できません。その行型を列\"%s\".\"%s\"で使用しているためで" -"す" +msgid "could not determine data type of parameter $%d" +msgstr "パラメータ$%dのデータ型が決定できません" -#: commands/tablecmds.c:3527 +#: parser/scansup.c:190 #, c-format -msgid "cannot alter type \"%s\" because column \"%s\".\"%s\" uses it" +msgid "identifier \"%s\" will be truncated to \"%s\"" +msgstr "識別子 \"%s\" を \"%s\" に切り詰めます" + +#: 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: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 "" -"型\"%s\"を変更できません。列\"%s\".\"%s\"でその型を使用しているためです" +"FROM句の副問い合わせでは、同一問い合わせレベルの他のリレーションを参照できま" +"せん" -#: commands/tablecmds.c:3598 -msgid "column must be added to child tables too" -msgstr "列は子テーブルでも追加しなければなりません" +#: parser/parse_clause.c:580 +msgid "" +"function expression in FROM cannot refer to other relations of same query " +"level" +msgstr "" +"FROM句の関数式では同一問い合わせレベルの他のリレーションを参照できません" -#: commands/tablecmds.c:3622 -msgid "cannot add column to typed table" -msgstr "型付けされたテーブルにカラムを追加できません" +#: parser/parse_clause.c:593 +msgid "cannot use aggregate function in function expression in FROM" +msgstr "FROM句の関数式では集約関数を使用できません" -#: commands/tablecmds.c:3648 commands/tablecmds.c:7329 -#, c-format -msgid "child table \"%s\" has different type for column \"%s\"" -msgstr "子テーブル\"%s\"が異なる型の列\"%s\"を持っています" +#: parser/parse_clause.c:600 +msgid "cannot use window function in function expression in FROM" +msgstr "FROM 句内の関数式ではウィンドウ関数を使用できません" -#: commands/tablecmds.c:3655 +#: parser/parse_clause.c:877 #, c-format -msgid "child table \"%s\" has a conflicting \"%s\" column" -msgstr "子テーブル \"%s\" に競合するカラム \"%s\" があります" +msgid "column name \"%s\" appears more than once in USING clause" +msgstr "USING句に列名\"%s\"が複数あります" -#: commands/tablecmds.c:3667 +#: parser/parse_clause.c:892 #, c-format -msgid "merging definition of column \"%s\" for child \"%s\"" -msgstr "子\"%2$s\"の列\"%1$s\"の定義をマージしています" +msgid "common column name \"%s\" appears more than once in left table" +msgstr "左テーブルに列名\"%s\"が複数あります" -#: commands/tablecmds.c:3939 commands/tablecmds.c:4029 -#: commands/tablecmds.c:4074 commands/tablecmds.c:4170 -#: commands/tablecmds.c:4214 commands/tablecmds.c:4293 -#: commands/tablecmds.c:5805 +#: parser/parse_clause.c:901 #, c-format -msgid "cannot alter system column \"%s\"" -msgstr "システム列\"%s\"を変更できません" +msgid "column \"%s\" specified in USING clause does not exist in left table" +msgstr "USING句で指定した列\"%sが左テーブルに存在しません" -#: commands/tablecmds.c:3973 +#: parser/parse_clause.c:915 #, c-format -msgid "column \"%s\" is in a primary key" -msgstr "列\"%s\"はプライマリキーで使用しています" +msgid "common column name \"%s\" appears more than once in right table" +msgstr "右テーブルに列名\"%s\"が複数あります" -#: commands/tablecmds.c:4144 +#: parser/parse_clause.c:924 #, c-format -msgid "statistics target %d is too low" -msgstr "統計情報対象%dは小さすぎます" +msgid "column \"%s\" specified in USING clause does not exist in right table" +msgstr "USING句で指定した列\"%sが右テーブルに存在しません" -#: commands/tablecmds.c:4152 +#: parser/parse_clause.c:981 #, c-format -msgid "lowering statistics target to %d" -msgstr "統計情報対象を%dに減らしましています" +msgid "column alias list for \"%s\" has too many entries" +msgstr "列\"%s\"の別名リストのエントリが多すぎます" -#: commands/tablecmds.c:4274 +#. translator: %s is name of a SQL construct, eg LIMIT +#: parser/parse_clause.c:1228 #, c-format -msgid "invalid storage type \"%s\"" -msgstr "保管方式\"%s\"は無効です" +msgid "argument of %s must not contain variables" +msgstr "%sの引数には変数を使用できません" -#: commands/tablecmds.c:4305 +#. translator: %s is name of a SQL construct, eg LIMIT +#: parser/parse_clause.c:1239 #, c-format -msgid "column data type %s can only have storage PLAIN" -msgstr "列のデータ型%sは保管方式PLAINしか取ることができません" +msgid "argument of %s must not contain aggregate functions" +msgstr "%s の引数には集約関数を使用できません" -#: commands/tablecmds.c:4343 -msgid "cannot drop column from typed table" -msgstr "型付けされたテーブルからカラムを削除できません" +#. 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 の引数にはウィンドウ関数を使用できません" -#: commands/tablecmds.c:4365 +#. translator: first %s is name of a SQL construct, eg ORDER BY +#: parser/parse_clause.c:1367 #, c-format -msgid "column \"%s\" of relation \"%s\" does not exist, skipping" -msgstr "リレーション \"%2$s\" の列 \"%1$s\" は存在しません。スキップします。" +msgid "%s \"%s\" is ambiguous" +msgstr "%s \"%s\"は曖昧です" -#: commands/tablecmds.c:4378 +#. translator: %s is name of a SQL construct, eg ORDER BY +#: parser/parse_clause.c:1391 #, c-format -msgid "cannot drop system column \"%s\"" -msgstr "システム列\"%s\"を削除できません" +msgid "non-integer constant in %s" +msgstr "%sに整数以外の定数があります" -#: commands/tablecmds.c:4385 +#. translator: %s is name of a SQL construct, eg ORDER BY +#: parser/parse_clause.c:1409 #, c-format -msgid "cannot drop inherited column \"%s\"" -msgstr "継承される列\"%s\"を削除できません" +msgid "%s position %d is not in select list" +msgstr "%sの位置%dはSELECTリストにありません" -#: commands/tablecmds.c:4606 catalog/heap.c:2135 catalog/pg_constraint.c:639 +#: parser/parse_clause.c:1625 #, c-format -msgid "constraint \"%s\" for relation \"%s\" already exists" -msgstr "すでに制約\"%s\"はリレーション\"%s\"に存在します" - -#: commands/tablecmds.c:4707 -msgid "constraint must be added to child tables too" -msgstr "制約は子テーブルにも追加しなければなりません" +msgid "window \"%s\" is already defined" +msgstr "ウィンドウ \"%s\" はすでに定義済みです" -#: commands/tablecmds.c:4772 commands/sequence.c:1291 +#: parser/parse_clause.c:1637 parser/parse_agg.c:245 #, c-format -msgid "referenced relation \"%s\" is not a table" -msgstr "参照先のリレーション\"%s\"はテーブルではありません" - -#: commands/tablecmds.c:4794 -msgid "cannot reference temporary table from permanent table constraint" -msgstr "永続テーブルの制約から一時テーブルを参照できません" - -#: commands/tablecmds.c:4801 -msgid "cannot reference permanent table from temporary table constraint" -msgstr "一時テーブルの制約から永続テーブルを参照できません" - -#: commands/tablecmds.c:4861 -msgid "number of referencing and referenced columns for foreign key disagree" -msgstr "外部キーの参照列数と非参照列数が合いません" +msgid "window \"%s\" does not exist" +msgstr "ウィンドウ \"%s\" は存在しません" -#: commands/tablecmds.c:4950 +#: parser/parse_clause.c:1679 #, c-format -msgid "foreign key constraint \"%s\" cannot be implemented" -msgstr "外部キー制約\"%sは実装されていません" +msgid "cannot override PARTITION BY clause of window \"%s\"" +msgstr "ウィンドウ \"%s\" の PARTITION BY 句をオーバーライドできません" -#: commands/tablecmds.c:4953 +#: parser/parse_clause.c:1691 #, c-format -msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s." -msgstr "キーとなる列\"%s\"と\"%s\"との間で型に互換性がありません:%sと%s" +msgid "cannot override ORDER BY clause of window \"%s\"" +msgstr "ウィンドウ \"%s\" の ORDER BY 句をオーバーライドできません" -#: commands/tablecmds.c:5048 +#: parser/parse_clause.c:1713 #, c-format -msgid "column \"%s\" referenced in foreign key constraint does not exist" -msgstr "外部キー制約で参照される列\"%s\"が存在しません" +msgid "cannot override frame clause of window \"%s\"" +msgstr "ウィンドウ \"%s\" の構成句をオーバーライドできません" -#: commands/tablecmds.c:5053 -#, c-format -msgid "cannot have more than %d keys in a foreign key" -msgstr "外部キーでは%dを超えるキーを持つことができません" +#: parser/parse_clause.c:1779 +msgid "" +"in an aggregate with DISTINCT, ORDER BY expressions must appear in argument " +"list" +msgstr "" +"DISTINCT や ORDER BY 表現を伴なう集約は引数リストの中に現れなければなりません" -#: commands/tablecmds.c:5118 -#, c-format -msgid "cannot use a deferrable primary key for referenced table \"%s\"" -msgstr "被参照テーブル \"%s\" には遅延可能プライマリキーは使用できません" +#: parser/parse_clause.c:1780 +msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list" +msgstr "SELECT DISTINCTではORDER BYの式はSELECTリスト内になければなりません" -#: commands/tablecmds.c:5135 -#, c-format -msgid "there is no primary key for referenced table \"%s\"" -msgstr "被参照テーブル\"%s\"にはプライマリキーがありません" +#: 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式の先頭に一致しなければなりません" -#: commands/tablecmds.c:5285 +#: parser/parse_clause.c:2020 #, c-format -msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" -msgstr "被参照テーブル \"%s\" に対しては、遅延可能な一意性制約は使用できません" +msgid "operator %s is not a valid ordering operator" +msgstr "演算子\"%s\"は有効な順序付け演算子名ではありません" -#: commands/tablecmds.c:5290 -#, c-format +#: parser/parse_clause.c:2022 msgid "" -"there is no unique constraint matching given keys for referenced table \"%s\"" -msgstr "被参照テーブル \"%s\" に、指定したキーに一致する一意性制約がありません" - -#: commands/tablecmds.c:5620 -#, c-format -msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" -msgstr "リレーション \"%2$s\" の継承された制約 \"%1$s\" を削除できません" +"Ordering operators must be \"<\" or \">\" members of btree operator families." +msgstr "" +"順序付け演算子はB-Tree演算子族の\"<\"または\">\"要素でなければなりません。" -#: commands/tablecmds.c:5647 commands/tablecmds.c:5761 +#: parser/parse_utilcmd.c:180 #, c-format -msgid "constraint \"%s\" of relation \"%s\" does not exist" -msgstr "リレーション \"%2$s\" の制約 \"%1$s\" は存在しません" +msgid "relation \"%s\" already exists, skipping" +msgstr "リレーション \"%s\" はすでに存在します。スキップします。" -#: commands/tablecmds.c:5653 -#, c-format -msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" -msgstr "リレーション \"%2$s\" の制約 \"%1$s\" は存在しません。スキップします。" +#: parser/parse_utilcmd.c:333 +msgid "array of serial is not implemented" +msgstr "連番(SERIAL)の配列は実装されていません" -#: commands/tablecmds.c:5812 +#: parser/parse_utilcmd.c:378 #, c-format -msgid "cannot alter inherited column \"%s\"" -msgstr "継承される列\"%s\"を変更できません" - -#: commands/tablecmds.c:5847 -msgid "transform expression must not return a set" -msgstr "変換式は集合を返してはいけません" - -#: commands/tablecmds.c:5853 -msgid "cannot use subquery in transform expression" -msgstr "変換式では副問い合わせを使用できません" - -#: commands/tablecmds.c:5857 -msgid "cannot use aggregate function in transform expression" -msgstr "変換式では集約関数を使用できません" - -#: commands/tablecmds.c:5861 -msgid "cannot use window function in transform expression" -msgstr "変換式の中ではウィンドウ関数は使用できません" +msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\"" +msgstr "" +"%1$sはシリアル列\"%3$s.%4$s\"用に暗黙的なシーケンス\"%2$s\"を作成します。" -#: commands/tablecmds.c:5879 +#: parser/parse_utilcmd.c:479 parser/parse_utilcmd.c:491 #, c-format -msgid "column \"%s\" cannot be cast to type %s" -msgstr "列\"%s\"を型\"%s\"にキャストできません" +msgid "" +"conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\"" +msgstr "テーブル\"%2$s\"の列\"%1$s\"でNULL宣言とNOT NULL宣言が競合しています" -#: commands/tablecmds.c:5905 +#: parser/parse_utilcmd.c:503 #, c-format -msgid "type of inherited column \"%s\" must be changed in child tables too" -msgstr "継承される列\"%s\"の型を子テーブルで変更しなければなりません" +msgid "multiple default values specified for column \"%s\" of table \"%s\"" +msgstr "テーブル\"%2$s\"の列\"%1$s\"で複数のデフォルト値の指定があります" -#: commands/tablecmds.c:5944 +#: parser/parse_utilcmd.c:617 parser/parse_utilcmd.c:1665 +#: commands/tablecmds.c:1353 #, c-format -msgid "cannot alter type of column \"%s\" twice" -msgstr "列\"%s\"の型を2回変更することはできません" +msgid "inherited relation \"%s\" is not a table" +msgstr "継承されるリレーション\"%s\"はテーブルではありません" -#: commands/tablecmds.c:5978 +#: parser/parse_utilcmd.c:1294 parser/parse_utilcmd.c:1380 catalog/index.c:202 #, c-format -msgid "default for column \"%s\" cannot be cast to type %s" -msgstr "列 \"%s\" のデフォルト値を \"%s\" 型にキャストできません" +msgid "multiple primary keys for table \"%s\" are not allowed" +msgstr "テーブル\"%s\"に複数のプライマリキーを持たせることはできません" -#: commands/tablecmds.c:6104 -msgid "cannot alter type of a column used by a view or rule" -msgstr "ビューまたはルールで使用される列の型を変更できません" +#: parser/parse_utilcmd.c:1438 +msgid "cannot use an existing index in CREATE TABLE" +msgstr "CREATE TABLE では既存のインデックスを使えません" -#: commands/tablecmds.c:6105 +#: parser/parse_utilcmd.c:1447 commands/tablecmds.c:218 #, c-format -msgid "%s depends on column \"%s\"" -msgstr "%sは列\"%s\"に依存しています" +msgid "index \"%s\" does not exist" +msgstr "インデックス\"%s\"は存在しません" -#: commands/tablecmds.c:6457 +#: parser/parse_utilcmd.c:1458 #, c-format -msgid "cannot change owner of index \"%s\"" -msgstr "インデックス\"%s\"の所有者を変更できません" +msgid "index \"%s\" is already associated with a constraint" +msgstr "インデックス \"%s\" はすでに1つの制約に割り当てられれいます" -#: commands/tablecmds.c:6459 -msgid "Change the ownership of the index's table, instead." -msgstr "代わりにインデックスのテーブルの所有者を変更してください" +#: parser/parse_utilcmd.c:1466 +#, c-format +msgid "index \"%s\" does not belong to table \"%s\"" +msgstr "インデックス \"%s\" はテーブル \"%s\" には属していません" -#: commands/tablecmds.c:6475 +#: parser/parse_utilcmd.c:1473 #, c-format -msgid "cannot change owner of sequence \"%s\"" -msgstr "シーケンス\"%s\"の所有者を変更できません" +msgid "index \"%s\" is not valid" +msgstr "インデックス \"%s\" は有効ではありません" -#: commands/tablecmds.c:6477 commands/tablecmds.c:7765 +#: parser/parse_utilcmd.c:1479 #, c-format -msgid "Sequence \"%s\" is linked to table \"%s\"." -msgstr "シーケンス\"%s\"はテーブル\"%s\"にリンクされています" +msgid "index \"%s\" is not ready" +msgstr "インデックス \"%s\" は利用準備ができていません" -#: commands/tablecmds.c:6498 commands/tablecmds.c:7783 +#: parser/parse_utilcmd.c:1485 #, c-format -msgid "\"%s\" is not a table, view, or sequence" -msgstr "\"%s\"はテーブル、インデックス、ビュー、シーケンスではありません" +msgid "\"%s\" is not a unique index" +msgstr "\"%s\"はユニークインデックスではありません" -#: commands/tablecmds.c:6757 -msgid "cannot have multiple SET TABLESPACE subcommands" -msgstr "SET TABLESPACEサブコマンドを複数指定できません" +#: 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 "そのようなインデックスを使って" -#: commands/tablecmds.c:6809 +#: parser/parse_utilcmd.c:1492 #, c-format -msgid "\"%s\" is not a table, index, or TOAST table" -msgstr "\"%s\"はテーブルでもインデックスでもTOASTテーブルでもありません" +msgid "index \"%s\" contains expressions" +msgstr "インデックス \"%s\" は式を含んでいます" -#: commands/tablecmds.c:6930 +#: parser/parse_utilcmd.c:1499 #, c-format -msgid "cannot move system relation \"%s\"" -msgstr "システムリレーション\"%s\"を移動できません" - -#: commands/tablecmds.c:6946 -msgid "cannot move temporary tables of other sessions" -msgstr "他のセッションの一時テーブルを移動できません" +msgid "\"%s\" is a partial index" +msgstr "\"%s\" は部分インデックスです" -#: commands/tablecmds.c:7200 -msgid "circular inheritance not allowed" -msgstr "循環した継承を行うことはできません" - -#: commands/tablecmds.c:7201 +#: parser/parse_utilcmd.c:1511 #, c-format -msgid "\"%s\" is already a child of \"%s\"." -msgstr "\"%s\"はすでに\"%s\"の子です" +msgid "\"%s\" is a deferrable index" +msgstr "\"%s\" は遅延可能インデックスです" -#: commands/tablecmds.c:7209 -#, c-format -msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs" -msgstr "" -"OIDを持たないテーブル\"%s\"をOIDを持つテーブル\"%s\"から継承することはできま" -"せん" +#: parser/parse_utilcmd.c:1512 +#, +msgid "Cannot create a non-deferrable constraint using a deferrable index." +msgstr "遅延可能インデックスを使った遅延不可制約は作れません" -#: commands/tablecmds.c:7336 +#: parser/parse_utilcmd.c:1525 #, c-format -msgid "column \"%s\" in child table must be marked NOT NULL" -msgstr "子テーブルの列\"%s\"はNOT NULL印が付いていなければなりません" +msgid "index \"%s\" is not a b-tree" +msgstr "インデックス \"%s\" はbtreeではありません" -#: commands/tablecmds.c:7352 +#: parser/parse_utilcmd.c:1569 #, c-format -msgid "child table is missing column \"%s\"" -msgstr "子テーブルには列\"%s\"がありません" +msgid "index \"%s\" does not have default sorting behavior" +msgstr "インデックス \"%s\" はデフォルトのソート動作を持ちません" -#: commands/tablecmds.c:7431 +#: parser/parse_utilcmd.c:1702 commands/indexcmds.c:841 #, c-format -msgid "child table \"%s\" has different definition for check constraint \"%s\"" -msgstr "" -"子テーブル \"%s\" にはチェック制約 \"%s\" のための異なった定義を持っています" +msgid "column \"%s\" named in key does not exist" +msgstr "キーとして指名された列\"%s\"は存在しません" -#: commands/tablecmds.c:7455 +#: parser/parse_utilcmd.c:1714 #, c-format -msgid "child table is missing constraint \"%s\"" -msgstr "子テーブルには制約 \"%s\" がありません" +msgid "column \"%s\" appears twice in primary key constraint" +msgstr "列\"%s\"がプライマリキー制約内に2回出現します" -#: commands/tablecmds.c:7536 +#: parser/parse_utilcmd.c:1720 #, c-format -msgid "relation \"%s\" is not a parent of relation \"%s\"" -msgstr "リレーション\"%s\"はリレーション\"%s\"の親ではありません" - -#: commands/tablecmds.c:7764 -msgid "cannot move an owned sequence into another schema" -msgstr "所有するシーケンスを他のスキーマに移動することができません" +msgid "column \"%s\" appears twice in unique constraint" +msgstr "列 \"%s\" が一意性制約内に2回出現します" -#: commands/tablecmds.c:7793 -#, c-format -msgid "relation \"%s\" is already in schema \"%s\"" -msgstr "リレーション\"%s\"はスキーマ\"%s\"内にすでに存在します" +#: parser/parse_utilcmd.c:1884 +msgid "index expression cannot return a set" +msgstr "式インデックスは集合を返すことができません" -#: commands/tablecmds.c:7856 -#, c-format -msgid "relation \"%s\" already exists in schema \"%s\"" -msgstr "リレーション\"%s\"はスキーマ\"%s\"内にすでに存在します" +#: parser/parse_utilcmd.c:1894 +msgid "" +"index expressions and predicates can refer only to the table being indexed" +msgstr "インデックス式と術後はインデックス付けされるテーブルのみを参照できます" -#: commands/variable.c:62 -msgid "invalid list syntax for parameter \"datestyle\"" -msgstr "パラメータ\"datestyle\"用のリスト構文が無効です" +#: parser/parse_utilcmd.c:1991 +msgid "rule WHERE condition cannot contain references to other relations" +msgstr "ルールのWHERE条件に他のリレーションへの参照を持たせられません" -#: commands/variable.c:161 -#, c-format -msgid "unrecognized \"datestyle\" key word: \"%s\"" -msgstr "\"datestyle\"キーワードが不明です: \"%s\"" +#: parser/parse_utilcmd.c:1997 +msgid "cannot use aggregate function in rule WHERE condition" +msgstr "ルールのWHERE条件では集約関数を使用できません" -#: commands/variable.c:175 -msgid "conflicting \"datestyle\" specifications" -msgstr "\"datestyle\"指定が競合しています" +#: parser/parse_utilcmd.c:2001 +msgid "cannot use window function in rule WHERE condition" +msgstr "ルールの WHERE 句ではウィンドウ関数を使用できません" -#: commands/variable.c:285 -msgid "invalid interval value for time zone: month not allowed" -msgstr "時間帯の内部値が無効です: 月は許されません" +#: 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動作のみを持つことができます" -#: commands/variable.c:293 -msgid "invalid interval value for time zone: day not allowed" -msgstr "時間帯の時間間隔値が無効です: 日は許されません" +#: 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文は実装されていません" -#: commands/variable.c:361 commands/variable.c:493 -#, c-format -msgid "unrecognized time zone name: \"%s\"" -msgstr "時間帯名が不明です: \"%s\"" +#: parser/parse_utilcmd.c:2109 +msgid "ON SELECT rule cannot use OLD" +msgstr "ON SELECTルールではOLDを使用できません" -#: commands/variable.c:370 commands/variable.c:502 -#, c-format -msgid "time zone \"%s\" appears to use leap seconds" -msgstr "時間帯\"%s\"はうるう秒を使用するようです" +#: parser/parse_utilcmd.c:2113 +msgid "ON SELECT rule cannot use NEW" +msgstr "ON SELECTルールではNEWを使用できません" -#: commands/variable.c:372 commands/variable.c:504 -msgid "PostgreSQL does not support leap seconds." -msgstr "PostgreSQLはうるう秒をサポートしていません" +#: parser/parse_utilcmd.c:2122 +msgid "ON INSERT rule cannot use OLD" +msgstr "ON INSERTルールではOLDを使用できません" -#: commands/variable.c:557 -msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query" -msgstr "" -"SET TRANSACTION ISOLATION LEVELを全ての問い合わせの前に呼び出さなければなりま" -"せん" +#: parser/parse_utilcmd.c:2128 +msgid "ON DELETE rule cannot use NEW" +msgstr "ON DELETEルールではNEWを使用できません" -#: commands/variable.c:566 -msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction" -msgstr "" -"SET TRANSACTION ISOLATION LEVELをサブトランザクションで呼び出してはなりません" +#: parser/parse_utilcmd.c:2156 +msgid "cannot refer to OLD within WITH query" +msgstr "WITH クエリー内では OLD は参照できません" -#: commands/variable.c:665 utils/mb/mbutils.c:241 -#, c-format -msgid "conversion between %s and %s is not supported" -msgstr "%sと%s間の変換はサポートされていません" +#: parser/parse_utilcmd.c:2163 +msgid "cannot refer to NEW within WITH query" +msgstr "WITH クエリー内では NEW は参照できません" -#: commands/variable.c:735 commands/variable.c:845 commands/user.c:579 -#: commands/user.c:767 commands/user.c:851 commands/user.c:1002 -#: utils/init/miscinit.c:413 utils/cache/lsyscache.c:2657 -#, c-format -msgid "role \"%s\" does not exist" -msgstr "ロール\"%s\"は存在しません" +#: parser/parse_utilcmd.c:2446 +msgid "misplaced DEFERRABLE clause" +msgstr "DEFERRABLE句の場所が間違っています" -#: commands/variable.c:861 -#, c-format -msgid "permission denied to set role \"%s\"" -msgstr "ロール\"%s\"を設定する権限がありません" +#: parser/parse_utilcmd.c:2451 parser/parse_utilcmd.c:2466 +msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" +msgstr "複数のDEFERRABLE/NOT DEFERRABLE句を使用できません" -#: commands/comment.c:642 -msgid "\"%s\" is not a table, view, or composite type" -msgstr "\"%s\"はテーブル、ビュー、複合型のいずれでもありません" +#: parser/parse_utilcmd.c:2461 +msgid "misplaced NOT DEFERRABLE clause" +msgstr "NOT DEFERRABLE句の場所が間違っています" -#: commands/comment.c:681 -msgid "database name cannot be qualified" -msgstr "データベース名を修飾することはできません" +#: 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でなければなりません" -#: commands/comment.c:698 commands/dbcommands.c:760 commands/dbcommands.c:905 -#: commands/dbcommands.c:1004 commands/dbcommands.c:1181 -#: commands/dbcommands.c:1366 commands/dbcommands.c:1410 -#: commands/dbcommands.c:1456 catalog/aclchk.c:614 utils/adt/dbsize.c:149 -#: utils/adt/acl.c:2975 utils/init/postinit.c:692 utils/init/postinit.c:760 -#: utils/init/postinit.c:777 -#, c-format -msgid "database \"%s\" does not exist" -msgstr "データベース\"%s\"は存在しません" +#: parser/parse_utilcmd.c:2482 +msgid "misplaced INITIALLY DEFERRED clause" +msgstr "INITIALLY DEFERRED句の場所が間違っています<" -#: commands/comment.c:729 -msgid "tablespace name cannot be qualified" -msgstr "テーブル空間名を修飾することはできません" +#: parser/parse_utilcmd.c:2487 parser/parse_utilcmd.c:2513 +msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" +msgstr "複数のINITIALLY IMMEDIATE/DEFERRED句を使用できません" -#: commands/comment.c:766 -msgid "role name cannot be qualified" -msgstr "ロール名を修飾できません" +#: parser/parse_utilcmd.c:2508 +msgid "misplaced INITIALLY IMMEDIATE clause" +msgstr "INITIALLY IMMEDIATE句の場所が間違っています<" -#: commands/comment.c:775 +#: parser/parse_utilcmd.c:2553 parser/parse_expr.c:2140 +#: parser/parse_type.c:492 commands/indexcmds.c:938 commands/typecmds.c:843 #, c-format -msgid "must be member of role \"%s\" to comment upon it" -msgstr "コメントを付与するにはロール\"%s\"のメンバでなければなりません" +msgid "collations are not supported by type %s" +msgstr "%s 型では照合順序はサポートされません" -#: commands/comment.c:874 +#: parser/parse_utilcmd.c:2699 #, c-format -msgid "rule \"%s\" does not exist" -msgstr "ルール\"%s\"は存在しません" +msgid "" +"CREATE specifies a schema (%s) different from the one being created (%s)" +msgstr "CREATEで指定したスキーマ(%s)が作成先のスキーマ(%s)と異なります" -#: commands/comment.c:882 +#: parser/parse_relation.c:147 #, c-format -msgid "there are multiple rules named \"%s\"" -msgstr "複数の\"%s\"という名前のルールがあります" - -#: commands/comment.c:883 -msgid "Specify a relation name as well as a rule name." -msgstr "ルール名に加えリレーション名を指定してください" +msgid "table reference \"%s\" is ambiguous" +msgstr "テーブル参照\"%s\"は曖昧です" -#: commands/comment.c:1105 commands/trigger.c:994 commands/trigger.c:1194 -#: commands/trigger.c:1305 +#: parser/parse_relation.c:183 #, c-format -msgid "trigger \"%s\" for table \"%s\" does not exist" -msgstr "テーブル\"%2$s\"のトリガ\"%1$s\"は存在しません" +msgid "table reference %u is ambiguous" +msgstr "テーブル参照%uは曖昧です" -#: commands/comment.c:1183 commands/conversioncmds.c:153 -#: commands/conversioncmds.c:209 commands/conversioncmds.c:262 +#: parser/parse_relation.c:343 #, c-format -msgid "conversion \"%s\" does not exist" -msgstr "変換\"%sは存在しません" - -#: commands/comment.c:1213 -msgid "language name cannot be qualified" -msgstr "言語名を修飾できません" - -#: commands/comment.c:1226 -msgid "must be superuser to comment on procedural language" -msgstr "手続き言語にコメントをつけるにはスーパーユーザでなければなりません" +msgid "table name \"%s\" specified more than once" +msgstr "テーブル名\"%s\"が複数指定されました" -#: commands/comment.c:1415 catalog/pg_largeobject.c:116 -#: catalog/pg_largeobject.c:176 catalog/aclchk.c:656 catalog/aclchk.c:3684 -#: catalog/aclchk.c:4375 storage/large_object/inv_api.c:272 +#: parser/parse_relation.c:754 parser/parse_relation.c:1045 +#: parser/parse_relation.c:1432 #, c-format -msgid "large object %u does not exist" -msgstr "ラージオブジェクト\"%u\"は存在しません" +msgid "table \"%s\" has %d columns available but %d columns specified" +msgstr "テーブル\"%s\"では%d列使用できますが、%d列指定されました" -#: commands/comment.c:1422 catalog/pg_largeobject.c:200 libpq/be-fsstubs.c:287 +#: parser/parse_relation.c:784 #, c-format -msgid "must be owner of large object %u" -msgstr "ラージオブジェクト %u の所有者でなければなりません" +msgid "too many column aliases specified for function %s" +msgstr "関数%sで指定された列別名が多すぎます" -#: commands/comment.c:1469 commands/functioncmds.c:1777 +#: parser/parse_relation.c:835 catalog/namespace.c:276 commands/lockcmds.c:122 #, c-format -msgid "cast from type %s to type %s does not exist" -msgstr "型%sから型%sへのキャストは存在しません" +msgid "relation \"%s.%s\" does not exist" +msgstr "リレーション\"%s.%s\"は存在しません" -#: commands/comment.c:1481 commands/functioncmds.c:1522 -#: commands/functioncmds.c:1794 +#: parser/parse_relation.c:848 parser/parse_relation.c:856 +#: catalog/namespace.c:281 utils/adt/regproc.c:810 commands/lockcmds.c:127 #, c-format -msgid "must be owner of type %s or type %s" -msgstr "型%sまたは型%sの所有者でなければなりません" +msgid "relation \"%s\" does not exist" +msgstr "リレーション\"%s\"は存在しません" -#: commands/comment.c:1501 -msgid "must be superuser to comment on text search parser" +#: 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 項目がありますが、これはクエリーのこの部分からは参照できま" +"せん。" -#: commands/comment.c:1530 -msgid "must be superuser to comment on text search template" +#: parser/parse_relation.c:852 +msgid "" +"Use WITH RECURSIVE, or re-order the WITH items to remove forward references." msgstr "" -"テキスト検索テンプレートにコメントをつけるにはスーパーユーザでなければなりま" -"せん" +"WITH RECURSIVE を使うか、もしくは WITH 項目の場所を変えて前方参照をなくしてく" +"ださい" -#: commands/user.c:150 -msgid "SYSID can no longer be specified" -msgstr "SYSIDはもう指定することができません" +#: parser/parse_relation.c:1125 +msgid "" +"a column definition list is only allowed for functions returning \"record\"" +msgstr "列定義リストは\"record\"を返す関数でのみ使用できます" -#: commands/user.c:255 commands/user.c:562 commands/dbcommands.c:253 -#: commands/dbcommands.c:1347 -#, c-format -msgid "invalid connection limit: %d" -msgstr "接続制限数 %d は無効です" +#: parser/parse_relation.c:1133 +msgid "a column definition list is required for functions returning \"record\"" +msgstr "\"record\"を返す関数では列定義リストが必要です" -#: commands/user.c:272 -msgid "must be superuser to create superusers" -msgstr "スーパーユーザを作成するにはスーパーユーザでなければなりません" +#: parser/parse_relation.c:1184 +#, c-format +msgid "function \"%s\" in FROM has unsupported return type %s" +msgstr "FROM句の関数\"%s\"がサポートされない戻り値型%sを持ちます" -#: commands/user.c:279 -msgid "permission denied to create role" -msgstr "ロールを作成する権限がありません" +#: parser/parse_relation.c:1258 +#, c-format +msgid "VALUES lists \"%s\" have %d columns available but %d columns specified" +msgstr "VALUESリスト\"%s\"は%d列使用可能ですが、%d列が指定されました" -#: commands/user.c:286 commands/user.c:1033 +#: parser/parse_relation.c:1314 #, c-format -msgid "role name \"%s\" is reserved" -msgstr "ロール名\"%s\"は予約されています" +msgid "joins can have at most %d columns" +msgstr "JOIN で指定できるのは、最大 %d カラムです" -#: commands/user.c:300 commands/user.c:1027 +#: parser/parse_relation.c:1405 #, c-format -msgid "role \"%s\" already exists" -msgstr "ロール\"%s\"はすでに存在します" +msgid "WITH query \"%s\" does not have a RETURNING clause" +msgstr "WITH クエリー \"%s\" に RETURNING 句がありません" -#: commands/user.c:592 commands/user.c:784 commands/user.c:1267 -#: commands/user.c:1404 -msgid "must be superuser to alter superusers" -msgstr "スーパーユーザを変更するにはスーパーユーザでなければなりません" +#: parser/parse_relation.c:2087 +#, c-format +msgid "column %d of relation \"%s\" does not exist" +msgstr "リレーション\"%2$s\"の列\"%1$d\"は存在しません" -#: commands/user.c:607 commands/user.c:792 -msgid "permission denied" -msgstr "権限がありません" +#: parser/parse_relation.c:2471 +#, c-format +msgid "invalid reference to FROM-clause entry for table \"%s\"" +msgstr "テーブル\"%s\"用のFROM句に対する無効な参照です。" -#: commands/user.c:802 +#: parser/parse_relation.c:2474 #, c-format -msgid "database \"%s\" not found" -msgstr "データベース \"%s\" が見つかりません" +msgid "Perhaps you meant to reference the table alias \"%s\"." +msgstr "テーブル別名\"%s\"に対する参照を意図しているかもしれません" -#: commands/user.c:824 -msgid "permission denied to drop role" -msgstr "ロールを削除する権限がありません" +#: 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\"の項目がありますが、問い合わせのこの部分からは参照できません。" +"\"" -#: commands/user.c:856 +#: parser/parse_relation.c:2482 #, c-format -msgid "role \"%s\" does not exist, skipping" -msgstr "ロール\"%s\"は存在しません。省略します" +msgid "missing FROM-clause entry for table \"%s\"" +msgstr "テーブル\"%s\"用のFROM句エントリがありません" -#: commands/user.c:868 commands/user.c:872 -msgid "current user cannot be dropped" -msgstr "現在のユーザを削除できません" +#: gram.y:906 +#, c-format +msgid "unrecognized role option \"%s\"" +msgstr "ロールオプション \"%s\" が認識できません" -#: commands/user.c:876 -msgid "session user cannot be dropped" -msgstr "セッションのユーザを削除できません" +#: gram.y:1292 +msgid "current database cannot be changed" +msgstr "現在のデータベースを変更できません" -#: commands/user.c:887 -msgid "must be superuser to drop superusers" -msgstr "スーパーユーザを削除するにはスーパーユーザでなければなりません" +#: gram.y:1410 gram.y:1425 +msgid "time zone interval must be HOUR or HOUR TO MINUTE" +msgstr "時間帯の間隔はHOURまたはHOUR TO MINUTEでなければなりません" -#: commands/user.c:900 -#, c-format -msgid "role \"%s\" cannot be dropped because some objects depend on it" -msgstr "他のオブジェクトが依存していますのでロール\"%s\"を削除できません" +#: gram.y:1430 gram.y:9250 gram.y:11740 +msgid "interval precision specified twice" +msgstr "インターバル型の精度が2回指定されました" -#: commands/user.c:1017 -msgid "session user cannot be renamed" -msgstr "セッションユーザの名前を変更できません" +#: gram.y:2752 +msgid "CHECK constraints cannot be deferred" +msgstr "CHECK 制約は遅延可能にはできません" -#: commands/user.c:1021 -msgid "current user cannot be renamed" -msgstr "現在のユーザの名前を変更できません" +#: 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 "MMATCH PARTIAL はまだ実装されていません" -#: commands/user.c:1044 -msgid "must be superuser to rename superusers" -msgstr "スーパーユーザの名前を変更するにはスーパーユーザでなければなりません" +#: gram.y:3006 +msgid "CREATE TABLE AS cannot specify INTO" +msgstr "CREATE TABLE ASはINTOを指定できません" -#: commands/user.c:1051 -msgid "permission denied to rename role" -msgstr "ロールの名前を変更する権限がありません" +#: gram.y:4058 +msgid "duplicate trigger events specified" +msgstr "重複したトリガーイベントが指定されました" -#: commands/user.c:1072 -msgid "MD5 password cleared because of role rename" -msgstr "ロール名が変更されたためMD5パスワードがクリアされました" +#: gram.y:4225 +msgid "CREATE ASSERTION is not yet implemented" +msgstr "CREATE ASSERTIONはまだ実装されていません" -#: commands/user.c:1128 -msgid "column names cannot be included in GRANT/REVOKE ROLE" -msgstr "カラム名が GRANT/REVOKE ROLE に含まれていてはなりません" +#: gram.y:4241 +msgid "DROP ASSERTION is not yet implemented" +msgstr "DROP ASSERTIONはまだ実装されていません" -#: commands/user.c:1166 -msgid "permission denied to drop objects" -msgstr "オブジェクトを削除する権限がありません" +#: gram.y:4577 +msgid "RECHECK is no longer required" +msgstr "RECHECK はもはや必要とされません" -#: commands/user.c:1193 commands/user.c:1202 -msgid "permission denied to reassign objects" -msgstr "オブジェクトを再割当てする権限がありません" +#: gram.y:4578 +msgid "Update your data type." +msgstr "データ型を更新してください" -#: commands/user.c:1275 commands/user.c:1412 -#, c-format -msgid "must have admin option on role \"%s\"" -msgstr "ロール\"%s\"にadminオプションがなければなりません" +#: gram.y:6221 utils/adt/regproc.c:630 +msgid "missing argument" +msgstr "引数がありません" -#: commands/user.c:1283 -msgid "must be superuser to set grantor" -msgstr "権限付与者を設定するにはスーパーユーザでなければなりません" +#: gram.y:6222 utils/adt/regproc.c:631 +msgid "Use NONE to denote the missing argument of a unary operator." +msgstr "単項演算子の存在しない引数を表すのにNONEを使用してください。" -#: commands/user.c:1308 -#, c-format -msgid "role \"%s\" is a member of role \"%s\"" -msgstr "ロール\"%s\"はロール\"%s\"のメンバではありません" +#: gram.y:7301 gram.y:7307 gram.y:7313 +msgid "WITH CHECK OPTION is not implemented" +msgstr "WITH CHECK OPTIONは実装されていません" -#: commands/user.c:1323 -#, c-format -msgid "role \"%s\" is already a member of role \"%s\"" -msgstr "ロール\"%s\"はすでにロール\"%s\"のメンバです" +#: gram.y:7990 +msgid "column name list not allowed in CREATE TABLE / AS EXECUTE" +msgstr "CREATE TABLE / AS EXECUTEでは列名リストを使用できません" -#: commands/user.c:1434 -#, c-format -msgid "role \"%s\" is not a member of role \"%s\"" -msgstr "ロール\"%s\"はロール\"%s\"のメンバではありません" +#: gram.y:8214 +msgid "number of columns does not match number of values" +msgstr "列の数がVALUESの数と一致しません" -#: commands/functioncmds.c:98 -#, c-format -msgid "SQL function cannot return shell type %s" -msgstr "SQL関数はシェル型%sをかえすことができません" +#: gram.y:8664 +msgid "LIMIT #,# syntax is not supported" +msgstr "LIMIT #,#構文は実装されていません" -#: commands/functioncmds.c:103 -#, c-format -msgid "return type %s is only a shell" -msgstr "戻り値型%sは単なるシェルです" +#: gram.y:8665 +msgid "Use separate LIMIT and OFFSET clauses." +msgstr "分割してLIMITとOFFSET句を使用してください" -#: commands/functioncmds.c:132 parser/parse_type.c:261 -#, c-format -msgid "type modifier cannot be specified for shell type \"%s\"" -msgstr "シェル型\"%s\"に型修正子を指定できません" +#: gram.y:8883 +msgid "VALUES in FROM must have an alias" +msgstr "FROM句のVALUESは別名を持たなければなりません" -#: commands/functioncmds.c:138 -#, c-format -msgid "type \"%s\" is not yet defined" -msgstr "型\"%s\"は未定義です" +#: gram.y:8884 +msgid "For example, FROM (VALUES ...) [AS] foo." +msgstr "例えば、FROM (VALUES ...) [AS] foo。" -#: commands/functioncmds.c:139 -msgid "Creating a shell type definition." -msgstr "シェル型定義を作成しています" +#: gram.y:8889 +msgid "subquery in FROM must have an alias" +msgstr "FROM句の副問い合わせは別名を持たなければなりません" -#: commands/functioncmds.c:218 -#, c-format -msgid "SQL function cannot accept shell type %s" -msgstr "SQL関数はシェル型\"%s\"を受け付けられません" +#: gram.y:8890 +msgid "For example, FROM (SELECT ...) [AS] foo." +msgstr "例えば、FROM (SELECT ...) [AS] foo。" -#: commands/functioncmds.c:223 -#, c-format -msgid "argument type %s is only a shell" -msgstr "引数型%sは単なるシェルです" +#: gram.y:9376 +msgid "precision for type float must be at least 1 bit" +msgstr "浮動小数点数の型の精度は最低でも1ビットなければなりません" -#: commands/functioncmds.c:233 -#, c-format -msgid "type %s does not exist" -msgstr "型%sは存在しません" +#: gram.y:9385 +msgid "precision for type float must be less than 54 bits" +msgstr "浮動小数点数の型の精度は54ビットよりも小さくなければなりません" -#: commands/functioncmds.c:241 -msgid "functions cannot accept set arguments" -msgstr "関数は集合を引数として受け付けられません" +#: gram.y:10099 +msgid "UNIQUE predicate is not yet implemented" +msgstr "UNIQUE 述部はまだ実装されていません" -#: commands/functioncmds.c:250 -msgid "VARIADIC parameter must be the last input parameter" -msgstr "VARIADIC パラメータは最後の入力パラメータでなければなりません" +#: gram.y:11007 +msgid "RANGE PRECEDING is only supported with UNBOUNDED" +msgstr "RANGE PRECEDING は UNBOUNDED なしの場合のみのサポートです" -#: commands/functioncmds.c:277 -msgid "VARIADIC parameter must be an array" -msgstr "VARIADIC パラメータは配列でなければなりません" +#: gram.y:11013 +msgid "RANGE FOLLOWING is only supported with UNBOUNDED" +msgstr "RANGE FOLLOWING は UNBOUNDED なしの場合のみのサポートです" -#: commands/functioncmds.c:317 -#, c-format -msgid "parameter name \"%s\" used more than once" -msgstr "パラメータ \"%s\" が複数指定されました" +#: gram.y:11040 gram.y:11063 +msgid "frame start cannot be UNBOUNDED FOLLOWING" +msgstr "構成の開始部分が UNBOUNDED FOLLOWING であってはなりません" -#: commands/functioncmds.c:332 -msgid "only input parameters can have default values" -msgstr "入力パラメータのみがデフォルト値を持てます" +#: gram.y:11045 +msgid "frame starting from following row cannot end with current row" +msgstr "次の行から始まるフレームは、現在行では終了できません" -#: commands/functioncmds.c:344 -msgid "cannot use table references in parameter default value" -msgstr "パラメータのデフォルト値としてテーブル参照を使用できません" +#: gram.y:11068 +msgid "frame end cannot be UNBOUNDED PRECEDING" +msgstr "構成の末尾が UNBOUNDED PRECEDING であってはなりません" -#: commands/functioncmds.c:360 -msgid "cannot use subquery in parameter default value" -msgstr "パラメータのデフォルト値として副問い合わせを使用できません" +#: gram.y:11074 +msgid "frame starting from current row cannot have preceding rows" +msgstr "現在行から始まるフレームは、それまでの行を含むことができません" -#: commands/functioncmds.c:364 -msgid "cannot use aggregate function in parameter default value" -msgstr "パラメータのデフォルト値として集約関数を使用できません" +#: gram.y:11081 +msgid "frame starting from following row cannot have preceding rows" +msgstr "次の行から始まるフレームは、それまでの行を含むことができません" -#: commands/functioncmds.c:368 -msgid "cannot use window function in parameter default value" -msgstr "パラメータのデフォルト値としてウィンドウ関数を使用できません" +#: gram.y:11715 +msgid "type modifier cannot have parameter name" +msgstr "型修正子はパラメータ名を持つことはできません" -#: commands/functioncmds.c:378 -msgid "input parameters after one with a default value must also have defaults" -msgstr "" -"デフォルト値を持つパラメータの後にある入力パラメータは、必ずデフォルト値を持" -"たなければなりません" +#: gram.y:12310 gram.y:12518 +msgid "improper use of \"*\"" +msgstr " \"*\" の使い方が不適切です" -#: commands/functioncmds.c:617 -msgid "no function body specified" -msgstr "関数本体の指定がありません" - -#: commands/functioncmds.c:627 -msgid "no language specified" -msgstr "言語が指定されていません" - -#: commands/functioncmds.c:648 commands/functioncmds.c:1349 -msgid "COST must be positive" -msgstr "コストは正数でなければなりません" +#: gram.y:12449 +msgid "wrong number of parameters on left side of OVERLAPS expression" +msgstr "OVERLAPS式の左辺のパラメータ数が間違っています" -#: commands/functioncmds.c:656 commands/functioncmds.c:1357 -msgid "ROWS must be positive" -msgstr "ROWSは正数でなければなりません" +#: gram.y:12456 +msgid "wrong number of parameters on right side of OVERLAPS expression" +msgstr "OVERLAPS式の右辺のパラメータ数が間違っています" -#: commands/functioncmds.c:695 -#, c-format -msgid "unrecognized function attribute \"%s\" ignored" -msgstr "不明な関数属性\"%s\"は無視しました" +#: gram.y:12481 gram.y:12498 repl_gram.c:1225 tsearch/spell.c:518 +#: tsearch/spell.c:535 tsearch/spell.c:552 tsearch/spell.c:569 +#: tsearch/spell.c:591 bootparse.c:1605 +msgid "syntax error" +msgstr "構文エラー" -#: commands/functioncmds.c:746 -#, c-format -msgid "only one AS item needed for language \"%s\"" -msgstr "言語\"%s\"ではAS項目は1つだけ必要です" +#: gram.y:12581 +msgid "multiple ORDER BY clauses not allowed" +msgstr "複数のORDER BY句は使用できません" -#: commands/functioncmds.c:838 commands/functioncmds.c:1992 -msgid "Use CREATE LANGUAGE to load the language into the database." -msgstr "言語をデータベースに読み込むためにはCREATE LANGUAGEを使用してください" +#: gram.y:12592 +msgid "multiple OFFSET clauses not allowed" +msgstr "複数のOFFSET句は使用できません" -#: commands/functioncmds.c:885 -#, c-format -msgid "function result type must be %s because of OUT parameters" -msgstr "OUTパラメータのため、関数の戻り値型は%sでなければなりません。" +#: gram.y:12601 +msgid "multiple LIMIT clauses not allowed" +msgstr "複数のLIMIT句は使用できません" -#: commands/functioncmds.c:898 -msgid "function result type must be specified" -msgstr "関数の結果型を指定しなければなりません" +#: gram.y:12610 +msgid "multiple WITH clauses not allowed" +msgstr "複数の WITH 句は使用できません" -#: commands/functioncmds.c:933 commands/functioncmds.c:1361 -msgid "ROWS is not applicable when function does not return a set" -msgstr "関数が集合を返す場合にROWSは適していません" +#: gram.y:12755 +msgid "OUT and INOUT arguments aren't allowed in TABLE functions" +msgstr "テーブル関数では OUT と INOUT 引数は使用できません" -#: commands/functioncmds.c:985 -#, c-format -msgid "function %s(%s) does not exist, skipping" -msgstr "関数%s(%s)は存在しません。省略します" +#: gram.y:12856 +#, +msgid "multiple COLLATE clauses not allowed" +msgstr "複数の COLLATE 句は使用できません" -#: commands/functioncmds.c:1005 commands/functioncmds.c:1105 -#: commands/functioncmds.c:1168 commands/functioncmds.c:1319 -#: utils/adt/ruleutils.c:1634 +#: parser/parse_oper.c:124 parser/parse_oper.c:718 utils/adt/regproc.c:464 +#: utils/adt/regproc.c:484 utils/adt/regproc.c:643 #, c-format -msgid "\"%s\" is an aggregate function" -msgstr "\"%s\"は集約関数です" - -#: commands/functioncmds.c:1007 -msgid "Use DROP AGGREGATE to drop aggregate functions." -msgstr "集約関数を削除するにはDROP AGGREGATEを使用してください" +msgid "operator does not exist: %s" +msgstr "演算子が存在しません: %s" -#: commands/functioncmds.c:1014 +#: parser/parse_oper.c:219 parser/parse_agg.c:131 #, c-format -msgid "removing built-in function \"%s\"" -msgstr "組み込み関数\"%s\"を削除しています" +msgid "could not identify an ordering operator for type %s" +msgstr "型%sの順序演算子を識別できませんでした" -#: commands/functioncmds.c:1107 -msgid "Use ALTER AGGREGATE to rename aggregate functions." -msgstr "集約関数の名前を変更するにはALTER AGGREGATEを使用してください。" +#: parser/parse_oper.c:221 +msgid "Use an explicit ordering operator or modify the query." +msgstr "明示的に順序演算子を使用するか問い合わせを変更してください" -#: commands/functioncmds.c:1119 commands/aggregatecmds.c:292 +#: parser/parse_oper.c:225 utils/adt/rowtypes.c:1157 +#: utils/adt/arrayfuncs.c:3176 utils/adt/arrayfuncs.c:3695 #, c-format -msgid "function %s already exists in schema \"%s\"" -msgstr "関数%sはすでにスキーマ\"%s\"内に存在します" - -#: commands/functioncmds.c:1170 -msgid "Use ALTER AGGREGATE to change owner of aggregate functions." -msgstr "集約関数の所有者を変更するにはALTER AGGREGATEを使用してください。" +msgid "could not identify an equality operator for type %s" +msgstr "型%sの等価性演算子を識別できませんでした" -#: commands/functioncmds.c:1508 +#: parser/parse_oper.c:476 #, c-format -msgid "source data type %s is a pseudo-type" -msgstr "変換元データ型%sは仮想型です" +msgid "operator requires run-time type coercion: %s" +msgstr "演算子は実行時の型強制が必要です: %s" -#: commands/functioncmds.c:1514 +#: parser/parse_oper.c:710 #, c-format -msgid "target data type %s is a pseudo-type" -msgstr "変換先データ型%sは仮想型です" - -#: commands/functioncmds.c:1551 -msgid "cast function must take one to three arguments" -msgstr "キャスト関数の引数は1つから3つまででなければなりません" +msgid "operator is not unique: %s" +msgstr "演算子は一意ではありません: %s" -#: commands/functioncmds.c:1555 +#: parser/parse_oper.c:712 msgid "" -"argument of cast function must match or be binary-coercible from source data " -"type" +"Could not choose a best candidate operator. You might need to add explicit " +"type casts." msgstr "" -"キャスト関数の引数は変換元データ型と一致するか、またはバイナリ型を強要できな" -"ければなりません" - -#: commands/functioncmds.c:1559 -msgid "second argument of cast function must be type integer" -msgstr "キャスト関数の第2引数は整数型でなければなりません" - -#: commands/functioncmds.c:1563 -msgid "third argument of cast function must be type boolean" -msgstr "キャスト関数の第3引数は論理型でなければなりません" +"最善の候補演算子を選択できませんでした。明示的な型キャストが必要かもしれませ" +"ん" -#: commands/functioncmds.c:1567 +#: parser/parse_oper.c:720 msgid "" -"return data type of cast function must match or be binary-coercible to " -"target data type" -msgstr "" -"キャスト関数の戻り値データ型は変換後データ型と一致するか、またはバイナリ型を" -"強要できなければなりません" - -#: commands/functioncmds.c:1578 -msgid "cast function must not be volatile" -msgstr "キャスト関数はvolatileではいけません" - -#: commands/functioncmds.c:1583 -msgid "cast function must not be an aggregate function" -msgstr "キャスト関数は集約関数ではいけません" - -#: commands/functioncmds.c:1587 -msgid "cast function must not be a window function" -msgstr "キャスト関数は集約関数ではいけません" - -#: commands/functioncmds.c:1591 -msgid "cast function must not return a set" -msgstr "キャスト関数は集合を返してはいけません" - -#: commands/functioncmds.c:1617 -msgid "must be superuser to create a cast WITHOUT FUNCTION" +"No operator matches the given name and argument type(s). You might need to " +"add explicit type casts." msgstr "" -"WITHOUT FUNCTION句付きのキャストを作成するにはスーパーユーザでなければなりま" -"せん" +"指定名称、指定引数型に合う演算子がありません。明示的な型キャストが必要かもし" +"れません" -#: commands/functioncmds.c:1632 -msgid "source and target data types are not physically compatible" -msgstr "変換元と変換先のデータ型の間には物理的な互換性がありません" +#: parser/parse_oper.c:779 parser/parse_oper.c:893 +#, c-format +msgid "operator is only a shell: %s" +msgstr "演算子は単なるシェルです:%s" -#: commands/functioncmds.c:1647 -msgid "composite data types are not binary-compatible" -msgstr "複合データ型はバイナリ互換ではありません" +#: parser/parse_oper.c:881 +msgid "op ANY/ALL (array) requires array on right side" +msgstr "演算子 ANY/ALL (配列) は右側に配列が必要です" -#: commands/functioncmds.c:1653 -msgid "enum data types are not binary-compatible" -msgstr "列挙データ型はバイナリ互換ではありません" +#: parser/parse_oper.c:923 +msgid "op ANY/ALL (array) requires operator to yield boolean" +msgstr "演算子 ANY/ALL (配列) の演算子はブール型を返さなければなりません" -#: commands/functioncmds.c:1659 -msgid "array data types are not binary-compatible" -msgstr "配列データ型はバイナリ互換ではありません" +#: parser/parse_oper.c:928 +msgid "op ANY/ALL (array) requires operator not to return a set" +msgstr "演算子 ANY/ALL (配列) の演算子は集合を返してはいけません" -#: commands/functioncmds.c:1669 -msgid "source data type and target data type are the same" -msgstr "変換元と変換先のデータ型が同一です" +#: parser/parse_expr.c:364 parser/parse_expr.c:757 +#, c-format +msgid "column %s.%s does not exist" +msgstr "列%s.%sは存在しません" -#: commands/functioncmds.c:1702 +#: parser/parse_expr.c:376 #, c-format -msgid "cast from type %s to type %s already exists" -msgstr "型%sから型%sへのキャストはすでに存在しています" +msgid "column \"%s\" not found in data type %s" +msgstr "データ型%2$sの列\"%1$s\"はありません" -#: commands/functioncmds.c:1782 +#: parser/parse_expr.c:382 #, c-format -msgid "cast from type %s to type %s does not exist, skipping" -msgstr "型%sから型%sへのキャストは存在しません。省略します" +msgid "could not identify column \"%s\" in record data type" +msgstr "レコードデータ型の列\"%s\"を識別できませんでした" -#: commands/functioncmds.c:1879 +#: parser/parse_expr.c:388 #, c-format -msgid "function \"%s\" is already in schema \"%s\"" -msgstr "関数\"%s\"はすでにスキーマ\"%s\"内に存在します" +msgid "column notation .%s applied to type %s, which is not a composite type" +msgstr "列記法 .%sが型%sに使用されましたが、この型は複合型ではありません" -#: commands/functioncmds.c:1902 +#: parser/parse_expr.c:764 utils/adt/tsvector_op.c:1393 +#: commands/tablecmds.c:1292 commands/tablecmds.c:2147 commands/copy.c:3779 +#: commands/indexcmds.c:846 #, c-format -msgid "function \"%s\" already exists in schema \"%s\"" -msgstr "関数\"%s\"はすでにスキーマ\"%s\"内に存在します" +msgid "column \"%s\" does not exist" +msgstr "列\"%s\"は存在しません" -#: commands/functioncmds.c:1974 -msgid "no inline code specified" -msgstr "インラインコードの指定がありません" +#: parser/parse_expr.c:1018 +msgid "NULLIF requires = operator to yield boolean" +msgstr "NULLIFでは=演算子がbooleanを返すことを必要とします" -#: commands/functioncmds.c:2022 -#, c-format -msgid "language \"%s\" does not support inline code execution" -msgstr "言語 \"%s\" ではインラインコード実行をサポートしていません" +#: parser/parse_expr.c:1197 +msgid "arguments of row IN must all be row expressions" +msgstr "行のIN引数はすべて行式でなければなりません" -#: commands/sequence.c:469 commands/sequence.c:668 commands/sequence.c:710 -#: commands/sequence.c:746 catalog/aclchk.c:3093 -#, c-format -msgid "permission denied for sequence %s" -msgstr "シーケンス%sに対する権限がありません" +#: parser/parse_expr.c:1411 +msgid "subquery cannot have SELECT INTO" +msgstr "副問い合わせでは SELECT INTO を使用できません" -# (%s) -#: commands/sequence.c:553 -#, c-format -msgid "nextval: reached maximum value of sequence \"%s\" (%s)" -msgstr "nextval: シーケンス\"%s\"の最大値(%s)に達しました" +#: parser/parse_expr.c:1439 +msgid "subquery must return a column" +msgstr "副問い合わせは1列を返さなければなりません" -#: commands/sequence.c:576 -#, c-format -msgid "nextval: reached minimum value of sequence \"%s\" (%s)" -msgstr "nextval: シーケンス\"%s\"の最小値(%s)に達しました" +#: parser/parse_expr.c:1446 +msgid "subquery must return only one column" +msgstr "副問い合わせは1列のみを返さなければなりません" -#: commands/sequence.c:674 -#, c-format -msgid "currval of sequence \"%s\" is not yet defined in this session" -msgstr "本セッションでシーケンス\"%s\"のcurrvalはまだ定義されていません" +#: parser/parse_expr.c:1506 +msgid "subquery has too many columns" +msgstr "副問い合わせの列が多すぎます" -#: commands/sequence.c:693 commands/sequence.c:699 -msgid "lastval is not yet defined in this session" -msgstr "本セッションでlastvalはまだ定義されていません" +#: parser/parse_expr.c:1511 +msgid "subquery has too few columns" +msgstr "副問い合わせの列が少なすぎます" + +#: 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[]" -#: commands/sequence.c:767 +#: parser/parse_expr.c:1622 #, c-format -msgid "setval: value %s is out of bounds for sequence \"%s\" (%s..%s)" -msgstr "setval: 値%sはシーケンス\"%s\"の範囲(%s..%s)外です\"" +msgid "could not find element type for data type %s" +msgstr "データ型 %s の要素を見つけられませんでした" -#: commands/sequence.c:936 utils/hash/dynahash.c:363 utils/hash/dynahash.c:435 -#: utils/hash/dynahash.c:929 utils/mmgr/aset.c:408 utils/mmgr/aset.c:587 -#: utils/mmgr/aset.c:770 utils/mmgr/aset.c:976 utils/adt/formatting.c:1491 -#: utils/adt/formatting.c:1547 utils/adt/formatting.c:1604 -#: utils/adt/regexp.c:205 utils/adt/varlena.c:3246 utils/adt/varlena.c:3267 -#: utils/init/miscinit.c:149 utils/init/miscinit.c:170 -#: utils/init/miscinit.c:180 utils/misc/guc.c:2911 utils/misc/guc.c:2924 -#: utils/misc/guc.c:2937 utils/fmgr/dfmgr.c:224 utils/mb/mbutils.c:334 -#: utils/mb/mbutils.c:606 storage/ipc/procarray.c:840 -#: storage/ipc/procarray.c:1205 storage/ipc/procarray.c:1212 -#: storage/ipc/procarray.c:1443 storage/ipc/procarray.c:1837 -#: storage/file/fd.c:355 storage/file/fd.c:738 storage/file/fd.c:856 -#: storage/buffer/localbuf.c:348 storage/buffer/buf_init.c:154 -#: postmaster/postmaster.c:1968 postmaster/postmaster.c:2001 -#: postmaster/postmaster.c:3170 postmaster/postmaster.c:3848 -#: postmaster/postmaster.c:3929 postmaster/postmaster.c:4517 -#: lib/stringinfo.c:266 libpq/auth.c:1020 libpq/auth.c:1374 libpq/auth.c:1442 -#: libpq/auth.c:2016 -msgid "out of memory" -msgstr "メモリ不足です" +#: parser/parse_expr.c:1823 +msgid "unnamed XML attribute value must be a column reference" +msgstr "無名のXML属性値は列参照でなければなりません" -#: commands/sequence.c:1096 -msgid "INCREMENT must not be zero" -msgstr "INCREMENTはゼロではいけません" +#: parser/parse_expr.c:1824 +msgid "unnamed XML element value must be a column reference" +msgstr "無名のXML要素値は列参照でなければなりません" -#: commands/sequence.c:1142 +#: parser/parse_expr.c:1839 #, c-format -msgid "MINVALUE (%s) must be less than MAXVALUE (%s)" -msgstr "MINVALUE (%s)はMAXVALUE (%s)より小さくなければなりません" +msgid "XML attribute name \"%s\" appears more than once" +msgstr "XML属性名\"%s\"が複数あります" -#: commands/sequence.c:1167 +#: parser/parse_expr.c:1946 #, c-format -msgid "START value (%s) cannot be less than MINVALUE (%s)" -msgstr "STARTの値(%s)はMINVALUE(%s)より小さくすることはできません" +msgid "cannot cast XMLSERIALIZE result to %s" +msgstr "XMLSERIALIZE の結果を %s へキャストできません" -#: commands/sequence.c:1179 -#, c-format -msgid "START value (%s) cannot be greater than MAXVALUE (%s)" -msgstr "STARTの値(%s)はMAXVALUE(%s)より大きくすることはできません" +#: parser/parse_expr.c:2183 parser/parse_expr.c:2382 +msgid "unequal number of entries in row expressions" +msgstr "行式において項目数が一致しません" -#: commands/sequence.c:1210 -#, c-format -msgid "RESTART value (%s) cannot be less than MINVALUE (%s)" -msgstr "RESTART の値(%s)は MINVALUE(%s) より小さくすることはできません" +#: parser/parse_expr.c:2193 +msgid "cannot compare rows of zero length" +msgstr "長さ0の行を比較できません" -#: commands/sequence.c:1222 +#: parser/parse_expr.c:2218 #, c-format -msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)" -msgstr "RESTART の値(%s)は MAXVALUE(%s) より大きくすることはできません" +msgid "row comparison operator must yield type boolean, not type %s" +msgstr "行比較演算子は型%sではなくbooleanを返さなければなりません" -#: commands/sequence.c:1237 +#: parser/parse_expr.c:2225 +msgid "row comparison operator must not return a set" +msgstr "行比較演算子は集合を返してはいけません" + +#: parser/parse_expr.c:2284 parser/parse_expr.c:2328 #, c-format -msgid "CACHE (%s) must be greater than zero" -msgstr "CACHE(%s)はゼロより大きくなければなりません" +msgid "could not determine interpretation of row comparison operator %s" +msgstr "行比較演算子%sの解釈を決定できません" -#: commands/sequence.c:1268 -msgid "invalid OWNED BY option" -msgstr "無効なOWNED BYオプションです" +#: parser/parse_expr.c:2286 +msgid "" +"Row comparison operators must be associated with btree operator families." +msgstr "行比較演算子はB-Tree演算子族と関連付けされなければなりません。" -#: commands/sequence.c:1269 -msgid "Specify OWNED BY table.column or OWNED BY NONE." -msgstr "OWNED BY table.column または OWNED BY NONEを指定してください。" +#: parser/parse_expr.c:2330 +msgid "There are multiple equally-plausible candidates." +msgstr "複数のもっともらしさが等しい候補が存在します。" -#: commands/sequence.c:1298 -msgid "sequence must have same owner as table it is linked to" -msgstr "シーケンスは関連するテーブルと同じ所有者でなければなりません" +#: parser/parse_expr.c:2422 +msgid "IS DISTINCT FROM requires = operator to yield boolean" +msgstr "IS DISTINCT FROMでは=演算子はbooleanを返さなければなりません" -#: commands/sequence.c:1302 -msgid "sequence must be in same schema as table it is linked to" -msgstr "シーケンスは関連するテーブルと同じスキーマでなければなりません" +#: parser/analyze.c:471 +msgid "INSERT ... SELECT cannot specify INTO" +msgstr "INSERT ... SELECTではINTOを指定できません" -#: commands/trigger.c:192 -msgid "TRUNCATE FOR EACH ROW triggers are not supported" -msgstr "TRUNCATE FOR EACH ROW トリガーはサポートされていません" +#: parser/analyze.c:564 parser/analyze.c:1070 +msgid "VALUES lists must all be the same length" +msgstr "VALUESリストはすべて同じ長さでなければなりません" -#: commands/trigger.c:233 -msgid "cannot use subquery in trigger WHEN condition" -msgstr "トリガーの WHEN 条件では副問い合わせを使用できません" - -#: commands/trigger.c:237 -msgid "cannot use aggregate function in trigger WHEN condition" -msgstr "トリガーの WHEN 条件では集約関数を使用できません" +#: parser/analyze.c:606 parser/analyze.c:1211 +msgid "VALUES must not contain table references" +msgstr "VALUESにはテーブル参照を含めてはいけません" -#: commands/trigger.c:241 -msgid "cannot use window function in trigger WHEN condition" -msgstr "トリガーの WHEN 条件ではウィンドウ関数を使用できません" +#: parser/analyze.c:620 parser/analyze.c:1225 +msgid "VALUES must not contain OLD or NEW references" +msgstr "VALUESにはOLDやNEWへの参照を含めてはいけません" -#: commands/trigger.c:261 commands/trigger.c:274 -msgid "statement trigger's WHEN condition cannot reference column values" -msgstr "ステートメントトリガーの WHEN 条件ではカラム値を参照できません" +#: parser/analyze.c:621 parser/analyze.c:1226 +msgid "Use SELECT ... UNION ALL ... instead." +msgstr "代わりにSELECT ... UNION ALL ... を使用してください" -#: commands/trigger.c:266 -msgid "INSERT trigger's WHEN condition cannot reference OLD values" -msgstr "INSERT トリガーの WHEN 条件では OLD 値を参照できません" +#: parser/analyze.c:725 parser/analyze.c:1238 +msgid "cannot use aggregate function in VALUES" +msgstr "VALUESで集約関数を使用できません" -#: commands/trigger.c:279 -msgid "DELETE trigger's WHEN condition cannot reference NEW values" -msgstr "DELETE トリガーの WHEN 条件では NEW 値を参照できません" +#: parser/analyze.c:731 parser/analyze.c:1244 +msgid "cannot use window function in VALUES" +msgstr "VALUES 内ではウィンドウ関数を使用できません" -#: commands/trigger.c:284 -msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns" -msgstr "BEFORE トリガーの WHEN 条件では NEW システムカラムを参照できません" +#: parser/analyze.c:765 +msgid "INSERT has more expressions than target columns" +msgstr "INSERTにて対象列よりも多くの式があります" -#: commands/trigger.c:322 -#, c-format -msgid "changing return type of function %s from \"opaque\" to \"trigger\"" -msgstr "関数%sの戻り値型を\"opaque\"から\"trigger\"へ変更しています" +#: parser/analyze.c:783 +msgid "INSERT has more target columns than expressions" +msgstr "INSERTにて式よりも多くの対象列があります" -#: commands/trigger.c:329 -#, c-format -msgid "function %s must return type \"trigger\"" -msgstr "関数%sは\"trigger\"型を返さなければなりません" +#: 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 "" +"挿入元の行表現に INSERT が期待するのと同じ列数が含まれています。" +"うっかり余計なカッコをつけたりしませんでしたか?" -#: commands/trigger.c:438 commands/trigger.c:1152 -#, c-format -msgid "trigger \"%s\" for relation \"%s\" already exists" -msgstr "リレーション\"%2$s\"用のトリガ\"%1$s\"はすでに存在します" +#: parser/analyze.c:1084 +msgid "DEFAULT can only appear in a VALUES list within INSERT" +msgstr "VALUESリスト内のDEFAULTはINSERTの場合のみ使用できます" -#: commands/trigger.c:719 -msgid "Found referenced table's UPDATE trigger." -msgstr "被参照テーブルのUPDATEトリガが見つかりました。" +#: parser/analyze.c:1192 parser/analyze.c:2414 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES" +msgstr "SELECT FOR UPDATE/SHAREをVALUESに使用できません" -#: commands/trigger.c:720 -msgid "Found referenced table's DELETE trigger." -msgstr "被参照テーブルのDELETEトリガが見つかりました。" +#: parser/analyze.c:1337 parser/analyze.c:1534 parser/analyze.c:2263 +#: optimizer/plan/planner.c:959 +msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT" +msgstr "UNION/INTERSECT/EXCEPTではSELECT FOR UPDATE/SHAREを使用できません" -#: commands/trigger.c:721 -msgid "Found referencing table's trigger." -msgstr "参照テーブルのトリガが見つかりました。" +#: parser/analyze.c:1452 +msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" +msgstr "無効なUNION/INTERSECT/EXCEPT ORDER BY句です" -#: commands/trigger.c:830 commands/trigger.c:846 -#, c-format -msgid "ignoring incomplete trigger group for constraint \"%s\" %s" -msgstr "制約\"%s\" %sに対する不完全なトリガグループを無視します。" +#: parser/analyze.c:1453 +msgid "Only result column names can be used, not expressions or functions." +msgstr "式や関数ではなく、結果列の名前のみが使用されます。" -#: commands/trigger.c:858 -#, c-format -msgid "converting trigger group into constraint \"%s\" %s" -msgstr "トリガグループを制約\"%s\" %sに変換しています" +#: parser/analyze.c:1454 +msgid "" +"Add the expression/function to every SELECT, or move the UNION into a FROM " +"clause." +msgstr "" +"式/関数をすべてのSELECTにつけてください。またはUNIONをFROM句に移動してくださ" +"い" -#: commands/trigger.c:998 -#, c-format -msgid "trigger \"%s\" for table \"%s\" does not exist, skipping" -msgstr "テーブル\"%2$s\"のトリガ\"%1$s\"は存在しません。省略します" +#: parser/analyze.c:1526 +msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" +msgstr "INTOはUNION/INTERSECT/EXCEPTの最初のSELECTでのみ使用できます" -#: commands/trigger.c:1273 -#, c-format -msgid "permission denied: \"%s\" is a system trigger" -msgstr "権限がありません: \"%s\"はシステムトリガです" +#: parser/analyze.c:1586 +msgid "" +"UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of " +"same query level" +msgstr "" +"UNION/INTERSECT/EXCEPTの要素となる文では同一問い合わせレベルの他のリレーショ" +"ンを参照できません" -#: commands/trigger.c:1848 +#: parser/analyze.c:1674 #, c-format -msgid "trigger function %u returned null value" -msgstr "トリガ関数%uはNULL値を返しました" +msgid "each %s query must have the same number of columns" +msgstr "%s問い合わせはそれぞれ同じ列数を返さなければなりません" -#: commands/trigger.c:1908 commands/trigger.c:2023 commands/trigger.c:2160 -#: commands/trigger.c:2304 -msgid "BEFORE STATEMENT trigger cannot return a value" -msgstr "BEFORE STATEMENTトリガは値を返すことができません" +#: parser/analyze.c:1930 +msgid "CREATE TABLE AS specifies too many column names" +msgstr "CREATE TABLE ASで指定した列数が多すぎます" -#: commands/trigger.c:3920 catalog/namespace.c:232 catalog/namespace.c:306 -#, c-format -msgid "cross-database references are not implemented: \"%s.%s.%s\"" -msgstr "データベース間の参照は実装されていません: \"%s.%s.%s\"" +#: parser/analyze.c:1988 +msgid "cannot use aggregate function in UPDATE" +msgstr "UPDATEでは集約関数を使用できません" -#: commands/trigger.c:3971 -#, c-format -msgid "constraint \"%s\" is not deferrable" -msgstr "制約\"%s\"は遅延可能ではありません" +#: parser/analyze.c:1994 +msgid "cannot use window function in UPDATE" +msgstr "UPDATE 内ではウィンドウ関数を使用できません" -#: commands/trigger.c:3994 -#, c-format -msgid "constraint \"%s\" does not exist" -msgstr "制約\"%s\"は存在しません" +#: parser/analyze.c:2103 +msgid "cannot use aggregate function in RETURNING" +msgstr "RETURNINGには集約関数を使用できません" -#: commands/explain.c:149 -#, c-format -msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\"" -msgstr "EXPLAIN オプション \"%s\" が認識できない値です: \"%s\"" +#: parser/analyze.c:2109 +msgid "cannot use window function in RETURNING" +msgstr "RETURNING ではウィンドウ関数を使用できません" -#: commands/explain.c:155 -#, c-format -msgid "unrecognized EXPLAIN option \"%s\"" -msgstr "EXPLAIN オプション \"%s\" が認識できません" +#: parser/analyze.c:2128 +msgid "RETURNING cannot contain references to other relations" +msgstr "RETURNINGに他のリレーションへの参照を持たせられません" -#: commands/explain.c:162 -msgid "EXPLAIN option BUFFERS requires ANALYZE" -msgstr "EXPLAIN オプションの BUFFERS には ANALYZE 指定が必要です" +#: parser/analyze.c:2167 +msgid "cannot specify both SCROLL and NO SCROLL" +msgstr "SCROLLとNO SCROLLの両方を指定できません" -#: commands/conversioncmds.c:69 -#, c-format -msgid "source encoding \"%s\" does not exist" -msgstr "変換元符号化方式\"%s\"は存在しません" +#: parser/analyze.c:2181 +msgid "DECLARE CURSOR cannot specify INTO" +msgstr "DECLARE CURSORではINTOを指定できません" -#: commands/conversioncmds.c:76 -#, c-format -msgid "destination encoding \"%s\" does not exist" -msgstr "変換先符号化方式\"%s\"は存在しません" +#: parser/analyze.c:2193 +msgid "DECLARE CURSOR must not contain data-modifying statements in WITH" +msgstr "" +"DECLARE CURSOR では WITH にデータを変更するステートメントを含んではなりません" -#: commands/conversioncmds.c:90 -#, c-format -msgid "encoding conversion function %s must return type \"void\"" -msgstr "エンコード変換関数 %s は \"void\" 型を返さなければなりません" +#: parser/analyze.c:2199 +msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHAREはサポートされていません" -#: commands/conversioncmds.c:159 -#, c-format -msgid "conversion \"%s\" does not exist, skipping" -msgstr "変換\"%sは存在しません。省略します" +#: parser/analyze.c:2200 +msgid "Holdable cursors must be READ ONLY." +msgstr "保持可能カーソルは読み取りのみでなければなりません。" -#: commands/conversioncmds.c:224 -#, c-format -msgid "conversion \"%s\" already exists in schema \"%s\"" -msgstr "変換\"%s\"はスキーマ\"%s\"内にすでに存在します" +#: parser/analyze.c:2213 +msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported" +msgstr "" +"DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHAREはサポートされていません" -#: commands/tablespace.c:157 commands/tablespace.c:174 -#: commands/tablespace.c:185 commands/tablespace.c:193 -#: commands/tablespace.c:579 storage/file/copydir.c:61 -#, c-format -msgid "could not create directory \"%s\": %m" -msgstr "ディレクトリ\"%s\"を作成できませんでした: %m" +#: parser/analyze.c:2214 +msgid "Insensitive cursors must be READ ONLY." +msgstr "無反応カーソルは読み取りのみでなければなりません" -#: commands/tablespace.c:204 -#, c-format -msgid "could not stat directory \"%s\": %m" -msgstr "ディレクトリ\"%s\"のstatができませんでした: %m" +#: parser/analyze.c:2267 +msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause" +msgstr "DISTINCT句ではSELECT FOR UPDATE/SHAREを使用できません" -#: commands/tablespace.c:213 -#, c-format -msgid "\"%s\" exists but is not a directory" -msgstr "\"%s\"は存在しますが、ディレクトリではありません" +#: parser/analyze.c:2271 +msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause" +msgstr "GROUP BY句ではSELECT FOR UPDATE/SHAREを使用できません" -#: commands/tablespace.c:243 -#, c-format -msgid "permission denied to create tablespace \"%s\"" -msgstr "テーブル空間\"%s\"を作成する権限がありません" +#: parser/analyze.c:2275 +msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause" +msgstr "HAVING句ではSELECT FOR UPDATE/SHAREを使用できません" -#: commands/tablespace.c:245 -msgid "Must be superuser to create a tablespace." -msgstr "テーブル空間を作成するにはスーパーユーザでなければなりません" +#: parser/analyze.c:2279 +msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions" +msgstr "集約関数ではSELECT FOR UPDATE/SHAREを使用できません" -#: commands/tablespace.c:261 -msgid "tablespace location cannot contain single quotes" -msgstr "テーブル空間の場所には単一引用符を含めることができません" +#: parser/analyze.c:2283 +msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions" +msgstr "ウィンドウ関数では SELECT FOR UPDATE/SHARE を使用できません" -#: commands/tablespace.c:271 -msgid "tablespace location must be an absolute path" -msgstr "テーブル空間の場所は絶対パスでなければなりません" +#: parser/analyze.c:2287 +msgid "" +"SELECT FOR UPDATE/SHARE is not allowed with set-returning functions in the " +"target list" +msgstr "" +"ターゲットリストの中では SELECT FOR UPDATE/SHARE を戻り値を返す関数と一緒に使" +"うことはできません" -#: commands/tablespace.c:282 -#, c-format -msgid "tablespace location \"%s\" is too long" -msgstr "テーブル空間の場所\"%s\"は長すぎます" +#: parser/analyze.c:2366 +msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names" +msgstr "" +"SELECT FOR UPDATE/SHARE では無条件のリレーション名を指定しなければなりません" -#: commands/tablespace.c:292 commands/tablespace.c:795 +#: parser/analyze.c:2383 #, c-format -msgid "unacceptable tablespace name \"%s\"" -msgstr "テーブル空間名\"%s\"を受け付けられません" +msgid "SELECT FOR UPDATE/SHARE cannot be used with foreign table \"%s\"" +msgstr "SELECT FOR UPDATE/SHARE は外部テーブル \"%s\" と一緒には使用できません" -#: commands/tablespace.c:294 commands/tablespace.c:796 -msgid "The prefix \"pg_\" is reserved for system tablespaces." -msgstr "接頭辞\"pg_\"はシステムテーブル空間用に予約されています" +#: parser/analyze.c:2402 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join" +msgstr "SELECT FOR UPDATE/SHAREを結合に使用できません" -#: commands/tablespace.c:304 commands/tablespace.c:808 -#, c-format -msgid "tablespace \"%s\" already exists" -msgstr "テーブル空間\"%s\"はすでに存在します" +#: parser/analyze.c:2408 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function" +msgstr "SELECT FOR UPDATE/SHAREを関数に使用できません" -#: commands/tablespace.c:372 commands/tablespace.c:524 -msgid "tablespaces are not supported on this platform" -msgstr "このプラットフォームではテーブル空間をサポートしていません" +#: parser/analyze.c:2420 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query" +msgstr "SELECT FOR UPDATE/SHARE は WITH クエリーには適用できません" -#: commands/tablespace.c:416 +#: parser/analyze.c:2434 #, c-format -msgid "tablespace \"%s\" does not exist, skipping" -msgstr "テーブル空間\"%s\"は存在しません。省略します" +msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause" +msgstr "FOR UPDATE/SHARE句のリレーション\"%s\"はFROM句にありません" -#: commands/tablespace.c:481 -#, c-format -msgid "tablespace \"%s\" is not empty" -msgstr "テーブル空間\"%s\"は空ではありません" +#: parser/parse_agg.c:133 +msgid "Aggregates with DISTINCT must be able to sort their inputs." +msgstr "" +"DISTINCT 付きの集約関数は、それに対する入力をソートできなければなりません。" -#: commands/tablespace.c:555 -msgid "directory \"%s\" does not exist" -msgstr "ディレクトリ \"%s\" は存在しません" +#: parser/parse_agg.c:174 +msgid "aggregate function calls cannot contain window function calls" +msgstr "集約関数の呼び出しにウィンドウ関数の呼び出しを含むことはできません" -#: commands/tablespace.c:556 -msgid "" -"Create directory \"%s\" for this tablespace before restarting the server." -msgstr "" -"パラメータ \"%s\" を変更するにはサーバーの再起動が必要です" +#: parser/parse_agg.c:336 +msgid "aggregates not allowed in WHERE clause" +msgstr "WHERE句では集約を使用できません" -#: commands/tablespace.c:561 -#, c-format -msgid "could not set permissions on directory \"%s\": %m" -msgstr "ディレクトリ\"%s\"に権限を設定できませんでした: %m" +#: parser/parse_agg.c:342 +msgid "aggregates not allowed in JOIN conditions" +msgstr "JOIN条件で集約を使用できません" -#: commands/tablespace.c:574 -msgid "directory \"%s\" already in use as a tablespace" -msgstr "ディレクトリ \"%s\" はすでにテーブルスペースとして使われています" +#: parser/parse_agg.c:363 +msgid "aggregates not allowed in GROUP BY clause" +msgstr "GROUP BY句で集約を使用できません" -#: commands/tablespace.c:589 -#, c-format -msgid "could not create symbolic link \"%s\": %m" -msgstr "シンボリックリンク\"%s\"を作成できませんでした: %m" +#: parser/parse_agg.c:433 +msgid "aggregate functions not allowed in a recursive query's recursive term" +msgstr "再帰クエリーの再帰項目中では集約関数を使用できません" -#: commands/tablespace.c:650 utils/adt/misc.c:213 utils/adt/genfile.c:244 -#: utils/misc/tzparser.c:345 storage/file/copydir.c:67 -#: storage/file/copydir.c:106 storage/file/fd.c:1572 -#: postmaster/postmaster.c:1142 -#, c-format -msgid "could not open directory \"%s\": %m" -msgstr "ディレクトリ\"%s\"をオープンできませんでした: %m" +#: parser/parse_agg.c:458 +msgid "window functions not allowed in WHERE clause" +msgstr "WHERE句ではウィンドウ関数を使用できません" -#: commands/tablespace.c:680 commands/tablespace.c:692 -#: commands/tablespace.c:708 -#, c-format -msgid "could not remove directory \"%s\": %m" -msgstr "ディレクトリ\"%s\"を削除できませんでした: %m" +#: parser/parse_agg.c:464 +msgid "window functions not allowed in JOIN conditions" +msgstr "JOIN条件ではウィンドウ関数を使用できません" -#: commands/tablespace.c:716 -#, c-format -msgid "could not remove symbolic link \"%s\": %m" -msgstr "シンボリックリンク\"%s\"を削除できませんでした: %m" +#: parser/parse_agg.c:470 +msgid "window functions not allowed in HAVING clause" +msgstr "HAVING 句ではウィンドウ関数を使用できません" -#: commands/tablespace.c:1392 -#, c-format -msgid "tablespace %u is not empty" -msgstr "テーブル空間%uは空ではありません" +#: parser/parse_agg.c:483 +msgid "window functions not allowed in GROUP BY clause" +msgstr "GROUP BY 句ではウィンドウ関数を使用できません" + +#: parser/parse_agg.c:502 parser/parse_agg.c:515 +msgid "window functions not allowed in window definition" +msgstr "ウィンドウ定義ではウィンドウ関数を使用できません" -#: commands/tsearchcmds.c:109 commands/tsearchcmds.c:929 +#: parser/parse_agg.c:673 #, c-format -msgid "function %s should return type %s" -msgstr "関数%sは型%sを返すことができません" - -#: commands/tsearchcmds.c:178 -msgid "must be superuser to create text search parsers" -msgstr "テキスト検索パーサを作成するにはスーパーユーザでなければなりません" - -#: commands/tsearchcmds.c:226 -#, c-format -msgid "text search parser parameter \"%s\" not recognized" -msgstr "テキスト検索パーサ\"%s\"は不明です" - -#: commands/tsearchcmds.c:236 -msgid "text search parser start method is required" -msgstr "テキスト検索パーサの開始メソッドが必要です" - -#: commands/tsearchcmds.c:241 -msgid "text search parser gettoken method is required" -msgstr "テキスト検索パーサのgettokenメソッドが必要です" - -#: commands/tsearchcmds.c:246 -msgid "text search parser end method is required" -msgstr "テキスト検索パーサの終了メソッドが必要です" - -#: commands/tsearchcmds.c:251 -msgid "text search parser lextypes method is required" -msgstr "テキスト検索パーサのlextypesメソッドが必要です" - -#: commands/tsearchcmds.c:283 -msgid "must be superuser to drop text search parsers" -msgstr "テキスト検索パーサを削除するにはスーパーユーザでなければなりません" +msgid "" +"column \"%s.%s\" must appear in the GROUP BY clause or be used in an " +"aggregate function" +msgstr "" +"列\"%s.%s\"はGROUP BY句で出現しなければならないか、集約関数内で使用しなければ" +"なりません" -#: commands/tsearchcmds.c:306 catalog/namespace.c:1748 +#: parser/parse_agg.c:679 #, c-format -msgid "text search parser \"%s\" does not exist" -msgstr "テキスト検索パーサ\"%s\"は存在しません" +msgid "subquery uses ungrouped column \"%s.%s\" from outer query" +msgstr "" +"外部問い合わせから副問い合わせがグループ化されていない列\"%s.%s\"を使用してい" +"ます" -#: commands/tsearchcmds.c:312 +#: parser/parse_func.c:147 #, c-format -msgid "text search parser \"%s\" does not exist, skipping" -msgstr "テキスト検索パーサ\"%s\"は存在しません。省略します" +msgid "argument name \"%s\" used more than once" +msgstr "引数名 \"%s\" が複数回指定されました" -#: commands/tsearchcmds.c:367 -msgid "must be superuser to rename text search parsers" -msgstr "" -"テキスト検索パーサの名前を変更するにはスーパーユーザでなければなりません" +#: parser/parse_func.c:158 +msgid "positional argument cannot follow named argument" +msgstr "位置パラメーターの次には名前付きの引数を指定できません。" -#: commands/tsearchcmds.c:385 +#: parser/parse_func.c:236 #, c-format -msgid "text search parser \"%s\" already exists" -msgstr "テキスト検索パーサ\"%s\"はすでに存在します" +msgid "%s(*) specified, but %s is not an aggregate function" +msgstr "%s(*)が指定されましたが%sは集約関数ではありません" -#: commands/tsearchcmds.c:462 +#: parser/parse_func.c:243 #, c-format -msgid "text search template \"%s\" does not accept options" -msgstr "テキスト検索テンプレート\"%s\"はオプションを受け付けません" - -#: commands/tsearchcmds.c:535 -msgid "text search template is required" -msgstr "テキスト検索テンプレートが必要です" +msgid "DISTINCT specified, but %s is not an aggregate function" +msgstr "DISTINCTが指定されましたが%sは集約関数ではありません" -#: commands/tsearchcmds.c:600 +#: parser/parse_func.c:249 #, c-format -msgid "text search dictionary \"%s\" already exists" -msgstr "テキスト検索辞書\"%s\"はすでに存在します" +msgid "ORDER BY specified, but %s is not an aggregate function" +msgstr "ORDER BY が指定されましたが、%s が集約関数ではありません" -#: commands/tsearchcmds.c:654 catalog/namespace.c:1871 +#: parser/parse_func.c:255 #, c-format -msgid "text search dictionary \"%s\" does not exist" -msgstr "テキスト検索辞書\"%s\"は存在しません" +msgid "" +"OVER specified, but %s is not a window function nor an aggregate function" +msgstr "" +"OVER が指定されましたが、%s はウィンドウ関数と集約関数のいずれでもありません" -#: commands/tsearchcmds.c:660 +#: parser/parse_func.c:277 #, c-format -msgid "text search dictionary \"%s\" does not exist, skipping" -msgstr "テキスト検索辞書\"%s\"は存在しません。省略します" +msgid "function %s is not unique" +msgstr "関数 %s は一意でありません" -#: commands/tsearchcmds.c:990 -msgid "must be superuser to create text search templates" +#: parser/parse_func.c:280 +msgid "" +"Could not choose a best candidate function. You might need to add explicit " +"type casts." msgstr "" -"テキスト検索テンプレートを作成するにはスーパーユーザでなければなりません" +"最善の候補関数を選択できませんでした。明示的な型キャストが必要かもしれません" -#: commands/tsearchcmds.c:1027 +#: parser/parse_func.c:288 parser/parse_func.c:299 parser/parse_func.c:1481 +#: 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 #, c-format -msgid "text search template parameter \"%s\" not recognized" -msgstr "テキスト検索テンプレートのパラメータ\"%sは不明です。" +msgid "function %s does not exist" +msgstr "関数%sは存在しません" -#: commands/tsearchcmds.c:1037 -msgid "text search template lexize method is required" -msgstr "テキスト検索テンプレートのlexizeメソッドが必要です" +#: 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 は集約関数のすべての正規表現引数の後に現れなければなりません。" -#: commands/tsearchcmds.c:1072 -msgid "must be superuser to rename text search templates" +#: parser/parse_func.c:302 +msgid "" +"No function matches the given name and argument types. You might need to add " +"explicit type casts." msgstr "" -"テキスト検索テンプレートの名前を変更するにはスーパーユーザでなければなりませ" -"ん" +"指定名称、指定引数型に合う関数がありません。明示的な型キャストが必要かもしれ" +"ません" -#: commands/tsearchcmds.c:1091 +#: parser/parse_func.c:412 parser/parse_func.c:478 #, c-format -msgid "text search template \"%s\" already exists" -msgstr "テキスト検索テンプレート\"%s\"はすでに存在します" +msgid "%s(*) must be used to call a parameterless aggregate function" +msgstr "%s(*)はパラメータがない集約関数の呼び出しに使用しなければなりません" -#: commands/tsearchcmds.c:1114 -msgid "must be superuser to drop text search templates" -msgstr "" -"テキスト検索テンプレートを削除するにはスーパーユーザでなければなりません" +#: parser/parse_func.c:419 +msgid "aggregates cannot return sets" +msgstr "集約は集合を返せません" -#: commands/tsearchcmds.c:1137 catalog/namespace.c:1995 -#, c-format -msgid "text search template \"%s\" does not exist" -msgstr "テキスト検索テンプレート\"%s\"は存在しません" +#: parser/parse_func.c:431 +msgid "aggregates cannot use named arguments" +msgstr "集約では名前付き引数は使えません" -#: commands/tsearchcmds.c:1143 -#, c-format -msgid "text search template \"%s\" does not exist, skipping" -msgstr "テキスト検索テンプレート\"%s\"は存在しません。省略します" +#: parser/parse_func.c:450 +msgid "window function call requires an OVER clause" +msgstr "ウィンドウ関数の呼び出しには OVER 句が必要です" -#: commands/tsearchcmds.c:1338 -#, c-format -msgid "text search configuration parameter \"%s\" not recognized" -msgstr "テキスト検索設定のパラメータ\"%s\"は不明です" +#: parser/parse_func.c:468 +msgid "DISTINCT is not implemented for window functions" +msgstr "ウィンドウ関数に対する DISTINCT は実装されていません" -#: commands/tsearchcmds.c:1345 -msgid "cannot specify both PARSER and COPY options" -msgstr "PARSERとCOPYオプションをまとめて指定できません" +#: parser/parse_func.c:488 +msgid "aggregate ORDER BY is not implemented for window functions" +msgstr "ウィンドウ関数に対する集約の ORDER BY は実装されていません" -#: commands/tsearchcmds.c:1373 -msgid "text search parser is required" -msgstr "テキスト検索パーサが必要です" +#: parser/parse_func.c:494 +msgid "window functions cannot return sets" +msgstr "ウィンドウ関数は集合を返すことができません" -#: commands/tsearchcmds.c:1479 -#, c-format -msgid "text search configuration \"%s\" already exists" -msgstr "テキスト検索設定\"%s\"はすでに存在します" +#: parser/parse_func.c:505 +msgid "window functions cannot use named arguments" +msgstr "ウィンドウ関数では名前付き引数を使えません" -#: commands/tsearchcmds.c:1532 commands/tsearchcmds.c:1688 -#: catalog/namespace.c:2118 +#: parser/parse_func.c:1502 parser/parse_type.c:196 utils/adt/regproc.c:973 +#: commands/tablecmds.c:224 commands/functioncmds.c:128 +#: commands/typecmds.c:660 commands/typecmds.c:2660 #, c-format -msgid "text search configuration \"%s\" does not exist" -msgstr "テキスト検索設定\"%s\"は存在しません" +msgid "type \"%s\" does not exist" +msgstr "型\"%s\"は存在しません" -#: commands/tsearchcmds.c:1538 +#: parser/parse_func.c:1526 parser/parse_func.c:1566 catalog/pg_proc.c:124 #, c-format -msgid "text search configuration \"%s\" does not exist, skipping" -msgstr "テキスト検索設定\"%sは存在しません。省略します" +msgid "functions cannot have more than %d argument" +msgid_plural "functions cannot have more than %d arguments" +msgstr[0] "関数は%dを超える引数を取ることができません" +msgstr[1] "関数は%dを超える引数を取ることができません" -#: commands/tsearchcmds.c:1760 +#: parser/parse_func.c:1589 #, c-format -msgid "token type \"%s\" does not exist" -msgstr "トークン型\"%s\"は存在しません" +msgid "aggregate %s(*) does not exist" +msgstr "集約%s(*)は存在しません" -#: commands/tsearchcmds.c:1984 +#: parser/parse_func.c:1594 #, c-format -msgid "mapping for token type \"%s\" does not exist" -msgstr "トークン型\"%s\"に対するマップは存在しません" +msgid "aggregate %s does not exist" +msgstr "集約%sは存在しません" -#: commands/tsearchcmds.c:1990 +#: parser/parse_func.c:1613 #, c-format -msgid "mapping for token type \"%s\" does not exist, skipping" -msgstr "トークン型\"%s\"に対するマップは存在しません。省略します" +msgid "function %s is not an aggregate" +msgstr "関数%sは集約ではありません" + +#: parser/parse_coerce.c:939 +msgid "Input has too few columns." +msgstr "入力列が少なすぎます" -#: commands/tsearchcmds.c:2143 commands/tsearchcmds.c:2254 +#: parser/parse_coerce.c:957 #, c-format -msgid "invalid parameter list format: \"%s\"" -msgstr "無効なパラメータリストの書式です: \"%s\"" +msgid "Cannot cast type %s to %s in column %d." +msgstr "列%3$dにて型%1$sから%2$sへキャストできません" -#: commands/view.c:139 -msgid "view must have at least one column" -msgstr "ビューには少なくとも1つの列が必要です" +#: parser/parse_coerce.c:972 +msgid "Input has too many columns." +msgstr "入力列が多すぎます" -#: commands/view.c:260 commands/view.c:272 -msgid "cannot drop columns from view" -msgstr "ビューからカラムを削除できません" +#. translator: first %s is name of a SQL construct, eg WHERE +#: parser/parse_coerce.c:1015 +#, c-format +msgid "argument of %s must be type boolean, not type %s" +msgstr "%s の引数は %s 型ではなくブール型でなければなりません" -#: commands/view.c:277 +#. translator: %s is name of a SQL construct, eg WHERE +#. translator: %s is name of a SQL construct, eg LIMIT +#: parser/parse_coerce.c:1025 parser/parse_coerce.c:1074 #, c-format -msgid "cannot change name of view column \"%s\" to \"%s\"" -msgstr "ビューのカラムの名前を \"%s\" から \"%s\" に変更できません" +msgid "argument of %s must not return a set" +msgstr "%sの引数は集合を返してはなりません" -#: commands/view.c:285 +#. translator: first %s is name of a SQL construct, eg LIMIT +#: parser/parse_coerce.c:1062 #, c-format -msgid "cannot change data type of view column \"%s\" from %s to %s" -msgstr "ビューのカラム \"%s\" のデータ型を %s から %s に変更できません" +msgid "argument of %s must be type %s, not type %s" +msgstr "%1$sの引数は型%3$sではなく%2$s型でなければなりません" -#: commands/view.c:441 -msgid "CREATE VIEW specifies more column names than columns" -msgstr "CREATE VIEWでは列よりも多くの列名を指定しなければなりません" +#. translator: first %s is name of a SQL construct, eg CASE +#: parser/parse_coerce.c:1195 +#, c-format +msgid "%s types %s and %s cannot be matched" +msgstr "%sの型%sと%sを一致させることができません" -#: commands/view.c:457 +#. translator: first %s is name of a SQL construct, eg CASE +#: parser/parse_coerce.c:1262 #, c-format -msgid "view \"%s\" will be a temporary view" -msgstr "ビュー\"%s\"は一時ビューとなります" +msgid "%s could not convert type %s to %s" +msgstr "%sで型%sから%sへ変換できませんでした" -#: commands/async.c:567 -msgid "channel name cannot be empty" -msgstr "チャネル名が空であることはできません" +#: parser/parse_coerce.c:1513 +msgid "arguments declared \"anyelement\" are not all alike" +msgstr "\"anyelement\"と宣言された引数が全て同じでありません" -#: commands/async.c:572 -msgid "channel name too long" -msgstr "チャネル名が長すぎます" +#: parser/parse_coerce.c:1533 +msgid "arguments declared \"anyarray\" are not all alike" +msgstr "\"anyarray\"と宣言された引数が全て同じでありません" -#: commands/async.c:579 -msgid "payload string too long" -msgstr "ペイロード文字列が長すぎます" +#: parser/parse_coerce.c:1562 parser/parse_coerce.c:1710 +#: parser/parse_coerce.c:1742 +#, c-format +msgid "argument declared \"anyarray\" is not an array but type %s" +msgstr "\"anyarray\"と宣言された引数が配列でなく型%sでした" -#: commands/async.c:763 +#: parser/parse_coerce.c:1578 msgid "" -"cannot PREPARE a transaction that has executed LISTEN, UNLISTEN or NOTIFY" +"argument declared \"anyarray\" is not consistent with argument declared " +"\"anyelement\"" msgstr "" -"すでに LISTEN / UNLISTEN / NOTIFY を実行したトランザクションは PREPARE できません" +"\"anyarray\"と宣言された引数と\"anyelement\"と宣言された引数とで整合性があり" +"ません" -#: commands/async.c:868 -msgid "too many notifications in the NOTIFY queue" -msgstr "NOTIFY キューで発生した通知イベントが多すぎます" +#: parser/parse_coerce.c:1596 +msgid "could not determine polymorphic type because input has type \"unknown\"" +msgstr "入力型が\"unknown\"であったため多様型を決定できませんでした" -#: commands/async.c:1421 +#: parser/parse_coerce.c:1606 #, c-format -msgid "NOTIFY queue is %.0f%% full" -msgstr "NOTYFY キューが %.0f%% まで一杯になっています" +msgid "type matched to anynonarray is an array type: %s" +msgstr "anynonarrayと合う型は配列型です: %s" -#: commands/async.c:1423 +#: parser/parse_coerce.c:1616 #, c-format -msgid "" -"The server process with PID %d is among those with the oldest transactions." -msgstr "" -"PID %d のサーバプロセスは、最も古いトランザクション中にあります。" +msgid "type matched to anyenum is not an enum type: %s" +msgstr "anyenumに合う型は列挙型ではありません: %s" -#: commands/async.c:1426 +#: parser/parse_cte.c:42 +#, c-format msgid "" -"The NOTIFY queue cannot be emptied until that process ends its current " -"transaction." -msgstr "" -"プロセスが現在のトランザクションを終了するまで NOTYFY キューを空にすることはできません" - -#: commands/dbcommands.c:201 -msgid "LOCATION is not supported anymore" -msgstr "LOCATIONはもはやサポートされません" +"recursive reference to query \"%s\" must not appear within its non-recursive " +"term" +msgstr "クエリー \"%s\" への再帰的参照が、その非再帰項目内で現れてはなりません" -#: commands/dbcommands.c:202 -msgid "Consider using tablespaces instead." -msgstr "代わりにテーブル空間の使用を検討してください" +#: parser/parse_cte.c:44 +#, c-format +msgid "recursive reference to query \"%s\" must not appear within a subquery" +msgstr "クエリー \"%s\" への再帰的参照が、副問い合わせ内で現れてはなりません" -#: commands/dbcommands.c:225 utils/adt/ascii.c:144 +#: parser/parse_cte.c:46 #, c-format -msgid "%d is not a valid encoding code" -msgstr "%dは有効な符号化方式コードではありません" - -#: commands/dbcommands.c:235 utils/adt/ascii.c:126 -#, c-format -msgid "%s is not a valid encoding name" -msgstr "%sは有効な符号化方式名ではありません" - -#: commands/dbcommands.c:272 -msgid "permission denied to create database" -msgstr "データベースを作成する権限がありません" - -#: commands/dbcommands.c:295 -#, c-format -msgid "template database \"%s\" does not exist" -msgstr "テンプレートデータベース\"%s\"は存在しません" - -#: commands/dbcommands.c:307 -#, c-format -msgid "permission denied to copy database \"%s\"" -msgstr "データベース\"%s\"をコピーする権限がありません" +msgid "" +"recursive reference to query \"%s\" must not appear within an outer join" +msgstr "クエリー \"%s\" への再帰的参照が、外部結合内で現れてはなりません" -#: commands/dbcommands.c:323 +#: parser/parse_cte.c:48 #, c-format -msgid "invalid server encoding %d" -msgstr "サーバの符号化方式%dは無効です" +msgid "recursive reference to query \"%s\" must not appear within INTERSECT" +msgstr "クエリー \"%s\" への再帰的参照が、INTERSECT 内で現れてはなりません" -#: commands/dbcommands.c:329 commands/dbcommands.c:333 +#: parser/parse_cte.c:50 #, c-format -msgid "invalid locale name %s" -msgstr "ロケール名 %s は無効です" +msgid "recursive reference to query \"%s\" must not appear within EXCEPT" +msgstr "クエリー \"%s\" への再帰的参照が、EXCEPT 内で現れてはなりません" -#: commands/dbcommands.c:369 commands/dbcommands.c:384 +#: parser/parse_cte.c:132 #, c-format -msgid "encoding %s does not match locale %s" -msgstr "符号化方式 %s がロケール %s に合いません" +msgid "WITH query name \"%s\" specified more than once" +msgstr "WITH クエリー名 \"%s\" が複数回指定されました" -#: commands/dbcommands.c:372 -#, c-format -msgid "The chosen LC_CTYPE setting requires encoding %s." -msgstr "" -"選択された LC_CTYPE を設定するには、符号化方式 %s である必要があります。" +#: parser/parse_cte.c:259 +msgid "subquery in WITH cannot have SELECT INTO" +msgstr "WITH における副問い合わせでは SELECT INTO を使用できません" -#: commands/dbcommands.c:387 -#, c-format -msgid "The chosen LC_COLLATE setting requires encoding %s." -msgstr "選択されたLC_COLLATEを設定するには、符号化方式%sである必要があります。" +#: parser/parse_cte.c:271 +msgid "" +"WITH clause containing a data-modifying statement must be at the top level" +msgstr "データを変更するようなステートメントを含む WITH 句は" +"トップレベルでなければなりません" -#: commands/dbcommands.c:405 +#: parser/parse_cte.c:320 #, c-format msgid "" -"new encoding (%s) is incompatible with the encoding of the template database " -"(%s)" +"recursive query \"%s\" column %d has type %s in non-recursive term but type %" +"s overall" msgstr "" -"新しい符号化方式(%s)はテンプレートデータベースの符号化方式(%s)と互換性があり" -"ません" +"再帰クエリー \"%s\" の %d 個目のカラムが非再帰項目内で %s 型になっています" +"が、全体的には %s 型になっています" -#: commands/dbcommands.c:408 -msgid "" -"Use the same encoding as in the template database, or use template0 as " -"template." -msgstr "" -"テンプレートデータベースの符号化方式と同じものを使うか、もしくは template0 を" -"テンプレートとして使用してください" +#: parser/parse_cte.c:326 +msgid "Cast the output of the non-recursive term to the correct type." +msgstr "非再帰項目の出力を正しい型にキャストしてください" -#: commands/dbcommands.c:413 +#: parser/parse_cte.c:331 #, c-format msgid "" -"new collation (%s) is incompatible with the collation of the template " -"database (%s)" +"recursive query \"%s\" column %d has collation \"%s\" in non-recursive term " +"but collation \"%s\" overall" msgstr "" -"新しい照合順序(%s)はテンプレートデータベースの照合順序(%s)と互換性がありませ" -"ん" +"再帰クエリー \"%s\" の %d 個目の列が非再帰表現において照合順序 \"%s\" を" +"要求していますが、全体の照合順序が \"%s\" です。" -#: commands/dbcommands.c:415 -msgid "" -"Use the same collation as in the template database, or use template0 as " -"template." -msgstr "" -"テンプレートデータベースの照合順序と同じものを使うか、もしくは template0 をテ" -"ンプレートとして使用してください" +#: parser/parse_cte.c:335 +msgid "Use the COLLATE clause to set the collation of the non-recursive term." +msgstr "非再帰項目の照合順序を設定するには COLLATE 句を使ってください" -#: commands/dbcommands.c:420 +#: parser/parse_cte.c:426 #, 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:422 -msgid "" -"Use the same LC_CTYPE as in the template database, or use template0 as " -"template." +msgid "WITH query \"%s\" has %d columns available but %d columns specified" msgstr "" -"テンプレートデータベースのLC_CTYPEと同じものを使うか、もしくはtemplate0をテン" -"プレートとして使用してください" +"WITH クエリー \"%s\" では %d 個のカラムが使用できますが、%d 個のカラムが指定" +"されました" -#: commands/dbcommands.c:449 commands/dbcommands.c:1054 -msgid "pg_global cannot be used as default tablespace" -msgstr "デフォルトのテーブル空間としてpg_globalを使用できません" +#: parser/parse_cte.c:606 +msgid "mutual recursion between WITH items is not implemented" +msgstr "WITH 項目間同士の再帰は実装されていません" -#: commands/dbcommands.c:475 +#: parser/parse_cte.c:658 #, c-format -msgid "cannot assign new default tablespace \"%s\"" -msgstr "新しいデフォルトのテーブル空間\"%s\"を割り当てられません" +msgid "recursive query \"%s\" must not contain data-modifying statements" +msgstr "再帰クエリー \"%s\" はデータを変更するステートメントを含んでいては" +"なりません" -#: commands/dbcommands.c:477 +#: parser/parse_cte.c:666 #, c-format msgid "" -"There is a conflict because database \"%s\" already has some tables in this " -"tablespace." -msgstr "" -"データベース\"%s\"のいくつかテーブルはすでにこのテーブル空間にありますので、" -"競合しています" - -#: commands/dbcommands.c:497 commands/dbcommands.c:925 -#, c-format -msgid "database \"%s\" already exists" -msgstr "データベース\"%s\"はすでに存在します" +"recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] " +"recursive-term" +msgstr "再帰クエリー \"%s\" に 非再帰項目 UNION [ALL] 再帰項目 がありません" -#: commands/dbcommands.c:511 -#, c-format -msgid "source database \"%s\" is being accessed by other users" -msgstr "元となるデータベース\"%s\"は他のユーザによってアクセスされています" +#: parser/parse_cte.c:698 +msgid "ORDER BY in a recursive query is not implemented" +msgstr "再帰クエリー内の ORDER BY は実装されていません" -#: commands/dbcommands.c:767 -#, c-format -msgid "database \"%s\" does not exist, skipping" -msgstr "データベース\"%s\"は存在しません。省略します" +#: parser/parse_cte.c:704 +msgid "OFFSET in a recursive query is not implemented" +msgstr "再帰クエリー内の OFFSET は実装されていません" -#: commands/dbcommands.c:788 -msgid "cannot drop a template database" -msgstr "テンプレートデータベースを削除できません" +#: parser/parse_cte.c:710 +msgid "LIMIT in a recursive query is not implemented" +msgstr "再帰クエリー内の LIMIT は実装されていません" -#: commands/dbcommands.c:794 -msgid "cannot drop the currently open database" -msgstr "現在オープンしているデータベースを削除できません" +#: parser/parse_cte.c:716 +msgid "FOR UPDATE/SHARE in a recursive query is not implemented" +msgstr "再帰クエリー内の FOR UPDATE/SHARE は実装されていません" -#: commands/dbcommands.c:805 commands/dbcommands.c:947 -#: commands/dbcommands.c:1076 +#: parser/parse_cte.c:773 #, c-format -msgid "database \"%s\" is being accessed by other users" -msgstr "データベース\"%s\"は他のユーザからアクセスされています" +msgid "recursive reference to query \"%s\" must not appear more than once" +msgstr "クエリー \"%s\" への再帰参照が2回以上現れてはなりません" -#: commands/dbcommands.c:916 -msgid "permission denied to rename database" -msgstr "データベースの名前を変更する権限がありません" +#: scan.l:411 +msgid "unterminated /* comment" +msgstr "/*コメントが閉じていません" -#: commands/dbcommands.c:936 -msgid "current database cannot be renamed" -msgstr "現在のデータベースの名前を変更できません" +#: scan.l:440 +msgid "unterminated bit string literal" +msgstr "ビット文字列リテラルの終端がありません" -#: commands/dbcommands.c:1028 -msgid "cannot change the tablespace of the currently open database" -msgstr "現在オープン中のデータベースのテーブルスペースは変更できません" +#: scan.l:461 +msgid "unterminated hexadecimal string literal" +msgstr "16進数文字列リテラルの終端がありません" -#: commands/dbcommands.c:1116 -#, c-format -msgid "some relations of database \"%s\" are already in tablespace \"%s\"" -msgstr "" -"データベース \"%s\" のリレーションの中に、テーブルスペース \"%s\"にすでに存在" -"するものがあります" +#: scan.l:511 +msgid "unsafe use of string constant with Unicode escapes" +msgstr "Unicodeエスケープを使った文字列定数の危険な使用" -#: commands/dbcommands.c:1118 +#: scan.l:512 msgid "" -"You must move them back to the database's default tablespace before using " -"this command." +"String constants with Unicode escapes cannot be used when " +"standard_conforming_strings is off." msgstr "" -"このコマンドを使う前に、データベースのデフォルトのテーブルスペースに戻さなけ" -"ればなりません。" +"Unicodeエスケープはstandard_conforming_stringsが無効な時に使用することはでき" +"ません。" -#: commands/dbcommands.c:1246 commands/dbcommands.c:1719 -#: commands/dbcommands.c:1912 commands/dbcommands.c:1960 -#, c-format -msgid "some useless files may be left behind in old database directory \"%s\"" -msgstr "" -"元のデータベースのディレクトリ \"%s\" に不要なファイルが残っているかもしれま" -"せん" +#: 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 のサロゲートペアが無効です" -#: commands/dbcommands.c:1495 -msgid "permission denied to change owner of database" -msgstr "データベースの所有者を変更する権限がありません" +#: scan.l:586 +msgid "invalid Unicode escape" +msgstr "Unicode のエスケープが無効です" -#: commands/dbcommands.c:1807 -#, c-format +#: scan.l:587 +msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX." +msgstr "Unicode エスケープは \\uXXXX または \\UXXXXXXXX でなければなりません。" + +#: scan.l:598 +msgid "unsafe use of \\' in a string literal" +msgstr "文字列リテラルで安全ではない\\'が使用されました。" + +#: scan.l:599 msgid "" -"There are %d other session(s) and %d prepared transaction(s) using the " -"database." +"Use '' to write quotes in strings. \\' is insecure in client-only encodings." msgstr "" -"他にこのデータベースを使っている %d 個のセッションと %d 個の準備済みトランザ" -"クションがあります。" +"文字列内で引用符を記述するには''を使用してください。\\'はクライアントのみで有" +"効な符号化形式では安全ではありません。" -#: commands/dbcommands.c:1810 -#, c-format -msgid "There are %d other session(s) using the database." -msgstr "他にこのデータベースを使っている %d 個のセッションがあります。" +#: scan.l:629 repl_scanner.l:97 +msgid "unterminated quoted string" +msgstr "文字列の引用符が閉じていません" -#: commands/dbcommands.c:1813 -#, c-format -msgid "There are %d prepared transaction(s) using the database." -msgstr "このデータベースを使用する準備されたトランザクションが%d存在します。" +#: scan.l:674 +msgid "unterminated dollar-quoted string" +msgstr "文字列のドル引用符が閉じていません" -#: commands/lockcmds.c:93 -#, c-format -msgid "could not obtain lock on relation \"%s\"" -msgstr "リレーション\"%s\"のロックを取得できませんでした" +#: scan.l:691 scan.l:703 scan.l:717 +msgid "zero-length delimited identifier" +msgstr "区切りつき識別子の長さがゼロです" -#: commands/lockcmds.c:98 -#, c-format -msgid "could not obtain lock on relation with OID %u" -msgstr "OID %u のリレーションに対するロックを獲得できませんでした" +#: scan.l:730 +msgid "unterminated quoted identifier" +msgstr "識別子の引用符が閉じていません" -#: commands/lockcmds.c:122 catalog/namespace.c:273 parser/parse_relation.c:835 -#, c-format -msgid "relation \"%s.%s\" does not exist" -msgstr "リレーション\"%s.%s\"は存在しません" +#: scan.l:834 +msgid "operator too long" +msgstr "演算子が長すぎます" -#: commands/lockcmds.c:127 catalog/namespace.c:278 utils/adt/regproc.c:810 -#: parser/parse_relation.c:848 parser/parse_relation.c:856 +#. translator: %s is typically the translation of "syntax error" +#: scan.l:992 #, c-format -msgid "relation \"%s\" does not exist" -msgstr "リレーション\"%s\"は存在しません" +msgid "%s at end of input" +msgstr "入力の最後で %s" -#: commands/aggregatecmds.c:103 +#. translator: first %s is typically the translation of "syntax error" +#: scan.l:1000 #, c-format -msgid "aggregate attribute \"%s\" not recognized" -msgstr "集約の属性\"%sは存在しません" - -#: commands/aggregatecmds.c:113 -msgid "aggregate stype must be specified" -msgstr "集約のstypeを指定しなければなりません" +msgid "%s at or near \"%s\"" +msgstr "\"%2$s\"またはその近辺で%1$s" -#: commands/aggregatecmds.c:117 -msgid "aggregate sfunc must be specified" -msgstr "集約用の状態遷移関数を指定しなければなりません" +#: 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 "" +"サーバーのエンコーディングが UTF-8 ではない場合、コードポイントの値が 007F 以" +"上については Unicode のエスケープ値は使用できません" -#: 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:191 -#, c-format -msgid "aggregate transition data type cannot be %s" -msgstr "集約の遷移データの型を%sにできません" +#: scan.l:1189 scan.l:1325 +msgid "invalid Unicode escape value" +msgstr "Unicode のエスケープシーケンスが無効です" -#: commands/aggregatecmds.c:230 -#, c-format -msgid "aggregate %s(%s) does not exist, skipping" -msgstr "集約%s(%s)は存在しません。省略します" +#: scan.l:1214 +msgid "invalid Unicode escape character" +msgstr "Unicode のエスケープ文字が無効です" -#: commands/operatorcmds.c:98 -msgid "=> is deprecated as an operator name" -msgstr ">= は演算子名として廃止予定であり、推奨されません" +#: scan.l:1381 +msgid "nonstandard use of \\' in a string literal" +msgstr "文字列リテラルで非標準的な\\'が使用されました。" -#: commands/operatorcmds.c:99 +#: scan.l:1382 msgid "" -"This name may be disallowed altogether in future versions of PostgreSQL." +"Use '' to write quotes in strings, or use the escape string syntax (E'...')." msgstr "" -"PostgreSQL の将来のバージョンでは、この名前が使えなくなる可能性があります" +"文字列内で引用符を記述するには''を使用してください。またはエスケープ文字列構" +"文(E'...')を使用してください。" -#: commands/operatorcmds.c:120 commands/operatorcmds.c:128 -msgid "SETOF type not allowed for operator argument" -msgstr "演算子の引数にはSETOF型を使用できません" +#: scan.l:1391 +msgid "nonstandard use of \\\\ in a string literal" +msgstr "文字列リテラルで非標準的な\\\\が使用されました。" -#: commands/operatorcmds.c:156 -#, c-format -msgid "operator attribute \"%s\" not recognized" -msgstr "演算子の属性\"%s\"は不明です" +#: scan.l:1392 +msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'." +msgstr "" +"バックスラッシュ用のエスケープ文字列構文、例えばE'\\\\'を使用してください。" -#: commands/operatorcmds.c:166 -msgid "operator procedure must be specified" -msgstr "演算子のプロシージャを指定しなければなりません" +#: scan.l:1406 +msgid "nonstandard use of escape in a string literal" +msgstr "文字列リテラル内で非標準的なエスケープが使用されました" -#: commands/operatorcmds.c:177 -msgid "at least one of leftarg or rightarg must be specified" -msgstr "少なくとも右辺か左辺のどちらかを指定しなければなりません" +#: scan.l:1407 +msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'." +msgstr "" +"エスケープ用のエスケープ文字列構文、例えばE'\\\\r\\\\n'を使用してください" -#: commands/operatorcmds.c:226 +#: parser/parse_collate.c:214 parser/parse_collate.c:538 #, c-format -msgid "restriction estimator function %s must return type \"float8\"" -msgstr "制約推測用関数 %s は \"float8\" 型を返さなければなりません" +msgid "collation mismatch between implicit collations \"%s\" and \"%s\"" +msgstr "暗黙の照合順序 \"%s\" と \"%s\" の間に照合順序のミスマッチがあります" -#: commands/operatorcmds.c:265 -#, c-format -msgid "join estimator function %s must return type \"float8\"" -msgstr "JOIN 推測用関数 %s は \"float8\" 型を返さなければなりません" +#: 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 句を適用することで照合順序を選択できます" -#: commands/operatorcmds.c:316 +#: parser/parse_collate.c:763 #, c-format -msgid "operator %s does not exist, skipping" -msgstr "演算子%sが存在しません。省略します" - -#: commands/vacuum.c:421 -msgid "oldest xmin is far in the past" -msgstr "最も古いxminが古すぎます" +msgid "collation mismatch between explicit collations \"%s\" and \"%s\"" +msgstr "明示的な照合順序 \"%s\" と \"%s\" の間に照合順序のミスマッチがあります" -#: commands/vacuum.c:422 -msgid "Close open transactions soon to avoid wraparound problems." -msgstr "" -"周回問題を回避するためすぐにオープンしているトランザクションをクローズしてく" -"ださい。" +#: parser/parse_node.c:83 +#, c-format +msgid "target lists can have at most %d entries" +msgstr "対象リストは最大で%dエントリ持つことができます" -#: commands/vacuum.c:747 -msgid "some databases have not been vacuumed in over 2 billion transactions" -msgstr "" -"データベースの一部は20億トランザクション以上の間にバキュームされていませんで" -"した" +#: parser/parse_node.c:240 +#, c-format +msgid "cannot subscript type %s because it is not an array" +msgstr "配列ではありませんので、型%sに添え字をつけられません" -#: commands/vacuum.c:748 -msgid "You might have already suffered transaction-wraparound data loss." -msgstr "トランザクションの周回によるデータ損失が発生している可能性があります" +#: parser/parse_node.c:342 parser/parse_node.c:369 +msgid "array subscript must have type integer" +msgstr "配列の添え字は整数型でなければなりません" -#: commands/vacuum.c:873 +#: parser/parse_node.c:393 #, c-format -msgid "skipping \"%s\" --- only superuser can vacuum it" -msgstr "\"%s\" をスキップしています --- スーパーユーザのみがバキュームできます" +msgid "array assignment requires type %s but expression is of type %s" +msgstr "配列の代入では型%sが必要でしたが、式は型%sでした" -#: commands/vacuum.c:877 +#: parser/parse_type.c:83 #, c-format -msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" -msgstr "" -"\"%s\" をスキップしています --- スーパーユーザもしくはデータベースの所有者の" -"みがバキュームできます" +msgid "improper %%TYPE reference (too few dotted names): %s" +msgstr "%%TYPE参照が不適切です(ドット付きの名前が少なすぎます: %s" -#: commands/vacuum.c:881 +#: parser/parse_type.c:105 #, c-format -msgid "skipping \"%s\" --- only table or database owner can vacuum it" -msgstr "" -"\"%s\"を飛ばしています --- テーブルまたはデータベースの所有者のみがバキューム" -"することができます" +msgid "improper %%TYPE reference (too many dotted names): %s" +msgstr "%%TYPE参照が不適切です(ドット付きの名前が多すぎます: %s" -#: commands/vacuum.c:898 +#: parser/parse_type.c:127 #, c-format -msgid "" -"skipping \"%s\" --- cannot vacuum indexes, views, or special system tables" -msgstr "" -"\"%s\"を飛ばしています --- インデックス、ビュー、特別なシステムテーブルをバ" -"キュームすることはできません" +msgid "type reference %s converted to %s" +msgstr "型参照%sは%sに変換されました" -#: commands/constraint.c:59 utils/adt/ri_triggers.c:2999 +#: parser/parse_type.c:202 utils/cache/typcache.c:195 #, c-format -msgid "function \"%s\" was not called by trigger manager" -msgstr "関数\"%s\"はトリガ関数として呼び出されていません" +msgid "type \"%s\" is only a shell" +msgstr "型\"%s\"は単なるシェルです" -#: commands/constraint.c:66 utils/adt/ri_triggers.c:3008 +#: parser/parse_type.c:278 commands/functioncmds.c:134 #, c-format -msgid "function \"%s\" must be fired AFTER ROW" -msgstr "関数\"%s\"をAFTER ROWで発行しなければなりません" +msgid "type modifier cannot be specified for shell type \"%s\"" +msgstr "シェル型\"%s\"に型修正子を指定できません" -#: commands/constraint.c:80 utils/adt/ri_triggers.c:3029 +#: parser/parse_type.c:287 #, c-format -msgid "function \"%s\" must be fired for INSERT or UPDATE" -msgstr "関数\"%s\"をINSERTまたはUPDATEで発行しなければなりません" +msgid "type modifier is not allowed for type \"%s\"" +msgstr "型\"%s\"では型修正子は許されません" -#: commands/analyze.c:165 -#, c-format -msgid "skipping \"%s\" --- only superuser can analyze it" -msgstr "\"%s\" をスキップしています --- スーパーユーザのみが解析できます" +#: parser/parse_type.c:330 +msgid "type modifiers must be simple constants or identifiers" +msgstr "型修正子は単純な定数または識別子でなければなりません" -#: commands/analyze.c:169 +#: parser/parse_type.c:641 parser/parse_type.c:740 #, c-format -msgid "skipping \"%s\" --- only superuser or database owner can analyze it" -msgstr "" -"\"%s\" をスキップしています --- スーパーユーザまたはデータベースの所有者のみ" -"が解析できます" +msgid "invalid type name \"%s\"" +msgstr "型の名前\"%s\"が無効です" -#: commands/analyze.c:173 -#, c-format -msgid "skipping \"%s\" --- only table or database owner can analyze it" -msgstr "" -"\"%s\" をスキップしています --- テーブルまたはデータベースの所有者のみが解析" -"できます" +#: replication/syncrep.c:214 +#, +msgid "" +"canceling the wait for synchronous replication and terminating connection " +"due to administrator command" +msgstr "管理者コマンドにより同期レプリケーションの待ち状態をキャンセルし、" +"接続を終了しています" -#: commands/analyze.c:189 -#, c-format +#: replication/syncrep.c:215 replication/syncrep.c:232 msgid "" -"skipping \"%s\" --- cannot analyze indexes, views, or special system tables" +"The transaction has already committed locally, but may not have been " +"replicated to the standby." +msgstr "トランザクションはローカルではすでにコミット済みですが、" +"スタンバイ側にはレプリケーションされていない可能性があります。" + +#: replication/syncrep.c:231 +#, +msgid "canceling wait for synchronous replication due to user request" msgstr "" -"\"%s\" をスキップしています --- インデックス、ビュー、特殊なシステムテーブル" -"を解析することはできません" +"ユーザからの要求により同期レプリケーションの待ち状態をキャンセルしています" -#: commands/analyze.c:282 -msgid "analyzing \"%s.%s\" inheritance tree" -msgstr "\"%s.%s\"継承ツリーを解析しています" +#: replication/syncrep.c:357 +#, c-format +msgid "standby \"%s\" now has synchronous standby priority %u" +msgstr "スタンバイの \"%s\" には優先度 %u で同期スタンバイが設定されています" -#: commands/analyze.c:287 +#: replication/syncrep.c:450 #, c-format -msgid "analyzing \"%s.%s\"" -msgstr "\"%s.%s\"を解析しています" +msgid "standby \"%s\" is now the synchronous standby with priority %u" +msgstr "スタンバイの \"%s\" には優先度 %u で同期スタンバイが設定されています" -#: commands/analyze.c:621 +#: replication/syncrep.c:657 catalog/namespace.c:3516 utils/misc/guc.c:8151 +#: commands/variable.c:59 commands/tablespace.c:1121 +msgid "List syntax is invalid." +msgstr "リストの文法が無効です" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:101 #, c-format -msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s" -msgstr "テーブル\"%s.%s.%sの自動解析。システム使用状況: %s\"" +msgid "could not connect to the primary server: %s" +msgstr "プライマリサーバへの接続ができませんでした:%s" -#: commands/analyze.c:1220 +#: replication/libpqwalreceiver/libpqwalreceiver.c:113 #, 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" +"could not receive database system identifier and timeline ID from the " +"primary server: %s" msgstr "" -"\"%1$s\": %3$uページの内%2$dをスキャン。%4$.0fの有効な行と%5$.0fの不要な行を" -"含有。%6$d行をサンプリング。推定総行数は%7$.0f" +"プライマリサーバからデータベースシステムの識別子とタイムライン ID を受信でき" +"ませんでした:%s" -#: commands/prepare.c:70 -msgid "invalid statement name: must not be empty" -msgstr "文の名前は無効です: 空ではいけません" +#: replication/libpqwalreceiver/libpqwalreceiver.c:124 +msgid "invalid response from primary server" +msgstr "プライマリサーバからの応答が無効です" -#: commands/prepare.c:139 -msgid "utility statements cannot be prepared" -msgstr "ユーティリティ文を準備できません" +#: replication/libpqwalreceiver/libpqwalreceiver.c:125 +#, c-format +msgid "Expected 1 tuple with 3 fields, got %d tuples with %d fields." +msgstr "" +"3個のフィールドを持つ1個のタプルを期待していましたが、%2$d 個のフィールドを" +"持つ %1$d 個のタプルを受信しました。" -#: commands/prepare.c:239 commands/prepare.c:246 commands/prepare.c:702 -msgid "prepared statement is not a SELECT" -msgstr "準備された文はSELECTではありません" +#: replication/libpqwalreceiver/libpqwalreceiver.c:140 +msgid "database system identifier differs between the primary and standby" +msgstr "" +"データベースシステムの識別子がプライマリサーバとスタンバイサーバ間で異なりま" +"す" -#: commands/prepare.c:313 +#: replication/libpqwalreceiver/libpqwalreceiver.c:141 #, c-format -msgid "wrong number of parameters for prepared statement \"%s\"" -msgstr "準備された文\"%s\"のパラメータ数が間違っています" +msgid "The primary's identifier is %s, the standby's identifier is %s." +msgstr "プライマリ側の識別子は %s ですが、スタンバイ側の識別子は %s です。" -#: commands/prepare.c:315 +#: replication/libpqwalreceiver/libpqwalreceiver.c:153 #, c-format -msgid "Expected %d parameters but got %d." -msgstr "%dパラメータを想定しましたが、%dパラメータでした" +msgid "timeline %u of the primary does not match recovery target timeline %u" +msgstr "" +"プライマリのタイムライン %u が、リカバリターゲットのタイムライン %u と一致し" +"ません" -#: commands/prepare.c:344 -msgid "cannot use subquery in EXECUTE parameter" -msgstr "EXECUTEのパラメータに副問い合わせを使用できません" +#: replication/libpqwalreceiver/libpqwalreceiver.c:165 +#, c-format +msgid "could not start WAL streaming: %s" +msgstr "WAL ストリーミングを開始できませんでした: %s" -#: commands/prepare.c:348 -msgid "cannot use aggregate function in EXECUTE parameter" -msgstr "EXECUTEのパラメータに集約関数を使用できません" +#: replication/libpqwalreceiver/libpqwalreceiver.c:171 +msgid "streaming replication successfully connected to primary" +msgstr "ストリーミングレプリケーションがプライマリに無事接続できました" -#: commands/prepare.c:352 -msgid "cannot use window function in EXECUTE parameter" -msgstr "EXECUTE のパラメータにはウィンドウ関数を使用できません" +#: replication/libpqwalreceiver/libpqwalreceiver.c:193 +msgid "socket not open" +msgstr "ソケットがオープンされていません" -#: commands/prepare.c:365 +#: replication/libpqwalreceiver/libpqwalreceiver.c:233 port/unix_latch.c:269 +#: port/pg_latch.c:269 #, c-format -msgid "parameter $%d of type %s cannot be coerced to the expected type %s" -msgstr "パラメータ$%dの型%sを想定している型%sに強制することができません" +msgid "select() failed: %m" +msgstr "select() が失敗しました: %m" -#: commands/prepare.c:463 +#: replication/libpqwalreceiver/libpqwalreceiver.c:367 +#: replication/libpqwalreceiver/libpqwalreceiver.c:388 +#: replication/libpqwalreceiver/libpqwalreceiver.c:393 #, c-format -msgid "prepared statement \"%s\" already exists" -msgstr "準備された文\"%s\"はすでに存在します" +msgid "could not receive data from WAL stream: %s" +msgstr "WAL ストリームからデータを受信できませんでした: %s" -#: commands/prepare.c:521 -#, c-format -msgid "prepared statement \"%s\" does not exist" -msgstr "準備された文\"%s\"は存在しません" +#: replication/libpqwalreceiver/libpqwalreceiver.c:384 +msgid "replication terminated by primary server" +msgstr "プライマリサーバによりレプリケーションが打ち切られました" -#: commands/prepare.c:751 utils/mmgr/portalmem.c:930 foreign/foreign.c:276 -msgid "materialize mode required, but it is not allowed in this context" -msgstr "実体化モードが要求されましたが、この文脈では許されません" +#: replication/libpqwalreceiver/libpqwalreceiver.c:415 +#, c-format +msgid "could not send data to WAL stream: %s" +msgstr "WAL ストリームにデータを送信できませんでした: %s" -#: optimizer/prep/prepunion.c:374 -msgid "could not implement recursive UNION" -msgstr "再帰 UNION を実装できませんでした" +#: repl_scanner.l:76 +#, +msgid "invalid streaming start location" +msgstr "ストリーミングの開始位置が無効です" -#: optimizer/prep/prepunion.c:375 -msgid "All column datatypes must be hashable." -msgstr "すべてのカラムのデータ型はハッシュ可能でなければなりません" +#: repl_scanner.l:107 +#, c-format +msgid "syntax error: unexpected character \"%s\"" +msgstr "構文エラー。予期しない文字 \"%s\"" -#. translator: %s is UNION, INTERSECT, or EXCEPT -#: optimizer/prep/prepunion.c:768 +#: replication/basebackup.c:122 #, c-format -msgid "could not implement %s" -msgstr "%s を実装できませんでした" +msgid "unable to read symbolic link %s: %m" +msgstr "シンボリックリンク \"%s\" を読み込めませんでした: %m" -#: optimizer/prep/prepunion.c:769 optimizer/plan/planner.c:2221 -#: optimizer/plan/planner.c:2390 -msgid "" -"Some of the datatypes only support hashing, while others only support " -"sorting." +#: replication/basebackup.c:231 replication/basebackup.c:743 +msgid "base backup could not send data, aborting backup" msgstr "" -"ハッシュのみをサポートするデータ型もあれば、ソートのみをサポートするものもあ" -"ります" +"ベースバックアップがデータを送信できませんでした。バックアップを中止しています" -#: optimizer/util/clauses.c:3990 +#: replication/basebackup.c:278 replication/basebackup.c:287 +#: replication/basebackup.c:296 replication/basebackup.c:305 +#: replication/basebackup.c:314 #, c-format -msgid "SQL function \"%s\" during inlining" -msgstr "SQL関数\"%s\"がインラインになっています" +msgid "duplicate option \"%s\"" +msgstr "\"%s\" オプションは重複しています" -#: optimizer/plan/initsplan.c:574 -msgid "" -"SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer " -"join" +#: 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 "" -"外部結合のNULLになる可能性がある方ではSELECT FOR UPDATE/SHAREを適用できません" +"シャットダウンの要求がなされたので、動作中のベースバックアップを中止しています" -#: optimizer/plan/planner.c:946 parser/analyze.c:1196 parser/analyze.c:1384 -#: parser/analyze.c:2026 -msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT" -msgstr "UNION/INTERSECT/EXCEPTではSELECT FOR UPDATE/SHAREを使用できません" +#: replication/basebackup.c:589 +#, c-format +msgid "could not stat file or directory \"%s\": %m" +msgstr "" +"\"%s\"というファイルまたはディレクトリの情報を取得できませんでした。: %m" -#: optimizer/plan/planner.c:2220 -msgid "could not implement GROUP BY" -msgstr "GROUP BY を実装できませんでした" +#: replication/basebackup.c:631 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "シンボリックリンク \"%s\" を読み込めませんでした: %m" -#: optimizer/plan/planner.c:2389 -msgid "could not implement DISTINCT" -msgstr "DISTINCT を実装できませんでした" +#: replication/basebackup.c:660 +#, c-format +msgid "skipping special file \"%s\"" +msgstr "スペシャルファイル \"%s\" をスキップしています" -#: optimizer/plan/planner.c:2833 -msgid "could not implement window PARTITION BY" -msgstr "ウィンドウの PARTITION BY を実装できませんでした" +#: replication/basebackup.c:733 +#, c-format +msgid "archive member \"%s\" too large for tar format" +msgstr "アーカイブメンバ \"%s\" が tar 形式としては大きすぎます" -#: optimizer/plan/planner.c:2834 -msgid "Window partitioning columns must be of sortable datatypes." -msgstr "" -"ウィンドウ・パーティショニングするカラムは、ソート可能なデータ型でなければな" -"りません" +#: replication/walsender.c:141 +msgid "recovery is still in progress, can't accept WAL streaming connections" +msgstr "リカバリがまだ実行中につき、WAL ストリーミング接続を受け付けられません" -#: optimizer/plan/planner.c:2838 -msgid "could not implement window ORDER BY" -msgstr "ウィンドウの ORDER BY を実装できませんでした" +#: replication/walsender.c:261 replication/walsender.c:489 +#: replication/walsender.c:547 +msgid "unexpected EOF on standby connection" +msgstr "スタンバイ接続で想定外のEOFがありました" -#: optimizer/plan/planner.c:2839 -msgid "Window ordering columns must be of sortable datatypes." -msgstr "" -"ウィンドウの順序付けをするカラムは、ソート可能なデータ型でなければなりません" - -#: catalog/heap.c:257 +#: replication/walsender.c:267 #, c-format -msgid "permission denied to create \"%s.%s\"" -msgstr "\"%s.%s\"を作成する権限がありません" +msgid "invalid standby handshake message type %d" +msgstr "スタンバイハンドシェイクメッセージのタイプ %d が無効です" -#: catalog/heap.c:259 -msgid "System catalog modifications are currently disallowed." -msgstr "現時点ではシステムカタログは変更できません" +#: replication/walsender.c:379 +msgid "standby connections not allowed because wal_level=minimal" +msgstr "wal_level=minimal なので、スタンバイ接続はできません" -#: catalog/heap.c:397 +#: replication/walsender.c:461 #, c-format -msgid "column name \"%s\" conflicts with a system column name" -msgstr "列名\"%s\"はシステム用の列名と競合します" +msgid "invalid standby query string: %s" +msgstr "スタンバイクエリ文字列が無効です:%s" -#: catalog/heap.c:413 +#: replication/walsender.c:518 #, c-format -msgid "column name \"%s\" specified more than once" -msgstr "列名\"%s\"が複数指定されました" +msgid "invalid standby message type %d" +msgstr "スタンバイのメッセージタイプ %d が無効です" -#: catalog/heap.c:451 +#: replication/walsender.c:569 #, c-format -msgid "column \"%s\" has type \"unknown\"" -msgstr "列\"%s\"は\"unknown\"型です" +msgid "unexpected message type %c" +msgstr "想定しないメッセージタイプ %c " -#: catalog/heap.c:452 -msgid "Proceeding with relation creation anyway." -msgstr "とりあえずリレーションの作成を進めます" +#: replication/walsender.c:822 +#, +msgid "terminating walsender process due to replication timeout" +msgstr "レプリケーションタイムアウトにより WAL 送信プロセスを終了しています" -#: catalog/heap.c:465 +#: replication/walsender.c:838 #, c-format -msgid "column \"%s\" has pseudo-type %s" -msgstr "列\"%s\"は仮想型%sです" +msgid "standby \"%s\" has now caught up with primary" +msgstr "スタンバイの \"%s\" はプライマリに昇格しました" -#: catalog/heap.c:944 +#: replication/walsender.c:907 +#, 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 "" -"リレーションは同じ名前の関連する型を持ちます。このため既存の型と競合しない名" -"前を使用しなければなりません" +"number of requested standby connections exceeds max_wal_senders (currently %" +"d)" +msgstr "要求されたスタンバイ接続が max_wal_senders を超えています(現在は %d)" -#: catalog/heap.c:1540 +#: replication/walsender.c:985 replication/walsender.c:1047 #, c-format -msgid "" -"cannot drop \"%s\" because it is being used by active queries in this session" +msgid "requested WAL segment %s has already been removed" +msgstr "要求された WAL セグメント %s はすでに削除されています" + +#: replication/walsender.c:1018 +#, c-format +msgid "could not read from log file %u, segment %u, offset %u, length %lu: %m" msgstr "" -"このセッションで実行中のクエリーで使用されているため \"%s\" を削除できません" +"ログファイル %u をセグメント %u、オフセット %u、長さ %lu で読み込めませんでし" +"た: %m" + +#: replication/walsender.c:1391 utils/mmgr/portalmem.c:950 +#: foreign/foreign.c:355 commands/prepare.c:755 commands/extension.c:1683 +#: commands/extension.c:1792 commands/extension.c:1985 +msgid "materialize mode required, but it is not allowed in this context" +msgstr "実体化モードが要求されましたが、この文脈では許されません" + +#: repl_gram.c:494 bootparse.c:645 +msgid "syntax error: cannot back up" +msgstr "構文エラー:バックアップできません" + +#: repl_gram.c:1221 bootparse.c:1601 +msgid "syntax error; also virtual memory exhausted" +msgstr "構文エラー:さらに仮想メモリーオーバー" + +#: repl_gram.c:1339 bootparse.c:1719 +msgid "parser stack overflow" +msgstr "パーサースタックオーバーフロー" + +#: replication/walreceiver.c:150 +msgid "terminating walreceiver process due to administrator command" +msgstr "管理者コマンドにより WAL 受信プロセスを終了しています" + +#: replication/walreceiver.c:299 +msgid "cannot continue WAL streaming, recovery has already ended" +msgstr "WAL ストリーミングを継続できません。リカバリはすでに終わっています。" -#: catalog/heap.c:1991 +#: libpq/auth.c:257 #, c-format -msgid "check constraint \"%s\" already exists" -msgstr "チェック制約\"%s\"はすでに存在します" +msgid "authentication failed for user \"%s\": host rejected" +msgstr "ユーザ\"%s\"の認証に失敗しました: ホストを拒絶しました" -#: catalog/heap.c:2139 +#: libpq/auth.c:260 #, c-format -msgid "merging constraint \"%s\" with inherited definition" -msgstr "継承された定義により制約 \"%s\" をマージしています" +msgid "Kerberos 5 authentication failed for user \"%s\"" +msgstr "ユーザ\"%s\"のKerberos 5認証に失敗しました" -#: catalog/heap.c:2237 -msgid "cannot use column references in default expression" -msgstr "デフォルト式には列参照を使用できません" +#: libpq/auth.c:263 +#, c-format +msgid "\"trust\" authentication failed for user \"%s\"" +msgstr "ユーザ\"%s\"の\"trust\"認証に失敗しました" -#: catalog/heap.c:2245 -msgid "default expression must not return a set" -msgstr "デフォルト式は集合を返してはなりません" +#: libpq/auth.c:266 +#, c-format +msgid "Ident authentication failed for user \"%s\"" +msgstr "ユーザ\"%s\"のIdent認証に失敗しました" -#: catalog/heap.c:2253 -msgid "cannot use subquery in default expression" -msgstr "デフォルト式には副問い合わせを使用できません" +#: libpq/auth.c:269 +#, c-format +msgid "Peer authentication failed for user \"%s\"" +msgstr "ユーザ \"%s\" で対向(peer)認証に失敗しました" -#: catalog/heap.c:2257 -msgid "cannot use aggregate function in default expression" -msgstr "デフォルト式には集約関数を使用できません" +#: libpq/auth.c:273 +#, c-format +msgid "password authentication failed for user \"%s\"" +msgstr "ユーザ\"%s\"のパスワード認証に失敗しました" -#: catalog/heap.c:2261 -msgid "cannot use window function in default expression" -msgstr "デフォルト式にはウィンドウ関数を使用できません" +#: libpq/auth.c:278 +#, c-format +msgid "GSSAPI authentication failed for user \"%s\"" +msgstr "ユーザ\"%s\"のGSSAPI認証に失敗しました" -#: catalog/heap.c:2321 +#: libpq/auth.c:281 #, c-format -msgid "only table \"%s\" can be referenced in check constraint" -msgstr "検査制約ではテーブル\"%s\"のみを参照することができます" +msgid "SSPI authentication failed for user \"%s\"" +msgstr "ユーザ\"%s\"のSSPI認証に失敗しました" -#: catalog/heap.c:2577 -msgid "unsupported ON COMMIT and foreign key combination" -msgstr "ON COMMITと外部キーの組み合わせはサポートされていません" +#: libpq/auth.c:284 +#, c-format +msgid "PAM authentication failed for user \"%s\"" +msgstr "ユーザ\"%s\"のPAM認証に失敗しました" -#: catalog/heap.c:2578 +#: libpq/auth.c:287 #, c-format -msgid "" -"Table \"%s\" references \"%s\", but they do not have the same ON COMMIT " -"setting." -msgstr "" -"テーブル\"%s\"は\"%s\"を参照します。しかし、これらのON COMMIT設定は同一ではあ" -"りません。" +msgid "LDAP authentication failed for user \"%s\"" +msgstr "ユーザ\"%s\"のLDAP認証に失敗しました" -#: catalog/heap.c:2583 -msgid "cannot truncate a table referenced in a foreign key constraint" -msgstr "外部キー制約で参照されているテーブルを削除できません" +#: libpq/auth.c:290 +#, c-format +msgid "certificate authentication failed for user \"%s\"" +msgstr "ユーザ \"%s\" の証明書認証に失敗しました" -#: catalog/heap.c:2584 +#: libpq/auth.c:293 #, c-format -msgid "Table \"%s\" references \"%s\"." -msgstr "テーブル\"%s\"は\"%s\"を参照します。" +msgid "RADIUS authentication failed for user \"%s\"" +msgstr "ユーザ \"%s\" の RADIUS 認証に失敗しました" -#: catalog/heap.c:2586 +#: libpq/auth.c:296 #, c-format -msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." -msgstr "" -"同時にテーブル\"%s\"がtruncateされました。TRUNCATE ... CASCADEを使用してくだ" -"さい。" +msgid "authentication failed for user \"%s\": invalid authentication method" +msgstr "ユーザ\"%s\"の認証に失敗しました: 認証方式が無効です" -#: catalog/pg_aggregate.c:100 -msgid "cannot determine transition data type" -msgstr "遷移用のデータ型を決定できません" +#: libpq/auth.c:325 +msgid "missing or erroneous pg_hba.conf file" +msgstr "pg_hba.confファイルが存在しない、または、pg_hba.confファイルのエラー" -#: catalog/pg_aggregate.c:101 -msgid "" -"An aggregate using a polymorphic transition type must have at least one " -"polymorphic argument." -msgstr "" -"遷移用の型として多様型を使用する集約は多様型の引数を少なくとも1つ取らなければ" -"なりません。" +#: libpq/auth.c:326 +msgid "See server log for details." +msgstr "詳細はサーバログを参照してください" -#: catalog/pg_aggregate.c:124 -#, c-format -msgid "return type of transition function %s is not %s" -msgstr "遷移関数の戻り値型%sは%sではありません" +#: libpq/auth.c:356 +msgid "connection requires a valid client certificate" +msgstr "この接続には有効なクライアント証明が必要です" -#: 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かつ遷移用の型が入力型とバイナリ互換がない場合初期値を省略し" -"てはなりません" +#: libpq/auth.c:400 libpq/auth.c:416 libpq/auth.c:453 libpq/auth.c:469 +msgid "SSL on" +msgstr "SSL有効" -#: catalog/pg_aggregate.c:175 catalog/pg_proc.c:204 -msgid "cannot determine result data type" -msgstr "結果のデータ型を決定できません" +#: libpq/auth.c:400 libpq/auth.c:416 libpq/auth.c:453 libpq/auth.c:469 +msgid "SSL off" +msgstr "SSL無効" -#: catalog/pg_aggregate.c:176 +#: libpq/auth.c:398 +#, c-format msgid "" -"An aggregate returning a polymorphic type must have at least one polymorphic " -"argument." +"pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s" msgstr "" -"多様型を返す集約は少なくとも1つの多様型の引数を取らなければなりません。" +"pg_hba.conf の設定でホスト \"%s\"、ユーザ \"%s\", %s 用のレプリケーション接続" +"を拒否しました" -#: catalog/pg_aggregate.c:188 catalog/pg_proc.c:210 -msgid "unsafe use of pseudo-type \"internal\"" -msgstr "\"internal\"仮想型の危険な使用" +#: libpq/auth.c:404 +#, c-format +msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\"" +msgstr "" +"pg_hba.conf の設定でホスト \"%s\"、ユーザ \"%s\"用のレプリケーション接続を拒" +"否しました" -#: catalog/pg_aggregate.c:189 catalog/pg_proc.c:211 +#: libpq/auth.c:413 +#, c-format msgid "" -"A function returning \"internal\" must have at least one \"internal\" " -"argument." +"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s" +"\", %s" msgstr "" -"\"internal\"\"を返す関数は少なくとも1つの\"internal\"型の引数を取らなければな" -"りません。" - -#: catalog/pg_aggregate.c:197 -msgid "sort operator can only be specified for single-argument aggregates" -msgstr "ソート演算子は単一引数の集約でのみ指定可能です" +"pg_hba.conf の設定でホスト \"%s\"、ユーザ \"%s\"、データベース \"%s\", %s" +"の接続を拒否しました" -#: catalog/pg_aggregate.c:337 +#: libpq/auth.c:420 #, c-format -msgid "function %s returns a set" -msgstr "関数%sは集合を返します" +msgid "" +"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\"" +msgstr "" +"pg_hba.conf の設定でホスト \"%s\"、ユーザ \"%s\"、データベース \"%s\" 用のレ" +"プリケーション接続を拒否しました" -#: catalog/pg_aggregate.c:362 +#: libpq/auth.c:451 #, c-format -msgid "function %s requires run-time type coercion" -msgstr "関数%sは実行時の型強制が必要です" +msgid "" +"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s" +"\", %s" +msgstr "pg_hba.conf にホスト\"%s\"、ユーザ\"%s\", %s用のエントリがありません" -#: catalog/pg_conversion.c:66 +#: libpq/auth.c:457 #, c-format -msgid "conversion \"%s\" already exists" -msgstr "変換\"%s\"はすでに存在します" +msgid "" +"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\"" +msgstr "pg_hba.conf にホスト\"%s\"、ユーザ\"%s\"用のエントリがありません" -#: catalog/pg_conversion.c:79 +#: libpq/auth.c:466 #, c-format -msgid "default conversion for %s to %s already exists" -msgstr "%sから%sへのデフォルトの変換はすでに存在します" +msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s" +msgstr "" +"pg_hba.conf にホスト\"%s\"、ユーザ\"%s\"、データベース\"%s, %s用のエントリが" +"ありません" -#: catalog/pg_operator.c:220 catalog/pg_operator.c:358 +#: libpq/auth.c:473 #, c-format -msgid "\"%s\" is not a valid operator name" -msgstr "\"%s\"は有効な演算子名ではありません" +msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\"" +msgstr "" +"pg_hba.conf にホスト\"%s\"、ユーザ\"%s\"、データベース\"%s用のエントリがあり" +"ません" -#: catalog/pg_operator.c:367 -msgid "only binary operators can have commutators" -msgstr "二項演算子のみが交代演算子を持つことができます" +#: libpq/auth.c:524 libpq/hba.c:1118 +msgid "" +"MD5 authentication is not supported when \"db_user_namespace\" is enabled" +msgstr "\"db_user_namespace\" が有効の場合、MD5 認証はサポートされません" -#: catalog/pg_operator.c:371 -msgid "only binary operators can have join selectivity" -msgstr "二項演算子のみが結合選択性を持つことができます" +#: libpq/auth.c:648 +#, c-format +msgid "expected password response, got message type %d" +msgstr "パスワード応答を想定しましたが、メッセージ種類%dを受け取りました" -#: catalog/pg_operator.c:375 -msgid "only binary operators can merge join" -msgstr "二項演算子のみがマージ結合可能です" +#: libpq/auth.c:676 +msgid "invalid password packet size" +msgstr "パスワードパケットのサイズが無効です" -#: catalog/pg_operator.c:379 -msgid "only binary operators can hash" -msgstr "二項演算子のみがハッシュ可能です" +#: libpq/auth.c:680 +msgid "received password packet" +msgstr "パスワードパケットを受け取りました" -#: catalog/pg_operator.c:390 -msgid "only boolean operators can have negators" -msgstr "ブール型演算子のみが否定演算子を持つことができます" +#: libpq/auth.c:738 +#, c-format +msgid "Kerberos initialization returned error %d" +msgstr "Kerberosの初期化にてエラー%dが返されました" -#: catalog/pg_operator.c:394 -msgid "only boolean operators can have restriction selectivity" -msgstr "ブール型演算子のみが制限選択性を持つことができます" +#: libpq/auth.c:748 +#, c-format +msgid "Kerberos keytab resolving returned error %d" +msgstr "Kerberosのkeytab解決にてエラー%dが返されました" -#: catalog/pg_operator.c:398 -msgid "only boolean operators can have join selectivity" -msgstr "ブール型演算子のみが結合選択性を持つことができます" +#: libpq/auth.c:772 +#, c-format +msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d" +msgstr "Kerberosのsname_to_principal(\"%s\", \"%s\")にてエラー%dが返されました" -#: catalog/pg_operator.c:402 -msgid "only boolean operators can merge join" -msgstr "ブール型演算子のみがマージ結合可能です" +#: libpq/auth.c:817 +#, c-format +msgid "Kerberos recvauth returned error %d" +msgstr "Kerberosのrecvauthにてエラー%dが返されました" -#: catalog/pg_operator.c:406 -msgid "only boolean operators can hash" -msgstr "ブール型演算子のみがハッシュ可能です" +#: libpq/auth.c:840 +#, c-format +msgid "Kerberos unparse_name returned error %d" +msgstr "Kerberosのunparse_nameにてエラー%dが返されました" -#: catalog/pg_operator.c:418 +#: libpq/auth.c:962 #, c-format -msgid "operator %s already exists" -msgstr "演算子%sはすでに存在します" +msgid "%s: %s" +msgstr "%s: %s" -#: catalog/pg_operator.c:607 -msgid "operator cannot be its own negator or sort operator" -msgstr "演算子は自身の否定子やソート演算子になることはできません" +#: libpq/auth.c:988 +msgid "GSSAPI is not supported in protocol version 2" +msgstr "プロトコルバージョン 2 では GSSAPI はサポートされていません" -#: catalog/namespace.c:250 catalog/namespace.c:317 -msgid "temporary tables cannot specify a schema name" -msgstr "一時テーブルにはスキーマ名を指定できません" +#: libpq/auth.c:1007 libpq/auth.c:1361 libpq/auth.c:1429 libpq/auth.c:1831 +#: postmaster/postmaster.c:2003 postmaster/postmaster.c:2034 +#: postmaster/postmaster.c:3231 postmaster/postmaster.c:3915 +#: postmaster/postmaster.c:3996 postmaster/postmaster.c:4610 +#: 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 utils/fmgr/dfmgr.c:224 utils/mmgr/aset.c:416 +#: utils/mmgr/aset.c:587 utils/mmgr/aset.c:765 utils/mmgr/aset.c:966 +#: 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/init/miscinit.c:150 +#: utils/init/miscinit.c:171 utils/init/miscinit.c:181 +#: utils/hash/dynahash.c:364 utils/hash/dynahash.c:436 +#: utils/hash/dynahash.c:932 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 commands/sequence.c:1017 lib/stringinfo.c:266 +msgid "out of memory" +msgstr "メモリ不足です" -#: catalog/namespace.c:358 catalog/namespace.c:2410 -msgid "no schema has been selected to create in" -msgstr "作成先のスキーマが選択されていません" - -#: catalog/namespace.c:2231 parser/parse_target.c:998 parser/parse_expr.c:773 +#: libpq/auth.c:1043 #, c-format -msgid "cross-database references are not implemented: %s" -msgstr "データベース間の参照は実装されていません: %s" +msgid "expected GSS response, got message type %d" +msgstr "GSS応答を想定しましたが、メッセージタイプ %d を受け取りました" -#: catalog/namespace.c:2237 gram.y:3671 gram.y:10604 -#: parser/parse_target.c:1005 parser/parse_expr.c:780 -#, c-format -msgid "improper qualified name (too many dotted names): %s" -msgstr "修飾名が不適切です(ドット付きの名前が多すぎます): %s" +#: libpq/auth.c:1106 +msgid "accepting GSS security context failed" +msgstr "GSSセキュリティコンテキストの受付に失敗しました" -#: catalog/namespace.c:2442 -#, c-format -msgid "improper relation name (too many dotted names): %s" -msgstr "リレーション名が不適切です(ドット付きの名前が多すぎます): %s" +#: libpq/auth.c:1132 +msgid "retrieving GSS user name failed" +msgstr "GSSユーザ名の受信に失敗しました" -#: catalog/namespace.c:3016 +#: libpq/auth.c:1205 #, c-format -msgid "permission denied to create temporary tables in database \"%s\"" -msgstr "データベース\"%s\"に一時テーブルを作成する権限がありません" +msgid "SSPI error %x" +msgstr "SSPIエラーです: %x" -#: catalog/namespace.c:3032 -msgid "cannot create temporary tables during recovery" -msgstr "リカバリ中に一時テーブルを作成できません" +#: libpq/auth.c:1209 +#, c-format +msgid "%s (%x)" +msgstr "%s (%x)" -#: catalog/toasting.c:141 -msgid "shared tables cannot be toasted after initdb" -msgstr "initdbの後で共有テーブルをTOAST化できません" +#: libpq/auth.c:1249 +msgid "SSPI is not supported in protocol version 2" +msgstr "プロトコルバージョン 2 では SSPI はサポートされていません" -#: catalog/pg_enum.c:70 -msgid "EnumValuesCreate() can only set a single OID" -msgstr "EnumValuesCreate() は単独の OID のみをセットできます" +#: libpq/auth.c:1264 +msgid "could not acquire SSPI credentials" +msgstr "SSPIの資格ハンドルを入手できませんでした" -#: catalog/pg_enum.c:110 +#: libpq/auth.c:1281 #, c-format -msgid "invalid enum label \"%s\"" -msgstr "列挙ラベル\"%s\"は無効です" +msgid "expected SSPI response, got message type %d" +msgstr "SSPI応答を想定しましたが、メッセージ種類%dを受け取りました" -#: catalog/pg_enum.c:111 -#, c-format -msgid "Labels must be %d characters or less." -msgstr "ラベルは%d文字数以内でなければなりません" +#: libpq/auth.c:1353 +msgid "could not accept SSPI security context" +msgstr "SSPIセキュリティコンテキストを受け付けられませんでした" -#: catalog/pg_type.c:231 -#, c-format -msgid "invalid type internal size %d" -msgstr "型の内部サイズ%dは無効です" +#: libpq/auth.c:1409 +msgid "could not get token from SSPI security context" +msgstr "SSPIセキュリティコンテキストからトークンを入手できませんでした" -#: catalog/pg_type.c:247 catalog/pg_type.c:255 catalog/pg_type.c:263 -#: catalog/pg_type.c:272 +#: libpq/auth.c:1653 #, c-format -msgid "alignment \"%c\" is invalid for passed-by-value type of size %d" -msgstr "値渡し型でサイズが %2$d の場合、アラインメント \"%1$c\" は無効です" +msgid "could not create socket for Ident connection: %m" +msgstr "Ident接続用のソケットを作成できませんでした: %m" -#: catalog/pg_type.c:279 +#: libpq/auth.c:1668 #, c-format -msgid "internal size %d is invalid for passed-by-value type" -msgstr "値渡し型の場合、内部サイズ%dは無効です" +msgid "could not bind to local address \"%s\": %m" +msgstr "ローカルアドレス\"%s\"にバインドできませんでした: %m" -#: catalog/pg_type.c:288 catalog/pg_type.c:294 +#: libpq/auth.c:1680 #, c-format -msgid "alignment \"%c\" is invalid for variable-length type" -msgstr "可変長型の場合、アラインメント \"%c\" は無効です" - -#: catalog/pg_type.c:302 -msgid "fixed-size types must have storage PLAIN" -msgstr "固定長型の場合は PLAIN 格納方式でなければなりません" +msgid "could not connect to Ident server at address \"%s\", port %s: %m" +msgstr "アドレス\"%s\"、ポート%sのIdentサーバに接続できませんでした: %m" -#: catalog/pg_type.c:730 +#: libpq/auth.c:1700 #, c-format -msgid "could not form array type name for type \"%s\"" -msgstr "\"%s\"型向けの配列型の名前を形成できませんでした" +msgid "could not send query to Ident server at address \"%s\", port %s: %m" +msgstr "" +"アドレス\"%s\"、ポート%sのIdentサーバに問い合わせを送信できませんでした: %m" -#: catalog/pg_proc.c:123 parser/parse_func.c:1487 parser/parse_func.c:1527 +#: libpq/auth.c:1715 #, c-format -msgid "functions cannot have more than %d argument" -msgid_plural "functions cannot have more than %d arguments" -msgstr[0] "関数は%dを超える引数を取ることができません" -msgstr[1] "関数は%dを超える引数を取ることができません" - -#: catalog/pg_proc.c:205 msgid "" -"A function returning a polymorphic type must have at least one polymorphic " -"argument." +"could not receive response from Ident server at address \"%s\", port %s: %m" msgstr "" -"多様型を返す関数は少なくとも1つの多様型の引数を取らなければなりません。" - -#: catalog/pg_proc.c:223 -#, c-format -msgid "\"%s\" is already an attribute of type %s" -msgstr "\"%s\"はすでに型%sの属性です" +"アドレス\"%s\"、ポート%sのIdentサーバからの応答を受信できませんでした: %m" -#: catalog/pg_proc.c:362 +#: libpq/auth.c:1725 #, c-format -msgid "function \"%s\" already exists with same argument types" -msgstr "同じ引数型を持つ関数\"%s\"はすでに存在します" - -#: catalog/pg_proc.c:376 catalog/pg_proc.c:398 -msgid "cannot change return type of existing function" -msgstr "既存の関数の戻り値型を変更できません" - -#: catalog/pg_proc.c:377 catalog/pg_proc.c:400 catalog/pg_proc.c:442 -#: catalog/pg_proc.c:465 catalog/pg_proc.c:491 -msgid "Use DROP FUNCTION first." -msgstr "まずDROP FUNCTIONを使用してください。" +msgid "invalidly formatted response from Ident server: \"%s\"" +msgstr "Identサーバからの応答の書式が無効です: \"%s\"" -#: catalog/pg_proc.c:399 -msgid "Row type defined by OUT parameters is different." -msgstr "OUTパラメータで定義された行型が異なります。" +#: libpq/auth.c:1764 +#, +msgid "peer authentication is not supported on this platform" +msgstr "このプラットフォームでは対向(peer)認証はサポートされていません" -#: catalog/pg_proc.c:440 +#: libpq/auth.c:1768 #, c-format -msgid "cannot change name of input parameter \"%s\"" -msgstr "入力パラメーター \"%s\" の名称を変更できません" +msgid "could not get peer credentials: %m" +msgstr "ピアの資格証明を入手できませんでした: %m" -#: catalog/pg_proc.c:464 -msgid "cannot remove parameter defaults from existing function" -msgstr "既存の関数からパラメータのデフォルト値を削除できません" +#: libpq/auth.c:1777 +#, c-format +msgid "local user with ID %d does not exist" +msgstr "ID %dのローカルユーザは存在しません" -#: catalog/pg_proc.c:490 -msgid "cannot change data type of existing parameter default value" -msgstr "既存のパラメータのデフォルト値のデータ型を変更できません" +#: libpq/auth.c:1860 libpq/auth.c:2132 libpq/auth.c:2492 +msgid "empty password returned by client" +msgstr "クライアントから空のパスワードが返されました" -#: catalog/pg_proc.c:502 +#: libpq/auth.c:1870 #, c-format -msgid "function \"%s\" is an aggregate function" -msgstr "関数 \"%s\" は集約関数です" +msgid "error from underlying PAM layer: %s" +msgstr "背後のPAM層でエラーがありました: %s" -#: catalog/pg_proc.c:507 +#: libpq/auth.c:1939 #, c-format -msgid "function \"%s\" is not an aggregate function" -msgstr "関数 \"%s\" は集約関数ではありません" +msgid "could not create PAM authenticator: %s" +msgstr "PAM authenticatorを作成できませんでした: %s" -#: catalog/pg_proc.c:515 +#: libpq/auth.c:1950 #, c-format -msgid "function \"%s\" is a window function" -msgstr "関数 \"%s\" はウィンドウ関数です" +msgid "pam_set_item(PAM_USER) failed: %s" +msgstr "pam_set_item(PAM_USER)が失敗しました: %s" -#: catalog/pg_proc.c:520 +#: libpq/auth.c:1961 #, c-format -msgid "function \"%s\" is not a window function" -msgstr "関数 \"%s\" はウィンドウ関数ではありません" +msgid "pam_set_item(PAM_CONV) failed: %s" +msgstr "\"pam_set_item(PAM_CONV)が失敗しました: %s" -#: catalog/pg_proc.c:688 +#: libpq/auth.c:1972 #, c-format -msgid "there is no built-in function named \"%s\"" -msgstr "\"%s\"という名前の関数は組み込まれていません" +msgid "pam_authenticate failed: %s" +msgstr "\"pam_authenticateが失敗しました: %s" -#: catalog/pg_proc.c:780 +#: libpq/auth.c:1983 #, c-format -msgid "SQL functions cannot return type %s" -msgstr "SQL関数は型%sを返すことができません" +msgid "pam_acct_mgmt failed: %s" +msgstr "pam_acct_mgmtが失敗しました: %s" -#: catalog/pg_proc.c:795 +#: libpq/auth.c:1994 #, c-format -msgid "SQL functions cannot have arguments of type %s" -msgstr "SQL関数は型%sの引数と取ることができません" +msgid "could not release PAM authenticator: %s" +msgstr "PAM authenticatorを解放できませんでした: %s" -#: catalog/pg_constraint.c:767 +#: libpq/auth.c:2027 libpq/auth.c:2031 #, c-format -msgid "table \"%s\" has multiple constraints named \"%s\"" -msgstr "テーブル\"%s\"には複数の\"%s\"という名前の制約があります" +msgid "could not initialize LDAP: error code %d" +msgstr "LDAPを初期化できませんでした: %d" -#: catalog/pg_constraint.c:779 +#: libpq/auth.c:2041 #, c-format -msgid "constraint \"%s\" for table \"%s\" does not exist" -msgstr "テーブル\"%2$s\"の制約\"%1$s\"は存在しません" - -#: catalog/index.c:582 -msgid "user-defined indexes on system catalog tables are not supported" -msgstr "" -"ユーザによるシステムカタログテーブルに対するインデックスの定義はサポートされ" -"ていません" - -#: catalog/index.c:592 -msgid "concurrent index creation on system catalog tables is not supported" -msgstr "システムカタログテーブルの同時インデックス作成はサポートされていません" - -#: catalog/index.c:610 -msgid "shared indexes cannot be created after initdb" -msgstr "initdbの後に共有インデックスを作成できません" +msgid "could not set LDAP protocol version: error code %d" +msgstr "LDAPプロトコルバージョンを設定できませんでした: エラーコード %d" -#: catalog/index.c:2430 -msgid "cannot reindex temporary tables of other sessions" -msgstr "他のセッションの一時テーブルを再インデックス付けできません" +#: libpq/auth.c:2070 +msgid "could not load wldap32.dll" +msgstr "wldap32.dllの読み込みができません" -#: catalog/catalog.c:75 -msgid "invalid fork name" -msgstr "無効な分岐名です" +#: libpq/auth.c:2078 +msgid "could not load function _ldap_start_tls_sA in wldap32.dll" +msgstr "wldap32.dllの_ldap_start_tls_sA関数を読み込みできませんでした" -#: catalog/catalog.c:76 -msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"." -msgstr "有効な分岐名は\"main\"、\"fsm\"および\"vm\" です" +#: libpq/auth.c:2079 +msgid "LDAP over SSL is not supported on this platform." +msgstr "このプラットフォームではLDAP over SSLをサポートしていません。" -#: catalog/pg_shdepend.c:560 catalog/dependency.c:734 +#: libpq/auth.c:2094 #, c-format -msgid "cannot drop %s because it is required by the database system" -msgstr "データベースシステムが必要としているため%sを削除できません" +msgid "could not start LDAP TLS session: error code %d" +msgstr "LDAP TLSセッションを開始できませんでした: エラーコード %d" -#: catalog/pg_shdepend.c:671 catalog/dependency.c:898 -#, 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" -"および%dのその他のオブジェクト(一覧についてはサーバログを参照してください)" -msgstr[1] "" -"\n" -"および%dのその他のオブジェクト(一覧についてはサーバログを参照してください)" +#: libpq/auth.c:2116 +msgid "LDAP server not specified" +msgstr "LDAP サーバーの指定がありません" -#: catalog/pg_shdepend.c:678 +#: libpq/auth.c:2168 +msgid "invalid character in user name for LDAP authentication" +msgstr "LDAP 認証でユーザー名の中に不正な文字があります" + +#: libpq/auth.c:2183 #, 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" -"および、他の%dのデータベース内のオブジェクト(一覧についてはサーバログを参照し" -"てください)" -msgstr[1] "" -"\n" -"および、他の%dのデータベース内のオブジェクト(一覧についてはサーバログを参照し" -"てください)" +"could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": " +"error code %d" +msgstr "" +"サーバー \"%2$s\" で、ldapbinddn \"%1$s\" による LDAP バインドを実行できませ" +"んでした: エラーコード %3$d" -#: catalog/pg_shdepend.c:990 +#: libpq/auth.c:2208 #, c-format -msgid "role %u was concurrently dropped" -msgstr "ロール%uの削除が同時に起きました" +msgid "could not search LDAP for filter \"%s\" on server \"%s\": error code %d" +msgstr "" +"サーバー \"%2$s\" で、フィルタ \"%1$s\" による LDAP 検索ができませんでした: " +"エラーコード %3$d" -#: catalog/pg_shdepend.c:1009 +#: libpq/auth.c:2218 #, c-format -msgid "tablespace %u was concurrently dropped" -msgstr "テーブル空間%uが同時に削除されました" +msgid "LDAP search failed for filter \"%s\" on server \"%s\": no such user" +msgstr "" +"サーバー \"%2$s\" で、フィルタ \"%1$s\" による LDAP 検索に失敗しました:その" +"ようなユーザーが見つかりません" -#: catalog/pg_shdepend.c:1024 +#: libpq/auth.c:2222 #, c-format -msgid "database %u was concurrently dropped" -msgstr "データベース %u が同時に削除されました" +msgid "" +"LDAP search failed for filter \"%s\" on server \"%s\": user is not unique (%" +"ld matches)" +msgstr "" +"サーバ \"%2$s\" でフィルタ \"%1$s\" による LDAP 検索に失敗しました:ユーザー" +"が一意ではありません(%3$ld 個見つかりました)" -#: catalog/pg_shdepend.c:1068 +#: libpq/auth.c:2239 #, c-format -msgid "owner of %s" -msgstr "%sの所有者" +msgid "" +"could not get dn for the first entry matching \"%s\" on server \"%s\": %s" +msgstr "" +"サーバ \"%2$s\" で \"%1$s\" にマッチする最初のエントリの dn を取得できませ" +"ん:%3$s" -#: catalog/pg_shdepend.c:1070 +#: libpq/auth.c:2259 #, c-format -msgid "access to %s" -msgstr "%sへのアクセス" +msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s" +msgstr "サーバー \"%s\" でユーザー \"%s\" の検索後、unbind できません: %s" -#. translator: %s will always be "database %s" -#: catalog/pg_shdepend.c:1078 +#: libpq/auth.c:2296 #, c-format -msgid "%d object in %s" -msgid_plural "%d objects in %s" -msgstr[0] "%2$s内の%1$d個のオブジェクト" -msgstr[1] "%2$s内の%1$d個のオブジェクト" +msgid "LDAP login failed for user \"%s\" on server \"%s\": error code %d" +msgstr "" +"サーバ\"%2$s\"でユーザ\"%1$s\"のLDAPログインが失敗しました: エラーコード %3$d" -#: catalog/pg_shdepend.c:1189 catalog/pg_shdepend.c:1285 +#: libpq/auth.c:2324 #, c-format msgid "" -"cannot drop objects owned by %s because they are required by the database " -"system" +"certificate authentication failed for user \"%s\": client certificate " +"contains no user name" msgstr "" -"データベースシステムが必要としているため%sが所有するオブジェクトを削除できま" -"せん" +"ユーザ \"%s\" の証明書認証に失敗しました:クライアント証明書にユーザ名が含ま" +"れていません" -#: catalog/pg_depend.c:209 -#, c-format -msgid "cannot remove dependency on %s because it is a system object" -msgstr "システムオブジェクトであるため、%sの依存関係を削除できません。" - -#: catalog/aclchk.c:196 -msgid "grant options can only be granted to roles" -msgstr "グラントオプションはロールにのみ与えることができます" +#: libpq/auth.c:2448 +msgid "RADIUS server not specified" +msgstr "RADIUS サーバーが指定されていません" -#: catalog/aclchk.c:312 -msgid "no privileges were granted for column \"%s\" of relation \"%s\"" -msgstr "リレーション \"%2$s\" のカラム \"%1$s\" には権限が付与されませんでした" +#: libpq/auth.c:2455 +msgid "RADIUS secret not specified" +msgstr "RADIUS secret が指定されていません" -#: catalog/aclchk.c:317 +#: libpq/auth.c:2471 libpq/hba.c:1403 #, c-format -msgid "no privileges were granted for \"%s\"" -msgstr "\"%s\"には権限が付与されませんでした" +msgid "could not translate RADIUS server name \"%s\" to address: %s" +msgstr "RADIUS サーバ名 \"%s\" をアドレスに変換できませんでした: %s" -#: catalog/aclchk.c:325 -msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" -msgstr "リレーション \"%2$s\" のカラム \"%1$s\" には全ての権限が付与されたわけではありません" +#: libpq/auth.c:2499 +msgid "" +"RADIUS authentication does not support passwords longer than 16 characters" +msgstr "RADIUS 認証では 16 文字以上のパスワードはサポートしていません" -#: catalog/aclchk.c:330 -#, c-format -msgid "not all privileges were granted for \"%s\"" -msgstr "\"%s\"には全ての権限が付与されたわけではありません" +#: libpq/auth.c:2510 +msgid "could not generate random encryption vector" +msgstr "乱数化ベクトルを生成できませんでした" -#: catalog/aclchk.c:341 -msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" -msgstr "リレーション \"%2$s\" のカラム \"%1$s\" からは権限が剥奪できなかった可能性があります" +#: libpq/auth.c:2533 +msgid "could not perform MD5 encryption of password" +msgstr "パスワードの MD5 暗号化に失敗しました" -#: catalog/aclchk.c:346 +#: libpq/auth.c:2555 #, c-format -msgid "no privileges could be revoked for \"%s\"" -msgstr "\"%s\"の権限を剥奪できなかった可能性があります" - -#: catalog/aclchk.c:354 -msgid "" -"not all privileges could be revoked for column \"%s\" of relation \"%s\"" -msgstr "" -"リレーション \"%2$s\" のカラム \"%1$s\" からは全ての権限が剥奪できたわけではありません" +msgid "could not create RADIUS socket: %m" +msgstr "RADIUS のソケットを作成できませんでした: %m" -#: catalog/aclchk.c:359 +#: libpq/auth.c:2576 #, c-format -msgid "not all privileges could be revoked for \"%s\"" -msgstr "\"%s\"の全ての権限を取り上げられませんでした" +msgid "could not bind local RADIUS socket: %m" +msgstr "ローカルの RADIUS ソケットをバインドできませんでした: %m" -#: catalog/aclchk.c:438 catalog/aclchk.c:927 +#: libpq/auth.c:2586 #, c-format -msgid "invalid privilege type %s for relation" -msgstr "リレーションでは権限のタイプ %s は無効です" +msgid "could not send RADIUS packet: %m" +msgstr "RADIUS パケットを送信できませんでした: %m" -#: catalog/aclchk.c:442 catalog/aclchk.c:931 -#, c-format -msgid "invalid privilege type %s for sequence" -msgstr "シーケンスでは権限のタイプ %s は無効です" +#: libpq/auth.c:2615 libpq/auth.c:2640 +msgid "timeout waiting for RADIUS response" +msgstr "RADIUS の応答待ちがタイムアウトしました" -#: catalog/aclchk.c:446 +#: libpq/auth.c:2633 #, c-format -msgid "invalid privilege type %s for database" -msgstr "データベースでは権限の他タイプ %s は無効です" +msgid "could not check status on RADIUS socket: %m" +msgstr "RADIUS ソケットの状態をチェックできませんでした: %m" -#: catalog/aclchk.c:450 catalog/aclchk.c:935 +#: libpq/auth.c:2662 #, c-format -msgid "invalid privilege type %s for function" -msgstr "関数では権限のタイプ %s は無効です" +msgid "could not read RADIUS response: %m" +msgstr "RADIUS 応答を読めませんできませんでした: %m" -#: catalog/aclchk.c:454 +#: libpq/auth.c:2674 libpq/auth.c:2678 #, c-format -msgid "invalid privilege type %s for language" -msgstr "言語では権限のタイプ %s は無効です" +msgid "RADIUS response was sent from incorrect port: %i" +msgstr "RADIUS 応答が誤ったポートから送られました:%i" -#: catalog/aclchk.c:458 +#: libpq/auth.c:2687 #, c-format -msgid "invalid privilege type %s for large object" -msgstr "ラージオブジェクトに対して権限のタイプ %s は無効です" +msgid "RADIUS response too short: %i" +msgstr "RADIUS 応答が短すぎます:%i" -#: catalog/aclchk.c:462 +#: libpq/auth.c:2694 #, c-format -msgid "invalid privilege type %s for schema" -msgstr "スキーマでは権限のタイプ %s は無効です" +msgid "RADIUS response has corrupt length: %i (actual length %i)" +msgstr "RADIUS 応答の長さが正しくありません:%i(実際の長さは %i)" -#: catalog/aclchk.c:466 +#: libpq/auth.c:2702 #, c-format -msgid "invalid privilege type %s for tablespace" -msgstr "テーブルスペースでは権限のタイプ %s は無効です" +msgid "RADIUS response is to a different request: %i (should be %i)" +msgstr "別のリクエストに対する RADIUS 応答です:%i(%i であるべき)" -#: catalog/aclchk.c:470 +#: libpq/auth.c:2727 +msgid "could not perform MD5 encryption of received packet" +msgstr "受信パケットの MD5 暗号化に失敗しました" + +#: libpq/auth.c:2736 +msgid "RADIUS response has incorrect MD5 signature" +msgstr "RADIUS 応答の MD5 シグネチャが誤っています" + +#: libpq/auth.c:2753 #, c-format -msgid "invalid privilege type %s for foreign-data wrapper" -msgstr "外部データラッパーでは権限のタイプ %s は無効です" +msgid "RADIUS response has invalid code (%i) for user \"%s\"" +msgstr "ユーザ \"%2$s\" に対する RADIUS 応答(%1$i)が無効です" -#: catalog/aclchk.c:474 +#: libpq/be-secure.c:283 libpq/be-secure.c:378 #, c-format -msgid "invalid privilege type %s for foreign server" -msgstr "外部サーバでは権限のタイプ %s は無効です" +msgid "SSL error: %s" +msgstr "SSLエラーです: %s" -#: catalog/aclchk.c:513 -msgid "column privileges are only valid for relations" -msgstr "リレーションでは権限のタイプ %s は無効です" +#: 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" -#: catalog/aclchk.c:968 -msgid "default privileges cannot be set for columns" -msgstr "デフォルト権限は列には設定できません" +#: libpq/be-secure.c:331 libpq/be-secure.c:335 libpq/be-secure.c:345 +msgid "SSL renegotiation failure" +msgstr "SSL再調停の失敗" -#: catalog/aclchk.c:1714 access/heap/heapam.c:1076 access/heap/heapam.c:1104 -#: access/heap/heapam.c:1134 -#, c-format -msgid "\"%s\" is an index" -msgstr "\"%s\"はインデックスです" +#: libpq/be-secure.c:339 +msgid "SSL failed to send renegotiation request" +msgstr "SSLで再調停要求の送信に失敗しました" -#: catalog/aclchk.c:1767 +#: libpq/be-secure.c:736 #, c-format -msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" -msgstr "シーケンス \"%s\" では USAGE, SELECT, UPDATE 権限のみをサポートします" - -#: catalog/aclchk.c:1784 -msgid "invalid privilege type USAGE for table" -msgstr "テーブルでは権限タイプ USAGE は無効です" +msgid "could not create SSL context: %s" +msgstr "SSLコンテキストを作成できませんでした: %s" -#: catalog/aclchk.c:1934 +#: libpq/be-secure.c:746 #, c-format -msgid "invalid privilege type %s for column" -msgstr "カラムでは権限タイプ %s は無効です" +msgid "could not load server certificate file \"%s\": %s" +msgstr "サーバ証明書ファイル\"%s\"をロードできませんでした: %s" -#: catalog/aclchk.c:1947 +#: libpq/be-secure.c:752 #, c-format -msgid "sequence \"%s\" only supports SELECT column privileges" -msgstr "シーケンス \"%s\" では USAGE, SELECT, UPDATE のみをサポートします" +msgid "could not access private key file \"%s\": %m" +msgstr "秘密キーファイル\"%s\"にアクセスできませんでした: %m" -#: catalog/aclchk.c:2531 +#: libpq/be-secure.c:767 #, c-format -msgid "language \"%s\" is not trusted" -msgstr "言語\"%s\"は信頼されていません" +msgid "private key file \"%s\" has group or world access" +msgstr "秘密キーファイル \"%s\" はグループまたは全員からアクセス可能です" -#: catalog/aclchk.c:2533 -msgid "Only superusers can use untrusted languages." -msgstr "スーパーユーザのみが信頼されない言語を使用することができます" +#: libpq/be-secure.c:769 +msgid "Permissions should be u=rw (0600) or less." +msgstr "権限はu=rwx(0700)でなければなりません" -#: catalog/aclchk.c:3040 +#: libpq/be-secure.c:776 #, c-format -msgid "unrecognized privilege type \"%s\"" -msgstr "権限タイプ \"%s\" を認識できません" +msgid "could not load private key file \"%s\": %s" +msgstr "秘密キーファイル\"%s\"をロードできませんでした: %s" -#: catalog/aclchk.c:3089 +#: libpq/be-secure.c:781 #, c-format -msgid "permission denied for column %s" -msgstr "カラム %s への権限がありません" +msgid "check of private key failed: %s" +msgstr "秘密キーの検査に失敗しました: %s" -#: catalog/aclchk.c:3091 +#: libpq/be-secure.c:809 #, c-format -msgid "permission denied for relation %s" -msgstr "リレーション %s への権限がありません" +msgid "could not access root certificate file \"%s\": %m" +msgstr "ルート証明ファイル \"%s\" にアクセスできませんでした: %m" -#: catalog/aclchk.c:3095 +#: libpq/be-secure.c:820 #, c-format -msgid "permission denied for database %s" -msgstr "データベース %s への権限がありません" +msgid "could not load root certificate file \"%s\": %s" +msgstr "ルート証明ファイル\"%s\"をロードできませんでした: %s" -#: catalog/aclchk.c:3097 +#: libpq/be-secure.c:843 #, c-format -msgid "permission denied for function %s" -msgstr "関数 %s への権限がありません" +msgid "SSL certificate revocation list file \"%s\" ignored" +msgstr "SSL証明書失効リストファイル\"%s\"は無視されました" -#: catalog/aclchk.c:3099 -#, c-format -msgid "permission denied for operator %s" -msgstr "演算子 %s への権限がありません" +#: libpq/be-secure.c:845 +msgid "SSL library does not support certificate revocation lists." +msgstr "SSLライブラリが証明書失効リストをサポートしていません。" -#: catalog/aclchk.c:3101 +#: libpq/be-secure.c:852 #, c-format -msgid "permission denied for type %s" -msgstr "型 %s への権限がありません" +msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s" +msgstr "SSL証明書失効リストファイル\"%s\"がありません。省略します: %s" -#: catalog/aclchk.c:3103 -#, c-format -msgid "permission denied for language %s" -msgstr "言語 %s への権限がありません" +#: libpq/be-secure.c:854 +msgid "Certificates will not be checked against revocation list." +msgstr "証明書は失効リストに対して検査されません。" -#: catalog/aclchk.c:3105 +#: libpq/be-secure.c:896 #, c-format -msgid "permission denied for large object %s" -msgstr "ラージオブジェクト %s に対する権限がありません" +msgid "could not initialize SSL connection: %s" +msgstr "SSL接続を初期化できませんでした: %s" -#: catalog/aclchk.c:3107 +#: libpq/be-secure.c:905 #, c-format -msgid "permission denied for schema %s" -msgstr "スキーマ %s への権限がありません" +msgid "could not set SSL socket: %s" +msgstr "SSLソケットを設定できませんでした: %s" -#: catalog/aclchk.c:3109 +#: libpq/be-secure.c:931 #, c-format -msgid "permission denied for operator class %s" -msgstr "演算子クラス%sに権限がありません" +msgid "could not accept SSL connection: %m" +msgstr "SSL接続を受け付けられませんでした: %m" -#: catalog/aclchk.c:3111 -#, c-format -msgid "permission denied for operator family %s" -msgstr "演算子族%sに権限がありません" +#: libpq/be-secure.c:935 libpq/be-secure.c:946 +msgid "could not accept SSL connection: EOF detected" +msgstr "SSL接続を受け付けられませんでした: EOFを検出しました" -#: catalog/aclchk.c:3113 +#: libpq/be-secure.c:940 #, c-format -msgid "permission denied for conversion %s" -msgstr "変換%sに権限がありません" +msgid "could not accept SSL connection: %s" +msgstr "SSL接続を受け付けられませんでした: %s" -#: catalog/aclchk.c:3115 -#, c-format -msgid "permission denied for tablespace %s" -msgstr "テーブル空間%sに権限がありません" +#: libpq/be-secure.c:991 +msgid "SSL certificate's common name contains embedded null" +msgstr "SSL 証明書のコモンネームに null が含まれています" -#: catalog/aclchk.c:3117 +#: libpq/be-secure.c:998 #, c-format -msgid "permission denied for text search dictionary %s" -msgstr "テキスト検索辞書%sに権限がありません" +msgid "SSL connection from \"%s\"" +msgstr "\"%s\"からのSSL接続" -#: catalog/aclchk.c:3119 -#, c-format -msgid "permission denied for text search configuration %s" -msgstr "テキスト検索設定%sに権限がありません" +#: libpq/be-secure.c:1042 +msgid "no SSL error reported" +msgstr "SSLエラーはありませんでした" -#: catalog/aclchk.c:3121 +#: libpq/be-secure.c:1046 #, c-format -msgid "permission denied for foreign-data wrapper %s" -msgstr "外部データラッパー %s への権限がありません" +msgid "SSL error code %lu" +msgstr "SSLエラーコード: %lu" -#: catalog/aclchk.c:3123 +#: libpq/pqcomm.c:306 #, c-format -msgid "permission denied for foreign server %s" -msgstr "外部サーバ %s への権限がありません" +msgid "could not translate host name \"%s\", service \"%s\" to address: %s" +msgstr "ホスト名\"%s\"、サービス\"%s\"をアドレスに変換できませんでした: %s" -#: catalog/aclchk.c:3129 catalog/aclchk.c:3131 +#: libpq/pqcomm.c:310 #, c-format -msgid "must be owner of relation %s" -msgstr "リレーション%sの所有者でなければなりません" +msgid "could not translate service \"%s\" to address: %s" +msgstr "サービス\"%s\"をアドレスに変換できませんでした: %s" -#: catalog/aclchk.c:3133 +#: libpq/pqcomm.c:337 #, c-format -msgid "must be owner of sequence %s" -msgstr "シーケンス%sの所有者でなければなりません" +msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded" +msgstr "" +"要求されたアドレスを全てバインドできませんでした: MAXLISTEN (%d)を超えていま" +"す" -#: catalog/aclchk.c:3135 -#, c-format -msgid "must be owner of database %s" -msgstr "データベース%sの所有者でなければなりません" +#: libpq/pqcomm.c:346 +msgid "IPv4" +msgstr "IPv4" -#: catalog/aclchk.c:3137 -#, c-format -msgid "must be owner of function %s" -msgstr "関数%sの所有者でなければなりません" +#: libpq/pqcomm.c:350 +msgid "IPv6" +msgstr "IPv6" -#: catalog/aclchk.c:3139 +#: libpq/pqcomm.c:355 +msgid "Unix" +msgstr "Unix" + +#: libpq/pqcomm.c:360 #, c-format -msgid "must be owner of operator %s" -msgstr "演算子%sの所有者でなければなりません" +msgid "unrecognized address family %d" +msgstr "アドレスファミリ %d を認識できません" -#: catalog/aclchk.c:3141 +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:371 #, c-format -msgid "must be owner of type %s" -msgstr "型%sの所有者でなければなりません" +msgid "could not create %s socket: %m" +msgstr "%sソケットを作成できませんでした: %m" -#: catalog/aclchk.c:3143 +#: libpq/pqcomm.c:396 #, c-format -msgid "must be owner of language %s" -msgstr "言語%sの所有者でなければなりません" +msgid "setsockopt(SO_REUSEADDR) failed: %m" +msgstr "setsockopt(SO_REUSEADDR)が失敗しました: %m" -#: catalog/aclchk.c:3145 +#: libpq/pqcomm.c:411 #, c-format -msgid "must be owner of large object %s" -msgstr "ラージオブジェクト %s の所有者でなければなりません" +msgid "setsockopt(IPV6_V6ONLY) failed: %m" +msgstr "setsockopt(IPV6_V6ONLY)が失敗しました: %m" -#: catalog/aclchk.c:3147 +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:430 #, c-format -msgid "must be owner of schema %s" -msgstr "スキーマ%sの所有者でなければなりません" +msgid "could not bind %s socket: %m" +msgstr "%sソケットをバインドできませんでした: %m" -#: catalog/aclchk.c:3149 +#: libpq/pqcomm.c:433 #, c-format -msgid "must be owner of operator class %s" -msgstr "演算子クラス%sの所有者でなければなりません" +msgid "" +"Is another postmaster already running on port %d? If not, remove socket file " +"\"%s\" and retry." +msgstr "" +"すでに他にpostmasterがポート%dで稼動していませんか? 稼動していなければソケッ" +"トファイル\"%s\"を削除し再実行してください" -#: catalog/aclchk.c:3151 +#: libpq/pqcomm.c:436 #, c-format -msgid "must be owner of operator family %s" -msgstr "演算子族%sの所有者でなければなりません" +msgid "" +"Is another postmaster already running on port %d? If not, wait a few seconds " +"and retry." +msgstr "" +"すでに他にpostmasterがポート%dで稼動していませんか? 稼動していなければ数秒" +"待ってから再実行してください" -#: catalog/aclchk.c:3153 +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:469 #, c-format -msgid "must be owner of conversion %s" -msgstr "変換%sの所有者でなければなりません" +msgid "could not listen on %s socket: %m" +msgstr "%sソケットをlistenできませんでした: %m" -#: catalog/aclchk.c:3155 +#: libpq/pqcomm.c:554 #, c-format -msgid "must be owner of tablespace %s" -msgstr "テーブル空間%sの所有者でなければなりません" +msgid "group \"%s\" does not exist" +msgstr "グループ\"%s\"は存在しません" -#: catalog/aclchk.c:3157 +#: libpq/pqcomm.c:564 #, c-format -msgid "must be owner of text search dictionary %s" -msgstr "テキスト検索辞書%sの所有者でなければなりません" +msgid "could not set group of file \"%s\": %m" +msgstr "ファイル\"%s\"のグループを設定できませんでした: %m" -#: catalog/aclchk.c:3159 +#: libpq/pqcomm.c:575 #, c-format -msgid "must be owner of text search configuration %s" -msgstr "テキスト検索設定%sの所有者でなければなりません" +msgid "could not set permissions of file \"%s\": %m" +msgstr "ファイル\"%s\"の権限を設定できませんでした: %m" -#: catalog/aclchk.c:3161 +#: libpq/pqcomm.c:605 #, c-format -msgid "must be owner of foreign-data wrapper %s" -msgstr "外部データラッパー %s の所有者でなければなりません" +msgid "could not accept new connection: %m" +msgstr "新しい接続を受け付けることができませんでした: %m" -#: catalog/aclchk.c:3163 +#: libpq/pqcomm.c:773 #, c-format -msgid "must be owner of foreign server %s" -msgstr "外部サーバ %s の所有者でなければなりません" - -#: catalog/aclchk.c:3205 -msgid "permission denied for column \"%s\" of relation \"%s\"" -msgstr "リレーション \"%2$s\" のカラム \"%1$s\" への権限がありません" +msgid "could not set socket to non-blocking mode: %m" +msgstr "ソケットを非ブロッキングモードに設定できませんでした: %m" -#: catalog/aclchk.c:3232 +#: libpq/pqcomm.c:779 #, c-format -msgid "role with OID %u does not exist" -msgstr "OID が %u であるロールは存在しません" +msgid "could not set socket to blocking mode: %m" +msgstr "ソケットをブロッキングモードに設定できませんでした: %m" -#: catalog/aclchk.c:3325 catalog/aclchk.c:3333 +#: libpq/pqcomm.c:831 libpq/pqcomm.c:921 #, c-format -msgid "attribute %d of relation with OID %u does not exist" -msgstr "OID が %2$u であるリレーションの属性 %1$d は存在しません" +msgid "could not receive data from client: %m" +msgstr "クライアントからデータを受信できませんでした: %m" -#: catalog/aclchk.c:3406 catalog/aclchk.c:4226 -#, c-format -msgid "relation with OID %u does not exist" -msgstr "OID が %u であるリレーションは存在しません" +#: libpq/pqcomm.c:1072 +msgid "unexpected EOF within message length word" +msgstr "メッセージ長ワード内のEOFは想定外です" -#: catalog/aclchk.c:3500 catalog/aclchk.c:4590 utils/adt/dbsize.c:127 -#, c-format -msgid "database with OID %u does not exist" -msgstr "OID %uのデータベースは存在しません" +#: libpq/pqcomm.c:1083 +msgid "invalid message length" +msgstr "メッセージ長が無効です" -#: catalog/aclchk.c:3608 catalog/aclchk.c:4330 -#, c-format -msgid "language with OID %u does not exist" -msgstr "OID が %u である言語は存在しません" +#: libpq/pqcomm.c:1105 libpq/pqcomm.c:1115 +msgid "incomplete message from client" +msgstr "クライアントからのメッセージが不完全です" -#: catalog/aclchk.c:3769 catalog/aclchk.c:4402 +#: libpq/pqcomm.c:1245 #, c-format -msgid "schema with OID %u does not exist" -msgstr "OID が %u であるスキーマは存在しません" +msgid "could not send data to client: %m" +msgstr "クライアントにデータを送信できませんでした: %m" -#: catalog/aclchk.c:3823 catalog/aclchk.c:4429 +#: libpq/hba.c:160 #, c-format -msgid "tablespace with OID %u does not exist" -msgstr "OID が %u であるテーブル空間は存在しません" +msgid "authentication file token too long, skipping: \"%s\"" +msgstr "認証ファイルのトークンが長すぎますので、飛ばします: \"%s\"" -#: catalog/aclchk.c:3881 +#: libpq/hba.c:355 #, c-format -msgid "foreign-data wrapper with OID %u does not exist" -msgstr "OID が %u である外部データラッパーは存在しません" +msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" +msgstr "" +"セカンダリ認証ファイル\"@%s\"を\"%s\"としてオープンできませんでした: %m" -#: catalog/aclchk.c:3942 catalog/aclchk.c:4563 +#: libpq/hba.c:628 #, c-format -msgid "foreign server with OID %u does not exist" -msgstr "OID が %u である外部サーバは存在しません" +msgid "could not translate host name \"%s\" to address: %s" +msgstr "ホスト名 \"%s\" をアドレスに変換できませんでした: %s" -#: catalog/aclchk.c:4252 +#. translator: the second %s is a list of auth methods +#: libpq/hba.c:779 #, c-format -msgid "type with OID %u does not exist" -msgstr "OID が %u である型は存在しません" +msgid "" +"authentication option \"%s\" is only valid for authentication methods %s" +msgstr "認証オプション\"%s\"は認証方式%sでのみ有効です" -#: catalog/aclchk.c:4278 +#: libpq/hba.c:781 libpq/hba.c:797 libpq/hba.c:833 libpq/hba.c:855 +#: libpq/hba.c:864 libpq/hba.c:887 libpq/hba.c:899 libpq/hba.c:912 +#: libpq/hba.c:927 libpq/hba.c:982 libpq/hba.c:1002 libpq/hba.c:1016 +#: libpq/hba.c:1033 libpq/hba.c:1046 libpq/hba.c:1062 libpq/hba.c:1077 +#: libpq/hba.c:1119 libpq/hba.c:1151 libpq/hba.c:1162 libpq/hba.c:1182 +#: libpq/hba.c:1193 libpq/hba.c:1204 libpq/hba.c:1221 libpq/hba.c:1242 +#: libpq/hba.c:1272 libpq/hba.c:1284 libpq/hba.c:1297 libpq/hba.c:1331 +#: libpq/hba.c:1405 libpq/hba.c:1423 libpq/hba.c:1444 libpq/hba.c:1475 +#: libpq/hba.c:1485 tsearch/ts_locale.c:182 #, c-format -msgid "operator with OID %u does not exist" -msgstr "OID が %u である演算子は存在しません" +msgid "line %d of configuration file \"%s\"" +msgstr "設定ファイル \"%2$s\" の %1$d 行目" -#: catalog/aclchk.c:4455 +#: libpq/hba.c:795 #, c-format -msgid "operator class with OID %u does not exist" -msgstr "OID が %u である演算子クラスは存在しません" +msgid "authentication method \"%s\" requires argument \"%s\" to be set" +msgstr "認証方式\"%s\"の場合は引数\"%s\"がセットされなければなりません" -#: catalog/aclchk.c:4482 -#, c-format -msgid "operator family with OID %u does not exist" -msgstr "OID が %u である演算子族は存在しません" +#: libpq/hba.c:832 +#, +msgid "local connections are not supported by this build" +msgstr "このビルドでは local 接続はサポートされていません" -#: catalog/aclchk.c:4509 -#, c-format -msgid "text search dictionary with OID %u does not exist" -msgstr "OID が %u であるテキスト検索辞書は存在しません" +#: libpq/hba.c:853 +msgid "hostssl requires SSL to be turned on" +msgstr "hostssl は SSL を有効にするよう要求しています" -#: catalog/aclchk.c:4536 -#, c-format -msgid "text search configuration with OID %u does not exist" -msgstr "OID が %u であるテキスト検索設定は存在しません" +#: libpq/hba.c:854 +msgid "Set ssl = on in postgresql.conf." +msgstr "postgresql.conf で ssl = on に設定してください" -#: catalog/aclchk.c:4616 -#, c-format -msgid "conversion with OID %u does not exist" -msgstr "OID が %u である変換は存在しません" +#: libpq/hba.c:862 +#, +msgid "hostssl is not supported by this build" +msgstr "このビルドでは hostssl はサポートされていません" -#: catalog/dependency.c:578 -#, c-format -msgid "cannot drop %s because %s requires it" -msgstr "%2$sが必要としているため%1$sを削除できません" +#: libpq/hba.c:863 +msgid "Compile with --with-openssl to use SSL connections." +msgstr "SSL 接続を有効にするには --with-openssl でコンパイルしてください" -#: catalog/dependency.c:581 +#: libpq/hba.c:885 #, c-format -msgid "You can drop %s instead." -msgstr "代わりに%sを削除できます" +msgid "invalid connection type \"%s\"" +msgstr "接続オプションタイプ \"%s\" は無効です" + +#: libpq/hba.c:898 +msgid "end-of-line before database specification" +msgstr "データベース指定の前に行末を検出しました" + +#: libpq/hba.c:911 +msgid "end-of-line before role specification" +msgstr "ロール指定の前に行末を検出しました" + +#: libpq/hba.c:926 +msgid "end-of-line before IP address specification" +msgstr "IP アドレス指定の前に行末を検出しました" -#: catalog/dependency.c:848 +#: libpq/hba.c:980 #, c-format -msgid "drop auto-cascades to %s" -msgstr "%sへの自動カスケードを削除します" +msgid "invalid IP address \"%s\": %s" +msgstr "IP アドレス \"%s\" は有効ではありません: %s" -#: catalog/dependency.c:860 catalog/dependency.c:869 +#: libpq/hba.c:1000 #, c-format -msgid "%s depends on %s" -msgstr "%sは%sに依存します" +msgid "specifying both host name and CIDR mask is invalid: \"%s\"" +msgstr "ホスト名と CIDR マスクを両方指定するのは無効です:\"%s\"" -#: catalog/dependency.c:881 catalog/dependency.c:890 +#: libpq/hba.c:1014 #, c-format -msgid "drop cascades to %s" -msgstr "%sへのカスケードを削除します" +msgid "invalid CIDR mask in address \"%s\"" +msgstr "IP アドレス \"%s\" 内の CIDR マスクが無効です" + +#: libpq/hba.c:1032 +msgid "end-of-line before netmask specification" +msgstr "ネットマスク指定の前に行末を検出しました" -#: catalog/dependency.c:910 +#: libpq/hba.c:1044 #, c-format -msgid "cannot drop %s because other objects depend on it" -msgstr "他のオブジェクトが依存していますので%sを削除できません" +msgid "invalid IP mask \"%s\": %s" +msgstr "IP マスク \"%s\" は有効ではありません: %s" -#: catalog/dependency.c:914 catalog/dependency.c:921 -msgid "Use DROP ... CASCADE to drop the dependent objects too." -msgstr "" -"依存しているオブジェクトも削除するにはDROP ... CASCADEを使用してください" +#: libpq/hba.c:1061 +msgid "IP address and mask do not match" +msgstr "IPアドレスとマスクが一致しません" -#: catalog/dependency.c:918 -msgid "cannot drop desired object(s) because other objects depend on them" -msgstr "他のオブジェクトが依存しているため希望するオブジェクトを削除できません" +#: libpq/hba.c:1076 +msgid "end-of-line before authentication method" +msgstr "認証方式指定の前に行末を検出しました" -#. translator: %d always has a value larger than 1 -#: catalog/dependency.c:927 +#: libpq/hba.c:1149 #, c-format -msgid "drop cascades to %d other object" -msgid_plural "drop cascades to %d other objects" -msgstr[0] "他の %d 個のオブジェクトへのカスケードを削除します" -msgstr[1] "他の %d 個のオブジェクトへのカスケードを削除します" +msgid "invalid authentication method \"%s\"" +msgstr "認証方式 \"%s\" が有効ではありません" -#: catalog/dependency.c:2097 +#: libpq/hba.c:1160 #, c-format -msgid " column %s" -msgstr " 列 %s" +msgid "invalid authentication method \"%s\": not supported by this build" +msgstr "無効な認証方式 \"%s\":このビルドではサポートされていません" -#: catalog/dependency.c:2103 -#, c-format -msgid "function %s" -msgstr "関数 %s" +#: libpq/hba.c:1181 +msgid "krb5 authentication is not supported on local sockets" +msgstr "ローカルソケット上の KRB5 認証はサポートしていません" -#: catalog/dependency.c:2108 -#, c-format -msgid "type %s" -msgstr "型 %s" +#: libpq/hba.c:1192 +msgid "gssapi authentication is not supported on local sockets" +msgstr "ローカルソケットでは gssapi 認証をサポートしていません" -#: catalog/dependency.c:2138 -#, c-format -msgid "cast from %s to %s" -msgstr "%sから%sへのキャスト" +#: libpq/hba.c:1203 +#, +msgid "peer authentication is only supported on local sockets" +msgstr "ピア認証はローカルソケットでのみサポートしています" -#: catalog/dependency.c:2165 -#, c-format -msgid "constraint %s on %s" -msgstr "%2$s に対する制約 %1$s" +#: libpq/hba.c:1220 +msgid "cert authentication is only supported on hostssl connections" +msgstr "hostssl 接続では証明書認証のみをサポートしています" -#: catalog/dependency.c:2171 +#: libpq/hba.c:1241 #, c-format -msgid "constraint %s" -msgstr "制約 %s" +msgid "authentication option not in name=value format: %s" +msgstr "認証オプションが 名前=値 形式になっていません:%s" -#: catalog/dependency.c:2188 -#, c-format -msgid "conversion %s" -msgstr "変換 %s" +#: libpq/hba.c:1257 +#, +msgid "ident, peer, krb5, gssapi, sspi and cert" +msgstr "ident、peer、krb5、gssapi、sspiおよびcert" -#: catalog/dependency.c:2225 -#, c-format -msgid "default for %s" -msgstr "%s用のデフォルト" +#: libpq/hba.c:1271 +msgid "clientcert can only be configured for \"hostssl\" rows" +msgstr "クライアント証明書は \"hostssl\" な行でのみ設定できます" -#: catalog/dependency.c:2242 -#, c-format -msgid "language %s" -msgstr "言語%s" +#: libpq/hba.c:1282 +msgid "" +"client certificates can only be checked if a root certificate store is " +"available" +msgstr "" +"クライアント証明書はルート証明書ストアが利用できる場合にのみ検証されます" -#: catalog/dependency.c:2248 -#, c-format -msgid "large object %u" -msgstr "ラージオブジェクト %u" +#: libpq/hba.c:1283 +msgid "Make sure the root.crt file is present and readable." +msgstr "" +"root.crt ファイルが存在し、かつ読める状態になっていることを確認してください" + +#: libpq/hba.c:1296 +msgid "clientcert can not be set to 0 when using \"cert\" authentication" +msgstr "\"cert\" 認証を使う場合は clientcert が 0 であってはなりません" -#: catalog/dependency.c:2253 +#: libpq/hba.c:1330 #, c-format -msgid "operator %s" -msgstr "演算子%s" +msgid "invalid LDAP port number: \"%s\"" +msgstr "無効なLDAPポート番号です: \"%s\"" -#: catalog/dependency.c:2285 +#: libpq/hba.c:1376 libpq/hba.c:1384 +msgid "krb5, gssapi and sspi" +msgstr "krb5、gssapiおよびsspi" + +#: libpq/hba.c:1422 #, c-format -msgid "operator class %s for access method %s" -msgstr "アクセスメソッド%2$s用の演算子クラス%1$s" +msgid "invalid RADIUS port number: \"%s\"" +msgstr "無効な RADIUS ポート番号です: \"%s\"" -#: catalog/dependency.c:2335 +#: libpq/hba.c:1442 #, c-format -msgid "operator %d %s of %s" -msgstr "演算子 %1$d %3$s %2$s" +msgid "unrecognized authentication option name: \"%s\"" +msgstr "認証オプション名を認識できません: \"%s\"" -#: catalog/dependency.c:2382 +#: libpq/hba.c:1474 +msgid "" +"cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, or ldapsearchattribute " +"together with ldapprefix" +msgstr "" +"ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute は、ldapprefix と" +"同時には指定できません" + +#: libpq/hba.c:1484 +msgid "" +"authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix" +"\", or \"ldapsuffix\" to be set" +msgstr "" +"\"ldap\" 認証方式の場合は引数 \"ldapbasedn\", \"ldapprefix\" \"ldapsuffix\" " +"のいずれかを指定してください" + +#: libpq/hba.c:1683 guc-file.l:409 #, c-format -msgid "function %d %s of %s" -msgstr "関数 %1$d %3$s %2$s" +msgid "could not open configuration file \"%s\": %m" +msgstr "設定ファイル\"%s\"をオープンできませんでした: %m" -#: catalog/dependency.c:2419 +#: libpq/hba.c:1815 #, c-format -msgid "rule %s on " -msgstr "のルール %s" +msgid "invalid regular expression \"%s\": %s" +msgstr "正規表現\"%s\"が無効です: %s" -#: catalog/dependency.c:2454 +#: libpq/hba.c:1838 #, c-format -msgid "trigger %s on " -msgstr "トリガ %s、対象:" +msgid "regular expression match for \"%s\" failed: %s" +msgstr "正規表現\"%s\"でマッチングに失敗しました: %s" -#: catalog/dependency.c:2471 +#: libpq/hba.c:1856 #, c-format -msgid "schema %s" -msgstr "スキーマ %s" +msgid "" +"regular expression \"%s\" has no subexpressions as requested by " +"backreference in \"%s\"" +msgstr "" +"正規表現\"%s\"には\"%s\"における後方参照が要求する副表現式が含まれていません" -#: catalog/dependency.c:2484 +#: libpq/hba.c:1922 #, c-format -msgid "text search parser %s" -msgstr "テキスト検索パーサ %s" +msgid "missing entry in file \"%s\" at end of line %d" +msgstr "ファイル\"%s\"の最終行%dでエントリが足りません" -#: catalog/dependency.c:2499 +#: libpq/hba.c:1963 #, c-format -msgid "text search dictionary %s" -msgstr "テキスト検索辞書 %s" +msgid "provided user name (%s) and authenticated user name (%s) do not match" +msgstr "与えられたユーザー名 (%s) と認証されたユーザー名 (%s) が一致しません" -#: catalog/dependency.c:2514 +#: libpq/hba.c:1984 #, c-format -msgid "text search template %s" -msgstr "テキスト検索テンプレート %s" +msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\"" +msgstr "" +"\"%3$s\"として認証されたユーザ \"%2$s\" はユーザマップ \"%1$s\" に一致しませ" +"ん" -#: catalog/dependency.c:2529 +#: libpq/hba.c:2008 #, c-format -msgid "text search configuration %s" -msgstr "テキスト検索設定 %s" +msgid "could not open usermap file \"%s\": %m" +msgstr "ユーザマップファイル \"%s\" をオープンできませんでした: %m" -#: catalog/dependency.c:2537 +#: 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 "role %s" -msgstr "ロール %s" +msgid "invalid large-object descriptor: %d" +msgstr "ラージオブジェクト記述子が無効です: %d" -#: catalog/dependency.c:2550 +#: libpq/be-fsstubs.c:173 libpq/be-fsstubs.c:205 libpq/be-fsstubs.c:529 #, c-format -msgid "database %s" -msgstr "データベース %s" +msgid "permission denied for large object %u" +msgstr "ラージオブジェクト %u に対する権限がありません" -#: catalog/dependency.c:2562 +#: libpq/be-fsstubs.c:194 #, c-format -msgid "tablespace %s" -msgstr "テーブル空間 %s" +msgid "large object descriptor %d was not opened for writing" +msgstr "ラージオブジェクト記述子%dは書き込み用に開かれていませんでした" -#: catalog/dependency.c:2571 +#: libpq/be-fsstubs.c:287 catalog/pg_largeobject.c:200 +#: catalog/objectaddress.c:819 #, c-format -msgid "foreign-data wrapper %s" -msgstr "外部データラッパー %s" +msgid "must be owner of large object %u" +msgstr "ラージオブジェクト %u の所有者でなければなりません" + +#: libpq/be-fsstubs.c:392 +msgid "must be superuser to use server-side lo_import()" +msgstr "" +"サーバサイドのlo_import()を使用するにはスーパーユーザでなければなりません" -#: catalog/dependency.c:2580 +#: 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:406 #, c-format -msgid "server %s" -msgstr "サーバ %s" +msgid "could not open server file \"%s\": %m" +msgstr "サーバファイル\"%s\"をオープンできませんでした: %m" -#: catalog/dependency.c:2605 +#: libpq/be-fsstubs.c:428 #, c-format -msgid "user mapping for %s" -msgstr "%s のユーザマッピング" +msgid "could not read server file \"%s\": %m" +msgstr "サーバファイル\"%s\"を読み取れませんでした: %m" + +#: libpq/be-fsstubs.c:458 +msgid "must be superuser to use server-side lo_export()" +msgstr "" +"サーバサイドのlo_export()を使用するにはスーパーユーザでなければなりません" + +#: libpq/be-fsstubs.c:459 +msgid "Anyone can use the client-side lo_export() provided by libpq." +msgstr "libpqで提供されるクライアントサイドのlo_export()は誰でも使用できます" -#: catalog/dependency.c:2639 +#: libpq/be-fsstubs.c:484 #, c-format -msgid "default privileges on new relations belonging to role %s" -msgstr "新しいリレーションに関するデフォルトの権限は、ロール %s に属します。" +msgid "could not create server file \"%s\": %m" +msgstr "サーバファイル\"%s\"を作成できませんでした: %m" -#: catalog/dependency.c:2644 +#: libpq/be-fsstubs.c:496 #, c-format -msgid "default privileges on new sequences belonging to role %s" -msgstr "新しいシーケンスに関するデフォルトの権限は、ロール %s に属します。" +msgid "could not write server file \"%s\": %m" +msgstr "サーバファイル\"%s\"を書き出せませんでした: %m" + +#: libpq/pqformat.c:436 +msgid "no data left in message" +msgstr "メッセージ内にデータが残っていません" + +#: libpq/pqformat.c:556 libpq/pqformat.c:574 libpq/pqformat.c:595 +#: utils/adt/rowtypes.c:557 utils/adt/arrayfuncs.c:1411 +msgid "insufficient data left in message" +msgstr "メッセージ内に残るデータが不十分です" + +#: libpq/pqformat.c:636 +msgid "invalid string in message" +msgstr "メッセージ内の文字列が無効です" + +#: libpq/pqformat.c:652 +msgid "invalid message format" +msgstr "メッセージの書式が無効です" -#: catalog/dependency.c:2649 +#: catalog/toasting.c:91 catalog/objectaddress.c:405 commands/tablecmds.c:202 +#: commands/tablecmds.c:1128 commands/tablecmds.c:2477 +#: commands/tablecmds.c:3798 commands/indexcmds.c:200 +#: commands/indexcmds.c:1574 commands/lockcmds.c:149 #, c-format -msgid "default privileges on new functions belonging to role %s" -msgstr "新しい関数に関するデフォルトの権限は、ロール %s に属します。" +msgid "\"%s\" is not a table" +msgstr "\"%s\"はテーブルではありません" -#: catalog/dependency.c:2655 +#: catalog/toasting.c:142 +msgid "shared tables cannot be toasted after initdb" +msgstr "initdbの後で共有テーブルをTOAST化できません" + +#: catalog/pg_shdepend.c:562 catalog/dependency.c:748 #, c-format -msgid "default privileges belonging to role %s" -msgstr "デフォルトの権限はロール %s に属します。" +msgid "cannot drop %s because it is required by the database system" +msgstr "データベースシステムが必要としているため%sを削除できません" -#: catalog/dependency.c:2663 +#: catalog/pg_shdepend.c:673 catalog/dependency.c:914 #, c-format -msgid " in schema %s" -msgstr "スキーマ %s において" +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" +"および%dのその他のオブジェクト(一覧についてはサーバログを参照してください)" +msgstr[1] "" +"\n" +"および%dのその他のオブジェクト(一覧についてはサーバログを参照してください)" -#: catalog/dependency.c:2711 +#: catalog/pg_shdepend.c:680 #, c-format -msgid "table %s" -msgstr "テーブル %s" +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" +"および、他の%dのデータベース内のオブジェクト(一覧についてはサーバログを参照し" +"てください)" +msgstr[1] "" +"\n" +"および、他の%dのデータベース内のオブジェクト(一覧についてはサーバログを参照し" +"てください)" -#: catalog/dependency.c:2715 +#: catalog/pg_shdepend.c:992 #, c-format -msgid "index %s" -msgstr "インデックス %s" +msgid "role %u was concurrently dropped" +msgstr "ロール%uの削除が同時に起きました" -#: catalog/dependency.c:2719 +#: catalog/pg_shdepend.c:1011 #, c-format -msgid "sequence %s" -msgstr "シーケンス%s" +msgid "tablespace %u was concurrently dropped" +msgstr "テーブル空間%uが同時に削除されました" -#: catalog/dependency.c:2723 +#: catalog/pg_shdepend.c:1026 #, c-format -msgid "uncataloged table %s" -msgstr "カタログにないテーブル%s" +msgid "database %u was concurrently dropped" +msgstr "データベース %u が同時に削除されました" -#: catalog/dependency.c:2727 +#: catalog/pg_shdepend.c:1070 #, c-format -msgid "toast table %s" -msgstr "TOASTテーブル%s" +msgid "owner of %s" +msgstr "%sの所有者" -#: catalog/dependency.c:2731 +#: catalog/pg_shdepend.c:1072 #, c-format -msgid "view %s" -msgstr "ビュー%s" +msgid "privileges for %s" +msgstr "%s の権限" -#: catalog/dependency.c:2735 +#. translator: %s will always be "database %s" +#: catalog/pg_shdepend.c:1080 #, c-format -msgid "composite type %s" -msgstr "複合型%s" +msgid "%d object in %s" +msgid_plural "%d objects in %s" +msgstr[0] "%2$s内の%1$d個のオブジェクト" +msgstr[1] "%2$s内の%1$d個のオブジェクト" -#: catalog/dependency.c:2740 +#: catalog/pg_shdepend.c:1191 catalog/pg_shdepend.c:1287 #, c-format -msgid "relation %s" -msgstr "リレーション%s" +msgid "" +"cannot drop objects owned by %s because they are required by the database " +"system" +msgstr "" +"データベースシステムが必要としているため%sが所有するオブジェクトを削除できま" +"せん" -#: catalog/dependency.c:2777 +#: catalog/heap.c:264 #, c-format -msgid "operator family %s for access method %s" -msgstr "アクセスメソッド%2$s用の演算子族%1$s" +msgid "permission denied to create \"%s.%s\"" +msgstr "\"%s.%s\"を作成する権限がありません" -#: utils/hash/dynahash.c:925 storage/ipc/shmem.c:190 storage/lmgr/proc.c:193 -#: storage/lmgr/proc.c:211 storage/lmgr/lock.c:610 storage/lmgr/lock.c:679 -#: storage/lmgr/lock.c:2119 storage/lmgr/lock.c:2498 storage/lmgr/lock.c:2563 -msgid "out of shared memory" -msgstr "共有メモリが不足しています" +#: catalog/heap.c:266 +msgid "System catalog modifications are currently disallowed." +msgstr "現時点ではシステムカタログは変更できません" -#: utils/mmgr/aset.c:409 +#: catalog/heap.c:389 commands/tablecmds.c:1267 commands/tablecmds.c:1684 +#: commands/tablecmds.c:4249 #, c-format -msgid "Failed while creating memory context \"%s\"." -msgstr "メモリコンテキスト\"%s\"の作成時に失敗しました" +msgid "tables can have at most %d columns" +msgstr "テーブルは最大で%d列持つことができます" -#: utils/mmgr/aset.c:588 utils/mmgr/aset.c:771 utils/mmgr/aset.c:977 +#: catalog/heap.c:406 #, c-format -msgid "Failed on request of size %lu." -msgstr "サイズ%luの要求に失敗しました" +msgid "column name \"%s\" conflicts with a system column name" +msgstr "列名\"%s\"はシステム用の列名と競合します" -#: utils/mmgr/portalmem.c:207 +#: catalog/heap.c:422 #, c-format -msgid "cursor \"%s\" already exists" -msgstr "カーソル\"%s\"はすでに存在します" +msgid "column name \"%s\" specified more than once" +msgstr "列名\"%s\"が複数指定されました" -#: utils/mmgr/portalmem.c:211 +#: catalog/heap.c:472 #, c-format -msgid "closing existing cursor \"%s\"" -msgstr "既存のカーソル\"%s\"をクローズしています" - -#: utils/mmgr/portalmem.c:419 -msgid "cannot drop active portal \"%s\"" -msgstr "アクテイブなポータル \"%s\" を削除できません" +msgid "column \"%s\" has type \"unknown\"" +msgstr "列\"%s\"は\"unknown\"型です" -#: utils/mmgr/portalmem.c:624 -msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD" -msgstr "" -"WITH HOLD 付きのカーソルを作成したトランザクションは PREPARE できません" +#: catalog/heap.c:473 +msgid "Proceeding with relation creation anyway." +msgstr "とりあえずリレーションの作成を進めます" -#: utils/adt/varchar.c:43 utils/adt/timestamp.c:92 utils/adt/varbit.c:49 -#: utils/adt/date.c:66 -msgid "invalid type modifier" -msgstr "無効な型修飾子です。" +#: catalog/heap.c:486 +#, c-format +msgid "column \"%s\" has pseudo-type %s" +msgstr "列\"%s\"は仮想型%sです" -#: utils/adt/varchar.c:48 utils/adt/varbit.c:54 +#: catalog/heap.c:516 #, c-format -msgid "length for type %s must be at least 1" -msgstr "型%sの長さは最低でも1です" +msgid "composite type %s cannot be made a member of itself" +msgstr "複合型 %s がそれ自身のメンバーになることはできません" -#: utils/adt/varchar.c:52 utils/adt/varbit.c:59 +#: catalog/heap.c:558 #, c-format -msgid "length for type %s cannot exceed %d" -msgstr "型%sの長さは%dを超えられません" +msgid "no collation was derived for column \"%s\" with collatable type %s" +msgstr "" +"照合可能な型 %2$s を持つ列 \"%1$s\" のための照合順序を決定できませんでした" -#: utils/adt/varchar.c:152 utils/adt/varchar.c:305 +#: catalog/heap.c:1011 catalog/index.c:769 commands/tablecmds.c:2317 #, c-format -msgid "value too long for type character(%d)" -msgstr "値は型character(%d)としては長すぎます" +msgid "relation \"%s\" already exists" +msgstr "リレーション\"%s\"はすでに存在します" -#: utils/adt/varchar.c:473 utils/adt/varchar.c:594 +#: catalog/heap.c:1027 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 "value too long for type character varying(%d)" -msgstr "値は型character varying(%d)としては長すぎます" +msgid "type \"%s\" already exists" +msgstr "型\"%s\"はすでに存在します" -#: utils/adt/tsquery_rewrite.c:296 -msgid "ts_rewrite query must return two tsquery columns" -msgstr "ts_rewrite問い合わせは2列のtsquery列を返さなければなりません" +#: catalog/heap.c:1028 +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 "" +"リレーションは同じ名前の関連する型を持ちます。このため既存の型と競合しない名" +"前を使用しなければなりません" -#: utils/adt/tsvector_parser.c:136 utils/adt/tsquery.c:156 -#: utils/adt/tsquery.c:392 +#: catalog/heap.c:2138 #, c-format -msgid "syntax error in tsquery: \"%s\"" -msgstr "tsquery内の構文エラー: \"%s\"" +msgid "check constraint \"%s\" already exists" +msgstr "チェック制約\"%s\"はすでに存在します" -#: utils/adt/tsvector_parser.c:137 +#: catalog/heap.c:2282 catalog/pg_constraint.c:645 commands/tablecmds.c:5323 #, c-format -msgid "syntax error in tsvector: \"%s\"" -msgstr "tsvector内の構文エラー: %s" +msgid "constraint \"%s\" for relation \"%s\" already exists" +msgstr "すでに制約\"%s\"はリレーション\"%s\"に存在します" -#: utils/adt/tsvector_parser.c:202 +#: catalog/heap.c:2286 #, c-format -msgid "there is no escaped character: \"%s\"" -msgstr "エスケープ文字がありません: \"%s\"" +msgid "merging constraint \"%s\" with inherited definition" +msgstr "継承された定義により制約 \"%s\" をマージしています" -#: utils/adt/tsvector_parser.c:319 -#, c-format -msgid "wrong position info in tsvector: \"%s\"" -msgstr "tsvector内の位置情報が間違っています: \"%s\"" +#: catalog/heap.c:2384 +msgid "cannot use column references in default expression" +msgstr "デフォルト式には列参照を使用できません" -#: utils/adt/domains.c:80 -#, c-format -msgid "type %s is not a domain" -msgstr "型%sはドメインではありません" +#: catalog/heap.c:2392 +msgid "default expression must not return a set" +msgstr "デフォルト式は集合を返してはなりません" -#: utils/adt/uuid.c:128 -#, c-format -msgid "invalid input syntax for uuid: \"%s\"" -msgstr "uuidの入力構文が無効です: \"%s\"" +#: catalog/heap.c:2400 +msgid "cannot use subquery in default expression" +msgstr "デフォルト式には副問い合わせを使用できません" + +#: catalog/heap.c:2404 +msgid "cannot use aggregate function in default expression" +msgstr "デフォルト式には集約関数を使用できません" + +#: catalog/heap.c:2408 +msgid "cannot use window function in default expression" +msgstr "デフォルト式にはウィンドウ関数を使用できません" -#: utils/adt/dbsize.c:65 utils/adt/dbsize.c:217 utils/adt/dbsize.c:288 -#: utils/adt/genfile.c:170 storage/file/copydir.c:86 -#: storage/file/copydir.c:125 access/transam/xlog.c:2858 -#: access/transam/xlog.c:3023 access/transam/xlog.c:8422 +#: catalog/heap.c:2427 rewrite/rewriteHandler.c:1030 #, c-format -msgid "could not stat file \"%s\": %m" -msgstr "ファイル\"%s\"のstatができませんでした: %m" +msgid "column \"%s\" is of type %s but default expression is of type %s" +msgstr "列\"%s\"の型は%sですが、デフォルト式の型は%sです" -#: utils/adt/dbsize.c:105 utils/adt/dbsize.c:195 +#: catalog/heap.c:2478 #, c-format -msgid "could not open tablespace directory \"%s\": %m" -msgstr "テーブル空間のディレクトリ\"%s\"をオープンできませんでした: %m" +msgid "only table \"%s\" can be referenced in check constraint" +msgstr "検査制約ではテーブル\"%s\"のみを参照することができます" -#: utils/adt/arrayfuncs.c:210 utils/adt/arrayfuncs.c:222 -msgid "missing dimension value" -msgstr "次元数がありません" +#: catalog/heap.c:2487 commands/typecmds.c:2385 +msgid "cannot use subquery in check constraint" +msgstr "チェック制約では副問い合わせを使用できません" -#: utils/adt/arrayfuncs.c:232 -msgid "missing \"]\" in array dimensions" -msgstr "配列の次元に\"]\"がありません" +#: catalog/heap.c:2491 commands/typecmds.c:2389 +msgid "cannot use aggregate function in check constraint" +msgstr "チェック制約では集約関数を使用できません" -#: utils/adt/arrayfuncs.c:240 utils/adt/arrayfuncs.c:2385 -#: utils/adt/arrayfuncs.c:2413 utils/adt/arrayfuncs.c:2428 -msgid "upper bound cannot be less than lower bound" -msgstr "上限を下限より小さくすることはできません" +#: catalog/heap.c:2495 commands/typecmds.c:2393 +msgid "cannot use window function in check constraint" +msgstr "チェック制約ではウィンドウ関数を使用できません" -#: utils/adt/arrayfuncs.c:252 utils/adt/arrayfuncs.c:278 -msgid "array value must start with \"{\" or dimension information" -msgstr "配列値は\"[\"か次元情報から始まらなければなりません" +#: catalog/heap.c:2734 +msgid "unsupported ON COMMIT and foreign key combination" +msgstr "ON COMMITと外部キーの組み合わせはサポートされていません" -#: utils/adt/arrayfuncs.c:266 -msgid "missing assignment operator" -msgstr "代入演算子がありません" +#: catalog/heap.c:2735 +#, c-format +msgid "" +"Table \"%s\" references \"%s\", but they do not have the same ON COMMIT " +"setting." +msgstr "" +"テーブル\"%s\"は\"%s\"を参照します。しかし、これらのON COMMIT設定は同一ではあ" +"りません。" -#: utils/adt/arrayfuncs.c:283 utils/adt/arrayfuncs.c:289 -msgid "array dimensions incompatible with array literal" -msgstr "配列の次元と配列リテラルと互換性がありません" +#: catalog/heap.c:2740 +msgid "cannot truncate a table referenced in a foreign key constraint" +msgstr "外部キー制約で参照されているテーブルを削除できません" -#: utils/adt/arrayfuncs.c:398 utils/adt/arrayfuncs.c:413 -#: utils/adt/arrayfuncs.c:422 utils/adt/arrayfuncs.c:436 -#: utils/adt/arrayfuncs.c:456 utils/adt/arrayfuncs.c:484 -#: utils/adt/arrayfuncs.c:489 utils/adt/arrayfuncs.c:529 -#: utils/adt/arrayfuncs.c:550 utils/adt/arrayfuncs.c:569 -#: utils/adt/arrayfuncs.c:679 utils/adt/arrayfuncs.c:688 -#: utils/adt/arrayfuncs.c:718 utils/adt/arrayfuncs.c:733 -#: utils/adt/arrayfuncs.c:786 +#: catalog/heap.c:2741 #, c-format -msgid "malformed array literal: \"%s\"" -msgstr "配列リテラルの書式が誤っています: \"%s\"" +msgid "Table \"%s\" references \"%s\"." +msgstr "テーブル\"%s\"は\"%s\"を参照します。" -#: utils/adt/arrayfuncs.c:825 utils/adt/arrayfuncs.c:1422 -#: utils/adt/arrayfuncs.c:2740 utils/adt/arrayfuncs.c:2888 -#: utils/adt/arrayfuncs.c:4636 utils/adt/arrayutils.c:93 -#: utils/adt/arrayutils.c:102 utils/adt/arrayutils.c:109 +#: catalog/heap.c:2743 #, c-format -msgid "array size exceeds the maximum allowed (%d)" -msgstr "配列の次数が上限(%d)を超えています" +msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." +msgstr "" +"同時にテーブル\"%s\"がtruncateされました。TRUNCATE ... CASCADEを使用してくだ" +"さい。" -#: utils/adt/arrayfuncs.c:1192 utils/adt/arrayfuncs.c:2856 -#: utils/adt/arrayfuncs.c:4536 utils/adt/array_userfuncs.c:424 +#: catalog/pg_type.c:241 #, c-format -msgid "invalid number of dimensions: %d" -msgstr "次数が無効です: %d" - -#: utils/adt/arrayfuncs.c:1203 -msgid "invalid array flags" -msgstr "配列フラグが無効です" +msgid "invalid type internal size %d" +msgstr "型の内部サイズ%dは無効です" -#: utils/adt/arrayfuncs.c:1211 -msgid "wrong element type" -msgstr "要素型が間違っています" +#: 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 "値渡し型でサイズが %2$d の場合、アラインメント \"%1$c\" は無効です" -#: utils/adt/arrayfuncs.c:1226 utils/adt/int.c:622 utils/adt/int.c:651 -#: utils/adt/int.c:672 utils/adt/int.c:692 utils/adt/int.c:714 -#: utils/adt/int.c:739 utils/adt/int.c:753 utils/adt/int.c:768 -#: utils/adt/int.c:903 utils/adt/int.c:924 utils/adt/int.c:951 -#: utils/adt/int.c:991 utils/adt/int.c:1012 utils/adt/int.c:1039 -#: utils/adt/int.c:1066 utils/adt/int.c:1120 utils/adt/varbit.c:1098 -#: utils/adt/varbit.c:1483 utils/adt/array_userfuncs.c:103 -#: utils/adt/array_userfuncs.c:113 utils/adt/int8.c:1196 -#: utils/adt/numeric.c:2062 utils/adt/numeric.c:2071 utils/adt/float.c:1101 -#: utils/adt/float.c:1160 utils/adt/float.c:2711 utils/adt/float.c:2727 -#: utils/adt/varlena.c:942 utils/adt/varlena.c:1915 -msgid "integer out of range" -msgstr "integerの範囲外です" +#: catalog/pg_type.c:289 +#, c-format +msgid "internal size %d is invalid for passed-by-value type" +msgstr "値渡し型の場合、内部サイズ%dは無効です" -#: utils/adt/arrayfuncs.c:1256 utils/cache/lsyscache.c:2305 +#: catalog/pg_type.c:298 catalog/pg_type.c:304 #, c-format -msgid "no binary input function available for type %s" -msgstr "型%sにはバイナリ入力関数がありません" +msgid "alignment \"%c\" is invalid for variable-length type" +msgstr "可変長型の場合、アラインメント \"%c\" は無効です" -#: utils/adt/arrayfuncs.c:1360 utils/adt/rowtypes.c:557 libpq/pqformat.c:556 -#: libpq/pqformat.c:574 libpq/pqformat.c:595 -msgid "insufficient data left in message" -msgstr "メッセージ内に残るデータが不十分です" +#: catalog/pg_type.c:312 +msgid "fixed-size types must have storage PLAIN" +msgstr "固定長型の場合は PLAIN 格納方式でなければなりません" -#: utils/adt/arrayfuncs.c:1396 +#: catalog/pg_type.c:761 #, c-format -msgid "improper binary format in array element %d" -msgstr "配列要素%dのバイナリ書式が不適切です" +msgid "could not form array type name for type \"%s\"" +msgstr "\"%s\"型向けの配列型の名前を形成できませんでした" -#: utils/adt/arrayfuncs.c:1478 utils/cache/lsyscache.c:2338 -#, c-format -msgid "no binary output function available for type %s" -msgstr "型%sにはバイナリ出力関数がありません" +#: catalog/pg_aggregate.c:100 +msgid "cannot determine transition data type" +msgstr "遷移用のデータ型を決定できません" -#: utils/adt/arrayfuncs.c:1852 -msgid "slices of fixed-length arrays not implemented" -msgstr "固定長配列の部分配列は実装されていません" +#: catalog/pg_aggregate.c:101 +msgid "" +"An aggregate using a polymorphic transition type must have at least one " +"polymorphic argument." +msgstr "" +"遷移用の型として多様型を使用する集約は多様型の引数を少なくとも1つ取らなければ" +"なりません。" -#: utils/adt/arrayfuncs.c:2025 utils/adt/arrayfuncs.c:2047 -#: utils/adt/arrayfuncs.c:2081 utils/adt/arrayfuncs.c:2367 -#: utils/adt/arrayfuncs.c:4516 utils/adt/arrayfuncs.c:4548 -#: utils/adt/arrayfuncs.c:4565 -msgid "wrong number of array subscripts" -msgstr "配列の添え字が不正な数値です" +#: catalog/pg_aggregate.c:124 +#, c-format +msgid "return type of transition function %s is not %s" +msgstr "遷移関数の戻り値型%sは%sではありません" -#: utils/adt/arrayfuncs.c:2030 utils/adt/arrayfuncs.c:2123 -#: utils/adt/arrayfuncs.c:2418 -msgid "array subscript out of range" -msgstr "配列の添え字が範囲外です" +#: 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かつ遷移用の型が入力型とバイナリ互換がない場合初期値を省略し" +"てはなりません" -#: utils/adt/arrayfuncs.c:2035 -msgid "cannot assign null value to an element of a fixed-length array" -msgstr "固定長配列の要素にNULL値を代入できません" +#: catalog/pg_aggregate.c:175 catalog/pg_proc.c:205 +msgid "cannot determine result data type" +msgstr "結果のデータ型を決定できません" -#: utils/adt/arrayfuncs.c:2321 -msgid "updates on slices of fixed-length arrays not implemented" -msgstr "固定長配列の部分配列の更新は実装されていません" +#: catalog/pg_aggregate.c:176 +msgid "" +"An aggregate returning a polymorphic type must have at least one polymorphic " +"argument." +msgstr "" +"多様型を返す集約は少なくとも1つの多様型の引数を取らなければなりません。" -#: utils/adt/arrayfuncs.c:2357 utils/adt/arrayfuncs.c:2444 -msgid "source array too small" -msgstr "元の配列が小さすぎます" +#: catalog/pg_aggregate.c:188 catalog/pg_proc.c:211 +msgid "unsafe use of pseudo-type \"internal\"" +msgstr "\"internal\"仮想型の危険な使用" -#: utils/adt/arrayfuncs.c:2995 -msgid "null array element not allowed in this context" -msgstr "この文脈ではNULLの配列要素は許されません" +#: catalog/pg_aggregate.c:189 catalog/pg_proc.c:212 +msgid "" +"A function returning \"internal\" must have at least one \"internal\" " +"argument." +msgstr "" +"\"internal\"\"を返す関数は少なくとも1つの\"internal\"型の引数を取らなければな" +"りません。" -#: utils/adt/arrayfuncs.c:3056 utils/adt/arrayfuncs.c:3263 -#: utils/adt/arrayfuncs.c:3463 -msgid "cannot compare arrays of different element types" -msgstr "要素型の異なる配列を比較できません" +#: catalog/pg_aggregate.c:197 +msgid "sort operator can only be specified for single-argument aggregates" +msgstr "ソート演算子は単一引数の集約でのみ指定可能です" -#: utils/adt/arrayfuncs.c:3079 utils/adt/arrayfuncs.c:3480 -#: utils/adt/rowtypes.c:1139 parser/parse_oper.c:260 +#: catalog/pg_aggregate.c:337 #, c-format -msgid "could not identify an equality operator for type %s" -msgstr "型%sの等価性演算子を識別できませんでした" +msgid "function %s returns a set" +msgstr "関数%sは集合を返します" -#: utils/adt/arrayfuncs.c:4414 utils/adt/arrayfuncs.c:4454 -msgid "dimension array or low bound array cannot be NULL" -msgstr "次元配列もしくは添字の下限が NULL であってはなりません" +#: catalog/pg_aggregate.c:362 +#, c-format +msgid "function %s requires run-time type coercion" +msgstr "関数%sは実行時の型強制が必要です" -#: utils/adt/arrayfuncs.c:4517 utils/adt/arrayfuncs.c:4549 -msgid "Dimension array must be one dimensional." -msgstr "次元配列は1次元でなければなりません" +#: catalog/pg_largeobject.c:116 catalog/pg_largeobject.c:176 +#: catalog/aclchk.c:647 catalog/aclchk.c:3677 catalog/aclchk.c:4368 +#: catalog/objectaddress.c:199 storage/large_object/inv_api.c:277 +#, c-format +msgid "large object %u does not exist" +msgstr "ラージオブジェクト\"%u\"は存在しません" -#: utils/adt/arrayfuncs.c:4522 utils/adt/arrayfuncs.c:4554 -msgid "wrong range of array subscripts" -msgstr "配列の添字の範囲が誤っています" +#: catalog/index.c:220 +msgid "primary keys cannot be expressions" +msgstr "プライマリキーを式にすることはできません" -#: utils/adt/arrayfuncs.c:4523 utils/adt/arrayfuncs.c:4555 -msgid "Lower bound of dimension array must be one." -msgstr "次元配列の添字の下限は1でなければなりません" +#: catalog/index.c:730 catalog/index.c:1124 +msgid "user-defined indexes on system catalog tables are not supported" +msgstr "" +"ユーザによるシステムカタログテーブルに対するインデックスの定義はサポートされ" +"ていません" -#: utils/adt/arrayfuncs.c:4528 utils/adt/arrayfuncs.c:4560 -msgid "dimension values cannot be null" -msgstr "次元値に null は許されません" +#: catalog/index.c:740 +msgid "concurrent index creation on system catalog tables is not supported" +msgstr "システムカタログテーブルの同時インデックス作成はサポートされていません" -#: utils/adt/arrayfuncs.c:4566 -msgid "Low bound array has different size than dimensions array." -msgstr "下限配列が次元配列のサイズと異なっています" +#: catalog/index.c:758 +msgid "shared indexes cannot be created after initdb" +msgstr "initdbの後に共有インデックスを作成できません" -#: utils/adt/tsquery.c:177 +#: catalog/index.c:1727 #, c-format -msgid "no operand in tsquery: \"%s\"" -msgstr "tsquery内にオペランドがありません\"%s\"" +msgid "building index \"%s\" on table \"%s\"" +msgstr "テーブル\"%2$s\"用のインデックス \"%1$s\" を構築しています" -#: utils/adt/tsquery.c:250 -#, c-format -msgid "value is too big in tsquery: \"%s\"" -msgstr "tsquery内の値が大きすぎます: \"%s\"" +#: catalog/index.c:2800 +msgid "cannot reindex temporary tables of other sessions" +msgstr "他のセッションの一時テーブルを再インデックス付けできません" -#: utils/adt/tsquery.c:255 +#: catalog/pg_enum.c:113 catalog/pg_enum.c:199 #, c-format -msgid "operand is too long in tsquery: \"%s\"" -msgstr "tsqueryのオペランドが長過ぎます: \"%s\"" +msgid "invalid enum label \"%s\"" +msgstr "列挙ラベル\"%s\"は無効です" -#: utils/adt/tsquery.c:283 +#: catalog/pg_enum.c:114 catalog/pg_enum.c:200 #, c-format -msgid "word is too long in tsquery: \"%s\"" -msgstr "tsquery内の単語が長すぎます: \"%s\"" +msgid "Labels must be %d characters or less." +msgstr "ラベルは%d文字数以内でなければなりません" -#: utils/adt/tsquery.c:512 +#: catalog/pg_enum.c:264 #, c-format -msgid "text-search query doesn't contain lexemes: \"%s\"" -msgstr "テキスト検索問い合わせが字句要素を含みません: \"%s\"" +msgid "\"%s\" is not an existing enum label" +msgstr "\"%s\" は既存の列挙型ラベルではありません" -#: utils/adt/misc.c:80 -msgid "must be superuser to signal other server processes" +#: catalog/pg_enum.c:325 +msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade" msgstr "" -"他のサーバプロセスにシグナルを送るためにはスーパーユーザでなければなりません" +"ALTER TYPE ADD BEFORE/AFTER はバイナリアップグレードでは互換性がありません" -#: utils/adt/misc.c:89 -#, c-format -msgid "PID %d is not a PostgreSQL server process" -msgstr "PID %dはPostgreSQLサーバプロセスではありません" +#: catalog/pg_proc.c:206 +msgid "" +"A function returning a polymorphic type must have at least one polymorphic " +"argument." +msgstr "" +"多様型を返す関数は少なくとも1つの多様型の引数を取らなければなりません。" -#: utils/adt/misc.c:102 storage/lmgr/proc.c:1012 +#: catalog/pg_proc.c:224 #, c-format -msgid "could not send signal to process %d: %m" -msgstr "プロセス%dにシグナルを送信できませんでした: %m" - -#: utils/adt/misc.c:126 -msgid "must be superuser to signal the postmaster" -msgstr "postmasterにシグナルを送るためにはスーパーユーザでなければなりません" +msgid "\"%s\" is already an attribute of type %s" +msgstr "\"%s\"はすでに型%sの属性です" -#: utils/adt/misc.c:131 +#: catalog/pg_proc.c:363 #, c-format -msgid "failed to send signal to postmaster: %m" -msgstr "postmasterにシグナルを送信できませんでした: %m" +msgid "function \"%s\" already exists with same argument types" +msgstr "同じ引数型を持つ関数\"%s\"はすでに存在します" -#: utils/adt/misc.c:148 -msgid "must be superuser to rotate log files" -msgstr "ログファイルをローテートさせるにはスーパーユーザでなければなりません" +#: catalog/pg_proc.c:377 catalog/pg_proc.c:399 +msgid "cannot change return type of existing function" +msgstr "既存の関数の戻り値型を変更できません" -#: utils/adt/misc.c:153 -msgid "rotation not possible because log collection not active" -msgstr "ログ収集が活動していませんのでローテーションを行うことができません" +#: 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を使用してください。" -#: utils/adt/misc.c:195 -msgid "global tablespace never has databases" -msgstr "グローバルテーブル空間にデータベースがありません" +#: catalog/pg_proc.c:400 +msgid "Row type defined by OUT parameters is different." +msgstr "OUTパラメータで定義された行型が異なります。" -#: utils/adt/misc.c:216 +#: catalog/pg_proc.c:441 #, c-format -msgid "%u is not a tablespace OID" -msgstr "%uはテーブル空間のOIDではありません" +msgid "cannot change name of input parameter \"%s\"" +msgstr "入力パラメーター \"%s\" の名称を変更できません" -#: 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 "予約されています(関数または型名にできます)" +#: catalog/pg_proc.c:465 +msgid "cannot remove parameter defaults from existing function" +msgstr "既存の関数からパラメータのデフォルト値を削除できません" -#: utils/adt/misc.c:364 -msgid "reserved" -msgstr "予約されています" +#: catalog/pg_proc.c:491 +msgid "cannot change data type of existing parameter default value" +msgstr "既存のパラメータのデフォルト値のデータ型を変更できません" -#. translator: first %s is inet or cidr -#: utils/adt/network.c:107 utils/adt/datetime.c:3543 +#: catalog/pg_proc.c:503 #, c-format -msgid "invalid input syntax for type %s: \"%s\"" -msgstr "\"%s\"型の入力構文が無効です: \"%s\"" +msgid "function \"%s\" is an aggregate function" +msgstr "関数 \"%s\" は集約関数です" -#: utils/adt/network.c:118 +#: catalog/pg_proc.c:508 #, c-format -msgid "invalid cidr value: \"%s\"" -msgstr "CIDR値が無効です: \"%s\"" +msgid "function \"%s\" is not an aggregate function" +msgstr "関数 \"%s\" は集約関数ではありません" -#: utils/adt/network.c:119 utils/adt/network.c:249 -msgid "Value has bits set to right of mask." -msgstr "値にはマスクの右側にセットされたビットがあります" +#: catalog/pg_proc.c:516 +#, c-format +msgid "function \"%s\" is a window function" +msgstr "関数 \"%s\" はウィンドウ関数です" -#: utils/adt/network.c:160 utils/adt/network.c:614 utils/adt/network.c:639 -#: utils/adt/network.c:664 +#: catalog/pg_proc.c:521 #, c-format -msgid "could not format inet value: %m" -msgstr "inet値を整形できません: %m" +msgid "function \"%s\" is not a window function" +msgstr "関数 \"%s\" はウィンドウ関数ではありません" -#. translator: %s is inet or cidr -#: utils/adt/network.c:217 +#: catalog/pg_proc.c:695 #, c-format -msgid "invalid address family in external \"%s\" value" -msgstr "外部 \"%s\" 値内のアドレスファミリが無効です" +msgid "there is no built-in function named \"%s\"" +msgstr "\"%s\"という名前の関数は組み込まれていません" -#. translator: %s is inet or cidr -#: utils/adt/network.c:224 +#: catalog/pg_proc.c:787 #, c-format -msgid "invalid bits in external \"%s\" value" -msgstr "外部 \"%s\" 値内のビットが無効です" +msgid "SQL functions cannot return type %s" +msgstr "SQL関数は型%sを返すことができません" -#. translator: %s is inet or cidr -#: utils/adt/network.c:233 +#: catalog/pg_proc.c:802 #, c-format -msgid "invalid length in external \"%s\" value" -msgstr "外部 \"%s\" 値内の長さが無効です" +msgid "SQL functions cannot have arguments of type %s" +msgstr "SQL関数は型%sの引数と取ることができません" -#: utils/adt/network.c:248 -msgid "invalid external \"cidr\" value" -msgstr "\"cidr\"の外部値が無効です" +#: catalog/catalog.c:76 +msgid "invalid fork name" +msgstr "無効な分岐名です" -#: utils/adt/network.c:370 utils/adt/network.c:397 +#: catalog/catalog.c:77 +msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"." +msgstr "有効な分岐名は\"main\"、\"fsm\"および\"vm\" です" + +#: catalog/dependency.c:589 #, c-format -msgid "invalid mask length: %d" -msgstr "マスク長が無効です: %d" +msgid "cannot drop %s because %s requires it" +msgstr "%2$sが必要としているため%1$sを削除できません" -#: utils/adt/network.c:682 +#: catalog/dependency.c:592 #, c-format -msgid "could not format cidr value: %m" -msgstr "cidr値を整形できません: %m" +msgid "You can drop %s instead." +msgstr "代わりに%sを削除できます" -#: utils/adt/network.c:1255 -msgid "cannot AND inet values of different sizes" -msgstr "サイズが異なるinet値のANDはできません" +#: catalog/dependency.c:864 +#, c-format +msgid "drop auto-cascades to %s" +msgstr "%sへの自動カスケードを削除します" -#: utils/adt/network.c:1287 -msgid "cannot OR inet values of different sizes" -msgstr "サイズが異なるinet値のORはできません" +#: catalog/dependency.c:876 catalog/dependency.c:885 +#, c-format +msgid "%s depends on %s" +msgstr "%sは%sに依存します" -#: utils/adt/network.c:1348 utils/adt/network.c:1424 -msgid "result is out of range" -msgstr "結果が範囲外です" +#: catalog/dependency.c:897 catalog/dependency.c:906 +#, c-format +msgid "drop cascades to %s" +msgstr "%sへのカスケードを削除します" -#: utils/adt/network.c:1389 -msgid "cannot subtract inet values of different sizes" -msgstr "サイズが異なるinet値の引き算はできません" +#: catalog/dependency.c:926 +#, c-format +msgid "cannot drop %s because other objects depend on it" +msgstr "他のオブジェクトが依存していますので%sを削除できません" -#: utils/adt/formatting.c:491 -msgid "invalid format specification for an interval value" -msgstr "\"tinterval\"値の書式指定が無効です" +#: catalog/dependency.c:930 catalog/dependency.c:937 +msgid "Use DROP ... CASCADE to drop the dependent objects too." +msgstr "" +"依存しているオブジェクトも削除するにはDROP ... CASCADEを使用してください" -#: utils/adt/formatting.c:492 -msgid "Intervals are not tied to specific calendar dates." -msgstr "時間間隔が特定の暦日付に結びついていません" +#: catalog/dependency.c:934 +msgid "cannot drop desired object(s) because other objects depend on them" +msgstr "他のオブジェクトが依存しているため希望するオブジェクトを削除できません" -#: utils/adt/formatting.c:1059 -msgid "\"EEEE\" must be the last pattern used" -msgstr "\"EEEE\" は最終パターンでなければなりません。" +#. 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] "他の %d 個のオブジェクトへのカスケードを削除します" +msgstr[1] "他の %d 個のオブジェクトへのカスケードを削除します" -#: utils/adt/formatting.c:1067 -msgid "\"9\" must be ahead of \"PR\"" -msgstr "\"9\"は\"PR\"の前になければなりません" +#: catalog/dependency.c:2177 +#, c-format +msgid " column %s" +msgstr " 列 %s" -#: utils/adt/formatting.c:1083 -msgid "\"0\" must be ahead of \"PR\"" -msgstr "\"0\"は\"PR\"の前になければなりません" +#: catalog/dependency.c:2183 +#, c-format +msgid "function %s" +msgstr "関数 %s" -#: utils/adt/formatting.c:1109 -msgid "multiple decimal points" -msgstr "複数の小数点があります" +#: catalog/dependency.c:2188 +#, c-format +msgid "type %s" +msgstr "型 %s" -#: utils/adt/formatting.c:1113 utils/adt/formatting.c:1196 -msgid "cannot use \"V\" and decimal point together" -msgstr "\"V\"と小数点を混在できません" +#: catalog/dependency.c:2218 +#, c-format +msgid "cast from %s to %s" +msgstr "%sから%sへのキャスト" -#: utils/adt/formatting.c:1125 -msgid "cannot use \"S\" twice" -msgstr "\"S\" は1回しか使用できません" +#: catalog/dependency.c:2238 +#, c-format +msgid "collation %s" +msgstr "照合順序 %s" -#: utils/adt/formatting.c:1129 -msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" -msgstr "\"S\"と\"PL\"/\"MI\"/\"SG\"/\"PR\"を混在できません" +#: catalog/dependency.c:2262 +#, c-format +msgid "constraint %s on %s" +msgstr "%2$s に対する制約 %1$s" -#: utils/adt/formatting.c:1149 -msgid "cannot use \"S\" and \"MI\" together" -msgstr "\"S\"と\"MI\"を混在できません" +#: catalog/dependency.c:2268 +#, c-format +msgid "constraint %s" +msgstr "制約 %s" -#: utils/adt/formatting.c:1159 -msgid "cannot use \"S\" and \"PL\" together" -msgstr "\"S\"と\"PL\"を混在できません" +#: catalog/dependency.c:2285 +#, c-format +msgid "conversion %s" +msgstr "変換 %s" -#: utils/adt/formatting.c:1169 -msgid "cannot use \"S\" and \"SG\" together" -msgstr "\"S\"と\"SG\"を混在できません" +#: catalog/dependency.c:2322 +#, c-format +msgid "default for %s" +msgstr "%s用のデフォルト" -#: utils/adt/formatting.c:1178 -msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" -msgstr "\"PR\"と\"S\"/\"PL\"/\"MI\"/\"SG\"を混在できません" +#: catalog/dependency.c:2339 +#, c-format +msgid "language %s" +msgstr "言語%s" -#: utils/adt/formatting.c:1204 -msgid "cannot use \"EEEE\" twice" -msgstr "\"EEEE\" は1回しか使用できません" +#: catalog/dependency.c:2345 +#, c-format +msgid "large object %u" +msgstr "ラージオブジェクト %u" -#: utils/adt/formatting.c:1210 -msgid "\"EEEE\" is incompatible with other formats" -msgstr "\"EEEE\" が他のフォーマットと互換性がありません。" +#: catalog/dependency.c:2350 +#, c-format +msgid "operator %s" +msgstr "演算子%s" -#: utils/adt/formatting.c:1211 -msgid "" -"\"EEEE\" may only be used together with digit and decimal point patterns." -msgstr "\"EEEE\" は数値または小数点パターンと共に指定してください。" +#: catalog/dependency.c:2382 +#, c-format +msgid "operator class %s for access method %s" +msgstr "アクセスメソッド%2$s用の演算子クラス%1$s" -#: utils/adt/formatting.c:1411 +#: catalog/dependency.c:2433 #, c-format -msgid "\"%s\" is not a number" -msgstr "\"%s\"は数値ではありません" +msgid "operator %d (%s, %s) of %s: %s" +msgstr "%4$s の演算子 %1$d (%2$s, %3$s): %5$s" -#: utils/adt/formatting.c:1788 -msgid "invalid combination of date conventions" -msgstr "日付表現の組み合わせが無効です" +#: 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" -#: utils/adt/formatting.c:1789 -msgid "" -"Do not mix Gregorian and ISO week date conventions in a formatting template." -msgstr "" -"書式テンプレートの中では、グレゴリア暦と ISO の週日表現を混在させてはなりませ" -"ん。" +#: catalog/dependency.c:2524 +#, c-format +msgid "rule %s on " +msgstr "のルール %s" -#: utils/adt/formatting.c:1806 +#: catalog/dependency.c:2559 #, c-format -msgid "conflicting values for \"%s\" field in formatting string" -msgstr "\"%s\" フィールドの値と書式文字列が競合しています" +msgid "trigger %s on " +msgstr "トリガ %s、対象:" -#: utils/adt/formatting.c:1808 -msgid "This value contradicts a previous setting for the same field type." -msgstr "この値を同じフィールド型にするにあたり、直前の設定と矛盾しています" +#: catalog/dependency.c:2576 +#, c-format +msgid "schema %s" +msgstr "スキーマ %s" -#: utils/adt/formatting.c:1869 +#: catalog/dependency.c:2589 #, c-format -msgid "source string too short for \"%s\" formatting field" -msgstr "書式フィールド \"%s\" で、元の文字列が短すぎます" +msgid "text search parser %s" +msgstr "テキスト検索パーサ %s" -#: utils/adt/formatting.c:1871 +#: catalog/dependency.c:2604 #, c-format -msgid "Field requires %d characters, but only %d remain." -msgstr "フィールドには %d 文字必要ですが、%d 文字しか残っていません" +msgid "text search dictionary %s" +msgstr "テキスト検索辞書 %s" -#: utils/adt/formatting.c:1874 utils/adt/formatting.c:1888 -msgid "" -"If your source string is not fixed-width, try using the \"FM\" modifier." -msgstr "元の文字列が固定長でない場合は、修飾子 \"FM\" を試してみてください" +#: catalog/dependency.c:2619 +#, c-format +msgid "text search template %s" +msgstr "テキスト検索テンプレート %s" -#: utils/adt/formatting.c:1884 utils/adt/formatting.c:1897 -#: utils/adt/formatting.c:2027 +#: catalog/dependency.c:2634 #, c-format -msgid "invalid value \"%s\" for \"%s\"" -msgstr " \"%2$s\" へセットするための値 \"%1$s\" が無効です" +msgid "text search configuration %s" +msgstr "テキスト検索設定 %s" -#: utils/adt/formatting.c:1886 +#: catalog/dependency.c:2642 #, c-format -msgid "Field requires %d characters, but only %d could be parsed." -msgstr "" -"このフィールドには %d 文字必要ですが、%d 文字しか検出されませんでした。" +msgid "role %s" +msgstr "ロール %s" -#: utils/adt/formatting.c:1899 -msgid "Value must be an integer." -msgstr "ハッシュプロシージャは整数を返さなければなりません" +#: catalog/dependency.c:2655 +#, c-format +msgid "database %s" +msgstr "データベース %s" -#: utils/adt/formatting.c:1904 +#: catalog/dependency.c:2667 #, c-format -msgid "value for \"%s\" in source string is out of range" -msgstr "もとの文字列において \"%s\" のための値が範囲外です" +msgid "tablespace %s" +msgstr "テーブル空間 %s" -#: utils/adt/formatting.c:1906 +#: catalog/dependency.c:2676 #, c-format -msgid "Value must be in the range %d to %d." -msgstr "値は %d から %d までの範囲である必要があります。" +msgid "foreign-data wrapper %s" +msgstr "外部データラッパー %s" -#: utils/adt/formatting.c:2029 -msgid "The given value did not match any of the allowed values for this field." -msgstr "与えられた値がこの項目に対して許されるいずれの値ともマッチしません" +#: catalog/dependency.c:2685 +#, c-format +msgid "server %s" +msgstr "サーバ %s" -#: utils/adt/formatting.c:2585 -msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date" -msgstr "to_date では \"TZ\"/\"tz\" 形式のパターンをサポートしていません" +#: catalog/dependency.c:2710 +#, c-format +msgid "user mapping for %s" +msgstr "%s のユーザマッピング" -#: utils/adt/formatting.c:2689 -msgid "invalid input string for \"Y,YYY\"" -msgstr " \"Y,YYY\" にセットするための入力文字列が有効ではありません" +#: catalog/dependency.c:2744 +#, c-format +msgid "default privileges on new relations belonging to role %s" +msgstr "新しいリレーションに関するデフォルトの権限は、ロール %s に属します。" -#: utils/adt/formatting.c:2956 utils/adt/formatting.c:2988 -#: utils/adt/formatting.c:3056 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 utils/adt/nabstime.c:480 -#: utils/adt/nabstime.c:523 utils/adt/nabstime.c:553 utils/adt/nabstime.c:596 -#: utils/adt/date.c:880 utils/adt/date.c:927 utils/adt/date.c:1483 -#: utils/adt/date.c:1520 utils/adt/date.c:2394 utils/adt/xml.c:1711 -#: utils/adt/xml.c:1718 utils/adt/xml.c:1738 utils/adt/xml.c:1745 -msgid "timestamp out of range" -msgstr "timestampの範囲外です" +#: catalog/dependency.c:2749 +#, c-format +msgid "default privileges on new sequences belonging to role %s" +msgstr "新しいシーケンスに関するデフォルトの権限は、ロール %s に属します。" -#: utils/adt/formatting.c:3206 +#: catalog/dependency.c:2754 #, c-format -msgid "hour \"%d\" is invalid for the 12-hour clock" -msgstr "12時間形式では \"%d\" 時は無効です" +msgid "default privileges on new functions belonging to role %s" +msgstr "新しい関数に関するデフォルトの権限は、ロール %s に属します。" -#: utils/adt/formatting.c:3208 -msgid "Use the 24-hour clock, or give an hour between 1 and 12." -msgstr "24時間形式を使うか、もしくは 1 から 12 の間で指定してください" +#: catalog/dependency.c:2760 +#, c-format +msgid "default privileges belonging to role %s" +msgstr "デフォルトの権限はロール %s に属します。" -#: utils/adt/formatting.c:3246 +#: catalog/dependency.c:2768 #, c-format -msgid "inconsistent use of year %04d and \"BC\"" -msgstr "年%04dと\"BC\"の使用には一貫性がありません" +msgid " in schema %s" +msgstr "スキーマ %s において" -#: utils/adt/formatting.c:3293 -msgid "cannot calculate day of year without year information" -msgstr "年の情報なしでは年内日数を計算できません" +#: catalog/dependency.c:2785 +#, c-format +msgid "extension %s" +msgstr "拡張機能 %s" -#: utils/adt/formatting.c:4151 -msgid "\"EEEE\" not supported for input" -msgstr "\"EEEE\" は入力ではサポートされていません" +#: catalog/dependency.c:2843 +#, c-format +msgid "table %s" +msgstr "テーブル %s" -#: utils/adt/formatting.c:4163 -msgid "\"RN\" not supported for input" -msgstr "\"RN\" は入力ではサポートされていません" +#: catalog/dependency.c:2847 +#, c-format +msgid "index %s" +msgstr "インデックス %s" -#: utils/adt/pseudotypes.c:94 -msgid "cannot accept a value of type any" -msgstr "型anyの値を受け付けられません" +#: catalog/dependency.c:2851 +#, c-format +msgid "sequence %s" +msgstr "シーケンス%s" -#: utils/adt/pseudotypes.c:107 -msgid "cannot display a value of type any" -msgstr "型anyの値を表示できません" +#: catalog/dependency.c:2855 +#, c-format +msgid "uncataloged table %s" +msgstr "カタログにないテーブル%s" -#: utils/adt/pseudotypes.c:121 utils/adt/pseudotypes.c:149 -msgid "cannot accept a value of type anyarray" -msgstr "型anyarrayの値を受け付けられません" +#: catalog/dependency.c:2859 +#, c-format +msgid "toast table %s" +msgstr "TOASTテーブル%s" -#: utils/adt/pseudotypes.c:174 -msgid "cannot accept a value of type anyenum" -msgstr "anyenum型の値を受け付けられません" +#: catalog/dependency.c:2863 +#, c-format +msgid "view %s" +msgstr "ビュー%s" -#: utils/adt/pseudotypes.c:224 -msgid "cannot accept a value of type trigger" -msgstr "型triggerの値を受け付けられません" +#: catalog/dependency.c:2867 +#, c-format +msgid "composite type %s" +msgstr "複合型%s" -#: utils/adt/pseudotypes.c:237 -msgid "cannot display a value of type trigger" -msgstr "型triggerの値を表示できません" +#: catalog/dependency.c:2871 +#, c-format +msgid "foreign table %s" +msgstr "外部テーブル %s" -#: utils/adt/pseudotypes.c:251 -msgid "cannot accept a value of type language_handler" -msgstr "型language_handlerの値を受け付けられません" +#: catalog/dependency.c:2876 +#, c-format +msgid "relation %s" +msgstr "リレーション%s" -#: utils/adt/pseudotypes.c:264 -msgid "cannot display a value of type language_handler" -msgstr "型language_handlerの値を表示できません" +#: catalog/dependency.c:2913 +#, c-format +msgid "operator family %s for access method %s" +msgstr "アクセスメソッド%2$s用の演算子族%1$s" -#: utils/adt/pseudotypes.c:278 -msgid "cannot accept a value of type internal" -msgstr "型intervalの値を受け付けられません" +#: catalog/pg_constraint.c:654 commands/typecmds.c:2320 +#, c-format +msgid "constraint \"%s\" for domain \"%s\" already exists" +msgstr "ドメイン\"%2$s\"の制約\"%1$s\"はすでに存在します" -#: utils/adt/pseudotypes.c:291 -msgid "cannot display a value of type internal" -msgstr "型intervalの値を表示できません" +#: catalog/pg_constraint.c:773 +#, c-format +msgid "table \"%s\" has multiple constraints named \"%s\"" +msgstr "テーブル\"%s\"には複数の\"%s\"という名前の制約があります" -#: utils/adt/pseudotypes.c:305 -msgid "cannot accept a value of type opaque" -msgstr "型opaqueの値を受け付けられません" +#: catalog/pg_constraint.c:785 +#, c-format +msgid "constraint \"%s\" for table \"%s\" does not exist" +msgstr "テーブル\"%2$s\"の制約\"%1$s\"は存在しません" -#: utils/adt/pseudotypes.c:318 -msgid "cannot display a value of type opaque" -msgstr "型opaqueの値を表示できません" +#: catalog/aclchk.c:200 +msgid "grant options can only be granted to roles" +msgstr "グラントオプションはロールにのみ与えることができます" -#: utils/adt/pseudotypes.c:332 -msgid "cannot accept a value of type anyelement" -msgstr "型anyelementの値を受け付けられません" +#: catalog/aclchk.c:316 +#, c-format +msgid "no privileges were granted for column \"%s\" of relation \"%s\"" +msgstr "リレーション \"%2$s\" のカラム \"%1$s\" には権限が付与されませんでした" -#: utils/adt/pseudotypes.c:345 -msgid "cannot display a value of type anyelement" -msgstr "型anyelementの値を表示できません" +#: catalog/aclchk.c:321 +#, c-format +msgid "no privileges were granted for \"%s\"" +msgstr "\"%s\"には権限が付与されませんでした" -#: utils/adt/pseudotypes.c:358 -msgid "cannot accept a value of type anynonarray" -msgstr "型anynonarrayの値を受け付けられません" +#: catalog/aclchk.c:329 +#, c-format +msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" +msgstr "" +"リレーション \"%2$s\" のカラム \"%1$s\" には全ての権限が付与されたわけではあ" +"りません" -#: utils/adt/pseudotypes.c:371 -msgid "cannot display a value of type anynonarray" -msgstr "型anynonarrayの値を表示できません" +#: catalog/aclchk.c:334 +#, c-format +msgid "not all privileges were granted for \"%s\"" +msgstr "\"%s\"には全ての権限が付与されたわけではありません" -#: utils/adt/pseudotypes.c:384 -msgid "cannot accept a value of a shell type" -msgstr "シェル型の値を受け付けられません" +#: catalog/aclchk.c:345 +#, c-format +msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" +msgstr "" +"リレーション \"%2$s\" のカラム \"%1$s\" からは権限が剥奪できなかった可能性が" +"あります" -#: utils/adt/pseudotypes.c:397 -msgid "cannot display a value of a shell type" -msgstr "シェル型の値を表示できません" +#: catalog/aclchk.c:350 +#, c-format +msgid "no privileges could be revoked for \"%s\"" +msgstr "\"%s\"の権限を剥奪できなかった可能性があります" -#: utils/adt/int.c:162 -msgid "int2vector has too many elements" -msgstr "int2vectorの要素数が多すぎます" +#: catalog/aclchk.c:358 +#, c-format +msgid "" +"not all privileges could be revoked for column \"%s\" of relation \"%s\"" +msgstr "" +"リレーション \"%2$s\" のカラム \"%1$s\" からは全ての権限が剥奪できたわけでは" +"ありません" -#: utils/adt/int.c:236 -msgid "invalid int2vector data" -msgstr "int2vectorデータが無効です" +#: catalog/aclchk.c:363 +#, c-format +msgid "not all privileges could be revoked for \"%s\"" +msgstr "\"%s\"の全ての権限を取り上げられませんでした" -#: utils/adt/int.c:242 utils/adt/oid.c:212 utils/adt/oid.c:292 -msgid "oidvector has too many elements" -msgstr "oidvectorの要素が多すぎます" +#: catalog/aclchk.c:442 catalog/aclchk.c:891 +#, c-format +msgid "invalid privilege type %s for relation" +msgstr "リレーションでは権限のタイプ %s は無効です" -#: utils/adt/int.c:348 utils/adt/int.c:784 utils/adt/int.c:813 -#: utils/adt/int.c:834 utils/adt/int.c:854 utils/adt/int.c:882 -#: utils/adt/int.c:1135 utils/adt/int8.c:1221 utils/adt/numeric.c:2163 -#: utils/adt/numeric.c:2174 utils/adt/float.c:1119 utils/adt/float.c:1177 -msgid "smallint out of range" -msgstr "smallintの範囲外です" +#: catalog/aclchk.c:446 catalog/aclchk.c:895 +#, c-format +msgid "invalid privilege type %s for sequence" +msgstr "シーケンスでは権限のタイプ %s は無効です" -#: utils/adt/int.c:728 utils/adt/int.c:869 utils/adt/int.c:965 -#: utils/adt/int.c:1053 utils/adt/int.c:1079 utils/adt/int.c:1099 -#: utils/adt/geo_ops.c:4121 utils/adt/timestamp.c:2876 utils/adt/cash.c:524 -#: utils/adt/cash.c:575 utils/adt/cash.c:624 utils/adt/cash.c:676 -#: utils/adt/cash.c:726 utils/adt/int8.c:597 utils/adt/int8.c:644 -#: utils/adt/int8.c:820 utils/adt/int8.c:916 utils/adt/int8.c:1004 -#: utils/adt/int8.c:1100 utils/adt/numeric.c:4298 utils/adt/numeric.c:4581 -#: utils/adt/float.c:764 utils/adt/float.c:828 utils/adt/float.c:2470 -#: utils/adt/float.c:2533 -msgid "division by zero" -msgstr "0 による除算が行われました" +#: catalog/aclchk.c:450 +#, c-format +msgid "invalid privilege type %s for database" +msgstr "データベースでは権限の他タイプ %s は無効です" -#: utils/adt/int.c:1323 utils/adt/timestamp.c:4712 utils/adt/timestamp.c:4793 -#: utils/adt/int8.c:1358 -msgid "step size cannot equal zero" -msgstr "ステップ数をゼロにすることはできません" +#: catalog/aclchk.c:454 catalog/aclchk.c:899 +#, c-format +msgid "invalid privilege type %s for function" +msgstr "関数では権限のタイプ %s は無効です" -#: utils/adt/oid.c:43 utils/adt/oid.c:57 utils/adt/oid.c:63 utils/adt/oid.c:84 +#: catalog/aclchk.c:458 #, c-format -msgid "invalid input syntax for type oid: \"%s\"" -msgstr "型oidの入力構文が無効です: \"%s\"" +msgid "invalid privilege type %s for language" +msgstr "言語では権限のタイプ %s は無効です" -#: utils/adt/oid.c:69 utils/adt/oid.c:107 +#: catalog/aclchk.c:462 #, c-format -msgid "value \"%s\" is out of range for type oid" -msgstr "値\"%s\"は型oidの範囲外です" +msgid "invalid privilege type %s for large object" +msgstr "ラージオブジェクトに対して権限のタイプ %s は無効です" -#: utils/adt/oid.c:286 -msgid "invalid oidvector data" -msgstr "oidvectorデータが無効です" +#: catalog/aclchk.c:466 +#, c-format +msgid "invalid privilege type %s for schema" +msgstr "スキーマでは権限のタイプ %s は無効です" -#: utils/adt/acl.c:164 utils/adt/name.c:87 -msgid "identifier too long" -msgstr "識別子が長すぎます" +#: catalog/aclchk.c:470 +#, c-format +msgid "invalid privilege type %s for tablespace" +msgstr "テーブルスペースでは権限のタイプ %s は無効です" -#: utils/adt/acl.c:165 utils/adt/name.c:88 +#: catalog/aclchk.c:474 #, c-format -msgid "Identifier must be less than %d characters." -msgstr "識別子は%d文字より短くなければなりません。" +msgid "invalid privilege type %s for foreign-data wrapper" +msgstr "外部データラッパーでは権限のタイプ %s は無効です" -#: utils/adt/acl.c:251 +#: catalog/aclchk.c:478 #, c-format -msgid "unrecognized key word: \"%s\"" -msgstr "キーワードが不明です: \"%s\"" +msgid "invalid privilege type %s for foreign server" +msgstr "外部サーバでは権限のタイプ %s は無効です" -#: utils/adt/acl.c:252 -msgid "ACL key word must be \"group\" or \"user\"." -msgstr "ACLキーワードは\"group\"または\"user\"でなければなりません。" +#: catalog/aclchk.c:517 +msgid "column privileges are only valid for relations" +msgstr "リレーションでは権限のタイプ %s は無効です" -#: utils/adt/acl.c:257 -msgid "missing name" -msgstr "名前がありません" +#: catalog/aclchk.c:833 catalog/aclchk.c:841 commands/collationcmds.c:93 +#: commands/foreigncmds.c:386 commands/foreigncmds.c:395 +#: 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/sequence.c:1183 commands/sequence.c:1191 +#: 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/extension.c:1248 commands/extension.c:1256 +#: commands/extension.c:1264 commands/extension.c:2473 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/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/typecmds.c:282 +msgid "conflicting or redundant options" +msgstr "競合するオプション、あるいは余計なオプションがあります" -#: utils/adt/acl.c:258 -msgid "A name must follow the \"group\" or \"user\" key word." -msgstr "\"group\"または\"user\"キーワードの後には名前が必要です。" +#: catalog/aclchk.c:932 +msgid "default privileges cannot be set for columns" +msgstr "デフォルト権限は列には設定できません" -#: utils/adt/acl.c:264 -msgid "missing \"=\" sign" -msgstr "\"=\"記号がありません" +#: catalog/aclchk.c:1693 catalog/objectaddress.c:398 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 commands/tablecmds.c:208 +#: commands/tablecmds.c:2246 commands/tablecmds.c:2493 +#: commands/tablecmds.c:8932 commands/sequence.c:1035 +#, c-format +msgid "\"%s\" is not a sequence" +msgstr "\"%s\"はシーケンスではありません" -#: utils/adt/acl.c:317 +#: catalog/aclchk.c:1731 #, c-format -msgid "invalid mode character: must be one of \"%s\"" -msgstr "モード文字が無効です: \"%s\"の一つでなければなりません" +msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" +msgstr "シーケンス \"%s\" では USAGE, SELECT, UPDATE 権限のみをサポートします" -#: utils/adt/acl.c:339 -msgid "a name must follow the \"/\" sign" -msgstr "\"/\"記号の後には名前が必要です" +#: catalog/aclchk.c:1748 +msgid "invalid privilege type USAGE for table" +msgstr "テーブルでは権限タイプ USAGE は無効です" -#: utils/adt/acl.c:347 +#: catalog/aclchk.c:1913 #, c-format -msgid "defaulting grantor to user ID %u" -msgstr "権限付与者をデフォルトのユーザID %uにしています" +msgid "invalid privilege type %s for column" +msgstr "カラムでは権限タイプ %s は無効です" -#: utils/adt/acl.c:538 -msgid "ACL array contains wrong data type" -msgstr "ACL配列に不正なデータ型があります。" +#: catalog/aclchk.c:1926 +#, c-format +msgid "sequence \"%s\" only supports SELECT column privileges" +msgstr "シーケンス \"%s\" では USAGE, SELECT, UPDATE のみをサポートします" -#: utils/adt/acl.c:542 -msgid "ACL arrays must be one-dimensional" -msgstr "ACL配列は1次元の配列でなければなりません" +#: catalog/aclchk.c:2510 +#, c-format +msgid "language \"%s\" is not trusted" +msgstr "言語\"%s\"は信頼されていません" -#: utils/adt/acl.c:546 -msgid "ACL arrays must not contain null values" -msgstr "ACL配列にはNULL値を含めてはいけません" +#: catalog/aclchk.c:2512 +msgid "Only superusers can use untrusted languages." +msgstr "スーパーユーザのみが信頼されない言語を使用することができます" -#: utils/adt/acl.c:570 -msgid "extra garbage at the end of the ACL specification" -msgstr "ACL指定の後に余計なごみがあります" +#: catalog/aclchk.c:3019 +#, c-format +msgid "unrecognized privilege type \"%s\"" +msgstr "権限タイプ \"%s\" を認識できません" -#: utils/adt/acl.c:1127 -msgid "grant options cannot be granted back to your own grantor" -msgstr "グラントオプションでその権限付与者に権限を戻すことはできません" +#: catalog/aclchk.c:3068 +#, c-format +msgid "permission denied for column %s" +msgstr "カラム %s への権限がありません" -#: utils/adt/acl.c:1188 -msgid "dependent privileges exist" -msgstr "依存する権限が存在します" +#: catalog/aclchk.c:3070 +#, c-format +msgid "permission denied for relation %s" +msgstr "リレーション %s への権限がありません" -#: utils/adt/acl.c:1189 -msgid "Use CASCADE to revoke them too." -msgstr "これらも取り上げるにはCASCADEを使用してください" +#: catalog/aclchk.c:3072 commands/sequence.c:550 commands/sequence.c:749 +#: commands/sequence.c:791 commands/sequence.c:827 commands/sequence.c:1470 +#, c-format +msgid "permission denied for sequence %s" +msgstr "シーケンス%sに対する権限がありません" -#: utils/adt/acl.c:1468 -msgid "aclinsert is no longer supported" -msgstr "aclinsertはもうサポートされていません" +#: catalog/aclchk.c:3074 +#, c-format +msgid "permission denied for database %s" +msgstr "データベース %s への権限がありません" -#: utils/adt/acl.c:1478 -msgid "aclremove is no longer supported" -msgstr "aclremoveはもうサポートされていません" +#: catalog/aclchk.c:3076 +#, c-format +msgid "permission denied for function %s" +msgstr "関数 %s への権限がありません" -#: utils/adt/acl.c:1564 utils/adt/acl.c:1618 +#: catalog/aclchk.c:3078 #, c-format -msgid "unrecognized privilege type: \"%s\"" -msgstr "権限種類が不明です: \"%s\"" +msgid "permission denied for operator %s" +msgstr "演算子 %s への権限がありません" -#: utils/adt/acl.c:3364 utils/adt/regproc.c:118 utils/adt/regproc.c:139 -#: utils/adt/regproc.c:289 +#: catalog/aclchk.c:3080 #, c-format -msgid "function \"%s\" does not exist" -msgstr "関数\"%s\"は存在しません" +msgid "permission denied for type %s" +msgstr "型 %s への権限がありません" -#: utils/adt/acl.c:4635 +#: catalog/aclchk.c:3082 #, c-format -msgid "must be member of role \"%s\"" -msgstr "ロール\"%s\"のメンバでなければなりません" +msgid "permission denied for language %s" +msgstr "言語 %s への権限がありません" -#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:4242 utils/adt/geo_ops.c:5159 -msgid "too many points requested" -msgstr "要求されたポイントが多すぎます" +#: catalog/aclchk.c:3084 +#, c-format +msgid "permission denied for large object %s" +msgstr "ラージオブジェクト %s に対する権限がありません" -#: utils/adt/geo_ops.c:317 -msgid "could not format \"path\" value" -msgstr "\"path\"の値を整形できませんでした" +#: catalog/aclchk.c:3086 +#, c-format +msgid "permission denied for schema %s" +msgstr "スキーマ %s への権限がありません" -#: utils/adt/geo_ops.c:392 +#: catalog/aclchk.c:3088 #, c-format -msgid "invalid input syntax for type box: \"%s\"" -msgstr "型boxの入力構文が無効です: \"%s\"" +msgid "permission denied for operator class %s" +msgstr "演算子クラス%sに権限がありません" -#: utils/adt/geo_ops.c:956 +#: catalog/aclchk.c:3090 #, c-format -msgid "invalid input syntax for type line: \"%s\"" -msgstr "型lineの入力構文が無効です: \"%s\"" +msgid "permission denied for operator family %s" +msgstr "演算子族%sに権限がありません" -#: 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\"はまだ実装されていません" +#: catalog/aclchk.c:3092 +#, c-format +msgid "permission denied for collation %s" +msgstr "照合順序 %s への権限がありません" -#: utils/adt/geo_ops.c:1404 utils/adt/geo_ops.c:1427 +#: catalog/aclchk.c:3094 #, c-format -msgid "invalid input syntax for type path: \"%s\"" -msgstr "型pathの入力構文が無効です: \"%s\"" +msgid "permission denied for conversion %s" +msgstr "変換%sに権限がありません" -#: utils/adt/geo_ops.c:1466 -msgid "invalid number of points in external \"path\" value" -msgstr "\"path\"の外部値におけるポイント数が無効です" +#: catalog/aclchk.c:3096 +#, c-format +msgid "permission denied for tablespace %s" +msgstr "テーブル空間%sに権限がありません" -#: utils/adt/geo_ops.c:1807 +#: catalog/aclchk.c:3098 #, c-format -msgid "invalid input syntax for type point: \"%s\"" -msgstr "型pointの入力構文が無効です: \"%s\"" +msgid "permission denied for text search dictionary %s" +msgstr "テキスト検索辞書%sに権限がありません" -#: utils/adt/geo_ops.c:2035 +#: catalog/aclchk.c:3100 #, c-format -msgid "invalid input syntax for type lseg: \"%s\"" -msgstr "型lsegの入力構文が無効です: \"%s\"" +msgid "permission denied for text search configuration %s" +msgstr "テキスト検索設定%sに権限がありません" -#: utils/adt/geo_ops.c:2639 -msgid "function \"dist_lb\" not implemented" -msgstr "関数\"dist_lb\"は実装されていません" +#: catalog/aclchk.c:3102 +#, c-format +msgid "permission denied for foreign-data wrapper %s" +msgstr "外部データラッパー %s への権限がありません" -#: utils/adt/geo_ops.c:3152 -msgid "function \"close_lb\" not implemented" -msgstr "関数\"close_lb\"は実装されていません" +#: catalog/aclchk.c:3104 +#, c-format +msgid "permission denied for foreign server %s" +msgstr "外部サーバ %s への権限がありません" -#: utils/adt/geo_ops.c:3441 -msgid "cannot create bounding box for empty polygon" -msgstr "空の多角形に対する境界矩形を作成できません" +#: catalog/aclchk.c:3106 +#, c-format +msgid "permission denied for extension %s" +msgstr "拡張機能%s への権限がありません" -#: utils/adt/geo_ops.c:3465 utils/adt/geo_ops.c:3477 +#: catalog/aclchk.c:3112 catalog/aclchk.c:3114 #, c-format -msgid "invalid input syntax for type polygon: \"%s\"" -msgstr "型polygonの入力構文が無効です: \"%s\"" +msgid "must be owner of relation %s" +msgstr "リレーション%sの所有者でなければなりません" -#: utils/adt/geo_ops.c:3517 -msgid "invalid number of points in external \"polygon\" value" -msgstr "\"polygon\"の外部値のポイント数が無効です" +#: catalog/aclchk.c:3116 +#, c-format +msgid "must be owner of sequence %s" +msgstr "シーケンス%sの所有者でなければなりません" -#: utils/adt/geo_ops.c:4040 -msgid "function \"poly_distance\" not implemented" -msgstr "関数\"poly_distance\"は実装されていません" +#: catalog/aclchk.c:3118 +#, c-format +msgid "must be owner of database %s" +msgstr "データベース%sの所有者でなければなりません" -#: utils/adt/geo_ops.c:4352 -msgid "function \"path_center\" not implemented" -msgstr "関数\"path_center\"は実装されていません" +#: catalog/aclchk.c:3120 +#, c-format +msgid "must be owner of function %s" +msgstr "関数%sの所有者でなければなりません" -#: utils/adt/geo_ops.c:4369 -msgid "open path cannot be converted to polygon" -msgstr "開経路を多角形に変換できません" +#: catalog/aclchk.c:3122 +#, c-format +msgid "must be owner of operator %s" +msgstr "演算子%sの所有者でなければなりません" -#: utils/adt/geo_ops.c:4536 utils/adt/geo_ops.c:4546 utils/adt/geo_ops.c:4561 -#: utils/adt/geo_ops.c:4567 +#: catalog/aclchk.c:3124 #, c-format -msgid "invalid input syntax for type circle: \"%s\"" -msgstr "型circleの入力構文が無効です: \"%s\"" +msgid "must be owner of type %s" +msgstr "型%sの所有者でなければなりません" -#: utils/adt/geo_ops.c:4589 utils/adt/geo_ops.c:4597 -msgid "could not format \"circle\" value" -msgstr "\"circle\"値を整形できません" +#: catalog/aclchk.c:3126 +#, c-format +msgid "must be owner of language %s" +msgstr "言語%sの所有者でなければなりません" -#: utils/adt/geo_ops.c:4624 -msgid "invalid radius in external \"circle\" value" -msgstr "\"circle\"の外部値の半径が無効です" +#: catalog/aclchk.c:3128 +#, c-format +msgid "must be owner of large object %s" +msgstr "ラージオブジェクト %s の所有者でなければなりません" -#: utils/adt/geo_ops.c:5145 -msgid "cannot convert circle with radius zero to polygon" -msgstr "半径0の円を多角形に返還できません" +#: catalog/aclchk.c:3130 +#, c-format +msgid "must be owner of schema %s" +msgstr "スキーマ%sの所有者でなければなりません" -#: utils/adt/geo_ops.c:5150 -msgid "must request at least 2 points" -msgstr "少なくとも2ポイントを要求しなければなりません" +#: catalog/aclchk.c:3132 +#, c-format +msgid "must be owner of operator class %s" +msgstr "演算子クラス%sの所有者でなければなりません" -#: utils/adt/geo_ops.c:5194 utils/adt/geo_ops.c:5217 -msgid "cannot convert empty polygon to circle" -msgstr "空の多角形を円に変換できません" +#: catalog/aclchk.c:3134 +#, c-format +msgid "must be owner of operator family %s" +msgstr "演算子ファミリー %s の所有者でなければなりません" -#: utils/adt/tsvector_op.c:514 utils/adt/tsvector.c:272 tsearch/to_tsany.c:165 +#: catalog/aclchk.c:3136 #, c-format -msgid "string is too long for tsvector (%d bytes, max %d bytes)" -msgstr "TSベクターのための文字列が長すぎます(%dバイト、最大は%dバイト)" +msgid "must be owner of collation %s" +msgstr "照合順序 %s の所有者でなければなりません" -#: utils/adt/tsvector_op.c:1103 -msgid "ts_stat query must return one tsvector column" -msgstr "ts_statは1つのtsvector列のみを返さなければなりません" +#: catalog/aclchk.c:3138 +#, c-format +msgid "must be owner of conversion %s" +msgstr "変換%sの所有者でなければなりません" -#: utils/adt/tsvector_op.c:1283 +#: catalog/aclchk.c:3140 #, c-format -msgid "tsvector column \"%s\" does not exist" -msgstr "tsvector列\"%s\"は存在しません" +msgid "must be owner of tablespace %s" +msgstr "テーブル空間%sの所有者でなければなりません" -#: utils/adt/tsvector_op.c:1289 +#: catalog/aclchk.c:3142 #, c-format -msgid "column \"%s\" is not of tsvector type" -msgstr "値\"%s\"は型tsvectorではありません" +msgid "must be owner of text search dictionary %s" +msgstr "テキスト検索辞書%sの所有者でなければなりません" -#: utils/adt/tsvector_op.c:1301 +#: catalog/aclchk.c:3144 #, c-format -msgid "configuration column \"%s\" does not exist" -msgstr "設定列\"%s\"は存在しません" +msgid "must be owner of text search configuration %s" +msgstr "テキスト検索設定%sの所有者でなければなりません" -#: utils/adt/tsvector_op.c:1307 +#: catalog/aclchk.c:3146 #, c-format -msgid "column \"%s\" is not of regconfig type" -msgstr "%s列はregconfig型ではありません" +msgid "must be owner of foreign-data wrapper %s" +msgstr "外部データラッパー %s の所有者でなければなりません" -#: utils/adt/tsvector_op.c:1314 +#: catalog/aclchk.c:3148 #, c-format -msgid "configuration column \"%s\" must not be null" -msgstr "設定列\"%s\"をNULLにすることはできません" +msgid "must be owner of foreign server %s" +msgstr "外部サーバ %s の所有者でなければなりません" -#: utils/adt/tsvector_op.c:1327 +#: catalog/aclchk.c:3150 #, c-format -msgid "text search configuration name \"%s\" must be schema-qualified" -msgstr "テキスト検索設定名称\"%s\"はスキーマ修飾しなけれナバりません" +msgid "must be owner of extension %s" +msgstr "拡張機能 %s の所有者でなければなりません" -#: utils/adt/tsvector_op.c:1352 +#: catalog/aclchk.c:3192 #, c-format -msgid "column \"%s\" is not of a character type" -msgstr "カラム \"%s\" は文字型ではありません" +msgid "permission denied for column \"%s\" of relation \"%s\"" +msgstr "リレーション \"%2$s\" のカラム \"%1$s\" への権限がありません" -#: utils/adt/regexp.c:190 tsearch/spell.c:365 +#: catalog/aclchk.c:3219 #, c-format -msgid "invalid regular expression: %s" -msgstr "正規表現が無効です: %s" +msgid "role with OID %u does not exist" +msgstr "OID が %u であるロールは存在しません" -#: utils/adt/regexp.c:269 utils/adt/varlena.c:2797 +#: catalog/aclchk.c:3312 catalog/aclchk.c:3320 #, c-format -msgid "regular expression failed: %s" -msgstr "正規表現が失敗しました: %s" +msgid "attribute %d of relation with OID %u does not exist" +msgstr "OID が %2$u であるリレーションの属性 %1$d は存在しません" -#: utils/adt/regexp.c:404 +#: catalog/aclchk.c:3393 catalog/aclchk.c:4219 #, c-format -msgid "invalid regexp option: \"%c\"" -msgstr "正規表現オプションが無効です: \"%c\"" +msgid "relation with OID %u does not exist" +msgstr "OID が %u であるリレーションは存在しません" -#: utils/adt/regexp.c:668 utils/adt/like_match.c:287 -msgid "invalid escape string" -msgstr "エスケープシーケンスが無効です" +#: 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のデータベースは存在しません" -#: utils/adt/regexp.c:669 utils/adt/like_match.c:288 -msgid "Escape string must be empty or one character." -msgstr "エスケープ文字は空か1文字でなければなりません。" +#: 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の関数は存在しません" -#: utils/adt/regexp.c:865 -msgid "regexp_split does not support the global option" -msgstr "regexp_splitはグローバルオプションをサポートしません" +#: catalog/aclchk.c:3601 catalog/aclchk.c:4323 +#, c-format +msgid "language with OID %u does not exist" +msgstr "OID が %u である言語は存在しません" -#: utils/adt/genfile.c:58 -msgid "reference to parent directory (\"..\") not allowed" -msgstr "親ディレクトリの参照(\"..\")はできません" +#: catalog/aclchk.c:3762 catalog/aclchk.c:4395 +#, c-format +msgid "schema with OID %u does not exist" +msgstr "OID が %u であるスキーマは存在しません" -#: utils/adt/genfile.c:72 -msgid "absolute path not allowed" -msgstr "絶対経路はできません" +#: catalog/aclchk.c:3816 catalog/aclchk.c:4422 +#, c-format +msgid "tablespace with OID %u does not exist" +msgstr "OID が %u であるテーブル空間は存在しません" -#: utils/adt/genfile.c:99 -msgid "must be superuser to read files" -msgstr "ファイルを読み込むにはスーパーユーザでなければなりません" +#: catalog/aclchk.c:3874 catalog/aclchk.c:4556 +#, c-format +msgid "foreign-data wrapper with OID %u does not exist" +msgstr "OID が %u である外部データラッパーは存在しません" -#: utils/adt/genfile.c:113 +#: catalog/aclchk.c:3935 catalog/aclchk.c:4583 #, c-format -msgid "could not seek in file \"%s\": %m" -msgstr "ファイル\"%s\"をシークできませんでした: %m" +msgid "foreign server with OID %u does not exist" +msgstr "OID が %u である外部サーバは存在しません" -#: utils/adt/genfile.c:118 -msgid "requested length cannot be negative" -msgstr "負の長さを指定することはできません" +#: catalog/aclchk.c:4245 +#, c-format +msgid "type with OID %u does not exist" +msgstr "OID が %u である型は存在しません" -#: utils/adt/genfile.c:124 utils/adt/oracle_compat.c:181 -#: utils/adt/oracle_compat.c:279 utils/adt/oracle_compat.c:755 -#: utils/adt/oracle_compat.c:1045 -msgid "requested length too large" -msgstr "要求した長さが長すぎます" +#: catalog/aclchk.c:4271 +#, c-format +msgid "operator with OID %u does not exist" +msgstr "OID が %u である演算子は存在しません" -#: utils/adt/genfile.c:133 storage/file/copydir.c:186 -#: access/transam/xlog.c:2469 access/transam/xlog.c:4317 -#: access/transam/xlog.c:8542 access/transam/xlog.c:8616 -#: access/transam/xlog.c:8999 access/transam/xlog.c:9024 +#: catalog/aclchk.c:4448 #, c-format -msgid "could not read file \"%s\": %m" -msgstr "ファイル\"%s\"を読み込めませんでした: %m" +msgid "operator class with OID %u does not exist" +msgstr "OID が %u である演算子クラスは存在しません" -#: utils/adt/genfile.c:163 -msgid "must be superuser to get file information" -msgstr "ファイル情報を入手するにはスーパーユーザでなければなりません" +#: catalog/aclchk.c:4475 +#, c-format +msgid "operator family with OID %u does not exist" +msgstr "OID が %u である演算子族は存在しません" -#: utils/adt/genfile.c:227 -msgid "must be superuser to get directory listings" -msgstr "ディレクトリ一覧を得るにはスーパーユーザでなければなりません" +#: catalog/aclchk.c:4502 +#, c-format +msgid "text search dictionary with OID %u does not exist" +msgstr "OID が %u であるテキスト検索辞書は存在しません" -#: utils/adt/ascii.c:75 +#: catalog/aclchk.c:4529 #, c-format -msgid "encoding conversion from %s to ASCII not supported" -msgstr "%s符号化方式からASCIIへの変換はサポートされていません" +msgid "text search configuration with OID %u does not exist" +msgstr "OID が %u であるテキスト検索設定は存在しません" -#: utils/adt/timestamp.c:97 +#: catalog/aclchk.c:4636 #, c-format -msgid "TIMESTAMP(%d)%s precision must not be negative" -msgstr "TIMESTAMP(%d)%s の精度は負であってはなりません" +msgid "collation with OID %u does not exist" +msgstr "OID が %u である照合順序は存在しません" -#: utils/adt/timestamp.c:103 +#: catalog/aclchk.c:4662 #, c-format -msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d" -msgstr "TIMESTAMP(%d)%sの位取りを許容最大値%dまで減らしました" +msgid "conversion with OID %u does not exist" +msgstr "OID が %u である変換は存在しません" -#: utils/adt/timestamp.c:171 utils/adt/timestamp.c:435 +#: catalog/aclchk.c:4703 #, c-format -msgid "timestamp out of range: \"%s\"" -msgstr "timestampが範囲外です: \"%s\"" +msgid "extension with OID %u does not exist" +msgstr "OID が %u である拡張機能は存在しません" -#: utils/adt/timestamp.c:189 utils/adt/timestamp.c:453 -#: utils/adt/timestamp.c:664 +#: catalog/pg_conversion.c:67 #, c-format -msgid "date/time value \"%s\" is no longer supported" -msgstr "日付時刻の値\"%s\"はもうサポートされていません" +msgid "conversion \"%s\" already exists" +msgstr "変換\"%s\"はすでに存在します" -#: utils/adt/timestamp.c:260 -msgid "timestamp cannot be NaN" -msgstr "タイムスタンプは NaN にはできません" +#: catalog/pg_conversion.c:80 +#, c-format +msgid "default conversion for %s to %s already exists" +msgstr "%sから%sへのデフォルトの変換はすでに存在します" -#: utils/adt/timestamp.c:370 +#: catalog/namespace.c:235 catalog/namespace.c:309 commands/trigger.c:4153 #, c-format -msgid "timestamp(%d) precision must be between %d and %d" -msgstr "timestamp(%d)の精度は%dから%dまででなければなりません" +msgid "cross-database references are not implemented: \"%s.%s.%s\"" +msgstr "データベース間の参照は実装されていません: \"%s.%s.%s\"" -#: 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が範囲外です" +#: catalog/namespace.c:253 catalog/namespace.c:320 +msgid "temporary tables cannot specify a schema name" +msgstr "一時テーブルにはスキーマ名を指定できません" -#: utils/adt/timestamp.c:787 utils/adt/timestamp.c:820 -msgid "invalid INTERVAL type modifier" -msgstr "無効なINTERVAL型の修正子です" +#: catalog/namespace.c:355 catalog/namespace.c:2548 +msgid "no schema has been selected to create in" +msgstr "作成先のスキーマが選択されていません" -#: utils/adt/timestamp.c:803 +#: catalog/namespace.c:1865 commands/tsearchcmds.c:320 #, c-format -msgid "INTERVAL(%d) precision must not be negative" -msgstr "INTERVAL(%d)の精度は負ではいけません" +msgid "text search parser \"%s\" does not exist" +msgstr "テキスト検索パーサ\"%s\"は存在しません" -#: utils/adt/timestamp.c:809 +#: catalog/namespace.c:1988 commands/tsearchcmds.c:769 #, c-format -msgid "INTERVAL(%d) precision reduced to maximum allowed, %d" -msgstr "INTERVAL(%d)の精度を許容最大値%dまで減らしました" +msgid "text search dictionary \"%s\" does not exist" +msgstr "テキスト検索辞書\"%s\"は存在しません" -#: utils/adt/timestamp.c:1101 +#: catalog/namespace.c:2112 commands/tsearchcmds.c:1304 #, c-format -msgid "interval(%d) precision must be between %d and %d" -msgstr "interval(%d)の精度は%dから%dまででなければなりません" - -#: utils/adt/timestamp.c:2306 -msgid "cannot subtract infinite timestamps" -msgstr "無限大のtimestampを減算できません" +msgid "text search template \"%s\" does not exist" +msgstr "テキスト検索テンプレート\"%s\"は存在しません" -#: utils/adt/timestamp.c:3365 utils/adt/timestamp.c:3961 -#: utils/adt/timestamp.c:4020 +#: catalog/namespace.c:2235 commands/tsearchcmds.c:1754 +#: commands/tsearchcmds.c:1910 #, c-format -msgid "timestamp units \"%s\" not supported" -msgstr "timestampの単位\"%s\"はサポートされていません" +msgid "text search configuration \"%s\" does not exist" +msgstr "テキスト検索設定\"%s\"は存在しません" -#: utils/adt/timestamp.c:3379 utils/adt/timestamp.c:4030 +#: catalog/namespace.c:2482 #, c-format -msgid "timestamp units \"%s\" not recognized" -msgstr "timestampの単位\"%s\"は不明です" +msgid "%s is already in schema \"%s\"" +msgstr "%s はすでにスキーマ \"%s\" 内に存在します" -#: 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 "timestamp with time zoneの単位\"%s\"はサポートされていません" +#: catalog/namespace.c:2490 +msgid "cannot move objects into or out of temporary schemas" +msgstr "一時スキーマへ、または一時スキーマからオブジェクトを移動できません" -#: utils/adt/timestamp.c:3537 utils/adt/timestamp.c:4242 -#, c-format -msgid "timestamp with time zone units \"%s\" not recognized" -msgstr "timestamp with time zoneの単位\"%s\"は不明です" +#: catalog/namespace.c:2496 +msgid "cannot move objects into or out of TOAST schema" +msgstr "TOASTスキーマへ、またはTOASTスキーマからオブジェクトを移動できません" -#: utils/adt/timestamp.c:3617 utils/adt/timestamp.c:4348 +#: catalog/namespace.c:2569 catalog/namespace.c:3554 catalog/namespace.c:3557 +#: commands/schemacmds.c:253 commands/schemacmds.c:322 #, c-format -msgid "interval units \"%s\" not supported" -msgstr "intervalの単位\"%s\"はサポートされていません" +msgid "schema \"%s\" does not exist" +msgstr "スキーマ\"%s\"は存在しません" -#: utils/adt/timestamp.c:3633 utils/adt/timestamp.c:4375 +#: catalog/namespace.c:2600 #, c-format -msgid "interval units \"%s\" not recognized" -msgstr "intervalの単位\"%s\"は不明です" +msgid "improper relation name (too many dotted names): %s" +msgstr "リレーション名が不適切です(ドット付きの名前が多すぎます): %s" -#: utils/adt/timestamp.c:4445 utils/adt/timestamp.c:4618 +#: catalog/namespace.c:2999 #, c-format -msgid "could not convert to time zone \"%s\"" -msgstr "時間帯\"%s\"に変換できませんでした" +msgid "collation \"%s\" for encoding \"%s\" does not exist" +msgstr "エンコーディング \"%2$s\" のための照合順序 \"%1$s\" は存在しません" -#: utils/adt/timestamp.c:4452 utils/adt/timestamp.c:4625 -#: utils/adt/datetime.c:925 utils/adt/datetime.c:1657 utils/adt/date.c:2599 +#: catalog/namespace.c:3051 #, c-format -msgid "time zone \"%s\" not recognized" -msgstr "時間帯\"%s\"は不明です" +msgid "conversion \"%s\" does not exist" +msgstr "変換\"%sは存在しません" -#: utils/adt/timestamp.c:4477 utils/adt/timestamp.c:4651 +#: catalog/namespace.c:3256 #, c-format -msgid "interval time zone \"%s\" must not specify month" -msgstr "intervalによる時間帯\"%s\"には月を指定してはいけません" - -#: utils/adt/tsrank.c:404 -msgid "array of weight must be one-dimensional" -msgstr "重み配列は1次元の配列でなければなりません" - -#: utils/adt/tsrank.c:409 -msgid "array of weight is too short" -msgstr "重み配列が短すぎます" +msgid "permission denied to create temporary tables in database \"%s\"" +msgstr "データベース\"%s\"に一時テーブルを作成する権限がありません" -#: utils/adt/tsrank.c:414 -msgid "array of weight must not contain nulls" -msgstr "重み配列にはNULL値を含めてはいけません" +#: catalog/namespace.c:3272 +msgid "cannot create temporary tables during recovery" +msgstr "リカバリ中に一時テーブルを作成できません" -#: utils/adt/tsrank.c:423 utils/adt/tsrank.c:749 -msgid "weight out of range" -msgstr "重みが範囲外です" +#: catalog/objectaddress.c:286 +msgid "database name cannot be qualified" +msgstr "データベース名を修飾することはできません" -#: utils/adt/mac.c:65 -#, c-format -msgid "invalid input syntax for type macaddr: \"%s\"" -msgstr "型macaddrの入力構文が無効です: \"%s\"" +#: catalog/objectaddress.c:289 commands/extension.c:1585 +#: commands/extension.c:2245 +#, +msgid "extension name cannot be qualified" +msgstr "拡張機能名を修飾できません" -#: utils/adt/mac.c:72 -#, c-format -msgid "invalid octet value in \"macaddr\" value: \"%s\"" -msgstr "\"macaddr\"の値でオクテット値が無効です: \"%s\"" +#: catalog/objectaddress.c:292 +msgid "tablespace name cannot be qualified" +msgstr "テーブル空間名を修飾することはできません" -#: utils/adt/cash.c:232 -#, c-format -msgid "invalid input syntax for type money: \"%s\"" -msgstr "money型への入力構文が無効です: \"%s\"" +#: catalog/objectaddress.c:295 +msgid "role name cannot be qualified" +msgstr "ロール名を修飾できません" -#: utils/adt/nabstime.c:160 -#, c-format -msgid "invalid time zone name: \"%s\"" -msgstr "時間帯名称が無効です: \"%s\"" +#: catalog/objectaddress.c:298 commands/schemacmds.c:178 +msgid "schema name cannot be qualified" +msgstr "スキーマ名を修飾することはできません" -#: utils/adt/nabstime.c:506 utils/adt/nabstime.c:579 -msgid "cannot convert abstime \"invalid\" to timestamp" -msgstr "abstimeの\"invalid\"をtimestampに変換できません" +#: catalog/objectaddress.c:301 +msgid "language name cannot be qualified" +msgstr "言語名を修飾できません" -#: utils/adt/nabstime.c:806 -msgid "invalid status in external \"tinterval\" value" -msgstr "\"tinterval\"の外部値のステータスが無効です" +#: catalog/objectaddress.c:304 +#, +msgid "foreign-data wrapper name cannot be qualified" +msgstr "外部データラッパー名を修飾することはできません" -#: utils/adt/nabstime.c:880 -msgid "cannot convert reltime \"invalid\" to interval" -msgstr "reltimeの\"invalid\"をintervalに変換できません" +#: catalog/objectaddress.c:307 +#, +msgid "server name cannot be qualified" +msgstr "サーバ名を修飾できません" -#: utils/adt/nabstime.c:1562 +#: catalog/objectaddress.c:412 commands/tablecmds.c:214 +#: commands/tablecmds.c:2252 commands/tablecmds.c:2509 +#: commands/tablecmds.c:3813 commands/tablecmds.c:8940 commands/view.c:182 #, c-format -msgid "invalid input syntax for type tinterval: \"%s\"" -msgstr "型tintervalの入力構文が無効です: \"%s\"" - -#: utils/adt/datetime.c:1181 utils/adt/datetime.c:1926 utils/adt/date.c:142 -msgid "date/time value \"current\" is no longer supported" -msgstr "日付時刻の値\"current\"はもうサポートされていません" +msgid "\"%s\" is not a view" +msgstr "\"%s\"はビューではありません" -#: utils/adt/datetime.c:3516 utils/adt/datetime.c:3523 +#: catalog/objectaddress.c:419 commands/tablecmds.c:232 +#: commands/tablecmds.c:2258 commands/tablecmds.c:2517 +#: commands/tablecmds.c:3816 commands/tablecmds.c:8948 #, c-format -msgid "date/time field value out of range: \"%s\"" -msgstr "日付時刻のフィールドが範囲外です: \"%s\"" - -#: utils/adt/datetime.c:3525 -msgid "Perhaps you need a different \"datestyle\" setting." -msgstr "他の\"datestyle\"設定が必要かもしれません。" +msgid "\"%s\" is not a foreign table" +msgstr "\"%s\" は外部テーブルではありません" -#: utils/adt/datetime.c:3530 +#: catalog/objectaddress.c:834 commands/functioncmds.c:1525 +#: commands/functioncmds.c:1814 #, c-format -msgid "interval field value out of range: \"%s\"" -msgstr "intervalフィールドの値が範囲外です: \"%s\"" +msgid "must be owner of type %s or type %s" +msgstr "型%sまたは型%sの所有者でなければなりません" -#: utils/adt/datetime.c:3536 -#, c-format -msgid "time zone displacement out of range: \"%s\"" -msgstr "時間帯の置換が範囲外です: \"%s\"" +#: catalog/objectaddress.c:865 catalog/objectaddress.c:881 +#, +msgid "must be superuser" +msgstr "スーパーユーザでなければなりません" -#: utils/adt/varbit.c:162 utils/adt/varbit.c:302 utils/adt/varbit.c:358 -#, c-format -msgid "bit string length %d does not match type bit(%d)" -msgstr "ビット文字列長%dはbit(%d)に一致しません" +#: catalog/objectaddress.c:872 +#, +msgid "must have CREATEROLE privilege" +msgstr "CREATEROLE 権限が必要です" -#: utils/adt/varbit.c:184 utils/adt/varbit.c:482 +#: catalog/pg_namespace.c:52 commands/schemacmds.c:259 #, c-format -msgid "\"%c\" is not a valid binary digit" -msgstr "\"%c\"は有効な2進数表現ではありません" +msgid "schema \"%s\" already exists" +msgstr "スキーマ\"%s\"はすでに存在します" -#: utils/adt/varbit.c:209 utils/adt/varbit.c:507 +#: catalog/pg_operator.c:221 catalog/pg_operator.c:363 #, c-format -msgid "\"%c\" is not a valid hexadecimal digit" -msgstr "\"%c\"は有効な16進数表現ではありません" +msgid "\"%s\" is not a valid operator name" +msgstr "\"%s\"は有効な演算子名ではありません" -#: utils/adt/varbit.c:293 utils/adt/varbit.c:594 -msgid "invalid length in external bit string" -msgstr "ビット文字列の外部表現の長さが無効です" +#: catalog/pg_operator.c:372 +msgid "only binary operators can have commutators" +msgstr "二項演算子のみが交代演算子を持つことができます" -#: utils/adt/varbit.c:460 utils/adt/varbit.c:603 utils/adt/varbit.c:664 -#, c-format -msgid "bit string too long for type bit varying(%d)" -msgstr "ビット文字列は型bit varying(%d)には長すぎます" +#: catalog/pg_operator.c:376 +msgid "only binary operators can have join selectivity" +msgstr "二項演算子のみが結合選択性を持つことができます" -#: utils/adt/varbit.c:991 utils/adt/varbit.c:1093 utils/adt/varlena.c:729 -#: utils/adt/varlena.c:793 utils/adt/varlena.c:937 utils/adt/varlena.c:1843 -#: utils/adt/varlena.c:1910 -msgid "negative substring length not allowed" -msgstr "負の長さのsubstringはできません" +#: catalog/pg_operator.c:380 +msgid "only binary operators can merge join" +msgstr "二項演算子のみがマージ結合可能です" -#: utils/adt/varbit.c:1149 -msgid "cannot AND bit strings of different sizes" -msgstr "サイズが異なるビット文字列のANDはできません" +#: catalog/pg_operator.c:384 +msgid "only binary operators can hash" +msgstr "二項演算子のみがハッシュ可能です" -#: utils/adt/varbit.c:1190 -msgid "cannot OR bit strings of different sizes" -msgstr "サイズが異なるビット文字列のORはできません" +#: catalog/pg_operator.c:395 +msgid "only boolean operators can have negators" +msgstr "ブール型演算子のみが否定演算子を持つことができます" -#: utils/adt/varbit.c:1236 -msgid "cannot XOR bit strings of different sizes" -msgstr "サイズが異なるビット文字列のXORはできません" +#: catalog/pg_operator.c:399 +msgid "only boolean operators can have restriction selectivity" +msgstr "ブール型演算子のみが制限選択性を持つことができます" -#: utils/adt/varbit.c:1563 utils/adt/int8.c:502 utils/adt/int8.c:531 -#: utils/adt/int8.c:552 utils/adt/int8.c:582 utils/adt/int8.c:610 -#: utils/adt/int8.c:628 utils/adt/int8.c:672 utils/adt/int8.c:689 -#: utils/adt/int8.c:758 utils/adt/int8.c:779 utils/adt/int8.c:806 -#: utils/adt/int8.c:833 utils/adt/int8.c:854 utils/adt/int8.c:875 -#: utils/adt/int8.c:902 utils/adt/int8.c:942 utils/adt/int8.c:963 -#: utils/adt/int8.c:990 utils/adt/int8.c:1017 utils/adt/int8.c:1038 -#: utils/adt/int8.c:1059 utils/adt/int8.c:1086 utils/adt/int8.c:1259 -#: utils/adt/int8.c:1298 utils/adt/numeric.c:2115 -msgid "bigint out of range" -msgstr "bigintの範囲外です" +#: catalog/pg_operator.c:403 +msgid "only boolean operators can have join selectivity" +msgstr "ブール型演算子のみが結合選択性を持つことができます" -#: utils/adt/varbit.c:1710 utils/adt/varbit.c:1768 -msgid "bit index %d out of valid range (0..%d)" -msgstr "ビット型インデックス %d が有効範囲 0 から %d までの間にありません" +#: catalog/pg_operator.c:407 +msgid "only boolean operators can merge join" +msgstr "ブール型演算子のみがマージ結合可能です" -#: utils/adt/varbit.c:1719 utils/adt/varlena.c:2110 -msgid "new bit must be 0 or 1" -msgstr "新しいビットは 0 か 1 でなければなりません" +#: catalog/pg_operator.c:411 +msgid "only boolean operators can hash" +msgstr "ブール型演算子のみがハッシュ可能です" -#: utils/adt/numutils.c:53 utils/adt/numutils.c:63 utils/adt/numutils.c:105 -#: utils/adt/int8.c:97 utils/adt/int8.c:132 +#: catalog/pg_operator.c:423 #, c-format -msgid "invalid input syntax for integer: \"%s\"" -msgstr "型integerの入力構文が無効です: \"%s\"" +msgid "operator %s already exists" +msgstr "演算子%sはすでに存在します" -#: utils/adt/numutils.c:77 -#, c-format -msgid "value \"%s\" is out of range for type integer" -msgstr "値\"%s\"は型integerの範囲外です" +#: catalog/pg_operator.c:616 +msgid "operator cannot be its own negator or sort operator" +msgstr "演算子は自身の否定子やソート演算子になることはできません" -#: utils/adt/numutils.c:83 +#: catalog/pg_depend.c:293 #, c-format -msgid "value \"%s\" is out of range for type smallint" -msgstr "値\"%s\"は型smallintの範囲外です" +msgid "cannot remove dependency on %s because it is a system object" +msgstr "システムオブジェクトであるため、%sの依存関係を削除できません。" -#: utils/adt/numutils.c:89 +#: catalog/pg_collation.c:75 #, c-format -msgid "value \"%s\" is out of range for 8-bit integer" -msgstr "値\"%s\"は8ビット整数の範囲外です" +msgid "collation \"%s\" for encoding \"%s\" already exists" +msgstr "エンコーディング \"%2$s\" の照合順序 \"%1$s\" はすでに存在します" -#: utils/adt/enum.c:44 utils/adt/enum.c:54 utils/adt/enum.c:109 -#: utils/adt/enum.c:119 +#: catalog/pg_collation.c:89 #, c-format -msgid "invalid input value for enum %s: \"%s\"" -msgstr "列挙型%sの入力構文が無効です: \"%s\"" +msgid "collation \"%s\" already exists" +msgstr "照合順序 \"%s\" はすでに存在します" -#: utils/adt/enum.c:81 utils/adt/enum.c:144 -#, c-format -msgid "invalid internal value for enum: %u" -msgstr "列挙型用の内部値が無効です: %u" +#: optimizer/util/plancat.c:97 +#, +msgid "cannot access temporary or unlogged relations during recovery" +msgstr "リカバリ中は一時テーブルや記録されない(unlogged)テーブルには" +"アクセスできません" -#: utils/adt/enum.c:264 utils/adt/enum.c:303 utils/adt/enum.c:350 -#: utils/adt/enum.c:370 -msgid "could not determine actual enum type" -msgstr "実際の列挙型を決定できませんでした" +#: optimizer/util/clauses.c:4201 +#, c-format +msgid "SQL function \"%s\" during inlining" +msgstr "SQL関数\"%s\"がインラインになっています" -#: utils/adt/array_userfuncs.c:48 -msgid "could not determine input data types" -msgstr "入力データ型を決定できませんでした" +#: optimizer/plan/initsplan.c:587 +msgid "" +"SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer " +"join" +msgstr "" +"外部結合のNULLになる可能性がある方ではSELECT FOR UPDATE/SHAREを適用できません" -#: utils/adt/array_userfuncs.c:82 -msgid "neither input type is an array" -msgstr "入力型が配列ではありません" +#: optimizer/plan/planner.c:2249 +msgid "could not implement GROUP BY" +msgstr "GROUP BY を実装できませんでした" -#: utils/adt/array_userfuncs.c:121 -msgid "argument must be empty or one-dimensional array" -msgstr "引数は空か1次元の配列でなければなりません" - -#: 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:225 -#, c-format +#: optimizer/plan/planner.c:2250 optimizer/plan/planner.c:2422 +#: optimizer/prep/prepunion.c:791 msgid "" -"Arrays with element types %s and %s are not compatible for concatenation." -msgstr "要素型%sと%sの配列の連結には互換性がありません" +"Some of the datatypes only support hashing, while others only support " +"sorting." +msgstr "" +"ハッシュのみをサポートするデータ型もあれば、ソートのみをサポートするものもあ" +"ります" -#: utils/adt/array_userfuncs.c:264 -#, c-format -msgid "Arrays of %d and %d dimensions are not compatible for concatenation." -msgstr "要素数%dと%dの配列の連結には互換性がありません" +#: optimizer/plan/planner.c:2421 +msgid "could not implement DISTINCT" +msgstr "DISTINCT を実装できませんでした" -#: utils/adt/array_userfuncs.c:301 -msgid "" -"Arrays with differing element dimensions are not compatible for " -"concatenation." -msgstr "異なる要素次数の配列の連結には互換性がありません。" +#: optimizer/plan/planner.c:2868 +msgid "could not implement window PARTITION BY" +msgstr "ウィンドウの PARTITION BY を実装できませんでした" -#: utils/adt/array_userfuncs.c:330 utils/adt/array_userfuncs.c:358 -msgid "Arrays with differing dimensions are not compatible for concatenation." -msgstr "異なる次数の配列の連結には互換性がありません。" +#: optimizer/plan/planner.c:2869 +msgid "Window partitioning columns must be of sortable datatypes." +msgstr "" +"ウィンドウ・パーティショニングするカラムは、ソート可能なデータ型でなければな" +"りません" -#: utils/adt/array_userfuncs.c:484 -msgid "could not determine input data type" -msgstr "入力データ型を特定できませんでした" +#: optimizer/plan/planner.c:2873 +msgid "could not implement window ORDER BY" +msgstr "ウィンドウの ORDER BY を実装できませんでした" -#: utils/adt/tsquery_cleanup.c:285 -msgid "" -"text-search query contains only stop words or doesn't contain lexemes, " -"ignored" +#: optimizer/plan/planner.c:2874 +msgid "Window ordering columns must be of sortable datatypes." msgstr "" -"テキスト検索問い合わせはストップワードのみを含む、あるいは、字句要素を含みま" -"せん。無視されます" - -#: utils/adt/int8.c:113 -#, c-format -msgid "value \"%s\" is out of range for type bigint" -msgstr "値\"%s\"は型bigintの範囲外です" +"ウィンドウの順序付けをするカラムは、ソート可能なデータ型でなければなりません" -#: utils/adt/int8.c:1315 -msgid "OID out of range" -msgstr "OIDの範囲外です" +#: optimizer/prep/prepunion.c:385 +msgid "could not implement recursive UNION" +msgstr "再帰 UNION を実装できませんでした" -#: utils/adt/encode.c:55 utils/adt/encode.c:91 -#, c-format -msgid "unrecognized encoding: \"%s\"" -msgstr "符号化方式が不明です: \"%s\"" +#: optimizer/prep/prepunion.c:386 +msgid "All column datatypes must be hashable." +msgstr "すべてのカラムのデータ型はハッシュ可能でなければなりません" -#: utils/adt/encode.c:150 +#. translator: %s is UNION, INTERSECT, or EXCEPT +#: optimizer/prep/prepunion.c:790 #, c-format -msgid "invalid hexadecimal digit: \"%c\"" -msgstr "16進数表現が無効です: \"%c\"" - -#: utils/adt/encode.c:178 -msgid "invalid hexadecimal data: odd number of digits" -msgstr "16進数データが無効です: おかしな数値表現です" - -#: utils/adt/encode.c:295 -msgid "unexpected \"=\"" -msgstr "\"=\"は想定外です" - -#: utils/adt/encode.c:307 -msgid "invalid symbol" -msgstr "シンボルが無効です" - -#: utils/adt/encode.c:327 -msgid "invalid end sequence" -msgstr "終了シーケンスが無効です" +msgid "could not implement %s" +msgstr "%s を実装できませんでした" -#: utils/adt/encode.c:441 utils/adt/encode.c:506 utils/adt/varlena.c:238 -#: utils/adt/varlena.c:279 -msgid "invalid input syntax for type bytea" -msgstr "bytea型の入力構文が無効です" +#: optimizer/path/joinrels.c:673 +#, +msgid "" +"FULL JOIN is only supported with merge-joinable or hash-joinable join " +"conditions" +msgstr "FULL JOIN はマージ結合可能もしくはハッシュ結合可能な場合のみ" +"サポートされています" -#: utils/adt/char.c:169 -msgid "\"char\" out of range" -msgstr "\"char\"の範囲外です" +#: tcop/postgres.c:349 tcop/postgres.c:372 tcop/fastpath.c:290 +#: commands/copy.c:542 commands/copy.c:561 commands/copy.c:565 +msgid "unexpected EOF on client connection" +msgstr "クライアント接続に想定外のEOFがありました" -#: utils/adt/rowtypes.c:98 utils/adt/rowtypes.c:473 -msgid "input of anonymous composite types is not implemented" -msgstr "匿名複合型の入力は実装されていません" +#: 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が無効です" -#: 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 +#: tcop/postgres.c:858 #, c-format -msgid "malformed record literal: \"%s\"" -msgstr "おかしなレコードリテラルです: \"%s\"" +msgid "statement: %s" +msgstr "文: %s" -#: utils/adt/rowtypes.c:152 -msgid "Missing left parenthesis." -msgstr "左括弧がありません" +#: tcop/postgres.c:917 tcop/postgres.c:1227 tcop/postgres.c:1508 +#: tcop/postgres.c:1950 tcop/postgres.c:2318 tcop/postgres.c:2399 +#: tcop/fastpath.c:303 +msgid "" +"current transaction is aborted, commands ignored until end of transaction " +"block" +msgstr "" +"現在のトランザクションがアボートしました。トランザクションブロックが終わるま" +"でコマンドは無視されます" -#: utils/adt/rowtypes.c:180 -msgid "Too few columns." -msgstr "列が少なすぎます" +#: tcop/postgres.c:1087 tcop/postgres.c:1374 tcop/postgres.c:1791 +#: tcop/postgres.c:2008 tcop/fastpath.c:411 +#, c-format +msgid "duration: %s ms" +msgstr "期間: %s ミリ秒" -#: utils/adt/rowtypes.c:204 utils/adt/rowtypes.c:212 -msgid "Unexpected end of input." -msgstr "想定外の入力の終端です" +#: tcop/postgres.c:1092 +#, c-format +msgid "duration: %s ms statement: %s" +msgstr "期間: %s ミリ秒 文: %s" -#: utils/adt/rowtypes.c:263 -msgid "Too many columns." -msgstr "列が多すぎます" +#: tcop/postgres.c:1142 +#, c-format +msgid "parse %s: %s" +msgstr "解析 %s: %s" -#: utils/adt/rowtypes.c:271 -msgid "Junk after right parenthesis." -msgstr "右括弧の後にごみがあります" +#: tcop/postgres.c:1200 +msgid "cannot insert multiple commands into a prepared statement" +msgstr "準備された文に複数のコマンドを挿入できません" -#: utils/adt/rowtypes.c:522 +#: tcop/postgres.c:1379 #, c-format -msgid "wrong number of columns: %d, expected %d" -msgstr "列数が間違っています: %d。%dを想定していました" +msgid "duration: %s ms parse %s: %s" +msgstr "期間: %s ミリ秒 解析%s : %s" -#: utils/adt/rowtypes.c:549 +#: tcop/postgres.c:1425 #, c-format -msgid "wrong data type: %u, expected %u" -msgstr "データ型が間違っています: %u。%uを想定していました" +msgid "bind %s to %s" +msgstr "バインド%s: %s" -#: utils/adt/rowtypes.c:610 +#: tcop/postgres.c:1444 tcop/postgres.c:2298 +msgid "unnamed prepared statement does not exist" +msgstr "無名の準備された文が存在しません" + +#: tcop/postgres.c:1486 #, c-format -msgid "improper binary format in record column %d" -msgstr "レコード列%dのバイナリ書式が不適切です" +msgid "bind message has %d parameter formats but %d parameters" +msgstr "バインドメッセージは%dパラメータ書式ありましたがパラメータは%dでした" -#: utils/adt/rowtypes.c:896 utils/adt/rowtypes.c:1122 +#: tcop/postgres.c:1492 #, c-format -msgid "cannot compare dissimilar column types %s and %s at record column %d" +msgid "" +"bind message supplies %d parameters, but prepared statement \"%s\" requires %" +"d" msgstr "" -"レコードのカラム %3$d において、全く異なる型 %1$s と %2$s では比較ができませ" -"ん" - -#: utils/adt/rowtypes.c:974 utils/adt/rowtypes.c:1185 -msgid "cannot compare record types with different numbers of columns" -msgstr "個数が異なるカラム同士ではレコード型の比較ができません" - -#: utils/adt/selfuncs.c:4762 utils/adt/selfuncs.c:5191 -msgid "case insensitive matching not supported on type bytea" -msgstr "型byteaでは大文字小文字の区別をしないマッチをサポートしません" +"バインドメッセージは%dパラメータを提供しましたが、準備された文\"%s\"では%d必" +"要でした" -#: utils/adt/selfuncs.c:4867 utils/adt/selfuncs.c:5351 -msgid "regular-expression matching not supported on type bytea" -msgstr "型byteaでは正規表現のマッチをサポートしません" +#: tcop/postgres.c:1657 +#, c-format +msgid "incorrect binary data format in bind parameter %d" +msgstr "バインドパラメータ%dにおいてバイナリデータ書式が不正です" -#: utils/adt/tid.c:70 utils/adt/tid.c:78 utils/adt/tid.c:86 +#: tcop/postgres.c:1796 #, c-format -msgid "invalid input syntax for type tid: \"%s\"" -msgstr "型tidの入力構文が無効です: \"%s\"" +msgid "duration: %s ms bind %s%s%s: %s" +msgstr "期間: %s ミリ秒 バインド %s%s%s: %s" -#: utils/adt/arrayutils.c:209 -msgid "typmod array must be type cstring[]" -msgstr "typmod配列はcstring[]型でなければなりません" +#: tcop/postgres.c:1844 tcop/postgres.c:2385 +#, c-format +msgid "portal \"%s\" does not exist" +msgstr "ポータル\"%s\"は存在しません" -#: utils/adt/arrayutils.c:214 -msgid "typmod array must be one-dimensional" -msgstr "typmod配列は1次元の配列でなければなりません" +#: tcop/postgres.c:1931 tcop/postgres.c:2016 +msgid "execute fetch from" +msgstr "取り出し実行" -#: utils/adt/arrayutils.c:219 -msgid "typmod array must not contain nulls" -msgstr "typmod配列にはNULL値を含めてはいけません" +#: tcop/postgres.c:1932 tcop/postgres.c:2017 +msgid "execute" +msgstr "実行" -#: utils/adt/tsvector.c:215 +#: tcop/postgres.c:1929 #, c-format -msgid "word is too long (%ld bytes, max %ld bytes)" -msgstr "単語が長すぎます(%ldバイト、最大は%ldバイト)" +msgid "%s %s%s%s: %s" +msgstr "%s %s%s%s: %s" -#: utils/adt/tsvector.c:222 +#: tcop/postgres.c:2013 #, c-format -msgid "string is too long for tsvector (%ld bytes, max %ld bytes)" -msgstr "tsベクターのための文字列が長すぎます(%ldバイト、最大は%ldバイト)" +msgid "duration: %s ms %s %s%s%s: %s" +msgstr "期間: %s ミリ秒 %s %s%s%s: %s" -#: utils/adt/numeric.c:352 utils/adt/numeric.c:379 utils/adt/numeric.c:3083 -#: utils/adt/numeric.c:3106 utils/adt/numeric.c:3130 utils/adt/numeric.c:3137 +#: tcop/postgres.c:2139 #, c-format -msgid "invalid input syntax for type numeric: \"%s\"" -msgstr "numeric型の入力構文が無効です: \"%s\"" - -#: utils/adt/numeric.c:482 -msgid "invalid length in external \"numeric\" value" -msgstr "\"numeric\"の外部値の長さが無効です" - -#: utils/adt/numeric.c:493 -msgid "invalid sign in external \"numeric\" value" -msgstr "\"numeric\"の外部値の符号が無効です" - -#: utils/adt/numeric.c:503 -msgid "invalid digit in external \"numeric\" value" -msgstr "\"numeric\"の外部値の桁が無効です" +msgid "prepare: %s" +msgstr "準備: %s" -#: utils/adt/numeric.c:634 utils/adt/numeric.c:648 +#: tcop/postgres.c:2202 #, c-format -msgid "NUMERIC precision %d must be between 1 and %d" -msgstr "NUMERICの精度%dは1から%dまででなければなりません" +msgid "parameters: %s" +msgstr "パラメータ: %s" -#: utils/adt/numeric.c:639 -#, c-format -msgid "NUMERIC scale %d must be between 0 and precision %d" -msgstr "NUMERICの位取り%dは0から精度%dまででなければなりません" +#: tcop/postgres.c:2221 +msgid "abort reason: recovery conflict" +msgstr "異常終了の理由:リカバリが衝突したため" -#: utils/adt/numeric.c:657 -msgid "invalid NUMERIC type modifier" -msgstr "無効なNUMERIC型の修正子です" +#: tcop/postgres.c:2237 +msgid "User was holding shared buffer pin for too long." +msgstr "ユーザが共有バッファ・ピンを長く保持し過ぎていました" -#: utils/adt/numeric.c:982 utils/adt/float.c:2687 -msgid "count must be greater than zero" -msgstr "カウントは0より大きくなければなりません" +#: tcop/postgres.c:2240 +msgid "User was holding a relation lock for too long." +msgstr "ユーザリレーションのロックを長く保持し過ぎていました" -#: utils/adt/numeric.c:989 utils/adt/float.c:2692 -msgid "operand, lower bound and upper bound cannot be NaN" -msgstr "オペランドの下限と上限をNaNにすることはできません" +#: tcop/postgres.c:2243 +msgid "User was or might have been using tablespace that must be dropped." +msgstr "" +"削除されるべきテーブルスペースをユーザが使っていました(もしくはその可能性が" +"ありました)。" -#: utils/adt/numeric.c:1002 utils/adt/float.c:2736 -msgid "lower bound cannot equal upper bound" -msgstr "下限を上限と同じにできません" +#: tcop/postgres.c:2246 +msgid "User query might have needed to see row versions that must be removed." +msgstr "" +"削除されるべきバージョンの行をユーザクエリが参照しなければならなかった可能性" +"がありました。" -#: utils/adt/numeric.c:1690 utils/adt/numeric.c:3545 -msgid "value overflows numeric format" -msgstr "値がnumericの書式でオーバフローしています" +#: tcop/postgres.c:2249 storage/ipc/standby.c:490 +msgid "User transaction caused buffer deadlock with recovery." +msgstr "" +"リカバリ時にユーザのトランザクションがバッファのデッドロックを引き起こしまし" +"た。" -#: utils/adt/numeric.c:1975 utils/adt/float.c:1345 -msgid "zero raised to a negative power is undefined" -msgstr "0 の負数乗は定義されていません" +#: tcop/postgres.c:2252 +msgid "User was connected to a database that must be dropped." +msgstr "削除されるべきデータベースにユーザが接続していました。" -#: utils/adt/numeric.c:1981 utils/adt/float.c:1349 -msgid "a negative number raised to a non-integer power yields a complex result" -msgstr "負数を整数でない数でべき乗すると、結果が複雑になります" +#: tcop/postgres.c:2586 +msgid "terminating connection because of crash of another server process" +msgstr "他のサーバプロセスがクラッシュしたため接続を終了しています" -#: utils/adt/numeric.c:2038 -msgid "cannot convert NaN to integer" -msgstr "NaNをintegerに変換できません" - -#: utils/adt/numeric.c:2106 -msgid "cannot convert NaN to bigint" -msgstr "NaNをbigintに変換できません" +#: 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 "" +"他のサーバプロセスが異常終了し共有メモリが破損した可能性がありましたので、\n" +"postmasterはこのサーバプロセスに対し、現在のトランザクションをロールバック\n" +"し終了するよう指示しました。" -#: utils/adt/numeric.c:2154 -msgid "cannot convert NaN to smallint" -msgstr "NaNをsmallintに変換できません" +#: 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 "この後、データベースに再接続し、コマンドを繰り返さなければなりません。" -#: utils/adt/numeric.c:3615 -msgid "numeric field overflow" -msgstr "numericフィールドがオーバーフローしています" +#: tcop/postgres.c:2701 +msgid "floating-point exception" +msgstr "浮動小数点例外" -#: utils/adt/numeric.c:3616 -#, c-format +#: tcop/postgres.c:2702 msgid "" -"A field with precision %d, scale %d must round to an absolute value less " -"than %s%d." +"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 "" -"精度 %d、位取り %dを持つフィールドは、%s%dより小さな絶対値に丸められます。" +"無効な浮動小数点操作が通知されました。おそらくこれは、範囲外の結果や0割りな\n" +"どの無効な操作を意味しています。" -#: utils/adt/numeric.c:3760 utils/adt/numeric.c:3786 utils/adt/float.c:399 -#: utils/adt/float.c:440 utils/adt/float.c:491 -#, c-format -msgid "invalid input syntax for type double precision: \"%s\"" -msgstr "型double precisionの入力構文が無効です: \"%s\"" +#: tcop/postgres.c:2870 +msgid "terminating autovacuum process due to administrator command" +msgstr "管理者コマンドにより自動バキュームを終了しています" -#: utils/adt/numeric.c:4974 utils/adt/float.c:1303 -msgid "cannot take square root of a negative number" -msgstr "負の値の平方根を取ることができません" +#: tcop/postgres.c:2876 tcop/postgres.c:2886 tcop/postgres.c:2937 +msgid "terminating connection due to conflict with recovery" +msgstr "リカバリで競合が発生したため、接続を終了しています" -#: utils/adt/numeric.c:5064 -msgid "argument for function \"exp\" too big" -msgstr "関数\"exp\"の引数が大きすぎます" +#: tcop/postgres.c:2892 +msgid "terminating connection due to administrator command" +msgstr "管理者コマンドにより接続を終了しています" -#: utils/adt/numeric.c:5192 utils/adt/float.c:1415 utils/adt/float.c:1445 -msgid "cannot take logarithm of zero" -msgstr "ゼロの対数を取ることができません" +#: tcop/postgres.c:2907 +msgid "canceling authentication due to timeout" +msgstr "タイムアウトにより認証処理をキャンセルしています" -#: utils/adt/numeric.c:5196 utils/adt/float.c:1419 utils/adt/float.c:1449 -msgid "cannot take logarithm of a negative number" -msgstr "負の値の対数を取ることができません" +#: tcop/postgres.c:2916 +msgid "canceling statement due to statement timeout" +msgstr "ステートメントのタイムアウトによりステートメントをキャンセルしています" -#: utils/adt/date.c:71 -#, c-format -msgid "TIME(%d)%s precision must not be negative" -msgstr "(%d)%sの精度は負ではいけません" +#: tcop/postgres.c:2925 +msgid "canceling autovacuum task" +msgstr "自動バキューム作業をキャンセルしています" -#: utils/adt/date.c:77 -#, c-format -msgid "TIME(%d)%s precision reduced to maximum allowed, %d" -msgstr "TIME(%d)%sの位取りを許容最大値%dまで減らしました" +#: tcop/postgres.c:2944 storage/ipc/standby.c:489 +msgid "canceling statement due to conflict with recovery" +msgstr "リカバリーで競合が発生したためステートメントをキャンセルしています" -#: utils/adt/date.c:167 -#, c-format -msgid "date out of range: \"%s\"" -msgstr "日付が範囲外です: \"%s\"" +#: tcop/postgres.c:2960 +msgid "canceling statement due to user request" +msgstr "ユーザからの要求により文をキャンセルしています" -#: utils/adt/date.c:217 utils/adt/xml.c:1688 -msgid "date out of range" -msgstr "日付が範囲外です" +#: tcop/postgres.c:3041 tcop/postgres.c:3063 +msgid "stack depth limit exceeded" +msgstr "スタック長制限を越えました" -#: utils/adt/date.c:359 -msgid "cannot subtract infinite dates" -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)を増やしてください。" -#: utils/adt/date.c:416 utils/adt/date.c:453 -msgid "date out of range for timestamp" -msgstr "タイムスタンプで日付が範囲外です" +#: tcop/postgres.c:3080 +#, c-format +msgid "\"max_stack_depth\" must not exceed %ldkB." +msgstr "\"max_stack_depth\" は %ldkB を越えないようにしてください" -#: utils/adt/date.c:953 -msgid "cannot convert reserved abstime value to date" -msgstr "予約されたabstimeからdateへの変換はできません" +#: tcop/postgres.c:3082 +msgid "" +"Increase the platform's stack depth limit via \"ulimit -s\" or local " +"equivalent." +msgstr "" +"プラットフォームのスタック長を\"ulimit -s\"(システムに合わせてください)を使" +"用して増加してください" -#: utils/adt/date.c:1107 utils/adt/date.c:1114 utils/adt/date.c:1882 -#: utils/adt/date.c:1889 -msgid "time out of range" -msgstr "時刻が範囲外です" +#: tcop/postgres.c:3386 bootstrap/bootstrap.c:277 postmaster/postmaster.c:681 +#, c-format +msgid "--%s requires a value" +msgstr "--%sには値が必要です" -#: utils/adt/date.c:1760 utils/adt/date.c:1777 +#: tcop/postgres.c:3391 bootstrap/bootstrap.c:282 postmaster/postmaster.c:686 #, c-format -msgid "\"time\" units \"%s\" not recognized" -msgstr "\"time\"の単位\"%s\"が不明です" +msgid "-c %s requires a value" +msgstr "-c %sは値が必要です" -#: utils/adt/date.c:1899 -msgid "time zone displacement out of range" -msgstr "時間帯の置換が範囲外です" +#: tcop/postgres.c:3417 +msgid "invalid command-line arguments for server process" +msgstr "サーバプロセス用のコマンドラインオプションが無効です" -#: utils/adt/date.c:2524 utils/adt/date.c:2541 +#: tcop/postgres.c:3418 tcop/postgres.c:3424 #, c-format -msgid "\"time with time zone\" units \"%s\" not recognized" -msgstr "\"time with time zone\"の単位\"%s\"が不明です" +msgid "Try \"%s --help\" for more information." +msgstr "詳細は\"%s --help\"を実行してください。" -#: utils/adt/date.c:2639 +#: tcop/postgres.c:3422 #, c-format -msgid "\"interval\" time zone \"%s\" not valid" -msgstr "\"interval\"の時間帯\"%s\"が無効です" +msgid "%s: invalid command-line arguments" +msgstr "%s: コマンドライン引数が無効です" -#: utils/adt/like_match.c:103 utils/adt/like_match.c:163 -msgid "LIKE pattern must not end with escape character" -msgstr "LIKE パターンはエスケープ文字で終わってはなりません" +#: tcop/postgres.c:3521 +#, c-format +msgid "%s: no database nor user name specified" +msgstr "%s: データベース名もユーザ名も指定されていません" -#: utils/adt/trigfuncs.c:41 -msgid "suppress_redundant_updates_trigger: must be called as trigger" -msgstr "" -"suppress_redundant_updates_trigger: トリガーとして呼ばれなければなりません" +#: tcop/postgres.c:4060 +#, c-format +msgid "invalid CLOSE message subtype %d" +msgstr "CLOSEメッセージのサブタイプ%dが無効です" -#: utils/adt/trigfuncs.c:47 -msgid "suppress_redundant_updates_trigger: must be called on update" -msgstr "" -"suppress_redundant_updates_trigger: update 時に呼ばれなければなりません" +#: tcop/postgres.c:4093 +#, c-format +msgid "invalid DESCRIBE message subtype %d" +msgstr "DESCRIBEメッセージのサブタイプ%dが無効です" -#: utils/adt/trigfuncs.c:53 -msgid "suppress_redundant_updates_trigger: must be called before update" +#: tcop/postgres.c:4327 +#, c-format +msgid "" +"disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%" +"s" msgstr "" -"suppress_redundant_updates_trigger: update 前に呼ばれなければなりません" - -#: utils/adt/trigfuncs.c:59 -msgid "suppress_redundant_updates_trigger: must be called for each row" -msgstr "suppress_redundant_updates_trigger: 各行ごとに呼ばれなければなりません" - -#: utils/adt/float.c:54 -msgid "value out of range: overflow" -msgstr "範囲外の値です: オーバーフロー" +"接続を切断: セッション期間: %d:%02d:%02d.%03d ユーザ=%s データベース=%s ホス" +"ト=%s%s%s" -#: utils/adt/float.c:59 -msgid "value out of range: underflow" -msgstr "範囲外の値です: アンダーフロー" +#: tcop/utility.c:95 commands/tablecmds.c:812 commands/tablecmds.c:1141 +#: commands/tablecmds.c:2069 commands/tablecmds.c:3780 +#: commands/tablecmds.c:5497 commands/trigger.c:199 commands/trigger.c:1104 +#: rewrite/rewriteDefine.c:265 +#, c-format +msgid "permission denied: \"%s\" is a system catalog" +msgstr "権限がありません: \"%s\"はシステムカタログです" -#: utils/adt/float.c:206 utils/adt/float.c:247 utils/adt/float.c:298 +#. translator: %s is name of a SQL command, eg CREATE +#: tcop/utility.c:253 #, c-format -msgid "invalid input syntax for type real: \"%s\"" -msgstr "型realの入力構文が無効です: \"%s\"" +msgid "cannot execute %s in a read-only transaction" +msgstr "リードオンリーのトランザクションでは %s を実行できません" -#: utils/adt/float.c:242 +#. translator: %s is name of a SQL command, eg CREATE +#: tcop/utility.c:272 #, c-format -msgid "\"%s\" is out of range for type real" -msgstr "型realでは\"%s\"は範囲外です" +msgid "cannot execute %s during recovery" +msgstr "リカバリー中は %s を実行できません" -#: utils/adt/float.c:435 +#. translator: %s is name of a SQL command, eg PREPARE +#: tcop/utility.c:290 #, c-format -msgid "\"%s\" is out of range for type double precision" -msgstr "型double precisionでは\"%s\"は範囲外です" +msgid "cannot execute %s within security-restricted operation" +msgstr "セキュリティー制限操作の中では %s を実行できません" -#: 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 "入力が範囲外です" +#: tcop/utility.c:1194 +msgid "must be superuser to do CHECKPOINT" +msgstr "CHECKPOINTを実行するにはスーパーユーザでなければなりません" -#: utils/adt/float.c:2698 -msgid "lower and upper bounds must be finite" -msgstr "下限および上限は有限でなければなりません" +#: 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が無効です" -#: utils/adt/ri_triggers.c:373 utils/adt/ri_triggers.c:433 -#: utils/adt/ri_triggers.c:596 utils/adt/ri_triggers.c:836 -#: utils/adt/ri_triggers.c:1024 utils/adt/ri_triggers.c:1186 -#: utils/adt/ri_triggers.c:1374 utils/adt/ri_triggers.c:1545 -#: utils/adt/ri_triggers.c:1728 utils/adt/ri_triggers.c:1899 -#: utils/adt/ri_triggers.c:2115 utils/adt/ri_triggers.c:2297 -#: utils/adt/ri_triggers.c:2500 utils/adt/ri_triggers.c:2548 -#: utils/adt/ri_triggers.c:2593 utils/adt/ri_triggers.c:2721 gram.y:2610 -msgid "MATCH PARTIAL not yet implemented" -msgstr "MMATCH PARTIAL はまだ実装されていません" +#: tcop/fastpath.c:331 +#, c-format +msgid "fastpath function call: \"%s\" (OID %u)" +msgstr "近道関数呼び出し: \"%s\"(OID %u))" -#: utils/adt/ri_triggers.c:407 utils/adt/ri_triggers.c:2803 -#: utils/adt/ri_triggers.c:3454 utils/adt/ri_triggers.c:3486 +#: tcop/fastpath.c:415 #, c-format -msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\"" -msgstr "テーブル\"%s\"への挿入、更新は外部キー制約\"%s\"に違反しています" +msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" +msgstr "期間: %s ミリ秒 近道関数呼び出し: \"%s\" (OID %u)" -#: utils/adt/ri_triggers.c:410 utils/adt/ri_triggers.c:2806 -msgid "MATCH FULL does not allow mixing of null and nonnull key values." -msgstr "MACTH FULLではNULLキー値と非NULLキー値を混在できません" +#: tcop/fastpath.c:453 tcop/fastpath.c:580 +#, c-format +msgid "function call message contains %d arguments but function requires %d" +msgstr "関数呼び出しメッセージには%d引数ありましたが、関数には%d必要です" -#: utils/adt/ri_triggers.c:3016 +#: tcop/fastpath.c:461 #, c-format -msgid "function \"%s\" must be fired for INSERT" -msgstr "関数\"%s\"をINSERTで発行しなければなりません" +msgid "function call message contains %d argument formats but %d arguments" +msgstr "関数呼び出しメッセージには%dの引数書式がありましたが、引数は%dでした" -#: utils/adt/ri_triggers.c:3022 +#: tcop/fastpath.c:548 tcop/fastpath.c:631 #, c-format -msgid "function \"%s\" must be fired for UPDATE" -msgstr "関数\"%s\"をUPDATEで発行しなければなりません" +msgid "incorrect binary data format in function argument %d" +msgstr "関数引数%dのバイナリデータ書式が不正です" -#: utils/adt/ri_triggers.c:3036 +#: tcop/pquery.c:660 #, c-format -msgid "function \"%s\" must be fired for DELETE" -msgstr "関数\"%s\"をDELETEで発行しなければなりません" +msgid "bind message has %d result formats but query has %d columns" +msgstr "バインドメッセージは%dの結果書式がありましたが、問い合わせは%d列でした" -#: utils/adt/ri_triggers.c:3065 +#: tcop/pquery.c:738 tcop/pquery.c:1401 commands/portalcmds.c:336 #, c-format -msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\"" -msgstr "テーブル\"%2$s\"のトリガ\"%1$s\"用のpg_constraint項目がありません" +msgid "portal \"%s\" cannot be run" +msgstr "ポータル\"%s\"を実行できません" -#: utils/adt/ri_triggers.c:3067 -msgid "" -"Remove this referential integrity trigger and its mates, then do ALTER TABLE " -"ADD CONSTRAINT." +#: tcop/pquery.c:969 +msgid "cursor can only scan forward" +msgstr "カーゾルは前方へのスキャンしかできません" + +#: tcop/pquery.c:970 +msgid "Declare it with SCROLL option to enable backward scan." msgstr "" -"この参照整合性トリガとその対象を削除し、ALTER TABLE ADD CONSTRAINTを実行して" -"ください" +"後方スキャンを有効にするためにはSCROLLオプションを付けて宣言してください。" -#: utils/adt/ri_triggers.c:3421 +#: tsearch/dict_thesaurus.c:180 #, c-format -msgid "" -"referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave " -"unexpected result" -msgstr "" -"\"%3$s\"の制約\"%2$s\"から\"%1$s\"に行われた参照整合性問い合わせが想定外の結" -"果になりました" +msgid "could not open thesaurus file \"%s\": %m" +msgstr "シソーラスファイル\"%s\"をオープンできませんでした: %m" -#: utils/adt/ri_triggers.c:3425 -msgid "This is most likely due to a rule having rewritten the query." -msgstr "これはほとんどの場合この問い合わせを書き換えるルールが原因です" +#: tsearch/dict_thesaurus.c:213 +msgid "unexpected delimiter" +msgstr "想定外のデリミタです" -#: utils/adt/ri_triggers.c:3456 -#, c-format -msgid "No rows were found in \"%s\"." -msgstr "\"%s\"に行がありませんでした" +#: tsearch/dict_thesaurus.c:263 tsearch/dict_thesaurus.c:279 +msgid "unexpected end of line or lexeme" +msgstr "想定外の行末もしくは単語の終端です" -#: utils/adt/ri_triggers.c:3488 -#, c-format -msgid "Key (%s)=(%s) is not present in table \"%s\"." -msgstr "テーブル\"%3$s\"にキー(%1$s)=(%2$s)がありません" +#: tsearch/dict_thesaurus.c:288 +msgid "unexpected end of line" +msgstr "想定外の行末です" -#: utils/adt/ri_triggers.c:3494 +#: tsearch/dict_thesaurus.c:412 #, c-format msgid "" -"update or delete on table \"%s\" violates foreign key constraint \"%s\" on " -"table \"%s\"" -msgstr "" -"テーブル\"%1$s\"の更新または削除は、テーブル\"%3$s\"の外部キー制約\"%2$s\"に" -"違反します" +"thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)" +msgstr "シソーラスサンプル単語\"%s\"は副辞書で認識されません(規則%d)" -#: utils/adt/ri_triggers.c:3497 +#: tsearch/dict_thesaurus.c:418 #, c-format -msgid "Key (%s)=(%s) is still referenced from table \"%s\"." -msgstr "キー(%s)=(%s)はまだテーブル\"%s\"から参照されています" +msgid "thesaurus sample word \"%s\" is a stop word (rule %d)" +msgstr "シソーラスサンプル単語\"%s\"はストップワードです(規則%d)" + +#: tsearch/dict_thesaurus.c:421 +msgid "Use \"?\" to represent a stop word within a sample phrase." +msgstr "サンプルフレーズ内のストップワードを表すには\"?\"を使用してください" -#: utils/adt/ruleutils.c:2236 +#: tsearch/dict_thesaurus.c:567 #, c-format -msgid "rule \"%s\" has unsupported event type %d" -msgstr "ルール\"%s\"はサポートしていないイベント種類%dを持ちます" +msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)" +msgstr "シソーラス置換単語\"%s\"はストップワードです(規則%d)" -#: utils/adt/ruleutils.c:5473 utils/adt/ruleutils.c:5528 -#: utils/adt/ruleutils.c:5565 utils/adt/regproc.c:635 utils/adt/regproc.c:1485 -msgid "too many arguments" -msgstr "引数が多すぎます" +#: tsearch/dict_thesaurus.c:574 +#, c-format +msgid "" +"thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)" +msgstr "シソーラス置換単語\"%s\"は副辞書で認識されません(規則%d)" -#: utils/adt/oracle_compat.c:892 -msgid "requested character too large" -msgstr "要求した文字が長すぎます" +#: tsearch/dict_thesaurus.c:586 +#, c-format +msgid "thesaurus substitute phrase is empty (rule %d)" +msgstr "シソーラス置換フレーズは空です(規則%d)" + +#: tsearch/dict_thesaurus.c:615 tsearch/dict_ispell.c:53 +msgid "multiple DictFile parameters" +msgstr "重複するDictFileパラメータ" -#: utils/adt/oracle_compat.c:938 utils/adt/oracle_compat.c:992 +#: tsearch/dict_thesaurus.c:624 +msgid "multiple Dictionary parameters" +msgstr "重複する辞書パラメータ" + +#: tsearch/dict_thesaurus.c:631 #, c-format -msgid "requested character too large for encoding: %d" -msgstr "要求した文字は符号化方式では長すぎます: %d" +msgid "unrecognized Thesaurus parameter: \"%s\"" +msgstr "未知のシソーラスパラメータ \"%s\"" -#: utils/adt/oracle_compat.c:985 -msgid "null character not permitted" -msgstr "NULL文字は許されません" +#: tsearch/dict_thesaurus.c:639 tsearch/dict_ispell.c:103 +msgid "missing DictFile parameter" +msgstr "DictFileパラメータがありません" -#: utils/adt/datum.c:80 utils/adt/datum.c:92 -msgid "invalid Datum pointer" -msgstr "Datumポインタが無効です" +#: tsearch/dict_thesaurus.c:643 +msgid "missing Dictionary parameter" +msgstr "Dictionaryパラメータがありません" -#: utils/adt/varlena.c:1333 utils/adt/varlena.c:1346 +#: tsearch/ts_utils.c:53 #, c-format -msgid "could not convert string to UTF-16: error %lu" -msgstr "文字列をUTF-16に変換できませんでした: エラー %lu" +msgid "invalid text search configuration file name \"%s\"" +msgstr "テキスト検索設定ファイル名は%sは無効です" -#: utils/adt/varlena.c:1356 +#: tsearch/ts_utils.c:91 #, c-format -msgid "could not compare Unicode strings: %m" -msgstr "Unicode文字列を比較できませんでした: %m" +msgid "could not open stop-word file \"%s\": %m" +msgstr "ストップワードファイル\"%s\"をオープンできませんでした: %m" -#: utils/adt/varlena.c:1988 utils/adt/varlena.c:2019 utils/adt/varlena.c:2055 -#: utils/adt/varlena.c:2098 +#: tsearch/wparser_def.c:2551 #, c-format -msgid "index %d out of valid range, 0..%d" -msgstr "インデックス%dは有効範囲0から%dまでの間にありません" +msgid "unrecognized headline parameter: \"%s\"" +msgstr "未知の見出しパラメータ: \"%s\"" -#: utils/adt/varlena.c:2198 utils/adt/varlena.c:2203 utils/adt/regproc.c:1320 -#: utils/adt/regproc.c:1325 -msgid "invalid name syntax" -msgstr "名前構文が無効です" +#: tsearch/wparser_def.c:2560 +msgid "MinWords should be less than MaxWords" +msgstr "MinWordsはMaxWordsより小さくなければなりません" -#: utils/adt/varlena.c:2890 -msgid "field position must be greater than zero" -msgstr "フィールド位置は0より大きくなければなりません" +#: tsearch/wparser_def.c:2564 +msgid "MinWords should be positive" +msgstr "MinWordsは正でなければなりません" -#: utils/adt/regproc.c:123 utils/adt/regproc.c:143 +#: 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 以上でなければなりません" + +#: tsearch/to_tsany.c:165 utils/adt/tsvector.c:272 utils/adt/tsvector_op.c:514 #, c-format -msgid "more than one function named \"%s\"" -msgstr "\"%s\"という名前の関数が複数あります" +msgid "string is too long for tsvector (%d bytes, max %d bytes)" +msgstr "TSベクターのための文字列が長すぎます(%dバイト、最大は%dバイト)" + +#: tsearch/dict_simple.c:59 +msgid "multiple Accept parameters" +msgstr "重複するAcceptパラメータ" -#: utils/adt/regproc.c:464 utils/adt/regproc.c:484 utils/adt/regproc.c:643 -#: parser/parse_oper.c:124 parser/parse_oper.c:751 +#: tsearch/dict_simple.c:67 #, c-format -msgid "operator does not exist: %s" -msgstr "演算子が存在しません: %s" +msgid "unrecognized simple dictionary parameter: \"%s\"" +msgstr "未知の単純辞書パラメータ: \"%s\"" -#: utils/adt/regproc.c:468 utils/adt/regproc.c:488 +#: tsearch/spell.c:276 #, c-format -msgid "more than one operator named %s" -msgstr "%sという名前の演算子が複数あります" +msgid "could not open dictionary file \"%s\": %m" +msgstr "辞書ファイル\"%s\"をオープンできませんでした: %m" -#: utils/adt/regproc.c:630 gram.y:5420 -msgid "missing argument" -msgstr "引数がありません" +#: tsearch/spell.c:439 utils/adt/regexp.c:195 +#, c-format +msgid "invalid regular expression: %s" +msgstr "正規表現が無効です: %s" -#: utils/adt/regproc.c:631 gram.y:5421 -msgid "Use NONE to denote the missing argument of a unary operator." -msgstr "単項演算子の存在しない引数を表すのにNONEを使用してください。" +#: tsearch/spell.c:596 tsearch/spell.c:842 tsearch/spell.c:862 +msgid "multibyte flag character is not allowed" +msgstr "マルチバイトフラグ付きの文字は使用できません" -#: utils/adt/regproc.c:636 -msgid "Provide two argument types for operator." -msgstr "演算子には2つの引数型を提供してください" +#: 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" -#: utils/adt/regproc.c:1383 -msgid "expected a left parenthesis" -msgstr "左括弧を想定していました" +#: tsearch/spell.c:675 +msgid "Ispell dictionary supports only default flag value" +msgstr "Ispell の辞書はデフォルトフラグ値のみをサポートします" -#: utils/adt/regproc.c:1399 -msgid "expected a right parenthesis" -msgstr "右括弧を想定していました" +#: tsearch/spell.c:873 +msgid "wrong affix file format for flag" +msgstr "フラグに関する affix ファイルの書式が誤っています" -#: utils/adt/regproc.c:1418 -msgid "expected a type name" -msgstr "型の名前を想定していました" +#: tsearch/dict_synonym.c:119 +#, c-format +msgid "unrecognized synonym parameter: \"%s\"" +msgstr "未知の類義語パラメータ: \"%s\"" -#: utils/adt/regproc.c:1450 -msgid "improper type name" -msgstr "型の名前が不適切です" +#: tsearch/dict_synonym.c:126 +msgid "missing Synonyms parameter" +msgstr "類義語パラメータがありません" -#: utils/adt/bool.c:153 +#: tsearch/dict_synonym.c:133 #, c-format -msgid "invalid input syntax for type boolean: \"%s\"" -msgstr "boolean型への入力構文が無効です: \"%s\"" +msgid "could not open synonym file \"%s\": %m" +msgstr "類義語ファイル\"%s\"をオープンできませんでした: %m" -#: utils/adt/windowfuncs.c:243 -msgid "argument of ntile must be greater than zero" -msgstr "ntile カウントは0より大きくなければなりません" +#: 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 "インデックス付けするには単語が長すぎます" -#: utils/adt/windowfuncs.c:465 -msgid "argument of nth_value must be greater than zero" -msgstr "nth_value 引数は 0 より大きくなければなりません" +#: 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より長い単語は無視されます。" -#: utils/adt/xml.c:135 -msgid "unsupported XML feature" -msgstr "未サポートのXML機能です。" +#: tsearch/ts_locale.c:177 +#, c-format +msgid "line %d of configuration file \"%s\": \"%s\"" +msgstr "設定ファイル\"%2$s\"の%1$d行目:\"%3$s\"" -#: utils/adt/xml.c:136 -msgid "This functionality requires the server to be built with libxml support." -msgstr "この機能はlibxmlサポートを付けたサーバが必要です。" +#: tsearch/ts_locale.c:302 +#, c-format +msgid "conversion from wchar_t to server encoding failed: %m" +msgstr "wchar_tからサーバ符号化方式への変換が失敗しました: %m" -#: utils/adt/xml.c:137 -msgid "You need to rebuild PostgreSQL using --with-libxml." -msgstr "--with-libxmlを使用してPostgreSQLを再構築しなければなりません。" +#: tsearch/wparser.c:314 +msgid "text search parser does not support headline creation" +msgstr "テキスト検索パーサは見出し作成をサポートしません" -#: utils/adt/xml.c:156 utils/mb/mbutils.c:476 -#, c-format -msgid "invalid encoding name \"%s\"" -msgstr "符号化方式名\"%s\"が無効です" +#: tsearch/dict_ispell.c:64 +msgid "multiple AffFile parameters" +msgstr "重複するAffFileパラメータ" -#: utils/adt/xml.c:402 utils/adt/xml.c:407 -msgid "invalid XML comment" -msgstr "無効なXMLコメントです" +#: tsearch/dict_ispell.c:83 +#, c-format +msgid "unrecognized Ispell parameter: \"%s\"" +msgstr "未知のIspellパラメータ: \"%s\"" -#: utils/adt/xml.c:536 -msgid "not an XML document" -msgstr "XML文書ではありません" +#: tsearch/dict_ispell.c:97 +msgid "missing AffFile parameter" +msgstr "AffFileパラメータがありません" -#: utils/adt/xml.c:689 utils/adt/xml.c:712 -msgid "invalid XML processing instruction" -msgstr "無効なXML処理命令です" +#: 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" -#: utils/adt/xml.c:690 +#: bootstrap/bootstrap.c:302 #, c-format -msgid "XML processing instruction target name cannot be \"%s\"." -msgstr "XML処理命令の対象名を\"%s\"とすることができませんでした。" +msgid "%s: invalid command-line arguments\n" +msgstr "%s: コマンドライン引数が無効です\n" -#: utils/adt/xml.c:713 -msgid "XML processing instruction cannot contain \"?>\"." -msgstr "XML処理命令には\"?>\"を含めることはできません。" +#: postmaster/postmaster.c:572 +#, c-format +msgid "%s: invalid argument for option -f: \"%s\"\n" +msgstr "%s: -fオプションの無効な引数: \"%s\"\n" -#: utils/adt/xml.c:792 -msgid "xmlvalidate is not implemented" -msgstr "XML の妥当性検査は実装されていません" +#: postmaster/postmaster.c:658 +#, c-format +msgid "%s: invalid argument for option -t: \"%s\"\n" +msgstr "%s: -tオプションの無効な引数: \"%s\"\n" -#: utils/adt/xml.c:877 -msgid "could not initialize XML library" -msgstr "XMLライブラリを初期化できませんでした" +#: postmaster/postmaster.c:709 +#, c-format +msgid "%s: invalid argument: \"%s\"\n" +msgstr "%s: 無効な引数: \"%s\"\n" -#: utils/adt/xml.c:878 +#: 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 "" -"libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u." +"WAL archival (archive_mode=on) requires wal_level \"archive\" or " +"\"hot_standby\"" msgstr "" -"libxml2が互換性がない文字型を持ちます: sizeof(char)=%u、sizeof(xmlChar)=%u" +"WAL アーカイブ(archive_mode=on) では wal_level を \"archive\" または " +"\"hot_standby\" にする必要があります" -#: utils/adt/xml.c:1417 -msgid "Invalid character value." -msgstr "文字の値が有効ではありません" +#: postmaster/postmaster.c:742 +msgid "" +"WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or " +"\"hot_standby\"" +msgstr "" +"WAL ストリーミング(max_wal_senders > 0) では wal_level を \"archive\" または " +"\"hot_standby\" にする必要があります" -#: utils/adt/xml.c:1420 -msgid "Space required." -msgstr "スペースをあけてください" +#: postmaster/postmaster.c:750 +#, c-format +msgid "%s: invalid datetoken tables, please fix\n" +msgstr "%s: データトークンテーブルが無効です。修復してください\n" -#: utils/adt/xml.c:1423 -msgid "standalone accepts only 'yes' or 'no'." -msgstr "standalone には 'yes' か 'no' だけが有効です" +#: postmaster/postmaster.c:856 +msgid "invalid list syntax for \"listen_addresses\"" +msgstr "\"listen_addresses\"用のリスト構文が無効です" -#: utils/adt/xml.c:1426 -msgid "Malformed declaration: missing version." -msgstr "宣言が誤っています:バージョンがありません" +#: postmaster/postmaster.c:886 +#, c-format +msgid "could not create listen socket for \"%s\"" +msgstr "\"%s\"に関する監視用ソケットを作成できませんでした" -#: utils/adt/xml.c:1429 -msgid "Missing encoding in text declaration." -msgstr "テキスト宣言にエンコーディングの指定がありません" - -#: utils/adt/xml.c:1432 -msgid "Parsing XML declaration: '?>' expected." -msgstr "XML 宣言のパース中: '>?' が必要です。" - -#: utils/adt/xml.c:1435 -#, c-format -msgid "Unrecognized libxml error code: %d." -msgstr "libxml のエラーコードを認識できません: %d" - -#: utils/adt/xml.c:1689 -msgid "XML does not support infinite date values." -msgstr "XMLは無限のデータ値をサポートしません。" - -#: utils/adt/xml.c:1712 utils/adt/xml.c:1739 -msgid "XML does not support infinite timestamp values." -msgstr "XMLは無限のタイムスタンプ値をサポートしません。" - -#: utils/adt/xml.c:2123 -msgid "invalid query" -msgstr "無効な問い合わせです" - -#: utils/adt/xml.c:3352 -msgid "invalid array for XML namespace mapping" -msgstr "XML名前空間マッピング用の配列が無効です" +#: postmaster/postmaster.c:892 +msgid "could not create any TCP/IP sockets" +msgstr "TCP/IPソケットを作成できませんでした" -#: utils/adt/xml.c:3353 -msgid "" -"The array must be two-dimensional with length of the second axis equal to 2." -msgstr "配列は第2軸の長さが2の、2次元配列でなければなりません。" +#: postmaster/postmaster.c:943 +msgid "could not create Unix-domain socket" +msgstr "Unixドメインソケットを作成できませんでした" -#: utils/adt/xml.c:3377 -msgid "empty XPath expression" -msgstr "XPath式が空です" +#: postmaster/postmaster.c:951 +msgid "no socket created for listening" +msgstr "監視用に作成するソケットはありません" -#: utils/adt/xml.c:3425 -msgid "neither namespace name nor URI may be null" -msgstr "名前空間の名前がURIでも空でもありません" +#: postmaster/postmaster.c:985 +msgid "could not create I/O completion port for child queue" +msgstr "子キュー向けのI/O終了ポートを作成できませんでした" -#: utils/adt/xml.c:3432 +#: postmaster/postmaster.c:1029 #, c-format -msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" -msgstr "\"%s\"という名前のXML名前空間およびURI\"%s\"を登録できませんでした。" - -#: utils/adt/tsgistidx.c:100 -msgid "gtsvector_in not implemented" -msgstr "gtsvector_inは実装されていません" +msgid "%s: could not write external PID file \"%s\": %s\n" +msgstr "%s: 外部PIDファイル\"%s\"に書き出せませんでした: %s\n" -#: utils/init/postinit.c:196 postmaster/postmaster.c:1074 +#: postmaster/postmaster.c:1097 utils/init/postinit.c:197 msgid "could not load pg_hba.conf" msgstr "pg_hba.conf の読み込みができませんでした" -#: utils/init/postinit.c:228 -msgid "replication connection authorized: user=%s host=%s port=%s" -msgstr "レプリケーション接続の認証完了: ユーザ=%s、データベース=%s、ポート番号=%s" - -#: utils/init/postinit.c:234 -msgid "replication connection authorized: user=%s host=%s" -msgstr "レプリケーション接続の認証完了: ユーザ=%s、ホスト=%s" - -#: utils/init/postinit.c:240 +#: postmaster/postmaster.c:1144 #, c-format -msgid "connection authorized: user=%s database=%s" -msgstr "接続の認証完了: ユーザ=%s、データベース=%s" +msgid "%s: could not locate matching postgres executable" +msgstr "%s: 一致するpostgres実行ファイルがありませんでした" -#: utils/init/postinit.c:270 +#: postmaster/postmaster.c:1165 storage/file/fd.c:1605 +#: storage/file/copydir.c:67 storage/file/copydir.c:106 utils/adt/misc.c:213 +#: utils/adt/genfile.c:353 utils/misc/tzparser.c:323 commands/tablespace.c:684 #, c-format -msgid "database \"%s\" has disappeared from pg_database" -msgstr "データベース\"%s\"はpg_databaseから消失しました" +msgid "could not open directory \"%s\": %m" +msgstr "ディレクトリ\"%s\"をオープンできませんでした: %m" -#: utils/init/postinit.c:272 +#: postmaster/postmaster.c:1167 utils/misc/tzparser.c:325 #, c-format -msgid "Database OID %u now seems to belong to \"%s\"." -msgstr "OID %uのデータベースは\"%s\"に属するようです。" +msgid "" +"This may indicate an incomplete PostgreSQL installation, or that the file \"%" +"s\" has been moved away from its proper location." +msgstr "" +"これは、PostgreSQLのインストールが不完全であるかまたは、ファイル\"%s\"が" +"本来の場所からなくなってしまったことを示しています。" -#: utils/init/postinit.c:292 +#: postmaster/postmaster.c:1195 #, c-format -msgid "database \"%s\" is not currently accepting connections" -msgstr "現在データベース\"%s\"は接続を受け付けません" +msgid "data directory \"%s\" does not exist" +msgstr "データディレクトリ\"%s\"は存在しません" -#: utils/init/postinit.c:305 +#: postmaster/postmaster.c:1200 #, c-format -msgid "permission denied for database \"%s\"" -msgstr "データベース\"%s\"に権限がありません" +msgid "could not read permissions of directory \"%s\": %m" +msgstr "ディレクトリ\"%s\"の権限を読み取れませんでした: %m" -#: utils/init/postinit.c:306 -msgid "User does not have CONNECT privilege." -msgstr "ユーザはCONNECT権限を持ちません" +#: postmaster/postmaster.c:1208 +#, c-format +msgid "specified data directory \"%s\" is not a directory" +msgstr "指定されたデータディレクトリ \"%s\" はディレクトリではありません" -#: utils/init/postinit.c:323 +#: postmaster/postmaster.c:1224 #, c-format -msgid "too many connections for database \"%s\"" -msgstr "データベース\"%s\"への接続が多すぎます" +msgid "data directory \"%s\" has wrong ownership" +msgstr "データディレクトリ\"%s\"の所有者情報が間違っています" -#: utils/init/postinit.c:345 utils/init/postinit.c:352 -msgid "database locale is incompatible with operating system" -msgstr "データベースのロケールがオペレーティングシステムと互換性がありません" +#: postmaster/postmaster.c:1226 +msgid "The server must be started by the user that owns the data directory." +msgstr "データディレクトリを所有するユーザがサーバを起動しなければなりません。" -#: utils/init/postinit.c:346 +#: postmaster/postmaster.c:1246 #, c-format -msgid "" -"The database was initialized with LC_COLLATE \"%s\", which is not " -"recognized by setlocale()." -msgstr "" -"データベースは LC_COLLATE \"%s\" で初期化されていますが、setlocale() でこれを" -"認識されません" +msgid "data directory \"%s\" has group or world access" +msgstr "データディレクトリ\"%s\"はグループまたは第三者からアクセス可能です" -#: utils/init/postinit.c:348 utils/init/postinit.c:355 -msgid "" -"Recreate the database with another locale or install the missing locale." -msgstr "" -"データベースを別のロケールで再生成するか、または不足しているロケールをインス" -"トールしてください" +#: postmaster/postmaster.c:1248 +msgid "Permissions should be u=rwx (0700)." +msgstr "権限はu=rwx(0700)でなければなりません" -#: utils/init/postinit.c:353 +#: postmaster/postmaster.c:1259 #, c-format msgid "" -"The database was initialized with LC_CTYPE \"%s\", which is not recognized " -"by setlocale()." +"%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 "" -"データベースは LC_CTYPE \"%s\" で初期化されていますが、setlocale()でこれを認" -"識されません" - -#: utils/init/postinit.c:608 -msgid "no roles are defined in this database system" -msgstr "データベースシステム内でロールが定義されていません" +"%s: データベースシステムがありませんでした\n" +"ディレクトリ\"%s\"にあるものと想定していましたが、\n" +"ファイル\"%s\"をオープンできませんでした: %s\n" -#: utils/init/postinit.c:609 +#: postmaster/postmaster.c:1295 #, c-format -msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;." -msgstr "すぐに CREATE USER \"%s\" SUPERUSER; を実行してください。" - -#: utils/init/postinit.c:632 -msgid "new replication connections are not allowed during database shutdown" -msgstr "データベースのシャットダウン中は、新しいレプリケーション接続は許可されません" - -#: utils/init/postinit.c:636 -msgid "must be superuser to connect during database shutdown" -msgstr "データベースのシャットダウン中に接続できるのはスーパーユーザだけです" - -#: utils/init/postinit.c:650 -msgid "" -"remaining connection slots are reserved for non-replication superuser " -"connections" -msgstr "スーパーユーザによる接続用に予約される接続スロットの数を設定します。" - -#: utils/init/postinit.c:663 -msgid "must be superuser to start walsender" -msgstr "WALSENDER を開始できるのはスーパーユーザだけです" +msgid "%s: could not open file \"%s\": %s\n" +msgstr "%s: ファイル\"%s\"をオープンできませんでした: %s\n" -#: utils/init/postinit.c:709 +#: postmaster/postmaster.c:1302 #, c-format -msgid "database %u does not exist" -msgstr "データベース %u は存在しません" - -#: utils/init/postinit.c:761 -msgid "It seems to have just been dropped or renamed." -msgstr "削除またはリネームされたばかりのようです。" +msgid "%s: could not open log file \"%s/%s\": %s\n" +msgstr "%s: ログファイル \"%s/%s\" をオープンできません: %s\n" -#: utils/init/postinit.c:779 +#: postmaster/postmaster.c:1313 #, c-format -msgid "The database subdirectory \"%s\" is missing." -msgstr "データベースのサブディレクトリ\"%s\"がありません。" +msgid "%s: could not fork background process: %s\n" +msgstr "%s: バックグランドプロセスをforkできませんでした: %s\n" -#: utils/init/postinit.c:784 +#: postmaster/postmaster.c:1335 #, c-format -msgid "could not access directory \"%s\": %m" -msgstr "ディレクトリ\"%s\"にアクセスできませんでした: %m" +msgid "%s: could not dissociate from controlling TTY: %s\n" +msgstr "%s: 制御TTYから切り離せませんでした: %s\n" -#: utils/init/miscinit.c:114 +#: postmaster/postmaster.c:1430 #, c-format -msgid "could not change directory to \"%s\": %m" -msgstr "ディレクトリ\"%s\"に移動できませんでした: %m" +msgid "select() failed in postmaster: %m" +msgstr "postmasterでselect()が失敗しました: %m" -#: utils/init/miscinit.c:380 utils/misc/guc.c:4842 -#, c-format -msgid "cannot set parameter \"%s\" within security-restricted operation" -msgstr "セキュリティー制限操作内でパラメーター \"%s\" を設定できません" +#: postmaster/postmaster.c:1592 postmaster/postmaster.c:1623 +msgid "incomplete startup packet" +msgstr "開始パケットが不完全です" -#: utils/init/miscinit.c:441 -#, c-format -msgid "role \"%s\" is not permitted to log in" -msgstr "ロール\"%s\"はログインすることが許されていません" +#: postmaster/postmaster.c:1604 +msgid "invalid length of startup packet" +msgstr "開始パケットの長さが無効です" -#: utils/init/miscinit.c:459 +#: postmaster/postmaster.c:1661 #, c-format -msgid "too many connections for role \"%s\"" -msgstr "ロール\"%s\"からの接続が多すぎます" - -#: utils/init/miscinit.c:519 -msgid "permission denied to set session authorization" -msgstr "set session authorization用の権限がありません" +msgid "failed to send SSL negotiation response: %m" +msgstr "SSL調停応答の送信に失敗しました: %m" -#: utils/init/miscinit.c:599 +#: postmaster/postmaster.c:1690 #, c-format -msgid "invalid role OID: %u" -msgstr "ロールIDが無効です: %u" +msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" +msgstr "" +"フロントエンドプロトコル%u.%uをサポートしていません: サーバは%u.0から %u.%uま" +"でをサポートします" -#: utils/init/miscinit.c:731 -#, c-format -msgid "could not create lock file \"%s\": %m" -msgstr "ロックファイル\"%s\"を作成できませんでした: %m" +#: postmaster/postmaster.c:1741 +msgid "invalid value for boolean option \"replication\"" +msgstr "ブールオプション \"replication\" は無効です" -#: utils/init/miscinit.c:745 -#, c-format -msgid "could not open lock file \"%s\": %m" -msgstr "ロックファイル\"%s\"をオープンできませんでした: %m" +#: postmaster/postmaster.c:1761 +msgid "invalid startup packet layout: expected terminator as last byte" +msgstr "" +"開始パケットの構成が無効です。最終バイトに想定外のターミネータがありました" -#: utils/init/miscinit.c:751 -#, c-format -msgid "could not read lock file \"%s\": %m" -msgstr "ロックファイル\"%s\"を読み取れませんでした: %m" +#: postmaster/postmaster.c:1789 +msgid "no PostgreSQL user name specified in startup packet" +msgstr "開始パケット中に指定されたPostgreSQLユーザ名は存在しません" -#: utils/init/miscinit.c:799 -#, c-format -msgid "lock file \"%s\" already exists" -msgstr "ロックファイル\"%s\"はすでに存在します" +#: postmaster/postmaster.c:1846 +msgid "the database system is starting up" +msgstr "データベースシステムは起動しています" -#: utils/init/miscinit.c:803 -#, c-format -msgid "Is another postgres (PID %d) running in data directory \"%s\"?" -msgstr "他のpostgres(PID %d)がデータディレクトリ\"%s\"で稼動していませんか?" +#: postmaster/postmaster.c:1851 +msgid "the database system is shutting down" +msgstr "データベースシステムはシャットダウンしています" -#: utils/init/miscinit.c:805 -#, c-format -msgid "Is another postmaster (PID %d) running in data directory \"%s\"?" -msgstr "他のpostmaster(PID %d)がデータディレクトリ\"%s\"で稼動していませんか?" +#: postmaster/postmaster.c:1856 +msgid "the database system is in recovery mode" +msgstr "データベースシステムはリカバリモードです" -#: utils/init/miscinit.c:808 -#, c-format -msgid "Is another postgres (PID %d) using socket file \"%s\"?" -msgstr "他のpostgres(PID %d)がソケットファイル\"%s\"を使用していませんか?" +#: postmaster/postmaster.c:1861 storage/lmgr/proc.c:293 +#: storage/ipc/sinvaladt.c:302 storage/ipc/procarray.c:270 +msgid "sorry, too many clients already" +msgstr "現在クライアント数が多すぎます" -#: utils/init/miscinit.c:810 +#: postmaster/postmaster.c:1923 #, c-format -msgid "Is another postmaster (PID %d) using socket file \"%s\"?" -msgstr "他のpostmaster(PID %d)がソケットファイル\"%s\"を使用していませんか?" +msgid "wrong key in cancel request for process %d" +msgstr "プロセス%dに対するキャンセル要求においてキーが間違っています" -#: utils/init/miscinit.c:838 +#: postmaster/postmaster.c:1931 #, c-format -msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use" -msgstr "既存の共有メモリブロック(キー%lu、ID %lu)がまだ使用中です" +msgid "PID %d in cancel request did not match any process" +msgstr "キャンセル要求内のPID %dがどのプロセスにも一致しません" -#: utils/init/miscinit.c:841 -#, 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\" を削除してください。" +#: postmaster/postmaster.c:2137 +msgid "received SIGHUP, reloading configuration files" +msgstr "SIGHUPを受け取りました。設定ファイルをリロードしています" -#: utils/init/miscinit.c:858 -#, c-format -msgid "could not remove old lock file \"%s\": %m" -msgstr "古いロックファイル\"%s\"を削除できませんでした: %m" +#: postmaster/postmaster.c:2160 +msgid "pg_hba.conf not reloaded" +msgstr "pg_hba.conf は再読み込みされません" -#: utils/init/miscinit.c:860 -msgid "" -"The file seems accidentally left over, but it could not be removed. Please " -"remove the file by hand and try again." -msgstr "" -"このファイルは偶然残ってしまったようですが、削除できませんでした。手作業でこ" -"れを削除し再実行してください。" +#: postmaster/postmaster.c:2203 +msgid "received smart shutdown request" +msgstr "スマートシャットダウン要求を受け取りました" -#: utils/init/miscinit.c:882 utils/init/miscinit.c:892 -#, c-format -msgid "could not write lock file \"%s\": %m" -msgstr "ロックファイル\"%s\"に書き出せませんでした: %m" +#: postmaster/postmaster.c:2250 +msgid "received fast shutdown request" +msgstr "高速シャットダウン要求を受け取りました" -#: utils/init/miscinit.c:991 utils/init/miscinit.c:1097 -#: utils/error/elog.c:1403 storage/file/copydir.c:165 -#: storage/file/copydir.c:255 storage/smgr/md.c:532 storage/smgr/md.c:785 -#: access/transam/xlog.c:2441 access/transam/xlog.c:4113 -#: access/transam/xlog.c:4207 access/transam/xlog.c:4305 -#, c-format -msgid "could not open file \"%s\": %m" -msgstr "ファイル\"%s\"をオープンできませんでした: %m" +#: postmaster/postmaster.c:2268 +msgid "aborting any active transactions" +msgstr "活動中の全トランザクションをアボートしています" -#: utils/init/miscinit.c:1091 utils/init/miscinit.c:1104 -#, c-format -msgid "\"%s\" is not a valid data directory" -msgstr "\"%s\"は有効なデータディレクトリではありません" +#: postmaster/postmaster.c:2297 +msgid "received immediate shutdown request" +msgstr "即時シャットダウン要求を受け取りました" -#: utils/init/miscinit.c:1093 -#, c-format -msgid "File \"%s\" is missing." -msgstr "ファイル\"%s\"が存在しません" +#: postmaster/postmaster.c:2373 postmaster/postmaster.c:2401 +msgid "startup process" +msgstr "起動プロセス" -#: utils/init/miscinit.c:1106 -#, c-format -msgid "File \"%s\" does not contain valid data." -msgstr "ファイル\"%s\"に有効なデータがありません。" +#: postmaster/postmaster.c:2376 +msgid "aborting startup due to startup process failure" +msgstr "起動プロセスの失敗のため起動を中断しています" -#: utils/init/miscinit.c:1108 -msgid "You might need to initdb." -msgstr "initdbする必要があるかもしれません" +#: postmaster/postmaster.c:2435 +msgid "database system is ready to accept connections" +msgstr "データベースシステムの接続受付準備が整いました。" -#: utils/init/miscinit.c:1115 access/transam/xlog.c:4570 -#: access/transam/xlog.c:4579 access/transam/xlog.c:4603 -#: access/transam/xlog.c:4610 access/transam/xlog.c:4617 -#: access/transam/xlog.c:4622 access/transam/xlog.c:4629 -#: access/transam/xlog.c:4636 access/transam/xlog.c:4643 -#: access/transam/xlog.c:4650 access/transam/xlog.c:4657 -#: access/transam/xlog.c:4664 access/transam/xlog.c:4673 -#: access/transam/xlog.c:4680 access/transam/xlog.c:4689 -#: access/transam/xlog.c:4696 access/transam/xlog.c:4705 -#: access/transam/xlog.c:4712 -msgid "database files are incompatible with server" -msgstr "データベースファイルがサーバと互換性がありません" +#: postmaster/postmaster.c:2490 +msgid "background writer process" +msgstr "バックグランドライタプロセス" -#: utils/init/miscinit.c:1116 -#, 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と互換性がありません" +#: postmaster/postmaster.c:2506 +msgid "WAL writer process" +msgstr "WALライタプロセス" -#: utils/init/miscinit.c:1164 -#, c-format -msgid "invalid list syntax in parameter \"%s\"" -msgstr "パラメータ\"%s\"のリスト構文が無効です" +#: postmaster/postmaster.c:2520 +msgid "WAL receiver process" +msgstr "WAL 受信プロセス" -#: utils/init/miscinit.c:1201 -#, c-format -msgid "loaded library \"%s\"" -msgstr "ライブラリ\"%s\"をロードしました" +#: postmaster/postmaster.c:2535 +msgid "autovacuum launcher process" +msgstr "自動バキュームランチャプロセス" -#: utils/error/elog.c:1413 -#, c-format -msgid "could not reopen file \"%s\" as stderr: %m" -msgstr "ファイル\"%s\"を標準エラーとして再オープンできませんでした: %m" +#: postmaster/postmaster.c:2550 +msgid "archiver process" +msgstr "アーカイバプロセス" -#: utils/error/elog.c:1426 -#, c-format -msgid "could not reopen file \"%s\" as stdout: %m" -msgstr "ファイル\"%s\"を標準出力として再オープンできませんでした: %m" +#: postmaster/postmaster.c:2566 +msgid "statistics collector process" +msgstr "統計情報収集プロセス" -#: utils/error/elog.c:1811 utils/error/elog.c:1821 utils/error/elog.c:1831 -msgid "[unknown]" -msgstr "[unknown]" +#: postmaster/postmaster.c:2580 +msgid "system logger process" +msgstr "システムログ取得プロセス" -#: utils/error/elog.c:2179 utils/error/elog.c:2461 utils/error/elog.c:2539 -msgid "missing error text" -msgstr "エラーテキストがありません" +#: postmaster/postmaster.c:2615 postmaster/postmaster.c:2634 +#: postmaster/postmaster.c:2641 postmaster/postmaster.c:2659 +msgid "server process" +msgstr "サーバプロセス" -#: utils/error/elog.c:2182 utils/error/elog.c:2185 utils/error/elog.c:2542 -#: utils/error/elog.c:2545 -#, c-format -msgid " at character %d" -msgstr "(文字位置 %d)" +#: postmaster/postmaster.c:2695 +msgid "terminating any other active server processes" +msgstr "他の活動中のサーバプロセスを終了しています" -#: utils/error/elog.c:2195 utils/error/elog.c:2202 -msgid "DETAIL: " -msgstr "詳細: " +#. 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で終了しました" -#: utils/error/elog.c:2209 -msgid "HINT: " -msgstr "ヒント: " +#. 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)は例外%Xで終了しました" -#: utils/error/elog.c:2216 -msgid "QUERY: " -msgstr "クエリー: " +#: postmaster/postmaster.c:2871 postmaster/pgarch.c:579 +msgid "" +"See C include file \"ntstatus.h\" for a description of the hexadecimal value." +msgstr "" +"16進値の説明についてはC インクルードファイル\"ntstatus.h\"を参照してくださ" +"い。" -#: utils/error/elog.c:2223 -msgid "CONTEXT: " -msgstr "コンテキスト: " +#. 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" -#: utils/error/elog.c:2233 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2888 #, c-format -msgid "LOCATION: %s, %s:%d\n" -msgstr "場所: %s, %s:%d\n" +msgid "%s (PID %d) was terminated by signal %d" +msgstr "%s (PID %d)はシグナル%dで終了しました" -#: utils/error/elog.c:2240 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2897 #, c-format -msgid "LOCATION: %s:%d\n" -msgstr "場所: %s:%d\n" +msgid "%s (PID %d) exited with unrecognized status %d" +msgstr "%s (PID %d)は認識できないステータス%dで終了しました" -#: utils/error/elog.c:2254 -msgid "STATEMENT: " -msgstr "ステートメント: " +#: postmaster/postmaster.c:3077 +msgid "abnormal database system shutdown" +msgstr "データベースシステムは異常にシャットダウンしました" -#: utils/error/elog.c:2351 -msgid "Not safe to send CSV data\n" -msgstr "CSVデータを送信するには安全ではありません\n" +#: postmaster/postmaster.c:3116 +msgid "all server processes terminated; reinitializing" +msgstr "全てのサーバプロセスが終了しました: 再初期化しています" -#. translator: This string will be truncated at 47 -#. characters expanded. -#: utils/error/elog.c:2654 +#: postmaster/postmaster.c:3299 #, c-format -msgid "operating system error %d" -msgstr "オペレーティングシステムエラー %d" +msgid "could not fork new process for connection: %m" +msgstr "接続用の新しいプロセスをforkできませんでした: %m" -#: utils/error/elog.c:2677 -msgid "DEBUG" -msgstr "DEBUG" +#: postmaster/postmaster.c:3341 +msgid "could not fork new process for connection: " +msgstr "接続用の新しいプロセスをforkできませんでした" -#: utils/error/elog.c:2681 -msgid "LOG" -msgstr "LOG" +#: postmaster/postmaster.c:3455 +#, c-format +msgid "connection received: host=%s port=%s" +msgstr "接続を受け付けました: ホスト=%s ポート番号=%s" -#: utils/error/elog.c:2684 -msgid "INFO" -msgstr "INFO" +#: postmaster/postmaster.c:3460 +#, c-format +msgid "connection received: host=%s" +msgstr "接続を受け付けました: ホスト=%s" -#: utils/error/elog.c:2687 -msgid "NOTICE" -msgstr "NOTICE" +#: postmaster/postmaster.c:3729 +#, c-format +msgid "could not execute server process \"%s\": %m" +msgstr "サーバプロセス\"%s\"を実行できませんでした: %m" -#: utils/error/elog.c:2690 -msgid "WARNING" -msgstr "WARNING" +#: postmaster/postmaster.c:4246 +msgid "database system is ready to accept read only connections" +msgstr "データベースシステムはリードオンリー接続の受付準備ができました" -#: utils/error/elog.c:2693 -msgid "ERROR" -msgstr "ERROR" +#: postmaster/postmaster.c:4513 +#, c-format +msgid "could not fork startup process: %m" +msgstr "起動プロセスをforkできませんでした: %m" -#: utils/error/elog.c:2696 -msgid "FATAL" -msgstr "FATAL" +#: postmaster/postmaster.c:4517 +#, c-format +msgid "could not fork background writer process: %m" +msgstr "バックグランドライタプロセスをforkできませんでした: %m" -#: utils/error/elog.c:2699 -msgid "PANIC" -msgstr "PANIC" +#: postmaster/postmaster.c:4521 +#, c-format +msgid "could not fork WAL writer process: %m" +msgstr "WALライタプロセスをforkできませんでした: %m" -#: utils/error/assert.c:37 -msgid "TRAP: ExceptionalCondition: bad arguments\n" -msgstr "TRAP: ExceptionalCondition: 不良な引数\n" +#: postmaster/postmaster.c:4525 +#, c-format +msgid "could not fork WAL receiver process: %m" +msgstr "WAL 受信プロセスを fork できませんでした: %m" -#: utils/error/assert.c:40 +#: postmaster/postmaster.c:4529 #, c-format -msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n" -msgstr "TRAP: %s(\\\"%s\\\", ファイル: \\\"%s\\\", 行数: %d)\n" +msgid "could not fork process: %m" +msgstr "プロセスをforkできませんでした: %m" -#: utils/sort/logtape.c:213 +#: postmaster/postmaster.c:4811 #, c-format -msgid "could not write block %ld of temporary file: %m" -msgstr "一時ファイルのブロック%ldを書き込めませんでした: %m" +msgid "could not duplicate socket %d for use in backend: error code %d" +msgstr "" +"バックエンドで使用するためにソケット%dを複製できませんでした: エラーコード %d" -#: utils/sort/logtape.c:215 -msgid "Perhaps out of disk space?" -msgstr "ディスク容量が不足している可能性があります" +#: postmaster/postmaster.c:4843 +#, c-format +msgid "could not create inherited socket: error code %d\n" +msgstr "継承したソケットを作成できませんでした: エラーコード %d\n" -#: utils/sort/logtape.c:232 +#: postmaster/postmaster.c:4872 postmaster/postmaster.c:4879 #, c-format -msgid "could not read block %ld of temporary file: %m" -msgstr "一時ファイルのブロック%ldを読み込めませんでした: %m" +msgid "could not read from backend variables file \"%s\": %s\n" +msgstr "バックエンド変数ファイル\"%s\"から読み取れませんでした: %s\n" -#: utils/sort/tuplesort.c:2806 +#: postmaster/postmaster.c:4888 #, c-format -msgid "could not create unique index \"%s\"" -msgstr "一意性インデックス \"%s\" を作成できませんでした" +msgid "could not remove file \"%s\": %s\n" +msgstr "ファイル\"%s\"を削除できませんでした: %s\n" -#: utils/sort/tuplesort.c:2808 +#: postmaster/postmaster.c:4905 #, c-format -msgid "Key %s is duplicated." -msgstr "キー %s は重複しています。" +msgid "could not map view of backend variables: error code %d\n" +msgstr "バックエンド変数のビューをマップできませんでした: エラーコード %d\n" -#: utils/cache/relmapper.c:454 -msgid "cannot PREPARE a transaction that modified relation mapping" +#: postmaster/postmaster.c:4914 +#, c-format +msgid "could not unmap view of backend variables: error code %d\n" msgstr "" -"リレーションのマッピングを変更したトランザクションは PREPARE できません" +"バックエンド変数のビューをアンマップできませんでした: エラーコード %d\n" -#: utils/cache/relmapper.c:596 utils/cache/relmapper.c:702 -msgid "could not open relation mapping file \"%s\": %m" -msgstr "リレーションのマッピング用ファイル \"%s\" をオープンできませんでした: %m" +#: postmaster/postmaster.c:4921 +#, c-format +msgid "could not close handle to backend parameter variables: error code %d\n" +msgstr "" +"バックエンドパラメータ変数のハンドルをクローズできませんでした: エラーコード%" +"d\n" -#: utils/cache/relmapper.c:609 -msgid "could not read relation mapping file \"%s\": %m" -msgstr "リレーションのマッピング用ファイル \"%s\" から読み取れませんでした: %m" +#: postmaster/postmaster.c:5064 +msgid "could not read exit code for process\n" +msgstr "子プロセスの終了コードの読み込みができませんでした\n" -#: utils/cache/relmapper.c:619 -msgid "relation mapping file \"%s\" contains invalid data" -msgstr "リレーションのマッピング用ファイル \"%s\" に無効なデータがあります" +#: postmaster/postmaster.c:5069 +msgid "could not post child completion status\n" +msgstr "個プロセスの終了コードを投稿できませんでした\n" -#: utils/cache/relmapper.c:629 +#: postmaster/bgwriter.c:482 #, c-format -msgid "relation mapping file \"%s\" contains incorrect checksum" -msgstr "リレーションのマッピング用ファイル \"%s\" の中のチェックサムが正しくありません" +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秒間隔)" -#: utils/cache/relmapper.c:741 -msgid "could not write to relation mapping file \"%s\": %m" -msgstr "リレーションのマッピング用ファイル \"%s\" を書き出せませんでした: %m" +#: postmaster/bgwriter.c:486 +msgid "" +"Consider increasing the configuration parameter \"checkpoint_segments\"." +msgstr "設定パラメータ\"checkpoint_segments\"の増加を検討してください" -#: utils/cache/relmapper.c:754 -msgid "could not fsync relation mapping file \"%s\": %m" -msgstr "リレーションのマッピング用ファイル \"%s\" を fsync できませんでした: %m" +#: postmaster/bgwriter.c:598 +#, c-format +msgid "transaction log switch forced (archive_timeout=%d)" +msgstr "トランザクションログ切り替えが強制されます(archive_timeout=%d)" -#: utils/cache/relmapper.c:760 -msgid "could not close relation mapping file \"%s\": %m" -msgstr "リレーションのマッピング用ファイル \"%s\" をクローズできませんでした: %m" +#: postmaster/bgwriter.c:1056 +msgid "checkpoint request failed" +msgstr "チェックポイント要求が失敗しました" -#: utils/cache/lsyscache.c:2234 utils/cache/lsyscache.c:2267 -#: utils/cache/lsyscache.c:2300 utils/cache/lsyscache.c:2333 -#, c-format -msgid "type %s is only a shell" -msgstr "型%sは単なるシェルです" +#: postmaster/bgwriter.c:1057 +msgid "Consult recent messages in the server log for details." +msgstr "詳細はサーバログの最近のメッセージを調査してください" -#: utils/cache/lsyscache.c:2239 +#: postmaster/bgwriter.c:1223 #, c-format -msgid "no input function available for type %s" -msgstr "型%sの利用可能な入力関数がありません" +msgid "compacted fsync request queue from %d entries to %d entries" +msgstr "ぎっしり詰まった fsync リクエストのキューのうち" +" %d から %d までのエントリ" -#: utils/cache/lsyscache.c:2272 +#: postmaster/pgstat.c:330 #, c-format -msgid "no output function available for type %s" -msgstr "型%sの利用可能な出力関数がありません" +msgid "could not resolve \"localhost\": %s" +msgstr "\"localhost\"を解決できませんでした: %s" -#: utils/cache/plancache.c:587 -msgid "cached plan must not change result type" -msgstr "キャッシュした計画は結果型を変更してはなりません" +#: postmaster/pgstat.c:353 +msgid "trying another address for the statistics collector" +msgstr "統計情報コレクタ用の別のアドレスを試みています" -#: utils/cache/relcache.c:4298 +#: postmaster/pgstat.c:362 #, c-format -msgid "could not create relation-cache initialization file \"%s\": %m" -msgstr "リレーションキャッシュ初期化ファイル\"%sを作成できません: %m" - -#: utils/cache/relcache.c:4300 -msgid "Continuing anyway, but there's something wrong." -msgstr "とりあえず続行しますが、何かが間違っています" +msgid "could not create socket for statistics collector: %m" +msgstr "統計情報コレクタ用のソケットを作成できませんでした: %m" -#: utils/cache/typcache.c:145 parser/parse_type.c:202 +#: postmaster/pgstat.c:374 #, c-format -msgid "type \"%s\" is only a shell" -msgstr "型\"%s\"は単なるシェルです" +msgid "could not bind socket for statistics collector: %m" +msgstr "統計情報コレクタのソケットをバインドできませんでした: %m" -#: utils/cache/typcache.c:325 +#: postmaster/pgstat.c:385 #, c-format -msgid "type %s is not composite" -msgstr "型%sは複合型ではありません" +msgid "could not get address of socket for statistics collector: %m" +msgstr "統計情報コレクタのソケットからアドレスを入手できませんでした: %m" -#: utils/cache/typcache.c:339 -msgid "record type has not been registered" -msgstr "レコード型は登録されていません" - -#: utils/misc/guc.c:476 -msgid "Ungrouped" -msgstr "その他" - -#: utils/misc/guc.c:478 -msgid "File Locations" -msgstr "ファイルの位置" - -#: utils/misc/guc.c:480 -msgid "Connections and Authentication" -msgstr "接続と認証" - -#: utils/misc/guc.c:482 -msgid "Connections and Authentication / Connection Settings" -msgstr "接続と認証/接続設定" - -#: utils/misc/guc.c:484 -msgid "Connections and Authentication / Security and Authentication" -msgstr "接続と認証/セキュリティと認証" +#: postmaster/pgstat.c:401 +#, c-format +msgid "could not connect socket for statistics collector: %m" +msgstr "統計情報コレクタのソケットに接続できませんでした: %m" -#: utils/misc/guc.c:486 -msgid "Resource Usage" -msgstr "リソースの使用" +#: postmaster/pgstat.c:422 +#, c-format +msgid "could not send test message on socket for statistics collector: %m" +msgstr "統計情報コレクタのソケットに試験メッセージを送信できませんでした: %m" -#: utils/misc/guc.c:488 -msgid "Resource Usage / Memory" -msgstr "リソースの使用/メモリ" +#: postmaster/pgstat.c:448 postmaster/pgstat.c:2996 +#, c-format +msgid "select() failed in statistics collector: %m" +msgstr "統計情報コレクタでselect()が失敗しました: %m" -#: utils/misc/guc.c:490 -msgid "Resource Usage / Kernel Resources" -msgstr "リソースの使用/カーネルリソース" +#: postmaster/pgstat.c:463 +msgid "test message did not get through on socket for statistics collector" +msgstr "統計情報コレクタのソケットから試験メッセージを入手できませんでした" -#: utils/misc/guc.c:492 -msgid "Resource Usage / Cost-Based Vacuum Delay" -msgstr "使用リソース / コストベースの vacuum 遅延" +#: postmaster/pgstat.c:478 +#, c-format +msgid "could not receive test message on socket for statistics collector: %m" +msgstr "統計情報コレクタのソケットから試験メッセージを受信できませんでした" -#: utils/misc/guc.c:494 -msgid "Resource Usage / Background Writer" -msgstr "使用リソース / バックグラウンド・ライタ" +#: postmaster/pgstat.c:488 +msgid "incorrect test message transmission on socket for statistics collector" +msgstr "統計情報コレクタのソケットでの試験メッセージの送信が不正です" -#: utils/misc/guc.c:496 -msgid "Resource Usage / Asynchronous Behavior" -msgstr "使用リソース / 非同期処理" +#: postmaster/pgstat.c:511 +#, c-format +msgid "could not set statistics collector socket to nonblocking mode: %m" +msgstr "" +"統計情報コレクタのソケットを非ブロッキングモードに設定できませんでした: %m" -#: utils/misc/guc.c:498 -msgid "Write-Ahead Log" -msgstr "ログ先行書き込み" +#: postmaster/pgstat.c:521 +msgid "disabling statistics collector for lack of working socket" +msgstr "作業用ソケットの欠落のため統計情報コレクタを無効にしています" -#: utils/misc/guc.c:500 -msgid "Write-Ahead Log / Settings" -msgstr "ログ先行書き込み / 設定" +#: postmaster/pgstat.c:623 +#, c-format +msgid "could not fork statistics collector: %m" +msgstr "統計情報コレクタをforkできませんでした: %m" -#: utils/misc/guc.c:502 -msgid "Write-Ahead Log / Checkpoints" -msgstr "ログ先行書き込み / チェックポイント" +#: postmaster/pgstat.c:1153 postmaster/pgstat.c:1177 postmaster/pgstat.c:1208 +msgid "must be superuser to reset statistics counters" +msgstr "統計情報カウンタをリセットするにはスーパーユーザでなければなりません" -#: utils/misc/guc.c:504 -msgid "Write-Ahead Log / Archiving" -msgstr "ログ先行書き込み / アーカイビング" +#: postmaster/pgstat.c:1184 +#, c-format +msgid "unrecognized reset target: \"%s\"" +msgstr "認識できないリセットターゲット: \"%s\"" -#: utils/misc/guc.c:506 -msgid "Write-Ahead Log / Streaming Replication" -msgstr "ログ先行書き込み / ストリーミング・レプリケーション" +#: postmaster/pgstat.c:1185 +msgid "Target must be \"bgwriter\"." +msgstr "ターゲットは \"bgwriter\" でなければなりません" -#: utils/misc/guc.c:508 -msgid "Write-Ahead Log / Standby Servers" -msgstr "ログ先行書き込み / スタンバイサーバ" +#: postmaster/pgstat.c:2975 +#, c-format +msgid "poll() failed in statistics collector: %m" +msgstr "統計情報コレクタでpoll()が失敗しました: %m" -#: utils/misc/guc.c:510 -msgid "Query Tuning" -msgstr "問い合わせの調整" +#: postmaster/pgstat.c:3020 +#, c-format +msgid "could not read statistics message: %m" +msgstr "統計情報メッセージを読み取れませんでした: %m" -#: utils/misc/guc.c:512 -msgid "Query Tuning / Planner Method Configuration" -msgstr "問い合わせの調整/プランナ手法の設定" +#: postmaster/pgstat.c:3291 +#, c-format +msgid "could not open temporary statistics file \"%s\": %m" +msgstr "一時統計情報ファイル\"%s\"をオープンできませんでした: %m" -#: utils/misc/guc.c:514 -msgid "Query Tuning / Planner Cost Constants" -msgstr "問い合わせの調整/プランナのコスト定数" +#: postmaster/pgstat.c:3363 +#, c-format +msgid "could not write temporary statistics file \"%s\": %m" +msgstr "一時統計情報ファイル\"%s\"に書き込みできませんでした: %m" -#: utils/misc/guc.c:516 -msgid "Query Tuning / Genetic Query Optimizer" -msgstr "問い合わせの調整/遺伝的問い合わせオプティマイザ" +#: postmaster/pgstat.c:3372 +#, c-format +msgid "could not close temporary statistics file \"%s\": %m" +msgstr "一時統計情報ファイル\"%s\"をクローズできませんでした: %m" -#: utils/misc/guc.c:518 -msgid "Query Tuning / Other Planner Options" -msgstr "問い合わせの調整/その他のプランなのオプション" +#: postmaster/pgstat.c:3380 +#, c-format +msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" +msgstr "一時統計情報ファイル\"%s\"の名前を\"%s\"に変更できませんでした: %m" -#: utils/misc/guc.c:520 -msgid "Reporting and Logging" -msgstr "レポートとログ" +#: postmaster/pgstat.c:3486 postmaster/pgstat.c:3715 +#, c-format +msgid "could not open statistics file \"%s\": %m" +msgstr "統計情報ファイル\"%s\"をオープンできませんでした: %m" -#: utils/misc/guc.c:522 -msgid "Reporting and Logging / Where to Log" -msgstr "レポートとログ/ログの場所" +#: postmaster/pgstat.c:3498 postmaster/pgstat.c:3508 postmaster/pgstat.c:3530 +#: postmaster/pgstat.c:3545 postmaster/pgstat.c:3608 postmaster/pgstat.c:3626 +#: postmaster/pgstat.c:3642 postmaster/pgstat.c:3660 postmaster/pgstat.c:3676 +#: postmaster/pgstat.c:3727 postmaster/pgstat.c:3738 +#, c-format +msgid "corrupted statistics file \"%s\"" +msgstr "統計情報ファイル \"%s\" が破損しています" -#: utils/misc/guc.c:524 -msgid "Reporting and Logging / When to Log" -msgstr "レポートとログ/ログのタイミング" +#: postmaster/pgstat.c:4036 +msgid "database hash table corrupted during cleanup --- abort" +msgstr "" +"整理処理においてデータベースハッシュテーブルが破損しました --- 中断します" -#: utils/misc/guc.c:526 -msgid "Reporting and Logging / What to Log" -msgstr "レポートとログ/ログの内容" +#: postmaster/syslogger.c:390 +#, c-format +msgid "select() failed in logger process: %m" +msgstr "ロガープロセスでselect()が失敗しました: %m" -#: utils/misc/guc.c:528 -msgid "Statistics" -msgstr "統計情報" +#: postmaster/syslogger.c:402 postmaster/syslogger.c:968 +#, c-format +msgid "could not read from logger pipe: %m" +msgstr "ロガーパイプから読み取れませんでした: %m" -#: utils/misc/guc.c:530 -msgid "Statistics / Monitoring" -msgstr "統計情報/監視" +#: postmaster/syslogger.c:449 +msgid "logger shutting down" +msgstr "ロガーを停止しています" -#: utils/misc/guc.c:532 -msgid "Statistics / Query and Index Statistics Collector" -msgstr "統計情報/問い合わせとインデックスの統計情報収集器" +#: postmaster/syslogger.c:493 postmaster/syslogger.c:507 +#, c-format +msgid "could not create pipe for syslog: %m" +msgstr "syslog用のパイプを作成できませんでした: %m" -#: utils/misc/guc.c:534 -msgid "Autovacuum" -msgstr "自動バキューム" +#: postmaster/syslogger.c:534 +#, c-format +msgid "could not fork system logger: %m" +msgstr "システムロガーをforkできませんでした: %m" -#: utils/misc/guc.c:536 -msgid "Client Connection Defaults" -msgstr "クライアント接続のデフォルト" +#: postmaster/syslogger.c:565 +#, c-format +msgid "could not redirect stdout: %m" +msgstr "標準出力にリダイレクトできませんでした: %m" -#: utils/misc/guc.c:538 -msgid "Client Connection Defaults / Statement Behavior" -msgstr "クライアント接続のデフォルト/文の振舞い" +#: postmaster/syslogger.c:570 postmaster/syslogger.c:588 +#, c-format +msgid "could not redirect stderr: %m" +msgstr "標準エラー出力にリダイレクトできませんでした: %m" -#: utils/misc/guc.c:540 -msgid "Client Connection Defaults / Locale and Formatting" -msgstr "クライアント接続のデフォルト/ロケールと整形" +#: postmaster/syslogger.c:923 +#, c-format +msgid "could not write to log file: %s\n" +msgstr "ログファイルに書き出せませんでした: %s\n" -#: utils/misc/guc.c:542 -msgid "Client Connection Defaults / Other Defaults" -msgstr "クライアント接続のデフォルト/その他のデフォルト" +#: postmaster/syslogger.c:1042 +#, c-format +msgid "could not open log file \"%s\": %m" +msgstr "ロックファイル \"%s\" をオープンできませんでした: %m" -#: utils/misc/guc.c:544 -msgid "Lock Management" -msgstr "ロック管理" +#: postmaster/syslogger.c:1111 postmaster/syslogger.c:1156 +msgid "disabling automatic rotation (use SIGHUP to re-enable)" +msgstr "" +"自動ローテーションを無効にしています(再度有効にするにはSIGHUPを使用してくださ" +"い)" -#: utils/misc/guc.c:546 -msgid "Version and Platform Compatibility" -msgstr "バージョン、プラットフォーム間の互換性" +#: postmaster/pgarch.c:158 +#, c-format +msgid "could not fork archiver: %m" +msgstr "アーカイバをforkできませんでした: %m" -#: utils/misc/guc.c:548 -msgid "Version and Platform Compatibility / Previous PostgreSQL Versions" -msgstr "バージョン、プラットフォーム間の互換性/以前のバージョンのPostgreSQL" +#: postmaster/pgarch.c:450 +msgid "archive_mode enabled, yet archive_command is not set" +msgstr "archive_modeは有効ですが、archive_commandが設定されていません" -#: utils/misc/guc.c:550 -msgid "Version and Platform Compatibility / Other Platforms and Clients" +#: postmaster/pgarch.c:465 +#, c-format +msgid "transaction log file \"%s\" could not be archived: too many failures" msgstr "" -"バージョン、プラットフォーム間の互換性/他のプラットフォームとクライアント" +"トランザクションログファイル\"%s\"をアーカイブできませんでした: 失敗が多すぎ" +"ます" -#: utils/misc/guc.c:552 -msgid "Preset Options" -msgstr "事前設定オプション" +#: postmaster/pgarch.c:568 +#, c-format +msgid "archive command failed with exit code %d" +msgstr "アーカイブコマンドがリターンコード %dで失敗しました" -#: utils/misc/guc.c:554 -msgid "Customized Options" -msgstr "カスタマイズ用オプション" +#: 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" -#: utils/misc/guc.c:556 -msgid "Developer Options" -msgstr "開発者向けオプション" +#: postmaster/pgarch.c:577 +#, c-format +msgid "archive command was terminated by exception 0x%X" +msgstr "アーカイブコマンドが例外0x%Xで終了しました" -#: utils/misc/guc.c:610 -msgid "Enables the planner's use of sequential-scan plans." -msgstr "プランナによるシーケンシャルスキャン計画の使用を有効にします。" +#: postmaster/pgarch.c:584 +#, c-format +msgid "archive command was terminated by signal %d: %s" +msgstr "アーカイブコマンドはシグナル%dにより終了しました: %s" -#: utils/misc/guc.c:618 -msgid "Enables the planner's use of index-scan plans." -msgstr "プランナによるインデックススキャン計画の使用を有効にします。" +#: postmaster/pgarch.c:591 +#, c-format +msgid "archive command was terminated by signal %d" +msgstr "アーカイブコマンドはシグナル%dにより終了しました" -#: utils/misc/guc.c:626 -msgid "Enables the planner's use of bitmap-scan plans." -msgstr "プランナによるビットマップスキャン計画の使用を有効にします。" +#: postmaster/pgarch.c:600 +#, c-format +msgid "archive command exited with unrecognized status %d" +msgstr "アーカイブコマンドは不明のステータス%dで終了しました" -#: utils/misc/guc.c:634 -msgid "Enables the planner's use of TID scan plans." -msgstr "プランナによるTIDスキャン計画の使用を有効にします。" +#: postmaster/pgarch.c:612 +#, c-format +msgid "archived transaction log file \"%s\"" +msgstr "トランザクションログファイル\"%s\"をアーカイブしました" -#: utils/misc/guc.c:642 -msgid "Enables the planner's use of explicit sort steps." -msgstr "プランナによる明示的ソート段階の使用を有効にします。" +#: postmaster/pgarch.c:661 +#, c-format +msgid "could not open archive status directory \"%s\": %m" +msgstr "アーカイブステータスディレクトリ\"%s\"をオープンできませんでした: %m" -#: utils/misc/guc.c:650 -msgid "Enables the planner's use of hashed aggregation plans." -msgstr "プランナによるハッシュされた集約計画の使用を有効にします。" +#: postmaster/autovacuum.c:359 +#, c-format +msgid "could not fork autovacuum launcher process: %m" +msgstr "autovacuum ランチャープロセスを fork できませんでした: %m" -#: utils/misc/guc.c:658 -msgid "Enables the planner's use of materialization." -msgstr "プランナによる具体化(materialization)の使用を有効にします。" +#: postmaster/autovacuum.c:404 +msgid "autovacuum launcher started" +msgstr "自動バキュームランチャプロセス" -#: utils/misc/guc.c:666 -msgid "Enables the planner's use of nested-loop join plans." -msgstr "プランナによる入れ子状ループ結合計画の使用を有効にします。" +#: postmaster/autovacuum.c:760 +msgid "autovacuum launcher shutting down" +msgstr "自動バキュームランチャを停止しています" -#: utils/misc/guc.c:674 -msgid "Enables the planner's use of merge join plans." -msgstr "プランナによるマージ結合計画の使用を有効にします。" +#: postmaster/autovacuum.c:1395 +#, c-format +msgid "could not fork autovacuum worker process: %m" +msgstr "autovacuum ワーカープロセスを fork できませんでした: %m" -#: utils/misc/guc.c:682 -msgid "Enables the planner's use of hash join plans." -msgstr "プランナによるハッシュ結合計画の使用を有効にします。" +#: postmaster/autovacuum.c:1604 +#, c-format +msgid "autovacuum: processing database \"%s\"" +msgstr "autovacuum: データベース\"%s\"の処理中です" -#: utils/misc/guc.c:690 -msgid "Enables genetic query optimization." -msgstr "遺伝的問い合わせ最適化を有効にします。" +#: postmaster/autovacuum.c:2007 +#, c-format +msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"" +msgstr "" +"autovacuum: データベース \"%3$s\" において、親がなくなった一時テーブル \"%1$s" +"\".\"%2$s\" を削除しています" -#: utils/misc/guc.c:691 -msgid "This algorithm attempts to do planning without exhaustive searching." -msgstr "このアルゴリズムでは、しらみつぶし検索を行わない計画の作成を試みます。" +#: postmaster/autovacuum.c:2019 +#, c-format +msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\"" +msgstr "" +"autovacuum: データベース \"%3$s\" において、親がなくなった一時テーブル \"%1$s" +"\".\"%2$s\" が見つかりました" -#: utils/misc/guc.c:700 -msgid "Shows whether the current user is a superuser." -msgstr "現在のユーザがスーパーユーザかどうかを表示します。" +#: postmaster/autovacuum.c:2289 +#, c-format +msgid "automatic vacuum of table \"%s.%s.%s\"" +msgstr "テーブル\"%s.%s.%s\"の自動バキューム" -#: utils/misc/guc.c:709 -msgid "Enables advertising the server via Bonjour." -msgstr "Bonjour を経由したサーバー広告を有効にします" +#: postmaster/autovacuum.c:2292 +#, c-format +msgid "automatic analyze of table \"%s.%s.%s\"" +msgstr "テーブル\"%s.%s.%s\"の自動解析" -#: utils/misc/guc.c:717 -msgid "Enables SSL connections." -msgstr "SSL接続を有効にします。" +#: postmaster/autovacuum.c:2778 +msgid "autovacuum not started because of misconfiguration" +msgstr "誤設定のためautovacuumを起動できません" -#: utils/misc/guc.c:725 -msgid "Forces synchronization of updates to disk." -msgstr "強制的に更新をディスクに同期します。" +#: postmaster/autovacuum.c:2779 +msgid "Enable the \"track_counts\" option." +msgstr "\"track_counts\"オプションを有効にします。" -#: utils/misc/guc.c:726 -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" -"()システムコールを使用します。これにより、オペレーティングシステムやハード" -"ウェアがクラッシュした後でもデータベースクラスタは一貫した状態に復旧すること" -"ができます。" +#: storage/buffer/localbuf.c:190 +msgid "no empty local buffer available" +msgstr "利用できる、空のローカルバッファがありません" -#: utils/misc/guc.c:736 -msgid "Sets immediate fsync at commit." -msgstr "コミット時に即座にfsyncするよう設定します" +#: storage/buffer/bufmgr.c:134 storage/buffer/bufmgr.c:239 +msgid "cannot access temporary tables of other sessions" +msgstr "他のセッションの一時テーブルにはアクセスできません" -#: utils/misc/guc.c:744 -msgid "Continues processing past damaged page headers." -msgstr "破損したページヘッダがあっても処理を継続します。" +#: storage/buffer/bufmgr.c:373 +#, c-format +msgid "unexpected data beyond EOF in block %u of relation %s" +msgstr "" +"リレーション %2$s の %1$u ブロック目で、EOF の先に想定外のデータを検出しまし" +"た" -#: utils/misc/guc.c:745 +#: storage/buffer/bufmgr.c:375 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." +"This has been seen to occur with buggy kernels; consider updating your " +"system." msgstr "" -"ページヘッダの障害が分かると、通常PostgreSQLはエラーの報告を行ない、現在のト" -"ランザクションを中断させます。zero_damaged_pagesを真に設定することにより、シ" -"ステムは代わりに警告を報告し、障害のあるページをゼロで埋め、処理を継続しま" -"す。 この動作により、障害のあったページ上にある全ての行のデータを破壊されま" -"す。" +"これはカーネルの不具合で発生した模様です。システムの更新を検討してください。" -#: utils/misc/guc.c:757 -msgid "Writes full pages to WAL when first modified after a checkpoint." +#: storage/buffer/bufmgr.c:447 +#, c-format +msgid "invalid page header in block %u of relation %s; zeroing out page" msgstr "" -"チェックポイントの後最初に変更された時、ページ全体をWALに書き出します。" +"リレーション %2$s の %1$u ブロック目のページヘッダが無効です:ページをゼロで" +"埋めました" -#: utils/misc/guc.c:758 -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." +#: storage/buffer/bufmgr.c:455 +#, c-format +msgid "invalid page header in block %u of relation %s" +msgstr "リレーション %2$s の %1$u ブロック目のページヘッダが無効です" + +#: 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 "複数回失敗しました ---ずっと書き込みエラーが続くかもしれません。" + +#: storage/buffer/bufmgr.c:2751 storage/buffer/bufmgr.c:2770 +#, c-format +msgid "writing block %u of relation %s" +msgstr "ブロック %u を リレーション %s に書き込んでいます" + +#: storage/smgr/md.c:378 storage/smgr/md.c:849 +#, c-format +msgid "could not truncate file \"%s\": %m" +msgstr "ファイル \"%s\" の切り詰め処理ができませんでした: %m" + +#: storage/smgr/md.c:446 +#, c-format +msgid "cannot extend file \"%s\" beyond %u blocks" +msgstr "ファイル \"%s\" を %u ブロック以上に拡張できません" + +#: 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 "ファイル \"%2$s\" で %1$u ブロック目にシークできませんでした: %3$m" + +#: storage/smgr/md.c:476 +#, c-format +msgid "could not extend file \"%s\": %m" +msgstr "ファイル \"%s\" を拡張できませんでした: %m" + +#: 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 "" -"オペレーティングシステムがクラッシュした時にページ書き込みが実行中だった場" -"合\n" -"にのみ、部分的なディスクへの書き出しが起こる可能性があります。リカバリ中、" -"WAL\n" -"に保存された行の変更では完全に復旧させることができません。このオプションによ" -"り、\n" -"チェックポイントの後の最初の変更時にWALにページを書き出しますので、完全な復" -"旧\n" -"が可能になります。" +"ファイル \"%1$s\" を拡張できませんでした:%4$u ブロックで %3$d バイト中 %2$d " +"バイト分のみを書き出しました。" -#: utils/misc/guc.c:769 -msgid "Runs the server silently." -msgstr "サーバを出力なしで実行します。" +#: storage/smgr/md.c:647 +#, c-format +msgid "could not read block %u in file \"%s\": %m" +msgstr "ファイル \"%2$s\" で %1$u ブロックを読み取れませんでした: %3$m" -#: utils/misc/guc.c:770 -msgid "" -"If this parameter is set, the server will automatically run in the " -"background and any controlling terminals are dissociated." +#: 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\" のブロック %1$u を読み取れませんでした:%4$d バイト中 %3$d " +"バイト分のみ読み取りました" -#: utils/misc/guc.c:778 -msgid "Logs each checkpoint." -msgstr "各チェックポイントをログに出力します。" +#: storage/smgr/md.c:722 +#, c-format +msgid "could not write block %u in file \"%s\": %m" +msgstr "ファイル \"%2$s\" で %1$u ブロックが書き出せませんでした: %3$m" -#: utils/misc/guc.c:786 -msgid "Logs each successful connection." -msgstr "成功した接続を全てログに出力します。" +#: 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\" のブロック %1$u を書き込めませんでした:%4$d バイト中 %3$d " +"バイト分のみ書き込みました" -#: utils/misc/guc.c:794 -msgid "Logs end of a session, including duration." -msgstr "セッションの終了時刻とその期間をログに出力します。" +#: 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 ブロック" +"のみとなりました" -#: utils/misc/guc.c:802 -msgid "Turns on various assertion checks." -msgstr "各種アサーション検査を有効にします。" +#: storage/smgr/md.c:874 +#, c-format +msgid "could not truncate file \"%s\" to %u blocks: %m" +msgstr "ファイル \"%s\" を %u ブロックに切り詰められませんでした: %m" -#: utils/misc/guc.c:803 -msgid "This is a debugging aid." -msgstr "これはデバッグ用です。" +#: storage/smgr/md.c:1128 +#, c-format +msgid "could not fsync file \"%s\" but retrying: %m" +msgstr "ファイル \"%s\" を fsync できませんでした: %m" -#: utils/misc/guc.c:817 utils/misc/guc.c:899 utils/misc/guc.c:958 -#: utils/misc/guc.c:967 utils/misc/guc.c:976 utils/misc/guc.c:985 -#: utils/misc/guc.c:1587 utils/misc/guc.c:1596 -msgid "No description available." -msgstr "説明文はありません" +#: storage/smgr/md.c:1270 +msgid "could not forward fsync request because request queue is full" +msgstr "" +"リクエストキューが満杯につき fsync リクエストのフォワードができませんでした" -#: utils/misc/guc.c:826 -msgid "Logs the duration of each completed SQL statement." -msgstr "完了したSQL全ての期間をログに出力します。" +#: storage/smgr/md.c:1637 +#, c-format +msgid "could not open file \"%s\" (target block %u): %m" +msgstr "ファイル \"%s\"(対象ブロック %u)をオープンできませんでした: %m" -#: utils/misc/guc.c:834 -msgid "Logs each query's parse tree." -msgstr "各クエリーのパースツリーのログを取ります" +#: storage/smgr/md.c:1659 +#, c-format +msgid "could not seek to end of file \"%s\": %m" +msgstr "ファイル \"%s\" の終端(EOF)をシークできませんでした: %m" -#: utils/misc/guc.c:842 -msgid "Logs each query's rewritten parse tree." -msgstr "各クエリーのパースツリーが再度書かれた分のログを取ります" +#: storage/lmgr/lmgr.c:720 +#, c-format +msgid "relation %u of database %u" +msgstr "データベース%2$uのリレーション%1$u" -#: utils/misc/guc.c:850 -msgid "Logs each query's execution plan." -msgstr "各クエリーの実行計画をログに出力します。" +#: storage/lmgr/lmgr.c:726 +#, c-format +msgid "extension of relation %u of database %u" +msgstr "データベース%2$uのリレーション%1$uの拡張" -#: utils/misc/guc.c:858 -msgid "Indents parse and plan tree displays." -msgstr "解析ツリーと計画ツリーの表示をインデントします。" +#: storage/lmgr/lmgr.c:732 +#, c-format +msgid "page %u of relation %u of database %u" +msgstr "データベース%3$uのリレーション%2$uのページ%1$u" -#: utils/misc/guc.c:866 -msgid "Writes parser performance statistics to the server log." -msgstr "パーサの性能統計情報をサーバログに出力します。" +#: storage/lmgr/lmgr.c:739 +#, c-format +msgid "tuple (%u,%u) of relation %u of database %u" +msgstr "データベース%4$uのリレーション%3$uのタプル(%2$u,%1$u)" -#: utils/misc/guc.c:874 -msgid "Writes planner performance statistics to the server log." -msgstr "プランナの性能統計情報をサーバログに出力します。" +#: storage/lmgr/lmgr.c:747 +#, c-format +msgid "transaction %u" +msgstr "トランザクション %u" -#: utils/misc/guc.c:882 -msgid "Writes executor performance statistics to the server log." -msgstr "エグゼキュータの性能統計情報をサーバログに出力します。" +#: storage/lmgr/lmgr.c:752 +#, c-format +msgid "virtual transaction %d/%u" +msgstr "仮想トランザクション %d/%u" -#: utils/misc/guc.c:890 -msgid "Writes cumulative performance statistics to the server log." -msgstr "累積の性能統計情報をサーバログに出力します。" +#: storage/lmgr/lmgr.c:758 +#, c-format +msgid "object %u of class %u of database %u" +msgstr "データベース%3$uのリレーション%2$uのオブジェクト%1$u" -#: utils/misc/guc.c:910 -msgid "Collects information about executing commands." -msgstr "実行中のコマンドに関する情報を収集します。" +#: storage/lmgr/lmgr.c:766 +#, c-format +msgid "user lock [%u,%u,%u]" +msgstr "ユーザロック[%u,%u,%u]" -#: utils/misc/guc.c:911 +#: 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 "ロックタグ種類%dは不明です" + +#: storage/lmgr/predicate.c:584 +msgid "not enough elements in RWConflictPool to record a rw-conflict" +msgstr "RWConflictPool にRW競合を記録するための要素が不足しています" + +#: storage/lmgr/predicate.c:585 storage/lmgr/predicate.c:613 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 "" -"各セッションで現在実行中のコマンドに関して、そのコマンドが実行を開始した時点" -"の時刻と一緒に情報の収集を有効にします。" +"You might need to run fewer transactions at a time or increase " +"max_connections." +msgstr "トランザクションの同時実行数を減らすか max_connections を増やす" +"必要があるかもしれません" -#: utils/misc/guc.c:920 -msgid "Collects statistics on database activity." -msgstr "データベースの活動について統計情報を収集します。" +#: storage/lmgr/predicate.c:612 +msgid "not enough elements in RWConflictPool to record a potential rw-conflict" +msgstr "RWConflictPool にRW競合の可能性を記録するための要素が不足しています" -#: utils/misc/guc.c:929 -msgid "Updates the process title to show the active SQL command." -msgstr "活動中のSQLコマンドを表示するようプロセスタイトルを更新します。" +#: storage/lmgr/predicate.c:817 +msgid "memory for serializable conflict tracking is nearly exhausted" +msgstr "シリアライズ可能な競合追跡のためのメモリがもうすぐ一杯になります" -#: utils/misc/guc.c:930 +#: storage/lmgr/predicate.c:818 +#, msgid "" -"Enables updating of the process title every time a new SQL command is " -"received by the server." +"There may be an idle transaction or a forgotten prepared transaction causing " +"this." msgstr "" -"新しいSQLコマンドをサーバが受信する度にプロセスタイトルを更新することを有効に" -"します。" +"この原因となっている、アイドル状態のトランザクションまたは使われないままの" +"プリペアドステートメントがあるかもしれません" -#: utils/misc/guc.c:938 -msgid "Starts the autovacuum subprocess." -msgstr "subprocessサブプロセスを起動します。" +#: storage/lmgr/predicate.c:1100 storage/lmgr/predicate.c:1171 +#, c-format +msgid "" +"not enough shared memory for elements of data structure \"%s\" (%lu bytes " +"requested)" +msgstr "データ構造体 \"%s\" の要素のための共有メモリが不足しています" +"( %lu バイト必要)" -#: utils/misc/guc.c:947 -msgid "Generates debugging output for LISTEN and NOTIFY." -msgstr "LISTENとNOTIFYコマンドのためのデバッグ出力を生成します。" +#: storage/lmgr/predicate.c:1445 +msgid "deferrable snapshot was unsafe; trying a new one" +msgstr "遅延可能スナップショットは安全ではありません。" +"新しいスナップショットを取得しようとしています。" -#: utils/misc/guc.c:996 -msgid "Logs long lock waits." -msgstr "長期のロック待機をログに記録します。" +#: storage/lmgr/predicate.c:2139 storage/lmgr/predicate.c:2154 +#: storage/lmgr/predicate.c:3511 storage/lmgr/predicate.c:4623 +#: 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 storage/ipc/shmem.c:190 utils/hash/dynahash.c:928 +msgid "out of shared memory" +msgstr "共有メモリが不足しています" -#: utils/misc/guc.c:1005 -msgid "Logs the host name in the connection logs." -msgstr "接続ログ内でホスト名を出力します。" +#: storage/lmgr/predicate.c:2140 storage/lmgr/predicate.c:2155 +#: storage/lmgr/predicate.c:3512 +#, +msgid "You might need to increase max_pred_locks_per_transaction." +msgstr "max_pred_locks_per_transaction を増やす必要があるかもしれません" -#: utils/misc/guc.c:1006 +#: storage/lmgr/predicate.c:3664 storage/lmgr/predicate.c:3753 +#: storage/lmgr/predicate.c:3761 storage/lmgr/predicate.c:3802 +#: storage/lmgr/predicate.c:4040 storage/lmgr/predicate.c:4362 +#: storage/lmgr/predicate.c:4374 storage/lmgr/predicate.c:4415 +#, 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アドレスのみが表示されま" -"す。 このオプションを有効にすることで、ホスト名もログに表示されるようになりま" -"す。 ホスト名解決の設定次第で、無視できないほどの性能の悪化が課せられることに" -"注意してください。" +"could not serialize access due to read/write dependencies among transactions" +msgstr "トランザクション間で read/write の依存性があったため、" +"アクセスの直列化ができませんでした" -#: utils/misc/guc.c:1016 -msgid "Causes subtables to be included by default in various commands." -msgstr "各種コマンドにおいて、デフォルトで子テーブルを含めるようにします。" +#: storage/lmgr/predicate.c:3665 +msgid "Cancelled on identification as a pivot, during conflict out checking." +msgstr "競合チェック中にピボットとしての識別処理がキャンセルされました" -#: utils/misc/guc.c:1024 -msgid "Encrypt passwords." -msgstr "パスワードを暗号化します。" +#: storage/lmgr/predicate.c:3666 storage/lmgr/predicate.c:3755 +#: storage/lmgr/predicate.c:3763 storage/lmgr/predicate.c:3804 +#: storage/lmgr/predicate.c:4042 storage/lmgr/predicate.c:4364 +#: storage/lmgr/predicate.c:4376 storage/lmgr/predicate.c:4417 +msgid "The transaction might succeed if retried." +msgstr "リトライが行われた場合、このトランザクションは成功するかもしれません" -#: utils/misc/guc.c:1025 +#: storage/lmgr/predicate.c:3754 +#, c-format +msgid "Cancelled on conflict out to old pivot %u." +msgstr "競合によりキャンセルされ、古いピボット %u に戻りました" + +#: storage/lmgr/predicate.c:3762 +#, c-format 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 "" -"ENCRYPTEDもしくはUNENCRYPTEDの指定無しにCREATE USERもしくはALTER USERでパス" -"ワードが指定された場合、このオプションがパスワードの暗号化を行なうかどうかを" -"決定します。" +"Cancelled on identification as a pivot, with conflict out to old committed " +"transaction %u." +msgstr "競合によりピボットとしての識別処理がキャンセルされ、" +"古いコミット済みトランザクション %u に戻りました" -#: utils/misc/guc.c:1034 -msgid "Treats \"expr=NULL\" as \"expr IS NULL\"." -msgstr "\"expr=NULL\"という形の式は\"expr IS NULL\"として扱います。" +#: storage/lmgr/predicate.c:3803 +msgid "Cancelled on conflict out to old pivot." +msgstr "競合によりキャンセルされ、古いピボットに戻りました" -#: utils/misc/guc.c:1035 -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)." +#: storage/lmgr/predicate.c:4041 +msgid "Cancelled on identification as a pivot, during conflict in checking." msgstr "" -"有効にした場合、expr = NULL(またはNULL = expr)という形の式はexpr IS NULLとし" -"て扱われます。つまり、exprの評価がNULL値の場合に真を、さもなくば偽を返しま" -"す。expr = NULLのSQL仕様に基づいた正しい動作は常にNULL(未知)を返すことです。" +"チェックの際に競合が発生し、ピボットとしての識別処理がキャンセルされました" -#: utils/misc/guc.c:1046 -msgid "Enables per-database user names." -msgstr "データベース毎のユーザ名を許可します。" +#: storage/lmgr/predicate.c:4363 +msgid "Cancelled on identification as a pivot, during write." +msgstr "書き込みの際、ピボットとしての識別処理がキャンセルされました" -#: utils/misc/guc.c:1055 -msgid "This parameter doesn't do anything." -msgstr "このパラメータは何もしません。" +#: storage/lmgr/predicate.c:4375 +#, c-format +msgid "Cancelled on conflict out to pivot %u, during read." +msgstr "読み込みの際、ピボット %u への競合によりキャンセルされました" -#: utils/misc/guc.c:1056 -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でエラーにさせたくないためだけ" -"にこれは存在します。" +#: storage/lmgr/predicate.c:4416 +msgid "Cancelled on identification as a pivot, during commit attempt." +msgstr "コミットの試行中、ピボットとしての識別処理がキャンセルされました" -#: utils/misc/guc.c:1064 -msgid "Sets the default read-only status of new transactions." +#: storage/lmgr/deadlock.c:915 +#, c-format +msgid "Process %d waits for %s on %s; blocked by process %d." msgstr "" -"新しいトランザクションの読み取りのみステータスのデフォルトを設定します。" +"プロセス %d は %s を %s で待機していましたが、プロセス %d でブロックされました" -#: utils/misc/guc.c:1072 -msgid "Sets the current transaction's read-only status." -msgstr "現愛のトランザクションの読み取りのみステータスを設定します。" +#: storage/lmgr/deadlock.c:934 +#, c-format +msgid "Process %d: %s" +msgstr "プロセス %d: %s" -#: utils/misc/guc.c:1081 -msgid "Check function bodies during CREATE FUNCTION." -msgstr "CREATE FUNCTION中に関数本体を検査します。" +#: storage/lmgr/deadlock.c:941 +msgid "deadlock detected" +msgstr "デッドロックを検出しました" -#: utils/misc/guc.c:1089 -msgid "Enable input of NULL elements in arrays." -msgstr "配列内のNULL要素入力を可能にします「。" +#: storage/lmgr/deadlock.c:944 +msgid "See server log for query details." +msgstr "クエリーの詳細はサーバログを参照してください" -#: utils/misc/guc.c:1090 +#: storage/lmgr/lock.c:517 +#, c-format msgid "" -"When turned on, unquoted NULL in an array input value means a null value; " -"otherwise it is taken literally." +"cannot acquire lock mode %s on database objects while recovery is in progress" msgstr "" -"有効にすると、配列入力値における引用符のないNULLはNULL値を意味するようになり" -"ます。さもなくばそのまま解釈されます。" - -#: utils/misc/guc.c:1099 -msgid "Create new tables with OIDs by default." -msgstr "新規のテーブルをデフォルトでOID付きで作成します。" +"リカバリーの実行中はデータベースオブジェクトでロックモード %s を獲得できませ" +"ん" -#: utils/misc/guc.c:1107 +#: storage/lmgr/lock.c:519 msgid "" -"Start a subprocess to capture stderr output and/or csvlogs into log files." +"Only RowExclusiveLock or less can be acquired on database objects during " +"recovery." msgstr "" -"標準エラー出力、CSVログ、またはその両方をログファイルに捕捉するための子プロセ" -"スを開始します。" - -#: utils/misc/guc.c:1115 -msgid "Truncate existing log files of same name during log rotation." -msgstr "ログローテーション時に既存の同一名称のログファイルを切り詰めます。" - -#: utils/misc/guc.c:1125 -msgid "Emit information about resource usage in sorting." -msgstr "ソート中にリソース使用状況に関する情報を発行します。" - -#: utils/misc/guc.c:1138 -msgid "Generate debugging output for synchronized scanning." -msgstr "同期スキャン処理のデバッグ出力を生成します。" +"リカバリーの実行中は、データベースオブジェクトで RowExclusiveLock もしくはそ" +"れ以下だけが獲得できます" -#: utils/misc/guc.c:1152 -msgid "Enable bounded sorting using heap sort." -msgstr "ヒープソートを使用した境界のソート処理を有効にします" +#: 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を増やす必要があるかもしれません" -#: utils/misc/guc.c:1164 -msgid "Emit WAL-related debugging output." -msgstr "WAL関連のデバッグ出力を出力します。" +#: storage/lmgr/lock.c:2171 +msgid "Not enough memory for reassigning the prepared transaction's locks." +msgstr "" +"準備されたトランザクションのロックを再割り当てするにはメモリが不足していま" +"す。" -#: utils/misc/guc.c:1175 -msgid "Datetimes are integer based." -msgstr "日付時刻は整数ベースです。" +#: storage/lmgr/proc.c:1019 utils/adt/misc.c:102 +#, c-format +msgid "could not send signal to process %d: %m" +msgstr "プロセス%dにシグナルを送信できませんでした: %m" -#: utils/misc/guc.c:1189 +#: storage/lmgr/proc.c:1053 +#, c-format msgid "" -"Sets whether Kerberos and GSSAPI user names should be treated as case-" -"insensitive." +"process %d avoided deadlock for %s on %s by rearranging queue order after %" +"ld.%03d ms" msgstr "" -"KerberosおよびGSSAPIユーザ名を大文字小文字を区別して扱うかどうかを設定しま" -"す。" - -#: utils/misc/guc.c:1198 -msgid "Warn about backslash escapes in ordinary string literals." -msgstr "普通の文字列リテラル内のバックスラッシュエスケープを警告します。" +"プロセス%1$dは、%4$ld.%5$03d ms後にキューの順番を再調整することで、%3$s上の%2" +"$sに対するデッドロックを防ぎました。" -#: utils/misc/guc.c:1207 -msgid "Causes '...' strings to treat backslashes literally." -msgstr "'...' 文字列はバックスラッシュをそのまま扱います。" +#: storage/lmgr/proc.c:1065 +#, c-format +msgid "" +"process %d detected deadlock while waiting for %s on %s after %ld.%03d ms" +msgstr "" +"プロセス%1$dは、%3$s上の%2$sに対し%4$ld.%5$03d ms待機するデッドロックを検知し" +"ました" -#: utils/misc/guc.c:1217 -msgid "Enable synchronized sequential scans." -msgstr "同期シーケンシャルスキャンを有効にします。" +#: 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ミリ秒後" -#: utils/misc/guc.c:1226 -msgid "Allows archiving of WAL files using archive_command." -msgstr "archive_command.\"を使用したWALファイルのアーカイブ処理を許可します。" +#: storage/lmgr/proc.c:1075 +#, 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を獲得しました" -#: utils/misc/guc.c:1235 -msgid "Allows connections and queries during recovery." -msgstr "リカバリー中でも接続とクエリを受け付けます" +#: storage/lmgr/proc.c:1091 +#, 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を獲得することに失敗しました" -#: utils/misc/guc.c:1244 -msgid "Allows modifications of the structure of system tables." -msgstr "システムテーブル構造に変更を許可します。" +#: 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は書き込み用に開かれていません" -#: utils/misc/guc.c:1254 -msgid "Disables reading from system indexes." -msgstr "システムインデックスの読み取りを無効にします。" +#: 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 はすでに削除されています" -#: utils/misc/guc.c:1255 -msgid "" -"It does not prevent updating the indexes, so it is safe to use. The worst " -"consequence is slowness." -msgstr "" -"これはインデックスの更新は防ぎませんので、使用しても安全です。最大の影響は低" -"速化です。" +#: storage/file/fd.c:406 +#, c-format +msgid "getrlimit failed: %m" +msgstr "getrlimitが失敗しました: %m" -#: utils/misc/guc.c:1265 -msgid "" -"Enables backward compatibility mode for privilege checks on large objects." +#: storage/file/fd.c:496 +msgid "insufficient file descriptors available to start server process" msgstr "" -"ラージオブジェクトで権限チェックを行う際、下位互換性モードを有効にします。" +"サーバプロセスを起動させるために利用できるファイル記述子が不足しています" -#: utils/misc/guc.c:1266 -msgid "" -"Skips privilege checks when reading or modifying large objects, for " -"compatibility with PostgreSQL releases prior to 9.0." -msgstr "" -"9.0 以前の PostgreSQL との互換のため、ラージオブジェクトを読んだり変更したりする際に権限チェックをスキップする。" +#: storage/file/fd.c:497 +#, c-format +msgid "System allows %d, we need at least %d." +msgstr "システムでは%d使用できますが、少なくとも%d必要です" -#: utils/misc/guc.c:1284 -msgid "" -"Forces a switch to the next xlog file if a new file has not been started " -"within N seconds." -msgstr "" -"N秒以内に新しいファイルが始まらない場合に次のxlogファイルへの切り替えを強制し" -"ます。" +#: 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: 解放後再実行してください" -#: utils/misc/guc.c:1294 -msgid "Waits N seconds on connection startup after authentication." -msgstr "認証後の接続開始までN秒待機します。" +#: storage/file/fd.c:1091 +#, c-format +msgid "temporary file: path \"%s\", size %lu" +msgstr "一時ファイル: パス \"%s\"、サイズ %lu" -#: utils/misc/guc.c:1295 utils/misc/guc.c:1670 -msgid "This allows attaching a debugger to the process." -msgstr "これによりデバッガがプロセスに接続できます。" +#: storage/file/fd.c:1625 +#, c-format +msgid "could not read directory \"%s\": %m" +msgstr "ディレクトリ\"%s\"を読み取れませんでした: %m" -#: utils/misc/guc.c:1303 -msgid "Sets the default statistics target." -msgstr "デフォルトの統計情報対象を設定します。" +#: storage/file/reinit.c:58 +#, c-format +msgid "resetting unlogged relations: cleanup %d init %d" +msgstr "ログを取らないリレーションをリセットしています:" +"クリーンアップ:%d init: %d " -#: utils/misc/guc.c:1304 -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経由で列指定の対象を持たないテーブル列についてのデ" -"フォルトの統計情報対象を設定します。" +#: storage/file/copydir.c:61 commands/tablespace.c:158 +#: commands/tablespace.c:175 commands/tablespace.c:186 +#: commands/tablespace.c:194 commands/tablespace.c:603 +#, c-format +msgid "could not create directory \"%s\": %m" +msgstr "ディレクトリ\"%s\"を作成できませんでした: %m" -#: utils/misc/guc.c:1312 -msgid "Sets the FROM-list size beyond which subqueries are not collapsed." -msgstr "副問い合わせを折りたたまない上限のFROMリストのサイズを設定します。" +#: storage/ipc/procarray.c:637 +msgid "consistent state delayed because recovery snapshot incomplete" +msgstr "リカバリースナップショットが不完全のため、一貫性状態が遅延しました" -#: utils/misc/guc.c:1314 +#: storage/ipc/shmem.c:346 storage/ipc/shmem.c:399 +#, c-format msgid "" -"The planner will merge subqueries into upper queries if the resulting FROM " -"list would have no more than this many items." -msgstr "" -"最終的なFROMリストがこの値以上多くない場合、プランナは副問い合わせを上位問い" -"合わせにマージします。" +"not enough shared memory for data structure \"%s\" (%lu bytes requested)" +msgstr "データ構造体 \"%s\" 用の共有メモリが不足しています( %lu バイト必要)" -#: utils/misc/guc.c:1323 -msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened." -msgstr "JOIN式を平坦化しない上限のFROMリストのサイズを設定します。" +#: storage/ipc/shmem.c:365 +#, c-format +msgid "could not create ShmemIndex entry for data structure \"%s\"" +msgstr "データ構造体 \"%s\" のための ShmemIndex エントリを作成できませんでした" -#: utils/misc/guc.c:1325 +#: storage/ipc/shmem.c:380 +#, c-format 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." +"ShmemIndex entry size is wrong for data structure \"%s\": expected %lu, " +"actual %lu" msgstr "" -"最終的にリストがこの値以下の項目数になる時、プランナは、明示的なJOIN構文を" -"FROM項目のリストに直します。 " +"データ構造体 \"%s\" のための ShmemIndex エントリのサイズが誤っています:期待" +"値=%lu、実際=%lu" -#: utils/misc/guc.c:1334 -msgid "Sets the threshold of FROM items beyond which GEQO is used." -msgstr "GEQOを使用するFROMアイテム数の閾値を設定します。" +#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446 +msgid "requested shared memory size overflows size_t" +msgstr "要求された共有メモリのサイズはsize_tを超えています" -#: utils/misc/guc.c:1342 -msgid "GEQO: effort is used to set the default for other GEQO parameters." -msgstr "" -"GEQO: effortは他のGEQOパラメータのデフォルトを設定するために使用されます。" +#: 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 "ページポインタが破損しています: lower = %u, upper = %u, special = %u\"" -#: utils/misc/guc.c:1350 -msgid "GEQO: number of individuals in the population." -msgstr "GEQO: 遺伝的個体群内の個体数です。" +#: storage/page/bufpage.c:433 +#, c-format +msgid "corrupted item pointer: %u" +msgstr "アイテムポインタが破損しています: %u" -#: utils/misc/guc.c:1351 utils/misc/guc.c:1359 -msgid "Zero selects a suitable default value." -msgstr "0は適切なデフォルト値を選択します。" +#: storage/page/bufpage.c:444 storage/page/bufpage.c:805 +#, c-format +msgid "corrupted item lengths: total %u, available space %u" +msgstr "アイテム長が破損しています: 合計 %u 利用可能空間 %u" -#: utils/misc/guc.c:1358 -msgid "GEQO: number of iterations of the algorithm." -msgstr "GEQO: アルゴリズムの反復数です。" +#: storage/page/bufpage.c:642 storage/page/bufpage.c:778 +#, c-format +msgid "corrupted item pointer: offset = %u, size = %u" +msgstr "アイテムポインタが破損しています: オフセット = %u サイズ = %u" -#: utils/misc/guc.c:1368 -msgid "Sets the time to wait on a lock before checking for deadlock." -msgstr "" -"デッドロック状態があるかどうかを調べる前にロックを待つ時間を設定します。" +#: utils/sort/logtape.c:213 +#, c-format +msgid "could not write block %ld of temporary file: %m" +msgstr "一時ファイルのブロック%ldを書き込めませんでした: %m" -#: utils/misc/guc.c:1378 -msgid "" -"Sets the maximum delay before canceling queries when a hot standby server is " -"processing archived WAL data." -msgstr "" -"ホットスタンバイサーバがアーカイブされた WAL データを処理している場合は、" -"クエリをキャンセルする前に遅延秒数の最大値をセットしてください。" +#: utils/sort/logtape.c:215 +msgid "Perhaps out of disk space?" +msgstr "ディスク容量が不足している可能性があります" -#: utils/misc/guc.c:1388 -msgid "" -"Sets the maximum delay before canceling queries when a hot standby server is " -"processing streamed WAL data." -msgstr "" -"ホットスタンバイサーバがストリームの WAL データを処理している場合は、" -"クエリをキャンセルする前に遅延秒数の最大値をセットしてください。" +#: utils/sort/logtape.c:232 +#, c-format +msgid "could not read block %ld of temporary file: %m" +msgstr "一時ファイルのブロック%ldを読み込めませんでした: %m" -#: utils/misc/guc.c:1408 -msgid "Sets the maximum number of concurrent connections." -msgstr "同時接続数の最大値を設定します。" +#: utils/sort/tuplesort.c:3131 +#, c-format +msgid "could not create unique index \"%s\"" +msgstr "一意性インデックス \"%s\" を作成できませんでした" -#: utils/misc/guc.c:1417 -msgid "Sets the number of connection slots reserved for superusers." -msgstr "スーパーユーザによる接続用に予約される接続スロットの数を設定します。" +#: utils/sort/tuplesort.c:3133 +#, c-format +msgid "Key %s is duplicated." +msgstr "キー %s は重複しています。" -#: utils/misc/guc.c:1426 -msgid "Sets the number of shared memory buffers used by the server." -msgstr "サーバで使用される共有メモリのバッファ数を設定します。" +#: utils/fmgr/dfmgr.c:125 +#, c-format +msgid "could not find function \"%s\" in file \"%s\"" +msgstr "ファイル\"%2$s\"内に関数\"%1$s\"がありませんでした" -#: utils/misc/guc.c:1436 -msgid "Sets the maximum number of temporary buffers used by each session." -msgstr "各セッションで使用される一時バッファの最大数を設定します。" +#: 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/misc/guc.c:1446 -msgid "Sets the TCP port the server listens on." -msgstr "サーバが接続を監視するTCPポートを設定します。" +#: utils/fmgr/dfmgr.c:242 +#, c-format +msgid "could not load library \"%s\": %s" +msgstr "ライブラリ\"%s\"をロードできませんでした: %s" -#: utils/misc/guc.c:1455 -msgid "Sets the access permissions of the Unix-domain socket." -msgstr "Unixドメインソケットのアクセス権限を設定します。" +#: utils/fmgr/dfmgr.c:274 +#, c-format +msgid "incompatible library \"%s\": missing magic block" +msgstr "\"%s\"は互換性がないライブラリです。マジックブロックの欠落" -#: utils/misc/guc.c:1456 -msgid "" -"Unix-domain sockets use the usual Unix file system permission set. The " -"parameter value is expected to be a numeric mode specification in the form " -"accepted by the chmod and umask system calls. (To use the customary octal " -"format the number must start with a 0 (zero).)" -msgstr "" -"Unixドメインソケットは、通常のUnixファイルシステム権限の設定を使います。 この" -"パラメータ値は chmod と umask システムコールが受け付ける数値のモード指定を想" -"定しています(慣習的な8進数書式を使うためには、0(ゼロ)で始まらなくてはなりま" -"せん)。 " +#: utils/fmgr/dfmgr.c:276 +msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro." +msgstr "拡張ライブラリはPG_MODULE_MAGICマクロを使用しなければなりません。" -#: utils/misc/guc.c:1468 -msgid "Sets the maximum memory to be used for query workspaces." -msgstr "問い合わせの作業用空間として使用されるメモリの最大値を設定します。" +#: utils/fmgr/dfmgr.c:312 +#, c-format +msgid "incompatible library \"%s\": version mismatch" +msgstr "\"%s\"は互換性がないライブラリです: バージョンの不一致" -#: utils/misc/guc.c:1469 -msgid "" -"This much memory can be used by each internal sort operation and hash table " -"before switching to temporary disk files." -msgstr "" -"一時ディスクファイルへの切替えを行う前に、内部ソート操作とハッシュテーブルで" -"使われるメモリの量を指定します。" +#: utils/fmgr/dfmgr.c:314 +#, c-format +msgid "Server is version %d.%d, library is version %d.%d." +msgstr "サーバのバージョンは%d.%d、ライブラリのバージョンは%d.%d<です。" -#: utils/misc/guc.c:1480 -msgid "Sets the maximum memory to be used for maintenance operations." -msgstr "保守作業で使用される最大メモリ量を設定します。" +#: utils/fmgr/dfmgr.c:333 +#, c-format +msgid "Server has FUNC_MAX_ARGS = %d, library has %d." +msgstr "サーバ側は FUNC_MAX_ARGS = %d ですが、ライブラリ側は %d です" -#: utils/misc/guc.c:1481 -msgid "This includes operations such as VACUUM and CREATE INDEX." -msgstr "VACUUMやCREATE INDEXなどの作業が含まれます。" +#: utils/fmgr/dfmgr.c:342 +#, c-format +msgid "Server has INDEX_MAX_KEYS = %d, library has %d." +msgstr "サーバ側は INDEX_MAX_KEYS = %d ですが、ライブラリ側は %d です" -#: utils/misc/guc.c:1490 -msgid "Sets the maximum stack depth, in kilobytes." -msgstr "スタック長の最大値をキロバイト単位で設定します。" +#: utils/fmgr/dfmgr.c:351 +#, c-format +msgid "Server has NAMEDATALEN = %d, library has %d." +msgstr "サーバ側は NAMEDATALEN = %d ですが、ライブラリ側は %d です" -#: utils/misc/guc.c:1500 -msgid "Vacuum cost for a page found in the buffer cache." -msgstr "バッファキャッシュにあるバッファをバキュームする際のコストです。" +#: utils/fmgr/dfmgr.c:360 +#, c-format +msgid "Server has FLOAT4PASSBYVAL = %s, library has %s." +msgstr "サーバ側はFLOAT4PASSBYVAL = %sですが、ライブラリ側は%sです。" -#: utils/misc/guc.c:1509 -msgid "Vacuum cost for a page not found in the buffer cache." -msgstr "バッファキャッシュにないバッファをバキュームする際のコストです。" +#: utils/fmgr/dfmgr.c:369 +#, c-format +msgid "Server has FLOAT8PASSBYVAL = %s, library has %s." +msgstr "サーバ側はFLOAT8PASSBYVAL = %sですが、ライブラリ側は%sです。" -#: utils/misc/guc.c:1518 -msgid "Vacuum cost for a page dirtied by vacuum." -msgstr "バキューム処理がページを変更する際に課せられるコストです。" +#: utils/fmgr/dfmgr.c:376 +msgid "Magic block has unexpected length or padding difference." +msgstr "" +"マジックブロックが意図しない長さであるか、またはパディングが異なります。" -#: utils/misc/guc.c:1527 -msgid "Vacuum cost amount available before napping." -msgstr "バキューム処理プロセスが休止することになるコストの合計です。 " +#: utils/fmgr/dfmgr.c:379 +#, c-format +msgid "incompatible library \"%s\": magic block mismatch" +msgstr "\"%s\"は互換性がないライブラリです: マジックブロックの不一致" -#: utils/misc/guc.c:1536 -msgid "Vacuum cost delay in milliseconds." -msgstr "ミリ秒単位のコストベースのバキュームの遅延時間です。" +#: utils/fmgr/dfmgr.c:545 +#, c-format +msgid "access to library \"%s\" is not allowed" +msgstr "ライブラリ\"%s\"へのアクセスは許されていません" -#: utils/misc/guc.c:1546 -msgid "Vacuum cost delay in milliseconds, for autovacuum." -msgstr "autovacuum用のミリ秒単位のコストベースのバキュームの遅延時間です。" +#: utils/fmgr/dfmgr.c:572 +#, c-format +msgid "invalid macro name in dynamic library path: %s" +msgstr "ダイナミックライブラリパス内のマクロが無効です: %s" -#: utils/misc/guc.c:1556 -msgid "Vacuum cost amount available before napping, for autovacuum." -msgstr "" -"autovacuum用のバキューム処理プロセスが休止することになるコストの合計です。 " +#: utils/fmgr/dfmgr.c:617 +msgid "zero-length component in parameter \"dynamic_library_path\"" +msgstr "パラメータ\"dynamic_library_path\"内に長さが0の要素があります" + +#: utils/fmgr/dfmgr.c:636 +msgid "component in parameter \"dynamic_library_path\" is not an absolute path" +msgstr "パラメータ\"dynamic_library_path\"内の要素が絶対パスでありません" -#: utils/misc/guc.c:1565 +#: utils/fmgr/funcapi.c:354 +#, c-format msgid "" -"Sets the maximum number of simultaneously open files for each server process." -msgstr "" -"各サーバ子プロセスで同時にオープンできるファイルの最大数を設定します。 " +"could not determine actual result type for function \"%s\" declared to " +"return type %s" +msgstr "戻り値型%2$sとして宣言された関数\"%1$s\"の実際の結果型を決定できません" -#: utils/misc/guc.c:1577 -msgid "Sets the maximum number of simultaneously prepared transactions." -msgstr "準備された1トランザクションの同時最大数を設定します。" +#: utils/fmgr/funcapi.c:1208 utils/fmgr/funcapi.c:1239 +msgid "number of aliases does not match number of columns" +msgstr "別名の数が列の数と一致しません" -#: utils/misc/guc.c:1607 -msgid "Sets the maximum allowed duration of any statement." -msgstr "全ての文の最大実行時間を設定します。" +#: utils/fmgr/funcapi.c:1233 +msgid "no column alias was provided" +msgstr "列の別名が提供されていませんでした" -#: utils/misc/guc.c:1608 -msgid "A value of 0 turns off the timeout." -msgstr "ゼロという値はこのタイムアウトを無効にします。 " +#: utils/fmgr/funcapi.c:1257 +msgid "could not determine row description for function returning record" +msgstr "レコードを返す関数についての説明の行を決定できませんでした" -#: utils/misc/guc.c:1617 -msgid "Minimum age at which VACUUM should freeze a table row." -msgstr "VACUUM がテーブル行を凍結するまでの最小時間" +#: utils/fmgr/fmgr.c:270 +#, c-format +msgid "internal function \"%s\" is not in internal lookup table" +msgstr "内部関数\"%s\"は内部用検索テーブルにありません" -#: utils/misc/guc.c:1626 -msgid "Age at which VACUUM should scan whole table to freeze tuples." -msgstr "" -"テーブル行を凍結するために VACUUM がテーブル全体をスキャンするまでの時間" +#: utils/fmgr/fmgr.c:474 +#, c-format +msgid "unrecognized API version %d reported by info function \"%s\"" +msgstr "info関数\"%2$s\"で報告されたAPIバージョン%1$dが不明です" -#: utils/misc/guc.c:1635 -msgid "" -"Number of transactions by which VACUUM and HOT cleanup should be deferred, " -"if any." -msgstr "" -"もしあれば、VACUUM や HOT のクリーンアップを遅延させるトランザクション数" +#: 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/misc/guc.c:1647 -msgid "Sets the maximum number of locks per transaction." -msgstr "1トランザクション当たりの最大ロック数を設定します。" +#: utils/cache/plancache.c:589 +msgid "cached plan must not change result type" +msgstr "キャッシュした計画は結果型を変更してはなりません" -#: utils/misc/guc.c:1648 -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/cache/typcache.c:629 +#, c-format +msgid "type %s is not composite" +msgstr "型%sは複合型ではありません" -#: utils/misc/guc.c:1658 -msgid "Sets the maximum allowed time to complete client authentication." -msgstr "クライアント認証の完了までの最大時間を設定します。" +#: utils/cache/typcache.c:643 +msgid "record type has not been registered" +msgstr "レコード型は登録されていません" -#: utils/misc/guc.c:1669 -msgid "Waits N seconds on connection startup before authentication." -msgstr "認証前の接続開始までN秒待機します。" +#: utils/cache/typcache.c:996 commands/typecmds.c:1272 +#, c-format +msgid "%s is not an enum" +msgstr "%s は数値ではありません" -#: utils/misc/guc.c:1679 -msgid "Sets the number of WAL files held for standby servers." -msgstr "待機用サーバで保持される WAL ファイル数を設定します。" +#: utils/cache/relcache.c:4274 +#, c-format +msgid "could not create relation-cache initialization file \"%s\": %m" +msgstr "リレーションキャッシュ初期化ファイル\"%sを作成できません: %m" -#: utils/misc/guc.c:1688 -msgid "" -"Sets the maximum distance in log segments between automatic WAL checkpoints." -msgstr "" -"自動WALチェックポイントの間の最大距離を、ログファイルセグメントの数で設定しま" -"す。" +#: utils/cache/relcache.c:4276 +msgid "Continuing anyway, but there's something wrong." +msgstr "とりあえず続行しますが、何かが間違っています" -#: utils/misc/guc.c:1697 -msgid "Sets the maximum time between automatic WAL checkpoints." -msgstr "自動WALチェックポイントの最大間隔を設定します。" +#: utils/cache/relmapper.c:454 +msgid "cannot PREPARE a transaction that modified relation mapping" +msgstr "" +"リレーションのマッピングを変更したトランザクションは PREPARE できません" -#: utils/misc/guc.c:1707 -msgid "" -"Enables warnings if checkpoint segments are filled more frequently than this." +#: utils/cache/relmapper.c:596 utils/cache/relmapper.c:702 +#, c-format +msgid "could not open relation mapping file \"%s\": %m" msgstr "" -"チェックポイントセグメントの溢れ頻度がこれよりも多ければ警告します。" +"リレーションのマッピング用ファイル \"%s\" をオープンできませんでした: %m" + +#: utils/cache/relmapper.c:609 +#, c-format +msgid "could not read relation mapping file \"%s\": %m" +msgstr "リレーションのマッピング用ファイル \"%s\" から読み取れませんでした: %m" + +#: utils/cache/relmapper.c:619 +#, c-format +msgid "relation mapping file \"%s\" contains invalid data" +msgstr "リレーションのマッピング用ファイル \"%s\" に無効なデータがあります" + +#: utils/cache/relmapper.c:629 +#, c-format +msgid "relation mapping file \"%s\" contains incorrect checksum" +msgstr "" +"リレーションのマッピング用ファイル \"%s\" の中のチェックサムが正しくありませ" +"ん" + +#: utils/cache/relmapper.c:741 +#, c-format +msgid "could not write to relation mapping file \"%s\": %m" +msgstr "リレーションのマッピング用ファイル \"%s\" を書き出せませんでした: %m" + +#: utils/cache/relmapper.c:754 +#, c-format +msgid "could not fsync relation mapping file \"%s\": %m" +msgstr "" +"リレーションのマッピング用ファイル \"%s\" を fsync できませんでした: %m" + +#: utils/cache/relmapper.c:760 +#, c-format +msgid "could not close relation mapping file \"%s\": %m" +msgstr "" +"リレーションのマッピング用ファイル \"%s\" をクローズできませんでした: %m" + +#: utils/cache/lsyscache.c:2393 utils/cache/lsyscache.c:2426 +#: utils/cache/lsyscache.c:2459 utils/cache/lsyscache.c:2492 +#, c-format +msgid "type %s is only a shell" +msgstr "型%sは単なるシェルです" + +#: utils/cache/lsyscache.c:2398 +#, c-format +msgid "no input function available for type %s" +msgstr "型%sの利用可能な入力関数がありません" + +#: utils/cache/lsyscache.c:2431 +#, c-format +msgid "no output function available for type %s" +msgstr "型%sの利用可能な出力関数がありません" + +#: utils/cache/lsyscache.c:2464 utils/adt/arrayfuncs.c:1307 +#, c-format +msgid "no binary input function available for type %s" +msgstr "型%sにはバイナリ入力関数がありません" + +#: utils/cache/lsyscache.c:2497 utils/adt/arrayfuncs.c:1529 +#, c-format +msgid "no binary output function available for type %s" +msgstr "型%sにはバイナリ出力関数がありません" + +#: utils/error/elog.c:1479 +#, c-format +msgid "could not reopen file \"%s\" as stderr: %m" +msgstr "ファイル\"%s\"を標準エラーとして再オープンできませんでした: %m" + +#: utils/error/elog.c:1492 +#, c-format +msgid "could not reopen file \"%s\" as stdout: %m" +msgstr "ファイル\"%s\"を標準出力として再オープンできませんでした: %m" + +#: utils/error/elog.c:1882 utils/error/elog.c:1892 utils/error/elog.c:1902 +msgid "[unknown]" +msgstr "[unknown]" + +#: utils/error/elog.c:2253 utils/error/elog.c:2533 utils/error/elog.c:2611 +msgid "missing error text" +msgstr "エラーテキストがありません" + +#: 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:2269 utils/error/elog.c:2276 +msgid "DETAIL: " +msgstr "詳細: " + +#: utils/error/elog.c:2283 +msgid "HINT: " +msgstr "ヒント: " + +#: utils/error/elog.c:2290 +msgid "QUERY: " +msgstr "クエリー: " + +#: utils/error/elog.c:2297 +msgid "CONTEXT: " +msgstr "コンテキスト: " + +#: utils/error/elog.c:2307 +#, c-format +msgid "LOCATION: %s, %s:%d\n" +msgstr "場所: %s, %s:%d\n" + +#: utils/error/elog.c:2314 +#, c-format +msgid "LOCATION: %s:%d\n" +msgstr "場所: %s:%d\n" + +#: utils/error/elog.c:2328 +msgid "STATEMENT: " +msgstr "ステートメント: " + +#. 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:2749 +msgid "DEBUG" +msgstr "DEBUG" + +#: utils/error/elog.c:2753 +msgid "LOG" +msgstr "LOG" + +#: utils/error/elog.c:2756 +msgid "INFO" +msgstr "INFO" + +#: utils/error/elog.c:2759 +msgid "NOTICE" +msgstr "NOTICE" + +#: utils/error/elog.c:2762 +msgid "WARNING" +msgstr "WARNING" + +#: utils/error/elog.c:2765 +msgid "ERROR" +msgstr "ERROR" + +#: utils/error/elog.c:2768 +msgid "FATAL" +msgstr "FATAL" + +#: utils/error/elog.c:2771 +msgid "PANIC" +msgstr "PANIC" + +#: utils/error/assert.c:37 +msgid "TRAP: ExceptionalCondition: bad arguments\n" +msgstr "TRAP: ExceptionalCondition: 不良な引数\n" + +#: utils/error/assert.c:40 +#, c-format +msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n" +msgstr "TRAP: %s(\\\"%s\\\", ファイル: \\\"%s\\\", 行数: %d)\n" + +#: utils/mmgr/portalmem.c:207 +#, c-format +msgid "cursor \"%s\" already exists" +msgstr "カーソル\"%s\"はすでに存在します" + +#: utils/mmgr/portalmem.c:211 +#, c-format +msgid "closing existing cursor \"%s\"" +msgstr "既存のカーソル\"%s\"をクローズしています" + +#: utils/mmgr/portalmem.c: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 "" +"WITH HOLD 付きのカーソルを作成したトランザクションは PREPARE できません" + +#: utils/mmgr/aset.c:417 +#, 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 +#, c-format +msgid "Failed on request of size %lu." +msgstr "サイズ%luの要求に失敗しました" + +#: 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 "tsベクターのための文字列が長すぎます(%ldバイト、最大は%ldバイト)" + +#: utils/adt/windowfuncs.c:243 +msgid "argument of ntile must be greater than zero" +msgstr "ntile カウントは0より大きくなければなりません" + +#: utils/adt/windowfuncs.c:465 +msgid "argument of nth_value must be greater than zero" +msgstr "nth_value 引数は 0 より大きくなければなりません" + +#: utils/adt/array_userfuncs.c:48 +msgid "could not determine input data types" +msgstr "入力データ型を決定できませんでした" + +#: utils/adt/array_userfuncs.c:82 +msgid "neither input type is an array" +msgstr "入力型が配列ではありません" + +#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113 +#: utils/adt/int8.c:1211 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/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/varbit.c:1111 utils/adt/varbit.c:1503 +#: utils/adt/varlena.c:950 utils/adt/varlena.c:1968 utils/adt/numeric.c:2253 +#: utils/adt/numeric.c:2262 +msgid "integer out of range" +msgstr "integerの範囲外です" + +#: utils/adt/array_userfuncs.c:121 +msgid "argument must be empty or one-dimensional array" +msgstr "引数は空か1次元の配列でなければなりません" + +#: 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:225 +#, c-format +msgid "" +"Arrays with element types %s and %s are not compatible for concatenation." +msgstr "要素型%sと%sの配列の連結には互換性がありません" + +#: 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:301 +msgid "" +"Arrays with differing element dimensions are not compatible for " +"concatenation." +msgstr "異なる要素次数の配列の連結には互換性がありません。" + +#: 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:426 utils/adt/arrayfuncs.c:1238 +#: utils/adt/arrayfuncs.c:2911 utils/adt/arrayfuncs.c:4936 +#, c-format +msgid "invalid number of dimensions: %d" +msgstr "次数が無効です: %d" + +#: utils/adt/array_userfuncs.c:487 +msgid "could not determine input data type" +msgstr "入力データ型を特定できませんでした" + +#: utils/adt/cash.c:232 +#, c-format +msgid "invalid input syntax for type money: \"%s\"" +msgstr "money型への入力構文が無効です: \"%s\"" + +#: 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/timestamp.c:2876 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/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/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/numeric.c:4507 utils/adt/numeric.c:4790 +msgid "division by zero" +msgstr "0 による除算が行われました" + +#: utils/adt/nabstime.c:160 +#, c-format +msgid "invalid time zone name: \"%s\"" +msgstr "時間帯名称が無効です: \"%s\"" + +#: 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 utils/adt/formatting.c:3185 +#: utils/adt/formatting.c:3217 utils/adt/formatting.c:3285 +#: utils/adt/xml.c:1712 utils/adt/xml.c:1719 utils/adt/xml.c:1739 +#: utils/adt/xml.c:1746 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 +msgid "timestamp out of range" +msgstr "timestampの範囲外です" + +#: utils/adt/nabstime.c:506 utils/adt/nabstime.c:579 +msgid "cannot convert abstime \"invalid\" to timestamp" +msgstr "abstimeの\"invalid\"をtimestampに変換できません" + +#: utils/adt/nabstime.c:806 +msgid "invalid status in external \"tinterval\" value" +msgstr "\"tinterval\"の外部値のステータスが無効です" + +#: utils/adt/nabstime.c:880 +msgid "cannot convert reltime \"invalid\" to interval" +msgstr "reltimeの\"invalid\"をintervalに変換できません" + +#: utils/adt/nabstime.c:1575 +#, c-format +msgid "invalid input syntax for type tinterval: \"%s\"" +msgstr "型tintervalの入力構文が無効です: \"%s\"" + +#: utils/adt/misc.c:80 +msgid "must be superuser to signal other server processes" +msgstr "" +"他のサーバプロセスにシグナルを送るためにはスーパーユーザでなければなりません" + +#: utils/adt/misc.c:89 +#, c-format +msgid "PID %d is not a PostgreSQL server process" +msgstr "PID %dはPostgreSQLサーバプロセスではありません" + +#: utils/adt/misc.c:126 +msgid "must be superuser to signal the postmaster" +msgstr "postmasterにシグナルを送るためにはスーパーユーザでなければなりません" + +#: utils/adt/misc.c:131 +#, c-format +msgid "failed to send signal to postmaster: %m" +msgstr "postmasterにシグナルを送信できませんでした: %m" + +#: 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:195 +msgid "global tablespace never has databases" +msgstr "グローバルテーブル空間にデータベースがありません" + +#: utils/adt/misc.c:216 +#, c-format +msgid "%u is not a tablespace OID" +msgstr "%uはテーブル空間の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/uuid.c:128 +#, c-format +msgid "invalid input syntax for uuid: \"%s\"" +msgstr "uuidの入力構文が無効です: \"%s\"" + +#: utils/adt/tsvector_parser.c:136 utils/adt/tsquery.c:156 +#: utils/adt/tsquery.c:392 +#, c-format +msgid "syntax error in tsquery: \"%s\"" +msgstr "tsquery内の構文エラー: \"%s\"" + +#: utils/adt/tsvector_parser.c:137 +#, c-format +msgid "syntax error in tsvector: \"%s\"" +msgstr "tsvector内の構文エラー: %s" + +#: 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/regproc.c:118 utils/adt/regproc.c:139 utils/adt/regproc.c:289 +#: utils/adt/acl.c:3359 +#, c-format +msgid "function \"%s\" does not exist" +msgstr "関数\"%s\"は存在しません" + +#: 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:468 utils/adt/regproc.c:488 +#, c-format +msgid "more than one operator named %s" +msgstr "%sという名前の演算子が複数あります" + +#: utils/adt/regproc.c:635 utils/adt/regproc.c:1485 utils/adt/ruleutils.c:5800 +#: utils/adt/ruleutils.c:5855 utils/adt/ruleutils.c:5892 +msgid "too many arguments" +msgstr "引数が多すぎます" + +#: utils/adt/regproc.c:636 +msgid "Provide two argument types for operator." +msgstr "演算子には2つの引数型を提供してください" + +#: 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:1383 +msgid "expected a left parenthesis" +msgstr "左括弧を想定していました" + +#: utils/adt/regproc.c:1399 +msgid "expected a right parenthesis" +msgstr "右括弧を想定していました" + +#: utils/adt/regproc.c:1418 +msgid "expected a type name" +msgstr "型の名前を想定していました" + +#: utils/adt/regproc.c:1450 +msgid "improper type name" +msgstr "型の名前が不適切です" + +#: utils/adt/timestamp.c:92 utils/adt/varchar.c:43 utils/adt/varbit.c:51 +#: utils/adt/date.c:66 +msgid "invalid type modifier" +msgstr "無効な型修飾子です。" + +#: utils/adt/timestamp.c:97 +#, c-format +msgid "TIMESTAMP(%d)%s precision must not be negative" +msgstr "TIMESTAMP(%d)%s の精度は負であってはなりません" + +#: 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:171 utils/adt/timestamp.c:435 +#, c-format +msgid "timestamp out of range: \"%s\"" +msgstr "timestampが範囲外です: \"%s\"" + +#: 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 "日付時刻の値\"%s\"はもうサポートされていません" + +#: utils/adt/timestamp.c:260 +msgid "timestamp cannot be NaN" +msgstr "タイムスタンプは NaN にはできません" + +#: 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: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型の修正子です" + +#: utils/adt/timestamp.c:803 +#, c-format +msgid "INTERVAL(%d) precision must not be negative" +msgstr "INTERVAL(%d)の精度は負ではいけません" + +#: utils/adt/timestamp.c:809 +#, c-format +msgid "INTERVAL(%d) precision reduced to maximum allowed, %d" +msgstr "INTERVAL(%d)の精度を許容最大値%dまで減らしました" + +#: 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:2306 +msgid "cannot subtract infinite timestamps" +msgstr "無限大のtimestampを減算できません" + +#: utils/adt/timestamp.c:3365 utils/adt/timestamp.c:3961 +#: utils/adt/timestamp.c:4020 +#, c-format +msgid "timestamp units \"%s\" not supported" +msgstr "timestampの単位\"%s\"はサポートされていません" + +#: utils/adt/timestamp.c:3379 utils/adt/timestamp.c:4030 +#, c-format +msgid "timestamp units \"%s\" not recognized" +msgstr "timestampの単位\"%s\"は不明です" + +#: 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 "timestamp with time zoneの単位\"%s\"はサポートされていません" + +#: utils/adt/timestamp.c:3537 utils/adt/timestamp.c:4242 +#, c-format +msgid "timestamp with time zone units \"%s\" not recognized" +msgstr "timestamp with time zoneの単位\"%s\"は不明です" + +#: utils/adt/timestamp.c:3617 utils/adt/timestamp.c:4348 +#, c-format +msgid "interval units \"%s\" not supported" +msgstr "intervalの単位\"%s\"はサポートされていません" + +#: utils/adt/timestamp.c:3633 utils/adt/timestamp.c:4375 +#, c-format +msgid "interval units \"%s\" not recognized" +msgstr "intervalの単位\"%s\"は不明です" + +#: 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:4452 utils/adt/timestamp.c:4625 +#: utils/adt/datetime.c:928 utils/adt/datetime.c:1663 utils/adt/date.c:2632 +#, c-format +msgid "time zone \"%s\" not recognized" +msgstr "時間帯\"%s\"は不明です" + +#: utils/adt/timestamp.c:4477 utils/adt/timestamp.c:4651 +#, c-format +msgid "interval time zone \"%s\" must not specify month" +msgstr "intervalによる時間帯\"%s\"には月を指定してはいけません" + +#: utils/adt/timestamp.c:4712 utils/adt/timestamp.c:4793 utils/adt/int8.c:1373 +#: utils/adt/int.c:1345 +msgid "step size cannot equal zero" +msgstr "ステップ数をゼロにすることはできません" + +#: utils/adt/int8.c:98 utils/adt/int8.c:133 utils/adt/numutils.c:51 +#: utils/adt/numutils.c:61 utils/adt/numutils.c:103 +#, c-format +msgid "invalid input syntax for integer: \"%s\"" +msgstr "型integerの入力構文が無効です: \"%s\"" + +#: utils/adt/int8.c:114 +#, c-format +msgid "value \"%s\" is out of range for type bigint" +msgstr "値\"%s\"は型bigintの範囲外です" + +#: utils/adt/int8.c:500 utils/adt/int8.c:529 utils/adt/int8.c:550 +#: utils/adt/int8.c: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/varbit.c:1583 utils/adt/numeric.c:2306 +msgid "bigint out of range" +msgstr "bigintの範囲外です" + +#: utils/adt/int8.c:1236 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/float.c:1119 +#: utils/adt/float.c:1177 utils/adt/numeric.c:2354 utils/adt/numeric.c:2365 +msgid "smallint out of range" +msgstr "smallintの範囲外です" + +#: utils/adt/int8.c:1330 +msgid "OID out of range" +msgstr "OIDの範囲外です" + +#: utils/adt/rowtypes.c:98 utils/adt/rowtypes.c:473 +msgid "input of anonymous composite types is not implemented" +msgstr "匿名複合型の入力は実装されていません" + +#: 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:152 +msgid "Missing left parenthesis." +msgstr "左括弧がありません" + +#: utils/adt/rowtypes.c:180 +msgid "Too few columns." +msgstr "列が少なすぎます" + +#: utils/adt/rowtypes.c:204 utils/adt/rowtypes.c:212 +msgid "Unexpected end of input." +msgstr "想定外の入力の終端です" + +#: utils/adt/rowtypes.c:263 +msgid "Too many columns." +msgstr "列が多すぎます" + +#: utils/adt/rowtypes.c:271 +msgid "Junk after right parenthesis." +msgstr "右括弧の後にごみがあります" + +#: utils/adt/rowtypes.c:522 +#, c-format +msgid "wrong number of columns: %d, expected %d" +msgstr "列数が間違っています: %d。%dを想定していました" + +#: utils/adt/rowtypes.c:549 +#, c-format +msgid "wrong data type: %u, expected %u" +msgstr "データ型が間違っています: %u。%uを想定していました" + +#: 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 "" +"レコードのカラム %3$d において、全く異なる型 %1$s と %2$s では比較ができませ" +"ん" + +#: utils/adt/rowtypes.c:983 utils/adt/rowtypes.c:1203 +msgid "cannot compare record types with different numbers of columns" +msgstr "個数が異なるカラム同士ではレコード型の比較ができません" + +#: utils/adt/int.c:162 +msgid "int2vector has too many elements" +msgstr "int2vectorの要素数が多すぎます" + +#: utils/adt/int.c:237 +msgid "invalid int2vector data" +msgstr "int2vectorデータが無効です" + +#: utils/adt/int.c:243 utils/adt/oid.c:212 utils/adt/oid.c:293 +msgid "oidvector has too many elements" +msgstr "oidvectorの要素が多すぎます" + +#. translator: first %s is inet or cidr +#: utils/adt/network.c:107 utils/adt/datetime.c:3559 +#, c-format +msgid "invalid input syntax for type %s: \"%s\"" +msgstr "\"%s\"型の入力構文が無効です: \"%s\"" + +#: utils/adt/network.c:118 +#, c-format +msgid "invalid cidr value: \"%s\"" +msgstr "CIDR値が無効です: \"%s\"" + +#: utils/adt/network.c:119 utils/adt/network.c:249 +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 +#, c-format +msgid "could not format inet value: %m" +msgstr "inet値を整形できません: %m" + +#. translator: %s is inet or cidr +#: utils/adt/network.c:217 +#, c-format +msgid "invalid address family in external \"%s\" value" +msgstr "外部 \"%s\" 値内のアドレスファミリが無効です" + +#. translator: %s is inet or cidr +#: utils/adt/network.c:224 +#, c-format +msgid "invalid bits in external \"%s\" value" +msgstr "外部 \"%s\" 値内のビットが無効です" + +#. 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:248 +msgid "invalid external \"cidr\" value" +msgstr "\"cidr\"の外部値が無効です" + +#: utils/adt/network.c:370 utils/adt/network.c:397 +#, c-format +msgid "invalid mask length: %d" +msgstr "マスク長が無効です: %d" + +#: utils/adt/network.c:682 +#, c-format +msgid "could not format cidr value: %m" +msgstr "cidr値を整形できません: %m" + +#: utils/adt/network.c:1255 +msgid "cannot AND inet values of different sizes" +msgstr "サイズが異なるinet値のANDはできません" + +#: utils/adt/network.c:1287 +msgid "cannot OR inet values of different sizes" +msgstr "サイズが異なるinet値のORはできません" + +#: 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/datum.c:80 utils/adt/datum.c:92 +msgid "invalid Datum pointer" +msgstr "Datumポインタが無効です" + +#: utils/adt/arrayfuncs.c:235 utils/adt/arrayfuncs.c:247 +msgid "missing dimension value" +msgstr "次元数がありません" + +#: utils/adt/arrayfuncs.c:257 +msgid "missing \"]\" in array dimensions" +msgstr "配列の次元に\"]\"がありません" + +#: 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:277 utils/adt/arrayfuncs.c:303 +msgid "array value must start with \"{\" or dimension information" +msgstr "配列値は\"[\"か次元情報から始まらなければなりません" + +#: utils/adt/arrayfuncs.c:291 +msgid "missing assignment operator" +msgstr "代入演算子がありません" + +#: utils/adt/arrayfuncs.c:308 utils/adt/arrayfuncs.c:314 +msgid "array dimensions incompatible with array literal" +msgstr "配列の次元と配列リテラルと互換性がありません" + +#: 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\"" + +#: utils/adt/arrayfuncs.c:871 utils/adt/arrayfuncs.c:1473 +#: utils/adt/arrayfuncs.c:2795 utils/adt/arrayfuncs.c:2943 +#: utils/adt/arrayfuncs.c:5036 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:1249 +msgid "invalid array flags" +msgstr "配列フラグが無効です" + +#: utils/adt/arrayfuncs.c:1257 +msgid "wrong element type" +msgstr "要素型が間違っています" + +#: utils/adt/arrayfuncs.c:1447 +#, c-format +msgid "improper binary format in array element %d" +msgstr "配列要素%dのバイナリ書式が不適切です" + +#: 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:4916 utils/adt/arrayfuncs.c:4948 +#: utils/adt/arrayfuncs.c:4965 +msgid "wrong number of array subscripts" +msgstr "配列の添え字が不正な数値です" + +#: 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:2372 +msgid "updates on slices of fixed-length arrays not implemented" +msgstr "固定長配列の部分配列の更新は実装されていません" + +#: utils/adt/arrayfuncs.c:2408 utils/adt/arrayfuncs.c:2495 +msgid "source array too small" +msgstr "元の配列が小さすぎます" + +#: utils/adt/arrayfuncs.c:3050 +msgid "null array element not allowed in this context" +msgstr "この文脈ではNULLの配列要素は許されません" + +#: utils/adt/arrayfuncs.c:3153 utils/adt/arrayfuncs.c:3361 +#: utils/adt/arrayfuncs.c:3678 +msgid "cannot compare arrays of different element types" +msgstr "要素型の異なる配列を比較できません" + +#: utils/adt/arrayfuncs.c:3563 +#, c-format +msgid "could not identify a hash function for type %s" +msgstr "型 %s のハッシュ関数を識別できません" + +#: utils/adt/arrayfuncs.c:4814 utils/adt/arrayfuncs.c:4854 +#, +msgid "dimension array or low bound array cannot be null" +msgstr "次元配列もしくは下限値配列が NULL であってはなりません" + +#: utils/adt/arrayfuncs.c:4917 utils/adt/arrayfuncs.c:4949 +msgid "Dimension array must be one dimensional." +msgstr "次元配列は1次元でなければなりません" + +#: utils/adt/arrayfuncs.c:4922 utils/adt/arrayfuncs.c:4954 +msgid "wrong range of array subscripts" +msgstr "配列の添字の範囲が誤っています" + +#: utils/adt/arrayfuncs.c:4923 utils/adt/arrayfuncs.c:4955 +msgid "Lower bound of dimension array must be one." +msgstr "次元配列の添字の下限は1でなければなりません" + +#: utils/adt/arrayfuncs.c:4928 utils/adt/arrayfuncs.c:4960 +msgid "dimension values cannot be null" +msgstr "次元値に null は許されません" + +#: utils/adt/arrayfuncs.c:4966 +msgid "Low bound array has different size than dimensions array." +msgstr "下限配列が次元配列のサイズと異なっています" + +#: utils/adt/float.c:54 +msgid "value out of range: overflow" +msgstr "範囲外の値です: オーバーフロー" + +#: utils/adt/float.c:59 +msgid "value out of range: underflow" +msgstr "範囲外の値です: アンダーフロー" + +#: 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:242 +#, c-format +msgid "\"%s\" is out of range for type real" +msgstr "型realでは\"%s\"は範囲外です" + +#: 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 "型double precisionの入力構文が無効です: \"%s\"" + +#: utils/adt/float.c:435 +#, c-format +msgid "\"%s\" is out of range for type double precision" +msgstr "型double precisionでは\"%s\"は範囲外です" + +#: 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 "0 の負数乗は定義されていません" + +#: 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/misc/guc.c:1709 -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 "" -"チェックポイントセグメントファイルが溢れることが原因で起きるチェックポイント" -"が、ここで指定した秒数よりも頻繁に発生する場合、サーバログにメッセージを書き" -"出します。 デフォルトは30秒です。 ゼロはこの警告を無効にします。 " +#: utils/adt/float.c:1415 utils/adt/float.c:1445 utils/adt/numeric.c:5401 +msgid "cannot take logarithm of zero" +msgstr "ゼロの対数を取ることができません" -#: utils/misc/guc.c:1720 -msgid "Sets the number of disk-page buffers in shared memory for WAL." -msgstr "" -"共有メモリ内に割り当てられた、WALデータ用のディスクページバッファ数です。" +#: 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/misc/guc.c:1730 -msgid "WAL writer sleep time between WAL flushes." -msgstr "WAL吐き出しの間、WALライタが待機する時間です。" +#: 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/misc/guc.c:1741 -msgid "Sets the maximum number of simultaneously running WAL sender processes." -msgstr "WAL sender プロセスの最大同時実行数を設定します。" +#: utils/adt/float.c:2687 utils/adt/numeric.c:1171 +msgid "count must be greater than zero" +msgstr "カウントは0より大きくなければなりません" -#: utils/misc/guc.c:1750 -msgid "WAL sender sleep time between WAL replications." -msgstr "WAL レプリケーションの間、WAL sender が待機する時間です。" +#: utils/adt/float.c:2692 utils/adt/numeric.c:1178 +msgid "operand, lower bound and upper bound cannot be NaN" +msgstr "オペランドの下限と上限をNaNにすることはできません" -#: utils/misc/guc.c:1760 -msgid "" -"Sets the delay in microseconds between transaction commit and flushing WAL " -"to disk." -msgstr "" -"トランザクションのコミットからWALバッファのディスク吐き出しまでの遅延時間をマ" -"イクロ秒単位で設定します。" +#: utils/adt/float.c:2698 +msgid "lower and upper bounds must be finite" +msgstr "下限および上限は有限でなければなりません" -#: utils/misc/guc.c:1770 -msgid "" -"Sets the minimum concurrent open transactions before performing commit_delay." -msgstr "" -"commit_delay遅延の実行前に必要となる、同時に開いているトランザクションの最小" -"数を設定します。" +#: utils/adt/float.c:2736 utils/adt/numeric.c:1191 +msgid "lower bound cannot equal upper bound" +msgstr "下限を上限と同じにできません" -#: utils/misc/guc.c:1780 -msgid "Sets the number of digits displayed for floating-point values." -msgstr "浮動小数点値の表示桁数を設定します。" +#: 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:117 +msgid "requested length too large" +msgstr "要求した長さが長すぎます" -#: utils/misc/guc.c:1781 -msgid "" -"This affects real, double precision, and geometric data types. The parameter " -"value is added to the standard number of digits (FLT_DIG or DBL_DIG as " -"appropriate)." -msgstr "" -"このパラメータは、real、double precision、幾何データ型に影響します。パラメー" -"タ値が標準的な桁数(FLT_DIG もしくは DBL_DIGどちらか適切な方)に追加されます。" +#: utils/adt/oracle_compat.c:895 +msgid "requested character too large" +msgstr "要求した文字が長すぎます" -#: utils/misc/guc.c:1791 -msgid "Sets the minimum execution time above which statements will be logged." -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/misc/guc.c:1793 -msgid "Zero prints all queries. -1 turns this feature off." -msgstr "" -"ゼロにすると、全ての問い合わせを出力します。-1はこの機能を無効にします。" +#: utils/adt/oracle_compat.c:988 +msgid "null character not permitted" +msgstr "NULL文字は許されません" -#: utils/misc/guc.c:1802 -msgid "" -"Sets the minimum execution time above which autovacuum actions will be " -"logged." -msgstr "自動バキュームの活動をログにとる文場合の最小の実行時間を設定します。" +#: utils/adt/arrayutils.c:209 +msgid "typmod array must be type cstring[]" +msgstr "typmod配列はcstring[]型でなければなりません" -#: utils/misc/guc.c:1804 -msgid "Zero prints all actions. -1 turns autovacuum logging off." -msgstr "" -"ゼロはすべての活動を出力します。-1は自動バキュームのログ記録を無効にします。" +#: utils/adt/arrayutils.c:214 +msgid "typmod array must be one-dimensional" +msgstr "typmod配列は1次元の配列でなければなりません" -#: utils/misc/guc.c:1813 -msgid "Background writer sleep time between rounds." -msgstr "バックグランドライタの動作周期の待機時間" +#: utils/adt/arrayutils.c:219 +msgid "typmod array must not contain nulls" +msgstr "typmod配列にはNULL値を含めてはいけません" -#: utils/misc/guc.c:1823 -msgid "Background writer maximum number of LRU pages to flush per round." -msgstr "バックグランドライタが1周期で吐き出す最大LRUページ数" +#: utils/adt/trigfuncs.c:41 +msgid "suppress_redundant_updates_trigger: must be called as trigger" +msgstr "" +"suppress_redundant_updates_trigger: トリガーとして呼ばれなければなりません" -#: utils/misc/guc.c:1838 -msgid "" -"Number of simultaneous requests that can be handled efficiently by the disk " -"subsystem." -msgstr "ディスクサブシステムによって十分処理可能な同時並行リクエスト数" +#: utils/adt/trigfuncs.c:47 +msgid "suppress_redundant_updates_trigger: must be called on update" +msgstr "" +"suppress_redundant_updates_trigger: update 時に呼ばれなければなりません" -#: utils/misc/guc.c:1839 -msgid "" -"For RAID arrays, this should be approximately the number of drive spindles " -"in the array." +#: utils/adt/trigfuncs.c:53 +msgid "suppress_redundant_updates_trigger: must be called before update" msgstr "" -"RAID アレイでは、これはおおむねアレイ中のドライブのスピンドル数になります" +"suppress_redundant_updates_trigger: update 前に呼ばれなければなりません" -#: utils/misc/guc.c:1852 -msgid "Automatic log file rotation will occur after N minutes." -msgstr "ログファイルの自動ローテーションはN秒後に起こります" +#: utils/adt/trigfuncs.c:59 +msgid "suppress_redundant_updates_trigger: must be called for each row" +msgstr "suppress_redundant_updates_trigger: 各行ごとに呼ばれなければなりません" -#: utils/misc/guc.c:1862 -msgid "Automatic log file rotation will occur after N kilobytes." -msgstr "ログファイルの自動ローテーションはNキロバイト後に起こります" +#: 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/misc/guc.c:1872 -msgid "Shows the maximum number of function arguments." -msgstr "関数の引数の最大数を示します。" +#: utils/adt/oid.c:69 utils/adt/oid.c:107 +#, c-format +msgid "value \"%s\" is out of range for type oid" +msgstr "値\"%s\"は型oidの範囲外です" -#: utils/misc/guc.c:1882 -msgid "Shows the maximum number of index keys." -msgstr "インデックスキーの最大数を示します。" +#: utils/adt/oid.c:287 +msgid "invalid oidvector data" +msgstr "oidvectorデータが無効です" -#: utils/misc/guc.c:1892 -msgid "Shows the maximum identifier length." -msgstr "識別子の最大長を示します。" +#: utils/adt/bool.c:153 +#, c-format +msgid "invalid input syntax for type boolean: \"%s\"" +msgstr "boolean型への入力構文が無効です: \"%s\"" -#: utils/misc/guc.c:1902 -msgid "Shows the size of a disk block." -msgstr "ディスクブロックサイズを示します。" +#: utils/adt/datetime.c:1186 utils/adt/datetime.c:1934 utils/adt/date.c:142 +msgid "date/time value \"current\" is no longer supported" +msgstr "日付時刻の値\"current\"はもうサポートされていません" -#: utils/misc/guc.c:1912 -msgid "Shows the number of pages per disk file." -msgstr "ディスクファイルごとのページ数を表示します。" +#: utils/adt/datetime.c:3532 utils/adt/datetime.c:3539 +#, c-format +msgid "date/time field value out of range: \"%s\"" +msgstr "日付時刻のフィールドが範囲外です: \"%s\"" -#: utils/misc/guc.c:1922 -msgid "Shows the block size in the write ahead log." -msgstr "先行書き込みログ(WAL)におけるブロックサイズを表示します" +#: utils/adt/datetime.c:3541 +msgid "Perhaps you need a different \"datestyle\" setting." +msgstr "他の\"datestyle\"設定が必要かもしれません。" -#: utils/misc/guc.c:1932 -msgid "Shows the number of pages per write ahead log segment." -msgstr "先行書き込みログ(WAL)セグメントごとのページ数を表示します" +#: utils/adt/datetime.c:3546 +#, c-format +msgid "interval field value out of range: \"%s\"" +msgstr "intervalフィールドの値が範囲外です: \"%s\"" -#: utils/misc/guc.c:1945 -msgid "Time to sleep between autovacuum runs." -msgstr "自動バキュームの待機間隔)。" +#: utils/adt/datetime.c:3552 +#, c-format +msgid "time zone displacement out of range: \"%s\"" +msgstr "時間帯の置換が範囲外です: \"%s\"" -#: utils/misc/guc.c:1954 -msgid "Minimum number of tuple updates or deletes prior to vacuum." -msgstr "バキュームを行うまでの、タプルを更新または削除した回数の最小値。" +#: utils/adt/encode.c:55 utils/adt/encode.c:91 +#, c-format +msgid "unrecognized encoding: \"%s\"" +msgstr "符号化方式が不明です: \"%s\"" -#: utils/misc/guc.c:1962 -msgid "Minimum number of tuple inserts, updates or deletes prior to analyze." -msgstr "解析するまでの、タプルを挿入、更新、削除した回数の最小値。" +#: utils/adt/encode.c:150 +#, c-format +msgid "invalid hexadecimal digit: \"%c\"" +msgstr "16進数表現が無効です: \"%c\"" -#: utils/misc/guc.c:1971 -msgid "" -"Age at which to autovacuum a table to prevent transaction ID wraparound." -msgstr "" -"トランザクションID周回を防ぐためにテーブルを自動バキュームする年代です。" +#: utils/adt/encode.c:178 +msgid "invalid hexadecimal data: odd number of digits" +msgstr "16進数データが無効です: おかしな数値表現です" -#: utils/misc/guc.c:1981 -msgid "" -"Sets the maximum number of simultaneously running autovacuum worker " -"processes." -msgstr "自動バキュームのワーカプロセスの最大同時実行数を設定します。" +#: utils/adt/encode.c:295 +msgid "unexpected \"=\"" +msgstr "\"=\"は想定外です" -#: utils/misc/guc.c:1990 -msgid "Time between issuing TCP keepalives." -msgstr "TCPキープアライブを発行する間隔。" +#: utils/adt/encode.c:307 +msgid "invalid symbol" +msgstr "シンボルが無効です" -#: utils/misc/guc.c:1991 utils/misc/guc.c:2001 -msgid "A value of 0 uses the system default." -msgstr "ゼロという値はシステムのデフォルトを使用します。" +#: utils/adt/encode.c:327 +msgid "invalid end sequence" +msgstr "終了シーケンスが無効です" -#: utils/misc/guc.c:2000 -msgid "Time between TCP keepalive retransmits." -msgstr "TCPキープアライブを再送信するまでの時間。" +#: 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:2010 -msgid "" -"Set the amount of traffic to send and receive before renegotiating the " -"encryption keys." -msgstr "" -"暗号化キーを再ネゴシエートする前に、送信するトラフィック量をセットしてください。" +#: utils/adt/tsvector_op.c:1149 +msgid "ts_stat query must return one tsvector column" +msgstr "ts_statは1つのtsvector列のみを返さなければなりません" -#: utils/misc/guc.c:2020 -msgid "Maximum number of TCP keepalive retransmits." -msgstr "TCPキープアライブの再利用数の最大数です。" +#: utils/adt/tsvector_op.c:1329 +#, c-format +msgid "tsvector column \"%s\" does not exist" +msgstr "tsvector列\"%s\"は存在しません" -#: utils/misc/guc.c:2021 -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 "" -"これは、接続が不要となったとみなす前に失われる可能性がある、連続的なキープ" -"ア\n" -"ライブの再利用数をを制御します。0という値でシステムのデフォルトを使用します。" +#: utils/adt/tsvector_op.c:1335 +#, c-format +msgid "column \"%s\" is not of tsvector type" +msgstr "値\"%s\"は型tsvectorではありません" -#: utils/misc/guc.c:2031 -msgid "Sets the maximum allowed result for exact search by GIN." -msgstr "GINによる正確な検索に対して許される最大の結果数を設定します。" +#: utils/adt/tsvector_op.c:1347 +#, c-format +msgid "configuration column \"%s\" does not exist" +msgstr "設定列\"%s\"は存在しません" -#: utils/misc/guc.c:2041 -msgid "Sets the planner's assumption about the size of the disk cache." -msgstr "ディスクキャッシュのサイズに関するプランナの推測を設定します。" +#: utils/adt/tsvector_op.c:1353 +#, c-format +msgid "column \"%s\" is not of regconfig type" +msgstr "%s列はregconfig型ではありません" -#: utils/misc/guc.c:2042 -msgid "" -"That is, the portion of the kernel's disk cache that will be used for " -"PostgreSQL data files. This is measured in disk pages, which are normally 8 " -"kB each." -msgstr "" -"つまり、PostgreSQLのデータファイル用に使用されるカーネルのディスクキャッシュ" -"の量です。これは通常8KBのディスクページを単位とします。" +#: utils/adt/tsvector_op.c:1360 +#, c-format +msgid "configuration column \"%s\" must not be null" +msgstr "設定列\"%s\"をNULLにすることはできません" -#: utils/misc/guc.c:2054 -msgid "Shows the server version as an integer." -msgstr "サーバのバージョンを整数値で表示します。" +#: utils/adt/tsvector_op.c:1373 +#, c-format +msgid "text search configuration name \"%s\" must be schema-qualified" +msgstr "テキスト検索設定名称\"%s\"はスキーマ修飾しなけれナバりません" -#: utils/misc/guc.c:2064 -msgid "Log the use of temporary files larger than this number of kilobytes." -msgstr "" -"キロバイト単位でこの数値yり大きな一時ファイルの使用をログに記録します。" +#: utils/adt/tsvector_op.c:1398 +#, c-format +msgid "column \"%s\" is not of a character type" +msgstr "カラム \"%s\" は文字型ではありません" + +#: utils/adt/tsquery_rewrite.c:296 +msgid "ts_rewrite query must return two tsquery columns" +msgstr "ts_rewrite問い合わせは2列のtsquery列を返さなければなりません" -#: utils/misc/guc.c:2065 -msgid "Zero logs all files. The default is -1 (turning this feature off)." -msgstr "" -"ゼロにすると、全てのファイルを出力します。デフォルトは-1です。(この機能を無効" -"にします。)" +#: utils/adt/ascii.c:75 +#, c-format +msgid "encoding conversion from %s to ASCII not supported" +msgstr "%s符号化方式からASCIIへの変換はサポートされていません" -#: utils/misc/guc.c:2074 -msgid "Sets the size reserved for pg_stat_activity.current_query, in bytes." -msgstr "" -"pg_stat_activity.current_query で予約されているサイズをバイト単位で指定してく" -"ださい" +#: utils/adt/ascii.c:126 commands/dbcommands.c:235 +#, c-format +msgid "%s is not a valid encoding name" +msgstr "%sは有効な符号化方式名ではありません" -#: utils/misc/guc.c:2092 -msgid "" -"Sets the planner's estimate of the cost of a sequentially fetched disk page." -msgstr "" -"プランナのシーケンシャルに取りだされたディスクページのコストの概算を設定しま" -"す。" +#: utils/adt/ascii.c:144 commands/dbcommands.c:225 +#, c-format +msgid "%d is not a valid encoding code" +msgstr "%dは有効な符号化方式コードではありません" -#: utils/misc/guc.c:2101 -msgid "" -"Sets the planner's estimate of the cost of a nonsequentially fetched disk " -"page." -msgstr "" -"プランナの順不同に取りだされたディスクページのコストの概算を設定します。" +#: 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/misc/guc.c:2110 -msgid "Sets the planner's estimate of the cost of processing each tuple (row)." -msgstr "プランナが各タプル(行)を処理するコストを設定します。" +#: 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 "MACTH FULLではNULLキー値と非NULLキー値を混在できません" -#: utils/misc/guc.c:2119 -msgid "" -"Sets the planner's estimate of the cost of processing each index entry " -"during an index scan." -msgstr "" -"プランナがインデックススキャン時にそれぞれのインデックス項目を処理するための" -"概算コストを設定します。 " +#: utils/adt/ri_triggers.c:3082 commands/constraint.c:59 +#, c-format +msgid "function \"%s\" was not called by trigger manager" +msgstr "関数\"%s\"はトリガ関数として呼び出されていません" -#: utils/misc/guc.c:2128 -msgid "" -"Sets the planner's estimate of the cost of processing each operator or " -"function call." -msgstr "" -"プランナの、各演算子呼び出し、各関数呼び出しを処理する概算コストを設定しま" -"す。" +#: utils/adt/ri_triggers.c:3091 commands/constraint.c:66 +#, c-format +msgid "function \"%s\" must be fired AFTER ROW" +msgstr "関数\"%s\"をAFTER ROWで発行しなければなりません" -#: utils/misc/guc.c:2138 -msgid "" -"Sets the planner's estimate of the fraction of a cursor's rows that will be " -"retrieved." -msgstr "取り出されるカーソル行の割合について、プランナの予測値を設定します。" +#: utils/adt/ri_triggers.c:3099 +#, c-format +msgid "function \"%s\" must be fired for INSERT" +msgstr "関数\"%s\"をINSERTで発行しなければなりません" -#: utils/misc/guc.c:2148 -msgid "GEQO: selective pressure within the population." -msgstr "GEQO: 個体群内の選択圧力です。" +#: utils/adt/ri_triggers.c:3105 +#, c-format +msgid "function \"%s\" must be fired for UPDATE" +msgstr "関数\"%s\"をUPDATEで発行しなければなりません" -#: utils/misc/guc.c:2157 -msgid "GEQO: seed for random path selection." -msgstr "GEQO: 乱数パス選択用のシード" +#: utils/adt/ri_triggers.c:3112 commands/constraint.c:80 +#, c-format +msgid "function \"%s\" must be fired for INSERT or UPDATE" +msgstr "関数\"%s\"をINSERTまたはUPDATEで発行しなければなりません" -#: utils/misc/guc.c:2166 -msgid "Multiple of the average buffer usage to free per round." -msgstr "1周ごとに開放するべきのバッファの使用量平均に掛ける倍数" +#: utils/adt/ri_triggers.c:3119 +#, c-format +msgid "function \"%s\" must be fired for DELETE" +msgstr "関数\"%s\"をDELETEで発行しなければなりません" -#: utils/misc/guc.c:2175 -msgid "Sets the seed for random-number generation." -msgstr "ランダム生成用のシードを設定します。" +#: utils/adt/ri_triggers.c:3148 +#, c-format +msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\"" +msgstr "テーブル\"%2$s\"のトリガ\"%1$s\"用のpg_constraint項目がありません" -#: utils/misc/guc.c:2185 +#: utils/adt/ri_triggers.c:3150 msgid "" -"Number of tuple updates or deletes prior to vacuum as a fraction of " -"reltuples." +"Remove this referential integrity trigger and its mates, then do ALTER TABLE " +"ADD CONSTRAINT." msgstr "" -"reltuplesの一部としてバキュームを行うまでの、タプルの更新または削除回数。" +"この参照整合性トリガとその対象を削除し、ALTER TABLE ADD CONSTRAINTを実行して" +"ください" -#: utils/misc/guc.c:2193 +#: utils/adt/ri_triggers.c:3504 +#, c-format msgid "" -"Number of tuple inserts, updates or deletes prior to analyze as a fraction " -"of reltuples." +"referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave " +"unexpected result" msgstr "" -"reltuplesの一部として解析を行うまでの、タプルの挿入、更新または削除回数。" +"\"%3$s\"の制約\"%2$s\"から\"%1$s\"に行われた参照整合性問い合わせが想定外の結" +"果になりました" -#: utils/misc/guc.c:2202 -msgid "" -"Time spent flushing dirty buffers during checkpoint, as fraction of " -"checkpoint interval." -msgstr "" -"チェックポイントにおけるダーティバッファの吐き出しに要した時間(チェック\n" -"ポイント間隔における割合)。" +#: utils/adt/ri_triggers.c:3508 +msgid "This is most likely due to a rule having rewritten the query." +msgstr "これはほとんどの場合この問い合わせを書き換えるルールが原因です" -#: utils/misc/guc.c:2220 -msgid "Sets the shell command that will be called to archive a WAL file." -msgstr "WALファイルの保管のために呼び出されるシェルスクリプトを設定します。" +#: utils/adt/ri_triggers.c:3539 +#, c-format +msgid "No rows were found in \"%s\"." +msgstr "\"%s\"に行がありませんでした" -#: utils/misc/guc.c:2229 -msgid "Sets the client's character set encoding." -msgstr "クライアントの文字セット符号化方式を設定します。" +#: utils/adt/ri_triggers.c:3571 +#, c-format +msgid "Key (%s)=(%s) is not present in table \"%s\"." +msgstr "テーブル\"%3$s\"にキー(%1$s)=(%2$s)がありません" -#: utils/misc/guc.c:2239 -msgid "Controls information prefixed to each log line." -msgstr "各ログ行の前に付ける情報を制御します。" +#: utils/adt/ri_triggers.c:3577 +#, 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/misc/guc.c:2240 -msgid "If blank, no prefix is used." -msgstr "もし空であれば接頭辞はありません" +#: utils/adt/ri_triggers.c:3580 +#, c-format +msgid "Key (%s)=(%s) is still referenced from table \"%s\"." +msgstr "キー(%s)=(%s)はまだテーブル\"%s\"から参照されています" -#: utils/misc/guc.c:2248 -msgid "Sets the time zone to use in log messages." -msgstr "ログメッセージでしか割れる時間帯を設定します。" +#: 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/misc/guc.c:2257 -msgid "Sets the display format for date and time values." -msgstr "日付時刻値の表示用書式を設定します。" +#: 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/misc/guc.c:2258 -msgid "Also controls interpretation of ambiguous date inputs." -msgstr "曖昧な日付の入力の解釈も制御します。" +#: 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 "実際の列挙型を決定できませんでした" -#: utils/misc/guc.c:2268 -msgid "Sets the default tablespace to create tables and indexes in." -msgstr "" -"テーブルとインデックスの作成先となるデフォルトのテーブル空間を設定します。" +#: utils/adt/enum.c:365 utils/adt/enum.c:394 +#, c-format +msgid "enum %s contains no values" +msgstr "列挙型 %s に値がありません" -#: utils/misc/guc.c:2269 -msgid "An empty string selects the database's default tablespace." -msgstr "空文字列はデータベースのデフォルトのテーブル空間を選択します。" +#: utils/adt/formatting.c:492 +msgid "invalid format specification for an interval value" +msgstr "\"tinterval\"値の書式指定が無効です" -#: utils/misc/guc.c:2278 -msgid "Sets the tablespace(s) to use for temporary tables and sort files." -msgstr "一時テーブルとファイルのソートで使用されるテーブル空間を設定します。" +#: utils/adt/formatting.c:493 +msgid "Intervals are not tied to specific calendar dates." +msgstr "時間間隔が特定の暦日付に結びついていません" -#: utils/misc/guc.c:2288 -msgid "Sets the path for dynamically loadable modules." -msgstr "動的ロード可能モジュールのパスを設定します。" +#: utils/adt/formatting.c:1060 +msgid "\"EEEE\" must be the last pattern used" +msgstr "\"EEEE\" は最終パターンでなければなりません。" -#: utils/misc/guc.c:2289 -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/adt/formatting.c:1068 +msgid "\"9\" must be ahead of \"PR\"" +msgstr "\"9\"は\"PR\"の前になければなりません" -#: utils/misc/guc.c:2301 -msgid "Sets the location of the Kerberos server key file." -msgstr "Kerberosサーバキーファイルの場所を設定します。" +#: utils/adt/formatting.c:1084 +msgid "\"0\" must be ahead of \"PR\"" +msgstr "\"0\"は\"PR\"の前になければなりません" -#: utils/misc/guc.c:2311 -msgid "Sets the name of the Kerberos service." -msgstr "Kerberosサービス名を設定します。" +#: utils/adt/formatting.c:1110 +msgid "multiple decimal points" +msgstr "複数の小数点があります" -#: utils/misc/guc.c:2320 -msgid "Sets the Bonjour service name." -msgstr "Bonjour サービス名を設定します。" +#: utils/adt/formatting.c:1114 utils/adt/formatting.c:1197 +msgid "cannot use \"V\" and decimal point together" +msgstr "\"V\"と小数点を混在できません" -#: utils/misc/guc.c:2331 -msgid "Shows the collation order locale." -msgstr "テキストデータのソート時に使用されるロケールを表示します。" +#: utils/adt/formatting.c:1126 +msgid "cannot use \"S\" twice" +msgstr "\"S\" は1回しか使用できません" -#: utils/misc/guc.c:2341 -msgid "Shows the character classification and case conversion locale." -msgstr "文字クラス分類、大文字小文字変換を決定するロケールを表示します。" +#: utils/adt/formatting.c:1130 +msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" +msgstr "\"S\"と\"PL\"/\"MI\"/\"SG\"/\"PR\"を混在できません" -#: utils/misc/guc.c:2351 -msgid "Sets the language in which messages are displayed." -msgstr "表示用メッセージの言語を設定します。" +#: utils/adt/formatting.c:1150 +msgid "cannot use \"S\" and \"MI\" together" +msgstr "\"S\"と\"MI\"を混在できません" -#: utils/misc/guc.c:2360 -msgid "Sets the locale for formatting monetary amounts." -msgstr "通貨書式で使用するロケールを設定します。 " +#: utils/adt/formatting.c:1160 +msgid "cannot use \"S\" and \"PL\" together" +msgstr "\"S\"と\"PL\"を混在できません" -#: utils/misc/guc.c:2369 -msgid "Sets the locale for formatting numbers." -msgstr "数字の書式で使用するロケールを設定します。" +#: utils/adt/formatting.c:1170 +msgid "cannot use \"S\" and \"SG\" together" +msgstr "\"S\"と\"SG\"を混在できません" -#: utils/misc/guc.c:2378 -msgid "Sets the locale for formatting date and time values." -msgstr "日付と時間の書式で使用するロケールを設定します。" +#: utils/adt/formatting.c:1179 +msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" +msgstr "\"PR\"と\"S\"/\"PL\"/\"MI\"/\"SG\"を混在できません" -#: utils/misc/guc.c:2387 -msgid "Lists shared libraries to preload into server." -msgstr "サーバに事前ロードする共有ライブラリを列挙します。" +#: utils/adt/formatting.c:1205 +msgid "cannot use \"EEEE\" twice" +msgstr "\"EEEE\" は1回しか使用できません" -#: utils/misc/guc.c:2397 -msgid "Lists shared libraries to preload into each backend." -msgstr "各バックエンドに事前ロードする共有ライブラリを列挙します。" +#: utils/adt/formatting.c:1211 +msgid "\"EEEE\" is incompatible with other formats" +msgstr "\"EEEE\" が他のフォーマットと互換性がありません。" -#: utils/misc/guc.c:2407 -msgid "Sets the schema search order for names that are not schema-qualified." -msgstr "スキーマ部を含まない名前に対するスキーマの検索順を設定します。" +#: utils/adt/formatting.c:1212 +msgid "" +"\"EEEE\" may only be used together with digit and decimal point patterns." +msgstr "\"EEEE\" は数値または小数点パターンと共に指定してください。" -#: utils/misc/guc.c:2418 -msgid "Sets the server (database) character set encoding." -msgstr "サーバ(データベース)文字セット符号化方式を設定します。" +#: utils/adt/formatting.c:1412 +#, c-format +msgid "\"%s\" is not a number" +msgstr "\"%s\"は数値ではありません" -#: utils/misc/guc.c:2429 -msgid "Shows the server version." -msgstr "サーバのバージョンを表示します。" +#: utils/adt/formatting.c:1519 utils/adt/formatting.c:1569 +#, +msgid "could not determine which collation to use for lower() function" +msgstr "lower() 関数に対してどの照合順序を適用すべきかを決定できませんでした" -#: utils/misc/guc.c:2440 -msgid "Sets the current role." -msgstr "現在のロールを設定します。" +#: utils/adt/formatting.c:1640 utils/adt/formatting.c:1690 +#, +msgid "could not determine which collation to use for upper() function" +msgstr "upper() 関数に対してどの照合順序を適用すべきかを決定できませんでした" -#: utils/misc/guc.c:2451 -msgid "Sets the session user name." -msgstr "セッションユーザ名を設定します。" +#: utils/adt/formatting.c:1773 utils/adt/formatting.c:1835 +#, +msgid "could not determine which collation to use for initcap() function" +msgstr "initcap() 関数に対してどの照合順序を適用すべきかを決定できませんでした" -#: utils/misc/guc.c:2461 -msgid "Sets the destination for server log output." -msgstr "サーバログの出力先を設定します。" +#: utils/adt/formatting.c:2017 +msgid "invalid combination of date conventions" +msgstr "日付表現の組み合わせが無効です" -#: utils/misc/guc.c:2462 +#: utils/adt/formatting.c:2018 msgid "" -"Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and " -"\"eventlog\", depending on the platform." +"Do not mix Gregorian and ISO week date conventions in a formatting template." msgstr "" -"有効な値は、プラットフォームに依存しますが、\"stderr\"、\"syslog\"、\"csvlog" -"\"、\"eventlog\"の組み合わせです。" +"書式テンプレートの中では、グレゴリア暦と 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/misc/guc.c:2472 -msgid "Sets the destination directory for log files." -msgstr "ログファイルの格納ディレクトリを設定します。" +#: utils/adt/formatting.c:2100 +#, c-format +msgid "Field requires %d characters, but only %d remain." +msgstr "フィールドには %d 文字必要ですが、%d 文字しか残っていません" -#: utils/misc/guc.c:2473 -msgid "Can be specified as relative to the data directory or as absolute path." -msgstr "データディレクトリからの相対パスでも絶対パスでも指定できます" +#: 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/misc/guc.c:2482 -msgid "Sets the file name pattern for log files." -msgstr "ログファイルのファイル名パターンを設定します。" +#: utils/adt/formatting.c:2113 utils/adt/formatting.c:2126 +#: utils/adt/formatting.c:2256 +#, c-format +msgid "invalid value \"%s\" for \"%s\"" +msgstr " \"%2$s\" へセットするための値 \"%1$s\" が無効です" -#: utils/misc/guc.c:2493 -msgid "Sets the program name used to identify PostgreSQL messages in syslog." +#: utils/adt/formatting.c:2115 +#, c-format +msgid "Field requires %d characters, but only %d could be parsed." msgstr "" -"syslog内でPostgreSQLのメッセージを識別するために使用されるプログラム名を設定" -"します。" +"このフィールドには %d 文字必要ですが、%d 文字しか検出されませんでした。" -#: utils/misc/guc.c:2504 -msgid "Sets the time zone for displaying and interpreting time stamps." -msgstr "タイムスタンプの表示と解釈に使用する時間帯を設定します。" +#: utils/adt/formatting.c:2128 +msgid "Value must be an integer." +msgstr "ハッシュプロシージャは整数を返さなければなりません" -#: utils/misc/guc.c:2513 -msgid "Selects a file of time zone abbreviations." -msgstr "時間帯省略形用のファイルを選択します。" +#: utils/adt/formatting.c:2133 +#, c-format +msgid "value for \"%s\" in source string is out of range" +msgstr "もとの文字列において \"%s\" のための値が範囲外です" -#: utils/misc/guc.c:2522 -msgid "Sets the current transaction's isolation level." -msgstr "現在のトランザクションの隔離レベルを設定します。" +#: utils/adt/formatting.c:2135 +#, c-format +msgid "Value must be in the range %d to %d." +msgstr "値は %d から %d までの範囲である必要があります。" -#: utils/misc/guc.c:2532 -msgid "Sets the owning group of the Unix-domain socket." -msgstr "Unixドメインソケットを所有するグループを設定します。" +#: utils/adt/formatting.c:2258 +msgid "The given value did not match any of the allowed values for this field." +msgstr "与えられた値がこの項目に対して許されるいずれの値ともマッチしません" -#: utils/misc/guc.c:2533 -msgid "" -"The owning user of the socket is always the user that starts the server." -msgstr "ソケットを所有するユーザは常にサーバを開始したユーザです。" +#: utils/adt/formatting.c:2814 +msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date" +msgstr "to_date では \"TZ\"/\"tz\" 形式のパターンをサポートしていません" -#: utils/misc/guc.c:2542 -msgid "Sets the directory where the Unix-domain socket will be created." -msgstr "Unixドメインソケットの作成先ディレクトリを設定します。" +#: utils/adt/formatting.c:2918 +msgid "invalid input string for \"Y,YYY\"" +msgstr " \"Y,YYY\" にセットするための入力文字列が有効ではありません" -#: utils/misc/guc.c:2552 -msgid "Sets the host name or IP address(es) to listen to." -msgstr "接続を監視するホスト名またはIPアドレスを設定します。" +#: utils/adt/formatting.c:3435 +#, c-format +msgid "hour \"%d\" is invalid for the 12-hour clock" +msgstr "12時間形式では \"%d\" 時は無効です" -#: utils/misc/guc.c:2562 -msgid "Sets the list of known custom variable classes." -msgstr "既知のカスタム変数クラスのリストを設定します。" +#: utils/adt/formatting.c:3437 +msgid "Use the 24-hour clock, or give an hour between 1 and 12." +msgstr "24時間形式を使うか、もしくは 1 から 12 の間で指定してください" -#: utils/misc/guc.c:2572 -msgid "Sets the server's data directory." -msgstr "サーバのデータディレクトリを設定します。" +#: utils/adt/formatting.c:3475 +#, c-format +msgid "inconsistent use of year %04d and \"BC\"" +msgstr "年%04dと\"BC\"の使用には一貫性がありません" -#: utils/misc/guc.c:2582 -msgid "Sets the server's main configuration file." -msgstr "サーバのメイン設定ファイルを設定します。" +#: utils/adt/formatting.c:3522 +msgid "cannot calculate day of year without year information" +msgstr "年の情報なしでは年内日数を計算できません" -#: utils/misc/guc.c:2592 -msgid "Sets the server's \"hba\" configuration file." -msgstr "サーバの\"hba\"設定ファイルを設定します。" +#: utils/adt/formatting.c:4380 +msgid "\"EEEE\" not supported for input" +msgstr "\"EEEE\" は入力ではサポートされていません" -#: utils/misc/guc.c:2602 -msgid "Sets the server's \"ident\" configuration file." -msgstr "サーバの\"ident\"設定ファイルを設定します。" +#: utils/adt/formatting.c:4392 +msgid "\"RN\" not supported for input" +msgstr "\"RN\" は入力ではサポートされていません" -#: utils/misc/guc.c:2612 -msgid "Writes the postmaster PID to the specified file." -msgstr "postmasterのPIDを指定したファイルに書き込みます。" +#: utils/adt/dbsize.c:105 utils/adt/dbsize.c:189 +#, c-format +msgid "could not open tablespace directory \"%s\": %m" +msgstr "テーブル空間のディレクトリ\"%s\"をオープンできませんでした: %m" -#: utils/misc/guc.c:2622 -msgid "Writes temporary statistics files to the specified directory." -msgstr "一時的な統計情報ファイルを指定したディレクトリに書き込みます。" +#: utils/adt/tsrank.c:404 +msgid "array of weight must be one-dimensional" +msgstr "重み配列は1次元の配列でなければなりません" -#: utils/misc/guc.c:2632 -msgid "Sets default text search configuration." -msgstr "デフォルトのテキスト検索設定を設定します。" +#: utils/adt/tsrank.c:409 +msgid "array of weight is too short" +msgstr "重み配列が短すぎます" -#: utils/misc/guc.c:2642 -msgid "Sets the list of allowed SSL ciphers." -msgstr "SSL暗号として許されるリストを設定します。" +#: utils/adt/tsrank.c:414 +msgid "array of weight must not contain nulls" +msgstr "重み配列にはNULL値を含めてはいけません" -#: utils/misc/guc.c:2653 -msgid "Sets the application name to be reported in statistics and logs." -msgstr "統計やログで報告されるアプリケーション名を設定します。" +#: utils/adt/tsrank.c:423 utils/adt/tsrank.c:749 +msgid "weight out of range" +msgstr "重みが範囲外です" -#: utils/misc/guc.c:2672 -msgid "Sets whether \"\\'\" is allowed in string literals." -msgstr "\"\\'\"いずれかの集合は文字列リテラルで許されています。" +#: utils/adt/regexp.c:275 utils/adt/varlena.c:2866 +#, c-format +msgid "regular expression failed: %s" +msgstr "正規表現が失敗しました: %s" -#: utils/misc/guc.c:2681 -msgid "Sets the output format for bytea." -msgstr "bytea の出力フォーマットを設定します。" +#: utils/adt/regexp.c:412 +#, c-format +msgid "invalid regexp option: \"%c\"" +msgstr "正規表現オプションが無効です: \"%c\"" -#: utils/misc/guc.c:2690 -msgid "Sets the message levels that are sent to the client." -msgstr "クライアントに送信される最小のメッセージレベルを設定します。" +#: utils/adt/regexp.c:684 utils/adt/like_match.c:289 +msgid "invalid escape string" +msgstr "エスケープシーケンスが無効です" -#: utils/misc/guc.c:2691 utils/misc/guc.c:2740 utils/misc/guc.c:2750 -#: utils/misc/guc.c:2790 -msgid "" -"Each level includes all the levels that follow it. The later the level, the " -"fewer messages are sent." -msgstr "" -" 各レベルにはそのレベル以下の全てが含まれます。レベルを低くするほど、送信され" -"るメッセージはより少なくなります。 " +#: utils/adt/regexp.c:685 utils/adt/like_match.c:290 +msgid "Escape string must be empty or one character." +msgstr "エスケープ文字は空か1文字でなければなりません。" -#: utils/misc/guc.c:2700 -msgid "Enables the planner to use constraints to optimize queries." -msgstr "プランナによる、問い合わせを最適化する制約の使用を有効にします。" +#: utils/adt/regexp.c:884 +msgid "regexp_split does not support the global option" +msgstr "regexp_splitはグローバルオプションをサポートしません" -#: utils/misc/guc.c:2701 -msgid "" -"Table scans will be skipped if their constraints guarantee that no rows " -"match the query." -msgstr "" -"制約により、問い合わせに一致する行が存在しないことが保証されている場合、テー" -"ブルのスキャンを行いません。" +#: utils/adt/xml.c:135 +msgid "unsupported XML feature" +msgstr "未サポートのXML機能です。" -#: utils/misc/guc.c:2711 -msgid "Sets the transaction isolation level of each new transaction." -msgstr "新規トランザクションのトランザクション隔離レベルを設定します。" +#: utils/adt/xml.c:136 +msgid "This functionality requires the server to be built with libxml support." +msgstr "この機能はlibxmlサポートを付けたサーバが必要です。" -#: utils/misc/guc.c:2720 -msgid "Sets the display format for interval values." -msgstr "時刻インターバル値の表示フォーマットを設定します。" +#: utils/adt/xml.c:137 +msgid "You need to rebuild PostgreSQL using --with-libxml." +msgstr "--with-libxmlを使用してPostgreSQLを再構築しなければなりません。" -#: utils/misc/guc.c:2730 -msgid "Sets the verbosity of logged messages." -msgstr "ログ出力メッセージの詳細度を設定します。" +#: utils/adt/xml.c:156 utils/mb/mbutils.c:515 +#, c-format +msgid "invalid encoding name \"%s\"" +msgstr "符号化方式名\"%s\"が無効です" -#: utils/misc/guc.c:2739 -msgid "Sets the message levels that are logged." -msgstr "ログに出力するメッセージレベルを設定します。" +#: utils/adt/xml.c:402 utils/adt/xml.c:407 +msgid "invalid XML comment" +msgstr "無効なXMLコメントです" -#: utils/misc/guc.c:2749 -msgid "" -"Causes all statements generating error at or above this level to be logged." -msgstr "このレベル以上のエラーを発生させた全てのSQL文をログに記録します。" +#: utils/adt/xml.c:536 +msgid "not an XML document" +msgstr "XML文書ではありません" -#: utils/misc/guc.c:2759 -msgid "Sets the type of statements logged." -msgstr "ログ出力する文の種類を設定します。" +#: utils/adt/xml.c:689 utils/adt/xml.c:712 +msgid "invalid XML processing instruction" +msgstr "無効なXML処理命令です" -#: utils/misc/guc.c:2769 -msgid "Sets the syslog \"facility\" to be used when syslog enabled." -msgstr "syslogを有効にした場合に使用するsyslog \"facility\"を設定します。" +#: utils/adt/xml.c:690 +#, c-format +msgid "XML processing instruction target name cannot be \"%s\"." +msgstr "XML処理命令の対象名を\"%s\"とすることができませんでした。" -#: utils/misc/guc.c:2779 -msgid "Sets the session's behavior for triggers and rewrite rules." -msgstr "トリガと書き換えルールに関するセッションの動作を設定します。" +#: utils/adt/xml.c:713 +msgid "XML processing instruction cannot contain \"?>\"." +msgstr "XML処理命令には\"?>\"を含めることはできません。" -#: utils/misc/guc.c:2789 -msgid "Sets the message levels that are logged during recovery." -msgstr "リカバリー中にログを取るべきメッセージのレベルを設定します。" +#: utils/adt/xml.c:792 +msgid "xmlvalidate is not implemented" +msgstr "XML の妥当性検査は実装されていません" -#: utils/misc/guc.c:2799 -msgid "Collects function-level statistics on database activity." -msgstr "データベースの動作に関して、関数レベルの統計情報を収集します。" +#: utils/adt/xml.c:877 +msgid "could not initialize XML library" +msgstr "XMLライブラリを初期化できませんでした" -#: utils/misc/guc.c:2808 -msgid "Set the level of information written to the WAL." -msgstr "WAL に書き出される情報のレベルを設定します。" +#: utils/adt/xml.c:878 +#, c-format +msgid "" +"libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u." +msgstr "" +"libxml2が互換性がない文字型を持ちます: sizeof(char)=%u、sizeof(xmlChar)=%u" -#: utils/misc/guc.c:2817 -msgid "Selects the method used for forcing WAL updates to disk." -msgstr "強制的にWALの更新をディスクに吐き出すための方法を選択します。" +#: utils/adt/xml.c:1420 +msgid "Invalid character value." +msgstr "文字の値が有効ではありません" -#: utils/misc/guc.c:2827 -msgid "Sets how binary values are to be encoded in XML." -msgstr "どのようにバイナリ値をXMLに符号化するかを設定します。" +#: utils/adt/xml.c:1423 +msgid "Space required." +msgstr "スペースをあけてください" -#: utils/misc/guc.c:2836 -msgid "" -"Sets whether XML data in implicit parsing and serialization operations is to " -"be considered as documents or content fragments." -msgstr "" -"暗黙的な解析およびシリアライゼーション操作においてXMLデータを文書とみなすか断" -"片とみなすかを設定します。" +#: utils/adt/xml.c:1426 +msgid "standalone accepts only 'yes' or 'no'." +msgstr "standalone には 'yes' か 'no' だけが有効です" -#: utils/misc/guc.c:3608 -#, 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" -"定する必要があります。\n" +#: utils/adt/xml.c:1429 +msgid "Malformed declaration: missing version." +msgstr "宣言が誤っています:バージョンがありません" -#: utils/misc/guc.c:3627 -#, c-format -msgid "%s cannot access the server configuration file \"%s\": %s\n" -msgstr "%sはサーバ設定ファイル\"%s\"にアクセスできません: %s\n" +#: utils/adt/xml.c:1432 +msgid "Missing encoding in text declaration." +msgstr "テキスト宣言にエンコーディングの指定がありません" -#: utils/misc/guc.c:3647 -#, c-format -msgid "" -"%s does not know where to find the database system data.\n" -"This can be specified as \"data_directory\" in \"%s\", or by the -D " -"invocation option, or by the PGDATA environment variable.\n" -msgstr "" -"%sはデータベースシステムデータの場所を認識できません。\n" -"\"%s\"内で\"data_directory\"を指定する、-Dオプションを指定する、PGDATA環\n" -"境変数で設定することができます。\n" +#: utils/adt/xml.c:1435 +msgid "Parsing XML declaration: '?>' expected." +msgstr "XML 宣言のパース中: '>?' が必要です。" -#: utils/misc/guc.c:3678 +#: utils/adt/xml.c:1438 #, c-format -msgid "" -"%s does not know where to find the \"hba\" configuration file.\n" -"This can be specified as \"hba_file\" in \"%s\", or by the -D invocation " -"option, or by the PGDATA environment variable.\n" -msgstr "" -"%sは\"hba\"設定ファイルの場所を認識できません。\n" -"\"%s\"内で\"hba_directory\"を指定する、-Dオプションを指定する、PGDATA環\n" -"境変数で設定することができます。\n" +msgid "Unrecognized libxml error code: %d." +msgstr "libxml のエラーコードを認識できません: %d" -#: utils/misc/guc.c:3701 -#, c-format -msgid "" -"%s does not know where to find the \"ident\" configuration file.\n" -"This can be specified as \"ident_file\" in \"%s\", or by the -D invocation " -"option, or by the PGDATA environment variable.\n" -msgstr "" -"%sは\"ident\"設定ファイルの場所を認識できません。\n" -"\"%s\"内で\"ident_directory\"を指定する、-Dオプションを指定する、PGDATA環\n" -"境変数で設定することができます。\n" +#: utils/adt/xml.c:1689 utils/adt/date.c:217 +msgid "date out of range" +msgstr "日付が範囲外です" -#: utils/misc/guc.c:4306 utils/misc/guc.c:4470 -msgid "Value exceeds integer range." -msgstr "値が整数範囲を超えています。" +#: utils/adt/xml.c:1690 +msgid "XML does not support infinite date values." +msgstr "XMLは無限のデータ値をサポートしません。" -#: utils/misc/guc.c:4325 -msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"." -msgstr "このパラメータの有効単位は\"kB\"、\"MB\"、\"GB\"です。" +#: utils/adt/xml.c:1713 utils/adt/xml.c:1740 +msgid "XML does not support infinite timestamp values." +msgstr "XMLは無限のタイムスタンプ値をサポートしません。" + +#: utils/adt/xml.c:2125 +msgid "invalid query" +msgstr "無効な問い合わせです" + +#: utils/adt/xml.c:3349 +msgid "invalid array for XML namespace mapping" +msgstr "XML名前空間マッピング用の配列が無効です" -#: utils/misc/guc.c:4384 +#: utils/adt/xml.c:3350 msgid "" -"Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"." -msgstr "このパラメータの有効単位は\"ms\"、\"s\"、\"min\"、\"h\"、\"d\"です。" +"The array must be two-dimensional with length of the second axis equal to 2." +msgstr "配列は第2軸の長さが2の、2次元配列でなければなりません。" -#: utils/misc/guc.c:4693 utils/misc/guc.c:5357 utils/misc/guc.c:5407 -#: utils/misc/guc.c:6111 utils/misc/guc.c:6270 utils/misc/guc.c:7492 -#: guc-file.l:217 -#, c-format -msgid "unrecognized configuration parameter \"%s\"" -msgstr "設定パラメータ\"%s\"は不明です" +#: utils/adt/xml.c:3374 +msgid "empty XPath expression" +msgstr "XPath式が空です" -#: utils/misc/guc.c:4720 -#, c-format -msgid "parameter \"%s\" cannot be changed" -msgstr "パラメータ\"%s\"を変更できません" +#: utils/adt/xml.c:3422 +msgid "neither namespace name nor URI may be null" +msgstr "名前空間の名前がURIでも空でもありません" -#: utils/misc/guc.c:4737 utils/misc/guc.c:4745 guc-file.l:264 +#: utils/adt/xml.c:3429 #, c-format -msgid "parameter \"%s\" cannot be changed without restarting the server" -msgstr "パラメータ \"%s\" を変更するにはサーバーの再起動が必要です" +msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" +msgstr "\"%s\"という名前のXML名前空間およびURI\"%s\"を登録できませんでした。" -#: utils/misc/guc.c:4755 +#: utils/adt/numutils.c:75 #, c-format -msgid "parameter \"%s\" cannot be changed now" -msgstr "現在パラメータ\"%s\"を変更できません" +msgid "value \"%s\" is out of range for type integer" +msgstr "値\"%s\"は型integerの範囲外です" -#: utils/misc/guc.c:4786 +#: utils/adt/numutils.c:81 #, c-format -msgid "parameter \"%s\" cannot be set after connection start" -msgstr "接続開始後にパラメータ\"%s\"を変更できません" +msgid "value \"%s\" is out of range for type smallint" +msgstr "値\"%s\"は型smallintの範囲外です" -#: utils/misc/guc.c:4796 utils/misc/guc.c:7507 +#: utils/adt/numutils.c:87 #, c-format -msgid "permission denied to set parameter \"%s\"" -msgstr "パラメータ\"%s\"を設定する権限がありません" +msgid "value \"%s\" is out of range for 8-bit integer" +msgstr "値\"%s\"は8ビット整数の範囲外です" -#: utils/misc/guc.c:4834 -#, c-format -msgid "cannot set parameter \"%s\" within security-definer function" -msgstr "セキュリティー定義用関数内でパラメーター \"%s\" を設定できません" +#: utils/adt/tsgistidx.c:100 +msgid "gtsvector_in not implemented" +msgstr "gtsvector_inは実装されていません" -#: utils/misc/guc.c:4891 -#, c-format -msgid "parameter \"%s\" requires a Boolean value" -msgstr "パラメータ\"%s\"はboolean値が必要です" +#: utils/adt/name.c:87 utils/adt/acl.c:166 +msgid "identifier too long" +msgstr "識別子が長すぎます" -#: utils/misc/guc.c:4913 utils/misc/guc.c:4988 +#: utils/adt/name.c:88 utils/adt/acl.c:167 #, c-format -msgid "invalid value for parameter \"%s\": %d" -msgstr "パラメータ\"%s\"の値が無効です: %d" +msgid "Identifier must be less than %d characters." +msgstr "識別子は%d文字より短くなければなりません。" -#: utils/misc/guc.c:4957 utils/misc/guc.c:5159 utils/misc/guc.c:5225 -#: utils/misc/guc.c:5251 guc-file.l:178 +#: utils/adt/tid.c:70 utils/adt/tid.c:78 utils/adt/tid.c:86 #, c-format -msgid "invalid value for parameter \"%s\": \"%s\"" -msgstr "パラメータ\"%s\"の値が無効です: \"%s\"" +msgid "invalid input syntax for type tid: \"%s\"" +msgstr "型tidの入力構文が無効です: \"%s\"" -#: utils/misc/guc.c:4966 +#: utils/adt/tsquery.c:177 #, c-format -msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)" -msgstr "%dはパラメータ\"%s\"の有効範囲を超えています(%d .. %d)" +msgid "no operand in tsquery: \"%s\"" +msgstr "tsquery内にオペランドがありません\"%s\"" -#: utils/misc/guc.c:5030 +#: utils/adt/tsquery.c:250 #, c-format -msgid "parameter \"%s\" requires a numeric value" -msgstr "パラメータ\"%s\"は数値が必要です" +msgid "value is too big in tsquery: \"%s\"" +msgstr "tsquery内の値が大きすぎます: \"%s\"" -#: utils/misc/guc.c:5038 +#: utils/adt/tsquery.c:255 #, c-format -msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)" -msgstr "%gはパラメータ\"%s\"の有効範囲を超えています(%g .. %g)" +msgid "operand is too long in tsquery: \"%s\"" +msgstr "tsqueryのオペランドが長過ぎます: \"%s\"" -#: utils/misc/guc.c:5060 +#: utils/adt/tsquery.c:283 #, c-format -msgid "invalid value for parameter \"%s\": %g" -msgstr "パラメータ\"%s\"の値が無効です: %g" +msgid "word is too long in tsquery: \"%s\"" +msgstr "tsquery内の単語が長すぎます: \"%s\"" -#: utils/misc/guc.c:5363 utils/misc/guc.c:5411 utils/misc/guc.c:6274 +#: utils/adt/tsquery.c:512 #, c-format -msgid "must be superuser to examine \"%s\"" -msgstr "\"%s\"を確認するにはスーパーユーザでなければなりません" +msgid "text-search query doesn't contain lexemes: \"%s\"" +msgstr "テキスト検索問い合わせが字句要素を含みません: \"%s\"" -#: utils/misc/guc.c:5522 +#: utils/adt/varchar.c:48 utils/adt/varbit.c:56 #, c-format -msgid "SET %s takes only one argument" -msgstr "SET %sは1つの引数のみを取ります" +msgid "length for type %s must be at least 1" +msgstr "型%sの長さは最低でも1です" -#: utils/misc/guc.c:5749 -msgid "SET requires parameter name" -msgstr "SETにはパラメータ名が必要です" +#: utils/adt/varchar.c:52 utils/adt/varbit.c:61 +#, c-format +msgid "length for type %s cannot exceed %d" +msgstr "型%sの長さは%dを超えられません" -#: utils/misc/guc.c:5864 +#: utils/adt/varchar.c:152 utils/adt/varchar.c:305 #, c-format -msgid "attempt to redefine parameter \"%s\"" -msgstr "パラメータ\"%s\"を再定義しようとしています" +msgid "value too long for type character(%d)" +msgstr "値は型character(%d)としては長すぎます" -#: utils/misc/guc.c:7208 +#: utils/adt/varchar.c:473 utils/adt/varchar.c:594 #, c-format -msgid "could not parse setting for parameter \"%s\"" -msgstr "パラメータ\"%s\"の設定を解析できません" +msgid "value too long for type character varying(%d)" +msgstr "値は型character varying(%d)としては長すぎます" -#: utils/misc/guc.c:7551 -msgid "invalid list syntax for parameter \"log_destination\"" -msgstr "パラメータ\"log_destination\"のリスト構文が無効です" +#: utils/adt/genfile.c:60 +msgid "reference to parent directory (\"..\") not allowed" +msgstr "親ディレクトリの参照(\"..\")はできません" -#: utils/misc/guc.c:7575 -#, c-format -msgid "unrecognized \"log_destination\" key word: \"%s\"" -msgstr "\"log_destination\"キーワードが不明です: \"%s\"" +#: utils/adt/genfile.c:71 +msgid "absolute path not allowed" +msgstr "絶対経路はできません" -#: utils/misc/guc.c:7650 -msgid "SET AUTOCOMMIT TO OFF is no longer supported" -msgstr "SET AUTOCOMMIT TO OFFはもうサポートされていません" +#: utils/adt/genfile.c:76 +msgid "path must be in or below the current directory" +msgstr "パスはカレントディレクトリもしくはその配下でなければなりません" -#: utils/misc/guc.c:7722 -msgid "assertion checking is not supported by this build" -msgstr "このインストレーションにはアサート検査は組み込まれていません" +#: utils/adt/genfile.c:122 commands/copy.c:2193 +#, c-format +msgid "could not open file \"%s\" for reading: %m" +msgstr "ファイル\"%s\"を読み取り用にオープンできませんでした: %m" -#: utils/misc/guc.c:7737 -msgid "Bonjour is not supported by this build" -msgstr "このビルドでは bonjour はサポートされていません" +#: utils/adt/genfile.c:129 +#, c-format +msgid "could not seek in file \"%s\": %m" +msgstr "ファイル\"%s\"をシークできませんでした: %m" -#: utils/misc/guc.c:7752 -msgid "SSL is not supported by this build" -msgstr "このインストレーションではSSLはサポートされていません" +#: 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/misc/guc.c:7766 -msgid "cannot enable parameter when \"log_statement_stats\" is true" -msgstr "\"log_statement_stats\"が真の場合、パラメータを有効にできません" +#: utils/adt/genfile.c:186 utils/adt/genfile.c:231 +msgid "requested length cannot be negative" +msgstr "負の長さを指定することはできません" -#: utils/misc/guc.c:7782 -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\"が真の場" -"合、\"log_statement_stats\"を有効にできません" +#: utils/adt/genfile.c:272 +msgid "must be superuser to get file information" +msgstr "ファイル情報を入手するにはスーパーユーザでなければなりません" -#: utils/misc/guc.c:7800 -msgid "cannot set transaction read-write mode inside a read-only transaction" -msgstr "" -"読み取りのみのトランザクションでトランザクションモードを読み書きモードに設定" -"することはできません" +#: utils/adt/genfile.c:336 +msgid "must be superuser to get directory listings" +msgstr "ディレクトリ一覧を得るにはスーパーユーザでなければなりません" -#: utils/misc/guc.c:7811 -msgid "cannot set transaction read-write mode during recovery" -msgstr "リカバリー中にはトランザクションを読み書きモードに設定できません" +#: 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/misc/help_config.c:131 -msgid "internal error: unrecognized run-time parameter type\n" -msgstr "内部エラー: 実行時パラメータ種類が不明です\n" +#: utils/adt/geo_ops.c:317 +msgid "could not format \"path\" value" +msgstr "\"path\"の値を整形できませんでした" -#: utils/misc/tzparser.c:63 +#: utils/adt/geo_ops.c:392 #, c-format -msgid "" -"time zone abbreviation \"%s\" is too long (maximum %d characters) in time " -"zone file \"%s\", line %d" -msgstr "" -"時間帯ファイル\"%3$s\"の%4$d行の時間帯省略形\"%1$s\"が長すぎます(最大%2$d文" -"字)" +msgid "invalid input syntax for type box: \"%s\"" +msgstr "型boxの入力構文が無効です: \"%s\"" -#: utils/misc/tzparser.c:72 +#: utils/adt/geo_ops.c:956 #, 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分)の倍数では" -"ありません。" +msgid "invalid input syntax for type line: \"%s\"" +msgstr "型lineの入力構文が無効です: \"%s\"" -#: utils/misc/tzparser.c:86 -#, 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/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/misc/tzparser.c:123 +#: utils/adt/geo_ops.c:1411 utils/adt/geo_ops.c:1434 #, c-format -msgid "missing time zone abbreviation in time zone file \"%s\", line %d" -msgstr "時間帯ファイル\"%s\"の行%dで時間帯省略形がありません" +msgid "invalid input syntax for type path: \"%s\"" +msgstr "型pathの入力構文が無効です: \"%s\"" -#: utils/misc/tzparser.c:134 -#, c-format -msgid "missing time zone offset in time zone file \"%s\", line %d" -msgstr "時間帯ファイル\"%s\"の行%dで時間帯オフセットがありません" +#: utils/adt/geo_ops.c:1473 +msgid "invalid number of points in external \"path\" value" +msgstr "\"path\"の外部値におけるポイント数が無効です" -#: utils/misc/tzparser.c:143 +#: utils/adt/geo_ops.c:1816 #, c-format -msgid "invalid number for time zone offset in time zone file \"%s\", line %d" -msgstr "時間帯ファイル\"%s\"の行%dの時間帯オフセット数値が無効です" +msgid "invalid input syntax for type point: \"%s\"" +msgstr "型pointの入力構文が無効です: \"%s\"" -#: utils/misc/tzparser.c:168 +#: utils/adt/geo_ops.c:2044 #, c-format -msgid "invalid syntax in time zone file \"%s\", line %d" -msgstr "時間帯ファイル\"%s\"の行%dで構文が無効です" +msgid "invalid input syntax for type lseg: \"%s\"" +msgstr "型lsegの入力構文が無効です: \"%s\"" -#: utils/misc/tzparser.c:234 -#, c-format -msgid "time zone abbreviation \"%s\" is multiply defined" -msgstr "時間帯省略形\"%s\"が複数定義されています" +#: utils/adt/geo_ops.c:2648 +msgid "function \"dist_lb\" not implemented" +msgstr "関数\"dist_lb\"は実装されていません" -#: utils/misc/tzparser.c:236 -#, 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/adt/geo_ops.c:3161 +msgid "function \"close_lb\" not implemented" +msgstr "関数\"close_lb\"は実装されていません" -#: utils/misc/tzparser.c:303 -#, c-format -msgid "invalid time zone file name \"%s\"" -msgstr "時間帯ファイル名が無効です: \"%s\"" +#: utils/adt/geo_ops.c:3450 +msgid "cannot create bounding box for empty polygon" +msgstr "空の多角形に対する境界矩形を作成できません" -#: utils/misc/tzparser.c:318 +#: utils/adt/geo_ops.c:3474 utils/adt/geo_ops.c:3486 #, c-format -msgid "time zone file recursion limit exceeded in file \"%s\"" -msgstr "ファイル\"%s\"で時間帯ファイルの再帰の上限を超えました。" +msgid "invalid input syntax for type polygon: \"%s\"" +msgstr "型polygonの入力構文が無効です: \"%s\"" + +#: utils/adt/geo_ops.c:3526 +msgid "invalid number of points in external \"polygon\" value" +msgstr "\"polygon\"の外部値のポイント数が無効です" + +#: utils/adt/geo_ops.c:4049 +msgid "function \"poly_distance\" not implemented" +msgstr "関数\"poly_distance\"は実装されていません" -#: utils/misc/tzparser.c:347 postmaster/postmaster.c:1144 +#: utils/adt/geo_ops.c:4363 +msgid "function \"path_center\" not implemented" +msgstr "関数\"path_center\"は実装されていません" + +#: utils/adt/geo_ops.c:4380 +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 #, 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\"が" -"本来の場所からなくなってしまったことを示しています。" +msgid "invalid input syntax for type circle: \"%s\"" +msgstr "型circleの入力構文が無効です: \"%s\"" + +#: 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:4637 +msgid "invalid radius in external \"circle\" value" +msgstr "\"circle\"の外部値の半径が無効です" + +#: utils/adt/geo_ops.c:5158 +msgid "cannot convert circle with radius zero to polygon" +msgstr "半径0の円を多角形に返還できません" + +#: utils/adt/geo_ops.c:5163 +msgid "must request at least 2 points" +msgstr "少なくとも2ポイントを要求しなければなりません" -#: utils/misc/tzparser.c:361 utils/misc/tzparser.c:376 -#, c-format -msgid "could not read time zone file \"%s\": %m" -msgstr "時間帯ファイル\"%s\"を読み込めませんでした: %m" +#: utils/adt/geo_ops.c:5207 utils/adt/geo_ops.c:5230 +msgid "cannot convert empty polygon to circle" +msgstr "空の多角形を円に変換できません" -#: utils/misc/tzparser.c:388 +#: utils/adt/varbit.c:166 utils/adt/varbit.c:309 utils/adt/varbit.c:366 #, c-format -msgid "line is too long in time zone file \"%s\", line %d" -msgstr "時間帯ファイル\"%s\"の行%dが長すぎます。" +msgid "bit string length %d does not match type bit(%d)" +msgstr "ビット文字列長%dはbit(%d)に一致しません" -#: utils/misc/tzparser.c:413 +#: utils/adt/varbit.c:188 utils/adt/varbit.c:490 #, c-format -msgid "@INCLUDE without file name in time zone file \"%s\", line %d" -msgstr "時間帯ファイル\"%s\"の行%dにファイル名がない@INCLUDEがあります" +msgid "\"%c\" is not a valid binary digit" +msgstr "\"%c\"は有効な2進数表現ではありません" -#: guc-file.l:288 +#: utils/adt/varbit.c:213 utils/adt/varbit.c:515 #, c-format -msgid "parameter \"%s\" removed from configuration file, reset to default" -msgstr "" -"パラメーター \"%s\" が設定ファイルから削除されました。デフォルト値に戻りま" -"す。" +msgid "\"%c\" is not a valid hexadecimal digit" +msgstr "\"%c\"は有効な16進数表現ではありません" -#: guc-file.l:344 -#, c-format -msgid "parameter \"%s\" changed to \"%s\"" -msgstr "パラメータ \"%s\" は \"%s\" に変更されました" +#: utils/adt/varbit.c:300 utils/adt/varbit.c:603 +msgid "invalid length in external bit string" +msgstr "ビット文字列の外部表現の長さが無効です" -#: guc-file.l:412 +#: utils/adt/varbit.c:468 utils/adt/varbit.c:612 utils/adt/varbit.c:674 #, c-format -msgid "" -"could not open configuration file \"%s\": maximum nesting depth exceeded" -msgstr "" -"設定ファイル\"%s\"をオープンできませんでした: 入れ子長が上限を超えています" +msgid "bit string too long for type bit varying(%d)" +msgstr "ビット文字列は型bit varying(%d)には長すぎます" -#: guc-file.l:436 libpq/hba.c:1482 -#, c-format -msgid "could not open configuration file \"%s\": %m" -msgstr "設定ファイル\"%s\"をオープンできませんでした: %m" +#: 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 "負の長さのsubstringはできません" -#: guc-file.l:575 -#, c-format -msgid "syntax error in file \"%s\" line %u, near end of line" -msgstr "ファイル\"%s\"の行%uの行末近辺でで構文エラーがありました" +#: utils/adt/varbit.c:1164 +msgid "cannot AND bit strings of different sizes" +msgstr "サイズが異なるビット文字列のANDはできません" -#: guc-file.l:580 -#, c-format -msgid "syntax error in file \"%s\" line %u, near token \"%s\"" -msgstr "ファイル\"%s\"の行%uのトークン\"%s\"近辺で構文エラーがありました" +#: utils/adt/varbit.c:1206 +msgid "cannot OR bit strings of different sizes" +msgstr "サイズが異なるビット文字列のORはできません" -#: utils/fmgr/dfmgr.c:125 -#, c-format -msgid "could not find function \"%s\" in file \"%s\"" -msgstr "ファイル\"%2$s\"内に関数\"%1$s\"がありませんでした" +#: utils/adt/varbit.c:1253 +msgid "cannot XOR bit strings of different sizes" +msgstr "サイズが異なるビット文字列のXORはできません" -#: utils/fmgr/dfmgr.c:204 utils/fmgr/dfmgr.c:413 utils/fmgr/dfmgr.c:461 +#: utils/adt/varbit.c:1731 utils/adt/varbit.c:1789 #, c-format -msgid "could not access file \"%s\": %m" -msgstr "ファイル\"%s\"にアクセスできませんでした: %m" +msgid "bit index %d out of valid range (0..%d)" +msgstr "ビット型インデックス %d が有効範囲 0 から %d までの間にありません" -#: utils/fmgr/dfmgr.c:242 -#, c-format -msgid "could not load library \"%s\": %s" -msgstr "ライブラリ\"%s\"をロードできませんでした: %s" +#: utils/adt/varbit.c:1740 utils/adt/varlena.c:2163 +msgid "new bit must be 0 or 1" +msgstr "新しいビットは 0 か 1 でなければなりません" -#: utils/fmgr/dfmgr.c:274 +#: utils/adt/acl.c:253 #, c-format -msgid "incompatible library \"%s\": missing magic block" -msgstr "\"%s\"は互換性がないライブラリです。マジックブロックの欠落" +msgid "unrecognized key word: \"%s\"" +msgstr "キーワードが不明です: \"%s\"" -#: utils/fmgr/dfmgr.c:276 -msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro." -msgstr "拡張ライブラリはPG_MODULE_MAGICマクロを使用しなければなりません。" +#: utils/adt/acl.c:254 +msgid "ACL key word must be \"group\" or \"user\"." +msgstr "ACLキーワードは\"group\"または\"user\"でなければなりません。" -#: utils/fmgr/dfmgr.c:312 -#, c-format -msgid "incompatible library \"%s\": version mismatch" -msgstr "\"%s\"は互換性がないライブラリです: バージョンの不一致" +#: utils/adt/acl.c:259 +msgid "missing name" +msgstr "名前がありません" -#: utils/fmgr/dfmgr.c:314 -#, c-format -msgid "Server is version %d.%d, library is version %d.%d." -msgstr "サーバのバージョンは%d.%d、ライブラリのバージョンは%d.%d<です。" +#: utils/adt/acl.c:260 +msgid "A name must follow the \"group\" or \"user\" key word." +msgstr "\"group\"または\"user\"キーワードの後には名前が必要です。" -#: utils/fmgr/dfmgr.c:333 -#, c-format -msgid "Server has FUNC_MAX_ARGS = %d, library has %d." -msgstr "サーバ側は FUNC_MAX_ARGS = %d ですが、ライブラリ側は %d です" +#: utils/adt/acl.c:266 +msgid "missing \"=\" sign" +msgstr "\"=\"記号がありません" -#: utils/fmgr/dfmgr.c:342 +#: utils/adt/acl.c:319 #, c-format -msgid "Server has INDEX_MAX_KEYS = %d, library has %d." -msgstr "サーバ側は INDEX_MAX_KEYS = %d ですが、ライブラリ側は %d です" +msgid "invalid mode character: must be one of \"%s\"" +msgstr "モード文字が無効です: \"%s\"の一つでなければなりません" -#: utils/fmgr/dfmgr.c:351 -#, c-format -msgid "Server has NAMEDATALEN = %d, library has %d." -msgstr "サーバ側は NAMEDATALEN = %d ですが、ライブラリ側は %d です" +#: utils/adt/acl.c:341 +msgid "a name must follow the \"/\" sign" +msgstr "\"/\"記号の後には名前が必要です" -#: utils/fmgr/dfmgr.c:360 +#: utils/adt/acl.c:349 #, c-format -msgid "Server has FLOAT4PASSBYVAL = %s, library has %s." -msgstr "サーバ側はFLOAT4PASSBYVAL = %sですが、ライブラリ側は%sです。" +msgid "defaulting grantor to user ID %u" +msgstr "権限付与者をデフォルトのユーザID %uにしています" -#: utils/fmgr/dfmgr.c:369 -#, c-format -msgid "Server has FLOAT8PASSBYVAL = %s, library has %s." -msgstr "サーバ側はFLOAT8PASSBYVAL = %sですが、ライブラリ側は%sです。" +#: utils/adt/acl.c:540 +msgid "ACL array contains wrong data type" +msgstr "ACL配列に不正なデータ型があります。" -#: utils/fmgr/dfmgr.c:376 -msgid "Magic block has unexpected length or padding difference." -msgstr "" -"マジックブロックが意図しない長さであるか、またはパディングが異なります。" +#: utils/adt/acl.c:544 +msgid "ACL arrays must be one-dimensional" +msgstr "ACL配列は1次元の配列でなければなりません" -#: utils/fmgr/dfmgr.c:379 +#: utils/adt/acl.c:548 +msgid "ACL arrays must not contain null values" +msgstr "ACL配列にはNULL値を含めてはいけません" + +#: utils/adt/acl.c:572 +msgid "extra garbage at the end of the ACL specification" +msgstr "ACL指定の後に余計なごみがあります" + +#: utils/adt/acl.c:1129 +msgid "grant options cannot be granted back to your own grantor" +msgstr "グラントオプションでその権限付与者に権限を戻すことはできません" + +#: utils/adt/acl.c:1190 +msgid "dependent privileges exist" +msgstr "依存する権限が存在します" + +#: utils/adt/acl.c:1191 +msgid "Use CASCADE to revoke them too." +msgstr "これらも取り上げるにはCASCADEを使用してください" + +#: utils/adt/acl.c:1470 +msgid "aclinsert is no longer supported" +msgstr "aclinsertはもうサポートされていません" + +#: utils/adt/acl.c:1480 +msgid "aclremove is no longer supported" +msgstr "aclremoveはもうサポートされていません" + +#: utils/adt/acl.c:1566 utils/adt/acl.c:1620 #, c-format -msgid "incompatible library \"%s\": magic block mismatch" -msgstr "\"%s\"は互換性がないライブラリです: マジックブロックの不一致" +msgid "unrecognized privilege type: \"%s\"" +msgstr "権限種類が不明です: \"%s\"" -#: utils/fmgr/dfmgr.c:545 +#: utils/adt/acl.c:4608 #, c-format -msgid "access to library \"%s\" is not allowed" -msgstr "ライブラリ\"%s\"へのアクセスは許されていません" +msgid "must be member of role \"%s\"" +msgstr "ロール\"%s\"のメンバでなければなりません" -#: utils/fmgr/dfmgr.c:572 +#: utils/adt/acl.c:4822 utils/init/miscinit.c:432 commands/variable.c:882 +#: commands/variable.c:954 commands/user.c:623 commands/user.c:825 +#: commands/user.c:905 commands/user.c:1056 #, c-format -msgid "invalid macro name in dynamic library path: %s" -msgstr "ダイナミックライブラリパス内のマクロが無効です: %s" +msgid "role \"%s\" does not exist" +msgstr "ロール\"%s\"は存在しません" -#: utils/fmgr/dfmgr.c:617 -msgid "zero-length component in parameter \"dynamic_library_path\"" -msgstr "パラメータ\"dynamic_library_path\"内に長さが0の要素があります" +#: utils/adt/date.c:71 +#, c-format +msgid "TIME(%d)%s precision must not be negative" +msgstr "(%d)%sの精度は負ではいけません" -#: utils/fmgr/dfmgr.c:636 -msgid "component in parameter \"dynamic_library_path\" is not an absolute path" -msgstr "パラメータ\"dynamic_library_path\"内の要素が絶対パスでありません" +#: utils/adt/date.c:77 +#, c-format +msgid "TIME(%d)%s precision reduced to maximum allowed, %d" +msgstr "TIME(%d)%sの位取りを許容最大値%dまで減らしました" -#: utils/fmgr/funcapi.c:354 +#: utils/adt/date.c:167 #, c-format -msgid "" -"could not determine actual result type for function \"%s\" declared to " -"return type %s" -msgstr "戻り値型%2$sとして宣言された関数\"%1$s\"の実際の結果型を決定できません" +msgid "date out of range: \"%s\"" +msgstr "日付が範囲外です: \"%s\"" -#: utils/fmgr/funcapi.c:1187 utils/fmgr/funcapi.c:1218 -msgid "number of aliases does not match number of columns" -msgstr "別名の数が列の数と一致しません" +#: utils/adt/date.c:359 +msgid "cannot subtract infinite dates" +msgstr "無限大の日付は減算できません" -#: utils/fmgr/funcapi.c:1212 -msgid "no column alias was provided" -msgstr "列の別名が提供されていませんでした" +#: utils/adt/date.c:416 utils/adt/date.c:453 +msgid "date out of range for timestamp" +msgstr "タイムスタンプで日付が範囲外です" -#: utils/fmgr/funcapi.c:1236 -msgid "could not determine row description for function returning record" -msgstr "レコードを返す関数についての説明の行を決定できませんでした" +#: utils/adt/date.c:986 +msgid "cannot convert reserved abstime value to date" +msgstr "予約されたabstimeからdateへの変換はできません" -#: utils/fmgr/fmgr.c:264 -#, c-format -msgid "internal function \"%s\" is not in internal lookup table" -msgstr "内部関数\"%s\"は内部用検索テーブルにありません" +#: 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/fmgr/fmgr.c:468 +#: utils/adt/date.c:1793 utils/adt/date.c:1810 #, c-format -msgid "unrecognized API version %d reported by info function \"%s\"" -msgstr "info関数\"%2$s\"で報告されたAPIバージョン%1$dが不明です" +msgid "\"time\" units \"%s\" not recognized" +msgstr "\"time\"の単位\"%s\"が不明です" -#: utils/fmgr/fmgr.c:839 utils/fmgr/fmgr.c:2071 +#: utils/adt/date.c:1932 +msgid "time zone displacement out of range" +msgstr "時間帯の置換が範囲外です" + +#: utils/adt/date.c:2557 utils/adt/date.c:2574 #, c-format -msgid "function %u has too many arguments (%d, maximum is %d)" -msgstr "関数%uの引数が多すぎます(%d。最大は%d)" +msgid "\"time with time zone\" units \"%s\" not recognized" +msgstr "\"time with time zone\"の単位\"%s\"が不明です" -#: utils/mb/wchar.c:1609 +#: utils/adt/date.c:2672 #, c-format -msgid "invalid byte sequence for encoding \"%s\": 0x%s" -msgstr "符号化方式\"%s\"で無効なバイトシーケンスです: 0x%s" +msgid "\"interval\" time zone \"%s\" not valid" +msgstr "\"interval\"の時間帯\"%s\"が無効です" -#: utils/mb/wchar.c:1638 +#: utils/adt/domains.c:80 #, c-format -msgid "character 0x%s of encoding \"%s\" has no equivalent in \"%s\"" -msgstr "符号化方式\"%2$s\"文字0x%1$s<は\"%3$s\"と同じではありません" +msgid "type %s is not a domain" +msgstr "型%sはドメインではありません" -#: 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/mac.c:65 #, c-format -msgid "unexpected encoding ID %d for WIN character sets" -msgstr "WIN文字セットに対する符号化方式ID %dは想定外です<" +msgid "invalid input syntax for type macaddr: \"%s\"" +msgstr "型macaddrの入力構文が無効です: \"%s\"" -#: 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/mac.c:72 #, c-format -msgid "unexpected encoding ID %d for ISO 8859 character sets" -msgstr "ISO8859文字セットに対する符号化方式ID %dは想定外です" +msgid "invalid octet value in \"macaddr\" value: \"%s\"" +msgstr "\"macaddr\"の値でオクテット値が無効です: \"%s\"" -#: utils/mb/encnames.c:485 -msgid "encoding name too long" -msgstr "符号化方式名称が長すぎます" +#: utils/adt/varlena.c:1314 +#, +msgid "could not determine which collation to use for string comparison" +msgstr "文字列比較においてどの照合順序を適用すべきかを決定できませんでした" -#: utils/mb/conv.c:509 +#: utils/adt/varlena.c:1358 utils/adt/varlena.c:1371 #, c-format -msgid "invalid encoding number: %d" -msgstr "符号化方式番号が無効です: %d" +msgid "could not convert string to UTF-16: error %lu" +msgstr "文字列をUTF-16に変換できませんでした: エラー %lu" -#: utils/mb/mbutils.c:311 +#: utils/adt/varlena.c:1386 #, c-format -msgid "" -"default conversion function for encoding \"%s\" to \"%s\" does not exist" -msgstr "符号化方式\"%s\"から\"%s\"用のデフォルト変換関数は存在しません" +msgid "could not compare Unicode strings: %m" +msgstr "Unicode文字列を比較できませんでした: %m" -#: utils/mb/mbutils.c:335 utils/mb/mbutils.c:607 +#: utils/adt/varlena.c:2041 utils/adt/varlena.c:2072 utils/adt/varlena.c:2108 +#: utils/adt/varlena.c:2151 #, c-format -msgid "String of %d bytes is too long for encoding conversion." -msgstr "%dバイトの文字列は符号化変換では長すぎます。" +msgid "index %d out of valid range, 0..%d" +msgstr "インデックス%dは有効範囲0から%dまでの間にありません" -#: utils/mb/mbutils.c:422 -#, c-format -msgid "invalid source encoding name \"%s\"" -msgstr "変換元符号化方式が無効です: \"%s\"" +#: utils/adt/varlena.c:2959 +msgid "field position must be greater than zero" +msgstr "フィールド位置は0より大きくなければなりません" + +#: utils/adt/varlena.c:3816 utils/adt/varlena.c:3877 +#, +msgid "unterminated conversion specifier" +msgstr "変換識別子の終端がありません" + +#: utils/adt/varlena.c:3840 utils/adt/varlena.c:3856 +#, +msgid "argument number is out of range" +msgstr "引数の数が範囲を超えています" + +#: utils/adt/varlena.c:3883 +msgid "conversion specifies argument 0, but arguments are numbered from 1" +msgstr "変換の際は引数 0 を指定していますが、引数が 1 から始まっています" + +#: utils/adt/varlena.c:3890 +#, +msgid "too few arguments for format conversion" +msgstr "書式の変換には引数が少なすぎます" -#: utils/mb/mbutils.c:427 +#: utils/adt/varlena.c:3911 #, c-format -msgid "invalid destination encoding name \"%s\"" -msgstr "変換先符号化方式が無効です: \"%s\"" +msgid "unrecognized conversion specifier: %c" +msgstr "変換指示子が認識できません: %c" -#: utils/mb/mbutils.c:539 +#: utils/adt/varlena.c:3940 +msgid "NULL cannot be escaped as an SQL identifier" +msgstr "NULL は SQL 識別子としてエスケープできません" + +#: utils/adt/pg_locale.c:993 utils/adt/pg_locale.c:1006 +#: utils/adt/pg_locale.c:1012 #, c-format -msgid "invalid byte value for encoding \"%s\": 0x%02x" -msgstr "符号化方式\"%s\"で無効なバイト値です: 0x%02x" +msgid "could not create locale \"%s\": %m" +msgstr "ロケール \"%s\" を作成できませんでした: %m" + +#: utils/adt/pg_locale.c:1023 +#, +msgid "" +"collations with different collate and ctype values are not supported on this " +"platform" +msgstr "このプラットフォームでは異なった collate と ctype による照合順序を" +"サポートしていません" + +#: utils/adt/pg_locale.c:1038 +#, +msgid "nondefault collations are not supported on this platform" +msgstr "このプラットフォームでデフォルトでない照合順序はサポートされていません" -#: utils/mb/mbutils.c:734 +#: utils/adt/pg_locale.c:1209 msgid "invalid multibyte character for locale" msgstr "ロケールではマルチバイト文字は無効です" -#: utils/mb/mbutils.c:735 +#: utils/adt/pg_locale.c:1210 msgid "" "The server's LC_CTYPE locale is probably incompatible with the database " "encoding." @@ -10462,6160 +11635,6622 @@ msgstr "" "サーバのLC_CTYPEロケールはおそらくデータベースの符号化方式と互換性がありませ" "ん" -#: 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 "ページポインタが破損しています: lower = %u, upper = %u, special = %u\"" +#: utils/adt/like.c:211 utils/adt/selfuncs.c:4852 +#, +msgid "could not determine which collation to use for ILIKE" +msgstr "ILIKE で使用する照合順序を特定できませんでした" -#: storage/page/bufpage.c:433 +#: utils/adt/tsquery_cleanup.c:285 +msgid "" +"text-search query contains only stop words or doesn't contain lexemes, " +"ignored" +msgstr "" +"テキスト検索問い合わせはストップワードのみを含む、あるいは、字句要素を含みま" +"せん。無視されます" + +#: 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 "corrupted item pointer: %u" -msgstr "アイテムポインタが破損しています: %u" +msgid "invalid input syntax for type numeric: \"%s\"" +msgstr "numeric型の入力構文が無効です: \"%s\"" -#: storage/page/bufpage.c:444 storage/page/bufpage.c:805 +#: utils/adt/numeric.c:653 +msgid "invalid length in external \"numeric\" value" +msgstr "\"numeric\"の外部値の長さが無効です" + +#: utils/adt/numeric.c:664 +msgid "invalid sign in external \"numeric\" value" +msgstr "\"numeric\"の外部値の符号が無効です" + +#: utils/adt/numeric.c:674 +msgid "invalid digit in external \"numeric\" value" +msgstr "\"numeric\"の外部値の桁が無効です" + +#: utils/adt/numeric.c:814 utils/adt/numeric.c:828 #, c-format -msgid "corrupted item lengths: total %u, available space %u" -msgstr "アイテム長が破損しています: 合計 %u 利用可能空間 %u" +msgid "NUMERIC precision %d must be between 1 and %d" +msgstr "NUMERICの精度%dは1から%dまででなければなりません" -#: storage/page/bufpage.c:642 storage/page/bufpage.c:778 +#: utils/adt/numeric.c:819 #, c-format -msgid "corrupted item pointer: offset = %u, size = %u" -msgstr "アイテムポインタが破損しています: オフセット = %u サイズ = %u" +msgid "NUMERIC scale %d must be between 0 and precision %d" +msgstr "NUMERICの位取り%dは0から精度%dまででなければなりません" -#: storage/ipc/sinvaladt.c:302 storage/ipc/procarray.c:269 -#: storage/lmgr/proc.c:290 postmaster/postmaster.c:1833 -msgid "sorry, too many clients already" -msgstr "現在クライアント数が多すぎます" +#: utils/adt/numeric.c:837 +msgid "invalid NUMERIC type modifier" +msgstr "無効なNUMERIC型の修正子です" -#: storage/ipc/procarray.c:693 -msgid "consistent state delayed because recovery snapshot incomplete" -msgstr "リカバリースナップショットが不完全のため、一貫性状態が遅延しました" +#: utils/adt/numeric.c:1881 utils/adt/numeric.c:3754 +msgid "value overflows numeric format" +msgstr "値がnumericの書式でオーバフローしています" -#: storage/ipc/shmem.c:346 storage/ipc/shmem.c:399 -msgid "" -"not enough shared memory for data structure \"%s\" (%lu bytes requested)" -msgstr "" -"データ構造体 \"%s\" 用の共有メモリが不足しています( %u バイト必要)" +#: utils/adt/numeric.c:2229 +msgid "cannot convert NaN to integer" +msgstr "NaNをintegerに変換できません" -#: storage/ipc/shmem.c:365 -msgid "could not create ShmemIndex entry for data structure \"%s\"" -msgstr "データ構造体 \"%s\" のための ShmemIndex エントリを作成できませんでした" +#: utils/adt/numeric.c:2297 +msgid "cannot convert NaN to bigint" +msgstr "NaNをbigintに変換できません" -#: storage/ipc/shmem.c:380 +#: utils/adt/numeric.c:2345 +msgid "cannot convert NaN to smallint" +msgstr "NaNをsmallintに変換できません" + +#: utils/adt/numeric.c:3824 +msgid "numeric field overflow" +msgstr "numericフィールドがオーバーフローしています" + +#: utils/adt/numeric.c:3825 #, c-format msgid "" -"ShmemIndex entry size is wrong for data structure \"%s\": expected %lu, " -"actual %lu" +"A field with precision %d, scale %d must round to an absolute value less " +"than %s%d." msgstr "" -"データ構造体 \"%s\" のための ShmemIndex エントリのサイズが誤っています:" -"期待値=%lu、実際=%lu" +"精度 %d、位取り %dを持つフィールドは、%s%dより小さな絶対値に丸められます。" -#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446 -msgid "requested shared memory size overflows size_t" -msgstr "要求された共有メモリのサイズはsize_tを超えています" +#: utils/adt/numeric.c:5273 +msgid "argument for function \"exp\" too big" +msgstr "関数\"exp\"の引数が大きすぎます" -#: storage/file/copydir.c:172 storage/smgr/md.c:278 -#: postmaster/postmaster.c:3627 access/transam/xlog.c:2323 -#: access/transam/xlog.c:2456 access/transam/xlog.c:4286 -#: access/transam/xlog.c:8439 access/transam/xlog.c:8594 -#, c-format -msgid "could not create file \"%s\": %m" -msgstr "ファイル\"%s\"を作成できませんでした: %m" +#: utils/adt/pseudotypes.c:94 +msgid "cannot accept a value of type any" +msgstr "型anyの値を受け付けられません" -#: storage/file/copydir.c:211 access/transam/xlog.c:2368 -#: access/transam/xlog.c:2500 access/transam/xlog.c:4405 -#, c-format -msgid "could not close file \"%s\": %m" -msgstr "ファイル\"%s\"をクローズできませんでした: %m" +#: utils/adt/pseudotypes.c:107 +msgid "cannot display a value of type any" +msgstr "型anyの値を表示できません" -#: storage/file/copydir.c:269 storage/smgr/md.c:909 storage/smgr/md.c:1083 -#: storage/smgr/md.c:1226 access/transam/xlog.c:2363 -#: access/transam/xlog.c:2495 access/transam/xlog.c:4400 -#, c-format -msgid "could not fsync file \"%s\": %m" -msgstr "ファイル\"%s\"をfsyncできませんでした: %m" +#: utils/adt/pseudotypes.c:121 utils/adt/pseudotypes.c:149 +msgid "cannot accept a value of type anyarray" +msgstr "型anyarrayの値を受け付けられません" -#: storage/file/fd.c:402 -#, c-format -msgid "getrlimit failed: %m" -msgstr "getrlimitが失敗しました: %m" +#: utils/adt/pseudotypes.c:174 +msgid "cannot accept a value of type anyenum" +msgstr "anyenum型の値を受け付けられません" -#: storage/file/fd.c:492 -msgid "insufficient file descriptors available to start server process" -msgstr "" -"サーバプロセスを起動させるために利用できるファイル記述子が不足しています" +#: utils/adt/pseudotypes.c:252 +msgid "cannot accept a value of type trigger" +msgstr "型triggerの値を受け付けられません" -#: storage/file/fd.c:493 -#, c-format -msgid "System allows %d, we need at least %d." -msgstr "システムでは%d使用できますが、少なくとも%d必要です" +#: utils/adt/pseudotypes.c:265 +msgid "cannot display a value of type trigger" +msgstr "型triggerの値を表示できません" -#: storage/file/fd.c:534 storage/file/fd.c:1418 storage/file/fd.c:1533 -#, c-format -msgid "out of file descriptors: %m; release and retry" -msgstr "ファイル記述子が不足しています: %m: 解放後再実行してください" +#: utils/adt/pseudotypes.c:279 +msgid "cannot accept a value of type language_handler" +msgstr "型language_handlerの値を受け付けられません" -#: storage/file/fd.c:1067 -#, c-format -msgid "temporary file: path \"%s\", size %lu" -msgstr "一時ファイル: パス \"%s\"、サイズ %lu" +#: utils/adt/pseudotypes.c:292 +msgid "cannot display a value of type language_handler" +msgstr "型language_handlerの値を表示できません" -#: storage/file/fd.c:1592 -#, c-format -msgid "could not read directory \"%s\": %m" -msgstr "ディレクトリ\"%s\"を読み取れませんでした: %m" +#: utils/adt/pseudotypes.c:306 +#, +msgid "cannot accept a value of type fdw_handler" +msgstr "fdw_handler 型の値は受け付けられません" -#: storage/large_object/inv_api.c:550 storage/large_object/inv_api.c:747 -#, c-format -msgid "large object %u was not opened for writing" -msgstr "ラージオブジェクト%uは書き込み用に開かれていません" +#: utils/adt/pseudotypes.c:319 +#, +msgid "cannot display a value of type fdw_handler" +msgstr "fdw_handler 型の値は表示できません" + +#: utils/adt/pseudotypes.c:333 +msgid "cannot accept a value of type internal" +msgstr "型intervalの値を受け付けられません" + +#: utils/adt/pseudotypes.c:346 +msgid "cannot display a value of type internal" +msgstr "型intervalの値を表示できません" + +#: utils/adt/pseudotypes.c:360 +msgid "cannot accept a value of type opaque" +msgstr "型opaqueの値を受け付けられません" + +#: utils/adt/pseudotypes.c:373 +msgid "cannot display a value of type opaque" +msgstr "型opaqueの値を表示できません" + +#: utils/adt/pseudotypes.c:387 +msgid "cannot accept a value of type anyelement" +msgstr "型anyelementの値を受け付けられません" + +#: 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の値を表示できません" + +#: utils/adt/pseudotypes.c:439 +msgid "cannot accept a value of a shell type" +msgstr "シェル型の値を受け付けられません" + +#: utils/adt/pseudotypes.c:452 +msgid "cannot display a value of a shell type" +msgstr "シェル型の値を表示できません" + +#: 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/char.c:169 +msgid "\"char\" out of range" +msgstr "\"char\"の範囲外です" + +#: 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/selfuncs.c:4837 utils/adt/selfuncs.c:5291 +msgid "case insensitive matching not supported on type bytea" +msgstr "型byteaでは大文字小文字の区別をしないマッチをサポートしません" -#: storage/large_object/inv_api.c:557 storage/large_object/inv_api.c:754 +#: utils/adt/selfuncs.c:4952 utils/adt/selfuncs.c:5451 +msgid "regular-expression matching not supported on type bytea" +msgstr "型byteaでは正規表現のマッチをサポートしません" + +#: utils/adt/ruleutils.c:1697 commands/functioncmds.c:1008 +#: commands/functioncmds.c:1108 commands/functioncmds.c:1171 +#: commands/functioncmds.c:1322 #, c-format -msgid "large object %u was already dropped" -msgstr "ラージオブジェクト %u はすでに削除されています" +msgid "\"%s\" is an aggregate function" +msgstr "\"%s\"は集約関数です" -#: storage/buffer/localbuf.c:189 -msgid "no empty local buffer available" -msgstr "利用できる、空のローカルバッファがありません" +#: utils/adt/ruleutils.c:2430 +#, c-format +msgid "rule \"%s\" has unsupported event type %d" +msgstr "ルール\"%s\"はサポートしていないイベント種類%dを持ちます" -#: storage/buffer/bufmgr.c:131 storage/buffer/bufmgr.c:235 -msgid "cannot access temporary tables of other sessions" -msgstr "他のセッションの一時テーブルにはアクセスできません" +#: utils/init/postinit.c:225 +#, c-format +msgid "replication connection authorized: user=%s" +msgstr "レプリケーション接続の認証完了: ユーザ=%s" -#: storage/buffer/bufmgr.c:364 +#: utils/init/postinit.c:229 #, c-format -msgid "unexpected data beyond EOF in block %u of relation %s" -msgstr "" -"リレーション %2$s の %1$u ブロック目で、EOF の先に想定外のデータを検出しまし" -"た" +msgid "connection authorized: user=%s database=%s" +msgstr "接続の認証完了: ユーザ=%s、データベース=%s" -#: storage/buffer/bufmgr.c:366 -msgid "" -"This has been seen to occur with buggy kernels; consider updating your " -"system." -msgstr "" -"これはカーネルの不具合で発生した模様です。システムの更新を検討してください。" +#: utils/init/postinit.c:260 +#, c-format +msgid "database \"%s\" has disappeared from pg_database" +msgstr "データベース\"%s\"はpg_databaseから消失しました" -#: storage/buffer/bufmgr.c:438 +#: utils/init/postinit.c:262 #, c-format -msgid "invalid page header in block %u of relation %s; zeroing out page" -msgstr "" -"リレーション %2$s の %1$u ブロック目のページヘッダが無効です:ページをゼロで" -"埋めました" +msgid "Database OID %u now seems to belong to \"%s\"." +msgstr "OID %uのデータベースは\"%s\"に属するようです。" -#: storage/buffer/bufmgr.c:446 +#: utils/init/postinit.c:282 #, c-format -msgid "invalid page header in block %u of relation %s" -msgstr "リレーション %2$s の %1$u ブロック目のページヘッダが無効です" +msgid "database \"%s\" is not currently accepting connections" +msgstr "現在データベース\"%s\"は接続を受け付けません" -#: storage/buffer/bufmgr.c:2706 +#: utils/init/postinit.c:295 #, c-format -msgid "could not write block %u of %s" -msgstr "%u ブロックを %s に書き出せませんでした" +msgid "permission denied for database \"%s\"" +msgstr "データベース\"%s\"に権限がありません" -#: storage/buffer/bufmgr.c:2708 -msgid "Multiple failures --- write error might be permanent." -msgstr "複数回失敗しました ---ずっと書き込みエラーが続くかもしれません。" +#: utils/init/postinit.c:296 +msgid "User does not have CONNECT privilege." +msgstr "ユーザはCONNECT権限を持ちません" -#: storage/buffer/bufmgr.c:2729 +#: utils/init/postinit.c:313 #, c-format -msgid "writing block %u of relation %s" -msgstr "ブロック %u を リレーション %s に書き込んでいます" +msgid "too many connections for database \"%s\"" +msgstr "データベース\"%s\"への接続が多すぎます" + +#: utils/init/postinit.c:335 utils/init/postinit.c:342 +msgid "database locale is incompatible with operating system" +msgstr "データベースのロケールがオペレーティングシステムと互換性がありません" -#: storage/lmgr/proc.c:1046 +#: utils/init/postinit.c:336 #, c-format msgid "" -"process %d avoided deadlock for %s on %s by rearranging queue order after %" -"ld.%03d ms" +"The database was initialized with LC_COLLATE \"%s\", which is not " +"recognized by setlocale()." msgstr "" -"プロセス%1$dは、%4$ld.%5$03d ms後にキューの順番を再調整することで、%3$s上の%2" -"$sに対するデッドロックを防ぎました。" +"データベースは LC_COLLATE \"%s\" で初期化されていますが、setlocale() でこれを" +"認識されません" -#: storage/lmgr/proc.c:1058 -#, c-format +#: utils/init/postinit.c:338 utils/init/postinit.c:345 msgid "" -"process %d detected deadlock while waiting for %s on %s after %ld.%03d ms" +"Recreate the database with another locale or install the missing locale." msgstr "" -"プロセス%1$dは、%3$s上の%2$sに対し%4$ld.%5$03d ms待機するデッドロックを検知し" -"ました" +"データベースを別のロケールで再生成するか、または不足しているロケールをインス" +"トールしてください" -#: storage/lmgr/proc.c:1064 +#: utils/init/postinit.c:343 #, c-format -msgid "process %d still waiting for %s on %s after %ld.%03d ms" -msgstr "プロセス%dは%sを%sで待機しています。%ld.%03dミリ秒後" +msgid "" +"The database was initialized with LC_CTYPE \"%s\", which is not recognized " +"by setlocale()." +msgstr "" +"データベースは LC_CTYPE \"%s\" で初期化されていますが、setlocale()でこれを認" +"識されません" + +#: utils/init/postinit.c:597 +msgid "no roles are defined in this database system" +msgstr "データベースシステム内でロールが定義されていません" -#: storage/lmgr/proc.c:1068 +#: utils/init/postinit.c:598 #, 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を獲得しました" +msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;." +msgstr "すぐに CREATE USER \"%s\" SUPERUSER; を実行してください。" -#: storage/lmgr/proc.c:1084 -#, c-format -msgid "process %d failed to acquire %s on %s after %ld.%03d ms" +#: utils/init/postinit.c:621 +msgid "new replication connections are not allowed during database shutdown" msgstr "" -"プロセス%1$dは%4$ld.%5$03d ms後に%3$s上で%2$sを獲得することに失敗しました" +"データベースのシャットダウン中は、新しいレプリケーション接続は許可されません" -#: storage/lmgr/lock.c:515 -msgid "" -"cannot acquire lock mode %s on database objects while recovery is in progress" -msgstr "" -"リカバリーの実行中はデータベースオブジェクトでロックモード %s を獲得できません" +#: utils/init/postinit.c:625 +msgid "must be superuser to connect during database shutdown" +msgstr "データベースのシャットダウン中に接続できるのはスーパーユーザだけです" -#: storage/lmgr/lock.c:517 +#: utils/init/postinit.c:635 +#, +msgid "must be superuser to connect in binary upgrade mode" +msgstr "バイナリアップグレードモード中に接続できるのはスーパーユーザだけです" + +#: utils/init/postinit.c:649 msgid "" -"Only RowExclusiveLock or less can be acquired on database objects during " -"recovery." -msgstr "" -"リカバリーの実行中は、データベースオブジェクトで RowExclusiveLock もしくはそ" -"れ以下だけが獲得できます" +"remaining connection slots are reserved for non-replication superuser " +"connections" +msgstr "スーパーユーザによる接続用に予約される接続スロットの数を設定します。" -#: storage/lmgr/lock.c:611 storage/lmgr/lock.c:680 storage/lmgr/lock.c:2499 -#: storage/lmgr/lock.c:2564 -msgid "You might need to increase max_locks_per_transaction." -msgstr "max_locks_per_transactionを増やす必要があるかもしれません" +#: utils/init/postinit.c:664 +#, +msgid "must be replication role to start walsender" +msgstr "WALSENDER を開始するためには replication ロールでなければなりません" -#: storage/lmgr/lock.c:2120 -msgid "Not enough memory for reassigning the prepared transaction's locks." -msgstr "" -"準備されたトランザクションのロックを再割り当てするにはメモリが不足していま" -"す。" +#: utils/init/postinit.c:707 utils/init/postinit.c:775 +#: utils/init/postinit.c:792 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 +#, c-format +msgid "database \"%s\" does not exist" +msgstr "データベース\"%s\"は存在しません" -#: storage/lmgr/lmgr.c:717 +#: utils/init/postinit.c:724 #, c-format -msgid "relation %u of database %u" -msgstr "データベース%2$uのリレーション%1$u" +msgid "database %u does not exist" +msgstr "データベース %u は存在しません" -#: storage/lmgr/lmgr.c:723 +#: utils/init/postinit.c:776 +msgid "It seems to have just been dropped or renamed." +msgstr "削除またはリネームされたばかりのようです。" + +#: utils/init/postinit.c:794 #, c-format -msgid "extension of relation %u of database %u" -msgstr "データベース%2$uのリレーション%1$uの拡張" +msgid "The database subdirectory \"%s\" is missing." +msgstr "データベースのサブディレクトリ\"%s\"がありません。" -#: storage/lmgr/lmgr.c:729 +#: utils/init/postinit.c:799 #, c-format -msgid "page %u of relation %u of database %u" -msgstr "データベース%3$uのリレーション%2$uのページ%1$u" +msgid "could not access directory \"%s\": %m" +msgstr "ディレクトリ\"%s\"にアクセスできませんでした: %m" -#: storage/lmgr/lmgr.c:736 +#: utils/init/miscinit.c:115 #, c-format -msgid "tuple (%u,%u) of relation %u of database %u" -msgstr "データベース%4$uのリレーション%3$uのタプル(%2$u,%1$u)" +msgid "could not change directory to \"%s\": %m" +msgstr "ディレクトリ\"%s\"に移動できませんでした: %m" -#: storage/lmgr/lmgr.c:744 +#: utils/init/miscinit.c:381 utils/misc/guc.c:5255 #, c-format -msgid "transaction %u" -msgstr "トランザクション %u" +msgid "cannot set parameter \"%s\" within security-restricted operation" +msgstr "セキュリティー制限操作内でパラメーター \"%s\" を設定できません" -#: storage/lmgr/lmgr.c:749 +#: utils/init/miscinit.c:460 #, c-format -msgid "virtual transaction %d/%u" -msgstr "仮想トランザクション %d/%u" +msgid "role \"%s\" is not permitted to log in" +msgstr "ロール\"%s\"はログインすることが許されていません" -#: storage/lmgr/lmgr.c:755 +#: utils/init/miscinit.c:478 #, c-format -msgid "object %u of class %u of database %u" -msgstr "データベース%3$uのリレーション%2$uのオブジェクト%1$u" +msgid "too many connections for role \"%s\"" +msgstr "ロール\"%s\"からの接続が多すぎます" + +#: utils/init/miscinit.c:538 +msgid "permission denied to set session authorization" +msgstr "set session authorization用の権限がありません" -#: storage/lmgr/lmgr.c:763 +#: utils/init/miscinit.c:618 #, c-format -msgid "user lock [%u,%u,%u]" -msgstr "ユーザロック[%u,%u,%u]" +msgid "invalid role OID: %u" +msgstr "ロールIDが無効です: %u" -#: storage/lmgr/lmgr.c:770 +#: utils/init/miscinit.c:750 #, c-format -msgid "advisory lock [%u,%u,%u,%u]" -msgstr "アドバイザリ・ロック[%u,%u,%u,%u]" +msgid "could not create lock file \"%s\": %m" +msgstr "ロックファイル\"%s\"を作成できませんでした: %m" -#: storage/lmgr/lmgr.c:778 +#: utils/init/miscinit.c:764 #, c-format -msgid "unrecognized locktag type %d" -msgstr "ロックタグ種類%dは不明です" +msgid "could not open lock file \"%s\": %m" +msgstr "ロックファイル\"%s\"をオープンできませんでした: %m" -#: storage/lmgr/deadlock.c:915 +#: utils/init/miscinit.c:770 #, c-format -msgid "Process %d waits for %s on %s; blocked by process %d." -msgstr "" -"プロセス%dは%sを%sで待機しています。これはプロセス%dでブロックされています。" +msgid "could not read lock file \"%s\": %m" +msgstr "ロックファイル\"%s\"を読み取れませんでした: %m" -#: storage/lmgr/deadlock.c:934 +#: utils/init/miscinit.c:818 #, c-format -msgid "Process %d: %s" -msgstr "プロセス %d: %s" +msgid "lock file \"%s\" already exists" +msgstr "ロックファイル\"%s\"はすでに存在します" -#: storage/lmgr/deadlock.c:941 -msgid "deadlock detected" -msgstr "デッドロックを検出しました" +#: utils/init/miscinit.c:822 +#, c-format +msgid "Is another postgres (PID %d) running in data directory \"%s\"?" +msgstr "他のpostgres(PID %d)がデータディレクトリ\"%s\"で稼動していませんか?" -#: storage/lmgr/deadlock.c:944 -msgid "See server log for query details." -msgstr "クエリーの詳細はサーバログを参照してください" +#: utils/init/miscinit.c:824 +#, c-format +msgid "Is another postmaster (PID %d) running in data directory \"%s\"?" +msgstr "他のpostmaster(PID %d)がデータディレクトリ\"%s\"で稼動していませんか?" -#: storage/smgr/md.c:348 storage/smgr/md.c:395 storage/smgr/md.c:1192 -#: access/transam/xlog.c:2866 access/transam/xlog.c:8621 +#: utils/init/miscinit.c:827 #, c-format -msgid "could not remove file \"%s\": %m" -msgstr "ファイル\"%s\"を削除できませんでした: %m" +msgid "Is another postgres (PID %d) using socket file \"%s\"?" +msgstr "他のpostgres(PID %d)がソケットファイル\"%s\"を使用していませんか?" -#: storage/smgr/md.c:371 storage/smgr/md.c:839 +#: utils/init/miscinit.c:829 #, c-format -msgid "could not truncate file \"%s\": %m" -msgstr "ファイル \"%s\" の切り詰め処理ができませんでした: %m" +msgid "Is another postmaster (PID %d) using socket file \"%s\"?" +msgstr "他のpostmaster(PID %d)がソケットファイル\"%s\"を使用していませんか?" -#: storage/smgr/md.c:439 +#: utils/init/miscinit.c:865 #, c-format -msgid "cannot extend file \"%s\" beyond %u blocks" -msgstr "ファイル \"%s\" を %u ブロック以上に拡張できません" +msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use" +msgstr "既存の共有メモリブロック(キー%lu、ID %lu)がまだ使用中です" -#: storage/smgr/md.c:461 storage/smgr/md.c:621 storage/smgr/md.c:694 +#: utils/init/miscinit.c:868 #, c-format -msgid "could not seek to block %u in file \"%s\": %m" -msgstr "ファイル \"%2$s\" で %1$u ブロック目にシークできませんでした: %3$m" +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\" を削除してください。" -#: storage/smgr/md.c:469 +#: utils/init/miscinit.c:884 #, c-format -msgid "could not extend file \"%s\": %m" -msgstr "ファイル \"%s\" を拡張できませんでした: %m" +msgid "could not remove old lock file \"%s\": %m" +msgstr "古いロックファイル\"%s\"を削除できませんでした: %m" -#: storage/smgr/md.c:471 storage/smgr/md.c:478 storage/smgr/md.c:720 -msgid "Check free disk space." -msgstr "ディスクの空き容量をチェックしてください。" +#: 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 "" +"このファイルは偶然残ってしまったようですが、削除できませんでした。手作業でこ" +"れを削除し再実行してください。" -#: storage/smgr/md.c:475 +#: utils/init/miscinit.c:920 utils/init/miscinit.c:931 +#: utils/init/miscinit.c:941 #, 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 " -"バイト分のみを書き出しました。" +msgid "could not write lock file \"%s\": %m" +msgstr "ロックファイル\"%s\"に書き出せませんでした: %m" -#: storage/smgr/md.c:638 +#: utils/init/miscinit.c:1048 utils/misc/guc.c:7507 #, c-format -msgid "could not read block %u in file \"%s\": %m" -msgstr "ファイル \"%2$s\" で %1$u ブロックを読み取れませんでした: %3$m" +msgid "could not read from file \"%s\": %m" +msgstr "ファイル\"%s\"から読み取れませんでした: %m" -#: storage/smgr/md.c:654 +#: utils/init/miscinit.c:1147 utils/init/miscinit.c:1160 #, 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 " -"バイト分のみ読み取りました" +msgid "\"%s\" is not a valid data directory" +msgstr "\"%s\"は有効なデータディレクトリではありません" -#: storage/smgr/md.c:711 +#: utils/init/miscinit.c:1149 #, c-format -msgid "could not write block %u in file \"%s\": %m" -msgstr "ファイル \"%2$s\" で %1$u ブロックが書き出せませんでした: %3$m" +msgid "File \"%s\" is missing." +msgstr "ファイル\"%s\"が存在しません" -#: storage/smgr/md.c:716 +#: utils/init/miscinit.c:1162 #, 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 " -"バイト分のみ書き込みました" +msgid "File \"%s\" does not contain valid data." +msgstr "ファイル\"%s\"に有効なデータがありません。" + +#: utils/init/miscinit.c:1164 +msgid "You might need to initdb." +msgstr "initdbする必要があるかもしれません" -#: storage/smgr/md.c:815 +#: utils/init/miscinit.c:1172 #, c-format -msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now" +msgid "" +"The data directory was initialized by PostgreSQL version %ld.%ld, which is " +"not compatible with this version %s." msgstr "" -"ファイル \"%s\" を %u ブロックに切り詰められませんでした:現在は %u ブロック" -"のみとなりました" +"データディレクトリはPostgreSQLバージョン%ld.%ldで初期化されましたが、これは" +"バージョン%sと互換性がありません" -#: storage/smgr/md.c:864 +#: utils/init/miscinit.c:1220 #, c-format -msgid "could not truncate file \"%s\" to %u blocks: %m" -msgstr "ファイル \"%s\" を %u ブロックに切り詰められませんでした: %m" +msgid "invalid list syntax in parameter \"%s\"" +msgstr "パラメータ\"%s\"のリスト構文が無効です" -#: storage/smgr/md.c:1087 +#: utils/init/miscinit.c:1257 #, c-format -msgid "could not fsync file \"%s\" but retrying: %m" -msgstr "ファイル \"%s\" を fsync できませんでした: %m" +msgid "loaded library \"%s\"" +msgstr "ライブラリ\"%s\"をロードしました" -#: storage/smgr/md.c:1586 +#: 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 "could not open file \"%s\" (target block %u): %m" -msgstr "ファイル \"%s\"(対象ブロック %u)をオープンできませんでした: %m" +msgid "unexpected encoding ID %d for WIN character sets" +msgstr "WIN文字セットに対する符号化方式ID %dは想定外です<" -#: storage/smgr/md.c:1608 +#: 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 "could not seek to end of file \"%s\": %m" -msgstr "ファイル \"%s\" の終端(EOF)をシークできませんでした: %m" +msgid "unexpected encoding ID %d for ISO 8859 character sets" +msgstr "ISO8859文字セットに対する符号化方式ID %dは想定外です" -#: postmaster/syslogger.c:387 +#: utils/mb/mbutils.c:281 #, c-format -msgid "select() failed in logger process: %m" -msgstr "ロガープロセスでselect()が失敗しました: %m" +msgid "conversion between %s and %s is not supported" +msgstr "%sと%s間の変換はサポートされていません" -#: postmaster/syslogger.c:399 postmaster/syslogger.c:973 +#: utils/mb/mbutils.c:351 #, c-format -msgid "could not read from logger pipe: %m" -msgstr "ロガーパイプから読み取れませんでした: %m" - -#: postmaster/syslogger.c:446 -msgid "logger shutting down" -msgstr "ロガーを停止しています" +msgid "" +"default conversion function for encoding \"%s\" to \"%s\" does not exist" +msgstr "符号化方式\"%s\"から\"%s\"用のデフォルト変換関数は存在しません" -#: postmaster/syslogger.c:490 postmaster/syslogger.c:504 +#: utils/mb/mbutils.c:375 utils/mb/mbutils.c:676 #, c-format -msgid "could not create pipe for syslog: %m" -msgstr "syslog用のパイプを作成できませんでした: %m" +msgid "String of %d bytes is too long for encoding conversion." +msgstr "%dバイトの文字列は符号化変換では長すぎます。" -#: postmaster/syslogger.c:524 postmaster/syslogger.c:1012 +#: utils/mb/mbutils.c:462 #, c-format -msgid "could not create log file \"%s\": %m" -msgstr "ログファイル\"%s\"を作成できませんでした: %m" +msgid "invalid source encoding name \"%s\"" +msgstr "変換元符号化方式が無効です: \"%s\"" -#: postmaster/syslogger.c:539 +#: utils/mb/mbutils.c:467 #, c-format -msgid "could not fork system logger: %m" -msgstr "システムロガーをforkできませんでした: %m" +msgid "invalid destination encoding name \"%s\"" +msgstr "変換先符号化方式が無効です: \"%s\"" -#: postmaster/syslogger.c:570 +#: utils/mb/mbutils.c:589 #, c-format -msgid "could not redirect stdout: %m" -msgstr "標準出力にリダイレクトできませんでした: %m" +msgid "invalid byte value for encoding \"%s\": 0x%02x" +msgstr "符号化方式\"%s\"で無効なバイト値です: 0x%02x" + +#: utils/mb/encnames.c:485 +msgid "encoding name too long" +msgstr "符号化方式名称が長すぎます" -#: postmaster/syslogger.c:575 postmaster/syslogger.c:593 +#: utils/mb/wchar.c:1611 #, c-format -msgid "could not redirect stderr: %m" -msgstr "標準エラー出力にリダイレクトできませんでした: %m" +msgid "invalid byte sequence for encoding \"%s\": 0x%s" +msgstr "符号化方式\"%s\"で無効なバイトシーケンスです: 0x%s" -#: postmaster/syslogger.c:928 +#: utils/mb/wchar.c:1640 #, c-format -msgid "could not write to log file: %s\n" -msgstr "ログファイルに書き出せませんでした: %s\n" +msgid "character 0x%s of encoding \"%s\" has no equivalent in \"%s\"" +msgstr "符号化方式\"%2$s\"文字0x%1$s<は\"%3$s\"と同じではありません" -#: postmaster/syslogger.c:1083 postmaster/syslogger.c:1141 +#: utils/mb/conv.c:509 #, c-format -msgid "could not open new log file \"%s\": %m" -msgstr "新しいログファイル\"%s\"をオープンできませんでした: %m" +msgid "invalid encoding number: %d" +msgstr "符号化方式番号が無効です: %d" -#: postmaster/syslogger.c:1095 postmaster/syslogger.c:1153 -msgid "disabling automatic rotation (use SIGHUP to re-enable)" +#: 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 "" -"自動ローテーションを無効にしています(再度有効にするにはSIGHUPを使用してくださ" -"い)" +"時間帯ファイル\"%3$s\"の%4$d行の時間帯省略形\"%1$s\"が長すぎます(最大%2$d文" +"字)" -#: postmaster/autovacuum.c:359 +#: utils/misc/tzparser.c:68 #, c-format -msgid "could not fork autovacuum launcher process: %m" -msgstr "autovacuum ランチャープロセスを fork できませんでした: %m" +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分)の倍数では" +"ありません。" -#: postmaster/autovacuum.c:404 -msgid "autovacuum launcher started" -msgstr "自動バキュームランチャプロセス" +#: utils/misc/tzparser.c:80 +#, 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は範囲外です" -#: postmaster/autovacuum.c:760 -msgid "autovacuum launcher shutting down" -msgstr "自動バキュームランチャを停止しています" +#: utils/misc/tzparser.c:115 +#, c-format +msgid "missing time zone abbreviation in time zone file \"%s\", line %d" +msgstr "時間帯ファイル\"%s\"の行%dで時間帯省略形がありません" -#: postmaster/autovacuum.c:1394 +#: utils/misc/tzparser.c:124 #, c-format -msgid "could not fork autovacuum worker process: %m" -msgstr "autovacuum ワーカープロセスを fork できませんでした: %m" +msgid "missing time zone offset in time zone file \"%s\", line %d" +msgstr "時間帯ファイル\"%s\"の行%dで時間帯オフセットがありません" -#: postmaster/autovacuum.c:1595 +#: utils/misc/tzparser.c:131 #, c-format -msgid "autovacuum: processing database \"%s\"" -msgstr "autovacuum: データベース\"%s\"の処理中です" +msgid "invalid number for time zone offset in time zone file \"%s\", line %d" +msgstr "時間帯ファイル\"%s\"の行%dの時間帯オフセット数値が無効です" -#: postmaster/autovacuum.c:1976 +#: utils/misc/tzparser.c:154 #, c-format -msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"" -msgstr "" -"autovacuum: データベース \"%3$s\" において、親がなくなった一時テーブル \"%1$s" -"\".\"%2$s\" を削除しています" +msgid "invalid syntax in time zone file \"%s\", line %d" +msgstr "時間帯ファイル\"%s\"の行%dで構文が無効です" -#: postmaster/autovacuum.c:1988 +#: utils/misc/tzparser.c:218 #, c-format -msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\"" -msgstr "" -"autovacuum: データベース \"%3$s\" において、親がなくなった一時テーブル \"%1$s" -"\".\"%2$s\" が見つかりました" +msgid "time zone abbreviation \"%s\" is multiply defined" +msgstr "時間帯省略形\"%s\"が複数定義されています" -#: postmaster/autovacuum.c:2249 +#: utils/misc/tzparser.c:220 #, c-format -msgid "automatic vacuum of table \"%s.%s.%s\"" -msgstr "テーブル\"%s.%s.%s\"の自動バキューム" +msgid "" +"Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s" +"\", line %d." +msgstr "時間帯ファイル\"%s\"の行%dの項目は、ファイル\"%s\"の行%dと競合します。" -#: postmaster/autovacuum.c:2252 +#: utils/misc/tzparser.c:285 #, c-format -msgid "automatic analyze of table \"%s.%s.%s\"" -msgstr "テーブル\"%s.%s.%s\"の自動解析" - -#: postmaster/autovacuum.c:2720 -msgid "autovacuum not started because of misconfiguration" -msgstr "誤設定のためautovacuumを起動できません" +msgid "invalid time zone file name \"%s\"" +msgstr "時間帯ファイル名が無効です: \"%s\"" -#: postmaster/autovacuum.c:2721 -msgid "Enable the \"track_counts\" option." -msgstr "\"track_counts\"オプションを有効にします。" +#: utils/misc/tzparser.c:298 +#, c-format +msgid "time zone file recursion limit exceeded in file \"%s\"" +msgstr "ファイル\"%s\"で時間帯ファイルの再帰の上限を超えました。" -#: postmaster/bgwriter.c:472 +#: utils/misc/tzparser.c:337 utils/misc/tzparser.c:350 #, 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秒間隔)" +msgid "could not read time zone file \"%s\": %m" +msgstr "時間帯ファイル\"%s\"を読み込めませんでした: %m" -#: postmaster/bgwriter.c:476 -msgid "" -"Consider increasing the configuration parameter \"checkpoint_segments\"." -msgstr "設定パラメータ\"checkpoint_segments\"の増加を検討してください" +#: utils/misc/tzparser.c:360 +#, c-format +msgid "line is too long in time zone file \"%s\", line %d" +msgstr "時間帯ファイル\"%s\"の行%dが長すぎます。" -#: postmaster/bgwriter.c:588 +#: utils/misc/tzparser.c:383 #, c-format -msgid "transaction log switch forced (archive_timeout=%d)" -msgstr "トランザクションログ切り替えが強制されます(archive_timeout=%d)" +msgid "@INCLUDE without file name in time zone file \"%s\", line %d" +msgstr "時間帯ファイル\"%s\"の行%dにファイル名がない@INCLUDEがあります" -#: postmaster/bgwriter.c:1044 -msgid "checkpoint request failed" -msgstr "チェックポイント要求が失敗しました" +#: utils/misc/help_config.c:131 +msgid "internal error: unrecognized run-time parameter type\n" +msgstr "内部エラー: 実行時パラメータ種類が不明です\n" -#: postmaster/bgwriter.c:1045 -msgid "Consult recent messages in the server log for details." -msgstr "詳細はサーバログの最近のメッセージを調査してください" +#: utils/misc/guc.c:525 +msgid "Ungrouped" +msgstr "その他" -#: postmaster/pgarch.c:158 -#, c-format -msgid "could not fork archiver: %m" -msgstr "アーカイバをforkできませんでした: %m" +#: utils/misc/guc.c:527 +msgid "File Locations" +msgstr "ファイルの位置" -#: postmaster/pgarch.c:450 -msgid "archive_mode enabled, yet archive_command is not set" -msgstr "archive_modeは有効ですが、archive_commandが設定されていません" +#: utils/misc/guc.c:529 +msgid "Connections and Authentication" +msgstr "接続と認証" -#: postmaster/pgarch.c:465 -#, c-format -msgid "transaction log file \"%s\" could not be archived: too many failures" -msgstr "" -"トランザクションログファイル\"%s\"をアーカイブできませんでした: 失敗が多すぎ" -"ます" +#: utils/misc/guc.c:531 +msgid "Connections and Authentication / Connection Settings" +msgstr "接続と認証/接続設定" -#: postmaster/pgarch.c:568 -#, c-format -msgid "archive command failed with exit code %d" -msgstr "アーカイブコマンドがリターンコード %dで失敗しました" +#: utils/misc/guc.c:533 +msgid "Connections and Authentication / Security and Authentication" +msgstr "接続と認証/セキュリティと認証" -#: 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" +#: utils/misc/guc.c:535 +msgid "Resource Usage" +msgstr "リソースの使用" -#: postmaster/pgarch.c:577 -#, c-format -msgid "archive command was terminated by exception 0x%X" -msgstr "アーカイブコマンドが例外0x%Xで終了しました" +#: utils/misc/guc.c:537 +msgid "Resource Usage / Memory" +msgstr "リソースの使用/メモリ" -#: postmaster/pgarch.c:579 postmaster/postmaster.c:2822 -msgid "" -"See C include file \"ntstatus.h\" for a description of the hexadecimal value." -msgstr "" -"16進値の説明についてはC インクルードファイル\"ntstatus.h\"を参照してくださ" -"い。" +#: utils/misc/guc.c:539 +msgid "Resource Usage / Kernel Resources" +msgstr "リソースの使用/カーネルリソース" -#: postmaster/pgarch.c:584 -#, c-format -msgid "archive command was terminated by signal %d: %s" -msgstr "アーカイブコマンドはシグナル%dにより終了しました: %s" +#: utils/misc/guc.c:541 +msgid "Resource Usage / Cost-Based Vacuum Delay" +msgstr "使用リソース / コストベースの vacuum 遅延" -#: postmaster/pgarch.c:591 -#, c-format -msgid "archive command was terminated by signal %d" -msgstr "アーカイブコマンドはシグナル%dにより終了しました" +#: utils/misc/guc.c:543 +msgid "Resource Usage / Background Writer" +msgstr "使用リソース / バックグラウンド・ライタ" -#: postmaster/pgarch.c:600 -#, c-format -msgid "archive command exited with unrecognized status %d" -msgstr "アーカイブコマンドは不明のステータス%dで終了しました" +#: utils/misc/guc.c:545 +msgid "Resource Usage / Asynchronous Behavior" +msgstr "使用リソース / 非同期処理" -#: postmaster/pgarch.c:612 -#, c-format -msgid "archived transaction log file \"%s\"" -msgstr "トランザクションログファイル\"%s\"をアーカイブしました" +#: utils/misc/guc.c:547 +msgid "Write-Ahead Log" +msgstr "ログ先行書き込み" -#: postmaster/pgarch.c:661 -#, c-format -msgid "could not open archive status directory \"%s\": %m" -msgstr "アーカイブステータスディレクトリ\"%s\"をオープンできませんでした: %m" +#: utils/misc/guc.c:549 +msgid "Write-Ahead Log / Settings" +msgstr "ログ先行書き込み / 設定" -#: postmaster/pgarch.c:715 access/transam/xlog.c:4429 -#: access/transam/xlog.c:5378 access/transam/xlog.c:5431 -#: access/transam/xlog.c:6007 -#, c-format -msgid "could not rename file \"%s\" to \"%s\": %m" -msgstr "ファイル\"%s\"の名前を\"%s\"に変更できませんでした: %m" +#: utils/misc/guc.c:551 +msgid "Write-Ahead Log / Checkpoints" +msgstr "ログ先行書き込み / チェックポイント" -#: postmaster/postmaster.c:566 -#, c-format -msgid "%s: invalid argument for option -f: \"%s\"\n" -msgstr "%s: -fオプションの無効な引数: \"%s\"\n" +#: utils/misc/guc.c:553 +msgid "Write-Ahead Log / Archiving" +msgstr "ログ先行書き込み / アーカイビング" -#: postmaster/postmaster.c:652 -#, c-format -msgid "%s: invalid argument for option -t: \"%s\"\n" -msgstr "%s: -tオプションの無効な引数: \"%s\"\n" +#: utils/misc/guc.c:555 +msgid "Write-Ahead Log / Streaming Replication" +msgstr "ログ先行書き込み / ストリーミング・レプリケーション" -#: postmaster/postmaster.c:692 postmaster/postmaster.c:705 -#: bootstrap/bootstrap.c:288 -#, c-format -msgid "Try \"%s --help\" for more information.\n" -msgstr "詳細は\"%s --help\"を実行してください。\n" +#: utils/misc/guc.c:557 +msgid "Write-Ahead Log / Standby Servers" +msgstr "ログ先行書き込み / スタンバイサーバ" -#: postmaster/postmaster.c:703 -#, c-format -msgid "%s: invalid argument: \"%s\"\n" -msgstr "%s: 無効な引数: \"%s\"\n" +#: utils/misc/guc.c:559 +msgid "Query Tuning" +msgstr "問い合わせの調整" -#: postmaster/postmaster.c:728 -#, c-format -msgid "%s: superuser_reserved_connections must be less than max_connections\n" -msgstr "" -"%s: superuser_reserved_connectionsはmax_connectionsより小さくなければなりませ" -"ん\n" +#: utils/misc/guc.c:561 +msgid "Query Tuning / Planner Method Configuration" +msgstr "問い合わせの調整/プランナ手法の設定" -#: postmaster/postmaster.c:733 -msgid "" -"WAL archival (archive_mode=on) requires wal_level \"archive\" or " -"\"hot_standby\"" -msgstr "" -"WAL アーカイブ(archive_mode=on) では wal_level を \"archive\" または \"hot_standby\" にする必要があります" +#: utils/misc/guc.c:563 +msgid "Query Tuning / Planner Cost Constants" +msgstr "問い合わせの調整/プランナのコスト定数" -#: postmaster/postmaster.c:736 -msgid "" -"WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or " -"\"hot_standby\"" -msgstr "" -"WAL ストリーミング(max_wal_senders > 0) では wal_level を \"archive\" または \"hot_standby\" にする必要があります" +#: utils/misc/guc.c:565 +msgid "Query Tuning / Genetic Query Optimizer" +msgstr "問い合わせの調整/遺伝的問い合わせオプティマイザ" -#: postmaster/postmaster.c:744 -#, c-format -msgid "%s: invalid datetoken tables, please fix\n" -msgstr "%s: データトークンテーブルが無効です。修復してください\n" +#: utils/misc/guc.c:567 +msgid "Query Tuning / Other Planner Options" +msgstr "問い合わせの調整/その他のプランなのオプション" -#: postmaster/postmaster.c:850 -msgid "invalid list syntax for \"listen_addresses\"" -msgstr "\"listen_addresses\"用のリスト構文が無効です" +#: utils/misc/guc.c:569 +msgid "Reporting and Logging" +msgstr "レポートとログ" -#: postmaster/postmaster.c:871 -#, c-format -msgid "could not create listen socket for \"%s\"" -msgstr "\"%s\"に関する監視用ソケットを作成できませんでした" +#: utils/misc/guc.c:571 +msgid "Reporting and Logging / Where to Log" +msgstr "レポートとログ/ログの場所" -#: postmaster/postmaster.c:877 -msgid "could not create any TCP/IP sockets" -msgstr "TCP/IPソケットを作成できませんでした" +#: utils/misc/guc.c:573 +msgid "Reporting and Logging / When to Log" +msgstr "レポートとログ/ログのタイミング" -#: postmaster/postmaster.c:928 -msgid "could not create Unix-domain socket" -msgstr "Unixドメインソケットを作成できませんでした" +#: utils/misc/guc.c:575 +msgid "Reporting and Logging / What to Log" +msgstr "レポートとログ/ログの内容" -#: postmaster/postmaster.c:936 -msgid "no socket created for listening" -msgstr "監視用に作成するソケットはありません" +#: utils/misc/guc.c:577 +msgid "Statistics" +msgstr "統計情報" -#: postmaster/postmaster.c:962 -msgid "could not create I/O completion port for child queue" -msgstr "子キュー向けのI/O終了ポートを作成できませんでした" +#: utils/misc/guc.c:579 +msgid "Statistics / Monitoring" +msgstr "統計情報/監視" -#: postmaster/postmaster.c:1006 -#, c-format -msgid "%s: could not write external PID file \"%s\": %s\n" -msgstr "%s: 外部PIDファイル\"%s\"に書き出せませんでした: %s\n" +#: utils/misc/guc.c:581 +msgid "Statistics / Query and Index Statistics Collector" +msgstr "統計情報/問い合わせとインデックスの統計情報収集器" -#: postmaster/postmaster.c:1121 -#, c-format -msgid "%s: could not locate matching postgres executable" -msgstr "%s: 一致するpostgres実行ファイルがありませんでした" +#: utils/misc/guc.c:583 +msgid "Autovacuum" +msgstr "自動バキューム" -#: postmaster/postmaster.c:1172 -#, c-format -msgid "data directory \"%s\" does not exist" -msgstr "データディレクトリ\"%s\"は存在しません" +#: utils/misc/guc.c:585 +msgid "Client Connection Defaults" +msgstr "クライアント接続のデフォルト" -#: postmaster/postmaster.c:1177 -#, c-format -msgid "could not read permissions of directory \"%s\": %m" -msgstr "ディレクトリ\"%s\"の権限を読み取れませんでした: %m" +#: utils/misc/guc.c:587 +msgid "Client Connection Defaults / Statement Behavior" +msgstr "クライアント接続のデフォルト/文の振舞い" -#: postmaster/postmaster.c:1185 -#, c-format -msgid "specified data directory \"%s\" is not a directory" -msgstr "指定されたデータディレクトリ \"%s\" はディレクトリではありません" +#: utils/misc/guc.c:589 +msgid "Client Connection Defaults / Locale and Formatting" +msgstr "クライアント接続のデフォルト/ロケールと整形" -#: postmaster/postmaster.c:1201 -#, c-format -msgid "data directory \"%s\" has wrong ownership" -msgstr "データディレクトリ\"%s\"の所有者情報が間違っています" +#: utils/misc/guc.c:591 +msgid "Client Connection Defaults / Other Defaults" +msgstr "クライアント接続のデフォルト/その他のデフォルト" -#: postmaster/postmaster.c:1203 -msgid "The server must be started by the user that owns the data directory." -msgstr "データディレクトリを所有するユーザがサーバを起動しなければなりません。" +#: utils/misc/guc.c:593 +msgid "Lock Management" +msgstr "ロック管理" + +#: utils/misc/guc.c:595 +msgid "Version and Platform Compatibility" +msgstr "バージョン、プラットフォーム間の互換性" + +#: utils/misc/guc.c:597 +msgid "Version and Platform Compatibility / Previous PostgreSQL Versions" +msgstr "バージョン、プラットフォーム間の互換性/以前のバージョンのPostgreSQL" + +#: utils/misc/guc.c:599 +msgid "Version and Platform Compatibility / Other Platforms and Clients" +msgstr "" +"バージョン、プラットフォーム間の互換性/他のプラットフォームとクライアント" -#: postmaster/postmaster.c:1223 -#, c-format -msgid "data directory \"%s\" has group or world access" -msgstr "データディレクトリ\"%s\"はグループまたは第三者からアクセス可能です" +#: utils/misc/guc.c:601 +msgid "Error Handling" +msgstr "エラーハンドリング" -#: postmaster/postmaster.c:1225 -msgid "Permissions should be u=rwx (0700)." -msgstr "権限はu=rwx(0700)でなければなりません" +#: utils/misc/guc.c:603 +msgid "Preset Options" +msgstr "事前設定オプション" -#: postmaster/postmaster.c:1236 -#, 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" +#: utils/misc/guc.c:605 +msgid "Customized Options" +msgstr "カスタマイズ用オプション" -#: postmaster/postmaster.c:1272 -#, c-format -msgid "%s: could not open file \"%s\": %s\n" -msgstr "%s: ファイル\"%s\"をオープンできませんでした: %s\n" +#: utils/misc/guc.c:607 +msgid "Developer Options" +msgstr "開発者向けオプション" -#: postmaster/postmaster.c:1279 -#, c-format -msgid "%s: could not open log file \"%s/%s\": %s\n" -msgstr "%s: ログファイル \"%s/%s\" をオープンできません: %s\n" +#: utils/misc/guc.c:661 +msgid "Enables the planner's use of sequential-scan plans." +msgstr "プランナによるシーケンシャルスキャン計画の使用を有効にします。" -#: postmaster/postmaster.c:1290 -#, c-format -msgid "%s: could not fork background process: %s\n" -msgstr "%s: バックグランドプロセスをforkできませんでした: %s\n" +#: utils/misc/guc.c:670 +msgid "Enables the planner's use of index-scan plans." +msgstr "プランナによるインデックススキャン計画の使用を有効にします。" -#: postmaster/postmaster.c:1312 -#, c-format -msgid "%s: could not dissociate from controlling TTY: %s\n" -msgstr "%s: 制御TTYから切り離せませんでした: %s\n" +#: utils/misc/guc.c:679 +msgid "Enables the planner's use of bitmap-scan plans." +msgstr "プランナによるビットマップスキャン計画の使用を有効にします。" -#: postmaster/postmaster.c:1407 -#, c-format -msgid "select() failed in postmaster: %m" -msgstr "postmasterでselect()が失敗しました: %m" +#: utils/misc/guc.c:688 +msgid "Enables the planner's use of TID scan plans." +msgstr "プランナによるTIDスキャン計画の使用を有効にします。" -#: postmaster/postmaster.c:1564 postmaster/postmaster.c:1595 -msgid "incomplete startup packet" -msgstr "開始パケットが不完全です" +#: utils/misc/guc.c:697 +msgid "Enables the planner's use of explicit sort steps." +msgstr "プランナによる明示的ソート段階の使用を有効にします。" -#: postmaster/postmaster.c:1576 -msgid "invalid length of startup packet" -msgstr "開始パケットの長さが無効です" +#: utils/misc/guc.c:706 +msgid "Enables the planner's use of hashed aggregation plans." +msgstr "プランナによるハッシュされた集約計画の使用を有効にします。" -#: postmaster/postmaster.c:1633 -#, c-format -msgid "failed to send SSL negotiation response: %m" -msgstr "SSL調停応答の送信に失敗しました: %m" +#: utils/misc/guc.c:715 +msgid "Enables the planner's use of materialization." +msgstr "プランナによる具体化(materialization)の使用を有効にします。" -#: postmaster/postmaster.c:1662 -#, 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:724 +msgid "Enables the planner's use of nested-loop join plans." +msgstr "プランナによる入れ子状ループ結合計画の使用を有効にします。" -#: postmaster/postmaster.c:1713 -msgid "invalid value for boolean option \"replication\"" -msgstr "ブールオプション \"replication\" は無効です" +#: utils/misc/guc.c:733 +msgid "Enables the planner's use of merge join plans." +msgstr "プランナによるマージ結合計画の使用を有効にします。" -#: postmaster/postmaster.c:1733 -msgid "invalid startup packet layout: expected terminator as last byte" -msgstr "" -"開始パケットの構成が無効です。最終バイトに想定外のターミネータがありました" +#: utils/misc/guc.c:742 +msgid "Enables the planner's use of hash join plans." +msgstr "プランナによるハッシュ結合計画の使用を有効にします。" -#: postmaster/postmaster.c:1761 -msgid "no PostgreSQL user name specified in startup packet" -msgstr "開始パケット中に指定されたPostgreSQLユーザ名は存在しません" +#: utils/misc/guc.c:751 +msgid "Enables genetic query optimization." +msgstr "遺伝的問い合わせ最適化を有効にします。" -#: postmaster/postmaster.c:1818 -msgid "the database system is starting up" -msgstr "データベースシステムは起動しています" +#: utils/misc/guc.c:752 +msgid "This algorithm attempts to do planning without exhaustive searching." +msgstr "このアルゴリズムでは、しらみつぶし検索を行わない計画の作成を試みます。" -#: postmaster/postmaster.c:1823 -msgid "the database system is shutting down" -msgstr "データベースシステムはシャットダウンしています" +#: utils/misc/guc.c:762 +msgid "Shows whether the current user is a superuser." +msgstr "現在のユーザがスーパーユーザかどうかを表示します。" -#: postmaster/postmaster.c:1828 -msgid "the database system is in recovery mode" -msgstr "データベースシステムはリカバリモードです" +#: utils/misc/guc.c:772 +msgid "Enables advertising the server via Bonjour." +msgstr "Bonjour を経由したサーバー広告を有効にします" -#: postmaster/postmaster.c:1895 -#, c-format -msgid "wrong key in cancel request for process %d" -msgstr "プロセス%dに対するキャンセル要求においてキーが間違っています" +#: utils/misc/guc.c:781 +msgid "Enables SSL connections." +msgstr "SSL接続を有効にします。" -#: postmaster/postmaster.c:1903 -#, c-format -msgid "PID %d in cancel request did not match any process" -msgstr "キャンセル要求内のPID %dがどのプロセスにも一致しません" +#: utils/misc/guc.c:790 +msgid "Forces synchronization of updates to disk." +msgstr "強制的に更新をディスクに同期します。" -#: postmaster/postmaster.c:2104 -msgid "received SIGHUP, reloading configuration files" -msgstr "SIGHUPを受け取りました。設定ファイルをリロードしています" +#: 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" +"()システムコールを使用します。これにより、オペレーティングシステムやハード" +"ウェアがクラッシュした後でもデータベースクラスタは一貫した状態に復旧すること" +"ができます。" -#: postmaster/postmaster.c:2127 -msgid "pg_hba.conf not reloaded" -msgstr "pg_hba.conf は再読み込みされません" +#: utils/misc/guc.c:802 +msgid "Continues processing past damaged page headers." +msgstr "破損したページヘッダがあっても処理を継続します。" -#: postmaster/postmaster.c:2170 -msgid "received smart shutdown request" -msgstr "スマートシャットダウン要求を受け取りました" +#: 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はエラーの報告を行ない、現在のト" +"ランザクションを中断させます。zero_damaged_pagesを真に設定することにより、シ" +"ステムは代わりに警告を報告し、障害のあるページをゼロで埋め、処理を継続しま" +"す。 この動作により、障害のあったページ上にある全ての行のデータを破壊されま" +"す。" -#: postmaster/postmaster.c:2217 -msgid "received fast shutdown request" -msgstr "高速シャットダウン要求を受け取りました" +#: utils/misc/guc.c:816 +msgid "Writes full pages to WAL when first modified after a checkpoint." +msgstr "" +"チェックポイントの後最初に変更された時、ページ全体をWALに書き出します。" -#: postmaster/postmaster.c:2235 -msgid "aborting any active transactions" -msgstr "活動中の全トランザクションをアボートしています" +#: 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 "" +"オペレーティングシステムがクラッシュした時にページ書き込みが実行中だった場" +"合\n" +"にのみ、部分的なディスクへの書き出しが起こる可能性があります。リカバリ中、" +"WAL\n" +"に保存された行の変更では完全に復旧させることができません。このオプションによ" +"り、\n" +"チェックポイントの後の最初の変更時にWALにページを書き出しますので、完全な復" +"旧\n" +"が可能になります。" -#: postmaster/postmaster.c:2264 -msgid "received immediate shutdown request" -msgstr "即時シャットダウン要求を受け取りました" +#: utils/misc/guc.c:829 +msgid "Runs the server silently." +msgstr "サーバを出力なしで実行します。" -#: postmaster/postmaster.c:2340 postmaster/postmaster.c:2368 -msgid "startup process" -msgstr "起動プロセス" +#: 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 "" +"このオプションを設定すると、サーバは自動的にバックグランドで起動し、制御端末" +"を切り離します。" -#: postmaster/postmaster.c:2343 -msgid "aborting startup due to startup process failure" -msgstr "起動プロセスの失敗のため起動を中断しています" +#: utils/misc/guc.c:839 +msgid "Logs each checkpoint." +msgstr "各チェックポイントをログに出力します。" -#: postmaster/postmaster.c:2402 -msgid "database system is ready to accept connections" -msgstr "データベースシステムの接続受付準備が整いました。" +#: utils/misc/guc.c:848 +msgid "Logs each successful connection." +msgstr "成功した接続を全てログに出力します。" -#: postmaster/postmaster.c:2457 -msgid "background writer process" -msgstr "バックグランドライタプロセス" +#: utils/misc/guc.c:857 +msgid "Logs end of a session, including duration." +msgstr "セッションの終了時刻とその期間をログに出力します。" -#: postmaster/postmaster.c:2473 -msgid "WAL writer process" -msgstr "WALライタプロセス" +#: utils/misc/guc.c:866 +msgid "Turns on various assertion checks." +msgstr "各種アサーション検査を有効にします。" -#: postmaster/postmaster.c:2487 -msgid "WAL receiver process" -msgstr "WAL 受信プロセス" +#: utils/misc/guc.c:867 +msgid "This is a debugging aid." +msgstr "これはデバッグ用です。" -#: postmaster/postmaster.c:2502 -msgid "autovacuum launcher process" -msgstr "自動バキュームランチャプロセス" +#: utils/misc/guc.c:881 +msgid "Terminate session on any error." +msgstr "何からのエラーがあればセッションを終了します" -#: postmaster/postmaster.c:2517 -msgid "archiver process" -msgstr "アーカイバプロセス" +#: utils/misc/guc.c:890 +msgid "Reinitialize after backend crash." +msgstr "バックエンドがクラッシュしたら再初期化します" -#: postmaster/postmaster.c:2533 -msgid "statistics collector process" -msgstr "統計情報収集プロセス" +#: utils/misc/guc.c:900 +msgid "Logs the duration of each completed SQL statement." +msgstr "完了したSQL全ての期間をログに出力します。" -#: postmaster/postmaster.c:2547 -msgid "system logger process" -msgstr "システムログ取得プロセス" +#: utils/misc/guc.c:909 +msgid "Logs each query's parse tree." +msgstr "各クエリーのパースツリーのログを取ります" -#: postmaster/postmaster.c:2582 postmaster/postmaster.c:2592 -#: postmaster/postmaster.c:2610 -msgid "server process" -msgstr "サーバプロセス" +#: utils/misc/guc.c:918 +msgid "Logs each query's rewritten parse tree." +msgstr "各クエリーのパースツリーが再度書かれた分のログを取ります" -#: postmaster/postmaster.c:2646 -msgid "terminating any other active server processes" -msgstr "他の活動中のサーバプロセスを終了しています" +#: utils/misc/guc.c:927 +msgid "Logs each query's execution plan." +msgstr "各クエリーの実行計画をログに出力します。" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2811 -#, c-format -msgid "%s (PID %d) exited with exit code %d" -msgstr "%s (PID %d)は終了コード%dで終了しました" +#: utils/misc/guc.c:936 +msgid "Indents parse and plan tree displays." +msgstr "解析ツリーと計画ツリーの表示をインデントします。" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2820 -#, c-format -msgid "%s (PID %d) was terminated by exception 0x%X" -msgstr "%s (PID %d)は例外%Xで終了しました" +#: utils/misc/guc.c:945 +msgid "Writes parser performance statistics to the server log." +msgstr "パーサの性能統計情報をサーバログに出力します。" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2829 -#, c-format -msgid "%s (PID %d) was terminated by signal %d: %s" -msgstr "%s (PID %d)はシグナル%dで終了しました: %s" +#: utils/misc/guc.c:954 +msgid "Writes planner performance statistics to the server log." +msgstr "プランナの性能統計情報をサーバログに出力します。" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2839 -#, c-format -msgid "%s (PID %d) was terminated by signal %d" -msgstr "%s (PID %d)はシグナル%dで終了しました" +#: utils/misc/guc.c:963 +msgid "Writes executor performance statistics to the server log." +msgstr "エグゼキュータの性能統計情報をサーバログに出力します。" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2848 -#, c-format -msgid "%s (PID %d) exited with unrecognized status %d" -msgstr "%s (PID %d)は認識できないステータス%dで終了しました" +#: utils/misc/guc.c:972 +msgid "Writes cumulative performance statistics to the server log." +msgstr "累積の性能統計情報をサーバログに出力します。" -#: postmaster/postmaster.c:3028 -msgid "abnormal database system shutdown" -msgstr "データベースシステムは異常にシャットダウンしました" +#: 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 "説明文はありません" -#: postmaster/postmaster.c:3066 -msgid "all server processes terminated; reinitializing" -msgstr "全てのサーバプロセスが終了しました: 再初期化しています" +#: utils/misc/guc.c:994 +msgid "Collects information about executing commands." +msgstr "実行中のコマンドに関する情報を収集します。" -#: postmaster/postmaster.c:3238 -#, c-format -msgid "could not fork new process for connection: %m" -msgstr "接続用の新しいプロセスをforkできませんでした: %m" +#: 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 "" +"各セッションで現在実行中のコマンドに関して、そのコマンドが実行を開始した時点" +"の時刻と一緒に情報の収集を有効にします。" -#: postmaster/postmaster.c:3280 -msgid "could not fork new process for connection: " -msgstr "接続用の新しいプロセスをforkできませんでした" +#: utils/misc/guc.c:1005 +msgid "Collects statistics on database activity." +msgstr "データベースの活動について統計情報を収集します。" -#: postmaster/postmaster.c:3394 -msgid "connection received: host=%s port=%s" -msgstr "接続を受け付けました: ホスト=%s ポート番号=%s" +#: utils/misc/guc.c:1015 +msgid "Updates the process title to show the active SQL command." +msgstr "活動中のSQLコマンドを表示するようプロセスタイトルを更新します。" -#: postmaster/postmaster.c:3399 -msgid "connection received: host=%s" -msgstr "接続を受け付けました: ホスト=%s" +#: 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コマンドをサーバが受信する度にプロセスタイトルを更新することを有効に" +"します。" -#: postmaster/postmaster.c:3666 -#, c-format -msgid "could not execute server process \"%s\": %m" -msgstr "サーバプロセス\"%s\"を実行できませんでした: %m" +#: utils/misc/guc.c:1025 +msgid "Starts the autovacuum subprocess." +msgstr "subprocessサブプロセスを起動します。" -#: postmaster/postmaster.c:4179 -msgid "database system is ready to accept read only connections" -msgstr "データベースシステムはリードオンリー接続の受付準備ができました" +#: utils/misc/guc.c:1035 +msgid "Generates debugging output for LISTEN and NOTIFY." +msgstr "LISTENとNOTIFYコマンドのためのデバッグ出力を生成します。" -#: postmaster/postmaster.c:4420 -#, c-format -msgid "could not fork startup process: %m" -msgstr "起動プロセスをforkできませんでした: %m" +#: utils/misc/guc.c:1089 +msgid "Logs long lock waits." +msgstr "長期のロック待機をログに記録します。" -#: postmaster/postmaster.c:4424 -#, c-format -msgid "could not fork background writer process: %m" -msgstr "バックグランドライタプロセスをforkできませんでした: %m" +#: utils/misc/guc.c:1099 +msgid "Logs the host name in the connection logs." +msgstr "接続ログ内でホスト名を出力します。" -#: postmaster/postmaster.c:4428 -#, c-format -msgid "could not fork WAL writer process: %m" -msgstr "WALライタプロセスをforkできませんでした: %m" +#: 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アドレスのみが表示されま" +"す。 このオプションを有効にすることで、ホスト名もログに表示されるようになりま" +"す。 ホスト名解決の設定次第で、無視できないほどの性能の悪化が課せられることに" +"注意してください。" -#: postmaster/postmaster.c:4432 -msgid "could not fork WAL receiver process: %m" -msgstr "WAL 受信プロセスを fork できませんでした: %m" +#: utils/misc/guc.c:1111 +msgid "Causes subtables to be included by default in various commands." +msgstr "各種コマンドにおいて、デフォルトで子テーブルを含めるようにします。" -#: postmaster/postmaster.c:4436 -#, c-format -msgid "could not fork process: %m" -msgstr "プロセスをforkできませんでした: %m" +#: utils/misc/guc.c:1120 +msgid "Encrypt passwords." +msgstr "パスワードを暗号化します。" -#: postmaster/postmaster.c:4718 -#, c-format -msgid "could not duplicate socket %d for use in backend: error code %d" +#: 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 "" -"バックエンドで使用するためにソケット%dを複製できませんでした: エラーコード %d" +"ENCRYPTEDもしくはUNENCRYPTEDの指定無しにCREATE USERもしくはALTER USERでパス" +"ワードが指定された場合、このオプションがパスワードの暗号化を行なうかどうかを" +"決定します。" -#: postmaster/postmaster.c:4750 -#, c-format -msgid "could not create inherited socket: error code %d\n" -msgstr "継承したソケットを作成できませんでした: エラーコード %d\n" +#: utils/misc/guc.c:1131 +msgid "Treats \"expr=NULL\" as \"expr IS NULL\"." +msgstr "\"expr=NULL\"という形の式は\"expr IS NULL\"として扱います。" -#: postmaster/postmaster.c:4779 postmaster/postmaster.c:4786 -#, c-format -msgid "could not read from backend variables file \"%s\": %s\n" -msgstr "バックエンド変数ファイル\"%s\"から読み取れませんでした: %s\n" +#: 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値の場合に真を、さもなくば偽を返しま" +"す。expr = NULLのSQL仕様に基づいた正しい動作は常にNULL(未知)を返すことです。" -#: postmaster/postmaster.c:4795 -#, c-format -msgid "could not remove file \"%s\": %s\n" -msgstr "ファイル\"%s\"を削除できませんでした: %s\n" +#: utils/misc/guc.c:1144 +msgid "Enables per-database user names." +msgstr "データベース毎のユーザ名を許可します。" -#: postmaster/postmaster.c:4808 -#, c-format -msgid "could not map view of backend variables: error code %d\n" -msgstr "バックエンド変数のビューをマップできませんでした: エラーコード %d\n" +#: utils/misc/guc.c:1154 +msgid "This parameter doesn't do anything." +msgstr "このパラメータは何もしません。" -#: postmaster/postmaster.c:4817 -#, c-format -msgid "could not unmap view of backend variables: error code %d\n" +#: 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 "" -"バックエンド変数のビューをアンマップできませんでした: エラーコード %d\n" +"古い7.3のクライアントからのSET AUTOCOMMIT TO ONでエラーにさせたくないためだけ" +"にこれは存在します。" -#: postmaster/postmaster.c:4824 -#, c-format -msgid "could not close handle to backend parameter variables: error code %d\n" +#: utils/misc/guc.c:1164 +msgid "Sets the default read-only status of new transactions." msgstr "" -"バックエンドパラメータ変数のハンドルをクローズできませんでした: エラーコード%" -"d\n" +"新しいトランザクションの読み取りのみステータスのデフォルトを設定します。" -#: postmaster/postmaster.c:4967 -msgid "could not read exit code for process\n" -msgstr "子プロセスの終了コードの読み込みができませんでした\n" +#: utils/misc/guc.c:1173 +msgid "Sets the current transaction's read-only status." +msgstr "現愛のトランザクションの読み取りのみステータスを設定します。" -#: postmaster/postmaster.c:4972 -msgid "could not post child completion status\n" -msgstr "個プロセスの終了コードを投稿できませんでした\n" +#: utils/misc/guc.c:1183 +#, +msgid "Sets the default deferrable status of new transactions." +msgstr "新しいトランザクションの遅延可能ステータスのデフォルトを設定します。" -#: postmaster/pgstat.c:328 -#, c-format -msgid "could not resolve \"localhost\": %s" -msgstr "\"localhost\"を解決できませんでした: %s" +#: 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 "" +"リードオンリーのシリアライズ可能なトランザクションを、シリアライズに失敗" +"することなく実行できることを保証できるまで遅延させるかどうか" -#: postmaster/pgstat.c:351 -msgid "trying another address for the statistics collector" -msgstr "統計情報コレクタ用の別のアドレスを試みています" +#: utils/misc/guc.c:1202 +msgid "Check function bodies during CREATE FUNCTION." +msgstr "CREATE FUNCTION中に関数本体を検査します。" -#: postmaster/pgstat.c:360 -#, c-format -msgid "could not create socket for statistics collector: %m" -msgstr "統計情報コレクタ用のソケットを作成できませんでした: %m" +#: utils/misc/guc.c:1211 +msgid "Enable input of NULL elements in arrays." +msgstr "配列内のNULL要素入力を可能にします「。" -#: postmaster/pgstat.c:372 -#, c-format -msgid "could not bind socket for statistics collector: %m" -msgstr "統計情報コレクタのソケットをバインドできませんでした: %m" +#: 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値を意味するようになり" +"ます。さもなくばそのまま解釈されます。" -#: postmaster/pgstat.c:383 -#, c-format -msgid "could not get address of socket for statistics collector: %m" -msgstr "統計情報コレクタのソケットからアドレスを入手できませんでした: %m" +#: utils/misc/guc.c:1222 +msgid "Create new tables with OIDs by default." +msgstr "新規のテーブルをデフォルトでOID付きで作成します。" -#: postmaster/pgstat.c:399 -#, c-format -msgid "could not connect socket for statistics collector: %m" -msgstr "統計情報コレクタのソケットに接続できませんでした: %m" +#: utils/misc/guc.c:1231 +msgid "" +"Start a subprocess to capture stderr output and/or csvlogs into log files." +msgstr "" +"標準エラー出力、CSVログ、またはその両方をログファイルに捕捉するための子プロセ" +"スを開始します。" -#: postmaster/pgstat.c:420 -#, c-format -msgid "could not send test message on socket for statistics collector: %m" -msgstr "統計情報コレクタのソケットに試験メッセージを送信できませんでした: %m" +#: utils/misc/guc.c:1240 +msgid "Truncate existing log files of same name during log rotation." +msgstr "ログローテーション時に既存の同一名称のログファイルを切り詰めます。" -#: postmaster/pgstat.c:446 postmaster/pgstat.c:2909 -#, c-format -msgid "select() failed in statistics collector: %m" -msgstr "統計情報コレクタでselect()が失敗しました: %m" +#: utils/misc/guc.c:1251 +msgid "Emit information about resource usage in sorting." +msgstr "ソート中にリソース使用状況に関する情報を発行します。" -#: postmaster/pgstat.c:461 -msgid "test message did not get through on socket for statistics collector" -msgstr "統計情報コレクタのソケットから試験メッセージを入手できませんでした" +#: utils/misc/guc.c:1265 +msgid "Generate debugging output for synchronized scanning." +msgstr "同期スキャン処理のデバッグ出力を生成します。" -#: postmaster/pgstat.c:476 -#, c-format -msgid "could not receive test message on socket for statistics collector: %m" -msgstr "統計情報コレクタのソケットから試験メッセージを受信できませんでした" +#: utils/misc/guc.c:1280 +msgid "Enable bounded sorting using heap sort." +msgstr "ヒープソートを使用した境界のソート処理を有効にします" -#: postmaster/pgstat.c:486 -msgid "incorrect test message transmission on socket for statistics collector" -msgstr "統計情報コレクタのソケットでの試験メッセージの送信が不正です" +#: utils/misc/guc.c:1293 +msgid "Emit WAL-related debugging output." +msgstr "WAL関連のデバッグ出力を出力します。" -#: postmaster/pgstat.c:509 -#, c-format -msgid "could not set statistics collector socket to nonblocking mode: %m" +#: utils/misc/guc.c:1305 +msgid "Datetimes are integer based." +msgstr "日付時刻は整数ベースです。" + +#: utils/misc/guc.c:1320 +msgid "" +"Sets whether Kerberos and GSSAPI user names should be treated as case-" +"insensitive." msgstr "" -"統計情報コレクタのソケットを非ブロッキングモードに設定できませんでした: %m" +"KerberosおよびGSSAPIユーザ名を大文字小文字を区別して扱うかどうかを設定しま" +"す。" -#: postmaster/pgstat.c:519 -msgid "disabling statistics collector for lack of working socket" -msgstr "作業用ソケットの欠落のため統計情報コレクタを無効にしています" +#: utils/misc/guc.c:1330 +msgid "Warn about backslash escapes in ordinary string literals." +msgstr "普通の文字列リテラル内のバックスラッシュエスケープを警告します。" -#: postmaster/pgstat.c:621 -#, c-format -msgid "could not fork statistics collector: %m" -msgstr "統計情報コレクタをforkできませんでした: %m" +#: utils/misc/guc.c:1340 +msgid "Causes '...' strings to treat backslashes literally." +msgstr "'...' 文字列はバックスラッシュをそのまま扱います。" -#: postmaster/pgstat.c:1151 postmaster/pgstat.c:1175 postmaster/pgstat.c:1206 -msgid "must be superuser to reset statistics counters" -msgstr "統計情報カウンタをリセットするにはスーパーユーザでなければなりません" +#: utils/misc/guc.c:1351 +msgid "Enable synchronized sequential scans." +msgstr "同期シーケンシャルスキャンを有効にします。" -#: postmaster/pgstat.c:1182 -msgid "unrecognized reset target: \"%s\"" -msgstr "認識できないリセットターゲット: \"%s\"" +#: utils/misc/guc.c:1361 +msgid "Allows archiving of WAL files using archive_command." +msgstr "archive_command.\"を使用したWALファイルのアーカイブ処理を許可します。" -#: postmaster/pgstat.c:1183 -msgid "Target must be \"bgwriter\"." -msgstr "ターゲットは \"bgwriter\" でなければなりません" +#: utils/misc/guc.c:1371 +msgid "Allows connections and queries during recovery." +msgstr "リカバリー中でも接続とクエリを受け付けます" -#: postmaster/pgstat.c:2888 -#, c-format -msgid "poll() failed in statistics collector: %m" -msgstr "統計情報コレクタでpoll()が失敗しました: %m" +#: utils/misc/guc.c:1381 +msgid "" +"Allows feedback from a hot standby primary that will avoid query conflicts." +msgstr "クエリーの衝突を避けるホットスタンバイのプライマリからの" +"フィードバックを受け付けます" -#: postmaster/pgstat.c:2933 -#, c-format -msgid "could not read statistics message: %m" -msgstr "統計情報メッセージを読み取れませんでした: %m" +#: utils/misc/guc.c:1391 +msgid "Allows modifications of the structure of system tables." +msgstr "システムテーブル構造に変更を許可します。" -#: postmaster/pgstat.c:3190 -#, c-format -msgid "could not open temporary statistics file \"%s\": %m" -msgstr "一時統計情報ファイル\"%s\"をオープンできませんでした: %m" +#: utils/misc/guc.c:1402 +msgid "Disables reading from system indexes." +msgstr "システムインデックスの読み取りを無効にします。" -#: postmaster/pgstat.c:3262 -#, c-format -msgid "could not write temporary statistics file \"%s\": %m" -msgstr "一時統計情報ファイル\"%s\"に書き込みできませんでした: %m" +#: 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 "" +"これはインデックスの更新は防ぎませんので、使用しても安全です。最大の影響は低" +"速化です。" -#: postmaster/pgstat.c:3271 -#, c-format -msgid "could not close temporary statistics file \"%s\": %m" -msgstr "一時統計情報ファイル\"%s\"をクローズできませんでした: %m" +#: 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 "" +"9.0 以前の PostgreSQL との互換のため、ラージオブジェクトを読んだり変更したり" +"する際に権限チェックをスキップする。" + +#: utils/misc/guc.c:1425 +msgid "When generating SQL fragments, quote all identifiers." +msgstr "SQL フラグメントを生成する時は、すべての識別子を引用符で囲んでください" + +#: 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ファイルへの切り替えを強制し" +"ます。" -#: postmaster/pgstat.c:3279 -#, c-format -msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" -msgstr "一時統計情報ファイル\"%s\"の名前を\"%s\"に変更できませんでした: %m" +#: utils/misc/guc.c:1455 +msgid "Waits N seconds on connection startup after authentication." +msgstr "認証後の接続開始までN秒待機します。" -#: postmaster/pgstat.c:3379 postmaster/pgstat.c:3608 -msgid "could not open statistics file \"%s\": %m" -msgstr "統計情報ファイル\"%s\"をオープンできませんでした: %m" +#: utils/misc/guc.c:1456 utils/misc/guc.c:1905 +msgid "This allows attaching a debugger to the process." +msgstr "これによりデバッガがプロセスに接続できます。" -#: postmaster/pgstat.c:3391 postmaster/pgstat.c:3401 postmaster/pgstat.c:3423 -#: postmaster/pgstat.c:3438 postmaster/pgstat.c:3501 postmaster/pgstat.c:3519 -#: postmaster/pgstat.c:3535 postmaster/pgstat.c:3553 postmaster/pgstat.c:3569 -#: postmaster/pgstat.c:3620 postmaster/pgstat.c:3631 -msgid "corrupted statistics file \"%s\"" -msgstr "統計情報ファイル \"%s\" が破損しています" +#: utils/misc/guc.c:1465 +msgid "Sets the default statistics target." +msgstr "デフォルトの統計情報対象を設定します。" -#: postmaster/pgstat.c:3925 -msgid "database hash table corrupted during cleanup --- abort" +#: 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経由で列指定の対象を持たないテーブル列についてのデ" +"フォルトの統計情報対象を設定します。" -#: bootparse.c:645 -msgid "syntax error: cannot back up" -msgstr "構文エラー:バックアップできません" +#: utils/misc/guc.c:1475 +msgid "Sets the FROM-list size beyond which subqueries are not collapsed." +msgstr "副問い合わせを折りたたまない上限のFROMリストのサイズを設定します。" -#: bootparse.c:1598 -msgid "syntax error; also virtual memory exhausted" -msgstr "構文エラー:さらに仮想メモリーオーバー" +#: 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リストがこの値以上多くない場合、プランナは副問い合わせを上位問い" +"合わせにマージします。" -#: bootparse.c:1602 tsearch/spell.c:444 tsearch/spell.c:461 -#: tsearch/spell.c:478 tsearch/spell.c:495 tsearch/spell.c:517 gram.y:11473 -#: gram.y:11490 -msgid "syntax error" -msgstr "構文エラー" +#: utils/misc/guc.c:1487 +msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened." +msgstr "JOIN式を平坦化しない上限のFROMリストのサイズを設定します。" -#: bootparse.c:1716 -msgid "parser stack overflow" -msgstr "パーサースタックオーバーフロー" +#: 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項目のリストに直します。 " -#: bootstrap/bootstrap.c:297 -#, c-format -msgid "%s: invalid command-line arguments\n" -msgstr "%s: コマンドライン引数が無効です\n" +#: utils/misc/guc.c:1499 +msgid "Sets the threshold of FROM items beyond which GEQO is used." +msgstr "GEQOを使用するFROMアイテム数の閾値を設定します。" -#: lib/stringinfo.c:267 -#, c-format -msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes." +#: utils/misc/guc.c:1508 +msgid "GEQO: effort is used to set the default for other GEQO parameters." msgstr "" -"%dバイトを持つ文字列バッファを%dバイト多く、大きくすることができません。" +"GEQO: effortは他のGEQOパラメータのデフォルトを設定するために使用されます。" -#: foreign/foreign.c:230 -#, c-format -msgid "user mapping not found for \"%s\"" -msgstr "\"%s\" に対するユーザ対応表が見つかりません" +#: utils/misc/guc.c:1517 +msgid "GEQO: number of individuals in the population." +msgstr "GEQO: 遺伝的個体群内の個体数です。" -#: foreign/foreign.c:408 -#, c-format -msgid "invalid option \"%s\"" -msgstr "\"%s\" オプションは無効です" +#: utils/misc/guc.c:1518 utils/misc/guc.c:1527 +msgid "Zero selects a suitable default value." +msgstr "0は適切なデフォルト値を選択します。" -#: foreign/foreign.c:409 -#, c-format -msgid "Valid options in this context are: %s" -msgstr "この文脈で有効なオプション:%s" +#: utils/misc/guc.c:1526 +msgid "GEQO: number of iterations of the algorithm." +msgstr "GEQO: アルゴリズムの反復数です。" -#: port/sysv_sema.c:114 port/pg_sema.c:114 -#, c-format -msgid "could not create semaphores: %m" -msgstr "セマフォを作成できませんでした: %m" +#: utils/misc/guc.c:1537 +msgid "Sets the time to wait on a lock before checking for deadlock." +msgstr "" +"デッドロック状態があるかどうかを調べる前にロックを待つ時間を設定します。" -#: 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)です。" +#: utils/misc/guc.c:1548 +msgid "" +"Sets the maximum delay before canceling queries when a hot standby server is " +"processing archived WAL data." +msgstr "" +"ホットスタンバイサーバがアーカイブされた WAL データを処理している場合は、クエ" +"リをキャンセルする前に遅延秒数の最大値をセットしてください。" -#: port/sysv_sema.c:119 port/pg_sema.c:119 -#, c-format +#: utils/misc/guc.c:1559 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." +"Sets the maximum delay before canceling queries when a hot standby server is " +"processing streamed WAL data." msgstr "" -"このエラーはディスク容量の枯渇を意味して*いません*。\n" -"セマフォ群(SEMMNI)の最大数に関するシステム上限かシステム全体の最大セマフォ\n" -"数(SEMMNS)を超えた場合に起こります。対応するカーネルパラメータを増加させな\n" -"ければなりません。他の方法として、max_connectionsパラメータ(現在%d)\n" -"を少なくしてPostgreSQLのセマフォ使用量を減らすこともできます。\n" -"PostgreSQL向けにシステムを構成する方法についての情報はPostgreSQLのドキュメ\n" -"ントに記載されています。" +"ホットスタンバイサーバがストリームの WAL データを処理している場合は、クエリを" +"キャンセルする前に遅延秒数の最大値をセットしてください。" -#: port/sysv_sema.c:148 port/pg_sema.c:148 -#, c-format +#: utils/misc/guc.c:1570 msgid "" -"You possibly need to raise your kernel's SEMVMX value to be at least %d. " -"Look into the PostgreSQL documentation for details." +"Sets the maximum interval between WAL receiver status reports to the master." msgstr "" -"おそらくカーネルのSEMVMX値を最低でも%dまで増やす必要があります。\n" -"詳細はPostgreSQLのドキュメントを調べてください。" +"WAL レシーバーのステータスレポートからマスターへの最大間隔を設定します" -#: port/sysv_shmem.c:141 port/pg_shmem.c:141 -#, c-format -msgid "could not create shared memory segment: %m" -msgstr "共有メモリセグメントを作成できません: %m" +#: utils/misc/guc.c:1581 +msgid "Sets the maximum number of concurrent connections." +msgstr "同時接続数の最大値を設定します。" -#: port/sysv_shmem.c:142 port/pg_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)でした。" +#: utils/misc/guc.c:1591 +msgid "Sets the number of connection slots reserved for superusers." +msgstr "スーパーユーザによる接続用に予約される接続スロットの数を設定します。" -#: port/sysv_shmem.c:146 port/pg_shmem.c:146 -#, c-format +#: utils/misc/guc.c:1605 +msgid "Sets the number of shared memory buffers used by the server." +msgstr "サーバで使用される共有メモリのバッファ数を設定します。" + +#: utils/misc/guc.c:1616 +msgid "Sets the maximum number of temporary buffers used by each session." +msgstr "各セッションで使用される一時バッファの最大数を設定します。" + +#: utils/misc/guc.c:1627 +msgid "Sets the TCP port the server listens on." +msgstr "サーバが接続を監視するTCPポートを設定します。" + +#: utils/misc/guc.c:1637 +msgid "Sets the access permissions of the Unix-domain socket." +msgstr "Unixドメインソケットのアクセス権限を設定します。" + +#: utils/misc/guc.c:1638 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_buffers " -"parameter (currently %d) and/or its max_connections parameter (currently %" -"d).\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." +"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 "" -"通常このエラーは、PostgreSQLが要求した共有メモリセグメントがカーネルの\n" -"SHMMAXパラメータを超えたことを意味します。この要求サイズを減らすこともでき\n" -"ますし、より大きなSHMMAXでカーネルを再構築することもできます。要求サイズ(現\n" -"在%luバイト)を減らすにはPostgreSQLのshared_buffersパラメータ(現在%d)、\n" -"max_connections(現在%d)、またはこの両者を減らしてください。\n" -"要求サイズはカーネルのSHMMIN以下にすることができますが、この要求サイズが小\n" -"さい場合は、要求サイズを大きくするかSHMINを再構築することが要求されます、\n" -"共有メモリの設定に関する情報はPostgreSQLのドキュメントに記載されています。" +"Unixドメインソケットは、通常のUnixファイルシステム権限の設定を使います。 この" +"パラメータ値は chmod と umask システムコールが受け付ける数値のモード指定を想" +"定しています(慣習的な8進数書式を使うためには、0(ゼロ)で始まらなくてはなりま" +"せん)。 " -#: port/sysv_shmem.c:159 port/pg_shmem.c:159 -#, c-format +#: utils/misc/guc.c:1652 +#, +msgid "Sets the file permissions for log files." +msgstr "ログファイルのパーミッションを設定します。" + +#: utils/misc/guc.c:1653 +#, 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_buffers parameter " -"(currently %d) and/or its max_connections parameter (currently %d).\n" -"The PostgreSQL documentation contains more information about shared memory " -"configuration." +"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 "" -"通常このエラーはPostgreSQLが利用可能なメモリやスワップ容量を超える共有\n" -"メモリセグメントを要求したことを意味します。この要求サイズ(現在%luバイト)\n" -"を減少させるには、PostgreSQLのshared_buffersパラメータ(現在%dバイト)、\n" -"max_connectionsパラメータ(現在%d)、またはこの両方を少なくしてください。\n" -"共有メモリの設定に関する情報はPostgreSQLのドキュメントに記載されていま\n" -"す。" +"このパタメータ値は chmod や umask システムコールで使えるような数値モード" +"指定であることが想定されます(慣習的な記法である 8 進数書式を使う場合は" +"先頭に 0 (ゼロ) をつけてください)。 " -#: port/sysv_shmem.c:168 port/pg_shmem.c:168 -#, c-format +#: utils/misc/guc.c:1666 +msgid "Sets the maximum memory to be used for query workspaces." +msgstr "問い合わせの作業用空間として使用されるメモリの最大値を設定します。" + +#: utils/misc/guc.c:1667 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), by reducing its shared_buffers parameter (currently %" -"d) and/or its max_connections parameter (currently %d).\n" -"The PostgreSQL documentation contains more information about shared memory " -"configuration." +"This much memory can be used by each internal sort operation and hash table " +"before switching to temporary disk files." msgstr "" -"このエラーはディクス容量の枯渇を意味して*いません*。利用できる共有メモリIDを\n" -"全て使用している場合やシステムの共有メモリに関する全体的な制限に達した場合に\n" -"発生します。前者の場合はカーネルのSHMMNIパラメータを増やすことが必要です。\n" -"共有メモリの制限を増加させることができない場合、shared_buffersパラメータ(現在\n" -"%2$dバイト)、max_connectionsパラメータ(現在%3$d)、またはこの両方を減らして、\n" -"PostgreSQLの共有メモリ要求(現在%1$luバイト)を少なくしてください。\n" -"共有メモリの設定に関する情報はPostgreSQLのドキュメントに記載されています。" +"一時ディスクファイルへの切替えを行う前に、内部ソート操作とハッシュテーブルで" +"使われるメモリの量を指定します。" -#: port/sysv_shmem.c:423 port/pg_shmem.c:423 -#, c-format -msgid "could not stat data directory \"%s\": %m" -msgstr "データディレクトリ\"%s\"をstatできませんでした: %m" +#: utils/misc/guc.c:1679 +msgid "Sets the maximum memory to be used for maintenance operations." +msgstr "保守作業で使用される最大メモリ量を設定します。" -#: 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" +#: utils/misc/guc.c:1680 +msgid "This includes operations such as VACUUM and CREATE INDEX." +msgstr "VACUUMやCREATE INDEXなどの作業が含まれます。" -#: port/win32_shmem.c:169 -#, c-format -msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)." -msgstr "失敗したシステムコールはCreateFileMapping(size=%lu, name=%s)でした。" +#: utils/misc/guc.c:1695 +msgid "Sets the maximum stack depth, in kilobytes." +msgstr "スタック長の最大値をキロバイト単位で設定します。" -#: port/win32_shmem.c:193 -msgid "pre-existing shared memory block is still in use" -msgstr "既存の共有メモリブロックはまだ使用中です" +#: utils/misc/guc.c:1706 +msgid "Vacuum cost for a page found in the buffer cache." +msgstr "バッファキャッシュにあるバッファをバキュームする際のコストです。" -#: port/win32_shmem.c:194 +#: utils/misc/guc.c:1716 +msgid "Vacuum cost for a page not found in the buffer cache." +msgstr "バッファキャッシュにないバッファをバキュームする際のコストです。" + +#: utils/misc/guc.c:1726 +msgid "Vacuum cost for a page dirtied by vacuum." +msgstr "バキューム処理がページを変更する際に課せられるコストです。" + +#: utils/misc/guc.c:1736 +msgid "Vacuum cost amount available before napping." +msgstr "バキューム処理プロセスが休止することになるコストの合計です。 " + +#: 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 "autovacuum用のミリ秒単位のコストベースのバキュームの遅延時間です。" + +#: utils/misc/guc.c:1768 +msgid "Vacuum cost amount available before napping, for autovacuum." +msgstr "" +"autovacuum用のバキューム処理プロセスが休止することになるコストの合計です。 " + +#: utils/misc/guc.c:1778 msgid "" -"Check if there are any old server processes still running, and terminate " -"them." -msgstr "古いサーバプロセスが実行中でないか検査し、それを終了させてください" +"Sets the maximum number of simultaneously open files for each server process." +msgstr "" +"各サーバ子プロセスで同時にオープンできるファイルの最大数を設定します。 " -#: port/win32_shmem.c:204 -msgid "Failed system call was DuplicateHandle." -msgstr "失敗したシステムコールはMapViewOfFileExでした。" +#: utils/misc/guc.c:1791 +msgid "Sets the maximum number of simultaneously prepared transactions." +msgstr "準備された1トランザクションの同時最大数を設定します。" -#: port/win32_shmem.c:225 -msgid "Failed system call was MapViewOfFileEx." -msgstr "失敗したシステムコールはMapViewOfFileExでした。" +#: utils/misc/guc.c:1824 +msgid "Sets the maximum allowed duration of any statement." +msgstr "全ての文の最大実行時間を設定します。" -#: port/win32/security.c:43 -#, c-format -msgid "could not open process token: error code %d\n" -msgstr "プロセストークンをオープンできませんでした: エラーコード %d\n" +#: utils/misc/guc.c:1825 +msgid "A value of 0 turns off the timeout." +msgstr "ゼロという値はこのタイムアウトを無効にします。 " -#: port/win32/security.c:63 -#, c-format -msgid "could not get SID for Administrators group: error code %d\n" -msgstr "管理者グループのSIDを入手できませんでした: エラーコード %d\n" +#: utils/misc/guc.c:1835 +msgid "Minimum age at which VACUUM should freeze a table row." +msgstr "VACUUM がテーブル行を凍結するまでの最小時間" -#: port/win32/security.c:72 -#, c-format -msgid "could not get SID for PowerUsers group: error code %d\n" -msgstr "PowerUsersグループのSIDを入手できませんでした: エラーコード %d\n" +#: utils/misc/guc.c:1845 +msgid "Age at which VACUUM should scan whole table to freeze tuples." +msgstr "" +"テーブル行を凍結するために VACUUM がテーブル全体をスキャンするまでの時間" -#: port/win32/signal.c:189 -#, c-format -msgid "could not create signal listener pipe for pid %d: error code %d" +#: utils/misc/guc.c:1855 +msgid "" +"Number of transactions by which VACUUM and HOT cleanup should be deferred, " +"if any." +msgstr "" +"もしあれば、VACUUM や HOT のクリーンアップを遅延させるトランザクション数" + +#: utils/misc/guc.c:1868 +msgid "Sets the maximum number of locks per transaction." +msgstr "1トランザクション当たりの最大ロック数を設定します。" + +#: 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 "" -"pid %dに対するシグナル監視パイプを作成できませんでした: エラーコード %d" +"共有ロックテーブルの大きさは、最大max_locks_per_transaction * max_connections" +"個の個別のオブジェクトがある時点でロックされる必要があるという仮定で決定され" +"ます。" -#: 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 "シグナル監視パイプを作成できませんでした: エラーコード %d: 再実行中\n" +#: utils/misc/guc.c:1880 +#, +msgid "Sets the maximum number of predicate locks per transaction." +msgstr "1 トランザクション当たりの最大ロック数を設定します。" -#: port/win32/signal.c:312 -#, c-format -msgid "could not create signal dispatch thread: error code %d\n" +#: 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 "" -"シグナルディスパッチ用スレッドを作成できませんでした: エラーコード %d\n" +"共有ロックテーブルの大きさは、最大 max_pred_locks_per_transaction * " +"max_connections 個の個別のオブジェクトが同時にロックされる必要がある" +"という仮定の元に決められます。" -#: port/win32_sema.c:94 -#, c-format -msgid "could not create semaphore: error code %d" -msgstr "セマフォを作成できませんでした: エラーコード %d" +#: utils/misc/guc.c:1892 +msgid "Sets the maximum allowed time to complete client authentication." +msgstr "クライアント認証の完了までの最大時間を設定します。" -#: port/win32_sema.c:161 -#, c-format -msgid "could not lock semaphore: error code %d" -msgstr "セマフォをロックできませんでした: エラーコード %d" +#: utils/misc/guc.c:1904 +msgid "Waits N seconds on connection startup before authentication." +msgstr "認証前の接続開始までN秒待機します。" -#: port/win32_sema.c:174 -#, c-format -msgid "could not unlock semaphore: error code %d" -msgstr "セマフォのロックを解除できませんでした: エラーコード %d" +#: utils/misc/guc.c:1915 +msgid "Sets the number of WAL files held for standby servers." +msgstr "待機用サーバで保持される WAL ファイル数を設定します。" -#: port/win32_sema.c:203 -#, c-format -msgid "could not try-lock semaphore: error code %d" -msgstr "セマフォのロックを試みることができませんでした: エラーコード %d" +#: utils/misc/guc.c:1925 +msgid "" +"Sets the maximum distance in log segments between automatic WAL checkpoints." +msgstr "" +"自動WALチェックポイントの間の最大距離を、ログファイルセグメントの数で設定しま" +"す。" -#: access/nbtree/nbtsort.c:483 access/nbtree/nbtinsert.c:523 -#: access/gin/ginentrypage.c:83 access/gin/ginentrypage.c:118 -msgid "index row size %lu exceeds maximum %lu for index \"%s\"" -msgstr "インデックス \"%3$s\" でインデック行サイズ %l1$u が最大値 %l2$u を超えています" +#: utils/misc/guc.c:1935 +msgid "Sets the maximum time between automatic WAL checkpoints." +msgstr "自動WALチェックポイントの最大間隔を設定します。" -#: access/nbtree/nbtsort.c:487 access/nbtree/nbtinsert.c:527 +#: utils/misc/guc.c:1946 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ハッシュへのインデックスを行う関数インデックスを検討してください。\n" -"もしくは全文テキストインデックスを使用してください。" +"Enables warnings if checkpoint segments are filled more frequently than this." +msgstr "チェックポイントセグメントの溢れ頻度がこれよりも多ければ警告します。" -#: access/nbtree/nbtpage.c:160 access/nbtree/nbtpage.c:364 -#, c-format -msgid "index \"%s\" is not a btree" -msgstr "インデックス\"%s\"はbtreeではありません" +#: 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 "" +"チェックポイントセグメントファイルが溢れることが原因で起きるチェックポイント" +"が、ここで指定した秒数よりも頻繁に発生する場合、サーバログにメッセージを書き" +"出します。 デフォルトは30秒です。 ゼロはこの警告を無効にします。 " -#: access/nbtree/nbtpage.c:166 access/nbtree/nbtpage.c:370 -#, c-format -msgid "version mismatch in index \"%s\": file version %d, code version %d" +#: utils/misc/guc.c:1960 +msgid "Sets the number of disk-page buffers in shared memory for WAL." msgstr "" -"インデックス\"%s\"におけるバージョンの不整合: ファイルバージョン %d、コード" -"バージョン %d" +"共有メモリ内に割り当てられた、WALデータ用のディスクページバッファ数です。" -#: access/nbtree/nbtpage.c:432 access/hash/hashutil.c:165 -#: access/gist/gistutil.c:588 -#, c-format -msgid "index \"%s\" contains unexpected zero page at block %u" -msgstr "インデックス\"%s\"のブロック %uに予期しないゼロページがあります" +#: utils/misc/guc.c:1971 +msgid "WAL writer sleep time between WAL flushes." +msgstr "WAL吐き出しの間、WALライタが待機する時間です。" -#: access/nbtree/nbtpage.c:435 access/nbtree/nbtpage.c:446 -#: access/hash/hashutil.c:168 access/hash/hashutil.c:179 -#: access/hash/hashutil.c:191 access/hash/hashutil.c:212 -#: access/gist/gistutil.c:591 access/gist/gistutil.c:602 -msgid "Please REINDEX it." -msgstr "REINDEXを行ってください。" +#: utils/misc/guc.c:1983 +msgid "Sets the maximum number of simultaneously running WAL sender processes." +msgstr "WAL sender プロセスの最大同時実行数を設定します。" -#: access/nbtree/nbtpage.c:443 access/hash/hashutil.c:176 -#: access/hash/hashutil.c:188 access/gist/gistutil.c:599 -#, c-format -msgid "index \"%s\" contains corrupted page at block %u" -msgstr "インデックス\"%s\"のブロック %uに破損したページがあります" +#: utils/misc/guc.c:1993 +msgid "WAL sender sleep time between WAL replications." +msgstr "WAL レプリケーションの間、WAL sender が待機する時間です。" -#: access/nbtree/nbtinsert.c:385 -#, c-format -msgid "duplicate key value violates unique constraint \"%s\"" -msgstr "重複キーが一意性制約\"%s\"に違反しています" +#: utils/misc/guc.c:2004 +#, +msgid "Sets the maximum time to wait for WAL replication." +msgstr "WAL レプリケーションのための最大の待ち時間を設定します。" -#: access/nbtree/nbtinsert.c:387 -#, c-format -msgid "Key %s already exists." -msgstr "キー %s はすでに存在します" +#: utils/misc/guc.c:2015 +msgid "" +"Sets the delay in microseconds between transaction commit and flushing WAL " +"to disk." +msgstr "" +"トランザクションのコミットからWALバッファのディスク吐き出しまでの遅延時間をマ" +"イクロ秒単位で設定します。" -#: access/hash/hashutil.c:204 -#, c-format -msgid "index \"%s\" is not a hash index" -msgstr "インデックス\"%s\"はハッシュインデックスではありません" +#: utils/misc/guc.c:2026 +msgid "" +"Sets the minimum concurrent open transactions before performing commit_delay." +msgstr "" +"commit_delay遅延の実行前に必要となる、同時に開いているトランザクションの最小" +"数を設定します。" -#: access/hash/hashutil.c:210 -#, c-format -msgid "index \"%s\" has wrong hash version" -msgstr "インデックス\"%s\"のハッシュバージョンが不正です" +#: utils/misc/guc.c:2037 +msgid "Sets the number of digits displayed for floating-point values." +msgstr "浮動小数点値の表示桁数を設定します。" -#: access/hash/hashsearch.c:152 -msgid "hash indexes do not support whole-index scans" -msgstr "ハッシュインデックスはインデックス全体のスキャンをサポートしていません" +#: 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 "" +"このパラメータは、real、double precision、幾何データ型に影響します。パラメー" +"タ値が標準的な桁数(FLT_DIG もしくは DBL_DIGどちらか適切な方)に追加されます。" -#: access/hash/hashovfl.c:546 -#, c-format -msgid "out of overflow pages in hash index \"%s\"" -msgstr "ハッシュインデックス\"%s\"の中のオーバーフローページがありません" +#: utils/misc/guc.c:2049 +msgid "Sets the minimum execution time above which statements will be logged." +msgstr "ログをとる文について、その最小の文実行時間を設定します。" -#: access/hash/hashinsert.c:73 -#, c-format -msgid "index row size %lu exceeds hash maximum %lu" -msgstr "インデックスの行サイズ%luがハッシュの最大%luを超えています" +#: utils/misc/guc.c:2051 +msgid "Zero prints all queries. -1 turns this feature off." +msgstr "" +"ゼロにすると、全ての問い合わせを出力します。-1はこの機能を無効にします。" -#: access/hash/hashinsert.c:76 -msgid "Values larger than a buffer page cannot be indexed." -msgstr "バッファページよりも大きな値をインデックスすることはできません。" +#: utils/misc/guc.c:2061 +msgid "" +"Sets the minimum execution time above which autovacuum actions will be " +"logged." +msgstr "自動バキュームの活動をログにとる文場合の最小の実行時間を設定します。" -#: access/common/tupdesc.c:545 parser/parse_relation.c:1165 -#, c-format -msgid "column \"%s\" cannot be declared SETOF" -msgstr "列\"%s\"をSETOFで宣言できません" +#: utils/misc/guc.c:2063 +msgid "Zero prints all actions. -1 turns autovacuum logging off." +msgstr "" +"ゼロはすべての活動を出力します。-1は自動バキュームのログ記録を無効にします。" -#: 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 と一致しません" +#: utils/misc/guc.c:2073 +msgid "Background writer sleep time between rounds." +msgstr "バックグランドライタの動作周期の待機時間" -#: access/common/tupconvert.c:135 -#, c-format -msgid "" -"Number of returned columns (%d) does not match expected column count (%d)." -msgstr "返された列数(%d)が期待する列数(%d)と一致しません" +#: utils/misc/guc.c:2084 +msgid "Background writer maximum number of LRU pages to flush per round." +msgstr "バックグランドライタが1周期で吐き出す最大LRUページ数" -#: access/common/tupconvert.c:240 -#, c-format +#: utils/misc/guc.c:2100 msgid "" -"Attribute \"%s\" of type %s does not match corresponding attribute of type %" -"s." -msgstr "型 %1$s の属性 \"%2$s\" が対応する型 %3$s の属性と合致しません" +"Number of simultaneous requests that can be handled efficiently by the disk " +"subsystem." +msgstr "ディスクサブシステムによって十分処理可能な同時並行リクエスト数" -#: access/common/tupconvert.c:252 -#, c-format -msgid "Attribute \"%s\" of type %s does not exist in type %s." -msgstr "型 %2$s の属性 \"%1$s\" が型 %3$s 中に存在しません" +#: utils/misc/guc.c:2101 +msgid "" +"For RAID arrays, this should be approximately the number of drive spindles " +"in the array." +msgstr "" +"RAID アレイでは、これはおおむねアレイ中のドライブのスピンドル数になります" -#: access/common/heaptuple.c:646 access/common/heaptuple.c:1398 -#, c-format -msgid "number of columns (%d) exceeds limit (%d)" -msgstr "列数(%d)が上限(%d)を超えています" +#: utils/misc/guc.c:2114 +msgid "Automatic log file rotation will occur after N minutes." +msgstr "ログファイルの自動ローテーションはN秒後に起こります" -#: access/common/indextuple.c:57 -#, c-format -msgid "number of index columns (%d) exceeds limit (%d)" -msgstr "インデックス列数(%d)が上限(%d)を超えています" +#: utils/misc/guc.c:2125 +msgid "Automatic log file rotation will occur after N kilobytes." +msgstr "ログファイルの自動ローテーションはNキロバイト後に起こります" -#: access/common/indextuple.c:168 -#, c-format -msgid "index row requires %lu bytes, maximum size is %lu" -msgstr "インデックス行は%luバイト要求。最大サイズは%luです" +#: utils/misc/guc.c:2136 +msgid "Shows the maximum number of function arguments." +msgstr "関数の引数の最大数を示します。" -#: access/common/reloptions.c:323 -msgid "user-defined relation parameter types limit exceeded" -msgstr "ユーザ定義リレーションのパラメータ型の制限を超えました" +#: utils/misc/guc.c:2147 +msgid "Shows the maximum number of index keys." +msgstr "インデックスキーの最大数を示します。" -#: access/common/reloptions.c:622 -msgid "RESET must not include values for parameters" -msgstr "RESETにはパラメータの値を含めてはいけません" +#: utils/misc/guc.c:2158 +msgid "Shows the maximum identifier length." +msgstr "識別子の最大長を示します。" -#: access/common/reloptions.c:655 -#, c-format -msgid "unrecognized parameter namespace \"%s\"" -msgstr "未知のパラメータ namaspace \"%s\"" +#: utils/misc/guc.c:2169 +msgid "Shows the size of a disk block." +msgstr "ディスクブロックサイズを示します。" -#: access/common/reloptions.c:895 -#, c-format -msgid "unrecognized parameter \"%s\"" -msgstr "未知のパラメータ \"%s\"" +#: utils/misc/guc.c:2180 +msgid "Shows the number of pages per disk file." +msgstr "ディスクファイルごとのページ数を表示します。" -#: access/common/reloptions.c:920 -#, c-format -msgid "parameter \"%s\" specified more than once" -msgstr "パラメータ\"%s\"が複数指定されました" +#: utils/misc/guc.c:2191 +msgid "Shows the block size in the write ahead log." +msgstr "先行書き込みログ(WAL)におけるブロックサイズを表示します" -#: access/common/reloptions.c:935 -#, c-format -msgid "invalid value for boolean option \"%s\": %s" -msgstr "ブールオプション値 \"%s\" は無効です: %s" +#: utils/misc/guc.c:2202 +msgid "Shows the number of pages per write ahead log segment." +msgstr "先行書き込みログ(WAL)セグメントごとのページ数を表示します" -#: access/common/reloptions.c:946 -#, c-format -msgid "invalid value for integer option \"%s\": %s" -msgstr "整数値オプションの値 \"%s\" が無効です: %s" +#: utils/misc/guc.c:2215 +msgid "Time to sleep between autovacuum runs." +msgstr "自動バキュームの待機間隔)。" -#: access/common/reloptions.c:951 access/common/reloptions.c:969 -#, c-format -msgid "value %s out of bounds for option \"%s\"" -msgstr "値 %s はオプション \"%s\" の範囲外です" +#: utils/misc/guc.c:2225 +msgid "Minimum number of tuple updates or deletes prior to vacuum." +msgstr "バキュームを行うまでの、タプルを更新または削除した回数の最小値。" -#: access/common/reloptions.c:953 -#, c-format -msgid "Valid values are between \"%d\" and \"%d\"." -msgstr "有効な値の範囲は \"%d\" ~ \"%d\" です。" +#: utils/misc/guc.c:2234 +msgid "Minimum number of tuple inserts, updates or deletes prior to analyze." +msgstr "解析するまでの、タプルを挿入、更新、削除した回数の最小値。" -#: access/common/reloptions.c:964 -#, c-format -msgid "invalid value for floating point option \"%s\": %s" -msgstr "浮動小数点オプションの値 \"%s\" が無効です: %s" +#: utils/misc/guc.c:2244 +msgid "" +"Age at which to autovacuum a table to prevent transaction ID wraparound." +msgstr "" +"トランザクションID周回を防ぐためにテーブルを自動バキュームする年代です。" -#: access/common/reloptions.c:971 -#, c-format -msgid "Valid values are between \"%f\" and \"%f\"." -msgstr "有効な値の範囲は \"%f\" ~ \"%f\" です。" +#: utils/misc/guc.c:2255 +msgid "" +"Sets the maximum number of simultaneously running autovacuum worker " +"processes." +msgstr "自動バキュームのワーカプロセスの最大同時実行数を設定します。" -#: access/heap/hio.c:175 access/heap/rewriteheap.c:592 -#, c-format -msgid "row is too big: size %lu, maximum size %lu" -msgstr "行が大きすぎます: サイズは%lu、上限は%lu" +#: utils/misc/guc.c:2265 +msgid "Time between issuing TCP keepalives." +msgstr "TCPキープアライブを発行する間隔。" -#: access/heap/heapam.c:3149 access/heap/heapam.c:3180 -#: access/heap/heapam.c:3215 -#, c-format -msgid "could not obtain lock on row in relation \"%s\"" -msgstr "リレーション\"%s\"の行ロックを取得できませんでした" +#: utils/misc/guc.c:2266 utils/misc/guc.c:2277 +msgid "A value of 0 uses the system default." +msgstr "ゼロという値はシステムのデフォルトを使用します。" -#: access/gin/ginarrayproc.c:30 -msgid "array must not contain null values" -msgstr "配列にはNULL値を含めてはいけません" +#: utils/misc/guc.c:2276 +msgid "Time between TCP keepalive retransmits." +msgstr "TCPキープアライブを再送信するまでの時間。" -#: access/gin/ginscan.c:166 access/gin/ginscan.c:229 -msgid "GIN indexes do not support whole-index scans" -msgstr "GINインデックスはインデックス全体のスキャンをサポートしていません" +#: utils/misc/guc.c:2287 +msgid "" +"Set the amount of traffic to send and receive before renegotiating the " +"encryption keys." +msgstr "" +"暗号化キーを再ネゴシエートする前に、送信するトラフィック量をセットしてくださ" +"い。" -#: access/transam/twophase.c:247 -#, c-format -msgid "transaction identifier \"%s\" is too long" -msgstr "トランザクション識別子\"%s\"は長すぎます" +#: utils/misc/guc.c:2298 +msgid "Maximum number of TCP keepalive retransmits." +msgstr "TCPキープアライブの再利用数の最大数です。" -#: access/transam/twophase.c:254 -msgid "prepared transactions are disabled" -msgstr "準備されたトランザクションは無効です。" +#: 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 "" +"これは、接続が不要となったとみなす前に失われる可能性がある、連続的なキープ" +"ア\n" +"ライブの再利用数をを制御します。0という値でシステムのデフォルトを使用します。" -#: access/transam/twophase.c:255 -msgid "Set max_prepared_transactions to a nonzero value." -msgstr "max_prepared_transactionsを非ゼロに設定してください。" +#: utils/misc/guc.c:2310 +msgid "Sets the maximum allowed result for exact search by GIN." +msgstr "GINによる正確な検索に対して許される最大の結果数を設定します。" -#: access/transam/twophase.c:288 -#, c-format -msgid "transaction identifier \"%s\" is already in use" -msgstr "トランザクション識別子\"%s\"はすでに存在します" +#: utils/misc/guc.c:2321 +msgid "Sets the planner's assumption about the size of the disk cache." +msgstr "ディスクキャッシュのサイズに関するプランナの推測を設定します。" -#: access/transam/twophase.c:297 -msgid "maximum number of prepared transactions reached" -msgstr "準備済みのトランザクションの最大数に達しました" +#: 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のデータファイル用に使用されるカーネルのディスクキャッシュ" +"の量です。これは通常8KBのディスクページを単位とします。" -#: access/transam/twophase.c:298 -#, c-format -msgid "Increase max_prepared_transactions (currently %d)." -msgstr "max_prepared_transactionsを増加してください(現状%d)。" +#: utils/misc/guc.c:2335 +msgid "Shows the server version as an integer." +msgstr "サーバのバージョンを整数値で表示します。" -#: access/transam/twophase.c:418 -#, c-format -msgid "prepared transaction with identifier \"%s\" is busy" -msgstr "準備されたトランザクション識別子\"%s\"は実行中です" +#: utils/misc/guc.c:2346 +msgid "Log the use of temporary files larger than this number of kilobytes." +msgstr "" +"キロバイト単位でこの数値yり大きな一時ファイルの使用をログに記録します。" -#: access/transam/twophase.c:426 -msgid "permission denied to finish prepared transaction" -msgstr "準備されたトランザクションを終了するための権限がありません" +#: utils/misc/guc.c:2347 +msgid "Zero logs all files. The default is -1 (turning this feature off)." +msgstr "" +"ゼロにすると、全てのファイルを出力します。デフォルトは-1です。(この機能を無効" +"にします。)" -#: access/transam/twophase.c:427 -msgid "Must be superuser or the user that prepared the transaction." -msgstr "トランザクションを準備するユーザはスーパーユーザでなければなりません。" +#: utils/misc/guc.c:2357 +msgid "Sets the size reserved for pg_stat_activity.current_query, in bytes." +msgstr "" +"pg_stat_activity.current_query で予約されているサイズをバイト単位で指定してく" +"ださい" -#: access/transam/twophase.c:438 -msgid "prepared transaction belongs to another database" -msgstr "準備されたトランザクションが別のデータベースに属しています" +#: utils/misc/guc.c:2376 +msgid "" +"Sets the planner's estimate of the cost of a sequentially fetched disk page." +msgstr "" +"プランナのシーケンシャルに取りだされたディスクページのコストの概算を設定しま" +"す。" -#: access/transam/twophase.c:439 +#: utils/misc/guc.c:2386 msgid "" -"Connect to the database where the transaction was prepared to finish it." +"Sets the planner's estimate of the cost of a nonsequentially fetched disk " +"page." msgstr "" -"終了させるためにはそのトランザクションを準備したデータベースに接続してくださ" -"い" +"プランナの順不同に取りだされたディスクページのコストの概算を設定します。" -#: access/transam/twophase.c:453 -#, c-format -msgid "prepared transaction with identifier \"%s\" does not exist" -msgstr "準備されたトランザクションの中に識別子 \"%s\" を持つものはありません" +#: utils/misc/guc.c:2396 +msgid "Sets the planner's estimate of the cost of processing each tuple (row)." +msgstr "プランナが各タプル(行)を処理するコストを設定します。" -#: access/transam/twophase.c:936 -msgid "two-phase state file maximum length exceeded" -msgstr "2相状態ファイルの最大長が制限を超えました" +#: utils/misc/guc.c:2406 +msgid "" +"Sets the planner's estimate of the cost of processing each index entry " +"during an index scan." +msgstr "" +"プランナがインデックススキャン時にそれぞれのインデックス項目を処理するための" +"概算コストを設定します。 " -#: access/transam/twophase.c:954 -#, c-format -msgid "could not create two-phase state file \"%s\": %m" -msgstr "2相状態ファイル\"%s\"を作成できませんでした: %m" +#: utils/misc/guc.c:2416 +msgid "" +"Sets the planner's estimate of the cost of processing each operator or " +"function call." +msgstr "" +"プランナの、各演算子呼び出し、各関数呼び出しを処理する概算コストを設定しま" +"す。" -#: access/transam/twophase.c:968 access/transam/twophase.c:985 -#: access/transam/twophase.c:1034 access/transam/twophase.c:1445 -#: access/transam/twophase.c:1452 -#, c-format -msgid "could not write two-phase state file: %m" -msgstr "2相状態ファイルに書き出せませんでした: %m" +#: utils/misc/guc.c:2427 +msgid "" +"Sets the planner's estimate of the fraction of a cursor's rows that will be " +"retrieved." +msgstr "取り出されるカーソル行の割合について、プランナの予測値を設定します。" -#: access/transam/twophase.c:994 -#, c-format -msgid "could not seek in two-phase state file: %m" -msgstr "2相状態ファイルをシークできませんでした: %m" +#: utils/misc/guc.c:2438 +msgid "GEQO: selective pressure within the population." +msgstr "GEQO: 個体群内の選択圧力です。" -#: access/transam/twophase.c:1040 access/transam/twophase.c:1470 -#, c-format -msgid "could not close two-phase state file: %m" -msgstr "2相状態ファイルをクローズできませんでした: %m" +#: utils/misc/guc.c:2448 +msgid "GEQO: seed for random path selection." +msgstr "GEQO: 乱数パス選択用のシード" -#: access/transam/twophase.c:1112 access/transam/twophase.c:1550 -#, c-format -msgid "could not open two-phase state file \"%s\": %m" -msgstr "2相状態ファイル\"%s\"をオープンできませんでした: %m" +#: utils/misc/guc.c:2458 +msgid "Multiple of the average buffer usage to free per round." +msgstr "1周ごとに開放するべきのバッファの使用量平均に掛ける倍数" -#: access/transam/twophase.c:1129 -#, c-format -msgid "could not stat two-phase state file \"%s\": %m" -msgstr "2相状態ファイル\"%s\"のstatができませんでした: %m" +#: utils/misc/guc.c:2468 +msgid "Sets the seed for random-number generation." +msgstr "ランダム生成用のシードを設定します。" -#: access/transam/twophase.c:1161 -#, c-format -msgid "could not read two-phase state file \"%s\": %m" -msgstr "2相状態ファイル\"%s\"を読み取れませんでした: %m" +#: utils/misc/guc.c:2479 +msgid "" +"Number of tuple updates or deletes prior to vacuum as a fraction of " +"reltuples." +msgstr "" +"reltuplesの一部としてバキュームを行うまでの、タプルの更新または削除回数。" -#: access/transam/twophase.c:1253 -#, c-format -msgid "two-phase state file for transaction %u is corrupt" -msgstr "トランザクション%u用の2相状態ファイルが破損しています" +#: utils/misc/guc.c:2488 +msgid "" +"Number of tuple inserts, updates or deletes prior to analyze as a fraction " +"of reltuples." +msgstr "" +"reltuplesの一部として解析を行うまでの、タプルの挿入、更新または削除回数。" -#: access/transam/twophase.c:1407 -#, c-format -msgid "could not remove two-phase state file \"%s\": %m" -msgstr "2相状態ファイル\"%s\"を削除できませんでした: %m" +#: utils/misc/guc.c:2498 +msgid "" +"Time spent flushing dirty buffers during checkpoint, as fraction of " +"checkpoint interval." +msgstr "" +"チェックポイントにおけるダーティバッファの吐き出しに要した時間(チェック\n" +"ポイント間隔における割合)。" -#: access/transam/twophase.c:1436 -#, c-format -msgid "could not recreate two-phase state file \"%s\": %m" -msgstr "2相状態ファイル\"%s\"を再作成できませんでした: %m" +#: utils/misc/guc.c:2517 +msgid "Sets the shell command that will be called to archive a WAL file." +msgstr "WALファイルの保管のために呼び出されるシェルスクリプトを設定します。" -#: access/transam/twophase.c:1464 -#, c-format -msgid "could not fsync two-phase state file: %m" -msgstr "2相状態ファイルをfsyncできませんでした: %m" +#: utils/misc/guc.c:2527 +msgid "Sets the client's character set encoding." +msgstr "クライアントの文字セット符号化方式を設定します。" -#: access/transam/twophase.c:1559 -#, c-format -msgid "could not fsync two-phase state file \"%s\": %m" -msgstr "2相状態ファイル\"%s\"をfsyncできませんでした: %m" +#: utils/misc/guc.c:2538 +msgid "Controls information prefixed to each log line." +msgstr "各ログ行の前に付ける情報を制御します。" -#: access/transam/twophase.c:1566 -#, c-format -msgid "could not close two-phase state file \"%s\": %m" -msgstr "2相状態ファイル\"%s\"をクローズできませんでした: %m" +#: utils/misc/guc.c:2539 +msgid "If blank, no prefix is used." +msgstr "もし空であれば接頭辞はありません" -#: access/transam/twophase.c:1631 -#, c-format -msgid "removing future two-phase state file \"%s\"" -msgstr "将来の2相状態ファイル\"%s\"を削除しています" +#: utils/misc/guc.c:2548 +msgid "Sets the time zone to use in log messages." +msgstr "ログメッセージでしか割れる時間帯を設定します。" -#: access/transam/twophase.c:1647 access/transam/twophase.c:1658 -#: access/transam/twophase.c:1771 access/transam/twophase.c:1782 -#: access/transam/twophase.c:1855 -#, c-format -msgid "removing corrupt two-phase state file \"%s\"" -msgstr "破損した2相状態ファイル\"%s\"を削除しています" +#: utils/misc/guc.c:2558 +msgid "Sets the display format for date and time values." +msgstr "日付時刻値の表示用書式を設定します。" -#: access/transam/twophase.c:1760 access/transam/twophase.c:1844 -#, c-format -msgid "removing stale two-phase state file \"%s\"" -msgstr "古くなった2相状態ファイル\"%s\"を削除しています" +#: utils/misc/guc.c:2559 +msgid "Also controls interpretation of ambiguous date inputs." +msgstr "曖昧な日付の入力の解釈も制御します。" -#: access/transam/twophase.c:1862 -#, c-format -msgid "recovering prepared transaction %u" -msgstr "準備されたトランザクション%uを復旧しています" +#: utils/misc/guc.c:2570 +msgid "Sets the default tablespace to create tables and indexes in." +msgstr "" +"テーブルとインデックスの作成先となるデフォルトのテーブル空間を設定します。" -#: access/transam/xlog.c:1275 -#, c-format -msgid "could not create archive status file \"%s\": %m" -msgstr "アーカイブステータスファイル\"%s\"を作成できませんでした: %m" +#: utils/misc/guc.c:2571 +msgid "An empty string selects the database's default tablespace." +msgstr "空文字列はデータベースのデフォルトのテーブル空間を選択します。" -#: access/transam/xlog.c:1283 -#, c-format -msgid "could not write archive status file \"%s\": %m" -msgstr "アーカイブステータスファイル\\\"%s\\\"を書き出せませんでした: %m" +#: utils/misc/guc.c:2581 +msgid "Sets the tablespace(s) to use for temporary tables and sort files." +msgstr "一時テーブルとファイルのソートで使用されるテーブル空間を設定します。" -#: access/transam/xlog.c:1738 access/transam/xlog.c:9577 -#: replication/walreceiver.c:479 replication/walsender.c:596 -#, c-format -msgid "could not seek in log file %u, segment %u to offset %u: %m" -msgstr "" -"ログファイル%u、セグメント%uをオフセット%uまでシークできませんでした: %m" +#: utils/misc/guc.c:2592 +msgid "Sets the path for dynamically loadable modules." +msgstr "動的ロード可能モジュールのパスを設定します。" -#: access/transam/xlog.c:1755 replication/walreceiver.c:496 -#, c-format -msgid "could not write to log file %u, segment %u at offset %u, length %lu: %m" +#: 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 "" -"ログファイル%u、セグメント%uをオフセット%u、長さ%luで書き出せませんでした: %m" +"オープンする必要がある動的ロード可能なモジュールについて、指定されたファイル" +"名にディレクトリ要素がない(つまり、名前にスラッシュが含まれない)場合、システ" +"ムは指定されたファイルをこのパスから検索します。 " -#: access/transam/xlog.c:1957 -#, c-format -msgid "updated min recovery point to %X/%X" -msgstr "最小リカバリポイントを %X/%X に更新しました" +#: utils/misc/guc.c:2606 +msgid "Sets the location of the Kerberos server key file." +msgstr "Kerberosサーバキーファイルの場所を設定します。" -#: access/transam/xlog.c:2298 access/transam/xlog.c:2402 -#: access/transam/xlog.c:2631 access/transam/xlog.c:2702 -#: access/transam/xlog.c:2759 replication/walsender.c:584 -#, c-format -msgid "could not open file \"%s\" (log file %u, segment %u): %m" -msgstr "" -"ファイル\"%s\"(ログファイル%u、セグメント%u)をオープンできませんでした: %m" +#: utils/misc/guc.c:2617 +msgid "Sets the name of the Kerberos service." +msgstr "Kerberosサービス名を設定します。" -#: access/transam/xlog.c:2472 -#, c-format -msgid "not enough data in file \"%s\"" -msgstr "ファイル\"%s\"内のデータが不十分です" +#: utils/misc/guc.c:2627 +msgid "Sets the Bonjour service name." +msgstr "Bonjour サービス名を設定します。" + +#: utils/misc/guc.c:2639 +msgid "Shows the collation order locale." +msgstr "テキストデータのソート時に使用されるロケールを表示します。" + +#: utils/misc/guc.c:2650 +msgid "Shows the character classification and case conversion locale." +msgstr "文字クラス分類、大文字小文字変換を決定するロケールを表示します。" + +#: utils/misc/guc.c:2661 +msgid "Sets the language in which messages are displayed." +msgstr "表示用メッセージの言語を設定します。" + +#: utils/misc/guc.c:2671 +msgid "Sets the locale for formatting monetary amounts." +msgstr "通貨書式で使用するロケールを設定します。 " + +#: utils/misc/guc.c:2681 +msgid "Sets the locale for formatting numbers." +msgstr "数字の書式で使用するロケールを設定します。" -#: access/transam/xlog.c:2591 -#, c-format -msgid "" -"could not link file \"%s\" to \"%s\" (initialization of log file %u, segment " -"%u): %m" -msgstr "" -"ファイル\"%s\"を\"%s\"にリンクできませんでした(ログファイル%u、セグメント%uの" -"初期化): %m" +#: utils/misc/guc.c:2691 +msgid "Sets the locale for formatting date and time values." +msgstr "日付と時間の書式で使用するロケールを設定します。" -#: access/transam/xlog.c:2603 -#, c-format -msgid "" -"could not rename file \"%s\" to \"%s\" (initialization of log file %u, " -"segment %u): %m" -msgstr "" -"ファイル\"%s\"の名前を\"%s\"に変更できませんでした(ログファイル%u、セグメン" -"ト%uの初期化): %m" +#: utils/misc/guc.c:2701 +msgid "Lists shared libraries to preload into server." +msgstr "サーバに事前ロードする共有ライブラリを列挙します。" -#: access/transam/xlog.c:2786 replication/walreceiver.c:453 -#, c-format -msgid "could not close log file %u, segment %u: %m" -msgstr "ログファイル%u、セグメント%uをクローズできませんでした: %m" +#: utils/misc/guc.c:2712 +msgid "Lists shared libraries to preload into each backend." +msgstr "各バックエンドに事前ロードする共有ライブラリを列挙します。" -#: access/transam/xlog.c:3002 -#, c-format -msgid "archive file \"%s\" has wrong size: %lu instead of %lu" -msgstr "アーカイブファイル\"%s\"のサイズが不正です: %lu。%luを想定" +#: utils/misc/guc.c:2723 +msgid "Sets the schema search order for names that are not schema-qualified." +msgstr "スキーマ部を含まない名前に対するスキーマの検索順を設定します。" -#: access/transam/xlog.c:3011 -#, c-format -msgid "restored log file \"%s\" from archive" -msgstr "ログファイル\"%s\"をアーカイブからリストアしました" +#: utils/misc/guc.c:2735 +msgid "Sets the server (database) character set encoding." +msgstr "サーバ(データベース)文字セット符号化方式を設定します。" -#: access/transam/xlog.c:3061 -#, c-format -msgid "could not restore file \"%s\" from archive: return code %d" -msgstr "アーカイブからファイル\"%s\"をリストアできませんでした: 戻りコード %d" +#: utils/misc/guc.c:2747 +msgid "Shows the server version." +msgstr "サーバのバージョンを表示します。" -#: access/transam/xlog.c:3176 -msgid "%s \"%s\": return code %d" -msgstr "%s \"%s\": リターンコード %d" +#: utils/misc/guc.c:2759 +msgid "Sets the current role." +msgstr "現在のロールを設定します。" -#: access/transam/xlog.c:3289 access/transam/xlog.c:3469 -#, c-format -msgid "could not open transaction log directory \"%s\": %m" -msgstr "トランザクションログディレクトリ\"%s\"をオープンできませんでした: %m" +#: utils/misc/guc.c:2771 +msgid "Sets the session user name." +msgstr "セッションユーザ名を設定します。" -#: access/transam/xlog.c:3340 -#, c-format -msgid "recycled transaction log file \"%s\"" -msgstr "トランザクションログファイル\"%s\"を回収しました" +#: utils/misc/guc.c:2782 +msgid "Sets the destination for server log output." +msgstr "サーバログの出力先を設定します。" -#: access/transam/xlog.c:3356 -#, c-format -msgid "removing transaction log file \"%s\"" -msgstr "トランザクションログファイル\"%s\"を削除しました" +#: 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\"の組み合わせです。" -#: access/transam/xlog.c:3379 -#, c-format -msgid "could not rename old transaction log file \"%s\": %m" -msgstr "古いトランザクションログファイル \"%s\" をリネームできませんでした: %m" +#: utils/misc/guc.c:2794 +msgid "Sets the destination directory for log files." +msgstr "ログファイルの格納ディレクトリを設定します。" -#: access/transam/xlog.c:3391 -#, c-format -msgid "could not remove old transaction log file \"%s\": %m" -msgstr "古いトランザクションログファイル \"%s\" を削除できませんでした: %m" +#: utils/misc/guc.c:2795 +msgid "Can be specified as relative to the data directory or as absolute path." +msgstr "データディレクトリからの相対パスでも絶対パスでも指定できます" -#: access/transam/xlog.c:3429 access/transam/xlog.c:3439 -#, c-format -msgid "required WAL directory \"%s\" does not exist" -msgstr "WAL ディレクトリ\"%s\"は存在しません" +#: utils/misc/guc.c:2805 +msgid "Sets the file name pattern for log files." +msgstr "ログファイルのファイル名パターンを設定します。" -#: access/transam/xlog.c:3445 -#, c-format -msgid "creating missing WAL directory \"%s\"" -msgstr "WAL ディレクトリ%sを作成しています ... " +#: utils/misc/guc.c:2816 +msgid "Sets the program name used to identify PostgreSQL messages in syslog." +msgstr "" +"syslog内でPostgreSQLのメッセージを識別するために使用されるプログラム名を設定" +"します。" -#: access/transam/xlog.c:3448 -#, c-format -msgid "could not create missing directory \"%s\": %m" -msgstr "ディレクトリ\"%s\"を作成できませんでした: %m" +#: utils/misc/guc.c:2827 +msgid "Sets the time zone for displaying and interpreting time stamps." +msgstr "タイムスタンプの表示と解釈に使用する時間帯を設定します。" -#: access/transam/xlog.c:3482 -#, c-format -msgid "removing transaction log backup history file \"%s\"" -msgstr "トランザクションログバックアップ履歴ファイル\"%s\"を削除しています" +#: utils/misc/guc.c:2837 +msgid "Selects a file of time zone abbreviations." +msgstr "時間帯省略形用のファイルを選択します。" -#: access/transam/xlog.c:3602 -#, c-format -msgid "incorrect hole size in record at %X/%X" -msgstr "%X/%Xのレコードのホールサイズが不正です" +#: utils/misc/guc.c:2847 +msgid "Sets the current transaction's isolation level." +msgstr "現在のトランザクションの隔離レベルを設定します。" -#: access/transam/xlog.c:3615 -#, c-format -msgid "incorrect total length in record at %X/%X" -msgstr "%X/%Xのレコード内の全長が不正です" +#: utils/misc/guc.c:2858 +msgid "Sets the owning group of the Unix-domain socket." +msgstr "Unixドメインソケットを所有するグループを設定します。" -#: access/transam/xlog.c:3628 -#, c-format -msgid "incorrect resource manager data checksum in record at %X/%X" -msgstr "%X/%Xのレコード内のリソースマネージャデータのチェックサムが不正です" +#: utils/misc/guc.c:2859 +msgid "" +"The owning user of the socket is always the user that starts the server." +msgstr "ソケットを所有するユーザは常にサーバを開始したユーザです。" -#: access/transam/xlog.c:3697 access/transam/xlog.c:3733 -#, c-format -msgid "invalid record offset at %X/%X" -msgstr "%X/%Xのレコードオフセットが無効です" +#: utils/misc/guc.c:2869 +msgid "Sets the directory where the Unix-domain socket will be created." +msgstr "Unixドメインソケットの作成先ディレクトリを設定します。" -#: access/transam/xlog.c:3741 -#, c-format -msgid "contrecord is requested by %X/%X" -msgstr "%X/%Xではcontrecordが必要です" +#: utils/misc/guc.c:2880 +msgid "Sets the host name or IP address(es) to listen to." +msgstr "接続を監視するホスト名またはIPアドレスを設定します。" -#: access/transam/xlog.c:3756 -#, c-format -msgid "invalid xlog switch record at %X/%X" -msgstr "%X/%Xのxlog切り替えレコードが無効です" +#: utils/misc/guc.c:2891 +msgid "Sets the list of known custom variable classes." +msgstr "既知のカスタム変数クラスのリストを設定します。" -#: access/transam/xlog.c:3764 -#, c-format -msgid "record with zero length at %X/%X" -msgstr "%X/%Xのレコードのサイズは0です" +#: utils/misc/guc.c:2902 +msgid "Sets the server's data directory." +msgstr "サーバのデータディレクトリを設定します。" -#: access/transam/xlog.c:3773 -#, c-format -msgid "invalid record length at %X/%X" -msgstr "%X/%Xのレコード長が無効です" +#: utils/misc/guc.c:2913 +msgid "Sets the server's main configuration file." +msgstr "サーバのメイン設定ファイルを設定します。" -#: access/transam/xlog.c:3780 -#, c-format -msgid "invalid resource manager ID %u at %X/%X" -msgstr "%2$X/%3$XのリソースマネージャID %1$uが無効です" +#: utils/misc/guc.c:2924 +msgid "Sets the server's \"hba\" configuration file." +msgstr "サーバの\"hba\"設定ファイルを設定します。" -#: access/transam/xlog.c:3793 access/transam/xlog.c:3809 -#, c-format -msgid "record with incorrect prev-link %X/%X at %X/%X" -msgstr "直前のリンク%1$X/%2$Xが不正なレコードが%3$X/%4$Xにあります" +#: utils/misc/guc.c:2935 +msgid "Sets the server's \"ident\" configuration file." +msgstr "サーバの\"ident\"設定ファイルを設定します。" -#: access/transam/xlog.c:3838 -#, c-format -msgid "record length %u at %X/%X too long" -msgstr "%2$X/%3$Xのレコード長%1$uが大きすぎます" +#: utils/misc/guc.c:2946 +msgid "Writes the postmaster PID to the specified file." +msgstr "postmasterのPIDを指定したファイルに書き込みます。" -#: access/transam/xlog.c:3878 -#, c-format -msgid "there is no contrecord flag in log file %u, segment %u, offset %u" -msgstr "ログファイル%u、セグメント%u、オフセット%uにcontrecordがありません" +#: utils/misc/guc.c:2957 +msgid "Writes temporary statistics files to the specified directory." +msgstr "一時的な統計情報ファイルを指定したディレクトリに書き込みます。" -#: access/transam/xlog.c:3888 -#, c-format -msgid "invalid contrecord length %u in log file %u, segment %u, offset %u" -msgstr "" -"ログファイル%2$u、セグメント%3$u、オフセット%4$uのcontrecordの長さ%1$uが無効" -"です" +#: utils/misc/guc.c:2968 +msgid "List of potential standby names to synchronise with." +msgstr "同期すべきスタンバイ名の可能性がある一覧" -#: access/transam/xlog.c:3978 -#, c-format -msgid "invalid magic number %04X in log file %u, segment %u, offset %u" -msgstr "" -"ログファイル%2$u、セグメント%3$u、オフセット%4$uのマジック番号%1$04Xは無効で" -"す" +#: utils/misc/guc.c:2979 +msgid "Sets default text search configuration." +msgstr "デフォルトのテキスト検索設定を設定します。" -#: access/transam/xlog.c:3985 access/transam/xlog.c:4031 -#, c-format -msgid "invalid info bits %04X in log file %u, segment %u, offset %u" -msgstr "" -"ログファイル %2$u のセグメント %3$u、オフセット %4$u の情報ビット %1$04X は無" -"効です" +#: utils/misc/guc.c:2989 +msgid "Sets the list of allowed SSL ciphers." +msgstr "SSL暗号として許されるリストを設定します。" -#: access/transam/xlog.c:4007 access/transam/xlog.c:4015 -#: access/transam/xlog.c:4022 -msgid "WAL file is from different database system" -msgstr "WAL ファイルは異なるデータベースシステム由来のものです" +#: utils/misc/guc.c:3004 +msgid "Sets the application name to be reported in statistics and logs." +msgstr "統計やログで報告されるアプリケーション名を設定します。" -#: access/transam/xlog.c:4008 -#, c-format -msgid "" -"WAL file database system identifier is %s, pg_control database system " -"identifier is %s." -msgstr "" -"WAL ファイルにおけるデータベースシステムの識別子は %s で、" -"pg_control におけるデータベースシステムの識別子は %s です。" +#: utils/misc/guc.c:3024 +msgid "Sets whether \"\\'\" is allowed in string literals." +msgstr "\"\\'\"いずれかの集合は文字列リテラルで許されています。" -#: access/transam/xlog.c:4016 -msgid "Incorrect XLOG_SEG_SIZE in page header." -msgstr "ページヘッダ内のXLOG_SEG_SIZEが不正です。" +#: utils/misc/guc.c:3034 +msgid "Sets the output format for bytea." +msgstr "bytea の出力フォーマットを設定します。" -#: access/transam/xlog.c:4023 -msgid "Incorrect XLOG_BLCKSZ in page header." -msgstr "ページヘッダ内のXLOG_BLCKSZが不正です。" +#: utils/misc/guc.c:3044 +msgid "Sets the message levels that are sent to the client." +msgstr "クライアントに送信される最小のメッセージレベルを設定します。" -#: access/transam/xlog.c:4039 -#, c-format -msgid "unexpected pageaddr %X/%X in log file %u, segment %u, offset %u" +#: 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 "" -"ログファイル%3$u、セグメント%4$u、オフセット%5$uのページアドレス%1$X/%2$Xは想" -"定外です" +" 各レベルにはそのレベル以下の全てが含まれます。レベルを低くするほど、送信され" +"るメッセージはより少なくなります。 " -#: access/transam/xlog.c:4051 -#, c-format -msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u" -msgstr "" -"ログファイル%2$u、セグメント%3$u、オフセット%4$uの時系列ID%1$uは想定外です" +#: utils/misc/guc.c:3055 +msgid "Enables the planner to use constraints to optimize queries." +msgstr "プランナによる、問い合わせを最適化する制約の使用を有効にします。" -#: access/transam/xlog.c:4069 -#, c-format +#: utils/misc/guc.c:3056 msgid "" -"out-of-sequence timeline ID %u (after %u) in log file %u, segment %u, offset " -"%u" +"Table scans will be skipped if their constraints guarantee that no rows " +"match the query." msgstr "" -"ログファイル%3$u、セグメント%4$u、オフセット%5$uの時系列ID %1$u(%2$uの後)は順" -"序に従っていません" +"制約により、問い合わせに一致する行が存在しないことが保証されている場合、テー" +"ブルのスキャンを行いません。" -#: access/transam/xlog.c:4142 -#, c-format -msgid "syntax error in history file: %s" -msgstr "履歴ファイル内の構文エラー: %s" +#: utils/misc/guc.c:3066 +msgid "Sets the transaction isolation level of each new transaction." +msgstr "新規トランザクションのトランザクション隔離レベルを設定します。" -#: access/transam/xlog.c:4143 -msgid "Expected a numeric timeline ID." -msgstr "数字の時系列IDを想定しました。" +#: utils/misc/guc.c:3076 +msgid "Sets the display format for interval values." +msgstr "時刻インターバル値の表示フォーマットを設定します。" -#: access/transam/xlog.c:4148 -#, c-format -msgid "invalid data in history file: %s" -msgstr "履歴ファイル内の無効なデータ: %s" +#: utils/misc/guc.c:3087 +msgid "Sets the verbosity of logged messages." +msgstr "ログ出力メッセージの詳細度を設定します。" -#: access/transam/xlog.c:4149 -msgid "Timeline IDs must be in increasing sequence." -msgstr "時系列IDは昇順の並びでなければなりません" +#: utils/misc/guc.c:3097 +msgid "Sets the message levels that are logged." +msgstr "ログに出力するメッセージレベルを設定します。" -#: access/transam/xlog.c:4162 -#, c-format -msgid "invalid data in history file \"%s\"" -msgstr "履歴ファイル\"%s\"内に無効なデータがありました" +#: utils/misc/guc.c:3108 +msgid "" +"Causes all statements generating error at or above this level to be logged." +msgstr "このレベル以上のエラーを発生させた全てのSQL文をログに記録します。" -#: access/transam/xlog.c:4163 -msgid "Timeline IDs must be less than child timeline's ID." -msgstr "時系列IDは副時系列IDより小さくなければなりません。" +#: utils/misc/guc.c:3119 +msgid "Sets the type of statements logged." +msgstr "ログ出力する文の種類を設定します。" -#: access/transam/xlog.c:4422 -#, c-format -msgid "could not link file \"%s\" to \"%s\": %m" -msgstr "ファイル\"%s\"から\"%s\"へのリンクができませんでした: %m" +#: utils/misc/guc.c:3129 +msgid "Sets the syslog \"facility\" to be used when syslog enabled." +msgstr "syslogを有効にした場合に使用するsyslog \"facility\"を設定します。" + +#: utils/misc/guc.c:3144 +msgid "Sets the session's behavior for triggers and rewrite rules." +msgstr "トリガと書き換えルールに関するセッションの動作を設定します。" -#: access/transam/xlog.c:4511 -#, c-format -msgid "could not create control file \"%s\": %m" -msgstr "制御ファイル\"%s\"を作成できませんでした: %m" +#: utils/misc/guc.c:3154 +#, +msgid "Sets the current transaction's synchronization level." +msgstr "現在のトランザクションの同期レベルを設定します。" -#: access/transam/xlog.c:4522 access/transam/xlog.c:4747 -#, c-format -msgid "could not write to control file: %m" -msgstr "制御ファイルを書き出せませんでした: %m" +#: utils/misc/guc.c:3164 +msgid "Enables logging of recovery-related debugging information." +msgstr "リカバリ関連のデバッグ情報の記録を行います" -#: access/transam/xlog.c:4528 access/transam/xlog.c:4753 -#, c-format -msgid "could not fsync control file: %m" -msgstr "制御ファイルをfsyncできませんでした: %m" +#: utils/misc/guc.c:3180 +msgid "Collects function-level statistics on database activity." +msgstr "データベースの動作に関して、関数レベルの統計情報を収集します。" -#: access/transam/xlog.c:4533 access/transam/xlog.c:4758 -#, c-format -msgid "could not close control file: %m" -msgstr "制御ファイルをクローズできませんでした: %m" +#: utils/misc/guc.c:3190 +msgid "Set the level of information written to the WAL." +msgstr "WAL に書き出される情報のレベルを設定します。" -#: access/transam/xlog.c:4551 access/transam/xlog.c:4736 -#, c-format -msgid "could not open control file \"%s\": %m" -msgstr "制御ファイル\"%s\"をオープンできませんでした: %m" +#: utils/misc/guc.c:3200 +msgid "Selects the method used for forcing WAL updates to disk." +msgstr "強制的にWALの更新をディスクに吐き出すための方法を選択します。" -#: access/transam/xlog.c:4557 -#, c-format -msgid "could not read from control file: %m" -msgstr "制御ファイルを読み取れませんでした: %m" +#: utils/misc/guc.c:3210 +msgid "Sets how binary values are to be encoded in XML." +msgstr "どのようにバイナリ値をXMLに符号化するかを設定します。" -#: access/transam/xlog.c:4571 -#, c-format +#: utils/misc/guc.c:3220 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)." +"Sets whether XML data in implicit parsing and serialization operations is to " +"be considered as documents or content fragments." msgstr "" -"データベースクラスタはPG_CONTROL_VERSION %d (0x%08x)で初期化されましたが、" -"サーバはPG_CONTROL_VERSION %d (0x%08x)でコンパイルされています。" +"暗黙的な解析およびシリアライゼーション操作においてXMLデータを文書とみなすか断" +"片とみなすかを設定します。" -#: access/transam/xlog.c:4575 +#: utils/misc/guc.c:4062 +#, c-format msgid "" -"This could be a problem of mismatched byte ordering. It looks like you need " -"to initdb." +"%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 "" -"これはバイトオーダの不整合問題になり得ます。initdbしなければならない\n" -"ようです。" +"%sはサーバ設定ファイルの場所が認識できません。\n" +"--config-fileまたは-Dオプションを指定する、あるいはPGDATA環境変数を設\n" +"定する必要があります。\n" + +#: utils/misc/guc.c:4081 +#, c-format +msgid "%s cannot access the server configuration file \"%s\": %s\n" +msgstr "%sはサーバ設定ファイル\"%s\"にアクセスできません: %s\n" -#: access/transam/xlog.c:4580 +#: utils/misc/guc.c:4101 #, c-format msgid "" -"The database cluster was initialized with PG_CONTROL_VERSION %d, but the " -"server was compiled with PG_CONTROL_VERSION %d." +"%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 "" -"データベースクラスタはPG_CONTROL_VERSION %d で初期化されましたが、サーバは " -"PG_CONTROL_VERSION %d でコンパイルされています。" - -#: access/transam/xlog.c:4583 access/transam/xlog.c:4607 -#: access/transam/xlog.c:4614 access/transam/xlog.c:4619 -msgid "It looks like you need to initdb." -msgstr "initdbが必要のようです" - -#: access/transam/xlog.c:4594 -msgid "incorrect checksum in control file" -msgstr "制御ファイル内のチェックサムが不正です" +"%sはデータベースシステムデータの場所を認識できません。\n" +"\"%s\"内で\"data_directory\"を指定する、-Dオプションを指定する、PGDATA環\n" +"境変数で設定することができます。\n" -#: access/transam/xlog.c:4604 +#: utils/misc/guc.c:4132 #, c-format msgid "" -"The database cluster was initialized with CATALOG_VERSION_NO %d, but the " -"server was compiled with CATALOG_VERSION_NO %d." +"%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 "" -"データベースクラスタは CATALOG_VERSION_NO %d で初期化されましたが、サーバは " -"CATALOG_VERSION_NO %d でコンパイルされています。" +"%sは\"hba\"設定ファイルの場所を認識できません。\n" +"\"%s\"内で\"hba_directory\"を指定する、-Dオプションを指定する、PGDATA環\n" +"境変数で設定することができます。\n" -#: access/transam/xlog.c:4611 +#: utils/misc/guc.c:4155 #, c-format msgid "" -"The database cluster was initialized with MAXALIGN %d, but the server was " -"compiled with MAXALIGN %d." +"%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 "" -"データベースクラスタは MAXALIGN %d で初期化されましたが、サーバは MAXALIGN %" -"d でコンパイルされています。" +"%sは\"ident\"設定ファイルの場所を認識できません。\n" +"\"%s\"内で\"ident_directory\"を指定する、-Dオプションを指定する、PGDATA環\n" +"境変数で設定することができます。\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\"です。" -#: access/transam/xlog.c:4618 +#: utils/misc/guc.c:4813 msgid "" -"The database cluster appears to use a different floating-point number format " -"than the server executable." -msgstr "" -"データベースクラスタはサーバ実行ファイルと異なる浮動小数点書式を使用している" -"ようです。" +"Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"." +msgstr "このパラメータの有効単位は\"ms\"、\"s\"、\"min\"、\"h\"、\"d\"です。" -#: access/transam/xlog.c:4623 +#: 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 "" -"The database cluster was initialized with BLCKSZ %d, but the server was " -"compiled with BLCKSZ %d." -msgstr "" -"データベースクラスタは BLCKSZ %d で初期化されましたが、サーバは BLCKSZ %d で" -"コンパイルされています。" +msgid "unrecognized configuration parameter \"%s\"" +msgstr "設定パラメータ\"%s\"は不明です" -#: access/transam/xlog.c:4626 access/transam/xlog.c:4633 -#: access/transam/xlog.c:4640 access/transam/xlog.c:4647 -#: access/transam/xlog.c:4654 access/transam/xlog.c:4661 -#: access/transam/xlog.c:4668 access/transam/xlog.c:4676 -#: access/transam/xlog.c:4683 access/transam/xlog.c:4692 -#: access/transam/xlog.c:4699 access/transam/xlog.c:4708 -#: access/transam/xlog.c:4715 -msgid "It looks like you need to recompile or initdb." -msgstr "再コンパイルもしくは initdb が必要そうです" +#: utils/misc/guc.c:5129 +#, c-format +msgid "parameter \"%s\" cannot be changed" +msgstr "パラメータ\"%s\"を変更できません" -#: access/transam/xlog.c:4630 +#: 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 "" -"The database cluster was initialized with RELSEG_SIZE %d, but the server was " -"compiled with RELSEG_SIZE %d." -msgstr "" -"データベースクラスタは RELSEG_SIZE %d で初期化されましたが、サーバは " -"RELSEG_SIZE %d でコンパイルされています。" +msgid "parameter \"%s\" cannot be changed without restarting the server" +msgstr "パラメータ \"%s\" を変更するにはサーバーの再起動が必要です" -#: access/transam/xlog.c:4637 +#: utils/misc/guc.c:5168 #, 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 でコンパイルされています。" +msgid "parameter \"%s\" cannot be changed now" +msgstr "現在パラメータ\"%s\"を変更できません" -#: access/transam/xlog.c:4644 +#: utils/misc/guc.c:5199 #, c-format -msgid "" -"The database cluster was initialized with XLOG_SEG_SIZE %d, but the server " -"was compiled with XLOG_SEG_SIZE %d." -msgstr "" -"データベースクラスタは XLOG_SEG_SIZE %d で初期化されましたが、サーバは " -"XLOG_SEG_SIZE %d でコンパイルされています。" +msgid "parameter \"%s\" cannot be set after connection start" +msgstr "接続開始後にパラメータ\"%s\"を変更できません" -#: access/transam/xlog.c:4651 +#: utils/misc/guc.c:5209 utils/misc/guc.c:7917 #, c-format -msgid "" -"The database cluster was initialized with NAMEDATALEN %d, but the server was " -"compiled with NAMEDATALEN %d." -msgstr "" -"データベースクラスタは NAMEDATALEN %d で初期化されましたが、サーバは " -"NAMEDATALEN %d でコンパイルされています。" +msgid "permission denied to set parameter \"%s\"" +msgstr "パラメータ\"%s\"を設定する権限がありません" -#: access/transam/xlog.c:4658 +#: utils/misc/guc.c:5247 #, 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 でコンパイルされています。" +msgid "cannot set parameter \"%s\" within security-definer function" +msgstr "セキュリティー定義用関数内でパラメーター \"%s\" を設定できません" -#: access/transam/xlog.c:4665 +#: utils/misc/guc.c:5393 utils/misc/guc.c:5707 utils/misc/guc.c:8081 +#: utils/misc/guc.c:8115 #, 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 でコンパイルされています。" +msgid "invalid value for parameter \"%s\": \"%s\"" +msgstr "パラメータ\"%s\"の値が無効です: \"%s\"" -#: access/transam/xlog.c:4674 -msgid "" -"The database cluster was initialized without HAVE_INT64_TIMESTAMP but the " -"server was compiled with HAVE_INT64_TIMESTAMP." -msgstr "" -"データベースクラスタは HAVE_INT64_TIMESTAMP なしで初期化されましたが、サーバ" -"は HAVE_INT64_TIMESTAMP でコンパイルされています。" +#: utils/misc/guc.c:5402 +#, c-format +msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)" +msgstr "%dはパラメータ\"%s\"の有効範囲を超えています(%d .. %d)" -#: access/transam/xlog.c:4681 -msgid "" -"The database cluster was initialized with HAVE_INT64_TIMESTAMP but the " -"server was compiled without HAVE_INT64_TIMESTAMP." -msgstr "" -"データベースクラスタは HAVE_INT64_TIMESTAMP で初期化されましたが、サーバは " -"HAVE_INT64_TIMESTAMP なしでコンパイルされています。" +#: utils/misc/guc.c:5488 +#, c-format +msgid "parameter \"%s\" requires a numeric value" +msgstr "パラメータ\"%s\"は数値が必要です" -#: access/transam/xlog.c:4690 -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 付きでコンパイルされています。" +#: utils/misc/guc.c:5496 +#, c-format +msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)" +msgstr "%gはパラメータ\"%s\"の有効範囲を超えています(%g .. %g)" -#: access/transam/xlog.c:4697 -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 なしでコンパイルされています。" +#: 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\"を確認するにはスーパーユーザでなければなりません" -#: access/transam/xlog.c:4706 -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 付きでコンパイルされています。" +#: utils/misc/guc.c:5979 +#, c-format +msgid "SET %s takes only one argument" +msgstr "SET %sは1つの引数のみを取ります" -#: access/transam/xlog.c:4713 -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 なしでコンパイルされています。" +#: utils/misc/guc.c:6212 +msgid "SET requires parameter name" +msgstr "SETにはパラメータ名が必要です" -#: access/transam/xlog.c:4956 +#: utils/misc/guc.c:6327 #, c-format -msgid "could not write bootstrap transaction log file: %m" -msgstr "" -"ブートストラップ・トランザクションのログファイルを書き出せませんでした: %m" +msgid "attempt to redefine parameter \"%s\"" +msgstr "パラメータ\"%s\"を再定義しようとしています" -#: access/transam/xlog.c:4962 +#: utils/misc/guc.c:7618 #, c-format -msgid "could not fsync bootstrap transaction log file: %m" -msgstr "" -"ブートストラップ・トランザクションログファイルをfsyncできませんでした: %m" +msgid "could not parse setting for parameter \"%s\"" +msgstr "パラメータ\"%s\"の設定を解析できません" -#: access/transam/xlog.c:4967 +#: utils/misc/guc.c:7979 utils/misc/guc.c:8013 #, c-format -msgid "could not close bootstrap transaction log file: %m" -msgstr "" -"ブートストラップ・トランザクションログファイルをクローズできませんでした: %m" +msgid "invalid value for parameter \"%s\": %d" +msgstr "パラメータ\"%s\"の値が無効です: %d" -#: access/transam/xlog.c:5129 +#: utils/misc/guc.c:8047 #, c-format -msgid "could not open recovery command file \"%s\": %m" -msgstr "リカバリコマンドファイル \"%s\" をオープンできませんでした: %m" +msgid "invalid value for parameter \"%s\": %g" +msgstr "パラメータ\"%s\"の値が無効です: %g" -#: access/transam/xlog.c:5153 +#: utils/misc/guc.c:8175 commands/variable.c:160 #, c-format -msgid "restore_command = '%s'" -msgstr "restore_command = '%s'" +msgid "Unrecognized key word: \"%s\"." +msgstr "不明なキーワードです: \"%s\"" -#: access/transam/xlog.c:5160 -#, c-format -msgid "recovery_end_command = '%s'" -msgstr "recovery_end_command = '%s'" +#: utils/misc/guc.c:8237 +msgid "" +"\"temp_buffers\" cannot be changed after any temp tables have been accessed " +"in the session." +msgstr "" +"当該セッションでいずれかの一時テーブルがアクセスされた後は \"temp_buffers\"" +"を変更できません" -#: access/transam/xlog.c:5167 -msgid "archive_cleanup_command = '%s'" -msgstr "archive_cleanup_command = '%s'" +#: utils/misc/guc.c:8249 +msgid "SET AUTOCOMMIT TO OFF is no longer supported" +msgstr "SET AUTOCOMMIT TO OFFはもうサポートされていません" + +#: utils/misc/guc.c:8324 +msgid "assertion checking is not supported by this build" +msgstr "このインストレーションにはアサート検査は組み込まれていません" + +#: utils/misc/guc.c:8337 +msgid "Bonjour is not supported by this build" +msgstr "このビルドでは bonjour はサポートされていません" + +#: utils/misc/guc.c:8350 +msgid "SSL is not supported by this build" +msgstr "このインストレーションではSSLはサポートされていません" + +#: utils/misc/guc.c:8362 +#, +msgid "Cannot enable parameter when \"log_statement_stats\" is true." +msgstr "\"log_statement_stats\"が真の場合、パラメータを有効にできません" + +#: 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\"" +"のいずれかが真の場合は \"log_statement_stats\" を有効にできません" -#: access/transam/xlog.c:5181 +#: guc-file.l:274 #, c-format -msgid "recovery_target_timeline is not a valid number: \"%s\"" -msgstr "recovery_target_timelineが無効な番号です: \"%s\"" +msgid "parameter \"%s\" removed from configuration file, reset to default" +msgstr "" +"パラメーター \"%s\" が設定ファイルから削除されました。デフォルト値に戻りま" +"す。" -#: access/transam/xlog.c:5186 +#: guc-file.l:333 #, c-format -msgid "recovery_target_timeline = %u" -msgstr "recovery_target_timeline = %u" - -#: access/transam/xlog.c:5189 -msgid "recovery_target_timeline = latest" -msgstr "recovery_target_timeline = latest" +msgid "parameter \"%s\" changed to \"%s\"" +msgstr "パラメータ \"%s\" は \"%s\" に変更されました" -#: access/transam/xlog.c:5197 +#: guc-file.l:374 #, c-format -msgid "recovery_target_xid is not a valid number: \"%s\"" -msgstr "recovery_target_xidが無効な番号です: \"%s\"" +msgid "" +"could not open configuration file \"%s\": maximum nesting depth exceeded" +msgstr "" +"設定ファイル\"%s\"をオープンできませんでした: 入れ子長が上限を超えています" -#: access/transam/xlog.c:5200 +#: guc-file.l:589 #, c-format -msgid "recovery_target_xid = %u" -msgstr "recovery_target_xid = %u" +msgid "syntax error in file \"%s\" line %u, near end of line" +msgstr "ファイル\"%s\"の行%uの行末近辺でで構文エラーがありました" -#: access/transam/xlog.c:5223 +#: guc-file.l:594 #, c-format -msgid "recovery_target_time = '%s'" -msgstr "recovery_target_time = '%s'" - -#: access/transam/xlog.c:5234 -msgid "parameter \"recovery_target_inclusive\" requires a Boolean value" -msgstr "パラメータ \"recovery_target_inclusive\" にはブール値を指定します" +msgid "syntax error in file \"%s\" line %u, near token \"%s\"" +msgstr "ファイル\"%s\"の行%uのトークン\"%s\"近辺で構文エラーがありました" -#: access/transam/xlog.c:5236 +#: foreign/foreign.c:198 #, c-format -msgid "recovery_target_inclusive = %s" -msgstr "recovery_target_inclusive = %s" +msgid "user mapping not found for \"%s\"" +msgstr "\"%s\" に対するユーザ対応表が見つかりません" -#: access/transam/xlog.c:5243 -msgid "parameter \"standby_mode\" requires a Boolean value" -msgstr "パラメータ \"standby_mode\" にはブール値が必要です" +#: foreign/foreign.c:321 +#, c-format +msgid "foreign-data wrapper \"%s\" has no handler" +msgstr "外部データラッパー \"%s\" にはハンドラがありません" -#: access/transam/xlog.c:5245 +#: foreign/foreign.c:489 #, c-format -msgid "standby_mode = '%s'" -msgstr "standby_mode = '%s'" +msgid "invalid option \"%s\"" +msgstr "\"%s\" オプションは無効です" -#: access/transam/xlog.c:5251 +#: foreign/foreign.c:490 #, c-format -msgid "primary_conninfo = '%s'" -msgstr "primary_conninfo = '%s'" +msgid "Valid options in this context are: %s" +msgstr "この文脈で有効なオプション:%s" -#: access/transam/xlog.c:5258 -msgid "trigger_file = '%s'" -msgstr "trigger_file = '%s'" +#: foreign/foreign.c:515 commands/foreigncmds.c:231 commands/foreigncmds.c:552 +#: commands/foreigncmds.c:703 +#, c-format +msgid "foreign-data wrapper \"%s\" does not exist" +msgstr "外部データラッパー \"%s\" は存在しません" -#: access/transam/xlog.c:5263 +#: foreign/foreign.c:535 commands/foreigncmds.c:274 commands/foreigncmds.c:879 +#: commands/foreigncmds.c:970 commands/foreigncmds.c:1255 #, c-format -msgid "unrecognized recovery parameter \"%s\"" -msgstr "リカバリパラメータ \"%s\"が不明です" +msgid "server \"%s\" does not exist" +msgstr "サーバー \"%s\" は存在しません" -#: access/transam/xlog.c:5271 +#: port/pg_shmem.c:147 port/sysv_shmem.c:147 #, c-format -msgid "syntax error in recovery command file: %s" -msgstr "リカバリコマンドファイル内の構文エラー: %s" +msgid "could not create shared memory segment: %m" +msgstr "共有メモリセグメントを作成できません: %m" -#: access/transam/xlog.c:5273 -msgid "Lines should have the format parameter = 'value'." -msgstr "行は、parameter = 'value'という書式でなければなりません。" +#: port/pg_shmem.c:148 port/sysv_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)でした。" -#: access/transam/xlog.c:5282 +#: port/pg_shmem.c:152 port/sysv_shmem.c:152 +#, c-format msgid "" -"recovery command file \"%s\" specified neither primary_conninfo nor " -"restore_command" +"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 "" -"リカバリコマンドファイル \"%s\" で primary_conninfo と restore_command のいずれも指定されていません" +"通常このエラーは、PostgreSQL が要求した共有メモリセグメントがカーネルの" +"SHMMAX パラメータを超えた場合に発生します。この要求サイズを減らすことも" +"できますし、SHMMAX を増やしてカーネルを再構築することもできます。要求" +"サイズ(現在 %lu バイト)を減らしたい場合は PostgreSQL の shared_buffers " +"もしくは max_connections を減らしてください。\n" +"この要求サイズがすでに小さい場合、これがカーネルの SHMMIN より小さく" +"なってしまっているかもしれません。そのような場合は要求サイズを大きくするか、" +" SHMMIN をそれにふさわしい値に再構成してください。\n" +"共有メモリの設定に関する詳細情報は、PostgreSQL のドキュメントに記載されて" +"います。" -#: access/transam/xlog.c:5284 +#: port/pg_shmem.c:165 port/sysv_shmem.c:165 +#, c-format msgid "" -"The database server will regularly poll the pg_xlog subdirectory to check " -"for files placed there." +"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 "" -"データベースサーバは通常 pg_xlog サブディレクトリを poll して(定期的に監視して)、" -"そこにファイルが置かれたかどうかを調べます。" +"通常このエラーは、PostgreSQL が要求する共有メモリのサイズが利用可能な" +"メモリやスワップ容量を超えたか、もしくはカーネルの SHMALL パラメータを" +"超えた場合に発生します。対処としては要求サイズを減らすか、またはカーネルの" +" SHMALL を増やします。要求サイズ(現在 %lu バイト)を減らすには、" +"PostgreSQL の shared_buffers または max_connections を減らすことで共有" +"メモリのサイズを減らしてください。\n" +"共有メモリの設定に関する詳細情報は、PostgreSQL のドキュメントに記載されて" +"います。" -#: access/transam/xlog.c:5290 +#: port/pg_shmem.c:176 port/sysv_shmem.c:176 +#, c-format msgid "" -"recovery command file \"%s\" must specify restore_command when standby mode " -"is not enabled" +"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 "" -"スタンバイモードが有効でない場合、リカバリコマンドファイル \"%s\" で restore_command を指定しなければなりません" +"このエラーが起こったからといって、別にディスクが足りなくなったわけでは" +"ありません。この原因のひとつは共有メモリの識別子を使いきった場合ですが、" +"この場合はカーネルの SHMMNI を増やす必要ああります。もうひとつの可能性は" +"システム全体の共有メモリを使いきった場合です。共有メモリの制限値を増やせない" +"場合は、PostgreSQL の shared_buffers または max_connections を減らすことで、" +"要求する共有メモリのサイズ(現在 %lu バイト)を減らしてください。\n" +"共有メモリの設定に関する詳細情報は、PostgreSQL のドキュメントに記載されて" +"います。" -#: access/transam/xlog.c:5310 +#: port/pg_shmem.c:439 port/sysv_shmem.c:439 #, c-format -msgid "recovery target timeline %u does not exist" -msgstr "リカバリ対象時系列%uが存在しません" +msgid "could not stat data directory \"%s\": %m" +msgstr "データディレクトリ\"%s\"をstatできませんでした: %m" -#: access/transam/xlog.c:5435 -msgid "archive recovery complete" -msgstr "アーカイブリカバリが完了しました" +#: port/win32/signal.c:189 +#, c-format +msgid "could not create signal listener pipe for pid %d: error code %d" +msgstr "" +"pid %dに対するシグナル監視パイプを作成できませんでした: エラーコード %d" -#: access/transam/xlog.c:5525 +#: port/win32/signal.c:269 port/win32/signal.c:301 #, c-format -msgid "recovery stopping after commit of transaction %u, time %s" -msgstr "リカバリがトランザクション%uのコミット、時刻%sの後に停止しました" +msgid "could not create signal listener pipe: error code %d; retrying\n" +msgstr "シグナル監視パイプを作成できませんでした: エラーコード %d: 再実行中\n" -#: access/transam/xlog.c:5530 +#: port/win32/signal.c:312 #, c-format -msgid "recovery stopping before commit of transaction %u, time %s" -msgstr "リカバリがトランザクション%uのコミット、時刻%sの前に停止しました" +msgid "could not create signal dispatch thread: error code %d\n" +msgstr "" +"シグナルディスパッチ用スレッドを作成できませんでした: エラーコード %d\n" -#: access/transam/xlog.c:5538 +#: port/win32/security.c:43 #, c-format -msgid "recovery stopping after abort of transaction %u, time %s" -msgstr "リカバリがトランザクション%uのアボート、時刻%sの後に停止しました" +msgid "could not open process token: error code %d\n" +msgstr "プロセストークンをオープンできませんでした: エラーコード %d\n" -#: access/transam/xlog.c:5543 +#: port/win32/security.c:63 #, c-format -msgid "recovery stopping before abort of transaction %u, time %s" -msgstr "リカバリがトランザクション%uのアボート、時刻%sの前に停止しました" +msgid "could not get SID for Administrators group: error code %d\n" +msgstr "管理者グループのSIDを入手できませんでした: エラーコード %d\n" -#: access/transam/xlog.c:5626 -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)より小さいので、ホットスタンバイは" -"利用できません" +#: port/win32/security.c:72 +#, c-format +msgid "could not get SID for PowerUsers group: error code %d\n" +msgstr "PowerUsersグループのSIDを入手できませんでした: エラーコード %d\n" -#: access/transam/xlog.c:5648 -msgid "WAL was generated with wal_level=minimal, data may be missing" -msgstr "wal_level=minimal で WAL が生成されました。データがない場合があります。" +#: port/win32/crashdump.c:108 +msgid "could not load dbghelp.dll, cannot write crashdump\n" +msgstr "dbghelp.dll をロードできず、クラッシュダンプも書き込めません\n" -#: access/transam/xlog.c:5649 +#: port/win32/crashdump.c:116 +#, msgid "" -"This happens if you temporarily set wal_level=minimal without taking a new " -"base backup." -msgstr "" -"これが起こるのは、新しいベースバックアップを行わないで、一時的に wal_level=minimal にした場合です。" +"could not load required functions in dbghelp.dll, cannot write crashdump\n" +msgstr "dbghelp.dll で要求された関数をロードできませんでした。" +"クラッシュダンプを書き込めません\n" -#: access/transam/xlog.c:5660 -msgid "" -"hot standby is not possible because wal_level was not set to \"hot_standby\" " -"on the master server" -msgstr "" -"マスターサーバで wal_level が \"hot_standby\" になっていなかったので、" -"ホットスタンバイを使用できません" +#: port/win32/crashdump.c:147 +#, c-format +msgid "could not open crash dump file %s for writing: error code %u\n" +msgstr "クラッシュダンプファイル %s を書き込み用にオープンできませんでした:" +"エラーコード %u\n" -#: access/transam/xlog.c:5661 -msgid "" -"Either set wal_level to \"hot_standby\" on the master, or turn off " -"hot_standby here." -msgstr "" -"マスターで wal_level を \"hot_standby\" にするか、またはここでホットスタンバイを無効にしてください。" +#: port/win32/crashdump.c:154 +#, c-format +msgid "wrote crash dump to %s\n" +msgstr "クラッシュダンプを %s に書き込みました\n" -#: access/transam/xlog.c:5708 -msgid "control file contains invalid data" -msgstr "制御ファイル内に無効なデータがあります" +#: port/win32/crashdump.c:156 +#, c-format +msgid "could not write crash dump to %s: error code %08x\n" +msgstr "クラッシュダンプを %s に書き込めませんでした:エラーコード %08x\n" -#: access/transam/xlog.c:5712 +#: port/win32_sema.c:94 #, c-format -msgid "database system was shut down at %s" -msgstr "データベースシステムは %s にシャットダウンしました" +msgid "could not create semaphore: error code %d" +msgstr "セマフォを作成できませんでした: エラーコード %d" -#: access/transam/xlog.c:5716 -msgid "database system was shut down in recovery at %s" -msgstr "データベースシステムがリカバリ中に %s でシャットダウンしました" +#: port/win32_sema.c:161 +#, c-format +msgid "could not lock semaphore: error code %d" +msgstr "セマフォをロックできませんでした: エラーコード %d" -#: access/transam/xlog.c:5720 +#: port/win32_sema.c:174 #, c-format -msgid "database system shutdown was interrupted; last known up at %s" -msgstr "" -"データベースシステムのシャットダウンが中断されました:今回は %s までは到達しま" -"した" +msgid "could not unlock semaphore: error code %d" +msgstr "セマフォのロックを解除できませんでした: エラーコード %d" + +#: port/win32_sema.c:203 +#, c-format +msgid "could not try-lock semaphore: error code %d" +msgstr "セマフォのロックを試みることができませんでした: エラーコード %d" -#: access/transam/xlog.c:5724 +#: port/sysv_sema.c:114 port/pg_sema.c:114 #, c-format -msgid "database system was interrupted while in recovery at %s" -msgstr "データベースシステムはリカバリ中に %s で中断されました" +msgid "could not create semaphores: %m" +msgstr "セマフォを作成できませんでした: %m" + +#: 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)です。" -#: access/transam/xlog.c:5726 +#: port/sysv_sema.c:119 port/pg_sema.c:119 +#, msgid "" -"This probably means that some data is corrupted and you will have to use the " -"last backup for recovery." +"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 "" -"これはおそらくデータ破損の可能性があり、リカバリのために直前のバックアップを" -"使用しなければならないことを意味します。" +"このエラーが起こったからといって、別にディスクが足りなくなったわけでは" +"ありません。この原因はセマフォセットの最大数(SEMMNI)に達したか、または" +"システム全体のセマフォ数(SEMMNS)を使いきった場合です。対処としては、" +"対応するカーネルのパラメータを増やす必要があります。もしくは PostgreSQL" +"の max_connections を減らすことで、消費するセマフォの数を減らしてください。\n" +"共有メモリの設定に関する詳細情報は、PostgreSQL のドキュメントに記載されて" +"います。" -#: access/transam/xlog.c:5730 +#: port/sysv_sema.c:146 port/pg_sema.c:146 #, c-format -msgid "database system was interrupted while in recovery at log time %s" -msgstr "データベースシステムはログ時間%sにリカバリ中に中断されました" - -#: access/transam/xlog.c:5732 msgid "" -"If this has occurred more than once some data might be corrupted and you " -"might need to choose an earlier recovery target." +"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まで増やす必要があります。\n" +"詳細はPostgreSQLのドキュメントを調べてください。" -#: access/transam/xlog.c:5736 +#: port/win32_shmem.c:168 port/win32_shmem.c:203 port/win32_shmem.c:224 #, c-format -msgid "database system was interrupted; last known up at %s" -msgstr "データベースシステムは中断されました: 今回は %s までは到達しています" +msgid "could not create shared memory segment: %lu" +msgstr "共有メモリセグメントを作成できません: %lu" -#: access/transam/xlog.c:5785 +#: port/win32_shmem.c:169 #, c-format -msgid "requested timeline %u is not a child of database system timeline %u" -msgstr "要求された時系列%uはデータベースシステムの時系列%uの系列ではありません" +msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)." +msgstr "失敗したシステムコールはCreateFileMapping(size=%lu, name=%s)でした。" -#: access/transam/xlog.c:5803 -msgid "entering standby mode" -msgstr "スタンバイモードに入ります" +#: port/win32_shmem.c:193 +msgid "pre-existing shared memory block is still in use" +msgstr "既存の共有メモリブロックはまだ使用中です" -#: access/transam/xlog.c:5806 -msgid "starting point-in-time recovery to XID %u" -msgstr "XID %u に対してポイントインタイムリカバリを開始しています" +#: port/win32_shmem.c:194 +msgid "" +"Check if there are any old server processes still running, and terminate " +"them." +msgstr "古いサーバプロセスが実行中でないか検査し、それを終了させてください" -#: access/transam/xlog.c:5810 -msgid "starting point-in-time recovery to %s" -msgstr "%s に対してポイントインタイムリカバリを開始しています" +#: port/win32_shmem.c:204 +msgid "Failed system call was DuplicateHandle." +msgstr "失敗したシステムコールはMapViewOfFileExでした。" -#: access/transam/xlog.c:5814 -msgid "starting archive recovery" -msgstr "アーカイブリカバリを開始しています" +#: port/win32_shmem.c:225 +msgid "Failed system call was MapViewOfFileEx." +msgstr "失敗したシステムコールはMapViewOfFileExでした。" + +#: commands/vacuum.c:419 +msgid "oldest xmin is far in the past" +msgstr "最も古いxminが古すぎます" + +#: commands/vacuum.c:420 +msgid "Close open transactions soon to avoid wraparound problems." +msgstr "" +"周回問題を回避するためすぐにオープンしているトランザクションをクローズしてく" +"ださい。" + +#: commands/vacuum.c:809 +msgid "some databases have not been vacuumed in over 2 billion transactions" +msgstr "" +"データベースの一部は20億トランザクション以上の間にバキュームされていませんで" +"した" + +#: commands/vacuum.c:810 +msgid "You might have already suffered transaction-wraparound data loss." +msgstr "トランザクションの周回によるデータ損失が発生している可能性があります" -#: access/transam/xlog.c:5827 access/transam/xlog.c:5852 +#: commands/vacuum.c:917 #, c-format -msgid "checkpoint record is at %X/%X" -msgstr "%X/%Xにおけるチェックポイントレコードです" +msgid "skipping vacuum of \"%s\" --- lock not available" +msgstr "\"%s\" のバキュームをスキップしています -- ロックを利用できません" -#: access/transam/xlog.c:5834 -msgid "could not locate required checkpoint record" -msgstr "要求チェックポイント位置へ移動できませんでした" +#: commands/vacuum.c:943 +#, c-format +msgid "skipping \"%s\" --- only superuser can vacuum it" +msgstr "\"%s\" をスキップしています --- スーパーユーザのみがバキュームできます" -#: access/transam/xlog.c:5835 +#: commands/vacuum.c:947 #, c-format -msgid "" -"If you are not restoring from a backup, try removing the file \"%s/" -"backup_label\"." +msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" msgstr "" -"バックアップの順序を変更していない場合は、ファイル \"%s/backup_label\" を削除" -"してください" +"\"%s\" をスキップしています --- スーパーユーザもしくはデータベースの所有者の" +"みがバキュームできます" -#: access/transam/xlog.c:5862 access/transam/xlog.c:5877 -msgid "could not locate a valid checkpoint record" -msgstr "有効なチェックポイントに移動できませんでした" +#: commands/vacuum.c:951 +#, c-format +msgid "skipping \"%s\" --- only table or database owner can vacuum it" +msgstr "" +"\"%s\"を飛ばしています --- テーブルまたはデータベースの所有者のみがバキューム" +"することができます" -#: access/transam/xlog.c:5871 +#: commands/vacuum.c:968 #, c-format -msgid "using previous checkpoint record at %X/%X" -msgstr "%X/%Xにおけるチェックポイントレコードの前を使用しています" +msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables" +msgstr "\"%s\"をスキップしています --- テーブルではないものや、" +"特別なシステムテーブルはバキュームできません" -#: access/transam/xlog.c:5886 +#: 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 "redo record is at %X/%X; shutdown %s" -msgstr "REDOレコードは%X/%X シャットダウン %s" +msgid "operator family \"%s\" does not exist for access method \"%s\"" +msgstr "アクセスメソッド\"%2$s\"用の演算子族\"%1$s\"は存在しません" -#: access/transam/xlog.c:5890 +#: commands/opclasscmds.c:212 commands/opclasscmds.c:1568 +#: commands/indexcmds.c:1134 commands/indexcmds.c:1142 #, c-format -msgid "next transaction ID: %u/%u; next OID: %u" -msgstr "次のトランザクションID: %u/%u 次のOID: %u" +msgid "operator class \"%s\" does not exist for access method \"%s\"" +msgstr "アクセスメソッド\"%2$s\"用の演算子クラス\"%1$s\"は存在しません" -#: access/transam/xlog.c:5894 +#: commands/opclasscmds.c:271 #, c-format -msgid "next MultiXactId: %u; next MultiXactOffset: %u" -msgstr "次のMultiXactId: %u 次のMultiXactOffset: %u" +msgid "operator family \"%s\" for access method \"%s\" already exists" +msgstr "アクセスメソッド\"%2$s\"の演算子族\"%1$s\"はすでに存在します" -#: access/transam/xlog.c:5897 +#: commands/opclasscmds.c:369 commands/opclasscmds.c:790 +#: commands/opclasscmds.c:2203 commands/indexcmds.c:304 #, c-format -msgid "oldest unfrozen transaction ID: %u, in database %u" -msgstr "データベース %2$u 内で最古の未凍結トランザクション ID: %1$u" +msgid "access method \"%s\" does not exist" +msgstr "アクセスメソッド\"%s\"は存在しません" -#: access/transam/xlog.c:5901 -msgid "invalid next transaction ID" -msgstr "次のトランザクションIDが無効です" +#: commands/opclasscmds.c:408 +msgid "must be superuser to create an operator class" +msgstr "演算子クラスを作成するにはスーパーユーザでなければなりません" -#: access/transam/xlog.c:5920 -msgid "invalid redo in checkpoint record" -msgstr "チェックポイントレコード内のREDOが無効です" +#: 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まででなければなりません" -#: access/transam/xlog.c:5931 -msgid "invalid redo record in shutdown checkpoint" -msgstr "シャットダウン・チェックポイントにおけるREDOレコードが無効です" +#: 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まででなければなりません" -#: access/transam/xlog.c:5961 -msgid "" -"database system was not properly shut down; automatic recovery in progress" -msgstr "" -"データベースシステムは適切にシャットダウンされませんでした。自動リカバリを" -"行っています" +#: commands/opclasscmds.c:561 +msgid "storage type specified more than once" +msgstr "格納型が複数指定されました" -#: access/transam/xlog.c:6026 -msgid "initializing for hot standby" -msgstr "ホットスタンバイのための初期化を行っています" +#: commands/opclasscmds.c:589 +#, c-format +msgid "" +"storage type cannot be different from data type for access method \"%s\"" +msgstr "アクセスメソッド\"%s\"用のデータ型と異なる格納型を使用できません" -#: access/transam/xlog.c:6153 +#: commands/opclasscmds.c:605 #, c-format -msgid "redo starts at %X/%X" -msgstr "%X/%XのREDOを開始します" +msgid "operator class \"%s\" for access method \"%s\" already exists" +msgstr "アクセスメソッド\"%2$s\"の演算子クラス\"%1$s\"はすでに存在します" -#: access/transam/xlog.c:6252 +#: commands/opclasscmds.c:633 #, c-format -msgid "redo done at %X/%X" -msgstr "%X/%XのREDOが終わりました" +msgid "could not make operator class \"%s\" be default for type %s" +msgstr "演算子クラス\"%s\"を型%sのデフォルトにすることができませんでした" -#: access/transam/xlog.c:6257 access/transam/xlog.c:7722 +#: commands/opclasscmds.c:636 #, c-format -msgid "last completed transaction was at log time %s" -msgstr "最後に完了したトランザクションはログ時刻%sでした" +msgid "Operator class \"%s\" already is the default." +msgstr "演算子クラス\"%s\"はすでにデフォルトです。" -#: access/transam/xlog.c:6265 -msgid "redo is not required" -msgstr "REDOは必要ありません" +#: commands/opclasscmds.c:760 +msgid "must be superuser to create an operator family" +msgstr "演算子族を作成するにはスーパーユーザでなければなりません" -#: access/transam/xlog.c:6305 -msgid "requested recovery stop point is before consistent recovery point" -msgstr "" -"要求されたリカバリ停止ポイントが、対応するリカバリポイントより前にあります" +#: commands/opclasscmds.c:816 +msgid "must be superuser to alter an operator family" +msgstr "演算子族を変更するにはスーパーユーザでなければなりません" -#: access/transam/xlog.c:6308 -msgid "WAL ends before consistent recovery point" -msgstr "WAL が対応するリカバリポイントより前で終了します" +#: commands/opclasscmds.c:880 +msgid "operator argument types must be specified in ALTER OPERATOR FAMILY" +msgstr "演算子の引数型はALTER OPERATOR FAMILYで指定しなければなりません" -#: access/transam/xlog.c:6329 -#, c-format -msgid "selected new timeline ID: %u" -msgstr "選択された新しいタイムラインID: %u" +#: commands/opclasscmds.c:944 +msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY" +msgstr "ALTER OPERATOR FAMILYではSTORAGEを指定できません" -#: access/transam/xlog.c:6565 -#, c-format -msgid "consistent recovery state reached at %X/%X" -msgstr "%X/%X でリカバリー状態の整合が取れました" +#: commands/opclasscmds.c:1060 +msgid "one or two argument types must be specified" +msgstr "1または2つの引数型が指定されなければなりません" -#: access/transam/xlog.c:6691 -msgid "invalid primary checkpoint link in control file" -msgstr "制御ファイル内のプライマリチェックポイントリンクが無効です" +#: commands/opclasscmds.c:1086 +msgid "index operators must be binary" +msgstr "インデックス演算子は二項演算子でなければなりません" -#: access/transam/xlog.c:6695 -msgid "invalid secondary checkpoint link in control file" -msgstr "制御ファイル内のセカンダリチェックポイントリンクが無効です" +#: commands/opclasscmds.c:1111 +#, c-format +msgid "access method \"%s\" does not support ordering operators" +msgstr "アクセスメソッド \"%s\" は並べ替え演算子をサポートしていません" -#: access/transam/xlog.c:6699 -msgid "invalid checkpoint link in backup_label file" -msgstr "backup_labelファイル内のチェックポイントリンクが無効です" +#: commands/opclasscmds.c:1124 +#, +msgid "index search operators must return boolean" +msgstr "インデックス検索演算子はブール型を返さなければなりません" -#: access/transam/xlog.c:6713 -msgid "invalid primary checkpoint record" -msgstr "プライマリチェックポイントレコードが無効です" +#: commands/opclasscmds.c:1163 +msgid "btree procedures must have two arguments" +msgstr "btreeプロシージャは2つの引数を取らなければなりません" -#: access/transam/xlog.c:6717 -msgid "invalid secondary checkpoint record" -msgstr "セカンダリチェックポイントレコードが無効です" +#: commands/opclasscmds.c:1167 +msgid "btree procedures must return integer" +msgstr "btreeプロシージャは整数を返さなければなりません" -#: access/transam/xlog.c:6721 -msgid "invalid checkpoint record" -msgstr "チェックポイントレコードが無効です" +#: commands/opclasscmds.c:1182 +msgid "hash procedures must have one argument" +msgstr "ハッシュプロシージャは1つの引数を取らなければなりません" -#: access/transam/xlog.c:6732 -msgid "invalid resource manager ID in primary checkpoint record" -msgstr "プライマリチェックポイントレコード内のリソースマネージャIDが無効です" +#: commands/opclasscmds.c:1186 +msgid "hash procedures must return integer" +msgstr "ハッシュプロシージャは整数を返さなければなりません" -#: access/transam/xlog.c:6736 -msgid "invalid resource manager ID in secondary checkpoint record" -msgstr "セカンダリチェックポイントレコード内のリソースマネージャIDが無効です" +#: commands/opclasscmds.c:1211 +msgid "associated data types must be specified for index support procedure" +msgstr "" +"関連するデータ型はインデックスサポートプロシージャで指定されなければなりませ" +"ん" -#: access/transam/xlog.c:6740 -msgid "invalid resource manager ID in checkpoint record" -msgstr "チェックポイントレコード内のリソースマネージャIDが無効です" +#: commands/opclasscmds.c:1237 +#, c-format +msgid "procedure number %d for (%s,%s) appears more than once" +msgstr "(%2$s,%3$s)用のプロシージャ番号%1$dが複数あります" -#: access/transam/xlog.c:6752 -msgid "invalid xl_info in primary checkpoint record" -msgstr "プライマリチェックポイントレコード内のxl_infoが無効です" +#: commands/opclasscmds.c:1244 +#, c-format +msgid "operator number %d for (%s,%s) appears more than once" +msgstr "(%2$s,%3$s)用の演算子番号%1$dが複数あります" -#: access/transam/xlog.c:6756 -msgid "invalid xl_info in secondary checkpoint record" -msgstr "セカンダリチェックポイントレコード内のxl_infoが無効です" +#: commands/opclasscmds.c:1293 +#, c-format +msgid "operator %d(%s,%s) already exists in operator family \"%s\"" +msgstr "演算子%d(%s,%s)はすでに演算子族\"%s\"に存在します" -#: access/transam/xlog.c:6760 -msgid "invalid xl_info in checkpoint record" -msgstr "チェックポイントレコード内のxl_infoが無効です" +#: commands/opclasscmds.c:1406 +#, c-format +msgid "function %d(%s,%s) already exists in operator family \"%s\"" +msgstr "関数%d(%s,%s)はすでに演算子族\"%s\"内に存在します" -#: access/transam/xlog.c:6772 -msgid "invalid length of primary checkpoint record" -msgstr "プライマリチェックポイントレコードのサイズが無効です" +#: commands/opclasscmds.c:1493 +#, c-format +msgid "operator %d(%s,%s) does not exist in operator family \"%s\"" +msgstr "演算子%d(%s,%s)は演算子族\"%s\"内にありません" -#: access/transam/xlog.c:6776 -msgid "invalid length of secondary checkpoint record" -msgstr "セカンダリチェックポイントレコードのサイズが無効です" +#: commands/opclasscmds.c:1533 +#, c-format +msgid "function %d(%s,%s) does not exist in operator family \"%s\"" +msgstr "関数%d(%s,%s)は演算子族\"%s\"内に存在しません" -#: access/transam/xlog.c:6780 -msgid "invalid length of checkpoint record" -msgstr "チェックポイントレコードのサイズが無効です" +#: commands/opclasscmds.c:1779 +#, c-format +msgid "" +"operator class \"%s\" for access method \"%s\" already exists in schema \"%s" +"\"" +msgstr "" +"アクセスメソッド\"%2$s\"用の演算子クラス\"%1$s\"はスキーマ\"%3$s\"内にすでに" +"存在します" -#: access/transam/xlog.c:6942 -msgid "shutting down" -msgstr "シャットダウンしています" +#: commands/opclasscmds.c:1868 +#, c-format +msgid "" +"operator family \"%s\" for access method \"%s\" already exists in schema \"%s" +"\"" +msgstr "" +"アクセスメソッド\"%2$s\"用の演算子族\"%1$s\"はスキーマ\"%3$s\"内にすでに存在" +"します" -#: access/transam/xlog.c:6964 -msgid "database system is shut down" -msgstr "データベースシステムはシャットダウンしました" +#: commands/seclabel.c:58 +msgid "no security label providers have been loaded" +msgstr "セキュリティラベルのプロバイダがロードされませんでした" -#: access/transam/xlog.c:7357 +#: commands/seclabel.c:62 msgid "" -"concurrent transaction log activity while database system is shutting down" -msgstr "" -"データベースシャットダウン中に、同時に実行中のトランザクションログ処理があり" -"ました" +"must specify provider when multiple security label providers have been loaded" +msgstr "複数のセキュリティラベルプロバイダがロードされた時は、" +"プロバイダを指定しなければなりません" -#: access/transam/xlog.c:7589 -msgid "skipping restartpoint, recovery has already ended" -msgstr "再開ポイントをスキップします。リカバリはすでに終わっています。" +#: commands/seclabel.c:80 +#, c-format +msgid "security label provider \"%s\" is not loaded" +msgstr "セキュリティラベルプロバイダ\"%s\" はロードされていません" -#: access/transam/xlog.c:7614 +#: commands/seclabel.c:113 commands/comment.c:97 #, c-format -msgid "skipping restartpoint, already performed at %X/%X" -msgstr "%X/%X ですでに実行済みの再開ポイントをスキップしています" +msgid "\"%s\" is not a table, view, composite type, or foreign table" +msgstr "\"%s\" はテーブル、ビュー、複合型、外部テーブルのいずれでもありません" -#: access/transam/xlog.c:7720 -msgid "recovery restart point at %X/%X" -msgstr "ポイント %X/%X でリカバリを再開します" +#: commands/collationcmds.c:81 +#, c-format +msgid "collation attribute \"%s\" not recognized" +msgstr "照合順序の属性 \"%s\" が認識できません" -#: access/transam/xlog.c:7890 -msgid "online backup was cancelled, recovery cannot continue" -msgstr "オンラインバックアップはキャンセルされ、リカバリを継続できません" +#: commands/collationcmds.c:126 +#, +msgid "parameter \"lc_collate\" parameter must be specified" +msgstr "\"lc_collate\" パラメータを指定しなければなりません" + +#: commands/collationcmds.c:131 +#, +msgid "parameter \"lc_ctype\" must be specified" +msgstr "\"lc_ctype\" パラメータを指定しなければなりません" -#: access/transam/xlog.c:7942 +#: commands/collationcmds.c:177 #, c-format -msgid "unexpected timeline ID %u (after %u) in checkpoint record" -msgstr "" -"チェックポイントレコードにおいて想定外の時系列ID %u(%uの後)がありました" +msgid "collation \"%s\" does not exist, skipping" +msgstr "照合順序 \"%s\" は存在しません。スキップします" -#: access/transam/xlog.c:7978 +#: commands/collationcmds.c:237 commands/collationcmds.c:416 #, c-format -msgid "unexpected timeline ID %u (should be %u) in checkpoint record" -msgstr "" -"チェックポイントレコードにおいて想定外の時系列ID %u(%uのはす)がありました" +msgid "collation \"%s\" for encoding \"%s\" already exists in schema \"%s\"" +msgstr "エンコーディング \"%2$s\" のための照合順序 \"%1$s\" は" +"すでにスキーマ \"%3$s\" 内に存在します" -#: access/transam/xlog.c:8234 access/transam/xlog.c:8260 +#: commands/collationcmds.c:249 commands/collationcmds.c:428 #, c-format -msgid "could not fsync log file %u, segment %u: %m" -msgstr "ログファイル%u、セグメント%uをfsyncできませんでした: %m" +msgid "collation \"%s\" already exists in schema \"%s\"" +msgstr "照合順序 \"%s\" はすでにスキーマ \"%s\" 内に存在します" -#: access/transam/xlog.c:8268 +#: commands/explain.c:153 #, c-format -msgid "could not fsync write-through log file %u, segment %u: %m" -msgstr "write-throughログファイル%u、セグメント%uをfsyncできませんでした: %m" +msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\"" +msgstr "EXPLAIN オプション \"%s\" が認識できない値です: \"%s\"" -#: access/transam/xlog.c:8277 +#: commands/explain.c:159 #, c-format -msgid "could not fdatasync log file %u, segment %u: %m" -msgstr "ログファイル%u、セグメント%uをfdatasyncできませんでした: %m" +msgid "unrecognized EXPLAIN option \"%s\"" +msgstr "EXPLAIN オプション \"%s\" が認識できません" -#: access/transam/xlog.c:8320 access/transam/xlog.c:8512 -msgid "must be superuser to run a backup" -msgstr "バックアップはスーパーユーザで実行しなければなりません" +#: commands/explain.c:166 +msgid "EXPLAIN option BUFFERS requires ANALYZE" +msgstr "EXPLAIN オプションの BUFFERS には ANALYZE 指定が必要です" -#: access/transam/xlog.c:8325 access/transam/xlog.c:8517 -#: access/transam/xlog.c:8720 access/transam/xlog.c:8748 -#: access/transam/xlog.c:8781 access/transam/xlog.c:8873 -#: access/transam/xlog.c:8948 -msgid "recovery is in progress" -msgstr "リカバリーはすでに実行中です" +#: commands/alter.c:423 +#, c-format +msgid "must be superuser to SET SCHEMA of %s" +msgstr "%s の SET SCHEMA をするにはスーパーユーザでなければなりません" -#: access/transam/xlog.c:8326 access/transam/xlog.c:8518 -#: access/transam/xlog.c:8721 access/transam/xlog.c:8749 -#: access/transam/xlog.c:8782 -msgid "WAL control functions cannot be executed during recovery." -msgstr "リカバリー中は WAL 制御関数を実行できません" +#: commands/alter.c:451 +#, c-format +msgid "%s already exists in schema \"%s\"" +msgstr "%s はすでにスキーマ \"%s\" 内に存在します" -#: access/transam/xlog.c:8331 access/transam/xlog.c:8523 -msgid "WAL level not sufficient for making an online backup" -msgstr "オンラインバックアップを行うには WAL レベルが不足しています" +#: commands/aggregatecmds.c:103 +#, c-format +msgid "aggregate attribute \"%s\" not recognized" +msgstr "集約の属性\"%sは存在しません" -#: access/transam/xlog.c:8332 access/transam/xlog.c:8524 -msgid "" -"wal_level must be set to \"archive\" or \"hot_standby\" at server start." -msgstr "" -"サーバの開始時に wal_level を \"archive\" または \"hot_standby\" にセットしてください" +#: commands/aggregatecmds.c:113 +msgid "aggregate stype must be specified" +msgstr "集約のstypeを指定しなければなりません" -#: access/transam/xlog.c:8359 access/transam/xlog.c:8428 -msgid "a backup is already in progress" -msgstr "すでにバックアップが進行中です" +#: commands/aggregatecmds.c:117 +msgid "aggregate sfunc must be specified" +msgstr "集約用の状態遷移関数を指定しなければなりません" -#: access/transam/xlog.c:8360 -msgid "Run pg_stop_backup() and try again." -msgstr "pg_stop_backup()を実行し、再試行してください" +#: 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 "集約の入力型指定で基本型が冗長です" -#: access/transam/xlog.c:8429 +#: commands/aggregatecmds.c:191 #, c-format -msgid "" -"If you're sure there is no backup in progress, remove file \"%s\" and try " -"again." -msgstr "" -"バックアップを行っていないことが確実であれば、ファイル\"%s\"を削除し、再実行" -"してください" +msgid "aggregate transition data type cannot be %s" +msgstr "集約の遷移データの型を%sにできません" -#: access/transam/xlog.c:8450 access/transam/xlog.c:8607 +#: commands/aggregatecmds.c:230 #, c-format -msgid "could not write file \"%s\": %m" -msgstr "ファイル\"%s\"を書き出せませんでした: %m" +msgid "aggregate %s(%s) does not exist, skipping" +msgstr "集約%s(%s)は存在しません。省略します" -#: access/transam/xlog.c:8546 -msgid "a backup is not in progress" -msgstr "バックアップが実行中ではありません" +#: commands/aggregatecmds.c:292 commands/functioncmds.c:1122 +#, c-format +msgid "function %s already exists in schema \"%s\"" +msgstr "関数%sはすでにスキーマ\"%s\"内に存在します" -#: access/transam/xlog.c:8558 access/transam/xlog.c:9014 -#: access/transam/xlog.c:9020 +#: commands/vacuumlazy.c:230 #, c-format -msgid "invalid data in file \"%s\"" -msgstr "ファイル\"%s\"内のデータが無効です" - -#: access/transam/xlog.c:8670 msgid "" -"pg_stop_backup cleanup done, waiting for required WAL segments to be archived" +"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 "" -"pg_stop_backup のクリーンアップが終了し、要求された WAL セグメントがアーカイブされるのを待っています" +"テーブル\"%s.%s.%s\"の自動バキューム: インデックススキャン: %d\n" +"ページ: %dを削除、%dが残存\n" +"タプル: %.0fを削除、%.0fが残存\n" +"システム使用状況: %s" -#: access/transam/xlog.c:8680 -msgid "" -"pg_stop_backup still waiting for all required WAL segments to be archived (%" -"d seconds elapsed)" -msgstr "" -"pg_stop_backup は未だに要求されたすべての WAL セグメントがアーカイブされるのを待っています(%d 秒経過)" +#: commands/vacuumlazy.c:315 commands/cluster.c:890 +#, c-format +msgid "vacuuming \"%s.%s\"" +msgstr "\"%s.%s\"をバキュームしています" -#: access/transam/xlog.c:8682 -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 "" -"archive_command が適切に実行されたことを確認してください。" -"pg_stop_backup は安全に取り消すことができますが、すべての WAL セグメントがないと" -"データベースのバックアップは使用できません。" +#: commands/vacuumlazy.c:484 +#, c-format +msgid "relation \"%s\" page %u is uninitialized --- fixing" +msgstr "リレーション\"%s\" ページ%uは初期化されていません --- 修正しています" -#: access/transam/xlog.c:8689 -msgid "pg_stop_backup complete, all required WAL segments have been archived" -msgstr "" -"pg_stop_backup が完了し、要求されたすべての WAL セグメントがアーカイブされました" +#: commands/vacuumlazy.c:841 +#, c-format +msgid "\"%s\": removed %.0f row versions in %u pages" +msgstr "\"%s\": %.0f行バージョンを%uページから削除しました" -#: access/transam/xlog.c:8693 +#: commands/vacuumlazy.c:846 +#, 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" +"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u " +"pages" msgstr "" -"WAL アーカイブが有効になっていません。要求されたすべての WAL セグメントが" -"別の方法でコピーされ、バックアップが完了できることを確認してください。" +"\"%1$s\": 全 %5$u ページ中の %4$u ページで見つかった行バージョン:移動可能 %2" +"$.0f 行、削除不可 %3$.0f 行" -#: access/transam/xlog.c:8715 -msgid "must be superuser to switch transaction log files" +#: commands/vacuumlazy.c:850 +#, 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 "" -"トランザクションログファイルを切り替えられるのはスーパーユーザだけです" - -#: access/transam/xlog.c:8874 -msgid "pg_xlogfile_name_offset() cannot be executed during recovery." -msgstr "リカバリ中は pg_xlogfile_name_offset() を実行できません" +"%.0f の不要な行バージョンはまだ削除できません。\n" +"未使用アイテムへのポインタが %.0f 個ありました。\n" +"%u ページが完全に空です。\n" +"%s" -#: access/transam/xlog.c:8884 access/transam/xlog.c:8956 +#: commands/vacuumlazy.c:908 #, c-format -msgid "could not parse transaction log location \"%s\"" -msgstr "トランザクションログ位置\"%s\"を解析できませんでした" - -#: access/transam/xlog.c:8949 -msgid "pg_xlogfile_name() cannot be executed during recovery." -msgstr "リカバリ中は pg_xlogfile_name() を実行できません" +msgid "\"%s\": removed %d row versions in %d pages" +msgstr "\"%s\": %d行バージョンを%dページから削除しました" -#: access/transam/xlog.c:9046 +#: commands/vacuumlazy.c:911 commands/vacuumlazy.c:1003 +#: commands/vacuumlazy.c:1136 #, c-format -msgid "xlog redo %s" -msgstr "xlog 再実行 %s" - -#: access/transam/xlog.c:9086 -msgid "online backup mode cancelled" -msgstr "オンラインバックアップモードがキャンセルされました" +msgid "%s." +msgstr "%s。" -#: access/transam/xlog.c:9087 +#: commands/vacuumlazy.c:1000 #, c-format -msgid "\"%s\" was renamed to \"%s\"." -msgstr "\"%s\" は \"%s\" にリネームされました" - -#: access/transam/xlog.c:9094 -msgid "online backup mode was not cancelled" -msgstr "オンラインバックアップモードはキャンセルされていません" +msgid "scanned index \"%s\" to remove %d row versions" +msgstr "%2$d行バージョンを削除するためインデックス\"%1$s\"をスキャンしました" -#: access/transam/xlog.c:9095 +#: commands/vacuumlazy.c:1041 #, c-format -msgid "Could not rename \"%s\" to \"%s\": %m." -msgstr "\"%s\" という名前を \"%s\" に変更できませんでした: %m" +msgid "index \"%s\" now contains %.0f row versions in %u pages" +msgstr "現在インデックス\"%s\"は%.0f行バージョンを%uページで含んでいます" -#: access/transam/xlog.c:9563 access/transam/xlog.c:9585 +#: commands/vacuumlazy.c:1045 #, c-format -msgid "could not read from log file %u, segment %u, offset %u: %m" -msgstr "ログファイル%u、セグメント%u、オフセット%uを読み取れませんでした: %m" - -#: access/transam/xlog.c:9673 -msgid "trigger file found: %s" -msgstr "トリガファイルが見つかりました:%s" +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" -#: access/transam/slru.c:595 +#: commands/vacuumlazy.c:1133 #, c-format -msgid "file \"%s\" doesn't exist, reading as zeroes" -msgstr "ファイル\"%s\"が存在しません。ゼロとして読み込みます" +msgid "\"%s\": truncated %u to %u pages" +msgstr "\"%s\": %u削除され、%uページになりました" -#: access/transam/slru.c:825 access/transam/slru.c:831 -#: access/transam/slru.c:838 access/transam/slru.c:845 -#: access/transam/slru.c:852 access/transam/slru.c:859 +#: commands/foreigncmds.c:135 commands/foreigncmds.c:144 #, c-format -msgid "could not access status of transaction %u" -msgstr "トランザクション%uのステータスにアクセスできませんでした" +msgid "option \"%s\" not found" +msgstr "オプション \"%s\" が見つかりません" -#: access/transam/slru.c:826 +#: commands/foreigncmds.c:154 #, c-format -msgid "Could not open file \"%s\": %m." -msgstr "ファイル\"%s\"をオープンできませんでした: %m。" +msgid "option \"%s\" provided more than once" +msgstr "オプション \"%s\" が2回以上指定されました" -#: access/transam/slru.c:832 +#: commands/foreigncmds.c:212 commands/foreigncmds.c:220 #, c-format -msgid "Could not seek in file \"%s\" to offset %u: %m." -msgstr "ファイル\"%s\"のオフセット%uにシークできませんでした: %m。" +msgid "permission denied to change owner of foreign-data wrapper \"%s\"" +msgstr "外部データラッパー \"%s\" の所有者を変更する権限がありません" -#: access/transam/slru.c:839 -#, c-format -msgid "Could not read from file \"%s\" at offset %u: %m." -msgstr "ファイル\"%s\"のオフセット%uを読み取れませんでした: %m。" +#: commands/foreigncmds.c:214 +msgid "Must be superuser to change owner of a foreign-data wrapper." +msgstr "スーパーユーザのみが外部データラッパーの所有者を変更できます" -#: access/transam/slru.c:846 -#, c-format -msgid "Could not write to file \"%s\" at offset %u: %m." -msgstr "ファイル\"%s\"のオフセット%uに書き出せませんでした: %m。" +#: commands/foreigncmds.c:222 +msgid "The owner of a foreign-data wrapper must be a superuser." +msgstr "外部データラッパーの所有者はスーパーユーザでなければなりません" -#: access/transam/slru.c:853 +#: commands/foreigncmds.c:336 #, c-format -msgid "Could not fsync file \"%s\": %m." -msgstr "ファイル\"%s\"をfsyncできませんでした: %m。" +msgid "function %s must return type \"fdw_handler\"" +msgstr "関数 %s は \"fdw_handler\" 型を返さなければなりません" -#: access/transam/slru.c:860 +#: commands/foreigncmds.c:429 #, c-format -msgid "Could not close file \"%s\": %m." -msgstr "ファイル\"%s\"をクローズできませんでした: %m。" +msgid "permission denied to create foreign-data wrapper \"%s\"" +msgstr "外部データラッパー \"%s\" を作成する権限がありません" -#: access/transam/slru.c:1087 -#, c-format -msgid "could not truncate directory \"%s\": apparent wraparound" -msgstr "ディレクトリ\"%s\"を切り詰めできませんでした: 周回している様子" +#: commands/foreigncmds.c:431 +msgid "Must be superuser to create a foreign-data wrapper." +msgstr "テーブル空間を作成するにはスーパーユーザでなければなりません" -#: access/transam/slru.c:1168 +#: commands/foreigncmds.c:442 #, c-format -msgid "removing file \"%s\"" -msgstr "ファイル\"%s\"を削除しています" +msgid "foreign-data wrapper \"%s\" already exists" +msgstr "外部データラッパー \"%s\" はすでに存在します" -#: access/transam/varsup.c:113 +#: commands/foreigncmds.c:542 #, c-format -msgid "" -"database is not accepting commands to avoid wraparound data loss in database " -"\"%s\"" -msgstr "" -"データベース\"%s\"における周回によるデータ損失を防ぐために、データベースは問" -"い合わせを受付けません" +msgid "permission denied to alter foreign-data wrapper \"%s\"" +msgstr "外部データラッパー \"%s\" を変更する権限がありません" + +#: commands/foreigncmds.c:544 +msgid "Must be superuser to alter a foreign-data wrapper." +msgstr "外部データラッパーを変更するにはスーパーユーザでなければなりません" -#: access/transam/varsup.c:115 access/transam/varsup.c:122 +#: commands/foreigncmds.c:575 +#, 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 を停止後、スタンドアロンバックエンドを使ってそのデータベースをバ" -"キュームしてください。\n" -"古い準備済みトランザクションのコミットまたはロールバックが必要な場合もありま" -"す。" +"changing the foreign-data wrapper handler can change behavior of existing " +"foreign tables" +msgstr "外部データラッパーのハンドラーを変更すると、" +"既存の外部テーブルの振る舞いが変わることがあります" -#: access/transam/varsup.c:120 -#, c-format +#: commands/foreigncmds.c:589 msgid "" -"database is not accepting commands to avoid wraparound data loss in database " -"with OID %u" +"changing the foreign-data wrapper validator can cause the options for " +"dependent objects to become invalid" msgstr "" -"OID %u を持つデータベースは周回によるデータ損失を防ぐために、現在は問い合わせ" -"を受付けない状態になっています" +"外部データラッパーのバリデータ(検証用関数)を変更すると、それに依存するオプ" +"ションが無効になる場合があります" -#: access/transam/varsup.c:132 access/transam/varsup.c:358 +#: commands/foreigncmds.c:694 #, c-format -msgid "database \"%s\" must be vacuumed within %u transactions" -msgstr "" -"データベース\"%s\"は%uトランザクション以内にバキュームしなければなりません" +msgid "permission denied to drop foreign-data wrapper \"%s\"" +msgstr "外部データラッパー \"%s\" を削除する権限がありません" -#: access/transam/varsup.c:135 access/transam/varsup.c:142 -#: access/transam/varsup.c:361 access/transam/varsup.c:368 -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" -"古い準備済みトランザクションのコミットまたはロールバックが必要な場合もあります。" +#: commands/foreigncmds.c:696 +msgid "Must be superuser to drop a foreign-data wrapper." +msgstr "外部データラッパーを削除するにはスーパーユーザでなければなりません" -#: access/transam/varsup.c:139 access/transam/varsup.c:365 +#: commands/foreigncmds.c:708 #, c-format -msgid "database with OID %u must be vacuumed within %u transactions" -msgstr "" -"OID %u を持つデータベースは %u トランザクション以内にバキュームされなければな" -"りません" +msgid "foreign-data wrapper \"%s\" does not exist, skipping" +msgstr "外部データラッパー \"%s\" は存在しません。スキップします" -#: access/transam/varsup.c:332 +#: commands/foreigncmds.c:775 #, c-format -msgid "transaction ID wrap limit is %u, limited by database with OID %u" -msgstr "" -"トランザクション ID の周回制限は %u で、OID %u を持つデータベースにより制限さ" -"れています" +msgid "server \"%s\" already exists" +msgstr "サーバー \"%s\" はすでに存在します" -#: access/transam/xact.c:694 -msgid "cannot have more than 2^32-1 commands in a transaction" -msgstr "1 トランザクション内には 2^32-1 個以上のコマンドを保持できません" +#: commands/foreigncmds.c:974 +#, c-format +msgid "server \"%s\" does not exist, skipping" +msgstr "外部データラッパー \"%s\" は存在しません。スキップします" -#: access/transam/xact.c:1213 +#: commands/foreigncmds.c:1077 #, c-format -msgid "maximum number of committed subtransactions (%d) exceeded" -msgstr "コミットされたサブトランザクションの最大数 (%d) が制限を越えました" +msgid "user mapping \"%s\" already exists for server %s" +msgstr "ユーザーマッピング \"%s\" はサーバー \"%s\" 用としてすでに存在します" -#: access/transam/xact.c:1970 -msgid "cannot PREPARE a transaction that has operated on temporary tables" +#: commands/foreigncmds.c:1163 commands/foreigncmds.c:1271 +#, c-format +msgid "user mapping \"%s\" does not exist for the server" +msgstr "そのサーバー用のユーザーマッピング \"%s\" は存在しません" + +#: 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 "" -"一時テーブルに対する操作を行うトランザクションをPREPAREすることはできません" +"そのサーバー用のユーザーマッピング \"%s\" は存在しません。スキップします" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2759 +#: commands/tablecmds.c:200 #, c-format -msgid "%s cannot run inside a transaction block" -msgstr "%sはトランザクションブロックの内側では実行できません" +msgid "table \"%s\" does not exist" +msgstr "テーブル\"%s\"は存在しません" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2769 +#: commands/tablecmds.c:201 #, c-format -msgid "%s cannot run inside a subtransaction" -msgstr "%sはサブトランザクションブロックの内側では実行できません" +msgid "table \"%s\" does not exist, skipping" +msgstr "テーブル\"%s\"は存在しません。省略します" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2779 +#: commands/tablecmds.c:203 +msgid "Use DROP TABLE to remove a table." +msgstr "テーブルを削除するにはDROP TABLEを使用してください。" + +#: commands/tablecmds.c:206 #, c-format -msgid "%s cannot be executed from a function or multi-command string" -msgstr "%sは関数または複数コマンド文字列から実行できません" +msgid "sequence \"%s\" does not exist" +msgstr "シーケンス\"%s\"は存在しません" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2830 +#: commands/tablecmds.c:207 #, c-format -msgid "%s can only be used in transaction blocks" -msgstr "%sはトランザクションブロック内でのみ使用できます" +msgid "sequence \"%s\" does not exist, skipping" +msgstr "シーケンス\"%s\"は存在しません。省略します" -#: access/transam/xact.c:3012 -msgid "there is already a transaction in progress" -msgstr "すでにトランザクションが進行中です" +#: commands/tablecmds.c:209 +msgid "Use DROP SEQUENCE to remove a sequence." +msgstr "シーケンスを削除するにはDROP SEQUENCEを使用してください。" -#: access/transam/xact.c:3179 access/transam/xact.c:3271 -msgid "there is no transaction in progress" -msgstr "進行中のトランザクションがありません" +#: commands/tablecmds.c:212 +#, c-format +msgid "view \"%s\" does not exist" +msgstr "ビュー\"%s\"は存在しません" -#: access/transam/xact.c:3365 access/transam/xact.c:3415 -#: access/transam/xact.c:3421 access/transam/xact.c:3465 -#: access/transam/xact.c:3513 access/transam/xact.c:3519 -msgid "no such savepoint" -msgstr "そのようなセーブポイントはありません" +#: commands/tablecmds.c:213 +#, c-format +msgid "view \"%s\" does not exist, skipping" +msgstr "ビュー\"%s\"は存在しません。省略します" -#: access/transam/xact.c:4149 -msgid "cannot have more than 2^32-1 subtransactions in a transaction" -msgstr "" -"1 トランザクション内には 2^32-1 個以上のサブトランザクションを保持できません" +#: commands/tablecmds.c:215 +msgid "Use DROP VIEW to remove a view." +msgstr "ビューを削除するにはDROP VIEWを使用してください。" -#: access/gist/gistsplit.c:372 +#: commands/tablecmds.c:219 #, c-format -msgid "picksplit method for column %d of index \"%s\" failed" -msgstr "" -"インデックス\"%2$s\"の列%1$dに対するピックスプリットメソッドが失敗しました" +msgid "index \"%s\" does not exist, skipping" +msgstr "インデックス\"%s\"は存在しません。省略します" -#: access/gist/gistsplit.c:374 -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 "" -"インデックスは最適ではありません。最適化するためには開発者に連絡するか\n" -"この列をCREATE INDEXコマンドの2番目のものとして使用することを試みてください" +#: commands/tablecmds.c:221 +msgid "Use DROP INDEX to remove an index." +msgstr "インデックスを削除するにはDROP INDEXを使用してください" -#: access/gist/gistutil.c:407 +#: commands/tablecmds.c:225 commands/typecmds.c:666 #, c-format -msgid "index \"%s\" needs VACUUM or REINDEX to finish crash recovery" -msgstr "" -"クラッシュリカバリを完了するにはインデックス\"%s\"をVACUUMまたはREINDEXしなけ" -"ればなりません" +msgid "type \"%s\" does not exist, skipping" +msgstr "型\"%s\"は存在しません。省略します" -#: access/gist/gistxlog.c:803 +#: commands/tablecmds.c:226 #, c-format -msgid "index %u/%u/%u needs VACUUM FULL or REINDEX to finish crash recovery" -msgstr "" -"クラッシュリカバリを完了するにはインデックス%u/%u/%uをVACUUM FULLまたは" -"REINDEXしなければなりません" +msgid "\"%s\" is not a type" +msgstr "\"%s\"は型ではありません" -#: access/gist/gistxlog.c:805 -msgid "Incomplete insertion detected during crash replay." -msgstr "クラッシュリカバリ中に不完全な挿入を検知しました" +#: commands/tablecmds.c:227 +msgid "Use DROP TYPE to remove a type." +msgstr "型を削除するにはDROP TYPEを使用してください" -#: access/gist/gistvacuum.c:72 +#: commands/tablecmds.c:230 commands/tablecmds.c:8852 #, c-format -msgid "index \"%s\" needs VACUUM FULL or REINDEX to finish crash recovery" -msgstr "" -"クラッシュリカバリを完了するにはインデックス\"%s\"をVACUUM FULLまたはREINDEX" -"しなければなりません" +msgid "foreign table \"%s\" does not exist" +msgstr "外部テーブル \"%s\" は存在しません" -#: tsearch/wparser_def.c:2533 +#: commands/tablecmds.c:231 #, c-format -msgid "unrecognized headline parameter: \"%s\"" -msgstr "未知の見出しパラメータ: \"%s\"" +msgid "foreign table \"%s\" does not exist, skipping" +msgstr "外部テーブル \"%s\" は存在しません。スキップします" -#: tsearch/wparser_def.c:2542 -msgid "MinWords should be less than MaxWords" -msgstr "MinWordsはMaxWordsより小さくなければなりません" +#: commands/tablecmds.c:233 +#, +msgid "Use DROP FOREIGN TABLE to remove a foreign table." +msgstr "外部テーブルを削除するには DROP FOREIGN TABLE を使用してください。" -#: tsearch/wparser_def.c:2546 -msgid "MinWords should be positive" -msgstr "MinWordsは正でなければなりません" +#: commands/tablecmds.c:429 +#, +msgid "constraints on foreign tables are not supported" +msgstr "外部テーブルへの制約はサポートされていません" -#: tsearch/wparser_def.c:2550 -msgid "ShortWord should be >= 0" -msgstr "ShortWordは>= 0でなければなりません" +#: commands/tablecmds.c:478 commands/tablecmds.c:7846 commands/indexcmds.c:265 +msgid "only shared relations can be placed in pg_global tablespace" +msgstr "共有リレーションのみをpg_globalテーブル空間に格納することができます" -#: tsearch/wparser_def.c:2554 -msgid "MaxFragments should be >= 0" -msgstr "MaxFragments は 0 以上でなければなりません" +#: commands/tablecmds.c:544 commands/tablecmds.c:4324 +#, +msgid "default values on foreign tables are not supported" +msgstr "外部テーブルに対するデフォルト値指定はサポートされていません" -#: tsearch/ts_utils.c:53 +#: commands/tablecmds.c:924 #, c-format -msgid "invalid text search configuration file name \"%s\"" -msgstr "テキスト検索設定ファイル名は%sは無効です" +msgid "truncate cascades to table \"%s\"" +msgstr "テーブル\"%s\"へのカスケードを削除します" -#: tsearch/ts_utils.c:91 +#: commands/tablecmds.c:1151 +msgid "cannot truncate temporary tables of other sessions" +msgstr "他のセッションの一時テーブルを削除できません" + +#: commands/tablecmds.c:1360 commands/tablecmds.c:8078 #, c-format -msgid "could not open stop-word file \"%s\": %m" -msgstr "ストップワードファイル\"%s\"をオープンできませんでした: %m" +msgid "cannot inherit from temporary relation \"%s\"" +msgstr "一時リレーション\"%s\"から継承することはできません" -#: 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 "インデックス付けするには単語が長すぎます" +#: commands/tablecmds.c:1377 commands/tablecmds.c:8106 +#, c-format +msgid "relation \"%s\" would be inherited from more than once" +msgstr "リレーション\"%s\"が複数回継承されました" -#: tsearch/ts_parse.c:392 tsearch/ts_parse.c:399 tsearch/ts_parse.c:562 -#: tsearch/ts_parse.c:569 +#: commands/tablecmds.c:1433 #, c-format -msgid "Words longer than %d characters are ignored." -msgstr "%dより長い単語は無視されます。" +msgid "merging multiple inherited definitions of column \"%s\"" +msgstr "複数の継承される列\"%s\"の定義をマージしています" -#: tsearch/spell.c:204 +#: commands/tablecmds.c:1441 #, c-format -msgid "could not open dictionary file \"%s\": %m" -msgstr "辞書ファイル\"%s\"をオープンできませんでした: %m" +msgid "inherited column \"%s\" has a type conflict" +msgstr "継承される列\"%s\"の型が競合しています" -#: tsearch/spell.c:522 tsearch/spell.c:772 tsearch/spell.c:792 -msgid "multibyte flag character is not allowed" -msgstr "マルチバイトフラグ付きの文字は使用できません" +#: commands/tablecmds.c:1450 +#, c-format +msgid "inherited column \"%s\" has a collation conflict" +msgstr "継承される列 \"%s\" の照合順序が競合しています" -#: tsearch/spell.c:557 tsearch/spell.c:615 tsearch/spell.c:710 +#: commands/tablecmds.c:1452 commands/tablecmds.c:1639 +#: commands/tablecmds.c:4193 #, c-format -msgid "could not open affix file \"%s\": %m" -msgstr "affixファイル\"%s\"をオープンできませんでした: %m" +msgid "\"%s\" versus \"%s\"" +msgstr "\"%s\" 対 \"%s\"" -#: tsearch/spell.c:603 -msgid "Ispell dictionary supports only default flag value" -msgstr "Ispell の辞書はデフォルトフラグ値のみをサポートします" +#: commands/tablecmds.c:1462 +#, c-format +msgid "inherited column \"%s\" has a storage parameter conflict" +msgstr "継承される列 \"%s\" の格納パラメーターが競合しています" -#: tsearch/spell.c:803 -msgid "wrong affix file format for flag" -msgstr "フラグに関する affix ファイルの書式が誤っています" +#: commands/tablecmds.c:1619 +#, c-format +msgid "merging column \"%s\" with inherited definition" +msgstr "継承される定義で列 \"%s\" をマージしています" -#: tsearch/dict_ispell.c:52 tsearch/dict_thesaurus.c:615 -msgid "multiple DictFile parameters" -msgstr "重複するDictFileパラメータ" +#: commands/tablecmds.c:1627 +#, c-format +msgid "column \"%s\" has a type conflict" +msgstr "列\"%s\"の型が競合しています" -#: tsearch/dict_ispell.c:63 -msgid "multiple AffFile parameters" -msgstr "重複するAffFileパラメータ" +#: commands/tablecmds.c:1637 +#, c-format +msgid "column \"%s\" has a collation conflict" +msgstr "列 \"%s\" の照合順序が競合しています" -#: tsearch/dict_ispell.c:74 tsearch/dict_simple.c:50 -#: snowball/dict_snowball.c:206 -msgid "multiple StopWords parameters" -msgstr "重複するStopWordsパラメータ" +#: commands/tablecmds.c:1649 +#, c-format +msgid "column \"%s\" has a storage parameter conflict" +msgstr "列 \"%s\" の格納パラメーターが競合しています" -#: tsearch/dict_ispell.c:82 +#: commands/tablecmds.c:1701 #, c-format -msgid "unrecognized Ispell parameter: \"%s\"" -msgstr "未知のIspellパラメータ: \"%s\"" +msgid "column \"%s\" inherits conflicting default values" +msgstr "列\"%s\"は競合するデフォルト値を継承します" -#: tsearch/dict_ispell.c:96 -msgid "missing AffFile parameter" -msgstr "AffFileパラメータがありません" +#: commands/tablecmds.c:1703 +msgid "To resolve the conflict, specify a default explicitly." +msgstr "競合を解消するには明示的にデフォルトを指定してください" -#: tsearch/dict_ispell.c:102 tsearch/dict_thesaurus.c:639 -msgid "missing DictFile parameter" -msgstr "DictFileパラメータがありません" +#: commands/tablecmds.c:1750 +#, c-format +msgid "" +"check constraint name \"%s\" appears multiple times but with different " +"expressions" +msgstr "異なる式を持つ検査制約名\"%s\"が複数あります。" -#: tsearch/dict_simple.c:59 -msgid "multiple Accept parameters" -msgstr "重複するAcceptパラメータ" +#: commands/tablecmds.c:2040 +msgid "cannot rename column of typed table" +msgstr "型付けされたテーブルのカラムをリネームできません" -#: tsearch/dict_simple.c:67 +#: commands/tablecmds.c:2057 #, c-format -msgid "unrecognized simple dictionary parameter: \"%s\"" -msgstr "未知の単純辞書パラメータ: \"%s\"" +msgid "\"%s\" is not a table, view, composite type, index or foreign table" +msgstr "\"%s\" はテーブル、ビュー、複合型、インデックス、外部テーブルの" +"いずれでもありません" -#: tsearch/dict_thesaurus.c:180 +#: commands/tablecmds.c:2123 #, c-format -msgid "could not open thesaurus file \"%s\": %m" -msgstr "シソーラスファイル\"%s\"をオープンできませんでした: %m" +msgid "inherited column \"%s\" must be renamed in child tables too" +msgstr "継承される列\"%s\"の名前を子テーブルで変更しなければなりません" -#: tsearch/dict_thesaurus.c:213 -msgid "unexpected delimiter" -msgstr "想定外のデリミタです" +#: commands/tablecmds.c:2155 +#, c-format +msgid "cannot rename system column \"%s\"" +msgstr "システム列%s\"の名前を変更できません" -#: tsearch/dict_thesaurus.c:263 tsearch/dict_thesaurus.c:279 -msgid "unexpected end of line or lexeme" -msgstr "想定外の行末もしくは単語の終端です" +#: commands/tablecmds.c:2170 +#, c-format +msgid "cannot rename inherited column \"%s\"" +msgstr "継承される列\"%s\"の名前を変更できません" -#: tsearch/dict_thesaurus.c:288 -msgid "unexpected end of line" -msgstr "想定外の行末です" +#: commands/tablecmds.c:2181 commands/tablecmds.c:4237 +#, c-format +msgid "column \"%s\" of relation \"%s\" already exists" +msgstr "リレーション\"%2$s\"の列\"%1$s\"はすでに存在します" -#: tsearch/dict_thesaurus.c:412 +#: commands/tablecmds.c:2270 commands/tablecmds.c:7402 +#: commands/tablecmds.c:8984 +msgid "Use ALTER TYPE instead." +msgstr "代わりにALTER TYPEを使用してください" + +#. translator: first %s is a SQL command, eg ALTER TABLE +#: commands/tablecmds.c:2393 #, c-format msgid "" -"thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)" -msgstr "シソーラスサンプル単語\"%s\"は副辞書で認識されません(規則%d)" +"cannot %s \"%s\" because it is being used by active queries in this session" +msgstr "" +"このセッションで実行中の問い合わせで使用されているため \"%2$s\" を %1$s でき" +"ません" -#: tsearch/dict_thesaurus.c:418 +#. translator: first %s is a SQL command, eg ALTER TABLE +#: commands/tablecmds.c:2402 #, c-format -msgid "thesaurus sample word \"%s\" is a stop word (rule %d)" -msgstr "シソーラスサンプル単語\"%s\"はストップワードです(規則%d)" +msgid "cannot %s \"%s\" because it has pending trigger events" +msgstr "トリガイベントを待機しているため \"%2$s\" を %1$s できません" -#: tsearch/dict_thesaurus.c:421 -msgid "Use \"?\" to represent a stop word within a sample phrase." -msgstr "サンプルフレーズ内のストップワードを表すには\"?\"を使用してください" +#: commands/tablecmds.c:2501 +#, c-format +msgid "\"%s\" is not a composite type" +msgstr "\"%s\" は複合型ではありません" -#: tsearch/dict_thesaurus.c:567 +#: commands/tablecmds.c:3298 #, c-format -msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)" -msgstr "シソーラス置換単語\"%s\"はストップワードです(規則%d)" +msgid "cannot rewrite system relation \"%s\"" +msgstr "システムリレーション\"%sを書き換えられません" -#: tsearch/dict_thesaurus.c:574 +#: commands/tablecmds.c:3308 +msgid "cannot rewrite temporary tables of other sessions" +msgstr "他のセッションの一時テーブルを書き換えられません" + +#: commands/tablecmds.c:3535 #, c-format -msgid "" -"thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)" -msgstr "シソーラス置換単語\"%s\"は副辞書で認識されません(規則%d)" +msgid "rewriting table \"%s\"" +msgstr "テーブル \"%s\" に再書込しています" -#: tsearch/dict_thesaurus.c:586 +#: commands/tablecmds.c:3539 #, c-format -msgid "thesaurus substitute phrase is empty (rule %d)" -msgstr "シソーラス置換フレーズは空です(規則%d)" +msgid "verifying table \"%s\"" +msgstr "テーブル \"%s\" を検証しています" -#: tsearch/dict_thesaurus.c:624 -msgid "multiple Dictionary parameters" -msgstr "重複する辞書パラメータ" +#: commands/tablecmds.c:3646 +#, c-format +msgid "column \"%s\" contains null values" +msgstr "列\"%s\"にはNULL値があります" -#: tsearch/dict_thesaurus.c:631 +#: commands/tablecmds.c:3660 #, c-format -msgid "unrecognized Thesaurus parameter: \"%s\"" -msgstr "未知のシソーラスパラメータ \"%s\"" +msgid "check constraint \"%s\" is violated by some row" +msgstr "一部の行で検査制約\"%s\"に違反しています" -#: tsearch/dict_thesaurus.c:643 -msgid "missing Dictionary parameter" -msgstr "Dictionaryパラメータがありません" +#: commands/tablecmds.c:3801 commands/tablecmds.c:4751 +#, c-format +msgid "\"%s\" is not a table or index" +msgstr "\"%s\"はテーブルやインデックスではありません" -#: tsearch/ts_locale.c:168 +#: commands/tablecmds.c:3804 commands/trigger.c:193 commands/trigger.c:1098 +#: rewrite/rewriteDefine.c:259 #, c-format -msgid "line %d of configuration file \"%s\": \"%s\"" -msgstr "設定ファイル\"%2$s\"の%1$d行目:\"%3$s\"" +msgid "\"%s\" is not a table or view" +msgstr "\"%s\"はテーブルやビューではありません" -#: tsearch/ts_locale.c:173 libpq/hba.c:653 libpq/hba.c:669 libpq/hba.c:715 -#: libpq/hba.c:738 libpq/hba.c:750 libpq/hba.c:763 libpq/hba.c:778 -#: libpq/hba.c:825 libpq/hba.c:848 libpq/hba.c:865 libpq/hba.c:878 -#: libpq/hba.c:894 libpq/hba.c:909 libpq/hba.c:949 libpq/hba.c:981 -#: libpq/hba.c:992 libpq/hba.c:1004 libpq/hba.c:1015 libpq/hba.c:1032 -#: libpq/hba.c:1053 libpq/hba.c:1082 libpq/hba.c:1094 libpq/hba.c:1107 -#: libpq/hba.c:1141 libpq/hba.c:1215 libpq/hba.c:1233 libpq/hba.c:1254 -#: libpq/hba.c:1285 libpq/hba.c:1295 +#: commands/tablecmds.c:3807 #, c-format -msgid "line %d of configuration file \"%s\"" -msgstr "設定ファイル \"%2$s\" の %1$d 行目" +msgid "\"%s\" is not a table or foreign table" +msgstr "\"%s\" はテーブルや外部テーブルではありません" -#: tsearch/ts_locale.c:288 +#: commands/tablecmds.c:3810 #, c-format -msgid "conversion from wchar_t to server encoding failed: %m" -msgstr "wchar_tからサーバ符号化方式への変換が失敗しました: %m" +msgid "\"%s\" is not a table, composite type, or foreign table" +msgstr "\"%s\" はテーブル、複合型、外部テーブルのいずれでもありません" -#: tsearch/dict_synonym.c:119 +#: commands/tablecmds.c:3820 #, c-format -msgid "unrecognized synonym parameter: \"%s\"" -msgstr "未知の類義語パラメータ: \"%s\"" +msgid "\"%s\" is of the wrong type" +msgstr "\"%s\" は誤った型です" -#: tsearch/dict_synonym.c:126 -msgid "missing Synonyms parameter" -msgstr "類義語パラメータがありません" +#: commands/tablecmds.c:3969 commands/tablecmds.c:3976 +#, c-format +msgid "cannot alter type \"%s\" because column \"%s\".\"%s\" uses it" +msgstr "" +"型\"%s\"を変更できません。列\"%s\".\"%s\"でその型を使用しているためです" -#: tsearch/dict_synonym.c:133 +#: commands/tablecmds.c:3983 #, c-format -msgid "could not open synonym file \"%s\": %m" -msgstr "類義語ファイル\"%s\"をオープンできませんでした: %m" +msgid "" +"cannot alter foreign table \"%s\" because column \"%s\".\"%s\" uses its " +"rowtype" +msgstr "列 \"%2$s\".\"%3$s\" がその行タイプを使用しているため、" +"外部テーブル \"%1$s\" を変更できません。" -#: tsearch/wparser.c:314 -msgid "text search parser does not support headline creation" -msgstr "テキスト検索パーサは見出し作成をサポートしません" +#: commands/tablecmds.c:3990 +#, c-format +msgid "cannot alter table \"%s\" because column \"%s\".\"%s\" uses its rowtype" +msgstr "" +"テーブル\"%s\"を変更できません。その行型を列\"%s\".\"%s\"で使用しているためで" +"す" -#: snowball/dict_snowball.c:183 +#: commands/tablecmds.c:4052 #, c-format -msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\"" +msgid "cannot alter type \"%s\" because it is the type of a typed table" msgstr "" -"言語\"%s\"および符号化方式\"%s\"用に使用可能なSnowball語幹抽出がありません" +"型付けされたテーブルの型であるため、外部テーブル \"%s\" を変更できません。" -#: snowball/dict_snowball.c:215 -msgid "multiple Language parameters" -msgstr "重複するLanguageパラメータ" +#: commands/tablecmds.c:4054 +#, +msgid "Use ALTER ... CASCADE to alter the typed tables too." +msgstr "" +"型付けされたテーブルを変更する場合も ALTER .. CASCADE を使用してください" -#: snowball/dict_snowball.c:222 +#: commands/tablecmds.c:4098 #, c-format -msgid "unrecognized Snowball parameter: \"%s\"" -msgstr "未知のSnowballパラメータ: \"%s\"" +msgid "type %s is not a composite type" +msgstr "型 %s は複合型ではありません" -#: snowball/dict_snowball.c:230 -msgid "missing Language parameter" -msgstr "Languageパラメータがありません" +#: commands/tablecmds.c:4124 +msgid "cannot add column to typed table" +msgstr "型付けされたテーブルにカラムを追加できません" -#: libpq/auth.c:255 +#: commands/tablecmds.c:4185 commands/tablecmds.c:8260 #, c-format -msgid "authentication failed for user \"%s\": host rejected" -msgstr "ユーザ\"%s\"の認証に失敗しました: ホストを拒絶しました" +msgid "child table \"%s\" has different type for column \"%s\"" +msgstr "子テーブル\"%s\"が異なる型の列\"%s\"を持っています" -#: libpq/auth.c:258 +#: commands/tablecmds.c:4191 commands/tablecmds.c:8267 #, c-format -msgid "Kerberos 5 authentication failed for user \"%s\"" -msgstr "ユーザ\"%s\"のKerberos 5認証に失敗しました" +msgid "child table \"%s\" has different collation for column \"%s\"" +msgstr "子テーブル \"%s\" に異なる照合順序の列 \"%s\" があります" -#: libpq/auth.c:261 +#: commands/tablecmds.c:4201 #, c-format -msgid "\"trust\" authentication failed for user \"%s\"" -msgstr "ユーザ\"%s\"の\"trust\"認証に失敗しました" +msgid "child table \"%s\" has a conflicting \"%s\" column" +msgstr "子テーブル \"%s\" に競合するカラム \"%s\" があります" + +#: commands/tablecmds.c:4213 +#, c-format +msgid "merging definition of column \"%s\" for child \"%s\"" +msgstr "子\"%2$s\"の列\"%1$s\"の定義をマージしています" + +#: commands/tablecmds.c:4443 +msgid "column must be added to child tables too" +msgstr "列は子テーブルでも追加しなければなりません" -#: libpq/auth.c:264 +#: commands/tablecmds.c:4573 commands/tablecmds.c:4663 +#: commands/tablecmds.c:4708 commands/tablecmds.c:4804 +#: commands/tablecmds.c:4848 commands/tablecmds.c:4927 +#: commands/tablecmds.c:6621 #, c-format -msgid "Ident authentication failed for user \"%s\"" -msgstr "ユーザ\"%s\"のIdent認証に失敗しました" +msgid "cannot alter system column \"%s\"" +msgstr "システム列\"%s\"を変更できません" -#: libpq/auth.c:268 +#: commands/tablecmds.c:4607 #, c-format -msgid "password authentication failed for user \"%s\"" -msgstr "ユーザ\"%s\"のパスワード認証に失敗しました" +msgid "column \"%s\" is in a primary key" +msgstr "列\"%s\"はプライマリキーで使用しています" -#: libpq/auth.c:273 +#: commands/tablecmds.c:4778 #, c-format -msgid "GSSAPI authentication failed for user \"%s\"" -msgstr "ユーザ\"%s\"のGSSAPI認証に失敗しました" +msgid "statistics target %d is too low" +msgstr "統計情報対象%dは小さすぎます" -#: libpq/auth.c:276 +#: commands/tablecmds.c:4786 #, c-format -msgid "SSPI authentication failed for user \"%s\"" -msgstr "ユーザ\"%s\"のSSPI認証に失敗しました" +msgid "lowering statistics target to %d" +msgstr "統計情報対象を%dに減らしましています" -#: libpq/auth.c:279 +#: commands/tablecmds.c:4908 #, c-format -msgid "PAM authentication failed for user \"%s\"" -msgstr "ユーザ\"%s\"のPAM認証に失敗しました" +msgid "invalid storage type \"%s\"" +msgstr "保管方式\"%s\"は無効です" -#: libpq/auth.c:282 +#: commands/tablecmds.c:4939 #, c-format -msgid "LDAP authentication failed for user \"%s\"" -msgstr "ユーザ\"%s\"のLDAP認証に失敗しました" - -#: libpq/auth.c:285 -msgid "certificate authentication failed for user \"%s\"" -msgstr "ユーザ \"%s\" の証明書認証に失敗しました" +msgid "column data type %s can only have storage PLAIN" +msgstr "列のデータ型%sは保管方式PLAINしか取ることができません" -#: libpq/auth.c:288 -msgid "RADIUS authentication failed for user \"%s\"" -msgstr "ユーザ \"%s\" の RADIUS 認証に失敗しました" +#: commands/tablecmds.c:4969 +msgid "cannot drop column from typed table" +msgstr "型付けされたテーブルからカラムを削除できません" -#: libpq/auth.c:291 +#: commands/tablecmds.c:5010 #, c-format -msgid "authentication failed for user \"%s\": invalid authentication method" -msgstr "ユーザ\"%s\"の認証に失敗しました: 認証方式が無効です" - -#: libpq/auth.c:320 -msgid "missing or erroneous pg_hba.conf file" -msgstr "pg_hba.confファイルが存在しない、または、pg_hba.confファイルのエラー" +msgid "column \"%s\" of relation \"%s\" does not exist, skipping" +msgstr "リレーション \"%2$s\" の列 \"%1$s\" は存在しません。スキップします。" -#: libpq/auth.c:321 -msgid "See server log for details." -msgstr "詳細はサーバログを参照してください" +#: commands/tablecmds.c:5023 +#, c-format +msgid "cannot drop system column \"%s\"" +msgstr "システム列\"%s\"を削除できません" -#: libpq/auth.c:351 -msgid "connection requires a valid client certificate" -msgstr "この接続には有効なクライアント証明が必要です" +#: commands/tablecmds.c:5030 +#, c-format +msgid "cannot drop inherited column \"%s\"" +msgstr "継承される列\"%s\"を削除できません" -#: libpq/auth.c:393 +#: commands/tablecmds.c:5256 +#, c-format msgid "" -"pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s" +"ALTER TABLE / ADD CONSTRAINT USING INDEX will rename index \"%s\" to \"%s\"" msgstr "" -"pg_hba.conf の設定でホスト \"%s\"、ユーザ \"%s\", %s 用のレプリケーション接続を拒否しました" - -#: libpq/auth.c:395 libpq/auth.c:411 libpq/auth.c:448 libpq/auth.c:464 -msgid "SSL on" -msgstr "SSL有効" +"ALTER TABLE / ADD CONSTRAINT USING INDEX はインデックス \"%s\" を \"%s\"" +" にリネームします" -#: libpq/auth.c:395 libpq/auth.c:411 libpq/auth.c:448 libpq/auth.c:464 -msgid "SSL off" -msgstr "SSL無効" +#: commands/tablecmds.c:5433 +msgid "constraint must be added to child tables too" +msgstr "制約は子テーブルにも追加しなければなりません" -#: libpq/auth.c:399 -msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\"" -msgstr "" -"pg_hba.conf の設定でホスト \"%s\"、ユーザ \"%s\"用のレプリケーション接続を拒否しました" +#: commands/tablecmds.c:5491 commands/sequence.c:1401 +#, c-format +msgid "referenced relation \"%s\" is not a table" +msgstr "参照先のリレーション\"%s\"はテーブルではありません" -#: libpq/auth.c:408 -msgid "" -"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s" -"\", %s" -msgstr "" -"pg_hba.conf の設定でホスト \"%s\"、ユーザ \"%s\"、データベース \"%s 用のレプリケーション接続を拒否しました" +#: commands/tablecmds.c:5514 +msgid "constraints on permanent tables may reference only permanent tables" +msgstr "永続テーブルへの制約は永続テーブルだけを参照する場合があります" -#: libpq/auth.c:415 +#: commands/tablecmds.c:5521 msgid "" -"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\"" -msgstr "" -"pg_hba.conf の設定でホスト \"%s\"、ユーザ \"%s\"、データベース \"%s\" 用のレプリケーション接続を拒否しました" +"constraints on unlogged tables may reference only permanent or unlogged " +"tables" +msgstr "ログを取らない(unlogged)テーブルに対する制約は、永続テーブル" +"またはログを取らないテーブルだけを参照する場合があります" -#: libpq/auth.c:446 -msgid "" -"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s" -"\", %s" -msgstr "" -"pg_hba.conf にホスト\"%s\"、ユーザ\"%s\", %s用のエントリがありません" +#: commands/tablecmds.c:5527 +#, +msgid "constraints on temporary tables may reference only temporary tables" +msgstr "一時テーブルに対する制約は一時テーブルだけを参照する場合があります" -#: libpq/auth.c:452 -msgid "" -"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\"" -msgstr "" -"pg_hba.conf にホスト\"%s\"、ユーザ\"%s\"用のエントリがありません" +#: commands/tablecmds.c:5588 +msgid "number of referencing and referenced columns for foreign key disagree" +msgstr "外部キーの参照列数と非参照列数が合いません" -#: libpq/auth.c:461 +#: commands/tablecmds.c:5677 #, c-format -msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s" -msgstr "" -"pg_hba.conf にホスト\"%s\"、ユーザ\"%s\"、データベース\"%s, %s用のエントリがありません" +msgid "foreign key constraint \"%s\" cannot be implemented" +msgstr "外部キー制約\"%sは実装されていません" -#: libpq/auth.c:468 +#: commands/tablecmds.c:5680 #, c-format -msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\"" -msgstr "" -"pg_hba.conf にホスト\"%s\"、ユーザ\"%s\"、データベース\"%s用のエントリがありません" +msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s." +msgstr "キーとなる列\"%s\"と\"%s\"との間で型に互換性がありません:%sと%s" -#: libpq/auth.c:526 +#: commands/tablecmds.c:5793 #, c-format -msgid "could not enable credential reception: %m" -msgstr "資格証明の受信を有効にできませんでした: %m" +msgid "foreign key constraint \"%s\" of relation \"%s\" does not exist" +msgstr "リレーション \"%2$s\" の外部キー制約 \"%1$s\" は存在しません" -#: libpq/auth.c:539 libpq/hba.c:948 -msgid "" -"MD5 authentication is not supported when \"db_user_namespace\" is enabled" -msgstr "\"db_user_namespace\" が有効の場合、MD5 認証はサポートされません" +#: commands/tablecmds.c:5855 +#, c-format +msgid "column \"%s\" referenced in foreign key constraint does not exist" +msgstr "外部キー制約で参照される列\"%s\"が存在しません" -#: libpq/auth.c:660 +#: commands/tablecmds.c:5860 #, c-format -msgid "expected password response, got message type %d" -msgstr "パスワード応答を想定しましたが、メッセージ種類%dを受け取りました" +msgid "cannot have more than %d keys in a foreign key" +msgstr "外部キーでは%dを超えるキーを持つことができません" -#: libpq/auth.c:688 -msgid "invalid password packet size" -msgstr "パスワードパケットのサイズが無効です" +#: commands/tablecmds.c:5925 +#, c-format +msgid "cannot use a deferrable primary key for referenced table \"%s\"" +msgstr "被参照テーブル \"%s\" には遅延可能プライマリキーは使用できません" -#: libpq/auth.c:692 -msgid "received password packet" -msgstr "パスワードパケットを受け取りました" +#: commands/tablecmds.c:5942 +#, c-format +msgid "there is no primary key for referenced table \"%s\"" +msgstr "被参照テーブル\"%s\"にはプライマリキーがありません" -#: libpq/auth.c:750 +#: commands/tablecmds.c:6092 #, c-format -msgid "Kerberos initialization returned error %d" -msgstr "Kerberosの初期化にてエラー%dが返されました" +msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" +msgstr "被参照テーブル \"%s\" に対しては、遅延可能な一意性制約は使用できません" -#: libpq/auth.c:760 +#: commands/tablecmds.c:6097 #, c-format -msgid "Kerberos keytab resolving returned error %d" -msgstr "Kerberosのkeytab解決にてエラー%dが返されました" +msgid "" +"there is no unique constraint matching given keys for referenced table \"%s\"" +msgstr "被参照テーブル \"%s\" に、指定したキーに一致する一意性制約がありません" -#: libpq/auth.c:784 +#: commands/tablecmds.c:6148 #, c-format -msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d" -msgstr "Kerberosのsname_to_principal(\"%s\", \"%s\")にてエラー%dが返されました" +msgid "validating foreign key constraint \"%s\"" +msgstr "外部キー制約 \"%s\" を検証しています" -#: libpq/auth.c:829 +#: commands/tablecmds.c:6430 #, c-format -msgid "Kerberos recvauth returned error %d" -msgstr "Kerberosのrecvauthにてエラー%dが返されました" +msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" +msgstr "リレーション \"%2$s\" の継承された制約 \"%1$s\" を削除できません" -#: libpq/auth.c:852 +#: commands/tablecmds.c:6457 commands/tablecmds.c:6570 #, c-format -msgid "Kerberos unparse_name returned error %d" -msgstr "Kerberosのunparse_nameにてエラー%dが返されました" +msgid "constraint \"%s\" of relation \"%s\" does not exist" +msgstr "リレーション \"%2$s\" の制約 \"%1$s\" は存在しません" -#: libpq/auth.c:975 +#: commands/tablecmds.c:6463 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" +msgstr "リレーション \"%2$s\" の制約 \"%1$s\" は存在しません。スキップします。" -#: libpq/auth.c:1001 -msgid "GSSAPI is not supported in protocol version 2" -msgstr "プロトコルバージョン 2 では GSSAPI はサポートされていません" +#: commands/tablecmds.c:6605 +#, +msgid "cannot alter column type of typed table" +msgstr "型付けされたテーブルの列の型を変更できません" -#: libpq/auth.c:1056 +#: commands/tablecmds.c:6628 #, c-format -msgid "expected GSS response, got message type %d" -msgstr "GSS応答を想定しましたが、メッセージタイプ %d を受け取りました" +msgid "cannot alter inherited column \"%s\"" +msgstr "継承される列\"%s\"を変更できません" -#: libpq/auth.c:1119 -msgid "accepting GSS security context failed" -msgstr "GSSセキュリティコンテキストの受付に失敗しました" +#: commands/tablecmds.c:6670 +msgid "transform expression must not return a set" +msgstr "変換式は集合を返してはいけません" -#: libpq/auth.c:1145 -msgid "retrieving GSS user name failed" -msgstr "GSSユーザ名の受信に失敗しました" +#: commands/tablecmds.c:6676 +msgid "cannot use subquery in transform expression" +msgstr "変換式では副問い合わせを使用できません" -#: libpq/auth.c:1218 -#, c-format -msgid "SSPI error %x" -msgstr "SSPIエラーです: %x" +#: commands/tablecmds.c:6680 +msgid "cannot use aggregate function in transform expression" +msgstr "変換式では集約関数を使用できません" -#: libpq/auth.c:1222 +#: commands/tablecmds.c:6684 +msgid "cannot use window function in transform expression" +msgstr "変換式の中ではウィンドウ関数は使用できません" + +#: commands/tablecmds.c:6703 #, c-format -msgid "%s (%x)" -msgstr "%s (%x)" +msgid "column \"%s\" cannot be cast to type %s" +msgstr "列\"%s\"を型\"%s\"にキャストできません" -#: libpq/auth.c:1262 -msgid "SSPI is not supported in protocol version 2" -msgstr "プロトコルバージョン 2 では SSPI はサポートされていません" +#: commands/tablecmds.c:6724 +msgid "ALTER TYPE USING is only supported on plain tables" +msgstr "ALTER TYPE USING は単純なテーブルでのみサポートされています" -#: libpq/auth.c:1277 -msgid "could not acquire SSPI credentials" -msgstr "SSPIの資格ハンドルを入手できませんでした" +#: commands/tablecmds.c:6749 +#, c-format +msgid "type of inherited column \"%s\" must be changed in child tables too" +msgstr "継承される列\"%s\"の型を子テーブルで変更しなければなりません" -#: libpq/auth.c:1294 +#: commands/tablecmds.c:6830 #, c-format -msgid "expected SSPI response, got message type %d" -msgstr "SSPI応答を想定しましたが、メッセージ種類%dを受け取りました" +msgid "cannot alter type of column \"%s\" twice" +msgstr "列\"%s\"の型を2回変更することはできません" -#: libpq/auth.c:1366 -msgid "could not accept SSPI security context" -msgstr "SSPIセキュリティコンテキストを受け付けられませんでした" +#: commands/tablecmds.c:6866 +#, c-format +msgid "default for column \"%s\" cannot be cast to type %s" +msgstr "列 \"%s\" のデフォルト値を \"%s\" 型にキャストできません" -#: libpq/auth.c:1422 -msgid "could not get token from SSPI security context" -msgstr "SSPIセキュリティコンテキストからトークンを入手できませんでした" +#: commands/tablecmds.c:6992 +msgid "cannot alter type of a column used by a view or rule" +msgstr "ビューまたはルールで使用される列の型を変更できません" -#: libpq/auth.c:1665 +#: commands/tablecmds.c:6993 commands/tablecmds.c:7012 #, c-format -msgid "could not create socket for Ident connection: %m" -msgstr "Ident接続用のソケットを作成できませんでした: %m" +msgid "%s depends on column \"%s\"" +msgstr "%sは列\"%s\"に依存しています" -#: libpq/auth.c:1680 +#: commands/tablecmds.c:7011 +#, +msgid "cannot alter type of a column used in a trigger definition" +msgstr "トリガー定義で使用される列の型を変更できません" + +#: commands/tablecmds.c:7370 #, c-format -msgid "could not bind to local address \"%s\": %m" -msgstr "ローカルアドレス\"%s\"にバインドできませんでした: %m" +msgid "cannot change owner of index \"%s\"" +msgstr "インデックス\"%s\"の所有者を変更できません" + +#: commands/tablecmds.c:7372 +msgid "Change the ownership of the index's table, instead." +msgstr "代わりにインデックスのテーブルの所有者を変更してください" -#: libpq/auth.c:1692 +#: commands/tablecmds.c:7388 #, c-format -msgid "could not connect to Ident server at address \"%s\", port %s: %m" -msgstr "アドレス\"%s\"、ポート%sのIdentサーバに接続できませんでした: %m" +msgid "cannot change owner of sequence \"%s\"" +msgstr "シーケンス\"%s\"の所有者を変更できません" -#: libpq/auth.c:1712 +#: commands/tablecmds.c:7390 commands/tablecmds.c:8974 #, c-format -msgid "could not send query to Ident server at address \"%s\", port %s: %m" -msgstr "" -"アドレス\"%s\"、ポート%sのIdentサーバに問い合わせを送信できませんでした: %m" +msgid "Sequence \"%s\" is linked to table \"%s\"." +msgstr "シーケンス\"%s\"はテーブル\"%s\"にリンクされています" -#: libpq/auth.c:1727 +#: commands/tablecmds.c:7411 commands/tablecmds.c:8992 #, c-format -msgid "" -"could not receive response from Ident server at address \"%s\", port %s: %m" -msgstr "" -"アドレス\"%s\"、ポート%sのIdentサーバからの応答を受信できませんでした: %m" +msgid "\"%s\" is not a table, view, sequence, or foreign table" +msgstr "\"%s\" はテーブル、ビュー、シーケンス、外部テーブルではありません" -#: libpq/auth.c:1737 +#: commands/tablecmds.c:7623 commands/cluster.c:178 #, c-format -msgid "invalidly formatted response from Ident server: \"%s\"" -msgstr "Identサーバからの応答の書式が無効です: \"%s\"" +msgid "index \"%s\" for table \"%s\" does not exist" +msgstr "テーブル\"%2$s\"にはインデックス\"%1$s\"は存在しません" + +#: commands/tablecmds.c:7666 +msgid "cannot have multiple SET TABLESPACE subcommands" +msgstr "SET TABLESPACEサブコマンドを複数指定できません" -#: libpq/auth.c:1772 libpq/auth.c:1802 libpq/auth.c:1830 libpq/auth.c:1906 +#: commands/tablecmds.c:7718 #, c-format -msgid "could not get peer credentials: %m" -msgstr "ピアの資格証明を入手できませんでした: %m" +msgid "\"%s\" is not a table, index, or TOAST table" +msgstr "\"%s\"はテーブルでもインデックスでもTOASTテーブルでもありません" -#: libpq/auth.c:1781 libpq/auth.c:1811 libpq/auth.c:1848 libpq/auth.c:1917 +#: commands/tablecmds.c:7839 #, c-format -msgid "local user with ID %d does not exist" -msgstr "ID %dのローカルユーザは存在しません" +msgid "cannot move system relation \"%s\"" +msgstr "システムリレーション\"%s\"を移動できません" -#: libpq/auth.c:1838 +#: commands/tablecmds.c:7855 +msgid "cannot move temporary tables of other sessions" +msgstr "他のセッションの一時テーブルを移動できません" + +#: commands/tablecmds.c:8047 +#, +msgid "cannot change inheritance of typed table" +msgstr "型付けされたテーブルの継承を変更できません" + +#: commands/tablecmds.c:8133 +msgid "circular inheritance not allowed" +msgstr "循環した継承を行うことはできません" + +#: commands/tablecmds.c:8134 #, c-format -msgid "could not get effective UID from peer credentials: %m" -msgstr "相手側の資格情報から実効 UID を取得できませんでした: %m" +msgid "\"%s\" is already a child of \"%s\"." +msgstr "\"%s\"はすでに\"%s\"の子です" -#: libpq/auth.c:1928 -msgid "" -"Ident authentication is not supported on local connections on this platform" -msgstr "このプラットフォームのローカル接続ではIdent認証をサポートしていません" +#: commands/tablecmds.c:8142 +#, c-format +msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs" +msgstr "" +"OIDを持たないテーブル\"%s\"をOIDを持つテーブル\"%s\"から継承することはできま" +"せん" -#: libpq/auth.c:2045 libpq/auth.c:2317 libpq/auth.c:2677 -msgid "empty password returned by client" -msgstr "クライアントから空のパスワードが返されました" +#: commands/tablecmds.c:8278 +#, c-format +msgid "column \"%s\" in child table must be marked NOT NULL" +msgstr "子テーブルの列\"%s\"はNOT NULL印が付いていなければなりません" -#: libpq/auth.c:2055 +#: commands/tablecmds.c:8294 #, c-format -msgid "error from underlying PAM layer: %s" -msgstr "背後のPAM層でエラーがありました: %s" +msgid "child table is missing column \"%s\"" +msgstr "子テーブルには列\"%s\"がありません" -#: libpq/auth.c:2124 +#: commands/tablecmds.c:8373 #, c-format -msgid "could not create PAM authenticator: %s" -msgstr "PAM authenticatorを作成できませんでした: %s" +msgid "child table \"%s\" has different definition for check constraint \"%s\"" +msgstr "" +"子テーブル \"%s\" にはチェック制約 \"%s\" のための異なった定義を持っています" -#: libpq/auth.c:2135 +#: commands/tablecmds.c:8397 #, c-format -msgid "pam_set_item(PAM_USER) failed: %s" -msgstr "pam_set_item(PAM_USER)が失敗しました: %s" +msgid "child table is missing constraint \"%s\"" +msgstr "子テーブルには制約 \"%s\" がありません" -#: libpq/auth.c:2146 +#: commands/tablecmds.c:8477 #, c-format -msgid "pam_set_item(PAM_CONV) failed: %s" -msgstr "\"pam_set_item(PAM_CONV)が失敗しました: %s" +msgid "relation \"%s\" is not a parent of relation \"%s\"" +msgstr "リレーション\"%s\"はリレーション\"%s\"の親ではありません" + +#: commands/tablecmds.c:8694 +#, +msgid "typed tables cannot inherit" +msgstr "型付けされたテーブルは継承できません" -#: libpq/auth.c:2157 +#: commands/tablecmds.c:8725 #, c-format -msgid "pam_authenticate failed: %s" -msgstr "\"pam_authenticateが失敗しました: %s" +msgid "table is missing column \"%s\"" +msgstr "テーブルには列 \"%s\" がありません" -#: libpq/auth.c:2168 +#: commands/tablecmds.c:8735 #, c-format -msgid "pam_acct_mgmt failed: %s" -msgstr "pam_acct_mgmtが失敗しました: %s" +msgid "table has column \"%s\" where type requires \"%s\"" +msgstr "テーブルには列 \"%s\" があり、その型は \"%s\" を要求しています" -#: libpq/auth.c:2179 +#: commands/tablecmds.c:8744 #, c-format -msgid "could not release PAM authenticator: %s" -msgstr "PAM authenticatorを解放できませんでした: %s" +msgid "table \"%s\" has different type for column \"%s\"" +msgstr "テーブル \"%s\" には異なる型の列 \"%s\" があります" -#: libpq/auth.c:2212 libpq/auth.c:2216 +#: commands/tablecmds.c:8757 #, c-format -msgid "could not initialize LDAP: error code %d" -msgstr "LDAPを初期化できませんでした: %d" +msgid "table has extra column \"%s\"" +msgstr "テーブルに余計な列 \"%s\" があります" -#: libpq/auth.c:2226 +#: commands/tablecmds.c:8804 #, c-format -msgid "could not set LDAP protocol version: error code %d" -msgstr "LDAPプロトコルバージョンを設定できませんでした: エラーコード %d" +msgid "\"%s\" is not a typed table" +msgstr "\"%s\" は型付けされたテーブルではありません" -#: libpq/auth.c:2255 -msgid "could not load wldap32.dll" -msgstr "wldap32.dllの読み込みができません" +#: commands/tablecmds.c:8973 +msgid "cannot move an owned sequence into another schema" +msgstr "所有するシーケンスを他のスキーマに移動することができません" -#: libpq/auth.c:2263 -msgid "could not load function _ldap_start_tls_sA in wldap32.dll" -msgstr "wldap32.dllの_ldap_start_tls_sA関数を読み込みできませんでした" +#: commands/tablecmds.c:9049 +#, c-format +msgid "relation \"%s\" already exists in schema \"%s\"" +msgstr "リレーション\"%s\"はスキーマ\"%s\"内にすでに存在します" -#: libpq/auth.c:2264 -msgid "LDAP over SSL is not supported on this platform." -msgstr "このプラットフォームではLDAP over SSLをサポートしていません。" +#: commands/sequence.c:126 +#, +msgid "unlogged sequences are not supported" +msgstr "ログを取らないシーケンスはサポートされません" -#: libpq/auth.c:2279 +# (%s) +#: commands/sequence.c:634 #, c-format -msgid "could not start LDAP TLS session: error code %d" -msgstr "LDAP TLSセッションを開始できませんでした: エラーコード %d" - -#: libpq/auth.c:2301 -msgid "LDAP server not specified" -msgstr "LDAP サーバーの指定がありません" +msgid "nextval: reached maximum value of sequence \"%s\" (%s)" +msgstr "nextval: シーケンス\"%s\"の最大値(%s)に達しました" -#: libpq/auth.c:2353 -msgid "invalid character in user name for LDAP authentication" -msgstr "LDAP 認証でユーザー名の中に不正な文字があります" +#: commands/sequence.c:657 +#, c-format +msgid "nextval: reached minimum value of sequence \"%s\" (%s)" +msgstr "nextval: シーケンス\"%s\"の最小値(%s)に達しました" -#: libpq/auth.c:2368 +#: commands/sequence.c:755 #, 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 "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はまだ定義されていません" -#: libpq/auth.c:2393 +#: commands/sequence.c:848 #, 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 "setval: value %s is out of bounds for sequence \"%s\" (%s..%s)" +msgstr "setval: 値%sはシーケンス\"%s\"の範囲(%s..%s)外です\"" + +#: commands/sequence.c:1206 +msgid "INCREMENT must not be zero" +msgstr "INCREMENTはゼロではいけません" -#: libpq/auth.c:2403 +#: commands/sequence.c:1252 #, c-format -msgid "LDAP search failed for filter \"%s\" on server \"%s\": no such user" -msgstr "" -"サーバー \"%2$s\" で、フィルタ \"%1$s\" による LDAP 検索に失敗しました:その" -"ようなユーザーが見つかりません" +msgid "MINVALUE (%s) must be less than MAXVALUE (%s)" +msgstr "MINVALUE (%s)はMAXVALUE (%s)より小さくなければなりません" -#: libpq/auth.c:2407 -msgid "" -"LDAP search failed for filter \"%s\" on server \"%s\": user is not unique (%" -"ld matches)" -msgstr "" -"サーバ \"%2$s\" でフィルタ \"%1$s\" による LDAP 検索に失敗しました:" -"ユーザーが一意ではありません(%3$d 個見つかりました)" +#: commands/sequence.c:1277 +#, c-format +msgid "START value (%s) cannot be less than MINVALUE (%s)" +msgstr "STARTの値(%s)はMINVALUE(%s)より小さくすることはできません" -#: libpq/auth.c:2424 +#: commands/sequence.c:1289 #, 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 "START value (%s) cannot be greater than MAXVALUE (%s)" +msgstr "STARTの値(%s)はMAXVALUE(%s)より大きくすることはできません" -#: libpq/auth.c:2444 +#: commands/sequence.c:1320 #, c-format -msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s" -msgstr "サーバー \"%s\" でユーザー \"%s\" の検索後、unbind できません: %s" +msgid "RESTART value (%s) cannot be less than MINVALUE (%s)" +msgstr "RESTART の値(%s)は MINVALUE(%s) より小さくすることはできません" -#: libpq/auth.c:2481 +#: commands/sequence.c:1332 #, c-format -msgid "LDAP login failed for user \"%s\" on server \"%s\": error code %d" -msgstr "" -"サーバ\"%2$s\"でユーザ\"%1$s\"のLDAPログインが失敗しました: エラーコード %3$d" +msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)" +msgstr "RESTART の値(%s)は MAXVALUE(%s) より大きくすることはできません" -#: libpq/auth.c:2509 -msgid "" -"certificate authentication failed for user \"%s\": client certificate " -"contains no user name" -msgstr "" -"ユーザ \"%s\" の証明書認証に失敗しました:" -"クライアント証明書にユーザ名が含まれていません" +#: commands/sequence.c:1347 +#, c-format +msgid "CACHE (%s) must be greater than zero" +msgstr "CACHE(%s)はゼロより大きくなければなりません" -#: libpq/auth.c:2633 -msgid "RADIUS server not specified" -msgstr "RADIUS サーバーが指定されていません" +#: commands/sequence.c:1378 +msgid "invalid OWNED BY option" +msgstr "無効なOWNED BYオプションです" -#: libpq/auth.c:2640 -msgid "RADIUS secret not specified" -msgstr "RADIUS secret が指定されていません" +#: commands/sequence.c:1379 +msgid "Specify OWNED BY table.column or OWNED BY NONE." +msgstr "OWNED BY table.column または OWNED BY NONEを指定してください。" -#: libpq/auth.c:2656 libpq/hba.c:1213 -msgid "could not translate RADIUS server name \"%s\" to address: %s" -msgstr "RADIUS サーバ名 \"%s\" をアドレスに変換できませんでした: %s" +#: commands/sequence.c:1408 +msgid "sequence must have same owner as table it is linked to" +msgstr "シーケンスは関連するテーブルと同じ所有者でなければなりません" -#: libpq/auth.c:2684 -msgid "" -"RADIUS authentication does not support passwords longer than 16 characters" -msgstr "" -"RADIUS 認証では 16 文字以上のパスワードはサポートしていません" +#: commands/sequence.c:1412 +msgid "sequence must be in same schema as table it is linked to" +msgstr "シーケンスは関連するテーブルと同じスキーマでなければなりません" -#: libpq/auth.c:2695 -msgid "could not generate random encryption vector" -msgstr "乱数化ベクトルを生成できませんでした" +#: commands/variable.c:172 +#, +msgid "Conflicting \"datestyle\" specifications." +msgstr "\"datestyle\" 指定が競合しています" -#: libpq/auth.c:2718 -msgid "could not perform MD5 encryption of password" -msgstr "パスワードの MD5 暗号化に失敗しました" +#: commands/variable.c:328 +msgid "Cannot specify months in time zone interval." +msgstr "タイムゾーンのインターバルに月は指定できません" -#: libpq/auth.c:2740 -msgid "could not create RADIUS socket: %m" -msgstr "RADIUS のソケットを作成できませんでした: %m" +#: commands/variable.c:334 +msgid "Cannot specify days in time zone interval." +msgstr "タイムゾーンのインターバルに日は指定できません" -#: libpq/auth.c:2761 -msgid "could not bind local RADIUS socket: %m" -msgstr "ローカルの RADIUS ソケットをバインドできませんでした: %m" +#: commands/variable.c:378 commands/variable.c:517 +#, c-format +msgid "time zone \"%s\" appears to use leap seconds" +msgstr "時間帯\"%s\"はうるう秒を使用するようです" -#: libpq/auth.c:2771 -msgid "could not send RADIUS packet: %m" -msgstr "RADIUS パケットを送信できませんでした: %m" +#: commands/variable.c:380 commands/variable.c:519 +msgid "PostgreSQL does not support leap seconds." +msgstr "PostgreSQLはうるう秒をサポートしていません" -#: libpq/auth.c:2796 -msgid "could not check status on RADIUS socket: %m" -msgstr "RADIUS ソケットの状態をチェックできませんでした: %m" +#: commands/variable.c:582 +msgid "cannot set transaction read-write mode inside a read-only transaction" +msgstr "" +"読み取りのみのトランザクションでトランザクションモードを読み書きモードに設定" +"することはできません" -#: libpq/auth.c:2803 -msgid "timeout waiting for RADIUS response" -msgstr "RADIUS の応答待ちがタイムアウトしました" +#: commands/variable.c:589 +#, +msgid "transaction read-write mode must be set before any query" +msgstr "トランザクションを読み書きモードに設定する前に、何らかのクエリーを" +"発行しなければなりません" -#: libpq/auth.c:2819 -msgid "could not read RADIUS response: %m" -msgstr "RADIUS 応答を読めませんできませんでした: %m" +#: commands/variable.c:595 +msgid "cannot set transaction read-write mode during recovery" +msgstr "リカバリー中にはトランザクションを読み書きモードに設定できません" -#: libpq/auth.c:2834 libpq/auth.c:2838 -#, c-format -msgid "RADIUS response was sent from incorrect port: %i" -msgstr "RADIUS 応答が誤ったポートから送られました:%i" +#: commands/variable.c:642 +msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query" +msgstr "" +"SET TRANSACTION ISOLATION LEVELを全ての問い合わせの前に呼び出さなければなりま" +"せん" -#: libpq/auth.c:2847 -#, c-format -msgid "RADIUS response too short: %i" -msgstr "RADIUS 応答が短すぎます:%i" +#: commands/variable.c:649 +msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction" +msgstr "" +"SET TRANSACTION ISOLATION LEVELをサブトランザクションで呼び出してはなりません" -#: libpq/auth.c:2854 -#, c-format -msgid "RADIUS response has corrupt length: %i (actual length %i)" -msgstr "RADIUS 応答の長さが正しくありません:%i(実際の長さは %i)" +#: commands/variable.c:655 +#, +msgid "cannot use serializable mode in a hot standby" +msgstr "ホットスタンバイ中はシリアライズモードを使用できません" -#: libpq/auth.c:2862 -#, c-format -msgid "RADIUS response is to a different request: %i (should be %i)" -msgstr "別のリクエストに対する RADIUS 応答です:%i(%i であるべき)" +#: commands/variable.c:656 +#, +msgid "You can use REPEATABLE READ instead." +msgstr "代わりに REPEATABLE READ を使ってください" -#: libpq/auth.c:2887 -msgid "could not perform MD5 encryption of received packet" -msgstr "受信パケットの MD5 暗号化に失敗しました" +#: commands/variable.c:704 +#, +msgid "" +"SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction" +msgstr "SET TRANSACTION [NOT] DEFERRABLE をサブトランザクション内部で" +"呼び出してはなりません" -#: libpq/auth.c:2896 -msgid "RADIUS response has incorrect MD5 signature" -msgstr "RADIUS 応答の MD5 シグネチャが誤っています" +#: commands/variable.c:710 +#, +msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query" +msgstr "SET TRANSACTION [NOT] DEFERRABLE はすべての問い合わせの前に" +"呼び出さなければなりません" -#: libpq/auth.c:2907 +#: commands/variable.c:792 #, c-format -msgid "RADIUS response has invalid code (%i) for user \"%s\"" -msgstr "ユーザ \"%2$s\" に対する RADIUS 応答(%1$i)が無効です" +msgid "Conversion between %s and %s is not supported." +msgstr "%s と %s 間の変換はサポートされていません" -#: 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:518 -#, c-format -msgid "invalid large-object descriptor: %d" -msgstr "ラージオブジェクト記述子が無効です: %d" +#: commands/variable.c:799 +msgid "Cannot change \"client_encoding\" now." +msgstr "現在は \"client_encoding\" を変更できません" -#: libpq/be-fsstubs.c:173 libpq/be-fsstubs.c:205 libpq/be-fsstubs.c:528 +#: commands/variable.c:969 #, c-format -msgid "permission denied for large object %u" -msgstr "ラージオブジェクト %u に対する権限がありません" +msgid "permission denied to set role \"%s\"" +msgstr "ロール\"%s\"を設定する権限がありません" -#: libpq/be-fsstubs.c:194 -#, c-format -msgid "large object descriptor %d was not opened for writing" -msgstr "ラージオブジェクト記述子%dは書き込み用に開かれていませんでした" +#: commands/prepare.c:71 +msgid "invalid statement name: must not be empty" +msgstr "文の名前は無効です: 空ではいけません" -#: libpq/be-fsstubs.c:392 -msgid "must be superuser to use server-side lo_import()" -msgstr "" -"サーバサイドのlo_import()を使用するにはスーパーユーザでなければなりません" +#: commands/prepare.c:140 +msgid "utility statements cannot be prepared" +msgstr "ユーティリティ文を準備できません" -#: libpq/be-fsstubs.c:393 -msgid "Anyone can use the client-side lo_import() provided by libpq." -msgstr "libpqで提供されるlo_import()は誰でも使用できます" +#: commands/prepare.c:240 commands/prepare.c:247 commands/prepare.c:706 +msgid "prepared statement is not a SELECT" +msgstr "準備された文はSELECTではありません" -#: libpq/be-fsstubs.c:406 +#: commands/prepare.c:314 #, c-format -msgid "could not open server file \"%s\": %m" -msgstr "サーバファイル\"%s\"をオープンできませんでした: %m" +msgid "wrong number of parameters for prepared statement \"%s\"" +msgstr "準備された文\"%s\"のパラメータ数が間違っています" -#: libpq/be-fsstubs.c:428 +#: commands/prepare.c:316 #, c-format -msgid "could not read server file \"%s\": %m" -msgstr "サーバファイル\"%s\"を読み取れませんでした: %m" +msgid "Expected %d parameters but got %d." +msgstr "%dパラメータを想定しましたが、%dパラメータでした" -#: libpq/be-fsstubs.c:458 -msgid "must be superuser to use server-side lo_export()" -msgstr "" -"サーバサイドのlo_export()を使用するにはスーパーユーザでなければなりません" +#: commands/prepare.c:345 +msgid "cannot use subquery in EXECUTE parameter" +msgstr "EXECUTEのパラメータに副問い合わせを使用できません" -#: libpq/be-fsstubs.c:459 -msgid "Anyone can use the client-side lo_export() provided by libpq." -msgstr "libpqで提供されるクライアントサイドのlo_export()は誰でも使用できます" +#: commands/prepare.c:349 +msgid "cannot use aggregate function in EXECUTE parameter" +msgstr "EXECUTEのパラメータに集約関数を使用できません" -#: libpq/be-fsstubs.c:483 -#, c-format -msgid "could not create server file \"%s\": %m" -msgstr "サーバファイル\"%s\"を作成できませんでした: %m" +#: commands/prepare.c:353 +msgid "cannot use window function in EXECUTE parameter" +msgstr "EXECUTE のパラメータにはウィンドウ関数を使用できません" -#: libpq/be-fsstubs.c:495 +#: commands/prepare.c:366 #, c-format -msgid "could not write server file \"%s\": %m" -msgstr "サーバファイル\"%s\"を書き出せませんでした: %m" +msgid "parameter $%d of type %s cannot be coerced to the expected type %s" +msgstr "パラメータ$%dの型%sを想定している型%sに強制することができません" -#: libpq/pqcomm.c:294 +#: commands/prepare.c:467 #, c-format -msgid "could not translate host name \"%s\", service \"%s\" to address: %s" -msgstr "ホスト名\"%s\"、サービス\"%s\"をアドレスに変換できませんでした: %s" +msgid "prepared statement \"%s\" already exists" +msgstr "準備された文\"%s\"はすでに存在します" -#: libpq/pqcomm.c:298 +#: commands/prepare.c:525 #, c-format -msgid "could not translate service \"%s\" to address: %s" -msgstr "サービス\"%s\"をアドレスに変換できませんでした: %s" +msgid "prepared statement \"%s\" does not exist" +msgstr "準備された文\"%s\"は存在しません" -#: libpq/pqcomm.c:325 +#: commands/analyze.c:153 #, c-format -msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded" +msgid "skipping analyze of \"%s\" --- lock not available" msgstr "" -"要求されたアドレスを全てバインドできませんでした: MAXLISTEN (%d)を超えていま" -"す" - -#: libpq/pqcomm.c:334 -msgid "IPv4" -msgstr "IPv4" -#: libpq/pqcomm.c:338 -msgid "IPv6" -msgstr "IPv6" +#: commands/analyze.c:170 +#, c-format +msgid "skipping \"%s\" --- only superuser can analyze it" +msgstr "\"%s\" をスキップしています --- スーパーユーザのみが解析できます" -#: libpq/pqcomm.c:343 -msgid "Unix" -msgstr "Unix" +#: commands/analyze.c:174 +#, c-format +msgid "skipping \"%s\" --- only superuser or database owner can analyze it" +msgstr "" +"\"%s\" をスキップしています --- スーパーユーザまたはデータベースの所有者のみ" +"が解析できます" -#: libpq/pqcomm.c:348 +#: commands/analyze.c:178 #, c-format -msgid "unrecognized address family %d" -msgstr "アドレスファミリ %d を認識できません" +msgid "skipping \"%s\" --- only table or database owner can analyze it" +msgstr "" +"\"%s\" をスキップしています --- テーブルまたはデータベースの所有者のみが解析" +"できます" -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:359 +#: commands/analyze.c:194 #, c-format -msgid "could not create %s socket: %m" -msgstr "%sソケットを作成できませんでした: %m" +msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables" +msgstr "" +"\"%s\" をスキップしています --- テーブルでないものや特殊なシステムテーブル" +"を解析することはできません" -#: libpq/pqcomm.c:384 +#: commands/analyze.c:286 #, c-format -msgid "setsockopt(SO_REUSEADDR) failed: %m" -msgstr "setsockopt(SO_REUSEADDR)が失敗しました: %m" +msgid "analyzing \"%s.%s\" inheritance tree" +msgstr "\"%s.%s\"継承ツリーを解析しています" -#: libpq/pqcomm.c:399 +#: commands/analyze.c:291 #, c-format -msgid "setsockopt(IPV6_V6ONLY) failed: %m" -msgstr "setsockopt(IPV6_V6ONLY)が失敗しました: %m" +msgid "analyzing \"%s.%s\"" +msgstr "\"%s.%s\"を解析しています" -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:418 +#: commands/analyze.c:611 #, c-format -msgid "could not bind %s socket: %m" -msgstr "%sソケットをバインドできませんでした: %m" +msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s" +msgstr "テーブル\"%s.%s.%sの自動解析。システム使用状況: %s\"" -#: libpq/pqcomm.c:421 +#: commands/analyze.c:1252 #, c-format msgid "" -"Is another postmaster already running on port %d? If not, remove socket file " -"\"%s\" and retry." +"\"%s\": scanned %d of %u pages, containing %.0f live rows and %.0f dead " +"rows; %d rows in sample, %.0f estimated total rows" msgstr "" -"すでに他にpostmasterがポート%dで稼動していませんか? 稼動していなければソケッ" -"トファイル\"%s\"を削除し再実行してください" +"\"%1$s\": %3$uページの内%2$dをスキャン。%4$.0fの有効な行と%5$.0fの不要な行を" +"含有。%6$d行をサンプリング。推定総行数は%7$.0f" -#: libpq/pqcomm.c:424 -#, c-format -msgid "" -"Is another postmaster already running on port %d? If not, wait a few seconds " -"and retry." -msgstr "" -"すでに他にpostmasterがポート%dで稼動していませんか? 稼動していなければ数秒" -"待ってから再実行してください" +#: commands/cluster.c:134 commands/cluster.c:372 +msgid "cannot cluster temporary tables of other sessions" +msgstr "他のセッションの一時テーブルをクラスタ化できません" -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:457 +#: commands/cluster.c:164 #, c-format -msgid "could not listen on %s socket: %m" -msgstr "%sソケットをlistenできませんでした: %m" +msgid "there is no previously clustered index for table \"%s\"" +msgstr "テーブル\"%s\"には事前にクラスタ化されたインデックスはありません" + +#: commands/cluster.c:361 +msgid "cannot cluster a shared catalog" +msgstr "共有カタログをクラスタ化できません" + +#: commands/cluster.c:376 +msgid "cannot vacuum temporary tables of other sessions" +msgstr "他のセッションの一時テーブルはバキュームできません" -#: libpq/pqcomm.c:537 +#: commands/cluster.c:426 #, c-format -msgid "group \"%s\" does not exist" -msgstr "グループ\"%s\"は存在しません" +msgid "\"%s\" is not an index for table \"%s\"" +msgstr "\"%s\"はテーブル\"%s\"のインデックスではありません" -#: libpq/pqcomm.c:547 +#: commands/cluster.c:434 #, c-format -msgid "could not set group of file \"%s\": %m" -msgstr "ファイル\"%s\"のグループを設定できませんでした: %m" +msgid "" +"cannot cluster on index \"%s\" because access method does not support " +"clustering" +msgstr "" +"インデックス\"%s\"でクラスタ化できません。アクセスメソッドがクラスタ化をサ" +"ポートしないためです" -#: libpq/pqcomm.c:558 +#: commands/cluster.c:446 #, c-format -msgid "could not set permissions of file \"%s\": %m" -msgstr "ファイル\"%s\"の権限を設定できませんでした: %m" +msgid "cannot cluster on partial index \"%s\"" +msgstr "部分インデックス\"%s\"をクラスタ化できません" -#: libpq/pqcomm.c:588 +#: commands/cluster.c:460 #, c-format -msgid "could not accept new connection: %m" -msgstr "新しい接続を受け付けることができませんでした: %m" +msgid "cannot cluster on invalid index \"%s\"" +msgstr "無効なインデックス\"%s\"をクラスタ化できません" -#: libpq/pqcomm.c:774 libpq/pqcomm.c:874 +#: commands/cluster.c:879 #, c-format -msgid "could not receive data from client: %m" -msgstr "クライアントからデータを受信できませんでした: %m" +msgid "clustering \"%s.%s\" using index scan on \"%s\"" +msgstr " \"%3$s\" に対するインデックススキャンを使って \"%1$s.%2$s\" を" +"クラスタ化しています" -#: libpq/pqcomm.c:849 -msgid "could not set socket to non-blocking mode: %m" -msgstr "ソケットを非ブロッキングモードに設定できませんでした: %m" +#: commands/cluster.c:885 +#, c-format +msgid "clustering \"%s.%s\" using sequential scan and sort" +msgstr "シーケンシャルスキャンとソートを使って \"%s.%s\" をクラスタ化しています" -#: libpq/pqcomm.c:895 libpq/pqcomm.c:906 -msgid "could not set socket to blocking mode: %m" -msgstr "ソケットをブロッキングモードに設定できませんでした: %m" +#: commands/cluster.c:1050 +#, c-format +msgid "" +"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages" +msgstr "\"%1$s\": 全 %4$u ページ中に見つかった行バージョン" +":移動可能 %2$.0f 行、削除不可 %3$.0f 行" -#: libpq/pqcomm.c:1051 -msgid "unexpected EOF within message length word" -msgstr "メッセージ長ワード内のEOFは想定外です" +#: commands/cluster.c:1054 +#, c-format +msgid "" +"%.0f dead row versions cannot be removed yet.\n" +"%s." +msgstr "%.0f 個の無効な行を今はまだ削除できません。\n" +"%s." -#: libpq/pqcomm.c:1062 -msgid "invalid message length" -msgstr "メッセージ長が無効です" +#: commands/portalcmds.c:61 commands/portalcmds.c:160 +#: commands/portalcmds.c:212 +msgid "invalid cursor name: must not be empty" +msgstr "カーソル名が無効です: 空ではいけません" -#: libpq/pqcomm.c:1084 libpq/pqcomm.c:1094 -msgid "incomplete message from client" -msgstr "クライアントからのメッセージが不完全です" +#: commands/portalcmds.c:409 +msgid "could not reposition held cursor" +msgstr "保持したカーソルの位置を変更できませんでした" -#: libpq/pqcomm.c:1203 +#: commands/functioncmds.c:100 #, c-format -msgid "could not send data to client: %m" -msgstr "クライアントにデータを送信できませんでした: %m" +msgid "SQL function cannot return shell type %s" +msgstr "SQL関数はシェル型%sをかえすことができません" -#: libpq/be-secure.c:283 libpq/be-secure.c:378 +#: commands/functioncmds.c:105 #, c-format -msgid "SSL error: %s" -msgstr "SSLエラーです: %s" +msgid "return type %s is only a shell" +msgstr "戻り値型%sは単なるシェルです" -#: libpq/be-secure.c:292 libpq/be-secure.c:387 libpq/be-secure.c:951 +#: commands/functioncmds.c:140 #, c-format -msgid "unrecognized SSL error code: %d" -msgstr "SSLエラーコードが不明です: %d" - -#: libpq/be-secure.c:331 libpq/be-secure.c:335 libpq/be-secure.c:345 -msgid "SSL renegotiation failure" -msgstr "SSL再調停の失敗" +msgid "type \"%s\" is not yet defined" +msgstr "型\"%s\"は未定義です" -#: libpq/be-secure.c:339 -msgid "SSL failed to send renegotiation request" -msgstr "SSLで再調停要求の送信に失敗しました" +#: commands/functioncmds.c:141 +msgid "Creating a shell type definition." +msgstr "シェル型定義を作成しています" -#: libpq/be-secure.c:736 +#: commands/functioncmds.c:220 #, c-format -msgid "could not create SSL context: %s" -msgstr "SSLコンテキストを作成できませんでした: %s" +msgid "SQL function cannot accept shell type %s" +msgstr "SQL関数はシェル型\"%s\"を受け付けられません" -#: libpq/be-secure.c:746 +#: commands/functioncmds.c:225 #, c-format -msgid "could not load server certificate file \"%s\": %s" -msgstr "サーバ証明書ファイル\"%s\"をロードできませんでした: %s" +msgid "argument type %s is only a shell" +msgstr "引数型%sは単なるシェルです" -#: libpq/be-secure.c:752 +#: commands/functioncmds.c:235 #, c-format -msgid "could not access private key file \"%s\": %m" -msgstr "秘密キーファイル\"%s\"にアクセスできませんでした: %m" +msgid "type %s does not exist" +msgstr "型%sは存在しません" -#: libpq/be-secure.c:767 -#, c-format -msgid "private key file \"%s\" has group or world access" -msgstr "秘密キーファイル \"%s\" はグループまたは全員からアクセス可能です" +#: commands/functioncmds.c:243 +msgid "functions cannot accept set arguments" +msgstr "関数は集合を引数として受け付けられません" -#: libpq/be-secure.c:769 -msgid "Permissions should be u=rw (0600) or less." -msgstr "権限はu=rwx(0700)でなければなりません" +#: commands/functioncmds.c:252 +msgid "VARIADIC parameter must be the last input parameter" +msgstr "VARIADIC パラメータは最後の入力パラメータでなければなりません" -#: libpq/be-secure.c:776 -#, c-format -msgid "could not load private key file \"%s\": %s" -msgstr "秘密キーファイル\"%s\"をロードできませんでした: %s" +#: commands/functioncmds.c:279 +msgid "VARIADIC parameter must be an array" +msgstr "VARIADIC パラメータは配列でなければなりません" -#: libpq/be-secure.c:781 +#: commands/functioncmds.c:319 #, c-format -msgid "check of private key failed: %s" -msgstr "秘密キーの検査に失敗しました: %s" +msgid "parameter name \"%s\" used more than once" +msgstr "パラメータ \"%s\" が複数指定されました" -#: libpq/be-secure.c:809 -#, c-format -msgid "could not access root certificate file \"%s\": %m" -msgstr "ルート証明ファイル \"%s\" にアクセスできませんでした: %m" +#: commands/functioncmds.c:334 +msgid "only input parameters can have default values" +msgstr "入力パラメータのみがデフォルト値を持てます" -#: libpq/be-secure.c:820 -#, c-format -msgid "could not load root certificate file \"%s\": %s" -msgstr "ルート証明ファイル\"%s\"をロードできませんでした: %s" +#: commands/functioncmds.c:347 +msgid "cannot use table references in parameter default value" +msgstr "パラメータのデフォルト値としてテーブル参照を使用できません" -#: libpq/be-secure.c:843 -#, c-format -msgid "SSL certificate revocation list file \"%s\" ignored" -msgstr "SSL証明書失効リストファイル\"%s\"は無視されました" +#: commands/functioncmds.c:363 +msgid "cannot use subquery in parameter default value" +msgstr "パラメータのデフォルト値として副問い合わせを使用できません" -#: libpq/be-secure.c:845 -msgid "SSL library does not support certificate revocation lists." -msgstr "SSLライブラリが証明書失効リストをサポートしていません。" +#: commands/functioncmds.c:367 +msgid "cannot use aggregate function in parameter default value" +msgstr "パラメータのデフォルト値として集約関数を使用できません" -#: libpq/be-secure.c:852 -#, c-format -msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s" -msgstr "SSL証明書失効リストファイル\"%s\"がありません。省略します: %s" +#: commands/functioncmds.c:371 +msgid "cannot use window function in parameter default value" +msgstr "パラメータのデフォルト値としてウィンドウ関数を使用できません" -#: libpq/be-secure.c:854 -msgid "Certificates will not be checked against revocation list." -msgstr "証明書は失効リストに対して検査されません。" +#: commands/functioncmds.c:381 +msgid "input parameters after one with a default value must also have defaults" +msgstr "" +"デフォルト値を持つパラメータの後にある入力パラメータは、必ずデフォルト値を持" +"たなければなりません" -#: libpq/be-secure.c:896 +#: commands/functioncmds.c:620 +msgid "no function body specified" +msgstr "関数本体の指定がありません" + +#: commands/functioncmds.c:630 +msgid "no language specified" +msgstr "言語が指定されていません" + +#: commands/functioncmds.c:651 commands/functioncmds.c:1352 +msgid "COST must be positive" +msgstr "コストは正数でなければなりません" + +#: commands/functioncmds.c:659 commands/functioncmds.c:1360 +msgid "ROWS must be positive" +msgstr "ROWSは正数でなければなりません" + +#: commands/functioncmds.c:698 #, c-format -msgid "could not initialize SSL connection: %s" -msgstr "SSL接続を初期化できませんでした: %s" +msgid "unrecognized function attribute \"%s\" ignored" +msgstr "不明な関数属性\"%s\"は無視しました" -#: libpq/be-secure.c:905 +#: commands/functioncmds.c:749 #, c-format -msgid "could not set SSL socket: %s" -msgstr "SSLソケットを設定できませんでした: %s" +msgid "only one AS item needed for language \"%s\"" +msgstr "言語\"%s\"ではAS項目は1つだけ必要です" -#: libpq/be-secure.c:931 +#: commands/functioncmds.c:839 commands/functioncmds.c:2019 +#: commands/proclang.c:602 commands/proclang.c:642 commands/proclang.c:756 #, c-format -msgid "could not accept SSL connection: %m" -msgstr "SSL接続を受け付けられませんでした: %m" +msgid "language \"%s\" does not exist" +msgstr "言語\"%s\"は存在しません" -#: libpq/be-secure.c:935 libpq/be-secure.c:946 -msgid "could not accept SSL connection: EOF detected" -msgstr "SSL接続を受け付けられませんでした: EOFを検出しました" +#: commands/functioncmds.c:841 commands/functioncmds.c:2021 +msgid "Use CREATE LANGUAGE to load the language into the database." +msgstr "言語をデータベースに読み込むためにはCREATE LANGUAGEを使用してください" -#: libpq/be-secure.c:940 +#: commands/functioncmds.c:888 #, c-format -msgid "could not accept SSL connection: %s" -msgstr "SSL接続を受け付けられませんでした: %s" +msgid "function result type must be %s because of OUT parameters" +msgstr "OUTパラメータのため、関数の戻り値型は%sでなければなりません。" -#: libpq/be-secure.c:991 -msgid "SSL certificate's common name contains embedded null" -msgstr "SSL 証明書のコモンネームに null が含まれています" +#: commands/functioncmds.c:901 +msgid "function result type must be specified" +msgstr "関数の結果型を指定しなければなりません" -#: libpq/be-secure.c:998 +#: commands/functioncmds.c:936 commands/functioncmds.c:1364 +msgid "ROWS is not applicable when function does not return a set" +msgstr "関数が集合を返す場合にROWSは適していません" + +#: commands/functioncmds.c:988 #, c-format -msgid "SSL connection from \"%s\"" -msgstr "\"%s\"からのSSL接続" +msgid "function %s(%s) does not exist, skipping" +msgstr "関数%s(%s)は存在しません。省略します" -#: libpq/be-secure.c:1042 -msgid "no SSL error reported" -msgstr "SSLエラーはありませんでした" +#: commands/functioncmds.c:1010 +msgid "Use DROP AGGREGATE to drop aggregate functions." +msgstr "集約関数を削除するにはDROP AGGREGATEを使用してください" -#: libpq/be-secure.c:1046 +#: commands/functioncmds.c:1017 #, c-format -msgid "SSL error code %lu" -msgstr "SSLエラーコード: %lu" - -#: libpq/pqformat.c:436 -msgid "no data left in message" -msgstr "メッセージ内にデータが残っていません" +msgid "removing built-in function \"%s\"" +msgstr "組み込み関数\"%s\"を削除しています" -#: libpq/pqformat.c:636 -msgid "invalid string in message" -msgstr "メッセージ内の文字列が無効です" +#: commands/functioncmds.c:1110 +msgid "Use ALTER AGGREGATE to rename aggregate functions." +msgstr "集約関数の名前を変更するにはALTER AGGREGATEを使用してください。" -#: libpq/pqformat.c:652 -msgid "invalid message format" -msgstr "メッセージの書式が無効です" +#: commands/functioncmds.c:1173 +msgid "Use ALTER AGGREGATE to change owner of aggregate functions." +msgstr "集約関数の所有者を変更するにはALTER AGGREGATEを使用してください。" -#: libpq/hba.c:158 +#: commands/functioncmds.c:1511 #, c-format -msgid "authentication file token too long, skipping: \"%s\"" -msgstr "認証ファイルのトークンが長すぎますので、飛ばします: \"%s\"" +msgid "source data type %s is a pseudo-type" +msgstr "変換元データ型%sは仮想型です" -#: libpq/hba.c:351 +#: commands/functioncmds.c:1517 #, c-format -msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" -msgstr "" -"セカンダリ認証ファイル\"@%s\"を\"%s\"としてオープンできませんでした: %m" +msgid "target data type %s is a pseudo-type" +msgstr "変換先データ型%sは仮想型です" -#. translator: the second %s is a list of auth methods -#: libpq/hba.c:651 -#, c-format +#: commands/functioncmds.c:1554 +msgid "cast function must take one to three arguments" +msgstr "キャスト関数の引数は1つから3つまででなければなりません" + +#: commands/functioncmds.c:1558 msgid "" -"authentication option \"%s\" is only valid for authentication methods %s" -msgstr "認証オプション\"%s\"は認証方式%sでのみ有効です" +"argument of cast function must match or be binary-coercible from source data " +"type" +msgstr "" +"キャスト関数の引数は変換元データ型と一致するか、またはバイナリ型を強要できな" +"ければなりません" -#: libpq/hba.c:667 -#, c-format -msgid "authentication method \"%s\" requires argument \"%s\" to be set" -msgstr "認証方式\"%s\"の場合は引数\"%s\"がセットされなければなりません" +#: commands/functioncmds.c:1562 +msgid "second argument of cast function must be type integer" +msgstr "キャスト関数の第2引数は整数型でなければなりません" -#: libpq/hba.c:713 -msgid "hostssl not supported on this platform" -msgstr "このプラットフォームでは hostssl をサポートしていません" +#: commands/functioncmds.c:1566 +msgid "third argument of cast function must be type boolean" +msgstr "キャスト関数の第3引数は論理型でなければなりません" -#: libpq/hba.c:714 -msgid "Compile with --with-openssl to use SSL connections." -msgstr "SSL 接続を有効にするには --with-openssl でコンパイルしてください" +#: commands/functioncmds.c:1570 +msgid "" +"return data type of cast function must match or be binary-coercible to " +"target data type" +msgstr "" +"キャスト関数の戻り値データ型は変換後データ型と一致するか、またはバイナリ型を" +"強要できなければなりません" -#: libpq/hba.c:736 -#, c-format -msgid "invalid connection type \"%s\"" -msgstr "接続オプションタイプ \"%s\" は無効です" +#: commands/functioncmds.c:1581 +msgid "cast function must not be volatile" +msgstr "キャスト関数はvolatileではいけません" -#: libpq/hba.c:749 -msgid "end-of-line before database specification" -msgstr "データベース指定の前に行末を検出しました" +#: commands/functioncmds.c:1586 +msgid "cast function must not be an aggregate function" +msgstr "キャスト関数は集約関数ではいけません" -#: libpq/hba.c:762 -msgid "end-of-line before role specification" -msgstr "ロール指定の前に行末を検出しました" +#: commands/functioncmds.c:1590 +msgid "cast function must not be a window function" +msgstr "キャスト関数は集約関数ではいけません" -#: libpq/hba.c:777 -msgid "end-of-line before IP address specification" -msgstr "IP アドレス指定の前に行末を検出しました" +#: commands/functioncmds.c:1594 +msgid "cast function must not return a set" +msgstr "キャスト関数は集合を返してはいけません" -#: libpq/hba.c:823 -#, c-format -msgid "invalid IP address \"%s\": %s" -msgstr "IP アドレス \"%s\" は有効ではありません: %s" +#: commands/functioncmds.c:1620 +msgid "must be superuser to create a cast WITHOUT FUNCTION" +msgstr "" +"WITHOUT FUNCTION句付きのキャストを作成するにはスーパーユーザでなければなりま" +"せん" -#: libpq/hba.c:846 -#, c-format -msgid "invalid CIDR mask in address \"%s\"" -msgstr "IP アドレス \"%s\" 内の CIDR マスクが無効です" +#: commands/functioncmds.c:1635 +msgid "source and target data types are not physically compatible" +msgstr "変換元と変換先のデータ型の間には物理的な互換性がありません" -#: libpq/hba.c:864 -msgid "end-of-line before netmask specification" -msgstr "ネットマスク指定の前に行末を検出しました" +#: commands/functioncmds.c:1650 +msgid "composite data types are not binary-compatible" +msgstr "複合データ型はバイナリ互換ではありません" -#: libpq/hba.c:876 -#, c-format -msgid "invalid IP mask \"%s\": %s" -msgstr "IP マスク \"%s\" は有効ではありません: %s" +#: commands/functioncmds.c:1656 +msgid "enum data types are not binary-compatible" +msgstr "列挙データ型はバイナリ互換ではありません" -#: libpq/hba.c:893 -msgid "IP address and mask do not match" -msgstr "IPアドレスとマスクが一致しません" +#: commands/functioncmds.c:1662 +msgid "array data types are not binary-compatible" +msgstr "配列データ型はバイナリ互換ではありません" -#: libpq/hba.c:908 -msgid "end-of-line before authentication method" -msgstr "認証方式指定の前に行末を検出しました" +#: commands/functioncmds.c:1679 +#, +msgid "domain data types must not be marked binary-compatible" +msgstr "ドメインデータ型はバイナリ互換としてマークされていてはなりません" + +#: commands/functioncmds.c:1689 +msgid "source data type and target data type are the same" +msgstr "変換元と変換先のデータ型が同一です" -#: libpq/hba.c:979 +#: commands/functioncmds.c:1722 #, c-format -msgid "invalid authentication method \"%s\"" -msgstr "認証方式 \"%s\" が有効ではありません" +msgid "cast from type %s to type %s already exists" +msgstr "型%sから型%sへのキャストはすでに存在しています" -#: libpq/hba.c:990 +#: commands/functioncmds.c:1803 #, c-format -msgid "invalid authentication method \"%s\": not supported on this platform" -msgstr "無効な認証方式 \"%s\":このプラットフォームではサポートされていません" +msgid "cast from type %s to type %s does not exist, skipping" +msgstr "型%sから型%sへのキャストは存在しません。省略します" -#: libpq/hba.c:1003 -msgid "krb5 authentication is not supported on local sockets" -msgstr "ローカルソケット上の KRB5 認証はサポートしていません" +#: commands/functioncmds.c:1841 +#, c-format +msgid "cast from type %s to type %s does not exist" +msgstr "型%sから型%sへのキャストは存在しません" -#: libpq/hba.c:1014 -msgid "gssapi authentication is not supported on local sockets" -msgstr "ローカルソケットでは gssapi 認証をサポートしていません" +#: commands/functioncmds.c:1929 +#, c-format +msgid "function \"%s\" already exists in schema \"%s\"" +msgstr "関数\"%s\"はすでにスキーマ\"%s\"内に存在します" -#: libpq/hba.c:1031 -msgid "cert authentication is only supported on hostssl connections" -msgstr "hostssl 接続では証明書認証のみをサポートしています" +#: commands/functioncmds.c:2003 +msgid "no inline code specified" +msgstr "インラインコードの指定がありません" -#: libpq/hba.c:1052 +#: commands/functioncmds.c:2051 #, c-format -msgid "authentication option not in name=value format: %s" -msgstr "認証オプションが 名前=値 形式になっていません:%s" +msgid "language \"%s\" does not support inline code execution" +msgstr "言語 \"%s\" ではインラインコード実行をサポートしていません" -#: libpq/hba.c:1067 -msgid "ident, krb5, gssapi, sspi and cert" -msgstr "ident、krb5、gssapi、sspiおよびcert" +#: commands/async.c:567 +msgid "channel name cannot be empty" +msgstr "チャネル名が空であることはできません" -#: libpq/hba.c:1081 -msgid "clientcert can only be configured for \"hostssl\" rows" -msgstr "クライアント証明書は \"hostssl\" な行でのみ設定できます" +#: commands/async.c:572 +msgid "channel name too long" +msgstr "チャネル名が長すぎます" + +#: commands/async.c:579 +msgid "payload string too long" +msgstr "ペイロード文字列が長すぎます" -#: libpq/hba.c:1092 +#: commands/async.c:763 msgid "" -"client certificates can only be checked if a root certificate store is " -"available" +"cannot PREPARE a transaction that has executed LISTEN, UNLISTEN or NOTIFY" msgstr "" -"クライアント証明書はルート証明書ストアが利用できる場合にのみ検証されます" - -#: libpq/hba.c:1093 -msgid "Make sure the root.crt file is present and readable." -msgstr "root.crt ファイルが存在し、かつ読める状態になっていることを確認してください" +"すでに LISTEN / UNLISTEN / NOTIFY を実行したトランザクションは PREPARE できま" +"せん" -#: libpq/hba.c:1106 -msgid "clientcert can not be set to 0 when using \"cert\" authentication" -msgstr "\"cert\" 認証を使う場合は clientcert が 0 であってはなりません" +#: commands/async.c:868 +msgid "too many notifications in the NOTIFY queue" +msgstr "NOTIFY キューで発生した通知イベントが多すぎます" -#: libpq/hba.c:1140 +#: commands/async.c:1430 #, c-format -msgid "invalid LDAP port number: \"%s\"" -msgstr "無効なLDAPポート番号です: \"%s\"" - -#: libpq/hba.c:1186 libpq/hba.c:1194 -msgid "krb5, gssapi and sspi" -msgstr "krb5、gssapiおよびsspi" - -#: libpq/hba.c:1232 -msgid "invalid RADIUS port number: \"%s\"" -msgstr "無効な RADIUS ポート番号です: \"%s\"" - -#: libpq/hba.c:1252 -msgid "unrecognized authentication option name: \"%s\"" -msgstr "認証オプション名を認識できません: \"%s\"" +msgid "NOTIFY queue is %.0f%% full" +msgstr "NOTYFY キューが %.0f%% まで一杯になっています" -#: libpq/hba.c:1284 +#: commands/async.c:1432 +#, c-format msgid "" -"cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, or ldapsearchattribute " -"together with ldapprefix" -msgstr "" -"ldapbasedn, ldapbinddn, ldapbindpasswd, ldapsearchattribute は、" -"ldapprefix と同時には指定できません" +"The server process with PID %d is among those with the oldest transactions." +msgstr "PID %d のサーバプロセスは、最も古いトランザクション中にあります。" -#: libpq/hba.c:1294 +#: commands/async.c:1435 msgid "" -"authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix" -"\", or \"ldapsuffix\" to be set" +"The NOTIFY queue cannot be emptied until that process ends its current " +"transaction." msgstr "" -"\"ldap\" 認証方式の場合は引数 \"ldapbasedn\", \"ldapprefix\" " -"\"ldapsuffix\" のいずれかを指定してください" +"プロセスが現在のトランザクションを終了するまで NOTYFY キューを空にすることは" +"できません" -#: libpq/hba.c:1614 +#: commands/tsearchcmds.c:117 commands/tsearchcmds.c:1044 #, c-format -msgid "invalid regular expression \"%s\": %s" -msgstr "正規表現\"%s\"が無効です: %s" +msgid "function %s should return type %s" +msgstr "関数%sは型%sを返すことができません" -#: libpq/hba.c:1637 -#, c-format -msgid "regular expression match for \"%s\" failed: %s" -msgstr "正規表現\"%s\"でマッチングに失敗しました: %s" +#: commands/tsearchcmds.c:189 +msgid "must be superuser to create text search parsers" +msgstr "テキスト検索パーサを作成するにはスーパーユーザでなければなりません" -#: libpq/hba.c:1655 +#: commands/tsearchcmds.c:237 #, c-format -msgid "" -"regular expression \"%s\" has no subexpressions as requested by " -"backreference in \"%s\"" -msgstr "" -"正規表現\"%s\"には\"%s\"における後方参照が要求する副表現式が含まれていません" +msgid "text search parser parameter \"%s\" not recognized" +msgstr "テキスト検索パーサ\"%s\"は不明です" -#: libpq/hba.c:1721 -#, c-format -msgid "missing entry in file \"%s\" at end of line %d" -msgstr "ファイル\"%s\"の最終行%dでエントリが足りません" +#: commands/tsearchcmds.c:247 +msgid "text search parser start method is required" +msgstr "テキスト検索パーサの開始メソッドが必要です" -#: libpq/hba.c:1762 -msgid "provided user name (%s) and authenticated user name (%s) do not match" -msgstr "与えられたユーザー名 (%s) と認証されたユーザー名 (%s) が一致しません" +#: commands/tsearchcmds.c:252 +msgid "text search parser gettoken method is required" +msgstr "テキスト検索パーサのgettokenメソッドが必要です" -#: libpq/hba.c:1783 -msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\"" -msgstr "\"%3$s\"として認証されたユーザ \"%2$s\" はユーザマップ \"%1$s\" に一致しません" +#: commands/tsearchcmds.c:257 +msgid "text search parser end method is required" +msgstr "テキスト検索パーサの終了メソッドが必要です" -#: libpq/hba.c:1807 -msgid "could not open usermap file \"%s\": %m" -msgstr "ユーザマップファイル \"%s\" をオープンできませんでした: %m" +#: commands/tsearchcmds.c:262 +msgid "text search parser lextypes method is required" +msgstr "テキスト検索パーサのlextypesメソッドが必要です" -#: parser/scansup.c:190 -msgid "identifier \"%s\" will be truncated to \"%s\"" -msgstr "識別子 \"%s\" を \"%s\" に切り詰めます" +#: commands/tsearchcmds.c:297 +msgid "must be superuser to drop text search parsers" +msgstr "テキスト検索パーサを削除するにはスーパーユーザでなければなりません" -#: parser/parse_type.c:83 +#: commands/tsearchcmds.c:326 #, c-format -msgid "improper %%TYPE reference (too few dotted names): %s" -msgstr "%%TYPE参照が不適切です(ドット付きの名前が少なすぎます: %s" +msgid "text search parser \"%s\" does not exist, skipping" +msgstr "テキスト検索パーサ\"%s\"は存在しません。省略します" -#: parser/parse_type.c:105 -#, c-format -msgid "improper %%TYPE reference (too many dotted names): %s" -msgstr "%%TYPE参照が不適切です(ドット付きの名前が多すぎます: %s" +#: commands/tsearchcmds.c:381 +msgid "must be superuser to rename text search parsers" +msgstr "" +"テキスト検索パーサの名前を変更するにはスーパーユーザでなければなりません" -#: parser/parse_type.c:127 +#: commands/tsearchcmds.c:399 #, c-format -msgid "type reference %s converted to %s" -msgstr "型参照%sは%sに変換されました" +msgid "text search parser \"%s\" already exists" +msgstr "テキスト検索パーサ\"%s\"はすでに存在します" -#: parser/parse_type.c:270 +#: commands/tsearchcmds.c:525 #, c-format -msgid "type modifier is not allowed for type \"%s\"" -msgstr "型\"%s\"では型修正子は許されません" +msgid "text search template \"%s\" does not accept options" +msgstr "テキスト検索テンプレート\"%s\"はオプションを受け付けません" -#: parser/parse_type.c:313 -msgid "type modifiers must be simple constants or identifiers" -msgstr "型修正子は単純な定数または識別子でなければなりません" +#: commands/tsearchcmds.c:598 +msgid "text search template is required" +msgstr "テキスト検索テンプレートが必要です" -#: parser/parse_type.c:548 parser/parse_type.c:647 +#: commands/tsearchcmds.c:667 #, c-format -msgid "invalid type name \"%s\"" -msgstr "型の名前\"%s\"が無効です" +msgid "text search dictionary \"%s\" already exists" +msgstr "テキスト検索辞書\"%s\"はすでに存在します" -#: parser/parse_oper.c:254 parser/parse_agg.c:127 +#: commands/tsearchcmds.c:775 #, c-format -msgid "could not identify an ordering operator for type %s" -msgstr "型%sの順序演算子を識別できませんでした" +msgid "text search dictionary \"%s\" does not exist, skipping" +msgstr "テキスト検索辞書\"%s\"は存在しません。省略します" -#: parser/parse_oper.c:256 -msgid "Use an explicit ordering operator or modify the query." -msgstr "明示的に順序演算子を使用するか問い合わせを変更してください" +#: commands/tsearchcmds.c:1108 +msgid "must be superuser to create text search templates" +msgstr "" +"テキスト検索テンプレートを作成するにはスーパーユーザでなければなりません" -#: parser/parse_oper.c:509 +#: commands/tsearchcmds.c:1145 #, c-format -msgid "operator requires run-time type coercion: %s" -msgstr "演算子は実行時の型強制が必要です: %s" +msgid "text search template parameter \"%s\" not recognized" +msgstr "テキスト検索テンプレートのパラメータ\"%sは不明です。" -#: parser/parse_oper.c:743 -#, c-format -msgid "operator is not unique: %s" -msgstr "演算子は一意ではありません: %s" +#: commands/tsearchcmds.c:1155 +msgid "text search template lexize method is required" +msgstr "テキスト検索テンプレートのlexizeメソッドが必要です" -#: parser/parse_oper.c:745 -msgid "" -"Could not choose a best candidate operator. You might need to add explicit " -"type casts." +#: commands/tsearchcmds.c:1193 +msgid "must be superuser to rename text search templates" msgstr "" -"最善の候補演算子を選択できませんでした。明示的な型キャストが必要かもしれませ" +"テキスト検索テンプレートの名前を変更するにはスーパーユーザでなければなりませ" "ん" -#: parser/parse_oper.c:753 -msgid "" -"No operator matches the given name and argument type(s). You might need to " -"add explicit type casts." -msgstr "" -"指定名称、指定引数型に合う演算子がありません。明示的な型キャストが必要かもし" -"れません" - -#: parser/parse_oper.c:812 parser/parse_oper.c:925 +#: commands/tsearchcmds.c:1212 #, c-format -msgid "operator is only a shell: %s" -msgstr "演算子は単なるシェルです:%s" - -#: parser/parse_oper.c:913 -msgid "op ANY/ALL (array) requires array on right side" -msgstr "演算子 ANY/ALL (配列) は右側に配列が必要です" +msgid "text search template \"%s\" already exists" +msgstr "テキスト検索テンプレート\"%s\"はすでに存在します" -#: parser/parse_oper.c:955 -msgid "op ANY/ALL (array) requires operator to yield boolean" -msgstr "演算子 ANY/ALL (配列) の演算子はブール型を返さなければなりません" +#: commands/tsearchcmds.c:1281 +msgid "must be superuser to drop text search templates" +msgstr "" +"テキスト検索テンプレートを削除するにはスーパーユーザでなければなりません" -#: parser/parse_oper.c:960 -msgid "op ANY/ALL (array) requires operator not to return a set" -msgstr "演算子 ANY/ALL (配列) の演算子は集合を返してはいけません" +#: commands/tsearchcmds.c:1310 +#, c-format +msgid "text search template \"%s\" does not exist, skipping" +msgstr "テキスト検索テンプレート\"%s\"は存在しません。省略します" -#: parser/parse_oper.c:980 parser/parse_coerce.c:1568 -#: parser/parse_coerce.c:1585 parser/parse_coerce.c:1643 -#: parser/parse_expr.c:1692 parser/parse_func.c:354 nodes/nodeFuncs.c:110 -#: nodes/nodeFuncs.c:136 +#: commands/tsearchcmds.c:1509 #, c-format -msgid "could not find array type for data type %s" -msgstr "データ型%sの配列型がありませんでした" +msgid "text search configuration parameter \"%s\" not recognized" +msgstr "テキスト検索設定のパラメータ\"%s\"は不明です" -#: parser/parse_utilcmd.c:306 -msgid "array of serial is not implemented" -msgstr "連番(SERIAL)の配列は実装されていません" +#: commands/tsearchcmds.c:1516 +msgid "cannot specify both PARSER and COPY options" +msgstr "PARSERとCOPYオプションをまとめて指定できません" + +#: commands/tsearchcmds.c:1544 +msgid "text search parser is required" +msgstr "テキスト検索パーサが必要です" -#: parser/parse_utilcmd.c:350 +#: commands/tsearchcmds.c:1653 #, c-format -msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\"" -msgstr "" -"%1$sはシリアル列\"%3$s.%4$s\"用に暗黙的なシーケンス\"%2$s\"を作成します。" +msgid "text search configuration \"%s\" already exists" +msgstr "テキスト検索設定\"%s\"はすでに存在します" -#: parser/parse_utilcmd.c:439 parser/parse_utilcmd.c:451 +#: commands/tsearchcmds.c:1760 #, c-format -msgid "" -"conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\"" -msgstr "テーブル\"%2$s\"の列\"%1$s\"でNULL宣言とNOT NULL宣言が競合しています" +msgid "text search configuration \"%s\" does not exist, skipping" +msgstr "テキスト検索設定\"%sは存在しません。省略します" -#: parser/parse_utilcmd.c:463 +#: commands/tsearchcmds.c:1982 #, c-format -msgid "multiple default values specified for column \"%s\" of table \"%s\"" -msgstr "テーブル\"%2$s\"の列\"%1$s\"で複数のデフォルト値の指定があります" +msgid "token type \"%s\" does not exist" +msgstr "トークン型\"%s\"は存在しません" -#: parser/parse_utilcmd.c:820 -msgid "type %s is not a composite type" -msgstr "型 %s は複合型ではありません" +#: commands/tsearchcmds.c:2204 +#, c-format +msgid "mapping for token type \"%s\" does not exist" +msgstr "トークン型\"%s\"に対するマップは存在しません" -#: parser/parse_utilcmd.c:1445 +#: commands/tsearchcmds.c:2210 #, c-format -msgid "column \"%s\" appears twice in primary key constraint" -msgstr "列\"%s\"がプライマリキー制約内に2回出現します" +msgid "mapping for token type \"%s\" does not exist, skipping" +msgstr "トークン型\"%s\"に対するマップは存在しません。省略します" -#: parser/parse_utilcmd.c:1450 +#: commands/tsearchcmds.c:2363 commands/tsearchcmds.c:2474 #, c-format -msgid "column \"%s\" appears twice in unique constraint" -msgstr "列 \"%s\" が一意性制約内に2回出現します" +msgid "invalid parameter list format: \"%s\"" +msgstr "無効なパラメータリストの書式です: \"%s\"" -#: parser/parse_utilcmd.c:1603 -msgid "index expression cannot return a set" -msgstr "式インデックスは集合を返すことができません" +#: commands/extension.c:147 commands/extension.c:2431 +#, c-format +msgid "extension \"%s\" does not exist" +msgstr "拡張機能 \"%s\" は存在しません" -#: parser/parse_utilcmd.c:1613 -msgid "" -"index expressions and predicates can refer only to the table being indexed" -msgstr "インデックス式と術後はインデックス付けされるテーブルのみを参照できます" +#: 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\"" -#: parser/parse_utilcmd.c:1708 -msgid "rule WHERE condition cannot contain references to other relations" -msgstr "ルールのWHERE条件に他のリレーションへの参照を持たせられません" +#: commands/extension.c:247 +#, +msgid "Extension names must not be empty." +msgstr "拡張機能名が無効です: 空であってはなりません" -#: parser/parse_utilcmd.c:1714 -msgid "cannot use aggregate function in rule WHERE condition" -msgstr "ルールのWHERE条件では集約関数を使用できません" +#: commands/extension.c:256 +#, +msgid "Extension names must not contain \"--\"." +msgstr "拡張機能名に \"--\" が含まれていてはなりません" -#: parser/parse_utilcmd.c:1718 -msgid "cannot use window function in rule WHERE condition" -msgstr "ルールの WHERE 句ではウィンドウ関数を使用できません" +#: commands/extension.c:268 +msgid "Extension names must not begin or end with \"-\"." +msgstr "拡張機能名が \"-\" で始まったり終わったりしてはなりません" -#: parser/parse_utilcmd.c:1790 -msgid "" -"rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE " -"actions" -msgstr "" -"ルールのWHERE条件はSELECT、INSERT、UPDATE、DELETE動作のみを持つことができます" +#: commands/extension.c:278 +msgid "Extension names must not contain directory separator characters." +msgstr "拡張機能名にディレクトリの区切り文字が含まれていてはなりません" -#: parser/parse_utilcmd.c:1826 -msgid "ON SELECT rule cannot use OLD" -msgstr "ON SELECTルールではOLDを使用できません" +#: 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\"" -#: parser/parse_utilcmd.c:1830 -msgid "ON SELECT rule cannot use NEW" -msgstr "ON SELECTルールではNEWを使用できません" +#: commands/extension.c:294 +#, +msgid "Version names must not be empty." +msgstr "バージョン名が無効です: 空であってはなりません" -#: parser/parse_utilcmd.c:1839 -msgid "ON INSERT rule cannot use OLD" -msgstr "ON INSERTルールではOLDを使用できません" +#: commands/extension.c:303 +#, +msgid "Version names must not contain \"--\"." +msgstr "バージョン名に \"--\" が含まれていてはなりません" -#: parser/parse_utilcmd.c:1845 -msgid "ON DELETE rule cannot use NEW" -msgstr "ON DELETEルールではNEWを使用できません" +#: commands/extension.c:312 +msgid "Version names must not begin or end with \"-\"." +msgstr "バージョン名が\"-\" で始まったり終わったりしてはなりません" -#: parser/parse_utilcmd.c:2126 -msgid "misplaced DEFERRABLE clause" -msgstr "DEFERRABLE句の場所が間違っています" +#: commands/extension.c:322 +msgid "Version names must not contain directory separator characters." +msgstr "バージョン名にディレクトリの区切り文字が含まれていてはなりません" -#: parser/parse_utilcmd.c:2131 parser/parse_utilcmd.c:2146 -msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" -msgstr "複数のDEFERRABLE/NOT DEFERRABLE句を使用できません" +#: commands/extension.c:472 +#, c-format +msgid "could not open extension control file \"%s\": %m" +msgstr "拡張機能の制御ファイル \"%s\" をオープンできませんでした: %m" -#: parser/parse_utilcmd.c:2141 -msgid "misplaced NOT DEFERRABLE clause" -msgstr "NOT DEFERRABLE句の場所が間違っています" +#: commands/extension.c:493 commands/extension.c:503 +#, c-format +msgid "parameter \"%s\" cannot be set in a secondary extension control file" +msgstr "セカンダリの拡張機能制御ファイルにパラメータ \"%s\" を設定できません" -#: parser/parse_utilcmd.c:2154 parser/parse_utilcmd.c:2180 gram.y:3483 -#: gram.y:3499 -msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" -msgstr "INITIALLY DEFERREDと宣言された制約はDEFERRABLEでなければなりません" +#: commands/extension.c:542 +#, c-format +msgid "\"%s\" is not a valid encoding name" +msgstr "\"%s\" は有効な符号化方式名ではありません" -#: parser/parse_utilcmd.c:2162 -msgid "misplaced INITIALLY DEFERRED clause" -msgstr "INITIALLY DEFERRED句の場所が間違っています<" +#: commands/extension.c:556 +#, c-format +msgid "parameter \"%s\" must be a list of extension names" +msgstr "パラメータ \"%s\" は拡張機能名のリストでなければなりません" -#: parser/parse_utilcmd.c:2167 parser/parse_utilcmd.c:2193 -msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" -msgstr "複数のINITIALLY IMMEDIATE/DEFERRED句を使用できません" +#: commands/extension.c:563 +#, c-format +msgid "unrecognized parameter \"%s\" in file \"%s\"" +msgstr "ファイル \"%2$s\" 中に認識できないパラメータ \"%1$s\" があります" -#: parser/parse_utilcmd.c:2188 -msgid "misplaced INITIALLY IMMEDIATE clause" -msgstr "INITIALLY IMMEDIATE句の場所が間違っています<" +#: commands/extension.c:572 +#, +msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true" +msgstr "\"relocatable\" が真の場合はパラメータ \"schema\" は指定できません" -#: parser/parse_utilcmd.c:2361 -#, c-format +#: commands/extension.c:724 msgid "" -"CREATE specifies a schema (%s) different from the one being created (%s)" -msgstr "CREATEで指定したスキーマ(%s)が作成先のスキーマ(%s)と異なります" +"transaction control statements are not allowed within an extension script" +msgstr "トランザクション制御ステートメントを拡張機能スクリプトの中に" +"書くことはできません" -#: gram.y:1255 -msgid "current database cannot be changed" -msgstr "現在のデータベースを変更できません" +#: commands/extension.c:794 +#, c-format +msgid "permission denied to create extension \"%s\"" +msgstr "拡張機能 \"%s\" を作成する権限がありません" -#: gram.y:1370 gram.y:1385 -msgid "time zone interval must be HOUR or HOUR TO MINUTE" -msgstr "時間帯の間隔はHOURまたはHOUR TO MINUTEでなければなりません" +#: commands/extension.c:796 +#, +msgid "Must be superuser to create this extension." +msgstr "この拡張機能を作成するにはスーパーユーザでなければなりません" -#: gram.y:1390 gram.y:8279 gram.y:10730 -msgid "interval precision specified twice" -msgstr "インターバル型の精度が2回指定されました" +#: commands/extension.c:800 +#, c-format +msgid "permission denied to update extension \"%s\"" +msgstr "拡張機能 \"%s\" を更新する権限がありません" -#: gram.y:2521 -msgid "CHECK constraints cannot be deferred" -msgstr "CHECK 制約は遅延可能にはできません" +#: commands/extension.c:802 +#, +msgid "Must be superuser to update this extension." +msgstr "この拡張機能を更新するにはスーパーユーザでなければなりません" -#: gram.y:2725 -msgid "CREATE TABLE AS cannot specify INTO" -msgstr "CREATE TABLE ASはINTOを指定できません" +#: commands/extension.c:1082 +#, c-format +msgid "" +"extension \"%s\" has no update path from version \"%s\" to version \"%s\"" +msgstr "拡張機能 \"%s\" について、バージョン \"%s\" から" +"バージョン \"%s\" へのアップデートパスがありません" -#: gram.y:3394 -msgid "duplicate trigger events specified" -msgstr "重複したトリガーイベントが指定されました" +#: commands/extension.c:1209 +#, c-format +msgid "extension \"%s\" already exists, skipping" +msgstr "拡張機能 \"%s\" はすでに存在します。スキップしています" -#: gram.y:3563 -msgid "CREATE ASSERTION is not yet implemented" -msgstr "CREATE ASSERTIONはまだ実装されていません" +#: commands/extension.c:1216 +#, c-format +msgid "extension \"%s\" already exists" +msgstr "拡張機能 \"%s\" はすでに存在します" -#: gram.y:3579 -msgid "DROP ASSERTION is not yet implemented" -msgstr "DROP ASSERTIONはまだ実装されていません" +#: commands/extension.c:1227 +#, +msgid "nested CREATE EXTENSION is not supported" +msgstr "入れ子の CREATE EXTENSION はサポートされません" -#: gram.y:3880 -msgid "RECHECK is no longer required" -msgstr "RECHECK はもはや必要とされません" +#: commands/extension.c:1282 commands/extension.c:2491 +#, +msgid "version to install must be specified" +msgstr "インストールするバージョンを指定しなければなりません" -#: gram.y:3881 -msgid "Update your data type." -msgstr "データ型を更新してください" +#: commands/extension.c:1299 +#, c-format +msgid "FROM version must be different from installation target version \"%s\"" +msgstr "FROM のバージョンはターゲットのバージョン \"%s\" と異なって" +"いなければなりません" -#: gram.y:6356 gram.y:6362 gram.y:6368 -msgid "WITH CHECK OPTION is not implemented" -msgstr "WITH CHECK OPTIONは実装されていません" +#: commands/extension.c:1354 +#, c-format +msgid "extension \"%s\" must be installed in schema \"%s\"" +msgstr "" +"拡張機能 \"%s\" はスキーマ \"%s\" 内にインストールされていなければなりません" -#: gram.y:7045 -msgid "column name list not allowed in CREATE TABLE / AS EXECUTE" -msgstr "CREATE TABLE / AS EXECUTEでは列名リストを使用できません" +#: commands/extension.c:1424 commands/extension.c:2632 +#, c-format +msgid "required extension \"%s\" is not installed" +msgstr "要求された拡張機能 \"%s\" はインストールされていません" -#: gram.y:7266 -msgid "number of columns does not match number of values" -msgstr "列の数がVALUESの数と一致しません" +#: commands/extension.c:1593 +#, c-format +msgid "extension \"%s\" does not exist, skipping" +msgstr "拡張機能 \"%s\" は存在しません。スキップしています" -#: gram.y:7706 -msgid "LIMIT #,# syntax is not supported" -msgstr "LIMIT #,#構文は実装されていません" +#: commands/extension.c:2101 +msgid "" +"pg_extension_config_dump() can only be called from a SQL script executed by " +"CREATE EXTENSION" +msgstr "" +"pg_extension_config_dump() は CREATE EXTENSION により実行される SQL " +"スクリプトからのみコールできます" -#: gram.y:7707 -msgid "Use separate LIMIT and OFFSET clauses." -msgstr "分割してLIMITとOFFSET句を使用してください" +#: commands/extension.c:2113 +#, c-format +msgid "OID %u does not refer to a table" +msgstr "OID %u がテーブルを参照していません" -#: gram.y:7925 -msgid "VALUES in FROM must have an alias" -msgstr "FROM句のVALUESは別名を持たなければなりません" +#: commands/extension.c:2118 +#, c-format +msgid "table \"%s\" is not a member of the extension being created" +msgstr "テーブル \"%s\" は生成されようとしている拡張機能のメンバではありません" -#: gram.y:7926 -msgid "For example, FROM (VALUES ...) [AS] foo." -msgstr "例えば、FROM (VALUES ...) [AS] foo。" +#: commands/extension.c:2301 commands/extension.c:2360 +#, c-format +msgid "extension \"%s\" does not support SET SCHEMA" +msgstr "拡張機能 \"%s\" は SET SCHEMAをサポートしていません" -#: gram.y:7931 -msgid "subquery in FROM must have an alias" -msgstr "FROM句の副問い合わせは別名を持たなければなりません" +#: commands/extension.c:2362 +#, c-format +msgid "%s is not in the extension's schema \"%s\"" +msgstr "拡張機能のスキーマ \"%2$s\" に %1$s が見つかりません" -#: gram.y:7932 -msgid "For example, FROM (SELECT ...) [AS] foo." -msgstr "例えば、FROM (SELECT ...) [AS] foo。" +#: commands/extension.c:2411 +#, +msgid "nested ALTER EXTENSION is not supported" +msgstr "入れ子になった ALTER EXTENSION はサポートされていません" -#: gram.y:8405 -msgid "precision for type float must be at least 1 bit" -msgstr "浮動小数点数の型の精度は最低でも1ビットなければなりません" +#: commands/extension.c:2502 +#, c-format +msgid "version \"%s\" of extension \"%s\" is already installed" +msgstr "" +"拡張機能 \"%2$s\" のバージョン \"%1$s\" はすでにインストールされています" -#: gram.y:8414 -msgid "precision for type float must be less than 54 bits" -msgstr "浮動小数点数の型の精度は54ビットよりも小さくなければなりません" +#: commands/extension.c:2725 +#, c-format +msgid "%s is already a member of extension \"%s\"" +msgstr "%s はすでに拡張機能 \"%s\" のメンバです" -#: gram.y:9120 -msgid "UNIQUE predicate is not yet implemented" -msgstr "UNIQUE 述部はまだ実装されていません" +#: commands/extension.c:2742 +#, c-format +msgid "%s is not a member of extension \"%s\"" +msgstr "%s は拡張機能 \"%s\" のメンバではありません" -#: gram.y:9992 -msgid "RANGE PRECEDING is only supported with UNBOUNDED" -msgstr "RANGE PRECEDING は UNBOUNDED なしの場合のみのサポートです" +#: commands/proclang.c:93 +msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters" +msgstr "CREATE LANGUAGEパラメータの代わりにpg_pltemplateの情報を使用しています" -#: gram.y:9998 -msgid "RANGE FOLLOWING is only supported with UNBOUNDED" -msgstr "RANGE FOLLOWING は UNBOUNDED なしの場合のみのサポートです" +#: commands/proclang.c:103 +#, c-format +msgid "must be superuser to create procedural language \"%s\"" +msgstr "手続き言語\"%s\"の作成にはスーパーユーザでなければなりません" -#: gram.y:10025 gram.y:10048 -msgid "frame start cannot be UNBOUNDED FOLLOWING" -msgstr "構成の開始部分が UNBOUNDED FOLLOWING であってはなりません" +#: commands/proclang.c:123 commands/proclang.c:279 +#, c-format +msgid "function %s must return type \"language_handler\"" +msgstr "関数%sは\"language_handler\"型を返さなければなりません" -#: gram.y:10030 -msgid "frame starting from following row cannot end with current row" -msgstr "次の行から始まるフレームは、現在行では終了できません" +#: commands/proclang.c:243 +#, c-format +msgid "unsupported language \"%s\"" +msgstr "言語\"%s\"はサポートされていません" -#: gram.y:10053 -msgid "frame end cannot be UNBOUNDED PRECEDING" -msgstr "構成の末尾が UNBOUNDED PRECEDING であってはなりません" +#: commands/proclang.c:245 +msgid "The supported languages are listed in the pg_pltemplate system catalog." +msgstr "" +"サポートされている言語はpg_pltemplateシステムカタログ内に列挙されています" -#: gram.y:10059 -msgid "frame starting from current row cannot have preceding rows" -msgstr "現在行から始まるフレームは、それまでの行を含むことができません" +#: commands/proclang.c:253 +msgid "must be superuser to create custom procedural language" +msgstr "手続き言語の作成にはスーパーユーザでなければなりません" -#: gram.y:10066 -msgid "frame starting from following row cannot have preceding rows" -msgstr "次の行から始まるフレームは、それまでの行を含むことができません" +#: commands/proclang.c:272 +#, c-format +msgid "" +"changing return type of function %s from \"opaque\" to \"language_handler\"" +msgstr "関数%sの戻り値型を\"opaque\"から\"language_handler\"に変更しています" -#: gram.y:10705 -msgid "type modifier cannot have parameter name" -msgstr "型修正子はパラメータ名を持つことはできません" +#: commands/proclang.c:357 commands/proclang.c:608 +#, c-format +msgid "language \"%s\" already exists" +msgstr "言語\"%s\"はすでに存在します" -#: gram.y:11302 gram.y:11510 -msgid "improper use of \"*\"" -msgstr " \"*\" の使い方が不適切です" +#: commands/proclang.c:539 +#, c-format +msgid "language \"%s\" does not exist, skipping" +msgstr "言語\"%s\"は存在しません。省略します" -#: gram.y:11441 -msgid "wrong number of parameters on left side of OVERLAPS expression" -msgstr "OVERLAPS式の左辺のパラメータ数が間違っています" +#: commands/schemacmds.c:82 commands/schemacmds.c:275 +#, c-format +msgid "unacceptable schema name \"%s\"" +msgstr "スキーマ名\"%s\"は受け付けられません" -#: gram.y:11448 -msgid "wrong number of parameters on right side of OVERLAPS expression" -msgstr "OVERLAPS式の右辺のパラメータ数が間違っています" +#: commands/schemacmds.c:83 commands/schemacmds.c:276 +msgid "The prefix \"pg_\" is reserved for system schemas." +msgstr "接頭辞\"pg_\"はシステムスキーマ用に予約されています" -#: gram.y:11573 -msgid "multiple ORDER BY clauses not allowed" -msgstr "複数のORDER BY句は使用できません" +#: commands/schemacmds.c:186 +#, c-format +msgid "schema \"%s\" does not exist, skipping" +msgstr "スキーマ\"%s\"は存在しません。省略します" -#: gram.y:11584 -msgid "multiple OFFSET clauses not allowed" -msgstr "複数のOFFSET句は使用できません" +#: commands/conversioncmds.c:71 +#, c-format +msgid "source encoding \"%s\" does not exist" +msgstr "変換元符号化方式\"%s\"は存在しません" -#: gram.y:11593 -msgid "multiple LIMIT clauses not allowed" -msgstr "複数のLIMIT句は使用できません" +#: commands/conversioncmds.c:78 +#, c-format +msgid "destination encoding \"%s\" does not exist" +msgstr "変換先符号化方式\"%s\"は存在しません" -#: gram.y:11602 -msgid "multiple WITH clauses not allowed" -msgstr "複数の WITH 句は使用できません" +#: commands/conversioncmds.c:92 +#, c-format +msgid "encoding conversion function %s must return type \"void\"" +msgstr "エンコード変換関数 %s は \"void\" 型を返さなければなりません" -#: gram.y:11756 -msgid "OUT and INOUT arguments aren't allowed in TABLE functions" -msgstr "テーブル関数では OUT と INOUT 引数は使用できません" +#: commands/conversioncmds.c:152 +#, c-format +msgid "conversion \"%s\" does not exist, skipping" +msgstr "変換\"%sは存在しません。省略します" -#: parser/parse_clause.c:419 +#: commands/conversioncmds.c:211 #, c-format -msgid "JOIN/ON clause refers to \"%s\", which is not part of JOIN" -msgstr "JOIN/ON句が\"%s\"を参照していますが、これがJOINに含まれていません" +msgid "conversion \"%s\" already exists in schema \"%s\"" +msgstr "変換\"%s\"はスキーマ\"%s\"内にすでに存在します" -#: parser/parse_clause.c:500 -msgid "subquery in FROM cannot have SELECT INTO" -msgstr "FROM句の副問い合わせではSELECT INTOを使用できません" +#: commands/tablespace.c:205 +#, c-format +msgid "could not stat directory \"%s\": %m" +msgstr "ディレクトリ\"%s\"のstatができませんでした: %m" -#: parser/parse_clause.c:522 -msgid "subquery in FROM cannot refer to other relations of same query level" -msgstr "" -"FROM句の副問い合わせでは、同一問い合わせレベルの他のリレーションを参照できま" -"せん" +#: commands/tablespace.c:214 +#, c-format +msgid "\"%s\" exists but is not a directory" +msgstr "\"%s\"は存在しますが、ディレクトリではありません" -#: parser/parse_clause.c:573 -msgid "" -"function expression in FROM cannot refer to other relations of same query " -"level" -msgstr "" -"FROM句の関数式では同一問い合わせレベルの他のリレーションを参照できません" +#: commands/tablespace.c:244 +#, c-format +msgid "permission denied to create tablespace \"%s\"" +msgstr "テーブル空間\"%s\"を作成する権限がありません" -#: parser/parse_clause.c:586 -msgid "cannot use aggregate function in function expression in FROM" -msgstr "FROM句の関数式では集約関数を使用できません" +#: commands/tablespace.c:246 +msgid "Must be superuser to create a tablespace." +msgstr "テーブル空間を作成するにはスーパーユーザでなければなりません" -#: parser/parse_clause.c:593 -msgid "cannot use window function in function expression in FROM" -msgstr "FROM 句内の関数式ではウィンドウ関数を使用できません" +#: commands/tablespace.c:262 +msgid "tablespace location cannot contain single quotes" +msgstr "テーブル空間の場所には単一引用符を含めることができません" + +#: commands/tablespace.c:272 +msgid "tablespace location must be an absolute path" +msgstr "テーブル空間の場所は絶対パスでなければなりません" -#: parser/parse_clause.c:869 +#: commands/tablespace.c:283 #, c-format -msgid "column name \"%s\" appears more than once in USING clause" -msgstr "USING句に列名\"%s\"が複数あります" +msgid "tablespace location \"%s\" is too long" +msgstr "テーブル空間の場所\"%s\"は長すぎます" -#: parser/parse_clause.c:884 +#: commands/tablespace.c:293 commands/tablespace.c:829 #, c-format -msgid "common column name \"%s\" appears more than once in left table" -msgstr "左テーブルに列名\"%s\"が複数あります" +msgid "unacceptable tablespace name \"%s\"" +msgstr "テーブル空間名\"%s\"を受け付けられません" + +#: commands/tablespace.c:295 commands/tablespace.c:830 +msgid "The prefix \"pg_\" is reserved for system tablespaces." +msgstr "接頭辞\"pg_\"はシステムテーブル空間用に予約されています" -#: parser/parse_clause.c:893 +#: commands/tablespace.c:305 commands/tablespace.c:842 #, c-format -msgid "column \"%s\" specified in USING clause does not exist in left table" -msgstr "USING句で指定した列\"%sが左テーブルに存在しません" +msgid "tablespace \"%s\" already exists" +msgstr "テーブル空間\"%s\"はすでに存在します" + +#: commands/tablespace.c:377 commands/tablespace.c:529 +msgid "tablespaces are not supported on this platform" +msgstr "このプラットフォームではテーブル空間をサポートしていません" -#: parser/parse_clause.c:907 +#: commands/tablespace.c:415 commands/tablespace.c:813 +#: commands/tablespace.c:880 commands/tablespace.c:985 +#: commands/tablespace.c:1358 #, c-format -msgid "common column name \"%s\" appears more than once in right table" -msgstr "右テーブルに列名\"%s\"が複数あります" +msgid "tablespace \"%s\" does not exist" +msgstr "テーブル空間\"%s\"は存在しません" -#: parser/parse_clause.c:916 +#: commands/tablespace.c:421 #, c-format -msgid "column \"%s\" specified in USING clause does not exist in right table" -msgstr "USING句で指定した列\"%sが右テーブルに存在しません" +msgid "tablespace \"%s\" does not exist, skipping" +msgstr "テーブル空間\"%s\"は存在しません。省略します" -#: parser/parse_clause.c:973 +#: commands/tablespace.c:486 #, c-format -msgid "column alias list for \"%s\" has too many entries" -msgstr "列\"%s\"の別名リストのエントリが多すぎます" +msgid "tablespace \"%s\" is not empty" +msgstr "テーブル空間\"%s\"は空ではありません" -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1210 +#: commands/tablespace.c:560 #, c-format -msgid "argument of %s must not contain variables" -msgstr "%sの引数には変数を使用できません" +msgid "directory \"%s\" does not exist" +msgstr "ディレクトリ \"%s\" は存在しません" -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1221 +#: commands/tablespace.c:561 +#, +msgid "Create this directory for the tablespace before restarting the server." +msgstr "" +"サーバを再起動する前にテーブルスペース用のディレクトリを作成してください" + +#: commands/tablespace.c:566 #, c-format -msgid "argument of %s must not contain aggregate functions" -msgstr "%s の引数には集約関数を使用できません" +msgid "could not set permissions on directory \"%s\": %m" +msgstr "ディレクトリ\"%s\"に権限を設定できませんでした: %m" -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1232 +#: commands/tablespace.c:584 commands/dbcommands.c:1246 +#: commands/dbcommands.c:1714 commands/dbcommands.c:1915 +#: commands/dbcommands.c:1963 #, c-format -msgid "argument of %s must not contain window functions" -msgstr "%s の引数にはウィンドウ関数を使用できません" +msgid "some useless files may be left behind in old database directory \"%s\"" +msgstr "" +"元のデータベースのディレクトリ \"%s\" に不要なファイルが残っているかもしれま" +"せん" -#. translator: first %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1349 +#: commands/tablespace.c:598 #, c-format -msgid "%s \"%s\" is ambiguous" -msgstr "%s \"%s\"は曖昧です" +msgid "directory \"%s\" already in use as a tablespace" +msgstr "ディレクトリ \"%s\" はすでにテーブルスペースとして使われています" -#. translator: %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1373 +#: commands/tablespace.c:613 commands/tablespace.c:750 #, c-format -msgid "non-integer constant in %s" -msgstr "%sに整数以外の定数があります" +msgid "could not remove symbolic link \"%s\": %m" +msgstr "シンボリックリンク\"%s\"を削除できませんでした: %m" -#. translator: %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1391 +#: commands/tablespace.c:623 #, c-format -msgid "%s position %d is not in select list" -msgstr "%sの位置%dはSELECTリストにありません" +msgid "could not create symbolic link \"%s\": %m" +msgstr "シンボリックリンク\"%s\"を作成できませんでした: %m" -#: parser/parse_clause.c:1595 +#: commands/tablespace.c:714 commands/tablespace.c:726 +#: commands/tablespace.c:742 #, c-format -msgid "window \"%s\" is already defined" -msgstr "ウィンドウ \"%s\" はすでに定義済みです" +msgid "could not remove directory \"%s\": %m" +msgstr "ディレクトリ\"%s\"を削除できませんでした: %m" -#: parser/parse_clause.c:1607 parser/parse_agg.c:241 +#: commands/tablespace.c:1039 #, c-format -msgid "window \"%s\" does not exist" -msgstr "ウィンドウ \"%s\" は存在しません" +msgid "Tablespace \"%s\" does not exist." +msgstr "テーブル空間 \"%s\" は存在しません" -#: parser/parse_clause.c:1649 +#: commands/tablespace.c:1450 #, c-format -msgid "cannot override PARTITION BY clause of window \"%s\"" -msgstr "ウィンドウ \"%s\" の PARTITION BY 句をオーバーライドできません" +msgid "tablespace %u is not empty" +msgstr "テーブル空間 %u は空ではありません" -#: parser/parse_clause.c:1661 +#: commands/trigger.c:166 #, c-format -msgid "cannot override ORDER BY clause of window \"%s\"" -msgstr "ウィンドウ \"%s\" の ORDER BY 句をオーバーライドできません" +msgid "\"%s\" is a table" +msgstr "\"%s\" はテーブルではありません" + +#: commands/trigger.c:168 +msgid "Tables cannot have INSTEAD OF triggers." +msgstr "テーブルは INSTEAD OF トリガーを持つことができません" -#: parser/parse_clause.c:1683 +#: commands/trigger.c:179 commands/trigger.c:186 #, c-format -msgid "cannot override frame clause of window \"%s\"" -msgstr "ウィンドウ \"%s\" の構成句をオーバーライドできません" +msgid "\"%s\" is a view" +msgstr "\"%s\" はビューです" -#: parser/parse_clause.c:1749 -msgid "" -"in an aggregate with DISTINCT, ORDER BY expressions must appear in argument " -"list" -msgstr "" -"DISTINCT や ORDER BY 表現を伴なう集約は引数リストの中に現れなければなりません" +#: commands/trigger.c:181 +msgid "Views cannot have row-level BEFORE or AFTER triggers." +msgstr "ビューは行レベルの BEFORE / AFTER トリガーを持つことができません" -#: parser/parse_clause.c:1750 -msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list" -msgstr "SELECT DISTINCTではORDER BYの式はSELECTリスト内になければなりません" +#: commands/trigger.c:188 +msgid "Views cannot have TRUNCATE triggers." +msgstr "ビューは TRUNCATE トリガーを持つことができません" -#: parser/parse_clause.c:1836 parser/parse_clause.c:1868 -msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions" -msgstr "SELECT DISTINCT ONの式はORDER BY式の先頭に一致しなければなりません" +#: 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 トリガーは列リストを持つことができません" + +#: commands/trigger.c:295 +msgid "cannot use subquery in trigger WHEN condition" +msgstr "トリガーの WHEN 条件では副問い合わせを使用できません" + +#: commands/trigger.c:299 +msgid "cannot use aggregate function in trigger WHEN condition" +msgstr "トリガーの WHEN 条件では集約関数を使用できません" + +#: 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 "ステートメントトリガーの WHEN 条件ではカラム値を参照できません" -#: parser/parse_clause.c:1987 +#: 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 トリガーの WHEN 条件では NEW システムカラムを参照できません" + +#: commands/trigger.c:384 #, c-format -msgid "operator %s is not a valid ordering operator" -msgstr "演算子\"%s\"は有効な順序付け演算子名ではありません" +msgid "changing return type of function %s from \"opaque\" to \"trigger\"" +msgstr "関数%sの戻り値型を\"opaque\"から\"trigger\"へ変更しています" -#: parser/parse_clause.c:1989 -msgid "" -"Ordering operators must be \"<\" or \">\" members of btree operator families." -msgstr "" -"順序付け演算子はB-Tree演算子族の\"<\"または\">\"要素でなければなりません。" +#: commands/trigger.c:391 +#, c-format +msgid "function %s must return type \"trigger\"" +msgstr "関数%sは\"trigger\"型を返さなければなりません" -#: parser/parse_coerce.c:841 parser/parse_coerce.c:870 -#: parser/parse_coerce.c:888 parser/parse_coerce.c:903 -#: parser/parse_expr.c:1726 parser/parse_expr.c:2237 +#: commands/trigger.c:501 commands/trigger.c:1240 #, c-format -msgid "cannot cast type %s to %s" -msgstr "型%sから%sへキャストできません" +msgid "trigger \"%s\" for relation \"%s\" already exists" +msgstr "リレーション\"%2$s\"用のトリガ\"%1$s\"はすでに存在します" -#: parser/parse_coerce.c:873 -msgid "Input has too few columns." -msgstr "入力列が少なすぎます" +#: 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 "参照テーブルのトリガが見つかりました。" -#: parser/parse_coerce.c:891 +#: commands/trigger.c:897 commands/trigger.c:913 #, c-format -msgid "Cannot cast type %s to %s in column %d." -msgstr "列%3$dにて型%1$sから%2$sへキャストできません" +msgid "ignoring incomplete trigger group for constraint \"%s\" %s" +msgstr "制約\"%s\" %sに対する不完全なトリガグループを無視します。" -#: parser/parse_coerce.c:906 -msgid "Input has too many columns." -msgstr "入力列が多すぎます" +#: commands/trigger.c:925 +#, c-format +msgid "converting trigger group into constraint \"%s\" %s" +msgstr "トリガグループを制約\"%s\" %sに変換しています" -#. translator: first %s is name of a SQL construct, eg WHERE -#: parser/parse_coerce.c:949 +#: commands/trigger.c:1039 #, c-format -msgid "argument of %s must be type boolean, not type %s" -msgstr "%s の引数は %s 型ではなくブール型でなければなりません" +msgid "trigger \"%s\" for table \"%s\" does not exist, skipping" +msgstr "テーブル\"%2$s\"のトリガ\"%1$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:959 parser/parse_coerce.c:1008 +#: commands/trigger.c:1169 commands/trigger.c:1282 commands/trigger.c:1393 #, c-format -msgid "argument of %s must not return a set" -msgstr "%sの引数は集合を返してはなりません" +msgid "trigger \"%s\" for table \"%s\" does not exist" +msgstr "テーブル\"%2$s\"のトリガ\"%1$s\"は存在しません" -#. translator: first %s is name of a SQL construct, eg LIMIT -#: parser/parse_coerce.c:996 +#: commands/trigger.c:1361 #, c-format -msgid "argument of %s must be type %s, not type %s" -msgstr "%1$sの引数は型%3$sではなく%2$s型でなければなりません" +msgid "permission denied: \"%s\" is a system trigger" +msgstr "権限がありません: \"%s\"はシステムトリガです" -#. translator: first %s is name of a SQL construct, eg CASE -#: parser/parse_coerce.c:1129 +#: commands/trigger.c:1843 #, c-format -msgid "%s types %s and %s cannot be matched" -msgstr "%sの型%sと%sを一致させることができません" +msgid "trigger function %u returned null value" +msgstr "トリガ関数%uはNULL値を返しました" -#. translator: first %s is name of a SQL construct, eg CASE -#: parser/parse_coerce.c:1196 +#: 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:4204 #, c-format -msgid "%s could not convert type %s to %s" -msgstr "%sで型%sから%sへ変換できませんでした" +msgid "constraint \"%s\" is not deferrable" +msgstr "制約\"%s\"は遅延可能ではありません" -#: parser/parse_coerce.c:1437 -msgid "arguments declared \"anyelement\" are not all alike" -msgstr "\"anyelement\"と宣言された引数が全て同じでありません" +#: commands/trigger.c:4227 +#, c-format +msgid "constraint \"%s\" does not exist" +msgstr "制約\"%s\"は存在しません" -#: parser/parse_coerce.c:1456 -msgid "arguments declared \"anyarray\" are not all alike" -msgstr "\"anyarray\"と宣言された引数が全て同じでありません" +#: commands/user.c:143 +msgid "SYSID can no longer be specified" +msgstr "SYSIDはもう指定することができません" -#: parser/parse_coerce.c:1485 parser/parse_coerce.c:1629 -#: parser/parse_coerce.c:1660 +#: commands/user.c:267 commands/user.c:606 commands/dbcommands.c:253 +#: commands/dbcommands.c:1347 #, c-format -msgid "argument declared \"anyarray\" is not an array but type %s" -msgstr "\"anyarray\"と宣言された引数が配列でなく型%sでした" +msgid "invalid connection limit: %d" +msgstr "接続制限数 %d は無効です" -#: parser/parse_coerce.c:1501 -msgid "" -"argument declared \"anyarray\" is not consistent with argument declared " -"\"anyelement\"" -msgstr "" -"\"anyarray\"と宣言された引数と\"anyelement\"と宣言された引数とで整合性があり" -"ません" +#: commands/user.c:284 +msgid "must be superuser to create superusers" +msgstr "スーパーユーザを作成するにはスーパーユーザでなければなりません" -#: parser/parse_coerce.c:1519 -msgid "could not determine polymorphic type because input has type \"unknown\"" -msgstr "入力型が\"unknown\"であったため多様型を決定できませんでした" +#: commands/user.c:291 +#, +msgid "must be superuser to create replication users" +msgstr "レプリケーションユーザを作成するにはスーパーユーザでなければなりません" -#: parser/parse_coerce.c:1529 +#: commands/user.c:298 +msgid "permission denied to create role" +msgstr "ロールを作成する権限がありません" + +#: commands/user.c:305 commands/user.c:1087 #, c-format -msgid "type matched to anynonarray is an array type: %s" -msgstr "anynonarrayと合う型は配列型です: %s" +msgid "role name \"%s\" is reserved" +msgstr "ロール名\"%s\"は予約されています" -#: parser/parse_coerce.c:1539 +#: commands/user.c:318 commands/user.c:1081 #, c-format -msgid "type matched to anyenum is not an enum type: %s" -msgstr "anyenumに合う型は列挙型ではありません: %s" +msgid "role \"%s\" already exists" +msgstr "ロール\"%s\"はすでに存在します" -#: parser/parse_agg.c:129 -msgid "Aggregates with DISTINCT must be able to sort their inputs." -msgstr "" -"DISTINCT 付きの集約関数は、それに対する入力をソートできなければなりません。" +#: 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:643 +#, +msgid "must be superuser to alter replication users" +msgstr "レプリケーションユーザを変更するにはスーパーユーザでなければなりません" + +#: commands/user.c:659 commands/user.c:850 +msgid "permission denied" +msgstr "権限がありません" + +#: commands/user.c:878 +msgid "permission denied to drop role" +msgstr "ロールを削除する権限がありません" + +#: commands/user.c:910 +#, c-format +msgid "role \"%s\" does not exist, skipping" +msgstr "ロール\"%s\"は存在しません。省略します" + +#: commands/user.c:922 commands/user.c:926 +msgid "current user cannot be dropped" +msgstr "現在のユーザを削除できません" + +#: commands/user.c:930 +msgid "session user cannot be dropped" +msgstr "セッションのユーザを削除できません" -#: parser/parse_agg.c:170 -msgid "aggregate function calls cannot contain window function calls" -msgstr "集約関数の呼び出しにウィンドウ関数の呼び出しを含むことはできません" +#: commands/user.c:941 +msgid "must be superuser to drop superusers" +msgstr "スーパーユーザを削除するにはスーパーユーザでなければなりません" -#: parser/parse_agg.c:331 -msgid "aggregates not allowed in WHERE clause" -msgstr "WHERE句では集約を使用できません" +#: commands/user.c:954 +#, c-format +msgid "role \"%s\" cannot be dropped because some objects depend on it" +msgstr "他のオブジェクトが依存していますのでロール\"%s\"を削除できません" -#: parser/parse_agg.c:337 -msgid "aggregates not allowed in JOIN conditions" -msgstr "JOIN条件で集約を使用できません" +#: commands/user.c:1071 +msgid "session user cannot be renamed" +msgstr "セッションユーザの名前を変更できません" -#: parser/parse_agg.c:358 -msgid "aggregates not allowed in GROUP BY clause" -msgstr "GROUP BY句で集約を使用できません" +#: commands/user.c:1075 +msgid "current user cannot be renamed" +msgstr "現在のユーザの名前を変更できません" -#: parser/parse_agg.c:426 -msgid "aggregate functions not allowed in a recursive query's recursive term" -msgstr "再帰クエリーの再帰項目中では集約関数を使用できません" +#: commands/user.c:1098 +msgid "must be superuser to rename superusers" +msgstr "スーパーユーザの名前を変更するにはスーパーユーザでなければなりません" -#: parser/parse_agg.c:451 -msgid "window functions not allowed in WHERE clause" -msgstr "WHERE句ではウィンドウ関数を使用できません" +#: commands/user.c:1105 +msgid "permission denied to rename role" +msgstr "ロールの名前を変更する権限がありません" -#: parser/parse_agg.c:457 -msgid "window functions not allowed in JOIN conditions" -msgstr "JOIN条件ではウィンドウ関数を使用できません" +#: commands/user.c:1126 +msgid "MD5 password cleared because of role rename" +msgstr "ロール名が変更されたためMD5パスワードがクリアされました" -#: parser/parse_agg.c:463 -msgid "window functions not allowed in HAVING clause" -msgstr "HAVING 句ではウィンドウ関数を使用できません" +#: commands/user.c:1182 +msgid "column names cannot be included in GRANT/REVOKE ROLE" +msgstr "カラム名が GRANT/REVOKE ROLE に含まれていてはなりません" -#: parser/parse_agg.c:476 -msgid "window functions not allowed in GROUP BY clause" -msgstr "GROUP BY 句ではウィンドウ関数を使用できません" +#: commands/user.c:1220 +msgid "permission denied to drop objects" +msgstr "オブジェクトを削除する権限がありません" -#: parser/parse_agg.c:495 parser/parse_agg.c:508 -msgid "window functions not allowed in window definition" -msgstr "ウィンドウ定義ではウィンドウ関数を使用できません" +#: commands/user.c:1247 commands/user.c:1256 +msgid "permission denied to reassign objects" +msgstr "オブジェクトを再割当てする権限がありません" -#: parser/parse_agg.c:630 +#: commands/user.c:1329 commands/user.c:1466 #, 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句で出現しなければならないか、集約関数内で使用しなければ" -"なりません" +msgid "must have admin option on role \"%s\"" +msgstr "ロール\"%s\"にadminオプションがなければなりません" + +#: commands/user.c:1337 +msgid "must be superuser to set grantor" +msgstr "権限付与者を設定するにはスーパーユーザでなければなりません" -#: parser/parse_agg.c:636 +#: commands/user.c:1362 #, c-format -msgid "subquery uses ungrouped column \"%s.%s\" from outer query" -msgstr "" -"外部問い合わせから副問い合わせがグループ化されていない列\"%s.%s\"を使用してい" -"ます" +msgid "role \"%s\" is a member of role \"%s\"" +msgstr "ロール\"%s\"はロール\"%s\"のメンバではありません" -#: parser/parse_node.c:82 +#: commands/user.c:1377 #, c-format -msgid "target lists can have at most %d entries" -msgstr "対象リストは最大で%dエントリ持つことができます" +msgid "role \"%s\" is already a member of role \"%s\"" +msgstr "ロール\"%s\"はすでにロール\"%s\"のメンバです" -#: parser/parse_node.c:222 +#: commands/user.c:1488 #, c-format -msgid "cannot subscript type %s because it is not an array" -msgstr "配列ではありませんので、型%sに添え字をつけられません" +msgid "role \"%s\" is not a member of role \"%s\"" +msgstr "ロール\"%s\"はロール\"%s\"のメンバではありません" -#: parser/parse_node.c:316 parser/parse_node.c:342 -msgid "array subscript must have type integer" -msgstr "配列の添え字は整数型でなければなりません" +#: 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はサポートされていません" -#: parser/parse_node.c:366 +#: commands/copy.c:473 #, c-format -msgid "array assignment requires type %s but expression is of type %s" -msgstr "配列の代入では型%sが必要でしたが、式は型%sでした" +msgid "could not write to COPY file: %m" +msgstr "COPYファイルに書き出せませんでした: %m" -#: parser/parse_target.c:373 parser/parse_target.c:661 -#, c-format -msgid "cannot assign to system column \"%s\"" -msgstr "システム列\"%s\"に代入できません" +#: commands/copy.c:485 +msgid "connection lost during COPY to stdout" +msgstr "標準出力へのCOPY中に接続が失われました" -#: parser/parse_target.c:398 -msgid "cannot set an array element to DEFAULT" -msgstr "配列要素にDEFAULTを設定できません" +#: commands/copy.c:526 +#, c-format +msgid "could not read from COPY file: %m" +msgstr "COPYファイルから読み込めませんでした: %m" -#: parser/parse_target.c:403 -msgid "cannot set a subfield to DEFAULT" -msgstr "サブフィールドにDEFAULTを設定できません" +#: commands/copy.c:577 +#, c-format +msgid "COPY from stdin failed: %s" +msgstr "標準入力からのCOPYが失敗しました: %s" -#: parser/parse_target.c:470 +#: commands/copy.c:593 #, c-format -msgid "column \"%s\" is of type %s but expression is of type %s" -msgstr "列\"%s\"は型%sですが、式は型%sでした" +msgid "unexpected message type 0x%02X during COPY from stdin" +msgstr "標準入力からのCOPY中に想定外のメッセージ種類0x%02Xがありました" -#: parser/parse_target.c:600 parser/parse_expr.c:416 -msgid "row expansion via \"*\" is not supported here" -msgstr "\"*\" を通した行展開は、ここではサポートされていません" +#: commands/copy.c:745 +msgid "must be superuser to COPY to or from a file" +msgstr "" +"ファイル経由のCOPY FROM、COPY TOを行うにはスーパーユーザでなければなりません" -#: parser/parse_target.c:645 -#, c-format +#: commands/copy.c:746 msgid "" -"cannot assign to field \"%s\" of column \"%s\" because its type %s is not a " -"composite type" +"Anyone can COPY to stdout or from stdin. psql's \\copy command also works " +"for anyone." msgstr "" -"型%3$sが複合型でありませんので、列\"%2$s\"のフィールド\"%1$s\"に代入できませ" -"ん。" +"標準入出力経由のCOPYは誰でも実行可能です。またpsqlの\\\\copyも誰でも実行でき" +"ます" -#: parser/parse_target.c:654 +#: commands/copy.c:874 #, c-format -msgid "" -"cannot assign to field \"%s\" of column \"%s\" because there is no such " -"column in data type %s" -msgstr "" -"データ型%3$sの列がありませんので、列\"%2$s\"のフィールド\"%1$s\"に代入できま" -"せん。" +msgid "COPY format \"%s\" not recognized" +msgstr "COPY フォーマット \"%s\" を認識できません" -#: parser/parse_target.c:729 +#: commands/copy.c:937 commands/copy.c:951 #, c-format -msgid "" -"array assignment to \"%s\" requires type %s but expression is of type %s" -msgstr "\"%s\"への配列代入には型%sが必要ですが、式は型%sでした" +msgid "argument to option \"%s\" must be a list of column names" +msgstr "オプション \"%s\" の引数は列名の並びでなければなりません" -#: parser/parse_target.c:739 +#: commands/copy.c:964 #, c-format -msgid "subfield \"%s\" is of type %s but expression is of type %s" -msgstr "サブフィールド\"%s\"は型%sですが、式は型%sでした" +msgid "argument to option \"%s\" must be a valid encoding name" +msgstr "オプション \"%s\" の引数は有効なエンコーディング名でなければなりません" -#: parser/parse_target.c:977 parser/parse_expr.c:739 -#: parser/parse_relation.c:478 parser/parse_relation.c:551 +#: commands/copy.c:970 #, c-format -msgid "column reference \"%s\" is ambiguous" -msgstr "列参照\"%s\"は曖昧です" +msgid "option \"%s\" not recognized" +msgstr "時間帯 \"%s\" を認識できません" -#: parser/parse_target.c:1039 -msgid "SELECT * with no tables specified is not valid" -msgstr "テーブル指定のないSELECT *は無効です" +#: commands/copy.c:981 +msgid "cannot specify DELIMITER in BINARY mode" +msgstr "BINARYモードではDELIMITERを指定できません" -#: parser/parse_expr.c:362 parser/parse_expr.c:755 -#, c-format -msgid "column %s.%s does not exist" -msgstr "列%s.%sは存在しません" +#: commands/copy.c:986 +msgid "cannot specify NULL in BINARY mode" +msgstr "BINARYモードではNULLを指定できません" -#: parser/parse_expr.c:374 -#, c-format -msgid "column \"%s\" not found in data type %s" -msgstr "データ型%2$sの列\"%1$s\"はありません" +#: commands/copy.c:1008 +msgid "COPY delimiter must be a single one-byte character" +msgstr "COPYの区切り文字は単一の1バイト文字でなければなりません" -#: parser/parse_expr.c:380 -#, c-format -msgid "could not identify column \"%s\" in record data type" -msgstr "レコードデータ型の列\"%s\"を識別できませんでした" +#: commands/copy.c:1015 +msgid "COPY delimiter cannot be newline or carriage return" +msgstr "COPYの区切り文字は改行や復帰記号とすることができません" -#: parser/parse_expr.c:386 -#, c-format -msgid "column notation .%s applied to type %s, which is not a composite type" -msgstr "列記法 .%sが型%sに使用されましたが、この型は複合型ではありません" +#: commands/copy.c:1021 +msgid "COPY null representation cannot use newline or carriage return" +msgstr "COPYのNULL表現には改行や復帰記号を使用することはできません" -#: parser/parse_expr.c:807 parser/parse_param.c:108 parser/parse_param.c:139 -#: parser/parse_param.c:195 parser/parse_param.c:287 +#: commands/copy.c:1038 #, c-format -msgid "there is no parameter $%d" -msgstr "パラメータ$%dがありません" +msgid "COPY delimiter cannot be \"%s\"" +msgstr "COPYの区切り文字を\"%s\"とすることはできません" -#: parser/parse_expr.c:1012 -msgid "NULLIF requires = operator to yield boolean" -msgstr "NULLIFでは=演算子がbooleanを返すことを必要とします" +#: commands/copy.c:1044 +msgid "COPY HEADER available only in CSV mode" +msgstr "COPY HEADERはCSVモードでのみ使用できます" -#: parser/parse_expr.c:1185 -msgid "arguments of row IN must all be row expressions" -msgstr "行のIN引数はすべて行式でなければなりません" +#: commands/copy.c:1050 +msgid "COPY quote available only in CSV mode" +msgstr "COPYの引用符はCSVモードでのみ使用できます" -#: parser/parse_expr.c:1471 -msgid "subquery cannot have SELECT INTO" -msgstr "副問い合わせでは SELECT INTO を使用できません" +#: commands/copy.c:1055 +msgid "COPY quote must be a single one-byte character" +msgstr "COPYの引用符は単一の1バイト文字でなければなりません" -#: parser/parse_expr.c:1499 -msgid "subquery must return a column" -msgstr "副問い合わせは1列を返さなければなりません" +#: commands/copy.c:1060 +msgid "COPY delimiter and quote must be different" +msgstr "COPYの区切り文字と引用符は異なる文字でなければなりません" -#: parser/parse_expr.c:1506 -msgid "subquery must return only one column" -msgstr "副問い合わせは1列のみを返さなければなりません" +#: commands/copy.c:1066 +msgid "COPY escape available only in CSV mode" +msgstr "COPYのエスケープはCSVモードでのみ使用できます" -#: parser/parse_expr.c:1565 -msgid "subquery has too many columns" -msgstr "副問い合わせの列が多すぎます" +#: commands/copy.c:1071 +msgid "COPY escape must be a single one-byte character" +msgstr "COPYのエスケープは単一の1バイト文字でなければなりません" -#: parser/parse_expr.c:1570 -msgid "subquery has too few columns" -msgstr "副問い合わせの列が少なすぎます" +#: commands/copy.c:1077 +msgid "COPY force quote available only in CSV mode" +msgstr "COPYの force quote句はCSVモードでのみ使用できます" -#: parser/parse_expr.c:1666 -msgid "cannot determine type of empty array" -msgstr "空の配列のデータ型を決定できません" +#: commands/copy.c:1081 +msgid "COPY force quote only available using COPY TO" +msgstr "COPYの force quote句はCOPY TOでのみ使用できます" -#: parser/parse_expr.c:1667 -msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]." -msgstr "希望する型に明示的にキャストしてください。例:ARRAY[]::integer[]" +#: commands/copy.c:1087 +msgid "COPY force not null available only in CSV mode" +msgstr "COPYの force not null句はCSVモードでのみ使用できます" + +#: commands/copy.c:1091 +msgid "COPY force not null only available using COPY FROM" +msgstr "COPYの force not null句はCOPY FROMでのみ使用できます" + +#: commands/copy.c:1097 +msgid "COPY delimiter must not appear in the NULL specification" +msgstr "COPYの区切り文字をNULL句の値に使用できません" -#: parser/parse_expr.c:1681 +#: commands/copy.c:1104 +msgid "CSV quote character must not appear in the NULL specification" +msgstr "COPYの引用符をNULL句の値に使用できません" + +#: commands/copy.c:1166 #, c-format -msgid "could not find element type for data type %s" -msgstr "データ型 %s の要素を見つけられませんでした" +msgid "table \"%s\" does not have OIDs" +msgstr "テーブル\"%s\"はOIDを持ちません" -#: parser/parse_expr.c:1879 -msgid "unnamed XML attribute value must be a column reference" -msgstr "無名のXML属性値は列参照でなければなりません" +#: commands/copy.c:1183 +msgid "COPY (SELECT) WITH OIDS is not supported" +msgstr "COPY (SELECT) WITH OIDSはサポートされていません" -#: parser/parse_expr.c:1880 -msgid "unnamed XML element value must be a column reference" -msgstr "無名のXML要素値は列参照でなければなりません" +#: commands/copy.c:1210 +msgid "COPY (SELECT INTO) is not supported" +msgstr "COPY (SELECT INTO)はサポートされていません" -#: parser/parse_expr.c:1895 +#: commands/copy.c:1270 #, c-format -msgid "XML attribute name \"%s\" appears more than once" -msgstr "XML属性名\"%s\"が複数あります" +msgid "FORCE QUOTE column \"%s\" not referenced by COPY" +msgstr "FORCE QUOTEされた列\"%s\"はCOPYで参照されません" -#: parser/parse_expr.c:2002 +#: commands/copy.c:1292 #, c-format -msgid "cannot cast XMLSERIALIZE result to %s" -msgstr "XMLSERIALIZE の結果を %s へキャストできません" +msgid "FORCE NOT NULL column \"%s\" not referenced by COPY" +msgstr "FORCE NOT NULLされた列\"%s\"はCOPYで参照されません" -#: parser/parse_expr.c:2278 parser/parse_expr.c:2476 -msgid "unequal number of entries in row expressions" -msgstr "行式において項目数が一致しません" +#: commands/copy.c:1356 +#, c-format +msgid "cannot copy from view \"%s\"" +msgstr "ビュー\"%s\"からのコピーはできません" -#: parser/parse_expr.c:2288 -msgid "cannot compare rows of zero length" -msgstr "長さ0の行を比較できません" +#: commands/copy.c:1358 commands/copy.c:1364 +msgid "Try the COPY (SELECT ...) TO variant." +msgstr "COPY (SELECT ...) TO構文を試してください" -#: parser/parse_expr.c:2313 +#: commands/copy.c:1362 #, c-format -msgid "row comparison operator must yield type boolean, not type %s" -msgstr "行比較演算子は型%sではなくbooleanを返さなければなりません" - -#: parser/parse_expr.c:2320 -msgid "row comparison operator must not return a set" -msgstr "行比較演算子は集合を返してはいけません" +msgid "cannot copy from foreign table \"%s\"" +msgstr "外部テーブル \"%s\" からのコピーはできません" -#: parser/parse_expr.c:2379 parser/parse_expr.c:2423 +#: commands/copy.c:1368 #, c-format -msgid "could not determine interpretation of row comparison operator %s" -msgstr "行比較演算子%sの解釈を決定できません" +msgid "cannot copy from sequence \"%s\"" +msgstr "シーケンス\"%s\"からのコピーはできません" -#: parser/parse_expr.c:2381 -msgid "" -"Row comparison operators must be associated with btree operator families." -msgstr "行比較演算子はB-Tree演算子族と関連付けされなければなりません。" +#: commands/copy.c:1373 +#, c-format +msgid "cannot copy from non-table relation \"%s\"" +msgstr "テーブル以外のリレーション\"%s\"からのコピーはできません" -#: parser/parse_expr.c:2425 -msgid "There are multiple equally-plausible candidates." -msgstr "複数のもっともらしさが等しい候補が存在します。" +#: commands/copy.c:1397 +msgid "relative path not allowed for COPY to file" +msgstr "ファイルへのCOPYでは相対パスで指定できません" -#: parser/parse_expr.c:2516 -msgid "IS DISTINCT FROM requires = operator to yield boolean" -msgstr "IS DISTINCT FROMでは=演算子はbooleanを返さなければなりません" +#: commands/copy.c:1407 +#, c-format +msgid "could not open file \"%s\" for writing: %m" +msgstr "ファイル\"%s\"を書き込み用にオープンできませんでした: %m" -#: parser/parse_func.c:147 +#: commands/copy.c:1414 commands/copy.c:2200 #, c-format -msgid "argument name \"%s\" used more than once" -msgstr "引数名 \"%s\" が複数回指定されました" +msgid "\"%s\" is a directory" +msgstr "\"%s\"はディレクトリです" -#: parser/parse_func.c:158 -msgid "positional argument cannot follow named argument" -msgstr "位置パラメーターの次には名前付きの引数を指定できません。" +#: commands/copy.c:1738 +#, c-format +msgid "COPY %s, line %d, column %s" +msgstr "%sのCOPY。行番号 %d。列 %s" -#: parser/parse_func.c:236 +#: commands/copy.c:1742 commands/copy.c:1787 #, c-format -msgid "%s(*) specified, but %s is not an aggregate function" -msgstr "%s(*)が指定されましたが%sは集約関数ではありません" +msgid "COPY %s, line %d" +msgstr "%sのCOPY。行番号 %d" -#: parser/parse_func.c:243 +#: commands/copy.c:1753 #, c-format -msgid "DISTINCT specified, but %s is not an aggregate function" -msgstr "DISTINCTが指定されましたが%sは集約関数ではありません" +msgid "COPY %s, line %d, column %s: \"%s\"" +msgstr "%sのCOPY。行番号 %d。列 %s: \"%s\"" -#: parser/parse_func.c:249 +#: commands/copy.c:1761 #, c-format -msgid "ORDER BY specified, but %s is not an aggregate function" -msgstr "ORDER BY が指定されましたが、%s が集約関数ではありません" +msgid "COPY %s, line %d, column %s: null input" +msgstr "%sのCOPY。行番号 %d。列 %s: 入力がヌルです" -#: parser/parse_func.c:255 +#: commands/copy.c:1773 #, c-format -msgid "" -"OVER specified, but %s is not a window function nor an aggregate function" -msgstr "" -"OVER が指定されましたが、%s はウィンドウ関数と集約関数のいずれでもありません" +msgid "COPY %s, line %d: \"%s\"" +msgstr "%sのCOPY。行番号 %d: \"%s\"" -#: parser/parse_func.c:277 +#: commands/copy.c:1857 #, c-format -msgid "function %s is not unique" -msgstr "関数 %s は一意でありません" +msgid "cannot copy to view \"%s\"" +msgstr "ビュー\"%s\"へのコピーはできません" -#: parser/parse_func.c:280 -msgid "" -"Could not choose a best candidate function. You might need to add explicit " -"type casts." -msgstr "" -"最善の候補関数を選択できませんでした。明示的な型キャストが必要かもしれません" +#: commands/copy.c:1862 +#, c-format +msgid "cannot copy to foreign table \"%s\"" +msgstr "外部テーブル \"%s\" へのコピーはできません" -#: parser/parse_func.c:289 -msgid "" -"No function matches the given name and argument types. You might need to add " -"explicit type casts." -msgstr "" -"指定名称、指定引数型に合う関数がありません。明示的な型キャストが必要かもしれ" -"ません" +#: commands/copy.c:1867 +#, c-format +msgid "cannot copy to sequence \"%s\"" +msgstr "シーケンス\"%s\"へのコピーはできません" -#: parser/parse_func.c:396 parser/parse_func.c:461 +#: commands/copy.c:1872 #, c-format -msgid "%s(*) must be used to call a parameterless aggregate function" -msgstr "%s(*)はパラメータがない集約関数の呼び出しに使用しなければなりません" +msgid "cannot copy to non-table relation \"%s\"" +msgstr "テーブル以外のリレーション\"%s\"へのコピーはできません" -#: parser/parse_func.c:403 -msgid "aggregates cannot return sets" -msgstr "集約は集合を返せません" +#: commands/copy.c:2219 +msgid "COPY file signature not recognized" +msgstr "COPYファイルのシグネチャが不明です" -#: parser/parse_func.c:415 -msgid "aggregates cannot use named arguments" -msgstr "集約では名前付き引数は使えません" +#: commands/copy.c:2224 +msgid "invalid COPY file header (missing flags)" +msgstr "COPYファイルのヘッダが無効です(フラグがありません)" -#: parser/parse_func.c:434 -msgid "window function call requires an OVER clause" -msgstr "ウィンドウ関数の呼び出しには OVER 句が必要です" +#: commands/copy.c:2230 +msgid "unrecognized critical flags in COPY file header" +msgstr "COPYファイルのヘッダ内の重要なフラグが不明です" -#: parser/parse_func.c:451 -msgid "DISTINCT is not implemented for window functions" -msgstr "ウィンドウ関数に対する DISTINCT は実装されていません" +#: commands/copy.c:2236 +msgid "invalid COPY file header (missing length)" +msgstr "COPYファイルのヘッダが無効です(サイズがありません)" -#: parser/parse_func.c:471 -msgid "aggregate ORDER BY is not implemented for window functions" -msgstr "ウィンドウ関数に対する集約の ORDER BY は実装されていません" +#: commands/copy.c:2243 +msgid "invalid COPY file header (wrong length)" +msgstr "COPYファイルのヘッダが無効です(サイズが不正です)" -#: parser/parse_func.c:477 -msgid "window functions cannot return sets" -msgstr "ウィンドウ関数は集合を返すことができません" +#: commands/copy.c:2376 commands/copy.c:3058 commands/copy.c:3275 +msgid "extra data after last expected column" +msgstr "推定最終列の後に余計なデータがありました" -#: parser/parse_func.c:488 -msgid "window functions cannot use named arguments" -msgstr "ウィンドウ関数では名前付き引数を使えません" +#: commands/copy.c:2386 +msgid "missing data for OID column" +msgstr "OID列のデータがありません" -#: parser/parse_func.c:1550 -#, c-format -msgid "aggregate %s(*) does not exist" -msgstr "集約%s(*)は存在しません" +#: commands/copy.c:2392 +msgid "null OID in COPY data" +msgstr "COPYデータのOIDがNULLでした" -#: parser/parse_func.c:1555 -#, c-format -msgid "aggregate %s does not exist" -msgstr "集約%sは存在しません" +#: commands/copy.c:2402 commands/copy.c:2501 +msgid "invalid OID in COPY data" +msgstr "COPYデータのOIDが無効です" -#: parser/parse_func.c:1574 +#: commands/copy.c:2417 #, c-format -msgid "function %s is not an aggregate" -msgstr "関数%sは集約ではありません" +msgid "missing data for column \"%s\"" +msgstr "列\"%s\"のデータがありません" -#: parser/parse_param.c:212 +#: commands/copy.c:2476 +msgid "received copy data after EOF marker" +msgstr "EOF マーカーの後ろでコピーデータを受信しました" + +#: commands/copy.c:2483 #, c-format -msgid "inconsistent types deduced for parameter $%d" -msgstr "パラメータ$%dについて推定された型が不整合です" +msgid "row field count is %d, expected %d" +msgstr "行のフィールド数は%d、その期待値は%dです" -#: scan.l:411 -msgid "unterminated /* comment" -msgstr "/*コメントが閉じていません" +#: commands/copy.c:2822 commands/copy.c:2839 +msgid "literal carriage return found in data" +msgstr "データの中に復帰記号そのものがありました" -#: scan.l:440 -msgid "unterminated bit string literal" -msgstr "ビット文字列リテラルの終端がありません" +#: commands/copy.c:2823 commands/copy.c:2840 +msgid "unquoted carriage return found in data" +msgstr "データの中に引用符のない復帰記号がありました" -#: scan.l:461 -msgid "unterminated hexadecimal string literal" -msgstr "16進数文字列リテラルの終端がありません" +#: commands/copy.c:2825 commands/copy.c:2842 +msgid "Use \"\\r\" to represent carriage return." +msgstr "復帰記号は\"\\r\"と表現してください" -#: scan.l:511 -msgid "unsafe use of string constant with Unicode escapes" -msgstr "Unicodeエスケープを使った文字列定数の危険な使用" +#: commands/copy.c:2826 commands/copy.c:2843 +msgid "Use quoted CSV field to represent carriage return." +msgstr "復帰記号を表現するにはCSVフィールドを引用符で括ってください" -#: scan.l:512 -msgid "" -"String constants with Unicode escapes cannot be used when " -"standard_conforming_strings is off." -msgstr "" -"Unicodeエスケープはstandard_conforming_stringsが無効な時に使用することはでき" -"ません。" +#: commands/copy.c:2855 +msgid "literal newline found in data" +msgstr "データの中に改行記号そのものがありました" -#: 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 のサロゲートペアが無効です" +#: commands/copy.c:2856 +msgid "unquoted newline found in data" +msgstr "データの中に引用符のない改行記号がありました" -#: scan.l:586 -msgid "invalid Unicode escape" -msgstr "Unicode のエスケープが無効です" +#: commands/copy.c:2858 +msgid "Use \"\\n\" to represent newline." +msgstr "改行記号は\"\\n\"と表現してください" -#: scan.l:587 -msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX." -msgstr "Unicode エスケープは \\uXXXX または \\UXXXXXXXX でなければなりません。" +#: commands/copy.c:2859 +msgid "Use quoted CSV field to represent newline." +msgstr "改行記号を表現するにはCSVフィールドを引用符で括ってください" -#: scan.l:598 -msgid "unsafe use of \\' in a string literal" -msgstr "文字列リテラルで安全ではない\\'が使用されました。" +#: commands/copy.c:2905 commands/copy.c:2941 +msgid "end-of-copy marker does not match previous newline style" +msgstr "コピー終端記号がこれまでの改行方式と一致しません" -#: scan.l:599 -msgid "" -"Use '' to write quotes in strings. \\' is insecure in client-only encodings." -msgstr "" -"文字列内で引用符を記述するには''を使用してください。\\'はクライアントのみで有" -"効な符号化形式では安全ではありません。" +#: commands/copy.c:2914 commands/copy.c:2930 +msgid "end-of-copy marker corrupt" +msgstr "コピー終端記号が破損しています" -#: scan.l:629 -msgid "unterminated quoted string" -msgstr "文字列の引用符が閉じていません" +#: commands/copy.c:3359 +msgid "unterminated CSV quoted field" +msgstr "CSV引用符が閉じていません" -#: scan.l:674 -msgid "unterminated dollar-quoted string" -msgstr "文字列のドル引用符が閉じていません" +#: commands/copy.c:3436 commands/copy.c:3455 +msgid "unexpected EOF in COPY data" +msgstr "COPYデータの中に想定外のEOFがあります" -#: scan.l:691 scan.l:703 scan.l:717 -msgid "zero-length delimited identifier" -msgstr "区切りつき識別子の長さがゼロです" +#: commands/copy.c:3445 +msgid "invalid field size" +msgstr "フィールドサイズが無効です" -#: scan.l:730 -msgid "unterminated quoted identifier" -msgstr "識別子の引用符が閉じていません" +#: commands/copy.c:3468 +msgid "incorrect binary data format" +msgstr "バイナリデータ書式が不正です" -#: scan.l:834 -msgid "operator too long" -msgstr "演算子が長すぎます" +#: commands/indexcmds.c:163 +msgid "must specify at least one column" +msgstr "少なくとも1つの列を指定しなければなりません" -#. translator: %s is typically the translation of "syntax error" -#: scan.l:992 +#: commands/indexcmds.c:167 #, c-format -msgid "%s at end of input" -msgstr "入力の最後で %s" +msgid "cannot use more than %d columns in an index" +msgstr "インデックスには%dを超える列を使用できません" -#. translator: first %s is typically the translation of "syntax error" -#: scan.l:1000 +#: commands/indexcmds.c:195 #, c-format -msgid "%s at or near \"%s\"" -msgstr "\"%2$s\"またはその近辺で%1$s" +msgid "cannot create index on foreign table \"%s\"" +msgstr "外部テーブル \"%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 "" -"サーバーのエンコーディングが UTF-8 ではない場合、コードポイントの値が 007F 以" -"上については Unicode のエスケープ値は使用できません" +#: commands/indexcmds.c:210 +msgid "cannot create indexes on temporary tables of other sessions" +msgstr "他のセッションの一時テーブルに対するインデックスを作成できません" -#: scan.l:1189 scan.l:1325 -msgid "invalid Unicode escape value" -msgstr "Unicode のエスケープシーケンスが無効です" +#: commands/indexcmds.c:296 +msgid "substituting access method \"gist\" for obsolete method \"rtree\"" +msgstr "古いメソッド\"rtree\"をアクセスメソッド\"gist\"に置換しています" -#: scan.l:1214 -msgid "invalid Unicode escape character" -msgstr "Unicode のエスケープ文字が無効です" +#: commands/indexcmds.c:313 +#, c-format +msgid "access method \"%s\" does not support unique indexes" +msgstr "アクセスメソッド \"%s\" では一意性インデックスをサポートしていません" -#: scan.l:1381 -msgid "nonstandard use of \\' in a string literal" -msgstr "文字列リテラルで非標準的な\\'が使用されました。" +#: commands/indexcmds.c:318 +#, c-format +msgid "access method \"%s\" does not support multicolumn indexes" +msgstr "アクセスメソッド\"%s\"は複数列インデックスをサポートしません" -#: scan.l:1382 -msgid "" -"Use '' to write quotes in strings, or use the escape string syntax (E'...')." -msgstr "" -"文字列内で引用符を記述するには''を使用してください。またはエスケープ文字列構" -"文(E'...')を使用してください。" +#: commands/indexcmds.c:323 +#, c-format +msgid "access method \"%s\" does not support exclusion constraints" +msgstr "アクセスメソッド \"%s\" は排除制約をサポートしていません" -#: scan.l:1391 -msgid "nonstandard use of \\\\ in a string literal" -msgstr "文字列リテラルで非標準的な\\\\が使用されました。" +#: commands/indexcmds.c:399 +#, c-format +msgid "%s %s will create implicit index \"%s\" for table \"%s\"" +msgstr "%1$s %2$sはテーブル\"%4$s\"に暗黙的なインデックス\"%3$s\"を作成します" -#: scan.l:1392 -msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'." -msgstr "" -"バックスラッシュ用のエスケープ文字列構文、例えばE'\\\\'を使用してください。" +#: commands/indexcmds.c:763 +msgid "cannot use subquery in index predicate" +msgstr "インデックスの述部に副問い合わせを使用できません" + +#: commands/indexcmds.c:767 +msgid "cannot use aggregate in index predicate" +msgstr "インデックスの述部に集約を使用できません" + +#: commands/indexcmds.c:776 +msgid "functions in index predicate must be marked IMMUTABLE" +msgstr "インデックスの述部の関数はIMMUTABLEマークが必要です" + +#: commands/indexcmds.c:894 +msgid "cannot use subquery in index expression" +msgstr "式インデックスには副問い合わせを使用できません" + +#: commands/indexcmds.c:898 +msgid "cannot use aggregate function in index expression" +msgstr "式インデックスには集約関数を使用できません" -#: scan.l:1406 -msgid "nonstandard use of escape in a string literal" -msgstr "文字列リテラル内で非標準的なエスケープが使用されました" +#: commands/indexcmds.c:909 +msgid "functions in index expression must be marked IMMUTABLE" +msgstr "式インデックスの関数はIMMUTABLEマークが必要です" -#: scan.l:1407 -msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'." -msgstr "" -"エスケープ用のエスケープ文字列構文、例えばE'\\\\r\\\\n'を使用してください" +#: commands/indexcmds.c:930 +#, +msgid "could not determine which collation to use for index expression" +msgstr "インデックス式で使用する照合順序を決定できませんでした" -#: parser/parse_relation.c:147 +#: commands/indexcmds.c:976 #, c-format -msgid "table reference \"%s\" is ambiguous" -msgstr "テーブル参照\"%s\"は曖昧です" +msgid "operator %s is not commutative" +msgstr "演算子 %s は交換可能ではありません" -#: parser/parse_relation.c:183 -#, c-format -msgid "table reference %u is ambiguous" -msgstr "テーブル参照%uは曖昧です" +#: commands/indexcmds.c:978 +msgid "Only commutative operators can be used in exclusion constraints." +msgstr "排除制約で使えるのは交換演算子だけです" -#: parser/parse_relation.c:343 +#: commands/indexcmds.c:1004 #, c-format -msgid "table name \"%s\" specified more than once" -msgstr "テーブル名\"%s\"が複数指定されました" +msgid "operator %s is not a member of operator family \"%s\"" +msgstr "演算子 %s は演算子ファミリー \"%s\" のメンバーではありません" + +#: commands/indexcmds.c:1007 +msgid "" +"The exclusion operator must be related to the index operator class for the " +"constraint." +msgstr "" +"この制約条件については、インデックス演算子クラスに対して排除制約が関連付けら" +"れなければなりません" -#: parser/parse_relation.c:754 parser/parse_relation.c:1043 -#: parser/parse_relation.c:1403 +#: commands/indexcmds.c:1042 #, c-format -msgid "table \"%s\" has %d columns available but %d columns specified" -msgstr "テーブル\"%s\"では%d列使用できますが、%d列指定されました" +msgid "access method \"%s\" does not support ASC/DESC options" +msgstr "アクセスメソッド\"%s\"はASC/DESCオプションをサポートしません" -#: parser/parse_relation.c:784 +#: commands/indexcmds.c:1047 #, c-format -msgid "too many column aliases specified for function %s" -msgstr "関数%sで指定された列別名が多すぎます" +msgid "access method \"%s\" does not support NULLS FIRST/LAST options" +msgstr "アクセスメソッド\"%s\"はNULLS FIRST/LASTオプションをサポートしません" -#: parser/parse_relation.c:850 +#: commands/indexcmds.c:1103 #, c-format -msgid "" -"There is a WITH item named \"%s\", but it cannot be referenced from this " -"part of the query." +msgid "data type %s has no default operator class for access method \"%s\"" msgstr "" -"\"%s\" という WITH 項目がありますが、これはクエリーのこの部分からは参照できま" -"せん。" +"アクセスメソッド\"%2$s\"にはデータ型%1$s用のデフォルトの演算子クラスがありま" +"せん" -#: parser/parse_relation.c:852 +#: commands/indexcmds.c:1105 msgid "" -"Use WITH RECURSIVE, or re-order the WITH items to remove forward references." +"You must specify an operator class for the index or define a default " +"operator class for the data type." msgstr "" -"WITH RECURSIVE を使うか、もしくは WITH 項目の場所を変えて前方参照をなくしてく" -"ださい" - -#: parser/parse_relation.c:1122 -msgid "" -"a column definition list is only allowed for functions returning \"record\"" -msgstr "列定義リストは\"record\"を返す関数でのみ使用できます" - -#: parser/parse_relation.c:1130 -msgid "a column definition list is required for functions returning \"record\"" -msgstr "\"record\"を返す関数では列定義リストが必要です" +"このインデックス用の演算子クラスを指定する、あるいはこのデータ型のデフォルト" +"演算子クラスを定義しなければなりません" -#: parser/parse_relation.c:1177 +#: commands/indexcmds.c:1155 #, c-format -msgid "function \"%s\" in FROM has unsupported return type %s" -msgstr "FROM句の関数\"%s\"がサポートされない戻り値型%sを持ちます" +msgid "operator class \"%s\" does not accept data type %s" +msgstr "演算子クラス\"%s\"はデータ型%sを受け付けません" -#: parser/parse_relation.c:1249 +#: commands/indexcmds.c:1245 #, c-format -msgid "VALUES lists \"%s\" have %d columns available but %d columns specified" -msgstr "VALUESリスト\"%s\"は%d列使用可能ですが、%d列が指定されました" +msgid "there are multiple default operator classes for data type %s" +msgstr "データ型%sには複数のデフォルトの演算子クラスがあります" -#: parser/parse_relation.c:1305 +#: commands/indexcmds.c:1586 #, c-format -msgid "joins can have at most %d columns" -msgstr "JOIN で指定できるのは、最大 %d カラムです" +msgid "table \"%s\" has no indexes" +msgstr "テーブル\"%s\"にはインデックスはありません" -#: parser/parse_relation.c:2038 -#, c-format -msgid "column %d of relation \"%s\" does not exist" -msgstr "リレーション\"%2$s\"の列\"%1$d\"は存在しません" +#: commands/indexcmds.c:1614 +msgid "can only reindex the currently open database" +msgstr "" +"現在オープンしているデータベースのみを再インデックス付けすることができます" -#: parser/parse_relation.c:2397 +#: commands/indexcmds.c:1699 #, c-format -msgid "invalid reference to FROM-clause entry for table \"%s\"" -msgstr "テーブル\"%s\"用のFROM句に対する無効な参照です。" +msgid "table \"%s.%s\" was reindexed" +msgstr "テーブル\"%s.%s\"は再インデックス化されました" -#: parser/parse_relation.c:2400 +#: commands/define.c:67 commands/define.c:222 commands/define.c:254 +#: commands/define.c:282 #, c-format -msgid "Perhaps you meant to reference the table alias \"%s\"." -msgstr "テーブル別名\"%s\"に対する参照を意図しているかもしれません" +msgid "%s requires a parameter" +msgstr "%sはパラメータが必要です" -#: parser/parse_relation.c:2402 +#: commands/define.c:108 commands/define.c:119 commands/define.c:189 +#: commands/define.c:207 #, c-format -msgid "" -"There is an entry for table \"%s\", but it cannot be referenced from this " -"part of the query." -msgstr "" -"テーブル\"%s\"の項目がありますが、問い合わせのこの部分からは参照できません。" -"\"" +msgid "%s requires a numeric value" +msgstr "%sは数値が必要です" -#: parser/parse_relation.c:2408 +#: commands/define.c:175 #, c-format -msgid "missing FROM-clause entry for table \"%s\"" -msgstr "テーブル\"%s\"用のFROM句エントリがありません" - -#: parser/analyze.c:441 -msgid "INSERT ... SELECT cannot specify INTO" -msgstr "INSERT ... SELECTではINTOを指定できません" - -#: parser/analyze.c:543 parser/analyze.c:968 -msgid "VALUES lists must all be the same length" -msgstr "VALUESリストはすべて同じ長さでなければなりません" +msgid "%s requires a Boolean value" +msgstr "パラメータ\"%s\"はboolean値が必要です" -#: parser/analyze.c:564 parser/analyze.c:1073 -msgid "VALUES must not contain table references" -msgstr "VALUESにはテーブル参照を含めてはいけません" +#: commands/define.c:236 +#, c-format +msgid "argument of %s must be a name" +msgstr "%sの引数は名前でなければなりません" -#: parser/analyze.c:578 parser/analyze.c:1087 -msgid "VALUES must not contain OLD or NEW references" -msgstr "VALUESにはOLDやNEWへの参照を含めてはいけません" +#: commands/define.c:266 +#, c-format +msgid "argument of %s must be a type name" +msgstr "%sの引数は型名でなければなりません" -#: parser/analyze.c:579 parser/analyze.c:1088 -msgid "Use SELECT ... UNION ALL ... instead." -msgstr "代わりにSELECT ... UNION ALL ... を使用してください" +#: commands/define.c:291 +#, c-format +msgid "%s requires an integer value" +msgstr "%sは整数値が必要です" -#: parser/analyze.c:689 parser/analyze.c:1100 -msgid "cannot use aggregate function in VALUES" -msgstr "VALUESで集約関数を使用できません" +#: commands/define.c:312 +#, c-format +msgid "invalid argument for %s: \"%s\"" +msgstr "%sの引数が無効です: \"%s\"" -#: parser/analyze.c:695 parser/analyze.c:1106 -msgid "cannot use window function in VALUES" -msgstr "VALUES 内ではウィンドウ関数を使用できません" +#: commands/dbcommands.c:201 +msgid "LOCATION is not supported anymore" +msgstr "LOCATIONはもはやサポートされません" -#: parser/analyze.c:727 -msgid "INSERT has more expressions than target columns" -msgstr "INSERTにて対象列よりも多くの式があります" +#: commands/dbcommands.c:202 +msgid "Consider using tablespaces instead." +msgstr "代わりにテーブル空間の使用を検討してください" -#: parser/analyze.c:735 -msgid "INSERT has more target columns than expressions" -msgstr "INSERTにて式よりも多くの対象列があります" +#: commands/dbcommands.c:272 +msgid "permission denied to create database" +msgstr "データベースを作成する権限がありません" -#: parser/analyze.c:984 -msgid "DEFAULT can only appear in a VALUES list within INSERT" -msgstr "VALUESリスト内のDEFAULTはINSERTの場合のみ使用できます" +#: commands/dbcommands.c:295 +#, c-format +msgid "template database \"%s\" does not exist" +msgstr "テンプレートデータベース\"%s\"は存在しません" -#: parser/analyze.c:1054 parser/analyze.c:2174 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES" -msgstr "SELECT FOR UPDATE/SHAREをVALUESに使用できません" +#: commands/dbcommands.c:307 +#, c-format +msgid "permission denied to copy database \"%s\"" +msgstr "データベース\"%s\"をコピーする権限がありません" -#: parser/analyze.c:1307 -msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" -msgstr "無効なUNION/INTERSECT/EXCEPT ORDER BY句です" +#: commands/dbcommands.c:323 +#, c-format +msgid "invalid server encoding %d" +msgstr "サーバの符号化方式%dは無効です" -#: parser/analyze.c:1308 -msgid "Only result column names can be used, not expressions or functions." -msgstr "式や関数ではなく、結果列の名前のみが使用されます。" +#: commands/dbcommands.c:329 commands/dbcommands.c:333 +#, c-format +msgid "invalid locale name %s" +msgstr "ロケール名 %s は無効です" -#: parser/analyze.c:1309 +#: commands/dbcommands.c:352 +#, c-format msgid "" -"Add the expression/function to every SELECT, or move the UNION into a FROM " -"clause." +"new encoding (%s) is incompatible with the encoding of the template database " +"(%s)" msgstr "" -"式/関数をすべてのSELECTにつけてください。またはUNIONをFROM句に移動してくださ" -"い" - -#: parser/analyze.c:1376 -msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" -msgstr "INTOはUNION/INTERSECT/EXCEPTの最初のSELECTでのみ使用できます" +"新しい符号化方式(%s)はテンプレートデータベースの符号化方式(%s)と互換性があり" +"ません" -#: parser/analyze.c:1436 +#: commands/dbcommands.c:355 msgid "" -"UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of " -"same query level" +"Use the same encoding as in the template database, or use template0 as " +"template." msgstr "" -"UNION/INTERSECT/EXCEPTの要素となる文では同一問い合わせレベルの他のリレーショ" -"ンを参照できません" +"テンプレートデータベースの符号化方式と同じものを使うか、もしくは template0 を" +"テンプレートとして使用してください" -#: parser/analyze.c:1521 +#: commands/dbcommands.c:360 #, c-format -msgid "each %s query must have the same number of columns" -msgstr "%s問い合わせはそれぞれ同じ列数を返さなければなりません" - -#: parser/analyze.c:1713 -msgid "CREATE TABLE AS specifies too many column names" -msgstr "CREATE TABLE ASで指定した列数が多すぎます" - -#: parser/analyze.c:1763 -msgid "cannot use aggregate function in UPDATE" -msgstr "UPDATEでは集約関数を使用できません" - -#: parser/analyze.c:1769 -msgid "cannot use window function in UPDATE" -msgstr "UPDATE 内ではウィンドウ関数を使用できません" - -#: parser/analyze.c:1876 -msgid "cannot use aggregate function in RETURNING" -msgstr "RETURNINGには集約関数を使用できません" - -#: parser/analyze.c:1882 -msgid "cannot use window function in RETURNING" -msgstr "RETURNING ではウィンドウ関数を使用できません" +msgid "" +"new collation (%s) is incompatible with the collation of the template " +"database (%s)" +msgstr "" +"新しい照合順序(%s)はテンプレートデータベースの照合順序(%s)と互換性がありませ" +"ん" -#: parser/analyze.c:1901 -msgid "RETURNING cannot contain references to other relations" -msgstr "RETURNINGに他のリレーションへの参照を持たせられません" +#: commands/dbcommands.c:362 +msgid "" +"Use the same collation as in the template database, or use template0 as " +"template." +msgstr "" +"テンプレートデータベースの照合順序と同じものを使うか、もしくは template0 をテ" +"ンプレートとして使用してください" -#: parser/analyze.c:1940 -msgid "cannot specify both SCROLL and NO SCROLL" -msgstr "SCROLLとNO SCROLLの両方を指定できません" +#: 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)はテンプレートデータベース(%s)のLC_CTYPEと互換性がありませ" +"ん" -#: parser/analyze.c:1954 -msgid "DECLARE CURSOR cannot specify INTO" -msgstr "DECLARE CURSORではINTOを指定できません" +#: commands/dbcommands.c:369 +msgid "" +"Use the same LC_CTYPE as in the template database, or use template0 as " +"template." +msgstr "" +"テンプレートデータベースのLC_CTYPEと同じものを使うか、もしくはtemplate0をテン" +"プレートとして使用してください" -#: parser/analyze.c:1962 -msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported" -msgstr "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHAREはサポートされていません" +#: commands/dbcommands.c:391 commands/dbcommands.c:1054 +msgid "pg_global cannot be used as default tablespace" +msgstr "デフォルトのテーブル空間としてpg_globalを使用できません" -#: parser/analyze.c:1963 -msgid "Holdable cursors must be READ ONLY." -msgstr "保持可能カーソルは読み取りのみでなければなりません。" +#: commands/dbcommands.c:417 +#, c-format +msgid "cannot assign new default tablespace \"%s\"" +msgstr "新しいデフォルトのテーブル空間\"%s\"を割り当てられません" -#: parser/analyze.c:1976 -msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported" +#: commands/dbcommands.c:419 +#, c-format +msgid "" +"There is a conflict because database \"%s\" already has some tables in this " +"tablespace." msgstr "" -"DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHAREはサポートされていません" +"データベース\"%s\"のいくつかテーブルはすでにこのテーブル空間にありますので、" +"競合しています" -#: parser/analyze.c:1977 -msgid "Insensitive cursors must be READ ONLY." -msgstr "無反応カーソルは読み取りのみでなければなりません" +#: commands/dbcommands.c:439 commands/dbcommands.c:929 +#, c-format +msgid "database \"%s\" already exists" +msgstr "データベース\"%s\"はすでに存在します" -#: parser/analyze.c:2030 -msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause" -msgstr "DISTINCT句ではSELECT FOR UPDATE/SHAREを使用できません" +#: commands/dbcommands.c:453 +#, c-format +msgid "source database \"%s\" is being accessed by other users" +msgstr "元となるデータベース\"%s\"は他のユーザによってアクセスされています" -#: parser/analyze.c:2034 -msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause" -msgstr "GROUP BY句ではSELECT FOR UPDATE/SHAREを使用できません" +#: commands/dbcommands.c:695 commands/dbcommands.c:710 +#, c-format +msgid "encoding %s does not match locale %s" +msgstr "符号化方式 %s がロケール %s に合いません" -#: parser/analyze.c:2038 -msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause" -msgstr "HAVING句ではSELECT FOR UPDATE/SHAREを使用できません" +#: commands/dbcommands.c:698 +#, c-format +msgid "The chosen LC_CTYPE setting requires encoding %s." +msgstr "" +"選択された LC_CTYPE を設定するには、符号化方式 %s である必要があります。" -#: parser/analyze.c:2042 -msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions" -msgstr "集約関数ではSELECT FOR UPDATE/SHAREを使用できません" +#: commands/dbcommands.c:713 +#, c-format +msgid "The chosen LC_COLLATE setting requires encoding %s." +msgstr "選択されたLC_COLLATEを設定するには、符号化方式%sである必要があります。" -#: parser/analyze.c:2046 -msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions" -msgstr "ウィンドウ関数では SELECT FOR UPDATE/SHARE を使用できません" +#: commands/dbcommands.c:771 +#, c-format +msgid "database \"%s\" does not exist, skipping" +msgstr "データベース\"%s\"は存在しません。省略します" -#: parser/analyze.c:2050 -msgid "" -"SELECT FOR UPDATE/SHARE is not allowed with set-returning functions in the " -"target list" -msgstr "" -"ターゲットリストの中では SELECT FOR UPDATE/SHARE を戻り値を返す関数と一緒に使" -"うことはできません" +#: commands/dbcommands.c:792 +msgid "cannot drop a template database" +msgstr "テンプレートデータベースを削除できません" -#: parser/analyze.c:2126 -msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names" -msgstr "" -"SELECT FOR UPDATE/SHARE では無条件のリレーション名を指定しなければなりません" +#: commands/dbcommands.c:798 +msgid "cannot drop the currently open database" +msgstr "現在オープンしているデータベースを削除できません" -#: parser/analyze.c:2156 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join" -msgstr "SELECT FOR UPDATE/SHAREを結合に使用できません" +#: 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\"は他のユーザからアクセスされています" -#: parser/analyze.c:2162 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to NEW or OLD" -msgstr "SELECT FOR UPDATE/SHAREをNEWやOLDに使用できません" +#: commands/dbcommands.c:920 +msgid "permission denied to rename database" +msgstr "データベースの名前を変更する権限がありません" -#: parser/analyze.c:2168 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function" -msgstr "SELECT FOR UPDATE/SHAREを関数に使用できません" +#: commands/dbcommands.c:940 +msgid "current database cannot be renamed" +msgstr "現在のデータベースの名前を変更できません" -#: parser/analyze.c:2180 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query" -msgstr "SELECT FOR UPDATE/SHARE は WITH クエリーには適用できません" +#: commands/dbcommands.c:1032 +msgid "cannot change the tablespace of the currently open database" +msgstr "現在オープン中のデータベースのテーブルスペースは変更できません" -#: parser/analyze.c:2194 +#: commands/dbcommands.c:1116 #, c-format -msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause" -msgstr "FOR UPDATE/SHARE句のリレーション\"%s\"はFROM句にありません" +msgid "some relations of database \"%s\" are already in tablespace \"%s\"" +msgstr "" +"データベース \"%s\" のリレーションの中に、テーブルスペース \"%s\"にすでに存在" +"するものがあります" -#: parser/parse_cte.c:40 -#, c-format +#: commands/dbcommands.c:1118 msgid "" -"recursive reference to query \"%s\" must not appear within its non-recursive " -"term" -msgstr "クエリー \"%s\" への再帰的参照が、その非再帰項目内で現れてはなりません" +"You must move them back to the database's default tablespace before using " +"this command." +msgstr "" +"このコマンドを使う前に、データベースのデフォルトのテーブルスペースに戻さなけ" +"ればなりません。" -#: parser/parse_cte.c:42 -#, c-format -msgid "recursive reference to query \"%s\" must not appear within a subquery" -msgstr "クエリー \"%s\" への再帰的参照が、副問い合わせ内で現れてはなりません" +#: commands/dbcommands.c:1490 +msgid "permission denied to change owner of database" +msgstr "データベースの所有者を変更する権限がありません" -#: parser/parse_cte.c:44 +#: commands/dbcommands.c:1802 #, c-format msgid "" -"recursive reference to query \"%s\" must not appear within an outer join" -msgstr "クエリー \"%s\" への再帰的参照が、外部結合内で現れてはなりません" - -#: parser/parse_cte.c:46 -#, c-format -msgid "recursive reference to query \"%s\" must not appear within INTERSECT" -msgstr "クエリー \"%s\" への再帰的参照が、INTERSECT 内で現れてはなりません" +"There are %d other session(s) and %d prepared transaction(s) using the " +"database." +msgstr "" +"他にこのデータベースを使っている %d 個のセッションと %d 個の準備済みトランザ" +"クションがあります。" -#: parser/parse_cte.c:48 +#: commands/dbcommands.c:1805 #, c-format -msgid "recursive reference to query \"%s\" must not appear within EXCEPT" -msgstr "クエリー \"%s\" への再帰的参照が、EXCEPT 内で現れてはなりません" +msgid "There are %d other session(s) using the database." +msgstr "他にこのデータベースを使っている %d 個のセッションがあります。" -#: parser/parse_cte.c:130 +#: commands/dbcommands.c:1808 #, c-format -msgid "WITH query name \"%s\" specified more than once" -msgstr "WITH クエリー名 \"%s\" が複数回指定されました" +msgid "There are %d prepared transaction(s) using the database." +msgstr "このデータベースを使用する準備されたトランザクションが%d存在します。" -#: parser/parse_cte.c:247 -msgid "subquery in WITH cannot have SELECT INTO" -msgstr "WITH における副問い合わせでは SELECT INTO を使用できません" +#: commands/operatorcmds.c:100 +msgid "=> is deprecated as an operator name" +msgstr ">= は演算子名として廃止予定であり、推奨されません" -#: parser/parse_cte.c:288 -#, c-format +#: commands/operatorcmds.c:101 msgid "" -"recursive query \"%s\" column %d has type %s in non-recursive term but type %" -"s overall" +"This name may be disallowed altogether in future versions of PostgreSQL." msgstr "" -"再帰クエリー \"%s\" の %d 個目のカラムが非再帰項目内で %s 型になっています" -"が、全体的には %s 型になっています" +"PostgreSQL の将来のバージョンでは、この名前が使えなくなる可能性があります" -#: parser/parse_cte.c:294 -msgid "Cast the output of the non-recursive term to the correct type." -msgstr "非再帰項目の出力を正しい型にキャストしてください" +#: commands/operatorcmds.c:122 commands/operatorcmds.c:130 +msgid "SETOF type not allowed for operator argument" +msgstr "演算子の引数にはSETOF型を使用できません" -#: parser/parse_cte.c:376 +#: commands/operatorcmds.c:158 #, c-format -msgid "WITH query \"%s\" has %d columns available but %d columns specified" -msgstr "" -"WITH クエリー \"%s\" では %d 個のカラムが使用できますが、%d 個のカラムが指定" -"されました" +msgid "operator attribute \"%s\" not recognized" +msgstr "演算子の属性\"%s\"は不明です" -#: parser/parse_cte.c:556 -msgid "mutual recursion between WITH items is not implemented" -msgstr "WITH 項目間同士の再帰は実装されていません" +#: commands/operatorcmds.c:168 +msgid "operator procedure must be specified" +msgstr "演算子のプロシージャを指定しなければなりません" + +#: commands/operatorcmds.c:179 +msgid "at least one of leftarg or rightarg must be specified" +msgstr "少なくとも右辺か左辺のどちらかを指定しなければなりません" -#: parser/parse_cte.c:608 +#: commands/operatorcmds.c:228 #, c-format -msgid "" -"recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] " -"recursive-term" -msgstr "再帰クエリー \"%s\" に 非再帰項目 UNION [ALL] 再帰項目 がありません" +msgid "restriction estimator function %s must return type \"float8\"" +msgstr "制約推測用関数 %s は \"float8\" 型を返さなければなりません" -#: parser/parse_cte.c:640 -msgid "ORDER BY in a recursive query is not implemented" -msgstr "再帰クエリー内の ORDER BY は実装されていません" +#: commands/operatorcmds.c:267 +#, c-format +msgid "join estimator function %s must return type \"float8\"" +msgstr "JOIN 推測用関数 %s は \"float8\" 型を返さなければなりません" -#: parser/parse_cte.c:646 -msgid "OFFSET in a recursive query is not implemented" -msgstr "再帰クエリー内の OFFSET は実装されていません" +#: commands/operatorcmds.c:318 +#, c-format +msgid "operator %s does not exist, skipping" +msgstr "演算子%sが存在しません。省略します" -#: parser/parse_cte.c:652 -msgid "LIMIT in a recursive query is not implemented" -msgstr "再帰クエリー内の LIMIT は実装されていません" +#: commands/typecmds.c:169 +msgid "must be superuser to create a base type" +msgstr "基本型を作成できるのはスーパーユーザだけです" -#: parser/parse_cte.c:658 -msgid "FOR UPDATE/SHARE in a recursive query is not implemented" -msgstr "再帰クエリー内の FOR UPDATE/SHARE は実装されていません" +#: commands/typecmds.c:275 +#, c-format +msgid "type attribute \"%s\" not recognized" +msgstr "型の属性\"%s\"は不明です" -#: parser/parse_cte.c:715 +#: commands/typecmds.c:329 #, c-format -msgid "recursive reference to query \"%s\" must not appear more than once" -msgstr "クエリー \"%s\" への再帰参照が2回以上現れてはなりません" +msgid "invalid type category \"%s\": must be simple ASCII" +msgstr "型カテゴリ \"%s\" が無効です。単純な ASCII でなければなりません" -#: main/main.c:230 +#: commands/typecmds.c:348 #, c-format -msgid "%s: setsysinfo failed: %s\n" -msgstr "%s: setsysinfoが失敗しました: %s\n" +msgid "array element type cannot be %s" +msgstr "%sを配列要素の型にすることはできません" -#: main/main.c:249 +#: commands/typecmds.c:380 #, c-format -msgid "%s: WSAStartup failed: %d\n" -msgstr "%s: WSAStartupが失敗しました: %d\n" +msgid "alignment \"%s\" not recognized" +msgstr "アライメント\"%s\"は不明です" -#: main/main.c:268 +#: commands/typecmds.c:397 #, c-format +msgid "storage \"%s\" not recognized" +msgstr "格納方式\"%s\"は不明です" + +#: commands/typecmds.c:408 +msgid "type input function must be specified" +msgstr "型の入力関数を指定しなければなりません" + +#: commands/typecmds.c:412 +msgid "type output function must be specified" +msgstr "型の出力関数を指定しなければなりません" + +#: commands/typecmds.c:417 msgid "" -"%s is the PostgreSQL server.\n" -"\n" -msgstr "" -"%sはPostgreSQLサーバです\n" -"\n" +"type modifier output function is useless without a type modifier input " +"function" +msgstr "型修正入力関数がない場合の型修正出力関数は意味がありません" -#: main/main.c:269 +#: commands/typecmds.c:440 #, c-format -msgid "" -"Usage:\n" -" %s [OPTION]...\n" -"\n" -msgstr "" -"使用方法:\n" -"\" %s [オプション]...\n" -"\n" +msgid "changing return type of function %s from \"opaque\" to %s" +msgstr "関数%sの戻り値型を\"opaque\"から%sに変更しています" -#: main/main.c:270 +#: commands/typecmds.c:447 #, c-format -msgid "Options:\n" -msgstr "オプション:\n" +msgid "type input function %s must return type %s" +msgstr "型の入力関数%sは型%sを返さなければなりません" -#: main/main.c:272 +#: commands/typecmds.c:457 #, c-format -msgid " -A 1|0 enable/disable run-time assert checking\n" -msgstr " -A 1|0 実行時のアサート検査を有効/無効にします\n" +msgid "changing return type of function %s from \"opaque\" to \"cstring\"" +msgstr "関数%sの戻り値型を\"opaque\"から\"cstring\"に変更しています" -#: main/main.c:274 +#: commands/typecmds.c:464 #, c-format -msgid " -B NBUFFERS number of shared buffers\n" -msgstr " -B NBUFFERS 共有バッファ数です\n" +msgid "type output function %s must return type \"cstring\"" +msgstr "型の出力関数%sは型\"cstring\"を返さなければなりません" -#: main/main.c:275 +#: commands/typecmds.c:473 #, c-format -msgid " -c NAME=VALUE set run-time parameter\n" -msgstr " -c NAME=VALUE 実行時パラメータを設定します\n" +msgid "type receive function %s must return type %s" +msgstr "型の受信関数%sは型%sを返さなければなりません" -#: main/main.c:276 +#: commands/typecmds.c:482 #, c-format -msgid " -d 1-5 debugging level\n" -msgstr " -d 1-5 デバッグレベルです\n" +msgid "type send function %s must return type \"bytea\"" +msgstr "型の送信関数%sは型\"bytea\"を返さなければなりません" + +#: commands/typecmds.c:687 +#, c-format +msgid "\"%s\" is not a domain" +msgstr "\"%s\"はドメインではありません" + +#: commands/typecmds.c:827 +#, c-format +msgid "\"%s\" is not a valid base type for a domain" +msgstr "\"%s\"はドメインの基本型として無効です" + +#: commands/typecmds.c:909 +msgid "multiple default expressions" +msgstr "デフォルト式が複数あります" + +#: commands/typecmds.c:973 commands/typecmds.c:982 +msgid "conflicting NULL/NOT NULL constraints" +msgstr "NULL制約とNOT NULL制約が競合しています" + +#: commands/typecmds.c:1001 commands/typecmds.c:1983 +msgid "unique constraints not possible for domains" +msgstr "ドメインでは一意性制約は使用できません" + +#: commands/typecmds.c:1007 commands/typecmds.c:1989 +msgid "primary key constraints not possible for domains" +msgstr "ドメインではプライマリキー制約はできません" + +#: commands/typecmds.c:1013 commands/typecmds.c:1995 +msgid "exclusion constraints not possible for domains" +msgstr "ドメインでは排除制約は使用できません" + +#: commands/typecmds.c:1019 commands/typecmds.c:2001 +msgid "foreign key constraints not possible for domains" +msgstr "ドメイン用の外部キー制約はできません" + +#: commands/typecmds.c:1028 commands/typecmds.c:2010 +msgid "specifying constraint deferrability not supported for domains" +msgstr "ドメインでは制約遅延の指定はサポートしていません" -#: main/main.c:277 +#: commands/typecmds.c:1332 #, c-format -msgid " -D DATADIR database directory\n" -msgstr " -D DATADIR データベースディレクトリです\n" +msgid "changing argument type of function %s from \"opaque\" to \"cstring\"" +msgstr "関数%sの引数型を\"opaque\"から\"cstring\"に変更しています" -#: main/main.c:278 +#: commands/typecmds.c:1383 #, c-format -msgid " -e use European date input format (DMY)\n" -msgstr " -e ヨーロッパ方式の日付入力を行います(DMY)\n" +msgid "changing argument type of function %s from \"opaque\" to %s" +msgstr "関数%sの引数型を\"opaque\"から%sに変更しています" -#: main/main.c:279 +#: commands/typecmds.c:1482 #, c-format -msgid " -F turn fsync off\n" -msgstr " -F fsyncを無効にします\n" +msgid "typmod_in function %s must return type \"integer\"" +msgstr "typmod_in関数%sは\"integer\"型を返さなければなりません" -#: main/main.c:280 +#: commands/typecmds.c:1509 #, c-format -msgid " -h HOSTNAME host name or IP address to listen on\n" -msgstr " -h HOSTNAME 接続を監視するホスト名またはIPアドレスです\n" +msgid "typmod_out function %s must return type \"cstring\"" +msgstr "typmod_out関数%sは型\"cstring\"を返さなければなりません" -#: main/main.c:281 +#: commands/typecmds.c:1536 #, c-format -msgid " -i enable TCP/IP connections\n" -msgstr " -i TCP/IP接続を有効にします\n" +msgid "type analyze function %s must return type \"boolean\"" +msgstr "型の解析関数%sは\"boolean\"型を返さなければなりません" -#: main/main.c:282 +#: commands/typecmds.c:1835 #, c-format -msgid " -k DIRECTORY Unix-domain socket location\n" -msgstr " -k DIRECTORY Unixドメインソケットの場所です\n" +msgid "column \"%s\" of table \"%s\" contains null values" +msgstr "テーブル\"%2$s\"の列\"%1$s\"にNULL値があります" -#: main/main.c:284 +#: commands/typecmds.c:2081 #, c-format -msgid " -l enable SSL connections\n" -msgstr " -l SSL接続を有効にします\n" +msgid "" +"column \"%s\" of table \"%s\" contains values that violate the new constraint" +msgstr "テーブル\"%2$s\"の列\"%1$s\"に新しい制約に違反する値があります" -#: main/main.c:286 +#: commands/typecmds.c:2286 #, c-format -msgid " -N MAX-CONNECT maximum number of allowed connections\n" -msgstr " -N MAX-CONNECT 許容する最大接続数です\n" +msgid "%s is not a domain" +msgstr "%s はドメインではありません" -#: main/main.c:287 +#: commands/typecmds.c:2368 commands/typecmds.c:2377 +msgid "cannot use table references in domain check constraint" +msgstr "ドメインの検査制約ではテーブル参照を使用できません" + +#: commands/typecmds.c:2607 commands/typecmds.c:2679 commands/typecmds.c:2903 #, c-format -msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n" -msgstr "" -" -o OPTIONS 個々のサーバプロセスに\"OPTIONS\"を渡します(古い形式)\n" +msgid "%s is a table's row type" +msgstr "%sはテーブルの行型です" -#: main/main.c:288 +#: commands/typecmds.c:2609 commands/typecmds.c:2681 commands/typecmds.c:2905 +msgid "Use ALTER TABLE instead." +msgstr "代わりにALTER TABLEを使用してください" + +#: commands/typecmds.c:2616 commands/typecmds.c:2688 commands/typecmds.c:2834 #, c-format -msgid " -p PORT port number to listen on\n" -msgstr " -p PORT 接続を監視するポート番号です\n" +msgid "cannot alter array type %s" +msgstr "配列型%sを変更できません" -#: main/main.c:289 +#: commands/typecmds.c:2618 commands/typecmds.c:2690 commands/typecmds.c:2836 #, c-format -msgid " -s show statistics after each query\n" -msgstr " -s 各問い合わせの後に統計情報を表示します\n" +msgid "You can alter type %s, which will alter the array type as well." +msgstr "型%sを変更することができます。これは同時にその配列型も変更します。" -#: main/main.c:290 +#: commands/typecmds.c:2889 #, c-format -msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n" -msgstr " -S WORK-MEM ソート用のメモリ量です(KB単位)\n" +msgid "type \"%s\" already exists in schema \"%s\"" +msgstr "型\"%s\"はスキーマ\"%s\"内にすでに存在します" -#: main/main.c:291 +#: commands/lockcmds.c:93 #, c-format -msgid " --NAME=VALUE set run-time parameter\n" -msgstr " --NAME=VALUE 実行時パラメータを設定します\n" +msgid "could not obtain lock on relation \"%s\"" +msgstr "リレーション\"%s\"のロックを取得できませんでした" -#: main/main.c:292 +#: commands/lockcmds.c:98 #, c-format -msgid " --describe-config describe configuration parameters, then exit\n" -msgstr " --describe-config 設定パラメータを出力し終了します\n" +msgid "could not obtain lock on relation with OID %u" +msgstr "OID %u のリレーションに対するロックを獲得できませんでした" -#: main/main.c:293 +#: commands/view.c:143 #, c-format -msgid " --help show this help, then exit\n" -msgstr " --help ヘルプを表示し終了します\n" +msgid "could not determine which collation to use for view column \"%s\"" +msgstr "ビューの列 \"%s\" で使用する照合順序を決定できませんでした" -#: main/main.c:294 +#: commands/view.c:158 +msgid "view must have at least one column" +msgstr "ビューには少なくとも1つの列が必要です" + +#: commands/view.c:284 commands/view.c:296 +msgid "cannot drop columns from view" +msgstr "ビューからカラムを削除できません" + +#: commands/view.c:301 #, c-format -msgid " --version output version information, then exit\n" -msgstr " --version バージョン情報を出力し終了します\n" +msgid "cannot change name of view column \"%s\" to \"%s\"" +msgstr "ビューのカラムの名前を \"%s\" から \"%s\" に変更できません" -#: main/main.c:296 +#: commands/view.c:309 #, c-format -msgid "" -"\n" -"Developer options:\n" +msgid "cannot change data type of view column \"%s\" from %s to %s" +msgstr "ビューのカラム \"%s\" のデータ型を %s から %s に変更できません" + +#: commands/view.c:447 +#, +msgid "views must not contain SELECT INTO" +msgstr "ビューでは SELECT INTO を使用できません" + +#: commands/view.c:451 +msgid "views must not contain data-modifying statements in WITH" msgstr "" -"\n" -"開発者向けオプション:\n" +"ビューでは WITH 句にデータを変更するステートメントを含むことはできません" -#: main/main.c:297 -#, c-format -msgid " -f s|i|n|m|h forbid use of some plan types\n" -msgstr "いくつかの計画型を禁止します\n" +#: commands/view.c:479 +msgid "CREATE VIEW specifies more column names than columns" +msgstr "CREATE VIEWでは列よりも多くの列名を指定しなければなりません" -#: main/main.c:298 +#: commands/view.c:496 #, c-format -msgid "" -" -n do not reinitialize shared memory after abnormal exit\n" -msgstr " -n 異常終了後に共有メモリの初期化を行いません\n" +msgid "view \"%s\" will be a temporary view" +msgstr "ビュー\"%s\"は一時ビューとなります" -#: main/main.c:299 +#: commands/view.c:504 +msgid "views cannot be unlogged because they do not have storage" +msgstr "ビューはそれ用の格納領域を持たないので、ログを取らないのは許されません" + +#: lib/stringinfo.c:267 #, c-format -msgid " -O allow system table structure changes\n" -msgstr " -O システムテーブル構造の変更を許可します\n" +msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes." +msgstr "" +"%dバイトを持つ文字列バッファを%dバイト多く、大きくすることができません。" -#: main/main.c:300 +#: rewrite/rewriteSupport.c:117 rewrite/rewriteRemove.c:62 +#: rewrite/rewriteDefine.c:702 rewrite/rewriteDefine.c:764 #, c-format -msgid " -P disable system indexes\n" -msgstr " -P システムインデックスを無効にします\n" +msgid "rule \"%s\" for relation \"%s\" does not exist" +msgstr "リレーション\"%2$s\"のルール\"%1$s\"は存在しません" -#: main/main.c:301 +#: rewrite/rewriteSupport.c:156 #, c-format -msgid " -t pa|pl|ex show timings after each query\n" -msgstr " -t pa|pl|ex 各問い合わせの後にタイミングを表示します\n" +msgid "rule \"%s\" does not exist" +msgstr "ルール\"%s\"は存在しません" -#: main/main.c:302 +#: rewrite/rewriteSupport.c:165 #, c-format -msgid " -T send SIGSTOP to all backend servers if one dies\n" -msgstr "" -" -T 1つのバックエンドサーバが停止した時に全てのバックグランド" -"サーバにSIGSTOPを送信します\n" +msgid "there are multiple rules named \"%s\"" +msgstr "複数の\"%s\"という名前のルールがあります" -#: main/main.c:303 +#: rewrite/rewriteSupport.c:166 +msgid "Specify a relation name as well as a rule name." +msgstr "ルール名に加えリレーション名を指定してください" + +#: rewrite/rewriteRemove.c:66 #, c-format -msgid " -W NUM wait NUM seconds to allow attach from a debugger\n" -msgstr " -W NUM デバッガを設定できるようにNUM秒待機します\n" +msgid "rule \"%s\" for relation \"%s\" does not exist, skipping" +msgstr "リレーション\"%2$s\"のルール\"%1$s\"は存在しません。省略します" -#: main/main.c:305 +#: rewrite/rewriteHandler.c:485 #, c-format msgid "" -"\n" -"Options for single-user mode:\n" +"WITH query name \"%s\" appears in both a rule action and the query being " +"rewritten" msgstr "" -"\n" -"シングルユーザモード用のオプション:\n" +"WITH のクエリー名 \"%s\" が、ルールのアクションと書き換えられようとしている" +"クエリーの両方に現れています" -#: main/main.c:306 -#, c-format -msgid " --single selects single-user mode (must be first argument)\n" -msgstr "" -" --single シングルユーザモードを選択します(最初の引数でなければなり" -"ません)\n" +#: rewrite/rewriteHandler.c:543 +msgid "cannot have RETURNING lists in multiple rules" +msgstr "複数ルールではRETURNINGリストを持つことはできません" -#: main/main.c:307 +#: rewrite/rewriteHandler.c:874 rewrite/rewriteHandler.c:892 #, c-format -msgid " DBNAME database name (defaults to user name)\n" -msgstr " DBNAME データベース(デフォルトはユーザ名です)\n" +msgid "multiple assignments to same column \"%s\"" +msgstr "同じ列\"%s\"に複数の代入があります" -#: main/main.c:308 +#: rewrite/rewriteHandler.c:1626 rewrite/rewriteHandler.c:2021 #, c-format -msgid " -d 0-5 override debugging level\n" -msgstr " -d 1-5 デバッグレベルを上書きします\n" +msgid "infinite recursion detected in rules for relation \"%s\"" +msgstr "リレーション\"%s\"のルールで無限再帰を検出しました" -#: main/main.c:309 -#, c-format -msgid " -E echo statement before execution\n" -msgstr " -E 実行前に文を表示します\n" +#: rewrite/rewriteHandler.c:1882 +msgid "" +"DO INSTEAD NOTHING rules are not supported for data-modifying statements in " +"WITH" +msgstr "WITH にデータを変更するステートメントがある場合は" +" DO INSTEAD NOTHING ルールはサポートされません" -#: main/main.c:310 -#, c-format -msgid " -j do not use newline as interactive query delimiter\n" -msgstr " -j 対話式問い合わせの区切りとして改行を使用しません\n" +#: rewrite/rewriteHandler.c:1896 +msgid "" +"conditional DO INSTEAD rules are not supported for data-modifying statements " +"in WITH" +msgstr "WITH にデータを変更するステートメントがある場合は、" +"条件付き DO INSTEAD ルールはサポートされません" -#: main/main.c:311 main/main.c:316 -#, c-format -msgid " -r FILENAME send stdout and stderr to given file\n" -msgstr "" -" -r FILENAME 標準出力と標準エラー出力を指定したファイルに送信します\n" +#: rewrite/rewriteHandler.c:1900 +msgid "DO ALSO rules are not supported for data-modifying statements in WITH" +msgstr "WITH にデータを変更するステートメントがある場合は" +" DO ALSO ルールはサポートされません" -#: main/main.c:313 -#, c-format +#: rewrite/rewriteHandler.c:1905 msgid "" -"\n" -"Options for bootstrapping mode:\n" -msgstr "" -"\n" -"初期起動用のオプション:\n" +"multi-statement DO INSTEAD rules are not supported for data-modifying " +"statements in WITH" +msgstr "WITH にデータを変更するステートメントがある場合は" +"マルチステートメントの DO INSTEAD ルールはサポートされません" -#: main/main.c:314 +#: rewrite/rewriteHandler.c:2059 #, c-format -msgid " --boot selects bootstrapping mode (must be first argument)\n" -msgstr "" -" --boot 初期起動モードを選択します(最初の引数でなければなりませ" -"ん)\n" +msgid "cannot perform INSERT RETURNING on relation \"%s\"" +msgstr "リレーション\"%s\"へのINSERT RETURNINGを行うことはできません" -#: main/main.c:315 -#, c-format +#: rewrite/rewriteHandler.c:2061 msgid "" -" DBNAME database name (mandatory argument in bootstrapping mode)\n" -msgstr " DBNAME データベース名(初期起動モードでは義務的な引数)\n" +"You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." +msgstr "RETURNING句を持つ無条件のON INSERT DO INSTEADルールが必要です。" -#: main/main.c:317 +#: rewrite/rewriteHandler.c:2066 #, c-format -msgid " -x NUM internal use\n" -msgstr " -x NUM 内部使用\n" +msgid "cannot perform UPDATE RETURNING on relation \"%s\"" +msgstr "リレーション\"%s\"へのUPDATE RETURNINGを行うことはできません" -#: main/main.c:319 +#: rewrite/rewriteHandler.c:2068 +msgid "" +"You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." +msgstr "RETURNING句を持つ無条件のON UPDATE DO INSTEADルールが必要です。" + +#: rewrite/rewriteHandler.c:2073 #, c-format +msgid "cannot perform DELETE RETURNING on relation \"%s\"" +msgstr "リレーション\"%s\"へのDELETE RETURNINGを行うことはできません" + +#: rewrite/rewriteHandler.c:2075 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" +"You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." +msgstr "RETURNING句を持つ無条件のON DELETE DO INSTEADルールが必要です。" -#: main/main.c:333 +#: rewrite/rewriteHandler.c:2139 msgid "" -"\"root\" execution of the PostgreSQL server is not permitted.\n" -"The server must be started under an unprivileged user ID to prevent\n" -"possible system security compromise. See the documentation for\n" -"more information on how to properly start the server.\n" -msgstr "" -"PostgreSQLを\"root\"で実行することはできません。\n" -"システムセキュリティの危険防止のため非特権ユーザIDでサーバを起動しな\n" -"ければなりません。適切なサーバの起動方法に関する詳細はドキュメントを\n" -"参照してください\n" +"WITH cannot be used in a query that is rewritten by rules into multiple " +"queries" +msgstr "複数クエリーに対するルールにより書き換えられたクエリーでは" +" WITH を使用できません" + +#: rewrite/rewriteManip.c:1012 +msgid "conditional utility statements are not implemented" +msgstr "条件付きのユーティリティ文は実装されていません" -#: main/main.c:350 +#: rewrite/rewriteManip.c:1177 +msgid "WHERE CURRENT OF on a view is not implemented" +msgstr "ビューに対するWHERE CURRENT OFは実装されていません" + +#: rewrite/rewriteDefine.c:109 rewrite/rewriteDefine.c:771 #, c-format -msgid "%s: real and effective user IDs must match\n" -msgstr "%s: リアルユーザIDと実効ユーザIDは一致しなければなりません\n" +msgid "rule \"%s\" for relation \"%s\" already exists" +msgstr "リレーション\"%2$s\"のルール\"%1$s\"はすでに存在します" -#: main/main.c:357 -msgid "" -"Execution of PostgreSQL by a user with administrative permissions is not\n" -"permitted.\n" -"The server must be started under an unprivileged user ID to prevent\n" -"possible system security compromises. See the documentation for\n" -"more information on how to properly start the server.\n" -msgstr "" -"PostgreSQLを管理者権限を持つユーザで実行することはできません。\n" -"システムセキュリティの危険防止のため非特権ユーザIDでサーバを起動しな\n" -"ければなりません。適切なサーバの起動方法に関する詳細はドキュメントを\n" -"参照してください\n" +#: rewrite/rewriteDefine.c:289 +msgid "rule actions on OLD are not implemented" +msgstr "OLDに対するルールアクションは実装されていません" -#: main/main.c:378 -#, c-format -msgid "%s: invalid effective UID: %d\n" -msgstr "%s: 実効UIDが無効です: %d\n" +#: rewrite/rewriteDefine.c:290 +msgid "Use views or triggers instead." +msgstr "代わりにビューかトリガを使用してください。" -#: main/main.c:391 -#, c-format -msgid "%s: could not determine user name (GetUserName failed)\n" -msgstr "%s: ユーザ名を決定できませんでした(GetUserNameが失敗しました)\n" +#: rewrite/rewriteDefine.c:294 +msgid "rule actions on NEW are not implemented" +msgstr "NEWに対するルールアクションは実装されていません" -#: replication/walreceiver.c:138 -msgid "terminating walreceiver process due to administrator command" -msgstr "管理者コマンドにより WAL 受信プロセスを終了しています" +#: rewrite/rewriteDefine.c:295 +msgid "Use triggers instead." +msgstr "代わりにトリガを使用してください。" -#: replication/walreceiver.c:287 -msgid "cannot continue WAL streaming, recovery has already ended" -msgstr "WAL ストリーミングを継続できません。リカバリはすでに終わっています。" +#: rewrite/rewriteDefine.c:308 +msgid "INSTEAD NOTHING rules on SELECT are not implemented" +msgstr "SELECTに対するINSTEAD NOTHINGルールは実装されていません" -#: replication/walsender.c:116 -msgid "recovery is still in progress, can't accept WAL streaming connections" -msgstr "リカバリがまだ実行中につき、WAL ストリーミング接続を受け付けられません" +#: rewrite/rewriteDefine.c:309 +msgid "Use views instead." +msgstr "代わりにビューを使用してください" -#: replication/walsender.c:278 -msgid "standby connections not allowed because wal_level=minimal" -msgstr "wal_level=minimal なので、スタンバイ接続はできません" +#: rewrite/rewriteDefine.c:317 +msgid "multiple actions for rules on SELECT are not implemented" +msgstr "SELECTに対するルールにおける複数のアクションは実装されていません" -#: replication/walsender.c:300 -msgid "invalid standby query string: %s" -msgstr "スタンバイクエリ文字列が無効です:%s" +#: rewrite/rewriteDefine.c:329 +msgid "rules on SELECT must have action INSTEAD SELECT" +msgstr "SELECTに対するルールはINSTEAD SELECTアクションを持たなければなりません" -#: replication/walsender.c:313 replication/walsender.c:339 -msgid "unexpected EOF on standby connection" -msgstr "スタンバイ接続で想定外のEOFがありました" +#: rewrite/rewriteDefine.c:337 +msgid "rules on SELECT must not contain data-modifying statements in WITH" +msgstr "SELECT のルールでは WITH にデータを変更するステートメントを" +"含むことはできません" -#: replication/walsender.c:319 -msgid "invalid standby handshake message type %d" -msgstr "スタンバイハンドシェイクメッセージのタイプ %d が無効です" +#: rewrite/rewriteDefine.c:345 +msgid "event qualifications are not implemented for rules on SELECT" +msgstr "SELECTに対するルールではイベント条件は実装されていません" -#: replication/walsender.c:360 -msgid "invalid standby closing message type %d" -msgstr "スタンバイクロージングメッセージのタイプ %d が無効です" +#: rewrite/rewriteDefine.c:370 +#, c-format +msgid "\"%s\" is already a view" +msgstr "\"%s\"はすでにビューです" -#: replication/walsender.c:506 +#: rewrite/rewriteDefine.c:394 #, c-format -msgid "" -"number of requested standby connections exceeds max_wal_senders (currently %" -"d)" -msgstr "" -"要求されたスタンバイ接続が max_wal_senders を超えています" -"(現在は %d)" +msgid "view rule for \"%s\" must be named \"%s\"" +msgstr "\"%s\"用のビューのルールの名前は\"%s\"でなければなりません" -#: replication/walsender.c:578 replication/walsender.c:640 +#: rewrite/rewriteDefine.c:419 #, c-format -msgid "requested WAL segment %s has already been removed" -msgstr "要求された WAL セグメント %s はすでに削除されています" +msgid "could not convert table \"%s\" to a view because it is not empty" +msgstr "空ではありませんのでテーブル\"%s\"をビューに変換できません" -#: replication/walsender.c:611 -msgid "could not read from log file %u, segment %u, offset %u, length %lu: %m" -msgstr "" -"ログファイル %u をセグメント %u、オフセット %u、長さ %lu で読み込めませんでした: %m" +#: rewrite/rewriteDefine.c:426 +#, c-format +msgid "could not convert table \"%s\" to a view because it has triggers" +msgstr "トリガを持っているためテーブル\"%s\"をビューに変換できませんでした" -#: replication/libpqwalreceiver/libpqwalreceiver.c:100 -msgid "could not connect to the primary server: %s" -msgstr "プライマリサーバへの接続ができませんでした:%s" +#: rewrite/rewriteDefine.c:428 +msgid "" +"In particular, the table cannot be involved in any foreign key relationships." +msgstr "具体的には、テーブルに外部キー関係を持たせることはできません" -#: replication/libpqwalreceiver/libpqwalreceiver.c:112 +#: rewrite/rewriteDefine.c:433 #, c-format -msgid "" -"could not receive database system identifier and timeline ID from the " -"primary server: %s" +msgid "could not convert table \"%s\" to a view because it has indexes" msgstr "" -"プライマリサーバからデータベースシステムの識別子と" -"タイムライン ID を受信できませんでした:%s" - -#: replication/libpqwalreceiver/libpqwalreceiver.c:123 -msgid "invalid response from primary server" -msgstr "プライマリサーバからの応答が無効です" +"インデックスを持っているためテーブル\"%s\"をビューに変換できませんでした" -#: replication/libpqwalreceiver/libpqwalreceiver.c:124 +#: rewrite/rewriteDefine.c:439 #, c-format -msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields." -msgstr "" -"2個のフィールドを持つ1個のタプルを期待していましたが、" -"%2$d 個のフィールドを持つ %1$d 個のタプルを受信しました。" +msgid "could not convert table \"%s\" to a view because it has child tables" +msgstr "子テーブルを持っているためテーブル\"%s\"をビューに変換できませんでした" -#: replication/libpqwalreceiver/libpqwalreceiver.c:139 -msgid "database system identifier differs between the primary and standby" -msgstr "" -"データベースシステムの識別子がプライマリサーバとスタンバイサーバ間で異なります" +#: rewrite/rewriteDefine.c:466 +msgid "cannot have multiple RETURNING lists in a rule" +msgstr "ルールでは複数のRETURNING行を持つことができません" -#: replication/libpqwalreceiver/libpqwalreceiver.c:140 -#, c-format -msgid "The primary's identifier is %s, the standby's identifier is %s." -msgstr "プライマリ側の識別子は %s ですが、スタンバイ側の識別子は %s です。" +#: rewrite/rewriteDefine.c:471 +msgid "RETURNING lists are not supported in conditional rules" +msgstr "条件付のルールではRETURNINGリストはサポートされません" -#: replication/libpqwalreceiver/libpqwalreceiver.c:152 -msgid "timeline %u of the primary does not match recovery target timeline %u" -msgstr "プライマリのタイムライン %u が、リカバリターゲットのタイムライン %u と一致しません" +#: rewrite/rewriteDefine.c:475 +msgid "RETURNING lists are not supported in non-INSTEAD rules" +msgstr "INSTEAD以外のルールではRETURNINGはサポートされません" -#: replication/libpqwalreceiver/libpqwalreceiver.c:164 -msgid "could not start WAL streaming: %s" -msgstr "WAL ストリーミングを開始できませんでした: %s" +#: rewrite/rewriteDefine.c:554 +msgid "SELECT rule's target list has too many entries" +msgstr "SELECTルールの対象リストの項目が多すぎます" -#: replication/libpqwalreceiver/libpqwalreceiver.c:171 -msgid "streaming replication successfully connected to primary" -msgstr "ストリーミングレプリケーションがプライマリに無事接続できました" +#: rewrite/rewriteDefine.c:555 +msgid "RETURNING list has too many entries" +msgstr "RETURNINGリストの項目が多すぎます" -#: replication/libpqwalreceiver/libpqwalreceiver.c:193 -msgid "socket not open" -msgstr "ソケットがオープンされていません" +#: rewrite/rewriteDefine.c:571 +msgid "cannot convert relation containing dropped columns to view" +msgstr "削除された列を持つリレーションをビューに変換できません" -#: replication/libpqwalreceiver/libpqwalreceiver.c:233 -msgid "select() failed: %m" -msgstr "select() が失敗しました: %m" +#: rewrite/rewriteDefine.c:576 +#, c-format +msgid "SELECT rule's target entry %d has different column name from \"%s\"" +msgstr "SELECTルールの対象項目%dは\"%s\"と異なる列名を持っています" -#: replication/libpqwalreceiver/libpqwalreceiver.c:364 -#: replication/libpqwalreceiver/libpqwalreceiver.c:386 -#: replication/libpqwalreceiver/libpqwalreceiver.c:391 -msgid "could not receive data from WAL stream: %s" -msgstr "WAL ストリームからデータを受信できませんでした: %s" +#: rewrite/rewriteDefine.c:582 +#, c-format +msgid "SELECT rule's target entry %d has different type from column \"%s\"" +msgstr "SELECTルールの対象項目%dは\"%s\"と異なる列型を持っています" -#: replication/libpqwalreceiver/libpqwalreceiver.c:382 -msgid "replication terminated by primary server" -msgstr "プライマリサーバによりレプリケーションが打ち切られました" +#: rewrite/rewriteDefine.c:584 +#, c-format +msgid "RETURNING list's entry %d has different type from column \"%s\"" +msgstr "RETURNINGリスト項目%dは\"%s\"と異なる列型を持っています" -#: ../port/open.c:112 +#: rewrite/rewriteDefine.c:599 #, c-format -msgid "could not open file \"%s\": %s" -msgstr "ファイル\"%s\"をオープンできませんでした: %s" +msgid "SELECT rule's target entry %d has different size from column \"%s\"" +msgstr "SELECTルールの対象項目%dは\"%s\"と異なる列のサイズを持っています" + +#: 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: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リストの項目が少なすぎます" #: ../port/open.c:113 msgid "sharing violation" @@ -16625,6 +18260,11 @@ msgstr "共有違反" msgid "lock violation" msgstr "ロック違反" +#: ../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秒続けます" @@ -16637,14 +18277,56 @@ msgstr "" "データベースシステムに干渉するアンチウィルス、バックアップなどのソフトウェア" "が存在する可能性があります。" -#: ../port/chklocale.c:326 ../port/chklocale.c:332 +#: ../port/dirmod.c:75 ../port/dirmod.c:88 ../port/dirmod.c:101 #, c-format -msgid "could not determine encoding for locale \"%s\": codeset is \"%s\"" -msgstr "ロケール\"%s\"用の符号化方式を決定できません: コードセットは\"%s\"です" +msgid "out of memory\n" +msgstr "メモリ不足です\n" -#: ../port/chklocale.c:334 -msgid "Please report this to ." -msgstr "これをまで報告してください。" +#: ../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\" の分岐点 (junction) を取得できませんでした: %s" + +#: ../port/dirmod.c:361 +#, c-format +msgid "could not get junction for \"%s\": %s\n" +msgstr "\"%s\"のjunctionを入手できませんでした: %s\n" + +#: ../port/dirmod.c:443 +#, c-format +msgid "could not open directory \"%s\": %s\n" +msgstr "ディレクトリ\"%s\"をオープンできませんでした: %s\n" + +#: ../port/dirmod.c:480 +#, c-format +msgid "could not read directory \"%s\": %s\n" +msgstr "ディレクトリ\"%s\"を読み取れませんでした: %s\n" + +#: ../port/dirmod.c:563 +#, c-format +msgid "could not stat file or directory \"%s\": %s\n" +msgstr "" +"\"%s\"というファイルまたはディレクトリの情報を取得できませんでした。: %s\n" + +#: ../port/dirmod.c:590 ../port/dirmod.c:607 +#, c-format +msgid "could not remove file or directory \"%s\": %s\n" +msgstr "\"%s\"というディレクトリまたはファイルを削除できませんでした: %s\n" + +#: ../port/strerror.c:25 +#, c-format +msgid "unrecognized error %d" +msgstr "不明なエラー %d" #: ../port/exec.c:125 ../port/exec.c:239 ../port/exec.c:282 #, c-format @@ -16676,78 +18358,218 @@ msgstr "ディレクトリを\"%s\"に移動できませんでした" msgid "could not read symbolic link \"%s\"" msgstr "シンボリックリンク\"%s\"を読み取れませんでした" -#: ../port/exec.c:516 +#: ../port/exec.c:517 #, c-format msgid "child process exited with exit code %d" msgstr "子プロセスが終了コード%dで終了しました" -#: ../port/exec.c:520 +#: ../port/exec.c:521 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "子プロセスが例外0x%Xで終了しました" -#: ../port/exec.c:529 +#: ../port/exec.c:530 #, c-format msgid "child process was terminated by signal %s" msgstr "子プロセスがシグナル%sで終了しました" -#: ../port/exec.c:532 +#: ../port/exec.c:533 #, c-format msgid "child process was terminated by signal %d" msgstr "子プロセスはシグナル%dにより終了しました" -#: ../port/exec.c:536 +#: ../port/exec.c:537 #, c-format msgid "child process exited with unrecognized status %d" msgstr "子プロセスは不明のステータス%dで終了しました" -#: ../port/dirmod.c:75 ../port/dirmod.c:88 ../port/dirmod.c:101 +#: ../port/win32error.c:188 #, c-format -msgid "out of memory\n" -msgstr "メモリ不足です\n" +msgid "mapped win32 error code %lu to %d" +msgstr "win32のエラーコード%luを%dに対応付けました" -#: ../port/dirmod.c:283 +#: ../port/win32error.c:199 #, c-format -msgid "could not set junction for \"%s\": %s" -msgstr "\"%s\"の接合を設定できませんでした: %s" +msgid "unrecognized win32 error code: %lu" +msgstr "未知のWin32エラーコードが不明です: %lu" -#: ../port/dirmod.c:286 +#: ../port/chklocale.c:328 ../port/chklocale.c:334 #, c-format -msgid "could not set junction for \"%s\": %s\n" -msgstr "\"%s\"の接合を設定できませんでした: %s\n" +msgid "could not determine encoding for locale \"%s\": codeset is \"%s\"" +msgstr "ロケール\"%s\"用の符号化方式を決定できません: コードセットは\"%s\"です" -#: ../port/dirmod.c:325 -#, c-format -msgid "could not open directory \"%s\": %s\n" -msgstr "ディレクトリ\"%s\"をオープンできませんでした: %s\n" +#: ../port/chklocale.c:336 +msgid "Please report this to ." +msgstr "これをまで報告してください。" -#: ../port/dirmod.c:362 -#, c-format -msgid "could not read directory \"%s\": %s\n" -msgstr "ディレクトリ\"%s\"を読み取れませんでした: %s\n" +#~ msgid "cannot change view \"%s\"" +#~ msgstr "ビュー\"%s\"を変更できません" -#: ../port/dirmod.c:445 -#, c-format -msgid "could not stat file or directory \"%s\": %s\n" -msgstr "" -"\"%s\"というファイルまたはディレクトリの情報を取得できませんでした。: %s\n" +#~ msgid "argument to pg_get_expr() must come from system catalogs" +#~ msgstr "" +#~ "pg_get_expr() への引数はシステムカタログ由来のものでなければなりません" -#: ../port/dirmod.c:472 ../port/dirmod.c:489 -#, c-format -msgid "could not remove file or directory \"%s\": %s\n" -msgstr "\"%s\"というディレクトリまたはファイルを削除できませんでした: %s\n" +#~ msgid "clustering \"%s.%s\"" +#~ msgstr "\"%s.%s\"をクラスタ化しています" -#: ../port/strerror.c:25 -#, c-format -msgid "unrecognized error %d" -msgstr "不明なエラー %d" +#~ msgid "" +#~ "cannot cluster on index \"%s\" because access method does not handle null " +#~ "values" +#~ msgstr "" +#~ "インデックス\"%s\"でクラスタ化できません。アクセスメソッドがNULL値を扱わな" +#~ "いためです" -#: ../port/win32error.c:184 -#, c-format -msgid "mapped win32 error code %lu to %d" -msgstr "win32のエラーコード%luを%dに対応付けました" +#~ 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を使" +#~ "用してテー\n" +#~ "ブルからクラスタ指定を削除することで、この問題を回避できる可能性がありま" +#~ "す。" -#: ../port/win32error.c:195 -#, c-format -msgid "unrecognized win32 error code: %lu" -msgstr "未知のWin32エラーコードが不明です: %lu" +#~ 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値を扱わないためです" + +#~ msgid "cannot reference temporary table from permanent table constraint" +#~ msgstr "永続テーブルの制約から一時テーブルを参照できません" + +#~ msgid "cannot reference permanent table from temporary table constraint" +#~ msgstr "一時テーブルの制約から永続テーブルを参照できません" + +#~ msgid "invalid list syntax for parameter \"datestyle\"" +#~ msgstr "パラメータ\"datestyle\"用のリスト構文が無効です" + +#~ msgid "unrecognized \"datestyle\" key word: \"%s\"" +#~ msgstr "\"datestyle\"キーワードが不明です: \"%s\"" + +#~ msgid "invalid interval value for time zone: month not allowed" +#~ msgstr "時間帯の内部値が無効です: 月は許されません" + +#~ msgid "invalid interval value for time zone: day not allowed" +#~ msgstr "時間帯の時間間隔値が無効です: 日は許されません" + +#~ msgid "unrecognized time zone name: \"%s\"" +#~ msgstr "時間帯名が不明です: \"%s\"" + +#~ msgid "\"%s\" is not a table, view, or composite type" +#~ msgstr "\"%s\"はテーブル、ビュー、複合型のいずれでもありません" + +#~ msgid "must be member of role \"%s\" to comment upon it" +#~ msgstr "コメントを付与するにはロール\"%s\"のメンバでなければなりません" + +#~ msgid "must be superuser to comment on procedural language" +#~ msgstr "手続き言語にコメントをつけるにはスーパーユーザでなければなりません" + +#~ msgid "must be superuser to comment on text search parser" +#~ msgstr "" +#~ "テキスト検索パーサにコメントをつけるにはスーパーユーザでなければなりません" + +#~ msgid "must be superuser to comment on text search template" +#~ msgstr "" +#~ "テキスト検索テンプレートにコメントをつけるにはスーパーユーザでなければなり" +#~ "ません" + +#~ msgid "database \"%s\" not found" +#~ msgstr "データベース \"%s\" が見つかりません" + +#~ msgid "function \"%s\" is already in schema \"%s\"" +#~ msgstr "関数\"%s\"はすでにスキーマ\"%s\"内に存在します" + +#~ msgid "" +#~ "cannot drop \"%s\" because it is being used by active queries in this " +#~ "session" +#~ msgstr "" +#~ "このセッションで実行中のクエリーで使用されているため \"%s\" を削除できませ" +#~ "ん" + +#~ msgid "EnumValuesCreate() can only set a single OID" +#~ msgstr "EnumValuesCreate() は単独の OID のみをセットできます" + +#~ msgid "access to %s" +#~ msgstr "%sへのアクセス" + +#~ msgid "replication connection authorized: user=%s host=%s port=%s" +#~ msgstr "" +#~ "レプリケーション接続の認証完了: ユーザ=%s、データベース=%s、ポート番号=%s" + +#~ msgid "Not safe to send CSV data\n" +#~ msgstr "CSVデータを送信するには安全ではありません\n" + +#~ msgid "Sets immediate fsync at commit." +#~ msgstr "コミット時に即座にfsyncするよう設定します" + +#~ msgid "Sets the message levels that are logged during recovery." +#~ msgstr "リカバリー中にログを取るべきメッセージのレベルを設定します。" + +#~ msgid "invalid list syntax for parameter \"log_destination\"" +#~ msgstr "パラメータ\"log_destination\"のリスト構文が無効です" + +#~ msgid "unrecognized \"log_destination\" key word: \"%s\"" +#~ msgstr "\"log_destination\"キーワードが不明です: \"%s\"" + +#~ msgid "could not create log file \"%s\": %m" +#~ msgstr "ログファイル\"%s\"を作成できませんでした: %m" + +#~ msgid "could not open new log file \"%s\": %m" +#~ msgstr "新しいログファイル\"%s\"をオープンできませんでした: %m" + +#~ msgid "array must not contain null values" +#~ msgstr "配列にはNULL値を含めてはいけません" + +#~ msgid "parameter \"recovery_target_inclusive\" requires a Boolean value" +#~ msgstr "パラメータ \"recovery_target_inclusive\" にはブール値を指定します" + +#~ msgid "parameter \"standby_mode\" requires a Boolean value" +#~ msgstr "パラメータ \"standby_mode\" にはブール値が必要です" + +#~ msgid "syntax error in recovery command file: %s" +#~ msgstr "リカバリコマンドファイル内の構文エラー: %s" + +#~ msgid "Lines should have the format parameter = 'value'." +#~ msgstr "行は、parameter = 'value'という書式でなければなりません。" + +#~ msgid "index \"%s\" needs VACUUM or REINDEX to finish crash recovery" +#~ msgstr "" +#~ "クラッシュリカバリを完了するにはインデックス\"%s\"をVACUUMまたは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 "index \"%s\" needs VACUUM FULL or REINDEX to finish crash recovery" +#~ msgstr "" +#~ "クラッシュリカバリを完了するにはインデックス\"%s\"をVACUUM FULLまたは" +#~ "REINDEXしなければなりません" + +#~ msgid "could not enable credential reception: %m" +#~ msgstr "資格証明の受信を有効にできませんでした: %m" + +#~ msgid "could not get effective UID from peer credentials: %m" +#~ msgstr "相手側の資格情報から実効 UID を取得できませんでした: %m" + +#~ msgid "" +#~ "Ident authentication is not supported on local connections on this " +#~ "platform" +#~ msgstr "" +#~ "このプラットフォームのローカル接続ではIdent認証をサポートしていません" + +#~ msgid "hostssl not supported on this platform" +#~ msgstr "このプラットフォームでは hostssl をサポートしていません" + +#~ msgid "SELECT FOR UPDATE/SHARE cannot be applied to NEW or OLD" +#~ msgstr "SELECT FOR UPDATE/SHAREをNEWやOLDに使用できません" diff --git a/src/backend/po/pl.po b/src/backend/po/pl.po new file mode 100644 index 0000000000..e9d9573681 --- /dev/null +++ b/src/backend/po/pl.po @@ -0,0 +1,18760 @@ +# Begina Felicysym , 2011. +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 9.1\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-10-08 08:46+0000\n" +"PO-Revision-Date: 2011-10-09 16:30+0200\n" +"Last-Translator: Begina Felicysym \n" +"Language-Team: Begina Felicysym\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1-beta1\n" +"X-Poedit-Language: Polish\n" +"X-Poedit-Country: POLAND\n" + +#: nodes/nodeFuncs.c:114 nodes/nodeFuncs.c:140 parser/parse_coerce.c:1645 +#: parser/parse_coerce.c:1662 parser/parse_coerce.c:1724 +#: parser/parse_expr.c:1636 parser/parse_func.c:367 parser/parse_oper.c:948 +#, c-format +msgid "could not find array type for data type %s" +msgstr "nie znaleziono typu tablicowego dla danej typu %s" + +#: tsearch/dict_ispell.c:53 tsearch/dict_thesaurus.c:615 +msgid "multiple DictFile parameters" +msgstr "wiele parametrów DictFile" + +#: tsearch/dict_ispell.c:64 +msgid "multiple AffFile parameters" +msgstr "wiele parametrów AffFile" + +#: tsearch/dict_ispell.c:75 tsearch/dict_simple.c:50 +#: snowball/dict_snowball.c:206 +msgid "multiple StopWords parameters" +msgstr "wiele parametrów StopWords" + +#: tsearch/dict_ispell.c:83 +#, c-format +msgid "unrecognized Ispell parameter: \"%s\"" +msgstr "nierozpoznany parametr Ispell: \"%s\"" + +#: tsearch/dict_ispell.c:97 +msgid "missing AffFile parameter" +msgstr "brak parametru AffFile" + +#: tsearch/dict_ispell.c:103 tsearch/dict_thesaurus.c:639 +msgid "missing DictFile parameter" +msgstr "brak parametru DictFile" + +#: tsearch/dict_simple.c:59 +msgid "multiple Accept parameters" +msgstr "wiele parametrów Accept" + +#: tsearch/dict_simple.c:67 +#, c-format +msgid "unrecognized simple dictionary parameter: \"%s\"" +msgstr "nierozpoznany parametr słownika prostego: \"%s\"" + +#: tsearch/dict_synonym.c:119 +#, c-format +msgid "unrecognized synonym parameter: \"%s\"" +msgstr "nierozpoznany parametr synonimu: \"%s\"" + +#: tsearch/dict_synonym.c:126 +msgid "missing Synonyms parameter" +msgstr "brak parametru Synonyms" + +#: tsearch/dict_synonym.c:133 +#, c-format +msgid "could not open synonym file \"%s\": %m" +msgstr "nie można otworzyć pliku synonimów \"%s\": %m" + +#: tsearch/dict_thesaurus.c:180 +#, c-format +msgid "could not open thesaurus file \"%s\": %m" +msgstr "nie można otworzyć pliku tezaurusa \"%s\": %m" + +#: tsearch/dict_thesaurus.c:213 +msgid "unexpected delimiter" +msgstr "nieoczekiwany ogranicznik" + +#: tsearch/dict_thesaurus.c:263 tsearch/dict_thesaurus.c:279 +msgid "unexpected end of line or lexeme" +msgstr "nieoczekiwany koniec linii lub leksemu" + +#: tsearch/dict_thesaurus.c:288 +msgid "unexpected end of line" +msgstr "nieoczekiwany koniec linii" + +#: tsearch/dict_thesaurus.c:412 +#, c-format +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)" + +#: tsearch/dict_thesaurus.c:418 +#, 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)" + +#: tsearch/dict_thesaurus.c:421 +msgid "Use \"?\" to represent a stop word within a sample phrase." +msgstr "Użyj \"?\" jako reprezentacji słowa stopu w wyrażeniu przykładowym." + +#: tsearch/dict_thesaurus.c:567 +#, 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)" + +#: tsearch/dict_thesaurus.c:574 +#, 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)" + +#: tsearch/dict_thesaurus.c:586 +#, c-format +msgid "thesaurus substitute phrase is empty (rule %d)" +msgstr "wyrażenie zastępujące tezaurusa jest puste (reguła %d)" + +#: tsearch/dict_thesaurus.c:624 +msgid "multiple Dictionary parameters" +msgstr "wiele parametrów Dictionary" + +#: tsearch/dict_thesaurus.c:631 +#, c-format +msgid "unrecognized Thesaurus parameter: \"%s\"" +msgstr "nierozpoznany parametr Thesaurus: \"%s\"" + +#: tsearch/dict_thesaurus.c:643 +msgid "missing Dictionary parameter" +msgstr "brak parametru Dictionary" + +#: tsearch/spell.c:276 +#, c-format +msgid "could not open dictionary file \"%s\": %m" +msgstr "nie można otworzyć pliku słownika \"%s\": %m" + +#: tsearch/spell.c:439 utils/adt/regexp.c:195 +#, c-format +msgid "invalid regular expression: %s" +msgstr "nieprawidłowe wyrażenie regularne: %s" + +#: tsearch/spell.c:518 tsearch/spell.c:535 tsearch/spell.c:552 +#: tsearch/spell.c:569 tsearch/spell.c:591 gram.y:12477 gram.y:12494 +msgid "syntax error" +msgstr "błąd składni" + +#: tsearch/spell.c:596 tsearch/spell.c:842 tsearch/spell.c:862 +msgid "multibyte flag character is not allowed" +msgstr "wielobajtowy znak flagi nie jest dozwolony" + +#: tsearch/spell.c:629 tsearch/spell.c:687 tsearch/spell.c:780 +#, c-format +msgid "could not open affix file \"%s\": %m" +msgstr "nie można otworzyć pliku affix \"%s\": %m" + +#: tsearch/spell.c:675 +msgid "Ispell dictionary supports only default flag value" +msgstr "Słownik Ispell obsługuje tylko domyślną wartość flagi" + +#: tsearch/spell.c:873 +msgid "wrong affix file format for flag" +msgstr "niepoprawny format pliku affix dla flagi" + +#: tsearch/to_tsany.c:165 utils/adt/tsvector.c:272 utils/adt/tsvector_op.c:530 +#, 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)" + +#: tsearch/ts_locale.c:177 +#, c-format +msgid "line %d of configuration file \"%s\": \"%s\"" +msgstr "linia %d pliku konfiguracyjnego \"%s\": \"%s\"" + +#: tsearch/ts_locale.c:182 libpq/hba.c:781 libpq/hba.c:797 libpq/hba.c:833 +#: libpq/hba.c:855 libpq/hba.c:864 libpq/hba.c:887 libpq/hba.c:899 +#: libpq/hba.c:912 libpq/hba.c:927 libpq/hba.c:982 libpq/hba.c:1002 +#: libpq/hba.c:1016 libpq/hba.c:1033 libpq/hba.c:1046 libpq/hba.c:1062 +#: libpq/hba.c:1077 libpq/hba.c:1119 libpq/hba.c:1151 libpq/hba.c:1162 +#: libpq/hba.c:1182 libpq/hba.c:1193 libpq/hba.c:1204 libpq/hba.c:1221 +#: libpq/hba.c:1242 libpq/hba.c:1272 libpq/hba.c:1284 libpq/hba.c:1297 +#: libpq/hba.c:1331 libpq/hba.c:1405 libpq/hba.c:1423 libpq/hba.c:1444 +#: libpq/hba.c:1475 libpq/hba.c:1485 +#, c-format +msgid "line %d of configuration file \"%s\"" +msgstr "linia %d pliku konfiguracyjnego \"%s\"" + +#: tsearch/ts_locale.c:302 +#, 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" + +#: 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 "słowo jest za długie do zindeksowania" + +#: 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 "Słowa dłuższe niż %d znaków są ignorowane." + +#: tsearch/ts_utils.c:53 +#, c-format +msgid "invalid text search configuration file name \"%s\"" +msgstr "niepoprawna nazwa pliku konfiguracji wyszukiwania tekstowego \"%s\"" + +#: tsearch/ts_utils.c:91 +#, c-format +msgid "could not open stop-word file \"%s\": %m" +msgstr "nie można otworzyć pliku słowa-stopu \"%s\": %m" + +#: tsearch/wparser.c:314 +msgid "text search parser does not support headline creation" +msgstr "parser wyszukiwania tekstowego nie obsługuje tworzenia nagłówka" + +#: tsearch/wparser_def.c:2551 +#, c-format +msgid "unrecognized headline parameter: \"%s\"" +msgstr "nierozpoznany parametr nagłówka: \"%s\"" + +#: tsearch/wparser_def.c:2560 +msgid "MinWords should be less than MaxWords" +msgstr "MinWords musi być mniejsze niż MaxWords" + +#: tsearch/wparser_def.c:2564 +msgid "MinWords should be positive" +msgstr "MinWords musi być dodatnie" + +#: tsearch/wparser_def.c:2568 +msgid "ShortWord should be >= 0" +msgstr "ShortWord powinno być >= 0" + +#: tsearch/wparser_def.c:2572 +msgid "MaxFragments should be >= 0" +msgstr "MaxFragments powinno być >= 0" + +#: access/hash/hashinsert.c:73 +#, c-format +msgid "index row size %lu exceeds hash maximum %lu" +msgstr "rozmiar wiersza indeksu %lu przekracza maksymalny hasz %lu" + +#: access/hash/hashinsert.c:76 +msgid "Values larger than a buffer page cannot be indexed." +msgstr "Wartości dłuższe niż strona bufora nie mogą być zindeksowane." + +#: access/hash/hashovfl.c:547 +#, c-format, fuzzy +msgid "out of overflow pages in hash index \"%s\"" +msgstr "brak stron przepełnienia w indeksie haszującym \"%s\"" + +#: access/hash/hashsearch.c:152 +msgid "hash indexes do not support whole-index scans" +msgstr "indeksy haszujące nie obsługują pełnych skanów indeksu" + +#: access/hash/hashutil.c:170 access/gist/gistutil.c:589 +#: access/nbtree/nbtpage.c:433 +#, c-format +msgid "index \"%s\" contains unexpected zero page at block %u" +msgstr "indeks \"%s\" zawiera nieoczekiwaną stronę zerową w bloku %u" + +#: access/hash/hashutil.c:173 access/hash/hashutil.c:184 +#: access/hash/hashutil.c:196 access/hash/hashutil.c:217 +#: access/gist/gist.c:718 access/gist/gistutil.c:592 +#: access/gist/gistutil.c:603 access/gist/gistvacuum.c:274 +#: access/nbtree/nbtpage.c:436 access/nbtree/nbtpage.c:447 +msgid "Please REINDEX it." +msgstr "Proszę wykonać REINDEX." + +#: access/hash/hashutil.c:181 access/hash/hashutil.c:193 +#: access/gist/gistutil.c:600 access/nbtree/nbtpage.c:444 +#, c-format +msgid "index \"%s\" contains corrupted page at block %u" +msgstr "indeks \"%s\" zawiera uszkodzoną stronę w bloku %u" + +#: access/hash/hashutil.c:209 +#, c-format +msgid "index \"%s\" is not a hash index" +msgstr "indeks \"%s\" nie jest indeksem haszującym" + +#: access/hash/hashutil.c:215 +#, c-format +msgid "index \"%s\" has wrong hash version" +msgstr "indeks \"%s\" ma niepoprawną wersję haszu" + +#: access/common/heaptuple.c:646 access/common/heaptuple.c:1398 +#, c-format +msgid "number of columns (%d) exceeds limit (%d)" +msgstr "liczba kolumn (%d) osiągnęła limit (%d)" + +#: access/common/indextuple.c:57 +#, c-format +msgid "number of index columns (%d) exceeds limit (%d)" +msgstr "liczba kolumn indeksu (%d) osiągnęła limit (%d)" + +#: access/common/indextuple.c:168 +#, c-format +msgid "index row requires %lu bytes, maximum size is %lu" +msgstr "wiersz indeksu wymaga %lu bajtów, największy rozmiar to %lu" + +#: 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 "nieobsługiwany kod formatu: %d" + +#: access/common/reloptions.c:323 +msgid "user-defined relation parameter types limit exceeded" +msgstr "" +"przekroczony limit typów parametrów relacji zdefiniowanej przez użytkownika" + +#: access/common/reloptions.c:622 +msgid "RESET must not include values for parameters" +msgstr "RESET nie może zawierać wartości parametrów" + +#: access/common/reloptions.c:655 +#, c-format +msgid "unrecognized parameter namespace \"%s\"" +msgstr "nierozpoznana przestrzeń nazw parametru \"%s\"" + +#: access/common/reloptions.c:898 +#, c-format +msgid "unrecognized parameter \"%s\"" +msgstr "nierozpoznany parametr \"%s\"" + +#: access/common/reloptions.c:923 +#, c-format +msgid "parameter \"%s\" specified more than once" +msgstr "parametr \"%s\" użyty więcej niż raz" + +#: access/common/reloptions.c:938 +#, c-format +msgid "invalid value for boolean option \"%s\": %s" +msgstr "niepoprawna wartość dla opcji logicznej \"%s\": %s" + +#: access/common/reloptions.c:949 +#, c-format +msgid "invalid value for integer option \"%s\": %s" +msgstr "niepoprawna wartość dla opcji całkowitej \"%s\": %s" + +#: access/common/reloptions.c:954 access/common/reloptions.c:972 +#, c-format +msgid "value %s out of bounds for option \"%s\"" +msgstr "wartość %s spoza zakresu dla opcji \"%s\"" + +#: access/common/reloptions.c:956 +#, 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:967 +#, c-format +msgid "invalid value for floating point option \"%s\": %s" +msgstr "niepoprawna wartość dla opcji liczby zmiennopozycyjnej \"%s\": %s" + +#: access/common/reloptions.c:974 +#, c-format +msgid "Valid values are between \"%f\" and \"%f\"." +msgstr "Prawidłowe wartości są pomiędzy \"%f\" a \"%f\"." + +#: access/common/tupconvert.c:107 +#, c-format +msgid "Returned type %s does not match expected type %s in column %d." +msgstr "Zwrócony typ %s nie pasuje do oczekiwanego typu %s dla kolumny %d." + +#: access/common/tupconvert.c:135 +#, 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)." + +#: access/common/tupconvert.c:240 +#, c-format +msgid "" +"Attribute \"%s\" of type %s does not match corresponding attribute of type " +"%s." +msgstr "Atrybut \"%s\" typu %s nie pasuje do odpowiedniego atrybutu typu %s." + +#: access/common/tupconvert.c:252 +#, c-format +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:575 parser/parse_relation.c:1169 +#, c-format +msgid "column \"%s\" cannot be declared SETOF" +msgstr "kolumna \"%s\" nie może być zadeklarowana jako SETOF" + +#: 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 "rozmiar indeksu wiersza %lu przekracza maksimum %lu dla indeksy \"%s\"" + +#: access/gin/ginscan.c:401 +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" + +#: access/gin/ginscan.c:402 +#, c-format +msgid "To fix this, do REINDEX INDEX \"%s\"." +msgstr "By to naprawić, wykonaj REINDEX INDEX \"%s\"." + +#: access/gist/gist.c:230 +msgid "unlogged GiST indexes are not supported" +msgstr "nielogowane indeksy GiST nie są obsługiwane" + +#: access/gist/gist.c:715 access/gist/gistvacuum.c:271 +#, 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:717 access/gist/gistvacuum.c:273 +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." + +#: access/gist/gistsplit.c:375 +#, c-format +msgid "picksplit method for column %d of index \"%s\" failed" +msgstr "metoda picksplit dla kolumny %d indeksu \"%s\" nie powiodła się" + +#: 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 "" +"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/transam/slru.c:609 +#, c-format +msgid "file \"%s\" doesn't exist, reading as zeroes" +msgstr "plik \"%s\" nie istnieje, odczyt jako zera" + +#: 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 "brak dostępu do statusu transakcji %u" + +#: access/transam/slru.c:840 +#, c-format +msgid "Could not open file \"%s\": %m." +msgstr "Nie można otworzyć pliku \"%s\": %m." + +#: access/transam/slru.c:846 +#, c-format +msgid "Could not seek in file \"%s\" to offset %u: %m." +msgstr "Nie można pozycjonować pliku \"%s\" od pozycji %u: %m." + +#: access/transam/slru.c:853 +#, c-format +msgid "Could not read from file \"%s\" at offset %u: %m." +msgstr "Nie można czytać z pliku \"%s\" od pozycji %u: %m." + +#: access/transam/slru.c:860 +#, c-format +msgid "Could not write to file \"%s\" at offset %u: %m." +msgstr "Nie można pisać do pliku \"%s\" od pozycji %u: %m." + +#: access/transam/slru.c:867 +#, c-format +msgid "Could not fsync file \"%s\": %m." +msgstr "Nie udało się fsync na pliku \"%s\": %m." + +#: access/transam/slru.c:874 +#, c-format +msgid "Could not close file \"%s\": %m." +msgstr "Nie można zamknąć pliku \"%s\": %m." + +#: access/transam/slru.c:1101 +#, c-format +msgid "could not truncate directory \"%s\": apparent wraparound" +msgstr "nie można obciąć folderu \"%s\": pozorne zachodzenie na siebie" + +#: access/transam/slru.c:1182 +#, c-format +msgid "removing file \"%s\"" +msgstr "usuwanie pliku \"%s\"" + +#: access/transam/twophase.c:250 +#, c-format +msgid "transaction identifier \"%s\" is too long" +msgstr "identyfikator transakcji \"%s\" jest zbyt długi" + +#: access/transam/twophase.c:257 +msgid "prepared transactions are disabled" +msgstr "przygotowane transakcje są wyłączone" + +#: access/transam/twophase.c:258 +msgid "Set max_prepared_transactions to a nonzero value." +msgstr "Ustawienie wartości niezerowej max_prepared_transactions." + +#: access/transam/twophase.c:291 +#, c-format +msgid "transaction identifier \"%s\" is already in use" +msgstr "identyfikator transakcji \"%s\" jest już używany" + +#: access/transam/twophase.c:300 +msgid "maximum number of prepared transactions reached" +msgstr "osiągnięto maksymalną liczbę przygotowanych transakcji" + +#: access/transam/twophase.c:301 +#, c-format +msgid "Increase max_prepared_transactions (currently %d)." +msgstr "Zwiększenie max_prepared_transactions (obecnie %d)." + +#: access/transam/twophase.c:421 +#, c-format +msgid "prepared transaction with identifier \"%s\" is busy" +msgstr "przygotowana transakcja o identyfikatorze \"%s\" jest zajęta" + +#: access/transam/twophase.c:429 +msgid "permission denied to finish prepared transaction" +msgstr "brak dostępu do zakończenia przygotowanej transakcji" + +#: access/transam/twophase.c:430 +msgid "Must be superuser or the user that prepared the transaction." +msgstr "" +"Trzeba być superużytkownikiem lub użytkownikiem, który przygotował " +"transakcję." + +#: access/transam/twophase.c:441 +msgid "prepared transaction belongs to another database" +msgstr "przygotowana transakcja należy do innej bazy danych" + +#: access/transam/twophase.c:442 +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ć." + +#: access/transam/twophase.c:456 +#, c-format +msgid "prepared transaction with identifier \"%s\" does not exist" +msgstr "przygotowana transakcja z identyfikatorem \"%s\" nie istnieje" + +#: access/transam/twophase.c:939 +msgid "two-phase state file maximum length exceeded" +msgstr "przekroczona maksymalna długość pliku stanu dwufazowego" + +#: access/transam/twophase.c:957 +#, 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: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 "nie można pisać do pliku stanu dwufazowego: %m" + +#: access/transam/twophase.c:997 +#, 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:1050 access/transam/twophase.c:1490 +#, c-format +msgid "could not close two-phase state file: %m" +msgstr "nie można zamknąć pliku stanu dwufazowego: %m" + +#: access/transam/twophase.c:1130 access/transam/twophase.c:1570 +#, 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:1147 +#, 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:1179 +#, 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:1271 +#, 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:1427 +#, 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:1456 +#, 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:1484 +#, 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:1579 +#, 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:1586 +#, 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:1651 +#, c-format +msgid "removing future two-phase state file \"%s\"" +msgstr "usunięcie przyszłego pliku stanu dwufazowego \"%s\"" + +#: 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 "usunięcie uszkodzonego pliku stanu dwufazowego \"%s\"" + +#: access/transam/twophase.c:1780 access/transam/twophase.c:1864 +#, c-format +msgid "removing stale two-phase state file \"%s\"" +msgstr "usunięcie nieaktualnego pliku stanu dwufazowego \"%s\"" + +#: access/transam/twophase.c:1882 +#, c-format +msgid "recovering prepared transaction %u" +msgstr "odzyskiwanie przygotowanej transakcji %u" + +#: access/transam/varsup.c:114 +#, 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\"" + +#: 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 "" +"Zatrzymaj postmastera i użyj autonomicznego backendu do odkurzenia tej bazy " +"danych.\n" +"Może być także konieczne zatwierdzenie lub wycofanie starych przygotowanych " +"transakcji." + +#: access/transam/varsup.c:121 +#, 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" + +#: access/transam/varsup.c:133 access/transam/varsup.c:368 +#, 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: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 "" +"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/varsup.c:140 access/transam/varsup.c:375 +#, 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:333 +#, 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" + +#: access/transam/xact.c:729 +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" + +#: access/transam/xact.c:1268 +#, c-format +msgid "maximum number of committed subtransactions (%d) exceeded" +msgstr "przekroczona maksymalna liczba zatwierdzonych podtransakcji (%d)" + +#: access/transam/xact.c:2044 +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" + +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2835 +#, 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:2845 +#, 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:2855 +#, 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:2906 +#, 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:3088 +msgid "there is already a transaction in progress" +msgstr "istnieje już aktywna transakcja" + +#: access/transam/xact.c:3255 access/transam/xact.c:3347 +msgid "there is no transaction in progress" +msgstr "brak aktywnej transakcji" + +#: 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 "nie ma takiego punktu zapisu" + +#: access/transam/xact.c:4225 +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:1329 +#, c-format +msgid "could not create archive status file \"%s\": %m" +msgstr "nie można utworzyć pliku stanu archiwum \"%s\": %m" + +#: access/transam/xlog.c:1337 +#, c-format +msgid "could not write archive status file \"%s\": %m" +msgstr "nie można zapisać pliku stanu archiwum \"%s\": %m" + +#: access/transam/xlog.c:1792 access/transam/xlog.c:10386 +#: replication/walreceiver.c:510 replication/walsender.c:1003 +#, c-format +msgid "could not seek in log file %u, segment %u to offset %u: %m" +msgstr "" +"nie można pozycjonować w pliku dziennika %u, segment %u do offsetu %u: %m" + +#: access/transam/xlog.c:1809 replication/walreceiver.c:527 +#, c-format +msgid "could not write to log file %u, segment %u at offset %u, length %lu: %m" +msgstr "" +"nie można pisać do pliku dziennika %u, segment %u do offsetu %u, długość " +"%lu: %m" + +#: access/transam/xlog.c:2011 +#, c-format +msgid "updated min recovery point to %X/%X" +msgstr "zaktualizowano min punkt przywracania do %X/%X" + +#: access/transam/xlog.c:2352 access/transam/xlog.c:2456 +#: access/transam/xlog.c:2685 access/transam/xlog.c:2756 +#: access/transam/xlog.c:2813 replication/walsender.c:991 +#, c-format +msgid "could not open file \"%s\" (log file %u, segment %u): %m" +msgstr "nie można otworzyć pliku \"%s\" (plik dziennika %u, segment %u): %m" + +#: access/transam/xlog.c:2377 access/transam/xlog.c:2510 +#: access/transam/xlog.c:4408 access/transam/xlog.c:9034 +#: access/transam/xlog.c:9274 storage/file/copydir.c:172 storage/smgr/md.c:285 +#: postmaster/postmaster.c:3691 +#, c-format +msgid "could not create file \"%s\": %m" +msgstr "nie można utworzyć pliku \"%s\": %m" + +#: access/transam/xlog.c:2409 access/transam/xlog.c:2542 +#: access/transam/xlog.c:4460 access/transam/xlog.c:4523 +#: storage/file/copydir.c:197 postmaster/postmaster.c:3701 +#: postmaster/postmaster.c:3711 utils/init/miscinit.c:1089 +#: utils/init/miscinit.c:1098 utils/init/miscinit.c:1105 utils/misc/guc.c:7432 +#: utils/misc/guc.c:7457 +#, c-format +msgid "could not write to file \"%s\": %m" +msgstr "nie można pisać do pliku \"%s\": %m" + +#: access/transam/xlog.c:2417 access/transam/xlog.c:2549 +#: access/transam/xlog.c:4529 storage/file/copydir.c:269 storage/smgr/md.c:924 +#: storage/smgr/md.c:1130 storage/smgr/md.c:1281 +#, c-format +msgid "could not fsync file \"%s\": %m" +msgstr "nie udało się fsync na pliku \"%s\": %m" + +#: access/transam/xlog.c:2422 access/transam/xlog.c:2554 +#: access/transam/xlog.c:4534 commands/copy.c:1329 storage/file/copydir.c:211 +#, c-format +msgid "could not close file \"%s\": %m" +msgstr "nie można zamknąć pliku \"%s\": %m" + +#: access/transam/xlog.c:2495 access/transam/xlog.c:4177 +#: access/transam/xlog.c:4271 access/transam/xlog.c:4427 +#: storage/file/copydir.c:165 storage/file/copydir.c:255 storage/smgr/md.c:542 +#: storage/smgr/md.c:802 replication/basebackup.c:725 +#: utils/init/miscinit.c:1039 utils/init/miscinit.c:1153 +#: utils/error/elog.c:1497 +#, c-format +msgid "could not open file \"%s\": %m" +msgstr "nie można otworzyć pliku \"%s\": %m" + +#: access/transam/xlog.c:2523 access/transam/xlog.c:4439 +#: access/transam/xlog.c:9206 access/transam/xlog.c:9219 +#: access/transam/xlog.c:9753 access/transam/xlog.c:9788 +#: storage/file/copydir.c:186 utils/adt/genfile.c:138 +#, c-format +msgid "could not read file \"%s\": %m" +msgstr "nie można czytać z pliku \"%s\": %m" + +#: access/transam/xlog.c:2526 +#, c-format +msgid "not enough data in file \"%s\"" +msgstr "niewystarczająca ilość danych w pliku \"%s\"" + +#: access/transam/xlog.c:2645 +#, c-format +msgid "" +"could not link file \"%s\" to \"%s\" (initialization of log file %u, segment " +"%u): %m" +msgstr "" +"nie można podlinkować pliku \"%s\" do \"%s\" (inicjacja pliku dziennika %u, " +"segment %u): %m" + +#: access/transam/xlog.c:2657 +#, c-format +msgid "" +"could not rename file \"%s\" to \"%s\" (initialization of log file %u, " +"segment %u): %m" +msgstr "" +"nie można zmienić nazwy pliku \"%s\" do \"%s\" (inicjacja pliku dziennika " +"%u, segment %u): %m" + +#: access/transam/xlog.c:2840 replication/walreceiver.c:484 +#, c-format +msgid "could not close log file %u, segment %u: %m" +msgstr "nie można zamknąć pliku dziennika %u, segment %u: %m" + +#: access/transam/xlog.c:2912 access/transam/xlog.c:3077 +#: access/transam/xlog.c:9019 access/transam/xlog.c:9194 +#: 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 "nie można wykonać stat na pliku \"%s\": %m" + +#: access/transam/xlog.c:2920 access/transam/xlog.c:9224 storage/smgr/md.c:358 +#: storage/smgr/md.c:405 storage/smgr/md.c:1244 +#, c-format +msgid "could not remove file \"%s\": %m" +msgstr "nie można usunąć pliku \"%s\": %m" + +#: access/transam/xlog.c:3056 +#, c-format +msgid "archive file \"%s\" has wrong size: %lu instead of %lu" +msgstr "plik archiwum \"%s\" ma niepoprawny rozmiar: %lu zamiast %lu" + +#: access/transam/xlog.c:3065 +#, c-format +msgid "restored log file \"%s\" from archive" +msgstr "odtworzono plik dziennika \"%s\" z archiwum" + +#: access/transam/xlog.c:3115 +#, 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" + +#. 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:3229 +#, c-format +msgid "%s \"%s\": return code %d" +msgstr "%s \"%s\": kod powrotu %d" + +#: access/transam/xlog.c:3339 access/transam/xlog.c:3522 +#, 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:3393 +#, c-format +msgid "recycled transaction log file \"%s\"" +msgstr "odzyskano plik dziennika transakcji \"%s\"" + +#: access/transam/xlog.c:3409 +#, c-format +msgid "removing transaction log file \"%s\"" +msgstr "usuwanie pliku dziennika transakcji \"%s\"" + +#: access/transam/xlog.c:3432 +#, 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:3444 +#, 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:3482 access/transam/xlog.c:3492 +#, c-format +msgid "required WAL directory \"%s\" does not exist" +msgstr "wymagany folder WAL \"%s\" nie istnieje" + +#: access/transam/xlog.c:3498 +#, c-format +msgid "creating missing WAL directory \"%s\"" +msgstr "tworzenie brakującego folderu WAL \"%s\"" + +#: access/transam/xlog.c:3501 +#, c-format +msgid "could not create missing directory \"%s\": %m" +msgstr "nie można utworzyć brakującego katalogu \"%s\": %m" + +#: access/transam/xlog.c:3535 +#, c-format +msgid "removing transaction log backup history file \"%s\"" +msgstr "usunięcie pliku kopii zapasowej historii dziennika transakcji \"%s\"" + +#: access/transam/xlog.c:3655 +#, c-format +msgid "incorrect hole size in record at %X/%X" +msgstr "niepoprawna wielkość otworu w rekordzie w %X/%X" + +#: access/transam/xlog.c:3668 +#, c-format +msgid "incorrect total length in record at %X/%X" +msgstr "niepoprawna całkowita długość w rekordzie w %X/%X" + +#: access/transam/xlog.c:3681 +#, c-format +msgid "incorrect resource manager data checksum in record at %X/%X" +msgstr "" +"niepoprawna suma kontrolna danych menadżera zasobów w rekordzie w %X/%X" + +#: access/transam/xlog.c:3759 access/transam/xlog.c:3797 +#, c-format +msgid "invalid record offset at %X/%X" +msgstr "niepoprawne przesunięcie rekordu w %X/%X" + +#: access/transam/xlog.c:3805 +#, c-format +msgid "contrecord is requested by %X/%X" +msgstr "wymagany kontrekord w %X/%X" + +#: access/transam/xlog.c:3820 +#, c-format +msgid "invalid xlog switch record at %X/%X" +msgstr "niepoprawny rekord przełącznika xlogu w %X/%X" + +#: access/transam/xlog.c:3828 +#, c-format +msgid "record with zero length at %X/%X" +msgstr "rekord o zerowej długości w %X/%X" + +#: access/transam/xlog.c:3837 +#, c-format +msgid "invalid record length at %X/%X" +msgstr "niepoprawna długość rekordu w %X/%X" + +#: access/transam/xlog.c:3844 +#, c-format +msgid "invalid resource manager ID %u at %X/%X" +msgstr "niepoprawny ID menażera zasobów %u w %X/%X" + +#: access/transam/xlog.c:3857 access/transam/xlog.c:3873 +#, c-format +msgid "record with incorrect prev-link %X/%X at %X/%X" +msgstr "rekord z niepoprawnym poprz-linkiem %X/%X w %X/%X" + +#: access/transam/xlog.c:3902 +#, c-format +msgid "record length %u at %X/%X too long" +msgstr "za duża długość rekordu %u w %X/%X" + +#: access/transam/xlog.c:3942 +#, c-format +msgid "there is no contrecord flag in log file %u, segment %u, offset %u" +msgstr "" +"brak flagi kontrekordu w pliku dziennika %u, segment %u, przesunięcie %u" + +#: access/transam/xlog.c:3952 +#, c-format +msgid "invalid contrecord length %u in log file %u, segment %u, offset %u" +msgstr "" +"niepoprawna długość kontrekordu %u w pliku dziennika %u, segment %u, " +"przesunięcie %u" + +#: access/transam/xlog.c:4042 +#, c-format +msgid "invalid magic number %04X in log file %u, segment %u, offset %u" +msgstr "" +"niepoprawny magiczny numer %04X w pliku dziennika %u, segment %u, " +"przesunięcie %u" + +#: access/transam/xlog.c:4049 access/transam/xlog.c:4095 +#, c-format +msgid "invalid info bits %04X in log file %u, segment %u, offset %u" +msgstr "" +"niepoprawny bity informacji %04X w pliku dziennika %u, segment %u, " +"przesunięcie %u" + +#: access/transam/xlog.c:4071 access/transam/xlog.c:4079 +#: access/transam/xlog.c:4086 +msgid "WAL file is from different database system" +msgstr "plik WAL jest z innego systemu bazy danych" + +#: access/transam/xlog.c:4072 +#, c-format +msgid "" +"WAL file database system identifier is %s, pg_control database system " +"identifier is %s." +msgstr "" +"identyfikator systemu bazy danych w pliku WAL to %s, identyfikator systemu " +"bazy danych pg_control to %s." + +#: access/transam/xlog.c:4080 +msgid "Incorrect XLOG_SEG_SIZE in page header." +msgstr "Niepoprawny XLOG_SEG_SIZE w nagłówku strony." + +#: access/transam/xlog.c:4087 +msgid "Incorrect XLOG_BLCKSZ in page header." +msgstr "Niepoprawny XLOG_BLCKSZ w nagłówku strony." + +#: access/transam/xlog.c:4103 +#, c-format +msgid "unexpected pageaddr %X/%X in log file %u, segment %u, offset %u" +msgstr "" +"nieoczekiwany adrstrony %X/%X w pliku dziennika %u, segment %u, offset %u" + +#: access/transam/xlog.c:4115 +#, c-format +msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u" +msgstr "" +"nieoczekiwany ID linii czasu %u w pliku dziennika %u, segment %u, offset %u" + +#: access/transam/xlog.c:4133 +#, c-format +msgid "" +"out-of-sequence timeline ID %u (after %u) in log file %u, segment %u, offset " +"%u" +msgstr "" +"nieoczekiwany ID linii czasu %u (po %u) w pliku dziennika %u, segment %u, " +"offset %u" + +#: access/transam/xlog.c:4206 +#, c-format +msgid "syntax error in history file: %s" +msgstr "błąd składni w pliku historii: %s" + +#: access/transam/xlog.c:4207 +msgid "Expected a numeric timeline ID." +msgstr "Oczekiwano numerycznego ID linii czasu." + +#: access/transam/xlog.c:4212 +#, c-format +msgid "invalid data in history file: %s" +msgstr "niepoprawne dane w pliku historii: %s" + +#: access/transam/xlog.c:4213 +msgid "Timeline IDs must be in increasing sequence." +msgstr "IDy linii czasu muszą być w kolejności rosnącej." + +#: access/transam/xlog.c:4226 +#, c-format +msgid "invalid data in history file \"%s\"" +msgstr "niepoprawne dane w pliku historii \"%s\"" + +#: access/transam/xlog.c:4227 +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/xlog.c:4313 +#, 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" + +#: access/transam/xlog.c:4326 +#, c-format +msgid "new target timeline is %u" +msgstr "nowa docelowa linia czasu to %u" + +#: access/transam/xlog.c:4551 +#, c-format +msgid "could not link file \"%s\" to \"%s\": %m" +msgstr "nie można podlinkować pliku \"%s\" do \"%s\": %m" + +#: access/transam/xlog.c:4558 access/transam/xlog.c:5518 +#: access/transam/xlog.c:5571 access/transam/xlog.c:6350 +#: postmaster/pgarch.c:715 +#, c-format +msgid "could not rename file \"%s\" to \"%s\": %m" +msgstr "nie można zmienić nazwy pliku \"%s\" na \"%s\": %m" + +#: access/transam/xlog.c:4640 +#, c-format +msgid "could not create control file \"%s\": %m" +msgstr "nie można utworzyć pliku kontrolnego \"%s\": %m" + +#: access/transam/xlog.c:4651 access/transam/xlog.c:4876 +#, c-format +msgid "could not write to control file: %m" +msgstr "nie można pisać do pliku kontrolnego: %m" + +#: access/transam/xlog.c:4657 access/transam/xlog.c:4882 +#, c-format +msgid "could not fsync control file: %m" +msgstr "nie można wykonać fsync na pliku kontrolnym: %m" + +#: access/transam/xlog.c:4662 access/transam/xlog.c:4887 +#, c-format +msgid "could not close control file: %m" +msgstr "nie można zamknąć pliku kontrolnego: %m" + +#: access/transam/xlog.c:4680 access/transam/xlog.c:4865 +#, c-format +msgid "could not open control file \"%s\": %m" +msgstr "nie można otworzyć pliku kontrolnego \"%s\": %m" + +#: access/transam/xlog.c:4686 +#, c-format +msgid "could not read from control file: %m" +msgstr "nie można czytać z pliku kontrolnego: %m" + +#: access/transam/xlog.c:4699 access/transam/xlog.c:4708 +#: access/transam/xlog.c:4732 access/transam/xlog.c:4739 +#: access/transam/xlog.c:4746 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:4793 +#: access/transam/xlog.c:4802 access/transam/xlog.c:4809 +#: access/transam/xlog.c:4818 access/transam/xlog.c:4825 +#: access/transam/xlog.c:4834 access/transam/xlog.c:4841 +#: utils/init/miscinit.c:1171 +msgid "database files are incompatible with server" +msgstr "pliki bazy danych są niezgodne z serwerem" + +#: access/transam/xlog.c:4700 +#, 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)." + +#: access/transam/xlog.c:4704 +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." + +#: access/transam/xlog.c:4709 +#, 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." + +#: access/transam/xlog.c:4712 access/transam/xlog.c:4736 +#: access/transam/xlog.c:4743 access/transam/xlog.c:4748 +msgid "It looks like you need to initdb." +msgstr "Wydaje się jakby konieczne było initdb." + +#: access/transam/xlog.c:4723 +msgid "incorrect checksum in control file" +msgstr "niepoprawna suma kontrolna pliku kontrolnego" + +#: access/transam/xlog.c:4733 +#, 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." + +#: access/transam/xlog.c:4740 +#, 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." + +#: access/transam/xlog.c:4747 +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." + +#: access/transam/xlog.c:4752 +#, 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." + +#: access/transam/xlog.c:4755 access/transam/xlog.c:4762 +#: access/transam/xlog.c:4769 access/transam/xlog.c:4776 +#: access/transam/xlog.c:4783 access/transam/xlog.c:4790 +#: access/transam/xlog.c:4797 access/transam/xlog.c:4805 +#: access/transam/xlog.c:4812 access/transam/xlog.c:4821 +#: access/transam/xlog.c:4828 access/transam/xlog.c:4837 +#: access/transam/xlog.c:4844 +msgid "It looks like you need to recompile or initdb." +msgstr "Wydaje się jakby konieczna była rekompilacja lub initdb." + +#: access/transam/xlog.c:4759 +#, 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." + +#: access/transam/xlog.c:4766 +#, 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." + +#: access/transam/xlog.c:4773 +#, 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." + +#: access/transam/xlog.c:4780 +#, 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." + +#: access/transam/xlog.c:4787 +#, 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." + +#: access/transam/xlog.c:4794 +#, 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:4803 +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." + +#: access/transam/xlog.c:4810 +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." + +#: access/transam/xlog.c:4819 +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." + +#: access/transam/xlog.c:4826 +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." + +#: access/transam/xlog.c:4835 +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." + +#: access/transam/xlog.c:4842 +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." + +#: access/transam/xlog.c:5167 +#, 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:5173 +#, 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:5178 +#, 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:5245 +#, 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:5283 access/transam/xlog.c:5374 +#: access/transam/xlog.c:5385 commands/extension.c:526 +#: commands/extension.c:534 utils/misc/guc.c:5309 +#, c-format +msgid "parameter \"%s\" requires a Boolean value" +msgstr "parametr \"%s\" wymaga wartości Boolean" + +#: access/transam/xlog.c:5299 +#, 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:5315 +#, 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:5359 +#, 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:5406 +#, c-format +msgid "unrecognized recovery parameter \"%s\"" +msgstr "nierozpoznany parametr odzyskiwania: \"%s\"" + +#: access/transam/xlog.c:5417 +#, 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" + +#: access/transam/xlog.c:5419 +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." + +#: access/transam/xlog.c:5425 +#, 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" + +#: access/transam/xlog.c:5445 +#, c-format +msgid "recovery target timeline %u does not exist" +msgstr "linia czasowa celu odtworzenia %u nie istnieje" + +#: access/transam/xlog.c:5575 +msgid "archive recovery complete" +msgstr "wykonane odtworzenie archiwum" + +#: access/transam/xlog.c:5693 +#, c-format +msgid "recovery stopping after commit of transaction %u, time %s" +msgstr "zatrzymanie odzyskiwania po zatwierdzeniu transakcji %u, czas %s" + +#: access/transam/xlog.c:5698 +#, 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:5706 +#, 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:5711 +#, 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:5720 +#, 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:5748 +msgid "recovery has paused" +msgstr "odzyskiwanie zostało wstrzymane" + +#: access/transam/xlog.c:5749 +msgid "Execute pg_xlog_replay_resume() to continue." +msgstr "Wykonaj pg_xlog_replay_resume() by kontynuować." + +#: access/transam/xlog.c:5792 access/transam/xlog.c:5814 +#: access/transam/xlog.c:5836 +msgid "must be superuser to control recovery" +msgstr "musisz być superużytkownikiem by kontrolować odzyskiwanie" + +#: access/transam/xlog.c:5797 access/transam/xlog.c:5819 +#: access/transam/xlog.c:5841 +msgid "recovery is not in progress" +msgstr "odzyskiwanie nie jest w toku" + +#: access/transam/xlog.c:5798 access/transam/xlog.c:5820 +#: access/transam/xlog.c:5842 +msgid "Recovery control functions can only be executed during recovery." +msgstr "" +"Funkcje kontroli odzyskiwania mogą być wykonywane tylko w trakcie " +"odzyskiwania." + +#: access/transam/xlog.c:5934 +#, 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)" + +#: access/transam/xlog.c:5956 +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:5957 +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." + +#: access/transam/xlog.c:5968 +msgid "" +"hot standby is not possible because wal_level was not set to \"hot_standby\" " +"on the master server" +msgstr "" +"rezerwa dynamiczna nie jest możliwa ponieważ wal_level nie był ustawiony na " +"\"hot_standby\" na serwerze podstawowym" + +#: access/transam/xlog.c:5969 +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." + +#: access/transam/xlog.c:6017 +msgid "control file contains invalid data" +msgstr "plik kontrolny zawiera niepoprawne dane" + +#: access/transam/xlog.c:6021 +#, c-format +msgid "database system was shut down at %s" +msgstr "system bazy danych został zamknięty %s" + +#: access/transam/xlog.c:6025 +#, 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:6029 +#, 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" + +#: access/transam/xlog.c:6033 +#, 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:6035 +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." + +#: access/transam/xlog.c:6039 +#, 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:6041 +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." + +#: access/transam/xlog.c:6045 +#, 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" + +#: access/transam/xlog.c:6094 +#, c-format +msgid "requested timeline %u is not a child of database system timeline %u" +msgstr "" +"żądana linia czasu %u nie jest potomna dla linii czasu systemu bazy danych %u" + +#: access/transam/xlog.c:6112 +msgid "entering standby mode" +msgstr "wejście w tryb gotowości" + +#: access/transam/xlog.c:6115 +#, c-format +msgid "starting point-in-time recovery to XID %u" +msgstr "chwila początkowa odzyskiwania do XID %u" + +#: access/transam/xlog.c:6119 +#, c-format +msgid "starting point-in-time recovery to %s" +msgstr "chwila początkowa odzyskiwania do %s" + +#: access/transam/xlog.c:6123 +#, c-format +msgid "starting point-in-time recovery to \"%s\"" +msgstr "chwila początkowa odzyskiwania do \"%s\"" + +#: access/transam/xlog.c:6127 +msgid "starting archive recovery" +msgstr "rozpoczęto odzyskiwanie archiwum" + +#: access/transam/xlog.c:6149 access/transam/xlog.c:6189 +#, c-format +msgid "checkpoint record is at %X/%X" +msgstr "rekord punktu kontrolnego jest w %X/%X" + +#: access/transam/xlog.c:6163 +msgid "could not find redo location referenced by checkpoint record" +msgstr "" +"nie można odnaleźć położenia ponowienia wskazywanego przez rekord punktu " +"kontrolnego" + +#: 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 "" +"Jeśli nie odtwarzasz z kopii zapasowej, spróbuj usunąć plik \"%s/backup_label" +"\"." + +#: access/transam/xlog.c:6170 +msgid "could not locate required checkpoint record" +msgstr "nie można odnaleźć wymaganego rekordu punktu kontrolnego" + +#: access/transam/xlog.c:6199 access/transam/xlog.c:6214 +msgid "could not locate a valid checkpoint record" +msgstr "nie można odnaleźć poprawnego rekordu punktu kontrolnego" + +#: access/transam/xlog.c:6208 +#, c-format +msgid "using previous checkpoint record at %X/%X" +msgstr "użycie poprzedniego rekordu punktu kontrolnego w %X/%X" + +#: access/transam/xlog.c:6223 +#, c-format +msgid "redo record is at %X/%X; shutdown %s" +msgstr "rekord ponowienia w %X/%X; zamknięcie %s" + +#: access/transam/xlog.c:6227 +#, 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:6231 +#, c-format +msgid "next MultiXactId: %u; next MultiXactOffset: %u" +msgstr "następny MultiXactId: %u; następny MultiXactOffset: %u" + +#: access/transam/xlog.c:6234 +#, 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:6238 +msgid "invalid next transaction ID" +msgstr "nieprawidłowy ID następnej transakcji" + +#: access/transam/xlog.c:6257 +msgid "invalid redo in checkpoint record" +msgstr "niepoprawne ponowienie w rekordzie punktu kontrolnego" + +#: access/transam/xlog.c:6268 +msgid "invalid redo record in shutdown checkpoint" +msgstr "niepoprawny rekord ponowienia w punkcie kontrolnym zamknięcia" + +#: access/transam/xlog.c:6298 +msgid "" +"database system was not properly shut down; automatic recovery in progress" +msgstr "" +"system bazy danych nie został poprawnie zamknięty; trwa automatyczne " +"odzyskiwanie" + +#: access/transam/xlog.c:6377 +msgid "initializing for hot standby" +msgstr "inicjacja dla rezerwy dynamicznej" + +#: access/transam/xlog.c:6505 +#, c-format +msgid "redo starts at %X/%X" +msgstr "ponowienie uruchamia się w %X/%X" + +#: access/transam/xlog.c:6620 +#, c-format +msgid "redo done at %X/%X" +msgstr "ponowienie wykonane w %X/%X" + +#: access/transam/xlog.c:6625 access/transam/xlog.c:8195 +#, 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:6633 +msgid "redo is not required" +msgstr "ponowienie nie jest wymagane" + +#: access/transam/xlog.c:6681 +msgid "requested recovery stop point is before consistent recovery point" +msgstr "" +"żądany punkt zatrzymania odtworzenia znajduje się przed punktem spójnego " +"odzyskania" + +#: access/transam/xlog.c:6690 +msgid "WAL ends before end of online backup" +msgstr "WAL kończy się prze końcem backupu online" + +#: access/transam/xlog.c:6691 +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." + +#: access/transam/xlog.c:6694 +msgid "WAL ends before consistent recovery point" +msgstr "WAL kończy się przed punktem spójnego odzyskiwania" + +#: access/transam/xlog.c:6715 +#, c-format +msgid "selected new timeline ID: %u" +msgstr "wybrany nowy ID linii czasowej: %u" + +#: access/transam/xlog.c:6957 +#, 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:7123 +msgid "invalid primary checkpoint link in control file" +msgstr "niepoprawny link podstawowego punktu kontrolnego w pliku kontrolnym" + +#: access/transam/xlog.c:7127 +msgid "invalid secondary checkpoint link in control file" +msgstr "niepoprawny link wtórnego punktu kontrolnego w pliku kontrolnym" + +#: access/transam/xlog.c:7131 +msgid "invalid checkpoint link in backup_label file" +msgstr "niepoprawny link punktu kontrolnego w pliku etykiety_backupu" + +#: access/transam/xlog.c:7145 +msgid "invalid primary checkpoint record" +msgstr "niepoprawny podstawowy rekord punktu kontrolnego" + +#: access/transam/xlog.c:7149 +msgid "invalid secondary checkpoint record" +msgstr "niepoprawny wtórny rekord punktu kontrolnego" + +#: access/transam/xlog.c:7153 +msgid "invalid checkpoint record" +msgstr "niepoprawny rekord punktu kontrolnego" + +#: access/transam/xlog.c:7164 +msgid "invalid resource manager ID in primary checkpoint record" +msgstr "" +"niepoprawny ID menadżera zasobów w podstawowym rekordzie punktu kontrolnego" + +#: access/transam/xlog.c:7168 +msgid "invalid resource manager ID in secondary checkpoint record" +msgstr "" +"niepoprawny ID menadżera zasobów we wtórnym rekordzie punktu kontrolnego" + +#: access/transam/xlog.c:7172 +msgid "invalid resource manager ID in checkpoint record" +msgstr "niepoprawny ID menadżera zasobów w rekordzie punktu kontrolnego" + +#: access/transam/xlog.c:7184 +msgid "invalid xl_info in primary checkpoint record" +msgstr "niepoprawny xl_info w podstawowym rekordzie punktu kontrolnego" + +#: access/transam/xlog.c:7188 +msgid "invalid xl_info in secondary checkpoint record" +msgstr "niepoprawny xl_info we wtórnym rekordzie punktu kontrolnego" + +#: access/transam/xlog.c:7192 +msgid "invalid xl_info in checkpoint record" +msgstr "niepoprawny xl_info w rekordzie punktu kontrolnego" + +#: access/transam/xlog.c:7204 +msgid "invalid length of primary checkpoint record" +msgstr "niepoprawna długość podstawowego rekordu punktu kontrolnego" + +#: access/transam/xlog.c:7208 +msgid "invalid length of secondary checkpoint record" +msgstr "niepoprawna długość wtórnego rekordu punktu kontrolnego" + +#: access/transam/xlog.c:7212 +msgid "invalid length of checkpoint record" +msgstr "niepoprawna długość rekordu punktu kontrolnego" + +#: access/transam/xlog.c:7374 +msgid "shutting down" +msgstr "zamykanie" + +#: access/transam/xlog.c:7396 +msgid "database system is shut down" +msgstr "system bazy danych jest zamknięty" + +#: access/transam/xlog.c:7822 +msgid "" +"concurrent transaction log activity while database system is shutting down" +msgstr "" +"równoczesna aktywność dziennika transakcji podczas gdy system bazy danych " +"jest zamykany" + +#: access/transam/xlog.c:8056 +msgid "skipping restartpoint, recovery has already ended" +msgstr "pominięcie punktu restartu, odzyskiwanie już się zakończyło" + +#: access/transam/xlog.c:8081 +#, c-format +msgid "skipping restartpoint, already performed at %X/%X" +msgstr "pominięcie punktu restartu, wykonano już w %X/%X" + +#: access/transam/xlog.c:8193 +#, c-format +msgid "recovery restart point at %X/%X" +msgstr "punkt restartu odzyskiwania w %X/%X" + +#: access/transam/xlog.c:8293 +#, c-format +msgid "restore point \"%s\" created at %X/%X" +msgstr "punkt przywrócenia \"%s\" utworzony w %X/%X" + +#: access/transam/xlog.c:8390 +msgid "online backup was canceled, recovery cannot continue" +msgstr "" +"zapis kopii roboczej online został anulowany, odzyskiwanie nie może być " +"kontynuowane" + +#: access/transam/xlog.c:8442 +#, 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:8478 +#, 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" + +#: access/transam/xlog.c:8742 access/transam/xlog.c:8766 +#, c-format +msgid "could not fsync log file %u, segment %u: %m" +msgstr "nie można wykonać fsync na pliku dziennika %u, segment %u: %m" + +#: access/transam/xlog.c:8774 +#, c-format +msgid "could not fsync write-through log file %u, segment %u: %m" +msgstr "" +"nie można wykonać fsync write-through na pliku dziennika %u, segment %u: %m" + +#: access/transam/xlog.c:8783 +#, c-format +msgid "could not fdatasync log file %u, segment %u: %m" +msgstr "nie można wykonać fdatasync na pliku dziennika %u, segment %u: %m" + +#: access/transam/xlog.c:8864 access/transam/xlog.c:9142 +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:8869 access/transam/xlog.c:9147 +#: access/transam/xlog.c:9410 access/transam/xlog.c:9442 +#: access/transam/xlog.c:9483 access/transam/xlog.c:9516 +#: access/transam/xlog.c:9623 access/transam/xlog.c:9698 +msgid "recovery is in progress" +msgstr "trwa odzyskiwanie" + +#: access/transam/xlog.c:8870 access/transam/xlog.c:9148 +#: access/transam/xlog.c:9411 access/transam/xlog.c:9443 +#: access/transam/xlog.c:9484 access/transam/xlog.c:9517 +msgid "WAL control functions cannot be executed during recovery." +msgstr "Funkcje kontroli WAL nie mogą być wykonywane w trakcie odzyskiwania." + +#: access/transam/xlog.c:8875 access/transam/xlog.c:9153 +msgid "WAL level not sufficient for making an online backup" +msgstr "poziom WAL niewystarczający do wykonania kopii zapasowej online" + +#: access/transam/xlog.c:8876 access/transam/xlog.c:9154 +#: access/transam/xlog.c:9449 +msgid "" +"wal_level must be set to \"archive\" or \"hot_standby\" at server start." +msgstr "" +"wal_level musi być ustawiony na \"archive\" lub \"hot_standby\" w czasie " +"uruchomienia serwera." + +#: access/transam/xlog.c:8881 +#, c-format +msgid "backup label too long (max %d bytes)" +msgstr "za długa etykieta backupu (maks %d bajtów)" + +#: access/transam/xlog.c:8922 access/transam/xlog.c:9025 +msgid "a backup is already in progress" +msgstr "tworzenie kopii zapasowej jest już w toku" + +#: access/transam/xlog.c:8923 +msgid "Run pg_stop_backup() and try again." +msgstr "Uruchom pg_stop_backup() i spróbuj ponownie." + +#: access/transam/xlog.c:9026 +#, 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." + +#: access/transam/xlog.c:9040 access/transam/xlog.c:9286 +#, c-format +msgid "could not write file \"%s\": %m" +msgstr "nie można pisać do pliku \"%s\": %m" + +#: access/transam/xlog.c:9198 +msgid "a backup is not in progress" +msgstr "tworzenie kopii zapasowej nie jest w toku" + +#: access/transam/xlog.c:9237 access/transam/xlog.c:9768 +#: access/transam/xlog.c:9774 +#, c-format +msgid "invalid data in file \"%s\"" +msgstr "nieprawidłowe dane w pliku \"%s\"" + +#: access/transam/xlog.c:9335 +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" + +#: access/transam/xlog.c:9345 +#, 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)" + +#: access/transam/xlog.c:9347 +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." + +#: access/transam/xlog.c:9354 +msgid "pg_stop_backup complete, all required WAL segments have been archived" +msgstr "" +"pg_stop_backup kompletny, zarchiwizowano wszystkie wymagane segmenty WAL" + +#: access/transam/xlog.c:9358 +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" + +#: access/transam/xlog.c:9405 +msgid "must be superuser to switch transaction log files" +msgstr "" +"musisz być superużytkownikiem by przełączyć pliki dzienników transakcji" + +#: access/transam/xlog.c:9437 +msgid "must be superuser to create a restore point" +msgstr "musisz być superużytkownikiem aby utworzyć punkt przywrócenia" + +#: access/transam/xlog.c:9448 +msgid "WAL level not sufficient for creating a restore point" +msgstr "poziom WAL niewystarczający do utworzenia punktu przywrócenia" + +#: access/transam/xlog.c:9456 +#, 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/xlog.c:9624 +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/xlog.c:9634 access/transam/xlog.c:9706 +#, c-format +msgid "could not parse transaction log location \"%s\"" +msgstr "nie można sparsować położenia dziennika transakcji \"%s\"" + +#: access/transam/xlog.c:9699 +msgid "pg_xlogfile_name() cannot be executed during recovery." +msgstr "pg_xlogfile_name() nie może być uruchomiony podczas trwania." + +#: access/transam/xlog.c:9810 +#, c-format +msgid "xlog redo %s" +msgstr "ponowienie xlog %s" + +#: access/transam/xlog.c:9850 +msgid "online backup mode canceled" +msgstr "tryb wykonania kopii zapasowej online anulowany" + +#: access/transam/xlog.c:9851 +#, c-format +msgid "\"%s\" was renamed to \"%s\"." +msgstr "\"%s\" został przemianowany na \"%s\"." + +#: access/transam/xlog.c:9858 +msgid "online backup mode was not canceled" +msgstr "tryb wykonania kopii zapasowej online nie został anulowany" + +#: access/transam/xlog.c:9859 +#, c-format +msgid "Could not rename \"%s\" to \"%s\": %m." +msgstr "Nie można zmienić nazwy \"%s\" na \"%s\": %m." + +#: access/transam/xlog.c:10372 access/transam/xlog.c:10394 +#, c-format +msgid "could not read from log file %u, segment %u, offset %u: %m" +msgstr "nie można czytać z pliku logów %u, segment %u, offset %u: %m" + +#: access/transam/xlog.c:10483 +msgid "received promote request" +msgstr "otrzymano żądanie rozgłoszenia" + +#: access/transam/xlog.c:10496 +#, c-format +msgid "trigger file found: %s" +msgstr "odnaleziono plik wyzwalacza: %s" + +#: access/heap/heapam.c:1082 access/heap/heapam.c:1110 +#: access/heap/heapam.c:1140 catalog/aclchk.c:1678 +#, c-format +msgid "\"%s\" is an index" +msgstr "\"%s\" jest indeksem" + +#: access/heap/heapam.c:1087 access/heap/heapam.c:1115 +#: access/heap/heapam.c:1145 catalog/aclchk.c:1685 commands/tablecmds.c:2269 +#: commands/tablecmds.c:7436 commands/tablecmds.c:9018 +#, c-format +msgid "\"%s\" is a composite type" +msgstr "\"%s\" jest typem złożonym" + +#: access/heap/heapam.c:3216 access/heap/heapam.c:3247 +#: access/heap/heapam.c:3282 +#, 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:175 access/heap/rewriteheap.c:597 +#, c-format +msgid "row is too big: size %lu, maximum size %lu" +msgstr "rekord jest zbyt duży: rozmiar %lu, maksymalny rozmiar %lu" + +#: access/index/indexam.c:161 catalog/objectaddress.c:391 +#: commands/indexcmds.c:1542 commands/tablecmds.c:220 +#: commands/tablecmds.c:2486 +#, c-format +msgid "\"%s\" is not an index" +msgstr "\"%s\" nie jest indeksem" + +#: access/nbtree/nbtinsert.c:393 +#, c-format +msgid "duplicate key value violates unique constraint \"%s\"" +msgstr "podwójna wartość klucza narusza ograniczenie unikalności \"%s\"" + +#: access/nbtree/nbtinsert.c:395 +#, c-format +msgid "Key %s already exists." +msgstr "Klucz %s już istnieje." + +#: access/nbtree/nbtinsert.c:457 +#, 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:459 +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: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 "" +"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." + +#: access/nbtree/nbtpage.c:161 access/nbtree/nbtpage.c:365 +#: parser/parse_utilcmd.c:1527 +#, c-format +msgid "index \"%s\" is not a btree" +msgstr "indeks \"%s\" nie jest indeksem btree" + +#: 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 "niezgodność wersji w indeksie \"%s\": wersja pliku %d, wersja kodu %d" + +#: bootstrap/bootstrap.c:277 tcop/postgres.c:3388 postmaster/postmaster.c:682 +#, c-format +msgid "--%s requires a value" +msgstr "--%s wymaga wartości" + +#: bootstrap/bootstrap.c:282 tcop/postgres.c:3393 postmaster/postmaster.c:687 +#, c-format +msgid "-c %s requires a value" +msgstr "-c %s wymaga wartości" + +#: bootstrap/bootstrap.c:293 postmaster/postmaster.c:699 +#: postmaster/postmaster.c:712 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Użyj \"%s --help\" aby uzyskać więcej informacji.\n" + +#: bootstrap/bootstrap.c:302 +#, c-format +msgid "%s: invalid command-line arguments\n" +msgstr "%s: nieprawidłowe argumenty wiersza poleceń\n" + +#: catalog/aclchk.c:200 +msgid "grant options can only be granted to roles" +msgstr "opcja przyznawania uprawnień może być przyznana tylko roli" + +#: catalog/aclchk.c:316 +#, c-format +msgid "no privileges were granted for column \"%s\" of relation \"%s\"" +msgstr "nie przyznano żadnych uprawnień do kolumny \"%s\" relacji \"%s\"" + +#: catalog/aclchk.c:321 +#, c-format +msgid "no privileges were granted for \"%s\"" +msgstr "nie przyznano żadnych uprawnień do \"%s\"" + +#: catalog/aclchk.c:329 +#, c-format +msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" +msgstr "nie przyznano wszystkich uprawnień do kolumny \"%s\" relacji \"%s\"" + +#: catalog/aclchk.c:334 +#, c-format +msgid "not all privileges were granted for \"%s\"" +msgstr "nie przyznano wszystkich uprawnień do \"%s\"" + +#: catalog/aclchk.c:345 +#, c-format +msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" +msgstr "nie można odwołać żadnych uprawnień do kolumny \"%s\" relacji \"%s\"" + +#: catalog/aclchk.c:350 +#, c-format +msgid "no privileges could be revoked for \"%s\"" +msgstr "nie można odwołać żadnych uprawnień do \"%s\"" + +#: catalog/aclchk.c:358 +#, c-format +msgid "" +"not all privileges could be revoked for column \"%s\" of relation \"%s\"" +msgstr "" +"nie udało się odwołać wszystkich uprawnień do kolumny \"%s\" relacji \"%s\"" + +#: catalog/aclchk.c:363 +#, c-format +msgid "not all privileges could be revoked for \"%s\"" +msgstr "nie udało się odwołać wszystkich uprawnień do \"%s\"" + +#: catalog/aclchk.c:442 catalog/aclchk.c:891 +#, c-format +msgid "invalid privilege type %s for relation" +msgstr "nieprawidłowy typ uprawnienia %s dla relacji" + +#: catalog/aclchk.c:446 catalog/aclchk.c:895 +#, c-format +msgid "invalid privilege type %s for sequence" +msgstr "nieprawidłowy typ uprawnienia %s dla sekwencji" + +#: catalog/aclchk.c:450 +#, c-format +msgid "invalid privilege type %s for database" +msgstr "nieprawidłowy typ uprawnienia %s dla bazy danych" + +#: catalog/aclchk.c:454 catalog/aclchk.c:899 +#, c-format +msgid "invalid privilege type %s for function" +msgstr "nieprawidłowy typ uprawnienia %s dla funkcji" + +#: catalog/aclchk.c:458 +#, c-format +msgid "invalid privilege type %s for language" +msgstr "nieprawidłowy typ uprawnienia %s dla języka" + +#: catalog/aclchk.c:462 +#, c-format +msgid "invalid privilege type %s for large object" +msgstr "nieprawidłowy typ uprawnienia %s dla dużego obiektu" + +#: catalog/aclchk.c:466 +#, c-format +msgid "invalid privilege type %s for schema" +msgstr "nieprawidłowy typ uprawnienia %s dla schematu" + +#: catalog/aclchk.c:470 +#, c-format +msgid "invalid privilege type %s for tablespace" +msgstr "nieprawidłowy typ uprawnienia %s dla przestrzeni tabel" + +#: catalog/aclchk.c:474 +#, c-format +msgid "invalid privilege type %s for foreign-data wrapper" +msgstr "nieprawidłowy typ uprawnienia %s dla opakowania obcych danych" + +#: catalog/aclchk.c:478 +#, c-format +msgid "invalid privilege type %s for foreign server" +msgstr "nieprawidłowy typ uprawnienia %s dla serwera obcego" + +#: catalog/aclchk.c:517 +msgid "column privileges are only valid for relations" +msgstr "uprawnienia do kolumn są poprawne tylko dla relacji" + +#: 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 "duży obiekt %u nie istnieje" + +#: catalog/aclchk.c:833 catalog/aclchk.c:841 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:396 +#: commands/foreigncmds.c:405 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:1135 +#: commands/sequence.c:1143 commands/sequence.c:1151 commands/sequence.c:1159 +#: commands/sequence.c:1167 commands/sequence.c:1175 commands/sequence.c:1183 +#: commands/sequence.c:1191 commands/typecmds.c:282 commands/extension.c:1235 +#: commands/extension.c:1243 commands/extension.c:1251 +#: commands/extension.c:2469 commands/collationcmds.c:93 +msgid "conflicting or redundant options" +msgstr "sprzeczne lub zbędne opcje" + +#: catalog/aclchk.c:932 +msgid "default privileges cannot be set for columns" +msgstr "uprawnienia domyślne nie mogą być ustawione dla kolumn" + +#: catalog/aclchk.c:1428 catalog/objectaddress.c:541 commands/analyze.c:343 +#: commands/copy.c:3774 commands/sequence.c:1419 commands/tablecmds.c:4591 +#: commands/tablecmds.c:4681 commands/tablecmds.c:4728 +#: commands/tablecmds.c:4824 commands/tablecmds.c:4868 +#: commands/tablecmds.c:4947 commands/tablecmds.c:5031 +#: commands/tablecmds.c:6647 commands/tablecmds.c:6856 commands/trigger.c:585 +#: parser/analyze.c:2039 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:1580 +#, c-format +msgid "column \"%s\" of relation \"%s\" does not exist" +msgstr "kolumna \"%s\" relacji \"%s\" nie istnieje" + +#: catalog/aclchk.c:1693 catalog/objectaddress.c:398 commands/sequence.c:1035 +#: commands/tablecmds.c:208 commands/tablecmds.c:2247 +#: commands/tablecmds.c:2494 commands/tablecmds.c:8968 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\" nie jest sekwencją" + +#: catalog/aclchk.c:1731 +#, c-format +msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" +msgstr "sekwencja \"%s\" pozwala jedynie na uprawnienia USAGE, SELECT i UPDATE" + +#: catalog/aclchk.c:1748 +msgid "invalid privilege type USAGE for table" +msgstr "niepoprawny typ uprawnienia USAGE dla tabeli" + +#: catalog/aclchk.c:1913 +#, c-format +msgid "invalid privilege type %s for column" +msgstr "nieprawidłowy typ uprawnienia %s dla kolumny" + +#: catalog/aclchk.c:1926 +#, c-format +msgid "sequence \"%s\" only supports SELECT column privileges" +msgstr "sekwencja \"%s\" pozwala jedynie na uprawnienia kolumnowe SELECT" + +#: catalog/aclchk.c:2510 +#, c-format +msgid "language \"%s\" is not trusted" +msgstr "język \"%s\" nie jest zaufany" + +#: catalog/aclchk.c:2512 +msgid "Only superusers can use untrusted languages." +msgstr "Jedynie superużytkownik może używać niezaufanych języków." + +#: catalog/aclchk.c:3019 +#, c-format +msgid "unrecognized privilege type \"%s\"" +msgstr "nierozpoznany typ uprawnienia \"%s\"" + +#: catalog/aclchk.c:3068 +#, c-format +msgid "permission denied for column %s" +msgstr "odmowa dostępu do kolumny %s" + +#: catalog/aclchk.c:3070 +#, c-format +msgid "permission denied for relation %s" +msgstr "odmowa dostępu do relacji %s" + +#: catalog/aclchk.c:3072 commands/sequence.c:550 commands/sequence.c:749 +#: commands/sequence.c:791 commands/sequence.c:827 commands/sequence.c:1470 +#, c-format +msgid "permission denied for sequence %s" +msgstr "odmowa dostępu do sekwencji %s" + +#: catalog/aclchk.c:3074 +#, c-format +msgid "permission denied for database %s" +msgstr "odmowa dostępu do bazy danych %s" + +#: catalog/aclchk.c:3076 +#, c-format +msgid "permission denied for function %s" +msgstr "odmowa dostępu do funkcji %s" + +#: catalog/aclchk.c:3078 +#, c-format +msgid "permission denied for operator %s" +msgstr "odmowa dostępu do operatora %s" + +#: catalog/aclchk.c:3080 +#, c-format +msgid "permission denied for type %s" +msgstr "odmowa dostępu do typu %s" + +#: catalog/aclchk.c:3082 +#, c-format +msgid "permission denied for language %s" +msgstr "odmowa dostępu do języka %s" + +#: catalog/aclchk.c:3084 +#, c-format +msgid "permission denied for large object %s" +msgstr "odmowa dostępu do dużego obiektu %s" + +#: catalog/aclchk.c:3086 +#, c-format +msgid "permission denied for schema %s" +msgstr "odmowa dostępu do schematu %s" + +#: catalog/aclchk.c:3088 +#, c-format +msgid "permission denied for operator class %s" +msgstr "odmowa dostępu do klasy operatora %s" + +#: catalog/aclchk.c:3090 +#, c-format +msgid "permission denied for operator family %s" +msgstr "odmowa dostępu do rodziny operatora %s" + +#: catalog/aclchk.c:3092 +#, c-format +msgid "permission denied for collation %s" +msgstr "odmowa dostępu do porównania %s" + +#: catalog/aclchk.c:3094 +#, c-format +msgid "permission denied for conversion %s" +msgstr "odmowa dostępu do konwersji %s" + +#: catalog/aclchk.c:3096 +#, c-format +msgid "permission denied for tablespace %s" +msgstr "odmowa dostępu do przestrzeni tabel %s" + +#: catalog/aclchk.c:3098 +#, c-format +msgid "permission denied for text search dictionary %s" +msgstr "odmowa dostępu do słownika wyszukiwania tekstowego %s" + +#: catalog/aclchk.c:3100 +#, c-format +msgid "permission denied for text search configuration %s" +msgstr "odmowa dostępu do konfiguracji wyszukiwania tekstowego %s" + +#: catalog/aclchk.c:3102 +#, c-format +msgid "permission denied for foreign-data wrapper %s" +msgstr "odmowa dostępu do opakowania obcych danych %s" + +#: catalog/aclchk.c:3104 +#, c-format +msgid "permission denied for foreign server %s" +msgstr "odmowa dostępu do serwera obcego %s" + +#: catalog/aclchk.c:3106 +#, c-format +msgid "permission denied for extension %s" +msgstr "odmowa dostępu do rozszerzenia %s" + +#: catalog/aclchk.c:3112 catalog/aclchk.c:3114 +#, c-format +msgid "must be owner of relation %s" +msgstr "musi być właścicielem relacji %s" + +#: catalog/aclchk.c:3116 +#, c-format +msgid "must be owner of sequence %s" +msgstr "musi być właścicielem sekwencji %s" + +#: catalog/aclchk.c:3118 +#, c-format +msgid "must be owner of database %s" +msgstr "musi być właścicielem bazy %s" + +#: catalog/aclchk.c:3120 +#, c-format +msgid "must be owner of function %s" +msgstr "musi być właścicielem funkcji %s" + +#: catalog/aclchk.c:3122 +#, c-format +msgid "must be owner of operator %s" +msgstr "musi być właścicielem operatora %s" + +#: catalog/aclchk.c:3124 +#, c-format +msgid "must be owner of type %s" +msgstr "musi być właścicielem typu %s" + +#: catalog/aclchk.c:3126 +#, c-format +msgid "must be owner of language %s" +msgstr "musi być właścicielem języka %s" + +#: catalog/aclchk.c:3128 +#, c-format +msgid "must be owner of large object %s" +msgstr "musi być właścicielem dużego obiektu %s" + +#: catalog/aclchk.c:3130 +#, c-format +msgid "must be owner of schema %s" +msgstr "musi być właścicielem schematu %s" + +#: catalog/aclchk.c:3132 +#, c-format +msgid "must be owner of operator class %s" +msgstr "musi być właścicielem klasy operatora %s" + +#: catalog/aclchk.c:3134 +#, c-format +msgid "must be owner of operator family %s" +msgstr "musi być właścicielem rodziny operatora %s" + +#: catalog/aclchk.c:3136 +#, c-format +msgid "must be owner of collation %s" +msgstr "musi być właścicielem porównania %s" + +#: catalog/aclchk.c:3138 +#, c-format +msgid "must be owner of conversion %s" +msgstr "musi być właścicielem konwersji %s" + +#: catalog/aclchk.c:3140 +#, c-format +msgid "must be owner of tablespace %s" +msgstr "musi być właścicielem przestrzeni tabel %s" + +#: catalog/aclchk.c:3142 +#, c-format +msgid "must be owner of text search dictionary %s" +msgstr "musi być właścicielem słownika wyszukiwania tekstowego %s" + +#: catalog/aclchk.c:3144 +#, c-format +msgid "must be owner of text search configuration %s" +msgstr "musi być właścicielem konfiguracji wyszukiwania tekstowego %s" + +#: catalog/aclchk.c:3146 +#, c-format +msgid "must be owner of foreign-data wrapper %s" +msgstr "musi być właścicielem opakowania obcych danych %s" + +#: catalog/aclchk.c:3148 +#, c-format +msgid "must be owner of foreign server %s" +msgstr "musi być właścicielem serwera obcego %s" + +#: catalog/aclchk.c:3150 +#, c-format +msgid "must be owner of extension %s" +msgstr "musi być właścicielem rozszerzenia %s" + +#: catalog/aclchk.c:3192 +#, c-format +msgid "permission denied for column \"%s\" of relation \"%s\"" +msgstr "odmowa dostępu do kolumny \"%s\" relacji \"%s\"" + +#: catalog/aclchk.c:3219 +#, c-format +msgid "role with OID %u does not exist" +msgstr "rola z OID %u nie istnieje" + +#: catalog/aclchk.c:3312 catalog/aclchk.c:3320 +#, c-format +msgid "attribute %d of relation with OID %u does not exist" +msgstr "atrybut %d relacji o OID %u nie istnieje" + +#: catalog/aclchk.c:3393 catalog/aclchk.c:4219 +#, c-format +msgid "relation with OID %u does not exist" +msgstr "relacja z OID %u nie istnieje" + +#: catalog/aclchk.c:3493 catalog/aclchk.c:4610 utils/adt/dbsize.c:127 +#, c-format +msgid "database with OID %u does not exist" +msgstr "baza z OID %u nie istnieje" + +#: catalog/aclchk.c:3547 catalog/aclchk.c:4297 tcop/fastpath.c:221 +#, c-format +msgid "function with OID %u does not exist" +msgstr "funkcja z OID %u nie istnieje" + +#: catalog/aclchk.c:3601 catalog/aclchk.c:4323 +#, c-format +msgid "language with OID %u does not exist" +msgstr "język z OID %u nie istnieje" + +#: catalog/aclchk.c:3762 catalog/aclchk.c:4395 +#, c-format +msgid "schema with OID %u does not exist" +msgstr "schemat z OID %u nie istnieje" + +#: catalog/aclchk.c:3816 catalog/aclchk.c:4422 +#, c-format +msgid "tablespace with OID %u does not exist" +msgstr "przestrzeń tabel z OID %u nie istnieje" + +#: catalog/aclchk.c:3874 catalog/aclchk.c:4556 +#, c-format +msgid "foreign-data wrapper with OID %u does not exist" +msgstr "opakowanie obcych danych z OID %u nie istnieje" + +#: catalog/aclchk.c:3935 catalog/aclchk.c:4583 +#, c-format +msgid "foreign server with OID %u does not exist" +msgstr "serwer obcy z OID %u nie istnieje" + +#: catalog/aclchk.c:4245 +#, c-format +msgid "type with OID %u does not exist" +msgstr "typ z OID %u nie istnieje" + +#: catalog/aclchk.c:4271 +#, c-format +msgid "operator with OID %u does not exist" +msgstr "operator z OID %u nie istnieje" + +#: catalog/aclchk.c:4448 +#, c-format +msgid "operator class with OID %u does not exist" +msgstr "klasa operatora z OID %u nie istnieje" + +#: catalog/aclchk.c:4475 +#, c-format +msgid "operator family with OID %u does not exist" +msgstr "rodzina operatora z OID %u nie istnieje" + +#: catalog/aclchk.c:4502 +#, 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:4529 +#, c-format +msgid "text search configuration with OID %u does not exist" +msgstr "konfiguracja wyszukiwania tekstowego z OID %u nie istnieje" + +#: catalog/aclchk.c:4636 +#, c-format +msgid "collation with OID %u does not exist" +msgstr "porównanie z OID %u nie istnieje" + +#: catalog/aclchk.c:4662 +#, c-format +msgid "conversion with OID %u does not exist" +msgstr "konwersja z OID %u nie istnieje" + +#: catalog/aclchk.c:4703 +#, c-format +msgid "extension with OID %u does not exist" +msgstr "rozszerzenie z OID %u nie istnieje" + +#: catalog/catalog.c:76 +msgid "invalid fork name" +msgstr "nieprawidłowa nazwa rozwidlenia" + +#: catalog/catalog.c:77 +msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"." +msgstr "Prawidłowymi wartościami rozwidlenia są \"main\", \"fsm\", i \"vm\"." + +#: catalog/dependency.c:574 +#, c-format +msgid "cannot drop %s because %s requires it" +msgstr "nie można skasować %s ponieważ jest wymagany przez %s" + +#: catalog/dependency.c:577 +#, c-format +msgid "You can drop %s instead." +msgstr "W zamian możesz usunąć %s." + +#: catalog/dependency.c:738 catalog/pg_shdepend.c:562 +#, 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" + +#: catalog/dependency.c:854 +#, c-format +msgid "drop auto-cascades to %s" +msgstr "kasowanie z automatycznym kaskadowaniem do %s" + +#: catalog/dependency.c:866 catalog/dependency.c:875 +#, c-format +msgid "%s depends on %s" +msgstr "%s zależy od %s" + +#: catalog/dependency.c:887 catalog/dependency.c:896 +#, c-format +msgid "drop cascades to %s" +msgstr "kasowanie kaskadowe do %s" + +#: catalog/dependency.c:904 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] "" +"\n" +"oraz %d inny obiekt (by obejrzeć listę sprawdź dziennik serwera)" +msgstr[1] "" +"\n" +"oraz %d inne obiekty (by obejrzeć listę sprawdź dziennik serwera)" +msgstr[2] "" +"\n" +"oraz %d innych obiektów (by obejrzeć listę sprawdź dziennik serwera)" + +#: catalog/dependency.c:916 +#, c-format +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:918 catalog/dependency.c:919 catalog/dependency.c:925 +#: catalog/dependency.c:926 catalog/dependency.c:937 catalog/dependency.c:938 +#: catalog/objectaddress.c:315 commands/user.c:957 commands/tablecmds.c:689 +#: storage/lmgr/deadlock.c:943 port/win32/security.c:51 utils/misc/guc.c:5399 +#: utils/misc/guc.c:5713 utils/misc/guc.c:8014 utils/misc/guc.c:8048 +#: utils/misc/guc.c:8082 utils/misc/guc.c:8116 utils/misc/guc.c:8151 +#, c-format +msgid "%s" +msgstr "%s" + +#: catalog/dependency.c:920 catalog/dependency.c:927 +msgid "Use DROP ... CASCADE to drop the dependent objects too." +msgstr "Użyj DROP ... CASCADE aby usunąć wraz z obiektami zależnymi." + +#: catalog/dependency.c:924 +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" + +#. translator: %d always has a value larger than 1 +#: catalog/dependency.c:933 +#, c-format +msgid "drop cascades to %d other object" +msgid_plural "drop cascades to %d other objects" +msgstr[0] "kasuje kaskadowo %d inny obiekt" +msgstr[1] "kasuje kaskadowo %d inne obiekty" +msgstr[2] "kasuje kaskadowo %d innych obiektów" + +#: catalog/dependency.c:2204 +#, c-format +msgid " column %s" +msgstr " kolumna %s" + +#: catalog/dependency.c:2210 +#, c-format +msgid "function %s" +msgstr "funkcja %s" + +#: catalog/dependency.c:2215 +#, c-format +msgid "type %s" +msgstr "typ %s" + +#: catalog/dependency.c:2245 +#, c-format +msgid "cast from %s to %s" +msgstr "rzutowanie z %s na %s" + +#: catalog/dependency.c:2265 +#, c-format +msgid "collation %s" +msgstr "porównanie %s" + +#: catalog/dependency.c:2289 +#, c-format +msgid "constraint %s on %s" +msgstr "ograniczenie %s na %s" + +#: catalog/dependency.c:2295 +#, c-format +msgid "constraint %s" +msgstr "ograniczenie %s" + +#: catalog/dependency.c:2312 +#, c-format +msgid "conversion %s" +msgstr "konwersja %s" + +#: catalog/dependency.c:2349 +#, c-format +msgid "default for %s" +msgstr "domyślne dla %s" + +#: catalog/dependency.c:2366 +#, c-format +msgid "language %s" +msgstr "język %s" + +#: catalog/dependency.c:2372 +#, c-format +msgid "large object %u" +msgstr "duży obiekt %u nie istnieje" + +#: catalog/dependency.c:2377 +#, c-format +msgid "operator %s" +msgstr "operator %s" + +#: catalog/dependency.c:2409 +#, c-format +msgid "operator class %s for access method %s" +msgstr "klasa operatora %s dla metody dostępu %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:2459 +#, c-format +msgid "operator %d (%s, %s) of %s: %s" +msgstr "operator %d (%s, %s) dla %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/dependency.c:2509 +#, c-format +msgid "function %d (%s, %s) of %s: %s" +msgstr "funkcja %d (%s, %s) dla %s: %s" + +#: catalog/dependency.c:2549 +#, c-format +msgid "rule %s on " +msgstr "reguła %s na " + +#: catalog/dependency.c:2584 +#, c-format +msgid "trigger %s on " +msgstr "wyzwalacz %s na " + +#: catalog/dependency.c:2601 +#, c-format +msgid "schema %s" +msgstr "schemat %s" + +#: catalog/dependency.c:2614 +#, c-format +msgid "text search parser %s" +msgstr "parser wyszukiwania tekstowego %s" + +#: catalog/dependency.c:2629 +#, c-format +msgid "text search dictionary %s" +msgstr "słownik wyszukiwania tekstowego %s" + +#: catalog/dependency.c:2644 +#, c-format +msgid "text search template %s" +msgstr "szablon wyszukiwania tekstowego %s" + +#: catalog/dependency.c:2659 +#, c-format +msgid "text search configuration %s" +msgstr "konfiguracja wyszukiwania tekstowego %s" + +#: catalog/dependency.c:2667 +#, c-format +msgid "role %s" +msgstr "rola %s" + +#: catalog/dependency.c:2680 +#, c-format +msgid "database %s" +msgstr "baza danych %s" + +#: catalog/dependency.c:2692 +#, c-format +msgid "tablespace %s" +msgstr "przestrzeń tabel %s" + +#: catalog/dependency.c:2701 +#, c-format +msgid "foreign-data wrapper %s" +msgstr "opakowanie obcych danych %s" + +#: catalog/dependency.c:2710 +#, c-format +msgid "server %s" +msgstr "serwer %s" + +#: catalog/dependency.c:2735 +#, c-format +msgid "user mapping for %s" +msgstr "mapowanie użytkownika dla %s" + +#: catalog/dependency.c:2769 +#, 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/dependency.c:2774 +#, 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/dependency.c:2779 +#, 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/dependency.c:2785 +#, c-format +msgid "default privileges belonging to role %s" +msgstr "uprawnienia domyślne należące do roli %s" + +#: catalog/dependency.c:2793 +#, c-format +msgid " in schema %s" +msgstr " w schemacie %s" + +#: catalog/dependency.c:2810 +#, c-format +msgid "extension %s" +msgstr "rozszerzenie %s" + +#: catalog/dependency.c:2868 +#, c-format +msgid "table %s" +msgstr "tabela %s" + +#: catalog/dependency.c:2872 +#, c-format +msgid "index %s" +msgstr "indeks %s" + +#: catalog/dependency.c:2876 +#, c-format +msgid "sequence %s" +msgstr "sekwencja %s" + +#: catalog/dependency.c:2880 +#, c-format +msgid "uncataloged table %s" +msgstr "nieskatalogowana tabela %s" + +#: catalog/dependency.c:2884 +#, c-format +msgid "toast table %s" +msgstr "tabela toast %s" + +#: catalog/dependency.c:2888 +#, c-format +msgid "view %s" +msgstr "widok %s" + +#: catalog/dependency.c:2892 +#, c-format +msgid "composite type %s" +msgstr "typ złożony %s" + +#: catalog/dependency.c:2896 +#, c-format +msgid "foreign table %s" +msgstr "tabela obca %s" + +#: catalog/dependency.c:2901 +#, c-format +msgid "relation %s" +msgstr "relacja %s" + +#: catalog/dependency.c:2938 +#, c-format +msgid "operator family %s for access method %s" +msgstr "rodzina operatorów %s dla metody dostępu %s" + +#: catalog/heap.c:264 +#, c-format +msgid "permission denied to create \"%s.%s\"" +msgstr "odmowa dostępu do tworzenia \"%s.%s\"" + +#: catalog/heap.c:266 +msgid "System catalog modifications are currently disallowed." +msgstr "Modyfikacje katalogu systemowego są aktualnie zabronione." + +#: catalog/heap.c:389 commands/tablecmds.c:1268 commands/tablecmds.c:1685 +#: commands/tablecmds.c:4276 +#, c-format +msgid "tables can have at most %d columns" +msgstr "tabele mogą posiadać maksymalnie do %d kolumn" + +#: catalog/heap.c:406 +#, 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:422 +#, c-format +msgid "column name \"%s\" specified more than once" +msgstr "nazwa kolumny \"%s\" określona więcej niż raz" + +#: catalog/heap.c:472 +#, c-format +msgid "column \"%s\" has type \"unknown\"" +msgstr "kolumna \"%s\" jest typu \"unknown\"" + +#: catalog/heap.c:473 +msgid "Proceeding with relation creation anyway." +msgstr "Kontynuacja utworzenia relacji mimo wszystko." + +#: catalog/heap.c:486 +#, c-format +msgid "column \"%s\" has pseudo-type %s" +msgstr "kolumna \"%s\" jest pseudotypu %s" + +#: catalog/heap.c:516 +#, 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:558 +#, 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:560 commands/indexcmds.c:931 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:4912 +#: utils/adt/selfuncs.c:5029 utils/adt/varlena.c:1315 +msgid "Use the COLLATE clause to set the collation explicitly." +msgstr "Użyj klauzuli COLLATE by ustawić jawnie porównanie." + +#: catalog/heap.c:1011 catalog/index.c:769 commands/tablecmds.c:2318 +#, c-format +msgid "relation \"%s\" already exists" +msgstr "relacja \"%s\" już istnieje" + +#: catalog/heap.c:1027 catalog/pg_type.c:396 catalog/pg_type.c:695 +#: commands/typecmds.c:224 commands/typecmds.c:806 commands/typecmds.c:1145 +#: commands/typecmds.c:1622 +#, c-format +msgid "type \"%s\" already exists" +msgstr "typ \"%s\" już istnieje" + +#: catalog/heap.c:1028 +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." + +#: catalog/heap.c:2141 +#, c-format +msgid "check constraint \"%s\" already exists" +msgstr "ograniczenie kontrolne \"%s\" już istnieje" + +#: catalog/heap.c:2287 catalog/pg_constraint.c:645 commands/tablecmds.c:5350 +#, c-format +msgid "constraint \"%s\" for relation \"%s\" already exists" +msgstr "ograniczenie \"%s\" dla relacji \"%s\" już istnieje" + +#: catalog/heap.c:2291 +#, c-format +msgid "merging constraint \"%s\" with inherited definition" +msgstr "połączenie ograniczenia \"%s\" z dziedziczoną definicją" + +#: catalog/heap.c:2389 +msgid "cannot use column references in default expression" +msgstr "nie można użyć referencji kolumn w domyślnym wyrażeniu" + +#: catalog/heap.c:2397 +msgid "default expression must not return a set" +msgstr "domyślne wyrażenie nie może zwracać zbioru" + +#: catalog/heap.c:2405 +msgid "cannot use subquery in default expression" +msgstr "nie można użyć podzapytania w domyślnym wyrażeniu" + +#: catalog/heap.c:2409 +msgid "cannot use aggregate function in default expression" +msgstr "nie można użyć funkcji agregującej w domyślnym wyrażeniu" + +#: catalog/heap.c:2413 +msgid "cannot use window function in default expression" +msgstr "nie można użyć funkcji okna w domyślnym wyrażeniu" + +#: catalog/heap.c:2432 rewrite/rewriteHandler.c:1030 +#, 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:2437 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:1035 +msgid "You will need to rewrite or cast the expression." +msgstr "Będziesz musiał przepisać lub rzutować wyrażenie." + +#: catalog/heap.c:2483 +#, 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:2492 commands/typecmds.c:2386 +msgid "cannot use subquery in check constraint" +msgstr "nie można używać podzapytań w ograniczeniu kontrolnym" + +#: catalog/heap.c:2496 commands/typecmds.c:2390 +msgid "cannot use aggregate function in check constraint" +msgstr "nie można używać funkcji agregującej w ograniczeniu kontrolnym" + +#: catalog/heap.c:2500 commands/typecmds.c:2394 +msgid "cannot use window function in check constraint" +msgstr "nie można używać funkcji okna w ograniczeniu kontrolnym" + +#: catalog/heap.c:2739 +msgid "unsupported ON COMMIT and foreign key combination" +msgstr "nieobsługiwana kombinacja ON COMMIT i klucza obcego" + +#: catalog/heap.c:2740 +#, 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." + +#: catalog/heap.c:2745 +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:2746 +#, c-format +msgid "Table \"%s\" references \"%s\"." +msgstr "Tabela \"%s\" wskazuje na \"%s\"." + +#: catalog/heap.c:2748 +#, 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:202 parser/parse_utilcmd.c:1296 parser/parse_utilcmd.c:1382 +#, 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:220 +msgid "primary keys cannot be expressions" +msgstr "klucze główne nie mogą być wyrażeniami" + +#: catalog/index.c:730 catalog/index.c:1124 +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" + +#: catalog/index.c:740 +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" + +#: catalog/index.c:758 +msgid "shared indexes cannot be created after initdb" +msgstr "indeksy współdzielone nie mogą być tworzone po initdb" + +#: catalog/index.c:1727 +#, c-format +msgid "building index \"%s\" on table \"%s\"" +msgstr "tworzenie indeksu \"%s\" na tabeli \"%s\"" + +#: catalog/index.c:2800 +msgid "cannot reindex temporary tables of other sessions" +msgstr "nie można przeindeksować tabel tymczasowych z innych sesji" + +#: catalog/namespace.c:234 catalog/namespace.c:318 commands/trigger.c:4147 +#, c-format +msgid "cross-database references are not implemented: \"%s.%s.%s\"" +msgstr "międzybazodanowe referencje nie są zaimplementowane: \"%s.%s.%s\"" + +#: catalog/namespace.c:260 +msgid "temporary tables cannot specify a schema name" +msgstr "tymczasowe tabele nie mogą wskazywać nazwy schematu" + +#: catalog/namespace.c:285 commands/lockcmds.c:122 parser/parse_relation.c:835 +#, c-format +msgid "relation \"%s.%s\" does not exist" +msgstr "relacja \"%s.%s\" nie istnieje" + +#: catalog/namespace.c:290 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 "relacja \"%s\" nie istnieje" + +#: catalog/namespace.c:358 catalog/namespace.c:2589 +msgid "no schema has been selected to create in" +msgstr "nie wskazano schematu utworzenia obiektu" + +#: catalog/namespace.c:410 catalog/namespace.c:423 +msgid "cannot create relations in temporary schemas of other sessions" +msgstr "nie można utworzyć relacji w schematach tymczasowych z innych sesji" + +#: catalog/namespace.c:414 +msgid "cannot create temporary relation in non-temporary schema" +msgstr "nie można tworzyć obiektów tymczasowych w schematach nietymczasowych" + +#: catalog/namespace.c:429 +msgid "only temporary relations may be created in temporary schemas" +msgstr "tylko relacje tymczasowe mogą być utworzone w schematach tymczasowych" + +#: catalog/namespace.c:1906 commands/tsearchcmds.c:320 +#, c-format +msgid "text search parser \"%s\" does not exist" +msgstr "parser wyszukiwania tekstowego \"%s\" nie istnieje" + +#: catalog/namespace.c:2029 commands/tsearchcmds.c:769 +#, c-format +msgid "text search dictionary \"%s\" does not exist" +msgstr "słownik wyszukiwania tekstowego \"%s\" nie istnieje" + +#: catalog/namespace.c:2153 commands/tsearchcmds.c:1304 +#, c-format +msgid "text search template \"%s\" does not exist" +msgstr "szablon wyszukiwania tekstowego \"%s\" nie istnieje" + +#: catalog/namespace.c:2276 commands/tsearchcmds.c:1753 +#: commands/tsearchcmds.c:1909 +#, c-format +msgid "text search configuration \"%s\" does not exist" +msgstr "konfiguracja wyszukiwania tekstowego \"%s\" nie istnieje" + +#: catalog/namespace.c:2389 parser/parse_expr.c:775 parser/parse_target.c:1085 +#, c-format +msgid "cross-database references are not implemented: %s" +msgstr "międzybazodanowe referencje nie są zaimplementowane: %s" + +#: catalog/namespace.c:2395 parser/parse_expr.c:782 parser/parse_target.c:1092 +#: gram.y:11611 gram.y:12810 +#, 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:2523 +#, c-format +msgid "%s is already in schema \"%s\"" +msgstr "%s jest już w schemacie \"%s\"" + +#: catalog/namespace.c:2531 +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:2537 +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:2610 catalog/namespace.c:3595 catalog/namespace.c:3598 +#: commands/schemacmds.c:253 commands/schemacmds.c:322 +#, c-format +msgid "schema \"%s\" does not exist" +msgstr "schemat \"%s\" nie istnieje" + +#: catalog/namespace.c:2641 +#, 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:3040 +#, c-format +msgid "collation \"%s\" for encoding \"%s\" does not exist" +msgstr "porównanie \"%s\" dla kodowania \"%s\" nie istnieje" + +#: catalog/namespace.c:3092 +#, c-format +msgid "conversion \"%s\" does not exist" +msgstr "konwersja \"%s\" nie istnieje" + +#: catalog/namespace.c:3297 +#, c-format +msgid "permission denied to create temporary tables in database \"%s\"" +msgstr "zabronione tworzenie tabel tymczasowych w bazie danych \"%s\"" + +#: catalog/namespace.c:3313 +msgid "cannot create temporary tables during recovery" +msgstr "nie można utworzyć tabel tymczasowych w czasie trwania odzyskiwania" + +#: catalog/namespace.c:3557 commands/tablespace.c:1121 commands/variable.c:59 +#: replication/syncrep.c:656 utils/misc/guc.c:8181 +msgid "List syntax is invalid." +msgstr "Składnia listy jest niepoprawna." + +#: catalog/objectaddress.c:286 +msgid "database name cannot be qualified" +msgstr "nazwa bazy danych nie może być kwalifikowana" + +#: catalog/objectaddress.c:289 commands/extension.c:1581 +#: commands/extension.c:2241 +msgid "extension name cannot be qualified" +msgstr "nazwa rozszerzenia nie może być kwalifikowana" + +#: catalog/objectaddress.c:292 +msgid "tablespace name cannot be qualified" +msgstr "nazwa przestrzeni tabel nie może być kwalifikowana" + +#: catalog/objectaddress.c:295 +msgid "role name cannot be qualified" +msgstr "nazwa roli nie może być kwalifikowana" + +#: catalog/objectaddress.c:298 commands/schemacmds.c:178 +msgid "schema name cannot be qualified" +msgstr "nazwa schematu nie może być kwalifikowana" + +#: catalog/objectaddress.c:301 +msgid "language name cannot be qualified" +msgstr "nazwa języka nie może być kwalifikowana" + +#: catalog/objectaddress.c:304 +msgid "foreign-data wrapper name cannot be qualified" +msgstr "opakowanie obcych danych nie może być kwalifikowane" + +#: catalog/objectaddress.c:307 +msgid "server name cannot be qualified" +msgstr "nazwa serwera nie może być kwalifikowana" + +#: catalog/objectaddress.c:405 catalog/toasting.c:91 commands/indexcmds.c:200 +#: commands/indexcmds.c:1574 commands/lockcmds.c:149 commands/tablecmds.c:202 +#: commands/tablecmds.c:1129 commands/tablecmds.c:2478 +#: commands/tablecmds.c:3825 commands/tablecmds.c:6759 +#, c-format +msgid "\"%s\" is not a table" +msgstr "\"%s\" nie jest tabelą" + +#: catalog/objectaddress.c:412 commands/tablecmds.c:214 +#: commands/tablecmds.c:2253 commands/tablecmds.c:2510 +#: commands/tablecmds.c:3840 commands/tablecmds.c:8976 commands/view.c:181 +#, c-format +msgid "\"%s\" is not a view" +msgstr "\"%s\" nie jest widokiem" + +#: catalog/objectaddress.c:419 commands/tablecmds.c:232 +#: commands/tablecmds.c:2259 commands/tablecmds.c:2518 +#: commands/tablecmds.c:3843 commands/tablecmds.c:8984 +#, c-format +msgid "\"%s\" is not a foreign table" +msgstr "\"%s\" nie jest tabelą obcą" + +#: catalog/objectaddress.c:824 catalog/pg_largeobject.c:200 +#: libpq/be-fsstubs.c:287 +#, c-format +msgid "must be owner of large object %u" +msgstr "musi być właścicielem dużego obiektu %u" + +#: catalog/objectaddress.c:839 commands/functioncmds.c:1526 +#: commands/functioncmds.c:1814 +#, 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:870 catalog/objectaddress.c:886 +msgid "must be superuser" +msgstr "musi być superużytkownikiem" + +#: catalog/objectaddress.c:877 +msgid "must have CREATEROLE privilege" +msgstr "musi mieć uprawnienie CREATEROLE" + +#: catalog/pg_aggregate.c:100 +msgid "cannot determine transition data type" +msgstr "nie można określić przejściowego typu danych" + +#: catalog/pg_aggregate.c:101 +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:124 +#, 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:144 +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:175 catalog/pg_proc.c:205 +msgid "cannot determine result data type" +msgstr "nie można określić typu wyniku" + +#: catalog/pg_aggregate.c:176 +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." + +#: catalog/pg_aggregate.c:188 catalog/pg_proc.c:211 +msgid "unsafe use of pseudo-type \"internal\"" +msgstr "niebezpieczne użycie pseudo-typu \"internal\"" + +#: catalog/pg_aggregate.c:189 catalog/pg_proc.c:212 +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:197 +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" + +#: 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 "funkcja %s nie istnieje" + +#: catalog/pg_aggregate.c:337 +#, c-format +msgid "function %s returns a set" +msgstr "funkcja %s zwraca zbiór" + +#: catalog/pg_aggregate.c:362 +#, fuzzy, c-format +msgid "function %s requires run-time type coercion" +msgstr "funkcja %s wymaga zgodności typu czasu wykonania" + +#: catalog/pg_constraint.c:654 commands/typecmds.c:2321 +#, c-format +msgid "constraint \"%s\" for domain \"%s\" already exists" +msgstr "ograniczenie \"%s\" dla domeny \"%s\" już istnieje" + +#: catalog/pg_constraint.c:773 +#, c-format +msgid "table \"%s\" has multiple constraints named \"%s\"" +msgstr "tabela \"%s\" ma wiele ograniczeń o nazwie \"%s\"" + +#: catalog/pg_constraint.c:785 +#, c-format +msgid "constraint \"%s\" for table \"%s\" does not exist" +msgstr "ograniczenie \"%s\" dla tabeli \"%s\" nie istnieje" + +#: catalog/pg_conversion.c:67 +#, c-format +msgid "conversion \"%s\" already exists" +msgstr "konwersja \"%s\" już istnieje" + +#: catalog/pg_conversion.c:80 +#, c-format +msgid "default conversion for %s to %s already exists" +msgstr "domyślna konwersja z %s na %s już istnieje" + +#: catalog/pg_depend.c:164 commands/extension.c:2721 +#, c-format +msgid "%s is already a member of extension \"%s\"" +msgstr "%s jest już składnikiem rozszerzenia \"%s\"" + +#: catalog/pg_depend.c:323 +#, c-format +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:113 catalog/pg_enum.c:199 +#, c-format +msgid "invalid enum label \"%s\"" +msgstr "nieprawidłowa etykieta enumeracji \"%s\"" + +#: catalog/pg_enum.c:114 catalog/pg_enum.c:200 +#, c-format +msgid "Labels must be %d characters or less." +msgstr "Etykieta musi posiadać %d znaków lub mniej." + +#: catalog/pg_enum.c:264 +#, c-format +msgid "\"%s\" is not an existing enum label" +msgstr "\"%s\" nie jest istniejącą wartością enumeracji" + +#: catalog/pg_enum.c:325 +msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade" +msgstr "ALTER TYPE ADD BEFORE/AFTER nie jest zgodna z aktualizacją binarną" + +#: catalog/pg_namespace.c:52 commands/schemacmds.c:259 +#, c-format +msgid "schema \"%s\" already exists" +msgstr "schemat \"%s\" już istnieje" + +#: catalog/pg_operator.c:221 catalog/pg_operator.c:363 +#, c-format +msgid "\"%s\" is not a valid operator name" +msgstr "\"%s\" nie jest prawidłową nazwą operatora" + +#: catalog/pg_operator.c:372 +msgid "only binary operators can have commutators" +msgstr "tylko operatory binarne mogą mieć komutatory" + +#: catalog/pg_operator.c:376 +#, fuzzy +msgid "only binary operators can have join selectivity" +msgstr "tylko operatory binarne mogą mieć selektywność ograniczenia" + +#: catalog/pg_operator.c:380 +msgid "only binary operators can merge join" +msgstr "tylko operatory binarne mogą łączyć przez scalenie" + +#: catalog/pg_operator.c:384 +msgid "only binary operators can hash" +msgstr "tylko operatory binarne mogą haszować" + +#: catalog/pg_operator.c:395 +msgid "only boolean operators can have negators" +msgstr "tylko operatory logiczne mogą mieć negatory" + +#: catalog/pg_operator.c:399 +msgid "only boolean operators can have restriction selectivity" +msgstr "tylko operatory logiczne mogą mieć selektywność ograniczenia" + +#: catalog/pg_operator.c:403 +#, fuzzy +msgid "only boolean operators can have join selectivity" +msgstr "tylko operatory logiczne mogą mieć selektywność ograniczenia" + +#: catalog/pg_operator.c:407 +msgid "only boolean operators can merge join" +msgstr "tylko operatory logiczne mogą łączyć przez scalenie" + +#: catalog/pg_operator.c:411 +msgid "only boolean operators can hash" +msgstr "tylko operatory logiczne mogą haszować" + +#: catalog/pg_operator.c:423 +#, c-format +msgid "operator %s already exists" +msgstr "operator %s już istnieje" + +#: catalog/pg_operator.c:616 +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: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] "funkcje nie mogą mieć więcej niż %d argument" +msgstr[1] "funkcje nie mogą mieć więcej niż %d argumenty" +msgstr[2] "funkcje nie mogą mieć więcej niż %d argumentów" + +#: catalog/pg_proc.c:206 +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." + +#: catalog/pg_proc.c:224 +#, c-format +msgid "\"%s\" is already an attribute of type %s" +msgstr "\"%s\" jest już atrybutem typu %s" + +#: catalog/pg_proc.c:363 +#, c-format +msgid "function \"%s\" already exists with same argument types" +msgstr "funkcja \"%s\" z argumentami identycznego typu już istnieje" + +#: catalog/pg_proc.c:377 catalog/pg_proc.c:399 +msgid "cannot change return type of existing function" +msgstr "nie można zmieniać zwracanego typu istniejącej funkcji" + +#: 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 "Użyj najpierw DROP FUNCTION." + +#: catalog/pg_proc.c:400 +msgid "Row type defined by OUT parameters is different." +msgstr "Typ rekordu zdefiniowany przez parametr OUT jest inny." + +#: catalog/pg_proc.c:441 +#, c-format +msgid "cannot change name of input parameter \"%s\"" +msgstr "nie można zmienić nazwy parametru wejściowego \"%s\"" + +#: catalog/pg_proc.c:465 +msgid "cannot remove parameter defaults from existing function" +msgstr "nie można zmieniać domyślnych wartości parametru z istniejącej funkcji" + +#: catalog/pg_proc.c:491 +msgid "cannot change data type of existing parameter default value" +msgstr "" +"nie można zmieniać typu danych wartości domyślnej istniejącego parametru" + +#: catalog/pg_proc.c:503 +#, c-format +msgid "function \"%s\" is an aggregate function" +msgstr "funkcja \"%s\" jest funkcją agregującą" + +#: catalog/pg_proc.c:508 +#, c-format +msgid "function \"%s\" is not an aggregate function" +msgstr "funkcja \"%s\" nie jest funkcją agregującą" + +#: catalog/pg_proc.c:516 +#, c-format +msgid "function \"%s\" is a window function" +msgstr "funkcja \"%s\" jest funkcją okna" + +#: catalog/pg_proc.c:521 +#, c-format +msgid "function \"%s\" is not a window function" +msgstr "funkcja \"%s\" nie jest funkcją okna" + +#: catalog/pg_proc.c:698 +#, c-format +msgid "there is no built-in function named \"%s\"" +msgstr "brak wbudowanej funkcji o nazwie \"%s\"" + +#: catalog/pg_proc.c:790 +#, c-format +msgid "SQL functions cannot return type %s" +msgstr "funkcja SQL nie może zwracać typu %s" + +#: catalog/pg_proc.c:805 +#, 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:891 executor/functions.c:1162 +#, c-format +msgid "SQL function \"%s\"" +msgstr "funkcja 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] "" +"\n" +"i obiekty z %d innej bazy danych (lista w dzienniku serwera)" +msgstr[1] "" +"\n" +"i obiekty z %d innych baz danych (lista w dzienniku serwera)" +msgstr[2] "" +"\n" +"i obiekty z %d innych baz danych (lista w dzienniku serwera)" + +#: catalog/pg_shdepend.c:992 +#, c-format +msgid "role %u was concurrently dropped" +msgstr "rola %u została równocześnie usunięta" + +#: catalog/pg_shdepend.c:1011 +#, c-format +msgid "tablespace %u was concurrently dropped" +msgstr "przestrzeń tabel %u została równocześnie usunięta" + +#: catalog/pg_shdepend.c:1026 +#, c-format +msgid "database %u was concurrently dropped" +msgstr "baza danych %u została równocześnie usunięta" + +#: catalog/pg_shdepend.c:1070 +#, c-format +msgid "owner of %s" +msgstr "właściciel %s" + +#: catalog/pg_shdepend.c:1072 +#, c-format +msgid "privileges for %s" +msgstr "uprawnienia dla %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 obiekt w %s" +msgstr[1] "%d obiekty w %s" +msgstr[2] "%d obiektów w %s" + +#: catalog/pg_shdepend.c:1191 +#, 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" + +#: catalog/pg_shdepend.c:1287 +#, 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" + +#: catalog/pg_type.c:241 +#, c-format +msgid "invalid type internal size %d" +msgstr "niepoprawny rozmiar wewnętrzny typu %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 "" +"wyrównanie \"%c\" jest niepoprawne dla przekazywanego przez wartość typu o " +"rozmiarze %d" + +#: catalog/pg_type.c:289 +#, 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ść" + +#: catalog/pg_type.c:298 catalog/pg_type.c:304 +#, 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:312 +msgid "fixed-size types must have storage PLAIN" +msgstr "typy o stałej długości muszą mieć przechowywanie PLAIN" + +#: catalog/pg_type.c:760 +#, 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:142 +#, fuzzy +msgid "shared tables cannot be toasted after initdb" +msgstr "tabele współdzielone nie mogą być prażone po initdb" + +#: catalog/pg_collation.c:75 +#, c-format +msgid "collation \"%s\" for encoding \"%s\" already exists" +msgstr "ograniczenie \"%s\" dla kodowania \"%s\" już istnieje" + +#: catalog/pg_collation.c:89 +#, c-format +msgid "collation \"%s\" already exists" +msgstr "porównanie \"%s\" już istnieje" + +#: commands/aggregatecmds.c:103 +#, c-format +msgid "aggregate attribute \"%s\" not recognized" +msgstr "atrybut agregatu \"%s\" nie rozpoznany" + +#: commands/aggregatecmds.c:113 +msgid "aggregate stype must be specified" +msgstr "konieczne wskazanie stype agregatu" + +#: commands/aggregatecmds.c:117 +msgid "aggregate sfunc must be specified" +msgstr "konieczne wskazanie sfunc agregatu" + +#: commands/aggregatecmds.c:134 +msgid "aggregate input type must be specified" +msgstr "konieczne wskazanie typu wejścia agregatu" + +#: commands/aggregatecmds.c:159 +msgid "basetype is redundant with aggregate input type specification" +msgstr "typ bazowy jest nadmierny z jednoczesnym wskazaniem typu wejścia" + +#: commands/aggregatecmds.c:191 +#, c-format +msgid "aggregate transition data type cannot be %s" +msgstr "typ danych transformacji agregatu nie może być %s" + +#: commands/aggregatecmds.c:230 +#, c-format +msgid "aggregate %s(%s) does not exist, skipping" +msgstr "agregat %s(%s) nie istnieje, pominięto" + +#: commands/aggregatecmds.c:292 commands/functioncmds.c:1122 +#, c-format +msgid "function %s already exists in schema \"%s\"" +msgstr "funkcja %s istnieje już w schemacie \"%s\"" + +#: commands/alter.c:423 +#, c-format +msgid "must be superuser to set schema of %s" +msgstr "musisz być superużytkownikiem aby ustawić schemat dla %s" + +#: commands/alter.c:451 +#, c-format +msgid "%s already exists in schema \"%s\"" +msgstr "%s już istnieje w schemacie \"%s\"" + +#: commands/analyze.c:153 +#, c-format +msgid "skipping analyze of \"%s\" --- lock not available" +msgstr "pominięto analizę \"%s\" --- blokada niedostępna" + +#: commands/analyze.c:170 +#, c-format +msgid "skipping \"%s\" --- only superuser can analyze it" +msgstr "pominięto \"%s\" --- tylko superużytkownik może to analizować" + +#: commands/analyze.c:174 +#, 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:178 +#, 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ć" + +#: commands/analyze.c:194 +#, 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" + +#: commands/analyze.c:285 +#, c-format +msgid "analyzing \"%s.%s\" inheritance tree" +msgstr "analiza drzewa dziedziczenia \"%s.%s\"" + +#: commands/analyze.c:290 +#, c-format +msgid "analyzing \"%s.%s\"" +msgstr "analiza \"%s.%s\"" + +#: commands/analyze.c:598 +#, 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:1238 +#, 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" + +#: commands/analyze.c:1499 executor/execQual.c:2734 +msgid "could not convert row type" +msgstr "nie można przekształcić typu wierszowego" + +#: commands/async.c:567 +msgid "channel name cannot be empty" +msgstr "kanał nie może być pusty" + +#: commands/async.c:572 +msgid "channel name too long" +msgstr "nazwa kanału zbyt długa" + +#: commands/async.c:579 +msgid "payload string too long" +msgstr "ciąg znaków ładunku zbyt długi" + +#: commands/async.c:763 +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" + +#: commands/async.c:868 +msgid "too many notifications in the NOTIFY queue" +msgstr "zbyt wiele powiadomień w kolejce NOTIFY" + +#: commands/async.c:1430 +#, c-format +msgid "NOTIFY queue is %.0f%% full" +msgstr "kolejka NOTIFY jest zapełniona w %.0f%%" + +#: commands/async.c:1432 +#, 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:1435 +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." + +#: commands/cluster.c:134 commands/cluster.c:372 +msgid "cannot cluster temporary tables of other sessions" +msgstr "nie można sklastrować tabel tymczasowych z innych sesji" + +#: commands/cluster.c:164 +#, c-format +msgid "there is no previously clustered index for table \"%s\"" +msgstr "nie ma uprzednio sklastrowanego indeksu dla tabeli \"%s\"" + +#: commands/cluster.c:178 commands/tablecmds.c:7659 +#, c-format +msgid "index \"%s\" for table \"%s\" does not exist" +msgstr "indeks \"%s\" dla tabeli \"%s\" nie istnieje" + +#: commands/cluster.c:361 +msgid "cannot cluster a shared catalog" +msgstr "nie można sklastrować współdzielonego katalogu" + +#: commands/cluster.c:376 +msgid "cannot vacuum temporary tables of other sessions" +msgstr "nie można odkurzyć tabel tymczasowych z innych sesji" + +#: commands/cluster.c:426 +#, c-format +msgid "\"%s\" is not an index for table \"%s\"" +msgstr "\"%s\" nie jest indeksem dla tabeli \"%s\"" + +#: commands/cluster.c:434 +#, 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" + +#: commands/cluster.c:446 +#, c-format +msgid "cannot cluster on partial index \"%s\"" +msgstr "nie można sklastrować indeksu częściowego \"%s\"" + +#: commands/cluster.c:460 +#, c-format +msgid "cannot cluster on invalid index \"%s\"" +msgstr "nie można sklastrować niepoprawnego indeksu \"%s\"" + +#: commands/cluster.c:883 +#, 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:889 +#, 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:894 commands/vacuumlazy.c:339 +#, c-format +msgid "vacuuming \"%s.%s\"" +msgstr "odkurzanie \"%s.%s\"" + +#: commands/cluster.c:1054 +#, 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" + +#: commands/cluster.c:1058 +#, c-format +msgid "" +"%.0f dead row versions cannot be removed yet.\n" +"%s." +msgstr "" +"%.0f martwych wersji wierszy nie może być jeszcze usuniętych.\n" +"%s." + +#: 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:709 +#: utils/init/postinit.c:777 utils/init/postinit.c:794 +#, c-format +msgid "database \"%s\" does not exist" +msgstr "baza danych \"%s\" nie istnieje" + +#: commands/comment.c:97 commands/seclabel.c:113 +#, c-format +msgid "\"%s\" is not a table, view, composite type, or foreign table" +msgstr "\"%s\" nie jest tabelą, widokiem, typem złożonym ani sekwencją" + +#: commands/constraint.c:59 utils/adt/ri_triggers.c:3080 +#, c-format +msgid "function \"%s\" was not called by trigger manager" +msgstr "funkcja \"%s\" nie była wywołana przez menadżera wyzwalaczy" + +#: commands/constraint.c:66 utils/adt/ri_triggers.c:3089 +#, c-format +msgid "function \"%s\" must be fired AFTER ROW" +msgstr "funkcja \"%s\" musi być odpalana AFTER ROW" + +#: commands/constraint.c:80 utils/adt/ri_triggers.c:3110 +#, c-format +msgid "function \"%s\" must be fired for INSERT or UPDATE" +msgstr "funkcja \"%s\" musi być odpalona dla INSERT lub UPDATE" + +#: commands/conversioncmds.c:71 +#, c-format +msgid "source encoding \"%s\" does not exist" +msgstr "kodowanie źródłowe \"%s\" nie istnieje" + +#: commands/conversioncmds.c:78 +#, c-format +msgid "destination encoding \"%s\" does not exist" +msgstr "kodowanie docelowe \"%s\" nie istnieje" + +#: commands/conversioncmds.c:92 +#, c-format +msgid "encoding conversion function %s must return type \"void\"" +msgstr "funkcja konwersji kodowania %s musi zwracać typ \"void\"" + +#: commands/conversioncmds.c:152 +#, c-format +msgid "conversion \"%s\" does not exist, skipping" +msgstr "konwersja \"%s\" nie istnieje, pominięto" + +#: commands/conversioncmds.c:211 +#, c-format +msgid "conversion \"%s\" already exists in schema \"%s\"" +msgstr "konwersja \"%s\" istnieje już w schemacie \"%s\"" + +#: 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 nie jest obsługiwane do stdout ani ze stdin" + +#: commands/copy.c:473 +#, c-format +msgid "could not write to COPY file: %m" +msgstr "nie można pisać do pliku COPY: %m" + +#: commands/copy.c:485 +msgid "connection lost during COPY to stdout" +msgstr "utracono połączenie podczas DOPY do stdout" + +#: commands/copy.c:526 +#, c-format +msgid "could not read from COPY file: %m" +msgstr "nie można czytać z pliku COPY: %m" + +#: 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 "nieoczekiwany EOF w połączeniu klienta" + +#: commands/copy.c:577 +#, c-format +msgid "COPY from stdin failed: %s" +msgstr "nie powiodło się COPY ze stdin: %s" + +#: commands/copy.c:593 +#, 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:745 +msgid "must be superuser to COPY to or from a file" +msgstr "musisz być superużytkownikiem by wykonywać COPY z pliku" + +#: commands/copy.c:746 +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ć." + +#: commands/copy.c:874 +#, c-format +msgid "COPY format \"%s\" not recognized" +msgstr "format COPY \"%s\" nie rozpoznany" + +#: commands/copy.c:937 commands/copy.c:951 +#, 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:964 +#, 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:970 +#, c-format +msgid "option \"%s\" not recognized" +msgstr "opcja \"%s\" nie rozpoznana" + +#: commands/copy.c:981 +msgid "cannot specify DELIMITER in BINARY mode" +msgstr "nie można wskazać DELIMITER w trybie BINARY" + +#: commands/copy.c:986 +msgid "cannot specify NULL in BINARY mode" +msgstr "nie można wskazać NULL w trybie BINARY" + +#: commands/copy.c:1008 +msgid "COPY delimiter must be a single one-byte character" +msgstr "ogranicznik COPY musi być pojedynczym jednobajtowym znakiem" + +#: commands/copy.c:1015 +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:1021 +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" + +#: commands/copy.c:1038 +#, c-format +msgid "COPY delimiter cannot be \"%s\"" +msgstr "ogranicznik COPY nie może być \"%s\"" + +#: commands/copy.c:1044 +msgid "COPY HEADER available only in CSV mode" +msgstr "COPY HEADER dostępny tylko w trybie CSV" + +#: commands/copy.c:1050 +msgid "COPY quote available only in CSV mode" +msgstr "cytowanie COPY dostępny tylko w trybie CSV" + +#: commands/copy.c:1055 +msgid "COPY quote must be a single one-byte character" +msgstr "cytowanie COPY musi być pojedynczym jednobajtowym znakiem" + +#: commands/copy.c:1060 +msgid "COPY delimiter and quote must be different" +msgstr "ogranicznik i cytowanie COPY muszą być różne" + +#: commands/copy.c:1066 +msgid "COPY escape available only in CSV mode" +msgstr "znak ucieczki COPY dostępny tylko w trybie CSV" + +#: commands/copy.c:1071 +msgid "COPY escape must be a single one-byte character" +msgstr "znak ucieczki COPY musi być pojedynczym jednobajtowym znakiem" + +#: commands/copy.c:1077 +msgid "COPY force quote available only in CSV mode" +msgstr "znak wymuszenia cytowania COPY dostępny tylko w trybie CSV" + +#: commands/copy.c:1081 +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:1087 +msgid "COPY force not null available only in CSV mode" +msgstr "znak wymuszenia niepustych COPY dostępny tylko w trybie CSV" + +#: commands/copy.c:1091 +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:1097 +msgid "COPY delimiter must not appear in the NULL specification" +msgstr "ogranicznik COPY nie może pojawić się w specyfikacji NULL" + +#: commands/copy.c:1104 +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:1166 +#, c-format +msgid "table \"%s\" does not have OIDs" +msgstr "tabela \"%s\" nie ma OIDów" + +#: commands/copy.c:1183 +msgid "COPY (SELECT) WITH OIDS is not supported" +msgstr "COPY (SELECT) WITH OIDS nie jest obsługiwane" + +#: commands/copy.c:1210 +msgid "COPY (SELECT INTO) is not supported" +msgstr "COPY (SELECT INTO) nie jest obsługiwane" + +#: commands/copy.c:1270 +#, c-format +msgid "FORCE QUOTE column \"%s\" not referenced by COPY" +msgstr "kolumna FORCE QUOTE \"%s\" nie jest wskazana w COPY" + +#: commands/copy.c:1292 +#, 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:1356 +#, c-format +msgid "cannot copy from view \"%s\"" +msgstr "nie można kopiować z widoku \"%s\"" + +#: commands/copy.c:1358 commands/copy.c:1364 +msgid "Try the COPY (SELECT ...) TO variant." +msgstr "Spróbuj z alternatywnym COPY (SELECT ...) TO." + +#: commands/copy.c:1362 +#, c-format +msgid "cannot copy from foreign table \"%s\"" +msgstr "nie można kopiować z tabeli obcej \"%s\"" + +#: commands/copy.c:1368 +#, c-format +msgid "cannot copy from sequence \"%s\"" +msgstr "nie można kopiować z sekwencji \"%s\"" + +#: commands/copy.c:1373 +#, 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:1397 +msgid "relative path not allowed for COPY to file" +msgstr "ścieżka względna niedozwolona dla COPY do pliku" + +#: commands/copy.c:1407 +#, c-format +msgid "could not open file \"%s\" for writing: %m" +msgstr "nie można otworzyć pliku \"%s\" do zapisu: %m" + +#: commands/copy.c:1414 commands/copy.c:2200 +#, c-format +msgid "\"%s\" is a directory" +msgstr "\"%s\" jest katalogiem" + +#: commands/copy.c:1738 +#, c-format +msgid "COPY %s, line %d, column %s" +msgstr "COPY %s, linia %d, kolumna %s" + +#: commands/copy.c:1742 commands/copy.c:1787 +#, c-format +msgid "COPY %s, line %d" +msgstr "COPY %s, linia %d" + +#: commands/copy.c:1753 +#, c-format +msgid "COPY %s, line %d, column %s: \"%s\"" +msgstr "COPY %s, linia %d, kolumna %s: \"%s\"" + +#: commands/copy.c:1761 +#, c-format +msgid "COPY %s, line %d, column %s: null input" +msgstr "COPY %s, linia %d, kolumna %s: puste wejście" + +#: commands/copy.c:1773 +#, c-format +msgid "COPY %s, line %d: \"%s\"" +msgstr "COPY %s, linia %d: \"%s\"" + +#: commands/copy.c:1857 +#, c-format +msgid "cannot copy to view \"%s\"" +msgstr "nie można kopiować do widoku \"%s\"" + +#: commands/copy.c:1862 +#, c-format +msgid "cannot copy to foreign table \"%s\"" +msgstr "nie można kopiować do tabeli obcej \"%s\"" + +#: commands/copy.c:1867 +#, c-format +msgid "cannot copy to sequence \"%s\"" +msgstr "nie można kopiować do sekwencji \"%s\"" + +#: commands/copy.c:1872 +#, 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:2193 utils/adt/genfile.c:122 +#, c-format +msgid "could not open file \"%s\" for reading: %m" +msgstr "nie można otworzyć pliku \"%s\" do odczytu: %m" + +#: commands/copy.c:2219 +msgid "COPY file signature not recognized" +msgstr "nierozpoznana sygnatura pliku COPY" + +#: commands/copy.c:2224 +msgid "invalid COPY file header (missing flags)" +msgstr "niepoprawny nagłówek pliku COPY (brakuje flag)" + +#: commands/copy.c:2230 +msgid "unrecognized critical flags in COPY file header" +msgstr "nierozpoznane istotne flagi w nagłówku pliku COPY" + +#: commands/copy.c:2236 +msgid "invalid COPY file header (missing length)" +msgstr "niepoprawny nagłówek pliku COPY (brakuje długości)" + +#: commands/copy.c:2243 +msgid "invalid COPY file header (wrong length)" +msgstr "niepoprawny nagłówek pliku COPY (niepoprawna długość)" + +#: commands/copy.c:2376 commands/copy.c:3058 commands/copy.c:3275 +msgid "extra data after last expected column" +msgstr "nieoczekiwane dane po ostatniej oczekiwanej kolumnie" + +#: commands/copy.c:2386 +msgid "missing data for OID column" +msgstr "brak danych dla kolumny OID" + +#: commands/copy.c:2392 +msgid "null OID in COPY data" +msgstr "pusty OID w danych COPY" + +#: commands/copy.c:2402 commands/copy.c:2501 +msgid "invalid OID in COPY data" +msgstr "niepoprawny OID w danych COPY" + +#: commands/copy.c:2417 +#, c-format +msgid "missing data for column \"%s\"" +msgstr "brak danych dla kolumny \"%s\"" + +#: commands/copy.c:2476 +msgid "received copy data after EOF marker" +msgstr "odebrano kopiowane dane po znaczniku EOF" + +#: commands/copy.c:2483 +#, c-format +msgid "row field count is %d, expected %d" +msgstr "liczba pól wiersza wynosi %d, oczekiwano %d" + +#: commands/copy.c:2822 commands/copy.c:2839 +msgid "literal carriage return found in data" +msgstr "znaleziono literał powrotu karetki w danych" + +#: commands/copy.c:2823 commands/copy.c:2840 +msgid "unquoted carriage return found in data" +msgstr "znaleziono niecytowany powrót karetki w danych" + +#: commands/copy.c:2825 commands/copy.c:2842 +msgid "Use \"\\r\" to represent carriage return." +msgstr "Użyj \"\\r\" jako reprezentacji powrotu karetki." + +#: commands/copy.c:2826 commands/copy.c:2843 +msgid "Use quoted CSV field to represent carriage return." +msgstr "Użyj cytowanego pola CSV jako reprezentacji powrotu karetki." + +#: commands/copy.c:2855 +msgid "literal newline found in data" +msgstr "znaleziono literał nowej linii w danych" + +#: commands/copy.c:2856 +msgid "unquoted newline found in data" +msgstr "znaleziono niecytowany znak nowej linii w danych" + +#: commands/copy.c:2858 +msgid "Use \"\\n\" to represent newline." +msgstr "Użyj \"\\n\" jako reprezentacji znaku nowej linii." + +#: commands/copy.c:2859 +msgid "Use quoted CSV field to represent newline." +msgstr "Użyj cytowanego pola CSV jako reprezentacji nowej linii." + +#: commands/copy.c:2905 commands/copy.c:2941 +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:2914 commands/copy.c:2930 +msgid "end-of-copy marker corrupt" +msgstr "uszkodzony znak końcowy kopii" + +#: commands/copy.c:3359 +msgid "unterminated CSV quoted field" +msgstr "niezakończone cytowane pole CSV" + +#: commands/copy.c:3436 commands/copy.c:3455 +msgid "unexpected EOF in COPY data" +msgstr "nieoczekiwany EOF w danych COPY" + +#: commands/copy.c:3445 +msgid "invalid field size" +msgstr "nieprawidłowy rozmiar pola" + +#: commands/copy.c:3468 +msgid "incorrect binary data format" +msgstr "nieprawidłowy binarny format danych" + +#: commands/copy.c:3779 commands/indexcmds.c:846 commands/tablecmds.c:1293 +#: commands/tablecmds.c:2148 parser/parse_expr.c:764 +#: utils/adt/tsvector_op.c:1417 +#, c-format +msgid "column \"%s\" does not exist" +msgstr "kolumna \"%s\" nie istnieje" + +#: commands/copy.c:3786 commands/tablecmds.c:1319 commands/trigger.c:594 +#: parser/parse_target.c:911 parser/parse_target.c:922 +#, c-format +msgid "column \"%s\" specified more than once" +msgstr "kolumna \"%s\" określona więcej niż raz" + +#: commands/dbcommands.c:201 +msgid "LOCATION is not supported anymore" +msgstr "LOCATION nie jest już obsługiwane" + +#: commands/dbcommands.c:202 +msgid "Consider using tablespaces instead." +msgstr "Rozważ w zamian użycie przestrzeni tabel." + +#: commands/dbcommands.c:225 utils/adt/ascii.c:144 +#, c-format +msgid "%d is not a valid encoding code" +msgstr "%d nie jest poprawną kodem kodowania" + +#: commands/dbcommands.c:235 utils/adt/ascii.c:126 +#, c-format +msgid "%s is not a valid encoding name" +msgstr "%s nie jest poprawną nazwą kodowania" + +#: commands/dbcommands.c:253 commands/dbcommands.c:1347 commands/user.c:267 +#: commands/user.c:606 +#, c-format +msgid "invalid connection limit: %d" +msgstr "błędne ograniczenie liczby połączeń: %d" + +#: commands/dbcommands.c:272 +msgid "permission denied to create database" +msgstr "odmowa dostępu do tworzenia bazy" + +#: commands/dbcommands.c:295 +#, c-format +msgid "template database \"%s\" does not exist" +msgstr "tymczasowa baza \"%s\" nie istnieje" + +#: commands/dbcommands.c:307 +#, c-format +msgid "permission denied to copy database \"%s\"" +msgstr "odmowa dostępu do kopiowania bazy danych \"%s\"" + +#: commands/dbcommands.c:323 +#, c-format +msgid "invalid server encoding %d" +msgstr "nieprawidłowe kodowanie serwera %d" + +#: commands/dbcommands.c:329 commands/dbcommands.c:333 +#, c-format +msgid "invalid locale name %s" +msgstr "nieprawidłowa nazwa lokalizacji %s" + +#: commands/dbcommands.c:352 +#, 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)" + +#: commands/dbcommands.c:355 +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." + +#: commands/dbcommands.c:360 +#, 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)" + +#: commands/dbcommands.c:362 +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." + +#: commands/dbcommands.c:367 +#, 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)" + +#: commands/dbcommands.c:369 +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." + +#: commands/dbcommands.c:391 commands/dbcommands.c:1054 +msgid "pg_global cannot be used as default tablespace" +msgstr "pg_global nie może być użyty jako domyślna przestrzeń tabel" + +#: commands/dbcommands.c:417 +#, c-format +msgid "cannot assign new default tablespace \"%s\"" +msgstr "nie można przydzielić domyślnej przestrzeni tabel \"%s\"" + +#: commands/dbcommands.c:419 +#, 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." + +#: commands/dbcommands.c:439 commands/dbcommands.c:929 +#, c-format +msgid "database \"%s\" already exists" +msgstr "baza danych \"%s\" już istnieje" + +#: commands/dbcommands.c:453 +#, c-format +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:695 commands/dbcommands.c:710 +#, c-format +msgid "encoding %s does not match locale %s" +msgstr "kodowanie %s nie pasuje do ustawień lokalnych %s" + +#: commands/dbcommands.c:698 +#, c-format +msgid "The chosen LC_CTYPE setting requires encoding %s." +msgstr "Wybrane ustawienie LC_TYPE wymaga kodowania %s." + +#: commands/dbcommands.c:713 +#, c-format +msgid "The chosen LC_COLLATE setting requires encoding %s." +msgstr "Wybrane ustawienie LC_COLLATE wymaga kodowania %s." + +#: commands/dbcommands.c:771 +#, c-format +msgid "database \"%s\" does not exist, skipping" +msgstr "baza danych \"%s\" nie istnieje, pominięto" + +#: commands/dbcommands.c:792 +msgid "cannot drop a template database" +msgstr "nie można usunąć tymczasowej bazy danych" + +#: commands/dbcommands.c:798 +msgid "cannot drop the currently open database" +msgstr "nie można usunąć aktualnie otwartej bazy danych" + +#: commands/dbcommands.c:809 commands/dbcommands.c:951 +#: commands/dbcommands.c:1076 +#, 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:920 +msgid "permission denied to rename database" +msgstr "odmowa dostępu do zmiany nazwy bazy" + +#: commands/dbcommands.c:940 +msgid "current database cannot be renamed" +msgstr "nie można zmieniać nazwy aktualnie otwartej bazy" + +#: commands/dbcommands.c:1032 +msgid "cannot change the tablespace of the currently open database" +msgstr "nie można usunąć aktualnie otwartej bazy danych" + +#: commands/dbcommands.c:1116 +#, 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:1118 +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." + +#: 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 "" +"pewne niepotrzebne pliki mogą pozostać w starym folderze bazy danych \"%s\"" + +#: commands/dbcommands.c:1490 +msgid "permission denied to change owner of database" +msgstr "odmowa dostępu do zmiany właściciela bazy danych" + +#: commands/dbcommands.c:1802 +#, 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:1805 +#, c-format +msgid "There are %d other session(s) using the database." +msgstr "Inne sesje (%d) używają bazy danych." + +#: commands/dbcommands.c:1808 +#, c-format +msgid "There are %d prepared transaction(s) using the database." +msgstr "Przygotowane transakcje (%d) używają bazy danych." + +#: 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 wymaga parametru" + +#: 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 wymaga wartości numerycznej" + +#: commands/define.c:175 +#, c-format +msgid "%s requires a Boolean value" +msgstr "%s wymaga wartości logicznej" + +#: commands/define.c:236 +#, c-format +msgid "argument of %s must be a name" +msgstr "argument %s musi być nazwą" + +#: commands/define.c:266 +#, c-format +msgid "argument of %s must be a type name" +msgstr "argument %s musi być nazwą typu" + +#: commands/define.c:291 +#, c-format +msgid "%s requires an integer value" +msgstr "%s wymaga wartości całkowitej" + +#: commands/define.c:312 +#, c-format +msgid "invalid argument for %s: \"%s\"" +msgstr "nieprawidłowy argument dla %s: \"%s\"" + +#: commands/explain.c:153 +#, c-format +msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\"" +msgstr "nieprawidłowa wartość dla opcji EXPLAIN \"%s\": \"%s\"" + +#: commands/explain.c:159 +#, c-format +msgid "unrecognized EXPLAIN option \"%s\"" +msgstr "nieznana opcja EXPLAIN \"%s\"" + +#: commands/explain.c:166 +msgid "EXPLAIN option BUFFERS requires ANALYZE" +msgstr "opcja EXPLAIN BUFFERS wymaga ANALYZE" + +#: commands/foreigncmds.c:135 commands/foreigncmds.c:144 +#, c-format +msgid "option \"%s\" not found" +msgstr "nie znaleziono opcji \"%s\"" + +#: commands/foreigncmds.c:154 +#, c-format +msgid "option \"%s\" provided more than once" +msgstr "opcja \"%s\" wskazana więcej niż raz" + +#: commands/foreigncmds.c:224 commands/foreigncmds.c:232 +#, 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:226 +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." + +#: commands/foreigncmds.c:234 +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:241 commands/foreigncmds.c:564 +#: commands/foreigncmds.c:712 foreign/foreign.c:524 +#, c-format +msgid "foreign-data wrapper \"%s\" does not exist" +msgstr "opakowanie obcych danych \"%s\" nie istnieje" + +#: commands/foreigncmds.c:284 commands/foreigncmds.c:890 +#: commands/foreigncmds.c:978 commands/foreigncmds.c:1262 +#: foreign/foreign.c:544 +#, c-format +msgid "server \"%s\" does not exist" +msgstr "serwer \"%s\" nie istnieje" + +#: commands/foreigncmds.c:346 +#, c-format +msgid "function %s must return type \"fdw_handler\"" +msgstr "funkcja %s musi zwracać typ \"fdw_handler\"" + +#: commands/foreigncmds.c:441 +#, c-format +msgid "permission denied to create foreign-data wrapper \"%s\"" +msgstr "odmowa dostępu do tworzenia opakowania obcych danych \"%s\"" + +#: commands/foreigncmds.c:443 +msgid "Must be superuser to create a foreign-data wrapper." +msgstr "Musisz być superużytkownikiem aby tworzyć opakowanie danych obcych." + +#: commands/foreigncmds.c:454 +#, c-format +msgid "foreign-data wrapper \"%s\" already exists" +msgstr "opakowanie danych obcych \"%s\" już istnieje" + +#: commands/foreigncmds.c:554 +#, 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:556 +msgid "Must be superuser to alter a foreign-data wrapper." +msgstr "Musisz być superużytkownikiem aby zmienić opakowanie danych obcych." + +#: commands/foreigncmds.c:587 +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" + +#: commands/foreigncmds.c:601 +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" + +#: commands/foreigncmds.c:703 +#, c-format +msgid "permission denied to drop foreign-data wrapper \"%s\"" +msgstr "odmowa dostępu do skasowania opakowania danych obcych \"%s\"" + +#: commands/foreigncmds.c:705 +msgid "Must be superuser to drop a foreign-data wrapper." +msgstr "Musisz być superużytkownikiem aby skasować opakowanie danych obcych." + +#: commands/foreigncmds.c:717 +#, c-format +msgid "foreign-data wrapper \"%s\" does not exist, skipping" +msgstr "opakowanie danych obcych \"%s\" nie istnieje, pominięto" + +#: commands/foreigncmds.c:786 +#, c-format +msgid "server \"%s\" already exists" +msgstr "serwer \"%s\" już istnieje" + +#: commands/foreigncmds.c:982 +#, c-format +msgid "server \"%s\" does not exist, skipping" +msgstr "serwer \"%s\" nie istnieje, pominięto" + +#: commands/foreigncmds.c:1087 +#, 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:1173 commands/foreigncmds.c:1278 +#, 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:1265 +msgid "server does not exist, skipping" +msgstr "serwer nie istnieje, pominięto" + +#: commands/foreigncmds.c:1283 +#, 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:100 +#, c-format +msgid "SQL function cannot return shell type %s" +msgstr "funkcja SQL nie może zwracać typu powłoki %s" + +#: commands/functioncmds.c:105 +#, c-format +msgid "return type %s is only a shell" +msgstr "zwrócony typ %s jest jedynie powłoką" + +#: commands/functioncmds.c:128 commands/tablecmds.c:224 +#: commands/typecmds.c:660 commands/typecmds.c:2661 parser/parse_func.c:1502 +#: parser/parse_type.c:196 utils/adt/regproc.c:973 +#, c-format +msgid "type \"%s\" does not exist" +msgstr "typ \"%s\" nie istnieje" + +#: commands/functioncmds.c:134 parser/parse_type.c:278 +#, 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:140 +#, c-format +msgid "type \"%s\" is not yet defined" +msgstr "typ \"%s\" nie jest jeszcze zdefiniowany" + +#: commands/functioncmds.c:141 +msgid "Creating a shell type definition." +msgstr "Tworzenie definicji typu powłoki." + +#: commands/functioncmds.c:220 +#, c-format +msgid "SQL function cannot accept shell type %s" +msgstr "funkcja SQL nie może przyjmować typu powłoki %s" + +#: commands/functioncmds.c:225 +#, c-format +msgid "argument type %s is only a shell" +msgstr "typ argumentu %s jest jedynie powłoką" + +#: commands/functioncmds.c:235 +#, c-format +msgid "type %s does not exist" +msgstr "typ %s nie istnieje" + +#: commands/functioncmds.c:243 +msgid "functions cannot accept set arguments" +msgstr "funkcje nie mogą przyjmować grupy argumentów" + +#: commands/functioncmds.c:252 +msgid "VARIADIC parameter must be the last input parameter" +msgstr "parametr VARIADIC musi być ostatnim parametrem wejścia" + +#: commands/functioncmds.c:279 +msgid "VARIADIC parameter must be an array" +msgstr "parametr VARIADIC nie może być typu tablicowego" + +#: commands/functioncmds.c:319 +#, c-format +msgid "parameter name \"%s\" used more than once" +msgstr "nazwa parametru \"%s\" użyta więcej niż raz" + +#: commands/functioncmds.c:334 +msgid "only input parameters can have default values" +msgstr "tylko parametry wejścia mogą posiadać wartości domyślne" + +#: commands/functioncmds.c:347 +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:363 +msgid "cannot use subquery in parameter default value" +msgstr "nie można używać podzapytań w wartości domyślnej parametru" + +#: commands/functioncmds.c:367 +msgid "cannot use aggregate function in parameter default value" +msgstr "nie można użyć funkcji agregującej w wartości domyślnej parametru" + +#: commands/functioncmds.c:371 +msgid "cannot use window function in parameter default value" +msgstr "nie można użyć funkcji okna w wartości domyślnej parametru" + +#: commands/functioncmds.c:381 +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" + +#: commands/functioncmds.c:620 +msgid "no function body specified" +msgstr "nie określono ciała funkcji" + +#: commands/functioncmds.c:630 +msgid "no language specified" +msgstr "nie określono języka" + +#: commands/functioncmds.c:651 commands/functioncmds.c:1352 +msgid "COST must be positive" +msgstr "COST musi być dodatni" + +#: commands/functioncmds.c:659 commands/functioncmds.c:1360 +msgid "ROWS must be positive" +msgstr "ROWS musi być dodatni" + +#: commands/functioncmds.c:698 +#, c-format +msgid "unrecognized function attribute \"%s\" ignored" +msgstr "pominięto nierozpoznany atrybut \"%s\" funkcji" + +#: commands/functioncmds.c:749 +#, 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:839 commands/functioncmds.c:2019 +#: commands/proclang.c:600 commands/proclang.c:640 commands/proclang.c:754 +#, c-format +msgid "language \"%s\" does not exist" +msgstr "język \"%s\" nie istnieje" + +#: commands/functioncmds.c:841 commands/functioncmds.c:2021 +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:888 +#, 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:901 +msgid "function result type must be specified" +msgstr "wynik funkcji musi być określony" + +#: commands/functioncmds.c:936 commands/functioncmds.c:1364 +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:988 +#, c-format +msgid "function %s(%s) does not exist, skipping" +msgstr "funkcja %s(%s) nie istnieje, pominięto" + +#: commands/functioncmds.c:1008 commands/functioncmds.c:1108 +#: commands/functioncmds.c:1171 commands/functioncmds.c:1322 +#: utils/adt/ruleutils.c:1696 +#, c-format +msgid "\"%s\" is an aggregate function" +msgstr "\"%s\" jest funkcją agregującą" + +#: commands/functioncmds.c:1010 +msgid "Use DROP AGGREGATE to drop aggregate functions." +msgstr "Użyj DROP AGGREGATE aby usunąć funkcje agregujące." + +#: commands/functioncmds.c:1017 +#, c-format +msgid "removing built-in function \"%s\"" +msgstr "usuwanie wbudowanej funkcji \"%s\"" + +#: commands/functioncmds.c:1110 +msgid "Use ALTER AGGREGATE to rename aggregate functions." +msgstr "Użyj ALTER AGGREGATE aby zmienić nazwy funkcji agregujących." + +#: commands/functioncmds.c:1173 +msgid "Use ALTER AGGREGATE to change owner of aggregate functions." +msgstr "Użyj ALTER AGGREGATE aby zmienić właściciela funkcji agregujących." + +#: commands/functioncmds.c:1512 +#, c-format +msgid "source data type %s is a pseudo-type" +msgstr "źródłowy typ danych %s jest pseudo-typem" + +#: commands/functioncmds.c:1518 +#, c-format +msgid "target data type %s is a pseudo-type" +msgstr "docelowy typ danych %s jest pseudo-typem" + +#: commands/functioncmds.c:1555 +msgid "cast function must take one to three arguments" +msgstr "funkcja rzutująca musi przyjmować od jednego do trzech argumentów" + +#: commands/functioncmds.c:1559 +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" + +#: commands/functioncmds.c:1563 +msgid "second argument of cast function must be type integer" +msgstr "drugi argument funkcji rzutującej musi być typu całkowitego" + +#: commands/functioncmds.c:1567 +msgid "third argument of cast function must be type boolean" +msgstr "trzeci argument funkcji rzutującej musi być typu logicznego" + +#: commands/functioncmds.c:1571 +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" + +#: commands/functioncmds.c:1582 +msgid "cast function must not be volatile" +msgstr "funkcja rzutująca nie może być zmienna" + +#: commands/functioncmds.c:1587 +msgid "cast function must not be an aggregate function" +msgstr "funkcja rzutująca nie może być funkcją agregującą" + +#: commands/functioncmds.c:1591 +msgid "cast function must not be a window function" +msgstr "funkcja rzutująca nie może być funkcją okna" + +#: commands/functioncmds.c:1595 +msgid "cast function must not return a set" +msgstr "funkcja rzutująca nie może zwracać grupy" + +#: commands/functioncmds.c:1621 +msgid "must be superuser to create a cast WITHOUT FUNCTION" +msgstr "musisz być superużytkownikiem aby utworzyć rzutowanie WITHOUT FUNCTION" + +#: commands/functioncmds.c:1636 +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:1651 +msgid "composite data types are not binary-compatible" +msgstr "złożone typy danych nie są binarnie kompatybilne" + +#: commands/functioncmds.c:1657 +msgid "enum data types are not binary-compatible" +msgstr "enumeracyjne typy danych nie są binarnie kompatybilne" + +#: commands/functioncmds.c:1663 +msgid "array data types are not binary-compatible" +msgstr "tablicowe typy danych nie są binarnie kompatybilne" + +#: commands/functioncmds.c:1680 +msgid "domain data types must not be marked binary-compatible" +msgstr "" +"domenowe typy danych nie mogą być zaznaczone jako binarnie kompatybilne" + +#: commands/functioncmds.c:1690 +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:1723 +#, 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:1803 +#, 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/functioncmds.c:1841 +#, 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:1929 +#, c-format +msgid "function \"%s\" already exists in schema \"%s\"" +msgstr "funkcja \"%s\" już istnieje w schemacie \"%s\"" + +#: commands/functioncmds.c:2003 +msgid "no inline code specified" +msgstr "nie określono kodu wbudowanego" + +#: commands/functioncmds.c:2051 +#, c-format +msgid "language \"%s\" does not support inline code execution" +msgstr "język \"%s\" nie obsługuje wykonywania kodu wbudowanego" + +#: commands/indexcmds.c:163 +msgid "must specify at least one column" +msgstr "musi określać przynajmniej jedną kolumnę" + +#: commands/indexcmds.c:167 +#, 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:195 +#, c-format +msgid "cannot create index on foreign table \"%s\"" +msgstr "nie można utworzyć indeksu na tabeli obcej \"%s\"" + +#: commands/indexcmds.c:210 +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:265 commands/tablecmds.c:479 commands/tablecmds.c:7882 +msgid "only shared relations can be placed in pg_global tablespace" +msgstr "" +"tylko relacje współdzielone mogą być umieszczone w przestrzeni tabel " +"pg_global" + +#: commands/indexcmds.c:296 +msgid "substituting access method \"gist\" for obsolete method \"rtree\"" +msgstr "zastąpienie metodą dostępu \"gist\" przestarzałej metody \"rtree\"" + +#: commands/indexcmds.c:304 commands/opclasscmds.c:369 +#: commands/opclasscmds.c:790 commands/opclasscmds.c:2203 +#, c-format +msgid "access method \"%s\" does not exist" +msgstr "metoda dostępu \"%s\" nie istnieje" + +#: commands/indexcmds.c:313 +#, 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:318 +#, 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:323 +#, 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:399 +#, 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:763 +msgid "cannot use subquery in index predicate" +msgstr "nie można używać podzapytań w predykacie indeksu" + +#: commands/indexcmds.c:767 +msgid "cannot use aggregate in index predicate" +msgstr "nie można używać agregatu w predykacie indeksu" + +#: commands/indexcmds.c:776 +msgid "functions in index predicate must be marked IMMUTABLE" +msgstr "funkcje w predykacie indeksu muszą być oznaczone jako IMMUTABLE" + +#: commands/indexcmds.c:841 parser/parse_utilcmd.c:1704 +#, c-format +msgid "column \"%s\" named in key does not exist" +msgstr "kolumna \"%s\" nazwana w kluczu nie istnieje" + +#: commands/indexcmds.c:894 +msgid "cannot use subquery in index expression" +msgstr "nie można użyć podzapytania w wyrażeniu indeksu" + +#: commands/indexcmds.c:898 +msgid "cannot use aggregate function in index expression" +msgstr "nie można użyć funkcji agregującej w wyrażeniu indeksu" + +#: commands/indexcmds.c:909 +msgid "functions in index expression must be marked IMMUTABLE" +msgstr "funkcje w wyrażeniu indeksu muszą być oznaczone jako IMMUTABLE" + +#: commands/indexcmds.c:930 +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:938 commands/typecmds.c:843 parser/parse_expr.c:2143 +#: parser/parse_type.c:492 parser/parse_utilcmd.c:2556 +#, c-format +msgid "collations are not supported by type %s" +msgstr "rzutowania nie są obsługiwane przez typ %s" + +#: commands/indexcmds.c:976 +#, c-format +msgid "operator %s is not commutative" +msgstr "operator %s nie jest przemienny" + +#: commands/indexcmds.c:978 +msgid "Only commutative operators can be used in exclusion constraints." +msgstr "" +"Tylko operatory przemienne mogą być używane w ograniczeniach wykluczających." + +#: commands/indexcmds.c:1004 +#, 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:1007 +#, fuzzy +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." + +#: commands/indexcmds.c:1042 +#, 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:1047 +#, 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:1103 +#, 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:1105 +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." + +#: commands/indexcmds.c:1134 commands/indexcmds.c:1142 +#: commands/opclasscmds.c:212 commands/opclasscmds.c:1568 +#, 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:1155 +#, c-format +msgid "operator class \"%s\" does not accept data type %s" +msgstr "klasa operatora \"%s\" nie akceptuje typu danych %s" + +#: commands/indexcmds.c:1245 +#, 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:1586 +#, c-format +msgid "table \"%s\" has no indexes" +msgstr "tabela \"%s\" nie posiada indeksów" + +#: commands/indexcmds.c:1614 +msgid "can only reindex the currently open database" +msgstr "nie można przeindeksować aktualnie otwartej bazy danych" + +#: commands/indexcmds.c:1699 +#, c-format +msgid "table \"%s.%s\" was reindexed" +msgstr "tabela \"%s.%s\" została przeindeksowana" + +#: commands/lockcmds.c:93 +#, c-format +msgid "could not obtain lock on relation \"%s\"" +msgstr "nie można nałożyć blokady na relację \"%s\"" + +#: commands/lockcmds.c:98 +#, c-format +msgid "could not obtain lock on relation with OID %u" +msgstr "nie można nałożyć blokady na relację z OID %u" + +#: 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 "rodzina operatora \"%s\" nie istnieje dla metody dostępu \"%s\"" + +#: commands/opclasscmds.c:271 +#, 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:408 +msgid "must be superuser to create an operator class" +msgstr "musisz być superużytkownikiem aby utworzyć klasę operatora" + +#: 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 "niepoprawny numer operatora %d, musi być pomiędzy 1 a %d" + +#: 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 "niepoprawny numer procedury %d, musi być pomiędzy 1 a %d" + +#: commands/opclasscmds.c:561 +msgid "storage type specified more than once" +msgstr "typ składowania określony więcej niż raz" + +#: commands/opclasscmds.c:589 +#, 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\"" + +#: commands/opclasscmds.c:605 +#, 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:633 +#, 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:636 +#, c-format +msgid "Operator class \"%s\" already is the default." +msgstr "Klasa operatora \"%s\" jest już domyślna." + +#: commands/opclasscmds.c:760 +msgid "must be superuser to create an operator family" +msgstr "musisz być superużytkownikiem aby utworzyć rodzinę operatora" + +#: commands/opclasscmds.c:816 +msgid "must be superuser to alter an operator family" +msgstr "musisz być superużytkownikiem aby zmienić rodzinę operatora" + +#: commands/opclasscmds.c:880 +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:944 +msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY" +msgstr "STORAGE nie może być wskazana w ALTER OPERATOR FAMILY" + +#: commands/opclasscmds.c:1060 +msgid "one or two argument types must be specified" +msgstr "jeden lub wiele typów argumentów musi być wskazane" + +#: commands/opclasscmds.c:1086 +msgid "index operators must be binary" +msgstr "operatory indeksowe muszą być binarne" + +#: commands/opclasscmds.c:1111 +#, 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:1124 +msgid "index search operators must return boolean" +msgstr "operatory przeszukiwania indeksu muszą zwracać wartości logiczne" + +#: commands/opclasscmds.c:1163 +msgid "btree procedures must have two arguments" +msgstr "procedury btree muszą być dwuargumentowe" + +#: commands/opclasscmds.c:1167 +msgid "btree procedures must return integer" +msgstr "procedury btree muszą zwracać wartości całkowite" + +#: commands/opclasscmds.c:1182 +msgid "hash procedures must have one argument" +msgstr "procedury haszujące muszą być jednoargumentowe" + +#: commands/opclasscmds.c:1186 +msgid "hash procedures must return integer" +msgstr "procedury haszujące muszą zwracać wartości całkowite" + +#: commands/opclasscmds.c:1211 +msgid "associated data types must be specified for index support procedure" +msgstr "" +"powiązane typy danych muszą być określone dla procedury wsparcia indeksu" + +#: commands/opclasscmds.c:1237 +#, 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:1244 +#, 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:1293 +#, 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:1406 +#, 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:1493 +#, 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:1533 +#, 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:1779 +#, 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\"" + +#: commands/opclasscmds.c:1868 +#, 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\"" + +#: commands/operatorcmds.c:100 +msgid "=> is deprecated as an operator name" +msgstr "=> jest przestarzały jako nazwa operatora" + +#: commands/operatorcmds.c:101 +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." + +#: commands/operatorcmds.c:122 commands/operatorcmds.c:130 +msgid "SETOF type not allowed for operator argument" +msgstr "typ SETOF niedozwolony jako argument operatora" + +#: commands/operatorcmds.c:158 +#, c-format +msgid "operator attribute \"%s\" not recognized" +msgstr "atrybut operatora \"%s\" nie rozpoznany" + +#: commands/operatorcmds.c:168 +msgid "operator procedure must be specified" +msgstr "musi być wskazana procedura operatora" + +#: commands/operatorcmds.c:179 +msgid "at least one of leftarg or rightarg must be specified" +msgstr "musi być wskazany co najmniej jeden lewyarg lub prawyarg" + +#: commands/operatorcmds.c:228 +#, c-format +msgid "restriction estimator function %s must return type \"float8\"" +msgstr "funkcja estymatora ograniczenia %s musi zwracać typ \"float8\"" + +#: commands/operatorcmds.c:267 +#, c-format +msgid "join estimator function %s must return type \"float8\"" +msgstr "funkcja estymatora złączenia %s musi zwracać typ \"float8\"" + +#: commands/operatorcmds.c:318 +#, c-format +msgid "operator %s does not exist, skipping" +msgstr "operator %s nie istnieje, pominięto" + +#: commands/portalcmds.c:61 commands/portalcmds.c:160 +#: commands/portalcmds.c:212 +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:66 utils/adt/xml.c:2046 utils/adt/xml.c:2210 +#, c-format +msgid "cursor \"%s\" does not exist" +msgstr "kursor \"%s\" nie istnieje" + +#: commands/portalcmds.c:336 tcop/pquery.c:738 tcop/pquery.c:1401 +#, c-format +msgid "portal \"%s\" cannot be run" +msgstr "portal \"%s\" nie może być uruchomiony" + +#: commands/portalcmds.c:409 +msgid "could not reposition held cursor" +msgstr "nie można zmienić pozycji trzymanego kursora" + +#: commands/prepare.c:71 +msgid "invalid statement name: must not be empty" +msgstr "niepoprawna nazwa wyrażenia: nie może być pusta" + +#: 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 "nie można określić typu danych parametru $%d" + +#: commands/prepare.c:140 +msgid "utility statements cannot be prepared" +msgstr "nie można przygotować wyrażeń narzędzia" + +#: commands/prepare.c:240 commands/prepare.c:247 commands/prepare.c:706 +msgid "prepared statement is not a SELECT" +msgstr "przygotowane wyrażenie to nie SELECT" + +#: commands/prepare.c:314 +#, c-format +msgid "wrong number of parameters for prepared statement \"%s\"" +msgstr "niepoprawna liczba parametrów dla przygotowanego wyrażenia \"%s\"" + +#: commands/prepare.c:316 +#, c-format +msgid "Expected %d parameters but got %d." +msgstr "Oczekiwano %d parametrów ale otrzymano %d." + +#: commands/prepare.c:345 +msgid "cannot use subquery in EXECUTE parameter" +msgstr "nie można używać podzapytań w parametrze EXECUTE" + +#: commands/prepare.c:349 +msgid "cannot use aggregate function in EXECUTE parameter" +msgstr "nie można użyć funkcji agregującej w parametrze EXECUTE" + +#: commands/prepare.c:353 +msgid "cannot use window function in EXECUTE parameter" +msgstr "nie można użyć funkcji okna w parametrze EXECUTE" + +#: commands/prepare.c:366 +#, c-format, fuzzy +msgid "parameter $%d of type %s cannot be coerced to the expected type %s" +msgstr "parametr $%d typu %s nie może być nagięty do oczekiwanego typu %s" + +#: commands/prepare.c:467 +#, c-format +msgid "prepared statement \"%s\" already exists" +msgstr "przygotowane wyrażenie \"%s\" już istnieje" + +#: commands/prepare.c:525 +#, c-format +msgid "prepared statement \"%s\" does not exist" +msgstr "przygotowane wyrażenie \"%s\" nie istnieje" + +#: commands/prepare.c:751 commands/extension.c:1675 commands/extension.c:1784 +#: commands/extension.c:1977 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:1410 +#: utils/mmgr/portalmem.c:946 utils/fmgr/funcapi.c:60 +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" + +#: commands/prepare.c:755 commands/extension.c:1679 commands/extension.c:1788 +#: commands/extension.c:1981 foreign/foreign.c:355 +#: replication/walsender.c:1414 utils/mmgr/portalmem.c:950 +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" + +#: commands/user.c:143 +msgid "SYSID can no longer be specified" +msgstr "SYSID nie może być dłużej określony" + +#: commands/user.c:284 +msgid "must be superuser to create superusers" +msgstr "musisz być superużytkownikiem aby tworzyć superużytkowników" + +#: commands/user.c:291 +msgid "must be superuser to create replication users" +msgstr "musisz być superużytkownikiem aby tworzyć użytkowników replikacji" + +#: commands/user.c:298 +msgid "permission denied to create role" +msgstr "odmowa dostępu do tworzenia roli" + +#: commands/user.c:305 commands/user.c:1087 +#, c-format +msgid "role name \"%s\" is reserved" +msgstr "nazwa roli \"%s\" jest zarezerwowana" + +#: commands/user.c:318 commands/user.c:1081 +#, c-format +msgid "role \"%s\" already exists" +msgstr "rola \"%s\" już istnieje" + +#: 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/init/miscinit.c:432 utils/adt/acl.c:4822 +#, c-format +msgid "role \"%s\" does not exist" +msgstr "rola \"%s\" nie istnieje" + +#: commands/user.c:636 commands/user.c:842 commands/user.c:1321 +#: commands/user.c:1458 +msgid "must be superuser to alter superusers" +msgstr "musisz być superużytkownikiem aby zmieniać superużytkowników" + +#: commands/user.c:643 +msgid "must be superuser to alter replication users" +msgstr "musisz być superużytkownikiem aby zmieniać użytkowników replikacji" + +#: commands/user.c:659 commands/user.c:850 +msgid "permission denied" +msgstr "odmowa dostępu" + +#: commands/user.c:878 +msgid "permission denied to drop role" +msgstr "odmowa dostępu do skasowania roli" + +#: commands/user.c:910 +#, c-format +msgid "role \"%s\" does not exist, skipping" +msgstr "rola \"%s\" nie istnieje, pominięto" + +#: commands/user.c:922 commands/user.c:926 +msgid "current user cannot be dropped" +msgstr "aktualny użytkownik nie może być usunięty" + +#: commands/user.c:930 +msgid "session user cannot be dropped" +msgstr "użytkownik sesji nie może być usunięty" + +#: commands/user.c:941 +msgid "must be superuser to drop superusers" +msgstr "musisz być superużytkownikiem aby usuwać superużytkowników" + +#: commands/user.c:954 +#, 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" + +#: commands/user.c:1071 +msgid "session user cannot be renamed" +msgstr "nazwa użytkownika sesji nie może być zmieniona" + +#: commands/user.c:1075 +msgid "current user cannot be renamed" +msgstr "nazwa aktualnego użytkownika nie może być zmieniona" + +#: commands/user.c:1098 +msgid "must be superuser to rename superusers" +msgstr "musisz być superużytkownikiem aby zmieniać nazwy superużytkowników" + +#: commands/user.c:1105 +msgid "permission denied to rename role" +msgstr "odmowa dostępu do zmiany nazwy roli" + +#: commands/user.c:1126 +msgid "MD5 password cleared because of role rename" +msgstr "hasło MD5 zostało wyczyszczone ponieważ zmieniono nazwę roli" + +#: commands/user.c:1182 +msgid "column names cannot be included in GRANT/REVOKE ROLE" +msgstr "nazwy kolumn nie mogą być zawarte w GRANT/REVOKE ROLE" + +#: commands/user.c:1220 +msgid "permission denied to drop objects" +msgstr "odmowa dostępu do usunięcia obiektów" + +#: commands/user.c:1247 commands/user.c:1256 +msgid "permission denied to reassign objects" +msgstr "odmowa dostępu do ponownego przypisania obiektów" + +#: commands/user.c:1329 commands/user.c:1466 +#, c-format +msgid "must have admin option on role \"%s\"" +msgstr "musisz mieć opcję administratora na roli \"%s\"" + +#: commands/user.c:1337 +msgid "must be superuser to set grantor" +msgstr "musisz być superużytkownikiem by ustawić prawo nadawania uprawnień" + +#: commands/user.c:1362 +#, c-format +msgid "role \"%s\" is a member of role \"%s\"" +msgstr "rola \"%s\" jest członkiem roli \"%s\"" + +#: commands/user.c:1377 +#, c-format +msgid "role \"%s\" is already a member of role \"%s\"" +msgstr "rola \"%s\" jest już członkiem roli \"%s\"" + +#: commands/user.c:1488 +#, c-format +msgid "role \"%s\" is not a member of role \"%s\"" +msgstr "rola \"%s\" nie jest członkiem roli \"%s\"" + +#: commands/proclang.c:93 +msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters" +msgstr "użycie informacji pg_pltemplate zamiast parametrów CREATE LANGUAGE" + +#: commands/proclang.c:103 +#, c-format +msgid "must be superuser to create procedural language \"%s\"" +msgstr "musisz być superużytkownikiem aby stworzyć język proceduralny \"%s\"" + +#: commands/proclang.c:123 commands/proclang.c:279 +#, c-format +msgid "function %s must return type \"language_handler\"" +msgstr "funkcja %s musi zwracać typ \"language_handler\"" + +#: commands/proclang.c:243 +#, c-format +msgid "unsupported language \"%s\"" +msgstr "nieobsługiwany język \"%s\"" + +#: commands/proclang.c:245 +msgid "The supported languages are listed in the pg_pltemplate system catalog." +msgstr "Obsługiwane języki są wymienione w katalogu systemowym pg_pltemplate." + +#: commands/proclang.c:253 +msgid "must be superuser to create custom procedural language" +msgstr "musisz być superużytkownikiem aby stworzyć własny język proceduralny" + +#: commands/proclang.c:272 +#, 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\"" + +#: commands/proclang.c:357 commands/proclang.c:606 +#, c-format +msgid "language \"%s\" already exists" +msgstr "język \"%s\" już istnieje" + +#: commands/proclang.c:537 +#, c-format +msgid "language \"%s\" does not exist, skipping" +msgstr "język \"%s\" nie istnieje, pominięto" + +#: commands/schemacmds.c:82 commands/schemacmds.c:275 +#, c-format +msgid "unacceptable schema name \"%s\"" +msgstr "nieprawidłowa nazwa schematu \"%s\"" + +#: commands/schemacmds.c:83 commands/schemacmds.c:276 +msgid "The prefix \"pg_\" is reserved for system schemas." +msgstr "Prefiks \"pg_\" jest zarezerwowany dla schematów systemowych." + +#: commands/schemacmds.c:186 +#, c-format +msgid "schema \"%s\" does not exist, skipping" +msgstr "schemat \"%s\" nie istnieje, pominięto" + +#: commands/sequence.c:126 +msgid "unlogged sequences are not supported" +msgstr "nielogowane sekwencje nie są obsługiwane" + +#: commands/sequence.c:634 +#, c-format +msgid "nextval: reached maximum value of sequence \"%s\" (%s)" +msgstr "nextval: osiągnięto maksymalną wartość sekwencji \"%s\" (%s)" + +#: commands/sequence.c:657 +#, c-format +msgid "nextval: reached minimum value of sequence \"%s\" (%s)" +msgstr "nextval: osiągnięto minimalną wartość sekwencji \"%s\" (%s)" + +#: commands/sequence.c:755 +#, 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:774 commands/sequence.c:780 +msgid "lastval is not yet defined in this session" +msgstr "lastval nie jest jeszcze zdefiniowana w tej sesji" + +#: 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:1017 lib/stringinfo.c:266 libpq/auth.c:1022 +#: libpq/auth.c:1382 libpq/auth.c:1450 libpq/auth.c:1852 +#: 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 storage/buffer/buf_init.c:154 +#: storage/buffer/localbuf.c:350 storage/file/fd.c:358 storage/file/fd.c:742 +#: storage/file/fd.c:860 postmaster/postmaster.c:2004 +#: postmaster/postmaster.c:2035 postmaster/postmaster.c:3232 +#: postmaster/postmaster.c:3916 postmaster/postmaster.c:3997 +#: postmaster/postmaster.c:4611 utils/init/miscinit.c:150 +#: utils/init/miscinit.c:171 utils/init/miscinit.c:181 +#: 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:416 utils/mmgr/aset.c:587 +#: utils/mmgr/aset.c:765 utils/mmgr/aset.c:966 utils/fmgr/dfmgr.c:224 +#: utils/hash/dynahash.c:364 utils/hash/dynahash.c:436 +#: utils/hash/dynahash.c:932 utils/mb/mbutils.c:374 utils/mb/mbutils.c:675 +#: utils/misc/guc.c:3298 utils/misc/guc.c:3311 utils/misc/guc.c:3324 +#: utils/misc/tzparser.c:455 +msgid "out of memory" +msgstr "brak pamięci" + +#: commands/sequence.c:1206 +msgid "INCREMENT must not be zero" +msgstr "INCREMENT nie może być zerowy" + +#: commands/sequence.c:1252 +#, c-format +msgid "MINVALUE (%s) must be less than MAXVALUE (%s)" +msgstr "MINVALUE (%s) musi być mniejsza niż MAXVALUE (%s)" + +#: commands/sequence.c:1277 +#, 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:1289 +#, 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:1320 +#, 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:1332 +#, 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:1347 +#, c-format +msgid "CACHE (%s) must be greater than zero" +msgstr "CACHE (%s) musi być większa niż zero" + +#: commands/sequence.c:1378 +msgid "invalid OWNED BY option" +msgstr "nieprawidłowa opcja OWNED BY" + +#: commands/sequence.c:1379 +msgid "Specify OWNED BY table.column or OWNED BY NONE." +msgstr "Wskaż OWNED BY tabela.kolumna lub OWNED BY NONE." + +#: commands/sequence.c:1401 commands/tablecmds.c:5525 +#, c-format +msgid "referenced relation \"%s\" is not a table" +msgstr "wskazywana relacja \"%s\" nie jest tabelą" + +#: commands/sequence.c:1408 +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:1412 +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:200 +#, c-format +msgid "table \"%s\" does not exist" +msgstr "tabela \"%s\" nie istnieje" + +#: commands/tablecmds.c:201 +#, c-format +msgid "table \"%s\" does not exist, skipping" +msgstr "tabela \"%s\" nie istnieje, pominięto" + +#: commands/tablecmds.c:203 +msgid "Use DROP TABLE to remove a table." +msgstr "Użyj DROP TABLE aby skasować tabelę." + +#: commands/tablecmds.c:206 +#, c-format +msgid "sequence \"%s\" does not exist" +msgstr "sekwencja \"%s\" nie istnieje" + +#: commands/tablecmds.c:207 +#, c-format +msgid "sequence \"%s\" does not exist, skipping" +msgstr "sekwencja \"%s\" nie istnieje, pominięto" + +#: commands/tablecmds.c:209 +msgid "Use DROP SEQUENCE to remove a sequence." +msgstr "Użyj DROP SEQUENCE aby usunąć sekwencję." + +#: commands/tablecmds.c:212 +#, c-format +msgid "view \"%s\" does not exist" +msgstr "widok \"%s\" nie istnieje" + +#: commands/tablecmds.c:213 +#, c-format +msgid "view \"%s\" does not exist, skipping" +msgstr "widok \"%s\" nie istnieje, pominięto" + +#: commands/tablecmds.c:215 +msgid "Use DROP VIEW to remove a view." +msgstr "Użyj DROP VIEW aby usunąć widok." + +#: commands/tablecmds.c:218 parser/parse_utilcmd.c:1449 +#, c-format +msgid "index \"%s\" does not exist" +msgstr "indeks \"%s\" nie istnieje" + +#: commands/tablecmds.c:219 +#, c-format +msgid "index \"%s\" does not exist, skipping" +msgstr "indeks \"%s\" nie istnieje, pominięto" + +#: commands/tablecmds.c:221 +msgid "Use DROP INDEX to remove an index." +msgstr "Użyj DROP INDEX aby usunąć indeks." + +#: commands/tablecmds.c:225 commands/typecmds.c:666 +#, c-format +msgid "type \"%s\" does not exist, skipping" +msgstr "typ \"%s\" nie istnieje, pominięto" + +#: commands/tablecmds.c:226 +#, c-format +msgid "\"%s\" is not a type" +msgstr "\"%s\" nie jest typem" + +#: commands/tablecmds.c:227 +msgid "Use DROP TYPE to remove a type." +msgstr "Użyj DROP TYPE aby usunąć typ." + +#: commands/tablecmds.c:230 commands/tablecmds.c:8888 +#, c-format +msgid "foreign table \"%s\" does not exist" +msgstr "tabela obca \"%s\" nie istnieje" + +#: commands/tablecmds.c:231 +#, c-format +msgid "foreign table \"%s\" does not exist, skipping" +msgstr "tabela obca \"%s\" nie istnieje, pominięto" + +#: commands/tablecmds.c:233 +msgid "Use DROP FOREIGN TABLE to remove a foreign table." +msgstr "Użyj DROP FOREIGN TABLE aby usunąć tabelę obcą." + +#: commands/tablecmds.c:425 executor/execMain.c:2416 +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:429 +msgid "constraints on foreign tables are not supported" +msgstr "ograniczenia na tabelach obcych nie są obsługiwane" + +#: commands/tablecmds.c:447 executor/execMain.c:2434 +msgid "cannot create temporary table within security-restricted operation" +msgstr "" +"nie można utworzyć tabeli tymczasowej operacją o ograniczonym bezpieczeństwie" + +#: commands/tablecmds.c:545 commands/tablecmds.c:4351 +msgid "default values on foreign tables are not supported" +msgstr "domyślne wartości dla tabel obcych nie są obsługiwane" + +#: commands/tablecmds.c:813 commands/tablecmds.c:1142 +#: commands/tablecmds.c:2070 commands/tablecmds.c:3807 +#: commands/tablecmds.c:5531 commands/trigger.c:192 commands/trigger.c:1098 +#: tcop/utility.c:95 rewrite/rewriteDefine.c:263 +#, c-format +msgid "permission denied: \"%s\" is a system catalog" +msgstr "odmowa dostępu: \"%s\" jest katalogiem systemowym" + +#: commands/tablecmds.c:925 +#, c-format +msgid "truncate cascades to table \"%s\"" +msgstr "obcięcie kaskadowe do tabeli \"%s\"" + +#: commands/tablecmds.c:1152 +msgid "cannot truncate temporary tables of other sessions" +msgstr "nie można obcinać tabel tymczasowych z innych sesji" + +#: commands/tablecmds.c:1354 parser/parse_utilcmd.c:621 +#: parser/parse_utilcmd.c:1667 +#, c-format +msgid "inherited relation \"%s\" is not a table" +msgstr "dziedziczona relacja \"%s\" nie jest tabelą" + +#: commands/tablecmds.c:1361 commands/tablecmds.c:8114 +#, c-format +msgid "cannot inherit from temporary relation \"%s\"" +msgstr "nie można dziedziczyć z tymczasowej relacji \"%s\"" + +#: commands/tablecmds.c:1378 commands/tablecmds.c:8142 +#, 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:1434 +#, c-format +msgid "merging multiple inherited definitions of column \"%s\"" +msgstr "łączenie wielu dziedziczonych definicji kolumny \"%s\"" + +#: commands/tablecmds.c:1442 +#, c-format +msgid "inherited column \"%s\" has a type conflict" +msgstr "kolumna dziedziczona \"%s\" jest w konflikcie typów" + +#: commands/tablecmds.c:1444 commands/tablecmds.c:1465 +#: commands/tablecmds.c:1630 commands/tablecmds.c:1652 +#: parser/parse_coerce.c:1514 parser/parse_coerce.c:1534 +#: parser/parse_coerce.c:1579 parser/parse_param.c:217 +#, c-format +msgid "%s versus %s" +msgstr "%s kontra %s" + +#: commands/tablecmds.c:1451 +#, c-format +msgid "inherited column \"%s\" has a collation conflict" +msgstr "kolumna dziedziczona \"%s\" jest konflikcie porównań" + +#: commands/tablecmds.c:1453 commands/tablecmds.c:1640 +#: commands/tablecmds.c:4220 +#, c-format +msgid "\"%s\" versus \"%s\"" +msgstr "\"%s\" kontra \"%s\"" + +#: commands/tablecmds.c:1463 +#, c-format +msgid "inherited column \"%s\" has a storage parameter conflict" +msgstr "kolumna dziedziczona \"%s\" jest konflikcie parametrów składowania" + +#: commands/tablecmds.c:1620 +#, c-format +msgid "merging column \"%s\" with inherited definition" +msgstr "połączenie kolumny \"%s\" z dziedziczoną definicją" + +#: commands/tablecmds.c:1628 +#, c-format +msgid "column \"%s\" has a type conflict" +msgstr "kolumna \"%s\" jest w konflikcie typów" + +#: commands/tablecmds.c:1638 +#, c-format +msgid "column \"%s\" has a collation conflict" +msgstr "kolumna \"%s\" jest w konflikcie porównań" + +#: commands/tablecmds.c:1650 +#, c-format +msgid "column \"%s\" has a storage parameter conflict" +msgstr "kolumna \"%s\" jest w konflikcie parametrów składowania" + +#: commands/tablecmds.c:1702 +#, c-format +msgid "column \"%s\" inherits conflicting default values" +msgstr "kolumna \"%s\" dziedziczy sprzeczne wartości domyślne" + +#: commands/tablecmds.c:1704 +msgid "To resolve the conflict, specify a default explicitly." +msgstr "Aby rozwiązać konflikt, wskaż wyraźnie ustawienie domyślne." + +#: commands/tablecmds.c:1751 +#, 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" + +#: commands/tablecmds.c:2041 +msgid "cannot rename column of typed table" +msgstr "nie można zmienić nazwy kolumny tabeli typizowanej" + +#: commands/tablecmds.c:2058 +#, c-format +msgid "\"%s\" is not a table, view, composite type, index or foreign table" +msgstr "" +"\"%s\" nie jest tabelą, widokiem, typem złożonym, indeksem ani tabelą obcą" + +#: commands/tablecmds.c:2124 +#, 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" + +#: commands/tablecmds.c:2156 +#, c-format +msgid "cannot rename system column \"%s\"" +msgstr "nie można zmienić nazwy kolumny systemowej \"%s\"" + +#: commands/tablecmds.c:2171 +#, c-format +msgid "cannot rename inherited column \"%s\"" +msgstr "nie można zmienić nazwy kolumny dziedziczonej \"%s\"" + +#: commands/tablecmds.c:2182 commands/tablecmds.c:4264 +#, c-format +msgid "column \"%s\" of relation \"%s\" already exists" +msgstr "kolumna \"%s\" relacji \"%s\" już istnieje" + +#: commands/tablecmds.c:2271 commands/tablecmds.c:7438 +#: commands/tablecmds.c:9020 +msgid "Use ALTER TYPE instead." +msgstr "W zamian użyj ALTER TYPE." + +#. translator: first %s is a SQL command, eg ALTER TABLE +#: commands/tablecmds.c:2394 +#, 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" + +#. translator: first %s is a SQL command, eg ALTER TABLE +#: commands/tablecmds.c:2403 +#, 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:2502 +#, c-format +msgid "\"%s\" is not a composite type" +msgstr "\"%s\" nie jest typem złożonym" + +#: commands/tablecmds.c:3327 +#, c-format +msgid "cannot rewrite system relation \"%s\"" +msgstr "nie można nadpisać relacji systemowej \"%s\"" + +#: commands/tablecmds.c:3337 +msgid "cannot rewrite temporary tables of other sessions" +msgstr "nie można nadpisać tabel tymczasowych z innych sesji" + +#: commands/tablecmds.c:3562 +#, c-format +msgid "rewriting table \"%s\"" +msgstr "nadpisanie tabeli \"%s\"" + +#: commands/tablecmds.c:3566 +#, c-format +msgid "verifying table \"%s\"" +msgstr "sprawdzanie tabeli \"%s\"" + +#: commands/tablecmds.c:3673 +#, c-format +msgid "column \"%s\" contains null values" +msgstr "kolumna \"%s\" zawiera puste wartości" + +#: commands/tablecmds.c:3687 +#, 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:3828 commands/tablecmds.c:4778 +#, c-format +msgid "\"%s\" is not a table or index" +msgstr "\"%s\" nie jest tabelą ani indeksem" + +#: commands/tablecmds.c:3831 commands/trigger.c:186 commands/trigger.c:1092 +#: rewrite/rewriteDefine.c:257 +#, c-format +msgid "\"%s\" is not a table or view" +msgstr "\"%s\" nie jest tabelą ani widokiem" + +#: commands/tablecmds.c:3834 +#, c-format +msgid "\"%s\" is not a table or foreign table" +msgstr "\"%s\" nie jest tabelą ani tabelą obcą" + +#: commands/tablecmds.c:3837 +#, 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:3847 +#, c-format +msgid "\"%s\" is of the wrong type" +msgstr "\"%s\" jest niepoprawnego typu" + +#: commands/tablecmds.c:3996 commands/tablecmds.c:4003 +#, 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:4010 +#, 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" + +#: commands/tablecmds.c:4017 +#, 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" + +#: commands/tablecmds.c:4079 +#, 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" + +#: commands/tablecmds.c:4081 +msgid "Use ALTER ... CASCADE to alter the typed tables too." +msgstr "Użyj ALTER ... CASCADE aby zmienić również tabele typizowane." + +#: commands/tablecmds.c:4125 +#, c-format +msgid "type %s is not a composite type" +msgstr "typ %s nie jest typem złożonym" + +#: commands/tablecmds.c:4151 +msgid "cannot add column to typed table" +msgstr "nie dodać kolumny tabeli typizowanej" + +#: commands/tablecmds.c:4212 commands/tablecmds.c:8296 +#, c-format +msgid "child table \"%s\" has different type for column \"%s\"" +msgstr "tabela potomna \"%s\" posiada inny typ kolumny \"%s\"" + +#: commands/tablecmds.c:4218 commands/tablecmds.c:8303 +#, 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:4228 +#, c-format +msgid "child table \"%s\" has a conflicting \"%s\" column" +msgstr "tabela potomna \"%s\" posiada sprzeczną kolumnę \"%s\"" + +#: commands/tablecmds.c:4240 +#, c-format +msgid "merging definition of column \"%s\" for child \"%s\"" +msgstr "łączenie definicji kolumny \"%s\" dla podrzędnej \"%s\"" + +#: commands/tablecmds.c:4470 +msgid "column must be added to child tables too" +msgstr "kolumna musi być dodana również do tabel podrzędnych" + +#: commands/tablecmds.c:4600 commands/tablecmds.c:4690 +#: commands/tablecmds.c:4735 commands/tablecmds.c:4831 +#: commands/tablecmds.c:4875 commands/tablecmds.c:4954 +#: commands/tablecmds.c:6656 +#, c-format +msgid "cannot alter system column \"%s\"" +msgstr "nie można zmieniać kolumny systemowej \"%s\"" + +#: commands/tablecmds.c:4634 +#, c-format +msgid "column \"%s\" is in a primary key" +msgstr "kolumna \"%s\" jest w kluczu głównym" + +#: commands/tablecmds.c:4805 +#, c-format +msgid "statistics target %d is too low" +msgstr "Próbka statystyczna %d jest zbyt mała" + +#: commands/tablecmds.c:4813 +#, c-format +msgid "lowering statistics target to %d" +msgstr "obniżanie próbki statystycznej do %d" + +#: commands/tablecmds.c:4935 +#, c-format +msgid "invalid storage type \"%s\"" +msgstr "niepoprawny typ przechowywania \"%s\"" + +#: commands/tablecmds.c:4966 +#, 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:4996 +msgid "cannot drop column from typed table" +msgstr "nie można skasować kolumn tabeli typizowanej" + +#: commands/tablecmds.c:5037 +#, c-format +msgid "column \"%s\" of relation \"%s\" does not exist, skipping" +msgstr "kolumna \"%s\" relacji \"%s\" nie istnieje, pominięto" + +#: commands/tablecmds.c:5050 +#, c-format +msgid "cannot drop system column \"%s\"" +msgstr "nie można usunąć kolumny systemowej \"%s\"" + +#: commands/tablecmds.c:5057 +#, c-format +msgid "cannot drop inherited column \"%s\"" +msgstr "nie można usunąć kolumny dziedziczonej \"%s\"" + +#: commands/tablecmds.c:5283 +#, 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\"" + +#: commands/tablecmds.c:5460 +msgid "constraint must be added to child tables too" +msgstr "ograniczenie musi być dodane również do tabel potomnych" + +#: commands/tablecmds.c:5548 +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:5555 +msgid "" +"constraints on unlogged tables may reference only permanent or unlogged " +"tables" +msgstr "ograniczenia na nielogowanych mogą wskazywać tylko tabele nielogowane" + +#: commands/tablecmds.c:5561 +msgid "constraints on temporary tables may reference only temporary tables" +msgstr "" +"ograniczenia na tabelach tymczasowych mogą wskazywać tylko tabele tymczasowe" + +#: commands/tablecmds.c:5622 +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:5711 +#, c-format +msgid "foreign key constraint \"%s\" cannot be implemented" +msgstr "klucz obcy \"%s\" nie może być zaimplementowany" + +#: commands/tablecmds.c:5714 +#, 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:5827 +#, c-format +msgid "foreign key constraint \"%s\" of relation \"%s\" does not exist" +msgstr "ograniczenie klucza obcego \"%s\" relacji \"%s\" nie istnieje" + +#: commands/tablecmds.c:5890 +#, 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:5895 +#, 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:5960 +#, 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\"" + +#: commands/tablecmds.c:5977 +#, c-format +msgid "there is no primary key for referenced table \"%s\"" +msgstr "brak klucza głównego dla tabeli referencyjnej \"%s\"" + +#: commands/tablecmds.c:6127 +#, c-format +msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" +msgstr "" +"brak klucza odraczalnego ograniczenia unikalnego dla tabeli referencyjnej " +"\"%s\"" + +#: commands/tablecmds.c:6132 +#, 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\"" + +#: commands/tablecmds.c:6183 +#, c-format +msgid "validating foreign key constraint \"%s\"" +msgstr "sprawdzenie ograniczenia klucza obcego \"%s\"" + +#: commands/tablecmds.c:6465 +#, c-format +msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" +msgstr "nie można skasować dziedziczonego ograniczenia \"%s\" relacji \"%s\"" + +#: commands/tablecmds.c:6492 commands/tablecmds.c:6605 +#, c-format +msgid "constraint \"%s\" of relation \"%s\" does not exist" +msgstr "ograniczenie \"%s\" relacji \"%s\" nie istnieje" + +#: commands/tablecmds.c:6498 +#, c-format +msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" +msgstr "ograniczenie \"%s\" relacji \"%s\" nie istnieje, pominięto" + +#: commands/tablecmds.c:6640 +msgid "cannot alter column type of typed table" +msgstr "nie można zmienić typu kolumny tabeli typizowanej" + +#: commands/tablecmds.c:6663 +#, c-format +msgid "cannot alter inherited column \"%s\"" +msgstr "nie można zmieniać kolumny dziedziczonej \"%s\"" + +#: commands/tablecmds.c:6705 +msgid "transform expression must not return a set" +msgstr "wyrażenie przekształcenia nie może zwracać zbioru" + +#: commands/tablecmds.c:6711 +msgid "cannot use subquery in transform expression" +msgstr "nie można użyć podzapytania w wyrażeniu przekształcenia" + +#: commands/tablecmds.c:6715 +msgid "cannot use aggregate function in transform expression" +msgstr "nie można użyć funkcji agregującej w wyrażeniu przekształcenia" + +#: commands/tablecmds.c:6719 +msgid "cannot use window function in transform expression" +msgstr "nie można użyć funkcji okna w wyrażeniu przekształcenia" + +#: commands/tablecmds.c:6738 +#, c-format +msgid "column \"%s\" cannot be cast to type %s" +msgstr "kolumna \"%s\" nie może być rzutowana na typ %s" + +#: commands/tablecmds.c:6785 +#, 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" + +#: commands/tablecmds.c:6866 +#, c-format +msgid "cannot alter type of column \"%s\" twice" +msgstr "nie można zmieniać typu kolumny \"%s\" dwukrotnie" + +#: commands/tablecmds.c:6902 +#, c-format +msgid "default for column \"%s\" cannot be cast to type %s" +msgstr "wartość domyślna dla kolumny \"%s\" nie może być rzutowana na typ %s" + +#: commands/tablecmds.c:7028 +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:7029 commands/tablecmds.c:7048 +#, c-format +msgid "%s depends on column \"%s\"" +msgstr "%s zależy od kolumny \"%s\"" + +#: commands/tablecmds.c:7047 +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:7406 +#, c-format +msgid "cannot change owner of index \"%s\"" +msgstr "nie można zmienić właściciela indeksu \"%s\"" + +#: commands/tablecmds.c:7408 +msgid "Change the ownership of the index's table, instead." +msgstr "W zamian zmień właściciela tabeli indeksu." + +#: commands/tablecmds.c:7424 +#, c-format +msgid "cannot change owner of sequence \"%s\"" +msgstr "nie można zmienić właściciela sekwencji \"%s\"" + +#: commands/tablecmds.c:7426 commands/tablecmds.c:9010 +#, c-format +msgid "Sequence \"%s\" is linked to table \"%s\"." +msgstr "Sekwencja \"%s\" jest połączona z tabelą \"%s\"." + +#: commands/tablecmds.c:7447 commands/tablecmds.c:9028 +#, 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:7702 +msgid "cannot have multiple SET TABLESPACE subcommands" +msgstr "nie można użyć wielu poleceń podrzędnych SET TABLESPACE" + +#: commands/tablecmds.c:7754 +#, c-format +msgid "\"%s\" is not a table, index, or TOAST table" +msgstr "\"%s\" nie jest tabelą, indeksem ani tabelą TOAST" + +#: commands/tablecmds.c:7875 +#, c-format +msgid "cannot move system relation \"%s\"" +msgstr "nie można przenieść relacji systemowej \"%s\"" + +#: commands/tablecmds.c:7891 +msgid "cannot move temporary tables of other sessions" +msgstr "nie można przenieść tabel tymczasowych innych sesji" + +#: commands/tablecmds.c:8083 +msgid "cannot change inheritance of typed table" +msgstr "nie można zmienić dziedziczenia tabeli typizowanej" + +#: commands/tablecmds.c:8169 +msgid "circular inheritance not allowed" +msgstr "dziedziczenie cykliczne nie jest dozwolone" + +#: commands/tablecmds.c:8170 +#, c-format +msgid "\"%s\" is already a child of \"%s\"." +msgstr "\"%s\" jest już potomkiem \"%s\"." + +#: commands/tablecmds.c:8178 +#, 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:8314 +#, 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:8330 +#, c-format +msgid "child table is missing column \"%s\"" +msgstr "w tabeli potomnej brak kolumny \"%s\"" + +#: commands/tablecmds.c:8409 +#, c-format +msgid "child table \"%s\" has different definition for check constraint \"%s\"" +msgstr "" +"tabela potomna \"%s\" posiada inną definicję ograniczenia sprawdzającego \"%s" +"\"" + +#: commands/tablecmds.c:8433 +#, c-format +msgid "child table is missing constraint \"%s\"" +msgstr "w tabeli potomnej brak ograniczenia \"%s\"" + +#: commands/tablecmds.c:8513 +#, c-format +msgid "relation \"%s\" is not a parent of relation \"%s\"" +msgstr "relacja \"%s\" nie jest rodzicem relacji \"%s\"" + +#: commands/tablecmds.c:8730 +msgid "typed tables cannot inherit" +msgstr "tabela typizowana nie może dziedziczyć" + +#: commands/tablecmds.c:8761 +#, c-format +msgid "table is missing column \"%s\"" +msgstr "w tabeli brak kolumny \"%s\"" + +#: commands/tablecmds.c:8771 +#, c-format +msgid "table has column \"%s\" where type requires \"%s\"" +msgstr "tabela posiada kolumnę \"%s\", której typ wymaga \"%s\"" + +#: commands/tablecmds.c:8780 +#, c-format +msgid "table \"%s\" has different type for column \"%s\"" +msgstr "tabela \"%s\" posiada inny typ dla kolumny \"%s\"" + +#: commands/tablecmds.c:8793 +#, c-format +msgid "table has extra column \"%s\"" +msgstr "tabela posiada nadmiarową kolumnę \"%s\"" + +#: commands/tablecmds.c:8840 +#, c-format +msgid "\"%s\" is not a typed table" +msgstr "\"%s\" nie jest tabelą typizowaną" + +#: commands/tablecmds.c:9009 +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:9085 +#, c-format +msgid "relation \"%s\" already exists in schema \"%s\"" +msgstr "relacja \"%s\" istnieje już w schemacie \"%s\"" + +#: 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 "nie można utworzyć folderu \"%s\": %m" + +#: commands/tablespace.c:205 +#, c-format +msgid "could not stat directory \"%s\": %m" +msgstr "nie można wykonać stat na folderze \"%s\": %m" + +#: commands/tablespace.c:214 +#, c-format +msgid "\"%s\" exists but is not a directory" +msgstr "\"%s\" istnieje ale nie jest folderem" + +#: commands/tablespace.c:244 +#, c-format +msgid "permission denied to create tablespace \"%s\"" +msgstr "odmowa dostępu do tworzenia przestrzeni tabel \"%s\"" + +#: commands/tablespace.c:246 +msgid "Must be superuser to create a tablespace." +msgstr "Musisz być superużytkownikiem aby utworzyć przestrzeń tabel." + +#: commands/tablespace.c:262 +msgid "tablespace location cannot contain single quotes" +msgstr "położenie przestrzeni tabel nie może zawierać apostrofów" + +#: commands/tablespace.c:272 +msgid "tablespace location must be an absolute path" +msgstr "położenie przestrzeni tabel musi być ścieżką bezwzględną" + +#: commands/tablespace.c:283 +#, c-format +msgid "tablespace location \"%s\" is too long" +msgstr "położenie przestrzeni tabel \"%s\" jest za długie" + +#: commands/tablespace.c:293 commands/tablespace.c:829 +#, c-format +msgid "unacceptable tablespace name \"%s\"" +msgstr "nieprawidłowa nazwa przestrzeni tabel \"%s\"" + +#: commands/tablespace.c:295 commands/tablespace.c:830 +msgid "The prefix \"pg_\" is reserved for system tablespaces." +msgstr "Prefiks \"pg_\" jest zarezerwowany dla systemowych przestrzeni tabel." + +#: commands/tablespace.c:305 commands/tablespace.c:842 +#, c-format +msgid "tablespace \"%s\" already exists" +msgstr "przestrzeń tabel \"%s\" już istnieje" + +#: commands/tablespace.c:377 commands/tablespace.c:529 +msgid "tablespaces are not supported on this platform" +msgstr "przestrzenie tabel nie są obsługiwane na tej platformie" + +#: 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 "przestrzeń tabel \"%s\" nie istnieje" + +#: commands/tablespace.c:421 +#, c-format +msgid "tablespace \"%s\" does not exist, skipping" +msgstr "przestrzeń tabel \"%s\" nie istnieje, pominięto" + +#: commands/tablespace.c:486 +#, c-format +msgid "tablespace \"%s\" is not empty" +msgstr "przestrzeń tabel \"%s\" nie jest pusta" + +#: commands/tablespace.c:560 +#, c-format +msgid "directory \"%s\" does not exist" +msgstr "folder \"%s\" nie istnieje" + +#: commands/tablespace.c:561 +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:566 +#, 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:598 +#, c-format +msgid "directory \"%s\" already in use as a tablespace" +msgstr "folder \"%s\" jest już używany jako przestrzeń tabel" + +#: commands/tablespace.c:613 commands/tablespace.c:750 +#, c-format +msgid "could not remove symbolic link \"%s\": %m" +msgstr "nie można usunąć linku symbolicznego \"%s\": %m" + +#: commands/tablespace.c:623 +#, c-format +msgid "could not create symbolic link \"%s\": %m" +msgstr "nie można utworzyć linku symbolicznego \"%s\": %m" + +#: commands/tablespace.c:684 storage/file/copydir.c:67 +#: storage/file/copydir.c:106 storage/file/fd.c:1624 +#: postmaster/postmaster.c:1166 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 "nie można otworzyć folderu \"%s\": %m" + +#: commands/tablespace.c:714 commands/tablespace.c:726 +#: commands/tablespace.c:742 +#, c-format +msgid "could not remove directory \"%s\": %m" +msgstr "nie można usunąć folderu \"%s\": %m" + +#: commands/tablespace.c:1039 +#, c-format +msgid "Tablespace \"%s\" does not exist." +msgstr "Przestrzeń tabel \"%s\" nie istnieje." + +#: commands/tablespace.c:1450 +#, c-format +msgid "tablespace %u is not empty" +msgstr "przestrzeń tabel %u nie jest pusta" + +#: commands/trigger.c:159 +#, c-format +msgid "\"%s\" is a table" +msgstr "\"%s\" jest tabelą" + +#: commands/trigger.c:161 +msgid "Tables cannot have INSTEAD OF triggers." +msgstr "Tabele nie mogą posiadać wyzwalaczy INSTEAD OF." + +#: commands/trigger.c:172 commands/trigger.c:179 +#, c-format +msgid "\"%s\" is a view" +msgstr "\"%s\" jest widokiem" + +#: commands/trigger.c:174 +msgid "Views cannot have row-level BEFORE or AFTER triggers." +msgstr "Widoki nie mogą posiadać wierszowych wyzwalaczy BEFORE ani AFTER." + +#: commands/trigger.c:181 +msgid "Views cannot have TRUNCATE triggers." +msgstr "Widoki nie mogą posiadać wyzwalaczy TRUNCATE." + +#: commands/trigger.c:228 +msgid "TRUNCATE FOR EACH ROW triggers are not supported" +msgstr "wyzwalacze TRUNCATE FOR EACH ROW nie są obsługiwane" + +#: commands/trigger.c:236 +msgid "INSTEAD OF triggers must be FOR EACH ROW" +msgstr "wyzwalacze INSTEAD OF muszą być FOR EACH ROW" + +#: commands/trigger.c:240 +msgid "INSTEAD OF triggers cannot have WHEN conditions" +msgstr "wyzwalacze INSTEAD OF nie mogą zawierać warunków WHEN" + +#: commands/trigger.c:244 +msgid "INSTEAD OF triggers cannot have column lists" +msgstr "wyzwalacze INSTEAD OF nie mogą mieć listy kolumn" + +#: commands/trigger.c:288 +msgid "cannot use subquery in trigger WHEN condition" +msgstr "nie można używać podzapytań w warunku WHEN wyzwalacza" + +#: commands/trigger.c:292 +msgid "cannot use aggregate function in trigger WHEN condition" +msgstr "nie można używać funkcji agregującej w warunku WHEN wyzwalacza" + +#: commands/trigger.c:296 +msgid "cannot use window function in trigger WHEN condition" +msgstr "nie można używać funkcji okna w warunku WHEN wyzwalacza" + +#: commands/trigger.c:318 commands/trigger.c:331 +msgid "statement trigger's WHEN condition cannot reference column values" +msgstr "" +"warunek WHEN instrukcji wyzwalacza nie może wskazywać na wartości kolumn" + +#: commands/trigger.c:323 +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:336 +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:341 +msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns" +msgstr "" +"warunek WHEN wyzwalacza BEFORE nie może wskazywać na NEW kolumn systemowych" + +#: commands/trigger.c:379 +#, 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:386 +#, c-format +msgid "function %s must return type \"trigger\"" +msgstr "funkcja %s musi zwracać typ \"trigger\"" + +#: commands/trigger.c:496 commands/trigger.c:1234 +#, c-format +msgid "trigger \"%s\" for relation \"%s\" already exists" +msgstr "wyzwalacz \"%s\" dla relacji \"%s\" już istnieje" + +#: commands/trigger.c:781 +msgid "Found referenced table's UPDATE trigger." +msgstr "Odnaleziono wyzwalacz UPDATE tabeli referowanej." + +#: commands/trigger.c:782 +msgid "Found referenced table's DELETE trigger." +msgstr "Odnaleziono wyzwalacz DELETE tabeli referowanej." + +#: commands/trigger.c:783 +msgid "Found referencing table's trigger." +msgstr "Odnaleziono wyzwalacz tabeli referowanej." + +#: commands/trigger.c:892 commands/trigger.c:908 +#, c-format +msgid "ignoring incomplete trigger group for constraint \"%s\" %s" +msgstr "ignorowanie niepełnej grupy wyzwalaczy dla ograniczenia \"%s\" %s" + +#: commands/trigger.c:920 +#, c-format +msgid "converting trigger group into constraint \"%s\" %s" +msgstr "przekształcenie grupy wyzwalaczy w ograniczenie \"%s\" %s" + +#: commands/trigger.c:1036 +#, c-format +msgid "trigger \"%s\" for table \"%s\" does not exist, skipping" +msgstr "wyzwalacz \"%s\" dla tabeli \"%s\" nie istnieje, pominięto" + +#: commands/trigger.c:1163 commands/trigger.c:1276 commands/trigger.c:1387 +#, c-format +msgid "trigger \"%s\" for table \"%s\" does not exist" +msgstr "wyzwalacz \"%s\" dla tabeli \"%s\" nie istnieje" + +#: commands/trigger.c:1355 +#, c-format +msgid "permission denied: \"%s\" is a system trigger" +msgstr "odmowa dostępu: \"%s\" jest wyzwalaczem systemowym" + +#: commands/trigger.c:1837 +#, c-format +msgid "trigger function %u returned null value" +msgstr "funkcja wyzwalacza %u zwróciła pustą wartość" + +#: commands/trigger.c:1896 commands/trigger.c:2095 commands/trigger.c:2279 +#: commands/trigger.c:2521 +msgid "BEFORE STATEMENT trigger cannot return a value" +msgstr "wyzwalacz BEFORE STATEMENT nie może zwracać wartości" + +#: commands/trigger.c:2583 executor/execMain.c:1864 +#: executor/nodeLockRows.c:137 executor/nodeModifyTable.c:366 +#: executor/nodeModifyTable.c:582 +msgid "could not serialize access due to concurrent update" +msgstr "nie może serializować dostępu z powodu równoczesnej aktualizacji" + +#: commands/trigger.c:4198 +#, c-format +msgid "constraint \"%s\" is not deferrable" +msgstr "ograniczenie \"%s\" nie jest odraczalne" + +#: commands/trigger.c:4221 +#, c-format +msgid "constraint \"%s\" does not exist" +msgstr "ograniczenie \"%s\" nie istnieje" + +#: commands/tsearchcmds.c:117 commands/tsearchcmds.c:1044 +#, c-format +msgid "function %s should return type %s" +msgstr "funkcja %s powinna zwracać typ %s" + +#: commands/tsearchcmds.c:189 +msgid "must be superuser to create text search parsers" +msgstr "" +"musisz być superużytkownikiem aby tworzyć parsery wyszukiwania tekstowego" + +#: commands/tsearchcmds.c:237 +#, c-format +msgid "text search parser parameter \"%s\" not recognized" +msgstr "parametr parsera wyszukiwania tekstowego \"%s\" nierozpoznany" + +#: commands/tsearchcmds.c:247 +msgid "text search parser start method is required" +msgstr "wymagana jest metoda start parsera wyszukiwania tekstowego" + +#: commands/tsearchcmds.c:252 +msgid "text search parser gettoken method is required" +msgstr "wymagana jest metoda gettoken parsera wyszukiwania tekstowego" + +#: commands/tsearchcmds.c:257 +msgid "text search parser end method is required" +msgstr "wymagana jest metoda end parsera wyszukiwania tekstowego" + +#: commands/tsearchcmds.c:262 +msgid "text search parser lextypes method is required" +msgstr "wymagana jest metoda lextypes parsera wyszukiwania tekstowego" + +#: commands/tsearchcmds.c:297 +msgid "must be superuser to drop text search parsers" +msgstr "" +"musisz być superużytkownikiem aby kasować parsery wyszukiwania tekstowego" + +#: commands/tsearchcmds.c:326 +#, c-format +msgid "text search parser \"%s\" does not exist, skipping" +msgstr "parser wyszukiwania tekstowego \"%s\" nie istnieje, pominięto" + +#: commands/tsearchcmds.c:381 +msgid "must be superuser to rename text search parsers" +msgstr "" +"musisz być superużytkownikiem aby zmieniać nazwy parserów wyszukiwania " +"tekstowego" + +#: commands/tsearchcmds.c:399 +#, c-format +msgid "text search parser \"%s\" already exists" +msgstr "parser wyszukiwania tekstowego \"%s\" już istnieje" + +#: commands/tsearchcmds.c:525 +#, c-format +msgid "text search template \"%s\" does not accept options" +msgstr "szablon wyszukiwania tekstowego \"%s\" nie akceptuje opcji" + +#: commands/tsearchcmds.c:598 +msgid "text search template is required" +msgstr "wymagany szablon wyszukiwania tekstowego" + +#: commands/tsearchcmds.c:667 +#, c-format +msgid "text search dictionary \"%s\" already exists" +msgstr "słownik wyszukiwania tekstowego \"%s\" już istnieje" + +#: commands/tsearchcmds.c:775 +#, c-format +msgid "text search dictionary \"%s\" does not exist, skipping" +msgstr "słownik wyszukiwania tekstowego \"%s\" nie istnieje, pominięto" + +#: commands/tsearchcmds.c:1108 +msgid "must be superuser to create text search templates" +msgstr "" +"musisz być superużytkownikiem aby tworzyć szablony wyszukiwania tekstowego" + +#: commands/tsearchcmds.c:1145 +#, c-format +msgid "text search template parameter \"%s\" not recognized" +msgstr "parametr szablonu wyszukiwania tekstowego \"%s\" nierozpoznany" + +#: commands/tsearchcmds.c:1155 +msgid "text search template lexize method is required" +msgstr "wymagana jest metoda lexize szablonu wyszukiwania tekstowego" + +#: commands/tsearchcmds.c:1193 +msgid "must be superuser to rename text search templates" +msgstr "" +"musisz być superużytkownikiem aby zmieniać nazwy szablonów wyszukiwania " +"tekstowego" + +#: commands/tsearchcmds.c:1212 +#, c-format +msgid "text search template \"%s\" already exists" +msgstr "szablon wyszukiwania tekstowego \"%s\" już istnieje" + +#: commands/tsearchcmds.c:1281 +msgid "must be superuser to drop text search templates" +msgstr "" +"musisz być superużytkownikiem aby kasować szablony wyszukiwania tekstowego" + +#: commands/tsearchcmds.c:1310 +#, c-format +msgid "text search template \"%s\" does not exist, skipping" +msgstr "szablon wyszukiwania tekstowego \"%s\" nie istnieje, pominięto" + +#: commands/tsearchcmds.c:1508 +#, c-format +msgid "text search configuration parameter \"%s\" not recognized" +msgstr "parametr konfiguracji wyszukiwania tekstowego \"%s\" nierozpoznany" + +#: commands/tsearchcmds.c:1515 +msgid "cannot specify both PARSER and COPY options" +msgstr "nie można jednocześnie wskazać opcji PARSER i COPY" + +#: commands/tsearchcmds.c:1543 +msgid "text search parser is required" +msgstr "wymagany parser wyszukiwania tekstowego" + +#: commands/tsearchcmds.c:1652 +#, c-format +msgid "text search configuration \"%s\" already exists" +msgstr "konfiguracja wyszukiwania tekstowego \"%s\" już istnieje" + +#: commands/tsearchcmds.c:1759 +#, c-format +msgid "text search configuration \"%s\" does not exist, skipping" +msgstr "konfiguracja wyszukiwania tekstowego \"%s\" nie istnieje, pominięto" + +#: commands/tsearchcmds.c:1981 +#, c-format +msgid "token type \"%s\" does not exist" +msgstr "typ tokenu \"%s\" nie istnieje" + +#: commands/tsearchcmds.c:2203 +#, c-format +msgid "mapping for token type \"%s\" does not exist" +msgstr "mapowanie dla typu tokenu \"%s\" nie istnieje" + +#: commands/tsearchcmds.c:2209 +#, c-format +msgid "mapping for token type \"%s\" does not exist, skipping" +msgstr "mapowanie dla typu tokenu \"%s\" nie istnieje, pominięto" + +#: commands/tsearchcmds.c:2362 commands/tsearchcmds.c:2473 +#, c-format +msgid "invalid parameter list format: \"%s\"" +msgstr "niepoprawny format listy parametrów: \"%s\"" + +#: commands/typecmds.c:169 +msgid "must be superuser to create a base type" +msgstr "musisz być superużytkownikiem aby utworzyć typ bazowy" + +#: commands/typecmds.c:275 +#, c-format +msgid "type attribute \"%s\" not recognized" +msgstr "atrybut typu \"%s\" nie rozpoznany" + +#: commands/typecmds.c:329 +#, c-format +msgid "invalid type category \"%s\": must be simple ASCII" +msgstr "niepoprawna kategoria typu \"%s\": musi być prostym ASCII" + +#: commands/typecmds.c:348 +#, c-format +msgid "array element type cannot be %s" +msgstr "element tablicy nie może być typu %s" + +#: commands/typecmds.c:380 +#, c-format +msgid "alignment \"%s\" not recognized" +msgstr "wyrównanie \"%s\" nie rozpoznane" + +#: commands/typecmds.c:397 +#, c-format +msgid "storage \"%s\" not recognized" +msgstr "składowanie \"%s\" nie rozpoznane" + +#: commands/typecmds.c:408 +#, fuzzy +msgid "type input function must be specified" +msgstr "musi być wskazana funkcja wejścia typu" + +#: commands/typecmds.c:412 +#, fuzzy +msgid "type output function must be specified" +msgstr "musi być wskazana funkcja wyjścia typu" + +#: commands/typecmds.c:417 +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" + +#: commands/typecmds.c:440 +#, 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:447 +#, c-format +msgid "type input function %s must return type %s" +msgstr "funkcja wejścia typu %s musi zwracać typ %s" + +#: commands/typecmds.c:457 +#, 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:464 +#, c-format +msgid "type output function %s must return type \"cstring\"" +msgstr "funkcja wyjścia typu %s musi zwracać typ \"cstring\"" + +#: commands/typecmds.c:473 +#, c-format +msgid "type receive function %s must return type %s" +msgstr "funkcja odbioru typu %s musi zwracać typ %s" + +#: commands/typecmds.c:482 +#, c-format +msgid "type send function %s must return type \"bytea\"" +msgstr "funkcja wysyłania typu %s musi zwracać typ \"bytea\"" + +#: commands/typecmds.c:687 +#, c-format +msgid "\"%s\" is not a domain" +msgstr "\"%s\" nie jest domeną" + +#: commands/typecmds.c:827 +#, 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:909 +msgid "multiple default expressions" +msgstr "wiele wyrażeń domyślnych" + +#: commands/typecmds.c:973 commands/typecmds.c:982 +msgid "conflicting NULL/NOT NULL constraints" +msgstr "konflikt ograniczeń NULL/NOT NULL" + +#: commands/typecmds.c:1001 commands/typecmds.c:1984 +msgid "unique constraints not possible for domains" +msgstr "ograniczenia unikalności nie są dostępne dla domen" + +#: commands/typecmds.c:1007 commands/typecmds.c:1990 +msgid "primary key constraints not possible for domains" +msgstr "klucze główne nie są dostępne dla domen" + +#: commands/typecmds.c:1013 commands/typecmds.c:1996 +msgid "exclusion constraints not possible for domains" +msgstr "ograniczenia wykluczające nie są dostępne dla domen" + +#: commands/typecmds.c:1019 commands/typecmds.c:2002 +msgid "foreign key constraints not possible for domains" +msgstr "klucze obce nie są dostępne dla domen" + +#: commands/typecmds.c:1028 commands/typecmds.c:2011 +msgid "specifying constraint deferrability not supported for domains" +msgstr "określanie odraczalności ograniczenia nie jest obsługiwane dla domen" + +#: commands/typecmds.c:1272 utils/cache/typcache.c:996 +#, c-format +msgid "%s is not an enum" +msgstr "%s nie jest wyliczeniem" + +#: commands/typecmds.c:1332 +#, 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:1383 +#, 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:1482 +#, c-format +msgid "typmod_in function %s must return type \"integer\"" +msgstr "funkcja typmod_in %s musi zwracać typ \"integer\"" + +#: commands/typecmds.c:1509 +#, c-format +msgid "typmod_out function %s must return type \"cstring\"" +msgstr "funkcja typmod_out %s musi zwracać typ \"cstring\"" + +#: commands/typecmds.c:1536 +#, c-format +msgid "type analyze function %s must return type \"boolean\"" +msgstr "funkcja analizy typu %s musi zwracać typ \"boolean\"" + +#: commands/typecmds.c:1836 +#, c-format +msgid "column \"%s\" of table \"%s\" contains null values" +msgstr "kolumna \"%s\" tabeli \"%s\" zawiera puste wartości" + +#: commands/typecmds.c:2082 +#, 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:2287 +#, c-format +msgid "%s is not a domain" +msgstr "%s nie jest domeną" + +#: commands/typecmds.c:2369 commands/typecmds.c:2378 +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:2608 commands/typecmds.c:2680 commands/typecmds.c:2904 +#, c-format +msgid "%s is a table's row type" +msgstr "%s jest typem wiersza tabeli" + +#: commands/typecmds.c:2610 commands/typecmds.c:2682 commands/typecmds.c:2906 +msgid "Use ALTER TABLE instead." +msgstr "Użyj w zamian ALTER TABLE." + +#: commands/typecmds.c:2617 commands/typecmds.c:2689 commands/typecmds.c:2835 +#, c-format +msgid "cannot alter array type %s" +msgstr "nie można zmieniać typu tablicowego %s" + +#: commands/typecmds.c:2619 commands/typecmds.c:2691 commands/typecmds.c:2837 +#, 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:2890 +#, c-format +msgid "type \"%s\" already exists in schema \"%s\"" +msgstr "typ \"%s\" już istnieje w schemacie \"%s\"" + +#: commands/vacuum.c:419 +msgid "oldest xmin is far in the past" +msgstr "najstarszy xmin jest daleko w przeszłości" + +#: commands/vacuum.c:420 +msgid "Close open transactions soon to avoid wraparound problems." +msgstr "Zamknij szybko otwarte transakcje by uniknąć problemów zawijania." + +#: commands/vacuum.c:811 +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:812 +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:919 +#, c-format +msgid "skipping vacuum of \"%s\" --- lock not available" +msgstr "pominięto odkurzanie \"%s\" --- blokada niedostępna" + +#: commands/vacuum.c:945 +#, c-format +msgid "skipping \"%s\" --- only superuser can vacuum it" +msgstr "pominięto \"%s\" --- tylko superużytkownik może to odkurzyć" + +#: commands/vacuum.c:949 +#, 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:953 +#, 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ć" + +#: commands/vacuum.c:970 +#, 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" + +#: commands/vacuumlazy.c:254 +#, 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 "" +"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" +"użycie systemu: %s" + +#: commands/vacuumlazy.c:508 +#, c-format +msgid "relation \"%s\" page %u is uninitialized --- fixing" +msgstr "w relacji \"%s\" strona %u nie jest zainicjowana --- naprawa" + +#: commands/vacuumlazy.c:865 +#, c-format +msgid "\"%s\": removed %.0f row versions in %u pages" +msgstr "\"%s\": usunięto %.0f wersji wierszy na %u stronach" + +#: commands/vacuumlazy.c:870 +#, 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" + +#: commands/vacuumlazy.c:874 +#, 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 martwych wersji wierszy nie może być jeszcze usuniętych.\n" +"Było %.0f nieużywanych wskaźników do elementów.\n" +"%u stron jest zupełnie pustych.\n" +"%s." + +#: commands/vacuumlazy.c:932 +#, c-format +msgid "\"%s\": removed %d row versions in %d pages" +msgstr "\"%s\": usunięto %d wersji wierszy na %d stronach" + +#: commands/vacuumlazy.c:935 commands/vacuumlazy.c:1027 +#: commands/vacuumlazy.c:1160 +#, c-format +msgid "%s." +msgstr "%s." + +#: commands/vacuumlazy.c:1024 +#, c-format +msgid "scanned index \"%s\" to remove %d row versions" +msgstr "przeskanowano indeks \"%s\" by usunąć %d wersji wierszy" + +#: commands/vacuumlazy.c:1065 +#, 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:1069 +#, c-format +msgid "" +"%.0f index row versions were removed.\n" +"%u index pages have been deleted, %u are currently reusable.\n" +"%s." +msgstr "" +"%.0f wersji wierszy indeksu zostało usuniętych.\n" +"%u strony indeksu zostały usunięte, %u jest obecnie ponownie używanych.\n" +"%s." + +#: commands/vacuumlazy.c:1157 +#, c-format +msgid "\"%s\": truncated %u to %u pages" +msgstr "\"%s\": obcięto %u na %u stronach" + +#: commands/variable.c:160 utils/misc/guc.c:8205 +#, c-format +msgid "Unrecognized key word: \"%s\"." +msgstr "Nierozpoznane słowo kluczowe: \"%s\"." + +#: commands/variable.c:172 +msgid "Conflicting \"datestyle\" specifications." +msgstr "Sprzeczne specyfikacje \"datestyle\"." + +#: commands/variable.c:328 +msgid "Cannot specify months in time zone interval." +msgstr "Nie można używać miesięcy w przedziale strefy czasowej." + +#: commands/variable.c:334 +msgid "Cannot specify days in time zone interval." +msgstr "Nie można używać dni w przedziale strefy czasowej." + +#: commands/variable.c:378 commands/variable.c:517 +#, 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:380 commands/variable.c:519 +msgid "PostgreSQL does not support leap seconds." +msgstr "PostgreSQL nie obsługuje sekund przestępnych." + +#: commands/variable.c:582 +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" + +#: commands/variable.c:589 +msgid "transaction read-write mode must be set before any query" +msgstr "" +"tryb zapisu i odczytu transakcji musi być ustawiony przed jakimkolwiek " +"zapytaniem" + +#: commands/variable.c:595 +msgid "cannot set transaction read-write mode during recovery" +msgstr "" +"nie można ustawić trybu zapisu i odczytu transakcji podczas odzyskiwania" + +#: commands/variable.c:642 +msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query" +msgstr "" +"SET TRANSACTION ISOLATION LEVEL musi być wywołane przed jakimkolwiek " +"zapytaniem" + +#: commands/variable.c:649 +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:655 +msgid "cannot use serializable mode in a hot standby" +msgstr "nie można używać trybu" + +#: commands/variable.c:656 +msgid "You can use REPEATABLE READ instead." +msgstr "Można w zamian użyć REPEATABLE READ." + +#: commands/variable.c:704 +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:710 +msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query" +msgstr "" +"SET TRANSACTION [NOT] DEFERRABLE musi być wywołane przed jakimkolwiek " +"zapytaniem" + +#: commands/variable.c:792 +#, 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:799 +msgid "Cannot change \"client_encoding\" now." +msgstr "Nie można teraz zmienić \"client_encoding\"." + +#: commands/variable.c:969 +#, c-format +msgid "permission denied to set role \"%s\"" +msgstr "odmowa dostępu do ustawienia roli \"%s\"" + +#: commands/view.c:143 +#, 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:158 +msgid "view must have at least one column" +msgstr "widok musi posiadać przynajmniej jedną kolumnę" + +#: commands/view.c:283 commands/view.c:295 +msgid "cannot drop columns from view" +msgstr "nie można skasować kolumn z widoku" + +#: commands/view.c:300 +#, 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:308 +#, 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:447 +msgid "views must not contain SELECT INTO" +msgstr "widoki nie mogą zawierać SELECT INTO" + +#: commands/view.c:451 +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:479 +msgid "CREATE VIEW specifies more column names than columns" +msgstr "CREATE VIEW określa więcej nazw kolumn niż kolumn" + +#: commands/view.c:487 +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:501 +#, c-format +msgid "view \"%s\" will be a temporary view" +msgstr "widok \"%s\" będzie widokiem tymczasowym" + +#: commands/seclabel.c:58 +msgid "no security label providers have been loaded" +msgstr "żaden dostawca etykiety bezpieczeństwa nie został wczytany" + +#: commands/seclabel.c:62 +msgid "" +"must specify provider when multiple security label providers have been loaded" +msgstr "" +"wymagane wskazanie dostawcy gdy wczytano wielu dostawców etykiet " +"bezpieczeństwa" + +#: commands/seclabel.c:80 +#, c-format +msgid "security label provider \"%s\" is not loaded" +msgstr "dostawca etykiety bezpieczeństwa \"%s\" nie jest wczytany" + +#: commands/extension.c:148 commands/extension.c:2427 +#, c-format +msgid "extension \"%s\" does not exist" +msgstr "rozszerzenie \"%s\" nie istnieje" + +#: commands/extension.c:247 commands/extension.c:256 commands/extension.c:268 +#: commands/extension.c:278 +#, c-format +msgid "invalid extension name: \"%s\"" +msgstr "nieprawidłowa nazwa rozszerzenia: \"%s\"" + +#: commands/extension.c:248 +msgid "Extension names must not be empty." +msgstr "Nazwy rozszerzeń nie mogą być puste." + +#: commands/extension.c:257 +msgid "Extension names must not contain \"--\"." +msgstr "Nazwy rozszerzeń nie mogą zawierać \"--\"." + +#: commands/extension.c:269 +msgid "Extension names must not begin or end with \"-\"." +msgstr "Nazwy rozszerzeń nie mogą zaczynać się ani kończyć znakiem \"-\"." + +#: commands/extension.c:279 +msgid "Extension names must not contain directory separator characters." +msgstr "Nazwy rozszerzeń nie mogą zawierać znaków rozdzielających słownika." + +#: 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 "nieprawidłowa nazwa wersji rozszerzenia: \"%s\"" + +#: commands/extension.c:295 +msgid "Version names must not be empty." +msgstr "Nazwy wersji nie mogą być puste." + +#: commands/extension.c:304 +msgid "Version names must not contain \"--\"." +msgstr "Nazwy wersji nie mogą zawierać \"--\"." + +#: commands/extension.c:313 +msgid "Version names must not begin or end with \"-\"." +msgstr "Nazwy wersji nie mogą zaczynać się ani kończyć znakiem \"-\"." + +#: commands/extension.c:323 +msgid "Version names must not contain directory separator characters." +msgstr "Nazwy wersji nie mogą zawierać znaków rozdzielających słownika." + +#: commands/extension.c:473 +#, c-format +msgid "could not open extension control file \"%s\": %m" +msgstr "nie można otworzyć pliku kontrolnego rozszerzenia \"%s\": %m" + +#: commands/extension.c:494 commands/extension.c:504 +#, 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" + +#: commands/extension.c:543 +#, c-format +msgid "\"%s\" is not a valid encoding name" +msgstr "\"%s\" nie jest poprawną nazwą kodowania" + +#: commands/extension.c:557 +#, c-format +msgid "parameter \"%s\" must be a list of extension names" +msgstr "parametr \"%s\" nie może być listą nazw rozszerzeń" + +#: commands/extension.c:564 +#, c-format +msgid "unrecognized parameter \"%s\" in file \"%s\"" +msgstr "nierozpoznany parametr \"%s\" w pliku \"%s\"" + +#: commands/extension.c:573 +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:725 +msgid "" +"transaction control statements are not allowed within an extension script" +msgstr "" +"wyrażenia kontrolne transakcji nie są dopuszczalne w skryptach rozszerzeń" + +#: commands/extension.c:793 +#, c-format +msgid "permission denied to create extension \"%s\"" +msgstr "odmowa dostępu do tworzenia rozszerzenia \"%s\"" + +#: commands/extension.c:795 +msgid "Must be superuser to create this extension." +msgstr "musisz być superużytkownikiem aby utworzyć to rozszerzenie." + +#: commands/extension.c:799 +#, c-format +msgid "permission denied to update extension \"%s\"" +msgstr "odmowa dostępu do modyfikacji rozszerzenia \"%s\"" + +#: commands/extension.c:801 +msgid "Must be superuser to update this extension." +msgstr "Musisz być superużytkownikiem aby zmodyfikować to rozszerzenie." + +#: commands/extension.c:1069 +#, 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" +"\"" + +#: commands/extension.c:1196 +#, c-format +msgid "extension \"%s\" already exists, skipping" +msgstr "rozszerzenie \"%s\" już istnieje, pominięto" + +#: commands/extension.c:1203 +#, c-format +msgid "extension \"%s\" already exists" +msgstr "rozszerzenie \"%s\" już istnieje" + +#: commands/extension.c:1214 +msgid "nested CREATE EXTENSION is not supported" +msgstr "zagnieżdżone CREATE EXTENSION nie jest obsługiwane" + +#: commands/extension.c:1269 commands/extension.c:2487 +msgid "version to install must be specified" +msgstr "wersja do zainstalowanie musi być określona" + +#: commands/extension.c:1286 +#, 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:1341 +#, c-format +msgid "extension \"%s\" must be installed in schema \"%s\"" +msgstr "rozszerzenie \"%s\" musi być zainstalowane w schemacie \"%s\"" + +#: commands/extension.c:1420 commands/extension.c:2628 +#, c-format +msgid "required extension \"%s\" is not installed" +msgstr "wymagane rozszerzenie \"%s\" nie jest zainstalowane" + +#: commands/extension.c:1589 +#, c-format +msgid "extension \"%s\" does not exist, skipping" +msgstr "rozszerzenie \"%s\" nie istnieje, pominięto" + +#: commands/extension.c:2097 +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" + +#: commands/extension.c:2109 +#, c-format +msgid "OID %u does not refer to a table" +msgstr "OID %u nie wskazuje na tabelę" + +#: commands/extension.c:2114 +#, 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:2297 commands/extension.c:2356 +#, c-format +msgid "extension \"%s\" does not support SET SCHEMA" +msgstr "rozszerzenie \"%s\" nie obsługuje SET SCHEMA" + +#: commands/extension.c:2358 +#, c-format +msgid "%s is not in the extension's schema \"%s\"" +msgstr "%s nie znajduje się w schemacie \"%s\" rozszerzenia" + +#: commands/extension.c:2407 +msgid "nested ALTER EXTENSION is not supported" +msgstr "zagnieżdżone ALTER EXTENSION nie jest obsługiwane" + +#: commands/extension.c:2498 +#, c-format +msgid "version \"%s\" of extension \"%s\" is already installed" +msgstr "wersja \"%s\" rozszerzenia \"%s\" jest już zainstalowana" + +#: commands/extension.c:2738 +#, c-format +msgid "%s is not a member of extension \"%s\"" +msgstr "%s nie jest składnikiem rozszerzenia \"%s\"" + +#: commands/collationcmds.c:81 +#, c-format +msgid "collation attribute \"%s\" not recognized" +msgstr "atrybut porównania \"%s\" nie rozpoznany" + +#: commands/collationcmds.c:126 +msgid "parameter \"lc_collate\" must be specified" +msgstr "parametr \"lc_collate\" musi być określony" + +#: commands/collationcmds.c:131 +msgid "parameter \"lc_ctype\" must be specified" +msgstr "parametr \"lc_ctype\" musi być określony" + +#: commands/collationcmds.c:177 +#, c-format +msgid "collation \"%s\" does not exist, skipping" +msgstr "porównanie \"%s\" nie istnieje, pominięto" + +#: commands/collationcmds.c:237 commands/collationcmds.c:416 +#, c-format +msgid "collation \"%s\" for encoding \"%s\" already exists in schema \"%s\"" +msgstr "porównanie \"%s\" kodowania \"%s\" istnieje już w schemacie \"%s\"" + +#: commands/collationcmds.c:249 commands/collationcmds.c:428 +#, c-format +msgid "collation \"%s\" already exists in schema \"%s\"" +msgstr "porównanie \"%s\" istnieje już w schemacie \"%s\"" + +#: tcop/fastpath.c:109 tcop/fastpath.c:485 tcop/fastpath.c:615 +#, c-format +msgid "invalid argument size %d in function call message" +msgstr "niepoprawny rozmiar argumentu %d wiadomości wywołania funkcji" + +#: 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 "" +"bieżąca transakcja została przerwana, polecenia ignorowane do końca bloku " +"transakcji" + +#: tcop/fastpath.c:331 +#, c-format +msgid "fastpath function call: \"%s\" (OID %u)" +msgstr "wywołanie funkcji fastpath: \"%s\" (OID %u)" + +#: 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 "czas trwania: %s ms" + +#: tcop/fastpath.c:415 +#, c-format +msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" +msgstr "czas trwania: %s ms wywołanie funkcji fastpath: \"%s\" (OID %u)" + +#: tcop/fastpath.c:453 tcop/fastpath.c:580 +#, 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" + +#: tcop/fastpath.c:461 +#, c-format +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" + +#: tcop/fastpath.c:548 tcop/fastpath.c:631 +#, c-format +msgid "incorrect binary data format in function argument %d" +msgstr "niepoprawny format binarny w argumencie funkcji %d" + +#: tcop/postgres.c:399 tcop/postgres.c:411 tcop/postgres.c:422 +#: tcop/postgres.c:434 tcop/postgres.c:4152 +#, c-format +msgid "invalid frontend message type %d" +msgstr "niepoprawny typ komunikatu frontendu %d" + +#: tcop/postgres.c:858 +#, c-format +msgid "statement: %s" +msgstr "wyrażenie: %s" + +#: tcop/postgres.c:1092 +#, c-format +msgid "duration: %s ms statement: %s" +msgstr "czas trwania: %s ms wyrażenie: %s" + +#: tcop/postgres.c:1142 +#, c-format +msgid "parse %s: %s" +msgstr "parsowanie %s: %s" + +#: tcop/postgres.c:1200 +msgid "cannot insert multiple commands into a prepared statement" +msgstr "nie można wstawić wielu poleceń w przygotowane wyrażenie" + +#: tcop/postgres.c:1379 +#, c-format +msgid "duration: %s ms parse %s: %s" +msgstr "czas trwania: %s ms parsowanie %s: %s" + +#: tcop/postgres.c:1425 +#, c-format +msgid "bind %s to %s" +msgstr "dowiązanie %s do %s" + +#: tcop/postgres.c:1444 tcop/postgres.c:2298 +msgid "unnamed prepared statement does not exist" +msgstr "nienazwane przygotowane wyrażenie nie istnieje" + +#: tcop/postgres.c:1486 +#, 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" + +#: tcop/postgres.c:1492 +#, 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" + +#: tcop/postgres.c:1657 +#, c-format +msgid "incorrect binary data format in bind parameter %d" +msgstr "niepoprawny format binarny w dowiązanym parametrze %d" + +#: tcop/postgres.c:1796 +#, c-format +msgid "duration: %s ms bind %s%s%s: %s" +msgstr "czas trwania: %s ms dowiązanie %s%s%s: %s" + +#: tcop/postgres.c:1844 tcop/postgres.c:2385 +#, c-format +msgid "portal \"%s\" does not exist" +msgstr "portal \"%s\" nie istnieje" + +#: tcop/postgres.c:1931 tcop/postgres.c:2016 +msgid "execute fetch from" +msgstr "wykonanie pobrania z" + +#: tcop/postgres.c:1932 tcop/postgres.c:2017 +msgid "execute" +msgstr "wykonanie" + +#: 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 "czas trwania: %s ms %s %s%s%s: %s" + +#: tcop/postgres.c:2139 +#, c-format +msgid "prepare: %s" +msgstr "przygotuj: %s" + +#: tcop/postgres.c:2202 +#, c-format +msgid "parameters: %s" +msgstr "parametry: %s" + +#: tcop/postgres.c:2221 +msgid "abort reason: recovery conflict" +msgstr "powód przerwania: konflikt odzyskiwania" + +#: tcop/postgres.c:2237 +msgid "User was holding shared buffer pin for too long." +msgstr "Użytkownik trzymał zbyt długo przypięty współdzielony bufor." + +#: tcop/postgres.c:2240 +msgid "User was holding a relation lock for too long." +msgstr "Użytkownik trzymał zbyt długo blokadę relacji." + +#: tcop/postgres.c:2243 +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." + +#: tcop/postgres.c:2246 +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." + +#: tcop/postgres.c:2249 storage/ipc/standby.c:491 +msgid "User transaction caused buffer deadlock with recovery." +msgstr "Transakcja użytkownika spowodowała zakleszczenie bufora z odzyskaniem." + +#: tcop/postgres.c:2252 +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." + +#: tcop/postgres.c:2586 +msgid "terminating connection because of crash of another server process" +msgstr "zakończenie połączenia spowodowane awarią innego procesu serwera" + +#: 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 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." + +#: tcop/postgres.c:2591 tcop/postgres.c:2941 +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." + +#: tcop/postgres.c:2703 +msgid "floating-point exception" +msgstr "wyjątek związany z liczbą zmiennoprzecinkową" + +#: tcop/postgres.c:2704 +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." + +#: tcop/postgres.c:2872 +msgid "terminating autovacuum process due to administrator command" +msgstr "zakończono proces autoodkurzania na skutek polecenia administratora" + +#: tcop/postgres.c:2878 tcop/postgres.c:2888 tcop/postgres.c:2939 +msgid "terminating connection due to conflict with recovery" +msgstr "zakończono połączenie na skutek konfliktu podczas odzyskiwania" + +#: tcop/postgres.c:2894 +msgid "terminating connection due to administrator command" +msgstr "zakończono połączenie na skutek polecenia administratora" + +#: tcop/postgres.c:2909 +msgid "canceling authentication due to timeout" +msgstr "anulowano autentykację z powodu przekroczonego czasu oczekiwania" + +#: tcop/postgres.c:2918 +msgid "canceling statement due to statement timeout" +msgstr "anulowano polecenie z powodu przekroczonego czasu wykonania" + +#: tcop/postgres.c:2927 +msgid "canceling autovacuum task" +msgstr "anulowano zadanie autoodkurzania" + +#: tcop/postgres.c:2946 storage/ipc/standby.c:490 +msgid "canceling statement due to conflict with recovery" +msgstr "anulowano polecenie z powodu konfliktu podczas odzyskiwania" + +#: tcop/postgres.c:2962 +msgid "canceling statement due to user request" +msgstr "anulowano polecenie na skutek żądania użytkownika" + +#: tcop/postgres.c:3043 tcop/postgres.c:3065 +msgid "stack depth limit exceeded" +msgstr "przekroczono limit głębokości stosu" + +#: tcop/postgres.c:3044 tcop/postgres.c:3066 +#, 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." + +#: tcop/postgres.c:3082 +#, c-format +msgid "\"max_stack_depth\" must not exceed %ldkB." +msgstr "\"max_stack_depth\" nie może przekraczać %ldkB." + +#: tcop/postgres.c:3084 +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." + +#: tcop/postgres.c:3419 +msgid "invalid command-line arguments for server process" +msgstr "niepoprawny argument wiersza poleceń dla procesu serwera" + +#: tcop/postgres.c:3420 tcop/postgres.c:3426 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Spróbuj \"%s --help\" aby uzyskać więcej informacji." + +#: tcop/postgres.c:3424 +#, c-format +msgid "%s: invalid command-line arguments" +msgstr "%s: nieprawidłowy argument wiersza poleceń" + +#: tcop/postgres.c:3523 +#, c-format +msgid "%s: no database nor user name specified" +msgstr "%s: nie wskazano ani bazy danych ani nazwy użytkownika" + +#: tcop/postgres.c:4062 +#, c-format +msgid "invalid CLOSE message subtype %d" +msgstr "niepoprawny podtyp %d komunikatu CLOSE" + +#: tcop/postgres.c:4095 +#, c-format +msgid "invalid DESCRIBE message subtype %d" +msgstr "niepoprawny podtyp %d komunikatu DESCRIBE" + +#: tcop/postgres.c:4329 +#, 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" + +#: tcop/pquery.c:660 +#, 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" + +#: tcop/pquery.c:969 +msgid "cursor can only scan forward" +msgstr "kursor może skanować tylko w przód" + +#: tcop/pquery.c:970 +msgid "Declare it with SCROLL option to enable backward scan." +msgstr "Zadeklaruj go z opcją SCROLL aby włączyć skanowanie do tyłu." + +#. 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 "nie można wykonać %s wewnątrz transakcji tylko do odczytu" + +#. translator: %s is name of a SQL command, eg CREATE +#: tcop/utility.c:272 +#, c-format +msgid "cannot execute %s during recovery" +msgstr "nie można wykonywać %s podczas odzyskiwania" + +#. translator: %s is name of a SQL command, eg PREPARE +#: tcop/utility.c:290 +#, c-format +msgid "cannot execute %s within security-restricted operation" +msgstr "nie można wykonać %s operacją o ograniczonym bezpieczeństwie" + +#: tcop/utility.c:1194 +msgid "must be superuser to do CHECKPOINT" +msgstr "musisz być superużytkownikiem by wykonać CHECKPOINT" + +#: executor/execCurrent.c:75 +#, c-format +msgid "cursor \"%s\" is not a SELECT query" +msgstr "kursor \"%s\" nie jest kwerendą SELECT" + +#: executor/execCurrent.c:81 +#, c-format +msgid "cursor \"%s\" is held from a previous transaction" +msgstr "kursor \"%s\" wykonuje się od poprzedniej transakcji" + +#: executor/execCurrent.c:113 +#, 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\"" + +#: executor/execCurrent.c:122 +#, c-format +msgid "" +"cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\"" +msgstr "kursor \"%s\" nie posiada odwołania FOR UPDATE/SHARE do tabeli \"%s\"" + +#: executor/execCurrent.c:132 executor/execCurrent.c:178 +#, c-format +msgid "cursor \"%s\" is not positioned on a row" +msgstr "kursor \"%s\" nie jest ustawiony na wierszu" + +#: executor/execCurrent.c:165 +#, c-format +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:230 executor/execQual.c:1033 +#, 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)" + +#: executor/execCurrent.c:242 executor/execQual.c:1045 +#, c-format +msgid "no value found for parameter %d" +msgstr "nie odnaleziono wartości dla parametru %d" + +#: executor/execMain.c:996 +#, c-format +msgid "cannot change sequence \"%s\"" +msgstr "nie można zmienić sekwencji \"%s\"" + +#: executor/execMain.c:1002 +#, c-format +msgid "cannot change TOAST relation \"%s\"" +msgstr "nie można zmienić relacji TOAST \"%s\"" + +#: executor/execMain.c:1012 +#, c-format +msgid "cannot insert into view \"%s\"" +msgstr "nie można wstawiać do widoku \"%s\"" + +#: executor/execMain.c:1014 +msgid "" +"You need an unconditional ON INSERT DO INSTEAD rule or an INSTEAD OF INSERT " +"trigger." +msgstr "" +"Potrzebujesz bezwarunkowej reguły ON INSERT DO INSTEAD lub wyzwalacza " +"INSTEAD OF INSERT." + +#: executor/execMain.c:1020 +#, c-format +msgid "cannot update view \"%s\"" +msgstr "nie można modyfikować widoku \"%s\"" + +#: executor/execMain.c:1022 +msgid "" +"You need an unconditional ON UPDATE DO INSTEAD rule or an INSTEAD OF UPDATE " +"trigger." +msgstr "" +"Potrzebujesz bezwarunkowej reguły ON UPDATE DO INSTEAD lub wyzwalacza " +"INSTEAD OF UPDATE." + +#: executor/execMain.c:1028 +#, c-format +msgid "cannot delete from view \"%s\"" +msgstr "nie można usuwać z widoku \"%s\"" + +#: executor/execMain.c:1030 +msgid "" +"You need an unconditional ON DELETE DO INSTEAD rule or an INSTEAD OF DELETE " +"trigger." +msgstr "" +"Potrzebujesz bezwarunkowej reguły ON DELETE DO INSTEAD lub wyzwalacza " +"INSTEAD OF DELETE." + +#: executor/execMain.c:1040 +#, c-format +msgid "cannot change foreign table \"%s\"" +msgstr "nie można zmienić tabeli obcej \"%s\"" + +#: executor/execMain.c:1046 +#, c-format +msgid "cannot change relation \"%s\"" +msgstr "nie można zmienić relacji \"%s\"" + +#: executor/execMain.c:1070 +#, c-format +msgid "cannot lock rows in sequence \"%s\"" +msgstr "nie można blokować wierszy w sekwencji \"%s\"" + +#: executor/execMain.c:1077 +#, c-format +msgid "cannot lock rows in TOAST relation \"%s\"" +msgstr "nie można blokować wierszy w relacji TOAST \"%s\"" + +#: executor/execMain.c:1084 +#, c-format +msgid "cannot lock rows in view \"%s\"" +msgstr "nie można blokować wierszy w widoku \"%s\"" + +#: executor/execMain.c:1091 +#, c-format +msgid "cannot lock rows in foreign table \"%s\"" +msgstr "nie można blokować wierszy w tabeli obcej \"%s\"" + +#: executor/execMain.c:1097 +#, c-format +msgid "cannot lock rows in relation \"%s\"" +msgstr "nie można blokować wierszy w relacji \"%s\"" + +#: executor/execMain.c:1568 +#, 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:1580 +#, 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: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:4940 +#, c-format +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgstr "liczba wymiarów tablicy (%d) przekracza maksimum (%d)" + +#: executor/execQual.c:311 executor/execQual.c:339 +msgid "array subscript in assignment must not be null" +msgstr "" +"w instrukcji przypisania do elementu tablicy indeksem elementu nie może być " +"NULL" + +#: executor/execQual.c:635 executor/execQual.c:3905 +#, c-format +msgid "attribute %d has wrong type" +msgstr "atrybut %d posiada nieprawidłowy typ" + +#: executor/execQual.c:636 executor/execQual.c:3906 +#, c-format +msgid "Table has type %s, but query expects %s." +msgstr "Tabela posiada typ %s, ale zapytanie wymaga %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 "" +"typ wiersza tabeli i typ wiersza określonego przez zapytanie nie zgadzają się" + +#: 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] "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:720 executor/nodeModifyTable.c:93 +#, 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." + +#: executor/execQual.c:919 executor/execQual.c:1519 +#, 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." + +#: 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] "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:1387 +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:1437 +#, fuzzy +msgid "" +"function returning setof record called in context that cannot accept type " +"record" +msgstr "" +"funkcja zwracająca zbiór rekordów wywołana w kontekście nie dopuszczającym " +"typu złożonego" + +#: 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 "" +"wiersz zwrócony przez funkcję i wiersz określony przez zapytanie nie pasują" + +#: 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] "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:1509 +#, 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:1745 executor/execQual.c:2170 +#, fuzzy +msgid "table-function protocol for materialize mode was not followed" +msgstr "protokół tabela-funkcja dla trybu materializacji nie został spełniony" + +#: executor/execQual.c:1765 executor/execQual.c:2177 +#, c-format +msgid "unrecognized table-function returnMode: %d" +msgstr "nierozpoznany returnMode tabela-funkcja: %d" + +#: executor/execQual.c:2087 +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:2144 +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:2335 +msgid "IS DISTINCT FROM does not support set arguments" +msgstr "IS DISTINCT FROM nie obsługuje argumentów grupowych" + +#: executor/execQual.c:2412 +msgid "op ANY/ALL (array) does not support set arguments" +msgstr "op ANY/ALL (array) nie obsługuje argumentów grupowych" + +#: executor/execQual.c:2965 +msgid "cannot merge incompatible arrays" +msgstr "nie można scalić niekompatybilnych tablic" + +#: executor/execQual.c:2966 +#, 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." + +#: executor/execQual.c:3007 executor/execQual.c:3034 +#: utils/adt/arrayfuncs.c:542 +msgid "" +"multidimensional arrays must have array expressions with matching dimensions" +msgstr "" +"wielowymiarowe tablice muszą mieć wyrażenia tablicowe z pasującymi wymiarami" + +#: executor/execQual.c:3549 +msgid "NULLIF does not support set arguments" +msgstr "NULLIF nie obsługuje argumentów grupowych" + +#: executor/execQual.c:3779 utils/adt/domains.c:128 +#, c-format +msgid "domain %s does not allow null values" +msgstr "domena %s nie zezwala na puste wartości" + +#: executor/execQual.c:3808 utils/adt/domains.c:164 +#, c-format +msgid "value for domain %s violates check constraint \"%s\"" +msgstr "wartość dla domeny %s narusza ograniczenie sprawdzające \"%s\"" + +#: executor/execQual.c:4288 optimizer/util/clauses.c:572 +#: parser/parse_agg.c:164 +msgid "aggregate function calls cannot be nested" +msgstr "wywołania funkcji agregującej nie mogą być zagnieżdżone" + +#: executor/execQual.c:4326 optimizer/util/clauses.c:646 +#: parser/parse_agg.c:211 +msgid "window function calls cannot be nested" +msgstr "wywołania funkcji okna nie mogą być zagnieżdżone" + +#: executor/execQual.c:4538 +msgid "target type is not an array" +msgstr "typ docelowy nie jest tablica" + +#: executor/execQual.c:4651 +#, c-format +msgid "ROW() column has type %s instead of type %s" +msgstr "kolumna ROW() posiada typ %s zamiast typu %s" + +#: 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 "nie można określić funkcji porównującej dla typu %s" + +#: executor/execUtils.c:1305 +#, c-format +msgid "could not create exclusion constraint \"%s\"" +msgstr "nie można utworzyć ograniczenia wykluczającego \"%s\"" + +#: executor/execUtils.c:1307 +#, c-format +msgid "Key %s conflicts with key %s." +msgstr "Klucz %s jest sprzeczny z kluczem %s." + +#: executor/execUtils.c:1312 +#, c-format +msgid "conflicting key value violates exclusion constraint \"%s\"" +msgstr "sprzeczna wartość klucza narusza ograniczenie wykluczające \"%s\"" + +#: executor/execUtils.c:1314 +#, c-format +msgid "Key %s conflicts with existing key %s." +msgstr "Klucz %s jest sprzeczny z istniejącym kluczem %s." + +#: executor/functions.c:195 +#, c-format +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:295 +#, 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:302 executor/spi.c:1256 executor/spi.c:1891 +#, c-format +msgid "%s is not allowed in a non-volatile function" +msgstr "%s nie jest dopuszczalne w niezmiennej funkcji" + +#: executor/functions.c:408 +#, 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" + +#: executor/functions.c:1146 +#, c-format +msgid "SQL function \"%s\" statement %d" +msgstr "funkcja SQL \"%s\" wyrażenie %d" + +#: executor/functions.c:1172 +#, c-format +msgid "SQL function \"%s\" during startup" +msgstr "funkcja SQL \"%s\" w czasie uruchamiania" + +#: 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 "" +"zwracany typ nie zgadza się w funkcji zadeklarowanej jako zwracająca %s" + +#: executor/functions.c:1334 +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." + +#: executor/functions.c:1370 +msgid "Final statement must return exactly one column." +msgstr "Wyrażenie końcowe musi zwracać dokładnie jedną kolumnę." + +#: executor/functions.c:1382 +#, c-format +msgid "Actual return type is %s." +msgstr "Aktualny zwracany typ to %s." + +#: executor/functions.c:1495 +msgid "Final statement returns too many columns." +msgstr "Wyrażenie końcowe zwraca zbyt wiele kolumn." + +#: executor/functions.c:1528 +#, 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:1558 +msgid "Final statement returns too few columns." +msgstr "Wyrażenie końcowe zwraca zbyt mało kolumn." + +#: executor/functions.c:1607 +#, 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:1730 executor/nodeWindowAgg.c:1851 +#, 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" + +#: executor/nodeHashjoin.c:814 executor/nodeHashjoin.c:844 +#, c-format +msgid "could not rewind hash-join temporary file: %m" +msgstr "nie można przewinąć pliku tymczasowego hash-join: %m" + +#: executor/nodeHashjoin.c:879 executor/nodeHashjoin.c:885 +#, c-format +msgid "could not write to hash-join temporary file: %m" +msgstr "nie można zapisać do pliku tymczasowego hash-join: %m" + +#: executor/nodeHashjoin.c:919 executor/nodeHashjoin.c:929 +#, c-format +msgid "could not read from hash-join temporary file: %m" +msgstr "nie można czytać z pliku tymczasowego hash-join: %m" + +#: executor/nodeLimit.c:253 +msgid "OFFSET must not be negative" +msgstr "OFFSET nie może być ujemny" + +#: executor/nodeLimit.c:280 +msgid "LIMIT must not be negative" +msgstr "LIMIT może być ujemny" + +#: executor/nodeMergejoin.c:1604 +msgid "RIGHT JOIN is only supported with merge-joinable join conditions" +msgstr "RIGHT JOIN jest obsługiwane tylko dla warunków połączenia merge-join" + +#: executor/nodeMergejoin.c:1624 +msgid "FULL JOIN is only supported with merge-joinable join conditions" +msgstr "FULL JOIN jest obsługiwane tylko dla warunków połączenia merge-join" + +#: executor/nodeModifyTable.c:83 +msgid "Query has too many columns." +msgstr "Zapytanie posiada zbyt wiele kolumn." + +#: executor/nodeModifyTable.c:110 +#, 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." + +#: executor/nodeModifyTable.c:118 +msgid "Query has too few columns." +msgstr "Zapytanie posiada zbyt mało kolumn." + +#: 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 "ponad jeden wiersz zwrócony przez podzapytanie użyte jako wyrażenie" + +#: executor/nodeWindowAgg.c:1238 +msgid "frame starting offset must not be null" +msgstr "początkowy offset ramki może być pusty" + +#: executor/nodeWindowAgg.c:1251 +msgid "frame starting offset must not be negative" +msgstr "początkowy offset ramki nie może być ujemny" + +#: executor/nodeWindowAgg.c:1264 +msgid "frame ending offset must not be null" +msgstr "końcowy offset ramki nie może być pusty" + +#: executor/nodeWindowAgg.c:1277 +msgid "frame ending offset must not be negative" +msgstr "końcowy offset ramki może być ujemny" + +#: executor/spi.c:210 +msgid "transaction left non-empty SPI stack" +msgstr "transakcja pozostawiła niepusty stos SPI" + +#: executor/spi.c:211 executor/spi.c:275 +msgid "Check for missing \"SPI_finish\" calls." +msgstr "Sprawdź brakujące wywołania \"SPI_finish\"." + +#: executor/spi.c:274 +msgid "subtransaction left non-empty SPI stack" +msgstr "podtransakcja pozostawiła niepusty stos SPI" + +#: executor/spi.c:1137 +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:1142 +#, c-format +msgid "cannot open %s query as cursor" +msgstr "nie można otworzyć zapytania %s jako kursora" + +#: executor/spi.c:1233 parser/analyze.c:2206 +msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE nie jest wspierane" + +#: executor/spi.c:1234 parser/analyze.c:2207 +msgid "Scrollable cursors must be READ ONLY." +msgstr "Kursory skrolowalne muszą być READ ONLY." + +#: executor/spi.c:2157 +#, c-format +msgid "SQL statement \"%s\"" +msgstr "wyrażenie SQL \"%s\"" + +#: foreign/foreign.c:198 +#, c-format +msgid "user mapping not found for \"%s\"" +msgstr "nie znaleziono mapowania użytkownika dla \"%s\"" + +#: foreign/foreign.c:321 +#, c-format +msgid "foreign-data wrapper \"%s\" has no handler" +msgstr "opakowanie obcych danych \"%s\" nie ma uchwytu" + +#: foreign/foreign.c:498 +#, c-format +msgid "invalid option \"%s\"" +msgstr "błędna opcja \"%s\"" + +#: foreign/foreign.c:499 +#, c-format +msgid "Valid options in this context are: %s" +msgstr "Poprawnymi opcjami dla tego kontekstu są: %s" + +#: lib/stringinfo.c:267 +#, 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." + +#: libpq/auth.c:257 +#, c-format +msgid "authentication failed for user \"%s\": host rejected" +msgstr "nie powiodła się autoryzacja użytkownika \"%s\": odrzucono host" + +#: libpq/auth.c:260 +#, c-format +msgid "Kerberos 5 authentication failed for user \"%s\"" +msgstr "autoryzacja Kerberos 5 nie powiodła się dla użytkownika \"%s\"" + +#: libpq/auth.c:263 +#, c-format +msgid "\"trust\" authentication failed for user \"%s\"" +msgstr "autoryzacja \"trust\" nie powiodła się dla użytkownika \"%s\"" + +#: libpq/auth.c:266 +#, c-format +msgid "Ident authentication failed for user \"%s\"" +msgstr "autoryzacja ident nie powiodła się dla użytkownika \"%s\"" + +#: libpq/auth.c:269 +#, c-format +msgid "Peer authentication failed for user \"%s\"" +msgstr "Równoległa autoryzacja nie powiodła się dla użytkownika \"%s\"" + +#: libpq/auth.c:273 +#, c-format +msgid "password authentication failed for user \"%s\"" +msgstr "autoryzacja hasłem nie powiodła się dla użytkownika \"%s\"" + +#: libpq/auth.c:278 +#, c-format +msgid "GSSAPI authentication failed for user \"%s\"" +msgstr "autoryzacja GSSAPI nie powiodła się dla użytkownika \"%s\"" + +#: libpq/auth.c:281 +#, c-format +msgid "SSPI authentication failed for user \"%s\"" +msgstr "Autoryzacja SSPI nie powiodła się dla użytkownika \"%s\"" + +#: libpq/auth.c:284 +#, c-format +msgid "PAM authentication failed for user \"%s\"" +msgstr "Autoryzacja PAM nie powiodła się dla użytkownika \"%s\"" + +#: libpq/auth.c:287 +#, c-format +msgid "LDAP authentication failed for user \"%s\"" +msgstr "Autoryzacja LDAP nie powiodła się dla użytkownika \"%s\"" + +#: libpq/auth.c:290 +#, c-format +msgid "certificate authentication failed for user \"%s\"" +msgstr "autoryzacja certyfikatem nie powiodła się dla użytkownika \"%s\"" + +#: libpq/auth.c:293 +#, c-format +msgid "RADIUS authentication failed for user \"%s\"" +msgstr "autoryzacja RADIUS nie powiodła się dla użytkownika \"%s\"" + +#: libpq/auth.c:296 +#, c-format +msgid "authentication failed for user \"%s\": invalid authentication method" +msgstr "" +"nie powiodła się autoryzacja użytkownika \"%s\": niepoprawna metoda " +"autoryzacji" + +#: libpq/auth.c:325 +msgid "missing or erroneous pg_hba.conf file" +msgstr "brak lub błędny plik pg_hba.conf" + +#: libpq/auth.c:326 +msgid "See server log for details." +msgstr "Przejrzyj dziennik serwera by znaleźć szczegóły." + +#: libpq/auth.c:356 +msgid "connection requires a valid client certificate" +msgstr "połączenie wymaga poprawnego certyfikatu klienta" + +#: libpq/auth.c:400 libpq/auth.c:416 libpq/auth.c:464 libpq/auth.c:482 +msgid "SSL on" +msgstr "SSL włączone" + +#: libpq/auth.c:400 libpq/auth.c:416 libpq/auth.c:464 libpq/auth.c:482 +msgid "SSL off" +msgstr "SSL wyłączone" + +#: libpq/auth.c:398 +#, 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:404 +#, 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" +"\"" + +#: libpq/auth.c:413 +#, 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" + +#: libpq/auth.c:420 +#, 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\"" + +#: libpq/auth.c:449 +#, c-format, fuzzy +msgid "Client IP address resolved to \"%s\", forward lookup matches." +msgstr "Adres IP klienta rozwiązany do \"%s\", sprawdzenie celu pasuje." + +#: libpq/auth.c:451 +#, c-format, fuzzy +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:453 +#, c-format, fuzzy +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:462 +#, 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" + +#: libpq/auth.c:469 +#, 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\"" + +#: libpq/auth.c:479 +#, 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" + +#: libpq/auth.c:487 +#, 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\"" + +#: libpq/auth.c:539 libpq/hba.c:1118 +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/auth.c:663 +#, c-format +msgid "expected password response, got message type %d" +msgstr "oczekiwano odpowiedzi hasła, otrzymano typ komunikatu %d" + +#: libpq/auth.c:691 +msgid "invalid password packet size" +msgstr "niepoprawny rozmiar pakietu hasła" + +#: libpq/auth.c:695 +msgid "received password packet" +msgstr "odebrano pakiet hasła" + +#: libpq/auth.c:753 +#, c-format +msgid "Kerberos initialization returned error %d" +msgstr "inicjacja Kerberos zwróciła błąd %d" + +#: libpq/auth.c:763 +#, c-format +msgid "Kerberos keytab resolving returned error %d" +msgstr "rozwiązywanie Kerberos keytab zwróciło błąd %d" + +#: libpq/auth.c:787 +#, 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" + +#: libpq/auth.c:832 +#, c-format +msgid "Kerberos recvauth returned error %d" +msgstr "recvauth Kerberos zwróciła błąd %d" + +#: libpq/auth.c:855 +#, c-format +msgid "Kerberos unparse_name returned error %d" +msgstr "unparse_name Kerberos zwróciła błąd %d" + +#: libpq/auth.c:1003 +msgid "GSSAPI is not supported in protocol version 2" +msgstr "GSSAPI nie jest obsługiwane przez wersję 2 protokołu" + +#: libpq/auth.c:1058 +#, c-format +msgid "expected GSS response, got message type %d" +msgstr "oczekiwano odpowiedzi GSS, otrzymano typ komunikatu %d" + +#: libpq/auth.c:1121 +msgid "accepting GSS security context failed" +msgstr "nie powiodło się przyjmowanie kontekstu bezpieczeństwa GSS" + +#: libpq/auth.c:1147 +msgid "retrieving GSS user name failed" +msgstr "nie powiodło się pobieranie nazwy użytkownika GSS" + +#: libpq/auth.c:1264 +msgid "SSPI is not supported in protocol version 2" +msgstr "SSPI nie jest obsługiwane przez wersję 2 protokołu" + +#: libpq/auth.c:1279 +msgid "could not acquire SSPI credentials" +msgstr "nie można nabyć poświadczeń SSPI" + +#: libpq/auth.c:1296 +#, c-format +msgid "expected SSPI response, got message type %d" +msgstr "oczekiwano odpowiedzi SSPI, otrzymano typ komunikatu %d" + +#: libpq/auth.c:1368 +msgid "could not accept SSPI security context" +msgstr "nie można pobrać kontekstu zabezpieczeń SSPI" + +#: libpq/auth.c:1430 +msgid "could not get token from SSPI security context" +msgstr "nie można pobrać tokenu z kontekstu zabezpieczeń SSPI" + +#: libpq/auth.c:1674 +#, c-format +msgid "could not create socket for Ident connection: %m" +msgstr "nie można utworzyć gniazda dla połączenia Ident: %m" + +#: libpq/auth.c:1689 +#, c-format +msgid "could not bind to local address \"%s\": %m" +msgstr "nie można dowiązać do adresu lokalnego \"%s\": %m" + +#: libpq/auth.c:1701 +#, 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" + +#: libpq/auth.c:1721 +#, 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" + +#: libpq/auth.c:1736 +#, 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" + +#: libpq/auth.c:1746 +#, c-format +msgid "invalidly formatted response from Ident server: \"%s\"" +msgstr "niepoprawnie sformatowana odpowiedź z serwera Ident: \"%s\"" + +#: libpq/auth.c:1785 +msgid "peer authentication is not supported on this platform" +msgstr "autentykacja wzajemna nie jest obsługiwana na tej platformie" + +#: libpq/auth.c:1789 +#, c-format +msgid "could not get peer credentials: %m" +msgstr "nie można pobrać poświadczeń wzajemnych: %m" + +#: libpq/auth.c:1798 +#, c-format +msgid "local user with ID %d does not exist" +msgstr "lokalny użytkownik o ID %d nie istnieje" + +#: libpq/auth.c:1881 libpq/auth.c:2153 libpq/auth.c:2513 +msgid "empty password returned by client" +msgstr "puste hasło zwrócone przez klienta" + +#: libpq/auth.c:1891 +#, c-format +msgid "error from underlying PAM layer: %s" +msgstr "błąd z podstawowej warstwy PAM: %s" + +#: libpq/auth.c:1960 +#, c-format +msgid "could not create PAM authenticator: %s" +msgstr "nie można utworzyć identyfikatora PAM: %s" + +#: libpq/auth.c:1971 +#, c-format +msgid "pam_set_item(PAM_USER) failed: %s" +msgstr "niepowodzenie pam_set_item(PAM_USER): %s" + +#: libpq/auth.c:1982 +#, c-format +msgid "pam_set_item(PAM_CONV) failed: %s" +msgstr "niepowodzenie pam_set_item(PAM_CONV): %s" + +#: libpq/auth.c:1993 +#, c-format +msgid "pam_authenticate failed: %s" +msgstr "niepowodzenie pam_authenticate: %s" + +#: libpq/auth.c:2004 +#, c-format +msgid "pam_acct_mgmt failed: %s" +msgstr "niepowodzenie pam_acct_mgmt: %s" + +#: libpq/auth.c:2015 +#, c-format +msgid "could not release PAM authenticator: %s" +msgstr "nie można opublikować uwierzytelnienia PAM: %s" + +#: libpq/auth.c:2048 libpq/auth.c:2052 +#, c-format +msgid "could not initialize LDAP: error code %d" +msgstr "nie można zainicjować LDAP: kod błędu %d" + +#: libpq/auth.c:2062 +#, c-format +msgid "could not set LDAP protocol version: error code %d" +msgstr "nie można ustawić wersji protokołu LDAP: kod błędu %d" + +#: libpq/auth.c:2091 +msgid "could not load wldap32.dll" +msgstr "nie można załadować wldap32.dll" + +#: libpq/auth.c:2099 +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/auth.c:2100 +msgid "LDAP over SSL is not supported on this platform." +msgstr "LDAP po SSL nie jest wspierany dla tej platformy." + +#: libpq/auth.c:2115 +#, c-format +msgid "could not start LDAP TLS session: error code %d" +msgstr "nie można rozpocząć sesji LDAP: kod błędu %d" + +#: libpq/auth.c:2137 +msgid "LDAP server not specified" +msgstr "nie określono serwera LDAP" + +#: libpq/auth.c:2189 +msgid "invalid character in user name for LDAP authentication" +msgstr "niepoprawny znak w nazwie użytkownika podczas autoryzacji LDAP" + +#: libpq/auth.c:2204 +#, c-format +msgid "" +"could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": " +"error code %d" +msgstr "" +"nie można wykonać początkowego połączenia z LDAP dla ldapbinddn \"%s\" na " +"serwerze \"%s\": kod błędu %d" + +#: libpq/auth.c:2229 +#, c-format +msgid "could not search LDAP for filter \"%s\" on server \"%s\": error code %d" +msgstr "" +"nie można wyszukać w LDAP z filtrem \"%s\" na serwerze \"%s\": kod błędu %d" + +#: libpq/auth.c:2239 +#, c-format +msgid "LDAP search failed for filter \"%s\" on server \"%s\": no such user" +msgstr "" +"wyszukiwanie LDAP nie powiodło się dla filtra \"%s\" na serwerze \"%s\": " +"brak takiego użytkownika" + +#: libpq/auth.c:2243 +#, c-format +msgid "" +"LDAP search failed for filter \"%s\" on server \"%s\": user is not unique " +"(%ld matches)" +msgstr "" +"wyszukiwanie LDAP nie powiodło się dla filtra \"%s\" na serwerze \"%s\": " +"użytkownik nie jest unikalny (%ld dopasowań)" + +#: libpq/auth.c:2260 +#, 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" + +#: libpq/auth.c:2280 +#, 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" + +#: libpq/auth.c:2317 +#, c-format +msgid "LDAP login failed for user \"%s\" on server \"%s\": error code %d" +msgstr "" +"logowanie LDAP nie powiodło się dla użytkownika \"%s\" na serwerze \"%s\": " +"kod błędu %d" + +#: libpq/auth.c:2345 +#, 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" + +#: libpq/auth.c:2469 +msgid "RADIUS server not specified" +msgstr "nie określono serwera RADIUS" + +#: libpq/auth.c:2476 +msgid "RADIUS secret not specified" +msgstr "nie określono szyfrowanego hasła RADIUS" + +#: libpq/auth.c:2492 libpq/hba.c:1403 +#, 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" + +#: libpq/auth.c:2520 +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/auth.c:2531 +msgid "could not generate random encryption vector" +msgstr "nie można wygenerować wektora losowego szyfrowania" + +#: libpq/auth.c:2554 +msgid "could not perform MD5 encryption of password" +msgstr "nie można wykonać szyfrowania hasła skrótem MD5" + +#: libpq/auth.c:2576 +#, c-format +msgid "could not create RADIUS socket: %m" +msgstr "nie można utworzyć gniazda RADIUS: %m" + +#: libpq/auth.c:2597 +#, c-format +msgid "could not bind local RADIUS socket: %m" +msgstr "nie można połączyć do gniazda RADIUS: %m" + +#: libpq/auth.c:2607 +#, c-format +msgid "could not send RADIUS packet: %m" +msgstr "nie można wysłać pakietu RADIUS: %m" + +#: libpq/auth.c:2636 libpq/auth.c:2661 +msgid "timeout waiting for RADIUS response" +msgstr "limit czasu oczekiwania na odpowiedź RADIUS" + +#: libpq/auth.c:2654 +#, c-format +msgid "could not check status on RADIUS socket: %m" +msgstr "nie można sprawdzić stanu gniazda RADIUS: %m" + +#: libpq/auth.c:2683 +#, c-format +msgid "could not read RADIUS response: %m" +msgstr "nie można odczytać odpowiedzi RADIUS: %m" + +#: libpq/auth.c:2695 libpq/auth.c:2699 +#, c-format +msgid "RADIUS response was sent from incorrect port: %i" +msgstr "odpowiedź RADIUS została wysłana z niepoprawnego portu: %i" + +#: libpq/auth.c:2708 +#, c-format +msgid "RADIUS response too short: %i" +msgstr "odpowiedź RADIUS zbyt krótka: %i" + +#: libpq/auth.c:2715 +#, c-format +msgid "RADIUS response has corrupt length: %i (actual length %i)" +msgstr "odpowiedź RADIUS ma uszkodzoną długość: %i (aktualna długość %i)" + +#: libpq/auth.c:2723 +#, c-format +msgid "RADIUS response is to a different request: %i (should be %i)" +msgstr "odpowiedź RADIUS dotyczy innego żądania: %i (powinna być %i)" + +#: libpq/auth.c:2748 +msgid "could not perform MD5 encryption of received packet" +msgstr "nie można wykonać szyfrowania otrzymanego pakietu skrótem MD5" + +#: libpq/auth.c:2757 +msgid "RADIUS response has incorrect MD5 signature" +msgstr "odpowiedź RADIUS ma niepoprawny podpis MD5" + +#: libpq/auth.c:2774 +#, c-format +msgid "RADIUS response has invalid code (%i) for user \"%s\"" +msgstr "odpowiedź RADIUS posiada niepoprawny kod (%i) dla użytkownika \"%s\"" + +#: 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 "niepoprawny deskryptor dużego obiektu: %d" + +#: 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 "odmowa dostępu do dużego obiektu %u" + +#: libpq/be-fsstubs.c:194 +#, c-format +msgid "large object descriptor %d was not opened for writing" +msgstr "deskryptor dużego obiektu %d nie był otwarty do zapisu" + +#: libpq/be-fsstubs.c:392 +msgid "must be superuser to use server-side lo_import()" +msgstr "musisz być superużytkownikiem by używać lo_import() po stronie serwera" + +#: libpq/be-fsstubs.c:393 +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/be-fsstubs.c:406 +#, c-format +msgid "could not open server file \"%s\": %m" +msgstr "nie można otworzyć pliku serwera \"%s\": %m" + +#: libpq/be-fsstubs.c:428 +#, c-format +msgid "could not read server file \"%s\": %m" +msgstr "nie można odczytać pliku serwera \"%s\": %m" + +#: libpq/be-fsstubs.c:458 +msgid "must be superuser to use server-side lo_export()" +msgstr "musisz być superużytkownikiem by używać lo_export() po stronie serwera" + +#: libpq/be-fsstubs.c:459 +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/be-fsstubs.c:484 +#, c-format +msgid "could not create server file \"%s\": %m" +msgstr "nie można utworzyć pliku serwera \"%s\": %m" + +#: libpq/be-fsstubs.c:496 +#, c-format +msgid "could not write server file \"%s\": %m" +msgstr "nie można pisać do pliku serwera \"%s\": %m" + +#: libpq/be-secure.c:283 libpq/be-secure.c:378 +#, c-format +msgid "SSL error: %s" +msgstr "błąd SSL: %s" + +#: libpq/be-secure.c:292 libpq/be-secure.c:387 libpq/be-secure.c:957 +#, c-format +msgid "unrecognized SSL error code: %d" +msgstr "nieznany kod błędu SSL: %d" + +#: libpq/be-secure.c:331 libpq/be-secure.c:335 libpq/be-secure.c:345 +msgid "SSL renegotiation failure" +msgstr "niepowodzenie renegocjacji SSL" + +#: libpq/be-secure.c:339 +msgid "SSL failed to send renegotiation request" +msgstr "nie powiodło się wysyłanie żądania renegocjacji SSL" + +#: libpq/be-secure.c:736 +#, c-format +msgid "could not create SSL context: %s" +msgstr "nie można utworzyć kontekstu SSL: %s" + +#: libpq/be-secure.c:752 +#, c-format +msgid "could not load server certificate file \"%s\": %s" +msgstr "nie można załadować pliku z certyfikatem serwera \"%s\": %s" + +#: libpq/be-secure.c:758 +#, 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" + +#: libpq/be-secure.c:773 +#, 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" + +#: libpq/be-secure.c:775 +msgid "Permissions should be u=rw (0600) or less." +msgstr "Prawa dostępu powinny być u=rw (0600) lub niżej." + +#: libpq/be-secure.c:782 +#, c-format +msgid "could not load private key file \"%s\": %s" +msgstr "nie można pobrać pliku z kluczem prywatnym \"%s\": %s" + +#: libpq/be-secure.c:787 +#, c-format +msgid "check of private key failed: %s" +msgstr "nie powiodło się sprawdzenie klucza prywatnego: %s" + +#: libpq/be-secure.c:815 +#, c-format +msgid "could not access root certificate file \"%s\": %m" +msgstr "" +"nie można uzyskać dostępu do pliku z certyfikatem podstawowym \"%s\": %m" + +#: libpq/be-secure.c:826 +#, c-format +msgid "could not load root certificate file \"%s\": %s" +msgstr "nie można załadować pliku z certyfikatem głównym \"%s\": %s" + +#: libpq/be-secure.c:849 +#, c-format +msgid "SSL certificate revocation list file \"%s\" ignored" +msgstr "plik listy unieważnień certyfikatu SSL \"%s\" został zignorowany" + +#: libpq/be-secure.c:851 +msgid "SSL library does not support certificate revocation lists." +msgstr "Biblioteka SSL nie obsługuje list unieważnień certyfikatów." + +#: libpq/be-secure.c:858 +#, c-format +msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s" +msgstr "nie znaleziono pliku listy unieważnień certyfikatu SSL \"%s\": %s" + +#: libpq/be-secure.c:860 +msgid "Certificates will not be checked against revocation list." +msgstr "Certyfikaty nie zostaną sprawdzone pod kątem list unieważnień." + +#: libpq/be-secure.c:902 +#, c-format +msgid "could not initialize SSL connection: %s" +msgstr "nie można zainicjować połączenia SSL: %s" + +#: libpq/be-secure.c:911 +#, c-format +msgid "could not set SSL socket: %s" +msgstr "nie można ustawić gniazda SSL: %s" + +#: libpq/be-secure.c:937 +#, c-format +msgid "could not accept SSL connection: %m" +msgstr "nie można przyjąć połączenia SSL: %m" + +#: libpq/be-secure.c:941 libpq/be-secure.c:952 +msgid "could not accept SSL connection: EOF detected" +msgstr "nie można przyjąć połączenia SSL: wykryto EOF" + +#: libpq/be-secure.c:946 +#, c-format +msgid "could not accept SSL connection: %s" +msgstr "nie można przyjąć połączenia SSL: %s" + +#: libpq/be-secure.c:997 +msgid "SSL certificate's common name contains embedded null" +msgstr "nazwa zwyczajowa certyfikatu SSL zawiera osadzony null" + +#: libpq/be-secure.c:1004 +#, c-format +msgid "SSL connection from \"%s\"" +msgstr "połączenie SSL od \"%s\"" + +#: libpq/be-secure.c:1048 +msgid "no SSL error reported" +msgstr "nie zgłoszono błędu SSL" + +#: libpq/be-secure.c:1052 +#, c-format +msgid "SSL error code %lu" +msgstr "kod błędu SSL %lu" + +#: libpq/hba.c:160 +#, c-format +msgid "authentication file token too long, skipping: \"%s\"" +msgstr "token pliku autoryzacji jest zbyt długi, pominięto: \"%s\"" + +#: libpq/hba.c:355 +#, 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" + +#: libpq/hba.c:628 +#, c-format +msgid "could not translate host name \"%s\" to address: %s" +msgstr "nie można przetłumaczyć nazwy hosta \"%s\" na adres: %s" + +#. 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 "opcja autoryzacji \"%s\" jest poprawna tylko dla metod autoryzacji %s" + +#: libpq/hba.c:795 +#, c-format +msgid "authentication method \"%s\" requires argument \"%s\" to be set" +msgstr "metoda autoryzacji \"%s\" wymaga do użycia argumentu \"%s\"" + +#: libpq/hba.c:832 +msgid "local connections are not supported by this build" +msgstr "połączenia lokalne nie są obsługiwane przez tą kompilację" + +#: libpq/hba.c:853 +msgid "hostssl requires SSL to be turned on" +msgstr "hostssl by być włączone wymaga SSL" + +#: libpq/hba.c:854 +msgid "Set ssl = on in postgresql.conf." +msgstr "Ustawienie ssl = on w postgresql.conf." + +#: libpq/hba.c:862 +msgid "hostssl is not supported by this build" +msgstr "hostssl nie jest obsługiwany przez tą kompilację" + +#: libpq/hba.c:863 +msgid "Compile with --with-openssl to use SSL connections." +msgstr "Skompiluj z --with-openssl by używać połączeń SSL." + +#: libpq/hba.c:885 +#, c-format +msgid "invalid connection type \"%s\"" +msgstr "błędny typ połączenia \"%s\"" + +#: libpq/hba.c:898 +msgid "end-of-line before database specification" +msgstr "koniec-linii przed określeniem bazy danych" + +#: libpq/hba.c:911 +msgid "end-of-line before role specification" +msgstr "koniec-linii przed określeniem roli" + +#: libpq/hba.c:926 +msgid "end-of-line before IP address specification" +msgstr "koniec-linii przed wskazaniem adresu IP" + +#: libpq/hba.c:980 +#, c-format +msgid "invalid IP address \"%s\": %s" +msgstr "nieprawidłowy adres IP \"%s\": %s" + +#: libpq/hba.c:1000 +#, c-format +msgid "specifying both host name and CIDR mask is invalid: \"%s\"" +msgstr "" +"jednoczesne wskazanie nazwy hosta i maski CDIR jest niepoprawne: \"%s\"" + +#: libpq/hba.c:1014 +#, c-format +msgid "invalid CIDR mask in address \"%s\"" +msgstr "nieprawidłowa maska CIDR w adresie \"%s\"" + +#: libpq/hba.c:1032 +msgid "end-of-line before netmask specification" +msgstr "koniec-linii przed określeniem netmask" + +#: libpq/hba.c:1044 +#, c-format +msgid "invalid IP mask \"%s\": %s" +msgstr "nieprawidłowa maska IP \"%s\": %s" + +#: libpq/hba.c:1061 +msgid "IP address and mask do not match" +msgstr "niezgodność adresu IP i maski" + +#: libpq/hba.c:1076 +msgid "end-of-line before authentication method" +msgstr "koniec linii przed metodą autoryzacji" + +#: libpq/hba.c:1149 +#, c-format +msgid "invalid authentication method \"%s\"" +msgstr "niepoprawna metoda autoryzacji \"%s\"" + +#: libpq/hba.c:1160 +#, c-format +msgid "invalid authentication method \"%s\": not supported by this build" +msgstr "niepoprawna metoda autoryzacji \"%s\": nieobsługiwana w tej kompilacji" + +#: libpq/hba.c:1181 +msgid "krb5 authentication is not supported on local sockets" +msgstr "autoryzacja krb5 nie jest obsługiwana na gniazdach lokalnych" + +#: libpq/hba.c:1192 +msgid "gssapi authentication is not supported on local sockets" +msgstr "autoryzacja gssapi nie jest obsługiwana na gniazdach lokalnych" + +#: libpq/hba.c:1203 +msgid "peer authentication is only supported on local sockets" +msgstr "uwierzytelnianie wzajemne nie jest obsługiwane na gniazdach lokalnych" + +#: libpq/hba.c:1220 +msgid "cert authentication is only supported on hostssl connections" +msgstr "uwierzytelnianie cert jest obsługiwane tylko w połączeniach hostssl" + +#: libpq/hba.c:1241 +#, c-format +msgid "authentication option not in name=value format: %s" +msgstr "opcja autoryzacji nie jest w formacie nazwa=wartość: %s" + +#: libpq/hba.c:1257 +msgid "ident, peer, krb5, gssapi, sspi and cert" +msgstr "ident, peer, krb5, gssapi, sspi i cert" + +#: libpq/hba.c:1271 +msgid "clientcert can only be configured for \"hostssl\" rows" +msgstr "clientcert może być skonfigurowany tylko dla wierszy \"hostssl\"" + +#: libpq/hba.c:1282 +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" + +#: libpq/hba.c:1283 +msgid "Make sure the root.crt file is present and readable." +msgstr "Upewnij się, że plik root.crt istnieje jest dostępny do odczytu." + +#: libpq/hba.c:1296 +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" +"\"" + +#: libpq/hba.c:1330 +#, c-format +msgid "invalid LDAP port number: \"%s\"" +msgstr "nieprawidłowy numer portu LDAP: \"%s\"" + +#: libpq/hba.c:1376 libpq/hba.c:1384 +msgid "krb5, gssapi and sspi" +msgstr "krb5, gssapi i sspi" + +#: libpq/hba.c:1422 +#, c-format +msgid "invalid RADIUS port number: \"%s\"" +msgstr "nieprawidłowy numer portu RADIUS: \"%s\"" + +#: libpq/hba.c:1442 +#, c-format +msgid "unrecognized authentication option name: \"%s\"" +msgstr "nierozpoznana nazwa opcji autoryzacji: \"%s\"" + +#: libpq/hba.c:1474 +msgid "" +"cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, or ldapsearchattribute " +"together with ldapprefix" +msgstr "" +"nie można użyć ldapbasedn, ldapbinddn, ldapbindpasswd, czy " +"ldapsearchattribute razem z ldapprefix" + +#: libpq/hba.c:1484 +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:1683 guc-file.l:409 +#, c-format +msgid "could not open configuration file \"%s\": %m" +msgstr "nie można otworzyć pliku konfiguracyjnego \"%s\": %m" + +#: libpq/hba.c:1815 +#, c-format +msgid "invalid regular expression \"%s\": %s" +msgstr "niepoprawne wyrażenie regularne \"%s\": %s" + +#: libpq/hba.c:1838 +#, c-format +msgid "regular expression match for \"%s\" failed: %s" +msgstr "nie powiodło się dopasowanie wyrażenia regularnego dla \"%s\": %s" + +#: libpq/hba.c:1856 +#, 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\"" + +#: libpq/hba.c:1922 +#, 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" + +#: libpq/hba.c:1963 +#, 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ę" + +#: libpq/hba.c:1984 +#, 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\"" + +#: libpq/hba.c:2008 +#, c-format +msgid "could not open usermap file \"%s\": %m" +msgstr "nie można otworzyć pliku mapy użytkowników \"%s\": %m" + +#: libpq/pqcomm.c:306 +#, 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" + +#: libpq/pqcomm.c:310 +#, c-format +msgid "could not translate service \"%s\" to address: %s" +msgstr "nie można przetłumaczyć usługi \"%s\" na adres: %s" + +#: libpq/pqcomm.c:337 +#, 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)" + +#: libpq/pqcomm.c:346 +msgid "IPv4" +msgstr "IPv4" + +#: libpq/pqcomm.c:350 +msgid "IPv6" +msgstr "IPv6" + +#: libpq/pqcomm.c:355 +msgid "Unix" +msgstr "Unix" + +#: libpq/pqcomm.c:360 +#, c-format +msgid "unrecognized address family %d" +msgstr "nierozpoznana rodzina adresów %d" + +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:371 +#, c-format +msgid "could not create %s socket: %m" +msgstr "nie można utworzyć gniazda %s: %m" + +#: libpq/pqcomm.c:396 +#, c-format +msgid "setsockopt(SO_REUSEADDR) failed: %m" +msgstr "nie powiodło się setsockopt(SO_REUSEADDR): %m" + +#: libpq/pqcomm.c:411 +#, c-format +msgid "setsockopt(IPV6_V6ONLY) failed: %m" +msgstr "nie powiodło się setsockopt(IPV6_V6ONLY): %m" + +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:430 +#, c-format +msgid "could not bind %s socket: %m" +msgstr "nie można dowiązać gniazda %s: %m" + +#: libpq/pqcomm.c:433 +#, 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." + +#: libpq/pqcomm.c:436 +#, 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." + +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:469 +#, c-format +msgid "could not listen on %s socket: %m" +msgstr "nie można nasłuchiwać na gnieździe %s: %m" + +#: libpq/pqcomm.c:554 +#, c-format +msgid "group \"%s\" does not exist" +msgstr "grupa \"%s\" nie istnieje" + +#: libpq/pqcomm.c:564 +#, c-format +msgid "could not set group of file \"%s\": %m" +msgstr "nie można ustawić grupy pliku \"%s\": %m" + +#: libpq/pqcomm.c:575 +#, c-format +msgid "could not set permissions of file \"%s\": %m" +msgstr "nie można określić uprawnień dla pliku \"%s\": %m" + +#: libpq/pqcomm.c:605 +#, c-format +msgid "could not accept new connection: %m" +msgstr "nie można przyjąć nowego połączenia: %m" + +#: libpq/pqcomm.c:773 +#, c-format +msgid "could not set socket to non-blocking mode: %m" +msgstr "nie można ustawić gniazda w tryb nieblokujący: %m" + +#: libpq/pqcomm.c:779 +#, c-format +msgid "could not set socket to blocking mode: %m" +msgstr "nie można ustawić gniazda w tryb blokujący: %m" + +#: libpq/pqcomm.c:831 libpq/pqcomm.c:921 +#, c-format +msgid "could not receive data from client: %m" +msgstr "nie można otrzymać danych od klienta: %m" + +#: libpq/pqcomm.c:1072 +msgid "unexpected EOF within message length word" +msgstr "nieoczekiwane EOF wewnątrz słowa długości komunikatu" + +#: libpq/pqcomm.c:1083 +msgid "invalid message length" +msgstr "niepoprawna długość komunikatu" + +#: libpq/pqcomm.c:1105 libpq/pqcomm.c:1115 +msgid "incomplete message from client" +msgstr "niekompletny komunikat od klienta" + +#: libpq/pqcomm.c:1245 +#, c-format +msgid "could not send data to client: %m" +msgstr "nie można wysłać danych do klienta: %m" + +#: libpq/pqformat.c:436 +msgid "no data left in message" +msgstr "nie pozostały żadne dane w wiadomości" + +#: 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 "pozostała niewystarczająca ilość danych w wiadomości" + +#: libpq/pqformat.c:636 +msgid "invalid string in message" +msgstr "niepoprawny ciąg znaków w wiadomości" + +#: libpq/pqformat.c:652 +msgid "invalid message format" +msgstr "niepoprawny format wiadomości" + +#: snowball/dict_snowball.c:183 +#, 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\"" + +#: snowball/dict_snowball.c:215 +msgid "multiple Language parameters" +msgstr "wiele parametrów Language" + +#: snowball/dict_snowball.c:222 +#, c-format +msgid "unrecognized Snowball parameter: \"%s\"" +msgstr "nierozpoznany parametr Snowball: \"%s\"" + +#: snowball/dict_snowball.c:230 +msgid "missing Language parameter" +msgstr "brakuje parametru Language" + +#: storage/ipc/procarray.c:270 storage/ipc/sinvaladt.c:302 +#: storage/lmgr/proc.c:297 postmaster/postmaster.c:1862 +msgid "sorry, too many clients already" +msgstr "przepraszamy, mamy już zbyt wiele klientów" + +#: storage/ipc/procarray.c:637 +msgid "consistent state delayed because recovery snapshot incomplete" +msgstr "" +"opóźnienie stanu spójnego ze względu na niekompletne migawki odzyskiwania" + +#: storage/ipc/shmem.c:190 storage/lmgr/lock.c:631 storage/lmgr/lock.c:700 +#: storage/lmgr/lock.c:2163 storage/lmgr/lock.c:2542 storage/lmgr/lock.c:2607 +#: storage/lmgr/proc.c:197 storage/lmgr/proc.c:216 +#: storage/lmgr/predicate.c:2233 storage/lmgr/predicate.c:2248 +#: storage/lmgr/predicate.c:3623 storage/lmgr/predicate.c:4770 +#: utils/hash/dynahash.c:928 +msgid "out of shared memory" +msgstr "brak pamięci współdzielonej" + +#: 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 "" +"niewystarczająca ilość pamięci współdzielonej dla struktury danych \"%s" +"\" (zadanie %lu bajtów)" + +#: storage/ipc/shmem.c:365 +#, c-format +msgid "could not create ShmemIndex entry for data structure \"%s\"" +msgstr "nie można utworzyć wpisu ShmemIndex dla struktury danych \"%s\"" + +#: storage/ipc/shmem.c:380 +#, c-format +msgid "" +"ShmemIndex entry size is wrong for data structure \"%s\": expected %lu, " +"actual %lu" +msgstr "" +"rozmiar wpisu ShmemIndex jest nieprawidłowy dla struktury danych \"%s\": " +"oczekiwano %lu, obecnie %lu" + +#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446 +msgid "requested shared memory size overflows size_t" +msgstr "żądana ilość pamięci współdzielonej przekracza size_t" + +#: storage/buffer/bufmgr.c:134 storage/buffer/bufmgr.c:239 +msgid "cannot access temporary tables of other sessions" +msgstr "nie można uzyskać dostępu do tabel tymczasowych innych sesji" + +#: storage/buffer/bufmgr.c:373 +#, c-format +msgid "unexpected data beyond EOF in block %u of relation %s" +msgstr "nieoczekiwane dane za EOF w bloku %u relacji %s" + +#: storage/buffer/bufmgr.c:375 +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." + +#: storage/buffer/bufmgr.c:447 +#, c-format +msgid "invalid page header in block %u of relation %s; zeroing out page" +msgstr "" +"nieprawidłowy nagłówek strony w bloku %u relacji %s: zerowanie strony wyjścia" + +#: storage/buffer/bufmgr.c:455 +#, c-format +msgid "invalid page header in block %u of relation %s" +msgstr "nieprawidłowy nagłówek strony w bloku %u relacji %s" + +#: storage/buffer/bufmgr.c:2735 +#, c-format +msgid "could not write block %u of %s" +msgstr "nie można zapisać bloku %u z %s" + +#: storage/buffer/bufmgr.c:2737 +msgid "Multiple failures --- write error might be permanent." +msgstr "Wielokrotne awarie -- błąd zapisu może być trwały." + +#: storage/buffer/bufmgr.c:2758 storage/buffer/bufmgr.c:2777 +#, c-format +msgid "writing block %u of relation %s" +msgstr "zapis bloku %u relacji %s" + +#: storage/buffer/localbuf.c:190 +msgid "no empty local buffer available" +msgstr "brak dostępnego pustego bufora lokalnego" + +#: storage/file/fd.c:405 +#, c-format +msgid "getrlimit failed: %m" +msgstr "nie powiodło się getrlimit: %m" + +#: storage/file/fd.c:495 +msgid "insufficient file descriptors available to start server process" +msgstr "" +"dostępna niewystarczająca ilość deskryptorów plików by uruchomić proces " +"serwera" + +#: storage/file/fd.c:496 +#, c-format +msgid "System allows %d, we need at least %d." +msgstr "System dopuszcza %d, potrzeba nam co najmniej %d." + +#: storage/file/fd.c:537 storage/file/fd.c:1469 storage/file/fd.c:1585 +#, 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" + +#: storage/file/fd.c:1110 +#, c-format +msgid "temporary file: path \"%s\", size %lu" +msgstr "plik tymczasowy: ścieżka \"%s\", rozmiar %lu" + +#: storage/file/fd.c:1644 +#, c-format +msgid "could not read directory \"%s\": %m" +msgstr "nie można czytać katalogu \"%s\": %m" + +#: storage/smgr/md.c:381 storage/smgr/md.c:855 +#, c-format +msgid "could not truncate file \"%s\": %m" +msgstr "nie można obciąć pliku \"%s\": %m" + +#: storage/smgr/md.c:449 +#, c-format +msgid "cannot extend file \"%s\" beyond %u blocks" +msgstr "nie można rozszerzyć pliku \"%s\" ponad %u bloków" + +#: storage/smgr/md.c:471 storage/smgr/md.c:635 storage/smgr/md.c:710 +#, 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" + +#: storage/smgr/md.c:479 +#, c-format +msgid "could not extend file \"%s\": %m" +msgstr "nie można rozszerzyć pliku \"%s\": %m" + +#: storage/smgr/md.c:481 storage/smgr/md.c:488 storage/smgr/md.c:737 +msgid "Check free disk space." +msgstr "Sprawdź dostępne miejsce na dysku." + +#: storage/smgr/md.c:485 +#, 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" + +#: storage/smgr/md.c:653 +#, c-format +msgid "could not read block %u in file \"%s\": %m" +msgstr "nie można odczytać bloku %u w pliku \"%s\": %m" + +#: storage/smgr/md.c:669 +#, 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" + +#: storage/smgr/md.c:728 +#, c-format +msgid "could not write block %u in file \"%s\": %m" +msgstr "nie można zapisać bloku %u do pliku \"%s\": %m" + +#: storage/smgr/md.c:733 +#, 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" + +#: storage/smgr/md.c:831 +#, c-format +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" + +#: storage/smgr/md.c:880 +#, c-format +msgid "could not truncate file \"%s\" to %u blocks: %m" +msgstr "nie można obciąć pliku \"%s\" do %u bloków: %m" + +#: storage/smgr/md.c:1134 +#, 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" + +#: storage/smgr/md.c:1276 +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" + +#: storage/smgr/md.c:1646 +#, c-format +msgid "could not open file \"%s\" (target block %u): %m" +msgstr "nie można otworzyć pliku \"%s\" (blok docelowy %u): %m" + +#: storage/smgr/md.c:1668 +#, c-format +msgid "could not seek to end of file \"%s\": %m" +msgstr "nie można pozycjonować do końca w pliku \"%s\": %m" + +#: 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 "duży obiektu %u nie był otwarty do zapisu" + +#: storage/large_object/inv_api.c:562 storage/large_object/inv_api.c:759 +#, c-format +msgid "large object %u was already dropped" +msgstr "duży obiekt %u został już skasowany" + +#: storage/lmgr/deadlock.c:915 +#, 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." + +#: storage/lmgr/deadlock.c:934 +#, c-format +msgid "Process %d: %s" +msgstr "Proces %d: %s" + +#: storage/lmgr/deadlock.c:941 +msgid "deadlock detected" +msgstr "wykryto zakleszczenie" + +#: storage/lmgr/deadlock.c:944 +msgid "See server log for query details." +msgstr "Przejrzyj dziennik serwera by znaleźć szczegóły zapytania." + +#: storage/lmgr/lmgr.c:720 +#, c-format +msgid "relation %u of database %u" +msgstr "relacja %u bazy danych %u" + +#: storage/lmgr/lmgr.c:726 +#, c-format +msgid "extension of relation %u of database %u" +msgstr "rozszerzenie relacji %u bazy danych %u" + +#: storage/lmgr/lmgr.c:732 +#, c-format +msgid "page %u of relation %u of database %u" +msgstr "strona %u relacji %u bazy danych %u" + +#: storage/lmgr/lmgr.c:739 +#, c-format +msgid "tuple (%u,%u) of relation %u of database %u" +msgstr "krotka (%u,%u) relacji %u bazy danych %u" + +#: storage/lmgr/lmgr.c:747 +#, c-format +msgid "transaction %u" +msgstr "transakcja %u" + +#: storage/lmgr/lmgr.c:752 +#, c-format +msgid "virtual transaction %d/%u" +msgstr "wirtualna transakcja %d/%u" + +#: storage/lmgr/lmgr.c:758 +#, c-format +msgid "object %u of class %u of database %u" +msgstr "obiekt %u relacji %u bazy danych %u" + +#: storage/lmgr/lmgr.c:766 +#, c-format +msgid "user lock [%u,%u,%u]" +msgstr "blokada użytkownika [%u,%u,%u]" + +#: storage/lmgr/lmgr.c:773 +#, c-format +msgid "advisory lock [%u,%u,%u,%u]" +msgstr "blokada konsultacyjna [%u,%u,%u,%u]" + +#: storage/lmgr/lmgr.c:781 +#, c-format +msgid "unrecognized locktag type %d" +msgstr "nierozpoznany typ locktag %d" + +#: storage/lmgr/lock.c:517 +#, 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" + +#: storage/lmgr/lock.c:519 +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." + +#: storage/lmgr/lock.c:632 storage/lmgr/lock.c:701 storage/lmgr/lock.c:2543 +#: storage/lmgr/lock.c:2608 +msgid "You might need to increase max_locks_per_transaction." +msgstr "Możesz potrzebować podniesienia wartości max_locks_per_transaction." + +#: storage/lmgr/lock.c:2164 +msgid "Not enough memory for reassigning the prepared transaction's locks." +msgstr "" +"Niewystarczająca ilość pamięci do realokacji blokad przygotowanych " +"transakcji." + +#: storage/lmgr/proc.c:1046 utils/adt/misc.c:102 +#, c-format +msgid "could not send signal to process %d: %m" +msgstr "nie udało się wysłać sygnału do procesu %d: %m" + +#: storage/lmgr/proc.c:1080 +#, c-format +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" + +#: storage/lmgr/proc.c:1092 +#, 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" + +#: storage/lmgr/proc.c:1098 +#, 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" + +#: storage/lmgr/proc.c:1102 +#, c-format +msgid "process %d acquired %s on %s after %ld.%03d ms" +msgstr "proces %d uzyskał %s na %s po %ld.%03d ms" + +#: storage/lmgr/proc.c:1118 +#, 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" + +#: storage/lmgr/predicate.c:665 +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" + +#: storage/lmgr/predicate.c:666 storage/lmgr/predicate.c:694 +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." + +#: storage/lmgr/predicate.c:693 +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" + +#: storage/lmgr/predicate.c:898 +msgid "memory for serializable conflict tracking is nearly exhausted" +msgstr "pamięć dla serializowanego śledzenia konfliktów jest prawie wyczerpana" + +#: storage/lmgr/predicate.c:899 +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." + +#: storage/lmgr/predicate.c:1181 storage/lmgr/predicate.c:1253 +#, c-format +msgid "" +"not enough shared memory for elements of data structure \"%s\" (%lu bytes " +"requested)" +msgstr "" +"niewystarczająca ilość pamięci współdzielonej dla elementów struktury danych " +"\"%s\" (zadanie %lu bajtów)" + +#: storage/lmgr/predicate.c:1536 +msgid "deferrable snapshot was unsafe; trying a new one" +msgstr "odraczalny wyzwalacz był nie niebezpieczny; próba nowego" + +#: storage/lmgr/predicate.c:2234 storage/lmgr/predicate.c:2249 +#: storage/lmgr/predicate.c:3624 +msgid "You might need to increase max_pred_locks_per_transaction." +msgstr "" +"Możesz potrzebować zwiększenia wartości max_pred_locks_per_transaction." + +#: storage/lmgr/predicate.c:3778 storage/lmgr/predicate.c:3867 +#: storage/lmgr/predicate.c:3875 storage/lmgr/predicate.c:3914 +#: storage/lmgr/predicate.c:4153 storage/lmgr/predicate.c:4491 +#: storage/lmgr/predicate.c:4503 storage/lmgr/predicate.c:4545 +#: storage/lmgr/predicate.c:4583 +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" + +#: storage/lmgr/predicate.c:3780 storage/lmgr/predicate.c:3869 +#: storage/lmgr/predicate.c:3877 storage/lmgr/predicate.c:3916 +#: storage/lmgr/predicate.c:4155 storage/lmgr/predicate.c:4493 +#: storage/lmgr/predicate.c:4505 storage/lmgr/predicate.c:4547 +#: storage/lmgr/predicate.c:4585 +msgid "The transaction might succeed if retried." +msgstr "Transakcja może się powieść po powtórzeniu." + +#: 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 "" +"uszkodzone wskaźniki do stron: niższy = %u, wyższy = %u, specjalny = %u" + +#: storage/page/bufpage.c:433 +#, c-format +msgid "corrupted item pointer: %u" +msgstr "uszkodzony wskaźnik do elementu: %u" + +#: storage/page/bufpage.c:444 storage/page/bufpage.c:805 +#, c-format +msgid "corrupted item lengths: total %u, available space %u" +msgstr "uszkodzone długości elementów: suma %u, dostępna przestrzeń %u" + +#: storage/page/bufpage.c:642 storage/page/bufpage.c:778 +#, c-format +msgid "corrupted item pointer: offset = %u, size = %u" +msgstr "uszkodzony wskaźnik do elementu: przesunięcie = %u, rozmiar = %u" + +#: main/main.c:237 +#, c-format +msgid "%s: setsysinfo failed: %s\n" +msgstr "%s: nie powiodło się setsysinfo: %s\n" + +#: main/main.c:259 +#, c-format +msgid "%s: WSAStartup failed: %d\n" +msgstr "%s: nie powiodło się WSAStartup: %d\n" + +#: main/main.c:278 +#, c-format +msgid "" +"%s is the PostgreSQL server.\n" +"\n" +msgstr "" +"%s jest serwerem PostgreSQL.\n" +"\n" + +#: main/main.c:279 +#, c-format +msgid "" +"Usage:\n" +" %s [OPTION]...\n" +"\n" +msgstr "" +"Użycie:\n" +" %s [OPCJE]...\n" +"\n" + +#: main/main.c:280 +#, c-format +msgid "Options:\n" +msgstr "Opcje:\n" + +#: main/main.c:282 +#, 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" + +#: main/main.c:284 +#, c-format +msgid " -B NBUFFERS number of shared buffers\n" +msgstr " -B NBUFFERS liczba współdzielonych buforów\n" + +#: main/main.c:285 +#, c-format +msgid " -c NAME=VALUE set run-time parameter\n" +msgstr " -c NAZWA=WART ustawia parametr czasu wykonania\n" + +#: main/main.c:286 +#, c-format +msgid " -d 1-5 debugging level\n" +msgstr " -d 1-5 poziom debugu\n" + +#: main/main.c:287 +#, c-format +msgid " -D DATADIR database directory\n" +msgstr " -D FDRDANYCH folder bazy danych\n" + +#: main/main.c:288 +#, c-format +msgid " -e use European date input format (DMY)\n" +msgstr "" +" -e używa europejskiego formatu wprowadzania daty (DMY)\n" + +#: main/main.c:289 +#, c-format +msgid " -F turn fsync off\n" +msgstr " -F wyłącza fsync\n" + +#: main/main.c:290 +#, 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" + +#: main/main.c:291 +#, c-format +msgid " -i enable TCP/IP connections\n" +msgstr " -i umożliwia połączenia TCP/IP\n" + +#: main/main.c:292 +#, c-format +msgid " -k DIRECTORY Unix-domain socket location\n" +msgstr " -k FOLDER położenie gniazd domeny Unix\n" + +#: main/main.c:294 +#, c-format +msgid " -l enable SSL connections\n" +msgstr " -l umożliwia połączenia SSL\n" + +#: main/main.c:296 +#, c-format +msgid " -N MAX-CONNECT maximum number of allowed connections\n" +msgstr " -N MAX-CONNECT maksymalna liczba dozwolonych połączen\n" + +#: main/main.c:297 +#, 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" + +#: main/main.c:298 +#, c-format +msgid " -p PORT port number to listen on\n" +msgstr " -p PORT numer portu do nasłuchiwania\n" + +#: main/main.c:299 +#, c-format +msgid " -s show statistics after each query\n" +msgstr " -s pokazuje statystyki po wykonaniu każdego zapytania\n" + +#: main/main.c:300 +#, 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" + +#: main/main.c:301 +#, c-format +msgid " --NAME=VALUE set run-time parameter\n" +msgstr " --NAZWA=WART ustawia parametr czasu wykonania\n" + +#: main/main.c:302 +#, c-format +msgid " --describe-config describe configuration parameters, then exit\n" +msgstr " --describe-config opisuje parametry konfiguracji i kończy\n" + +#: main/main.c:303 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help pokazuje ten ekran pomocy i kończy\n" + +#: main/main.c:304 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version wypisuje informacje o wersji i kończy\n" + +#: main/main.c:306 +#, c-format +msgid "" +"\n" +"Developer options:\n" +msgstr "" +"\n" +"Opcje deweloperskie:\n" + +#: 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 zabrania użycia pewnych typów planu\n" + +#: main/main.c:308 +#, 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" + +#: main/main.c:309 +#, c-format +msgid " -O allow system table structure changes\n" +msgstr " -O pozwala na zmiany struktury tabel systemowych\n" + +#: main/main.c:310 +#, c-format +msgid " -P disable system indexes\n" +msgstr " -P wyłącza indeksy systemowe\n" + +#: main/main.c:311 +#, 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" + +#: main/main.c:312 +#, 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" + +#: main/main.c:313 +#, 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" + +#: main/main.c:315 +#, c-format +msgid "" +"\n" +"Options for single-user mode:\n" +msgstr "" +"\n" +"Opcje dla trybu pojedynczego użytkownika:\n" + +#: main/main.c:316 +#, 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" + +#: main/main.c:317 +#, c-format +msgid " DBNAME database name (defaults to user name)\n" +msgstr "" +" NAZWADB nazwa bazy danych (domyślnie taka jak nazwa użytkownika)\n" + +#: main/main.c:318 +#, c-format +msgid " -d 0-5 override debugging level\n" +msgstr " -d 0-5 nadpisuje poziom debugu\n" + +#: main/main.c:319 +#, c-format +msgid " -E echo statement before execution\n" +msgstr " -E wypisuje na wyjście wyrażenie przed wykonaniem\n" + +#: main/main.c:320 +#, 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" + +#: main/main.c:321 main/main.c:326 +#, 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" + +#: main/main.c:323 +#, c-format +msgid "" +"\n" +"Options for bootstrapping mode:\n" +msgstr "" +"\n" +"Opcje dla trybu ładowania:\n" + +#: main/main.c:324 +#, c-format +msgid " --boot selects bootstrapping mode (must be first argument)\n" +msgstr "" +" --boot wybiera tryb ładowania (musi być pierwszym argumentem)\n" + +#: main/main.c:325 +#, 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" + +#: main/main.c:327 +#, c-format +msgid " -x NUM internal use\n" +msgstr " -x NUM do użytku wewnętrznego\n" + +#: 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" +"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" + +#: 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 security 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" + +#: main/main.c:360 +#, 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" + +#: 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 security 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" + +#: main/main.c:388 +#, c-format +msgid "%s: invalid effective UID: %d\n" +msgstr "%s: niepoprawny efektywny UID: %d\n" + +#: main/main.c:401 +#, 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" + +#: optimizer/prep/prepunion.c:385 +msgid "could not implement recursive UNION" +msgstr "nie udało się zaimplementować rekurencyjnej UNION" + +#: optimizer/prep/prepunion.c:386 +msgid "All column datatypes must be hashable." +msgstr "Wszystkie typy danych kolumn muszą być haszowalne." + +#. translator: %s is UNION, INTERSECT, or EXCEPT +#: optimizer/prep/prepunion.c:790 +#, c-format +msgid "could not implement %s" +msgstr "nie udało się zaimplementować %s" + +#: optimizer/prep/prepunion.c:791 optimizer/plan/planner.c:2255 +#: optimizer/plan/planner.c:2427 +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." + +#: optimizer/util/clauses.c:4165 +#, c-format +msgid "SQL function \"%s\" during inlining" +msgstr "funkcja SQL \"%s\" w czasie wbudowywania" + +#: optimizer/util/plancat.c:97 +msgid "cannot access temporary or unlogged relations during recovery" +msgstr "" +"nie można uzyskać dostępu do tymczasowej lub nielogowanej relacji podczas " +"odzyskiwania" + +#: optimizer/plan/initsplan.c:595 +msgid "" +"SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer " +"join" +msgstr "" +"SELECT FOR UPDATE/SHARE nie może być zastosowane do niewymaganej strony " +"złączenia zewnętrznego" + +#: optimizer/plan/planner.c:959 parser/analyze.c:1337 parser/analyze.c:1534 +#: parser/analyze.c:2263 +msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT" +msgstr "SELECT FOR UPDATE/SHARE nie jest dopuszczalne z UNION/INTERSECT/EXCEPT" + +#: optimizer/plan/planner.c:2254 +msgid "could not implement GROUP BY" +msgstr "nie udało się zaimplementować GROUP BY" + +#: optimizer/plan/planner.c:2426 +msgid "could not implement DISTINCT" +msgstr "nie udało się zaimplementować DISTINCT" + +#: optimizer/plan/planner.c:2877 +msgid "could not implement window PARTITION BY" +msgstr "nie udało się zaimplementować okna PARTITION BY" + +#: optimizer/plan/planner.c:2878 +msgid "Window partitioning columns must be of sortable datatypes." +msgstr "Kolumny podziału okna muszą być typów sortowalnych." + +#: optimizer/plan/planner.c:2882 +msgid "could not implement window ORDER BY" +msgstr "nie udało się zaimplementować okna ORDER BY" + +#: optimizer/plan/planner.c:2883 +msgid "Window ordering columns must be of sortable datatypes." +msgstr "Kolumny porządkujące okno muszą być typów sortowalnych." + +#: optimizer/path/joinrels.c:673 +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/analyze.c:471 +msgid "INSERT ... SELECT cannot specify INTO" +msgstr "INSERT ... SELECT nie może określać INTO" + +#: parser/analyze.c:564 parser/analyze.c:1070 +msgid "VALUES lists must all be the same length" +msgstr "wszystkie listy VALUES muszą posiadać tą samą długość" + +#: parser/analyze.c:606 parser/analyze.c:1211 +msgid "VALUES must not contain table references" +msgstr "VALUES nie może zawierać odnośników do tabel" + +#: parser/analyze.c:620 parser/analyze.c:1225 +msgid "VALUES must not contain OLD or NEW references" +msgstr "VALUES nie może zawierać odnośników OLD lub NEW" + +#: parser/analyze.c:621 parser/analyze.c:1226 +msgid "Use SELECT ... UNION ALL ... instead." +msgstr "Użyj SELECT ... UNION ALL ... w zamian." + +#: parser/analyze.c:725 parser/analyze.c:1238 +msgid "cannot use aggregate function in VALUES" +msgstr "nie można używać funkcji agregujących w klauzuli VALUES" + +#: parser/analyze.c:731 parser/analyze.c:1244 +msgid "cannot use window function in VALUES" +msgstr "nie można używać funkcji okna w klauzuli VALUES" + +#: parser/analyze.c:765 +msgid "INSERT has more expressions than target columns" +msgstr "INSERT posiada więcej wyrażeń niż docelowych kolumn" + +#: parser/analyze.c:783 +msgid "INSERT has more target columns than expressions" +msgstr "INSERT posiada więcej docelowych kolumn niż wyrażeń" + +#: 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 "" +"Ź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/analyze.c:1084 +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/analyze.c:1192 parser/analyze.c:2414 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES" +msgstr "SELECT FOR UPDATE/SHARE nie może być stosowane do VALUES" + +#: parser/analyze.c:1452 +msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" +msgstr "nieprawidłowa klauzula UNION/INTERSECT/EXCEPT ORDER BY" + +#: parser/analyze.c:1453 +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/analyze.c:1454 +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:1526 +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:1586 +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/analyze.c:1674 +#, c-format +msgid "each %s query must have the same number of columns" +msgstr "każde zapytanie %s musi mieć tą samą liczbę kolumn" + +#: parser/analyze.c:1930 +msgid "CREATE TABLE AS specifies too many column names" +msgstr "CREATE TABLE AS określa zbyt wiele nazw kolumn" + +#: parser/analyze.c:1988 +msgid "cannot use aggregate function in UPDATE" +msgstr "nie można użyć funkcji agregującej w poleceniu UPDATE" + +#: parser/analyze.c:1994 +msgid "cannot use window function in UPDATE" +msgstr "nie można użyć funkcji okna w poleceniu UPDATE" + +#: parser/analyze.c:2103 +msgid "cannot use aggregate function in RETURNING" +msgstr "nie można użyć funkcji agregującej w poleceniu RETURNING" + +#: parser/analyze.c:2109 +msgid "cannot use window function in RETURNING" +msgstr "nie można użyć funkcji okna w poleceniu RETURNING" + +#: parser/analyze.c:2128 +msgid "RETURNING cannot contain references to other relations" +msgstr "RETURNING nie może zawierać odniesień do innych relacji" + +#: parser/analyze.c:2167 +msgid "cannot specify both SCROLL and NO SCROLL" +msgstr "nie można określić obu SCROLL i NO SCROLL" + +#: parser/analyze.c:2181 +msgid "DECLARE CURSOR cannot specify INTO" +msgstr "DECLARE CURSOR nie może określać INTO" + +#: parser/analyze.c:2193 +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/analyze.c:2199 +msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE nie jest obsługiwane" + +#: parser/analyze.c:2200 +#, fuzzy +msgid "Holdable cursors must be READ ONLY." +msgstr "Kursory ponadtransakcyjne muszą być READ ONLY." + +#: parser/analyze.c:2213 +msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE nie jest obsługiwane" + +#: parser/analyze.c:2214 +msgid "Insensitive cursors must be READ ONLY." +msgstr "Kursory nieczułe muszą być READ ONLY." + +#: parser/analyze.c:2267 +msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause" +msgstr "SELECT FOR UPDATE/SHARE nie jest dopuszczalne z klauzulą DISTINCT" + +#: parser/analyze.c:2271 +msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause" +msgstr "SELECT FOR UPDATE/SHARE nie jest dopuszczalne z klauzulą GROUP BY" + +#: parser/analyze.c:2275 +msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause" +msgstr "SELECT FOR UPDATE/SHARE nie jest dopuszczalne z klauzulą HAVING" + +#: parser/analyze.c:2279 +msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions" +msgstr "SELECT FOR UPDATE/SHARE nie jest dopuszczalne z funkcjami agregującymi" + +#: parser/analyze.c:2283 +msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions" +msgstr "SELECT FOR UPDATE/SHARE nie jest dopuszczalne z funkcjami okna" + +#: parser/analyze.c:2287 +msgid "" +"SELECT FOR UPDATE/SHARE is not allowed with set-returning functions in the " +"target list" +msgstr "" +"SELECT FOR UPDATE/SHARE z funkcjami zwracającymi zbiór na liście docelowej " +"nie jest dopuszczalny" + +#: parser/analyze.c:2366 +msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names" +msgstr "SELECT FOR UPDATE/SHARE musi wskazywać niekwalifikowane nazwy relacji" + +#: parser/analyze.c:2383 +#, c-format +msgid "SELECT FOR UPDATE/SHARE cannot be used with foreign table \"%s\"" +msgstr "" +"SELECT FOR UPDATE/SHARE nie może być zastosowane do tabeli obcej \"%s\"" + +#: parser/analyze.c:2402 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join" +msgstr "SELECT FOR UPDATE/SHARE nie może być zastosowane do złączenia" + +#: parser/analyze.c:2408 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function" +msgstr "SELECT FOR UPDATE/SHARE nie może być zastosowane dla funkcji" + +#: parser/analyze.c:2420 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query" +msgstr "SELECT FOR UPDATE/SHARE nie może być zastosowane do zapytania WITH" + +#: parser/analyze.c:2434 +#, c-format +msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause" +msgstr "" +"relacja \"%s\" w klauzuli FOR UPDATE/SHARE nie odnaleziona w klauzuli FROM" + +#: parser/parse_agg.c:131 parser/parse_oper.c:219 +#, 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" + +#: parser/parse_agg.c:133 +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:174 +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:245 parser/parse_clause.c:1637 +#, c-format +msgid "window \"%s\" does not exist" +msgstr "okno \"%s\" nie istnieje" + +#: parser/parse_agg.c:336 +msgid "aggregates not allowed in WHERE clause" +msgstr "agregaty nie są dopuszczalne w klauzuli WHERE" + +#: parser/parse_agg.c:342 +msgid "aggregates not allowed in JOIN conditions" +msgstr "agregaty nie są dopuszczalne w warunku JOIN" + +#: parser/parse_agg.c:363 +msgid "aggregates not allowed in GROUP BY clause" +msgstr "agregaty nie są dopuszczalne w klauzuli GROUP BY" + +#: parser/parse_agg.c:433 +msgid "aggregate functions not allowed in a recursive query's recursive term" +msgstr "" +"funkcje agregujące są niedopuszczalne w określeniu rekurencyjności zapytań " +"rekursywnych" + +#: parser/parse_agg.c:458 +msgid "window functions not allowed in WHERE clause" +msgstr "funkcje okna nie są dopuszczalne w klauzuli WHERE" + +#: parser/parse_agg.c:464 +msgid "window functions not allowed in JOIN conditions" +msgstr "funkcje okna nie są dopuszczalne w warunku JOIN" + +#: parser/parse_agg.c:470 +msgid "window functions not allowed in HAVING clause" +msgstr "funkcje okna nie są dopuszczalne w klauzuli WHERE" + +#: parser/parse_agg.c:483 +msgid "window functions not allowed in GROUP BY clause" +msgstr "funkcje okna nie są dopuszczalne w klauzuli GROUP BY" + +#: parser/parse_agg.c:502 parser/parse_agg.c:515 +msgid "window functions not allowed in window definition" +msgstr "funkcje okna nie są dopuszczalne w definicji okna" + +#: 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 "" +"kolumna \"%s.%s\" musi występować w klauzuli GROUP BY lub być użyta w " +"funkcji agregującej" + +#: parser/parse_agg.c:679 +#, c-format +msgid "subquery uses ungrouped column \"%s.%s\" from outer query" +msgstr "" +"podzapytanie używa niegrupowanej kolumny \"%s.%s\" z zapytania zewnętrznego" + +#: parser/parse_clause.c:421 +#, c-format +msgid "JOIN/ON clause refers to \"%s\", which is not part of JOIN" +msgstr "klauzula JOIN/ON odwołuje się do \"%s\", co nie jest częścią JOIN" + +#: parser/parse_clause.c:502 +msgid "subquery in FROM cannot have SELECT INTO" +msgstr "podzapytanie w klauzuli FROM nie może posiadać SELECT INTO" + +#: parser/parse_clause.c:524 +msgid "subquery in FROM cannot refer to other relations of same query level" +msgstr "" +"podzapytanie w FROM nie może odwoływać się do innych relacji tego samego " +"poziomu zapytania" + +#: parser/parse_clause.c:580 +msgid "" +"function expression in FROM cannot refer to other relations of same query " +"level" +msgstr "" +"wyrażenie funkcyjne w FROM nie może odwoływać się do innych relacji tego " +"samego poziomu zapytania" + +#: parser/parse_clause.c:593 +msgid "cannot use aggregate function in function expression in FROM" +msgstr "nie można użyć funkcji agregującej w wyrażeniu funkcyjnym w FROM" + +#: parser/parse_clause.c:600 +msgid "cannot use window function in function expression in FROM" +msgstr "nie można użyć funkcji okna w wyrażeniu funkcyjnym w FROM" + +#: parser/parse_clause.c:877 +#, 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" + +#: parser/parse_clause.c:892 +#, 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" + +#: parser/parse_clause.c:901 +#, 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" + +#: parser/parse_clause.c:915 +#, 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" + +#: parser/parse_clause.c:924 +#, 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" + +#: parser/parse_clause.c:981 +#, c-format +msgid "column alias list for \"%s\" has too many entries" +msgstr "lista aliasów kolumn dla \"%s\" posiada zbyt wiele pozycji" + +#. 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 "argument %s nie może zawierać zmiennych" + +#. 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 "argument %s nie może zawierać funkcji agregujących" + +#. 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 "argument %s nie może zawierać funkcji okna" + +#. 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\" jest niejednoznaczny" + +#. 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 "niecałkowita stała w %s" + +#. 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 pozycja %d nie jest na liście wyboru" + +#: parser/parse_clause.c:1625 +#, c-format +msgid "window \"%s\" is already defined" +msgstr "okno \"%s\" jest już zdefiniowane" + +#: parser/parse_clause.c:1679 +#, c-format +msgid "cannot override PARTITION BY clause of window \"%s\"" +msgstr "nie można nadpisać klauzuli PARTITION BY okna \"%s\"" + +#: parser/parse_clause.c:1691 +#, c-format +msgid "cannot override ORDER BY clause of window \"%s\"" +msgstr "nie można nadpisać klauzuli ORDER BY okna \"%s\"" + +#: parser/parse_clause.c:1713 +#, c-format +msgid "cannot override frame clause of window \"%s\"" +msgstr "nie można nadpisać klauzuli ramki okna \"%s\"" + +#: parser/parse_clause.c:1779 +#, fuzzy +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_clause.c:1780 +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_clause.c:1866 parser/parse_clause.c:1898 +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_clause.c:2020 +#, c-format +msgid "operator %s is not a valid ordering operator" +msgstr "operator %s nie jest prawidłowym operatorem porządkującym" + +#: parser/parse_clause.c:2022 +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_coerce.c:906 parser/parse_coerce.c:936 +#: parser/parse_coerce.c:954 parser/parse_coerce.c:969 +#: parser/parse_expr.c:1670 parser/parse_expr.c:2112 parser/parse_target.c:829 +#, c-format +msgid "cannot cast type %s to %s" +msgstr "nie można rzutować typu %s na %s" + +#: parser/parse_coerce.c:939 +msgid "Input has too few columns." +msgstr "Wejście posiada zbyt mało kolumn." + +#: parser/parse_coerce.c:957 +#, c-format +msgid "Cannot cast type %s to %s in column %d." +msgstr "Nie można rzutować typu %s na %s w kolumnie %d." + +#: parser/parse_coerce.c:972 +msgid "Input has too many columns." +msgstr "Wejście posiada zbyt wiele kolumn." + +#. translator: first %s is name of a SQL construct, eg WHERE +#: parser/parse_coerce.c:1015 +#, c-format +msgid "argument of %s must be type boolean, not type %s" +msgstr "argument %s musi być typu logicznego, nie typu %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:1025 parser/parse_coerce.c:1074 +#, c-format +msgid "argument of %s must not return a set" +msgstr "argument %s nie może zwracać zbioru" + +#. translator: first %s is name of a SQL construct, eg LIMIT +#: parser/parse_coerce.c:1062 +#, c-format +msgid "argument of %s must be type %s, not type %s" +msgstr "argument %s musi być typu %s, nie typu %s" + +#. translator: first %s is name of a SQL construct, eg CASE +#: parser/parse_coerce.c:1195 +#, c-format +msgid "%s types %s and %s cannot be matched" +msgstr "%s typy %s i %s nie mogą być dopasowane" + +#. translator: first %s is name of a SQL construct, eg CASE +#: parser/parse_coerce.c:1262 +#, c-format +msgid "%s could not convert type %s to %s" +msgstr "%s nie może przekształcić typu %s do %s" + +#: parser/parse_coerce.c:1513 +msgid "arguments declared \"anyelement\" are not all alike" +msgstr "" +"argumenty zadeklarowane jako \"anyelement\" nie wszystkie są do siebie " +"podobne" + +#: parser/parse_coerce.c:1533 +msgid "arguments declared \"anyarray\" are not all alike" +msgstr "" +"argumenty zadeklarowane jako \"anyarray\" nie wszystkie są do siebie podobne" + +#: parser/parse_coerce.c:1562 parser/parse_coerce.c:1710 +#: parser/parse_coerce.c:1742 +#, 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" + +#: parser/parse_coerce.c:1578 +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_coerce.c:1596 +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_coerce.c:1606 +#, c-format +msgid "type matched to anynonarray is an array type: %s" +msgstr "typ dopasowany do anynonarray jest typem tablicowym: %s" + +#: parser/parse_coerce.c:1616 +#, c-format +msgid "type matched to anyenum is not an enum type: %s" +msgstr "typ dopasowany do anyenum nie jest typem enumeracji: %s" + +#: parser/parse_cte.c:42 +#, 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" + +#: parser/parse_cte.c:44 +#, 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" + +#: parser/parse_cte.c:46 +#, 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" + +#: parser/parse_cte.c:48 +#, 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" + +#: parser/parse_cte.c:50 +#, 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" + +#: parser/parse_cte.c:132 +#, c-format +msgid "WITH query name \"%s\" specified more than once" +msgstr "nazwa \"%s\" kwerendy WITH określona więcej niż raz" + +#: parser/parse_cte.c:259 +msgid "subquery in WITH cannot have SELECT INTO" +msgstr "podzapytanie w klauzuli WITH nie może posiadać SELECT INTO" + +#: parser/parse_cte.c:271 +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_cte.c:320 +#, 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" + +#: parser/parse_cte.c:326 +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_cte.c:331 +#, 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\"" + +#: parser/parse_cte.c:335 +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_cte.c:426 +#, 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" + +#: parser/parse_cte.c:606 +msgid "mutual recursion between WITH items is not implemented" +msgstr "wzajemnej rekursja między elementami WITH nie jest realizowana" + +#: parser/parse_cte.c:658 +#, 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" + +#: parser/parse_cte.c:666 +#, 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]" + +#: parser/parse_cte.c:698 +msgid "ORDER BY in a recursive query is not implemented" +msgstr "ORDER BY w zapytaniu rekurencyjnym nie jest realizowana" + +#: parser/parse_cte.c:704 +msgid "OFFSET in a recursive query is not implemented" +msgstr "OFFSET w zapytaniu rekurencyjnym nie jest realizowana" + +#: parser/parse_cte.c:710 +msgid "LIMIT in a recursive query is not implemented" +msgstr "LIMIT w zapytaniu rekurencyjnym nie jest realizowana" + +#: parser/parse_cte.c:716 +msgid "FOR UPDATE/SHARE in a recursive query is not implemented" +msgstr "FOR UPDATE/SHARE w zapytaniu rekurencyjnym nie jest realizowana" + +#: parser/parse_cte.c:773 +#, 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" + +#: parser/parse_expr.c:364 parser/parse_expr.c:757 +#, c-format +msgid "column %s.%s does not exist" +msgstr "kolumna %s.%s nie istnieje" + +#: parser/parse_expr.c:376 +#, c-format +msgid "column \"%s\" not found in data type %s" +msgstr "nie odnaleziono kolumny \"%s\" w typie danych %s" + +#: parser/parse_expr.c:382 +#, 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_expr.c:388 +#, 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_expr.c:418 parser/parse_target.c:617 +msgid "row expansion via \"*\" is not supported here" +msgstr "wyrażenie wierszowe przez \"*\" nie jest tu dostępne" + +#: 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 "odnośnik kolumny \"%s\" jest niejednoznaczny" + +#: 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 "brak parametru $%d" + +#: parser/parse_expr.c:1021 +msgid "NULLIF requires = operator to yield boolean" +msgstr "NULLIF wymaga operatora = w celu uzyskania typu logicznego" + +#: parser/parse_expr.c:1200 +msgid "arguments of row IN must all be row expressions" +msgstr "argumenty wiersza IN muszą być wszystkie wyrażeniami wierszowymi" + +#: parser/parse_expr.c:1414 +msgid "subquery cannot have SELECT INTO" +msgstr "podzapytanie nie może posiadać SELECT INTO" + +#: parser/parse_expr.c:1442 +msgid "subquery must return a column" +msgstr "podzapytanie musi zwracać kolumnę" + +#: parser/parse_expr.c:1449 +msgid "subquery must return only one column" +msgstr "podzapytanie musi zwracać tylko jedną kolumnę" + +#: parser/parse_expr.c:1509 +msgid "subquery has too many columns" +msgstr "podzapytanie posiada zbyt wiele kolumn" + +#: parser/parse_expr.c:1514 +msgid "subquery has too few columns" +msgstr "podzapytanie posiada zbyt mało kolumn" + +#: parser/parse_expr.c:1610 +msgid "cannot determine type of empty array" +msgstr "nie można określić typu pustej tabeli" + +#: parser/parse_expr.c:1611 +msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]." +msgstr "Jawnie rzutuj na wymagany typ, na przykład ARRAY[]::integer[]." + +#: parser/parse_expr.c:1625 +#, c-format +msgid "could not find element type for data type %s" +msgstr "nie odnaleziono typu elementu dla typu danych %s" + +#: parser/parse_expr.c:1826 +msgid "unnamed XML attribute value must be a column reference" +msgstr "wartość atrybutu XML bez nazwy musi być wskazaniem na kolumnę" + +#: parser/parse_expr.c:1827 +msgid "unnamed XML element value must be a column reference" +msgstr "wartość elementu XML bez nazwy musi być wskazaniem na kolumnę" + +#: parser/parse_expr.c:1842 +#, c-format +msgid "XML attribute name \"%s\" appears more than once" +msgstr "nazwa atrybutu XML \"%s\" pojawia się więcej niż raz" + +#: parser/parse_expr.c:1949 +#, c-format +msgid "cannot cast XMLSERIALIZE result to %s" +msgstr "nie można rzutować wyniku XMLSERIALIZE na %s" + +#: parser/parse_expr.c:2185 parser/parse_expr.c:2385 +msgid "unequal number of entries in row expressions" +msgstr "nierówna liczba wpisów w wyrażeniach wierszowych" + +#: parser/parse_expr.c:2195 +msgid "cannot compare rows of zero length" +msgstr "nie można porównywać wierszy zerowej długości" + +#: parser/parse_expr.c:2220 +#, 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" + +#: parser/parse_expr.c:2227 +msgid "row comparison operator must not return a set" +msgstr "operator porównywania wierszy nie może zwracać grupy" + +#: parser/parse_expr.c:2286 parser/parse_expr.c:2331 +#, c-format +msgid "could not determine interpretation of row comparison operator %s" +msgstr "nie można określić interpretacji operatora porównywania wierszy %s" + +#: parser/parse_expr.c:2288 +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_expr.c:2333 +msgid "There are multiple equally-plausible candidates." +msgstr "Jest wiele równie odpowiednich kandydatów." + +#: parser/parse_expr.c:2425 +msgid "IS DISTINCT FROM requires = operator to yield boolean" +msgstr "IS DISTINCT FROM wymaga operatora = w celu uzyskania typu logicznego" + +#: parser/parse_func.c:147 +#, c-format +msgid "argument name \"%s\" used more than once" +msgstr "nazwa argumentu \"%s\" użyta więcej niż raz" + +#: parser/parse_func.c:158 +msgid "positional argument cannot follow named argument" +msgstr "argument pozycyjny nie może występować po argumencie nazwanym" + +#: parser/parse_func.c:236 +#, c-format +msgid "%s(*) specified, but %s is not an aggregate function" +msgstr "%s(*) określono, ale %s nie jest funkcją agregującą" + +#: parser/parse_func.c:243 +#, c-format +msgid "DISTINCT specified, but %s is not an aggregate function" +msgstr "określono klauzulę DISTINCT, ale %s nie jest funkcją agregującą" + +#: parser/parse_func.c:249 +#, 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ą" + +#: parser/parse_func.c:255 +#, 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ą" + +#: parser/parse_func.c:277 +#, c-format +msgid "function %s is not unique" +msgstr "funkcja %s nie jest unikalna" + +#: parser/parse_func.c:280 +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_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 "" +"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_func.c:302 +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/parse_func.c:412 parser/parse_func.c:478 +#, 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ą" + +#: parser/parse_func.c:419 +msgid "aggregates cannot return sets" +msgstr "agregaty nie mogą zwracać grup" + +#: parser/parse_func.c:431 +msgid "aggregates cannot use named arguments" +msgstr "agregaty nie mogą używać nazwanych argumentów" + +#: parser/parse_func.c:450 +msgid "window function call requires an OVER clause" +msgstr "wywołanie funkcji okna wymaga klauzuli OVER" + +#: parser/parse_func.c:468 +msgid "DISTINCT is not implemented for window functions" +msgstr "DISTINCT nie zostało zaimplementowane w funkcjach okna" + +#: parser/parse_func.c:488 +msgid "aggregate ORDER BY is not implemented for window functions" +msgstr "agregat ORDER BY nie został zaimplementowany dla funkcji okna" + +#: parser/parse_func.c:494 +msgid "window functions cannot return sets" +msgstr "funkcja okna nie może zwracać zbiorów" + +#: parser/parse_func.c:505 +msgid "window functions cannot use named arguments" +msgstr "funkcje nie mogą używać nazwanych argumentów" + +#: parser/parse_func.c:1589 +#, c-format +msgid "aggregate %s(*) does not exist" +msgstr "agregat %s(*) nie istnieje" + +#: parser/parse_func.c:1594 +#, c-format +msgid "aggregate %s does not exist" +msgstr "agregat %s nie istnieje" + +#: parser/parse_func.c:1613 +#, c-format +msgid "function %s is not an aggregate" +msgstr "funkcja %s nie jest agregatem" + +#: parser/parse_node.c:83 +#, c-format +msgid "target lists can have at most %d entries" +msgstr "listy docelowe mogą mieć najwyżej %d pozycji" + +#: parser/parse_node.c:240 +#, c-format +msgid "cannot subscript type %s because it is not an array" +msgstr "nie indeksować typu %s ponieważ nie jest tablicą" + +#: parser/parse_node.c:342 parser/parse_node.c:369 +msgid "array subscript must have type integer" +msgstr "indeks tablicy musi mieć typ integer" + +#: parser/parse_node.c:393 +#, 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" + +#: parser/parse_oper.c:124 parser/parse_oper.c:718 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 nie istnieje: %s" + +#: parser/parse_oper.c:221 +msgid "Use an explicit ordering operator or modify the query." +msgstr "Użyj jawnego operatora porządkującego lub zmodyfikuj kwerendę." + +#: parser/parse_oper.c:225 utils/adt/arrayfuncs.c:3176 +#: utils/adt/arrayfuncs.c:3695 utils/adt/rowtypes.c:1157 +#, 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" + +#: parser/parse_oper.c:476 +#, c-format +msgid "operator requires run-time type coercion: %s" +msgstr "operator wymaga zgodności typu czasu wykonania: %s" + +#: parser/parse_oper.c:710 +#, c-format +msgid "operator is not unique: %s" +msgstr "operator nie jest unikalny: %s" + +#: parser/parse_oper.c:712 +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." + +#: parser/parse_oper.c:720 +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." + +#: parser/parse_oper.c:779 parser/parse_oper.c:893 +#, c-format +msgid "operator is only a shell: %s" +msgstr "operator jest jedynie powłoką: %s" + +#: parser/parse_oper.c:881 +msgid "op ANY/ALL (array) requires array on right side" +msgstr "op ANY/ALL (tablica) wymaga tablicy po prawej stronie" + +#: parser/parse_oper.c:923 +msgid "op ANY/ALL (array) requires operator to yield boolean" +msgstr "op ANY/ALL (tablica) wymaga operatora zwracającego typ logiczny" + +#: parser/parse_oper.c:928 +msgid "op ANY/ALL (array) requires operator not to return a set" +msgstr "op ANY/ALL (tablica) wymaga operatora nie zwracającego grupy" + +#: parser/parse_param.c:215 +#, c-format +msgid "inconsistent types deduced for parameter $%d" +msgstr "niezgodne typy wyprowadzone dla parametru $%d" + +#: parser/parse_relation.c:147 +#, c-format +msgid "table reference \"%s\" is ambiguous" +msgstr "wskazanie tabeli \"%s\" jest niejednoznaczne" + +#: parser/parse_relation.c:183 +#, c-format +msgid "table reference %u is ambiguous" +msgstr "wskazanie tabeli %u jest niejednoznaczne" + +#: parser/parse_relation.c:343 +#, c-format +msgid "table name \"%s\" specified more than once" +msgstr "nazwa tabeli \"%s\" określona więcej niż raz" + +#: 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 "tabela \"%s\" posiada %d dostępnych kolumn ale %d kolumn określonych" + +#: parser/parse_relation.c:784 +#, c-format +msgid "too many column aliases specified for function %s" +msgstr "określono zbyt wiele aliasów kolumn w funkcji %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 "" +"Występuje element WITH o nazwie \"%s\", ale nie może mieć odniesień z tej " +"części zapytania." + +#: parser/parse_relation.c:852 +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." + +#: parser/parse_relation.c:1125 +msgid "" +"a column definition list is only allowed for functions returning \"record\"" +msgstr "" +"definicja listy kolumn jest dozwolona jedynie dla funkcji zwracających " +"\"record\"" + +#: parser/parse_relation.c:1133 +msgid "a column definition list is required for functions returning \"record\"" +msgstr "" +"definicja listy kolumn jest wymagana dla funkcji zwracających \"record\"" + +#: parser/parse_relation.c:1184 +#, c-format +msgid "function \"%s\" in FROM has unsupported return type %s" +msgstr "funkcja \"%s\" w klauzuli FROM posiada niewspierany typ zwracany %s" + +#: parser/parse_relation.c:1258 +#, 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" + +#: parser/parse_relation.c:1314 +#, c-format +msgid "joins can have at most %d columns" +msgstr "złączenia mogą mieć maksymalnie do %d kolumn" + +#: parser/parse_relation.c:1405 +#, c-format +msgid "WITH query \"%s\" does not have a RETURNING clause" +msgstr "kwerenda WITH \"%s\" nie posiada klauzuli RETURNING" + +#: parser/parse_relation.c:2087 +#, c-format +msgid "column %d of relation \"%s\" does not exist" +msgstr "kolumna %d relacji \"%s\" nie istnieje" + +#: parser/parse_relation.c:2471 +#, c-format +msgid "invalid reference to FROM-clause entry for table \"%s\"" +msgstr "nieprawidłowe wskazanie na pozycję w klauzuli FROM dla tabeli \"%s\"" + +#: parser/parse_relation.c:2474 +#, c-format +msgid "Perhaps you meant to reference the table alias \"%s\"." +msgstr "Być może chodziło ci o wskazanie aliasu tabeli \"%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 "" +"Występuje wpis dla tabeli \"%s\", ale nie może mieć odniesień z tej części " +"zapytania." + +#: parser/parse_relation.c:2482 +#, c-format +msgid "missing FROM-clause entry for table \"%s\"" +msgstr "brakująca klauzula FROM dla tabeli \"%s\"" + +#: parser/parse_target.c:382 parser/parse_target.c:670 +#, c-format +msgid "cannot assign to system column \"%s\"" +msgstr "nie można przypisywać do kolumny systemowej \"%s\"" + +#: parser/parse_target.c:410 +msgid "cannot set an array element to DEFAULT" +msgstr "nie można ustawić elementu tabeli na DEFAULT" + +#: parser/parse_target.c:415 +msgid "cannot set a subfield to DEFAULT" +msgstr "nie można ustawić pola podrzędnego na DEFAULT" + +#: parser/parse_target.c:484 +#, 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" + +#: 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 "" +"nie można przypisać do pola \"%s\" kolumny \"%s\" ponieważ jego typ %s nie " +"jest typem złożonym" + +#: 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 "" +"nie można przypisać do pola \"%s\" kolumny \"%s\" ponieważ nie występuje " +"kolumna o typie danych %s" + +#: parser/parse_target.c:730 +#, 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" + +#: parser/parse_target.c:740 +#, 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" + +#: parser/parse_target.c:1126 +msgid "SELECT * with no tables specified is not valid" +msgstr "SELECT * bez określonych tabel nie jest poprawne" + +#: parser/parse_type.c:83 +#, c-format +msgid "improper %%TYPE reference (too few dotted names): %s" +msgstr "niepoprawne wskazanie %%TYPE (za mało nazw oddzielonych kropkami): %s" + +#: parser/parse_type.c:105 +#, c-format +msgid "improper %%TYPE reference (too many dotted names): %s" +msgstr "niepoprawne wskazanie %%TYPE (za wiele nazw oddzielonych kropkami): %s" + +#: parser/parse_type.c:127 +#, c-format +msgid "type reference %s converted to %s" +msgstr "wskazanie typu %s przekształcone do %s" + +#: parser/parse_type.c:202 utils/cache/typcache.c:195 +#, c-format +msgid "type \"%s\" is only a shell" +msgstr "typ \"%s\" jest jedynie powłoką" + +#: parser/parse_type.c:287 +#, c-format +msgid "type modifier is not allowed for type \"%s\"" +msgstr "modyfikator typu nie jest dopuszczalny dla typu \"%s\"" + +#: parser/parse_type.c:330 +msgid "type modifiers must be simple constants or identifiers" +msgstr "modyfikatory typów muszą być prostymi stałymi lub identyfikatorami" + +#: parser/parse_type.c:641 parser/parse_type.c:740 +#, c-format +msgid "invalid type name \"%s\"" +msgstr "nieprawidłowa nazwa typu \"%s\"" + +#: parser/parse_utilcmd.c:181 +#, c-format +msgid "relation \"%s\" already exists, skipping" +msgstr "relacja \"%s\" już istnieje, pominięto" + +#: parser/parse_utilcmd.c:334 +#, fuzzy +msgid "array of serial is not implemented" +msgstr "tablica serialu nie jest zrealizowana" + +#: parser/parse_utilcmd.c:382 +#, 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\"" + +#: parser/parse_utilcmd.c:483 parser/parse_utilcmd.c:495 +#, 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\"" + +#: parser/parse_utilcmd.c:507 +#, 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\"" + +#: parser/parse_utilcmd.c:1440 +msgid "cannot use an existing index in CREATE TABLE" +msgstr "nie można użyć istniejącego indeksu w CREATE TABLE" + +#: parser/parse_utilcmd.c:1460 +#, c-format +msgid "index \"%s\" is already associated with a constraint" +msgstr "indeks \"%s\" jest już związany z ograniczeniem" + +#: parser/parse_utilcmd.c:1468 +#, c-format +msgid "index \"%s\" does not belong to table \"%s\"" +msgstr "indeks \"%s\" nie należy do tabeli \"%s\"" + +#: parser/parse_utilcmd.c:1475 +#, c-format +msgid "index \"%s\" is not valid" +msgstr "indeks \"%s\" nie jest poprawny" + +#: parser/parse_utilcmd.c:1481 +#, c-format +msgid "index \"%s\" is not ready" +msgstr "indeks \"%s\" nie jest gotowy" + +#: parser/parse_utilcmd.c:1487 +#, c-format +msgid "\"%s\" is not a unique index" +msgstr "\"%s\" nie jest indeksem unikalnym" + +#: parser/parse_utilcmd.c:1488 parser/parse_utilcmd.c:1495 +#: parser/parse_utilcmd.c:1502 parser/parse_utilcmd.c:1572 +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." + +#: parser/parse_utilcmd.c:1494 +#, c-format +msgid "index \"%s\" contains expressions" +msgstr "indeks \"%s\" zawiera wyrażenia" + +#: parser/parse_utilcmd.c:1501 +#, c-format +msgid "\"%s\" is a partial index" +msgstr "\"%s\" jest indeksem częściowym" + +#: parser/parse_utilcmd.c:1513 +#, c-format +msgid "\"%s\" is a deferrable index" +msgstr "\"%s\" jest indeksem odraczalnym" + +#: parser/parse_utilcmd.c:1514 +msgid "Cannot create a non-deferrable constraint using a deferrable index." +msgstr "" +"Nie można utworzyć nieodraczalnego ograniczenia przy użyciu odraczalnego " +"indeksu." + +#: parser/parse_utilcmd.c:1571 +#, c-format +msgid "index \"%s\" does not have default sorting behavior" +msgstr "indeks \"%s\" nie ma domyślnego zachowania sortowania" + +#: parser/parse_utilcmd.c:1716 +#, c-format +msgid "column \"%s\" appears twice in primary key constraint" +msgstr "kolumna \"%s\" występuje dwukrotnie w kluczu głównym" + +#: parser/parse_utilcmd.c:1722 +#, c-format +msgid "column \"%s\" appears twice in unique constraint" +msgstr "kolumna \"%s\" występuje dwukrotnie w ograniczeniu unikalnym" + +#: parser/parse_utilcmd.c:1887 +msgid "index expression cannot return a set" +msgstr "wyrażenie indeksowe nie może zwracać zbioru" + +#: parser/parse_utilcmd.c:1897 +msgid "" +"index expressions and predicates can refer only to the table being indexed" +msgstr "" +"wyrażenia indeksowe i predykaty mogą wskazywać tylko zindeksowane tabele" + +#: parser/parse_utilcmd.c:1994 +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" + +#: parser/parse_utilcmd.c:2000 +msgid "cannot use aggregate function in rule WHERE condition" +msgstr "nie można użyć funkcji agregującej w warunku WHERE reguły" + +#: parser/parse_utilcmd.c:2004 +msgid "cannot use window function in rule WHERE condition" +msgstr "nie można używać funkcji okna w warunku WHERE reguły" + +#: parser/parse_utilcmd.c:2076 +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" + +#: parser/parse_utilcmd.c:2094 parser/parse_utilcmd.c:2193 +#: rewrite/rewriteHandler.c:442 rewrite/rewriteManip.c:1024 +msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" +msgstr "warunkowe wyrażenia UNION/INTERSECT/EXCEPT nie są zaimplementowane" + +#: parser/parse_utilcmd.c:2112 +msgid "ON SELECT rule cannot use OLD" +msgstr "reguła ON SELECT nie może używać OLD" + +#: parser/parse_utilcmd.c:2116 +msgid "ON SELECT rule cannot use NEW" +msgstr "reguła ON SELECT nie może używać NEW" + +#: parser/parse_utilcmd.c:2125 +msgid "ON INSERT rule cannot use OLD" +msgstr "reguła ON INSERT nie może używać OLD" + +#: parser/parse_utilcmd.c:2131 +msgid "ON DELETE rule cannot use NEW" +msgstr "reguła ON DELETE nie może używać NEW" + +#: parser/parse_utilcmd.c:2159 +msgid "cannot refer to OLD within WITH query" +msgstr "nie może odnosić się do OLD z kwerendy WITH" + +#: parser/parse_utilcmd.c:2166 +msgid "cannot refer to NEW within WITH query" +msgstr "nie może odnosić się do NEW z kwerendy WITH" + +#: parser/parse_utilcmd.c:2449 +msgid "misplaced DEFERRABLE clause" +msgstr "niewłaściwie położona klauzula DEFERRABLE" + +#: parser/parse_utilcmd.c:2454 parser/parse_utilcmd.c:2469 +msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" +msgstr "wielokrotne klauzule DEFERRABLE/NOT DEFERRABLE niedozwolone" + +#: parser/parse_utilcmd.c:2464 +msgid "misplaced NOT DEFERRABLE clause" +msgstr "niewłaściwie położona klauzula NOT DEFERRABLE" + +#: parser/parse_utilcmd.c:2477 parser/parse_utilcmd.c:2503 gram.y:4153 +msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" +msgstr "ograniczenie zadeklarowane jako INITIALLY DEFERRED musi być DEFERRABLE" + +#: parser/parse_utilcmd.c:2485 +msgid "misplaced INITIALLY DEFERRED clause" +msgstr "niewłaściwie położona klauzula INITIALLY DEFERRABLE" + +#: parser/parse_utilcmd.c:2490 parser/parse_utilcmd.c:2516 +msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" +msgstr "wielokrotne klauzule INITIALLY IMMEDIATE/DEFERRED niedozwolone" + +#: parser/parse_utilcmd.c:2511 +msgid "misplaced INITIALLY IMMEDIATE clause" +msgstr "niewłaściwie położona klauzula INITIALLY IMMEDIATE" + +#: parser/parse_utilcmd.c:2702 +#, 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)" + +#: parser/scansup.c:190 +#, c-format +msgid "identifier \"%s\" will be truncated to \"%s\"" +msgstr "identyfikator \"%s\" zostanie obcięty do \"%s\"" + +#: parser/parse_collate.c:214 parser/parse_collate.c:538 +#, c-format +msgid "collation mismatch between implicit collations \"%s\" and \"%s\"" +msgstr "" +"niedopasowanie porównań pomiędzy niejawnymi porównaniami \"%s\" i \"%s\"" + +#: 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 "" +"Możesz wybrać porównanie przez zastosowanie klauzuli COLLATE do jednego lub " +"obu wyrażeń." + +#: parser/parse_collate.c:763 +#, c-format +msgid "collation mismatch between explicit collations \"%s\" and \"%s\"" +msgstr "niedopasowanie porównań pomiędzy jawnymi porównaniami \"%s\" i \"%s\"" + +#: gram.y:915 +#, c-format +msgid "unrecognized role option \"%s\"" +msgstr "nieznana opcja roli \"%s\"" + +#: gram.y:1301 +msgid "current database cannot be changed" +msgstr "bieżąca baza danych nie może być zmieniona" + +#: gram.y:1419 gram.y:1434 +msgid "time zone interval must be HOUR or HOUR TO MINUTE" +msgstr "przedział strefy czasowej musi być HOUR lub HOUR TO MINUTE" + +#: gram.y:1439 gram.y:9246 gram.y:11736 +msgid "interval precision specified twice" +msgstr "dokładność interwału wskazana dwukrotnie" + +#: gram.y:2887 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 jeszcze nie zaimplementowano" + +#: gram.y:3005 +msgid "CREATE TABLE AS cannot specify INTO" +msgstr "CREATE TABLE AS nie może zawierać INTO" + +#: gram.y:4058 +msgid "duplicate trigger events specified" +msgstr "wskazano powielone zdarzenia wyzwalacza" + +#: gram.y:4160 +msgid "conflicting constraint properties" +msgstr "konflikt właściwości ograniczeń" + +#: gram.y:4221 +msgid "CREATE ASSERTION is not yet implemented" +msgstr "CREATE ASSERTION jeszcze nie zaimplementowano" + +#: gram.y:4237 +msgid "DROP ASSERTION is not yet implemented" +msgstr "DROP ASSERTION jeszcze nie zaimplementowano" + +#: gram.y:4573 +msgid "RECHECK is no longer required" +msgstr "RECHECK nie jest dłużej wymagane" + +#: gram.y:4574 +msgid "Update your data type." +msgstr "Zaktualizuj swój typ danych." + +#: gram.y:6217 utils/adt/regproc.c:630 +msgid "missing argument" +msgstr "brakujący argument" + +#: gram.y:6218 utils/adt/regproc.c:631 +msgid "Use NONE to denote the missing argument of a unary operator." +msgstr "" +"Użyj NONE do oznaczenia brakuje argumentów w jednoargumentowym operatorze." + +#: gram.y:7297 gram.y:7303 gram.y:7309 +msgid "WITH CHECK OPTION is not implemented" +msgstr "WITH CHECK OPTION jeszcze nie zaimplementowano" + +#: gram.y:7986 +msgid "column name list not allowed in CREATE TABLE / AS EXECUTE" +msgstr "lista nazw kolumn jest niedozwolona w CREATE TABLE / AS EXECUTE" + +#: gram.y:8210 +msgid "number of columns does not match number of values" +msgstr "liczba kolumn nie zgadza się z liczbą wartości" + +#: gram.y:8660 +msgid "LIMIT #,# syntax is not supported" +msgstr "składnia LIMIT #,# jest nieobsługiwana" + +#: gram.y:8661 +msgid "Use separate LIMIT and OFFSET clauses." +msgstr "Użyj oddzielnych klauzul LIMIT i OFFSET." + +#: gram.y:8879 +msgid "VALUES in FROM must have an alias" +msgstr "VALUES we FROM musi mieć alias" + +#: gram.y:8880 +msgid "For example, FROM (VALUES ...) [AS] foo." +msgstr "Dla przykładu, FROM (VALUES ...) [AS] foo." + +#: gram.y:8885 +msgid "subquery in FROM must have an alias" +msgstr "podzapytanie z FROM musi mieć alias" + +#: gram.y:8886 +msgid "For example, FROM (SELECT ...) [AS] foo." +msgstr "Dla przykładu, FROM (SELECT ...) [AS] foo." + +#: gram.y:9372 +msgid "precision for type float must be at least 1 bit" +msgstr "precyzja dla typu zmiennoprzecinkowego musi mieć co najmniej 1 bit" + +#: gram.y:9381 +msgid "precision for type float must be less than 54 bits" +msgstr "precyzja dla typu zmiennoprzecinkowego musi mieć co najwyżej 54 bity" + +#: gram.y:10095 +msgid "UNIQUE predicate is not yet implemented" +msgstr "predykat UNIQUE nie jest jeszcze zaimplementowany" + +#: gram.y:11003 +msgid "RANGE PRECEDING is only supported with UNBOUNDED" +msgstr "RANGE PRECEDING jest obsługiwany tylko z UNBOUNDED" + +#: gram.y:11009 +msgid "RANGE FOLLOWING is only supported with UNBOUNDED" +msgstr "RANGE FOLLOWING jest obsługiwany tylko z UNBOUNDED" + +#: gram.y:11036 gram.y:11059 +msgid "frame start cannot be UNBOUNDED FOLLOWING" +msgstr "UNBOUNDED FOLLOWING nie może być początkiem ramki" + +#: gram.y:11041 +msgid "frame 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" + +#: gram.y:11064 +msgid "frame end cannot be UNBOUNDED PRECEDING" +msgstr "UNBOUNDED PRECEDING nie może być końcem ramki" + +#: gram.y:11070 +msgid "frame starting from current row cannot have preceding rows" +msgstr "początek ramki z bieżącego wiersza nie może mieć poprzednich wierszy" + +#: gram.y:11077 +msgid "frame starting from following row cannot have preceding rows" +msgstr "początek ramki z kolejnego wiersza nie może mieć poprzednich wierszy" + +#: gram.y:11711 +msgid "type modifier cannot have parameter name" +msgstr "modyfikator typu nie mieć nazwy parametru" + +#: gram.y:12306 gram.y:12514 +msgid "improper use of \"*\"" +msgstr "niepoprawne użycie \"*\"" + +#: gram.y:12445 +msgid "wrong number of parameters on left side of OVERLAPS expression" +msgstr "niepoprawna liczba parametrów po lewej stronie wyrażenia OVERLAPS" + +#: gram.y:12452 +msgid "wrong number of parameters on right side of OVERLAPS expression" +msgstr "niepoprawna liczba parametrów po prawej stronie wyrażenia OVERLAPS" + +#: gram.y:12577 +msgid "multiple ORDER BY clauses not allowed" +msgstr "wielokrotna klauzula ORDER BY nie jest dopuszczalna" + +#: gram.y:12588 +msgid "multiple OFFSET clauses not allowed" +msgstr "wielokrotna klauzula OFFSET nie jest dopuszczalna" + +#: gram.y:12597 +msgid "multiple LIMIT clauses not allowed" +msgstr "wielokrotna klauzula LIMIT nie jest dopuszczalna" + +#: gram.y:12606 +msgid "multiple WITH clauses not allowed" +msgstr "wielokrotna klauzula WITH nie jest dopuszczalna" + +#: gram.y:12751 +msgid "OUT and INOUT arguments aren't allowed in TABLE functions" +msgstr "argumenty OUT i INOUT nie są dozwolone w funkcji TABLE" + +#: gram.y:12852 +msgid "multiple COLLATE clauses not allowed" +msgstr "wielokrotna klauzula COLLATE nie jest dopuszczalna" + +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:12890 gram.y:12903 +#, c-format +msgid "%s constraints cannot be marked DEFERRABLE" +msgstr "ograniczenia %s nie mogą być oznaczone jako DEFERRABLE" + +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:12916 +#, c-format +msgid "%s constraints cannot be marked NOT VALID" +msgstr "ograniczenia %s nie mogą być oznaczone jako NOT VALID" + +#: scan.l:411 +msgid "unterminated /* comment" +msgstr "nie zakończony komentarz /*" + +#: scan.l:440 +msgid "unterminated bit string literal" +msgstr "niezakończona stała łańcucha bitów" + +#: scan.l:461 +msgid "unterminated hexadecimal string literal" +msgstr "niezakończona stała łańcucha szesnastkowego" + +#: scan.l:511 +msgid "unsafe use of string constant with Unicode escapes" +msgstr "niebezpieczne jest używanie stałej łańcuchowej z ucieczkami Unikodu" + +#: scan.l:512 +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." + +#: 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 "niepoprawna Unikodowa para zastępcza" + +#: scan.l:586 +msgid "invalid Unicode escape" +msgstr "nieprawidłowa ucieczka Unikodowa" + +#: scan.l:587 +msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX." +msgstr "ucieczki Unikodowe muszą mieć format \\uXXXX lub \\UXXXXXXXX." + +#: scan.l:598 +msgid "unsafe use of \\' in a string literal" +msgstr "niebezpieczne użycie \\' w literałach znakowych" + +#: scan.l:599 +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." + +#: scan.l:629 repl_scanner.l:97 +msgid "unterminated quoted string" +msgstr "niezakończona stała łańcuchowa" + +#: scan.l:674 +msgid "unterminated dollar-quoted string" +msgstr "niezakończona stała łańcuchowa cytowana znakiem dolara" + +#: scan.l:691 scan.l:703 scan.l:717 +msgid "zero-length delimited identifier" +msgstr "identyfikator ogranicznika o długości zero" + +#: scan.l:730 +msgid "unterminated quoted identifier" +msgstr "niezakończony identyfikator cytowany" + +#: scan.l:834 +msgid "operator too long" +msgstr "operator zbyt długi" + +#. translator: %s is typically the translation of "syntax error" +#: scan.l:992 +#, c-format +msgid "%s at end of input" +msgstr "%s na końcu danych wejściowych" + +#. translator: first %s is typically the translation of "syntax error" +#: scan.l:1000 +#, c-format +msgid "%s at or near \"%s\"" +msgstr "%s w lub blisko \"%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 "" +"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:1189 scan.l:1325 +msgid "invalid Unicode escape value" +msgstr "błędna wartość ucieczki Unikodowej" + +#: scan.l:1214 +msgid "invalid Unicode escape character" +msgstr "błędny znak ucieczki Unikodowej" + +#: scan.l:1381 +msgid "nonstandard use of \\' in a string literal" +msgstr "niestandardowe użycie \\' w łańcuchu znaków" + +#: scan.l:1382 +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'...')." + +#: scan.l:1391 +msgid "nonstandard use of \\\\ in a string literal" +msgstr "niestandardowe użycie \\\\ w łańcuchu znaków" + +#: scan.l:1392 +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'\\\\'." + +#: scan.l:1406 +msgid "nonstandard use of escape in a string literal" +msgstr "niestandardowe użycie ucieczki w łańcuchu znaków" + +#: scan.l:1407 +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'." + +#: port/win32/security.c:43 +#, c-format +msgid "could not open process token: error code %d\n" +msgstr "nie można otworzyć tokenu procesu: kod błędu %d\n" + +#: port/win32/security.c:63 +#, c-format +msgid "could not get SID for Administrators group: error code %d\n" +msgstr "nie można pobrać SID dla grupy Administratorów: kod błędu %d\n" + +#: port/win32/security.c:72 +#, c-format +msgid "could not get SID for PowerUsers group: error code %d\n" +msgstr "" +"nie można pobrać SID dla grupy Użytkowników zaawansowanych: kod błędu %d\n" + +#: port/win32/signal.c:189 +#, c-format +msgid "could not create signal listener pipe for PID %d: error code %d" +msgstr "nie można utworzyć rury nasłuchu sygnału dla PID %d: kod błędu %d" + +#: 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 "nie można utworzyć rury nasłuchu sygnału: kod błędu %d; ponawianie\n" + +#: port/win32/signal.c:312 +#, c-format +msgid "could not create signal dispatch thread: error code %d\n" +msgstr "nie można utworzyć wątku wysyłki sygnału: kod błędu %d\n" + +#: port/win32/crashdump.c:108 +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" + +#: port/win32/crashdump.c:116 +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" + +#: port/win32/crashdump.c:147 +#, c-format +msgid "could not open crash dump file \"%s\" for writing: error code %u\n" +msgstr "" +"nie udało się otworzyć pliku zrzutu awaryjnego \"%s\" do zapisu: kod błędu " +"%u\n" + +#: port/win32/crashdump.c:154 +#, c-format +msgid "wrote crash dump to file \"%s\"\n" +msgstr "zapisano zrzut awaryjny do pliku \"%s\"\n" + +#: port/win32/crashdump.c:156 +#, c-format +msgid "could not write crash dump to file \"%s\": error code %08x\n" +msgstr "" +"nie udało się zapisać zrzutu awaryjnego do pliku \"%s\": kod błędu %08x\n" + +#: port/sysv_sema.c:114 port/pg_sema.c:114 +#, c-format +msgid "could not create semaphores: %m" +msgstr "nie można utworzyć semaforów: %m" + +#: port/sysv_sema.c:115 port/pg_sema.c:115 +#, c-format +msgid "Failed system call was semget(%lu, %d, 0%o)." +msgstr "Nieudanym wywołaniem systemowym było semget(%lu, %d, 0%o)." + +#: port/sysv_sema.c:119 port/pg_sema.c:119 +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." + +#: port/sysv_sema.c:146 port/pg_sema.c:146 +#, 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 "" +"Prawdopodobnie powinieneś zwiększyć wartość SEMVMX jądra do co najmniej %d. " +"Sprawdź dokumentację PostgreSQL by uzyskać szczegóły." + +#: port/sysv_shmem.c:147 port/pg_shmem.c:147 +#, c-format +msgid "could not create shared memory segment: %m" +msgstr "nie można utworzyć segmentu pamięci współdzielonej: %m" + +#: 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 "Nieudanym wywołaniem systemowym było 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 "" +"Błąd ten zwykle oznacza, że żądanie współdzielonego segmentu pamięci " +"PostgreSQL przekroczyło parametr jądra SHMMAX. Możesz albo zmniejszyć " +"rozmiar żądania albo zmienić konfigurację jądra przez zwiększenie SHMMAX. " +"Aby zmniejszyć rozmiar żądania (obecnie %lu bajtów), zmniejsz zużycie przez " +"PostgreSQL pamięci współdzielonej, być może przez zmniejszenie " +"shared_buffers lub max_connections.\n" +"Jeśli rozmiar żądania jest już mały, możliwe, że jest mniejszy niż parametr " +"jądra SHMMIN, w którym to przypadku jest wymagane podniesienie wielkości " +"żądania lub rekonfiguracja SHMMIN.\n" +"Dokumentacja PostgreSQL zawiera więcej informacji o konfiguracji pamięci " +"współdzielonej." + +#: 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 "" +"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 zmniejszyć rozmiar żądania " +"lub skonfigurować jądro z większym parametrem SHMALL. 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.\n" +"Dokumentacja PostgreSQL zawiera więcej informacji o konfiguracji pamięci " +"współdzielonej." + +#: 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 "" +"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. Jeśli nie " +"można zwiększyć limitu pamięci współdzielonej, zmniejsz żądania PostgreSQL " +"pamięci współdzielonej (obecnie %lu bajtów), być może poprzez zmniejszenie " +"shared_buffers lub max_connections.\n" +"Dokumentacja PostgreSQL zawiera więcej informacji o konfiguracji pamięci " +"współdzielonej." + +#: port/sysv_shmem.c:439 port/pg_shmem.c:439 +#, c-format +msgid "could not stat data directory \"%s\": %m" +msgstr "nie można wykonać stat na folderze danych \"%s\": %m" + +#: port/unix_latch.c:237 port/pg_latch.c:237 +#: replication/libpqwalreceiver/libpqwalreceiver.c:233 +#, c-format +msgid "select() failed: %m" +msgstr "select() nie powiodła się: %m" + +#: port/win32_sema.c:94 +#, c-format +msgid "could not create semaphore: error code %d" +msgstr "nie można utworzyć semafora: kod błędu %d" + +#: port/win32_sema.c:161 +#, c-format +msgid "could not lock semaphore: error code %d" +msgstr "nie można zablokować semafora: kod błędu %d" + +#: port/win32_sema.c:174 +#, c-format +msgid "could not unlock semaphore: error code %d" +msgstr "nie można odblokować semafora: kod błędu %d" + +#: port/win32_sema.c:203 +#, c-format +msgid "could not try-lock semaphore: error code %d" +msgstr "nie można wypróbować blokady semafora: kod błędu %d" + +#: 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 "nie można utworzyć segmentu pamięci współdzielonej: %lu" + +#: port/win32_shmem.c:169 +#, c-format +msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)." +msgstr "" +"Nieudanym wywołaniem systemowym było CreateFileMapping(size=%lu, name=%s)." + +#: port/win32_shmem.c:193 +msgid "pre-existing shared memory block is still in use" +msgstr "istniejący już blok pamięci współdzielonej jest ciągle używany" + +#: port/win32_shmem.c:194 +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." + +#: port/win32_shmem.c:204 +msgid "Failed system call was DuplicateHandle." +msgstr "Nieudanym wywołaniem systemowym było DuplicateHandle." + +#: port/win32_shmem.c:225 +msgid "Failed system call was MapViewOfFileEx." +msgstr "Nieudanym wywołaniem systemowym było MapViewOfFileEx." + +#: postmaster/autovacuum.c:359 +#, c-format +msgid "could not fork autovacuum launcher process: %m" +msgstr "nie można rozwidlić procesu uruchamiania autoodkurzania: %m" + +#: postmaster/autovacuum.c:404 +msgid "autovacuum launcher started" +msgstr "uruchomiono program wywołujący autoodkurzanie" + +#: postmaster/autovacuum.c:760 +msgid "autovacuum launcher shutting down" +msgstr "zamknięto program wywołujący autoodkurzanie" + +#: postmaster/autovacuum.c:1395 +#, c-format +msgid "could not fork autovacuum worker process: %m" +msgstr "nie można rozwidlić proces roboczego autoodkurzania: %m" + +#: postmaster/autovacuum.c:1604 +#, c-format +msgid "autovacuum: processing database \"%s\"" +msgstr "autoodkurzanie: przetwarzanie bazy danych \"%s\"" + +#: postmaster/autovacuum.c:2007 +#, c-format +msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"" +msgstr "" +"autoodkurzanie: kasowanie sierot tabeli tymcz \"%s\".\"%s\" w bazie \"%s\"" + +#: postmaster/autovacuum.c:2019 +#, c-format +msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\"" +msgstr "" +"autoodkurzanie: znaleziono sieroty tabeli tymcz \"%s\".\"%s\" w bazie \"%s\"" + +#: postmaster/autovacuum.c:2289 +#, c-format +msgid "automatic vacuum of table \"%s.%s.%s\"" +msgstr "automatyczne odkurzanie tabeli \"%s.%s.%s\"" + +#: postmaster/autovacuum.c:2292 +#, c-format +msgid "automatic analyze of table \"%s.%s.%s\"" +msgstr "automatyczna analiza tabeli \"%s.%s.%s\"" + +#: postmaster/autovacuum.c:2778 +msgid "autovacuum not started because of misconfiguration" +msgstr "nie uruchomiono autoodkurzanie przez błąd konfiguracji" + +#: postmaster/autovacuum.c:2779 +msgid "Enable the \"track_counts\" option." +msgstr "Włącz opcję \"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] "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/bgwriter.c:486 +msgid "" +"Consider increasing the configuration parameter \"checkpoint_segments\"." +msgstr "Rozważ zwiększenie parametru konfiguracyjnego \"checkpoint_segments\"." + +#: postmaster/bgwriter.c:598 +#, c-format +msgid "transaction log switch forced (archive_timeout=%d)" +msgstr "wymuszono przełączenie dziennika transakcji (archive_timeout=%d)" + +#: postmaster/bgwriter.c:1056 +msgid "checkpoint request failed" +msgstr "żądanie punktu kontrolnego nie powiodło się" + +#: postmaster/bgwriter.c:1057 +msgid "Consult recent messages in the server log for details." +msgstr "Sprawdź poprzednie komunikaty w dzienniku serwera by poznać szczegóły." + +#: postmaster/bgwriter.c:1223 +#, 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" + +#: postmaster/pgarch.c:158 +#, c-format +msgid "could not fork archiver: %m" +msgstr "nie można rozwidlić archiwizatora: %m" + +#: postmaster/pgarch.c:450 +msgid "archive_mode enabled, yet archive_command is not set" +msgstr "włączono archive_mode, choć nie ustawiono jeszcze archive_command" + +#: postmaster/pgarch.c:465 +#, c-format +msgid "transaction log file \"%s\" could not be archived: too many failures" +msgstr "" +"plik dziennika transakcji \"%s\" nie mógł zostać zarchiwizowany: zbyt wiele " +"awarii" + +#: postmaster/pgarch.c:568 +#, c-format +msgid "archive command failed with exit code %d" +msgstr "polecenie archiwizacji nie powiodło się z kodem wyjścia %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 "Nieudane polecenie archiwizacji było: %s" + +#: postmaster/pgarch.c:577 +#, c-format +msgid "archive command was terminated by exception 0x%X" +msgstr "polecenie archiwizacji zostało zatrzymane przez wyjątek 0x%X" + +#: postmaster/pgarch.c:579 postmaster/postmaster.c:2872 +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/pgarch.c:584 +#, c-format +msgid "archive command was terminated by signal %d: %s" +msgstr "polecenie archiwizacji zostało zatrzymane przez sygnał %d: %s" + +#: postmaster/pgarch.c:591 +#, c-format +msgid "archive command was terminated by signal %d" +msgstr "polecenie archiwizacji zostało zatrzymane przez sygnał %d" + +#: postmaster/pgarch.c:600 +#, c-format +msgid "archive command exited with unrecognized status %d" +msgstr "polecenie archiwizacji zakończyło działanie z nieznanym stanem %d" + +#: postmaster/pgarch.c:612 +#, c-format +msgid "archived transaction log file \"%s\"" +msgstr "zarchiwizowano plik dziennika transakcji \"%s\"" + +#: postmaster/pgarch.c:661 +#, c-format +msgid "could not open archive status directory \"%s\": %m" +msgstr "nie można otworzyć folderu stanu archiwum \"%s\": %m" + +#: postmaster/pgstat.c:330 +#, c-format +msgid "could not resolve \"localhost\": %s" +msgstr "nie może rozwiązać \"localhost\": %s" + +#: postmaster/pgstat.c:353 +msgid "trying another address for the statistics collector" +msgstr "próba innego adresu do kolektora statystyk" + +#: postmaster/pgstat.c:362 +#, c-format +msgid "could not create socket for statistics collector: %m" +msgstr "nie można utworzyć gniazda dla kolektora statystyk: %m" + +#: postmaster/pgstat.c:374 +#, c-format +msgid "could not bind socket for statistics collector: %m" +msgstr "nie można dowiązać gniazda dla kolektora statystyk: %m" + +#: postmaster/pgstat.c:385 +#, c-format +msgid "could not get address of socket for statistics collector: %m" +msgstr "nie można pobrać adresu gniazda dla kolektora statystyk: %m" + +#: postmaster/pgstat.c:401 +#, c-format +msgid "could not connect socket for statistics collector: %m" +msgstr "nie można połączyć z gniazdem dla kolektora statystyk: %m" + +#: postmaster/pgstat.c:422 +#, 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" + +#: postmaster/pgstat.c:448 postmaster/pgstat.c:2996 +#, c-format +msgid "select() failed in statistics collector: %m" +msgstr "nie powiodło się select() na kolektorze statystyk: %m" + +#: postmaster/pgstat.c:463 +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:478 +#, 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" + +#: postmaster/pgstat.c:488 +msgid "incorrect test message transmission on socket for statistics collector" +msgstr "" +"niepoprawna transmisja komunikatu testowego na gnieździe dla kolektora " +"statystyk" + +#: postmaster/pgstat.c:511 +#, 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" + +#: postmaster/pgstat.c:521 +msgid "disabling statistics collector for lack of working socket" +msgstr "wyłączenie kolektora statystyk ze względu na brak działającego gniazda" + +#: postmaster/pgstat.c:623 +#, c-format +msgid "could not fork statistics collector: %m" +msgstr "nie można rozwidlić gniazda dla kolektora statystyk: %m" + +#: postmaster/pgstat.c:1153 postmaster/pgstat.c:1177 postmaster/pgstat.c:1208 +msgid "must be superuser to reset statistics counters" +msgstr "musisz być superużytkownikiem by zresetować liczniki statystyk" + +#: postmaster/pgstat.c:1184 utils/adt/pgstatfuncs.c:1547 +#, c-format +msgid "unrecognized reset target: \"%s\"" +msgstr "nierozpoznany cel resetu \"%s\"" + +#: postmaster/pgstat.c:1185 utils/adt/pgstatfuncs.c:1548 +msgid "Target must be \"bgwriter\"." +msgstr "Celem musi być \"bgwriter\"." + +#: postmaster/pgstat.c:2975 +#, c-format +msgid "poll() failed in statistics collector: %m" +msgstr "nie powiodło się poll() na kolektorze statystyk: %m" + +#: postmaster/pgstat.c:3020 +#, c-format +msgid "could not read statistics message: %m" +msgstr "nie można odczytać komunikatu statystyk: %m" + +#: postmaster/pgstat.c:3291 +#, c-format +msgid "could not open temporary statistics file \"%s\": %m" +msgstr "nie można otworzyć tymczasowego pliku statystyk \"%s\": %m" + +#: postmaster/pgstat.c:3363 +#, c-format +msgid "could not write temporary statistics file \"%s\": %m" +msgstr "nie można pisać do tymczasowego pliku statystyk \"%s\": %m" + +#: postmaster/pgstat.c:3372 +#, c-format +msgid "could not close temporary statistics file \"%s\": %m" +msgstr "nie można zamknąć tymczasowego pliku statystyk \"%s\": %m" + +#: postmaster/pgstat.c:3380 +#, 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" + +#: postmaster/pgstat.c:3486 postmaster/pgstat.c:3715 +#, c-format +msgid "could not open statistics file \"%s\": %m" +msgstr "nie można otworzyć pliku statystyk \"%s\": %m" + +#: postmaster/pgstat.c:3498 postmaster/pgstat.c:3508 postmaster/pgstat.c:3530 +#: postmaster/pgstat.c:3545 postmaster/pgstat.c:3608 postmaster/pgstat.c:3626 +#: postmaster/pgstat.c:3642 postmaster/pgstat.c:3660 postmaster/pgstat.c:3676 +#: postmaster/pgstat.c:3727 postmaster/pgstat.c:3738 +#, c-format +msgid "corrupted statistics file \"%s\"" +msgstr "uszkodzony plik statystyk \"%s\"" + +#: postmaster/pgstat.c:4036 +msgid "database hash table corrupted during cleanup --- abort" +msgstr "tabeli haszy bazy danych uszkodzona podczas czyszczenia --- przerwano" + +#: postmaster/postmaster.c:573 +#, c-format +msgid "%s: invalid argument for option -f: \"%s\"\n" +msgstr "%s: niepoprawny argument dla opcji -f: \"%s\"\n" + +#: postmaster/postmaster.c:659 +#, c-format +msgid "%s: invalid argument for option -t: \"%s\"\n" +msgstr "%s: niepoprawny argument dla opcji -t: \"%s\"\n" + +#: postmaster/postmaster.c:710 +#, c-format +msgid "%s: invalid argument: \"%s\"\n" +msgstr "%s: niepoprawny argument: \"%s\"\n" + +#: postmaster/postmaster.c:735 +#, 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" + +#: postmaster/postmaster.c:740 +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\"" + +#: postmaster/postmaster.c:743 +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\"" + +#: postmaster/postmaster.c:751 +#, c-format +msgid "%s: invalid datetoken tables, please fix\n" +msgstr "%s: niepoprawne tabele datetoken, proszę naprawić\n" + +#: postmaster/postmaster.c:857 +msgid "invalid list syntax for \"listen_addresses\"" +msgstr "nieprawidłowa składnie listy dla \"listen_addresses\"" + +#: postmaster/postmaster.c:887 +#, c-format +msgid "could not create listen socket for \"%s\"" +msgstr "nie można utworzyć gniazda nasłuchu dla \"%s\"" + +#: postmaster/postmaster.c:893 +msgid "could not create any TCP/IP sockets" +msgstr "nie można stworzyć żadnego gniazda TCP/IP" + +#: postmaster/postmaster.c:944 +msgid "could not create Unix-domain socket" +msgstr "nie można stworzyć gniazda domeny Uniksa" + +#: postmaster/postmaster.c:952 +msgid "no socket created for listening" +msgstr "nie utworzono żadnego gniazda do nasłuchiwania" + +#: postmaster/postmaster.c:986 +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" + +#: postmaster/postmaster.c:1030 +#, 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" + +#: postmaster/postmaster.c:1098 utils/init/postinit.c:197 +msgid "could not load pg_hba.conf" +msgstr "nie można załadować pg_hba.conf" + +#: postmaster/postmaster.c:1145 +#, c-format +msgid "%s: could not locate matching postgres executable" +msgstr "%s: nie można odnaleźć pasującego programu wykonywalnego postgres" + +#: postmaster/postmaster.c:1168 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 "" +"Może to wskazywać na niepełną instalację PostgreSQL lub że plik \"%s\" " +"został przeniesiony gdzieś z właściwej lokalizacji." + +#: postmaster/postmaster.c:1196 +#, c-format +msgid "data directory \"%s\" does not exist" +msgstr "folder danych \"%s\" nie istnieje" + +#: postmaster/postmaster.c:1201 +#, c-format +msgid "could not read permissions of directory \"%s\": %m" +msgstr "nie można odczytać uprawnień dla folderu \"%s\": %m" + +#: postmaster/postmaster.c:1209 +#, c-format +msgid "specified data directory \"%s\" is not a directory" +msgstr "wskazany folder danych \"%s\" nie jest folderem" + +#: postmaster/postmaster.c:1225 +#, c-format +msgid "data directory \"%s\" has wrong ownership" +msgstr "słownik danych \"%s\" ma niepoprawną własność" + +#: postmaster/postmaster.c:1227 +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." + +#: postmaster/postmaster.c:1247 +#, c-format +msgid "data directory \"%s\" has group or world access" +msgstr "folder danych \"%s\" posiada prawa dostępu dla grupy lub wszystkich" + +#: postmaster/postmaster.c:1249 +msgid "Permissions should be u=rwx (0700)." +msgstr "Prawa dostępu powinny być u=rwx (0700)." + +#: postmaster/postmaster.c:1260 +#, 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" + +#: postmaster/postmaster.c:1296 +#, c-format +msgid "%s: could not open file \"%s\": %s\n" +msgstr "%s: nie można otworzyć pliku \"%s\": %s\n" + +#: postmaster/postmaster.c:1303 +#, c-format +msgid "%s: could not open log file \"%s/%s\": %s\n" +msgstr "%s: nie można otworzyć pliku dziennika \"%s/%s\": %s\n" + +#: postmaster/postmaster.c:1314 +#, c-format +msgid "%s: could not fork background process: %s\n" +msgstr "%s: nie udało się rozwidlenie procesu w tle: %s\n" + +#: postmaster/postmaster.c:1336 +#, c-format +msgid "%s: could not dissociate from controlling TTY: %s\n" +msgstr "%s: nie udało się odciąć od kontroli TTY: %s\n" + +#: postmaster/postmaster.c:1431 +#, c-format +msgid "select() failed in postmaster: %m" +msgstr "nie powiodło się select() w postmasterze: %m" + +#: postmaster/postmaster.c:1593 postmaster/postmaster.c:1624 +msgid "incomplete startup packet" +msgstr "niekompletny pakiet uruchomieniowy" + +#: postmaster/postmaster.c:1605 +msgid "invalid length of startup packet" +msgstr "niepoprawna długość pakietu uruchomieniowego" + +#: postmaster/postmaster.c:1662 +#, c-format +msgid "failed to send SSL negotiation response: %m" +msgstr "nie powiodło się wysłanie odpowiedzi negocjacji SSL: %m" + +#: postmaster/postmaster.c:1691 +#, 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" + +#: postmaster/postmaster.c:1742 +msgid "invalid value for boolean option \"replication\"" +msgstr "niepoprawna wartość dla opcji logicznej \"replication\"" + +#: postmaster/postmaster.c:1762 +msgid "invalid startup packet layout: expected terminator as last byte" +msgstr "" +"niepoprawny układ pakietu uruchomieniowego: oczekiwano terminatora na " +"ostatnim bajcie" + +#: postmaster/postmaster.c:1790 +msgid "no PostgreSQL user name specified in startup packet" +msgstr "brak użytkownika PostgreSQL wskazanego w pakiecie uruchomieniowym" + +#: postmaster/postmaster.c:1847 +msgid "the database system is starting up" +msgstr "system bazy danych uruchamia się" + +#: postmaster/postmaster.c:1852 +msgid "the database system is shutting down" +msgstr "system bazy danych jest zamykany" + +#: postmaster/postmaster.c:1857 +msgid "the database system is in recovery mode" +msgstr "system bazy danych jest w trybie odzyskiwania" + +#: postmaster/postmaster.c:1924 +#, c-format +msgid "wrong key in cancel request for process %d" +msgstr "niepoprawny klucz w żądaniu anulowania dla procesu %d" + +#: postmaster/postmaster.c:1932 +#, c-format +msgid "PID %d in cancel request did not match any process" +msgstr "PID %d w żądaniu anulowania ni pasuje do żadnego procesu" + +#: postmaster/postmaster.c:2138 +msgid "received SIGHUP, reloading configuration files" +msgstr "odebrano SIGHUP, przeładowanie plików konfiguracyjnych" + +#: postmaster/postmaster.c:2161 +msgid "pg_hba.conf not reloaded" +msgstr "pg_hba.conf nie przeładowany" + +#: postmaster/postmaster.c:2204 +msgid "received smart shutdown request" +msgstr "odebrano żądanie inteligentnego zamknięcia" + +#: postmaster/postmaster.c:2251 +msgid "received fast shutdown request" +msgstr "odebrano żądanie szybkiego zamknięcia" + +#: postmaster/postmaster.c:2269 +msgid "aborting any active transactions" +msgstr "przerywanie wszelkich aktywnych transakcji" + +#: postmaster/postmaster.c:2298 +msgid "received immediate shutdown request" +msgstr "odebrano żądanie natychmiastowego zamknięcia" + +#: postmaster/postmaster.c:2374 postmaster/postmaster.c:2402 +msgid "startup process" +msgstr "proces uruchomienia" + +#: postmaster/postmaster.c:2377 +msgid "aborting startup due to startup process failure" +msgstr "" +"przerwanie uruchomienia ze względu na niepowodzenie procesu uruchomienia" + +#: postmaster/postmaster.c:2436 +msgid "database system is ready to accept connections" +msgstr "system bazy danych jest gotowy do przyjmowania połączeń" + +#: postmaster/postmaster.c:2491 +msgid "background writer process" +msgstr "proces zapisu działający w tle" + +#: postmaster/postmaster.c:2507 +msgid "WAL writer process" +msgstr "proces zapisu WAL" + +#: postmaster/postmaster.c:2521 +msgid "WAL receiver process" +msgstr "proces odbioru WAL" + +#: postmaster/postmaster.c:2536 +msgid "autovacuum launcher process" +msgstr "proces wywołujący autoodkurzanie" + +#: postmaster/postmaster.c:2551 +msgid "archiver process" +msgstr "proces archiwizera" + +#: postmaster/postmaster.c:2567 +msgid "statistics collector process" +msgstr "proces kolektora statystyk" + +#: postmaster/postmaster.c:2581 +msgid "system logger process" +msgstr "proces rejestratora systemowego" + +#: postmaster/postmaster.c:2616 postmaster/postmaster.c:2635 +#: postmaster/postmaster.c:2642 postmaster/postmaster.c:2660 +msgid "server process" +msgstr "proces serwera" + +#: postmaster/postmaster.c:2696 +msgid "terminating any other active server processes" +msgstr "kończenie wszelkich innych aktywnych procesów serwera" + +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2861 +#, c-format +msgid "%s (PID %d) exited with exit code %d" +msgstr "%s (PID %d) wyszedł z kodem zakończenia %d" + +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2870 +#, c-format +msgid "%s (PID %d) was terminated by exception 0x%X" +msgstr "%s (PID %d) został zatrzymany przez wyjątek 0x%X" + +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2879 +#, c-format +msgid "%s (PID %d) was terminated by signal %d: %s" +msgstr "%s (PID %d) został zatrzymany przez sygnał %d: %s" + +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2889 +#, c-format +msgid "%s (PID %d) was terminated by signal %d" +msgstr "%s (PID %d) został zatrzymany przez sygnał %d" + +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2898 +#, c-format +msgid "%s (PID %d) exited with unrecognized status %d" +msgstr "%s (PID %d) zakończył działanie z nieznanym stanem %d" + +#: postmaster/postmaster.c:3078 +msgid "abnormal database system shutdown" +msgstr "nieprawidłowe zamknięcie systemu bazy danych" + +#: postmaster/postmaster.c:3117 +msgid "all server processes terminated; reinitializing" +msgstr "wszelkie procesy serwera zakończone; ponowna inicjacja" + +#: postmaster/postmaster.c:3300 +#, c-format +msgid "could not fork new process for connection: %m" +msgstr "nie można rozwidlić procesu połączenia: %m" + +#: postmaster/postmaster.c:3342 +msgid "could not fork new process for connection: " +msgstr "nie można rozwidlić nowego procesu połączenia: " + +#: postmaster/postmaster.c:3456 +#, c-format +msgid "connection received: host=%s port=%s" +msgstr "odebrano połączenie: host=%s port=%s" + +#: postmaster/postmaster.c:3461 +#, c-format +msgid "connection received: host=%s" +msgstr "odebrano połączenie: host=%s" + +#: postmaster/postmaster.c:3730 +#, c-format +msgid "could not execute server process \"%s\": %m" +msgstr "nie można wykonać procesu serwera \"%s\": %m" + +#: postmaster/postmaster.c:4247 +msgid "database system is ready to accept read only connections" +msgstr "" +"system bazy danych jest gotowy do przyjmowania połączeń tylko do odczytu" + +#: postmaster/postmaster.c:4514 +#, c-format +msgid "could not fork startup process: %m" +msgstr "nie można rozwidlić procesu uruchamiającego: %m" + +#: postmaster/postmaster.c:4518 +#, c-format +msgid "could not fork background writer process: %m" +msgstr "nie udało się rozwidlenie procesu zapisu w tle: %m" + +#: postmaster/postmaster.c:4522 +#, c-format +msgid "could not fork WAL writer process: %m" +msgstr "nie można rozwidlić procesu zapisu WAL: %m" + +#: postmaster/postmaster.c:4526 +#, c-format +msgid "could not fork WAL receiver process: %m" +msgstr "nie można rozwidlić procesu odbioru WAL: %m" + +#: postmaster/postmaster.c:4530 +#, c-format +msgid "could not fork process: %m" +msgstr "nie można rozwidlić procesu: %m" + +#: postmaster/postmaster.c:4813 +#, 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" + +#: postmaster/postmaster.c:4845 +#, c-format +msgid "could not create inherited socket: error code %d\n" +msgstr "nie można utworzyć dziedziczonego gniazda: kod błędu %d\n" + +#: postmaster/postmaster.c:4874 postmaster/postmaster.c:4881 +#, 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" + +#: postmaster/postmaster.c:4890 +#, c-format +msgid "could not remove file \"%s\": %s\n" +msgstr "nie można usunąć pliku \"%s\": %s\n" + +#: postmaster/postmaster.c:4907 +#, c-format +msgid "could not map view of backend variables: error code %d\n" +msgstr "nie można zmapować widoku zmiennych backendu: kod błędu %d\n" + +#: postmaster/postmaster.c:4916 +#, c-format +msgid "could not unmap view of backend variables: error code %d\n" +msgstr "nie można odmapować widoku zmiennych backendu: kod błędu %d\n" + +#: postmaster/postmaster.c:4923 +#, c-format +msgid "could not close handle to backend parameter variables: error code %d\n" +msgstr "" +"nie można zamknąć uchwytu do zmiennych parametryzujących backendu: kod błędu " +"%d\n" + +#: postmaster/postmaster.c:5067 +msgid "could not read exit code for process\n" +msgstr "nie można odczytać kodu wyjścia procesu\n" + +#: postmaster/postmaster.c:5072 +msgid "could not post child completion status\n" +msgstr "nie można wysłać statusu zakończenia potomka\n" + +#: postmaster/syslogger.c:390 +#, c-format +msgid "select() failed in logger process: %m" +msgstr "nie powiodło się select() w procesie rejestratora: %m" + +#: postmaster/syslogger.c:402 postmaster/syslogger.c:968 +#, c-format +msgid "could not read from logger pipe: %m" +msgstr "nie można czytać z rury rejestratora: %m" + +#: postmaster/syslogger.c:449 +msgid "logger shutting down" +msgstr "zatrzymanie rejestratora" + +#: postmaster/syslogger.c:493 postmaster/syslogger.c:507 +#, c-format +msgid "could not create pipe for syslog: %m" +msgstr "nie można utworzyć rury do syslogu: %m" + +#: postmaster/syslogger.c:534 +#, c-format +msgid "could not fork system logger: %m" +msgstr "nie udało się rozwidlić rejestratora systemowego: %m" + +#: postmaster/syslogger.c:565 +#, c-format +msgid "could not redirect stdout: %m" +msgstr "nie udało się przekierować na standardowe wyjście: %m" + +#: postmaster/syslogger.c:570 postmaster/syslogger.c:588 +#, c-format +msgid "could not redirect stderr: %m" +msgstr "nie udało się przekierować na standardowe wyjście błędów: %m" + +#: postmaster/syslogger.c:923 +#, c-format +msgid "could not write to log file: %s\n" +msgstr "nie można zapisać do pliku dziennika: %s\n" + +#: postmaster/syslogger.c:1042 +#, c-format +msgid "could not open log file \"%s\": %m" +msgstr "nie można otworzyć pliku dziennika \"%s\": %m" + +#: postmaster/syslogger.c:1111 postmaster/syslogger.c:1156 +msgid "disabling automatic rotation (use SIGHUP to re-enable)" +msgstr "wyłączanie automatycznej rotacji (użyj SIGHUP by włączyć ponownie)" + +#: regex/regc_pg_locale.c:258 utils/adt/selfuncs.c:5028 +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" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:101 +#, c-format +msgid "could not connect to the primary server: %s" +msgstr "nie można połączyć się do serwera podstawowego: %s" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:113 +#, c-format +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" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:124 +msgid "invalid response from primary server" +msgstr "nieprawidłowa odpowiedź z serwera podstawowego" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:125 +#, 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." + +#: replication/libpqwalreceiver/libpqwalreceiver.c:140 +msgid "database system identifier differs between the primary and standby" +msgstr "" +"identyfikator systemu bazy danych różni się od podstawowego i gotowości" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:141 +#, 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." + +#: replication/libpqwalreceiver/libpqwalreceiver.c:153 +#, c-format +msgid "timeline %u of the primary does not match recovery target timeline %u" +msgstr "" +"linia czasu %u podstawowego nie zgadza się z docelową linią czasu " +"odzyskiwania %u" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:165 +#, c-format +msgid "could not start WAL streaming: %s" +msgstr "nie udało się rozpocząć przesyłania strumieniowego WAL: %s" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:171 +msgid "streaming replication successfully connected to primary" +msgstr "replikacja strumieniowa z powodzeniem podłączona do podstawowego" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:193 +msgid "socket not open" +msgstr "gniazdo nie jest otwarte" + +#: 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 "nie można otrzymać danych ze strumienia WAL: %s" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:384 +msgid "replication terminated by primary server" +msgstr "replikacja zakończona przez serwer podstawowy" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:415 +#, c-format +msgid "could not send data to WAL stream: %s" +msgstr "nie można wysłać danych do strumienia WAL: %s" + +#: replication/walreceiver.c:150 +msgid "terminating walreceiver process due to administrator command" +msgstr "przerwano proces walreceiver na skutek polecenia administratora" + +#: replication/walreceiver.c:299 +msgid "cannot continue WAL streaming, recovery has already ended" +msgstr "" +"nie można kontynuować transmisji strumieniowej WAL odzyskiwanie już " +"zakończone" + +#: replication/walsender.c:141 +msgid "recovery is still in progress, can't accept WAL streaming connections" +msgstr "" +"odzyskiwanie jest w toku, nie może zaakceptować WAL połączeń transmisji " +"strumieniowej" + +#: replication/walsender.c:261 replication/walsender.c:489 +#: replication/walsender.c:547 +msgid "unexpected EOF on standby connection" +msgstr "nieoczekiwany EOF na połączeniu gotowości" + +#: replication/walsender.c:267 +#, c-format +msgid "invalid standby handshake message type %d" +msgstr "nieprawidłowy typ komunikatu uzgadniania %d z gotowości" + +#: replication/walsender.c:379 +msgid "standby connections not allowed because wal_level=minimal" +msgstr "połączenia z gotowości niedozwolone ponieważ wal_level=minimal" + +#: replication/walsender.c:461 +#, c-format +msgid "invalid standby query string: %s" +msgstr "nieprawidłowe łańcuch znaków zapytania gotowości: %s" + +#: replication/walsender.c:518 +#, c-format +msgid "invalid standby message type \"%c\"" +msgstr "nieprawidłowy typ komunikatu gotowości \"%c\"" + +#: replication/walsender.c:569 +#, c-format +msgid "unexpected message type \"%c\"" +msgstr "nieoczekiwany typ komunikatu \"%c\"" + +#: replication/walsender.c:822 +msgid "terminating walsender process due to replication timeout" +msgstr "przerwano proces walsender na skutek limitu czasu replikacji" + +#: replication/walsender.c:838 +#, c-format +msgid "standby \"%s\" has now caught up with primary" +msgstr "gotowość \"%s\" dogonił obecnie podstawowy" + +#: replication/walsender.c:907 +#, 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)" + +#: replication/walsender.c:985 replication/walsender.c:1047 +#, c-format +msgid "requested WAL segment %s has already been removed" +msgstr "żądany segment WAL %s został już usunięty" + +#: replication/walsender.c:1018 +#, c-format +msgid "could not read from log file %u, segment %u, offset %u, length %lu: %m" +msgstr "" +"nie można czytać z pliku dziennika %u, segment %u, przesunięcie %u, długość " +"%lu: %m" + +#: replication/basebackup.c:122 replication/basebackup.c:631 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "nie można odczytać linku symbolicznego \"%s\": %m" + +#: replication/basebackup.c:231 replication/basebackup.c:743 +msgid "base backup could not send data, aborting backup" +msgstr "" +"podstawowa kopia zapasowa nie mogła wysłać danych, przerwanie tworzenia " +"kopii zapasowej" + +#: 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 "powtórzona opcja \"%s\"" + +#: replication/basebackup.c:366 +#, c-format +msgid "could not open directory \"pg_tblspc\": %m" +msgstr "nie udało się otworzyć folderu \"pg_tblspc\": %m" + +#: replication/basebackup.c:576 +msgid "shutdown requested, aborting active base backup" +msgstr "" +"zażądano wyłączenia, przerwanie aktywnego tworzenia podstawowej kopii " +"zapasowej" + +#: replication/basebackup.c:589 +#, c-format +msgid "could not stat file or directory \"%s\": %m" +msgstr "nie można wykonać stat na pliku lub katalogu \"%s\": %m" + +#: replication/basebackup.c:660 +#, c-format +msgid "skipping special file \"%s\"" +msgstr "pominięto plik specjalny \"%s\"" + +#: replication/basebackup.c:733 +#, c-format +msgid "archive member \"%s\" too large for tar format" +msgstr "składnik archiwum \"%s\" za duży dla formatu tar" + +#: replication/syncrep.c:210 +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" + +#: replication/syncrep.c:211 replication/syncrep.c:228 +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." + +#: replication/syncrep.c:227 +msgid "canceling wait for synchronous replication due to user request" +msgstr "" +"anulowanie oczekiwania na replikację synchroniczną na skutek polecenia " +"użytkownika" + +#: replication/syncrep.c:358 +#, c-format +msgid "standby \"%s\" now has synchronous standby priority %u" +msgstr "gotowość \"%s\" posiada teraz priorytet gotowości synchronicznej %u" + +#: replication/syncrep.c:451 +#, c-format +msgid "standby \"%s\" is now the synchronous standby with priority %u" +msgstr "gotowość \"%s\" jest teraz gotowością synchroniczną o priorytecie %u" + +#: repl_scanner.l:76 +msgid "invalid streaming start location" +msgstr "nieprawidłowe położenie początku przesyłania strumieniowego" + +#: repl_scanner.l:107 +#, c-format +msgid "syntax error: unexpected character \"%s\"" +msgstr "błąd składni, nieoczekiwany znak \"%s\"" + +#: rewrite/rewriteDefine.c:109 rewrite/rewriteDefine.c:769 +#, c-format +msgid "rule \"%s\" for relation \"%s\" already exists" +msgstr "reguła \"%s\" dla relacji \"%s\" już istnieje" + +#: rewrite/rewriteDefine.c:287 +msgid "rule actions on OLD are not implemented" +msgstr "akcje reguły na OLD nie zostały zaimplementowane" + +#: rewrite/rewriteDefine.c:288 +msgid "Use views or triggers instead." +msgstr "Użyj widoków lub wyzwalaczy w zamian." + +#: rewrite/rewriteDefine.c:292 +msgid "rule actions on NEW are not implemented" +msgstr "akcje reguły na NEW nie zostały zaimplementowane" + +#: rewrite/rewriteDefine.c:293 +msgid "Use triggers instead." +msgstr "Użyj wyzwalaczy w zamian." + +#: rewrite/rewriteDefine.c:306 +msgid "INSTEAD NOTHING rules on SELECT are not implemented" +msgstr "reguły INSTEAD NOTHING na SELECT nie zostały zrealizowane" + +#: rewrite/rewriteDefine.c:307 +msgid "Use views instead." +msgstr "Użyj widoków w zamian." + +#: rewrite/rewriteDefine.c:315 +msgid "multiple actions for rules on SELECT are not implemented" +msgstr "wielokrotne akcje dla reguł na SELECT nie zostały zrealizowane" + +#: rewrite/rewriteDefine.c:327 +msgid "rules on SELECT must have action INSTEAD SELECT" +msgstr "reguły na SELECT muszą posiadać akcję INSTEAD SELECT" + +#: rewrite/rewriteDefine.c:335 +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" + +#: rewrite/rewriteDefine.c:343 +msgid "event qualifications are not implemented for rules on SELECT" +msgstr "kwalifikacje zdarzeń nie są zaimplementowane dla reguł SELECT" + +#: rewrite/rewriteDefine.c:368 +#, c-format +msgid "\"%s\" is already a view" +msgstr "\"%s\" jest już widokiem" + +#: rewrite/rewriteDefine.c:392 +#, c-format +msgid "view rule for \"%s\" must be named \"%s\"" +msgstr "reguła widoku dla \"%s\" musi być nazwana \"%s\"" + +#: rewrite/rewriteDefine.c:417 +#, 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" + +#: rewrite/rewriteDefine.c:424 +#, 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" + +#: rewrite/rewriteDefine.c:426 +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." + +#: rewrite/rewriteDefine.c:431 +#, 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" + +#: rewrite/rewriteDefine.c:437 +#, 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" + +#: rewrite/rewriteDefine.c:464 +msgid "cannot have multiple RETURNING lists in a rule" +msgstr "nie może być wielokrotnych list RETURNING w regule" + +#: rewrite/rewriteDefine.c:469 +msgid "RETURNING lists are not supported in conditional rules" +msgstr "listy RETURNING nie są obsługiwane w regułach warunkowych" + +#: rewrite/rewriteDefine.c:473 +msgid "RETURNING lists are not supported in non-INSTEAD rules" +msgstr "listy RETURNING nie są obsługiwane w regułach nie-INSTEAD" + +#: rewrite/rewriteDefine.c:552 +msgid "SELECT rule's target list has too many entries" +msgstr "lista docelowa reguły SELECT posiada zbyt wiele wpisów" + +#: rewrite/rewriteDefine.c:553 +msgid "RETURNING list has too many entries" +msgstr "lista RETURNING posiada zbyt dużo wpisów" + +#: rewrite/rewriteDefine.c:569 +msgid "cannot convert relation containing dropped columns to view" +msgstr "" +"nie można przekształcić relacji zawierającej skasowane kolumny do widoku" + +#: rewrite/rewriteDefine.c:574 +#, 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\"" + +#: rewrite/rewriteDefine.c:580 +#, 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\"" + +#: rewrite/rewriteDefine.c:582 +#, 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\"" + +#: rewrite/rewriteDefine.c:597 +#, 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\"" + +#: rewrite/rewriteDefine.c:599 +#, 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\"" + +#: rewrite/rewriteDefine.c:607 +msgid "SELECT rule's target list has too few entries" +msgstr "lista docelowa reguły SELECT posiada za mało wpisów" + +#: rewrite/rewriteDefine.c:608 +msgid "RETURNING list has too few entries" +msgstr "lista RETURNING posiada za mało wpisów" + +#: rewrite/rewriteDefine.c:700 rewrite/rewriteDefine.c:762 +#: rewrite/rewriteRemove.c:62 rewrite/rewriteSupport.c:117 +#, c-format +msgid "rule \"%s\" for relation \"%s\" does not exist" +msgstr "reguła \"%s\" dla relacji \"%s\" nie istnieje" + +#: rewrite/rewriteHandler.c:485 +#, 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" + +#: rewrite/rewriteHandler.c:543 +msgid "cannot have RETURNING lists in multiple rules" +msgstr "nie można mieć list RETURNING w wielu regułach" + +#: rewrite/rewriteHandler.c:874 rewrite/rewriteHandler.c:892 +#, c-format +msgid "multiple assignments to same column \"%s\"" +msgstr "wiele przypisań do tej samej kolumny \"%s\"" + +#: rewrite/rewriteHandler.c:1626 rewrite/rewriteHandler.c:2021 +#, 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:1882 +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" + +#: rewrite/rewriteHandler.c:1896 +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" + +#: rewrite/rewriteHandler.c:1900 +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" + +#: rewrite/rewriteHandler.c:1905 +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" + +#: rewrite/rewriteHandler.c:2059 +#, c-format +msgid "cannot perform INSERT RETURNING on relation \"%s\"" +msgstr "nie można wykonać INSERT RETURNING na relacji \"%s\"" + +#: rewrite/rewriteHandler.c:2061 +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." + +#: rewrite/rewriteHandler.c:2066 +#, c-format +msgid "cannot perform UPDATE RETURNING on relation \"%s\"" +msgstr "nie można wykonać UPDATE RETURNING na relacji \"%s\"" + +#: rewrite/rewriteHandler.c:2068 +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." + +#: rewrite/rewriteHandler.c:2073 +#, c-format +msgid "cannot perform DELETE RETURNING on relation \"%s\"" +msgstr "nie można wykonać DELETE RETURNING na relacji \"%s\"" + +#: rewrite/rewriteHandler.c:2075 +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." + +#: rewrite/rewriteHandler.c:2139 +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ń" + +#: rewrite/rewriteManip.c:1012 +msgid "conditional utility statements are not implemented" +msgstr "instrukcje warunkowe narzędzia nie są realizowane" + +#: rewrite/rewriteManip.c:1177 +msgid "WHERE CURRENT OF on a view is not implemented" +msgstr "WHERE CURRENT OF na widoku nie jest realizowane" + +#: rewrite/rewriteRemove.c:66 +#, c-format +msgid "rule \"%s\" for relation \"%s\" does not exist, skipping" +msgstr "reguła \"%s\" relacji \"%s\" nie istnieje, pominięto" + +#: rewrite/rewriteSupport.c:156 +#, c-format +msgid "rule \"%s\" does not exist" +msgstr "reguła \"%s\" nie istnieje" + +#: rewrite/rewriteSupport.c:165 +#, c-format +msgid "there are multiple rules named \"%s\"" +msgstr "istnieje wiele reguł o nazwie \"%s\"" + +#: rewrite/rewriteSupport.c:166 +msgid "Specify a relation name as well as a rule name." +msgstr "Wskaż nazwę relacji oraz nazwę reguły." + +#: utils/init/miscinit.c:115 +#, c-format +msgid "could not change directory to \"%s\": %m" +msgstr "nie można zmienić katalogu na \"%s\": %m" + +#: utils/init/miscinit.c:381 utils/misc/guc.c:5259 +#, c-format +msgid "cannot set parameter \"%s\" within security-restricted operation" +msgstr "" +"nie można ustawić parametru \"%s\" w operacji ograniczonej przez " +"bezpieczeństwo" + +#: utils/init/miscinit.c:460 +#, c-format +msgid "role \"%s\" is not permitted to log in" +msgstr "rola \"%s\" nie zezwala na logowanie" + +#: utils/init/miscinit.c:478 +#, c-format +msgid "too many connections for role \"%s\"" +msgstr "zbyt wiele połączeń dla roli \"%s\"" + +#: utils/init/miscinit.c:538 +msgid "permission denied to set session authorization" +msgstr "odmowa dostępu do ustalenia autoryzacji sesji" + +#: utils/init/miscinit.c:618 +#, c-format +msgid "invalid role OID: %u" +msgstr "nieprawidłowy OID roli: %u" + +#: utils/init/miscinit.c:750 +#, c-format +msgid "could not create lock file \"%s\": %m" +msgstr "nie można utworzyć pliku blokady \"%s\": %m" + +#: utils/init/miscinit.c:764 +#, c-format +msgid "could not open lock file \"%s\": %m" +msgstr "nie można otworzyć pliku blokady \"%s\": %m" + +#: utils/init/miscinit.c:770 +#, c-format +msgid "could not read lock file \"%s\": %m" +msgstr "nie można odczytać pliku blokady \"%s\": %m" + +#: utils/init/miscinit.c:818 +#, c-format +msgid "lock file \"%s\" already exists" +msgstr "plik blokady \"%s\" już istnieje" + +#: utils/init/miscinit.c:822 +#, 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:824 +#, 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:827 +#, 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:829 +#, 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:865 +#, 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: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 "" +"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:884 +#, 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:886 +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:920 utils/init/miscinit.c:931 +#: utils/init/miscinit.c:941 +#, c-format +msgid "could not write lock file \"%s\": %m" +msgstr "nie można zapisać pliku blokady \"%s\": %m" + +#: utils/init/miscinit.c:1048 utils/misc/guc.c:7527 +#, c-format +msgid "could not read from file \"%s\": %m" +msgstr "nie można czytać z pliku \"%s\": %m" + +#: utils/init/miscinit.c:1147 utils/init/miscinit.c:1160 +#, c-format +msgid "\"%s\" is not a valid data directory" +msgstr "\"%s\" nie jest prawidłowym folderem danych" + +#: utils/init/miscinit.c:1149 +#, c-format +msgid "File \"%s\" is missing." +msgstr "Brak pliku \"%s\"." + +#: utils/init/miscinit.c:1162 +#, c-format +msgid "File \"%s\" does not contain valid data." +msgstr "Plik \"%s\" nie zawiera poprawnych danych." + +#: utils/init/miscinit.c:1164 +msgid "You might need to initdb." +msgstr "Być może trzeba initdb." + +#: 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 "" +"Katalog danych został zainicjowany przez PostgreSQL w wersji %ld.%ld, który " +"nie jest zgodny z obecną wersją %s." + +#: utils/init/miscinit.c:1220 +#, c-format +msgid "invalid list syntax in parameter \"%s\"" +msgstr "niepoprawna składnia listy w parametrze \"%s\"" + +#: utils/init/miscinit.c:1257 +#, c-format +msgid "loaded library \"%s\"" +msgstr "wczytano bibliotekę \"%s\"" + +#: utils/init/postinit.c:225 +#, c-format +msgid "replication connection authorized: user=%s" +msgstr "zautoryzowano połączenie replikacji: użytkownik=%s" + +#: utils/init/postinit.c:229 +#, c-format +msgid "connection authorized: user=%s database=%s" +msgstr "zautoryzowano połączenie: użytkownik=%s baza danych=%s" + +#: utils/init/postinit.c:260 +#, c-format +msgid "database \"%s\" has disappeared from pg_database" +msgstr "baza danych \"%s\" zniknęła z pg_database" + +#: utils/init/postinit.c:262 +#, 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:282 +#, c-format +msgid "database \"%s\" is not currently accepting connections" +msgstr "baza danych \"%s\" nie akceptuje obecnie połączeń" + +#: utils/init/postinit.c:295 +#, c-format +msgid "permission denied for database \"%s\"" +msgstr "odmowa dostępu do bazy \"%s\"" + +#: utils/init/postinit.c:296 +msgid "User does not have CONNECT privilege." +msgstr "Użytkownik nie posiada uprawnienia CONNECT." + +#: utils/init/postinit.c:313 +#, c-format +msgid "too many connections for database \"%s\"" +msgstr "zbyt wiele połączeń do bazy \"%s\"" + +#: utils/init/postinit.c:335 utils/init/postinit.c:342 +msgid "database locale is incompatible with operating system" +msgstr "lokalizacje bazy danych są niedopasowane do systemu operacyjnego" + +#: utils/init/postinit.c:336 +#, 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:338 utils/init/postinit.c:345 +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:343 +#, 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:599 +msgid "no roles are defined in this database system" +msgstr "brak zdefiniowanych ról w tym systemie bazodanowym" + +#: utils/init/postinit.c:600 +#, c-format +msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;." +msgstr "Należy natychmiast wykonać CREATE USER \"%s\" SUPERUSER;." + +#: utils/init/postinit.c:623 +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:627 +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:637 +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:651 +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:666 +msgid "must be replication role to start walsender" +msgstr "musisz mieć rolę replikacji by uruchomić walsender" + +#: utils/init/postinit.c:726 +#, c-format +msgid "database %u does not exist" +msgstr "baza danych %u nie istnieje" + +#: utils/init/postinit.c:778 +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:796 +#, c-format +msgid "The database subdirectory \"%s\" is missing." +msgstr "Brakuje podfolderu \"%s\" bazy danych." + +#: utils/init/postinit.c:801 +#, c-format +msgid "could not access directory \"%s\": %m" +msgstr "nie można uzyskać dostępu do folderu \"%s\": %m" + +#: utils/adt/acl.c:166 utils/adt/name.c:87 +msgid "identifier too long" +msgstr "identyfikator zbyt długi" + +#: utils/adt/acl.c:167 utils/adt/name.c:88 +#, c-format +msgid "Identifier must be less than %d characters." +msgstr "Identyfikator musi być krótszy niż %d znaków." + +#: utils/adt/acl.c:253 +#, c-format +msgid "unrecognized key word: \"%s\"" +msgstr "nierozpoznane słowo kluczowe: \"%s\"" + +#: utils/adt/acl.c:254 +msgid "ACL key word must be \"group\" or \"user\"." +msgstr "Słowem kluczowym ACL musi być \"group\" lub \"user\"." + +#: utils/adt/acl.c:259 +msgid "missing name" +msgstr "brakująca nazwa" + +#: utils/adt/acl.c:260 +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/acl.c:266 +msgid "missing \"=\" sign" +msgstr "brakuje znaku \"=\"" + +#: utils/adt/acl.c:319 +#, c-format +msgid "invalid mode character: must be one of \"%s\"" +msgstr "niepoprawny znak trybu: musi być jednym z \"%s\"" + +#: utils/adt/acl.c:341 +msgid "a name must follow the \"/\" sign" +msgstr "nazwa musi wystąpić po znaku \"/\"" + +#: utils/adt/acl.c:349 +#, c-format +msgid "defaulting grantor to user ID %u" +msgstr "ustawienie domyślności nadawania uprawnień dla ID %u użytkownika" + +#: utils/adt/acl.c:540 +msgid "ACL array contains wrong data type" +msgstr "tablica ACL zawiera niepoprawny typ danych" + +#: utils/adt/acl.c:544 +msgid "ACL arrays must be one-dimensional" +msgstr "tablice ACL muszą być jednowymiarowe" + +#: utils/adt/acl.c:548 +msgid "ACL arrays must not contain null values" +msgstr "tablice ACL nie mogą zawierać pustych wartości" + +#: utils/adt/acl.c:572 +msgid "extra garbage at the end of the ACL specification" +msgstr "dodatkowe zbędne dane na końcu specyfikacji ACL" + +#: utils/adt/acl.c:1129 +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/acl.c:1190 +msgid "dependent privileges exist" +msgstr "istnieją uprawnienia zależne" + +#: utils/adt/acl.c:1191 +msgid "Use CASCADE to revoke them too." +msgstr "Użyj CASCADE by je również odebrać." + +#: utils/adt/acl.c:1470 +msgid "aclinsert is no longer supported" +msgstr "aclinsert nie jest już wspierany" + +#: utils/adt/acl.c:1480 +msgid "aclremove is no longer supported" +msgstr "aclremove nie jest już wspierany" + +#: utils/adt/acl.c:1566 utils/adt/acl.c:1620 +#, c-format +msgid "unrecognized privilege type: \"%s\"" +msgstr "nierozpoznany typ uprawnienia: \"%s\"" + +#: 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 "funkcja \"%s\" nie istnieje" + +#: utils/adt/acl.c:4608 +#, c-format +msgid "must be member of role \"%s\"" +msgstr "musisz być składnikiem roli \"%s\"" + +#: utils/adt/array_userfuncs.c:48 +msgid "could not determine input data types" +msgstr "nie można określić typów danych wejściowych" + +#: utils/adt/array_userfuncs.c:82 +msgid "neither input type is an array" +msgstr "żaden typ wejściowy nie jest tablicą" + +#: 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 "liczba całkowita poza zakresem" + +#: utils/adt/array_userfuncs.c:121 +msgid "argument must be empty or one-dimensional array" +msgstr "argument musi być pusty lub jednowymiarową tablicą" + +#: 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 "nie można powiązać niekompatybilnych tablic" + +#: utils/adt/array_userfuncs.c:225 +#, 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." + +#: utils/adt/array_userfuncs.c:264 +#, 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." + +#: utils/adt/array_userfuncs.c:301 +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/array_userfuncs.c:330 utils/adt/array_userfuncs.c:358 +msgid "Arrays with differing dimensions are not compatible for concatenation." +msgstr "Tablice o różnych wymiarach nie są zgodne dla konkatenacji." + +#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1238 +#: utils/adt/arrayfuncs.c:2911 utils/adt/arrayfuncs.c:4936 +#, c-format +msgid "invalid number of dimensions: %d" +msgstr "niewłaściwa liczba wymiarów: %d" + +#: utils/adt/array_userfuncs.c:487 +msgid "could not determine input data type" +msgstr "nie można określić typu danych wejściowych" + +#: utils/adt/arrayfuncs.c:235 utils/adt/arrayfuncs.c:247 +msgid "missing dimension value" +msgstr "brak wartości wymiaru" + +#: utils/adt/arrayfuncs.c:257 +msgid "missing \"]\" in array dimensions" +msgstr "brak \"]\" w wymiarach tablicy" + +#: 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 "górna granica nie może być mniejsza niż dolna granica" + +#: utils/adt/arrayfuncs.c:277 utils/adt/arrayfuncs.c:303 +msgid "array value must start with \"{\" or dimension information" +msgstr "wartość tablicy musi zaczynać się od \"{\" lub informacji o wymiarze" + +#: utils/adt/arrayfuncs.c:291 +msgid "missing assignment operator" +msgstr "brakujący operator przypisania" + +#: utils/adt/arrayfuncs.c:308 utils/adt/arrayfuncs.c:314 +msgid "array dimensions incompatible with array literal" +msgstr "wymiary tablicy są niezgodne z literałem tablicy" + +#: 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 "nieprawidłowy literał tablicy: \"%s\"" + +#: utils/adt/arrayfuncs.c:871 utils/adt/arrayfuncs.c:1473 +#: utils/adt/arrayfuncs.c:2795 utils/adt/arrayfuncs.c:2943 +#: utils/adt/arrayfuncs.c:5036 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 "rozmiar tablicy przekracza dozwolone maksimum (%d)" + +#: utils/adt/arrayfuncs.c:1249 +msgid "invalid array flags" +msgstr "niepoprawne flagi tablicy" + +#: utils/adt/arrayfuncs.c:1257 +msgid "wrong element type" +msgstr "nieprawidłowy typ elementu" + +#: utils/adt/arrayfuncs.c:1307 utils/cache/lsyscache.c:2485 +#, c-format +msgid "no binary input function available for type %s" +msgstr "brak funkcji wejścia binarnego dostępnej dla typu %s" + +#: utils/adt/arrayfuncs.c:1447 +#, c-format +msgid "improper binary format in array element %d" +msgstr "niewłaściwy format binarny w elemencie %d tablicy" + +#: utils/adt/arrayfuncs.c:1529 utils/cache/lsyscache.c:2518 +#, c-format +msgid "no binary output function available for type %s" +msgstr "brak funkcji wyjścia binarnego dostępnej dla typu %s" + +#: utils/adt/arrayfuncs.c:1903 +msgid "slices of fixed-length arrays not implemented" +msgstr "wycinki tablic o stałej długości nie są realizowane" + +#: utils/adt/arrayfuncs.c:2076 utils/adt/arrayfuncs.c:2098 +#: utils/adt/arrayfuncs.c:2132 utils/adt/arrayfuncs.c:2418 +#: utils/adt/arrayfuncs.c:4916 utils/adt/arrayfuncs.c:4948 +#: utils/adt/arrayfuncs.c:4965 +msgid "wrong number of array subscripts" +msgstr "nieprawidłowa liczba indeksów tablicy" + +#: utils/adt/arrayfuncs.c:2081 utils/adt/arrayfuncs.c:2174 +#: utils/adt/arrayfuncs.c:2469 +msgid "array subscript out of range" +msgstr "indeks tablicy poza zakresem" + +#: utils/adt/arrayfuncs.c:2086 +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/arrayfuncs.c:2372 +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/arrayfuncs.c:2408 utils/adt/arrayfuncs.c:2495 +msgid "source array too small" +msgstr "tablica źródłowa zbyt mała" + +#: utils/adt/arrayfuncs.c:3050 +msgid "null array element not allowed in this context" +msgstr "puste elementy tablicy nie są dozwolone w tym kontekście" + +#: utils/adt/arrayfuncs.c:3153 utils/adt/arrayfuncs.c:3361 +#: utils/adt/arrayfuncs.c:3678 +msgid "cannot compare arrays of different element types" +msgstr "nie można porównywać tablic z elementami różnego typu" + +#: utils/adt/arrayfuncs.c:3563 +#, c-format +msgid "could not identify a hash function for type %s" +msgstr "nie można określić funkcji skrótu dla typu %s" + +#: utils/adt/arrayfuncs.c:4814 utils/adt/arrayfuncs.c:4854 +msgid "dimension array or low bound array cannot be null" +msgstr "tablica wymiarów ani tablica dolnych granic nie mogą być puste" + +#: utils/adt/arrayfuncs.c:4917 utils/adt/arrayfuncs.c:4949 +msgid "Dimension array must be one dimensional." +msgstr "tablica wymiarów musi być jednowymiarowa." + +#: utils/adt/arrayfuncs.c:4922 utils/adt/arrayfuncs.c:4954 +msgid "wrong range of array subscripts" +msgstr "nieprawidłowy zakres indeksów tablicy" + +#: utils/adt/arrayfuncs.c:4923 utils/adt/arrayfuncs.c:4955 +msgid "Lower bound of dimension array must be one." +msgstr "Dolna granica tablicy wymiarów musi być równa jeden." + +#: utils/adt/arrayfuncs.c:4928 utils/adt/arrayfuncs.c:4960 +msgid "dimension values cannot be null" +msgstr "wartości wymiarów nie mogą być puste" + +#: utils/adt/arrayfuncs.c:4966 +msgid "Low bound array has different size than dimensions array." +msgstr "Tablica dolnych granic ma inny rozmiar niż tablica wymiarów." + +#: utils/adt/arrayutils.c:209 +msgid "typmod array must be type cstring[]" +msgstr "tablica typmod musi być typu cstring[]" + +#: utils/adt/arrayutils.c:214 +msgid "typmod array must be one-dimensional" +msgstr "tablica typmod musi być jednowymiarowa" + +#: utils/adt/arrayutils.c:219 +msgid "typmod array must not contain nulls" +msgstr "tablica typmod nie może zawierać wartości pustych" + +#: utils/adt/ascii.c:75 +#, c-format +msgid "encoding conversion from %s to ASCII not supported" +msgstr "przekształcenie kodowania z %s do ASCII nie jest obsługiwane" + +#: utils/adt/bool.c:153 +#, c-format +msgid "invalid input syntax for type boolean: \"%s\"" +msgstr "nieprawidłowa składnia wejścia dla typu logicznego: \"%s\"" + +#: utils/adt/cash.c:232 +#, c-format +msgid "invalid input syntax for type money: \"%s\"" +msgstr "nieprawidłowa składnia wejścia dla typu pieniądze: \"%s\"" + +#: 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 "dzielenie przez zero" + +#: utils/adt/char.c:169 +msgid "\"char\" out of range" +msgstr "\"char\" poza zakresem" + +#: 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 "nieprawidłowy modyfikator typu" + +#: utils/adt/date.c:71 +#, c-format +msgid "TIME(%d)%s precision must not be negative" +msgstr "precyzja TIME(%d)%s nie może być ujemna" + +#: utils/adt/date.c:77 +#, c-format +msgid "TIME(%d)%s precision reduced to maximum allowed, %d" +msgstr "precyzja TIME(%d)%s zredukowana do maksymalnej dopuszczalnej, %d" + +#: 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 "wartość data/czas \"current\" nie jest już wspierana" + +#: utils/adt/date.c:167 +#, c-format +msgid "date out of range: \"%s\"" +msgstr "data poza zakresem: \"%s\"" + +#: utils/adt/date.c:217 utils/adt/xml.c:1689 +msgid "date out of range" +msgstr "data poza zakresem" + +#: utils/adt/date.c:359 +msgid "cannot subtract infinite dates" +msgstr "nie można odejmować nieskończonych dat" + +#: utils/adt/date.c:416 utils/adt/date.c:453 +msgid "date out of range for timestamp" +msgstr "data poza zakresem dla znacznika czasu" + +#: 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 utils/adt/xml.c:1712 utils/adt/xml.c:1719 +#: utils/adt/xml.c:1739 utils/adt/xml.c:1746 +msgid "timestamp out of range" +msgstr "znacznik czasu poza zakresem" + +#: utils/adt/date.c:986 +msgid "cannot convert reserved abstime value to date" +msgstr "nie można przekształcić zarezerwowanej wartości abstime do daty" + +#: 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 "czas poza zakresem" + +#: utils/adt/date.c:1793 utils/adt/date.c:1810 +#, c-format +msgid "\"time\" units \"%s\" not recognized" +msgstr "jednostki \"%s\" typu \"time\" nierozpoznane" + +#: utils/adt/date.c:1932 +msgid "time zone displacement out of range" +msgstr "przesunięcie strefy czasowej poza zakresem" + +#: utils/adt/date.c:2557 utils/adt/date.c:2574 +#, c-format +msgid "\"time with time zone\" units \"%s\" not recognized" +msgstr "jednostki \"%s\" typu \"time with time zone\" nierozpoznane" + +#: 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 "strefa czasowa \"%s\" nie rozpoznana" + +#: utils/adt/date.c:2672 +#, c-format +msgid "\"interval\" time zone \"%s\" not valid" +msgstr "\"interval\" strefy czasowej \"%s\" jest niepoprawny" + +#: utils/adt/datetime.c:3532 utils/adt/datetime.c:3539 +#, c-format +msgid "date/time field value out of range: \"%s\"" +msgstr "wartość pola daty/czasu poza zakresem: \"%s\"" + +#: utils/adt/datetime.c:3541 +msgid "Perhaps you need a different \"datestyle\" setting." +msgstr "Być może potrzebujesz innego ustawienia \"datestyle\"." + +#: utils/adt/datetime.c:3546 +#, c-format +msgid "interval field value out of range: \"%s\"" +msgstr "wartość pola interwału poza zakresem: \"%s\"" + +#: utils/adt/datetime.c:3552 +#, c-format +msgid "time zone displacement out of range: \"%s\"" +msgstr "przesunięcie strefy czasowej poza zakresem: \"%s\"" + +#. 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 "nieprawidłowa składnia wejścia dla typu %s: \"%s\"" + +#: utils/adt/datum.c:80 utils/adt/datum.c:92 +msgid "invalid Datum pointer" +msgstr "nieprawidłowy wskaźnik punktu wyjściowego" + +#: utils/adt/dbsize.c:105 utils/adt/dbsize.c:189 +#, c-format +msgid "could not open tablespace directory \"%s\": %m" +msgstr "nie można otworzyć folderu przestrzeni danych \"%s\": %m" + +#: utils/adt/domains.c:80 +#, c-format +msgid "type %s is not a domain" +msgstr "typ %s nie jest domeną" + +#: utils/adt/encode.c:55 utils/adt/encode.c:91 +#, c-format +msgid "unrecognized encoding: \"%s\"" +msgstr "niezrozumiałe kodowanie: \"%s\"" + +#: utils/adt/encode.c:150 +#, c-format +msgid "invalid hexadecimal digit: \"%c\"" +msgstr "niepoprawna cyfra szesnastkowa: \"%c\"" + +#: utils/adt/encode.c:178 +msgid "invalid hexadecimal data: odd number of digits" +msgstr "niepoprawne dane szesnastkowe: nieparzysta liczba cyfr" + +#: utils/adt/encode.c:295 +msgid "unexpected \"=\"" +msgstr "nieoczekiwane \"=\"" + +#: utils/adt/encode.c:307 +msgid "invalid symbol" +msgstr "nieprawidłowy symbol" + +#: utils/adt/encode.c:327 +msgid "invalid end sequence" +msgstr "niepoprawny koniec sekwencji" + +#: 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 "nieprawidłowa składnia wejścia dla typu 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 "nieprawidłowa wartość wejścia dla enumeracji %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 "nieprawidłowa wartość wewnętrzna dla enumeracji: %u" + +#: 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 "nie można określić bieżącego typu enumeracyjnego" + +#: utils/adt/enum.c:365 utils/adt/enum.c:394 +#, c-format +msgid "enum %s contains no values" +msgstr "enumeracja %s nie zawiera wartości" + +#: utils/adt/float.c:54 +msgid "value out of range: overflow" +msgstr "wartość nie z zakresu: poza zakresem" + +#: utils/adt/float.c:59 +msgid "value out of range: underflow" +msgstr "wartość nie z zakresu: przed zakresem" + +#: 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 "nieprawidłowa składnia wejścia dla liczb rzeczywistych: \"%s\"" + +#: utils/adt/float.c:242 +#, c-format +msgid "\"%s\" is out of range for type real" +msgstr "\"%s\" jest poza zakresem dla typu liczb rzeczywistych" + +#: 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 "" +"nieprawidłowa składnia wejścia dla typu liczb podwójnej precyzji: \"%s\"" + +#: utils/adt/float.c:435 +#, c-format +msgid "\"%s\" is out of range for type double precision" +msgstr "\"%s\" jest poza zakresem dla typu liczb podwójnej precyzji" + +#: 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 "poza zakresem smallint" + +#: utils/adt/float.c:1303 utils/adt/numeric.c:5183 +msgid "cannot take square root of a negative number" +msgstr "nie można obliczyć pierwiastka kwadratowego z liczby ujemnej" + +#: utils/adt/float.c:1345 utils/adt/numeric.c:2166 +msgid "zero raised to a negative power is undefined" +msgstr "zero podniesione do potęgi ujemnej jest niezdefiniowane" + +#: 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 "" +"liczba ujemna podniesiona do potęgi niecałkowitej zwraca liczbę zespoloną" + +#: utils/adt/float.c:1415 utils/adt/float.c:1445 utils/adt/numeric.c:5401 +msgid "cannot take logarithm of zero" +msgstr "nie można obliczyć logarytmu z zera" + +#: utils/adt/float.c:1419 utils/adt/float.c:1449 utils/adt/numeric.c:5405 +msgid "cannot take logarithm of a negative number" +msgstr "nie można obliczyć logarytmu z liczby ujemnej" + +#: 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 "wejście jest poza zakresem" + +#: utils/adt/float.c:2687 utils/adt/numeric.c:1171 +msgid "count must be greater than zero" +msgstr "ilość musi być większa niż zero" + +#: utils/adt/float.c:2692 utils/adt/numeric.c:1178 +msgid "operand, lower bound and upper bound cannot be NaN" +msgstr "operand, dolna granica i górna granica nie może być NaN" + +#: utils/adt/float.c:2698 +msgid "lower and upper bounds must be finite" +msgstr "dolna i górna granica nie musi być skończona" + +#: utils/adt/float.c:2736 utils/adt/numeric.c:1191 +msgid "lower bound cannot equal upper bound" +msgstr "dolna granica nie może być równa górnej granicy" + +#: utils/adt/formatting.c:492 +msgid "invalid format specification for an interval value" +msgstr "nieprawidłowe określenie formatu dla wartości interwału" + +#: utils/adt/formatting.c:493 +msgid "Intervals are not tied to specific calendar dates." +msgstr "Interwały nie są związane z określonymi datami kalendarzowymi." + +#: utils/adt/formatting.c:1060 +msgid "\"EEEE\" must be the last pattern used" +msgstr "\"EEEE\" musi być ostatnim użytym wzorcem" + +#: utils/adt/formatting.c:1068 +msgid "\"9\" must be ahead of \"PR\"" +msgstr "\"9\" musi być przed \"PR\"" + +#: utils/adt/formatting.c:1084 +msgid "\"0\" must be ahead of \"PR\"" +msgstr "\"0\" musi być przed \"PR\"" + +#: utils/adt/formatting.c:1110 +msgid "multiple decimal points" +msgstr "wiele przecinków rozdzielających liczby całkowite i dziesiętne" + +#: utils/adt/formatting.c:1114 utils/adt/formatting.c:1197 +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/formatting.c:1126 +msgid "cannot use \"S\" twice" +msgstr "nie można użyć \"S\" dwukrotnie" + +#: utils/adt/formatting.c:1130 +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/formatting.c:1150 +msgid "cannot use \"S\" and \"MI\" together" +msgstr "nie można użyć \"S\" i \"MI\" jednocześnie" + +#: utils/adt/formatting.c:1160 +msgid "cannot use \"S\" and \"PL\" together" +msgstr "nie można użyć \"S\" i \"PL\" jednocześnie" + +#: utils/adt/formatting.c:1170 +msgid "cannot use \"S\" and \"SG\" together" +msgstr "nie można użyć \"S\" i \"SG\" jednocześnie" + +#: utils/adt/formatting.c:1179 +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/formatting.c:1205 +msgid "cannot use \"EEEE\" twice" +msgstr "nie można użyć \"EEEE\" dwukrotnie" + +#: utils/adt/formatting.c:1211 +msgid "\"EEEE\" is incompatible with other formats" +msgstr "\"EEEE\" jest niezgodne z innymi formatami" + +#: utils/adt/formatting.c:1212 +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/formatting.c:1412 +#, c-format +msgid "\"%s\" is not a number" +msgstr "\"%s\" nie jest liczbą" + +#: utils/adt/formatting.c:1519 utils/adt/formatting.c:1569 +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/formatting.c:1640 utils/adt/formatting.c:1690 +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/formatting.c:1773 utils/adt/formatting.c:1835 +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/formatting.c:2017 +msgid "invalid combination of date conventions" +msgstr "nieprawidłowe połączenie konwencji daty" + +#: utils/adt/formatting.c:2018 +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/formatting.c:2035 +#, c-format +msgid "conflicting values for \"%s\" field in formatting string" +msgstr "sprzeczne wartości dla pola \"%s\" s ciągu formatowania" + +#: utils/adt/formatting.c:2037 +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/formatting.c:2098 +#, 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\"" + +#: utils/adt/formatting.c:2100 +#, c-format +msgid "Field requires %d characters, but only %d remain." +msgstr "Pole wymaga %d znaków, ale wprowadzono tylko %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 "" +"Jeśli źródłowy ciąg znaków nie ma stałej długości, spróbuj użyć modyfikatora " +"\"FM\"." + +#: utils/adt/formatting.c:2113 utils/adt/formatting.c:2126 +#: utils/adt/formatting.c:2256 +#, c-format +msgid "invalid value \"%s\" for \"%s\"" +msgstr "nieprawidłowa wartość \"%s\" dla \"%s\"" + +#: utils/adt/formatting.c:2115 +#, 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." + +#: utils/adt/formatting.c:2128 +msgid "Value must be an integer." +msgstr "Wartość musi być liczbą całkowitą." + +#: utils/adt/formatting.c:2133 +#, 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" + +#: utils/adt/formatting.c:2135 +#, c-format +msgid "Value must be in the range %d to %d." +msgstr "Wartość musi być w zakresie %d do %d." + +#: utils/adt/formatting.c:2258 +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/formatting.c:2814 +msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date" +msgstr "wzorce formatów \"TZ\"/\"tz\" nie są obsługiwane przez to_date" + +#: utils/adt/formatting.c:2918 +msgid "invalid input string for \"Y,YYY\"" +msgstr "nieprawidłowy wejściowy ciąg znaków dla \"Y,YYY\"" + +#: utils/adt/formatting.c:3435 +#, c-format +msgid "hour \"%d\" is invalid for the 12-hour clock" +msgstr "godzina \"%d\" jest niepoprawna dla 12-godzinnego zegara" + +#: utils/adt/formatting.c:3437 +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/formatting.c:3475 +#, c-format +msgid "inconsistent use of year %04d and \"BC\"" +msgstr "niespójne użycie roku %04d i \"BC\"" + +#: utils/adt/formatting.c:3522 +msgid "cannot calculate day of year without year information" +msgstr "nie można wyznaczyć dnia roku bez informacji o roku" + +#: utils/adt/formatting.c:4384 +msgid "\"EEEE\" not supported for input" +msgstr "\"EEEE\" nie jest wspierane dla wejścia" + +#: utils/adt/formatting.c:4396 +msgid "\"RN\" not supported for input" +msgstr "\"RN\" nie jest wspierane dla wejścia" + +#: utils/adt/genfile.c:60 +msgid "reference to parent directory (\"..\") not allowed" +msgstr "wskazanie na folder nadrzędny (\"..\") niedozwolone" + +#: utils/adt/genfile.c:71 +msgid "absolute path not allowed" +msgstr "ścieżka bezwzględna niedozwolona" + +#: utils/adt/genfile.c:76 +msgid "path must be in or below the current directory" +msgstr "ścieżka musi wskazywać na lub poniżej bieżącego folderu" + +#: 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 "żądana długość jest za duża" + +#: utils/adt/genfile.c:129 +#, c-format +msgid "could not seek in file \"%s\": %m" +msgstr "nie można pozycjonować w pliku \"%s\": %m" + +#: 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 "musisz być super użytkownikiem aby czytać pliki" + +#: utils/adt/genfile.c:186 utils/adt/genfile.c:231 +msgid "requested length cannot be negative" +msgstr "żądana długość nie może być ujemna" + +#: utils/adt/genfile.c:272 +msgid "must be superuser to get file information" +msgstr "musisz być superużytkownikiem by pobrać informacje o pliku" + +#: utils/adt/genfile.c:336 +msgid "must be superuser to get directory listings" +msgstr "musisz być superużytkownikiem by pobrać listy katalogu" + +#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:4251 utils/adt/geo_ops.c:5172 +msgid "too many points requested" +msgstr "żądano zbyt wielu punktów" + +#: utils/adt/geo_ops.c:317 +msgid "could not format \"path\" value" +msgstr "nie można sformatować wartości \"ścieżka\"" + +#: utils/adt/geo_ops.c:392 +#, c-format +msgid "invalid input syntax for type box: \"%s\"" +msgstr "nieprawidłowa składnia wejścia dla typu prostokąt: \"%s\"" + +#: utils/adt/geo_ops.c:956 +#, c-format +msgid "invalid input syntax for type line: \"%s\"" +msgstr "nieprawidłowa składnia wejścia dla typu linia: \"%s\"" + +#: 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 "typ \"linia\" nie został jeszcze zaimplementowany" + +#: utils/adt/geo_ops.c:1411 utils/adt/geo_ops.c:1434 +#, c-format +msgid "invalid input syntax for type path: \"%s\"" +msgstr "nieprawidłowa składnia wejścia dla typu ścieżka: \"%s\"" + +#: utils/adt/geo_ops.c:1473 +msgid "invalid number of points in external \"path\" value" +msgstr "niepoprawna liczba punktów w zewnętrznej wartości \"ścieżka\"" + +#: utils/adt/geo_ops.c:1816 +#, c-format +msgid "invalid input syntax for type point: \"%s\"" +msgstr "nieprawidłowa składnia wejścia dla typu punkt: \"%s\"" + +#: utils/adt/geo_ops.c:2044 +#, c-format +msgid "invalid input syntax for type lseg: \"%s\"" +msgstr "nieprawidłowa składnia wejścia dla typu lseg: \"%s\"" + +#: utils/adt/geo_ops.c:2648 +msgid "function \"dist_lb\" not implemented" +msgstr "funkcja \"dist_lb\" nie została jeszcze zaimplementowana" + +#: utils/adt/geo_ops.c:3161 +msgid "function \"close_lb\" not implemented" +msgstr "funkcja \"close_lb\" nie została jeszcze zaimplementowana" + +#: utils/adt/geo_ops.c:3450 +msgid "cannot create bounding box for empty polygon" +msgstr "nie można utworzyć otaczającego prostokąta dla pustego wielokąta" + +#: utils/adt/geo_ops.c:3474 utils/adt/geo_ops.c:3486 +#, c-format +msgid "invalid input syntax for type polygon: \"%s\"" +msgstr "nieprawidłowa składnia wejścia dla typu wielokąt: \"%s\"" + +#: utils/adt/geo_ops.c:3526 +msgid "invalid number of points in external \"polygon\" value" +msgstr "niepoprawna liczba punktów w zewnętrznej wartości \"wielokąt\"" + +#: utils/adt/geo_ops.c:4049 +msgid "function \"poly_distance\" not implemented" +msgstr "funkcja \"poly_distance\" nie została jeszcze zaimplementowana" + +#: utils/adt/geo_ops.c:4363 +msgid "function \"path_center\" not implemented" +msgstr "funkcja \"path_center\" nie została jeszcze zaimplementowana" + +#: utils/adt/geo_ops.c:4380 +msgid "open path cannot be converted to polygon" +msgstr "otwarta ścieżka nie może być zmieniona w wielokąt" + +#: 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 "nieprawidłowa składnia wejścia dla typu okrąg: \"%s\"" + +#: utils/adt/geo_ops.c:4602 utils/adt/geo_ops.c:4610 +msgid "could not format \"circle\" value" +msgstr "nie można sformatować wartości \"okrąg\"" + +#: utils/adt/geo_ops.c:4637 +msgid "invalid radius in external \"circle\" value" +msgstr "niepoprawny status w zewnętrznej wartości \"okrąg\"" + +#: utils/adt/geo_ops.c:5158 +msgid "cannot convert circle with radius zero to polygon" +msgstr "nie można zmienić okręgu o promieniu zero w wielokąt" + +#: utils/adt/geo_ops.c:5163 +msgid "must request at least 2 points" +msgstr "musi zwrócić co najmniej 2 punkty" + +#: utils/adt/geo_ops.c:5207 utils/adt/geo_ops.c:5230 +msgid "cannot convert empty polygon to circle" +msgstr "nie można zmienić pustego wielokąta w okrąg" + +#: utils/adt/int.c:162 +msgid "int2vector has too many elements" +msgstr "int2vector ma za dużo elementów" + +#: utils/adt/int.c:237 +msgid "invalid int2vector data" +msgstr "niepoprawne dane int2vector" + +#: utils/adt/int.c:243 utils/adt/oid.c:212 utils/adt/oid.c:293 +msgid "oidvector has too many elements" +msgstr "oidvector ma za dużo elementów" + +#: 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 "rozmiar kroku nie może być równy zero" + +#: 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 "nieprawidłowa składnia wejścia dla integer: \"%s\"" + +#: utils/adt/int8.c:114 +#, c-format +msgid "value \"%s\" is out of range for type bigint" +msgstr "wartość \"%s\" jest poza zakresem dla typu bigint" + +#: 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 poza zakresem" + +#: utils/adt/int8.c:1330 +msgid "OID out of range" +msgstr "OID poza zakresem" + +#: utils/adt/like.c:211 utils/adt/selfuncs.c:4911 +msgid "could not determine which collation to use for ILIKE" +msgstr "nie można określić jakiego porównania użyć do ILIKE" + +#: utils/adt/like_match.c:104 utils/adt/like_match.c:164 +msgid "LIKE pattern must not end with escape character" +msgstr "wzorzec LIKE nie może kończyć się znakiem ucieczki" + +#: utils/adt/like_match.c:289 utils/adt/regexp.c:684 +msgid "invalid escape string" +msgstr "niepoprawny ciąg znaków ucieczki" + +#: utils/adt/like_match.c:290 utils/adt/regexp.c:685 +msgid "Escape string must be empty or one character." +msgstr "Ciąg znaków ucieczki musi być pusty lub jednoznakowy." + +#: utils/adt/mac.c:65 +#, c-format +msgid "invalid input syntax for type macaddr: \"%s\"" +msgstr "nieprawidłowa składnia wejścia dla typu macaddr: \"%s\"" + +#: utils/adt/mac.c:72 +#, c-format +msgid "invalid octet value in \"macaddr\" value: \"%s\"" +msgstr "nieprawidłowa wartość oktetu w wartości \"macaddr\": \"%s\"" + +#: utils/adt/misc.c:80 +msgid "must be superuser to signal other server processes" +msgstr "musisz być superużytkownikiem by sygnalizować inne procesy serwera" + +#: utils/adt/misc.c:89 +#, c-format +msgid "PID %d is not a PostgreSQL server process" +msgstr "PID %d nie jest procesem serwera PostgreSQL" + +#: utils/adt/misc.c:126 +msgid "must be superuser to signal the postmaster" +msgstr "musisz być superużytkownikiem by sygnalizować postmaster" + +#: utils/adt/misc.c:131 +#, c-format +msgid "failed to send signal to postmaster: %m" +msgstr "nie powiodło się wysyłanie sygnału do postmastera: %m" + +#: utils/adt/misc.c:148 +msgid "must be superuser to rotate log files" +msgstr "musisz być super użytkownikiem aby obrócić pliki dziennika" + +#: utils/adt/misc.c:153 +msgid "rotation not possible because log collection not active" +msgstr "obrót jest niemożliwy ponieważ zbieranie logów nie jest aktywne" + +#: utils/adt/misc.c:195 +msgid "global tablespace never has databases" +msgstr "globalna przestrzeń danych nie zawiera nigdy baz danych" + +#: utils/adt/misc.c:216 +#, c-format +msgid "%u is not a tablespace OID" +msgstr "%u nie jest OID przestrzeni danych" + +#: utils/adt/misc.c:352 +msgid "unreserved" +msgstr "niezarezerwowany" + +#: utils/adt/misc.c:356 +msgid "unreserved (cannot be function or type name)" +msgstr "niezarezerwowany (nie może być nazwą funkcji ani typu)" + +#: utils/adt/misc.c:360 +msgid "reserved (can be function or type name)" +msgstr "zarezerwowany (może być nazwą funkcji ani typu)" + +#: utils/adt/misc.c:364 +msgid "reserved" +msgstr "zarezerwowany" + +#: utils/adt/nabstime.c:160 +#, c-format +msgid "invalid time zone name: \"%s\"" +msgstr "nieprawidłowa nazwa strefy czasowej: \"%s\"" + +#: utils/adt/nabstime.c:506 utils/adt/nabstime.c:579 +msgid "cannot convert abstime \"invalid\" to timestamp" +msgstr "nie można przekształcić abstime \"invalid\" do znacznika czasu" + +#: utils/adt/nabstime.c:806 +msgid "invalid status in external \"tinterval\" value" +msgstr "niepoprawny status w zewnętrznej wartości \"tinterval\"" + +#: utils/adt/nabstime.c:880 +msgid "cannot convert reltime \"invalid\" to interval" +msgstr "nie można przekształcić reltime \"invalid\" do interwału" + +#: utils/adt/nabstime.c:1575 +#, c-format +msgid "invalid input syntax for type tinterval: \"%s\"" +msgstr "nieprawidłowa składnia wejścia dla typu tinterval: \"%s\"" + +#: utils/adt/network.c:118 +#, c-format +msgid "invalid cidr value: \"%s\"" +msgstr "niepoprawna wartość cdir: \"%s\"" + +#: utils/adt/network.c:119 utils/adt/network.c:249 +msgid "Value has bits set to right of mask." +msgstr "Wartość ma bity ustawione do prawej strony maski." + +#: 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 "nie można sformatować wartości inet: %m" + +#. translator: %s is inet or cidr +#: utils/adt/network.c:217 +#, c-format +msgid "invalid address family in external \"%s\" value" +msgstr "nieprawidłowa rodzina adresów w zewnętrznej wartości \"%s\"" + +#. translator: %s is inet or cidr +#: utils/adt/network.c:224 +#, c-format +msgid "invalid bits in external \"%s\" value" +msgstr "niepoprawny status w zewnętrznej wartości \"%s\"" + +#. translator: %s is inet or cidr +#: utils/adt/network.c:233 +#, c-format +msgid "invalid length in external \"%s\" value" +msgstr "niepoprawne bity w zewnętrznej wartości \"%s\"" + +#: utils/adt/network.c:248 +msgid "invalid external \"cidr\" value" +msgstr "niepoprawna wartość zewnętrzna \"cdir\"" + +#: utils/adt/network.c:370 utils/adt/network.c:397 +#, c-format +msgid "invalid mask length: %d" +msgstr "niepoprawna długość maski: %d" + +#: utils/adt/network.c:682 +#, c-format +msgid "could not format cidr value: %m" +msgstr "nie można sformatować wartości cidr: %m" + +#: utils/adt/network.c:1255 +msgid "cannot AND inet values of different sizes" +msgstr "nie można zastosować AND do wartości inet o różnych rozmiarach" + +#: utils/adt/network.c:1287 +msgid "cannot OR inet values of different sizes" +msgstr "nie można zastosować OR do wartości inet o różnych rozmiarach" + +#: utils/adt/network.c:1348 utils/adt/network.c:1424 +msgid "result is out of range" +msgstr "wynik jest poza zakresem" + +#: utils/adt/network.c:1389 +msgid "cannot subtract inet values of different sizes" +msgstr "nie można odejmować wartości inet o różnych rozmiarach" + +#: 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 "nieprawidłowa składnia wejścia dla typu numerycznego: \"%s\"" + +#: utils/adt/numeric.c:653 +msgid "invalid length in external \"numeric\" value" +msgstr "niepoprawna długość w zewnętrznej wartości \"numeric\"" + +#: utils/adt/numeric.c:664 +msgid "invalid sign in external \"numeric\" value" +msgstr "niepoprawny znak w zewnętrznej wartości \"numeric\"" + +#: utils/adt/numeric.c:674 +msgid "invalid digit in external \"numeric\" value" +msgstr "niepoprawna cyfra w zewnętrznej wartości \"numeric\"" + +#: utils/adt/numeric.c:814 utils/adt/numeric.c:828 +#, c-format +msgid "NUMERIC precision %d must be between 1 and %d" +msgstr "precyzja NUMERIC %d musi być pomiędzy 1 a %d" + +#: utils/adt/numeric.c:819 +#, 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" + +#: utils/adt/numeric.c:837 +msgid "invalid NUMERIC type modifier" +msgstr "nieprawidłowy modyfikator typu NUMERIC" + +#: utils/adt/numeric.c:1881 utils/adt/numeric.c:3754 +msgid "value overflows numeric format" +msgstr "wartość przekracza format numeryczny" + +#: utils/adt/numeric.c:2229 +msgid "cannot convert NaN to integer" +msgstr "nie można przekształcić NaN do integer" + +#: utils/adt/numeric.c:2297 +msgid "cannot convert NaN to bigint" +msgstr "nie można przekształcić NaN do bigint" + +#: utils/adt/numeric.c:2345 +msgid "cannot convert NaN to smallint" +msgstr "nie można przekształcić NaN do smallint" + +#: utils/adt/numeric.c:3824 +msgid "numeric field overflow" +msgstr "przepełnienie pola liczbowego" + +#: 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 "" +"Pole z precyzją %d, skalą %d można zaokrąglić do wartości bezwzględnej mniej " +"niż %s%d." + +#: utils/adt/numeric.c:5273 +msgid "argument for function \"exp\" too big" +msgstr "argument dla funkcji \"exp\" zbyt duży" + +#: utils/adt/numutils.c:75 +#, c-format +msgid "value \"%s\" is out of range for type integer" +msgstr "wartość \"%s\" jest poza zakresem dla typu integer" + +#: utils/adt/numutils.c:81 +#, c-format +msgid "value \"%s\" is out of range for type smallint" +msgstr "wartość \"%s\" jest poza zakresem dla typu smallint" + +#: utils/adt/numutils.c:87 +#, c-format +msgid "value \"%s\" is out of range for 8-bit integer" +msgstr "wartość \"%s\" jest poza zakresem dla typu 8 bitowy integer" + +#: 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 "nieprawidłowa składnia wejścia dla typu 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 "wartość \"%s\" jest poza zakresem dla typu oid" + +#: utils/adt/oid.c:287 +msgid "invalid oidvector data" +msgstr "niepoprawne dane oidvector" + +#: utils/adt/oracle_compat.c:895 +msgid "requested character too large" +msgstr "żądany znak jest za duży" + +#: utils/adt/oracle_compat.c:941 utils/adt/oracle_compat.c:995 +#, c-format +msgid "requested character too large for encoding: %d" +msgstr "żądany znak jest zbyt długi dla kodowania: %d" + +#: utils/adt/oracle_compat.c:988 +msgid "null character not permitted" +msgstr "pusty znak niedozwolony" + +#: utils/adt/pg_locale.c:953 +#, c-format +msgid "could not create locale \"%s\": %m" +msgstr "nie można utworzyć lokalizacji \"%s\": %m" + +#: utils/adt/pg_locale.c:956 +#, 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\"." + +#: utils/adt/pg_locale.c:1043 +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/adt/pg_locale.c:1058 +msgid "nondefault collations are not supported on this platform" +msgstr "niedomyślne porównania nie są obsługiwane na tej platformie" + +#: utils/adt/pg_locale.c:1229 +msgid "invalid multibyte character for locale" +msgstr "niepoprawny wielobajtowy znak dla lokalizacji" + +#: utils/adt/pg_locale.c:1230 +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/adt/pseudotypes.c:94 +msgid "cannot accept a value of type any" +msgstr "nie można przyjąć wartości typu any" + +#: utils/adt/pseudotypes.c:107 +msgid "cannot display a value of type any" +msgstr "nie można wyświetlić wartości typu any" + +#: utils/adt/pseudotypes.c:121 utils/adt/pseudotypes.c:149 +msgid "cannot accept a value of type anyarray" +msgstr "nie można przyjąć wartości typu anyarray" + +#: utils/adt/pseudotypes.c:174 +msgid "cannot accept a value of type anyenum" +msgstr "nie można przyjąć wartości typu anyenum" + +#: utils/adt/pseudotypes.c:252 +msgid "cannot accept a value of type trigger" +msgstr "nie można przyjąć wartości typu trigger" + +#: utils/adt/pseudotypes.c:265 +msgid "cannot display a value of type trigger" +msgstr "nie można wyświetlić wartości typu trigger" + +#: utils/adt/pseudotypes.c:279 +msgid "cannot accept a value of type language_handler" +msgstr "nie można przyjąć wartości typu language_handler" + +#: utils/adt/pseudotypes.c:292 +msgid "cannot display a value of type language_handler" +msgstr "nie można wyświetlić wartości typu language_handler" + +#: utils/adt/pseudotypes.c:306 +msgid "cannot accept a value of type fdw_handler" +msgstr "nie można przyjąć wartości typu fdw_handler" + +#: utils/adt/pseudotypes.c:319 +msgid "cannot display a value of type fdw_handler" +msgstr "nie można wyświetlić wartości typu fdw_handler" + +#: utils/adt/pseudotypes.c:333 +msgid "cannot accept a value of type internal" +msgstr "nie można przyjąć wartości typu internal" + +#: utils/adt/pseudotypes.c:346 +msgid "cannot display a value of type internal" +msgstr "nie można wyświetlić wartości typu internal" + +#: utils/adt/pseudotypes.c:360 +msgid "cannot accept a value of type opaque" +msgstr "nie można przyjąć wartości typu opaque" + +#: utils/adt/pseudotypes.c:373 +msgid "cannot display a value of type opaque" +msgstr "nie można wyświetlić wartości typu opaque" + +#: utils/adt/pseudotypes.c:387 +msgid "cannot accept a value of type anyelement" +msgstr "nie można przyjąć wartości typu anyelement" + +#: utils/adt/pseudotypes.c:400 +msgid "cannot display a value of type anyelement" +msgstr "nie można wyświetlić wartości typu anyelement" + +#: utils/adt/pseudotypes.c:413 +msgid "cannot accept a value of type anynonarray" +msgstr "nie można przyjąć wartości typu anynonarray" + +#: utils/adt/pseudotypes.c:426 +msgid "cannot display a value of type anynonarray" +msgstr "nie można wyświetlić wartości typu anynonarray" + +#: utils/adt/pseudotypes.c:439 +msgid "cannot accept a value of a shell type" +msgstr "nie można przyjąć wartości typu powłoki" + +#: utils/adt/pseudotypes.c:452 +msgid "cannot display a value of a shell type" +msgstr "nie można wyświetlić wartości typu powłoki" + +#: utils/adt/pseudotypes.c:474 utils/adt/pseudotypes.c:498 +msgid "cannot accept a value of type pg_node_tree" +msgstr "nie można przyjąć wartości typu pg_node_tree" + +#: utils/adt/regexp.c:275 utils/adt/varlena.c:2866 +#, c-format +msgid "regular expression failed: %s" +msgstr "nie udało się wyrażenie regularne: %s" + +#: utils/adt/regexp.c:412 +#, c-format +msgid "invalid regexp option: \"%c\"" +msgstr "niepoprawna opcja regexp: \"%c\"" + +#: utils/adt/regexp.c:884 +msgid "regexp_split does not support the global option" +msgstr "regexp_split nie obsługuje opcji globalnej" + +#: utils/adt/regproc.c:123 utils/adt/regproc.c:143 +#, c-format +msgid "more than one function named \"%s\"" +msgstr "więcej niż jedna funkcja o nazwie \"%s\"" + +#: utils/adt/regproc.c:468 utils/adt/regproc.c:488 +#, c-format +msgid "more than one operator named %s" +msgstr "więcej niż jeden operator o nazwie %s" + +#: utils/adt/regproc.c:635 utils/adt/regproc.c:1485 utils/adt/ruleutils.c:5858 +#: utils/adt/ruleutils.c:5913 utils/adt/ruleutils.c:5950 +msgid "too many arguments" +msgstr "zbyt wiele argumentów" + +#: utils/adt/regproc.c:636 +msgid "Provide two argument types for operator." +msgstr "Podaj dwa typy argumentów dla operatora." + +#: 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 "niepoprawna składnia nazwy" + +#: utils/adt/regproc.c:1383 +msgid "expected a left parenthesis" +msgstr "oczekiwano lewego nawiasu" + +#: utils/adt/regproc.c:1399 +msgid "expected a right parenthesis" +msgstr "oczekiwano prawego nawiasu" + +#: utils/adt/regproc.c:1418 +msgid "expected a type name" +msgstr "oczekiwano nazwy typu" + +#: utils/adt/regproc.c:1450 +msgid "improper type name" +msgstr "niepoprawna nazwa typu" + +#: utils/adt/ri_triggers.c:409 utils/adt/ri_triggers.c:2841 +#: utils/adt/ri_triggers.c:3535 utils/adt/ri_triggers.c:3567 +#, 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:412 utils/adt/ri_triggers.c:2844 +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:3097 +#, c-format +msgid "function \"%s\" must be fired for INSERT" +msgstr "funkcja \"%s\" musi być odpalona dla INSERT" + +#: utils/adt/ri_triggers.c:3103 +#, c-format +msgid "function \"%s\" must be fired for UPDATE" +msgstr "funkcja \"%s\" musi być odpalona dla UPDATE" + +#: utils/adt/ri_triggers.c:3117 +#, c-format +msgid "function \"%s\" must be fired for DELETE" +msgstr "funkcja \"%s\" musi być odpalona dla DELETE" + +#: utils/adt/ri_triggers.c:3146 +#, 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:3148 +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:3502 +#, 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:3506 +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:3537 +#, c-format +msgid "No rows were found in \"%s\"." +msgstr "Nie odnaleziono wierszy w \"%s\"." + +#: utils/adt/ri_triggers.c:3569 +#, 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:3575 +#, 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:3578 +#, 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:98 utils/adt/rowtypes.c:473 +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: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 "nieprawidłowy literał rekordu: \"%s\"" + +#: utils/adt/rowtypes.c:152 +msgid "Missing left parenthesis." +msgstr "Brak lewego nawiasu." + +#: utils/adt/rowtypes.c:180 +msgid "Too few columns." +msgstr "Zbyt mało kolumn." + +#: utils/adt/rowtypes.c:204 utils/adt/rowtypes.c:212 +msgid "Unexpected end of input." +msgstr "Niespodziewany koniec wejścia." + +#: utils/adt/rowtypes.c:263 +msgid "Too many columns." +msgstr "Zbyt dużo kolumn." + +#: utils/adt/rowtypes.c:271 +msgid "Junk after right parenthesis." +msgstr "Śmieci za prawym nawiasem." + +#: utils/adt/rowtypes.c:522 +#, c-format +msgid "wrong number of columns: %d, expected %d" +msgstr "niepoprawna liczba kolumn: %d, oczekiwano %d" + +#: utils/adt/rowtypes.c:549 +#, c-format +msgid "wrong data type: %u, expected %u" +msgstr "niepoprawny typ danych: %u, oczekiwano %u" + +#: utils/adt/rowtypes.c:610 +#, c-format +msgid "improper binary format in record column %d" +msgstr "niewłaściwy format binarny w polu %d rekordu" + +#: 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 "" +"nie można porównywać niepodobnych typów kolumn %s i %s w kolumnie rekordu %d" + +#: utils/adt/rowtypes.c:983 utils/adt/rowtypes.c:1203 +#, fuzzy +msgid "cannot compare record types with different numbers of columns" +msgstr "nie można porównywać typów złożonych z różną liczbą kolumn" + +#: utils/adt/ruleutils.c:2429 +#, c-format +msgid "rule \"%s\" has unsupported event type %d" +msgstr "reguła \"%s\" ma nieobsługiwany typ zdarzenia %d" + +#: utils/adt/selfuncs.c:4896 utils/adt/selfuncs.c:5350 +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:5011 utils/adt/selfuncs.c:5510 +msgid "regular-expression matching not supported on type bytea" +msgstr "dopasowanie wyrażeniami regularnymi nieobsługiwane dla typu 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 "nieprawidłowa składnia wejścia dla typu tid: \"%s\"" + +#: utils/adt/timestamp.c:97 +#, 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:103 +#, 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:171 utils/adt/timestamp.c:435 +#, c-format +msgid "timestamp out of range: \"%s\"" +msgstr "znacznik czasu poza zakresem: \"%s\"" + +#: 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 "wartość data/czas \"%s\" nie jest już obsługiwana" + +#: utils/adt/timestamp.c:260 +msgid "timestamp cannot be NaN" +msgstr "znacznik czasu nie może być NaN" + +#: utils/adt/timestamp.c:370 +#, 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:658 utils/adt/timestamp.c:3109 +#: utils/adt/timestamp.c:3239 utils/adt/timestamp.c:3624 +msgid "interval out of range" +msgstr "interwał poza zakresem" + +#: utils/adt/timestamp.c:787 utils/adt/timestamp.c:820 +msgid "invalid INTERVAL type modifier" +msgstr "nieprawidłowy modyfikator typu INTERVAL" + +#: utils/adt/timestamp.c:803 +#, c-format +msgid "INTERVAL(%d) precision must not be negative" +msgstr "precyzja INTERVAL(%d) nie może być ujemna" + +#: utils/adt/timestamp.c:809 +#, c-format +msgid "INTERVAL(%d) precision reduced to maximum allowed, %d" +msgstr "precyzja INTERVAL(%d) zredukowana do maksymalnej dopuszczalnej, %d" + +#: utils/adt/timestamp.c:1101 +#, 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:2306 +msgid "cannot subtract infinite timestamps" +msgstr "nie można odejmować nieskończonych znaczników czasu" + +#: utils/adt/timestamp.c:3365 utils/adt/timestamp.c:3961 +#: utils/adt/timestamp.c:4020 +#, c-format +msgid "timestamp units \"%s\" not supported" +msgstr "jednostki \"%s\" znacznika czasu nie są obsługiwane" + +#: utils/adt/timestamp.c:3379 utils/adt/timestamp.c:4030 +#, c-format +msgid "timestamp units \"%s\" not recognized" +msgstr "jednostki \"%s\" znacznika czasu nierozpoznane" + +#: 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 "jednostki \"%s\" znacznika czasu ze strefą czasową nie są obsługiwane" + +#: utils/adt/timestamp.c:3537 utils/adt/timestamp.c:4242 +#, c-format +msgid "timestamp with time zone units \"%s\" not recognized" +msgstr "jednostki \"%s\" znacznika czasu ze strefą czasową nierozpoznane" + +#: utils/adt/timestamp.c:3617 utils/adt/timestamp.c:4348 +#, c-format +msgid "interval units \"%s\" not supported" +msgstr "jednostki \"%s\" interwału nie są obsługiwane" + +#: utils/adt/timestamp.c:3633 utils/adt/timestamp.c:4375 +#, c-format +msgid "interval units \"%s\" not recognized" +msgstr "jednostki \"%s\" interwału nierozpoznane" + +#: utils/adt/timestamp.c:4445 utils/adt/timestamp.c:4618 +#, c-format +msgid "could not convert to time zone \"%s\"" +msgstr "nie można przekształcić do strefy czasowej \"%s\"" + +#: utils/adt/timestamp.c:4477 utils/adt/timestamp.c:4651 +#, c-format +msgid "interval time zone \"%s\" must not specify month" +msgstr "interwał strefy czasowej \"%s\" nie może określać miesiąca" + +#: utils/adt/trigfuncs.c:41 +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:47 +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:53 +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:59 +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:100 +msgid "gtsvector_in not implemented" +msgstr "gtsvector_in niezaimplementowane" + +#: 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 "błąd składni w tsquery: \"%s\"" + +#: utils/adt/tsquery.c:177 +#, c-format +msgid "no operand in tsquery: \"%s\"" +msgstr "brak argumentów w tsquery: \"%s\"" + +#: utils/adt/tsquery.c:250 +#, c-format +msgid "value is too big in tsquery: \"%s\"" +msgstr "zbyt duża wartość w tsquery: \"%s\"" + +#: utils/adt/tsquery.c:255 +#, c-format +msgid "operand is too long in tsquery: \"%s\"" +msgstr "zbyt długa wartość w tsquery: \"%s\"" + +#: utils/adt/tsquery.c:283 +#, c-format +msgid "word is too long in tsquery: \"%s\"" +msgstr "słowo jest zbyt długie w tsquery: \"%s\"" + +#: utils/adt/tsquery.c:512 +#, c-format +msgid "text-search query doesn't contain lexemes: \"%s\"" +msgstr "zapytanie wyszukiwania tekstowego nie zawiera leksemów: \"%s\"" + +#: utils/adt/tsquery_cleanup.c:285 +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:296 +msgid "ts_rewrite query must return two tsquery columns" +msgstr "zapytanie ts_rewrite musi zwrócić dwie kolumny tsquery" + +#: utils/adt/tsrank.c:404 +msgid "array of weight must be one-dimensional" +msgstr "tablica wag musi być jednowymiarowa" + +#: utils/adt/tsrank.c:409 +msgid "array of weight is too short" +msgstr "tablica wag jest za krótka" + +#: utils/adt/tsrank.c:414 +msgid "array of weight must not contain nulls" +msgstr "tablica wag nie może zawierać nulli" + +#: utils/adt/tsrank.c:423 utils/adt/tsrank.c:749 +msgid "weight out of range" +msgstr "waga poza zakresem" + +#: utils/adt/tsvector.c:215 +#, 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:222 +#, 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 +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:137 +#, c-format +msgid "syntax error in tsvector: \"%s\"" +msgstr "błąd składni w tsvector: \"%s\"" + +#: utils/adt/tsvector_parser.c:202 +#, c-format +msgid "there is no escaped character: \"%s\"" +msgstr "nie ma znaków z ucieczką: \"%s\"" + +#: utils/adt/tsvector_parser.c:319 +#, 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:56 utils/adt/varchar.c:48 +#, 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:61 utils/adt/varchar.c:52 +#, 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: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ługość ciągu bitowego %d nie pasuje do typu bit(%d)" + +#: utils/adt/varbit.c:188 utils/adt/varbit.c:490 +#, c-format +msgid "\"%c\" is not a valid binary digit" +msgstr "\"%c\" nie jest poprawną cyfrą binarną" + +#: utils/adt/varbit.c:213 utils/adt/varbit.c:515 +#, c-format +msgid "\"%c\" is not a valid hexadecimal digit" +msgstr "\"%c\" nie jest poprawną cyfrą szesnastkową" + +#: utils/adt/varbit.c:300 utils/adt/varbit.c:603 +msgid "invalid length in external bit string" +msgstr "niepoprawna długość w zewnętrznym ciągu bitów" + +#: 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 "ciąg bitów za długi dla typu bit varying(%d)" + +#: 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 "niedopuszczalna ujemna długość podciągu" + +#: utils/adt/varbit.c:1164 +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:1206 +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:1253 +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:1731 utils/adt/varbit.c:1789 +#, 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:1740 utils/adt/varlena.c:2163 +msgid "new bit must be 0 or 1" +msgstr "nowy bit musi być 0 lub 1" + +#: utils/adt/varchar.c:152 utils/adt/varchar.c:305 +#, c-format +msgid "value too long for type character(%d)" +msgstr "wartość zbyt długa dla typu znakowego (%d)" + +#: utils/adt/varchar.c:473 utils/adt/varchar.c:594 +#, 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:1314 +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:1358 utils/adt/varlena.c:1371 +#, c-format +msgid "could not convert string to UTF-16: error %lu" +msgstr "nie można przekształcić ciągu do UTF-16: błąd %lu" + +#: utils/adt/varlena.c:1386 +#, c-format +msgid "could not compare Unicode strings: %m" +msgstr "nie można porównać ciągów Unikodu: %m" + +#: 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 "indeks %d przekracza dopuszczalny zakres 0..%d" + +#: utils/adt/varlena.c:2959 +msgid "field position must be greater than zero" +msgstr "pozycja pola musi być większa niż zero" + +#: utils/adt/varlena.c:3828 utils/adt/varlena.c:3889 +msgid "unterminated conversion specifier" +msgstr "nierozpoznany specyfikator konwersji" + +#: utils/adt/varlena.c:3852 utils/adt/varlena.c:3868 +msgid "argument number is out of range" +msgstr "numer argumentu wykracza poza zakres" + +#: utils/adt/varlena.c:3895 +msgid "conversion specifies argument 0, but arguments are numbered from 1" +msgstr "" +"przekształcenie specyfikuje argument 0, ale argumenty są numerowane od 1" + +#: utils/adt/varlena.c:3902 +#, fuzzy +msgid "too few arguments for format" +msgstr "za mało argumentów do formatowania" + +#: utils/adt/varlena.c:3923 +#, c-format +msgid "unrecognized conversion specifier \"%c\"" +msgstr "nierozpoznany specyfikator konwersji \"%c\"" + +#: utils/adt/varlena.c:3952 +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 +msgid "argument of ntile must be greater than zero" +msgstr "argument ntile musi być większy od zera" + +#: utils/adt/windowfuncs.c:465 +msgid "argument of nth_value must be greater than zero" +msgstr "argument nth_value musi być większy od zera" + +#: utils/adt/xml.c:135 +msgid "unsupported XML feature" +msgstr "nieobsługiwana cecha XML" + +#: utils/adt/xml.c:136 +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:137 +msgid "You need to rebuild PostgreSQL using --with-libxml." +msgstr "Powinieneś zrekompilować PostgreSQL z użyciem --with-libxml." + +#: utils/adt/xml.c:156 utils/mb/mbutils.c:515 +#, c-format +msgid "invalid encoding name \"%s\"" +msgstr "nieprawidłowa nazwa kodowania: \"%s\"" + +#: utils/adt/xml.c:402 utils/adt/xml.c:407 +msgid "invalid XML comment" +msgstr "niepoprawny komentarz XML" + +#: utils/adt/xml.c:536 +msgid "not an XML document" +msgstr "to nie dokument XML" + +#: utils/adt/xml.c:689 utils/adt/xml.c:712 +msgid "invalid XML processing instruction" +msgstr "niepoprawna instrukcja przetwarzania XML" + +#: utils/adt/xml.c:690 +#, 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:713 +msgid "XML processing instruction cannot contain \"?>\"." +msgstr "instrukcja przetwarzania XML nie może zawierać \"?>\"." + +#: utils/adt/xml.c:792 +msgid "xmlvalidate is not implemented" +msgstr "xmlvalidate nie jest zrealizowana" + +#: utils/adt/xml.c:877 +msgid "could not initialize XML library" +msgstr "nie udało się zainicjować biblioteki XML" + +#: utils/adt/xml.c:878 +#, 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:1420 +msgid "Invalid character value." +msgstr "Niepoprawna wartość znaku." + +#: utils/adt/xml.c:1423 +msgid "Space required." +msgstr "Wymagane wolne miejsce." + +#: utils/adt/xml.c:1426 +msgid "standalone accepts only 'yes' or 'no'." +msgstr "autonomiczny akceptuje tylko 'tak' lub 'nie'." + +#: utils/adt/xml.c:1429 +msgid "Malformed declaration: missing version." +msgstr "Nieprawidłowo utworzona deklaracja: brakuje wersji." + +#: utils/adt/xml.c:1432 +msgid "Missing encoding in text declaration." +msgstr "Brakujące kodowanie w deklaracji tekstu." + +#: utils/adt/xml.c:1435 +msgid "Parsing XML declaration: '?>' expected." +msgstr "Parsowanie deklaracji XML: oczekiwano '?>'." + +#: utils/adt/xml.c:1438 +#, c-format +msgid "Unrecognized libxml error code: %d." +msgstr "Nieznany kod błędu libxml: %d." + +#: utils/adt/xml.c:1690 +msgid "XML does not support infinite date values." +msgstr "XML nie obsługuje nieskończonych wartości daty." + +#: utils/adt/xml.c:1713 utils/adt/xml.c:1740 +msgid "XML does not support infinite timestamp values." +msgstr "XML nie obsługuje nieskończonych wartości znaczników czasu." + +#: utils/adt/xml.c:2125 +msgid "invalid query" +msgstr "nieprawidłowe zapytanie" + +#: utils/adt/xml.c:3349 +msgid "invalid array for XML namespace mapping" +msgstr "niepoprawna tablica dla mapowania przestrzeni nazw XML" + +#: utils/adt/xml.c:3350 +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:3374 +msgid "empty XPath expression" +msgstr "puste wyrażenie XPath" + +#: utils/adt/xml.c:3422 +msgid "neither namespace name nor URI may be null" +msgstr "ani nazwa przestrzeni nazw ani URI nie mogą być puste" + +#: utils/adt/xml.c:3429 +#, 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/sort/logtape.c:213 +#, c-format +msgid "could not write block %ld of temporary file: %m" +msgstr "nie można zapisać bloku %ld pliku tymczasowego: %m" + +#: utils/sort/logtape.c:215 +msgid "Perhaps out of disk space?" +msgstr "Być może brak przestrzeni dyskowej?" + +#: 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/sort/tuplesort.c:3131 +#, c-format +msgid "could not create unique index \"%s\"" +msgstr "nie można utworzyć unikalnego indeksu \"%s\"" + +#: utils/sort/tuplesort.c:3133 +#, c-format +msgid "Key %s is duplicated." +msgstr "Klucz %s jest zdublowany." + +#: utils/cache/lsyscache.c:2414 utils/cache/lsyscache.c:2447 +#: utils/cache/lsyscache.c:2480 utils/cache/lsyscache.c:2513 +#, c-format +msgid "type %s is only a shell" +msgstr "typ %s jest jedynie powłoką" + +#: utils/cache/lsyscache.c:2419 +#, c-format +msgid "no input function available for type %s" +msgstr "brak funkcji wejścia dostępnej dla typu %s" + +#: utils/cache/lsyscache.c:2452 +#, c-format +msgid "no output function available for type %s" +msgstr "brak funkcji wyjścia dostępnej dla typu %s" + +#: utils/cache/plancache.c:589 +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:4285 +#, 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:4287 +msgid "Continuing anyway, but there's something wrong." +msgstr "Kontynuujemy mimo wszystko tak, ale coś jest nie tak." + +#: utils/cache/relcache.c:4501 +#, 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:454 +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:596 utils/cache/relmapper.c:702 +#, 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:609 +#, 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:619 +#, c-format +msgid "relation mapping file \"%s\" contains invalid data" +msgstr "plik mapowania relacji \"%s\" zawiera niepoprawne dane" + +#: utils/cache/relmapper.c:629 +#, c-format +msgid "relation mapping file \"%s\" contains incorrect checksum" +msgstr "plik mapowania relacji \"%s\" zawiera niepoprawną sumę kontrolną" + +#: utils/cache/relmapper.c:741 +#, 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:754 +#, 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:760 +#, 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:629 +#, c-format +msgid "type %s is not composite" +msgstr "typ %s nie jest złożony" + +#: utils/cache/typcache.c:643 +msgid "record type has not been registered" +msgstr "typ rekordu nie został zarejestrowany" + +#: utils/mmgr/aset.c:417 +#, c-format +msgid "Failed while creating memory context \"%s\"." +msgstr "Niepowodzenie podczas tworzenia kontekstu pamięci \"%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 "Niepowodzenie żądania o rozmiarze %lu." + +#: utils/mmgr/portalmem.c:207 +#, c-format +msgid "cursor \"%s\" already exists" +msgstr "kursor \"%s\" już istnieje" + +#: utils/mmgr/portalmem.c:211 +#, c-format +msgid "closing existing cursor \"%s\"" +msgstr "zamykanie istniejącego kursora \"%s\"" + +#: utils/mmgr/portalmem.c:448 +#, c-format +msgid "cannot drop active portal \"%s\"" +msgstr "nie można usunąć aktywnego portalu \"%s\"" + +#: utils/mmgr/portalmem.c:635 +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/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 +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:545 +#, c-format +msgid "access to library \"%s\" is not allowed" +msgstr "dostęp do biblioteki \"%s\" jest niedozwolony" + +#: utils/fmgr/dfmgr.c:572 +#, 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:617 +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:636 +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:270 +#, 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:474 +#, 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:845 utils/fmgr/fmgr.c:2106 +#, 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/funcapi.c:354 +#, 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:1208 utils/fmgr/funcapi.c:1239 +msgid "number of aliases does not match number of columns" +msgstr "liczba aliasów nie zgadza się z liczbą kolumn" + +#: utils/fmgr/funcapi.c:1233 +msgid "no column alias was provided" +msgstr "nie wskazano aliasu kolumny" + +#: utils/fmgr/funcapi.c:1257 +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/error/assert.c:37 +msgid "TRAP: ExceptionalCondition: bad arguments\n" +msgstr "PUŁAPKA: ExceptionalCondition: niepoprawne argumenty\n" + +#: utils/error/assert.c:40 +#, 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:1507 +#, 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:1520 +#, 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:1910 utils/error/elog.c:1920 utils/error/elog.c:1930 +msgid "[unknown]" +msgstr "[nieznany]" + +#: utils/error/elog.c:2281 utils/error/elog.c:2561 utils/error/elog.c:2639 +msgid "missing error text" +msgstr "brakujący tekst błędu" + +#: utils/error/elog.c:2284 utils/error/elog.c:2287 utils/error/elog.c:2642 +#: utils/error/elog.c:2645 +#, c-format +msgid " at character %d" +msgstr " przy znaku %d" + +#: utils/error/elog.c:2297 utils/error/elog.c:2304 +msgid "DETAIL: " +msgstr "SZCZEGÓŁY: " + +#: utils/error/elog.c:2311 +msgid "HINT: " +msgstr "PODPOWIEDŹ: " + +#: utils/error/elog.c:2318 +msgid "QUERY: " +msgstr "ZAPYTANIE: " + +#: utils/error/elog.c:2325 +msgid "CONTEXT: " +msgstr "KONTEKST: " + +#: utils/error/elog.c:2335 +#, c-format +msgid "LOCATION: %s, %s:%d\n" +msgstr "POZYCJA: %s, %s:%d\n" + +#: utils/error/elog.c:2342 +#, c-format +msgid "LOCATION: %s:%d\n" +msgstr "POZYCJA: %s:%d\n" + +#: utils/error/elog.c:2356 +msgid "STATEMENT: " +msgstr "WYRAŻENIE: " + +#. translator: This string will be truncated at 47 +#. characters expanded. +#: utils/error/elog.c:2754 +#, c-format +msgid "operating system error %d" +msgstr "błąd systemu operacyjnego %d" + +#: utils/error/elog.c:2777 +msgid "DEBUG" +msgstr "DEBUG" + +#: utils/error/elog.c:2781 +msgid "LOG" +msgstr "DZIENNIK" + +#: utils/error/elog.c:2784 +msgid "INFO" +msgstr "INFORMACJA" + +#: utils/error/elog.c:2787 +msgid "NOTICE" +msgstr "UWAGA" + +#: utils/error/elog.c:2790 +msgid "WARNING" +msgstr "OSTRZEŻENIE" + +#: utils/error/elog.c:2793 +msgid "ERROR" +msgstr "BŁĄD" + +#: utils/error/elog.c:2796 +msgid "FATAL" +msgstr "KATASTROFALNY" + +#: utils/error/elog.c:2799 +msgid "PANIC" +msgstr "PANIKA" + +#: 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:485 +msgid "encoding name too long" +msgstr "nazwa kodowania zbyt długa" + +#: utils/mb/mbutils.c:281 +#, 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:351 +#, 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:375 utils/mb/mbutils.c:676 +#, 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:462 +#, c-format +msgid "invalid source encoding name \"%s\"" +msgstr "nieprawidłowa nazwa kodowania źródła: \"%s\"" + +#: utils/mb/mbutils.c:467 +#, c-format +msgid "invalid destination encoding name \"%s\"" +msgstr "nieprawidłowa nazwa kodowania celu: \"%s\"" + +#: utils/mb/mbutils.c:589 +#, c-format +msgid "invalid byte value for encoding \"%s\": 0x%02x" +msgstr "niepoprawna wartość bajtu dla kodowania \"%s\": 0x%02x" + +#: utils/mb/wchar.c:1611 +#, c-format +msgid "invalid byte sequence for encoding \"%s\": 0x%s" +msgstr "niepoprawna sekwencja bajtów dla kodowania \"%s\": 0x%s" + +#: utils/mb/wchar.c:1640 +#, c-format +msgid "character 0x%s of encoding \"%s\" has no equivalent in \"%s\"" +msgstr "znak 0x%s kodowania \"%s\" nie ma równoważnego w \"%s\"" + +#: utils/mb/conv.c:509 +#, c-format +msgid "invalid encoding number: %d" +msgstr "nieprawidłowy numer kodowania: %d" + +#: utils/misc/guc.c:525 +msgid "Ungrouped" +msgstr "Nie grupowane" + +#: utils/misc/guc.c:527 +msgid "File Locations" +msgstr "Położenie plików" + +#: utils/misc/guc.c:529 +msgid "Connections and Authentication" +msgstr "Połączenia i Autoryzacja" + +#: utils/misc/guc.c:531 +msgid "Connections and Authentication / Connection Settings" +msgstr "Połączenia i Autoryzacja / Ustawienia Połączenia" + +#: utils/misc/guc.c:533 +msgid "Connections and Authentication / Security and Authentication" +msgstr "Połączenia i Autoryzacja / Bezpieczeństwo i Autoryzacja" + +#: utils/misc/guc.c:535 +msgid "Resource Usage" +msgstr "Użycie Zasobów" + +#: utils/misc/guc.c:537 +msgid "Resource Usage / Memory" +msgstr "Użycie Zasobów / Pamięć" + +#: utils/misc/guc.c:539 +msgid "Resource Usage / Kernel Resources" +msgstr "Użycie Zasobów / Zasoby Jądra" + +#: utils/misc/guc.c:541 +msgid "Resource Usage / Cost-Based Vacuum Delay" +msgstr "Użycie Zasobów / Opóźnienie Odkurzania na Podstawie Kosztów" + +#: utils/misc/guc.c:543 +msgid "Resource Usage / Background Writer" +msgstr "Użycie Zasobów / Pisarz w Tle" + +#: utils/misc/guc.c:545 +msgid "Resource Usage / Asynchronous Behavior" +msgstr "Użycie Zasobów / Zachowanie Asynchroniczne" + +#: utils/misc/guc.c:547 +msgid "Write-Ahead Log" +msgstr "Dziennik Zapisu z Wyprzedzeniem" + +#: utils/misc/guc.c:549 +msgid "Write-Ahead Log / Settings" +msgstr "Dziennik Zapisu z Wyprzedzeniem / Ustawienia" + +#: utils/misc/guc.c:551 +msgid "Write-Ahead Log / Checkpoints" +msgstr "Dziennik Zapisu z Wyprzedzeniem / Punkty Kontrolne" + +#: utils/misc/guc.c:553 +msgid "Write-Ahead Log / Archiving" +msgstr "Dziennik Zapisu z Wyprzedzeniem / Archiwizacja" + +#: utils/misc/guc.c:555 +msgid "Replication" +msgstr "Replikacja" + +#: utils/misc/guc.c:557 +msgid "Replication / Master Server" +msgstr "Replikacja / Serwer Podstawowy" + +#: utils/misc/guc.c:559 +msgid "Replication / Standby Servers" +msgstr "Replikacja / Serwery Gotowości" + +#: utils/misc/guc.c:561 +msgid "Query Tuning" +msgstr "Dostrajanie Zapytań" + +#: utils/misc/guc.c:563 +msgid "Query Tuning / Planner Method Configuration" +msgstr "Dostrajanie Zapytań / Konfiguracja Metody Planisty" + +#: utils/misc/guc.c:565 +msgid "Query Tuning / Planner Cost Constants" +msgstr "Dostrajanie Zapytań / Stałe Kosztów Planisty" + +#: utils/misc/guc.c:567 +msgid "Query Tuning / Genetic Query Optimizer" +msgstr "Dostrajanie Zapytań / Genetyczny Optymalizator Zapytania" + +#: utils/misc/guc.c:569 +msgid "Query Tuning / Other Planner Options" +msgstr "Dostrajanie Zapytań / Inne opcje Planisty" + +#: utils/misc/guc.c:571 +msgid "Reporting and Logging" +msgstr "Raportowanie i Rejestrowanie" + +#: utils/misc/guc.c:573 +msgid "Reporting and Logging / Where to Log" +msgstr "Raportowanie i Rejestrowanie / Gdzie Logować" + +#: utils/misc/guc.c:575 +msgid "Reporting and Logging / When to Log" +msgstr "Raportowanie i Rejestrowanie / Kiedy Logować" + +#: utils/misc/guc.c:577 +msgid "Reporting and Logging / What to Log" +msgstr "Raportowanie i Rejestrowanie / Co Logować" + +#: utils/misc/guc.c:579 +msgid "Statistics" +msgstr "Statystyki" + +#: utils/misc/guc.c:581 +msgid "Statistics / Monitoring" +msgstr "Statystyki / Monitorowanie" + +#: utils/misc/guc.c:583 +msgid "Statistics / Query and Index Statistics Collector" +msgstr "Statystyki / Kolektor Statystyk Zapytań i Indeksów" + +#: utils/misc/guc.c:585 +msgid "Autovacuum" +msgstr "Autoodkurzanie" + +#: utils/misc/guc.c:587 +msgid "Client Connection Defaults" +msgstr "Ustawienia Domyślne Połączenia Klienta" + +#: utils/misc/guc.c:589 +msgid "Client Connection Defaults / Statement Behavior" +msgstr "Ustawienia Domyślne Połączenia Klienta / Zachowanie Wyrażeń" + +#: utils/misc/guc.c:591 +msgid "Client Connection Defaults / Locale and Formatting" +msgstr "Ustawienia Domyślne Połączenia Klienta / Lokalizacja i Formatowanie" + +#: utils/misc/guc.c:593 +msgid "Client Connection Defaults / Other Defaults" +msgstr "Ustawienia Domyślne Połączenia Klienta / Inne Wartości Domyślne" + +#: utils/misc/guc.c:595 +msgid "Lock Management" +msgstr "Zarządzanie Blokadami" + +#: utils/misc/guc.c:597 +msgid "Version and Platform Compatibility" +msgstr "Zgodność Wersji i Platformy" + +#: utils/misc/guc.c:599 +msgid "Version and Platform Compatibility / Previous PostgreSQL Versions" +msgstr "Zgodność Wersji i Platformy / Poprzednie Wersje PostgreSQL" + +#: utils/misc/guc.c:601 +msgid "Version and Platform Compatibility / Other Platforms and Clients" +msgstr "Zgodność Wersji i Platformy / Inne Platformy i Klienty" + +#: utils/misc/guc.c:603 +msgid "Error Handling" +msgstr "Obsługa Błędów" + +#: utils/misc/guc.c:605 +msgid "Preset Options" +msgstr "Zaprogramowane Opcje" + +#: utils/misc/guc.c:607 +msgid "Customized Options" +msgstr "Opcje Niestandardowe" + +#: utils/misc/guc.c:609 +msgid "Developer Options" +msgstr "Opcje Deweloperskie" + +#: utils/misc/guc.c:663 +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:672 +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:681 +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:690 +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:699 +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:708 +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:717 +msgid "Enables the planner's use of materialization." +msgstr "Włącza użycie przez planistę materializacji." + +#: utils/misc/guc.c:726 +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:735 +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:744 +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:753 +msgid "Enables genetic query optimization." +msgstr "Włącza genetyczny optymalizator zapytań." + +#: utils/misc/guc.c:754 +msgid "This algorithm attempts to do planning without exhaustive searching." +msgstr "" +"Ten algorytm próbuje wykonać planowanie bez wyczerpującego przeszukiwania." + +#: utils/misc/guc.c:764 +msgid "Shows whether the current user is a superuser." +msgstr "Pokazuje, czy aktualny użytkownik jest superużytkownikiem." + +#: utils/misc/guc.c:774 +msgid "Enables advertising the server via Bonjour." +msgstr "Zezwala na reklamy serwera poprzez Bonjour." + +#: utils/misc/guc.c:783 +msgid "Enables SSL connections." +msgstr "Włącza połączenia SSL." + +#: utils/misc/guc.c:792 +msgid "Forces synchronization of updates to disk." +msgstr "Wymusza synchronizacje modyfikacji na dysk." + +#: utils/misc/guc.c:793 +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." + +#: utils/misc/guc.c:804 +msgid "Continues processing past damaged page headers." +msgstr "Kontynuuje przetwarzanie nagłówków stron sprzed uszkodzonych." + +#: utils/misc/guc.c:805 +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." + +#: utils/misc/guc.c:818 +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." + +#: utils/misc/guc.c:819 +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:831 +msgid "Runs the server silently." +msgstr "Uruchamia serwer w trybie cichym." + +#: utils/misc/guc.c:832 +msgid "" +"If this parameter is set, the server will automatically run in the " +"background and any controlling terminals are dissociated." +msgstr "" +"Jeśli ten parametr jest ustawiony, serwer będzie automatycznie uruchamiany w " +"tle i wszelkie terminale sterowania są oddzielone." + +#: utils/misc/guc.c:841 +msgid "Logs each checkpoint." +msgstr "Rejestruje każdy punkt kontrolny." + +#: utils/misc/guc.c:850 +msgid "Logs each successful connection." +msgstr "Rejestruje każde udane połączenie." + +#: utils/misc/guc.c:859 +msgid "Logs end of a session, including duration." +msgstr "Rejestruje koniec sesji, w tym jej czas trwania." + +#: utils/misc/guc.c:868 +msgid "Turns on various assertion checks." +msgstr "Włącza różne sprawdzenie asercji." + +#: utils/misc/guc.c:869 +msgid "This is a debugging aid." +msgstr "Jest to pomoc debugowania." + +#: utils/misc/guc.c:883 +msgid "Terminate session on any error." +msgstr "Zakończ sesję w przypadku jakiegokolwiek błędu." + +#: utils/misc/guc.c:892 +msgid "Reinitialize server after backend crash." +msgstr "Zainicjować ponownie serwer po awarii backendu." + +#: utils/misc/guc.c:902 +msgid "Logs the duration of each completed SQL statement." +msgstr "Rejestruje czas trwania każdego zakończonego wyrażenia SQL." + +#: utils/misc/guc.c:911 +msgid "Logs each query's parse tree." +msgstr "Rejestruje drzewo parsowania każdego zapytania." + +#: utils/misc/guc.c:920 +msgid "Logs each query's rewritten parse tree." +msgstr "Rejestruje drzewo parsowania przepisanego każdego zapytania." + +#: utils/misc/guc.c:929 +msgid "Logs each query's execution plan." +msgstr "Rejestruje plan wykonania każdego zapytania." + +#: utils/misc/guc.c:938 +msgid "Indents parse and plan tree displays." +msgstr "Używa wcięć przy wyświetlaniu drzewa parsowania i planu." + +#: utils/misc/guc.c:947 +msgid "Writes parser performance statistics to the server log." +msgstr "Zapisuje statystyki wydajności parsera do dziennika serwera." + +#: utils/misc/guc.c:956 +msgid "Writes planner performance statistics to the server log." +msgstr "Zapisuje statystyki wydajności planisty do dziennika serwera." + +#: utils/misc/guc.c:965 +msgid "Writes executor performance statistics to the server log." +msgstr "Zapisuje statystyki wydajności wykonawcy do dziennika serwera." + +#: utils/misc/guc.c:974 +msgid "Writes cumulative performance statistics to the server log." +msgstr "Zapisuje łączne statystyki wydajności do dziennika serwera." + +#: utils/misc/guc.c:984 utils/misc/guc.c:1049 utils/misc/guc.c:1059 +#: utils/misc/guc.c:1069 utils/misc/guc.c:1079 utils/misc/guc.c:1804 +#: utils/misc/guc.c:1814 +msgid "No description available." +msgstr "Opis niedostępny." + +#: utils/misc/guc.c:996 +msgid "Collects information about executing commands." +msgstr "Zbiera informacje o wykonywanych poleceniach." + +#: utils/misc/guc.c:997 +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ń." + +#: utils/misc/guc.c:1007 +msgid "Collects statistics on database activity." +msgstr "Gromadzi statystyki dotyczące aktywności bazy danych." + +#: utils/misc/guc.c:1017 +msgid "Updates the process title to show the active SQL command." +msgstr "Zmienia tytuł procesu by pokazać aktywne polecenie SQL." + +#: utils/misc/guc.c:1018 +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." + +#: utils/misc/guc.c:1027 +msgid "Starts the autovacuum subprocess." +msgstr "Uruchamia proces autoodkurzania." + +#: utils/misc/guc.c:1037 +msgid "Generates debugging output for LISTEN and NOTIFY." +msgstr "Generuje wyjście debugowania dla LISTEN oraz NOTIFY." + +#: utils/misc/guc.c:1091 +msgid "Logs long lock waits." +msgstr "Rejestruje długie oczekiwanie na blokady." + +#: utils/misc/guc.c:1101 +msgid "Logs the host name in the connection logs." +msgstr "Rejestruje nazwę hosta w logach połączenia." + +#: utils/misc/guc.c:1102 +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." + +#: utils/misc/guc.c:1113 +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ń." + +#: utils/misc/guc.c:1122 +msgid "Encrypt passwords." +msgstr "Szyfruje hasła." + +#: utils/misc/guc.c:1123 +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." + +#: utils/misc/guc.c:1133 +msgid "Treats \"expr=NULL\" as \"expr IS NULL\"." +msgstr "Traktuje \"expr=NULL\" jako \"expr IS NULL\"." + +#: utils/misc/guc.c:1134 +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)." + +#: utils/misc/guc.c:1146 +msgid "Enables per-database user names." +msgstr "Włącza nazwy użytkowników osobno dla bazy danych." + +#: utils/misc/guc.c:1156 +msgid "This parameter doesn't do anything." +msgstr "Ten parametr nic nie robi." + +#: utils/misc/guc.c:1157 +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." + +#: utils/misc/guc.c:1166 +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:1175 +msgid "Sets the current transaction's read-only status." +msgstr "Ustawia stan tylko do odczytu dla bieżącej transakcji." + +#: utils/misc/guc.c:1185 +msgid "Sets the default deferrable status of new transactions." +msgstr "Ustawia domyślny stan odraczalna nowych transakcji." + +#: utils/misc/guc.c:1194 +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." + +#: utils/misc/guc.c:1204 +msgid "Check function bodies during CREATE FUNCTION." +msgstr "Sprawdzenie ciała funkcji podczas CREATE FUNCTION." + +#: utils/misc/guc.c:1213 +msgid "Enable input of NULL elements in arrays." +msgstr "Zezwolenie na wprowadzanie elementów NULL do tablic." + +#: utils/misc/guc.c:1214 +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." + +#: utils/misc/guc.c:1224 +msgid "Create new tables with OIDs by default." +msgstr "Tworzenie nowych tabel domyślnie z OID." + +#: utils/misc/guc.c:1233 +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." + +#: utils/misc/guc.c:1242 +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." + +#: utils/misc/guc.c:1253 +msgid "Emit information about resource usage in sorting." +msgstr "Tworzenie informacji dotyczących użycia zasobów w sortowaniu." + +#: utils/misc/guc.c:1267 +msgid "Generate debugging output for synchronized scanning." +msgstr "Generowanie wyjścia debugowania dla skanowania synchronicznego." + +#: utils/misc/guc.c:1282 +#, fuzzy +msgid "Enable bounded sorting using heap sort." +msgstr "Włącz ograniczone sortowanie za pomocą sortowania sterty." + +#: utils/misc/guc.c:1295 +msgid "Emit WAL-related debugging output." +msgstr "Tworzy wyjście debugu związanego z WAL." + +#: utils/misc/guc.c:1307 +msgid "Datetimes are integer based." +msgstr "Podstawą znaczników czasu są liczby całkowite." + +#: utils/misc/guc.c:1322 +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." + +#: utils/misc/guc.c:1332 +msgid "Warn about backslash escapes in ordinary string literals." +msgstr "" +"Ostrzega przed ucieczkami za pomocą bakslaszy w zwykłych stałych znakowych." + +#: utils/misc/guc.c:1342 +msgid "Causes '...' strings to treat backslashes literally." +msgstr "Powoduje że w ciągach znaków '...' bakslasze traktowane są dosłownie." + +#: utils/misc/guc.c:1353 +msgid "Enable synchronized sequential scans." +msgstr "Zezwala na synchroniczne skany sekwencyjne." + +#: utils/misc/guc.c:1363 +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:1373 +msgid "Allows connections and queries during recovery." +msgstr "Zezwala na połączenia i zapytania podczas odzyskiwania." + +#: utils/misc/guc.c:1383 +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ń." + +#: utils/misc/guc.c:1393 +msgid "Allows modifications of the structure of system tables." +msgstr "Pozwala na modyfikacje struktury tabel systemowych." + +#: utils/misc/guc.c:1404 +msgid "Disables reading from system indexes." +msgstr "Zabrania odczytu indeksów systemowych." + +#: utils/misc/guc.c:1405 +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." + +#: utils/misc/guc.c:1416 +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." + +#: utils/misc/guc.c:1417 +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." + +#: utils/misc/guc.c:1427 +msgid "When generating SQL fragments, quote all identifiers." +msgstr "Podczas generowania fragmentów SQL, cytuje wszystkie identyfikatory." + +#: utils/misc/guc.c:1446 +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." + +#: utils/misc/guc.c:1457 +msgid "Waits N seconds on connection startup after authentication." +msgstr "Oczekuje N sekund podczas uruchomienia połączenia po uwierzytelnieniu." + +#: utils/misc/guc.c:1458 utils/misc/guc.c:1907 +msgid "This allows attaching a debugger to the process." +msgstr "To pozwala dołączyć debugger do procesu." + +#: utils/misc/guc.c:1467 +msgid "Sets the default statistics target." +msgstr "Ustawia domyślną próbkę statystyczną." + +#: utils/misc/guc.c:1468 +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." + +#: utils/misc/guc.c:1477 +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:1479 +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." + +#: utils/misc/guc.c:1489 +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." + +#: utils/misc/guc.c:1491 +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." + +#: utils/misc/guc.c:1501 +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:1510 +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." + +#: utils/misc/guc.c:1519 +msgid "GEQO: number of individuals in the population." +msgstr "GEQO: liczba jednostek w populacji." + +#: utils/misc/guc.c:1520 utils/misc/guc.c:1529 +msgid "Zero selects a suitable default value." +msgstr "Zero wybiera odpowiednią wartość domyślną." + +#: utils/misc/guc.c:1528 +msgid "GEQO: number of iterations of the algorithm." +msgstr "GEQO: liczba iteracji algorytmu." + +#: utils/misc/guc.c:1539 +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:1550 +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." + +#: utils/misc/guc.c:1561 +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." + +#: utils/misc/guc.c:1572 +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." + +#: utils/misc/guc.c:1583 +msgid "Sets the maximum number of concurrent connections." +msgstr "Ustawia maksymalną liczbę jednoczesnych połączeń." + +#: utils/misc/guc.c:1593 +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:1607 +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:1618 +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ę." + +#: utils/misc/guc.c:1629 +msgid "Sets the TCP port the server listens on." +msgstr "Ustawia port TCP, na którym nasłuchuje serwer." + +#: utils/misc/guc.c:1639 +msgid "Sets the access permissions of the Unix-domain socket." +msgstr "Ustawia uprawnienia dostępu gniazda domeny Uniksa." + +#: utils/misc/guc.c:1640 +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).)" + +#: utils/misc/guc.c:1654 +msgid "Sets the file permissions for log files." +msgstr "Ustawia uprawnienia plikowe do plików dziennika." + +#: utils/misc/guc.c:1655 +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).)" + +#: utils/misc/guc.c:1668 +msgid "Sets the maximum memory to be used for query workspaces." +msgstr "" +"Ustawia maksymalną wielkość pamięci do użycia jako przestrzeń robocza " +"kwerend." + +#: utils/misc/guc.c:1669 +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." + +#: utils/misc/guc.c:1681 +msgid "Sets the maximum memory to be used for maintenance operations." +msgstr "Ustawia maksymalną wielkość pamięci dla operacji utrzymania." + +#: utils/misc/guc.c:1682 +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:1697 +msgid "Sets the maximum stack depth, in kilobytes." +msgstr "Ustawia maksymalną głębokość stosu, w kilobajtach." + +#: utils/misc/guc.c:1708 +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:1718 +msgid "Vacuum cost for a page not found in the buffer cache." +msgstr "" +"Koszt odkurzania dla strony nieodnalezionej w pamięci podręcznej bufora." + +#: utils/misc/guc.c:1728 +msgid "Vacuum cost for a page dirtied by vacuum." +msgstr "Koszt odkurzania dla strony zabrudzonej przez porządkowanie." + +#: utils/misc/guc.c:1738 +msgid "Vacuum cost amount available before napping." +msgstr "Kwota kosztów odkurzania dostępna przed drzemką." + +#: utils/misc/guc.c:1748 +msgid "Vacuum cost delay in milliseconds." +msgstr "Koszt opóźnienia odkurzania w milisekundach." + +#: utils/misc/guc.c:1759 +msgid "Vacuum cost delay in milliseconds, for autovacuum." +msgstr "Koszt opóźnienia odkurzania w milisekundach, dla autoodkurzania." + +#: utils/misc/guc.c:1770 +msgid "Vacuum cost amount available before napping, for autovacuum." +msgstr "Kwota kosztów odkurzania dostępna przed drzemką, dla autoodkurzania." + +#: utils/misc/guc.c:1780 +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." + +#: utils/misc/guc.c:1793 +msgid "Sets the maximum number of simultaneously prepared transactions." +msgstr "Ustawia maksymalną liczbę jednoczesnych przygotowanych transakcji." + +#: utils/misc/guc.c:1826 +msgid "Sets the maximum allowed duration of any statement." +msgstr "Ustawia maksymalny dozwolony czas trwania dowolnego wyrażenia." + +#: utils/misc/guc.c:1827 +msgid "A value of 0 turns off the timeout." +msgstr "Wartość 0 wyłącza wyłączy limit czasu." + +#: utils/misc/guc.c:1837 +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:1847 +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:1857 +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:1870 +msgid "Sets the maximum number of locks per transaction." +msgstr "Ustawia maksymalną liczbę blokad pojedynczej transakcji." + +#: utils/misc/guc.c:1871 +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:1882 +msgid "Sets the maximum number of predicate locks per transaction." +msgstr "Ustawia maksymalną liczbę blokad predykatu dla pojedynczej transakcji." + +#: utils/misc/guc.c:1883 +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:1894 +msgid "Sets the maximum allowed time to complete client authentication." +msgstr "Ustawia maksymalny dozwolony czas dla zakończenia autoryzacji klienta." + +#: utils/misc/guc.c:1906 +msgid "Waits N seconds on connection startup before authentication." +msgstr "" +"Oczekuje N sekund podczas uruchomienia połączenia przed uwierzytelnieniem." + +#: utils/misc/guc.c:1917 +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:1927 +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:1937 +msgid "Sets the maximum time between automatic WAL checkpoints." +msgstr "" +"Ustawia maksymalny czas pomiędzy automatycznymi punktami kontrolnymi WAL." + +#: utils/misc/guc.c:1948 +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:1950 +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:1962 +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:1973 +msgid "WAL writer sleep time between WAL flushes." +msgstr "Czas uśpienia procesu zapisu WAL pomiędzy opróżnieniami WAL." + +#: utils/misc/guc.c:1985 +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:1995 +msgid "WAL sender sleep time between WAL replications." +msgstr "Czas uśpienia procesu wysyłającego WAL pomiędzy replikacjami WAL." + +#: utils/misc/guc.c:2006 +msgid "Sets the maximum time to wait for WAL replication." +msgstr "Ustawia maksymalny czas oczekiwania na replikację WAL." + +#: utils/misc/guc.c:2017 +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:2028 +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:2039 +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:2040 +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:2051 +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:2053 +msgid "Zero prints all queries. -1 turns this feature off." +msgstr "Zero drukuje wszystkie zapytania. -1 wyłącza funkcję." + +#: utils/misc/guc.c:2063 +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:2065 +msgid "Zero prints all actions. -1 turns autovacuum logging off." +msgstr "Zero drukuje wszystkie akcje. -1 wyłącza rejestrowanie autoodkurzania." + +#: utils/misc/guc.c:2075 +msgid "Background writer sleep time between rounds." +msgstr "Czas uśpienia pomiędzy rundami procesu zapisu w tle." + +#: utils/misc/guc.c:2086 +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:2102 +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:2103 +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:2116 +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:2127 +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:2138 +msgid "Shows the maximum number of function arguments." +msgstr "Pokazuje maksymalną liczbę argumentów funkcji." + +#: utils/misc/guc.c:2149 +msgid "Shows the maximum number of index keys." +msgstr "Pokazuje maksymalną liczbę kluczy indeksu." + +#: utils/misc/guc.c:2160 +msgid "Shows the maximum identifier length." +msgstr "Pokazuje maksymalną długość identyfikatora." + +#: utils/misc/guc.c:2171 +msgid "Shows the size of a disk block." +msgstr "Pokazuje rozmiar bloku dyskowego." + +#: utils/misc/guc.c:2182 +msgid "Shows the number of pages per disk file." +msgstr "Pokazuje liczbę stron na plik dysku." + +#: utils/misc/guc.c:2193 +msgid "Shows the block size in the write ahead log." +msgstr "Pokazuje rozmiar bloku w dzienniku zapisu z wyprzedzeniem." + +#: utils/misc/guc.c:2204 +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:2217 +msgid "Time to sleep between autovacuum runs." +msgstr "Czas uśpienia pomiędzy uruchomieniami autoodkurzania." + +#: utils/misc/guc.c:2227 +msgid "Minimum number of tuple updates or deletes prior to vacuum." +msgstr "Minimalna liczba modyfikacji lub usunięć krotek przed odkurzeniem." + +#: utils/misc/guc.c:2236 +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:2246 +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:2257 +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:2267 +msgid "Time between issuing TCP keepalives." +msgstr "Czas pomiędzy wydaniami sygnalizowania aktywności TCP." + +#: utils/misc/guc.c:2268 utils/misc/guc.c:2279 +msgid "A value of 0 uses the system default." +msgstr "Wartość 0 używa wartości domyślnej dla systemu." + +#: utils/misc/guc.c:2278 +msgid "Time between TCP keepalive retransmits." +msgstr "Czas pomiędzy retransmisjami sygnalizowania aktywności TCP." + +#: utils/misc/guc.c:2289 +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:2300 +msgid "Maximum number of TCP keepalive retransmits." +msgstr "Maksymalna liczba retransmisji sygnalizowania aktywności TCP." + +#: utils/misc/guc.c:2301 +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:2312 +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:2323 +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:2324 +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:2337 +msgid "Shows the server version as an integer." +msgstr "Pokazuje wersję serwera jako liczbę całkowitą." + +#: utils/misc/guc.c:2348 +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:2349 +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:2359 +msgid "Sets the size reserved for pg_stat_activity.current_query, in bytes." +msgstr "" +"Ustawia rozmiar zarezerwowany dla pg_stat_activity.current_query, w bajtach." + +#: utils/misc/guc.c:2378 +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:2388 +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:2398 +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:2408 +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:2418 +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:2429 +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:2440 +#, fuzzy +msgid "GEQO: selective pressure within the population." +msgstr "GEQO: selektywne ciśnienie wewnątrz populacji." + +#: utils/misc/guc.c:2450 +#, fuzzy +msgid "GEQO: seed for random path selection." +msgstr "GEQO: nasiona dla wyboru ścieżek losowych." + +#: utils/misc/guc.c:2460 +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:2470 +msgid "Sets the seed for random-number generation." +msgstr "Ustawia nasiona dla generatora liczb losowych." + +#: utils/misc/guc.c:2481 +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:2490 +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:2500 +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:2519 +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:2529 +msgid "Sets the client's character set encoding." +msgstr "Ustawia zestaw znaków kodowania klienta." + +#: utils/misc/guc.c:2540 +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:2541 +msgid "If blank, no prefix is used." +msgstr "Jeśli pusta, przedrostek nie jest używany." + +#: utils/misc/guc.c:2550 +msgid "Sets the time zone to use in log messages." +msgstr "Ustawia strefę czasową używaną w komunikatach dziennika." + +#: utils/misc/guc.c:2560 +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:2561 +msgid "Also controls interpretation of ambiguous date inputs." +msgstr "Kontroluje również interpretację niejasnych wprowadzeń daty." + +#: utils/misc/guc.c:2572 +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:2573 +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:2583 +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:2594 +msgid "Sets the path for dynamically loadable modules." +msgstr "Ustawia ścieżkę dla modułów wczytywanych dynamicznie." + +#: utils/misc/guc.c:2595 +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:2608 +msgid "Sets the location of the Kerberos server key file." +msgstr "Ustawia położenie pliku klucza serwera Kerberos." + +#: utils/misc/guc.c:2619 +msgid "Sets the name of the Kerberos service." +msgstr "Ustawia nazwę usługi Kerberos." + +#: utils/misc/guc.c:2629 +msgid "Sets the Bonjour service name." +msgstr "Ustawia nazwę usługi Bonjour." + +#: utils/misc/guc.c:2641 +#, fuzzy +msgid "Shows the collation order locale." +msgstr "" +"Pokazuje klasyfikację znaków i przekształcenia wielkości znaków lokalizacji." + +#: utils/misc/guc.c:2652 +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:2663 +msgid "Sets the language in which messages are displayed." +msgstr "Ustawia język, w jakim komunikaty będą wyświetlane." + +#: utils/misc/guc.c:2673 +msgid "Sets the locale for formatting monetary amounts." +msgstr "Ustawia lokalizację dla formatowania kwot pieniędzy." + +#: utils/misc/guc.c:2683 +msgid "Sets the locale for formatting numbers." +msgstr "Ustawia lokalizację dla formatowania liczb." + +#: utils/misc/guc.c:2693 +msgid "Sets the locale for formatting date and time values." +msgstr "Ustawia lokalizację dla wartości daty i czasu." + +#: utils/misc/guc.c:2703 +msgid "Lists shared libraries to preload into server." +msgstr "" +"Listuje współdzielone biblioteki do uprzedniego wczytania przez serwer." + +#: utils/misc/guc.c:2714 +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:2725 +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:2737 +msgid "Sets the server (database) character set encoding." +msgstr "Ustawia zestaw znaków kodowania serwera (bazy danych)." + +#: utils/misc/guc.c:2749 +msgid "Shows the server version." +msgstr "Pokazuje wersję serwera." + +#: utils/misc/guc.c:2761 +msgid "Sets the current role." +msgstr "Ustawia bieżącą rolę." + +#: utils/misc/guc.c:2773 +msgid "Sets the session user name." +msgstr "Ustawia nazwę użytkownika sesji." + +#: utils/misc/guc.c:2784 +msgid "Sets the destination for server log output." +msgstr "Ustawia cel dla wyjścia dziennika serwera." + +#: utils/misc/guc.c:2785 +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:2796 +msgid "Sets the destination directory for log files." +msgstr "Ustawia folder docelowy dla plików dziennika." + +#: utils/misc/guc.c:2797 +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:2807 +msgid "Sets the file name pattern for log files." +msgstr "Ustawia wzorzec nazwy pliku dla plików dziennika." + +#: utils/misc/guc.c:2818 +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:2829 +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:2839 +msgid "Selects a file of time zone abbreviations." +msgstr "Wybiera plik dla skrótów strefy czasowej." + +#: utils/misc/guc.c:2849 +msgid "Sets the current transaction's isolation level." +msgstr "Ustawia poziom izolacji dla bieżącej transakcji." + +#: utils/misc/guc.c:2860 +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:2861 +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:2871 +msgid "Sets the directory where the Unix-domain socket will be created." +msgstr "Ustawia folder, w którym będzie utworzone gniazdo domeny Uniksa." + +#: utils/misc/guc.c:2882 +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:2893 +msgid "Sets the list of known custom variable classes." +msgstr "Ustawia listę kolumn klas zmiennych niestandardowych." + +#: utils/misc/guc.c:2904 +msgid "Sets the server's data directory." +msgstr "Ustawia folder danych serwera." + +#: utils/misc/guc.c:2915 +msgid "Sets the server's main configuration file." +msgstr "Ustawia podstawowy plik konfiguracyjny serwera." + +#: utils/misc/guc.c:2926 +msgid "Sets the server's \"hba\" configuration file." +msgstr "Ustawia podstawowy plik \"hba\" serwera." + +#: utils/misc/guc.c:2937 +msgid "Sets the server's \"ident\" configuration file." +msgstr "Ustawia podstawowy plik konfiguracyjny \"ident\" serwera." + +#: utils/misc/guc.c:2948 +msgid "Writes the postmaster PID to the specified file." +msgstr "Zapisuje PID postmastera do wskazanego pliku." + +#: utils/misc/guc.c:2959 +msgid "Writes temporary statistics files to the specified directory." +msgstr "Zapisuje tymczasowe pliki statystyk do wskazanego katalogu." + +#: utils/misc/guc.c:2970 +msgid "List of names of potential synchronous standbys." +msgstr "Lista nazw potencjalnych synchronicznych gotowości." + +#: utils/misc/guc.c:2981 +msgid "Sets default text search configuration." +msgstr "Ustawia domyślną konfigurację wyszukiwania tekstowego." + +#: utils/misc/guc.c:2991 +msgid "Sets the list of allowed SSL ciphers." +msgstr "Ustawia listę dopuszczalnych szyfrów SSL." + +#: utils/misc/guc.c:3006 +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:3026 +msgid "Sets whether \"\\'\" is allowed in string literals." +msgstr "Ustawia czy \"\\'\" jest dozwolone w literałach znakowych." + +#: utils/misc/guc.c:3036 +msgid "Sets the output format for bytea." +msgstr "Ustawia format wyjścia dla bytea." + +#: utils/misc/guc.c:3046 +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:3047 utils/misc/guc.c:3100 utils/misc/guc.c:3111 +#: utils/misc/guc.c:3167 +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:3057 +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:3058 +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:3068 +msgid "Sets the transaction isolation level of each new transaction." +msgstr "Ustawia poziom izolacji transakcji każdej nowej transakcji." + +#: utils/misc/guc.c:3078 +msgid "Sets the display format for interval values." +msgstr "Ustawia format wyświetlania dla wartości interwału." + +#: utils/misc/guc.c:3089 +msgid "Sets the verbosity of logged messages." +msgstr "Ustawia rozwlekłość rejestrowanych komunikatów." + +#: utils/misc/guc.c:3099 +msgid "Sets the message levels that are logged." +msgstr "Ustawia poziomy komunikatów które są rejestrowane." + +#: utils/misc/guc.c:3110 +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:3121 +msgid "Sets the type of statements logged." +msgstr "Ustawia typ rejestrowanych wyrażeń." + +#: utils/misc/guc.c:3131 +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:3146 +msgid "Sets the session's behavior for triggers and rewrite rules." +msgstr "Ustawia zachowanie sesji dla wyzwalaczy i reguł przepisywania." + +#: utils/misc/guc.c:3156 +msgid "Sets the current transaction's synchronization level." +msgstr "Ustawia poziom synchronizacji dla bieżącej transakcji." + +#: utils/misc/guc.c:3166 +msgid "Enables logging of recovery-related debugging information." +msgstr "" +"Włącza rejestrację informacji diagnostycznych związanych z odzyskiwaniem." + +#: utils/misc/guc.c:3182 +msgid "Collects function-level statistics on database activity." +msgstr "" +"Gromadzi statystyki dotyczące aktywności bazy danych na poziomie funkcji." + +#: utils/misc/guc.c:3192 +msgid "Set the level of information written to the WAL." +msgstr "Ustawia poziom informacji zapisany do WAL." + +#: utils/misc/guc.c:3202 +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:3212 +msgid "Sets how binary values are to be encoded in XML." +msgstr "Ustawia wartości binarne do zakodowania w XML." + +#: utils/misc/guc.c:3222 +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:4064 +#, 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:4083 +#, 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:4103 +#, 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:4134 +#, 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:4157 +#, 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:4739 utils/misc/guc.c:4903 +msgid "Value exceeds integer range." +msgstr "Wartość przekracza zakres wartości całkowitych." + +#: utils/misc/guc.c:4758 +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:4817 +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:5100 utils/misc/guc.c:5869 utils/misc/guc.c:5921 +#: utils/misc/guc.c:6594 utils/misc/guc.c:6753 utils/misc/guc.c:7932 +#: guc-file.l:203 +#, c-format +msgid "unrecognized configuration parameter \"%s\"" +msgstr "nierozpoznany parametr konfiguracyjny \"%s\"" + +#: utils/misc/guc.c:5133 +#, c-format +msgid "parameter \"%s\" cannot be changed" +msgstr "parametr \"%s\" nie może być zmieniony" + +#: utils/misc/guc.c:5162 utils/misc/guc.c:5336 utils/misc/guc.c:5433 +#: utils/misc/guc.c:5527 utils/misc/guc.c:5641 utils/misc/guc.c:5742 +#: guc-file.l:250 +#, 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:5172 +#, c-format +msgid "parameter \"%s\" cannot be changed now" +msgstr "parametr \"%s\" nie może być teraz zmieniony" + +#: utils/misc/guc.c:5203 +#, 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:5213 utils/misc/guc.c:7947 +#, c-format +msgid "permission denied to set parameter \"%s\"" +msgstr "odmowa dostępu do ustawienia parametru \"%s\"" + +#: utils/misc/guc.c:5251 +#, c-format +msgid "cannot set parameter \"%s\" within security-definer function" +msgstr "" +"nie można ustawić parametru \"%s\" w funkcji definiującej bezpieczeństwo" + +#: utils/misc/guc.c:5397 utils/misc/guc.c:5711 utils/misc/guc.c:8111 +#: utils/misc/guc.c:8145 +#, c-format +msgid "invalid value for parameter \"%s\": \"%s\"" +msgstr "nieprawidłowa wartość dla parametru \"%s\": \"%s\"" + +#: utils/misc/guc.c:5406 +#, 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:5492 +#, c-format +msgid "parameter \"%s\" requires a numeric value" +msgstr "parametr \"%s\" wymaga wartości numerycznej" + +#: utils/misc/guc.c:5500 +#, 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:5877 utils/misc/guc.c:5925 utils/misc/guc.c:6757 +#, c-format +msgid "must be superuser to examine \"%s\"" +msgstr "musisz być superużytkownikiem by skontrolować \"%s\"" + +#: utils/misc/guc.c:5991 +#, c-format +msgid "SET %s takes only one argument" +msgstr "SET %s przyjmuje jedynie jeden argument" + +#: utils/misc/guc.c:6224 +msgid "SET requires parameter name" +msgstr "SET wymaga nazwy parametru" + +#: utils/misc/guc.c:6339 +#, c-format +msgid "attempt to redefine parameter \"%s\"" +msgstr "próba przedefiniowania parametru \"%s\"" + +#: utils/misc/guc.c:7648 +#, c-format +msgid "could not parse setting for parameter \"%s\"" +msgstr "nie można zanalizować ustawienia parametru \"%s\"" + +#: utils/misc/guc.c:8009 utils/misc/guc.c:8043 +#, c-format +msgid "invalid value for parameter \"%s\": %d" +msgstr "nieprawidłowa wartość dla parametru \"%s\": %d" + +#: utils/misc/guc.c:8077 +#, c-format +msgid "invalid value for parameter \"%s\": %g" +msgstr "nieprawidłowa wartość dla parametru \"%s\": %g" + +#: utils/misc/guc.c:8267 +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:8279 +msgid "SET AUTOCOMMIT TO OFF is no longer supported" +msgstr "SET AUTOCOMMIT TO OFF nie jest już obsługiwany" + +#: utils/misc/guc.c:8354 +msgid "assertion checking is not supported by this build" +msgstr "sprawdzanie asercji nie jest obsługiwane przez tą kompilację" + +#: utils/misc/guc.c:8367 +msgid "Bonjour is not supported by this build" +msgstr "Bonjour nie jest obsługiwany przez tą kompilację" + +#: utils/misc/guc.c:8380 +msgid "SSL is not supported by this build" +msgstr "SSL nie jest obsługiwany przez tą kompilację" + +#: utils/misc/guc.c:8392 +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:8404 +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/help_config.c:131 +msgid "internal error: unrecognized run-time parameter type\n" +msgstr "błąd wewnętrzny: nierozpoznany typ parametru czasu wykonania\n" + +#: 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/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/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/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/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/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/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/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/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/tzparser.c:285 +#, c-format +msgid "invalid time zone file name \"%s\"" +msgstr "nieprawidłowa nazwa pliku strefy czasowej \"%s\"" + +#: 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/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/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/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" + +#: guc-file.l:274 +#, 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ą" + +#: guc-file.l:333 +#, c-format +msgid "parameter \"%s\" changed to \"%s\"" +msgstr "parametr \"%s\" zmieniony na \"%s\"" + +#: guc-file.l:374 +#, 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" + +#: guc-file.l:589 +#, 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" + +#: guc-file.l:594 +#, 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\"" + +#: ../port/chklocale.c:328 ../port/chklocale.c:334 +#, 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/chklocale.c:336 +msgid "Please report this to ." +msgstr "Proszę zgłosić to na adres ." + +#: ../port/dirmod.c:75 ../port/dirmod.c:88 ../port/dirmod.c:101 +#, c-format +msgid "out of memory\n" +msgstr "brak pamięci\n" + +#: ../port/dirmod.c:283 +#, c-format +msgid "could not set junction for \"%s\": %s" +msgstr "nie można ustanowić złączenia dla \"%s\": %s" + +#: ../port/dirmod.c:286 +#, 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:358 +#, c-format +msgid "could not get junction for \"%s\": %s" +msgstr "nie można ustanowić złączenia dla \"%s\": %s" + +#: ../port/dirmod.c:361 +#, 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:443 +#, c-format +msgid "could not open directory \"%s\": %s\n" +msgstr "nie można otworzyć katalogu \"%s\": %s\n" + +#: ../port/dirmod.c:480 +#, c-format +msgid "could not read directory \"%s\": %s\n" +msgstr "nie można czytać katalogu \"%s\": %s\n" + +#: ../port/dirmod.c:563 +#, 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:590 ../port/dirmod.c:607 +#, 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:125 ../port/exec.c:239 ../port/exec.c:282 +#, c-format +msgid "could not identify current directory: %s" +msgstr "nie można zidentyfikować aktualnego katalogu: %s" + +#: ../port/exec.c:144 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "niepoprawny binarny \"%s\"" + +#: ../port/exec.c:193 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "nie można odczytać binarnego \"%s\"" + +#: ../port/exec.c:200 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "nie znaleziono \"%s\" do wykonania" + +#: ../port/exec.c:255 ../port/exec.c:291 +#, c-format +msgid "could not change directory to \"%s\"" +msgstr "nie można zmienić katalogu na \"%s\"" + +#: ../port/exec.c:270 +#, c-format +msgid "could not read symbolic link \"%s\"" +msgstr "nie można odczytać linku symbolicznego \"%s\"" + +#: ../port/exec.c:517 +#, c-format +msgid "child process exited with exit code %d" +msgstr "proces potomny zakończył działanie z kodem %d" + +#: ../port/exec.c:521 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "proces potomny został zatrzymany przez wyjątek 0x%X" + +#: ../port/exec.c:530 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "proces potomny został zatrzymany przez sygnał %s" + +#: ../port/exec.c:533 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "proces potomny został zakończony przez sygnał %d" + +#: ../port/exec.c:537 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "proces potomny zakończył działanie z nieznanym stanem %d" + +#: ../port/open.c:113 +msgid "sharing violation" +msgstr "naruszenie współdzielenia" + +#: ../port/open.c:113 +msgid "lock violation" +msgstr "naruszenie blokady" + +#: ../port/open.c:112 +#, c-format +msgid "could not open file \"%s\": %s" +msgstr "nie można otworzyć pliku \"%s\": %s" + +#: ../port/open.c:114 +msgid "Continuing to retry for 30 seconds." +msgstr "Kontynuacja ponownej próby za 30 sekund." + +#: ../port/open.c:115 +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." + +#: ../port/strerror.c:25 +#, c-format +msgid "unrecognized error %d" +msgstr "nierozpoznany błąd %d" + +#: ../port/win32error.c:188 +#, c-format +msgid "mapped win32 error code %lu to %d" +msgstr "zmapowano kod błędu win32 %lu do %d" + +#: ../port/win32error.c:199 +#, c-format +msgid "unrecognized win32 error code: %lu" +msgstr "nierozpoznany kod błędu win32: %lu" + +#~ msgid "restore_command = '%s'" +#~ msgstr "polecenie_odtworzenia = '%s'" + +#~ msgid "recovery_end_command = '%s'" +#~ msgstr "polecenie_końca_odzyskiwania = '%s'" + +#~ msgid "archive_cleanup_command = '%s'" +#~ msgstr "polecenie_czyszczenia_archiwum = '%s'" + +#~ msgid "pause_at_recovery_target = '%s'" +#~ msgstr "pauza_w_celu_odzyskiwania = '%s'" + +#~ msgid "recovery_target_timeline = %u" +#~ msgstr "linia_czasu_celu_odzyskiwania = %u" + +#~ msgid "recovery_target_timeline = latest" +#~ msgstr "linia_czasu_celu_odzyskiwania = najpóźniejsza" + +#~ msgid "recovery_target_xid = %u" +#~ msgstr "xid_celu_odzyskiwania = %u" + +#~ msgid "recovery_target_time = '%s'" +#~ msgstr "recovery_target_time = '%s'" + +#~ msgid "recovery_target_name = '%s'" +#~ msgstr "nazwa_celu_odzyskiwania = '%s'" + +#~ msgid "recovery_target_inclusive = %s" +#~ msgstr "zawieranie_celu_odzyskiwania = %s" + +#~ msgid "standby_mode = '%s'" +#~ msgstr "standby_mode = '%s'" + +#~ msgid "primary_conninfo = '%s'" +#~ msgstr "infopołącz_pierwotnego = '%s'" + +#~ msgid "trigger_file = '%s'" +#~ msgstr "plik_wyzwalacza = '%s'" + +#~ msgid "parameter \"lc_collate\" parameter must be specified" +#~ msgstr "parametr \"lc_collate\" musi być określony" + +#~ msgid "array must not contain null values" +#~ msgstr "tablica nie moze zawierac pustych wartosci" + +#~ msgid "" +#~ "The database cluster was initialized with LOCALE_NAME_BUFLEN %d, but the " +#~ "server was compiled with LOCALE_NAME_BUFLEN %d." +#~ msgstr "" +#~ "Klaster bazy zostal zainicjalizowany z LOCALE_NAME_BUFLEN %d, ale serwer " +#~ "zostal skompilowany z LOCALE_NAME_BUFLEN %d." + +#~ msgid "parser stack overflow" +#~ msgstr "przepelnienie stosu parsera" + +#~ msgid "there are objects dependent on %s" +#~ msgstr "istnieja obiekty zalezne od %s" + +#~ msgid "\"%s\" is a system catalog" +#~ msgstr "\"%s\" jest katalogiem systemowym" + +#~ msgid "could not remove database directory \"%s\"" +#~ msgstr "nie mozna usunac katalogu bazy \"%s\"" + +#~ msgid "transaction is read-only" +#~ msgstr "transakcja jest transakcja tylko do odczytu" + +#~ msgid "function \"%s\" is already in schema \"%s\"" +#~ msgstr "funkcja \"%s\" jest juz w schemacie \"%s\"" + +#~ msgid "multiple DELETE events specified" +#~ msgstr "wystapilo wielokrotnie zdarzenie DELETE" + +#~ msgid "cannot change number of columns in view" +#~ msgstr "nie mozna zmieniac liczby kolumn w widoku" + +#~ msgid "missing field in file \"%s\" at end of line %d" +#~ msgstr "brakujace pole w pliku \"%s\" na koncu linii %d" + +#~ msgid "SELECT FOR UPDATE/SHARE is not supported for inheritance queries" +#~ msgstr "" +#~ "SELECT FOR UPDATE/SHARE nie jest wspierane w zapytaniach dziedziczacych" + +#~ msgid "SELECT FOR UPDATE/SHARE is not allowed in subqueries" +#~ msgstr "SELECT FOR UPDATE/SHARE nie jest dopuszczalne w podzapytaniach" + +#~ msgid "SELECT FOR UPDATE/SHARE cannot be applied to NEW or OLD" +#~ msgstr "SELECT FOR UPDATE/SHARE nie moze byc zastosowane do NEW lub OLD" + +#~ msgid "missing FROM-clause entry in subquery for table \"%s\"" +#~ msgstr "brakujaca klauzula FROM w podzapytaniu dla tabeli \"%s\"" + +#~ msgid "adding missing FROM-clause entry in subquery for table \"%s\"" +#~ msgstr "" +#~ "dodawanie brakujacej pozycji w klauzuli FROM w podzapytaniu dla tabeli " +#~ "\"%s\"" + +#~ msgid "adding missing FROM-clause entry for table \"%s\"" +#~ msgstr "dodawanie brakujacej pozycji w klauzuli FROM dla tabeli \"%s\"" + +#~ msgid "not unique \"S\"" +#~ msgstr "nie unikalne \"S\"" + +#~ msgid "invalid AM/PM string" +#~ msgstr "nieprawidlowy lancuch tekstowy AM/PM" + +#~ msgid "\"TZ\"/\"tz\" not supported" +#~ msgstr "\"TZ\"/\"tz\" niewspierany" + +#~ msgid "January" +#~ msgstr "Styczen" + +#~ msgid "February" +#~ msgstr "Luty" + +#~ msgid "March" +#~ msgstr "Marzec" + +#~ msgid "April" +#~ msgstr "Kwiecien" + +#~ msgid "May" +#~ msgstr "Maj" + +#~ msgid "June" +#~ msgstr "Czerwiec" + +#~ msgid "July" +#~ msgstr "Lipiec" + +#~ msgid "August" +#~ msgstr "Sierpien" + +#~ msgid "September" +#~ msgstr "Wrzesien" + +#~ msgid "October" +#~ msgstr "Październik" + +#~ msgid "November" +#~ msgstr "Listopad" + +#~ msgid "December" +#~ msgstr "Grudzien" + +#~ msgid "Jan" +#~ msgstr "Sty" + +#~ msgid "Feb" +#~ msgstr "Lut" + +#~ msgid "Mar" +#~ msgstr "Mar" + +#~ msgid "Apr" +#~ msgstr "Kwi" + +#~ msgid "S:May" +#~ msgstr "S:Maj" + +#~ msgid "Jun" +#~ msgstr "Cze" + +#~ msgid "Jul" +#~ msgstr "Lip" + +#~ msgid "Aug" +#~ msgstr "Lip" + +#~ msgid "Sep" +#~ msgstr "Wrz" + +#~ msgid "Oct" +#~ msgstr "Paź" + +#~ msgid "Nov" +#~ msgstr "Lis" + +#~ msgid "Dec" +#~ msgstr "Gru" + +#~ msgid "Sunday" +#~ msgstr "Niedziela" + +#~ msgid "Monday" +#~ msgstr "Poniedzialek" + +#~ msgid "Tuesday" +#~ msgstr "Wtorek" + +#~ msgid "Wednesday" +#~ msgstr "Środa" + +#~ msgid "Thursday" +#~ msgstr "Czwartek" + +#~ msgid "Friday" +#~ msgstr "Piatek" + +#~ msgid "Saturday" +#~ msgstr "Sobota" + +#~ msgid "Sun" +#~ msgstr "Nie" + +#~ msgid "Mon" +#~ msgstr "Pon" + +#~ msgid "Tue" +#~ msgstr "Wto" + +#~ msgid "Wed" +#~ msgstr "Śro" + +#~ msgid "Thu" +#~ msgstr "Czw" + +#~ msgid "Fri" +#~ msgstr "Pia" + +#~ msgid "Sat" +#~ msgstr "Sob" + +#~ msgid "AM/PM hour must be between 1 and 12" +#~ msgstr "godziny AM/PM musza byc pomiedzy 1 i 12" + +#~ msgid "cannot calculate week number without year information" +#~ msgstr "nie mozna wyznaczyc numeru tygodnia bez informacji o roku" + +#~ msgid "Use the @@@ operator instead." +#~ msgstr "Uzyj operatora @@@ w zamian." + +#~ msgid "Valid values are ON, OFF, and SAFE_ENCODING." +#~ msgstr "Prawidlowymi wartosciami sa ON, OFF i SAFE_ENCODING." + +#~ msgid "" +#~ "Valid values are LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, " +#~ "LOCAL7." +#~ msgstr "" +#~ "Prawidlowymi wartosciami sa LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, " +#~ "LOCAL5, LOCAL6, LOCAL7." + +#~ msgid "Valid values are BASE64 and HEX." +#~ msgstr "Prawidlowymi wartosciami sa BASE64 i HEX." + +#~ msgid "Table contains duplicated values." +#~ msgstr "Tabela zawiera powielone wartosci." diff --git a/src/backend/po/pt_BR.po b/src/backend/po/pt_BR.po index 5fac3e25b0..21629e3c12 100644 --- a/src/backend/po/pt_BR.po +++ b/src/backend/po/pt_BR.po @@ -1,11 +1,13 @@ -# "postgres" translation to Brazilian Portuguese Language. -# Euler Taveira de Oliveira , 2003-2010. +# 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. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-09-16 11:46-0300\n" +"POT-Creation-Date: 2014-03-02 14:55-0300\n" "PO-Revision-Date: 2010-05-11 08:53-0300\n" "Last-Translator: Euler Taveira de Oliveira \n" "Language-Team: Brazilian Portuguese \n" @@ -15,56 +17,27 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n>1);\n" -#: executor/execCurrent.c:66 utils/adt/xml.c:2044 utils/adt/xml.c:2208 -#: commands/portalcmds.c:168 commands/portalcmds.c:222 -#, c-format -msgid "cursor \"%s\" does not exist" -msgstr "cursor \"%s\" não existe" - -#: executor/execCurrent.c:75 -#, c-format -msgid "cursor \"%s\" is not a SELECT query" -msgstr "cursor \"%s\" não é uma consulta SELECT" - -#: executor/execCurrent.c:81 -#, c-format -msgid "cursor \"%s\" is held from a previous transaction" -msgstr "cursor \"%s\" está aberto de uma transação anterior" +#: executor/nodeWindowAgg.c:1238 +msgid "frame starting offset must not be null" +msgstr "deslocamento inicial de quadro não deve ser nulo" -#: executor/execCurrent.c:113 -#, c-format -msgid "cursor \"%s\" has multiple FOR UPDATE/SHARE references to table \"%s\"" -msgstr "" -"cursor \"%s\" têm múltiplas referências FOR UPDATE/SHARE para tabela \"%s\"" +#: executor/nodeWindowAgg.c:1251 +msgid "frame starting offset must not be negative" +msgstr "deslocamento inicial de quadro não deve ser negativo" -#: executor/execCurrent.c:122 -#, c-format -msgid "" -"cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\"" -msgstr "" -"cursor \"%s\" não tem uma referência FOR UPDATE/SHARE para tabela \"%s\"" +#: executor/nodeWindowAgg.c:1264 +msgid "frame ending offset must not be null" +msgstr "deslocamento final de quadro não deve ser nulo" -#: executor/execCurrent.c:132 executor/execCurrent.c:178 -#, c-format -msgid "cursor \"%s\" is not positioned on a row" -msgstr "cursor \"%s\" não está posicionado em um registro" +#: executor/nodeWindowAgg.c:1277 +msgid "frame ending offset must not be negative" +msgstr "deslocamento final de quadro não deve ser negativo" -#: executor/execCurrent.c:165 +#: executor/nodeWindowAgg.c:1851 executor/nodeAgg.c:1730 #, c-format -msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\"" +msgid "aggregate %u needs to have compatible input type and transition type" msgstr "" -"cursor \"%s\" não é simplesmente uma busca atualizável da tabela \"%s\"" - -#: executor/execCurrent.c:230 executor/execQual.c:1024 -#, 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:242 executor/execQual.c:1035 -#, c-format -msgid "no value found for parameter %d" -msgstr "nenhum valor encontrado para parâmetro %d" +"agregação %u precisa ter tipo de entrada e tipo transitório compatíveis" #: executor/spi.c:210 msgid "transaction left non-empty SPI stack" @@ -88,149 +61,269 @@ msgstr "não pode abrir plano de múltiplas consultas como cursor" msgid "cannot open %s query as cursor" msgstr "não pode abrir consulta %s como cursor" -#: executor/spi.c:1233 parser/analyze.c:1969 +#: executor/spi.c:1233 parser/analyze.c:2213 msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE não é suportado" -#: executor/spi.c:1234 parser/analyze.c:1970 +#: executor/spi.c:1234 parser/analyze.c:2214 msgid "Scrollable cursors must be READ ONLY." msgstr "Cursores roláveis devem ser READ ONLY." #. translator: %s is a SQL statement name -#: executor/spi.c:1256 executor/spi.c:1846 executor/functions.c:161 +#: executor/spi.c:1256 executor/spi.c:1891 executor/functions.c:302 #, 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" -#: executor/spi.c:2142 +#: executor/spi.c:2157 #, c-format msgid "SQL statement \"%s\"" msgstr "comando SQL \"%s\"" -#: executor/nodeAgg.c:1717 executor/nodeWindowAgg.c:1842 +#: executor/nodeModifyTable.c:82 executor/nodeModifyTable.c:92 +#: executor/nodeModifyTable.c:109 executor/nodeModifyTable.c:117 +#: executor/execQual.c:837 executor/execQual.c:854 executor/execQual.c:1014 +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/nodeModifyTable.c:83 +msgid "Query has too many columns." +msgstr "Consulta tem muitas colunas." + +#: executor/nodeModifyTable.c:93 executor/execQual.c:855 #, c-format -msgid "aggregate %u needs to have compatible input type and transition type" +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/nodeModifyTable.c:110 +#, c-format +msgid "Query provides a value for a dropped column at ordinal position %d." msgstr "" -"agregação %u precisa ter tipo de entrada e tipo transitório compatíveis" +"Consulta fornece um valor para uma coluna removida na posição ordinal %d." + +#: executor/nodeModifyTable.c:118 +msgid "Query has too few columns." +msgstr "Consulta tem poucas colunas." + +#: executor/nodeModifyTable.c:366 executor/nodeModifyTable.c:588 +#: executor/execMain.c:1867 executor/nodeLockRows.c:137 +#: commands/trigger.c:2605 +msgid "could not serialize access due to concurrent update" +msgstr "não pôde serializar acesso devido a uma atualização concorrente" + +#: executor/execMain.c:999 +#, c-format +msgid "cannot change sequence \"%s\"" +msgstr "não pode mudar sequência \"%s\"" + +#: executor/execMain.c:1005 +#, c-format +msgid "cannot change TOAST relation \"%s\"" +msgstr "não pode mudar relação TOAST \"%s\"" + +#: executor/execMain.c:1015 +#, c-format +msgid "cannot insert into view \"%s\"" +msgstr "não pode inserir na visão \"%s\"" + +#: executor/execMain.c:1017 +msgid "" +"You need an unconditional ON INSERT DO INSTEAD rule or an INSTEAD OF INSERT " +"trigger." +msgstr "" +"Você precisa de uma regra incondicional ON INSERT DO INSTEAD ou um gatilho " +"INSTEAD OF INSERT." + +#: executor/execMain.c:1023 +#, c-format +msgid "cannot update view \"%s\"" +msgstr "não pode atualizar visão \"%s\"" + +#: executor/execMain.c:1025 +msgid "" +"You need an unconditional ON UPDATE DO INSTEAD rule or an INSTEAD OF UPDATE " +"trigger." +msgstr "" +"Você precisa de uma regra incondicional ON UPDATE DO INSTEAD ou um gatilho " +"INSTEAD OF UPDATE." + +#: executor/execMain.c:1031 +#, c-format +msgid "cannot delete from view \"%s\"" +msgstr "não pode excluir da visão \"%s\"" + +#: executor/execMain.c:1033 +msgid "" +"You need an unconditional ON DELETE DO INSTEAD rule or an INSTEAD OF DELETE " +"trigger." +msgstr "" +"Você precisa de uma regra incondicional ON DELETE DO INSTEAD ou um gatilho " +"INSTEAD OF DELETE." + +#: executor/execMain.c:1043 +#, c-format +msgid "cannot change foreign table \"%s\"" +msgstr "não pode mudar tabela externa \"%s\"" + +#: executor/execMain.c:1049 +#, c-format +msgid "cannot change relation \"%s\"" +msgstr "não pode mudar relação \"%s\"" + +#: executor/execMain.c:1073 +#, c-format +msgid "cannot lock rows in sequence \"%s\"" +msgstr "não pode bloquear registros na sequência \"%s\"" + +#: executor/execMain.c:1080 +#, c-format +msgid "cannot lock rows in TOAST relation \"%s\"" +msgstr "não pode bloquear registros na relação TOAST \"%s\"" + +#: executor/execMain.c:1087 +#, c-format +msgid "cannot lock rows in view \"%s\"" +msgstr "não pode bloquear registros na visão \"%s\"" + +#: executor/execMain.c:1094 +#, c-format +msgid "cannot lock rows in foreign table \"%s\"" +msgstr "não pode bloquear registros na tabela externa \"%s\"" + +#: executor/execMain.c:1100 +#, c-format +msgid "cannot lock rows in relation \"%s\"" +msgstr "não pôde bloquear registros na relação \"%s\"" + +#: executor/execMain.c:1571 +#, 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:1583 +#, 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/execMain.c:2411 commands/tablecmds.c:432 +msgid "ON COMMIT can only be used on temporary tables" +msgstr "ON COMMIT só pode ser utilizado em tabelas temporárias" + +#: executor/execMain.c:2429 commands/tablecmds.c:454 +msgid "cannot create temporary table within security-restricted operation" +msgstr "" +"não pode criar tabela temporária em operação com restrição de segurança" + +#: executor/execMain.c:2462 commands/tablecmds.c:486 commands/tablecmds.c:7971 +#: commands/indexcmds.c:268 +msgid "only shared relations can be placed in pg_global tablespace" +msgstr "" +"somente relações compartilhadas podem ser armazenadas na tablespace pg_global" -#: executor/execUtils.c:1296 +#: executor/execUtils.c:1308 #, c-format msgid "could not create exclusion constraint \"%s\"" msgstr "não pôde criar restrição de exclusão \"%s\"" -#: executor/execUtils.c:1298 +#: executor/execUtils.c:1310 #, c-format msgid "Key %s conflicts with key %s." msgstr "Chave %s conflita com chave %s." -#: executor/execUtils.c:1303 +#: executor/execUtils.c:1315 #, 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:1305 +#: executor/execUtils.c:1317 #, c-format msgid "Key %s conflicts with existing key %s." msgstr "Chave %s conflita com chave existente %s." -#: executor/execUtils.c:1319 access/nbtree/nbtinsert.c:448 -#, fuzzy, c-format -msgid "failed to re-find tuple within index \"%s\"" -msgstr "falhou ao reencontrar tupla no índice \"%s\"" - -#: executor/execUtils.c:1321 access/nbtree/nbtinsert.c:450 -#, fuzzy -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 de índice." - -#: executor/nodeWindowAgg.c:1233 -#, fuzzy -msgid "frame starting offset must not be null" -msgstr "deslocamento inicial de quadro não deve ser nulo" - -#: executor/nodeWindowAgg.c:1246 -#, fuzzy -msgid "frame starting offset must not be negative" -msgstr "deslocamento inicial de quadro não deve ser negativo" +#: executor/nodeLimit.c:253 +msgid "OFFSET must not be negative" +msgstr "OFFSET não deve ser negativo" -#: executor/nodeWindowAgg.c:1259 -#, fuzzy -msgid "frame ending offset must not be null" -msgstr "deslocamento final de quadro não deve ser nulo" +#: executor/nodeLimit.c:280 +msgid "LIMIT must not be negative" +msgstr "LIMIT não deve ser negativo" -#: executor/nodeWindowAgg.c:1272 -#, fuzzy -msgid "frame ending offset must not be negative" -msgstr "deslocamento final de quadro não deve ser negativo" +#: executor/nodeMergejoin.c:1604 +msgid "RIGHT JOIN is only supported with merge-joinable join conditions" +msgstr "" +"RIGHT JOIN só é suportado com condições de junção que podem ser utilizadas " +"com junção por mesclagem" -#: executor/nodeLockRows.c:136 executor/nodeModifyTable.c:334 -#: executor/nodeModifyTable.c:522 executor/execMain.c:1544 -#: commands/trigger.c:2366 -msgid "could not serialize access due to concurrent update" -msgstr "não pôde serializar acesso devido a uma atualização concorrente" +#: executor/nodeMergejoin.c:1624 +msgid "FULL JOIN is only supported with merge-joinable join conditions" +msgstr "" +"FULL JOIN só é suportado com condições de junção que podem ser utilizadas " +"com junção por mesclagem" -#: executor/execQual.c:296 executor/execQual.c:324 executor/execQual.c:2988 -#: utils/adt/array_userfuncs.c:428 utils/adt/arrayfuncs.c:204 -#: utils/adt/arrayfuncs.c:483 utils/adt/arrayfuncs.c:1218 -#: utils/adt/arrayfuncs.c:2886 utils/adt/arrayfuncs.c:4566 +#: executor/execQual.c:303 executor/execQual.c:331 executor/execQual.c:3101 +#: 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:4940 #, 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:309 executor/execQual.c:337 +#: executor/execQual.c:316 executor/execQual.c:344 msgid "array subscript in assignment must not be null" msgstr "índice da matriz em atribuição não deve ser nulo" -#: executor/execQual.c:633 executor/execQual.c:3906 +#: executor/execQual.c:637 executor/execQual.c:4019 #, c-format msgid "attribute %d has wrong type" msgstr "atributo %d tem tipo incorreto" -#: executor/execQual.c:634 executor/execQual.c:3907 +#: executor/execQual.c:638 executor/execQual.c:4020 #, c-format msgid "Table has type %s, but query expects %s." msgstr "Tabela tem tipo %s, mas consulta espera %s." -#: executor/execQual.c:698 executor/execQual.c:717 executor/execQual.c:916 -#: 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 "" -"tipo de registro da tabela e tipo de registro especificado na consulta não " -"correspondem" - -#: executor/execQual.c:699 +#: executor/execQual.c:838 #, 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:718 executor/nodeModifyTable.c:93 +#: executor/execQual.c:1015 executor/execQual.c:1612 #, 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." +msgid "Physical storage mismatch on dropped attribute at ordinal position %d." +msgstr "" +"Incompatibilidade do armazenamento físico no atributo removido na posição " +"ordinal %d." -#: executor/execQual.c:917 executor/execQual.c:1505 +#: executor/execQual.c:1126 executor/execCurrent.c:230 #, c-format -msgid "Physical storage mismatch on dropped attribute at ordinal position %d." +msgid "" +"type of parameter %d (%s) does not match that when preparing the plan (%s)" msgstr "" -"Armazenamento físico não combina com atributo removido na posição ordinal %d." +"tipo de parâmetro %d (%s) não corresponde aquele ao preparar o plano (%s)" + +#: executor/execQual.c:1138 executor/execCurrent.c:242 +#, c-format +msgid "no value found for parameter %d" +msgstr "nenhum valor encontrado para parâmetro %d" -#: executor/execQual.c:1189 parser/parse_func.c:95 parser/parse_func.c:327 -#: parser/parse_func.c:643 +#: executor/execQual.c:1291 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] "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:1373 +#: executor/execQual.c:1480 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:1423 +#: executor/execQual.c:1530 msgid "" "function returning setof record called in context that cannot accept type " "record" @@ -238,68 +331,68 @@ msgstr "" "função que retorna setof record foi chamada em um contexto que não pode " "aceitar tipo record" -#: executor/execQual.c:1478 executor/execQual.c:1494 executor/execQual.c:1504 +#: executor/execQual.c:1585 executor/execQual.c:1601 executor/execQual.c:1611 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:1479 +#: executor/execQual.c:1586 #, 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:1495 +#: executor/execQual.c:1602 #, 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:1615 executor/execQual.c:1640 executor/execQual.c:2001 -#: executor/execQual.c:5100 executor/functions.c:652 foreign/foreign.c:271 -#: utils/fmgr/funcapi.c:60 utils/mmgr/portalmem.c:937 commands/prepare.c:747 +#: executor/execQual.c:1704 executor/execQual.c:1729 executor/execQual.c:2089 +#: executor/execQual.c:5242 executor/functions.c:785 commands/extension.c:1711 +#: commands/extension.c:1820 commands/extension.c:2013 commands/prepare.c:751 +#: utils/mmgr/portalmem.c:985 utils/fmgr/funcapi.c:60 +#: replication/walsender.c:1421 foreign/foreign.c:350 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" -#: executor/execQual.c:1748 executor/execQual.c:2171 +#: executor/execQual.c:1836 executor/execQual.c:2260 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:1768 executor/execQual.c:2178 +#: executor/execQual.c:1856 executor/execQual.c:2267 #, c-format msgid "unrecognized table-function returnMode: %d" msgstr "modo de retorno (returnMode) da função tabular desconhecido: %d" -#: executor/execQual.c:2088 +#: executor/execQual.c:2177 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:2145 +#: executor/execQual.c:2234 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 de registro" +msgstr "registros retornados pela função não são todos do mesmo tipo registro" -#: executor/execQual.c:2338 +#: executor/execQual.c:2449 msgid "IS DISTINCT FROM does not support set arguments" msgstr "IS DISTINCT FROM não suporta conjunto de argumentos" -#: executor/execQual.c:2413 +#: executor/execQual.c:2526 msgid "op ANY/ALL (array) does not support set arguments" msgstr "op ANY/ALL (array) não suporta conjunto de argumentos" -#: executor/execQual.c:2735 commands/analyze.c:1493 -#, fuzzy +#: executor/execQual.c:2848 commands/analyze.c:1499 msgid "could not convert row type" -msgstr "não pôde converter tipo row" +msgstr "não pôde converter tipo registro" -#: executor/execQual.c:2966 +#: executor/execQual.c:3079 msgid "cannot merge incompatible arrays" msgstr "não pode mesclar matrizes incompatíveis" -#: executor/execQual.c:2967 +#: executor/execQual.c:3080 #, c-format msgid "" "Array with element type %s cannot be included in ARRAY construct with " @@ -308,153 +401,105 @@ 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:3008 executor/execQual.c:3035 -#: utils/adt/arrayfuncs.c:518 +#: executor/execQual.c:3121 executor/execQual.c:3148 +#: utils/adt/arrayfuncs.c:542 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:3550 +#: executor/execQual.c:3663 msgid "NULLIF does not support set arguments" msgstr "NULLIF não suporta conjunto de argumentos" -#: executor/execQual.c:3780 utils/adt/domains.c:128 +#: executor/execQual.c:3893 utils/adt/domains.c:128 #, c-format msgid "domain %s does not allow null values" msgstr "domínio %s não permite valores nulos" -#: executor/execQual.c:3809 utils/adt/domains.c:164 +#: executor/execQual.c:3922 utils/adt/domains.c:164 #, 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:4277 parser/parse_agg.c:160 -#: optimizer/util/clauses.c:572 +#: executor/execQual.c:4415 optimizer/util/clauses.c:573 +#: parser/parse_agg.c:164 msgid "aggregate function calls cannot be nested" msgstr "chamadas de função de agregação não podem ser aninhadas" -#: executor/execQual.c:4315 parser/parse_agg.c:207 -#: optimizer/util/clauses.c:646 +#: executor/execQual.c:4453 optimizer/util/clauses.c:647 +#: parser/parse_agg.c:211 msgid "window function calls cannot be nested" msgstr "chamadas de função deslizante não podem ser aninhadas" -#: executor/execQual.c:4515 +#: executor/execQual.c:4665 msgid "target type is not an array" msgstr "tipo alvo não é uma matriz" -#: executor/execQual.c:4628 +#: executor/execQual.c:4778 #, 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:4759 utils/adt/rowtypes.c:913 -#: utils/adt/arrayfuncs.c:3306 +#: executor/execQual.c:4913 utils/adt/rowtypes.c:950 +#: utils/adt/arrayfuncs.c:3378 #, 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/nodeModifyTable.c:83 -msgid "Query has too many columns." -msgstr "Consulta tem muitas colunas." - -#: executor/nodeModifyTable.c:110 +#: executor/execCurrent.c:66 commands/portalcmds.c:168 +#: commands/portalcmds.c:222 utils/adt/xml.c:2074 utils/adt/xml.c:2238 #, c-format -msgid "Query provides a value for a dropped column at ordinal position %d." -msgstr "" -"Consulta fornece um valor para uma coluna removida na posição ordinal %d." - -#: executor/nodeModifyTable.c:118 -msgid "Query has too few columns." -msgstr "Consulta tem poucas colunas." +msgid "cursor \"%s\" does not exist" +msgstr "cursor \"%s\" não existe" -#: executor/nodeHashjoin.c:721 executor/nodeHashjoin.c:755 +#: executor/execCurrent.c:75 #, c-format -msgid "could not rewind hash-join temporary file: %m" -msgstr "não pôde voltar ao início do arquivo temporário de junção hash: %m" +msgid "cursor \"%s\" is not a SELECT query" +msgstr "cursor \"%s\" não é uma consulta SELECT" -#: executor/nodeHashjoin.c:789 executor/nodeHashjoin.c:795 +#: executor/execCurrent.c:81 #, c-format -msgid "could not write to hash-join temporary file: %m" -msgstr "não pôde escrever em arquivo temporário de junção hash: %m" +msgid "cursor \"%s\" is held from a previous transaction" +msgstr "cursor \"%s\" está aberto de uma transação anterior" -#: executor/nodeHashjoin.c:829 executor/nodeHashjoin.c:839 +#: executor/execCurrent.c:113 #, c-format -msgid "could not read from hash-join temporary file: %m" -msgstr "não pôde ler do arquivo temporário de junção hash: %m" - -#: 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" +msgid "cursor \"%s\" has multiple FOR UPDATE/SHARE references to table \"%s\"" msgstr "" -"mais de um registro foi retornado por uma subconsulta utilizada como uma " -"expressão" - -#: executor/nodeLimit.c:251 -msgid "OFFSET must not be negative" -msgstr "OFFSET não deve ser negativo" - -#: executor/nodeLimit.c:278 -msgid "LIMIT must not be negative" -msgstr "LIMIT não deve ser negativo" - -#: executor/execMain.c:876 -#, c-format -msgid "cannot change sequence \"%s\"" -msgstr "não pode mudar sequência \"%s\"" - -#: executor/execMain.c:882 -#, c-format -msgid "cannot change TOAST relation \"%s\"" -msgstr "não pode mudar relação TOAST \"%s\"" - -#: executor/execMain.c:888 -#, c-format -msgid "cannot change view \"%s\"" -msgstr "não pode mudar visão \"%s\"" +"cursor \"%s\" têm múltiplas referências FOR UPDATE/SHARE para tabela \"%s\"" -#: executor/execMain.c:894 +#: executor/execCurrent.c:122 #, c-format -msgid "cannot change relation \"%s\"" -msgstr "não pode mudar relação \"%s\"" +msgid "" +"cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\"" +msgstr "" +"cursor \"%s\" não tem uma referência FOR UPDATE/SHARE para tabela \"%s\"" -#: executor/execMain.c:1319 +#: executor/execCurrent.c:132 executor/execCurrent.c:178 #, 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" +msgid "cursor \"%s\" is not positioned on a row" +msgstr "cursor \"%s\" não está posicionado em um registro" -#: executor/execMain.c:1331 +#: executor/execCurrent.c:165 #, 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/execMain.c:2091 commands/tablecmds.c:390 -msgid "ON COMMIT can only be used on temporary tables" -msgstr "ON COMMIT só pode ser utilizado em tabelas temporárias" - -#: executor/execMain.c:2101 commands/tablecmds.c:400 -msgid "cannot create temporary table within security-restricted operation" +msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\"" msgstr "" -"não pode criar tabela temporária em operação com restrição de segurança" +"cursor \"%s\" não é simplesmente uma busca atualizável da tabela \"%s\"" -#: executor/execMain.c:2125 utils/adt/dbsize.c:248 utils/adt/acl.c:4134 -#: commands/dbcommands.c:436 commands/dbcommands.c:1037 -#: commands/indexcmds.c:225 commands/tablecmds.c:430 commands/tablecmds.c:6787 -#: commands/comment.c:737 commands/tablespace.c:410 commands/tablespace.c:808 -#: commands/tablespace.c:875 commands/tablespace.c:980 -#: commands/tablespace.c:1036 commands/tablespace.c:1160 catalog/aclchk.c:702 +#: executor/functions.c:195 #, c-format -msgid "tablespace \"%s\" does not exist" -msgstr "tablespace \"%s\" não existe" +msgid "could not determine actual type of argument declared %s" +msgstr "não pôde determinar tipo de argumento declarado %s" #. translator: %s is a SQL statement name -#: executor/functions.c:154 +#: executor/functions.c:295 #, c-format msgid "%s is not allowed in a SQL function" msgstr "%s não é permitido em uma função SQL" -#: executor/functions.c:259 +#: executor/functions.c:408 #, c-format msgid "" "could not determine actual result type for function declared to return type " @@ -463,15627 +508,17303 @@ msgstr "" "não pôde determinar tipo de resultado para função declarada que retorna tipo " "%s" -#: executor/functions.c:298 -#, c-format -msgid "could not determine actual type of argument declared %s" -msgstr "não pôde determinar tipo de argumento declarado %s" - -#: executor/functions.c:923 +#: executor/functions.c:1146 #, c-format msgid "SQL function \"%s\" statement %d" msgstr "função SQL \"%s\" comando %d" -#: executor/functions.c:936 catalog/pg_proc.c:861 +#: executor/functions.c:1162 catalog/pg_proc.c:916 #, c-format msgid "SQL function \"%s\"" msgstr "função SQL \"%s\"" -#: executor/functions.c:946 +#: executor/functions.c:1172 #, c-format msgid "SQL function \"%s\" during startup" msgstr "função SQL \"%s\" durante inicialização" -#: executor/functions.c:1091 executor/functions.c:1127 -#: executor/functions.c:1139 executor/functions.c:1245 -#: executor/functions.c:1277 executor/functions.c:1306 +#: 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 "tipo de retorno não corresponde com o que foi declarado %s na função" +msgstr "" +"incompatibilidade do tipo de retorno na função declarada para retornar %s" -#: executor/functions.c:1093 +#: executor/functions.c:1334 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:1129 +#: executor/functions.c:1370 msgid "Final statement must return exactly one column." msgstr "Último comando deve retornar exatamente uma coluna." -#: executor/functions.c:1141 +#: executor/functions.c:1382 #, c-format msgid "Actual return type is %s." msgstr "Tipo atual de retorno é %s." -#: executor/functions.c:1247 +#: executor/functions.c:1495 msgid "Final statement returns too many columns." msgstr "Último comando retornou muitas colunas." -#: executor/functions.c:1279 +#: executor/functions.c:1528 #, 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:1308 +#: executor/functions.c:1558 msgid "Final statement returns too few columns." msgstr "Último comando retornou poucas colunas." -#: executor/functions.c:1356 +#: executor/functions.c:1607 #, 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/nodeMergejoin.c:1586 -msgid "RIGHT JOIN is only supported with merge-joinable join conditions" -msgstr "" -"RIGHT JOIN só é suportado com condições de junção que podem ser utilizadas " -"com junção por mesclagem" - -#: executor/nodeMergejoin.c:1606 optimizer/path/joinpath.c:1072 -msgid "FULL JOIN is only supported with merge-joinable join conditions" +#: executor/nodeSubplan.c:302 executor/nodeSubplan.c:341 +#: executor/nodeSubplan.c:968 +msgid "more than one row returned by a subquery used as an expression" msgstr "" -"FULL JOIN só é suportado com condições de junção que podem ser utilizadas " -"com junção por mesclagem" +"mais de um registro foi retornado por uma subconsulta utilizada como uma " +"expressão" -#: nodes/nodeFuncs.c:110 nodes/nodeFuncs.c:136 parser/parse_expr.c:1606 -#: parser/parse_oper.c:983 parser/parse_coerce.c:1568 -#: parser/parse_coerce.c:1585 parser/parse_coerce.c:1643 -#: parser/parse_func.c:371 +#: executor/nodeHashjoin.c:814 executor/nodeHashjoin.c:844 #, 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" +msgid "could not rewind hash-join temporary file: %m" +msgstr "não pôde voltar ao início do arquivo temporário de junção por hash: %m" -#: nodes/print.c:85 utils/adt/xml.c:1363 utils/adt/xml.c:1364 -#: utils/adt/xml.c:1370 utils/adt/xml.c:1441 utils/fmgr/dfmgr.c:381 -#: utils/misc/guc.c:4963 utils/misc/guc.c:5231 tcop/postgres.c:4238 -#: commands/trigger.c:832 commands/trigger.c:848 commands/trigger.c:860 -#: commands/tablecmds.c:658 commands/user.c:902 commands/user.c:903 -#: storage/lmgr/deadlock.c:942 storage/lmgr/deadlock.c:943 -#: catalog/dependency.c:912 catalog/dependency.c:913 catalog/dependency.c:919 -#: catalog/dependency.c:920 catalog/dependency.c:931 catalog/dependency.c:932 +#: executor/nodeHashjoin.c:879 executor/nodeHashjoin.c:885 #, c-format -msgid "%s" -msgstr "%s" +msgid "could not write to hash-join temporary file: %m" +msgstr "não pôde escrever em arquivo temporário de junção por hash: %m" -#: snowball/dict_snowball.c:183 +#: executor/nodeHashjoin.c:919 executor/nodeHashjoin.c:929 #, c-format -msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\"" -msgstr "" -"nenhum analisador Snowball disponível para idioma \"%s\" e codificação \"%s\"" +msgid "could not read from hash-join temporary file: %m" +msgstr "não pôde ler do arquivo temporário de junção por hash: %m" -#: snowball/dict_snowball.c:206 tsearch/dict_ispell.c:74 -#: tsearch/dict_simple.c:50 -msgid "multiple StopWords parameters" -msgstr "múltiplos parâmetros StopWords" +#: catalog/catalog.c:76 +msgid "invalid fork name" +msgstr "nome de fork inválido" -#: snowball/dict_snowball.c:215 -msgid "multiple Language parameters" -msgstr "múltiplos parâmetros Language" +#: catalog/catalog.c:77 +msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"." +msgstr "Nomes válidos são \"main\", \"fsm\" e \"vm\"." -#: snowball/dict_snowball.c:222 +#: catalog/objectaddress.c:199 catalog/pg_largeobject.c:116 +#: catalog/pg_largeobject.c:176 catalog/aclchk.c:647 catalog/aclchk.c:3676 +#: catalog/aclchk.c:4367 storage/large_object/inv_api.c:266 #, c-format -msgid "unrecognized Snowball parameter: \"%s\"" -msgstr "parâmetro desconhecido do Snowball: \"%s\"" +msgid "large object %u does not exist" +msgstr "objeto grande %u não existe" -#: snowball/dict_snowball.c:230 -msgid "missing Language parameter" -msgstr "faltando parâmetro Language" +#: catalog/objectaddress.c:286 +msgid "database name cannot be qualified" +msgstr "nome do banco de dados não pode ser qualificado" -#: lib/stringinfo.c:266 utils/adt/varlena.c:3246 utils/adt/varlena.c:3267 -#: utils/adt/regexp.c:205 utils/adt/formatting.c:1491 -#: utils/adt/formatting.c:1547 utils/adt/formatting.c:1604 -#: utils/fmgr/dfmgr.c:224 utils/init/miscinit.c:149 utils/init/miscinit.c:170 -#: utils/init/miscinit.c:180 utils/mb/mbutils.c:334 utils/mb/mbutils.c:606 -#: utils/mmgr/aset.c:408 utils/mmgr/aset.c:587 utils/mmgr/aset.c:770 -#: utils/mmgr/aset.c:976 utils/misc/guc.c:2915 utils/misc/guc.c:2928 -#: utils/misc/guc.c:2941 utils/hash/dynahash.c:363 utils/hash/dynahash.c:435 -#: utils/hash/dynahash.c:929 postmaster/postmaster.c:1968 -#: postmaster/postmaster.c:2001 postmaster/postmaster.c:3170 -#: postmaster/postmaster.c:3848 postmaster/postmaster.c:3929 -#: postmaster/postmaster.c:4517 commands/sequence.c:936 -#: storage/ipc/procarray.c:841 storage/ipc/procarray.c:1219 -#: storage/ipc/procarray.c:1226 storage/ipc/procarray.c:1457 -#: storage/ipc/procarray.c:1851 storage/file/fd.c:355 storage/file/fd.c:738 -#: storage/file/fd.c:856 storage/buffer/localbuf.c:348 -#: storage/buffer/buf_init.c:154 libpq/auth.c:1020 libpq/auth.c:1374 -#: libpq/auth.c:1442 libpq/auth.c:2016 -msgid "out of memory" -msgstr "sem memória" +#: catalog/objectaddress.c:289 commands/extension.c:1600 +#: commands/extension.c:2488 +msgid "extension name cannot be qualified" +msgstr "nome da extensão não pode ser qualificado" -#: lib/stringinfo.c:267 -#, 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." +#: catalog/objectaddress.c:292 +msgid "tablespace name cannot be qualified" +msgstr "nome da tablespace não pode ser qualificado" + +#: catalog/objectaddress.c:295 +msgid "role name cannot be qualified" +msgstr "nome da role não pode ser qualificado" + +#: catalog/objectaddress.c:298 commands/schemacmds.c:178 +msgid "schema name cannot be qualified" +msgstr "nome do esquema não pode ser qualificado" + +#: catalog/objectaddress.c:301 +msgid "language name cannot be qualified" +msgstr "nome da linguagem não pode ser qualificado" + +#: catalog/objectaddress.c:304 +msgid "foreign-data wrapper name cannot be qualified" +msgstr "nome do adaptador de dados externos não pode ser qualificado" -#: foreign/foreign.c:90 commands/foreigncmds.c:228 commands/foreigncmds.c:452 -#: commands/foreigncmds.c:553 +#: catalog/objectaddress.c:307 +msgid "server name cannot be qualified" +msgstr "nome do servidor não pode ser qualificado" + +#: catalog/objectaddress.c:315 catalog/dependency.c:937 +#: catalog/dependency.c:938 catalog/dependency.c:944 catalog/dependency.c:945 +#: catalog/dependency.c:956 catalog/dependency.c:957 commands/tablecmds.c:696 +#: commands/user.c:957 port/win32/security.c:51 utils/misc/guc.c:5399 +#: utils/misc/guc.c:5713 utils/misc/guc.c:8014 utils/misc/guc.c:8048 +#: utils/misc/guc.c:8082 utils/misc/guc.c:8116 utils/misc/guc.c:8151 +#: storage/lmgr/proc.c:1077 storage/lmgr/deadlock.c:951 #, c-format -msgid "foreign-data wrapper \"%s\" does not exist" -msgstr "adaptador de dados externos \"%s\" não existe" +msgid "%s" +msgstr "%s" -#: foreign/foreign.c:179 commands/foreigncmds.c:270 commands/foreigncmds.c:723 -#: commands/foreigncmds.c:813 commands/foreigncmds.c:1089 +#: catalog/objectaddress.c:391 access/index/indexam.c:161 +#: commands/tablecmds.c:222 commands/tablecmds.c:2415 +#: commands/indexcmds.c:1519 #, c-format -msgid "server \"%s\" does not exist" -msgstr "servidor \"%s\" não existe" +msgid "\"%s\" is not an index" +msgstr "\"%s\" não é um índice" -#: foreign/foreign.c:230 +#: catalog/objectaddress.c:398 catalog/aclchk.c:1692 commands/tablecmds.c:210 +#: commands/tablecmds.c:2178 commands/tablecmds.c:2423 +#: commands/tablecmds.c:9073 commands/sequence.c:1032 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 "user mapping not found for \"%s\"" -msgstr "mapeamento de usuários não foi encontrado para \"%s\"" +msgid "\"%s\" is not a sequence" +msgstr "\"%s\" não é uma sequência" -#: foreign/foreign.c:276 utils/mmgr/portalmem.c:941 commands/prepare.c:751 -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" +#: catalog/objectaddress.c:405 catalog/toasting.c:93 commands/tablecmds.c:204 +#: commands/tablecmds.c:1140 commands/tablecmds.c:2407 +#: commands/tablecmds.c:3759 commands/tablecmds.c:6736 commands/lockcmds.c:149 +#: commands/indexcmds.c:203 commands/indexcmds.c:1551 +#, c-format +msgid "\"%s\" is not a table" +msgstr "\"%s\" não é uma tabela" -#: foreign/foreign.c:408 +#: catalog/objectaddress.c:412 commands/tablecmds.c:216 +#: commands/tablecmds.c:2184 commands/tablecmds.c:2439 +#: commands/tablecmds.c:3774 commands/tablecmds.c:9081 commands/view.c:181 #, c-format -msgid "invalid option \"%s\"" -msgstr "opção \"%s\" é inválida" +msgid "\"%s\" is not a view" +msgstr "\"%s\" não é uma visão" -#: foreign/foreign.c:409 +#: catalog/objectaddress.c:419 commands/tablecmds.c:234 +#: commands/tablecmds.c:2190 commands/tablecmds.c:2447 +#: commands/tablecmds.c:3777 commands/tablecmds.c:9089 #, c-format -msgid "Valid options in this context are: %s" -msgstr "Opções válidas nesse contexto são: %s" +msgid "\"%s\" is not a foreign table" +msgstr "\"%s\" não é uma tabela externa" -#: utils/adt/tsrank.c:404 -msgid "array of weight must be one-dimensional" -msgstr "matriz de pesos devem ser de uma dimensão" +#: catalog/objectaddress.c:532 +msgid "column name must be qualified" +msgstr "nome de coluna deve ser qualificado" -#: utils/adt/tsrank.c:409 -msgid "array of weight is too short" -msgstr "matriz de pesos é muito pequena" +#: catalog/objectaddress.c:545 catalog/aclchk.c:1427 commands/trigger.c:607 +#: commands/tablecmds.c:4525 commands/tablecmds.c:4617 +#: commands/tablecmds.c:4664 commands/tablecmds.c:4760 +#: commands/tablecmds.c:4804 commands/tablecmds.c:4883 +#: commands/tablecmds.c:4967 commands/tablecmds.c:6624 +#: commands/tablecmds.c:6833 commands/copy.c:3787 commands/analyze.c:343 +#: commands/sequence.c:1443 utils/adt/acl.c:2772 utils/adt/ruleutils.c:1580 +#: parser/parse_target.c:898 parser/analyze.c:2046 +#: parser/parse_relation.c:2060 parser/parse_relation.c:2117 +#: parser/parse_type.c:117 +#, c-format +msgid "column \"%s\" of relation \"%s\" does not exist" +msgstr "coluna \"%s\" da relação \"%s\" não existe" -#: utils/adt/tsrank.c:414 -msgid "array of weight must not contain nulls" -msgstr "matriz de pesos não deve conter valores nulos" +#: catalog/objectaddress.c:828 catalog/pg_largeobject.c:200 +#: libpq/be-fsstubs.c:287 +#, c-format +msgid "must be owner of large object %u" +msgstr "deve ser dono do objeto grande %u" -#: utils/adt/tsrank.c:423 utils/adt/tsrank.c:749 -msgid "weight out of range" -msgstr "peso fora do intervalo" +#: catalog/objectaddress.c:843 commands/functioncmds.c:1525 +#: commands/functioncmds.c:1813 +#, c-format +msgid "must be owner of type %s or type %s" +msgstr "deve ser dono do tipo %s ou tipo %s" -#: utils/adt/date.c:66 utils/adt/timestamp.c:92 utils/adt/varchar.c:43 -#: utils/adt/varbit.c:49 -msgid "invalid type modifier" -msgstr "modificador de tipo é inválido" +#: catalog/objectaddress.c:874 catalog/objectaddress.c:890 +msgid "must be superuser" +msgstr "deve ser super-usuário" -#: utils/adt/date.c:71 -#, c-format -msgid "TIME(%d)%s precision must not be negative" -msgstr "precisão do TIME(%d)%s não deve ser negativa" +#: catalog/objectaddress.c:881 +msgid "must have CREATEROLE privilege" +msgstr "deve ter privilégio CREATEROLE" -#: utils/adt/date.c:77 +#: catalog/pg_type.c:241 #, c-format -msgid "TIME(%d)%s precision reduced to maximum allowed, %d" -msgstr "precisão do TIME(%d)%s reduzida ao máximo permitido, %d" +msgid "invalid type internal size %d" +msgstr "tamanho interno de tipo %d é inválido" -#: utils/adt/date.c:142 utils/adt/datetime.c:1181 utils/adt/datetime.c:1926 -msgid "date/time value \"current\" is no longer supported" -msgstr "valor de data/hora \"current\" não é mais suportado" +#: 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 "" +"alinhamento \"%c\" é inválido para tipo passado por valor de tamanho %d" -#: utils/adt/date.c:167 +#: catalog/pg_type.c:289 #, c-format -msgid "date out of range: \"%s\"" -msgstr "date fora do intervalo: \"%s\"" +msgid "internal size %d is invalid for passed-by-value type" +msgstr "tamanho interno %d é inválido para tipo passado por valor" -#: utils/adt/date.c:217 utils/adt/xml.c:1688 -msgid "date out of range" -msgstr "data fora do intervalo" +#: catalog/pg_type.c:298 catalog/pg_type.c:304 +#, c-format +msgid "alignment \"%c\" is invalid for variable-length type" +msgstr "alinhamento \"%c\" é inválido para tipo de tamanho variável" -#: utils/adt/date.c:359 -msgid "cannot subtract infinite dates" -msgstr "não pode subtrair valores date infinitos" +#: catalog/pg_type.c:312 +msgid "fixed-size types must have storage PLAIN" +msgstr "tipos de tamanho fixo devem ter armazenamento PLAIN" -#: utils/adt/date.c:416 utils/adt/date.c:453 -msgid "date out of range for timestamp" -msgstr "date fora do intervalo para timestamp" +#: catalog/pg_type.c:396 catalog/pg_type.c:699 catalog/heap.c:1029 +#: commands/typecmds.c:224 commands/typecmds.c:806 commands/typecmds.c:1145 +#: commands/typecmds.c:1622 +#, c-format +msgid "type \"%s\" already exists" +msgstr "tipo \"%s\" já existe" -#: utils/adt/date.c:880 utils/adt/date.c:927 utils/adt/date.c:1483 -#: utils/adt/date.c:1520 utils/adt/date.c:2394 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 utils/adt/formatting.c:2956 -#: utils/adt/formatting.c:2988 utils/adt/formatting.c:3056 -#: utils/adt/xml.c:1711 utils/adt/xml.c:1718 utils/adt/xml.c:1738 -#: utils/adt/xml.c:1745 utils/adt/nabstime.c:480 utils/adt/nabstime.c:523 -#: utils/adt/nabstime.c:553 utils/adt/nabstime.c:596 -msgid "timestamp out of range" -msgstr "timestamp fora do intervalo" +#: catalog/pg_type.c:764 +#, 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\"" -#: utils/adt/date.c:953 -msgid "cannot convert reserved abstime value to date" -msgstr "não pode converter valor de abstime reservado para date" +#: catalog/toasting.c:144 +msgid "shared tables cannot be toasted after initdb" +msgstr "tabelas compartilhadas não podem ser fatiadas após o initdb" -#: utils/adt/date.c:1107 utils/adt/date.c:1114 utils/adt/date.c:1882 -#: utils/adt/date.c:1889 -msgid "time out of range" -msgstr "time fora do intervalo" +#: catalog/aclchk.c:200 +msgid "grant options can only be granted to roles" +msgstr "opções de concessão só podem ser concedidas a roles" -#: utils/adt/date.c:1760 utils/adt/date.c:1777 +#: catalog/aclchk.c:316 #, c-format -msgid "\"time\" units \"%s\" not recognized" -msgstr "unidades de \"time\" \"%s\" são desconhecidas" +msgid "no privileges were granted for column \"%s\" of relation \"%s\"" +msgstr "nenhum privilégio foi concedido a coluna \"%s\" da relação \"%s\"" -#: utils/adt/date.c:1899 -msgid "time zone displacement out of range" -msgstr "deslocamento de zona horária fora do intervalo" +#: catalog/aclchk.c:321 +#, c-format +msgid "no privileges were granted for \"%s\"" +msgstr "nenhum privilégio foi concedido a \"%s\"" -#: utils/adt/date.c:2524 utils/adt/date.c:2541 +#: catalog/aclchk.c:329 #, c-format -msgid "\"time with time zone\" units \"%s\" not recognized" -msgstr "unidades de \"time with time zone\" \"%s\" são desconhecidas" +msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" +msgstr "" +"nem todos privilégios foram concedidos a coluna \"%s\" da relação \"%s\"" -#: utils/adt/date.c:2599 utils/adt/timestamp.c:4452 utils/adt/timestamp.c:4625 -#: utils/adt/datetime.c:925 utils/adt/datetime.c:1657 +#: catalog/aclchk.c:334 #, c-format -msgid "time zone \"%s\" not recognized" -msgstr "zona horária \"%s\" é desconhecida" +msgid "not all privileges were granted for \"%s\"" +msgstr "nem todos privilégios foram concedidos a \"%s\"" -#: utils/adt/date.c:2639 +#: catalog/aclchk.c:345 #, c-format -msgid "\"interval\" time zone \"%s\" not valid" -msgstr "zona horária de \"interval\" \"%s\" não é válida" +msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" +msgstr "nenhum privilégio pôde ser revogado da coluna \"%s\" da relação \"%s\"" -#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:4242 utils/adt/geo_ops.c:5159 -msgid "too many points requested" -msgstr "muitos pontos solicitados" +#: catalog/aclchk.c:350 +#, c-format +msgid "no privileges could be revoked for \"%s\"" +msgstr "nenhum privilégio pôde ser revogado de \"%s\"" -#: utils/adt/geo_ops.c:317 -msgid "could not format \"path\" value" -msgstr "não pôde formatar valor de \"path\"" +#: catalog/aclchk.c:358 +#, c-format +msgid "" +"not all privileges could be revoked for column \"%s\" of relation \"%s\"" +msgstr "" +"nem todos privilégios podem ser revogados da coluna \"%s\" da relação \"%s\"" -#: utils/adt/geo_ops.c:392 +#: catalog/aclchk.c:363 #, c-format -msgid "invalid input syntax for type box: \"%s\"" -msgstr "sintaxe de entrada é inválida para tipo box: \"%s\"" +msgid "not all privileges could be revoked for \"%s\"" +msgstr "nem todos privilégios podem ser revogados de \"%s\"" -#: utils/adt/geo_ops.c:956 +#: catalog/aclchk.c:442 catalog/aclchk.c:891 #, c-format -msgid "invalid input syntax for type line: \"%s\"" -msgstr "sintaxe de entrada é inválida para tipo line: \"%s\"" +msgid "invalid privilege type %s for relation" +msgstr "tipo de privilégio %s é inválido para relação" -#: 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 "tipo \"line\" não está implementado" +#: catalog/aclchk.c:446 catalog/aclchk.c:895 +#, c-format +msgid "invalid privilege type %s for sequence" +msgstr "tipo de privilégio %s é inválido para sequência" -#: utils/adt/geo_ops.c:1404 utils/adt/geo_ops.c:1427 +#: catalog/aclchk.c:450 #, c-format -msgid "invalid input syntax for type path: \"%s\"" -msgstr "sintaxe de entrada é inválida para tipo path: \"%s\"" +msgid "invalid privilege type %s for database" +msgstr "tipo de privilégio %s é inválido para banco de dados" -#: utils/adt/geo_ops.c:1466 -msgid "invalid number of points in external \"path\" value" -msgstr "número de pontos é inválido no valor de \"path\" externo" +#: catalog/aclchk.c:454 catalog/aclchk.c:899 +#, c-format +msgid "invalid privilege type %s for function" +msgstr "tipo de privilégio %s é inválido para função" -#: utils/adt/geo_ops.c:1807 +#: catalog/aclchk.c:458 #, c-format -msgid "invalid input syntax for type point: \"%s\"" -msgstr "sintaxe de entrada é inválida para tipo point: \"%s\"" +msgid "invalid privilege type %s for language" +msgstr "tipo de privilégio %s é inválido para linguagem" -#: utils/adt/geo_ops.c:2035 +#: catalog/aclchk.c:462 #, c-format -msgid "invalid input syntax for type lseg: \"%s\"" -msgstr "sintaxe de entrada é inválida para tipo lseg: \"%s\"" +msgid "invalid privilege type %s for large object" +msgstr "tipo de privilégio %s é inválido para objeto grande" -#: utils/adt/geo_ops.c:2639 -msgid "function \"dist_lb\" not implemented" -msgstr "função \"dist_lb\" não está implementada" +#: catalog/aclchk.c:466 +#, c-format +msgid "invalid privilege type %s for schema" +msgstr "tipo de privilégio %s é inválido para esquema" -#: utils/adt/geo_ops.c:3152 -msgid "function \"close_lb\" not implemented" -msgstr "função \"close_lb\" não está implementada" +#: catalog/aclchk.c:470 +#, c-format +msgid "invalid privilege type %s for tablespace" +msgstr "tipo de privilégio %s é inválido para tablespace" -#: utils/adt/geo_ops.c:3441 -msgid "cannot create bounding box for empty polygon" -msgstr "não pode criar um caixa circunscrita para um polígono vazio" +#: catalog/aclchk.c:474 +#, c-format +msgid "invalid privilege type %s for foreign-data wrapper" +msgstr "tipo de privilégio %s é inválido para adaptador de dados externos" -#: utils/adt/geo_ops.c:3465 utils/adt/geo_ops.c:3477 +#: catalog/aclchk.c:478 #, c-format -msgid "invalid input syntax for type polygon: \"%s\"" -msgstr "sintaxe de entrada é inválida para tipo polygon: \"%s\"" +msgid "invalid privilege type %s for foreign server" +msgstr "tipo de privilégio %s é inválido para servidor externo" -#: utils/adt/geo_ops.c:3517 -msgid "invalid number of points in external \"polygon\" value" -msgstr "número de pontos é inválido no valor de \"polygon\" externo" +#: catalog/aclchk.c:517 +msgid "column privileges are only valid for relations" +msgstr "privilégios de coluna só são válidos para relações" -#: utils/adt/geo_ops.c:4040 -msgid "function \"poly_distance\" not implemented" -msgstr "função \"poly_distance\" não está implementada" +#: catalog/aclchk.c:833 catalog/aclchk.c:841 commands/dbcommands.c:147 +#: commands/dbcommands.c:155 commands/dbcommands.c:163 +#: commands/dbcommands.c:171 commands/dbcommands.c:179 +#: commands/dbcommands.c:187 commands/dbcommands.c:195 +#: commands/dbcommands.c:1342 commands/dbcommands.c:1350 +#: commands/typecmds.c:282 commands/foreigncmds.c:468 +#: commands/foreigncmds.c:477 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/collationcmds.c:93 +#: 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:1142 commands/sequence.c:1150 +#: commands/sequence.c:1158 commands/sequence.c:1166 commands/sequence.c:1174 +#: commands/sequence.c:1182 commands/sequence.c:1190 commands/sequence.c:1198 +#: commands/functioncmds.c:488 commands/functioncmds.c:578 +#: commands/functioncmds.c:586 commands/functioncmds.c:594 +#: commands/functioncmds.c:1981 commands/functioncmds.c:1989 +#: commands/extension.c:1250 commands/extension.c:1258 +#: commands/extension.c:1266 commands/extension.c:2731 +msgid "conflicting or redundant options" +msgstr "opções conflitantes ou redundantes" -#: utils/adt/geo_ops.c:4121 utils/adt/timestamp.c:2876 utils/adt/float.c:764 -#: utils/adt/float.c:828 utils/adt/float.c:2470 utils/adt/float.c:2533 -#: utils/adt/cash.c:524 utils/adt/cash.c:575 utils/adt/cash.c:624 -#: utils/adt/cash.c:676 utils/adt/cash.c:726 utils/adt/int.c:728 -#: utils/adt/int.c:869 utils/adt/int.c:965 utils/adt/int.c:1053 -#: utils/adt/int.c:1079 utils/adt/int.c:1099 utils/adt/int8.c:597 -#: utils/adt/int8.c:644 utils/adt/int8.c:820 utils/adt/int8.c:916 -#: utils/adt/int8.c:1004 utils/adt/int8.c:1100 utils/adt/numeric.c:4298 -#: utils/adt/numeric.c:4581 -msgid "division by zero" -msgstr "divisão por zero" - -#: utils/adt/geo_ops.c:4352 -msgid "function \"path_center\" not implemented" -msgstr "função \"path_center\" não está implementada" - -#: utils/adt/geo_ops.c:4369 -msgid "open path cannot be converted to polygon" -msgstr "caminho aberto não pode ser convertido em polígono" +#: catalog/aclchk.c:932 +msgid "default privileges cannot be set for columns" +msgstr "privilégios padrão não podem ser definidos para colunas" -#: utils/adt/geo_ops.c:4536 utils/adt/geo_ops.c:4546 utils/adt/geo_ops.c:4561 -#: utils/adt/geo_ops.c:4567 +#: catalog/aclchk.c:1677 access/heap/heapam.c:1089 access/heap/heapam.c:1117 +#: access/heap/heapam.c:1147 #, 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:4589 utils/adt/geo_ops.c:4597 -msgid "could not format \"circle\" value" -msgstr "não pôde formatar valor de \"circle\"" +msgid "\"%s\" is an index" +msgstr "\"%s\" é um índice" -#: utils/adt/geo_ops.c:4624 -msgid "invalid radius in external \"circle\" value" -msgstr "raio é inválido no valor de \"circle\" externo" +#: catalog/aclchk.c:1684 access/heap/heapam.c:1094 access/heap/heapam.c:1122 +#: access/heap/heapam.c:1152 commands/tablecmds.c:2200 +#: commands/tablecmds.c:7447 commands/tablecmds.c:9123 +#, c-format +msgid "\"%s\" is a composite type" +msgstr "\"%s\" é um tipo composto" -#: utils/adt/geo_ops.c:5145 -msgid "cannot convert circle with radius zero to polygon" -msgstr "não pode converter círculo com raio zero para polígono" +#: catalog/aclchk.c:1730 +#, c-format +msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" +msgstr "sequência \"%s\" só suporta privilégios USAGE, SELECT e UPDATE" -#: utils/adt/geo_ops.c:5150 -msgid "must request at least 2 points" -msgstr "deve informar pelo menos 2 pontos" +#: catalog/aclchk.c:1747 +msgid "invalid privilege type USAGE for table" +msgstr "tipo de privilégio USAGE é inválido para tabela" -#: utils/adt/geo_ops.c:5194 utils/adt/geo_ops.c:5217 -msgid "cannot convert empty polygon to circle" -msgstr "não pode converter polígono vazio para círculo" +#: catalog/aclchk.c:1912 +#, c-format +msgid "invalid privilege type %s for column" +msgstr "tipo de privilégio %s é inválido para coluna" -#. translator: first %s is inet or cidr -#: utils/adt/network.c:107 utils/adt/datetime.c:3543 +#: catalog/aclchk.c:1925 #, c-format -msgid "invalid input syntax for type %s: \"%s\"" -msgstr "sintaxe de entrada é inválida para tipo %s: \"%s\"" +msgid "sequence \"%s\" only supports SELECT column privileges" +msgstr "sequência \"%s\" só suporta privilégios SELECT" -#: utils/adt/network.c:118 +#: catalog/aclchk.c:2509 #, c-format -msgid "invalid cidr value: \"%s\"" -msgstr "valor de cidr é inválido: \"%s\"" +msgid "language \"%s\" is not trusted" +msgstr "linguagem \"%s\" não é confiável" -#: utils/adt/network.c:119 utils/adt/network.c:249 -msgid "Value has bits set to right of mask." -msgstr "Valor tem bits definidos a direita da máscara." +#: catalog/aclchk.c:2511 +msgid "Only superusers can use untrusted languages." +msgstr "Somente super-usuários podem utilizar linguagens não-confiáveis." -#: utils/adt/network.c:160 utils/adt/network.c:614 utils/adt/network.c:639 -#: utils/adt/network.c:664 +#: catalog/aclchk.c:3018 #, c-format -msgid "could not format inet value: %m" -msgstr "não pôde formatar valor de inet: %m" +msgid "unrecognized privilege type \"%s\"" +msgstr "tipo de privilégio \"%s\" desconhecido" -#. translator: %s is inet or cidr -#: utils/adt/network.c:217 +#: catalog/aclchk.c:3067 #, c-format -msgid "invalid address family in external \"%s\" value" -msgstr "família de endereços inválida no valor de \"%s\" externo" +msgid "permission denied for column %s" +msgstr "permissão negada para coluna %s" -#. translator: %s is inet or cidr -#: utils/adt/network.c:224 +#: catalog/aclchk.c:3069 #, c-format -msgid "invalid bits in external \"%s\" value" -msgstr "bits inválidos no valor de \"%s\" externo" +msgid "permission denied for relation %s" +msgstr "permissão negada para relação %s" -#. translator: %s is inet or cidr -#: utils/adt/network.c:233 +#: catalog/aclchk.c:3071 commands/sequence.c:537 commands/sequence.c:751 +#: commands/sequence.c:793 commands/sequence.c:830 commands/sequence.c:1495 #, c-format -msgid "invalid length in external \"%s\" value" -msgstr "tamanho inválido no valor de \"%s\" externo" +msgid "permission denied for sequence %s" +msgstr "permissão negada para sequência %s" -#: utils/adt/network.c:248 -msgid "invalid external \"cidr\" value" -msgstr "valor de \"cidr\" externo é inválido" +#: catalog/aclchk.c:3073 +#, c-format +msgid "permission denied for database %s" +msgstr "permissão negada para banco de dados %s" -#: utils/adt/network.c:370 utils/adt/network.c:397 +#: catalog/aclchk.c:3075 #, c-format -msgid "invalid mask length: %d" -msgstr "tamanho de máscara é inválido: %d" +msgid "permission denied for function %s" +msgstr "permissão negada para função %s" -#: utils/adt/network.c:682 +#: catalog/aclchk.c:3077 #, c-format -msgid "could not format cidr value: %m" -msgstr "não pôde formatar valor de cidr: %m" +msgid "permission denied for operator %s" +msgstr "permissão negada para operador %s" -#: utils/adt/network.c:1255 -msgid "cannot AND inet values of different sizes" -msgstr "não pode executar E em valores inet de tamanhos diferentes" +#: catalog/aclchk.c:3079 +#, c-format +msgid "permission denied for type %s" +msgstr "permissão negada para tipo %s" -#: utils/adt/network.c:1287 -msgid "cannot OR inet values of different sizes" -msgstr "não pode executar OU em valores inet de tamanhos diferentes" +#: catalog/aclchk.c:3081 +#, c-format +msgid "permission denied for language %s" +msgstr "permissão negada para linguagem %s" -#: utils/adt/network.c:1348 utils/adt/network.c:1424 -msgid "result is out of range" -msgstr "resultado está fora do intervalo" +#: catalog/aclchk.c:3083 +#, c-format +msgid "permission denied for large object %s" +msgstr "permissão negada para objeto grande %s" -#: utils/adt/network.c:1389 -msgid "cannot subtract inet values of different sizes" -msgstr "não pode subtrair valores inet de tamanhos diferentes" +#: catalog/aclchk.c:3085 +#, c-format +msgid "permission denied for schema %s" +msgstr "permissão negada para esquema %s" -#: utils/adt/timestamp.c:97 +#: catalog/aclchk.c:3087 #, c-format -msgid "TIMESTAMP(%d)%s precision must not be negative" -msgstr "precisão do TIMESTAMP(%d)%s não deve ser negativa" +msgid "permission denied for operator class %s" +msgstr "permissão negada para classe de operadores %s" -#: utils/adt/timestamp.c:103 +#: catalog/aclchk.c:3089 #, 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" +msgid "permission denied for operator family %s" +msgstr "permissão negada para família de operadores %s" -#: utils/adt/timestamp.c:171 utils/adt/timestamp.c:435 +#: catalog/aclchk.c:3091 #, c-format -msgid "timestamp out of range: \"%s\"" -msgstr "timestamp fora do intervalo: \"%s\"" +msgid "permission denied for collation %s" +msgstr "permissão negada para ordenação %s" -#: utils/adt/timestamp.c:189 utils/adt/timestamp.c:453 -#: utils/adt/timestamp.c:664 +#: catalog/aclchk.c:3093 #, c-format -msgid "date/time value \"%s\" is no longer supported" -msgstr "valor de data/hora \"%s\" não é mais suportado" +msgid "permission denied for conversion %s" +msgstr "permissão negada para conversão %s" -#: utils/adt/timestamp.c:260 -msgid "timestamp cannot be NaN" -msgstr "timestamp não pode ser NaN" +#: catalog/aclchk.c:3095 +#, c-format +msgid "permission denied for tablespace %s" +msgstr "permissão negada para tablespace %s" -#: utils/adt/timestamp.c:370 +#: catalog/aclchk.c:3097 #, c-format -msgid "timestamp(%d) precision must be between %d and %d" -msgstr "precisão do timestamp(%d) deve ser entre %d e %d" +msgid "permission denied for text search dictionary %s" +msgstr "permissão negada para dicionário de busca textual %s" -#: 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 fora do intervalo" +#: catalog/aclchk.c:3099 +#, c-format +msgid "permission denied for text search configuration %s" +msgstr "permissão negada para configuração de busca textual %s" -#: utils/adt/timestamp.c:787 utils/adt/timestamp.c:820 -msgid "invalid INTERVAL type modifier" -msgstr "modificador do tipo INTERVAL é inválido" +#: catalog/aclchk.c:3101 +#, c-format +msgid "permission denied for foreign-data wrapper %s" +msgstr "permissão negada para adaptador de dados externos %s" -#: utils/adt/timestamp.c:803 +#: catalog/aclchk.c:3103 #, c-format -msgid "INTERVAL(%d) precision must not be negative" -msgstr "precisão de INTERVAL(%d) não deve ser negativa" +msgid "permission denied for foreign server %s" +msgstr "permissão negada para servidor externo %s" -#: utils/adt/timestamp.c:809 +#: catalog/aclchk.c:3105 #, c-format -msgid "INTERVAL(%d) precision reduced to maximum allowed, %d" -msgstr "precisão de INTERVAL(%d) reduzida ao máximo permitido, %d" +msgid "permission denied for extension %s" +msgstr "permissão negada para extensão %s" -#: utils/adt/timestamp.c:1101 +#: catalog/aclchk.c:3111 catalog/aclchk.c:3113 #, c-format -msgid "interval(%d) precision must be between %d and %d" -msgstr "precisão de interval(%d) deve ser entre %d e %d" +msgid "must be owner of relation %s" +msgstr "deve ser o dono da relação %s" -#: utils/adt/timestamp.c:2306 -msgid "cannot subtract infinite timestamps" -msgstr "não pode subtrair timestamps infinitos" +#: catalog/aclchk.c:3115 +#, c-format +msgid "must be owner of sequence %s" +msgstr "deve ser o dono da sequência %s" -#: utils/adt/timestamp.c:3365 utils/adt/timestamp.c:3961 -#: utils/adt/timestamp.c:4020 +#: catalog/aclchk.c:3117 #, c-format -msgid "timestamp units \"%s\" not supported" -msgstr "unidades do timestamp \"%s\" não são suportadas" +msgid "must be owner of database %s" +msgstr "deve ser o dono do banco de dados %s" -#: utils/adt/timestamp.c:3379 utils/adt/timestamp.c:4030 +#: catalog/aclchk.c:3119 #, c-format -msgid "timestamp units \"%s\" not recognized" -msgstr "unidades do timestamp \"%s\" são desconhecidas" +msgid "must be owner of function %s" +msgstr "deve ser o dono da função %s" -#: utils/adt/timestamp.c:3520 utils/adt/timestamp.c:4192 -#: utils/adt/timestamp.c:4233 +#: catalog/aclchk.c:3121 #, c-format -msgid "timestamp with time zone units \"%s\" not supported" -msgstr "unidades de timestamp with time zone \"%s\" não são suportadas" +msgid "must be owner of operator %s" +msgstr "deve ser o dono do operador %s" -#: utils/adt/timestamp.c:3537 utils/adt/timestamp.c:4242 +#: catalog/aclchk.c:3123 #, c-format -msgid "timestamp with time zone units \"%s\" not recognized" -msgstr "unidades de timestamp with time zone \"%s\" são desconhecidas" +msgid "must be owner of type %s" +msgstr "deve ser o dono do tipo %s" -#: utils/adt/timestamp.c:3617 utils/adt/timestamp.c:4348 +#: catalog/aclchk.c:3125 #, c-format -msgid "interval units \"%s\" not supported" -msgstr "unidades de interval \"%s\" não são suportadas" +msgid "must be owner of language %s" +msgstr "deve ser o dono da linguagem %s" -#: utils/adt/timestamp.c:3633 utils/adt/timestamp.c:4375 +#: catalog/aclchk.c:3127 #, c-format -msgid "interval units \"%s\" not recognized" -msgstr "unidades de interval \"%s\" são desconhecidas" +msgid "must be owner of large object %s" +msgstr "deve ser o dono do objeto grande %s" -#: utils/adt/timestamp.c:4445 utils/adt/timestamp.c:4618 +#: catalog/aclchk.c:3129 #, c-format -msgid "could not convert to time zone \"%s\"" -msgstr "não pôde converter para zona horária \"%s\"" +msgid "must be owner of schema %s" +msgstr "deve ser o dono do esquema %s" -#: utils/adt/timestamp.c:4477 utils/adt/timestamp.c:4651 +#: catalog/aclchk.c:3131 #, c-format -msgid "interval time zone \"%s\" must not specify month" -msgstr "zona horária de interval \"%s\" não deve especificar o mês" +msgid "must be owner of operator class %s" +msgstr "deve ser o dono da classe de operadores %s" -#: utils/adt/timestamp.c:4712 utils/adt/timestamp.c:4793 utils/adt/int.c:1323 -#: utils/adt/int8.c:1358 -msgid "step size cannot equal zero" -msgstr "tamanho do passo não pode ser zero" +#: catalog/aclchk.c:3133 +#, c-format +msgid "must be owner of operator family %s" +msgstr "deve ser o dono da família de operadores %s" -#: utils/adt/oracle_compat.c:181 utils/adt/oracle_compat.c:279 -#: utils/adt/oracle_compat.c:755 utils/adt/oracle_compat.c:1045 -#: utils/adt/genfile.c:124 -msgid "requested length too large" -msgstr "tamanho solicitado é muito grande" +#: catalog/aclchk.c:3135 +#, c-format +msgid "must be owner of collation %s" +msgstr "deve ser o dono da ordenação %s" -#: utils/adt/oracle_compat.c:892 -msgid "requested character too large" -msgstr "tamanho solicitado é muito grande" +#: catalog/aclchk.c:3137 +#, c-format +msgid "must be owner of conversion %s" +msgstr "deve ser o dono da conversão %s" -#: utils/adt/oracle_compat.c:938 utils/adt/oracle_compat.c:992 +#: catalog/aclchk.c:3139 #, c-format -msgid "requested character too large for encoding: %d" -msgstr "caracter solicitado é muito grande para codificação: %d" +msgid "must be owner of tablespace %s" +msgstr "deve ser o dono da tablespace %s" -#: utils/adt/oracle_compat.c:985 -msgid "null character not permitted" -msgstr "caracter nulo não é permitido" +#: catalog/aclchk.c:3141 +#, c-format +msgid "must be owner of text search dictionary %s" +msgstr "deve ser o dono do dicionário de busca textual %s" -#: utils/adt/uuid.c:128 +#: catalog/aclchk.c:3143 #, c-format -msgid "invalid input syntax for uuid: \"%s\"" -msgstr "sintaxe de entrada é inválida para uuid: \"%s\"" +msgid "must be owner of text search configuration %s" +msgstr "deve ser o dono da configuração de busca textual %s" -#: utils/adt/tid.c:70 utils/adt/tid.c:78 utils/adt/tid.c:86 +#: catalog/aclchk.c:3145 #, c-format -msgid "invalid input syntax for type tid: \"%s\"" -msgstr "sintaxe de entrada é inválida para tipo tid: \"%s\"" +msgid "must be owner of foreign-data wrapper %s" +msgstr "deve ser dono de adaptador de dados externos %s" -#: utils/adt/array_userfuncs.c:48 -msgid "could not determine input data types" -msgstr "não pôde determinar tipos de dado de entrada" - -#: utils/adt/array_userfuncs.c:82 -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/varlena.c:942 utils/adt/varlena.c:1915 utils/adt/float.c:1101 -#: utils/adt/float.c:1160 utils/adt/float.c:2711 utils/adt/float.c:2727 -#: utils/adt/varbit.c:1098 utils/adt/varbit.c:1483 utils/adt/arrayfuncs.c:1251 -#: utils/adt/int.c:622 utils/adt/int.c:651 utils/adt/int.c:672 -#: utils/adt/int.c:692 utils/adt/int.c:714 utils/adt/int.c:739 -#: utils/adt/int.c:753 utils/adt/int.c:768 utils/adt/int.c:903 -#: utils/adt/int.c:924 utils/adt/int.c:951 utils/adt/int.c:991 -#: utils/adt/int.c:1012 utils/adt/int.c:1039 utils/adt/int.c:1066 -#: utils/adt/int.c:1120 utils/adt/int8.c:1196 utils/adt/numeric.c:2062 -#: utils/adt/numeric.c:2071 -msgid "integer out of range" -msgstr "inteiro fora do intervalo" - -#: utils/adt/array_userfuncs.c:121 -msgid "argument must be empty or one-dimensional array" -msgstr "argumento deve ser vazio ou matriz de uma dimensão" - -#: 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 "não pode concatenar matrizes incompatíveis" - -#: utils/adt/array_userfuncs.c:225 +#: catalog/aclchk.c:3147 #, c-format -msgid "" -"Arrays with element types %s and %s are not compatible for concatenation." -msgstr "" -"Matrizes com tipos de elemento %s e %s não são compatíveis para concatenação." +msgid "must be owner of foreign server %s" +msgstr "deve ser o dono de servidor externo %s" -#: utils/adt/array_userfuncs.c:264 +#: catalog/aclchk.c:3149 #, c-format -msgid "Arrays of %d and %d dimensions are not compatible for concatenation." -msgstr "Matrizes de dimensões %d e %d não são compatíveis para concatenação." - -#: utils/adt/array_userfuncs.c:301 -msgid "" -"Arrays with differing element dimensions are not compatible for " -"concatenation." -msgstr "" -"Matrizes com dimensões de elementos diferentes não são compatíveis para " -"concatenação." +msgid "must be owner of extension %s" +msgstr "deve ser o dono da extensão %s" -#: utils/adt/array_userfuncs.c:330 utils/adt/array_userfuncs.c:358 -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." +#: catalog/aclchk.c:3191 +#, c-format +msgid "permission denied for column \"%s\" of relation \"%s\"" +msgstr "permissão negada para coluna \"%s\" da relação \"%s\"" -#: utils/adt/array_userfuncs.c:424 utils/adt/arrayfuncs.c:1214 -#: utils/adt/arrayfuncs.c:2882 utils/adt/arrayfuncs.c:4562 +#: catalog/aclchk.c:3218 #, c-format -msgid "invalid number of dimensions: %d" -msgstr "número de dimensões é inválido: %d" +msgid "role with OID %u does not exist" +msgstr "role com OID %u não existe" -#: utils/adt/array_userfuncs.c:484 -msgid "could not determine input data type" -msgstr "não pôde determinar tipo de dado de entrada" +#: catalog/aclchk.c:3311 catalog/aclchk.c:3319 +#, c-format +msgid "attribute %d of relation with OID %u does not exist" +msgstr "atributo %d da relação com OID %u não existe" -#: utils/adt/varchar.c:48 utils/adt/varbit.c:54 +#: catalog/aclchk.c:3392 catalog/aclchk.c:4218 #, c-format -msgid "length for type %s must be at least 1" -msgstr "tamanho para tipo %s deve ser pelo menos 1" +msgid "relation with OID %u does not exist" +msgstr "relação com OID %u não existe" -#: utils/adt/varchar.c:52 utils/adt/varbit.c:59 +#: catalog/aclchk.c:3492 catalog/aclchk.c:4609 utils/adt/dbsize.c:127 #, c-format -msgid "length for type %s cannot exceed %d" -msgstr "tamanho para tipo %s não pode exceder %d" +msgid "database with OID %u does not exist" +msgstr "banco de dados com OID %u não existe" -#: utils/adt/varchar.c:152 utils/adt/varchar.c:305 +#: catalog/aclchk.c:3546 catalog/aclchk.c:4296 tcop/fastpath.c:221 #, c-format -msgid "value too long for type character(%d)" -msgstr "valor é muito longo para tipo character(%d)" +msgid "function with OID %u does not exist" +msgstr "função com OID %u não existe" -#: utils/adt/varchar.c:473 utils/adt/varchar.c:594 +#: catalog/aclchk.c:3600 catalog/aclchk.c:4322 #, c-format -msgid "value too long for type character varying(%d)" -msgstr "valor é muito longo para tipo character varying(%d)" +msgid "language with OID %u does not exist" +msgstr "linguagem com OID %u não existe" -#: utils/adt/ri_triggers.c:373 utils/adt/ri_triggers.c:433 -#: utils/adt/ri_triggers.c:596 utils/adt/ri_triggers.c:836 -#: utils/adt/ri_triggers.c:1024 utils/adt/ri_triggers.c:1186 -#: utils/adt/ri_triggers.c:1374 utils/adt/ri_triggers.c:1545 -#: utils/adt/ri_triggers.c:1728 utils/adt/ri_triggers.c:1899 -#: utils/adt/ri_triggers.c:2115 utils/adt/ri_triggers.c:2297 -#: utils/adt/ri_triggers.c:2500 utils/adt/ri_triggers.c:2548 -#: utils/adt/ri_triggers.c:2593 utils/adt/ri_triggers.c:2721 gram.y:2610 -msgid "MATCH PARTIAL not yet implemented" -msgstr "MATCH PARTIAL ainda não foi implementado" +#: catalog/aclchk.c:3761 catalog/aclchk.c:4394 +#, c-format +msgid "schema with OID %u does not exist" +msgstr "esquema com OID %u não existe" -#: utils/adt/ri_triggers.c:407 utils/adt/ri_triggers.c:2803 -#: utils/adt/ri_triggers.c:3454 utils/adt/ri_triggers.c:3486 +#: catalog/aclchk.c:3815 catalog/aclchk.c:4421 #, 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\"" +msgid "tablespace with OID %u does not exist" +msgstr "tablespace com OID %u não existe" -#: utils/adt/ri_triggers.c:410 utils/adt/ri_triggers.c:2806 -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." +#: catalog/aclchk.c:3873 catalog/aclchk.c:4555 commands/foreigncmds.c:292 +#, c-format +msgid "foreign-data wrapper with OID %u does not exist" +msgstr "adaptador de dados externos com OID %u não existe" -#: utils/adt/ri_triggers.c:2999 commands/constraint.c:59 +#: catalog/aclchk.c:3934 catalog/aclchk.c:4582 commands/foreigncmds.c:391 #, c-format -msgid "function \"%s\" was not called by trigger manager" -msgstr "função \"%s\" não foi chamada pelo gerenciador de gatilhos" +msgid "foreign server with OID %u does not exist" +msgstr "servidor externo com OID %u não existe" -#: utils/adt/ri_triggers.c:3008 commands/constraint.c:66 +#: catalog/aclchk.c:4244 #, c-format -msgid "function \"%s\" must be fired AFTER ROW" -msgstr "função \"%s\" deve ser disparada no AFTER ROW" +msgid "type with OID %u does not exist" +msgstr "tipo com OID %u não existe" -#: utils/adt/ri_triggers.c:3016 +#: catalog/aclchk.c:4270 #, c-format -msgid "function \"%s\" must be fired for INSERT" -msgstr "função \"%s\" deve ser disparada pelo INSERT" +msgid "operator with OID %u does not exist" +msgstr "operador com OID %u não existe" -#: utils/adt/ri_triggers.c:3022 +#: catalog/aclchk.c:4447 #, c-format -msgid "function \"%s\" must be fired for UPDATE" -msgstr "função \"%s\" deve ser disparada pelo UPDATE" +msgid "operator class with OID %u does not exist" +msgstr "classe de operadores com OID %u não existe" -#: utils/adt/ri_triggers.c:3029 commands/constraint.c:80 +#: catalog/aclchk.c:4474 #, c-format -msgid "function \"%s\" must be fired for INSERT or UPDATE" -msgstr "função \"%s\" deve ser disparada pelo INSERT ou UPDATE" +msgid "operator family with OID %u does not exist" +msgstr "família de operadores com OID %u não existe" -#: utils/adt/ri_triggers.c:3036 +#: catalog/aclchk.c:4501 #, c-format -msgid "function \"%s\" must be fired for DELETE" -msgstr "função \"%s\" deve ser disparada pelo DELETE" +msgid "text search dictionary with OID %u does not exist" +msgstr "dicionário de busca textual com OID %u não existe" -#: utils/adt/ri_triggers.c:3065 +#: catalog/aclchk.c:4528 #, 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\"" +msgid "text search configuration with OID %u does not exist" +msgstr "configuração de busca textual com OID %u não existe" -#: utils/adt/ri_triggers.c:3067 -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." +#: catalog/aclchk.c:4635 +#, c-format +msgid "collation with OID %u does not exist" +msgstr "ordenação com OID %u não existe" -#: utils/adt/ri_triggers.c:3421 +#: catalog/aclchk.c:4661 #, 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" +msgid "conversion with OID %u does not exist" +msgstr "conversão com OID %u não existe" -#: utils/adt/ri_triggers.c:3425 -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." +#: catalog/aclchk.c:4702 +#, c-format +msgid "extension with OID %u does not exist" +msgstr "extensão com OID %u não existe" -#: utils/adt/ri_triggers.c:3456 +#: catalog/pg_enum.c:113 catalog/pg_enum.c:199 #, c-format -msgid "No rows were found in \"%s\"." -msgstr "Nenhum registro foi encontrado em \"%s\"." +msgid "invalid enum label \"%s\"" +msgstr "rótulo do enum \"%s\" é inválido" -#: utils/adt/ri_triggers.c:3488 +#: catalog/pg_enum.c:114 catalog/pg_enum.c:200 #, c-format -msgid "Key (%s)=(%s) is not present in table \"%s\"." -msgstr "Chave (%s)=(%s) não está presente na tabela \"%s\"." +msgid "Labels must be %d characters or less." +msgstr "Rótulos devem conter %d caracteres ou menos." -#: utils/adt/ri_triggers.c:3494 +#: catalog/pg_enum.c:264 #, 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\"" +msgid "\"%s\" is not an existing enum label" +msgstr "\"%s\" não é um rótulo do enum existente" + +#: catalog/pg_enum.c:325 +msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade" +msgstr "ALTER TYPE ADD BEFORE/AFTER é incompatível com atualização binária" -#: utils/adt/ri_triggers.c:3497 +#: catalog/pg_conversion.c:67 #, c-format -msgid "Key (%s)=(%s) is still referenced from table \"%s\"." -msgstr "Chave (%s)=(%s) ainda é referenciada pela tabela \"%s\"." +msgid "conversion \"%s\" already exists" +msgstr "conversão \"%s\" já existe" -#: utils/adt/oid.c:43 utils/adt/oid.c:57 utils/adt/oid.c:63 utils/adt/oid.c:84 +#: catalog/pg_conversion.c:80 #, c-format -msgid "invalid input syntax for type oid: \"%s\"" -msgstr "sintaxe de entrada é inválida para tipo oid: \"%s\"" +msgid "default conversion for %s to %s already exists" +msgstr "conversão padrão de %s para %s já existe" -#: utils/adt/oid.c:69 utils/adt/oid.c:107 +#: catalog/index.c:205 parser/parse_utilcmd.c:1352 parser/parse_utilcmd.c:1438 #, c-format -msgid "value \"%s\" is out of range for type oid" -msgstr "valor \"%s\" está fora do intervalo para tipo oid" +msgid "multiple primary keys for table \"%s\" are not allowed" +msgstr "chaves primárias múltiplas na tabela \"%s\" não são permitidas" -#: utils/adt/oid.c:212 utils/adt/oid.c:292 utils/adt/int.c:242 -msgid "oidvector has too many elements" -msgstr "oidvector tem muitos elementos" +#: catalog/index.c:223 +msgid "primary keys cannot be expressions" +msgstr "chaves primárias não podem ser expressões" -#: utils/adt/oid.c:286 -msgid "invalid oidvector data" -msgstr "dado oidvector inválido" +#: catalog/index.c:733 catalog/index.c:1131 +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" -#: utils/adt/tsquery_cleanup.c:285 -msgid "" -"text-search query contains only stop words or doesn't contain lexemes, " -"ignored" +#: catalog/index.c:743 +msgid "concurrent index creation on system catalog tables is not supported" msgstr "" -"consulta de busca textual contém somente palavras ignoradas ou não contém " -"lexemas, ignorada" +"criação de índices concorrentes nas tabelas de catálogo do sistema não são " +"suportados" -#: utils/adt/domains.c:80 +#: catalog/index.c:761 +msgid "shared indexes cannot be created after initdb" +msgstr "índices compartilhados não podem ser criados depois do initdb" + +#: catalog/index.c:772 catalog/heap.c:1013 commands/tablecmds.c:2249 #, c-format -msgid "type %s is not a domain" -msgstr "tipo %s não é um domínio" +msgid "relation \"%s\" already exists" +msgstr "relação \"%s\" já existe" -#: utils/adt/varlena.c:238 utils/adt/varlena.c:279 utils/adt/encode.c:441 -#: utils/adt/encode.c:506 -msgid "invalid input syntax for type bytea" -msgstr "sintaxe de entrada é inválida para tipo bytea" +#: catalog/index.c:1740 +#, c-format +msgid "building index \"%s\" on table \"%s\"" +msgstr "construindo índice \"%s\" na tabela \"%s\"" -#: utils/adt/varlena.c:729 utils/adt/varlena.c:793 utils/adt/varlena.c:937 -#: utils/adt/varlena.c:1843 utils/adt/varlena.c:1910 utils/adt/varbit.c:991 -#: utils/adt/varbit.c:1093 -msgid "negative substring length not allowed" -msgstr "tamanho negativo de índice não é permitido" +#: catalog/index.c:2881 +msgid "cannot reindex temporary tables of other sessions" +msgstr "não pode reindexar tabelas temporárias de outras sessões" -#: utils/adt/varlena.c:1333 utils/adt/varlena.c:1346 +#: catalog/pg_constraint.c:645 catalog/heap.c:2296 commands/tablecmds.c:5289 #, c-format -msgid "could not convert string to UTF-16: error %lu" -msgstr "não pôde converter cadeia de caracteres para UTF-16: erro %lu" +msgid "constraint \"%s\" for relation \"%s\" already exists" +msgstr "restrição \"%s\" para relação \"%s\" já existe" -#: utils/adt/varlena.c:1356 +#: catalog/pg_constraint.c:654 commands/typecmds.c:2321 #, c-format -msgid "could not compare Unicode strings: %m" -msgstr "não pôde comparar cadeias de caracteres Unicode: %m" +msgid "constraint \"%s\" for domain \"%s\" already exists" +msgstr "restrição \"%s\" para domínio \"%s\" já existe" -#: utils/adt/varlena.c:1988 utils/adt/varlena.c:2019 utils/adt/varlena.c:2055 -#: utils/adt/varlena.c:2098 +#: catalog/pg_constraint.c:802 #, c-format -msgid "index %d out of valid range, 0..%d" -msgstr "índice %d fora do intervalo válido, 0..%d" - -#: utils/adt/varlena.c:2110 utils/adt/varbit.c:1719 -msgid "new bit must be 0 or 1" -msgstr "novo bit deve ser 0 ou 1" +msgid "table \"%s\" has multiple constraints named \"%s\"" +msgstr "tabela \"%s\" tem múltiplas restrições com nome \"%s\"" -#: utils/adt/varlena.c:2198 utils/adt/varlena.c:2203 utils/adt/regproc.c:1320 -#: utils/adt/regproc.c:1325 -msgid "invalid name syntax" -msgstr "sintaxe de nome inválida" +#: catalog/pg_constraint.c:814 +#, c-format +msgid "constraint \"%s\" for table \"%s\" does not exist" +msgstr "restrição \"%s\" na tabela \"%s\" não existe" -#: utils/adt/varlena.c:2797 utils/adt/regexp.c:269 +#: catalog/pg_operator.c:221 catalog/pg_operator.c:363 #, c-format -msgid "regular expression failed: %s" -msgstr "expressão regular falhou: %s" +msgid "\"%s\" is not a valid operator name" +msgstr "\"%s\" não é um nome de operador válido" -#: utils/adt/varlena.c:2890 -msgid "field position must be greater than zero" -msgstr "posição do campo deve ser maior que zero" +#: catalog/pg_operator.c:372 +msgid "only binary operators can have commutators" +msgstr "somente operadores binários podem ter comutadores" -#: utils/adt/genfile.c:58 -msgid "reference to parent directory (\"..\") not allowed" -msgstr "referência ao diretório ancestral (\"..\") não é permitida" +#: catalog/pg_operator.c:376 +msgid "only binary operators can have join selectivity" +msgstr "somente operadores binários podem ter seletividade de junção" -#: utils/adt/genfile.c:72 -msgid "absolute path not allowed" -msgstr "caminho absoluto não é permitido" +#: catalog/pg_operator.c:380 +msgid "only binary operators can merge join" +msgstr "" +"somente operadores binários podem ser utilizados em junção por mesclagem" -#: utils/adt/genfile.c:99 -msgid "must be superuser to read files" -msgstr "deve ser super-usuário para ler arquivos" +#: catalog/pg_operator.c:384 +msgid "only binary operators can hash" +msgstr "somente operadores binários podem ser utilizados no hash" -#: utils/adt/genfile.c:106 commands/copy.c:1774 -#, c-format -msgid "could not open file \"%s\" for reading: %m" -msgstr "não pôde abrir arquivo \"%s\" para leitura: %m" +#: catalog/pg_operator.c:395 +msgid "only boolean operators can have negators" +msgstr "somente operadores booleanos podem ter negadores" -#: utils/adt/genfile.c:113 -#, c-format -msgid "could not seek in file \"%s\": %m" -msgstr "não pôde buscar em arquivo \"%s\": %m" +#: catalog/pg_operator.c:399 +msgid "only boolean operators can have restriction selectivity" +msgstr "somente operadores booleanos podem ter seletividade de restrição" -#: utils/adt/genfile.c:118 -msgid "requested length cannot be negative" -msgstr "tamanho solicitado não pode ser negativo" +#: catalog/pg_operator.c:403 +msgid "only boolean operators can have join selectivity" +msgstr "somente operadores booleanos podem ter seletividade de junção" -#: utils/adt/genfile.c:133 access/transam/xlog.c:2469 -#: access/transam/xlog.c:4317 access/transam/xlog.c:8546 -#: access/transam/xlog.c:8620 access/transam/xlog.c:9003 -#: access/transam/xlog.c:9028 storage/file/copydir.c:186 -#, c-format -msgid "could not read file \"%s\": %m" -msgstr "não pôde ler arquivo \"%s\": %m" +#: catalog/pg_operator.c:407 +msgid "only boolean operators can merge join" +msgstr "" +"somente operadores booleanos podem ser utilizados em junção por mesclagem" -#: utils/adt/genfile.c:163 -msgid "must be superuser to get file information" -msgstr "deve ser super-usuário para obter informação sobre arquivo" +#: catalog/pg_operator.c:411 +msgid "only boolean operators can hash" +msgstr "somente operadores booleanos podem ser utilizados no hash" -#: utils/adt/genfile.c:170 utils/adt/dbsize.c:65 utils/adt/dbsize.c:217 -#: utils/adt/dbsize.c:288 access/transam/xlog.c:2858 -#: access/transam/xlog.c:3023 access/transam/xlog.c:8426 -#: storage/file/copydir.c:86 storage/file/copydir.c:125 +#: catalog/pg_operator.c:423 #, c-format -msgid "could not stat file \"%s\": %m" -msgstr "não pôde executar stat no arquivo \"%s\": %m" +msgid "operator %s already exists" +msgstr "operador %s já existe" -#: utils/adt/genfile.c:227 -msgid "must be superuser to get directory listings" -msgstr "deve ser super-usuário para obter listagem de diretórios" +#: catalog/pg_operator.c:616 +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" -#: utils/adt/genfile.c:244 utils/adt/misc.c:213 utils/misc/tzparser.c:345 -#: postmaster/postmaster.c:1142 commands/tablespace.c:679 -#: storage/file/fd.c:1572 storage/file/copydir.c:67 storage/file/copydir.c:106 +#: catalog/dependency.c:593 #, c-format -msgid "could not open directory \"%s\": %m" -msgstr "não pôde abrir diretório \"%s\": %m" - -#: utils/adt/pseudotypes.c:94 -msgid "cannot accept a value of type any" -msgstr "não pode aceitar um valor do tipo any" - -#: utils/adt/pseudotypes.c:107 -msgid "cannot display a value of type any" -msgstr "não pode mostrar um valor do tipo any" - -#: utils/adt/pseudotypes.c:121 utils/adt/pseudotypes.c:149 -msgid "cannot accept a value of type anyarray" -msgstr "não pode aceitar um valor do tipo anyarray" +msgid "cannot drop %s because %s requires it" +msgstr "não pode remover %s porque %s o requer" -#: utils/adt/pseudotypes.c:174 -msgid "cannot accept a value of type anyenum" -msgstr "não pode aceitar um valor do tipo anyenum" +#: catalog/dependency.c:596 +#, c-format +msgid "You can drop %s instead." +msgstr "Você pode remover %s ao invés dele." -#: utils/adt/pseudotypes.c:224 -msgid "cannot accept a value of type trigger" -msgstr "não pode aceitar um valor do tipo trigger" +#: catalog/dependency.c:757 catalog/pg_shdepend.c:566 +#, 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" -#: utils/adt/pseudotypes.c:237 -msgid "cannot display a value of type trigger" -msgstr "não pode mostrar um valor do tipo trigger" +#: catalog/dependency.c:873 +#, c-format +msgid "drop auto-cascades to %s" +msgstr "removendo automaticamente %s" -#: utils/adt/pseudotypes.c:251 -msgid "cannot accept a value of type language_handler" -msgstr "não pode aceitar um valor do tipo language_handler" +#: catalog/dependency.c:885 catalog/dependency.c:894 +#, c-format +msgid "%s depends on %s" +msgstr "%s depende de %s" -#: utils/adt/pseudotypes.c:264 -msgid "cannot display a value of type language_handler" -msgstr "não pode mostrar um valor do tipo language_handler" +#: catalog/dependency.c:906 catalog/dependency.c:915 +#, c-format +msgid "drop cascades to %s" +msgstr "removendo em cascata %s" -#: utils/adt/pseudotypes.c:278 -msgid "cannot accept a value of type internal" -msgstr "não pode aceitar um valor do tipo interval" +#: catalog/dependency.c:923 catalog/pg_shdepend.c:677 +#, 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" +"e %d outro objeto (veja lista no log do servidor)" +msgstr[1] "" +"\n" +"e %d outros objetos (veja lista no log do servidor)" -#: utils/adt/pseudotypes.c:291 -msgid "cannot display a value of type internal" -msgstr "não pode mostrar um valor do tipo interval" +#: catalog/dependency.c:935 +#, c-format +msgid "cannot drop %s because other objects depend on it" +msgstr "não pode remover %s porque outros objetos dependem dele" -#: utils/adt/pseudotypes.c:305 -msgid "cannot accept a value of type opaque" -msgstr "não pode aceitar um valor do tipo opaque" +#: catalog/dependency.c:939 catalog/dependency.c:946 +msgid "Use DROP ... CASCADE to drop the dependent objects too." +msgstr "Utilize DROP ... CASCADE para remover os objetos dependentes também." -#: utils/adt/pseudotypes.c:318 -msgid "cannot display a value of type opaque" -msgstr "não pode mostrar um valor do tipo opaque" +#: catalog/dependency.c:943 +msgid "cannot drop desired object(s) because other objects depend on them" +msgstr "" +"não pode remover objeto(s) desejado(s) porque outros objetos dependem dele" -#: utils/adt/pseudotypes.c:332 -msgid "cannot accept a value of type anyelement" -msgstr "não pode aceitar um valor do tipo anyelement" +#. translator: %d always has a value larger than 1 +#: catalog/dependency.c:952 +#, c-format +msgid "drop cascades to %d other object" +msgid_plural "drop cascades to %d other objects" +msgstr[0] "removendo em cascata %d outro objeto" +msgstr[1] "removendo em cascata outros %d objetos" -#: utils/adt/pseudotypes.c:345 -msgid "cannot display a value of type anyelement" -msgstr "não pode mostrar um valor do tipo anyelement" +#: catalog/dependency.c:2223 +#, c-format +msgid " column %s" +msgstr "coluna %s" -#: utils/adt/pseudotypes.c:358 -msgid "cannot accept a value of type anynonarray" -msgstr "não pode aceitar um valor do tipo anynonarray" +#: catalog/dependency.c:2229 +#, c-format +msgid "function %s" +msgstr "função %s" -#: utils/adt/pseudotypes.c:371 -msgid "cannot display a value of type anynonarray" -msgstr "não pode mostrar um valor do tipo anynonarray" +#: catalog/dependency.c:2234 +#, c-format +msgid "type %s" +msgstr "tipo %s" -#: utils/adt/pseudotypes.c:384 -msgid "cannot accept a value of a shell type" -msgstr "não pode aceitar um valor do tipo shell" +#: catalog/dependency.c:2264 +#, c-format +msgid "cast from %s to %s" +msgstr "converte de %s para %s" -#: utils/adt/pseudotypes.c:397 -msgid "cannot display a value of a shell type" -msgstr "não pode mostrar um valor do tipo shell" +#: catalog/dependency.c:2284 +#, c-format +msgid "collation %s" +msgstr "ordenação %s" -#: utils/adt/numutils.c:53 utils/adt/numutils.c:63 utils/adt/numutils.c:105 -#: utils/adt/int8.c:97 utils/adt/int8.c:132 +#: catalog/dependency.c:2308 #, c-format -msgid "invalid input syntax for integer: \"%s\"" -msgstr "sintaxe de entrada é inválida para integer: \"%s\"" +msgid "constraint %s on %s" +msgstr "restrição %s em %s" -#: utils/adt/numutils.c:77 +#: catalog/dependency.c:2314 #, c-format -msgid "value \"%s\" is out of range for type integer" -msgstr "valor \"%s\" está fora do intervalo para tipo integer" +msgid "constraint %s" +msgstr "restrição %s" -#: utils/adt/numutils.c:83 +#: catalog/dependency.c:2331 #, c-format -msgid "value \"%s\" is out of range for type smallint" -msgstr "valor \"%s\" está fora do intervalo para tipo smallint" +msgid "conversion %s" +msgstr "conversão %s" -#: utils/adt/numutils.c:89 +#: catalog/dependency.c:2368 #, c-format -msgid "value \"%s\" is out of range for 8-bit integer" -msgstr "valor \"%s\" está fora do intervalo para inteiro de 8 bits" +msgid "default for %s" +msgstr "valor padrão para %s" -#: utils/adt/tsvector.c:215 +#: catalog/dependency.c:2385 #, c-format -msgid "word is too long (%ld bytes, max %ld bytes)" -msgstr "palavra é muito longa (%ld bytes, máximo de %ld bytes)" +msgid "language %s" +msgstr "linguagem %s" -#: utils/adt/tsvector.c:222 +#: catalog/dependency.c:2391 #, 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)" +msgid "large object %u" +msgstr "objeto grande %u" -#: utils/adt/tsvector.c:272 utils/adt/tsvector_op.c:514 tsearch/to_tsany.c:165 +#: catalog/dependency.c:2396 #, 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)" +msgid "operator %s" +msgstr "operador %s" -#: utils/adt/float.c:54 -msgid "value out of range: overflow" -msgstr "valor fora do intervalo: estouro (overflow)" +#: catalog/dependency.c:2428 +#, c-format +msgid "operator class %s for access method %s" +msgstr "classe de operadores %s para método de acesso %s" -#: utils/adt/float.c:59 -msgid "value out of range: underflow" -msgstr "valor fora do intervalo: estouro (underflow)" +#. 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:2478 +#, c-format +msgid "operator %d (%s, %s) of %s: %s" +msgstr "operador %d (%s, %s) de %s: %s" -#: utils/adt/float.c:206 utils/adt/float.c:247 utils/adt/float.c:298 +#. 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:2528 #, c-format -msgid "invalid input syntax for type real: \"%s\"" -msgstr "sintaxe de entrada é inválida para tipo real: \"%s\"" +msgid "function %d (%s, %s) of %s: %s" +msgstr "função %d (%s, %s) de %s: %s" -#: utils/adt/float.c:242 +#: catalog/dependency.c:2568 #, c-format -msgid "\"%s\" is out of range for type real" -msgstr "\"%s\" está fora do intervalo para tipo real" +msgid "rule %s on " +msgstr "regra %s em " -#: utils/adt/float.c:399 utils/adt/float.c:440 utils/adt/float.c:491 -#: utils/adt/numeric.c:3760 utils/adt/numeric.c:3786 +#: catalog/dependency.c:2603 #, c-format -msgid "invalid input syntax for type double precision: \"%s\"" -msgstr "sintaxe de entrada é inválida para tipo double precision: \"%s\"" +msgid "trigger %s on " +msgstr "gatilho %s em " -#: utils/adt/float.c:435 +#: catalog/dependency.c:2620 #, c-format -msgid "\"%s\" is out of range for type double precision" -msgstr "\"%s\" está fora do intervalo para tipo double precision" +msgid "schema %s" +msgstr "esquema %s" -#: utils/adt/float.c:1119 utils/adt/float.c:1177 utils/adt/int.c:348 -#: utils/adt/int.c:784 utils/adt/int.c:813 utils/adt/int.c:834 -#: utils/adt/int.c:854 utils/adt/int.c:882 utils/adt/int.c:1135 -#: utils/adt/int8.c:1221 utils/adt/numeric.c:2163 utils/adt/numeric.c:2174 -msgid "smallint out of range" -msgstr "smallint fora do intervalo" +#: catalog/dependency.c:2633 +#, c-format +msgid "text search parser %s" +msgstr "analisador de busca textual %s" -#: utils/adt/float.c:1303 utils/adt/numeric.c:4974 -msgid "cannot take square root of a negative number" -msgstr "não pode calcular raiz quadrada de um número negativo" +#: catalog/dependency.c:2648 +#, c-format +msgid "text search dictionary %s" +msgstr "dicionário de busca textual %s" -#: utils/adt/float.c:1345 utils/adt/numeric.c:1975 -msgid "zero raised to a negative power is undefined" -msgstr "zero elevado a um número negativo é indefinido" +#: catalog/dependency.c:2663 +#, c-format +msgid "text search template %s" +msgstr "modelo de busca textual %s" -#: utils/adt/float.c:1349 utils/adt/numeric.c:1981 -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" +#: catalog/dependency.c:2678 +#, c-format +msgid "text search configuration %s" +msgstr "configuração de busca textual %s" -#: utils/adt/float.c:1415 utils/adt/float.c:1445 utils/adt/numeric.c:5192 -msgid "cannot take logarithm of zero" -msgstr "não pode calcular logaritmo de zero" +#: catalog/dependency.c:2686 +#, c-format +msgid "role %s" +msgstr "role %s" -#: utils/adt/float.c:1419 utils/adt/float.c:1449 utils/adt/numeric.c:5196 -msgid "cannot take logarithm of a negative number" -msgstr "não pode calcular logaritmo de número negativo" +#: catalog/dependency.c:2699 +#, c-format +msgid "database %s" +msgstr "banco de dados %s" -#: 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 "entrada está fora do intervalo" +#: catalog/dependency.c:2711 +#, c-format +msgid "tablespace %s" +msgstr "tablespace %s" -#: utils/adt/float.c:2687 utils/adt/numeric.c:982 -msgid "count must be greater than zero" -msgstr "contador deve ser maior do que zero" +#: catalog/dependency.c:2720 +#, c-format +msgid "foreign-data wrapper %s" +msgstr "adaptador de dados externos %s" -#: utils/adt/float.c:2692 utils/adt/numeric.c:989 -msgid "operand, lower bound and upper bound cannot be NaN" -msgstr "operando, limite inferior e limite superior não podem ser infinitos" +#: catalog/dependency.c:2729 +#, c-format +msgid "server %s" +msgstr "servidor %s" -#: utils/adt/float.c:2698 -msgid "lower and upper bounds must be finite" -msgstr "limites inferior e superior devem ser finitos" +#: catalog/dependency.c:2754 +#, c-format +msgid "user mapping for %s" +msgstr "mapeamento de usuários para %s" -#: utils/adt/float.c:2736 utils/adt/numeric.c:1002 -msgid "lower bound cannot equal upper bound" -msgstr "limite inferior não pode ser igual a limite superior" +#: catalog/dependency.c:2788 +#, 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" -#: utils/adt/bool.c:153 +#: catalog/dependency.c:2793 #, c-format -msgid "invalid input syntax for type boolean: \"%s\"" -msgstr "sintaxe de entrada é inválida para tipo boolean: \"%s\"" +msgid "default privileges on new sequences belonging to role %s" +msgstr "privilégios padrão em novas sequências pertencem a role %s" -#: utils/adt/varbit.c:162 utils/adt/varbit.c:302 utils/adt/varbit.c:358 +#: catalog/dependency.c:2798 #, c-format -msgid "bit string length %d does not match type bit(%d)" -msgstr "tamanho da cadeia de bits %d não corresponde ao tipo bit(%d)" +msgid "default privileges on new functions belonging to role %s" +msgstr "privilégios padrão em novas funções pertencem a role %s" -#: utils/adt/varbit.c:184 utils/adt/varbit.c:482 +#: catalog/dependency.c:2804 #, c-format -msgid "\"%c\" is not a valid binary digit" -msgstr "\"%c\" não é um dígito binário válido" +msgid "default privileges belonging to role %s" +msgstr "privilégios padrão pertencem a role %s" -#: utils/adt/varbit.c:209 utils/adt/varbit.c:507 +#: catalog/dependency.c:2812 #, c-format -msgid "\"%c\" is not a valid hexadecimal digit" -msgstr "\"%c\" não é um dígito hexadecimal válido" +msgid " in schema %s" +msgstr " no esquema %s" -#: utils/adt/varbit.c:293 utils/adt/varbit.c:594 -msgid "invalid length in external bit string" -msgstr "tamanho inválido na cadeia de bits externa" +#: catalog/dependency.c:2829 +#, c-format +msgid "extension %s" +msgstr "extensão %s" -#: utils/adt/varbit.c:460 utils/adt/varbit.c:603 utils/adt/varbit.c:664 +#: catalog/dependency.c:2887 #, c-format -msgid "bit string too long for type bit varying(%d)" -msgstr "cadeia de bits muito longa para tipo bit varying(%d)" - -#: utils/adt/varbit.c:1149 -msgid "cannot AND bit strings of different sizes" -msgstr "não pode executar E em cadeias de bits de tamanhos diferentes" - -#: utils/adt/varbit.c:1190 -msgid "cannot OR bit strings of different sizes" -msgstr "não pode executar OU em cadeias de bits de tamanhos diferentes" - -#: utils/adt/varbit.c:1236 -msgid "cannot XOR bit strings of different sizes" -msgstr "não pode executar XOR em cadeias de bits de tamanhos diferentes" - -#: utils/adt/varbit.c:1563 utils/adt/int8.c:502 utils/adt/int8.c:531 -#: utils/adt/int8.c:552 utils/adt/int8.c:582 utils/adt/int8.c:610 -#: utils/adt/int8.c:628 utils/adt/int8.c:672 utils/adt/int8.c:689 -#: utils/adt/int8.c:758 utils/adt/int8.c:779 utils/adt/int8.c:806 -#: utils/adt/int8.c:833 utils/adt/int8.c:854 utils/adt/int8.c:875 -#: utils/adt/int8.c:902 utils/adt/int8.c:942 utils/adt/int8.c:963 -#: utils/adt/int8.c:990 utils/adt/int8.c:1017 utils/adt/int8.c:1038 -#: utils/adt/int8.c:1059 utils/adt/int8.c:1086 utils/adt/int8.c:1259 -#: utils/adt/int8.c:1298 utils/adt/numeric.c:2115 -msgid "bigint out of range" -msgstr "bigint fora do intervalo" +msgid "table %s" +msgstr "tabela %s" -#: utils/adt/varbit.c:1710 utils/adt/varbit.c:1768 +#: catalog/dependency.c:2891 #, c-format -msgid "bit index %d out of valid range (0..%d)" -msgstr "índice do bit %d fora do intervalo válido (0..%d)" - -#: utils/adt/name.c:87 utils/adt/acl.c:164 -msgid "identifier too long" -msgstr "identificador muito longo" +msgid "index %s" +msgstr "índice %s" -#: utils/adt/name.c:88 utils/adt/acl.c:165 +#: catalog/dependency.c:2895 #, c-format -msgid "Identifier must be less than %d characters." -msgstr "Identificador deve ter pelo menos %d caracteres." +msgid "sequence %s" +msgstr "sequência %s" -#: utils/adt/ascii.c:75 +#: catalog/dependency.c:2899 #, c-format -msgid "encoding conversion from %s to ASCII not supported" -msgstr "conversão de codificação de %s para ASCII não é suportada" +msgid "uncataloged table %s" +msgstr "tabela temporária %s" -#: utils/adt/ascii.c:126 commands/dbcommands.c:235 +#: catalog/dependency.c:2903 #, c-format -msgid "%s is not a valid encoding name" -msgstr "%s não é um nome de codificação válido" +msgid "toast table %s" +msgstr "tabela toast %s" -#: utils/adt/ascii.c:144 commands/dbcommands.c:225 +#: catalog/dependency.c:2907 #, c-format -msgid "%d is not a valid encoding code" -msgstr "%d não é um código de codificação válido" +msgid "view %s" +msgstr "visão %s" -#: utils/adt/tsquery.c:156 utils/adt/tsquery.c:392 -#: utils/adt/tsvector_parser.c:136 +#: catalog/dependency.c:2911 #, c-format -msgid "syntax error in tsquery: \"%s\"" -msgstr "erro de sintaxe em tsquery: \"%s\"" +msgid "composite type %s" +msgstr "tipo composto %s" -#: utils/adt/tsquery.c:177 +#: catalog/dependency.c:2915 #, c-format -msgid "no operand in tsquery: \"%s\"" -msgstr "nenhum operando em tsquery: \"%s\"" +msgid "foreign table %s" +msgstr "tabela externa %s" -#: utils/adt/tsquery.c:250 +#: catalog/dependency.c:2920 #, c-format -msgid "value is too big in tsquery: \"%s\"" -msgstr "valor é muito grande em tsquery: \"%s\"" +msgid "relation %s" +msgstr "relação %s" -#: utils/adt/tsquery.c:255 +#: catalog/dependency.c:2957 #, c-format -msgid "operand is too long in tsquery: \"%s\"" -msgstr "operando é muito longo em tsquery: \"%s\"" +msgid "operator family %s for access method %s" +msgstr "família de operadores %s para método de acesso %s" -#: utils/adt/tsquery.c:283 +#: catalog/pg_depend.c:164 commands/extension.c:2983 #, c-format -msgid "word is too long in tsquery: \"%s\"" -msgstr "palavra é muito longa em tsquery: \"%s\"" +msgid "%s is already a member of extension \"%s\"" +msgstr "role \"%s\" já é um membro da extensão \"%s\"" -#: utils/adt/tsquery.c:512 +#: catalog/pg_depend.c:323 #, c-format -msgid "text-search query doesn't contain lexemes: \"%s\"" -msgstr "consulta de busca textual não contém lexemas: \"%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" -#: utils/adt/cash.c:232 +#: catalog/heap.c:264 #, c-format -msgid "invalid input syntax for type money: \"%s\"" -msgstr "sintaxe de entrada é inválida para tipo money: \"%s\"" +msgid "permission denied to create \"%s.%s\"" +msgstr "permissão negada ao criar \"%s.%s\"" + +#: catalog/heap.c:266 +msgid "System catalog modifications are currently disallowed." +msgstr "Modificações no catálogo do sistema estão atualmente desabilitadas." -#: utils/adt/regexp.c:190 tsearch/spell.c:365 +#: catalog/heap.c:389 commands/tablecmds.c:1279 commands/tablecmds.c:1711 +#: commands/tablecmds.c:4210 #, c-format -msgid "invalid regular expression: %s" -msgstr "expressão regular inválida: %s" +msgid "tables can have at most %d columns" +msgstr "tabelas podem ter no máximo %d colunas" -#: utils/adt/regexp.c:404 +#: catalog/heap.c:406 #, c-format -msgid "invalid regexp option: \"%c\"" -msgstr "opção da expressão regular é inválida: \"%c\"" +msgid "column name \"%s\" conflicts with a system column name" +msgstr "nome de coluna \"%s\" conflita com um nome de coluna do sistema" -#: utils/adt/regexp.c:668 utils/adt/like_match.c:287 -msgid "invalid escape string" -msgstr "cadeia de caracteres de escape inválida" +#: catalog/heap.c:422 +#, c-format +msgid "column name \"%s\" specified more than once" +msgstr "nome da coluna \"%s\" especificado mais de uma vez" -#: utils/adt/regexp.c:669 utils/adt/like_match.c:288 -msgid "Escape string must be empty or one character." -msgstr "Cadeia de caracteres de escape deve ser vazia ou ter um caracter." +#: catalog/heap.c:472 +#, c-format +msgid "column \"%s\" has type \"unknown\"" +msgstr "coluna \"%s\" tem tipo \"unknown\"" -#: utils/adt/regexp.c:865 -msgid "regexp_split does not support the global option" -msgstr "regexp_split não suporta a opção global" +#: catalog/heap.c:473 +msgid "Proceeding with relation creation anyway." +msgstr "Prosseguindo com a criação da relação mesmo assim." -#: utils/adt/encode.c:55 utils/adt/encode.c:91 +#: catalog/heap.c:486 #, c-format -msgid "unrecognized encoding: \"%s\"" -msgstr "codificação desconhecida: \"%s\"" +msgid "column \"%s\" has pseudo-type %s" +msgstr "coluna \"%s\" tem pseudo-tipo %s" -#: utils/adt/encode.c:150 +#: catalog/heap.c:516 #, c-format -msgid "invalid hexadecimal digit: \"%c\"" -msgstr "dígito hexadecimal inválido: \"%c\"" +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" -#: utils/adt/encode.c:178 -msgid "invalid hexadecimal data: odd number of digits" -msgstr "dado hexadecimal inválido: número de dígitos estranho" +#: catalog/heap.c:558 +#, 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" -#: utils/adt/encode.c:295 -msgid "unexpected \"=\"" -msgstr "\"=\" inesperado" +#: catalog/heap.c:560 commands/view.c:145 commands/indexcmds.c:908 +#: utils/adt/varlena.c:1315 utils/adt/like.c:212 utils/adt/selfuncs.c:4965 +#: utils/adt/formatting.c:1515 utils/adt/formatting.c:1565 +#: utils/adt/formatting.c:1631 utils/adt/formatting.c:1681 +#: utils/adt/formatting.c:1748 utils/adt/formatting.c:1810 +#: regex/regc_pg_locale.c:259 +msgid "Use the COLLATE clause to set the collation explicitly." +msgstr "Utilize a cláusula COLLATE para definir a ordenação explicitamente." -#: utils/adt/encode.c:307 -msgid "invalid symbol" -msgstr "símbolo inválido" +#: catalog/heap.c:1030 +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." -#: utils/adt/encode.c:327 -msgid "invalid end sequence" -msgstr "fim de sequência inválido" +#: catalog/heap.c:2150 +#, c-format +msgid "check constraint \"%s\" already exists" +msgstr "restrição de verificação \"%s\" já existe" -#: utils/adt/arrayutils.c:93 utils/adt/arrayutils.c:102 -#: utils/adt/arrayutils.c:109 utils/adt/arrayfuncs.c:847 -#: utils/adt/arrayfuncs.c:1448 utils/adt/arrayfuncs.c:2766 -#: utils/adt/arrayfuncs.c:2914 utils/adt/arrayfuncs.c:4662 +#: catalog/heap.c:2300 #, c-format -msgid "array size exceeds the maximum allowed (%d)" -msgstr "tamanho da matriz excede o máximo permitido (%d)" +msgid "merging constraint \"%s\" with inherited definition" +msgstr "juntando restrição \"%s\" com definição herdada" -#: utils/adt/arrayutils.c:209 -msgid "typmod array must be type cstring[]" -msgstr "matriz typmod deve ser do tipo cstring[]" +#: catalog/heap.c:2398 +msgid "cannot use column references in default expression" +msgstr "não pode utilizar referência à coluna na expressão padrão" -#: utils/adt/arrayutils.c:214 -msgid "typmod array must be one-dimensional" -msgstr "matriz typmod deve ser de uma dimensão" +#: catalog/heap.c:2406 +msgid "default expression must not return a set" +msgstr "expressão padrão não deve retornar um conjunto" -#: utils/adt/arrayutils.c:219 -msgid "typmod array must not contain nulls" -msgstr "matriz typmod não deve conter valores nulos" +#: catalog/heap.c:2414 +msgid "cannot use subquery in default expression" +msgstr "não pode utilizar subconsulta na expressão padrão" -#: utils/adt/rowtypes.c:98 utils/adt/rowtypes.c:473 -msgid "input of anonymous composite types is not implemented" -msgstr "entrada de tipos compostos anônimos não está implementada" +#: catalog/heap.c:2418 +msgid "cannot use aggregate function in default expression" +msgstr "não pode utilizar função de agregação na expressão padrão" + +#: catalog/heap.c:2422 +msgid "cannot use window function in default expression" +msgstr "não pode utilizar função deslizante na expressão padrão" -#: 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 +#: catalog/heap.c:2441 rewrite/rewriteHandler.c:1030 #, c-format -msgid "malformed record literal: \"%s\"" -msgstr "matriz mal formada: \"%s\"" +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" -#: utils/adt/rowtypes.c:152 -msgid "Missing left parenthesis." -msgstr "Faltando parêntese esquerdo." +#: catalog/heap.c:2446 commands/prepare.c:370 parser/parse_target.c:490 +#: parser/parse_target.c:736 parser/parse_target.c:746 parser/parse_node.c:410 +#: rewrite/rewriteHandler.c:1035 +msgid "You will need to rewrite or cast the expression." +msgstr "Você precisará reescrever ou converter a expressão." -#: utils/adt/rowtypes.c:180 -msgid "Too few columns." -msgstr "Poucas colunas." +#: catalog/heap.c:2492 +#, 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" -#: utils/adt/rowtypes.c:204 utils/adt/rowtypes.c:212 -msgid "Unexpected end of input." -msgstr "Fim da entrada inesperado." +#: catalog/heap.c:2501 commands/typecmds.c:2386 +msgid "cannot use subquery in check constraint" +msgstr "não pode utilizar subconsulta na restrição de verificação" -#: utils/adt/rowtypes.c:263 -msgid "Too many columns." -msgstr "Muitas colunas." +#: catalog/heap.c:2505 commands/typecmds.c:2390 +msgid "cannot use aggregate function in check constraint" +msgstr "não pode utilizar função de agregação na restrição de verificação" -#: utils/adt/rowtypes.c:271 -msgid "Junk after right parenthesis." -msgstr "Lixo após parêntese direito." +#: catalog/heap.c:2509 commands/typecmds.c:2394 +msgid "cannot use window function in check constraint" +msgstr "não pode utilizar função deslizante na restrição de verificação" -#: utils/adt/rowtypes.c:522 -#, c-format -msgid "wrong number of columns: %d, expected %d" -msgstr "número de colunas incorreto: %d, esperado %d" +#: catalog/heap.c:2748 +msgid "unsupported ON COMMIT and foreign key combination" +msgstr "combinação ON COMMIT e chave estrangeira não é suportada" -#: utils/adt/rowtypes.c:549 +#: catalog/heap.c:2749 #, c-format -msgid "wrong data type: %u, expected %u" -msgstr "tipo de dado incorreto: %u, esperado %u" +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." -#: utils/adt/rowtypes.c:557 utils/adt/arrayfuncs.c:1386 libpq/pqformat.c:556 -#: libpq/pqformat.c:574 libpq/pqformat.c:595 -msgid "insufficient data left in message" -msgstr "dados insuficientes na mensagem" +#: catalog/heap.c:2754 +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" -#: utils/adt/rowtypes.c:610 +#: catalog/heap.c:2755 #, c-format -msgid "improper binary format in record column %d" -msgstr "formato binário inválido na coluna %d do registro" +msgid "Table \"%s\" references \"%s\"." +msgstr "Tabela \"%s\" referencia \"%s\"." -#: utils/adt/rowtypes.c:896 utils/adt/rowtypes.c:1122 +#: catalog/heap.c:2757 #, c-format -msgid "cannot compare dissimilar column types %s and %s at record column %d" +msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." msgstr "" -"não pode comparar tipos de colunas diferentes %s e %s em coluna %d de " -"registro" - -#: utils/adt/rowtypes.c:974 utils/adt/rowtypes.c:1185 -msgid "cannot compare record types with different numbers of columns" -msgstr "não pode comparar tipos record com quantidade diferente de colunas" +"Trunque a tabela \"%s\" ao mesmo tempo, ou utilize TRUNCATE ... CASCADE." -#: utils/adt/rowtypes.c:1139 utils/adt/arrayfuncs.c:3105 -#: utils/adt/arrayfuncs.c:3506 parser/parse_oper.c:260 +#: catalog/namespace.c:234 catalog/namespace.c:318 commands/trigger.c:4181 #, 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" +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\"" -#: utils/adt/ruleutils.c:1523 utils/adt/acl.c:2770 -#: parser/parse_relation.c:1996 parser/parse_relation.c:2051 -#: parser/parse_target.c:808 parser/analyze.c:1814 parser/parse_type.c:117 -#: commands/trigger.c:527 commands/copy.c:3441 commands/tablecmds.c:3949 -#: commands/tablecmds.c:4039 commands/tablecmds.c:4086 -#: commands/tablecmds.c:4182 commands/tablecmds.c:4226 -#: commands/tablecmds.c:4305 commands/tablecmds.c:4386 -#: commands/tablecmds.c:5837 commands/tablecmds.c:5975 commands/comment.c:651 -#: commands/analyze.c:341 commands/sequence.c:1309 catalog/aclchk.c:1464 -#, c-format -msgid "column \"%s\" of relation \"%s\" does not exist" -msgstr "coluna \"%s\" da relação \"%s\" não existe" +#: catalog/namespace.c:260 +msgid "temporary tables cannot specify a schema name" +msgstr "tabelas temporárias não podem especificar um nome de esquema" -#: utils/adt/ruleutils.c:1634 commands/functioncmds.c:1005 -#: commands/functioncmds.c:1105 commands/functioncmds.c:1168 -#: commands/functioncmds.c:1319 +#: catalog/namespace.c:285 commands/lockcmds.c:122 parser/parse_relation.c:844 #, c-format -msgid "\"%s\" is an aggregate function" -msgstr "\"%s\" é uma função de agregação" +msgid "relation \"%s.%s\" does not exist" +msgstr "relação \"%s.%s\" não existe" -#: utils/adt/ruleutils.c:2236 +#: catalog/namespace.c:290 commands/lockcmds.c:127 utils/adt/regproc.c:810 +#: parser/parse_relation.c:857 parser/parse_relation.c:865 #, c-format -msgid "rule \"%s\" has unsupported event type %d" -msgstr "regra \"%s\" tem tipo de evento %d que não é suportado" +msgid "relation \"%s\" does not exist" +msgstr "relação \"%s\" não existe" -#: utils/adt/ruleutils.c:5516 utils/adt/ruleutils.c:5571 -#: utils/adt/ruleutils.c:5608 utils/adt/regproc.c:635 utils/adt/regproc.c:1485 -msgid "too many arguments" -msgstr "muitos argumentos" +#: catalog/namespace.c:358 catalog/namespace.c:2589 commands/extension.c:1399 +#: commands/extension.c:1405 +msgid "no schema has been selected to create in" +msgstr "nenhum esquema foi selecionado para criá-lo(a)" -#: utils/adt/formatting.c:491 -msgid "invalid format specification for an interval value" -msgstr "especificação do formato é inválida para um valor interval" +#: catalog/namespace.c:410 catalog/namespace.c:423 +msgid "cannot create relations in temporary schemas of other sessions" +msgstr "não pode criar relações em esquemas temporárias de outras sessões" -#: utils/adt/formatting.c:492 -msgid "Intervals are not tied to specific calendar dates." -msgstr "Intervalos não estão presos a datas específicas do calendário." +#: catalog/namespace.c:414 +msgid "cannot create temporary relation in non-temporary schema" +msgstr "não pode criar relação temporária em esquema que não é temporário" -#: utils/adt/formatting.c:1059 -#, fuzzy -msgid "\"EEEE\" must be the last pattern used" -msgstr "\"EEEE\" deve ser o último padrão utilizado" +#: catalog/namespace.c:429 +msgid "only temporary relations may be created in temporary schemas" +msgstr "somente relações temporárias podem ser criadas em esquemas temporários" -#: utils/adt/formatting.c:1067 -msgid "\"9\" must be ahead of \"PR\"" -msgstr "\"9\" deve estar a frente de \"PR\"" +#: catalog/namespace.c:1906 commands/tsearchcmds.c:320 +#, c-format +msgid "text search parser \"%s\" does not exist" +msgstr "analisador de busca textual \"%s\" não existe" -#: utils/adt/formatting.c:1083 -msgid "\"0\" must be ahead of \"PR\"" -msgstr "\"0\" deve estar a frente de \"PR\"" +#: catalog/namespace.c:2029 commands/tsearchcmds.c:769 +#, c-format +msgid "text search dictionary \"%s\" does not exist" +msgstr "dicionário de busca textual \"%s\" não existe" -#: utils/adt/formatting.c:1109 -msgid "multiple decimal points" -msgstr "múltiplos separadores decimais" +#: catalog/namespace.c:2153 commands/tsearchcmds.c:1304 +#, c-format +msgid "text search template \"%s\" does not exist" +msgstr "modelo de busca textual \"%s\" não existe" -#: utils/adt/formatting.c:1113 utils/adt/formatting.c:1196 -msgid "cannot use \"V\" and decimal point together" -msgstr "não pode utilizar \"V\" e separador decimal juntos" +#: catalog/namespace.c:2276 commands/tsearchcmds.c:1753 +#: commands/tsearchcmds.c:1909 utils/cache/ts_cache.c:620 +#, c-format +msgid "text search configuration \"%s\" does not exist" +msgstr "configuração de busca textual \"%s\" não existe" -#: utils/adt/formatting.c:1125 -msgid "cannot use \"S\" twice" -msgstr "não pode utilizar \"S\" duas vezes" +#: catalog/namespace.c:2389 parser/parse_target.c:1088 parser/parse_expr.c:777 +#, c-format +msgid "cross-database references are not implemented: %s" +msgstr "referências cruzadas entre bancos de dados não estão implementadas: %s" -#: utils/adt/formatting.c:1129 -msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" -msgstr "não pode utilizar \"S\" e \"PL\"/\"MI\"/\"SG\"/\"PR\" juntos" +#: catalog/namespace.c:2395 parser/parse_target.c:1095 parser/parse_expr.c:784 +#: gram.y:11651 gram.y:12832 +#, c-format +msgid "improper qualified name (too many dotted names): %s" +msgstr "nome qualificado é inválido (nomes com muitos pontos): %s" -#: utils/adt/formatting.c:1149 -msgid "cannot use \"S\" and \"MI\" together" -msgstr "não pode utilizar \"S\" e \"MI\" juntos" +#: catalog/namespace.c:2523 +#, c-format +msgid "%s is already in schema \"%s\"" +msgstr "%s já está no esquema \"%s\"" -#: utils/adt/formatting.c:1159 -msgid "cannot use \"S\" and \"PL\" together" -msgstr "não pode utilizar \"S\" e \"PL\" juntos" +#: catalog/namespace.c:2531 +msgid "cannot move objects into or out of temporary schemas" +msgstr "não pode mover objetos para ou de esquemas temporários" -#: utils/adt/formatting.c:1169 -msgid "cannot use \"S\" and \"SG\" together" -msgstr "não pode utilizar \"S\" e \"SG\" juntos" +#: catalog/namespace.c:2537 +msgid "cannot move objects into or out of TOAST schema" +msgstr "não pode mover objetos para ou de esquema TOAST" -#: utils/adt/formatting.c:1178 -msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" -msgstr "não pode utilizar \"PR\" e \"S\"/\"PL\"/\"MI\"/\"SG\" juntos" +#: catalog/namespace.c:2610 catalog/namespace.c:3599 catalog/namespace.c:3602 +#: commands/schemacmds.c:253 commands/schemacmds.c:322 +#, c-format +msgid "schema \"%s\" does not exist" +msgstr "esquema \"%s\" não existe" -#: utils/adt/formatting.c:1204 -msgid "cannot use \"EEEE\" twice" -msgstr "não pode utilizar \"EEEE\" duas vezes" +#: catalog/namespace.c:2641 +#, c-format +msgid "improper relation name (too many dotted names): %s" +msgstr "nome de relação é inválido (nomes com muitos pontos): %s" -#: utils/adt/formatting.c:1210 -msgid "\"EEEE\" is incompatible with other formats" -msgstr "\"EEEE\" é imcompatível com outros formatos" +#: catalog/namespace.c:3040 +#, c-format +msgid "collation \"%s\" for encoding \"%s\" does not exist" +msgstr "ordenação \"%s\" para codificação \"%s\" não existe" -#: utils/adt/formatting.c:1211 -#, fuzzy -msgid "" -"\"EEEE\" may only be used together with digit and decimal point patterns." -msgstr "" -"\"EEEE\" só pode ser utilizado em conjunto com modelos de dígitos e decimais." +#: catalog/namespace.c:3092 +#, c-format +msgid "conversion \"%s\" does not exist" +msgstr "conversão \"%s\" não existe" -#: utils/adt/formatting.c:1411 +#: catalog/namespace.c:3297 #, c-format -msgid "\"%s\" is not a number" -msgstr "\"%s\" não é um número" +msgid "permission denied to create temporary tables in database \"%s\"" +msgstr "permissão negada ao criar tabelas temporárias no banco de dados \"%s\"" -#: utils/adt/formatting.c:1788 -msgid "invalid combination of date conventions" -msgstr "combinação inválida de convenções do tipo date" +#: catalog/namespace.c:3313 +msgid "cannot create temporary tables during recovery" +msgstr "não pode criar tabelas temporárias durante recuperação" -#: utils/adt/formatting.c:1789 -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." +#: catalog/namespace.c:3559 commands/variable.c:59 commands/tablespace.c:1167 +#: utils/misc/guc.c:8181 replication/syncrep.c:661 +msgid "List syntax is invalid." +msgstr "Sintaxe de lista é inválida." -#: utils/adt/formatting.c:1806 +#: catalog/pg_proc.c:124 parser/parse_func.c:1526 parser/parse_func.c:1566 #, c-format -msgid "conflicting values for \"%s\" field in formatting string" -msgstr "" -"valores conflitantes para campo \"%s\" na cadeia de caracteres de formatação" +msgid "functions cannot have more than %d argument" +msgid_plural "functions cannot have more than %d arguments" +msgstr[0] "funções não podem ter mais do que %d argumento" +msgstr[1] "funções não podem ter mais do que %d argumentos" -#: utils/adt/formatting.c:1808 -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." +#: catalog/pg_proc.c:205 catalog/pg_aggregate.c:175 +msgid "cannot determine result data type" +msgstr "não pode determinar tipo de dado do resultado" -#: utils/adt/formatting.c:1869 -#, c-format -msgid "source string too short for \"%s\" formatting field" +#: catalog/pg_proc.c:206 +msgid "" +"A function returning a polymorphic type must have at least one polymorphic " +"argument." msgstr "" -"cadeia de carateres fonte é muito curta para campo de formatação \"%s\"" +"Uma função retornando um tipo polimórfico deve ter pelo menos um argumento " +"polimórfico." -#: utils/adt/formatting.c:1871 -#, c-format -msgid "Field requires %d characters, but only %d remain." -msgstr "Campo requer %d caracteres, mas só restam %d." +#: catalog/pg_proc.c:211 catalog/pg_aggregate.c:188 +msgid "unsafe use of pseudo-type \"internal\"" +msgstr "uso inseguro do pseudo-tipo \"internal\"" -#: utils/adt/formatting.c:1874 utils/adt/formatting.c:1888 +#: catalog/pg_proc.c:212 catalog/pg_aggregate.c:189 msgid "" -"If your source string is not fixed-width, try using the \"FM\" modifier." +"A function returning \"internal\" must have at least one \"internal\" " +"argument." msgstr "" -"Se sua cadeia de carateres fonte não tem tamanho fixo, tente utilizar o " -"modificador \"FM\"." - -#: utils/adt/formatting.c:1884 utils/adt/formatting.c:1897 -#: utils/adt/formatting.c:2027 -#, c-format -msgid "invalid value \"%s\" for \"%s\"" -msgstr "valor \"%s\" inválido para \"%s\"" +"Uma função retornando \"internal\" deve ter pelo menos um argumento " +"\"internal\"." -#: utils/adt/formatting.c:1886 +#: catalog/pg_proc.c:224 #, 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:1899 -msgid "Value must be an integer." -msgstr "Valor deve ser um inteiro." +msgid "\"%s\" is already an attribute of type %s" +msgstr "\"%s\" já é um atributo do tipo %s" -#: utils/adt/formatting.c:1904 -#, 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" +#: catalog/pg_proc.c:292 +msgid "window functions cannot have default arguments" +msgstr "funções deslizantes não podem ter argumentos padrão" -#: utils/adt/formatting.c:1906 +#: catalog/pg_proc.c:369 #, 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:2029 -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:2585 -msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date" -msgstr "formatos \"TZ\"/\"tz\" não são suportadas em to_date" +msgid "function \"%s\" already exists with same argument types" +msgstr "função \"%s\" já existe com os mesmos tipos de argumento" -#: utils/adt/formatting.c:2689 -msgid "invalid input string for \"Y,YYY\"" -msgstr "cadeia de caracteres de entrada é inválida para \"Y,YYY\"" +#: catalog/pg_proc.c:383 catalog/pg_proc.c:405 +msgid "cannot change return type of existing function" +msgstr "não pode mudar o tipo de retorno da função existente" -#: utils/adt/formatting.c:3206 -#, c-format -msgid "hour \"%d\" is invalid for the 12-hour clock" -msgstr "hora \"%d\" é inválido para relógio de 12 horas" +#: catalog/pg_proc.c:384 catalog/pg_proc.c:407 catalog/pg_proc.c:449 +#: catalog/pg_proc.c:472 catalog/pg_proc.c:498 +msgid "Use DROP FUNCTION first." +msgstr "Primeiro utilize DROP FUNCTION." -#: utils/adt/formatting.c:3208 -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." +#: catalog/pg_proc.c:406 +msgid "Row type defined by OUT parameters is different." +msgstr "Tipo de registro definido pelos parâmetros OUT é diferente." -#: utils/adt/formatting.c:3246 +#: catalog/pg_proc.c:447 #, c-format -msgid "inconsistent use of year %04d and \"BC\"" -msgstr "uso inconsistente do ano %04d e \"BC\"" - -#: utils/adt/formatting.c:3293 -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:4151 -msgid "\"EEEE\" not supported for input" -msgstr "\"EEEE\" não é suportado na entrada" +msgid "cannot change name of input parameter \"%s\"" +msgstr "não pode mudar nome de parâmetro de entrada \"%s\"" -#: utils/adt/formatting.c:4163 -msgid "\"RN\" not supported for input" -msgstr "\"RN\" não é suportado na entrada" +#: catalog/pg_proc.c:471 +msgid "cannot remove parameter defaults from existing function" +msgstr "não pode remover valores padrão de parâmetros da função existente" -#: utils/adt/tsgistidx.c:100 -msgid "gtsvector_in not implemented" -msgstr "gtsvector_in não está implementado" +#: catalog/pg_proc.c:497 +msgid "cannot change data type of existing parameter default value" +msgstr "não pode mudar o tipo de dado do valor padrão do parâmetro existente" -#: utils/adt/dbsize.c:105 utils/adt/dbsize.c:195 +#: catalog/pg_proc.c:509 #, c-format -msgid "could not open tablespace directory \"%s\": %m" -msgstr "não pôde abrir diretório da tablespace \"%s\": %m" +msgid "function \"%s\" is an aggregate function" +msgstr "função \"%s\" é uma função de agregação" -#: utils/adt/dbsize.c:127 catalog/aclchk.c:3500 catalog/aclchk.c:4590 +#: catalog/pg_proc.c:514 #, c-format -msgid "database with OID %u does not exist" -msgstr "banco de dados com OID %u não existe" +msgid "function \"%s\" is not an aggregate function" +msgstr "função \"%s\" não é uma função de agregação" -#: utils/adt/dbsize.c:149 utils/adt/acl.c:2975 utils/init/postinit.c:708 -#: utils/init/postinit.c:776 utils/init/postinit.c:793 -#: commands/dbcommands.c:760 commands/dbcommands.c:905 -#: commands/dbcommands.c:1004 commands/dbcommands.c:1181 -#: commands/dbcommands.c:1366 commands/dbcommands.c:1410 -#: commands/dbcommands.c:1456 commands/comment.c:698 catalog/aclchk.c:614 +#: catalog/pg_proc.c:522 #, c-format -msgid "database \"%s\" does not exist" -msgstr "banco de dados \"%s\" não existe" +msgid "function \"%s\" is a window function" +msgstr "função \"%s\" é uma função deslizante" -#: utils/adt/datetime.c:3516 utils/adt/datetime.c:3523 +#: catalog/pg_proc.c:527 #, 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:3525 -msgid "Perhaps you need a different \"datestyle\" setting." -msgstr "Talvez você necessite de uma definição diferente para \"datestyle\"." +msgid "function \"%s\" is not a window function" +msgstr "função \"%s\" não é uma função deslizante" -#: utils/adt/datetime.c:3530 +#: catalog/pg_proc.c:717 #, c-format -msgid "interval field value out of range: \"%s\"" -msgstr "valor do campo interval fora do intervalo: \"%s\"" +msgid "there is no built-in function named \"%s\"" +msgstr "não há nenhuma função embutida com nome \"%s\"" -#: utils/adt/datetime.c:3536 +#: catalog/pg_proc.c:815 #, c-format -msgid "time zone displacement out of range: \"%s\"" -msgstr "deslocamento de zona horária fora do intervalo: \"%s\"" - -#: utils/adt/arrayfuncs.c:211 utils/adt/arrayfuncs.c:223 -msgid "missing dimension value" -msgstr "faltando valor da dimensão" - -#: utils/adt/arrayfuncs.c:233 -msgid "missing \"]\" in array dimensions" -msgstr "faltando \"]\" nas dimensões da matriz" - -#: utils/adt/arrayfuncs.c:241 utils/adt/arrayfuncs.c:2411 -#: utils/adt/arrayfuncs.c:2439 utils/adt/arrayfuncs.c:2454 -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:253 utils/adt/arrayfuncs.c:279 -msgid "array value must start with \"{\" or dimension information" -msgstr "valor da matriz deve iniciar com \"{\" ou dimensão" - -#: utils/adt/arrayfuncs.c:267 -msgid "missing assignment operator" -msgstr "faltando operador de atribuição" - -#: utils/adt/arrayfuncs.c:284 utils/adt/arrayfuncs.c:290 -msgid "array dimensions incompatible with array literal" -msgstr "dimensões da matriz são incompatíveis com matriz" +msgid "SQL functions cannot return type %s" +msgstr "funções SQL não podem retornar tipo %s" -#: utils/adt/arrayfuncs.c:420 utils/adt/arrayfuncs.c:435 -#: utils/adt/arrayfuncs.c:444 utils/adt/arrayfuncs.c:458 -#: utils/adt/arrayfuncs.c:478 utils/adt/arrayfuncs.c:506 -#: utils/adt/arrayfuncs.c:511 utils/adt/arrayfuncs.c:551 -#: utils/adt/arrayfuncs.c:572 utils/adt/arrayfuncs.c:591 -#: utils/adt/arrayfuncs.c:701 utils/adt/arrayfuncs.c:710 -#: utils/adt/arrayfuncs.c:740 utils/adt/arrayfuncs.c:755 -#: utils/adt/arrayfuncs.c:808 +#: catalog/pg_proc.c:830 #, c-format -msgid "malformed array literal: \"%s\"" -msgstr "matriz mal formada: \"%s\"" - -#: utils/adt/arrayfuncs.c:1225 -msgid "invalid array flags" -msgstr "marcações de matriz são inválidas" +msgid "SQL functions cannot have arguments of type %s" +msgstr "funções SQL não podem ter argumentos do tipo %s" -#: utils/adt/arrayfuncs.c:1233 -msgid "wrong element type" -msgstr "tipo de elemento incorreto" +#: catalog/pg_shdepend.c:684 +#, 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" +"e objetos em %d outro banco de dados (veja lista no log do servidor)" +msgstr[1] "" +"\n" +"e objetos em %d outros bancos de dados (veja lista no log do servidor)" -#: utils/adt/arrayfuncs.c:1282 utils/cache/lsyscache.c:2305 +#: catalog/pg_shdepend.c:996 #, c-format -msgid "no binary input function available for type %s" -msgstr "nenhuma função de entrada disponível para tipo %s" +msgid "role %u was concurrently dropped" +msgstr "role %u foi removida simultaneamente" -#: utils/adt/arrayfuncs.c:1422 +#: catalog/pg_shdepend.c:1015 #, c-format -msgid "improper binary format in array element %d" -msgstr "formato binário é inválido no elemento %d da matriz" +msgid "tablespace %u was concurrently dropped" +msgstr "tablespace %u foi removida simultaneamente" -#: utils/adt/arrayfuncs.c:1504 utils/cache/lsyscache.c:2338 +#: catalog/pg_shdepend.c:1030 #, c-format -msgid "no binary output function available for type %s" -msgstr "nenhuma função de saída disponível para tipo %s" +msgid "database %u was concurrently dropped" +msgstr "banco de dados %u foi removido simultaneamente" -#: utils/adt/arrayfuncs.c:1878 -msgid "slices of fixed-length arrays not implemented" -msgstr "segmentos de matrizes de tamanho fixo não está implementado" +#: catalog/pg_shdepend.c:1074 +#, c-format +msgid "owner of %s" +msgstr "dono de %s" -#: utils/adt/arrayfuncs.c:2051 utils/adt/arrayfuncs.c:2073 -#: utils/adt/arrayfuncs.c:2107 utils/adt/arrayfuncs.c:2393 -#: utils/adt/arrayfuncs.c:4542 utils/adt/arrayfuncs.c:4574 -#: utils/adt/arrayfuncs.c:4591 -msgid "wrong number of array subscripts" -msgstr "número de índices da matriz incorreto" +#: catalog/pg_shdepend.c:1076 +#, c-format +msgid "privileges for %s" +msgstr "privilégios para %s" -#: utils/adt/arrayfuncs.c:2056 utils/adt/arrayfuncs.c:2149 -#: utils/adt/arrayfuncs.c:2444 -msgid "array subscript out of range" -msgstr "índice da matriz está fora do intervalo" +#. translator: %s will always be "database %s" +#: catalog/pg_shdepend.c:1084 +#, 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" -#: utils/adt/arrayfuncs.c:2061 -msgid "cannot assign null value to an element of a fixed-length array" +#: catalog/pg_shdepend.c:1195 +#, c-format +msgid "" +"cannot drop objects owned by %s because they are required by the database " +"system" msgstr "" -"não pode atribuir valor nulo para um elemento de matriz de tamanho fixo" +"não pode remover objetos que pertencem a %s porque eles são requeridos pelo " +"sistema de banco de dados" -#: utils/adt/arrayfuncs.c:2347 -msgid "updates on slices of fixed-length arrays not implemented" +#: catalog/pg_shdepend.c:1298 +#, c-format +msgid "" +"cannot reassign ownership of objects owned by %s because they are required " +"by the database system" msgstr "" -"atualização em segmentos de matrizes de tamanho fixo não está implementada" - -#: utils/adt/arrayfuncs.c:2383 utils/adt/arrayfuncs.c:2470 -msgid "source array too small" -msgstr "matriz de origem muito pequena" - -#: utils/adt/arrayfuncs.c:3021 -msgid "null array element not allowed in this context" -msgstr "elemento nulo da matriz não é permitido neste contexto" - -#: utils/adt/arrayfuncs.c:3082 utils/adt/arrayfuncs.c:3289 -#: utils/adt/arrayfuncs.c:3489 -msgid "cannot compare arrays of different element types" -msgstr "não pode comparar matrizes de tipos de elementos diferentes" - -#: utils/adt/arrayfuncs.c:4440 utils/adt/arrayfuncs.c:4480 -msgid "dimension array or low bound array cannot be NULL" -msgstr "matriz de dimensões ou matriz de limites inferiores não pode ser NULL" - -#: utils/adt/arrayfuncs.c:4543 utils/adt/arrayfuncs.c:4575 -msgid "Dimension array must be one dimensional." -msgstr "Matriz de dimensões deve ser de uma dimensão." +"não pode transferir objetos que pertencem a %s porque eles são requeridos " +"pelo sistema de banco de dados" -#: utils/adt/arrayfuncs.c:4548 utils/adt/arrayfuncs.c:4580 -msgid "wrong range of array subscripts" -msgstr "intervalo incorreto de índices da matriz" +#: catalog/pg_aggregate.c:100 +msgid "cannot determine transition data type" +msgstr "não pode determinar tipo de dado transitório" -#: utils/adt/arrayfuncs.c:4549 utils/adt/arrayfuncs.c:4581 -msgid "Lower bound of dimension array must be one." -msgstr "Limite inferior da matriz de dimensões deve ser um." +#: catalog/pg_aggregate.c:101 +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." -#: utils/adt/arrayfuncs.c:4554 utils/adt/arrayfuncs.c:4586 -msgid "dimension values cannot be null" -msgstr "valores de dimensão não podem ser nulos" +#: catalog/pg_aggregate.c:124 +#, 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" -#: utils/adt/arrayfuncs.c:4592 -msgid "Low bound array has different size than dimensions array." +#: 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 "" -"Matriz de limites inferiores tem tamanho diferente que a matriz de dimensões." +"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" -#: utils/adt/selfuncs.c:4762 utils/adt/selfuncs.c:5191 -msgid "case insensitive matching not supported on type bytea" +#: catalog/pg_aggregate.c:176 +msgid "" +"An aggregate returning a polymorphic type must have at least one polymorphic " +"argument." msgstr "" -"correspondência não sensível a maiúsculas/minúsculas não é suportada pelo " -"tipo bytea" - -#: utils/adt/selfuncs.c:4867 utils/adt/selfuncs.c:5351 -msgid "regular-expression matching not supported on type bytea" -msgstr "correspondência de expressão regular não é suportada pelo tipo bytea" - -#: utils/adt/int.c:162 -msgid "int2vector has too many elements" -msgstr "int2vector tem muitos elementos" - -#: utils/adt/int.c:236 -msgid "invalid int2vector data" -msgstr "dado int2vector inválido" - -#: utils/adt/datum.c:80 utils/adt/datum.c:92 -msgid "invalid Datum pointer" -msgstr "ponteiro Datum é inválido" - -#: utils/adt/xml.c:135 -msgid "unsupported XML feature" -msgstr "funcionalidade XML não é suportado" +"Uma agregação retornando um tipo polimórfico deve ter pelo menos um " +"argumento polimórfico." -#: utils/adt/xml.c:136 -msgid "This functionality requires the server to be built with libxml support." +#: catalog/pg_aggregate.c:197 +msgid "sort operator can only be specified for single-argument aggregates" msgstr "" -"Esta funcionalidade requer que o servidor seja construído com suporte a " -"libxml." - -#: utils/adt/xml.c:137 -msgid "You need to rebuild PostgreSQL using --with-libxml." -msgstr "Você precisa reconstruir o PostgreSQL utilizando --with-libxml." +"operador de ordenação só pode ser especificado por agregações de argumento " +"único" -#: utils/adt/xml.c:156 utils/mb/mbutils.c:476 +#: 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 "invalid encoding name \"%s\"" -msgstr "nome da codificação \"%s\" é inválido" - -#: utils/adt/xml.c:402 utils/adt/xml.c:407 -msgid "invalid XML comment" -msgstr "comentário XML inválido" - -#: utils/adt/xml.c:536 -msgid "not an XML document" -msgstr "não é um documento XML" +msgid "function %s does not exist" +msgstr "função %s não existe" -#: utils/adt/xml.c:689 utils/adt/xml.c:712 -msgid "invalid XML processing instruction" -msgstr "instrução de processamento XML é inválida" +#: catalog/pg_aggregate.c:337 +#, c-format +msgid "function %s returns a set" +msgstr "função %s retorna um conjunto" -#: utils/adt/xml.c:690 +#: catalog/pg_aggregate.c:362 #, 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\"." +msgid "function %s requires run-time type coercion" +msgstr "função %s requer conversão de tipo em tempo de execução" -#: utils/adt/xml.c:713 -msgid "XML processing instruction cannot contain \"?>\"." -msgstr "instrução de processamento XML não pode conter \"?>\"." +#: catalog/pg_collation.c:75 +#, c-format +msgid "collation \"%s\" for encoding \"%s\" already exists" +msgstr "ordenação \"%s\" para codificação \"%s\" já existe" -#: utils/adt/xml.c:792 -msgid "xmlvalidate is not implemented" -msgstr "xmlvalidate não foi implementado" +#: catalog/pg_collation.c:89 +#, c-format +msgid "collation \"%s\" already exists" +msgstr "ordenação \"%s\" já existe" -#: utils/adt/xml.c:877 -msgid "could not initialize XML library" -msgstr "não pôde inicializar biblioteca XML" +#: catalog/pg_namespace.c:60 commands/schemacmds.c:259 +#, c-format +msgid "schema \"%s\" already exists" +msgstr "esquema \"%s\" já existe" -#: utils/adt/xml.c:878 +#: access/gist/gistvacuum.c:271 access/gist/gist.c:728 #, 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/gistvacuum.c:273 access/gist/gist.c:730 msgid "" -"libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u." +"This is caused by an incomplete page split at crash recovery before " +"upgrading to PostgreSQL 9.1." msgstr "" -"libxml2 tem tipo char incompatível: sizeof(char)=%u, sizeof(xmlChar)=%u." - -#: utils/adt/xml.c:1417 -msgid "Invalid character value." -msgstr "Valor de caracter é inválido." +"Isso é causado por uma divisão de página incompleta durante recuperação de " +"desastre antes da atualização para PostgreSQL 9.1." -#: utils/adt/xml.c:1420 -msgid "Space required." -msgstr "Espaço requerido." - -#: utils/adt/xml.c:1423 -msgid "standalone accepts only 'yes' or 'no'." -msgstr "standalone aceita somente 'yes' ou 'no'." +#: access/gist/gistvacuum.c:274 access/gist/gist.c:731 +#: access/gist/gistutil.c:635 access/gist/gistutil.c:646 +#: access/nbtree/nbtpage.c:436 access/nbtree/nbtpage.c:447 +#: access/hash/hashutil.c:173 access/hash/hashutil.c:184 +#: access/hash/hashutil.c:196 access/hash/hashutil.c:217 +msgid "Please REINDEX it." +msgstr "Por favor execute REINDEX." -#: utils/adt/xml.c:1426 -msgid "Malformed declaration: missing version." -msgstr "Declaração mal formada: faltando versão." +#: access/gist/gist.c:127 access/gist/gist.c:243 +msgid "unlogged GiST indexes are not supported" +msgstr "índices GiST unlogged não são suportados" -#: utils/adt/xml.c:1429 -msgid "Missing encoding in text declaration." -msgstr "Faltando codificação em declaração." +#: access/gist/gistutil.c:632 access/nbtree/nbtpage.c:433 +#: access/hash/hashutil.c:170 +#, 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" -#: utils/adt/xml.c:1432 -msgid "Parsing XML declaration: '?>' expected." -msgstr "Analisando declaração XML: '?>' esperado." +#: access/gist/gistutil.c:643 access/nbtree/nbtpage.c:444 +#: access/hash/hashutil.c:181 access/hash/hashutil.c:193 +#, c-format +msgid "index \"%s\" contains corrupted page at block %u" +msgstr "índice \"%s\" contém página corrompida no bloco %u" -#: utils/adt/xml.c:1435 +#: access/gist/gistsplit.c:446 #, c-format -msgid "Unrecognized libxml error code: %d." -msgstr "código de erro libxml desconhecido: %d." +msgid "picksplit method for column %d of index \"%s\" failed" +msgstr "método picksplit para coluna %d do índice \"%s\" falhou" -#: utils/adt/xml.c:1689 -msgid "XML does not support infinite date values." -msgstr "XML não suporta valores infinitos de date." +#: access/gist/gistsplit.c:448 +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 "" +"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." -#: utils/adt/xml.c:1712 utils/adt/xml.c:1739 -msgid "XML does not support infinite timestamp values." -msgstr "XML não suporta valores infinitos de timestamp." +#: access/heap/heapam.c:3224 access/heap/heapam.c:3255 +#: access/heap/heapam.c:3290 +#, 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\"" -#: utils/adt/xml.c:2123 -msgid "invalid query" -msgstr "consulta inválida" +#: access/heap/rewriteheap.c:597 access/heap/hio.c:175 +#, c-format +msgid "row is too big: size %lu, maximum size %lu" +msgstr "registro é muito grande: tamanho %lu, tamanho máximo %lu" -#: utils/adt/xml.c:3352 -msgid "invalid array for XML namespace mapping" -msgstr "matriz inválida para mapeamento de namespace XML" +#: access/nbtree/nbtsort.c:483 access/nbtree/nbtinsert.c:531 +#: access/gin/ginentrypage.c:101 +#, 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\"" -#: utils/adt/xml.c:3353 +#: access/nbtree/nbtsort.c:487 access/nbtree/nbtinsert.c:535 msgid "" -"The array must be two-dimensional with length of the second axis equal to 2." +"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 "" -"A matriz deve ter duas dimensões com comprimento do segundo eixo igual a 2." +"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." -#: utils/adt/xml.c:3377 -msgid "empty XPath expression" -msgstr "expressão XPath vazia" +#: access/nbtree/nbtinsert.c:393 +#, c-format +msgid "duplicate key value violates unique constraint \"%s\"" +msgstr "duplicar valor da chave viola a restrição de unicidade \"%s\"" -#: utils/adt/xml.c:3425 -msgid "neither namespace name nor URI may be null" -msgstr "namespace ou URI não podem ser nulo" +#: access/nbtree/nbtinsert.c:395 +#, c-format +msgid "Key %s already exists." +msgstr "Chave %s já existe." -#: utils/adt/xml.c:3432 +#: access/nbtree/nbtinsert.c:457 #, 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\"" +msgid "failed to re-find tuple within index \"%s\"" +msgstr "falhou ao reencontrar tupla no índice \"%s\"" -#: utils/adt/like_match.c:103 utils/adt/like_match.c:163 -msgid "LIKE pattern must not end with escape character" -msgstr "padrão de LIKE não deve terminar com caracter escape" +#: access/nbtree/nbtinsert.c:459 +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." -#: utils/adt/mac.c:65 +#: access/nbtree/nbtpage.c:161 access/nbtree/nbtpage.c:365 +#: parser/parse_utilcmd.c:1577 #, c-format -msgid "invalid input syntax for type macaddr: \"%s\"" -msgstr "sintaxe de entrada é inválida para tipo macaddr: \"%s\"" +msgid "index \"%s\" is not a btree" +msgstr "índice \"%s\" não é uma árvore B" -#: utils/adt/mac.c:72 +#: access/nbtree/nbtpage.c:167 access/nbtree/nbtpage.c:371 #, c-format -msgid "invalid octet value in \"macaddr\" value: \"%s\"" -msgstr "valor de octeto é inválido no valor de \"macaddr\": \"%s\"" +msgid "version mismatch in index \"%s\": file version %d, code version %d" +msgstr "" +"incompatibilidade de versão no índice \"%s\": versão do arquivo %d, versão " +"do código %d" -#: utils/adt/tsvector_op.c:1103 -msgid "ts_stat query must return one tsvector column" -msgstr "consulta ts_stat deve retornar uma coluna tsvector" +#: access/hash/hashinsert.c:73 +#, 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" + +#: access/hash/hashinsert.c:76 +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." -#: utils/adt/tsvector_op.c:1283 +#: access/hash/hashovfl.c:547 #, c-format -msgid "tsvector column \"%s\" does not exist" -msgstr "coluna tsvector \"%s\" não existe" +msgid "out of overflow pages in hash index \"%s\"" +msgstr "acabaram as páginas de transbordamento no índice hash \"%s\"" -#: utils/adt/tsvector_op.c:1289 +#: access/hash/hashutil.c:209 #, c-format -msgid "column \"%s\" is not of tsvector type" -msgstr "coluna \"%s\" não é do tipo tsvector" +msgid "index \"%s\" is not a hash index" +msgstr "índice \"%s\" não é um índice hash" -#: utils/adt/tsvector_op.c:1301 +#: access/hash/hashutil.c:215 #, c-format -msgid "configuration column \"%s\" does not exist" -msgstr "coluna de configuração \"%s\" não existe" +msgid "index \"%s\" has wrong hash version" +msgstr "índice \"%s\" tem versão incorreta do hash" + +#: access/hash/hashsearch.c:152 +msgid "hash indexes do not support whole-index scans" +msgstr "índices hash não suportam buscas em todo índice" -#: utils/adt/tsvector_op.c:1307 +#: access/transam/xlog.c:1340 #, c-format -msgid "column \"%s\" is not of regconfig type" -msgstr "coluna \"%s\" não é do tipo regconfig" +msgid "could not create archive status file \"%s\": %m" +msgstr "não pôde criar arquivo de status do arquivador \"%s\": %m" -#: utils/adt/tsvector_op.c:1314 +#: access/transam/xlog.c:1348 #, c-format -msgid "configuration column \"%s\" must not be null" -msgstr "coluna de configuração \"%s\" não deve ser nulo" +msgid "could not write archive status file \"%s\": %m" +msgstr "não pôde escrever no arquivo de status do arquivador \"%s\": %m" -#: utils/adt/tsvector_op.c:1327 +#: access/transam/xlog.c:1803 access/transam/xlog.c:10539 +#: replication/walreceiver.c:515 replication/walsender.c:1013 #, c-format -msgid "text search configuration name \"%s\" must be schema-qualified" +msgid "could not seek in log file %u, segment %u to offset %u: %m" +msgstr "não pôde buscar no arquivo de log %u, segmento %u deslocado de %u: %m" + +#: access/transam/xlog.c:1820 replication/walreceiver.c:532 +#, c-format +msgid "could not write to log file %u, segment %u at offset %u, length %lu: %m" msgstr "" -"nome da configuração de busca textual \"%s\" deve ser qualificada pelo " -"esquema" +"não pôde escrever no arquivo de log %u, segmento %u deslocado de %u, tamanho " +"%lu: %m" -#: utils/adt/tsvector_op.c:1347 parser/parse_expr.c:758 commands/copy.c:3446 -#: commands/indexcmds.c:908 commands/tablecmds.c:1260 -#: commands/tablecmds.c:2065 +#: access/transam/xlog.c:2022 #, c-format -msgid "column \"%s\" does not exist" -msgstr "coluna \"%s\" não existe" +msgid "updated min recovery point to %X/%X" +msgstr "ponto mínimo de recuperação atualizado para %X/%X" -#: utils/adt/tsvector_op.c:1352 +#: access/transam/xlog.c:2372 access/transam/xlog.c:2476 +#: access/transam/xlog.c:2705 access/transam/xlog.c:2776 +#: access/transam/xlog.c:2833 replication/walsender.c:1001 #, c-format -msgid "column \"%s\" is not of a character type" -msgstr "coluna \"%s\" não é do tipo caracter" +msgid "could not open file \"%s\" (log file %u, segment %u): %m" +msgstr "não pôde abrir arquivo \"%s\" (arquivo de log %u, segmento %u): %m" -#: utils/adt/enum.c:44 utils/adt/enum.c:54 utils/adt/enum.c:109 -#: utils/adt/enum.c:119 +#: access/transam/xlog.c:2397 access/transam/xlog.c:2530 +#: access/transam/xlog.c:4463 access/transam/xlog.c:9183 +#: access/transam/xlog.c:9427 storage/file/copydir.c:172 storage/smgr/md.c:289 +#: postmaster/postmaster.c:3697 #, c-format -msgid "invalid input value for enum %s: \"%s\"" -msgstr "valor de entrada é inválido para enum %s: \"%s\"" +msgid "could not create file \"%s\": %m" +msgstr "não pôde criar arquivo \"%s\": %m" -#: utils/adt/enum.c:81 utils/adt/enum.c:144 +#: access/transam/xlog.c:2429 access/transam/xlog.c:2562 +#: access/transam/xlog.c:4515 access/transam/xlog.c:4578 utils/misc/guc.c:7432 +#: utils/misc/guc.c:7457 utils/init/miscinit.c:1097 utils/init/miscinit.c:1106 +#: utils/init/miscinit.c:1113 storage/file/copydir.c:197 +#: postmaster/postmaster.c:3707 postmaster/postmaster.c:3717 #, c-format -msgid "invalid internal value for enum: %u" -msgstr "valor interno é inválido para enum: %u" - -#: utils/adt/enum.c:264 utils/adt/enum.c:303 utils/adt/enum.c:350 -#: utils/adt/enum.c:370 -msgid "could not determine actual enum type" -msgstr "não pôde determinar tipo enum atual" +msgid "could not write to file \"%s\": %m" +msgstr "não pôde escrever no arquivo \"%s\": %m" -#: utils/adt/int8.c:113 +#: access/transam/xlog.c:2437 access/transam/xlog.c:2569 +#: access/transam/xlog.c:4584 storage/file/copydir.c:269 storage/smgr/md.c:932 +#: storage/smgr/md.c:1137 storage/smgr/md.c:1291 #, c-format -msgid "value \"%s\" is out of range for type bigint" -msgstr "valor \"%s\" está fora do intervalo para tipo bigint" - -#: utils/adt/int8.c:1315 -msgid "OID out of range" -msgstr "OID fora do intervalo" - -#: utils/adt/tsquery_rewrite.c:296 -msgid "ts_rewrite query must return two tsquery columns" -msgstr "consulta ts_rewrite deve retornar duas colunas tsquery" +msgid "could not fsync file \"%s\": %m" +msgstr "não pôde executar fsync no arquivo \"%s\": %m" -#: utils/adt/regproc.c:118 utils/adt/regproc.c:139 utils/adt/regproc.c:289 -#: utils/adt/acl.c:3364 +#: access/transam/xlog.c:2442 access/transam/xlog.c:2574 +#: access/transam/xlog.c:4589 commands/copy.c:1329 storage/file/copydir.c:211 #, c-format -msgid "function \"%s\" does not exist" -msgstr "função \"%s\" não existe" +msgid "could not close file \"%s\": %m" +msgstr "não pôde fechar arquivo \"%s\": %m" -#: utils/adt/regproc.c:123 utils/adt/regproc.c:143 +#: access/transam/xlog.c:2515 access/transam/xlog.c:4232 +#: access/transam/xlog.c:4326 access/transam/xlog.c:4482 +#: utils/error/elog.c:1537 utils/init/miscinit.c:1046 +#: utils/init/miscinit.c:1161 storage/file/copydir.c:165 +#: storage/file/copydir.c:255 storage/smgr/md.c:553 storage/smgr/md.c:810 +#: replication/basebackup.c:895 #, c-format -msgid "more than one function named \"%s\"" -msgstr "mais de uma função com nome \"%s\"" +msgid "could not open file \"%s\": %m" +msgstr "não pôde abrir arquivo \"%s\": %m" -#: utils/adt/regproc.c:464 utils/adt/regproc.c:484 utils/adt/regproc.c:643 -#: parser/parse_oper.c:124 parser/parse_oper.c:751 +#: access/transam/xlog.c:2543 access/transam/xlog.c:4494 +#: access/transam/xlog.c:9359 access/transam/xlog.c:9372 +#: access/transam/xlog.c:9906 access/transam/xlog.c:9941 +#: utils/adt/genfile.c:138 storage/file/copydir.c:186 #, c-format -msgid "operator does not exist: %s" -msgstr "operador não existe: %s" +msgid "could not read file \"%s\": %m" +msgstr "não pôde ler arquivo \"%s\": %m" -#: utils/adt/regproc.c:468 utils/adt/regproc.c:488 +#: access/transam/xlog.c:2546 #, c-format -msgid "more than one operator named %s" -msgstr "mais de um operador com nome %s" - -#: utils/adt/regproc.c:630 gram.y:5421 -msgid "missing argument" -msgstr "faltando argumento" +msgid "not enough data in file \"%s\"" +msgstr "dados insuficientes no arquivo \"%s\"" -#: utils/adt/regproc.c:631 gram.y:5422 -msgid "Use NONE to denote the missing argument of a unary operator." -msgstr "Utilize NONE para denotar argumento em falta de um operador unário." +#: access/transam/xlog.c:2665 +#, c-format +msgid "" +"could not link file \"%s\" to \"%s\" (initialization of log file %u, segment " +"%u): %m" +msgstr "" +"não pôde vincular arquivo \"%s\" aa \"%s\" (inicialização do arquivo de log " +"%u, segmento %u): %m" -#: utils/adt/regproc.c:636 -msgid "Provide two argument types for operator." -msgstr "Forneça dois tipos de argumento para operador." +#: access/transam/xlog.c:2677 +#, c-format +msgid "" +"could not rename file \"%s\" to \"%s\" (initialization of log file %u, " +"segment %u): %m" +msgstr "" +"não pôde renomear arquivo \"%s\" para \"%s\" (inicialização do arquivo de " +"log %u, segmento %u): %m" -#: utils/adt/regproc.c:810 parser/parse_relation.c:848 -#: parser/parse_relation.c:856 commands/lockcmds.c:127 catalog/namespace.c:278 +#: access/transam/xlog.c:2860 replication/walreceiver.c:489 #, c-format -msgid "relation \"%s\" does not exist" -msgstr "relação \"%s\" não existe" +msgid "could not close log file %u, segment %u: %m" +msgstr "não pôde fechar arquivo de log %u, segmento %u: %m" -#: utils/adt/regproc.c:973 parser/parse_func.c:1483 parser/parse_type.c:196 -#: commands/tablecmds.c:216 commands/typecmds.c:650 commands/typecmds.c:2572 -#: commands/functioncmds.c:126 +#: access/transam/xlog.c:2932 access/transam/xlog.c:3097 +#: access/transam/xlog.c:9168 access/transam/xlog.c:9347 utils/adt/dbsize.c:65 +#: utils/adt/dbsize.c:211 utils/adt/dbsize.c:279 utils/adt/genfile.c:107 +#: utils/adt/genfile.c:279 storage/file/copydir.c:86 +#: storage/file/copydir.c:125 #, c-format -msgid "type \"%s\" does not exist" -msgstr "tipo \"%s\" não existe" +msgid "could not stat file \"%s\": %m" +msgstr "não pôde executar stat no arquivo \"%s\": %m" -#: utils/adt/regproc.c:1383 -msgid "expected a left parenthesis" -msgstr "parêntese esquerdo esperado" +#: access/transam/xlog.c:2940 access/transam/xlog.c:9377 storage/smgr/md.c:371 +#: storage/smgr/md.c:420 storage/smgr/md.c:1251 +#, c-format +msgid "could not remove file \"%s\": %m" +msgstr "não pôde remover arquivo \"%s\": %m" -#: utils/adt/regproc.c:1399 -msgid "expected a right parenthesis" -msgstr "parêntese direito esperado" +#: access/transam/xlog.c:3076 +#, c-format +msgid "archive file \"%s\" has wrong size: %lu instead of %lu" +msgstr "" +"arquivo do arquivador \"%s\" tem tamanho incorreto: %lu ao invés de %lu" -#: utils/adt/regproc.c:1418 -msgid "expected a type name" -msgstr "nome de tipo esperado" +#: access/transam/xlog.c:3085 +#, c-format +msgid "restored log file \"%s\" from archive" +msgstr "arquivo de log restaurado \"%s\" do arquivador" -#: utils/adt/regproc.c:1450 -msgid "improper type name" -msgstr "nome de tipo inválido" +#: access/transam/xlog.c:3135 +#, 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" -#: utils/adt/acl.c:251 +#. 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:3249 #, c-format -msgid "unrecognized key word: \"%s\"" -msgstr "palavra chave desconhecida: \"%s\"" +msgid "%s \"%s\": return code %d" +msgstr "%s \"%s\": código retornado %d" -#: utils/adt/acl.c:252 -msgid "ACL key word must be \"group\" or \"user\"." -msgstr "palavra chave ACL deve ser \"group\" ou \"user\"." +#: access/transam/xlog.c:3359 access/transam/xlog.c:3542 +#, 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" -#: utils/adt/acl.c:257 -msgid "missing name" -msgstr "faltando nome" +#: access/transam/xlog.c:3413 +#, c-format +msgid "recycled transaction log file \"%s\"" +msgstr "arquivo do log de transação \"%s\" foi reciclado" -#: utils/adt/acl.c:258 -msgid "A name must follow the \"group\" or \"user\" key word." -msgstr "Um nome deve seguir a palavra chave \"group\" ou \"user\"." +#: access/transam/xlog.c:3429 +#, c-format +msgid "removing transaction log file \"%s\"" +msgstr "removendo arquivo do log de transação \"%s\"" -#: utils/adt/acl.c:264 -msgid "missing \"=\" sign" -msgstr "faltando sinal \"=\"" +#: access/transam/xlog.c:3452 +#, 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" -#: utils/adt/acl.c:317 +#: access/transam/xlog.c:3464 #, c-format -msgid "invalid mode character: must be one of \"%s\"" -msgstr "caracter de modo é inválido: deve ser um dos \"%s\"" +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" -#: utils/adt/acl.c:339 -msgid "a name must follow the \"/\" sign" -msgstr "um nome deve seguir o sinal \"/\"" +#: access/transam/xlog.c:3502 access/transam/xlog.c:3512 +#, c-format +msgid "required WAL directory \"%s\" does not exist" +msgstr "diretório WAL requerido \"%s\" não existe" -#: utils/adt/acl.c:347 +#: access/transam/xlog.c:3518 #, c-format -msgid "defaulting grantor to user ID %u" -msgstr "utilizando ID de usuário %u como concedente" +msgid "creating missing WAL directory \"%s\"" +msgstr "criando diretório WAL ausente \"%s\"" -#: utils/adt/acl.c:538 -msgid "ACL array contains wrong data type" -msgstr "matriz ACL contém tipo de dado incorreto" +#: access/transam/xlog.c:3521 +#, c-format +msgid "could not create missing directory \"%s\": %m" +msgstr "não pôde criar diretório ausente \"%s\": %m" -#: utils/adt/acl.c:542 -msgid "ACL arrays must be one-dimensional" -msgstr "matrizes ACL devem ser de uma dimensão" +#: access/transam/xlog.c:3555 +#, c-format +msgid "removing transaction log backup history file \"%s\"" +msgstr "removendo arquivo de histórico do log de transação \"%s\"" -#: utils/adt/acl.c:546 -msgid "ACL arrays must not contain null values" -msgstr "matrizes ACL não devem conter valores nulos" +#: access/transam/xlog.c:3697 +#, c-format +msgid "incorrect hole size in record at %X/%X" +msgstr "tamanho de espaço livre incorreto no registro em %X/%X" -#: utils/adt/acl.c:570 -msgid "extra garbage at the end of the ACL specification" -msgstr "lixo extra ao final da especificação de uma ACL" +#: access/transam/xlog.c:3710 +#, c-format +msgid "incorrect total length in record at %X/%X" +msgstr "tamanho total incorreto no registro em %X/%X" -#: utils/adt/acl.c:1127 -msgid "grant options cannot be granted back to your own grantor" -msgstr "opções de concessão não podem ser concedidos ao próprio concedente" +#: access/transam/xlog.c:3723 +#, 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 %X/%X" -#: utils/adt/acl.c:1188 -msgid "dependent privileges exist" -msgstr "privilégios dependentes existem" +#: access/transam/xlog.c:3801 access/transam/xlog.c:3839 +#, c-format +msgid "invalid record offset at %X/%X" +msgstr "deslocamento de registro inválido em %X/%X" -#: utils/adt/acl.c:1189 -msgid "Use CASCADE to revoke them too." -msgstr "Utilize CASCADE para revogá-los também." +#: access/transam/xlog.c:3847 +#, c-format +msgid "contrecord is requested by %X/%X" +msgstr "contrecord é solicitado por %X/%X" -#: utils/adt/acl.c:1468 -msgid "aclinsert is no longer supported" -msgstr "aclinsert não é mais suportado" +#: access/transam/xlog.c:3862 +#, c-format +msgid "invalid xlog switch record at %X/%X" +msgstr "registro de rotação do xlog é inválido em %X/%X" -#: utils/adt/acl.c:1478 -msgid "aclremove is no longer supported" -msgstr "aclremove não é mais suportado" +#: access/transam/xlog.c:3870 +#, c-format +msgid "record with zero length at %X/%X" +msgstr "registro com tamanho zero em %X/%X" -#: utils/adt/acl.c:1564 utils/adt/acl.c:1618 +#: access/transam/xlog.c:3879 #, c-format -msgid "unrecognized privilege type: \"%s\"" -msgstr "tipo de privilégio desconhecido: \"%s\"" +msgid "invalid record length at %X/%X" +msgstr "tamanho de registro é inválido em %X/%X" -#: utils/adt/acl.c:2006 utils/adt/acl.c:2036 utils/adt/acl.c:2068 -#: utils/adt/acl.c:2100 utils/adt/acl.c:2128 utils/adt/acl.c:2158 -#: commands/tablecmds.c:200 commands/tablecmds.c:2146 -#: commands/tablecmds.c:2365 commands/tablecmds.c:7793 commands/comment.c:566 -#: commands/sequence.c:953 catalog/aclchk.c:1729 +#: access/transam/xlog.c:3886 #, c-format -msgid "\"%s\" is not a sequence" -msgstr "\"%s\" não é uma sequência" +msgid "invalid resource manager ID %u at %X/%X" +msgstr "ID do gerenciador de recursos %u é inválido em %X/%X" -#: utils/adt/acl.c:3562 commands/proclang.c:531 commands/proclang.c:600 -#: commands/proclang.c:640 commands/comment.c:1220 commands/functioncmds.c:836 -#: commands/functioncmds.c:1990 catalog/aclchk.c:640 +#: access/transam/xlog.c:3899 access/transam/xlog.c:3915 #, c-format -msgid "language \"%s\" does not exist" -msgstr "linguagem \"%s\" não existe" +msgid "record with incorrect prev-link %X/%X at %X/%X" +msgstr "registro com prev-link %X/%X incorreto em %X/%X" -#: utils/adt/acl.c:3760 commands/comment.c:806 commands/schemacmds.c:190 -#: commands/schemacmds.c:264 commands/schemacmds.c:335 catalog/aclchk.c:673 -#: catalog/aclchk.c:1051 catalog/namespace.c:340 catalog/namespace.c:2307 -#: catalog/namespace.c:2346 catalog/namespace.c:2393 catalog/namespace.c:3320 +#: access/transam/xlog.c:3944 #, c-format -msgid "schema \"%s\" does not exist" -msgstr "esquema \"%s\" não existe" +msgid "record length %u at %X/%X too long" +msgstr "tamanho do registro %u em %X/%X é muito longo" -#: utils/adt/acl.c:4635 +#: access/transam/xlog.c:3984 #, c-format -msgid "must be member of role \"%s\"" -msgstr "deve ser membro da role \"%s\"" +msgid "there is no contrecord flag in log file %u, segment %u, offset %u" +msgstr "" +"não há marcação em contrecord no arquivo de log %u, segmento %u, " +"deslocamento %u" -#: utils/adt/misc.c:80 -msgid "must be superuser to signal other server processes" -msgstr "deve ser super-usuário para sinalizar outros processos servidor" +#: access/transam/xlog.c:3994 +#, c-format +msgid "invalid contrecord length %u in log file %u, segment %u, offset %u" +msgstr "" +"tamanho de contrecord %u é inválido no arquivo de log %u, segmento %u, " +"deslocamento %u" -#: utils/adt/misc.c:89 +#: access/transam/xlog.c:4084 #, c-format -msgid "PID %d is not a PostgreSQL server process" -msgstr "PID %d não é um processo servidor do PostgreSQL" +msgid "invalid magic number %04X in log file %u, segment %u, offset %u" +msgstr "" +"número mágico %04X é invalido no arquivo de log %u, segmento %u, " +"deslocamento %u" -#: utils/adt/misc.c:102 storage/lmgr/proc.c:1006 +#: access/transam/xlog.c:4091 access/transam/xlog.c:4137 #, c-format -msgid "could not send signal to process %d: %m" -msgstr "não pôde enviar sinal para processo %d: %m" +msgid "invalid info bits %04X in log file %u, segment %u, offset %u" +msgstr "" +"bits de informação %04X são inválidos no arquivo de log %u, segmento %u, " +"deslocamento %u" -#: utils/adt/misc.c:126 -msgid "must be superuser to signal the postmaster" -msgstr "deve ser super-usuário para sinalizar o postmaster" +#: access/transam/xlog.c:4113 access/transam/xlog.c:4121 +#: access/transam/xlog.c:4128 +msgid "WAL file is from different database system" +msgstr "arquivo do WAL é de um sistema de banco de dados diferente" -#: utils/adt/misc.c:131 +#: access/transam/xlog.c:4114 #, c-format -msgid "failed to send signal to postmaster: %m" -msgstr "falhou ao enviar sinal para postmaster: %m" +msgid "" +"WAL file database system identifier is %s, pg_control database system " +"identifier is %s." +msgstr "" +"identificador do sistema de banco de dados no arquivo do WAL é %s, " +"identificador do sistema de banco de dados no pg_control é %s." -#: utils/adt/misc.c:148 -msgid "must be superuser to rotate log files" -msgstr "deve ser super-usuário para rotacionar arquivos de log" +#: access/transam/xlog.c:4122 +msgid "Incorrect XLOG_SEG_SIZE in page header." +msgstr "XLOG_SEG_SIZE está incorreto no cabeçalho da página." -#: utils/adt/misc.c:153 -msgid "rotation not possible because log collection not active" -msgstr "rotação não é possível porque coleta de log não está ativa" +#: access/transam/xlog.c:4129 +msgid "Incorrect XLOG_BLCKSZ in page header." +msgstr "XLOG_BLCKSZ está incorreto no cabeçalho da página." -#: utils/adt/misc.c:195 -msgid "global tablespace never has databases" -msgstr "tablespace global nunca teve bancos de dados" +#: access/transam/xlog.c:4145 +#, c-format +msgid "unexpected pageaddr %X/%X in log file %u, segment %u, offset %u" +msgstr "" +"pageaddr %X/%X inesperado no arquivo de log %u, segmento %u, deslocalemto %u" -#: utils/adt/misc.c:216 +#: access/transam/xlog.c:4157 #, c-format -msgid "%u is not a tablespace OID" -msgstr "%u não é um OID de tablespace" +msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u" +msgstr "" +"ID de linha do tempo %u inesperado no arquivo de log %u, segmento %u, " +"deslocalemto %u" -#: utils/adt/misc.c:352 -msgid "unreserved" -msgstr "sem reserva" - -#: utils/adt/misc.c:356 -msgid "unreserved (cannot be function or type name)" -msgstr "sem reserva (não pode ser nome de função ou tipo)" +#: access/transam/xlog.c:4184 +#, c-format +msgid "" +"out-of-sequence timeline ID %u (after %u) in log file %u, segment %u, offset " +"%u" +msgstr "" +"ID de linha do tempo %u fora de sequência (depois %u) no arquivo de log %u, " +"segmento %u, deslocamento %u" -#: utils/adt/misc.c:360 -msgid "reserved (can be function or type name)" -msgstr "reservado (pode ser nome de função ou tipo)" +#: access/transam/xlog.c:4261 +#, c-format +msgid "syntax error in history file: %s" +msgstr "erro de sintaxe no arquivo de histórico: %s" -#: utils/adt/misc.c:364 -msgid "reserved" -msgstr "reservado" +#: access/transam/xlog.c:4262 +msgid "Expected a numeric timeline ID." +msgstr "Esperado um ID de linha do tempo numérico." -#: utils/adt/nabstime.c:160 +#: access/transam/xlog.c:4267 #, c-format -msgid "invalid time zone name: \"%s\"" -msgstr "nome de zona horária é inválido: \"%s\"" +msgid "invalid data in history file: %s" +msgstr "dado inválido no arquivo de histórico: %s" -#: utils/adt/nabstime.c:506 utils/adt/nabstime.c:579 -msgid "cannot convert abstime \"invalid\" to timestamp" -msgstr "não pode converter abstime \"invalid\" para timestamp" +#: access/transam/xlog.c:4268 +msgid "Timeline IDs must be in increasing sequence." +msgstr "IDs de linha do tempo devem ser uma sequência crescente." -#: utils/adt/nabstime.c:806 -msgid "invalid status in external \"tinterval\" value" -msgstr "status inválido no valor de \"tinterval\" externo" +#: access/transam/xlog.c:4281 +#, c-format +msgid "invalid data in history file \"%s\"" +msgstr "dado inválido no arquivo de histórico \"%s\"" -#: utils/adt/nabstime.c:880 -msgid "cannot convert reltime \"invalid\" to interval" -msgstr "não pode converter reltime \"invalid\" em interval" +#: access/transam/xlog.c:4282 +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." -#: utils/adt/nabstime.c:1562 +#: access/transam/xlog.c:4368 #, c-format -msgid "invalid input syntax for type tinterval: \"%s\"" -msgstr "sintaxe de entrada é inválida para tipo tinterval: \"%s\"" +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" -#: utils/adt/numeric.c:352 utils/adt/numeric.c:379 utils/adt/numeric.c:3083 -#: utils/adt/numeric.c:3106 utils/adt/numeric.c:3130 utils/adt/numeric.c:3137 +#: access/transam/xlog.c:4381 #, c-format -msgid "invalid input syntax for type numeric: \"%s\"" -msgstr "sintaxe de entrada é inválida para tipo numeric: \"%s\"" +msgid "new target timeline is %u" +msgstr "nova linha do tempo é %u" -#: utils/adt/numeric.c:482 -msgid "invalid length in external \"numeric\" value" -msgstr "tamanho inválido no valor de \"numeric\" externo" +#: access/transam/xlog.c:4606 +#, c-format +msgid "could not link file \"%s\" to \"%s\": %m" +msgstr "não pôde vincular arquivo \"%s\" a \"%s\": %m" -#: utils/adt/numeric.c:493 -msgid "invalid sign in external \"numeric\" value" -msgstr "sinal inválido no valor de \"numeric\" externo" +#: access/transam/xlog.c:4613 access/transam/xlog.c:5573 +#: access/transam/xlog.c:5626 access/transam/xlog.c:6421 +#: postmaster/pgarch.c:715 +#, c-format +msgid "could not rename file \"%s\" to \"%s\": %m" +msgstr "não pôde renomear arquivo \"%s\" para \"%s\": %m" -#: utils/adt/numeric.c:503 -msgid "invalid digit in external \"numeric\" value" -msgstr "dígito inválido no valor de \"numeric\" externo" +#: access/transam/xlog.c:4695 +#, c-format +msgid "could not create control file \"%s\": %m" +msgstr "não pôde criar arquivo de controle \"%s\": %m" -#: utils/adt/numeric.c:634 utils/adt/numeric.c:648 +#: access/transam/xlog.c:4706 access/transam/xlog.c:4931 #, c-format -msgid "NUMERIC precision %d must be between 1 and %d" -msgstr "precisão do NUMERIC %d deve ser entre 1 e %d" +msgid "could not write to control file: %m" +msgstr "não pôde escrever em arquivo de controle: %m" -#: utils/adt/numeric.c:639 +#: access/transam/xlog.c:4712 access/transam/xlog.c:4937 #, 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" +msgid "could not fsync control file: %m" +msgstr "não pôde executar fsync no arquivo de controle: %m" -#: utils/adt/numeric.c:657 -msgid "invalid NUMERIC type modifier" -msgstr "modificador de tipo NUMERIC é inválido" +#: access/transam/xlog.c:4717 access/transam/xlog.c:4942 +#, c-format +msgid "could not close control file: %m" +msgstr "não pôde fechar arquivo de controle: %m" -#: utils/adt/numeric.c:1690 utils/adt/numeric.c:3545 -msgid "value overflows numeric format" -msgstr "valor excede formato numeric" +#: access/transam/xlog.c:4735 access/transam/xlog.c:4920 +#, c-format +msgid "could not open control file \"%s\": %m" +msgstr "não pôde abrir arquivo de controle \"%s\": %m" -#: utils/adt/numeric.c:2038 -msgid "cannot convert NaN to integer" -msgstr "não pode converter NaN para inteiro" +#: access/transam/xlog.c:4741 +#, c-format +msgid "could not read from control file: %m" +msgstr "não pôde ler do arquivo de controle: %m" -#: utils/adt/numeric.c:2106 -msgid "cannot convert NaN to bigint" -msgstr "não pode converter NaN para bigint" +#: access/transam/xlog.c:4754 access/transam/xlog.c:4763 +#: access/transam/xlog.c:4787 access/transam/xlog.c:4794 +#: access/transam/xlog.c:4801 access/transam/xlog.c:4806 +#: access/transam/xlog.c:4813 access/transam/xlog.c:4820 +#: access/transam/xlog.c:4827 access/transam/xlog.c:4834 +#: access/transam/xlog.c:4841 access/transam/xlog.c:4848 +#: access/transam/xlog.c:4857 access/transam/xlog.c:4864 +#: access/transam/xlog.c:4873 access/transam/xlog.c:4880 +#: access/transam/xlog.c:4889 access/transam/xlog.c:4896 +#: utils/init/miscinit.c:1179 +msgid "database files are incompatible with server" +msgstr "arquivos do banco de dados são incompatíveis com o servidor" -#: utils/adt/numeric.c:2154 -msgid "cannot convert NaN to smallint" -msgstr "não pode converter NaN para smallint" +#: access/transam/xlog.c:4755 +#, 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)." -#: utils/adt/numeric.c:3615 -msgid "numeric field overflow" -msgstr "estouro de campo numeric" +#: access/transam/xlog.c:4759 +msgid "" +"This could be a problem of mismatched byte ordering. It looks like you need " +"to initdb." +msgstr "" +"Isto pode ser um problema de incompatibilidade na ordenação dos bits. Parece " +"que você precisa executar o initdb." -#: utils/adt/numeric.c:3616 +#: access/transam/xlog.c:4764 #, c-format msgid "" -"A field with precision %d, scale %d must round to an absolute value less " -"than %s%d." +"The database cluster was initialized with PG_CONTROL_VERSION %d, but the " +"server was compiled with PG_CONTROL_VERSION %d." msgstr "" -"Um campo com precisão %d, escala %d deve arredondar para um valor absoluto " -"menor do que %s%d." +"O agrupamento de banco de dados foi inicializado com PG_CONTROL_VERSION %d, " +"mas o servidor foi compilado com PG_CONTROL_VERSION %d." -#: utils/adt/numeric.c:5064 -msgid "argument for function \"exp\" too big" -msgstr "argumento para função \"exp\" é muito grande" +#: access/transam/xlog.c:4767 access/transam/xlog.c:4791 +#: access/transam/xlog.c:4798 access/transam/xlog.c:4803 +msgid "It looks like you need to initdb." +msgstr "Parece que você precisa executar o initdb." -#: utils/adt/tsvector_parser.c:137 -#, c-format -msgid "syntax error in tsvector: \"%s\"" -msgstr "erro de sintaxe em tsvector: \"%s\"" +#: access/transam/xlog.c:4778 +msgid "incorrect checksum in control file" +msgstr "soma de verificação está incorreta em arquivo de controle" -#: utils/adt/tsvector_parser.c:202 +#: access/transam/xlog.c:4788 #, c-format -msgid "there is no escaped character: \"%s\"" -msgstr "não há caracter com escape: \"%s\"" +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." -#: utils/adt/tsvector_parser.c:319 +#: access/transam/xlog.c:4795 #, c-format -msgid "wrong position info in tsvector: \"%s\"" -msgstr "informação incorreta sobre posição no tsvector: \"%s\"" - -#: utils/adt/windowfuncs.c:243 -msgid "argument of ntile must be greater than zero" -msgstr "argumento de ntile deve ser maior do que zero" - -#: utils/adt/windowfuncs.c:465 -msgid "argument of nth_value must be greater than zero" -msgstr "argumento de nth_value deve ser maior do que zero" - -#: utils/adt/trigfuncs.c:41 -msgid "suppress_redundant_updates_trigger: must be called as trigger" -msgstr "suppress_redundant_updates_trigger: deve ser chamado com gatilho" - -#: utils/adt/trigfuncs.c:47 -msgid "suppress_redundant_updates_trigger: must be called on update" +msgid "" +"The database cluster was initialized with MAXALIGN %d, but the server was " +"compiled with MAXALIGN %d." msgstr "" -"suppress_redundant_updates_trigger: deve ser chamado durante atualização" +"O agrupamento de banco de dados foi inicializado com MAXALIGN %d, mas o " +"servidor foi compilado com MAXALIGN %d." -#: utils/adt/trigfuncs.c:53 -msgid "suppress_redundant_updates_trigger: must be called before update" +#: access/transam/xlog.c:4802 +msgid "" +"The database cluster appears to use a different floating-point number format " +"than the server executable." msgstr "" -"suppress_redundant_updates_trigger: deve ser chamado antes da atualização" +"O agrupamento de banco de dados parece utilizar um formato de número de " +"ponto flutuante diferente do executável do servidor." -#: utils/adt/trigfuncs.c:59 -msgid "suppress_redundant_updates_trigger: must be called for each row" +#: access/transam/xlog.c:4807 +#, c-format +msgid "" +"The database cluster was initialized with BLCKSZ %d, but the server was " +"compiled with BLCKSZ %d." msgstr "" -"suppress_redundant_updates_trigger: deve ser chamado para cada registro" - -#: utils/adt/char.c:169 -msgid "\"char\" out of range" -msgstr "\"char\" fora do intervalo" +"O agrupamento de banco de dados foi inicializado com BLCSZ %d, mas o " +"servidor foi compilado com BLCSZ %d." -#: utils/fmgr/dfmgr.c:125 -#, c-format -msgid "could not find function \"%s\" in file \"%s\"" -msgstr "não pôde encontrar função \"%s\" no arquivo \"%s\"" +#: access/transam/xlog.c:4810 access/transam/xlog.c:4817 +#: access/transam/xlog.c:4824 access/transam/xlog.c:4831 +#: access/transam/xlog.c:4838 access/transam/xlog.c:4845 +#: access/transam/xlog.c:4852 access/transam/xlog.c:4860 +#: access/transam/xlog.c:4867 access/transam/xlog.c:4876 +#: access/transam/xlog.c:4883 access/transam/xlog.c:4892 +#: access/transam/xlog.c:4899 +msgid "It looks like you need to recompile or initdb." +msgstr "Parece que você precisa recompilar ou executar o initdb." -#: utils/fmgr/dfmgr.c:204 utils/fmgr/dfmgr.c:413 utils/fmgr/dfmgr.c:461 +#: access/transam/xlog.c:4814 #, c-format -msgid "could not access file \"%s\": %m" -msgstr "não pôde acessar arquivo \"%s\": %m" +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." -#: utils/fmgr/dfmgr.c:242 +#: access/transam/xlog.c:4821 #, c-format -msgid "could not load library \"%s\": %s" -msgstr "não pôde carregar biblioteca \"%s\": %s" +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." -#: utils/fmgr/dfmgr.c:274 +#: access/transam/xlog.c:4828 #, c-format -msgid "incompatible library \"%s\": missing magic block" -msgstr "biblioteca \"%s\" é incompatível: faltando bloco mágico" - -#: utils/fmgr/dfmgr.c:276 -msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro." +msgid "" +"The database cluster was initialized with XLOG_SEG_SIZE %d, but the server " +"was compiled with XLOG_SEG_SIZE %d." msgstr "" -"Bibliotecas de extensões são obrigadas a utilizar o macro PG_MODULE_MAGIC." +"O agrupamento de banco de dados foi inicializado com XLOG_SEG_SIZE %d, mas o " +"servidor foi compilado com XLOG_SEG_SIZE %d." -#: utils/fmgr/dfmgr.c:312 +#: access/transam/xlog.c:4835 #, c-format -msgid "incompatible library \"%s\": version mismatch" -msgstr "biblioteca \"%s\" é incompatível: versão não corresponde" +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." -#: utils/fmgr/dfmgr.c:314 +#: access/transam/xlog.c:4842 #, c-format -msgid "Server is version %d.%d, library is version %d.%d." -msgstr "Servidor tem versão %d,%d, biblioteca tem versão %d.%d." +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." -#: utils/fmgr/dfmgr.c:333 +#: access/transam/xlog.c:4849 #, c-format -msgid "Server has FUNC_MAX_ARGS = %d, library has %d." -msgstr "Servidor tem FUNC_MAX_ARGS = %d, biblioteca tem %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 "" +"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." -#: utils/fmgr/dfmgr.c:342 -#, c-format -msgid "Server has INDEX_MAX_KEYS = %d, library has %d." -msgstr "Servidor tem INDEX_MAX_KEYS = %d, biblioteca tem %d." +#: access/transam/xlog.c:4858 +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." -#: utils/fmgr/dfmgr.c:351 -#, c-format -msgid "Server has NAMEDATALEN = %d, library has %d." -msgstr "Servidor tem NAMEDATALEN = %d, biblioteca tem %d." +#: access/transam/xlog.c:4865 +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." -#: utils/fmgr/dfmgr.c:360 -#, c-format -msgid "Server has FLOAT4PASSBYVAL = %s, library has %s." -msgstr "Servidor tem FLOAT4PASSBYVAL = %s, biblioteca tem %s." +#: access/transam/xlog.c:4874 +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." -#: utils/fmgr/dfmgr.c:369 -#, c-format -msgid "Server has FLOAT8PASSBYVAL = %s, library has %s." -msgstr "Servidor tem FLOAT8PASSBYVAL = %s, biblioteca tem %s." +#: access/transam/xlog.c:4881 +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." -#: utils/fmgr/dfmgr.c:376 -msgid "Magic block has unexpected length or padding difference." -msgstr "Bloco mágico tem tamanho inesperado ou diferença no enchimento." +#: access/transam/xlog.c:4890 +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." -#: utils/fmgr/dfmgr.c:379 +#: access/transam/xlog.c:4897 +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:5222 #, c-format -msgid "incompatible library \"%s\": magic block mismatch" -msgstr "biblioteca \"%s\" é incompatível: bloco mágico não corresponde" +msgid "could not write bootstrap transaction log file: %m" +msgstr "não pôde escrever no arquivo inicial de log de transação: %m" -#: utils/fmgr/dfmgr.c:545 +#: access/transam/xlog.c:5228 #, c-format -msgid "access to library \"%s\" is not allowed" -msgstr "acesso a biblioteca \"%s\" não é permitido" +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" -#: utils/fmgr/dfmgr.c:572 +#: access/transam/xlog.c:5233 #, c-format -msgid "invalid macro name in dynamic library path: %s" -msgstr "nome de macro é inválido no caminho de biblioteca dinâmica: %s" +msgid "could not close bootstrap transaction log file: %m" +msgstr "não pôde fechar arquivo inicial de log de transação: %m" -#: utils/fmgr/dfmgr.c:617 -msgid "zero-length component in parameter \"dynamic_library_path\"" -msgstr "componente de tamanho zero no parâmetro \"dynamic_library_path\"" +#: access/transam/xlog.c:5300 +#, 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" -#: utils/fmgr/dfmgr.c:636 -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" +#: access/transam/xlog.c:5338 access/transam/xlog.c:5429 +#: access/transam/xlog.c:5440 commands/extension.c:527 +#: commands/extension.c:535 utils/misc/guc.c:5309 +#, c-format +msgid "parameter \"%s\" requires a Boolean value" +msgstr "parâmetro \"%s\" requer um valor booleano" -#: utils/fmgr/fmgr.c:264 +#: access/transam/xlog.c:5354 #, c-format -msgid "internal function \"%s\" is not in internal lookup table" -msgstr "função interna \"%s\" não está na tabela de busca interna" +msgid "recovery_target_timeline is not a valid number: \"%s\"" +msgstr "recovery_target_timeline não é um número válido: \"%s\"" -#: utils/fmgr/fmgr.c:468 +#: access/transam/xlog.c:5370 #, c-format -msgid "unrecognized API version %d reported by info function \"%s\"" -msgstr "versão %d de API informada pela função \"%s\" é desconhecida" +msgid "recovery_target_xid is not a valid number: \"%s\"" +msgstr "recovery_target_xid não é um número válido: \"%s\"" -#: utils/fmgr/fmgr.c:839 utils/fmgr/fmgr.c:2071 +#: access/transam/xlog.c:5414 #, c-format -msgid "function %u has too many arguments (%d, maximum is %d)" -msgstr "função %u tem muitos argumentos (%d, máximo é %d)" +msgid "recovery_target_name is too long (maximum %d characters)" +msgstr "recovery_target_name é muito longo (no máximo %d caracteres)" -#: utils/fmgr/funcapi.c:354 +#: access/transam/xlog.c:5461 +#, c-format +msgid "unrecognized recovery parameter \"%s\"" +msgstr "parâmetro de recuperação \"%s\" desconhecido" + +#: access/transam/xlog.c:5472 #, c-format msgid "" -"could not determine actual result type for function \"%s\" declared to " -"return type %s" +"recovery command file \"%s\" specified neither primary_conninfo nor " +"restore_command" msgstr "" -"não pôde determinar tipo de resultado para função \"%s\" declarada para " -"retornar tipo %s" - -#: utils/fmgr/funcapi.c:1187 utils/fmgr/funcapi.c:1218 -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:1212 -msgid "no column alias was provided" -msgstr "nenhum aliás de coluna foi fornecido" +"arquivo de comando de recuperação \"%s\" não especificou primary_conninfo ou " +"restore_command" -#: utils/fmgr/funcapi.c:1236 -msgid "could not determine row description for function returning record" +#: access/transam/xlog.c:5474 +msgid "" +"The database server will regularly poll the pg_xlog subdirectory to check " +"for files placed there." msgstr "" -"não pôde determinar descrição de registro para função que retorna record" +"O servidor de banco de dados acessará regularmente o subdiretório pg_xlog " +"para verificar por arquivos ali presentes." -#: utils/init/postinit.c:197 postmaster/postmaster.c:1074 -msgid "could not load pg_hba.conf" -msgstr "não pôde carregar pg_hba.conf" - -#: utils/init/postinit.c:229 +#: access/transam/xlog.c:5480 #, c-format -msgid "replication connection authorized: user=%s host=%s port=%s" -msgstr "conexão para replicação autorizada: usuário=%s máquina=%s porta=%s" +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" -#: utils/init/postinit.c:235 +#: access/transam/xlog.c:5500 #, c-format -msgid "replication connection authorized: user=%s host=%s" -msgstr "conexão para replicação autorizada: usuário=%s máquina=%s" +msgid "recovery target timeline %u does not exist" +msgstr "linha do tempo para recuperação %u não existe" -#: utils/init/postinit.c:241 +#: access/transam/xlog.c:5630 +msgid "archive recovery complete" +msgstr "recuperação do archive está completa" + +#: access/transam/xlog.c:5748 #, c-format -msgid "connection authorized: user=%s database=%s" -msgstr "conexão autorizada: usuário=%s banco de dados=%s" +msgid "recovery stopping after commit of transaction %u, time %s" +msgstr "recuperação parada após efetivação da transação %u, tempo %s" -#: utils/init/postinit.c:271 +#: access/transam/xlog.c:5753 #, c-format -msgid "database \"%s\" has disappeared from pg_database" -msgstr "banco de dados \"%s\" desapareceu de pg_database" +msgid "recovery stopping before commit of transaction %u, time %s" +msgstr "recuperação parada antes da efetivação da transação %u, tempo %s" -#: utils/init/postinit.c:273 +#: access/transam/xlog.c:5761 #, c-format -msgid "Database OID %u now seems to belong to \"%s\"." -msgstr "Banco de dados com OID %u parece pertencer a \"%s\"." +msgid "recovery stopping after abort of transaction %u, time %s" +msgstr "recuperação parada após interrupção da transação %u, tempo %s" -#: utils/init/postinit.c:293 +#: access/transam/xlog.c:5766 #, c-format -msgid "database \"%s\" is not currently accepting connections" -msgstr "banco de dados \"%s\" não está aceitando conexões" +msgid "recovery stopping before abort of transaction %u, time %s" +msgstr "recuperação parada antes interrupção da transação %u, tempo %s" -#: utils/init/postinit.c:306 +#: access/transam/xlog.c:5775 #, c-format -msgid "permission denied for database \"%s\"" -msgstr "permissão negada para banco de dados \"%s\"" +msgid "recovery stopping at restore point \"%s\", time %s" +msgstr "recuperação parada no ponto de restauração \"%s\", tempo %s" -#: utils/init/postinit.c:307 -msgid "User does not have CONNECT privilege." -msgstr "Usuário não tem privilégio CONNECT." +#: access/transam/xlog.c:5809 +msgid "recovery has paused" +msgstr "recuperação está em pausa" -#: utils/init/postinit.c:324 -#, c-format -msgid "too many connections for database \"%s\"" -msgstr "muitas conexões para banco de dados \"%s\"" +#: access/transam/xlog.c:5810 +msgid "Execute pg_xlog_replay_resume() to continue." +msgstr "Execute pg_xlog_replay_resume() para continuar." -#: utils/init/postinit.c:346 utils/init/postinit.c:353 -msgid "database locale is incompatible with operating system" +#: access/transam/xlog.c:5853 access/transam/xlog.c:5875 +#: access/transam/xlog.c:5897 +msgid "must be superuser to control recovery" +msgstr "deve ser super-usuário para controlar recuperação" + +#: access/transam/xlog.c:5858 access/transam/xlog.c:5880 +#: access/transam/xlog.c:5902 +msgid "recovery is not in progress" +msgstr "recuperação não está em andamento" + +#: access/transam/xlog.c:5859 access/transam/xlog.c:5881 +#: access/transam/xlog.c:5903 +msgid "Recovery control functions can only be executed during recovery." msgstr "" -"configuração regional do banco de dados é incompatível com o sistema " -"operacional" +"Funções de controle de recuperação só podem ser executadas durante " +"recuperação." -#: utils/init/postinit.c:347 +#: access/transam/xlog.c:5996 #, c-format msgid "" -"The database was initialized with LC_COLLATE \"%s\", which is not " -"recognized by setlocale()." +"hot standby is not possible because %s = %d is a lower setting than on the " +"master server (its value was %d)" msgstr "" -"O banco de dados foi inicializado com LC_COLLATE \"%s\", que não é " -"reconhecido pelo setlocale()." +"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:6018 +msgid "WAL was generated with wal_level=minimal, data may be missing" +msgstr "WAL foi gerado com wal_level=minimal, dados podem estar faltando" -#: utils/init/postinit.c:349 utils/init/postinit.c:356 +#: access/transam/xlog.c:6019 msgid "" -"Recreate the database with another locale or install the missing locale." +"This happens if you temporarily set wal_level=minimal without taking a new " +"base backup." msgstr "" -"Recrie o banco de dados com outra configuração regional ou instale a " -"configuração regional que falta." +"Isso acontece se você temporariamente definir wal_level=minimal sem realizar " +"uma nova cópia de segurança base." -#: utils/init/postinit.c:354 -#, c-format +#: access/transam/xlog.c:6030 msgid "" -"The database was initialized with LC_CTYPE \"%s\", which is not recognized " -"by setlocale()." +"hot standby is not possible because wal_level was not set to \"hot_standby\" " +"on the master server" msgstr "" -"O banco de dados foi inicializado com LC_CTYPE \"%s\", que não é reconhecido " -"pelo setlocale()." +"servidor em espera ativo não é possível porque wal_level não foi definido " +"para \"hot_standby\" no servidor principal" -#: utils/init/postinit.c:608 -msgid "no roles are defined in this database system" -msgstr "nenhuma role está definida nesse sistema de banco de dados" +#: access/transam/xlog.c:6031 +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." -#: utils/init/postinit.c:609 +#: access/transam/xlog.c:6079 +msgid "control file contains invalid data" +msgstr "arquivo de controle contém dados inválidos" + +#: access/transam/xlog.c:6083 #, c-format -msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;." -msgstr "Você deve executar imediatamente CREATE USER \"%s\" SUPERUSER;." +msgid "database system was shut down at %s" +msgstr "sistema de banco de dados foi desligado em %s" -#: utils/init/postinit.c:632 -msgid "new replication connections are not allowed during database shutdown" +#: access/transam/xlog.c:6087 +#, 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:6091 +#, c-format +msgid "database system shutdown was interrupted; last known up at %s" msgstr "" -"novas conexões para replicaão não são permitidas durante desligamento de " -"banco de dados" +"desligamento do sistema de banco de dados foi interrompido; última execução " +"em %s" -#: utils/init/postinit.c:636 -msgid "must be superuser to connect during database shutdown" +#: access/transam/xlog.c:6095 +#, c-format +msgid "database system was interrupted while in recovery at %s" msgstr "" -"deve ser super-usuário para se conectar durante desligamento de banco de " -"dados" +"sistema de banco de dados foi interrompido enquanto estava sendo recuperado " +"em %s" -#: utils/init/postinit.c:650 -#, fuzzy +#: access/transam/xlog.c:6097 msgid "" -"remaining connection slots are reserved for non-replication superuser " -"connections" +"This probably means that some data is corrupted and you will have to use the " +"last backup for recovery." 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:665 -msgid "must be superuser to start walsender" -msgstr "deve ser super-usuário para iniciar walsender" +"Isso provavelmente significa que algum dado foi corrompido e você terá que " +"utilizar o último backup para recuperação." -#: utils/init/postinit.c:725 +#: access/transam/xlog.c:6101 #, c-format -msgid "database %u does not exist" -msgstr "banco de dados %u não existe" +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" -#: utils/init/postinit.c:777 -msgid "It seems to have just been dropped or renamed." -msgstr "Parece ter sido removido ou renomeado." +#: access/transam/xlog.c:6103 +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." -#: utils/init/postinit.c:795 +#: access/transam/xlog.c:6107 #, c-format -msgid "The database subdirectory \"%s\" is missing." -msgstr "O subdiretório do banco de dados \"%s\" não foi encontrado." +msgid "database system was interrupted; last known up at %s" +msgstr "sistema de banco de dados foi interrompido; última execução em %s" -#: utils/init/postinit.c:800 +#: access/transam/xlog.c:6156 #, c-format -msgid "could not access directory \"%s\": %m" -msgstr "não pôde acessar diretório \"%s\": %m" +msgid "requested timeline %u is not a child of database system timeline %u" +msgstr "" +"linha do tempo solicitada %u não é descendente da linha do tempo %u do " +"sistema de banco de dados" -#: utils/init/miscinit.c:114 -#, c-format -msgid "could not change directory to \"%s\": %m" -msgstr "não pôde mudar diretório para \"%s\": %m" +#: access/transam/xlog.c:6174 +msgid "entering standby mode" +msgstr "entrando no modo em espera" -#: utils/init/miscinit.c:380 utils/misc/guc.c:4846 +#: access/transam/xlog.c:6177 #, c-format -msgid "cannot set parameter \"%s\" within security-restricted operation" -msgstr "" -"não pode definir parâmetro \"%s\" em operação com restrição de segurança" +msgid "starting point-in-time recovery to XID %u" +msgstr "iniciando recuperação de ponto no tempo para XID %u" -#: utils/init/miscinit.c:413 utils/cache/lsyscache.c:2669 commands/user.c:579 -#: commands/user.c:767 commands/user.c:851 commands/user.c:1002 -#: commands/variable.c:735 commands/variable.c:845 +#: access/transam/xlog.c:6181 #, c-format -msgid "role \"%s\" does not exist" -msgstr "role \"%s\" não existe" +msgid "starting point-in-time recovery to %s" +msgstr "iniciando recuperação de ponto no tempo para %s" -#: utils/init/miscinit.c:441 +#: access/transam/xlog.c:6185 #, c-format -msgid "role \"%s\" is not permitted to log in" -msgstr "role \"%s\" não tem permissão para entrar" +msgid "starting point-in-time recovery to \"%s\"" +msgstr "iniciando recuperação de ponto no tempo para \"%s\"" -#: utils/init/miscinit.c:459 -#, c-format -msgid "too many connections for role \"%s\"" -msgstr "muitas conexões para role \"%s\"" - -#: utils/init/miscinit.c:519 -msgid "permission denied to set session authorization" -msgstr "permissão negada ao definir autorização de sessão" +#: access/transam/xlog.c:6189 +msgid "starting archive recovery" +msgstr "iniciando recuperação do arquivador" -#: utils/init/miscinit.c:599 +#: access/transam/xlog.c:6211 access/transam/xlog.c:6251 #, c-format -msgid "invalid role OID: %u" -msgstr "OID de role é inválido: %u" +msgid "checkpoint record is at %X/%X" +msgstr "registro do ponto de controle está em %X/%X" -#: utils/init/miscinit.c:731 -#, c-format -msgid "could not create lock file \"%s\": %m" -msgstr "não pôde criar arquivo de bloqueio \"%s\": %m" +#: access/transam/xlog.c:6225 +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" -#: utils/init/miscinit.c:745 +#: access/transam/xlog.c:6226 access/transam/xlog.c:6233 #, c-format -msgid "could not open lock file \"%s\": %m" -msgstr "não pôde abrir arquivo de bloqueio \"%s\": %m" +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\"." -#: utils/init/miscinit.c:751 -#, c-format -msgid "could not read lock file \"%s\": %m" -msgstr "não pôde ler arquivo de bloqueio \"%s\": %m" +#: access/transam/xlog.c:6232 +msgid "could not locate required checkpoint record" +msgstr "não pôde localizar registro do ponto de controle requerido" -#: utils/init/miscinit.c:799 -#, c-format -msgid "lock file \"%s\" already exists" -msgstr "arquivo de bloqueio \"%s\" já existe" +#: access/transam/xlog.c:6261 access/transam/xlog.c:6276 +msgid "could not locate a valid checkpoint record" +msgstr "não pôde localizar registro do ponto de controle válido" -#: utils/init/miscinit.c:803 +#: access/transam/xlog.c:6270 #, 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\"?" +msgid "using previous checkpoint record at %X/%X" +msgstr "utilizando registro do ponto de controle anterior em %X/%X" -#: utils/init/miscinit.c:805 +#: access/transam/xlog.c:6285 #, 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\"?" +msgid "redo record is at %X/%X; shutdown %s" +msgstr "registro de redo está em %X/%X; desligamento %s" -#: utils/init/miscinit.c:808 +#: access/transam/xlog.c:6289 #, c-format -msgid "Is another postgres (PID %d) using socket file \"%s\"?" -msgstr "Outro postgres (PID %d) está utilizando arquivo de soquete \"%s\"?" +msgid "next transaction ID: %u/%u; next OID: %u" +msgstr "próximo ID de transação: %u/%u; próximo OID: %u" -#: utils/init/miscinit.c:810 +#: access/transam/xlog.c:6293 #, c-format -msgid "Is another postmaster (PID %d) using socket file \"%s\"?" -msgstr "Outro postmaster (PID %d) está utilizando arquivo de soquete \"%s\"?" +msgid "next MultiXactId: %u; next MultiXactOffset: %u" +msgstr "próximo MultiXactId: %u; próximo MultiXactOffset: %u" -#: utils/init/miscinit.c:841 +#: access/transam/xlog.c:6296 #, 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" +msgid "oldest unfrozen transaction ID: %u, in database %u" +msgstr "ID de transação descongelado mais antigo: %u, no banco de dados %u" -#: utils/init/miscinit.c:844 -#, 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\"." +#: access/transam/xlog.c:6300 +msgid "invalid next transaction ID" +msgstr "próximo ID de transação é inválido" -#: utils/init/miscinit.c:861 -#, c-format -msgid "could not remove old lock file \"%s\": %m" -msgstr "não pôde remover arquivo de bloqueio antigo \"%s\": %m" +#: access/transam/xlog.c:6328 +msgid "invalid redo in checkpoint record" +msgstr "redo é inválido no registro do ponto de controle" + +#: access/transam/xlog.c:6339 +msgid "invalid redo record in shutdown checkpoint" +msgstr "registro de redo é inválido no ponto de controle de desligamento" -#: utils/init/miscinit.c:863 +#: access/transam/xlog.c:6369 msgid "" -"The file seems accidentally left over, but it could not be removed. Please " -"remove the file by hand and try again." +"database system was not properly shut down; automatic recovery in progress" 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:885 utils/init/miscinit.c:896 -#: utils/init/miscinit.c:906 -#, 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:1005 utils/init/miscinit.c:1118 -#: utils/error/elog.c:1403 access/transam/xlog.c:2441 -#: access/transam/xlog.c:4113 access/transam/xlog.c:4207 -#: access/transam/xlog.c:4305 storage/file/copydir.c:165 -#: storage/file/copydir.c:255 storage/smgr/md.c:532 storage/smgr/md.c:785 -#, c-format -msgid "could not open file \"%s\": %m" -msgstr "não pôde abrir arquivo \"%s\": %m" +"sistema de banco de dados não foi desligado corretamente; recuperação " +"automática está em andamento" -#: utils/init/miscinit.c:1014 utils/misc/guc.c:7101 commands/copy.c:2217 -#, c-format -msgid "could not read from file \"%s\": %m" -msgstr "não pôde ler do arquivo \"%s\": %m" +#: access/transam/xlog.c:6448 +msgid "initializing for hot standby" +msgstr "inicialização para servidor em espera ativo" -#: utils/init/miscinit.c:1054 utils/init/miscinit.c:1063 -#: utils/init/miscinit.c:1070 utils/misc/guc.c:7008 utils/misc/guc.c:7033 -#: postmaster/postmaster.c:3637 postmaster/postmaster.c:3647 -#: access/transam/xlog.c:2355 access/transam/xlog.c:2488 -#: access/transam/xlog.c:4338 access/transam/xlog.c:4394 commands/copy.c:1316 -#: storage/file/copydir.c:197 +#: access/transam/xlog.c:6573 #, c-format -msgid "could not write to file \"%s\": %m" -msgstr "não pôde escrever no arquivo \"%s\": %m" +msgid "redo starts at %X/%X" +msgstr "redo inicia em %X/%X" -#: utils/init/miscinit.c:1112 utils/init/miscinit.c:1125 +#: access/transam/xlog.c:6702 #, c-format -msgid "\"%s\" is not a valid data directory" -msgstr "\"%s\" não é um diretório de dados válido" +msgid "redo done at %X/%X" +msgstr "redo pronto em %X/%X" -#: utils/init/miscinit.c:1114 +#: access/transam/xlog.c:6707 access/transam/xlog.c:8318 #, c-format -msgid "File \"%s\" is missing." -msgstr "Arquivo \"%s\" não foi encontrado." +msgid "last completed transaction was at log time %s" +msgstr "última transação efetivada foi em %s" -#: utils/init/miscinit.c:1127 -#, c-format -msgid "File \"%s\" does not contain valid data." -msgstr "Arquivo \"%s\" não contém dados válidos." +#: access/transam/xlog.c:6715 +msgid "redo is not required" +msgstr "redo não é requerido" -#: utils/init/miscinit.c:1129 -msgid "You might need to initdb." -msgstr "Você precisa executar o initdb." +#: access/transam/xlog.c:6763 +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" -#: utils/init/miscinit.c:1136 access/transam/xlog.c:4570 -#: access/transam/xlog.c:4579 access/transam/xlog.c:4603 -#: access/transam/xlog.c:4610 access/transam/xlog.c:4617 -#: access/transam/xlog.c:4622 access/transam/xlog.c:4629 -#: access/transam/xlog.c:4636 access/transam/xlog.c:4643 -#: access/transam/xlog.c:4650 access/transam/xlog.c:4657 -#: access/transam/xlog.c:4664 access/transam/xlog.c:4673 -#: access/transam/xlog.c:4680 access/transam/xlog.c:4689 -#: access/transam/xlog.c:4696 access/transam/xlog.c:4705 -#: access/transam/xlog.c:4712 -msgid "database files are incompatible with server" -msgstr "arquivos do banco de dados são incompatíveis com o servidor" +#: access/transam/xlog.c:6772 +msgid "WAL ends before end of online backup" +msgstr "WAL terminou antes do fim da cópia de segurança online" -#: utils/init/miscinit.c:1137 -#, c-format +#: access/transam/xlog.c:6773 msgid "" -"The data directory was initialized by PostgreSQL version %ld.%ld, which is " -"not compatible with this version %s." +"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 "" -"O diretório de dados foi inicializado pelo PostgreSQL versão %ld.%ld, que " -"não é compatível com essa versão %s." +"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." -#: utils/init/miscinit.c:1185 -#, c-format -msgid "invalid list syntax in parameter \"%s\"" -msgstr "sintaxe de lista é inválida para parâmetro \"%s\"" +#: access/transam/xlog.c:6776 +msgid "WAL ends before consistent recovery point" +msgstr "Log de transação termina antes de ponto de recuperação consistente" -#: utils/init/miscinit.c:1222 +#: access/transam/xlog.c:6797 #, c-format -msgid "loaded library \"%s\"" -msgstr "biblioteca \"%s\" foi carregada" +msgid "selected new timeline ID: %u" +msgstr "novo ID de linha do tempo selecionado: %u" -#: utils/mb/wchar.c:1609 +#: access/transam/xlog.c:7047 #, c-format -msgid "invalid byte sequence for encoding \"%s\": 0x%s" -msgstr "sequência de bytes é inválida para codificação \"%s\": 0x%s" +msgid "consistent recovery state reached at %X/%X" +msgstr "estado de recuperação consistente atingido em %X/%X" -#: utils/mb/wchar.c:1638 -#, c-format -msgid "character 0x%s of encoding \"%s\" has no equivalent in \"%s\"" -msgstr "caracter 0x%s da codificação \"%s\" não tem equivalente em \"%s\"" +#: access/transam/xlog.c:7225 +msgid "invalid primary checkpoint link in control file" +msgstr "" +"vínculo de ponto de controle primário é inválido no arquivo de controle" -#: utils/mb/mbutils.c:241 commands/variable.c:665 -#, c-format -msgid "conversion between %s and %s is not supported" -msgstr "conversão entre %s e %s não é suportada" +#: access/transam/xlog.c:7229 +msgid "invalid secondary checkpoint link in control file" +msgstr "" +"vínculo de ponto de controle secundário é inválido no arquivo de controle" -#: utils/mb/mbutils.c:311 -#, c-format -msgid "" -"default conversion function for encoding \"%s\" to \"%s\" does not exist" +#: access/transam/xlog.c:7233 +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:7247 +msgid "invalid primary checkpoint record" +msgstr "registro do ponto de controle primário é inválido" + +#: access/transam/xlog.c:7251 +msgid "invalid secondary checkpoint record" +msgstr "registro do ponto de controle secundário é inválido" + +#: access/transam/xlog.c:7255 +msgid "invalid checkpoint record" +msgstr "registro do ponto de controle é inválido" + +#: access/transam/xlog.c:7266 +msgid "invalid resource manager ID in primary checkpoint record" msgstr "" -"função padrão de conversão da codificação \"%s\" para \"%s\" não existe" +"ID do gerenciador de recursos é inválido no registro do ponto de controle " +"primário" -#: utils/mb/mbutils.c:335 utils/mb/mbutils.c:607 -#, c-format -msgid "String of %d bytes is too long for encoding conversion." +#: access/transam/xlog.c:7270 +msgid "invalid resource manager ID in secondary checkpoint record" msgstr "" -"Cadeia de caracteres de %d bytes é muito longa para conversão entre " -"codificações." +"ID do gerenciador de recursos é inválido no registro do ponto de controle " +"secundário" -#: utils/mb/mbutils.c:422 -#, c-format -msgid "invalid source encoding name \"%s\"" -msgstr "nome da codificação de origem \"%s\" é inválido" +#: access/transam/xlog.c:7274 +msgid "invalid resource manager ID in checkpoint record" +msgstr "" +"ID do gerenciador de recursos é inválido no registro do ponto de controle" -#: utils/mb/mbutils.c:427 -#, c-format -msgid "invalid destination encoding name \"%s\"" -msgstr "nome da codificação de destino \"%s\" é inválido" +#: access/transam/xlog.c:7286 +msgid "invalid xl_info in primary checkpoint record" +msgstr "xl_info é inválido no registro do ponto de controle primário" -#: utils/mb/mbutils.c:539 -#, c-format -msgid "invalid byte value for encoding \"%s\": 0x%02x" -msgstr "valor de byte é inválido para codificação \"%s\": 0x%02x" +#: access/transam/xlog.c:7290 +msgid "invalid xl_info in secondary checkpoint record" +msgstr "xl_info é inválido no registro do ponto de controle secundário" -#: utils/mb/mbutils.c:734 -msgid "invalid multibyte character for locale" -msgstr "caracter multibyte é inválido para configuração regional" +#: access/transam/xlog.c:7294 +msgid "invalid xl_info in checkpoint record" +msgstr "xl_info é inválido no registro do ponto de contrle" -#: utils/mb/mbutils.c:735 -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." +#: access/transam/xlog.c:7306 +msgid "invalid length of primary checkpoint record" +msgstr "tamanho do registro do ponto de controle primário é inválido" -#: utils/mb/encnames.c:485 -msgid "encoding name too long" -msgstr "nome da codificação é muito longo" +#: access/transam/xlog.c:7310 +msgid "invalid length of secondary checkpoint record" +msgstr "tamanho do registro do ponto de controle secundário é inválido" -#: utils/mb/conv.c:509 -#, c-format -msgid "invalid encoding number: %d" -msgstr "número de codificação é inválido: %d" +#: access/transam/xlog.c:7314 +msgid "invalid length of checkpoint record" +msgstr "tamanho do registro do ponto de controle é inválido" -#: 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 de codificação %d é inesperado para conjuntos de caracteres WIN" +#: access/transam/xlog.c:7476 +msgid "shutting down" +msgstr "desligando" -#: 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" +#: access/transam/xlog.c:7498 +msgid "database system is shut down" +msgstr "sistema de banco de dados está desligado" + +#: access/transam/xlog.c:7930 +msgid "" +"concurrent transaction log activity while database system is shutting down" msgstr "" -"ID de codificação %d é inesperado para conjuntos de caracteres ISO 8859" +"atividade concorrente no log de transação enquanto o sistema de banco de " +"dados está sendo desligado" -#: utils/mmgr/portalmem.c:207 +#: access/transam/xlog.c:8164 +msgid "skipping restartpoint, recovery has already ended" +msgstr "ignorando ponto de reinício, recuperação já terminou" + +#: access/transam/xlog.c:8189 #, c-format -msgid "cursor \"%s\" already exists" -msgstr "cursor \"%s\" já existe" +msgid "skipping restartpoint, already performed at %X/%X" +msgstr "ignorando ponto de reinício, já foi executado em %X/%X" -#: utils/mmgr/portalmem.c:211 +#: access/transam/xlog.c:8316 #, c-format -msgid "closing existing cursor \"%s\"" -msgstr "fechando cursor existente \"%s\"" +msgid "recovery restart point at %X/%X" +msgstr "ponto de reinício de recuperação em %X/%X" -#: utils/mmgr/portalmem.c:422 +#: access/transam/xlog.c:8416 #, c-format -msgid "cannot drop active portal \"%s\"" -msgstr "não pode remover portal ativo \"%s\"" +msgid "restore point \"%s\" created at %X/%X" +msgstr "ponto de restauração \"%s\" criado em %X/%X" -#: utils/mmgr/portalmem.c:627 -msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD" +#: access/transam/xlog.c:8516 +msgid "online backup was canceled, recovery cannot continue" msgstr "" -"não pode executar PREPARE em uma transação que criou um cursor WITH HOLD" +"cópia de segurança online foi cancelada, recuperação não pode continuar" -#: utils/mmgr/aset.c:409 +#: access/transam/xlog.c:8579 #, c-format -msgid "Failed while creating memory context \"%s\"." -msgstr "Falhou ao criar contexto de memória \"%s\"." +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" -#: utils/mmgr/aset.c:588 utils/mmgr/aset.c:771 utils/mmgr/aset.c:977 +#: access/transam/xlog.c:8624 #, c-format -msgid "Failed on request of size %lu." -msgstr "Falhou ao requisitar o tamanho %lu." - -#: utils/misc/guc.c:476 -msgid "Ungrouped" -msgstr "Desagrupado" +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" -#: utils/misc/guc.c:478 -msgid "File Locations" -msgstr "Locais de Arquivos" +#: access/transam/xlog.c:8888 access/transam/xlog.c:8912 +#, c-format +msgid "could not fsync log file %u, segment %u: %m" +msgstr "não pôde executar fsync no arquivo de log %u, segmento %u: %m" -#: utils/misc/guc.c:480 -msgid "Connections and Authentication" -msgstr "Conexões e Autenticação" +#: access/transam/xlog.c:8920 +#, c-format +msgid "could not fsync write-through log file %u, segment %u: %m" +msgstr "" +"não pôde executar fsync write-through no arquivo de log %u, segmento %u: %m" -#: utils/misc/guc.c:482 -msgid "Connections and Authentication / Connection Settings" -msgstr "Conexões e Autenticação / Configurações sobre Conexão" +#: access/transam/xlog.c:8929 +#, c-format +msgid "could not fdatasync log file %u, segment %u: %m" +msgstr "não pôde executar fdatasync no arquivo de log %u, segmento %u: %m" -#: utils/misc/guc.c:484 -msgid "Connections and Authentication / Security and Authentication" -msgstr "Conexões e Autenticação / Segurança e Autenticação" +#: access/transam/xlog.c:8967 access/transam/xlog.c:9254 +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" -#: utils/misc/guc.c:486 -msgid "Resource Usage" -msgstr "Uso de Recursos" +#: access/transam/xlog.c:9018 access/transam/xlog.c:9300 +#: access/transam/xlog.c:9563 access/transam/xlog.c:9595 +#: access/transam/xlog.c:9636 access/transam/xlog.c:9669 +#: access/transam/xlog.c:9776 access/transam/xlog.c:9851 +msgid "recovery is in progress" +msgstr "recuperação está em andamento" -#: utils/misc/guc.c:488 -msgid "Resource Usage / Memory" -msgstr "Uso de Recursos / Memória" +#: access/transam/xlog.c:9019 access/transam/xlog.c:9301 +#: access/transam/xlog.c:9564 access/transam/xlog.c:9596 +#: access/transam/xlog.c:9637 access/transam/xlog.c:9670 +msgid "WAL control functions cannot be executed during recovery." +msgstr "" +"funções de controle do WAL não podem ser executadas durante recuperação." -#: utils/misc/guc.c:490 -msgid "Resource Usage / Kernel Resources" -msgstr "Uso de Recursos / Recursos do Kernel" +#: access/transam/xlog.c:9024 access/transam/xlog.c:9306 +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" -#: utils/misc/guc.c:492 -msgid "Resource Usage / Cost-Based Vacuum Delay" -msgstr "Uso de Recursos / Atraso de Limpeza Baseado em Custo" +#: access/transam/xlog.c:9025 access/transam/xlog.c:9307 +#: access/transam/xlog.c:9602 +msgid "" +"wal_level must be set to \"archive\" or \"hot_standby\" at server start." +msgstr "" +"wal_level deve ser definido com \"archive\" ou \"hot_standby\" ao iniciar o " +"servidor." -#: utils/misc/guc.c:494 -msgid "Resource Usage / Background Writer" -msgstr "Uso de Recursos / Escritor de Segundo Plano" +#: access/transam/xlog.c:9030 +#, 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)" -#: utils/misc/guc.c:496 -msgid "Resource Usage / Asynchronous Behavior" -msgstr "Uso de Recursos / Comportamento Assíncrono" +#: access/transam/xlog.c:9071 access/transam/xlog.c:9174 +msgid "a backup is already in progress" +msgstr "uma cópia de segurança está em andamento" -#: utils/misc/guc.c:498 -msgid "Write-Ahead Log" -msgstr "Log de Escrita Prévia" +#: access/transam/xlog.c:9072 +msgid "Run pg_stop_backup() and try again." +msgstr "Execute pg_stop_backup() e tente novamente." -#: utils/misc/guc.c:500 -msgid "Write-Ahead Log / Settings" -msgstr "Log de Escrita Prévia / Configurações" +#: access/transam/xlog.c:9175 +#, 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." -#: utils/misc/guc.c:502 -msgid "Write-Ahead Log / Checkpoints" -msgstr "Log de Escrita Prévia / Pontos de Controle" +#: access/transam/xlog.c:9190 access/transam/xlog.c:9439 +#, c-format +msgid "could not write file \"%s\": %m" +msgstr "não pôde escrever no arquivo \"%s\": %m" -#: utils/misc/guc.c:504 -msgid "Write-Ahead Log / Archiving" -msgstr "Log de Escrita Prévia / Arquivamento" +#: access/transam/xlog.c:9351 +msgid "a backup is not in progress" +msgstr "não há uma cópia de segurança em andamento" -#: utils/misc/guc.c:506 -#, fuzzy -msgid "Write-Ahead Log / Streaming Replication" -msgstr "Log de Escrita Prévia / Replicação" +#: access/transam/xlog.c:9390 access/transam/xlog.c:9921 +#: access/transam/xlog.c:9927 +#, c-format +msgid "invalid data in file \"%s\"" +msgstr "dado inválido no arquivo \"%s\"" -#: utils/misc/guc.c:508 -#, fuzzy -msgid "Write-Ahead Log / Standby Servers" -msgstr "Log de Escrita Prévia / Servidores de Espera" +#: access/transam/xlog.c:9488 +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" -#: utils/misc/guc.c:510 -msgid "Query Tuning" -msgstr "Ajuste de Consultas" +#: access/transam/xlog.c:9498 +#, 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)" -#: utils/misc/guc.c:512 -msgid "Query Tuning / Planner Method Configuration" -msgstr "Ajuste de Consultas / Configuração dos Métodos do Planejador" +#: access/transam/xlog.c:9500 +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." -#: utils/misc/guc.c:514 -msgid "Query Tuning / Planner Cost Constants" -msgstr "Ajuste de Consultas / Constantes de Custo do Planejador" +#: access/transam/xlog.c:9507 +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" -#: utils/misc/guc.c:516 -msgid "Query Tuning / Genetic Query Optimizer" -msgstr "Ajuste de Consultas / Otimizador de Consultas Genéticas" +#: access/transam/xlog.c:9511 +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" -#: utils/misc/guc.c:518 -msgid "Query Tuning / Other Planner Options" -msgstr "Ajuste de Consultas / Outras Opções do Planejador" +#: access/transam/xlog.c:9558 +msgid "must be superuser to switch transaction log files" +msgstr "deve ser super-usuário para rotacionar arquivos do log de transação" -#: utils/misc/guc.c:520 -msgid "Reporting and Logging" -msgstr "Relatório e Registro" +#: access/transam/xlog.c:9590 +msgid "must be superuser to create a restore point" +msgstr "deve ser super-usuário para criar um ponto de restauração" -#: utils/misc/guc.c:522 -msgid "Reporting and Logging / Where to Log" -msgstr "Relatório e Registro / Onde Registrar" +#: access/transam/xlog.c:9601 +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" -#: utils/misc/guc.c:524 -msgid "Reporting and Logging / When to Log" -msgstr "Relatório e Registro / Quando Registrar" +#: access/transam/xlog.c:9609 +#, 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)" -#: utils/misc/guc.c:526 -msgid "Reporting and Logging / What to Log" -msgstr "Relatório e Registro / O que Registrar" +#: access/transam/xlog.c:9777 +msgid "pg_xlogfile_name_offset() cannot be executed during recovery." +msgstr "pg_xlogfile_name_offset() não pode ser executado durante recuperação." -#: utils/misc/guc.c:528 -msgid "Statistics" -msgstr "Estatísticas" +#: access/transam/xlog.c:9787 access/transam/xlog.c:9859 +#, c-format +msgid "could not parse transaction log location \"%s\"" +msgstr "não pôde validar local do log de transação \"%s\"" -#: utils/misc/guc.c:530 -msgid "Statistics / Monitoring" -msgstr "Estatísticas / Monitoramento" +#: access/transam/xlog.c:9852 +msgid "pg_xlogfile_name() cannot be executed during recovery." +msgstr "pg_xlogfile_name() não pode ser executado durante recuperação." -#: utils/misc/guc.c:532 -msgid "Statistics / Query and Index Statistics Collector" -msgstr "Estatísticas / Coletor de Estatísticas de Consultas e Índices" +#: access/transam/xlog.c:9963 +#, c-format +msgid "xlog redo %s" +msgstr "redo do xlog %s" -#: utils/misc/guc.c:534 -msgid "Autovacuum" -msgstr "Limpeza Automática" +#: access/transam/xlog.c:10003 +msgid "online backup mode canceled" +msgstr "modo de cópia de segurança online foi cancelado" -#: utils/misc/guc.c:536 -msgid "Client Connection Defaults" -msgstr "Valores Padrão de Conexão" +#: access/transam/xlog.c:10004 +#, c-format +msgid "\"%s\" was renamed to \"%s\"." +msgstr "\"%s\" foi renomeado para \"%s\"." -#: utils/misc/guc.c:538 -msgid "Client Connection Defaults / Statement Behavior" -msgstr "Valores Padrão de Conexão / Comportamento do Comando" +#: access/transam/xlog.c:10011 +msgid "online backup mode was not canceled" +msgstr "modo de cópia de segurança online não foi cancelado" -#: utils/misc/guc.c:540 -msgid "Client Connection Defaults / Locale and Formatting" -msgstr "Valores Padrão de Conexão / Configuração Regional e Formatação" +#: access/transam/xlog.c:10012 +#, c-format +msgid "Could not rename \"%s\" to \"%s\": %m." +msgstr "não pôde renomear \"%s\" para \"%s\": %m" -#: utils/misc/guc.c:542 -msgid "Client Connection Defaults / Other Defaults" -msgstr "Valores Padrão de Conexão / Outros Valores" +#: access/transam/xlog.c:10525 access/transam/xlog.c:10547 +#, c-format +msgid "could not read from log file %u, segment %u, offset %u: %m" +msgstr "não pôde ler do arquivo de log %u, segmento %u, deslocamento %u: %m" -#: utils/misc/guc.c:544 -msgid "Lock Management" -msgstr "Gerência de Bloqueio" +#: access/transam/xlog.c:10636 +msgid "received promote request" +msgstr "pedido de promoção foi recebido" -#: utils/misc/guc.c:546 -msgid "Version and Platform Compatibility" -msgstr "Compatibilidade de Versão e Plataforma" +#: access/transam/xlog.c:10649 +#, c-format +msgid "trigger file found: %s" +msgstr "arquivo de gatilho encontrado: %s" -#: utils/misc/guc.c:548 -msgid "Version and Platform Compatibility / Previous PostgreSQL Versions" +#: access/transam/varsup.c:114 +#, c-format +msgid "" +"database is not accepting commands to avoid wraparound data loss in database " +"\"%s\"" msgstr "" -"Compatibilidade de Versão e Plataforma / Versões Anteriores do PostgreSQL" +"banco de dados não está aceitando comandos para evitar perda de dados por " +"reinício no banco de dados \"%s\"" -#: utils/misc/guc.c:550 -msgid "Version and Platform Compatibility / Other Platforms and Clients" -msgstr "Compatibilidade de Versão e Plataforma / Outras Plataformas e Clientes" +#: 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 "" +"Pare o postmaster e use um servidor autônomo para limpar aquele banco de " +"dados.\n" +"Você também pode precisar efetivar ou desfazer transações preparadas antigas." -#: utils/misc/guc.c:552 -msgid "Preset Options" -msgstr "Opções Pré-Definidas" +#: access/transam/varsup.c:121 +#, c-format +msgid "" +"database is not accepting commands to avoid wraparound data loss in database " +"with OID %u" +msgstr "" +"banco de dados não está aceitando comandos para evitar perda de dados por " +"reinício no banco de dados com OID %u" -#: utils/misc/guc.c:554 -msgid "Customized Options" -msgstr "Opções Customizadas" +#: access/transam/varsup.c:133 access/transam/varsup.c:368 +#, c-format +msgid "database \"%s\" must be vacuumed within %u transactions" +msgstr "banco de dados \"%s\" deve ser limpado em %u transações" -#: utils/misc/guc.c:556 -msgid "Developer Options" -msgstr "Opções para Desenvolvedores" +#: 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 "" +"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." -#: utils/misc/guc.c:610 -msgid "Enables the planner's use of sequential-scan plans." -msgstr "Habilita o uso de planos de busca sequencial pelo planejador." +#: access/transam/varsup.c:140 access/transam/varsup.c:375 +#, c-format +msgid "database with OID %u must be vacuumed within %u transactions" +msgstr "banco de dados com OID %u deve ser limpado em %u transações" -#: utils/misc/guc.c:618 -msgid "Enables the planner's use of index-scan plans." -msgstr "Habilita o uso de planos de buscas por índices pelo planejador." +#: access/transam/varsup.c:333 +#, c-format +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" -#: utils/misc/guc.c:626 -msgid "Enables the planner's use of bitmap-scan plans." -msgstr "Habilita o uso de planos de buscas por bitmaps pelo planejador." +#: access/transam/twophase.c:250 +#, c-format +msgid "transaction identifier \"%s\" is too long" +msgstr "identificador de transação \"%s\" é muito longo" -#: utils/misc/guc.c:634 -msgid "Enables the planner's use of TID scan plans." -msgstr "Habilita o uso de planos de buscas por TID pelo planejador." +#: access/transam/twophase.c:257 +msgid "prepared transactions are disabled" +msgstr "transações preparadas estão desabilitadas" -#: utils/misc/guc.c:642 -msgid "Enables the planner's use of explicit sort steps." -msgstr "Habilita o uso de passos para ordenação explícita pelo planejador." +#: access/transam/twophase.c:258 +msgid "Set max_prepared_transactions to a nonzero value." +msgstr "Defina max_prepared_transactions para um valor diferente de zero." -#: utils/misc/guc.c:650 -msgid "Enables the planner's use of hashed aggregation plans." -msgstr "Habilita o uso de planos de agregação do tipo hash pelo planejador." +#: access/transam/twophase.c:291 +#, c-format +msgid "transaction identifier \"%s\" is already in use" +msgstr "identificador de transação \"%s\" já está em uso" -#: utils/misc/guc.c:658 -msgid "Enables the planner's use of materialization." -msgstr "Habilita o uso de materialização pelo planejador." +#: access/transam/twophase.c:300 +msgid "maximum number of prepared transactions reached" +msgstr "número máximo de transações preparadas foi alcançado" -#: utils/misc/guc.c:666 -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." +#: access/transam/twophase.c:301 +#, c-format +msgid "Increase max_prepared_transactions (currently %d)." +msgstr "Aumente max_prepared_transactions (atualmente %d)." -#: utils/misc/guc.c:674 -msgid "Enables the planner's use of merge join plans." -msgstr "Habilita o uso de planos de junção por mesclagem pelo planejador." +#: access/transam/twophase.c:421 +#, c-format +msgid "prepared transaction with identifier \"%s\" is busy" +msgstr "transação preparada com identificador \"%s\" está sendo utilizada" -#: utils/misc/guc.c:682 -msgid "Enables the planner's use of hash join plans." -msgstr "Habilita o uso de planos de junção hash pelo planejador." +#: access/transam/twophase.c:429 +msgid "permission denied to finish prepared transaction" +msgstr "permissão negada ao finalizar transação preparada" -#: utils/misc/guc.c:690 -msgid "Enables genetic query optimization." -msgstr "Habilita a otimização de consultas genéticas." - -#: utils/misc/guc.c:691 -msgid "This algorithm attempts to do planning without exhaustive searching." -msgstr "Esse algoritmo tenta fazer o planejamento sem busca exaustiva." +#: access/transam/twophase.c:430 +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." -#: utils/misc/guc.c:700 -msgid "Shows whether the current user is a superuser." -msgstr "Mostra se o usuário atual é um super-usuário." +#: access/transam/twophase.c:441 +msgid "prepared transaction belongs to another database" +msgstr "transação preparada pertence a outro banco de dados" -#: utils/misc/guc.c:709 -msgid "Enables advertising the server via Bonjour." -msgstr "Habilita anunciar o servidor via Bonjour." +#: access/transam/twophase.c:442 +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." -#: utils/misc/guc.c:717 -msgid "Enables SSL connections." -msgstr "Habilita conexões SSL." +#: access/transam/twophase.c:456 +#, c-format +msgid "prepared transaction with identifier \"%s\" does not exist" +msgstr "transação preparada com identificador \"%s\" não existe" -#: utils/misc/guc.c:725 -msgid "Forces synchronization of updates to disk." -msgstr "Força sincronização de atualizações com o disco." +#: access/transam/twophase.c:939 +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" -#: utils/misc/guc.c:726 -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." +#: access/transam/twophase.c:957 +#, c-format +msgid "could not create two-phase state file \"%s\": %m" 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." +"não pôde criar arquivo de status de efetivação em duas fases \"%s\": %m" -#: utils/misc/guc.c:736 -msgid "Sets immediate fsync at commit." -msgstr "Define execução imediata do fsync ao efetivar." +#: access/transam/twophase.c:971 access/transam/twophase.c:988 +#: access/transam/twophase.c:1044 access/transam/twophase.c:1464 +#: access/transam/twophase.c:1471 +#, 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" -#: utils/misc/guc.c:744 -msgid "Continues processing past damaged page headers." -msgstr "Continua processando cabeçalhos antigos de páginas danificadas." +#: access/transam/twophase.c:997 +#, c-format +msgid "could not seek in two-phase state file: %m" +msgstr "não pôde buscar no arquivo de status de efetivação em duas fases: %m" -#: utils/misc/guc.c:745 -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." +#: access/transam/twophase.c:1050 access/transam/twophase.c:1489 +#, 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:1130 access/transam/twophase.c:1569 +#, c-format +msgid "could not open two-phase state file \"%s\": %m" 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." +"não pôde abrir arquivo de status de efetivação em duas fases \"%s\": %m" -#: utils/misc/guc.c:757 -msgid "Writes full pages to WAL when first modified after a checkpoint." +#: access/transam/twophase.c:1147 +#, c-format +msgid "could not stat two-phase state file \"%s\": %m" msgstr "" -"Escreve páginas completas no WAL quando modificadas após um ponto de " -"controle." +"não pôde executar stat no arquivo de status de efetivação em duas fases \"%s" +"\": %m" -#: utils/misc/guc.c:758 -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." +#: access/transam/twophase.c:1179 +#, 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:1271 +#, c-format +msgid "two-phase state file for transaction %u is corrupt" 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." +"arquivo de status de efetivação em duas fases para transação %u está " +"corrompido" -#: utils/misc/guc.c:769 -msgid "Runs the server silently." -msgstr "Executa o servidor silenciosamente." +#: access/transam/twophase.c:1426 +#, 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" -#: utils/misc/guc.c:770 -msgid "" -"If this parameter is set, the server will automatically run in the " -"background and any controlling terminals are dissociated." +#: access/transam/twophase.c:1455 +#, c-format +msgid "could not recreate two-phase state file \"%s\": %m" msgstr "" -"Se esse parâmetro está definido, o servidor executará automaticamente em " -"segundo plano e qualquer terminal de controle é dissociado." +"não pôde recriar arquivo de status de efetivação em duas fases \"%s\": %m" -#: utils/misc/guc.c:778 -msgid "Logs each checkpoint." -msgstr "Registra cada ponto de controle." +#: access/transam/twophase.c:1483 +#, 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" -#: utils/misc/guc.c:786 -msgid "Logs each successful connection." -msgstr "Registra cada conexão bem sucedida." +#: access/transam/twophase.c:1578 +#, 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" -#: utils/misc/guc.c:794 -msgid "Logs end of a session, including duration." -msgstr "Registra o fim da sessão, incluindo a duração." +#: access/transam/twophase.c:1585 +#, 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" -#: utils/misc/guc.c:802 -msgid "Turns on various assertion checks." -msgstr "Ativa várias verificações de asserção." +#: access/transam/twophase.c:1650 +#, c-format +msgid "removing future two-phase state file \"%s\"" +msgstr "removendo arquivo futuro de status de efetivação em duas fases \"%s\"" -#: utils/misc/guc.c:803 -msgid "This is a debugging aid." -msgstr "Esse é um auxílio na depuração." +#: access/transam/twophase.c:1666 access/transam/twophase.c:1677 +#: access/transam/twophase.c:1790 access/transam/twophase.c:1801 +#: access/transam/twophase.c:1874 +#, c-format +msgid "removing corrupt two-phase state file \"%s\"" +msgstr "" +"removendo arquivo corrompido de status de efetivação em duas fases \"%s\"" -#: utils/misc/guc.c:817 utils/misc/guc.c:899 utils/misc/guc.c:958 -#: utils/misc/guc.c:967 utils/misc/guc.c:976 utils/misc/guc.c:985 -#: utils/misc/guc.c:1587 utils/misc/guc.c:1596 -msgid "No description available." -msgstr "Nenhuma descrição disponível." +#: access/transam/twophase.c:1779 access/transam/twophase.c:1863 +#, c-format +msgid "removing stale two-phase state file \"%s\"" +msgstr "removendo arquivo antigo de status de efetivação em duas fases \"%s\"" -#: utils/misc/guc.c:826 -msgid "Logs the duration of each completed SQL statement." -msgstr "Registra a duração de cada sentença SQL completa." +#: access/transam/twophase.c:1881 +#, c-format +msgid "recovering prepared transaction %u" +msgstr "recuperação transação preparada %u" -#: utils/misc/guc.c:834 -msgid "Logs each query's parse tree." -msgstr "Registra cada árvore de análise de consulta." +#: access/transam/slru.c:609 +#, c-format +msgid "file \"%s\" doesn't exist, reading as zeroes" +msgstr "arquivo \"%s\" não existe, lendo como zeros" -#: utils/misc/guc.c:842 -msgid "Logs each query's rewritten parse tree." -msgstr "Registra cada árvore de análise reescrita de consulta." +#: 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 "não pôde acessar status da transação %u" -#: utils/misc/guc.c:850 -msgid "Logs each query's execution plan." -msgstr "Registra cada plano de execução de consulta." +#: access/transam/slru.c:840 +#, c-format +msgid "Could not open file \"%s\": %m." +msgstr "não pôde abrir arquivo \"%s\": %m." -#: utils/misc/guc.c:858 -msgid "Indents parse and plan tree displays." -msgstr "Identa exibição da árvore de análise e plano." +#: access/transam/slru.c:846 +#, c-format +msgid "Could not seek in file \"%s\" to offset %u: %m." +msgstr "não pôde buscar no arquivo \"%s\" deslocado de %u: %m." -#: utils/misc/guc.c:866 -msgid "Writes parser performance statistics to the server log." -msgstr "Escreve estatísticas de performance do analisador no log do servidor." +#: access/transam/slru.c:853 +#, c-format +msgid "Could not read from file \"%s\" at offset %u: %m." +msgstr "não pôde ler do arquivo \"%s\" deslocado de %u: %m." -#: utils/misc/guc.c:874 -msgid "Writes planner performance statistics to the server log." -msgstr "Escreve estatísticas de performance do planejador no log do servidor." +#: access/transam/slru.c:860 +#, c-format +msgid "Could not write to file \"%s\" at offset %u: %m." +msgstr "não pôde escrever no arquivo \"%s\" deslocado de %u: %m." -#: utils/misc/guc.c:882 -msgid "Writes executor performance statistics to the server log." -msgstr "Escreve estatísticas de performance do executor no log do servidor." +#: access/transam/slru.c:867 +#, c-format +msgid "Could not fsync file \"%s\": %m." +msgstr "não pôde executar fsync no arquivo \"%s\": %m." -#: utils/misc/guc.c:890 -msgid "Writes cumulative performance statistics to the server log." -msgstr "Escreve estatísticas de performance acumulativas no log do servidor." +#: access/transam/slru.c:874 +#, c-format +msgid "Could not close file \"%s\": %m." +msgstr "não pôde fechar arquivo \"%s\": %m." -#: utils/misc/guc.c:910 -msgid "Collects information about executing commands." -msgstr "Coleta informação sobre execução de comandos." +#: access/transam/slru.c:1101 +#, c-format +msgid "could not truncate directory \"%s\": apparent wraparound" +msgstr "não pôde truncar diretório \"%s\": reinício aparente" -#: utils/misc/guc.c:911 -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." +#: access/transam/slru.c:1182 +#, c-format +msgid "removing file \"%s\"" +msgstr "removendo arquivo \"%s\"" -#: utils/misc/guc.c:920 -msgid "Collects statistics on database activity." -msgstr "Coleta estatísticas sobre a atividade do banco de dados." +#: access/transam/xact.c:729 +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" -#: utils/misc/guc.c:929 -msgid "Updates the process title to show the active SQL command." -msgstr "Atualiza o título do processo para mostrar o comando SQL ativo." +#: access/transam/xact.c:1269 +#, c-format +msgid "maximum number of committed subtransactions (%d) exceeded" +msgstr "número máximo de subtransações efetivadas (%d) foi alcançado" -#: utils/misc/guc.c:930 -msgid "" -"Enables updating of the process title every time a new SQL command is " -"received by the server." +#: access/transam/xact.c:2045 +msgid "cannot PREPARE a transaction that has operated on temporary tables" msgstr "" -"Habilita a atualização do título do processo toda vez que um comando SQL " -"novo é recebido pelo servidor." +"não pode executar PREPARE em uma transação que utilizou tabelas temporárias" -#: utils/misc/guc.c:938 -msgid "Starts the autovacuum subprocess." -msgstr "Inicia o subprocesso de limpeza automática." +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2837 +#, c-format +msgid "%s cannot run inside a transaction block" +msgstr "%s não pode executar dentro de um bloco de transação" -#: utils/misc/guc.c:947 -msgid "Generates debugging output for LISTEN and NOTIFY." -msgstr "Gera saída de depuração para LISTEN e NOTIFY." +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2847 +#, c-format +msgid "%s cannot run inside a subtransaction" +msgstr "%s não pode executar dentro de uma subtransação" -#: utils/misc/guc.c:996 -msgid "Logs long lock waits." -msgstr "Registra esperas devido a bloqueios longos." +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2857 +#, 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" -#: utils/misc/guc.c:1005 -msgid "Logs the host name in the connection logs." -msgstr "Registra o nome da máquina nos logs de conexão." +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2908 +#, c-format +msgid "%s can only be used in transaction blocks" +msgstr "%s só pode ser utilizado em blocos de transação" -#: utils/misc/guc.c:1006 -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:1016 -msgid "Causes subtables to be included by default in various commands." -msgstr "Causa subtabelas serem incluídas por padrão em vários comandos." +#: access/transam/xact.c:3090 +msgid "there is already a transaction in progress" +msgstr "há uma transação em execução" -#: utils/misc/guc.c:1024 -msgid "Encrypt passwords." -msgstr "Criptografa senhas." +#: access/transam/xact.c:3257 access/transam/xact.c:3349 +msgid "there is no transaction in progress" +msgstr "não há uma transação em execução" -#: utils/misc/guc.c:1025 -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." +#: access/transam/xact.c:3443 access/transam/xact.c:3493 +#: access/transam/xact.c:3499 access/transam/xact.c:3543 +#: access/transam/xact.c:3591 access/transam/xact.c:3597 +msgid "no such savepoint" +msgstr "ponto de salvamento inexistente" -#: utils/misc/guc.c:1034 -msgid "Treats \"expr=NULL\" as \"expr IS NULL\"." -msgstr "Trata \"expr=NULL\" como \"expr IS NULL\"." +#: access/transam/xact.c:4244 +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" -#: utils/misc/guc.c:1035 -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)." +#: access/gin/ginscan.c:401 +msgid "old GIN indexes do not support whole-index scans nor searches for nulls" 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)." +"índices GIN antigos não suportam buscas em todo índice e nem buscas por nulos" -#: utils/misc/guc.c:1046 -msgid "Enables per-database user names." -msgstr "Habilita uso de nomes de usuário por banco de dados." +#: access/gin/ginscan.c:402 +#, c-format +msgid "To fix this, do REINDEX INDEX \"%s\"." +msgstr "Para corrigir isto, faça REINDEX INDEX \"%s\"." -#: utils/misc/guc.c:1055 -msgid "This parameter doesn't do anything." -msgstr "Esse parâmetro não faz nada." +#: access/common/printtup.c:278 tcop/fastpath.c:180 tcop/fastpath.c:554 +#: tcop/postgres.c:1666 +#, c-format +msgid "unsupported format code: %d" +msgstr "código do formato não é suportado: %d" + +#: access/common/tupconvert.c:107 +#, c-format +msgid "Returned type %s does not match expected type %s in column %d." +msgstr "Tipo %s retornado não corresponde ao tipo %s esperado na coluna %d." -#: utils/misc/guc.c:1056 +#: access/common/tupconvert.c:135 +#, c-format msgid "" -"It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-" -"vintage clients." +"Number of returned columns (%d) does not match expected column count (%d)." msgstr "" -"Isso está aqui para que não seja necessário SET AUTOCOMMIT TO ON em clientes " -"7.3 e anteriores." +"Número de colunas retornadas (%d) não corresponde a contagem de colunas " +"esperada (%d)" -#: utils/misc/guc.c:1064 -msgid "Sets the default read-only status of new transactions." -msgstr "Define o status padrão como somente leitura para novas transações." +#: access/common/tupconvert.c:240 +#, c-format +msgid "" +"Attribute \"%s\" of type %s does not match corresponding attribute of type " +"%s." +msgstr "Atributo \"%s\" do tipo %s não corresponde ao atributo do tipo %s." -#: utils/misc/guc.c:1072 -msgid "Sets the current transaction's read-only status." -msgstr "Define o status da transação atual como somente leitura." +#: access/common/tupconvert.c:252 +#, c-format +msgid "Attribute \"%s\" of type %s does not exist in type %s." +msgstr "Atributo \"%s\" do tipo %s não existe no tipo %s." -#: utils/misc/guc.c:1081 -msgid "Check function bodies during CREATE FUNCTION." -msgstr "Verifica corpo da função durante CREATE FUNCTION." +#: access/common/indextuple.c:57 +#, c-format +msgid "number of index columns (%d) exceeds limit (%d)" +msgstr "número de colunas indexadas (%d) excede limite (%d)" -#: utils/misc/guc.c:1089 -msgid "Enable input of NULL elements in arrays." -msgstr "Habilita entrada de elementos NULL em matrizes." +#: access/common/indextuple.c:168 +#, c-format +msgid "index row requires %lu bytes, maximum size is %lu" +msgstr "registro do índice requer %lu bytes, tamanho máximo é %lu" -#: utils/misc/guc.c:1090 -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." +#: access/common/tupdesc.c:581 parser/parse_relation.c:1178 +#, c-format +msgid "column \"%s\" cannot be declared SETOF" +msgstr "coluna \"%s\" não pode ser declarada SETOF" -#: utils/misc/guc.c:1099 -msgid "Create new tables with OIDs by default." -msgstr "Cria novas tabelas com OIDs por padrão." +#: access/common/heaptuple.c:646 access/common/heaptuple.c:1398 +#, c-format +msgid "number of columns (%d) exceeds limit (%d)" +msgstr "número de colunas (%d) excede limite (%d)" -#: utils/misc/guc.c:1107 -msgid "" -"Start a subprocess to capture stderr output and/or csvlogs into log files." +#: access/common/reloptions.c:323 +msgid "user-defined relation parameter types limit exceeded" msgstr "" -"Inicia um subprocesso para capturar saída stderr e/ou csvlogs em arquivos de " -"log." +"limite dos tipos de parâmetro da relação definidos pelo usuário foi excedido" -#: utils/misc/guc.c:1115 -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." +#: access/common/reloptions.c:622 +msgid "RESET must not include values for parameters" +msgstr "RESET não deve incluir valores para parâmetros" -#: utils/misc/guc.c:1125 -msgid "Emit information about resource usage in sorting." -msgstr "Produz informação sobre uso de recurso ao ordenar." +#: access/common/reloptions.c:655 +#, c-format +msgid "unrecognized parameter namespace \"%s\"" +msgstr "namespace do parâmetro \"%s\" desconhecido" -#: utils/misc/guc.c:1138 -msgid "Generate debugging output for synchronized scanning." -msgstr "Gera saída de depuração para busca sincronizada." +#: access/common/reloptions.c:898 +#, c-format +msgid "unrecognized parameter \"%s\"" +msgstr "parâmetro \"%s\" desconhecido" -#: utils/misc/guc.c:1152 -msgid "Enable bounded sorting using heap sort." -msgstr "Habilita ordenação limitada utilizando ordenção de pilha." +#: access/common/reloptions.c:923 +#, c-format +msgid "parameter \"%s\" specified more than once" +msgstr "parâmetro \"%s\" foi especificado mais de uma vez" -#: utils/misc/guc.c:1164 -msgid "Emit WAL-related debugging output." -msgstr "Emite saída de depuração relacionada ao WAL." +#: access/common/reloptions.c:938 +#, c-format +msgid "invalid value for boolean option \"%s\": %s" +msgstr "valor é inválido para opção booleano \"%s\": %s" -#: utils/misc/guc.c:1175 -msgid "Datetimes are integer based." -msgstr "Datetimes são baseados em inteiros." +#: access/common/reloptions.c:949 +#, c-format +msgid "invalid value for integer option \"%s\": %s" +msgstr "valor é inválido para opção inteiro \"%s\": %s" -#: utils/misc/guc.c:1189 -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." +#: access/common/reloptions.c:954 access/common/reloptions.c:972 +#, c-format +msgid "value %s out of bounds for option \"%s\"" +msgstr "valor %s está fora do intervalo para opção \"%s\"" -#: utils/misc/guc.c:1198 -msgid "Warn about backslash escapes in ordinary string literals." -msgstr "" -"Avisa sobre escapes de barra invertida em cadeias de caracteres ordinárias." +#: access/common/reloptions.c:956 +#, c-format +msgid "Valid values are between \"%d\" and \"%d\"." +msgstr "Valores válidos estão entre \"%d\" e \"%d\"." -#: utils/misc/guc.c:1207 -msgid "Causes '...' strings to treat backslashes literally." -msgstr "" -"Faz com que cadeias de caracteres '...' tratem barras invertidas " -"literalmente." +#: access/common/reloptions.c:967 +#, c-format +msgid "invalid value for floating point option \"%s\": %s" +msgstr "valor é inválido para opção ponto flutuante \"%s\": %s" -#: utils/misc/guc.c:1217 -msgid "Enable synchronized sequential scans." -msgstr "Habilita buscas sequenciais sincronizadas." +#: access/common/reloptions.c:974 +#, c-format +msgid "Valid values are between \"%f\" and \"%f\"." +msgstr "Valores válidos estão entre \"%f\" e \"%f\"." -#: utils/misc/guc.c:1226 -msgid "Allows archiving of WAL files using archive_command." -msgstr "Permite arquivamento de arquivos do WAL utilizando archive_command." +#: optimizer/plan/planner.c:940 parser/analyze.c:1333 parser/analyze.c:1541 +#: parser/analyze.c:2270 +msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT" +msgstr "SELECT FOR UPDATE/SHARE não é permitido com UNION/INTERSECT/EXCEPT" -#: utils/misc/guc.c:1235 -msgid "Allows connections and queries during recovery." -msgstr "Permite conexões e consultas durante recuperação." +#: optimizer/plan/planner.c:2235 +msgid "could not implement GROUP BY" +msgstr "não pôde implementar GROUP BY" -#: utils/misc/guc.c:1244 -msgid "Allows modifications of the structure of system tables." -msgstr "Permite modificações da estrutura de tabelas do sistema." +#: optimizer/plan/planner.c:2236 optimizer/plan/planner.c:2408 +#: optimizer/prep/prepunion.c:801 +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." -#: utils/misc/guc.c:1254 -msgid "Disables reading from system indexes." -msgstr "Desabilita leitura dos índices do sistema." +#: optimizer/plan/planner.c:2407 +msgid "could not implement DISTINCT" +msgstr "não pôde implementar DISTINCT" -#: utils/misc/guc.c:1255 -msgid "" -"It does not prevent updating the indexes, so it is safe to use. The worst " -"consequence is slowness." +#: optimizer/plan/planner.c:2873 +msgid "could not implement window PARTITION BY" +msgstr "não pôde implementar deslizante PARTITION BY" + +#: optimizer/plan/planner.c:2874 +msgid "Window partitioning columns must be of sortable datatypes." msgstr "" -"Ele não impede a atualização dos índices, então é seguro utilizá-lo. A pior " -"consequência é lentidão." +"Colunas de particionamento de deslizante devem ser de tipos de dados que " +"suportam ordenação." -#: utils/misc/guc.c:1265 -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." +#: optimizer/plan/planner.c:2878 +msgid "could not implement window ORDER BY" +msgstr "não pôde implementar deslizante ORDER BY" -#: utils/misc/guc.c:1266 -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." +#: optimizer/plan/planner.c:2879 +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." -#: utils/misc/guc.c:1284 +#: optimizer/plan/initsplan.c:598 msgid "" -"Forces a switch to the next xlog file if a new file has not been started " -"within N seconds." +"SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer " +"join" msgstr "" -"Força a rotação para o próximo arquivo de xlog se um novo arquivo não foi " -"iniciado em N segundos." +"SELECT FOR UPDATE/SHARE não pode ser aplicado ao lado com valores nulos de " +"um junção externa" -#: utils/misc/guc.c:1294 -msgid "Waits N seconds on connection startup after authentication." -msgstr "Espera N segundos após autenticação durante inicialização da conexão." +#: optimizer/util/clauses.c:4187 +#, c-format +msgid "SQL function \"%s\" during inlining" +msgstr "função SQL \"%s\" durante expansão em linha" -#: utils/misc/guc.c:1295 utils/misc/guc.c:1670 -msgid "This allows attaching a debugger to the process." -msgstr "Isso permite anexar um depurador ao processo." +#: optimizer/util/plancat.c:97 +msgid "cannot access temporary or unlogged relations during recovery" +msgstr "não pode criar tabelas temporárias ou unlogged durante recuperação" -#: utils/misc/guc.c:1303 -msgid "Sets the default statistics target." -msgstr "Define o alvo padrão de estatísticas." +#: optimizer/prep/prepunion.c:395 +msgid "could not implement recursive UNION" +msgstr "não pôde implementar UNION recursivo" -#: utils/misc/guc.c:1304 -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." +#: optimizer/prep/prepunion.c:396 +msgid "All column datatypes must be hashable." +msgstr "Todos os tipos de dados de colunas devem suportar utilização de hash." -#: utils/misc/guc.c:1312 -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." +#. translator: %s is UNION, INTERSECT, or EXCEPT +#: optimizer/prep/prepunion.c:800 +#, c-format +msgid "could not implement %s" +msgstr "não pôde implementar %s" -#: utils/misc/guc.c:1314 +#: optimizer/path/joinrels.c:673 msgid "" -"The planner will merge subqueries into upper queries if the resulting FROM " -"list would have no more than this many items." +"FULL JOIN is only supported with merge-joinable or hash-joinable join " +"conditions" msgstr "" -"O planejador mesclará subconsultas em consultas de nível superior se a lista " -"resultante do FROM for menor que essa quantidade de itens." +"FULL JOIN só é suportado com condições de junção que podem ser utilizadas " +"com junção por mesclagem ou junção por hash" -#: utils/misc/guc.c:1323 -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." +#: bootstrap/bootstrap.c:269 tcop/postgres.c:3448 postmaster/postmaster.c:678 +#, c-format +msgid "--%s requires a value" +msgstr "--%s requer um valor" -#: utils/misc/guc.c:1325 -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." +#: bootstrap/bootstrap.c:274 tcop/postgres.c:3453 postmaster/postmaster.c:683 +#, c-format +msgid "-c %s requires a value" +msgstr "-c %s requer um valor" -#: utils/misc/guc.c:1334 -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." +#: bootstrap/bootstrap.c:285 postmaster/postmaster.c:695 +#: postmaster/postmaster.c:708 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Tente \"%s --help\" para obter informações adicionais.\n" -#: utils/misc/guc.c:1342 -msgid "GEQO: effort is used to set the default for other GEQO parameters." +#: bootstrap/bootstrap.c:294 +#, c-format +msgid "%s: invalid command-line arguments\n" +msgstr "%s: argumentos de linha de comando inválidos\n" + +#: lib/stringinfo.c:266 commands/sequence.c:1014 utils/adt/regexp.c:219 +#: utils/adt/varlena.c:3472 utils/adt/varlena.c:3493 +#: utils/adt/formatting.c:1524 utils/adt/formatting.c:1640 +#: utils/adt/formatting.c:1757 utils/misc/guc.c:3298 utils/misc/guc.c:3311 +#: utils/misc/guc.c:3324 utils/misc/tzparser.c:455 utils/mb/mbutils.c:374 +#: utils/mb/mbutils.c:675 utils/mmgr/aset.c:416 utils/mmgr/aset.c:587 +#: utils/mmgr/aset.c:765 utils/mmgr/aset.c:966 utils/hash/dynahash.c:368 +#: utils/hash/dynahash.c:445 utils/hash/dynahash.c:959 utils/fmgr/dfmgr.c:224 +#: utils/init/miscinit.c:150 utils/init/miscinit.c:171 +#: utils/init/miscinit.c:181 storage/buffer/buf_init.c:154 +#: storage/buffer/localbuf.c:350 storage/file/fd.c:364 storage/file/fd.c:761 +#: storage/file/fd.c:879 storage/file/fd.c:1443 storage/ipc/procarray.c:849 +#: storage/ipc/procarray.c:1260 storage/ipc/procarray.c:1267 +#: storage/ipc/procarray.c:1507 storage/ipc/procarray.c:1958 +#: postmaster/postmaster.c:2010 postmaster/postmaster.c:2041 +#: postmaster/postmaster.c:3243 postmaster/postmaster.c:3922 +#: postmaster/postmaster.c:4007 postmaster/postmaster.c:4624 libpq/auth.c:1022 +#: libpq/auth.c:1382 libpq/auth.c:1450 libpq/auth.c:1852 +msgid "out of memory" +msgstr "sem memória" + +#: lib/stringinfo.c:267 +#, c-format +msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes." msgstr "" -"GEQO: esforço é utilizado para definir o padrão para outros parâmetros GEQO." +"Não pode aumentar o buffer de cadeia de caracteres contendo %d bytes para " +"mais %d bytes." -#: utils/misc/guc.c:1350 -msgid "GEQO: number of individuals in the population." -msgstr "GEQO: número de indivíduos em uma população." +#: commands/trigger.c:169 +#, c-format +msgid "\"%s\" is a table" +msgstr "\"%s\" é uma tabela" -#: utils/misc/guc.c:1351 utils/misc/guc.c:1359 -msgid "Zero selects a suitable default value." -msgstr "Zero seleciona um valor padrão ideal." +#: commands/trigger.c:171 +msgid "Tables cannot have INSTEAD OF triggers." +msgstr "Tabelas não podem ter gatilhos INSTEAD OF." -#: utils/misc/guc.c:1358 -msgid "GEQO: number of iterations of the algorithm." -msgstr "GEQO: número de iterações do algoritmo." +#: commands/trigger.c:182 commands/trigger.c:189 +#, c-format +msgid "\"%s\" is a view" +msgstr "\"%s\" é uma visão" -#: utils/misc/guc.c:1368 -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." +#: commands/trigger.c:184 +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." -#: utils/misc/guc.c:1378 -msgid "" -"Sets the maximum delay before canceling queries when a hot standby server is " -"processing archived WAL data." -msgstr "" +#: commands/trigger.c:191 +msgid "Views cannot have TRUNCATE triggers." +msgstr "Visões não podem ter gatilhos TRUNCATE." -#: utils/misc/guc.c:1388 -msgid "" -"Sets the maximum delay before canceling queries when a hot standby server is " -"processing streamed WAL data." -msgstr "" +#: commands/trigger.c:196 commands/trigger.c:1114 commands/tablecmds.c:3765 +#: rewrite/rewriteDefine.c:257 +#, c-format +msgid "\"%s\" is not a table or view" +msgstr "\"%s\" não é uma tabela ou visão" -#: utils/misc/guc.c:1408 -msgid "Sets the maximum number of concurrent connections." -msgstr "Define o número máximo de conexões concorrentes." +#: commands/trigger.c:202 commands/trigger.c:1120 commands/tablecmds.c:820 +#: commands/tablecmds.c:1153 commands/tablecmds.c:2001 +#: commands/tablecmds.c:3741 commands/tablecmds.c:5487 tcop/utility.c:95 +#: rewrite/rewriteDefine.c:263 +#, c-format +msgid "permission denied: \"%s\" is a system catalog" +msgstr "permissão negada: \"%s\" é um catálogo do sistema" -#: utils/misc/guc.c:1417 -msgid "Sets the number of connection slots reserved for superusers." -msgstr "Define o número de conexões reservadas para super-usuários." +#: commands/trigger.c:243 +msgid "TRUNCATE FOR EACH ROW triggers are not supported" +msgstr "gatilhos TRUNCATE FOR EACH ROW não são suportados" -#: utils/misc/guc.c:1426 -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." +#: commands/trigger.c:251 +msgid "INSTEAD OF triggers must be FOR EACH ROW" +msgstr "gatilhos INSTEAD OF devem ser FOR EACH ROW" -#: utils/misc/guc.c:1436 -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." +#: commands/trigger.c:255 +msgid "INSTEAD OF triggers cannot have WHEN conditions" +msgstr "gatilhos INSTEAD OF não podem ter condições WHEN" -#: utils/misc/guc.c:1446 -msgid "Sets the TCP port the server listens on." -msgstr "Define a porta TCP que o servidor escutará." +#: commands/trigger.c:259 +msgid "INSTEAD OF triggers cannot have column lists" +msgstr "gatilhos INSTEAD OF não podem ter listas de colunas" -#: utils/misc/guc.c:1455 -msgid "Sets the access permissions of the Unix-domain socket." -msgstr "Define as permissões de acesso do soquete de domínio Unix." +#: commands/trigger.c:303 +msgid "cannot use subquery in trigger WHEN condition" +msgstr "não pode utilizar subconsulta em condição WHEN de gatilho" -#: utils/misc/guc.c:1456 -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).)" +#: commands/trigger.c:307 +msgid "cannot use aggregate function in trigger WHEN condition" +msgstr "não pode utilizar função de agregação em condição WHEN de gatilho" + +#: commands/trigger.c:311 +msgid "cannot use window function in trigger WHEN condition" +msgstr "não pode utilizar função deslizante em condição WHEN de gatilho" + +#: commands/trigger.c:333 commands/trigger.c:346 +msgid "statement trigger's WHEN condition cannot reference column values" 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).)" +"condição WHEN de gatilho de comando não pode referenciar valores de coluna" -#: utils/misc/guc.c:1468 -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." +#: commands/trigger.c:338 +msgid "INSERT trigger's WHEN condition cannot reference OLD values" +msgstr "condição WHEN de gatilho INSERT não pode referenciar valores OLD" -#: utils/misc/guc.c:1469 -msgid "" -"This much memory can be used by each internal sort operation and hash table " -"before switching to temporary disk files." +#: commands/trigger.c:351 +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:356 +msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns" 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." +"condição WHEN de gatilho BEFORE não pode referenciar colunas de sistema NEW" -#: utils/misc/guc.c:1480 -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." +#: commands/trigger.c:401 +#, 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\"" -#: utils/misc/guc.c:1481 -msgid "This includes operations such as VACUUM and CREATE INDEX." -msgstr "Isso inclue operações tais como VACUUM e CREATE INDEX." +#: commands/trigger.c:408 +#, c-format +msgid "function %s must return type \"trigger\"" +msgstr "função %s deve retornar tipo \"trigger\"" -#: utils/misc/guc.c:1490 -msgid "Sets the maximum stack depth, in kilobytes." -msgstr "Define a profundidade máxima da pilha, em kilobytes." +#: commands/trigger.c:518 commands/trigger.c:1256 +#, c-format +msgid "trigger \"%s\" for relation \"%s\" already exists" +msgstr "gatilho \"%s\" para relação \"%s\" já existe" -#: utils/misc/guc.c:1500 -msgid "Vacuum cost for a page found in the buffer cache." -msgstr "Custo da limpeza por página encontrada na cache do buffer." +#: commands/trigger.c:616 commands/tablecmds.c:1330 commands/copy.c:3799 +#: parser/parse_target.c:914 parser/parse_target.c:925 +#, c-format +msgid "column \"%s\" specified more than once" +msgstr "coluna \"%s\" especificada mais de uma vez" -#: utils/misc/guc.c:1509 -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." +#: commands/trigger.c:803 +msgid "Found referenced table's UPDATE trigger." +msgstr "Encontrado gatilho de UPDATE na tabela referenciada." -#: utils/misc/guc.c:1518 -msgid "Vacuum cost for a page dirtied by vacuum." -msgstr "Custo da limpeza por página sujada pela limpeza." +#: commands/trigger.c:804 +msgid "Found referenced table's DELETE trigger." +msgstr "Encontrado gatilho de DELETE na tabela referenciada." -#: utils/misc/guc.c:1527 -msgid "Vacuum cost amount available before napping." -msgstr "Quantidade de custo da limpeza disponível antes de adormecer." +#: commands/trigger.c:805 +msgid "Found referencing table's trigger." +msgstr "Encontrado gatilho na tabela referenciada." -#: utils/misc/guc.c:1536 -msgid "Vacuum cost delay in milliseconds." -msgstr "Atraso do custo da limpeza em milisegundos." +#: commands/trigger.c:914 commands/trigger.c:930 +#, c-format +msgid "ignoring incomplete trigger group for constraint \"%s\" %s" +msgstr "ignorando grupo de gatilhos incompletos para restrição \"%s\" %s" -#: utils/misc/guc.c:1546 -msgid "Vacuum cost delay in milliseconds, for autovacuum." -msgstr "Atraso do custo da limpeza em milisegundos, para autovacuum." +#: commands/trigger.c:942 +#, c-format +msgid "converting trigger group into constraint \"%s\" %s" +msgstr "convertendo grupo de gatilhos na restrição \"%s\" %s" -#: utils/misc/guc.c:1556 -msgid "Vacuum cost amount available before napping, for autovacuum." -msgstr "" -"Quantidade de custo da limpeza disponível antes de adormecer, para " -"autovacuum." +#: commands/trigger.c:1058 +#, c-format +msgid "trigger \"%s\" for table \"%s\" does not exist, skipping" +msgstr "gatilho \"%s\" para tabela \"%s\" não existe, ignorando" -#: utils/misc/guc.c:1565 -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." +#: commands/trigger.c:1185 commands/trigger.c:1298 commands/trigger.c:1409 +#, c-format +msgid "trigger \"%s\" for table \"%s\" does not exist" +msgstr "gatilho \"%s\" na tabela \"%s\" não existe" -#: utils/misc/guc.c:1577 -msgid "Sets the maximum number of simultaneously prepared transactions." -msgstr "Define o número máximo de transações preparadas simultâneas." +#: commands/trigger.c:1377 +#, c-format +msgid "permission denied: \"%s\" is a system trigger" +msgstr "permissão negada: \"%s\" é um gatilho do sistema" -#: utils/misc/guc.c:1607 -msgid "Sets the maximum allowed duration of any statement." -msgstr "Define a duração máxima permitida de cada comando." +#: commands/trigger.c:1859 +#, c-format +msgid "trigger function %u returned null value" +msgstr "função de gatilho %u retornou valor nulo" -#: utils/misc/guc.c:1608 -msgid "A value of 0 turns off the timeout." -msgstr "Um valor 0 desabilita o tempo de espera." +#: commands/trigger.c:1918 commands/trigger.c:2117 commands/trigger.c:2301 +#: commands/trigger.c:2543 +msgid "BEFORE STATEMENT trigger cannot return a value" +msgstr "gatilho BEFORE STATEMENT não pode retornar um valor" -#: utils/misc/guc.c:1617 -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." +#: commands/trigger.c:4232 +#, c-format +msgid "constraint \"%s\" is not deferrable" +msgstr "restrição \"%s\" não é postergável" -#: utils/misc/guc.c:1626 -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." +#: commands/trigger.c:4255 +#, c-format +msgid "constraint \"%s\" does not exist" +msgstr "restrição \"%s\" não existe" -#: utils/misc/guc.c:1635 -msgid "" -"Number of transactions by which VACUUM and HOT cleanup should be deferred, " -"if any." -msgstr "" +#: commands/tablecmds.c:202 +#, c-format +msgid "table \"%s\" does not exist" +msgstr "tabela \"%s\" não existe" -#: utils/misc/guc.c:1647 -msgid "Sets the maximum number of locks per transaction." -msgstr "Define o número máximo de bloqueios por transação." +#: commands/tablecmds.c:203 +#, c-format +msgid "table \"%s\" does not exist, skipping" +msgstr "tabela \"%s\" não existe, ignorando" -#: utils/misc/guc.c:1648 -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." +#: commands/tablecmds.c:205 +msgid "Use DROP TABLE to remove a table." +msgstr "Use DROP TABLE para remover uma tabela." -#: utils/misc/guc.c:1658 -msgid "Sets the maximum allowed time to complete client authentication." -msgstr "" -"Define o tempo máximo permitido para completar uma autenticação do cliente." +#: commands/tablecmds.c:208 +#, c-format +msgid "sequence \"%s\" does not exist" +msgstr "sequência \"%s\" não existe" -#: utils/misc/guc.c:1669 -msgid "Waits N seconds on connection startup before authentication." -msgstr "Espera N segundos após autenticação durante inicialização da conexão." +#: commands/tablecmds.c:209 +#, c-format +msgid "sequence \"%s\" does not exist, skipping" +msgstr "sequência \"%s\" não existe, ignorando" -#: utils/misc/guc.c:1679 -msgid "Sets the number of WAL files held for standby servers." -msgstr "Define o número de arquivos WAL mantidos para servidores de espera." +#: commands/tablecmds.c:211 +msgid "Use DROP SEQUENCE to remove a sequence." +msgstr "Use DROP SEQUENCE para remover uma sequência." -#: utils/misc/guc.c:1688 -msgid "" -"Sets the maximum distance in log segments between automatic WAL checkpoints." -msgstr "" -"Define a distância máxima em segmentos de log entre pontos de controle WAL " -"automáticos." +#: commands/tablecmds.c:214 +#, c-format +msgid "view \"%s\" does not exist" +msgstr "visão \"%s\" não existe" -#: utils/misc/guc.c:1697 -msgid "Sets the maximum time between automatic WAL checkpoints." -msgstr "Define o tempo máximo entre pontos de controle WAL automáticos." +#: commands/tablecmds.c:215 +#, c-format +msgid "view \"%s\" does not exist, skipping" +msgstr "visão \"%s\" não existe, ignorando" -#: utils/misc/guc.c:1707 -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." +#: commands/tablecmds.c:217 +msgid "Use DROP VIEW to remove a view." +msgstr "Use DROP VIEW para remover uma visão." -#: utils/misc/guc.c:1709 -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:1720 -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:1730 -msgid "WAL writer sleep time between WAL flushes." -msgstr "Tempo de adormecimento do escritor do WAL entre ciclos do WAL." +#: commands/tablecmds.c:220 parser/parse_utilcmd.c:1505 +#, c-format +msgid "index \"%s\" does not exist" +msgstr "índice \"%s\" não existe" -#: utils/misc/guc.c:1741 -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." +#: commands/tablecmds.c:221 +#, c-format +msgid "index \"%s\" does not exist, skipping" +msgstr "índice \"%s\" não existe, ignorando" -#: utils/misc/guc.c:1750 -msgid "WAL sender sleep time between WAL replications." -msgstr "" -"Tempo de adormecimento do transmissor de WAL entre ciclos de replicação do " -"WAL." +#: commands/tablecmds.c:223 +msgid "Use DROP INDEX to remove an index." +msgstr "Use DROP INDEX para remover um índice." -#: utils/misc/guc.c:1760 -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." +#: commands/tablecmds.c:226 commands/typecmds.c:660 commands/typecmds.c:2661 +#: commands/functioncmds.c:128 utils/adt/regproc.c:973 +#: parser/parse_func.c:1502 parser/parse_type.c:196 +#, c-format +msgid "type \"%s\" does not exist" +msgstr "tipo \"%s\" não existe" -#: utils/misc/guc.c:1770 -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." +#: commands/tablecmds.c:227 commands/typecmds.c:666 +#, c-format +msgid "type \"%s\" does not exist, skipping" +msgstr "tipo \"%s\" não existe, ignorando" -#: utils/misc/guc.c:1780 -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." +#: commands/tablecmds.c:228 +#, c-format +msgid "\"%s\" is not a type" +msgstr "\"%s\" não é um tipo" -#: utils/misc/guc.c:1781 -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)." +#: commands/tablecmds.c:229 +msgid "Use DROP TYPE to remove a type." +msgstr "use DROP TYPE para remover um tipo." -#: utils/misc/guc.c:1791 -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." +#: commands/tablecmds.c:232 commands/tablecmds.c:8991 +#, c-format +msgid "foreign table \"%s\" does not exist" +msgstr "tabela externa \"%s\" não existe" -#: utils/misc/guc.c:1793 -msgid "Zero prints all queries. -1 turns this feature off." -msgstr "Zero registra todas as consultas. -1 desabilita essa funcionalidade." +#: commands/tablecmds.c:233 +#, c-format +msgid "foreign table \"%s\" does not exist, skipping" +msgstr "tabela externa \"%s\" não existe, ignorando" -#: utils/misc/guc.c:1802 -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." +#: commands/tablecmds.c:235 +msgid "Use DROP FOREIGN TABLE to remove a foreign table." +msgstr "Use DROP FOREIGN TABLE para remover uma tabela externa." -#: utils/misc/guc.c:1804 -msgid "Zero prints all actions. -1 turns autovacuum logging off." -msgstr "Zero registra todas as ações. -1 desabilita essa funcionalidade." +#: commands/tablecmds.c:436 +msgid "constraints on foreign tables are not supported" +msgstr "restrições em tabelas externas não são suportadas" -#: utils/misc/guc.c:1813 -msgid "Background writer sleep time between rounds." -msgstr "Tempo de adormecimento do escritor em segundo plano entre ciclos." +#: commands/tablecmds.c:552 commands/tablecmds.c:4285 +msgid "default values on foreign tables are not supported" +msgstr "valores padrão em tabelas externas não são suportados" -#: utils/misc/guc.c:1823 -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." +#: commands/tablecmds.c:932 +#, c-format +msgid "truncate cascades to table \"%s\"" +msgstr "truncando em cascata tabela \"%s\"" -#: utils/misc/guc.c:1838 -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." +#: commands/tablecmds.c:1163 +msgid "cannot truncate temporary tables of other sessions" +msgstr "não pode truncar tabelas temporárias de outras sessões" -#: utils/misc/guc.c:1839 -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." +#: commands/tablecmds.c:1304 commands/tablecmds.c:2079 commands/copy.c:3792 +#: commands/indexcmds.c:823 utils/adt/tsvector_op.c:1417 +#: parser/parse_expr.c:766 +#, c-format +msgid "column \"%s\" does not exist" +msgstr "coluna \"%s\" não existe" -#: utils/misc/guc.c:1852 -msgid "Automatic log file rotation will occur after N minutes." -msgstr "Rotação de arquivo de log automática ocorrerá após N minutos." +#: commands/tablecmds.c:1365 parser/parse_utilcmd.c:623 +#: parser/parse_utilcmd.c:1717 +#, c-format +msgid "inherited relation \"%s\" is not a table" +msgstr "relação herdada \"%s\" não é uma tabela" -#: utils/misc/guc.c:1862 -msgid "Automatic log file rotation will occur after N kilobytes." -msgstr "Rotação de arquivo de log automática ocorrerá após N kilobytes." +#: commands/tablecmds.c:1372 commands/tablecmds.c:8203 +#, c-format +msgid "cannot inherit from temporary relation \"%s\"" +msgstr "não pode herdar de tabela temporária \"%s\"" -#: utils/misc/guc.c:1872 -msgid "Shows the maximum number of function arguments." -msgstr "Mostra o número máximo de argumentos da função." +#: commands/tablecmds.c:1380 commands/tablecmds.c:8211 +msgid "cannot inherit from temporary relation of another session" +msgstr "não pode herdar de tabela temporária de outra sessão" -#: utils/misc/guc.c:1882 -msgid "Shows the maximum number of index keys." -msgstr "Mostra o número máximo de chaves do índice." +#: commands/tablecmds.c:1396 commands/tablecmds.c:8245 +#, c-format +msgid "relation \"%s\" would be inherited from more than once" +msgstr "relação \"%s\" seria herdada de mais de uma vez" -#: utils/misc/guc.c:1892 -msgid "Shows the maximum identifier length." -msgstr "Mostra o tamanho máximo de identificador." +#: commands/tablecmds.c:1444 +#, c-format +msgid "merging multiple inherited definitions of column \"%s\"" +msgstr "juntando múltiplas definições herdadas da coluna \"%s\"" -#: utils/misc/guc.c:1902 -msgid "Shows the size of a disk block." -msgstr "Mostra o tamanho de um bloco do disco." +#: commands/tablecmds.c:1452 +#, c-format +msgid "inherited column \"%s\" has a type conflict" +msgstr "coluna herdada \"%s\" tem um conflito de tipo" -#: utils/misc/guc.c:1912 -msgid "Shows the number of pages per disk file." -msgstr "Mostra o número de páginas por arquivo do disco." +#: commands/tablecmds.c:1454 commands/tablecmds.c:1475 +#: commands/tablecmds.c:1656 commands/tablecmds.c:1678 +#: parser/parse_coerce.c:1540 parser/parse_coerce.c:1560 +#: parser/parse_coerce.c:1605 parser/parse_param.c:217 +#, c-format +msgid "%s versus %s" +msgstr "%s versus %s" -#: utils/misc/guc.c:1922 -msgid "Shows the block size in the write ahead log." -msgstr "Mostra o tamanho do bloco no log de transação." +#: commands/tablecmds.c:1461 +#, c-format +msgid "inherited column \"%s\" has a collation conflict" +msgstr "coluna herdada \"%s\" tem um conflito de ordenação" -#: utils/misc/guc.c:1932 -msgid "Shows the number of pages per write ahead log segment." -msgstr "Mostra o número de páginas por segmento de log de transação." +#: commands/tablecmds.c:1463 commands/tablecmds.c:1666 +#: commands/tablecmds.c:4154 +#, c-format +msgid "\"%s\" versus \"%s\"" +msgstr "\"%s\" versus \"%s\"" -#: utils/misc/guc.c:1945 -msgid "Time to sleep between autovacuum runs." -msgstr "Tempo de adormecimento entre execuções do autovacuum." +#: commands/tablecmds.c:1473 +#, c-format +msgid "inherited column \"%s\" has a storage parameter conflict" +msgstr "coluna herdada \"%s\" tem um conflito de parâmetro de armazenamento" -#: utils/misc/guc.c:1954 -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." +#: commands/tablecmds.c:1581 parser/parse_utilcmd.c:776 +#: parser/parse_utilcmd.c:1154 parser/parse_utilcmd.c:1230 +msgid "cannot convert whole-row table reference" +msgstr "não pode converter referência a todo registro da tabela" -#: utils/misc/guc.c:1962 -msgid "Minimum number of tuple inserts, updates or deletes prior to analyze." +#: commands/tablecmds.c:1582 parser/parse_utilcmd.c:777 +#, c-format +msgid "Constraint \"%s\" contains a whole-row reference to table \"%s\"." msgstr "" -"Número mínimo de inserções, atualizações ou exclusões antes de analisar." +"Restrição \"%s\" contém uma referência a todo registro da tabela \"%s\"." -#: utils/misc/guc.c:1971 -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." +#: commands/tablecmds.c:1646 +#, c-format +msgid "merging column \"%s\" with inherited definition" +msgstr "juntando coluna \"%s\" com definição herdada" -#: utils/misc/guc.c:1981 -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." +#: commands/tablecmds.c:1654 +#, c-format +msgid "column \"%s\" has a type conflict" +msgstr "coluna \"%s\" tem um conflito de tipo" -#: utils/misc/guc.c:1990 -msgid "Time between issuing TCP keepalives." -msgstr "Tempo entre envios de mantenha-se vivo (keepalive) do TCP." +#: commands/tablecmds.c:1664 +#, c-format +msgid "column \"%s\" has a collation conflict" +msgstr "coluna \"%s\" tem um conflito de ordenação" -#: utils/misc/guc.c:1991 utils/misc/guc.c:2001 -msgid "A value of 0 uses the system default." -msgstr "Um valor 0 utiliza o padrão do sistema." +#: commands/tablecmds.c:1676 +#, c-format +msgid "column \"%s\" has a storage parameter conflict" +msgstr "coluna \"%s\" tem um conflito de parâmetro de armazenamento" -#: utils/misc/guc.c:2000 -msgid "Time between TCP keepalive retransmits." -msgstr "Tempo entre retransmissões de mantenha-se vivo (keepalive) do TCP." +#: commands/tablecmds.c:1728 +#, c-format +msgid "column \"%s\" inherits conflicting default values" +msgstr "coluna \"%s\" herdou valores padrão conflitantes" + +#: commands/tablecmds.c:1730 +msgid "To resolve the conflict, specify a default explicitly." +msgstr "Para resolver o conflito, especifique um padrão explicitamente." -#: utils/misc/guc.c:2010 +#: commands/tablecmds.c:1777 +#, c-format msgid "" -"Set the amount of traffic to send and receive before renegotiating the " -"encryption keys." +"check constraint name \"%s\" appears multiple times but with different " +"expressions" msgstr "" -"Define a quantidade de tráfego enviado e recebido antes de renegociar as " -"chaves de criptografia." +"nome da restrição de verificação \"%s\" aparece múltiplas vezes mas com " +"diferentes expressões" -#: utils/misc/guc.c:2020 -msgid "Maximum number of TCP keepalive retransmits." -msgstr "" -"Número máximo de retransmissões de mantenha-se vivo (keepalive) do TCP." +#: commands/tablecmds.c:1972 +msgid "cannot rename column of typed table" +msgstr "não pode renomear coluna de tabela tipada" -#: utils/misc/guc.c:2021 -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." +#: commands/tablecmds.c:1989 +#, c-format +msgid "\"%s\" is not a table, view, composite type, index or foreign table" 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." +"\"%s\" não é uma tabela, visão, tipo composto, índice ou tabela externa" -#: utils/misc/guc.c:2031 -msgid "Sets the maximum allowed result for exact search by GIN." +#: commands/tablecmds.c:2055 +#, c-format +msgid "inherited column \"%s\" must be renamed in child tables too" msgstr "" -"Define o resultado máximo permitido por uma busca exata utilizando GIN." +"coluna herdada \"%s\" deve ser renomeada nas tabelas descendentes também" -#: utils/misc/guc.c:2041 -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." +#: commands/tablecmds.c:2087 +#, c-format +msgid "cannot rename system column \"%s\"" +msgstr "não pode renomear coluna do sistema \"%s\"" -#: utils/misc/guc.c:2042 -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." +#: commands/tablecmds.c:2102 +#, c-format +msgid "cannot rename inherited column \"%s\"" +msgstr "não pode renomear coluna herdada \"%s\"" -#: utils/misc/guc.c:2054 -msgid "Shows the server version as an integer." -msgstr "Mostra a versão do servidor como um inteiro." +#: commands/tablecmds.c:2113 commands/tablecmds.c:4198 +#, c-format +msgid "column \"%s\" of relation \"%s\" already exists" +msgstr "coluna \"%s\" da relação \"%s\" já existe" -#: utils/misc/guc.c:2064 -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." +#: commands/tablecmds.c:2202 commands/tablecmds.c:7449 +#: commands/tablecmds.c:9125 +msgid "Use ALTER TYPE instead." +msgstr "Ao invés disso utilize ALTER TYPE." -#: utils/misc/guc.c:2065 -msgid "Zero logs all files. The default is -1 (turning this feature off)." +#. translator: first %s is a SQL command, eg ALTER TABLE +#: commands/tablecmds.c:2325 +#, c-format +msgid "" +"cannot %s \"%s\" because it is being used by active queries in this session" msgstr "" -"Zero registra todos os arquivos. O padrão é -1 (desabilita essa " -"funcionalidade)." +"não pode executar %s \"%s\" porque ela está sendo utilizada por consultas " +"ativas nessa sessão" -#: utils/misc/guc.c:2074 -msgid "Sets the size reserved for pg_stat_activity.current_query, in bytes." -msgstr "" -"Define o tamanho reservado para pg_stat_activity.current_query, em bytes." - -#: utils/misc/guc.c:2092 -msgid "" -"Sets the planner's estimate of the cost of a sequentially fetched disk page." +#. translator: first %s is a SQL command, eg ALTER TABLE +#: commands/tablecmds.c:2334 +#, c-format +msgid "cannot %s \"%s\" because it has pending trigger events" msgstr "" -"Define a estimativa do planejador do custo de busca sequencial de uma página " -"no disco." +"não pode executar %s \"%s\" porque ela tem eventos de gatilho pendentes" -#: utils/misc/guc.c:2101 -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." +#: commands/tablecmds.c:2431 +#, c-format +msgid "\"%s\" is not a composite type" +msgstr "\"%s\" não é um tipo composto" -#: utils/misc/guc.c:2110 -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)." +#: commands/tablecmds.c:3261 +#, c-format +msgid "cannot rewrite system relation \"%s\"" +msgstr "não pode reescrever relação do sistema \"%s\"" -#: utils/misc/guc.c:2119 -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." +#: commands/tablecmds.c:3271 +msgid "cannot rewrite temporary tables of other sessions" +msgstr "não pode reescrever tabelas temporárias de outras sessões" -#: utils/misc/guc.c:2128 -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." +#: commands/tablecmds.c:3496 +#, c-format +msgid "rewriting table \"%s\"" +msgstr "reescrevendo tabela \"%s\"" -#: utils/misc/guc.c:2138 -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." +#: commands/tablecmds.c:3500 +#, c-format +msgid "verifying table \"%s\"" +msgstr "verificando tabela \"%s\"" -#: utils/misc/guc.c:2148 -msgid "GEQO: selective pressure within the population." -msgstr "GEQO: pressão seletiva na população." +#: commands/tablecmds.c:3607 +#, c-format +msgid "column \"%s\" contains null values" +msgstr "coluna \"%s\" contém valores nulos" -#: utils/misc/guc.c:2157 -msgid "GEQO: seed for random path selection." -msgstr "GEQO: semente para seleção de caminhos randômicos." +#: commands/tablecmds.c:3621 +#, c-format +msgid "check constraint \"%s\" is violated by some row" +msgstr "restrição de verificação \"%s\" foi violada por algum registro" -#: utils/misc/guc.c:2166 -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." +#: commands/tablecmds.c:3762 commands/tablecmds.c:4714 +#, c-format +msgid "\"%s\" is not a table or index" +msgstr "\"%s\" não é uma tabela ou índice" -#: utils/misc/guc.c:2175 -msgid "Sets the seed for random-number generation." -msgstr "Define a semente para geração de números randômicos." +#: commands/tablecmds.c:3768 +#, c-format +msgid "\"%s\" is not a table or foreign table" +msgstr "\"%s\" não é uma tabela ou tabela externa" -#: utils/misc/guc.c:2185 -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 tupla antes de limpar como uma fração " -"de reltuples." +#: commands/tablecmds.c:3771 +#, c-format +msgid "\"%s\" is not a table, composite type, or foreign table" +msgstr "\"%s\" não é uma tabela, tipo composto ou tabela externa" -#: utils/misc/guc.c:2193 -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 tupla antes de analisar " -"como uma fração de reltuples." +#: commands/tablecmds.c:3781 +#, c-format +msgid "\"%s\" is of the wrong type" +msgstr "\"%s\" é de um tipo incorreto" + +#: commands/tablecmds.c:3930 commands/tablecmds.c:3937 +#, 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" -#: utils/misc/guc.c:2202 +#: commands/tablecmds.c:3944 +#, c-format msgid "" -"Time spent flushing dirty buffers during checkpoint, as fraction of " -"checkpoint interval." +"cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type" msgstr "" -"Tempo gasto escrevendo buffers sujos durante o ponto de controle, como " -"fração do intervalo de ponto de controle." +"não pode alterar tabela externa \"%s\" porque coluna \"%s.%s\" utiliza seu " +"tipo registro" -#: utils/misc/guc.c:2220 -msgid "Sets the shell command that will be called to archive a WAL file." +#: commands/tablecmds.c:3951 +#, c-format +msgid "cannot alter table \"%s\" because column \"%s.%s\" uses its row type" msgstr "" -"Define um comando do interpretador de comandos (shell) que será chamado para " -"arquivar um arquivo do WAL." +"não pode alterar tabela \"%s\" porque coluna \"%s.%s\" utiliza seu tipo " +"registro" -#: utils/misc/guc.c:2229 -msgid "Sets the client's character set encoding." -msgstr "Define a codificação do conjunto de caracteres do cliente." +#: commands/tablecmds.c:4013 +#, 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" -#: utils/misc/guc.c:2239 -msgid "Controls information prefixed to each log line." -msgstr "Controla informação prefixada em cada linha do log." +#: commands/tablecmds.c:4015 +msgid "Use ALTER ... CASCADE to alter the typed tables too." +msgstr "Utilize ALTER ... CASCADE para alterar as tabelas tipadas também." -#: utils/misc/guc.c:2240 -msgid "If blank, no prefix is used." -msgstr "Se estiver em branco, nenhum prefixo é utilizado." +#: commands/tablecmds.c:4059 +#, c-format +msgid "type %s is not a composite type" +msgstr "tipo %s não é um tipo composto" -#: utils/misc/guc.c:2248 -msgid "Sets the time zone to use in log messages." -msgstr "Define a zona horária a ser utilizada em mensagens de log." +#: commands/tablecmds.c:4085 +msgid "cannot add column to typed table" +msgstr "não pode adicionar coluna a tabela tipada" -#: utils/misc/guc.c:2257 -msgid "Sets the display format for date and time values." -msgstr "Define o formato de exibição para valores de data e hora." +#: commands/tablecmds.c:4146 commands/tablecmds.c:8399 +#, c-format +msgid "child table \"%s\" has different type for column \"%s\"" +msgstr "tabela descendente \"%s\" tem tipo diferente da coluna \"%s\"" -#: utils/misc/guc.c:2258 -msgid "Also controls interpretation of ambiguous date inputs." -msgstr "Também controla interpretação de entrada de datas ambíguas." +#: commands/tablecmds.c:4152 commands/tablecmds.c:8406 +#, c-format +msgid "child table \"%s\" has different collation for column \"%s\"" +msgstr "tabela descendente \"%s\" tem ordenação diferente da coluna \"%s\"" -#: utils/misc/guc.c:2268 -msgid "Sets the default tablespace to create tables and indexes in." -msgstr "Define a tablespace padrão para criação de tabelas e índices." +#: commands/tablecmds.c:4162 +#, c-format +msgid "child table \"%s\" has a conflicting \"%s\" column" +msgstr "tabela descendente \"%s\" tem uma coluna conflitante \"%s\"" -#: utils/misc/guc.c:2269 -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." +#: commands/tablecmds.c:4174 +#, c-format +msgid "merging definition of column \"%s\" for child \"%s\"" +msgstr "juntando definição da coluna \"%s\" para tabela descendente \"%s\"" -#: utils/misc/guc.c:2278 -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." +#: commands/tablecmds.c:4404 +msgid "column must be added to child tables too" +msgstr "coluna deve ser adicionada as tabelas descendentes também" -#: utils/misc/guc.c:2288 -msgid "Sets the path for dynamically loadable modules." -msgstr "Define o caminho para módulos carregáveis dinamicamente." +#: commands/tablecmds.c:4534 commands/tablecmds.c:4626 +#: commands/tablecmds.c:4671 commands/tablecmds.c:4767 +#: commands/tablecmds.c:4811 commands/tablecmds.c:4890 +#: commands/tablecmds.c:6633 +#, c-format +msgid "cannot alter system column \"%s\"" +msgstr "não pode alterar coluna do sistema \"%s\"" -#: utils/misc/guc.c:2289 -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." +#: commands/tablecmds.c:4570 +#, c-format +msgid "column \"%s\" is in a primary key" +msgstr "coluna \"%s\" está em uma chave primária" -#: utils/misc/guc.c:2301 -msgid "Sets the location of the Kerberos server key file." -msgstr "Define o local do arquivo da chave do servidor Kerberos." +#: commands/tablecmds.c:4741 +#, c-format +msgid "statistics target %d is too low" +msgstr "valor da estatística %d é muito pequeno" -#: utils/misc/guc.c:2311 -msgid "Sets the name of the Kerberos service." -msgstr "Define o nome do serviço Kerberos." +#: commands/tablecmds.c:4749 +#, c-format +msgid "lowering statistics target to %d" +msgstr "diminuindo valor da estatística para %d" -#: utils/misc/guc.c:2320 -msgid "Sets the Bonjour service name." -msgstr "Define o nome do serviço Bonjour." +#: commands/tablecmds.c:4871 +#, c-format +msgid "invalid storage type \"%s\"" +msgstr "tipo de armazenamento \"%s\" é inválido" -#: utils/misc/guc.c:2331 -msgid "Shows the collation order locale." -msgstr "Mostra a configuração regional utilizada na comparação ao ordenar." +#: commands/tablecmds.c:4902 +#, c-format +msgid "column data type %s can only have storage PLAIN" +msgstr "tipo de dado da coluna %s só pode ter armazenamento PLAIN" -#: utils/misc/guc.c:2341 -msgid "Shows the character classification and case conversion locale." -msgstr "" -"Mostra a configuração regional de classificação de caracteres e conversão " -"entre maiúsculas/minúsculas." +#: commands/tablecmds.c:4932 +msgid "cannot drop column from typed table" +msgstr "não pode apagar coluna de tabela tipada" -#: utils/misc/guc.c:2351 -msgid "Sets the language in which messages are displayed." -msgstr "Define a língua na qual as mensagens são mostradas." +#: commands/tablecmds.c:4973 +#, c-format +msgid "column \"%s\" of relation \"%s\" does not exist, skipping" +msgstr "coluna \"%s\" da relação \"%s\" não existe, ignorando" -#: utils/misc/guc.c:2360 -msgid "Sets the locale for formatting monetary amounts." -msgstr "Define a configuração regional para formato de moeda." +#: commands/tablecmds.c:4986 +#, c-format +msgid "cannot drop system column \"%s\"" +msgstr "não pode remover coluna do sistema \"%s\"" -#: utils/misc/guc.c:2369 -msgid "Sets the locale for formatting numbers." -msgstr "Define a configuração regional para formato de número." +#: commands/tablecmds.c:4993 +#, c-format +msgid "cannot drop inherited column \"%s\"" +msgstr "não pode remover coluna herdada \"%s\"" -#: utils/misc/guc.c:2378 -msgid "Sets the locale for formatting date and time values." -msgstr "Define a configuração regional para formato de data e hora." +#: commands/tablecmds.c:5219 +#, 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\"" -#: utils/misc/guc.c:2387 -msgid "Lists shared libraries to preload into server." -msgstr "Mostra bibliotecas compartilhadas a serem carregadas no servidor." +#: commands/tablecmds.c:5413 +msgid "constraint must be added to child tables too" +msgstr "restrição deve ser adicionada as tabelas descendentes também" -#: utils/misc/guc.c:2397 -msgid "Lists shared libraries to preload into each backend." +#: commands/tablecmds.c:5481 commands/sequence.c:1425 +#, c-format +msgid "referenced relation \"%s\" is not a table" +msgstr "relação referenciada \"%s\" não é uma tabela" + +#: commands/tablecmds.c:5504 +msgid "constraints on permanent tables may reference only permanent tables" msgstr "" -"Mostra bibliotecas compartilhadas a serem carregadas em cdas processo " -"servidor." +"restrições em tabelas permanentes só podem referenciar tabelas permanentes" -#: utils/misc/guc.c:2407 -msgid "Sets the schema search order for names that are not schema-qualified." +#: commands/tablecmds.c:5511 +msgid "" +"constraints on unlogged tables may reference only permanent or unlogged " +"tables" msgstr "" -"Define a ordem de busca em esquemas para nomes que não especificam um " -"esquema." +"restrições em tabelas unlogged só podem referenciar tabelas permanentes ou " +"unlogged" -#: utils/misc/guc.c:2418 -msgid "Sets the server (database) character set encoding." +#: commands/tablecmds.c:5517 +msgid "constraints on temporary tables may reference only temporary tables" msgstr "" -"Define a codificação do conjunto de caracteres do servidor (banco de dados)." +"restrições em tabelas temporárias só podem referenciar tabelas temporárias" -#: utils/misc/guc.c:2429 -msgid "Shows the server version." -msgstr "Mostra a versão do servidor." +#: commands/tablecmds.c:5521 +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" -#: utils/misc/guc.c:2440 -msgid "Sets the current role." -msgstr "Define a role atual." +#: commands/tablecmds.c:5582 +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" -#: utils/misc/guc.c:2451 -msgid "Sets the session user name." -msgstr "Define o nome de usuário da sessão." +#: commands/tablecmds.c:5671 +#, c-format +msgid "foreign key constraint \"%s\" cannot be implemented" +msgstr "restrição de chave estrangeira \"%s\" não pode ser implementada" -#: utils/misc/guc.c:2461 -msgid "Sets the destination for server log output." -msgstr "Define o destino do log do servidor." +#: commands/tablecmds.c:5674 +#, 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." -#: utils/misc/guc.c:2462 -msgid "" -"Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and " -"\"eventlog\", depending on the platform." +#: commands/tablecmds.c:5788 +#, c-format +msgid "foreign key constraint \"%s\" of relation \"%s\" does not exist" +msgstr "restrição de chave estrangeira \"%s\" da relação \"%s\" não existe" + +#: commands/tablecmds.c:5851 +#, c-format +msgid "column \"%s\" referenced in foreign key constraint does not exist" msgstr "" -"Valores válidos são combinações de \"stderr\", \"syslog\", \"csvlog\" e " -"\"eventlog\", dependendo da plataforma." +"coluna \"%s\" referenciada na restrição de chave estrangeira não existe" -#: utils/misc/guc.c:2472 -msgid "Sets the destination directory for log files." -msgstr "Define o diretório de destino dos arquivos de log." +#: commands/tablecmds.c:5856 +#, 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" -#: utils/misc/guc.c:2473 -msgid "Can be specified as relative to the data directory or as absolute path." +#: commands/tablecmds.c:5921 +#, c-format +msgid "cannot use a deferrable primary key for referenced table \"%s\"" msgstr "" -"Pode ser especificado como caminho relativo ao diretório de dados ou como " -"caminho absoluto." +"não pode utilizar uma chave primária postergável na tabela referenciada \"%s" +"\"" -#: utils/misc/guc.c:2482 -msgid "Sets the file name pattern for log files." -msgstr "Define o padrão de nome de arquivo para arquivos de log." +#: commands/tablecmds.c:5938 +#, c-format +msgid "there is no primary key for referenced table \"%s\"" +msgstr "não há chave primária na tabela referenciada \"%s\"" -#: utils/misc/guc.c:2493 -msgid "Sets the program name used to identify PostgreSQL messages in syslog." +#: commands/tablecmds.c:6090 +#, c-format +msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" msgstr "" -"Define o nome do programa utilizado para identificar mensagens do PostgreSQL " -"no syslog." - -#: utils/misc/guc.c:2504 -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:2513 -msgid "Selects a file of time zone abbreviations." -msgstr "Seleciona um arquivo de abreviações de zonas horárias." - -#: utils/misc/guc.c:2522 -msgid "Sets the current transaction's isolation level." -msgstr "Define o nível de isolamento da transação atual." - -#: utils/misc/guc.c:2532 -msgid "Sets the owning group of the Unix-domain socket." -msgstr "Define o grupo dono do soquete de domínio Unix." +"não pode utilizar uma restrição de unicidade postergável na tabela " +"referenciada \"%s\"" -#: utils/misc/guc.c:2533 +#: commands/tablecmds.c:6095 +#, c-format 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:2542 -msgid "Sets the directory where the Unix-domain socket will be created." -msgstr "Define o diretório onde o soquete de domínio Unix será criado." +"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\"" -#: utils/misc/guc.c:2552 -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." +#: commands/tablecmds.c:6146 +#, c-format +msgid "validating foreign key constraint \"%s\"" +msgstr "validando restrição de chave estrangeira \"%s\"" -#: utils/misc/guc.c:2562 -msgid "Sets the list of known custom variable classes." -msgstr "Define a lista de classes de variáveis personalizadas conhecidas." +#: commands/tablecmds.c:6442 +#, c-format +msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" +msgstr "não pode remover restrição herdada \"%s\" da relação \"%s\"" -#: utils/misc/guc.c:2572 -msgid "Sets the server's data directory." -msgstr "Define o diretório de dados do servidor." +#: commands/tablecmds.c:6469 commands/tablecmds.c:6582 +#, c-format +msgid "constraint \"%s\" of relation \"%s\" does not exist" +msgstr "restrição \"%s\" da relação \"%s\" não existe" -#: utils/misc/guc.c:2582 -msgid "Sets the server's main configuration file." -msgstr "Define o arquivo de configuração principal do servidor." +#: commands/tablecmds.c:6475 +#, c-format +msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" +msgstr "restrição \"%s\" da relação \"%s\" não existe, ignorando" -#: utils/misc/guc.c:2592 -msgid "Sets the server's \"hba\" configuration file." -msgstr "Define o arquivo de configuração \"hba\" do servidor." +#: commands/tablecmds.c:6617 +msgid "cannot alter column type of typed table" +msgstr "não pode alterar tipo de coluna de tabela tipada" -#: utils/misc/guc.c:2602 -msgid "Sets the server's \"ident\" configuration file." -msgstr "Define o arquivo de configuração \"ident\" do servidor." +#: commands/tablecmds.c:6640 +#, c-format +msgid "cannot alter inherited column \"%s\"" +msgstr "não pode alterar coluna herdada \"%s\"" -#: utils/misc/guc.c:2612 -msgid "Writes the postmaster PID to the specified file." -msgstr "Escreve o PID do postmaster no arquivo especificado." +#: commands/tablecmds.c:6682 +msgid "transform expression must not return a set" +msgstr "expressão de transformação não deve retornar um conjunto" -#: utils/misc/guc.c:2622 -msgid "Writes temporary statistics files to the specified directory." -msgstr "" -"Escreve arquivos temporários de estatísticas em um diretório especificado." +#: commands/tablecmds.c:6688 +msgid "cannot use subquery in transform expression" +msgstr "não pode utilizar subconsulta em expressão de transformação" -#: utils/misc/guc.c:2632 -msgid "Sets default text search configuration." -msgstr "Define a configuração de busca textual padrão." +#: commands/tablecmds.c:6692 +msgid "cannot use aggregate function in transform expression" +msgstr "não pode utilizar função de agregação em expressão de transformação" -#: utils/misc/guc.c:2642 -msgid "Sets the list of allowed SSL ciphers." -msgstr "Define a lista de cifras SSL permitidas." +#: commands/tablecmds.c:6696 +msgid "cannot use window function in transform expression" +msgstr "não pode utilizar função deslizante em expressão de transformação" -#: utils/misc/guc.c:2653 -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." +#: commands/tablecmds.c:6715 +#, c-format +msgid "column \"%s\" cannot be cast to type %s" +msgstr "coluna \"%s\" não pode ser convertida para tipo %s" -#: utils/misc/guc.c:2672 -msgid "Sets whether \"\\'\" is allowed in string literals." -msgstr "Define se \"\\'\" é permitido em cadeias de caracteres literais." +#: commands/tablecmds.c:6762 +#, 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" -#: utils/misc/guc.c:2681 -msgid "Sets the output format for bytea." -msgstr "Define o formato de saída para bytea." +#: commands/tablecmds.c:6843 +#, c-format +msgid "cannot alter type of column \"%s\" twice" +msgstr "não pode alterar tipo de coluna \"%s\" duas vezes" -#: utils/misc/guc.c:2690 -msgid "Sets the message levels that are sent to the client." -msgstr "Define os níveis de mensagem que são enviadas ao cliente." +#: commands/tablecmds.c:6879 +#, c-format +msgid "default for column \"%s\" cannot be cast to type %s" +msgstr "valor padrão para coluna \"%s\" não pode ser convertido para tipo %s" -#: utils/misc/guc.c:2691 utils/misc/guc.c:2740 utils/misc/guc.c:2750 -#: utils/misc/guc.c:2790 -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." +#: commands/tablecmds.c:7005 +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" -#: utils/misc/guc.c:2700 -msgid "Enables the planner to use constraints to optimize queries." -msgstr "Habilita o planejador a usar retrições para otimizar consultas." +#: commands/tablecmds.c:7006 commands/tablecmds.c:7025 +#, c-format +msgid "%s depends on column \"%s\"" +msgstr "%s depende da coluna \"%s\"" -#: utils/misc/guc.c:2701 -msgid "" -"Table scans will be skipped if their constraints guarantee that no rows " -"match the query." +#: commands/tablecmds.c:7024 +msgid "cannot alter type of a column used in a trigger definition" msgstr "" -"Buscas em tabelas serão ignoradas se suas restrições garantirem que nenhum " -"registro corresponde a consulta." - -#: utils/misc/guc.c:2711 -msgid "Sets the transaction isolation level of each new transaction." -msgstr "Define nível de isolamento de transação de cada nova transação." +"não pode alterar tipo de uma coluna utilizada em uma definição de gatilho" -#: utils/misc/guc.c:2720 -msgid "Sets the display format for interval values." -msgstr "Define o formato de exibição para valores interval." +#: commands/tablecmds.c:7417 +#, c-format +msgid "cannot change owner of index \"%s\"" +msgstr "não pode mudar dono do índice \"%s\"" -#: utils/misc/guc.c:2730 -msgid "Sets the verbosity of logged messages." -msgstr "Define o detalhamento das mensagens registradas." +#: commands/tablecmds.c:7419 +msgid "Change the ownership of the index's table, instead." +msgstr "Ao invés disso, mude o dono da tabela do índice." -#: utils/misc/guc.c:2739 -msgid "Sets the message levels that are logged." -msgstr "Define os níveis de mensagem que serão registrados." +#: commands/tablecmds.c:7435 +#, c-format +msgid "cannot change owner of sequence \"%s\"" +msgstr "não pode mudar dono da sequência \"%s\"" -#: utils/misc/guc.c:2749 -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." +#: commands/tablecmds.c:7437 commands/tablecmds.c:9115 +#, c-format +msgid "Sequence \"%s\" is linked to table \"%s\"." +msgstr "Sequência \"%s\" está ligada a tabela \"%s\"." -#: utils/misc/guc.c:2759 -msgid "Sets the type of statements logged." -msgstr "Define os tipos de comandos registrados." +#: commands/tablecmds.c:7458 commands/tablecmds.c:9133 +#, 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" -#: utils/misc/guc.c:2769 -msgid "Sets the syslog \"facility\" to be used when syslog enabled." -msgstr "" -"Define o syslog \"facility\" a ser utilizado quando syslog estiver " -"habilitado." +#: commands/tablecmds.c:7743 commands/cluster.c:178 +#, c-format +msgid "index \"%s\" for table \"%s\" does not exist" +msgstr "índice \"%s\" na tabela \"%s\" não existe" -#: utils/misc/guc.c:2779 -msgid "Sets the session's behavior for triggers and rewrite rules." -msgstr "Define o comportamento de sessões para gatilhos e regras de reescrita." +#: commands/tablecmds.c:7790 +msgid "cannot have multiple SET TABLESPACE subcommands" +msgstr "não pode ter múltiplos subcomandos SET TABLESPACE" -#: utils/misc/guc.c:2789 -msgid "Enables logging of recovery-related debugging information." -msgstr "Habilita o registro de informação de depuração relacionada a recuperação." +#: commands/tablecmds.c:7843 +#, c-format +msgid "\"%s\" is not a table, index, or TOAST table" +msgstr "\"%s\" não é uma tabela, índice ou tabela TOAST" -#: utils/misc/guc.c:2803 -msgid "Collects function-level statistics on database activity." -msgstr "Coleta estatísticas de funções sobre a atividade do banco de dados." +#: commands/tablecmds.c:7964 +#, c-format +msgid "cannot move system relation \"%s\"" +msgstr "não pode mover relação do sistema \"%s\"" -#: utils/misc/guc.c:2812 -msgid "Set the level of information written to the WAL." -msgstr "Define o nível de informação escrito no WAL." +#: commands/tablecmds.c:7980 +msgid "cannot move temporary tables of other sessions" +msgstr "não pode mover tabelas temporárias de outras sessões" -#: utils/misc/guc.c:2821 -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." +#: commands/tablecmds.c:8172 +msgid "cannot change inheritance of typed table" +msgstr "não pode mudar herança de tabela tipada" -#: utils/misc/guc.c:2831 -msgid "Sets how binary values are to be encoded in XML." -msgstr "Define como valores binários serão codificados em XML." +#: commands/tablecmds.c:8218 +msgid "cannot inherit to temporary relation of another session" +msgstr "não pode herdar a tabela temporária de outra sessão" -#: utils/misc/guc.c:2840 -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." +#: commands/tablecmds.c:8272 +msgid "circular inheritance not allowed" +msgstr "herança circular não é permitida" -#: utils/misc/guc.c:3612 +#: commands/tablecmds.c:8273 #, 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ã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" +msgid "\"%s\" is already a child of \"%s\"." +msgstr "\"%s\" já é um descendente de \"%s\"." -#: utils/misc/guc.c:3631 +#: commands/tablecmds.c:8281 #, 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" +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" -#: utils/misc/guc.c:3651 +#: commands/tablecmds.c:8417 #, 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ã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" +msgid "column \"%s\" in child table must be marked NOT NULL" +msgstr "coluna \"%s\" na tabela descendente deve ser definida como NOT NULL" -#: utils/misc/guc.c:3682 +#: commands/tablecmds.c:8433 #, 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 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" +msgid "child table is missing column \"%s\"" +msgstr "tabela descendente está faltando coluna \"%s\"" -#: utils/misc/guc.c:3705 +#: commands/tablecmds.c:8512 #, 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" +msgid "child table \"%s\" has different definition for check constraint \"%s\"" 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" +"tabela descendente \"%s\" tem definição diferente para restrição de " +"verificação \"%s\"" -#: utils/misc/guc.c:4310 utils/misc/guc.c:4474 -msgid "Value exceeds integer range." -msgstr "Valor excede intervalo de inteiros." +#: commands/tablecmds.c:8536 +#, c-format +msgid "child table is missing constraint \"%s\"" +msgstr "tabela descendente está faltando restrição \"%s\"" -#: utils/misc/guc.c:4329 -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\"." +#: commands/tablecmds.c:8616 +#, c-format +msgid "relation \"%s\" is not a parent of relation \"%s\"" +msgstr "relação \"%s\" não é um ancestral da relação \"%s\"" -#: utils/misc/guc.c:4388 -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" -"\"." +#: commands/tablecmds.c:8833 +msgid "typed tables cannot inherit" +msgstr "tabelas tipadas não podem herdar" -#: utils/misc/guc.c:4697 utils/misc/guc.c:5361 utils/misc/guc.c:5411 -#: utils/misc/guc.c:6115 utils/misc/guc.c:6274 utils/misc/guc.c:7496 -#: guc-file.l:217 +#: commands/tablecmds.c:8864 #, c-format -msgid "unrecognized configuration parameter \"%s\"" -msgstr "parâmetro de configuração \"%s\" desconhecido" +msgid "table is missing column \"%s\"" +msgstr "tabela está faltando coluna \"%s\"" -#: utils/misc/guc.c:4724 +#: commands/tablecmds.c:8874 #, c-format -msgid "parameter \"%s\" cannot be changed" -msgstr "parâmetro \"%s\" não pode ser mudado" +msgid "table has column \"%s\" where type requires \"%s\"" +msgstr "tabela tem coluna \"%s\" onde tipo requer \"%s\"" -#: utils/misc/guc.c:4741 utils/misc/guc.c:4749 guc-file.l:264 +#: commands/tablecmds.c:8883 #, 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" +msgid "table \"%s\" has different type for column \"%s\"" +msgstr "tabela \"%s\" tem tipo diferente para coluna \"%s\"" -#: utils/misc/guc.c:4759 +#: commands/tablecmds.c:8896 #, c-format -msgid "parameter \"%s\" cannot be changed now" -msgstr "parâmetro \"%s\" não pode ser mudado agora" +msgid "table has extra column \"%s\"" +msgstr "tabela tem coluna extra \"%s\"" -#: utils/misc/guc.c:4790 +#: commands/tablecmds.c:8943 #, 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" +msgid "\"%s\" is not a typed table" +msgstr "\"%s\" não é uma tabela tipada" + +#: commands/tablecmds.c:9114 +msgid "cannot move an owned sequence into another schema" +msgstr "não pode mover uma sequência ligada para outro esquema" -#: utils/misc/guc.c:4800 utils/misc/guc.c:7511 +#: commands/tablecmds.c:9221 #, c-format -msgid "permission denied to set parameter \"%s\"" -msgstr "permissão negada ao definir parâmetro \"%s\"" +msgid "relation \"%s\" already exists in schema \"%s\"" +msgstr "relação \"%s\" já existe no esquema \"%s\"" -#: utils/misc/guc.c:4838 +#: commands/variable.c:160 utils/misc/guc.c:8205 #, c-format -msgid "cannot set parameter \"%s\" within security-definer function" -msgstr "não pode definir parâmetro \"%s\" em função com privilégios do dono" +msgid "Unrecognized key word: \"%s\"." +msgstr "Palavra chave desconhecida: \"%s\"." -#: utils/misc/guc.c:4895 access/transam/xlog.c:5234 access/transam/xlog.c:5243 -#, c-format -msgid "parameter \"%s\" requires a Boolean value" -msgstr "parâmetro \"%s\" requer um valor booleano" +#: commands/variable.c:172 +msgid "Conflicting \"datestyle\" specifications." +msgstr "Especificações conflitantes de \"datestyle\"" + +#: commands/variable.c:328 +msgid "Cannot specify months in time zone interval." +msgstr "Não pode especificar meses em intervalo de zona horária." -#: utils/misc/guc.c:4917 utils/misc/guc.c:4992 +#: commands/variable.c:334 +msgid "Cannot specify days in time zone interval." +msgstr "Não pode especificar dias em intervalo de zona horária." + +#: commands/variable.c:380 commands/variable.c:519 #, c-format -msgid "invalid value for parameter \"%s\": %d" -msgstr "valor é inválido para parâmetro \"%s\": %d" +msgid "time zone \"%s\" appears to use leap seconds" +msgstr "zona horária \"%s\" parece utilizar segundos intercalados" + +#: commands/variable.c:382 commands/variable.c:521 +msgid "PostgreSQL does not support leap seconds." +msgstr "PostgreSQL não suporta segundos intercalados." + +#: commands/variable.c:589 +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:596 +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:603 +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:652 +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:659 +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:666 storage/lmgr/predicate.c:1570 +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:667 +msgid "You can use REPEATABLE READ instead." +msgstr "Você pode utilizar REPEATABLE READ ao invés disso." + +#: commands/variable.c:715 +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:721 +msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query" +msgstr "" +"SET TRANSACTION [NOT] DEFERRABLE deve ser chamado antes de qualquer consulta" -#: utils/misc/guc.c:4961 utils/misc/guc.c:5163 utils/misc/guc.c:5229 -#: utils/misc/guc.c:5255 guc-file.l:178 +#: commands/variable.c:803 #, c-format -msgid "invalid value for parameter \"%s\": \"%s\"" -msgstr "valor é inválido para parâmetro \"%s\": \"%s\"" +msgid "Conversion between %s and %s is not supported." +msgstr "conversão entre %s e %s não é suportada." -#: utils/misc/guc.c:4970 +#: commands/variable.c:810 +msgid "Cannot change \"client_encoding\" now." +msgstr "Não pode mudar \"client_encoding\" agora." + +#: commands/variable.c:893 commands/variable.c:965 commands/user.c:623 +#: commands/user.c:825 commands/user.c:905 commands/user.c:1056 +#: utils/adt/acl.c:4852 utils/init/miscinit.c:432 #, 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)" +msgid "role \"%s\" does not exist" +msgstr "role \"%s\" não existe" -#: utils/misc/guc.c:5034 +#: commands/variable.c:980 #, c-format -msgid "parameter \"%s\" requires a numeric value" -msgstr "parâmetro \"%s\" requer um valor numérico" +msgid "permission denied to set role \"%s\"" +msgstr "permissão negada ao definir role \"%s\"" -#: utils/misc/guc.c:5042 +#: commands/define.c:67 commands/define.c:222 commands/define.c:254 +#: commands/define.c:282 #, 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)" +msgid "%s requires a parameter" +msgstr "%s requer um parâmetro" -#: utils/misc/guc.c:5064 +#: commands/define.c:108 commands/define.c:119 commands/define.c:189 +#: commands/define.c:207 #, c-format -msgid "invalid value for parameter \"%s\": %g" -msgstr "valor é inválido para parâmetro \"%s\": %g" +msgid "%s requires a numeric value" +msgstr "%s requer um valor numérico" -#: utils/misc/guc.c:5367 utils/misc/guc.c:5415 utils/misc/guc.c:6278 +#: commands/define.c:175 #, c-format -msgid "must be superuser to examine \"%s\"" -msgstr "deve ser super-usuário para examinar \"%s\"" +msgid "%s requires a Boolean value" +msgstr "%s requer um valor Booleano" -#: utils/misc/guc.c:5526 +#: commands/define.c:236 #, c-format -msgid "SET %s takes only one argument" -msgstr "SET %s só tem um argumento" +msgid "argument of %s must be a name" +msgstr "argumento de %s deve ser um nome" -#: utils/misc/guc.c:5753 -msgid "SET requires parameter name" -msgstr "SET requer nome do parâmetro" +#: commands/define.c:266 +#, c-format +msgid "argument of %s must be a type name" +msgstr "argumento de %s deve ser um nome de um tipo" -#: utils/misc/guc.c:5868 +#: commands/define.c:291 #, c-format -msgid "attempt to redefine parameter \"%s\"" -msgstr "tentativa de redefinir parâmetro \"%s\"" +msgid "%s requires an integer value" +msgstr "%s requer um valor inteiro" -#: utils/misc/guc.c:7212 +#: commands/define.c:312 #, c-format -msgid "could not parse setting for parameter \"%s\"" -msgstr "não pôde analisar definição para parâmetro \"%s\"" +msgid "invalid argument for %s: \"%s\"" +msgstr "argumento inválido para %s: \"%s\"" -#: utils/misc/guc.c:7555 -msgid "invalid list syntax for parameter \"log_destination\"" -msgstr "sintaxe de lista é inválida para parâmetro \"log_destination\"" +#: commands/explain.c:153 +#, c-format +msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\"" +msgstr "valor desconhecido para opção EXPLAIN \"%s\": \"%s\"" -#: utils/misc/guc.c:7579 +#: commands/explain.c:159 #, c-format -msgid "unrecognized \"log_destination\" key word: \"%s\"" -msgstr "palavra chave de \"log_destination\" desconhecida: \"%s\"" +msgid "unrecognized EXPLAIN option \"%s\"" +msgstr "opção EXPLAIN desconhecida \"%s\"" -#: utils/misc/guc.c:7654 -msgid "SET AUTOCOMMIT TO OFF is no longer supported" -msgstr "SET AUTOCOMMIT TO OFF não é mais suportado" +#: commands/explain.c:166 +msgid "EXPLAIN option BUFFERS requires ANALYZE" +msgstr "opção BUFFERS do EXPLAIN requer ANALYZE" -#: utils/misc/guc.c:7726 -msgid "assertion checking is not supported by this build" -msgstr "verificação de asserção não é suportada por essa construção" +#: commands/dbcommands.c:202 +msgid "LOCATION is not supported anymore" +msgstr "LOCATION não é mais suportado" -#: utils/misc/guc.c:7741 -msgid "Bonjour is not supported by this build" -msgstr "Bonjour não é suportado por essa construção" +#: commands/dbcommands.c:203 +msgid "Consider using tablespaces instead." +msgstr "Considere utilizar tablespaces." -#: utils/misc/guc.c:7756 -msgid "SSL is not supported by this build" -msgstr "SSL não é suportado por essa construção" +#: commands/dbcommands.c:226 utils/adt/ascii.c:144 +#, c-format +msgid "%d is not a valid encoding code" +msgstr "%d não é um código de codificação válido" -#: utils/misc/guc.c:7770 -msgid "cannot enable parameter when \"log_statement_stats\" is true" -msgstr "não pode habilitar parâmetro quando \"log_statement_stats\" é true" +#: commands/dbcommands.c:236 utils/adt/ascii.c:126 +#, c-format +msgid "%s is not a valid encoding name" +msgstr "%s não é um nome de codificação válido" -#: utils/misc/guc.c:7786 -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" +#: commands/dbcommands.c:254 commands/dbcommands.c:1374 commands/user.c:267 +#: commands/user.c:606 +#, c-format +msgid "invalid connection limit: %d" +msgstr "limite de conexão inválido: %d" -#: utils/misc/guc.c:7804 -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/dbcommands.c:273 +msgid "permission denied to create database" +msgstr "permissão negada ao criar banco de dados" -#: utils/misc/guc.c:7815 -msgid "cannot set transaction read-write mode during recovery" -msgstr "não pode definir modo leitura-escrita de transação durante recuperação" +#: commands/dbcommands.c:296 +#, c-format +msgid "template database \"%s\" does not exist" +msgstr "banco de dados modelo \"%s\" não existe" -#: utils/misc/tzparser.c:63 +#: commands/dbcommands.c:308 #, c-format -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" +msgid "permission denied to copy database \"%s\"" +msgstr "permissão negada ao copiar banco de dados \"%s\"" -#: utils/misc/tzparser.c:72 +#: commands/dbcommands.c:324 #, 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" +msgid "invalid server encoding %d" +msgstr "codificação do servidor %d é inválida" -#: utils/misc/tzparser.c:86 +#: commands/dbcommands.c:330 commands/dbcommands.c:334 #, 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" +msgid "invalid locale name %s" +msgstr "nome de configuração regional %s é inválido" -#: utils/misc/tzparser.c:123 +#: commands/dbcommands.c:353 #, c-format -msgid "missing time zone abbreviation in time zone file \"%s\", line %d" +msgid "" +"new encoding (%s) is incompatible with the encoding of the template database " +"(%s)" msgstr "" -"faltando abreviação de zona horária no arquivo de zona horária \"%s\", linha " -"%d" +"nova codificação (%s) é imcompatível com a codificação do banco de dados " +"modelo (%s)" -#: utils/misc/tzparser.c:134 -#, c-format -msgid "missing time zone offset in time zone file \"%s\", line %d" +#: commands/dbcommands.c:356 +msgid "" +"Use the same encoding as in the template database, or use template0 as " +"template." msgstr "" -"faltando deslocamento de zona horária no arquivo de zona horária \"%s\", " -"linha %d" +"Utilize a mesma codificação do banco de dados modelo ou utilize template0 " +"como modelo." -#: utils/misc/tzparser.c:143 +#: commands/dbcommands.c:361 #, c-format -msgid "invalid number for time zone offset in time zone file \"%s\", line %d" +msgid "" +"new collation (%s) is incompatible with the collation of the template " +"database (%s)" msgstr "" -"número é inválido para deslocamento de zona horária no arquivo de zona " -"horária \"%s\", linha %d" +"nova ordenação (%s) é incompatível com a ordenação do banco de dados modelo " +"(%s)" -#: utils/misc/tzparser.c:168 -#, 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" +#: commands/dbcommands.c:363 +msgid "" +"Use the same collation as in the template database, or use template0 as " +"template." +msgstr "" +"Utilize a mesma ordenação do banco de dados modelo ou utilize template0 como " +"modelo." -#: utils/misc/tzparser.c:234 +#: commands/dbcommands.c:368 #, c-format -msgid "time zone abbreviation \"%s\" is multiply defined" -msgstr "abreviação de zona horária \"%s\" foi definida mais de uma vez" +msgid "" +"new LC_CTYPE (%s) is incompatible with the LC_CTYPE of the template database " +"(%s)" +msgstr "" +"novo LC_CTYPE (%s) é incompatível com o LC_CTYPE do banco de dados modelo " +"(%s)" -#: utils/misc/tzparser.c:236 -#, c-format +#: commands/dbcommands.c:370 msgid "" -"Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s" -"\", line %d." +"Use the same LC_CTYPE as in the template database, or use template0 as " +"template." msgstr "" -"Arquivo de zona horária \"%s\", linha %d, conflita com entrada no arquivo " -"\"%s\", linha %d." +"Utilize o mesmo LC_CTYPE do banco de dados modelo ou utilize template0 como " +"modelo." -#: utils/misc/tzparser.c:303 -#, c-format -msgid "invalid time zone file name \"%s\"" -msgstr "nome de arquivo de zona horária \"%s\" é inválido" +#: commands/dbcommands.c:392 commands/dbcommands.c:1081 +msgid "pg_global cannot be used as default tablespace" +msgstr "pg_global não pode ser utilizado como tablespace padrão" -#: utils/misc/tzparser.c:318 +#: commands/dbcommands.c:418 #, 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\"" +msgid "cannot assign new default tablespace \"%s\"" +msgstr "não pode atribuir nova tablespace padrão \"%s\"" -#: utils/misc/tzparser.c:347 postmaster/postmaster.c:1144 +#: commands/dbcommands.c:420 #, c-format msgid "" -"This may indicate an incomplete PostgreSQL installation, or that the file " -"\"%s\" has been moved away from its proper location." +"There is a conflict because database \"%s\" already has some tables in this " +"tablespace." msgstr "" -"Isto pode indicar uma instalação incompleta do PostgreSQL ou que o arquivo " -"\"%s\" foi movido do local apropriado." +"Há um conflito porque o banco de dados \"%s\" já tem algumas tabelas nesta " +"tablespace." -#: utils/misc/tzparser.c:361 utils/misc/tzparser.c:376 +#: commands/dbcommands.c:440 commands/dbcommands.c:956 #, c-format -msgid "could not read time zone file \"%s\": %m" -msgstr "não pôde ler arquivo de zona horária \"%s\": %m" +msgid "database \"%s\" already exists" +msgstr "banco de dados \"%s\" já existe" -#: utils/misc/tzparser.c:388 +#: commands/dbcommands.c:454 #, 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" +msgid "source database \"%s\" is being accessed by other users" +msgstr "banco de dados fonte \"%s\" está sendo acessado por outros usuários" -#: utils/misc/tzparser.c:413 +#: commands/dbcommands.c:722 commands/dbcommands.c:737 #, 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" +msgid "encoding %s does not match locale %s" +msgstr "codificação %s não corresponde a configuração regional %s" -#: guc-file.l:288 +#: commands/dbcommands.c:725 #, 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" +msgid "The chosen LC_CTYPE setting requires encoding %s." +msgstr "A definição de LC_TYPE escolhida requer codificação %s." -#: guc-file.l:344 +#: commands/dbcommands.c:740 #, c-format -msgid "parameter \"%s\" changed to \"%s\"" -msgstr "parâmetro \"%s\" mudou para \"%s\"" +msgid "The chosen LC_COLLATE setting requires encoding %s." +msgstr "A definição de LC_COLLATE escolhida requer codificação %s." -#: guc-file.l:412 +#: commands/dbcommands.c:791 commands/dbcommands.c:936 +#: commands/dbcommands.c:1035 commands/dbcommands.c:1208 +#: commands/dbcommands.c:1393 commands/dbcommands.c:1478 +#: commands/dbcommands.c:1905 commands/comment.c:60 utils/init/postinit.c:718 +#: utils/init/postinit.c:786 utils/init/postinit.c:803 #, 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" +msgid "database \"%s\" does not exist" +msgstr "banco de dados \"%s\" não existe" -#: guc-file.l:436 libpq/hba.c:1482 +#: commands/dbcommands.c:798 #, 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:575 -#, 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:580 -#, 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\"" - -#: utils/misc/help_config.c:131 -msgid "internal error: unrecognized run-time parameter type\n" -msgstr "erro interno: tipo de parâmetro em tempo de execução desconhecido\n" +msgid "database \"%s\" does not exist, skipping" +msgstr "banco de dados \"%s\" não existe, ignorando" -#: utils/error/assert.c:37 -msgid "TRAP: ExceptionalCondition: bad arguments\n" -msgstr "TRAP: ExceptionalCondition: argumentos inválidos\n" +#: commands/dbcommands.c:819 +msgid "cannot drop a template database" +msgstr "não pode remover banco de dados modelo" -#: utils/error/assert.c:40 -#, c-format -msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n" -msgstr "TRAP: %s(\"%s\", Arquivo: \"%s\", Linha: %d)\n" +#: commands/dbcommands.c:825 +msgid "cannot drop the currently open database" +msgstr "não pode remover banco de dados que se encontra aberto" -#: utils/error/elog.c:1413 +#: commands/dbcommands.c:836 commands/dbcommands.c:978 +#: commands/dbcommands.c:1103 #, c-format -msgid "could not reopen file \"%s\" as stderr: %m" -msgstr "não pôde reabrir arquivo \"%s\" como saída stderr: %m" +msgid "database \"%s\" is being accessed by other users" +msgstr "banco de dados \"%s\" está sendo acessado por outros usuários" -#: utils/error/elog.c:1426 -#, c-format -msgid "could not reopen file \"%s\" as stdout: %m" -msgstr "não pôde reabrir arquivo \"%s\" como saida stdout: %m" +#: commands/dbcommands.c:947 +msgid "permission denied to rename database" +msgstr "permissão negada ao renomear banco de dados" -#: utils/error/elog.c:1811 utils/error/elog.c:1821 utils/error/elog.c:1831 -msgid "[unknown]" -msgstr "[desconhecido]" +#: commands/dbcommands.c:967 +msgid "current database cannot be renamed" +msgstr "banco de dados atual não pode ser renomeado" -#: utils/error/elog.c:2179 utils/error/elog.c:2459 utils/error/elog.c:2537 -msgid "missing error text" -msgstr "faltando mensagem de erro" +#: commands/dbcommands.c:1059 +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" -#: utils/error/elog.c:2182 utils/error/elog.c:2185 utils/error/elog.c:2540 -#: utils/error/elog.c:2543 +#: commands/dbcommands.c:1143 #, c-format -msgid " at character %d" -msgstr " no caracter %d" - -#: utils/error/elog.c:2195 utils/error/elog.c:2202 -msgid "DETAIL: " -msgstr "DETALHE: " +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\"" -#: utils/error/elog.c:2209 -msgid "HINT: " -msgstr "DICA: " +#: commands/dbcommands.c:1145 +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." -#: utils/error/elog.c:2216 -msgid "QUERY: " -msgstr "CONSULTA: " +#: commands/dbcommands.c:1273 commands/dbcommands.c:1752 +#: commands/dbcommands.c:1966 commands/dbcommands.c:2014 +#: commands/tablespace.c:584 +#, 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\"" -#: utils/error/elog.c:2223 -msgid "CONTEXT: " -msgstr "CONTEXTO: " +#: commands/dbcommands.c:1517 +msgid "permission denied to change owner of database" +msgstr "permissão negada ao mudar dono do banco de dados" -#: utils/error/elog.c:2233 +#: commands/dbcommands.c:1853 #, c-format -msgid "LOCATION: %s, %s:%d\n" -msgstr "LOCAL: %s, %s:%d\n" +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." -#: utils/error/elog.c:2240 +#: commands/dbcommands.c:1856 #, c-format -msgid "LOCATION: %s:%d\n" -msgstr "LOCAL: %s:%d\n" - -#: utils/error/elog.c:2254 -msgid "STATEMENT: " -msgstr "COMANDO: " +msgid "There are %d other session(s) using the database." +msgstr "Há %d outra(s) sessão(ões) utilizando o banco de dados." -#. translator: This string will be truncated at 47 -#. characters expanded. -#: utils/error/elog.c:2652 +#: commands/dbcommands.c:1859 #, c-format -msgid "operating system error %d" -msgstr "erro do sistema operacional %d" - -#: utils/error/elog.c:2675 -msgid "DEBUG" -msgstr "DEPURAÇÃO" - -#: utils/error/elog.c:2679 -msgid "LOG" -msgstr "LOG" +msgid "There are %d prepared transaction(s) using the database." +msgstr "Há %d transação(ões) preparada(s) utilizando o banco de dados." -#: utils/error/elog.c:2682 -msgid "INFO" -msgstr "INFO" +#: commands/proclang.c:93 +msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters" +msgstr "" +"utilizando informação de pg_pltemplate ao invés dos parâmetros de CREATE " +"LANGUAGE" -#: utils/error/elog.c:2685 -msgid "NOTICE" -msgstr "NOTA" +#: commands/proclang.c:103 +#, c-format +msgid "must be superuser to create procedural language \"%s\"" +msgstr "deve ser super-usuário para criar linguagem procedural \"%s\"" -#: utils/error/elog.c:2688 -msgid "WARNING" -msgstr "AVISO" +#: commands/proclang.c:123 commands/proclang.c:279 +#, c-format +msgid "function %s must return type \"language_handler\"" +msgstr "função %s deve retornar tipo \"language_handler\"" -#: utils/error/elog.c:2691 -msgid "ERROR" -msgstr "ERRO" +#: commands/proclang.c:243 +#, c-format +msgid "unsupported language \"%s\"" +msgstr "linguagem \"%s\" não é suportada" -#: utils/error/elog.c:2694 -msgid "FATAL" -msgstr "FATAL" +#: commands/proclang.c:245 +msgid "The supported languages are listed in the pg_pltemplate system catalog." +msgstr "" +"As linguagens suportadas estão listadas no catálogo do sistema pg_pltemplate." -#: utils/error/elog.c:2697 -msgid "PANIC" -msgstr "PÂNICO" +#: commands/proclang.c:253 +msgid "must be superuser to create custom procedural language" +msgstr "deve ser super-usuário para criar linguagem procedural personalizada" -#: utils/sort/tuplesort.c:2806 +#: commands/proclang.c:272 #, c-format -msgid "could not create unique index \"%s\"" -msgstr "não pôde criar índice único \"%s\"" +msgid "" +"changing return type of function %s from \"opaque\" to \"language_handler\"" +msgstr "" +"alterando tipo de retorno da função %s de \"opaque\" para \"language_handler" +"\"" -#: utils/sort/tuplesort.c:2808 +#: commands/proclang.c:357 commands/proclang.c:606 #, c-format -msgid "Key %s is duplicated." -msgstr "Chave %s está duplicada." +msgid "language \"%s\" already exists" +msgstr "linguagem \"%s\" já existe" -#: utils/sort/logtape.c:213 +#: commands/proclang.c:537 #, 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" - -#: utils/sort/logtape.c:215 -msgid "Perhaps out of disk space?" -msgstr "Talvez esteja faltando espaço em disco?" +msgid "language \"%s\" does not exist, skipping" +msgstr "linguagem \"%s\" não existe, ignorando" -#: utils/sort/logtape.c:232 +#: commands/proclang.c:600 commands/proclang.c:640 commands/proclang.c:754 +#: commands/functioncmds.c:839 commands/functioncmds.c:2018 #, 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" +msgid "language \"%s\" does not exist" +msgstr "linguagem \"%s\" não existe" -#: utils/cache/lsyscache.c:2234 utils/cache/lsyscache.c:2267 -#: utils/cache/lsyscache.c:2300 utils/cache/lsyscache.c:2333 -#, c-format -msgid "type %s is only a shell" -msgstr "tipo %s é indefinido" +#: commands/typecmds.c:169 +msgid "must be superuser to create a base type" +msgstr "deve ser super-usuário para criar um tipo base" -#: utils/cache/lsyscache.c:2239 +#: commands/typecmds.c:275 #, c-format -msgid "no input function available for type %s" -msgstr "nenhuma função de entrada disponível para tipo %s" +msgid "type attribute \"%s\" not recognized" +msgstr "atributo do tipo \"%s\" desconhecido" -#: utils/cache/lsyscache.c:2272 +#: commands/typecmds.c:329 #, c-format -msgid "no output function available for type %s" -msgstr "nenhuma função de saída disponível para tipo %s" +msgid "invalid type category \"%s\": must be simple ASCII" +msgstr "categoria de tipo \"%s\" é inválida: deve ser ASCII simples" -#: utils/cache/relcache.c:4289 +#: commands/typecmds.c:348 #, 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:4291 -msgid "Continuing anyway, but there's something wrong." -msgstr "Continuando mesmo assim, mas há algo errado." +msgid "array element type cannot be %s" +msgstr "tipo do elemento da matriz não pode ser %s" -#: utils/cache/typcache.c:151 parser/parse_type.c:202 +#: commands/typecmds.c:380 #, c-format -msgid "type \"%s\" is only a shell" -msgstr "tipo \"%s\" é indefinido" +msgid "alignment \"%s\" not recognized" +msgstr "alinhamento \"%s\" desconhecido" -#: utils/cache/typcache.c:331 +#: commands/typecmds.c:397 #, c-format -msgid "type %s is not composite" -msgstr "tipo %s não é composto" +msgid "storage \"%s\" not recognized" +msgstr "armazenamento \"%s\" desconhecido" -#: utils/cache/typcache.c:345 -msgid "record type has not been registered" -msgstr "tipo record não foi registrado" +#: commands/typecmds.c:408 +msgid "type input function must be specified" +msgstr "função de entrada do tipo deve ser especificada" -#: utils/cache/plancache.c:589 -msgid "cached plan must not change result type" -msgstr "plano em cache não deve mudar tipo resultante" +#: commands/typecmds.c:412 +msgid "type output function must be specified" +msgstr "função de saída do tipo deve ser especificada" -#: utils/cache/relmapper.c:454 -msgid "cannot PREPARE a transaction that modified relation mapping" +#: commands/typecmds.c:417 +msgid "" +"type modifier output function is useless without a type modifier input " +"function" msgstr "" -"não pode executar PREPARE em uma transação que modificou mapeamento de " -"relação" +"função de saída do modificador de tipo é inútil sem uma função de entrada do " +"modificador de tipo" -#: utils/cache/relmapper.c:596 utils/cache/relmapper.c:702 +#: commands/typecmds.c:440 #, 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" +msgid "changing return type of function %s from \"opaque\" to %s" +msgstr "alterando tipo retornado pela função %s de \"opaque\" para %s" -#: utils/cache/relmapper.c:609 +#: commands/typecmds.c:447 #, 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" +msgid "type input function %s must return type %s" +msgstr "função de entrada do tipo %s deve retornar tipo %s" -#: utils/cache/relmapper.c:619 +#: commands/typecmds.c:457 #, c-format -msgid "relation mapping file \"%s\" contains invalid data" -msgstr "arquivo de mapeamento de relação \"%s\" contém dados inválidos" +msgid "changing return type of function %s from \"opaque\" to \"cstring\"" +msgstr "alterando tipo retornado pela função %s de \"opaque\" para \"cstring\"" -#: utils/cache/relmapper.c:629 +#: commands/typecmds.c:464 #, 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" +msgid "type output function %s must return type \"cstring\"" +msgstr "função de saída do tipo %s deve retornar tipo \"cstring\"" -#: utils/cache/relmapper.c:741 +#: commands/typecmds.c:473 #, 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" +msgid "type receive function %s must return type %s" +msgstr "função de recepção do tipo %s deve retornar tipo %s" -#: utils/cache/relmapper.c:754 +#: commands/typecmds.c:482 #, 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" +msgid "type send function %s must return type \"bytea\"" +msgstr "função de envio do tipo %s deve retornar tipo \"bytea\"" -#: utils/cache/relmapper.c:760 +#: commands/typecmds.c:687 #, 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" - -#: utils/hash/dynahash.c:925 storage/ipc/shmem.c:190 storage/lmgr/lock.c:610 -#: storage/lmgr/lock.c:679 storage/lmgr/lock.c:2119 storage/lmgr/lock.c:2498 -#: storage/lmgr/lock.c:2563 storage/lmgr/proc.c:192 storage/lmgr/proc.c:210 -msgid "out of shared memory" -msgstr "sem memória compartilhada" +msgid "\"%s\" is not a domain" +msgstr "\"%s\" não é um domínio" -#: parser/parse_relation.c:147 +#: commands/typecmds.c:827 #, c-format -msgid "table reference \"%s\" is ambiguous" -msgstr "referência a tabela \"%s\" é ambígua" +msgid "\"%s\" is not a valid base type for a domain" +msgstr "\"%s\" não é um tipo base válido para um domínio" -#: parser/parse_relation.c:183 +#: commands/typecmds.c:843 commands/indexcmds.c:915 parser/parse_expr.c:2165 +#: parser/parse_utilcmd.c:2592 parser/parse_type.c:492 #, c-format -msgid "table reference %u is ambiguous" -msgstr "referência a tabela %u é ambígua" +msgid "collations are not supported by type %s" +msgstr "ordenações não são suportadas pelo tipo %s" -#: parser/parse_relation.c:343 -#, c-format -msgid "table name \"%s\" specified more than once" -msgstr "nome da tabela \"%s\" foi especificado mais de uma vez" +#: commands/typecmds.c:909 +msgid "multiple default expressions" +msgstr "múltiplas expressões padrão" -#: parser/parse_relation.c:478 parser/parse_relation.c:551 -#: parser/parse_expr.c:735 parser/parse_target.c:977 -#, c-format -msgid "column reference \"%s\" is ambiguous" -msgstr "referência à coluna \"%s\" é ambígua" +#: commands/typecmds.c:973 commands/typecmds.c:982 +msgid "conflicting NULL/NOT NULL constraints" +msgstr "restrições NULL/NOT NULL conflitantes" -#: parser/parse_relation.c:754 parser/parse_relation.c:1043 -#: parser/parse_relation.c:1403 -#, 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" - -#: parser/parse_relation.c:784 -#, c-format -msgid "too many column aliases specified for function %s" -msgstr "muitos aliases de coluna especificados para função %s" - -#: parser/parse_relation.c:835 commands/lockcmds.c:122 catalog/namespace.c:273 -#, c-format -msgid "relation \"%s.%s\" does not exist" -msgstr "relação \"%s.%s\" não existe" +#: commands/typecmds.c:1001 commands/typecmds.c:1984 +msgid "unique constraints not possible for domains" +msgstr "restrições de unicidade não são possíveis para domínios" -#: 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 "" -"Há um item WITH nomeado \"%s\", mas ele não pode ser referenciado desta " -"parte da consulta." +#: commands/typecmds.c:1007 commands/typecmds.c:1990 +msgid "primary key constraints not possible for domains" +msgstr "restrições de chave primária não são possíveis para domínios" -#: parser/parse_relation.c:852 -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." +#: commands/typecmds.c:1013 commands/typecmds.c:1996 +msgid "exclusion constraints not possible for domains" +msgstr "restrições de exclusão não são possíveis para domínios" -#: parser/parse_relation.c:1122 -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\"" +#: commands/typecmds.c:1019 commands/typecmds.c:2002 +msgid "foreign key constraints not possible for domains" +msgstr "restrições de chave estrangeira não são possíveis para domínios" -#: parser/parse_relation.c:1130 -msgid "a column definition list is required for functions returning \"record\"" +#: commands/typecmds.c:1028 commands/typecmds.c:2011 +msgid "specifying constraint deferrability not supported for domains" msgstr "" -"uma lista de definição de colunas é requerida para funções que retornam " -"\"record\"" +"especificação de postergação de restrição não é suportada para domínios" -#: parser/parse_relation.c:1165 access/common/tupdesc.c:545 +#: commands/typecmds.c:1272 utils/cache/typcache.c:1001 #, c-format -msgid "column \"%s\" cannot be declared SETOF" -msgstr "coluna \"%s\" não pode ser declarada SETOF" +msgid "%s is not an enum" +msgstr "%s não é um enum" -#: parser/parse_relation.c:1177 +#: commands/typecmds.c:1332 #, 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" +msgid "changing argument type of function %s from \"opaque\" to \"cstring\"" +msgstr "" +"alterando tipo de argumento da função %s de \"opaque\" para \"cstring\"" -#: parser/parse_relation.c:1249 +#: commands/typecmds.c:1383 #, 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" +msgid "changing argument type of function %s from \"opaque\" to %s" +msgstr "alterando tipo de argumento da função %s de \"opaque\" para %s" -#: parser/parse_relation.c:1305 +#: commands/typecmds.c:1482 #, c-format -msgid "joins can have at most %d columns" -msgstr "junções podem ter no máximo %d colunas" +msgid "typmod_in function %s must return type \"integer\"" +msgstr "função typmod_in %s deve retornar tipo \"integer\"" -#: parser/parse_relation.c:2038 +#: commands/typecmds.c:1509 #, c-format -msgid "column %d of relation \"%s\" does not exist" -msgstr "coluna %d da relação \"%s\" não existe" +msgid "typmod_out function %s must return type \"cstring\"" +msgstr "função typmod_out %s deve retornar tipo \"cstring\"" -#: parser/parse_relation.c:2397 +#: commands/typecmds.c:1536 #, c-format -msgid "invalid reference to FROM-clause entry for table \"%s\"" -msgstr "referência inválida para tabela \"%s\" na cláusula FROM" +msgid "type analyze function %s must return type \"boolean\"" +msgstr "função de análise do tipo %s deve retornar tipo \"boolean\"" -#: parser/parse_relation.c:2400 +#: commands/typecmds.c:1836 #, c-format -msgid "Perhaps you meant to reference the table alias \"%s\"." -msgstr "Talvez você quisesse referenciar o aliás de tabela \"%s\"." +msgid "column \"%s\" of table \"%s\" contains null values" +msgstr "coluna \"%s\" da tabela \"%s\" contém valores nulos" -#: parser/parse_relation.c:2402 +#: commands/typecmds.c:2082 #, c-format msgid "" -"There is an entry for table \"%s\", but it cannot be referenced from this " -"part of the query." +"column \"%s\" of table \"%s\" contains values that violate the new constraint" msgstr "" -"Há uma entrada para tabela \"%s\", mas ela não pode ser referenciada desta " -"parta da consulta." +"coluna \"%s\" da tabela \"%s\" contém valores que violam a nova restrição" -#: parser/parse_relation.c:2408 +#: commands/typecmds.c:2287 #, c-format -msgid "missing FROM-clause entry for table \"%s\"" -msgstr "faltando entrada para tabela \"%s\" na cláusula FROM" +msgid "%s is not a domain" +msgstr "%s não é um domínio" + +#: commands/typecmds.c:2369 commands/typecmds.c:2378 +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" -#: parser/parse_expr.c:358 parser/parse_expr.c:751 +#: commands/typecmds.c:2608 commands/typecmds.c:2680 commands/typecmds.c:2919 #, c-format -msgid "column %s.%s does not exist" -msgstr "coluna %s.%s não existe" +msgid "%s is a table's row type" +msgstr "%s é um tipo registro da tabela" + +#: commands/typecmds.c:2610 commands/typecmds.c:2682 commands/typecmds.c:2921 +msgid "Use ALTER TABLE instead." +msgstr "Ao invés disso utilize ALTER TABLE." -#: parser/parse_expr.c:370 +#: commands/typecmds.c:2617 commands/typecmds.c:2689 commands/typecmds.c:2838 #, c-format -msgid "column \"%s\" not found in data type %s" -msgstr "coluna \"%s\" não foi encontrada no tipo de dado %s" +msgid "cannot alter array type %s" +msgstr "não pode alterar tipo array %s" -#: parser/parse_expr.c:376 +#: commands/typecmds.c:2619 commands/typecmds.c:2691 commands/typecmds.c:2840 #, 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" +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." -#: parser/parse_expr.c:382 +#: commands/typecmds.c:2905 #, 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" +msgid "type \"%s\" already exists in schema \"%s\"" +msgstr "tipo \"%s\" já existe no esquema \"%s\"" -#: parser/parse_expr.c:412 parser/parse_target.c:600 -msgid "row expansion via \"*\" is not supported here" -msgstr "expansão de registro utilizando \"*\" não é suportada aqui" +#: commands/async.c:567 +msgid "channel name cannot be empty" +msgstr "nome do canal não pode ser vazio" -#: parser/parse_expr.c:769 parser/parse_target.c:998 catalog/namespace.c:2231 -#, c-format -msgid "cross-database references are not implemented: %s" -msgstr "referências cruzadas entre bancos de dados não estão implementadas: %s" +#: commands/async.c:572 +msgid "channel name too long" +msgstr "nome do canal é muito longo" -#: parser/parse_expr.c:776 parser/parse_target.c:1005 gram.y:3672 gram.y:10605 -#: catalog/namespace.c:2237 -#, c-format -msgid "improper qualified name (too many dotted names): %s" -msgstr "nome qualificado é inválido (nomes com muitos pontos): %s" +#: commands/async.c:579 +msgid "payload string too long" +msgstr "cadeia da carga é muito longa" + +#: commands/async.c:764 +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:867 +msgid "too many notifications in the NOTIFY queue" +msgstr "muitas notificações na fila do NOTIFY" -#: parser/parse_expr.c:803 parser/parse_param.c:108 parser/parse_param.c:139 -#: parser/parse_param.c:195 parser/parse_param.c:287 +#: commands/async.c:1440 #, c-format -msgid "there is no parameter $%d" -msgstr "não há parâmetro $%d" +msgid "NOTIFY queue is %.0f%% full" +msgstr "fila do NOTIFY está %.0f%% cheia" -#: parser/parse_expr.c:1008 -msgid "NULLIF requires = operator to yield boolean" -msgstr "NULLIF requer que operador = retorne booleano" +#: commands/async.c:1442 +#, 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." -#: parser/parse_expr.c:1181 -msgid "arguments of row IN must all be row expressions" -msgstr "argumentos de registro IN devem ser todos expressões de registro" +#: commands/async.c:1445 +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." -#: parser/parse_expr.c:1385 -msgid "subquery cannot have SELECT INTO" -msgstr "subconsulta não pode ter SELECT INTO" +#: commands/lockcmds.c:93 +#, c-format +msgid "could not obtain lock on relation \"%s\"" +msgstr "não pôde obter bloqueio na relação \"%s\"" -#: parser/parse_expr.c:1413 -msgid "subquery must return a column" -msgstr "subconsulta deve retornar uma coluna" +#: commands/lockcmds.c:98 +#, c-format +msgid "could not obtain lock on relation with OID %u" +msgstr "não pôde obter bloqueio na relação com OID %u" -#: parser/parse_expr.c:1420 -msgid "subquery must return only one column" -msgstr "subconsulta deve retornar somente uma coluna" +#: commands/aggregatecmds.c:103 +#, c-format +msgid "aggregate attribute \"%s\" not recognized" +msgstr "atributo da agregação \"%s\" é desconhecido" -#: parser/parse_expr.c:1479 -msgid "subquery has too many columns" -msgstr "subconsulta tem muitas colunas" +#: commands/aggregatecmds.c:113 +msgid "aggregate stype must be specified" +msgstr "tipo de transição (stype) da agregação deve ser especificado" -#: parser/parse_expr.c:1484 -msgid "subquery has too few columns" -msgstr "subconsulta tem poucas colunas" +#: commands/aggregatecmds.c:117 +msgid "aggregate sfunc must be specified" +msgstr "função de transição (sfunc) da agregação deve ser especificado" -#: parser/parse_expr.c:1580 -msgid "cannot determine type of empty array" -msgstr "não pode determinar tipo de matriz vazia" +#: commands/aggregatecmds.c:134 +msgid "aggregate input type must be specified" +msgstr "tipo de entrada da agregação deve ser especificado" -#: parser/parse_expr.c:1581 -msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]." +#: commands/aggregatecmds.c:159 +msgid "basetype is redundant with aggregate input type specification" msgstr "" -"Converta explicitamente para o tipo desejado, por exemplo ARRAY[]::integer[]." +"tipo base é redundante com especificação de tipo de entrada da agregação" -#: parser/parse_expr.c:1595 +#: commands/aggregatecmds.c:191 #, 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" +msgid "aggregate transition data type cannot be %s" +msgstr "tipo de dado de transição da agregação não pode ser %s" -#: parser/parse_expr.c:1640 parser/parse_expr.c:2151 parser/parse_coerce.c:841 -#: parser/parse_coerce.c:870 parser/parse_coerce.c:888 -#: parser/parse_coerce.c:903 +#: commands/aggregatecmds.c:230 #, c-format -msgid "cannot cast type %s to %s" -msgstr "não pode converter tipo %s para %s" +msgid "aggregate %s(%s) does not exist, skipping" +msgstr "agregação %s(%s) não existe, ignorando" -#: parser/parse_expr.c:1793 -msgid "unnamed XML attribute value must be a column reference" -msgstr "valor do atributo XML sem nome deve ser uma referência a coluna" +#: commands/aggregatecmds.c:292 commands/functioncmds.c:1121 +#, c-format +msgid "function %s already exists in schema \"%s\"" +msgstr "função %s já existe no esquema \"%s\"" -#: parser/parse_expr.c:1794 -msgid "unnamed XML element value must be a column reference" -msgstr "valor do elemento XML sem nome deve ser uma referência a coluna" +#: commands/foreigncmds.c:135 commands/foreigncmds.c:144 +#, c-format +msgid "option \"%s\" not found" +msgstr "opção \"%s\" não foi encontrada" -#: parser/parse_expr.c:1809 +#: commands/foreigncmds.c:154 #, c-format -msgid "XML attribute name \"%s\" appears more than once" -msgstr "nome de atributo XML \"%s\" aparece mais do que uma vez" +msgid "option \"%s\" provided more than once" +msgstr "opção \"%s\" especificada mais de uma vez" -#: parser/parse_expr.c:1916 +#: commands/foreigncmds.c:221 commands/foreigncmds.c:229 #, c-format -msgid "cannot cast XMLSERIALIZE result to %s" -msgstr "não pode converter resultado de XMLSERIALIZE para %s" +msgid "permission denied to change owner of foreign-data wrapper \"%s\"" +msgstr "permissão negada ao mudar dono do adaptador de dados externos \"%s\"" -#: parser/parse_expr.c:2192 parser/parse_expr.c:2390 -msgid "unequal number of entries in row expressions" -msgstr "número desigual de entradas em expressões de registro" +#: commands/foreigncmds.c:223 +msgid "Must be superuser to change owner of a foreign-data wrapper." +msgstr "" +"Deve ser super-usuário para mudar dono de um adaptador de dados externos." -#: parser/parse_expr.c:2202 -msgid "cannot compare rows of zero length" -msgstr "não pode comparar registros de tamanho zero" +#: commands/foreigncmds.c:231 +msgid "The owner of a foreign-data wrapper must be a superuser." +msgstr "O dono de um adaptador de dados externos deve ser um super-usuário." -#: parser/parse_expr.c:2227 +#: commands/foreigncmds.c:265 commands/foreigncmds.c:636 +#: commands/foreigncmds.c:784 foreign/foreign.c:524 #, 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" +msgid "foreign-data wrapper \"%s\" does not exist" +msgstr "adaptador de dados externos \"%s\" não existe" -#: parser/parse_expr.c:2234 -msgid "row comparison operator must not return a set" -msgstr "operador de comparação de registro não deve retornar um conjunto" +#: commands/foreigncmds.c:366 commands/foreigncmds.c:962 +#: commands/foreigncmds.c:1050 commands/foreigncmds.c:1334 +#: foreign/foreign.c:544 +#, c-format +msgid "server \"%s\" does not exist" +msgstr "servidor \"%s\" não existe" -#: parser/parse_expr.c:2293 parser/parse_expr.c:2337 +#: commands/foreigncmds.c:418 #, 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" +msgid "function %s must return type \"fdw_handler\"" +msgstr "função %s deve retornar tipo \"fdw_handler\"" -#: parser/parse_expr.c:2295 -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." +#: commands/foreigncmds.c:513 +#, c-format +msgid "permission denied to create foreign-data wrapper \"%s\"" +msgstr "permissão negada ao criar adaptador de dados externos \"%s\"" -#: parser/parse_expr.c:2339 -msgid "There are multiple equally-plausible candidates." -msgstr "Há múltiplos candidatos igualmente plausíveis." +#: commands/foreigncmds.c:515 +msgid "Must be superuser to create a foreign-data wrapper." +msgstr "Deve ser super-usuário para criar uma adaptador de dados externos." -#: parser/parse_expr.c:2430 -msgid "IS DISTINCT FROM requires = operator to yield boolean" -msgstr "IS DISTINCT FROM requer que operador = retorne booleano" +#: commands/foreigncmds.c:526 +#, c-format +msgid "foreign-data wrapper \"%s\" already exists" +msgstr "adaptador de dados externos \"%s\" já existe" -#: parser/parse_agg.c:127 parser/parse_oper.c:254 +#: commands/foreigncmds.c:626 #, 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" +msgid "permission denied to alter foreign-data wrapper \"%s\"" +msgstr "permissão negada ao alterar adaptador de dados externos \"%s\"" -#: parser/parse_agg.c:129 -msgid "Aggregates with DISTINCT must be able to sort their inputs." -msgstr "Agregações com DISTINCT devem ser capazes de ordenar suas entradas." +#: commands/foreigncmds.c:628 +msgid "Must be superuser to alter a foreign-data wrapper." +msgstr "Deve ser super-usuário para alterar um adaptador de dados externos." -#: parser/parse_agg.c:170 -msgid "aggregate function calls cannot contain window function calls" +#: commands/foreigncmds.c:659 +msgid "" +"changing the foreign-data wrapper handler can change behavior of existing " +"foreign tables" msgstr "" -"chamadas de função de agregação não podem conter chamadas de função " -"deslizante" - -#: parser/parse_agg.c:241 parser/parse_clause.c:1620 -#, c-format -msgid "window \"%s\" does not exist" -msgstr "deslizante \"%s\" não existe" +"mudar o manipulador do adaptador de dados externos pode mudar o " +"comportamento de tabelas externas existentes" -#: parser/parse_agg.c:331 -msgid "aggregates not allowed in WHERE clause" -msgstr "agregação não é permitida na cláusula WHERE" - -#: parser/parse_agg.c:337 -msgid "aggregates not allowed in JOIN conditions" -msgstr "agregação não é permitida nas condições JOIN" - -#: parser/parse_agg.c:358 -msgid "aggregates not allowed in GROUP BY clause" -msgstr "agregação não é permitida na cláusula GROUP BY" - -#: parser/parse_agg.c:426 -msgid "aggregate functions not allowed in a recursive query's recursive term" +#: commands/foreigncmds.c:673 +msgid "" +"changing the foreign-data wrapper validator can cause the options for " +"dependent objects to become invalid" msgstr "" -"funções de agregação não são permitidas em termo recursivo de uma consulta " -"recursiva" - -#: parser/parse_agg.c:451 -msgid "window functions not allowed in WHERE clause" -msgstr "funções deslizantes não são permitidas na cláusula WHERE" - -#: parser/parse_agg.c:457 -msgid "window functions not allowed in JOIN conditions" -msgstr "funções deslizantes não são permitidas nas condições JOIN" +"mudar o validador do adaptador de dados externos pode tornar inválidas as " +"opções para objetos dependentes" -#: parser/parse_agg.c:463 -msgid "window functions not allowed in HAVING clause" -msgstr "funções deslizantes não são permitidas na cláusula WHERE" +#: commands/foreigncmds.c:775 +#, c-format +msgid "permission denied to drop foreign-data wrapper \"%s\"" +msgstr "permissão negada ao remover adaptador de dados externos \"%s\"" -#: parser/parse_agg.c:476 -msgid "window functions not allowed in GROUP BY clause" -msgstr "funções deslizantes não são permitidas na cláusula GROUP BY" +#: commands/foreigncmds.c:777 +msgid "Must be superuser to drop a foreign-data wrapper." +msgstr "Deve ser super-usuário para remover um adaptador de dados externos." -#: parser/parse_agg.c:495 parser/parse_agg.c:508 -msgid "window functions not allowed in window definition" -msgstr "" -"funções deslizantes não são permitidas na definição de função deslizante" +#: commands/foreigncmds.c:789 +#, c-format +msgid "foreign-data wrapper \"%s\" does not exist, skipping" +msgstr "adaptador de dados externos \"%s\" não existe, ignorando" -#: parser/parse_agg.c:630 +#: commands/foreigncmds.c:858 #, 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" +msgid "server \"%s\" already exists" +msgstr "servidor \"%s\" já existe" -#: parser/parse_agg.c:636 +#: commands/foreigncmds.c:1054 #, c-format -msgid "subquery uses ungrouped column \"%s.%s\" from outer query" -msgstr "subconsulta utiliza coluna desagrupada \"%s.%s\" na consulta externa" +msgid "server \"%s\" does not exist, skipping" +msgstr "servidor \"%s\" não existe, ignorando" -#: parser/parse_node.c:82 +#: commands/foreigncmds.c:1159 #, c-format -msgid "target lists can have at most %d entries" -msgstr "listas de alvo podem ter no máximo %d entradas" +msgid "user mapping \"%s\" already exists for server %s" +msgstr "mapeamento de usuários \"%s\" já existe para servidor %s" -#: parser/parse_node.c:222 +#: commands/foreigncmds.c:1245 commands/foreigncmds.c:1350 #, c-format -msgid "cannot subscript type %s because it is not an array" -msgstr "" -"tipo do índice de uma matriz não pode ser %s porque ele não é uma matriz" +msgid "user mapping \"%s\" does not exist for the server" +msgstr "mapeamento de usuários \"%s\" não existe para o servidor" -#: parser/parse_node.c:316 parser/parse_node.c:342 -msgid "array subscript must have type integer" -msgstr "índice da matriz deve ser do tipo integer" +#: commands/foreigncmds.c:1337 +msgid "server does not exist, skipping" +msgstr "servidor não existe, ignorando" -#: parser/parse_node.c:366 +#: commands/foreigncmds.c:1355 #, c-format -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" +msgid "user mapping \"%s\" does not exist for the server, skipping" +msgstr "mapeamento de usuários \"%s\" não existe para o servidor, ignorando" -#: parser/parse_node.c:370 parser/parse_target.c:475 parser/parse_target.c:734 -#: parser/parse_target.c:744 rewrite/rewriteHandler.c:957 -#: commands/prepare.c:369 catalog/heap.c:2285 -msgid "You will need to rewrite or cast the expression." -msgstr "Você precisará reescrever ou converter a expressão." +#: 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 não é suportado para saída stdout ou da entrada padrão" -#: parser/parse_target.c:373 parser/parse_target.c:661 +#: commands/copy.c:473 #, c-format -msgid "cannot assign to system column \"%s\"" -msgstr "não pode atribuir a coluna do sistema \"%s\"" - -#: parser/parse_target.c:398 -msgid "cannot set an array element to DEFAULT" -msgstr "não pode definir um elemento de matriz como sendo o valor DEFAULT" +msgid "could not write to COPY file: %m" +msgstr "não pôde escrever em arquivo COPY: %m" -#: parser/parse_target.c:403 -msgid "cannot set a subfield to DEFAULT" -msgstr "não pode definir um subcampo como sendo o valor DEFAULT" +#: commands/copy.c:485 +msgid "connection lost during COPY to stdout" +msgstr "conexão perdida durante COPY para saída stdout" -#: parser/parse_target.c:470 +#: commands/copy.c:526 #, c-format -msgid "column \"%s\" is of type %s but expression is of type %s" -msgstr "coluna \"%s\" é do tipo %s mas expressão é do tipo %s" +msgid "could not read from COPY file: %m" +msgstr "não pôde ler de arquivo COPY: %m" + +#: commands/copy.c:542 commands/copy.c:561 commands/copy.c:565 +#: tcop/fastpath.c:290 tcop/postgres.c:351 tcop/postgres.c:374 +msgid "unexpected EOF on client connection" +msgstr "EOF inesperado durante conexão do cliente" -#: parser/parse_target.c:645 +#: commands/copy.c:577 #, c-format -msgid "" -"cannot assign to field \"%s\" of column \"%s\" because its type %s is not a " -"composite type" -msgstr "" -"não pode atribuir ao campo \"%s\" da coluna \"%s\" porque seu tipo %s não é " -"um tipo composto" +msgid "COPY from stdin failed: %s" +msgstr "COPY da entrada padrão falhou: %s" -#: parser/parse_target.c:654 +#: commands/copy.c:593 #, 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:745 +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:746 msgid "" -"cannot assign to field \"%s\" of column \"%s\" because there is no such " -"column in data type %s" +"Anyone can COPY to stdout or from stdin. psql's \\copy command also works " +"for anyone." msgstr "" -"não pode atribuir ao campo \"%s\" da coluna \"%s\" porque não há tal coluna " -"no tipo de dado %s" +"Qualquer um pode utilizar COPY para saída stdout ou da entrada padrão. " +"comando \\copy do psql também funciona para qualquer um." -#: parser/parse_target.c:729 +#: commands/copy.c:874 #, c-format -msgid "" -"array assignment to \"%s\" requires type %s but expression is of type %s" -msgstr "" -"atribuição de matriz para \"%s\" requer tipo %s mas expressão é do tipo %s" +msgid "COPY format \"%s\" not recognized" +msgstr "formato COPY \"%s\" desconhecido" -#: parser/parse_target.c:739 +#: commands/copy.c:937 commands/copy.c:951 #, c-format -msgid "subfield \"%s\" is of type %s but expression is of type %s" -msgstr "subcampo \"%s\" é do tipo %s mas expressão é do tipo %s" +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" -#: parser/parse_target.c:824 parser/parse_target.c:835 commands/trigger.c:536 -#: commands/copy.c:3453 commands/tablecmds.c:1286 +#: commands/copy.c:964 #, c-format -msgid "column \"%s\" specified more than once" -msgstr "coluna \"%s\" especificada mais de uma vez" +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" -#: parser/parse_target.c:1039 -msgid "SELECT * with no tables specified is not valid" -msgstr "SELECT * sem tabelas especificadas não é válido" +#: commands/copy.c:970 +#, c-format +msgid "option \"%s\" not recognized" +msgstr "opção \"%s\" desconhecida" -#: parser/parse_oper.c:256 -msgid "Use an explicit ordering operator or modify the query." -msgstr "Utilize um operador de ordenação explícito ou modifique a consulta." +#: commands/copy.c:981 +msgid "cannot specify DELIMITER in BINARY mode" +msgstr "não pode especificar DELIMITER no modo BINARY" -#: parser/parse_oper.c:509 -#, c-format -msgid "operator requires run-time type coercion: %s" -msgstr "operador requer conversão de tipo em tempo de execução: %s" +#: commands/copy.c:986 +msgid "cannot specify NULL in BINARY mode" +msgstr "não pode especificar NULL no modo BINARY" -#: parser/parse_oper.c:743 -#, c-format -msgid "operator is not unique: %s" -msgstr "operador não é único: %s" +#: commands/copy.c:1008 +msgid "COPY delimiter must be a single one-byte character" +msgstr "delimitador do COPY deve ter um único caracter de um byte" -#: parser/parse_oper.c:745 -msgid "" -"Could not choose a best candidate operator. You might need to add explicit " -"type casts." -msgstr "" -"Não pôde escolher um operador que se enquadra melhor. Você precisa adicionar " -"conversões de tipo explícitas." +#: commands/copy.c:1015 +msgid "COPY delimiter cannot be newline or carriage return" +msgstr "delimitador do COPY não pode ser nova linha ou retorno de carro" -#: parser/parse_oper.c:753 -msgid "" -"No operator matches the given name and argument type(s). You might need to " -"add explicit type casts." +#: commands/copy.c:1021 +msgid "COPY null representation cannot use newline or carriage return" msgstr "" -"Nenhum operador corresponde com o nome e o(s) tipo(s) de argumento(s) " -"informados. Você precisa adicionar conversões de tipo explícitas." +"representação do nulo do COPY não pode ser nova linha ou retorno de carro" -#: parser/parse_oper.c:812 parser/parse_oper.c:928 +#: commands/copy.c:1038 #, c-format -msgid "operator is only a shell: %s" -msgstr "operador é indefinido: %s" - -#: parser/parse_oper.c:916 -msgid "op ANY/ALL (array) requires array on right side" -msgstr "op ANY/ALL (array) requer matriz no lado direito" +msgid "COPY delimiter cannot be \"%s\"" +msgstr "delimitador do COPY não pode ser \"%s\"" -#: parser/parse_oper.c:958 -msgid "op ANY/ALL (array) requires operator to yield boolean" -msgstr "op ANY/ALL (array) requer operador que retorna booleano" +#: commands/copy.c:1044 +msgid "COPY HEADER available only in CSV mode" +msgstr "COPY HEADER só está disponível no modo CSV" -#: parser/parse_oper.c:963 -msgid "op ANY/ALL (array) requires operator not to return a set" -msgstr "op ANY/ALL (array) requer operador que não retorne um conjunto" +#: commands/copy.c:1050 +msgid "COPY quote available only in CSV mode" +msgstr "delimitador de dados do COPY só está disponível no modo CSV" -#: parser/parse_clause.c:420 -#, c-format -msgid "JOIN/ON clause refers to \"%s\", which is not part of JOIN" -msgstr "cláusula JOIN/ON referencia \"%s\", que não faz parte do JOIN" +#: commands/copy.c:1055 +msgid "COPY quote must be a single one-byte character" +msgstr "delimitador de dados do COPY deve ter um único caracter de um byte" -#: parser/parse_clause.c:501 -msgid "subquery in FROM cannot have SELECT INTO" -msgstr "subconsulta no FROM não pode ter SELECT INTO" +#: commands/copy.c:1060 +msgid "COPY delimiter and quote must be different" +msgstr "delimitador e delimitador de dados do COPY devem ser diferentes" -#: parser/parse_clause.c:523 -msgid "subquery in FROM cannot refer to other relations of same query level" -msgstr "" -"subconsulta no FROM não pode referenciar outras relações do mesmo nível da " -"consulta" +#: commands/copy.c:1066 +msgid "COPY escape available only in CSV mode" +msgstr "escape do COPY só está disponível no modo CSV" -#: parser/parse_clause.c:574 -msgid "" -"function expression in FROM cannot refer to other relations of same query " -"level" -msgstr "" -"expressão da função no FROM não pode referenciar outras relações do mesmo " -"nível da consulta" +#: commands/copy.c:1071 +msgid "COPY escape must be a single one-byte character" +msgstr "escape do COPY deve ter um único caracter de um byte" -#: parser/parse_clause.c:587 -msgid "cannot use aggregate function in function expression in FROM" -msgstr "não pode utilizar função de agregação na expressão da função no FROM" +#: commands/copy.c:1077 +msgid "COPY force quote available only in CSV mode" +msgstr "opção force quote do COPY somente está disponível no modo CSV" -#: parser/parse_clause.c:594 -msgid "cannot use window function in function expression in FROM" -msgstr "não pode utilizar função deslizante na expressão da função no FROM" +#: commands/copy.c:1081 +msgid "COPY force quote only available using COPY TO" +msgstr "opção force quote do COPY somente está disponível ao utilizar COPY TO" -#: parser/parse_clause.c:870 -#, 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" +#: commands/copy.c:1087 +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" -#: parser/parse_clause.c:885 -#, c-format -msgid "common column name \"%s\" appears more than once in left table" +#: commands/copy.c:1091 +msgid "COPY force not null only available using COPY FROM" msgstr "" -"nome de coluna comum \"%s\" aparece mais de uma vez na tabela à esquerda" +"opção force not null do COPY somente está disponível ao utilizar COPY FROM" -#: parser/parse_clause.c:894 -#, 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" +#: commands/copy.c:1097 +msgid "COPY delimiter must not appear in the NULL specification" +msgstr "delimitador do COPY não deve aparecer em uma especificação NULL" -#: parser/parse_clause.c:908 -#, c-format -msgid "common column name \"%s\" appears more than once in right table" +#: commands/copy.c:1104 +msgid "CSV quote character must not appear in the NULL specification" msgstr "" -"nome de coluna comum \"%s\" aparece mais de uma vez na tabela à direita" +"caracter delimitador de dados do CSV não deve aparecer na especificação NULL" -#: parser/parse_clause.c:917 +#: commands/copy.c:1166 #, 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" +msgid "table \"%s\" does not have OIDs" +msgstr "tabela \"%s\" não tem OIDs" -#: parser/parse_clause.c:974 -#, c-format -msgid "column alias list for \"%s\" has too many entries" -msgstr "lista de aliases de coluna para \"%s\" tem muitas entradas" +#: commands/copy.c:1183 +msgid "COPY (SELECT) WITH OIDS is not supported" +msgstr "COPY (SELECT) WITH OIDS não é mais suportado" -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1211 +#: commands/copy.c:1210 +msgid "COPY (SELECT INTO) is not supported" +msgstr "COPY (SELECT INTO) não é suportado" + +#: commands/copy.c:1270 #, c-format -msgid "argument of %s must not contain variables" -msgstr "argumento do %s não deve conter variáveis" +msgid "FORCE QUOTE column \"%s\" not referenced by COPY" +msgstr "coluna do tipo FORCE QUOTE \"%s\" não é referenciada pelo COPY" -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1222 +#: commands/copy.c:1292 #, c-format -msgid "argument of %s must not contain aggregate functions" -msgstr "argumento do %s não deve conter funções de agregação" +msgid "FORCE NOT NULL column \"%s\" not referenced by COPY" +msgstr "coluna do tipo FORCE NOT NULL \"%s\" não é referenciada pelo COPY" -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1233 +#: commands/copy.c:1356 #, c-format -msgid "argument of %s must not contain window functions" -msgstr "argumento do %s não deve conter funções deslizantes" +msgid "cannot copy from view \"%s\"" +msgstr "não pode copiar visão \"%s\"" -#. translator: first %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1350 +#: commands/copy.c:1358 commands/copy.c:1364 +msgid "Try the COPY (SELECT ...) TO variant." +msgstr "Tente a variante COPY (SELECT ...) TO." + +#: commands/copy.c:1362 #, c-format -msgid "%s \"%s\" is ambiguous" -msgstr "%s \"%s\" é ambíguo" +msgid "cannot copy from foreign table \"%s\"" +msgstr "não pode copiar tabela externa \"%s\"" -#. translator: %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1374 +#: commands/copy.c:1368 #, c-format -msgid "non-integer constant in %s" -msgstr "constante não-inteira em %s" +msgid "cannot copy from sequence \"%s\"" +msgstr "não pode copiar sequência \"%s\"" -#. translator: %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1392 +#: commands/copy.c:1373 #, 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" +msgid "cannot copy from non-table relation \"%s\"" +msgstr "não pode copiar relação \"%s\" que não é uma tabela" -#: parser/parse_clause.c:1608 -#, c-format -msgid "window \"%s\" is already defined" -msgstr "deslizante \"%s\" já está definido" +#: commands/copy.c:1397 +msgid "relative path not allowed for COPY to file" +msgstr "caminho relativo não é permitido pelo COPY para arquivo" -#: parser/parse_clause.c:1662 +#: commands/copy.c:1407 #, c-format -msgid "cannot override PARTITION BY clause of window \"%s\"" -msgstr "não pode substituir cláusula PARTITION BY do deslizante \"%s\"" +msgid "could not open file \"%s\" for writing: %m" +msgstr "não pôde abrir arquivo \"%s\" para escrita: %m" -#: parser/parse_clause.c:1674 +#: commands/copy.c:1414 commands/copy.c:2200 #, c-format -msgid "cannot override ORDER BY clause of window \"%s\"" -msgstr "não pode substituir cláusula ORDER BY do deslizante \"%s\"" +msgid "\"%s\" is a directory" +msgstr "\"%s\" é um diretório" -#: parser/parse_clause.c:1696 +#: commands/copy.c:1738 #, c-format -msgid "cannot override frame clause of window \"%s\"" -msgstr "não pode substituir cláusula frame do deslizante \"%s\"" - -#: parser/parse_clause.c:1762 -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:1763 -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:1849 parser/parse_clause.c:1881 -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" +msgid "COPY %s, line %d, column %s" +msgstr "COPY %s, linha %d, coluna %s" -#: parser/parse_clause.c:2000 +#: commands/copy.c:1742 commands/copy.c:1787 #, 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:2002 -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:873 -msgid "Input has too few columns." -msgstr "Entrada tem poucas colunas." +msgid "COPY %s, line %d" +msgstr "COPY %s, linha %d" -#: parser/parse_coerce.c:891 +#: commands/copy.c:1753 #, c-format -msgid "Cannot cast type %s to %s in column %d." -msgstr "Não pode converter tipo %s para %s na coluna %d." - -#: parser/parse_coerce.c:906 -msgid "Input has too many columns." -msgstr "Entrada tem muitas colunas." +msgid "COPY %s, line %d, column %s: \"%s\"" +msgstr "COPY %s, linha %d, coluna %s: \"%s\"" -#. translator: first %s is name of a SQL construct, eg WHERE -#: parser/parse_coerce.c:949 +#: commands/copy.c:1761 #, c-format -msgid "argument of %s must be type boolean, not type %s" -msgstr "argumento do %s deve ser do tipo boolean, e não do tipo %s" +msgid "COPY %s, line %d, column %s: null input" +msgstr "COPY %s, linha %d, coluna %s: entrada nula" -#. translator: %s is name of a SQL construct, eg WHERE -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_coerce.c:959 parser/parse_coerce.c:1008 +#: commands/copy.c:1773 #, c-format -msgid "argument of %s must not return a set" -msgstr "argumento do %s não deve retornar um conjunto" +msgid "COPY %s, line %d: \"%s\"" +msgstr "COPY %s, linha %d: \"%s\"" -#. translator: first %s is name of a SQL construct, eg LIMIT -#: parser/parse_coerce.c:996 +#: commands/copy.c:1857 #, c-format -msgid "argument of %s must be type %s, not type %s" -msgstr "argumento do %s deve ser do tipo %s, e não do tipo %s" +msgid "cannot copy to view \"%s\"" +msgstr "não pode copiar para visão \"%s\"" -#. translator: first %s is name of a SQL construct, eg CASE -#: parser/parse_coerce.c:1129 +#: commands/copy.c:1862 #, c-format -msgid "%s types %s and %s cannot be matched" -msgstr "tipos no %s %s e %s não podem corresponder" +msgid "cannot copy to foreign table \"%s\"" +msgstr "não pode copiar para tabela externa \"%s\"" -#. translator: first %s is name of a SQL construct, eg CASE -#: parser/parse_coerce.c:1196 +#: commands/copy.c:1867 #, c-format -msgid "%s could not convert type %s to %s" -msgstr "%s não pôde converter tipo %s para %s" - -#: parser/parse_coerce.c:1437 -msgid "arguments declared \"anyelement\" are not all alike" -msgstr "argumentos declarados \"anyelement\" não são de tipos compatíveis" +msgid "cannot copy to sequence \"%s\"" +msgstr "não pode copiar para sequência \"%s\"" -#: parser/parse_coerce.c:1438 parser/parse_coerce.c:1457 -#: parser/parse_coerce.c:1502 parser/parse_param.c:214 -#: commands/tablecmds.c:1402 commands/tablecmds.c:1414 -#: commands/tablecmds.c:1574 commands/tablecmds.c:1586 +#: commands/copy.c:1872 #, c-format -msgid "%s versus %s" -msgstr "%s versus %s" - -#: parser/parse_coerce.c:1456 -msgid "arguments declared \"anyarray\" are not all alike" -msgstr "argumentos declarados \"anyarray\" não são de tipos compatíveis" +msgid "cannot copy to non-table relation \"%s\"" +msgstr "não pode copiar para relação \"%s\" que não é uma tabela" -#: parser/parse_coerce.c:1485 parser/parse_coerce.c:1629 -#: parser/parse_coerce.c:1660 +#: commands/copy.c:2193 utils/adt/genfile.c:122 #, c-format -msgid "argument declared \"anyarray\" is not an array but type %s" -msgstr "argumento declarado \"anyarray\" não é uma matriz mas do tipo %s" +msgid "could not open file \"%s\" for reading: %m" +msgstr "não pôde abrir arquivo \"%s\" para leitura: %m" -#: parser/parse_coerce.c:1501 -msgid "" -"argument declared \"anyarray\" is not consistent with argument declared " -"\"anyelement\"" -msgstr "" -"argumento declarado \"anyarray\" não está consistente com argumento " -"declarado \"anyelement\"" +#: commands/copy.c:2219 +msgid "COPY file signature not recognized" +msgstr "assinatura de arquivo COPY é desconhecida" -#: parser/parse_coerce.c:1519 -msgid "could not determine polymorphic type because input has type \"unknown\"" -msgstr "" -"não pôde determinar tipo polimórfico porque entrada tem tipo \"unknown\"" +#: commands/copy.c:2224 +msgid "invalid COPY file header (missing flags)" +msgstr "cabeçalho de arquivo COPY é inválido (faltando marcações)" -#: parser/parse_coerce.c:1529 -#, c-format -msgid "type matched to anynonarray is an array type: %s" -msgstr "tipo que corresponde a anynonarray é um tipo array: %s" +#: commands/copy.c:2230 +msgid "unrecognized critical flags in COPY file header" +msgstr "marcações críticas desconhecidas no cabeçalho do arquivo COPY" -#: parser/parse_coerce.c:1539 -#, c-format -msgid "type matched to anyenum is not an enum type: %s" -msgstr "tipo que corresponde a anyenum não é um tipo enum: %s" +#: commands/copy.c:2236 +msgid "invalid COPY file header (missing length)" +msgstr "cabeçalho de arquivo COPY é inválido (faltando tamanho)" -#: parser/parse_utilcmd.c:306 -msgid "array of serial is not implemented" -msgstr "matriz de serial não está implementada" +#: commands/copy.c:2243 +msgid "invalid COPY file header (wrong length)" +msgstr "cabeçalho de arquivo COPY é inválido (tamanho incorreto)" -#: parser/parse_utilcmd.c:350 -#, c-format -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\"" +#: commands/copy.c:2376 commands/copy.c:3058 commands/copy.c:3288 +msgid "extra data after last expected column" +msgstr "dado extra após última coluna esperada" -#: parser/parse_utilcmd.c:451 parser/parse_utilcmd.c:463 -#, 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\"" +#: commands/copy.c:2386 +msgid "missing data for OID column" +msgstr "faltando dados da coluna OID" -#: parser/parse_utilcmd.c:475 -#, 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\"" +#: commands/copy.c:2392 +msgid "null OID in COPY data" +msgstr "OID nulo em dados do COPY" -#: parser/parse_utilcmd.c:590 parser/parse_utilcmd.c:1408 -#: commands/tablecmds.c:1314 -#, c-format -msgid "inherited relation \"%s\" is not a table" -msgstr "relação herdada \"%s\" não é uma tabela" +#: commands/copy.c:2402 commands/copy.c:2501 +msgid "invalid OID in COPY data" +msgstr "OID inválido em dados do COPY" -#: parser/parse_utilcmd.c:832 +#: commands/copy.c:2417 #, c-format -msgid "type %s is not a composite type" -msgstr "tipo %s não é um tipo composto" +msgid "missing data for column \"%s\"" +msgstr "faltando dados da coluna \"%s\"" -#: parser/parse_utilcmd.c:1212 parser/parse_utilcmd.c:1298 -#: commands/indexcmds.c:347 -#, 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" +#: commands/copy.c:2476 +msgid "received copy data after EOF marker" +msgstr "dados do COPY recebidos após marcador EOF" -#: parser/parse_utilcmd.c:1445 commands/indexcmds.c:394 -#: commands/indexcmds.c:903 +#: commands/copy.c:2483 #, c-format -msgid "column \"%s\" named in key does not exist" -msgstr "coluna \"%s\" indicada na chave não existe" +msgid "row field count is %d, expected %d" +msgstr "quantidade de campos do registro é %d, esperado %d" -#: parser/parse_utilcmd.c:1457 -#, c-format -msgid "column \"%s\" appears twice in primary key constraint" -msgstr "coluna \"%s\" aparece duas vezes na restrição de chave primária" +#: commands/copy.c:2822 commands/copy.c:2839 +msgid "literal carriage return found in data" +msgstr "retorno de carro foi encontrado em dados" -#: parser/parse_utilcmd.c:1462 -#, c-format -msgid "column \"%s\" appears twice in unique constraint" -msgstr "coluna \"%s\" aparece duas vezes na restrição de unicidade" +#: commands/copy.c:2823 commands/copy.c:2840 +msgid "unquoted carriage return found in data" +msgstr "retorno de carros sem aspas foi encontrado em dados" -#: parser/parse_utilcmd.c:1615 -msgid "index expression cannot return a set" -msgstr "expressão de índice não pode retornar um conjunto" +#: commands/copy.c:2825 commands/copy.c:2842 +msgid "Use \"\\r\" to represent carriage return." +msgstr "Utilize \"\\r\" para representar retorno de carro." -#: parser/parse_utilcmd.c:1625 -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" +#: commands/copy.c:2826 commands/copy.c:2843 +msgid "Use quoted CSV field to represent carriage return." +msgstr "Utilize campo entre aspas do CSV para representar retorno de carro." -#: parser/parse_utilcmd.c:1720 -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" +#: commands/copy.c:2855 +msgid "literal newline found in data" +msgstr "nova linha foi encontrada em dados" -#: parser/parse_utilcmd.c:1726 -msgid "cannot use aggregate function in rule WHERE condition" -msgstr "não pode utilizar função de agregação em condição WHERE de regra" +#: commands/copy.c:2856 +msgid "unquoted newline found in data" +msgstr "nova linha sem aspas foi encontrada em dados" -#: parser/parse_utilcmd.c:1730 -msgid "cannot use window function in rule WHERE condition" -msgstr "não pode utilizar função deslizante em condição WHERE de regra" +#: commands/copy.c:2858 +msgid "Use \"\\n\" to represent newline." +msgstr "Utilize \"\\n\" para representar nova linha." -#: parser/parse_utilcmd.c:1802 -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" +#: commands/copy.c:2859 +msgid "Use quoted CSV field to represent newline." +msgstr "Utilize campo entre aspas do CSV para representar nova linha." -#: parser/parse_utilcmd.c:1820 parser/parse_utilcmd.c:1890 -#: rewrite/rewriteHandler.c:432 rewrite/rewriteManip.c:1021 -msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" -msgstr "comandos condicionais UNION/INTERSECT/EXCEPT não estão implementados" +#: commands/copy.c:2905 commands/copy.c:2941 +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" -#: parser/parse_utilcmd.c:1838 -msgid "ON SELECT rule cannot use OLD" -msgstr "regra ON SELECT não pode utilizar OLD" +#: commands/copy.c:2914 commands/copy.c:2930 +msgid "end-of-copy marker corrupt" +msgstr "marcador de fim-de-cópia corrompido" -#: parser/parse_utilcmd.c:1842 -msgid "ON SELECT rule cannot use NEW" -msgstr "regra ON SELECT não pode utilizar NEW" +#: commands/copy.c:3372 +msgid "unterminated CSV quoted field" +msgstr "campo entre aspas do CSV não foi terminado" -#: parser/parse_utilcmd.c:1851 -msgid "ON INSERT rule cannot use OLD" -msgstr "regra ON INSERT não pode utilizar OLD" +#: commands/copy.c:3449 commands/copy.c:3468 +msgid "unexpected EOF in COPY data" +msgstr "EOF inesperado em dados do COPY" -#: parser/parse_utilcmd.c:1857 -msgid "ON DELETE rule cannot use NEW" -msgstr "regra ON DELETE não pode utilizar NEW" +#: commands/copy.c:3458 +msgid "invalid field size" +msgstr "tamanho de campo inválido" -#: parser/parse_utilcmd.c:2138 -msgid "misplaced DEFERRABLE clause" -msgstr "cláusula DEFERRABLE no lugar errado" +#: commands/copy.c:3481 +msgid "incorrect binary data format" +msgstr "formato de dado binário incorreto" -#: parser/parse_utilcmd.c:2143 parser/parse_utilcmd.c:2158 -msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" -msgstr "múltiplas cláusulas DEFERRABLE/NOT DEFERRABLE não são permitidas" +#: commands/collationcmds.c:81 +#, c-format +msgid "collation attribute \"%s\" not recognized" +msgstr "atributo de ordenação \"%s\" desconhecido" -#: parser/parse_utilcmd.c:2153 -msgid "misplaced NOT DEFERRABLE clause" -msgstr "cláusula NOT DEFERRABLE no lugar errado" +#: commands/collationcmds.c:126 +msgid "parameter \"lc_collate\" must be specified" +msgstr "parâmetro \"lc_collate\" deve ser especificado" -#: parser/parse_utilcmd.c:2166 parser/parse_utilcmd.c:2192 gram.y:3484 -#: gram.y:3500 -msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" -msgstr "restrição declarada INITIALLY DEFERRED deve ser DEFERRABLE" +#: commands/collationcmds.c:131 +msgid "parameter \"lc_ctype\" must be specified" +msgstr "parâmetro \"lc_type\" deve ser especificado" -#: parser/parse_utilcmd.c:2174 -msgid "misplaced INITIALLY DEFERRED clause" -msgstr "cláusula INITIALLY DEFERRED no lugar errado" +#: commands/collationcmds.c:177 +#, c-format +msgid "collation \"%s\" does not exist, skipping" +msgstr "ordenação \"%s\" não existe, ignorando" -#: parser/parse_utilcmd.c:2179 parser/parse_utilcmd.c:2205 -msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" -msgstr "múltiplas cláusulas INITTIALLY IMMEDIATE/DEFERRED não são permitidas" +#: commands/collationcmds.c:237 commands/collationcmds.c:416 +#, c-format +msgid "collation \"%s\" for encoding \"%s\" already exists in schema \"%s\"" +msgstr "ordenação \"%s\" para codificação \"%s\" já existe no esquema \"%s\"" -#: parser/parse_utilcmd.c:2200 -msgid "misplaced INITIALLY IMMEDIATE clause" -msgstr "cláusula INITIALLY IMMEDIATE no lugar errado" +#: commands/collationcmds.c:249 commands/collationcmds.c:428 +#, c-format +msgid "collation \"%s\" already exists in schema \"%s\"" +msgstr "ordenação \"%s\" já existe no esquema \"%s\"" -#: parser/parse_utilcmd.c:2373 +#: commands/vacuumlazy.c:283 #, c-format msgid "" -"CREATE specifies a schema (%s) different from the one being created (%s)" +"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 "" -"CREATE especificou um esquema (%s) diferente daquele que foi criado (%s)" +"limpeza automática da tabela \"%s.%s.%s\": buscas no índice: %d\n" +"páginas: %d removidas, %d remanescentes\n" +"tuplas: %.0f removidas, %.0f remanescentes\n" +"uso do sistema: %s" -#: parser/parse_param.c:212 +#: commands/vacuumlazy.c:368 commands/cluster.c:905 #, c-format -msgid "inconsistent types deduced for parameter $%d" -msgstr "tipos inconsitentes deduzidos do parâmetro $%d" +msgid "vacuuming \"%s.%s\"" +msgstr "limpando \"%s.%s\"" -#: parser/parse_param.c:293 tcop/postgres.c:1301 commands/prepare.c:121 +#: commands/vacuumlazy.c:537 #, 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" +msgid "relation \"%s\" page %u is uninitialized --- fixing" +msgstr "página %2$u da relação \"%1$s\" não foi inicializada --- consertando" -#: parser/parse_cte.c:40 +#: commands/vacuumlazy.c:897 #, c-format -msgid "" -"recursive reference to query \"%s\" must not appear within its non-recursive " -"term" -msgstr "" -"referência recursiva para consulta \"%s\" não deve aparecer no seu termo não " -"recursivo" +msgid "\"%s\": removed %.0f row versions in %u pages" +msgstr "\"%s\": removidas %.0f versões de registro em %u páginas" -#: parser/parse_cte.c:42 +#: commands/vacuumlazy.c:902 #, c-format -msgid "recursive reference to query \"%s\" must not appear within a subquery" +msgid "" +"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u " +"pages" msgstr "" -"referência recursiva para consulta \"%s\" não deve aparecer em uma " -"subconsulta" +"\"%s\": encontrados %.0f versões de registros removíveis e %.0f não-" +"removíveis em %u de %u páginas" -#: parser/parse_cte.c:44 +#: commands/vacuumlazy.c:906 #, c-format msgid "" -"recursive reference to query \"%s\" must not appear within an outer join" +"%.0f dead row versions cannot be removed yet.\n" +"There were %.0f unused item pointers.\n" +"%u pages are entirely empty.\n" +"%s." msgstr "" -"referência recursiva para consulta \"%s\" não deve aparecer em uma junção " -"externa" +"%.0f versões de registros não vigentes não podem ser removidas ainda.\n" +"Havia %.0f ponteiros de itens não utilizados.\n" +"%u páginas estão completamente vazias.\n" +"%s." -#: parser/parse_cte.c:46 +#: commands/vacuumlazy.c:964 #, c-format -msgid "recursive reference to query \"%s\" must not appear within INTERSECT" -msgstr "" -"referência recursiva para consulta \"%s\" não deve aparecer em um INTERSECT" +msgid "\"%s\": removed %d row versions in %d pages" +msgstr "\"%s\": removidas %d versões de registro em %d páginas" -#: parser/parse_cte.c:48 +#: commands/vacuumlazy.c:967 commands/vacuumlazy.c:1059 +#: commands/vacuumlazy.c:1226 #, c-format -msgid "recursive reference to query \"%s\" must not appear within EXCEPT" -msgstr "" -"referência recursiva para consulta \"%s\" não deve aparecer em um EXCEPT" +msgid "%s." +msgstr "%s." -#: parser/parse_cte.c:130 +#: commands/vacuumlazy.c:1056 #, c-format -msgid "WITH query name \"%s\" specified more than once" -msgstr "nome da consulta WITH \"%s\" foi especificado mais de uma vez" +msgid "scanned index \"%s\" to remove %d row versions" +msgstr "índice \"%s\" percorrido para remover %d versões de registro" -#: parser/parse_cte.c:247 -msgid "subquery in WITH cannot have SELECT INTO" -msgstr "subconsulta no WITH não pode ter SELECT INTO" +#: commands/vacuumlazy.c:1097 +#, 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" -#: parser/parse_cte.c:288 +#: commands/vacuumlazy.c:1101 #, c-format msgid "" -"recursive query \"%s\" column %d has type %s in non-recursive term but type " -"%s overall" +"%.0f index row versions were removed.\n" +"%u index pages have been deleted, %u are currently reusable.\n" +"%s." msgstr "" -"coluna %2$d da consulta recursiva \"%1$s\" tem tipo %3$s no termo não " -"recursivo mas o tipo %4$s no restante" +"%.0f versões de registros de índices foram apagadas.\n" +"%u páginas de índice foram removidas, %u são reutilizáveis.\n" +"%s." -#: parser/parse_cte.c:294 -msgid "Cast the output of the non-recursive term to the correct type." -msgstr "Converta a saída do termo não recursivo para o tipo correto." +#: commands/vacuumlazy.c:1158 +#, c-format +msgid "\"%s\": stopping truncate due to conflicting lock request" +msgstr "\"%s\": parando truncamento devido a pedido de bloqueio conflitante" -#: parser/parse_cte.c:376 +#: commands/vacuumlazy.c:1223 #, c-format -msgid "WITH query \"%s\" has %d columns available but %d columns specified" +msgid "\"%s\": truncated %u to %u pages" +msgstr "\"%s\": truncadas %u em %u páginas" + +#: commands/vacuumlazy.c:1279 +#, c-format +msgid "\"%s\": suspending truncate due to conflicting lock request" msgstr "" -"consulta WITH \"%s\" tem %d colunas disponíveis mas %d colunas foram " -"especificadas" +"\"%s\": suspendendo truncamento devido a pedido de bloqueio conflitante" -#: parser/parse_cte.c:556 -msgid "mutual recursion between WITH items is not implemented" -msgstr "recursão mútua entre itens WITH não está implementada" +#: commands/schemacmds.c:82 commands/schemacmds.c:275 +#, c-format +msgid "unacceptable schema name \"%s\"" +msgstr "nome de esquema \"%s\" é inaceitável" + +#: commands/schemacmds.c:83 commands/schemacmds.c:276 +msgid "The prefix \"pg_\" is reserved for system schemas." +msgstr "O prefixo \"pg_\" é reservado para esquemas do sistema." -#: parser/parse_cte.c:608 +#: commands/schemacmds.c:186 #, c-format -msgid "" -"recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] " -"recursive-term" -msgstr "" -"consulta recursiva \"%s\" não tem a forma termo-não-recursivo UNION [ALL] " -"termo-recursivo" +msgid "schema \"%s\" does not exist, skipping" +msgstr "esquema \"%s\" não existe, ignorando" -#: parser/parse_cte.c:640 -msgid "ORDER BY in a recursive query is not implemented" -msgstr "ORDER BY em uma consulta recursiva não está implementado" +#: commands/view.c:143 +#, c-format +msgid "could not determine which collation to use for view column \"%s\"" +msgstr "não pôde determinar qual ordenação utilizar em coluna \"%s\" de visão" -#: parser/parse_cte.c:646 -msgid "OFFSET in a recursive query is not implemented" -msgstr "OFFSET em uma consulta recursiva não está implementado" +#: commands/view.c:158 +msgid "view must have at least one column" +msgstr "visão deve ter pelo menos uma coluna" -#: parser/parse_cte.c:652 -msgid "LIMIT in a recursive query is not implemented" -msgstr "LIMIT em uma consulta recursiva não está implementado" +#: commands/view.c:283 commands/view.c:295 +msgid "cannot drop columns from view" +msgstr "não pode apagar colunas da visão" -#: parser/parse_cte.c:658 -msgid "FOR UPDATE/SHARE in a recursive query is not implemented" -msgstr "FOR UPDATE/SHARE em uma consulta recursiva não está implementado" +#: commands/view.c:300 +#, 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\"" -#: parser/parse_cte.c:715 +#: commands/view.c:308 #, c-format -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" +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" -#: parser/analyze.c:441 -msgid "INSERT ... SELECT cannot specify INTO" -msgstr "INSERT ... SELECT não pode especificar INTO" +#: commands/view.c:447 +msgid "views must not contain SELECT INTO" +msgstr "visões não devem conter SELECT INTO" -#: parser/analyze.c:543 parser/analyze.c:968 -msgid "VALUES lists must all be the same length" -msgstr "listas de VALUES devem ser todas do mesmo tamanho" +#: commands/view.c:451 +msgid "views must not contain data-modifying statements in WITH" +msgstr "visões não devem conter comandos que modificam dados no WITH" -#: parser/analyze.c:564 parser/analyze.c:1073 -msgid "VALUES must not contain table references" -msgstr "VALUES não devem conter referências a tabelas" +#: commands/view.c:479 +msgid "CREATE VIEW specifies more column names than columns" +msgstr "CREATE VIEW especificou mais nomes de colunas do que colunas" -#: parser/analyze.c:578 parser/analyze.c:1087 -msgid "VALUES must not contain OLD or NEW references" -msgstr "VALUES não devem conter referências a OLD ou NEW" +#: commands/view.c:487 +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" -#: parser/analyze.c:579 parser/analyze.c:1088 -msgid "Use SELECT ... UNION ALL ... instead." -msgstr "Ao invés disso utilize SELECT ... UNION ALL ... ." +#: commands/view.c:501 +#, c-format +msgid "view \"%s\" will be a temporary view" +msgstr "visão \"%s\" será uma visão temporária" -#: parser/analyze.c:689 parser/analyze.c:1100 -msgid "cannot use aggregate function in VALUES" -msgstr "não pode utilizar função de agregação em VALUES" +#: commands/user.c:143 +msgid "SYSID can no longer be specified" +msgstr "SYSID não pode mais ser especificado" -#: parser/analyze.c:695 parser/analyze.c:1106 -msgid "cannot use window function in VALUES" -msgstr "não pode utilizar função deslizante em VALUES" +#: commands/user.c:284 +msgid "must be superuser to create superusers" +msgstr "deve ser super-usuário para criar super-usuários" -#: parser/analyze.c:727 -msgid "INSERT has more expressions than target columns" -msgstr "INSERT tem mais expressões do que colunas alvo" +#: commands/user.c:291 +msgid "must be superuser to create replication users" +msgstr "deve ser super-usuário para criar usuários para replicação" -#: parser/analyze.c:735 -msgid "INSERT has more target columns than expressions" -msgstr "INSERT tem mais colunas alvo do que expressões" +#: commands/user.c:298 +msgid "permission denied to create role" +msgstr "permissão negada ao criar role" -#: parser/analyze.c:984 -msgid "DEFAULT can only appear in a VALUES list within INSERT" -msgstr "DEFAULT só pode aparecer em uma lista de VALUES com INSERT" +#: commands/user.c:305 commands/user.c:1087 +#, c-format +msgid "role name \"%s\" is reserved" +msgstr "nome de role \"%s\" é reservado" -#: parser/analyze.c:1054 parser/analyze.c:2174 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES" -msgstr "SELECT FOR UPDATE/SHARE não pode ser aplicado a VALUES" +#: commands/user.c:318 commands/user.c:1081 +#, c-format +msgid "role \"%s\" already exists" +msgstr "role \"%s\" já existe" -#: parser/analyze.c:1196 parser/analyze.c:1384 parser/analyze.c:2026 -#: optimizer/plan/planner.c:946 -msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT" -msgstr "SELECT FOR UPDATE/SHARE não é permitido com UNION/INTERSECT/EXCEPT" +#: commands/user.c:636 commands/user.c:842 commands/user.c:1321 +#: commands/user.c:1467 +msgid "must be superuser to alter superusers" +msgstr "deve ser super-usuário para alterar super-usuários" -#: parser/analyze.c:1307 -msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" -msgstr "cláusula UNION/INTERSECT/EXCEPT ORDER BY é inválida" +#: commands/user.c:643 +msgid "must be superuser to alter replication users" +msgstr "deve ser super-usuário para alterar usuários para replicação" -#: parser/analyze.c:1308 -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." +#: commands/user.c:659 commands/user.c:850 +msgid "permission denied" +msgstr "permissão negada" -#: parser/analyze.c:1309 -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." +#: commands/user.c:878 +msgid "permission denied to drop role" +msgstr "permissão negada ao remover role" -#: parser/analyze.c:1376 -msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" -msgstr "INTO só é permitido no primeiro SELECT do UNION/INTERSECT/EXCEPT" +#: commands/user.c:910 +#, c-format +msgid "role \"%s\" does not exist, skipping" +msgstr "role \"%s\" não existe, ignorando" -#: parser/analyze.c:1436 -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" +#: commands/user.c:922 commands/user.c:926 +msgid "current user cannot be dropped" +msgstr "usuário atual não pode ser removido" -#: parser/analyze.c:1521 +#: commands/user.c:930 +msgid "session user cannot be dropped" +msgstr "usuário de sessão não pode ser removido" + +#: commands/user.c:941 +msgid "must be superuser to drop superusers" +msgstr "deve ser super-usuário para remover super-usuários" + +#: commands/user.c:954 #, 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" +msgid "role \"%s\" cannot be dropped because some objects depend on it" +msgstr "role \"%s\" não pode ser removida porque alguns objetos dependem dela" -#: parser/analyze.c:1713 -msgid "CREATE TABLE AS specifies too many column names" -msgstr "CREATE TABLE AS especificou muitos nomes de colunas" +#: commands/user.c:1071 +msgid "session user cannot be renamed" +msgstr "usuário de sessão não pode ser renomeado" -#: parser/analyze.c:1763 -msgid "cannot use aggregate function in UPDATE" -msgstr "não pode utilizar função de agregação em UPDATE" +#: commands/user.c:1075 +msgid "current user cannot be renamed" +msgstr "usuário atual não pode ser renomeado" -#: parser/analyze.c:1769 -msgid "cannot use window function in UPDATE" -msgstr "não pode utilizar função deslizante em UPDATE" +#: commands/user.c:1098 +msgid "must be superuser to rename superusers" +msgstr "deve ser super-usuário para renomear super-usuários" -#: parser/analyze.c:1876 -msgid "cannot use aggregate function in RETURNING" -msgstr "não pode utilizar função de agregação em RETURNING" +#: commands/user.c:1105 +msgid "permission denied to rename role" +msgstr "permissão negada ao renomear role" -#: parser/analyze.c:1882 -msgid "cannot use window function in RETURNING" -msgstr "não pode utilizar função deslizante em RETURNING" +#: commands/user.c:1126 +msgid "MD5 password cleared because of role rename" +msgstr "senha MD5 foi limpada porque role foi renomeada" -#: parser/analyze.c:1901 -msgid "RETURNING cannot contain references to other relations" -msgstr "RETURNING não pode conter referências a outras relações" +#: commands/user.c:1182 +msgid "column names cannot be included in GRANT/REVOKE ROLE" +msgstr "nomes de coluna não podem ser incluídos em GRANT/REVOKE ROLE" -#: parser/analyze.c:1940 -msgid "cannot specify both SCROLL and NO SCROLL" -msgstr "não pode especificar SCROLL e NO SCROLL" +#: commands/user.c:1220 +msgid "permission denied to drop objects" +msgstr "permissão negada ao remover objetos" -#: parser/analyze.c:1954 -msgid "DECLARE CURSOR cannot specify INTO" -msgstr "DECLARE CURSOR não pode especificar INTO" +#: commands/user.c:1247 commands/user.c:1256 +msgid "permission denied to reassign objects" +msgstr "permissão negada ao reatribuir objetos" -#: parser/analyze.c:1962 -msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported" -msgstr "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE não é suportado" +#: commands/user.c:1329 commands/user.c:1475 +#, c-format +msgid "must have admin option on role \"%s\"" +msgstr "deve ter opção admin na role \"%s\"" -#: parser/analyze.c:1963 -msgid "Holdable cursors must be READ ONLY." -msgstr "Cursores duráveis devem ser READ ONLY." +#: commands/user.c:1346 +msgid "must be superuser to set grantor" +msgstr "deve ser super-usuário para definir concedente" -#: parser/analyze.c:1976 -msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported" -msgstr "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE não é suportado" +#: commands/user.c:1371 +#, c-format +msgid "role \"%s\" is a member of role \"%s\"" +msgstr "role \"%s\" é um membro da role \"%s\"" -#: parser/analyze.c:1977 -msgid "Insensitive cursors must be READ ONLY." -msgstr "Cursores insensíveis devem ser READ ONLY." +#: commands/user.c:1386 +#, c-format +msgid "role \"%s\" is already a member of role \"%s\"" +msgstr "role \"%s\" já é um membro da role \"%s\"" -#: parser/analyze.c:2030 -msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause" -msgstr "SELECT FOR UPDATE/SHARE não é permitido com cláusula DISTINCT" +#: commands/user.c:1497 +#, c-format +msgid "role \"%s\" is not a member of role \"%s\"" +msgstr "role \"%s\" não é um membro da role \"%s\"" -#: parser/analyze.c:2034 -msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause" -msgstr "SELECT FOR UPDATE/SHARE não é permitido com cláusula GROUP BY" +#: commands/comment.c:97 commands/seclabel.c:113 +#, c-format +msgid "\"%s\" is not a table, view, composite type, or foreign table" +msgstr "\"%s\" não é uma tabela, visão, tipo composto ou tabela externa" -#: parser/analyze.c:2038 -msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause" -msgstr "SELECT FOR UPDATE/SHARE não é permitido com cláusula HAVING" +#: commands/analyze.c:153 +#, c-format +msgid "skipping analyze of \"%s\" --- lock not available" +msgstr "ignorando análise de \"%s\" --- bloqueio não está disponível" -#: parser/analyze.c:2042 -msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions" -msgstr "SELECT FOR UPDATE/SHARE não é permitido com funções de agregação" - -#: parser/analyze.c:2046 -msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions" -msgstr "SELECT FOR UPDATE/SHARE não é permitido com funções deslizantes" +#: commands/analyze.c:170 +#, c-format +msgid "skipping \"%s\" --- only superuser can analyze it" +msgstr "ignorando \"%s\" --- somente super-usuário pode analisá-la(o)" -#: parser/analyze.c:2050 -#, fuzzy -msgid "" -"SELECT FOR UPDATE/SHARE is not allowed with set-returning functions in the " -"target list" -msgstr "SELECT FOR UPDATE/SHARE não é permitido em funções que retornam conjunto na lista alvo" +#: commands/analyze.c:174 +#, 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)" -#: parser/analyze.c:2126 -msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names" +#: commands/analyze.c:178 +#, c-format +msgid "skipping \"%s\" --- only table or database owner can analyze it" msgstr "" -"SELECT FOR UPDATE/SHARE deve especificar nomes de relação não qualificados" +"ignorando \"%s\" --- somente dono de tabela ou de banco de dados pode " +"analisá-la(o)" -#: parser/analyze.c:2156 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join" -msgstr "SELECT FOR UPDATE/SHARE não pode ser aplicado em uma junção" +#: commands/analyze.c:194 +#, c-format +msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables" +msgstr "" +"ignorando \"%s\" --- não pode analisar objetos que não são tabelas ou " +"tabelas especiais do sistema" -#: parser/analyze.c:2162 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to NEW or OLD" -msgstr "SELECT FOR UPDATE/SHARE não pode ser aplicado a NEW ou OLD" +#: commands/analyze.c:285 +#, c-format +msgid "analyzing \"%s.%s\" inheritance tree" +msgstr "analisando árvore da herança de \"%s.%s\"" -#: parser/analyze.c:2168 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function" -msgstr "SELECT FOR UPDATE/SHARE não pode ser aplicado a uma função" +#: commands/analyze.c:290 +#, c-format +msgid "analyzing \"%s.%s\"" +msgstr "analisando \"%s.%s\"" -#: parser/analyze.c:2180 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query" -msgstr "SELECT FOR UPDATE/SHARE não pode ser aplicado em uma consulta WITH" +#: commands/analyze.c:598 +#, 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" -#: parser/analyze.c:2194 +#: commands/analyze.c:1238 #, c-format -msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause" +msgid "" +"\"%s\": scanned %d of %u pages, containing %.0f live rows and %.0f dead " +"rows; %d rows in sample, %.0f estimated total rows" msgstr "" -"relação \"%s\" na cláusula FOR UPDATE/SHARE não foi encontrada na cláusula " -"FROM" - -#: gram.y:1255 -msgid "current database cannot be changed" -msgstr "banco de dados atual não pode ser mudado" +"\"%s\": processados %d de %u páginas, contendo %.0f registros vigentes e " +"%.0f registros não vigentes; %d registros amostrados, %.0f registros totais " +"estimados" -#: gram.y:1370 gram.y:1385 -msgid "time zone interval must be HOUR or HOUR TO MINUTE" -msgstr "intervalo de zona horária deve ser HOUR ou HOUR TO MINUTE" +#: commands/cluster.c:134 commands/cluster.c:372 +msgid "cannot cluster temporary tables of other sessions" +msgstr "não pode agrupar tabelas temporárias de outras sessões" -#: gram.y:1390 gram.y:8280 gram.y:10731 -msgid "interval precision specified twice" -msgstr "precisão de interval foi especificada duas vezes" +#: commands/cluster.c:164 +#, c-format +msgid "there is no previously clustered index for table \"%s\"" +msgstr "não há nenhum índice previamente agrupado na tabela \"%s\"" -#: gram.y:2521 -msgid "CHECK constraints cannot be deferred" -msgstr "restrições CHECK não são postergáveis" +#: commands/cluster.c:361 +msgid "cannot cluster a shared catalog" +msgstr "não pode agrupar um catálogo compartilhado" -#: gram.y:2725 -msgid "CREATE TABLE AS cannot specify INTO" -msgstr "CREATE TABLE AS não pode especificar INTO" +#: commands/cluster.c:376 +msgid "cannot vacuum temporary tables of other sessions" +msgstr "não pode limpar tabelas temporárias de outras sessões" -#: gram.y:3395 -msgid "duplicate trigger events specified" -msgstr "eventos de gatilho duplicados especificados" +#: commands/cluster.c:426 +#, c-format +msgid "\"%s\" is not an index for table \"%s\"" +msgstr "\"%s\" não é um índice na tabela \"%s\"" -#: gram.y:3564 -msgid "CREATE ASSERTION is not yet implemented" -msgstr "CREATE ASSERTION ainda não foi implementado" +#: commands/cluster.c:434 +#, 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" -#: gram.y:3580 -msgid "DROP ASSERTION is not yet implemented" -msgstr "DROP ASSERTION ainda não foi implementado" +#: commands/cluster.c:446 +#, c-format +msgid "cannot cluster on partial index \"%s\"" +msgstr "não pode agrupar índice parcial \"%s\"" -#: gram.y:3881 -msgid "RECHECK is no longer required" -msgstr "RECHECK não é mais requerido" +#: commands/cluster.c:460 +#, c-format +msgid "cannot cluster on invalid index \"%s\"" +msgstr "não pode agrupar por índice inválido \"%s\"" -#: gram.y:3882 -msgid "Update your data type." -msgstr "Atualize seu tipo de dado." +#: commands/cluster.c:894 +#, c-format +msgid "clustering \"%s.%s\" using index scan on \"%s\"" +msgstr "agrupando \"%s.%s\" utilizando busca no índice em \"%s\"" -#: gram.y:6357 gram.y:6363 gram.y:6369 -msgid "WITH CHECK OPTION is not implemented" -msgstr "WITH CHECK OPTION não está implementado" +#: commands/cluster.c:900 +#, c-format +msgid "clustering \"%s.%s\" using sequential scan and sort" +msgstr "agrupando \"%s.%s\" utilizando busca sequencial e ordenação" -#: gram.y:7046 -msgid "column name list not allowed in CREATE TABLE / AS EXECUTE" -msgstr "lista de colunas não é permitida em CREATE TABLE / AS EXECUTE" +#: commands/cluster.c:1065 +#, 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" -#: gram.y:7267 -msgid "number of columns does not match number of values" -msgstr "número de colunas não corresponde ao número de valores" +#: commands/cluster.c:1069 +#, c-format +msgid "" +"%.0f dead row versions cannot be removed yet.\n" +"%s." +msgstr "" +"%.0f versões de registros não vigentes não podem ser removidas ainda.\n" +"%s." -#: gram.y:7707 -msgid "LIMIT #,# syntax is not supported" -msgstr "sintaxe LIMIT #,# não é suportada" +#: commands/vacuum.c:419 +msgid "oldest xmin is far in the past" +msgstr "xmin mais velho é muito antigo" -#: gram.y:7708 -msgid "Use separate LIMIT and OFFSET clauses." -msgstr "Utilize cláusulas LIMIT e OFFSET separadas." +#: commands/vacuum.c:420 +msgid "Close open transactions soon to avoid wraparound problems." +msgstr "" +"Feche transações abertas imediatamente para evitar problemas de reinício." -#: gram.y:7926 -msgid "VALUES in FROM must have an alias" -msgstr "VALUES no FROM deve ter um aliás" +#: commands/vacuum.c:811 +msgid "some databases have not been vacuumed in over 2 billion transactions" +msgstr "" +"alguns bancos de dados não foram limpados a mais de 2 bilhões de transações" -#: gram.y:7927 -msgid "For example, FROM (VALUES ...) [AS] foo." -msgstr "Por exemplo, FROM (VALUES ...) [AS] foo." +#: commands/vacuum.c:812 +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." -#: gram.y:7932 -msgid "subquery in FROM must have an alias" -msgstr "subconsulta no FROM deve ter um aliás" +#: commands/vacuum.c:919 +#, c-format +msgid "skipping vacuum of \"%s\" --- lock not available" +msgstr "ignorando limpeza de \"%s\" --- bloqueio não está disponível" -#: gram.y:7933 -msgid "For example, FROM (SELECT ...) [AS] foo." -msgstr "Por exemplo, FROM (SELECT ...) [AS] foo." +#: commands/vacuum.c:945 +#, c-format +msgid "skipping \"%s\" --- only superuser can vacuum it" +msgstr "ignorando \"%s\" --- somente super-usuário pode limpá-la(o)" -#: gram.y:8406 -msgid "precision for type float must be at least 1 bit" -msgstr "precisão para tipo float deve ser pelo menos 1 bit" +#: commands/vacuum.c:949 +#, 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)" -#: gram.y:8415 -msgid "precision for type float must be less than 54 bits" -msgstr "precisão para tipo float deve ser menor do que 54 bits" +#: commands/vacuum.c:953 +#, 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)" -#: gram.y:9121 -msgid "UNIQUE predicate is not yet implemented" -msgstr "predicado UNIQUE ainda não foi implementado" +#: commands/vacuum.c:970 +#, 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" -#: gram.y:9993 -msgid "RANGE PRECEDING is only supported with UNBOUNDED" -msgstr "RANGE PRECEDING só é suportado com UNBOUNDED" +#: commands/sequence.c:127 +msgid "unlogged sequences are not supported" +msgstr "sequências unlogged não são suportadas" -#: gram.y:9999 -msgid "RANGE FOLLOWING is only supported with UNBOUNDED" -msgstr "RANGE FOLLOWING só é suportado com UNBOUNDED" +#: commands/sequence.c:620 +#, c-format +msgid "nextval: reached maximum value of sequence \"%s\" (%s)" +msgstr "nextval: valor máximo da sequência \"%s\" foi alcançado (%s)" -#: gram.y:10026 gram.y:10049 -msgid "frame start cannot be UNBOUNDED FOLLOWING" -msgstr "início de quadro não pode ser UNBOUNDED FOLLOWING" +#: commands/sequence.c:643 +#, c-format +msgid "nextval: reached minimum value of sequence \"%s\" (%s)" +msgstr "nextval: valor mínimo da sequência \"%s\" foi alcançado (%s)" -#: gram.y:10031 -#, fuzzy -msgid "frame starting from following row cannot end with current row" -msgstr "quadro iniciando do próximo registro não pode terminar com registro atual" +#: commands/sequence.c:757 +#, 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" -#: gram.y:10054 -msgid "frame end cannot be UNBOUNDED PRECEDING" -msgstr "fim de quadro não pode ser UNBOUNDED PRECEDING" +#: commands/sequence.c:776 commands/sequence.c:782 +msgid "lastval is not yet defined in this session" +msgstr "lastval ainda não foi definido nesta sessão" -#: gram.y:10060 -#, fuzzy -msgid "frame starting from current row cannot have preceding rows" -msgstr "quadro iniciando do registro atual não pode ter registros anteriores" +#: commands/sequence.c:851 +#, 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)" -#: gram.y:10067 -#, fuzzy -msgid "frame starting from following row cannot have preceding rows" -msgstr "quadro iniciando do próximo registro não pode ter registro anteriores" +#: commands/sequence.c:1220 +msgid "INCREMENT must not be zero" +msgstr "INCREMENT não deve ser zero" -#: gram.y:10706 -#, fuzzy -msgid "type modifier cannot have parameter name" -msgstr "modificador de tipo não pode ter nome de parâmetro" +#: commands/sequence.c:1276 +#, c-format +msgid "MINVALUE (%s) must be less than MAXVALUE (%s)" +msgstr "MINVALUE (%s) deve ser menor do que MAXVALUE (%s)" -#: gram.y:11303 gram.y:11511 -msgid "improper use of \"*\"" -msgstr "uso inválido de \"*\"" +#: commands/sequence.c:1301 +#, 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)" -#: gram.y:11442 -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" +#: commands/sequence.c:1313 +#, 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)" -#: gram.y:11449 -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" +#: commands/sequence.c:1343 +#, 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)" -#: gram.y:11474 gram.y:11491 tsearch/spell.c:444 tsearch/spell.c:461 -#: tsearch/spell.c:478 tsearch/spell.c:495 tsearch/spell.c:517 -msgid "syntax error" -msgstr "erro de sintaxe" +#: commands/sequence.c:1355 +#, 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)" -#: gram.y:11574 -msgid "multiple ORDER BY clauses not allowed" -msgstr "múltiplas cláusulas ORDER BY não são permitidas" +#: commands/sequence.c:1370 +#, c-format +msgid "CACHE (%s) must be greater than zero" +msgstr "CACHE (%s) deve ser maior do que zero" -#: gram.y:11585 -msgid "multiple OFFSET clauses not allowed" -msgstr "múltiplas cláusulas OFFSET não são permitidas" +#: commands/sequence.c:1402 +msgid "invalid OWNED BY option" +msgstr "opção de OWNED BY é inválida" -#: gram.y:11594 -msgid "multiple LIMIT clauses not allowed" -msgstr "múltiplas cláusulas LIMIT não são permitidas" +#: commands/sequence.c:1403 +msgid "Specify OWNED BY table.column or OWNED BY NONE." +msgstr "Especifique OWNED BY tabela.coluna ou OWNED BY NONE." -#: gram.y:11603 -msgid "multiple WITH clauses not allowed" -msgstr "múltiplas cláusulas WITH não são permitidas" +#: commands/sequence.c:1432 +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" -#: gram.y:11757 -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" +#: commands/sequence.c:1436 +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" -#: parser/scansup.c:190 +#: commands/conversioncmds.c:71 #, c-format -msgid "identifier \"%s\" will be truncated to \"%s\"" -msgstr "identificador \"%s\" será truncado para \"%s\"" +msgid "source encoding \"%s\" does not exist" +msgstr "codificação de origem \"%s\" não existe" -#: parser/parse_func.c:151 +#: commands/conversioncmds.c:78 #, c-format -msgid "argument name \"%s\" used more than once" -msgstr "nome de argumento \"%s\" utilizado mais de uma vez" - -#: parser/parse_func.c:162 -msgid "positional argument cannot follow named argument" -msgstr "argumento posicional não pode seguir argumento nomeado" +msgid "destination encoding \"%s\" does not exist" +msgstr "codificação de destino \"%s\" não existe" -#: parser/parse_func.c:240 +#: commands/conversioncmds.c:92 #, 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" +msgid "encoding conversion function %s must return type \"void\"" +msgstr "função de conversão de codificação %s deve retornar tipo \"void\"" -#: parser/parse_func.c:247 +#: commands/conversioncmds.c:152 #, 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" +msgid "conversion \"%s\" does not exist, skipping" +msgstr "conversão \"%s\" não existe, ignorando" -#: parser/parse_func.c:253 +#: commands/conversioncmds.c:211 #, 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:259 +msgid "conversion \"%s\" already exists in schema \"%s\"" +msgstr "conversão \"%s\" já existe no esquema \"%s\"" + +#: commands/indexcmds.c:162 +msgid "must specify at least one column" +msgstr "deve especificar pelo menos uma coluna" + +#: commands/indexcmds.c:166 #, 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" +msgid "cannot use more than %d columns in an index" +msgstr "não pode utilizar mais do que %d colunas em um índice" -#: parser/parse_func.c:281 +#: commands/indexcmds.c:198 #, c-format -msgid "function %s is not unique" -msgstr "função %s não é única" +msgid "cannot create index on foreign table \"%s\"" +msgstr "não pode criar índice na tabela externa \"%s\"" -#: parser/parse_func.c:284 -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." +#: commands/indexcmds.c:213 +msgid "cannot create indexes on temporary tables of other sessions" +msgstr "não pode criar índices em tabelas temporárias de outras sessões" -#: parser/parse_func.c:292 parser/parse_func.c:303 parser/parse_func.c:1462 -#: commands/typecmds.c:1269 commands/typecmds.c:1320 commands/typecmds.c:1351 -#: commands/typecmds.c:1374 commands/typecmds.c:1395 commands/typecmds.c:1422 -#: commands/typecmds.c:1449 catalog/pg_aggregate.c:331 +#: commands/indexcmds.c:299 +msgid "substituting access method \"gist\" for obsolete method \"rtree\"" +msgstr "substituindo método de acesso \"gist\" pelo método obsoleto \"rtree\"" + +#: commands/indexcmds.c:307 commands/opclasscmds.c:369 +#: commands/opclasscmds.c:790 commands/opclasscmds.c:2202 #, c-format -msgid "function %s does not exist" -msgstr "função %s não existe" +msgid "access method \"%s\" does not exist" +msgstr "método de acesso \"%s\" não existe" -#: parser/parse_func.c:295 -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." +#: commands/indexcmds.c:316 +#, c-format +msgid "access method \"%s\" does not support unique indexes" +msgstr "método de acesso \"%s\" não suporta índices únicos" -#: parser/parse_func.c:306 -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." +#: commands/indexcmds.c:321 +#, 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" -#: parser/parse_func.c:413 parser/parse_func.c:478 +#: commands/indexcmds.c:326 #, 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" +msgid "access method \"%s\" does not support exclusion constraints" +msgstr "método de acesso \"%s\" não suporta restrições de exclusão" -#: parser/parse_func.c:420 -msgid "aggregates cannot return sets" -msgstr "agregações não podem retornar conjuntos" +#: commands/indexcmds.c:402 +#, c-format +msgid "%s %s will create implicit index \"%s\" for table \"%s\"" +msgstr "%s %s criará índice implícito \"%s\" na tabela \"%s\"" -#: parser/parse_func.c:432 -msgid "aggregates cannot use named arguments" -msgstr "agregações não podem utilizar argumentos nomeados" +#: commands/indexcmds.c:740 +msgid "cannot use subquery in index predicate" +msgstr "não pode utilizar subconsulta em predicado de índice" -#: parser/parse_func.c:451 -msgid "window function call requires an OVER clause" -msgstr "chamada de função deslizante requer uma cláusula OVER" +#: commands/indexcmds.c:744 +msgid "cannot use aggregate in index predicate" +msgstr "não pode utilizar agregação em predicado de índice" -#: parser/parse_func.c:468 -msgid "DISTINCT is not implemented for window functions" -msgstr "DISTINCT não está implementado para funções deslizantes" +#: commands/indexcmds.c:753 +msgid "functions in index predicate must be marked IMMUTABLE" +msgstr "funções em predicado de índice devem ser IMMUTABLE" -#: parser/parse_func.c:488 -msgid "aggregate ORDER BY is not implemented for window functions" -msgstr "agregação ORDER BY não está implementado para funções deslizantes" +#: commands/indexcmds.c:818 parser/parse_utilcmd.c:1754 +#, c-format +msgid "column \"%s\" named in key does not exist" +msgstr "coluna \"%s\" indicada na chave não existe" -#: parser/parse_func.c:494 -msgid "window functions cannot return sets" -msgstr "funções deslizantes não podem retornar conjuntos" +#: commands/indexcmds.c:871 +msgid "cannot use subquery in index expression" +msgstr "não pode utilizar subconsulta em expressão de índice" -#: parser/parse_func.c:505 -msgid "window functions cannot use named arguments" -msgstr "funções deslizantes não podem utilizar argumentos nomeados" +#: commands/indexcmds.c:875 +msgid "cannot use aggregate function in index expression" +msgstr "não pode utilizar função de agregação em expressão de índice" -#: parser/parse_func.c:1507 parser/parse_func.c:1547 catalog/pg_proc.c:123 -#, c-format -msgid "functions cannot have more than %d argument" -msgid_plural "functions cannot have more than %d arguments" -msgstr[0] "funções não podem ter mais do que %d argumento" -msgstr[1] "funções não podem ter mais do que %d argumentos" +#: commands/indexcmds.c:886 +msgid "functions in index expression must be marked IMMUTABLE" +msgstr "funções em expressão de índice devem ser IMMUTABLE" -#: parser/parse_func.c:1570 -#, c-format -msgid "aggregate %s(*) does not exist" -msgstr "agregação %s(*) não existe" +#: commands/indexcmds.c:907 +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" -#: parser/parse_func.c:1575 +#: commands/indexcmds.c:953 #, c-format -msgid "aggregate %s does not exist" -msgstr "agregação %s não existe" +msgid "operator %s is not commutative" +msgstr "operador %s não é comutativo" -#: parser/parse_func.c:1594 +#: commands/indexcmds.c:955 +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:981 #, c-format -msgid "function %s is not an aggregate" -msgstr "função %s não é uma agregação" +msgid "operator %s is not a member of operator family \"%s\"" +msgstr "operador %s não é um membro da família de operadores \"%s\"" -#: parser/parse_func.c:1705 tcop/fastpath.c:359 -msgid "argument to pg_get_expr() must come from system catalogs" -msgstr "argumento para pg_get_expr() deve vir dos catálogos do sistema" +#: commands/indexcmds.c:984 +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." -#: parser/parse_type.c:83 +#: commands/indexcmds.c:1019 #, c-format -msgid "improper %%TYPE reference (too few dotted names): %s" -msgstr "referência a %%TYPE é inválida (nomes com poucos pontos): %s" +msgid "access method \"%s\" does not support ASC/DESC options" +msgstr "método de acesso \"%s\" não suporta opções ASC/DESC" -#: parser/parse_type.c:105 +#: commands/indexcmds.c:1024 #, c-format -msgid "improper %%TYPE reference (too many dotted names): %s" -msgstr "referência a %%TYPE é inválida (nomes com muitos pontos): %s" +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" -#: parser/parse_type.c:127 +#: commands/indexcmds.c:1080 #, c-format -msgid "type reference %s converted to %s" -msgstr "referência a tipo %s convertido para %s" +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\"" -#: parser/parse_type.c:261 commands/functioncmds.c:132 -#, c-format -msgid "type modifier cannot be specified for shell type \"%s\"" +#: commands/indexcmds.c:1082 +msgid "" +"You must specify an operator class for the index or define a default " +"operator class for the data type." msgstr "" -"modificador de tipo não pode ser especificado para tipo indefinido \"%s\"" +"Você deve especificar uma classe de operadores para o índice ou definir uma " +"classe de operadores padrão para o tipo de dado." -#: parser/parse_type.c:270 +#: commands/indexcmds.c:1111 commands/indexcmds.c:1119 +#: commands/opclasscmds.c:212 commands/opclasscmds.c:1568 #, c-format -msgid "type modifier is not allowed for type \"%s\"" -msgstr "modificador de tipo não é permitido para tipo \"%s\"" +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\"" -#: parser/parse_type.c:313 -msgid "type modifiers must be simple constants or identifiers" -msgstr "modificadores de tipo devem ser constantes ou identificadores" +#: commands/indexcmds.c:1132 +#, c-format +msgid "operator class \"%s\" does not accept data type %s" +msgstr "classe de operadores \"%s\" não aceita tipo de dado %s" -#: parser/parse_type.c:548 parser/parse_type.c:647 +#: commands/indexcmds.c:1222 #, c-format -msgid "invalid type name \"%s\"" -msgstr "nome de tipo \"%s\" é inválido" +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" -#: scan.l:411 -msgid "unterminated /* comment" -msgstr "comentário /* não foi terminado" +#: commands/indexcmds.c:1565 +#, c-format +msgid "table \"%s\" has no indexes" +msgstr "tabela \"%s\" não tem índices" -#: scan.l:440 -msgid "unterminated bit string literal" -msgstr "cadeia de bits não foi terminada" +#: commands/indexcmds.c:1593 +msgid "can only reindex the currently open database" +msgstr "só pode reindexar o banco de dados atualmente aberto" -#: scan.l:461 -msgid "unterminated hexadecimal string literal" -msgstr "cadeia de caracteres hexadecimal não foi terminada" +#: commands/indexcmds.c:1680 +#, c-format +msgid "table \"%s.%s\" was reindexed" +msgstr "tabela \"%s.%s\" foi reindexada" -#: scan.l:511 -msgid "unsafe use of string constant with Unicode escapes" -msgstr "uso inseguro de cadeia de caracteres com escapes Unicode" +#: commands/portalcmds.c:61 commands/portalcmds.c:160 +#: commands/portalcmds.c:212 +msgid "invalid cursor name: must not be empty" +msgstr "nome do cursor é inválido: não deve ser vazio" -#: scan.l:512 -msgid "" -"String constants with Unicode escapes cannot be used when " -"standard_conforming_strings is off." -msgstr "" -"Cadeias de caracteres com escapes Unicode não podem ser utilizadas quando " -"standard_conforming_strings está off." +#: commands/portalcmds.c:341 tcop/pquery.c:739 tcop/pquery.c:1403 +#, c-format +msgid "portal \"%s\" cannot be run" +msgstr "portal \"%s\" não pode ser executado" -#: 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 -#, fuzzy -msgid "invalid Unicode surrogate pair" -msgstr "par substituto Unicode inválido" +#: commands/portalcmds.c:415 +msgid "could not reposition held cursor" +msgstr "não pôde reposicionar cursor aberto" -#: scan.l:586 -msgid "invalid Unicode escape" -msgstr "escape Unicode inválido" +#: commands/alter.c:413 +#, c-format +msgid "must be superuser to set schema of %s" +msgstr "deve ser super-usuário para definir esquema de %s" -#: scan.l:587 -msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX." -msgstr "Escapes Unicode devem ser \\uXXXX ou \\UXXXXXXXX." +#: commands/alter.c:441 +#, c-format +msgid "%s already exists in schema \"%s\"" +msgstr "%s já existe no esquema \"%s\"" -#: scan.l:598 -msgid "unsafe use of \\' in a string literal" -msgstr "uso inseguro de \\' em cadeia de caracteres" +#: commands/seclabel.c:58 +msgid "no security label providers have been loaded" +msgstr "nenhum fornecedor de rótulo de segurança foi carregado" -#: scan.l:599 +#: commands/seclabel.c:62 msgid "" -"Use '' to write quotes in strings. \\' is insecure in client-only encodings." +"must specify provider when multiple security label providers have been loaded" msgstr "" -"Utilize '' para escrever aspóstrofos em cadias de caracteres. \\' é inseguro " -"em codificações de cliente." - -#: scan.l:629 -msgid "unterminated quoted string" -msgstr "cadeia de caracteres entre aspas não foi terminada" - -#: scan.l:674 -msgid "unterminated dollar-quoted string" -msgstr "cadeia de caracteres entre dólares não foi terminada" - -#: scan.l:691 scan.l:703 scan.l:717 -msgid "zero-length delimited identifier" -msgstr "identificador delimitado tem tamanho zero" +"deve especificar fornecedor quando múltiplos fornecedores de rótulo de " +"segurança forem carregados" -#: scan.l:730 -msgid "unterminated quoted identifier" -msgstr "identificador entre aspas não foi terminado" +#: commands/seclabel.c:80 +#, c-format +msgid "security label provider \"%s\" is not loaded" +msgstr "fornecedor de rótulo de segurança \"%s\" não foi carregado" -#: scan.l:834 -msgid "operator too long" -msgstr "operador muito longo" +#: 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 "não pôde criar diretório \"%s\": %m" -#. translator: %s is typically the translation of "syntax error" -#: scan.l:992 +#: commands/tablespace.c:205 #, c-format -msgid "%s at end of input" -msgstr "%s no fim da entrada" +msgid "could not stat directory \"%s\": %m" +msgstr "não pôde executar stat no diretório \"%s\": %m" -#. translator: first %s is typically the translation of "syntax error" -#: scan.l:1000 +#: commands/tablespace.c:214 #, c-format -msgid "%s at or near \"%s\"" -msgstr "%s em ou próximo a \"%s\"" +msgid "\"%s\" exists but is not a directory" +msgstr "\"%s\" existe mas não é um diretório" -#: 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 "" -"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" +#: commands/tablespace.c:244 +#, c-format +msgid "permission denied to create tablespace \"%s\"" +msgstr "permissão negada ao criar tablespace \"%s\"" -#: scan.l:1189 scan.l:1325 -msgid "invalid Unicode escape value" -msgstr "valor de escape Unicode inválido" +#: commands/tablespace.c:246 +msgid "Must be superuser to create a tablespace." +msgstr "Deve ser super-usuário para criar uma tablespace." -#: scan.l:1214 -msgid "invalid Unicode escape character" -msgstr "caracter de escape Unicode inválido" +#: commands/tablespace.c:262 +msgid "tablespace location cannot contain single quotes" +msgstr "local da tablespace não pode conter aspas simples" -#: scan.l:1381 -msgid "nonstandard use of \\' in a string literal" -msgstr "uso de \\' fora do padrão em cadeia de caracteres" +#: commands/tablespace.c:272 +msgid "tablespace location must be an absolute path" +msgstr "local da tablespace deve ser um caminho absoluto" -#: scan.l:1382 -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'...')." +#: commands/tablespace.c:283 +#, c-format +msgid "tablespace location \"%s\" is too long" +msgstr "local da tablespace \"%s\" é muito longo" -#: scan.l:1391 -msgid "nonstandard use of \\\\ in a string literal" -msgstr "uso de \\\\ fora do padrão em cadeia de caracteres" +#: commands/tablespace.c:293 commands/tablespace.c:857 +#, c-format +msgid "unacceptable tablespace name \"%s\"" +msgstr "nome da tablespace \"%s\" é inaceitável" -#: scan.l:1392 -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'\\\\'." +#: commands/tablespace.c:295 commands/tablespace.c:858 +msgid "The prefix \"pg_\" is reserved for system tablespaces." +msgstr "O prefixo \"pg_\" é reservado para tablespaces do sistema." -#: scan.l:1406 -msgid "nonstandard use of escape in a string literal" -msgstr "uso de escape fora do padrão em cadeia de caracteres" +#: commands/tablespace.c:305 commands/tablespace.c:870 +#, c-format +msgid "tablespace \"%s\" already exists" +msgstr "tablespace \"%s\" já existe" -#: scan.l:1407 -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'." +#: commands/tablespace.c:377 commands/tablespace.c:529 +#: replication/basebackup.c:169 replication/basebackup.c:756 +msgid "tablespaces are not supported on this platform" +msgstr "tablespaces não são suportadas nessa plataforma" -#: rewrite/rewriteRemove.c:62 rewrite/rewriteDefine.c:687 -#: rewrite/rewriteDefine.c:749 commands/comment.c:910 +#: commands/tablespace.c:415 commands/tablespace.c:841 +#: commands/tablespace.c:908 commands/tablespace.c:1013 +#: commands/tablespace.c:1079 commands/tablespace.c:1217 +#: commands/tablespace.c:1417 #, c-format -msgid "rule \"%s\" for relation \"%s\" does not exist" -msgstr "regra \"%s\" para relação \"%s\" não existe" +msgid "tablespace \"%s\" does not exist" +msgstr "tablespace \"%s\" não existe" -#: rewrite/rewriteRemove.c:66 +#: commands/tablespace.c:421 #, c-format -msgid "rule \"%s\" for relation \"%s\" does not exist, skipping" -msgstr "regra \"%s\" para relação \"%s\" não existe, ignorando" +msgid "tablespace \"%s\" does not exist, skipping" +msgstr "tablespace \"%s\" não existe, ignorando" -#: rewrite/rewriteHandler.c:495 -msgid "cannot have RETURNING lists in multiple rules" -msgstr "não pode ter listas RETURNING em múltiplas regras" +#: commands/tablespace.c:486 +#, c-format +msgid "tablespace \"%s\" is not empty" +msgstr "tablespace \"%s\" não está vazia" -#: rewrite/rewriteHandler.c:796 rewrite/rewriteHandler.c:814 +#: commands/tablespace.c:560 #, c-format -msgid "multiple assignments to same column \"%s\"" -msgstr "atribuições múltiplas para mesma coluna \"%s\"" +msgid "directory \"%s\" does not exist" +msgstr "diretório \"%s\" não existe" -#: rewrite/rewriteHandler.c:952 catalog/heap.c:2280 +#: commands/tablespace.c:561 +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:566 #, 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" +msgid "could not set permissions on directory \"%s\": %m" +msgstr "não pôde definir permissões do diretório \"%s\": %m" -#: rewrite/rewriteHandler.c:1417 rewrite/rewriteHandler.c:1740 +#: commands/tablespace.c:598 #, c-format -msgid "infinite recursion detected in rules for relation \"%s\"" -msgstr "recursão infinita detectada em regras para relação \"%s\"" +msgid "directory \"%s\" already in use as a tablespace" +msgstr "diretório \"%s\" já está em uso como uma tablespace" -#: rewrite/rewriteHandler.c:1778 +#: commands/tablespace.c:613 commands/tablespace.c:777 #, c-format -msgid "cannot perform INSERT RETURNING on relation \"%s\"" -msgstr "não pode executar INSERT RETURNING na relação \"%s\"" +msgid "could not remove symbolic link \"%s\": %m" +msgstr "não pôde remover link simbólico \"%s\": %m" -#: rewrite/rewriteHandler.c:1780 -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." +#: commands/tablespace.c:623 +#, c-format +msgid "could not create symbolic link \"%s\": %m" +msgstr "não pôde criar link simbólico \"%s\": %m" -#: rewrite/rewriteHandler.c:1785 +#: commands/tablespace.c:689 commands/tablespace.c:699 utils/adt/misc.c:213 +#: utils/adt/genfile.c:353 utils/misc/tzparser.c:323 storage/file/fd.c:1682 +#: storage/file/copydir.c:67 storage/file/copydir.c:106 +#: postmaster/postmaster.c:1172 #, c-format -msgid "cannot perform UPDATE RETURNING on relation \"%s\"" -msgstr "não pode executar UPDATE RETURNING na relação \"%s\"" +msgid "could not open directory \"%s\": %m" +msgstr "não pôde abrir diretório \"%s\": %m" -#: rewrite/rewriteHandler.c:1787 -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." +#: commands/tablespace.c:729 commands/tablespace.c:742 +#: commands/tablespace.c:766 +#, c-format +msgid "could not remove directory \"%s\": %m" +msgstr "não pôde remover diretório \"%s\": %m" -#: rewrite/rewriteHandler.c:1792 +#: commands/tablespace.c:1084 #, c-format -msgid "cannot perform DELETE RETURNING on relation \"%s\"" -msgstr "não pode executar DELETE RETURNING na relação \"%s\"" +msgid "Tablespace \"%s\" does not exist." +msgstr "Tablespace \"%s\" não existe." -#: rewrite/rewriteHandler.c:1794 -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." +#: commands/tablespace.c:1516 +#, c-format +msgid "directories for tablespace %u could not be removed" +msgstr "diretórios da tablespace %u não puderam ser removidos" + +#: commands/tablespace.c:1518 +msgid "You can remove the directories manually if necessary." +msgstr "Você pode remover os diretórios manualmente se necessário." -#: rewrite/rewriteHandler.c:1892 -msgid "cannot insert into a view" -msgstr "não pode inserir em uma visão" +#: commands/operatorcmds.c:100 +msgid "=> is deprecated as an operator name" +msgstr "=> está obsoleto como um nome de operador" -#: rewrite/rewriteHandler.c:1893 -msgid "You need an unconditional ON INSERT DO INSTEAD rule." -msgstr "Você precisa de uma regra incondicional ON INSERT DO INSTEAD." +#: commands/operatorcmds.c:101 +msgid "" +"This name may be disallowed altogether in future versions of PostgreSQL." +msgstr "" +"Este nome pode ser proibido completamente em versões futuras do PostgreSQL." -#: rewrite/rewriteHandler.c:1898 -msgid "cannot update a view" -msgstr "não pode atualizar uma visão" +#: commands/operatorcmds.c:122 commands/operatorcmds.c:130 +msgid "SETOF type not allowed for operator argument" +msgstr "tipo SETOF não é permitido como argumento de operador" -#: rewrite/rewriteHandler.c:1899 -msgid "You need an unconditional ON UPDATE DO INSTEAD rule." -msgstr "Você precisa de uma regra incondicional ON UPDATE DO INSTEAD." +#: commands/operatorcmds.c:158 +#, c-format +msgid "operator attribute \"%s\" not recognized" +msgstr "atributo de operador \"%s\" desconhecido" -#: rewrite/rewriteHandler.c:1904 -msgid "cannot delete from a view" -msgstr "não pode apagar de uma visão" +#: commands/operatorcmds.c:168 +msgid "operator procedure must be specified" +msgstr "procedimento de operador deve ser especificado" -#: rewrite/rewriteHandler.c:1905 -msgid "You need an unconditional ON DELETE DO INSTEAD rule." -msgstr "Você precisa de uma regra incondicional ON DELETE DO INSTEAD." +#: commands/operatorcmds.c:179 +msgid "at least one of leftarg or rightarg must be specified" +msgstr "pelo menos um dos argumentos esquerdo ou direito deve ser especificado" -#: rewrite/rewriteDefine.c:108 rewrite/rewriteDefine.c:756 +#: commands/operatorcmds.c:228 #, c-format -msgid "rule \"%s\" for relation \"%s\" already exists" -msgstr "regra \"%s\" para relação \"%s\" já existe" +msgid "restriction estimator function %s must return type \"float8\"" +msgstr "função de estimação de restrição %s deve retornar tipo \"float8\"" -#: rewrite/rewriteDefine.c:252 commands/tablecmds.c:3348 +#: commands/operatorcmds.c:267 #, c-format -msgid "\"%s\" is not a table or view" -msgstr "\"%s\" não é uma tabela ou visão" +msgid "join estimator function %s must return type \"float8\"" +msgstr "função de estimação de junção %s deve retornar tipo \"float8\"" -#: rewrite/rewriteDefine.c:258 tcop/utility.c:92 commands/trigger.c:155 -#: commands/trigger.c:1069 commands/tablecmds.c:777 commands/tablecmds.c:1109 -#: commands/tablecmds.c:2001 commands/tablecmds.c:3366 -#: commands/tablecmds.c:3395 commands/tablecmds.c:4814 +#: commands/operatorcmds.c:318 #, c-format -msgid "permission denied: \"%s\" is a system catalog" -msgstr "permissão negada: \"%s\" é um catálogo do sistema" - -#: rewrite/rewriteDefine.c:282 -msgid "rule actions on OLD are not implemented" -msgstr "ações da regra em OLD não estão implementadas" - -#: rewrite/rewriteDefine.c:283 -msgid "Use views or triggers instead." -msgstr "Ao invés disso utilize visões ou gatilhos." - -#: rewrite/rewriteDefine.c:287 -msgid "rule actions on NEW are not implemented" -msgstr "ações da regra em NEW não estão implementadas" +msgid "operator %s does not exist, skipping" +msgstr "operador %s não existe, ignorando" -#: rewrite/rewriteDefine.c:288 -msgid "Use triggers instead." -msgstr "Ao invés disso utilize gatilhos." +#: commands/opclasscmds.c:136 commands/opclasscmds.c:1838 +#: commands/opclasscmds.c:1849 commands/opclasscmds.c:2083 +#: commands/opclasscmds.c:2094 +#, 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\"" -#: rewrite/rewriteDefine.c:301 -msgid "INSTEAD NOTHING rules on SELECT are not implemented" -msgstr "regras INSTEAD NOTHING no SELECT não estão implementadas" +#: commands/opclasscmds.c:271 +#, 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" -#: rewrite/rewriteDefine.c:302 -msgid "Use views instead." -msgstr "Ao invés disso utilize visões." +#: commands/opclasscmds.c:408 +msgid "must be superuser to create an operator class" +msgstr "deve ser super-usuário para criar uma classe de operadores" -#: rewrite/rewriteDefine.c:310 -msgid "multiple actions for rules on SELECT are not implemented" -msgstr "ações múltiplas para regras no SELECT não estão implementadas" +#: 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 "número de operadores %d é inválido, deve ser entre 1 e %d" -#: rewrite/rewriteDefine.c:322 -msgid "rules on SELECT must have action INSTEAD SELECT" -msgstr "regras no SELECT devem ter ação INSTEAD SELECT" +#: 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 "número de procedimentos %d é inválido, deve ser entre 1 e %d" -#: rewrite/rewriteDefine.c:330 -msgid "event qualifications are not implemented for rules on SELECT" -msgstr "qualificações de eventos não estão implementadas para regras no SELECT" +#: commands/opclasscmds.c:561 +msgid "storage type specified more than once" +msgstr "tipo de armazenamento especificado mais de uma vez" -#: rewrite/rewriteDefine.c:355 +#: commands/opclasscmds.c:589 #, c-format -msgid "\"%s\" is already a view" -msgstr "\"%s\" já é uma visão" +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\"" -#: rewrite/rewriteDefine.c:379 +#: commands/opclasscmds.c:605 #, c-format -msgid "view rule for \"%s\" must be named \"%s\"" -msgstr "regra para visão em \"%s\" deve ter nome \"%s\"" +msgid "operator class \"%s\" for access method \"%s\" already exists" +msgstr "classe de operadores \"%s\" para método de acesso \"%s\" já existe" -#: rewrite/rewriteDefine.c:404 +#: commands/opclasscmds.c:633 #, 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" +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" -#: rewrite/rewriteDefine.c:411 +#: commands/opclasscmds.c:636 #, c-format -msgid "could not convert table \"%s\" to a view because it has triggers" -msgstr "não pôde converter tabela \"%s\" em visão porque ela tem gatilhos" +msgid "Operator class \"%s\" already is the default." +msgstr "Classe de operadores \"%s\" já é a padrão." -#: rewrite/rewriteDefine.c:413 -msgid "" -"In particular, the table cannot be involved in any foreign key relationships." +#: commands/opclasscmds.c:760 +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:816 +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:880 +msgid "operator argument types must be specified in ALTER OPERATOR FAMILY" msgstr "" -"Em particular, a tabela não pode estar envolvida em relacionamentos de chave " -"estrangeira." +"tipos dos argumentos do operador devem ser especificados em ALTER OPERATOR " +"FAMILY" -#: rewrite/rewriteDefine.c:418 -#, c-format -msgid "could not convert table \"%s\" to a view because it has indexes" -msgstr "não pôde converter tabela \"%s\" em visão porque ela tem índices" +#: commands/opclasscmds.c:944 +msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY" +msgstr "STORAGE não pode ser especificado em ALTER OPERATOR FAMILY" -#: rewrite/rewriteDefine.c:424 +#: commands/opclasscmds.c:1060 +msgid "one or two argument types must be specified" +msgstr "um ou dois tipos de argumento devem ser especificados" + +#: commands/opclasscmds.c:1086 +msgid "index operators must be binary" +msgstr "operadores de índice devem ser binários" + +#: commands/opclasscmds.c:1111 #, c-format -msgid "could not convert table \"%s\" to a view because it has child tables" -msgstr "" -"não pôde converter tabela \"%s\" em visão porque ela tem tabelas descendentes" +msgid "access method \"%s\" does not support ordering operators" +msgstr "método de acesso \"%s\" não suporta operadores de ordenação" -#: rewrite/rewriteDefine.c:451 -msgid "cannot have multiple RETURNING lists in a rule" -msgstr "não pode ter múltiplas listas RETURNING em uma regra" +#: commands/opclasscmds.c:1124 +msgid "index search operators must return boolean" +msgstr "operadores de busca por índice devem retornar booleano" -#: rewrite/rewriteDefine.c:456 -msgid "RETURNING lists are not supported in conditional rules" -msgstr "listas RETURNING não são suportadas em regras condicionais" +#: commands/opclasscmds.c:1163 +msgid "btree procedures must have two arguments" +msgstr "procedimentos de árvore B devem ter dois argumentos" -#: rewrite/rewriteDefine.c:460 -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" +#: commands/opclasscmds.c:1167 +msgid "btree procedures must return integer" +msgstr "procedimentos de árvore B devem retornar inteiro" -#: rewrite/rewriteDefine.c:539 -msgid "SELECT rule's target list has too many entries" -msgstr "lista de alvos de uma regra SELECT tem muitas entradas" +#: commands/opclasscmds.c:1182 +msgid "hash procedures must have one argument" +msgstr "procedimentos hash devem ter um argumento" -#: rewrite/rewriteDefine.c:540 -msgid "RETURNING list has too many entries" -msgstr "lista RETURNING tem muitas entradas" +#: commands/opclasscmds.c:1186 +msgid "hash procedures must return integer" +msgstr "procedimentos hash devem retornar inteiro" -#: rewrite/rewriteDefine.c:556 -msgid "cannot convert relation containing dropped columns to view" -msgstr "não pode converter relação contendo colunas removidas em visão" +#: commands/opclasscmds.c:1211 +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" -#: rewrite/rewriteDefine.c:561 +#: commands/opclasscmds.c:1237 #, 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 "procedure number %d for (%s,%s) appears more than once" +msgstr "procedimento número %d para (%s,%s) aparece mais de uma vez" -#: rewrite/rewriteDefine.c:567 +#: commands/opclasscmds.c:1244 #, 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\"" +msgid "operator number %d for (%s,%s) appears more than once" +msgstr "operador número %d para (%s,%s) aparece mais de uma vez" -#: rewrite/rewriteDefine.c:569 +#: commands/opclasscmds.c:1293 #, 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\"" +msgid "operator %d(%s,%s) already exists in operator family \"%s\"" +msgstr "operador %d(%s,%s) já existe na família de operadores \"%s\"" -#: rewrite/rewriteDefine.c:584 +#: commands/opclasscmds.c:1406 #, 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\"" +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\"" -#: rewrite/rewriteDefine.c:586 +#: commands/opclasscmds.c:1493 #, 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\"" +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\"" -#: rewrite/rewriteDefine.c:594 -msgid "SELECT rule's target list has too few entries" -msgstr "lista de alvos de uma regra SELECT tem poucas entradas" - -#: rewrite/rewriteDefine.c:595 -msgid "RETURNING list has too few entries" -msgstr "lista RETURNING tem poucas entradas" - -#: rewrite/rewriteManip.c:1009 -msgid "conditional utility statements are not implemented" -msgstr "comandos utilitários condicionais não estão implementados" - -#: rewrite/rewriteManip.c:1174 -msgid "WHERE CURRENT OF on a view is not implemented" -msgstr "WHERE CURRENT OF em uma visão não está implementado" - -#: optimizer/util/clauses.c:4002 +#: commands/opclasscmds.c:1533 #, c-format -msgid "SQL function \"%s\" during inlining" -msgstr "função SQL \"%s\" durante expansão em linha" - -#: optimizer/prep/prepunion.c:374 -msgid "could not implement recursive UNION" -msgstr "não pôde implementar UNION recursivo" - -#: optimizer/prep/prepunion.c:375 -msgid "All column datatypes must be hashable." -msgstr "Todos os tipos de dados de colunas devem suportar utilização de hash." +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\"" -#. translator: %s is UNION, INTERSECT, or EXCEPT -#: optimizer/prep/prepunion.c:768 +#: commands/opclasscmds.c:1618 #, c-format -msgid "could not implement %s" -msgstr "não pôde implementar %s" - -#: optimizer/prep/prepunion.c:769 optimizer/plan/planner.c:2221 -#: optimizer/plan/planner.c:2390 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:2220 -msgid "could not implement GROUP BY" -msgstr "não pôde implementar GROUP BY" - -#: optimizer/plan/planner.c:2389 -msgid "could not implement DISTINCT" -msgstr "não pôde implementar DISTINCT" - -#: optimizer/plan/planner.c:2833 -msgid "could not implement window PARTITION BY" -msgstr "não pôde implementar deslizante PARTITION BY" - -#: optimizer/plan/planner.c:2834 -msgid "Window partitioning columns must be of sortable datatypes." +"operator family \"%s\" does not exist for access method \"%s\", skipping" msgstr "" -"Colunas de particionamento de deslizante devem ser de tipos de dados que " -"suportam ordenação." +"família de operadores \"%s\" não existe para método de acesso \"%s\", " +"ignorando" -#: optimizer/plan/planner.c:2838 -msgid "could not implement window ORDER BY" -msgstr "não pôde implementar deslizante ORDER BY" - -#: optimizer/plan/planner.c:2839 -msgid "Window ordering columns must be of sortable datatypes." +#: commands/opclasscmds.c:1778 +#, c-format +msgid "" +"operator class \"%s\" for access method \"%s\" already exists in schema \"%s" +"\"" msgstr "" -"Colunas de ordenação de deslizante devem ser de tipos de dados que suportam " -"ordenação." +"classe de operadores \"%s\" para método de acesso \"%s\" já existe no " +"esquema \"%s\"" -#: optimizer/plan/initsplan.c:574 +#: commands/opclasscmds.c:1867 +#, c-format msgid "" -"SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer " -"join" +"operator family \"%s\" for access method \"%s\" already exists in schema \"%s" +"\"" msgstr "" -"SELECT FOR UPDATE/SHARE não pode ser aplicado ao lado com valores nulos de " -"um junção externa" +"família de operadores \"%s\" para método de acesso \"%s\" já existe no " +"esquema \"%s\"" -#: tcop/fastpath.c:110 tcop/fastpath.c:492 tcop/fastpath.c:622 +#: commands/functioncmds.c:100 #, 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" +msgid "SQL function cannot return shell type %s" +msgstr "função SQL não pode retornar tipo indefinido %s" -#: tcop/fastpath.c:181 tcop/fastpath.c:561 tcop/postgres.c:1698 -#: access/common/printtup.c:278 +#: commands/functioncmds.c:105 #, c-format -msgid "unsupported format code: %d" -msgstr "código do formato não é suportado: %d" +msgid "return type %s is only a shell" +msgstr "tipo retornado %s é indefinido" -#: tcop/fastpath.c:222 catalog/aclchk.c:3554 catalog/aclchk.c:4304 +#: commands/functioncmds.c:134 parser/parse_type.c:278 #, c-format -msgid "function with OID %u does not exist" -msgstr "função com OID %u não existe" - -#: tcop/fastpath.c:291 tcop/postgres.c:342 tcop/postgres.c:365 -#: commands/copy.c:515 commands/copy.c:534 commands/copy.c:538 -msgid "unexpected EOF on client connection" -msgstr "EOF inesperado durante conexão do cliente" - -#: tcop/fastpath.c:304 tcop/postgres.c:951 tcop/postgres.c:1261 -#: tcop/postgres.c:1542 tcop/postgres.c:1984 tcop/postgres.c:2352 -#: tcop/postgres.c:2433 -msgid "" -"current transaction is aborted, commands ignored until end of transaction " -"block" +msgid "type modifier cannot be specified for shell type \"%s\"" msgstr "" -"transação atual foi interrompida, comandos ignorados até o fim do bloco de " -"transação" +"modificador de tipo não pode ser especificado para tipo indefinido \"%s\"" -#: tcop/fastpath.c:332 +#: commands/functioncmds.c:140 #, c-format -msgid "fastpath function call: \"%s\" (OID %u)" -msgstr "chamada de função fastpath: \"%s\" (OID %u)" +msgid "type \"%s\" is not yet defined" +msgstr "tipo \"%s\" ainda não foi definido" -#: tcop/fastpath.c:418 tcop/postgres.c:1121 tcop/postgres.c:1408 -#: tcop/postgres.c:1825 tcop/postgres.c:2042 -#, c-format -msgid "duration: %s ms" -msgstr "duração: %s ms" +#: commands/functioncmds.c:141 +msgid "Creating a shell type definition." +msgstr "Criando uma definição de tipo indefinido." -#: tcop/fastpath.c:422 +#: commands/functioncmds.c:220 #, c-format -msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" -msgstr "duração: %s ms chamada de função fastpath: \"%s\" (OID %u)" +msgid "SQL function cannot accept shell type %s" +msgstr "função SQL não pode aceitar tipo indefinido %s" -#: tcop/fastpath.c:460 tcop/fastpath.c:587 +#: commands/functioncmds.c:225 #, 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" +msgid "argument type %s is only a shell" +msgstr "tipo de argumento %s é indefinido" -#: tcop/fastpath.c:468 +#: commands/functioncmds.c:235 #, 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" +msgid "type %s does not exist" +msgstr "tipo %s não existe" -#: tcop/fastpath.c:555 tcop/fastpath.c:638 -#, c-format -msgid "incorrect binary data format in function argument %d" -msgstr "formato de dado binário incorreto no argumento %d da função" +#: commands/functioncmds.c:243 +msgid "functions cannot accept set arguments" +msgstr "funções não podem aceitar conjunto de argumentos" -#: tcop/pquery.c:670 -#, c-format -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" +#: commands/functioncmds.c:252 +msgid "VARIADIC parameter must be the last input parameter" +msgstr "parâmetro VARIADIC deve ser o último parâmetro de entrada" -#: tcop/pquery.c:748 tcop/pquery.c:1371 commands/portalcmds.c:329 -#, c-format -msgid "portal \"%s\" cannot be run" -msgstr "portal \"%s\" não pode ser executado" +#: commands/functioncmds.c:279 +msgid "VARIADIC parameter must be an array" +msgstr "parâmetro VARIADIC deve ser uma matriz" -#: tcop/pquery.c:978 -msgid "cursor can only scan forward" -msgstr "cursor só pode buscar para frente" +#: commands/functioncmds.c:319 +#, c-format +msgid "parameter name \"%s\" used more than once" +msgstr "nome de parâmetro \"%s\" foi especificado mais de uma vez" -#: tcop/pquery.c:979 -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." +#: commands/functioncmds.c:334 +msgid "only input parameters can have default values" +msgstr "somente parâmetros de entrada podem ter valores padrão" -#: tcop/postgres.c:392 tcop/postgres.c:404 tcop/postgres.c:415 -#: tcop/postgres.c:427 tcop/postgres.c:4094 -#, c-format -msgid "invalid frontend message type %d" -msgstr "tipo de mensagem do cliente %d é inválido" +#: commands/functioncmds.c:347 +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" -#: tcop/postgres.c:892 -#, c-format -msgid "statement: %s" -msgstr "comando: %s" +#: commands/functioncmds.c:363 +msgid "cannot use subquery in parameter default value" +msgstr "não pode utilizar subconsulta no valor padrão do parâmetro" -#: tcop/postgres.c:1126 -#, c-format -msgid "duration: %s ms statement: %s" -msgstr "duração: %s ms comando: %s" +#: commands/functioncmds.c:367 +msgid "cannot use aggregate function in parameter default value" +msgstr "não pode utilizar função de agregação no valor padrão do parâmetro" -#: tcop/postgres.c:1176 -#, c-format -msgid "parse %s: %s" -msgstr "análise de %s: %s" +#: commands/functioncmds.c:371 +msgid "cannot use window function in parameter default value" +msgstr "não pode utilizar função deslizante no valor padrão do parâmetro" -#: tcop/postgres.c:1234 -msgid "cannot insert multiple commands into a prepared statement" -msgstr "não pode inserir múltiplos comandos no comando preparado" +#: commands/functioncmds.c:381 +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" -#: tcop/postgres.c:1413 -#, c-format -msgid "duration: %s ms parse %s: %s" -msgstr "duração: %s ms análise de %s: %s" +#: commands/functioncmds.c:620 +msgid "no function body specified" +msgstr "corpo da função não foi especificado" -#: tcop/postgres.c:1459 -#, c-format -msgid "bind %s to %s" -msgstr "ligação de %s para %s" +#: commands/functioncmds.c:630 +msgid "no language specified" +msgstr "nenhuma linguagem foi especificada" -#: tcop/postgres.c:1478 tcop/postgres.c:2332 -msgid "unnamed prepared statement does not exist" -msgstr "comando preparado sem nome não existe" +#: commands/functioncmds.c:651 commands/functioncmds.c:1351 +msgid "COST must be positive" +msgstr "COST deve ser positivo" -#: tcop/postgres.c:1520 -#, 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" +#: commands/functioncmds.c:659 commands/functioncmds.c:1359 +msgid "ROWS must be positive" +msgstr "ROWS deve ser positivo" -#: tcop/postgres.c:1526 +#: commands/functioncmds.c:698 #, 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" +msgid "unrecognized function attribute \"%s\" ignored" +msgstr "atributo de função desconhecido \"%s\" foi ignorado" -#: tcop/postgres.c:1691 +#: commands/functioncmds.c:749 #, 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" +msgid "only one AS item needed for language \"%s\"" +msgstr "somente um item AS é necessário para linguagem \"%s\"" -#: tcop/postgres.c:1830 -#, c-format -msgid "duration: %s ms bind %s%s%s: %s" -msgstr "duração: %s ms ligação %s%s%s: %s" +#: commands/functioncmds.c:841 commands/functioncmds.c:2020 +msgid "Use CREATE LANGUAGE to load the language into the database." +msgstr "Utilize CREATE LANGUAGE para carregar uma linguagem no banco de dados." -#: tcop/postgres.c:1878 tcop/postgres.c:2419 +#: commands/functioncmds.c:888 #, c-format -msgid "portal \"%s\" does not exist" -msgstr "portal \"%s\" não existe" +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" -#: tcop/postgres.c:1965 tcop/postgres.c:2050 -msgid "execute fetch from" -msgstr "executar busca de" +#: commands/functioncmds.c:901 +msgid "function result type must be specified" +msgstr "tipo do resultado da função deve ser especificado" -#: tcop/postgres.c:1966 tcop/postgres.c:2051 -msgid "execute" -msgstr "executar" +#: commands/functioncmds.c:936 commands/functioncmds.c:1363 +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" -#: tcop/postgres.c:1963 +#: commands/functioncmds.c:987 #, c-format -msgid "%s %s%s%s: %s" -msgstr "%s %s%s%s: %s" +msgid "function %s(%s) does not exist, skipping" +msgstr "função %s(%s) não existe, ignorando" -#: tcop/postgres.c:2047 +#: commands/functioncmds.c:1007 commands/functioncmds.c:1107 +#: commands/functioncmds.c:1170 commands/functioncmds.c:1321 +#: utils/adt/ruleutils.c:1696 #, c-format -msgid "duration: %s ms %s %s%s%s: %s" -msgstr "duração: %s ms %s %s%s%s: %s" +msgid "\"%s\" is an aggregate function" +msgstr "\"%s\" é uma função de agregação" -#: tcop/postgres.c:2173 -#, c-format -msgid "prepare: %s" -msgstr "preparado: %s" +#: commands/functioncmds.c:1009 +msgid "Use DROP AGGREGATE to drop aggregate functions." +msgstr "Utilize DROP AGGREGATE para remover funções de agregação." -#: tcop/postgres.c:2236 +#: commands/functioncmds.c:1016 #, c-format -msgid "parameters: %s" -msgstr "parâmetros: %s" - -#: tcop/postgres.c:2255 -msgid "abort reason: recovery conflict" -msgstr "razão da interrupção: conflito de recuperação" - -#: tcop/postgres.c:2271 -#, fuzzy -msgid "User was holding shared buffer pin for too long." -msgstr "Usuário estava mantendo um buffer compartilhado por muito tempo." - -#: tcop/postgres.c:2274 -#, fuzzy -msgid "User was holding a relation lock for too long." -msgstr "Usuário estava mantendo um travamento de relação por muito tempo." +msgid "removing built-in function \"%s\"" +msgstr "removendo função embutida \"%s\"" -#: tcop/postgres.c:2277 -#, fuzzy -msgid "User was or might have been using tablespace that must be dropped." -msgstr "Usuário estava ou pode estar usando tablespace que dev ser removida." +#: commands/functioncmds.c:1109 +msgid "Use ALTER AGGREGATE to rename aggregate functions." +msgstr "Utilize ALTER AGGREGATE para renomear funções de agregação." -#: tcop/postgres.c:2280 -#, fuzzy -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." +#: commands/functioncmds.c:1172 +msgid "Use ALTER AGGREGATE to change owner of aggregate functions." +msgstr "Utilize ALTER AGGREGATE para mudar o dono das funções de agregação." -#: tcop/postgres.c:2283 storage/ipc/standby.c:507 -#, fuzzy -msgid "User transaction caused buffer deadlock with recovery." -msgstr "Transação do usuário causou impasse de buffer com recuperação." +#: commands/functioncmds.c:1511 +#, c-format +msgid "source data type %s is a pseudo-type" +msgstr "tipo de dado fonte %s é um pseudo-tipo" -#: tcop/postgres.c:2286 -msgid "User was connected to a database that must be dropped." -msgstr "Usuário estava conectado ao banco de dados que deve ser removido." +#: commands/functioncmds.c:1517 +#, c-format +msgid "target data type %s is a pseudo-type" +msgstr "tipo de dado alvo %s é um pseudo-tipo" -#: tcop/postgres.c:2620 -msgid "terminating connection because of crash of another server process" -msgstr "" -"finalizando conexão por causa de uma queda de um outro processo servidor" +#: commands/functioncmds.c:1554 +msgid "cast function must take one to three arguments" +msgstr "função de conversão deve ter de um a três argumentos" -#: tcop/postgres.c:2621 +#: commands/functioncmds.c:1558 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." +"argument of cast function must match or be binary-coercible from source data " +"type" 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." +"argumento da função de conversão deve corresponder ou ser convertido no tipo " +"de dado fonte" -#: tcop/postgres.c:2625 tcop/postgres.c:2957 -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." +#: commands/functioncmds.c:1562 +msgid "second argument of cast function must be type integer" +msgstr "segundo argumento da função de conversão deve ter tipo integer" -#: tcop/postgres.c:2729 -msgid "floating-point exception" -msgstr "exceção de ponto flutuante" +#: commands/functioncmds.c:1566 +msgid "third argument of cast function must be type boolean" +msgstr "terceiro argumento da função de conversão deve ter tipo boolean" -#: tcop/postgres.c:2730 +#: commands/functioncmds.c:1570 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." +"return data type of cast function must match or be binary-coercible to " +"target data type" 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." +"tipo de dado de retorno da função de conversão deve corresponder ou ser " +"convertido no tipo de dado alvo" -#: tcop/postgres.c:2897 -msgid "terminating autovacuum process due to administrator command" -msgstr "" -"terminando processo de limpeza automática por causa de um comando do " -"administrador" +#: commands/functioncmds.c:1581 +msgid "cast function must not be volatile" +msgstr "função de conversão não deve ser volátil" -#: tcop/postgres.c:2901 tcop/postgres.c:2906 tcop/postgres.c:2955 -msgid "terminating connection due to conflict with recovery" -msgstr "terminando conexão por causa de um conflito com recuperação" +#: commands/functioncmds.c:1586 +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" -#: tcop/postgres.c:2911 -msgid "terminating connection due to administrator command" -msgstr "terminando conexão por causa de um comando do administrador" +#: commands/functioncmds.c:1590 +msgid "cast function must not be a window function" +msgstr "função de conversão não deve ser uma função deslizante" -#: tcop/postgres.c:2926 -msgid "canceling authentication due to timeout" -msgstr "cancelando autenticação por causa do tempo de espera (timeout)" +#: commands/functioncmds.c:1594 +msgid "cast function must not return a set" +msgstr "função de conversão não deve retornar um conjunto" -#: tcop/postgres.c:2935 -msgid "canceling statement due to statement timeout" -msgstr "cancelando comando por causa do tempo de espera (timeout) do comando" +#: commands/functioncmds.c:1620 +msgid "must be superuser to create a cast WITHOUT FUNCTION" +msgstr "deve ser super-usuário para criar uma conversão WITHOUT FUNCTION" -#: tcop/postgres.c:2944 -msgid "canceling autovacuum task" -msgstr "cancelando tarefa de limpeza automática" +#: commands/functioncmds.c:1635 +msgid "source and target data types are not physically compatible" +msgstr "tipos de dado fonte e alvo não são fisicamente compatíveis" -#: tcop/postgres.c:2962 storage/ipc/standby.c:506 -msgid "canceling statement due to conflict with recovery" -msgstr "cancelando comando por causa de um conflito com recuperação" +#: commands/functioncmds.c:1650 +msgid "composite data types are not binary-compatible" +msgstr "tipos de dado compostos não são compatíveis no formato binário" -#: tcop/postgres.c:2978 -msgid "canceling statement due to user request" -msgstr "cancelando comando por causa de um pedido do usuário" +#: commands/functioncmds.c:1656 +msgid "enum data types are not binary-compatible" +msgstr "tipos de dado enum não são compatíveis no formato binário" -#: tcop/postgres.c:3023 -msgid "stack depth limit exceeded" -msgstr "limite da profundidade da pilha foi excedido" +#: commands/functioncmds.c:1662 +msgid "array data types are not binary-compatible" +msgstr "tipos de dado de matriz não são compatíveis no formato binário" -#: tcop/postgres.c:3024 -msgid "" -"Increase the configuration parameter \"max_stack_depth\", after ensuring the " -"platform's stack depth limit is adequate." -msgstr "" -"Aumente o parâmetro de configuração \"max_stack_depth\", após certificar-se " -"que o limite de profundidade da pilha para a plataforma é adequado." +#: commands/functioncmds.c:1679 +msgid "domain data types must not be marked binary-compatible" +msgstr "tipos de dado de domínio não são compatíveis no formato binário" + +#: commands/functioncmds.c:1689 +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" -#: tcop/postgres.c:3040 +#: commands/functioncmds.c:1722 #, c-format -msgid "\"max_stack_depth\" must not exceed %ldkB" -msgstr "\"max_stack_depth\" não deve exceder %ldkB" +msgid "cast from type %s to type %s already exists" +msgstr "conversão do tipo %s para tipo %s já existe" -#: tcop/postgres.c:3042 -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." +#: commands/functioncmds.c:1802 +#, 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" -#: tcop/postgres.c:3334 postmaster/postmaster.c:675 bootstrap/bootstrap.c:272 +#: commands/functioncmds.c:1840 #, c-format -msgid "--%s requires a value" -msgstr "--%s requer um valor" +msgid "cast from type %s to type %s does not exist" +msgstr "conversão do tipo %s para tipo %s não existe" -#: tcop/postgres.c:3339 postmaster/postmaster.c:680 bootstrap/bootstrap.c:277 +#: commands/functioncmds.c:1928 #, c-format -msgid "-c %s requires a value" -msgstr "-c %s requer um valor" +msgid "function \"%s\" already exists in schema \"%s\"" +msgstr "função \"%s\" já existe no esquema \"%s\"" -#: tcop/postgres.c:3365 -msgid "invalid command-line arguments for server process" -msgstr "argumentos de linha de comando são inválidos para processo servidor" +#: commands/functioncmds.c:2002 +msgid "no inline code specified" +msgstr "código incorporado não foi especificado" -#: tcop/postgres.c:3366 tcop/postgres.c:3372 +#: commands/functioncmds.c:2050 #, c-format -msgid "Try \"%s --help\" for more information." -msgstr "Tente \"%s --help\" para obter informações adicionais." +msgid "language \"%s\" does not support inline code execution" +msgstr "linguagem \"%s\" não suporta execução de código incorporado" -#: tcop/postgres.c:3370 +#: commands/tsearchcmds.c:117 commands/tsearchcmds.c:1044 #, c-format -msgid "%s: invalid command-line arguments" -msgstr "%s: argumentos de linha de comando são inválidos" +msgid "function %s should return type %s" +msgstr "função %s deve retornar tipo %s" + +#: commands/tsearchcmds.c:189 +msgid "must be superuser to create text search parsers" +msgstr "deve ser super-usuário para criar analisadores de busca textual" -#: tcop/postgres.c:3466 +#: commands/tsearchcmds.c:237 #, c-format -msgid "%s: no database nor user name specified" -msgstr "%s: banco de dados ou nome de usuário não foi especificado" +msgid "text search parser parameter \"%s\" not recognized" +msgstr "parâmetro do analisador de busca textual \"%s\" é desconhecido" + +#: commands/tsearchcmds.c:247 +msgid "text search parser start method is required" +msgstr "método start do analisador de busca textual é requerido" + +#: commands/tsearchcmds.c:252 +msgid "text search parser gettoken method is required" +msgstr "método gettoken do analisador de busca textual é requerido" + +#: commands/tsearchcmds.c:257 +msgid "text search parser end method is required" +msgstr "método end do analisador de busca textual é requerido" + +#: commands/tsearchcmds.c:262 +msgid "text search parser lextypes method is required" +msgstr "método lextypes do analisador de busca textual é requerido" -#: tcop/postgres.c:4004 +#: commands/tsearchcmds.c:297 +msgid "must be superuser to drop text search parsers" +msgstr "deve ser super-usuário para remover analisadores de busca textual" + +#: commands/tsearchcmds.c:326 #, c-format -msgid "invalid CLOSE message subtype %d" -msgstr "subtipo %d de mensagem CLOSE é inválido" +msgid "text search parser \"%s\" does not exist, skipping" +msgstr "analisador de busca textual \"%s\" não existe, ignorando" + +#: commands/tsearchcmds.c:381 +msgid "must be superuser to rename text search parsers" +msgstr "deve ser super-usuário para renomear analisadores de busca textual" -#: tcop/postgres.c:4037 +#: commands/tsearchcmds.c:399 #, c-format -msgid "invalid DESCRIBE message subtype %d" -msgstr "subtipo %d de mensagem DESCRIBE é inválido" +msgid "text search parser \"%s\" already exists" +msgstr "analisador de busca textual \"%s\" já existe" -#: tcop/postgres.c:4268 +#: commands/tsearchcmds.c:525 #, 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" +msgid "text search template \"%s\" does not accept options" +msgstr "modelo de busca textual \"%s\" não aceita opções" -#. translator: %s is name of a SQL command, eg CREATE -#: tcop/utility.c:242 +#: commands/tsearchcmds.c:598 +msgid "text search template is required" +msgstr "modelo de busca textual é requerido" + +#: commands/tsearchcmds.c:667 #, c-format -msgid "cannot execute %s in a read-only transaction" -msgstr "não pode executar %s em uma transação somente leitura" +msgid "text search dictionary \"%s\" already exists" +msgstr "dicionário de busca textual \"%s\" já existe" -#. translator: %s is name of a SQL command, eg CREATE -#: tcop/utility.c:261 +#: commands/tsearchcmds.c:775 #, c-format -msgid "cannot execute %s during recovery" -msgstr "não pode executar %s durante recuperação" +msgid "text search dictionary \"%s\" does not exist, skipping" +msgstr "dicionário de busca textual \"%s\" não existe, ignorando" -#. translator: %s is name of a SQL command, eg PREPARE -#: tcop/utility.c:279 +#: commands/tsearchcmds.c:1108 +msgid "must be superuser to create text search templates" +msgstr "deve ser super-usuário para criar modelos de busca textual" + +#: commands/tsearchcmds.c:1145 #, c-format -msgid "cannot execute %s within security-restricted operation" -msgstr "não pode executar %s em operação com restrição de segurança" +msgid "text search template parameter \"%s\" not recognized" +msgstr "parâmetro do modelo de busca textual \"%s\" é desconhecido" -#: tcop/utility.c:1129 -msgid "must be superuser to do CHECKPOINT" -msgstr "deve ser super-usuário para fazer CHECKPOINT" +#: commands/tsearchcmds.c:1155 +msgid "text search template lexize method is required" +msgstr "método lexize do modelo de busca textual é requerido" + +#: commands/tsearchcmds.c:1193 +msgid "must be superuser to rename text search templates" +msgstr "deve ser super-usuário para renomear modelos de busca textual" -#: postmaster/syslogger.c:387 +#: commands/tsearchcmds.c:1212 #, c-format -msgid "select() failed in logger process: %m" -msgstr "select() falhou no processo logger: %m" +msgid "text search template \"%s\" already exists" +msgstr "modelo de busca textual \"%s\" já existe" + +#: commands/tsearchcmds.c:1281 +msgid "must be superuser to drop text search templates" +msgstr "deve ser super-usuário para remover modelos de busca textual" -#: postmaster/syslogger.c:399 postmaster/syslogger.c:973 +#: commands/tsearchcmds.c:1310 #, c-format -msgid "could not read from logger pipe: %m" -msgstr "não pôde ler do pipe do logger: %m" +msgid "text search template \"%s\" does not exist, skipping" +msgstr "modelo de busca textual \"%s\" não existe, ignorando" -#: postmaster/syslogger.c:446 -msgid "logger shutting down" -msgstr "desligando logger" +#: commands/tsearchcmds.c:1508 +#, c-format +msgid "text search configuration parameter \"%s\" not recognized" +msgstr "parâmetro de configuração de busca textual \"%s\" é desconhecido" + +#: commands/tsearchcmds.c:1515 +msgid "cannot specify both PARSER and COPY options" +msgstr "não pode especificar ambas opções PARSER e COPY" + +#: commands/tsearchcmds.c:1543 +msgid "text search parser is required" +msgstr "analisador de busca textual é requerido" -#: postmaster/syslogger.c:490 postmaster/syslogger.c:504 +#: commands/tsearchcmds.c:1652 #, c-format -msgid "could not create pipe for syslog: %m" -msgstr "não pôde criar pipe para syslog: %m" +msgid "text search configuration \"%s\" already exists" +msgstr "configuração de busca textual \"%s\" já existe" -#: postmaster/syslogger.c:524 postmaster/syslogger.c:1012 +#: commands/tsearchcmds.c:1759 #, c-format -msgid "could not create log file \"%s\": %m" -msgstr "não pôde criar arquivo de log \"%s\": %m" +msgid "text search configuration \"%s\" does not exist, skipping" +msgstr "configuração de busca textual \"%s\" não existe, ignorando" -#: postmaster/syslogger.c:539 +#: commands/tsearchcmds.c:1981 #, c-format -msgid "could not fork system logger: %m" -msgstr "não pôde criar processo system logger: %m" +msgid "token type \"%s\" does not exist" +msgstr "tipo de elemento \"%s\" não existe" -#: postmaster/syslogger.c:570 +#: commands/tsearchcmds.c:2203 #, c-format -msgid "could not redirect stdout: %m" -msgstr "não pôde redirecionar saída stdout: %m" +msgid "mapping for token type \"%s\" does not exist" +msgstr "mapeamento para tipo de elemento \"%s\" não existe" -#: postmaster/syslogger.c:575 postmaster/syslogger.c:593 +#: commands/tsearchcmds.c:2209 #, c-format -msgid "could not redirect stderr: %m" -msgstr "não pôde redirecionar saída stderr: %m" +msgid "mapping for token type \"%s\" does not exist, skipping" +msgstr "mapeamento para tipo de elemento \"%s\" não existe, ignorando" -#: postmaster/syslogger.c:928 +#: commands/tsearchcmds.c:2362 commands/tsearchcmds.c:2473 #, c-format -msgid "could not write to log file: %s\n" -msgstr "não pôde escrever em arquivo de log: %s\n" +msgid "invalid parameter list format: \"%s\"" +msgstr "formato de lista de parâmetros é inválido: \"%s\"" -#: postmaster/syslogger.c:1083 postmaster/syslogger.c:1141 +#: commands/extension.c:149 commands/extension.c:2689 #, c-format -msgid "could not open new log file \"%s\": %m" -msgstr "não pôde abrir novo arquivo de log \"%s\": %m" +msgid "extension \"%s\" does not exist" +msgstr "extensão \"%s\" não existe" -#: postmaster/syslogger.c:1095 postmaster/syslogger.c:1153 -msgid "disabling automatic rotation (use SIGHUP to re-enable)" +#: commands/extension.c:248 commands/extension.c:257 commands/extension.c:269 +#: commands/extension.c:279 +#, c-format +msgid "invalid extension name: \"%s\"" +msgstr "nome de extensão é inválido: \"%s\"" + +#: commands/extension.c:249 +msgid "Extension names must not be empty." +msgstr "Nomes de extensão não devem ser vazios." + +#: commands/extension.c:258 +msgid "Extension names must not contain \"--\"." +msgstr "Nomes de extensão não devem conter \"--\"." + +#: commands/extension.c:270 +msgid "Extension names must not begin or end with \"-\"." +msgstr "Nomes de extensão não devem começar ou terminar com \"-\"." + +#: commands/extension.c:280 +msgid "Extension names must not contain directory separator characters." msgstr "" -"desabilitando rotação automática (utilize SIGHUP para habilitá-la novamente)" +"Nomes de extensões não devem conter caracteres separadores de diretórios." -#: postmaster/pgstat.c:328 +#: commands/extension.c:295 commands/extension.c:304 commands/extension.c:313 +#: commands/extension.c:323 #, c-format -msgid "could not resolve \"localhost\": %s" -msgstr "não pôde resolver \"localhost\": %s" +msgid "invalid extension version name: \"%s\"" +msgstr "nome de versão da extensão é inválido: \"%s\"" -#: postmaster/pgstat.c:351 -msgid "trying another address for the statistics collector" -msgstr "tentando outro endereço para coletor de estatísticas" +#: commands/extension.c:296 +msgid "Version names must not be empty." +msgstr "Nomes de versão não devem ser vazios." + +#: commands/extension.c:305 +msgid "Version names must not contain \"--\"." +msgstr "Nomes de versão não devem conter \"--\"." + +#: commands/extension.c:314 +msgid "Version names must not begin or end with \"-\"." +msgstr "Nomes de versão não devem começar ou terminar com \"-\"." + +#: commands/extension.c:324 +msgid "Version names must not contain directory separator characters." +msgstr "Nomes de versão não devem conter caracteres separadores de diretórios." -#: postmaster/pgstat.c:360 +#: commands/extension.c:474 #, c-format -msgid "could not create socket for statistics collector: %m" -msgstr "não pôde criar soquete para coletor de estatísticas: %m" +msgid "could not open extension control file \"%s\": %m" +msgstr "não pôde abrir arquivo de controle da extensão \"%s\": %m" -#: postmaster/pgstat.c:372 +#: commands/extension.c:495 commands/extension.c:505 #, 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" +msgid "parameter \"%s\" cannot be set in a secondary extension control file" +msgstr "" +"parâmetro \"%s\" não pode ser definido em um segundo arquivo de controle da " +"extensão" -#: postmaster/pgstat.c:383 +#: commands/extension.c:544 #, 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" +msgid "\"%s\" is not a valid encoding name" +msgstr "\"%s\" não é um nome de codificação válido" -#: postmaster/pgstat.c:399 +#: commands/extension.c:558 #, 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" +msgid "parameter \"%s\" must be a list of extension names" +msgstr "parâmetro \"%s\" deve ser uma lista de nomes de extensões" -#: postmaster/pgstat.c:420 +#: commands/extension.c:565 #, c-format -msgid "could not send test message on socket for statistics collector: %m" +msgid "unrecognized parameter \"%s\" in file \"%s\"" +msgstr "parâmetro \"%s\" desconhecido em arquivo \"%s\"" + +#: commands/extension.c:574 +msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true" msgstr "" -"não pôde enviar mensagem de teste ao soquete do coletor de estatísticas: %m" +"parâmetro \"schema\" não pode ser especificado quando \"relocatable\" é " +"verdadeiro" -#: postmaster/pgstat.c:446 postmaster/pgstat.c:2909 +#: commands/extension.c:726 +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 #, c-format -msgid "select() failed in statistics collector: %m" -msgstr "select() falhou no coletor de estatísticas: %m" +msgid "permission denied to create extension \"%s\"" +msgstr "permissão negada ao criar extensão \"%s\"" -#: postmaster/pgstat.c:461 -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" +#: commands/extension.c:796 +msgid "Must be superuser to create this extension." +msgstr "Deve ser super-usuário para criar uma extensão." -#: postmaster/pgstat.c:476 +#: commands/extension.c:800 #, 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" +msgid "permission denied to update extension \"%s\"" +msgstr "permissão negada ao atualizar extensão \"%s\"" -#: postmaster/pgstat.c:486 -msgid "incorrect test message transmission on socket for statistics collector" -msgstr "" -"transmissão de mensagem teste incorreta no soquete do coletor de estatísticas" +#: commands/extension.c:802 +msgid "Must be superuser to update this extension." +msgstr "Deve ser super-usuário para atualizar esta extensão." -#: postmaster/pgstat.c:509 +#: commands/extension.c:1084 #, c-format -msgid "could not set statistics collector socket to nonblocking mode: %m" +msgid "" +"extension \"%s\" has no update path from version \"%s\" to version \"%s\"" msgstr "" -"não pôde definir soquete do coletor de estatísticas para modo não-bloqueado: " -"%m" - -#: postmaster/pgstat.c:519 -msgid "disabling statistics collector for lack of working socket" -msgstr "" -"desabilitando coletor de estatísticas por falta de um soquete que funcione" +"extensão \"%s\" não possui caminho de atualização da versão \"%s\" para " +"versão \"%s\"" -#: postmaster/pgstat.c:621 +#: commands/extension.c:1211 #, c-format -msgid "could not fork statistics collector: %m" -msgstr "não pôde criar processo para coletor de estatísticas: %m" +msgid "extension \"%s\" already exists, skipping" +msgstr "extensão \"%s\" já existe, ignorando" -#: postmaster/pgstat.c:1151 postmaster/pgstat.c:1175 postmaster/pgstat.c:1206 -msgid "must be superuser to reset statistics counters" -msgstr "deve ser super-usuário para reiniciar contadores de estatísticas" - -#: postmaster/pgstat.c:1182 +#: commands/extension.c:1218 #, c-format -msgid "unrecognized reset target: \"%s\"" -msgstr "alvo de reinício desconhecido: \"%s\"" +msgid "extension \"%s\" already exists" +msgstr "extensão \"%s\" já existe" -#: postmaster/pgstat.c:1183 -msgid "Target must be \"bgwriter\"." -msgstr "Alvo deve ser \"bgwriter\"." +#: commands/extension.c:1229 +msgid "nested CREATE EXTENSION is not supported" +msgstr "CREATE EXTENSION aninhado não é suportado" -#: postmaster/pgstat.c:2888 -#, c-format -msgid "poll() failed in statistics collector: %m" -msgstr "poll() falhou no coletor de estatísticas: %m" +#: commands/extension.c:1284 commands/extension.c:2749 +msgid "version to install must be specified" +msgstr "versão a ser instalada deve ser especificada" -#: postmaster/pgstat.c:2933 +#: commands/extension.c:1301 #, c-format -msgid "could not read statistics message: %m" -msgstr "não pôde ler mensagem de estatística: %m" +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\"" -#: postmaster/pgstat.c:3190 +#: commands/extension.c:1356 #, 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" +msgid "extension \"%s\" must be installed in schema \"%s\"" +msgstr "extensão \"%s\" deve ser instalada no esquema \"%s\"" -#: postmaster/pgstat.c:3262 +#: commands/extension.c:1439 commands/extension.c:2890 #, 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" +msgid "required extension \"%s\" is not installed" +msgstr "extensão requerida \"%s\" não está instalada" -#: postmaster/pgstat.c:3271 +#: commands/extension.c:1608 #, 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" +msgid "extension \"%s\" does not exist, skipping" +msgstr "extensão \"%s\" não existe, ignorando" -#: postmaster/pgstat.c:3279 +#: commands/extension.c:1663 #, c-format -msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" +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:1715 commands/extension.c:1824 +#: commands/extension.c:2017 commands/prepare.c:755 utils/mmgr/portalmem.c:989 +#: replication/walsender.c:1425 foreign/foreign.c:355 +msgid "materialize mode required, but it is not allowed in this context" msgstr "" -"não pôde renomear arquivo de estatísticas temporário \"%s\" para \"%s\": %m" +"modo de materialização é requerido, mas ele não é permitido neste contexto" + +#: commands/extension.c:2134 +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" -#: postmaster/pgstat.c:3379 postmaster/pgstat.c:3608 +#: commands/extension.c:2146 #, c-format -msgid "could not open statistics file \"%s\": %m" -msgstr "não pôde abrir arquivo de estatísticas \"%s\": %m" +msgid "OID %u does not refer to a table" +msgstr "OID %u não se refere a uma tabela" -#: postmaster/pgstat.c:3391 postmaster/pgstat.c:3401 postmaster/pgstat.c:3423 -#: postmaster/pgstat.c:3438 postmaster/pgstat.c:3501 postmaster/pgstat.c:3519 -#: postmaster/pgstat.c:3535 postmaster/pgstat.c:3553 postmaster/pgstat.c:3569 -#: postmaster/pgstat.c:3620 postmaster/pgstat.c:3631 +#: commands/extension.c:2151 #, c-format -msgid "corrupted statistics file \"%s\"" -msgstr "arquivo de estatísticas \"%s\" corrompido" +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" -#: postmaster/pgstat.c:3925 -msgid "database hash table corrupted during cleanup --- abort" +#: commands/extension.c:2515 +#, c-format +msgid "" +"cannot move extension \"%s\" into schema \"%s\" because the extension " +"contains the schema" msgstr "" -"tabela hash do banco de dados foi corrompida durante desligamento --- " -"interrompendo" +"não pode mover extensão \"%s\" para esquema \"%s\" porque a extensão contém " +"o esquema" -#: postmaster/autovacuum.c:359 +#: commands/extension.c:2555 commands/extension.c:2618 #, c-format -msgid "could not fork autovacuum launcher process: %m" -msgstr "não pôde criar processo inicializador do autovacuum: %m" +msgid "extension \"%s\" does not support SET SCHEMA" +msgstr "extensão \"%s\" não suporta SET SCHEMA" -#: postmaster/autovacuum.c:404 -msgid "autovacuum launcher started" -msgstr "inicializador do autovacuum foi iniciado" +#: commands/extension.c:2620 +#, c-format +msgid "%s is not in the extension's schema \"%s\"" +msgstr "%s não está no esquema da extensão \"%s\"" -#: postmaster/autovacuum.c:760 -msgid "autovacuum launcher shutting down" -msgstr "inicializador do autovacuum está sendo desligado" +#: commands/extension.c:2669 +msgid "nested ALTER EXTENSION is not supported" +msgstr "ALTER EXTENSION aninhado não é suportado" -#: postmaster/autovacuum.c:1394 +#: commands/extension.c:2760 #, c-format -msgid "could not fork autovacuum worker process: %m" -msgstr "não pôde criar processo de limpeza automática: %m" +msgid "version \"%s\" of extension \"%s\" is already installed" +msgstr "versao \"%s\" da extensão \"%s\" já está instalada" -#: postmaster/autovacuum.c:1595 +#: commands/extension.c:2995 #, c-format -msgid "autovacuum: processing database \"%s\"" -msgstr "autovacuum: processando banco de dados \"%s\"" +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" -#: postmaster/autovacuum.c:1976 +#: commands/extension.c:3013 #, 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\"" +msgid "%s is not a member of extension \"%s\"" +msgstr "%s não é um membro da extensão \"%s\"" + +#: commands/prepare.c:71 +msgid "invalid statement name: must not be empty" +msgstr "nome de comando é inválido: não deve ser vazio" -#: postmaster/autovacuum.c:1988 +#: commands/prepare.c:122 tcop/postgres.c:1269 parser/parse_param.c:303 #, 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\"" +msgid "could not determine data type of parameter $%d" +msgstr "não pôde determinar o tipo de dado do parâmetro $%d" + +#: commands/prepare.c:140 +msgid "utility statements cannot be prepared" +msgstr "comandos utilitários não podem ser preparados" + +#: commands/prepare.c:240 commands/prepare.c:247 commands/prepare.c:706 +msgid "prepared statement is not a SELECT" +msgstr "comando preparado não é um SELECT" -#: postmaster/autovacuum.c:2249 +#: commands/prepare.c:314 #, c-format -msgid "automatic vacuum of table \"%s.%s.%s\"" -msgstr "limpeza automática da tabela \"%s.%s.%s\"" +msgid "wrong number of parameters for prepared statement \"%s\"" +msgstr "número incorreto de parâmetros para comando preparado \"%s\"" -#: postmaster/autovacuum.c:2252 +#: commands/prepare.c:316 #, c-format -msgid "automatic analyze of table \"%s.%s.%s\"" -msgstr "análise automática da tabela \"%s.%s.%s\"" +msgid "Expected %d parameters but got %d." +msgstr "Esperado %d parâmetros mas recebeu %d." -#: postmaster/autovacuum.c:2720 -msgid "autovacuum not started because of misconfiguration" -msgstr "autovacuum não foi iniciado por causa de configuração errada" +#: commands/prepare.c:345 +msgid "cannot use subquery in EXECUTE parameter" +msgstr "não pode utilizar subconsulta no parâmetro EXECUTE" -#: postmaster/autovacuum.c:2721 -msgid "Enable the \"track_counts\" option." -msgstr "Habilite a opção \"track_counts\"." +#: commands/prepare.c:349 +msgid "cannot use aggregate function in EXECUTE parameter" +msgstr "não pode utilizar função de agregação no parâmetro EXECUTE" -#: postmaster/bgwriter.c:472 -#, c-format -msgid "checkpoints are occurring too frequently (%d second apart)" -msgid_plural "checkpoints are occurring too frequently (%d seconds apart)" -msgstr[0] "pontos de controle estão ocorrendo frequentemente (%d segundo)" -msgstr[1] "pontos de controle estão ocorrendo frequentemente (%d segundos)" +#: commands/prepare.c:353 +msgid "cannot use window function in EXECUTE parameter" +msgstr "não pode utilizar função deslizante no parâmetro EXECUTE" -#: postmaster/bgwriter.c:476 -msgid "" -"Consider increasing the configuration parameter \"checkpoint_segments\"." -msgstr "" -"Considere aumentar o parâmetro de configuração \"checkpoint_segments\"." +#: commands/prepare.c:366 +#, c-format +msgid "parameter $%d of type %s cannot be coerced to the expected type %s" +msgstr "parâmetro $%d do tipo %s não pode ser convertido para tipo esperado %s" -#: postmaster/bgwriter.c:588 +#: commands/prepare.c:467 #, c-format -msgid "transaction log switch forced (archive_timeout=%d)" -msgstr "rotação de log de transação foi forçada (archive_timeout=%d)" +msgid "prepared statement \"%s\" already exists" +msgstr "comando preparado \"%s\" já existe" -#: postmaster/bgwriter.c:1044 -msgid "checkpoint request failed" -msgstr "pedido de ponto de controle falhou" +#: commands/prepare.c:525 +#, c-format +msgid "prepared statement \"%s\" does not exist" +msgstr "comando preparado \"%s\" não existe" -#: postmaster/bgwriter.c:1045 -msgid "Consult recent messages in the server log for details." -msgstr "Consulte mensagens recentes no log do servidor para obter detalhes." +#: commands/constraint.c:59 utils/adt/ri_triggers.c:3080 +#, c-format +msgid "function \"%s\" was not called by trigger manager" +msgstr "função \"%s\" não foi chamada pelo gerenciador de gatilhos" -#: postmaster/postmaster.c:566 +#: commands/constraint.c:66 utils/adt/ri_triggers.c:3089 #, c-format -msgid "%s: invalid argument for option -f: \"%s\"\n" -msgstr "%s: argumento inválido para opção -f: \"%s\"\n" +msgid "function \"%s\" must be fired AFTER ROW" +msgstr "função \"%s\" deve ser disparada no AFTER ROW" -#: postmaster/postmaster.c:652 +#: commands/constraint.c:80 utils/adt/ri_triggers.c:3110 #, c-format -msgid "%s: invalid argument for option -t: \"%s\"\n" -msgstr "%s: argumento inválido para opção -t: \"%s\"\n" +msgid "function \"%s\" must be fired for INSERT or UPDATE" +msgstr "função \"%s\" deve ser disparada pelo INSERT ou UPDATE" -#: postmaster/postmaster.c:692 postmaster/postmaster.c:705 -#: bootstrap/bootstrap.c:288 +#: nodes/nodeFuncs.c:114 nodes/nodeFuncs.c:140 parser/parse_oper.c:948 +#: parser/parse_coerce.c:1671 parser/parse_coerce.c:1688 +#: parser/parse_coerce.c:1750 parser/parse_expr.c:1638 parser/parse_func.c:367 #, c-format -msgid "Try \"%s --help\" for more information.\n" -msgstr "Tente \"%s --help\" para obter informações adicionais.\n" +msgid "could not find array type for data type %s" +msgstr "não pôde encontrar tipo array para tipo de dado %s" -#: postmaster/postmaster.c:703 +#: port/win32/signal.c:189 #, c-format -msgid "%s: invalid argument: \"%s\"\n" -msgstr "%s: argumento inválido: \"%s\"\n" +msgid "could not create signal listener pipe for PID %d: error code %d" +msgstr "" +"não pôde criar pipe que espera por sinal para PID %d: código de erro %d" -#: postmaster/postmaster.c:728 +#: port/win32/signal.c:269 port/win32/signal.c:301 #, c-format -msgid "%s: superuser_reserved_connections must be less than max_connections\n" +msgid "could not create signal listener pipe: error code %d; retrying\n" msgstr "" -"%s: superuser_reserved_connections deve ser menor do que max_connections\n" +"não pôde criar pipe que espera por sinal: código de erro %d; tentando " +"novamente\n" -#: postmaster/postmaster.c:733 -msgid "" -"WAL archival (archive_mode=on) requires wal_level \"archive\" or " -"\"hot_standby\"" +#: port/win32/signal.c:312 +#, c-format +msgid "could not create signal dispatch thread: error code %d\n" +msgstr "não pôde criar thread emissor de sinal: código de erro %d\n" + +#: port/win32/crashdump.c:108 +msgid "could not load dbghelp.dll, cannot write crash dump\n" msgstr "" -"arquivamento do WAL (archive_mode=on) requer wal_level \"archive\" ou " -"\"hot_standby\"" +"não pôde carregar dbghelp.dll, não pode escrever arquivo de despejo de " +"memória\n" -#: postmaster/postmaster.c:736 -#, fuzzy +#: port/win32/crashdump.c:116 msgid "" -"WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or " -"\"hot_standby\"" +"could not load required functions in dbghelp.dll, cannot write crash dump\n" msgstr "" -"envio do WAL (max_wal_senders > 0) requer wal_level \"archive\" ou \"hot_standby\"" +"não pôde carregar funções requeridas em dbghelp.dll, não pode escrever " +"arquivo de despejo de memória\n" -#: postmaster/postmaster.c:744 +#: port/win32/crashdump.c:147 #, c-format -msgid "%s: invalid datetoken tables, please fix\n" +msgid "could not open crash dump file \"%s\" for writing: error code %u\n" msgstr "" -"%s: tabelas de palavras chave de datas são inválidas, por favor conserte\n" - -#: postmaster/postmaster.c:850 -msgid "invalid list syntax for \"listen_addresses\"" -msgstr "sintaxe de lista é inválida para \"listen_addresses\"" +"não pôde abrir arquivo de despejo de memória \"%s\" para escrita: código de " +"erro %u\n" -#: postmaster/postmaster.c:871 +#: port/win32/crashdump.c:154 #, c-format -msgid "could not create listen socket for \"%s\"" -msgstr "não pôde criar soquete de escuta para \"%s\"" - -#: postmaster/postmaster.c:877 -msgid "could not create any TCP/IP sockets" -msgstr "não pôde criar nenhum soquete TCP/IP" - -#: postmaster/postmaster.c:928 -msgid "could not create Unix-domain socket" -msgstr "não pôde criar soquete de domínio Unix" - -#: postmaster/postmaster.c:936 -msgid "no socket created for listening" -msgstr "nenhum soquete criado para escutar" - -#: postmaster/postmaster.c:962 -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" +msgid "wrote crash dump to file \"%s\"\n" +msgstr "escreveu despejo de memória para arquivo \"%s\"\n" -#: postmaster/postmaster.c:1006 +#: port/win32/crashdump.c:156 #, 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" +msgid "could not write crash dump to file \"%s\": error code %08x\n" +msgstr "" +"não pôde escrever despejo de memória para arquivo \"%s\": código de erro " +"%08x\n" -#: postmaster/postmaster.c:1121 +#: port/win32/security.c:43 #, c-format -msgid "%s: could not locate matching postgres executable" -msgstr "%s: não pôde localizar executável do postgres correspondente" +msgid "could not open process token: error code %d\n" +msgstr "não pôde abrir informação sobre processo: código de erro %d\n" -#: postmaster/postmaster.c:1172 +#: port/win32/security.c:63 #, c-format -msgid "data directory \"%s\" does not exist" -msgstr "diretório de dados \"%s\" não existe" +msgid "could not get SID for Administrators group: error code %d\n" +msgstr "não pôde obter SID do grupo Administrators: código de erro %d\n" -#: postmaster/postmaster.c:1177 +#: port/win32/security.c:72 #, c-format -msgid "could not read permissions of directory \"%s\": %m" -msgstr "não pôde ler permissões do diretório \"%s\": %m" +msgid "could not get SID for PowerUsers group: error code %d\n" +msgstr "não pôde obter SID do grupo PowerUsers: código de erro %d\n" -#: postmaster/postmaster.c:1185 +#: port/win32_sema.c:94 #, c-format -msgid "specified data directory \"%s\" is not a directory" -msgstr "diretório de dados especificado \"%s\" não é um diretório" +msgid "could not create semaphore: error code %d" +msgstr "não pôde criar semáforo: código de erro %d" -#: postmaster/postmaster.c:1201 +#: port/win32_sema.c:165 #, c-format -msgid "data directory \"%s\" has wrong ownership" -msgstr "diretório de dados \"%s\" tem dono incorreto" +msgid "could not lock semaphore: error code %d" +msgstr "não pôde bloquear semáforo: código de erro %d" -#: postmaster/postmaster.c:1203 -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." +#: port/win32_sema.c:178 +#, c-format +msgid "could not unlock semaphore: error code %d" +msgstr "não pôde desbloquear semáforo: código de erro %d" -#: postmaster/postmaster.c:1223 +#: port/win32_sema.c:207 #, c-format -msgid "data directory \"%s\" has group or world access" -msgstr "diretório de dados \"%s\" tem acesso para grupo ou outros" +msgid "could not try-lock semaphore: error code %d" +msgstr "não pôde tentar bloquear semáforo: código de erro %d" -#: postmaster/postmaster.c:1225 -msgid "Permissions should be u=rwx (0700)." -msgstr "Permissões devem ser u=rwx (0700)." +#: port/pg_sema.c:116 port/sysv_sema.c:116 +#, c-format +msgid "could not create semaphores: %m" +msgstr "não pôde criar semáforos: %m" -#: postmaster/postmaster.c:1236 +#: port/pg_sema.c:117 port/sysv_sema.c:117 #, c-format +msgid "Failed system call was semget(%lu, %d, 0%o)." +msgstr "Falhou ao executar chamada de sistema semget(%lu, %d, 0%o)." + +#: port/pg_sema.c:121 port/sysv_sema.c:121 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" +"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 "" -"%s: não pôde encontrar o sistema de banco de dados\n" -"Era esperado encontrá-lo no diretório \"%s\",\n" -"mas não pôde abrir arquivo \"%s\": %s\n" +"Esse erro *não* significa que você está sem espaço no disco. Isso ocorre " +"quando o número máximo de conjuntos de semáforos (SEMMNI) atinge o limite do " +"sistema ou o sistema atinge o número máximo de semáforos (SEMMNS). Você " +"precisa aumentar o parâmetro do kernel que trata disso. Alternativamente, " +"reduza o consumo de semáforos do PostgreSQL reduzindo o parâmetro " +"max_connections.\n" +"A documentação do PostgreSQL contém informações adicionais sobre como " +"configurar seu sistema para PostgreSQL." -#: postmaster/postmaster.c:1272 +#: port/pg_sema.c:151 port/sysv_sema.c:151 #, c-format -msgid "%s: could not open file \"%s\": %s\n" -msgstr "%s: não pôde abrir arquivo \"%s\": %s\n" +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." -#: postmaster/postmaster.c:1279 +#: port/unix_latch.c:265 port/pg_latch.c:265 +#: replication/libpqwalreceiver/libpqwalreceiver.c:233 #, c-format -msgid "%s: could not open log file \"%s/%s\": %s\n" -msgstr "%s: não pôde abrir arquivo de log \"%s/%s\": %s\n" +msgid "select() failed: %m" +msgstr "select() falhou: %m" -#: postmaster/postmaster.c:1290 +#: port/sysv_shmem.c:146 port/pg_shmem.c:146 #, c-format -msgid "%s: could not fork background process: %s\n" -msgstr "%s: não pôde criar processo em segundo plano: %s\n" +msgid "could not create shared memory segment: %m" +msgstr "não pôde criar segmento de memória compartilhada: %m" -#: postmaster/postmaster.c:1312 +#: port/sysv_shmem.c:147 port/pg_shmem.c:147 #, c-format -msgid "%s: could not dissociate from controlling TTY: %s\n" -msgstr "%s: não pôde dissociar da TTY de controle: %s\n" +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)." -#: postmaster/postmaster.c:1407 +#: port/sysv_shmem.c:151 port/pg_shmem.c:151 #, c-format -msgid "select() failed in postmaster: %m" -msgstr "select() falhou no postmaster: %m" +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 "" +"Esse erro usualmente significa que a requisição do PostgreSQL por segmento " +"de memória compartilhada excedeu o parâmetro do kernel SHMMAX. Você pode " +"reduzir o tamanho requisitado ou configurar o kernel novamente com um valor " +"maior de SHMMAX. Para reduzir o tamanho requisitado (atualmente %lu bytes), " +"reduza o uso de memória compartilhada pelo PostgreSQL, talvez reduzindo " +"shared_buffers ou max_connections.\n" +"Se o tamanho requisitado já está pequeno, é possível que ele seja menor do " +"que o parâmetro SHMMIN do kernel, nesse caso aumente o tamanho da requisição " +"ou configure SHMMIN novamente.\n" +"A documentação do PostgreSQL contém informações adicionais sobre " +"configuração de memória compartilhada." -#: postmaster/postmaster.c:1564 postmaster/postmaster.c:1595 -msgid "incomplete startup packet" -msgstr "pacote de inicialização incompleto" +#: port/sysv_shmem.c:164 port/pg_shmem.c:164 +#, 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 "" +"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, ou " +"excedeu o parâmetro SHMALL do kernel. Para reduzir o tamanho requisitado " +"(atualmente %lu bytes), reduza o uso de memória compartilhada pelo " +"PostgreSQL, talvez reduzindo shared_buffers ou max_connections.\n" +"A documentação do PostgreSQL contém informações adicionais sobre " +"configuração de memória compartilhada." -#: postmaster/postmaster.c:1576 -msgid "invalid length of startup packet" -msgstr " tamanho do pacote de inicialização é inválido" +#: port/sysv_shmem.c:175 port/pg_shmem.c:175 +#, 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 "" +"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. Se você não pode aumentar " +"o limite de memória compartilhada, reduza o tamanho de memória compartilhada " +"requisitada pelo PostgreSQL (atualmente %lu bytes), talvez reduzindo " +"shared_buffers ou max_connections.\n" +"A documentação do PostgreSQL contém informações adicionais sobre " +"configuração de memória compartilhada." -#: postmaster/postmaster.c:1633 +#: port/sysv_shmem.c:438 port/pg_shmem.c:438 #, c-format -msgid "failed to send SSL negotiation response: %m" -msgstr "falhou ao enviar resposta de negociação SSL: %m" +msgid "could not stat data directory \"%s\": %m" +msgstr "não pôde executar stat no diretório de dados \"%s\": %m" + +#: 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 "não pôde criar segmento de memória compartilhada: %lu" -#: postmaster/postmaster.c:1662 +#: port/win32_shmem.c:169 #, c-format -msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" +msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)." msgstr "" -"protocolo do cliente %u.%u não é suportado: servidor suporta %u.0 a %u.%u" +"Falhou ao executar chamada de sistema CreateFileMapping(size=%lu, name=%s)." -#: postmaster/postmaster.c:1713 -msgid "invalid value for boolean option \"replication\"" -msgstr "valor é inválido para opção booleana \"replication\"" +#: port/win32_shmem.c:193 +msgid "pre-existing shared memory block is still in use" +msgstr "bloco de memória compartilhada pré-existente ainda está em uso" -#: postmaster/postmaster.c:1733 -msgid "invalid startup packet layout: expected terminator as last byte" +#: port/win32_shmem.c:194 +msgid "" +"Check if there are any old server processes still running, and terminate " +"them." msgstr "" -"formato de pacote de inicialização é inválido: terminador esperado como " -"último byte" +"Verifique se ainda há processos servidor antigos sendo executados, e termine-" +"os." -#: postmaster/postmaster.c:1761 -msgid "no PostgreSQL user name specified in startup packet" -msgstr "" -"nenhum nome de usuário PostgreSQL especificado no pacote de inicialização" +#: port/win32_shmem.c:204 +msgid "Failed system call was DuplicateHandle." +msgstr "Falhou ao executar chamada de sistema DuplicateHandle." -#: postmaster/postmaster.c:1818 -msgid "the database system is starting up" -msgstr "o sistema de banco de dados está iniciando" +#: port/win32_shmem.c:225 +msgid "Failed system call was MapViewOfFileEx." +msgstr "Falhou ao executar chamada de sistema MapViewOfFileEx." -#: postmaster/postmaster.c:1823 -msgid "the database system is shutting down" -msgstr "o sistema de banco de dados está desligando" +#: tcop/pquery.c:661 +#, c-format +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" -#: postmaster/postmaster.c:1828 -msgid "the database system is in recovery mode" -msgstr "o sistema de banco de dados está em modo de recuperação" +#: tcop/pquery.c:971 +msgid "cursor can only scan forward" +msgstr "cursor só pode buscar para frente" -#: postmaster/postmaster.c:1833 storage/ipc/sinvaladt.c:302 -#: storage/ipc/procarray.c:270 storage/lmgr/proc.c:289 -msgid "sorry, too many clients already" -msgstr "desculpe, muitos clientes conectados" +#: tcop/pquery.c:972 +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." -#: postmaster/postmaster.c:1895 +#: tcop/fastpath.c:109 tcop/fastpath.c:485 tcop/fastpath.c:615 #, c-format -msgid "wrong key in cancel request for process %d" -msgstr "chave incorreta no pedido de cancelamento do processo %d" +msgid "invalid argument size %d in function call message" +msgstr "tamanho de argumento %d é inválido na mensagem de chamada da função" -#: postmaster/postmaster.c:1903 -#, 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" +#: tcop/fastpath.c:303 tcop/postgres.c:919 tcop/postgres.c:1229 +#: tcop/postgres.c:1510 tcop/postgres.c:1952 tcop/postgres.c:2320 +#: tcop/postgres.c:2401 +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" -#: postmaster/postmaster.c:2104 -msgid "received SIGHUP, reloading configuration files" -msgstr "SIGHUP recebido, recarregando arquivos de configuração" +#: tcop/fastpath.c:331 +#, c-format +msgid "fastpath function call: \"%s\" (OID %u)" +msgstr "chamada de função fastpath: \"%s\" (OID %u)" -#: postmaster/postmaster.c:2127 -msgid "pg_hba.conf not reloaded" -msgstr "pg_hba.conf não foi recarregado" +#: tcop/fastpath.c:411 tcop/postgres.c:1089 tcop/postgres.c:1376 +#: tcop/postgres.c:1793 tcop/postgres.c:2010 +#, c-format +msgid "duration: %s ms" +msgstr "duração: %s ms" -#: postmaster/postmaster.c:2170 -msgid "received smart shutdown request" -msgstr "pedido de desligamento inteligente foi recebido" +#: tcop/fastpath.c:415 +#, c-format +msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" +msgstr "duração: %s ms chamada de função fastpath: \"%s\" (OID %u)" -#: postmaster/postmaster.c:2217 -msgid "received fast shutdown request" -msgstr "pedido de desligamento rápido foi recebido" +#: tcop/fastpath.c:453 tcop/fastpath.c:580 +#, 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" -#: postmaster/postmaster.c:2235 -msgid "aborting any active transactions" -msgstr "interrompendo quaisquer transações ativas" +#: tcop/fastpath.c:461 +#, 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" -#: postmaster/postmaster.c:2264 -msgid "received immediate shutdown request" -msgstr "pedido de desligamento imediato foi recebido" +#: tcop/fastpath.c:548 tcop/fastpath.c:631 +#, c-format +msgid "incorrect binary data format in function argument %d" +msgstr "formato de dado binário incorreto no argumento %d da função" -#: postmaster/postmaster.c:2340 postmaster/postmaster.c:2368 -msgid "startup process" -msgstr "processo de inicialização" +#. 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 "não pode executar %s em uma transação somente leitura" -#: postmaster/postmaster.c:2343 -msgid "aborting startup due to startup process failure" -msgstr "interrompendo inicialização porque o processo de inicialização falhou" +#. translator: %s is name of a SQL command, eg CREATE +#: tcop/utility.c:272 +#, c-format +msgid "cannot execute %s during recovery" +msgstr "não pode executar %s durante recuperação" -#: postmaster/postmaster.c:2402 -msgid "database system is ready to accept connections" -msgstr "sistema de banco de dados está pronto para aceitar conexões" +#. translator: %s is name of a SQL command, eg PREPARE +#: tcop/utility.c:290 +#, c-format +msgid "cannot execute %s within security-restricted operation" +msgstr "não pode executar %s em operação com restrição de segurança" -#: postmaster/postmaster.c:2457 -msgid "background writer process" -msgstr "processo escritor em segundo plano" +#: tcop/utility.c:1228 +msgid "must be superuser to do CHECKPOINT" +msgstr "deve ser super-usuário para fazer CHECKPOINT" -#: postmaster/postmaster.c:2473 -msgid "WAL writer process" -msgstr "processo escritor do WAL" +#: tcop/postgres.c:401 tcop/postgres.c:413 tcop/postgres.c:424 +#: tcop/postgres.c:436 tcop/postgres.c:4194 +#, c-format +msgid "invalid frontend message type %d" +msgstr "tipo de mensagem do cliente %d é inválido" -#: postmaster/postmaster.c:2487 -#, fuzzy -msgid "WAL receiver process" -msgstr "processo receptor do WAL" +#: tcop/postgres.c:860 +#, c-format +msgid "statement: %s" +msgstr "comando: %s" -#: postmaster/postmaster.c:2502 -msgid "autovacuum launcher process" -msgstr "processo inicializador do autovacuum" +#: tcop/postgres.c:1094 +#, c-format +msgid "duration: %s ms statement: %s" +msgstr "duração: %s ms comando: %s" -#: postmaster/postmaster.c:2517 -msgid "archiver process" -msgstr "processo arquivador" +#: tcop/postgres.c:1144 +#, c-format +msgid "parse %s: %s" +msgstr "análise de %s: %s" -#: postmaster/postmaster.c:2533 -msgid "statistics collector process" -msgstr "processo coletor de estatísticas" +#: tcop/postgres.c:1202 +msgid "cannot insert multiple commands into a prepared statement" +msgstr "não pode inserir múltiplos comandos no comando preparado" -#: postmaster/postmaster.c:2547 -msgid "system logger process" -msgstr "processo de relato do sistema (system logger)" +#: tcop/postgres.c:1381 +#, c-format +msgid "duration: %s ms parse %s: %s" +msgstr "duração: %s ms análise de %s: %s" -#: postmaster/postmaster.c:2582 postmaster/postmaster.c:2592 -#: postmaster/postmaster.c:2610 -msgid "server process" -msgstr "processo servidor" +#: tcop/postgres.c:1427 +#, c-format +msgid "bind %s to %s" +msgstr "ligação de %s para %s" -#: postmaster/postmaster.c:2646 -msgid "terminating any other active server processes" -msgstr "terminando quaisquer outros processos servidor ativos" +#: tcop/postgres.c:1446 tcop/postgres.c:2300 +msgid "unnamed prepared statement does not exist" +msgstr "comando preparado sem nome não existe" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2811 +#: tcop/postgres.c:1488 #, c-format -msgid "%s (PID %d) exited with exit code %d" -msgstr "%s (PID %d) terminou com código de retorno %d" +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" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2820 +#: tcop/postgres.c:1494 #, c-format -msgid "%s (PID %d) was terminated by exception 0x%X" -msgstr "%s (PID %d) foi terminado pela exceção 0x%X" - -#: postmaster/postmaster.c:2822 postmaster/pgarch.c:579 msgid "" -"See C include file \"ntstatus.h\" for a description of the hexadecimal value." +"bind message supplies %d parameters, but prepared statement \"%s\" requires " +"%d" msgstr "" -"Veja o arquivo de cabeçalho C \"ntstatus.h\" para obter uma descrição do " -"valor hexadecimal." +"mensagem de ligação forneceu %d parâmetros, mas comando preparado \"%s\" " +"requer %d" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2829 +#: tcop/postgres.c:1659 #, c-format -msgid "%s (PID %d) was terminated by signal %d: %s" -msgstr "%s (PID %d) foi terminado pelo sinal %d: %s" +msgid "incorrect binary data format in bind parameter %d" +msgstr "formato de dado binário incorreto no parâmetro de ligação %d" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2839 +#: tcop/postgres.c:1798 #, c-format -msgid "%s (PID %d) was terminated by signal %d" -msgstr "%s (PID %d) foi terminado pelo sinal %d" +msgid "duration: %s ms bind %s%s%s: %s" +msgstr "duração: %s ms ligação %s%s%s: %s" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2848 +#: tcop/postgres.c:1846 tcop/postgres.c:2387 #, c-format -msgid "%s (PID %d) exited with unrecognized status %d" -msgstr "%s (PID %d) terminou com status desconhecido %d" - -#: postmaster/postmaster.c:3028 -msgid "abnormal database system shutdown" -msgstr "desligamento anormal do sistema de banco de dados" +msgid "portal \"%s\" does not exist" +msgstr "portal \"%s\" não existe" -#: postmaster/postmaster.c:3066 -msgid "all server processes terminated; reinitializing" -msgstr "todos os processos servidor foram terminados; reinicializando" +#: tcop/postgres.c:1933 tcop/postgres.c:2018 +msgid "execute fetch from" +msgstr "executar busca de" -#: postmaster/postmaster.c:3238 -#, 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:3280 -msgid "could not fork new process for connection: " -msgstr "não pôde criar novo processo para conexão: " +#: tcop/postgres.c:1934 tcop/postgres.c:2019 +msgid "execute" +msgstr "executar" -#: postmaster/postmaster.c:3394 +#: tcop/postgres.c:1931 #, c-format -msgid "connection received: host=%s port=%s" -msgstr "conexão recebida: host=%s porta=%s" +msgid "%s %s%s%s: %s" +msgstr "%s %s%s%s: %s" -#: postmaster/postmaster.c:3399 +#: tcop/postgres.c:2015 #, c-format -msgid "connection received: host=%s" -msgstr "conexão recebida: host=%s" +msgid "duration: %s ms %s %s%s%s: %s" +msgstr "duração: %s ms %s %s%s%s: %s" -#: postmaster/postmaster.c:3627 access/transam/xlog.c:2323 -#: access/transam/xlog.c:2456 access/transam/xlog.c:4286 -#: access/transam/xlog.c:8443 access/transam/xlog.c:8598 -#: storage/file/copydir.c:172 storage/smgr/md.c:278 +#: tcop/postgres.c:2141 #, c-format -msgid "could not create file \"%s\": %m" -msgstr "não pôde criar arquivo \"%s\": %m" +msgid "prepare: %s" +msgstr "preparado: %s" -#: postmaster/postmaster.c:3666 +#: tcop/postgres.c:2204 #, c-format -msgid "could not execute server process \"%s\": %m" -msgstr "não pôde executar processo servidor \"%s\": %m" +msgid "parameters: %s" +msgstr "parâmetros: %s" -#: postmaster/postmaster.c:4179 -msgid "database system is ready to accept read only connections" -msgstr "" -"sistema de banco de dados está pronto para aceitar conexões somente leitura" +#: tcop/postgres.c:2223 +msgid "abort reason: recovery conflict" +msgstr "razão da interrupção: conflito de recuperação" -#: postmaster/postmaster.c:4420 -#, c-format -msgid "could not fork startup process: %m" -msgstr "não pôde criar processo de inicialização: %m" +#: tcop/postgres.c:2239 +msgid "User was holding shared buffer pin for too long." +msgstr "" +"Usuário estava mantendo um buffer compartilhado na cache por muito tempo." -#: postmaster/postmaster.c:4424 -#, c-format -msgid "could not fork background writer process: %m" -msgstr "não pôde criar processo escritor em segundo plano: %m" +#: tcop/postgres.c:2242 +msgid "User was holding a relation lock for too long." +msgstr "Usuário estava mantendo um travamento de relação por muito tempo." -#: postmaster/postmaster.c:4428 -#, c-format -msgid "could not fork WAL writer process: %m" -msgstr "não pôde criar processo escritor do WAL: %m" +#: tcop/postgres.c:2245 +msgid "User was or might have been using tablespace that must be dropped." +msgstr "Usuário estava ou pode estar usando tablespace que deve ser removida." -#: postmaster/postmaster.c:4432 -#, fuzzy, c-format -msgid "could not fork WAL receiver process: %m" -msgstr "não pôde criar processo receptor do WAL: %m" +#: tcop/postgres.c:2248 +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." -#: postmaster/postmaster.c:4436 -#, c-format -msgid "could not fork process: %m" -msgstr "não pôde criar processo: %m" +#: tcop/postgres.c:2251 storage/ipc/standby.c:498 +msgid "User transaction caused buffer deadlock with recovery." +msgstr "Transação do usuário causou impasse com a recuperação." -#: postmaster/postmaster.c:4718 -#, 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" +#: tcop/postgres.c:2254 +msgid "User was connected to a database that must be dropped." +msgstr "Usuário estava conectado ao banco de dados que deve ser removido." -#: postmaster/postmaster.c:4750 -#, 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" +#: tcop/postgres.c:2595 +msgid "terminating connection because of crash of another server process" +msgstr "" +"finalizando conexão por causa de uma queda de um outro processo servidor" -#: postmaster/postmaster.c:4779 postmaster/postmaster.c:4786 -#, 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" +#: tcop/postgres.c:2596 +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." -#: postmaster/postmaster.c:4795 -#, c-format -msgid "could not remove file \"%s\": %s\n" -msgstr "não pôde remover arquivo \"%s\": %s\n" +#: tcop/postgres.c:2600 tcop/postgres.c:2950 +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." -#: postmaster/postmaster.c:4808 -#, c-format -msgid "could not map view of backend variables: error code %d\n" -msgstr "não pôde mapear visão de variáveis do servidor: código de erro %d\n" +#: tcop/postgres.c:2712 +msgid "floating-point exception" +msgstr "exceção de ponto flutuante" -#: postmaster/postmaster.c:4817 -#, c-format -msgid "could not unmap view of backend variables: error code %d\n" -msgstr "não pôde liberar visão de variáveis do servidor: código de erro %d\n" +#: tcop/postgres.c:2713 +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." -#: postmaster/postmaster.c:4824 -#, c-format -msgid "could not close handle to backend parameter variables: error code %d\n" +#: tcop/postgres.c:2881 +msgid "terminating autovacuum process due to administrator command" msgstr "" -"não pôde fechar manipulador das variáveis do servidor: código de erro %d\n" +"terminando processo de limpeza automática por causa de um comando do " +"administrador" -#: postmaster/postmaster.c:4967 -msgid "could not read exit code for process\n" -msgstr "não pôde ler código de retorno para processo\n" +#: tcop/postgres.c:2887 tcop/postgres.c:2897 tcop/postgres.c:2948 +msgid "terminating connection due to conflict with recovery" +msgstr "terminando conexão por causa de um conflito com recuperação" -#: postmaster/postmaster.c:4972 -msgid "could not post child completion status\n" -msgstr "não pôde publicar status de conclusão do processo filho\n" +#: tcop/postgres.c:2903 +msgid "terminating connection due to administrator command" +msgstr "terminando conexão por causa de um comando do administrador" -#: postmaster/pgarch.c:158 -#, c-format -msgid "could not fork archiver: %m" -msgstr "não pôde criar processo arquivador: %m" +#: tcop/postgres.c:2918 +msgid "canceling authentication due to timeout" +msgstr "cancelando autenticação por causa do tempo de espera (timeout)" -#: postmaster/pgarch.c:450 -msgid "archive_mode enabled, yet archive_command is not set" -msgstr "archive_mode habilitado, mas archive_command não está definido" +#: tcop/postgres.c:2927 +msgid "canceling statement due to statement timeout" +msgstr "cancelando comando por causa do tempo de espera (timeout) do comando" -#: postmaster/pgarch.c:465 -#, c-format -msgid "transaction log file \"%s\" could not be archived: too many failures" -msgstr "" -"arquivo do log de transação \"%s\" não pôde ser arquivado: muitas falhas" +#: tcop/postgres.c:2936 +msgid "canceling autovacuum task" +msgstr "cancelando tarefa de limpeza automática" -#: postmaster/pgarch.c:568 -#, c-format -msgid "archive command failed with exit code %d" -msgstr "comando de arquivamento falhou com código de retorno %d" +#: tcop/postgres.c:2955 storage/ipc/standby.c:497 +msgid "canceling statement due to conflict with recovery" +msgstr "cancelando comando por causa de um conflito com recuperação" -#: 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 "O comando de arquivamento que falhou foi: %s" +#: tcop/postgres.c:2971 +msgid "canceling statement due to user request" +msgstr "cancelando comando por causa de um pedido do usuário" -#: postmaster/pgarch.c:577 -#, c-format -msgid "archive command was terminated by exception 0x%X" -msgstr "comando de arquivamento foi terminado pela exceção 0x%X" +#: tcop/postgres.c:3099 tcop/postgres.c:3121 +msgid "stack depth limit exceeded" +msgstr "limite da profundidade da pilha foi excedido" -#: postmaster/pgarch.c:584 +#: tcop/postgres.c:3100 tcop/postgres.c:3122 #, c-format -msgid "archive command was terminated by signal %d: %s" -msgstr "comando de arquivamento foi terminado pelo sinal %d: %s" +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." -#: postmaster/pgarch.c:591 +#: tcop/postgres.c:3138 #, c-format -msgid "archive command was terminated by signal %d" -msgstr "comando de arquivamento foi terminado pelo sinal %d" +msgid "\"max_stack_depth\" must not exceed %ldkB." +msgstr "\"max_stack_depth\" não deve exceder %ldkB." -#: postmaster/pgarch.c:600 -#, c-format -msgid "archive command exited with unrecognized status %d" -msgstr "comando de arquivamento terminou com status desconhecido %d" +#: tcop/postgres.c:3140 +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." -#: postmaster/pgarch.c:612 -#, c-format -msgid "archived transaction log file \"%s\"" -msgstr "arquivo do log de transação \"%s\" foi arquivado" +#: tcop/postgres.c:3481 +msgid "invalid command-line arguments for server process" +msgstr "argumentos de linha de comando são inválidos para processo servidor" -#: postmaster/pgarch.c:661 +#: tcop/postgres.c:3482 tcop/postgres.c:3488 #, 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" +msgid "Try \"%s --help\" for more information." +msgstr "Tente \"%s --help\" para obter informações adicionais." -#: postmaster/pgarch.c:715 access/transam/xlog.c:4429 -#: access/transam/xlog.c:5378 access/transam/xlog.c:5431 -#: access/transam/xlog.c:6007 +#: tcop/postgres.c:3486 #, c-format -msgid "could not rename file \"%s\" to \"%s\": %m" -msgstr "não pôde renomear arquivo \"%s\" para \"%s\": %m" +msgid "%s: invalid command-line arguments" +msgstr "%s: argumentos de linha de comando são inválidos" -#: access/heap/heapam.c:1076 access/heap/heapam.c:1104 -#: access/heap/heapam.c:1134 catalog/aclchk.c:1714 +#: tcop/postgres.c:3565 #, c-format -msgid "\"%s\" is an index" -msgstr "\"%s\" é um índice" +msgid "%s: no database nor user name specified" +msgstr "%s: banco de dados ou nome de usuário não foi especificado" -#: access/heap/heapam.c:1081 access/heap/heapam.c:1109 -#: access/heap/heapam.c:1139 commands/tablecmds.c:2162 -#: commands/tablecmds.c:6528 commands/tablecmds.c:7834 catalog/aclchk.c:1721 +#: tcop/postgres.c:4104 #, c-format -msgid "\"%s\" is a composite type" -msgstr "\"%s\" é um tipo composto" +msgid "invalid CLOSE message subtype %d" +msgstr "subtipo %d de mensagem CLOSE é inválido" -#: access/heap/heapam.c:3149 access/heap/heapam.c:3180 -#: access/heap/heapam.c:3215 +#: tcop/postgres.c:4137 #, 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\"" +msgid "invalid DESCRIBE message subtype %d" +msgstr "subtipo %d de mensagem DESCRIBE é inválido" -#: access/heap/rewriteheap.c:592 access/heap/hio.c:175 +#: tcop/postgres.c:4371 #, c-format -msgid "row is too big: size %lu, maximum size %lu" -msgstr "registro é muito grande: tamanho %lu, tamanho máximo %lu" +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" -#: access/gist/gistutil.c:407 +#. translator: first %s is inet or cidr +#: utils/adt/network.c:107 utils/adt/datetime.c:3558 #, c-format -msgid "index \"%s\" needs VACUUM or REINDEX to finish crash recovery" -msgstr "" -"índice \"%s\" precisa de um VACUUM ou REINDEX para terminar recuperação de " -"uma queda" +msgid "invalid input syntax for type %s: \"%s\"" +msgstr "sintaxe de entrada é inválida para tipo %s: \"%s\"" -#: access/gist/gistutil.c:588 access/nbtree/nbtpage.c:432 -#: access/hash/hashutil.c:165 +#: utils/adt/network.c:118 #, 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" +msgid "invalid cidr value: \"%s\"" +msgstr "valor de cidr é inválido: \"%s\"" -#: access/gist/gistutil.c:591 access/gist/gistutil.c:602 -#: access/nbtree/nbtpage.c:435 access/nbtree/nbtpage.c:446 -#: access/hash/hashutil.c:168 access/hash/hashutil.c:179 -#: access/hash/hashutil.c:191 access/hash/hashutil.c:212 -msgid "Please REINDEX it." -msgstr "Por favor execute REINDEX." +#: utils/adt/network.c:119 utils/adt/network.c:249 +msgid "Value has bits set to right of mask." +msgstr "Valor tem bits definidos a direita da máscara." -#: access/gist/gistutil.c:599 access/nbtree/nbtpage.c:443 -#: access/hash/hashutil.c:176 access/hash/hashutil.c:188 +#: utils/adt/network.c:160 utils/adt/network.c:614 utils/adt/network.c:639 +#: utils/adt/network.c:664 #, c-format -msgid "index \"%s\" contains corrupted page at block %u" -msgstr "índice \"%s\" contém página corrompida no bloco %u" +msgid "could not format inet value: %m" +msgstr "não pôde formatar valor de inet: %m" -#: access/gist/gistsplit.c:372 +#. translator: %s is inet or cidr +#: utils/adt/network.c:217 #, c-format -msgid "picksplit method for column %d of index \"%s\" failed" -msgstr "método picksplit para coluna %d do índice \"%s\" falhou" - -#: access/gist/gistsplit.c:374 -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 "" -"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." +msgid "invalid address family in external \"%s\" value" +msgstr "família de endereços inválida no valor de \"%s\" externo" -#: access/gist/gistvacuum.c:72 +#. translator: %s is inet or cidr +#: utils/adt/network.c:224 #, c-format -msgid "index \"%s\" needs VACUUM FULL or REINDEX to finish crash recovery" -msgstr "" -"índice \"%s\" precisa de um VACUUM FULL ou REINDEX para terminar recuperação " -"de uma queda" +msgid "invalid bits in external \"%s\" value" +msgstr "bits inválidos no valor de \"%s\" externo" -#: access/gist/gistxlog.c:803 +#. translator: %s is inet or cidr +#: utils/adt/network.c:233 #, c-format -msgid "index %u/%u/%u needs VACUUM FULL or REINDEX to finish crash recovery" -msgstr "" -"índice %u/%u/%u precisa de um VACUUM FULL OU REINDEX para terminar " -"recuperação de uma queda" +msgid "invalid length in external \"%s\" value" +msgstr "tamanho inválido no valor de \"%s\" externo" -#: access/gist/gistxlog.c:805 -msgid "Incomplete insertion detected during crash replay." -msgstr "Inserção incompleta detectada durante recuperação de uma queda." +#: utils/adt/network.c:248 +msgid "invalid external \"cidr\" value" +msgstr "valor de \"cidr\" externo é inválido" -#: access/index/indexam.c:149 commands/indexcmds.c:1595 -#: commands/tablecmds.c:212 commands/tablecmds.c:2357 commands/comment.c:559 +#: utils/adt/network.c:370 utils/adt/network.c:397 #, c-format -msgid "\"%s\" is not an index" -msgstr "\"%s\" não é um índice" +msgid "invalid mask length: %d" +msgstr "tamanho de máscara é inválido: %d" -#: access/common/heaptuple.c:646 access/common/heaptuple.c:1398 +#: utils/adt/network.c:682 #, c-format -msgid "number of columns (%d) exceeds limit (%d)" -msgstr "número de colunas (%d) excede limite (%d)" +msgid "could not format cidr value: %m" +msgstr "não pôde formatar valor de cidr: %m" -#: access/common/reloptions.c:323 -msgid "user-defined relation parameter types limit exceeded" -msgstr "" -"limite dos tipos de parâmetro da relação definidos pelo usuário foi excedido" +#: utils/adt/network.c:1255 +msgid "cannot AND inet values of different sizes" +msgstr "não pode executar E em valores inet de tamanhos diferentes" -#: access/common/reloptions.c:622 -msgid "RESET must not include values for parameters" -msgstr "RESET não deve incluir valores para parâmetros" +#: utils/adt/network.c:1287 +msgid "cannot OR inet values of different sizes" +msgstr "não pode executar OU em valores inet de tamanhos diferentes" -#: access/common/reloptions.c:655 -#, c-format -msgid "unrecognized parameter namespace \"%s\"" -msgstr "namespace do parâmetro \"%s\" desconhecido" +#: utils/adt/network.c:1348 utils/adt/network.c:1424 +msgid "result is out of range" +msgstr "resultado está fora do intervalo" -#: access/common/reloptions.c:895 -#, c-format -msgid "unrecognized parameter \"%s\"" -msgstr "parâmetro \"%s\" desconhecido" +#: utils/adt/network.c:1389 +msgid "cannot subtract inet values of different sizes" +msgstr "não pode subtrair valores inet de tamanhos diferentes" -#: access/common/reloptions.c:920 +#: utils/adt/ascii.c:75 #, c-format -msgid "parameter \"%s\" specified more than once" -msgstr "parâmetro \"%s\" foi especificado mais de uma vez" +msgid "encoding conversion from %s to ASCII not supported" +msgstr "conversão de codificação de %s para ASCII não é suportada" -#: access/common/reloptions.c:935 +#: utils/adt/dbsize.c:105 utils/adt/dbsize.c:189 #, c-format -msgid "invalid value for boolean option \"%s\": %s" -msgstr "valor é inválido para opção booleano \"%s\": %s" +msgid "could not open tablespace directory \"%s\": %m" +msgstr "não pôde abrir diretório da tablespace \"%s\": %m" -#: access/common/reloptions.c:946 -#, c-format -msgid "invalid value for integer option \"%s\": %s" -msgstr "valor é inválido para opção inteiro \"%s\": %s" +#: utils/adt/tsgistidx.c:100 +msgid "gtsvector_in not implemented" +msgstr "gtsvector_in não está implementado" -#: access/common/reloptions.c:951 access/common/reloptions.c:969 -#, c-format -msgid "value %s out of bounds for option \"%s\"" -msgstr "valor %s está fora do intervalo para opção \"%s\"" +#: utils/adt/tsquery_util.c:341 utils/adt/tsquery.c:523 +msgid "tsquery is too large" +msgstr "tsquery é muito grande" + +#: 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:2886 +msgid "MATCH PARTIAL not yet implemented" +msgstr "MATCH PARTIAL ainda não foi implementado" -#: access/common/reloptions.c:953 +#: utils/adt/ri_triggers.c:409 utils/adt/ri_triggers.c:2841 +#: utils/adt/ri_triggers.c:3535 utils/adt/ri_triggers.c:3567 #, c-format -msgid "Valid values are between \"%d\" and \"%d\"." -msgstr "Valores válidos estão entre \"%d\" e \"%d\"." +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\"" -#: access/common/reloptions.c:964 -#, c-format -msgid "invalid value for floating point option \"%s\": %s" -msgstr "valor é inválido para opção ponto flutuante \"%s\": %s" +#: utils/adt/ri_triggers.c:412 utils/adt/ri_triggers.c:2844 +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." -#: access/common/reloptions.c:971 +#: utils/adt/ri_triggers.c:3097 #, c-format -msgid "Valid values are between \"%f\" and \"%f\"." -msgstr "Valores válidos estão entre \"%f\" e \"%f\"." +msgid "function \"%s\" must be fired for INSERT" +msgstr "função \"%s\" deve ser disparada pelo INSERT" -#: access/common/indextuple.c:57 +#: utils/adt/ri_triggers.c:3103 #, c-format -msgid "number of index columns (%d) exceeds limit (%d)" -msgstr "número de colunas indexadas (%d) excede limite (%d)" +msgid "function \"%s\" must be fired for UPDATE" +msgstr "função \"%s\" deve ser disparada pelo UPDATE" -#: access/common/indextuple.c:168 +#: utils/adt/ri_triggers.c:3117 #, c-format -msgid "index row requires %lu bytes, maximum size is %lu" -msgstr "registro do índice requer %lu bytes, tamanho máximo é %lu" +msgid "function \"%s\" must be fired for DELETE" +msgstr "função \"%s\" deve ser disparada pelo DELETE" -#: access/common/tupconvert.c:107 +#: utils/adt/ri_triggers.c:3146 #, c-format -msgid "Returned type %s does not match expected type %s in column %d." -msgstr "Tipo %s retornado não corresponde ao tipo %s esperado na coluna %d." +msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\"" +msgstr "nenhuma entrada em pg_constraint para gatilho \"%s\" na tabela \"%s\"" -#: access/common/tupconvert.c:135 -#, c-format +#: utils/adt/ri_triggers.c:3148 msgid "" -"Number of returned columns (%d) does not match expected column count (%d)." +"Remove this referential integrity trigger and its mates, then do ALTER TABLE " +"ADD CONSTRAINT." msgstr "" -"Número de colunas retornadas (%d) não corresponde a contagem de colunas " -"esperada (%d)" +"Remova este gatilho de integridade referencial e seus pares, então faça " +"ALTER TABLE ADD CONSTRAINT." -#: access/common/tupconvert.c:240 +#: utils/adt/ri_triggers.c:3502 #, c-format msgid "" -"Attribute \"%s\" of type %s does not match corresponding attribute of type " -"%s." -msgstr "Atributo \"%s\" do tipo %s não corresponde ao atributo do tipo %s." - -#: access/common/tupconvert.c:252 -#, c-format -msgid "Attribute \"%s\" of type %s does not exist in type %s." -msgstr "Atributo \"%s\" do tipo %s não existe no tipo %s." +"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" -#: access/gin/ginscan.c:168 access/gin/ginscan.c:231 -msgid "GIN indexes do not support whole-index scans" -msgstr "índices GIN não suportam buscas em todo índice" +#: utils/adt/ri_triggers.c:3506 +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." -#: access/gin/ginentrypage.c:83 access/gin/ginentrypage.c:118 -#: access/nbtree/nbtsort.c:483 access/nbtree/nbtinsert.c:522 +#: utils/adt/ri_triggers.c:3537 #, 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 "No rows were found in \"%s\"." +msgstr "Nenhum registro foi encontrado em \"%s\"." -#: access/gin/ginarrayproc.c:30 -msgid "array must not contain null values" -msgstr "matriz não deve conter valores nulos" +#: utils/adt/ri_triggers.c:3569 +#, c-format +msgid "Key (%s)=(%s) is not present in table \"%s\"." +msgstr "Chave (%s)=(%s) não está presente na tabela \"%s\"." -#: access/nbtree/nbtsort.c:487 access/nbtree/nbtinsert.c:526 +#: utils/adt/ri_triggers.c:3575 +#, 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." +"update or delete on table \"%s\" violates foreign key constraint \"%s\" on " +"table \"%s\"" 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." +"atualização ou exclusão em tabela \"%s\" viola restrição de chave " +"estrangeira \"%s\" em \"%s\"" -#: access/nbtree/nbtinsert.c:384 +#: utils/adt/ri_triggers.c:3578 #, c-format -msgid "duplicate key value violates unique constraint \"%s\"" -msgstr "duplicar valor da chave viola a restrição de unicidade \"%s\"" +msgid "Key (%s)=(%s) is still referenced from table \"%s\"." +msgstr "Chave (%s)=(%s) ainda é referenciada pela tabela \"%s\"." -#: access/nbtree/nbtinsert.c:386 -#, c-format -msgid "Key %s already exists." -msgstr "Chave %s já existe." +#: utils/adt/acl.c:166 utils/adt/name.c:91 +msgid "identifier too long" +msgstr "identificador muito longo" -#: access/nbtree/nbtpage.c:160 access/nbtree/nbtpage.c:364 +#: utils/adt/acl.c:167 utils/adt/name.c:92 #, c-format -msgid "index \"%s\" is not a btree" -msgstr "índice \"%s\" não é uma árvore B" +msgid "Identifier must be less than %d characters." +msgstr "Identificador deve ter pelo menos %d caracteres." -#: access/nbtree/nbtpage.c:166 access/nbtree/nbtpage.c:370 +#: utils/adt/acl.c:253 #, 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" +msgid "unrecognized key word: \"%s\"" +msgstr "palavra chave desconhecida: \"%s\"" -#: access/transam/xact.c:716 -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" +#: utils/adt/acl.c:254 +msgid "ACL key word must be \"group\" or \"user\"." +msgstr "palavra chave ACL deve ser \"group\" ou \"user\"." -#: access/transam/xact.c:1236 -#, c-format -msgid "maximum number of committed subtransactions (%d) exceeded" -msgstr "número máximo de subtransações efetivadas (%d) foi alcançado" +#: utils/adt/acl.c:259 +msgid "missing name" +msgstr "faltando nome" -#: access/transam/xact.c:1993 -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" +#: utils/adt/acl.c:260 +msgid "A name must follow the \"group\" or \"user\" key word." +msgstr "Um nome deve seguir a palavra chave \"group\" ou \"user\"." -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2782 -#, c-format -msgid "%s cannot run inside a transaction block" -msgstr "%s não pode executar dentro de um bloco de transação" +#: utils/adt/acl.c:266 +msgid "missing \"=\" sign" +msgstr "faltando sinal \"=\"" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2792 +#: utils/adt/acl.c:319 #, c-format -msgid "%s cannot run inside a subtransaction" -msgstr "%s não pode executar dentro de uma subtransação" +msgid "invalid mode character: must be one of \"%s\"" +msgstr "caracter de modo é inválido: deve ser um dos \"%s\"" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2802 -#, 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" +#: utils/adt/acl.c:341 +msgid "a name must follow the \"/\" sign" +msgstr "um nome deve seguir o sinal \"/\"" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2853 +#: utils/adt/acl.c:349 #, c-format -msgid "%s can only be used in transaction blocks" -msgstr "%s só pode ser utilizado em blocos de transação" +msgid "defaulting grantor to user ID %u" +msgstr "utilizando ID de usuário %u como concedente" -#: access/transam/xact.c:3035 -msgid "there is already a transaction in progress" -msgstr "há uma transação em execução" +#: utils/adt/acl.c:540 +msgid "ACL array contains wrong data type" +msgstr "matriz ACL contém tipo de dado incorreto" -#: access/transam/xact.c:3202 access/transam/xact.c:3294 -msgid "there is no transaction in progress" -msgstr "não há uma transação em execução" +#: utils/adt/acl.c:544 +msgid "ACL arrays must be one-dimensional" +msgstr "matrizes ACL devem ser de uma dimensão" -#: access/transam/xact.c:3388 access/transam/xact.c:3438 -#: access/transam/xact.c:3444 access/transam/xact.c:3488 -#: access/transam/xact.c:3536 access/transam/xact.c:3542 -msgid "no such savepoint" -msgstr "ponto de salvamento inexistente" +#: utils/adt/acl.c:548 +msgid "ACL arrays must not contain null values" +msgstr "matrizes ACL não devem conter valores nulos" -#: access/transam/xact.c:4172 -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" +#: utils/adt/acl.c:572 +msgid "extra garbage at the end of the ACL specification" +msgstr "lixo extra ao final da especificação de uma ACL" -#: access/transam/twophase.c:247 -#, c-format -msgid "transaction identifier \"%s\" is too long" -msgstr "identificador de transação \"%s\" é muito longo" +#: utils/adt/acl.c:1129 +msgid "grant options cannot be granted back to your own grantor" +msgstr "opções de concessão não podem ser concedidos ao próprio concedente" -#: access/transam/twophase.c:254 -msgid "prepared transactions are disabled" -msgstr "transações preparadas estão desabilitadas" +#: utils/adt/acl.c:1190 +msgid "dependent privileges exist" +msgstr "privilégios dependentes existem" -#: access/transam/twophase.c:255 -msgid "Set max_prepared_transactions to a nonzero value." -msgstr "Defina max_prepared_transactions para um valor diferente de zero." +#: utils/adt/acl.c:1191 +msgid "Use CASCADE to revoke them too." +msgstr "Utilize CASCADE para revogá-los também." -#: access/transam/twophase.c:288 -#, c-format -msgid "transaction identifier \"%s\" is already in use" -msgstr "identificador de transação \"%s\" já está em uso" +#: utils/adt/acl.c:1470 +msgid "aclinsert is no longer supported" +msgstr "aclinsert não é mais suportado" -#: access/transam/twophase.c:297 -msgid "maximum number of prepared transactions reached" -msgstr "número máximo de transações preparadas foi alcançado" +#: utils/adt/acl.c:1480 +msgid "aclremove is no longer supported" +msgstr "aclremove não é mais suportado" -#: access/transam/twophase.c:298 +#: utils/adt/acl.c:1566 utils/adt/acl.c:1620 #, c-format -msgid "Increase max_prepared_transactions (currently %d)." -msgstr "Aumente max_prepared_transactions (atualmente %d)." +msgid "unrecognized privilege type: \"%s\"" +msgstr "tipo de privilégio desconhecido: \"%s\"" -#: access/transam/twophase.c:418 +#: utils/adt/acl.c:3359 utils/adt/regproc.c:118 utils/adt/regproc.c:139 +#: utils/adt/regproc.c:289 #, c-format -msgid "prepared transaction with identifier \"%s\" is busy" -msgstr "transação preparada com identificador \"%s\" está sendo utilizada" - -#: access/transam/twophase.c:426 -msgid "permission denied to finish prepared transaction" -msgstr "permissão negada ao finalizar transação preparada" +msgid "function \"%s\" does not exist" +msgstr "função \"%s\" não existe" -#: access/transam/twophase.c:427 -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." +#: utils/adt/acl.c:4613 +#, c-format +msgid "must be member of role \"%s\"" +msgstr "deve ser membro da role \"%s\"" -#: access/transam/twophase.c:438 -msgid "prepared transaction belongs to another database" -msgstr "transação preparada pertence a outro banco de dados" +#: utils/adt/datetime.c:928 utils/adt/datetime.c:1657 utils/adt/date.c:2631 +#: utils/adt/timestamp.c:4453 utils/adt/timestamp.c:4626 +#, c-format +msgid "time zone \"%s\" not recognized" +msgstr "zona horária \"%s\" é desconhecida" -#: access/transam/twophase.c:439 -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." +#: utils/adt/datetime.c:1186 utils/adt/datetime.c:1928 utils/adt/date.c:142 +msgid "date/time value \"current\" is no longer supported" +msgstr "valor de data/hora \"current\" não é mais suportado" -#: access/transam/twophase.c:453 +#: utils/adt/datetime.c:3531 utils/adt/datetime.c:3538 #, c-format -msgid "prepared transaction with identifier \"%s\" does not exist" -msgstr "transação preparada com identificador \"%s\" não existe" +msgid "date/time field value out of range: \"%s\"" +msgstr "valor do campo date/time está fora do intervalo: \"%s\"" -#: access/transam/twophase.c:936 -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" +#: utils/adt/datetime.c:3540 +msgid "Perhaps you need a different \"datestyle\" setting." +msgstr "Talvez você necessite de uma definição diferente para \"datestyle\"." -#: access/transam/twophase.c:954 +#: utils/adt/datetime.c:3545 #, 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:968 access/transam/twophase.c:985 -#: access/transam/twophase.c:1034 access/transam/twophase.c:1445 -#: access/transam/twophase.c:1452 -#, 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" +msgid "interval field value out of range: \"%s\"" +msgstr "valor do campo interval fora do intervalo: \"%s\"" -#: access/transam/twophase.c:994 +#: utils/adt/datetime.c:3551 #, c-format -msgid "could not seek in two-phase state file: %m" -msgstr "não pôde buscar no arquivo de status de efetivação em duas fases: %m" +msgid "time zone displacement out of range: \"%s\"" +msgstr "deslocamento de zona horária fora do intervalo: \"%s\"" -#: access/transam/twophase.c:1040 access/transam/twophase.c:1470 +#: 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 "could not close two-phase state file: %m" -msgstr "não pôde fechar arquivo de status de efetivação em duas fases: %m" +msgid "invalid input syntax for type numeric: \"%s\"" +msgstr "sintaxe de entrada é inválida para tipo numeric: \"%s\"" -#: access/transam/twophase.c:1112 access/transam/twophase.c:1550 -#, 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" +#: utils/adt/numeric.c:653 +msgid "invalid length in external \"numeric\" value" +msgstr "tamanho inválido no valor de \"numeric\" externo" -#: access/transam/twophase.c:1129 -#, 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" +#: utils/adt/numeric.c:664 +msgid "invalid sign in external \"numeric\" value" +msgstr "sinal inválido no valor de \"numeric\" externo" -#: access/transam/twophase.c:1161 -#, 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" +#: utils/adt/numeric.c:674 +msgid "invalid digit in external \"numeric\" value" +msgstr "dígito inválido no valor de \"numeric\" externo" -#: access/transam/twophase.c:1253 +#: utils/adt/numeric.c:814 utils/adt/numeric.c:828 #, 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" +msgid "NUMERIC precision %d must be between 1 and %d" +msgstr "precisão do NUMERIC %d deve ser entre 1 e %d" -#: access/transam/twophase.c:1407 +#: utils/adt/numeric.c:819 #, 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" +msgid "NUMERIC scale %d must be between 0 and precision %d" +msgstr "escala do NUMERIC %d deve ser entre 0 e precisão %d" -#: access/transam/twophase.c:1436 -#, 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" +#: utils/adt/numeric.c:837 +msgid "invalid NUMERIC type modifier" +msgstr "modificador de tipo NUMERIC é inválido" -#: access/transam/twophase.c:1464 -#, 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" +#: utils/adt/numeric.c:1171 utils/adt/float.c:2743 +msgid "count must be greater than zero" +msgstr "contador deve ser maior do que zero" -#: access/transam/twophase.c:1559 -#, 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" +#: utils/adt/numeric.c:1178 utils/adt/float.c:2748 +msgid "operand, lower bound and upper bound cannot be NaN" +msgstr "operando, limite inferior e limite superior não podem ser infinitos" -#: access/transam/twophase.c:1566 -#, 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" +#: utils/adt/numeric.c:1191 utils/adt/float.c:2792 +msgid "lower bound cannot equal upper bound" +msgstr "limite inferior não pode ser igual a limite superior" -#: access/transam/twophase.c:1631 -#, c-format -msgid "removing future two-phase state file \"%s\"" -msgstr "removendo arquivo futuro de status de efetivação em duas fases \"%s\"" +#: utils/adt/numeric.c:1881 utils/adt/numeric.c:3754 +msgid "value overflows numeric format" +msgstr "valor excede formato numeric" -#: access/transam/twophase.c:1647 access/transam/twophase.c:1658 -#: access/transam/twophase.c:1771 access/transam/twophase.c:1782 -#: access/transam/twophase.c:1855 -#, c-format -msgid "removing corrupt two-phase state file \"%s\"" +#: utils/adt/numeric.c:2166 utils/adt/float.c:1401 +msgid "zero raised to a negative power is undefined" +msgstr "zero elevado a um número negativo é indefinido" + +#: utils/adt/numeric.c:2172 utils/adt/float.c:1405 +msgid "a negative number raised to a non-integer power yields a complex result" msgstr "" -"removendo arquivo corrompido de status de efetivação em duas fases \"%s\"" +"um número negativo elevado a um número que não é inteiro retorna um " +"resultado complexo" -#: access/transam/twophase.c:1760 access/transam/twophase.c:1844 -#, c-format -msgid "removing stale two-phase state file \"%s\"" -msgstr "removendo arquivo antigo de status de efetivação em duas fases \"%s\"" +#: utils/adt/numeric.c:2229 +msgid "cannot convert NaN to integer" +msgstr "não pode converter NaN para inteiro" -#: access/transam/twophase.c:1862 -#, c-format -msgid "recovering prepared transaction %u" -msgstr "recuperação transação preparada %u" +#: utils/adt/numeric.c:2253 utils/adt/numeric.c:2262 utils/adt/int8.c:1247 +#: utils/adt/varlena.c:950 utils/adt/varlena.c:1968 +#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113 +#: 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/varbit.c:1139 +#: utils/adt/varbit.c:1531 utils/adt/float.c:1157 utils/adt/float.c:1216 +#: utils/adt/float.c:2767 utils/adt/float.c:2783 utils/adt/arrayfuncs.c:1276 +msgid "integer out of range" +msgstr "inteiro fora do intervalo" -#: access/transam/xlog.c:1275 -#, c-format -msgid "could not create archive status file \"%s\": %m" -msgstr "não pôde criar arquivo de status do arquivador \"%s\": %m" +#: utils/adt/numeric.c:2297 +msgid "cannot convert NaN to bigint" +msgstr "não pode converter NaN para bigint" -#: access/transam/xlog.c:1283 -#, 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" +#: utils/adt/numeric.c:2306 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/varbit.c:1611 +msgid "bigint out of range" +msgstr "bigint fora do intervalo" -#: access/transam/xlog.c:1738 access/transam/xlog.c:9581 -#: replication/walsender.c:596 replication/walreceiver.c:479 -#, c-format -msgid "could not seek in log file %u, segment %u to offset %u: %m" -msgstr "não pôde buscar no arquivo de log %u, segmento %u deslocado de %u: %m" +#: utils/adt/numeric.c:2345 +msgid "cannot convert NaN to smallint" +msgstr "não pode converter NaN para smallint" -#: access/transam/xlog.c:1755 replication/walreceiver.c:496 -#, c-format -msgid "could not write to log file %u, segment %u at offset %u, length %lu: %m" -msgstr "" -"não pôde escrever no arquivo de log %u, segmento %u deslocado de %u, tamanho " -"%lu: %m" +#: utils/adt/numeric.c:2354 utils/adt/numeric.c:2365 utils/adt/int8.c:1272 +#: 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/float.c:1175 utils/adt/float.c:1233 +msgid "smallint out of range" +msgstr "smallint fora do intervalo" -#: access/transam/xlog.c:1957 -#, c-format -msgid "updated min recovery point to %X/%X" -msgstr "ponto mínimo de recuperação atualizado para %X/%X" +#: utils/adt/numeric.c:3824 +msgid "numeric field overflow" +msgstr "estouro de campo numeric" -#: access/transam/xlog.c:2298 access/transam/xlog.c:2402 -#: access/transam/xlog.c:2631 access/transam/xlog.c:2702 -#: access/transam/xlog.c:2759 replication/walsender.c:584 +#: utils/adt/numeric.c:3825 #, c-format -msgid "could not open file \"%s\" (log file %u, segment %u): %m" -msgstr "não pôde abrir arquivo \"%s\" (arquivo de log %u, segmento %u): %m" +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." -#: access/transam/xlog.c:2363 access/transam/xlog.c:2495 -#: access/transam/xlog.c:4400 storage/file/copydir.c:269 storage/smgr/md.c:909 -#: storage/smgr/md.c:1083 storage/smgr/md.c:1226 +#: utils/adt/numeric.c:3969 utils/adt/numeric.c:3995 utils/adt/float.c:427 +#: utils/adt/float.c:491 utils/adt/float.c:547 #, c-format -msgid "could not fsync file \"%s\": %m" -msgstr "não pôde executar fsync no arquivo \"%s\": %m" +msgid "invalid input syntax for type double precision: \"%s\"" +msgstr "sintaxe de entrada é inválida para tipo double precision: \"%s\"" -#: access/transam/xlog.c:2368 access/transam/xlog.c:2500 -#: access/transam/xlog.c:4405 storage/file/copydir.c:211 -#, c-format -msgid "could not close file \"%s\": %m" -msgstr "não pôde fechar arquivo \"%s\": %m" +#: utils/adt/numeric.c:4507 utils/adt/numeric.c:4790 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/timestamp.c:2877 +#: utils/adt/geo_ops.c:4148 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/float.c:820 utils/adt/float.c:884 +#: utils/adt/float.c:2526 utils/adt/float.c:2589 utils/adt/cash.c:507 +#: utils/adt/cash.c:557 utils/adt/cash.c:608 utils/adt/cash.c:657 +#: utils/adt/cash.c:709 utils/adt/cash.c:759 +msgid "division by zero" +msgstr "divisão por zero" -#: access/transam/xlog.c:2472 -#, c-format -msgid "not enough data in file \"%s\"" -msgstr "dados insuficientes no arquivo \"%s\"" +#: utils/adt/numeric.c:5183 utils/adt/float.c:1359 +msgid "cannot take square root of a negative number" +msgstr "não pode calcular raiz quadrada de um número negativo" -#: access/transam/xlog.c:2591 -#, c-format -msgid "" -"could not link file \"%s\" to \"%s\" (initialization of log file %u, segment " -"%u): %m" -msgstr "" -"não pôde vincular arquivo \"%s\" aa \"%s\" (inicialização do arquivo de log " -"%u, segmento %u): %m" +#: utils/adt/numeric.c:5273 +msgid "argument for function \"exp\" too big" +msgstr "argumento para função \"exp\" é muito grande" -#: access/transam/xlog.c:2603 -#, c-format -msgid "" -"could not rename file \"%s\" to \"%s\" (initialization of log file %u, " -"segment %u): %m" -msgstr "" -"não pôde renomear arquivo \"%s\" para \"%s\" (inicialização do arquivo de " -"log %u, segmento %u): %m" +#: utils/adt/numeric.c:5401 utils/adt/float.c:1471 utils/adt/float.c:1501 +msgid "cannot take logarithm of zero" +msgstr "não pode calcular logaritmo de zero" -#: access/transam/xlog.c:2786 replication/walreceiver.c:453 -#, c-format -msgid "could not close log file %u, segment %u: %m" -msgstr "não pôde fechar arquivo de log %u, segmento %u: %m" +#: utils/adt/numeric.c:5405 utils/adt/float.c:1475 utils/adt/float.c:1505 +msgid "cannot take logarithm of a negative number" +msgstr "não pode calcular logaritmo de número negativo" -#: access/transam/xlog.c:2866 access/transam/xlog.c:8625 storage/smgr/md.c:348 -#: storage/smgr/md.c:395 storage/smgr/md.c:1192 -#, c-format -msgid "could not remove file \"%s\": %m" -msgstr "não pôde remover arquivo \"%s\": %m" +#: utils/adt/misc.c:80 +msgid "must be superuser to signal other server processes" +msgstr "deve ser super-usuário para sinalizar outros processos servidor" -#: access/transam/xlog.c:3002 +#: utils/adt/misc.c:89 #, c-format -msgid "archive file \"%s\" has wrong size: %lu instead of %lu" -msgstr "" -"arquivo do arquivador \"%s\" tem tamanho incorreto: %lu ao invés de %lu" +msgid "PID %d is not a PostgreSQL server process" +msgstr "PID %d não é um processo servidor do PostgreSQL" -#: access/transam/xlog.c:3011 +#: utils/adt/misc.c:102 storage/lmgr/proc.c:1087 #, c-format -msgid "restored log file \"%s\" from archive" -msgstr "arquivo de log restaurado \"%s\" do arquivador" +msgid "could not send signal to process %d: %m" +msgstr "não pôde enviar sinal para processo %d: %m" -#: access/transam/xlog.c:3061 -#, 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" +#: utils/adt/misc.c:126 +msgid "must be superuser to signal the postmaster" +msgstr "deve ser super-usuário para sinalizar o postmaster" -#: access/transam/xlog.c:3176 +#: utils/adt/misc.c:131 #, c-format -msgid "%s \"%s\": return code %d" -msgstr "%s \"%s\": código retornado %d" +msgid "failed to send signal to postmaster: %m" +msgstr "falhou ao enviar sinal para postmaster: %m" -#: access/transam/xlog.c:3286 access/transam/xlog.c:3469 -#, 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" +#: utils/adt/misc.c:148 +msgid "must be superuser to rotate log files" +msgstr "deve ser super-usuário para rotacionar arquivos de log" -#: access/transam/xlog.c:3340 -#, c-format -msgid "recycled transaction log file \"%s\"" -msgstr "arquivo do log de transação \"%s\" foi reciclado" +#: utils/adt/misc.c:153 +msgid "rotation not possible because log collection not active" +msgstr "rotação não é possível porque coleta de log não está ativa" -#: access/transam/xlog.c:3356 -#, c-format -msgid "removing transaction log file \"%s\"" -msgstr "removendo arquivo do log de transação \"%s\"" +#: utils/adt/misc.c:195 +msgid "global tablespace never has databases" +msgstr "tablespace global nunca teve bancos de dados" -#: access/transam/xlog.c:3379 +#: utils/adt/misc.c:216 #, 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" +msgid "%u is not a tablespace OID" +msgstr "%u não é um OID de tablespace" -#: access/transam/xlog.c:3391 -#, 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" +#: utils/adt/misc.c:352 +msgid "unreserved" +msgstr "sem reserva" -#: access/transam/xlog.c:3429 access/transam/xlog.c:3439 -#, c-format -msgid "required WAL directory \"%s\" does not exist" -msgstr "diretório WAL requerido \"%s\" não existe" +#: utils/adt/misc.c:356 +msgid "unreserved (cannot be function or type name)" +msgstr "sem reserva (não pode ser nome de função ou tipo)" -#: access/transam/xlog.c:3445 -#, c-format -msgid "creating missing WAL directory \"%s\"" -msgstr "criando diretório WAL ausente \"%s\"" +#: utils/adt/misc.c:360 +msgid "reserved (can be function or type name)" +msgstr "reservado (pode ser nome de função ou tipo)" -#: access/transam/xlog.c:3448 -#, c-format -msgid "could not create missing directory \"%s\": %m" -msgstr "não pôde criar diretório ausente \"%s\": %m" +#: utils/adt/misc.c:364 +msgid "reserved" +msgstr "reservado" -#: access/transam/xlog.c:3482 -#, c-format -msgid "removing transaction log backup history file \"%s\"" -msgstr "removendo arquivo de histórico do log de transação \"%s\"" +#: utils/adt/like_match.c:104 utils/adt/like_match.c:164 +msgid "LIKE pattern must not end with escape character" +msgstr "padrão de LIKE não deve terminar com caracter escape" -#: access/transam/xlog.c:3602 -#, c-format -msgid "incorrect hole size in record at %X/%X" -msgstr "tamanho de espaço livre incorreto no registro em %X/%X" +#: utils/adt/like_match.c:289 utils/adt/regexp.c:694 +msgid "invalid escape string" +msgstr "cadeia de caracteres de escape inválida" -#: access/transam/xlog.c:3615 -#, c-format -msgid "incorrect total length in record at %X/%X" -msgstr "tamanho total incorreto no registro em %X/%X" +#: utils/adt/like_match.c:290 utils/adt/regexp.c:695 +msgid "Escape string must be empty or one character." +msgstr "Cadeia de caracteres de escape deve ser vazia ou ter um caracter." -#: access/transam/xlog.c:3628 +#: utils/adt/nabstime.c:160 #, 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 %X/%X" +msgid "invalid time zone name: \"%s\"" +msgstr "nome de zona horária é inválido: \"%s\"" -#: access/transam/xlog.c:3697 access/transam/xlog.c:3733 -#, c-format -msgid "invalid record offset at %X/%X" -msgstr "deslocamento de registro inválido em %X/%X" +#: utils/adt/nabstime.c:480 utils/adt/nabstime.c:523 utils/adt/nabstime.c:553 +#: utils/adt/nabstime.c:596 utils/adt/date.c:913 utils/adt/date.c:960 +#: utils/adt/date.c:1516 utils/adt/date.c:1553 utils/adt/date.c:2426 +#: utils/adt/timestamp.c:226 utils/adt/timestamp.c:269 +#: utils/adt/timestamp.c:491 utils/adt/timestamp.c:531 +#: utils/adt/timestamp.c:2531 utils/adt/timestamp.c:2552 +#: utils/adt/timestamp.c:2565 utils/adt/timestamp.c:2574 +#: utils/adt/timestamp.c:2632 utils/adt/timestamp.c:2655 +#: utils/adt/timestamp.c:2668 utils/adt/timestamp.c:2679 +#: utils/adt/timestamp.c:3115 utils/adt/timestamp.c:3245 +#: utils/adt/timestamp.c:3286 utils/adt/timestamp.c:3374 +#: utils/adt/timestamp.c:3421 utils/adt/timestamp.c:3532 +#: utils/adt/timestamp.c:3845 utils/adt/timestamp.c:3982 +#: utils/adt/timestamp.c:3989 utils/adt/timestamp.c:4003 +#: utils/adt/timestamp.c:4013 utils/adt/timestamp.c:4076 +#: utils/adt/timestamp.c:4216 utils/adt/timestamp.c:4226 +#: utils/adt/timestamp.c:4441 utils/adt/timestamp.c:4520 +#: utils/adt/timestamp.c:4527 utils/adt/timestamp.c:4554 +#: utils/adt/timestamp.c:4558 utils/adt/timestamp.c:4615 utils/adt/xml.c:1740 +#: utils/adt/xml.c:1747 utils/adt/xml.c:1767 utils/adt/xml.c:1774 +#: utils/adt/formatting.c:3247 utils/adt/formatting.c:3279 +#: utils/adt/formatting.c:3347 +msgid "timestamp out of range" +msgstr "timestamp fora do intervalo" -#: access/transam/xlog.c:3741 -#, c-format -msgid "contrecord is requested by %X/%X" -msgstr "contrecord é solicitado por %X/%X" +#: utils/adt/nabstime.c:506 utils/adt/nabstime.c:579 +msgid "cannot convert abstime \"invalid\" to timestamp" +msgstr "não pode converter abstime \"invalid\" para timestamp" -#: access/transam/xlog.c:3756 -#, c-format -msgid "invalid xlog switch record at %X/%X" -msgstr "registro de rotação do xlog é inválido em %X/%X" +#: utils/adt/nabstime.c:806 +msgid "invalid status in external \"tinterval\" value" +msgstr "status inválido no valor de \"tinterval\" externo" -#: access/transam/xlog.c:3764 -#, c-format -msgid "record with zero length at %X/%X" -msgstr "registro com tamanho zero em %X/%X" +#: utils/adt/nabstime.c:880 +msgid "cannot convert reltime \"invalid\" to interval" +msgstr "não pode converter reltime \"invalid\" em interval" -#: access/transam/xlog.c:3773 +#: utils/adt/nabstime.c:1575 #, c-format -msgid "invalid record length at %X/%X" -msgstr "tamanho de registro é inválido em %X/%X" +msgid "invalid input syntax for type tinterval: \"%s\"" +msgstr "sintaxe de entrada é inválida para tipo tinterval: \"%s\"" -#: access/transam/xlog.c:3780 +#: utils/adt/ruleutils.c:2429 #, c-format -msgid "invalid resource manager ID %u at %X/%X" -msgstr "ID do gerenciador de recursos %u é inválido em %X/%X" +msgid "rule \"%s\" has unsupported event type %d" +msgstr "regra \"%s\" tem tipo de evento %d que não é suportado" -#: access/transam/xlog.c:3793 access/transam/xlog.c:3809 -#, c-format -msgid "record with incorrect prev-link %X/%X at %X/%X" -msgstr "registro com prev-link %X/%X incorreto em %X/%X" +#: utils/adt/ruleutils.c:5888 utils/adt/ruleutils.c:5943 +#: utils/adt/ruleutils.c:5980 utils/adt/regproc.c:635 utils/adt/regproc.c:1485 +msgid "too many arguments" +msgstr "muitos argumentos" -#: access/transam/xlog.c:3838 +#: utils/adt/encode.c:55 utils/adt/encode.c:91 #, c-format -msgid "record length %u at %X/%X too long" -msgstr "tamanho do registro %u em %X/%X é muito longo" +msgid "unrecognized encoding: \"%s\"" +msgstr "codificação desconhecida: \"%s\"" -#: access/transam/xlog.c:3878 +#: utils/adt/encode.c:150 #, c-format -msgid "there is no contrecord flag in log file %u, segment %u, offset %u" -msgstr "" -"não há marcação em contrecord no arquivo de log %u, segmento %u, " -"deslocamento %u" +msgid "invalid hexadecimal digit: \"%c\"" +msgstr "dígito hexadecimal inválido: \"%c\"" -#: access/transam/xlog.c:3888 -#, c-format -msgid "invalid contrecord length %u in log file %u, segment %u, offset %u" -msgstr "" -"tamanho de contrecord %u é inválido no arquivo de log %u, segmento %u, " -"deslocamento %u" +#: utils/adt/encode.c:178 +msgid "invalid hexadecimal data: odd number of digits" +msgstr "dado hexadecimal inválido: número de dígitos estranho" -#: access/transam/xlog.c:3978 -#, c-format -msgid "invalid magic number %04X in log file %u, segment %u, offset %u" -msgstr "" -"número mágico %04X é invalido no arquivo de log %u, segmento %u, " -"deslocamento %u" +#: utils/adt/encode.c:295 +msgid "unexpected \"=\"" +msgstr "\"=\" inesperado" -#: access/transam/xlog.c:3985 access/transam/xlog.c:4031 -#, c-format -msgid "invalid info bits %04X in log file %u, segment %u, offset %u" -msgstr "" -"bits de informação %04X são inválidos no arquivo de log %u, segmento %u, " -"deslocamento %u" +#: utils/adt/encode.c:307 +msgid "invalid symbol" +msgstr "símbolo inválido" -#: access/transam/xlog.c:4007 access/transam/xlog.c:4015 -#: access/transam/xlog.c:4022 -msgid "WAL file is from different database system" -msgstr "arquivo do WAL é de um sistema de banco de dados diferente" +#: utils/adt/encode.c:327 +msgid "invalid end sequence" +msgstr "fim de sequência inválido" -#: access/transam/xlog.c:4008 -#, c-format -msgid "" -"WAL file database system identifier is %s, pg_control database system " -"identifier is %s." -msgstr "identificador do sistema de banco de dados no arquivo do WAL é %s, identificador do sistema de banco de dados no pg_control é %s." +#: 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 "sintaxe de entrada é inválida para tipo bytea" -#: access/transam/xlog.c:4016 -msgid "Incorrect XLOG_SEG_SIZE in page header." -msgstr "XLOG_SEG_SIZE está incorreto no cabeçalho da página." +#: utils/adt/pseudotypes.c:94 +msgid "cannot accept a value of type any" +msgstr "não pode aceitar um valor do tipo any" -#: access/transam/xlog.c:4023 -msgid "Incorrect XLOG_BLCKSZ in page header." -msgstr "XLOG_BLCKSZ está incorreto no cabeçalho da página." +#: utils/adt/pseudotypes.c:107 +msgid "cannot display a value of type any" +msgstr "não pode mostrar um valor do tipo any" -#: access/transam/xlog.c:4039 -#, c-format -msgid "unexpected pageaddr %X/%X in log file %u, segment %u, offset %u" -msgstr "" -"pageaddr %X/%X inesperado no arquivo de log %u, segmento %u, deslocalemto %u" +#: utils/adt/pseudotypes.c:121 utils/adt/pseudotypes.c:149 +msgid "cannot accept a value of type anyarray" +msgstr "não pode aceitar um valor do tipo anyarray" -#: access/transam/xlog.c:4051 -#, c-format -msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u" -msgstr "" -"ID de linha do tempo %u inesperado no arquivo de log %u, segmento %u, " -"deslocalemto %u" +#: utils/adt/pseudotypes.c:174 +msgid "cannot accept a value of type anyenum" +msgstr "não pode aceitar um valor do tipo anyenum" -#: access/transam/xlog.c:4069 -#, c-format -msgid "" -"out-of-sequence timeline ID %u (after %u) in log file %u, segment %u, offset " -"%u" -msgstr "" -"ID de linha do tempo %u fora de sequência (depois %u) no arquivo de log %u, " -"segmento %u, deslocamento %u" +#: utils/adt/pseudotypes.c:252 +msgid "cannot accept a value of type trigger" +msgstr "não pode aceitar um valor do tipo trigger" -#: access/transam/xlog.c:4142 -#, c-format -msgid "syntax error in history file: %s" -msgstr "erro de sintaxe no arquivo de histórico: %s" +#: utils/adt/pseudotypes.c:265 +msgid "cannot display a value of type trigger" +msgstr "não pode mostrar um valor do tipo trigger" -#: access/transam/xlog.c:4143 -msgid "Expected a numeric timeline ID." -msgstr "Esperado um ID de linha do tempo numérico." +#: utils/adt/pseudotypes.c:279 +msgid "cannot accept a value of type language_handler" +msgstr "não pode aceitar um valor do tipo language_handler" -#: access/transam/xlog.c:4148 -#, c-format -msgid "invalid data in history file: %s" -msgstr "dado inválido no arquivo de histórico: %s" +#: utils/adt/pseudotypes.c:292 +msgid "cannot display a value of type language_handler" +msgstr "não pode mostrar um valor do tipo language_handler" -#: access/transam/xlog.c:4149 -msgid "Timeline IDs must be in increasing sequence." -msgstr "IDs de linha do tempo devem ser uma sequência crescente." +#: utils/adt/pseudotypes.c:306 +msgid "cannot accept a value of type fdw_handler" +msgstr "não pode aceitar um valor do tipo fdw_handler" -#: access/transam/xlog.c:4162 -#, c-format -msgid "invalid data in history file \"%s\"" -msgstr "dado inválido no arquivo de histórico \"%s\"" +#: utils/adt/pseudotypes.c:319 +msgid "cannot display a value of type fdw_handler" +msgstr "não pode mostrar um valor do tipo fdw_handler" -#: access/transam/xlog.c:4163 -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." +#: utils/adt/pseudotypes.c:333 +msgid "cannot accept a value of type internal" +msgstr "não pode aceitar um valor do tipo interval" + +#: utils/adt/pseudotypes.c:346 +msgid "cannot display a value of type internal" +msgstr "não pode mostrar um valor do tipo interval" + +#: utils/adt/pseudotypes.c:360 +msgid "cannot accept a value of type opaque" +msgstr "não pode aceitar um valor do tipo opaque" + +#: utils/adt/pseudotypes.c:373 +msgid "cannot display a value of type opaque" +msgstr "não pode mostrar um valor do tipo opaque" + +#: utils/adt/pseudotypes.c:387 +msgid "cannot accept a value of type anyelement" +msgstr "não pode aceitar um valor do tipo anyelement" + +#: utils/adt/pseudotypes.c:400 +msgid "cannot display a value of type anyelement" +msgstr "não pode mostrar um valor do tipo anyelement" + +#: utils/adt/pseudotypes.c:413 +msgid "cannot accept a value of type anynonarray" +msgstr "não pode aceitar um valor do tipo anynonarray" + +#: utils/adt/pseudotypes.c:426 +msgid "cannot display a value of type anynonarray" +msgstr "não pode mostrar um valor do tipo anynonarray" + +#: utils/adt/pseudotypes.c:439 +msgid "cannot accept a value of a shell type" +msgstr "não pode aceitar um valor do tipo shell" + +#: utils/adt/pseudotypes.c:452 +msgid "cannot display a value of a shell type" +msgstr "não pode mostrar um valor do tipo shell" + +#: utils/adt/pseudotypes.c:474 utils/adt/pseudotypes.c:498 +msgid "cannot accept a value of type pg_node_tree" +msgstr "não pode aceitar um valor do tipo pg_node_tree" + +#: utils/adt/genfile.c:60 +msgid "reference to parent directory (\"..\") not allowed" +msgstr "referência ao diretório pai (\"..\") não é permitida" -#: access/transam/xlog.c:4422 +#: utils/adt/genfile.c:71 +msgid "absolute path not allowed" +msgstr "caminho absoluto não é permitido" + +#: utils/adt/genfile.c:76 +msgid "path must be in or below the current directory" +msgstr "caminho deve estar no ou abaixo do diretório atual" + +#: 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 "tamanho solicitado é muito grande" + +#: utils/adt/genfile.c:129 #, c-format -msgid "could not link file \"%s\" to \"%s\": %m" -msgstr "não pôde vincular arquivo \"%s\" a \"%s\": %m" +msgid "could not seek in file \"%s\": %m" +msgstr "não pôde buscar em arquivo \"%s\": %m" + +#: 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 "deve ser super-usuário para ler arquivos" + +#: utils/adt/genfile.c:186 utils/adt/genfile.c:231 +msgid "requested length cannot be negative" +msgstr "tamanho solicitado não pode ser negativo" + +#: utils/adt/genfile.c:272 +msgid "must be superuser to get file information" +msgstr "deve ser super-usuário para obter informação sobre arquivo" -#: access/transam/xlog.c:4511 +#: utils/adt/genfile.c:336 +msgid "must be superuser to get directory listings" +msgstr "deve ser super-usuário para obter listagem de diretórios" + +#: utils/adt/tsvector_op.c:530 utils/adt/tsvector.c:272 tsearch/to_tsany.c:165 #, c-format -msgid "could not create control file \"%s\": %m" -msgstr "não pôde criar arquivo de controle \"%s\": %m" +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)" + +#: utils/adt/tsvector_op.c:1173 +msgid "ts_stat query must return one tsvector column" +msgstr "consulta ts_stat deve retornar uma coluna tsvector" -#: access/transam/xlog.c:4522 access/transam/xlog.c:4747 +#: utils/adt/tsvector_op.c:1353 #, c-format -msgid "could not write to control file: %m" -msgstr "não pôde escrever em arquivo de controle: %m" +msgid "tsvector column \"%s\" does not exist" +msgstr "coluna tsvector \"%s\" não existe" -#: access/transam/xlog.c:4528 access/transam/xlog.c:4753 +#: utils/adt/tsvector_op.c:1359 #, c-format -msgid "could not fsync control file: %m" -msgstr "não pôde executar fsync no arquivo de controle: %m" +msgid "column \"%s\" is not of tsvector type" +msgstr "coluna \"%s\" não é do tipo tsvector" -#: access/transam/xlog.c:4533 access/transam/xlog.c:4758 +#: utils/adt/tsvector_op.c:1371 #, c-format -msgid "could not close control file: %m" -msgstr "não pôde fechar arquivo de controle: %m" +msgid "configuration column \"%s\" does not exist" +msgstr "coluna de configuração \"%s\" não existe" -#: access/transam/xlog.c:4551 access/transam/xlog.c:4736 +#: utils/adt/tsvector_op.c:1377 #, c-format -msgid "could not open control file \"%s\": %m" -msgstr "não pôde abrir arquivo de controle \"%s\": %m" +msgid "column \"%s\" is not of regconfig type" +msgstr "coluna \"%s\" não é do tipo regconfig" -#: access/transam/xlog.c:4557 +#: utils/adt/tsvector_op.c:1384 #, c-format -msgid "could not read from control file: %m" -msgstr "não pôde ler do arquivo de controle: %m" +msgid "configuration column \"%s\" must not be null" +msgstr "coluna de configuração \"%s\" não deve ser nulo" -#: access/transam/xlog.c:4571 +#: utils/adt/tsvector_op.c:1397 #, 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 "text search configuration name \"%s\" must be schema-qualified" 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)." +"nome da configuração de busca textual \"%s\" deve ser qualificada pelo " +"esquema" + +#: utils/adt/tsvector_op.c:1422 +#, c-format +msgid "column \"%s\" is not of a character type" +msgstr "coluna \"%s\" não é do tipo caracter" -#: access/transam/xlog.c:4575 +#: utils/adt/tsquery_cleanup.c:285 msgid "" -"This could be a problem of mismatched byte ordering. It looks like you need " -"to initdb." +"text-search query contains only stop words or doesn't contain lexemes, " +"ignored" msgstr "" -"Isto pode ser um problema com ordenação dos bits. Parece que você precisa " -"executar o initdb." +"consulta de busca textual contém somente palavras ignoradas ou não contém " +"lexemas, ignorada" -#: access/transam/xlog.c:4580 +#: 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 "" -"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." +msgid "invalid input syntax for integer: \"%s\"" +msgstr "sintaxe de entrada é inválida para integer: \"%s\"" -#: access/transam/xlog.c:4583 access/transam/xlog.c:4607 -#: access/transam/xlog.c:4614 access/transam/xlog.c:4619 -msgid "It looks like you need to initdb." -msgstr "Parece que você precisa executar o initdb." +#: utils/adt/int8.c:114 +#, c-format +msgid "value \"%s\" is out of range for type bigint" +msgstr "valor \"%s\" está fora do intervalo para tipo bigint" -#: access/transam/xlog.c:4594 -msgid "incorrect checksum in control file" -msgstr "soma de verificação está incorreta em arquivo de controle" +#: utils/adt/int8.c:1366 +msgid "OID out of range" +msgstr "OID fora do intervalo" -#: access/transam/xlog.c:4604 +#: utils/adt/int8.c:1409 utils/adt/timestamp.c:4713 utils/adt/timestamp.c:4794 +#: utils/adt/int.c:1362 +msgid "step size cannot equal zero" +msgstr "tamanho do passo não pode ser zero" + +#: utils/adt/tid.c:70 utils/adt/tid.c:78 utils/adt/tid.c:86 #, 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." +msgid "invalid input syntax for type tid: \"%s\"" +msgstr "sintaxe de entrada é inválida para tipo tid: \"%s\"" -#: access/transam/xlog.c:4611 +#: utils/adt/regexp.c:204 tsearch/spell.c:439 #, c-format -msgid "" -"The database cluster was initialized with MAXALIGN %d, but the server was " -"compiled with MAXALIGN %d." +msgid "invalid regular expression: %s" +msgstr "expressão regular inválida: %s" + +#: utils/adt/regexp.c:285 utils/adt/regexp.c:1234 utils/adt/varlena.c:2861 +#, c-format +msgid "regular expression failed: %s" +msgstr "expressão regular falhou: %s" + +#: utils/adt/regexp.c:422 +#, c-format +msgid "invalid regexp option: \"%c\"" +msgstr "opção da expressão regular é inválida: \"%c\"" + +#: utils/adt/regexp.c:894 +msgid "regexp_split does not support the global option" +msgstr "regexp_split não suporta a opção global" + +#: utils/adt/arrayutils.c:93 utils/adt/arrayutils.c:102 +#: utils/adt/arrayutils.c:109 utils/adt/arrayfuncs.c:871 +#: utils/adt/arrayfuncs.c:1473 utils/adt/arrayfuncs.c:2795 +#: utils/adt/arrayfuncs.c:2943 utils/adt/arrayfuncs.c:5036 +#, c-format +msgid "array size exceeds the maximum allowed (%d)" +msgstr "tamanho da matriz excede o máximo permitido (%d)" + +#: utils/adt/arrayutils.c:209 +msgid "typmod array must be type cstring[]" +msgstr "matriz typmod deve ser do tipo cstring[]" + +#: utils/adt/arrayutils.c:214 +msgid "typmod array must be one-dimensional" +msgstr "matriz typmod deve ser de uma dimensão" + +#: utils/adt/arrayutils.c:219 +msgid "typmod array must not contain nulls" +msgstr "matriz typmod não deve conter valores nulos" + +#: utils/adt/numutils.c:75 +#, c-format +msgid "value \"%s\" is out of range for type integer" +msgstr "valor \"%s\" está fora do intervalo para tipo integer" + +#: utils/adt/numutils.c:81 +#, c-format +msgid "value \"%s\" is out of range for type smallint" +msgstr "valor \"%s\" está fora do intervalo para tipo smallint" + +#: utils/adt/numutils.c:87 +#, c-format +msgid "value \"%s\" is out of range for 8-bit integer" +msgstr "valor \"%s\" está fora do intervalo para inteiro de 8 bits" + +#: utils/adt/trigfuncs.c:41 +msgid "suppress_redundant_updates_trigger: must be called as trigger" +msgstr "suppress_redundant_updates_trigger: deve ser chamado com gatilho" + +#: utils/adt/trigfuncs.c:47 +msgid "suppress_redundant_updates_trigger: must be called on update" msgstr "" -"O agrupamento de banco de dados foi inicializado com MAXALIGN %d, mas o " -"servidor foi compilado com MAXALIGN %d." +"suppress_redundant_updates_trigger: deve ser chamado durante atualização" -#: access/transam/xlog.c:4618 -msgid "" -"The database cluster appears to use a different floating-point number format " -"than the server executable." +#: utils/adt/trigfuncs.c:53 +msgid "suppress_redundant_updates_trigger: must be called before update" msgstr "" -"O agrupamento de banco de dados parece utilizar um formato de número de " -"ponto flutuante diferente do executável do servidor." +"suppress_redundant_updates_trigger: deve ser chamado antes da atualização" -#: access/transam/xlog.c:4623 -#, c-format -msgid "" -"The database cluster was initialized with BLCKSZ %d, but the server was " -"compiled with BLCKSZ %d." +#: utils/adt/trigfuncs.c:59 +msgid "suppress_redundant_updates_trigger: must be called for each row" msgstr "" -"O agrupamento de banco de dados foi inicializado com BLCSZ %d, mas o " -"servidor foi compilado com BLCSZ %d." +"suppress_redundant_updates_trigger: deve ser chamado para cada registro" -#: access/transam/xlog.c:4626 access/transam/xlog.c:4633 -#: access/transam/xlog.c:4640 access/transam/xlog.c:4647 -#: access/transam/xlog.c:4654 access/transam/xlog.c:4661 -#: access/transam/xlog.c:4668 access/transam/xlog.c:4676 -#: access/transam/xlog.c:4683 access/transam/xlog.c:4692 -#: access/transam/xlog.c:4699 access/transam/xlog.c:4708 -#: access/transam/xlog.c:4715 -msgid "It looks like you need to recompile or initdb." -msgstr "Parece que você precisa recompilar ou executar o initdb." +#: 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 "modificador de tipo é inválido" -#: access/transam/xlog.c:4630 +#: utils/adt/date.c:71 #, 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." +msgid "TIME(%d)%s precision must not be negative" +msgstr "precisão do TIME(%d)%s não deve ser negativa" -#: access/transam/xlog.c:4637 +#: utils/adt/date.c:77 #, 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." +msgid "TIME(%d)%s precision reduced to maximum allowed, %d" +msgstr "precisão do TIME(%d)%s reduzida ao máximo permitido, %d" -#: access/transam/xlog.c:4644 +#: utils/adt/date.c:167 utils/adt/formatting.c:3371 #, 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." +msgid "date out of range: \"%s\"" +msgstr "date fora do intervalo: \"%s\"" + +#: utils/adt/date.c:217 utils/adt/xml.c:1717 +msgid "date out of range" +msgstr "data fora do intervalo" + +#: utils/adt/date.c:359 +msgid "cannot subtract infinite dates" +msgstr "não pode subtrair valores date infinitos" + +#: utils/adt/date.c:416 utils/adt/date.c:453 +msgid "date out of range for timestamp" +msgstr "date fora do intervalo para timestamp" + +#: utils/adt/date.c:986 +msgid "cannot convert reserved abstime value to date" +msgstr "não pode converter valor de abstime reservado para date" -#: access/transam/xlog.c:4651 +#: 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 "time fora do intervalo" + +#: utils/adt/date.c:1793 utils/adt/date.c:1810 #, 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." +msgid "\"time\" units \"%s\" not recognized" +msgstr "unidades de \"time\" \"%s\" são desconhecidas" + +#: utils/adt/date.c:1931 +msgid "time zone displacement out of range" +msgstr "deslocamento de zona horária fora do intervalo" -#: access/transam/xlog.c:4658 +#: utils/adt/date.c:2556 utils/adt/date.c:2573 #, 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." +msgid "\"time with time zone\" units \"%s\" not recognized" +msgstr "unidades de \"time with time zone\" \"%s\" são desconhecidas" -#: access/transam/xlog.c:4665 +#: utils/adt/date.c:2671 #, 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." +msgid "\"interval\" time zone \"%s\" not valid" +msgstr "zona horária de \"interval\" \"%s\" não é válida" -#: access/transam/xlog.c:4674 -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." +#: utils/adt/char.c:169 +msgid "\"char\" out of range" +msgstr "\"char\" fora do intervalo" -#: access/transam/xlog.c:4681 -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." +#: utils/adt/oracle_compat.c:895 +msgid "requested character too large" +msgstr "tamanho solicitado é muito grande" -#: access/transam/xlog.c:4690 -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." +#: utils/adt/oracle_compat.c:941 utils/adt/oracle_compat.c:995 +#, c-format +msgid "requested character too large for encoding: %d" +msgstr "caracter solicitado é muito grande para codificação: %d" -#: access/transam/xlog.c:4697 -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." +#: utils/adt/oracle_compat.c:988 +msgid "null character not permitted" +msgstr "caracter nulo não é permitido" -#: access/transam/xlog.c:4706 -msgid "" -"The database cluster was initialized without USE_FLOAT8_BYVAL but the server " -"was compiled with USE_FLOAT8_BYVAL." +#: utils/adt/datum.c:80 utils/adt/datum.c:92 +msgid "invalid Datum pointer" +msgstr "ponteiro Datum é inválido" + +#: utils/adt/timestamp.c:97 +#, 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:103 +#, 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:171 utils/adt/timestamp.c:435 +#, c-format +msgid "timestamp out of range: \"%s\"" +msgstr "timestamp fora do intervalo: \"%s\"" + +#: 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 "valor de data/hora \"%s\" não é mais suportado" + +#: utils/adt/timestamp.c:260 +msgid "timestamp cannot be NaN" +msgstr "timestamp não pode ser NaN" + +#: utils/adt/timestamp.c:370 +#, 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:658 utils/adt/timestamp.c:3110 +#: utils/adt/timestamp.c:3240 utils/adt/timestamp.c:3625 +msgid "interval out of range" +msgstr "interval fora do intervalo" + +#: utils/adt/timestamp.c:787 utils/adt/timestamp.c:820 +msgid "invalid INTERVAL type modifier" +msgstr "modificador do tipo INTERVAL é inválido" + +#: utils/adt/timestamp.c:803 +#, 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:809 +#, 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:1101 +#, 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:2307 +msgid "cannot subtract infinite timestamps" +msgstr "não pode subtrair timestamps infinitos" + +#: utils/adt/timestamp.c:3366 utils/adt/timestamp.c:3962 +#: utils/adt/timestamp.c:4021 +#, c-format +msgid "timestamp units \"%s\" not supported" +msgstr "unidades do timestamp \"%s\" não são suportadas" + +#: utils/adt/timestamp.c:3380 utils/adt/timestamp.c:4031 +#, c-format +msgid "timestamp units \"%s\" not recognized" +msgstr "unidades do timestamp \"%s\" são desconhecidas" + +#: utils/adt/timestamp.c:3521 utils/adt/timestamp.c:4193 +#: utils/adt/timestamp.c:4234 +#, 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:3538 utils/adt/timestamp.c:4243 +#, 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:3618 utils/adt/timestamp.c:4349 +#, c-format +msgid "interval units \"%s\" not supported" +msgstr "unidades de interval \"%s\" não são suportadas" + +#: utils/adt/timestamp.c:3634 utils/adt/timestamp.c:4376 +#, c-format +msgid "interval units \"%s\" not recognized" +msgstr "unidades de interval \"%s\" são desconhecidas" + +#: utils/adt/timestamp.c:4446 utils/adt/timestamp.c:4619 +#, c-format +msgid "could not convert to time zone \"%s\"" +msgstr "não pôde converter para zona horária \"%s\"" + +#: utils/adt/timestamp.c:4478 utils/adt/timestamp.c:4652 +#, c-format +msgid "interval time zone \"%s\" must not specify month" +msgstr "zona horária de interval \"%s\" não deve especificar o mês" + +#: 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 utils/adt/varbit.c:1032 +#: utils/adt/varbit.c:1134 +msgid "negative substring length not allowed" +msgstr "tamanho negativo de índice não é permitido" + +#: utils/adt/varlena.c:1314 +msgid "could not determine which collation to use for string comparison" +msgstr "" +"não pôde determinar qual ordenação utilizar para comparação de cadeia de " +"caracteres" + +#: utils/adt/varlena.c:1358 utils/adt/varlena.c:1371 +#, c-format +msgid "could not convert string to UTF-16: error %lu" +msgstr "não pôde converter cadeia de caracteres para UTF-16: erro %lu" + +#: utils/adt/varlena.c:1386 +#, c-format +msgid "could not compare Unicode strings: %m" +msgstr "não pôde comparar cadeias de caracteres Unicode: %m" + +#: 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 "índice %d fora do intervalo válido, 0..%d" + +#: utils/adt/varlena.c:2163 utils/adt/varbit.c:1768 +msgid "new bit must be 0 or 1" +msgstr "novo bit deve ser 0 ou 1" + +#: utils/adt/varlena.c:2245 utils/adt/varlena.c:2250 utils/adt/regproc.c:1320 +#: utils/adt/regproc.c:1325 +msgid "invalid name syntax" +msgstr "sintaxe de nome inválida" + +#: utils/adt/varlena.c:2957 +msgid "field position must be greater than zero" +msgstr "posição do campo deve ser maior que zero" + +#: utils/adt/varlena.c:3826 utils/adt/varlena.c:3887 +msgid "unterminated conversion specifier" +msgstr "especificador de conversão foi terminado" + +#: utils/adt/varlena.c:3850 utils/adt/varlena.c:3866 +msgid "argument number is out of range" +msgstr "número do argumento está fora do intervalo" + +#: utils/adt/varlena.c:3893 +msgid "conversion specifies argument 0, but arguments are numbered from 1" +msgstr "" +"conversão especificou argumento 0, mas argumentos são numerados a partir de 1" + +#: utils/adt/varlena.c:3900 +msgid "too few arguments for format" +msgstr "poucos argumentos para formato" + +#: utils/adt/varlena.c:3921 +#, c-format +msgid "unrecognized conversion specifier \"%c\"" +msgstr "especificador de conversão \"%c\" desconhecido" + +#: utils/adt/varlena.c:3950 +msgid "null values cannot be formatted as an SQL identifier" +msgstr "valores nulos não podem ser formatados como um identificador SQL" + +#: utils/adt/bool.c:153 +#, c-format +msgid "invalid input syntax for type boolean: \"%s\"" +msgstr "sintaxe de entrada é inválida para tipo boolean: \"%s\"" + +#: utils/adt/mac.c:65 +#, c-format +msgid "invalid input syntax for type macaddr: \"%s\"" +msgstr "sintaxe de entrada é inválida para tipo macaddr: \"%s\"" + +#: utils/adt/mac.c:72 +#, c-format +msgid "invalid octet value in \"macaddr\" value: \"%s\"" +msgstr "valor de octeto é inválido no valor de \"macaddr\": \"%s\"" + +#: utils/adt/pgstatfuncs.c:1548 postmaster/pgstat.c:1184 +#, c-format +msgid "unrecognized reset target: \"%s\"" +msgstr "alvo de reinício desconhecido: \"%s\"" + +#: utils/adt/pgstatfuncs.c:1549 postmaster/pgstat.c:1185 +msgid "Target must be \"bgwriter\"." +msgstr "Alvo deve ser \"bgwriter\"." + +#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:1432 utils/adt/geo_ops.c:3493 +#: utils/adt/geo_ops.c:4269 utils/adt/geo_ops.c:5198 +msgid "too many points requested" +msgstr "muitos pontos solicitados" + +#: utils/adt/geo_ops.c:317 +msgid "could not format \"path\" value" +msgstr "não pôde formatar valor de \"path\"" + +#: utils/adt/geo_ops.c:392 +#, 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:956 +#, c-format +msgid "invalid input syntax for type line: \"%s\"" +msgstr "sintaxe de entrada é inválida para tipo line: \"%s\"" + +#: 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 "tipo \"line\" não está implementado" + +#: utils/adt/geo_ops.c:1412 utils/adt/geo_ops.c:1443 +#, 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:1482 +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:1825 +#, 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:2053 +#, 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:2657 +msgid "function \"dist_lb\" not implemented" +msgstr "função \"dist_lb\" não está implementada" + +#: utils/adt/geo_ops.c:3170 +msgid "function \"close_lb\" not implemented" +msgstr "função \"close_lb\" não está implementada" + +#: utils/adt/geo_ops.c:3459 +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:3484 utils/adt/geo_ops.c:3504 +#, 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:3544 +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:4067 +msgid "function \"poly_distance\" not implemented" +msgstr "função \"poly_distance\" não está implementada" + +#: utils/adt/geo_ops.c:4381 +msgid "function \"path_center\" not implemented" +msgstr "função \"path_center\" não está implementada" + +#: utils/adt/geo_ops.c:4398 +msgid "open path cannot be converted to polygon" +msgstr "caminho aberto não pode ser convertido em polígono" + +#: utils/adt/geo_ops.c:4575 utils/adt/geo_ops.c:4585 utils/adt/geo_ops.c:4600 +#: utils/adt/geo_ops.c:4606 +#, 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:4628 utils/adt/geo_ops.c:4636 +msgid "could not format \"circle\" value" +msgstr "não pôde formatar valor de \"circle\"" + +#: utils/adt/geo_ops.c:4663 +msgid "invalid radius in external \"circle\" value" +msgstr "raio é inválido no valor de \"circle\" externo" + +#: utils/adt/geo_ops.c:5184 +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:5189 +msgid "must request at least 2 points" +msgstr "deve informar pelo menos 2 pontos" + +#: utils/adt/geo_ops.c:5233 utils/adt/geo_ops.c:5256 +msgid "cannot convert empty polygon to circle" +msgstr "não pode converter polígono vazio para círculo" + +#: utils/adt/array_userfuncs.c:48 +msgid "could not determine input data types" +msgstr "não pôde determinar tipos de dado de entrada" + +#: utils/adt/array_userfuncs.c:82 +msgid "neither input type is an array" +msgstr "tipo de entrada não é uma matriz" + +#: utils/adt/array_userfuncs.c:121 +msgid "argument must be empty or one-dimensional array" +msgstr "argumento deve ser vazio ou matriz de uma dimensão" + +#: 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 "não pode concatenar matrizes incompatíveis" + +#: utils/adt/array_userfuncs.c:225 +#, c-format +msgid "" +"Arrays with element types %s and %s are not compatible for concatenation." +msgstr "" +"Matrizes com tipos de elemento %s e %s não são compatíveis para concatenação." + +#: utils/adt/array_userfuncs.c:264 +#, c-format +msgid "Arrays of %d and %d dimensions are not compatible for concatenation." +msgstr "Matrizes de dimensões %d e %d não são compatíveis para concatenação." + +#: utils/adt/array_userfuncs.c:301 +msgid "" +"Arrays with differing element dimensions are not compatible for " +"concatenation." +msgstr "" +"Matrizes com dimensões de elementos diferentes não são compatíveis para " +"concatenação." + +#: utils/adt/array_userfuncs.c:330 utils/adt/array_userfuncs.c:358 +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:1238 +#: utils/adt/arrayfuncs.c:2911 utils/adt/arrayfuncs.c:4936 +#, c-format +msgid "invalid number of dimensions: %d" +msgstr "número de dimensões é inválido: %d" + +#: utils/adt/array_userfuncs.c:487 +msgid "could not determine input data type" +msgstr "não pôde determinar tipo de dado de entrada" + +#: utils/adt/like.c:211 utils/adt/selfuncs.c:4964 +msgid "could not determine which collation to use for ILIKE" +msgstr "não pôde determinar qual ordenação utilizar para ILIKE" + +#: utils/adt/windowfuncs.c:243 +msgid "argument of ntile must be greater than zero" +msgstr "argumento de ntile deve ser maior do que zero" + +#: utils/adt/windowfuncs.c:465 +msgid "argument of nth_value must be greater than zero" +msgstr "argumento de nth_value deve ser maior do que zero" + +#: 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 "sintaxe de entrada é inválida para 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 "valor \"%s\" está fora do intervalo para tipo oid" + +#: utils/adt/oid.c:212 utils/adt/oid.c:293 utils/adt/int.c:243 +msgid "oidvector has too many elements" +msgstr "oidvector tem muitos elementos" + +#: utils/adt/oid.c:287 +msgid "invalid oidvector data" +msgstr "dado oidvector inválido" + +#: utils/adt/int.c:162 +msgid "int2vector has too many elements" +msgstr "int2vector tem muitos elementos" + +#: utils/adt/int.c:237 +msgid "invalid int2vector data" +msgstr "dado int2vector inválido" + +#: utils/adt/domains.c:80 +#, c-format +msgid "type %s is not a domain" +msgstr "tipo %s não é um domínio" + +#: utils/adt/enum.c:49 utils/adt/enum.c:59 utils/adt/enum.c:118 +#: utils/adt/enum.c:128 +#, c-format +msgid "invalid input value for enum %s: \"%s\"" +msgstr "valor de entrada é inválido para enum %s: \"%s\"" + +#: utils/adt/enum.c:86 utils/adt/enum.c:153 utils/adt/enum.c:203 +#, c-format +msgid "invalid internal value for enum: %u" +msgstr "valor interno é inválido para enum: %u" + +#: utils/adt/enum.c:362 utils/adt/enum.c:391 utils/adt/enum.c:431 +#: utils/adt/enum.c:451 +msgid "could not determine actual enum type" +msgstr "não pôde determinar tipo enum atual" + +#: utils/adt/enum.c:370 utils/adt/enum.c:399 +#, c-format +msgid "enum %s contains no values" +msgstr "enum %s não contém valores" + +#: utils/adt/varbit.c:56 utils/adt/varchar.c:48 +#, c-format +msgid "length for type %s must be at least 1" +msgstr "tamanho para tipo %s deve ser pelo menos 1" + +#: utils/adt/varbit.c:61 utils/adt/varchar.c:52 +#, c-format +msgid "length for type %s cannot exceed %d" +msgstr "tamanho para tipo %s não pode exceder %d" + +#: utils/adt/varbit.c:162 utils/adt/varbit.c:474 utils/adt/varbit.c:939 +#, c-format +msgid "bit string length exceeds the maximum allowed (%d)" +msgstr "tamanho da cadeia de bits excede o máximo permitido (%d)" + +#: utils/adt/varbit.c:176 utils/adt/varbit.c:319 utils/adt/varbit.c:376 +#, c-format +msgid "bit string length %d does not match type bit(%d)" +msgstr "tamanho da cadeia de bits %d não corresponde ao tipo bit(%d)" + +#: utils/adt/varbit.c:198 utils/adt/varbit.c:510 +#, c-format +msgid "\"%c\" is not a valid binary digit" +msgstr "\"%c\" não é um dígito binário válido" + +#: utils/adt/varbit.c:223 utils/adt/varbit.c:535 +#, c-format +msgid "\"%c\" is not a valid hexadecimal digit" +msgstr "\"%c\" não é um dígito hexadecimal válido" + +#: utils/adt/varbit.c:310 utils/adt/varbit.c:626 +msgid "invalid length in external bit string" +msgstr "tamanho inválido na cadeia de bits externa" + +#: utils/adt/varbit.c:488 utils/adt/varbit.c:635 utils/adt/varbit.c:697 +#, c-format +msgid "bit string too long for type bit varying(%d)" +msgstr "cadeia de bits muito longa para tipo bit varying(%d)" + +#: utils/adt/varbit.c:1192 +msgid "cannot AND bit strings of different sizes" +msgstr "não pode executar E em cadeias de bits de tamanhos diferentes" + +#: utils/adt/varbit.c:1234 +msgid "cannot OR bit strings of different sizes" +msgstr "não pode executar OU em cadeias de bits de tamanhos diferentes" + +#: utils/adt/varbit.c:1281 +msgid "cannot XOR bit strings of different sizes" +msgstr "não pode executar XOR em cadeias de bits de tamanhos diferentes" + +#: utils/adt/varbit.c:1759 utils/adt/varbit.c:1817 +#, c-format +msgid "bit index %d out of valid range (0..%d)" +msgstr "índice do bit %d fora do intervalo válido (0..%d)" + +#: utils/adt/tsrank.c:404 +msgid "array of weight must be one-dimensional" +msgstr "matriz de pesos devem ser de uma dimensão" + +#: utils/adt/tsrank.c:409 +msgid "array of weight is too short" +msgstr "matriz de pesos é muito pequena" + +#: utils/adt/tsrank.c:414 +msgid "array of weight must not contain nulls" +msgstr "matriz de pesos não deve conter valores nulos" + +#: utils/adt/tsrank.c:423 utils/adt/tsrank.c:749 +msgid "weight out of range" +msgstr "peso fora do intervalo" + +#: utils/adt/float.c:54 +msgid "value out of range: overflow" +msgstr "valor fora do intervalo: estouro (overflow)" + +#: utils/adt/float.c:59 +msgid "value out of range: underflow" +msgstr "valor fora do intervalo: estouro (underflow)" + +#: utils/adt/float.c:206 utils/adt/float.c:270 utils/adt/float.c:326 +#, c-format +msgid "invalid input syntax for type real: \"%s\"" +msgstr "sintaxe de entrada é inválida para tipo real: \"%s\"" + +#: utils/adt/float.c:265 +#, c-format +msgid "\"%s\" is out of range for type real" +msgstr "\"%s\" está fora do intervalo para tipo real" + +#: utils/adt/float.c:486 +#, 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:1532 utils/adt/float.c:1553 utils/adt/float.c:1574 +#: utils/adt/float.c:1596 utils/adt/float.c:1617 utils/adt/float.c:1638 +#: utils/adt/float.c:1660 utils/adt/float.c:1681 +msgid "input is out of range" +msgstr "entrada está fora do intervalo" + +#: utils/adt/float.c:2754 +msgid "lower and upper bounds must be finite" +msgstr "limites inferior e superior devem ser finitos" + +#: utils/adt/tsvector.c:215 +#, 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:222 +#, 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)" + +#: utils/adt/tsquery_rewrite.c:296 +msgid "ts_rewrite query must return two tsquery columns" +msgstr "consulta ts_rewrite deve retornar duas colunas tsquery" + +#: utils/adt/xml.c:138 +msgid "unsupported XML feature" +msgstr "funcionalidade XML não é suportado" + +#: utils/adt/xml.c:139 +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:140 +msgid "You need to rebuild PostgreSQL using --with-libxml." +msgstr "Você precisa reconstruir o PostgreSQL utilizando --with-libxml." + +#: utils/adt/xml.c:159 utils/mb/mbutils.c:515 +#, c-format +msgid "invalid encoding name \"%s\"" +msgstr "nome da codificação \"%s\" é inválido" + +#: utils/adt/xml.c:405 utils/adt/xml.c:410 +msgid "invalid XML comment" +msgstr "comentário XML inválido" + +#: utils/adt/xml.c:539 +msgid "not an XML document" +msgstr "não é um documento XML" + +#: utils/adt/xml.c:692 utils/adt/xml.c:715 +msgid "invalid XML processing instruction" +msgstr "instrução de processamento XML é inválida" + +#: utils/adt/xml.c:693 +#, 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:716 +msgid "XML processing instruction cannot contain \"?>\"." +msgstr "instrução de processamento XML não pode conter \"?>\"." + +#: utils/adt/xml.c:795 +msgid "xmlvalidate is not implemented" +msgstr "xmlvalidate não foi implementado" + +#: utils/adt/xml.c:880 +msgid "could not initialize XML library" +msgstr "não pôde inicializar biblioteca XML" + +#: utils/adt/xml.c:881 +#, 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:1448 +msgid "Invalid character value." +msgstr "Valor de caracter é inválido." + +#: utils/adt/xml.c:1451 +msgid "Space required." +msgstr "Espaço requerido." + +#: utils/adt/xml.c:1454 +msgid "standalone accepts only 'yes' or 'no'." +msgstr "standalone aceita somente 'yes' ou 'no'." + +#: utils/adt/xml.c:1457 +msgid "Malformed declaration: missing version." +msgstr "Declaração mal formada: faltando versão." + +#: utils/adt/xml.c:1460 +msgid "Missing encoding in text declaration." +msgstr "Faltando codificação em declaração." + +#: utils/adt/xml.c:1463 +msgid "Parsing XML declaration: '?>' expected." +msgstr "Analisando declaração XML: '?>' esperado." + +#: utils/adt/xml.c:1466 +#, c-format +msgid "Unrecognized libxml error code: %d." +msgstr "código de erro libxml desconhecido: %d." + +#: utils/adt/xml.c:1718 +msgid "XML does not support infinite date values." +msgstr "XML não suporta valores infinitos de date." + +#: utils/adt/xml.c:1741 utils/adt/xml.c:1768 +msgid "XML does not support infinite timestamp values." +msgstr "XML não suporta valores infinitos de timestamp." + +#: utils/adt/xml.c:2153 +msgid "invalid query" +msgstr "consulta inválida" + +#: utils/adt/xml.c:3377 +msgid "invalid array for XML namespace mapping" +msgstr "matriz inválida para mapeamento de namespace XML" + +#: utils/adt/xml.c:3378 +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:3402 +msgid "empty XPath expression" +msgstr "expressão XPath vazia" + +#: utils/adt/xml.c:3450 +msgid "neither namespace name nor URI may be null" +msgstr "namespace ou URI não podem ser nulo" + +#: utils/adt/xml.c:3457 +#, 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/adt/tsvector_parser.c:136 utils/adt/tsquery.c:156 +#: utils/adt/tsquery.c:392 +#, c-format +msgid "syntax error in tsquery: \"%s\"" +msgstr "erro de sintaxe em tsquery: \"%s\"" + +#: utils/adt/tsvector_parser.c:137 +#, c-format +msgid "syntax error in tsvector: \"%s\"" +msgstr "erro de sintaxe em tsvector: \"%s\"" + +#: utils/adt/tsvector_parser.c:202 +#, c-format +msgid "there is no escaped character: \"%s\"" +msgstr "não há caracter com escape: \"%s\"" + +#: utils/adt/tsvector_parser.c:319 +#, c-format +msgid "wrong position info in tsvector: \"%s\"" +msgstr "informação incorreta sobre posição no tsvector: \"%s\"" + +#: utils/adt/rowtypes.c:99 utils/adt/rowtypes.c:488 +msgid "input of anonymous composite types is not implemented" +msgstr "entrada de tipos compostos anônimos não está implementada" + +#: 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:153 +msgid "Missing left parenthesis." +msgstr "Faltando parêntese esquerdo." + +#: utils/adt/rowtypes.c:181 +msgid "Too few columns." +msgstr "Poucas colunas." + +#: utils/adt/rowtypes.c:205 utils/adt/rowtypes.c:213 +msgid "Unexpected end of input." +msgstr "Fim da entrada inesperado." + +#: utils/adt/rowtypes.c:264 +msgid "Too many columns." +msgstr "Muitas colunas." + +#: utils/adt/rowtypes.c:272 +msgid "Junk after right parenthesis." +msgstr "Lixo após parêntese direito." + +#: utils/adt/rowtypes.c:537 +#, c-format +msgid "wrong number of columns: %d, expected %d" +msgstr "número de colunas incorreto: %d, esperado %d" + +#: utils/adt/rowtypes.c:564 +#, c-format +msgid "wrong data type: %u, expected %u" +msgstr "tipo de dado incorreto: %u, esperado %u" + +#: utils/adt/rowtypes.c:572 utils/adt/arrayfuncs.c:1411 libpq/pqformat.c:556 +#: libpq/pqformat.c:574 libpq/pqformat.c:595 +msgid "insufficient data left in message" +msgstr "dados insuficientes na mensagem" + +#: utils/adt/rowtypes.c:625 +#, 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:925 utils/adt/rowtypes.c:1160 +#, 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:1011 utils/adt/rowtypes.c:1231 +msgid "cannot compare record types with different numbers of columns" +msgstr "não pode comparar tipos record com quantidade diferente de colunas" + +#: utils/adt/rowtypes.c:1185 utils/adt/arrayfuncs.c:3176 +#: utils/adt/arrayfuncs.c:3695 parser/parse_oper.c:225 +#, 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" + +#: utils/adt/regproc.c:123 utils/adt/regproc.c:143 +#, c-format +msgid "more than one function named \"%s\"" +msgstr "mais de uma função com nome \"%s\"" + +#: 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 +#, c-format +msgid "operator does not exist: %s" +msgstr "operador não existe: %s" + +#: utils/adt/regproc.c:468 utils/adt/regproc.c:488 +#, c-format +msgid "more than one operator named %s" +msgstr "mais de um operador com nome %s" + +#: utils/adt/regproc.c:630 gram.y:6216 +msgid "missing argument" +msgstr "faltando argumento" + +#: utils/adt/regproc.c:631 gram.y:6217 +msgid "Use NONE to denote the missing argument of a unary operator." +msgstr "Utilize NONE para denotar argumento em falta de um operador unário." + +#: utils/adt/regproc.c:636 +msgid "Provide two argument types for operator." +msgstr "Forneça dois tipos de argumento para operador." + +#: utils/adt/regproc.c:1383 +msgid "expected a left parenthesis" +msgstr "parêntese esquerdo esperado" + +#: utils/adt/regproc.c:1399 +msgid "expected a right parenthesis" +msgstr "parêntese direito esperado" + +#: utils/adt/regproc.c:1418 +msgid "expected a type name" +msgstr "nome de tipo esperado" + +#: utils/adt/regproc.c:1450 +msgid "improper type name" +msgstr "nome de tipo inválido" + +#: utils/adt/pg_locale.c:953 +#, 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:956 +#, 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:1043 +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" + +#: utils/adt/pg_locale.c:1058 +msgid "nondefault collations are not supported on this platform" +msgstr "ordenações não-padrão não são suportados nessa plataforma" + +#: utils/adt/pg_locale.c:1229 +msgid "invalid multibyte character for locale" +msgstr "caracter multibyte é inválido para configuração regional" + +#: utils/adt/pg_locale.c:1230 +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/varchar.c:152 utils/adt/varchar.c:305 +#, c-format +msgid "value too long for type character(%d)" +msgstr "valor é muito longo para tipo character(%d)" + +#: utils/adt/varchar.c:467 utils/adt/varchar.c:588 +#, c-format +msgid "value too long for type character varying(%d)" +msgstr "valor é muito longo para tipo character varying(%d)" + +#: utils/adt/uuid.c:128 +#, c-format +msgid "invalid input syntax for uuid: \"%s\"" +msgstr "sintaxe de entrada é inválida para uuid: \"%s\"" + +#: utils/adt/arrayfuncs.c:235 utils/adt/arrayfuncs.c:247 +msgid "missing dimension value" +msgstr "faltando valor da dimensão" + +#: utils/adt/arrayfuncs.c:257 +msgid "missing \"]\" in array dimensions" +msgstr "faltando \"]\" nas dimensões da matriz" + +#: 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 "limite superior não pode ser menor do que limite inferior" + +#: utils/adt/arrayfuncs.c:277 utils/adt/arrayfuncs.c:303 +msgid "array value must start with \"{\" or dimension information" +msgstr "valor da matriz deve iniciar com \"{\" ou dimensão" + +#: utils/adt/arrayfuncs.c:291 +msgid "missing assignment operator" +msgstr "faltando operador de atribuição" + +#: utils/adt/arrayfuncs.c:308 utils/adt/arrayfuncs.c:314 +msgid "array dimensions incompatible with array literal" +msgstr "dimensões da matriz são incompatíveis com matriz" + +#: 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 "matriz mal formada: \"%s\"" + +#: utils/adt/arrayfuncs.c:1249 +msgid "invalid array flags" +msgstr "marcações de matriz são inválidas" + +#: utils/adt/arrayfuncs.c:1257 +msgid "wrong element type" +msgstr "tipo de elemento incorreto" + +#: utils/adt/arrayfuncs.c:1307 utils/cache/lsyscache.c:2484 +#, 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:1447 +#, 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:1529 utils/cache/lsyscache.c:2517 +#, 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:1903 +msgid "slices of fixed-length arrays not implemented" +msgstr "segmentos de matrizes de tamanho fixo não está implementado" + +#: utils/adt/arrayfuncs.c:2076 utils/adt/arrayfuncs.c:2098 +#: utils/adt/arrayfuncs.c:2132 utils/adt/arrayfuncs.c:2418 +#: utils/adt/arrayfuncs.c:4916 utils/adt/arrayfuncs.c:4948 +#: utils/adt/arrayfuncs.c:4965 +msgid "wrong number of array subscripts" +msgstr "número de índices da matriz incorreto" + +#: utils/adt/arrayfuncs.c:2081 utils/adt/arrayfuncs.c:2174 +#: utils/adt/arrayfuncs.c:2469 +msgid "array subscript out of range" +msgstr "índice da matriz está fora do intervalo" + +#: utils/adt/arrayfuncs.c:2086 +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:2372 +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:2408 utils/adt/arrayfuncs.c:2495 +msgid "source array too small" +msgstr "matriz de origem muito pequena" + +#: utils/adt/arrayfuncs.c:3050 +msgid "null array element not allowed in this context" +msgstr "elemento nulo da matriz não é permitido neste contexto" + +#: utils/adt/arrayfuncs.c:3153 utils/adt/arrayfuncs.c:3361 +#: utils/adt/arrayfuncs.c:3678 +msgid "cannot compare arrays of different element types" +msgstr "não pode comparar matrizes de tipos de elementos diferentes" + +#: utils/adt/arrayfuncs.c:3563 +#, 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:4814 utils/adt/arrayfuncs.c:4854 +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:4917 utils/adt/arrayfuncs.c:4949 +msgid "Dimension array must be one dimensional." +msgstr "Matriz de dimensões deve ser de uma dimensão." + +#: utils/adt/arrayfuncs.c:4922 utils/adt/arrayfuncs.c:4954 +msgid "wrong range of array subscripts" +msgstr "intervalo incorreto de índices da matriz" + +#: utils/adt/arrayfuncs.c:4923 utils/adt/arrayfuncs.c:4955 +msgid "Lower bound of dimension array must be one." +msgstr "Limite inferior da matriz de dimensões deve ser um." + +#: utils/adt/arrayfuncs.c:4928 utils/adt/arrayfuncs.c:4960 +msgid "dimension values cannot be null" +msgstr "valores de dimensão não podem ser nulos" + +#: utils/adt/arrayfuncs.c:4966 +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/cash.c:237 +#, c-format +msgid "invalid input syntax for type money: \"%s\"" +msgstr "sintaxe de entrada é inválida para tipo money: \"%s\"" + +#: utils/adt/selfuncs.c:4949 +msgid "case insensitive matching not supported on type bytea" +msgstr "" +"correspondência não sensível a maiúsculas/minúsculas não é suportada pelo " +"tipo bytea" + +#: utils/adt/selfuncs.c:5052 +msgid "regular-expression matching not supported on type bytea" +msgstr "correspondência de expressão regular não é suportada pelo tipo bytea" + +#: utils/adt/tsquery.c:177 +#, c-format +msgid "no operand in tsquery: \"%s\"" +msgstr "nenhum operando em tsquery: \"%s\"" + +#: utils/adt/tsquery.c:250 +#, c-format +msgid "value is too big in tsquery: \"%s\"" +msgstr "valor é muito grande em tsquery: \"%s\"" + +#: utils/adt/tsquery.c:255 +#, c-format +msgid "operand is too long in tsquery: \"%s\"" +msgstr "operando é muito longo em tsquery: \"%s\"" + +#: utils/adt/tsquery.c:283 +#, c-format +msgid "word is too long in tsquery: \"%s\"" +msgstr "palavra é muito longa em tsquery: \"%s\"" + +#: utils/adt/tsquery.c:512 +#, c-format +msgid "text-search query doesn't contain lexemes: \"%s\"" +msgstr "consulta de busca textual não contém lexemas: \"%s\"" + +#: utils/adt/formatting.c:492 +msgid "invalid format specification for an interval value" +msgstr "especificação do formato é inválida para um valor interval" + +#: utils/adt/formatting.c:493 +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 +msgid "\"EEEE\" must be the last pattern used" +msgstr "\"EEEE\" deve ser o último padrão utilizado" + +#: utils/adt/formatting.c:1068 +msgid "\"9\" must be ahead of \"PR\"" +msgstr "\"9\" deve estar a frente de \"PR\"" + +#: utils/adt/formatting.c:1084 +msgid "\"0\" must be ahead of \"PR\"" +msgstr "\"0\" deve estar a frente de \"PR\"" + +#: utils/adt/formatting.c:1110 +msgid "multiple decimal points" +msgstr "múltiplos separadores decimais" + +#: utils/adt/formatting.c:1114 utils/adt/formatting.c:1197 +msgid "cannot use \"V\" and decimal point together" +msgstr "não pode utilizar \"V\" e separador decimal juntos" + +#: utils/adt/formatting.c:1126 +msgid "cannot use \"S\" twice" +msgstr "não pode utilizar \"S\" duas vezes" + +#: utils/adt/formatting.c:1130 +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:1150 +msgid "cannot use \"S\" and \"MI\" together" +msgstr "não pode utilizar \"S\" e \"MI\" juntos" + +#: utils/adt/formatting.c:1160 +msgid "cannot use \"S\" and \"PL\" together" +msgstr "não pode utilizar \"S\" e \"PL\" juntos" + +#: utils/adt/formatting.c:1170 +msgid "cannot use \"S\" and \"SG\" together" +msgstr "não pode utilizar \"S\" e \"SG\" juntos" + +#: utils/adt/formatting.c:1179 +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:1205 +msgid "cannot use \"EEEE\" twice" +msgstr "não pode utilizar \"EEEE\" duas vezes" + +#: utils/adt/formatting.c:1211 +msgid "\"EEEE\" is incompatible with other formats" +msgstr "\"EEEE\" é imcompatível com outros formatos" + +#: utils/adt/formatting.c:1212 +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: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:1564 +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:1630 utils/adt/formatting.c:1680 +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:1747 utils/adt/formatting.c:1809 +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:2086 +msgid "invalid combination of date conventions" +msgstr "combinação inválida de convenções do tipo date" + +#: utils/adt/formatting.c:2087 +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:2104 +#, 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:2106 +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:2167 +#, 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:2169 +#, c-format +msgid "Field requires %d characters, but only %d remain." +msgstr "Campo requer %d caracteres, mas só restam %d." + +#: utils/adt/formatting.c:2172 utils/adt/formatting.c:2186 +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:2182 utils/adt/formatting.c:2195 +#: utils/adt/formatting.c:2325 +#, c-format +msgid "invalid value \"%s\" for \"%s\"" +msgstr "valor \"%s\" inválido para \"%s\"" + +#: utils/adt/formatting.c:2184 +#, 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:2197 +msgid "Value must be an integer." +msgstr "Valor deve ser um inteiro." + +#: utils/adt/formatting.c:2202 +#, 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:2204 +#, 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:2327 +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:2876 +msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date" +msgstr "formatos \"TZ\"/\"tz\" não são suportadas em to_date" + +#: utils/adt/formatting.c:2980 +msgid "invalid input string for \"Y,YYY\"" +msgstr "cadeia de caracteres de entrada é inválida para \"Y,YYY\"" + +#: utils/adt/formatting.c:3503 +#, c-format +msgid "hour \"%d\" is invalid for the 12-hour clock" +msgstr "hora \"%d\" é inválido para relógio de 12 horas" + +#: utils/adt/formatting.c:3505 +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:3543 +#, c-format +msgid "inconsistent use of year %04d and \"BC\"" +msgstr "uso inconsistente do ano %04d e \"BC\"" + +#: utils/adt/formatting.c:3590 +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:4452 +msgid "\"EEEE\" not supported for input" +msgstr "\"EEEE\" não é suportado na entrada" + +#: utils/adt/formatting.c:4464 +msgid "\"RN\" not supported for input" +msgstr "\"RN\" não é suportado na entrada" + +#: utils/misc/guc.c:525 +msgid "Ungrouped" +msgstr "Desagrupado" + +#: utils/misc/guc.c:527 +msgid "File Locations" +msgstr "Locais de Arquivos" + +#: utils/misc/guc.c:529 +msgid "Connections and Authentication" +msgstr "Conexões e Autenticação" + +#: utils/misc/guc.c:531 +msgid "Connections and Authentication / Connection Settings" +msgstr "Conexões e Autenticação / Configurações sobre Conexão" + +#: utils/misc/guc.c:533 +msgid "Connections and Authentication / Security and Authentication" +msgstr "Conexões e Autenticação / Segurança e Autenticação" + +#: utils/misc/guc.c:535 +msgid "Resource Usage" +msgstr "Uso de Recursos" + +#: utils/misc/guc.c:537 +msgid "Resource Usage / Memory" +msgstr "Uso de Recursos / Memória" + +#: utils/misc/guc.c:539 +msgid "Resource Usage / Kernel Resources" +msgstr "Uso de Recursos / Recursos do Kernel" + +#: utils/misc/guc.c:541 +msgid "Resource Usage / Cost-Based Vacuum Delay" +msgstr "Uso de Recursos / Atraso de Limpeza Baseado em Custo" + +#: utils/misc/guc.c:543 +msgid "Resource Usage / Background Writer" +msgstr "Uso de Recursos / Escritor de Segundo Plano" + +#: utils/misc/guc.c:545 +msgid "Resource Usage / Asynchronous Behavior" +msgstr "Uso de Recursos / Comportamento Assíncrono" + +#: utils/misc/guc.c:547 +msgid "Write-Ahead Log" +msgstr "Log de Escrita Prévia" + +#: utils/misc/guc.c:549 +msgid "Write-Ahead Log / Settings" +msgstr "Log de Escrita Prévia / Configurações" + +#: utils/misc/guc.c:551 +msgid "Write-Ahead Log / Checkpoints" +msgstr "Log de Escrita Prévia / Pontos de Controle" + +#: utils/misc/guc.c:553 +msgid "Write-Ahead Log / Archiving" +msgstr "Log de Escrita Prévia / Arquivamento" + +#: utils/misc/guc.c:555 +msgid "Replication" +msgstr "Replicação" + +#: utils/misc/guc.c:557 +msgid "Replication / Master Server" +msgstr "Replicação / Servidor Principal" + +#: utils/misc/guc.c:559 +msgid "Replication / Standby Servers" +msgstr "Replicação / Servidores em Espera" + +#: utils/misc/guc.c:561 +msgid "Query Tuning" +msgstr "Ajuste de Consultas" + +#: utils/misc/guc.c:563 +msgid "Query Tuning / Planner Method Configuration" +msgstr "Ajuste de Consultas / Configuração dos Métodos do Planejador" + +#: utils/misc/guc.c:565 +msgid "Query Tuning / Planner Cost Constants" +msgstr "Ajuste de Consultas / Constantes de Custo do Planejador" + +#: utils/misc/guc.c:567 +msgid "Query Tuning / Genetic Query Optimizer" +msgstr "Ajuste de Consultas / Otimizador de Consultas Genéticas" + +#: utils/misc/guc.c:569 +msgid "Query Tuning / Other Planner Options" +msgstr "Ajuste de Consultas / Outras Opções do Planejador" + +#: utils/misc/guc.c:571 +msgid "Reporting and Logging" +msgstr "Relatório e Registro" + +#: utils/misc/guc.c:573 +msgid "Reporting and Logging / Where to Log" +msgstr "Relatório e Registro / Onde Registrar" + +#: utils/misc/guc.c:575 +msgid "Reporting and Logging / When to Log" +msgstr "Relatório e Registro / Quando Registrar" + +#: utils/misc/guc.c:577 +msgid "Reporting and Logging / What to Log" +msgstr "Relatório e Registro / O que Registrar" + +#: utils/misc/guc.c:579 +msgid "Statistics" +msgstr "Estatísticas" + +#: utils/misc/guc.c:581 +msgid "Statistics / Monitoring" +msgstr "Estatísticas / Monitoramento" + +#: utils/misc/guc.c:583 +msgid "Statistics / Query and Index Statistics Collector" +msgstr "Estatísticas / Coletor de Estatísticas de Consultas e Índices" + +#: utils/misc/guc.c:585 +msgid "Autovacuum" +msgstr "Limpeza Automática" + +#: utils/misc/guc.c:587 +msgid "Client Connection Defaults" +msgstr "Valores Padrão de Conexão" + +#: utils/misc/guc.c:589 +msgid "Client Connection Defaults / Statement Behavior" +msgstr "Valores Padrão de Conexão / Comportamento do Comando" + +#: utils/misc/guc.c:591 +msgid "Client Connection Defaults / Locale and Formatting" +msgstr "Valores Padrão de Conexão / Configuração Regional e Formatação" + +#: utils/misc/guc.c:593 +msgid "Client Connection Defaults / Other Defaults" +msgstr "Valores Padrão de Conexão / Outros Valores" + +#: utils/misc/guc.c:595 +msgid "Lock Management" +msgstr "Gerência de Bloqueio" + +#: utils/misc/guc.c:597 +msgid "Version and Platform Compatibility" +msgstr "Compatibilidade de Versão e Plataforma" + +#: utils/misc/guc.c:599 +msgid "Version and Platform Compatibility / Previous PostgreSQL Versions" +msgstr "" +"Compatibilidade de Versão e Plataforma / Versões Anteriores do PostgreSQL" + +#: utils/misc/guc.c:601 +msgid "Version and Platform Compatibility / Other Platforms and Clients" +msgstr "Compatibilidade de Versão e Plataforma / Outras Plataformas e Clientes" + +#: utils/misc/guc.c:603 +msgid "Error Handling" +msgstr "Manipulação de Erro" + +#: utils/misc/guc.c:605 +msgid "Preset Options" +msgstr "Opções Pré-Definidas" + +#: utils/misc/guc.c:607 +msgid "Customized Options" +msgstr "Opções Customizadas" + +#: utils/misc/guc.c:609 +msgid "Developer Options" +msgstr "Opções para Desenvolvedores" + +#: utils/misc/guc.c:663 +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:672 +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:681 +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:690 +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:699 +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:708 +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:717 +msgid "Enables the planner's use of materialization." +msgstr "Habilita o uso de materialização pelo planejador." + +#: utils/misc/guc.c:726 +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:735 +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:744 +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:753 +msgid "Enables genetic query optimization." +msgstr "Habilita a otimização de consultas genéticas." + +#: utils/misc/guc.c:754 +msgid "This algorithm attempts to do planning without exhaustive searching." +msgstr "Esse algoritmo tenta fazer o planejamento sem busca exaustiva." + +#: utils/misc/guc.c:764 +msgid "Shows whether the current user is a superuser." +msgstr "Mostra se o usuário atual é um super-usuário." + +#: utils/misc/guc.c:774 +msgid "Enables advertising the server via Bonjour." +msgstr "Habilita anunciar o servidor via Bonjour." + +#: utils/misc/guc.c:783 +msgid "Enables SSL connections." +msgstr "Habilita conexões SSL." + +#: utils/misc/guc.c:792 +msgid "Forces synchronization of updates to disk." +msgstr "Força sincronização de atualizações com o disco." + +#: utils/misc/guc.c:793 +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:804 +msgid "Continues processing past damaged page headers." +msgstr "Continua processando cabeçalhos antigos de páginas danificadas." + +#: utils/misc/guc.c:805 +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:818 +msgid "Writes full pages to WAL when first modified after a checkpoint." msgstr "" -"O agrupamento de banco de dados foi inicializado sem USE_FLOAT8_BYVAL, mas o " -"servidor foi compilado com USE_FLOAT8_BYVAL." +"Escreve páginas completas no WAL quando modificadas após um ponto de " +"controle." -#: access/transam/xlog.c:4713 +#: utils/misc/guc.c:819 msgid "" -"The database cluster was initialized with USE_FLOAT8_BYVAL but the server " -"was compiled without USE_FLOAT8_BYVAL." +"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 "" -"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:4956 -#, 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:4962 -#, 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" +"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." -#: access/transam/xlog.c:4967 -#, 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" +#: utils/misc/guc.c:831 +msgid "Runs the server silently." +msgstr "Executa o servidor silenciosamente." -#: access/transam/xlog.c:5129 -#, 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" +#: utils/misc/guc.c:832 +msgid "" +"If this parameter is set, the server will automatically run in the " +"background and any controlling terminals are dissociated." +msgstr "" +"Se esse parâmetro está definido, o servidor executará automaticamente em " +"segundo plano e qualquer terminal de controle é dissociado." -#: access/transam/xlog.c:5153 -#, c-format -msgid "restore_command = '%s'" -msgstr "restore_command = '%s'" +#: utils/misc/guc.c:841 +msgid "Logs each checkpoint." +msgstr "Registra cada ponto de controle." -#: access/transam/xlog.c:5160 -#, c-format -msgid "recovery_end_command = '%s'" -msgstr "recovery_end_command = '%s'" +#: utils/misc/guc.c:850 +msgid "Logs each successful connection." +msgstr "Registra cada conexão bem sucedida." -#: access/transam/xlog.c:5167 -#, c-format -msgid "archive_cleanup_command = '%s'" -msgstr "archive_cleanup_command = '%s'" +#: utils/misc/guc.c:859 +msgid "Logs end of a session, including duration." +msgstr "Registra o fim da sessão, incluindo a duração." -#: access/transam/xlog.c:5181 -#, c-format -msgid "recovery_target_timeline is not a valid number: \"%s\"" -msgstr "recovery_target_timeline não é um número válido: \"%s\"" +#: utils/misc/guc.c:868 +msgid "Turns on various assertion checks." +msgstr "Ativa várias verificações de asserção." -#: access/transam/xlog.c:5186 -#, c-format -msgid "recovery_target_timeline = %u" -msgstr "recovery_target_timeline = %u" +#: utils/misc/guc.c:869 +msgid "This is a debugging aid." +msgstr "Esse é um auxílio na depuração." -#: access/transam/xlog.c:5189 -msgid "recovery_target_timeline = latest" -msgstr "recovery_target_timeline = latest" +#: utils/misc/guc.c:883 +msgid "Terminate session on any error." +msgstr "Terminar sessão após qualquer erro." -#: access/transam/xlog.c:5197 -#, c-format -msgid "recovery_target_xid is not a valid number: \"%s\"" -msgstr "recovery_target_xid não é um número válido: \"%s\"" +#: utils/misc/guc.c:892 +msgid "Reinitialize server after backend crash." +msgstr "Reinicializar servidor após queda do processo servidor." -#: access/transam/xlog.c:5200 -#, c-format -msgid "recovery_target_xid = %u" -msgstr "recovery_target_xid = %u" +#: utils/misc/guc.c:902 +msgid "Logs the duration of each completed SQL statement." +msgstr "Registra a duração de cada sentença SQL completa." -#: access/transam/xlog.c:5223 -#, c-format -msgid "recovery_target_time = '%s'" -msgstr "recovery_target_time = '%s'" +#: utils/misc/guc.c:911 +msgid "Logs each query's parse tree." +msgstr "Registra cada árvore de análise de consulta." -#: access/transam/xlog.c:5236 -#, c-format -msgid "recovery_target_inclusive = %s" -msgstr "recovery_target_inclusive = %s" +#: utils/misc/guc.c:920 +msgid "Logs each query's rewritten parse tree." +msgstr "Registra cada árvore de análise reescrita de consulta." -#: access/transam/xlog.c:5245 -#, c-format -msgid "standby_mode = '%s'" -msgstr "standby_mode = '%s'" +#: utils/misc/guc.c:929 +msgid "Logs each query's execution plan." +msgstr "Registra cada plano de execução de consulta." -#: access/transam/xlog.c:5251 -#, c-format -msgid "primary_conninfo = '%s'" -msgstr "primary_conninfo = '%s'" +#: utils/misc/guc.c:938 +msgid "Indents parse and plan tree displays." +msgstr "Identa exibição da árvore de análise e plano." -#: access/transam/xlog.c:5258 -#, c-format -msgid "trigger_file = '%s'" -msgstr "trigger_file = '%s'" +#: utils/misc/guc.c:947 +msgid "Writes parser performance statistics to the server log." +msgstr "Escreve estatísticas de performance do analisador no log do servidor." -#: access/transam/xlog.c:5263 -#, c-format -msgid "unrecognized recovery parameter \"%s\"" -msgstr "parâmetro de recuperação \"%s\" desconhecido" +#: utils/misc/guc.c:956 +msgid "Writes planner performance statistics to the server log." +msgstr "Escreve estatísticas de performance do planejador no log do servidor." -#: access/transam/xlog.c:5271 -#, c-format -msgid "syntax error in recovery command file: %s" -msgstr "erro de sintaxe no arquivo de comando de recuperação: %s" +#: utils/misc/guc.c:965 +msgid "Writes executor performance statistics to the server log." +msgstr "Escreve estatísticas de performance do executor no log do servidor." -#: access/transam/xlog.c:5273 -msgid "Lines should have the format parameter = 'value'." -msgstr "Linhas devem ter o formato parâmetro = 'valor'." +#: utils/misc/guc.c:974 +msgid "Writes cumulative performance statistics to the server log." +msgstr "Escreve estatísticas de performance acumulativas no log do servidor." -#: access/transam/xlog.c:5282 -#, 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" +#: utils/misc/guc.c:984 utils/misc/guc.c:1049 utils/misc/guc.c:1059 +#: utils/misc/guc.c:1069 utils/misc/guc.c:1079 utils/misc/guc.c:1804 +#: utils/misc/guc.c:1814 +msgid "No description available." +msgstr "Nenhuma descrição disponível." -#: access/transam/xlog.c:5284 -#, fuzzy -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." +#: utils/misc/guc.c:996 +msgid "Collects information about executing commands." +msgstr "Coleta informação sobre execução de comandos." -#: access/transam/xlog.c:5290 -#, fuzzy, c-format +#: utils/misc/guc.c:997 msgid "" -"recovery command file \"%s\" must specify restore_command when standby mode " -"is not enabled" +"Enables the collection of information on the currently executing command of " +"each session, along with the time at which that command began execution." msgstr "" -"arquivo do comando de recuperação \"%s\" deve especificar restore_command " -"quando modo em espera não estiver habilitado" - -#: access/transam/xlog.c:5310 -#, 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:5435 -msgid "archive recovery complete" -msgstr "recuperação do archive está completa" - -#: access/transam/xlog.c:5525 -#, 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:5530 -#, 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" +"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." -#: access/transam/xlog.c:5538 -#, 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" +#: utils/misc/guc.c:1007 +msgid "Collects statistics on database activity." +msgstr "Coleta estatísticas sobre a atividade do banco de dados." -#: access/transam/xlog.c:5543 -#, 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" +#: utils/misc/guc.c:1017 +msgid "Updates the process title to show the active SQL command." +msgstr "Atualiza o título do processo para mostrar o comando SQL ativo." -#: access/transam/xlog.c:5626 -#, fuzzy, c-format +#: utils/misc/guc.c:1018 msgid "" -"hot standby is not possible because %s = %d is a lower setting than on the " -"master server (its value was %d)" +"Enables updating of the process title every time a new SQL command is " +"received by the server." msgstr "" -"servidor em espera não é possível porque %s = %d é uma configuração mais baixa do que no servidor principal (seu valor era %d)" +"Habilita a atualização do título do processo toda vez que um comando SQL " +"novo é recebido pelo servidor." -#: access/transam/xlog.c:5648 -msgid "WAL was generated with wal_level=minimal, data may be missing" -msgstr "WAL foi gerado com wal_level=minimal, dados podem estar faltando" +#: utils/misc/guc.c:1027 +msgid "Starts the autovacuum subprocess." +msgstr "Inicia o subprocesso de limpeza automática." -#: access/transam/xlog.c:5649 -#, fuzzy -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 física." +#: utils/misc/guc.c:1037 +msgid "Generates debugging output for LISTEN and NOTIFY." +msgstr "Gera saída de depuração para LISTEN e NOTIFY." -#: access/transam/xlog.c:5660 -#, fuzzy -msgid "" -"hot standby is not possible because wal_level was not set to \"hot_standby\" " -"on the master server" -msgstr "servidor em espera não é possível porque wal_level não foi definido para \"hot_standby\" no servidor principal" +#: utils/misc/guc.c:1091 +msgid "Logs long lock waits." +msgstr "Registra esperas devido a bloqueios longos." -#: access/transam/xlog.c:5661 +#: utils/misc/guc.c:1101 +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:1102 msgid "" -"Either set wal_level to \"hot_standby\" on the master, or turn off " -"hot_standby here." +"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 "" -"Defina wal_level para \"hot_standby\" no primário ou desabilite hot_standby " -"aqui." - -#: access/transam/xlog.c:5708 -msgid "control file contains invalid data" -msgstr "arquivo de controle contém dados inválidos" - -#: access/transam/xlog.c:5712 -#, c-format -msgid "database system was shut down at %s" -msgstr "sistema de banco de dados foi desligado em %s" - -#: access/transam/xlog.c:5716 -#, 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" +"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." -#: access/transam/xlog.c:5720 -#, 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" +#: utils/misc/guc.c:1113 +msgid "Causes subtables to be included by default in various commands." +msgstr "Causa subtabelas serem incluídas por padrão em vários comandos." -#: access/transam/xlog.c:5724 -#, 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" +#: utils/misc/guc.c:1122 +msgid "Encrypt passwords." +msgstr "Criptografa senhas." -#: access/transam/xlog.c:5726 +#: utils/misc/guc.c:1123 msgid "" -"This probably means that some data is corrupted and you will have to use the " -"last backup for recovery." +"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 "" -"Isso provavelmente significa que algum dado foi corrompido e você terá que " -"utilizar o último backup para recuperação." +"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." -#: access/transam/xlog.c:5730 -#, 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" +#: utils/misc/guc.c:1133 +msgid "Treats \"expr=NULL\" as \"expr IS NULL\"." +msgstr "Trata \"expr=NULL\" como \"expr IS NULL\"." -#: access/transam/xlog.c:5732 +#: utils/misc/guc.c:1134 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:5736 -#, 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:5785 -#, c-format -msgid "requested timeline %u is not a child of database system timeline %u" +"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 "" -"linha do tempo solicitada %u não é descendente da linha do tempo %u do " -"sistema de banco de dados" - -#: access/transam/xlog.c:5803 -#, fuzzy -msgid "entering standby mode" -msgstr "entrando no modo em espera" - -#: access/transam/xlog.c:5806 -#, fuzzy, c-format -msgid "starting point-in-time recovery to XID %u" -msgstr "iniciando recuperação do arquivador" - -#: access/transam/xlog.c:5810 -#, fuzzy, c-format -msgid "starting point-in-time recovery to %s" -msgstr "iniciando recuperação do arquivador" - -#: access/transam/xlog.c:5814 -msgid "starting archive recovery" -msgstr "iniciando recuperação do arquivador" +"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)." -#: access/transam/xlog.c:5827 access/transam/xlog.c:5852 -#, c-format -msgid "checkpoint record is at %X/%X" -msgstr "registro do ponto de controle está em %X/%X" +#: utils/misc/guc.c:1146 +msgid "Enables per-database user names." +msgstr "Habilita uso de nomes de usuário por banco de dados." -#: access/transam/xlog.c:5834 -msgid "could not locate required checkpoint record" -msgstr "não pôde localizar registro do ponto de controle requerido" +#: utils/misc/guc.c:1156 +msgid "This parameter doesn't do anything." +msgstr "Esse parâmetro não faz nada." -#: access/transam/xlog.c:5835 -#, c-format +#: utils/misc/guc.c:1157 msgid "" -"If you are not restoring from a backup, try removing the file \"%s/" -"backup_label\"." +"It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-" +"vintage clients." msgstr "" -"Se você não está restaurando uma cópia de segurança, tente remover o arquivo " -"\"%s/backup_label\"." - -#: access/transam/xlog.c:5862 access/transam/xlog.c:5877 -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:5871 -#, 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:5886 -#, c-format -msgid "redo record is at %X/%X; shutdown %s" -msgstr "registro de redo está em %X/%X; desligamento %s" +"Isso está aqui para que não seja necessário SET AUTOCOMMIT TO ON em clientes " +"7.3 e anteriores." -#: access/transam/xlog.c:5890 -#, c-format -msgid "next transaction ID: %u/%u; next OID: %u" -msgstr "próximo ID de transação: %u/%u; próximo OID: %u" +#: utils/misc/guc.c:1166 +msgid "Sets the default read-only status of new transactions." +msgstr "Define o status padrão como somente leitura para novas transações." -#: access/transam/xlog.c:5894 -#, c-format -msgid "next MultiXactId: %u; next MultiXactOffset: %u" -msgstr "próximo MultiXactId: %u; próximo MultiXactOffset: %u" +#: utils/misc/guc.c:1175 +msgid "Sets the current transaction's read-only status." +msgstr "Define o status da transação atual como somente leitura." -#: access/transam/xlog.c:5897 -#, fuzzy, c-format -msgid "oldest unfrozen transaction ID: %u, in database %u" -msgstr "extensão da relação %u do banco de dados %u" +#: utils/misc/guc.c:1185 +msgid "Sets the default deferrable status of new transactions." +msgstr "Define o status de postergação padrão para novas transações." -#: access/transam/xlog.c:5901 -msgid "invalid next transaction ID" -msgstr "próximo ID de transação é inválido" +#: utils/misc/guc.c:1194 +msgid "" +"Whether to defer a read-only serializable transaction until it can be " +"executed with no possible serialization failures." +msgstr "" +"Se adia uma transação serializável somente leitura até que ela possa ser " +"executada sem falhas possíveis na serialização." -#: access/transam/xlog.c:5920 -msgid "invalid redo in checkpoint record" -msgstr "redo é inválido no registro do ponto de controle" +#: utils/misc/guc.c:1204 +msgid "Check function bodies during CREATE FUNCTION." +msgstr "Verifica corpo da função durante CREATE FUNCTION." -#: access/transam/xlog.c:5931 -msgid "invalid redo record in shutdown checkpoint" -msgstr "registro de redo é inválido no ponto de controle de desligamento" +#: utils/misc/guc.c:1213 +msgid "Enable input of NULL elements in arrays." +msgstr "Habilita entrada de elementos NULL em matrizes." -#: access/transam/xlog.c:5961 +#: utils/misc/guc.c:1214 msgid "" -"database system was not properly shut down; automatic recovery in progress" +"When turned on, unquoted NULL in an array input value means a null value; " +"otherwise it is taken literally." msgstr "" -"sistema de banco de dados não foi desligado corretamente; recuperação " -"automática está em andamento" - -#: access/transam/xlog.c:6026 -#, fuzzy -msgid "initializing for hot standby" -msgstr "inicialização para servidor em espera" +"Quando habilitado, NULL sem aspas em um valor de entrada de uma matriz " +"significa o valor nulo; caso contrário ele é utilizado literalmente." -#: access/transam/xlog.c:6153 -#, c-format -msgid "redo starts at %X/%X" -msgstr "redo inicia em %X/%X" +#: utils/misc/guc.c:1224 +msgid "Create new tables with OIDs by default." +msgstr "Cria novas tabelas com OIDs por padrão." -#: access/transam/xlog.c:6252 -#, c-format -msgid "redo done at %X/%X" -msgstr "redo pronto em %X/%X" +#: utils/misc/guc.c:1233 +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." -#: access/transam/xlog.c:6257 access/transam/xlog.c:7726 -#, c-format -msgid "last completed transaction was at log time %s" -msgstr "última transação efetivada foi em %s" +#: utils/misc/guc.c:1242 +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." -#: access/transam/xlog.c:6265 -msgid "redo is not required" -msgstr "redo não é requerido" +#: utils/misc/guc.c:1253 +msgid "Emit information about resource usage in sorting." +msgstr "Produz informação sobre uso de recurso ao ordenar." -#: access/transam/xlog.c:6305 -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" +#: utils/misc/guc.c:1267 +msgid "Generate debugging output for synchronized scanning." +msgstr "Gera saída de depuração para busca sincronizada." -#: access/transam/xlog.c:6308 -msgid "WAL ends before consistent recovery point" -msgstr "Log de transação termina antes de ponto de recuperação consistente" +#: utils/misc/guc.c:1282 +msgid "Enable bounded sorting using heap sort." +msgstr "Habilita ordenação limitada utilizando ordenção de pilha." -#: access/transam/xlog.c:6329 -#, c-format -msgid "selected new timeline ID: %u" -msgstr "novo ID de linha do tempo selecionado: %u" +#: utils/misc/guc.c:1295 +msgid "Emit WAL-related debugging output." +msgstr "Emite saída de depuração relacionada ao WAL." -#: access/transam/xlog.c:6565 -#, c-format -msgid "consistent recovery state reached at %X/%X" -msgstr "estado de recuperação consistente atingido em %X/%X" +#: utils/misc/guc.c:1307 +msgid "Datetimes are integer based." +msgstr "Datetimes são baseados em inteiros." -#: access/transam/xlog.c:6691 -msgid "invalid primary checkpoint link in control file" +#: utils/misc/guc.c:1322 +msgid "" +"Sets whether Kerberos and GSSAPI user names should be treated as case-" +"insensitive." msgstr "" -"vínculo de ponto de controle primário é inválido no arquivo de controle" +"Define se nomes de usuário do Kerberos e do GSSAPI devem ser tratados como " +"não sensíveis a minúsculas/maiúsculas." -#: access/transam/xlog.c:6695 -msgid "invalid secondary checkpoint link in control file" +#: utils/misc/guc.c:1332 +msgid "Warn about backslash escapes in ordinary string literals." msgstr "" -"vínculo de ponto de controle secundário é inválido no arquivo de controle" +"Avisa sobre escapes de barra invertida em cadeias de caracteres ordinárias." -#: access/transam/xlog.c:6699 -msgid "invalid checkpoint link in backup_label file" -msgstr "vínculo de ponto de controle é inválido no arquivo backup_label" +#: utils/misc/guc.c:1342 +msgid "Causes '...' strings to treat backslashes literally." +msgstr "" +"Faz com que cadeias de caracteres '...' tratem barras invertidas " +"literalmente." -#: access/transam/xlog.c:6713 -msgid "invalid primary checkpoint record" -msgstr "registro do ponto de controle primário é inválido" +#: utils/misc/guc.c:1353 +msgid "Enable synchronized sequential scans." +msgstr "Habilita buscas sequenciais sincronizadas." -#: access/transam/xlog.c:6717 -msgid "invalid secondary checkpoint record" -msgstr "registro do ponto de controle secundário é inválido" +#: utils/misc/guc.c:1363 +msgid "Allows archiving of WAL files using archive_command." +msgstr "Permite arquivamento de arquivos do WAL utilizando archive_command." -#: access/transam/xlog.c:6721 -msgid "invalid checkpoint record" -msgstr "registro do ponto de controle é inválido" +#: utils/misc/guc.c:1373 +msgid "Allows connections and queries during recovery." +msgstr "Permite conexões e consultas durante recuperação." -#: access/transam/xlog.c:6732 -msgid "invalid resource manager ID in primary checkpoint record" +#: utils/misc/guc.c:1383 +msgid "" +"Allows feedback from a hot standby to the primary that will avoid query " +"conflicts." msgstr "" -"ID do gerenciador de recursos é inválido no registro do ponto de controle " -"primário" +"Permite retorno do servidor em espera ativo ao servidor principal que " +"evitará conflitos de consulta." -#: access/transam/xlog.c:6736 -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" +#: utils/misc/guc.c:1393 +msgid "Allows modifications of the structure of system tables." +msgstr "Permite modificações da estrutura de tabelas do sistema." -#: access/transam/xlog.c:6740 -msgid "invalid resource manager ID in checkpoint record" -msgstr "" -"ID do gerenciador de recursos é inválido no registro do ponto de controle" +#: utils/misc/guc.c:1404 +msgid "Disables reading from system indexes." +msgstr "Desabilita leitura dos índices do sistema." -#: access/transam/xlog.c:6752 -msgid "invalid xl_info in primary checkpoint record" -msgstr "xl_info é inválido no registro do ponto de controle primário" +#: utils/misc/guc.c:1405 +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." -#: access/transam/xlog.c:6756 -msgid "invalid xl_info in secondary checkpoint record" -msgstr "xl_info é inválido no registro do ponto de controle secundário" +#: utils/misc/guc.c:1416 +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." -#: access/transam/xlog.c:6760 -msgid "invalid xl_info in checkpoint record" -msgstr "xl_info é inválido no registro do ponto de contrle" +#: utils/misc/guc.c:1417 +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." -#: access/transam/xlog.c:6772 -msgid "invalid length of primary checkpoint record" -msgstr "tamanho do registro do ponto de controle primário é inválido" +#: utils/misc/guc.c:1427 +msgid "When generating SQL fragments, quote all identifiers." +msgstr "Ao gerar fragmentos SQL, colocar todos identificadores entre aspas." -#: access/transam/xlog.c:6776 -msgid "invalid length of secondary checkpoint record" -msgstr "tamanho do registro do ponto de controle secundário é inválido" +#: utils/misc/guc.c:1446 +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." -#: access/transam/xlog.c:6780 -msgid "invalid length of checkpoint record" -msgstr "tamanho do registro do ponto de controle é inválido" +#: utils/misc/guc.c:1457 +msgid "Waits N seconds on connection startup after authentication." +msgstr "Espera N segundos após autenticação durante inicialização da conexão." -#: access/transam/xlog.c:6942 -msgid "shutting down" -msgstr "desligando" +#: utils/misc/guc.c:1458 utils/misc/guc.c:1907 +msgid "This allows attaching a debugger to the process." +msgstr "Isso permite anexar um depurador ao processo." -#: access/transam/xlog.c:6964 -msgid "database system is shut down" -msgstr "sistema de banco de dados está desligado" +#: utils/misc/guc.c:1467 +msgid "Sets the default statistics target." +msgstr "Define o alvo padrão de estatísticas." -#: access/transam/xlog.c:7357 +#: utils/misc/guc.c:1468 msgid "" -"concurrent transaction log activity while database system is shutting down" +"This applies to table columns that have not had a column-specific target set " +"via ALTER TABLE SET STATISTICS." msgstr "" -"atividade concorrente no log de transação enquanto o sistema de banco de " -"dados está sendo desligado" - -#: access/transam/xlog.c:7589 -msgid "skipping restartpoint, recovery has already ended" -msgstr "ignorando ponto de reinício, recuperação já terminou" - -#: access/transam/xlog.c:7614 -#, c-format -msgid "skipping restartpoint, already performed at %X/%X" -msgstr "ignorando ponto de reinício, já foi executado em %X/%X" +"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." -#: access/transam/xlog.c:7724 -#, c-format -msgid "recovery restart point at %X/%X" -msgstr "ponto de reinício de recuperação em %X/%X" +#: utils/misc/guc.c:1477 +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." -#: access/transam/xlog.c:7894 -msgid "online backup was cancelled, recovery cannot continue" +#: utils/misc/guc.c:1479 +msgid "" +"The planner will merge subqueries into upper queries if the resulting FROM " +"list would have no more than this many items." msgstr "" -"cópia de segurança online não foi cancelada, recuperação não pode continuar" +"O planejador mesclará subconsultas em consultas de nível superior se a lista " +"resultante do FROM for menor que essa quantidade de itens." -#: access/transam/xlog.c:7946 -#, c-format -msgid "unexpected timeline ID %u (after %u) in checkpoint record" +#: utils/misc/guc.c:1489 +msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened." msgstr "" -"ID de linha do tempo %u inesperado (depois %u) no registro do ponto de " -"controle" +"Define o tamanho da lista do FROM a partir do qual as construções JOIN não " +"serão nivelados." -#: access/transam/xlog.c:7982 -#, c-format -msgid "unexpected timeline ID %u (should be %u) in checkpoint record" +#: utils/misc/guc.c:1491 +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 "" -"ID de linha do tempo %u inesperado (deve ser %u) no registro do ponto de " -"controle" +"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." -#: access/transam/xlog.c:8238 access/transam/xlog.c:8264 -#, c-format -msgid "could not fsync log file %u, segment %u: %m" -msgstr "não pôde executar fsync no arquivo de log %u, segmento %u: %m" +#: utils/misc/guc.c:1501 +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." -#: access/transam/xlog.c:8272 -#, c-format -msgid "could not fsync write-through log file %u, segment %u: %m" +#: utils/misc/guc.c:1510 +msgid "GEQO: effort is used to set the default for other GEQO parameters." msgstr "" -"não pôde executar fsync write-through no arquivo de log %u, segmento %u: %m" +"GEQO: esforço é utilizado para definir o padrão para outros parâmetros GEQO." -#: access/transam/xlog.c:8281 -#, c-format -msgid "could not fdatasync log file %u, segment %u: %m" -msgstr "não pôde executar fdatasync no arquivo de log %u, segmento %u: %m" +#: utils/misc/guc.c:1519 +msgid "GEQO: number of individuals in the population." +msgstr "GEQO: número de indivíduos em uma população." + +#: utils/misc/guc.c:1520 utils/misc/guc.c:1529 +msgid "Zero selects a suitable default value." +msgstr "Zero seleciona um valor padrão ideal." -#: access/transam/xlog.c:8324 access/transam/xlog.c:8516 -msgid "must be superuser to run a backup" -msgstr "deve ser super-usuário para fazer uma cópia de segurança" +#: utils/misc/guc.c:1528 +msgid "GEQO: number of iterations of the algorithm." +msgstr "GEQO: número de iterações do algoritmo." -#: access/transam/xlog.c:8329 access/transam/xlog.c:8521 -#: access/transam/xlog.c:8724 access/transam/xlog.c:8752 -#: access/transam/xlog.c:8785 access/transam/xlog.c:8877 -#: access/transam/xlog.c:8952 -msgid "recovery is in progress" -msgstr "recuperação está em andamento" +#: utils/misc/guc.c:1539 +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." -#: access/transam/xlog.c:8330 access/transam/xlog.c:8522 -#: access/transam/xlog.c:8725 access/transam/xlog.c:8753 -#: access/transam/xlog.c:8786 -msgid "WAL control functions cannot be executed during recovery." +#: utils/misc/guc.c:1550 +msgid "" +"Sets the maximum delay before canceling queries when a hot standby server is " +"processing archived WAL data." msgstr "" -"funções de controle do WAL não podem ser executadas durante recuperação." +"Define o tempo máximo antes de cancelar consultas quando um servidor em " +"espera ativo está processando dados do WAL arquivados." -#: access/transam/xlog.c:8335 access/transam/xlog.c:8527 -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" +#: utils/misc/guc.c:1561 +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." -#: access/transam/xlog.c:8336 access/transam/xlog.c:8528 +#: utils/misc/guc.c:1572 msgid "" -"wal_level must be set to \"archive\" or \"hot_standby\" at server start." +"Sets the maximum interval between WAL receiver status reports to the primary." msgstr "" -"wal_level deve ser definido com \"archive\" ou \"hot_standby\" ao iniciar o " -"servidor." +"Define o intervalo máximo entre relatos de status do receptor do WAL ao " +"servidor principal." -#: access/transam/xlog.c:8363 access/transam/xlog.c:8432 -msgid "a backup is already in progress" -msgstr "uma cópia de segurança está em andamento" +#: utils/misc/guc.c:1583 +msgid "Sets the maximum number of concurrent connections." +msgstr "Define o número máximo de conexões concorrentes." -#: access/transam/xlog.c:8364 -msgid "Run pg_stop_backup() and try again." -msgstr "Execute pg_stop_backup() e tente novamente." +#: utils/misc/guc.c:1593 +msgid "Sets the number of connection slots reserved for superusers." +msgstr "Define o número de conexões reservadas para super-usuários." -#: access/transam/xlog.c:8433 -#, c-format -msgid "" -"If you're sure there is no backup in progress, remove file \"%s\" and try " -"again." +#: utils/misc/guc.c:1607 +msgid "Sets the number of shared memory buffers used by the server." msgstr "" -"Se você tem certeza que não há cópia de segurança em andamento, remova o " -"arquivo \"%s\" e tente novamente." +"Define o número de buffers de memória compartilhada utilizados pelo servidor." -#: access/transam/xlog.c:8454 access/transam/xlog.c:8611 -#, c-format -msgid "could not write file \"%s\": %m" -msgstr "não pôde escrever no arquivo \"%s\": %m" +#: utils/misc/guc.c:1618 +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." -#: access/transam/xlog.c:8550 -msgid "a backup is not in progress" -msgstr "não há uma cópia de segurança em andamento" +#: utils/misc/guc.c:1629 +msgid "Sets the TCP port the server listens on." +msgstr "Define a porta TCP que o servidor escutará." -#: access/transam/xlog.c:8562 access/transam/xlog.c:9018 -#: access/transam/xlog.c:9024 -#, c-format -msgid "invalid data in file \"%s\"" -msgstr "dado inválido no arquivo \"%s\"" +#: utils/misc/guc.c:1639 +msgid "Sets the access permissions of the Unix-domain socket." +msgstr "Define as permissões de acesso do soquete de domínio Unix." -#: access/transam/xlog.c:8674 +#: utils/misc/guc.c:1640 msgid "" -"pg_stop_backup cleanup done, waiting for required WAL segments to be archived" +"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).)" -#: access/transam/xlog.c:8684 -#, c-format +#: utils/misc/guc.c:1654 +msgid "Sets the file permissions for log files." +msgstr "Define as permissões do arquivo para arquivos de log." + +#: utils/misc/guc.c:1655 msgid "" -"pg_stop_backup still waiting for all required WAL segments to be archived " -"(%d seconds elapsed)" +"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 "" -"pg_stop_backup ainda está esperando o arquivamento de todos os segmentos do " -"WAL necessários (%d segundos passados)" +"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:1668 +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." -#: access/transam/xlog.c:8686 +#: utils/misc/guc.c:1669 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." +"This much memory can be used by each internal sort operation and hash table " +"before switching to temporary disk files." 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." +"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." -#: access/transam/xlog.c:8693 -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" +#: utils/misc/guc.c:1681 +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." -#: access/transam/xlog.c:8697 -#, fuzzy -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" +#: utils/misc/guc.c:1682 +msgid "This includes operations such as VACUUM and CREATE INDEX." +msgstr "Isso inclue operações tais como VACUUM e CREATE INDEX." -#: access/transam/xlog.c:8719 -msgid "must be superuser to switch transaction log files" -msgstr "deve ser super-usuário para rotacionar arquivos do log de transação" +#: utils/misc/guc.c:1697 +msgid "Sets the maximum stack depth, in kilobytes." +msgstr "Define a profundidade máxima da pilha, em kilobytes." -#: access/transam/xlog.c:8878 -msgid "pg_xlogfile_name_offset() cannot be executed during recovery." -msgstr "pg_xlogfile_name_offset() não pode ser executado durante recuperação." +#: utils/misc/guc.c:1708 +msgid "Vacuum cost for a page found in the buffer cache." +msgstr "Custo da limpeza por página encontrada na cache do buffer." -#: access/transam/xlog.c:8888 access/transam/xlog.c:8960 -#, c-format -msgid "could not parse transaction log location \"%s\"" -msgstr "não pôde validar local do log de transação \"%s\"" +#: utils/misc/guc.c:1718 +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." -#: access/transam/xlog.c:8953 -msgid "pg_xlogfile_name() cannot be executed during recovery." -msgstr "pg_xlogfile_name() não pode ser executado durante recuperação." +#: utils/misc/guc.c:1728 +msgid "Vacuum cost for a page dirtied by vacuum." +msgstr "Custo da limpeza por página sujada pela limpeza." -#: access/transam/xlog.c:9050 -#, c-format -msgid "xlog redo %s" -msgstr "redo do xlog %s" +#: utils/misc/guc.c:1738 +msgid "Vacuum cost amount available before napping." +msgstr "Quantidade de custo da limpeza disponível antes de adormecer." -#: access/transam/xlog.c:9090 -msgid "online backup mode cancelled" -msgstr "modo de cópia de segurança online foi cancelado" +#: utils/misc/guc.c:1748 +msgid "Vacuum cost delay in milliseconds." +msgstr "Atraso do custo da limpeza em milisegundos." -#: access/transam/xlog.c:9091 -#, c-format -msgid "\"%s\" was renamed to \"%s\"." -msgstr "\"%s\" foi renomeado para \"%s\"." +#: utils/misc/guc.c:1759 +msgid "Vacuum cost delay in milliseconds, for autovacuum." +msgstr "Atraso do custo da limpeza em milisegundos, para autovacuum." + +#: utils/misc/guc.c:1770 +msgid "Vacuum cost amount available before napping, for autovacuum." +msgstr "" +"Quantidade de custo da limpeza disponível antes de adormecer, para " +"autovacuum." -#: access/transam/xlog.c:9098 -msgid "online backup mode was not cancelled" -msgstr "mode de cópia de segurança online não foi cancelado" +#: utils/misc/guc.c:1780 +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." -#: access/transam/xlog.c:9099 -#, c-format -msgid "Could not rename \"%s\" to \"%s\": %m." -msgstr "não pôde renomear \"%s\" para \"%s\": %m" +#: utils/misc/guc.c:1793 +msgid "Sets the maximum number of simultaneously prepared transactions." +msgstr "Define o número máximo de transações preparadas simultâneas." -#: access/transam/xlog.c:9567 access/transam/xlog.c:9589 -#, c-format -msgid "could not read from log file %u, segment %u, offset %u: %m" -msgstr "não pôde ler do arquivo de log %u, segmento %u, deslocamento %u: %m" +#: utils/misc/guc.c:1826 +msgid "Sets the maximum allowed duration of any statement." +msgstr "Define a duração máxima permitida de cada comando." -#: access/transam/xlog.c:9677 -#, fuzzy, c-format -msgid "trigger file found: %s" -msgstr "arquivo de gatilho encontrado: %s" +#: utils/misc/guc.c:1827 +msgid "A value of 0 turns off the timeout." +msgstr "Um valor 0 desabilita o tempo de espera." -#: access/transam/slru.c:595 -#, c-format -msgid "file \"%s\" doesn't exist, reading as zeroes" -msgstr "arquivo \"%s\" não existe, lendo como zeros" +#: utils/misc/guc.c:1837 +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." -#: access/transam/slru.c:825 access/transam/slru.c:831 -#: access/transam/slru.c:838 access/transam/slru.c:845 -#: access/transam/slru.c:852 access/transam/slru.c:859 -#, c-format -msgid "could not access status of transaction %u" -msgstr "não pôde acessar status da transação %u" +#: utils/misc/guc.c:1847 +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." -#: access/transam/slru.c:826 -#, c-format -msgid "Could not open file \"%s\": %m." -msgstr "não pôde abrir arquivo \"%s\": %m." +#: utils/misc/guc.c:1857 +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." -#: access/transam/slru.c:832 -#, c-format -msgid "Could not seek in file \"%s\" to offset %u: %m." -msgstr "não pôde buscar no arquivo \"%s\" deslocado de %u: %m." +#: utils/misc/guc.c:1870 +msgid "Sets the maximum number of locks per transaction." +msgstr "Define o número máximo de bloqueios por transação." -#: access/transam/slru.c:839 -#, c-format -msgid "Could not read from file \"%s\" at offset %u: %m." -msgstr "não pôde ler do arquivo \"%s\" deslocado de %u: %m." +#: utils/misc/guc.c:1871 +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." -#: access/transam/slru.c:846 -#, c-format -msgid "Could not write to file \"%s\" at offset %u: %m." -msgstr "não pôde escrever no arquivo \"%s\" deslocado de %u: %m." +#: utils/misc/guc.c:1882 +msgid "Sets the maximum number of predicate locks per transaction." +msgstr "Define o número máximo de bloqueios de predicado por transação." -#: access/transam/slru.c:853 -#, c-format -msgid "Could not fsync file \"%s\": %m." -msgstr "não pôde executar fsync no arquivo \"%s\": %m." +#: utils/misc/guc.c:1883 +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_locks_per_transaction * max_connections objetos " +"distintos necessitam ser bloqueados simultaneamente." -#: access/transam/slru.c:860 -#, c-format -msgid "Could not close file \"%s\": %m." -msgstr "não pôde fechar arquivo \"%s\": %m." +#: utils/misc/guc.c:1894 +msgid "Sets the maximum allowed time to complete client authentication." +msgstr "" +"Define o tempo máximo permitido para completar uma autenticação do cliente." -#: access/transam/slru.c:1087 -#, c-format -msgid "could not truncate directory \"%s\": apparent wraparound" -msgstr "não pôde truncar diretório \"%s\": reinício aparente" +#: utils/misc/guc.c:1906 +msgid "Waits N seconds on connection startup before authentication." +msgstr "Espera N segundos após autenticação durante inicialização da conexão." -#: access/transam/slru.c:1168 -#, c-format -msgid "removing file \"%s\"" -msgstr "removendo arquivo \"%s\"" +#: utils/misc/guc.c:1917 +msgid "Sets the number of WAL files held for standby servers." +msgstr "Define o número de arquivos WAL mantidos para servidores em espera." -#: access/transam/varsup.c:113 -#, c-format +#: utils/misc/guc.c:1927 msgid "" -"database is not accepting commands to avoid wraparound data loss in database " -"\"%s\"" +"Sets the maximum distance in log segments between automatic WAL checkpoints." +msgstr "" +"Define a distância máxima em segmentos de log entre pontos de controle WAL " +"automáticos." + +#: utils/misc/guc.c:1937 +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:1948 +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:1950 +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:1962 +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:1973 +msgid "WAL writer sleep time between WAL flushes." +msgstr "Tempo de adormecimento do escritor do WAL entre ciclos do WAL." + +#: utils/misc/guc.c:1985 +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:1995 +msgid "WAL sender sleep time between WAL replications." msgstr "" -"banco de dados não está aceitando comandos para evitar perda de dados por " -"reinício no banco de dados \"%s\"" +"Tempo de adormecimento do transmissor de WAL entre ciclos de replicação do " +"WAL." -#: access/transam/varsup.c:115 access/transam/varsup.c:122 +#: utils/misc/guc.c:2006 +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:2017 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." +"Sets the delay in microseconds between transaction commit and flushing WAL " +"to disk." msgstr "" -"Pare o postmaster e use um servidor autônomo para limpar aquele banco de " -"dados.\n" -"Você também pode precisar efetivar ou desfazer transações preparadas antigas." +"Define o atraso em microsegundos entre efetivar uma transação e escrever WAL " +"no disco." -#: access/transam/varsup.c:120 -#, c-format +#: utils/misc/guc.c:2028 msgid "" -"database is not accepting commands to avoid wraparound data loss in database " -"with OID %u" +"Sets the minimum concurrent open transactions before performing commit_delay." msgstr "" -"banco de dados não está aceitando comandos para evitar perda de dados por " -"reinício no banco de dados com OID %u" +"Define o número mínimo de transações concorrentes abertas antes de esperar " +"commit_delay." -#: access/transam/varsup.c:132 access/transam/varsup.c:358 -#, c-format -msgid "database \"%s\" must be vacuumed within %u transactions" -msgstr "banco de dados \"%s\" deve ser limpado em %u transações" +#: utils/misc/guc.c:2039 +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." -#: access/transam/varsup.c:135 access/transam/varsup.c:142 -#: access/transam/varsup.c:361 access/transam/varsup.c:368 +#: utils/misc/guc.c:2040 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." +"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 "" -"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/varsup.c:139 access/transam/varsup.c:365 -#, c-format -msgid "database with OID %u must be vacuumed within %u transactions" -msgstr "banco de dados com OID %u deve ser limpado em %u transações" +"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)." -#: access/transam/varsup.c:332 -#, c-format -msgid "transaction ID wrap limit is %u, limited by database with OID %u" +#: utils/misc/guc.c:2051 +msgid "Sets the minimum execution time above which statements will be logged." msgstr "" -"limite de reinício do ID de transação é %u, limitado pelo banco de dados com " -"OID %u" - -#: access/hash/hashovfl.c:546 -#, c-format -msgid "out of overflow pages in hash index \"%s\"" -msgstr "acabaram as páginas de transbordamento no índice hash \"%s\"" - -#: access/hash/hashutil.c:204 -#, c-format -msgid "index \"%s\" is not a hash index" -msgstr "índice \"%s\" não é um índice hash" - -#: access/hash/hashutil.c:210 -#, c-format -msgid "index \"%s\" has wrong hash version" -msgstr "índice \"%s\" tem versão incorreta do hash" +"Define o tempo mínimo de execução no qual os comandos serão registrados." -#: access/hash/hashinsert.c:73 -#, 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" +#: utils/misc/guc.c:2053 +msgid "Zero prints all queries. -1 turns this feature off." +msgstr "Zero registra todas as consultas. -1 desabilita essa funcionalidade." -#: access/hash/hashinsert.c:76 -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." +#: utils/misc/guc.c:2063 +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." -#: access/hash/hashsearch.c:152 -msgid "hash indexes do not support whole-index scans" -msgstr "índices hash não suportam buscas em todo índice" +#: utils/misc/guc.c:2065 +msgid "Zero prints all actions. -1 turns autovacuum logging off." +msgstr "Zero registra todas as ações. -1 desabilita essa funcionalidade." -#: main/main.c:230 -#, c-format -msgid "%s: setsysinfo failed: %s\n" -msgstr "%s: setsysinfo falhou: %s\n" +#: utils/misc/guc.c:2075 +msgid "Background writer sleep time between rounds." +msgstr "Tempo de adormecimento do escritor em segundo plano entre ciclos." -#: main/main.c:249 -#, c-format -msgid "%s: WSAStartup failed: %d\n" -msgstr "%s: WSAStartup falhou: %d\n" +#: utils/misc/guc.c:2086 +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." -#: main/main.c:268 -#, c-format +#: utils/misc/guc.c:2102 msgid "" -"%s is the PostgreSQL server.\n" -"\n" +"Number of simultaneous requests that can be handled efficiently by the disk " +"subsystem." msgstr "" -"%s é o servidor PostgreSQL.\n" -"\n" +"Número de requisições simultâneas que podem ser manipuladas eficientemente " +"pelo subsistema de disco." -#: main/main.c:269 -#, c-format +#: utils/misc/guc.c:2103 msgid "" -"Usage:\n" -" %s [OPTION]...\n" -"\n" +"For RAID arrays, this should be approximately the number of drive spindles " +"in the array." msgstr "" -"Uso:\n" -" %s [OPÇÃO]...\n" -"\n" +"Para arranjos RAID, este deveria ser aproximadamente o número de discos em " +"um arranjo." -#: main/main.c:270 -#, c-format -msgid "Options:\n" -msgstr "Opções:\n" +#: utils/misc/guc.c:2116 +msgid "Automatic log file rotation will occur after N minutes." +msgstr "Rotação de arquivo de log automática ocorrerá após N minutos." -#: main/main.c:272 -#, 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" +#: utils/misc/guc.c:2127 +msgid "Automatic log file rotation will occur after N kilobytes." +msgstr "Rotação de arquivo de log automática ocorrerá após N kilobytes." -#: main/main.c:274 -#, c-format -msgid " -B NBUFFERS number of shared buffers\n" -msgstr " -B NBUFFERS número de buffers compartilhados\n" +#: utils/misc/guc.c:2138 +msgid "Shows the maximum number of function arguments." +msgstr "Mostra o número máximo de argumentos da função." -#: main/main.c:275 -#, 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" +#: utils/misc/guc.c:2149 +msgid "Shows the maximum number of index keys." +msgstr "Mostra o número máximo de chaves do índice." -#: main/main.c:276 -#, c-format -msgid " -d 1-5 debugging level\n" -msgstr " -d 1-5 nível de depuração\n" +#: utils/misc/guc.c:2160 +msgid "Shows the maximum identifier length." +msgstr "Mostra o tamanho máximo de identificador." -#: main/main.c:277 -#, c-format -msgid " -D DATADIR database directory\n" -msgstr " -D DIRDADOS diretório do banco de dados\n" +#: utils/misc/guc.c:2171 +msgid "Shows the size of a disk block." +msgstr "Mostra o tamanho de um bloco do disco." -#: main/main.c:278 -#, c-format -msgid " -e use European date input format (DMY)\n" -msgstr " -e usa formato de entrada de data europeu (DMY)\n" +#: utils/misc/guc.c:2182 +msgid "Shows the number of pages per disk file." +msgstr "Mostra o número de páginas por arquivo do disco." -#: main/main.c:279 -#, c-format -msgid " -F turn fsync off\n" -msgstr " -F desabilita o fsync\n" +#: utils/misc/guc.c:2193 +msgid "Shows the block size in the write ahead log." +msgstr "Mostra o tamanho do bloco no log de transação." -#: main/main.c:280 -#, 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" +#: utils/misc/guc.c:2204 +msgid "Shows the number of pages per write ahead log segment." +msgstr "Mostra o número de páginas por segmento de log de transação." -#: main/main.c:281 -#, c-format -msgid " -i enable TCP/IP connections\n" -msgstr " -i habilita conexões TCP/IP\n" +#: utils/misc/guc.c:2217 +msgid "Time to sleep between autovacuum runs." +msgstr "Tempo de adormecimento entre execuções do autovacuum." -#: main/main.c:282 -#, c-format -msgid " -k DIRECTORY Unix-domain socket location\n" -msgstr " -k DIRETÓRIO local do soquete de domínio Unix\n" +#: utils/misc/guc.c:2227 +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." -#: main/main.c:284 -#, c-format -msgid " -l enable SSL connections\n" -msgstr " -l habilita conexões SSL\n" +#: utils/misc/guc.c:2236 +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 antes de analisar." -#: main/main.c:286 -#, 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" +#: utils/misc/guc.c:2246 +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." -#: main/main.c:287 -#, c-format -msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n" +#: utils/misc/guc.c:2257 +msgid "" +"Sets the maximum number of simultaneously running autovacuum worker " +"processes." msgstr "" -" -o OPÇÕES passa \"OPÇÕES\" para cada processo servidor (obsoleto)\n" +"Define o número máximo de processos de limpeza automática executados " +"simultaneamente." -#: main/main.c:288 -#, c-format -msgid " -p PORT port number to listen on\n" -msgstr " -p PORTA número da porta para escutar\n" +#: utils/misc/guc.c:2267 +msgid "Time between issuing TCP keepalives." +msgstr "Tempo entre envios de mantenha-se vivo (keepalive) do TCP." -#: main/main.c:289 -#, c-format -msgid " -s show statistics after each query\n" -msgstr " -s mostra estatísticas após cada consulta\n" +#: utils/misc/guc.c:2268 utils/misc/guc.c:2279 +msgid "A value of 0 uses the system default." +msgstr "Um valor 0 utiliza o padrão do sistema." -#: main/main.c:290 -#, c-format -msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n" +#: utils/misc/guc.c:2278 +msgid "Time between TCP keepalive retransmits." +msgstr "Tempo entre retransmissões de mantenha-se vivo (keepalive) do TCP." + +#: utils/misc/guc.c:2289 +msgid "" +"Set the amount of traffic to send and receive before renegotiating the " +"encryption keys." msgstr "" -" -S MEM-ORD define a quantidade de memória para ordenações (em kB)\n" +"Define a quantidade de tráfego enviado e recebido antes de renegociar as " +"chaves de criptografia." -#: main/main.c:291 -#, c-format -msgid " --NAME=VALUE set run-time parameter\n" -msgstr " --NOME=VALOR define o parâmetro em tempo de execução\n" +#: utils/misc/guc.c:2300 +msgid "Maximum number of TCP keepalive retransmits." +msgstr "" +"Número máximo de retransmissões de mantenha-se vivo (keepalive) do TCP." -#: main/main.c:292 -#, c-format -msgid " --describe-config describe configuration parameters, then exit\n" -msgstr " --describe-config descreve parâmetros de configuração e termina\n" +#: utils/misc/guc.c:2301 +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." -#: main/main.c:293 -#, c-format -msgid " --help show this help, then exit\n" -msgstr " --help mostra esta ajuda e termina\n" +#: utils/misc/guc.c:2312 +msgid "Sets the maximum allowed result for exact search by GIN." +msgstr "" +"Define o resultado máximo permitido por uma busca exata utilizando GIN." -#: main/main.c:294 -#, c-format -msgid " --version output version information, then exit\n" -msgstr " --version mostra informação sobre a versão e termina\n" +#: utils/misc/guc.c:2323 +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." -#: main/main.c:296 -#, c-format +#: utils/misc/guc.c:2324 msgid "" -"\n" -"Developer options:\n" +"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 "" -"\n" -"Opções para desenvolvedor:\n" +"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." -#: main/main.c:297 -#, 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" +#: utils/misc/guc.c:2337 +msgid "Shows the server version as an integer." +msgstr "Mostra a versão do servidor como um inteiro." -#: main/main.c:298 -#, c-format -msgid "" -" -n do not reinitialize shared memory after abnormal exit\n" +#: utils/misc/guc.c:2348 +msgid "Log the use of temporary files larger than this number of kilobytes." msgstr "" -" -n não reinicializa memória compartilhada depois de término " -"anormal\n" +"Registra o uso de arquivos temporários maiores do que este número de " +"kilobytes." -#: main/main.c:299 -#, c-format -msgid " -O allow system table structure changes\n" +#: utils/misc/guc.c:2349 +msgid "Zero logs all files. The default is -1 (turning this feature off)." msgstr "" -" -O permite mudanças na estrutura de tabelas do sistema\n" +"Zero registra todos os arquivos. O padrão é -1 (desabilita essa " +"funcionalidade)." -#: main/main.c:300 -#, c-format -msgid " -P disable system indexes\n" -msgstr " -P desabilita índices do sistema\n" +#: utils/misc/guc.c:2359 +msgid "Sets the size reserved for pg_stat_activity.current_query, in bytes." +msgstr "" +"Define o tamanho reservado para pg_stat_activity.current_query, em bytes." -#: main/main.c:301 -#, 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" +#: utils/misc/guc.c:2378 +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." -#: main/main.c:302 -#, c-format -msgid " -T send SIGSTOP to all backend servers if one dies\n" +#: utils/misc/guc.c:2388 +msgid "" +"Sets the planner's estimate of the cost of a nonsequentially fetched disk " +"page." msgstr "" -" -T envia SIGSTOP para todos os servidores se um deles morrer\n" +"Define a estimativa do planejador do custo de busca não sequencial de uma " +"página no disco." -#: main/main.c:303 -#, c-format -msgid " -W NUM wait NUM seconds to allow attach from a debugger\n" +#: utils/misc/guc.c:2398 +msgid "Sets the planner's estimate of the cost of processing each tuple (row)." msgstr "" -" -W NUM espera NUM segundos para permitir que o depurador seja " -"anexado\n" +"Define a estimativa do planejador do custo de processamento de cada tupla " +"(registro)." -#: main/main.c:305 -#, c-format +#: utils/misc/guc.c:2408 msgid "" -"\n" -"Options for single-user mode:\n" +"Sets the planner's estimate of the cost of processing each index entry " +"during an index scan." msgstr "" -"\n" -"Opções para modo monousuário:\n" +"Define a estimativa do planejador do custo de processamento de cada índice " +"durante uma busca no índice." -#: main/main.c:306 -#, c-format -msgid " --single selects single-user mode (must be first argument)\n" +#: utils/misc/guc.c:2418 +msgid "" +"Sets the planner's estimate of the cost of processing each operator or " +"function call." msgstr "" -" --single seleciona modo monousuário (deve ser o primeiro " -"argumento)\n" +"Define a estimativa do planejador do custo de processamento de cada operador " +"ou chamada de função." -#: main/main.c:307 -#, c-format -msgid " DBNAME database name (defaults to user name)\n" +#: utils/misc/guc.c:2429 +msgid "" +"Sets the planner's estimate of the fraction of a cursor's rows that will be " +"retrieved." msgstr "" -" NOMEBD nome do banco de dados (padrão é o nome do usuário)\n" +"Define a estimativa do planejador da fração de registros do cursor que será " +"recuperada." -#: main/main.c:308 -#, c-format -msgid " -d 0-5 override debugging level\n" -msgstr " -d 0-5 muda o nível de depuração\n" +#: utils/misc/guc.c:2440 +msgid "GEQO: selective pressure within the population." +msgstr "GEQO: pressão seletiva na população." -#: main/main.c:309 -#, c-format -msgid " -E echo statement before execution\n" -msgstr " -E mostra consulta antes da execução\n" +#: utils/misc/guc.c:2450 +msgid "GEQO: seed for random path selection." +msgstr "GEQO: semente para seleção de caminhos randômicos." -#: main/main.c:310 -#, 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" +#: utils/misc/guc.c:2460 +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." -#: main/main.c:311 main/main.c:316 -#, 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" +#: utils/misc/guc.c:2470 +msgid "Sets the seed for random-number generation." +msgstr "Define a semente para geração de números randômicos." -#: main/main.c:313 -#, c-format +#: utils/misc/guc.c:2481 msgid "" -"\n" -"Options for bootstrapping mode:\n" -msgstr "" -"\n" -"Opções para modo de ativação:\n" - -#: main/main.c:314 -#, c-format -msgid " --boot selects bootstrapping mode (must be first argument)\n" +"Number of tuple updates or deletes prior to vacuum as a fraction of " +"reltuples." msgstr "" -" --boot seleciona modo de ativação (deve ser o primeiro " -"argumento)\n" +"Número de atualizações ou exclusões de tupla antes de limpar como uma fração " +"de reltuples." -#: main/main.c:315 -#, c-format +#: utils/misc/guc.c:2490 msgid "" -" DBNAME database name (mandatory argument in bootstrapping mode)\n" +"Number of tuple inserts, updates or deletes prior to analyze as a fraction " +"of reltuples." msgstr "" -" NOMEBD nome do banco de dados (argumento obrigatório no modo de " -"ativação)\n" - -#: main/main.c:317 -#, c-format -msgid " -x NUM internal use\n" -msgstr " -x NUM uso interno\n" +"Número de inserções, atualizações ou exclusões de tupla antes de analisar " +"como uma fração de reltuples." -#: main/main.c:319 -#, c-format +#: utils/misc/guc.c:2500 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" +"Time spent flushing dirty buffers during checkpoint, as fraction of " +"checkpoint interval." msgstr "" -"\n" -"Por favor leia a documentação para verificar a lista completa de parâmetros\n" -"de configuração em tempo de execução e como definí-los pela linha de " -"comando\n" -"ou no arquivo de configuração.\n" -"\n" -"Relate erros a .\n" +"Tempo gasto escrevendo buffers sujos durante o ponto de controle, como " +"fração do intervalo de ponto de controle." -#: main/main.c:333 -msgid "" -"\"root\" execution of the PostgreSQL server is not permitted.\n" -"The server must be started under an unprivileged user ID to prevent\n" -"possible system security compromise. See the documentation for\n" -"more information on how to properly start the server.\n" +#: utils/misc/guc.c:2519 +msgid "Sets the shell command that will be called to archive a WAL file." msgstr "" -"execução do servidor PostgreSQL pelo \"root\" não é permitida.\n" -"O servidor deve ser iniciado por um usuário sem privilégios para previnir\n" -"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" +"Define um comando do interpretador de comandos (shell) que será chamado para " +"arquivar um arquivo do WAL." -#: main/main.c:350 -#, c-format -msgid "%s: real and effective user IDs must match\n" -msgstr "%s: IDs do usuário real e efetivo devem corresponder\n" +#: utils/misc/guc.c:2529 +msgid "Sets the client's character set encoding." +msgstr "Define a codificação do conjunto de caracteres do cliente." -#: main/main.c:357 -msgid "" -"Execution of PostgreSQL by a user with administrative permissions is not\n" -"permitted.\n" -"The server must be started under an unprivileged user ID to prevent\n" -"possible system security compromises. See the documentation for\n" -"more information on how to properly start the server.\n" -msgstr "" -"Execução do servidor PostgreSQL por um usuário com permissões " -"administrativas não é\n" -"permitida.\n" -"O servidor deve ser iniciado por um usuário sem privilégios para previnir\n" -"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" +#: utils/misc/guc.c:2540 +msgid "Controls information prefixed to each log line." +msgstr "Controla informação prefixada em cada linha do log." -#: main/main.c:378 -#, c-format -msgid "%s: invalid effective UID: %d\n" -msgstr "%s: UID efetivo é inválido: %d\n" +#: utils/misc/guc.c:2541 +msgid "If blank, no prefix is used." +msgstr "Se estiver em branco, nenhum prefixo é utilizado." -#: main/main.c:391 -#, 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" +#: utils/misc/guc.c:2550 +msgid "Sets the time zone to use in log messages." +msgstr "Define a zona horária a ser utilizada em mensagens de log." -#: commands/tsearchcmds.c:109 commands/tsearchcmds.c:929 -#, c-format -msgid "function %s should return type %s" -msgstr "função %s deve retornar tipo %s" +#: utils/misc/guc.c:2560 +msgid "Sets the display format for date and time values." +msgstr "Define o formato de exibição para valores de data e hora." -#: commands/tsearchcmds.c:178 -msgid "must be superuser to create text search parsers" -msgstr "deve ser super-usuário para criar analisadores de busca textual" +#: utils/misc/guc.c:2561 +msgid "Also controls interpretation of ambiguous date inputs." +msgstr "Também controla interpretação de entrada de datas ambíguas." -#: commands/tsearchcmds.c:226 -#, c-format -msgid "text search parser parameter \"%s\" not recognized" -msgstr "parâmetro do analisador de busca textual \"%s\" é desconhecido" +#: utils/misc/guc.c:2572 +msgid "Sets the default tablespace to create tables and indexes in." +msgstr "Define a tablespace padrão para criação de tabelas e índices." -#: commands/tsearchcmds.c:236 -msgid "text search parser start method is required" -msgstr "método start do analisador de busca textual é requerido" +#: utils/misc/guc.c:2573 +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." -#: commands/tsearchcmds.c:241 -msgid "text search parser gettoken method is required" -msgstr "método gettoken do analisador de busca textual é requerido" +#: utils/misc/guc.c:2583 +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." -#: commands/tsearchcmds.c:246 -msgid "text search parser end method is required" -msgstr "método end do analisador de busca textual é requerido" +#: utils/misc/guc.c:2594 +msgid "Sets the path for dynamically loadable modules." +msgstr "Define o caminho para módulos carregáveis dinamicamente." + +#: utils/misc/guc.c:2595 +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:2608 +msgid "Sets the location of the Kerberos server key file." +msgstr "Define o local do arquivo da chave do servidor Kerberos." -#: commands/tsearchcmds.c:251 -msgid "text search parser lextypes method is required" -msgstr "método lextypes do analisador de busca textual é requerido" +#: utils/misc/guc.c:2619 +msgid "Sets the name of the Kerberos service." +msgstr "Define o nome do serviço Kerberos." -#: commands/tsearchcmds.c:283 -msgid "must be superuser to drop text search parsers" -msgstr "deve ser super-usuário para remover analisadores de busca textual" +#: utils/misc/guc.c:2629 +msgid "Sets the Bonjour service name." +msgstr "Define o nome do serviço Bonjour." -#: commands/tsearchcmds.c:306 catalog/namespace.c:1748 -#, c-format -msgid "text search parser \"%s\" does not exist" -msgstr "analisador de busca textual \"%s\" não existe" +#: utils/misc/guc.c:2641 +msgid "Shows the collation order locale." +msgstr "Mostra a configuração regional utilizada na ordenação." -#: commands/tsearchcmds.c:312 -#, c-format -msgid "text search parser \"%s\" does not exist, skipping" -msgstr "analisador de busca textual \"%s\" não existe, ignorando" +#: utils/misc/guc.c:2652 +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." -#: commands/tsearchcmds.c:367 -msgid "must be superuser to rename text search parsers" -msgstr "deve ser super-usuário para renomear analisadores de busca textual" +#: utils/misc/guc.c:2663 +msgid "Sets the language in which messages are displayed." +msgstr "Define a língua na qual as mensagens são mostradas." -#: commands/tsearchcmds.c:385 -#, c-format -msgid "text search parser \"%s\" already exists" -msgstr "analisador de busca textual \"%s\" já existe" +#: utils/misc/guc.c:2673 +msgid "Sets the locale for formatting monetary amounts." +msgstr "Define a configuração regional para formato de moeda." -#: commands/tsearchcmds.c:462 -#, c-format -msgid "text search template \"%s\" does not accept options" -msgstr "modelo de busca textual \"%s\" não aceita opções" +#: utils/misc/guc.c:2683 +msgid "Sets the locale for formatting numbers." +msgstr "Define a configuração regional para formato de número." -#: commands/tsearchcmds.c:535 -msgid "text search template is required" -msgstr "modelo de busca textual é requerido" +#: utils/misc/guc.c:2693 +msgid "Sets the locale for formatting date and time values." +msgstr "Define a configuração regional para formato de data e hora." -#: commands/tsearchcmds.c:600 -#, c-format -msgid "text search dictionary \"%s\" already exists" -msgstr "dicionário de busca textual \"%s\" já existe" +#: utils/misc/guc.c:2703 +msgid "Lists shared libraries to preload into server." +msgstr "Mostra bibliotecas compartilhadas a serem carregadas no servidor." -#: commands/tsearchcmds.c:654 catalog/namespace.c:1871 -#, c-format -msgid "text search dictionary \"%s\" does not exist" -msgstr "dicionário de busca textual \"%s\" não existe" +#: utils/misc/guc.c:2714 +msgid "Lists shared libraries to preload into each backend." +msgstr "" +"Mostra bibliotecas compartilhadas a serem carregadas em cdas processo " +"servidor." -#: commands/tsearchcmds.c:660 -#, c-format -msgid "text search dictionary \"%s\" does not exist, skipping" -msgstr "dicionário de busca textual \"%s\" não existe, ignorando" +#: utils/misc/guc.c:2725 +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." -#: commands/tsearchcmds.c:990 -msgid "must be superuser to create text search templates" -msgstr "deve ser super-usuário para criar modelos de busca textual" +#: utils/misc/guc.c:2737 +msgid "Sets the server (database) character set encoding." +msgstr "" +"Define a codificação do conjunto de caracteres do servidor (banco de dados)." -#: commands/tsearchcmds.c:1027 -#, c-format -msgid "text search template parameter \"%s\" not recognized" -msgstr "parâmetro do modelo de busca textual \"%s\" é desconhecido" +#: utils/misc/guc.c:2749 +msgid "Shows the server version." +msgstr "Mostra a versão do servidor." -#: commands/tsearchcmds.c:1037 -msgid "text search template lexize method is required" -msgstr "método lexize do modelo de busca textual é requerido" +#: utils/misc/guc.c:2761 +msgid "Sets the current role." +msgstr "Define a role atual." -#: commands/tsearchcmds.c:1072 -msgid "must be superuser to rename text search templates" -msgstr "deve ser super-usuário para renomear modelos de busca textual" +#: utils/misc/guc.c:2773 +msgid "Sets the session user name." +msgstr "Define o nome de usuário da sessão." -#: commands/tsearchcmds.c:1091 -#, c-format -msgid "text search template \"%s\" already exists" -msgstr "modelo de busca textual \"%s\" já existe" +#: utils/misc/guc.c:2784 +msgid "Sets the destination for server log output." +msgstr "Define o destino do log do servidor." -#: commands/tsearchcmds.c:1114 -msgid "must be superuser to drop text search templates" -msgstr "deve ser super-usuário para remover modelos de busca textual" +#: utils/misc/guc.c:2785 +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." -#: commands/tsearchcmds.c:1137 catalog/namespace.c:1995 -#, c-format -msgid "text search template \"%s\" does not exist" -msgstr "modelo de busca textual \"%s\" não existe" +#: utils/misc/guc.c:2796 +msgid "Sets the destination directory for log files." +msgstr "Define o diretório de destino dos arquivos de log." -#: commands/tsearchcmds.c:1143 -#, c-format -msgid "text search template \"%s\" does not exist, skipping" -msgstr "modelo de busca textual \"%s\" não existe, ignorando" +#: utils/misc/guc.c:2797 +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." -#: commands/tsearchcmds.c:1338 -#, c-format -msgid "text search configuration parameter \"%s\" not recognized" -msgstr "parâmetro de configuração de busca textual \"%s\" é desconhecido" +#: utils/misc/guc.c:2807 +msgid "Sets the file name pattern for log files." +msgstr "Define o padrão de nome de arquivo para arquivos de log." -#: commands/tsearchcmds.c:1345 -msgid "cannot specify both PARSER and COPY options" -msgstr "não pode especificar ambas opções PARSER e COPY" +#: utils/misc/guc.c:2818 +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." -#: commands/tsearchcmds.c:1373 -msgid "text search parser is required" -msgstr "analisador de busca textual é requerido" +#: utils/misc/guc.c:2829 +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." -#: commands/tsearchcmds.c:1479 -#, c-format -msgid "text search configuration \"%s\" already exists" -msgstr "configuração de busca textual \"%s\" já existe" +#: utils/misc/guc.c:2839 +msgid "Selects a file of time zone abbreviations." +msgstr "Seleciona um arquivo de abreviações de zonas horárias." -#: commands/tsearchcmds.c:1532 commands/tsearchcmds.c:1688 -#: catalog/namespace.c:2118 -#, c-format -msgid "text search configuration \"%s\" does not exist" -msgstr "configuração de busca textual \"%s\" não existe" +#: utils/misc/guc.c:2849 +msgid "Sets the current transaction's isolation level." +msgstr "Define o nível de isolamento da transação atual." -#: commands/tsearchcmds.c:1538 -#, c-format -msgid "text search configuration \"%s\" does not exist, skipping" -msgstr "configuração de busca textual \"%s\" não existe, ignorando" +#: utils/misc/guc.c:2860 +msgid "Sets the owning group of the Unix-domain socket." +msgstr "Define o grupo dono do soquete de domínio Unix." -#: commands/tsearchcmds.c:1760 -#, c-format -msgid "token type \"%s\" does not exist" -msgstr "tipo de elemento \"%s\" não existe" +#: utils/misc/guc.c:2861 +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." -#: commands/tsearchcmds.c:1984 -#, c-format -msgid "mapping for token type \"%s\" does not exist" -msgstr "mapeamento para tipo de elemento \"%s\" não existe" +#: utils/misc/guc.c:2871 +msgid "Sets the directory where the Unix-domain socket will be created." +msgstr "Define o diretório onde o soquete de domínio Unix será criado." -#: commands/tsearchcmds.c:1990 -#, c-format -msgid "mapping for token type \"%s\" does not exist, skipping" -msgstr "mapeamento para tipo de elemento \"%s\" não existe, ignorando" +#: utils/misc/guc.c:2882 +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." -#: commands/tsearchcmds.c:2143 commands/tsearchcmds.c:2254 -#, c-format -msgid "invalid parameter list format: \"%s\"" -msgstr "formato de lista de parâmetros é inválido: \"%s\"" +#: utils/misc/guc.c:2893 +msgid "Sets the list of known custom variable classes." +msgstr "Define a lista de classes de variáveis personalizadas conhecidas." -#: commands/aggregatecmds.c:103 -#, c-format -msgid "aggregate attribute \"%s\" not recognized" -msgstr "atributo da agregação \"%s\" é desconhecido" +#: utils/misc/guc.c:2904 +msgid "Sets the server's data directory." +msgstr "Define o diretório de dados do servidor." -#: commands/aggregatecmds.c:113 -msgid "aggregate stype must be specified" -msgstr "tipo de transição (stype) da agregação deve ser especificado" +#: utils/misc/guc.c:2915 +msgid "Sets the server's main configuration file." +msgstr "Define o arquivo de configuração principal do servidor." -#: commands/aggregatecmds.c:117 -msgid "aggregate sfunc must be specified" -msgstr "função de transição (sfunc) da agregação deve ser especificado" +#: utils/misc/guc.c:2926 +msgid "Sets the server's \"hba\" configuration file." +msgstr "Define o arquivo de configuração \"hba\" do servidor." -#: commands/aggregatecmds.c:134 -msgid "aggregate input type must be specified" -msgstr "tipo de entrada da agregação deve ser especificado" +#: utils/misc/guc.c:2937 +msgid "Sets the server's \"ident\" configuration file." +msgstr "Define o arquivo de configuração \"ident\" do servidor." -#: commands/aggregatecmds.c:159 -msgid "basetype is redundant with aggregate input type specification" -msgstr "" -"tipo base é redundante com especificação de tipo de entrada da agregação" +#: utils/misc/guc.c:2948 +msgid "Writes the postmaster PID to the specified file." +msgstr "Escreve o PID do postmaster no arquivo especificado." -#: commands/aggregatecmds.c:191 -#, 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" +#: utils/misc/guc.c:2959 +msgid "Writes temporary statistics files to the specified directory." +msgstr "" +"Escreve arquivos temporários de estatísticas em um diretório especificado." -#: commands/aggregatecmds.c:230 -#, c-format -msgid "aggregate %s(%s) does not exist, skipping" -msgstr "agregação %s(%s) não existe, ignorando" +#: utils/misc/guc.c:2970 +msgid "List of names of potential synchronous standbys." +msgstr "Lista de nomes de potenciais servidores em espera síncronos." -#: commands/aggregatecmds.c:292 commands/functioncmds.c:1119 -#, c-format -msgid "function %s already exists in schema \"%s\"" -msgstr "função %s já existe no esquema \"%s\"" +#: utils/misc/guc.c:2981 +msgid "Sets default text search configuration." +msgstr "Define a configuração de busca textual padrão." -#: commands/trigger.c:149 commands/trigger.c:1063 commands/lockcmds.c:149 -#: commands/indexcmds.c:187 commands/indexcmds.c:1627 commands/tablecmds.c:194 -#: commands/tablecmds.c:1096 commands/tablecmds.c:3354 commands/comment.c:573 -#: catalog/toasting.c:91 -#, c-format -msgid "\"%s\" is not a table" -msgstr "\"%s\" não é uma tabela" +#: utils/misc/guc.c:2991 +msgid "Sets the list of allowed SSL ciphers." +msgstr "Define a lista de cifras SSL permitidas." -#: commands/trigger.c:192 -msgid "TRUNCATE FOR EACH ROW triggers are not supported" -msgstr "gatilhos TRUNCATE FOR EACH ROW não são suportados" +#: utils/misc/guc.c:3006 +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." -#: commands/trigger.c:233 -msgid "cannot use subquery in trigger WHEN condition" -msgstr "não pode utilizar subconsulta em condição WHEN de gatilho" +#: utils/misc/guc.c:3026 +msgid "Sets whether \"\\'\" is allowed in string literals." +msgstr "Define se \"\\'\" é permitido em cadeias de caracteres literais." -#: commands/trigger.c:237 -msgid "cannot use aggregate function in trigger WHEN condition" -msgstr "não pode utilizar função de agregação em condição WHEN de gatilho" +#: utils/misc/guc.c:3036 +msgid "Sets the output format for bytea." +msgstr "Define o formato de saída para bytea." -#: commands/trigger.c:241 -msgid "cannot use window function in trigger WHEN condition" -msgstr "não pode utilizar função deslizante em condição WHEN de gatilho" +#: utils/misc/guc.c:3046 +msgid "Sets the message levels that are sent to the client." +msgstr "Define os níveis de mensagem que são enviadas ao cliente." -#: commands/trigger.c:261 commands/trigger.c:274 -msgid "statement trigger's WHEN condition cannot reference column values" +#: utils/misc/guc.c:3047 utils/misc/guc.c:3100 utils/misc/guc.c:3111 +#: utils/misc/guc.c:3167 +msgid "" +"Each level includes all the levels that follow it. The later the level, the " +"fewer messages are sent." msgstr "" -"condição WHEN de gatilho de comando não pode referenciar valores de coluna" - -#: commands/trigger.c:266 -msgid "INSERT trigger's WHEN condition cannot reference OLD values" -msgstr "condição WHEN de gatilho INSERT não pode referenciar valores OLD" +"Cada nível inclui todos os níveis que o seguem. Quanto mais superior for o " +"nível, menos mensagens são enviadas." -#: commands/trigger.c:279 -msgid "DELETE trigger's WHEN condition cannot reference NEW values" -msgstr "condição WHEN de gatilho DELETE não pode referenciar valores NEW" +#: utils/misc/guc.c:3057 +msgid "Enables the planner to use constraints to optimize queries." +msgstr "Habilita o planejador a usar retrições para otimizar consultas." -#: commands/trigger.c:284 -msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns" +#: utils/misc/guc.c:3058 +msgid "" +"Table scans will be skipped if their constraints guarantee that no rows " +"match the query." msgstr "" -"condição WHEN de gatilho BEFORE não pode referenciar colunas de sistema NEW" +"Buscas em tabelas serão ignoradas se suas restrições garantirem que nenhum " +"registro corresponde a consulta." -#: commands/trigger.c:322 -#, 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\"" +#: utils/misc/guc.c:3068 +msgid "Sets the transaction isolation level of each new transaction." +msgstr "Define nível de isolamento de transação de cada nova transação." -#: commands/trigger.c:329 -#, c-format -msgid "function %s must return type \"trigger\"" -msgstr "função %s deve retornar tipo \"trigger\"" +#: utils/misc/guc.c:3078 +msgid "Sets the display format for interval values." +msgstr "Define o formato de exibição para valores interval." -#: commands/trigger.c:438 commands/trigger.c:1152 -#, c-format -msgid "trigger \"%s\" for relation \"%s\" already exists" -msgstr "gatilho \"%s\" para relação \"%s\" já existe" +#: utils/misc/guc.c:3089 +msgid "Sets the verbosity of logged messages." +msgstr "Define o detalhamento das mensagens registradas." + +#: utils/misc/guc.c:3099 +msgid "Sets the message levels that are logged." +msgstr "Define os níveis de mensagem que serão registrados." + +#: utils/misc/guc.c:3110 +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." -#: commands/trigger.c:719 -msgid "Found referenced table's UPDATE trigger." -msgstr "Encontrado gatilho de UPDATE na tabela referenciada." +#: utils/misc/guc.c:3121 +msgid "Sets the type of statements logged." +msgstr "Define os tipos de comandos registrados." -#: commands/trigger.c:720 -msgid "Found referenced table's DELETE trigger." -msgstr "Encontrado gatilho de DELETE na tabela referenciada." +#: utils/misc/guc.c:3131 +msgid "Sets the syslog \"facility\" to be used when syslog enabled." +msgstr "" +"Define o syslog \"facility\" a ser utilizado quando syslog estiver " +"habilitado." -#: commands/trigger.c:721 -msgid "Found referencing table's trigger." -msgstr "Encontrado gatilho na tabela referenciada." +#: utils/misc/guc.c:3146 +msgid "Sets the session's behavior for triggers and rewrite rules." +msgstr "Define o comportamento de sessões para gatilhos e regras de reescrita." -#: commands/trigger.c:830 commands/trigger.c:846 -#, c-format -msgid "ignoring incomplete trigger group for constraint \"%s\" %s" -msgstr "ignorando grupo de gatilhos incompletos para restrição \"%s\" %s" +#: utils/misc/guc.c:3156 +msgid "Sets the current transaction's synchronization level." +msgstr "Define o nível de sincronização da transação atual." -#: commands/trigger.c:858 -#, c-format -msgid "converting trigger group into constraint \"%s\" %s" -msgstr "convertendo grupo de gatilhos na restrição \"%s\" %s" +#: utils/misc/guc.c:3166 +msgid "Enables logging of recovery-related debugging information." +msgstr "" +"Habilita o registro de informação de depuração relacionada a recuperação." -#: commands/trigger.c:994 commands/trigger.c:1194 commands/trigger.c:1305 -#: commands/comment.c:1105 -#, c-format -msgid "trigger \"%s\" for table \"%s\" does not exist" -msgstr "gatilho \"%s\" na tabela \"%s\" não existe" +#: utils/misc/guc.c:3182 +msgid "Collects function-level statistics on database activity." +msgstr "Coleta estatísticas de funções sobre a atividade do banco de dados." -#: commands/trigger.c:998 -#, c-format -msgid "trigger \"%s\" for table \"%s\" does not exist, skipping" -msgstr "gatilho \"%s\" para tabela \"%s\" não existe, ignorando" +#: utils/misc/guc.c:3192 +msgid "Set the level of information written to the WAL." +msgstr "Define o nível de informação escrito no WAL." -#: commands/trigger.c:1273 -#, c-format -msgid "permission denied: \"%s\" is a system trigger" -msgstr "permissão negada: \"%s\" é um gatilho do sistema" +#: utils/misc/guc.c:3202 +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." -#: commands/trigger.c:1848 -#, c-format -msgid "trigger function %u returned null value" -msgstr "função de gatilho %u retornou valor nulo" +#: utils/misc/guc.c:3212 +msgid "Sets how binary values are to be encoded in XML." +msgstr "Define como valores binários serão codificados em XML." -#: commands/trigger.c:1908 commands/trigger.c:2023 commands/trigger.c:2160 -#: commands/trigger.c:2304 -msgid "BEFORE STATEMENT trigger cannot return a value" -msgstr "gatilho BEFORE STATEMENT não pode retornar um valor" +#: utils/misc/guc.c:3222 +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." -#: commands/trigger.c:3930 catalog/namespace.c:232 catalog/namespace.c:306 +#: utils/misc/guc.c:4064 #, c-format -msgid "cross-database references are not implemented: \"%s.%s.%s\"" +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 "" -"referências cruzadas entre bancos de dados não estão implementadas: \"%s.%s." -"%s\"" +"%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" -#: commands/trigger.c:3981 +#: utils/misc/guc.c:4083 #, c-format -msgid "constraint \"%s\" is not deferrable" -msgstr "restrição \"%s\" não é postergável" +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" -#: commands/trigger.c:4004 +#: utils/misc/guc.c:4103 #, c-format -msgid "constraint \"%s\" does not exist" -msgstr "restrição \"%s\" não existe" - -#: commands/proclang.c:92 -msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters" +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 "" -"utilizando informação de pg_pltemplate ao invés dos parâmetros de CREATE " -"LANGUAGE" - -#: commands/proclang.c:102 -#, c-format -msgid "must be superuser to create procedural language \"%s\"" -msgstr "deve ser super-usuário para criar linguagem procedural \"%s\"" +"%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" -#: commands/proclang.c:122 commands/proclang.c:278 +#: utils/misc/guc.c:4134 #, c-format -msgid "function %s must return type \"language_handler\"" -msgstr "função %s deve retornar tipo \"language_handler\"" +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 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" -#: commands/proclang.c:242 +#: utils/misc/guc.c:4157 #, c-format -msgid "unsupported language \"%s\"" -msgstr "linguagem \"%s\" não é suportada" - -#: commands/proclang.c:244 -msgid "The supported languages are listed in the pg_pltemplate system catalog." +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 "" -"As linguagens suportadas estão listadas no catálogo do sistema pg_pltemplate." +"%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" -#: commands/proclang.c:252 -msgid "must be superuser to create custom procedural language" -msgstr "deve ser super-usuário para criar linguagem procedural personalizada" +#: utils/misc/guc.c:4739 utils/misc/guc.c:4903 +msgid "Value exceeds integer range." +msgstr "Valor excede intervalo de inteiros." -#: commands/proclang.c:271 -#, c-format +#: utils/misc/guc.c:4758 +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:4817 msgid "" -"changing return type of function %s from \"opaque\" to \"language_handler\"" +"Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"." msgstr "" -"alterando tipo de retorno da função %s de \"opaque\" para \"language_handler" -"\"" +"Unidades válidas para este parâmetro são \"ms\", \"s\", \"min\", \"h\" e \"d" +"\"." -#: commands/proclang.c:356 commands/proclang.c:606 +#: utils/misc/guc.c:5100 utils/misc/guc.c:5869 utils/misc/guc.c:5921 +#: utils/misc/guc.c:6594 utils/misc/guc.c:6753 utils/misc/guc.c:7932 +#: guc-file.l:203 #, c-format -msgid "language \"%s\" already exists" -msgstr "linguagem \"%s\" já existe" +msgid "unrecognized configuration parameter \"%s\"" +msgstr "parâmetro de configuração \"%s\" desconhecido" -#: commands/proclang.c:534 +#: utils/misc/guc.c:5133 #, c-format -msgid "language \"%s\" does not exist, skipping" -msgstr "linguagem \"%s\" não existe, ignorando" +msgid "parameter \"%s\" cannot be changed" +msgstr "parâmetro \"%s\" não pode ser mudado" -#: commands/conversioncmds.c:69 +#: utils/misc/guc.c:5162 utils/misc/guc.c:5336 utils/misc/guc.c:5433 +#: utils/misc/guc.c:5527 utils/misc/guc.c:5641 utils/misc/guc.c:5742 +#: guc-file.l:250 #, c-format -msgid "source encoding \"%s\" does not exist" -msgstr "codificação de origem \"%s\" não existe" +msgid "parameter \"%s\" cannot be changed without restarting the server" +msgstr "parâmetro \"%s\" não pode ser mudado sem reiniciar o servidor" -#: commands/conversioncmds.c:76 +#: utils/misc/guc.c:5172 #, c-format -msgid "destination encoding \"%s\" does not exist" -msgstr "codificação de destino \"%s\" não existe" +msgid "parameter \"%s\" cannot be changed now" +msgstr "parâmetro \"%s\" não pode ser mudado agora" -#: commands/conversioncmds.c:90 +#: utils/misc/guc.c:5203 #, c-format -msgid "encoding conversion function %s must return type \"void\"" -msgstr "função de conversão de codificação %s deve retornar tipo \"void\"" +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" -#: commands/conversioncmds.c:153 commands/conversioncmds.c:209 -#: commands/conversioncmds.c:262 commands/comment.c:1183 +#: utils/misc/guc.c:5213 utils/misc/guc.c:7947 #, c-format -msgid "conversion \"%s\" does not exist" -msgstr "conversão \"%s\" não existe" +msgid "permission denied to set parameter \"%s\"" +msgstr "permissão negada ao definir parâmetro \"%s\"" -#: commands/conversioncmds.c:159 +#: utils/misc/guc.c:5251 #, c-format -msgid "conversion \"%s\" does not exist, skipping" -msgstr "conversão \"%s\" não existe, ignorando" +msgid "cannot set parameter \"%s\" within security-definer function" +msgstr "não pode definir parâmetro \"%s\" em função com privilégios do dono" -#: commands/conversioncmds.c:224 +#: utils/misc/guc.c:5259 utils/init/miscinit.c:381 #, c-format -msgid "conversion \"%s\" already exists in schema \"%s\"" -msgstr "conversão \"%s\" já existe no esquema \"%s\"" +msgid "cannot set parameter \"%s\" within security-restricted operation" +msgstr "" +"não pode definir parâmetro \"%s\" em operação com restrição de segurança" -#: commands/lockcmds.c:93 +#: utils/misc/guc.c:5397 utils/misc/guc.c:5711 utils/misc/guc.c:8111 +#: utils/misc/guc.c:8145 #, c-format -msgid "could not obtain lock on relation \"%s\"" -msgstr "não pôde obter bloqueio na relação \"%s\"" +msgid "invalid value for parameter \"%s\": \"%s\"" +msgstr "valor é inválido para parâmetro \"%s\": \"%s\"" -#: commands/lockcmds.c:98 +#: utils/misc/guc.c:5406 #, c-format -msgid "could not obtain lock on relation with OID %u" -msgstr "não pôde obter bloqueio na relação com OID %u" - -#: commands/copy.c:312 commands/copy.c:324 commands/copy.c:358 -#: commands/copy.c:368 -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" +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)" -#: commands/copy.c:446 +#: utils/misc/guc.c:5492 #, c-format -msgid "could not write to COPY file: %m" -msgstr "não pôde escrever em arquivo COPY: %m" - -#: commands/copy.c:458 -msgid "connection lost during COPY to stdout" -msgstr "conexão perdida durante COPY para saída stdout" +msgid "parameter \"%s\" requires a numeric value" +msgstr "parâmetro \"%s\" requer um valor numérico" -#: commands/copy.c:499 +#: utils/misc/guc.c:5500 #, c-format -msgid "could not read from COPY file: %m" -msgstr "não pôde ler de arquivo COPY: %m" +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)" -#: commands/copy.c:550 +#: utils/misc/guc.c:5877 utils/misc/guc.c:5925 utils/misc/guc.c:6757 #, c-format -msgid "COPY from stdin failed: %s" -msgstr "COPY da entrada padrão falhou: %s" +msgid "must be superuser to examine \"%s\"" +msgstr "deve ser super-usuário para examinar \"%s\"" -#: commands/copy.c:566 +#: utils/misc/guc.c:5991 #, 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" +msgid "SET %s takes only one argument" +msgstr "SET %s só tem um argumento" -#: commands/copy.c:751 commands/copy.c:769 commands/copy.c:777 -#: commands/copy.c:785 commands/copy.c:793 commands/copy.c:801 -#: commands/copy.c:809 commands/copy.c:817 commands/copy.c:833 -#: 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/typecmds.c:274 commands/user.c:140 -#: commands/user.c:157 commands/user.c:165 commands/user.c:173 -#: commands/user.c:181 commands/user.c:189 commands/user.c:197 -#: commands/user.c:205 commands/user.c:213 commands/user.c:221 -#: commands/user.c:229 commands/user.c:467 commands/user.c:479 -#: commands/user.c:487 commands/user.c:495 commands/user.c:503 -#: commands/user.c:511 commands/user.c:519 commands/user.c:528 -#: commands/user.c:536 commands/functioncmds.c:485 commands/functioncmds.c:575 -#: commands/functioncmds.c:583 commands/functioncmds.c:591 -#: commands/functioncmds.c:1953 commands/functioncmds.c:1961 -#: commands/sequence.c:1025 commands/sequence.c:1033 commands/sequence.c:1041 -#: commands/sequence.c:1049 commands/sequence.c:1057 commands/sequence.c:1065 -#: commands/sequence.c:1073 commands/sequence.c:1081 catalog/aclchk.c:869 -#: catalog/aclchk.c:877 -msgid "conflicting or redundant options" -msgstr "opções conflitantes ou redundantes" +#: utils/misc/guc.c:6224 +msgid "SET requires parameter name" +msgstr "SET requer nome do parâmetro" -#: commands/copy.c:762 +#: utils/misc/guc.c:6339 #, c-format -msgid "COPY format \"%s\" not recognized" -msgstr "formato COPY \"%s\" desconhecido" +msgid "attempt to redefine parameter \"%s\"" +msgstr "tentativa de redefinir parâmetro \"%s\"" -#: commands/copy.c:825 commands/copy.c:839 +#: utils/misc/guc.c:7527 utils/init/miscinit.c:1055 #, 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" +msgid "could not read from file \"%s\": %m" +msgstr "não pôde ler do arquivo \"%s\": %m" -#: commands/copy.c:845 +#: utils/misc/guc.c:7648 #, c-format -msgid "option \"%s\" not recognized" -msgstr "opção \"%s\" desconhecida" - -#: commands/copy.c:856 -msgid "cannot specify DELIMITER in BINARY mode" -msgstr "não pode especificar DELIMITER no modo BINARY" - -#: commands/copy.c:861 -msgid "cannot specify NULL in BINARY mode" -msgstr "não pode especificar NULL no modo BINARY" - -#: commands/copy.c:883 -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:890 -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:896 -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" +msgid "could not parse setting for parameter \"%s\"" +msgstr "não pôde analisar definição para parâmetro \"%s\"" -#: commands/copy.c:913 +#: utils/misc/guc.c:8009 utils/misc/guc.c:8043 #, c-format -msgid "COPY delimiter cannot be \"%s\"" -msgstr "delimitador do COPY não pode ser \"%s\"" - -#: commands/copy.c:919 -msgid "COPY HEADER available only in CSV mode" -msgstr "COPY HEADER só está disponível no modo CSV" - -#: commands/copy.c:925 -msgid "COPY quote available only in CSV mode" -msgstr "delimitador de dados do COPY só está disponível no modo CSV" - -#: commands/copy.c:930 -msgid "COPY quote must be a single one-byte character" -msgstr "delimitador de dados do COPY deve ter um único caracter de um byte" +msgid "invalid value for parameter \"%s\": %d" +msgstr "valor é inválido para parâmetro \"%s\": %d" -#: commands/copy.c:935 -msgid "COPY delimiter and quote must be different" -msgstr "delimitador e delimitador de dados do COPY devem ser diferentes" +#: utils/misc/guc.c:8077 +#, c-format +msgid "invalid value for parameter \"%s\": %g" +msgstr "valor é inválido para parâmetro \"%s\": %g" -#: commands/copy.c:941 -msgid "COPY escape available only in CSV mode" -msgstr "escape do COPY só está disponível no modo CSV" +#: utils/misc/guc.c:8267 +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." -#: commands/copy.c:946 -msgid "COPY escape must be a single one-byte character" -msgstr "escape do COPY deve ter um único caracter de um byte" +#: utils/misc/guc.c:8279 +msgid "SET AUTOCOMMIT TO OFF is no longer supported" +msgstr "SET AUTOCOMMIT TO OFF não é mais suportado" -#: commands/copy.c:952 -msgid "COPY force quote available only in CSV mode" -msgstr "opção force quote do COPY somente está disponível no modo CSV" +#: utils/misc/guc.c:8354 +msgid "assertion checking is not supported by this build" +msgstr "verificação de asserção não é suportada por essa construção" -#: commands/copy.c:956 -msgid "COPY force quote only available using COPY TO" -msgstr "opção force quote do COPY somente está disponível ao utilizar COPY TO" +#: utils/misc/guc.c:8367 +msgid "Bonjour is not supported by this build" +msgstr "Bonjour não é suportado por essa construção" -#: commands/copy.c:962 -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" +#: utils/misc/guc.c:8380 +msgid "SSL is not supported by this build" +msgstr "SSL não é suportado por essa construção" -#: commands/copy.c:966 -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" +#: utils/misc/guc.c:8392 +msgid "Cannot enable parameter when \"log_statement_stats\" is true." +msgstr "não pode habilitar parâmetro quando \"log_statement_stats\" é true." -#: commands/copy.c:972 -msgid "COPY delimiter must not appear in the NULL specification" -msgstr "delimitador do COPY não deve aparecer em uma especificação NULL" +#: utils/misc/guc.c:8404 +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." -#: commands/copy.c:979 -msgid "CSV quote character must not appear in the NULL specification" +#: guc-file.l:274 +#, c-format +msgid "parameter \"%s\" removed from configuration file, reset to default" msgstr "" -"caracter delimitador de dados do CSV não deve aparecer na especificação NULL" +"parâmetro \"%s\" foi removido do arquivo de configuração, reiniciar para " +"padrão" -#: commands/copy.c:985 -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" +#: guc-file.l:333 +#, c-format +msgid "parameter \"%s\" changed to \"%s\"" +msgstr "parâmetro \"%s\" mudou para \"%s\"" -#: commands/copy.c:986 +#: guc-file.l:374 +#, c-format msgid "" -"Anyone can COPY to stdout or from stdin. psql's \\copy command also works " -"for anyone." +"could not open configuration file \"%s\": maximum nesting depth exceeded" 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." +"não pôde abrir arquivo de configuração \"%s\": profundidade aninhada máxima " +"excedida" -#: commands/copy.c:1032 +#: guc-file.l:409 libpq/hba.c:1683 #, c-format -msgid "table \"%s\" does not have OIDs" -msgstr "tabela \"%s\" não tem OIDs" +msgid "could not open configuration file \"%s\": %m" +msgstr "não pôde abrir arquivo de configuração \"%s\": %m" -#: commands/copy.c:1049 -msgid "COPY (SELECT) WITH OIDS is not supported" -msgstr "COPY (SELECT) WITH OIDS não é mais suportado" +#: guc-file.l:589 +#, 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" -#: commands/copy.c:1076 -msgid "COPY (SELECT INTO) is not supported" -msgstr "COPY (SELECT INTO) não é suportado" +#: guc-file.l:594 +#, 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\"" -#: commands/copy.c:1135 +#: utils/misc/tzparser.c:61 #, c-format -msgid "FORCE QUOTE column \"%s\" not referenced by COPY" -msgstr "coluna do tipo FORCE QUOTE \"%s\" não é referenciada pelo COPY" +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" -#: commands/copy.c:1157 +#: utils/misc/tzparser.c:68 #, 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" +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" -#: commands/copy.c:1235 +#: utils/misc/tzparser.c:80 #, c-format -msgid "cannot copy from view \"%s\"" -msgstr "não pode copiar visão \"%s\"" +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" -#: commands/copy.c:1237 -msgid "Try the COPY (SELECT ...) TO variant." -msgstr "Tente a variante COPY (SELECT ...) TO." +#: utils/misc/tzparser.c:115 +#, 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" -#: commands/copy.c:1241 +#: utils/misc/tzparser.c:124 #, c-format -msgid "cannot copy from sequence \"%s\"" -msgstr "não pode copiar sequência \"%s\"" +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" -#: commands/copy.c:1246 +#: utils/misc/tzparser.c:131 #, c-format -msgid "cannot copy from non-table relation \"%s\"" -msgstr "não pode copiar relação \"%s\" que não é uma tabela" +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" -#: commands/copy.c:1270 -msgid "relative path not allowed for COPY to file" -msgstr "caminho relativo não é permitido pelo COPY para arquivo" +#: utils/misc/tzparser.c:154 +#, 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" -#: commands/copy.c:1279 +#: utils/misc/tzparser.c:218 #, c-format -msgid "could not open file \"%s\" for writing: %m" -msgstr "não pôde abrir arquivo \"%s\" para escrita: %m" +msgid "time zone abbreviation \"%s\" is multiply defined" +msgstr "abreviação de zona horária \"%s\" foi definida mais de uma vez" -#: commands/copy.c:1286 commands/copy.c:1781 +#: utils/misc/tzparser.c:220 #, c-format -msgid "\"%s\" is a directory" -msgstr "\"%s\" é um diretório" +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." -#: commands/copy.c:1572 +#: utils/misc/tzparser.c:285 #, c-format -msgid "COPY %s, line %d, column %s" -msgstr "COPY %s, linha %d, coluna %s" +msgid "invalid time zone file name \"%s\"" +msgstr "nome de arquivo de zona horária \"%s\" é inválido" -#: commands/copy.c:1576 commands/copy.c:1621 +#: utils/misc/tzparser.c:298 #, c-format -msgid "COPY %s, line %d" -msgstr "COPY %s, linha %d" +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\"" -#: commands/copy.c:1587 +#: utils/misc/tzparser.c:325 postmaster/postmaster.c:1174 #, c-format -msgid "COPY %s, line %d, column %s: \"%s\"" -msgstr "COPY %s, linha %d, coluna %s: \"%s\"" +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." -#: commands/copy.c:1595 +#: utils/misc/tzparser.c:337 utils/misc/tzparser.c:350 #, c-format -msgid "COPY %s, line %d, column %s: null input" -msgstr "COPY %s, linha %d, coluna %s: entrada nula" +msgid "could not read time zone file \"%s\": %m" +msgstr "não pôde ler arquivo de zona horária \"%s\": %m" -#: commands/copy.c:1607 +#: utils/misc/tzparser.c:360 #, c-format -msgid "COPY %s, line %d: \"%s\"" -msgstr "COPY %s, linha %d: \"%s\"" +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" -#: commands/copy.c:1709 +#: utils/misc/tzparser.c:383 #, c-format -msgid "cannot copy to view \"%s\"" -msgstr "não pode copiar para visão \"%s\"" +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/misc/help_config.c:131 +msgid "internal error: unrecognized run-time parameter type\n" +msgstr "erro interno: tipo de parâmetro em tempo de execução desconhecido\n" -#: commands/copy.c:1714 +#: utils/error/elog.c:311 utils/error/elog.c:1156 #, c-format -msgid "cannot copy to sequence \"%s\"" -msgstr "não pode copiar para sequência \"%s\"" +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" -#: commands/copy.c:1719 +#: utils/error/elog.c:1547 #, c-format -msgid "cannot copy to non-table relation \"%s\"" -msgstr "não pode copiar para relação \"%s\" que não é uma tabela" +msgid "could not reopen file \"%s\" as stderr: %m" +msgstr "não pôde reabrir arquivo \"%s\" como saída stderr: %m" -#: commands/copy.c:1887 -msgid "COPY file signature not recognized" -msgstr "assinatura de arquivo COPY é desconhecida" +#: utils/error/elog.c:1560 +#, c-format +msgid "could not reopen file \"%s\" as stdout: %m" +msgstr "não pôde reabrir arquivo \"%s\" como saida stdout: %m" -#: commands/copy.c:1892 -msgid "invalid COPY file header (missing flags)" -msgstr "cabeçalho de arquivo COPY é inválido (faltando marcações)" +#: utils/error/elog.c:1950 utils/error/elog.c:1960 utils/error/elog.c:1970 +msgid "[unknown]" +msgstr "[desconhecido]" -#: commands/copy.c:1898 -msgid "unrecognized critical flags in COPY file header" -msgstr "marcações críticas desconhecidas no cabeçalho do arquivo COPY" +#: utils/error/elog.c:2321 utils/error/elog.c:2601 utils/error/elog.c:2679 +msgid "missing error text" +msgstr "faltando mensagem de erro" -#: commands/copy.c:1904 -msgid "invalid COPY file header (missing length)" -msgstr "cabeçalho de arquivo COPY é inválido (faltando tamanho)" +#: utils/error/elog.c:2324 utils/error/elog.c:2327 utils/error/elog.c:2682 +#: utils/error/elog.c:2685 +#, c-format +msgid " at character %d" +msgstr " no caracter %d" -#: commands/copy.c:1911 -msgid "invalid COPY file header (wrong length)" -msgstr "cabeçalho de arquivo COPY é inválido (tamanho incorreto)" +#: utils/error/elog.c:2337 utils/error/elog.c:2344 +msgid "DETAIL: " +msgstr "DETALHE: " -#: commands/copy.c:2002 -msgid "missing data for OID column" -msgstr "faltando dados da coluna OID" +#: utils/error/elog.c:2351 +msgid "HINT: " +msgstr "DICA: " -#: commands/copy.c:2008 -msgid "null OID in COPY data" -msgstr "OID nulo em dados do COPY" +#: utils/error/elog.c:2358 +msgid "QUERY: " +msgstr "CONSULTA: " -#: commands/copy.c:2018 commands/copy.c:2090 -msgid "invalid OID in COPY data" -msgstr "OID inválido em dados do COPY" +#: utils/error/elog.c:2365 +msgid "CONTEXT: " +msgstr "CONTEXTO: " -#: commands/copy.c:2033 +#: utils/error/elog.c:2375 #, c-format -msgid "missing data for column \"%s\"" -msgstr "faltando dados da coluna \"%s\"" +msgid "LOCATION: %s, %s:%d\n" +msgstr "LOCAL: %s, %s:%d\n" -#: commands/copy.c:2074 +#: utils/error/elog.c:2382 #, c-format -msgid "row field count is %d, expected %d" -msgstr "quantidade de campos do registro é %d, esperado %d" +msgid "LOCATION: %s:%d\n" +msgstr "LOCAL: %s:%d\n" -#: commands/copy.c:2494 commands/copy.c:2511 -msgid "literal carriage return found in data" -msgstr "retorno de carro foi encontrado em dados" +#: utils/error/elog.c:2396 +msgid "STATEMENT: " +msgstr "COMANDO: " -#: commands/copy.c:2495 commands/copy.c:2512 -msgid "unquoted carriage return found in data" -msgstr "retorno de carros sem aspas foi encontrado em dados" +#. translator: This string will be truncated at 47 +#. characters expanded. +#: utils/error/elog.c:2800 +#, c-format +msgid "operating system error %d" +msgstr "erro do sistema operacional %d" -#: commands/copy.c:2497 commands/copy.c:2514 -msgid "Use \"\\r\" to represent carriage return." -msgstr "Utilize \"\\r\" para representar retorno de carro." +#: utils/error/elog.c:2995 +msgid "DEBUG" +msgstr "DEPURAÇÃO" -#: commands/copy.c:2498 commands/copy.c:2515 -msgid "Use quoted CSV field to represent carriage return." -msgstr "Utilize campo entre aspas do CSV para representar retorno de carro." +#: utils/error/elog.c:2999 +msgid "LOG" +msgstr "LOG" -#: commands/copy.c:2527 -msgid "literal newline found in data" -msgstr "nova linha foi encontrada em dados" +#: utils/error/elog.c:3002 +msgid "INFO" +msgstr "INFO" -#: commands/copy.c:2528 -msgid "unquoted newline found in data" -msgstr "nova linha sem aspas foi encontrada em dados" +#: utils/error/elog.c:3005 +msgid "NOTICE" +msgstr "NOTA" -#: commands/copy.c:2530 -msgid "Use \"\\n\" to represent newline." -msgstr "Utilize \"\\n\" para representar nova linha." +#: utils/error/elog.c:3008 +msgid "WARNING" +msgstr "AVISO" -#: commands/copy.c:2531 -msgid "Use quoted CSV field to represent newline." -msgstr "Utilize campo entre aspas do CSV para representar nova linha." +#: utils/error/elog.c:3011 +msgid "ERROR" +msgstr "ERRO" -#: commands/copy.c:2577 commands/copy.c:2613 -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" +#: utils/error/elog.c:3014 +msgid "FATAL" +msgstr "FATAL" -#: commands/copy.c:2586 commands/copy.c:2602 -msgid "end-of-copy marker corrupt" -msgstr "marcador de fim-de-cópia corrompido" +#: utils/error/elog.c:3017 +msgid "PANIC" +msgstr "PÂNICO" -#: commands/copy.c:2729 commands/copy.c:2764 commands/copy.c:2944 -#: commands/copy.c:2979 -msgid "extra data after last expected column" -msgstr "dado extra após última coluna esperada" +#: utils/error/assert.c:37 +msgid "TRAP: ExceptionalCondition: bad arguments\n" +msgstr "TRAP: ExceptionalCondition: argumentos inválidos\n" -#: commands/copy.c:3026 -msgid "unterminated CSV quoted field" -msgstr "campo entre aspas do CSV não foi terminado" +#: utils/error/assert.c:40 +#, c-format +msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n" +msgstr "TRAP: %s(\"%s\", Arquivo: \"%s\", Linha: %d)\n" -#: commands/copy.c:3103 commands/copy.c:3122 -msgid "unexpected EOF in COPY data" -msgstr "EOF inesperado em dados do COPY" +#: utils/mb/encnames.c:485 +msgid "encoding name too long" +msgstr "nome da codificação é muito longo" -#: commands/copy.c:3112 -msgid "invalid field size" -msgstr "tamanho de campo inválido" +#: 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 de codificação %d é inesperado para conjuntos de caracteres ISO 8859" -#: commands/copy.c:3135 -msgid "incorrect binary data format" -msgstr "formato de dado binário incorreto" +#: 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 de codificação %d é inesperado para conjuntos de caracteres WIN" -#: commands/dbcommands.c:201 -msgid "LOCATION is not supported anymore" -msgstr "LOCATION não é mais suportado" +#: utils/mb/conv.c:509 +#, c-format +msgid "invalid encoding number: %d" +msgstr "número de codificação é inválido: %d" -#: commands/dbcommands.c:202 -msgid "Consider using tablespaces instead." -msgstr "Considere utilizar tablespaces." +#: utils/mb/wchar.c:1777 +#, c-format +msgid "invalid byte sequence for encoding \"%s\": 0x%s" +msgstr "sequência de bytes é inválida para codificação \"%s\": 0x%s" -#: commands/dbcommands.c:253 commands/dbcommands.c:1347 commands/user.c:255 -#: commands/user.c:562 +#: utils/mb/wchar.c:1806 #, c-format -msgid "invalid connection limit: %d" -msgstr "limite de conexão inválido: %d" +msgid "character 0x%s of encoding \"%s\" has no equivalent in \"%s\"" +msgstr "caracter 0x%s da codificação \"%s\" não tem equivalente em \"%s\"" -#: commands/dbcommands.c:272 -msgid "permission denied to create database" -msgstr "permissão negada ao criar banco de dados" +#: utils/mb/mbutils.c:281 +#, c-format +msgid "conversion between %s and %s is not supported" +msgstr "conversão entre %s e %s não é suportada" -#: commands/dbcommands.c:295 +#: utils/mb/mbutils.c:351 #, c-format -msgid "template database \"%s\" does not exist" -msgstr "banco de dados modelo \"%s\" não existe" +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" -#: commands/dbcommands.c:307 +#: utils/mb/mbutils.c:375 utils/mb/mbutils.c:676 #, c-format -msgid "permission denied to copy database \"%s\"" -msgstr "permissão negada ao copiar banco de dados \"%s\"" +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." -#: commands/dbcommands.c:323 +#: utils/mb/mbutils.c:462 #, c-format -msgid "invalid server encoding %d" -msgstr "codificação do servidor %d é inválida" +msgid "invalid source encoding name \"%s\"" +msgstr "nome da codificação de origem \"%s\" é inválido" -#: commands/dbcommands.c:329 commands/dbcommands.c:333 +#: utils/mb/mbutils.c:467 #, c-format -msgid "invalid locale name %s" -msgstr "nome de configuração regional %s é inválido" +msgid "invalid destination encoding name \"%s\"" +msgstr "nome da codificação de destino \"%s\" é inválido" -#: commands/dbcommands.c:369 commands/dbcommands.c:384 +#: utils/mb/mbutils.c:589 #, c-format -msgid "encoding %s does not match locale %s" -msgstr "codificação %s não corresponde a configuração regional %s" +msgid "invalid byte value for encoding \"%s\": 0x%02x" +msgstr "valor de byte é inválido para codificação \"%s\": 0x%02x" -#: commands/dbcommands.c:372 +#: utils/mmgr/aset.c:417 #, c-format -msgid "The chosen LC_CTYPE setting requires encoding %s." -msgstr "A definição de LC_TYPE escolhida requer codificação %s." +msgid "Failed while creating memory context \"%s\"." +msgstr "Falhou ao criar contexto de memória \"%s\"." -#: commands/dbcommands.c:387 +#: utils/mmgr/aset.c:588 utils/mmgr/aset.c:766 utils/mmgr/aset.c:967 #, c-format -msgid "The chosen LC_COLLATE setting requires encoding %s." -msgstr "A definição de LC_COLLATE escolhida requer codificação %s." +msgid "Failed on request of size %lu." +msgstr "Falhou ao requisitar o tamanho %lu." -#: commands/dbcommands.c:405 +#: utils/mmgr/portalmem.c:207 #, c-format -msgid "" -"new encoding (%s) is incompatible with the encoding of the template database " -"(%s)" -msgstr "" -"nova codificação (%s) é imcompatível com a codificação do banco de dados " -"modelo (%s)" +msgid "cursor \"%s\" already exists" +msgstr "cursor \"%s\" já existe" -#: commands/dbcommands.c:408 -msgid "" -"Use the same encoding as in the template database, or use template0 as " -"template." -msgstr "" -"Utilize a mesma codificação do banco de dados modelo ou utilize template0 " -"como modelo." +#: utils/mmgr/portalmem.c:211 +#, c-format +msgid "closing existing cursor \"%s\"" +msgstr "fechando cursor existente \"%s\"" -#: commands/dbcommands.c:413 +#: utils/mmgr/portalmem.c:478 #, c-format -msgid "" -"new collation (%s) is incompatible with the collation of the template " -"database (%s)" -msgstr "" -"novo conjunto de regras de comparação (%s) é incompatível com o conjunto de " -"regras de comparação do banco de dados modelo (%s)" +msgid "cannot drop active portal \"%s\"" +msgstr "não pode remover portal ativo \"%s\"" -#: commands/dbcommands.c:415 -msgid "" -"Use the same collation as in the template database, or use template0 as " -"template." +#: utils/mmgr/portalmem.c:668 +msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD" msgstr "" -"Utilize o mesmo conjunto de regras de comparação do banco de dados modelo ou " -"utilize template0 como modelo." +"não pode executar PREPARE em uma transação que criou um cursor WITH HOLD" -#: commands/dbcommands.c:420 +#: utils/hash/dynahash.c:955 storage/lmgr/lock.c:723 storage/lmgr/lock.c:792 +#: storage/lmgr/lock.c:2301 storage/lmgr/lock.c:2700 storage/lmgr/lock.c:2765 +#: storage/lmgr/proc.c:197 storage/lmgr/proc.c:216 +#: storage/lmgr/predicate.c:2246 storage/lmgr/predicate.c:2261 +#: storage/lmgr/predicate.c:3653 storage/lmgr/predicate.c:4796 +#: storage/ipc/shmem.c:190 +msgid "out of shared memory" +msgstr "sem memória compartilhada" + +#: utils/sort/tuplesort.c:3131 #, c-format -msgid "" -"new LC_CTYPE (%s) is incompatible with the LC_CTYPE of the template database " -"(%s)" -msgstr "" -"novo LC_CTYPE (%s) é incompatível com o LC_CTYPE do banco de dados modelo " -"(%s)" +msgid "could not create unique index \"%s\"" +msgstr "não pôde criar índice único \"%s\"" -#: commands/dbcommands.c:422 -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." +#: utils/sort/tuplesort.c:3133 +#, c-format +msgid "Key %s is duplicated." +msgstr "Chave %s está duplicada." -#: commands/dbcommands.c:449 commands/dbcommands.c:1054 -msgid "pg_global cannot be used as default tablespace" -msgstr "pg_global não pode ser utilizado como tablespace padrão" +#: utils/sort/logtape.c:213 +#, 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" + +#: utils/sort/logtape.c:215 +msgid "Perhaps out of disk space?" +msgstr "Talvez esteja faltando espaço em disco?" -#: commands/dbcommands.c:475 +#: utils/sort/logtape.c:232 #, c-format -msgid "cannot assign new default tablespace \"%s\"" -msgstr "não pode atribuir nova tablespace padrão \"%s\"" +msgid "could not read block %ld of temporary file: %m" +msgstr "não pôde ler bloco %ld do arquivo temporário: %m" -#: commands/dbcommands.c:477 +#: utils/fmgr/funcapi.c:354 #, c-format msgid "" -"There is a conflict because database \"%s\" already has some tables in this " -"tablespace." +"could not determine actual result type for function \"%s\" declared to " +"return type %s" msgstr "" -"Há um conflito porque o banco de dados \"%s\" já tem algumas tabelas nesta " -"tablespace." +"não pôde determinar tipo de resultado para função \"%s\" declarada para " +"retornar tipo %s" -#: commands/dbcommands.c:497 commands/dbcommands.c:925 +#: utils/fmgr/funcapi.c:1208 utils/fmgr/funcapi.c:1239 +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:1233 +msgid "no column alias was provided" +msgstr "nenhum aliás de coluna foi fornecido" + +#: utils/fmgr/funcapi.c:1257 +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" + +#: utils/fmgr/fmgr.c:272 #, c-format -msgid "database \"%s\" already exists" -msgstr "banco de dados \"%s\" já existe" +msgid "internal function \"%s\" is not in internal lookup table" +msgstr "função interna \"%s\" não está na tabela de busca interna" -#: commands/dbcommands.c:511 +#: utils/fmgr/fmgr.c:482 #, c-format -msgid "source database \"%s\" is being accessed by other users" -msgstr "banco de dados fonte \"%s\" está sendo acessado por outros usuários" +msgid "unrecognized API version %d reported by info function \"%s\"" +msgstr "versão %d de API informada pela função \"%s\" é desconhecida" -#: commands/dbcommands.c:767 +#: utils/fmgr/fmgr.c:853 utils/fmgr/fmgr.c:2114 #, c-format -msgid "database \"%s\" does not exist, skipping" -msgstr "banco de dados \"%s\" não existe, ignorando" +msgid "function %u has too many arguments (%d, maximum is %d)" +msgstr "função %u tem muitos argumentos (%d, máximo é %d)" -#: commands/dbcommands.c:788 -msgid "cannot drop a template database" -msgstr "não pode remover banco de dados modelo" +#: utils/fmgr/fmgr.c:2507 +#, 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" -#: commands/dbcommands.c:794 -msgid "cannot drop the currently open database" -msgstr "não pode remover banco de dados que se encontra aberto" +#: utils/fmgr/dfmgr.c:125 +#, c-format +msgid "could not find function \"%s\" in file \"%s\"" +msgstr "não pôde encontrar função \"%s\" no arquivo \"%s\"" -#: commands/dbcommands.c:805 commands/dbcommands.c:947 -#: commands/dbcommands.c:1076 +#: utils/fmgr/dfmgr.c:204 utils/fmgr/dfmgr.c:413 utils/fmgr/dfmgr.c:461 #, c-format -msgid "database \"%s\" is being accessed by other users" -msgstr "banco de dados \"%s\" está sendo acessado por outros usuários" +msgid "could not access file \"%s\": %m" +msgstr "não pôde acessar arquivo \"%s\": %m" -#: commands/dbcommands.c:916 -msgid "permission denied to rename database" -msgstr "permissão negada ao renomear banco de dados" +#: utils/fmgr/dfmgr.c:242 +#, c-format +msgid "could not load library \"%s\": %s" +msgstr "não pôde carregar biblioteca \"%s\": %s" -#: commands/dbcommands.c:936 -msgid "current database cannot be renamed" -msgstr "banco de dados atual não pode ser renomeado" +#: utils/fmgr/dfmgr.c:274 +#, c-format +msgid "incompatible library \"%s\": missing magic block" +msgstr "biblioteca \"%s\" é incompatível: faltando bloco mágico" -#: commands/dbcommands.c:1028 -msgid "cannot change the tablespace of the currently open database" +#: utils/fmgr/dfmgr.c:276 +msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro." msgstr "" -"não pode mudar a tablespace de um banco de dados que se encontra aberto" +"Bibliotecas de extensões são obrigadas a utilizar o macro PG_MODULE_MAGIC." -#: commands/dbcommands.c:1116 +#: utils/fmgr/dfmgr.c:312 #, 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\"" +msgid "incompatible library \"%s\": version mismatch" +msgstr "biblioteca \"%s\" é incompatível: incompatibilidade de versão" -#: commands/dbcommands.c:1118 -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." +#: utils/fmgr/dfmgr.c:314 +#, c-format +msgid "Server is version %d.%d, library is version %d.%d." +msgstr "Servidor tem versão %d,%d, biblioteca tem versão %d.%d." -#: commands/dbcommands.c:1246 commands/dbcommands.c:1719 -#: commands/dbcommands.c:1913 commands/dbcommands.c:1961 -#: commands/tablespace.c:579 +#: utils/fmgr/dfmgr.c:333 #, 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\"" +msgid "Server has FUNC_MAX_ARGS = %d, library has %d." +msgstr "Servidor tem FUNC_MAX_ARGS = %d, biblioteca tem %d." -#: commands/dbcommands.c:1495 -msgid "permission denied to change owner of database" -msgstr "permissão negada ao mudar dono do banco de dados" +#: utils/fmgr/dfmgr.c:342 +#, c-format +msgid "Server has INDEX_MAX_KEYS = %d, library has %d." +msgstr "Servidor tem INDEX_MAX_KEYS = %d, biblioteca tem %d." -#: commands/dbcommands.c:1807 +#: utils/fmgr/dfmgr.c:351 #, 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." +msgid "Server has NAMEDATALEN = %d, library has %d." +msgstr "Servidor tem NAMEDATALEN = %d, biblioteca tem %d." -#: commands/dbcommands.c:1810 +#: utils/fmgr/dfmgr.c:360 #, c-format -msgid "There are %d other session(s) using the database." -msgstr "Há %d outra(s) sessão(ões) utilizando o banco de dados." +msgid "Server has FLOAT4PASSBYVAL = %s, library has %s." +msgstr "Servidor tem FLOAT4PASSBYVAL = %s, biblioteca tem %s." + +#: utils/fmgr/dfmgr.c:369 +#, c-format +msgid "Server has FLOAT8PASSBYVAL = %s, library has %s." +msgstr "Servidor tem FLOAT8PASSBYVAL = %s, biblioteca tem %s." + +#: utils/fmgr/dfmgr.c:376 +msgid "Magic block has unexpected length or padding difference." +msgstr "Bloco mágico tem tamanho inesperado ou diferença no enchimento." -#: commands/dbcommands.c:1813 +#: utils/fmgr/dfmgr.c:379 #, c-format -msgid "There are %d prepared transaction(s) using the database." -msgstr "Há %d transação(ões) preparada(s) utilizando o banco de dados." +msgid "incompatible library \"%s\": magic block mismatch" +msgstr "biblioteca \"%s\" é incompatível: incompatibilidade do bloco mágico" -#: commands/indexcmds.c:162 -msgid "must specify at least one column" -msgstr "deve especificar pelo menos uma coluna" +#: utils/fmgr/dfmgr.c:545 +#, c-format +msgid "access to library \"%s\" is not allowed" +msgstr "acesso a biblioteca \"%s\" não é permitido" -#: commands/indexcmds.c:166 +#: utils/fmgr/dfmgr.c:572 #, 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" +msgid "invalid macro name in dynamic library path: %s" +msgstr "nome de macro é inválido no caminho de biblioteca dinâmica: %s" -#: commands/indexcmds.c:196 -msgid "cannot create indexes on temporary tables of other sessions" -msgstr "não pode criar índices em tabelas temporárias de outras sessões" +#: utils/fmgr/dfmgr.c:617 +msgid "zero-length component in parameter \"dynamic_library_path\"" +msgstr "componente de tamanho zero no parâmetro \"dynamic_library_path\"" -#: commands/indexcmds.c:256 commands/tablecmds.c:455 commands/tablecmds.c:6978 -msgid "only shared relations can be placed in pg_global tablespace" +#: utils/fmgr/dfmgr.c:636 +msgid "component in parameter \"dynamic_library_path\" is not an absolute path" msgstr "" -"somente relações compartilhadas podem ser armazenadas na tablespace pg_global" +"componente no parâmetro \"dynamic_library_path\" não é um caminho absoluto" -#: commands/indexcmds.c:287 -msgid "substituting access method \"gist\" for obsolete method \"rtree\"" -msgstr "substituindo método de acesso \"gist\" pelo método obsoleto \"rtree\"" +#: utils/init/postinit.c:197 postmaster/postmaster.c:1098 +msgid "could not load pg_hba.conf" +msgstr "não pôde carregar pg_hba.conf" -#: commands/indexcmds.c:295 commands/comment.c:1261 commands/comment.c:1342 -#: commands/opclasscmds.c:281 commands/opclasscmds.c:669 -#: commands/opclasscmds.c:769 commands/opclasscmds.c:1495 -#: commands/opclasscmds.c:1556 commands/opclasscmds.c:1718 -#: commands/opclasscmds.c:1812 commands/opclasscmds.c:1903 -#: commands/opclasscmds.c:2046 +#: utils/init/postinit.c:225 #, c-format -msgid "access method \"%s\" does not exist" -msgstr "método de acesso \"%s\" não existe" +msgid "replication connection authorized: user=%s" +msgstr "conexão de replicação autorizada: usuário=%s" -#: commands/indexcmds.c:304 +#: utils/init/postinit.c:229 #, c-format -msgid "access method \"%s\" does not support unique indexes" -msgstr "método de acesso \"%s\" não suporta índices únicos" +msgid "connection authorized: user=%s database=%s" +msgstr "conexão autorizada: usuário=%s banco de dados=%s" -#: commands/indexcmds.c:309 +#: utils/init/postinit.c:260 #, 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" +msgid "database \"%s\" has disappeared from pg_database" +msgstr "banco de dados \"%s\" desapareceu de pg_database" -#: commands/indexcmds.c:314 +#: utils/init/postinit.c:262 #, 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" +msgid "Database OID %u now seems to belong to \"%s\"." +msgstr "Banco de dados com OID %u parece pertencer a \"%s\"." -#: commands/indexcmds.c:364 -msgid "primary keys cannot be expressions" -msgstr "chaves primárias não podem ser expressões" +#: utils/init/postinit.c:282 +#, c-format +msgid "database \"%s\" is not currently accepting connections" +msgstr "banco de dados \"%s\" não está aceitando conexões" -#: commands/indexcmds.c:468 +#: utils/init/postinit.c:295 #, c-format -msgid "%s %s will create implicit index \"%s\" for table \"%s\"" -msgstr "%s %s criará índice implícito \"%s\" na tabela \"%s\"" +msgid "permission denied for database \"%s\"" +msgstr "permissão negada para banco de dados \"%s\"" -#: commands/indexcmds.c:827 -msgid "cannot use subquery in index predicate" -msgstr "não pode utilizar subconsulta em predicado de índice" +#: utils/init/postinit.c:296 +msgid "User does not have CONNECT privilege." +msgstr "Usuário não tem privilégio CONNECT." -#: commands/indexcmds.c:831 -msgid "cannot use aggregate in index predicate" -msgstr "não pode utilizar agregação em predicado de índice" +#: utils/init/postinit.c:313 +#, c-format +msgid "too many connections for database \"%s\"" +msgstr "muitas conexões para banco de dados \"%s\"" -#: commands/indexcmds.c:840 -msgid "functions in index predicate must be marked IMMUTABLE" -msgstr "funções em predicado de índice devem ser IMMUTABLE" +#: utils/init/postinit.c:335 utils/init/postinit.c:342 +msgid "database locale is incompatible with operating system" +msgstr "" +"configuração regional do banco de dados é incompatível com o sistema " +"operacional" -#: commands/indexcmds.c:942 -msgid "cannot use subquery in index expression" -msgstr "não pode utilizar subconsulta em expressão de índice" +#: utils/init/postinit.c:336 +#, 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()." -#: commands/indexcmds.c:946 -msgid "cannot use aggregate function in index expression" -msgstr "não pode utilizar função de agregação em expressão de índice" +#: utils/init/postinit.c:338 utils/init/postinit.c:345 +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 que falta." -#: commands/indexcmds.c:956 -msgid "functions in index expression must be marked IMMUTABLE" -msgstr "funções em expressão de índice devem ser IMMUTABLE" +#: utils/init/postinit.c:343 +#, 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:608 +msgid "no roles are defined in this database system" +msgstr "nenhuma role está definida nesse sistema de banco de dados" -#: commands/indexcmds.c:991 +#: utils/init/postinit.c:609 #, c-format -msgid "operator %s is not commutative" -msgstr "operador %s não é comutativo" +msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;." +msgstr "Você deve executar imediatamente CREATE USER \"%s\" SUPERUSER;." -#: commands/indexcmds.c:993 -msgid "Only commutative operators can be used in exclusion constraints." +#: utils/init/postinit.c:632 +msgid "new replication connections are not allowed during database shutdown" msgstr "" -"Somente operadores comutativos pode ser utilizados em restrições de exclusão." +"novas conexões de replicação não são permitidas durante desligamento de " +"banco de dados" -#: commands/indexcmds.c:1019 -#, 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\"" +#: utils/init/postinit.c:636 +msgid "must be superuser to connect during database shutdown" +msgstr "" +"deve ser super-usuário para se conectar durante desligamento de banco de " +"dados" -#: commands/indexcmds.c:1022 -#, fuzzy +#: utils/init/postinit.c:646 +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:660 msgid "" -"The exclusion operator must be related to the index operator class for the " -"constraint." +"remaining connection slots are reserved for non-replication superuser " +"connections" msgstr "" -"Você deve especificar uma classe de operadores para o índice ou definir uma " -"classe de operadores padrão para o tipo de dado." +"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:675 +msgid "must be replication role to start walsender" +msgstr "deve ser role de replicação para iniciar walsender" -#: commands/indexcmds.c:1057 +#: utils/init/postinit.c:735 #, 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" +msgid "database %u does not exist" +msgstr "banco de dados %u não existe" -#: commands/indexcmds.c:1062 +#: utils/init/postinit.c:787 +msgid "It seems to have just been dropped or renamed." +msgstr "Parece ter sido removido ou renomeado." + +#: utils/init/postinit.c:805 #, 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" +msgid "The database subdirectory \"%s\" is missing." +msgstr "O subdiretório do banco de dados \"%s\" não foi encontrado." -#: commands/indexcmds.c:1118 +#: utils/init/postinit.c:810 #, 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\"" +msgid "could not access directory \"%s\": %m" +msgstr "não pôde acessar diretório \"%s\": %m" -#: commands/indexcmds.c:1120 -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." +#: utils/init/miscinit.c:115 +#, c-format +msgid "could not change directory to \"%s\": %m" +msgstr "não pôde mudar diretório para \"%s\": %m" -#: commands/indexcmds.c:1149 commands/indexcmds.c:1157 commands/comment.c:1289 -#: commands/comment.c:1297 commands/opclasscmds.c:1507 -#: commands/opclasscmds.c:1511 commands/opclasscmds.c:1739 -#: commands/opclasscmds.c:1750 commands/opclasscmds.c:1926 -#: commands/opclasscmds.c:1937 +#: utils/init/miscinit.c:460 #, 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\"" +msgid "role \"%s\" is not permitted to log in" +msgstr "role \"%s\" não tem permissão para entrar" -#: commands/indexcmds.c:1170 +#: utils/init/miscinit.c:478 #, c-format -msgid "operator class \"%s\" does not accept data type %s" -msgstr "classe de operadores \"%s\" não aceita tipo de dado %s" +msgid "too many connections for role \"%s\"" +msgstr "muitas conexões para role \"%s\"" + +#: utils/init/miscinit.c:538 +msgid "permission denied to set session authorization" +msgstr "permissão negada ao definir autorização de sessão" -#: commands/indexcmds.c:1260 +#: utils/init/miscinit.c:618 #, 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" +msgid "invalid role OID: %u" +msgstr "OID de role é inválido: %u" -#: commands/indexcmds.c:1639 +#: utils/init/miscinit.c:750 #, c-format -msgid "table \"%s\" has no indexes" -msgstr "tabela \"%s\" não tem índices" +msgid "could not create lock file \"%s\": %m" +msgstr "não pôde criar arquivo de bloqueio \"%s\": %m" -#: commands/indexcmds.c:1667 -msgid "can only reindex the currently open database" -msgstr "só pode reindexar o banco de dados atualmente aberto" +#: utils/init/miscinit.c:764 +#, c-format +msgid "could not open lock file \"%s\": %m" +msgstr "não pôde abrir arquivo de bloqueio \"%s\": %m" -#: commands/indexcmds.c:1752 +#: utils/init/miscinit.c:770 #, c-format -msgid "table \"%s.%s\" was reindexed" -msgstr "tabela \"%s.%s\" foi reindexada" +msgid "could not read lock file \"%s\": %m" +msgstr "não pôde ler arquivo de bloqueio \"%s\": %m" -#: commands/tablecmds.c:192 +#: utils/init/miscinit.c:818 #, c-format -msgid "table \"%s\" does not exist" -msgstr "tabela \"%s\" não existe" +msgid "lock file \"%s\" already exists" +msgstr "arquivo de bloqueio \"%s\" já existe" -#: commands/tablecmds.c:193 +#: utils/init/miscinit.c:822 #, c-format -msgid "table \"%s\" does not exist, skipping" -msgstr "tabela \"%s\" não existe, ignorando" +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\"?" -#: commands/tablecmds.c:195 -msgid "Use DROP TABLE to remove a table." -msgstr "Use DROP TABLE para remover uma tabela." +#: utils/init/miscinit.c:824 +#, 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\"?" -#: commands/tablecmds.c:198 +#: utils/init/miscinit.c:827 #, c-format -msgid "sequence \"%s\" does not exist" -msgstr "sequência \"%s\" não existe" +msgid "Is another postgres (PID %d) using socket file \"%s\"?" +msgstr "Outro postgres (PID %d) está utilizando arquivo de soquete \"%s\"?" -#: commands/tablecmds.c:199 +#: utils/init/miscinit.c:829 #, c-format -msgid "sequence \"%s\" does not exist, skipping" -msgstr "sequência \"%s\" não existe, ignorando" +msgid "Is another postmaster (PID %d) using socket file \"%s\"?" +msgstr "Outro postmaster (PID %d) está utilizando arquivo de soquete \"%s\"?" -#: commands/tablecmds.c:201 -msgid "Use DROP SEQUENCE to remove a sequence." -msgstr "Use DROP SEQUENCE para remover uma sequência." +#: utils/init/miscinit.c:865 +#, 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" -#: commands/tablecmds.c:204 +#: utils/init/miscinit.c:868 #, c-format -msgid "view \"%s\" does not exist" -msgstr "visão \"%s\" não existe" +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\"." -#: commands/tablecmds.c:205 +#: utils/init/miscinit.c:884 #, c-format -msgid "view \"%s\" does not exist, skipping" -msgstr "visão \"%s\" não existe, ignorando" +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:886 +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." -#: commands/tablecmds.c:206 commands/tablecmds.c:2152 -#: commands/tablecmds.c:2373 commands/tablecmds.c:7801 commands/comment.c:580 -#: commands/view.c:163 +#: utils/init/miscinit.c:927 utils/init/miscinit.c:938 +#: utils/init/miscinit.c:948 #, c-format -msgid "\"%s\" is not a view" -msgstr "\"%s\" não é uma visão" +msgid "could not write lock file \"%s\": %m" +msgstr "não pôde escrever no arquivo de bloqueio \"%s\": %m" -#: commands/tablecmds.c:207 -msgid "Use DROP VIEW to remove a view." -msgstr "Use DROP VIEW para remover uma visão." +#: utils/init/miscinit.c:1155 utils/init/miscinit.c:1168 +#, c-format +msgid "\"%s\" is not a valid data directory" +msgstr "\"%s\" não é um diretório de dados válido" -#: commands/tablecmds.c:210 +#: utils/init/miscinit.c:1157 #, c-format -msgid "index \"%s\" does not exist" -msgstr "índice \"%s\" não existe" +msgid "File \"%s\" is missing." +msgstr "Arquivo \"%s\" não foi encontrado." -#: commands/tablecmds.c:211 +#: utils/init/miscinit.c:1170 #, c-format -msgid "index \"%s\" does not exist, skipping" -msgstr "índice \"%s\" não existe, ignorando" +msgid "File \"%s\" does not contain valid data." +msgstr "Arquivo \"%s\" não contém dados válidos." -#: commands/tablecmds.c:213 -msgid "Use DROP INDEX to remove an index." -msgstr "Use DROP INDEX para remover um índice." +#: utils/init/miscinit.c:1172 +msgid "You might need to initdb." +msgstr "Você precisa executar o initdb." -#: commands/tablecmds.c:217 commands/typecmds.c:656 +#: utils/init/miscinit.c:1180 #, c-format -msgid "type \"%s\" does not exist, skipping" -msgstr "tipo \"%s\" não existe, ignorando" +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." -#: commands/tablecmds.c:218 +#: utils/init/miscinit.c:1228 #, c-format -msgid "\"%s\" is not a type" -msgstr "\"%s\" não é um tipo" +msgid "invalid list syntax in parameter \"%s\"" +msgstr "sintaxe de lista é inválida para parâmetro \"%s\"" -#: commands/tablecmds.c:219 -msgid "Use DROP TYPE to remove a type." -msgstr "use DROP TYPE para remover um tipo." +#: utils/init/miscinit.c:1265 +#, c-format +msgid "loaded library \"%s\"" +msgstr "biblioteca \"%s\" foi carregada" -#: commands/tablecmds.c:889 +#: utils/cache/relcache.c:4321 #, c-format -msgid "truncate cascades to table \"%s\"" -msgstr "truncando em cascata tabela \"%s\"" +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" -#: commands/tablecmds.c:1119 -msgid "cannot truncate temporary tables of other sessions" -msgstr "não pode truncar tabelas temporárias de outras sessões" +#: utils/cache/relcache.c:4323 +msgid "Continuing anyway, but there's something wrong." +msgstr "Continuando mesmo assim, mas há algo errado." -#: commands/tablecmds.c:1235 commands/tablecmds.c:1619 -#: commands/tablecmds.c:3722 catalog/heap.c:380 +#: utils/cache/relcache.c:4537 #, c-format -msgid "tables can have at most %d columns" -msgstr "tabelas podem ter no máximo %d colunas" +msgid "could not remove cache file \"%s\": %m" +msgstr "não pôde remover arquivo de cache \"%s\": %m" -#: commands/tablecmds.c:1320 commands/tablecmds.c:7206 +#: utils/cache/lsyscache.c:2413 utils/cache/lsyscache.c:2446 +#: utils/cache/lsyscache.c:2479 utils/cache/lsyscache.c:2512 #, c-format -msgid "cannot inherit from temporary relation \"%s\"" -msgstr "não pode herdar de uma tabela temporária \"%s\"" +msgid "type %s is only a shell" +msgstr "tipo %s é indefinido" -#: commands/tablecmds.c:1337 commands/tablecmds.c:7234 +#: utils/cache/lsyscache.c:2418 #, c-format -msgid "relation \"%s\" would be inherited from more than once" -msgstr "relação \"%s\" seria herdada de mais de uma vez" +msgid "no input function available for type %s" +msgstr "nenhuma função de entrada disponível para tipo %s" -#: commands/tablecmds.c:1392 +#: utils/cache/lsyscache.c:2451 #, c-format -msgid "merging multiple inherited definitions of column \"%s\"" -msgstr "juntando múltiplas definições herdadas da coluna \"%s\"" +msgid "no output function available for type %s" +msgstr "nenhuma função de saída disponível para tipo %s" -#: commands/tablecmds.c:1400 +#: utils/cache/typcache.c:195 parser/parse_type.c:202 #, c-format -msgid "inherited column \"%s\" has a type conflict" -msgstr "coluna herdada \"%s\" tem um conflito de tipo" +msgid "type \"%s\" is only a shell" +msgstr "tipo \"%s\" é indefinido" -#: commands/tablecmds.c:1412 +#: utils/cache/typcache.c:634 #, c-format -msgid "inherited column \"%s\" has a storage parameter conflict" -msgstr "coluna herdada \"%s\" tem um conflito de parâmetro de armazenamento" +msgid "type %s is not composite" +msgstr "tipo %s não é composto" -#: commands/tablecmds.c:1564 -#, c-format -msgid "merging column \"%s\" with inherited definition" -msgstr "juntando coluna \"%s\" com definição herdada" +#: utils/cache/typcache.c:648 +msgid "record type has not been registered" +msgstr "tipo record não foi registrado" -#: commands/tablecmds.c:1572 -#, c-format -msgid "column \"%s\" has a type conflict" -msgstr "coluna \"%s\" tem um conflito de tipo" +#: utils/cache/plancache.c:606 +msgid "cached plan must not change result type" +msgstr "plano em cache não deve mudar tipo resultante" + +#: utils/cache/relmapper.c:454 +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" -#: commands/tablecmds.c:1584 +#: utils/cache/relmapper.c:596 utils/cache/relmapper.c:702 #, c-format -msgid "column \"%s\" has a storage parameter conflict" -msgstr "coluna \"%s\" tem um conflito de parâmetro de armazenamento" +msgid "could not open relation mapping file \"%s\": %m" +msgstr "não pôde abrir arquivo de mapeamento de relação \"%s\": %m" -#: commands/tablecmds.c:1636 +#: utils/cache/relmapper.c:609 #, c-format -msgid "column \"%s\" inherits conflicting default values" -msgstr "coluna \"%s\" herdou valores padrão conflitantes" +msgid "could not read relation mapping file \"%s\": %m" +msgstr "não pôde ler do arquivo de mapeamento de relação \"%s\": %m" -#: commands/tablecmds.c:1638 -msgid "To resolve the conflict, specify a default explicitly." -msgstr "Para resolver o conflito, especifique um padrão explicitamente." +#: utils/cache/relmapper.c:619 +#, c-format +msgid "relation mapping file \"%s\" contains invalid data" +msgstr "arquivo de mapeamento de relação \"%s\" contém dados inválidos" -#: commands/tablecmds.c:1685 +#: utils/cache/relmapper.c:629 #, c-format -msgid "" -"check constraint name \"%s\" appears multiple times but with different " -"expressions" +msgid "relation mapping file \"%s\" contains incorrect checksum" msgstr "" -"nome da restrição de verificação \"%s\" aparece múltiplas vezes mas com " -"diferentes expressões" +"arquivo de mapeamento de relação \"%s\" contém soma de verificação incorreta" -#: commands/tablecmds.c:1973 -#, fuzzy -msgid "cannot rename column of typed table" -msgstr "não pode renomear coluna de uma tabela tipada" +#: utils/cache/relmapper.c:741 +#, 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" -#: commands/tablecmds.c:1989 +#: utils/cache/relmapper.c:754 #, c-format -msgid "\"%s\" is not a table, view, composite type or index" -msgstr "\"%s\" não é uma tabela, visão, tipo composto ou índice" +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" -#: commands/tablecmds.c:2055 +#: utils/cache/relmapper.c:760 #, c-format -msgid "inherited column \"%s\" must be renamed in child tables too" +msgid "could not close relation mapping file \"%s\": %m" +msgstr "não pôde fechar arquivo de mapeamento de relação \"%s\": %m" + +#: 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 "" -"coluna herdada \"%s\" deve ser renomeada nas tabelas descendentes também" +"ponteiros de página corrompidos: inferior = %u, superior = %u, especial = %u" -#: commands/tablecmds.c:2073 +#: storage/page/bufpage.c:433 #, c-format -msgid "cannot rename system column \"%s\"" -msgstr "não pode renomear coluna do sistema \"%s\"" +msgid "corrupted item pointer: %u" +msgstr "ponteiro de item corrompido: %u" -#: commands/tablecmds.c:2088 +#: storage/page/bufpage.c:444 storage/page/bufpage.c:805 #, c-format -msgid "cannot rename inherited column \"%s\"" -msgstr "não pode renomear coluna herdada \"%s\"" +msgid "corrupted item lengths: total %u, available space %u" +msgstr "tamanhos de itens corrompidos: total %u, espaço livre %u" -#: commands/tablecmds.c:2099 commands/tablecmds.c:3710 +#: storage/page/bufpage.c:642 storage/page/bufpage.c:778 #, c-format -msgid "column \"%s\" of relation \"%s\" already exists" -msgstr "coluna \"%s\" da relação \"%s\" já existe" +msgid "corrupted item pointer: offset = %u, size = %u" +msgstr "ponteiro de item corrompido: deslocamento = %u, tamanho = %u" -#: commands/tablecmds.c:2164 commands/tablecmds.c:6530 -#: commands/tablecmds.c:7836 -msgid "Use ALTER TYPE instead." -msgstr "Ao invés disso utilize ALTER TYPE." +#: storage/buffer/localbuf.c:190 +msgid "no empty local buffer available" +msgstr "nenhum buffer local vazio está disponível" -#: commands/tablecmds.c:2211 catalog/index.c:621 catalog/heap.c:927 -#, c-format -msgid "relation \"%s\" already exists" -msgstr "relação \"%s\" já existe" +#: storage/buffer/bufmgr.c:134 storage/buffer/bufmgr.c:242 +msgid "cannot access temporary tables of other sessions" +msgstr "não pode acessar tabelas temporárias de outras sessões" -#. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2287 +#: storage/buffer/bufmgr.c:378 #, 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:380 msgid "" -"cannot %s \"%s\" because it is being used by active queries in this session" +"This has been seen to occur with buggy kernels; consider updating your " +"system." msgstr "" -"não pode executar %s \"%s\" porque ela está sendo utilizada por consultas " -"ativas nessa sessão" +"Isso tem ocorrido com kernels contendo bugs; considere atualizar seu sistema." -#. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2296 +#: storage/buffer/bufmgr.c:452 #, c-format -msgid "cannot %s \"%s\" because it has pending trigger events" +msgid "invalid page header in block %u of relation %s; zeroing out page" msgstr "" -"não pode executar %s \"%s\" porque ela tem eventos de gatilho pendentes" +"cabeçalho de página é inválido no bloco %u da relação %s; zerando página" -#: commands/tablecmds.c:2909 +#: storage/buffer/bufmgr.c:460 #, c-format -msgid "cannot rewrite system relation \"%s\"" -msgstr "não pode reescrever relação do sistema \"%s\"" - -#: commands/tablecmds.c:2919 -msgid "cannot rewrite temporary tables of other sessions" -msgstr "não pode reescrever tabelas temporárias de outras sessões" +msgid "invalid page header in block %u of relation %s" +msgstr "cabeçalho de página é inválido no bloco %u da relação %s" -#: commands/tablecmds.c:3243 +#: storage/buffer/bufmgr.c:2746 #, c-format -msgid "column \"%s\" contains null values" -msgstr "coluna \"%s\" contém valores nulos" +msgid "could not write block %u of %s" +msgstr "não pôde escrever bloco %u de %s" -#: commands/tablecmds.c:3257 -#, c-format -msgid "check constraint \"%s\" is violated by some row" -msgstr "restrição de verificação \"%s\" foi violada por algum registro" +#: storage/buffer/bufmgr.c:2748 +msgid "Multiple failures --- write error might be permanent." +msgstr "Falhas múltiplas --- erro de escrita pode ser permanente." -#: commands/tablecmds.c:3384 commands/tablecmds.c:4136 +#: storage/buffer/bufmgr.c:2769 storage/buffer/bufmgr.c:2788 #, c-format -msgid "\"%s\" is not a table or index" -msgstr "\"%s\" não é uma tabela ou índice" +msgid "writing block %u of relation %s" +msgstr "escrevendo bloco %u da relação %s" -#: commands/tablecmds.c:3539 +#: storage/lmgr/lock.c:609 #, c-format -msgid "cannot alter table \"%s\" because column \"%s\".\"%s\" uses its rowtype" +msgid "" +"cannot acquire lock mode %s on database objects while recovery is in progress" msgstr "" -"não pode alterar tabela \"%s\" porque coluna \"%s\".\"%s\" utiliza seu tipo" +"não pode adquirir modo de bloqueio %s em objetos de banco de dados enquanto " +"recuperação está em progresso" -#: commands/tablecmds.c:3546 -#, 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" +#: storage/lmgr/lock.c:611 +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." -#: commands/tablecmds.c:3593 -#, fuzzy -msgid "cannot add column to typed table" -msgstr "não pode adicionar coluna a uma tabela tipada" +#: storage/lmgr/lock.c:724 storage/lmgr/lock.c:793 storage/lmgr/lock.c:2701 +#: storage/lmgr/lock.c:2766 +msgid "You might need to increase max_locks_per_transaction." +msgstr "Você pode precisar aumentar max_locks_per_transaction." -#: commands/tablecmds.c:3622 -msgid "column must be added to child tables too" -msgstr "coluna deve ser adicionada as tabelas descendentes também" +#: storage/lmgr/lock.c:2116 storage/lmgr/lock.c:2210 +msgid "" +"cannot PREPARE while holding both session-level and transaction-level locks " +"on the same object" +msgstr "" +"não pode executar PREPARE enquanto estiver mantendo bloqueios a nível de " +"sessão e transação no mesmo objeto" -#: commands/tablecmds.c:3667 commands/tablecmds.c:7390 -#, c-format -msgid "child table \"%s\" has different type for column \"%s\"" -msgstr "tabela descendente \"%s\" tem tipo diferente da coluna \"%s\"" +#: storage/lmgr/lock.c:2302 +msgid "Not enough memory for reassigning the prepared transaction's locks." +msgstr "" +"Memória insuficiente para atribuir os bloqueios de uma transação preparada." -#: commands/tablecmds.c:3674 +#: storage/lmgr/lmgr.c:756 #, c-format -msgid "child table \"%s\" has a conflicting \"%s\" column" -msgstr "tabela descendente \"%s\" tem uma coluna conflitante \"%s\"" +msgid "relation %u of database %u" +msgstr "relação %u do banco de dados %u" -#: commands/tablecmds.c:3686 +#: storage/lmgr/lmgr.c:762 #, c-format -msgid "merging definition of column \"%s\" for child \"%s\"" -msgstr "juntando definição da coluna \"%s\" para tabela descendente \"%s\"" +msgid "extension of relation %u of database %u" +msgstr "extensão da relação %u do banco de dados %u" -#: commands/tablecmds.c:3958 commands/tablecmds.c:4048 -#: commands/tablecmds.c:4093 commands/tablecmds.c:4189 -#: commands/tablecmds.c:4233 commands/tablecmds.c:4312 -#: commands/tablecmds.c:5846 +#: storage/lmgr/lmgr.c:768 #, c-format -msgid "cannot alter system column \"%s\"" -msgstr "não pode alterar coluna do sistema \"%s\"" +msgid "page %u of relation %u of database %u" +msgstr "página %u da relação %u do banco de dados %u" -#: commands/tablecmds.c:3992 +#: storage/lmgr/lmgr.c:775 #, c-format -msgid "column \"%s\" is in a primary key" -msgstr "coluna \"%s\" está em uma chave primária" +msgid "tuple (%u,%u) of relation %u of database %u" +msgstr "tupla (%u,%u) da relação %u do banco de dados %u" -#: commands/tablecmds.c:4163 +#: storage/lmgr/lmgr.c:783 #, c-format -msgid "statistics target %d is too low" -msgstr "valor da estatística %d é muito pequeno" +msgid "transaction %u" +msgstr "transação %u" -#: commands/tablecmds.c:4171 +#: storage/lmgr/lmgr.c:788 #, c-format -msgid "lowering statistics target to %d" -msgstr "diminuindo valor da estatística para %d" +msgid "virtual transaction %d/%u" +msgstr "transação virtual %d/%u" -#: commands/tablecmds.c:4293 +#: storage/lmgr/lmgr.c:794 #, c-format -msgid "invalid storage type \"%s\"" -msgstr "tipo de armazenamento \"%s\" é inválido" +msgid "object %u of class %u of database %u" +msgstr "objeto %u da classe %u do banco de dados %u" -#: commands/tablecmds.c:4324 +#: storage/lmgr/lmgr.c:802 #, 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:4353 -#, fuzzy -msgid "cannot drop column from typed table" -msgstr "não pode apagar coluna de uma tabela tipada" +msgid "user lock [%u,%u,%u]" +msgstr "bloqueio do usuário [%u,%u,%u]" -#: commands/tablecmds.c:4392 +#: storage/lmgr/lmgr.c:809 #, c-format -msgid "column \"%s\" of relation \"%s\" does not exist, skipping" -msgstr "coluna \"%s\" da relação \"%s\" não existe, ignorando" +msgid "advisory lock [%u,%u,%u,%u]" +msgstr "bloqueio sob aviso [%u,%u,%u,%u]" -#: commands/tablecmds.c:4405 +#: storage/lmgr/lmgr.c:817 #, c-format -msgid "cannot drop system column \"%s\"" -msgstr "não pode remover coluna do sistema \"%s\"" +msgid "unrecognized locktag type %d" +msgstr "tipo de marcação de bloqueio %d desconhecido" -#: commands/tablecmds.c:4412 -#, c-format -msgid "cannot drop inherited column \"%s\"" -msgstr "não pode remover coluna herdada \"%s\"" +#: storage/lmgr/proc.c:304 storage/ipc/sinvaladt.c:302 +#: storage/ipc/procarray.c:271 postmaster/postmaster.c:1868 +msgid "sorry, too many clients already" +msgstr "desculpe, muitos clientes conectados" -#: commands/tablecmds.c:4633 catalog/pg_constraint.c:639 catalog/heap.c:2135 +#: storage/lmgr/proc.c:1065 #, c-format -msgid "constraint \"%s\" for relation \"%s\" already exists" -msgstr "restrição \"%s\" para relação \"%s\" já existe" - -#: commands/tablecmds.c:4743 -msgid "constraint must be added to child tables too" -msgstr "restrição deve ser adicionada as tabelas descendentes também" +msgid "Process %d waits for %s on %s." +msgstr "Processo %d espera por %s em %s." -#: commands/tablecmds.c:4808 commands/sequence.c:1291 +#: storage/lmgr/proc.c:1075 #, c-format -msgid "referenced relation \"%s\" is not a table" -msgstr "relação referenciada \"%s\" não é uma tabela" - -#: commands/tablecmds.c:4830 -msgid "cannot reference temporary table from permanent table constraint" +msgid "sending cancel to blocking autovacuum PID %d" msgstr "" -"não pode referenciar tabela temporária a partir de uma restrição em uma " -"tabela permanente" +"enviando cancelamento para PID de limpeza automática %d que está bloqueando" -#: commands/tablecmds.c:4837 -msgid "cannot reference permanent table from temporary table constraint" +#: storage/lmgr/proc.c:1121 +#, c-format +msgid "" +"process %d avoided deadlock for %s on %s by rearranging queue order after " +"%ld.%03d ms" msgstr "" -"não pode referenciar tabela permanente a partir de uma restrição em uma " -"tabela temporária" +"processo %d evitou impasse por %s em %s ao reorganizar a ordem da fila após " +"%ld.%03d ms" -#: commands/tablecmds.c:4897 -msgid "number of referencing and referenced columns for foreign key disagree" +#: storage/lmgr/proc.c:1133 +#, c-format +msgid "" +"process %d detected deadlock while waiting for %s on %s after %ld.%03d ms" msgstr "" -"número de colunas que referenciam e são referenciadas em um chave " -"estrangeira não correspondem" +"processo %d detectou impasse enquanto esperava por %s em %s após %ld.%03d ms" -#: commands/tablecmds.c:4986 +#: storage/lmgr/proc.c:1139 #, c-format -msgid "foreign key constraint \"%s\" cannot be implemented" -msgstr "restrição de chave estrangeira \"%s\" não pode ser implementada" +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" -#: commands/tablecmds.c:4989 +#: storage/lmgr/proc.c:1143 #, 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." +msgid "process %d acquired %s on %s after %ld.%03d ms" +msgstr "processo %d obteve %s em %s após %ld.%03d ms" -#: commands/tablecmds.c:5084 +#: storage/lmgr/proc.c:1159 #, 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" +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" -#: commands/tablecmds.c:5089 +#: storage/lmgr/deadlock.c:923 #, 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" +msgid "Process %d waits for %s on %s; blocked by process %d." +msgstr "Processo %d espera por %s em %s; bloqueado pelo processo %d." + +#: storage/lmgr/deadlock.c:942 +#, c-format +msgid "Process %d: %s" +msgstr "Processo %d: %s" + +#: storage/lmgr/deadlock.c:949 +msgid "deadlock detected" +msgstr "impasse detectado" + +#: storage/lmgr/deadlock.c:952 +msgid "See server log for query details." +msgstr "Veja log do servidor para obter detalhes das consultas." -#: commands/tablecmds.c:5154 -#, c-format -msgid "cannot use a deferrable primary key for referenced table \"%s\"" +#: storage/lmgr/predicate.c:665 +msgid "not enough elements in RWConflictPool to record a read/write conflict" msgstr "" -"não pode utilizar uma chave primária postergável na tabela referenciada \"%s" -"\"" - -#: commands/tablecmds.c:5171 -#, c-format -msgid "there is no primary key for referenced table \"%s\"" -msgstr "não há chave primária na tabela referenciada \"%s\"" +"não há elementos suficientes em RWConflictPool para registrar um conflito de " +"leitura/escrita" -#: commands/tablecmds.c:5321 -#, c-format -msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" +#: storage/lmgr/predicate.c:666 storage/lmgr/predicate.c:694 +msgid "" +"You might need to run fewer transactions at a time or increase " +"max_connections." msgstr "" -"não pode utilizar uma restrição de unicidade postergável na tabela " -"referenciada \"%s\"" +"Talvez seja necessário executar poucas transações ao mesmo tempo or aumentar " +"max_connections." -#: commands/tablecmds.c:5326 -#, c-format +#: storage/lmgr/predicate.c:693 msgid "" -"there is no unique constraint matching given keys for referenced table \"%s\"" +"not enough elements in RWConflictPool to record a potential read/write " +"conflict" msgstr "" -"não há restrição de unicidade que corresponde com as colunas informadas na " -"tabela referenciada \"%s\"" +"não há elementos suficientes em RWConflictPool para registrar um conflito " +"potencial de leitura/escrita" -#: commands/tablecmds.c:5656 -#, c-format -msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" -msgstr "não pode remover restrição herdada \"%s\" da relação \"%s\"" +#: storage/lmgr/predicate.c:898 +msgid "memory for serializable conflict tracking is nearly exhausted" +msgstr "" +"memória para rastreamento de conflitos de serialização está quase esgotada" -#: commands/tablecmds.c:5683 commands/tablecmds.c:5797 -#, c-format -msgid "constraint \"%s\" of relation \"%s\" does not exist" -msgstr "restrição \"%s\" da relação \"%s\" não existe" +#: storage/lmgr/predicate.c:899 +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." -#: commands/tablecmds.c:5689 +#: storage/lmgr/predicate.c:1181 storage/lmgr/predicate.c:1253 #, 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:5830 -#, fuzzy -msgid "cannot alter column type of typed table" -msgstr "não pode alterar tipo de coluna de uma tabela tipada" +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)" -#: commands/tablecmds.c:5853 -#, c-format -msgid "cannot alter inherited column \"%s\"" -msgstr "não pode alterar coluna herdada \"%s\"" +#: storage/lmgr/predicate.c:1536 +msgid "deferrable snapshot was unsafe; trying a new one" +msgstr "instantâneo postergável era inseguro; tentando um novo" -#: commands/tablecmds.c:5888 -msgid "transform expression must not return a set" -msgstr "expressão de transformação não deve retornar um conjunto" +#: storage/lmgr/predicate.c:1571 +msgid "\"default_transaction_isolation\" is set to \"serializable\"." +msgstr "\"default_transaction_isolation\" está definido como \"serializable\"." -#: commands/tablecmds.c:5894 -msgid "cannot use subquery in transform expression" -msgstr "não pode utilizar subconsulta em expressão de transformação" +#: storage/lmgr/predicate.c:1572 +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 alterar o padrão." -#: commands/tablecmds.c:5898 -msgid "cannot use aggregate function in transform expression" -msgstr "não pode utilizar função de agregação em expressão de transformação" +#: storage/lmgr/predicate.c:2247 storage/lmgr/predicate.c:2262 +#: storage/lmgr/predicate.c:3654 +msgid "You might need to increase max_pred_locks_per_transaction." +msgstr "Você pode precisar aumentar max_pred_locks_per_transaction." -#: commands/tablecmds.c:5902 -msgid "cannot use window function in transform expression" -msgstr "não pode utilizar função deslizante em expressão de transformação" +#: storage/lmgr/predicate.c:3808 storage/lmgr/predicate.c:3897 +#: storage/lmgr/predicate.c:3905 storage/lmgr/predicate.c:3944 +#: storage/lmgr/predicate.c:4183 storage/lmgr/predicate.c:4520 +#: storage/lmgr/predicate.c:4532 storage/lmgr/predicate.c:4574 +#: storage/lmgr/predicate.c:4612 +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" -#: commands/tablecmds.c:5920 -#, c-format -msgid "column \"%s\" cannot be cast to type %s" -msgstr "coluna \"%s\" não pode ser convertida para tipo %s" +#: storage/lmgr/predicate.c:3810 storage/lmgr/predicate.c:3899 +#: storage/lmgr/predicate.c:3907 storage/lmgr/predicate.c:3946 +#: storage/lmgr/predicate.c:4185 storage/lmgr/predicate.c:4522 +#: storage/lmgr/predicate.c:4534 storage/lmgr/predicate.c:4576 +#: storage/lmgr/predicate.c:4614 +msgid "The transaction might succeed if retried." +msgstr "A transação pode ter sucesso se repetida." -#: commands/tablecmds.c:5946 +#: storage/large_object/inv_api.c:563 storage/large_object/inv_api.c:760 #, 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" +msgid "large object %u was not opened for writing" +msgstr "objeto grande %u não foi aberto para escrita" -#: commands/tablecmds.c:5985 +#: storage/large_object/inv_api.c:570 storage/large_object/inv_api.c:767 #, c-format -msgid "cannot alter type of column \"%s\" twice" -msgstr "não pode alterar tipo de coluna \"%s\" duas vezes" +msgid "large object %u was already dropped" +msgstr "objeto grande %u já foi removido" -#: commands/tablecmds.c:6019 +#: storage/file/fd.c:411 #, c-format -msgid "default for column \"%s\" cannot be cast to type %s" -msgstr "valor padrão para coluna \"%s\" não pode ser convertido para tipo %s" +msgid "getrlimit failed: %m" +msgstr "getrlimit falhou: %m" -#: commands/tablecmds.c:6145 -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" +#: storage/file/fd.c:501 +msgid "insufficient file descriptors available to start server process" +msgstr "" +"descritores de arquivo disponíveis são insuficientes para iniciar o processo " +"servidor" -#: commands/tablecmds.c:6146 +#: storage/file/fd.c:502 #, c-format -msgid "%s depends on column \"%s\"" -msgstr "%s depende da coluna \"%s\"" +msgid "System allows %d, we need at least %d." +msgstr "Sistema permite %d, nós precisamos pelo menos de %d." -#: commands/tablecmds.c:6498 +#: storage/file/fd.c:543 storage/file/fd.c:1528 storage/file/fd.c:1643 #, c-format -msgid "cannot change owner of index \"%s\"" -msgstr "não pode mudar dono do índice \"%s\"" - -#: commands/tablecmds.c:6500 -msgid "Change the ownership of the index's table, instead." -msgstr "Ao invés disso, mude o dono da tabela do índice." +msgid "out of file descriptors: %m; release and retry" +msgstr "sem descritores de arquivo: %m; libere e tente novamente" -#: commands/tablecmds.c:6516 +#: storage/file/fd.c:1110 #, c-format -msgid "cannot change owner of sequence \"%s\"" -msgstr "não pode mudar dono da sequência \"%s\"" +msgid "temporary file: path \"%s\", size %lu" +msgstr "arquivo temporário: caminho \"%s\", tamanho %lu" -#: commands/tablecmds.c:6518 commands/tablecmds.c:7826 +#: storage/file/fd.c:1504 #, c-format -msgid "Sequence \"%s\" is linked to table \"%s\"." -msgstr "Sequência \"%s\" está ligada a tabela \"%s\"." +msgid "exceeded maxAllocatedDescs (%d) while trying to open file \"%s\"" +msgstr "excedeu maxAllocatedDescs (%d) ao tentar abrir arquivo \"%s\"" -#: commands/tablecmds.c:6539 commands/tablecmds.c:7844 +#: storage/file/fd.c:1619 #, c-format -msgid "\"%s\" is not a table, view, or sequence" -msgstr "\"%s\" não é uma tabela, visão ou sequência" +msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\"" +msgstr "excedeu maxAllocatedDescs (%d) ao tentar abrir diretório \"%s\"" -#: commands/tablecmds.c:6751 commands/cluster.c:170 +#: storage/file/fd.c:1702 #, c-format -msgid "index \"%s\" for table \"%s\" does not exist" -msgstr "índice \"%s\" na tabela \"%s\" não existe" - -#: commands/tablecmds.c:6798 -msgid "cannot have multiple SET TABLESPACE subcommands" -msgstr "não pode ter múltiplos subcomandos SET TABLESPACE" +msgid "could not read directory \"%s\": %m" +msgstr "não pôde ler diretório \"%s\": %m" -#: commands/tablecmds.c:6850 +#: storage/smgr/md.c:393 storage/smgr/md.c:863 #, c-format -msgid "\"%s\" is not a table, index, or TOAST table" -msgstr "\"%s\" não é uma tabela, índice ou tabela TOAST" +msgid "could not truncate file \"%s\": %m" +msgstr "não pôde truncar arquivo \"%s\": %m" -#: commands/tablecmds.c:6971 +#: storage/smgr/md.c:460 #, c-format -msgid "cannot move system relation \"%s\"" -msgstr "não pode mover relação do sistema \"%s\"" +msgid "cannot extend file \"%s\" beyond %u blocks" +msgstr "não pode estender arquivo \"%s\" além de %u blocos" -#: commands/tablecmds.c:6987 -msgid "cannot move temporary tables of other sessions" -msgstr "não pode mover tabelas temporárias de outras sessões" +#: storage/smgr/md.c:482 storage/smgr/md.c:643 storage/smgr/md.c:718 +#, c-format +msgid "could not seek to block %u in file \"%s\": %m" +msgstr "não pôde buscar bloco %u no arquivo \"%s\": %m" -#: commands/tablecmds.c:7176 -#, fuzzy -msgid "cannot change inheritance of typed table" -msgstr "não pode mudar herança de uma tabela tipada" +#: storage/smgr/md.c:490 +#, c-format +msgid "could not extend file \"%s\": %m" +msgstr "não pôde estender arquivo \"%s\": %m" -#: commands/tablecmds.c:7261 -msgid "circular inheritance not allowed" -msgstr "herança circular não é permitida" +#: storage/smgr/md.c:492 storage/smgr/md.c:499 storage/smgr/md.c:745 +msgid "Check free disk space." +msgstr "Verifique o espaço em disco livre." -#: commands/tablecmds.c:7262 +#: storage/smgr/md.c:496 #, c-format -msgid "\"%s\" is already a child of \"%s\"." -msgstr "\"%s\" já é um descendente de \"%s\"." +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" -#: commands/tablecmds.c:7270 +#: storage/smgr/md.c:661 #, 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" +msgid "could not read block %u in file \"%s\": %m" +msgstr "não pôde ler bloco %u no arquivo \"%s\": %m" -#: commands/tablecmds.c:7397 +#: storage/smgr/md.c:677 #, 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" +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" -#: commands/tablecmds.c:7413 +#: storage/smgr/md.c:736 #, c-format -msgid "child table is missing column \"%s\"" -msgstr "tabela descendente está faltando coluna \"%s\"" +msgid "could not write block %u in file \"%s\": %m" +msgstr "não pôde escrever bloco %u no arquivo \"%s\": %m" -#: commands/tablecmds.c:7492 +#: storage/smgr/md.c:741 #, c-format -msgid "child table \"%s\" has different definition for check constraint \"%s\"" +msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes" msgstr "" -"tabela descendente \"%s\" tem definição diferente para restrição de " -"verificação \"%s\"" +"não pôde escrever bloco %u no arquivo \"%s\": escreveu somente %d de %d bytes" -#: commands/tablecmds.c:7516 +#: storage/smgr/md.c:839 #, c-format -msgid "child table is missing constraint \"%s\"" -msgstr "tabela descendente está faltando restrição \"%s\"" +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" -#: commands/tablecmds.c:7597 +#: storage/smgr/md.c:888 #, 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:7825 -msgid "cannot move an owned sequence into another schema" -msgstr "não pode mover uma sequência ligada para outro esquema" +msgid "could not truncate file \"%s\" to %u blocks: %m" +msgstr "não pôde truncar arquivo \"%s\" para %u blocos: %m" -#: commands/tablecmds.c:7854 +#: storage/smgr/md.c:1141 #, c-format -msgid "relation \"%s\" is already in schema \"%s\"" -msgstr "relação \"%s\" já está no esquema \"%s\"" +msgid "could not fsync file \"%s\" but retrying: %m" +msgstr "não pôde executar fsync no arquivo \"%s\" mas tentando novamente: %m" -#: commands/tablecmds.c:7862 commands/typecmds.c:2794 -#: commands/functioncmds.c:1887 -msgid "cannot move objects into or out of temporary schemas" -msgstr "não pode mover objetos para ou de esquemas temporários" +#: storage/smgr/md.c:1286 +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" -#: commands/tablecmds.c:7868 commands/typecmds.c:2800 -#: commands/functioncmds.c:1893 -msgid "cannot move objects into or out of TOAST schema" -msgstr "não pode mover objetos para ou de esquema TOAST" +#: storage/smgr/md.c:1661 +#, c-format +msgid "could not open file \"%s\" (target block %u): %m" +msgstr "não pôde abrir arquivo \"%s\" (bloco alvo %u): %m" -#: commands/tablecmds.c:7917 +#: storage/smgr/md.c:1683 #, c-format -msgid "relation \"%s\" already exists in schema \"%s\"" -msgstr "relação \"%s\" já existe no esquema \"%s\"" +msgid "could not seek to end of file \"%s\": %m" +msgstr "não pôde buscar fim do arquivo \"%s\": %m" -#: commands/comment.c:642 +#: storage/ipc/shmem.c:346 storage/ipc/shmem.c:399 #, c-format -msgid "\"%s\" is not a table, view, or composite type" -msgstr "\"%s\" não é uma tabela, visão ou tipo composto" +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)" -#: commands/comment.c:681 -msgid "database name cannot be qualified" -msgstr "nome de banco de dados não pode ser qualificado" +#: storage/ipc/shmem.c:365 +#, 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\"" -#: commands/comment.c:729 -msgid "tablespace name cannot be qualified" -msgstr "nome de tablespace não pode ser qualificado" +#: storage/ipc/shmem.c:380 +#, 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" -#: commands/comment.c:766 -msgid "role name cannot be qualified" -msgstr "nome de role não pode ser qualificado" +#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446 +msgid "requested shared memory size overflows size_t" +msgstr "tamanho de memória compartilhada requisitada ultrapassa size_t" -#: commands/comment.c:775 +#: snowball/dict_snowball.c:183 #, c-format -msgid "must be member of role \"%s\" to comment upon it" -msgstr "deve ser membro da role \"%s\" para adicionar comentário sobre ela" +msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\"" +msgstr "" +"nenhum analisador Snowball disponível para idioma \"%s\" e codificação \"%s\"" -#: commands/comment.c:799 commands/schemacmds.c:178 -msgid "schema name cannot be qualified" -msgstr "nome do esquema não pode ser qualificado" +#: snowball/dict_snowball.c:206 tsearch/dict_ispell.c:75 +#: tsearch/dict_simple.c:50 +msgid "multiple StopWords parameters" +msgstr "múltiplos parâmetros StopWords" -#: commands/comment.c:874 -#, c-format -msgid "rule \"%s\" does not exist" -msgstr "regra \"%s\" não existe" +#: snowball/dict_snowball.c:215 +msgid "multiple Language parameters" +msgstr "múltiplos parâmetros Language" -#: commands/comment.c:882 +#: snowball/dict_snowball.c:222 #, c-format -msgid "there are multiple rules named \"%s\"" -msgstr "há múltiplas regras com nome \"%s\"" +msgid "unrecognized Snowball parameter: \"%s\"" +msgstr "parâmetro desconhecido do Snowball: \"%s\"" -#: commands/comment.c:883 -msgid "Specify a relation name as well as a rule name." -msgstr "Especifique um nome de relação bem como um nome de regra." +#: snowball/dict_snowball.c:230 +msgid "missing Language parameter" +msgstr "faltando parâmetro Language" -#: commands/comment.c:1213 -msgid "language name cannot be qualified" -msgstr "nome de linguagem não pode ser qualificado" +#: postmaster/bgwriter.c:483 +#, c-format +msgid "checkpoints are occurring too frequently (%d second apart)" +msgid_plural "checkpoints are occurring too frequently (%d seconds apart)" +msgstr[0] "pontos de controle estão ocorrendo frequentemente (%d segundo)" +msgstr[1] "pontos de controle estão ocorrendo frequentemente (%d segundos)" -#: commands/comment.c:1226 -msgid "must be superuser to comment on procedural language" +#: postmaster/bgwriter.c:487 +msgid "" +"Consider increasing the configuration parameter \"checkpoint_segments\"." msgstr "" -"deve ser super-usuário para adicionar comentário sobre linguagem procedural" +"Considere aumentar o parâmetro de configuração \"checkpoint_segments\"." -#: commands/comment.c:1370 commands/comment.c:1378 commands/opclasscmds.c:343 -#: commands/opclasscmds.c:789 commands/opclasscmds.c:1568 -#: commands/opclasscmds.c:1572 commands/opclasscmds.c:1833 -#: commands/opclasscmds.c:1844 commands/opclasscmds.c:2069 -#: commands/opclasscmds.c:2080 +#: postmaster/bgwriter.c:599 #, 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\"" +msgid "transaction log switch forced (archive_timeout=%d)" +msgstr "rotação de log de transação foi forçada (archive_timeout=%d)" -#: commands/comment.c:1415 storage/large_object/inv_api.c:272 -#: catalog/aclchk.c:656 catalog/aclchk.c:3684 catalog/aclchk.c:4375 -#: catalog/pg_largeobject.c:116 catalog/pg_largeobject.c:176 -#, c-format -msgid "large object %u does not exist" -msgstr "objeto grande %u não existe" +#: postmaster/bgwriter.c:1062 +msgid "checkpoint request failed" +msgstr "pedido de ponto de controle falhou" -#: commands/comment.c:1422 catalog/pg_largeobject.c:200 libpq/be-fsstubs.c:287 -#, c-format -msgid "must be owner of large object %u" -msgstr "deve ser dono do objeto grande %u" +#: postmaster/bgwriter.c:1063 +msgid "Consult recent messages in the server log for details." +msgstr "Consulte mensagens recentes no log do servidor para obter detalhes." -#: commands/comment.c:1469 commands/functioncmds.c:1777 +#: postmaster/bgwriter.c:1245 #, 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" +msgid "compacted fsync request queue from %d entries to %d entries" +msgstr "fila de pedidos de fsync compactada de %d entradas para %d entradas" -#: commands/comment.c:1481 commands/functioncmds.c:1522 -#: commands/functioncmds.c:1794 +#: postmaster/pgstat.c:330 #, c-format -msgid "must be owner of type %s or type %s" -msgstr "deve ser dono do tipo %s ou tipo %s" - -#: commands/comment.c:1501 -msgid "must be superuser to comment on text search parser" -msgstr "" -"deve ser super-usuário para adicionar comentário sobre analisador de busca " -"textual" +msgid "could not resolve \"localhost\": %s" +msgstr "não pôde resolver \"localhost\": %s" -#: commands/comment.c:1530 -msgid "must be superuser to comment on text search template" -msgstr "" -"deve ser super-usuário para adicionar comentário sobre modelo de busca " -"textual" +#: postmaster/pgstat.c:353 +msgid "trying another address for the statistics collector" +msgstr "tentando outro endereço para coletor de estatísticas" -#: commands/typecmds.c:163 -msgid "must be superuser to create a base type" -msgstr "deve ser super-usuário para criar um tipo base" +#: postmaster/pgstat.c:362 +#, c-format +msgid "could not create socket for statistics collector: %m" +msgstr "não pôde criar soquete para coletor de estatísticas: %m" -#: commands/typecmds.c:218 commands/typecmds.c:795 commands/typecmds.c:1120 -#: commands/typecmds.c:1543 catalog/pg_type.c:385 catalog/pg_type.c:665 -#: catalog/heap.c:943 +#: postmaster/pgstat.c:374 #, c-format -msgid "type \"%s\" already exists" -msgstr "tipo \"%s\" já existe" +msgid "could not bind socket for statistics collector: %m" +msgstr "não pôde se ligar ao soquete do coletor de estatísticas: %m" -#: commands/typecmds.c:267 +#: postmaster/pgstat.c:385 #, c-format -msgid "type attribute \"%s\" not recognized" -msgstr "atributo do tipo \"%s\" desconhecido" +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" -#: commands/typecmds.c:321 +#: postmaster/pgstat.c:401 #, c-format -msgid "invalid type category \"%s\": must be simple ASCII" -msgstr "categoria de tipo \"%s\" é inválida: deve ser ASCII simples" +msgid "could not connect socket for statistics collector: %m" +msgstr "não pôde se conectar ao soquete do coletor de estatísticas: %m" -#: commands/typecmds.c:340 +#: postmaster/pgstat.c:422 #, c-format -msgid "array element type cannot be %s" -msgstr "tipo do elemento da matriz não pode ser %s" +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" -#: commands/typecmds.c:372 +#: postmaster/pgstat.c:448 postmaster/pgstat.c:2996 #, c-format -msgid "alignment \"%s\" not recognized" -msgstr "alinhamento \"%s\" desconhecido" +msgid "select() failed in statistics collector: %m" +msgstr "select() falhou no coletor de estatísticas: %m" + +#: postmaster/pgstat.c:463 +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" -#: commands/typecmds.c:389 +#: postmaster/pgstat.c:478 #, c-format -msgid "storage \"%s\" not recognized" -msgstr "armazenamento \"%s\" desconhecido" +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" -#: commands/typecmds.c:398 -msgid "type input function must be specified" -msgstr "função de entrada do tipo deve ser especificada" +#: postmaster/pgstat.c:488 +msgid "incorrect test message transmission on socket for statistics collector" +msgstr "" +"transmissão de mensagem teste incorreta no soquete do coletor de estatísticas" -#: commands/typecmds.c:402 -msgid "type output function must be specified" -msgstr "função de saída do tipo deve ser especificada" +#: postmaster/pgstat.c:511 +#, 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 não-bloqueado: " +"%m" -#: commands/typecmds.c:407 -msgid "" -"type modifier output function is useless without a type modifier input " -"function" +#: postmaster/pgstat.c:521 +msgid "disabling statistics collector for lack of working socket" msgstr "" -"função de saída do modificador de tipo é inútil sem uma função de entrada do " -"modificador de tipo" +"desabilitando coletor de estatísticas por falta de um soquete que funcione" -#: commands/typecmds.c:430 +#: postmaster/pgstat.c:623 #, 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" +msgid "could not fork statistics collector: %m" +msgstr "não pôde criar processo para coletor de estatísticas: %m" -#: commands/typecmds.c:437 -#, c-format -msgid "type input function %s must return type %s" -msgstr "função de entrada do tipo %s deve retornar tipo %s" +#: postmaster/pgstat.c:1153 postmaster/pgstat.c:1177 postmaster/pgstat.c:1208 +msgid "must be superuser to reset statistics counters" +msgstr "deve ser super-usuário para reiniciar contadores de estatísticas" -#: commands/typecmds.c:447 +#: postmaster/pgstat.c:2975 #, 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\"" +msgid "poll() failed in statistics collector: %m" +msgstr "poll() falhou no coletor de estatísticas: %m" -#: commands/typecmds.c:454 +#: postmaster/pgstat.c:3020 #, c-format -msgid "type output function %s must return type \"cstring\"" -msgstr "função de saída do tipo %s deve retornar tipo \"cstring\"" +msgid "could not read statistics message: %m" +msgstr "não pôde ler mensagem de estatística: %m" -#: commands/typecmds.c:463 +#: postmaster/pgstat.c:3291 #, c-format -msgid "type receive function %s must return type %s" -msgstr "função de recepção do tipo %s deve retornar tipo %s" +msgid "could not open temporary statistics file \"%s\": %m" +msgstr "não pôde abrir arquivo de estatísticas temporário \"%s\": %m" -#: commands/typecmds.c:472 +#: postmaster/pgstat.c:3363 #, c-format -msgid "type send function %s must return type \"bytea\"" -msgstr "função de envio do tipo %s deve retornar tipo \"bytea\"" +msgid "could not write temporary statistics file \"%s\": %m" +msgstr "não pôde escrever no arquivo de estatísticas temporário \"%s\": %m" -#: commands/typecmds.c:677 commands/typecmds.c:2205 +#: postmaster/pgstat.c:3372 #, c-format -msgid "\"%s\" is not a domain" -msgstr "\"%s\" não é um domínio" +msgid "could not close temporary statistics file \"%s\": %m" +msgstr "não pôde fechar arquivo de estatísticas temporário \"%s\": %m" -#: commands/typecmds.c:816 +#: postmaster/pgstat.c:3380 #, 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:885 -msgid "multiple default expressions" -msgstr "múltiplas expressões padrão" - -#: commands/typecmds.c:949 commands/typecmds.c:958 -msgid "conflicting NULL/NOT NULL constraints" -msgstr "restrições NULL/NOT NULL conflitantes" - -#: commands/typecmds.c:977 commands/typecmds.c:1902 -msgid "unique constraints not possible for domains" -msgstr "restrições de unicidade não são possíveis para domínios" - -#: commands/typecmds.c:983 commands/typecmds.c:1908 -msgid "primary key constraints not possible for domains" -msgstr "restrições de chave primária não são possíveis para domínios" +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" -#: commands/typecmds.c:989 commands/typecmds.c:1914 -msgid "exclusion constraints not possible for domains" -msgstr "restrições de exclusão não são possíveis para domínios" +#: postmaster/pgstat.c:3486 postmaster/pgstat.c:3715 +#, c-format +msgid "could not open statistics file \"%s\": %m" +msgstr "não pôde abrir arquivo de estatísticas \"%s\": %m" -#: commands/typecmds.c:995 commands/typecmds.c:1920 -msgid "foreign key constraints not possible for domains" -msgstr "restrições de chave estrangeira não são possíveis para domínios" +#: postmaster/pgstat.c:3498 postmaster/pgstat.c:3508 postmaster/pgstat.c:3530 +#: postmaster/pgstat.c:3545 postmaster/pgstat.c:3608 postmaster/pgstat.c:3626 +#: postmaster/pgstat.c:3642 postmaster/pgstat.c:3660 postmaster/pgstat.c:3676 +#: postmaster/pgstat.c:3727 postmaster/pgstat.c:3738 +#, c-format +msgid "corrupted statistics file \"%s\"" +msgstr "arquivo de estatísticas \"%s\" corrompido" -#: commands/typecmds.c:1004 commands/typecmds.c:1929 -msgid "specifying constraint deferrability not supported for domains" +#: postmaster/pgstat.c:4036 +msgid "database hash table corrupted during cleanup --- abort" msgstr "" -"especificação de postergação de restrição não é suportada para domínios" +"tabela hash do banco de dados foi corrompida durante desligamento --- " +"interrompendo" -#: commands/typecmds.c:1251 +#: postmaster/pgarch.c:158 #, 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\"" +msgid "could not fork archiver: %m" +msgstr "não pôde criar processo arquivador: %m" -#: commands/typecmds.c:1302 -#, 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" +#: postmaster/pgarch.c:450 +msgid "archive_mode enabled, yet archive_command is not set" +msgstr "archive_mode habilitado, mas archive_command não está definido" -#: commands/typecmds.c:1401 +#: postmaster/pgarch.c:465 #, c-format -msgid "typmod_in function %s must return type \"integer\"" -msgstr "função typmod_in %s deve retornar tipo \"integer\"" +msgid "transaction log file \"%s\" could not be archived: too many failures" +msgstr "" +"arquivo do log de transação \"%s\" não pôde ser arquivado: muitas falhas" -#: commands/typecmds.c:1428 +#: postmaster/pgarch.c:568 #, c-format -msgid "typmod_out function %s must return type \"cstring\"" -msgstr "função typmod_out %s deve retornar tipo \"cstring\"" +msgid "archive command failed with exit code %d" +msgstr "comando de arquivamento falhou com código de retorno %d" -#: commands/typecmds.c:1455 +#: postmaster/pgarch.c:570 postmaster/pgarch.c:580 postmaster/pgarch.c:587 +#: postmaster/pgarch.c:593 postmaster/pgarch.c:602 #, 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:1513 -msgid "composite type must have at least one attribute" -msgstr "tipo composto deve ter pelo menos um atributo" +msgid "The failed archive command was: %s" +msgstr "O comando de arquivamento que falhou foi: %s" -#: commands/typecmds.c:1754 +#: postmaster/pgarch.c:577 #, c-format -msgid "column \"%s\" of table \"%s\" contains null values" -msgstr "coluna \"%s\" da tabela \"%s\" contém valores nulos" +msgid "archive command was terminated by exception 0x%X" +msgstr "comando de arquivamento foi terminado pela exceção 0x%X" -#: commands/typecmds.c:2000 -#, c-format +#: postmaster/pgarch.c:579 postmaster/postmaster.c:2883 msgid "" -"column \"%s\" of table \"%s\" contains values that violate the new constraint" +"See C include file \"ntstatus.h\" for a description of the hexadecimal value." msgstr "" -"coluna \"%s\" da tabela \"%s\" contém valores que violam a nova restrição" +"Veja o arquivo de cabeçalho C \"ntstatus.h\" para obter uma descrição do " +"valor hexadecimal." -#: commands/typecmds.c:2239 catalog/pg_constraint.c:648 +#: postmaster/pgarch.c:584 #, c-format -msgid "constraint \"%s\" for domain \"%s\" already exists" -msgstr "restrição \"%s\" para domínio \"%s\" já existe" - -#: commands/typecmds.c:2281 commands/typecmds.c:2290 -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" +msgid "archive command was terminated by signal %d: %s" +msgstr "comando de arquivamento foi terminado pelo sinal %d: %s" -#: commands/typecmds.c:2298 catalog/heap.c:2330 -msgid "cannot use subquery in check constraint" -msgstr "não pode utilizar subconsulta na restrição de verificação" +#: postmaster/pgarch.c:591 +#, c-format +msgid "archive command was terminated by signal %d" +msgstr "comando de arquivamento foi terminado pelo sinal %d" -#: commands/typecmds.c:2302 catalog/heap.c:2334 -msgid "cannot use aggregate function in check constraint" -msgstr "não pode utilizar função de agregação na restrição de verificação" +#: postmaster/pgarch.c:600 +#, c-format +msgid "archive command exited with unrecognized status %d" +msgstr "comando de arquivamento terminou com status desconhecido %d" -#: commands/typecmds.c:2306 catalog/heap.c:2338 -msgid "cannot use window function in check constraint" -msgstr "não pode utilizar função deslizante na restrição de verificação" +#: postmaster/pgarch.c:612 +#, c-format +msgid "archived transaction log file \"%s\"" +msgstr "arquivo do log de transação \"%s\" foi arquivado" -#: commands/typecmds.c:2519 commands/typecmds.c:2591 commands/typecmds.c:2822 +#: postmaster/pgarch.c:661 #, c-format -msgid "%s is a table's row type" -msgstr "%s é um tipo de registro de tabela" +msgid "could not open archive status directory \"%s\": %m" +msgstr "não pôde abrir diretório de status de arquivamento \"%s\": %m" -#: commands/typecmds.c:2521 commands/typecmds.c:2593 commands/typecmds.c:2824 -msgid "Use ALTER TABLE instead." -msgstr "Ao invés disso utilize ALTER TABLE." +#: postmaster/syslogger.c:418 +#, c-format +msgid "select() failed in logger process: %m" +msgstr "select() falhou no processo logger: %m" -#: commands/typecmds.c:2528 commands/typecmds.c:2600 commands/typecmds.c:2739 +#: postmaster/syslogger.c:430 postmaster/syslogger.c:1014 #, c-format -msgid "cannot alter array type %s" -msgstr "não pode alterar tipo array %s" +msgid "could not read from logger pipe: %m" +msgstr "não pôde ler do pipe do logger: %m" + +#: postmaster/syslogger.c:477 +msgid "logger shutting down" +msgstr "desligando logger" -#: commands/typecmds.c:2530 commands/typecmds.c:2602 commands/typecmds.c:2741 +#: postmaster/syslogger.c:521 postmaster/syslogger.c:535 #, 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." +msgid "could not create pipe for syslog: %m" +msgstr "não pôde criar pipe para syslog: %m" -#: commands/typecmds.c:2786 +#: postmaster/syslogger.c:571 #, c-format -msgid "type %s is already in schema \"%s\"" -msgstr "tipo %s já está no esquema \"%s\"" +msgid "could not fork system logger: %m" +msgstr "não pôde criar processo system logger: %m" -#: commands/typecmds.c:2808 +#: postmaster/syslogger.c:602 #, c-format -msgid "type \"%s\" already exists in schema \"%s\"" -msgstr "tipo \"%s\" já existe no esquema \"%s\"" +msgid "could not redirect stdout: %m" +msgstr "não pôde redirecionar saída stdout: %m" -#: commands/foreigncmds.c:132 commands/foreigncmds.c:141 +#: postmaster/syslogger.c:607 postmaster/syslogger.c:625 #, c-format -msgid "option \"%s\" not found" -msgstr "opção \"%s\" não foi encontrada" +msgid "could not redirect stderr: %m" +msgstr "não pôde redirecionar saída stderr: %m" -#: commands/foreigncmds.c:151 +#: postmaster/syslogger.c:969 #, c-format -msgid "option \"%s\" provided more than once" -msgstr "opção \"%s\" especificada mais de uma vez" +msgid "could not write to log file: %s\n" +msgstr "não pôde escrever em arquivo de log: %s\n" -#: commands/foreigncmds.c:209 commands/foreigncmds.c:217 +#: postmaster/syslogger.c:1095 #, c-format -msgid "permission denied to change owner of foreign-data wrapper \"%s\"" -msgstr "permissão negada ao mudar dono do adaptador de dados externo \"%s\"" +msgid "could not open log file \"%s\": %m" +msgstr "não pôde abrir arquivo de log \"%s\": %m" -#: commands/foreigncmds.c:211 -msgid "Must be superuser to change owner of a foreign-data wrapper." +#: postmaster/syslogger.c:1157 postmaster/syslogger.c:1201 +msgid "disabling automatic rotation (use SIGHUP to re-enable)" msgstr "" -"Deve ser super-usuário para mudar dono de um adaptador de dados externo." - -#: commands/foreigncmds.c:219 -msgid "The owner of a foreign-data wrapper must be a superuser." -msgstr "O dono de um adaptador de dados externo deve ser um super-usuário." +"desabilitando rotação automática (utilize SIGHUP para habilitá-la novamente)" -#: commands/foreigncmds.c:347 +#: postmaster/autovacuum.c:359 #, c-format -msgid "permission denied to create foreign-data wrapper \"%s\"" -msgstr "permissão negada ao criar adaptador de dados externo \"%s\"" +msgid "could not fork autovacuum launcher process: %m" +msgstr "não pôde criar processo inicializador do autovacuum: %m" -#: commands/foreigncmds.c:349 -msgid "Must be superuser to create a foreign-data wrapper." -msgstr "Deve ser super-usuário para criar uma adaptador de dados externo." +#: postmaster/autovacuum.c:404 +msgid "autovacuum launcher started" +msgstr "inicializador do autovacuum foi iniciado" -#: commands/foreigncmds.c:360 -#, c-format -msgid "foreign-data wrapper \"%s\" already exists" -msgstr "adaptador de dados externo \"%s\" já existe" +#: postmaster/autovacuum.c:781 +msgid "autovacuum launcher shutting down" +msgstr "inicializador do autovacuum está sendo desligado" -#: commands/foreigncmds.c:442 +#: postmaster/autovacuum.c:1416 #, c-format -msgid "permission denied to alter foreign-data wrapper \"%s\"" -msgstr "permissão negada ao alterar adaptador de dados externo \"%s\"" +msgid "could not fork autovacuum worker process: %m" +msgstr "não pôde criar processo de limpeza automática: %m" -#: commands/foreigncmds.c:444 -msgid "Must be superuser to alter a foreign-data wrapper." -msgstr "Deve ser super-usuário para alterar um adaptador de dados externo." +#: postmaster/autovacuum.c:1634 +#, c-format +msgid "autovacuum: processing database \"%s\"" +msgstr "autovacuum: processando banco de dados \"%s\"" -#: commands/foreigncmds.c:472 -msgid "" -"changing the foreign-data wrapper validator can cause the options for " -"dependent objects to become invalid" +#: postmaster/autovacuum.c:2037 +#, c-format +msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"" msgstr "" -"mudar o validador do adaptador de dados externo pode tornar inválidas as " -"opções para objetos dependentes" +"autovacuum: removendo tabela temporária órfã \"%s\".\"%s\" no banco de dados " +"\"%s\"" -#: commands/foreigncmds.c:544 +#: postmaster/autovacuum.c:2049 #, c-format -msgid "permission denied to drop foreign-data wrapper \"%s\"" -msgstr "permissão negada ao remover adaptador de dados externo \"%s\"" +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\"" -#: commands/foreigncmds.c:546 -msgid "Must be superuser to drop a foreign-data wrapper." -msgstr "Deve ser super-usuário para remover um adaptador de dados externo." +#: postmaster/autovacuum.c:2319 +#, c-format +msgid "automatic vacuum of table \"%s.%s.%s\"" +msgstr "limpeza automática da tabela \"%s.%s.%s\"" -#: commands/foreigncmds.c:558 +#: postmaster/autovacuum.c:2322 #, c-format -msgid "foreign-data wrapper \"%s\" does not exist, skipping" -msgstr "adaptador de dados externo \"%s\" não existe, ignorando" +msgid "automatic analyze of table \"%s.%s.%s\"" +msgstr "análise automática da tabela \"%s.%s.%s\"" + +#: postmaster/autovacuum.c:2808 +msgid "autovacuum not started because of misconfiguration" +msgstr "autovacuum não foi iniciado por causa de configuração errada" + +#: postmaster/autovacuum.c:2809 +msgid "Enable the \"track_counts\" option." +msgstr "Habilite a opção \"track_counts\"." -#: commands/foreigncmds.c:625 +#: postmaster/postmaster.c:569 #, c-format -msgid "server \"%s\" already exists" -msgstr "servidor \"%s\" já existe" +msgid "%s: invalid argument for option -f: \"%s\"\n" +msgstr "%s: argumento inválido para opção -f: \"%s\"\n" -#: commands/foreigncmds.c:817 +#: postmaster/postmaster.c:655 #, c-format -msgid "server \"%s\" does not exist, skipping" -msgstr "servidor \"%s\" não existe, ignorando" +msgid "%s: invalid argument for option -t: \"%s\"\n" +msgstr "%s: argumento inválido para opção -t: \"%s\"\n" -#: commands/foreigncmds.c:920 +#: postmaster/postmaster.c:706 #, c-format -msgid "user mapping \"%s\" already exists for server %s" -msgstr "mapeamento de usuários \"%s\" já existe para servidor %s" +msgid "%s: invalid argument: \"%s\"\n" +msgstr "%s: argumento inválido: \"%s\"\n" -#: commands/foreigncmds.c:998 commands/foreigncmds.c:1105 +#: postmaster/postmaster.c:731 #, c-format -msgid "user mapping \"%s\" does not exist for the server" -msgstr "mapeamento de usuários \"%s\" não existe para o servidor" - -#: commands/foreigncmds.c:1092 -msgid "server does not exist, skipping" -msgstr "servidor não existe, ignorando" +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" -#: commands/foreigncmds.c:1110 +#: postmaster/postmaster.c:736 #, c-format -msgid "user mapping \"%s\" does not exist for the server, skipping" -msgstr "mapeamento de usuários \"%s\" não existe para o servidor, ignorando" +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" -#: commands/operatorcmds.c:98 -msgid "=> is deprecated as an operator name" -msgstr "=> está obsoleto como um nome de operador" +#: postmaster/postmaster.c:741 +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\"" -#: commands/operatorcmds.c:99 +#: postmaster/postmaster.c:744 msgid "" -"This name may be disallowed altogether in future versions of PostgreSQL." +"WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or " +"\"hot_standby\"" msgstr "" -"Este nome pode ser proibido completamente em versões futuras do PostgreSQL." +"envio do WAL (max_wal_senders > 0) requer wal_level \"archive\" ou " +"\"hot_standby\"" -#: commands/operatorcmds.c:120 commands/operatorcmds.c:128 -msgid "SETOF type not allowed for operator argument" -msgstr "tipo SETOF não é permitido como argumento de operador" +#: postmaster/postmaster.c:752 +#, 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" -#: commands/operatorcmds.c:156 +#: postmaster/postmaster.c:852 +msgid "invalid list syntax for \"listen_addresses\"" +msgstr "sintaxe de lista é inválida para \"listen_addresses\"" + +#: postmaster/postmaster.c:882 #, c-format -msgid "operator attribute \"%s\" not recognized" -msgstr "atributo de operador \"%s\" desconhecido" +msgid "could not create listen socket for \"%s\"" +msgstr "não pôde criar soquete de escuta para \"%s\"" -#: commands/operatorcmds.c:166 -msgid "operator procedure must be specified" -msgstr "procedimento de operador deve ser especificado" +#: postmaster/postmaster.c:888 +msgid "could not create any TCP/IP sockets" +msgstr "não pôde criar nenhum soquete TCP/IP" -#: commands/operatorcmds.c:177 -msgid "at least one of leftarg or rightarg must be specified" -msgstr "pelo menos um dos argumentos esquerdo ou direito deve ser especificado" +#: postmaster/postmaster.c:939 +msgid "could not create Unix-domain socket" +msgstr "não pôde criar soquete de domínio Unix" -#: commands/operatorcmds.c:226 -#, c-format -msgid "restriction estimator function %s must return type \"float8\"" -msgstr "função de estimação de restrição %s deve retornar tipo \"float8\"" +#: postmaster/postmaster.c:947 +msgid "no socket created for listening" +msgstr "nenhum soquete criado para escutar" -#: commands/operatorcmds.c:265 -#, c-format -msgid "join estimator function %s must return type \"float8\"" -msgstr "função de estimação de junção %s deve retornar tipo \"float8\"" +#: postmaster/postmaster.c:986 +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" -#: commands/operatorcmds.c:316 +#: postmaster/postmaster.c:1030 #, c-format -msgid "operator %s does not exist, skipping" -msgstr "operador %s não existe, ignorando" +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" -#: commands/define.c:67 commands/define.c:222 commands/define.c:254 -#: commands/define.c:282 +#: postmaster/postmaster.c:1151 #, c-format -msgid "%s requires a parameter" -msgstr "%s requer um parâmetro" +msgid "%s: could not locate matching postgres executable" +msgstr "%s: não pôde localizar executável do postgres correspondente" -#: commands/define.c:108 commands/define.c:119 commands/define.c:189 -#: commands/define.c:207 +#: postmaster/postmaster.c:1202 #, c-format -msgid "%s requires a numeric value" -msgstr "%s requer um valor numérico" +msgid "data directory \"%s\" does not exist" +msgstr "diretório de dados \"%s\" não existe" -#: commands/define.c:175 +#: postmaster/postmaster.c:1207 #, c-format -msgid "%s requires a Boolean value" -msgstr "%s requer um valor Booleano" +msgid "could not read permissions of directory \"%s\": %m" +msgstr "não pôde ler permissões do diretório \"%s\": %m" -#: commands/define.c:236 +#: postmaster/postmaster.c:1215 #, c-format -msgid "argument of %s must be a name" -msgstr "argumento de %s deve ser um nome" +msgid "specified data directory \"%s\" is not a directory" +msgstr "diretório de dados especificado \"%s\" não é um diretório" -#: commands/define.c:266 +#: postmaster/postmaster.c:1231 #, c-format -msgid "argument of %s must be a type name" -msgstr "argumento de %s deve ser um nome de um tipo" +msgid "data directory \"%s\" has wrong ownership" +msgstr "diretório de dados \"%s\" tem dono incorreto" -#: commands/define.c:291 -#, c-format -msgid "%s requires an integer value" -msgstr "%s requer um valor inteiro" +#: postmaster/postmaster.c:1233 +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." -#: commands/define.c:312 +#: postmaster/postmaster.c:1253 #, c-format -msgid "invalid argument for %s: \"%s\"" -msgstr "argumento inválido para %s: \"%s\"" - -#: commands/view.c:139 -msgid "view must have at least one column" -msgstr "visão deve ter pelo menos uma coluna" +msgid "data directory \"%s\" has group or world access" +msgstr "diretório de dados \"%s\" tem acesso para grupo ou outros" -#: commands/view.c:260 commands/view.c:272 -msgid "cannot drop columns from view" -msgstr "não pode apagar colunas da visão" +#: postmaster/postmaster.c:1255 +msgid "Permissions should be u=rwx (0700)." +msgstr "Permissões devem ser u=rwx (0700)." -#: commands/view.c:277 +#: postmaster/postmaster.c:1266 #, 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\"" +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ão pôde encontrar o sistema de banco de dados\n" +"Era esperado encontrá-lo no diretório \"%s\",\n" +"mas não pôde abrir arquivo \"%s\": %s\n" -#: commands/view.c:285 +#: postmaster/postmaster.c:1302 #, 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:441 -msgid "CREATE VIEW specifies more column names than columns" -msgstr "CREATE VIEW especificou mais nomes de colunas do que colunas" +msgid "%s: could not open file \"%s\": %s\n" +msgstr "%s: não pôde abrir arquivo \"%s\": %s\n" -#: commands/view.c:457 +#: postmaster/postmaster.c:1309 #, c-format -msgid "view \"%s\" will be a temporary view" -msgstr "visão \"%s\" será uma visão temporária" +msgid "%s: could not open log file \"%s/%s\": %s\n" +msgstr "%s: não pôde abrir arquivo de log \"%s/%s\": %s\n" -#: commands/schemacmds.c:82 commands/schemacmds.c:288 +#: postmaster/postmaster.c:1320 #, c-format -msgid "unacceptable schema name \"%s\"" -msgstr "nome de esquema \"%s\" é inaceitável" - -#: commands/schemacmds.c:83 commands/schemacmds.c:289 -msgid "The prefix \"pg_\" is reserved for system schemas." -msgstr "O prefixo \"pg_\" é reservado para esquemas do sistema." +msgid "%s: could not fork background process: %s\n" +msgstr "%s: não pôde criar processo em segundo plano: %s\n" -#: commands/schemacmds.c:196 +#: postmaster/postmaster.c:1342 #, c-format -msgid "schema \"%s\" does not exist, skipping" -msgstr "esquema \"%s\" não existe, ignorando" +msgid "%s: could not dissociate from controlling TTY: %s\n" +msgstr "%s: não pôde dissociar da TTY de controle: %s\n" -#: commands/schemacmds.c:272 catalog/pg_namespace.c:50 +#: postmaster/postmaster.c:1437 #, c-format -msgid "schema \"%s\" already exists" -msgstr "esquema \"%s\" já existe" +msgid "select() failed in postmaster: %m" +msgstr "select() falhou no postmaster: %m" -#: 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 "" -"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" -"uso do sistema: %s" +#: postmaster/postmaster.c:1599 postmaster/postmaster.c:1630 +msgid "incomplete startup packet" +msgstr "pacote de inicialização incompleto" -#: commands/vacuumlazy.c:320 commands/cluster.c:389 -#, c-format -msgid "vacuuming \"%s.%s\"" -msgstr "limpando \"%s.%s\"" +#: postmaster/postmaster.c:1611 +msgid "invalid length of startup packet" +msgstr " tamanho do pacote de inicialização é inválido" -#: commands/vacuumlazy.c:449 +#: postmaster/postmaster.c:1668 #, 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" +msgid "failed to send SSL negotiation response: %m" +msgstr "falhou ao enviar resposta de negociação SSL: %m" -#: commands/vacuumlazy.c:785 +#: postmaster/postmaster.c:1697 #, c-format -msgid "\"%s\": removed %.0f row versions in %u pages" -msgstr "\"%s\": removidas %.0f versões de registro em %u páginas" +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" -#: commands/vacuumlazy.c:790 -#, c-format -msgid "" -"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u " -"pages" +#: postmaster/postmaster.c:1748 +msgid "invalid value for boolean option \"replication\"" +msgstr "valor é inválido para opção booleana \"replication\"" + +#: postmaster/postmaster.c:1768 +msgid "invalid startup packet layout: expected terminator as last byte" msgstr "" -"\"%s\": encontrados %.0f versões de registros removíveis e %.0f não-" -"removíveis em %u de %u páginas" +"formato de pacote de inicialização é inválido: terminador esperado como " +"último byte" -#: commands/vacuumlazy.c:793 -#, 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." +#: postmaster/postmaster.c:1796 +msgid "no PostgreSQL user name specified in startup packet" msgstr "" -"%.0f versões de registros não vigentes não podem ser removidas ainda.\n" -"Havia %.0f ponteiros de itens não utilizados.\n" -"%u páginas estão completamente vazias.\n" -"%s." +"nenhum nome de usuário PostgreSQL especificado no pacote de inicialização" -#: commands/vacuumlazy.c:851 -#, c-format -msgid "\"%s\": removed %d row versions in %d pages" -msgstr "\"%s\": removidas %d versões de registro em %d páginas" +#: postmaster/postmaster.c:1853 +msgid "the database system is starting up" +msgstr "o sistema de banco de dados está iniciando" -#: commands/vacuumlazy.c:854 commands/vacuumlazy.c:946 -#: commands/vacuumlazy.c:1071 -#, c-format -msgid "%s." -msgstr "%s." +#: postmaster/postmaster.c:1858 +msgid "the database system is shutting down" +msgstr "o sistema de banco de dados está desligando" -#: commands/vacuumlazy.c:943 -#, c-format -msgid "scanned index \"%s\" to remove %d row versions" -msgstr "índice \"%s\" percorrido para remover %d versões de registro" +#: postmaster/postmaster.c:1863 +msgid "the database system is in recovery mode" +msgstr "o sistema de banco de dados está em modo de recuperação" -#: commands/vacuumlazy.c:985 +#: postmaster/postmaster.c:1930 #, 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" +msgid "wrong key in cancel request for process %d" +msgstr "chave incorreta no pedido de cancelamento do processo %d" -#: commands/vacuumlazy.c:989 +#: postmaster/postmaster.c:1938 #, c-format -msgid "" -"%.0f index row versions were removed.\n" -"%u index pages have been deleted, %u are currently reusable.\n" -"%s." -msgstr "" -"%.0f versões de registros de índices foram apagadas.\n" -"%u páginas de índice foram removidas, %u são reutilizáveis.\n" -"%s." +msgid "PID %d in cancel request did not match any process" +msgstr "PID %d no pedido de cancelamento não combina com nenhum processo" -#: commands/vacuumlazy.c:1068 -#, c-format -msgid "\"%s\": truncated %u to %u pages" -msgstr "\"%s\": truncadas %u em %u páginas" +#: postmaster/postmaster.c:2144 +msgid "received SIGHUP, reloading configuration files" +msgstr "SIGHUP recebido, recarregando arquivos de configuração" -#: commands/prepare.c:70 -msgid "invalid statement name: must not be empty" -msgstr "nome de comando é inválido: não deve ser vazio" +#: postmaster/postmaster.c:2167 +msgid "pg_hba.conf not reloaded" +msgstr "pg_hba.conf não foi recarregado" -#: commands/prepare.c:139 -msgid "utility statements cannot be prepared" -msgstr "comandos utilitários não podem ser preparados" +#: postmaster/postmaster.c:2210 +msgid "received smart shutdown request" +msgstr "pedido de desligamento inteligente foi recebido" + +#: postmaster/postmaster.c:2257 +msgid "received fast shutdown request" +msgstr "pedido de desligamento rápido foi recebido" + +#: postmaster/postmaster.c:2275 +msgid "aborting any active transactions" +msgstr "interrompendo quaisquer transações ativas" + +#: postmaster/postmaster.c:2304 +msgid "received immediate shutdown request" +msgstr "pedido de desligamento imediato foi recebido" -#: commands/prepare.c:239 commands/prepare.c:246 commands/prepare.c:702 -msgid "prepared statement is not a SELECT" -msgstr "comando preparado não é um SELECT" +#: postmaster/postmaster.c:2392 postmaster/postmaster.c:2413 +msgid "startup process" +msgstr "processo de inicialização" -#: commands/prepare.c:313 -#, c-format -msgid "wrong number of parameters for prepared statement \"%s\"" -msgstr "número incorreto de parâmetros para comando preparado \"%s\"" +#: postmaster/postmaster.c:2395 +msgid "aborting startup due to startup process failure" +msgstr "interrompendo inicialização porque o processo de inicialização falhou" -#: commands/prepare.c:315 -#, c-format -msgid "Expected %d parameters but got %d." -msgstr "Esperado %d parâmetros mas recebeu %d." +#: postmaster/postmaster.c:2447 +msgid "database system is ready to accept connections" +msgstr "sistema de banco de dados está pronto para aceitar conexões" -#: commands/prepare.c:344 -msgid "cannot use subquery in EXECUTE parameter" -msgstr "não pode utilizar subconsulta no parâmetro EXECUTE" +#: postmaster/postmaster.c:2502 +msgid "background writer process" +msgstr "processo escritor em segundo plano" -#: commands/prepare.c:348 -msgid "cannot use aggregate function in EXECUTE parameter" -msgstr "não pode utilizar função de agregação no parâmetro EXECUTE" +#: postmaster/postmaster.c:2518 +msgid "WAL writer process" +msgstr "processo escritor do WAL" -#: commands/prepare.c:352 -msgid "cannot use window function in EXECUTE parameter" -msgstr "não pode utilizar função deslizante no parâmetro EXECUTE" +#: postmaster/postmaster.c:2532 +msgid "WAL receiver process" +msgstr "processo receptor do WAL" -#: commands/prepare.c:365 -#, c-format -msgid "parameter $%d of type %s cannot be coerced to the expected type %s" -msgstr "parâmetro $%d do tipo %s não pode ser convertido para tipo esperado %s" +#: postmaster/postmaster.c:2547 +msgid "autovacuum launcher process" +msgstr "processo inicializador do autovacuum" -#: commands/prepare.c:463 -#, c-format -msgid "prepared statement \"%s\" already exists" -msgstr "comando preparado \"%s\" já existe" +#: postmaster/postmaster.c:2562 +msgid "archiver process" +msgstr "processo arquivador" -#: commands/prepare.c:521 -#, c-format -msgid "prepared statement \"%s\" does not exist" -msgstr "comando preparado \"%s\" não existe" +#: postmaster/postmaster.c:2578 +msgid "statistics collector process" +msgstr "processo coletor de estatísticas" -#: commands/user.c:150 -msgid "SYSID can no longer be specified" -msgstr "SYSID não pode mais ser especificado" +#: postmaster/postmaster.c:2592 +msgid "system logger process" +msgstr "processo de relato do sistema (system logger)" -#: commands/user.c:272 -msgid "must be superuser to create superusers" -msgstr "deve ser super-usuário para criar super-usuários" +#: postmaster/postmaster.c:2627 postmaster/postmaster.c:2646 +#: postmaster/postmaster.c:2653 postmaster/postmaster.c:2671 +msgid "server process" +msgstr "processo servidor" -#: commands/user.c:279 -msgid "permission denied to create role" -msgstr "permissão negada ao criar role" +#: postmaster/postmaster.c:2707 +msgid "terminating any other active server processes" +msgstr "terminando quaisquer outros processos servidor ativos" -#: commands/user.c:286 commands/user.c:1033 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2872 #, c-format -msgid "role name \"%s\" is reserved" -msgstr "nome de role \"%s\" é reservado" +msgid "%s (PID %d) exited with exit code %d" +msgstr "%s (PID %d) terminou com código de retorno %d" -#: commands/user.c:300 commands/user.c:1027 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2881 #, c-format -msgid "role \"%s\" already exists" -msgstr "role \"%s\" já existe" - -#: commands/user.c:592 commands/user.c:784 commands/user.c:1267 -#: commands/user.c:1404 -msgid "must be superuser to alter superusers" -msgstr "deve ser super-usuário para alterar super-usuários" - -#: commands/user.c:607 commands/user.c:792 -msgid "permission denied" -msgstr "permissão negada" +msgid "%s (PID %d) was terminated by exception 0x%X" +msgstr "%s (PID %d) foi terminado pela exceção 0x%X" -#: commands/user.c:802 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2890 #, c-format -msgid "database \"%s\" not found" -msgstr "banco de dados \"%s\" não foi encontrado" - -#: commands/user.c:824 -msgid "permission denied to drop role" -msgstr "permissão negada ao remover role" +msgid "%s (PID %d) was terminated by signal %d: %s" +msgstr "%s (PID %d) foi terminado pelo sinal %d: %s" -#: commands/user.c:856 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2900 #, c-format -msgid "role \"%s\" does not exist, skipping" -msgstr "role \"%s\" não existe, ignorando" +msgid "%s (PID %d) was terminated by signal %d" +msgstr "%s (PID %d) foi terminado pelo sinal %d" -#: commands/user.c:868 commands/user.c:872 -msgid "current user cannot be dropped" -msgstr "usuário atual não pode ser removido" +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2909 +#, c-format +msgid "%s (PID %d) exited with unrecognized status %d" +msgstr "%s (PID %d) terminou com status desconhecido %d" -#: commands/user.c:876 -msgid "session user cannot be dropped" -msgstr "usuário de sessão não pode ser removido" +#: postmaster/postmaster.c:3089 +msgid "abnormal database system shutdown" +msgstr "desligamento anormal do sistema de banco de dados" -#: commands/user.c:887 -msgid "must be superuser to drop superusers" -msgstr "deve ser super-usuário para remover super-usuários" +#: postmaster/postmaster.c:3128 +msgid "all server processes terminated; reinitializing" +msgstr "todos os processos servidor foram terminados; reinicializando" -#: commands/user.c:900 +#: postmaster/postmaster.c:3311 #, c-format -msgid "role \"%s\" cannot be dropped because some objects depend on it" -msgstr "role \"%s\" não pode ser removida porque alguns objetos dependem dela" - -#: commands/user.c:1017 -msgid "session user cannot be renamed" -msgstr "usuário de sessão não pode ser renomeado" - -#: commands/user.c:1021 -msgid "current user cannot be renamed" -msgstr "usuário atual não pode ser renomeado" +msgid "could not fork new process for connection: %m" +msgstr "não pôde criar novo processo para conexão: %m" -#: commands/user.c:1044 -msgid "must be superuser to rename superusers" -msgstr "deve ser super-usuário para renomear super-usuários" +#: postmaster/postmaster.c:3353 +msgid "could not fork new process for connection: " +msgstr "não pôde criar novo processo para conexão: " -#: commands/user.c:1051 -msgid "permission denied to rename role" -msgstr "permissão negada ao renomear role" +#: postmaster/postmaster.c:3467 +#, c-format +msgid "connection received: host=%s port=%s" +msgstr "conexão recebida: host=%s porta=%s" -#: commands/user.c:1072 -msgid "MD5 password cleared because of role rename" -msgstr "senha MD5 foi limpada porque role foi renomeada" +#: postmaster/postmaster.c:3472 +#, c-format +msgid "connection received: host=%s" +msgstr "conexão recebida: host=%s" -#: commands/user.c:1128 -msgid "column names cannot be included in GRANT/REVOKE ROLE" -msgstr "nomes de coluna não podem ser incluídos em GRANT/REVOKE ROLE" +#: postmaster/postmaster.c:3736 +#, c-format +msgid "could not execute server process \"%s\": %m" +msgstr "não pôde executar processo servidor \"%s\": %m" -#: commands/user.c:1166 -msgid "permission denied to drop objects" -msgstr "permissão negada ao remover objetos" +#: postmaster/postmaster.c:4257 +msgid "database system is ready to accept read only connections" +msgstr "" +"sistema de banco de dados está pronto para aceitar conexões somente leitura" -#: commands/user.c:1193 commands/user.c:1202 -msgid "permission denied to reassign objects" -msgstr "permissão negada ao reatribuir objetos" +#: postmaster/postmaster.c:4527 +#, c-format +msgid "could not fork startup process: %m" +msgstr "não pôde criar processo de inicialização: %m" -#: commands/user.c:1275 commands/user.c:1412 +#: postmaster/postmaster.c:4531 #, c-format -msgid "must have admin option on role \"%s\"" -msgstr "deve ter opção admin na role \"%s\"" +msgid "could not fork background writer process: %m" +msgstr "não pôde criar processo escritor em segundo plano: %m" -#: commands/user.c:1283 -msgid "must be superuser to set grantor" -msgstr "deve ser super-usuário para definir concedente" +#: postmaster/postmaster.c:4535 +#, c-format +msgid "could not fork WAL writer process: %m" +msgstr "não pôde criar processo escritor do WAL: %m" -#: commands/user.c:1308 +#: postmaster/postmaster.c:4539 #, c-format -msgid "role \"%s\" is a member of role \"%s\"" -msgstr "role \"%s\" é um membro da role \"%s\"" +msgid "could not fork WAL receiver process: %m" +msgstr "não pôde criar processo receptor do WAL: %m" -#: commands/user.c:1323 +#: postmaster/postmaster.c:4543 #, c-format -msgid "role \"%s\" is already a member of role \"%s\"" -msgstr "role \"%s\" já é um membro da role \"%s\"" +msgid "could not fork process: %m" +msgstr "não pôde criar processo: %m" -#: commands/user.c:1434 +#: postmaster/postmaster.c:4828 #, c-format -msgid "role \"%s\" is not a member of role \"%s\"" -msgstr "role \"%s\" não é um membro da role \"%s\"" +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" -#: commands/opclasscmds.c:190 commands/opclasscmds.c:701 +#: postmaster/postmaster.c:4860 #, 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" +msgid "could not create inherited socket: error code %d\n" +msgstr "não pôde criar soquete herdado: código de erro %d\n" -#: commands/opclasscmds.c:320 -msgid "must be superuser to create an operator class" -msgstr "deve ser super-usuário para criar uma classe de operadores" +#: postmaster/postmaster.c:4889 postmaster/postmaster.c:4896 +#, 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" -#: commands/opclasscmds.c:403 commands/opclasscmds.c:849 -#: commands/opclasscmds.c:971 +#: postmaster/postmaster.c:4905 #, 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" +msgid "could not remove file \"%s\": %s\n" +msgstr "não pôde remover arquivo \"%s\": %s\n" -#: commands/opclasscmds.c:446 commands/opclasscmds.c:892 -#: commands/opclasscmds.c:986 +#: postmaster/postmaster.c:4922 #, 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" +msgid "could not map view of backend variables: error code %d\n" +msgstr "não pôde mapear visão de variáveis do servidor: código de erro %d\n" -#: commands/opclasscmds.c:476 -msgid "storage type specified more than once" -msgstr "tipo de armazenamento especificado mais de uma vez" +#: postmaster/postmaster.c:4931 +#, c-format +msgid "could not unmap view of backend variables: error code %d\n" +msgstr "não pôde liberar visão de variáveis do servidor: código de erro %d\n" -#: commands/opclasscmds.c:504 +#: postmaster/postmaster.c:4938 #, c-format -msgid "" -"storage type cannot be different from data type for access method \"%s\"" +msgid "could not close handle to backend parameter variables: error code %d\n" msgstr "" -"tipo de armazenamento não pode ser diferente do tipo de dado para método de " -"acesso \"%s\"" +"não pôde fechar manipulador das variáveis do servidor: código de erro %d\n" -#: commands/opclasscmds.c:520 -#, 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" +#: postmaster/postmaster.c:5083 +msgid "could not read exit code for process\n" +msgstr "não pôde ler código de retorno para processo\n" -#: commands/opclasscmds.c:548 -#, 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" +#: postmaster/postmaster.c:5088 +msgid "could not post child completion status\n" +msgstr "não pôde publicar status de conclusão do processo filho\n" -#: commands/opclasscmds.c:551 +#: replication/basebackup.c:132 replication/basebackup.c:737 #, c-format -msgid "Operator class \"%s\" already is the default." -msgstr "Classe de operadores \"%s\" já é a padrão." +msgid "could not read symbolic link \"%s\": %m" +msgstr "não pôde ler link simbólico \"%s\": %m" -#: commands/opclasscmds.c:687 -msgid "must be superuser to create an operator family" -msgstr "deve ser super-usuário para criar uma família de operadores" +#: replication/basebackup.c:139 replication/basebackup.c:741 +#, c-format +msgid "symbolic link \"%s\" target is too long" +msgstr "alvo \"%s\" de link simbólico é muito longo" -#: commands/opclasscmds.c:802 -msgid "must be superuser to alter an operator family" -msgstr "deve ser super-usuário para alterar uma família de operadores" +#: replication/basebackup.c:207 +#, c-format +msgid "could not stat control file \"%s\": %m" +msgstr "não pôde executar stat no arquivo de controle \"%s\": %m" -#: commands/opclasscmds.c:865 -msgid "operator argument types must be specified in ALTER OPERATOR FAMILY" +#: replication/basebackup.c:284 replication/basebackup.c:914 +msgid "base backup could not send data, aborting backup" msgstr "" -"tipos dos argumentos do operador devem ser especificados em ALTER OPERATOR " -"FAMILY" - -#: commands/opclasscmds.c:921 -msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY" -msgstr "STORAGE não pode ser especificado em ALTER OPERATOR FAMILY" +"cópia de segurança base não pôde enviar dados, interrompendo cópia de " +"segurança" -#: commands/opclasscmds.c:1037 -msgid "one or two argument types must be specified" -msgstr "um ou dois tipos de argumento devem ser especificados" +#: replication/basebackup.c:331 replication/basebackup.c:340 +#: replication/basebackup.c:349 replication/basebackup.c:358 +#: replication/basebackup.c:367 +#, c-format +msgid "duplicate option \"%s\"" +msgstr "opção \"%s\" duplicada" -#: commands/opclasscmds.c:1063 -msgid "index operators must be binary" -msgstr "operadores de índice devem ser binários" +#: replication/basebackup.c:419 +#, c-format +msgid "could not open directory \"pg_tblspc\": %m" +msgstr "não pôde abrir diretório \"pg_tblspc\": %m" -#: commands/opclasscmds.c:1067 -msgid "index operators must return boolean" -msgstr "operadores de índice devem retornar booleano" +#: replication/basebackup.c:616 replication/basebackup.c:691 +#, 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" -#: commands/opclasscmds.c:1105 -msgid "btree procedures must have two arguments" -msgstr "procedimentos de árvore B devem ter dois argumentos" +#: replication/basebackup.c:677 +msgid "shutdown requested, aborting active base backup" +msgstr "desligamento solicitado, interrompendo cópia de segurança base" -#: commands/opclasscmds.c:1109 -msgid "btree procedures must return integer" -msgstr "procedimentos de árvore B devem retornar inteiro" +#: replication/basebackup.c:814 +#, c-format +msgid "skipping special file \"%s\"" +msgstr "ignorando arquivo especial \"%s\"" -#: commands/opclasscmds.c:1124 -msgid "hash procedures must have one argument" -msgstr "procedimentos hash devem ter um argumento" +#: replication/basebackup.c:904 +#, c-format +msgid "archive member \"%s\" too large for tar format" +msgstr "membro de archive \"%s\" muito grande para o formato tar" -#: commands/opclasscmds.c:1128 -msgid "hash procedures must return integer" -msgstr "procedimentos hash devem retornar inteiro" +#: replication/libpqwalreceiver/libpqwalreceiver.c:101 +#, c-format +msgid "could not connect to the primary server: %s" +msgstr "não pôde conectar ao servidor principal: %s" -#: commands/opclasscmds.c:1153 -msgid "associated data types must be specified for index support procedure" +#: replication/libpqwalreceiver/libpqwalreceiver.c:113 +#, c-format +msgid "" +"could not receive database system identifier and timeline ID from the " +"primary server: %s" msgstr "" -"tipos de dados associados devem ser especificados para procedimento de " -"suporte ao índice" +"não pôde receber identificador do sistema de banco de dados e o ID de linha " +"do tempo do servidor principal: %s" -#: commands/opclasscmds.c:1179 -#, 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" +#: replication/libpqwalreceiver/libpqwalreceiver.c:124 +msgid "invalid response from primary server" +msgstr "resposta inválida do servidor principal" -#: commands/opclasscmds.c:1186 +#: replication/libpqwalreceiver/libpqwalreceiver.c:125 #, 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" +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." -#: commands/opclasscmds.c:1234 +#: replication/libpqwalreceiver/libpqwalreceiver.c:140 +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:141 #, 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\"" +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." -#: commands/opclasscmds.c:1334 +#: replication/libpqwalreceiver/libpqwalreceiver.c:153 #, 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\"" +msgid "timeline %u of the primary does not match recovery target timeline %u" +msgstr "" +"linha do tempo %u do servidor principal não combina com linha do tempo %u da " +"recuperação" -#: commands/opclasscmds.c:1421 +#: replication/libpqwalreceiver/libpqwalreceiver.c:165 #, 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\"" +msgid "could not start WAL streaming: %s" +msgstr "não pôde iniciar envio do WAL: %s" -#: commands/opclasscmds.c:1461 -#, 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\"" +#: replication/libpqwalreceiver/libpqwalreceiver.c:171 +msgid "streaming replication successfully connected to primary" +msgstr "replicação em fluxo conectou-se com sucesso ao servidor principal" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:193 +msgid "socket not open" +msgstr "soquete não está aberto" -#: commands/opclasscmds.c:1768 +#: replication/libpqwalreceiver/libpqwalreceiver.c:367 +#: replication/libpqwalreceiver/libpqwalreceiver.c:388 +#: replication/libpqwalreceiver/libpqwalreceiver.c:393 #, 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\"" +msgid "could not receive data from WAL stream: %s" +msgstr "não pôde receber dados do fluxo do WAL: %s" -#: commands/opclasscmds.c:1862 +#: replication/libpqwalreceiver/libpqwalreceiver.c:384 +msgid "replication terminated by primary server" +msgstr "replicação terminada pelo servidor principal" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:415 #, c-format -msgid "" -"operator family \"%s\" for access method \"%s\" already exists in schema \"%s" -"\"" +msgid "could not send data to WAL stream: %s" +msgstr "não pôde enviar dados ao fluxo do WAL: %s" + +#: replication/walreceiver.c:150 +msgid "terminating walreceiver process due to administrator command" msgstr "" -"família de operadores \"%s\" para método de acesso \"%s\" já existe no " -"esquema \"%s\"" +"terminando processo walreceiver por causa de um comando do administrador" -#: commands/vacuum.c:421 -msgid "oldest xmin is far in the past" -msgstr "xmin mais velho é muito antigo" +#: replication/walreceiver.c:304 +msgid "cannot continue WAL streaming, recovery has already ended" +msgstr "não pode continuar envio do WAL, recuperação já terminou" -#: commands/vacuum.c:422 -msgid "Close open transactions soon to avoid wraparound problems." +#: replication/walsender.c:142 +msgid "recovery is still in progress, can't accept WAL streaming connections" msgstr "" -"Feche transações abertas imediatamente para evitar problemas de reinício." +"recuperação ainda está em progresso, não pode aceitar conexões de envio do " +"WAL" -#: commands/vacuum.c:747 -msgid "some databases have not been vacuumed in over 2 billion transactions" -msgstr "" -"alguns bancos de dados não foram limpados a mais de 2 bilhões de transações" +#: replication/walsender.c:262 replication/walsender.c:490 +#: replication/walsender.c:548 +msgid "unexpected EOF on standby connection" +msgstr "EOF inesperado na conexão do servidor em espera" -#: commands/vacuum.c:748 -msgid "You might have already suffered transaction-wraparound data loss." +#: replication/walsender.c:268 +#, c-format +msgid "invalid standby handshake message type %d" +msgstr "tipo de mensagem de negociação %d do servidor em espera é inválido" + +#: replication/walsender.c:380 +msgid "standby connections not allowed because wal_level=minimal" msgstr "" -"Você já pode ter sofrido problemas de perda de dados devido a reciclagem de " -"transações." +"conexões de servidores em espera não são permitidas porque wal_level=minimal" -#: commands/vacuum.c:873 +#: replication/walsender.c:462 #, c-format -msgid "skipping \"%s\" --- only superuser can vacuum it" -msgstr "ignorando \"%s\" --- somente super-usuário pode limpá-la(o)" +msgid "invalid standby query string: %s" +msgstr "consulta do servidor em espera inválida: %s" -#: commands/vacuum.c:877 +#: replication/walsender.c:519 #, 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)" +msgid "invalid standby message type \"%c\"" +msgstr "tipo de mensagem do servidor em espera \"%c\" é inválido" -#: commands/vacuum.c:881 +#: replication/walsender.c:570 #, c-format -msgid "skipping \"%s\" --- only table or database owner can vacuum it" +msgid "unexpected message type \"%c\"" +msgstr "tipo de mensagem \"%c\" inesperado" + +#: replication/walsender.c:764 +#, 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:844 +msgid "terminating walsender process due to replication timeout" msgstr "" -"ignorando \"%s\" --- somente dono de tabela ou de banco de dados pode limpá-" -"la(o)" +"terminando processo walsender por causa do tempo de espera da replicação" -#: commands/vacuum.c:898 +#: replication/walsender.c:911 #, c-format msgid "" -"skipping \"%s\" --- cannot vacuum indexes, views, or special system tables" +"number of requested standby connections exceeds max_wal_senders (currently " +"%d)" msgstr "" -"ignorando \"%s\" --- não pode limpar índices, visões ou tabelas especiais do " -"sistema" - -#: commands/async.c:567 -msgid "channel name cannot be empty" -msgstr "nome do canal não pode ser vazio" - -#: commands/async.c:572 -msgid "channel name too long" -msgstr "nome do canal é muito longo" +"número de conexões dos servidores em espera solicitadas excedeu " +"max_wal_senders (atualmente %d)" -#: commands/async.c:579 -#, fuzzy -msgid "payload string too long" -msgstr "carga útil muito longa" +#: replication/walsender.c:995 replication/walsender.c:1057 +#, c-format +msgid "requested WAL segment %s has already been removed" +msgstr "segmento do WAL solicitado %s já foi removido" -#: commands/async.c:763 -msgid "" -"cannot PREPARE a transaction that has executed LISTEN, UNLISTEN or NOTIFY" +#: replication/walsender.c:1028 +#, c-format +msgid "could not read from log file %u, segment %u, offset %u, length %lu: %m" msgstr "" -"não pode executar PREPARE em uma transação que executou LISTEN, UNLISTEN ou " -"NOTIFY" +"não pôde ler do arquivo de log %u, segmento %u, deslocado de %u, tamanho " +"%lu: %m" -#: commands/async.c:868 -msgid "too many notifications in the NOTIFY queue" -msgstr "muitas notificações na fila do NOTIFY" +#: repl_scanner.l:76 +msgid "invalid streaming start location" +msgstr "local de início do fluxo é inválido" -#: commands/async.c:1421 -#, c-format -msgid "NOTIFY queue is %.0f%% full" -msgstr "fila do NOTIFY está %.0f%% cheia" +#: repl_scanner.l:97 scan.l:629 +msgid "unterminated quoted string" +msgstr "cadeia de caracteres entre aspas não foi terminada" -#: commands/async.c:1423 +#: repl_scanner.l:107 #, c-format +msgid "syntax error: unexpected character \"%s\"" +msgstr "erro de sintaxe: caracter inesperado \"%s\"" + +#: replication/syncrep.c:210 msgid "" -"The server process with PID %d is among those with the oldest transactions." +"canceling the wait for synchronous replication and terminating connection " +"due to administrator command" msgstr "" -"O processo servidor com PID %d está entre aqueles com transações mais " -"antigas." +"cancelando espera por replicação síncrona e terminando conexão por causa de " +"um comando do administrador" -#: commands/async.c:1426 +#: replication/syncrep.c:211 replication/syncrep.c:228 msgid "" -"The NOTIFY queue cannot be emptied until that process ends its current " -"transaction." +"The transaction has already committed locally, but might not have been " +"replicated to the standby." msgstr "" -"A fila do NOTIFY não pode ser esvaziada até que o processo termine a " -"transação atual." - -#: commands/analyze.c:166 -#, c-format -msgid "skipping \"%s\" --- only superuser can analyze it" -msgstr "ignorando \"%s\" --- somente super-usuário pode analisá-la(o)" +"A transação foi efetivada localmente, mas pode não ter sido replicado para o " +"servidor em espera." -#: commands/analyze.c:170 -#, c-format -msgid "skipping \"%s\" --- only superuser or database owner can analyze it" +#: replication/syncrep.c:227 +msgid "canceling wait for synchronous replication due to user request" msgstr "" -"ignorando \"%s\" --- somente super-usuário ou dono de banco de dados pode " -"analisá-la(o)" +"cancelando espera por replicação síncrona por causa de um pedido do usuário" -#: commands/analyze.c:174 +#: replication/syncrep.c:358 #, c-format -msgid "skipping \"%s\" --- only table or database owner can analyze it" +msgid "standby \"%s\" now has synchronous standby priority %u" msgstr "" -"ignorando \"%s\" --- somente dono de tabela ou de banco de dados pode " -"analisá-la(o)" +"servidor em espera \"%s\" agora tem prioridade %u como servidor em espera " +"síncrono" -#: commands/analyze.c:190 +#: replication/syncrep.c:456 #, c-format -msgid "" -"skipping \"%s\" --- cannot analyze indexes, views, or special system tables" +msgid "standby \"%s\" is now the synchronous standby with priority %u" msgstr "" -"ignorando \"%s\" --- não pode analisar índices, visões ou tabelas especiais " -"do sistema" +"servidor em espera \"%s\" agora é um servidor em espera síncrono com " +"prioridade %u" -#: commands/analyze.c:283 -#, fuzzy, c-format -msgid "analyzing \"%s.%s\" inheritance tree" -msgstr "analisando árvore da herança de \"%s.%s\"" +#: tsearch/dict_ispell.c:53 tsearch/dict_thesaurus.c:615 +msgid "multiple DictFile parameters" +msgstr "múltiplos parâmetros DictFile" -#: commands/analyze.c:288 -#, c-format -msgid "analyzing \"%s.%s\"" -msgstr "analisando \"%s.%s\"" +#: tsearch/dict_ispell.c:64 +msgid "multiple AffFile parameters" +msgstr "múltiplos parâmetros AffFile" -#: commands/analyze.c:609 +#: tsearch/dict_ispell.c:83 #, 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" +msgid "unrecognized Ispell parameter: \"%s\"" +msgstr "parâmetro desconhecido do Ispell: \"%s\"" -#: commands/analyze.c:1232 -#, 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" +#: tsearch/dict_ispell.c:97 +msgid "missing AffFile parameter" +msgstr "faltando parâmetro AffFile" + +#: tsearch/dict_ispell.c:103 tsearch/dict_thesaurus.c:639 +msgid "missing DictFile parameter" +msgstr "faltando parâmetro DictFile" -#: commands/explain.c:149 +#: tsearch/ts_utils.c:53 #, c-format -msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\"" -msgstr "valor desconhecido para opção EXPLAIN \"%s\": \"%s\"" +msgid "invalid text search configuration file name \"%s\"" +msgstr "nome de arquivo de configuração de busca textual \"%s\" é inválido" -#: commands/explain.c:155 +#: tsearch/ts_utils.c:91 #, c-format -msgid "unrecognized EXPLAIN option \"%s\"" -msgstr "opção EXPLAIN desconhecida \"%s\"" +msgid "could not open stop-word file \"%s\": %m" +msgstr "não pôde abrir arquivo de palavras ignoradas \"%s\": %m" -#: commands/explain.c:162 -msgid "EXPLAIN option BUFFERS requires ANALYZE" -msgstr "opção BUFFERS do EXPLAIN requer ANALYZE" +#: tsearch/wparser.c:314 +msgid "text search parser does not support headline creation" +msgstr "analisador de busca textual não suporta a criação de destaques" -#: commands/tablespace.c:157 commands/tablespace.c:174 -#: commands/tablespace.c:185 commands/tablespace.c:193 -#: commands/tablespace.c:598 storage/file/copydir.c:61 +#: tsearch/dict_synonym.c:119 #, c-format -msgid "could not create directory \"%s\": %m" -msgstr "não pôde criar diretório \"%s\": %m" +msgid "unrecognized synonym parameter: \"%s\"" +msgstr "parâmetro desconhecido do dicionário de sinônimos: \"%s\"" -#: commands/tablespace.c:204 -#, c-format -msgid "could not stat directory \"%s\": %m" -msgstr "não pôde executar stat no diretório \"%s\": %m" +#: tsearch/dict_synonym.c:126 +msgid "missing Synonyms parameter" +msgstr "faltando parâmetro Synonyms" -#: commands/tablespace.c:213 +#: tsearch/dict_synonym.c:133 #, c-format -msgid "\"%s\" exists but is not a directory" -msgstr "\"%s\" existe mas não é um diretório" +msgid "could not open synonym file \"%s\": %m" +msgstr "não pôde abrir arquivo de sinônimos \"%s\": %m" -#: commands/tablespace.c:243 +#: tsearch/dict_thesaurus.c:180 #, c-format -msgid "permission denied to create tablespace \"%s\"" -msgstr "permissão negada ao criar tablespace \"%s\"" +msgid "could not open thesaurus file \"%s\": %m" +msgstr "não pôde abrir arquivo de tesauros \"%s\": %m" -#: commands/tablespace.c:245 -msgid "Must be superuser to create a tablespace." -msgstr "Deve ser super-usuário para criar uma tablespace." +#: tsearch/dict_thesaurus.c:213 +msgid "unexpected delimiter" +msgstr "delimitador inesperado" -#: commands/tablespace.c:261 -msgid "tablespace location cannot contain single quotes" -msgstr "local da tablespace não pode conter aspas simples" +#: tsearch/dict_thesaurus.c:263 tsearch/dict_thesaurus.c:279 +msgid "unexpected end of line or lexeme" +msgstr "fim de linha ou lexema inesperado" -#: commands/tablespace.c:271 -msgid "tablespace location must be an absolute path" -msgstr "local da tablespace deve ser um caminho absoluto" +#: tsearch/dict_thesaurus.c:288 +msgid "unexpected end of line" +msgstr "fim de linha inesperado" -#: commands/tablespace.c:282 +#: tsearch/dict_thesaurus.c:412 #, c-format -msgid "tablespace location \"%s\" is too long" -msgstr "local da tablespace \"%s\" é muito longo" +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)" -#: commands/tablespace.c:292 commands/tablespace.c:824 +#: tsearch/dict_thesaurus.c:418 #, c-format -msgid "unacceptable tablespace name \"%s\"" -msgstr "nome da tablespace \"%s\" é inaceitável" +msgid "thesaurus sample word \"%s\" is a stop word (rule %d)" +msgstr "palavra amostrada do tesauro \"%s\" é uma palavra ignorada (regra %d)" -#: commands/tablespace.c:294 commands/tablespace.c:825 -msgid "The prefix \"pg_\" is reserved for system tablespaces." -msgstr "O prefixo \"pg_\" é reservado para tablespaces do sistema." +#: tsearch/dict_thesaurus.c:421 +msgid "Use \"?\" to represent a stop word within a sample phrase." +msgstr "" +"Utilize \"?\" para representar uma palavra ignorada dentro de uma frase " +"amostrada." -#: commands/tablespace.c:304 commands/tablespace.c:837 +#: tsearch/dict_thesaurus.c:567 #, c-format -msgid "tablespace \"%s\" already exists" -msgstr "tablespace \"%s\" já existe" +msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)" +msgstr "palavra substituta do tesauro \"%s\" é uma palavra ignorada (regra %d)" -#: commands/tablespace.c:372 commands/tablespace.c:524 -msgid "tablespaces are not supported on this platform" -msgstr "tablespaces não são suportadas nessa plataforma" +#: tsearch/dict_thesaurus.c:574 +#, 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)" -#: commands/tablespace.c:416 +#: tsearch/dict_thesaurus.c:586 #, c-format -msgid "tablespace \"%s\" does not exist, skipping" -msgstr "tablespace \"%s\" não existe, ignorando" +msgid "thesaurus substitute phrase is empty (rule %d)" +msgstr "frase substituta do tesauro está vazia (regra %d)" + +#: tsearch/dict_thesaurus.c:624 +msgid "multiple Dictionary parameters" +msgstr "múltiplos parâmetros Dictionary" + +#: tsearch/dict_thesaurus.c:631 +#, c-format +msgid "unrecognized Thesaurus parameter: \"%s\"" +msgstr "parâmetro desconhecido do dicionário de tesauros: \"%s\"" + +#: tsearch/dict_thesaurus.c:643 +msgid "missing Dictionary parameter" +msgstr "faltando parâmetro Dictionary" -#: commands/tablespace.c:481 +#: tsearch/wparser_def.c:2555 #, c-format -msgid "tablespace \"%s\" is not empty" -msgstr "tablespace \"%s\" não está vazia" +msgid "unrecognized headline parameter: \"%s\"" +msgstr "parâmetro de destaque desconhecido: \"%s\"" + +#: tsearch/wparser_def.c:2564 +msgid "MinWords should be less than MaxWords" +msgstr "MinWords deve ser menor do que MaxWords" + +#: tsearch/wparser_def.c:2568 +msgid "MinWords should be positive" +msgstr "MinWords deve ser positivo" -#: commands/tablespace.c:555 -#, c-format -msgid "directory \"%s\" does not exist" -msgstr "diretório \"%s\" não existe" +#: tsearch/wparser_def.c:2572 +msgid "ShortWord should be >= 0" +msgstr "ShortWord deve ser >= 0" -#: commands/tablespace.c:556 -#, c-format -msgid "" -"Create directory \"%s\" for this tablespace before restarting the server." -msgstr "" -"Crie o diretório \"%s\" para esta tablespace antes de reiniciar o servidor." +#: tsearch/wparser_def.c:2576 +msgid "MaxFragments should be >= 0" +msgstr "MaxFragments deve ser >= 0" -#: commands/tablespace.c:561 +#: tsearch/spell.c:276 #, c-format -msgid "could not set permissions on directory \"%s\": %m" -msgstr "não pôde definir permissões do diretório \"%s\": %m" +msgid "could not open dictionary file \"%s\": %m" +msgstr "não pôde abrir arquivo de dicionário \"%s\": %m" -#: commands/tablespace.c:593 -#, c-format -msgid "directory \"%s\" already in use as a tablespace" -msgstr "diretório \"%s\" já está em uso como uma tablespace" +#: tsearch/spell.c:518 tsearch/spell.c:535 tsearch/spell.c:552 +#: tsearch/spell.c:569 tsearch/spell.c:591 gram.y:12498 gram.y:12515 +msgid "syntax error" +msgstr "erro de sintaxe" -#: commands/tablespace.c:608 commands/tablespace.c:745 -#, c-format -msgid "could not remove symbolic link \"%s\": %m" -msgstr "não pôde remover link simbólico \"%s\": %m" +#: tsearch/spell.c:596 tsearch/spell.c:842 tsearch/spell.c:862 +msgid "multibyte flag character is not allowed" +msgstr "caractere marcador multibyte não é permitido" -#: commands/tablespace.c:618 +#: tsearch/spell.c:629 tsearch/spell.c:687 tsearch/spell.c:780 #, c-format -msgid "could not create symbolic link \"%s\": %m" -msgstr "não pôde criar link simbólico \"%s\": %m" +msgid "could not open affix file \"%s\": %m" +msgstr "não pôde abrir arquivo de afixos \"%s\": %m" -#: commands/tablespace.c:709 commands/tablespace.c:721 -#: commands/tablespace.c:737 -#, c-format -msgid "could not remove directory \"%s\": %m" -msgstr "não pôde remover diretório \"%s\": %m" +#: tsearch/spell.c:675 +msgid "Ispell dictionary supports only default flag value" +msgstr "dicionário Ispell suporta somente valor de marcador padrão" -#: commands/tablespace.c:1421 -#, c-format -msgid "tablespace %u is not empty" -msgstr "tablespace %u não está vazia" +#: tsearch/spell.c:873 +msgid "wrong affix file format for flag" +msgstr "formato de arquivo de afixos incorreto para marcador" -#: commands/cluster.c:126 commands/cluster.c:364 -msgid "cannot cluster temporary tables of other sessions" -msgstr "não pode agrupar tabelas temporárias de outras sessões" +#: 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 "palavra é muito longa para ser indexada" -#: commands/cluster.c:156 +#: tsearch/ts_parse.c:392 tsearch/ts_parse.c:399 tsearch/ts_parse.c:562 +#: tsearch/ts_parse.c:569 #, 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:353 -msgid "cannot cluster a shared catalog" -msgstr "não pode agrupar um catálogo compartilhado" +msgid "Words longer than %d characters are ignored." +msgstr "Palavras maiores do que %d caracteres são ignoradas." -#: commands/cluster.c:368 -msgid "cannot vacuum temporary tables of other sessions" -msgstr "não pode limpar tabelas temporárias de outras sessões" +#: tsearch/dict_simple.c:59 +msgid "multiple Accept parameters" +msgstr "múltiplos parâmetros Accept" -#: commands/cluster.c:384 +#: tsearch/dict_simple.c:67 #, c-format -msgid "clustering \"%s.%s\"" -msgstr "agrupando \"%s.%s\"" +msgid "unrecognized simple dictionary parameter: \"%s\"" +msgstr "parâmetro desconhecido do dicionário simples: \"%s\"" -#: commands/cluster.c:421 +#: tsearch/ts_locale.c:177 #, c-format -msgid "\"%s\" is not an index for table \"%s\"" -msgstr "\"%s\" não é um índice na tabela \"%s\"" +msgid "line %d of configuration file \"%s\": \"%s\"" +msgstr "linha %d do arquivo de configuração \"%s\": \"%s\"" -#: commands/cluster.c:429 +#: tsearch/ts_locale.c:182 libpq/hba.c:781 libpq/hba.c:797 libpq/hba.c:833 +#: libpq/hba.c:855 libpq/hba.c:864 libpq/hba.c:887 libpq/hba.c:899 +#: libpq/hba.c:912 libpq/hba.c:927 libpq/hba.c:982 libpq/hba.c:1002 +#: libpq/hba.c:1016 libpq/hba.c:1033 libpq/hba.c:1046 libpq/hba.c:1062 +#: libpq/hba.c:1077 libpq/hba.c:1119 libpq/hba.c:1151 libpq/hba.c:1162 +#: libpq/hba.c:1182 libpq/hba.c:1193 libpq/hba.c:1204 libpq/hba.c:1221 +#: libpq/hba.c:1242 libpq/hba.c:1272 libpq/hba.c:1284 libpq/hba.c:1297 +#: libpq/hba.c:1331 libpq/hba.c:1405 libpq/hba.c:1423 libpq/hba.c:1444 +#: libpq/hba.c:1475 libpq/hba.c:1485 #, 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" +msgid "line %d of configuration file \"%s\"" +msgstr "linha %d do arquivo de configuração \"%s\"" -#: commands/cluster.c:441 +#: tsearch/ts_locale.c:302 #, c-format -msgid "cannot cluster on partial index \"%s\"" -msgstr "não pode agrupar índice parcial \"%s\"" +msgid "conversion from wchar_t to server encoding failed: %m" +msgstr "conversão do wchar_t para codificação do servidor falhou: %m" -#: commands/cluster.c:461 +#: parser/parse_oper.c:219 parser/parse_agg.c:131 #, c-format -msgid "" -"cannot cluster on index \"%s\" because access method does not handle null " -"values" -msgstr "" -"não pode agrupar índice \"%s\" porque o método de acesso não manipula " -"valores nulos" +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_oper.c:221 +msgid "Use an explicit ordering operator or modify the query." +msgstr "Utilize um operador de ordenação explícito ou modifique a consulta." -#: commands/cluster.c:464 +#: parser/parse_oper.c:476 #, c-format -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 "" -"Você pode corrigir isso fazendo a coluna \"%s\" ser NOT NULL, ou utilizar " -"ALTER TABLE ... SET WITHOUT CLUSTER para remover a especificação de " -"agrupamento da tabela." +msgid "operator requires run-time type coercion: %s" +msgstr "operador requer conversão de tipo em tempo de execução: %s" -#: commands/cluster.c:466 +#: parser/parse_oper.c:710 #, c-format +msgid "operator is not unique: %s" +msgstr "operador não é único: %s" + +#: parser/parse_oper.c:712 msgid "" -"You might be able to work around this by marking column \"%s\" NOT NULL." -msgstr "Você pode corrigir isso fazendo a coluna \"%s\" ser NOT NULL." +"Could not choose a best candidate operator. You might need to add explicit " +"type casts." +msgstr "" +"Não pôde escolher um operador que se enquadra melhor. Você precisa adicionar " +"conversões de tipo explícitas." -#: commands/cluster.c:477 -#, c-format +#: parser/parse_oper.c:720 msgid "" -"cannot cluster on expressional index \"%s\" because its index access method " -"does not handle null values" +"No operator matches the given name and argument type(s). You might need to " +"add explicit type casts." msgstr "" -"não pode agrupar índice de expressão \"%s\" porque seu método de acesso ao " -"índice não manipula valores nulos" +"Nenhum operador corresponde com o nome e o(s) tipo(s) de argumento(s) " +"informados. Você precisa adicionar conversões de tipo explícitas." -#: commands/cluster.c:492 +#: parser/parse_oper.c:779 parser/parse_oper.c:893 #, c-format -msgid "cannot cluster on invalid index \"%s\"" -msgstr "não pode agrupar por índice inválido \"%s\"" +msgid "operator is only a shell: %s" +msgstr "operador é indefinido: %s" -#: commands/portalcmds.c:61 commands/portalcmds.c:160 -#: commands/portalcmds.c:212 -msgid "invalid cursor name: must not be empty" -msgstr "nome do cursor é inválido: não deve ser vazio" +#: parser/parse_oper.c:881 +msgid "op ANY/ALL (array) requires array on right side" +msgstr "op ANY/ALL (array) requer matriz no lado direito" -#: commands/portalcmds.c:402 -msgid "could not reposition held cursor" -msgstr "não pôde reposicionar cursor aberto" +#: parser/parse_oper.c:923 +msgid "op ANY/ALL (array) requires operator to yield boolean" +msgstr "op ANY/ALL (array) requer operador que retorna booleano" -#: commands/variable.c:62 -msgid "invalid list syntax for parameter \"datestyle\"" -msgstr "sintaxe de lista inválida para parâmetro \"datestyle\"" +#: parser/parse_oper.c:928 +msgid "op ANY/ALL (array) requires operator not to return a set" +msgstr "op ANY/ALL (array) requer operador que não retorne um conjunto" -#: commands/variable.c:161 +#: parser/parse_target.c:383 parser/parse_target.c:671 #, c-format -msgid "unrecognized \"datestyle\" key word: \"%s\"" -msgstr "palavra chave de \"datestyle\" desconhecida: \"%s\"" - -#: commands/variable.c:175 -msgid "conflicting \"datestyle\" specifications" -msgstr "especificações conflitantes de \"datestyle\"" - -#: commands/variable.c:285 -msgid "invalid interval value for time zone: month not allowed" -msgstr "valor de intervalo é inválido para zona horária: mês não é permitido" +msgid "cannot assign to system column \"%s\"" +msgstr "não pode atribuir a coluna do sistema \"%s\"" -#: commands/variable.c:293 -msgid "invalid interval value for time zone: day not allowed" -msgstr "valor de intervalo é inválido para zona horária: dia não é permitido" +#: parser/parse_target.c:411 +msgid "cannot set an array element to DEFAULT" +msgstr "não pode definir um elemento de matriz como sendo o valor DEFAULT" -#: commands/variable.c:361 commands/variable.c:493 -#, c-format -msgid "unrecognized time zone name: \"%s\"" -msgstr "nome da zona horária desconhecido: \"%s\"" +#: parser/parse_target.c:416 +msgid "cannot set a subfield to DEFAULT" +msgstr "não pode definir um subcampo como sendo o valor DEFAULT" -#: commands/variable.c:370 commands/variable.c:502 +#: parser/parse_target.c:485 #, c-format -msgid "time zone \"%s\" appears to use leap seconds" -msgstr "zona horária \"%s\" parece utilizar segundos intercalados" +msgid "column \"%s\" is of type %s but expression is of type %s" +msgstr "coluna \"%s\" é do tipo %s mas expressão é do tipo %s" -#: commands/variable.c:372 commands/variable.c:504 -msgid "PostgreSQL does not support leap seconds." -msgstr "PostgreSQL não suporta segundos intercalados." +#: parser/parse_target.c:618 parser/parse_expr.c:420 +msgid "row expansion via \"*\" is not supported here" +msgstr "expansão de registro utilizando \"*\" não é suportada aqui" -#: commands/variable.c:557 -msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query" +#: parser/parse_target.c:655 +#, c-format +msgid "" +"cannot assign to field \"%s\" of column \"%s\" because its type %s is not a " +"composite type" msgstr "" -"SET TRANSACTION ISOLATION LEVEL deve ser chamado antes de qualquer consulta" +"não pode atribuir ao campo \"%s\" da coluna \"%s\" porque seu tipo %s não é " +"um tipo composto" -#: commands/variable.c:566 -msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction" +#: parser/parse_target.c:664 +#, c-format +msgid "" +"cannot assign to field \"%s\" of column \"%s\" because there is no such " +"column in data type %s" msgstr "" -"SET TRANSACTION ISOLATION LEVEL não deve ser chamado em uma subtransação" +"não pode atribuir ao campo \"%s\" da coluna \"%s\" porque não há tal coluna " +"no tipo de dado %s" -#: commands/variable.c:861 +#: parser/parse_target.c:731 #, c-format -msgid "permission denied to set role \"%s\"" -msgstr "permissão negada ao definir role \"%s\"" +msgid "" +"array assignment to \"%s\" requires type %s but expression is of type %s" +msgstr "" +"atribuição de matriz para \"%s\" requer tipo %s mas expressão é do tipo %s" -#: commands/functioncmds.c:98 +#: parser/parse_target.c:741 #, c-format -msgid "SQL function cannot return shell type %s" -msgstr "função SQL não pode retornar tipo indefinido %s" +msgid "subfield \"%s\" is of type %s but expression is of type %s" +msgstr "subcampo \"%s\" é do tipo %s mas expressão é do tipo %s" -#: commands/functioncmds.c:103 +#: parser/parse_target.c:832 parser/parse_coerce.c:932 +#: parser/parse_coerce.c:962 parser/parse_coerce.c:980 +#: parser/parse_coerce.c:995 parser/parse_expr.c:1672 parser/parse_expr.c:2134 #, c-format -msgid "return type %s is only a shell" -msgstr "tipo retornado %s é indefinido" +msgid "cannot cast type %s to %s" +msgstr "não pode converter tipo %s para %s" -#: commands/functioncmds.c:138 +#: parser/parse_target.c:1067 parser/parse_expr.c:743 +#: parser/parse_relation.c:479 parser/parse_relation.c:559 #, c-format -msgid "type \"%s\" is not yet defined" -msgstr "tipo \"%s\" ainda não foi definido" - -#: commands/functioncmds.c:139 -msgid "Creating a shell type definition." -msgstr "Criando uma definição de tipo indefinido." +msgid "column reference \"%s\" is ambiguous" +msgstr "referência à coluna \"%s\" é ambígua" -#: commands/functioncmds.c:218 -#, c-format -msgid "SQL function cannot accept shell type %s" -msgstr "função SQL não pode aceitar tipo indefinido %s" +#: parser/parse_target.c:1129 +msgid "SELECT * with no tables specified is not valid" +msgstr "SELECT * sem tabelas especificadas não é válido" -#: commands/functioncmds.c:223 -#, c-format -msgid "argument type %s is only a shell" -msgstr "tipo de argumento %s é indefinido" +#: parser/parse_coerce.c:965 +msgid "Input has too few columns." +msgstr "Entrada tem poucas colunas." -#: commands/functioncmds.c:233 +#: parser/parse_coerce.c:983 #, c-format -msgid "type %s does not exist" -msgstr "tipo %s não existe" +msgid "Cannot cast type %s to %s in column %d." +msgstr "Não pode converter tipo %s para %s na coluna %d." -#: commands/functioncmds.c:241 -msgid "functions cannot accept set arguments" -msgstr "funções não podem aceitar conjunto de argumentos" +#: parser/parse_coerce.c:998 +msgid "Input has too many columns." +msgstr "Entrada tem muitas colunas." -#: commands/functioncmds.c:250 -msgid "VARIADIC parameter must be the last input parameter" -msgstr "parâmetro VARIADIC deve ser o último parâmetro de entrada" +#. translator: first %s is name of a SQL construct, eg WHERE +#: parser/parse_coerce.c:1041 +#, c-format +msgid "argument of %s must be type boolean, not type %s" +msgstr "argumento do %s deve ser do tipo boolean, e não do tipo %s" -#: commands/functioncmds.c:277 -msgid "VARIADIC parameter must be an array" -msgstr "parâmetro VARIADIC deve ser uma matriz" +#. 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 +#, c-format +msgid "argument of %s must not return a set" +msgstr "argumento do %s não deve retornar um conjunto" -#: commands/functioncmds.c:317 +#. translator: first %s is name of a SQL construct, eg LIMIT +#: parser/parse_coerce.c:1088 #, c-format -msgid "parameter name \"%s\" used more than once" -msgstr "nome de parâmetro \"%s\" foi especificado mais de uma vez" +msgid "argument of %s must be type %s, not type %s" +msgstr "argumento do %s deve ser do tipo %s, e não do tipo %s" -#: commands/functioncmds.c:332 -msgid "only input parameters can have default values" -msgstr "somente parâmetros de entrada podem ter valores padrão" +#. translator: first %s is name of a SQL construct, eg CASE +#: parser/parse_coerce.c:1221 +#, c-format +msgid "%s types %s and %s cannot be matched" +msgstr "tipos no %s %s e %s não podem corresponder" -#: commands/functioncmds.c:344 -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" +#. translator: first %s is name of a SQL construct, eg CASE +#: parser/parse_coerce.c:1288 +#, c-format +msgid "%s could not convert type %s to %s" +msgstr "%s não pôde converter tipo %s para %s" -#: commands/functioncmds.c:360 -msgid "cannot use subquery in parameter default value" -msgstr "não pode utilizar subconsulta no valor padrão do parâmetro" +#: parser/parse_coerce.c:1539 +msgid "arguments declared \"anyelement\" are not all alike" +msgstr "argumentos declarados \"anyelement\" não são de tipos compatíveis" -#: commands/functioncmds.c:364 -msgid "cannot use aggregate function in parameter default value" -msgstr "não pode utilizar função de agregação no valor padrão do parâmetro" +#: parser/parse_coerce.c:1559 +msgid "arguments declared \"anyarray\" are not all alike" +msgstr "argumentos declarados \"anyarray\" não são de tipos compatíveis" -#: commands/functioncmds.c:368 -msgid "cannot use window function in parameter default value" -msgstr "não pode utilizar função deslizante no valor padrão do parâmetro" +#: parser/parse_coerce.c:1588 parser/parse_coerce.c:1736 +#: parser/parse_coerce.c:1768 +#, c-format +msgid "argument declared \"anyarray\" is not an array but type %s" +msgstr "argumento declarado \"anyarray\" não é uma matriz mas do tipo %s" -#: commands/functioncmds.c:378 -msgid "input parameters after one with a default value must also have defaults" +#: parser/parse_coerce.c:1604 +msgid "" +"argument declared \"anyarray\" is not consistent with argument declared " +"\"anyelement\"" msgstr "" -"parâmetros de entrada após um parâmetro com valor padrão também devem ter " -"valores padrão" - -#: commands/functioncmds.c:617 -msgid "no function body specified" -msgstr "corpo da função não foi especificado" - -#: commands/functioncmds.c:627 -msgid "no language specified" -msgstr "nenhuma linguagem foi especificada" - -#: commands/functioncmds.c:648 commands/functioncmds.c:1349 -msgid "COST must be positive" -msgstr "COST deve ser positivo" +"argumento declarado \"anyarray\" não está consistente com argumento " +"declarado \"anyelement\"" -#: commands/functioncmds.c:656 commands/functioncmds.c:1357 -msgid "ROWS must be positive" -msgstr "ROWS deve ser positivo" +#: parser/parse_coerce.c:1622 +msgid "could not determine polymorphic type because input has type \"unknown\"" +msgstr "" +"não pôde determinar tipo polimórfico porque entrada tem tipo \"unknown\"" -#: commands/functioncmds.c:695 +#: parser/parse_coerce.c:1632 #, c-format -msgid "unrecognized function attribute \"%s\" ignored" -msgstr "atributo de função desconhecido \"%s\" foi ignorado" +msgid "type matched to anynonarray is an array type: %s" +msgstr "tipo que corresponde a anynonarray é um tipo array: %s" -#: commands/functioncmds.c:746 +#: parser/parse_coerce.c:1642 #, c-format -msgid "only one AS item needed for language \"%s\"" -msgstr "somente um item AS é necessário para linguagem \"%s\"" +msgid "type matched to anyenum is not an enum type: %s" +msgstr "tipo que corresponde a anyenum não é um tipo enum: %s" -#: commands/functioncmds.c:838 commands/functioncmds.c:1992 -msgid "Use CREATE LANGUAGE to load the language into the database." -msgstr "Utilize CREATE LANGUAGE para carregar uma linguagem no banco de dados." +#: parser/parse_collate.c:214 parser/parse_collate.c:538 +#, c-format +msgid "collation mismatch between implicit collations \"%s\" and \"%s\"" +msgstr "" +"incompatibilidade de ordenação entre ordenações implícitas \"%s\" e \"%s\"" -#: commands/functioncmds.c:885 +#: 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 "" +"Você pode escolher a ordenação utilizando a cláusula COLLATE em uma ou ambas " +"expressões." + +#: parser/parse_collate.c:769 #, 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" +msgid "collation mismatch between explicit collations \"%s\" and \"%s\"" +msgstr "" +"incompatibilidade de ordenação entre ordenações explícitas \"%s\" e \"%s\"" -#: commands/functioncmds.c:898 -msgid "function result type must be specified" -msgstr "tipo do resultado da função deve ser especificado" +#: parser/parse_expr.c:366 parser/parse_expr.c:759 +#, c-format +msgid "column %s.%s does not exist" +msgstr "coluna %s.%s não existe" -#: commands/functioncmds.c:933 commands/functioncmds.c:1361 -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" +#: parser/parse_expr.c:378 +#, c-format +msgid "column \"%s\" not found in data type %s" +msgstr "coluna \"%s\" não foi encontrada no tipo de dado %s" -#: commands/functioncmds.c:985 +#: parser/parse_expr.c:384 #, c-format -msgid "function %s(%s) does not exist, skipping" -msgstr "função %s(%s) não existe, ignorando" +msgid "could not identify column \"%s\" in record data type" +msgstr "não pôde identificar coluna \"%s\" no tipo de dado record" -#: commands/functioncmds.c:1007 -msgid "Use DROP AGGREGATE to drop aggregate functions." -msgstr "Utilize DROP AGGREGATE para remover funções de agregação." +#: parser/parse_expr.c:390 +#, 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" -#: commands/functioncmds.c:1014 +#: 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 #, c-format -msgid "removing built-in function \"%s\"" -msgstr "removendo função embutida \"%s\"" +msgid "there is no parameter $%d" +msgstr "não há parâmetro $%d" -#: commands/functioncmds.c:1107 -msgid "Use ALTER AGGREGATE to rename aggregate functions." -msgstr "Utilize ALTER AGGREGATE para renomear funções de agregação." +#: parser/parse_expr.c:1023 +msgid "NULLIF requires = operator to yield boolean" +msgstr "NULLIF requer que operador = retorne booleano" -#: commands/functioncmds.c:1170 -msgid "Use ALTER AGGREGATE to change owner of aggregate functions." -msgstr "Utilize ALTER AGGREGATE para mudar o dono das funções de agregação." +#: parser/parse_expr.c:1416 +msgid "subquery cannot have SELECT INTO" +msgstr "subconsulta não pode ter SELECT INTO" -#: commands/functioncmds.c:1508 -#, c-format -msgid "source data type %s is a pseudo-type" -msgstr "tipo de dado fonte %s é um pseudo-tipo" +#: parser/parse_expr.c:1444 +msgid "subquery must return a column" +msgstr "subconsulta deve retornar uma coluna" -#: commands/functioncmds.c:1514 -#, c-format -msgid "target data type %s is a pseudo-type" -msgstr "tipo de dado alvo %s é um pseudo-tipo" +#: parser/parse_expr.c:1451 +msgid "subquery must return only one column" +msgstr "subconsulta deve retornar somente uma coluna" -#: commands/functioncmds.c:1551 -msgid "cast function must take one to three arguments" -msgstr "função de conversão deve ter de um a três argumentos" +#: parser/parse_expr.c:1511 +msgid "subquery has too many columns" +msgstr "subconsulta tem muitas colunas" -#: commands/functioncmds.c:1555 -msgid "" -"argument of cast function must match or be binary-coercible from source data " -"type" +#: parser/parse_expr.c:1516 +msgid "subquery has too few columns" +msgstr "subconsulta tem poucas colunas" + +#: parser/parse_expr.c:1612 +msgid "cannot determine type of empty array" +msgstr "não pode determinar tipo de matriz vazia" + +#: parser/parse_expr.c:1613 +msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]." msgstr "" -"argumento da função de conversão deve corresponder ou ser convertido no tipo " -"de dado fonte" +"Converta explicitamente para o tipo desejado, por exemplo ARRAY[]::integer[]." -#: commands/functioncmds.c:1559 -msgid "second argument of cast function must be type integer" -msgstr "segundo argumento da função de conversão deve ter tipo integer" +#: parser/parse_expr.c:1627 +#, 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" -#: commands/functioncmds.c:1563 -msgid "third argument of cast function must be type boolean" -msgstr "terceiro argumento da função de conversão deve ter tipo boolean" +#: parser/parse_expr.c:1841 +msgid "unnamed XML attribute value must be a column reference" +msgstr "valor do atributo XML sem nome deve ser uma referência a coluna" -#: commands/functioncmds.c:1567 -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" +#: parser/parse_expr.c:1842 +msgid "unnamed XML element value must be a column reference" +msgstr "valor do elemento XML sem nome deve ser uma referência a coluna" -#: commands/functioncmds.c:1578 -msgid "cast function must not be volatile" -msgstr "função de conversão não deve ser volátil" +#: parser/parse_expr.c:1857 +#, c-format +msgid "XML attribute name \"%s\" appears more than once" +msgstr "nome de atributo XML \"%s\" aparece mais do que uma vez" -#: commands/functioncmds.c:1583 -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" +#: parser/parse_expr.c:1964 +#, c-format +msgid "cannot cast XMLSERIALIZE result to %s" +msgstr "não pode converter resultado de XMLSERIALIZE para %s" -#: commands/functioncmds.c:1587 -msgid "cast function must not be a window function" -msgstr "função de conversão não deve ser uma função deslizante" +#: parser/parse_expr.c:2207 parser/parse_expr.c:2407 +msgid "unequal number of entries in row expressions" +msgstr "número desigual de entradas em expressões de registro" -#: commands/functioncmds.c:1591 -msgid "cast function must not return a set" -msgstr "função de conversão não deve retornar um conjunto" +#: parser/parse_expr.c:2217 +msgid "cannot compare rows of zero length" +msgstr "não pode comparar registros de tamanho zero" -#: commands/functioncmds.c:1617 -msgid "must be superuser to create a cast WITHOUT FUNCTION" -msgstr "deve ser super-usuário para criar uma conversão WITHOUT FUNCTION" +#: parser/parse_expr.c:2242 +#, 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" -#: commands/functioncmds.c:1632 -msgid "source and target data types are not physically compatible" -msgstr "tipos de dado fonte e alvo não são fisicamente compatíveis" +#: parser/parse_expr.c:2249 +msgid "row comparison operator must not return a set" +msgstr "operador de comparação de registro não deve retornar um conjunto" -#: commands/functioncmds.c:1647 -msgid "composite data types are not binary-compatible" -msgstr "tipos de dado compostos não são compatíveis no formato binário" +#: parser/parse_expr.c:2308 parser/parse_expr.c:2353 +#, 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" -#: commands/functioncmds.c:1653 -msgid "enum data types are not binary-compatible" -msgstr "tipos de dado enum não são compatíveis no formato binário" +#: parser/parse_expr.c:2310 +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." -#: commands/functioncmds.c:1659 -msgid "array data types are not binary-compatible" -msgstr "tipos de dado matriz não são compatíveis no formato binário" +#: parser/parse_expr.c:2355 +msgid "There are multiple equally-plausible candidates." +msgstr "Há múltiplos candidatos igualmente plausíveis." -#: commands/functioncmds.c:1669 -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" +#: parser/parse_expr.c:2447 +msgid "IS DISTINCT FROM requires = operator to yield boolean" +msgstr "IS DISTINCT FROM requer que operador = retorne booleano" -#: commands/functioncmds.c:1702 +#: parser/parse_utilcmd.c:182 #, c-format -msgid "cast from type %s to type %s already exists" -msgstr "conversão do tipo %s para tipo %s já existe" +msgid "relation \"%s\" already exists, skipping" +msgstr "relação \"%s\" já existe, ignorando" + +#: parser/parse_utilcmd.c:335 +msgid "array of serial is not implemented" +msgstr "matriz de serial não está implementada" -#: commands/functioncmds.c:1782 +#: parser/parse_utilcmd.c:383 #, 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" +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\"" -#: commands/functioncmds.c:1879 +#: parser/parse_utilcmd.c:484 parser/parse_utilcmd.c:496 #, c-format -msgid "function \"%s\" is already in schema \"%s\"" -msgstr "função \"%s\" já está no esquema \"%s\"" +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\"" -#: commands/functioncmds.c:1902 +#: parser/parse_utilcmd.c:508 #, c-format -msgid "function \"%s\" already exists in schema \"%s\"" -msgstr "função \"%s\" já existe no esquema \"%s\"" +msgid "multiple default values specified for column \"%s\" of table \"%s\"" +msgstr "" +"valores padrão múltiplos especificados para coluna \"%s\" da tabela \"%s\"" -#: commands/functioncmds.c:1974 -#, fuzzy -msgid "no inline code specified" -msgstr "código inline não foi especificado" +#: parser/parse_utilcmd.c:1155 parser/parse_utilcmd.c:1231 +#, c-format +msgid "Index \"%s\" contains a whole-row table reference." +msgstr "índice \"%s\" contém uma referência a todo registro da tabela." -#: commands/functioncmds.c:2022 -#, fuzzy, c-format -msgid "language \"%s\" does not support inline code execution" -msgstr "linguagem \"%s\" não suporta execução de código inline" +#: parser/parse_utilcmd.c:1496 +msgid "cannot use an existing index in CREATE TABLE" +msgstr "não pode utilizar um índice existente em CREATE TABLE" -#: commands/sequence.c:469 commands/sequence.c:668 commands/sequence.c:710 -#: commands/sequence.c:746 catalog/aclchk.c:3093 +#: parser/parse_utilcmd.c:1516 #, c-format -msgid "permission denied for sequence %s" -msgstr "permissão negada para sequência %s" +msgid "index \"%s\" is already associated with a constraint" +msgstr "índice \"%s\" já está associado com a restrição" -#: commands/sequence.c:553 +#: parser/parse_utilcmd.c:1524 #, c-format -msgid "nextval: reached maximum value of sequence \"%s\" (%s)" -msgstr "nextval: valor máximo da sequência \"%s\" foi alcançado (%s)" +msgid "index \"%s\" does not belong to table \"%s\"" +msgstr "índice \"%s\" não pertence a tabela \"%s\"" -#: commands/sequence.c:576 +#: parser/parse_utilcmd.c:1531 #, c-format -msgid "nextval: reached minimum value of sequence \"%s\" (%s)" -msgstr "nextval: valor mínimo da sequência \"%s\" foi alcançado (%s)" +msgid "index \"%s\" is not valid" +msgstr "índice \"%s\" não é válido" -#: commands/sequence.c:674 +#: parser/parse_utilcmd.c:1537 #, 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" +msgid "\"%s\" is not a unique index" +msgstr "\"%s\" não é um índice único" -#: commands/sequence.c:693 commands/sequence.c:699 -msgid "lastval is not yet defined in this session" -msgstr "lastval ainda não foi definido nesta sessão" +#: parser/parse_utilcmd.c:1538 parser/parse_utilcmd.c:1545 +#: parser/parse_utilcmd.c:1552 parser/parse_utilcmd.c:1622 +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." -#: commands/sequence.c:767 +#: parser/parse_utilcmd.c:1544 #, 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:1096 -msgid "INCREMENT must not be zero" -msgstr "INCREMENT não deve ser zero" +msgid "index \"%s\" contains expressions" +msgstr "índice \"%s\" contém expressões" -#: commands/sequence.c:1142 +#: parser/parse_utilcmd.c:1551 #, c-format -msgid "MINVALUE (%s) must be less than MAXVALUE (%s)" -msgstr "MINVALUE (%s) deve ser menor do que MAXVALUE (%s)" +msgid "\"%s\" is a partial index" +msgstr "\"%s\" é um índice parcial" -#: commands/sequence.c:1167 +#: parser/parse_utilcmd.c:1563 #, 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)" +msgid "\"%s\" is a deferrable index" +msgstr "\"%s\" não é um índice postergável" -#: commands/sequence.c:1179 -#, 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)" +#: parser/parse_utilcmd.c:1564 +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." -#: commands/sequence.c:1210 +#: parser/parse_utilcmd.c:1621 #, 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)" +msgid "index \"%s\" does not have default sorting behavior" +msgstr "índice \"%s\" não tem comportamento de ordenação padrão" -#: commands/sequence.c:1222 +#: parser/parse_utilcmd.c:1766 #, 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)" +msgid "column \"%s\" appears twice in primary key constraint" +msgstr "coluna \"%s\" aparece duas vezes na restrição de chave primária" -#: commands/sequence.c:1237 +#: parser/parse_utilcmd.c:1772 #, c-format -msgid "CACHE (%s) must be greater than zero" -msgstr "CACHE (%s) deve ser maior do que zero" +msgid "column \"%s\" appears twice in unique constraint" +msgstr "coluna \"%s\" aparece duas vezes na restrição de unicidade" -#: commands/sequence.c:1268 -msgid "invalid OWNED BY option" -msgstr "opção de OWNED BY é inválida" +#: parser/parse_utilcmd.c:1932 +msgid "index expression cannot return a set" +msgstr "expressão de índice não pode retornar um conjunto" -#: commands/sequence.c:1269 -msgid "Specify OWNED BY table.column or OWNED BY NONE." -msgstr "Especifique OWNED BY tabela.coluna ou OWNED BY NONE." +#: parser/parse_utilcmd.c:1942 +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" -#: commands/sequence.c:1298 -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" +#: parser/parse_utilcmd.c:2039 +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" -#: commands/sequence.c:1302 -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" +#: parser/parse_utilcmd.c:2045 +msgid "cannot use aggregate function in rule WHERE condition" +msgstr "não pode utilizar função de agregação em condição WHERE de regra" -#: replication/walsender.c:116 -#, fuzzy -msgid "recovery is still in progress, can't accept WAL streaming connections" -msgstr "" -"recuperação ainda está em progresso, não pode aceitar conexões de streaming " -"do WAL" +#: parser/parse_utilcmd.c:2049 +msgid "cannot use window function in rule WHERE condition" +msgstr "não pode utilizar função deslizante em condição WHERE de regra" -#: replication/walsender.c:278 -#, fuzzy -msgid "standby connections not allowed because wal_level=minimal" +#: parser/parse_utilcmd.c:2121 +msgid "" +"rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE " +"actions" msgstr "" -"conexões de servidores em espera não são permitidas porque wal_level=minimal" +"regras com condições WHERE só podem ter ações SELECT, INSERT, UPDATE ou " +"DELETE" -#: replication/walsender.c:300 -#, fuzzy, c-format -msgid "invalid standby query string: %s" -msgstr "consulta do servidor em espera inválida: %s" +#: parser/parse_utilcmd.c:2139 parser/parse_utilcmd.c:2238 +#: rewrite/rewriteManip.c:1024 rewrite/rewriteHandler.c:442 +msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" +msgstr "comandos condicionais UNION/INTERSECT/EXCEPT não estão implementados" -#: replication/walsender.c:313 replication/walsender.c:339 -#, fuzzy -msgid "unexpected EOF on standby connection" -msgstr "EOF inesperado durante conexão do servidor em espera" +#: parser/parse_utilcmd.c:2157 +msgid "ON SELECT rule cannot use OLD" +msgstr "regra ON SELECT não pode utilizar OLD" -#: replication/walsender.c:319 -#, fuzzy, c-format -msgid "invalid standby handshake message type %d" -msgstr "tipo de mensagem do servidor em espera %d é inválido" +#: parser/parse_utilcmd.c:2161 +msgid "ON SELECT rule cannot use NEW" +msgstr "regra ON SELECT não pode utilizar NEW" -#: replication/walsender.c:360 -#, fuzzy, c-format -msgid "invalid standby closing message type %d" -msgstr "tipo de mensagem do servidor em espera %d é inválido" +#: parser/parse_utilcmd.c:2170 +msgid "ON INSERT rule cannot use OLD" +msgstr "regra ON INSERT não pode utilizar OLD" -#: replication/walsender.c:506 -#, fuzzy, c-format -msgid "" -"number of requested standby connections exceeds max_wal_senders (currently " -"%d)" -msgstr "" -"número de conexões do servidores em espera solicitadas excedeu max_wal_senders (atualmente %d)" +#: parser/parse_utilcmd.c:2176 +msgid "ON DELETE rule cannot use NEW" +msgstr "regra ON DELETE não pode utilizar NEW" -#: replication/walsender.c:578 replication/walsender.c:640 -#, c-format -msgid "requested WAL segment %s has already been removed" -msgstr "segmento do WAL solicitado %s já foi removido" +#: parser/parse_utilcmd.c:2204 +msgid "cannot refer to OLD within WITH query" +msgstr "não pode referenciar OLD em uma consulta WITH" + +#: parser/parse_utilcmd.c:2211 +msgid "cannot refer to NEW within WITH query" +msgstr "não pode referenciar NEW em uma consulta WITH" + +#: parser/parse_utilcmd.c:2485 +msgid "misplaced DEFERRABLE clause" +msgstr "cláusula DEFERRABLE no lugar errado" + +#: parser/parse_utilcmd.c:2490 parser/parse_utilcmd.c:2505 +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:2500 +msgid "misplaced NOT DEFERRABLE clause" +msgstr "cláusula NOT DEFERRABLE no lugar errado" -#: replication/walsender.c:611 -#, c-format -msgid "could not read from log file %u, segment %u, offset %u, length %lu: %m" -msgstr "" -"não pôde ler do arquivo de log %u, segmento %u, deslocado de %u, tamanho " -"%lu: %m" +#: parser/parse_utilcmd.c:2513 parser/parse_utilcmd.c:2539 gram.y:4152 +msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" +msgstr "restrição declarada INITIALLY DEFERRED deve ser DEFERRABLE" -#: replication/walreceiver.c:138 -#, fuzzy -msgid "terminating walreceiver process due to administrator command" -msgstr "" -"terminando processo walreceiver por causa de um comando do administrador" +#: parser/parse_utilcmd.c:2521 +msgid "misplaced INITIALLY DEFERRED clause" +msgstr "cláusula INITIALLY DEFERRED no lugar errado" -#: replication/walreceiver.c:287 -#, fuzzy -msgid "cannot continue WAL streaming, recovery has already ended" -msgstr "não pode continuar envio do WAL, recuperação já terminou" +#: parser/parse_utilcmd.c:2526 parser/parse_utilcmd.c:2552 +msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" +msgstr "múltiplas cláusulas INITTIALLY IMMEDIATE/DEFERRED não são permitidas" -#: replication/libpqwalreceiver/libpqwalreceiver.c:100 -#, c-format -msgid "could not connect to the primary server: %s" -msgstr "não pôde conectar ao servidor primário: %s" +#: parser/parse_utilcmd.c:2547 +msgid "misplaced INITIALLY IMMEDIATE clause" +msgstr "cláusula INITIALLY IMMEDIATE no lugar errado" -#: replication/libpqwalreceiver/libpqwalreceiver.c:112 +#: parser/parse_utilcmd.c:2738 #, c-format msgid "" -"could not receive database system identifier and timeline ID from the " -"primary server: %s" +"CREATE specifies a schema (%s) different from the one being created (%s)" msgstr "" -"não pôde receber identificador do sistema de banco de dados e o ID de linha do tempo do servidor primário: %s" +"CREATE especificou um esquema (%s) diferente daquele que foi criado (%s)" -#: replication/libpqwalreceiver/libpqwalreceiver.c:123 -msgid "invalid response from primary server" -msgstr "resposta inválida do servidor primário" +#: parser/parse_agg.c:133 +msgid "Aggregates with DISTINCT must be able to sort their inputs." +msgstr "Agregações com DISTINCT devem ser capazes de ordenar suas entradas." -#: replication/libpqwalreceiver/libpqwalreceiver.c:124 +#: parser/parse_agg.c:174 +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:245 parser/parse_clause.c:1637 #, c-format -msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields." -msgstr "Esperada 1 tupla com dois campos, recebeu %d tuplas com %d campos." +msgid "window \"%s\" does not exist" +msgstr "deslizante \"%s\" não existe" -#: replication/libpqwalreceiver/libpqwalreceiver.c:139 -#, fuzzy -msgid "database system identifier differs between the primary and standby" -msgstr "identificador do sistema de banco de dados difere entre o primário e o secundário" +#: parser/parse_agg.c:336 +msgid "aggregates not allowed in WHERE clause" +msgstr "agregação não é permitida na cláusula WHERE" -#: replication/libpqwalreceiver/libpqwalreceiver.c:140 -#, fuzzy, c-format -msgid "The primary's identifier is %s, the standby's identifier is %s." -msgstr "O identificador do servidor primário é %s, o identificador do servidor secundário é %s." +#: parser/parse_agg.c:342 +msgid "aggregates not allowed in JOIN conditions" +msgstr "agregação não é permitida nas condições JOIN" -#: replication/libpqwalreceiver/libpqwalreceiver.c:152 -#, fuzzy, c-format -msgid "timeline %u of the primary does not match recovery target timeline %u" -msgstr "" -"linha do tempo solicitada %u do servidor primário não combina com linha do tempo %u alvo da recuperação" +#: parser/parse_agg.c:363 +msgid "aggregates not allowed in GROUP BY clause" +msgstr "agregação não é permitida na cláusula GROUP BY" -#: replication/libpqwalreceiver/libpqwalreceiver.c:164 -#, fuzzy, c-format -msgid "could not start WAL streaming: %s" -msgstr "não pôde iniciar envio do WAL: %s" +#: parser/parse_agg.c:433 +msgid "aggregate functions 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" -#: replication/libpqwalreceiver/libpqwalreceiver.c:171 -#, fuzzy -msgid "streaming replication successfully connected to primary" -msgstr "replicação em fluxo conectou-se com sucesso ao servidor primário" +#: parser/parse_agg.c:458 +msgid "window functions not allowed in WHERE clause" +msgstr "funções deslizantes não são permitidas na cláusula WHERE" -#: replication/libpqwalreceiver/libpqwalreceiver.c:193 -msgid "socket not open" -msgstr "soquete não está aberto" +#: parser/parse_agg.c:464 +msgid "window functions not allowed in JOIN conditions" +msgstr "funções deslizantes não são permitidas nas condições JOIN" -#: replication/libpqwalreceiver/libpqwalreceiver.c:233 -#, c-format -msgid "select() failed: %m" -msgstr "select() falhou: %m" +#: parser/parse_agg.c:470 +msgid "window functions not allowed in HAVING clause" +msgstr "funções deslizantes não são permitidas na cláusula WHERE" -#: replication/libpqwalreceiver/libpqwalreceiver.c:364 -#: replication/libpqwalreceiver/libpqwalreceiver.c:386 -#: replication/libpqwalreceiver/libpqwalreceiver.c:391 -#, fuzzy, c-format -msgid "could not receive data from WAL stream: %s" -msgstr "não pôde receber dados do stream do WAL: %s\n" +#: parser/parse_agg.c:483 +msgid "window functions not allowed in GROUP BY clause" +msgstr "funções deslizantes não são permitidas na cláusula GROUP BY" -#: replication/libpqwalreceiver/libpqwalreceiver.c:382 -msgid "replication terminated by primary server" -msgstr "replicação terminada pelo servidor primário" +#: parser/parse_agg.c:502 parser/parse_agg.c:515 +msgid "window functions not allowed in window definition" +msgstr "" +"funções deslizantes não são permitidas na definição de função deslizante" -#: bootstrap/bootstrap.c:297 +#: parser/parse_agg.c:673 #, c-format -msgid "%s: invalid command-line arguments\n" -msgstr "%s: argumentos de linha de comando inválidos\n" +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" -#: port/pg_shmem.c:147 port/sysv_shmem.c:147 +#: parser/parse_agg.c:679 #, c-format -msgid "could not create shared memory segment: %m" -msgstr "não pôde criar segmento de memória compartilhada: %m" +msgid "subquery uses ungrouped column \"%s.%s\" from outer query" +msgstr "subconsulta utiliza coluna desagrupada \"%s.%s\" na consulta externa" -#: port/pg_shmem.c:148 port/sysv_shmem.c:148 +#: parser/parse_node.c:83 #, 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 "target lists can have at most %d entries" +msgstr "listas de alvos podem ter no máximo %d entradas" -#: port/pg_shmem.c:152 port/sysv_shmem.c:152 +#: parser/parse_node.c:252 #, 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_buffers " -"parameter (currently %d) and/or its max_connections parameter (currently " -"%d).\n" -"If the request size is already small, it's possible that it is less than " -"your kernel's SHMMIN parameter, in which case raising the request size or " -"reconfiguring SHMMIN is called for.\n" -"The PostgreSQL documentation contains more information about shared memory " -"configuration." +msgid "cannot subscript type %s because it is not an array" msgstr "" -"Esse erro usualmente significa que a requisição do PostgreSQL por segmento " -"de memória compartilhada excedeu o parâmetro do kernel SHMMAX. Você pode " -"reduzir o tamanho requisitado ou configurar o kernel novamente com um valor " -"maior de SHMMAX. Para reduzir o tamanho requisitado (atualmente %lu bytes), " -"reduza o parâmetro shared_buffers do PostgreSQL (atualmente %d) e/ou " -"parâmetro max_connections (atualmente %d).\n" -"Se o tamanho requisitado já está pequeno, é possível que ele seja menor do " -"que o parâmetro SHMMIN do kernel, nesse caso aumente o tamanho da requisição " -"ou configure SHMMIN novamente.\n" -"A documentação do PostgreSQL contém informações adicionais sobre " -"configuração de memória compartilhada." +"tipo do índice de uma matriz não pode ser %s porque ele não é uma matriz" + +#: parser/parse_node.c:355 parser/parse_node.c:382 +msgid "array subscript must have type integer" +msgstr "índice da matriz deve ser do tipo integer" -#: port/pg_shmem.c:165 port/sysv_shmem.c:165 +#: parser/parse_node.c:406 #, 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_buffers parameter (currently %d) and/or " -"its max_connections parameter (currently %d).\n" -"The PostgreSQL documentation contains more information about shared memory " -"configuration." -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, ou excedeu o parâmetro SHMALL do kernel. Para reduzir o tamanho requisitado (atualmente %lu bytes), reduza o " -"parâmetro shared_buffers do PostgreSQL (atualmente %d) e/ou parâmetro " -"max_connections (atualmente %d).\n" -"A documentação do PostgreSQL contém informações adicionais sobre " -"configuração de memória compartilhada." +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" -#: port/pg_shmem.c:176 port/sysv_shmem.c:176 +#: parser/parse_func.c:147 #, 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), by reducing its shared_buffers parameter (currently " -"%d) and/or its max_connections parameter (currently %d).\n" -"The PostgreSQL documentation contains more information about shared memory " -"configuration." -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. Se você não pode aumentar " -"o limite de memória compartilhada, reduza o tamanho de memória compartilhada " -"requisitada pelo PostgreSQL (atualmente %lu bytes), reduzindo o parâmetro " -"shared_buffers (atualmente %d) e/ou parâmetro max_connections (atualmente " -"%d).\n" -"A documentação do PostgreSQL contém informações adicionais sobre " -"configuração de memória compartilhada." +msgid "argument name \"%s\" used more than once" +msgstr "nome de argumento \"%s\" utilizado mais de uma vez" + +#: parser/parse_func.c:158 +msgid "positional argument cannot follow named argument" +msgstr "argumento posicional não pode seguir argumento nomeado" -#: port/pg_shmem.c:431 port/sysv_shmem.c:431 +#: parser/parse_func.c:236 #, c-format -msgid "could not stat data directory \"%s\": %m" -msgstr "não pôde executar stat no diretório de dados \"%s\": %m" +msgid "%s(*) specified, but %s is not an aggregate function" +msgstr "%s(*) especificado, mas %s não é uma função de agregação" -#: port/pg_sema.c:114 port/sysv_sema.c:114 +#: parser/parse_func.c:243 #, c-format -msgid "could not create semaphores: %m" -msgstr "não pôde criar semáforos: %m" +msgid "DISTINCT specified, but %s is not an aggregate function" +msgstr "DISTINCT especificado, mas %s não é uma função de agregação" -#: port/pg_sema.c:115 port/sysv_sema.c:115 +#: parser/parse_func.c:249 #, c-format -msgid "Failed system call was semget(%lu, %d, 0%o)." -msgstr "Falhou ao executar chamada de sistema semget(%lu, %d, 0%o)." +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" -#: port/pg_sema.c:119 port/sysv_sema.c:119 +#: parser/parse_func.c:255 #, 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." +"OVER specified, but %s is not a window function nor an aggregate function" msgstr "" -"Esse erro *não* significa que você está sem espaço no disco.\n" -"Isso ocorre quando o número máximo de conjuntos de semáforos (SEMMNI) atinge " -"o limite do sistema ou o sistema atinge o número máximo de semáforos " -"(SEMMNS). Você precisa aumentar o parâmetro do kernel que trata disso. " -"Alternativamente, reduza o consumo de semáforos do PostgreSQL reduzindo o " -"parâmetro max_connections (atualmente %d).\n" -"A documentação do PostgreSQL contém informações adicionais sobre como " -"configurar seu sistema para PostgreSQL." +"OVER especificado, mas %s não é uma função deslizante ou função de agregação" -#: port/pg_sema.c:148 port/sysv_sema.c:148 +#: parser/parse_func.c:277 #, c-format +msgid "function %s is not unique" +msgstr "função %s não é única" + +#: parser/parse_func.c:280 msgid "" -"You possibly need to raise your kernel's SEMVMX value to be at least %d. " -"Look into the PostgreSQL documentation for details." +"Could not choose a best candidate function. You might need to add explicit " +"type casts." msgstr "" -"Você possivelmente precisa aumentar o valor SEMVMX do kernel para pelo menos " -"%d. Veja na documentação do PostgreSQL para obter detalhes." +"Não pôde escolher uma função que se enquadra melhor. Você precisa adicionar " +"conversões de tipo explícitas." -#: port/win32/signal.c:189 -#, c-format -msgid "could not create signal listener pipe for pid %d: error code %d" +#: 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 "" -"não pôde criar pipe que espera por sinal para pid %d: código de erro %d" +"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." -#: port/win32/signal.c:269 port/win32/signal.c:301 +#: parser/parse_func.c:302 +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:412 parser/parse_func.c:478 #, c-format -msgid "could not create signal listener pipe: error code %d; retrying\n" +msgid "%s(*) must be used to call a parameterless aggregate function" msgstr "" -"não pôde criar pipe que espera por sinal: código de erro %d; tentando " -"novamente\n" +"%s(*) deve ser utilizado para chamar uma função de agregação sem parâmetros" -#: port/win32/signal.c:312 +#: parser/parse_func.c:419 +msgid "aggregates cannot return sets" +msgstr "agregações não podem retornar conjuntos" + +#: parser/parse_func.c:431 +msgid "aggregates cannot use named arguments" +msgstr "agregações não podem utilizar argumentos nomeados" + +#: parser/parse_func.c:450 +msgid "window function call requires an OVER clause" +msgstr "chamada de função deslizante requer uma cláusula OVER" + +#: parser/parse_func.c:468 +msgid "DISTINCT is not implemented for window functions" +msgstr "DISTINCT não está implementado para funções deslizantes" + +#: parser/parse_func.c:488 +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:494 +msgid "window functions cannot return sets" +msgstr "funções deslizantes não podem retornar conjuntos" + +#: parser/parse_func.c:505 +msgid "window functions cannot use named arguments" +msgstr "funções deslizantes não podem utilizar argumentos nomeados" + +#: parser/parse_func.c:1589 #, c-format -msgid "could not create signal dispatch thread: error code %d\n" -msgstr "não pôde criar thread emissor de sinal: código de erro %d\n" +msgid "aggregate %s(*) does not exist" +msgstr "agregação %s(*) não existe" -#: port/win32/security.c:43 +#: parser/parse_func.c:1594 #, c-format -msgid "could not open process token: error code %d\n" -msgstr "não pôde abrir informação sobre processo: código de erro %d\n" +msgid "aggregate %s does not exist" +msgstr "agregação %s não existe" -#: port/win32/security.c:63 +#: parser/parse_func.c:1613 #, c-format -msgid "could not get SID for Administrators group: error code %d\n" -msgstr "não pôde obter SID do grupo Administrators: código de erro %d\n" +msgid "function %s is not an aggregate" +msgstr "função %s não é uma agregação" -#: port/win32/security.c:72 +#: parser/parse_clause.c:421 #, c-format -msgid "could not get SID for PowerUsers group: error code %d\n" -msgstr "não pôde obter SID do grupo PowerUsers: código de erro %d\n" +msgid "JOIN/ON clause refers to \"%s\", which is not part of JOIN" +msgstr "cláusula JOIN/ON referencia \"%s\", que não faz parte do JOIN" + +#: parser/parse_clause.c:502 +msgid "subquery in FROM cannot have SELECT INTO" +msgstr "subconsulta no FROM não pode ter SELECT INTO" + +#: parser/parse_clause.c:524 +msgid "subquery in FROM cannot refer to other relations of same query level" +msgstr "" +"subconsulta no FROM não pode referenciar outras relações do mesmo nível da " +"consulta" + +#: parser/parse_clause.c:580 +msgid "" +"function expression in FROM cannot refer to other relations of same query " +"level" +msgstr "" +"expressão da função no FROM não pode referenciar outras relações do mesmo " +"nível da consulta" -#: port/win32_sema.c:94 -#, c-format -msgid "could not create semaphore: error code %d" -msgstr "não pôde criar semáforo: código de erro %d" +#: parser/parse_clause.c:593 +msgid "cannot use aggregate function in function expression in FROM" +msgstr "não pode utilizar função de agregação na expressão da função no FROM" -#: port/win32_sema.c:161 -#, c-format -msgid "could not lock semaphore: error code %d" -msgstr "não pôde bloquear semáforo: código de erro %d" +#: parser/parse_clause.c:600 +msgid "cannot use window function in function expression in FROM" +msgstr "não pode utilizar função deslizante na expressão da função no FROM" -#: port/win32_sema.c:174 +#: parser/parse_clause.c:877 #, c-format -msgid "could not unlock semaphore: error code %d" -msgstr "não pôde desbloquear semáforo: código de erro %d" +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" -#: port/win32_sema.c:203 +#: parser/parse_clause.c:892 #, c-format -msgid "could not try-lock semaphore: error code %d" -msgstr "não pôde tentar bloquear semáforo: código de erro %d" +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" -#: port/win32_shmem.c:168 port/win32_shmem.c:203 port/win32_shmem.c:224 +#: parser/parse_clause.c:901 #, c-format -msgid "could not create shared memory segment: %lu" -msgstr "não pôde criar segmento de memória compartilhada: %lu" +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" -#: port/win32_shmem.c:169 +#: parser/parse_clause.c:915 #, c-format -msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)." +msgid "common column name \"%s\" appears more than once in right table" msgstr "" -"Falhou ao executar chamada de sistema CreateFileMapping(size=%lu, name=%s)." - -#: port/win32_shmem.c:193 -msgid "pre-existing shared memory block is still in use" -msgstr "bloco de memória compartilhada pré-existente ainda está em uso" +"nome de coluna comum \"%s\" aparece mais de uma vez na tabela à direita" -#: port/win32_shmem.c:194 -msgid "" -"Check if there are any old server processes still running, and terminate " -"them." +#: parser/parse_clause.c:924 +#, c-format +msgid "column \"%s\" specified in USING clause does not exist in right table" msgstr "" -"Verifique se ainda há processos servidor antigos sendo executados, e termine-" -"os." - -#: port/win32_shmem.c:204 -msgid "Failed system call was DuplicateHandle." -msgstr "Falhou ao executar chamada de sistema DuplicateHandle." - -#: port/win32_shmem.c:225 -msgid "Failed system call was MapViewOfFileEx." -msgstr "Falhou ao executar chamada de sistema MapViewOfFileEx." +"coluna \"%s\" especificada na cláusula USING não existe na tabela à direita" -#: tsearch/dict_synonym.c:119 +#: parser/parse_clause.c:981 #, c-format -msgid "unrecognized synonym parameter: \"%s\"" -msgstr "parâmetro desconhecido do dicionário de sinônimos: \"%s\"" - -#: tsearch/dict_synonym.c:126 -msgid "missing Synonyms parameter" -msgstr "faltando parâmetro Synonyms" +msgid "column alias list for \"%s\" has too many entries" +msgstr "lista de aliases de coluna para \"%s\" tem muitas entradas" -#: tsearch/dict_synonym.c:133 +#. translator: %s is name of a SQL construct, eg LIMIT +#: parser/parse_clause.c:1228 #, c-format -msgid "could not open synonym file \"%s\": %m" -msgstr "não pôde abrir arquivo de sinônimos \"%s\": %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 "palavra é muito longa para ser indexada" +msgid "argument of %s must not contain variables" +msgstr "argumento do %s não deve conter variáveis" -#: tsearch/ts_parse.c:392 tsearch/ts_parse.c:399 tsearch/ts_parse.c:562 -#: tsearch/ts_parse.c:569 +#. translator: %s is name of a SQL construct, eg LIMIT +#: parser/parse_clause.c:1239 #, c-format -msgid "Words longer than %d characters are ignored." -msgstr "Palavras maiores do que %d caracteres são ignoradas." +msgid "argument of %s must not contain aggregate functions" +msgstr "argumento do %s não deve conter funções de agregação" -#: tsearch/dict_ispell.c:52 tsearch/dict_thesaurus.c:615 -msgid "multiple DictFile parameters" -msgstr "múltiplos parâmetros DictFile" +#. 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 "argumento do %s não deve conter funções deslizantes" -#: tsearch/dict_ispell.c:63 -msgid "multiple AffFile parameters" -msgstr "múltiplos parâmetros AffFile" +#. 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\" é ambíguo" -#: tsearch/dict_ispell.c:82 +#. translator: %s is name of a SQL construct, eg ORDER BY +#: parser/parse_clause.c:1391 #, c-format -msgid "unrecognized Ispell parameter: \"%s\"" -msgstr "parâmetro desconhecido do Ispell: \"%s\"" +msgid "non-integer constant in %s" +msgstr "constante não-inteira em %s" -#: tsearch/dict_ispell.c:96 -msgid "missing AffFile parameter" -msgstr "faltando parâmetro AffFile" +#. 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 "posição %2$d do %1$s não está na lista de seleção" -#: tsearch/dict_ispell.c:102 tsearch/dict_thesaurus.c:639 -msgid "missing DictFile parameter" -msgstr "faltando parâmetro DictFile" +#: parser/parse_clause.c:1625 +#, c-format +msgid "window \"%s\" is already defined" +msgstr "deslizante \"%s\" já está definido" -#: tsearch/ts_utils.c:53 +#: parser/parse_clause.c:1684 #, c-format -msgid "invalid text search configuration file name \"%s\"" -msgstr "nome de arquivo de configuração de busca textual \"%s\" é inválido" +msgid "cannot override PARTITION BY clause of window \"%s\"" +msgstr "não pode substituir cláusula PARTITION BY do deslizante \"%s\"" -#: tsearch/ts_utils.c:91 +#: parser/parse_clause.c:1696 #, c-format -msgid "could not open stop-word file \"%s\": %m" -msgstr "não pôde abrir arquivo de palavras ignoradas \"%s\": %m" +msgid "cannot override ORDER BY clause of window \"%s\"" +msgstr "não pode substituir cláusula ORDER BY do deslizante \"%s\"" -#: tsearch/wparser_def.c:2533 +#: parser/parse_clause.c:1726 parser/parse_clause.c:1732 #, c-format -msgid "unrecognized headline parameter: \"%s\"" -msgstr "parâmetro de destaque desconhecido: \"%s\"" +msgid "cannot copy window \"%s\" because it has a frame clause" +msgstr "não pode copiar deslizante \"%s\" porque ele tem uma cláusula frame" -#: tsearch/wparser_def.c:2542 -msgid "MinWords should be less than MaxWords" -msgstr "MinWords deve ser menor do que MaxWords" +#: parser/parse_clause.c:1734 +msgid "Omit the parentheses in this OVER clause." +msgstr "Omita os parênteses nesta cláusula OVER." -#: tsearch/wparser_def.c:2546 -msgid "MinWords should be positive" -msgstr "MinWords deve ser positivo" +#: parser/parse_clause.c:1800 +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" -#: tsearch/wparser_def.c:2550 -msgid "ShortWord should be >= 0" -msgstr "ShortWord deve ser >= 0" +#: parser/parse_clause.c:1801 +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" -#: tsearch/wparser_def.c:2554 -msgid "MaxFragments should be >= 0" -msgstr "MaxFragments deve ser >= 0" +#: parser/parse_clause.c:1887 parser/parse_clause.c:1919 +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" -#: tsearch/dict_thesaurus.c:180 +#: parser/parse_clause.c:2041 #, 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:213 -msgid "unexpected delimiter" -msgstr "delimitador inesperado" - -#: tsearch/dict_thesaurus.c:263 tsearch/dict_thesaurus.c:279 -msgid "unexpected end of line or lexeme" -msgstr "fim de linha ou lexema inesperado" - -#: tsearch/dict_thesaurus.c:288 -msgid "unexpected end of line" -msgstr "fim de linha inesperado" +msgid "operator %s is not a valid ordering operator" +msgstr "operador %s não é um operador de ordenação válido" -#: tsearch/dict_thesaurus.c:412 -#, c-format +#: parser/parse_clause.c:2043 msgid "" -"thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)" +"Ordering operators must be \"<\" or \">\" members of btree operator families." msgstr "" -"palavra amostrada do tesauro \"%s\" não é reconhecida pelo sub-dicionário " -"(regra %d)" +"Operadores de ordenação devem ser membros \"<\" ou \">\" das famílias de " +"operadores de árvore B." -#: tsearch/dict_thesaurus.c:418 +#: parser/parse_cte.c:42 #, 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:421 -msgid "Use \"?\" to represent a stop word within a sample phrase." +msgid "" +"recursive reference to query \"%s\" must not appear within its non-recursive " +"term" msgstr "" -"Utilize \"?\" para representar uma palavra ignorada dentro de uma frase " -"amostrada." +"referência recursiva para consulta \"%s\" não deve aparecer no seu termo não " +"recursivo" -#: tsearch/dict_thesaurus.c:567 +#: parser/parse_cte.c:44 #, c-format -msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)" -msgstr "palavra substituta do tesauro \"%s\" é uma palavra ignorada (regra %d)" +msgid "recursive reference to query \"%s\" must not appear within a subquery" +msgstr "" +"referência recursiva para consulta \"%s\" não deve aparecer em uma " +"subconsulta" -#: tsearch/dict_thesaurus.c:574 +#: parser/parse_cte.c:46 #, c-format msgid "" -"thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)" +"recursive reference to query \"%s\" must not appear within an outer join" msgstr "" -"palavra substituta do tesauro \"%s\" não é reconhecida pelo sub-dicionário " -"(regra %d)" - -#: tsearch/dict_thesaurus.c:586 -#, c-format -msgid "thesaurus substitute phrase is empty (rule %d)" -msgstr "frase substituta do tesauro está vazia (regra %d)" - -#: tsearch/dict_thesaurus.c:624 -msgid "multiple Dictionary parameters" -msgstr "múltiplos parâmetros Dictionary" +"referência recursiva para consulta \"%s\" não deve aparecer em uma junção " +"externa" -#: tsearch/dict_thesaurus.c:631 +#: parser/parse_cte.c:48 #, c-format -msgid "unrecognized Thesaurus parameter: \"%s\"" -msgstr "parâmetro desconhecido do dicionário de tesauros: \"%s\"" - -#: tsearch/dict_thesaurus.c:643 -msgid "missing Dictionary parameter" -msgstr "faltando parâmetro Dictionary" - -#: tsearch/wparser.c:314 -msgid "text search parser does not support headline creation" -msgstr "analisador de busca textual não suporta a criação de destaques" +msgid "recursive reference to query \"%s\" must not appear within INTERSECT" +msgstr "" +"referência recursiva para consulta \"%s\" não deve aparecer em um INTERSECT" -#: tsearch/spell.c:204 +#: parser/parse_cte.c:50 #, c-format -msgid "could not open dictionary file \"%s\": %m" -msgstr "não pôde abrir arquivo de dicionário \"%s\": %m" - -#: tsearch/spell.c:522 tsearch/spell.c:772 tsearch/spell.c:792 -msgid "multibyte flag character is not allowed" -msgstr "caractere marcador multibyte não é permitido" +msgid "recursive reference to query \"%s\" must not appear within EXCEPT" +msgstr "" +"referência recursiva para consulta \"%s\" não deve aparecer em um EXCEPT" -#: tsearch/spell.c:557 tsearch/spell.c:615 tsearch/spell.c:710 +#: parser/parse_cte.c:132 #, c-format -msgid "could not open affix file \"%s\": %m" -msgstr "não pôde abrir arquivo de afixos \"%s\": %m" +msgid "WITH query name \"%s\" specified more than once" +msgstr "nome da consulta WITH \"%s\" foi especificado mais de uma vez" -#: tsearch/spell.c:603 -msgid "Ispell dictionary supports only default flag value" -msgstr "dicionário Ispell suporta somente valor de marcador padrão" +#: parser/parse_cte.c:259 +msgid "subquery in WITH cannot have SELECT INTO" +msgstr "subconsulta no WITH não pode ter SELECT INTO" -#: tsearch/spell.c:803 -msgid "wrong affix file format for flag" -msgstr "formato de arquivo de afixos incorreto para marcador" +#: parser/parse_cte.c:271 +msgid "" +"WITH clause containing a data-modifying statement must be at the top level" +msgstr "" +"cláusula WITH contendo um comando que modifica dados deve estar no nível " +"superior" -#: tsearch/ts_locale.c:168 +#: parser/parse_cte.c:320 #, c-format -msgid "line %d of configuration file \"%s\": \"%s\"" -msgstr "linha %d do arquivo de configuração \"%s\": \"%s\"" +msgid "" +"recursive query \"%s\" column %d has type %s in non-recursive term but type " +"%s overall" +msgstr "" +"coluna %2$d da consulta recursiva \"%1$s\" tem tipo %3$s no termo não " +"recursivo mas o tipo %4$s no restante" + +#: parser/parse_cte.c:326 +msgid "Cast the output of the non-recursive term to the correct type." +msgstr "Converta a saída do termo não recursivo para o tipo correto." -#: tsearch/ts_locale.c:173 libpq/hba.c:653 libpq/hba.c:669 libpq/hba.c:715 -#: libpq/hba.c:738 libpq/hba.c:750 libpq/hba.c:763 libpq/hba.c:778 -#: libpq/hba.c:825 libpq/hba.c:848 libpq/hba.c:865 libpq/hba.c:878 -#: libpq/hba.c:894 libpq/hba.c:909 libpq/hba.c:949 libpq/hba.c:981 -#: libpq/hba.c:992 libpq/hba.c:1004 libpq/hba.c:1015 libpq/hba.c:1032 -#: libpq/hba.c:1053 libpq/hba.c:1082 libpq/hba.c:1094 libpq/hba.c:1107 -#: libpq/hba.c:1141 libpq/hba.c:1215 libpq/hba.c:1233 libpq/hba.c:1254 -#: libpq/hba.c:1285 libpq/hba.c:1295 +#: parser/parse_cte.c:331 #, c-format -msgid "line %d of configuration file \"%s\"" -msgstr "linha %d do arquivo de configuração \"%s\"" +msgid "" +"recursive query \"%s\" column %d has collation \"%s\" in non-recursive term " +"but collation \"%s\" overall" +msgstr "" +"coluna %2$d da consulta recursiva \"%1$s\" tem ordenação %3$s no termo não " +"recursivo mas a ordenação %4$s no restante" -#: tsearch/ts_locale.c:288 +#: parser/parse_cte.c:335 +msgid "Use the COLLATE clause to set the collation of the non-recursive term." +msgstr "" +"Utilize a cláusula COLLATE para definir a ordenação do termo não recursivo." + +#: parser/parse_cte.c:426 #, 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" +msgid "WITH query \"%s\" has %d columns available but %d columns specified" +msgstr "" +"consulta WITH \"%s\" tem %d colunas disponíveis mas %d colunas foram " +"especificadas" -#: tsearch/dict_simple.c:59 -msgid "multiple Accept parameters" -msgstr "múltiplos parâmetros Accept" +#: parser/parse_cte.c:606 +msgid "mutual recursion between WITH items is not implemented" +msgstr "recursão mútua entre itens WITH não está implementada" -#: tsearch/dict_simple.c:67 +#: parser/parse_cte.c:658 #, c-format -msgid "unrecognized simple dictionary parameter: \"%s\"" -msgstr "parâmetro desconhecido do dicionário simples: \"%s\"" +msgid "recursive query \"%s\" must not contain data-modifying statements" +msgstr "consulta recursiva \"%s\" não deve conter comandos que modificam dados" -#: storage/ipc/shmem.c:346 storage/ipc/shmem.c:399 +#: parser/parse_cte.c:666 #, c-format msgid "" -"not enough shared memory for data structure \"%s\" (%lu bytes requested)" +"recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] " +"recursive-term" msgstr "" -"não há memória compartilhada suficiente para estrutura de dados \"%s\" (%lu " -"bytes solicitados)" +"consulta recursiva \"%s\" não tem a forma termo-não-recursivo UNION [ALL] " +"termo-recursivo" -#: storage/ipc/shmem.c:365 -#, 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\"" +#: parser/parse_cte.c:710 +msgid "ORDER BY in a recursive query is not implemented" +msgstr "ORDER BY em uma consulta recursiva não está implementado" -#: storage/ipc/shmem.c:380 -#, 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" +#: parser/parse_cte.c:716 +msgid "OFFSET in a recursive query is not implemented" +msgstr "OFFSET em uma consulta recursiva não está implementado" -#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446 -msgid "requested shared memory size overflows size_t" -msgstr "tamanho de memória compartilhada requisitada ultrapassa size_t" +#: parser/parse_cte.c:722 +msgid "LIMIT in a recursive query is not implemented" +msgstr "LIMIT em uma consulta recursiva não está implementado" -#: storage/ipc/procarray.c:694 -msgid "consistent state delayed because recovery snapshot incomplete" -msgstr "" +#: parser/parse_cte.c:728 +msgid "FOR UPDATE/SHARE in a recursive query is not implemented" +msgstr "FOR UPDATE/SHARE em uma consulta recursiva não está implementado" -#: storage/lmgr/lock.c:515 +#: parser/parse_cte.c:785 #, c-format -msgid "" -"cannot acquire lock mode %s on database objects while recovery is in progress" +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/analyze.c:472 +msgid "INSERT ... SELECT cannot specify INTO" +msgstr "INSERT ... SELECT não pode especificar INTO" + +#: parser/analyze.c:565 parser/analyze.c:1071 +msgid "VALUES lists must all be the same length" +msgstr "listas de VALUES devem ser todas do mesmo tamanho" + +#: parser/analyze.c:607 parser/analyze.c:1212 +msgid "VALUES must not contain table references" +msgstr "VALUES não devem conter referências a tabelas" + +#: parser/analyze.c:621 parser/analyze.c:1226 +msgid "VALUES must not contain OLD or NEW references" +msgstr "VALUES não devem conter referências a OLD ou NEW" + +#: parser/analyze.c:622 parser/analyze.c:1227 +msgid "Use SELECT ... UNION ALL ... instead." +msgstr "Ao invés disso utilize SELECT ... UNION ALL ... ." + +#: parser/analyze.c:726 parser/analyze.c:1239 +msgid "cannot use aggregate function in VALUES" +msgstr "não pode utilizar função de agregação em VALUES" + +#: parser/analyze.c:732 parser/analyze.c:1245 +msgid "cannot use window function in VALUES" +msgstr "não pode utilizar função deslizante em VALUES" + +#: parser/analyze.c:766 +msgid "INSERT has more expressions than target columns" +msgstr "INSERT tem mais expressões do que colunas alvo" + +#: parser/analyze.c:784 +msgid "INSERT has more target columns than expressions" +msgstr "INSERT tem mais colunas alvo do que expressões" -#: storage/lmgr/lock.c:517 +#: parser/analyze.c:788 msgid "" -"Only RowExclusiveLock or less can be acquired on database objects during " -"recovery." +"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ê acidentalmente utilizou parênteses " +"extras?" -#: storage/lmgr/lock.c:611 storage/lmgr/lock.c:680 storage/lmgr/lock.c:2499 -#: storage/lmgr/lock.c:2564 -msgid "You might need to increase max_locks_per_transaction." -msgstr "Você pode precisar aumentar max_locks_per_transaction." +#: parser/analyze.c:1085 +msgid "DEFAULT can only appear in a VALUES list within INSERT" +msgstr "DEFAULT só pode aparecer em uma lista de VALUES com INSERT" -#: storage/lmgr/lock.c:2120 -msgid "Not enough memory for reassigning the prepared transaction's locks." -msgstr "" -"Memória insuficiente para atribuir os bloqueios de uma transação preparada." +#: parser/analyze.c:1193 parser/analyze.c:2421 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES" +msgstr "SELECT FOR UPDATE/SHARE não pode ser aplicado a VALUES" -#: storage/lmgr/proc.c:1040 -#, c-format -msgid "" -"process %d avoided deadlock for %s on %s by rearranging queue order after " -"%ld.%03d ms" +#: parser/analyze.c:1456 +msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" +msgstr "cláusula UNION/INTERSECT/EXCEPT ORDER BY é inválida" + +#: parser/analyze.c:1457 +msgid "Only result column names can be used, not expressions or functions." msgstr "" -"processo %d evitou impasse por %s em %s ao reorganizar a ordem da fila após " -"%ld.%03d ms" +"Somente nomes de colunas resultantes podem ser utilizadas, e não expressões " +"ou funções." -#: storage/lmgr/proc.c:1052 -#, c-format +#: parser/analyze.c:1458 msgid "" -"process %d detected deadlock while waiting for %s on %s after %ld.%03d ms" +"Add the expression/function to every SELECT, or move the UNION into a FROM " +"clause." msgstr "" -"processo %d detectou impasse enquanto esperava por %s em %s após %ld.%03d ms" - -#: storage/lmgr/proc.c:1058 -#, 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" +"Adicione a expressão/função a todos SELECTs ou mova o UNION para uma " +"cláusula FROM." -#: storage/lmgr/proc.c:1062 -#, 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" +#: parser/analyze.c:1533 +msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" +msgstr "INTO só é permitido no primeiro SELECT do UNION/INTERSECT/EXCEPT" -#: storage/lmgr/proc.c:1078 -#, 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" +#: parser/analyze.c:1593 +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" -#: storage/lmgr/lmgr.c:717 +#: parser/analyze.c:1681 #, c-format -msgid "relation %u of database %u" -msgstr "relação %u do banco de dados %u" +msgid "each %s query must have the same number of columns" +msgstr "cada consulta %s deve ter o mesmo número de colunas" -#: storage/lmgr/lmgr.c:723 -#, c-format -msgid "extension of relation %u of database %u" -msgstr "extensão da relação %u do banco de dados %u" +#: parser/analyze.c:1937 +msgid "CREATE TABLE AS specifies too many column names" +msgstr "CREATE TABLE AS especificou muitos nomes de colunas" -#: storage/lmgr/lmgr.c:729 -#, c-format -msgid "page %u of relation %u of database %u" -msgstr "página %u da relação %u do banco de dados %u" +#: parser/analyze.c:1995 +msgid "cannot use aggregate function in UPDATE" +msgstr "não pode utilizar função de agregação em UPDATE" -#: storage/lmgr/lmgr.c:736 -#, 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" +#: parser/analyze.c:2001 +msgid "cannot use window function in UPDATE" +msgstr "não pode utilizar função deslizante em UPDATE" -#: storage/lmgr/lmgr.c:744 -#, c-format -msgid "transaction %u" -msgstr "transação %u" +#: parser/analyze.c:2110 +msgid "cannot use aggregate function in RETURNING" +msgstr "não pode utilizar função de agregação em RETURNING" -#: storage/lmgr/lmgr.c:749 -#, c-format -msgid "virtual transaction %d/%u" -msgstr "transação virtual %d/%u" +#: parser/analyze.c:2116 +msgid "cannot use window function in RETURNING" +msgstr "não pode utilizar função deslizante em RETURNING" -#: storage/lmgr/lmgr.c:755 -#, c-format -msgid "object %u of class %u of database %u" -msgstr "objeto %u da classe %u do banco de dados %u" +#: parser/analyze.c:2135 +msgid "RETURNING cannot contain references to other relations" +msgstr "RETURNING não pode conter referências a outras relações" -#: storage/lmgr/lmgr.c:763 -#, c-format -msgid "user lock [%u,%u,%u]" -msgstr "bloqueio do usuário [%u,%u,%u]" +#: parser/analyze.c:2174 +msgid "cannot specify both SCROLL and NO SCROLL" +msgstr "não pode especificar SCROLL e NO SCROLL" -#: storage/lmgr/lmgr.c:770 -#, c-format -msgid "advisory lock [%u,%u,%u,%u]" -msgstr "bloqueio sob aviso [%u,%u,%u,%u]" +#: parser/analyze.c:2188 +msgid "DECLARE CURSOR cannot specify INTO" +msgstr "DECLARE CURSOR não pode especificar INTO" -#: storage/lmgr/lmgr.c:778 -#, c-format -msgid "unrecognized locktag type %d" -msgstr "tipo de marcação de bloqueio %d desconhecido" +#: parser/analyze.c:2200 +msgid "DECLARE CURSOR must not contain data-modifying statements in WITH" +msgstr "DECLARE CURSOR não deve conter comandos que modificam dados no WITH" -#: storage/lmgr/deadlock.c:915 -#, c-format -msgid "Process %d waits for %s on %s; blocked by process %d." -msgstr "Processo %d espera por %s em %s; bloqueado pelo processo %d." +#: parser/analyze.c:2206 +msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE não é suportado" -#: storage/lmgr/deadlock.c:934 -#, c-format -msgid "Process %d: %s" -msgstr "Processo %d: %s" +#: parser/analyze.c:2207 +msgid "Holdable cursors must be READ ONLY." +msgstr "Cursores duráveis devem ser READ ONLY." -#: storage/lmgr/deadlock.c:941 -msgid "deadlock detected" -msgstr "impasse detectado" +#: parser/analyze.c:2220 +msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE não é suportado" -#: storage/lmgr/deadlock.c:944 -msgid "See server log for query details." -msgstr "Veja log do servidor para obter detalhes das consultas." +#: parser/analyze.c:2221 +msgid "Insensitive cursors must be READ ONLY." +msgstr "Cursores insensíveis devem ser READ ONLY." -#: storage/file/fd.c:402 -#, c-format -msgid "getrlimit failed: %m" -msgstr "getrlimit falhou: %m" +#: parser/analyze.c:2274 +msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause" +msgstr "SELECT FOR UPDATE/SHARE não é permitido com cláusula DISTINCT" -#: storage/file/fd.c:492 -msgid "insufficient file descriptors available to start server process" -msgstr "" -"descritores de arquivo disponíveis são insuficientes para iniciar o processo " -"servidor" +#: parser/analyze.c:2278 +msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause" +msgstr "SELECT FOR UPDATE/SHARE não é permitido com cláusula GROUP BY" -#: storage/file/fd.c:493 -#, c-format -msgid "System allows %d, we need at least %d." -msgstr "Sistema permite %d, nós precisamos pelo menos de %d." +#: parser/analyze.c:2282 +msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause" +msgstr "SELECT FOR UPDATE/SHARE não é permitido com cláusula HAVING" -#: storage/file/fd.c:534 storage/file/fd.c:1418 storage/file/fd.c:1533 -#, c-format -msgid "out of file descriptors: %m; release and retry" -msgstr "sem descritores de arquivo: %m; libere e tente novamente" +#: parser/analyze.c:2286 +msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions" +msgstr "SELECT FOR UPDATE/SHARE não é permitido com funções de agregação" -#: storage/file/fd.c:1067 -#, c-format -msgid "temporary file: path \"%s\", size %lu" -msgstr "arquivo temporário: caminho \"%s\", tamanho %lu" +#: parser/analyze.c:2290 +msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions" +msgstr "SELECT FOR UPDATE/SHARE não é permitido com funções deslizantes" -#: storage/file/fd.c:1592 -#, c-format -msgid "could not read directory \"%s\": %m" -msgstr "não pôde ler diretório \"%s\": %m" +#: parser/analyze.c:2294 +msgid "" +"SELECT FOR UPDATE/SHARE is not allowed with set-returning functions in the " +"target list" +msgstr "" +"SELECT FOR UPDATE/SHARE não é permitido em funções que retornam conjunto na " +"lista de alvos" -#: 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" +#: parser/analyze.c:2373 +msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names" msgstr "" -"ponteiros de página corrompidos: inferior = %u, superior = %u, especial = %u" +"SELECT FOR UPDATE/SHARE deve especificar nomes de relação não qualificados" -#: storage/page/bufpage.c:433 +#: parser/analyze.c:2390 #, c-format -msgid "corrupted item pointer: %u" -msgstr "ponteiro de item corrompido: %u" +msgid "SELECT FOR UPDATE/SHARE cannot be used with foreign table \"%s\"" +msgstr "" +"SELECT FOR UPDATE/SHARE não pode ser utilizado com tabela externa \"%s\"" -#: storage/page/bufpage.c:444 storage/page/bufpage.c:805 -#, c-format -msgid "corrupted item lengths: total %u, available space %u" -msgstr "tamanhos de itens corrompidos: total %u, espaço livre %u" +#: parser/analyze.c:2409 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join" +msgstr "SELECT FOR UPDATE/SHARE não pode ser aplicado em uma junção" -#: storage/page/bufpage.c:642 storage/page/bufpage.c:778 -#, c-format -msgid "corrupted item pointer: offset = %u, size = %u" -msgstr "ponteiro de item corrompido: deslocamento = %u, tamanho = %u" +#: parser/analyze.c:2415 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function" +msgstr "SELECT FOR UPDATE/SHARE não pode ser aplicado a uma função" -#: storage/large_object/inv_api.c:550 storage/large_object/inv_api.c:747 -#, c-format -msgid "large object %u was not opened for writing" -msgstr "objeto grande %u não foi aberto para escrita" +#: parser/analyze.c:2427 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query" +msgstr "SELECT FOR UPDATE/SHARE não pode ser aplicado em uma consulta WITH" -#: storage/large_object/inv_api.c:557 storage/large_object/inv_api.c:754 +#: parser/analyze.c:2441 #, c-format -msgid "large object %u was already dropped" -msgstr "objeto grande %u já foi removido" +msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause" +msgstr "" +"relação \"%s\" na cláusula FOR UPDATE/SHARE não foi encontrada na cláusula " +"FROM" -#: storage/smgr/md.c:371 storage/smgr/md.c:839 +#: parser/parse_param.c:215 #, c-format -msgid "could not truncate file \"%s\": %m" -msgstr "não pôde truncar arquivo \"%s\": %m" +msgid "inconsistent types deduced for parameter $%d" +msgstr "tipos inconsitentes deduzidos do parâmetro $%d" -#: storage/smgr/md.c:439 +#: parser/parse_relation.c:148 #, 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:461 storage/smgr/md.c:621 storage/smgr/md.c:694 -#, fuzzy, c-format -msgid "could not seek to block %u in file \"%s\": %m" -msgstr "não pôde buscar bloco %u no arquivo \"%s\": %m" +msgid "table reference \"%s\" is ambiguous" +msgstr "referência a tabela \"%s\" é ambígua" -#: storage/smgr/md.c:469 +#: parser/parse_relation.c:184 #, c-format -msgid "could not extend file \"%s\": %m" -msgstr "não pôde estender arquivo \"%s\": %m" +msgid "table reference %u is ambiguous" +msgstr "referência a tabela %u é ambígua" -#: storage/smgr/md.c:471 storage/smgr/md.c:478 storage/smgr/md.c:720 -msgid "Check free disk space." -msgstr "Verifique o espaço em disco livre." +#: parser/parse_relation.c:344 +#, c-format +msgid "table name \"%s\" specified more than once" +msgstr "nome da tabela \"%s\" foi especificado mais de uma vez" -#: storage/smgr/md.c:475 +#: parser/parse_relation.c:763 parser/parse_relation.c:1054 +#: parser/parse_relation.c:1441 #, c-format -msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u" +msgid "table \"%s\" has %d columns available but %d columns specified" msgstr "" -"não pôde estender arquivo \"%s\": escreveu somente %d de %d bytes no bloco %u" +"tabela \"%s\" tem %d colunas disponíveis mas %d colunas foram especificadas" -#: storage/smgr/md.c:638 +#: parser/parse_relation.c:793 #, c-format -msgid "could not read block %u in file \"%s\": %m" -msgstr "não pôde ler bloco %u no arquivo \"%s\": %m" +msgid "too many column aliases specified for function %s" +msgstr "muitos aliases de coluna especificados para função %s" -#: storage/smgr/md.c:654 +#: parser/parse_relation.c:859 #, 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" +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." -#: storage/smgr/md.c:711 -#, c-format -msgid "could not write block %u in file \"%s\": %m" -msgstr "não pôde escrever bloco %u no arquivo \"%s\": %m" +#: parser/parse_relation.c:861 +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." -#: storage/smgr/md.c:716 -#, c-format -msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes" +#: parser/parse_relation.c:1134 +msgid "" +"a column definition list is only allowed for functions returning \"record\"" msgstr "" -"não pôde escrever bloco %u no arquivo \"%s\": escreveu somente %d de %d bytes" +"uma lista de definição de colunas somente é permitida para funções que " +"retornam \"record\"" -#: storage/smgr/md.c:815 -#, c-format -msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now" +#: parser/parse_relation.c:1142 +msgid "a column definition list is required for functions returning \"record\"" msgstr "" -"não pôde truncar arquivo \"%s\" para %u blocos: há somente %u blocos agora" +"uma lista de definição de colunas é requerida para funções que retornam " +"\"record\"" -#: storage/smgr/md.c:864 +#: parser/parse_relation.c:1193 #, c-format -msgid "could not truncate file \"%s\" to %u blocks: %m" -msgstr "não pôde truncar arquivo \"%s\" para %u blocos: %m" +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" -#: storage/smgr/md.c:1087 -#, fuzzy, c-format -msgid "could not fsync file \"%s\" but retrying: %m" -msgstr "não pôde executar fsync no arquivo \"%s\": %m" +#: parser/parse_relation.c:1267 +#, 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" -#: storage/smgr/md.c:1586 +#: parser/parse_relation.c:1323 #, c-format -msgid "could not open file \"%s\" (target block %u): %m" -msgstr "não pôde abrir arquivo \"%s\" (bloco alvo %u): %m" +msgid "joins can have at most %d columns" +msgstr "junções podem ter no máximo %d colunas" -#: storage/smgr/md.c:1608 -#, fuzzy, c-format -msgid "could not seek to end of file \"%s\": %m" -msgstr "não pôde buscar no fim do arquivo \"%s\": %m" +#: parser/parse_relation.c:1414 +#, c-format +msgid "WITH query \"%s\" does not have a RETURNING clause" +msgstr "consulta WITH \"%s\" não tem uma cláusula RETURNING" -#: storage/buffer/bufmgr.c:131 storage/buffer/bufmgr.c:235 -msgid "cannot access temporary tables of other sessions" -msgstr "não pode acessar tabelas temporárias de outras sessões" +#: parser/parse_relation.c:2104 +#, c-format +msgid "column %d of relation \"%s\" does not exist" +msgstr "coluna %d da relação \"%s\" não existe" -#: storage/buffer/bufmgr.c:364 +#: parser/parse_relation.c:2489 #, 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" +msgid "invalid reference to FROM-clause entry for table \"%s\"" +msgstr "referência inválida para tabela \"%s\" na cláusula FROM" -#: storage/buffer/bufmgr.c:366 -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." +#: parser/parse_relation.c:2492 +#, c-format +msgid "Perhaps you meant to reference the table alias \"%s\"." +msgstr "Talvez você quisesse referenciar o aliás de tabela \"%s\"." -#: storage/buffer/bufmgr.c:438 +#: parser/parse_relation.c:2494 #, c-format -msgid "invalid page header in block %u of relation %s; zeroing out page" +msgid "" +"There is an entry for table \"%s\", but it cannot be referenced from this " +"part of the query." msgstr "" -"cabeçalho de página é inválido no bloco %u da relação %s; zerando página" +"Há uma entrada para tabela \"%s\", mas ela não pode ser referenciada desta " +"parta da consulta." -#: storage/buffer/bufmgr.c:446 +#: parser/parse_relation.c:2500 #, c-format -msgid "invalid page header in block %u of relation %s" -msgstr "cabeçalho de página é inválido no bloco %u da relação %s" +msgid "missing FROM-clause entry for table \"%s\"" +msgstr "faltando entrada para tabela \"%s\" na cláusula FROM" -#: storage/buffer/bufmgr.c:2706 +#: gram.y:914 #, c-format -msgid "could not write block %u of %s" -msgstr "não pôde escrever bloco %u de %s" +msgid "unrecognized role option \"%s\"" +msgstr "opção de role desconhecida \"%s\"" -#: storage/buffer/bufmgr.c:2708 -msgid "Multiple failures --- write error might be permanent." -msgstr "Falhas múltiplas --- erro de escrita pode ser permanente." +#: gram.y:1300 +msgid "current database cannot be changed" +msgstr "banco de dados atual não pode ser mudado" -#: storage/buffer/bufmgr.c:2729 -#, c-format -msgid "writing block %u of relation %s" -msgstr "escrevendo bloco %u da relação %s" +#: gram.y:1418 gram.y:1433 +msgid "time zone interval must be HOUR or HOUR TO MINUTE" +msgstr "intervalo de zona horária deve ser HOUR ou HOUR TO MINUTE" -#: storage/buffer/localbuf.c:189 -msgid "no empty local buffer available" -msgstr "nenhum buffer local vazio está disponível" +#: gram.y:1438 gram.y:9244 gram.y:11776 +msgid "interval precision specified twice" +msgstr "precisão de interval foi especificada duas vezes" -#: catalog/index.c:582 -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" +#: gram.y:3004 +msgid "CREATE TABLE AS cannot specify INTO" +msgstr "CREATE TABLE AS não pode especificar INTO" -#: catalog/index.c:592 -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" +#: gram.y:4057 +msgid "duplicate trigger events specified" +msgstr "eventos de gatilho duplicados especificados" -#: catalog/index.c:610 -msgid "shared indexes cannot be created after initdb" -msgstr "índices compartilhados não podem ser criados depois do initdb" +#: gram.y:4159 +msgid "conflicting constraint properties" +msgstr "propriedades de restrições conflitantes" -#: catalog/index.c:2430 -msgid "cannot reindex temporary tables of other sessions" -msgstr "não pode reindexar tabelas temporárias de outras sessões" +#: gram.y:4220 +msgid "CREATE ASSERTION is not yet implemented" +msgstr "CREATE ASSERTION ainda não foi implementado" -#: catalog/aclchk.c:196 -msgid "grant options can only be granted to roles" -msgstr "opções de concessão só podem ser concedidas a roles" +#: gram.y:4236 +msgid "DROP ASSERTION is not yet implemented" +msgstr "DROP ASSERTION ainda não foi implementado" -#: catalog/aclchk.c:312 -#, c-format -msgid "no privileges were granted for column \"%s\" of relation \"%s\"" -msgstr "nenhum privilégio foi concedido a coluna \"%s\" da relação \"%s\"" +#: gram.y:4572 +msgid "RECHECK is no longer required" +msgstr "RECHECK não é mais requerido" -#: catalog/aclchk.c:317 -#, c-format -msgid "no privileges were granted for \"%s\"" -msgstr "nenhum privilégio foi concedido a \"%s\"" +#: gram.y:4573 +msgid "Update your data type." +msgstr "Atualize seu tipo de dado." -#: catalog/aclchk.c:325 -#, c-format -msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" -msgstr "" -"nem todos privilégios foram concedidos a coluna \"%s\" da relação \"%s\"" +#: gram.y:7296 gram.y:7302 gram.y:7308 +msgid "WITH CHECK OPTION is not implemented" +msgstr "WITH CHECK OPTION não está implementado" -#: catalog/aclchk.c:330 -#, c-format -msgid "not all privileges were granted for \"%s\"" -msgstr "nem todos privilégios foram concedidos a \"%s\"" +#: gram.y:7984 +msgid "column name list not allowed in CREATE TABLE / AS EXECUTE" +msgstr "lista de colunas não é permitida em CREATE TABLE / AS EXECUTE" -#: catalog/aclchk.c:341 -#, c-format -msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" -msgstr "nenhum privilégio pôde ser revogado da coluna \"%s\" da relação \"%s\"" +#: gram.y:8208 +msgid "number of columns does not match number of values" +msgstr "número de colunas não corresponde ao número de valores" -#: catalog/aclchk.c:346 -#, c-format -msgid "no privileges could be revoked for \"%s\"" -msgstr "nenhum privilégio pôde ser revogado de \"%s\"" +#: gram.y:8658 +msgid "LIMIT #,# syntax is not supported" +msgstr "sintaxe LIMIT #,# não é suportada" -#: catalog/aclchk.c:354 -#, c-format -msgid "" -"not all privileges could be revoked for column \"%s\" of relation \"%s\"" -msgstr "" -"nem todos privilégios podem ser revogados da coluna \"%s\" da relação \"%s\"" +#: gram.y:8659 +msgid "Use separate LIMIT and OFFSET clauses." +msgstr "Utilize cláusulas LIMIT e OFFSET separadas." -#: catalog/aclchk.c:359 -#, c-format -msgid "not all privileges could be revoked for \"%s\"" -msgstr "nem todos privilégios podem ser revogados de \"%s\"" +#: gram.y:8877 +msgid "VALUES in FROM must have an alias" +msgstr "VALUES no FROM deve ter um aliás" -#: catalog/aclchk.c:438 catalog/aclchk.c:927 -#, c-format -msgid "invalid privilege type %s for relation" -msgstr "tipo de privilégio %s é inválido para relação" +#: gram.y:8878 +msgid "For example, FROM (VALUES ...) [AS] foo." +msgstr "Por exemplo, FROM (VALUES ...) [AS] foo." -#: catalog/aclchk.c:442 catalog/aclchk.c:931 -#, c-format -msgid "invalid privilege type %s for sequence" -msgstr "tipo de privilégio %s é inválido para sequência" +#: gram.y:8883 +msgid "subquery in FROM must have an alias" +msgstr "subconsulta no FROM deve ter um aliás" -#: catalog/aclchk.c:446 -#, c-format -msgid "invalid privilege type %s for database" -msgstr "tipo de privilégio %s é inválido para banco de dados" +#: gram.y:8884 +msgid "For example, FROM (SELECT ...) [AS] foo." +msgstr "Por exemplo, FROM (SELECT ...) [AS] foo." -#: catalog/aclchk.c:450 catalog/aclchk.c:935 -#, c-format -msgid "invalid privilege type %s for function" -msgstr "tipo de privilégio %s é inválido para função" +#: gram.y:9370 +msgid "precision for type float must be at least 1 bit" +msgstr "precisão para tipo float deve ser pelo menos 1 bit" -#: catalog/aclchk.c:454 -#, c-format -msgid "invalid privilege type %s for language" -msgstr "tipo de privilégio %s é inválido para linguagem" +#: gram.y:9379 +msgid "precision for type float must be less than 54 bits" +msgstr "precisão para tipo float deve ser menor do que 54 bits" -#: catalog/aclchk.c:458 -#, c-format -msgid "invalid privilege type %s for large object" -msgstr "tipo de privilégio %s é inválido para objeto grande" +#: gram.y:9918 +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" -#: catalog/aclchk.c:462 -#, c-format -msgid "invalid privilege type %s for schema" -msgstr "tipo de privilégio %s é inválido para esquema" +#: gram.y:9923 +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" -#: catalog/aclchk.c:466 -#, c-format -msgid "invalid privilege type %s for tablespace" -msgstr "tipo de privilégio %s é inválido para tablespace" +#: gram.y:10112 +msgid "UNIQUE predicate is not yet implemented" +msgstr "predicado UNIQUE ainda não foi implementado" -#: catalog/aclchk.c:470 -#, c-format -msgid "invalid privilege type %s for foreign-data wrapper" -msgstr "tipo de privilégio %s é inválido para adaptador de dados externo" +#: gram.y:11043 +msgid "RANGE PRECEDING is only supported with UNBOUNDED" +msgstr "RANGE PRECEDING só é suportado com UNBOUNDED" -#: catalog/aclchk.c:474 -#, c-format -msgid "invalid privilege type %s for foreign server" -msgstr "tipo de privilégio %s é inválido para servidor externo" +#: gram.y:11049 +msgid "RANGE FOLLOWING is only supported with UNBOUNDED" +msgstr "RANGE FOLLOWING só é suportado com UNBOUNDED" -#: catalog/aclchk.c:513 -msgid "column privileges are only valid for relations" -msgstr "privilégios de coluna só são válidos para relações" +#: gram.y:11076 gram.y:11099 +msgid "frame start cannot be UNBOUNDED FOLLOWING" +msgstr "início de quadro não pode ser UNBOUNDED FOLLOWING" + +#: gram.y:11081 +msgid "frame 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:11104 +msgid "frame end cannot be UNBOUNDED PRECEDING" +msgstr "fim de quadro não pode ser UNBOUNDED PRECEDING" + +#: gram.y:11110 +msgid "frame starting from current row cannot have preceding rows" +msgstr "quadro iniciando do registro atual não pode ter registros anteriores" + +#: gram.y:11117 +msgid "frame starting from following row cannot have preceding rows" +msgstr "quadro iniciando do próximo registro não pode ter registro anteriores" + +#: gram.y:11751 +msgid "type modifier cannot have parameter name" +msgstr "modificador de tipo não pode ter nome de parâmetro" -#: catalog/aclchk.c:968 -msgid "default privileges cannot be set for columns" -msgstr "privilégios padrão não podem ser definidos para colunas" +#: gram.y:12360 gram.y:12535 +msgid "improper use of \"*\"" +msgstr "uso inválido de \"*\"" -#: catalog/aclchk.c:1767 -#, c-format -msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" -msgstr "sequência \"%s\" só suporta privilégios USAGE, SELECT e UPDATE" +#: gram.y:12598 +msgid "multiple ORDER BY clauses not allowed" +msgstr "múltiplas cláusulas ORDER BY não são permitidas" -#: catalog/aclchk.c:1784 -msgid "invalid privilege type USAGE for table" -msgstr "tipo de privilégio USAGE é inválido para tabela" +#: gram.y:12609 +msgid "multiple OFFSET clauses not allowed" +msgstr "múltiplas cláusulas OFFSET não são permitidas" -#: catalog/aclchk.c:1934 -#, c-format -msgid "invalid privilege type %s for column" -msgstr "tipo de privilégio %s é inválido para coluna" +#: gram.y:12618 +msgid "multiple LIMIT clauses not allowed" +msgstr "múltiplas cláusulas LIMIT não são permitidas" -#: catalog/aclchk.c:1947 -#, c-format -msgid "sequence \"%s\" only supports SELECT column privileges" -msgstr "sequência \"%s\" só suporta privilégios SELECT" +#: gram.y:12627 +msgid "multiple WITH clauses not allowed" +msgstr "múltiplas cláusulas WITH não são permitidas" -#: catalog/aclchk.c:2531 -#, c-format -msgid "language \"%s\" is not trusted" -msgstr "linguagem \"%s\" não é confiável" +#: gram.y:12773 +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" -#: catalog/aclchk.c:2533 -msgid "Only superusers can use untrusted languages." -msgstr "Somente super-usuários podem utilizar linguagens não-confiáveis." +#: gram.y:12874 +msgid "multiple COLLATE clauses not allowed" +msgstr "múltiplas cláusulas COLLATE não são permitidas" -#: catalog/aclchk.c:3040 +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:12912 gram.y:12925 #, c-format -msgid "unrecognized privilege type \"%s\"" -msgstr "tipo de privilégio \"%s\" desconhecido" +msgid "%s constraints cannot be marked DEFERRABLE" +msgstr "restrições %s não podem ser marcadas DEFERRABLE" -#: catalog/aclchk.c:3089 +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:12938 #, c-format -msgid "permission denied for column %s" -msgstr "permissão negada para coluna %s" +msgid "%s constraints cannot be marked NOT VALID" +msgstr "restrições %s não podem ser marcadas NOT VALID" -#: catalog/aclchk.c:3091 +#: parser/parse_type.c:83 #, c-format -msgid "permission denied for relation %s" -msgstr "permissão negada para relação %s" +msgid "improper %%TYPE reference (too few dotted names): %s" +msgstr "referência a %%TYPE é inválida (nomes com poucos pontos): %s" -#: catalog/aclchk.c:3095 +#: parser/parse_type.c:105 #, c-format -msgid "permission denied for database %s" -msgstr "permissão negada para banco de dados %s" +msgid "improper %%TYPE reference (too many dotted names): %s" +msgstr "referência a %%TYPE é inválida (nomes com muitos pontos): %s" -#: catalog/aclchk.c:3097 +#: parser/parse_type.c:127 #, c-format -msgid "permission denied for function %s" -msgstr "permissão negada para função %s" +msgid "type reference %s converted to %s" +msgstr "referência a tipo %s convertido para %s" -#: catalog/aclchk.c:3099 +#: parser/parse_type.c:287 #, c-format -msgid "permission denied for operator %s" -msgstr "permissão negada para operador %s" +msgid "type modifier is not allowed for type \"%s\"" +msgstr "modificador de tipo não é permitido para tipo \"%s\"" -#: catalog/aclchk.c:3101 -#, c-format -msgid "permission denied for type %s" -msgstr "permissão negada para tipo %s" +#: parser/parse_type.c:330 +msgid "type modifiers must be simple constants or identifiers" +msgstr "modificadores de tipo devem ser constantes ou identificadores" -#: catalog/aclchk.c:3103 +#: parser/parse_type.c:641 parser/parse_type.c:740 #, c-format -msgid "permission denied for language %s" -msgstr "permissão negada para linguagem %s" +msgid "invalid type name \"%s\"" +msgstr "nome de tipo \"%s\" é inválido" -#: catalog/aclchk.c:3105 -#, c-format -msgid "permission denied for large object %s" -msgstr "permissão negada para objeto grande %s" +#: scan.l:411 +msgid "unterminated /* comment" +msgstr "comentário /* não foi terminado" -#: catalog/aclchk.c:3107 -#, c-format -msgid "permission denied for schema %s" -msgstr "permissão negada para esquema %s" +#: scan.l:440 +msgid "unterminated bit string literal" +msgstr "cadeia de bits não foi terminada" -#: catalog/aclchk.c:3109 -#, c-format -msgid "permission denied for operator class %s" -msgstr "permissão negada para classe de operadores %s" +#: scan.l:461 +msgid "unterminated hexadecimal string literal" +msgstr "cadeia de caracteres hexadecimal não foi terminada" -#: catalog/aclchk.c:3111 -#, c-format -msgid "permission denied for operator family %s" -msgstr "permissão negada para família de operadores %s" +#: scan.l:511 +msgid "unsafe use of string constant with Unicode escapes" +msgstr "uso inseguro de cadeia de caracteres com escapes Unicode" -#: catalog/aclchk.c:3113 -#, c-format -msgid "permission denied for conversion %s" -msgstr "permissão negada para conversão %s" +#: scan.l:512 +msgid "" +"String constants with Unicode escapes cannot be used when " +"standard_conforming_strings is off." +msgstr "" +"Cadeias de caracteres com escapes Unicode não podem ser utilizadas quando " +"standard_conforming_strings está off." -#: catalog/aclchk.c:3115 -#, c-format -msgid "permission denied for tablespace %s" -msgstr "permissão negada para tablespace %s" +#: scan.l:564 scan.l:572 scan.l:580 scan.l:581 scan.l:582 scan.l:1242 +#: scan.l:1269 scan.l:1273 scan.l:1311 scan.l:1315 scan.l:1337 +msgid "invalid Unicode surrogate pair" +msgstr "par substituto Unicode inválido" -#: catalog/aclchk.c:3117 -#, c-format -msgid "permission denied for text search dictionary %s" -msgstr "permissão negada para dicionário de busca textual %s" +#: scan.l:586 +msgid "invalid Unicode escape" +msgstr "escape Unicode inválido" -#: catalog/aclchk.c:3119 -#, c-format -msgid "permission denied for text search configuration %s" -msgstr "permissão negada para configuração de busca textual %s" +#: scan.l:587 +msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX." +msgstr "Escapes Unicode devem ser \\uXXXX ou \\UXXXXXXXX." -#: catalog/aclchk.c:3121 -#, c-format -msgid "permission denied for foreign-data wrapper %s" -msgstr "permissão negada para adaptador de dados externo %s" +#: scan.l:598 +msgid "unsafe use of \\' in a string literal" +msgstr "uso inseguro de \\' em cadeia de caracteres" -#: catalog/aclchk.c:3123 -#, c-format -msgid "permission denied for foreign server %s" -msgstr "permissão negada para servidor externo %s" +#: scan.l:599 +msgid "" +"Use '' to write quotes in strings. \\' is insecure in client-only encodings." +msgstr "" +"Utilize '' para escrever aspóstrofos em cadias de caracteres. \\' é inseguro " +"em codificações de cliente." -#: catalog/aclchk.c:3129 catalog/aclchk.c:3131 -#, c-format -msgid "must be owner of relation %s" -msgstr "deve ser o dono da relação %s" +#: scan.l:674 +msgid "unterminated dollar-quoted string" +msgstr "cadeia de caracteres entre dólares não foi terminada" -#: catalog/aclchk.c:3133 -#, c-format -msgid "must be owner of sequence %s" -msgstr "deve ser o dono da sequência %s" +#: scan.l:691 scan.l:704 scan.l:720 +msgid "zero-length delimited identifier" +msgstr "identificador delimitado tem tamanho zero" -#: catalog/aclchk.c:3135 -#, c-format -msgid "must be owner of database %s" -msgstr "deve ser o dono do banco de dados %s" +#: scan.l:734 +msgid "unterminated quoted identifier" +msgstr "identificador entre aspas não foi terminado" -#: catalog/aclchk.c:3137 -#, c-format -msgid "must be owner of function %s" -msgstr "deve ser o dono da função %s" +#: scan.l:838 +msgid "operator too long" +msgstr "operador muito longo" -#: catalog/aclchk.c:3139 +#. translator: %s is typically the translation of "syntax error" +#: scan.l:996 #, c-format -msgid "must be owner of operator %s" -msgstr "deve ser o dono do operador %s" +msgid "%s at end of input" +msgstr "%s no fim da entrada" -#: catalog/aclchk.c:3141 +#. translator: first %s is typically the translation of "syntax error" +#: scan.l:1004 #, c-format -msgid "must be owner of type %s" -msgstr "deve ser o dono do tipo %s" +msgid "%s at or near \"%s\"" +msgstr "%s em ou próximo a \"%s\"" -#: catalog/aclchk.c:3143 -#, c-format -msgid "must be owner of language %s" -msgstr "deve ser o dono da linguagem %s" +#: scan.l:1165 scan.l:1197 +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" -#: catalog/aclchk.c:3145 -#, c-format -msgid "must be owner of large object %s" -msgstr "deve ser o dono do objeto grande %s" +#: scan.l:1193 scan.l:1329 +msgid "invalid Unicode escape value" +msgstr "valor de escape Unicode inválido" -#: catalog/aclchk.c:3147 -#, c-format -msgid "must be owner of schema %s" -msgstr "deve ser o dono do esquema %s" +#: scan.l:1218 +msgid "invalid Unicode escape character" +msgstr "caracter de escape Unicode inválido" -#: catalog/aclchk.c:3149 -#, c-format -msgid "must be owner of operator class %s" -msgstr "deve ser o dono da classe de operadores %s" +#: scan.l:1385 +msgid "nonstandard use of \\' in a string literal" +msgstr "uso de \\' fora do padrão em cadeia de caracteres" -#: catalog/aclchk.c:3151 -#, c-format -msgid "must be owner of operator family %s" -msgstr "deve ser o dono da família de operadores %s" +#: scan.l:1386 +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'...')." -#: catalog/aclchk.c:3153 -#, c-format -msgid "must be owner of conversion %s" -msgstr "deve ser o dono da conversão %s" +#: scan.l:1395 +msgid "nonstandard use of \\\\ in a string literal" +msgstr "uso de \\\\ fora do padrão em cadeia de caracteres" -#: catalog/aclchk.c:3155 -#, c-format -msgid "must be owner of tablespace %s" -msgstr "deve ser o dono da tablespace %s" +#: scan.l:1396 +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'\\\\'." -#: catalog/aclchk.c:3157 -#, c-format -msgid "must be owner of text search dictionary %s" -msgstr "deve ser o dono do dicionário de busca textual %s" +#: scan.l:1410 +msgid "nonstandard use of escape in a string literal" +msgstr "uso de escape fora do padrão em cadeia de caracteres" -#: catalog/aclchk.c:3159 -#, c-format -msgid "must be owner of text search configuration %s" -msgstr "deve ser o dono da configuração de busca textual %s" +#: scan.l:1411 +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'." -#: catalog/aclchk.c:3161 +#: parser/scansup.c:192 #, c-format -msgid "must be owner of foreign-data wrapper %s" -msgstr "deve ser dono de adaptador de dados externo %s" +msgid "identifier \"%s\" will be truncated to \"%s\"" +msgstr "identificador \"%s\" será truncado para \"%s\"" -#: catalog/aclchk.c:3163 -#, c-format -msgid "must be owner of foreign server %s" -msgstr "deve ser o dono de servidor externo %s" +#: libpq/pqformat.c:436 +msgid "no data left in message" +msgstr "nenhum dado na mensagem" -#: catalog/aclchk.c:3205 -#, c-format -msgid "permission denied for column \"%s\" of relation \"%s\"" -msgstr "permissão negada para coluna \"%s\" da relação \"%s\"" +#: libpq/pqformat.c:636 +msgid "invalid string in message" +msgstr "cadeia de caracteres é inválida na mensagem" -#: catalog/aclchk.c:3232 -#, c-format -msgid "role with OID %u does not exist" -msgstr "role com OID %u não existe" +#: libpq/pqformat.c:652 +msgid "invalid message format" +msgstr "formato de mensagem é inválido" -#: catalog/aclchk.c:3325 catalog/aclchk.c:3333 +#: 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 "attribute %d of relation with OID %u does not exist" -msgstr "atributo %d da relação com OID %u não existe" +msgid "invalid large-object descriptor: %d" +msgstr "descritor de objeto grande é inválido: %d" -#: catalog/aclchk.c:3406 catalog/aclchk.c:4226 +#: libpq/be-fsstubs.c:173 libpq/be-fsstubs.c:205 libpq/be-fsstubs.c:529 #, c-format -msgid "relation with OID %u does not exist" -msgstr "relação com OID %u não existe" +msgid "permission denied for large object %u" +msgstr "permissão negada para objeto grande %u" -#: catalog/aclchk.c:3608 catalog/aclchk.c:4330 +#: libpq/be-fsstubs.c:194 #, c-format -msgid "language with OID %u does not exist" -msgstr "linguagem com OID %u não existe" +msgid "large object descriptor %d was not opened for writing" +msgstr "descritor de objeto grande %d não foi aberto para escrita" -#: catalog/aclchk.c:3769 catalog/aclchk.c:4402 -#, c-format -msgid "schema with OID %u does not exist" -msgstr "esquema com OID %u não existe" +#: libpq/be-fsstubs.c:392 +msgid "must be superuser to use server-side lo_import()" +msgstr "deve ser super-usuário para utilizar lo_import() do servidor" -#: catalog/aclchk.c:3823 catalog/aclchk.c:4429 -#, c-format -msgid "tablespace with OID %u does not exist" -msgstr "tablespace com OID %u não existe" +#: libpq/be-fsstubs.c:393 +msgid "Anyone can use the client-side lo_import() provided by libpq." +msgstr "Qualquer um pode utilizar lo_import() do cliente fornecido pela libpq." -#: catalog/aclchk.c:3881 +#: libpq/be-fsstubs.c:406 #, c-format -msgid "foreign-data wrapper with OID %u does not exist" -msgstr "adaptador de dados externo com OID %u não existe" +msgid "could not open server file \"%s\": %m" +msgstr "não pôde abrir arquivo \"%s\" no servidor: %m" -#: catalog/aclchk.c:3942 catalog/aclchk.c:4563 +#: libpq/be-fsstubs.c:428 #, c-format -msgid "foreign server with OID %u does not exist" -msgstr "servidor externo com OID %u não existe" +msgid "could not read server file \"%s\": %m" +msgstr "não pôde ler arquivo \"%s\" no servidor: %m" -#: catalog/aclchk.c:4252 -#, c-format -msgid "type with OID %u does not exist" -msgstr "tipo com OID %u não existe" +#: libpq/be-fsstubs.c:458 +msgid "must be superuser to use server-side lo_export()" +msgstr "deve ser super-usuário para utilizar lo_export() do servidor" -#: catalog/aclchk.c:4278 -#, c-format -msgid "operator with OID %u does not exist" -msgstr "operador com OID %u não existe" +#: libpq/be-fsstubs.c:459 +msgid "Anyone can use the client-side lo_export() provided by libpq." +msgstr "Qualquer um pode utilizar lo_export() do cliente fornecido pela libpq." -#: catalog/aclchk.c:4455 +#: libpq/be-fsstubs.c:484 #, c-format -msgid "operator class with OID %u does not exist" -msgstr "classe de operadores com OID %u não existe" +msgid "could not create server file \"%s\": %m" +msgstr "não pôde criar arquivo \"%s\" no servidor: %m" -#: catalog/aclchk.c:4482 +#: libpq/be-fsstubs.c:496 #, c-format -msgid "operator family with OID %u does not exist" -msgstr "família de operadores com OID %u não existe" +msgid "could not write server file \"%s\": %m" +msgstr "não pôde escrever no arquivo \"%s\" no servidor: %m" -#: catalog/aclchk.c:4509 +#: libpq/hba.c:160 #, c-format -msgid "text search dictionary with OID %u does not exist" -msgstr "dicionário de busca textual com OID %u não existe" +msgid "authentication file token too long, skipping: \"%s\"" +msgstr "informação no arquivo de autenticação é muito longa, ignorando: \"%s\"" -#: catalog/aclchk.c:4536 +#: libpq/hba.c:355 #, c-format -msgid "text search configuration with OID %u does not exist" -msgstr "configuração de busca textual com OID %u não existe" +msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" +msgstr "" +"não pôde abrir arquivo de autenticação secundário \"@%s\" como \"%s\": %m" -#: catalog/aclchk.c:4616 +#: libpq/hba.c:628 #, c-format -msgid "conversion with OID %u does not exist" -msgstr "conversão com OID %u não existe" +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" -#: catalog/pg_operator.c:220 catalog/pg_operator.c:358 +#. translator: the second %s is a list of auth methods +#: libpq/hba.c:779 #, c-format -msgid "\"%s\" is not a valid operator name" -msgstr "\"%s\" não é um nome de operador válido" - -#: catalog/pg_operator.c:367 -msgid "only binary operators can have commutators" -msgstr "somente operadores binários podem ter comutadores" - -#: catalog/pg_operator.c:371 -msgid "only binary operators can have join selectivity" -msgstr "somente operadores binários podem ter seletividade de junção" - -#: catalog/pg_operator.c:375 -msgid "only binary operators can merge join" +msgid "" +"authentication option \"%s\" is only valid for authentication methods %s" msgstr "" -"somente operadores binários podem ser utilizados em junção por mesclagem" - -#: catalog/pg_operator.c:379 -msgid "only binary operators can hash" -msgstr "somente operadores binários podem ser utilizados no hash" - -#: catalog/pg_operator.c:390 -msgid "only boolean operators can have negators" -msgstr "somente operadores booleanos podem ter negadores" - -#: catalog/pg_operator.c:394 -msgid "only boolean operators can have restriction selectivity" -msgstr "somente operadores booleanos podem ter seletividade de restrição" - -#: catalog/pg_operator.c:398 -msgid "only boolean operators can have join selectivity" -msgstr "somente operadores booleanos podem ter seletividade de junção" +"opção de autenticação \"%s\" só é válida para métodos de autenticação %s" -#: catalog/pg_operator.c:402 -msgid "only boolean operators can merge join" +#: libpq/hba.c:795 +#, c-format +msgid "authentication method \"%s\" requires argument \"%s\" to be set" msgstr "" -"somente operadores booleanos podem ser utilizados em junção por mesclagem" +"método de autenticação \"%s\" requer que argumento \"%s\" seja definido" -#: catalog/pg_operator.c:406 -msgid "only boolean operators can hash" -msgstr "somente operadores booleanos podem ser utilizados no hash" +#: libpq/hba.c:832 +msgid "local connections are not supported by this build" +msgstr "conexões locais não são suportadas por essa construção" -#: catalog/pg_operator.c:418 -#, c-format -msgid "operator %s already exists" -msgstr "operador %s já existe" +#: libpq/hba.c:853 +msgid "hostssl requires SSL to be turned on" +msgstr "hostssl requer que SSL esteja habilitado" -#: catalog/pg_operator.c:607 -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" +#: libpq/hba.c:854 +msgid "Set ssl = on in postgresql.conf." +msgstr "Defina ssl = on no postgresql.conf." -#: catalog/pg_enum.c:70 -msgid "EnumValuesCreate() can only set a single OID" -msgstr "EnumValuesCreate() só pode definir um único OID" +#: libpq/hba.c:862 +msgid "hostssl is not supported by this build" +msgstr "hostssl não é suportado por essa construção" -#: catalog/pg_enum.c:110 -#, c-format -msgid "invalid enum label \"%s\"" -msgstr "rótulo do enum \"%s\" é inválido" +#: libpq/hba.c:863 +msgid "Compile with --with-openssl to use SSL connections." +msgstr "Compile com --with-openssl para utilizar conexões SSL." -#: catalog/pg_enum.c:111 +#: libpq/hba.c:885 #, c-format -msgid "Labels must be %d characters or less." -msgstr "Rótulos devem conter %d caracteres ou menos." +msgid "invalid connection type \"%s\"" +msgstr "tipo de conexão \"%s\" inválido" -#: catalog/toasting.c:141 -msgid "shared tables cannot be toasted after initdb" -msgstr "tabelas compartilhadas não podem ser fatiadas após o initdb" +#: libpq/hba.c:898 +msgid "end-of-line before database specification" +msgstr "fim de linha antes da especificação de banco de dados" -#: catalog/pg_type.c:231 -#, c-format -msgid "invalid type internal size %d" -msgstr "tamanho interno de tipo %d é inválido" +#: libpq/hba.c:911 +msgid "end-of-line before role specification" +msgstr "fim de linha antes da especificação de role" -#: catalog/pg_type.c:247 catalog/pg_type.c:255 catalog/pg_type.c:263 -#: catalog/pg_type.c:272 +#: libpq/hba.c:926 +msgid "end-of-line before IP address specification" +msgstr "fim de linha antes da especificação de endereço IP" + +#: libpq/hba.c:980 #, 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" +msgid "invalid IP address \"%s\": %s" +msgstr "endereço IP \"%s\" inválido: %s" -#: catalog/pg_type.c:279 +#: libpq/hba.c:1000 #, c-format -msgid "internal size %d is invalid for passed-by-value type" -msgstr "tamanho interno %d é inválido para tipo passado por valor" +msgid "specifying both host name and CIDR mask is invalid: \"%s\"" +msgstr "especificar nome da máquina e máscara CIDR é inválido: \"%s\"" -#: catalog/pg_type.c:288 catalog/pg_type.c:294 +#: libpq/hba.c:1014 #, c-format -msgid "alignment \"%c\" is invalid for variable-length type" -msgstr "alinhamento \"%c\" é inválido para tipo de tamanho variável" +msgid "invalid CIDR mask in address \"%s\"" +msgstr "máscara CIDR inválida no endereço \"%s\"" -#: catalog/pg_type.c:302 -msgid "fixed-size types must have storage PLAIN" -msgstr "tipos de tamanho fixo devem ter armazenamento PLAIN" +#: libpq/hba.c:1032 +msgid "end-of-line before netmask specification" +msgstr "fim de linha antes da especificação de máscara de rede" -#: catalog/pg_type.c:730 +#: libpq/hba.c:1044 #, 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\"" +msgid "invalid IP mask \"%s\": %s" +msgstr "máscara de endereço IP \"%s\" inválida: %s" -#: catalog/catalog.c:75 -msgid "invalid fork name" -msgstr "nome de fork inválido" +#: libpq/hba.c:1061 +msgid "IP address and mask do not match" +msgstr "endereço IP e máscara não correspodem" -#: catalog/catalog.c:76 -msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"." -msgstr "Nomes válidos são \"main\", \"fsm\" e \"vm\"." +#: libpq/hba.c:1076 +msgid "end-of-line before authentication method" +msgstr "fim de linha antes do método de autenticação" -#: catalog/pg_constraint.c:767 -#, c-format -msgid "table \"%s\" has multiple constraints named \"%s\"" -msgstr "tabela \"%s\" tem múltiplas restrições com nome \"%s\"" +#: libpq/hba.c:1118 libpq/auth.c:539 +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" -#: catalog/pg_constraint.c:779 +#: libpq/hba.c:1149 #, c-format -msgid "constraint \"%s\" for table \"%s\" does not exist" -msgstr "restrição \"%s\" na tabela \"%s\" não existe" +msgid "invalid authentication method \"%s\"" +msgstr "método de autenticação \"%s\" inválido" -#: catalog/pg_shdepend.c:560 catalog/dependency.c:734 +#: libpq/hba.c:1160 #, c-format -msgid "cannot drop %s because it is required by the database system" +msgid "invalid authentication method \"%s\": not supported by this build" msgstr "" -"não pode remover %s porque ele é requerido pelo sistema de banco de dados" - -#: catalog/pg_shdepend.c:671 catalog/dependency.c:898 -#, 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" -"e %d outro objeto (veja lista no log do servidor)" -msgstr[1] "" -"\n" -"e %d outros objetos (veja lista no log do servidor)" +"método de autenticação \"%s\" inválido: não é suportado por essa construção" -#: catalog/pg_shdepend.c:678 -#, 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" -"e objetos em %d outro banco de dados (veja lista no log do servidor)" -msgstr[1] "" -"\n" -"e objetos em %d outros bancos de dados (veja lista no log do servidor)" +#: libpq/hba.c:1181 +msgid "krb5 authentication is not supported on local sockets" +msgstr "autenticação krb5 não é suportada em soquetes locais" -#: catalog/pg_shdepend.c:990 -#, c-format -msgid "role %u was concurrently dropped" -msgstr "role %u foi removida simultaneamente" +#: libpq/hba.c:1192 +msgid "gssapi authentication is not supported on local sockets" +msgstr "autenticação do tipo gssapi não é suportada em soquetes locais" -#: catalog/pg_shdepend.c:1009 -#, c-format -msgid "tablespace %u was concurrently dropped" -msgstr "tablespace %u foi removida simultaneamente" +#: libpq/hba.c:1203 +msgid "peer authentication is only supported on local sockets" +msgstr "autenticação do tipo peer só é suportada em soquetes locais" -#: catalog/pg_shdepend.c:1024 -#, c-format -msgid "database %u was concurrently dropped" -msgstr "banco de dados %u foi removido simultaneamente" +#: libpq/hba.c:1220 +msgid "cert authentication is only supported on hostssl connections" +msgstr "autenticação do tipo cert só é suportada em conexões hostssl" -#: catalog/pg_shdepend.c:1068 +#: libpq/hba.c:1241 #, c-format -msgid "owner of %s" -msgstr "dono de %s" +msgid "authentication option not in name=value format: %s" +msgstr "opção de autenticação não está no formato nome=valor: %s" -#: catalog/pg_shdepend.c:1070 -#, c-format -msgid "privileges for %s" -msgstr "privilégios para %s" +#: libpq/hba.c:1257 +msgid "ident, peer, krb5, gssapi, sspi and cert" +msgstr "ident, peer, krb5, gssapi, sspi e cert" -#. translator: %s will always be "database %s" -#: catalog/pg_shdepend.c:1078 -#, 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" +#: libpq/hba.c:1271 +msgid "clientcert can only be configured for \"hostssl\" rows" +msgstr "clientcert só pode ser configurado para registros \"hostssl\"" -#: catalog/pg_shdepend.c:1189 catalog/pg_shdepend.c:1285 -#, c-format +#: libpq/hba.c:1282 msgid "" -"cannot drop objects owned by %s because they are required by the database " -"system" +"client certificates can only be checked if a root certificate store is " +"available" msgstr "" -"não pode remover objetos que pertencem a %s porque eles são requeridos pelo " -"sistema de banco de dados" +"certificados cliente só podem ser verificados se um certificado raiz estiver " +"disponível" + +#: libpq/hba.c:1283 +msgid "Make sure the root.crt file is present and readable." +msgstr "Tenha certeza que o arquivo root.crt está presente e pode ser lido" + +#: libpq/hba.c:1296 +msgid "clientcert can not be set to 0 when using \"cert\" authentication" +msgstr "" +"clientcert não pode ser definido com 0 ao utilizar autenticação \"cert\"" -#: catalog/pg_conversion.c:66 +#: libpq/hba.c:1330 #, c-format -msgid "conversion \"%s\" already exists" -msgstr "conversão \"%s\" já existe" +msgid "invalid LDAP port number: \"%s\"" +msgstr "número de porta LDAP é inválido: \"%s\"" + +#: libpq/hba.c:1376 libpq/hba.c:1384 +msgid "krb5, gssapi and sspi" +msgstr "krb5, gssapi e sspi" -#: catalog/pg_conversion.c:79 +#: libpq/hba.c:1403 libpq/auth.c:2492 #, c-format -msgid "default conversion for %s to %s already exists" -msgstr "conversão padrão de %s para %s já existe" +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/hba.c:1422 +#, c-format +msgid "invalid RADIUS port number: \"%s\"" +msgstr "número de porta RADIUS é inválido: \"%s\"" -#: catalog/pg_proc.c:204 catalog/pg_aggregate.c:175 -msgid "cannot determine result data type" -msgstr "não pode determinar tipo de dado do resultado" +#: libpq/hba.c:1442 +#, c-format +msgid "unrecognized authentication option name: \"%s\"" +msgstr "nome de opção de autenticação desconhecido: \"%s\"" -#: catalog/pg_proc.c:205 +#: libpq/hba.c:1474 msgid "" -"A function returning a polymorphic type must have at least one polymorphic " -"argument." +"cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, or ldapsearchattribute " +"together with ldapprefix" msgstr "" -"Uma função retornando um tipo polimórfico deve ter pelo menos um argumento " -"polimórfico." - -#: catalog/pg_proc.c:210 catalog/pg_aggregate.c:188 -msgid "unsafe use of pseudo-type \"internal\"" -msgstr "uso inseguro do pseudo-tipo \"internal\"" +"não pode utilizar ldapbasedn, ldapbinddn, ldapbindpasswd ou " +"ldapsearchattribute junto com ldapprefix" -#: catalog/pg_proc.c:211 catalog/pg_aggregate.c:189 +#: libpq/hba.c:1484 msgid "" -"A function returning \"internal\" must have at least one \"internal\" " -"argument." +"authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix" +"\", or \"ldapsuffix\" to be set" msgstr "" -"Uma função retornando \"internal\" deve ter pelo menos um argumento " -"\"internal\"." +"método de autenticação \"ldap\" requer que argumento \"ldapbasedn\", " +"\"ldapprefix\" ou \"ldapsuffix\" seja definido" -#: catalog/pg_proc.c:223 +#: libpq/hba.c:1815 #, c-format -msgid "\"%s\" is already an attribute of type %s" -msgstr "\"%s\" já é um atributo do tipo %s" +msgid "invalid regular expression \"%s\": %s" +msgstr "expressão regular \"%s\" é inválida: %s" -#: catalog/pg_proc.c:362 +#: libpq/hba.c:1838 #, c-format -msgid "function \"%s\" already exists with same argument types" -msgstr "função \"%s\" já existe com os mesmos tipos de argumento" - -#: catalog/pg_proc.c:376 catalog/pg_proc.c:398 -msgid "cannot change return type of existing function" -msgstr "não pode mudar o tipo de retorno da função existente" - -#: catalog/pg_proc.c:377 catalog/pg_proc.c:400 catalog/pg_proc.c:442 -#: catalog/pg_proc.c:465 catalog/pg_proc.c:491 -msgid "Use DROP FUNCTION first." -msgstr "Primeiro utilize DROP FUNCTION." +msgid "regular expression match for \"%s\" failed: %s" +msgstr "correspondência de expressão regular \"%s\" falhou: %s" -#: catalog/pg_proc.c:399 -msgid "Row type defined by OUT parameters is different." -msgstr "Tipo de registro definido pelos parâmetros OUT é diferente." +#: libpq/hba.c:1856 +#, 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\"" -#: catalog/pg_proc.c:440 +#: libpq/hba.c:1922 #, c-format -msgid "cannot change name of input parameter \"%s\"" -msgstr "não pode mudar nome de parâmetro de entrada \"%s\"" +msgid "missing entry in file \"%s\" at end of line %d" +msgstr "faltando entrada no arquivo \"%s\" no fim da linha %d" -#: catalog/pg_proc.c:464 -msgid "cannot remove parameter defaults from existing function" -msgstr "não pode remover valores padrão de parâmetros da função existente" +#: libpq/hba.c:1963 +#, 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" -#: catalog/pg_proc.c:490 -msgid "cannot change data type of existing parameter default value" -msgstr "não pode mudar o tipo de dado do valor padrão do parâmetro existente" +#: libpq/hba.c:1984 +#, 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\"" -#: catalog/pg_proc.c:502 +#: libpq/hba.c:2008 #, c-format -msgid "function \"%s\" is an aggregate function" -msgstr "função \"%s\" é uma função de agregação" +msgid "could not open usermap file \"%s\": %m" +msgstr "não pôde abrir arquivo com mapa de usuários \"%s\": %m" -#: catalog/pg_proc.c:507 +#: libpq/auth.c:257 #, c-format -msgid "function \"%s\" is not an aggregate function" -msgstr "função \"%s\" não é uma função de agregação" +msgid "authentication failed for user \"%s\": host rejected" +msgstr "autenticação de usuário \"%s\" falhou: máquina rejeitada" -#: catalog/pg_proc.c:515 +#: libpq/auth.c:260 #, c-format -msgid "function \"%s\" is a window function" -msgstr "função \"%s\" é uma função deslizante" +msgid "Kerberos 5 authentication failed for user \"%s\"" +msgstr "autenticação do tipo Kerberos 5 falhou para usuário \"%s\"" -#: catalog/pg_proc.c:520 +#: libpq/auth.c:263 #, c-format -msgid "function \"%s\" is not a window function" -msgstr "função \"%s\" não é uma função deslizante" +msgid "\"trust\" authentication failed for user \"%s\"" +msgstr "autenticação do tipo \"trust\" falhou para usuário \"%s\"" -#: catalog/pg_proc.c:688 +#: libpq/auth.c:266 #, c-format -msgid "there is no built-in function named \"%s\"" -msgstr "não há nenhuma função embutida com nome \"%s\"" +msgid "Ident authentication failed for user \"%s\"" +msgstr "autenticação do tipo Ident falhou para usuário \"%s\"" -#: catalog/pg_proc.c:780 +#: libpq/auth.c:269 #, c-format -msgid "SQL functions cannot return type %s" -msgstr "funções SQL não podem retornar tipo %s" +msgid "Peer authentication failed for user \"%s\"" +msgstr "autenticação do tipo peer falhou para usuário \"%s\"" -#: catalog/pg_proc.c:795 +#: libpq/auth.c:273 #, c-format -msgid "SQL functions cannot have arguments of type %s" -msgstr "funções SQL não podem ter argumentos do tipo %s" +msgid "password authentication failed for user \"%s\"" +msgstr "autenticação do tipo password falhou para usuário \"%s\"" -#: catalog/pg_depend.c:209 +#: libpq/auth.c:278 #, c-format -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" +msgid "GSSAPI authentication failed for user \"%s\"" +msgstr "autenticação do tipo GSSAPI falhou para usuário \"%s\"" -#: catalog/dependency.c:578 +#: libpq/auth.c:281 #, c-format -msgid "cannot drop %s because %s requires it" -msgstr "não pode remover %s porque %s o requer" +msgid "SSPI authentication failed for user \"%s\"" +msgstr "autenticação do tipo SSPI falhou para usuário \"%s\"" -#: catalog/dependency.c:581 +#: libpq/auth.c:284 #, c-format -msgid "You can drop %s instead." -msgstr "Você pode remover %s ao invés dele." +msgid "PAM authentication failed for user \"%s\"" +msgstr "autenticação do tipo PAM falhou para usuário \"%s\"" -#: catalog/dependency.c:848 +#: libpq/auth.c:287 #, c-format -msgid "drop auto-cascades to %s" -msgstr "removendo automaticamente %s" +msgid "LDAP authentication failed for user \"%s\"" +msgstr "autenticação do tipo LDAP falhou para usuário \"%s\"" -#: catalog/dependency.c:860 catalog/dependency.c:869 +#: libpq/auth.c:290 #, c-format -msgid "%s depends on %s" -msgstr "%s depende de %s" +msgid "certificate authentication failed for user \"%s\"" +msgstr "autenticação do tipo certificate falhou para usuário \"%s\"" -#: catalog/dependency.c:881 catalog/dependency.c:890 +#: libpq/auth.c:293 #, c-format -msgid "drop cascades to %s" -msgstr "removendo em cascata %s" +msgid "RADIUS authentication failed for user \"%s\"" +msgstr "autenticação do tipo RADIUS falhou para usuário \"%s\"" -#: catalog/dependency.c:910 +#: libpq/auth.c:296 #, c-format -msgid "cannot drop %s because other objects depend on it" -msgstr "não pode remover %s porque outros objetos dependem dele" +msgid "authentication failed for user \"%s\": invalid authentication method" +msgstr "" +"autenticação falhou para usuário \"%s\": método de autenticação é inválido" -#: catalog/dependency.c:914 catalog/dependency.c:921 -msgid "Use DROP ... CASCADE to drop the dependent objects too." -msgstr "Utilize DROP ... CASCADE para remover os objetos dependentes também." +#: libpq/auth.c:325 +msgid "missing or erroneous pg_hba.conf file" +msgstr "arquivo pg_hba.conf não foi encontrado ou está errado" -#: catalog/dependency.c:918 -msgid "cannot drop desired object(s) because other objects depend on them" -msgstr "" -"não pode remover objeto(s) desejado(s) porque outros objetos dependem dele" +#: libpq/auth.c:326 +msgid "See server log for details." +msgstr "Veja log do servidor para obter detalhes." -#. translator: %d always has a value larger than 1 -#: catalog/dependency.c:927 -#, c-format -msgid "drop cascades to %d other object" -msgid_plural "drop cascades to %d other objects" -msgstr[0] "removendo em cascata %d outro objeto" -msgstr[1] "removendo em cascata outros %d objetos" +#: libpq/auth.c:356 +msgid "connection requires a valid client certificate" +msgstr "conexão requer um certificado cliente válido" -#: catalog/dependency.c:2097 -#, c-format -msgid " column %s" -msgstr "coluna %s" +#: libpq/auth.c:400 libpq/auth.c:416 libpq/auth.c:464 libpq/auth.c:482 +msgid "SSL on" +msgstr "SSL habilitado" -#: catalog/dependency.c:2103 -#, c-format -msgid "function %s" -msgstr "função %s" +#: libpq/auth.c:400 libpq/auth.c:416 libpq/auth.c:464 libpq/auth.c:482 +msgid "SSL off" +msgstr "SSL desabilitado" -#: catalog/dependency.c:2108 +#: libpq/auth.c:398 #, c-format -msgid "type %s" -msgstr "tipo %s" +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" -#: catalog/dependency.c:2138 +#: libpq/auth.c:404 #, c-format -msgid "cast from %s to %s" -msgstr "converte de %s para %s" +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" +"\"" -#: catalog/dependency.c:2165 +#: libpq/auth.c:413 #, c-format -msgid "constraint %s on %s" -msgstr "restrição %s em %s" +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" -#: catalog/dependency.c:2171 +#: libpq/auth.c:420 #, c-format -msgid "constraint %s" -msgstr "restrição %s" +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\"" -#: catalog/dependency.c:2188 +#: libpq/auth.c:449 #, c-format -msgid "conversion %s" -msgstr "conversão %s" +msgid "Client IP address resolved to \"%s\", forward lookup matches." +msgstr "Endereço IP do cliente resolveu para \"%s\", pesquisa direta combina." -#: catalog/dependency.c:2225 +#: libpq/auth.c:451 #, c-format -msgid "default for %s" -msgstr "valor padrão para %s" +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." -#: catalog/dependency.c:2242 +#: libpq/auth.c:453 #, c-format -msgid "language %s" -msgstr "linguagem %s" +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." -#: catalog/dependency.c:2248 +#: libpq/auth.c:462 #, c-format -msgid "large object %u" -msgstr "objeto grande %u" +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" -#: catalog/dependency.c:2253 +#: libpq/auth.c:469 #, c-format -msgid "operator %s" -msgstr "operador %s" +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\"" -#: catalog/dependency.c:2285 +#: libpq/auth.c:479 #, c-format -msgid "operator class %s for access method %s" -msgstr "classe de operadores %s para método de acesso %s" +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" -#: catalog/dependency.c:2335 +#: libpq/auth.c:487 #, c-format -msgid "operator %d %s of %s" -msgstr "operador %d %s de %s" +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\"" -#: catalog/dependency.c:2382 +#: libpq/auth.c:663 #, c-format -msgid "function %d %s of %s" -msgstr "função %d %s de %s" +msgid "expected password response, got message type %d" +msgstr "resposta da senha esperada, recebeu tipo de mensagem %d" + +#: libpq/auth.c:691 +msgid "invalid password packet size" +msgstr "tamanho do pacote de senha é inválido" -#: catalog/dependency.c:2419 +#: libpq/auth.c:695 +msgid "received password packet" +msgstr "pacote de senha recebido" + +#: libpq/auth.c:753 #, c-format -msgid "rule %s on " -msgstr "regra %s em " +msgid "Kerberos initialization returned error %d" +msgstr "inicialização do Kerberos retornou erro %d" -#: catalog/dependency.c:2454 +#: libpq/auth.c:763 #, c-format -msgid "trigger %s on " -msgstr "gatilho %s em " +msgid "Kerberos keytab resolving returned error %d" +msgstr "resolução do keytab do Kerberos retornou erro %d" -#: catalog/dependency.c:2471 +#: libpq/auth.c:787 #, c-format -msgid "schema %s" -msgstr "esquema %s" +msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d" +msgstr "Kerberos sname_to_principal(\"%s\", \"%s\") retornou erro %d" -#: catalog/dependency.c:2484 +#: libpq/auth.c:832 #, c-format -msgid "text search parser %s" -msgstr "analisador de busca textual %s" +msgid "Kerberos recvauth returned error %d" +msgstr "Kerberos recvauth retornou erro %d" -#: catalog/dependency.c:2499 +#: libpq/auth.c:855 #, c-format -msgid "text search dictionary %s" -msgstr "dicionário de busca textual %s" +msgid "Kerberos unparse_name returned error %d" +msgstr "Kerberos unparse_name retornou erro %d" + +#: libpq/auth.c:1003 +msgid "GSSAPI is not supported in protocol version 2" +msgstr "GSSAPI não é suportado no protocolo versão 2" -#: catalog/dependency.c:2514 +#: libpq/auth.c:1058 #, c-format -msgid "text search template %s" -msgstr "modelo de busca textual %s" +msgid "expected GSS response, got message type %d" +msgstr "resposta do GSS esperada, recebeu tipo de mensagem %d" + +#: libpq/auth.c:1121 +msgid "accepting GSS security context failed" +msgstr "aceitação do contexto de segurança do GSS falhou" + +#: libpq/auth.c:1147 +msgid "retrieving GSS user name failed" +msgstr "recuperação do nome de usuário do GSS falhou" -#: catalog/dependency.c:2529 +#: libpq/auth.c:1264 +msgid "SSPI is not supported in protocol version 2" +msgstr "SSPI não é suportado no protocolo versão 2" + +#: libpq/auth.c:1279 +msgid "could not acquire SSPI credentials" +msgstr "não pôde obter credenciais SSPI" + +#: libpq/auth.c:1296 #, c-format -msgid "text search configuration %s" -msgstr "configuração de busca textual %s" +msgid "expected SSPI response, got message type %d" +msgstr "resposta do SSPI esperada, recebeu tipo de mensagem %d" + +#: libpq/auth.c:1368 +msgid "could not accept SSPI security context" +msgstr "não pôde aceitar contexto de segurança do SSPI" + +#: libpq/auth.c:1430 +msgid "could not get token from SSPI security context" +msgstr "não pôde obter token do contexto de segurança do SSPI" -#: catalog/dependency.c:2537 +#: libpq/auth.c:1674 #, c-format -msgid "role %s" -msgstr "role %s" +msgid "could not create socket for Ident connection: %m" +msgstr "não pôde criar soquete para conexão com Ident: %m" -#: catalog/dependency.c:2550 +#: libpq/auth.c:1689 #, c-format -msgid "database %s" -msgstr "banco de dados %s" +msgid "could not bind to local address \"%s\": %m" +msgstr "não pôde se ligar ao endereço local \"%s\": %m" -#: catalog/dependency.c:2562 +#: libpq/auth.c:1701 #, c-format -msgid "tablespace %s" -msgstr "tablespace %s" +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" -#: catalog/dependency.c:2571 +#: libpq/auth.c:1721 #, c-format -msgid "foreign-data wrapper %s" -msgstr "adaptador de dados externo %s" +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" -#: catalog/dependency.c:2580 +#: libpq/auth.c:1736 #, c-format -msgid "server %s" -msgstr "servidor %s" +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" -#: catalog/dependency.c:2605 +#: libpq/auth.c:1746 #, c-format -msgid "user mapping for %s" -msgstr "mapeamento de usuários para %s" +msgid "invalidly formatted response from Ident server: \"%s\"" +msgstr "resposta invalidamente formatada pelo servidor Ident: \"%s\"" -#: catalog/dependency.c:2639 -#, 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" +#: libpq/auth.c:1785 +msgid "peer authentication is not supported on this platform" +msgstr "autenticação do tipo peer não é suportada nesta plataforma" -#: catalog/dependency.c:2644 +#: libpq/auth.c:1789 #, 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" +msgid "could not get peer credentials: %m" +msgstr "não pôde receber credenciais: %m" -#: catalog/dependency.c:2649 +#: libpq/auth.c:1798 #, 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" +msgid "local user with ID %d does not exist" +msgstr "usuário local com ID %d não existe" -#: catalog/dependency.c:2655 -#, c-format -msgid "default privileges belonging to role %s" -msgstr "privilégios padrão pertencem a role %s" +#: libpq/auth.c:1881 libpq/auth.c:2153 libpq/auth.c:2513 +msgid "empty password returned by client" +msgstr "senha vazia retornada pelo cliente" -#: catalog/dependency.c:2663 +#: libpq/auth.c:1891 #, c-format -msgid " in schema %s" -msgstr " no esquema %s" +msgid "error from underlying PAM layer: %s" +msgstr "erro da biblioteca PAM: %s" -#: catalog/dependency.c:2711 +#: libpq/auth.c:1960 #, c-format -msgid "table %s" -msgstr "tabela %s" +msgid "could not create PAM authenticator: %s" +msgstr "não pôde criar autenticador PAM: %s" -#: catalog/dependency.c:2715 +#: libpq/auth.c:1971 #, c-format -msgid "index %s" -msgstr "índice %s" +msgid "pam_set_item(PAM_USER) failed: %s" +msgstr "pam_set_item(PAM_USER) falhou: %s" -#: catalog/dependency.c:2719 +#: libpq/auth.c:1982 #, c-format -msgid "sequence %s" -msgstr "sequência %s" +msgid "pam_set_item(PAM_CONV) failed: %s" +msgstr "pam_set_item(PAM_CONV) falhou: %s" -#: catalog/dependency.c:2723 +#: libpq/auth.c:1993 #, c-format -msgid "uncataloged table %s" -msgstr "tabela temporária %s" +msgid "pam_authenticate failed: %s" +msgstr "pam_authenticate falhou: %s" -#: catalog/dependency.c:2727 +#: libpq/auth.c:2004 #, c-format -msgid "toast table %s" -msgstr "tabela toast %s" +msgid "pam_acct_mgmt failed: %s" +msgstr "pam_acct_mgmt falhou: %s" -#: catalog/dependency.c:2731 +#: libpq/auth.c:2015 #, c-format -msgid "view %s" -msgstr "visão %s" +msgid "could not release PAM authenticator: %s" +msgstr "não pôde liberar autenticador PAM: %s" -#: catalog/dependency.c:2735 +#: libpq/auth.c:2048 libpq/auth.c:2052 #, c-format -msgid "composite type %s" -msgstr "tipo composto %s" +msgid "could not initialize LDAP: error code %d" +msgstr "não pôde inicializar LDAP: código de erro %d" -#: catalog/dependency.c:2740 +#: libpq/auth.c:2062 #, c-format -msgid "relation %s" -msgstr "relação %s" +msgid "could not set LDAP protocol version: error code %d" +msgstr "não pôde definir versão do protocolo LDAP: código de erro %d" -#: catalog/dependency.c:2777 -#, c-format -msgid "operator family %s for access method %s" -msgstr "família de operadores %s para método de acesso %s" +#: libpq/auth.c:2091 +msgid "could not load wldap32.dll" +msgstr "não pôde carregar wldap32.dll" -#: catalog/namespace.c:250 catalog/namespace.c:317 -msgid "temporary tables cannot specify a schema name" -msgstr "tabelas temporárias não podem especificar um nome de esquema" +#: libpq/auth.c:2099 +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" -#: catalog/namespace.c:358 catalog/namespace.c:2410 -msgid "no schema has been selected to create in" -msgstr "nenhum esquema foi selecionado para criá-lo(a)" +#: libpq/auth.c:2100 +msgid "LDAP over SSL is not supported on this platform." +msgstr "LDAP sobre SSL não é suportado nesta plataforma." -#: catalog/namespace.c:2442 +#: libpq/auth.c:2115 #, c-format -msgid "improper relation name (too many dotted names): %s" -msgstr "nome de relação é inválido (nomes com muitos pontos): %s" +msgid "could not start LDAP TLS session: error code %d" +msgstr "não pôde iniciar sessão LDAP TLS: código de erro %d" -#: catalog/namespace.c:3024 -#, 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\"" +#: libpq/auth.c:2137 +msgid "LDAP server not specified" +msgstr "servidor LDAP não foi especificado" -#: catalog/namespace.c:3040 -msgid "cannot create temporary tables during recovery" -msgstr "não pode criar tabelas temporárias durante recuperação" +#: libpq/auth.c:2189 +msgid "invalid character in user name for LDAP authentication" +msgstr "caracter inválido em nome de usuário para autenticação LDAP" -#: catalog/heap.c:257 +#: libpq/auth.c:2204 #, c-format -msgid "permission denied to create \"%s.%s\"" -msgstr "permissão negada ao criar \"%s.%s\"" - -#: catalog/heap.c:259 -msgid "System catalog modifications are currently disallowed." -msgstr "Modificações no catálogo do sistema estão atualmente desabilitadas." +msgid "" +"could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": " +"error code %d" +msgstr "" +"não pôde realizar ligação inicial LDAP para ldapbinddn \"%s\" no servidor " +"\"%s\": código de erro %d" -#: catalog/heap.c:397 +#: libpq/auth.c:2229 #, 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" +msgid "could not search LDAP for filter \"%s\" on server \"%s\": error code %d" +msgstr "" +"não pôde buscar no LDAP por filtro \"%s\" no servidor \"%s\": código de erro " +"%d" -#: catalog/heap.c:413 +#: libpq/auth.c:2239 #, c-format -msgid "column name \"%s\" specified more than once" -msgstr "nome da coluna \"%s\" especificado mais de uma vez" +msgid "LDAP search failed for filter \"%s\" on server \"%s\": no such user" +msgstr "" +"busca LDAP falhou para filtro \"%s\" no servidor \"%s\": usuário não existe" -#: catalog/heap.c:451 +#: libpq/auth.c:2243 #, c-format -msgid "column \"%s\" has type \"unknown\"" -msgstr "coluna \"%s\" tem tipo \"unknown\"" - -#: catalog/heap.c:452 -msgid "Proceeding with relation creation anyway." -msgstr "Prosseguindo com a criação da relação mesmo assim." +msgid "" +"LDAP search failed for filter \"%s\" on server \"%s\": user is not unique " +"(%ld matches)" +msgstr "" +"busca LDAP falhou para filtro \"%s\" no servidor \"%s\": usuário não é único " +"(%ld ocorrências)" -#: catalog/heap.c:465 +#: libpq/auth.c:2260 #, c-format -msgid "column \"%s\" has pseudo-type %s" -msgstr "coluna \"%s\" tem pseudo-tipo %s" - -#: catalog/heap.c:944 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." +"could not get dn for the first entry matching \"%s\" on server \"%s\": %s" 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." +"não pôde obter dn para a primeira entrada que corresponde a \"%s\" no " +"servidor \"%s\": %s" -#: catalog/heap.c:1540 +#: libpq/auth.c:2280 #, c-format -msgid "" -"cannot drop \"%s\" because it is being used by active queries in this session" +msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s" msgstr "" -"não pode remover \"%s\" porque ela está sendo utilizada por consultas ativas " -"nessa sessão" +"não pôde desligar-se após buscar pelo usuário \"%s\" no servidor \"%s\": %s" -#: catalog/heap.c:1991 +#: libpq/auth.c:2317 #, c-format -msgid "check constraint \"%s\" already exists" -msgstr "restrição de verificação \"%s\" já existe" +msgid "LDAP login failed for user \"%s\" on server \"%s\": error code %d" +msgstr "" +"autenticação LDAP falhou para usuário \"%s\" no servidor \"%s\": código de " +"erro %d" -#: catalog/heap.c:2139 +#: libpq/auth.c:2345 #, c-format -msgid "merging constraint \"%s\" with inherited definition" -msgstr "juntando restrição \"%s\" com definição herdada" +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" -#: catalog/heap.c:2237 -msgid "cannot use column references in default expression" -msgstr "não pode utilizar referência à coluna na expressão padrão" +#: libpq/auth.c:2469 +msgid "RADIUS server not specified" +msgstr "servidor RADIUS não foi especificado" -#: catalog/heap.c:2245 -msgid "default expression must not return a set" -msgstr "expressão padrão não deve retornar um conjunto" +#: libpq/auth.c:2476 +msgid "RADIUS secret not specified" +msgstr "segredo do RADIUS não foi especificado" -#: catalog/heap.c:2253 -msgid "cannot use subquery in default expression" -msgstr "não pode utilizar subconsulta na expressão padrão" +#: libpq/auth.c:2520 +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" -#: catalog/heap.c:2257 -msgid "cannot use aggregate function in default expression" -msgstr "não pode utilizar função de agregação na expressão padrão" +#: libpq/auth.c:2531 +msgid "could not generate random encryption vector" +msgstr "não pôde gerar vetor de criptografia randômico" -#: catalog/heap.c:2261 -msgid "cannot use window function in default expression" -msgstr "não pode utilizar função deslizante na expressão padrão" +#: libpq/auth.c:2554 +msgid "could not perform MD5 encryption of password" +msgstr "não pôde realizar criptografia MD5 da senha" -#: catalog/heap.c:2321 +#: libpq/auth.c:2576 #, 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" +msgid "could not create RADIUS socket: %m" +msgstr "não pôde criar soquete RADIUS: %m" -#: catalog/heap.c:2577 -msgid "unsupported ON COMMIT and foreign key combination" -msgstr "combinação ON COMMIT e chave estrangeira não é suportada" +#: libpq/auth.c:2597 +#, c-format +msgid "could not bind local RADIUS socket: %m" +msgstr "não pôde se ligar ao soquete RADIUS: %m" -#: catalog/heap.c:2578 +#: libpq/auth.c:2607 #, 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." +msgid "could not send RADIUS packet: %m" +msgstr "não pôde enviar pacote RADIUS: %m" -#: catalog/heap.c:2583 -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" +#: libpq/auth.c:2636 libpq/auth.c:2661 +msgid "timeout waiting for RADIUS response" +msgstr "tempo de espera esgotado para resposta do RADIUS" -#: catalog/heap.c:2584 +#: libpq/auth.c:2654 #, c-format -msgid "Table \"%s\" references \"%s\"." -msgstr "Tabela \"%s\" referencia \"%s\"." +msgid "could not check status on RADIUS socket: %m" +msgstr "não pôde verificar status no soquete do RADIUS: %m" -#: catalog/heap.c:2586 +#: libpq/auth.c:2683 #, 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/pg_aggregate.c:100 -msgid "cannot determine transition data type" -msgstr "não pode determinar tipo de dado transitório" - -#: catalog/pg_aggregate.c:101 -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." +msgid "could not read RADIUS response: %m" +msgstr "não pôde ler resposta do RADIUS: %m" -#: catalog/pg_aggregate.c:124 +#: libpq/auth.c:2695 libpq/auth.c:2699 #, 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:144 -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" +msgid "RADIUS response was sent from incorrect port: %i" +msgstr "resposta RADIUS foi enviada de porta incorreta: %i" -#: catalog/pg_aggregate.c:176 -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." +#: libpq/auth.c:2708 +#, c-format +msgid "RADIUS response too short: %i" +msgstr "resposta RADIUS muito curta: %i" -#: catalog/pg_aggregate.c:197 -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" +#: libpq/auth.c:2715 +#, c-format +msgid "RADIUS response has corrupt length: %i (actual length %i)" +msgstr "resposta RADIUS tem tamanho corrompido: %i (tamanho atual %i)" -#: catalog/pg_aggregate.c:337 +#: libpq/auth.c:2723 #, c-format -msgid "function %s returns a set" -msgstr "função %s retorna um conjunto" +msgid "RADIUS response is to a different request: %i (should be %i)" +msgstr "resposta RADIUS é para uma solicitação diferente: %i (deveria ser %i)" + +#: libpq/auth.c:2748 +msgid "could not perform MD5 encryption of received packet" +msgstr "não pôde realizar criptografia MD5 do pacote recebido" -#: catalog/pg_aggregate.c:362 +#: libpq/auth.c:2757 +msgid "RADIUS response has incorrect MD5 signature" +msgstr "resposta RADIUS tem assinatura MD5 incorreta" + +#: libpq/auth.c:2774 #, c-format -msgid "function %s requires run-time type coercion" -msgstr "função %s requer conversão de tipo em tempo de execução" +msgid "RADIUS response has invalid code (%i) for user \"%s\"" +msgstr "resposta RADIUS tem código inválido (%i) para usuário \"%s\"" -#: libpq/pqcomm.c:294 +#: libpq/pqcomm.c:306 #, 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:298 +#: libpq/pqcomm.c:310 #, 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:325 +#: libpq/pqcomm.c:337 #, 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:334 +#: libpq/pqcomm.c:346 msgid "IPv4" msgstr "IPv4" -#: libpq/pqcomm.c:338 +#: libpq/pqcomm.c:350 msgid "IPv6" msgstr "IPv6" -#: libpq/pqcomm.c:343 +#: libpq/pqcomm.c:355 msgid "Unix" msgstr "Unix" -#: libpq/pqcomm.c:348 +#: libpq/pqcomm.c:360 #, 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:359 +#: libpq/pqcomm.c:371 #, c-format msgid "could not create %s socket: %m" msgstr "não pôde criar soquete %s: %m" -#: libpq/pqcomm.c:384 +#: libpq/pqcomm.c:396 #, c-format msgid "setsockopt(SO_REUSEADDR) failed: %m" msgstr "setsockopt(SO_REUSEADDR) falhou: %m" -#: libpq/pqcomm.c:399 +#: libpq/pqcomm.c:411 #, c-format msgid "setsockopt(IPV6_V6ONLY) failed: %m" msgstr "setsockopt(IPV6_V6ONLY) falhou: %m" #. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:418 +#: libpq/pqcomm.c:430 #, c-format msgid "could not bind %s socket: %m" msgstr "não pôde se ligar ao soquete %s: %m" -#: libpq/pqcomm.c:421 +#: libpq/pqcomm.c:433 #, c-format msgid "" "Is another postmaster already running on port %d? If not, remove socket file " @@ -16092,7 +17813,7 @@ msgstr "" "Outro postmaster já está executando na porta %d? Se não, remova o arquivo de " "soquete \"%s\" e tente novamente." -#: libpq/pqcomm.c:424 +#: libpq/pqcomm.c:436 #, c-format msgid "" "Is another postmaster already running on port %d? If not, wait a few seconds " @@ -16102,1053 +17823,830 @@ msgstr "" "segundos e tente novamente." #. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:457 +#: libpq/pqcomm.c:469 #, c-format msgid "could not listen on %s socket: %m" msgstr "não pôde escutar no soquete %s: %m" -#: libpq/pqcomm.c:542 +#: libpq/pqcomm.c:499 +#, 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:562 #, c-format msgid "group \"%s\" does not exist" msgstr "grupo \"%s\" não existe" -#: libpq/pqcomm.c:552 +#: libpq/pqcomm.c:572 #, 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:563 +#: libpq/pqcomm.c:583 #, 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:593 +#: libpq/pqcomm.c:613 #, c-format msgid "could not accept new connection: %m" msgstr "não pôde aceitar nova conexão: %m" -#: libpq/pqcomm.c:779 libpq/pqcomm.c:879 -#, c-format -msgid "could not receive data from client: %m" -msgstr "não pôde receber dados do cliente: %m" - -#: libpq/pqcomm.c:854 +#: libpq/pqcomm.c:781 #, c-format msgid "could not set socket to non-blocking mode: %m" msgstr "não pôde configurar o soquete para modo não-bloqueado: %m" -#: libpq/pqcomm.c:900 libpq/pqcomm.c:911 +#: libpq/pqcomm.c:787 #, 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:1056 +#: libpq/pqcomm.c:839 libpq/pqcomm.c:929 +#, c-format +msgid "could not receive data from client: %m" +msgstr "não pôde receber dados do cliente: %m" + +#: libpq/pqcomm.c:1080 msgid "unexpected EOF within message length word" msgstr "EOF inesperado dentro da palavra de tamanho de mensagem" -#: libpq/pqcomm.c:1067 +#: libpq/pqcomm.c:1091 msgid "invalid message length" msgstr "tamanho de mensagem é inválido" -#: libpq/pqcomm.c:1089 libpq/pqcomm.c:1099 +#: libpq/pqcomm.c:1113 libpq/pqcomm.c:1123 msgid "incomplete message from client" msgstr "mensagem incompleta do cliente" -#: libpq/pqcomm.c:1208 +#: libpq/pqcomm.c:1253 #, c-format msgid "could not send data to client: %m" msgstr "não pôde enviar dados para cliente: %m" -#: 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:518 -#, c-format -msgid "invalid large-object descriptor: %d" -msgstr "descritor de objeto grande é inválido: %d" - -#: libpq/be-fsstubs.c:173 libpq/be-fsstubs.c:205 libpq/be-fsstubs.c:528 -#, c-format -msgid "permission denied for large object %u" -msgstr "permissão negada para objeto grande %u" - -#: libpq/be-fsstubs.c:194 -#, c-format -msgid "large object descriptor %d was not opened for writing" -msgstr "descritor de objeto grande %d não foi aberto para escrita" - -#: libpq/be-fsstubs.c:392 -msgid "must be superuser to use server-side lo_import()" -msgstr "deve ser super-usuário para utilizar lo_import() do servidor" - -#: libpq/be-fsstubs.c:393 -msgid "Anyone can use the client-side lo_import() provided by libpq." -msgstr "Qualquer um pode utilizar lo_import() do cliente fornecido pela libpq." - -#: libpq/be-fsstubs.c:406 -#, c-format -msgid "could not open server file \"%s\": %m" -msgstr "não pôde abrir arquivo \"%s\" no servidor: %m" - -#: libpq/be-fsstubs.c:428 -#, c-format -msgid "could not read server file \"%s\": %m" -msgstr "não pôde ler arquivo \"%s\" no servidor: %m" - -#: libpq/be-fsstubs.c:458 -msgid "must be superuser to use server-side lo_export()" -msgstr "deve ser super-usuário para utilizar lo_export() do servidor" - -#: libpq/be-fsstubs.c:459 -msgid "Anyone can use the client-side lo_export() provided by libpq." -msgstr "Qualquer um pode utilizar lo_export() do cliente fornecido pela libpq." - -#: libpq/be-fsstubs.c:483 -#, c-format -msgid "could not create server file \"%s\": %m" -msgstr "não pôde criar arquivo \"%s\" no servidor: %m" - -#: libpq/be-fsstubs.c:495 -#, c-format -msgid "could not write server file \"%s\": %m" -msgstr "não pôde escrever no arquivo \"%s\" no servidor: %m" - -#: libpq/pqformat.c:436 -msgid "no data left in message" -msgstr "nenhum dado na mensagem" - -#: libpq/pqformat.c:636 -msgid "invalid string in message" -msgstr "cadeia de caracteres é inválida na mensagem" - -#: libpq/pqformat.c:652 -msgid "invalid message format" -msgstr "formato de mensagem é inválido" - -#: libpq/auth.c:255 -#, c-format -msgid "authentication failed for user \"%s\": host rejected" -msgstr "autenticação de usuário \"%s\" falhou: máquina rejeitada" - -#: libpq/auth.c:258 -#, 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:261 -#, c-format -msgid "\"trust\" authentication failed for user \"%s\"" -msgstr "autenticação do tipo \"trust\" falhou para usuário \"%s\"" - -#: libpq/auth.c:264 -#, c-format -msgid "Ident authentication failed for user \"%s\"" -msgstr "autenticação do tipo Ident falhou para usuário \"%s\"" - -#: libpq/auth.c:268 -#, c-format -msgid "password authentication failed for user \"%s\"" -msgstr "autenticação do tipo password falhou para usuário \"%s\"" - -#: libpq/auth.c:273 -#, c-format -msgid "GSSAPI authentication failed for user \"%s\"" -msgstr "autenticação do tipo GSSAPI falhou para usuário \"%s\"" - -#: libpq/auth.c:276 -#, c-format -msgid "SSPI authentication failed for user \"%s\"" -msgstr "autenticação do tipo SSPI falhou para usuário \"%s\"" - -#: libpq/auth.c:279 -#, c-format -msgid "PAM authentication failed for user \"%s\"" -msgstr "autenticação do tipo PAM falhou para usuário \"%s\"" - -#: libpq/auth.c:282 -#, c-format -msgid "LDAP authentication failed for user \"%s\"" -msgstr "autenticação do tipo LDAP falhou para usuário \"%s\"" - -#: libpq/auth.c:285 -#, c-format -msgid "certificate authentication failed for user \"%s\"" -msgstr "autenticação do tipo certificate falhou para usuário \"%s\"" - -#: libpq/auth.c:288 -#, c-format -msgid "RADIUS authentication failed for user \"%s\"" -msgstr "autenticação do tipo RADIUS falhou para usuário \"%s\"" - -#: libpq/auth.c:291 -#, 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:320 -msgid "missing or erroneous pg_hba.conf file" -msgstr "arquivo pg_hba.conf não foi encontrado ou está errado" - -#: libpq/auth.c:321 -msgid "See server log for details." -msgstr "Veja log do servidor para obter detalhes." - -#: libpq/auth.c:351 -msgid "connection requires a valid client certificate" -msgstr "conexão requer um certificado cliente válido" - -#: libpq/auth.c:395 libpq/auth.c:411 libpq/auth.c:448 libpq/auth.c:464 -msgid "SSL on" -msgstr "SSL habilitado" - -#: libpq/auth.c:395 libpq/auth.c:411 libpq/auth.c:448 libpq/auth.c:464 -msgid "SSL off" -msgstr "SSL desabilitado" - -#: libpq/auth.c:393 -#, fuzzy, c-format -msgid "" -"pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s" -msgstr "" -"pg_hba.conf rejeita conexão de replicação para máquina \"%s\", usuário \"%s\", %s" - -#: libpq/auth.c:399 -#, fuzzy, c-format -msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\"" -msgstr "" -"pg_hba.conf rejeita conexão de replicação para máquina \"%s\", usuário \"%s\"" - -#: libpq/auth.c:408 -#, fuzzy, c-format -msgid "" -"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s" -"\", %s" -msgstr "" -"pg_hba.conf rejeita conexão para máquina \"%s\", usuário \"%s\", banco de dados \"%s\", %s" - -#: libpq/auth.c:415 -#, fuzzy, c-format -msgid "" -"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\"" -msgstr "" -"pg_hba.conf rejeita conexão para máquina \"%s\", usuário \"%s\", banco de dados \"%s\"" - -#: libpq/auth.c:446 -#, fuzzy, 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:452 -#, fuzzy, 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:461 -#, 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:468 -#, 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:526 -#, c-format -msgid "could not enable credential reception: %m" -msgstr "não pôde habilitar recepção de credenciais: %m" - -#: libpq/auth.c:539 libpq/hba.c:948 -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:660 -#, c-format -msgid "expected password response, got message type %d" -msgstr "resposta da senha esperada, recebeu tipo de mensagem %d" - -#: libpq/auth.c:688 -msgid "invalid password packet size" -msgstr "tamanho do pacote de senha é inválido" - -#: libpq/auth.c:692 -msgid "received password packet" -msgstr "pacote de senha recebido" - -#: libpq/auth.c:750 -#, c-format -msgid "Kerberos initialization returned error %d" -msgstr "inicialização do Kerberos retornou erro %d" - -#: libpq/auth.c:760 +#: libpq/be-secure.c:284 libpq/be-secure.c:379 #, c-format -msgid "Kerberos keytab resolving returned error %d" -msgstr "resolução do keytab do Kerberos retornou erro %d" +msgid "SSL error: %s" +msgstr "erro de SSL: %s" -#: libpq/auth.c:784 +#: libpq/be-secure.c:293 libpq/be-secure.c:388 libpq/be-secure.c:962 #, c-format -msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d" -msgstr "Kerberos sname_to_principal(\"%s\", \"%s\") retornou erro %d" +msgid "unrecognized SSL error code: %d" +msgstr "código de erro SSL desconhecido: %d" -#: libpq/auth.c:829 -#, c-format -msgid "Kerberos recvauth returned error %d" -msgstr "Kerberos recvauth retornou erro %d" +#: libpq/be-secure.c:332 libpq/be-secure.c:336 libpq/be-secure.c:346 +msgid "SSL renegotiation failure" +msgstr "renegociação SSL falhou" -#: libpq/auth.c:852 -#, c-format -msgid "Kerberos unparse_name returned error %d" -msgstr "Kerberos unparse_name retornou erro %d" +#: libpq/be-secure.c:340 +msgid "SSL failed to send renegotiation request" +msgstr "SSL falhou ao enviar pedido de renegociação" -#: libpq/auth.c:975 +#: libpq/be-secure.c:741 #, c-format -msgid "%s: %s" -msgstr "%s: %s" - -#: libpq/auth.c:1001 -msgid "GSSAPI is not supported in protocol version 2" -msgstr "GSSAPI não é suportado no protocolo versão 2" +msgid "could not create SSL context: %s" +msgstr "não pôde criar contexto SSL: %s" -#: libpq/auth.c:1056 +#: libpq/be-secure.c:757 #, c-format -msgid "expected GSS response, got message type %d" -msgstr "resposta do GSS esperada, recebeu tipo de mensagem %d" - -#: libpq/auth.c:1119 -msgid "accepting GSS security context failed" -msgstr "aceitação do contexto de segurança do GSS falhou" - -#: libpq/auth.c:1145 -msgid "retrieving GSS user name failed" -msgstr "recuperação do nome de usuário do GSS falhou" +msgid "could not load server certificate file \"%s\": %s" +msgstr "não pôde carregar arquivo de certificado do servidor \"%s\": %s" -#: libpq/auth.c:1218 +#: libpq/be-secure.c:763 #, c-format -msgid "SSPI error %x" -msgstr "erro de SSPI %x" +msgid "could not access private key file \"%s\": %m" +msgstr "não pôde acessar arquivo da chave privada \"%s\": %m" -#: libpq/auth.c:1222 +#: libpq/be-secure.c:778 #, c-format -msgid "%s (%x)" -msgstr "%s (%x)" - -#: libpq/auth.c:1262 -msgid "SSPI is not supported in protocol version 2" -msgstr "SSPI não é suportado no protocolo versão 2" +msgid "private key file \"%s\" has group or world access" +msgstr "arquivo da chave privada \"%s\" tem acesso para grupo ou outros" -#: libpq/auth.c:1277 -msgid "could not acquire SSPI credentials" -msgstr "não pôde obter credenciais SSPI" +#: libpq/be-secure.c:780 +msgid "Permissions should be u=rw (0600) or less." +msgstr "Permissões devem ser u=rwx (0600) ou menos." -#: libpq/auth.c:1294 +#: libpq/be-secure.c:787 #, c-format -msgid "expected SSPI response, got message type %d" -msgstr "resposta do SSPI esperada, recebeu tipo de mensagem %d" - -#: libpq/auth.c:1366 -msgid "could not accept SSPI security context" -msgstr "não pôde aceitar contexto de segurança do SSPI" - -#: libpq/auth.c:1422 -msgid "could not get token from SSPI security context" -msgstr "não pôde obter token do contexto de segurança do SSPI" +msgid "could not load private key file \"%s\": %s" +msgstr "não pôde carregar arquivo da chave privada \"%s\": %s" -#: libpq/auth.c:1665 +#: libpq/be-secure.c:792 #, c-format -msgid "could not create socket for Ident connection: %m" -msgstr "não pôde criar soquete para conexão com Ident: %m" +msgid "check of private key failed: %s" +msgstr "verificação de chave privada falhou: %s" -#: libpq/auth.c:1680 +#: libpq/be-secure.c:820 #, c-format -msgid "could not bind to local address \"%s\": %m" -msgstr "não pôde se ligar ao endereço local \"%s\": %m" +msgid "could not access root certificate file \"%s\": %m" +msgstr "não pôde acessar arquivo do certificado raiz \"%s\": %m" -#: libpq/auth.c:1692 +#: libpq/be-secure.c:831 #, 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" +msgid "could not load root certificate file \"%s\": %s" +msgstr "não pôde carregar arquivo do certificado raiz \"%s\": %s" -#: libpq/auth.c:1712 +#: libpq/be-secure.c:854 #, c-format -msgid "could not send query to Ident server at address \"%s\", port %s: %m" +msgid "SSL certificate revocation list file \"%s\" ignored" +msgstr "arquivo da lista de revogação de certificados SSL \"%s\" ignorado" + +#: libpq/be-secure.c:856 +msgid "SSL library does not support certificate revocation lists." msgstr "" -"não pôde enviar consulta ao servidor Ident no endereço \"%s\", porta %s: %m" +"biblioteca SSL instalada não suporta listas de revogação de certificados." -#: libpq/auth.c:1727 +#: libpq/be-secure.c:863 #, c-format -msgid "" -"could not receive response from Ident server at address \"%s\", port %s: %m" +msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s" msgstr "" -"não pôde receber resposta do servidor Ident no endereço \"%s\", porta %s: %m" +"arquivo da lista de revogação de certificados SSL (CRL) \"%s\" não foi " +"encontrado, ignorando: %s" -#: libpq/auth.c:1737 -#, c-format -msgid "invalidly formatted response from Ident server: \"%s\"" -msgstr "resposta invalidamente formatada pelo servidor Ident: \"%s\"" +#: libpq/be-secure.c:865 +msgid "Certificates will not be checked against revocation list." +msgstr "Certificados não serão verificados na lista de revogação." -#: libpq/auth.c:1772 libpq/auth.c:1802 libpq/auth.c:1830 libpq/auth.c:1906 +#: libpq/be-secure.c:907 #, c-format -msgid "could not get peer credentials: %m" -msgstr "não pôde receber credenciais: %m" +msgid "could not initialize SSL connection: %s" +msgstr "não pôde inicializar conexão SSL: %s" -#: libpq/auth.c:1781 libpq/auth.c:1811 libpq/auth.c:1848 libpq/auth.c:1917 +#: libpq/be-secure.c:916 #, c-format -msgid "local user with ID %d does not exist" -msgstr "usuário local com ID %d não existe" +msgid "could not set SSL socket: %s" +msgstr "não pôde criar soquete SSL: %s" -#: libpq/auth.c:1838 +#: libpq/be-secure.c:942 #, c-format -msgid "could not get effective UID from peer credentials: %m" -msgstr "não pôde obter UID efetivo das credenciais: %m" - -#: libpq/auth.c:1928 -msgid "" -"Ident authentication is not supported on local connections on this platform" -msgstr "" -"autenticação do tipo Ident não é suportada em conexões locais nesta " -"plataforma" +msgid "could not accept SSL connection: %m" +msgstr "não pôde aceitar conexão SSL: %m" -#: libpq/auth.c:2045 libpq/auth.c:2317 libpq/auth.c:2677 -msgid "empty password returned by client" -msgstr "senha vazia retornada pelo cliente" +#: libpq/be-secure.c:946 libpq/be-secure.c:957 +msgid "could not accept SSL connection: EOF detected" +msgstr "não pôde aceitar conexão SSL: EOF detectado" -#: libpq/auth.c:2055 +#: libpq/be-secure.c:951 #, c-format -msgid "error from underlying PAM layer: %s" -msgstr "erro da biblioteca PAM: %s" +msgid "could not accept SSL connection: %s" +msgstr "não pôde aceitar conexão SSL: %s" -#: libpq/auth.c:2124 -#, c-format -msgid "could not create PAM authenticator: %s" -msgstr "não pôde criar autenticador PAM: %s" +#: libpq/be-secure.c:1007 +msgid "SSL certificate's common name contains embedded null" +msgstr "nome do certificado SSL contém nulo embutido" -#: libpq/auth.c:2135 +#: libpq/be-secure.c:1018 #, c-format -msgid "pam_set_item(PAM_USER) failed: %s" -msgstr "pam_set_item(PAM_USER) falhou: %s" +msgid "SSL connection from \"%s\"" +msgstr "conexão SSL de \"%s\"" + +#: libpq/be-secure.c:1069 +msgid "no SSL error reported" +msgstr "nenhum erro SSL relatado" -#: libpq/auth.c:2146 +#: libpq/be-secure.c:1073 #, c-format -msgid "pam_set_item(PAM_CONV) failed: %s" -msgstr "pam_set_item(PAM_CONV) falhou: %s" +msgid "SSL error code %lu" +msgstr "código de erro SSL %lu" -#: libpq/auth.c:2157 +#: foreign/foreign.c:198 #, c-format -msgid "pam_authenticate failed: %s" -msgstr "pam_authenticate falhou: %s" +msgid "user mapping not found for \"%s\"" +msgstr "mapeamento de usuários não foi encontrado para \"%s\"" -#: libpq/auth.c:2168 +#: foreign/foreign.c:321 #, c-format -msgid "pam_acct_mgmt failed: %s" -msgstr "pam_acct_mgmt falhou: %s" +msgid "foreign-data wrapper \"%s\" has no handler" +msgstr "adaptador de dados externos \"%s\" não possui manipulador" -#: libpq/auth.c:2179 +#: foreign/foreign.c:498 #, c-format -msgid "could not release PAM authenticator: %s" -msgstr "não pôde liberar autenticador PAM: %s" +msgid "invalid option \"%s\"" +msgstr "opção \"%s\" é inválida" -#: libpq/auth.c:2212 libpq/auth.c:2216 +#: foreign/foreign.c:499 #, c-format -msgid "could not initialize LDAP: error code %d" -msgstr "não pôde inicializar LDAP: código de erro %d" +msgid "Valid options in this context are: %s" +msgstr "Opções válidas nesse contexto são: %s" -#: libpq/auth.c:2226 +#: regex/regc_pg_locale.c:258 +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" + +#: rewrite/rewriteRemove.c:62 rewrite/rewriteDefine.c:700 +#: rewrite/rewriteDefine.c:762 rewrite/rewriteSupport.c:117 #, c-format -msgid "could not set LDAP protocol version: error code %d" -msgstr "não pôde definir versão do protocolo LDAP: código de erro %d" +msgid "rule \"%s\" for relation \"%s\" does not exist" +msgstr "regra \"%s\" para relação \"%s\" não existe" -#: libpq/auth.c:2255 -msgid "could not load wldap32.dll" -msgstr "não pôde carregar wldap32.dll" +#: rewrite/rewriteRemove.c:66 +#, c-format +msgid "rule \"%s\" for relation \"%s\" does not exist, skipping" +msgstr "regra \"%s\" para relação \"%s\" não existe, ignorando" -#: libpq/auth.c:2263 -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" +#: rewrite/rewriteManip.c:1012 +msgid "conditional utility statements are not implemented" +msgstr "comandos utilitários condicionais não estão implementados" -#: libpq/auth.c:2264 -msgid "LDAP over SSL is not supported on this platform." -msgstr "LDAP sobre SSL não é suportado nesta plataforma." +#: rewrite/rewriteManip.c:1177 +msgid "WHERE CURRENT OF on a view is not implemented" +msgstr "WHERE CURRENT OF em uma visão não está implementado" -#: libpq/auth.c:2279 +#: rewrite/rewriteHandler.c:485 #, c-format -msgid "could not start LDAP TLS session: error code %d" -msgstr "não pôde iniciar sessão LDAP TLS: código de erro %d" +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" -#: libpq/auth.c:2301 -msgid "LDAP server not specified" -msgstr "servidor LDAP não foi especificado" +#: rewrite/rewriteHandler.c:543 +msgid "cannot have RETURNING lists in multiple rules" +msgstr "não pode ter listas RETURNING em múltiplas regras" -#: libpq/auth.c:2353 -msgid "invalid character in user name for LDAP authentication" -msgstr "caracter inválido em nome de usuário para autenticação LDAP" +#: rewrite/rewriteHandler.c:874 rewrite/rewriteHandler.c:892 +#, c-format +msgid "multiple assignments to same column \"%s\"" +msgstr "atribuições múltiplas para mesma coluna \"%s\"" + +#: rewrite/rewriteHandler.c:1627 rewrite/rewriteHandler.c:2022 +#, c-format +msgid "infinite recursion detected in rules for relation \"%s\"" +msgstr "recursão infinita detectada em regras para relação \"%s\"" -#: libpq/auth.c:2368 -#, fuzzy, c-format +#: rewrite/rewriteHandler.c:1883 msgid "" -"could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": " -"error code %d" +"DO INSTEAD NOTHING rules are not supported for data-modifying statements in " +"WITH" msgstr "" -"não pôde realizar ligação inicial LDAP para ldapbinddn \"%s\" no servidor \"%s\": código de erro %d" +"regras DO INSTEAD NOTHING não são suportadas em comandos que modificam dados " +"no WITH" -#: libpq/auth.c:2393 -#, fuzzy, c-format -msgid "could not search LDAP for filter \"%s\" on server \"%s\": error code %d" +#: rewrite/rewriteHandler.c:1897 +msgid "" +"conditional DO INSTEAD rules are not supported for data-modifying statements " +"in WITH" msgstr "" -"não pôde buscar no LDAP por filtro \"%s\" no servidor \"%s\": código de erro %d" +"regras DO INSTEAD condicionais não são suportadas em comandos que modificam " +"dados no WITH" -#: libpq/auth.c:2403 -#, fuzzy, c-format -msgid "LDAP search failed for filter \"%s\" on server \"%s\": no such user" +#: rewrite/rewriteHandler.c:1901 +msgid "DO ALSO rules are not supported for data-modifying statements in WITH" msgstr "" -"busca LDAP falhou para filtro \"%s\" no servidor \"%s\": usuário não existe" +"regras DO ALSO não são suportadas em comandos que modificam dados no WITH" -#: libpq/auth.c:2407 -#, fuzzy, c-format +#: rewrite/rewriteHandler.c:1906 msgid "" -"LDAP search failed for filter \"%s\" on server \"%s\": user is not unique " -"(%ld matches)" +"multi-statement DO INSTEAD rules are not supported for data-modifying " +"statements in WITH" msgstr "" -"busca LDAP falhou para filtro \"%s\" no servidor \"%s\": usuário não é único (%ld usuários)" -"erro %d" +"regras DO INSTEAD com múltiplos comandos não são suportadas em comandos que " +"modificam dados no WITH" -#: libpq/auth.c:2424 -#, fuzzy, 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" +#: rewrite/rewriteHandler.c:2060 +#, c-format +msgid "cannot perform INSERT RETURNING on relation \"%s\"" +msgstr "não pode executar INSERT RETURNING na relação \"%s\"" -#: libpq/auth.c:2444 -#, fuzzy, c-format -msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s" +#: rewrite/rewriteHandler.c:2062 +msgid "" +"You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." msgstr "" -"não pôde desligar após buscar pelo usuário \"%s\" no servidor \"%s\": %s" +"Você precisa de uma regra incondicional ON INSERT DO INSTEAD com uma " +"cláusula RETURNING." -#: libpq/auth.c:2481 +#: rewrite/rewriteHandler.c:2067 #, c-format -msgid "LDAP login failed for user \"%s\" on server \"%s\": error code %d" -msgstr "" -"autenticação LDAP falhou para usuário \"%s\" no servidor \"%s\": código de " -"erro %d" +msgid "cannot perform UPDATE RETURNING on relation \"%s\"" +msgstr "não pode executar UPDATE RETURNING na relação \"%s\"" -#: libpq/auth.c:2509 -#, fuzzy, c-format +#: rewrite/rewriteHandler.c:2069 msgid "" -"certificate authentication failed for user \"%s\": client certificate " -"contains no user name" +"You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." msgstr "" -"autenticação com certificado falhou para usuário \"%s\": certificado " -"cliente não contém usuário" - -#: libpq/auth.c:2633 -msgid "RADIUS server not specified" -msgstr "servidor RADIUS não foi especificado" - -#: libpq/auth.c:2640 -#, fuzzy -msgid "RADIUS secret not specified" -msgstr "segredo RADIUS não foi especificado" +"Você precisa de uma regra incondicional ON UPDATE DO INSTEAD com uma " +"cláusula RETURNING." -#: libpq/auth.c:2656 libpq/hba.c:1213 +#: rewrite/rewriteHandler.c:2074 #, 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" +msgid "cannot perform DELETE RETURNING on relation \"%s\"" +msgstr "não pode executar DELETE RETURNING na relação \"%s\"" -#: libpq/auth.c:2684 +#: rewrite/rewriteHandler.c:2076 msgid "" -"RADIUS authentication does not support passwords longer than 16 characters" +"You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." msgstr "" -"autenticação RADIUS não suporta senhas mais longas do que 16 caracteres" - -#: libpq/auth.c:2695 -#, fuzzy -msgid "could not generate random encryption vector" -msgstr "não pôde gerar vetor de encriptação randômico" +"Você precisa de uma regra incondicional ON DELETE DO INSTEAD com uma " +"cláusula RETURNING." -#: libpq/auth.c:2718 -#, fuzzy -msgid "could not perform MD5 encryption of password" -msgstr "não pôde realizar encriptação MD5 da senha" +#: rewrite/rewriteHandler.c:2140 +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" -#: libpq/auth.c:2740 +#: rewrite/rewriteDefine.c:109 rewrite/rewriteDefine.c:769 #, c-format -msgid "could not create RADIUS socket: %m" -msgstr "não pôde criar soquete RADIUS: %m" +msgid "rule \"%s\" for relation \"%s\" already exists" +msgstr "regra \"%s\" para relação \"%s\" já existe" -#: libpq/auth.c:2761 -#, c-format -msgid "could not bind local RADIUS socket: %m" -msgstr "não pôde se ligar ao soquete RADIUS: %m" +#: rewrite/rewriteDefine.c:287 +msgid "rule actions on OLD are not implemented" +msgstr "ações da regra em OLD não estão implementadas" -#: libpq/auth.c:2771 -#, c-format -msgid "could not send RADIUS packet: %m" -msgstr "não pôde enviar pacote RADIUS: %m" +#: rewrite/rewriteDefine.c:288 +msgid "Use views or triggers instead." +msgstr "Ao invés disso utilize visões ou gatilhos." -#: libpq/auth.c:2796 -#, fuzzy, c-format -msgid "could not check status on RADIUS socket: %m" -msgstr "não pôde verificar estado no soquete RADIUS: %m" +#: rewrite/rewriteDefine.c:292 +msgid "rule actions on NEW are not implemented" +msgstr "ações da regra em NEW não estão implementadas" -#: libpq/auth.c:2803 -#, fuzzy -msgid "timeout waiting for RADIUS response" -msgstr "tempo de espera esgotado para resposta do RADIUS" +#: rewrite/rewriteDefine.c:293 +msgid "Use triggers instead." +msgstr "Ao invés disso utilize gatilhos." -#: libpq/auth.c:2819 -#, fuzzy, c-format -msgid "could not read RADIUS response: %m" -msgstr "não pôde ler resposta RADIUS: %m" +#: rewrite/rewriteDefine.c:306 +msgid "INSTEAD NOTHING rules on SELECT are not implemented" +msgstr "regras INSTEAD NOTHING no SELECT não estão implementadas" + +#: rewrite/rewriteDefine.c:307 +msgid "Use views instead." +msgstr "Ao invés disso utilize visões." + +#: rewrite/rewriteDefine.c:315 +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:327 +msgid "rules on SELECT must have action INSTEAD SELECT" +msgstr "regras no SELECT devem ter ação INSTEAD SELECT" + +#: rewrite/rewriteDefine.c:335 +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:343 +msgid "event qualifications are not implemented for rules on SELECT" +msgstr "qualificações de eventos não estão implementadas para regras no SELECT" -#: libpq/auth.c:2834 libpq/auth.c:2838 +#: rewrite/rewriteDefine.c:368 #, c-format -msgid "RADIUS response was sent from incorrect port: %i" -msgstr "resposta RADIUS foi enviada de porta incorreta: %i" +msgid "\"%s\" is already a view" +msgstr "\"%s\" já é uma visão" -#: libpq/auth.c:2847 +#: rewrite/rewriteDefine.c:392 #, c-format -msgid "RADIUS response too short: %i" -msgstr "resposta RADIUS muito curta: %i" +msgid "view rule for \"%s\" must be named \"%s\"" +msgstr "regra para visão em \"%s\" deve ter nome \"%s\"" -#: libpq/auth.c:2854 +#: rewrite/rewriteDefine.c:417 #, c-format -msgid "RADIUS response has corrupt length: %i (actual length %i)" -msgstr "resposta RADIUS tem tamanho corrompido: %i (tamanho atual %i)" +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" -#: libpq/auth.c:2862 +#: rewrite/rewriteDefine.c:424 #, c-format -msgid "RADIUS response is to a different request: %i (should be %i)" -msgstr "resposta RADIUS é para uma solicitação diferente: %i (deveria ser %i)" +msgid "could not convert table \"%s\" to a view because it has triggers" +msgstr "não pôde converter tabela \"%s\" em visão porque ela tem gatilhos" -#: libpq/auth.c:2887 -#, fuzzy -msgid "could not perform MD5 encryption of received packet" -msgstr "não pôde realizar encriptação MD5 do pacote recebido" +#: rewrite/rewriteDefine.c:426 +msgid "" +"In particular, the table cannot be involved in any foreign key relationships." +msgstr "" +"Em particular, a tabela não pode estar envolvida em relacionamentos de chave " +"estrangeira." -#: libpq/auth.c:2896 -msgid "RADIUS response has incorrect MD5 signature" -msgstr "resposta RADIUS tem assinatura MD5 incorreta" +#: rewrite/rewriteDefine.c:431 +#, c-format +msgid "could not convert table \"%s\" to a view because it has indexes" +msgstr "não pôde converter tabela \"%s\" em visão porque ela tem índices" -#: libpq/auth.c:2907 +#: rewrite/rewriteDefine.c:437 #, c-format -msgid "RADIUS response has invalid code (%i) for user \"%s\"" -msgstr "resposta RADIUS tem código inválido (%i) para usuário \"%s\"" +msgid "could not convert table \"%s\" to a view because it has child tables" +msgstr "" +"não pôde converter tabela \"%s\" em visão porque ela tem tabelas descendentes" + +#: rewrite/rewriteDefine.c:464 +msgid "cannot have multiple RETURNING lists in a rule" +msgstr "não pode ter múltiplas listas RETURNING em uma regra" + +#: rewrite/rewriteDefine.c:469 +msgid "RETURNING lists are not supported in conditional rules" +msgstr "listas RETURNING não são suportadas em regras condicionais" + +#: rewrite/rewriteDefine.c:473 +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:552 +msgid "SELECT rule's target list has too many entries" +msgstr "lista de alvos de uma regra SELECT tem muitas entradas" + +#: rewrite/rewriteDefine.c:553 +msgid "RETURNING list has too many entries" +msgstr "lista RETURNING tem muitas entradas" -#: libpq/hba.c:158 -#, c-format -msgid "authentication file token too long, skipping: \"%s\"" -msgstr "informação no arquivo de autenticação é muito longa, ignorando: \"%s\"" +#: rewrite/rewriteDefine.c:569 +msgid "cannot convert relation containing dropped columns to view" +msgstr "não pode converter relação contendo colunas removidas em visão" -#: libpq/hba.c:351 +#: rewrite/rewriteDefine.c:574 #, c-format -msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" +msgid "SELECT rule's target entry %d has different column name from \"%s\"" msgstr "" -"não pôde abrir arquivo de autenticação secundário \"@%s\" como \"%s\": %m" +"entrada alvo %d de uma regra SELECT tem nome de coluna diferente de \"%s\"" -#. translator: the second %s is a list of auth methods -#: libpq/hba.c:651 +#: rewrite/rewriteDefine.c:580 #, c-format -msgid "" -"authentication option \"%s\" is only valid for authentication methods %s" +msgid "SELECT rule's target entry %d has different type from column \"%s\"" msgstr "" -"opção de autenticação \"%s\" só é válida para métodos de autenticação %s" +"entrada alvo %d de uma regra SELECT tem tipo diferente da coluna \"%s\"" -#: libpq/hba.c:667 +#: rewrite/rewriteDefine.c:582 #, 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:713 -msgid "hostssl not supported on this platform" -msgstr "hostssl não é suportado nessa plataforma" - -#: libpq/hba.c:714 -msgid "Compile with --with-openssl to use SSL connections." -msgstr "Compile com --with-openssl para utilizar conexões SSL." +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\"" -#: libpq/hba.c:736 +#: rewrite/rewriteDefine.c:597 #, c-format -msgid "invalid connection type \"%s\"" -msgstr "tipo de conexão \"%s\" inválido" +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\"" -#: libpq/hba.c:749 -msgid "end-of-line before database specification" -msgstr "fim de linha antes da especificação de banco de dados" +#: rewrite/rewriteDefine.c:599 +#, 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\"" -#: libpq/hba.c:762 -msgid "end-of-line before role specification" -msgstr "fim de linha antes da especificação de role" +#: rewrite/rewriteDefine.c:607 +msgid "SELECT rule's target list has too few entries" +msgstr "lista de alvos de uma regra SELECT tem poucas entradas" -#: libpq/hba.c:777 -msgid "end-of-line before IP address specification" -msgstr "fim de linha antes da especificação de endereço IP" +#: rewrite/rewriteDefine.c:608 +msgid "RETURNING list has too few entries" +msgstr "lista RETURNING tem poucas entradas" -#: libpq/hba.c:823 +#: rewrite/rewriteSupport.c:156 #, c-format -msgid "invalid IP address \"%s\": %s" -msgstr "endereço IP \"%s\" inválido: %s" +msgid "rule \"%s\" does not exist" +msgstr "regra \"%s\" não existe" -#: libpq/hba.c:846 +#: rewrite/rewriteSupport.c:165 #, c-format -msgid "invalid CIDR mask in address \"%s\"" -msgstr "máscara CIDR inválida no endereço \"%s\"" +msgid "there are multiple rules named \"%s\"" +msgstr "há múltiplas regras com nome \"%s\"" -#: libpq/hba.c:864 -msgid "end-of-line before netmask specification" -msgstr "fim de linha antes da especificação de máscara de rede" +#: rewrite/rewriteSupport.c:166 +msgid "Specify a relation name as well as a rule name." +msgstr "Especifique um nome de relação bem como um nome de regra." -#: libpq/hba.c:876 +#: main/main.c:247 #, c-format -msgid "invalid IP mask \"%s\": %s" -msgstr "máscara de endereço IP \"%s\" inválida: %s" - -#: libpq/hba.c:893 -msgid "IP address and mask do not match" -msgstr "endereço IP e máscara não correspodem" - -#: libpq/hba.c:908 -msgid "end-of-line before authentication method" -msgstr "fim de linha antes do método de autenticação" +msgid "%s: setsysinfo failed: %s\n" +msgstr "%s: setsysinfo falhou: %s\n" -#: libpq/hba.c:979 +#: main/main.c:269 #, c-format -msgid "invalid authentication method \"%s\"" -msgstr "método de autenticação \"%s\" inválido" +msgid "%s: WSAStartup failed: %d\n" +msgstr "%s: WSAStartup falhou: %d\n" -#: libpq/hba.c:990 +#: main/main.c:288 #, c-format -msgid "invalid authentication method \"%s\": not supported on this platform" +msgid "" +"%s is the PostgreSQL server.\n" +"\n" msgstr "" -"método de autenticação \"%s\" inválido: não é suportado nesta plataforma" - -#: libpq/hba.c:1003 -msgid "krb5 authentication is not supported on local sockets" -msgstr "autenticação krb5 não é suportada em soquetes locais" - -#: libpq/hba.c:1014 -msgid "gssapi authentication is not supported on local sockets" -msgstr "autenticação do tipo gssapi não é suportada em soquetes locais" - -#: libpq/hba.c:1031 -msgid "cert authentication is only supported on hostssl connections" -msgstr "autenticação do tipo cert só é suportada em conexões hostssl" +"%s é o servidor PostgreSQL.\n" +"\n" -#: libpq/hba.c:1052 +#: main/main.c:289 #, 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:1067 -msgid "ident, krb5, gssapi, sspi and cert" -msgstr "ident, krb5, gssapi, sspi e cert" - -#: libpq/hba.c:1081 -msgid "clientcert can only be configured for \"hostssl\" rows" -msgstr "clientcert só pode ser configurado para registros \"hostssl\"" - -#: libpq/hba.c:1092 msgid "" -"client certificates can only be checked if a root certificate store is " -"available" +"Usage:\n" +" %s [OPTION]...\n" +"\n" msgstr "" -"certificados cliente só podem ser verificados se um certificado raiz estiver " -"disponível" +"Uso:\n" +" %s [OPÇÃO]...\n" +"\n" -#: libpq/hba.c:1093 -msgid "Make sure the root.crt file is present and readable." -msgstr "Tenha certeza que o arquivo root.crt está presente e pode ser lido" +#: main/main.c:290 +#, c-format +msgid "Options:\n" +msgstr "Opções:\n" -#: libpq/hba.c:1106 -msgid "clientcert can not be set to 0 when using \"cert\" authentication" +#: main/main.c:292 +#, c-format +msgid " -A 1|0 enable/disable run-time assert checking\n" msgstr "" -"clientcert não pode ser definido com 0 ao utilizar autenticação \"cert\"" +" -A 1|0 habilita/desabilita verificação de asserção em tempo de " +"execução\n" -#: libpq/hba.c:1140 +#: main/main.c:294 #, c-format -msgid "invalid LDAP port number: \"%s\"" -msgstr "número de porta LDAP é inválido: \"%s\"" +msgid " -B NBUFFERS number of shared buffers\n" +msgstr " -B NBUFFERS número de buffers compartilhados\n" -#: libpq/hba.c:1186 libpq/hba.c:1194 -msgid "krb5, gssapi and sspi" -msgstr "krb5, gssapi e sspi" +#: main/main.c:295 +#, 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" -#: libpq/hba.c:1232 +#: main/main.c:296 #, c-format -msgid "invalid RADIUS port number: \"%s\"" -msgstr "número de porta RADIUS é inválido: \"%s\"" +msgid " -d 1-5 debugging level\n" +msgstr " -d 1-5 nível de depuração\n" -#: libpq/hba.c:1252 -#, fuzzy, c-format -msgid "unrecognized authentication option name: \"%s\"" -msgstr "nome de opção de autenticação desconhecido: \"%s\"" +#: main/main.c:297 +#, c-format +msgid " -D DATADIR database directory\n" +msgstr " -D DIRDADOS diretório do banco de dados\n" -#: libpq/hba.c:1284 -msgid "" -"cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, or ldapsearchattribute " -"together with ldapprefix" -msgstr "" -"não pode utilizar ldapbasedn, ldapbinddn, ldapbindpasswd ou " -"ldapsearchattribute junto com ldapprefix" +#: main/main.c:298 +#, c-format +msgid " -e use European date input format (DMY)\n" +msgstr " -e usa formato de entrada de data europeu (DMY)\n" -#: libpq/hba.c:1294 -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" +#: main/main.c:299 +#, c-format +msgid " -F turn fsync off\n" +msgstr " -F desabilita o fsync\n" -#: libpq/hba.c:1614 +#: main/main.c:300 #, c-format -msgid "invalid regular expression \"%s\": %s" -msgstr "expressão regular \"%s\" é inválida: %s" +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" -#: libpq/hba.c:1637 +#: main/main.c:301 #, c-format -msgid "regular expression match for \"%s\" failed: %s" -msgstr "correspondência de expressão regular \"%s\" falhou: %s" +msgid " -i enable TCP/IP connections\n" +msgstr " -i habilita conexões TCP/IP\n" -#: libpq/hba.c:1655 +#: main/main.c:302 #, 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\"" +msgid " -k DIRECTORY Unix-domain socket location\n" +msgstr " -k DIRETÓRIO local do soquete de domínio Unix\n" -#: libpq/hba.c:1721 +#: main/main.c:304 #, c-format -msgid "missing entry in file \"%s\" at end of line %d" -msgstr "faltando entrada no arquivo \"%s\" no fim da linha %d" +msgid " -l enable SSL connections\n" +msgstr " -l habilita conexões SSL\n" -#: libpq/hba.c:1762 -#, fuzzy, c-format -msgid "provided user name (%s) and authenticated user name (%s) do not match" -msgstr "usuário fornecido (%s) e usuário autenticado (%s) não correspondem" +#: main/main.c:306 +#, 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" -#: libpq/hba.c:1783 -#, fuzzy, c-format -msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\"" +#: main/main.c:307 +#, c-format +msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n" msgstr "" -"não há correspondência em mapa de usuários para usuário \"%s\" autenticado " -"como \"%s\"" +" -o OPÇÕES passa \"OPÇÕES\" para cada processo servidor (obsoleto)\n" -#: libpq/hba.c:1807 +#: main/main.c:308 #, c-format -msgid "could not open usermap file \"%s\": %m" -msgstr "não pôde abrir arquivo com mapa de usuários \"%s\": %m" +msgid " -p PORT port number to listen on\n" +msgstr " -p PORTA número da porta para escutar\n" -#: libpq/be-secure.c:283 libpq/be-secure.c:378 +#: main/main.c:309 #, c-format -msgid "SSL error: %s" -msgstr "erro de SSL: %s" +msgid " -s show statistics after each query\n" +msgstr " -s mostra estatísticas após cada consulta\n" -#: libpq/be-secure.c:292 libpq/be-secure.c:387 libpq/be-secure.c:951 +#: main/main.c:310 #, c-format -msgid "unrecognized SSL error code: %d" -msgstr "código de erro SSL desconhecido: %d" - -#: libpq/be-secure.c:331 libpq/be-secure.c:335 libpq/be-secure.c:345 -msgid "SSL renegotiation failure" -msgstr "renegociação SSL falhou" +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" -#: libpq/be-secure.c:339 -msgid "SSL failed to send renegotiation request" -msgstr "SSL falhou ao enviar pedido de renegociação" +#: main/main.c:311 +#, c-format +msgid " --NAME=VALUE set run-time parameter\n" +msgstr " --NOME=VALOR define o parâmetro em tempo de execução\n" -#: libpq/be-secure.c:736 +#: main/main.c:312 #, c-format -msgid "could not create SSL context: %s" -msgstr "não pôde criar contexto SSL: %s" +msgid " --describe-config describe configuration parameters, then exit\n" +msgstr " --describe-config descreve parâmetros de configuração e termina\n" -#: libpq/be-secure.c:746 +#: main/main.c:313 #, c-format -msgid "could not load server certificate file \"%s\": %s" -msgstr "não pôde carregar arquivo de certificado do servidor \"%s\": %s" +msgid " --help show this help, then exit\n" +msgstr " --help mostra esta ajuda e termina\n" -#: libpq/be-secure.c:752 +#: main/main.c:314 #, c-format -msgid "could not access private key file \"%s\": %m" -msgstr "não pôde acessar arquivo da chave privada \"%s\": %m" +msgid " --version output version information, then exit\n" +msgstr " --version mostra informação sobre a versão e termina\n" -#: libpq/be-secure.c:767 +#: main/main.c:316 #, c-format -msgid "private key file \"%s\" has group or world access" -msgstr "arquivo da chave privada \"%s\" tem acesso para grupo ou outros" +msgid "" +"\n" +"Developer options:\n" +msgstr "" +"\n" +"Opções para desenvolvedor:\n" -#: libpq/be-secure.c:769 -msgid "Permissions should be u=rw (0600) or less." -msgstr "Permissões devem ser u=rwx (0600) ou menos." +#: main/main.c:317 +#, 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" -#: libpq/be-secure.c:776 +#: main/main.c:318 #, c-format -msgid "could not load private key file \"%s\": %s" -msgstr "não pôde carregar arquivo da chave privada \"%s\": %s" +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" -#: libpq/be-secure.c:781 +#: main/main.c:319 #, c-format -msgid "check of private key failed: %s" -msgstr "verificação de chave privada falhou: %s" +msgid " -O allow system table structure changes\n" +msgstr "" +" -O permite mudanças na estrutura de tabelas do sistema\n" -#: libpq/be-secure.c:809 +#: main/main.c:320 #, c-format -msgid "could not access root certificate file \"%s\": %m" -msgstr "não pôde acessar arquivo do certificado raiz \"%s\": %m" +msgid " -P disable system indexes\n" +msgstr " -P desabilita índices do sistema\n" -#: libpq/be-secure.c:820 +#: main/main.c:321 #, c-format -msgid "could not load root certificate file \"%s\": %s" -msgstr "não pôde carregar arquivo do certificado raiz \"%s\": %s" +msgid " -t pa|pl|ex show timings after each query\n" +msgstr " -t pa|pl|ex mostra duração depois de cada consulta\n" -#: libpq/be-secure.c:843 +#: main/main.c:322 #, 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:845 -msgid "SSL library does not support certificate revocation lists." +msgid " -T send SIGSTOP to all backend processes if one dies\n" msgstr "" -"biblioteca SSL instalada não suporta listas de revogação de certificados." +" -T envia SIGSTOP para todos os servidores se um deles morrer\n" -#: libpq/be-secure.c:852 +#: main/main.c:323 #, c-format -msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s" +msgid " -W NUM wait NUM seconds to allow attach from a debugger\n" msgstr "" -"arquivo da lista de revogação de certificados SSL (CRL) \"%s\" não foi " -"encontrado, ignorando: %s" - -#: libpq/be-secure.c:854 -msgid "Certificates will not be checked against revocation list." -msgstr "Certificados não serão verificados na lista de revogação." +" -W NUM espera NUM segundos para permitir que o depurador seja " +"anexado\n" -#: libpq/be-secure.c:896 +#: main/main.c:325 #, c-format -msgid "could not initialize SSL connection: %s" -msgstr "não pôde inicializar conexão SSL: %s" +msgid "" +"\n" +"Options for single-user mode:\n" +msgstr "" +"\n" +"Opções para modo monousuário:\n" -#: libpq/be-secure.c:905 +#: main/main.c:326 #, c-format -msgid "could not set SSL socket: %s" -msgstr "não pôde criar soquete SSL: %s" +msgid " --single selects single-user mode (must be first argument)\n" +msgstr "" +" --single seleciona modo monousuário (deve ser o primeiro " +"argumento)\n" -#: libpq/be-secure.c:931 +#: main/main.c:327 #, c-format -msgid "could not accept SSL connection: %m" -msgstr "não pôde aceitar conexão SSL: %m" - -#: libpq/be-secure.c:935 libpq/be-secure.c:946 -msgid "could not accept SSL connection: EOF detected" -msgstr "não pôde aceitar conexão SSL: EOF detectado" +msgid " DBNAME database name (defaults to user name)\n" +msgstr "" +" NOMEBD nome do banco de dados (padrão é o nome do usuário)\n" -#: libpq/be-secure.c:940 +#: main/main.c:328 #, c-format -msgid "could not accept SSL connection: %s" -msgstr "não pôde aceitar conexão SSL: %s" - -#: libpq/be-secure.c:991 -msgid "SSL certificate's common name contains embedded null" -msgstr "nome do certificado SSL contém nulo embutido" +msgid " -d 0-5 override debugging level\n" +msgstr " -d 0-5 muda o nível de depuração\n" -#: libpq/be-secure.c:998 +#: main/main.c:329 #, c-format -msgid "SSL connection from \"%s\"" -msgstr "conexão SSL de \"%s\"" - -#: libpq/be-secure.c:1042 -msgid "no SSL error reported" -msgstr "nenhum erro SSL relatado" +msgid " -E echo statement before execution\n" +msgstr " -E mostra consulta antes da execução\n" -#: libpq/be-secure.c:1046 +#: main/main.c:330 #, c-format -msgid "SSL error code %lu" -msgstr "código de erro SSL %lu" +msgid " -j do not use newline as interactive query delimiter\n" +msgstr "" +" -j não usa nova linha como delimitador de consulta iterativa\n" -#: ../port/strerror.c:25 +#: main/main.c:331 main/main.c:336 #, c-format -msgid "unrecognized error %d" -msgstr "erro desconhecido %d" +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" -#: ../port/chklocale.c:326 ../port/chklocale.c:332 +#: main/main.c:333 #, c-format -msgid "could not determine encoding for locale \"%s\": codeset is \"%s\"" +msgid "" +"\n" +"Options for bootstrapping mode:\n" msgstr "" -"não pôde determinar codificação para configuração regional \"%s\": codeset é " -"\"%s\"" - -#: ../port/chklocale.c:334 -msgid "Please report this to ." -msgstr "Por favor relate isto a ." +"\n" +"Opções para modo de ativação:\n" -#: ../port/open.c:113 -msgid "sharing violation" -msgstr "violação de compartilhamento" +#: main/main.c:334 +#, 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" -#: ../port/open.c:113 -msgid "lock violation" -msgstr "violação de bloqueio" +#: main/main.c:335 +#, 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" -#: ../port/open.c:112 +#: main/main.c:337 #, c-format -msgid "could not open file \"%s\": %s" -msgstr "não pôde abrir arquivo \"%s\": %s" +msgid " -x NUM internal use\n" +msgstr " -x NUM uso interno\n" -#: ../port/open.c:114 -msgid "Continuing to retry for 30 seconds." -msgstr "Continuar tentando por 30 segundos." +#: main/main.c:339 +#, 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" +"Por favor leia a documentação para verificar a lista completa de parâmetros\n" +"de configuração em tempo de execução e como definí-los pela linha de " +"comando\n" +"ou no arquivo de configuração.\n" +"\n" +"Relate erros a .\n" -#: ../port/open.c:115 +#: main/main.c:353 msgid "" -"You might have antivirus, backup, or similar software interfering with the " -"database system." +"\"root\" execution of the PostgreSQL server is not permitted.\n" +"The server must be started under an unprivileged user ID to prevent\n" +"possible system security compromise. See the documentation for\n" +"more information on how to properly start the server.\n" msgstr "" -"Você pode ter programa de antivírus, cópia de segurança ou similares " -"interferindo com o sistema de banco de dados." +"execução do servidor PostgreSQL pelo \"root\" não é permitida.\n" +"O servidor deve ser iniciado por um usuário sem privilégios para previnir\n" +"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" -#: ../port/dirmod.c:75 ../port/dirmod.c:88 ../port/dirmod.c:101 +#: main/main.c:370 #, c-format -msgid "out of memory\n" -msgstr "sem memória\n" +msgid "%s: real and effective user IDs must match\n" +msgstr "%s: IDs do usuário real e efetivo devem corresponder\n" -#: ../port/dirmod.c:283 -#, c-format -msgid "could not set junction for \"%s\": %s" -msgstr "não pôde definir junção para \"%s\": %s" +#: main/main.c:377 +msgid "" +"Execution of PostgreSQL by a user with administrative permissions is not\n" +"permitted.\n" +"The server must be started under an unprivileged user ID to prevent\n" +"possible system security compromises. See the documentation for\n" +"more information on how to properly start the server.\n" +msgstr "" +"Execução do servidor PostgreSQL por um usuário com permissões " +"administrativas não é\n" +"permitida.\n" +"O servidor deve ser iniciado por um usuário sem privilégios para previnir\n" +"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" -#: ../port/dirmod.c:286 +#: main/main.c:398 #, c-format -msgid "could not set junction for \"%s\": %s\n" -msgstr "não pôde definir junção para \"%s\": %s\n" +msgid "%s: invalid effective UID: %d\n" +msgstr "%s: UID efetivo é inválido: %d\n" -#: ../port/dirmod.c:325 +#: main/main.c:411 #, c-format -msgid "could not open directory \"%s\": %s\n" -msgstr "não pôde abrir diretório \"%s\": %s\n" +msgid "%s: could not determine user name (GetUserName failed)\n" +msgstr "%s: não pôde determinar nome de usuário (GetUserName falhou)\n" -#: ../port/dirmod.c:362 +#: ../port/win32error.c:189 #, c-format -msgid "could not read directory \"%s\": %s\n" -msgstr "não pôde ler diretório \"%s\": %s\n" +msgid "mapped win32 error code %lu to %d" +msgstr "código de erro win32 mapeado de %lu para %d" -#: ../port/dirmod.c:445 +#: ../port/win32error.c:201 #, 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" +msgid "unrecognized win32 error code: %lu" +msgstr "código de erro win32 desconhecido: %lu" -#: ../port/dirmod.c:472 ../port/dirmod.c:489 +#: ../port/strerror.c:25 #, 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" +msgid "unrecognized error %d" +msgstr "erro desconhecido %d" #: ../port/exec.c:125 ../port/exec.c:239 ../port/exec.c:282 #, c-format @@ -17180,37 +18678,108 @@ msgstr "não pôde mudar diretório para \"%s\"" msgid "could not read symbolic link \"%s\"" msgstr "não pôde ler link simbólico \"%s\"" -#: ../port/exec.c:516 +#: ../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" msgstr "processo filho terminou com código de saída %d" -#: ../port/exec.c:520 +#: ../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "processo filho foi terminado pela exceção 0x%X" -#: ../port/exec.c:529 +#: ../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "processo filho foi terminado pelo sinal %s" -#: ../port/exec.c:532 +#: ../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "processo filho foi terminado pelo sinal %d" -#: ../port/exec.c:536 +#: ../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "processo filho terminou com status desconhecido %d" -#: ../port/win32error.c:184 +#: ../port/chklocale.c:329 ../port/chklocale.c:335 #, c-format -msgid "mapped win32 error code %lu to %d" -msgstr "código de erro win32 mapeado de %lu para %d" +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/chklocale.c:337 +msgid "Please report this to ." +msgstr "Por favor relate isto a ." -#: ../port/win32error.c:195 +#: ../port/dirmod.c:75 ../port/dirmod.c:88 ../port/dirmod.c:101 #, c-format -msgid "unrecognized win32 error code: %lu" -msgstr "código de erro win32 desconhecido: %lu" +msgid "out of memory\n" +msgstr "sem memória\n" + +#: ../port/dirmod.c:283 +#, c-format +msgid "could not set junction for \"%s\": %s" +msgstr "não pôde definir junção para \"%s\": %s" + +#: ../port/dirmod.c:286 +#, 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:358 +#, c-format +msgid "could not get junction for \"%s\": %s" +msgstr "não pôde obter junção para \"%s\": %s" + +#: ../port/dirmod.c:361 +#, 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:443 +#, c-format +msgid "could not open directory \"%s\": %s\n" +msgstr "não pôde abrir diretório \"%s\": %s\n" + +#: ../port/dirmod.c:480 +#, c-format +msgid "could not read directory \"%s\": %s\n" +msgstr "não pôde ler diretório \"%s\": %s\n" + +#: ../port/dirmod.c:563 +#, 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:590 ../port/dirmod.c:607 +#, 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/open.c:113 +msgid "sharing violation" +msgstr "violação de compartilhamento" + +#: ../port/open.c:113 +msgid "lock violation" +msgstr "violação de bloqueio" + +#: ../port/open.c:112 +#, c-format +msgid "could not open file \"%s\": %s" +msgstr "não pôde abrir arquivo \"%s\": %s" + +#: ../port/open.c:114 +msgid "Continuing to retry for 30 seconds." +msgstr "Continuar tentando por 30 segundos." + +#: ../port/open.c:115 +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." diff --git a/src/backend/po/ru.po b/src/backend/po/ru.po new file mode 100644 index 0000000000..03cbf3e880 --- /dev/null +++ b/src/backend/po/ru.po @@ -0,0 +1,18728 @@ +# Russian message translation file for postgres +# Copyright (C) 2012 PostgreSQL Global Development Group +# Distributed under the same licensing terms as PostgreSQL itself. +# Serguei A. Mokhov , 2001-2004. +# Alexander Lakhin , 2012. +# +# ChangeLog: +# - April 3, 2012: Bug fixes. Alexander Lakhin . +# - February 22, 2012: Minor fixes: Alexander Lakhin +# - January 3 - January 29, 2012: Fixes, completion, and updates for 9.1: Alexander Lakhin +# - December 10, 2004 - January 17, 2005: +# - Updates for 8.0; +# - With terminology suggestions from Oleg Bartunov +# - March 27 - December 10, 2004: Updates for 7.4.x/8.0 branches; +# - July - August 23, 2003: Updates for 7.4.x; +# - January 2, 2003: Fuzzy fixes, Serguei A. Mokhov +# - October 12, 2002: Post-7.3 beta 2, Fuzzy fixes, Serguei A. Mokhov +# - September 14, 2002: Post-7.3 beta 1, Take II, Serguei A. Mokhov +# - September 7, 2002: Post-7.3 beta 1 updated messages, Serguei A. Mokhov +# - September 2001 - August 2002: Initial translation and maintenance, Serguei A. Mokhov +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 9.1\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2013-06-15 21:09+0000\n" +"PO-Revision-Date: 2013-06-16 10:44+0400\n" +"Last-Translator: Alexander Lakhin \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"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" + +#: postmaster/bgwriter.c:483 +#, 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/bgwriter.c:487 +msgid "" +"Consider increasing the configuration parameter \"checkpoint_segments\"." +msgstr "Возможно, стоит увеличить параметр \"checkpoint_segments\"." + +#: postmaster/bgwriter.c:599 +#, c-format +msgid "transaction log switch forced (archive_timeout=%d)" +msgstr "принудительное переключение журнала транзакций (archive_timeout=%d)" + +#: postmaster/bgwriter.c:1062 +msgid "checkpoint request failed" +msgstr "сбой при запросе контрольной точки" + +#: postmaster/bgwriter.c:1063 +msgid "Consult recent messages in the server log for details." +msgstr "Смотрите подробности в протоколе сервера." + +#: postmaster/bgwriter.c:1245 +#, c-format +msgid "compacted fsync request queue from %d entries to %d entries" +msgstr "очередь запросов fsync сжата (было записей: %d, стало: %d)" + +#: postmaster/pgstat.c:330 +#, c-format +msgid "could not resolve \"localhost\": %s" +msgstr "не удалось разрешить \"localhost\": %s" + +#: postmaster/pgstat.c:353 +msgid "trying another address for the statistics collector" +msgstr "проба другого адреса для сборщика статистики" + +#: postmaster/pgstat.c:362 +#, c-format +msgid "could not create socket for statistics collector: %m" +msgstr "не удалось создать сокет для сборщика статистики: %m" + +#: postmaster/pgstat.c:374 +#, c-format +msgid "could not bind socket for statistics collector: %m" +msgstr "не удалось привязаться к сокету для сборщика статистики: %m" + +#: postmaster/pgstat.c:385 +#, c-format +msgid "could not get address of socket for statistics collector: %m" +msgstr "не удалось получить адрес сокета для сборщика статистики: %m" + +#: postmaster/pgstat.c:401 +#, c-format +msgid "could not connect socket for statistics collector: %m" +msgstr "не удалось подключить сокет для сборщика статистики: %m" + +#: postmaster/pgstat.c:422 +#, c-format +msgid "could not send test message on socket for statistics collector: %m" +msgstr "" +"не удалось послать тестовое сообщение в сокет для сборщика статистики: %m" + +#: postmaster/pgstat.c:448 postmaster/pgstat.c:2996 +#, c-format +msgid "select() failed in statistics collector: %m" +msgstr "сбой select() в сборщике статистики: %m" + +#: postmaster/pgstat.c:463 +msgid "test message did not get through on socket for statistics collector" +msgstr "тестовое сообщение не прошло через сокет для сборщика статистики" + +#: postmaster/pgstat.c:478 +#, c-format +msgid "could not receive test message on socket for statistics collector: %m" +msgstr "" +"тестовое сообщение через сокет для сборщика статистики получить не удалось: " +"%m" + +#: postmaster/pgstat.c:488 +msgid "incorrect test message transmission on socket for statistics collector" +msgstr "тестовое сообщение через сокет для сборщика статистики прошло неверно" + +#: postmaster/pgstat.c:511 +#, c-format +msgid "could not set statistics collector socket to nonblocking mode: %m" +msgstr "" +"не удалось переключить сокет сборщика статистики в неблокирующий режим: %m" + +#: postmaster/pgstat.c:521 +msgid "disabling statistics collector for lack of working socket" +msgstr "сборщик статистики отключается из-за нехватки рабочего сокета" + +#: postmaster/pgstat.c:623 +#, c-format +msgid "could not fork statistics collector: %m" +msgstr "не удалось породить процесс сборщика статистики: %m" + +#: postmaster/pgstat.c:1153 postmaster/pgstat.c:1177 postmaster/pgstat.c:1208 +msgid "must be superuser to reset statistics counters" +msgstr "для сброса счётчиков статистики нужно быть суперпользователем" + +#: postmaster/pgstat.c:1184 utils/adt/pgstatfuncs.c:1547 +#, c-format +msgid "unrecognized reset target: \"%s\"" +msgstr "запрошен сброс неизвестного счётчика: \"%s\"" + +#: postmaster/pgstat.c:1185 utils/adt/pgstatfuncs.c:1548 +msgid "Target must be \"bgwriter\"." +msgstr "Допустимый счётчик: \"bgwriter\"." + +#: postmaster/pgstat.c:2975 +#, c-format +msgid "poll() failed in statistics collector: %m" +msgstr "сбой poll() в сборщике статистики: %m" + +#: postmaster/pgstat.c:3020 +#, c-format +msgid "could not read statistics message: %m" +msgstr "не удалось прочитать сообщение статистики: %m" + +#: postmaster/pgstat.c:3291 +#, c-format +msgid "could not open temporary statistics file \"%s\": %m" +msgstr "не удалось открыть временный файл статистики \"%s\": %m" + +#: postmaster/pgstat.c:3363 +#, c-format +msgid "could not write temporary statistics file \"%s\": %m" +msgstr "не удалось записать во временный файл статистики \"%s\": %m" + +#: postmaster/pgstat.c:3372 +#, c-format +msgid "could not close temporary statistics file \"%s\": %m" +msgstr "не удалось закрыть временный файл статистики \"%s\": %m" + +#: postmaster/pgstat.c:3380 +#, c-format +msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" +msgstr "" +"не удалось переименовать временный файл статистики из \"%s\" в \"%s\": %m" + +#: postmaster/pgstat.c:3486 postmaster/pgstat.c:3715 +#, c-format +msgid "could not open statistics file \"%s\": %m" +msgstr "не удалось открыть файл статистики \"%s\": %m" + +#: postmaster/pgstat.c:3498 postmaster/pgstat.c:3508 postmaster/pgstat.c:3530 +#: postmaster/pgstat.c:3545 postmaster/pgstat.c:3608 postmaster/pgstat.c:3626 +#: postmaster/pgstat.c:3642 postmaster/pgstat.c:3660 postmaster/pgstat.c:3676 +#: postmaster/pgstat.c:3727 postmaster/pgstat.c:3738 +#, c-format +msgid "corrupted statistics file \"%s\"" +msgstr "файл статистики \"%s\" испорчен" + +#: postmaster/pgstat.c:4036 +msgid "database hash table corrupted during cleanup --- abort" +msgstr "таблица хэша базы данных испорчена при очистке --- прерывание" + +#: 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:781 +msgid "autovacuum launcher shutting down" +msgstr "процесс запуска автоочистки завершается" + +#: postmaster/autovacuum.c:1416 +#, c-format +msgid "could not fork autovacuum worker process: %m" +msgstr "не удалось породить рабочий процесс автоочистки: %m" + +#: postmaster/autovacuum.c:1634 +#, c-format +msgid "autovacuum: processing database \"%s\"" +msgstr "автоочистка: обработка базы данных \"%s\"" + +#: postmaster/autovacuum.c:2037 +#, c-format +msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"" +msgstr "" +"автоочистка: удаление устаревшей врем. таблицы \"%s\".\"%s\" в базе \"%s\"" + +#: postmaster/autovacuum.c:2049 +#, c-format +msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\"" +msgstr "" +"автоочистка: найдена устаревшая врем. таблица \"%s\".\"%s\" в базе \"%s\"" + +#: postmaster/autovacuum.c:2319 +#, c-format +msgid "automatic vacuum of table \"%s.%s.%s\"" +msgstr "автоматическая очистка таблицы \"%s.%s.%s\"" + +#: postmaster/autovacuum.c:2322 +#, c-format +msgid "automatic analyze of table \"%s.%s.%s\"" +msgstr "автоматический анализ таблицы \"%s.%s.%s\"" + +#: postmaster/autovacuum.c:2808 +msgid "autovacuum not started because of misconfiguration" +msgstr "автоочистка не запущена из-за неправильной конфигурации" + +#: postmaster/autovacuum.c:2809 +msgid "Enable the \"track_counts\" option." +msgstr "Включите параметр \"track_counts\"." + +#: postmaster/syslogger.c:418 +#, c-format +msgid "select() failed in logger process: %m" +msgstr "сбой select() в процессе протоколирования: %m" + +#: postmaster/syslogger.c:430 postmaster/syslogger.c:1014 +#, c-format +msgid "could not read from logger pipe: %m" +msgstr "не удалось прочитать из канала протоколирования: %m" + +#: postmaster/syslogger.c:477 +msgid "logger shutting down" +msgstr "остановка протоколирования" + +#: postmaster/syslogger.c:521 postmaster/syslogger.c:535 +#, c-format +msgid "could not create pipe for syslog: %m" +msgstr "не удалось создать канал для syslog: %m" + +#: postmaster/syslogger.c:571 +#, c-format +msgid "could not fork system logger: %m" +msgstr "не удалось породить процесс системного протоколирования: %m" + +#: postmaster/syslogger.c:602 +#, c-format +msgid "could not redirect stdout: %m" +msgstr "не удалось перенаправить stdout: %m" + +#: postmaster/syslogger.c:607 postmaster/syslogger.c:625 +#, c-format +msgid "could not redirect stderr: %m" +msgstr "не удалось перенаправить stderr: %m " + +#: postmaster/syslogger.c:969 +#, c-format +msgid "could not write to log file: %s\n" +msgstr "не удалось записать в файл протокола: %s\n" + +#: postmaster/syslogger.c:1095 +#, c-format +msgid "could not open log file \"%s\": %m" +msgstr "не удалось открыть файл протокола \"%s\": %m" + +#: postmaster/syslogger.c:1157 postmaster/syslogger.c:1201 +msgid "disabling automatic rotation (use SIGHUP to re-enable)" +msgstr "отключение автопрокрутки (чтобы включить, передайте SIGHUP)" + +#: 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 "режим архивации включён, но команда архивации не задана" + +#: 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:2888 +msgid "" +"See C include file \"ntstatus.h\" for a description of the hexadecimal value." +msgstr "" +"Описание этого шестнадцатеричного значения ищите во включаемом C-файле " +"\"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:612 +#, c-format +msgid "archived transaction log file \"%s\"" +msgstr "файл архива журнала транзакций \"%s\"" + +#: postmaster/pgarch.c:661 +#, c-format +msgid "could not open archive status directory \"%s\": %m" +msgstr "не удалось открыть каталог состояния архива \"%s\": %m" + +#: postmaster/pgarch.c:715 access/transam/xlog.c:4613 +#: access/transam/xlog.c:5573 access/transam/xlog.c:5626 +#: access/transam/xlog.c:6415 +#, c-format +msgid "could not rename file \"%s\" to \"%s\": %m" +msgstr "не удалось переименовать файл \"%s\" в \"%s\": %m" + +#: postmaster/postmaster.c:574 +#, c-format +msgid "%s: invalid argument for option -f: \"%s\"\n" +msgstr "%s: неверный аргумент для параметра -f: \"%s\"\n" + +#: postmaster/postmaster.c:660 +#, c-format +msgid "%s: invalid argument for option -t: \"%s\"\n" +msgstr "%s: неверный аргумент для параметра -t: \"%s\"\n" + +#: postmaster/postmaster.c:683 bootstrap/bootstrap.c:277 tcop/postgres.c:3441 +#, c-format +msgid "--%s requires a value" +msgstr "для --%s требуется значение" + +#: postmaster/postmaster.c:688 bootstrap/bootstrap.c:282 tcop/postgres.c:3446 +#, c-format +msgid "-c %s requires a value" +msgstr "для -c %s требуется значение" + +#: postmaster/postmaster.c:700 postmaster/postmaster.c:713 +#: bootstrap/bootstrap.c:293 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Для дополнительной информации попробуйте \"%s --help\".\n" + +#: postmaster/postmaster.c:711 +#, c-format +msgid "%s: invalid argument: \"%s\"\n" +msgstr "%s: неверный аргумент: \"%s\"\n" + +#: postmaster/postmaster.c:736 +#, 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:741 +#, 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:746 +msgid "" +"WAL archival (archive_mode=on) requires wal_level \"archive\" or " +"\"hot_standby\"" +msgstr "" +"Для архивации WAL (archive_mode=on) wal_level должен быть \"archive\" или " +"\"hot_standby\"" + +#: postmaster/postmaster.c:749 +msgid "" +"WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or " +"\"hot_standby\"" +msgstr "" +"Для потоковой трансляции WAL (max_wal_senders > 0) wal_level должен быть " +"\"archive\" или \"hot_standby\"" + +#: postmaster/postmaster.c:757 +#, c-format +msgid "%s: invalid datetoken tables, please fix\n" +msgstr "%s: ошибка в таблицах маркеров времени, требуется исправление\n" + +#: postmaster/postmaster.c:857 +msgid "invalid list syntax for \"listen_addresses\"" +msgstr "неверный формат списка для \"listen_addresses\"" + +#: postmaster/postmaster.c:887 +#, c-format +msgid "could not create listen socket for \"%s\"" +msgstr "не удалось создать принимающий сокет для \"%s\"" + +#: postmaster/postmaster.c:893 +msgid "could not create any TCP/IP sockets" +msgstr "не удалось создать сокеты TCP/IP" + +#: postmaster/postmaster.c:944 +msgid "could not create Unix-domain socket" +msgstr "не удалось создать доменный сокет UNIX" + +#: postmaster/postmaster.c:952 +msgid "no socket created for listening" +msgstr "отсутствуют принимающие сокеты" + +#: postmaster/postmaster.c:991 +msgid "could not create I/O completion port for child queue" +msgstr "не удалось создать порт завершения ввода/вывода для очереди потомков" + +#: postmaster/postmaster.c:1035 +#, 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 +msgid "could not load pg_hba.conf" +msgstr "не удалось загрузить pg_hba.conf" + +#: postmaster/postmaster.c:1156 +#, c-format +msgid "%s: could not locate matching postgres executable" +msgstr "%s: подходящий исполняемый файл postgres не найден" + +#: postmaster/postmaster.c:1177 utils/misc/tzparser.c:323 utils/adt/misc.c:213 +#: utils/adt/genfile.c:353 commands/tablespace.c:689 commands/tablespace.c:699 +#: storage/file/fd.c:1682 storage/file/copydir.c:67 storage/file/copydir.c:106 +#, c-format +msgid "could not open directory \"%s\": %m" +msgstr "не удалось открыть каталог \"%s\": %m" + +#: postmaster/postmaster.c:1179 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:1207 +#, c-format +msgid "data directory \"%s\" does not exist" +msgstr "каталог данных \"%s\" не существует" + +#: postmaster/postmaster.c:1212 +#, c-format +msgid "could not read permissions of directory \"%s\": %m" +msgstr "не удалось считать права на каталог \"%s\": %m" + +#: postmaster/postmaster.c:1220 +#, c-format +msgid "specified data directory \"%s\" is not a directory" +msgstr "указанный каталог данных \"%s\" не существует" + +#: postmaster/postmaster.c:1236 +#, c-format +msgid "data directory \"%s\" has wrong ownership" +msgstr "владелец каталога данных \"%s\" определён неверно" + +#: postmaster/postmaster.c:1238 +msgid "The server must be started by the user that owns the data directory." +msgstr "" +"Сервер должен запускать пользователь, являющийся владельцем каталога данных." + +#: postmaster/postmaster.c:1258 +#, c-format +msgid "data directory \"%s\" has group or world access" +msgstr "к каталогу данных \"%s\" имеют доступ все или группа" + +#: postmaster/postmaster.c:1260 +msgid "Permissions should be u=rwx (0700)." +msgstr "Права должны быть: u=rwx (0700)." + +#: postmaster/postmaster.c:1271 +#, c-format +msgid "" +"%s: could not find the database system\n" +"Expected to find it in the directory \"%s\",\n" +"but could not open file \"%s\": %s\n" +msgstr "" +"%s: не найдена система баз данных\n" +"Ожидалось найти её в каталоге \"%s\",\n" +"но открыть файл \"%s\" не удалось: %s\n" + +#: postmaster/postmaster.c:1307 +#, c-format +msgid "%s: could not open file \"%s\": %s\n" +msgstr "%s: не удалось открыть файл \"%s\": %s\n" + +#: postmaster/postmaster.c:1314 +#, c-format +msgid "%s: could not open log file \"%s/%s\": %s\n" +msgstr "%s: не удалось открыть файл протокола \"%s/%s\": %s\n" + +#: postmaster/postmaster.c:1325 +#, c-format +msgid "%s: could not fork background process: %s\n" +msgstr "%s: не удалось породить фоновый процесс: %s\n" + +#: postmaster/postmaster.c:1347 +#, c-format +msgid "%s: could not dissociate from controlling TTY: %s\n" +msgstr "%s: не удалось отключиться от управления TTY: %s\n" + +#: postmaster/postmaster.c:1442 +#, c-format +msgid "select() failed in postmaster: %m" +msgstr "сбой select() в postmaster'е: %m" + +#: postmaster/postmaster.c:1604 postmaster/postmaster.c:1635 +msgid "incomplete startup packet" +msgstr "неполный стартовый пакет" + +#: postmaster/postmaster.c:1616 +msgid "invalid length of startup packet" +msgstr "неверная длина стартового пакета" + +#: postmaster/postmaster.c:1673 +#, c-format +msgid "failed to send SSL negotiation response: %m" +msgstr "не удалось отправить ответ в процессе SSL-согласования: %m" + +#: postmaster/postmaster.c:1702 +#, 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:1753 +msgid "invalid value for boolean option \"replication\"" +msgstr "неверное значение логического параметра \"replication\"" + +#: postmaster/postmaster.c:1773 +msgid "invalid startup packet layout: expected terminator as last byte" +msgstr "" +"неверная структура стартового пакета: последним байтом должен быть терминатор" + +#: postmaster/postmaster.c:1801 +msgid "no PostgreSQL user name specified in startup packet" +msgstr "в стартовом пакете не указано имя пользователя PostgreSQL" + +#: postmaster/postmaster.c:1858 +msgid "the database system is starting up" +msgstr "система баз данных запускается" + +#: postmaster/postmaster.c:1863 +msgid "the database system is shutting down" +msgstr "система баз данных останавливается" + +#: postmaster/postmaster.c:1868 +msgid "the database system is in recovery mode" +msgstr "система баз данных в режиме восстановления" + +#: postmaster/postmaster.c:1873 storage/ipc/procarray.c:271 +#: storage/ipc/sinvaladt.c:302 storage/lmgr/proc.c:304 +msgid "sorry, too many clients already" +msgstr "извините, уже слишком много клиентов" + +#: postmaster/postmaster.c:1935 +#, c-format +msgid "wrong key in cancel request for process %d" +msgstr "неправильный ключ в запросе на отмену процесса %d" + +#: postmaster/postmaster.c:1943 +#, c-format +msgid "PID %d in cancel request did not match any process" +msgstr "процесс с кодом %d, полученным в запросе на отмену, не найден" + +#: postmaster/postmaster.c:2015 postmaster/postmaster.c:2046 +#: postmaster/postmaster.c:3248 postmaster/postmaster.c:3927 +#: postmaster/postmaster.c:4013 postmaster/postmaster.c:4630 +#: utils/hash/dynahash.c:368 utils/hash/dynahash.c:445 +#: utils/hash/dynahash.c:959 utils/misc/guc.c:3298 utils/misc/guc.c:3311 +#: utils/misc/guc.c:3324 utils/misc/tzparser.c:455 utils/init/miscinit.c:150 +#: utils/init/miscinit.c:171 utils/init/miscinit.c:181 utils/fmgr/dfmgr.c:224 +#: utils/mb/mbutils.c:374 utils/mb/mbutils.c:675 utils/mmgr/aset.c:416 +#: utils/mmgr/aset.c:587 utils/mmgr/aset.c:765 utils/mmgr/aset.c:966 +#: utils/adt/regexp.c:209 utils/adt/varlena.c:3468 utils/adt/varlena.c:3489 +#: utils/adt/formatting.c:1524 utils/adt/formatting.c:1640 +#: utils/adt/formatting.c:1757 lib/stringinfo.c:266 commands/sequence.c:1014 +#: libpq/auth.c:1022 libpq/auth.c:1382 libpq/auth.c:1450 libpq/auth.c:1852 +#: storage/file/fd.c:364 storage/file/fd.c:761 storage/file/fd.c:879 +#: storage/file/fd.c:1443 storage/ipc/procarray.c:801 +#: storage/ipc/procarray.c:1212 storage/ipc/procarray.c:1219 +#: storage/ipc/procarray.c:1459 storage/ipc/procarray.c:1910 +#: storage/buffer/localbuf.c:350 storage/buffer/buf_init.c:154 +msgid "out of memory" +msgstr "нехватка памяти" + +#: postmaster/postmaster.c:2149 +msgid "received SIGHUP, reloading configuration files" +msgstr "получен SIGHUP, файлы конфигурации перезагружаются" + +#: postmaster/postmaster.c:2172 +msgid "pg_hba.conf not reloaded" +msgstr "pg_hba.conf не перезагружен" + +#: postmaster/postmaster.c:2215 +msgid "received smart shutdown request" +msgstr "получен запрос на \"вежливое\" выключение" + +#: postmaster/postmaster.c:2262 +msgid "received fast shutdown request" +msgstr "получен запрос на быстрое выключение" + +#: postmaster/postmaster.c:2280 +msgid "aborting any active transactions" +msgstr "прерывание всех активных транзакций" + +#: postmaster/postmaster.c:2309 +msgid "received immediate shutdown request" +msgstr "получен запрос на немедленное выключение" + +#: postmaster/postmaster.c:2397 postmaster/postmaster.c:2418 +msgid "startup process" +msgstr "стартовый процесс" + +#: postmaster/postmaster.c:2400 +msgid "aborting startup due to startup process failure" +msgstr "прерывание запуска из-за ошибки в стартовом процессе" + +#: postmaster/postmaster.c:2452 +msgid "database system is ready to accept connections" +msgstr "система БД готова принимать подключения" + +#: postmaster/postmaster.c:2507 +msgid "background writer process" +msgstr "процесс фоновой записи" + +#: postmaster/postmaster.c:2523 +msgid "WAL writer process" +msgstr "процесс записи WAL" + +#: postmaster/postmaster.c:2537 +msgid "WAL receiver process" +msgstr "процесс считывания WAL" + +#: postmaster/postmaster.c:2552 +msgid "autovacuum launcher process" +msgstr "процесс запуска автоочистки" + +#: postmaster/postmaster.c:2567 +msgid "archiver process" +msgstr "процесс архивации" + +#: postmaster/postmaster.c:2583 +msgid "statistics collector process" +msgstr "процесс сбора статистики" + +#: postmaster/postmaster.c:2597 +msgid "system logger process" +msgstr "процесс системного протоколирования" + +#: postmaster/postmaster.c:2632 postmaster/postmaster.c:2651 +#: postmaster/postmaster.c:2658 postmaster/postmaster.c:2676 +msgid "server process" +msgstr "процесс сервера" + +#: postmaster/postmaster.c:2712 +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:2877 +#, 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:2886 +#, 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:2895 +#, 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:2905 +#, 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:2914 +#, c-format +msgid "%s (PID %d) exited with unrecognized status %d" +msgstr "%s (PID %d) завершился с неизвестным кодом состояния %d" + +#: postmaster/postmaster.c:3094 +msgid "abnormal database system shutdown" +msgstr "аварийное выключение системы БД" + +#: postmaster/postmaster.c:3133 +msgid "all server processes terminated; reinitializing" +msgstr "все серверные процессы завершены... переинициализация" + +#: postmaster/postmaster.c:3316 +#, c-format +msgid "could not fork new process for connection: %m" +msgstr "породить новый процесс для соединения не удалось: %m" + +#: postmaster/postmaster.c:3358 +msgid "could not fork new process for connection: " +msgstr "породить новый процесс для соединения не удалось: " + +#: postmaster/postmaster.c:3472 +#, c-format +msgid "connection received: host=%s port=%s" +msgstr "принято подключение: узел=%s порт=%s" + +#: postmaster/postmaster.c:3477 +#, c-format +msgid "connection received: host=%s" +msgstr "принято подключение: узел=%s" + +#: postmaster/postmaster.c:3702 access/transam/xlog.c:2397 +#: access/transam/xlog.c:2530 access/transam/xlog.c:4463 +#: access/transam/xlog.c:9166 access/transam/xlog.c:9407 +#: storage/file/copydir.c:172 storage/smgr/md.c:289 +#, c-format +msgid "could not create file \"%s\": %m" +msgstr "создать файл \"%s\" не удалось: %m" + +#: postmaster/postmaster.c:3712 postmaster/postmaster.c:3722 +#: utils/misc/guc.c:7432 utils/misc/guc.c:7457 utils/init/miscinit.c:1097 +#: utils/init/miscinit.c:1106 utils/init/miscinit.c:1113 +#: access/transam/xlog.c:2429 access/transam/xlog.c:2562 +#: access/transam/xlog.c:4515 access/transam/xlog.c:4578 +#: storage/file/copydir.c:197 +#, c-format +msgid "could not write to file \"%s\": %m" +msgstr "записать в файл \"%s\" не удалось: %m" + +#: postmaster/postmaster.c:3741 +#, c-format +msgid "could not execute server process \"%s\": %m" +msgstr "запустить серверный процесс \"%s\" не удалось: %m" + +#: postmaster/postmaster.c:4263 +msgid "database system is ready to accept read only connections" +msgstr "система БД готова к подключениям в режиме \"только чтение\"" + +#: postmaster/postmaster.c:4533 +#, c-format +msgid "could not fork startup process: %m" +msgstr "породить стартовый процесс не удалось: %m" + +#: postmaster/postmaster.c:4537 +#, c-format +msgid "could not fork background writer process: %m" +msgstr "породить процесс фоновой записи не удалось: %m" + +#: postmaster/postmaster.c:4541 +#, c-format +msgid "could not fork WAL writer process: %m" +msgstr "породить процесс записи WAL не удалось: %m" + +#: postmaster/postmaster.c:4545 +#, c-format +msgid "could not fork WAL receiver process: %m" +msgstr "породить процесс считывания WAL не удалось: %m" + +#: postmaster/postmaster.c:4549 +#, c-format +msgid "could not fork process: %m" +msgstr "породить процесс не удалось: %m" + +#: postmaster/postmaster.c:4834 +#, c-format +msgid "could not duplicate socket %d for use in backend: error code %d" +msgstr "" +"продублировать сокет %d для серверного процесса не удалось: код ошибки %d" + +#: postmaster/postmaster.c:4866 +#, c-format +msgid "could not create inherited socket: error code %d\n" +msgstr "создать наследуемый сокет не удалось: код ошибки %d\n" + +#: postmaster/postmaster.c:4895 postmaster/postmaster.c:4902 +#, c-format +msgid "could not read from backend variables file \"%s\": %s\n" +msgstr "прочитать файл серверных переменных \"%s\" не удалось: %s\n" + +#: postmaster/postmaster.c:4911 +#, c-format +msgid "could not remove file \"%s\": %s\n" +msgstr "не удалось стереть файл \"%s\": %s\n" + +#: postmaster/postmaster.c:4928 +#, c-format +msgid "could not map view of backend variables: error code %d\n" +msgstr "отобразить файл серверных переменных не удалось: код ошибки %d\n" + +#: postmaster/postmaster.c:4937 +#, c-format +msgid "could not unmap view of backend variables: error code %d\n" +msgstr "" +"отключить отображение файла серверных переменных не удалось: код ошибки %d\n" + +#: postmaster/postmaster.c:4944 +#, c-format +msgid "could not close handle to backend parameter variables: error code %d\n" +msgstr "" +"закрыть указатель файла серверных переменных не удалось: код ошибки %d\n" + +#: postmaster/postmaster.c:5089 +msgid "could not read exit code for process\n" +msgstr "прочитать код завершения процесса не удалось\n" + +#: postmaster/postmaster.c:5094 +msgid "could not post child completion status\n" +msgstr "отправить состояние завершения потомка не удалось\n" + +#: utils/cache/ts_cache.c:620 commands/tsearchcmds.c:1753 +#: commands/tsearchcmds.c:1909 catalog/namespace.c:2276 +#, c-format +msgid "text search configuration \"%s\" does not exist" +msgstr "конфигурация текстового поиска \"%s\" не существует" + +#: utils/cache/plancache.c:606 +msgid "cached plan must not change result type" +msgstr "в кэшированном плане не должен изменяться тип результата" + +#: utils/cache/relcache.c:4321 +#, c-format +msgid "could not create relation-cache initialization file \"%s\": %m" +msgstr "создать файл инициализации для кэша отношений \"%s\" не удалось: %m" + +#: utils/cache/relcache.c:4323 +msgid "Continuing anyway, but there's something wrong." +msgstr "Продолжаем всё равно, хотя что-то не так." + +#: utils/cache/relcache.c:4537 +#, c-format +msgid "could not remove cache file \"%s\": %m" +msgstr "не удалось стереть файл кэша \"%s\": %m" + +#: utils/cache/relmapper.c:454 +msgid "cannot PREPARE a transaction that modified relation mapping" +msgstr "" +"выполнить PREPARE для транзакции, изменившей сопоставление отношений, нельзя" + +#: utils/cache/relmapper.c:596 utils/cache/relmapper.c:702 +#, c-format +msgid "could not open relation mapping file \"%s\": %m" +msgstr "открыть файл сопоставления отношений \"%s\" не удалось: %m" + +#: utils/cache/relmapper.c:609 +#, c-format +msgid "could not read relation mapping file \"%s\": %m" +msgstr "прочитать файл сопоставления отношений \"%s\" не удалось: %m " + +#: utils/cache/relmapper.c:619 +#, c-format +msgid "relation mapping file \"%s\" contains invalid data" +msgstr "файл сопоставления отношений \"%s\" содержит неверные данные" + +#: utils/cache/relmapper.c:629 +#, c-format +msgid "relation mapping file \"%s\" contains incorrect checksum" +msgstr "ошибка контрольной суммы в файле сопоставления отношений \"%s\"" + +#: utils/cache/relmapper.c:741 +#, c-format +msgid "could not write to relation mapping file \"%s\": %m" +msgstr "записать в файл сопоставления отношений \"%s\" не удалось: %m" + +#: utils/cache/relmapper.c:754 +#, c-format +msgid "could not fsync relation mapping file \"%s\": %m" +msgstr "" +"синхронизировать файл сопоставления отношений \"%s\" с ФС не удалось: %m" + +#: utils/cache/relmapper.c:760 +#, c-format +msgid "could not close relation mapping file \"%s\": %m" +msgstr "закрыть файл сопоставления отношений \"%s\" не удалось: %m" + +#: utils/cache/lsyscache.c:2413 utils/cache/lsyscache.c:2446 +#: utils/cache/lsyscache.c:2479 utils/cache/lsyscache.c:2512 +#, c-format +msgid "type %s is only a shell" +msgstr "тип %s - лишь оболочка" + +#: utils/cache/lsyscache.c:2418 +#, c-format +msgid "no input function available for type %s" +msgstr "для типа %s нет функции ввода" + +#: utils/cache/lsyscache.c:2451 +#, c-format +msgid "no output function available for type %s" +msgstr "для типа %s нет функции вывода" + +#: utils/cache/lsyscache.c:2484 utils/adt/arrayfuncs.c:1307 +#, c-format +msgid "no binary input function available for type %s" +msgstr "для типа %s нет функции ввода двоичных данных" + +#: utils/cache/lsyscache.c:2517 utils/adt/arrayfuncs.c:1529 +#, c-format +msgid "no binary output function available for type %s" +msgstr "для типа %s нет функции вывода двоичных данных" + +#: utils/cache/typcache.c:195 parser/parse_type.c:202 +#, c-format +msgid "type \"%s\" is only a shell" +msgstr "тип \"%s\" - лишь пустышка" + +#: utils/cache/typcache.c:634 +#, c-format +msgid "type %s is not composite" +msgstr "тип %s не является составным" + +#: utils/cache/typcache.c:648 +msgid "record type has not been registered" +msgstr "тип записи не зарегистрирован" + +#: utils/cache/typcache.c:1001 commands/typecmds.c:1272 +#, c-format +msgid "%s is not an enum" +msgstr "\"%s\" не является перечислением" + +#: utils/hash/dynahash.c:955 storage/ipc/shmem.c:190 +#: storage/lmgr/predicate.c:2246 storage/lmgr/predicate.c:2261 +#: storage/lmgr/predicate.c:3656 storage/lmgr/predicate.c:4800 +#: storage/lmgr/proc.c:197 storage/lmgr/proc.c:216 storage/lmgr/lock.c:723 +#: storage/lmgr/lock.c:792 storage/lmgr/lock.c:2301 storage/lmgr/lock.c:2700 +#: storage/lmgr/lock.c:2765 +msgid "out of shared memory" +msgstr "нехватка разделяемой памяти" + +#: utils/misc/help_config.c:131 +msgid "internal error: unrecognized run-time parameter type\n" +msgstr "внутренняя ошибка: нераспознанный тип параметра времени выполнения\n" + +#: utils/misc/guc.c:525 +msgid "Ungrouped" +msgstr "Разное" + +#: utils/misc/guc.c:527 +msgid "File Locations" +msgstr "Расположения файлов" + +#: utils/misc/guc.c:529 +msgid "Connections and Authentication" +msgstr "Подключения и аутентификация" + +#: utils/misc/guc.c:531 +msgid "Connections and Authentication / Connection Settings" +msgstr "Подключения и аутентификация / Параметры подключения" + +#: utils/misc/guc.c:533 +msgid "Connections and Authentication / Security and Authentication" +msgstr "Подключения и аутентификация / Безопасность и аутентификация" + +#: utils/misc/guc.c:535 +msgid "Resource Usage" +msgstr "Использование ресурсов" + +#: utils/misc/guc.c:537 +msgid "Resource Usage / Memory" +msgstr "Использование ресурсов / Память" + +#: utils/misc/guc.c:539 +msgid "Resource Usage / Kernel Resources" +msgstr "Использование ресурсов / Ресурсы ядра" + +#: utils/misc/guc.c:541 +msgid "Resource Usage / Cost-Based Vacuum Delay" +msgstr "Использование ресурсов / Задержка очистки по стоимости" + +#: utils/misc/guc.c:543 +msgid "Resource Usage / Background Writer" +msgstr "Использование ресурсов / Фоновая запись" + +#: utils/misc/guc.c:545 +msgid "Resource Usage / Asynchronous Behavior" +msgstr "Использование ресурсов / Асинхронное поведение" + +#: utils/misc/guc.c:547 +msgid "Write-Ahead Log" +msgstr "Журнал WAL" + +#: utils/misc/guc.c:549 +msgid "Write-Ahead Log / Settings" +msgstr "Журнал WAL / Настройки" + +#: utils/misc/guc.c:551 +msgid "Write-Ahead Log / Checkpoints" +msgstr "Журнал WAL / Контрольные точки" + +#: utils/misc/guc.c:553 +msgid "Write-Ahead Log / Archiving" +msgstr "Журнал WAL / Архивация" + +#: utils/misc/guc.c:555 +msgid "Replication" +msgstr "Репликация" + +#: utils/misc/guc.c:557 +msgid "Replication / Master Server" +msgstr "Репликация / Главный сервер" + +#: utils/misc/guc.c:559 +msgid "Replication / Standby Servers" +msgstr "Репликация / Резервные серверы" + +#: utils/misc/guc.c:561 +msgid "Query Tuning" +msgstr "Настройка запросов" + +#: utils/misc/guc.c:563 +msgid "Query Tuning / Planner Method Configuration" +msgstr "Настройка запросов / Конфигурация методов планировщика" + +#: utils/misc/guc.c:565 +msgid "Query Tuning / Planner Cost Constants" +msgstr "Настройка запросов / Оценочные константы планировщика" + +#: utils/misc/guc.c:567 +msgid "Query Tuning / Genetic Query Optimizer" +msgstr "Настройка запросов / Генетический оптимизатор запросов" + +#: utils/misc/guc.c:569 +msgid "Query Tuning / Other Planner Options" +msgstr "Настройка запросов / Другие параметры планировщика" + +#: utils/misc/guc.c:571 +msgid "Reporting and Logging" +msgstr "Отчёты и протоколы" + +#: utils/misc/guc.c:573 +msgid "Reporting and Logging / Where to Log" +msgstr "Отчёты и протоколы / Куда записывать" + +#: utils/misc/guc.c:575 +msgid "Reporting and Logging / When to Log" +msgstr "Отчёты и протоколы / Когда записывать" + +#: utils/misc/guc.c:577 +msgid "Reporting and Logging / What to Log" +msgstr "Отчёты и протоколы / Что записывать" + +#: utils/misc/guc.c:579 +msgid "Statistics" +msgstr "Статистика" + +#: utils/misc/guc.c:581 +msgid "Statistics / Monitoring" +msgstr "Статистика / Мониторинг" + +#: utils/misc/guc.c:583 +msgid "Statistics / Query and Index Statistics Collector" +msgstr "Статистика / Сборщик статистики запросов и индексов" + +#: utils/misc/guc.c:585 +msgid "Autovacuum" +msgstr "Автоочистка" + +#: utils/misc/guc.c:587 +msgid "Client Connection Defaults" +msgstr "Параметры клиентских подключений по умолчанию" + +#: utils/misc/guc.c:589 +msgid "Client Connection Defaults / Statement Behavior" +msgstr "Параметры клиентских подключений по умолчанию / Поведение команд" + +#: utils/misc/guc.c:591 +msgid "Client Connection Defaults / Locale and Formatting" +msgstr "" +"Параметры клиентских подключений по умолчанию / Языковая среда и форматы" + +#: utils/misc/guc.c:593 +msgid "Client Connection Defaults / Other Defaults" +msgstr "Параметры клиентских подключений по умолчанию / Другие параметры" + +#: utils/misc/guc.c:595 +msgid "Lock Management" +msgstr "Управление блокировками" + +#: utils/misc/guc.c:597 +msgid "Version and Platform Compatibility" +msgstr "Версия и совместимость платформ" + +#: utils/misc/guc.c:599 +msgid "Version and Platform Compatibility / Previous PostgreSQL Versions" +msgstr "Версия и совместимость платформ / Предыдущие версии PostgreSQL" + +#: utils/misc/guc.c:601 +msgid "Version and Platform Compatibility / Other Platforms and Clients" +msgstr "Версия и совместимость платформ / Другие платформы и клиенты" + +#: utils/misc/guc.c:603 +msgid "Error Handling" +msgstr "Обработка ошибок" + +#: utils/misc/guc.c:605 +msgid "Preset Options" +msgstr "Предопределённые параметры" + +#: utils/misc/guc.c:607 +msgid "Customized Options" +msgstr "Настраиваемые параметры" + +#: utils/misc/guc.c:609 +msgid "Developer Options" +msgstr "Параметры для разработчиков" + +#: utils/misc/guc.c:663 +msgid "Enables the planner's use of sequential-scan plans." +msgstr "" +"Разрешает планировщику использовать планы последовательного сканирования." + +#: utils/misc/guc.c:672 +msgid "Enables the planner's use of index-scan plans." +msgstr "Разрешает планировщику использовать планы сканирования по индексу." + +#: utils/misc/guc.c:681 +msgid "Enables the planner's use of bitmap-scan plans." +msgstr "" +"Разрешает планировщику использовать планы сканирования по битовой карте." + +#: utils/misc/guc.c:690 +msgid "Enables the planner's use of TID scan plans." +msgstr "Разрешает планировщику использовать планы сканирования TID." + +#: utils/misc/guc.c:699 +msgid "Enables the planner's use of explicit sort steps." +msgstr "Разрешает планировщику использовать шаги с явной сортировкой." + +#: utils/misc/guc.c:708 +msgid "Enables the planner's use of hashed aggregation plans." +msgstr "Разрешает планировщику использовать планы агрегирования по хэшу." + +#: utils/misc/guc.c:717 +msgid "Enables the planner's use of materialization." +msgstr "Разрешает планировщику использовать материализацию." + +#: utils/misc/guc.c:726 +msgid "Enables the planner's use of nested-loop join plans." +msgstr "" +"Разрешает планировщику использовать планы соединений с вложенными циклами." + +#: utils/misc/guc.c:735 +msgid "Enables the planner's use of merge join plans." +msgstr "Разрешает планировщику использовать планы соединений слиянием." + +#: utils/misc/guc.c:744 +msgid "Enables the planner's use of hash join plans." +msgstr "Разрешает планировщику использовать планы соединений по хэшу." + +#: utils/misc/guc.c:753 +msgid "Enables genetic query optimization." +msgstr "Включает генетическую оптимизацию запросов." + +#: utils/misc/guc.c:754 +msgid "This algorithm attempts to do planning without exhaustive searching." +msgstr "Этот алгоритм пытается построить план без полного перебора." + +#: utils/misc/guc.c:764 +msgid "Shows whether the current user is a superuser." +msgstr "Показывает, является ли текущий пользователь суперпользователем." + +#: utils/misc/guc.c:774 +msgid "Enables advertising the server via Bonjour." +msgstr "Включает объявление сервера в Bonjour." + +#: utils/misc/guc.c:783 +msgid "Enables SSL connections." +msgstr "Включает SSL-подключения." + +#: utils/misc/guc.c:792 +msgid "Forces synchronization of updates to disk." +msgstr "Принудительная запись изменений на диск." + +#: utils/misc/guc.c:793 +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:804 +msgid "Continues processing past damaged page headers." +msgstr "Продолжает обработку при повреждении заголовков страниц." + +#: utils/misc/guc.c:805 +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 обычно сообщает об " +"ошибке и прерывает текущую транзакцию. Но если zero_damaged_pages равен " +"true, система выдаст предупреждение, обнулит повреждённую страницу и " +"продолжит работу. Это приведёт к потере данных, а именно строк в " +"повреждённой странице." + +#: utils/misc/guc.c:818 +msgid "Writes full pages to WAL when first modified after a checkpoint." +msgstr "" +"Запись полных страниц в WAL при первом изменении после контрольной точки." + +#: utils/misc/guc.c:819 +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:831 +msgid "Runs the server silently." +msgstr "Включает скрытый режим сервера." + +#: utils/misc/guc.c:832 +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:841 +msgid "Logs each checkpoint." +msgstr "Отмечать каждую контрольную точку." + +#: utils/misc/guc.c:850 +msgid "Logs each successful connection." +msgstr "Фиксировать установленные соединения." + +#: utils/misc/guc.c:859 +msgid "Logs end of a session, including duration." +msgstr "Фиксировать конец сеанса, отмечая длительность." + +#: utils/misc/guc.c:868 +msgid "Turns on various assertion checks." +msgstr "Включает различные проверки истинности." + +#: utils/misc/guc.c:869 +msgid "This is a debugging aid." +msgstr "Полезно при отладке." + +#: utils/misc/guc.c:883 +msgid "Terminate session on any error." +msgstr "Завершать сеансы при любой ошибке." + +#: utils/misc/guc.c:892 +msgid "Reinitialize server after backend crash." +msgstr "Перезапускать систему БД при аварии серверного процесса." + +#: utils/misc/guc.c:902 +msgid "Logs the duration of each completed SQL statement." +msgstr "Фиксировать длительность каждого выполненного SQL-оператора." + +#: utils/misc/guc.c:911 +msgid "Logs each query's parse tree." +msgstr "Фиксировать дерево разбора для каждого запроса." + +#: utils/misc/guc.c:920 +msgid "Logs each query's rewritten parse tree." +msgstr "Фиксировать перезаписанное дерево разбора для каждого запроса." + +#: utils/misc/guc.c:929 +msgid "Logs each query's execution plan." +msgstr "Фиксировать план выполнения каждого запроса." + +#: utils/misc/guc.c:938 +msgid "Indents parse and plan tree displays." +msgstr "Отступы при отображении деревьев разбора и плана запросов." + +#: utils/misc/guc.c:947 +msgid "Writes parser performance statistics to the server log." +msgstr "Запись статистики разбора запросов в протокол сервера." + +#: utils/misc/guc.c:956 +msgid "Writes planner performance statistics to the server log." +msgstr "Запись статистики планирования в протокол сервера." + +#: utils/misc/guc.c:965 +msgid "Writes executor performance statistics to the server log." +msgstr "Запись статистики выполнения запросов в протокол сервера." + +#: utils/misc/guc.c:974 +msgid "Writes cumulative performance statistics to the server log." +msgstr "Запись общей статистики производительности в протокол сервера." + +#: utils/misc/guc.c:984 utils/misc/guc.c:1049 utils/misc/guc.c:1059 +#: utils/misc/guc.c:1069 utils/misc/guc.c:1079 utils/misc/guc.c:1804 +#: utils/misc/guc.c:1814 +msgid "No description available." +msgstr "Без описания." + +#: utils/misc/guc.c:996 +msgid "Collects information about executing commands." +msgstr "Собирает информацию о выполняющихся командах." + +#: utils/misc/guc.c:997 +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:1007 +msgid "Collects statistics on database activity." +msgstr "Собирает статистику активности в БД." + +#: utils/misc/guc.c:1017 +msgid "Updates the process title to show the active SQL command." +msgstr "Выводит в заголовок процесса активную SQL-команду." + +#: utils/misc/guc.c:1018 +msgid "" +"Enables updating of the process title every time a new SQL command is " +"received by the server." +msgstr "Отражает в заголовке процесса каждую SQL-команду, поступающую серверу." + +#: utils/misc/guc.c:1027 +msgid "Starts the autovacuum subprocess." +msgstr "Запускает подпроцесс автоочистки." + +#: utils/misc/guc.c:1037 +msgid "Generates debugging output for LISTEN and NOTIFY." +msgstr "Генерирует отладочные сообщения для LISTEN и NOTIFY." + +#: utils/misc/guc.c:1091 +msgid "Logs long lock waits." +msgstr "Фиксирует длительные ожидания в блокировках." + +#: utils/misc/guc.c:1101 +msgid "Logs the host name in the connection logs." +msgstr "Фиксирует имя узла в протоколах подключений." + +#: utils/misc/guc.c:1102 +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:1113 +msgid "Causes subtables to be included by default in various commands." +msgstr "Выбирает режим включения подчинённых таблиц по умолчанию." + +#: utils/misc/guc.c:1122 +msgid "Encrypt passwords." +msgstr "Шифровать пароли." + +#: utils/misc/guc.c:1123 +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:1133 +msgid "Treats \"expr=NULL\" as \"expr IS NULL\"." +msgstr "Обрабатывать \"expr=NULL\" как \"expr IS NULL\"." + +#: utils/misc/guc.c:1134 +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, то есть возвращают true, если expr " +"совпадает с NULL, и false в противном случае. По правилам expr = NULL всегда " +"должно возвращать null (неопределённость)." + +#: utils/misc/guc.c:1146 +msgid "Enables per-database user names." +msgstr "Включает связывание имён пользователей с базами данных." + +#: utils/misc/guc.c:1156 +msgid "This parameter doesn't do anything." +msgstr "Этот параметр ничего не делает." + +#: utils/misc/guc.c:1157 +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:1166 +msgid "Sets the default read-only status of new transactions." +msgstr "" +"Устанавливает режим \"только чтение\" по умолчанию для новых транзакций." + +#: utils/misc/guc.c:1175 +msgid "Sets the current transaction's read-only status." +msgstr "Устанавливает режим \"только чтение\" для текущей транзакции." + +#: utils/misc/guc.c:1185 +msgid "Sets the default deferrable status of new transactions." +msgstr "" +"Устанавливает режим отложенного выполнения по умолчанию для новых транзакций." + +#: utils/misc/guc.c:1194 +msgid "" +"Whether to defer a read-only serializable transaction until it can be " +"executed with no possible serialization failures." +msgstr "" +"Определяет, откладывать ли сериализуемую транзакцию \"только чтение\" до " +"момента, когда сбой сериализации будет исключён." + +#: utils/misc/guc.c:1204 +msgid "Check function bodies during CREATE FUNCTION." +msgstr "Проверять тело функций в момент CREATE FUNCTION." + +#: utils/misc/guc.c:1213 +msgid "Enable input of NULL elements in arrays." +msgstr "Разрешать ввод элементов NULL в массивах." + +#: utils/misc/guc.c:1214 +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:1224 +msgid "Create new tables with OIDs by default." +msgstr "По умолчанию создавать новые таблицы с колонкой OID." + +#: utils/misc/guc.c:1233 +msgid "" +"Start a subprocess to capture stderr output and/or csvlogs into log files." +msgstr "" +"Запускает подпроцесс для чтения stderr и/или csv-файлов и записи в файлы " +"протоколов." + +#: utils/misc/guc.c:1242 +msgid "Truncate existing log files of same name during log rotation." +msgstr "" +"Очищать уже существующий файл с тем же именем при прокручивании протокола." + +#: utils/misc/guc.c:1253 +msgid "Emit information about resource usage in sorting." +msgstr "Выдавать сведения об использовании ресурсов при сортировке." + +#: utils/misc/guc.c:1267 +msgid "Generate debugging output for synchronized scanning." +msgstr "Выдавать отладочные сообщения для синхронного сканирования." + +#: utils/misc/guc.c:1282 +msgid "Enable bounded sorting using heap sort." +msgstr "" +"Разрешить ограниченную сортировку с применением пирамидальной сортировки." + +#: utils/misc/guc.c:1295 +msgid "Emit WAL-related debugging output." +msgstr "Выдавать отладочные сообщения, связанные с WAL." + +#: utils/misc/guc.c:1307 +msgid "Datetimes are integer based." +msgstr "Целочисленная реализация даты/времени." + +#: utils/misc/guc.c:1322 +msgid "" +"Sets whether Kerberos and GSSAPI user names should be treated as case-" +"insensitive." +msgstr "" +"Включает регистро-независимую обработку имён пользователей Kerberos и GSSAPI." + +#: utils/misc/guc.c:1332 +msgid "Warn about backslash escapes in ordinary string literals." +msgstr "Предупреждения о спецсимволах '\\' в обычных строках." + +#: utils/misc/guc.c:1342 +msgid "Causes '...' strings to treat backslashes literally." +msgstr "Включает буквальную обработку символов '\\' в строках '...'." + +#: utils/misc/guc.c:1353 +msgid "Enable synchronized sequential scans." +msgstr "Включить синхронизацию последовательного сканирования." + +#: utils/misc/guc.c:1363 +msgid "Allows archiving of WAL files using archive_command." +msgstr "Разрешает архивацию файлов WAL командой archive_command." + +#: utils/misc/guc.c:1373 +msgid "Allows connections and queries during recovery." +msgstr "" +"Разрешает принимать новые подключения и запросы в процессе восстановления." + +#: utils/misc/guc.c:1383 +msgid "" +"Allows feedback from a hot standby to the primary that will avoid query " +"conflicts." +msgstr "" +"Разрешает обратную связь сервера горячего резерва с основным для " +"предотвращения конфликтов при длительных запросах." + +#: utils/misc/guc.c:1393 +msgid "Allows modifications of the structure of system tables." +msgstr "Разрешает модифицировать структуру системных таблиц." + +#: utils/misc/guc.c:1404 +msgid "Disables reading from system indexes." +msgstr "Запрещает использование системных индексов." + +#: utils/misc/guc.c:1405 +msgid "" +"It does not prevent updating the indexes, so it is safe to use. The worst " +"consequence is slowness." +msgstr "" +"При этом индексы продолжают обновляться, так что данное поведение безопасно. " +"Худшее следствие - замедление." + +#: utils/misc/guc.c:1416 +msgid "" +"Enables backward compatibility mode for privilege checks on large objects." +msgstr "" +"Включает режим обратной совместимости при проверке привилегий для больших " +"объектов." + +#: utils/misc/guc.c:1417 +msgid "" +"Skips privilege checks when reading or modifying large objects, for " +"compatibility with PostgreSQL releases prior to 9.0." +msgstr "" +"Пропускает проверки привилегий при чтении или изменении больших объектов " +"(для совместимости с версиями PostgreSQL до 9.0)." + +#: utils/misc/guc.c:1427 +msgid "When generating SQL fragments, quote all identifiers." +msgstr "" +"Генерируя SQL-фрагменты, заключать все идентификаторы в двойные кавычки." + +#: utils/misc/guc.c:1446 +msgid "" +"Forces a switch to the next xlog file if a new file has not been started " +"within N seconds." +msgstr "" +"Принудительно переключаться на следующий файл xlog, если начать новый файл " +"за N секунд не удалось." + +#: utils/misc/guc.c:1457 +msgid "Waits N seconds on connection startup after authentication." +msgstr "Ждать N секунд при подключении после проверки подлинности." + +#: utils/misc/guc.c:1458 utils/misc/guc.c:1907 +msgid "This allows attaching a debugger to the process." +msgstr "Это позволяет подключить к процессу отладчик." + +#: utils/misc/guc.c:1467 +msgid "Sets the default statistics target." +msgstr "Устанавливает целевое ограничение статистики по умолчанию." + +#: utils/misc/guc.c:1468 +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:1477 +msgid "Sets the FROM-list size beyond which subqueries are not collapsed." +msgstr "" +"Задаёт предел для списка FROM, при превышении которого подзапросы не " +"сворачиваются." + +#: utils/misc/guc.c:1479 +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:1489 +msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened." +msgstr "" +"Задаёт предел для списка FROM, при превышении которого конструкции JOIN " +"сохраняются." + +#: utils/misc/guc.c:1491 +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:1501 +msgid "Sets the threshold of FROM items beyond which GEQO is used." +msgstr "" +"Задаёт предел для списка FROM, при превышении которого применяется GEQO." + +#: utils/misc/guc.c:1510 +msgid "GEQO: effort is used to set the default for other GEQO parameters." +msgstr "" +"GEQO: оценка усилий для планирования, задающая значения по умолчанию для " +"других параметров GEQO." + +#: utils/misc/guc.c:1519 +msgid "GEQO: number of individuals in the population." +msgstr "GEQO: число индивидуалов в популяции." + +#: utils/misc/guc.c:1520 utils/misc/guc.c:1529 +msgid "Zero selects a suitable default value." +msgstr "При нуле выбирается подходящее значение по умолчанию." + +#: utils/misc/guc.c:1528 +msgid "GEQO: number of iterations of the algorithm." +msgstr "GEQO: число итераций алгоритма." + +#: utils/misc/guc.c:1539 +msgid "Sets the time to wait on a lock before checking for deadlock." +msgstr "Задаёт интервал ожидания в блокировке до проверки на взаимоблокировку." + +#: utils/misc/guc.c:1550 +msgid "" +"Sets the maximum delay before canceling queries when a hot standby server is " +"processing archived WAL data." +msgstr "" +"Задаёт максимальную задержку до отмены запроса, когда сервер горячего " +"резерва обрабатывает данные WAL из архива." + +#: utils/misc/guc.c:1561 +msgid "" +"Sets the maximum delay before canceling queries when a hot standby server is " +"processing streamed WAL data." +msgstr "" +"Задаёт максимальную задержку до отмены запроса, когда сервер горячего " +"резерва обрабатывает данные WAL из потока." + +#: utils/misc/guc.c:1572 +msgid "" +"Sets the maximum interval between WAL receiver status reports to the primary." +msgstr "Задаёт максимальный интервал для отчётов о состоянии получателей WAL." + +#: utils/misc/guc.c:1583 +msgid "Sets the maximum number of concurrent connections." +msgstr "Задаёт максимально возможное число подключений." + +#: utils/misc/guc.c:1593 +msgid "Sets the number of connection slots reserved for superusers." +msgstr "" +"Определяет, сколько слотов подключений забронировано для суперпользователей." + +#: utils/misc/guc.c:1607 +msgid "Sets the number of shared memory buffers used by the server." +msgstr "Задаёт количество буферов в разделяемой памяти, используемых сервером." + +#: utils/misc/guc.c:1618 +msgid "Sets the maximum number of temporary buffers used by each session." +msgstr "Задаёт предельное число временных буферов на один сеанс." + +#: utils/misc/guc.c:1629 +msgid "Sets the TCP port the server listens on." +msgstr "Задаёт TCP-порт для работы сервера." + +#: utils/misc/guc.c:1639 +msgid "Sets the access permissions of the Unix-domain socket." +msgstr "Задаёт права доступа для доменного сокета Unix." + +#: utils/misc/guc.c:1640 +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. Значение параметра указывается в числовом виде, " +"воспринимаемом системными функциями chmod и umask. (Чтобы использовать " +"привычный восьмеричный формат, добавьте в начало ноль (0).)" + +#: utils/misc/guc.c:1654 +msgid "Sets the file permissions for log files." +msgstr "Задаёт права доступа к файлам протоколов." + +#: utils/misc/guc.c:1655 +msgid "" +"The parameter value is expected to be a numeric mode specification in the " +"form accepted by the chmod and umask system calls. (To use the customary " +"octal format the number must start with a 0 (zero).)" +msgstr "" +"Значение параметра указывается в числовом виде, воспринимаемом системными " +"функциями chmod и umask. (Чтобы использовать привычный восьмеричный формат, " +"добавьте в начало ноль (0).) " + +#: utils/misc/guc.c:1668 +msgid "Sets the maximum memory to be used for query workspaces." +msgstr "Задаёт предельный объём памяти для рабочих пространств запросов." + +#: utils/misc/guc.c:1669 +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:1681 +msgid "Sets the maximum memory to be used for maintenance operations." +msgstr "Задаёт предельный объём памяти для операций по обслуживанию." + +#: utils/misc/guc.c:1682 +msgid "This includes operations such as VACUUM and CREATE INDEX." +msgstr "Подразумеваются в частности операции VACUUM и CREATE INDEX." + +#: utils/misc/guc.c:1697 +msgid "Sets the maximum stack depth, in kilobytes." +msgstr "Задаёт максимальную глубину стека (в КБ)." + +#: utils/misc/guc.c:1708 +msgid "Vacuum cost for a page found in the buffer cache." +msgstr "Стоимость очистки для страницы, найденной в кэше." + +#: utils/misc/guc.c:1718 +msgid "Vacuum cost for a page not found in the buffer cache." +msgstr "Стоимость очистки для страницы, не найденной в кэше." + +#: utils/misc/guc.c:1728 +msgid "Vacuum cost for a page dirtied by vacuum." +msgstr "Стоимость очистки для страницы, которая не была \"грязной\"." + +#: utils/misc/guc.c:1738 +msgid "Vacuum cost amount available before napping." +msgstr "Суммарная стоимость очистки, при которой нужна передышка." + +#: utils/misc/guc.c:1748 +msgid "Vacuum cost delay in milliseconds." +msgstr "Задержка очистки (в миллисекундах)." + +#: utils/misc/guc.c:1759 +msgid "Vacuum cost delay in milliseconds, for autovacuum." +msgstr "Задержка очистки для автоочистки (в миллисекундах)." + +#: utils/misc/guc.c:1770 +msgid "Vacuum cost amount available before napping, for autovacuum." +msgstr "" +"Суммарная стоимость очистки, при которой нужна передышка, для автоочистки." + +#: utils/misc/guc.c:1780 +msgid "" +"Sets the maximum number of simultaneously open files for each server process." +msgstr "" +"Задаёт предельное число одновременно открытых файлов для каждого серверного " +"процесса." + +#: utils/misc/guc.c:1793 +msgid "Sets the maximum number of simultaneously prepared transactions." +msgstr "Задаёт предельное число одновременно подготовленных транзакций." + +#: utils/misc/guc.c:1826 +msgid "Sets the maximum allowed duration of any statement." +msgstr "Задаёт предельную длительность для любого оператора." + +#: utils/misc/guc.c:1827 +msgid "A value of 0 turns off the timeout." +msgstr "Нулевое значение отключает таймаут." + +#: utils/misc/guc.c:1837 +msgid "Minimum age at which VACUUM should freeze a table row." +msgstr "" +"Минимальный возраст строк таблицы, при котором VACUUM может их заморозить." + +#: utils/misc/guc.c:1847 +msgid "Age at which VACUUM should scan whole table to freeze tuples." +msgstr "" +"Возраст, при котором VACUUM должен сканировать всю таблицу с целью " +"заморозить кортежи." + +#: utils/misc/guc.c:1857 +msgid "" +"Number of transactions by which VACUUM and HOT cleanup should be deferred, " +"if any." +msgstr "" +"Определяет, на сколько транзакций следует задержать старые строки, выполняя " +"VACUUM или \"горячее\" обновление." + +#: utils/misc/guc.c:1870 +msgid "Sets the maximum number of locks per transaction." +msgstr "Задаёт предельное число блокировок на транзакцию." + +#: utils/misc/guc.c:1871 +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:1882 +msgid "Sets the maximum number of predicate locks per transaction." +msgstr "Задаёт предельное число предикатных блокировок на транзакцию." + +#: utils/misc/guc.c:1883 +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 "" +"Размер разделяемой таблицы предикатных блокировок выбирается из " +"предположения, что в один момент времени потребуется заблокировать не больше " +"чем max_pred_locks_per_transaction * max_connections различных объектов." + +#: utils/misc/guc.c:1894 +msgid "Sets the maximum allowed time to complete client authentication." +msgstr "Ограничивает время, за которое клиент должен пройти аутентификацию." + +#: utils/misc/guc.c:1906 +msgid "Waits N seconds on connection startup before authentication." +msgstr "Ждать N секунд при подключении до проверки подлинности." + +#: utils/misc/guc.c:1917 +msgid "Sets the number of WAL files held for standby servers." +msgstr "Определяет, сколько файлов WAL нужно сохранить для резервных серверов." + +#: utils/misc/guc.c:1927 +msgid "" +"Sets the maximum distance in log segments between automatic WAL checkpoints." +msgstr "" +"Задаёт максимальное расстояние в сегментах журнала между автоматическими " +"контрольными точками WAL." + +#: utils/misc/guc.c:1937 +msgid "Sets the maximum time between automatic WAL checkpoints." +msgstr "" +"Задаёт максимальное время между автоматическими контрольными точками WAL." + +#: utils/misc/guc.c:1948 +msgid "" +"Enables warnings if checkpoint segments are filled more frequently than this." +msgstr "" +"Выдаёт предупреждения, когда сегменты контрольных точек заполняются за это " +"время." + +#: utils/misc/guc.c:1950 +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:1962 +msgid "Sets the number of disk-page buffers in shared memory for WAL." +msgstr "Задаёт число буферов дисковых страниц в разделяемой памяти для WAL." + +#: utils/misc/guc.c:1973 +msgid "WAL writer sleep time between WAL flushes." +msgstr "Время простоя в процессе записи WAL после сброса буферов на диск." + +#: utils/misc/guc.c:1985 +msgid "Sets the maximum number of simultaneously running WAL sender processes." +msgstr "" +"Задаёт предельное число одновременно работающих процессов передачи WAL." + +#: utils/misc/guc.c:1995 +msgid "WAL sender sleep time between WAL replications." +msgstr "Время простоя в процессе передачи WAL после репликации." + +#: utils/misc/guc.c:2006 +msgid "Sets the maximum time to wait for WAL replication." +msgstr "Задаёт предельное время ожидания репликации WAL." + +#: utils/misc/guc.c:2017 +msgid "" +"Sets the delay in microseconds between transaction commit and flushing WAL " +"to disk." +msgstr "" +"Задаёт задержку в микросекундах между фиксированием транзакций и сбросом WAL " +"на диск." + +#: utils/misc/guc.c:2028 +msgid "" +"Sets the minimum concurrent open transactions before performing commit_delay." +msgstr "" +"Задаёт минимальное число одновременно открытых транзакций для применения " +"commit_delay." + +#: utils/misc/guc.c:2039 +msgid "Sets the number of digits displayed for floating-point values." +msgstr "Задаёт число выводимых цифр для чисел с плавающей точкой." + +#: utils/misc/guc.c:2040 +msgid "" +"This affects real, double precision, and geometric data types. The parameter " +"value is added to the standard number of digits (FLT_DIG or DBL_DIG as " +"appropriate)." +msgstr "" +"Этот параметр относится к типам real, double и geometric. Значение параметра " +"добавляется к стандартному числу цифр (FLT_DIG или DBL_DIG)." + +#: utils/misc/guc.c:2051 +msgid "Sets the minimum execution time above which statements will be logged." +msgstr "" +"Задаёт предельное время выполнения оператора, при превышении которого он " +"фиксируется в протоколе." + +#: utils/misc/guc.c:2053 +msgid "Zero prints all queries. -1 turns this feature off." +msgstr "При 0 протоколируются все запросы; -1 отключает эти сообщения." + +#: utils/misc/guc.c:2063 +msgid "" +"Sets the minimum execution time above which autovacuum actions will be " +"logged." +msgstr "" +"Задаёт предельное время выполнения автоочистки, при превышении которого эта " +"операция фиксируется в протоколе." + +#: utils/misc/guc.c:2065 +msgid "Zero prints all actions. -1 turns autovacuum logging off." +msgstr "" +"При 0 протоколируются все операции автоочистки; -1 отключает эти сообщения." + +#: utils/misc/guc.c:2075 +msgid "Background writer sleep time between rounds." +msgstr "Время простоя в процессе фоновой записи между подходами." + +#: utils/misc/guc.c:2086 +msgid "Background writer maximum number of LRU pages to flush per round." +msgstr "" +"Максимальное число LRU-страниц, сбрасываемых за один подход, в процессе " +"фоновой записи." + +#: utils/misc/guc.c:2102 +msgid "" +"Number of simultaneous requests that can be handled efficiently by the disk " +"subsystem." +msgstr "" +"Число одновременных запросов, которые могут быть эффективно обработаны " +"дисковой подсистемой." + +#: utils/misc/guc.c:2103 +msgid "" +"For RAID arrays, this should be approximately the number of drive spindles " +"in the array." +msgstr "" +"Для RAID-массивов это примерно равно числу физических дисков в массиве." + +#: utils/misc/guc.c:2116 +msgid "Automatic log file rotation will occur after N minutes." +msgstr "Автоматическая прокрутка файла протокола через каждые N минут." + +#: utils/misc/guc.c:2127 +msgid "Automatic log file rotation will occur after N kilobytes." +msgstr "" +"Автоматическая прокрутка файла протокола при выходе за предел N килобайт." + +#: utils/misc/guc.c:2138 +msgid "Shows the maximum number of function arguments." +msgstr "Показывает максимально возможное число аргументов функций." + +#: utils/misc/guc.c:2149 +msgid "Shows the maximum number of index keys." +msgstr "Показывает максимально возможное число ключей в индексе." + +#: utils/misc/guc.c:2160 +msgid "Shows the maximum identifier length." +msgstr "Показывает максимально возможную длину идентификатора." + +#: utils/misc/guc.c:2171 +msgid "Shows the size of a disk block." +msgstr "Показывает размер дискового блока." + +#: utils/misc/guc.c:2182 +msgid "Shows the number of pages per disk file." +msgstr "Показывает число страниц в одном файле." + +#: utils/misc/guc.c:2193 +msgid "Shows the block size in the write ahead log." +msgstr "Показывает размер блока в журнале WAL." + +#: utils/misc/guc.c:2204 +msgid "Shows the number of pages per write ahead log segment." +msgstr "Показывает число страниц в одном сегменте журнала WAL." + +#: utils/misc/guc.c:2217 +msgid "Time to sleep between autovacuum runs." +msgstr "Время простоя между запусками автоочистки." + +#: utils/misc/guc.c:2227 +msgid "Minimum number of tuple updates or deletes prior to vacuum." +msgstr "Минимальное число изменений или удалений кортежей, вызывающее очистку." + +#: utils/misc/guc.c:2236 +msgid "Minimum number of tuple inserts, updates or deletes prior to analyze." +msgstr "" +"Минимальное число добавлений, изменений или удалений кортежей, вызывающее " +"анализ." + +#: utils/misc/guc.c:2246 +msgid "" +"Age at which to autovacuum a table to prevent transaction ID wraparound." +msgstr "" +"Возраст, при котором необходима автоочистка таблицы для предотвращения " +"наложений ID транзакций." + +#: utils/misc/guc.c:2257 +msgid "" +"Sets the maximum number of simultaneously running autovacuum worker " +"processes." +msgstr "" +"Задаёт предельное число одновременно выполняющихся рабочих процессов " +"автоочистки." + +#: utils/misc/guc.c:2267 +msgid "Time between issuing TCP keepalives." +msgstr "Интервал между TCP-пакетами пульса (keep-alive)." + +#: utils/misc/guc.c:2268 utils/misc/guc.c:2279 +msgid "A value of 0 uses the system default." +msgstr "При нулевом значении действует системный параметр." + +#: utils/misc/guc.c:2278 +msgid "Time between TCP keepalive retransmits." +msgstr "Интервал между повторениями TCP-пакетов пульса (keep-alive)." + +#: utils/misc/guc.c:2289 +msgid "" +"Set the amount of traffic to send and receive before renegotiating the " +"encryption keys." +msgstr "" +"Ограничивает объём трафика, передаваемого и принимаемого до повторного " +"согласования ключей шифрования." + +#: utils/misc/guc.c:2300 +msgid "Maximum number of TCP keepalive retransmits." +msgstr "Максимальное число повторений TCP-пакетов пульса (keep-alive)." + +#: utils/misc/guc.c:2301 +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 "" +"Этот параметр определяет, сколько пакетов пульса подряд может быть потеряно, " +"прежде чем соединение будет считаться пропавшим. При нулевом значении " +"действует системный параметр." + +#: utils/misc/guc.c:2312 +msgid "Sets the maximum allowed result for exact search by GIN." +msgstr "Ограничивает результат точного поиска с использованием GIN." + +#: utils/misc/guc.c:2323 +msgid "Sets the planner's assumption about the size of the disk cache." +msgstr "Подсказывает планировщику примерный размер дискового кэша." + +#: utils/misc/guc.c:2324 +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:2337 +msgid "Shows the server version as an integer." +msgstr "Показывает версию сервера в виде целого числа." + +#: utils/misc/guc.c:2348 +msgid "Log the use of temporary files larger than this number of kilobytes." +msgstr "" +"Фиксирует в протоколе превышение временными файлами заданного размера (в КБ)." + +#: utils/misc/guc.c:2349 +msgid "Zero logs all files. The default is -1 (turning this feature off)." +msgstr "" +"При 0 отмечаются все файлы; при -1 эти сообщения отключаются (по умолчанию)." + +#: utils/misc/guc.c:2359 +msgid "Sets the size reserved for pg_stat_activity.current_query, in bytes." +msgstr "" +"Задаёт размер, резервируемый для pg_stat_activity.current_query (в байтах)." + +#: utils/misc/guc.c:2378 +msgid "" +"Sets the planner's estimate of the cost of a sequentially fetched disk page." +msgstr "" +"Задаёт для планировщика ориентир стоимости последовательного чтения страницы." + +#: utils/misc/guc.c:2388 +msgid "" +"Sets the planner's estimate of the cost of a nonsequentially fetched disk " +"page." +msgstr "" +"Задаёт для планировщика ориентир стоимости непоследовательного чтения " +"страницы." + +#: utils/misc/guc.c:2398 +msgid "Sets the planner's estimate of the cost of processing each tuple (row)." +msgstr "" +"Задаёт для планировщика ориентир стоимости обработки каждого кортежа " +"(строки)." + +#: utils/misc/guc.c:2408 +msgid "" +"Sets the planner's estimate of the cost of processing each index entry " +"during an index scan." +msgstr "" +"Задаёт для планировщика ориентир стоимости обработки каждого элемента " +"индекса в процессе сканирования индекса." + +#: utils/misc/guc.c:2418 +msgid "" +"Sets the planner's estimate of the cost of processing each operator or " +"function call." +msgstr "" +"Задаёт для планировщика ориентир стоимости обработки каждого оператора или " +"вызова функции." + +#: utils/misc/guc.c:2429 +msgid "" +"Sets the planner's estimate of the fraction of a cursor's rows that will be " +"retrieved." +msgstr "" +"Задаёт для планировщика ориентир доли требуемых строк курсора в общем числе." + +#: utils/misc/guc.c:2440 +msgid "GEQO: selective pressure within the population." +msgstr "GEQO: выборочное давление в популяции." + +#: utils/misc/guc.c:2450 +msgid "GEQO: seed for random path selection." +msgstr "GEQO: отправное значение для случайного выбора пути." + +#: utils/misc/guc.c:2460 +msgid "Multiple of the average buffer usage to free per round." +msgstr "" +"Множитель для среднего числа использованных буферов, определяющий число " +"буферов, освобождаемых за один подход." + +#: utils/misc/guc.c:2470 +msgid "Sets the seed for random-number generation." +msgstr "Задаёт отправное значение для генератора случайных чисел." + +#: utils/misc/guc.c:2481 +msgid "" +"Number of tuple updates or deletes prior to vacuum as a fraction of " +"reltuples." +msgstr "" +"Отношение числа обновлений или удалений кортежей к reltuples, определяющее " +"потребность в очистке." + +#: utils/misc/guc.c:2490 +msgid "" +"Number of tuple inserts, updates or deletes prior to analyze as a fraction " +"of reltuples." +msgstr "" +"Отношение числа добавлений, обновлений или удалений кортежей к reltuples, " +"определяющее потребность в анализе." + +#: utils/misc/guc.c:2500 +msgid "" +"Time spent flushing dirty buffers during checkpoint, as fraction of " +"checkpoint interval." +msgstr "" +"Отношение продолжительности сброса \"грязных\" буферов во время контрольной " +"точки к интервалу контрольных точек." + +#: utils/misc/guc.c:2519 +msgid "Sets the shell command that will be called to archive a WAL file." +msgstr "Задаёт команду оболочки, вызываемую для архивации файла WAL." + +#: utils/misc/guc.c:2529 +msgid "Sets the client's character set encoding." +msgstr "Задаёт кодировку символов, используемую клиентом." + +#: utils/misc/guc.c:2540 +msgid "Controls information prefixed to each log line." +msgstr "Определяет содержимое префикса каждой строки протокола." + +#: utils/misc/guc.c:2541 +msgid "If blank, no prefix is used." +msgstr "При пустом значении префикс также отсутствует." + +#: utils/misc/guc.c:2550 +msgid "Sets the time zone to use in log messages." +msgstr "Задаёт часовой пояс для вывода времени в сообщениях протокола." + +#: utils/misc/guc.c:2560 +msgid "Sets the display format for date and time values." +msgstr "Устанавливает формат вывода дат и времени." + +#: utils/misc/guc.c:2561 +msgid "Also controls interpretation of ambiguous date inputs." +msgstr "Также помогает разбирать неоднозначно заданные вводимые даты." + +#: utils/misc/guc.c:2572 +msgid "Sets the default tablespace to create tables and indexes in." +msgstr "" +"Задаёт табличное пространство по умолчанию для новых таблиц и индексов." + +#: utils/misc/guc.c:2573 +msgid "An empty string selects the database's default tablespace." +msgstr "При пустом значении используется табличное пространство базы данных." + +#: utils/misc/guc.c:2583 +msgid "Sets the tablespace(s) to use for temporary tables and sort files." +msgstr "" +"Задаёт табличное пространство(а) для временных таблиц и файлов сортировки." + +#: utils/misc/guc.c:2594 +msgid "Sets the path for dynamically loadable modules." +msgstr "Задаёт путь для динамически загружаемых модулей." + +#: utils/misc/guc.c:2595 +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:2608 +msgid "Sets the location of the Kerberos server key file." +msgstr "Задаёт размещение файла с ключом Kerberos для данного сервера." + +#: utils/misc/guc.c:2619 +msgid "Sets the name of the Kerberos service." +msgstr "Задаёт название службы Kerberos." + +#: utils/misc/guc.c:2629 +msgid "Sets the Bonjour service name." +msgstr "Задаёт название службы Bonjour." + +#: utils/misc/guc.c:2641 +msgid "Shows the collation order locale." +msgstr "Показывает правило сортировки." + +#: utils/misc/guc.c:2652 +msgid "Shows the character classification and case conversion locale." +msgstr "Показывает правило классификации символов и преобразования регистра." + +#: utils/misc/guc.c:2663 +msgid "Sets the language in which messages are displayed." +msgstr "Задаёт язык выводимых сообщений." + +#: utils/misc/guc.c:2673 +msgid "Sets the locale for formatting monetary amounts." +msgstr "Задаёт локаль для форматирования денежных сумм." + +#: utils/misc/guc.c:2683 +msgid "Sets the locale for formatting numbers." +msgstr "Задаёт локаль для форматирования чисел." + +#: utils/misc/guc.c:2693 +msgid "Sets the locale for formatting date and time values." +msgstr "Задаёт локаль для форматирования дат и времени." + +#: utils/misc/guc.c:2703 +msgid "Lists shared libraries to preload into server." +msgstr "Список разделяемых библиотек, заранее загружаемых в память сервера." + +#: utils/misc/guc.c:2714 +msgid "Lists shared libraries to preload into each backend." +msgstr "" +"Список разделяемых библиотек, заранее загружаемых в каждый обслуживающий " +"процесс." + +#: utils/misc/guc.c:2725 +msgid "Sets the schema search order for names that are not schema-qualified." +msgstr "Задаёт порядок просмотра схемы при поиске неполных имён." + +#: utils/misc/guc.c:2737 +msgid "Sets the server (database) character set encoding." +msgstr "Задаёт кодировку символов сервера (баз данных)." + +#: utils/misc/guc.c:2749 +msgid "Shows the server version." +msgstr "Показывает версию сервера." + +#: utils/misc/guc.c:2761 +msgid "Sets the current role." +msgstr "Задаёт текущую роль." + +#: utils/misc/guc.c:2773 +msgid "Sets the session user name." +msgstr "Задаёт имя пользователя в сеансе." + +#: utils/misc/guc.c:2784 +msgid "Sets the destination for server log output." +msgstr "Определяет, куда будет выводиться протокол сервера." + +#: utils/misc/guc.c:2785 +msgid "" +"Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and " +"\"eventlog\", depending on the platform." +msgstr "" +"Значение может включать сочетание слов \"stderr\", \"syslog\", \"csvlog\" и " +"\"eventlog\", в зависимости от платформы." + +#: utils/misc/guc.c:2796 +msgid "Sets the destination directory for log files." +msgstr "Задаёт целевой каталог для файлов протоколов." + +#: utils/misc/guc.c:2797 +msgid "Can be specified as relative to the data directory or as absolute path." +msgstr "" +"Путь может быть абсолютным или указываться относительно каталога данных." + +#: utils/misc/guc.c:2807 +msgid "Sets the file name pattern for log files." +msgstr "Задаёт шаблон имени для файлов протоколов." + +#: utils/misc/guc.c:2818 +msgid "Sets the program name used to identify PostgreSQL messages in syslog." +msgstr "Задаёт имя программы для идентификации сообщений PostgreSQL в syslog." + +#: utils/misc/guc.c:2829 +msgid "Sets the time zone for displaying and interpreting time stamps." +msgstr "" +"Задаёт часовой пояс для вывода и разбора строкового представления времени." + +#: utils/misc/guc.c:2839 +msgid "Selects a file of time zone abbreviations." +msgstr "Выбирает файл с сокращёнными названиями часовых поясов." + +#: utils/misc/guc.c:2849 +msgid "Sets the current transaction's isolation level." +msgstr "Задаёт текущий уровень изоляции транзакций." + +#: utils/misc/guc.c:2860 +msgid "Sets the owning group of the Unix-domain socket." +msgstr "Задаёт группу-владельца доменного сокета Unix." + +#: utils/misc/guc.c:2861 +msgid "" +"The owning user of the socket is always the user that starts the server." +msgstr "" +"Собственно владельцем сокета всегда будет пользователь, запускающий сервер." + +#: utils/misc/guc.c:2871 +msgid "Sets the directory where the Unix-domain socket will be created." +msgstr "Задаёт каталог, где будет создаваться доменный сокет Unix." + +#: utils/misc/guc.c:2882 +msgid "Sets the host name or IP address(es) to listen to." +msgstr "Задаёт имя узла или IP-адрес(а) для привязки." + +#: utils/misc/guc.c:2893 +msgid "Sets the list of known custom variable classes." +msgstr "Задаёт список известных классов дополнительных переменных." + +#: utils/misc/guc.c:2904 +msgid "Sets the server's data directory." +msgstr "Определяет каталог данных сервера." + +#: utils/misc/guc.c:2915 +msgid "Sets the server's main configuration file." +msgstr "Определяет основной файл конфигурации сервера." + +#: utils/misc/guc.c:2926 +msgid "Sets the server's \"hba\" configuration file." +msgstr "Задаёт путь к файлу конфигурации \"hba\"." + +#: utils/misc/guc.c:2937 +msgid "Sets the server's \"ident\" configuration file." +msgstr "Задаёт путь к файлу конфигурации \"ident\"." + +#: utils/misc/guc.c:2948 +msgid "Writes the postmaster PID to the specified file." +msgstr "Файл, в который будет записан код процесса postmaster." + +#: utils/misc/guc.c:2959 +msgid "Writes temporary statistics files to the specified directory." +msgstr "Каталог, в который будут записываться временные файлы статистики." + +#: utils/misc/guc.c:2970 +msgid "List of names of potential synchronous standbys." +msgstr "Список имён потенциально синхронных резервных серверов." + +#: utils/misc/guc.c:2981 +msgid "Sets default text search configuration." +msgstr "Задаёт конфигурацию текстового поиска по умолчанию." + +#: utils/misc/guc.c:2991 +msgid "Sets the list of allowed SSL ciphers." +msgstr "Задаёт список допустимых алгоритмов шифрования для SSL." + +#: utils/misc/guc.c:3006 +msgid "Sets the application name to be reported in statistics and logs." +msgstr "" +"Задаёт имя приложения, которое будет выводиться в статистике и протоколах." + +#: utils/misc/guc.c:3026 +msgid "Sets whether \"\\'\" is allowed in string literals." +msgstr "Определяет, можно ли использовать \"\\'\" в текстовых строках." + +#: utils/misc/guc.c:3036 +msgid "Sets the output format for bytea." +msgstr "Задаёт формат вывода данных типа bytea." + +#: utils/misc/guc.c:3046 +msgid "Sets the message levels that are sent to the client." +msgstr "Ограничивает уровень сообщений, передаваемых клиенту." + +#: utils/misc/guc.c:3047 utils/misc/guc.c:3100 utils/misc/guc.c:3111 +#: utils/misc/guc.c:3167 +msgid "" +"Each level includes all the levels that follow it. The later the level, the " +"fewer messages are sent." +msgstr "" +"Каждый уровень включает все последующие. Чем выше уровень, тем меньше " +"сообщений." + +#: utils/misc/guc.c:3057 +msgid "Enables the planner to use constraints to optimize queries." +msgstr "" +"Разрешает планировщику оптимизировать запросы, полагаясь на ограничения." + +#: utils/misc/guc.c:3058 +msgid "" +"Table scans will be skipped if their constraints guarantee that no rows " +"match the query." +msgstr "" +"Сканирование таблицы не будет выполняться, если её ограничения гарантируют, " +"что запросу не удовлетворяют никакие строки." + +#: utils/misc/guc.c:3068 +msgid "Sets the transaction isolation level of each new transaction." +msgstr "Задаёт уровень изоляции транзакций для новых транзакций." + +#: utils/misc/guc.c:3078 +msgid "Sets the display format for interval values." +msgstr "Задаёт формат отображения для внутренних значений." + +#: utils/misc/guc.c:3089 +msgid "Sets the verbosity of logged messages." +msgstr "Задаёт детализацию протоколируемых сообщений." + +#: utils/misc/guc.c:3099 +msgid "Sets the message levels that are logged." +msgstr "Ограничивает уровни протоколируемых сообщений." + +#: utils/misc/guc.c:3110 +msgid "" +"Causes all statements generating error at or above this level to be logged." +msgstr "" +"Включает протоколирование для SQL-операторов, выполненных с ошибкой этого " +"или большего уровня." + +#: utils/misc/guc.c:3121 +msgid "Sets the type of statements logged." +msgstr "Задаёт тип протоколируемых операторов." + +#: utils/misc/guc.c:3131 +msgid "Sets the syslog \"facility\" to be used when syslog enabled." +msgstr "Задаёт получателя сообщений, отправляемых в syslog." + +#: utils/misc/guc.c:3146 +msgid "Sets the session's behavior for triggers and rewrite rules." +msgstr "" +"Задаёт режим срабатывания триггеров и правил перезаписи для текущего сеанса." + +#: utils/misc/guc.c:3156 +msgid "Sets the current transaction's synchronization level." +msgstr "Задаёт уровень синхронизации текущей транзакции." + +#: utils/misc/guc.c:3166 +msgid "Enables logging of recovery-related debugging information." +msgstr "" +"Включает протоколирование отладочной информации, связанной с репликацией." + +#: utils/misc/guc.c:3182 +msgid "Collects function-level statistics on database activity." +msgstr "Включает сбор статистики активности в БД на уровне функций." + +#: utils/misc/guc.c:3192 +msgid "Set the level of information written to the WAL." +msgstr "Задаёт уровень информации, записываемой в WAL." + +#: utils/misc/guc.c:3202 +msgid "Selects the method used for forcing WAL updates to disk." +msgstr "Выбирает метод принудительной записи изменений в WAL на диск." + +#: utils/misc/guc.c:3212 +msgid "Sets how binary values are to be encoded in XML." +msgstr "Определяет, как должны кодироваться двоичные значения в XML." + +#: utils/misc/guc.c:3222 +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:4064 +#, 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:4083 +#, c-format +msgid "%s cannot access the server configuration file \"%s\": %s\n" +msgstr "%s не может открыть файл конфигурации сервера \"%s\": %s\n" + +#: utils/misc/guc.c:4103 +#, 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\" в файле \"%s\", " +"либо передать в параметре -D, либо установить переменную окружения PGDATA.\n" + +#: utils/misc/guc.c:4134 +#, c-format +msgid "" +"%s does not know where to find the \"hba\" configuration file.\n" +"This can be specified as \"hba_file\" in \"%s\", or by the -D invocation " +"option, or by the PGDATA environment variable.\n" +msgstr "" +"%s не знает, где найти файл конфигурации \"hba\".\n" +"Его расположение можно задать как значение \"hba_file\" в файле \"%s\", либо " +"передать в параметре -D, либо установить переменную окружения PGDATA.\n" + +#: utils/misc/guc.c:4157 +#, 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:4739 utils/misc/guc.c:4903 +msgid "Value exceeds integer range." +msgstr "Значение выходит за рамки целых чисел." + +#: utils/misc/guc.c:4758 +msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"." +msgstr "" +"Допустимые единицы измерения для этого параметра - \"kB\", \"MB\" и \"GB\"." + +#: utils/misc/guc.c:4817 +msgid "" +"Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"." +msgstr "" +"Допустимые единицы измерения для этого параметра - \"ms\", \"s\", \"min\", " +"\"h\" и \"d\"." + +#: utils/misc/guc.c:5100 utils/misc/guc.c:5869 utils/misc/guc.c:5921 +#: utils/misc/guc.c:6594 utils/misc/guc.c:6753 utils/misc/guc.c:7932 +#: guc-file.l:203 +#, c-format +msgid "unrecognized configuration parameter \"%s\"" +msgstr "нераспознанный параметр конфигурации: \"%s\"" + +#: utils/misc/guc.c:5133 +#, c-format +msgid "parameter \"%s\" cannot be changed" +msgstr "параметр \"%s\" нельзя изменить" + +#: utils/misc/guc.c:5162 utils/misc/guc.c:5336 utils/misc/guc.c:5433 +#: utils/misc/guc.c:5527 utils/misc/guc.c:5641 utils/misc/guc.c:5742 +#: guc-file.l:250 +#, c-format +msgid "parameter \"%s\" cannot be changed without restarting the server" +msgstr "параметр \"%s\" изменяется только при перезапуске сервера" + +#: utils/misc/guc.c:5172 +#, c-format +msgid "parameter \"%s\" cannot be changed now" +msgstr "параметр \"%s\" нельзя изменить сейчас" + +#: utils/misc/guc.c:5203 +#, c-format +msgid "parameter \"%s\" cannot be set after connection start" +msgstr "параметр \"%s\" нельзя задать после установления соединения" + +#: utils/misc/guc.c:5213 utils/misc/guc.c:7947 +#, c-format +msgid "permission denied to set parameter \"%s\"" +msgstr "нет прав для изменения параметра \"%s\"" + +#: utils/misc/guc.c:5251 +#, c-format +msgid "cannot set parameter \"%s\" within security-definer function" +msgstr "" +"параметр \"%s\" нельзя задать в функции с контекстом безопасности " +"определившего" + +#: utils/misc/guc.c:5259 utils/init/miscinit.c:381 +#, c-format +msgid "cannot set parameter \"%s\" within security-restricted operation" +msgstr "" +"параметр \"%s\" нельзя задать в рамках операции с ограничениями по " +"безопасности" + +#: utils/misc/guc.c:5309 access/transam/xlog.c:5338 access/transam/xlog.c:5429 +#: access/transam/xlog.c:5440 commands/extension.c:527 +#: commands/extension.c:535 +#, c-format +msgid "parameter \"%s\" requires a Boolean value" +msgstr "параметр \"%s\" требует логическое значение" + +#: utils/misc/guc.c:5397 utils/misc/guc.c:5711 utils/misc/guc.c:8111 +#: utils/misc/guc.c:8145 +#, c-format +msgid "invalid value for parameter \"%s\": \"%s\"" +msgstr "неверное значение для параметра \"%s\": \"%s\"" + +#: utils/misc/guc.c:5399 utils/misc/guc.c:5713 utils/misc/guc.c:8014 +#: utils/misc/guc.c:8048 utils/misc/guc.c:8082 utils/misc/guc.c:8116 +#: utils/misc/guc.c:8151 commands/tablecmds.c:693 commands/user.c:957 +#: storage/lmgr/proc.c:1069 storage/lmgr/deadlock.c:951 +#: catalog/objectaddress.c:315 catalog/dependency.c:937 +#: catalog/dependency.c:938 catalog/dependency.c:944 catalog/dependency.c:945 +#: catalog/dependency.c:956 catalog/dependency.c:957 port/win32/security.c:51 +#, c-format +msgid "%s" +msgstr "%s" + +#: utils/misc/guc.c:5406 +#, c-format +msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)" +msgstr "%d вне диапазона, допустимого для параметра \"%s\" (%d .. %d)" + +#: utils/misc/guc.c:5492 +#, c-format +msgid "parameter \"%s\" requires a numeric value" +msgstr "параметр \"%s\" требует числовое значение" + +#: utils/misc/guc.c:5500 +#, c-format +msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)" +msgstr "%g вне диапазона, допустимого для параметра \"%s\" (%g .. %g)" + +#: utils/misc/guc.c:5877 utils/misc/guc.c:5925 utils/misc/guc.c:6757 +#, c-format +msgid "must be superuser to examine \"%s\"" +msgstr "прочитать \"%s\" может только суперпользователь" + +#: utils/misc/guc.c:5991 +#, c-format +msgid "SET %s takes only one argument" +msgstr "SET %s принимает только один аргумент" + +#: utils/misc/guc.c:6224 +msgid "SET requires parameter name" +msgstr "SET требует имя параметра" + +#: utils/misc/guc.c:6339 +#, c-format +msgid "attempt to redefine parameter \"%s\"" +msgstr "попытка переопределить параметр \"%s\"" + +#: utils/misc/guc.c:7527 utils/init/miscinit.c:1055 +#, c-format +msgid "could not read from file \"%s\": %m" +msgstr "не удалось прочитать файл \"%s\": %m" + +#: utils/misc/guc.c:7648 +#, c-format +msgid "could not parse setting for parameter \"%s\"" +msgstr "не удалось разобрать значение параметра \"%s\"" + +#: utils/misc/guc.c:8009 utils/misc/guc.c:8043 +#, c-format +msgid "invalid value for parameter \"%s\": %d" +msgstr "неверное значение параметра \"%s\": %d" + +#: utils/misc/guc.c:8077 +#, c-format +msgid "invalid value for parameter \"%s\": %g" +msgstr "неверное значение параметра \"%s\": %g" + +#: utils/misc/guc.c:8181 commands/variable.c:59 commands/tablespace.c:1163 +#: replication/syncrep.c:661 catalog/namespace.c:3559 +msgid "List syntax is invalid." +msgstr "Ошибка синтаксиса в списке." + +#: utils/misc/guc.c:8205 commands/variable.c:160 +#, c-format +msgid "Unrecognized key word: \"%s\"." +msgstr "нераспознанное ключевое слово: \"%s\"." + +#: utils/misc/guc.c:8267 +msgid "" +"\"temp_buffers\" cannot be changed after any temporary tables have been " +"accessed in the session." +msgstr "" +"параметр \"temp_buffers\" нельзя изменить после обращения к временным " +"таблицам в текущем сеансе." + +#: utils/misc/guc.c:8279 +msgid "SET AUTOCOMMIT TO OFF is no longer supported" +msgstr "SET AUTOCOMMIT TO OFF больше не поддерживается" + +#: utils/misc/guc.c:8354 +msgid "assertion checking is not supported by this build" +msgstr "в данной сборке не поддерживаются проверки истинности" + +#: utils/misc/guc.c:8367 +msgid "Bonjour is not supported by this build" +msgstr "Bonjour не поддерживается в данной сборке" + +#: utils/misc/guc.c:8380 +msgid "SSL is not supported by this build" +msgstr "SSL не поддерживается в данной сборке" + +#: utils/misc/guc.c:8392 +msgid "Cannot enable parameter when \"log_statement_stats\" is true." +msgstr "" +"Этот параметр нельзя включить, когда \"log_statement_stats\" равен true." + +#: utils/misc/guc.c:8404 +msgid "" +"Cannot enable \"log_statement_stats\" when \"log_parser_stats\", " +"\"log_planner_stats\", or \"log_executor_stats\" is true." +msgstr "" +"Параметр \"log_statement_stats\" нельзя включить, когда \"log_parser_stats" +"\", \"log_planner_stats\" или \"log_executor_stats\" равны true." + +#: guc-file.l:274 +#, c-format +msgid "parameter \"%s\" removed from configuration file, reset to default" +msgstr "" +"параметр \"%s\" удалён из файла конфигурации, он принимает значение по " +"умолчанию" + +#: guc-file.l:333 +#, c-format +msgid "parameter \"%s\" changed to \"%s\"" +msgstr "параметр \"%s\" принял значение \"%s\"" + +#: guc-file.l:374 +#, c-format +msgid "" +"could not open configuration file \"%s\": maximum nesting depth exceeded" +msgstr "" +"открыть файл конфигурации \"%s\" не удалось: превышен предел вложенности" + +#: guc-file.l:409 libpq/hba.c:1683 +#, c-format +msgid "could not open configuration file \"%s\": %m" +msgstr "открыть файл конфигурации \"%s\" не удалось: %m" + +#: guc-file.l:589 +#, c-format +msgid "syntax error in file \"%s\" line %u, near end of line" +msgstr "ошибка синтаксиса в файле \"%s\", в конце строки %u" + +#: guc-file.l:594 +#, c-format +msgid "syntax error in file \"%s\" line %u, near token \"%s\"" +msgstr "ошибка синтаксиса в файле \"%s\", в строке %u, рядом с \"%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 не кратно 15 мин. (900 сек.) (файл часовых поясов " +"\"%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)" + +#: 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." + +#: 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\"" + +#: 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 "" +"в @INCLUDE не указано имя файла (файл часовых поясов \"%s\", строка %d)" + +#: utils/init/miscinit.c:115 +#, c-format +msgid "could not change directory to \"%s\": %m" +msgstr "не удалось перейти в каталог \"%s\": %m" + +#: utils/init/miscinit.c:432 utils/adt/acl.c:4822 commands/variable.c:891 +#: commands/variable.c:963 commands/user.c:623 commands/user.c:825 +#: commands/user.c:905 commands/user.c:1056 +#, c-format +msgid "role \"%s\" does not exist" +msgstr "роль \"%s\" не существует" + +#: utils/init/miscinit.c:460 +#, c-format +msgid "role \"%s\" is not permitted to log in" +msgstr "для роли \"%s\" вход запрещён" + +#: utils/init/miscinit.c:478 +#, c-format +msgid "too many connections for role \"%s\"" +msgstr "слишком много подключений для роли \"%s\"" + +#: utils/init/miscinit.c:538 +msgid "permission denied to set session authorization" +msgstr "нет прав для смены объекта авторизации в сеансе" + +#: utils/init/miscinit.c:618 +#, c-format +msgid "invalid role OID: %u" +msgstr "неверный OID роли: %u" + +#: utils/init/miscinit.c:750 +#, c-format +msgid "could not create lock file \"%s\": %m" +msgstr "не удалось создать файл блокировки \"%s\": %m" + +#: utils/init/miscinit.c:764 +#, c-format +msgid "could not open lock file \"%s\": %m" +msgstr "не удалось открыть файл блокировки \"%s\": %m" + +#: utils/init/miscinit.c:770 +#, c-format +msgid "could not read lock file \"%s\": %m" +msgstr "не удалось прочитать файл блокировки \"%s\": %m" + +#: utils/init/miscinit.c:818 +#, c-format +msgid "lock file \"%s\" already exists" +msgstr "файл блокировки \"%s\" уже существует" + +#: 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:824 +#, c-format +msgid "Is another postmaster (PID %d) running in data directory \"%s\"?" +msgstr "" +"Другой экземпляр postmaster (PID %d) работает с каталогом данных \"%s\"?" + +#: 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:829 +#, c-format +msgid "Is another postmaster (PID %d) using socket file \"%s\"?" +msgstr "Другой экземпляр postmaster (PID %d) использует файл сокета \"%s\"?" + +#: utils/init/miscinit.c:865 +#, c-format +msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use" +msgstr "" +"ранее выделенный блок разделяемой памяти (ключ %lu, ID %lu) по-прежнему " +"используется" + +#: 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:884 +#, c-format +msgid "could not remove old lock file \"%s\": %m" +msgstr "не удалось стереть старый файл блокировки \"%s\": %m" + +#: 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:927 utils/init/miscinit.c:938 +#: utils/init/miscinit.c:948 +#, c-format +msgid "could not write lock file \"%s\": %m" +msgstr "не удалось записать файл блокировки \"%s\": %m" + +#: utils/init/miscinit.c:1046 utils/init/miscinit.c:1161 +#: utils/error/elog.c:1515 access/transam/xlog.c:2515 +#: access/transam/xlog.c:4232 access/transam/xlog.c:4326 +#: access/transam/xlog.c:4482 replication/basebackup.c:849 +#: storage/file/copydir.c:165 storage/file/copydir.c:255 storage/smgr/md.c:553 +#: storage/smgr/md.c:810 +#, c-format +msgid "could not open file \"%s\": %m" +msgstr "не удалось открыть файл \"%s\": %m" + +#: utils/init/miscinit.c:1155 utils/init/miscinit.c:1168 +#, c-format +msgid "\"%s\" is not a valid data directory" +msgstr "\"%s\" не является каталогом данных" + +#: utils/init/miscinit.c:1157 +#, c-format +msgid "File \"%s\" is missing." +msgstr "Файл \"%s\" отсутствует." + +#: utils/init/miscinit.c:1170 +#, c-format +msgid "File \"%s\" does not contain valid data." +msgstr "Файл \"%s\" содержит неприемлемые данные." + +#: utils/init/miscinit.c:1172 +msgid "You might need to initdb." +msgstr "Возможно, вам нужно выполнить initdb." + +#: utils/init/miscinit.c:1179 access/transam/xlog.c:4754 +#: access/transam/xlog.c:4763 access/transam/xlog.c:4787 +#: access/transam/xlog.c:4794 access/transam/xlog.c:4801 +#: access/transam/xlog.c:4806 access/transam/xlog.c:4813 +#: access/transam/xlog.c:4820 access/transam/xlog.c:4827 +#: access/transam/xlog.c:4834 access/transam/xlog.c:4841 +#: access/transam/xlog.c:4848 access/transam/xlog.c:4857 +#: access/transam/xlog.c:4864 access/transam/xlog.c:4873 +#: access/transam/xlog.c:4880 access/transam/xlog.c:4889 +#: access/transam/xlog.c:4896 +msgid "database files are incompatible with server" +msgstr "файлы базы данных не совместимы с сервером" + +#: utils/init/miscinit.c:1180 +#, 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:1228 +#, c-format +msgid "invalid list syntax in parameter \"%s\"" +msgstr "неверный формат списка в параметре \"%s\"" + +#: utils/init/miscinit.c:1265 +#, c-format +msgid "loaded library \"%s\"" +msgstr "загружена библиотека \"%s\"" + +#: utils/init/postinit.c:225 +#, c-format +msgid "replication connection authorized: user=%s" +msgstr "подключение для репликации авторизовано: пользователь=%s" + +#: utils/init/postinit.c:229 +#, c-format +msgid "connection authorized: user=%s database=%s" +msgstr "подключение авторизовано: пользователь=%s, база=%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:282 +#, c-format +msgid "database \"%s\" is not currently accepting connections" +msgstr "база \"%s\" не принимает подключения в данный момент" + +#: 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." + +#: utils/init/postinit.c:313 +#, c-format +msgid "too many connections for database \"%s\"" +msgstr "слишком много подключений к БД \"%s\"" + +#: utils/init/postinit.c:335 utils/init/postinit.c:342 +msgid "database locale is incompatible with operating system" +msgstr "локаль БД несовместима с операционной системой" + +#: 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 "" +"Пересоздайте базу данных с другой локалью или установите поддержку нужной " +"локали." + +#: 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:608 +msgid "no roles are defined in this database system" +msgstr "в этой системе баз данных не создано ни одной роли" + +#: utils/init/postinit.c:609 +#, c-format +msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;." +msgstr "Вы должны немедленно выполнить CREATE USER \"%s\" CREATEUSER;." + +#: utils/init/postinit.c:632 +msgid "new replication connections are not allowed during database shutdown" +msgstr "" +"новые подключения для репликации не допускаются в процессе остановки БД" + +#: utils/init/postinit.c:636 +msgid "must be superuser to connect during database shutdown" +msgstr "" +"нужно быть суперпользователем, чтобы подключиться в процессе остановки БД" + +#: utils/init/postinit.c:646 +msgid "must be superuser to connect in binary upgrade mode" +msgstr "" +"нужно быть суперпользователем, чтобы подключиться в режиме двоичного " +"обновления" + +#: utils/init/postinit.c:660 +msgid "" +"remaining connection slots are reserved for non-replication superuser " +"connections" +msgstr "" +"оставшиеся слоты подключений зарезервированы для подключений " +"суперпользователя (не для репликации)" + +#: utils/init/postinit.c:675 +msgid "must be replication role to start walsender" +msgstr "для запуска процесса walsender требуется роль репликации" + +#: utils/init/postinit.c:718 utils/init/postinit.c:786 +#: utils/init/postinit.c:803 commands/dbcommands.c:791 +#: commands/dbcommands.c:936 commands/dbcommands.c:1035 +#: commands/dbcommands.c:1208 commands/dbcommands.c:1393 +#: commands/dbcommands.c:1478 commands/dbcommands.c:1905 commands/comment.c:60 +#, c-format +msgid "database \"%s\" does not exist" +msgstr "база данных \"%s\" не существует" + +#: utils/init/postinit.c:735 +#, c-format +msgid "database %u does not exist" +msgstr "база данных \"%u не существует" + +#: utils/init/postinit.c:787 +msgid "It seems to have just been dropped or renamed." +msgstr "Похоже, она только что была удалена или переименована." + +#: utils/init/postinit.c:805 +#, c-format +msgid "The database subdirectory \"%s\" is missing." +msgstr "Подкаталог базы данных \"%s\" отсутствует." + +#: utils/init/postinit.c:810 +#, c-format +msgid "could not access directory \"%s\": %m" +msgstr "ошибка доступа к каталогу \"%s\": %m" + +#: utils/error/elog.c:1525 +#, c-format +msgid "could not reopen file \"%s\" as stderr: %m" +msgstr "открыть файл \"%s\" как stderr не удалось: %m" + +#: utils/error/elog.c:1538 +#, c-format +msgid "could not reopen file \"%s\" as stdout: %m" +msgstr "открыть файл \"%s\" как stdout не удалось: %m" + +#: utils/error/elog.c:1928 utils/error/elog.c:1938 utils/error/elog.c:1948 +msgid "[unknown]" +msgstr "[н/д]" + +#: utils/error/elog.c:2299 utils/error/elog.c:2579 utils/error/elog.c:2657 +msgid "missing error text" +msgstr "отсутствует текст ошибки" + +#: utils/error/elog.c:2302 utils/error/elog.c:2305 utils/error/elog.c:2660 +#: utils/error/elog.c:2663 +#, c-format +msgid " at character %d" +msgstr " (символ %d)" + +#: utils/error/elog.c:2315 utils/error/elog.c:2322 +msgid "DETAIL: " +msgstr "ПОДРОБНОСТИ: " + +#: utils/error/elog.c:2329 +msgid "HINT: " +msgstr "ПОДСКАЗКА: " + +#: utils/error/elog.c:2336 +msgid "QUERY: " +msgstr "ЗАПРОС: " + +#: utils/error/elog.c:2343 +msgid "CONTEXT: " +msgstr "КОНТЕКСТ: " + +#: utils/error/elog.c:2353 +#, c-format +msgid "LOCATION: %s, %s:%d\n" +msgstr "ПОЛОЖЕНИЕ: %s, %s:%d\n" + +#: utils/error/elog.c:2360 +#, c-format +msgid "LOCATION: %s:%d\n" +msgstr "ПОЛОЖЕНИЕ: %s:%d\n" + +#: utils/error/elog.c:2374 +msgid "STATEMENT: " +msgstr "ОПЕРАТОР: " + +#. translator: This string will be truncated at 47 +#. characters expanded. +#: utils/error/elog.c:2772 +#, c-format +msgid "operating system error %d" +msgstr "ошибка операционной системы %d" + +#: utils/error/elog.c:2795 +msgid "DEBUG" +msgstr "ОТЛАДКА" + +#: utils/error/elog.c:2799 +msgid "LOG" +msgstr "ОТМЕТКА" + +#: utils/error/elog.c:2802 +msgid "INFO" +msgstr "ИНФОРМАЦИЯ" + +#: utils/error/elog.c:2805 +msgid "NOTICE" +msgstr "ЗАМЕЧАНИЕ" + +#: utils/error/elog.c:2808 +msgid "WARNING" +msgstr "ПРЕДУПРЕЖДЕНИЕ" + +#: utils/error/elog.c:2811 +msgid "ERROR" +msgstr "ОШИБКА" + +#: utils/error/elog.c:2814 +msgid "FATAL" +msgstr "ВАЖНО" + +#: utils/error/elog.c:2817 +msgid "PANIC" +msgstr "ПАНИКА" + +#: utils/error/assert.c:37 +msgid "TRAP: ExceptionalCondition: bad arguments\n" +msgstr "ЛОВУШКА: Исключительное условие: неверные аргументы\n" + +#: utils/error/assert.c:40 +#, c-format +msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n" +msgstr "ЛОВУШКА: %s(\"%s\", файл: \"%s\", строка: %d)\n" + +#: utils/sort/tuplesort.c:3131 +#, c-format +msgid "could not create unique index \"%s\"" +msgstr "создать уникальный индекс \"%s\" не удалось" + +#: utils/sort/tuplesort.c:3133 +#, c-format +msgid "Key %s is duplicated." +msgstr "Обнаружен повторяющийся ключ (%s)." + +#: utils/sort/logtape.c:213 +#, c-format +msgid "could not write block %ld of temporary file: %m" +msgstr "не удалось записать блок %ld временного файла: %m" + +#: utils/sort/logtape.c:215 +msgid "Perhaps out of disk space?" +msgstr "Возможно нет места на диске?" + +#: utils/sort/logtape.c:232 +#, c-format +msgid "could not read block %ld of temporary file: %m" +msgstr "не удалось считать блок %ld временного файла: %m" + +#: utils/fmgr/fmgr.c:271 +#, c-format +msgid "internal function \"%s\" is not in internal lookup table" +msgstr "внутренней функции \"%s\" нет во внутренней поисковой таблице" + +#: utils/fmgr/fmgr.c:481 +#, c-format +msgid "unrecognized API version %d reported by info function \"%s\"" +msgstr "" +"версия API (%d), выданная информационной функцией \"%s\", не поддерживается" + +#: utils/fmgr/fmgr.c:852 utils/fmgr/fmgr.c:2113 +#, c-format +msgid "function %u has too many arguments (%d, maximum is %d)" +msgstr "у функции %u слишком много аргументов (%d, при максимуме %d)" + +#: utils/fmgr/dfmgr.c:125 +#, c-format +msgid "could not find function \"%s\" in file \"%s\"" +msgstr "не удалось найти функцию \"%s\" в файле \"%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 "нет доступа к файлу \"%s\": %m" + +#: 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\": несоответствие отличительного блока" + +#: utils/fmgr/dfmgr.c:545 +#, c-format +msgid "access to library \"%s\" is not allowed" +msgstr "доступ к библиотеке \"%s\" не разрешён" + +#: utils/fmgr/dfmgr.c:572 +#, c-format +msgid "invalid macro name in dynamic library path: %s" +msgstr "неправильный макрос в пути динамической библиотеки: %s" + +#: utils/fmgr/dfmgr.c:617 +msgid "zero-length component in parameter \"dynamic_library_path\"" +msgstr "параметр dynamic_library_path содержит компонент нулевой длины" + +#: utils/fmgr/dfmgr.c:636 +msgid "component in parameter \"dynamic_library_path\" is not an absolute path" +msgstr "" +"параметр dynamic_library_path содержит компонент, не являющийся абсолютным " +"путём" + +#: utils/fmgr/funcapi.c:60 utils/mmgr/portalmem.c:985 commands/prepare.c:751 +#: commands/extension.c:1711 commands/extension.c:1820 +#: commands/extension.c:2013 foreign/foreign.c:350 executor/functions.c:785 +#: executor/execQual.c:1706 executor/execQual.c:1731 executor/execQual.c:2092 +#: executor/execQual.c:5221 replication/walsender.c:1412 +msgid "set-valued function called in context that cannot accept a set" +msgstr "" +"функция, возвращающая множество, вызвана в контексте, где ему нет места" + +#: 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" + +#: utils/fmgr/funcapi.c:1208 utils/fmgr/funcapi.c:1239 +msgid "number of aliases does not match number of columns" +msgstr "число псевдонимов не совпадает с числом колонок" + +#: utils/fmgr/funcapi.c:1233 +msgid "no column alias was provided" +msgstr "псевдоним колонки не указан" + +#: utils/fmgr/funcapi.c:1257 +msgid "could not determine row description for function returning record" +msgstr "не удалось определить описание строки для функции, возвращающей запись" + +#: 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 кодировки %d для наборов символов 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 кодировки %d для наборов символов WIN" + +#: utils/mb/conv.c:509 +#, c-format +msgid "invalid encoding number: %d" +msgstr "неверный номер кодировки: %d" + +#: utils/mb/encnames.c:485 +msgid "encoding name too long" +msgstr "слишком длинное имя кодировки" + +#: utils/mb/mbutils.c:281 +#, c-format +msgid "conversion between %s and %s is not supported" +msgstr "преобразование %s <-> %s не поддерживается" + +#: 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:462 +#, c-format +msgid "invalid source encoding name \"%s\"" +msgstr "неверное имя исходной кодировки: \"%s\"" + +#: utils/mb/mbutils.c:467 +#, c-format +msgid "invalid destination encoding name \"%s\"" +msgstr "неверное имя кодировки результата: \"%s\"" + +#: utils/mb/mbutils.c:515 utils/adt/xml.c:159 +#, c-format +msgid "invalid encoding name \"%s\"" +msgstr "неверное имя кодировки: \"%s\"" + +#: utils/mb/mbutils.c:589 +#, c-format +msgid "invalid byte value for encoding \"%s\": 0x%02x" +msgstr "недопустимое байтовое значение для кодировки \"%s\": 0x%02x" + +#: utils/mb/wchar.c:1777 +#, c-format +msgid "invalid byte sequence for encoding \"%s\": 0x%s" +msgstr "неверная последовательность байт для кодировки \"%s\": 0x%s" + +#: utils/mb/wchar.c:1806 +#, c-format +msgid "character 0x%s of encoding \"%s\" has no equivalent in \"%s\"" +msgstr "для символа 0x%s из кодировки \"%s\" нет эквивалентного в \"%s\"" + +#: utils/mmgr/aset.c:417 +#, 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 +#, c-format +msgid "Failed on request of size %lu." +msgstr "Ошибка при запросе памяти (%lu Б)." + +#: utils/mmgr/portalmem.c:207 +#, c-format +msgid "cursor \"%s\" already exists" +msgstr "курсор \"%s\" уже существует" + +#: utils/mmgr/portalmem.c:211 +#, c-format +msgid "closing existing cursor \"%s\"" +msgstr "существующий курсор (\"%s\") закрывается" + +#: utils/mmgr/portalmem.c:478 +#, c-format +msgid "cannot drop active portal \"%s\"" +msgstr "удалить активный портал \"%s\" нельзя" + +#: utils/mmgr/portalmem.c:668 +msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD" +msgstr "нельзя выполнить PREPARE для транзакции, создавшей курсор WITH HOLD" + +#: utils/mmgr/portalmem.c:989 commands/prepare.c:755 commands/extension.c:1715 +#: commands/extension.c:1824 commands/extension.c:2017 foreign/foreign.c:355 +#: replication/walsender.c:1416 +msgid "materialize mode required, but it is not allowed in this context" +msgstr "требуется режим материализации, но он недопустим в этом контексте" + +#: utils/adt/windowfuncs.c:243 +msgid "argument of ntile must be greater than zero" +msgstr "аргумент ntile должен быть больше нуля" + +#: utils/adt/windowfuncs.c:465 +msgid "argument of nth_value must be greater than zero" +msgstr "аргумент nth_value должен быть больше нуля" + +#: utils/adt/xml.c:138 +msgid "unsupported XML feature" +msgstr "XML-функции не поддерживаются" + +#: utils/adt/xml.c:139 +msgid "This functionality requires the server to be built with libxml support." +msgstr "Для этой функциональности в сервере не хватает поддержки libxml." + +#: utils/adt/xml.c:140 +msgid "You need to rebuild PostgreSQL using --with-libxml." +msgstr "Необходимо перекомпилировать PostgreSQL с ключом --with-libxml." + +#: utils/adt/xml.c:405 utils/adt/xml.c:410 +msgid "invalid XML comment" +msgstr "ошибка в XML-комментарии" + +#: utils/adt/xml.c:539 +msgid "not an XML document" +msgstr "не XML-документ" + +#: utils/adt/xml.c:692 utils/adt/xml.c:715 +msgid "invalid XML processing instruction" +msgstr "неправильная XML-инструкция обработки (PI)" + +#: utils/adt/xml.c:693 +#, c-format +msgid "XML processing instruction target name cannot be \"%s\"." +msgstr "назначением XML-инструкции обработки (PI) не может быть \"%s\"." + +#: utils/adt/xml.c:716 +msgid "XML processing instruction cannot contain \"?>\"." +msgstr "XML-инструкция обработки (PI) не может содержать \"?>\"." + +#: utils/adt/xml.c:795 +msgid "xmlvalidate is not implemented" +msgstr "функция xmlvalidate не реализована" + +#: utils/adt/xml.c:880 +msgid "could not initialize XML library" +msgstr "не удалось инициализировать библиотеку XML" + +#: utils/adt/xml.c:881 +#, 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:1448 +msgid "Invalid character value." +msgstr "Неверный символ." + +#: utils/adt/xml.c:1451 +msgid "Space required." +msgstr "Требуется пробел." + +#: utils/adt/xml.c:1454 +msgid "standalone accepts only 'yes' or 'no'." +msgstr "значениями атрибута standalone могут быть только 'yes' и 'no'." + +#: utils/adt/xml.c:1457 +msgid "Malformed declaration: missing version." +msgstr "Ошибочное объявление: не указана версия." + +#: utils/adt/xml.c:1460 +msgid "Missing encoding in text declaration." +msgstr "В объявлении не указана кодировка." + +#: utils/adt/xml.c:1463 +msgid "Parsing XML declaration: '?>' expected." +msgstr "Ошибка при разборе XML-объявления: ожидается '?>'." + +#: utils/adt/xml.c:1466 +#, c-format +msgid "Unrecognized libxml error code: %d." +msgstr "нераспознанный код ошибки libxml: %d." + +#: utils/adt/xml.c:1717 utils/adt/date.c:217 +msgid "date out of range" +msgstr "дата вне диапазона" + +#: utils/adt/xml.c:1718 +msgid "XML does not support infinite date values." +msgstr "XML не поддерживает бесконечность в датах." + +#: utils/adt/xml.c:1740 utils/adt/xml.c:1747 utils/adt/xml.c:1767 +#: utils/adt/xml.c:1774 utils/adt/timestamp.c:226 utils/adt/timestamp.c:269 +#: utils/adt/timestamp.c:491 utils/adt/timestamp.c:531 +#: utils/adt/timestamp.c:2531 utils/adt/timestamp.c:2552 +#: utils/adt/timestamp.c:2565 utils/adt/timestamp.c:2574 +#: utils/adt/timestamp.c:2632 utils/adt/timestamp.c:2655 +#: utils/adt/timestamp.c:2668 utils/adt/timestamp.c:2679 +#: utils/adt/timestamp.c:3115 utils/adt/timestamp.c:3245 +#: utils/adt/timestamp.c:3286 utils/adt/timestamp.c:3374 +#: utils/adt/timestamp.c:3421 utils/adt/timestamp.c:3532 +#: utils/adt/timestamp.c:3845 utils/adt/timestamp.c:3982 +#: utils/adt/timestamp.c:3989 utils/adt/timestamp.c:4003 +#: utils/adt/timestamp.c:4013 utils/adt/timestamp.c:4076 +#: utils/adt/timestamp.c:4216 utils/adt/timestamp.c:4226 +#: utils/adt/timestamp.c:4441 utils/adt/timestamp.c:4520 +#: utils/adt/timestamp.c:4527 utils/adt/timestamp.c:4554 +#: utils/adt/timestamp.c:4558 utils/adt/timestamp.c:4615 +#: utils/adt/formatting.c:3247 utils/adt/formatting.c:3279 +#: utils/adt/formatting.c:3347 utils/adt/date.c:913 utils/adt/date.c:960 +#: utils/adt/date.c:1516 utils/adt/date.c:1553 utils/adt/date.c:2426 +#: utils/adt/nabstime.c:480 utils/adt/nabstime.c:523 utils/adt/nabstime.c:553 +#: utils/adt/nabstime.c:596 +msgid "timestamp out of range" +msgstr "timestamp вне диапазона" + +#: utils/adt/xml.c:1741 utils/adt/xml.c:1768 +msgid "XML does not support infinite timestamp values." +msgstr "XML не поддерживает бесконечность в timestamp." + +#: utils/adt/xml.c:2074 utils/adt/xml.c:2238 commands/portalcmds.c:168 +#: commands/portalcmds.c:222 executor/execCurrent.c:66 +#, c-format +msgid "cursor \"%s\" does not exist" +msgstr "курсор \"%s\" не существует" + +#: utils/adt/xml.c:2153 +msgid "invalid query" +msgstr "неверный запрос" + +#: utils/adt/xml.c:3377 +msgid "invalid array for XML namespace mapping" +msgstr "неправильный массив с сопоставлениями пространств имён XML" + +#: utils/adt/xml.c:3378 +msgid "" +"The array must be two-dimensional with length of the second axis equal to 2." +msgstr "Массив должен быть двухмерным и содержать 2 элемента по второй оси." + +#: utils/adt/xml.c:3402 +msgid "empty XPath expression" +msgstr "пустое выражение XPath" + +#: utils/adt/xml.c:3450 +msgid "neither namespace name nor URI may be null" +msgstr "ни префикс, ни URI пространства имён не может быть null" + +#: utils/adt/xml.c:3457 +#, c-format +msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" +msgstr "" +"не удалось зарегистрировать пространство имён XML с префиксом \"%s\" и URI " +"\"%s\"" + +#: utils/adt/regexp.c:194 tsearch/spell.c:439 +#, c-format +msgid "invalid regular expression: %s" +msgstr "неверное регулярное выражение: %s" + +#: utils/adt/regexp.c:274 utils/adt/regexp.c:1223 utils/adt/varlena.c:2860 +#, c-format +msgid "regular expression failed: %s" +msgstr "ошибка в регулярном выражении: %s" + +#: utils/adt/regexp.c:411 +#, c-format +msgid "invalid regexp option: \"%c\"" +msgstr "неверный элемент рег. выражения: \"%c\"" + +#: utils/adt/regexp.c:683 utils/adt/like_match.c:289 +msgid "invalid escape string" +msgstr "неверный защитный символ" + +#: utils/adt/regexp.c:684 utils/adt/like_match.c:290 +msgid "Escape string must be empty or one character." +msgstr "Защитный символ должен быть пустым или состоять из одного байта." + +#: utils/adt/regexp.c:883 +msgid "regexp_split does not support the global option" +msgstr "regexp_split не поддерживает глобальный поиск" + +#: utils/adt/datum.c:80 utils/adt/datum.c:92 +msgid "invalid Datum pointer" +msgstr "неверный указатель Datum" + +#: utils/adt/array_userfuncs.c:48 +msgid "could not determine input data types" +msgstr "не удалось определить типы входных данных" + +#: utils/adt/array_userfuncs.c:82 +msgid "neither input type is an array" +msgstr "входной тип так же не является массивом" + +#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113 +#: 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/varlena.c:950 +#: utils/adt/varlena.c:1968 utils/adt/int8.c:1247 utils/adt/float.c:1101 +#: utils/adt/float.c:1160 utils/adt/float.c:2711 utils/adt/float.c:2727 +#: utils/adt/varbit.c:1111 utils/adt/varbit.c:1503 utils/adt/arrayfuncs.c:1276 +#: utils/adt/numeric.c:2253 utils/adt/numeric.c:2262 +msgid "integer out of range" +msgstr "целое вне диапазона" + +#: utils/adt/array_userfuncs.c:121 +msgid "argument must be empty or one-dimensional array" +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 +#: utils/adt/array_userfuncs.c:357 +msgid "cannot concatenate incompatible arrays" +msgstr "соединять несовместимые массивы нельзя" + +#: 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:264 +#, c-format +msgid "Arrays of %d and %d dimensions are not compatible for concatenation." +msgstr "Массивы с размерностями %d и %d несовместимы для соединения." + +#: utils/adt/array_userfuncs.c:301 +msgid "" +"Arrays with differing element dimensions are not compatible for " +"concatenation." +msgstr "Массивы с разными размерностями элементов несовместимы для соединения." + +#: 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:426 utils/adt/arrayfuncs.c:1238 +#: utils/adt/arrayfuncs.c:2911 utils/adt/arrayfuncs.c:4936 +#, c-format +msgid "invalid number of dimensions: %d" +msgstr "неверное число размерностей: %d" + +#: 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:4940 +#: executor/execQual.c:303 executor/execQual.c:331 executor/execQual.c:3080 +#, c-format +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgstr "число размерностей массива (%d) превышает предел (%d)" + +#: utils/adt/array_userfuncs.c:487 +msgid "could not determine input data type" +msgstr "не удалось определить тип входных данных" + +#: utils/adt/int.c:162 +msgid "int2vector has too many elements" +msgstr "int2vector содержит слишком много элементов" + +#: utils/adt/int.c:237 +msgid "invalid int2vector data" +msgstr "неверные данные int2vector" + +#: 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/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/float.c:1119 +#: utils/adt/float.c:1177 utils/adt/numeric.c:2354 utils/adt/numeric.c:2365 +msgid "smallint out of range" +msgstr "smallint вне диапазона" + +#: 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/timestamp.c:2877 utils/adt/geo_ops.c:4130 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/float.c:764 +#: utils/adt/float.c:828 utils/adt/float.c:2470 utils/adt/float.c:2533 +#: utils/adt/cash.c:507 utils/adt/cash.c:557 utils/adt/cash.c:608 +#: utils/adt/cash.c:657 utils/adt/cash.c:709 utils/adt/cash.c:759 +#: utils/adt/numeric.c:4507 utils/adt/numeric.c:4790 +msgid "division by zero" +msgstr "деление на ноль" + +#: utils/adt/int.c:1362 utils/adt/timestamp.c:4713 utils/adt/timestamp.c:4794 +#: utils/adt/int8.c:1409 +msgid "step size cannot equal zero" +msgstr "размер шага не может быть нулевым" + +#: utils/adt/tsgistidx.c:100 +msgid "gtsvector_in not implemented" +msgstr "функция gtsvector_in не реализована" + +#: utils/adt/bool.c:153 +#, c-format +msgid "invalid input syntax for type boolean: \"%s\"" +msgstr "неверное значение для логического типа: \"%s\"" + +#: utils/adt/arrayutils.c:93 utils/adt/arrayutils.c:102 +#: utils/adt/arrayutils.c:109 utils/adt/arrayfuncs.c:871 +#: utils/adt/arrayfuncs.c:1473 utils/adt/arrayfuncs.c:2795 +#: utils/adt/arrayfuncs.c:2943 utils/adt/arrayfuncs.c:5036 +#, c-format +msgid "array size exceeds the maximum allowed (%d)" +msgstr "размер массива превышает предел (%d)" + +#: 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/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/timestamp.c:92 utils/adt/varchar.c:43 utils/adt/date.c:66 +#: utils/adt/varbit.c:51 +msgid "invalid type modifier" +msgstr "неверный модификатор типа" + +#: utils/adt/timestamp.c:97 +#, c-format +msgid "TIMESTAMP(%d)%s precision must not be negative" +msgstr "TIMESTAMP(%d)%s: точность должна быть неотрицательна" + +#: 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:171 utils/adt/timestamp.c:435 +#, c-format +msgid "timestamp out of range: \"%s\"" +msgstr "timestamp вне диапазона: \"%s\"" + +#: 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 "значение даты/времени \"%s\" более не поддерживается" + +#: utils/adt/timestamp.c:260 +msgid "timestamp cannot be NaN" +msgstr "timestamp не может быть NaN" + +#: 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:658 utils/adt/timestamp.c:3110 +#: utils/adt/timestamp.c:3240 utils/adt/timestamp.c:3625 +msgid "interval out of range" +msgstr "interval вне диапазона" + +#: utils/adt/timestamp.c:787 utils/adt/timestamp.c:820 +msgid "invalid INTERVAL type modifier" +msgstr "неверный модификатор типа INTERVAL" + +#: utils/adt/timestamp.c:803 +#, c-format +msgid "INTERVAL(%d) precision must not be negative" +msgstr "INTERVAL(%d): точность должна быть неотрицательна" + +#: utils/adt/timestamp.c:809 +#, c-format +msgid "INTERVAL(%d) precision reduced to maximum allowed, %d" +msgstr "INTERVAL(%d): точность уменьшена до максимально возможной: %d" + +#: 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:2307 +msgid "cannot subtract infinite timestamps" +msgstr "вычитать бесконечные значения timestamp нельзя" + +#: utils/adt/timestamp.c:3366 utils/adt/timestamp.c:3962 +#: utils/adt/timestamp.c:4021 +#, c-format +msgid "timestamp units \"%s\" not supported" +msgstr "единицы timestamp \"%s\" не поддерживаются" + +#: utils/adt/timestamp.c:3380 utils/adt/timestamp.c:4031 +#, c-format +msgid "timestamp units \"%s\" not recognized" +msgstr "единицы timestamp \"%s\" не распознаны" + +#: utils/adt/timestamp.c:3521 utils/adt/timestamp.c:4193 +#: utils/adt/timestamp.c:4234 +#, c-format +msgid "timestamp with time zone units \"%s\" not supported" +msgstr "единицы timestamp с часовым поясом \"%s\" не поддерживаются" + +#: utils/adt/timestamp.c:3538 utils/adt/timestamp.c:4243 +#, c-format +msgid "timestamp with time zone units \"%s\" not recognized" +msgstr "единицы timestamp с часовым поясом \"%s\" не распознаны" + +#: utils/adt/timestamp.c:3618 utils/adt/timestamp.c:4349 +#, c-format +msgid "interval units \"%s\" not supported" +msgstr "единицы interval \"%s\" не поддерживаются" + +#: utils/adt/timestamp.c:3634 utils/adt/timestamp.c:4376 +#, c-format +msgid "interval units \"%s\" not recognized" +msgstr "единицы interval \"%s\" не распознаны" + +#: utils/adt/timestamp.c:4446 utils/adt/timestamp.c:4619 +#, c-format +msgid "could not convert to time zone \"%s\"" +msgstr "не удалось пересчитать время в часовой пояс \"%s\"" + +#: utils/adt/timestamp.c:4453 utils/adt/timestamp.c:4626 utils/adt/date.c:2631 +#: utils/adt/datetime.c:928 utils/adt/datetime.c:1663 +#, c-format +msgid "time zone \"%s\" not recognized" +msgstr "часовой пояс \"%s\" не распознан" + +#: utils/adt/timestamp.c:4478 utils/adt/timestamp.c:4652 +#, c-format +msgid "interval time zone \"%s\" must not specify month" +msgstr "интервал \"%s\", задающий часовой пояс, не должен содержать месяцев" + +#: utils/adt/selfuncs.c:4934 +msgid "case insensitive matching not supported on type bytea" +msgstr "регистро-независимое сравнение не поддерживается для типа bytea" + +#: utils/adt/selfuncs.c:4949 utils/adt/like.c:211 +msgid "could not determine which collation to use for ILIKE" +msgstr "не удалось определить, какой порядок сортировки использовать для ILIKE" + +#: utils/adt/selfuncs.c:4950 utils/adt/varlena.c:1315 +#: utils/adt/formatting.c:1515 utils/adt/formatting.c:1565 +#: utils/adt/formatting.c:1631 utils/adt/formatting.c:1681 +#: utils/adt/formatting.c:1748 utils/adt/formatting.c:1810 +#: utils/adt/like.c:212 commands/indexcmds.c:903 commands/view.c:145 +#: regex/regc_pg_locale.c:259 catalog/heap.c:560 +msgid "Use the COLLATE clause to set the collation explicitly." +msgstr "Задайте правило сравнения явно в предложении COLLATE." + +#: utils/adt/selfuncs.c:5037 +msgid "regular-expression matching not supported on type bytea" +msgstr "сравнение с регулярными выражениями не поддерживается для типа bytea " + +#: utils/adt/varlena.c:246 utils/adt/varlena.c:287 utils/adt/encode.c:441 +#: utils/adt/encode.c:506 +msgid "invalid input syntax for type bytea" +msgstr "неверный синтаксис для типа bytea" + +#: 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 utils/adt/varbit.c:1004 +#: utils/adt/varbit.c:1106 +msgid "negative substring length not allowed" +msgstr "подстрока должна иметь неотрицательную длину" + +#: utils/adt/varlena.c:1314 +msgid "could not determine which collation to use for string comparison" +msgstr "" +"не удалось определить, какое правило сортировки использовать для сравнения " +"строк" + +#: 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: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:2163 utils/adt/varbit.c:1740 +msgid "new bit must be 0 or 1" +msgstr "значением бита должен быть 0 или 1" + +#: utils/adt/varlena.c:2245 utils/adt/varlena.c:2250 utils/adt/regproc.c:1320 +#: utils/adt/regproc.c:1325 +msgid "invalid name syntax" +msgstr "ошибка синтаксиса в имени" + +#: utils/adt/varlena.c:2953 +msgid "field position must be greater than zero" +msgstr "позиция поля должна быть больше нуля" + +#: utils/adt/varlena.c:3822 utils/adt/varlena.c:3883 +msgid "unterminated conversion specifier" +msgstr "незавершённое определение преобразования" + +#: utils/adt/varlena.c:3846 utils/adt/varlena.c:3862 +msgid "argument number is out of range" +msgstr "номер аргумента вне диапазона" + +#: utils/adt/varlena.c:3889 +msgid "conversion specifies argument 0, but arguments are numbered from 1" +msgstr "преобразование ссылается на аргумент 0, но аргументы нумеруются с 1" + +#: utils/adt/varlena.c:3896 +msgid "too few arguments for format" +msgstr "мало аргументов для формата" + +#: utils/adt/varlena.c:3917 +#, c-format +msgid "unrecognized conversion specifier \"%c\"" +msgstr "нераспознанный символ преобразования \"%c\"" + +#: utils/adt/varlena.c:3946 +msgid "null values cannot be formatted as an SQL identifier" +msgstr "значения null нельзя представить в виде SQL-идентификатора" + +#: 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/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\"" + +#: 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:317 +msgid "could not format \"path\" value" +msgstr "не удалось отформатировать значение \"path\"" + +#: utils/adt/geo_ops.c:392 +#, c-format +msgid "invalid input syntax for type box: \"%s\"" +msgstr "неверный синтаксис для типа box: \"%s\"" + +#: utils/adt/geo_ops.c:956 +#, c-format +msgid "invalid input syntax for type line: \"%s\"" +msgstr "неверный синтаксис для типа line: \"%s\"" + +#: 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: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:1473 +msgid "invalid number of points in external \"path\" value" +msgstr "недопустимое число точек во внешнем представлении типа \"path\"" + +#: utils/adt/geo_ops.c:1816 +#, c-format +msgid "invalid input syntax for type point: \"%s\"" +msgstr "неверный синтаксис для типа point: \"%s\"" + +#: utils/adt/geo_ops.c:2044 +#, c-format +msgid "invalid input syntax for type lseg: \"%s\"" +msgstr "неверный синтаксис для типа lseg: \"%s\"" + +#: utils/adt/geo_ops.c:2648 +msgid "function \"dist_lb\" not implemented" +msgstr "функция \"dist_lb\" не реализована" + +#: utils/adt/geo_ops.c:3161 +msgid "function \"close_lb\" not implemented" +msgstr "функция \"close_lb\" не реализована" + +#: utils/adt/geo_ops.c:3450 +msgid "cannot create bounding box for empty polygon" +msgstr "построить окружающий прямоугольник для пустого многоугольника нельзя" + +#: 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:3526 +msgid "invalid number of points in external \"polygon\" value" +msgstr "недопустимое число точек во внешнем представлении типа \"polygon\"" + +#: utils/adt/geo_ops.c:4049 +msgid "function \"poly_distance\" not implemented" +msgstr "функция \"poly_distance\" не реализована" + +#: utils/adt/geo_ops.c:4363 +msgid "function \"path_center\" not implemented" +msgstr "функция \"path_center\" не реализована" + +#: utils/adt/geo_ops.c:4380 +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 +#, 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 +msgid "could not format \"circle\" value" +msgstr "не удалось отформатировать значение \"circle\"" + +#: utils/adt/geo_ops.c:4637 +msgid "invalid radius in external \"circle\" value" +msgstr "недопустимый радиус во внешнем представлении типа \"circle\"" + +#: utils/adt/geo_ops.c:5158 +msgid "cannot convert circle with radius zero to polygon" +msgstr "круг с нулевым радиусом нельзя преобразовать в многоугольник" + +#: utils/adt/geo_ops.c:5163 +msgid "must request at least 2 points" +msgstr "точек должно быть минимум 2" + +#: utils/adt/geo_ops.c:5207 utils/adt/geo_ops.c:5230 +msgid "cannot convert empty polygon to circle" +msgstr "пустой многоугольник нельзя преобразовать в круг" + +#: utils/adt/varchar.c:48 utils/adt/varbit.c:56 +#, c-format +msgid "length for type %s must be at least 1" +msgstr "длина значения типа %s должна быть как минимум 1" + +#: utils/adt/varchar.c:52 utils/adt/varbit.c:61 +#, c-format +msgid "length for type %s cannot exceed %d" +msgstr "длина значения типа %s не может превышать %d" + +#: 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:467 utils/adt/varchar.c:588 +#, c-format +msgid "value too long for type character varying(%d)" +msgstr "значение не умещается в тип character varying(%d)" + +#: 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 "неверное значение для целого числа: \"%s\"" + +#: utils/adt/int8.c:114 +#, c-format +msgid "value \"%s\" is out of range for type bigint" +msgstr "значение \"%s\" вне диапазона для типа bigint" + +#: utils/adt/int8.c:500 utils/adt/int8.c:529 utils/adt/int8.c:550 +#: utils/adt/int8.c:581 utils/adt/int8.c:615 utils/adt/int8.c:640 +#: utils/adt/int8.c:697 utils/adt/int8.c:714 utils/adt/int8.c: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/varbit.c:1583 utils/adt/numeric.c:2306 +msgid "bigint out of range" +msgstr "bigint вне диапазона" + +#: utils/adt/int8.c:1366 +msgid "OID out of range" +msgstr "OID вне диапазона" + +#: utils/adt/float.c:54 +msgid "value out of range: overflow" +msgstr "значение вне диапазона: переполнение" + +#: utils/adt/float.c:59 +msgid "value out of range: underflow" +msgstr "значение вне диапазона: антипереполнение" + +#: 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:242 +#, c-format +msgid "\"%s\" is out of range for type real" +msgstr "\"%s\" вне диапазона для типа real" + +#: 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 "неверный синтаксис для типа double precision: \"%s\"" + +#: 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: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:1415 utils/adt/float.c:1445 utils/adt/numeric.c:5401 +msgid "cannot take logarithm of zero" +msgstr "вычислить логарифм нуля нельзя" + +#: 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: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/float.c:2687 utils/adt/numeric.c:1171 +msgid "count must be greater than zero" +msgstr "счётчик должен быть больше нуля" + +#: 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/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\" может быть только последним шаблоном" + +#: utils/adt/formatting.c:1068 +msgid "\"9\" must be ahead of \"PR\"" +msgstr "\"9\" должна стоять до \"PR\"" + +#: utils/adt/formatting.c:1084 +msgid "\"0\" must be ahead of \"PR\"" +msgstr "\"0\" должен стоять до \"PR\"" + +#: utils/adt/formatting.c:1110 +msgid "multiple decimal points" +msgstr "многочисленные десятичные точки" + +#: utils/adt/formatting.c:1114 utils/adt/formatting.c:1197 +msgid "cannot use \"V\" and decimal point together" +msgstr "нельзя использовать \"V\" вместе с десятичной точкой" + +#: utils/adt/formatting.c:1126 +msgid "cannot use \"S\" twice" +msgstr "нельзя использовать \"S\" дважды" + +#: 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:1150 +msgid "cannot use \"S\" and \"MI\" together" +msgstr "нельзя использовать \"S\" вместе с \"MI\"" + +#: utils/adt/formatting.c:1160 +msgid "cannot use \"S\" and \"PL\" together" +msgstr "нельзя использовать \"S\" вместе с \"PL\"" + +#: utils/adt/formatting.c:1170 +msgid "cannot use \"S\" and \"SG\" together" +msgstr "нельзя использовать \"S\" вместе с \"SG\"" + +#: 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: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\" может использоваться только с шаблонами цифр и десятичной точки." + +#: utils/adt/formatting.c:1412 +#, c-format +msgid "\"%s\" is not a number" +msgstr "\"%s\" не является числом" + +#: utils/adt/formatting.c:1514 utils/adt/formatting.c:1564 +msgid "could not determine which collation to use for lower() function" +msgstr "" +"не удалось определить, какое правило сортировки использовать для функции " +"lower()" + +#: utils/adt/formatting.c:1630 utils/adt/formatting.c:1680 +msgid "could not determine which collation to use for upper() function" +msgstr "" +"не удалось определить, какое правило сортировки использовать для функции " +"upper()" + +#: utils/adt/formatting.c:1747 utils/adt/formatting.c:1809 +msgid "could not determine which collation to use for initcap() function" +msgstr "" +"не удалось определить, какое правило сортировки использовать для функции " +"initcap()" + +#: utils/adt/formatting.c:2086 +msgid "invalid combination of date conventions" +msgstr "неверное сочетание стилей дат" + +#: utils/adt/formatting.c:2087 +msgid "" +"Do not mix Gregorian and ISO week date conventions in a formatting template." +msgstr "" +"Не смешивайте Григорианский стиль дат (недель) с ISO в одном шаблоне " +"форматирования." + +#: utils/adt/formatting.c:2104 +#, c-format +msgid "conflicting values for \"%s\" field in formatting string" +msgstr "конфликтующие значения поля \"%s\" в строке форматирования" + +#: utils/adt/formatting.c:2106 +msgid "This value contradicts a previous setting for the same field type." +msgstr "Это значение противоречит предыдущему значению поля того же типа." + +#: utils/adt/formatting.c:2167 +#, c-format +msgid "source string too short for \"%s\" formatting field" +msgstr "входная строка короче, чем требует поле форматирования \"%s\"" + +#: utils/adt/formatting.c:2169 +#, c-format +msgid "Field requires %d characters, but only %d remain." +msgstr "Требуется символов: %d, а осталось только %d." + +#: utils/adt/formatting.c:2172 utils/adt/formatting.c:2186 +msgid "" +"If your source string is not fixed-width, try using the \"FM\" modifier." +msgstr "" +"Если входная строка имеет переменную длину, попробуйте использовать " +"модификатор \"FM\"." + +#: utils/adt/formatting.c:2182 utils/adt/formatting.c:2195 +#: utils/adt/formatting.c:2325 +#, c-format +msgid "invalid value \"%s\" for \"%s\"" +msgstr "неверное значение \"%s\" для \"%s\"" + +#: utils/adt/formatting.c:2184 +#, c-format +msgid "Field requires %d characters, but only %d could be parsed." +msgstr "Поле должно поглотить символов: %d, но удалось разобрать только %d." + +#: utils/adt/formatting.c:2197 +msgid "Value must be an integer." +msgstr "Значение должно быть целым числом." + +#: utils/adt/formatting.c:2202 +#, c-format +msgid "value for \"%s\" in source string is out of range" +msgstr "значение \"%s\" во входной строке вне диапазона" + +#: utils/adt/formatting.c:2204 +#, c-format +msgid "Value must be in the range %d to %d." +msgstr "Значение должно быть в интервале %d..%d." + +#: utils/adt/formatting.c:2327 +msgid "The given value did not match any of the allowed values for this field." +msgstr "" +"Данное значение не соответствует ни одному из допустимых значений для этого " +"поля." + +#: utils/adt/formatting.c:2876 +msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date" +msgstr "шаблоны формата \"TZ\"/\"tz\" не поддерживаются в to_date" + +#: utils/adt/formatting.c:2980 +msgid "invalid input string for \"Y,YYY\"" +msgstr "ошибка синтаксиса в значении для шаблона \"Y,YYY\"" + +#: utils/adt/formatting.c:3371 utils/adt/date.c:167 +#, c-format +msgid "date out of range: \"%s\"" +msgstr "дата вне диапазона: \"%s\"" + +#: utils/adt/formatting.c:3503 +#, c-format +msgid "hour \"%d\" is invalid for the 12-hour clock" +msgstr "час \"%d\" не соответствует 12-часовому формату времени" + +#: utils/adt/formatting.c:3505 +msgid "Use the 24-hour clock, or give an hour between 1 and 12." +msgstr "Используйте 24-часовой формат или передавайте часы от 1 до 12." + +#: utils/adt/formatting.c:3543 +#, c-format +msgid "inconsistent use of year %04d and \"BC\"" +msgstr "несогласованное использование в годе %04d и \"BC\"" + +#: utils/adt/formatting.c:3590 +msgid "cannot calculate day of year without year information" +msgstr "нельзя рассчитать день года без информации о годе" + +#: utils/adt/formatting.c:4452 +msgid "\"EEEE\" not supported for input" +msgstr "\"EEEE\" не поддерживается при вводе" + +#: utils/adt/formatting.c:4464 +msgid "\"RN\" not supported for input" +msgstr "\"RN\" не поддерживается при вводе" + +#: utils/adt/date.c:71 +#, c-format +msgid "TIME(%d)%s precision must not be negative" +msgstr "TIME(%d)%s: точность должна быть неотрицательной" + +#: 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:142 utils/adt/datetime.c:1186 utils/adt/datetime.c:1934 +msgid "date/time value \"current\" is no longer supported" +msgstr "значение \"current\" для даты/времени больше не поддерживается" + +#: utils/adt/date.c:359 +msgid "cannot subtract infinite dates" +msgstr "вычитать бесконечные даты нельзя" + +#: utils/adt/date.c:416 utils/adt/date.c:453 +msgid "date out of range for timestamp" +msgstr "дата вне диапазона для типа timestamp" + +#: utils/adt/date.c:986 +msgid "cannot convert reserved abstime value to date" +msgstr "преобразовать зарезервированное значение abstime в дату нельзя" + +#: 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:1793 utils/adt/date.c:1810 +#, c-format +msgid "\"time\" units \"%s\" not recognized" +msgstr "\"время\" содержит нераспознанные единицы \"%s\"" + +#: utils/adt/date.c:1931 +msgid "time zone displacement out of range" +msgstr "смещение часового пояса вне диапазона" + +#: utils/adt/date.c:2556 utils/adt/date.c:2573 +#, c-format +msgid "\"time with time zone\" units \"%s\" not recognized" +msgstr "\"время с часовым поясом\" содержит нераспознанные единицы \"%s\"" + +#: utils/adt/date.c:2671 +#, c-format +msgid "\"interval\" time zone \"%s\" not valid" +msgstr "\"интервал\" содержит неверный часовой пояс \"%s\"" + +#: 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) не соответствует типу bit(%d)" + +#: 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:213 utils/adt/varbit.c:515 +#, c-format +msgid "\"%c\" is not a valid hexadecimal digit" +msgstr "\"%c\" - не шестнадцатеричная цифра" + +#: utils/adt/varbit.c:300 utils/adt/varbit.c:603 +msgid "invalid length in external bit string" +msgstr "неверная длина во внешней строке битов" + +#: 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/varbit.c:1164 +msgid "cannot AND bit strings of different sizes" +msgstr "нельзя использовать \"И\" (AND) для битовых строк разной длины" + +#: utils/adt/varbit.c:1206 +msgid "cannot OR bit strings of different sizes" +msgstr "нельзя использовать \"ИЛИ\" (OR) для битовых строк разной длины" + +#: utils/adt/varbit.c:1253 +msgid "cannot XOR bit strings of different sizes" +msgstr "" +"нельзя использовать \"ИСКЛЮЧАЮЩЕЕ ИЛИ\" (XOR) для битовых строк разной длины" + +#: utils/adt/varbit.c:1731 utils/adt/varbit.c:1789 +#, c-format +msgid "bit index %d out of valid range (0..%d)" +msgstr "индекс бита %d вне диапазона 0..%d" + +#: 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)" + +#: utils/adt/tsvector.c:272 utils/adt/tsvector_op.c:530 tsearch/to_tsany.c:165 +#, c-format +msgid "string is too long for tsvector (%d bytes, max %d bytes)" +msgstr "строка слишком длинна для tsvector (%d Б, при максимуме %d)" + +#: utils/adt/ascii.c:75 +#, c-format +msgid "encoding conversion from %s to ASCII not supported" +msgstr "преобразование кодировки из %s в ASCII не поддерживается" + +#: utils/adt/ascii.c:126 commands/dbcommands.c:236 +#, c-format +msgid "%s is not a valid encoding name" +msgstr "%s не является верным названием кодировки" + +#: utils/adt/ascii.c:144 commands/dbcommands.c:226 +#, c-format +msgid "%d is not a valid encoding code" +msgstr "%d не является верным кодом кодировки" + +#: utils/adt/dbsize.c:65 utils/adt/dbsize.c:211 utils/adt/dbsize.c:279 +#: utils/adt/genfile.c:107 utils/adt/genfile.c:279 access/transam/xlog.c:2932 +#: access/transam/xlog.c:3097 access/transam/xlog.c:9151 +#: access/transam/xlog.c:9327 storage/file/copydir.c:86 +#: storage/file/copydir.c:125 +#, c-format +msgid "could not stat file \"%s\": %m" +msgstr "не удалось получить информацию о файле \"%s\": %m" + +#: utils/adt/dbsize.c:105 utils/adt/dbsize.c:189 +#, c-format +msgid "could not open tablespace directory \"%s\": %m" +msgstr "не удалось открыть каталог табличного пространства \"%s\": %m" + +#: utils/adt/dbsize.c:127 catalog/aclchk.c:3492 catalog/aclchk.c:4609 +#, c-format +msgid "database with OID %u does not exist" +msgstr "база данных с OID %u не существует" + +#: utils/adt/cash.c:237 +#, c-format +msgid "invalid input syntax for type money: \"%s\"" +msgstr "неверный синтаксис для типа money: \"%s\"" + +#: 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/tsrank.c:423 utils/adt/tsrank.c:749 +msgid "weight out of range" +msgstr "вес вне диапазона" + +#: utils/adt/name.c:91 utils/adt/acl.c:166 +msgid "identifier too long" +msgstr "слишком длинный идентификатор" + +#: utils/adt/name.c:92 utils/adt/acl.c:167 +#, c-format +msgid "Identifier must be less than %d characters." +msgstr "Идентификатор должен быть короче %d байт." + +#. translator: first %s is inet or cidr +#: utils/adt/network.c:107 utils/adt/datetime.c:3564 +#, c-format +msgid "invalid input syntax for type %s: \"%s\"" +msgstr "неверный синтаксис для типа %s: \"%s\"" + +#: utils/adt/network.c:118 +#, c-format +msgid "invalid cidr value: \"%s\"" +msgstr "неверное значение cidr: \"%s\"" + +#: utils/adt/network.c:119 utils/adt/network.c:249 +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 +#, c-format +msgid "could not format inet value: %m" +msgstr "не удалось отформатировать значение inet: %m" + +#. translator: %s is inet or cidr +#: utils/adt/network.c:217 +#, c-format +msgid "invalid address family in external \"%s\" value" +msgstr "неверное семейство адресов во внешнем представлении \"%s\"" + +#. translator: %s is inet or cidr +#: utils/adt/network.c:224 +#, c-format +msgid "invalid bits in external \"%s\" value" +msgstr "неверные биты во внешнем представлении \"%s\"" + +#. 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:248 +msgid "invalid external \"cidr\" value" +msgstr "неверное внешнее представление \"cidr\"" + +#: utils/adt/network.c:370 utils/adt/network.c:397 +#, c-format +msgid "invalid mask length: %d" +msgstr "неверная длина маски: %d" + +#: utils/adt/network.c:682 +#, c-format +msgid "could not format cidr value: %m" +msgstr "не удалось отформатировать значение cidr: %m" + +#: utils/adt/network.c:1255 +msgid "cannot AND inet values of different sizes" +msgstr "нельзя использовать \"И\" (AND) для значений inet разного размера" + +#: utils/adt/network.c:1287 +msgid "cannot OR inet values of different sizes" +msgstr "нельзя использовать \"ИЛИ\" (OR) для значений inet разного размера" + +#: 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/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/domains.c:80 +#, c-format +msgid "type %s is not a domain" +msgstr "тип \"%s\" не является доменом" + +#: utils/adt/domains.c:128 executor/execQual.c:3872 +#, c-format +msgid "domain %s does not allow null values" +msgstr "домен %s не допускает значения null" + +#: utils/adt/domains.c:164 executor/execQual.c:3901 +#, c-format +msgid "value for domain %s violates check constraint \"%s\"" +msgstr "значение домена %s нарушает ограничение-проверку \"%s\"" + +#: utils/adt/ruleutils.c:1580 utils/adt/acl.c:2772 commands/tablecmds.c:4524 +#: commands/tablecmds.c:4616 commands/tablecmds.c:4663 +#: commands/tablecmds.c:4759 commands/tablecmds.c:4803 +#: commands/tablecmds.c:4882 commands/tablecmds.c:4966 +#: commands/tablecmds.c:6619 commands/tablecmds.c:6828 commands/analyze.c:343 +#: commands/sequence.c:1443 commands/copy.c:3787 commands/trigger.c:592 +#: catalog/aclchk.c:1427 catalog/objectaddress.c:545 parser/analyze.c:2046 +#: parser/parse_target.c:895 parser/parse_relation.c:2050 +#: parser/parse_relation.c:2107 parser/parse_type.c:117 +#, c-format +msgid "column \"%s\" of relation \"%s\" does not exist" +msgstr "колонка \"%s\" в таблице \"%s\" не существует" + +#: utils/adt/ruleutils.c:1696 commands/functioncmds.c:1008 +#: commands/functioncmds.c:1108 commands/functioncmds.c:1171 +#: commands/functioncmds.c:1322 +#, c-format +msgid "\"%s\" is an aggregate function" +msgstr "функция \"%s\" является агрегатной" + +#: utils/adt/ruleutils.c:2429 +#, c-format +msgid "rule \"%s\" has unsupported event type %d" +msgstr "правило \"%s\" имеет неподдерживаемый тип событий %d" + +#: utils/adt/ruleutils.c:5885 utils/adt/ruleutils.c:5940 +#: utils/adt/ruleutils.c:5977 utils/adt/regproc.c:635 utils/adt/regproc.c:1485 +msgid "too many arguments" +msgstr "слишком много аргументов" + +#: utils/adt/pseudotypes.c:94 +msgid "cannot accept a value of type any" +msgstr "значение типа any нельзя ввести" + +#: 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 +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:252 +msgid "cannot accept a value of type trigger" +msgstr "значение типа trigger нельзя ввести" + +#: utils/adt/pseudotypes.c:265 +msgid "cannot display a value of type trigger" +msgstr "значение типа trigger нельзя вывести" + +#: utils/adt/pseudotypes.c:279 +msgid "cannot accept a value of type language_handler" +msgstr "значение типа language_handler нельзя ввести" + +#: utils/adt/pseudotypes.c:292 +msgid "cannot display a value of type language_handler" +msgstr "значение типа language_handler нельзя вывести" + +#: utils/adt/pseudotypes.c:306 +msgid "cannot accept a value of type fdw_handler" +msgstr "значение типа fdw_handler нельзя ввести" + +#: utils/adt/pseudotypes.c:319 +msgid "cannot display a value of type fdw_handler" +msgstr "значение типа fdw_handler нельзя вывести" + +#: utils/adt/pseudotypes.c:333 +msgid "cannot accept a value of type internal" +msgstr "значение типа internal нельзя ввести" + +#: utils/adt/pseudotypes.c:346 +msgid "cannot display a value of type internal" +msgstr "значение типа internal нельзя вывести" + +#: utils/adt/pseudotypes.c:360 +msgid "cannot accept a value of type opaque" +msgstr "значение типа opaque нельзя ввести" + +#: utils/adt/pseudotypes.c:373 +msgid "cannot display a value of type opaque" +msgstr "значение типа opaque нельзя вывести" + +#: utils/adt/pseudotypes.c:387 +msgid "cannot accept a value of type anyelement" +msgstr "значение типа anyelement нельзя ввести" + +#: 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 нельзя вывести" + +#: 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:474 utils/adt/pseudotypes.c:498 +msgid "cannot accept a value of type pg_node_tree" +msgstr "значение типа pg_node_tree нельзя ввести" + +#: utils/adt/char.c:169 +msgid "\"char\" out of range" +msgstr "значение \"char\" вне диапазона" + +#: utils/adt/arrayfuncs.c:235 utils/adt/arrayfuncs.c:247 +msgid "missing dimension value" +msgstr "отсутствует значение размерности" + +#: utils/adt/arrayfuncs.c:257 +msgid "missing \"]\" in array dimensions" +msgstr "в размерностях массива отсутствует \"]\"" + +#: 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:277 utils/adt/arrayfuncs.c:303 +msgid "array value must start with \"{\" or dimension information" +msgstr "значение массива должно начинаться с \"{\" или указания размерности" + +#: utils/adt/arrayfuncs.c:291 +msgid "missing assignment operator" +msgstr "отсутствует оператор присваивания" + +#: utils/adt/arrayfuncs.c:308 utils/adt/arrayfuncs.c:314 +msgid "array dimensions incompatible with array literal" +msgstr "размерности массива несовместимы с литералом массива" + +#: 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\"" + +#: utils/adt/arrayfuncs.c:542 executor/execQual.c:3100 +#: executor/execQual.c:3127 +msgid "" +"multidimensional arrays must have array expressions with matching dimensions" +msgstr "" +"для многомерных массивов должны задаваться выражения с соответствующими " +"размерностями" + +#: utils/adt/arrayfuncs.c:1249 +msgid "invalid array flags" +msgstr "неверные флаги массива" + +#: utils/adt/arrayfuncs.c:1257 +msgid "wrong element type" +msgstr "неверный тип элемента" + +#: utils/adt/arrayfuncs.c:1411 utils/adt/rowtypes.c:572 libpq/pqformat.c:556 +#: libpq/pqformat.c:574 libpq/pqformat.c:595 +msgid "insufficient data left in message" +msgstr "недостаточно данных осталось в сообщении" + +#: utils/adt/arrayfuncs.c:1447 +#, c-format +msgid "improper binary format in array element %d" +msgstr "неподходящий двоичный формат в элементе массива %d" + +#: 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:4916 utils/adt/arrayfuncs.c:4948 +#: utils/adt/arrayfuncs.c:4965 +msgid "wrong number of array subscripts" +msgstr "неверное число индексов массива" + +#: 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:2372 +msgid "updates on slices of fixed-length arrays not implemented" +msgstr "изменения в срезах массивов фиксированной длины не поддерживаются" + +#: utils/adt/arrayfuncs.c:2408 utils/adt/arrayfuncs.c:2495 +msgid "source array too small" +msgstr "исходный массив слишком мал" + +#: utils/adt/arrayfuncs.c:3050 +msgid "null array element not allowed in this context" +msgstr "элемент массива null недопустим в данном контексте" + +#: utils/adt/arrayfuncs.c:3153 utils/adt/arrayfuncs.c:3361 +#: utils/adt/arrayfuncs.c:3678 +msgid "cannot compare arrays of different element types" +msgstr "нельзя сравнивать массивы с элементами разных типов" + +#: utils/adt/arrayfuncs.c:3176 utils/adt/arrayfuncs.c:3695 +#: utils/adt/rowtypes.c:1185 parser/parse_oper.c:225 +#, c-format +msgid "could not identify an equality operator for type %s" +msgstr "не удалось найти оператор равенства для типа %s" + +#: utils/adt/arrayfuncs.c:3378 utils/adt/rowtypes.c:950 +#: executor/execQual.c:4892 +#, c-format +msgid "could not identify a comparison function for type %s" +msgstr "не удалось найти функцию сравнения для типа %s" + +#: utils/adt/arrayfuncs.c:3563 +#, c-format +msgid "could not identify a hash function for type %s" +msgstr "не удалось найти функцию хэширования для типа %s" + +#: utils/adt/arrayfuncs.c:4814 utils/adt/arrayfuncs.c:4854 +msgid "dimension array or low bound array cannot be null" +msgstr "массив размерностей или массив нижних границ не может быть null" + +#: utils/adt/arrayfuncs.c:4917 utils/adt/arrayfuncs.c:4949 +msgid "Dimension array must be one dimensional." +msgstr "Массив размерностей должен быть одномерным." + +#: utils/adt/arrayfuncs.c:4922 utils/adt/arrayfuncs.c:4954 +msgid "wrong range of array subscripts" +msgstr "неправильный диапазон индексов массивов" + +#: utils/adt/arrayfuncs.c:4923 utils/adt/arrayfuncs.c:4955 +msgid "Lower bound of dimension array must be one." +msgstr "Нижняя граница массива размерностей должна быть равна 1." + +#: utils/adt/arrayfuncs.c:4928 utils/adt/arrayfuncs.c:4960 +msgid "dimension values cannot be null" +msgstr "значения размерностей не могут быть null" + +#: utils/adt/arrayfuncs.c:4966 +msgid "Low bound array has different size than dimensions array." +msgstr "Массив нижних границ и массив размерностей имеют разные размеры." + +#: 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/misc.c:80 +msgid "must be superuser to signal other server processes" +msgstr "" +"сигнализировать другим серверным процессам может только суперпользователь" + +#: utils/adt/misc.c:89 +#, c-format +msgid "PID %d is not a PostgreSQL server process" +msgstr "PID %d не относится к серверному процессу PostgreSQL" + +#: utils/adt/misc.c:102 storage/lmgr/proc.c:1079 +#, c-format +msgid "could not send signal to process %d: %m" +msgstr "отправить сигнал процессу %d не удалось: %m" + +#: utils/adt/misc.c:126 +msgid "must be superuser to signal the postmaster" +msgstr "сигнализировать процессу postmaster может только суперпользователь" + +#: utils/adt/misc.c:131 +#, c-format +msgid "failed to send signal to postmaster: %m" +msgstr "отправить сигнал процессу postmaster не удалось: %m" + +#: 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:195 +msgid "global tablespace never has databases" +msgstr "в табличном пространстве global никогда не было баз данных" + +#: utils/adt/misc.c:216 +#, c-format +msgid "%u is not a tablespace OID" +msgstr "%u - это не 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/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:117 +msgid "requested length too large" +msgstr "запрошенная длина слишком велика" + +#: 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/oracle_compat.c:988 +msgid "null character not permitted" +msgstr "символ не может быть null" + +#: utils/adt/tsvector_op.c:1173 +msgid "ts_stat query must return one tsvector column" +msgstr "запрос ts_stat должен вернуть одну колонку tsvector" + +#: utils/adt/tsvector_op.c:1353 +#, c-format +msgid "tsvector column \"%s\" does not exist" +msgstr "колонка \"%s\" типа tsvector не существует" + +#: utils/adt/tsvector_op.c:1359 +#, c-format +msgid "column \"%s\" is not of tsvector type" +msgstr "колонка \"%s\" должна иметь тип tsvector" + +#: utils/adt/tsvector_op.c:1371 +#, c-format +msgid "configuration column \"%s\" does not exist" +msgstr "колонка конфигурации \"%s\" не существует" + +#: utils/adt/tsvector_op.c:1377 +#, c-format +msgid "column \"%s\" is not of regconfig type" +msgstr "колонка \"%s\" должна иметь тип regconfig" + +#: utils/adt/tsvector_op.c:1384 +#, c-format +msgid "configuration column \"%s\" must not be null" +msgstr "значение колонки конфигурации \"%s\" не должно быть null" + +#: utils/adt/tsvector_op.c:1397 +#, c-format +msgid "text search configuration name \"%s\" must be schema-qualified" +msgstr "имя конфигурации текстового поиска \"%s\" должно указываться со схемой" + +#: utils/adt/tsvector_op.c:1417 commands/tablecmds.c:1301 +#: commands/tablecmds.c:2076 commands/copy.c:3792 commands/indexcmds.c:818 +#: parser/parse_expr.c:766 +#, c-format +msgid "column \"%s\" does not exist" +msgstr "колонка \"%s\" не существует" + +#: utils/adt/tsvector_op.c:1422 +#, c-format +msgid "column \"%s\" is not of a character type" +msgstr "колонка \"%s\" имеет не символьный тип" + +#: utils/adt/datetime.c:3537 utils/adt/datetime.c:3544 +#, c-format +msgid "date/time field value out of range: \"%s\"" +msgstr "значение поля типа date/time вне диапазона: \"%s\"" + +#: utils/adt/datetime.c:3546 +msgid "Perhaps you need a different \"datestyle\" setting." +msgstr "Возможно, вам нужно изменить настройку \"datestyle\"." + +#: utils/adt/datetime.c:3551 +#, c-format +msgid "interval field value out of range: \"%s\"" +msgstr "значение поля interval вне диапазона: \"%s\"" + +#: utils/adt/datetime.c:3557 +#, c-format +msgid "time zone displacement out of range: \"%s\"" +msgstr "смещение часового пояса вне диапазона: \"%s\"" + +#: 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/genfile.c:122 commands/copy.c:2193 +#, c-format +msgid "could not open file \"%s\" for reading: %m" +msgstr "не удалось открыть файл \"%s\" для чтения: %m" + +#: utils/adt/genfile.c:129 +#, c-format +msgid "could not seek in file \"%s\": %m" +msgstr "не удалось переместиться в файле \"%s\": %m" + +#: utils/adt/genfile.c:138 access/transam/xlog.c:2543 +#: access/transam/xlog.c:4494 access/transam/xlog.c:9339 +#: access/transam/xlog.c:9352 access/transam/xlog.c:9886 +#: access/transam/xlog.c:9921 storage/file/copydir.c:186 +#, c-format +msgid "could not read 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 +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 "запрошенная длина не может быть отрицательной" + +#: utils/adt/genfile.c:272 +msgid "must be superuser to get file information" +msgstr "получать информацию о файлах может только суперпользователь" + +#: utils/adt/genfile.c:336 +msgid "must be superuser to get directory listings" +msgstr "читать содержимое каталогов может только суперпользователь" + +#: utils/adt/tsquery_rewrite.c:296 +msgid "ts_rewrite query must return two tsquery columns" +msgstr "запрос ts_rewrite должен вернуть две колонки типа tsquery" + +#: utils/adt/tsquery_cleanup.c:285 +msgid "" +"text-search query contains only stop words or doesn't contain lexemes, " +"ignored" +msgstr "" +"запрос поиска текста игнорируется, так как содержит только стоп-слова или не " +"содержит лексем" + +#: utils/adt/uuid.c:128 +#, c-format +msgid "invalid input syntax for uuid: \"%s\"" +msgstr "неверный синтаксис для uuid: \"%s\"" + +#: utils/adt/rowtypes.c:99 utils/adt/rowtypes.c:488 +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 +#, c-format +msgid "malformed record literal: \"%s\"" +msgstr "ошибка в литерале записи: \"%s\"" + +#: utils/adt/rowtypes.c:153 +msgid "Missing left parenthesis." +msgstr "Отсутствует левая скобка." + +#: utils/adt/rowtypes.c:181 +msgid "Too few columns." +msgstr "Слишком мало колонок." + +#: utils/adt/rowtypes.c:205 utils/adt/rowtypes.c:213 +msgid "Unexpected end of input." +msgstr "Неожиданный конец ввода." + +#: utils/adt/rowtypes.c:264 +msgid "Too many columns." +msgstr "Слишком много колонок." + +#: utils/adt/rowtypes.c:272 +msgid "Junk after right parenthesis." +msgstr "Мусор после правой скобки." + +#: utils/adt/rowtypes.c:537 +#, c-format +msgid "wrong number of columns: %d, expected %d" +msgstr "неверное число колонок: %d, ожидалось: %d" + +#: utils/adt/rowtypes.c:564 +#, c-format +msgid "wrong data type: %u, expected %u" +msgstr "неверный тип данных: %u, ожидался %u" + +#: utils/adt/rowtypes.c:625 +#, c-format +msgid "improper binary format in record column %d" +msgstr "неподходящий двоичный формат в колонке записи %d" + +#: utils/adt/rowtypes.c:925 utils/adt/rowtypes.c:1160 +#, c-format +msgid "cannot compare dissimilar column types %s and %s at record column %d" +msgstr "не удалось сравнить различные типы колонок %s и %s, колонка записи %d" + +#: utils/adt/rowtypes.c:1011 utils/adt/rowtypes.c:1231 +msgid "cannot compare record types with different numbers of columns" +msgstr "сравнивать типы записей с разным числом колонок нельзя" + +#: utils/adt/nabstime.c:160 +#, c-format +msgid "invalid time zone name: \"%s\"" +msgstr "неверное название часового пояса: \"%s\"" + +#: utils/adt/nabstime.c:506 utils/adt/nabstime.c:579 +msgid "cannot convert abstime \"invalid\" to timestamp" +msgstr "преобразовать значение \"invalid\" типа abstime в timestamp нельзя" + +#: utils/adt/nabstime.c:806 +msgid "invalid status in external \"tinterval\" value" +msgstr "неверное состояние во внешнем представлении \"tinterval\"" + +#: utils/adt/nabstime.c:880 +msgid "cannot convert reltime \"invalid\" to interval" +msgstr "преобразовать значение \"invalid\" типа reltime в interval нельзя" + +#: utils/adt/nabstime.c:1575 +#, c-format +msgid "invalid input syntax for type tinterval: \"%s\"" +msgstr "неверный синтаксис для типа tinterval: \"%s\"" + +#: utils/adt/numutils.c:75 +#, c-format +msgid "value \"%s\" is out of range for type integer" +msgstr "значение \"%s\" вне диапазона для типа integer" + +#: utils/adt/numutils.c:81 +#, c-format +msgid "value \"%s\" is out of range for type smallint" +msgstr "значение \"%s\" вне диапазона для типа smallint" + +#: utils/adt/numutils.c:87 +#, c-format +msgid "value \"%s\" is out of range for 8-bit integer" +msgstr "значение \"%s\" вне диапазона для 8-битового integer" + +#: utils/adt/pg_locale.c:953 +#, c-format +msgid "could not create locale \"%s\": %m" +msgstr "не удалось создать локаль \"%s\": %m" + +#: utils/adt/pg_locale.c:956 +#, c-format +msgid "" +"The operating system could not find any locale data for the locale name \"%s" +"\"." +msgstr "Операционная система не может найти данные локали с именем \"%s\"." + +#: utils/adt/pg_locale.c:1043 +msgid "" +"collations with different collate and ctype values are not supported on this " +"platform" +msgstr "" +"правила сортировки с разными значениями collate и ctype не поддерживаются на " +"этой платформе" + +#: utils/adt/pg_locale.c:1058 +msgid "nondefault collations are not supported on this platform" +msgstr "на этой платформе поддерживаются только стандартные правила сортировки" + +#: utils/adt/pg_locale.c:1229 +msgid "invalid multibyte character for locale" +msgstr "неверный многобайтный символ для локали" + +#: utils/adt/pg_locale.c:1230 +msgid "" +"The server's LC_CTYPE locale is probably incompatible with the database " +"encoding." +msgstr "" +"Параметр локали сервера LC_CTYPE, возможно, несовместим с кодировкой БД." + +#: utils/adt/encode.c:55 utils/adt/encode.c:91 +#, c-format +msgid "unrecognized encoding: \"%s\"" +msgstr "нераспознанная кодировка: \"%s\"" + +#: utils/adt/encode.c:150 +#, c-format +msgid "invalid hexadecimal digit: \"%c\"" +msgstr "неверная шестнадцатеричная цифра: \"%c\"" + +#: utils/adt/encode.c:178 +msgid "invalid hexadecimal data: odd number of digits" +msgstr "неверные шестнадцатеричные данные: нечётное число цифр" + +#: utils/adt/encode.c:295 +msgid "unexpected \"=\"" +msgstr "неожиданный знак \"=\"" + +#: utils/adt/encode.c:307 +msgid "invalid symbol" +msgstr "неверный символ" + +#: utils/adt/encode.c:327 +msgid "invalid end sequence" +msgstr "неверная конечная последовательность" + +#: utils/adt/oid.c:43 utils/adt/oid.c:57 utils/adt/oid.c:63 utils/adt/oid.c:84 +#, c-format +msgid "invalid input syntax for type oid: \"%s\"" +msgstr "неверный синтаксис для типа oid: \"%s\"" + +#: utils/adt/oid.c:69 utils/adt/oid.c:107 +#, c-format +msgid "value \"%s\" is out of range for type oid" +msgstr "значение \"%s\" вне диапазона для типа oid" + +#: utils/adt/oid.c:287 +msgid "invalid oidvector data" +msgstr "неверные данные oidvector" + +#: utils/adt/acl.c:253 +#, c-format +msgid "unrecognized key word: \"%s\"" +msgstr "нераспознанное ключевое слово: \"%s\"" + +#: utils/adt/acl.c:254 +msgid "ACL key word must be \"group\" or \"user\"." +msgstr "Ключевым словом ACL должно быть \"group\" или \"user\"." + +#: utils/adt/acl.c:259 +msgid "missing name" +msgstr "отсутствует имя" + +#: utils/adt/acl.c:260 +msgid "A name must follow the \"group\" or \"user\" key word." +msgstr "За ключевыми словами \"group\" или \"user\" должно следовать имя." + +#: utils/adt/acl.c:266 +msgid "missing \"=\" sign" +msgstr "отсутствует знак \"=\"" + +#: utils/adt/acl.c:319 +#, c-format +msgid "invalid mode character: must be one of \"%s\"" +msgstr "неверный символ режима: должен быть один из \"%s\"" + +#: utils/adt/acl.c:341 +msgid "a name must follow the \"/\" sign" +msgstr "за знаком \"/\" должно следовать имя" + +#: 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 должны быть одномерными" + +#: utils/adt/acl.c:548 +msgid "ACL arrays must not contain null values" +msgstr "Массивы ACL не должны содержать значения null" + +#: utils/adt/acl.c:572 +msgid "extra garbage at the end of the ACL specification" +msgstr "лишний мусор в конце спецификации ACL" + +#: utils/adt/acl.c:1129 +msgid "grant options cannot be granted back to your own grantor" +msgstr "привилегию назначения прав нельзя вернуть тому, кто назначил её вам" + +#: utils/adt/acl.c:1190 +msgid "dependent privileges exist" +msgstr "существуют зависимые права" + +#: utils/adt/acl.c:1191 +msgid "Use CASCADE to revoke them too." +msgstr "Используйте CASCADE, чтобы отозвать и их." + +#: utils/adt/acl.c:1470 +msgid "aclinsert is no longer supported" +msgstr "aclinsert больше не поддерживается" + +#: utils/adt/acl.c:1480 +msgid "aclremove is no longer supported" +msgstr "aclremove больше не поддерживается " + +#: utils/adt/acl.c:1566 utils/adt/acl.c:1620 +#, c-format +msgid "unrecognized privilege type: \"%s\"" +msgstr "нераспознанный тип прав: \"%s\"" + +#: 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 +#: commands/tablecmds.c:209 commands/tablecmds.c:2175 +#: commands/tablecmds.c:2422 commands/tablecmds.c:9032 +#: commands/sequence.c:1032 catalog/aclchk.c:1692 catalog/objectaddress.c:398 +#, c-format +msgid "\"%s\" is not a sequence" +msgstr "\"%s\" - это не последовательность" + +#: 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\" не существует" + +#: utils/adt/acl.c:4608 +#, c-format +msgid "must be member of role \"%s\"" +msgstr "нужно быть членом роли \"%s\"" + +#: utils/adt/enum.c:49 utils/adt/enum.c:59 utils/adt/enum.c:118 +#: utils/adt/enum.c:128 +#, c-format +msgid "invalid input value for enum %s: \"%s\"" +msgstr "неверное значение для перечисления %s: \"%s\"" + +#: utils/adt/enum.c:86 utils/adt/enum.c:153 utils/adt/enum.c:203 +#, c-format +msgid "invalid internal value for enum: %u" +msgstr "неверное внутреннее значение для перечисления: %u" + +#: utils/adt/enum.c:362 utils/adt/enum.c:391 utils/adt/enum.c:431 +#: utils/adt/enum.c:451 +msgid "could not determine actual enum type" +msgstr "не удалось определить фактический тип перечисления" + +#: utils/adt/enum.c:370 utils/adt/enum.c:399 +#, c-format +msgid "enum %s contains no values" +msgstr "перечисление %s не содержит значений" + +#: 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:2888 +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:3535 utils/adt/ri_triggers.c:3567 +#, c-format +msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\"" +msgstr "" +"INSERT или UPDATE в таблице \"%s\" нарушает ограничение внешнего ключа \"%s" +"\" " + +#: utils/adt/ri_triggers.c:412 utils/adt/ri_triggers.c:2844 +msgid "MATCH FULL does not allow mixing of null and nonnull key values." +msgstr "MATCH FULL не позволяет смешивать в значении ключа null и не null." + +#: utils/adt/ri_triggers.c:3080 commands/constraint.c:59 +#, c-format +msgid "function \"%s\" was not called by trigger manager" +msgstr "функция \"%s\" была вызвана не менеджером триггеров" + +#: utils/adt/ri_triggers.c:3089 commands/constraint.c:66 +#, c-format +msgid "function \"%s\" must be fired AFTER ROW" +msgstr "функция \"%s\" должна запускаться в триггере AFTER для строк" + +#: utils/adt/ri_triggers.c:3097 +#, c-format +msgid "function \"%s\" must be fired for INSERT" +msgstr "функция \"%s\" должна запускаться для INSERT" + +#: utils/adt/ri_triggers.c:3103 +#, c-format +msgid "function \"%s\" must be fired for UPDATE" +msgstr "функция \"%s\" должна запускаться для UPDATE" + +#: utils/adt/ri_triggers.c:3110 commands/constraint.c:80 +#, c-format +msgid "function \"%s\" must be fired for INSERT or UPDATE" +msgstr "функция \"%s\" должна запускаться для INSERT или UPDATE" + +#: utils/adt/ri_triggers.c:3117 +#, c-format +msgid "function \"%s\" must be fired for DELETE" +msgstr "функция \"%s\" должна запускаться для DELETE" + +#: utils/adt/ri_triggers.c:3146 +#, c-format +msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\"" +msgstr "для триггера \"%s\" таблицы \"%s\" нет записи pg_constraint" + +#: utils/adt/ri_triggers.c:3148 +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:3502 +#, 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:3506 +msgid "This is most likely due to a rule having rewritten the query." +msgstr "Скорее всего это вызвано правилом, переписавшим запрос." + +#: utils/adt/ri_triggers.c:3537 +#, c-format +msgid "No rows were found in \"%s\"." +msgstr "Таблица \"%s\" не содержит строк." + +#: utils/adt/ri_triggers.c:3569 +#, c-format +msgid "Key (%s)=(%s) is not present in table \"%s\"." +msgstr "Ключ (%s)=(%s) отсутствует в таблице \"%s\"." + +#: utils/adt/ri_triggers.c:3575 +#, c-format +msgid "" +"update or delete on table \"%s\" violates foreign key constraint \"%s\" on " +"table \"%s\"" +msgstr "" +"UPDATE или DELETE в таблице \"%s\" нарушает ограничение внешнего ключа \"%s" +"\" таблицы \"%s\"" + +#: utils/adt/ri_triggers.c:3578 +#, c-format +msgid "Key (%s)=(%s) is still referenced from table \"%s\"." +msgstr "На ключ (%s)=(%s) всё ещё есть ссылки в таблице \"%s\"." + +#: 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:653 +msgid "invalid length in external \"numeric\" value" +msgstr "неверная длина во внешнем значении \"numeric\"" + +#: utils/adt/numeric.c:664 +msgid "invalid sign in external \"numeric\" value" +msgstr "неверный знак во внешнем значении \"numeric\"" + +#: utils/adt/numeric.c:674 +msgid "invalid digit in external \"numeric\" value" +msgstr "неверная цифра во внешнем значении \"numeric\"" + +#: 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" + +#: utils/adt/numeric.c:819 +#, c-format +msgid "NUMERIC scale %d must be between 0 and precision %d" +msgstr "масштаб NUMERIC %d должен быть между 0 и точностью (%d)" + +#: utils/adt/numeric.c:837 +msgid "invalid NUMERIC type modifier" +msgstr "неверный модификатор типа NUMERIC" + +#: utils/adt/numeric.c:1881 utils/adt/numeric.c:3754 +msgid "value overflows numeric format" +msgstr "значение переполняет формат numeric" + +#: utils/adt/numeric.c:2229 +msgid "cannot convert NaN to integer" +msgstr "нельзя преобразовать NaN в integer" + +#: utils/adt/numeric.c:2297 +msgid "cannot convert NaN to bigint" +msgstr "нельзя преобразовать NaN в bigint" + +#: utils/adt/numeric.c:2345 +msgid "cannot convert NaN to smallint" +msgstr "нельзя преобразовать NaN в smallint" + +#: utils/adt/numeric.c:3824 +msgid "numeric field overflow" +msgstr "переполнение поля numeric" + +#: 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:5273 +msgid "argument for function \"exp\" too big" +msgstr "аргумент функции \"exp\" слишком велик" + +#: utils/adt/tsvector_parser.c:137 +#, c-format +msgid "syntax error in tsvector: \"%s\"" +msgstr "ошибка синтаксиса в tsvector: \"%s\"" + +#: 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/regproc.c:123 utils/adt/regproc.c:143 +#, c-format +msgid "more than one function named \"%s\"" +msgstr "имя \"%s\" имеют несколько функций" + +#: 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 +#, c-format +msgid "operator does not exist: %s" +msgstr "оператор не существует: %s" + +#: utils/adt/regproc.c:468 utils/adt/regproc.c:488 +#, c-format +msgid "more than one operator named %s" +msgstr "имя %s имеют несколько операторов" + +#: utils/adt/regproc.c:630 gram.y:6218 +msgid "missing argument" +msgstr "отсутствует аргумент" + +#: utils/adt/regproc.c:631 gram.y:6219 +msgid "Use NONE to denote the missing argument of a unary operator." +msgstr "" +"Чтобы обозначить отсутствующий аргумент унарного оператора, укажите NONE." + +#: utils/adt/regproc.c:636 +msgid "Provide two argument types for operator." +msgstr "Предоставьте для оператора два типа аргументов." + +#: utils/adt/regproc.c:810 commands/lockcmds.c:127 catalog/namespace.c:290 +#: parser/parse_relation.c:855 parser/parse_relation.c:863 +#, c-format +msgid "relation \"%s\" does not exist" +msgstr "отношение \"%s\" не существует" + +#: utils/adt/regproc.c:973 commands/tablecmds.c:225 +#: commands/functioncmds.c:128 commands/typecmds.c:660 +#: commands/typecmds.c:2661 parser/parse_func.c:1502 parser/parse_type.c:196 +#, c-format +msgid "type \"%s\" does not exist" +msgstr "тип \"%s\" не существует" + +#: utils/adt/regproc.c:1383 +msgid "expected a left parenthesis" +msgstr "ожидалась левая скобка" + +#: utils/adt/regproc.c:1399 +msgid "expected a right parenthesis" +msgstr "ожидалась правая скобка" + +#: utils/adt/regproc.c:1418 +msgid "expected a type name" +msgstr "ожидалось имя типа" + +#: utils/adt/regproc.c:1450 +msgid "improper type name" +msgstr "ошибочное имя типа" + +#: snowball/dict_snowball.c:183 +#, c-format +msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\"" +msgstr "стеммер Snowball для языка \"%s\" и кодировки \"%s\" не найден" + +#: snowball/dict_snowball.c:206 tsearch/dict_ispell.c:75 +#: tsearch/dict_simple.c:50 +msgid "multiple StopWords parameters" +msgstr "повторяющийся параметр StopWords" + +#: snowball/dict_snowball.c:215 +msgid "multiple Language parameters" +msgstr "повторяющийся параметр Language" + +#: snowball/dict_snowball.c:222 +#, c-format +msgid "unrecognized Snowball parameter: \"%s\"" +msgstr "нераспознанный параметр Snowball: \"%s\"" + +#: snowball/dict_snowball.c:230 +msgid "missing Language parameter" +msgstr "отсутствует параметр Language" + +#: bootstrap/bootstrap.c:302 +#, c-format +msgid "%s: invalid command-line arguments\n" +msgstr "%s: неверные аргументы командной строки\n" + +#: lib/stringinfo.c:267 +#, c-format +msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes." +msgstr "" +"Не удалось увеличить строковый буфер (в буфере байт: %d, требовалось ещё %d)." + +#: tsearch/ts_locale.c:177 +#, c-format +msgid "line %d of configuration file \"%s\": \"%s\"" +msgstr "строка %d файла конфигурации \"%s\": \"%s\"" + +#: tsearch/ts_locale.c:182 libpq/hba.c:781 libpq/hba.c:797 libpq/hba.c:833 +#: libpq/hba.c:855 libpq/hba.c:864 libpq/hba.c:887 libpq/hba.c:899 +#: libpq/hba.c:912 libpq/hba.c:927 libpq/hba.c:982 libpq/hba.c:1002 +#: libpq/hba.c:1016 libpq/hba.c:1033 libpq/hba.c:1046 libpq/hba.c:1062 +#: libpq/hba.c:1077 libpq/hba.c:1119 libpq/hba.c:1151 libpq/hba.c:1162 +#: libpq/hba.c:1182 libpq/hba.c:1193 libpq/hba.c:1204 libpq/hba.c:1221 +#: libpq/hba.c:1242 libpq/hba.c:1272 libpq/hba.c:1284 libpq/hba.c:1297 +#: libpq/hba.c:1331 libpq/hba.c:1405 libpq/hba.c:1423 libpq/hba.c:1444 +#: libpq/hba.c:1475 libpq/hba.c:1485 +#, 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/dict_thesaurus.c:180 +#, c-format +msgid "could not open thesaurus file \"%s\": %m" +msgstr "не удалось открыть файл тезауруса \"%s\": %m" + +#: tsearch/dict_thesaurus.c:213 +msgid "unexpected delimiter" +msgstr "неожиданный разделитель" + +#: tsearch/dict_thesaurus.c:263 tsearch/dict_thesaurus.c:279 +msgid "unexpected end of line or lexeme" +msgstr "неожиданный конец строки или лексемы" + +#: 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)" + +#: 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)" + +#: tsearch/dict_thesaurus.c:615 tsearch/dict_ispell.c:53 +msgid "multiple DictFile parameters" +msgstr "повторяющийся параметр DictFile" + +#: tsearch/dict_thesaurus.c:624 +msgid "multiple Dictionary parameters" +msgstr "повторяющийся параметр Dictionary" + +#: tsearch/dict_thesaurus.c:631 +#, c-format +msgid "unrecognized Thesaurus parameter: \"%s\"" +msgstr "нераспознанный параметр тезауруса: \"%s\"" + +#: tsearch/dict_thesaurus.c:639 tsearch/dict_ispell.c:103 +msgid "missing DictFile parameter" +msgstr "отсутствует параметр DictFile" + +#: tsearch/dict_thesaurus.c:643 +msgid "missing Dictionary parameter" +msgstr "отсутствует параметр Dictionary" + +#: 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 символов игнорируются." + +#: tsearch/wparser.c:314 +msgid "text search parser does not support headline creation" +msgstr "анализатор текстового поиска не поддерживает создание выдержек" + +#: 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" + +#: tsearch/spell.c:276 +#, c-format +msgid "could not open dictionary file \"%s\": %m" +msgstr "не удалось открыть файл словаря \"%s\": %m" + +#: tsearch/spell.c:518 tsearch/spell.c:535 tsearch/spell.c:552 +#: tsearch/spell.c:569 tsearch/spell.c:591 gram.y:12508 gram.y:12525 +msgid "syntax error" +msgstr "ошибка синтаксиса" + +#: tsearch/spell.c:596 tsearch/spell.c:842 tsearch/spell.c:862 +msgid "multibyte flag character is not allowed" +msgstr "многобайтные символы флагов не допускаются" + +#: tsearch/spell.c:629 tsearch/spell.c:687 tsearch/spell.c:780 +#, c-format +msgid "could not open affix file \"%s\": %m" +msgstr "не удалось открыть файл аффиксов \"%s\": %m" + +#: tsearch/spell.c:675 +msgid "Ispell dictionary supports only default flag value" +msgstr "словарь Ispell поддерживает для FLAG только значение default" + +#: tsearch/spell.c:873 +msgid "wrong affix file format for flag" +msgstr "неправильный формат файла аффиксов при разборе флага" + +#: tsearch/dict_ispell.c:64 +msgid "multiple AffFile parameters" +msgstr "повторяющийся параметр AffFile" + +#: tsearch/dict_ispell.c:83 +#, c-format +msgid "unrecognized Ispell parameter: \"%s\"" +msgstr "нераспознанный параметр ispell: \"%s\"" + +#: tsearch/dict_ispell.c:97 +msgid "missing AffFile parameter" +msgstr "отсутствует параметр AffFile" + +#: tsearch/ts_utils.c:53 +#, c-format +msgid "invalid text search configuration file name \"%s\"" +msgstr "неверное имя файла конфигурации текстового поиска \"%s\"" + +#: tsearch/ts_utils.c:91 +#, c-format +msgid "could not open stop-word file \"%s\": %m" +msgstr "не удалось открыть файл стоп-слов \"%s\": %m" + +#: tsearch/dict_synonym.c:119 +#, c-format +msgid "unrecognized synonym parameter: \"%s\"" +msgstr "нераспознанный параметр функции синонимов: \"%s\"" + +#: tsearch/dict_synonym.c:126 +msgid "missing Synonyms parameter" +msgstr "отсутствует параметр Synonyms" + +#: tsearch/dict_synonym.c:133 +#, c-format +msgid "could not open synonym file \"%s\": %m" +msgstr "не удалось открыть файл синонимов \"%s\": %m" + +#: tsearch/dict_simple.c:59 +msgid "multiple Accept parameters" +msgstr "повторяющийся параметр Accept" + +#: tsearch/dict_simple.c:67 +#, c-format +msgid "unrecognized simple dictionary parameter: \"%s\"" +msgstr "нераспознанный параметр словаря simple: \"%s\"" + +#: tcop/pquery.c:661 +#, c-format +msgid "bind message has %d result formats but query has %d columns" +msgstr "" +"число форматов результатов в сообщении Вind (%d) не равно числу колонок в " +"запросе (%d)" + +#: tcop/pquery.c:739 tcop/pquery.c:1403 commands/portalcmds.c:341 +#, c-format +msgid "portal \"%s\" cannot be run" +msgstr "портал \"%s\" не может быть запущен" + +#: tcop/pquery.c:971 +msgid "cursor can only scan forward" +msgstr "курсор может сканировать только вперёд" + +#: tcop/pquery.c:972 +msgid "Declare it with SCROLL option to enable backward scan." +msgstr "Добавьте в его объявление SCROLL, чтобы он мог перемещаться назад." + +#: 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:180 tcop/fastpath.c:554 tcop/postgres.c:1666 +#: access/common/printtup.c:278 +#, c-format +msgid "unsupported format code: %d" +msgstr "неподдерживаемый код формата: %d" + +#: tcop/fastpath.c:221 catalog/aclchk.c:3546 catalog/aclchk.c:4296 +#, c-format +msgid "function with OID %u does not exist" +msgstr "функция с OID %u не существует" + +#: tcop/fastpath.c:290 tcop/postgres.c:351 tcop/postgres.c:374 +#: commands/copy.c:542 commands/copy.c:561 commands/copy.c:565 +msgid "unexpected EOF on client connection" +msgstr "неожиданный обрыв соединения с клиентом" + +#: tcop/fastpath.c:303 tcop/postgres.c:919 tcop/postgres.c:1229 +#: tcop/postgres.c:1510 tcop/postgres.c:1952 tcop/postgres.c:2320 +#: tcop/postgres.c:2401 +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 "вызов функции fastpath: \"%s\" (OID %u)" + +#: tcop/fastpath.c:411 tcop/postgres.c:1089 tcop/postgres.c:1376 +#: tcop/postgres.c:1793 tcop/postgres.c:2010 +#, 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 мс, вызов функции fastpath: \"%s\" (OID %u)" + +#: 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:461 +#, c-format +msgid "function call message contains %d argument formats but %d arguments" +msgstr "" +"сообщение вызова функции содержит неверное число форматов (%d, а аргументов " +"%d)" + +#: tcop/fastpath.c:548 tcop/fastpath.c:631 +#, c-format +msgid "incorrect binary data format in function argument %d" +msgstr "неправильный формат двоичных данных в аргументе функции %d" + +#: tcop/postgres.c:401 tcop/postgres.c:413 tcop/postgres.c:424 +#: tcop/postgres.c:436 tcop/postgres.c:4195 +#, c-format +msgid "invalid frontend message type %d" +msgstr "неправильный тип клиентского сообщения %d" + +#: tcop/postgres.c:860 +#, c-format +msgid "statement: %s" +msgstr "оператор: %s" + +#: tcop/postgres.c:1094 +#, c-format +msgid "duration: %s ms statement: %s" +msgstr "продолжительность: %s мс, оператор: %s" + +#: tcop/postgres.c:1144 +#, c-format +msgid "parse %s: %s" +msgstr "разбор %s: %s" + +#: tcop/postgres.c:1202 +msgid "cannot insert multiple commands into a prepared statement" +msgstr "в подготовленный оператор нельзя вставить несколько команд" + +#: tcop/postgres.c:1269 commands/prepare.c:122 parser/parse_param.c:303 +#, c-format +msgid "could not determine data type of parameter $%d" +msgstr "не удалось определить тип данных параметра $%d" + +#: tcop/postgres.c:1381 +#, c-format +msgid "duration: %s ms parse %s: %s" +msgstr "продолжительность: %s мс, разбор %s: %s" + +#: tcop/postgres.c:1427 +#, c-format +msgid "bind %s to %s" +msgstr "привязка %s к %s" + +# [SM]: TO REVIEW +#: tcop/postgres.c:1446 tcop/postgres.c:2300 +msgid "unnamed prepared statement does not exist" +msgstr "безымянный подготовленный оператор не существует" + +#: tcop/postgres.c:1488 +#, c-format +msgid "bind message has %d parameter formats but %d parameters" +msgstr "" +"неверное число форматов параметров в сообщении Bind (%d, а параметров %d)" + +#: tcop/postgres.c:1494 +#, c-format +msgid "" +"bind message supplies %d parameters, but prepared statement \"%s\" requires " +"%d" +msgstr "" +"в сообщении Bind передано неверное число параметров (%d, а подготовленный " +"оператор \"%s\" требует %d)" + +#: tcop/postgres.c:1659 +#, c-format +msgid "incorrect binary data format in bind parameter %d" +msgstr "неверный формат двоичных данных в параметре Вind %d" + +#: tcop/postgres.c:1798 +#, c-format +msgid "duration: %s ms bind %s%s%s: %s" +msgstr "продолжительность: %s мс, сообщение Bind %s%s%s: %s" + +#: tcop/postgres.c:1846 tcop/postgres.c:2387 +#, c-format +msgid "portal \"%s\" does not exist" +msgstr "портал \"%s\" не существует" + +#: tcop/postgres.c:1933 tcop/postgres.c:2018 +msgid "execute fetch from" +msgstr "выборка из" + +#: tcop/postgres.c:1934 tcop/postgres.c:2019 +msgid "execute" +msgstr "выполнение" + +#: tcop/postgres.c:1931 +#, c-format +msgid "%s %s%s%s: %s" +msgstr "%s %s%s%s: %s" + +#: tcop/postgres.c:2015 +#, c-format +msgid "duration: %s ms %s %s%s%s: %s" +msgstr "продолжительность: %s мс %s %s%s%s: %s" + +#: tcop/postgres.c:2141 +#, c-format +msgid "prepare: %s" +msgstr "подготовка: %s" + +#: tcop/postgres.c:2204 +#, c-format +msgid "parameters: %s" +msgstr "параметры: %s" + +#: tcop/postgres.c:2223 +msgid "abort reason: recovery conflict" +msgstr "причина прерывания: конфликт при восстановлении" + +#: tcop/postgres.c:2239 +msgid "User was holding shared buffer pin for too long." +msgstr "Пользователь удерживал фиксатор разделяемого буфера слишком долго." + +#: tcop/postgres.c:2242 +msgid "User was holding a relation lock for too long." +msgstr "Пользователь удерживал блокировку таблицы слишком долго." + +#: tcop/postgres.c:2245 +msgid "User was or might have been using tablespace that must be dropped." +msgstr "" +"Пользователь использовал табличное пространство, которое должно быть удалено." + +#: tcop/postgres.c:2248 +msgid "User query might have needed to see row versions that must be removed." +msgstr "" +"Запросу пользователя нужно было видеть версии строк, которые должны быть " +"удалены." + +#: tcop/postgres.c:2251 storage/ipc/standby.c:498 +msgid "User transaction caused buffer deadlock with recovery." +msgstr "" +"Транзакция пользователя привела к взаимоблокировке с процессом " +"восстановления." + +#: tcop/postgres.c:2254 +msgid "User was connected to a database that must be dropped." +msgstr "Пользователь был подключен к базе данных, которая должна быть удалена." + +#: tcop/postgres.c:2588 +msgid "terminating connection because of crash of another server process" +msgstr "закрытие подключения из-за краха другого серверного процесса" + +#: tcop/postgres.c:2589 +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 "" +"Управляющий процесс отдал команду этому серверному процессу откатить текущую " +"транзакцию и завершиться, так как другой серверный процесс завершился " +"аварийно и возможно разрушил разделяемую память." + +#: tcop/postgres.c:2593 tcop/postgres.c:2943 +msgid "" +"In a moment you should be able to reconnect to the database and repeat your " +"command." +msgstr "" +"Вы сможете переподключиться к базе данных и повторить вашу команду сию " +"минуту." + +#: tcop/postgres.c:2705 +msgid "floating-point exception" +msgstr "исключение в операции с плавающей точкой" + +#: tcop/postgres.c:2706 +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:2874 +msgid "terminating autovacuum process due to administrator command" +msgstr "прекращение процесса автоочистки по команде администратора" + +#: tcop/postgres.c:2880 tcop/postgres.c:2890 tcop/postgres.c:2941 +msgid "terminating connection due to conflict with recovery" +msgstr "закрытие подключения из-за конфликта с процессом восстановления" + +#: tcop/postgres.c:2896 +msgid "terminating connection due to administrator command" +msgstr "закрытие подключения по команде администратора" + +#: tcop/postgres.c:2911 +msgid "canceling authentication due to timeout" +msgstr "отмена проверки подлинности из-за таймаута" + +#: tcop/postgres.c:2920 +msgid "canceling statement due to statement timeout" +msgstr "выполнение оператора отменено из-за таймаута" + +#: tcop/postgres.c:2929 +msgid "canceling autovacuum task" +msgstr "отмена задачи автоочистки" + +#: tcop/postgres.c:2948 storage/ipc/standby.c:497 +msgid "canceling statement due to conflict with recovery" +msgstr "" +"выполнение оператора отменено из-за конфликта с процессом восстановления" + +#: tcop/postgres.c:2964 +msgid "canceling statement due to user request" +msgstr "выполнение оператора отменено по запросу пользователя" + +#: tcop/postgres.c:3092 tcop/postgres.c:3114 +msgid "stack depth limit exceeded" +msgstr "превышен предел глубины стека" + +#: tcop/postgres.c:3093 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 "" +"Увеличьте параметр конфигурации \"max_stack_depth\" (текущее значение %d " +"КБ), предварительно убедившись, что ОС предоставляет достаточный размер " +"стека." + +#: tcop/postgres.c:3131 +#, c-format +msgid "\"max_stack_depth\" must not exceed %ldkB." +msgstr "Значение \"max_stack_depth\" не должно превышать %ld КБ." + +#: tcop/postgres.c:3133 +msgid "" +"Increase the platform's stack depth limit via \"ulimit -s\" or local " +"equivalent." +msgstr "" +"Увеличьте предел глубины стека в системе с помощью команды \"ulimit -s\" или " +"эквивалента в вашей ОС." + +#: tcop/postgres.c:3474 +msgid "invalid command-line arguments for server process" +msgstr "неверные аргументы командной строки для серверного процесса" + +#: tcop/postgres.c:3475 tcop/postgres.c:3481 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "Для дополнительной информации попробуйте \"%s --help\"." + +#: tcop/postgres.c:3479 +#, c-format +msgid "%s: invalid command-line arguments" +msgstr "%s: неверные аргументы командной строки" + +#: tcop/postgres.c:3566 +#, c-format +msgid "%s: no database nor user name specified" +msgstr "%s: не указаны ни база данных, ни пользователь" + +#: tcop/postgres.c:4105 +#, c-format +msgid "invalid CLOSE message subtype %d" +msgstr "неверный подтип сообщения CLOSE: %d" + +#: tcop/postgres.c:4138 +#, c-format +msgid "invalid DESCRIBE message subtype %d" +msgstr "неверный подтип сообщения DESCRIBE: %d" + +#: tcop/postgres.c:4372 +#, 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/utility.c:95 commands/tablecmds.c:817 commands/tablecmds.c:1150 +#: commands/tablecmds.c:1998 commands/tablecmds.c:3740 +#: commands/tablecmds.c:5483 commands/trigger.c:192 commands/trigger.c:1105 +#: rewrite/rewriteDefine.c:263 +#, c-format +msgid "permission denied: \"%s\" is a system catalog" +msgstr "доступ запрещён: \"%s\" - это системный каталог" + +#. 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 security-restricted operation" +msgstr "в рамках операции с ограничениями по безопасности нельзя выполнить %s" + +#: tcop/utility.c:1198 +msgid "must be superuser to do CHECKPOINT" +msgstr "для выполнения CHECKPOINT нужно быть суперпользователем" + +#: access/common/tupconvert.c:107 +#, c-format +msgid "Returned type %s does not match expected type %s in column %d." +msgstr "Возвращаемый тип %s не соответствует ожидаемому типу %s в колонке %d." + +#: 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 "" +"Атрибут \"%s\" типа %s несовместим с соответствующим атрибутом типа %s." + +#: access/common/tupconvert.c:252 +#, c-format +msgid "Attribute \"%s\" of type %s does not exist in type %s." +msgstr "Атрибут \"%s\" типа %s не существует в типе %s." + +#: access/common/indextuple.c:57 +#, c-format +msgid "number of index columns (%d) exceeds limit (%d)" +msgstr "число колонок индекса (%d) превышает предел (%d)" + +#: access/common/indextuple.c:168 +#, c-format +msgid "index row requires %lu bytes, maximum size is %lu" +msgstr "строка индекса требует байт: %lu, при максимуме: %lu" + +#: access/common/reloptions.c:323 +msgid "user-defined relation parameter types limit exceeded" +msgstr "превышен предел пользовательских типов реляционных параметров" + +#: access/common/reloptions.c:622 +msgid "RESET must not include values for parameters" +msgstr "В RESET не должно передаваться значение параметров" + +#: access/common/reloptions.c:655 +#, c-format +msgid "unrecognized parameter namespace \"%s\"" +msgstr "нераспознанное пространство имён параметров \"%s\"" + +#: access/common/reloptions.c:898 +#, c-format +msgid "unrecognized parameter \"%s\"" +msgstr "нераспознанный параметр \"%s\"" + +#: access/common/reloptions.c:923 +#, c-format +msgid "parameter \"%s\" specified more than once" +msgstr "параметр \"%s\" указан неоднократно" + +#: access/common/reloptions.c:938 +#, c-format +msgid "invalid value for boolean option \"%s\": %s" +msgstr "неверное значение для логического параметра \"%s\": %s" + +#: access/common/reloptions.c:949 +#, c-format +msgid "invalid value for integer option \"%s\": %s" +msgstr "неверное значение для целочисленного параметра \"%s\": %s" + +#: access/common/reloptions.c:954 access/common/reloptions.c:972 +#, c-format +msgid "value %s out of bounds for option \"%s\"" +msgstr "значение %s вне допустимых пределов параметра \"%s\"" + +#: access/common/reloptions.c:956 +#, c-format +msgid "Valid values are between \"%d\" and \"%d\"." +msgstr "Допускаются значения только от \"%d\" до \"%d\"." + +#: access/common/reloptions.c:967 +#, c-format +msgid "invalid value for floating point option \"%s\": %s" +msgstr "неверное значение для численного параметра \"%s\": %s" + +#: access/common/reloptions.c:974 +#, c-format +msgid "Valid values are between \"%f\" and \"%f\"." +msgstr "Допускаются значения только от \"%f\" до \"%f\"." + +#: access/common/tupdesc.c:575 parser/parse_relation.c:1176 +#, c-format +msgid "column \"%s\" cannot be declared SETOF" +msgstr "колонка \"%s\" не может быть объявлена как SETOF" + +#: access/common/heaptuple.c:646 access/common/heaptuple.c:1398 +#, c-format +msgid "number of columns (%d) exceeds limit (%d)" +msgstr "число колонок (%d) превышает предел (%d)" + +#: access/hash/hashovfl.c:547 +#, c-format +msgid "out of overflow pages in hash index \"%s\"" +msgstr "в хэш-индексе \"%s\" не хватает страниц переполнения" + +#: access/hash/hashsearch.c:152 +msgid "hash indexes do not support whole-index scans" +msgstr "хэш-индексы не поддерживают сканирование всего индекса" + +#: access/hash/hashinsert.c:73 +#, c-format +msgid "index row size %lu exceeds hash maximum %lu" +msgstr "размер строки индекса %lu больше предельного размера хэша %lu" + +#: access/hash/hashinsert.c:76 +msgid "Values larger than a buffer page cannot be indexed." +msgstr "Значения, не умещающиеся в страницу буфера, нельзя проиндексировать." + +#: access/hash/hashutil.c:170 access/nbtree/nbtpage.c:433 +#: access/gist/gistutil.c:632 +#, c-format +msgid "index \"%s\" contains unexpected zero page at block %u" +msgstr "в индексе \"%s\" неожиданно оказалась нулевая страница в блоке %u" + +#: 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 +#: access/gist/gist.c:731 access/gist/gistutil.c:635 +#: access/gist/gistutil.c:646 access/gist/gistvacuum.c:274 +msgid "Please REINDEX it." +msgstr "Пожалуйста, выполните REINDEX для него." + +#: access/hash/hashutil.c:181 access/hash/hashutil.c:193 +#: access/nbtree/nbtpage.c:444 access/gist/gistutil.c:643 +#, c-format +msgid "index \"%s\" contains corrupted page at block %u" +msgstr "индекс \"%s\" содержит испорченную страницу в блоке %u" + +#: access/hash/hashutil.c:209 +#, c-format +msgid "index \"%s\" is not a hash index" +msgstr "индекс \"%s\" не является хэш-индексом" + +#: access/hash/hashutil.c:215 +#, c-format +msgid "index \"%s\" has wrong hash version" +msgstr "индекс \"%s\" имеет неправильную версию хэша" + +#: 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/heap/heapam.c:1089 access/heap/heapam.c:1117 +#: access/heap/heapam.c:1147 catalog/aclchk.c:1677 +#, c-format +msgid "\"%s\" is an index" +msgstr "\"%s\" - это индекс" + +#: access/heap/heapam.c:1094 access/heap/heapam.c:1122 +#: access/heap/heapam.c:1152 commands/tablecmds.c:2197 +#: commands/tablecmds.c:7413 commands/tablecmds.c:9082 catalog/aclchk.c:1684 +#, c-format +msgid "\"%s\" is a composite type" +msgstr "\"%s\" - это составной тип" + +#: access/heap/heapam.c:3223 access/heap/heapam.c:3254 +#: access/heap/heapam.c:3289 +#, c-format +msgid "could not obtain lock on row in relation \"%s\"" +msgstr "не удалось получить блокировку строки в таблице \"%s\"" + +#: 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:1269 +#, c-format +msgid "maximum number of committed subtransactions (%d) exceeded" +msgstr "превышен предел числа зафиксированных подтранзакций (%d)" + +#: access/transam/xact.c:2045 +msgid "cannot PREPARE a transaction that has operated on temporary tables" +msgstr "" +"выполнить PREPARE для транзакции, оперирующей с временными таблицами, нельзя" + +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2837 +#, c-format +msgid "%s cannot run inside a transaction block" +msgstr "%s не может выполняться внутри блока транзакции" + +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2847 +#, c-format +msgid "%s cannot run inside a subtransaction" +msgstr "%s не может выполняться внутри подтранзакции" + +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2857 +#, 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:2908 +#, c-format +msgid "%s can only be used in transaction blocks" +msgstr "%s может выполняться только внутри блоков транзакций" + +#: access/transam/xact.c:3090 +msgid "there is already a transaction in progress" +msgstr "транзакция уже выполняется" + +#: access/transam/xact.c:3257 access/transam/xact.c:3349 +msgid "there is no transaction in progress" +msgstr "нет незавершённой транзакции" + +#: access/transam/xact.c:3443 access/transam/xact.c:3493 +#: access/transam/xact.c:3499 access/transam/xact.c:3543 +#: access/transam/xact.c:3591 access/transam/xact.c:3597 +msgid "no such savepoint" +msgstr "нет такой точки сохранения" + +#: access/transam/xact.c:4244 +msgid "cannot have more than 2^32-1 subtransactions in a transaction" +msgstr "в одной транзакции не может быть больше 2^32-1 подтранзакций" + +#: 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 "" +"база данных не принимает команды во избежание потери данных из-за наложения " +"в базе данных с OID %u" + +#: 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" +"Возможно, вам также придётся зафиксировать или откатить старые " +"подготовленные транзакции." + +#: 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)" + +#: access/transam/varsup.c:333 +#, c-format +msgid "transaction ID wrap limit is %u, limited by database with OID %u" +msgstr "" +"предел наложения ID транзакций равен %u, источник ограничения - база данных " +"с OID %u" + +#: access/transam/twophase.c:250 +#, c-format +msgid "transaction identifier \"%s\" is too long" +msgstr "идентификатор транзакции \"%s\" слишком длинный" + +#: 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." + +#: 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\" занята" + +#: access/transam/twophase.c:429 +msgid "permission denied to finish prepared transaction" +msgstr "нет доступа для завершения подготовленной транзакции " + +#: access/transam/twophase.c:430 +msgid "Must be superuser or the user that prepared the transaction." +msgstr "" +"Это разрешено только суперпользователю и пользователю, подготовившему " +"транзакцию." + +#: 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 "" +"Чтобы завершить транзакцию, подключитесь к базе данных, где она была " +"подготовлена." + +# [SM]: TO REVIEW +#: 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 "превышен предельный размер файла состояния 2PC" + +#: access/transam/twophase.c:957 +#, c-format +msgid "could not create two-phase state file \"%s\": %m" +msgstr "не удалось создать файл состояния 2PC \"%s\": %m" + +#: access/transam/twophase.c:971 access/transam/twophase.c:988 +#: access/transam/twophase.c:1044 access/transam/twophase.c:1464 +#: access/transam/twophase.c:1471 +#, c-format +msgid "could not write two-phase state file: %m" +msgstr "не удалось записать в файл состояния 2PC: %m" + +#: access/transam/twophase.c:997 +#, c-format +msgid "could not seek in two-phase state file: %m" +msgstr "не удалось переместиться в файле состояния 2PC: %m" + +#: access/transam/twophase.c:1050 access/transam/twophase.c:1489 +#, c-format +msgid "could not close two-phase state file: %m" +msgstr "не удалось закрыть файл состояния 2PC: %m" + +#: access/transam/twophase.c:1130 access/transam/twophase.c:1569 +#, c-format +msgid "could not open two-phase state file \"%s\": %m" +msgstr "не удалось открыть файл состояния 2PC \"%s\": %m" + +#: access/transam/twophase.c:1147 +#, c-format +msgid "could not stat two-phase state file \"%s\": %m" +msgstr "не удалось получить информацию о файле состояния 2PC \"%s\": %m" + +#: access/transam/twophase.c:1179 +#, c-format +msgid "could not read two-phase state file \"%s\": %m" +msgstr "не удалось прочитать файл состояния 2PC \"%s\": %m" + +#: access/transam/twophase.c:1271 +#, c-format +msgid "two-phase state file for transaction %u is corrupt" +msgstr "в файле состояния 2PC испорчена информация о транзакции %u" + +#: access/transam/twophase.c:1426 +#, c-format +msgid "could not remove two-phase state file \"%s\": %m" +msgstr "не удалось стереть файл состояния 2PC \"%s\": %m" + +#: access/transam/twophase.c:1455 +#, c-format +msgid "could not recreate two-phase state file \"%s\": %m" +msgstr "не удалось пересоздать файл состояния 2PC \"%s\": %m" + +#: access/transam/twophase.c:1483 +#, c-format +msgid "could not fsync two-phase state file: %m" +msgstr "не удалось синхронизировать с ФС файл состояния 2PC: %m" + +#: access/transam/twophase.c:1578 +#, c-format +msgid "could not fsync two-phase state file \"%s\": %m" +msgstr "не удалось синхронизировать с ФС файл состояния 2PC \"%s\": %m" + +#: access/transam/twophase.c:1585 +#, c-format +msgid "could not close two-phase state file \"%s\": %m" +msgstr "не удалось закрыть файл состояния 2PC \"%s\": %m" + +#: access/transam/twophase.c:1650 +#, c-format +msgid "removing future two-phase state file \"%s\"" +msgstr "удаление будущего файла состояния 2PC \"%s\"" + +#: access/transam/twophase.c:1666 access/transam/twophase.c:1677 +#: access/transam/twophase.c:1790 access/transam/twophase.c:1801 +#: access/transam/twophase.c:1874 +#, c-format +msgid "removing corrupt two-phase state file \"%s\"" +msgstr "удаление испорченного файла состояния 2PC \"%s\"" + +#: access/transam/twophase.c:1779 access/transam/twophase.c:1863 +#, c-format +msgid "removing stale two-phase state file \"%s\"" +msgstr "удаление устаревшего файла состояния 2PC \"%s\"" + +#: access/transam/twophase.c:1881 +#, c-format +msgid "recovering prepared transaction %u" +msgstr "восстановление подготовленной транзакции %u" + +#: access/transam/slru.c:609 +#, c-format +msgid "file \"%s\" doesn't exist, reading as zeroes" +msgstr "файл \"%s\" не существует, считается нулевым" + +#: 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:840 +#, c-format +msgid "Could not open file \"%s\": %m." +msgstr "Не удалось открыть файл \"%s\": %m." + +#: 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:853 +#, c-format +msgid "Could not read from file \"%s\" at offset %u: %m." +msgstr "не удалось прочитать файл \"%s\" (по смещению %u): %m" + +#: 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:867 +#, c-format +msgid "Could not fsync file \"%s\": %m." +msgstr "Не удалось синхронизировать с ФС файл \"%s\": %m." + +#: access/transam/slru.c:874 +#, c-format +msgid "Could not close file \"%s\": %m." +msgstr "не удалось закрыть файл \"%s\": %m" + +#: access/transam/slru.c:1101 +#, c-format +msgid "could not truncate directory \"%s\": apparent wraparound" +msgstr "не удалось очистить каталог \"%s\": видимо, произошло наложение" + +#: access/transam/slru.c:1182 +#, c-format +msgid "removing file \"%s\"" +msgstr "удаляется файл \"%s\"" + +#: access/transam/xlog.c:1340 +#, c-format +msgid "could not create archive status file \"%s\": %m" +msgstr "не удалось создать файл состояния архива \"%s\": %m" + +#: access/transam/xlog.c:1348 +#, c-format +msgid "could not write archive status file \"%s\": %m" +msgstr "не удалось записать файл состояния архива \"%s\": %m" + +#: access/transam/xlog.c:1803 access/transam/xlog.c:10519 +#: replication/walreceiver.c:515 replication/walsender.c:1004 +#, 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:1820 replication/walreceiver.c:532 +#, 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:2022 +#, c-format +msgid "updated min recovery point to %X/%X" +msgstr "минимальная точка восстановления изменена на %X/%X" + +#: access/transam/xlog.c:2372 access/transam/xlog.c:2476 +#: access/transam/xlog.c:2705 access/transam/xlog.c:2776 +#: access/transam/xlog.c:2833 replication/walsender.c:992 +#, c-format +msgid "could not open file \"%s\" (log file %u, segment %u): %m" +msgstr "не удалось открыть файл \"%s\" (файл журнала: %u, сегмент: %u): %m" + +#: access/transam/xlog.c:2437 access/transam/xlog.c:2569 +#: access/transam/xlog.c:4584 storage/file/copydir.c:269 storage/smgr/md.c:932 +#: storage/smgr/md.c:1137 storage/smgr/md.c:1291 +#, c-format +msgid "could not fsync file \"%s\": %m" +msgstr "не удалось синхронизировать с ФС файл \"%s\": %m" + +#: access/transam/xlog.c:2442 access/transam/xlog.c:2574 +#: access/transam/xlog.c:4589 commands/copy.c:1329 storage/file/copydir.c:211 +#, c-format +msgid "could not close file \"%s\": %m" +msgstr "не удалось закрыть файл \"%s\": %m" + +#: access/transam/xlog.c:2546 +#, c-format +msgid "not enough data in file \"%s\"" +msgstr "недостаточно данных в файле\"%s\"" + +#: access/transam/xlog.c:2665 +#, 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:2677 +#, 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:2860 replication/walreceiver.c:489 +#, c-format +msgid "could not close log file %u, segment %u: %m" +msgstr "не удалось закрыть файл журнала %u, сегмент %u: %m" + +#: access/transam/xlog.c:2940 access/transam/xlog.c:9357 storage/smgr/md.c:371 +#: storage/smgr/md.c:420 storage/smgr/md.c:1251 +#, c-format +msgid "could not remove file \"%s\": %m" +msgstr "не удалось стереть файл \"%s\": %m" + +#: access/transam/xlog.c:3076 +#, c-format +msgid "archive file \"%s\" has wrong size: %lu instead of %lu" +msgstr "файл архива \"%s\" имеет неправильный размер: %lu вместо %lu" + +#: access/transam/xlog.c:3085 +#, c-format +msgid "restored log file \"%s\" from archive" +msgstr "файл журнала \"%s\" восстановлен из архива" + +#: access/transam/xlog.c:3135 +#, 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:3249 +#, c-format +msgid "%s \"%s\": return code %d" +msgstr "%s \"%s\": код возврата %d" + +#: access/transam/xlog.c:3359 access/transam/xlog.c:3542 +#, c-format +msgid "could not open transaction log directory \"%s\": %m" +msgstr "не удалось открыть каталог журнала транзакций \"%s\": %m" + +#: access/transam/xlog.c:3413 +#, c-format +msgid "recycled transaction log file \"%s\"" +msgstr "файл журнала транзакций \"%s\" используется повторно" + +#: access/transam/xlog.c:3429 +#, c-format +msgid "removing transaction log file \"%s\"" +msgstr "файл журнала транзакций \"%s\" удаляется" + +#: access/transam/xlog.c:3452 +#, c-format +msgid "could not rename old transaction log file \"%s\": %m" +msgstr "не удалось переименовать старый файл журнала транзакций \"%s\": %m" + +#: access/transam/xlog.c:3464 +#, c-format +msgid "could not remove old transaction log file \"%s\": %m" +msgstr "не удалось стереть старый файл журнала транзакций \"%s\": %m" + +#: access/transam/xlog.c:3502 access/transam/xlog.c:3512 +#, c-format +msgid "required WAL directory \"%s\" does not exist" +msgstr "требуемый каталог WAL \"%s\" не существует" + +#: access/transam/xlog.c:3518 +#, c-format +msgid "creating missing WAL directory \"%s\"" +msgstr "создаётся отсутствующий каталог WAL \"%s\"" + +#: access/transam/xlog.c:3521 +#, c-format +msgid "could not create missing directory \"%s\": %m" +msgstr "не удалось создать отсутствующий каталог \"%s\": %m" + +#: access/transam/xlog.c:3555 +#, c-format +msgid "removing transaction log backup history file \"%s\"" +msgstr "удаляется файл истории копирования журнала: \"%s\"" + +#: access/transam/xlog.c:3697 +#, c-format +msgid "incorrect hole size in record at %X/%X" +msgstr "неправильный размер пропуска в записи по смещению %X/%X" + +#: access/transam/xlog.c:3710 +#, c-format +msgid "incorrect total length in record at %X/%X" +msgstr "некорректная общая длина в записи по смещению %X/%X" + +#: access/transam/xlog.c:3723 +#, c-format +msgid "incorrect resource manager data checksum in record at %X/%X" +msgstr "" +"некорректная контрольная сумма данных менеджера ресурсов в записи по " +"смещению %X/%X" + +#: access/transam/xlog.c:3801 access/transam/xlog.c:3839 +#, c-format +msgid "invalid record offset at %X/%X" +msgstr "неверное смещение записи: %X/%X" + +#: access/transam/xlog.c:3847 +#, c-format +msgid "contrecord is requested by %X/%X" +msgstr "по смещению %X/%X запрошено продолжение записи" + +#: access/transam/xlog.c:3862 +#, c-format +msgid "invalid xlog switch record at %X/%X" +msgstr "неверная запись переключения xlog по смещению %X/%X" + +#: access/transam/xlog.c:3870 +#, c-format +msgid "record with zero length at %X/%X" +msgstr "запись нулевой длины по смещению %X/%X" + +#: access/transam/xlog.c:3879 +#, c-format +msgid "invalid record length at %X/%X" +msgstr "неверная длина записи по смещению %X/%X" + +#: access/transam/xlog.c:3886 +#, c-format +msgid "invalid resource manager ID %u at %X/%X" +msgstr "неверный ID менеджера ресурсов %u по смещению %X/%X" + +#: access/transam/xlog.c:3899 access/transam/xlog.c:3915 +#, c-format +msgid "record with incorrect prev-link %X/%X at %X/%X" +msgstr "запись с неверной ссылкой назад %X/%X по смещению %X/%X" + +#: access/transam/xlog.c:3944 +#, c-format +msgid "record length %u at %X/%X too long" +msgstr "длина записи %u по смещению %X/%X слишком велика" + +#: access/transam/xlog.c:3984 +#, c-format +msgid "there is no contrecord flag in log file %u, segment %u, offset %u" +msgstr "" +"отсутствует флаг contrecord в файле журнала %u, сегмент %u, смещение %u" + +#: access/transam/xlog.c:3994 +#, c-format +msgid "invalid contrecord length %u in log file %u, segment %u, offset %u" +msgstr "" +"неверная длина продолжения записи %u в файле журнала %u, сегмент %u, " +"смещение %u" + +#: access/transam/xlog.c:4084 +#, c-format +msgid "invalid magic number %04X in log file %u, segment %u, offset %u" +msgstr "" +"неверное магическое число %04X в файле журнала %u, сегмент %u, смещение %u" + +#: access/transam/xlog.c:4091 access/transam/xlog.c:4137 +#, c-format +msgid "invalid info bits %04X in log file %u, segment %u, offset %u" +msgstr "" +"неверные информационные биты %04X в файле журнала %u, сегмент %u, смещение %u" + +#: access/transam/xlog.c:4113 access/transam/xlog.c:4121 +#: access/transam/xlog.c:4128 +msgid "WAL file is from different database system" +msgstr "файл WAL принадлежит другой системе баз данных" + +#: access/transam/xlog.c:4114 +#, 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:4122 +msgid "Incorrect XLOG_SEG_SIZE in page header." +msgstr "Неверный XLOG_SEG_SIZE в заголовке страницы." + +#: access/transam/xlog.c:4129 +msgid "Incorrect XLOG_BLCKSZ in page header." +msgstr "Неверный XLOG_BLCKSZ в заголовке страницы." + +#: access/transam/xlog.c:4145 +#, 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:4157 +#, c-format +msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u" +msgstr "" +"неожиданный ID линии времени %u в файле журнала %u, сегмент %u, смещение %u" + +#: access/transam/xlog.c:4184 +#, 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:4261 +#, c-format +msgid "syntax error in history file: %s" +msgstr "ошибка синтаксиса в файле истории: %s" + +#: access/transam/xlog.c:4262 +msgid "Expected a numeric timeline ID." +msgstr "Ожидается числовое значение ID линии времени." + +#: access/transam/xlog.c:4267 +#, c-format +msgid "invalid data in history file: %s" +msgstr "неверные данные в файле истории: %s" + +#: access/transam/xlog.c:4268 +msgid "Timeline IDs must be in increasing sequence." +msgstr "ID линии времени должны идти в порядке возрастания." + +#: access/transam/xlog.c:4281 +#, c-format +msgid "invalid data in history file \"%s\"" +msgstr "неверные данные в файле истории \"%s\"" + +#: access/transam/xlog.c:4282 +msgid "Timeline IDs must be less than child timeline's ID." +msgstr "" +"ID линии времени должны быть меньше, чем ID линии времени, ответвившейся от " +"неё." + +#: access/transam/xlog.c:4368 +#, c-format +msgid "new timeline %u is not a child of database system timeline %u" +msgstr "" +"новая линия времени %u не является ответвлением линии времени системы БД %u" + +#: access/transam/xlog.c:4381 +#, c-format +msgid "new target timeline is %u" +msgstr "новая целевая линия времени %u" + +#: access/transam/xlog.c:4606 +#, c-format +msgid "could not link file \"%s\" to \"%s\": %m" +msgstr "для файла \"%s\" не удалось создать ссылку \"%s\": %m" + +#: access/transam/xlog.c:4695 +#, c-format +msgid "could not create control file \"%s\": %m" +msgstr "не удалось создать файл \"%s\": %m" + +#: access/transam/xlog.c:4706 access/transam/xlog.c:4931 +#, c-format +msgid "could not write to control file: %m" +msgstr "не удалось записать в файл pg_control: %m" + +#: access/transam/xlog.c:4712 access/transam/xlog.c:4937 +#, c-format +msgid "could not fsync control file: %m" +msgstr "не удалось синхронизировать с ФС файл pg_control: %m" + +#: access/transam/xlog.c:4717 access/transam/xlog.c:4942 +#, c-format +msgid "could not close control file: %m" +msgstr "не удалось закрыть файл pg_control: %m" + +#: access/transam/xlog.c:4735 access/transam/xlog.c:4920 +#, c-format +msgid "could not open control file \"%s\": %m" +msgstr "не удалось открыть файл \"%s\": %m" + +#: access/transam/xlog.c:4741 +#, c-format +msgid "could not read from control file: %m" +msgstr "не удалось прочитать файл pg_control: %m" + +#: access/transam/xlog.c:4755 +#, 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:4759 +msgid "" +"This could be a problem of mismatched byte ordering. It looks like you need " +"to initdb." +msgstr "" +"Возможно, проблема вызвана разным порядком байт. Кажется, вам надо выполнить " +"initdb." + +#: access/transam/xlog.c:4764 +#, c-format +msgid "" +"The database cluster was initialized with PG_CONTROL_VERSION %d, but the " +"server was compiled with PG_CONTROL_VERSION %d." +msgstr "" +"Кластер баз данных был инициализирован с PG_CONTROL_VERSION %d, но сервер " +"скомпилирован с PG_CONTROL_VERSION %d." + +#: access/transam/xlog.c:4767 access/transam/xlog.c:4791 +#: access/transam/xlog.c:4798 access/transam/xlog.c:4803 +msgid "It looks like you need to initdb." +msgstr "Кажется, вам надо выполнить initdb." + +#: access/transam/xlog.c:4778 +msgid "incorrect checksum in control file" +msgstr "ошибка контрольной суммы в файле pg_control" + +#: access/transam/xlog.c:4788 +#, c-format +msgid "" +"The database cluster was initialized with CATALOG_VERSION_NO %d, but the " +"server was compiled with CATALOG_VERSION_NO %d." +msgstr "" +"Кластер баз данных был инициализирован с CATALOG_VERSION_NO %d, но сервер " +"скомпилирован с CATALOG_VERSION_NO %d." + +#: access/transam/xlog.c:4795 +#, 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:4802 +msgid "" +"The database cluster appears to use a different floating-point number format " +"than the server executable." +msgstr "" +"Кажется, в кластере баз данных и в программе сервера используются разные " +"форматы чисел с плавающей точкой." + +#: access/transam/xlog.c:4807 +#, 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:4810 access/transam/xlog.c:4817 +#: access/transam/xlog.c:4824 access/transam/xlog.c:4831 +#: access/transam/xlog.c:4838 access/transam/xlog.c:4845 +#: access/transam/xlog.c:4852 access/transam/xlog.c:4860 +#: access/transam/xlog.c:4867 access/transam/xlog.c:4876 +#: access/transam/xlog.c:4883 access/transam/xlog.c:4892 +#: access/transam/xlog.c:4899 +msgid "It looks like you need to recompile or initdb." +msgstr "Кажется, вам надо перекомпилировать сервер или выполнить initdb." + +#: access/transam/xlog.c:4814 +#, c-format +msgid "" +"The database cluster was initialized with RELSEG_SIZE %d, but the server was " +"compiled with RELSEG_SIZE %d." +msgstr "" +"Кластер баз данных был инициализирован с RELSEG_SIZE %d, но сервер " +"скомпилирован с RELSEG_SIZE %d." + +#: access/transam/xlog.c:4821 +#, 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:4828 +#, c-format +msgid "" +"The database cluster was initialized with XLOG_SEG_SIZE %d, but the server " +"was compiled with XLOG_SEG_SIZE %d." +msgstr "" +"Кластер баз данных был инициализирован с XLOG_SEG_SIZE %d, но сервер " +"скомпилирован с XLOG_SEG_SIZE %d." + +#: access/transam/xlog.c:4835 +#, c-format +msgid "" +"The database cluster was initialized with NAMEDATALEN %d, but the server was " +"compiled with NAMEDATALEN %d." +msgstr "" +"Кластер баз данных был инициализирован с NAMEDATALEN %d, но сервер " +"скомпилирован с NAMEDATALEN %d." + +#: access/transam/xlog.c:4842 +#, 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:4849 +#, 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:4858 +msgid "" +"The database cluster was initialized without HAVE_INT64_TIMESTAMP but the " +"server was compiled with HAVE_INT64_TIMESTAMP." +msgstr "" +"Кластер баз данных был инициализирован без HAVE_INT64_TIMESTAMP, но сервер " +"скомпилирован с HAVE_INT64_TIMESTAMP." + +#: access/transam/xlog.c:4865 +msgid "" +"The database cluster was initialized with HAVE_INT64_TIMESTAMP but the " +"server was compiled without HAVE_INT64_TIMESTAMP." +msgstr "" +"Кластер баз данных был инициализирован с HAVE_INT64_TIMESTAMP, но сервер " +"скомпилирован без HAVE_INT64_TIMESTAMP." + +#: access/transam/xlog.c:4874 +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:4881 +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:4890 +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:4897 +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:5222 +#, c-format +msgid "could not write bootstrap transaction log file: %m" +msgstr "не удалось записать начальный файл журнала транзакций: %m" + +#: access/transam/xlog.c:5228 +#, c-format +msgid "could not fsync bootstrap transaction log file: %m" +msgstr "не удалось синхронизировать с ФС начальный файл журнала транзакций: %m" + +#: access/transam/xlog.c:5233 +#, c-format +msgid "could not close bootstrap transaction log file: %m" +msgstr "не удалось закрыть начальный файл журнала транзакций: %m" + +#: access/transam/xlog.c:5300 +#, c-format +msgid "could not open recovery command file \"%s\": %m" +msgstr "не удалось открыть файл команд восстановления \"%s\": %m" + +#: access/transam/xlog.c:5354 +#, c-format +msgid "recovery_target_timeline is not a valid number: \"%s\"" +msgstr "recovery_target_timeline не является допустимым числом: \"%s\"" + +#: access/transam/xlog.c:5370 +#, c-format +msgid "recovery_target_xid is not a valid number: \"%s\"" +msgstr "recovery_target_xid не является допустимым числом: \"%s\"" + +#: access/transam/xlog.c:5414 +#, c-format +msgid "recovery_target_name is too long (maximum %d characters)" +msgstr "длина recovery_target_name превышает предел (%d)" + +#: access/transam/xlog.c:5461 +#, c-format +msgid "unrecognized recovery parameter \"%s\"" +msgstr "нераспознанный параметр восстановления \"%s\"" + +#: access/transam/xlog.c:5472 +#, c-format +msgid "" +"recovery command file \"%s\" specified neither primary_conninfo nor " +"restore_command" +msgstr "" +"в файле команд восстановления \"%s\" не указан параметр primary_conninfo или " +"restore_command" + +#: access/transam/xlog.c:5474 +msgid "" +"The database server will regularly poll the pg_xlog subdirectory to check " +"for files placed there." +msgstr "" +"Сервер БД будет регулярно опрашивать подкаталог pg_xlog и проверять " +"содержащиеся в нём файлы." + +#: access/transam/xlog.c:5480 +#, c-format +msgid "" +"recovery command file \"%s\" must specify restore_command when standby mode " +"is not enabled" +msgstr "" +"в файле команд восстановления \"%s\" может отсутствовать restore_command, " +"только если это резервный сервер" + +#: access/transam/xlog.c:5500 +#, c-format +msgid "recovery target timeline %u does not exist" +msgstr "целевая линия времени для восстановления %u не существует" + +#: access/transam/xlog.c:5630 +msgid "archive recovery complete" +msgstr "восстановление архива завершено" + +#: access/transam/xlog.c:5748 +#, c-format +msgid "recovery stopping after commit of transaction %u, time %s" +msgstr "" +"восстановление останавливается после фиксирования транзакции %u, время %s" + +#: access/transam/xlog.c:5753 +#, c-format +msgid "recovery stopping before commit of transaction %u, time %s" +msgstr "" +"восстановление останавливается перед фиксированием транзакции %u, время %s" + +#: access/transam/xlog.c:5761 +#, c-format +msgid "recovery stopping after abort of transaction %u, time %s" +msgstr "" +"восстановление останавливается после прерывания транзакции %u, время %s" + +#: access/transam/xlog.c:5766 +#, c-format +msgid "recovery stopping before abort of transaction %u, time %s" +msgstr "" +"восстановление останавливается перед прерыванием транзакции %u, время %s" + +#: access/transam/xlog.c:5775 +#, c-format +msgid "recovery stopping at restore point \"%s\", time %s" +msgstr "восстановление останавливается в точке восстановления \"%s\", время %s" + +#: access/transam/xlog.c:5809 +msgid "recovery has paused" +msgstr "восстановление приостановлено" + +#: access/transam/xlog.c:5810 +msgid "Execute pg_xlog_replay_resume() to continue." +msgstr "Выполните pg_xlog_replay_resume() для продолжения." + +#: access/transam/xlog.c:5853 access/transam/xlog.c:5875 +#: access/transam/xlog.c:5897 +msgid "must be superuser to control recovery" +msgstr "для управления восстановлением нужно быть суперпользователем" + +#: access/transam/xlog.c:5858 access/transam/xlog.c:5880 +#: access/transam/xlog.c:5902 +msgid "recovery is not in progress" +msgstr "восстановление не выполняется" + +#: access/transam/xlog.c:5859 access/transam/xlog.c:5881 +#: access/transam/xlog.c:5903 +msgid "Recovery control functions can only be executed during recovery." +msgstr "" +"Функции управления восстановлением можно использовать только в процессе " +"восстановления." + +#: access/transam/xlog.c:5996 +#, 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:6018 +msgid "WAL was generated with wal_level=minimal, data may be missing" +msgstr "WAL был создан с параметром wal_level=minimal, возможна потеря данных" + +#: access/transam/xlog.c:6019 +msgid "" +"This happens if you temporarily set wal_level=minimal without taking a new " +"base backup." +msgstr "" +"Это происходит, если вы на время установили wal_level=minimal и не сделали " +"резервную копию базу данных." + +#: access/transam/xlog.c:6030 +msgid "" +"hot standby is not possible because wal_level was not set to \"hot_standby\" " +"on the master server" +msgstr "" +"режим горячего резерва невозможен, так как на главном сервере установлен " +"неподходящий wal_level (должен быть \"hot_standby\")" + +#: access/transam/xlog.c:6031 +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:6079 +msgid "control file contains invalid data" +msgstr "файл pg_control содержит неверные данные" + +#: access/transam/xlog.c:6083 +#, c-format +msgid "database system was shut down at %s" +msgstr "система БД была выключена: %s" + +#: access/transam/xlog.c:6087 +#, c-format +msgid "database system was shut down in recovery at %s" +msgstr "система БД была выключена в процесса восстановления: %s" + +#: access/transam/xlog.c:6091 +#, c-format +msgid "database system shutdown was interrupted; last known up at %s" +msgstr "выключение системы БД было прервано; последний момент работы: %s" + +#: access/transam/xlog.c:6095 +#, c-format +msgid "database system was interrupted while in recovery at %s" +msgstr "работа системы БД была прервана во время восстановления: %s" + +#: access/transam/xlog.c:6097 +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:6101 +#, c-format +msgid "database system was interrupted while in recovery at log time %s" +msgstr "" +"работа системы БД была прервана в процессе восстановления, время в журнале: " +"%s" + +#: access/transam/xlog.c:6103 +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:6107 +#, c-format +msgid "database system was interrupted; last known up at %s" +msgstr "работа системы БД была прервана; последний момент работы: %s" + +#: access/transam/xlog.c:6156 +#, c-format +msgid "requested timeline %u is not a child of database system timeline %u" +msgstr "" +"запрошенная линия времени %u не является ответвлением линии времени системы " +"БД %u" + +#: access/transam/xlog.c:6174 +msgid "entering standby mode" +msgstr "переход в режим резервного сервера" + +#: access/transam/xlog.c:6177 +#, c-format +msgid "starting point-in-time recovery to XID %u" +msgstr "начинается восстановление точки во времени до XID %u" + +#: access/transam/xlog.c:6181 +#, c-format +msgid "starting point-in-time recovery to %s" +msgstr "начинается восстановление точки во времени до %s" + +#: access/transam/xlog.c:6185 +#, c-format +msgid "starting point-in-time recovery to \"%s\"" +msgstr "начинается восстановление точки во времени до \"%s\"" + +#: access/transam/xlog.c:6189 +msgid "starting archive recovery" +msgstr "начинается восстановление архива" + +#: access/transam/xlog.c:6211 access/transam/xlog.c:6251 +#, c-format +msgid "checkpoint record is at %X/%X" +msgstr "запись о контрольной точке по смещению %X/%X" + +#: access/transam/xlog.c:6225 +msgid "could not find redo location referenced by checkpoint record" +msgstr "не удалось найти положение REDO, указанное записью контрольной точки" + +#: access/transam/xlog.c:6226 access/transam/xlog.c:6233 +#, 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:6232 +msgid "could not locate required checkpoint record" +msgstr "не удалось считать нужную запись контрольной точки" + +#: access/transam/xlog.c:6261 access/transam/xlog.c:6276 +msgid "could not locate a valid checkpoint record" +msgstr "не удалось считать правильную запись контрольной точки" + +#: access/transam/xlog.c:6270 +#, c-format +msgid "using previous checkpoint record at %X/%X" +msgstr "используется предыдущая запись контрольной точки по смещению %X/%X" + +#: access/transam/xlog.c:6285 +#, c-format +msgid "redo record is at %X/%X; shutdown %s" +msgstr "запись REDO по смещению %X/%X; выключение: %s" + +#: access/transam/xlog.c:6289 +#, c-format +msgid "next transaction ID: %u/%u; next OID: %u" +msgstr "ID следующей транзакции: %u/%u; следующий OID: %u" + +#: access/transam/xlog.c:6293 +#, c-format +msgid "next MultiXactId: %u; next MultiXactOffset: %u" +msgstr "следующий MultiXactId: %u; следующий MultiXactOffset: %u" + +#: access/transam/xlog.c:6296 +#, c-format +msgid "oldest unfrozen transaction ID: %u, in database %u" +msgstr "ID старейшей незамороженной транзакции: %u, база данных %u" + +#: access/transam/xlog.c:6300 +msgid "invalid next transaction ID" +msgstr "неверный ID следующей транзакции" + +#: access/transam/xlog.c:6322 +msgid "invalid redo in checkpoint record" +msgstr "неверная запись REDO в контрольной точке" + +#: access/transam/xlog.c:6333 +msgid "invalid redo record in shutdown checkpoint" +msgstr "неверная запись REDO в контрольной точки выключения" + +#: access/transam/xlog.c:6363 +msgid "" +"database system was not properly shut down; automatic recovery in progress" +msgstr "" +"система БД была остановлена нештатно; производится автоматическое " +"восстановление" + +#: access/transam/xlog.c:6442 +msgid "initializing for hot standby" +msgstr "инициализация для горячего резерва" + +#: access/transam/xlog.c:6571 +#, c-format +msgid "redo starts at %X/%X" +msgstr "запись REDO начинается со смещения %X/%X" + +#: access/transam/xlog.c:6699 +#, c-format +msgid "redo done at %X/%X" +msgstr "записи REDO обработаны до смещения %X/%X" + +#: access/transam/xlog.c:6704 access/transam/xlog.c:8304 +#, c-format +msgid "last completed transaction was at log time %s" +msgstr "последняя завершённая транзакция была выполнена в %s" + +#: access/transam/xlog.c:6712 +msgid "redo is not required" +msgstr "данные REDO не требуются" + +#: access/transam/xlog.c:6760 +msgid "requested recovery stop point is before consistent recovery point" +msgstr "" +"запрошенная точка остановки восстановления предшествует согласованной точке " +"восстановления" + +#: access/transam/xlog.c:6769 +msgid "WAL ends before end of online backup" +msgstr "WAL закончился без признака окончания копирования" + +#: access/transam/xlog.c:6770 +msgid "" +"Online backup started with pg_start_backup() must be ended with " +"pg_stop_backup(), and all WAL up to that point must be available at recovery." +msgstr "" +"Резервное копирование БД \"на ходу\", начатое командой pg_start_backup(), " +"должно закончиться pg_stop_backup(), и для восстановления должны быть " +"доступны все журналы WAL." + +#: access/transam/xlog.c:6773 +msgid "WAL ends before consistent recovery point" +msgstr "WAL закончился до согласованной точки восстановления" + +#: access/transam/xlog.c:6794 +#, c-format +msgid "selected new timeline ID: %u" +msgstr "выбранный ID новой линии времени: %u" + +#: access/transam/xlog.c:7044 +#, c-format +msgid "consistent recovery state reached at %X/%X" +msgstr "согласованное состояние восстановления достигнуто по смещению %X/%X" + +#: access/transam/xlog.c:7211 +msgid "invalid primary checkpoint link in control file" +msgstr "неверная ссылка на первичную контрольную точку в файле pg_control" + +#: access/transam/xlog.c:7215 +msgid "invalid secondary checkpoint link in control file" +msgstr "неверная ссылка на вторичную контрольную точку в файле pg_control" + +#: access/transam/xlog.c:7219 +msgid "invalid checkpoint link in backup_label file" +msgstr "неверная ссылка на контрольную точку в файле backup_label" + +#: access/transam/xlog.c:7233 +msgid "invalid primary checkpoint record" +msgstr "неверная запись первичной контрольной точки" + +#: access/transam/xlog.c:7237 +msgid "invalid secondary checkpoint record" +msgstr "неверная запись вторичной контрольной точки" + +#: access/transam/xlog.c:7241 +msgid "invalid checkpoint record" +msgstr "неверная запись контрольной точки" + +#: access/transam/xlog.c:7252 +msgid "invalid resource manager ID in primary checkpoint record" +msgstr "неверный ID менеджера ресурсов в записи первичной контрольной точки" + +#: access/transam/xlog.c:7256 +msgid "invalid resource manager ID in secondary checkpoint record" +msgstr "неверный ID менеджера ресурсов в записи вторичной контрольной точки" + +#: access/transam/xlog.c:7260 +msgid "invalid resource manager ID in checkpoint record" +msgstr "неверный ID менеджера ресурсов в записи контрольной точки" + +#: access/transam/xlog.c:7272 +msgid "invalid xl_info in primary checkpoint record" +msgstr "неверные флаги xl_info в записи первичной контрольной точки" + +#: access/transam/xlog.c:7276 +msgid "invalid xl_info in secondary checkpoint record" +msgstr "неверные флаги xl_info в записи вторичной контрольной точки" + +#: access/transam/xlog.c:7280 +msgid "invalid xl_info in checkpoint record" +msgstr "неверные флаги xl_info в записи контрольной точки" + +#: access/transam/xlog.c:7292 +msgid "invalid length of primary checkpoint record" +msgstr "неверная длина записи первичной контрольной точки" + +#: access/transam/xlog.c:7296 +msgid "invalid length of secondary checkpoint record" +msgstr "неверная длина записи вторичной контрольной точки" + +#: access/transam/xlog.c:7300 +msgid "invalid length of checkpoint record" +msgstr "неверная длина записи контрольной точки" + +#: access/transam/xlog.c:7462 +msgid "shutting down" +msgstr "выключение" + +#: access/transam/xlog.c:7484 +msgid "database system is shut down" +msgstr "система БД выключена" + +#: access/transam/xlog.c:7916 +msgid "" +"concurrent transaction log activity while database system is shutting down" +msgstr "" +"во время выключения системы баз данных отмечена активность в журнале " +"транзакций" + +#: access/transam/xlog.c:8150 +msgid "skipping restartpoint, recovery has already ended" +msgstr "" +"создание точки перезапуска пропускается, восстановление уже закончилось" + +#: access/transam/xlog.c:8175 +#, c-format +msgid "skipping restartpoint, already performed at %X/%X" +msgstr "" +"создание точки перезапуска пропускается, она уже создана по смещению %X/%X" + +#: access/transam/xlog.c:8302 +#, c-format +msgid "recovery restart point at %X/%X" +msgstr "точка перезапуска восстановления по смещению %X/%X" + +#: access/transam/xlog.c:8402 +#, c-format +msgid "restore point \"%s\" created at %X/%X" +msgstr "точка восстановления \"%s\" создана по смещению %X/%X" + +#: access/transam/xlog.c:8502 +msgid "online backup was canceled, recovery cannot continue" +msgstr "" +"резервное копирование \"на ходу\" было отменено, продолжить восстановление " +"нельзя" + +#: access/transam/xlog.c:8565 +#, c-format +msgid "unexpected timeline ID %u (after %u) in checkpoint record" +msgstr "неожиданный ID линии времени %u (после %u) в записи контрольной точки" + +#: access/transam/xlog.c:8610 +#, c-format +msgid "unexpected timeline ID %u (should be %u) in checkpoint record" +msgstr "" +"неожиданный ID линии времени %u (должен быть %u) в записи точки " +"восстановления" + +#: access/transam/xlog.c:8874 access/transam/xlog.c:8898 +#, c-format +msgid "could not fsync log file %u, segment %u: %m" +msgstr "не удалось синхронизировать с ФС файл журнала %u, сегмент: %u: %m" + +#: access/transam/xlog.c:8906 +#, c-format +msgid "could not fsync write-through log file %u, segment %u: %m" +msgstr "" +"не удалось синхронизировать с ФС файл журнала сквозной записи %u, сегмент: " +"%u: %m" + +#: access/transam/xlog.c:8915 +#, c-format +msgid "could not fdatasync log file %u, segment %u: %m" +msgstr "" +"не удалось синхронизировать с ФС данные (fdatasync) файла журнала: %u, " +"сегмент: %u: %m" + +#: access/transam/xlog.c:8996 access/transam/xlog.c:9275 +msgid "must be superuser or replication role to run a backup" +msgstr "" +"запускать резервное копирование может только суперпользователь или роль " +"репликации" + +#: access/transam/xlog.c:9001 access/transam/xlog.c:9280 +#: access/transam/xlog.c:9543 access/transam/xlog.c:9575 +#: access/transam/xlog.c:9616 access/transam/xlog.c:9649 +#: access/transam/xlog.c:9756 access/transam/xlog.c:9831 +msgid "recovery is in progress" +msgstr "идёт процесс восстановления" + +#: access/transam/xlog.c:9002 access/transam/xlog.c:9281 +#: access/transam/xlog.c:9544 access/transam/xlog.c:9576 +#: access/transam/xlog.c:9617 access/transam/xlog.c:9650 +msgid "WAL control functions cannot be executed during recovery." +msgstr "Функции управления WAL нельзя использовать в процессе восстановления." + +#: access/transam/xlog.c:9007 access/transam/xlog.c:9286 +msgid "WAL level not sufficient for making an online backup" +msgstr "" +"Выбранный уровень WAL недостаточен для резервного копирования \"на ходу\"" + +#: access/transam/xlog.c:9008 access/transam/xlog.c:9287 +#: access/transam/xlog.c:9582 +msgid "" +"wal_level must be set to \"archive\" or \"hot_standby\" at server start." +msgstr "" +"Установите wal_level \"archive\" или \"hot_standby\" при запуске сервера." + +#: access/transam/xlog.c:9013 +#, c-format +msgid "backup label too long (max %d bytes)" +msgstr "длина метки резервной копии превышает предел (%d байт)" + +#: access/transam/xlog.c:9054 access/transam/xlog.c:9157 +msgid "a backup is already in progress" +msgstr "резервное копирование уже запущено" + +#: access/transam/xlog.c:9055 +msgid "Run pg_stop_backup() and try again." +msgstr "Выполните pg_stop_backup() и повторите операцию." + +#: access/transam/xlog.c:9158 +#, 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:9173 access/transam/xlog.c:9419 +#, c-format +msgid "could not write file \"%s\": %m" +msgstr "не удалось записать файл \"%s\": %m" + +#: access/transam/xlog.c:9331 +msgid "a backup is not in progress" +msgstr "резервное копирование не запущено" + +#: access/transam/xlog.c:9370 access/transam/xlog.c:9901 +#: access/transam/xlog.c:9907 +#, c-format +msgid "invalid data in file \"%s\"" +msgstr "неверные данные в файле \"%s\"" + +#: access/transam/xlog.c:9468 +msgid "" +"pg_stop_backup cleanup done, waiting for required WAL segments to be archived" +msgstr "" +"очистка в pg_stop_backup выполнена, ожидаются требуемые сегменты WAL для " +"архивации" + +#: access/transam/xlog.c:9478 +#, 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:9480 +msgid "" +"Check that your archive_command is executing properly. pg_stop_backup can " +"be canceled safely, but the database backup will not be usable without all " +"the WAL segments." +msgstr "" +"Проверьте, правильно ли работает команда archive_command. pg_stop_backup " +"можно отменить безопасно, но резервная копия базы данных будет непригодна " +"без всех сегментов WAL." + +#: access/transam/xlog.c:9487 +msgid "pg_stop_backup complete, all required WAL segments have been archived" +msgstr "" +"команда pg_stop_backup завершена, все требуемые сегменты WAL заархивированы" + +#: access/transam/xlog.c:9491 +msgid "" +"WAL archiving is not enabled; you must ensure that all required WAL segments " +"are copied through other means to complete the backup" +msgstr "" +"архивация WAL не настроена; вы должны обеспечить копирование всех требуемых " +"сегментов WAL другими средствами для получения резервной копии" + +#: access/transam/xlog.c:9538 +msgid "must be superuser to switch transaction log files" +msgstr "" +"для переключения файлов журнала транзакций нужно быть суперпользователем" + +#: access/transam/xlog.c:9570 +msgid "must be superuser to create a restore point" +msgstr "для создания точки восстановления нужно быть суперпользователем" + +#: access/transam/xlog.c:9581 +msgid "WAL level not sufficient for creating a restore point" +msgstr "Выбранный уровень WAL не достаточен для создания точки восстановления" + +#: access/transam/xlog.c:9589 +#, c-format +msgid "value too long for restore point (maximum %d characters)" +msgstr "значение для точки восстановления превышает предел (%d симв.)" + +#: access/transam/xlog.c:9757 +msgid "pg_xlogfile_name_offset() cannot be executed during recovery." +msgstr "" +"Функцию pg_xlogfile_name_offset() нельзя вызывать во время восстановления." + +#: access/transam/xlog.c:9767 access/transam/xlog.c:9839 +#, c-format +msgid "could not parse transaction log location \"%s\"" +msgstr "не удалось разобрать положение в журнале транзакций \"%s\"" + +#: access/transam/xlog.c:9832 +msgid "pg_xlogfile_name() cannot be executed during recovery." +msgstr "Функцию pg_xlogfile_name() нельзя вызывать в процессе восстановления." + +#: access/transam/xlog.c:9943 +#, c-format +msgid "xlog redo %s" +msgstr "XLOG-запись REDO: %s" + +#: access/transam/xlog.c:9983 +msgid "online backup mode canceled" +msgstr "режим копирования \"на ходу\" отменён" + +#: access/transam/xlog.c:9984 +#, c-format +msgid "\"%s\" was renamed to \"%s\"." +msgstr "Файл \"%s\" был переименован в \"%s\"." + +#: access/transam/xlog.c:9991 +msgid "online backup mode was not canceled" +msgstr "режим копирования \"на ходу\" не был отменён" + +#: access/transam/xlog.c:9992 +#, c-format +msgid "Could not rename \"%s\" to \"%s\": %m." +msgstr "Не удалось переименовать файл \"%s\" в \"%s\": %m." + +#: access/transam/xlog.c:10505 access/transam/xlog.c:10527 +#, c-format +msgid "could not read from log file %u, segment %u, offset %u: %m" +msgstr "не удалось прочитать файл журнала: %u, сегмент: %u, смещение %u: %m" + +#: access/transam/xlog.c:10616 +msgid "received promote request" +msgstr "получен запрос повышения статуса" + +#: access/transam/xlog.c:10629 +#, c-format +msgid "trigger file found: %s" +msgstr "найден файл триггера: %s" + +#: access/gin/ginentrypage.c:101 access/nbtree/nbtsort.c:483 +#: access/nbtree/nbtinsert.c:531 +#, c-format +msgid "index row size %lu exceeds maximum %lu for index \"%s\"" +msgstr "" +"размер строки индекса (%lu) больше предельного размера (%lu) (индекс \"%s\")" + +#: access/gin/ginscan.c:401 +msgid "old GIN indexes do not support whole-index scans nor searches for nulls" +msgstr "" +"старые GIN-индексы не поддерживают сканирование всего индекса и поиск NULL" + +#: access/gin/ginscan.c:402 +#, c-format +msgid "To fix this, do REINDEX INDEX \"%s\"." +msgstr "Для исправления выполните REINDEX INDEX \"%s\"." + +#: access/nbtree/nbtpage.c:161 access/nbtree/nbtpage.c:365 +#: parser/parse_utilcmd.c:1577 +#, c-format +msgid "index \"%s\" is not a btree" +msgstr "индекс \"%s\" не является b-деревом" + +#: 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, версия кода: %d" + +#: access/nbtree/nbtsort.c:487 access/nbtree/nbtinsert.c:535 +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/nbtinsert.c:393 +#, c-format +msgid "duplicate key value violates unique constraint \"%s\"" +msgstr "повторяющееся значение ключа нарушает ограничение уникальности \"%s\"" + +#: access/nbtree/nbtinsert.c:395 +#, c-format +msgid "Key %s already exists." +msgstr "Ключ \"%s\" уже существует." + +#: access/nbtree/nbtinsert.c:457 +#, c-format +msgid "failed to re-find tuple within index \"%s\"" +msgstr "не удалось повторно найти кортеж в индексе \"%s\"" + +#: access/nbtree/nbtinsert.c:459 +msgid "This may be because of a non-immutable index expression." +msgstr "Возможно, это вызвано переменной природой индексного выражения." + +#: access/index/indexam.c:161 commands/tablecmds.c:221 +#: commands/tablecmds.c:2414 commands/indexcmds.c:1514 +#: catalog/objectaddress.c:391 +#, c-format +msgid "\"%s\" is not an index" +msgstr "\"%s\" - это не индекс" + +#: access/gist/gist.c:127 access/gist/gist.c:243 +msgid "unlogged GiST indexes are not supported" +msgstr "GiST-индексы без журналирования не поддерживаются" + +#: access/gist/gist.c:728 access/gist/gistvacuum.c:271 +#, c-format +msgid "index \"%s\" contains an inner tuple marked as invalid" +msgstr "индекс \"%s\" содержит внутренний кортеж, отмеченный как ошибочный" + +#: access/gist/gist.c:730 access/gist/gistvacuum.c:273 +msgid "" +"This is caused by an incomplete page split at crash recovery before " +"upgrading to PostgreSQL 9.1." +msgstr "" +"Это вызвано неполным разделением страницы при восстановлении после сбоя в " +"PostgreSQL до версии 9.1." + +#: access/gist/gistsplit.c:446 +#, c-format +msgid "picksplit method for column %d of index \"%s\" failed" +msgstr "ошибка в методе picksplit для колонки %d индекса \"%s\"" + +#: access/gist/gistsplit.c:448 +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 " +"второй." + +#: commands/lockcmds.c:93 +#, c-format +msgid "could not obtain lock on relation \"%s\"" +msgstr "не удалось получить блокировку таблицы \"%s\"" + +#: commands/lockcmds.c:98 +#, c-format +msgid "could not obtain lock on relation with OID %u" +msgstr "не удалось получить блокировку таблицы с OID %u" + +#: commands/lockcmds.c:122 catalog/namespace.c:285 parser/parse_relation.c:842 +#, c-format +msgid "relation \"%s.%s\" does not exist" +msgstr "отношение \"%s.%s\" не существует" + +#: commands/lockcmds.c:149 commands/tablecmds.c:203 commands/tablecmds.c:1137 +#: commands/tablecmds.c:2406 commands/tablecmds.c:3758 +#: commands/tablecmds.c:6731 commands/indexcmds.c:198 +#: commands/indexcmds.c:1546 catalog/toasting.c:93 catalog/objectaddress.c:405 +#, c-format +msgid "\"%s\" is not a table" +msgstr "\"%s\" - это не таблица" + +#: 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:108 commands/define.c:119 commands/define.c:189 +#: commands/define.c:207 +#, c-format +msgid "%s requires a numeric value" +msgstr "%s требует числовое значение" + +#: commands/define.c:175 +#, c-format +msgid "%s requires a Boolean value" +msgstr "%s требует логическое значение" + +#: commands/define.c:236 +#, c-format +msgid "argument of %s must be a name" +msgstr "аргументом %s должно быть имя" + +#: commands/define.c:266 +#, c-format +msgid "argument of %s must be a type name" +msgstr "аргументом %s должно быть имя типа" + +#: commands/define.c:291 +#, c-format +msgid "%s requires an integer value" +msgstr "%s требует целое значение" + +#: commands/define.c:312 +#, c-format +msgid "invalid argument for %s: \"%s\"" +msgstr "неверный аргумент для %s: \"%s\"" + +#: commands/variable.c:172 +msgid "Conflicting \"datestyle\" specifications." +msgstr "Конфликтующие спецификации стиля дат." + +#: commands/variable.c:328 +msgid "Cannot specify months in time zone interval." +msgstr "В интервале, задающем часовой пояс, нельзя указывать месяцы." + +#: commands/variable.c:334 +msgid "Cannot specify days in time zone interval." +msgstr "В интервале, задающем часовой пояс, нельзя указывать дни." + +#: commands/variable.c:378 commands/variable.c:517 +#, c-format +msgid "time zone \"%s\" appears to use leap seconds" +msgstr "часовой пояс \"%s\" видимо использует координационные секунды" + +#: commands/variable.c:380 commands/variable.c:519 +msgid "PostgreSQL does not support leap seconds." +msgstr "PostgreSQL не поддерживает координационные секунды." + +#: commands/variable.c:587 +msgid "cannot set transaction read-write mode inside a read-only transaction" +msgstr "" +"нельзя установить режим транзакции \"чтение-запись\" внутри транзакции " +"\"только чтение\"" + +#: commands/variable.c:594 +msgid "transaction read-write mode must be set before any query" +msgstr "" +"режим транзакции \"чтение-запись\" должен быть установлен до выполнения " +"запросов" + +#: commands/variable.c:601 +msgid "cannot set transaction read-write mode during recovery" +msgstr "" +"нельзя установить режим транзакции \"чтение-запись\" в процессе " +"восстановления" + +#: commands/variable.c:650 +msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query" +msgstr "команда SET TRANSACTION ISOLATION LEVEL должна выполняться до запросов" + +#: commands/variable.c:657 +msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction" +msgstr "" +"команда SET TRANSACTION ISOLATION LEVEL не должна вызываться в подтранзакции" + +#: commands/variable.c:664 storage/lmgr/predicate.c:1570 +msgid "cannot use serializable mode in a hot standby" +msgstr "использовать сериализуемый режим в горячем резерве нельзя" + +#: commands/variable.c:665 +msgid "You can use REPEATABLE READ instead." +msgstr "Используйте REPEATABLE READ." + +#: commands/variable.c:713 +msgid "" +"SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction" +msgstr "" +"команда SET TRANSACTION [NOT] DEFERRABLE не может вызываться в подтранзакции" + +#: commands/variable.c:719 +msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query" +msgstr "" +"команда SET TRANSACTION [NOT] DEFERRABLE должна выполняться до запросов" + +#: commands/variable.c:801 +#, c-format +msgid "Conversion between %s and %s is not supported." +msgstr "Преобразование кодировок %s <-> %s не поддерживается." + +#: commands/variable.c:808 +msgid "Cannot change \"client_encoding\" now." +msgstr "Изменить клиентскую кодировку сейчас нельзя." + +#: commands/variable.c:978 +#, c-format +msgid "permission denied to set role \"%s\"" +msgstr "нет прав установить роль \"%s\"" + +#: commands/prepare.c:71 +msgid "invalid statement name: must not be empty" +msgstr "неверный оператор: имя не должно быть пустым" + +#: commands/prepare.c:140 +msgid "utility statements cannot be prepared" +msgstr "служебные SQL-операторы нельзя подготовить" + +# [SM]: TO REVIEW +#: commands/prepare.c:240 commands/prepare.c:247 commands/prepare.c:706 +msgid "prepared statement is not a SELECT" +msgstr "подготовленный оператор - не SELECT" + +#: commands/prepare.c:314 +#, c-format +msgid "wrong number of parameters for prepared statement \"%s\"" +msgstr "неверное число параметров для подготовленного оператора \"%s\"" + +#: commands/prepare.c:316 +#, c-format +msgid "Expected %d parameters but got %d." +msgstr "Ожидалось параметров: %d, получено: %d." + +#: commands/prepare.c:345 +msgid "cannot use subquery in EXECUTE parameter" +msgstr "в качестве параметра EXECUTE нельзя использовать подзапрос" + +#: 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 нельзя использовать оконную функцию" + +#: 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:370 rewrite/rewriteHandler.c:1035 catalog/heap.c:2446 +#: parser/parse_target.c:489 parser/parse_target.c:735 +#: parser/parse_target.c:745 parser/parse_node.c:397 +msgid "You will need to rewrite or cast the expression." +msgstr "Перепишите выражение или преобразуйте его тип." + +# [SM]: TO REVIEW +#: commands/prepare.c:467 +#, c-format +msgid "prepared statement \"%s\" already exists" +msgstr "подготовленный оператор \"%s\" уже существует" + +# [SM]: TO REVIEW +#: commands/prepare.c:525 +#, c-format +msgid "prepared statement \"%s\" does not exist" +msgstr "подготовленный оператор \"%s\" не существует" + +#: commands/tablecmds.c:201 +#, c-format +msgid "table \"%s\" does not exist" +msgstr "таблица \"%s\" не существует" + +#: commands/tablecmds.c:202 +#, c-format +msgid "table \"%s\" does not exist, skipping" +msgstr "таблица \"%s\" не существует, пропускается" + +#: commands/tablecmds.c:204 +msgid "Use DROP TABLE to remove a table." +msgstr "Выполните DROP TABLE для удаления таблицы." + +#: commands/tablecmds.c:207 +#, c-format +msgid "sequence \"%s\" does not exist" +msgstr "последовательность \"%s\" не существует" + +#: commands/tablecmds.c:208 +#, c-format +msgid "sequence \"%s\" does not exist, skipping" +msgstr "последовательность \"%s\" не существует, пропускается" + +#: commands/tablecmds.c:210 +msgid "Use DROP SEQUENCE to remove a sequence." +msgstr "Выполните DROP SEQUENCE для удаления последовательности." + +#: commands/tablecmds.c:213 +#, c-format +msgid "view \"%s\" does not exist" +msgstr "представление \"%s\" не существует" + +#: commands/tablecmds.c:214 +#, c-format +msgid "view \"%s\" does not exist, skipping" +msgstr "представление \"%s\" не существует, пропускается" + +#: commands/tablecmds.c:215 commands/tablecmds.c:2181 +#: commands/tablecmds.c:2438 commands/tablecmds.c:3773 +#: commands/tablecmds.c:9040 commands/view.c:181 catalog/objectaddress.c:412 +#, c-format +msgid "\"%s\" is not a view" +msgstr "\"%s\" - это не представление" + +#: commands/tablecmds.c:216 +msgid "Use DROP VIEW to remove a view." +msgstr "Выполните DROP VIEW для удаления представления." + +#: commands/tablecmds.c:219 parser/parse_utilcmd.c:1505 +#, c-format +msgid "index \"%s\" does not exist" +msgstr "индекс \"%s\" не существует" + +#: commands/tablecmds.c:220 +#, c-format +msgid "index \"%s\" does not exist, skipping" +msgstr "индекс \"%s\" не существует, пропускается" + +#: commands/tablecmds.c:222 +msgid "Use DROP INDEX to remove an index." +msgstr "Выполните DROP INDEX для удаления индекса." + +#: commands/tablecmds.c:226 commands/typecmds.c:666 +#, c-format +msgid "type \"%s\" does not exist, skipping" +msgstr "тип \"%s\" не существует, пропускается" + +#: commands/tablecmds.c:227 +#, c-format +msgid "\"%s\" is not a type" +msgstr "\"%s\" - это не тип" + +#: commands/tablecmds.c:228 +msgid "Use DROP TYPE to remove a type." +msgstr "Выполните DROP TYPE для удаления типа." + +#: commands/tablecmds.c:231 commands/tablecmds.c:8952 +#, c-format +msgid "foreign table \"%s\" does not exist" +msgstr "сторонняя таблица \"%s\" не существует" + +#: commands/tablecmds.c:232 +#, c-format +msgid "foreign table \"%s\" does not exist, skipping" +msgstr "сторонняя таблица \"%s\" не существует, пропускается" + +#: commands/tablecmds.c:233 commands/tablecmds.c:2187 +#: commands/tablecmds.c:2446 commands/tablecmds.c:3776 +#: commands/tablecmds.c:9048 catalog/objectaddress.c:419 +#, c-format +msgid "\"%s\" is not a foreign table" +msgstr "\"%s\" - это не сторонняя таблица" + +#: commands/tablecmds.c:234 +msgid "Use DROP FOREIGN TABLE to remove a foreign table." +msgstr "Выполните DROP FOREIGN TABLE для удаления сторонней таблицы." + +#: commands/tablecmds.c:429 executor/execMain.c:2411 +msgid "ON COMMIT can only be used on temporary tables" +msgstr "ON COMMIT можно использовать только для временных таблиц" + +#: commands/tablecmds.c:433 +msgid "constraints on foreign tables are not supported" +msgstr "ограничения для внешних таблиц не поддерживаются" + +#: commands/tablecmds.c:451 executor/execMain.c:2429 +msgid "cannot create temporary table within security-restricted operation" +msgstr "" +"в рамках операции с ограничениями по безопасности нельзя создать временную " +"таблицу" + +#: commands/tablecmds.c:483 commands/tablecmds.c:7932 commands/indexcmds.c:263 +#: executor/execMain.c:2462 +msgid "only shared relations can be placed in pg_global tablespace" +msgstr "" +"в табличное пространство pg_global можно поместить только разделяемые таблицы" + +#: commands/tablecmds.c:549 commands/tablecmds.c:4284 +msgid "default values on foreign tables are not supported" +msgstr "значения полей по умолчанию для сторонних таблиц не поддерживаются" + +#: commands/tablecmds.c:929 +#, c-format +msgid "truncate cascades to table \"%s\"" +msgstr "удаление распространяется на таблицу %s" + +#: commands/tablecmds.c:1160 +msgid "cannot truncate temporary tables of other sessions" +msgstr "временные таблицы других сеансов нельзя очистить" + +#: commands/tablecmds.c:1276 commands/tablecmds.c:1708 +#: commands/tablecmds.c:4209 catalog/heap.c:389 +#, c-format +msgid "tables can have at most %d columns" +msgstr "максимальное число колонок в таблице: %d" + +#: commands/tablecmds.c:1327 commands/copy.c:3799 commands/trigger.c:601 +#: parser/parse_target.c:911 parser/parse_target.c:922 +#, c-format +msgid "column \"%s\" specified more than once" +msgstr "колонка \"%s\" указана неоднократно" + +#: commands/tablecmds.c:1362 parser/parse_utilcmd.c:623 +#: parser/parse_utilcmd.c:1717 +#, c-format +msgid "inherited relation \"%s\" is not a table" +msgstr "наследованное отношение \"%s\" не является таблицей" + +#: commands/tablecmds.c:1369 commands/tablecmds.c:8164 +#, c-format +msgid "cannot inherit from temporary relation \"%s\"" +msgstr "временное отношение \"%s\" не может наследоваться" + +#: commands/tablecmds.c:1377 commands/tablecmds.c:8172 +msgid "cannot inherit from temporary relation of another session" +msgstr "наследование от временного отношения другого сеанса невозможно" + +#: commands/tablecmds.c:1393 commands/tablecmds.c:8206 +#, c-format +msgid "relation \"%s\" would be inherited from more than once" +msgstr "отношение \"%s\" наследуется неоднократно" + +#: commands/tablecmds.c:1441 +#, c-format +msgid "merging multiple inherited definitions of column \"%s\"" +msgstr "слияние нескольких наследованных определений колонки \"%s\"" + +#: commands/tablecmds.c:1449 +#, c-format +msgid "inherited column \"%s\" has a type conflict" +msgstr "конфликт типов в наследованной колонке \"%s\"" + +#: commands/tablecmds.c:1451 commands/tablecmds.c:1472 +#: commands/tablecmds.c:1653 commands/tablecmds.c:1675 +#: parser/parse_coerce.c:1540 parser/parse_coerce.c:1560 +#: parser/parse_coerce.c:1605 parser/parse_param.c:217 +#, c-format +msgid "%s versus %s" +msgstr "%s и %s" + +#: commands/tablecmds.c:1458 +#, c-format +msgid "inherited column \"%s\" has a collation conflict" +msgstr "конфликт правил сортировки в наследованной колонке \"%s\"" + +#: commands/tablecmds.c:1460 commands/tablecmds.c:1663 +#: commands/tablecmds.c:4153 +#, c-format +msgid "\"%s\" versus \"%s\"" +msgstr "\"%s\" и \"%s\"" + +#: commands/tablecmds.c:1470 +#, c-format +msgid "inherited column \"%s\" has a storage parameter conflict" +msgstr "конфликт параметров хранения в наследованной колонке \"%s\"" + +#: commands/tablecmds.c:1578 parser/parse_utilcmd.c:776 +#: parser/parse_utilcmd.c:1154 parser/parse_utilcmd.c:1230 +msgid "cannot convert whole-row table reference" +msgstr "преобразовать ссылку на тип всей строки таблицы нельзя" + +#: commands/tablecmds.c:1579 parser/parse_utilcmd.c:777 +#, c-format +msgid "Constraint \"%s\" contains a whole-row reference to table \"%s\"." +msgstr "Ограничение \"%s\" ссылается на тип всей строки в таблице \"%s\"." + +#: commands/tablecmds.c:1643 +#, c-format +msgid "merging column \"%s\" with inherited definition" +msgstr "слияние колонки \"%s\" с наследованным определением" + +#: commands/tablecmds.c:1651 +#, c-format +msgid "column \"%s\" has a type conflict" +msgstr "конфликт типов в колонке \"%s\"" + +#: commands/tablecmds.c:1661 +#, c-format +msgid "column \"%s\" has a collation conflict" +msgstr "конфликт правил сортировки в колонке \"%s\"" + +#: commands/tablecmds.c:1673 +#, c-format +msgid "column \"%s\" has a storage parameter conflict" +msgstr "конфликт параметров хранения в колонке \"%s\"" + +#: commands/tablecmds.c:1725 +#, c-format +msgid "column \"%s\" inherits conflicting default values" +msgstr "колонка \"%s\" наследует конфликтующие значения по умолчанию" + +#: commands/tablecmds.c:1727 +msgid "To resolve the conflict, specify a default explicitly." +msgstr "Для решения конфликта укажите желаемое значение по умолчанию." + +#: commands/tablecmds.c:1774 +#, c-format +msgid "" +"check constraint name \"%s\" appears multiple times but with different " +"expressions" +msgstr "" +"имя ограничения-проверки \"%s\" фигурирует несколько раз, но с разными " +"выражениями" + +#: commands/tablecmds.c:1969 +msgid "cannot rename column of typed table" +msgstr "переименовать колонку типизированной таблицы нельзя" + +#: commands/tablecmds.c:1986 +#, c-format +msgid "\"%s\" is not a table, view, composite type, index or foreign table" +msgstr "" +"\"%s\" - это не таблица, представление, составной тип или сторонняя таблица" + +#: commands/tablecmds.c:2052 +#, c-format +msgid "inherited column \"%s\" must be renamed in child tables too" +msgstr "" +"наследованная колонка \"%s\" должна быть также переименована в дочерних " +"таблицах" + +#: commands/tablecmds.c:2084 +#, c-format +msgid "cannot rename system column \"%s\"" +msgstr "нельзя переименовать системную колонку \"%s\"" + +#: commands/tablecmds.c:2099 +#, c-format +msgid "cannot rename inherited column \"%s\"" +msgstr "нельзя переименовать наследованную колонку \"%s\"" + +#: commands/tablecmds.c:2110 commands/tablecmds.c:4197 +#, c-format +msgid "column \"%s\" of relation \"%s\" already exists" +msgstr "колонка \"%s\" отношения \"%s\" уже существует" + +#: commands/tablecmds.c:2199 commands/tablecmds.c:7415 +#: commands/tablecmds.c:9084 +msgid "Use ALTER TYPE instead." +msgstr "Используйте ALTER TYPE." + +#: commands/tablecmds.c:2246 catalog/index.c:773 catalog/heap.c:1013 +#, c-format +msgid "relation \"%s\" already exists" +msgstr "отношение \"%s\" уже существует" + +#. translator: first %s is a SQL command, eg ALTER TABLE +#: commands/tablecmds.c:2322 +#, 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:2331 +#, c-format +msgid "cannot %s \"%s\" because it has pending trigger events" +msgstr "" +"нельзя выполнить %s \"%s\", так как с этим объектом связаны отложенные " +"события триггеров" + +#: commands/tablecmds.c:2430 +#, c-format +msgid "\"%s\" is not a composite type" +msgstr "\"%s\" - это не составной тип" + +#: commands/tablecmds.c:3260 +#, c-format +msgid "cannot rewrite system relation \"%s\"" +msgstr "перезаписать системное отношение \"%s\" нельзя" + +#: commands/tablecmds.c:3270 +msgid "cannot rewrite temporary tables of other sessions" +msgstr "перезаписывать временные таблицы других сеансов нельзя" + +#: commands/tablecmds.c:3495 +#, c-format +msgid "rewriting table \"%s\"" +msgstr "перезапись таблицы \"%s\"" + +#: commands/tablecmds.c:3499 +#, c-format +msgid "verifying table \"%s\"" +msgstr "проверка таблицы \"%s\"" + +#: commands/tablecmds.c:3606 +#, c-format +msgid "column \"%s\" contains null values" +msgstr "колонка \"%s\" содержит значения NULL" + +#: commands/tablecmds.c:3620 +#, c-format +msgid "check constraint \"%s\" is violated by some row" +msgstr "ограничение-проверку \"%s\" нарушает некоторая строка" + +#: commands/tablecmds.c:3761 commands/tablecmds.c:4713 +#, c-format +msgid "\"%s\" is not a table or index" +msgstr "\"%s\" - это не таблица и не индекс" + +#: commands/tablecmds.c:3764 commands/trigger.c:186 commands/trigger.c:1099 +#: rewrite/rewriteDefine.c:257 +#, c-format +msgid "\"%s\" is not a table or view" +msgstr "\"%s\" - это не таблица и не представление" + +#: commands/tablecmds.c:3767 +#, c-format +msgid "\"%s\" is not a table or foreign table" +msgstr "\"%s\" - это не таблица и не сторонняя таблица" + +#: commands/tablecmds.c:3770 +#, c-format +msgid "\"%s\" is not a table, composite type, or foreign table" +msgstr "\"%s\" - это не таблица, составной тип или сторонняя таблица" + +#: commands/tablecmds.c:3780 +#, c-format +msgid "\"%s\" is of the wrong type" +msgstr "неправильный тип \"%s\"" + +#: commands/tablecmds.c:3929 commands/tablecmds.c:3936 +#, c-format +msgid "cannot alter type \"%s\" because column \"%s.%s\" uses it" +msgstr "" +"изменить тип \"%s\" нельзя, так как он задействован в колонке \"%s.%s\"" + +#: commands/tablecmds.c:3943 +#, c-format +msgid "" +"cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type" +msgstr "" +"изменить стороннюю таблицу \"%s\" нельзя, так как колонка \"%s.%s\" " +"задействует тип её строки" + +#: commands/tablecmds.c:3950 +#, c-format +msgid "cannot alter table \"%s\" because column \"%s.%s\" uses its row type" +msgstr "" +"изменить таблицу \"%s\" нельзя, так как колонка \"%s.%s\" задействует тип её " +"строки" + +#: commands/tablecmds.c:4012 +#, c-format +msgid "cannot alter type \"%s\" because it is the type of a typed table" +msgstr "изменить тип \"%s\", так как это тип типизированной таблицы" + +#: commands/tablecmds.c:4014 +msgid "Use ALTER ... CASCADE to alter the typed tables too." +msgstr "" +"Чтобы изменить также типизированные таблицы, выполните ALTER ... CASCADE." + +#: commands/tablecmds.c:4058 +#, c-format +msgid "type %s is not a composite type" +msgstr "тип %s не является составным" + +#: commands/tablecmds.c:4084 +msgid "cannot add column to typed table" +msgstr "добавить колонку в типизированную таблицу нельзя" + +#: commands/tablecmds.c:4145 commands/tablecmds.c:8360 +#, c-format +msgid "child table \"%s\" has different type for column \"%s\"" +msgstr "дочерняя таблица \"%s\" имеет другой тип для колонки \"%s\"" + +#: commands/tablecmds.c:4151 commands/tablecmds.c:8367 +#, c-format +msgid "child table \"%s\" has different collation for column \"%s\"" +msgstr "" +"дочерняя таблица \"%s\" имеет другое правило сортировки для колонки \"%s\"" + +#: commands/tablecmds.c:4161 +#, c-format +msgid "child table \"%s\" has a conflicting \"%s\" column" +msgstr "дочерняя таблица \"%s\" содержит конфликтующую колонку \"%s\"" + +#: commands/tablecmds.c:4173 +#, c-format +msgid "merging definition of column \"%s\" for child \"%s\"" +msgstr "объединение определений колонки \"%s\" для потомка \"%s\"" + +#: commands/tablecmds.c:4403 +msgid "column must be added to child tables too" +msgstr "колонка также должна быть добавлена к дочерним таблицам" + +#: commands/tablecmds.c:4533 commands/tablecmds.c:4625 +#: commands/tablecmds.c:4670 commands/tablecmds.c:4766 +#: commands/tablecmds.c:4810 commands/tablecmds.c:4889 +#: commands/tablecmds.c:6628 +#, c-format +msgid "cannot alter system column \"%s\"" +msgstr "системную колонку \"%s\" нельзя изменить" + +#: commands/tablecmds.c:4569 +#, c-format +msgid "column \"%s\" is in a primary key" +msgstr "колонка \"%s\" входит в первичный ключ" + +#: commands/tablecmds.c:4740 +#, c-format +msgid "statistics target %d is too low" +msgstr "целевое значение статистики слишком мало (%d)" + +#: commands/tablecmds.c:4748 +#, c-format +msgid "lowering statistics target to %d" +msgstr "целевое значение статистики снижается до %d" + +#: commands/tablecmds.c:4870 +#, c-format +msgid "invalid storage type \"%s\"" +msgstr "неверный тип хранилища \"%s\"" + +#: commands/tablecmds.c:4901 +#, c-format +msgid "column data type %s can only have storage PLAIN" +msgstr "тип данных колонки %s совместим только с хранилищем PLAIN" + +#: commands/tablecmds.c:4931 +msgid "cannot drop column from typed table" +msgstr "нельзя удалить колонку в типизированной таблице" + +#: commands/tablecmds.c:4972 +#, c-format +msgid "column \"%s\" of relation \"%s\" does not exist, skipping" +msgstr "колонка \"%s\" в таблице\"%s\" не существует, пропускается" + +#: commands/tablecmds.c:4985 +#, c-format +msgid "cannot drop system column \"%s\"" +msgstr "нельзя удалить системную колонку \"%s\"" + +#: commands/tablecmds.c:4992 +#, c-format +msgid "cannot drop inherited column \"%s\"" +msgstr "нельзя удалить наследованную колонку \"%s\"" + +#: commands/tablecmds.c:5218 +#, 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:5288 catalog/pg_constraint.c:645 catalog/heap.c:2296 +#, c-format +msgid "constraint \"%s\" for relation \"%s\" already exists" +msgstr "ограничение \"%s\" для отношения \"%s\" уже существует" + +#: commands/tablecmds.c:5412 +msgid "constraint must be added to child tables too" +msgstr "ограничение также должно быть добавлено к дочерним таблицам" + +#: commands/tablecmds.c:5477 commands/sequence.c:1425 +#, c-format +msgid "referenced relation \"%s\" is not a table" +msgstr "указанный объект \"%s\" не является таблицей" + +#: commands/tablecmds.c:5500 +msgid "constraints on permanent tables may reference only permanent tables" +msgstr "" +"ограничения в постоянных таблицах могут ссылаться только на постоянные " +"таблицы" + +#: commands/tablecmds.c:5507 +msgid "" +"constraints on unlogged tables may reference only permanent or unlogged " +"tables" +msgstr "" +"ограничения в нежурналируемых таблицах могут ссылаться только на постоянные " +"или нежурналируемые таблицы" + +#: commands/tablecmds.c:5513 +msgid "constraints on temporary tables may reference only temporary tables" +msgstr "" +"ограничения во временных таблицах могут ссылаться только на временные таблицы" + +#: commands/tablecmds.c:5517 +msgid "" +"constraints on temporary tables must involve temporary tables of this session" +msgstr "" +"ограничения во временных таблицах должны ссылаться только на временные " +"таблицы текущего сеанса" + +#: commands/tablecmds.c:5578 +msgid "number of referencing and referenced columns for foreign key disagree" +msgstr "число колонок в источнике и назначении внешнего ключа не совпадает" + +#: commands/tablecmds.c:5667 +#, c-format +msgid "foreign key constraint \"%s\" cannot be implemented" +msgstr "ограничение внешнего ключа \"%s\" нельзя реализовать" + +#: commands/tablecmds.c:5670 +#, c-format +msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s." +msgstr "Колонки ключа \"%s\" и \"%s\" имеют несовместимые типы: %s и %s." + +#: commands/tablecmds.c:5783 +#, c-format +msgid "foreign key constraint \"%s\" of relation \"%s\" does not exist" +msgstr "ограничение внешнего ключа \"%s\" в таблице\"%s\" не существует" + +#: commands/tablecmds.c:5846 +#, c-format +msgid "column \"%s\" referenced in foreign key constraint does not exist" +msgstr "колонка \"%s\", указанная в ограничении внешнего ключа, не существует" + +#: commands/tablecmds.c:5851 +#, c-format +msgid "cannot have more than %d keys in a foreign key" +msgstr "во внешнем ключе не может быть больше %d колонок" + +#: commands/tablecmds.c:5916 +#, c-format +msgid "cannot use a deferrable primary key for referenced table \"%s\"" +msgstr "" +"использовать откладываемый первичный ключ в целевой внешней таблице \"%s\" " +"нельзя" + +#: commands/tablecmds.c:5933 +#, c-format +msgid "there is no primary key for referenced table \"%s\"" +msgstr "в целевой внешней таблице \"%s\" нет первичного ключа" + +#: commands/tablecmds.c:6085 +#, c-format +msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" +msgstr "" +"использовать откладываемое ограничение уникальности в целевой внешней " +"таблице \"%s\" нельзя" + +#: commands/tablecmds.c:6090 +#, c-format +msgid "" +"there is no unique constraint matching given keys for referenced table \"%s\"" +msgstr "" +"в целевой внешней таблице \"%s\" нет ограничения уникальности, " +"соответствующего данным ключам" + +#: commands/tablecmds.c:6141 +#, c-format +msgid "validating foreign key constraint \"%s\"" +msgstr "проверка ограничения внешнего ключа \"%s\"" + +#: commands/tablecmds.c:6437 +#, c-format +msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" +msgstr "удалить наследованное ограничение \"%s\" таблицы \"%s\" нельзя" + +#: commands/tablecmds.c:6464 commands/tablecmds.c:6577 +#, c-format +msgid "constraint \"%s\" of relation \"%s\" does not exist" +msgstr "ограничение \"%s\" в таблице \"%s\" не существует" + +#: commands/tablecmds.c:6470 +#, c-format +msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" +msgstr "ограничение \"%s\" в таблице \"%s\" не существует, пропускается" + +#: commands/tablecmds.c:6612 +msgid "cannot alter column type of typed table" +msgstr "изменить тип колонки в типизированной таблице нельзя" + +#: commands/tablecmds.c:6635 +#, c-format +msgid "cannot alter inherited column \"%s\"" +msgstr "изменить наследованную колонку \"%s\" нельзя" + +#: commands/tablecmds.c:6677 +msgid "transform expression must not return a set" +msgstr "выражение преобразования не должно возвращать множество" + +#: commands/tablecmds.c:6683 +msgid "cannot use subquery in transform expression" +msgstr "нельзя использовать подзапрос в выражении преобразования" + +#: commands/tablecmds.c:6687 +msgid "cannot use aggregate function in transform expression" +msgstr "нельзя использовать агрегатную функцию в выражении преобразования" + +#: commands/tablecmds.c:6691 +msgid "cannot use window function in transform expression" +msgstr "нельзя использовать оконную функцию в выражении преобразования" + +#: commands/tablecmds.c:6710 +#, c-format +msgid "column \"%s\" cannot be cast to type %s" +msgstr "колонку \"%s\" нельзя привести к типу %s" + +#: commands/tablecmds.c:6757 +#, c-format +msgid "type of inherited column \"%s\" must be changed in child tables too" +msgstr "" +"тип наследованной колонки \"%s\" должен быть изменён и в дочерних таблицах" + +#: commands/tablecmds.c:6838 +#, c-format +msgid "cannot alter type of column \"%s\" twice" +msgstr "нельзя изменить тип колонки \"%s\" дважды" + +#: commands/tablecmds.c:6874 +#, c-format +msgid "default for column \"%s\" cannot be cast to type %s" +msgstr "значение по умолчанию для колонки \"%s\" нельзя привести к типу %s" + +#: commands/tablecmds.c:7000 +msgid "cannot alter type of a column used by a view or rule" +msgstr "" +"изменить тип колонки, задействованной в представлении или правиле, нельзя" + +#: commands/tablecmds.c:7001 commands/tablecmds.c:7020 +#, c-format +msgid "%s depends on column \"%s\"" +msgstr "%s зависит от колонки \"%s\"" + +#: commands/tablecmds.c:7019 +msgid "cannot alter type of a column used in a trigger definition" +msgstr "изменить тип колонки, задействованной в определении триггера, нельзя" + +#: commands/tablecmds.c:7383 +#, c-format +msgid "cannot change owner of index \"%s\"" +msgstr "сменить владельца индекса \"%s\" нельзя" + +#: commands/tablecmds.c:7385 +msgid "Change the ownership of the index's table, instead." +msgstr "Однако возможно сменить владельца таблицы, содержащей этот индекс." + +#: commands/tablecmds.c:7401 +#, c-format +msgid "cannot change owner of sequence \"%s\"" +msgstr "сменить владельца последовательности \"%s\" нельзя" + +#: commands/tablecmds.c:7403 commands/tablecmds.c:9074 +#, c-format +msgid "Sequence \"%s\" is linked to table \"%s\"." +msgstr "Последовательность \"%s\" связана с таблицей \"%s\"." + +#: commands/tablecmds.c:7424 commands/tablecmds.c:9092 +#, c-format +msgid "\"%s\" is not a table, view, sequence, or foreign table" +msgstr "" +"\"%s\" - это не таблица, TOAST-таблица, индекс, представление или " +"последовательность" + +#: commands/tablecmds.c:7709 commands/cluster.c:178 +#, c-format +msgid "index \"%s\" for table \"%s\" does not exist" +msgstr "индекс \"%s\" для таблицы \"%s\" не существует" + +#: commands/tablecmds.c:7752 +msgid "cannot have multiple SET TABLESPACE subcommands" +msgstr "в одной инструкции не может быть несколько подкомманд SET TABLESPACE" + +#: commands/tablecmds.c:7804 +#, c-format +msgid "\"%s\" is not a table, index, or TOAST table" +msgstr "\"%s\" - это не таблица, индекс или TOAST-таблица" + +#: commands/tablecmds.c:7925 +#, c-format +msgid "cannot move system relation \"%s\"" +msgstr "переместить системную таблицу \"%s\" нельзя" + +#: commands/tablecmds.c:7941 +msgid "cannot move temporary tables of other sessions" +msgstr "перемещать временные таблицы других сеансов нельзя" + +#: commands/tablecmds.c:8133 +msgid "cannot change inheritance of typed table" +msgstr "изменить наследование типизированной таблицы нельзя" + +#: commands/tablecmds.c:8179 +msgid "cannot inherit to temporary relation of another session" +msgstr "наследование для временного отношения другого сеанса невозможно" + +#: commands/tablecmds.c:8233 +msgid "circular inheritance not allowed" +msgstr "циклическое наследование недопустимо" + +#: commands/tablecmds.c:8234 +#, c-format +msgid "\"%s\" is already a child of \"%s\"." +msgstr "\"%s\" уже является потомком \"%s\"." + +#: commands/tablecmds.c:8242 +#, c-format +msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs" +msgstr "таблица \"%s\" без OID не может наследоваться от таблицы \"%s\" с OID" + +#: commands/tablecmds.c:8378 +#, c-format +msgid "column \"%s\" in child table must be marked NOT NULL" +msgstr "колонка \"%s\" в дочерней таблице должна быть помечена как NOT NULL" + +#: commands/tablecmds.c:8394 +#, c-format +msgid "child table is missing column \"%s\"" +msgstr "в дочерней таблице не хватает колонки \"%s\"" + +#: commands/tablecmds.c:8473 +#, c-format +msgid "child table \"%s\" has different definition for check constraint \"%s\"" +msgstr "" +"дочерняя таблица \"%s\" содержит другое определение ограничения-проверки \"%s" +"\"" + +#: commands/tablecmds.c:8497 +#, c-format +msgid "child table is missing constraint \"%s\"" +msgstr "в дочерней таблице не хватает ограничения \"%s\"" + +#: commands/tablecmds.c:8577 +#, c-format +msgid "relation \"%s\" is not a parent of relation \"%s\"" +msgstr "отношение \"%s\" не является предком отношения \"%s\"" + +#: commands/tablecmds.c:8794 +msgid "typed tables cannot inherit" +msgstr "типизированные таблицы не могут наследоваться" + +#: commands/tablecmds.c:8825 +#, c-format +msgid "table is missing column \"%s\"" +msgstr "в таблице не хватает колонки \"%s\"" + +#: commands/tablecmds.c:8835 +#, c-format +msgid "table has column \"%s\" where type requires \"%s\"" +msgstr "таблица содержит колонку \"%s\", тогда как тип требует \"%s\"" + +#: commands/tablecmds.c:8844 +#, c-format +msgid "table \"%s\" has different type for column \"%s\"" +msgstr "таблица \"%s\" содержит колонку \"%s\" другого типа" + +#: commands/tablecmds.c:8857 +#, c-format +msgid "table has extra column \"%s\"" +msgstr "таблица содержит лишнюю колонку \"%s\"" + +#: commands/tablecmds.c:8904 +#, c-format +msgid "\"%s\" is not a typed table" +msgstr "\"%s\" - это не типизированная таблица" + +#: commands/tablecmds.c:9073 +msgid "cannot move an owned sequence into another schema" +msgstr "переместить последовательность с владельцем в другую схему нельзя" + +#: commands/tablecmds.c:9180 +#, c-format +msgid "relation \"%s\" already exists in schema \"%s\"" +msgstr "отношение \"%s\" уже существует в схеме \"%s\"" + +#: commands/proclang.c:93 +msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters" +msgstr "" +"вместо параметров CREATE LANGUAGE используется информация pg_pltemplate" + +#: commands/proclang.c:103 +#, c-format +msgid "must be superuser to create procedural language \"%s\"" +msgstr "для создания процедурного языка \"%s\" нужно быть суперпользователем" + +#: 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." + +#: commands/proclang.c:253 +msgid "must be superuser to create custom procedural language" +msgstr "" +"для создания дополнительного процедурного языка нужно быть суперпользователем" + +#: 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:357 commands/proclang.c:606 +#, c-format +msgid "language \"%s\" already exists" +msgstr "язык \"%s\" уже существует" + +#: commands/proclang.c:537 +#, c-format +msgid "language \"%s\" does not exist, skipping" +msgstr "язык \"%s\" не существует, пропускается" + +#: commands/proclang.c:600 commands/proclang.c:640 commands/proclang.c:754 +#: commands/functioncmds.c:839 commands/functioncmds.c:2019 +#, c-format +msgid "language \"%s\" does not exist" +msgstr "язык \"%s\" не существует" + +#: commands/analyze.c:153 +#, c-format +msgid "skipping analyze of \"%s\" --- lock not available" +msgstr "анализ \"%s\" пропускается --- блокировка недоступна" + +#: commands/analyze.c:170 +#, c-format +msgid "skipping \"%s\" --- only superuser can analyze it" +msgstr "" +"\"%s\" пропускается --- только суперпользователь может анализировать этот " +"объект" + +#: commands/analyze.c:174 +#, c-format +msgid "skipping \"%s\" --- only superuser or database owner can analyze it" +msgstr "" +"\"%s\" пропускается --- только суперпользователь или владелец БД может " +"анализировать этот объект" + +#: commands/analyze.c:178 +#, c-format +msgid "skipping \"%s\" --- only table or database owner can analyze it" +msgstr "" +"\"%s\" пропускается --- только владелец таблицы или БД может анализировать " +"этот объект" + +#: commands/analyze.c:194 +#, c-format +msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables" +msgstr "" +"\"%s\" пропускается --- анализировать не таблицы или специальные системные " +"таблицы нельзя" + +#: commands/analyze.c:285 +#, c-format +msgid "analyzing \"%s.%s\" inheritance tree" +msgstr "анализируется дерево наследования \"%s.%s\"" + +#: commands/analyze.c:290 +#, c-format +msgid "analyzing \"%s.%s\"" +msgstr "анализируется \"%s.%s\"" + +#: commands/analyze.c:598 +#, c-format +msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s" +msgstr "автоматический анализ таблицы \"%s.%s.%s\"; нагрузка системы: %s" + +#: commands/analyze.c:1238 +#, c-format +msgid "" +"\"%s\": scanned %d of %u pages, containing %.0f live rows and %.0f dead " +"rows; %d rows in sample, %.0f estimated total rows" +msgstr "" +"\"%s\": просканировано страниц: %d из %u, они содержат \"живых\" строк: " +"%.0f, \"мёртвых\" строк: %.0f; строк в выборке: %d, примерное общее число " +"строк: %.0f" + +#: commands/analyze.c:1499 executor/execQual.c:2827 +msgid "could not convert row type" +msgstr "не удалось преобразовать тип строки" + +#: commands/conversioncmds.c:71 +#, c-format +msgid "source encoding \"%s\" does not exist" +msgstr "исходная кодировка \"%s\" не существует" + +#: commands/conversioncmds.c:78 +#, c-format +msgid "destination encoding \"%s\" does not exist" +msgstr "целевая кодировка \"%s\" не существует" + +#: commands/conversioncmds.c:92 +#, c-format +msgid "encoding conversion function %s must return type \"void\"" +msgstr "функция преобразования кодировки %s должна возвращать void" + +#: commands/conversioncmds.c:152 +#, c-format +msgid "conversion \"%s\" does not exist, skipping" +msgstr "преобразование \"%s\" не существует, пропускается" + +#: commands/conversioncmds.c:211 +#, c-format +msgid "conversion \"%s\" already exists in schema \"%s\"" +msgstr "преобразование \"%s\" уже существует в схеме \"%s\"" + +#: commands/sequence.c:127 +msgid "unlogged sequences are not supported" +msgstr "нежурналируемые последовательности не поддерживаются" + +#: commands/sequence.c:537 commands/sequence.c:751 commands/sequence.c:793 +#: commands/sequence.c:830 commands/sequence.c:1495 catalog/aclchk.c:3071 +#, c-format +msgid "permission denied for sequence %s" +msgstr "нет доступа к последовательности %s" + +#: commands/sequence.c:620 +#, c-format +msgid "nextval: reached maximum value of sequence \"%s\" (%s)" +msgstr "функция nextval достигла максимума для последовательности \"%s\" (%s)" + +#: commands/sequence.c:643 +#, c-format +msgid "nextval: reached minimum value of sequence \"%s\" (%s)" +msgstr "функция nextval достигла минимума для последовательности \"%s\" (%s)" + +#: commands/sequence.c:757 +#, c-format +msgid "currval of sequence \"%s\" is not yet defined in this session" +msgstr "" +"текущее значение (currval) для последовательности \"%s\" ещё не определено в " +"этом сеансе" + +#: commands/sequence.c:776 commands/sequence.c:782 +msgid "lastval is not yet defined in this session" +msgstr "последнее значение (lastval) ещё не определено в этом сеансе" + +#: commands/sequence.c:851 +#, c-format +msgid "setval: value %s is out of bounds for sequence \"%s\" (%s..%s)" +msgstr "" +"setval передано значение %s вне пределов последовательности \"%s\" (%s..%s)" + +#: commands/sequence.c:1142 commands/sequence.c:1150 commands/sequence.c:1158 +#: commands/sequence.c:1166 commands/sequence.c:1174 commands/sequence.c:1182 +#: commands/sequence.c:1190 commands/sequence.c:1198 +#: 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/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:147 commands/dbcommands.c:155 +#: commands/dbcommands.c:163 commands/dbcommands.c:171 +#: commands/dbcommands.c:179 commands/dbcommands.c:187 +#: commands/dbcommands.c:195 commands/dbcommands.c:1342 +#: commands/dbcommands.c:1350 commands/extension.c:1250 +#: commands/extension.c:1258 commands/extension.c:1266 +#: commands/extension.c:2731 commands/collationcmds.c:93 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/foreigncmds.c:468 commands/foreigncmds.c:477 +#: commands/typecmds.c:282 catalog/aclchk.c:833 catalog/aclchk.c:841 +msgid "conflicting or redundant options" +msgstr "конфликтующие или избыточные параметры" + +#: commands/sequence.c:1220 +msgid "INCREMENT must not be zero" +msgstr "INCREMENT не может быть нулевым" + +#: commands/sequence.c:1276 +#, c-format +msgid "MINVALUE (%s) must be less than MAXVALUE (%s)" +msgstr "MINVALUE (%s) должно быть меньше MAXVALUE (%s)" + +#: commands/sequence.c:1301 +#, c-format +msgid "START value (%s) cannot be less than MINVALUE (%s)" +msgstr "значение START (%s) не может быть меньше MINVALUE (%s)" + +#: commands/sequence.c:1313 +#, c-format +msgid "START value (%s) cannot be greater than MAXVALUE (%s)" +msgstr "значение START (%s) не может быть больше MAXVALUE (%s)" + +#: commands/sequence.c:1343 +#, c-format +msgid "RESTART value (%s) cannot be less than MINVALUE (%s)" +msgstr "значение RESTART (%s) не может быть меньше MINVALUE (%s)" + +#: commands/sequence.c:1355 +#, c-format +msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)" +msgstr "значение RESTART (%s) не может быть больше MAXVALUE (%s)" + +#: commands/sequence.c:1370 +#, c-format +msgid "CACHE (%s) must be greater than zero" +msgstr "значение CACHE (%s) должно быть больше нуля" + +#: commands/sequence.c:1402 +msgid "invalid OWNED BY option" +msgstr "неверное указание OWNED BY" + +#: commands/sequence.c:1403 +msgid "Specify OWNED BY table.column or OWNED BY NONE." +msgstr "Укажите OWNED BY таблица.колонка или OWNED BY NONE." + +#: commands/sequence.c:1432 +msgid "sequence must have same owner as table it is linked to" +msgstr "" +"последовательность должна иметь того же владельца, что и таблица, с которой " +"она связана" + +#: commands/sequence.c:1436 +msgid "sequence must be in same schema as table it is linked to" +msgstr "" +"последовательность должна быть в той же схеме, что и таблица, с которой она " +"связана" + +#: commands/functioncmds.c:100 +#, c-format +msgid "SQL function cannot return shell type %s" +msgstr "SQL-функция не может возвращать тип-пустышку %s" + +#: commands/functioncmds.c:105 +#, c-format +msgid "return type %s is only a shell" +msgstr "возвращаемый тип %s - лишь пустышка" + +#: commands/functioncmds.c:134 parser/parse_type.c:278 +#, c-format +msgid "type modifier cannot be specified for shell type \"%s\"" +msgstr "для типа-пустышки \"%s\" нельзя указать модификатор типа" + +#: commands/functioncmds.c:140 +#, c-format +msgid "type \"%s\" is not yet defined" +msgstr "тип \"%s\" ещё не определён" + +#: commands/functioncmds.c:141 +msgid "Creating a shell type definition." +msgstr "Создание определения типа-пустышки." + +#: commands/functioncmds.c:220 +#, c-format +msgid "SQL function cannot accept shell type %s" +msgstr "SQL-функция не может принимать значение типа-пустышки %s" + +#: commands/functioncmds.c:225 +#, c-format +msgid "argument type %s is only a shell" +msgstr "тип аргумента %s - лишь пустышка" + +#: commands/functioncmds.c:235 +#, c-format +msgid "type %s does not exist" +msgstr "тип %s не существует" + +#: commands/functioncmds.c:243 +msgid "functions cannot accept set arguments" +msgstr "функции не принимают аргументы-множества" + +#: 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/functioncmds.c:319 +#, c-format +msgid "parameter name \"%s\" used more than once" +msgstr "имя параметра \"%s\" указано неоднократно" + +#: commands/functioncmds.c:334 +msgid "only input parameters can have default values" +msgstr "значения по умолчанию могут быть только у входных параметров" + +#: commands/functioncmds.c:347 +msgid "cannot use table references in parameter default value" +msgstr "в значениях параметров по умолчанию нельзя ссылаться на таблицы" + +#: commands/functioncmds.c:363 +msgid "cannot use subquery in parameter default value" +msgstr "в значениях параметров по умолчанию нельзя использовать подзапросы" + +#: commands/functioncmds.c:367 +msgid "cannot use aggregate function in parameter default value" +msgstr "" +"в значениях параметров по умолчанию нельзя использовать агрегатные функции" + +#: 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:620 +msgid "no function body specified" +msgstr "не указано тело функции" + +#: commands/functioncmds.c:630 +msgid "no language specified" +msgstr "язык не указан" + +#: commands/functioncmds.c:651 commands/functioncmds.c:1352 +msgid "COST must be positive" +msgstr "значение COST должно быть положительным" + +#: commands/functioncmds.c:659 commands/functioncmds.c:1360 +msgid "ROWS must be positive" +msgstr "значение ROWS должно быть положительным" + +#: commands/functioncmds.c:698 +#, c-format +msgid "unrecognized function attribute \"%s\" ignored" +msgstr "нераспознанный атрибут функции \"%s\" --- игнорируется" + +#: commands/functioncmds.c:749 +#, c-format +msgid "only one AS item needed for language \"%s\"" +msgstr "для языка \"%s\" нужно только одно выражение AS" + +#: 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/functioncmds.c:901 +msgid "function result type must be specified" +msgstr "необходимо указать тип результата функции" + +#: commands/functioncmds.c:936 commands/functioncmds.c:1364 +msgid "ROWS is not applicable when function does not return a set" +msgstr "указание ROWS неприменимо, когда функция возвращает не множество" + +#: commands/functioncmds.c:988 +#, c-format +msgid "function %s(%s) does not exist, skipping" +msgstr "функция %s(%s) не существует, пропускается" + +#: commands/functioncmds.c:1010 +msgid "Use DROP AGGREGATE to drop aggregate functions." +msgstr "Используйте DROP AGGREGATE для удаления агрегатных функций." + +#: commands/functioncmds.c:1017 +#, c-format +msgid "removing built-in function \"%s\"" +msgstr "удаление встроенной функции \"%s\"" + +#: commands/functioncmds.c:1110 +msgid "Use ALTER AGGREGATE to rename aggregate functions." +msgstr "Используйте ALTER AGGREGATE для переименования агрегатных функций." + +#: commands/functioncmds.c:1122 commands/aggregatecmds.c:292 +#, c-format +msgid "function %s already exists in schema \"%s\"" +msgstr "функция %s уже существует в схеме \"%s\"" + +#: commands/functioncmds.c:1173 +msgid "Use ALTER AGGREGATE to change owner of aggregate functions." +msgstr "Используйте ALTER AGGREGATE для смены владельца агрегатных функций." + +#: commands/functioncmds.c:1512 +#, c-format +msgid "source data type %s is a pseudo-type" +msgstr "исходный тип данных %s является псевдотипом" + +#: commands/functioncmds.c:1518 +#, c-format +msgid "target data type %s is a pseudo-type" +msgstr "целевой тип данных %s является псевдотипом" + +#: commands/functioncmds.c:1526 commands/functioncmds.c:1814 +#: catalog/objectaddress.c:843 +#, c-format +msgid "must be owner of type %s or type %s" +msgstr "это разрешено только владельцу типа %s или %s" + +#: commands/functioncmds.c:1555 +msgid "cast function must take one to three arguments" +msgstr "функция преобразования должна принимать от одного до трёх аргументов" + +#: commands/functioncmds.c:1559 +msgid "" +"argument of cast function must match or be binary-coercible from source data " +"type" +msgstr "" +"аргумент функции преобразования должен совпадать или быть двоично-совместим " +"с исходным типом данных" + +#: commands/functioncmds.c:1563 +msgid "second argument of cast function must be type integer" +msgstr "второй аргумент функции преобразования должен быть целого типа" + +#: commands/functioncmds.c:1567 +msgid "third argument of cast function must be type boolean" +msgstr "третий аргумент функции преобразования должен быть логического типа" + +#: commands/functioncmds.c:1571 +msgid "" +"return data type of cast function must match or be binary-coercible to " +"target data type" +msgstr "" +"тип возвращаемых данных функции преобразования должен совпадать или быть " +"двоично-совместим с целевым типом данных" + +#: commands/functioncmds.c:1582 +msgid "cast function must not be volatile" +msgstr "функция преобразования не может быть изменчивой (volatile)" + +#: commands/functioncmds.c:1587 +msgid "cast function must not be an aggregate function" +msgstr "функция преобразования не может быть агрегатной" + +#: commands/functioncmds.c:1591 +msgid "cast function must not be a window function" +msgstr "функция преобразования не может быть оконной" + +#: commands/functioncmds.c:1595 +msgid "cast function must not return a set" +msgstr "функция преобразования не может возвращать множество" + +#: commands/functioncmds.c:1621 +msgid "must be superuser to create a cast WITHOUT FUNCTION" +msgstr "" +"для создания преобразования WITHOUT FUNCTION нужно быть суперпользователем" + +#: commands/functioncmds.c:1636 +msgid "source and target data types are not physically compatible" +msgstr "исходный и целевой типы данных не совместимы физически" + +#: commands/functioncmds.c:1651 +msgid "composite data types are not binary-compatible" +msgstr "составные типы данных не совместимы на двоичном уровне" + +#: commands/functioncmds.c:1657 +msgid "enum data types are not binary-compatible" +msgstr "типы-перечисления не совместимы на двоичном уровне" + +#: commands/functioncmds.c:1663 +msgid "array data types are not binary-compatible" +msgstr "типы-массивы не совместимы на двоичном уровне" + +#: commands/functioncmds.c:1680 +msgid "domain data types must not be marked binary-compatible" +msgstr "типы-домены не могут считаться двоично-совместимыми" + +#: commands/functioncmds.c:1690 +msgid "source data type and target data type are the same" +msgstr "исходный тип данных совпадает с целевым" + +#: commands/functioncmds.c:1723 +#, c-format +msgid "cast from type %s to type %s already exists" +msgstr "преобразование типа %s в тип %s уже существует" + +#: commands/functioncmds.c:1803 +#, c-format +msgid "cast from type %s to type %s does not exist, skipping" +msgstr "преобразование типа %s в тип %s не существует, пропускается" + +#: commands/functioncmds.c:1841 +#, c-format +msgid "cast from type %s to type %s does not exist" +msgstr "преобразование типа %s в тип %s не существует" + +#: commands/functioncmds.c:1929 +#, c-format +msgid "function \"%s\" already exists in schema \"%s\"" +msgstr "функция %s уже существует в схеме \"%s\"" + +#: commands/functioncmds.c:2003 +msgid "no inline code specified" +msgstr "нет внедрённого кода" + +#: commands/functioncmds.c:2051 +#, c-format +msgid "language \"%s\" does not support inline code execution" +msgstr "язык \"%s\" не поддерживает выполнение внедрённого кода" + +#: 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:473 +#, c-format +msgid "could not write to COPY file: %m" +msgstr "не удалось записать в файл COPY: %m" + +#: commands/copy.c:485 +msgid "connection lost during COPY to stdout" +msgstr "в процессе вывода данных COPY в stdout потеряно соединение" + +#: commands/copy.c:526 +#, c-format +msgid "could not read from COPY file: %m" +msgstr "не удалось прочитать файл COPY: %m" + +#: commands/copy.c:577 +#, c-format +msgid "COPY from stdin failed: %s" +msgstr "ошибка при вводе данных COPY из stdin: %s" + +#: commands/copy.c:593 +#, c-format +msgid "unexpected message type 0x%02X during COPY from stdin" +msgstr "неожиданный тип сообщения 0x%02X при вводе данных COPY из stdin" + +#: commands/copy.c:745 +msgid "must be superuser to COPY to or from a file" +msgstr "для использования COPY с файлами нужно быть суперпользователем" + +#: 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 \\copy)." + +#: commands/copy.c:874 +#, c-format +msgid "COPY format \"%s\" not recognized" +msgstr "формат \"%s\" для COPY не распознан" + +#: 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/copy.c:964 +#, c-format +msgid "argument to option \"%s\" must be a valid encoding name" +msgstr "аргументом параметра \"%s\" должно быть название допустимой кодировки" + +#: commands/copy.c:970 +#, c-format +msgid "option \"%s\" not recognized" +msgstr "параметр \"%s\" не распознан" + +#: commands/copy.c:981 +msgid "cannot specify DELIMITER in BINARY mode" +msgstr "в режиме BINARY нельзя указывать DELIMITER" + +#: commands/copy.c:986 +msgid "cannot specify NULL in BINARY mode" +msgstr "в режиме BINARY нельзя указывать NULL" + +#: commands/copy.c:1008 +msgid "COPY delimiter must be a single one-byte character" +msgstr "разделитель для COPY должен быть однобайтным символом" + +#: 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 "" +"представление NULL для COPY не может включать символ новой строки или " +"возврата каретки" + +#: commands/copy.c:1038 +#, c-format +msgid "COPY delimiter cannot be \"%s\"" +msgstr "\"%s\" не может быть разделителем для COPY" + +#: commands/copy.c:1044 +msgid "COPY HEADER available only in CSV mode" +msgstr "COPY HEADER можно использовать только в режиме CSV" + +#: commands/copy.c:1050 +msgid "COPY quote available only in CSV mode" +msgstr "определить кавычки для COPY можно только в режиме CSV" + +#: commands/copy.c:1055 +msgid "COPY quote must be a single one-byte character" +msgstr "символ кавычек для COPY должен быть однобайтным" + +#: commands/copy.c:1060 +msgid "COPY delimiter and quote must be different" +msgstr "символ кавычек для COPY должен отличаться от разделителя" + +#: commands/copy.c:1066 +msgid "COPY escape available only in CSV mode" +msgstr "определить спецсимвол для COPY можно только в режиме CSV" + +#: commands/copy.c:1071 +msgid "COPY escape must be a single one-byte character" +msgstr "спецсимвол для COPY должен быть однобайтным" + +#: commands/copy.c:1077 +msgid "COPY force quote available only in CSV mode" +msgstr "параметр force quote для COPY можно использовать только в режиме CSV" + +#: commands/copy.c:1081 +msgid "COPY force quote only available using COPY TO" +msgstr "параметр force quote для COPY можно использовать только с COPY TO" + +#: commands/copy.c:1087 +msgid "COPY force not null available only in CSV mode" +msgstr "" +"параметр force not null для COPY можно использовать только в режиме CSV" + +#: commands/copy.c:1091 +msgid "COPY force not null only available using COPY FROM" +msgstr "параметр force not null для COPY можно использовать только с COPY FROM" + +#: commands/copy.c:1097 +msgid "COPY delimiter must not appear in the NULL specification" +msgstr "разделитель для COPY не должен присутствовать в представлении NULL" + +#: commands/copy.c:1104 +msgid "CSV quote character must not appear in the NULL specification" +msgstr "символ кавычек в CSV не должен присутствовать в представлении NULL" + +#: commands/copy.c:1166 +#, c-format +msgid "table \"%s\" does not have OIDs" +msgstr "таблица \"%s\" не содержит OID" + +#: commands/copy.c:1183 +msgid "COPY (SELECT) WITH OIDS is not supported" +msgstr "COPY (SELECT) WITH OIDS не поддерживается" + +#: commands/copy.c:1210 +msgid "COPY (SELECT INTO) is not supported" +msgstr "COPY (SELECT INTO) не поддерживается" + +#: commands/copy.c:1270 +#, c-format +msgid "FORCE QUOTE column \"%s\" not referenced by COPY" +msgstr "колонка FORCE QUOTE \"%s\" не входит в список колонок COPY" + +#: commands/copy.c:1292 +#, c-format +msgid "FORCE NOT NULL column \"%s\" not referenced by COPY" +msgstr "колонка FORCE NOT NULL \"%s\" не входит в список колонок COPY" + +#: commands/copy.c:1356 +#, c-format +msgid "cannot copy from view \"%s\"" +msgstr "копировать из представления \"%s\" нельзя" + +#: commands/copy.c:1358 commands/copy.c:1364 +msgid "Try the COPY (SELECT ...) TO variant." +msgstr "Попробуйте вариацию COPY (SELECT ...) TO." + +#: commands/copy.c:1362 +#, c-format +msgid "cannot copy from foreign table \"%s\"" +msgstr "копировать из сторонней таблицы \"%s\" нельзя" + +#: commands/copy.c:1368 +#, c-format +msgid "cannot copy from sequence \"%s\"" +msgstr "копировать из последовательности \"%s\" нельзя" + +#: commands/copy.c:1373 +#, c-format +msgid "cannot copy from non-table relation \"%s\"" +msgstr "копировать из отношения \"%s\", не являющегося таблицей, нельзя" + +#: commands/copy.c:1397 +msgid "relative path not allowed for COPY to file" +msgstr "при выполнении COPY в файл нельзя указывать относительный путь" + +#: commands/copy.c:1407 +#, c-format +msgid "could not open file \"%s\" for writing: %m" +msgstr "не удалось открыть файл \"%s\" для записи: %m" + +#: commands/copy.c:1414 commands/copy.c:2200 +#, c-format +msgid "\"%s\" is a directory" +msgstr "\"%s\" - это каталог" + +#: commands/copy.c:1738 +#, c-format +msgid "COPY %s, line %d, column %s" +msgstr "COPY %s, строка %d, колонка %s" + +#: commands/copy.c:1742 commands/copy.c:1787 +#, c-format +msgid "COPY %s, line %d" +msgstr "COPY %s, строка %d" + +#: 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:1773 +#, c-format +msgid "COPY %s, line %d: \"%s\"" +msgstr "COPY %s, строка %d: \"%s\"" + +#: commands/copy.c:1857 +#, c-format +msgid "cannot copy to view \"%s\"" +msgstr "копировать в представление \"%s\" нельзя" + +#: commands/copy.c:1862 +#, c-format +msgid "cannot copy to foreign table \"%s\"" +msgstr "копировать в стороннюю таблицу \"%s\" нельзя" + +#: commands/copy.c:1867 +#, c-format +msgid "cannot copy to sequence \"%s\"" +msgstr "копировать в последовательность \"%s\" нельзя" + +#: commands/copy.c:1872 +#, c-format +msgid "cannot copy to non-table relation \"%s\"" +msgstr "копировать в отношение \"%s\", не являющееся таблицей, нельзя" + +#: commands/copy.c:2219 +msgid "COPY file signature not recognized" +msgstr "подпись COPY-файла не распознана" + +#: commands/copy.c:2224 +msgid "invalid COPY file header (missing flags)" +msgstr "неверный заголовок файла COPY (отсутствуют флаги)" + +#: commands/copy.c:2230 +msgid "unrecognized critical flags in COPY file header" +msgstr "не распознаны важные флаги в заголовке файла COPY" + +#: commands/copy.c:2236 +msgid "invalid COPY file header (missing length)" +msgstr "неверный заголовок файла COPY (отсутствует длина)" + +#: commands/copy.c:2243 +msgid "invalid COPY file header (wrong length)" +msgstr "неверный заголовок файла COPY (неправильная длина)" + +#: commands/copy.c:2376 commands/copy.c:3058 commands/copy.c:3288 +msgid "extra data after last expected column" +msgstr "лишние данные после содержимого последней колонки" + +#: commands/copy.c:2386 +msgid "missing data for OID column" +msgstr "нет данных для колонки OID" + +#: commands/copy.c:2392 +msgid "null OID in COPY data" +msgstr "неверное значение OID (NULL) в данных COPY" + +#: commands/copy.c:2402 commands/copy.c:2501 +msgid "invalid OID in COPY data" +msgstr "неверный OID в данных COPY" + +#: 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 "после маркера конца файла продолжаются данные COPY" + +#: commands/copy.c:2483 +#, c-format +msgid "row field count is %d, expected %d" +msgstr "количество полей в строке: %d, ожидалось: %d" + +#: commands/copy.c:2822 commands/copy.c:2839 +msgid "literal carriage return found in data" +msgstr "в данных обнаружен явный возврат каретки" + +#: commands/copy.c:2823 commands/copy.c:2840 +msgid "unquoted carriage return found in data" +msgstr "в данных обнаружен возврат каретки не в кавычках" + +#: commands/copy.c:2825 commands/copy.c:2842 +msgid "Use \"\\r\" to represent carriage return." +msgstr "Представьте возврат каретки как \"\\r\"." + +#: commands/copy.c:2826 commands/copy.c:2843 +msgid "Use quoted CSV field to represent carriage return." +msgstr "Заключите возврат каретки в кавычки CSV." + +#: commands/copy.c:2855 +msgid "literal newline found in data" +msgstr "в данных обнаружен явный символ новой строки" + +#: commands/copy.c:2856 +msgid "unquoted newline found in data" +msgstr "в данных обнаружен явный символ новой строки не в кавычках" + +#: commands/copy.c:2858 +msgid "Use \"\\n\" to represent newline." +msgstr "Представьте символ новой строки как \"\\n\"." + +#: commands/copy.c:2859 +msgid "Use quoted CSV field to represent newline." +msgstr "Заключите символ новой строки в кавычки CSV." + +#: commands/copy.c:2905 commands/copy.c:2941 +msgid "end-of-copy marker does not match previous newline style" +msgstr "маркер \"конец копии\" не соответствует предыдущему стилю новой строки" + +#: commands/copy.c:2914 commands/copy.c:2930 +msgid "end-of-copy marker corrupt" +msgstr "маркер \"конец копии\" испорчен" + +#: commands/copy.c:3372 +msgid "unterminated CSV quoted field" +msgstr "незавершённое поле в кавычках CSV" + +#: commands/copy.c:3449 commands/copy.c:3468 +msgid "unexpected EOF in COPY data" +msgstr "неожиданный конец данных COPY" + +#: commands/copy.c:3458 +msgid "invalid field size" +msgstr "неверный размер поля" + +#: commands/copy.c:3481 +msgid "incorrect binary data format" +msgstr "неверный двоичный формат данных" + +#: commands/cluster.c:134 commands/cluster.c:372 +msgid "cannot cluster temporary tables of other sessions" +msgstr "кластеризовать временные таблицы других сеансов нельзя" + +#: commands/cluster.c:164 +#, c-format +msgid "there is no previously clustered index for table \"%s\"" +msgstr "таблица \"%s\" ранее не кластеризовалась по какому-либо индексу" + +#: commands/cluster.c:361 +msgid "cannot cluster a shared catalog" +msgstr "кластеризовать разделяемый каталог нельзя" + +#: commands/cluster.c:376 +msgid "cannot vacuum temporary tables of other sessions" +msgstr "очищать временные таблицы других сеансов нельзя" + +#: commands/cluster.c:426 +#, c-format +msgid "\"%s\" is not an index for table \"%s\"" +msgstr "\"%s\" не является индексом таблицы \"%s\"" + +#: commands/cluster.c:434 +#, c-format +msgid "" +"cannot cluster on index \"%s\" because access method does not support " +"clustering" +msgstr "" +"кластеризация по индексу \"%s\" невозможна, её не поддерживает метод доступа" + +#: commands/cluster.c:446 +#, c-format +msgid "cannot cluster on partial index \"%s\"" +msgstr "кластеризовать по частичному индексу \"%s\" нельзя" + +#: commands/cluster.c:460 +#, c-format +msgid "cannot cluster on invalid index \"%s\"" +msgstr "нельзя кластеризовать таблицу по неверному индексу \"%s\"" + +#: commands/cluster.c:894 +#, c-format +msgid "clustering \"%s.%s\" using index scan on \"%s\"" +msgstr "кластеризация \"%s.%s\" путём сканирования индекса \"%s\"" + +#: commands/cluster.c:900 +#, c-format +msgid "clustering \"%s.%s\" using sequential scan and sort" +msgstr "" +"кластеризация \"%s.%s\" путём последовательного сканирования и сортировки" + +#: commands/cluster.c:905 commands/vacuumlazy.c:354 +#, c-format +msgid "vacuuming \"%s.%s\"" +msgstr "очистка \"%s.%s\"" + +#: commands/cluster.c:1065 +#, c-format +msgid "" +"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages" +msgstr "" +"\"%s\": найдено удаляемых версий строк: %.0f, неудаляемых - %.0f, " +"просмотрено страниц: %u" + +#: commands/cluster.c:1069 +#, c-format +msgid "" +"%.0f dead row versions cannot be removed yet.\n" +"%s." +msgstr "" +"В данный момент нельзя удалить \"мёртвых\" строк %.0f.\n" +"%s." + +#: commands/vacuumlazy.c:269 +#, 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/vacuumlazy.c:523 +#, c-format +msgid "relation \"%s\" page %u is uninitialized --- fixing" +msgstr "" +"в отношении \"%s\" не инициализирована страница %u --- ситуация исправляется" + +#: commands/vacuumlazy.c:882 +#, c-format +msgid "\"%s\": removed %.0f row versions in %u pages" +msgstr "\"%s\": удалено версий строк: %.0f, обработано страниц: %u" + +#: commands/vacuumlazy.c:887 +#, 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:891 +#, 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:949 +#, c-format +msgid "\"%s\": removed %d row versions in %d pages" +msgstr "\"%s\": удалено версий строк: %d, обработано страниц: %d" + +#: commands/vacuumlazy.c:952 commands/vacuumlazy.c:1044 +#: commands/vacuumlazy.c:1211 +#, c-format +msgid "%s." +msgstr "%s." + +#: commands/vacuumlazy.c:1041 +#, c-format +msgid "scanned index \"%s\" to remove %d row versions" +msgstr "просканирован индекс \"%s\", удалено версий строк: %d" + +#: commands/vacuumlazy.c:1082 +#, c-format +msgid "index \"%s\" now contains %.0f row versions in %u pages" +msgstr "индекс \"%s\" теперь содержит версий строк: %.0f, в страницах: %u" + +#: commands/vacuumlazy.c:1086 +#, c-format +msgid "" +"%.0f index row versions were removed.\n" +"%u index pages have been deleted, %u are currently reusable.\n" +"%s." +msgstr "" +"Удалено версий строк индекса: %.0f.\n" +"Удалено индексных страниц: %u, пригодно для повторного использования: %u.\n" +"%s." + +#: commands/vacuumlazy.c:1143 +#, c-format +msgid "\"%s\": stopping truncate due to conflicting lock request" +msgstr "\"%s\": остановка усечения из-за конфликтующего запроса блокировки" + +#: commands/vacuumlazy.c:1208 +#, c-format +msgid "\"%s\": truncated %u to %u pages" +msgstr "\"%s\": усечение (было страниц: %u, стало: %u)" + +#: commands/vacuumlazy.c:1264 +#, c-format +msgid "\"%s\": suspending truncate due to conflicting lock request" +msgstr "\"%s\": приостановка усечения из-за конфликтующего запроса блокировки" + +#: commands/dbcommands.c:202 +msgid "LOCATION is not supported anymore" +msgstr "LOCATION больше не поддерживается" + +#: commands/dbcommands.c:203 +msgid "Consider using tablespaces instead." +msgstr "Рассмотрите возможность использования табличных пространств." + +#: commands/dbcommands.c:254 commands/dbcommands.c:1374 commands/user.c:267 +#: commands/user.c:606 +#, c-format +msgid "invalid connection limit: %d" +msgstr "неверный предел подключений: %d" + +#: commands/dbcommands.c:273 +msgid "permission denied to create database" +msgstr "нет прав на создание базы данных" + +#: commands/dbcommands.c:296 +#, c-format +msgid "template database \"%s\" does not exist" +msgstr "шаблон базы данных \"%s\" не существует" + +#: commands/dbcommands.c:308 +#, c-format +msgid "permission denied to copy database \"%s\"" +msgstr "нет прав на копирование базы данных \"%s\"" + +#: commands/dbcommands.c:324 +#, c-format +msgid "invalid server encoding %d" +msgstr "неверная кодировка для сервера: %d" + +#: commands/dbcommands.c:330 commands/dbcommands.c:334 +#, c-format +msgid "invalid locale name %s" +msgstr "неверное имя локали \"%s\"" + +#: commands/dbcommands.c:353 +#, c-format +msgid "" +"new encoding (%s) is incompatible with the encoding of the template database " +"(%s)" +msgstr "новая кодировка (%s) несовместима с кодировкой шаблона базы данных(%s)" + +#: commands/dbcommands.c:356 +msgid "" +"Use the same encoding as in the template database, or use template0 as " +"template." +msgstr "" +"Используйте кодировку шаблона базы данных или выберите в качестве шаблона " +"template0." + +#: commands/dbcommands.c:361 +#, c-format +msgid "" +"new collation (%s) is incompatible with the collation of the template " +"database (%s)" +msgstr "" +"новое правило сортировки (%s) несовместимо с правилом в шаблоне базы данных " +"(%s)" + +#: commands/dbcommands.c:363 +msgid "" +"Use the same collation as in the template database, or use template0 as " +"template." +msgstr "" +"Используйте то же правило сортировки, что и в шаблоне базы данных, или " +"выберите в качестве шаблона template0." + +#: commands/dbcommands.c:368 +#, 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:370 +msgid "" +"Use the same LC_CTYPE as in the template database, or use template0 as " +"template." +msgstr "" +"Используйте тот же LC_CTYPE, что и в шаблоне базы данных, или выберите в " +"качестве шаблона template0." + +#: commands/dbcommands.c:392 commands/dbcommands.c:1081 +msgid "pg_global cannot be used as default tablespace" +msgstr "" +"pg_global нельзя использовать в качестве табличного пространства по умолчанию" + +#: commands/dbcommands.c:418 +#, c-format +msgid "cannot assign new default tablespace \"%s\"" +msgstr "не удалось назначить новое табличное пространство по умолчанию \"%s\"" + +#: commands/dbcommands.c:420 +#, c-format +msgid "" +"There is a conflict because database \"%s\" already has some tables in this " +"tablespace." +msgstr "" +"База данных \"%s\" содержит таблицы, которые уже находятся в этом табличном " +"пространстве." + +#: commands/dbcommands.c:440 commands/dbcommands.c:956 +#, c-format +msgid "database \"%s\" already exists" +msgstr "база данных \"%s\" уже существует" + +#: commands/dbcommands.c:454 +#, c-format +msgid "source database \"%s\" is being accessed by other users" +msgstr "исходная база \"%s\" занята другими пользователями" + +#: commands/dbcommands.c:722 commands/dbcommands.c:737 +#, c-format +msgid "encoding %s does not match locale %s" +msgstr "кодировка %s не соответствует локали %s" + +#: commands/dbcommands.c:725 +#, c-format +msgid "The chosen LC_CTYPE setting requires encoding %s." +msgstr "Для выбранного параметра LC_CTYPE требуется кодировка %s." + +#: commands/dbcommands.c:740 +#, c-format +msgid "The chosen LC_COLLATE setting requires encoding %s." +msgstr "Для выбранного параметра LC_COLLATE требуется кодировка %s." + +#: commands/dbcommands.c:798 +#, c-format +msgid "database \"%s\" does not exist, skipping" +msgstr "база данных \"%s\" не существует, пропускается" + +#: commands/dbcommands.c:819 +msgid "cannot drop a template database" +msgstr "удалить шаблон базы данных нельзя" + +#: commands/dbcommands.c:825 +msgid "cannot drop the currently open database" +msgstr "удалить базу данных, открытую в данный момент, нельзя" + +#: commands/dbcommands.c:836 commands/dbcommands.c:978 +#: commands/dbcommands.c:1103 +#, c-format +msgid "database \"%s\" is being accessed by other users" +msgstr "база данных \"%s\" занята другими пользователями" + +#: commands/dbcommands.c:947 +msgid "permission denied to rename database" +msgstr "нет прав на переименование базы данных" + +#: commands/dbcommands.c:967 +msgid "current database cannot be renamed" +msgstr "нельзя переименовать текущую базу данных" + +#: commands/dbcommands.c:1059 +msgid "cannot change the tablespace of the currently open database" +msgstr "" +"изменить табличное пространство открытой в данный момент базы данных нельзя" + +#: commands/dbcommands.c:1143 +#, c-format +msgid "some relations of database \"%s\" are already in tablespace \"%s\"" +msgstr "" +"некоторые отношения базы данных \"%s\" уже находятся в табличном " +"пространстве \"%s\"" + +#: commands/dbcommands.c:1145 +msgid "" +"You must move them back to the database's default tablespace before using " +"this command." +msgstr "" +"Прежде чем выполнять эту команду, вы должны вернуть их назад в табличное " +"пространство по умолчанию для этой базы данных." + +#: commands/dbcommands.c:1273 commands/dbcommands.c:1752 +#: commands/dbcommands.c:1966 commands/dbcommands.c:2014 +#: commands/tablespace.c:584 +#, c-format +msgid "some useless files may be left behind in old database directory \"%s\"" +msgstr "в старом каталоге базы данных \"%s\" могли остаться ненужные файлы" + +#: commands/dbcommands.c:1517 +msgid "permission denied to change owner of database" +msgstr "нет прав на изменение владельца базы данных" + +#: commands/dbcommands.c:1853 +#, c-format +msgid "" +"There are %d other session(s) and %d prepared transaction(s) using the " +"database." +msgstr "" +"С этой базой данных связаны другие сеансы (%d) и подготовленные транзакции " +"(%d)." + +#: commands/dbcommands.c:1856 +#, c-format +msgid "There are %d other session(s) using the database." +msgstr "Эта база данных используется в других сеансах (%d)." + +#: commands/dbcommands.c:1859 +#, c-format +msgid "There are %d prepared transaction(s) using the database." +msgstr "С этой базой данных связаны подготовленные транзакции (%d)." + +#: 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 "параметр BUFFERS оператора EXPLAIN требует указания ANALYZE" + +#: commands/indexcmds.c:161 +msgid "must specify at least one column" +msgstr "нужно указать минимум одну колонку" + +#: commands/indexcmds.c:165 +#, c-format +msgid "cannot use more than %d columns in an index" +msgstr "число колонок в индексе не может превышать %d" + +#: commands/indexcmds.c:193 +#, c-format +msgid "cannot create index on foreign table \"%s\"" +msgstr "создать индекс в сторонней таблице \"%s\" нельзя" + +#: commands/indexcmds.c:208 +msgid "cannot create indexes on temporary tables of other sessions" +msgstr "создавать индексы во временных таблицах других сеансов нельзя" + +#: commands/indexcmds.c:294 +msgid "substituting access method \"gist\" for obsolete method \"rtree\"" +msgstr "устаревший метод доступа \"rtree\" подменяется методом \"gist\"" + +#: commands/indexcmds.c:302 commands/opclasscmds.c:369 +#: commands/opclasscmds.c:790 commands/opclasscmds.c:2202 +#, c-format +msgid "access method \"%s\" does not exist" +msgstr "метод доступа \"%s\" не существует" + +#: commands/indexcmds.c:311 +#, c-format +msgid "access method \"%s\" does not support unique indexes" +msgstr "метод доступа \"%s\" не поддерживает уникальные индексы" + +#: commands/indexcmds.c:316 +#, c-format +msgid "access method \"%s\" does not support multicolumn indexes" +msgstr "метод доступа \"%s\" не поддерживает индексы по многим колонкам" + +#: commands/indexcmds.c:321 +#, c-format +msgid "access method \"%s\" does not support exclusion constraints" +msgstr "метод доступа \"%s\" не поддерживает ограничения-исключения" + +#: commands/indexcmds.c:397 +#, c-format +msgid "%s %s will create implicit index \"%s\" for table \"%s\"" +msgstr "%s %s создаст неявный индекс \"%s\" для таблицы \"%s\"" + +#: commands/indexcmds.c:735 +msgid "cannot use subquery in index predicate" +msgstr "в предикате индекса нельзя использовать подзапросы" + +#: commands/indexcmds.c:739 +msgid "cannot use aggregate in index predicate" +msgstr "в предикате индекса нельзя использовать агрегатные функции" + +#: commands/indexcmds.c:748 +msgid "functions in index predicate must be marked IMMUTABLE" +msgstr "функции в предикате индекса должны быть помечены как IMMUTABLE" + +#: commands/indexcmds.c:813 parser/parse_utilcmd.c:1754 +#, c-format +msgid "column \"%s\" named in key does not exist" +msgstr "указанная в ключе колонка \"%s\" не существует" + +#: commands/indexcmds.c:866 +msgid "cannot use subquery in index expression" +msgstr "в индексном выражении нельзя использовать подзапросы" + +#: commands/indexcmds.c:870 +msgid "cannot use aggregate function in index expression" +msgstr "в индексном выражении нельзя использовать агрегатные функции" + +#: commands/indexcmds.c:881 +msgid "functions in index expression must be marked IMMUTABLE" +msgstr "функции в индексном выражении должны быть помечены как IMMUTABLE" + +#: commands/indexcmds.c:902 +msgid "could not determine which collation to use for index expression" +msgstr "не удалось определить правило сравнения для индексного выражения" + +#: commands/indexcmds.c:910 commands/typecmds.c:843 +#: parser/parse_utilcmd.c:2606 parser/parse_expr.c:2165 +#: parser/parse_type.c:492 +#, c-format +msgid "collations are not supported by type %s" +msgstr "тип %s не поддерживает сортировку (COLLATION)" + +#: commands/indexcmds.c:948 +#, c-format +msgid "operator %s is not commutative" +msgstr "оператор %s не коммутативен" + +#: commands/indexcmds.c:950 +msgid "Only commutative operators can be used in exclusion constraints." +msgstr "" +"В ограничениях-исключениях могут использоваться только коммутативные " +"операторы." + +#: commands/indexcmds.c:976 +#, c-format +msgid "operator %s is not a member of operator family \"%s\"" +msgstr "оператор \"%s\" не входит в семейство операторов \"%s\"" + +#: commands/indexcmds.c:979 +msgid "" +"The exclusion operator must be related to the index operator class for the " +"constraint." +msgstr "" +"Оператор исключения для ограничения должен относиться к классу операторов " +"индекса." + +#: commands/indexcmds.c:1014 +#, c-format +msgid "access method \"%s\" does not support ASC/DESC options" +msgstr "метод доступа \"%s\" не поддерживает сортировку ASC/DESC" + +#: commands/indexcmds.c:1019 +#, c-format +msgid "access method \"%s\" does not support NULLS FIRST/LAST options" +msgstr "метод доступа \"%s\" не поддерживает параметр NULLS FIRST/LAST" + +#: commands/indexcmds.c:1075 +#, c-format +msgid "data type %s has no default operator class for access method \"%s\"" +msgstr "" +"для типа данных %s не определён класс операторов по умолчанию для метода " +"доступа \"%s\"" + +#: commands/indexcmds.c:1077 +msgid "" +"You must specify an operator class for the index or define a default " +"operator class for the data type." +msgstr "" +"Вы должны указать класс операторов для индекса или определить класс " +"операторов по умолчанию для этого типа данных." + +#: commands/indexcmds.c:1106 commands/indexcmds.c:1114 +#: 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:1127 +#, c-format +msgid "operator class \"%s\" does not accept data type %s" +msgstr "класс операторов \"%s\" не принимает тип данных %s" + +#: commands/indexcmds.c:1217 +#, c-format +msgid "there are multiple default operator classes for data type %s" +msgstr "" +"для типа данных %s определено несколько классов операторов по умолчанию" + +#: commands/indexcmds.c:1558 +#, c-format +msgid "table \"%s\" has no indexes" +msgstr "таблица \"%s\" не имеет индексов" + +#: commands/indexcmds.c:1586 +msgid "can only reindex the currently open database" +msgstr "переиндексировать можно только текущую базу данных" + +#: commands/indexcmds.c:1671 +#, c-format +msgid "table \"%s.%s\" was reindexed" +msgstr "таблица \"%s.%s\" переиндексирована" + +#: commands/view.c:143 +#, c-format +msgid "could not determine which collation to use for view column \"%s\"" +msgstr "" +"не удалось определить правило сортировки для колонки представления \"%s\"" + +#: commands/view.c:158 +msgid "view must have at least one column" +msgstr "в представлении должна быть минимум одна колонка" + +#: commands/view.c:283 commands/view.c:295 +msgid "cannot drop columns from view" +msgstr "удалять колонки из представления нельзя" + +#: commands/view.c:300 +#, c-format +msgid "cannot change name of view column \"%s\" to \"%s\"" +msgstr "изменить имя колонки \"%s\" на \"%s\" в представлении нельзя" + +#: commands/view.c:308 +#, c-format +msgid "cannot change data type of view column \"%s\" from %s to %s" +msgstr "изменить тип колонки представления \"%s\" с %s на %s нельзя" + +#: commands/view.c:447 +msgid "views must not contain SELECT INTO" +msgstr "представления не должны содержать SELECT INTO" + +#: commands/view.c:451 +msgid "views must not contain data-modifying statements in WITH" +msgstr "представления не должны содержать операторы, изменяющие данные в WITH" + +#: commands/view.c:479 +msgid "CREATE VIEW specifies more column names than columns" +msgstr "в CREATE VIEW указано больше имён колонок, чем самих колонок" + +#: commands/view.c:487 +msgid "views cannot be unlogged because they do not have storage" +msgstr "" +"представления не могут быть нежурналируемыми, так как они нигде не хранятся" + +#: commands/view.c:501 +#, c-format +msgid "view \"%s\" will be a temporary view" +msgstr "представление \"%s\" будет создано как временное" + +#: commands/opclasscmds.c:136 commands/opclasscmds.c:1838 +#: commands/opclasscmds.c:1849 commands/opclasscmds.c:2083 +#: commands/opclasscmds.c:2094 +#, c-format +msgid "operator family \"%s\" does not exist for access method \"%s\"" +msgstr "семейство операторов \"%s\" для метода доступа \"%s\" не существует" + +#: commands/opclasscmds.c:271 +#, c-format +msgid "operator family \"%s\" for access method \"%s\" already exists" +msgstr "семейство операторов \"%s\" для метода доступа \"%s\" уже существует" + +#: commands/opclasscmds.c:408 +msgid "must be superuser to create an operator class" +msgstr "для создания класса операторов нужно быть суперпользователем" + +#: 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: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: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:605 +#, c-format +msgid "operator class \"%s\" for access method \"%s\" already exists" +msgstr "класс операторов \"%s\" для метода доступа \"%s\" уже существует" + +#: commands/opclasscmds.c:633 +#, c-format +msgid "could not make operator class \"%s\" be default for type %s" +msgstr "" +"класс операторов \"%s\" не удалось сделать классом по умолчанию для типа %s" + +#: commands/opclasscmds.c:636 +#, c-format +msgid "Operator class \"%s\" already is the default." +msgstr "Класс операторов \"%s\" уже является классом по умолчанию." + +#: commands/opclasscmds.c:760 +msgid "must be superuser to create an operator family" +msgstr "для создания семейства операторов нужно быть суперпользователем" + +#: 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 "в ALTER OPERATOR FAMILY нельзя указать STORAGE" + +#: commands/opclasscmds.c:1060 +msgid "one or two argument types must be specified" +msgstr "нужно указать один или два типа аргументов" + +#: commands/opclasscmds.c:1086 +msgid "index operators must be binary" +msgstr "индексные операторы должны быть бинарными" + +#: commands/opclasscmds.c:1111 +#, c-format +msgid "access method \"%s\" does not support ordering operators" +msgstr "метод доступа \"%s\" не поддерживает сортирующие операторы" + +#: commands/opclasscmds.c:1124 +msgid "index search operators must return boolean" +msgstr "операторы поиска по индексу должны возвращать логическое значение" + +#: commands/opclasscmds.c:1163 +msgid "btree procedures must have two arguments" +msgstr "у процедур btree должны быть два аргумента" + +#: 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/opclasscmds.c:1293 +#, c-format +msgid "operator %d(%s,%s) already exists in operator family \"%s\"" +msgstr "оператор %d(%s,%s) уже существует в семействе \"%s\"" + +#: commands/opclasscmds.c:1406 +#, c-format +msgid "function %d(%s,%s) already exists in operator family \"%s\"" +msgstr "функция %d(%s,%s) уже существует в семействе операторов \"%s\"" + +#: commands/opclasscmds.c:1493 +#, c-format +msgid "operator %d(%s,%s) does not exist in operator family \"%s\"" +msgstr "оператор %d(%s,%s) не существует в семействе операторов \"%s\"" + +#: 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:1618 +#, c-format +msgid "" +"operator family \"%s\" does not exist for access method \"%s\", skipping" +msgstr "" +"семейство операторов \"%s\" не существует для метода доступа \"%s\", " +"пропускается" + +#: commands/opclasscmds.c:1778 +#, c-format +msgid "" +"operator class \"%s\" for access method \"%s\" already exists in schema \"%s" +"\"" +msgstr "" +"класс операторов \"%s\" для метода доступа \"%s\" уже существует в схеме \"%s" +"\"" + +#: commands/opclasscmds.c:1867 +#, c-format +msgid "" +"operator family \"%s\" for access method \"%s\" already exists in schema \"%s" +"\"" +msgstr "" +"семейство операторов \"%s\" для метода доступа \"%s\" уже существует в схеме " +"\"%s\"" + +#: commands/extension.c:149 commands/extension.c:2689 +#, c-format +msgid "extension \"%s\" does not exist" +msgstr "расширение \"%s\" не существует" + +#: commands/extension.c:248 commands/extension.c:257 commands/extension.c:269 +#: commands/extension.c:279 +#, c-format +msgid "invalid extension name: \"%s\"" +msgstr "неверное имя расширения: \"%s\"" + +#: commands/extension.c:249 +msgid "Extension names must not be empty." +msgstr "Имя расширения не может быть пустым." + +#: commands/extension.c:258 +msgid "Extension names must not contain \"--\"." +msgstr "Имя расширения не может содержать \"--\"." + +#: commands/extension.c:270 +msgid "Extension names must not begin or end with \"-\"." +msgstr "Имя расширения не может начинаться или заканчиваться символом \"-\"." + +#: commands/extension.c:280 +msgid "Extension names must not contain directory separator characters." +msgstr "Имя расширения не может содержать разделители пути." + +#: commands/extension.c:295 commands/extension.c:304 commands/extension.c:313 +#: commands/extension.c:323 +#, c-format +msgid "invalid extension version name: \"%s\"" +msgstr "неверный идентификатор версии расширения: \"%s\"" + +#: commands/extension.c:296 +msgid "Version names must not be empty." +msgstr "Идентификатор версии не может быть пустым." + +#: commands/extension.c:305 +msgid "Version names must not contain \"--\"." +msgstr "Идентификатор версии не может содержать \"--\"." + +#: commands/extension.c:314 +msgid "Version names must not begin or end with \"-\"." +msgstr "" +"Идентификатор версии не может начинаться или заканчиваться символом \"-\"." + +#: commands/extension.c:324 +msgid "Version names must not contain directory separator characters." +msgstr "Идентификатор версии не может содержать разделители пути." + +#: commands/extension.c:474 +#, c-format +msgid "could not open extension control file \"%s\": %m" +msgstr "не удалось открыть управляющий файл расширения \"%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 "" +"параметр \"%s\" нельзя задавать в дополнительном управляющем файле расширения" + +#: commands/extension.c:544 +#, c-format +msgid "\"%s\" is not a valid encoding name" +msgstr "неверное имя кодировки %s" + +#: commands/extension.c:558 +#, c-format +msgid "parameter \"%s\" must be a list of extension names" +msgstr "параметр \"%s\" должен содержать список имён расширений" + +#: commands/extension.c:565 +#, c-format +msgid "unrecognized parameter \"%s\" in file \"%s\"" +msgstr "нераспознанный параметр \"%s\" в файле \"%s\"" + +#: commands/extension.c:574 +msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true" +msgstr "" +"параметр \"schema\" не может быть указан вместе с \"relocatable\" = true" + +#: commands/extension.c:726 +msgid "" +"transaction control statements are not allowed within an extension script" +msgstr "в скрипте расширения не должно быть операторов управления транзакциями" + +#: commands/extension.c:794 +#, c-format +msgid "permission denied to create extension \"%s\"" +msgstr "нет прав на создание расширения \"%s\"" + +#: commands/extension.c:796 +msgid "Must be superuser to create this extension." +msgstr "Для создания этого расширения нужно быть суперпользователем." + +#: commands/extension.c:800 +#, c-format +msgid "permission denied to update extension \"%s\"" +msgstr "нет прав на изменение расширения \"%s\"" + +#: commands/extension.c:802 +msgid "Must be superuser to update this extension." +msgstr "Для изменения этого расширения нужно быть суперпользователем." + +#: commands/extension.c:1084 +#, c-format +msgid "" +"extension \"%s\" has no update path from version \"%s\" to version \"%s\"" +msgstr "" +"для расширения \"%s\" не определён путь обновления с версии \"%s\" до версии " +"\"%s\"" + +#: commands/extension.c:1211 +#, c-format +msgid "extension \"%s\" already exists, skipping" +msgstr "расширение \"%s\" уже существует, пропускается" + +#: commands/extension.c:1218 +#, c-format +msgid "extension \"%s\" already exists" +msgstr "расширение \"%s\" уже существует" + +#: commands/extension.c:1229 +msgid "nested CREATE EXTENSION is not supported" +msgstr "вложенные операторы CREATE EXTENSION не поддерживаются" + +#: commands/extension.c:1284 commands/extension.c:2749 +msgid "version to install must be specified" +msgstr "нужно указать версию для установки" + +#: commands/extension.c:1301 +#, c-format +msgid "FROM version must be different from installation target version \"%s\"" +msgstr "версия FROM должна отличаться от устанавливаемой версии \"%s\"" + +#: commands/extension.c:1356 +#, c-format +msgid "extension \"%s\" must be installed in schema \"%s\"" +msgstr "расширение \"%s\" должно устанавливаться в схему \"%s\"" + +#: commands/extension.c:1399 commands/extension.c:1405 catalog/namespace.c:358 +#: catalog/namespace.c:2589 +msgid "no schema has been selected to create in" +msgstr "схема для создания объектов не выбрана" + +#: commands/extension.c:1439 commands/extension.c:2890 +#, c-format +msgid "required extension \"%s\" is not installed" +msgstr "требуемое расширение \"%s\" не установлено" + +#: commands/extension.c:1600 commands/extension.c:2488 +#: catalog/objectaddress.c:289 +msgid "extension name cannot be qualified" +msgstr "имя расширения не может быть составным" + +#: commands/extension.c:1608 +#, c-format +msgid "extension \"%s\" does not exist, skipping" +msgstr "расширение \"%s\" не существует, пропускается" + +#: commands/extension.c:1663 +#, c-format +msgid "cannot drop extension \"%s\" because it is being modified" +msgstr "удалить расширение %s в процессе настройки нельзя" + +#: commands/extension.c:2134 +msgid "" +"pg_extension_config_dump() can only be called from an SQL script executed by " +"CREATE EXTENSION" +msgstr "" +"функцию pg_extension_config_dump() можно вызывать только из SQL-скрипта, " +"запускаемого в CREATE EXTENSION" + +#: commands/extension.c:2146 +#, c-format +msgid "OID %u does not refer to a table" +msgstr "OID %u не относится к таблице" + +#: commands/extension.c:2151 +#, c-format +msgid "table \"%s\" is not a member of the extension being created" +msgstr "таблица \"%s\" не относится к созданному расширению" + +#: commands/extension.c:2515 +#, c-format +msgid "" +"cannot move extension \"%s\" into schema \"%s\" because the extension " +"contains the schema" +msgstr "" +"переместить расширение \"%s\" в схему \"%s\" нельзя, так как оно содержит " +"схему" + +#: commands/extension.c:2555 commands/extension.c:2618 +#, c-format +msgid "extension \"%s\" does not support SET SCHEMA" +msgstr "расширение \"%s\" не поддерживает SET SCHEMA" + +#: commands/extension.c:2620 +#, c-format +msgid "%s is not in the extension's schema \"%s\"" +msgstr "объект %s не принадлежит схеме расширения \"%s\"" + +#: commands/extension.c:2669 +msgid "nested ALTER EXTENSION is not supported" +msgstr "вложенные операторы ALTER EXTENSION не поддерживаются" + +#: commands/extension.c:2760 +#, c-format +msgid "version \"%s\" of extension \"%s\" is already installed" +msgstr "версия \"%s\" расширения \"%s\" уже установлена" + +#: commands/extension.c:2983 catalog/pg_depend.c:164 +#, c-format +msgid "%s is already a member of extension \"%s\"" +msgstr "%s уже относится к расширению \"%s\"" + +#: commands/extension.c:2995 +#, c-format +msgid "" +"cannot add schema \"%s\" to extension \"%s\" because the schema contains the " +"extension" +msgstr "" +"добавить схему \"%s\" к расширению \"%s\" нельзя, так как схема содержит " +"расширение" + +#: commands/extension.c:3013 +#, c-format +msgid "%s is not a member of extension \"%s\"" +msgstr "%s не относится к расширению \"%s\"" + +#: commands/collationcmds.c:81 +#, c-format +msgid "collation attribute \"%s\" not recognized" +msgstr "атрибут COLLATION \"%s\" не распознан" + +#: commands/collationcmds.c:126 +msgid "parameter \"lc_collate\" must be specified" +msgstr "необходимо указать параметр \"lc_collate\"" + +#: commands/collationcmds.c:131 +msgid "parameter \"lc_ctype\" must be specified" +msgstr "необходимо указать параметр \"lc_ctype\"" + +#: commands/collationcmds.c:177 +#, c-format +msgid "collation \"%s\" does not exist, skipping" +msgstr "правило сортировки \"%s\" не существует, пропускается" + +#: commands/collationcmds.c:237 commands/collationcmds.c:416 +#, c-format +msgid "collation \"%s\" for encoding \"%s\" already exists in schema \"%s\"" +msgstr "" +"правило сортировки \"%s\" для кодировки \"%s\" уже существует в схеме \"%s\"" + +#: commands/collationcmds.c:249 commands/collationcmds.c:428 +#, c-format +msgid "collation \"%s\" already exists in schema \"%s\"" +msgstr "правило сортировки \"%s\" уже существует в схеме \"%s\"" + +#: commands/comment.c:97 commands/seclabel.c:113 +#, c-format +msgid "\"%s\" is not a table, view, composite type, or foreign table" +msgstr "" +"\"%s\" - это не таблица, представление, составной тип или сторонняя таблица" + +#: 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:205 +#, c-format +msgid "could not stat directory \"%s\": %m" +msgstr "не удалось получить информацию о каталоге \"%s\": %m" + +#: commands/tablespace.c:214 +#, c-format +msgid "\"%s\" exists but is not a directory" +msgstr "\"%s\" существует, но это не каталог" + +#: commands/tablespace.c:244 +#, c-format +msgid "permission denied to create tablespace \"%s\"" +msgstr "нет прав на создание табличного пространства \"%s\"" + +#: commands/tablespace.c:246 +msgid "Must be superuser to create a tablespace." +msgstr "Для создания табличного пространства нужно быть суперпользователем." + +#: commands/tablespace.c:262 +msgid "tablespace location cannot contain single quotes" +msgstr "в пути к табличному пространству не должно быть одинарных кавычек" + +#: commands/tablespace.c:272 +msgid "tablespace location must be an absolute path" +msgstr "путь к табличному пространству должен быть абсолютным" + +#: commands/tablespace.c:283 +#, c-format +msgid "tablespace location \"%s\" is too long" +msgstr "путь к табличному пространству \"%s\" слишком длинный" + +#: commands/tablespace.c:293 commands/tablespace.c:853 +#, c-format +msgid "unacceptable tablespace name \"%s\"" +msgstr "неприемлемое имя табличного пространства: \"%s\"" + +#: commands/tablespace.c:295 commands/tablespace.c:854 +msgid "The prefix \"pg_\" is reserved for system tablespaces." +msgstr "Префикс \"pg_\" зарезервирован для системных табличных пространств." + +#: commands/tablespace.c:305 commands/tablespace.c:866 +#, c-format +msgid "tablespace \"%s\" already exists" +msgstr "табличное пространство \"%s\" уже существует" + +#: commands/tablespace.c:377 commands/tablespace.c:529 +#: replication/basebackup.c:152 replication/basebackup.c:734 +msgid "tablespaces are not supported on this platform" +msgstr "табличные пространства не поддерживаются на этой платформе" + +#: commands/tablespace.c:415 commands/tablespace.c:837 +#: commands/tablespace.c:904 commands/tablespace.c:1009 +#: commands/tablespace.c:1075 commands/tablespace.c:1213 +#: commands/tablespace.c:1413 +#, c-format +msgid "tablespace \"%s\" does not exist" +msgstr "табличное пространство \"%s\" не существует" + +#: commands/tablespace.c:421 +#, c-format +msgid "tablespace \"%s\" does not exist, skipping" +msgstr "табличное пространство \"%s\" не существует, пропускается" + +#: commands/tablespace.c:486 +#, c-format +msgid "tablespace \"%s\" is not empty" +msgstr "табличное пространство \"%s\" не пусто" + +#: 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:566 +#, c-format +msgid "could not set permissions on directory \"%s\": %m" +msgstr "не удалось установить права для каталога \"%s\": %m" + +#: commands/tablespace.c:598 +#, c-format +msgid "directory \"%s\" already in use as a tablespace" +msgstr "каталог \"%s\" уже используется как табличное пространство" + +#: commands/tablespace.c:613 commands/tablespace.c:774 +#, c-format +msgid "could not remove symbolic link \"%s\": %m" +msgstr "ошибка при удалении символической ссылки \"%s\": %m" + +#: commands/tablespace.c:623 +#, c-format +msgid "could not create symbolic link \"%s\": %m" +msgstr "не удалось создать символическую ссылку \"%s\": %m" + +#: commands/tablespace.c:729 commands/tablespace.c:742 +#: commands/tablespace.c:766 +#, c-format +msgid "could not remove directory \"%s\": %m" +msgstr "ошибка при удалении каталога \"%s\": %m" + +#: commands/tablespace.c:1080 +#, c-format +msgid "Tablespace \"%s\" does not exist." +msgstr "Табличное пространство \"%s\" не существует." + +#: commands/tablespace.c:1512 +#, c-format +msgid "directories for tablespace %u could not be removed" +msgstr "удалить каталоги табличного пространства %u не удалось" + +#: commands/tablespace.c:1514 +msgid "You can remove the directories manually if necessary." +msgstr "При необходимости вы можете удалить их вручную." + +#: commands/schemacmds.c:82 commands/schemacmds.c:275 +#, c-format +msgid "unacceptable schema name \"%s\"" +msgstr "неприемлемое имя схемы: \"%s\"" + +#: commands/schemacmds.c:83 commands/schemacmds.c:276 +msgid "The prefix \"pg_\" is reserved for system schemas." +msgstr "Префикс \"pg_\" зарезервирован для системных схем." + +#: commands/schemacmds.c:178 catalog/objectaddress.c:298 +msgid "schema name cannot be qualified" +msgstr "имя схемы не может быть составным" + +#: commands/schemacmds.c:186 +#, c-format +msgid "schema \"%s\" does not exist, skipping" +msgstr "схема \"%s\" не существует, пропускается" + +#: commands/schemacmds.c:253 commands/schemacmds.c:322 +#: catalog/namespace.c:2610 catalog/namespace.c:3599 catalog/namespace.c:3602 +#, c-format +msgid "schema \"%s\" does not exist" +msgstr "схема \"%s\" не существует" + +#: commands/schemacmds.c:259 catalog/pg_namespace.c:60 +#, c-format +msgid "schema \"%s\" already exists" +msgstr "схема \"%s\" уже существует" + +#: commands/seclabel.c:58 +msgid "no security label providers have been loaded" +msgstr "поставщики меток безопасности не загружены" + +#: commands/seclabel.c:62 +msgid "" +"must specify provider when multiple security label providers have been loaded" +msgstr "" +"когда загружено несколько поставщиков меток безопасности, нужный следует " +"указывать явно" + +#: commands/seclabel.c:80 +#, c-format +msgid "security label provider \"%s\" is not loaded" +msgstr "поставщик меток безопасности \"%s\" не загружен" + +#: commands/portalcmds.c:61 commands/portalcmds.c:160 +#: commands/portalcmds.c:212 +msgid "invalid cursor name: must not be empty" +msgstr "имя курсора не может быть пустым" + +#: commands/portalcmds.c:415 +msgid "could not reposition held cursor" +msgstr "передвинуть сохранённый курсор не удалось" + +#: commands/aggregatecmds.c:103 +#, c-format +msgid "aggregate attribute \"%s\" not recognized" +msgstr "нераспознанный атрибут \"%s\" в определении агрегатной функции" + +#: commands/aggregatecmds.c:113 +msgid "aggregate stype must be specified" +msgstr "в определении агрегатной функции требуется stype" + +#: commands/aggregatecmds.c:117 +msgid "aggregate sfunc must be specified" +msgstr "в определении агрегатной функции требуется sfunc" + +#: 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:191 +#, c-format +msgid "aggregate transition data type cannot be %s" +msgstr "переходным типом агрегатной функции не может быть %s" + +#: commands/aggregatecmds.c:230 +#, c-format +msgid "aggregate %s(%s) does not exist, skipping" +msgstr "агрегатная функция %s(%s) не существует, пропускается" + +#: commands/user.c:143 +msgid "SYSID can no longer be specified" +msgstr "SYSID уже не нужно указывать" + +#: commands/user.c:284 +msgid "must be superuser to create superusers" +msgstr "для создания суперпользователей нужно быть суперпользователем" + +#: commands/user.c:291 +msgid "must be superuser to create replication users" +msgstr "для создания пользователей-репликаторов нужно быть суперпользователем" + +#: commands/user.c:298 +msgid "permission denied to create role" +msgstr "нет прав для создания роли" + +#: commands/user.c:305 commands/user.c:1087 +#, c-format +msgid "role name \"%s\" is reserved" +msgstr "имя роли \"%s\" зарезервировано" + +#: commands/user.c:318 commands/user.c:1081 +#, c-format +msgid "role \"%s\" already exists" +msgstr "роль \"%s\" уже существует" + +#: 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:643 +msgid "must be superuser to alter replication users" +msgstr "" +"для модификации пользователей-репликаторов нужно быть суперпользователем" + +#: commands/user.c:659 commands/user.c:850 +msgid "permission denied" +msgstr "нет доступа" + +#: commands/user.c:878 +msgid "permission denied to drop role" +msgstr "нет прав для удаления роли" + +#: commands/user.c:910 +#, c-format +msgid "role \"%s\" does not exist, skipping" +msgstr "роль \"%s\" не существует, пропускается" + +#: commands/user.c:922 commands/user.c:926 +msgid "current user cannot be dropped" +msgstr "пользователь не может удалить сам себя" + +#: commands/user.c:930 +msgid "session user cannot be dropped" +msgstr "пользователя текущего сеанса нельзя удалить" + +#: commands/user.c:941 +msgid "must be superuser to drop superusers" +msgstr "для удаления суперпользователей нужно быть суперпользователем" + +#: commands/user.c:954 +#, c-format +msgid "role \"%s\" cannot be dropped because some objects depend on it" +msgstr "роль \"%s\" нельзя удалить, так как есть зависящие от неё объекты" + +#: commands/user.c:1071 +msgid "session user cannot be renamed" +msgstr "пользователя текущего сеанса нельзя переименовать" + +#: commands/user.c:1075 +msgid "current user cannot be renamed" +msgstr "пользователь не может переименовать сам себя" + +#: commands/user.c:1098 +msgid "must be superuser to rename superusers" +msgstr "для переименования суперпользователей нужно быть суперпользователем" + +#: 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 нельзя включать названия колонок" + +#: commands/user.c:1220 +msgid "permission denied to drop objects" +msgstr "нет прав на удаление объектов" + +#: 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 "требуется право admin для роли \"%s\"" + +#: commands/user.c:1337 +msgid "must be superuser to set grantor" +msgstr "для назначения права управления правами нужно быть суперпользователем" + +#: 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/user.c:1488 +#, c-format +msgid "role \"%s\" is not a member of role \"%s\"" +msgstr "роль \"%s\" не включена в роль \"%s\"" + +#: commands/foreigncmds.c:135 commands/foreigncmds.c:144 +#, c-format +msgid "option \"%s\" not found" +msgstr "нераспознанный параметр \"%s\"" + +#: commands/foreigncmds.c:154 +#, c-format +msgid "option \"%s\" provided more than once" +msgstr "параметр \"%s\" указан неоднократно" + +#: commands/foreigncmds.c:221 commands/foreigncmds.c:229 +#, c-format +msgid "permission denied to change owner of foreign-data wrapper \"%s\"" +msgstr "нет прав на изменение владельца обёртки сторонних данных \"%s\"" + +#: commands/foreigncmds.c:223 +msgid "Must be superuser to change owner of a foreign-data wrapper." +msgstr "" +"Для смены владельца обёртки сторонних данных нужно быть суперпользователем." + +#: commands/foreigncmds.c:231 +msgid "The owner of a foreign-data wrapper must be a superuser." +msgstr "Владельцем обёртки сторонних данных должен быть суперпользователь." + +#: commands/foreigncmds.c:265 commands/foreigncmds.c:636 +#: commands/foreigncmds.c:784 foreign/foreign.c:524 +#, c-format +msgid "foreign-data wrapper \"%s\" does not exist" +msgstr "обёртка сторонних данных \"%s\" не существует" + +#: commands/foreigncmds.c:292 catalog/aclchk.c:3873 catalog/aclchk.c:4555 +#, c-format +msgid "foreign-data wrapper with OID %u does not exist" +msgstr "обёртка сторонних данных с OID %u не существует" + +#: commands/foreigncmds.c:366 commands/foreigncmds.c:962 +#: commands/foreigncmds.c:1050 commands/foreigncmds.c:1334 +#: foreign/foreign.c:544 +#, c-format +msgid "server \"%s\" does not exist" +msgstr "сервер \"%s\" не существует" + +#: commands/foreigncmds.c:391 catalog/aclchk.c:3934 catalog/aclchk.c:4582 +#, c-format +msgid "foreign server with OID %u does not exist" +msgstr "сторонний сервер с OID %u не существует" + +#: commands/foreigncmds.c:418 +#, c-format +msgid "function %s must return type \"fdw_handler\"" +msgstr "функция %s должна возвращать тип \"fdw_handler\"" + +#: commands/foreigncmds.c:513 +#, c-format +msgid "permission denied to create foreign-data wrapper \"%s\"" +msgstr "нет прав на создание обёртки сторонних данных \"%s\"" + +#: commands/foreigncmds.c:515 +msgid "Must be superuser to create a foreign-data wrapper." +msgstr "Для создания обёртки сторонних данных нужно быть суперпользователем." + +#: commands/foreigncmds.c:526 +#, c-format +msgid "foreign-data wrapper \"%s\" already exists" +msgstr "обёртка сторонних данных \"%s\" уже существует" + +#: commands/foreigncmds.c:626 +#, c-format +msgid "permission denied to alter foreign-data wrapper \"%s\"" +msgstr "нет прав на изменение обёртки сторонних данных \"%s\"" + +#: commands/foreigncmds.c:628 +msgid "Must be superuser to alter a foreign-data wrapper." +msgstr "Для изменения обёртки сторонних данных нужно быть суперпользователем." + +#: commands/foreigncmds.c:659 +msgid "" +"changing the foreign-data wrapper handler can change behavior of existing " +"foreign tables" +msgstr "" +"при изменении обработчика в обёртке сторонних данных может измениться " +"поведение существующих сторонних таблиц" + +#: commands/foreigncmds.c:673 +msgid "" +"changing the foreign-data wrapper validator can cause the options for " +"dependent objects to become invalid" +msgstr "" +"при изменении функции проверки в обёртке сторонних данных параметры " +"зависимых объектов могут стать неверными" + +#: commands/foreigncmds.c:775 +#, c-format +msgid "permission denied to drop foreign-data wrapper \"%s\"" +msgstr "нет прав на удаление обёртки сторонних данных \"%s\"" + +#: commands/foreigncmds.c:777 +msgid "Must be superuser to drop a foreign-data wrapper." +msgstr "Для удаления обёртки сторонних данных нужно быть суперпользователем." + +#: commands/foreigncmds.c:789 +#, c-format +msgid "foreign-data wrapper \"%s\" does not exist, skipping" +msgstr "обёртка сторонних данных \"%s\" не существует, пропускается" + +#: commands/foreigncmds.c:858 +#, c-format +msgid "server \"%s\" already exists" +msgstr "сервер \"%s\" уже существует" + +#: commands/foreigncmds.c:1054 +#, c-format +msgid "server \"%s\" does not exist, skipping" +msgstr "сервер \"%s\" не существует, пропускается" + +#: commands/foreigncmds.c:1159 +#, c-format +msgid "user mapping \"%s\" already exists for server %s" +msgstr "сопоставление пользователей \"%s\" для сервера \"%s\" уже существует" + +#: commands/foreigncmds.c:1245 commands/foreigncmds.c:1350 +#, c-format +msgid "user mapping \"%s\" does not exist for the server" +msgstr "сопоставление пользователей \"%s\" для данного сервера не существует" + +#: commands/foreigncmds.c:1337 +msgid "server does not exist, skipping" +msgstr "сервер не существует, пропускается" + +#: commands/foreigncmds.c:1355 +#, c-format +msgid "user mapping \"%s\" does not exist for the server, skipping" +msgstr "" +"сопоставление пользователей \"%s\" не существует для сервера, пропускается" + +#: commands/vacuum.c:419 +msgid "oldest xmin is far in the past" +msgstr "самый старый xmin далеко в прошлом" + +#: commands/vacuum.c:420 +msgid "Close open transactions soon to avoid wraparound problems." +msgstr "" +"Скорее закройте открытые транзакции, чтобы избежать проблемы наложения." + +#: commands/vacuum.c:811 +msgid "some databases have not been vacuumed in over 2 billion transactions" +msgstr "" +"есть базы данных, которые не очищались на протяжении более чем 2 миллиардов " +"транзакций" + +#: commands/vacuum.c:812 +msgid "You might have already suffered transaction-wraparound data loss." +msgstr "Возможно, вы уже потеряли данные в результате наложения ID транзакций." + +#: commands/vacuum.c:919 +#, c-format +msgid "skipping vacuum of \"%s\" --- lock not available" +msgstr "очистка \"%s\" пропускается --- блокировка недоступна" + +#: commands/vacuum.c:945 +#, c-format +msgid "skipping \"%s\" --- only superuser can vacuum it" +msgstr "" +"\"%s\" пропускается --- только суперпользователь может очистить эту таблицу" + +#: commands/vacuum.c:949 +#, c-format +msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" +msgstr "" +"пропускается \"%s\" --- только суперпользователь или владелец БД может " +"очистить эту таблицу" + +#: commands/vacuum.c:953 +#, c-format +msgid "skipping \"%s\" --- only table or database owner can vacuum it" +msgstr "" +"\"%s\" пропускается --- только владелец базы данных или этой таблицы может " +"очистить её" + +#: commands/vacuum.c:970 +#, c-format +msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables" +msgstr "" +"\"%s\" пропускается --- очищать не таблицы или специальные системные таблицы " +"нельзя" + +#: commands/async.c:567 +msgid "channel name cannot be empty" +msgstr "имя канала не может быть пустым" + +#: commands/async.c:572 +msgid "channel name too long" +msgstr "слишком длинное имя канала" + +#: commands/async.c:579 +msgid "payload string too long" +msgstr "слишком длинная строка сообщения-нагрузки" + +#: commands/async.c:764 +msgid "" +"cannot PREPARE a transaction that has executed LISTEN, UNLISTEN or NOTIFY" +msgstr "" +"выполнить PREPARE для транзакции с командами LISTEN, UNLISTEN или NOTIFY " +"нельзя" + +#: commands/async.c:867 +msgid "too many notifications in the NOTIFY queue" +msgstr "слишком много уведомлений в очереди NOTIFY" + +#: commands/async.c:1440 +#, c-format +msgid "NOTIFY queue is %.0f%% full" +msgstr "очередь NOTIFY заполнена на %.0f%%" + +#: commands/async.c:1442 +#, c-format +msgid "" +"The server process with PID %d is among those with the oldest transactions." +msgstr "" +"В число серверных процессов с самыми старыми транзакциями входит процесс с " +"PID %d." + +#: commands/async.c:1445 +msgid "" +"The NOTIFY queue cannot be emptied until that process ends its current " +"transaction." +msgstr "" +"Очередь NOTIFY можно будет освободить, только когда этот процесс завершит " +"текущую транзакцию." + +#: commands/trigger.c:159 +#, c-format +msgid "\"%s\" is a table" +msgstr "\"%s\" - это таблица" + +#: commands/trigger.c:161 +msgid "Tables cannot have INSTEAD OF triggers." +msgstr "У таблиц не может быть триггеров INSTEAD OF." + +#: commands/trigger.c:172 commands/trigger.c:179 +#, c-format +msgid "\"%s\" is a view" +msgstr "\"%s\" - это представление" + +#: commands/trigger.c:174 +msgid "Views cannot have row-level BEFORE or AFTER triggers." +msgstr "У представлений не может быть строковых триггеров BEFORE/AFTER." + +#: commands/trigger.c:181 +msgid "Views cannot have TRUNCATE triggers." +msgstr "У представлений не может быть триггеров TRUNCATE." + +#: commands/trigger.c:228 +msgid "TRUNCATE FOR EACH ROW triggers are not supported" +msgstr "триггеры TRUNCATE FOR EACH ROW не поддерживаются" + +#: commands/trigger.c:236 +msgid "INSTEAD OF triggers must be FOR EACH ROW" +msgstr "триггеры INSTEAD OF должны иметь тип FOR EACH ROW" + +#: commands/trigger.c:240 +msgid "INSTEAD OF triggers cannot have WHEN conditions" +msgstr "триггеры INSTEAD OF несовместимы с условиями WHEN" + +#: commands/trigger.c:244 +msgid "INSTEAD OF triggers cannot have column lists" +msgstr "для триггеров INSTEAD OF нельзя задать список колонок" + +#: commands/trigger.c:288 +msgid "cannot use subquery in trigger WHEN condition" +msgstr "в условии WHEN для триггера нельзя использовать подзапросы" + +#: commands/trigger.c:292 +msgid "cannot use aggregate function in trigger WHEN condition" +msgstr "в условии WHEN для триггера нельзя использовать агрегатные функции" + +#: commands/trigger.c:296 +msgid "cannot use window function in trigger WHEN condition" +msgstr "в условии WHEN для триггера нельзя использоваться оконные функции" + +#: commands/trigger.c:318 commands/trigger.c:331 +msgid "statement trigger's WHEN condition cannot reference column values" +msgstr "" +"в условии WHEN для операторного триггера нельзя ссылаться на значения колонок" + +#: commands/trigger.c:323 +msgid "INSERT trigger's WHEN condition cannot reference OLD values" +msgstr "в условии WHEN для триггера INSERT нельзя ссылаться на значения OLD" + +#: commands/trigger.c:336 +msgid "DELETE trigger's WHEN condition cannot reference NEW values" +msgstr "в условии WHEN для триггера DELETE нельзя ссылаться на значения NEW" + +#: commands/trigger.c:341 +msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns" +msgstr "" +"в условии WHEN для триггера BEFORE нельзя ссылаться на системные колонки NEW" + +#: commands/trigger.c:386 +#, c-format +msgid "changing return type of function %s from \"opaque\" to \"trigger\"" +msgstr "изменение типа возврата функции %s с \"opaque\" на \"trigger\"" + +#: commands/trigger.c:393 +#, c-format +msgid "function %s must return type \"trigger\"" +msgstr "функция %s должна возвращать тип \"trigger\"" + +#: commands/trigger.c:503 commands/trigger.c:1241 +#, c-format +msgid "trigger \"%s\" for relation \"%s\" already exists" +msgstr "триггер \"%s\" для отношения \"%s\" уже существует" + +#: commands/trigger.c:788 +msgid "Found referenced table's UPDATE trigger." +msgstr "Найден триггер UPDATE в главной таблице." + +#: commands/trigger.c:789 +msgid "Found referenced table's DELETE trigger." +msgstr "Найден триггер DELETE в главной таблице." + +#: commands/trigger.c:790 +msgid "Found referencing table's trigger." +msgstr "Найден триггер в подчинённой таблице." + +#: commands/trigger.c:899 commands/trigger.c:915 +#, c-format +msgid "ignoring incomplete trigger group for constraint \"%s\" %s" +msgstr "неполный набор триггеров для ограничения \"%s\" %s игнорируется" + +#: commands/trigger.c:927 +#, c-format +msgid "converting trigger group into constraint \"%s\" %s" +msgstr "преобразование набора триггеров в ограничение \"%s\" %s" + +#: commands/trigger.c:1043 +#, c-format +msgid "trigger \"%s\" for table \"%s\" does not exist, skipping" +msgstr "триггер \"%s\" для таблицы \"%s\" не существует, пропускается" + +#: commands/trigger.c:1170 commands/trigger.c:1283 commands/trigger.c:1394 +#, c-format +msgid "trigger \"%s\" for table \"%s\" does not exist" +msgstr "триггер \"%s\" для таблицы \"%s\" не существует" + +#: commands/trigger.c:1362 +#, c-format +msgid "permission denied: \"%s\" is a system trigger" +msgstr "нет доступа: \"%s\" - это системный триггер" + +#: commands/trigger.c:1844 +#, c-format +msgid "trigger function %u returned null value" +msgstr "триггерная функция %u вернула значение NULL" + +#: commands/trigger.c:1903 commands/trigger.c:2102 commands/trigger.c:2286 +#: commands/trigger.c:2528 +msgid "BEFORE STATEMENT trigger cannot return a value" +msgstr "триггер BEFORE STATEMENT не может возвращать значение" + +#: commands/trigger.c:2590 executor/nodeLockRows.c:137 +#: executor/nodeModifyTable.c:366 executor/nodeModifyTable.c:588 +#: executor/execMain.c:1867 +msgid "could not serialize access due to concurrent update" +msgstr "не удалось сериализовать доступ из-за параллельного изменения" + +#: commands/trigger.c:4166 catalog/namespace.c:234 catalog/namespace.c:318 +#, c-format +msgid "cross-database references are not implemented: \"%s.%s.%s\"" +msgstr "ссылки между базами не реализованы: \"%s.%s.%s\"" + +#: commands/trigger.c:4217 +#, c-format +msgid "constraint \"%s\" is not deferrable" +msgstr "ограничение \"%s\" не является откладываемым" + +#: commands/trigger.c:4240 +#, c-format +msgid "constraint \"%s\" does not exist" +msgstr "ограничение \"%s\" не существует" + +#: 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:158 +#, c-format +msgid "operator attribute \"%s\" not recognized" +msgstr "атрибут оператора \"%s\" не распознан" + +#: commands/operatorcmds.c:168 +msgid "operator procedure must be specified" +msgstr "должна быть указана процедура оператора" + +#: commands/operatorcmds.c:179 +msgid "at least one of leftarg or rightarg must be specified" +msgstr "необходимо указать левый и/или правый аргумент" + +#: commands/operatorcmds.c:228 +#, c-format +msgid "restriction estimator function %s must return type \"float8\"" +msgstr "функция оценки ограничения %s должна возвращать тип \"float8\"" + +#: commands/operatorcmds.c:267 +#, c-format +msgid "join estimator function %s must return type \"float8\"" +msgstr "функция оценки соединения %s должна возвращать тип \"float8\"" + +#: commands/operatorcmds.c:318 +#, c-format +msgid "operator %s does not exist, skipping" +msgstr "оператор %s не существует, пропускается" + +#: commands/typecmds.c:169 +msgid "must be superuser to create a base type" +msgstr "для создания базового типа нужно быть суперпользователем" + +#: commands/typecmds.c:224 commands/typecmds.c:806 commands/typecmds.c:1145 +#: commands/typecmds.c:1622 catalog/pg_type.c:396 catalog/pg_type.c:699 +#: catalog/heap.c:1029 +#, c-format +msgid "type \"%s\" already exists" +msgstr "тип \"%s\" уже существует" + +#: 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:348 +#, c-format +msgid "array element type cannot be %s" +msgstr "типом элемента массива не может быть %s" + +#: commands/typecmds.c:380 +#, c-format +msgid "alignment \"%s\" not recognized" +msgstr "тип выравнивания \"%s\" не распознан" + +#: commands/typecmds.c:397 +#, c-format +msgid "storage \"%s\" not recognized" +msgstr "неизвестная стратегия хранения \"%s\"" + +#: commands/typecmds.c:408 +msgid "type input function must be specified" +msgstr "необходимо указать функцию ввода типа" + +#: 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:440 +#, c-format +msgid "changing return type of function %s from \"opaque\" to %s" +msgstr "изменение типа возврата функции %s с \"opaque\" на %s" + +#: commands/typecmds.c:447 +#, c-format +msgid "type input function %s must return type %s" +msgstr "функция ввода типа %s должна возвращать тип %s" + +#: commands/typecmds.c:457 +#, c-format +msgid "changing return type of function %s from \"opaque\" to \"cstring\"" +msgstr "изменение типа возврата функции %s с \"opaque\" на \"cstring\"" + +#: commands/typecmds.c:464 +#, c-format +msgid "type output function %s must return type \"cstring\"" +msgstr "функция вывода типа %s должна возвращать тип \"cstring\"" + +#: commands/typecmds.c:473 +#, c-format +msgid "type receive function %s must return type %s" +msgstr "функция получения типа %s должна возвращать тип %s" + +#: commands/typecmds.c:482 +#, c-format +msgid "type send function %s must return type \"bytea\"" +msgstr "функция отправки типа %s должна возвращать тип \"bytea\"" + +#: commands/typecmds.c:687 +#, c-format +msgid "\"%s\" is not a domain" +msgstr "\"%s\" - это не домен" + +#: commands/typecmds.c:827 +#, c-format +msgid "\"%s\" is not a valid base type for a domain" +msgstr "\"%s\" - не подходящий базовый тип для домена" + +#: commands/typecmds.c:909 +msgid "multiple default expressions" +msgstr "неоднократное определение значения типа по умолчанию" + +#: commands/typecmds.c:973 commands/typecmds.c:982 +msgid "conflicting NULL/NOT NULL constraints" +msgstr "конфликтующие ограничения NULL/NOT NULL" + +#: commands/typecmds.c:1001 commands/typecmds.c:1984 +msgid "unique constraints not possible for domains" +msgstr "ограничения уникальности невозможны для доменов" + +#: commands/typecmds.c:1007 commands/typecmds.c:1990 +msgid "primary key constraints not possible for domains" +msgstr "ограничения первичного ключа невозможны для доменов" + +#: commands/typecmds.c:1013 commands/typecmds.c:1996 +msgid "exclusion constraints not possible for domains" +msgstr "ограничения-исключения невозможны для доменов" + +#: commands/typecmds.c:1019 commands/typecmds.c:2002 +msgid "foreign key constraints not possible for domains" +msgstr "ограничения внешних ключей невозможны для доменов" + +#: commands/typecmds.c:1028 commands/typecmds.c:2011 +msgid "specifying constraint deferrability not supported for domains" +msgstr "" +"возможность определения отложенных ограничений для доменов не поддерживается" + +#: commands/typecmds.c:1332 +#, c-format +msgid "changing argument type of function %s from \"opaque\" to \"cstring\"" +msgstr "изменение типа аргумента функции %s с \"opaque\" на \"cstring\"" + +#: 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 catalog/pg_aggregate.c:331 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 не существует" + +#: commands/typecmds.c:1383 +#, c-format +msgid "changing argument type of function %s from \"opaque\" to %s" +msgstr "изменение типа аргумента функции %s с \"opaque\" на %s" + +#: commands/typecmds.c:1482 +#, c-format +msgid "typmod_in function %s must return type \"integer\"" +msgstr "функция TYPMOD_IN %s должна возвращать тип \"integer\"" + +#: commands/typecmds.c:1509 +#, c-format +msgid "typmod_out function %s must return type \"cstring\"" +msgstr "функция TYPMOD_OUT %s должна возвращать тип \"cstring\"" + +#: commands/typecmds.c:1536 +#, c-format +msgid "type analyze function %s must return type \"boolean\"" +msgstr "функция анализа типа %s должна возвращать тип \"boolean\"" + +#: commands/typecmds.c:1836 +#, c-format +msgid "column \"%s\" of table \"%s\" contains null values" +msgstr "колонка \"%s\" таблицы \"%s\" содержит значения NULL" + +#: commands/typecmds.c:2082 +#, c-format +msgid "" +"column \"%s\" of table \"%s\" contains values that violate the new constraint" +msgstr "" +"колонка \"%s\" таблицы \"%s\" содержит значения, нарушающие новое ограничение" + +#: commands/typecmds.c:2287 +#, c-format +msgid "%s is not a domain" +msgstr "\"%s\" - это не домен" + +#: commands/typecmds.c:2321 catalog/pg_constraint.c:654 +#, c-format +msgid "constraint \"%s\" for domain \"%s\" already exists" +msgstr "ограничение \"%s\" для домена \"%s\" уже существует" + +#: commands/typecmds.c:2369 commands/typecmds.c:2378 +msgid "cannot use table references in domain check constraint" +msgstr "в ограничении-проверке для домена нельзя ссылаться на таблицы" + +#: commands/typecmds.c:2386 catalog/heap.c:2501 +msgid "cannot use subquery in check constraint" +msgstr "в ограничении-проверке нельзя использовать подзапросы" + +#: commands/typecmds.c:2390 catalog/heap.c:2505 +msgid "cannot use aggregate function in check constraint" +msgstr "в ограничении-проверке нельзя использовать агрегатные функции" + +#: commands/typecmds.c:2394 catalog/heap.c:2509 +msgid "cannot use window function in check constraint" +msgstr "в ограничении-проверке нельзя использовать оконные функции" + +#: commands/typecmds.c:2608 commands/typecmds.c:2680 commands/typecmds.c:2919 +#, c-format +msgid "%s is a table's row type" +msgstr "%s - это тип строк таблицы" + +#: commands/typecmds.c:2610 commands/typecmds.c:2682 commands/typecmds.c:2921 +msgid "Use ALTER TABLE instead." +msgstr "Изменить его можно с помощью ALTER TABLE." + +#: commands/typecmds.c:2617 commands/typecmds.c:2689 commands/typecmds.c:2838 +#, c-format +msgid "cannot alter array type %s" +msgstr "изменить тип массива \"%s\" нельзя" + +#: commands/typecmds.c:2619 commands/typecmds.c:2691 commands/typecmds.c:2840 +#, c-format +msgid "You can alter type %s, which will alter the array type as well." +msgstr "Однако можно изменить тип %s, что повлечёт изменение типа массива." + +#: commands/typecmds.c:2905 +#, c-format +msgid "type \"%s\" already exists in schema \"%s\"" +msgstr "тип \"%s\" уже существует в схеме \"%s\"" + +#: commands/tsearchcmds.c:117 commands/tsearchcmds.c:1044 +#, c-format +msgid "function %s should return type %s" +msgstr "функция %s должна возвращать тип %s" + +#: commands/tsearchcmds.c:189 +msgid "must be superuser to create text search parsers" +msgstr "" +"для создания анализаторов текстового поиска нужно быть суперпользователем" + +#: commands/tsearchcmds.c:237 +#, c-format +msgid "text search parser parameter \"%s\" not recognized" +msgstr "параметр анализатора текстового поиска \"%s\" не распознан" + +#: commands/tsearchcmds.c:247 +msgid "text search parser start method is required" +msgstr "для анализатора текстового поиска требуется метод start" + +#: commands/tsearchcmds.c:252 +msgid "text search parser gettoken method is required" +msgstr "для анализатора текстового поиска требуется метод gettoken" + +#: commands/tsearchcmds.c:257 +msgid "text search parser end method is required" +msgstr "для анализатора текстового поиска требуется метод end" + +#: commands/tsearchcmds.c:262 +msgid "text search parser lextypes method is required" +msgstr "для анализатора текстового поиска требуется метод lextypes" + +#: commands/tsearchcmds.c:297 +msgid "must be superuser to drop text search parsers" +msgstr "" +"для удаления анализатора текстового поиска нужно быть суперпользователем" + +#: commands/tsearchcmds.c:320 catalog/namespace.c:1906 +#, c-format +msgid "text search parser \"%s\" does not exist" +msgstr "анализатор текстового поиска \"%s\" не существует" + +#: commands/tsearchcmds.c:326 +#, c-format +msgid "text search parser \"%s\" does not exist, skipping" +msgstr "анализатор текстового поиска \"%s\" не существует, пропускается" + +#: commands/tsearchcmds.c:381 +msgid "must be superuser to rename text search parsers" +msgstr "" +"для переименования анализаторов текстового поиска нужно быть " +"суперпользователем" + +#: commands/tsearchcmds.c:399 +#, c-format +msgid "text search parser \"%s\" already exists" +msgstr "анализатор текстового поиска \"%s\" уже существует" + +#: commands/tsearchcmds.c:525 +#, c-format +msgid "text search template \"%s\" does not accept options" +msgstr "шаблон текстового поиска \"%s\" не принимает параметры" + +#: commands/tsearchcmds.c:598 +msgid "text search template is required" +msgstr "требуется шаблон текстового поиска" + +#: commands/tsearchcmds.c:667 +#, c-format +msgid "text search dictionary \"%s\" already exists" +msgstr "словарь текстового поиска \"%s\" уже существует" + +#: commands/tsearchcmds.c:769 catalog/namespace.c:2029 +#, c-format +msgid "text search dictionary \"%s\" does not exist" +msgstr "словарь текстового поиска \"%s\" не существует" + +#: commands/tsearchcmds.c:775 +#, c-format +msgid "text search dictionary \"%s\" does not exist, skipping" +msgstr "словарь текстового поиска \"%s\" не существует, пропускается" + +#: commands/tsearchcmds.c:1108 +msgid "must be superuser to create text search templates" +msgstr "для создания шаблонов текстового поиска нужно быть суперпользователем" + +#: commands/tsearchcmds.c:1145 +#, c-format +msgid "text search template parameter \"%s\" not recognized" +msgstr "параметр шаблона текстового поиска \"%s\" не распознан" + +#: commands/tsearchcmds.c:1155 +msgid "text search template lexize method is required" +msgstr "для шаблона текстового поиска требуется метод lexize" + +#: commands/tsearchcmds.c:1193 +msgid "must be superuser to rename text search templates" +msgstr "" +"для переименования шаблонов текстового поиска нужно быть суперпользователем" + +#: commands/tsearchcmds.c:1212 +#, c-format +msgid "text search template \"%s\" already exists" +msgstr "шаблон текстового поиска \"%s\" уже существует" + +#: commands/tsearchcmds.c:1281 +msgid "must be superuser to drop text search templates" +msgstr "для удаления шаблонов текстового поиска нужно быть суперпользователем" + +#: commands/tsearchcmds.c:1304 catalog/namespace.c:2153 +#, c-format +msgid "text search template \"%s\" does not exist" +msgstr "шаблон текстового поиска \"%s\" не существует" + +#: commands/tsearchcmds.c:1310 +#, 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\" не распознан" + +#: 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\" не существует, пропускается" + +#: commands/tsearchcmds.c:1981 +#, c-format +msgid "token type \"%s\" does not exist" +msgstr "тип фрагмента \"%s\" не существует" + +#: commands/tsearchcmds.c:2203 +#, c-format +msgid "mapping for token type \"%s\" does not exist" +msgstr "сопоставление для типа фрагмента \"%s\" не существует" + +#: commands/tsearchcmds.c:2209 +#, c-format +msgid "mapping for token type \"%s\" does not exist, skipping" +msgstr "сопоставление для типа фрагмента \"%s\" не существует, пропускается" + +#: commands/tsearchcmds.c:2362 commands/tsearchcmds.c:2473 +#, c-format +msgid "invalid parameter list format: \"%s\"" +msgstr "неверный формат списка параметров: \"%s\"" + +#: commands/alter.c:415 +#, c-format +msgid "must be superuser to set schema of %s" +msgstr "для назначения схемы объекта %s нужно быть суперпользователем" + +#: commands/alter.c:443 +#, c-format +msgid "%s already exists in schema \"%s\"" +msgstr "\"%s\" уже существует в схеме \"%s\"" + +#: foreign/foreign.c:198 +#, c-format +msgid "user mapping not found for \"%s\"" +msgstr "сопоставление пользователя для \"%s\" не найдено" + +#: foreign/foreign.c:321 +#, c-format +msgid "foreign-data wrapper \"%s\" has no handler" +msgstr "обёртка сторонних данных \"%s\" не имеет обработчика" + +#: foreign/foreign.c:498 +#, c-format +msgid "invalid option \"%s\"" +msgstr "неверный параметр \"%s\"" + +#: foreign/foreign.c:499 +#, c-format +msgid "Valid options in this context are: %s" +msgstr "В данном контексте допустимы параметры: %s" + +#: regex/regc_pg_locale.c:258 +msgid "could not determine which collation to use for regular expression" +msgstr "" +"не удалось определить, какое правило сортировки использовать для регулярного " +"выражения" + +#: nodes/nodeFuncs.c:114 nodes/nodeFuncs.c:140 parser/parse_coerce.c:1671 +#: parser/parse_coerce.c:1688 parser/parse_coerce.c:1750 +#: parser/parse_expr.c:1638 parser/parse_oper.c:948 parser/parse_func.c:367 +#, c-format +msgid "could not find array type for data type %s" +msgstr "тип массива для типа данных %s не найден" + +#: executor/nodeSubplan.c:302 executor/nodeSubplan.c:341 +#: executor/nodeSubplan.c:968 +msgid "more than one row returned by a subquery used as an expression" +msgstr "подзапрос в выражении вернул больше одной строки" + +#: executor/nodeWindowAgg.c:1238 +msgid "frame starting offset must not be null" +msgstr "смещение начала рамки не может быть NULL" + +#: executor/nodeWindowAgg.c:1251 +msgid "frame starting offset must not be negative" +msgstr "смещение начала рамки не может быть отрицательным" + +#: executor/nodeWindowAgg.c:1264 +msgid "frame ending offset must not be null" +msgstr "смещение конца рамки не может быть NULL" + +#: executor/nodeWindowAgg.c:1277 +msgid "frame ending offset must not be negative" +msgstr "смещение конца рамки не может быть отрицательным" + +#: executor/nodeWindowAgg.c:1851 executor/nodeAgg.c:1730 +#, c-format +msgid "aggregate %u needs to have compatible input type and transition type" +msgstr "" +"агрегатная функция %u должна иметь совместимые входной и переходный типы" + +#: 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:295 +#, c-format +msgid "%s is not allowed in a SQL function" +msgstr "%s нельзя использовать в SQL-функции" + +#. 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 "%s нельзя использовать в не изменчивой (volatile) функции" + +#: 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:1146 +#, c-format +msgid "SQL function \"%s\" statement %d" +msgstr "SQL-функция \"%s\", оператор %d" + +#: executor/functions.c:1162 catalog/pg_proc.c:891 +#, c-format +msgid "SQL function \"%s\"" +msgstr "SQL-функция \"%s\"" + +#: executor/functions.c:1172 +#, c-format +msgid "SQL function \"%s\" during startup" +msgstr "SQL-функция \"%s\" (при старте)" + +#: 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:1334 +msgid "" +"Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING." +msgstr "" +"Последним оператором в функции должен быть SELECT или INSERT/UPDATE/DELETE " +"RETURNING." + +#: executor/functions.c:1370 +msgid "Final statement must return exactly one column." +msgstr "Последний оператор должен возвращать одну колонку." + +#: executor/functions.c:1382 +#, c-format +msgid "Actual return type is %s." +msgstr "Фактический тип возврата: %s." + +#: executor/functions.c:1495 +msgid "Final statement returns too many columns." +msgstr "Последний оператор возвращает слишком много колонок." + +#: executor/functions.c:1528 +#, c-format +msgid "Final statement returns %s instead of %s at column %d." +msgstr "Последний оператор возвращает %s вместо %s для колонки %d." + +#: executor/functions.c:1558 +msgid "Final statement returns too few columns." +msgstr "Последний оператор возвращает слишком мало колонок." + +#: executor/functions.c:1607 +#, c-format +msgid "return type %s is not supported for SQL functions" +msgstr "для SQL-функций тип возврата %s не поддерживается" + +#: executor/nodeModifyTable.c:82 executor/nodeModifyTable.c:92 +#: executor/nodeModifyTable.c:109 executor/nodeModifyTable.c:117 +#: executor/execQual.c:837 executor/execQual.c:854 executor/execQual.c:1014 +msgid "table row type and query-specified row type do not match" +msgstr "тип строки таблицы отличается от типа строки-результата запроса" + +#: executor/nodeModifyTable.c:83 +msgid "Query has too many columns." +msgstr "Запрос возвращает больше колонок." + +#: executor/nodeModifyTable.c:93 executor/execQual.c:855 +#, c-format +msgid "Table has type %s at ordinal position %d, but query expects %s." +msgstr "" +"В таблице определён тип %s (номер колонки: %d), а в запросе предполагается " +"%s." + +#: executor/nodeModifyTable.c:110 +#, c-format +msgid "Query provides a value for a dropped column at ordinal position %d." +msgstr "" +"Запрос выдаёт значение для удалённой колонки (с порядковым номером %d)." + +#: executor/nodeModifyTable.c:118 +msgid "Query has too few columns." +msgstr "Запрос возвращает меньше колонок." + +#: executor/nodeLimit.c:253 +msgid "OFFSET must not be negative" +msgstr "OFFSET не может быть отрицательным" + +#: executor/nodeLimit.c:280 +msgid "LIMIT must not be negative" +msgstr "LIMIT не может быть отрицательным" + +#: executor/execMain.c:999 +#, c-format +msgid "cannot change sequence \"%s\"" +msgstr "последовательность \"%s\" изменить нельзя" + +#: executor/execMain.c:1005 +#, c-format +msgid "cannot change TOAST relation \"%s\"" +msgstr "TOAST-отношение \"%s\" изменить нельзя" + +#: executor/execMain.c:1015 +#, c-format +msgid "cannot insert into view \"%s\"" +msgstr "вставить данные в представление \"%s\" нельзя" + +#: executor/execMain.c:1017 +msgid "" +"You need an unconditional ON INSERT DO INSTEAD rule or an INSTEAD OF INSERT " +"trigger." +msgstr "" +"Для этого нужно безусловное правило ON INSERT DO INSTEAD или триггер INSTEAD " +"OF INSERT." + +#: executor/execMain.c:1023 +#, c-format +msgid "cannot update view \"%s\"" +msgstr "изменить данные в представлении \"%s\" нельзя" + +#: executor/execMain.c:1025 +msgid "" +"You need an unconditional ON UPDATE DO INSTEAD rule or an INSTEAD OF UPDATE " +"trigger." +msgstr "" +"Для этого нужно безусловное правило ON UPDATE DO INSTEAD или триггер INSTEAD " +"OF UPDATE." + +#: executor/execMain.c:1031 +#, c-format +msgid "cannot delete from view \"%s\"" +msgstr "удалить данные из представления \"%s\" нельзя" + +#: executor/execMain.c:1033 +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:1043 +#, c-format +msgid "cannot change foreign table \"%s\"" +msgstr "стороннюю таблицу \"%s\" изменить нельзя" + +#: executor/execMain.c:1049 +#, c-format +msgid "cannot change relation \"%s\"" +msgstr "отношение \"%s\" изменить нельзя" + +#: executor/execMain.c:1073 +#, c-format +msgid "cannot lock rows in sequence \"%s\"" +msgstr "блокировать строки в последовательности \"%s\" нельзя" + +#: executor/execMain.c:1080 +#, c-format +msgid "cannot lock rows in TOAST relation \"%s\"" +msgstr "блокировать строки в TOAST-отношении \"%s\" нельзя" + +#: executor/execMain.c:1087 +#, c-format +msgid "cannot lock rows in view \"%s\"" +msgstr "блокировать строки в представлении \"%s\" нельзя" + +#: executor/execMain.c:1094 +#, c-format +msgid "cannot lock rows in foreign table \"%s\"" +msgstr "блокировать строки в сторонней таблице \"%s\" нельзя" + +#: executor/execMain.c:1100 +#, c-format +msgid "cannot lock rows in relation \"%s\"" +msgstr "блокировать строки в отношении \"%s\" нельзя" + +#: executor/execMain.c:1571 +#, c-format +msgid "null value in column \"%s\" violates not-null constraint" +msgstr "нулевое значение в колонке \"%s\" нарушает ограничение NOT NULL" + +#: executor/execMain.c:1583 +#, c-format +msgid "new row for relation \"%s\" violates check constraint \"%s\"" +msgstr "новая строка в отношении \"%s\" нарушает ограничение-проверку \"%s\"" + +#: executor/nodeMergejoin.c:1604 +msgid "RIGHT JOIN is only supported with merge-joinable join conditions" +msgstr "" +"RIGHT JOIN поддерживается только с условиями, допускающими соединение " +"слиянием" + +#: executor/nodeMergejoin.c:1624 +msgid "FULL JOIN is only supported with merge-joinable join conditions" +msgstr "" +"FULL JOIN поддерживается только с условиями, допускающими соединение слиянием" + +#: executor/execUtils.c:1308 +#, c-format +msgid "could not create exclusion constraint \"%s\"" +msgstr "не удалось создать ограничение-исключение \"%s\"" + +#: executor/execUtils.c:1310 +#, c-format +msgid "Key %s conflicts with key %s." +msgstr "Ключ %s конфликтует с ключом %s." + +#: executor/execUtils.c:1315 +#, c-format +msgid "conflicting key value violates exclusion constraint \"%s\"" +msgstr "конфликтующее значение ключа нарушает ограничение-исключение \"%s\"" + +#: executor/execUtils.c:1317 +#, c-format +msgid "Key %s conflicts with existing key %s." +msgstr "Ключ %s конфликтует с существующим ключом %s." + +#: executor/spi.c:210 +msgid "transaction left non-empty SPI stack" +msgstr "после транзакции остался непустой стек SPI" + +#: executor/spi.c:211 executor/spi.c:275 +msgid "Check for missing \"SPI_finish\" calls." +msgstr "Проверьте наличие вызова \"SPI_finish\"." + +#: executor/spi.c:274 +msgid "subtransaction left non-empty SPI stack" +msgstr "после подтранзакции остался непустой стек SPI" + +#: executor/spi.c:1137 +msgid "cannot open multi-query plan as cursor" +msgstr "не удалось открыть план нескольких запросов как курсор" + +#. 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 как курсор" + +#: executor/spi.c:1233 parser/analyze.c:2213 +msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE не поддерживается" + +#: executor/spi.c:1234 parser/analyze.c:2214 +msgid "Scrollable cursors must be READ ONLY." +msgstr "Прокручиваемые курсоры должны быть READ ONLY." + +#: executor/spi.c:2157 +#, c-format +msgid "SQL statement \"%s\"" +msgstr "SQL-оператор: \"%s\"" + +#: executor/nodeHashjoin.c:814 executor/nodeHashjoin.c:844 +#, c-format +msgid "could not rewind hash-join temporary file: %m" +msgstr "не удалось переместиться во временном файле хэш-соединения: %m" + +#: executor/nodeHashjoin.c:879 executor/nodeHashjoin.c:885 +#, c-format +msgid "could not write to hash-join temporary file: %m" +msgstr "не удалось записать во временный файл хэш-соединения: %m" + +#: executor/nodeHashjoin.c:919 executor/nodeHashjoin.c:929 +#, c-format +msgid "could not read from hash-join temporary file: %m" +msgstr "не удалось прочитать временный файл хэш-соединения: %m" + +#: 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\" несколько ссылок FOR UPDATE/SHARE на таблицу \"%s\"" + +#: executor/execCurrent.c:122 +#, c-format +msgid "" +"cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\"" +msgstr "в курсоре \"%s\" нет ссылки FOR UPDATE/SHARE на таблицу \"%s\"" + +#: executor/execCurrent.c:132 executor/execCurrent.c:178 +#, c-format +msgid "cursor \"%s\" is not positioned on a row" +msgstr "курсор \"%s\" не указывает на строку" + +#: 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:1126 +#, c-format +msgid "" +"type of parameter %d (%s) does not match that when preparing the plan (%s)" +msgstr "" +"тип параметра %d (%s) не соответствует тому, с которым подготавливался план " +"(%s)" + +#: executor/execCurrent.c:242 executor/execQual.c:1138 +#, c-format +msgid "no value found for parameter %d" +msgstr "не найдено значение параметра %d" + +#: executor/execQual.c:316 executor/execQual.c:344 +msgid "array subscript in assignment must not be null" +msgstr "индекс элемента массива в присваивании не может быть NULL" + +#: executor/execQual.c:637 executor/execQual.c:3998 +#, c-format +msgid "attribute %d has wrong type" +msgstr "атрибут %d имеет неверный тип" + +#: executor/execQual.c:638 executor/execQual.c:3999 +#, c-format +msgid "Table has type %s, but query expects %s." +msgstr "В таблице задан тип %s, а в запросе ожидается %s." + +#: executor/execQual.c:838 +#, 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." +msgstr[1] "Строка таблицы содержит %d атрибута, а в запросе ожидается %d." +msgstr[2] "Строка таблицы содержит %d атрибутов, а в запросе ожидается %d." + +#: executor/execQual.c:1015 executor/execQual.c:1612 +#, c-format +msgid "Physical storage mismatch on dropped attribute at ordinal position %d." +msgstr "" +"Несоответствие параметров физического хранения удалённого атрибута (под " +"номером %d)." + +#: executor/execQual.c:1291 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 аргумента" +msgstr[1] "функции нельзя передать больше %d аргументов" +msgstr[2] "функции нельзя передать больше %d аргументов" + +#: executor/execQual.c:1480 +msgid "functions and operators can take at most one set argument" +msgstr "функции и операторы принимают только один аргумент-множество" + +#: executor/execQual.c:1530 +msgid "" +"function returning setof record called in context that cannot accept type " +"record" +msgstr "" +"функция, возвращающая запись SET OF, вызвана в контексте, не допускающем " +"этот тип" + +#: executor/execQual.c:1585 executor/execQual.c:1601 executor/execQual.c:1611 +msgid "function return row and query-specified return row do not match" +msgstr "тип результат функции отличается от типа строки-результата запроса" + +#: executor/execQual.c:1586 +#, 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." +msgstr[1] "" +"Возвращённая строка содержит %d атрибутов, но запрос предполагает %d." +msgstr[2] "" +"Возвращённая строка содержит %d атрибутов, но запрос предполагает %d." + +#: executor/execQual.c:1602 +#, c-format +msgid "Returned type %s at ordinal position %d, but query expects %s." +msgstr "Возвращён тип %s (номер колонки: %d), а в запросе предполагается %s." + +#: executor/execQual.c:1838 executor/execQual.c:2263 +msgid "table-function protocol for materialize mode was not followed" +msgstr "нарушение протокола табличной функции в режиме материализации" + +#: executor/execQual.c:1858 executor/execQual.c:2270 +#, c-format +msgid "unrecognized table-function returnMode: %d" +msgstr "нераспознанный режим возврата табличной функции: %d" + +#: executor/execQual.c:2180 +msgid "function returning set of rows cannot return null value" +msgstr "функция, возвращающая множество строк, не может возвращать NULL" + +#: executor/execQual.c:2237 +msgid "rows returned by function are not all of the same row type" +msgstr "строки, возвращённые функцией, имеют разные типы" + +#: executor/execQual.c:2428 +msgid "IS DISTINCT FROM does not support set arguments" +msgstr "IS DISTINCT FROM не поддерживает аргументы-множества" + +#: executor/execQual.c:2505 +msgid "op ANY/ALL (array) does not support set arguments" +msgstr "операторы ANY/ALL (с массивом) не поддерживают аргументы-множества" + +#: executor/execQual.c:3058 +msgid "cannot merge incompatible arrays" +msgstr "не удалось объединить несовместимые массивы" + +#: executor/execQual.c:3059 +#, 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:3642 +msgid "NULLIF does not support set arguments" +msgstr "NULLIF не поддерживает аргументы-множества" + +#: executor/execQual.c:4394 optimizer/util/clauses.c:573 +#: parser/parse_agg.c:164 +msgid "aggregate function calls cannot be nested" +msgstr "вложенные вызовы агрегатных функций недопустимы" + +#: executor/execQual.c:4432 optimizer/util/clauses.c:647 +#: parser/parse_agg.c:211 +msgid "window function calls cannot be nested" +msgstr "вложенные вызовы оконных функций недопустимы" + +#: executor/execQual.c:4644 +msgid "target type is not an array" +msgstr "целевой тип не является массивом" + +#: executor/execQual.c:4757 +#, c-format +msgid "ROW() column has type %s instead of type %s" +msgstr "колонка ROW() имеет тип %s, а должна - %s" + +#: replication/walreceiver.c:150 +msgid "terminating walreceiver process due to administrator command" +msgstr "завершение процесса считывания журнала по команде администратора" + +#: replication/walreceiver.c:304 +msgid "cannot continue WAL streaming, recovery has already ended" +msgstr "продолжить передачу WAL нельзя, восстановление уже окончено" + +#: replication/walsender.c:141 +msgid "recovery is still in progress, can't accept WAL streaming connections" +msgstr "" +"восстановление ещё не завершено, подключения для передачи WAL не принимаются" + +#: replication/walsender.c:261 replication/walsender.c:489 +#: replication/walsender.c:547 +msgid "unexpected EOF on standby connection" +msgstr "неожиданный обрыв соединения с резервным сервером" + +#: replication/walsender.c:267 +#, c-format +msgid "invalid standby handshake message type %d" +msgstr "неверный тип сообщения согласования: %d" + +#: replication/walsender.c:379 +msgid "standby connections not allowed because wal_level=minimal" +msgstr "подключения резервных серверов не разрешены, так как wal_level=minimal" + +#: replication/walsender.c:461 +#, c-format +msgid "invalid standby query string: %s" +msgstr "неверная строка запроса резервного сервера: %s" + +#: replication/walsender.c:518 +#, c-format +msgid "invalid standby message type \"%c\"" +msgstr "неверный тип сообщения резервного сервера: \"%c\"" + +#: replication/walsender.c:569 +#, c-format +msgid "unexpected message type \"%c\"" +msgstr "неожиданный тип сообщения \"%c\"" + +#: replication/walsender.c:763 +#, c-format +msgid "standby \"%s\" has now caught up with primary" +msgstr "резервный сервер \"%s\" нагнал главный" + +#: replication/walsender.c:841 +msgid "terminating walsender process due to replication timeout" +msgstr "завершение процесса передачи журнала из-за таймаута репликации" + +#: replication/walsender.c:908 +#, c-format +msgid "" +"number of requested standby connections exceeds max_wal_senders (currently " +"%d)" +msgstr "" +"число запрошенных подключений резервных серверов превосходит max_wal_senders " +"(сейчас: %d)" + +#: replication/walsender.c:986 replication/walsender.c:1048 +#, c-format +msgid "requested WAL segment %s has already been removed" +msgstr "запрошенный сегмент WAL %s уже удалён" + +#: replication/walsender.c:1019 +#, c-format +msgid "could not read from log file %u, segment %u, offset %u, length %lu: %m" +msgstr "" +"не удалось прочитать файл журнала %u, сегмент %u, смещение %u, длина %lu: %m" + +#: replication/basebackup.c:126 replication/basebackup.c:715 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "не удалось прочитать символическую ссылку \"%s\": %m" + +#: replication/basebackup.c:133 replication/basebackup.c:719 +#, c-format +msgid "symbolic link \"%s\" target is too long" +msgstr "целевой путь символической ссылки \"%s\" слишком длинный" + +#: replication/basebackup.c:190 +#, c-format +msgid "could not stat control file \"%s\": %m" +msgstr "не удалось найти управляющий файл \"%s\": %m" + +#: replication/basebackup.c:267 replication/basebackup.c:868 +msgid "base backup could not send data, aborting backup" +msgstr "" +"в процессе базового резервного копирования не удалось передать данные, " +"копирование прерывается" + +#: replication/basebackup.c:314 replication/basebackup.c:323 +#: replication/basebackup.c:332 replication/basebackup.c:341 +#: replication/basebackup.c:350 +#, c-format +msgid "duplicate option \"%s\"" +msgstr "повторяющийся параметр \"%s\"" + +#: replication/basebackup.c:402 +#, c-format +msgid "could not open directory \"pg_tblspc\": %m" +msgstr "не удалось открыть каталог \"pg_tblspc\": %m" + +#: replication/basebackup.c:597 replication/basebackup.c:669 +#, c-format +msgid "could not stat file or directory \"%s\": %m" +msgstr "не удалось получить информацию о файле или каталоге \"%s\": %m" + +#: replication/basebackup.c:655 +msgid "shutdown requested, aborting active base backup" +msgstr "" +"запрошено выключение, активный процесс базового резервного копирования " +"прерывается" + +#: replication/basebackup.c:768 +#, c-format +msgid "skipping special file \"%s\"" +msgstr "специальный файл \"%s\" пропускается" + +#: replication/basebackup.c:858 +#, c-format +msgid "archive member \"%s\" too large for tar format" +msgstr "архивируемый файл \"%s\" слишком велик для формата tar" + +#: replication/syncrep.c:210 +msgid "" +"canceling the wait for synchronous replication and terminating connection " +"due to administrator command" +msgstr "" +"отмена ожидания синхронной репликации и закрытие соединения по команде " +"администратора" + +#: replication/syncrep.c:211 replication/syncrep.c:228 +msgid "" +"The transaction has already committed locally, but might not have been " +"replicated to the standby." +msgstr "" +"Транзакция уже была зафиксирована локально, но возможно не была " +"реплицирована на резервный сервер." + +#: replication/syncrep.c:227 +msgid "canceling wait for synchronous replication due to user request" +msgstr "отмена ожидания синхронной репликации по запросу пользователя" + +#: replication/syncrep.c:358 +#, c-format +msgid "standby \"%s\" now has synchronous standby priority %u" +msgstr "" +"резервный сервер \"%s\" теперь имеет приоритет синхронной репликации %u" + +#: replication/syncrep.c:456 +#, c-format +msgid "standby \"%s\" is now the synchronous standby with priority %u" +msgstr "" +"резервный сервер \"%s\" переходит в режим синхронной репликации с " +"приоритетом %u" + +#: repl_scanner.l:76 +msgid "invalid streaming start location" +msgstr "неверная позиция начала потока" + +#: repl_scanner.l:97 scan.l:629 +msgid "unterminated quoted string" +msgstr "незавершённая строка в кавычках" + +#: repl_scanner.l:107 +#, c-format +msgid "syntax error: unexpected character \"%s\"" +msgstr "ошибка синтаксиса: неожиданный символ \"%s\"" + +#: 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 "" +"не удалось получить идентификатор СУБД и код линии времени с главного " +"сервера: %s" + +#: 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 "Ожидался 1 кортеж с 3 полями, однако получено кортежей: %d, полей: %d." + +#: 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 "Идентификатор на главном сервере: %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 +#, c-format +msgid "could not start WAL streaming: %s" +msgstr "не удалось начать трансляцию WAL: %s" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:171 +msgid "streaming replication successfully connected to primary" +msgstr "приёмник потоковой репликации успешно подключен к главному серверу" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:193 +msgid "socket not open" +msgstr "сокет не открыт" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:233 port/pg_latch.c:265 +#: port/unix_latch.c:265 +#, c-format +msgid "select() failed: %m" +msgstr "ошибка в select(): %m" + +#: 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: %s" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:384 +msgid "replication terminated by primary server" +msgstr "репликация прекращена главным сервером" + +#: replication/libpqwalreceiver/libpqwalreceiver.c:415 +#, c-format +msgid "could not send data to WAL stream: %s" +msgstr "не удалось отправить данные в поток WAL: %s" + +#: optimizer/plan/initsplan.c:598 +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:940 parser/analyze.c:1333 parser/analyze.c:1541 +#: parser/analyze.c:2270 +msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT" +msgstr "SELECT FOR UPDATE/SHARE не допускается с UNION/INTERSECT/EXCEPT" + +#: optimizer/plan/planner.c:2235 +msgid "could not implement GROUP BY" +msgstr "не удалось реализовать GROUP BY" + +#: optimizer/plan/planner.c:2236 optimizer/plan/planner.c:2408 +#: optimizer/prep/prepunion.c:801 +msgid "" +"Some of the datatypes only support hashing, while others only support " +"sorting." +msgstr "" +"Одни типы данных поддерживают только хэширование, а другие - только " +"сортировку." + +#: optimizer/plan/planner.c:2407 +msgid "could not implement DISTINCT" +msgstr "не удалось реализовать DISTINCT" + +#: optimizer/plan/planner.c:2858 +msgid "could not implement window PARTITION BY" +msgstr "не удалось реализовать PARTITION BY для окна" + +#: optimizer/plan/planner.c:2859 +msgid "Window partitioning columns must be of sortable datatypes." +msgstr "Колонки, разбивающие окна, должны иметь сортируемые типы данных." + +#: optimizer/plan/planner.c:2863 +msgid "could not implement window ORDER BY" +msgstr "не удалось реализовать ORDER BY для окна" + +#: optimizer/plan/planner.c:2864 +msgid "Window ordering columns must be of sortable datatypes." +msgstr "Колонки, сортирующие окна, должны иметь сортируемые типы данных." + +#: optimizer/prep/prepunion.c:395 +msgid "could not implement recursive UNION" +msgstr "не удалось реализовать рекурсивный UNION" + +#: optimizer/prep/prepunion.c:396 +msgid "All column datatypes must be hashable." +msgstr "Все колонки должны иметь хэшируемые типы данных." + +#. translator: %s is UNION, INTERSECT, or EXCEPT +#: optimizer/prep/prepunion.c:800 +#, c-format +msgid "could not implement %s" +msgstr "не удалось реализовать %s" + +#: optimizer/path/joinrels.c:673 +msgid "" +"FULL JOIN is only supported with merge-joinable or hash-joinable join " +"conditions" +msgstr "" +"FULL JOIN поддерживается только с условиями, допускающими соединение " +"слиянием или хэш-соединение" + +#: optimizer/util/plancat.c:97 +msgid "cannot access temporary or unlogged relations during recovery" +msgstr "" +"обращаться к временным или нежурналируемым отношениям в процессе " +"восстановления нельзя" + +#: optimizer/util/clauses.c:4166 +#, c-format +msgid "SQL function \"%s\" during inlining" +msgstr "внедрённая в код SQL-функция \"%s\"" + +#: 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:310 +#, c-format +msgid "could not translate service \"%s\" to address: %s" +msgstr "не удалось перевести имя службы \"%s\" в адрес: %s" + +#: libpq/pqcomm.c:337 +#, c-format +msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded" +msgstr "" +"не удалось привязаться ко всем запрошенным адресам: превышен предел " +"MAXLISTEN (%d)" + +#: libpq/pqcomm.c:346 +msgid "IPv4" +msgstr "IPv4" + +#: libpq/pqcomm.c:350 +msgid "IPv6" +msgstr "IPv6" + +#: libpq/pqcomm.c:355 +msgid "Unix" +msgstr "Unix" + +#: libpq/pqcomm.c:360 +#, c-format +msgid "unrecognized address family %d" +msgstr "нераспознанное семейство адресов: %d" + +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:371 +#, c-format +msgid "could not create %s socket: %m" +msgstr "не удалось создать сокет %s: %m" + +#: libpq/pqcomm.c:396 +#, c-format +msgid "setsockopt(SO_REUSEADDR) failed: %m" +msgstr "ошибка в setsockopt(SO_REUSEADDR): %m" + +#: 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:430 +#, c-format +msgid "could not bind %s socket: %m" +msgstr "не удалось привязаться к сокету %s: %m" + +#: libpq/pqcomm.c:433 +#, c-format +msgid "" +"Is another postmaster already running on port %d? If not, remove socket file " +"\"%s\" and retry." +msgstr "" +"Возможно порт %d занят другим процессом postmaster? Если нет, удалите файл " +"\"%s\" и повторите попытку." + +#: libpq/pqcomm.c:436 +#, c-format +msgid "" +"Is another postmaster already running on port %d? If not, wait a few seconds " +"and retry." +msgstr "" +"Возможно порт %d занят другим процессом postmaster? Если нет, повторите " +"попытку через несколько секунд." + +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:469 +#, c-format +msgid "could not listen on %s socket: %m" +msgstr "не удалось начать приём в сокете %s: %m" + +#: libpq/pqcomm.c:499 +#, c-format +msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)" +msgstr "длина пути доменного сокета \"%s\" превышает предел (%d байт)" + +#: libpq/pqcomm.c:562 +#, c-format +msgid "group \"%s\" does not exist" +msgstr "группа \"%s\" не существует" + +#: libpq/pqcomm.c:572 +#, c-format +msgid "could not set group of file \"%s\": %m" +msgstr "не удалось установить группу для файла \"%s\": %m" + +#: libpq/pqcomm.c:583 +#, c-format +msgid "could not set permissions of file \"%s\": %m" +msgstr "не удалось установить права доступа для файла \"%s\": %m" + +#: libpq/pqcomm.c:613 +#, c-format +msgid "could not accept new connection: %m" +msgstr "не удалось принять новое подключение: %m" + +#: libpq/pqcomm.c:781 +#, c-format +msgid "could not set socket to non-blocking mode: %m" +msgstr "не удалось перевести сокет в неблокирующий режим: %m" + +#: libpq/pqcomm.c:787 +#, c-format +msgid "could not set socket to blocking mode: %m" +msgstr "не удалось перевести сокет в блокирующий режим: %m" + +#: libpq/pqcomm.c:839 libpq/pqcomm.c:929 +#, c-format +msgid "could not receive data from client: %m" +msgstr "не удалось получить данные от клиента: %m" + +#: libpq/pqcomm.c:1080 +msgid "unexpected EOF within message length word" +msgstr "неожиданный обрыв данных в слове длины сообщения" + +#: libpq/pqcomm.c:1091 +msgid "invalid message length" +msgstr "неверная длина сообщения" + +#: libpq/pqcomm.c:1113 libpq/pqcomm.c:1123 +msgid "incomplete message from client" +msgstr "неполное сообщение от клиента" + +#: libpq/pqcomm.c:1253 +#, c-format +msgid "could not send data to client: %m" +msgstr "не удалось послать данные клиенту: %m" + +#: libpq/be-secure.c:284 libpq/be-secure.c:379 +#, c-format +msgid "SSL error: %s" +msgstr "ошибка SSL: %s" + +#: libpq/be-secure.c:293 libpq/be-secure.c:388 libpq/be-secure.c:958 +#, 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 +msgid "SSL renegotiation failure" +msgstr "ошибка повторного согласования SSL" + +#: libpq/be-secure.c:340 +msgid "SSL failed to send renegotiation request" +msgstr "не удалось передать запрос повторного согласования SSL" + +#: libpq/be-secure.c:737 +#, c-format +msgid "could not create SSL context: %s" +msgstr "не удалось создать контекст SSL: %s" + +#: libpq/be-secure.c:753 +#, c-format +msgid "could not load server certificate file \"%s\": %s" +msgstr "не удалось загрузить сертификат сервера \"%s\": %s" + +#: libpq/be-secure.c:759 +#, c-format +msgid "could not access private key file \"%s\": %m" +msgstr "не удалось обратиться к файлу закрытого ключа \"%s\": %m" + +#: libpq/be-secure.c:774 +#, c-format +msgid "private key file \"%s\" has group or world access" +msgstr "к файлу закрытого ключа \"%s\" имеют доступ все или группа" + +#: libpq/be-secure.c:776 +msgid "Permissions should be u=rw (0600) or less." +msgstr "Права должны быть u=rw (0600) или более ограниченные." + +#: libpq/be-secure.c:783 +#, c-format +msgid "could not load private key file \"%s\": %s" +msgstr "не удалось загрузить файл закрытого ключа \"%s\": %s" + +#: libpq/be-secure.c:788 +#, c-format +msgid "check of private key failed: %s" +msgstr "ошибка при проверке закрытого ключа: %s" + +#: libpq/be-secure.c:816 +#, c-format +msgid "could not access root certificate file \"%s\": %m" +msgstr "не удалось обратиться к файлу корневых сертификатов \"%s\": %m" + +#: libpq/be-secure.c:827 +#, c-format +msgid "could not load root certificate file \"%s\": %s" +msgstr "не удалось загрузить файл корневых сертификатов \"%s\": %s" + +#: libpq/be-secure.c:850 +#, c-format +msgid "SSL certificate revocation list file \"%s\" ignored" +msgstr "файл со списком отзыва сертификатов SSL \"%s\" игнорируется" + +#: libpq/be-secure.c:852 +msgid "SSL library does not support certificate revocation lists." +msgstr "Библиотека SSL не поддерживает списки отзыва сертификатов." + +#: libpq/be-secure.c:859 +#, c-format +msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s" +msgstr "" +"файл со списком отзыва сертификатов SSL \"%s\" не найден, пропускается: %s" + +#: libpq/be-secure.c:861 +msgid "Certificates will not be checked against revocation list." +msgstr "Сертификаты не будут проверяться по списку отзыва." + +#: libpq/be-secure.c:903 +#, c-format +msgid "could not initialize SSL connection: %s" +msgstr "инициализировать SSL-подключение не удалось: %s" + +#: libpq/be-secure.c:912 +#, c-format +msgid "could not set SSL socket: %s" +msgstr "не удалось создать SSL-сокет: %s" + +#: libpq/be-secure.c:938 +#, c-format +msgid "could not accept SSL connection: %m" +msgstr "не удалось принять SSL-подключение: %m" + +#: libpq/be-secure.c:942 libpq/be-secure.c:953 +msgid "could not accept SSL connection: EOF detected" +msgstr "не удалось принять SSL-подключение: обрыв данных" + +#: libpq/be-secure.c:947 +#, c-format +msgid "could not accept SSL connection: %s" +msgstr "не удалось принять SSL-подключение: %s" + +#: libpq/be-secure.c:1003 +msgid "SSL certificate's common name contains embedded null" +msgstr "Имя SSL-сертификата включает нулевой байт" + +#: libpq/be-secure.c:1014 +#, c-format +msgid "SSL connection from \"%s\"" +msgstr "SSL-подключение от \"%s\"" + +#: libpq/be-secure.c:1065 +msgid "no SSL error reported" +msgstr "нет сообщения об ошибке SSL" + +#: libpq/be-secure.c:1069 +#, c-format +msgid "SSL error code %lu" +msgstr "код ошибки SSL: %lu" + +#: libpq/pqformat.c:436 +msgid "no data left in message" +msgstr "в сообщении не осталось данных" + +#: libpq/pqformat.c:636 +msgid "invalid string in message" +msgstr "неверная строка в сообщении" + +#: libpq/pqformat.c:652 +msgid "invalid message format" +msgstr "неверный формат сообщения" + +#: libpq/auth.c:257 +#, 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 +#, c-format +msgid "\"trust\" authentication failed for user \"%s\"" +msgstr "пользователь \"%s\" не прошёл проверку подлинности (\"trust\")" + +#: libpq/auth.c:266 +#, c-format +msgid "Ident authentication failed for user \"%s\"" +msgstr "пользователь \"%s\" не прошёл проверку подлинности (Ident)" + +#: libpq/auth.c:269 +#, c-format +msgid "Peer authentication failed for user \"%s\"" +msgstr "пользователь \"%s\" не прошёл проверку подлинности (Peer)" + +#: libpq/auth.c:273 +#, c-format +msgid "password authentication failed for user \"%s\"" +msgstr "пользователь \"%s\" не прошёл проверку подлинности (по паролю)" + +#: libpq/auth.c:278 +#, c-format +msgid "GSSAPI authentication failed for user \"%s\"" +msgstr "пользователь \"%s\" не прошёл проверку подлинности (GSSAPI)" + +#: libpq/auth.c:281 +#, c-format +msgid "SSPI authentication failed for user \"%s\"" +msgstr "пользователь \"%s\" не прошёл проверку подлинности (SSPI)" + +#: libpq/auth.c:284 +#, c-format +msgid "PAM authentication failed for user \"%s\"" +msgstr "пользователь \"%s\" не прошёл проверку подлинности (PAM)" + +#: libpq/auth.c:287 +#, c-format +msgid "LDAP authentication failed for user \"%s\"" +msgstr "пользователь \"%s\" не прошёл проверку подлинности (LDAP)" + +#: libpq/auth.c:290 +#, c-format +msgid "certificate authentication failed for user \"%s\"" +msgstr "пользователь \"%s\" не прошёл проверку подлинности (по сертификату)" + +#: libpq/auth.c:293 +#, c-format +msgid "RADIUS authentication failed for user \"%s\"" +msgstr "пользователь \"%s\" не прошёл проверку подлинности (RADIUS)" + +#: libpq/auth.c:296 +#, c-format +msgid "authentication failed for user \"%s\": invalid authentication method" +msgstr "" +"пользователь \"%s\" не прошёл проверку подлинности: неверный метод проверки" + +#: libpq/auth.c:325 +msgid "missing or erroneous pg_hba.conf file" +msgstr "файл pg_hba.conf отсутствует или испорчен" + +#: libpq/auth.c:326 +msgid "See server log for details." +msgstr "Смотрите подробности в протоколе сервера." + +#: libpq/auth.c:356 +msgid "connection requires a valid client certificate" +msgstr "для подключения требуется годный сертификат клиента" + +#: libpq/auth.c:400 libpq/auth.c:416 libpq/auth.c:464 libpq/auth.c:482 +msgid "SSL on" +msgstr "SSL вкл." + +#: libpq/auth.c:400 libpq/auth.c:416 libpq/auth.c:464 libpq/auth.c:482 +msgid "SSL off" +msgstr "SSL выкл." + +#: libpq/auth.c:398 +#, 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:404 +#, c-format +msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\"" +msgstr "" +"pg_hba.conf отвергает подключение для репликации: компьютер \"%s\", " +"пользователь \"%s\"" + +#: libpq/auth.c:413 +#, 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:420 +#, 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:449 +#, c-format +msgid "Client IP address resolved to \"%s\", forward lookup matches." +msgstr "" +"IP-адрес клиента разрешается в \"%s\", соответствует прямому преобразованию." + +#: libpq/auth.c:451 +#, c-format +msgid "Client IP address resolved to \"%s\", forward lookup not checked." +msgstr "" +"IP-адрес клиента разрешается в \"%s\", прямое преобразование не проверялось." + +#: libpq/auth.c:453 +#, c-format +msgid "Client IP address resolved to \"%s\", forward lookup does not match." +msgstr "" +"IP-адрес клиента разрешается в \"%s\", это не соответствует прямому " +"преобразованию." + +#: libpq/auth.c:462 +#, 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:469 +#, 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:479 +#, 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:487 +#, 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:539 libpq/hba.c:1118 +msgid "" +"MD5 authentication is not supported when \"db_user_namespace\" is enabled" +msgstr "" +"проверка подлинности MD5 не поддерживается, когда включен режим " +"\"db_user_namespace\"" + +#: libpq/auth.c:663 +#, c-format +msgid "expected password response, got message type %d" +msgstr "ожидался ответ с паролем, но получено сообщение %d" + +#: libpq/auth.c:691 +msgid "invalid password packet size" +msgstr "неверный размер пакета с паролем" + +#: libpq/auth.c:695 +msgid "received password packet" +msgstr "получен пакет с паролем" + +#: libpq/auth.c:753 +#, c-format +msgid "Kerberos initialization returned error %d" +msgstr "ошибка при инициализации Kerberos: %d" + +#: libpq/auth.c:763 +#, c-format +msgid "Kerberos keytab resolving returned error %d" +msgstr "ошибка при разрешении имени таблицы ключей Kerberos: %d" + +#: libpq/auth.c:787 +#, c-format +msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d" +msgstr "ошибка в функции Kerberos sname_to_principal(\"%s\", \"%s\"): %d" + +#: libpq/auth.c:832 +#, c-format +msgid "Kerberos recvauth returned error %d" +msgstr "ошибка в функции Kerberos recvauth: %d" + +#: libpq/auth.c:855 +#, c-format +msgid "Kerberos unparse_name returned error %d" +msgstr "ошибка в функции Kerberos unparse_name: %d" + +#: libpq/auth.c:1003 +msgid "GSSAPI is not supported in protocol version 2" +msgstr "GSSAPI не поддерживается в протоколе версии 2" + +#: libpq/auth.c:1058 +#, c-format +msgid "expected GSS response, got message type %d" +msgstr "ожидался ответ GSS, но получено сообщение %d" + +#: libpq/auth.c:1121 +msgid "accepting GSS security context failed" +msgstr "принять контекст безопасности GSS не удалось" + +#: libpq/auth.c:1147 +msgid "retrieving GSS user name failed" +msgstr "получить имя пользователя GSS не удалось" + +#: libpq/auth.c:1264 +msgid "SSPI is not supported in protocol version 2" +msgstr "SSPI не поддерживается в протоколе версии 2" + +#: libpq/auth.c:1279 +msgid "could not acquire SSPI credentials" +msgstr "не удалось получить удостоверение SSPI" + +#: libpq/auth.c:1296 +#, c-format +msgid "expected SSPI response, got message type %d" +msgstr "ожидался ответ SSPI, но получено сообщение %d" + +#: libpq/auth.c:1368 +msgid "could not accept SSPI security context" +msgstr "принять контекст безопасности SSPI не удалось" + +#: libpq/auth.c:1430 +msgid "could not get token from SSPI security context" +msgstr "не удалось получить маркер из контекста безопасности SSPI" + +#: libpq/auth.c:1674 +#, c-format +msgid "could not create socket for Ident connection: %m" +msgstr "не удалось создать сокет для подключения к серверу Ident: %m" + +#: libpq/auth.c:1689 +#, c-format +msgid "could not bind to local address \"%s\": %m" +msgstr "не удалось привязаться к локальному адресу \"%s\": %m" + +#: libpq/auth.c:1701 +#, c-format +msgid "could not connect to Ident server at address \"%s\", port %s: %m" +msgstr "не удалось подключиться к серверу Ident по адресу \"%s\", порт %s: %m" + +#: libpq/auth.c:1721 +#, c-format +msgid "could not send query to Ident server at address \"%s\", port %s: %m" +msgstr "" +"не удалось отправить запрос серверу Ident по адресу \"%s\", порт %s: %m" + +#: libpq/auth.c:1736 +#, c-format +msgid "" +"could not receive response from Ident server at address \"%s\", port %s: %m" +msgstr "" +"не удалось получить ответ от сервера Ident по адресу \"%s\", порт %s: %m" + +#: libpq/auth.c:1746 +#, c-format +msgid "invalidly formatted response from Ident server: \"%s\"" +msgstr "неверно форматированный ответ от сервера Ident: \"%s\"" + +#: libpq/auth.c:1785 +msgid "peer authentication is not supported on this platform" +msgstr "проверка подлинности peer в этой ОС не поддерживается" + +#: libpq/auth.c:1789 +#, c-format +msgid "could not get peer credentials: %m" +msgstr "не удалось получить данные пользователя через механизм peer: %m" + +#: libpq/auth.c:1798 +#, c-format +msgid "local user with ID %d does not exist" +msgstr "локальный пользователь с ID %d не существует" + +#: libpq/auth.c:1881 libpq/auth.c:2153 libpq/auth.c:2513 +msgid "empty password returned by client" +msgstr "клиент возвратил пустой пароль" + +#: libpq/auth.c:1891 +#, c-format +msgid "error from underlying PAM layer: %s" +msgstr "ошибка в нижележащем слое PAM: %s" + +#: libpq/auth.c:1960 +#, c-format +msgid "could not create PAM authenticator: %s" +msgstr "не удалось создать аутентификатор PAM: %s" + +#: libpq/auth.c:1971 +#, c-format +msgid "pam_set_item(PAM_USER) failed: %s" +msgstr "ошибка в pam_set_item(PAM_USER): %s" + +#: libpq/auth.c:1982 +#, c-format +msgid "pam_set_item(PAM_CONV) failed: %s" +msgstr "ошибка в pam_set_item(PAM_CONV): %s" + +#: libpq/auth.c:1993 +#, c-format +msgid "pam_authenticate failed: %s" +msgstr "ошибка в pam_authenticate: %s" + +#: libpq/auth.c:2004 +#, c-format +msgid "pam_acct_mgmt failed: %s" +msgstr "ошибка в pam_acct_mgmt: %s" + +#: libpq/auth.c:2015 +#, c-format +msgid "could not release PAM authenticator: %s" +msgstr "не удалось освободить аутентификатор PAM: %s" + +#: libpq/auth.c:2048 libpq/auth.c:2052 +#, c-format +msgid "could not initialize LDAP: error code %d" +msgstr "не удалось инициализировать LDAP: код ошибки %d" + +#: libpq/auth.c:2062 +#, c-format +msgid "could not set LDAP protocol version: error code %d" +msgstr "не удалось задать версию протокола LDAP: код ошибки %d" + +#: libpq/auth.c:2091 +msgid "could not load wldap32.dll" +msgstr "не удалось загрузить wldap32.dll" + +#: libpq/auth.c:2099 +msgid "could not load function _ldap_start_tls_sA in wldap32.dll" +msgstr "не удалось найти функцию _ldap_start_tls_sA в wldap32.dll" + +#: libpq/auth.c:2100 +msgid "LDAP over SSL is not supported on this platform." +msgstr "LDAP через SSL не поддерживается в этой ОС." + +#: libpq/auth.c:2115 +#, c-format +msgid "could not start LDAP TLS session: error code %d" +msgstr "не удалось начать сеанс LDAP TLS: код ошибки %d" + +#: libpq/auth.c:2137 +msgid "LDAP server not specified" +msgstr "LDAP-сервер не определён" + +#: libpq/auth.c:2189 +msgid "invalid character in user name for LDAP authentication" +msgstr "недопустимый символ в имени пользователя для проверки подлинности LDAP" + +#: libpq/auth.c:2204 +#, c-format +msgid "" +"could not perform initial LDAP bind for ldapbinddn \"%s\" on server \"%s\": " +"error code %d" +msgstr "" +"не удалось выполнить начальную привязку LDAP для ldapbinddn \"%s\" на " +"сервере \"%s\": код ошибки %d" + +#: libpq/auth.c:2229 +#, c-format +msgid "could not search LDAP for filter \"%s\" on server \"%s\": error code %d" +msgstr "" +"не удалось выполнить LDAP-поиск по фильтру \"%s\" на сервере \"%s\": код " +"ошибки %d" + +#: libpq/auth.c:2239 +#, c-format +msgid "LDAP search failed for filter \"%s\" on server \"%s\": no such user" +msgstr "" +"ошибка при LDAP-поиске по фильтру \"%s\" на сервере \"%s\": нет такого " +"пользователя" + +#: libpq/auth.c:2243 +#, c-format +msgid "" +"LDAP search failed for filter \"%s\" on server \"%s\": user is not unique " +"(%ld matches)" +msgstr "" +"ошибка при LDAP-поиске по фильтру \"%s\" на сервере \"%s\": пользователь не " +"уникален (результатов: %ld)" + +#: libpq/auth.c:2260 +#, c-format +msgid "" +"could not get dn for the first entry matching \"%s\" on server \"%s\": %s" +msgstr "" +"не удалось получить dn для первого результата, соответствующего \"%s\" на " +"сервере \"%s\": %s" + +#: libpq/auth.c:2280 +#, c-format +msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s" +msgstr "" +"не удалось отвязаться после поиска пользователя \"%s\" на сервере \"%s\": %s" + +#: libpq/auth.c:2317 +#, c-format +msgid "LDAP login failed for user \"%s\" on server \"%s\": error code %d" +msgstr "" +"ошибка при входе через LDAP пользователя \"%s\" на сервере \"%s\": код " +"ошибки %d" + +#: libpq/auth.c:2345 +#, c-format +msgid "" +"certificate authentication failed for user \"%s\": client certificate " +"contains no user name" +msgstr "" +"ошибка проверки подлинности пользователя \"%s\" по сертификату: сертификат " +"клиента не содержит имя пользователя" + +#: libpq/auth.c:2469 +msgid "RADIUS server not specified" +msgstr "RADIUS-сервер не определён" + +#: libpq/auth.c:2476 +msgid "RADIUS secret not specified" +msgstr "секрет RADIUS не определён" + +#: libpq/auth.c:2492 libpq/hba.c:1403 +#, c-format +msgid "could not translate RADIUS server name \"%s\" to address: %s" +msgstr "не удалось преобразовать имя сервера RADIUS \"%s\" в адрес: %s" + +#: libpq/auth.c:2520 +msgid "" +"RADIUS authentication does not support passwords longer than 16 characters" +msgstr "проверка подлинности RADIUS не поддерживает пароли длиннее 16 символов" + +#: libpq/auth.c:2531 +msgid "could not generate random encryption vector" +msgstr "не удалось сгенерировать случайный вектор шифрования" + +#: libpq/auth.c:2554 +msgid "could not perform MD5 encryption of password" +msgstr "не удалось вычислить MD5-хэш пароля" + +#: libpq/auth.c:2576 +#, c-format +msgid "could not create RADIUS socket: %m" +msgstr "не удалось создать сокет RADIUS: %m" + +#: libpq/auth.c:2597 +#, c-format +msgid "could not bind local RADIUS socket: %m" +msgstr "не удалось привязаться к локальному сокету RADIUS: %m" + +#: libpq/auth.c:2607 +#, c-format +msgid "could not send RADIUS packet: %m" +msgstr "не удалось отправить пакет RADIUS: %m" + +#: libpq/auth.c:2636 libpq/auth.c:2661 +msgid "timeout waiting for RADIUS response" +msgstr "превышено время ожидания ответа RADIUS" + +#: libpq/auth.c:2654 +#, c-format +msgid "could not check status on RADIUS socket: %m" +msgstr "не удалось проверить состояние сокета RADIUS: %m" + +#: libpq/auth.c:2683 +#, c-format +msgid "could not read RADIUS response: %m" +msgstr "не удалось прочитать ответ RADIUS: %m" + +#: libpq/auth.c:2695 libpq/auth.c:2699 +#, c-format +msgid "RADIUS response was sent from incorrect port: %i" +msgstr "ответ RADIUS был отправлен с неверного порта: %i" + +#: libpq/auth.c:2708 +#, c-format +msgid "RADIUS response too short: %i" +msgstr "слишком короткий ответ RADIUS: %i" + +#: libpq/auth.c:2715 +#, c-format +msgid "RADIUS response has corrupt length: %i (actual length %i)" +msgstr "в ответе RADIUS испорчена длина: %i (фактическая длина %i)" + +#: libpq/auth.c:2723 +#, c-format +msgid "RADIUS response is to a different request: %i (should be %i)" +msgstr "пришёл ответ RADIUS на другой запрос: %i (ожидался %i)" + +#: libpq/auth.c:2748 +msgid "could not perform MD5 encryption of received packet" +msgstr "не удалось вычислить MD5 для принятого пакета" + +#: libpq/auth.c:2757 +msgid "RADIUS response has incorrect MD5 signature" +msgstr "ответ RADIUS содержит неверную подпись MD5" + +#: libpq/auth.c:2774 +#, c-format +msgid "RADIUS response has invalid code (%i) for user \"%s\"" +msgstr "ответ RADIUS содержит неверный код (%i) для пользователя \"%s\"" + +#: libpq/hba.c:160 +#, c-format +msgid "authentication file token too long, skipping: \"%s\"" +msgstr "" +"слишком длинный элемент в файле конфигурации безопасности пропускается: \"%s" +"\"" + +#: libpq/hba.c:355 +#, c-format +msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" +msgstr "" +"не удалось открыть дополнительный файл конфигурации безопасности \"@%s\" как " +"\"%s\": %m" + +#: libpq/hba.c:628 +#, 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:779 +#, c-format +msgid "" +"authentication option \"%s\" is only valid for authentication methods %s" +msgstr "параметр проверки подлинности \"%s\" допускается только для методов %s" + +#: libpq/hba.c:795 +#, c-format +msgid "authentication method \"%s\" requires argument \"%s\" to be set" +msgstr "" +"для метода проверки подлинности \"%s\" требуется определить аргумент \"%s\"" + +#: libpq/hba.c:832 +msgid "local connections are not supported by this build" +msgstr "локальные подключения не поддерживаются в этой сборке" + +#: libpq/hba.c:853 +msgid "hostssl requires SSL to be turned on" +msgstr "для использования hostssl необходимо включить SSL" + +#: libpq/hba.c:854 +msgid "Set ssl = on in postgresql.conf." +msgstr "Установите ssl = on в postgresql.conf." + +#: libpq/hba.c:862 +msgid "hostssl is not supported by this build" +msgstr "hostssl не поддерживается в этой сборке" + +#: libpq/hba.c:863 +msgid "Compile with --with-openssl to use SSL connections." +msgstr "Для работы с SSL скомпилируйте posgresql с ключом --with-openssl." + +#: libpq/hba.c:885 +#, c-format +msgid "invalid connection type \"%s\"" +msgstr "неверный тип подключения \"%s\"" + +#: libpq/hba.c:898 +msgid "end-of-line before database specification" +msgstr "конец строки перед определением базы данных" + +#: libpq/hba.c:911 +msgid "end-of-line before role specification" +msgstr "конец строки перед определением роли" + +#: libpq/hba.c:926 +msgid "end-of-line before IP address specification" +msgstr "конец строки перед определением IP-адресов" + +#: libpq/hba.c:980 +#, c-format +msgid "invalid IP address \"%s\": %s" +msgstr "неверный IP-адрес \"%s\": %s" + +#: libpq/hba.c:1000 +#, c-format +msgid "specifying both host name and CIDR mask is invalid: \"%s\"" +msgstr "указать одновременно и имя узла, и маску CIDR нельзя: \"%s\"" + +#: libpq/hba.c:1014 +#, c-format +msgid "invalid CIDR mask in address \"%s\"" +msgstr "неверная маска CIDR в адресе \"%s\"" + +#: libpq/hba.c:1032 +msgid "end-of-line before netmask specification" +msgstr "конец строки перед определением маски сети" + +#: libpq/hba.c:1044 +#, c-format +msgid "invalid IP mask \"%s\": %s" +msgstr "неверная маска IP \"%s\": %s" + +#: libpq/hba.c:1061 +msgid "IP address and mask do not match" +msgstr "IP-адрес не соответствует маске" + +#: libpq/hba.c:1076 +msgid "end-of-line before authentication method" +msgstr "конец строки перед методом проверки подлинности" + +#: libpq/hba.c:1149 +#, c-format +msgid "invalid authentication method \"%s\"" +msgstr "неверный метод проверки подлинности \"%s\"" + +#: libpq/hba.c:1160 +#, c-format +msgid "invalid authentication method \"%s\": not supported by this build" +msgstr "" +"неверный метод проверки подлинности \"%s\": не поддерживается в этой сборке" + +#: libpq/hba.c:1181 +msgid "krb5 authentication is not supported on local sockets" +msgstr "проверка подлинности krb5 для локальных сокетов не поддерживается" + +#: libpq/hba.c:1192 +msgid "gssapi authentication is not supported on local sockets" +msgstr "проверка подлинности gssapi для локальных сокетов не поддерживается" + +#: libpq/hba.c:1203 +msgid "peer authentication is only supported on local sockets" +msgstr "проверка подлинности peer поддерживается только для локальных сокетов" + +#: libpq/hba.c:1220 +msgid "cert authentication is only supported on hostssl connections" +msgstr "" +"проверка подлинности cert поддерживается только для подключений hostssl" + +#: libpq/hba.c:1241 +#, c-format +msgid "authentication option not in name=value format: %s" +msgstr "параметр проверки подлинности указан не в формате имя=значение: %s" + +#: libpq/hba.c:1257 +msgid "ident, peer, krb5, gssapi, sspi and cert" +msgstr "ident, peer, krb5, gssapi, sspi и cert" + +#: libpq/hba.c:1271 +msgid "clientcert can only be configured for \"hostssl\" rows" +msgstr "clientcert можно определить только в строках \"hostssl\"" + +#: libpq/hba.c:1282 +msgid "" +"client certificates can only be checked if a root certificate store is " +"available" +msgstr "" +"сертификаты клиентов могут проверяться, только если доступно хранилище " +"корневых сертификатов" + +#: libpq/hba.c:1283 +msgid "Make sure the root.crt file is present and readable." +msgstr "Убедитесь в наличии и доступности файла root.crt." + +#: libpq/hba.c:1296 +msgid "clientcert can not be set to 0 when using \"cert\" authentication" +msgstr "" +"clientcert нельзя установить в 0 при использовании проверки подлинности " +"\"cert\"" + +#: libpq/hba.c:1330 +#, c-format +msgid "invalid LDAP port number: \"%s\"" +msgstr "неверный номер порта LDAP: \"%s\"" + +#: libpq/hba.c:1376 libpq/hba.c:1384 +msgid "krb5, gssapi and sspi" +msgstr "krb5, gssapi и sspi" + +#: libpq/hba.c:1422 +#, c-format +msgid "invalid RADIUS port number: \"%s\"" +msgstr "неверный номер порта RADIUS: \"%s\"" + +#: libpq/hba.c:1442 +#, c-format +msgid "unrecognized authentication option name: \"%s\"" +msgstr "нераспознанное имя атрибута проверки подлинности: \"%s\"" + +#: libpq/hba.c:1474 +msgid "" +"cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, or ldapsearchattribute " +"together with ldapprefix" +msgstr "" +"нельзя использовать ldapbasedn, ldapbinddn, ldapbindpasswd или " +"ldapsearchattribute вместе с ldapprefix" + +#: libpq/hba.c:1484 +msgid "" +"authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix" +"\", or \"ldapsuffix\" to be set" +msgstr "" +"для метода проверки подлинности \"ldap\" требуется установить аргументы " +"\"ldapbasedn\" и \"ldapprefix\" или \"ldapsuffix\"" + +#: libpq/hba.c:1815 +#, c-format +msgid "invalid regular expression \"%s\": %s" +msgstr "неверное регулярное выражение \"%s\": %s" + +#: libpq/hba.c:1838 +#, c-format +msgid "regular expression match for \"%s\" failed: %s" +msgstr "ошибка при поиске по регулярному выражению для \"%s\": %s" + +#: libpq/hba.c:1856 +#, c-format +msgid "" +"regular expression \"%s\" has no subexpressions as requested by " +"backreference in \"%s\"" +msgstr "" +"в регулярном выражении \"%s\" нет подвыражений, требуемых для обратной " +"ссылки в \"%s\"" + +#: libpq/hba.c:1922 +#, c-format +msgid "missing entry in file \"%s\" at end of line %d" +msgstr "отсутствует запись в файле \"%s\" в конце строки %d" + +#: libpq/hba.c:1963 +#, c-format +msgid "provided user name (%s) and authenticated user name (%s) do not match" +msgstr "" +"указанное имя пользователя (%s) не совпадает с именем прошедшего проверку " +"(%s)" + +#: libpq/hba.c:1984 +#, c-format +msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\"" +msgstr "" +"нет соответствия в файле сопоставлений \"%s\" для пользователя \"%s\", " +"прошедшего проверку как \"%s\"" + +#: libpq/hba.c:2008 +#, c-format +msgid "could not open usermap file \"%s\": %m" +msgstr "не удалось открыть файл сопоставлений пользователей \"%s\": %m" + +#: 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" + +#: 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:287 catalog/objectaddress.c:828 +#: catalog/pg_largeobject.c:200 +#, c-format +msgid "must be owner of large object %u" +msgstr "нужно быть владельцем большого объекта %u" + +#: libpq/be-fsstubs.c:392 +msgid "must be superuser to use server-side lo_import()" +msgstr "для использования lo_import() на сервере нужно быть суперпользователем" + +#: libpq/be-fsstubs.c:393 +msgid "Anyone can use the client-side lo_import() provided by libpq." +msgstr "Использовать lo_import() на стороне клиента через libpq могут все." + +#: libpq/be-fsstubs.c:406 +#, c-format +msgid "could not open server file \"%s\": %m" +msgstr "не удалось открыть файл сервера \"%s\": %m" + +#: libpq/be-fsstubs.c:428 +#, c-format +msgid "could not read server file \"%s\": %m" +msgstr "не удалось прочитать файл сервера \"%s\": %m" + +#: libpq/be-fsstubs.c:458 +msgid "must be superuser to use server-side lo_export()" +msgstr "для использования lo_export() на сервере нужно быть суперпользователем" + +#: libpq/be-fsstubs.c:459 +msgid "Anyone can use the client-side lo_export() provided by libpq." +msgstr "Использовать lo_export() на стороне клиента через libpq могут все." + +#: libpq/be-fsstubs.c:484 +#, c-format +msgid "could not create server file \"%s\": %m" +msgstr "не удалось создать файл сервера \"%s\": %m" + +#: libpq/be-fsstubs.c:496 +#, c-format +msgid "could not write server file \"%s\": %m" +msgstr "не удалось записать файл сервера \"%s\": %m" + +#: storage/file/fd.c:411 +#, c-format +msgid "getrlimit failed: %m" +msgstr "ошибка в getrlimit(): %m" + +#: storage/file/fd.c:501 +msgid "insufficient file descriptors available to start server process" +msgstr "недостаточно дескрипторов файлов для запуска серверного процесса" + +#: storage/file/fd.c:502 +#, c-format +msgid "System allows %d, we need at least %d." +msgstr "Система выделяет: %d, а требуется минимум: %d." + +#: storage/file/fd.c:543 storage/file/fd.c:1528 storage/file/fd.c:1643 +#, c-format +msgid "out of file descriptors: %m; release and retry" +msgstr "нехватка дескрипторов файлов: %m; освободите их и повторите попытку" + +#: storage/file/fd.c:1110 +#, c-format +msgid "temporary file: path \"%s\", size %lu" +msgstr "временный файл: путь \"%s\", размер %lu" + +#: storage/file/fd.c:1504 +#, c-format +msgid "exceeded maxAllocatedDescs (%d) while trying to open file \"%s\"" +msgstr "превышен предел maxAllocatedDescs (%d) при попытке открыть файл \"%s\"" + +#: storage/file/fd.c:1619 +#, c-format +msgid "exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\"" +msgstr "" +"превышен предел maxAllocatedDescs (%d) при попытке открыть каталог \"%s\"" + +#: storage/file/fd.c:1702 +#, c-format +msgid "could not read directory \"%s\": %m" +msgstr "не удалось прочитать каталог \"%s\": %m" + +#: 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)" + +#: storage/ipc/shmem.c:365 +#, c-format +msgid "could not create ShmemIndex entry for data structure \"%s\"" +msgstr "не удалось создать запись ShmemIndex для структуры данных \"%s\"" + +#: storage/ipc/shmem.c:380 +#, c-format +msgid "" +"ShmemIndex entry size is wrong for data structure \"%s\": expected %lu, " +"actual %lu" +msgstr "" +"размер записи ShmemIndex не соответствует структуре данных \"%s" +"\" (ожидалось: %lu, фактически: %lu)" + +#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446 +msgid "requested shared memory size overflows size_t" +msgstr "запрошенный размер разделяемой памяти не умещается в size_t" + +#: storage/buffer/bufmgr.c:134 storage/buffer/bufmgr.c:239 +msgid "cannot access temporary tables of other sessions" +msgstr "обращаться к временным таблицам других сеансов нельзя" + +#: storage/buffer/bufmgr.c:375 +#, c-format +msgid "unexpected data beyond EOF in block %u of relation %s" +msgstr "неожиданные данные после EOF в блоке %u отношения %s" + +#: storage/buffer/bufmgr.c:377 +msgid "" +"This has been seen to occur with buggy kernels; consider updating your " +"system." +msgstr "" +"Эта ситуация может возникать из-за ошибок в ядре; возможно, вам следует " +"обновить ОС." + +#: storage/buffer/bufmgr.c:449 +#, c-format +msgid "invalid page header in block %u of relation %s; zeroing out page" +msgstr "" +"неверный заголовок страницы в блоке %u отношения %s; страница обнуляется" + +#: storage/buffer/bufmgr.c:457 +#, c-format +msgid "invalid page header in block %u of relation %s" +msgstr "неверный заголовок страницы в блоке %u отношения %s" + +#: storage/buffer/bufmgr.c:2743 +#, c-format +msgid "could not write block %u of %s" +msgstr "не удалось запись блок %u файла %s" + +#: storage/buffer/bufmgr.c:2745 +msgid "Multiple failures --- write error might be permanent." +msgstr "Множественные сбои - возможно, постоянная ошибка записи." + +#: storage/buffer/bufmgr.c:2766 storage/buffer/bufmgr.c:2785 +#, c-format +msgid "writing block %u of relation %s" +msgstr "запись блока %u отношения %s" + +#: storage/buffer/localbuf.c:190 +msgid "no empty local buffer available" +msgstr "нет пустого локального буфера" + +#: storage/large_object/inv_api.c:277 catalog/aclchk.c:647 +#: catalog/aclchk.c:3676 catalog/aclchk.c:4367 catalog/objectaddress.c:199 +#: catalog/pg_largeobject.c:116 catalog/pg_largeobject.c:176 +#, c-format +msgid "large object %u does not exist" +msgstr "большой объект %u не существует" + +#: 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/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:433 +#, c-format +msgid "corrupted item pointer: %u" +msgstr "испорченный указатель элемента: %u" + +#: 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:642 storage/page/bufpage.c:778 +#, c-format +msgid "corrupted item pointer: offset = %u, size = %u" +msgstr "испорченный указатель элемента: смещение = %u, размер = %u" + +#: storage/smgr/md.c:393 storage/smgr/md.c:863 +#, c-format +msgid "could not truncate file \"%s\": %m" +msgstr "не удалось обрезать файл \"%s\": %m" + +#: storage/smgr/md.c:460 +#, c-format +msgid "cannot extend file \"%s\" beyond %u blocks" +msgstr "не удалось увеличить файл \"%s\" до блока %u" + +#: storage/smgr/md.c:482 storage/smgr/md.c:643 storage/smgr/md.c:718 +#, c-format +msgid "could not seek to block %u in file \"%s\": %m" +msgstr "не удалось перейти к блоку %u в файле \"%s\": %m" + +#: storage/smgr/md.c:490 +#, c-format +msgid "could not extend file \"%s\": %m" +msgstr "не удалось увеличить файл \"%s\": %m" + +#: storage/smgr/md.c:492 storage/smgr/md.c:499 storage/smgr/md.c:745 +msgid "Check free disk space." +msgstr "Проверьте, есть ли место на диске." + +#: storage/smgr/md.c:496 +#, c-format +msgid "could not extend file \"%s\": wrote only %d of %d bytes at block %u" +msgstr "" +"не удалось увеличить файл \"%s\" (записано байт: %d, требовалось записать: " +"%d) в блоке %u" + +#: storage/smgr/md.c:661 +#, c-format +msgid "could not read block %u in file \"%s\": %m" +msgstr "не удалось прочитать блок %u в файле \"%s\": %m" + +#: storage/smgr/md.c:677 +#, c-format +msgid "could not read block %u in file \"%s\": read only %d of %d bytes" +msgstr "" +"не удалось прочитать блок %u в файле \"%s\" (прочитано байт: %d, требовалось " +"прочитать: %d)" + +#: storage/smgr/md.c:736 +#, c-format +msgid "could not write block %u in file \"%s\": %m" +msgstr "не удалось записать блок %u в файл \"%s\": %m" + +#: storage/smgr/md.c:741 +#, c-format +msgid "could not write block %u in file \"%s\": wrote only %d of %d bytes" +msgstr "" +"не удалось записать блок %u в файл \"%s\" (записано байт: %d, требовалось " +"записать: %d)" + +#: storage/smgr/md.c:839 +#, 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:888 +#, c-format +msgid "could not truncate file \"%s\" to %u blocks: %m" +msgstr "не удалось обрезать файл \"%s\" до нужного числа блоков (%u): %m" + +#: storage/smgr/md.c:1141 +#, c-format +msgid "could not fsync file \"%s\" but retrying: %m" +msgstr "" +"не удалось синхронизировать с ФС файл \"%s\", последует повторная попытка: %m" + +#: storage/smgr/md.c:1286 +msgid "could not forward fsync request because request queue is full" +msgstr "" +"не удалось отправить запрос синхронизации с ФС (очередь запросов переполнена)" + +#: storage/smgr/md.c:1661 +#, c-format +msgid "could not open file \"%s\" (target block %u): %m" +msgstr "не удалось открыть файл file \"%s\" (целевой блок %u): %m" + +#: storage/smgr/md.c:1683 +#, c-format +msgid "could not seek to end of file \"%s\": %m" +msgstr "не удалось перейти к концу файла \"%s\": %m" + +#: storage/lmgr/predicate.c:665 +msgid "not enough elements in RWConflictPool to record a read/write conflict" +msgstr "в пуле недостаточно элементов для записи о конфликте чтения/записи" + +#: storage/lmgr/predicate.c:666 storage/lmgr/predicate.c:694 +msgid "" +"You might need to run fewer transactions at a time or increase " +"max_connections." +msgstr "" +"Попробуйте уменьшить число транзакций в секунду или увеличить параметр " +"max_connections." + +#: storage/lmgr/predicate.c:693 +msgid "" +"not enough elements in RWConflictPool to record a potential read/write " +"conflict" +msgstr "" +"в пуле недостаточно элементов для записи о потенциальном конфликте чтения/" +"записи" + +#: storage/lmgr/predicate.c:898 +msgid "memory for serializable conflict tracking is nearly exhausted" +msgstr "память для отслеживания конфликтов сериализации практически исчерпана" + +#: storage/lmgr/predicate.c:899 +msgid "" +"There might be an idle transaction or a forgotten prepared transaction " +"causing this." +msgstr "" +"Вероятно, эта ситуация вызвана забытой подготовленной транзакцией или " +"транзакцией, простаивающей долгое время." + +#: storage/lmgr/predicate.c:1181 storage/lmgr/predicate.c:1253 +#, c-format +msgid "" +"not enough shared memory for elements of data structure \"%s\" (%lu bytes " +"requested)" +msgstr "" +"недостаточно разделяемой памяти для элементов структуры данных %s" +"\" (запрошено байт: %lu)" + +#: storage/lmgr/predicate.c:1536 +msgid "deferrable snapshot was unsafe; trying a new one" +msgstr "откладываемый снимок был небезопасен; пробуем более новый" + +#: storage/lmgr/predicate.c:1571 +msgid "\"default_transaction_isolation\" is set to \"serializable\"." +msgstr "" +"Параметр \"default_transaction_isolation\" имеет значение \"serializable\"." + +#: storage/lmgr/predicate.c:1572 +msgid "" +"You can use \"SET default_transaction_isolation = 'repeatable read'\" to " +"change the default." +msgstr "" +"Чтобы изменить режим по умолчанию, выполните \"SET " +"default_transaction_isolation = 'repeatable read'\"." + +#: storage/lmgr/predicate.c:2247 storage/lmgr/predicate.c:2262 +#: storage/lmgr/predicate.c:3657 +msgid "You might need to increase max_pred_locks_per_transaction." +msgstr "" +"Возможно, следует увеличить значение параметра max_locks_per_transaction." + +#: storage/lmgr/predicate.c:3811 storage/lmgr/predicate.c:3900 +#: storage/lmgr/predicate.c:3908 storage/lmgr/predicate.c:3947 +#: storage/lmgr/predicate.c:4186 storage/lmgr/predicate.c:4524 +#: storage/lmgr/predicate.c:4536 storage/lmgr/predicate.c:4578 +#: storage/lmgr/predicate.c:4616 +msgid "" +"could not serialize access due to read/write dependencies among transactions" +msgstr "" +"не удалось сериализовать доступ из-за зависимостей чтения/записи между " +"транзакциями" + +#: storage/lmgr/predicate.c:3813 storage/lmgr/predicate.c:3902 +#: storage/lmgr/predicate.c:3910 storage/lmgr/predicate.c:3949 +#: storage/lmgr/predicate.c:4188 storage/lmgr/predicate.c:4526 +#: storage/lmgr/predicate.c:4538 storage/lmgr/predicate.c:4580 +#: storage/lmgr/predicate.c:4618 +msgid "The transaction might succeed if retried." +msgstr "Транзакция может завершиться успешно при следующей попытке." + +#: storage/lmgr/proc.c:1057 +#, c-format +msgid "Process %d waits for %s on %s." +msgstr "Процесс %d ожидает в режиме %s блокировку %s." + +#: storage/lmgr/proc.c:1067 +#, c-format +msgid "sending cancel to blocking autovacuum PID %d" +msgstr "снятие блокирующего процесса автоочистки (PID %d)" + +#: storage/lmgr/proc.c:1113 +#, 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:1125 +#, 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:1131 +#, 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:1135 +#, c-format +msgid "process %d acquired %s on %s after %ld.%03d ms" +msgstr "процесс %d получил в режиме %s блокировку \"%s\" через %ld.%03d мс" + +#: storage/lmgr/proc.c:1151 +#, c-format +msgid "process %d failed to acquire %s on %s after %ld.%03d ms" +msgstr "" +"процесс %d не смог получить в режиме %s блокировку \"%s\" за %ld.%03d мс" + +#: storage/lmgr/lock.c:609 +#, c-format +msgid "" +"cannot acquire lock mode %s on database objects while recovery is in progress" +msgstr "" +"пока выполняется восстановление, нельзя получить блокировку объектов базы " +"данных в режиме %s" + +#: storage/lmgr/lock.c:611 +msgid "" +"Only RowExclusiveLock or less can be acquired on database objects during " +"recovery." +msgstr "" +"В процессе восстановления для объектов базы данных может быть получена " +"только блокировка RowExclusiveLock или менее сильная." + +#: storage/lmgr/lock.c:724 storage/lmgr/lock.c:793 storage/lmgr/lock.c:2701 +#: storage/lmgr/lock.c:2766 +msgid "You might need to increase max_locks_per_transaction." +msgstr "Возможно, следует увеличить параметр max_locks_per_transaction." + +#: storage/lmgr/lock.c:2116 storage/lmgr/lock.c:2210 +msgid "" +"cannot PREPARE while holding both session-level and transaction-level locks " +"on the same object" +msgstr "" +"нельзя выполнить PREPARE, удерживая блокировки на уровне сеанса и на уровне " +"транзакции для одного объекта" + +#: storage/lmgr/lock.c:2302 +msgid "Not enough memory for reassigning the prepared transaction's locks." +msgstr "" +"Недостаточно памяти для переназначения блокировок подготовленных транзакций." + +#: storage/lmgr/deadlock.c:923 +#, c-format +msgid "Process %d waits for %s on %s; blocked by process %d." +msgstr "" +"Процесс %d ожидает в режиме %s блокировку \"%s\"; заблокирован процессом %d." + +#: storage/lmgr/deadlock.c:942 +#, c-format +msgid "Process %d: %s" +msgstr "Процесс %d: %s" + +#: storage/lmgr/deadlock.c:949 +msgid "deadlock detected" +msgstr "обнаружена взаимоблокировка" + +#: storage/lmgr/deadlock.c:952 +msgid "See server log for query details." +msgstr "Подробности запроса смотрите в протоколе сервера." + +#: storage/lmgr/lmgr.c:756 +#, c-format +msgid "relation %u of database %u" +msgstr "отношение %u базы данных %u" + +#: storage/lmgr/lmgr.c:762 +#, c-format +msgid "extension of relation %u of database %u" +msgstr "расширение отношения %u базы данных %u" + +#: storage/lmgr/lmgr.c:768 +#, c-format +msgid "page %u of relation %u of database %u" +msgstr "страница %u отношения %u базы данных %u" + +#: storage/lmgr/lmgr.c:775 +#, c-format +msgid "tuple (%u,%u) of relation %u of database %u" +msgstr "кортеж (%u,%u) отношения %u базы данных %u" + +#: storage/lmgr/lmgr.c:783 +#, c-format +msgid "transaction %u" +msgstr "транзакция %u" + +#: storage/lmgr/lmgr.c:788 +#, c-format +msgid "virtual transaction %d/%u" +msgstr "виртуальная транзакция %d/%u" + +#: storage/lmgr/lmgr.c:794 +#, c-format +msgid "object %u of class %u of database %u" +msgstr "объект %u класса %u базы данных %u" + +#: storage/lmgr/lmgr.c:802 +#, c-format +msgid "user lock [%u,%u,%u]" +msgstr "пользовательская блокировка [%u,%u,%u]" + +#: storage/lmgr/lmgr.c:809 +#, c-format +msgid "advisory lock [%u,%u,%u,%u]" +msgstr "рекомендательная блокировка [%u,%u,%u,%u]" + +#: storage/lmgr/lmgr.c:817 +#, c-format +msgid "unrecognized locktag type %d" +msgstr "нераспознанный тип блокировки %d" + +#: rewrite/rewriteRemove.c:62 rewrite/rewriteSupport.c:117 +#: rewrite/rewriteDefine.c:700 rewrite/rewriteDefine.c:762 +#, c-format +msgid "rule \"%s\" for relation \"%s\" does not exist" +msgstr "правило \"%s\" для отношения\"%s\" не существует" + +#: rewrite/rewriteRemove.c:66 +#, c-format +msgid "rule \"%s\" for relation \"%s\" does not exist, skipping" +msgstr "правило \"%s\" для отношения \"%s\" не существует, пропускается" + +#: rewrite/rewriteManip.c:1012 +msgid "conditional utility statements are not implemented" +msgstr "условные служебные операторы не реализованы" + +#: rewrite/rewriteManip.c:1024 rewrite/rewriteHandler.c:442 +#: parser/parse_utilcmd.c:2144 parser/parse_utilcmd.c:2243 +msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" +msgstr "условные операторы UNION/INTERSECT/EXCEPT не реализованы" + +#: rewrite/rewriteManip.c:1177 +msgid "WHERE CURRENT OF on a view is not implemented" +msgstr "условие WHERE CURRENT OF для представлений не реализовано" + +#: rewrite/rewriteSupport.c:156 +#, c-format +msgid "rule \"%s\" does not exist" +msgstr "правило \"%s\" не существует" + +#: rewrite/rewriteSupport.c:165 +#, c-format +msgid "there are multiple rules named \"%s\"" +msgstr "имя \"%s\" имеют несколько правил" + +#: rewrite/rewriteSupport.c:166 +msgid "Specify a relation name as well as a rule name." +msgstr "Дополните имя правила именем таблицы." + +#: rewrite/rewriteHandler.c:485 +#, 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 +msgid "cannot have RETURNING lists in multiple rules" +msgstr "RETURNING можно определить только для одного правила" + +#: rewrite/rewriteHandler.c:874 rewrite/rewriteHandler.c:892 +#, c-format +msgid "multiple assignments to same column \"%s\"" +msgstr "многочисленные присвоения одной колонке \"%s\"" + +#: rewrite/rewriteHandler.c:1030 catalog/heap.c:2441 +#, c-format +msgid "column \"%s\" is of type %s but default expression is of type %s" +msgstr "колонка \"%s\" имеет тип %s, но тип выражения по умолчанию %s" + +#: rewrite/rewriteHandler.c:1627 rewrite/rewriteHandler.c:2022 +#, c-format +msgid "infinite recursion detected in rules for relation \"%s\"" +msgstr "обнаружена бесконечная рекурсия в правилах для отношения \"%s\"" + +#: rewrite/rewriteHandler.c:1883 +msgid "" +"DO INSTEAD NOTHING rules are not supported for data-modifying statements in " +"WITH" +msgstr "" +"правила DO INSTEAD NOTHING не поддерживаются в операторах, изменяющих " +"данные, в WITH" + +#: rewrite/rewriteHandler.c:1897 +msgid "" +"conditional DO INSTEAD rules are not supported for data-modifying statements " +"in WITH" +msgstr "" +"условные правила DO INSTEAD не поддерживаются для операторов, изменяющих " +"данные, в WITH" + +#: rewrite/rewriteHandler.c:1901 +msgid "DO ALSO rules are not supported for data-modifying statements in WITH" +msgstr "" +"правила DO ALSO не поддерживаются для операторов, изменяющих данные, в WITH" + +#: rewrite/rewriteHandler.c:1906 +msgid "" +"multi-statement DO INSTEAD rules are not supported for data-modifying " +"statements in WITH" +msgstr "" +"составные правила DO INSTEAD не поддерживаются для операторов, изменяющих " +"данные, в WITH" + +#: rewrite/rewriteHandler.c:2060 +#, c-format +msgid "cannot perform INSERT RETURNING on relation \"%s\"" +msgstr "выполнить INSERT RETURNING для отношения \"%s\" нельзя" + +#: rewrite/rewriteHandler.c:2062 +msgid "" +"You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." +msgstr "" +"Необходимо безусловное правило ON INSERT DO INSTEAD с предложением RETURNING." + +#: rewrite/rewriteHandler.c:2067 +#, c-format +msgid "cannot perform UPDATE RETURNING on relation \"%s\"" +msgstr "выполнить UPDATE RETURNING для отношения \"%s\" нельзя" + +#: rewrite/rewriteHandler.c:2069 +msgid "" +"You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." +msgstr "" +"Необходимо безусловное правило ON UPDATE DO INSTEAD с предложением RETURNING." + +#: rewrite/rewriteHandler.c:2074 +#, c-format +msgid "cannot perform DELETE RETURNING on relation \"%s\"" +msgstr "выполнить DELETE RETURNING для отношения \"%s\" нельзя" + +#: rewrite/rewriteHandler.c:2076 +msgid "" +"You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." +msgstr "" +"Необходимо безусловное правило ON DELETE DO INSTEAD с предложением RETURNING." + +#: rewrite/rewriteHandler.c:2140 +msgid "" +"WITH cannot be used in a query that is rewritten by rules into multiple " +"queries" +msgstr "" +"WITH нельзя использовать в запросе, преобразованном правилами в несколько " +"запросов" + +#: rewrite/rewriteDefine.c:109 rewrite/rewriteDefine.c:769 +#, c-format +msgid "rule \"%s\" for relation \"%s\" already exists" +msgstr "правило \"%s\" для отношения \"%s\" уже существует" + +#: rewrite/rewriteDefine.c:287 +msgid "rule actions on OLD are not implemented" +msgstr "действия правил для OLD не реализованы" + +#: rewrite/rewriteDefine.c:288 +msgid "Use views or triggers instead." +msgstr "Воспользуйтесь представлениями или триггерами." + +#: rewrite/rewriteDefine.c:292 +msgid "rule actions on NEW are not implemented" +msgstr "действия правил для NEW не реализованы" + +#: rewrite/rewriteDefine.c:293 +msgid "Use triggers instead." +msgstr "Воспользуйтесь триггерами." + +#: rewrite/rewriteDefine.c:306 +msgid "INSTEAD NOTHING rules on SELECT are not implemented" +msgstr "правила INSTEAD NOTHING для SELECT не реализованы" + +#: rewrite/rewriteDefine.c:307 +msgid "Use views instead." +msgstr "Воспользуйтесь представлениями." + +#: rewrite/rewriteDefine.c:315 +msgid "multiple actions for rules on SELECT are not implemented" +msgstr "множественные действия в правилах для SELECT не поддерживаются" + +#: rewrite/rewriteDefine.c:327 +msgid "rules on SELECT must have action INSTEAD SELECT" +msgstr "в правилах для SELECT должно быть действие INSTEAD SELECT" + +#: rewrite/rewriteDefine.c:335 +msgid "rules on SELECT must not contain data-modifying statements in WITH" +msgstr "" +"правила для SELECT не должны содержать операторы, изменяющие данные, в WITH" + +#: rewrite/rewriteDefine.c:343 +msgid "event qualifications are not implemented for rules on SELECT" +msgstr "в правилах для SELECT не может быть условий" + +#: rewrite/rewriteDefine.c:368 +#, c-format +msgid "\"%s\" is already a view" +msgstr "\"%s\" уже является представлением" + +#: rewrite/rewriteDefine.c:392 +#, c-format +msgid "view rule for \"%s\" must be named \"%s\"" +msgstr "правило представления для \"%s\" должно называться \"%s\"" + +#: rewrite/rewriteDefine.c:417 +#, c-format +msgid "could not convert table \"%s\" to a view because it is not empty" +msgstr "" +"не удалось преобразовать таблицу \"%s\" в представление, так как она не пуста" + +#: rewrite/rewriteDefine.c:424 +#, c-format +msgid "could not convert table \"%s\" to a view because it has triggers" +msgstr "" +"не удалось преобразовать таблицу \"%s\" в представление, так как она " +"содержит триггеры" + +#: rewrite/rewriteDefine.c:426 +msgid "" +"In particular, the table cannot be involved in any foreign key relationships." +msgstr "" +"Кроме того, таблица не может быть задействована в ссылках по внешнему ключу." + +#: rewrite/rewriteDefine.c:431 +#, c-format +msgid "could not convert table \"%s\" to a view because it has indexes" +msgstr "" +"не удалось преобразовать таблицу \"%s\" в представление, так как она имеет " +"индексы" + +#: rewrite/rewriteDefine.c:437 +#, c-format +msgid "could not convert table \"%s\" to a view because it has child tables" +msgstr "" +"не удалось преобразовать таблицу \"%s\" в представление, так как она имеет " +"подчинённые таблицы" + +#: rewrite/rewriteDefine.c:464 +msgid "cannot have multiple RETURNING lists in a rule" +msgstr "в правиле нельзя указать несколько списков RETURNING" + +#: rewrite/rewriteDefine.c:469 +msgid "RETURNING lists are not supported in conditional rules" +msgstr "списки RETURNING в условных правилах не поддерживаются" + +#: rewrite/rewriteDefine.c:473 +msgid "RETURNING lists are not supported in non-INSTEAD rules" +msgstr "списки RETURNING поддерживаются только в правилах INSTEAD" + +#: rewrite/rewriteDefine.c:552 +msgid "SELECT rule's target list has too many entries" +msgstr "список результата правила для SELECT содержит слишком много колонок" + +#: rewrite/rewriteDefine.c:553 +msgid "RETURNING list has too many entries" +msgstr "список RETURNING содержит слишком много колонок" + +#: rewrite/rewriteDefine.c:569 +msgid "cannot convert relation containing dropped columns to view" +msgstr "" +"преобразовать отношение, содержащее удалённые колонки, в представление нельзя" + +#: rewrite/rewriteDefine.c:574 +#, c-format +msgid "SELECT rule's target entry %d has different column name from \"%s\"" +msgstr "" +"элементу %d результата правила для SELECT присвоено имя колонки, отличное от " +"\"%s\"" + +#: rewrite/rewriteDefine.c:580 +#, c-format +msgid "SELECT rule's target entry %d has different type from column \"%s\"" +msgstr "" +"элемент %d результата правила для SELECT имеет тип, отличный от типа колонки " +"\"%s\"" + +#: rewrite/rewriteDefine.c:582 +#, c-format +msgid "RETURNING list's entry %d has different type from column \"%s\"" +msgstr "элемент %d списка RETURNING имеет тип, отличный от типа колонки \"%s\"" + +#: rewrite/rewriteDefine.c:597 +#, c-format +msgid "SELECT rule's target entry %d has different size from column \"%s\"" +msgstr "" +"элемент %d результата правила для SELECT имеет размер, отличный от колонки " +"\"%s\"" + +#: rewrite/rewriteDefine.c:599 +#, c-format +msgid "RETURNING list's entry %d has different size from column \"%s\"" +msgstr "элемент %d списка RETURNING имеет размер, отличный от колонки \"%s\"" + +#: rewrite/rewriteDefine.c:607 +msgid "SELECT rule's target list has too few entries" +msgstr "список результата правила для SELECT содержит недостаточно элементов" + +#: rewrite/rewriteDefine.c:608 +msgid "RETURNING list has too few entries" +msgstr "список RETURNING содержит недостаточно элементов" + +#: 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:124 +#, c-format +msgid "return type of transition function %s is not %s" +msgstr "переходная функция %s должна возвращать тип %s" + +#: 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: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:337 +#, c-format +msgid "function %s returns a set" +msgstr "функция %s возвращает множество" + +#: catalog/pg_aggregate.c:362 +#, c-format +msgid "function %s requires run-time type coercion" +msgstr "функции %s требуется приведение типов во время выполнения" + +#: catalog/pg_collation.c:75 +#, c-format +msgid "collation \"%s\" for encoding \"%s\" already exists" +msgstr "правило сортировки \"%s\" для кодировки \"%s\" уже существует" + +#: catalog/pg_collation.c:89 +#, c-format +msgid "collation \"%s\" already exists" +msgstr "правило сортировки \"%s\" уже существует" + +#: catalog/index.c:206 parser/parse_utilcmd.c:1352 parser/parse_utilcmd.c:1438 +#, c-format +msgid "multiple primary keys for table \"%s\" are not allowed" +msgstr "таблица \"%s\" не может иметь несколько первичных ключей" + +#: catalog/index.c:224 +msgid "primary keys cannot be expressions" +msgstr "первичные ключи не могут быть выражениями" + +#: catalog/index.c:734 catalog/index.c:1132 +msgid "user-defined indexes on system catalog tables are not supported" +msgstr "" +"пользовательские индексы в таблицах системного каталога не поддерживаются" + +#: catalog/index.c:744 +msgid "concurrent index creation on system catalog tables is not supported" +msgstr "" +"параллельное создание индекса в таблицах системного каталога не " +"поддерживается" + +#: catalog/index.c:762 +msgid "shared indexes cannot be created after initdb" +msgstr "нельзя создать разделяемые индексы после initdb" + +#: catalog/index.c:1745 +#, c-format +msgid "building index \"%s\" on table \"%s\"" +msgstr "создание индекса \"%s\" для таблицы \"%s\"" + +#: catalog/index.c:2886 +msgid "cannot reindex temporary tables of other sessions" +msgstr "переиндексировать временные таблицы других сеансов нельзя" + +#: catalog/pg_conversion.c:67 +#, c-format +msgid "conversion \"%s\" already exists" +msgstr "преобразование \"%s\" уже существует" + +#: catalog/pg_conversion.c:80 +#, c-format +msgid "default conversion for %s to %s already exists" +msgstr "преобразование по умолчанию из %s в %s уже существует" + +#: catalog/toasting.c:144 +msgid "shared tables cannot be toasted after initdb" +msgstr "в разделяемые таблицы нельзя добавить TOAST после initdb" + +#: 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 аргумента" +msgstr[1] "функции не могут иметь больше %d аргументов" +msgstr[2] "функции не могут иметь больше %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:224 +#, c-format +msgid "\"%s\" is already an attribute of type %s" +msgstr "\"%s\" уже является атрибутом типа %s" + +#: catalog/pg_proc.c:363 +#, c-format +msgid "function \"%s\" already exists with same argument types" +msgstr "функция \"%s\" с аргументами таких типов уже существует" + +#: catalog/pg_proc.c:377 catalog/pg_proc.c:399 +msgid "cannot change return type of existing function" +msgstr "изменить тип возврата существующей функции нельзя" + +#: 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 определяют другой тип строки." + +#: catalog/pg_proc.c:441 +#, c-format +msgid "cannot change name of input parameter \"%s\"" +msgstr "изменить имя входного параметра \"%s\" нельзя" + +#: catalog/pg_proc.c:465 +msgid "cannot remove parameter defaults from existing function" +msgstr "" +"для существующей функции нельзя убрать значения параметров по умолчанию" + +#: catalog/pg_proc.c:491 +msgid "cannot change data type of existing parameter default value" +msgstr "" +"для существующего значения параметра по умолчанию нельзя изменить тип данных" + +#: catalog/pg_proc.c:503 +#, c-format +msgid "function \"%s\" is an aggregate function" +msgstr "\"%s\" - это агрегатная функция" + +#: catalog/pg_proc.c:508 +#, c-format +msgid "function \"%s\" is not an aggregate function" +msgstr "\"%s\" - это не агрегатная функция" + +#: catalog/pg_proc.c:516 +#, c-format +msgid "function \"%s\" is a window function" +msgstr "\"%s\" - это оконная функция" + +#: catalog/pg_proc.c:521 +#, c-format +msgid "function \"%s\" is not a window function" +msgstr "\"%s\" - это не оконная функция" + +#: catalog/pg_proc.c:698 +#, c-format +msgid "there is no built-in function named \"%s\"" +msgstr "встроенной функции \"%s\" нет" + +#: catalog/pg_proc.c:790 +#, c-format +msgid "SQL functions cannot return type %s" +msgstr "SQL-функции не могут возвращать тип %s" + +#: catalog/pg_proc.c:805 +#, c-format +msgid "SQL functions cannot have arguments of type %s" +msgstr "SQL-функции не могут иметь аргументы типа %s" + +#: catalog/catalog.c:76 +msgid "invalid fork name" +msgstr "неверное имя слоя" + +#: catalog/catalog.c:77 +msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"." +msgstr "Допустимые имена слоёв: \"main\", \"fsm\" и \"vm\"." + +#: catalog/pg_shdepend.c:566 catalog/dependency.c:757 +#, c-format +msgid "cannot drop %s because it is required by the database system" +msgstr "удалить объект %s нельзя, так как он нужен системе баз данных" + +#: catalog/pg_shdepend.c:677 catalog/dependency.c:923 +#, 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" +"и ещё %d объект (см. список в протоколе сервера)" +msgstr[1] "" +"\n" +"и ещё %d объекта (см. список в протоколе сервера)" +msgstr[2] "" +"\n" +"и ещё %d объектов (см. список в протоколе сервера)" + +#: catalog/pg_shdepend.c:684 +#, 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" +"и объекты в %d базе данных (см. список в протоколе сервера)" +msgstr[1] "" +"\n" +"и объекты в %d других базах данных (см. список в протоколе сервера)" +msgstr[2] "" +"\n" +"и объекты в %d других базах данных (см. список в протоколе сервера)" + +#: catalog/pg_shdepend.c:996 +#, c-format +msgid "role %u was concurrently dropped" +msgstr "роль %u удалена другим процессом" + +#: catalog/pg_shdepend.c:1015 +#, c-format +msgid "tablespace %u was concurrently dropped" +msgstr "табличное пространство %u удалено другим процессом" + +#: catalog/pg_shdepend.c:1030 +#, c-format +msgid "database %u was concurrently dropped" +msgstr "база данных %u удалена другим процессом" + +#: catalog/pg_shdepend.c:1074 +#, c-format +msgid "owner of %s" +msgstr "владелец объекта %s" + +#: catalog/pg_shdepend.c:1076 +#, c-format +msgid "privileges for %s" +msgstr "права доступа к объекту \"%s\"" + +#. translator: %s will always be "database %s" +#: catalog/pg_shdepend.c:1084 +#, c-format +msgid "%d object in %s" +msgid_plural "%d objects in %s" +msgstr[0] "%d объект (%s)" +msgstr[1] "%d объекта (%s)" +msgstr[2] "%d объектов (%s)" + +#: catalog/pg_shdepend.c:1195 +#, c-format +msgid "" +"cannot drop objects owned by %s because they are required by the database " +"system" +msgstr "" +"удалить объекты, принадлежащие роли %s, нельзя, так как они нужны системе " +"баз данных" + +#: catalog/pg_shdepend.c:1298 +#, c-format +msgid "" +"cannot reassign ownership of objects owned by %s because they are required " +"by the database system" +msgstr "" +"изменить владельца объектов, принадлежащих роли %s, нельзя, так как они " +"нужны системе баз данных" + +#: catalog/pg_constraint.c:783 +#, c-format +msgid "table \"%s\" has multiple constraints named \"%s\"" +msgstr "таблица \"%s\" содержит несколько ограничений с именем \"%s\"" + +#: catalog/pg_constraint.c:795 +#, c-format +msgid "constraint \"%s\" for table \"%s\" does not exist" +msgstr "ограничение \"%s\" для таблицы \"%s\" не существует" + +#: 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: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:312 +msgid "fixed-size types must have storage PLAIN" +msgstr "для типов постоянного размера применим только режим хранения PLAIN" + +#: catalog/pg_type.c:764 +#, c-format +msgid "could not form array type name for type \"%s\"" +msgstr "не удалось сформировать имя типа массива для типа \"%s\"" + +#: catalog/aclchk.c:200 +msgid "grant options can only be granted to roles" +msgstr "право назначения прав можно давать только ролям" + +#: catalog/aclchk.c:316 +#, c-format +msgid "no privileges were granted for column \"%s\" of relation \"%s\"" +msgstr "для колонки \"%s\" отношения \"%s\" не были назначены никакие права" + +#: catalog/aclchk.c:321 +#, c-format +msgid "no privileges were granted for \"%s\"" +msgstr "для объекта \"%s\" не были назначены никакие права" + +#: catalog/aclchk.c:329 +#, c-format +msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" +msgstr "" +"для колонки \"%s\" отношения \"%s\" были назначены не все запрошенные права" + +#: catalog/aclchk.c:334 +#, c-format +msgid "not all privileges were granted for \"%s\"" +msgstr "для объекта \"%s\" были назначены не все запрошенные права" + +#: catalog/aclchk.c:345 +#, c-format +msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" +msgstr "для колонки \"%s\" отношения \"%s\" не были отозваны никакие права" + +#: catalog/aclchk.c:350 +#, c-format +msgid "no privileges could be revoked for \"%s\"" +msgstr "для объекта \"%s\" не были отозваны никакие права" + +#: 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:363 +#, c-format +msgid "not all privileges could be revoked for \"%s\"" +msgstr "для объекта \"%s\" были отозваны не все права" + +#: catalog/aclchk.c:442 catalog/aclchk.c:891 +#, c-format +msgid "invalid privilege type %s for relation" +msgstr "право %s неприменимо для отношений" + +#: catalog/aclchk.c:446 catalog/aclchk.c:895 +#, c-format +msgid "invalid privilege type %s for sequence" +msgstr "право %s неприменимо для последовательностей" + +#: catalog/aclchk.c:450 +#, c-format +msgid "invalid privilege type %s for database" +msgstr "право %s неприменимо для баз данных" + +#: catalog/aclchk.c:454 catalog/aclchk.c:899 +#, c-format +msgid "invalid privilege type %s for function" +msgstr "право %s неприменимо для функций" + +#: catalog/aclchk.c:458 +#, c-format +msgid "invalid privilege type %s for language" +msgstr "право %s неприменимо для языков" + +#: catalog/aclchk.c:462 +#, c-format +msgid "invalid privilege type %s for large object" +msgstr "право %s неприменимо для больших объектов" + +#: catalog/aclchk.c:466 +#, c-format +msgid "invalid privilege type %s for schema" +msgstr "право %s неприменимо для схем" + +#: catalog/aclchk.c:470 +#, c-format +msgid "invalid privilege type %s for tablespace" +msgstr "право %s неприменимо для табличных пространств" + +#: catalog/aclchk.c:474 +#, c-format +msgid "invalid privilege type %s for foreign-data wrapper" +msgstr "право %s неприменимо для обёрток сторонних данных" + +#: 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/aclchk.c:932 +msgid "default privileges cannot be set for columns" +msgstr "права по умолчанию нельзя определить для колонок" + +#: catalog/aclchk.c:1730 +#, c-format +msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" +msgstr "" +"для последовательности \"%s\" применимы только права USAGE, SELECT и UPDATE" + +#: catalog/aclchk.c:1747 +msgid "invalid privilege type USAGE for table" +msgstr "право USAGE неприменимо для таблиц" + +#: catalog/aclchk.c:1912 +#, c-format +msgid "invalid privilege type %s for column" +msgstr "право %s неприменимо для колонок" + +#: catalog/aclchk.c:1925 +#, c-format +msgid "sequence \"%s\" only supports SELECT column privileges" +msgstr "для последовательности \"%s\" применимо только право SELECT" + +# TO REVIEW +#: catalog/aclchk.c:2509 +#, c-format +msgid "language \"%s\" is not trusted" +msgstr "язык \"%s\" не является доверенным" + +#: catalog/aclchk.c:2511 +msgid "Only superusers can use untrusted languages." +msgstr "Использовать недоверенные языки могут только суперпользователи." + +#: catalog/aclchk.c:3018 +#, c-format +msgid "unrecognized privilege type \"%s\"" +msgstr "нераспознанное право: \"%s\"" + +#: catalog/aclchk.c:3067 +#, c-format +msgid "permission denied for column %s" +msgstr "нет доступа к колонке %s" + +#: catalog/aclchk.c:3069 +#, c-format +msgid "permission denied for relation %s" +msgstr "нет доступа к отношению %s" + +#: catalog/aclchk.c:3073 +#, c-format +msgid "permission denied for database %s" +msgstr "нет доступа к базе данных %s" + +#: catalog/aclchk.c:3075 +#, c-format +msgid "permission denied for function %s" +msgstr "нет доступа к функции %s" + +#: catalog/aclchk.c:3077 +#, c-format +msgid "permission denied for operator %s" +msgstr "нет доступа к оператору %s" + +#: catalog/aclchk.c:3079 +#, c-format +msgid "permission denied for type %s" +msgstr "нет доступа к типу %s" + +#: catalog/aclchk.c:3081 +#, c-format +msgid "permission denied for language %s" +msgstr "нет доступа к языку %s" + +#: catalog/aclchk.c:3083 +#, c-format +msgid "permission denied for large object %s" +msgstr "нет доступа к большому объекту %s" + +#: catalog/aclchk.c:3085 +#, c-format +msgid "permission denied for schema %s" +msgstr "нет доступа к схеме %s" + +#: catalog/aclchk.c:3087 +#, c-format +msgid "permission denied for operator class %s" +msgstr "нет доступа к классу операторов %s" + +#: catalog/aclchk.c:3089 +#, c-format +msgid "permission denied for operator family %s" +msgstr "нет доступа к семейству операторов %s" + +#: catalog/aclchk.c:3091 +#, c-format +msgid "permission denied for collation %s" +msgstr "нет доступа к правилу сортировки %s" + +#: catalog/aclchk.c:3093 +#, c-format +msgid "permission denied for conversion %s" +msgstr "нет доступа к преобразованию %s" + +#: catalog/aclchk.c:3095 +#, c-format +msgid "permission denied for tablespace %s" +msgstr "нет доступа к табличному пространству %s" + +#: catalog/aclchk.c:3097 +#, c-format +msgid "permission denied for text search dictionary %s" +msgstr "нет доступа к словарю текстового поиска %s" + +#: catalog/aclchk.c:3099 +#, c-format +msgid "permission denied for text search configuration %s" +msgstr "нет доступа к конфигурации текстового поиска %s" + +#: catalog/aclchk.c:3101 +#, c-format +msgid "permission denied for foreign-data wrapper %s" +msgstr "нет доступа к обёртке сторонних данных %s" + +#: catalog/aclchk.c:3103 +#, c-format +msgid "permission denied for foreign server %s" +msgstr "нет доступа к стороннему серверу %s" + +#: catalog/aclchk.c:3105 +#, c-format +msgid "permission denied for extension %s" +msgstr "нет доступа к расширению %s" + +#: catalog/aclchk.c:3111 catalog/aclchk.c:3113 +#, c-format +msgid "must be owner of relation %s" +msgstr "нужно быть владельцем отношения %s" + +#: catalog/aclchk.c:3115 +#, c-format +msgid "must be owner of sequence %s" +msgstr "нужно быть владельцем последовательности %s" + +#: catalog/aclchk.c:3117 +#, c-format +msgid "must be owner of database %s" +msgstr "нужно быть владельцем базы %s" + +#: catalog/aclchk.c:3119 +#, c-format +msgid "must be owner of function %s" +msgstr "нужно быть владельцем функции %s" + +#: catalog/aclchk.c:3121 +#, c-format +msgid "must be owner of operator %s" +msgstr "нужно быть владельцем оператора %s" + +#: catalog/aclchk.c:3123 +#, c-format +msgid "must be owner of type %s" +msgstr "нужно быть владельцем типа %s" + +#: catalog/aclchk.c:3125 +#, c-format +msgid "must be owner of language %s" +msgstr "нужно быть владельцем языка %s" + +#: catalog/aclchk.c:3127 +#, c-format +msgid "must be owner of large object %s" +msgstr "нужно быть владельцем большого объекта %s" + +#: catalog/aclchk.c:3129 +#, c-format +msgid "must be owner of schema %s" +msgstr "нужно быть владельцем схемы %s" + +#: catalog/aclchk.c:3131 +#, c-format +msgid "must be owner of operator class %s" +msgstr "нужно быть владельцем класса операторов %s" + +#: catalog/aclchk.c:3133 +#, c-format +msgid "must be owner of operator family %s" +msgstr "нужно быть владельцем семейства операторов %s" + +#: catalog/aclchk.c:3135 +#, c-format +msgid "must be owner of collation %s" +msgstr "нужно быть владельцем правила сортировки %s" + +#: catalog/aclchk.c:3137 +#, c-format +msgid "must be owner of conversion %s" +msgstr "нужно быть владельцем преобразования %s" + +#: catalog/aclchk.c:3139 +#, c-format +msgid "must be owner of tablespace %s" +msgstr "нужно быть владельцем табличного пространства %s" + +#: catalog/aclchk.c:3141 +#, c-format +msgid "must be owner of text search dictionary %s" +msgstr "нужно быть владельцем словаря текстового поиска %s" + +#: catalog/aclchk.c:3143 +#, c-format +msgid "must be owner of text search configuration %s" +msgstr "нужно быть владельцем конфигурации текстового поиска %s" + +#: catalog/aclchk.c:3145 +#, c-format +msgid "must be owner of foreign-data wrapper %s" +msgstr "нужно быть владельцем обёртки сторонних данных %s" + +#: catalog/aclchk.c:3147 +#, c-format +msgid "must be owner of foreign server %s" +msgstr "нужно быть \"владельцем\" стороннего сервера %s" + +#: catalog/aclchk.c:3149 +#, c-format +msgid "must be owner of extension %s" +msgstr "нужно быть владельцем расширения %s" + +#: catalog/aclchk.c:3191 +#, c-format +msgid "permission denied for column \"%s\" of relation \"%s\"" +msgstr "нет доступа к колонке \"%s\" отношения \"%s\"" + +#: catalog/aclchk.c:3218 +#, c-format +msgid "role with OID %u does not exist" +msgstr "роль с OID %u не существует" + +#: catalog/aclchk.c:3311 catalog/aclchk.c:3319 +#, c-format +msgid "attribute %d of relation with OID %u does not exist" +msgstr "атрибут %d отношения с OID %u не существует" + +#: catalog/aclchk.c:3392 catalog/aclchk.c:4218 +#, c-format +msgid "relation with OID %u does not exist" +msgstr "отношение с OID %u не существует" + +#: catalog/aclchk.c:3600 catalog/aclchk.c:4322 +#, c-format +msgid "language with OID %u does not exist" +msgstr "язык с OID %u не существует" + +#: catalog/aclchk.c:3761 catalog/aclchk.c:4394 +#, c-format +msgid "schema with OID %u does not exist" +msgstr "схема с OID %u не существует" + +#: catalog/aclchk.c:3815 catalog/aclchk.c:4421 +#, c-format +msgid "tablespace with OID %u does not exist" +msgstr "табличное пространство с OID %u не существует" + +#: catalog/aclchk.c:4244 +#, c-format +msgid "type with OID %u does not exist" +msgstr "тип с OID %u не существует" + +#: catalog/aclchk.c:4270 +#, c-format +msgid "operator with OID %u does not exist" +msgstr "оператор с OID %u не существует" + +#: catalog/aclchk.c:4447 +#, c-format +msgid "operator class with OID %u does not exist" +msgstr "класс операторов с OID %u не существует" + +#: catalog/aclchk.c:4474 +#, c-format +msgid "operator family with OID %u does not exist" +msgstr "семейство операторов с OID %u не существует" + +#: catalog/aclchk.c:4501 +#, c-format +msgid "text search dictionary with OID %u does not exist" +msgstr "словарь текстового поиска с OID %u не существует" + +#: catalog/aclchk.c:4528 +#, c-format +msgid "text search configuration with OID %u does not exist" +msgstr "конфигурация текстового поиска с OID %u не существует" + +#: catalog/aclchk.c:4635 +#, c-format +msgid "collation with OID %u does not exist" +msgstr "правило сортировки с OID %u не существует" + +#: catalog/aclchk.c:4661 +#, c-format +msgid "conversion with OID %u does not exist" +msgstr "преобразование с OID %u не существует" + +#: catalog/aclchk.c:4702 +#, c-format +msgid "extension with OID %u does not exist" +msgstr "расширение с OID %u не существует" + +#: catalog/namespace.c:260 +msgid "temporary tables cannot specify a schema name" +msgstr "для временных таблиц имя схемы не указывается" + +#: catalog/namespace.c:410 catalog/namespace.c:423 +msgid "cannot create relations in temporary schemas of other sessions" +msgstr "во временных схемах других сеансов нельзя создавать отношения" + +#: catalog/namespace.c:414 +msgid "cannot create temporary relation in non-temporary schema" +msgstr "создавать временные отношения можно только во временных схемах" + +#: catalog/namespace.c:429 +msgid "only temporary relations may be created in temporary schemas" +msgstr "во временных схемах можно создавать только временные отношения" + +#: catalog/namespace.c:2389 parser/parse_expr.c:777 parser/parse_target.c:1085 +#, c-format +msgid "cross-database references are not implemented: %s" +msgstr "ссылки между базами не реализованы: %s" + +#: catalog/namespace.c:2395 gram.y:11634 gram.y:12842 parser/parse_expr.c:784 +#: parser/parse_target.c:1092 +#, c-format +msgid "improper qualified name (too many dotted names): %s" +msgstr "неверное полное имя (слишком много компонентов): %s" + +#: catalog/namespace.c:2523 +#, c-format +msgid "%s is already in schema \"%s\"" +msgstr "объект %s уже существует в схеме \"%s\"" + +#: catalog/namespace.c:2531 +msgid "cannot move objects into or out of temporary schemas" +msgstr "перемещать объекты в/из внутренних схем нельзя" + +#: catalog/namespace.c:2537 +msgid "cannot move objects into or out of TOAST schema" +msgstr "перемещать объекты в/из схем TOAST нельзя" + +#: catalog/namespace.c:2641 +#, c-format +msgid "improper relation name (too many dotted names): %s" +msgstr "неверное имя отношения (слишком много компонентов): %s" + +#: catalog/namespace.c:3040 +#, c-format +msgid "collation \"%s\" for encoding \"%s\" does not exist" +msgstr "правило сортировки \"%s\" для кодировки \"%s\" не существует" + +#: catalog/namespace.c:3092 +#, c-format +msgid "conversion \"%s\" does not exist" +msgstr "преобразование \"%s\" не существует" + +#: catalog/namespace.c:3297 +#, c-format +msgid "permission denied to create temporary tables in database \"%s\"" +msgstr "нет прав для создания временных таблиц в базе \"%s\"" + +#: catalog/namespace.c:3313 +msgid "cannot create temporary tables during recovery" +msgstr "создавать временные таблицы в процессе восстановления нельзя" + +#: catalog/objectaddress.c:286 +msgid "database 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:301 +msgid "language name cannot be qualified" +msgstr "имя языка не может быть составным" + +#: catalog/objectaddress.c:304 +msgid "foreign-data wrapper name cannot be qualified" +msgstr "имя обёртки сторонних данных не может быть составным" + +#: catalog/objectaddress.c:307 +msgid "server name cannot be qualified" +msgstr "имя сервера не может быть составным" + +#: catalog/objectaddress.c:532 +msgid "column name must be qualified" +msgstr "имя колонки нужно указать в полной форме" + +#: catalog/objectaddress.c:874 catalog/objectaddress.c:890 +msgid "must be superuser" +msgstr "требуются права суперпользователя" + +#: catalog/objectaddress.c:881 +msgid "must have CREATEROLE privilege" +msgstr "требуется право CREATEROLE" + +#: catalog/dependency.c:593 +#, c-format +msgid "cannot drop %s because %s requires it" +msgstr "удалить объект %s нельзя, так как он нужен объекту %s" + +#: catalog/dependency.c:596 +#, c-format +msgid "You can drop %s instead." +msgstr "Однако можно удалить %s." + +#: catalog/dependency.c:873 +#, c-format +msgid "drop auto-cascades to %s" +msgstr "удаление автоматически распространяется на объект %s" + +#: catalog/dependency.c:885 catalog/dependency.c:894 +#, c-format +msgid "%s depends on %s" +msgstr "%s зависит от объекта %s" + +#: catalog/dependency.c:906 catalog/dependency.c:915 +#, c-format +msgid "drop cascades to %s" +msgstr "удаление распространяется на объект %s" + +#: catalog/dependency.c:935 +#, c-format +msgid "cannot drop %s because other objects depend on it" +msgstr "удалить объект %s нельзя, так как от него зависят другие объекты" + +#: catalog/dependency.c:939 catalog/dependency.c:946 +msgid "Use DROP ... CASCADE to drop the dependent objects too." +msgstr "Для удаления зависимых объектов используйте DROP ... CASCADE." + +#: catalog/dependency.c:943 +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:952 +#, c-format +msgid "drop cascades to %d other object" +msgid_plural "drop cascades to %d other objects" +msgstr[0] "удаление распространяется на ещё %d объект" +msgstr[1] "удаление распространяется на ещё %d объекта" +msgstr[2] "удаление распространяется на ещё %d объектов" + +#: catalog/dependency.c:2223 +#, c-format +msgid " column %s" +msgstr " колонка %s" + +#: catalog/dependency.c:2229 +#, c-format +msgid "function %s" +msgstr "функция %s" + +#: catalog/dependency.c:2234 +#, c-format +msgid "type %s" +msgstr "тип %s" + +#: catalog/dependency.c:2264 +#, c-format +msgid "cast from %s to %s" +msgstr "преобразование типа из %s в %s" + +#: catalog/dependency.c:2284 +#, c-format +msgid "collation %s" +msgstr "правило сортировки %s" + +#: catalog/dependency.c:2308 +#, c-format +msgid "constraint %s on %s" +msgstr "ограничение %s в отношении %s" + +#: catalog/dependency.c:2314 +#, c-format +msgid "constraint %s" +msgstr "ограничение %s" + +#: catalog/dependency.c:2331 +#, c-format +msgid "conversion %s" +msgstr "преобразование %s" + +#: catalog/dependency.c:2368 +#, c-format +msgid "default for %s" +msgstr "значение по умолчанию, %s" + +#: catalog/dependency.c:2385 +#, c-format +msgid "language %s" +msgstr "язык %s" + +#: catalog/dependency.c:2391 +#, c-format +msgid "large object %u" +msgstr "большой объект %u" + +#: catalog/dependency.c:2396 +#, c-format +msgid "operator %s" +msgstr "оператор %s" + +#: catalog/dependency.c:2428 +#, 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:2478 +#, c-format +msgid "operator %d (%s, %s) of %s: %s" +msgstr "оператор %d (%s, %s) из семейства \"%s\": %s" + +#. translator: %d is the function number, the first two %s's +#. are data type names, the third %s is the description of the +#. operator family, and the last %s is the textual form of the +#. function with arguments. +#: catalog/dependency.c:2528 +#, c-format +msgid "function %d (%s, %s) of %s: %s" +msgstr "функция %d (%s, %s) из семейства \"%s\": %s" + +#: catalog/dependency.c:2568 +#, c-format +msgid "rule %s on " +msgstr "правило %s для отношения: " + +#: catalog/dependency.c:2603 +#, c-format +msgid "trigger %s on " +msgstr "триггер %s в отношении: " + +#: catalog/dependency.c:2620 +#, c-format +msgid "schema %s" +msgstr "схема %s" + +#: catalog/dependency.c:2633 +#, c-format +msgid "text search parser %s" +msgstr "анализатор текстового поиска %s" + +#: catalog/dependency.c:2648 +#, c-format +msgid "text search dictionary %s" +msgstr "словарь текстового поиска %s" + +#: catalog/dependency.c:2663 +#, c-format +msgid "text search template %s" +msgstr "шаблон текстового поиска %s" + +#: catalog/dependency.c:2678 +#, c-format +msgid "text search configuration %s" +msgstr "конфигурация текстового поиска %s" + +#: catalog/dependency.c:2686 +#, c-format +msgid "role %s" +msgstr "роль %s" + +#: catalog/dependency.c:2699 +#, c-format +msgid "database %s" +msgstr "база данных %s" + +#: catalog/dependency.c:2711 +#, c-format +msgid "tablespace %s" +msgstr "табличное пространство %s" + +#: catalog/dependency.c:2720 +#, c-format +msgid "foreign-data wrapper %s" +msgstr "обёртка сторонних данных %s" + +#: catalog/dependency.c:2729 +#, c-format +msgid "server %s" +msgstr "сервер %s" + +#: catalog/dependency.c:2754 +#, c-format +msgid "user mapping for %s" +msgstr "сопоставление для пользователя %s" + +#: catalog/dependency.c:2788 +#, c-format +msgid "default privileges on new relations belonging to role %s" +msgstr "права по умолчанию для новых отношений, принадлежащих роли %s" + +#: catalog/dependency.c:2793 +#, c-format +msgid "default privileges on new sequences belonging to role %s" +msgstr "" +"права по умолчанию для новых последовательностей, принадлежащих роли %s" + +#: catalog/dependency.c:2798 +#, c-format +msgid "default privileges on new functions belonging to role %s" +msgstr "права по умолчанию для новых функций, принадлежащих роли %s" + +#: catalog/dependency.c:2804 +#, c-format +msgid "default privileges belonging to role %s" +msgstr "права по умолчанию для новых объектов, принадлежащих роли %s" + +#: catalog/dependency.c:2812 +#, c-format +msgid " in schema %s" +msgstr " в схеме %s" + +#: catalog/dependency.c:2829 +#, c-format +msgid "extension %s" +msgstr "расширение %s" + +#: catalog/dependency.c:2887 +#, c-format +msgid "table %s" +msgstr "таблица %s" + +#: catalog/dependency.c:2891 +#, c-format +msgid "index %s" +msgstr "индекс %s" + +#: catalog/dependency.c:2895 +#, c-format +msgid "sequence %s" +msgstr "последовательность %s" + +#: catalog/dependency.c:2899 +#, c-format +msgid "uncataloged table %s" +msgstr "таблица не в каталоге %s" + +#: catalog/dependency.c:2903 +#, c-format +msgid "toast table %s" +msgstr "TOAST-таблица %s" + +#: catalog/dependency.c:2907 +#, c-format +msgid "view %s" +msgstr "представление %s" + +#: catalog/dependency.c:2911 +#, c-format +msgid "composite type %s" +msgstr "составной тип %s" + +#: catalog/dependency.c:2915 +#, c-format +msgid "foreign table %s" +msgstr "сторонняя таблица %s" + +#: catalog/dependency.c:2920 +#, c-format +msgid "relation %s" +msgstr "отношение %s" + +#: catalog/dependency.c:2957 +#, c-format +msgid "operator family %s for access method %s" +msgstr "семейство операторов %s для метода доступа %s" + +#: catalog/pg_operator.c:221 catalog/pg_operator.c:363 +#, c-format +msgid "\"%s\" is not a valid operator name" +msgstr "имя \"%s\" недопустимо для оператора" + +#: catalog/pg_operator.c:372 +msgid "only binary operators can have commutators" +msgstr "коммутативную операцию можно определить только для бинарных операторов" + +#: catalog/pg_operator.c:376 +msgid "only binary operators can have join selectivity" +msgstr "" +"функцию оценки соединения можно определить только для бинарных операторов" + +#: catalog/pg_operator.c:380 +msgid "only binary operators can merge join" +msgstr "" +"поддержку соединения слиянием можно обозначить только для бинарных операторов" + +#: 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 "" +"поддержку соединения слиянием можно обозначить только для логических " +"операторов" + +#: catalog/pg_operator.c:411 +msgid "only boolean operators can hash" +msgstr "поддержку хэша можно обозначить только для логических операторов" + +#: catalog/pg_operator.c:423 +#, c-format +msgid "operator %s already exists" +msgstr "оператор %s уже существует" + +#: catalog/pg_operator.c:616 +msgid "operator cannot be its own negator or sort operator" +msgstr "" +"оператор не может быть обратным к себе или собственным оператором сортировки" + +#: catalog/pg_enum.c:113 catalog/pg_enum.c:199 +#, c-format +msgid "invalid enum label \"%s\"" +msgstr "неверная метка в перечислении \"%s\"" + +#: catalog/pg_enum.c:114 catalog/pg_enum.c:200 +#, c-format +msgid "Labels must be %d characters or less." +msgstr "Длина метки не должна превышать %d байт." + +#: catalog/pg_enum.c:264 +#, c-format +msgid "\"%s\" is not an existing enum label" +msgstr "в перечислении нет метки\"%s\"" + +#: catalog/pg_enum.c:325 +msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade" +msgstr "" +"конструкция ALTER TYPE ADD BEFORE/AFTER несовместима с двоичным обновлением " +"данных" + +#: catalog/heap.c:264 +#, c-format +msgid "permission denied to create \"%s.%s\"" +msgstr "нет прав для создания отношения \"%s.%s\"" + +#: catalog/heap.c:266 +msgid "System catalog modifications are currently disallowed." +msgstr "Изменение системного каталога в текущем состоянии запрещено." + +#: catalog/heap.c:406 +#, c-format +msgid "column name \"%s\" conflicts with a system column name" +msgstr "имя колонки \"%s\" конфликтует с системной колонкой" + +#: catalog/heap.c:422 +#, c-format +msgid "column name \"%s\" specified more than once" +msgstr "имя колонки \"%s\" указано неоднократно" + +#: catalog/heap.c:472 +#, c-format +msgid "column \"%s\" has type \"unknown\"" +msgstr "колонка \"%s\" имеет неизвестный тип (UNKNOWN)" + +#: catalog/heap.c:473 +msgid "Proceeding with relation creation anyway." +msgstr "Несмотря на это, создание отношения продолжается." + +#: catalog/heap.c:486 +#, c-format +msgid "column \"%s\" has pseudo-type %s" +msgstr "колонка \"%s\" имеет псевдотип %s" + +#: catalog/heap.c:516 +#, c-format +msgid "composite type %s cannot be made a member of itself" +msgstr "составной тип %s не может содержать себя же" + +#: catalog/heap.c:558 +#, c-format +msgid "no collation was derived for column \"%s\" with collatable type %s" +msgstr "" +"для колонки \"%s\" с сортируемым типом %s не удалось получить правило " +"сортировки" + +#: catalog/heap.c:1030 +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:2150 +#, c-format +msgid "check constraint \"%s\" already exists" +msgstr "ограничение-проверка \"%s\" уже существует" + +#: catalog/heap.c:2300 +#, c-format +msgid "merging constraint \"%s\" with inherited definition" +msgstr "слияние ограничения \"%s\" с унаследованным определением" + +#: catalog/heap.c:2398 +msgid "cannot use column references in default expression" +msgstr "в выражении по умолчанию нельзя ссылаться на колонки" + +#: catalog/heap.c:2406 +msgid "default expression must not return a set" +msgstr "выражение по умолчанию не может возвращать множество" + +#: catalog/heap.c:2414 +msgid "cannot use subquery in default expression" +msgstr "в выражении по умолчанию нельзя использовать подзапросы" + +#: catalog/heap.c:2418 +msgid "cannot use aggregate function in default expression" +msgstr "в выражении по умолчанию нельзя использовать агрегатные функции" + +#: catalog/heap.c:2422 +msgid "cannot use window function in default expression" +msgstr "в выражении по умолчанию нельзя использовать оконные функции" + +#: catalog/heap.c:2492 +#, c-format +msgid "only table \"%s\" can be referenced in check constraint" +msgstr "в ограничении-проверке можно ссылаться только на таблицу \"%s\"" + +#: catalog/heap.c:2748 +msgid "unsupported ON COMMIT and foreign key combination" +msgstr "неподдерживаемое сочетание внешнего ключа с ON COMMIT" + +#: catalog/heap.c:2749 +#, 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:2754 +msgid "cannot truncate a table referenced in a foreign key constraint" +msgstr "опустошить таблицу, на которую ссылается внешний ключ, нельзя" + +#: catalog/heap.c:2755 +#, c-format +msgid "Table \"%s\" references \"%s\"." +msgstr "Таблица \"%s\" ссылается на \"%s\"." + +#: catalog/heap.c:2757 +#, c-format +msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." +msgstr "" +"Опустошите таблицу \"%s\" параллельно или используйте TRUNCATE ... CASCADE." + +#: catalog/pg_depend.c:323 +#, c-format +msgid "cannot remove dependency on %s because it is a system object" +msgstr "" +"ликвидировать зависимость от объекта %s нельзя, так как это системный объект" + +#: main/main.c:237 +#, c-format +msgid "%s: setsysinfo failed: %s\n" +msgstr "%s: ошибка setsysinfo: %s\n" + +#: main/main.c:259 +#, c-format +msgid "%s: WSAStartup failed: %d\n" +msgstr "%s: ошибка WSAStartup: %d\n" + +#: main/main.c:278 +#, c-format +msgid "" +"%s is the PostgreSQL server.\n" +"\n" +msgstr "" +"%s - сервер PostgreSQL.\n" +"\n" + +#: main/main.c:279 +#, c-format +msgid "" +"Usage:\n" +" %s [OPTION]...\n" +"\n" +msgstr "" +"Пример запуска:\n" +" %s [ПАРАМЕТР]...\n" +"\n" + +#: main/main.c:280 +#, c-format +msgid "Options:\n" +msgstr "Параметры:\n" + +#: main/main.c:282 +#, c-format +msgid " -A 1|0 enable/disable run-time assert checking\n" +msgstr "" +" -A 1|0 включить/выключить проверки истинности во время " +"выполнения\n" + +#: main/main.c:284 +#, c-format +msgid " -B NBUFFERS number of shared buffers\n" +msgstr " -B ЧИСЛО_БУФ число разделяемых буферов\n" + +#: main/main.c:285 +#, c-format +msgid " -c NAME=VALUE set run-time parameter\n" +msgstr " -c ИМЯ=ЗНАЧЕНИЕ установить параметр выполнения\n" + +#: main/main.c:286 +#, c-format +msgid " -d 1-5 debugging level\n" +msgstr " -d 1-5 уровень отладочных сообщений\n" + +#: main/main.c:287 +#, c-format +msgid " -D DATADIR database directory\n" +msgstr " -D КАТАЛОГ каталог с данными\n" + +#: main/main.c:288 +#, c-format +msgid " -e use European date input format (DMY)\n" +msgstr " -e использовать европейский формат дат (ДМГ)\n" + +#: main/main.c:289 +#, c-format +msgid " -F turn fsync off\n" +msgstr " -F выключить синхронизацию с ФС\n" + +#: main/main.c:290 +#, c-format +msgid " -h HOSTNAME host name or IP address to listen on\n" +msgstr " -h ИМЯ имя или IP-адрес для приёма сетевых соединений\n" + +#: main/main.c:291 +#, c-format +msgid " -i enable TCP/IP connections\n" +msgstr " -i включить соединения TCP/IP\n" + +#: main/main.c:292 +#, c-format +msgid " -k DIRECTORY Unix-domain socket location\n" +msgstr " -k КАТАЛОГ расположение доменных сокетов Unix\n" + +#: main/main.c:294 +#, c-format +msgid " -l enable SSL connections\n" +msgstr " -l разрешить SSL-подключения\n" + +#: main/main.c:296 +#, c-format +msgid " -N MAX-CONNECT maximum number of allowed connections\n" +msgstr " -N МАКС_ПОДКЛ предельное число подключений\n" + +#: main/main.c:297 +#, c-format +msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n" +msgstr "" +" -o ПАРАМЕТРЫ передать параметры каждому серверному процессу (уже " +"неактуально)\n" + +#: main/main.c:298 +#, c-format +msgid " -p PORT port number to listen on\n" +msgstr " -p ПОРТ номер порта для приёма подключений\n" + +#: main/main.c:299 +#, c-format +msgid " -s show statistics after each query\n" +msgstr " -s показывать статистику после каждого запроса\n" + +#: main/main.c:300 +#, c-format +msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n" +msgstr " -S РАБ_ПАМЯТЬ задать объём памяти для сортировки (в КБ)\n" + +#: main/main.c:301 +#, c-format +msgid " --NAME=VALUE set run-time parameter\n" +msgstr " --ИМЯ=ЗНАЧЕНИЕ установить параметр выполнения\n" + +#: main/main.c:302 +#, c-format +msgid " --describe-config describe configuration parameters, then exit\n" +msgstr " --describe-config вывести параметры конфигурации и выйти\n" + +#: main/main.c:303 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help показать эту справку и выйти\n" + +#: main/main.c:304 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version показать версию и выйти\n" + +#: main/main.c:306 +#, c-format +msgid "" +"\n" +"Developer options:\n" +msgstr "" +"\n" +"Параметры для разработчиков:\n" + +#: 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" + +#: main/main.c:308 +#, c-format +msgid "" +" -n do not reinitialize shared memory after abnormal exit\n" +msgstr "" +" -n не переинициализировать разделяемую память после " +"аварийного выхода\n" + +#: main/main.c:309 +#, c-format +msgid " -O allow system table structure changes\n" +msgstr " -O разрешить изменять структуру системных таблиц\n" + +#: main/main.c:310 +#, c-format +msgid " -P disable system indexes\n" +msgstr " -P отключить системные индексы\n" + +#: main/main.c:311 +#, c-format +msgid " -t pa|pl|ex show timings after each query\n" +msgstr " -t pa|pl|ex показать время каждого запроса\n" + +#: main/main.c:312 +#, c-format +msgid " -T send SIGSTOP to all backend processes if one dies\n" +msgstr "" +" -T посылать сигнал SIGSTOP всем серверным процессам при " +"отключении одного\n" + +#: main/main.c:313 +#, c-format +msgid " -W NUM wait NUM seconds to allow attach from a debugger\n" +msgstr "" +" -W СЕК ждать заданное число секунд для подключения отладчика\n" + +#: main/main.c:315 +#, c-format +msgid "" +"\n" +"Options for single-user mode:\n" +msgstr "" +"\n" +"Параметры для монопольного режима:\n" + +#: main/main.c:316 +#, c-format +msgid " --single selects single-user mode (must be first argument)\n" +msgstr "" +" --single включить монопольный режим (этот аргумент должен быть " +"первым)\n" + +#: main/main.c:317 +#, c-format +msgid " DBNAME database name (defaults to user name)\n" +msgstr " ИМЯ_БД база данных (по умолчанию - имя пользователя)\n" + +#: main/main.c:318 +#, c-format +msgid " -d 0-5 override debugging level\n" +msgstr " -d 0-5 переопределить уровень отладочных сообщений\n" + +#: main/main.c:319 +#, c-format +msgid " -E echo statement before execution\n" +msgstr " -E выводить SQL-операторы перед выполнением\n" + +#: main/main.c:320 +#, c-format +msgid " -j do not use newline as interactive query delimiter\n" +msgstr "" +" -j не считать разделителем интерактивных запросов символ " +"конца строки\n" + +#: main/main.c:321 main/main.c:326 +#, c-format +msgid " -r FILENAME send stdout and stderr to given file\n" +msgstr " -r ИМЯ_ФАЙЛА перенаправить 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 "" +" ИМЯ_БД имя базы данных (обязательный аргумент в режиме " +"инициализации)\n" + +#: main/main.c:327 +#, c-format +msgid " -x NUM internal use\n" +msgstr " -x ЧИСЛО параметр для внутреннего использования\n" + +#: 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" +"Об ошибках сообщайте по адресу .\n" + +#: 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 security compromise. See the documentation for\n" +"more information on how to properly start the server.\n" +msgstr "" +"Запускать сервер PostgreSQL под именем \"root\" не разрешается.\n" +"Для предотвращения возможной компрометации системы сервер\n" +"должен запускать обычный пользователь. Подробнее о том, как\n" +"правильно запускать сервер, вы можете узнать в документации.\n" + +#: main/main.c:360 +#, c-format +msgid "%s: real and effective user IDs must match\n" +msgstr "%s: фактический и эффективный ID пользователя должны совпадать\n" + +#: 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 security compromises. See the documentation for\n" +"more information on how to properly start the server.\n" +msgstr "" +"Запускать PostgreSQL под именем пользователя с правами\n" +"администратора не разрешается.\n" +"Для предотвращения возможной компрометации системы сервер\n" +"должен запускать обычный пользователь. Подробнее о том, как\n" +"правильно запускать сервер, вы можете узнать в документации.\n" + +#: main/main.c:388 +#, c-format +msgid "%s: invalid effective UID: %d\n" +msgstr "%s: неверный эффективный UID: %d\n" + +#: main/main.c:401 +#, c-format +msgid "%s: could not determine user name (GetUserName failed)\n" +msgstr "%s: не удалось определить имя пользователя (ошибка в GetUserName)\n" + +#: parser/parse_coerce.c:932 parser/parse_coerce.c:962 +#: parser/parse_coerce.c:980 parser/parse_coerce.c:995 +#: parser/parse_expr.c:1672 parser/parse_expr.c:2134 parser/parse_target.c:829 +#, c-format +msgid "cannot cast type %s to %s" +msgstr "преобразовать тип %s в %s нельзя" + +#: parser/parse_coerce.c:965 +msgid "Input has too few columns." +msgstr "Во входных данных недостаточно колонок." + +#: parser/parse_coerce.c:983 +#, c-format +msgid "Cannot cast type %s to %s in column %d." +msgstr "Не удалось преобразовать тип %s в %s в колонке %d." + +#: parser/parse_coerce.c:998 +msgid "Input has too many columns." +msgstr "Во входных данных больше колонок." + +#. translator: first %s is name of a SQL construct, eg WHERE +#: parser/parse_coerce.c:1041 +#, 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 +#, 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 +#, 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 +#, 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 +#, c-format +msgid "%s could not convert type %s to %s" +msgstr "в конструкции %s нельзя преобразовать тип %s в %s" + +#: parser/parse_coerce.c:1539 +msgid "arguments declared \"anyelement\" are not all alike" +msgstr "аргументы, объявленные как \"anyelement\", должны быть однотипными" + +#: parser/parse_coerce.c:1559 +msgid "arguments declared \"anyarray\" are not all alike" +msgstr "аргументы, объявленные как \"anyarray\", должны быть однотипными" + +#: parser/parse_coerce.c:1588 parser/parse_coerce.c:1736 +#: parser/parse_coerce.c:1768 +#, c-format +msgid "argument declared \"anyarray\" is not an array but type %s" +msgstr "" +"аргумент, объявленный как \"anyarray\", оказался не массивом, а типом %s" + +#: parser/parse_coerce.c:1604 +msgid "" +"argument declared \"anyarray\" is not consistent with argument declared " +"\"anyelement\"" +msgstr "" +"аргумент, объявленный как \"anyarray\", не согласуется с аргументом " +"\"anyelement\"" + +#: parser/parse_coerce.c:1622 +msgid "could not determine polymorphic type because input has type \"unknown\"" +msgstr "" +"не удалось определить полиморфный тип, так как входные аргументы имеют тип " +"\"unknown\"" + +#: parser/parse_coerce.c:1632 +#, c-format +msgid "type matched to anynonarray is an array type: %s" +msgstr "" +"в нарушение объявления \"anynonarray\" соответствующий аргумент оказался " +"массивом: %s" + +#: parser/parse_coerce.c:1642 +#, c-format +msgid "type matched to anyenum is not an enum type: %s" +msgstr "" +"в нарушение объявления \"anyenum\" соответствующий аргумент оказался не " +"перечислением: %s" + +#: gram.y:916 +#, c-format +msgid "unrecognized role option \"%s\"" +msgstr "нераспознанный параметр роли \"%s\"" + +#: gram.y:1302 +msgid "current database cannot be changed" +msgstr "сменить текущую базу данных нельзя" + +#: gram.y:1420 gram.y:1435 +msgid "time zone interval must be HOUR or HOUR TO MINUTE" +msgstr "" +"интервал, задающий часовой пояс, должен иметь точность HOUR или HOUR TO " +"MINUTE" + +#: gram.y:1440 gram.y:9246 gram.y:11759 +msgid "interval precision specified twice" +msgstr "точность интервала указана дважды" + +#: gram.y:3006 +msgid "CREATE TABLE AS cannot specify INTO" +msgstr "в CREATE TABLE AS нельзя указать INTO" + +#: gram.y:4059 +msgid "duplicate trigger events specified" +msgstr "события триггера повторяются" + +#: gram.y:4154 parser/parse_utilcmd.c:2527 parser/parse_utilcmd.c:2553 +msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" +msgstr "" +"ограничение с характеристикой INITIALLY DEFERRED должно быть объявлено как " +"DEFERRABLE" + +#: gram.y:4161 +msgid "conflicting constraint properties" +msgstr "противоречащие характеристики ограничения" + +#: gram.y:4222 +msgid "CREATE ASSERTION is not yet implemented" +msgstr "оператор CREATE ASSERTION ещё не реализован" + +#: gram.y:4238 +msgid "DROP ASSERTION is not yet implemented" +msgstr "оператор DROP ASSERTION ещё не реализован" + +#: gram.y:4574 +msgid "RECHECK is no longer required" +msgstr "RECHECK более не требуется" + +#: gram.y:4575 +msgid "Update your data type." +msgstr "Обновите тип данных." + +#: gram.y:7298 gram.y:7304 gram.y:7310 +msgid "WITH CHECK OPTION is not implemented" +msgstr "предложение WITH CHECK OPTION ещё не реализовано" + +#: gram.y:7986 +msgid "column name list not allowed in CREATE TABLE / AS EXECUTE" +msgstr "в CREATE TABLE / AS EXECUTE нельзя указать список имён колонок" + +#: gram.y:8210 +msgid "number of columns does not match number of values" +msgstr "число колонок не равно числу значений" + +#: gram.y:8660 +msgid "LIMIT #,# syntax is not supported" +msgstr "синтаксис LIMIT #,# не поддерживается" + +#: gram.y:8661 +msgid "Use separate LIMIT and OFFSET clauses." +msgstr "Используйте отдельные предложения LIMIT и OFFSET." + +#: gram.y:8879 +msgid "VALUES in FROM must have an alias" +msgstr "список VALUES во FROM должен иметь псевдоним" + +#: gram.y:8880 +msgid "For example, FROM (VALUES ...) [AS] foo." +msgstr "Например, FROM (VALUES ...) [AS] foo." + +#: gram.y:8885 +msgid "subquery in FROM must have an alias" +msgstr "подзапрос во FROM должен иметь псевдоним" + +#: gram.y:8886 +msgid "For example, FROM (SELECT ...) [AS] foo." +msgstr "Например, FROM (SELECT ...) [AS] foo." + +#: gram.y:9372 +msgid "precision for type float must be at least 1 bit" +msgstr "тип float должен иметь точность минимум 1 бит" + +#: gram.y:9381 +msgid "precision for type float must be less than 54 bits" +msgstr "тип float должен иметь точность меньше 54 бит" + +#: gram.y:10095 +msgid "UNIQUE predicate is not yet implemented" +msgstr "предикат UNIQUE ещё не реализован" + +#: gram.y:11026 +msgid "RANGE PRECEDING is only supported with UNBOUNDED" +msgstr "RANGE PRECEDING поддерживается только с UNBOUNDED" + +#: gram.y:11032 +msgid "RANGE FOLLOWING is only supported with UNBOUNDED" +msgstr "RANGE FOLLOWING поддерживается только с UNBOUNDED" + +#: gram.y:11059 gram.y:11082 +msgid "frame start cannot be UNBOUNDED FOLLOWING" +msgstr "началом рамки не может быть UNBOUNDED FOLLOWING" + +#: gram.y:11064 +msgid "frame starting from following row cannot end with current row" +msgstr "" +"рамка, начинающаяся со следующей строки, не может заканчиваться текущей" + +#: gram.y:11087 +msgid "frame end cannot be UNBOUNDED PRECEDING" +msgstr "концом рамки не может быть UNBOUNDED PRECEDING" + +#: gram.y:11093 +msgid "frame starting from current row cannot have preceding rows" +msgstr "" +"рамка, начинающаяся с текущей строки, не может иметь предшествующих строк" + +#: gram.y:11100 +msgid "frame starting from following row cannot have preceding rows" +msgstr "" +"рамка, начинающаяся со следующей строки, не может иметь предшествующих строк" + +#: gram.y:11734 +msgid "type modifier cannot have parameter name" +msgstr "параметр функции-модификатора типа должен быть безымянным" + +#: gram.y:12337 gram.y:12545 +msgid "improper use of \"*\"" +msgstr "недопустимое использование \"*\"" + +#: gram.y:12476 +msgid "wrong number of parameters on left side of OVERLAPS expression" +msgstr "неверное число параметров в левой части выражения OVERLAPS" + +#: gram.y:12483 +msgid "wrong number of parameters on right side of OVERLAPS expression" +msgstr "неверное число параметров в правой части выражения OVERLAPS" + +#: gram.y:12608 +msgid "multiple ORDER BY clauses not allowed" +msgstr "ORDER BY можно указать только один раз" + +#: gram.y:12619 +msgid "multiple OFFSET clauses not allowed" +msgstr "OFFSET можно указать только один раз" + +#: gram.y:12628 +msgid "multiple LIMIT clauses not allowed" +msgstr "LIMIT можно указать только один раз" + +#: gram.y:12637 +msgid "multiple WITH clauses not allowed" +msgstr "WITH можно указать только один раз" + +#: gram.y:12783 +msgid "OUT and INOUT arguments aren't allowed in TABLE functions" +msgstr "в табличных функциях не может быть аргументов OUT и INOUT" + +#: gram.y:12884 +msgid "multiple COLLATE clauses not allowed" +msgstr "COLLATE можно указать только один раз" + +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:12922 gram.y:12935 +#, c-format +msgid "%s constraints cannot be marked DEFERRABLE" +msgstr "ограничения %s не могут иметь характеристики DEFERRABLE" + +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:12948 +#, c-format +msgid "%s constraints cannot be marked NOT VALID" +msgstr "ограничения %s не могут иметь характеристики NOT VALID" + +#: parser/parse_utilcmd.c:182 +#, c-format +msgid "relation \"%s\" already exists, skipping" +msgstr "отношение \"%s\" уже существует, пропускается" + +#: parser/parse_utilcmd.c:335 +msgid "array of serial is not implemented" +msgstr "массивы с типом serial не реализованы" + +#: parser/parse_utilcmd.c:383 +#, c-format +msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\"" +msgstr "%s создаст последовательность \"%s\" для колонки serial \"%s.%s\"" + +#: 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:508 +#, c-format +msgid "multiple default values specified for column \"%s\" of table \"%s\"" +msgstr "" +"для колонки \"%s\" таблицы \"%s\" указано несколько значений по умолчанию" + +#: parser/parse_utilcmd.c:1155 parser/parse_utilcmd.c:1231 +#, c-format +msgid "Index \"%s\" contains a whole-row table reference." +msgstr "Индекс \"%s\" ссылается на тип всей строки таблицы." + +#: parser/parse_utilcmd.c:1496 +msgid "cannot use an existing index in CREATE TABLE" +msgstr "в CREATE TABLE нельзя использовать существующий индекс" + +#: parser/parse_utilcmd.c:1516 +#, c-format +msgid "index \"%s\" is already associated with a constraint" +msgstr "индекс \"%s\" уже связан с ограничением" + +#: parser/parse_utilcmd.c:1524 +#, c-format +msgid "index \"%s\" does not belong to table \"%s\"" +msgstr "индекс \"%s\" не принадлежит таблице \"%s\"" + +#: parser/parse_utilcmd.c:1531 +#, c-format +msgid "index \"%s\" is not valid" +msgstr "индекс \"%s\" - не рабочий" + +#: parser/parse_utilcmd.c:1537 +#, c-format +msgid "\"%s\" is not a unique index" +msgstr "\"%s\" не является уникальным индексом" + +#: parser/parse_utilcmd.c:1538 parser/parse_utilcmd.c:1545 +#: parser/parse_utilcmd.c:1552 parser/parse_utilcmd.c:1622 +msgid "Cannot create a primary key or unique constraint using such an index." +msgstr "" +"Создать первичный ключ или ограничение уникальности для такого индекса " +"нельзя." + +#: parser/parse_utilcmd.c:1544 +#, c-format +msgid "index \"%s\" contains expressions" +msgstr "индекс \"%s\" содержит выражения" + +#: parser/parse_utilcmd.c:1551 +#, c-format +msgid "\"%s\" is a partial index" +msgstr "\"%s\" - частичный индекс" + +#: parser/parse_utilcmd.c:1563 +#, c-format +msgid "\"%s\" is a deferrable index" +msgstr "\"%s\" - откладываемый индекс" + +#: parser/parse_utilcmd.c:1564 +msgid "Cannot create a non-deferrable constraint using a deferrable index." +msgstr "" +"Создать не откладываемое ограничение на базе откладываемого индекса нельзя." + +#: parser/parse_utilcmd.c:1621 +#, c-format +msgid "index \"%s\" does not have default sorting behavior" +msgstr "для индекса \"%s\" не определено поведение при сортировке по умолчанию" + +#: parser/parse_utilcmd.c:1766 +#, c-format +msgid "column \"%s\" appears twice in primary key constraint" +msgstr "колонка \"%s\" фигурирует в первичном ключе дважды" + +#: parser/parse_utilcmd.c:1772 +#, c-format +msgid "column \"%s\" appears twice in unique constraint" +msgstr "колонка \"%s\" фигурирует в ограничении уникальности дважды" + +#: parser/parse_utilcmd.c:1937 +msgid "index expression cannot return a set" +msgstr "индексное выражение не может возвращать множество" + +#: parser/parse_utilcmd.c:1947 +msgid "" +"index expressions and predicates can refer only to the table being indexed" +msgstr "" +"индексные выражения и предикаты могут ссылаться только на индексируемую " +"таблицу" + +#: parser/parse_utilcmd.c:2044 +msgid "rule WHERE condition cannot contain references to other relations" +msgstr "в условиях WHERE для правил нельзя ссылаться на другие отношения" + +#: parser/parse_utilcmd.c:2050 +msgid "cannot use aggregate function in rule WHERE condition" +msgstr "в условиях WHERE для правил нельзя использовать агрегатные функции" + +#: parser/parse_utilcmd.c:2054 +msgid "cannot use window function in rule WHERE condition" +msgstr "в условиях WHERE для правил нельзя использовать оконные функции" + +#: parser/parse_utilcmd.c:2126 +msgid "" +"rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE " +"actions" +msgstr "" +"правила с условиями WHERE могут содержать только действия SELECT, INSERT, " +"UPDATE или DELETE" + +#: parser/parse_utilcmd.c:2162 +msgid "ON SELECT rule cannot use OLD" +msgstr "в правиле ON SELECT нельзя использовать OLD" + +#: parser/parse_utilcmd.c:2166 +msgid "ON SELECT rule cannot use NEW" +msgstr "в правиле ON SELECT нельзя использовать NEW" + +#: parser/parse_utilcmd.c:2175 +msgid "ON INSERT rule cannot use OLD" +msgstr "в правиле ON INSERT нельзя использовать OLD" + +#: parser/parse_utilcmd.c:2181 +msgid "ON DELETE rule cannot use NEW" +msgstr "в правиле ON DELETE нельзя использовать NEW" + +#: parser/parse_utilcmd.c:2209 +msgid "cannot refer to OLD within WITH query" +msgstr "в запросе WITH нельзя ссылаться на OLD" + +#: parser/parse_utilcmd.c:2216 +msgid "cannot refer to NEW within WITH query" +msgstr "в запросе WITH нельзя ссылаться на NEW" + +#: parser/parse_utilcmd.c:2499 +msgid "misplaced DEFERRABLE clause" +msgstr "предложение DEFERRABLE расположено неправильно" + +#: parser/parse_utilcmd.c:2504 parser/parse_utilcmd.c:2519 +msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" +msgstr "DEFERRABLE/NOT DEFERRABLE можно указать только один раз" + +#: parser/parse_utilcmd.c:2514 +msgid "misplaced NOT DEFERRABLE clause" +msgstr "предложение NOT DEFERRABLE расположено неправильно" + +#: parser/parse_utilcmd.c:2535 +msgid "misplaced INITIALLY DEFERRED clause" +msgstr "предложение INITIALLY DEFERRED расположено неправильно" + +#: parser/parse_utilcmd.c:2540 parser/parse_utilcmd.c:2566 +msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" +msgstr "INITIALLY IMMEDIATE/DEFERRED можно указать только один раз" + +#: parser/parse_utilcmd.c:2561 +msgid "misplaced INITIALLY IMMEDIATE clause" +msgstr "предложение INITIALLY IMMEDIATE расположено неправильно" + +#: parser/parse_utilcmd.c:2752 +#, c-format +msgid "" +"CREATE specifies a schema (%s) different from the one being created (%s)" +msgstr "в CREATE указана схема (%s), отличная от создаваемой (%s)" + +#: parser/parse_agg.c:131 parser/parse_oper.c:219 +#, 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 "Агрегатным функциям с DISTINCT необходимо сортировать входные данные." + +#: parser/parse_agg.c:174 +msgid "aggregate function calls cannot contain window function calls" +msgstr "вызовы агрегатных функций не могут включать вызовы оконных функции" + +#: parser/parse_agg.c:245 parser/parse_clause.c:1637 +#, c-format +msgid "window \"%s\" does not exist" +msgstr "окно \"%s\" не существует" + +#: parser/parse_agg.c:336 +msgid "aggregates not allowed in WHERE clause" +msgstr "в предложении WHERE агрегатные функции недопустимы" + +#: parser/parse_agg.c:342 +msgid "aggregates not allowed in JOIN conditions" +msgstr "в условиях JOIN агрегатные функции недопустимы" + +#: 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 оконные функции недопустимы" + +#: 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 оконные функции недопустимы" + +#: parser/parse_agg.c:502 parser/parse_agg.c:515 +msgid "window functions not allowed in window definition" +msgstr "в определении окна оконные функции недопустимы" + +#: 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:679 +#, c-format +msgid "subquery uses ungrouped column \"%s.%s\" from outer query" +msgstr "" +"подзапрос использует негруппированную колонку \"%s.%s\" из внешнего запроса" + +#: parser/analyze.c:472 +msgid "INSERT ... SELECT cannot specify INTO" +msgstr "в INSERT ... SELECT нельзя указывать INTO" + +#: parser/analyze.c:565 parser/analyze.c:1071 +msgid "VALUES lists must all be the same length" +msgstr "списки VALUES должны иметь одинаковую длину" + +#: parser/analyze.c:607 parser/analyze.c:1212 +msgid "VALUES must not contain table references" +msgstr "в списке VALUES нельзя ссылаться на таблицы" + +#: parser/analyze.c:621 parser/analyze.c:1226 +msgid "VALUES must not contain OLD or NEW references" +msgstr "в списке VALUES нельзя ссылаться на OLD или NEW" + +#: parser/analyze.c:622 parser/analyze.c:1227 +msgid "Use SELECT ... UNION ALL ... instead." +msgstr "Воспользуйтесь конструкцией SELECT ... UNION ALL ..." + +#: parser/analyze.c:726 parser/analyze.c:1239 +msgid "cannot use aggregate function in VALUES" +msgstr "в списке VALUES нельзя использовать агрегатные функции" + +#: parser/analyze.c:732 parser/analyze.c:1245 +msgid "cannot use window function in VALUES" +msgstr "в списке VALUES нельзя использовать оконные функции" + +#: parser/analyze.c:766 +msgid "INSERT has more expressions than target columns" +msgstr "INSERT содержит больше выражений, чем целевых колонок" + +#: parser/analyze.c:784 +msgid "INSERT has more target columns than expressions" +msgstr "INSERT содержит больше целевых колонок, чем выражений" + +#: parser/analyze.c:788 +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/analyze.c:1085 +msgid "DEFAULT can only appear in a VALUES list within INSERT" +msgstr "DEFAULT может присутствовать в списке VALUES только в контексте INSERT" + +#: parser/analyze.c:1193 parser/analyze.c:2421 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES" +msgstr "SELECT FOR UPDATE/SHARE нельзя применять к VALUES" + +#: parser/analyze.c:1456 +msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" +msgstr "неверное предложение UNION/INTERSECT/EXCEPT ORDER BY" + +#: parser/analyze.c:1457 +msgid "Only result column names can be used, not expressions or functions." +msgstr "" +"Допустимо использование только имён колонок, но не выражений или функций." + +#: parser/analyze.c:1458 +msgid "" +"Add the expression/function to every SELECT, or move the UNION into a FROM " +"clause." +msgstr "" +"Добавьте выражение/функцию в каждый SELECT или перенесите UNION в " +"предложение FROM." + +#: parser/analyze.c:1533 +msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" +msgstr "INTO можно добавить только в первый SELECT в UNION/INTERSECT/EXCEPT" + +#: parser/analyze.c:1593 +msgid "" +"UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of " +"same query level" +msgstr "" +"оператор, составляющий UNION/INTERSECT/EXCEPT, не может ссылаться на другие " +"отношения на том же уровне запроса" + +#: parser/analyze.c:1681 +#, c-format +msgid "each %s query must have the same number of columns" +msgstr "все запросы в %s должны возвращать одинаковое число колонок" + +#: parser/analyze.c:1937 +msgid "CREATE TABLE AS specifies too many column names" +msgstr "в CREATE TABLE AS указаны лишние имена колонок" + +#: parser/analyze.c:1995 +msgid "cannot use aggregate function in UPDATE" +msgstr "в UPDATE нельзя использовать агрегатные функции" + +#: parser/analyze.c:2001 +msgid "cannot use window function in UPDATE" +msgstr "в UPDATE нельзя использовать оконные функции" + +#: parser/analyze.c:2110 +msgid "cannot use aggregate function in RETURNING" +msgstr "в RETURNING нельзя использовать агрегатные функции" + +#: parser/analyze.c:2116 +msgid "cannot use window function in RETURNING" +msgstr "в RETURNING нельзя использовать оконные функции" + +#: parser/analyze.c:2135 +msgid "RETURNING cannot contain references to other relations" +msgstr "в RETURNING нельзя ссылаться на другие отношения" + +#: parser/analyze.c:2174 +msgid "cannot specify both SCROLL and NO SCROLL" +msgstr "противоречивые указания SCROLL и NO SCROLL" + +#: parser/analyze.c:2188 +msgid "DECLARE CURSOR cannot specify INTO" +msgstr "в DECLARE CURSOR нельзя указать INTO" + +#: parser/analyze.c:2200 +msgid "DECLARE CURSOR must not contain data-modifying statements in WITH" +msgstr "DECLARE CURSOR не может содержать операторы, изменяющие данные, в WITH" + +#: parser/analyze.c:2206 +msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE не поддерживается" + +#: parser/analyze.c:2207 +msgid "Holdable cursors must be READ ONLY." +msgstr "Сохраняемые курсоры должны быть READ ONLY." + +#: parser/analyze.c:2220 +msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported" +msgstr "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE не поддерживается" + +#: parser/analyze.c:2221 +msgid "Insensitive cursors must be READ ONLY." +msgstr "Независимые курсоры должны быть READ ONLY." + +#: parser/analyze.c:2274 +msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause" +msgstr "SELECT FOR UPDATE/SHARE несовместим с предложением DISTINCT" + +#: parser/analyze.c:2278 +msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause" +msgstr "SELECT FOR UPDATE/SHARE несовместим с предложением GROUP BY" + +#: parser/analyze.c:2282 +msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause" +msgstr "SELECT FOR UPDATE/SHARE несовместим с предложением HAVING" + +#: parser/analyze.c:2286 +msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions" +msgstr "SELECT FOR UPDATE/SHARE несовместим с агрегатными функциями" + +#: parser/analyze.c:2290 +msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions" +msgstr "SELECT FOR UPDATE/SHARE несовместим с оконными функциями" + +#: parser/analyze.c:2294 +msgid "" +"SELECT FOR UPDATE/SHARE is not allowed with set-returning functions in the " +"target list" +msgstr "" +"SELECT FOR UPDATE/SHARE не допускается с функциями, возвращающие множества, " +"в списке результатов" + +#: parser/analyze.c:2373 +msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names" +msgstr "в SELECT FOR UPDATE/SHARE нужно указывать неполные имена отношений" + +#: parser/analyze.c:2390 +#, c-format +msgid "SELECT FOR UPDATE/SHARE cannot be used with foreign table \"%s\"" +msgstr "в SELECT FOR UPDATE/SHARE нельзя использовать стороннюю таблицу \"%s\"" + +#: parser/analyze.c:2409 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join" +msgstr "SELECT FOR UPDATE/SHARE нельзя применить к соединению" + +#: parser/analyze.c:2415 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function" +msgstr "SELECT FOR UPDATE/SHARE нельзя применить к функции" + +#: parser/analyze.c:2427 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query" +msgstr "SELECT FOR UPDATE/SHARE нельзя применить к запросу WITH" + +#: parser/analyze.c:2441 +#, c-format +msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause" +msgstr "" +"отношение \"%s\" в предложении FOR UPDATE/SHARE отсутствует в предложении " +"FROM" + +#: parser/parse_clause.c:421 +#, c-format +msgid "JOIN/ON clause refers to \"%s\", which is not part of JOIN" +msgstr "\"%s\" фигурирует в предложении JOIN/ON, но отсутствует в JOIN" + +#: 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:593 +msgid "cannot use aggregate function in function expression in FROM" +msgstr "в выражении с функцией во FROM нельзя использовать агрегатную функцию" + +#: parser/parse_clause.c:600 +msgid "cannot use window function in function expression in FROM" +msgstr "в выражении с функцией во FROM нельзя использовать оконные функции" + +#: parser/parse_clause.c:877 +#, c-format +msgid "column name \"%s\" appears more than once in USING clause" +msgstr "имя колонки \"%s\" фигурирует в предложении USING неоднократно" + +#: 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:901 +#, c-format +msgid "column \"%s\" specified in USING clause does not exist in left table" +msgstr "в таблице слева нет колонки \"%s\", указанной в предложении USING" + +#: 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:924 +#, c-format +msgid "column \"%s\" specified in USING clause does not exist in right table" +msgstr "в таблице справа нет колонки \"%s\", указанной в предложении USING" + +#: parser/parse_clause.c:981 +#, 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:1228 +#, c-format +msgid "argument of %s must not contain variables" +msgstr "аргумент %s не может содержать переменные" + +#. 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 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: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:1391 +#, 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:1409 +#, c-format +msgid "%s position %d is not in select list" +msgstr "в списке выборки %s нет элемента %d" + +#: 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 "переопределить предложение PARTITION BY для окна \"%s\" нельзя" + +#: parser/parse_clause.c:1691 +#, c-format +msgid "cannot override ORDER BY clause of window \"%s\"" +msgstr "переопределить предложение ORDER BY для окна \"%s\" нельзя" + +#: parser/parse_clause.c:1713 +#, c-format +msgid "cannot override frame clause of window \"%s\"" +msgstr "переопределить описание рамки для окна \"%s\" нельзя" + +#: parser/parse_clause.c:1779 +msgid "" +"in an aggregate with DISTINCT, ORDER BY expressions must appear in argument " +"list" +msgstr "" +"для агрегатной функции с DISTINCT, выражения ORDER BY должны быть в списке " +"аргументов" + +#: 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:1866 parser/parse_clause.c:1898 +msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions" +msgstr "" +"выражения SELECT DISTINCT ON должны соответствовать начальным выражениям " +"ORDER BY" + +#: 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." + +#: parser/parse_expr.c:366 parser/parse_expr.c:759 +#, c-format +msgid "column %s.%s does not exist" +msgstr "колонка %s.%s не существует" + +#: parser/parse_expr.c:378 +#, c-format +msgid "column \"%s\" not found in data type %s" +msgstr "колонка \"%s\" не найдена в типе данных %s" + +#: parser/parse_expr.c:384 +#, c-format +msgid "could not identify column \"%s\" in record data type" +msgstr "не удалось идентифицировать колонку \"%s\" в типе записи" + +#: parser/parse_expr.c:390 +#, 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:617 +msgid "row expansion via \"*\" is not supported here" +msgstr "расширение строки через \"*\" здесь не поддерживается" + +#: parser/parse_expr.c:743 parser/parse_target.c:1064 +#: parser/parse_relation.c:478 parser/parse_relation.c:558 +#, 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 +#, c-format +msgid "there is no parameter $%d" +msgstr "параметр $%d не существует" + +#: parser/parse_expr.c:1023 +msgid "NULLIF requires = operator to yield boolean" +msgstr "для NULLIF требуется, чтобы оператор = возвращал логическое значение" + +#: parser/parse_expr.c:1416 +msgid "subquery cannot have SELECT INTO" +msgstr "подзапрос не может содержать SELECT INTO" + +#: parser/parse_expr.c:1444 +msgid "subquery must return a column" +msgstr "подзапрос должен вернуть колонку" + +#: parser/parse_expr.c:1451 +msgid "subquery must return only one column" +msgstr "подзапрос должен вернуть только одну колонку" + +#: parser/parse_expr.c:1511 +msgid "subquery has too many columns" +msgstr "в подзапросе слишком много колонок" + +#: parser/parse_expr.c:1516 +msgid "subquery has too few columns" +msgstr "в подзапросе недостаточно колонок" + +#: parser/parse_expr.c:1612 +msgid "cannot determine type of empty array" +msgstr "тип пустого массива определить нельзя" + +#: parser/parse_expr.c:1613 +msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]." +msgstr "" +"Приведите его к желаемому типу явным образом, например ARRAY[]::integer[]." + +#: parser/parse_expr.c:1627 +#, c-format +msgid "could not find element type for data type %s" +msgstr "не удалось определить тип элемента для типа данных %s" + +#: parser/parse_expr.c:1841 +msgid "unnamed XML attribute value must be a column reference" +msgstr "вместо значения XML-атрибута без имени должна указываться колонка" + +#: parser/parse_expr.c:1842 +msgid "unnamed XML element value must be a column reference" +msgstr "вместо значения XML-элемента без имени должна указывается колонка" + +#: parser/parse_expr.c:1857 +#, c-format +msgid "XML attribute name \"%s\" appears more than once" +msgstr "имя XML-атрибута \"%s\" указано неоднократно" + +#: parser/parse_expr.c:1964 +#, c-format +msgid "cannot cast XMLSERIALIZE result to %s" +msgstr "привести результат XMLSERIALIZE к типу %s нельзя" + +#: parser/parse_expr.c:2207 parser/parse_expr.c:2407 +msgid "unequal number of entries in row expressions" +msgstr "разное число элементов в строках" + +#: parser/parse_expr.c:2217 +msgid "cannot compare rows of zero length" +msgstr "строки нулевой длины сравнивать нельзя" + +#: parser/parse_expr.c:2242 +#, c-format +msgid "row comparison operator must yield type boolean, not type %s" +msgstr "" +"оператор сравнения строк должен выдавать результат логического типа, а не %s" + +#: parser/parse_expr.c:2249 +msgid "row comparison operator must not return a set" +msgstr "оператор сравнения строк не должен возвращать множество" + +#: parser/parse_expr.c:2308 parser/parse_expr.c:2353 +#, c-format +msgid "could not determine interpretation of row comparison operator %s" +msgstr "не удалось выбрать интерпретацию оператора сравнения строк %s" + +#: parser/parse_expr.c:2310 +msgid "" +"Row comparison operators must be associated with btree operator families." +msgstr "" +"Операторы сравнения строк должны быть связаны с семейством операторов btree." + +#: parser/parse_expr.c:2355 +msgid "There are multiple equally-plausible candidates." +msgstr "Оказалось несколько равноценных кандидатур." + +#: parser/parse_expr.c:2447 +msgid "IS DISTINCT FROM requires = operator to yield boolean" +msgstr "" +"для IS DISTINCT FROM требуется, чтобы оператор = возвращал логическое " +"значение" + +#: 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:410 +msgid "cannot set an array element to DEFAULT" +msgstr "элементу массива нельзя присвоить значение по умолчанию" + +#: parser/parse_target.c:415 +msgid "cannot set a subfield to DEFAULT" +msgstr "вложенному полю нельзя присвоить значение по умолчанию" + +#: 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: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:740 +#, c-format +msgid "subfield \"%s\" is of type %s but expression is of type %s" +msgstr "вложенное поле \"%s\" имеет тип %s, а выражение - %s" + +#: parser/parse_target.c:1126 +msgid "SELECT * with no tables specified is not valid" +msgstr "SELECT * должен ссылаться на таблицы" + +#: parser/parse_param.c:215 +#, c-format +msgid "inconsistent types deduced for parameter $%d" +msgstr "для параметра $%d выведены несогласованные типы" + +#: parser/parse_node.c:83 +#, c-format +msgid "target lists can have at most %d entries" +msgstr "допустимое число элементов в целевом списке ограничено %d" + +#: parser/parse_node.c:240 +#, 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 +msgid "array subscript must have type integer" +msgstr "индекс элемента массива должен быть целочисленным" + +#: parser/parse_node.c:393 +#, c-format +msgid "array assignment requires type %s but expression is of type %s" +msgstr "" +"для присваивания массива требуется тип %s, однако выражение имеет тип %s" + +#: parser/parse_collate.c:214 parser/parse_collate.c:538 +#, c-format +msgid "collation mismatch between implicit collations \"%s\" and \"%s\"" +msgstr "несовпадение правил сортировки для неявных правил \"%s\" и \"%s\"" + +#: 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 "явно указанные правила сортировки \"%s\" и \"%s\" несовместимы" + +#: parser/parse_relation.c:147 +#, c-format +msgid "table reference \"%s\" is ambiguous" +msgstr "ссылка на таблицу \"%s\" неоднозначна" + +#: parser/parse_relation.c:183 +#, c-format +msgid "table reference %u is ambiguous" +msgstr "ссылка на таблицу %u неоднозначна" + +#: parser/parse_relation.c:343 +#, c-format +msgid "table name \"%s\" specified more than once" +msgstr "имя таблицы \"%s\" указано больше одного раза" + +#: parser/parse_relation.c:761 parser/parse_relation.c:1052 +#: parser/parse_relation.c:1439 +#, c-format +msgid "table \"%s\" has %d columns available but %d columns specified" +msgstr "в таблице \"%s\" содержится колонок: %d, но указано: %d" + +#: parser/parse_relation.c:791 +#, c-format +msgid "too many column aliases specified for function %s" +msgstr "для функции %s указано слишком много названий колонок" + +#: parser/parse_relation.c:857 +#, c-format +msgid "" +"There is a WITH item named \"%s\", but it cannot be referenced from this " +"part of the query." +msgstr "" +"В WITH есть элемент \"%s\", но на него нельзя ссылаться из этой части " +"запроса." + +#: parser/parse_relation.c:859 +msgid "" +"Use WITH RECURSIVE, or re-order the WITH items to remove forward references." +msgstr "" +"Используйте WITH RECURSIVE или исключите ссылки вперёд, переупорядочив " +"элементы WITH." + +#: parser/parse_relation.c:1132 +msgid "" +"a column definition list is only allowed for functions returning \"record\"" +msgstr "" +"список с определением колонок может быть только у функций, возвращающих " +"запись" + +#: parser/parse_relation.c:1140 +msgid "a column definition list is required for functions returning \"record\"" +msgstr "" +"у функций, возвращающих запись, должен быть список с определением колонок" + +#: parser/parse_relation.c:1191 +#, c-format +msgid "function \"%s\" in FROM has unsupported return type %s" +msgstr "" +"функция \"%s\", используемая во FROM, возвращает неподдерживаемый тип %s" + +#: parser/parse_relation.c:1265 +#, c-format +msgid "VALUES lists \"%s\" have %d columns available but %d columns specified" +msgstr "в списках VALUES \"%s\" содержится колонок: %d, но указано: %d" + +#: parser/parse_relation.c:1321 +#, c-format +msgid "joins can have at most %d columns" +msgstr "число колонок в соединениях ограничено %d" + +#: parser/parse_relation.c:1412 +#, c-format +msgid "WITH query \"%s\" does not have a RETURNING clause" +msgstr "в запросе \"%s\" в WITH нет предложения RETURNING" + +#: parser/parse_relation.c:2094 +#, c-format +msgid "column %d of relation \"%s\" does not exist" +msgstr "колонка %d отношения \"%s\" не существует" + +#: parser/parse_relation.c:2478 +#, c-format +msgid "invalid reference to FROM-clause entry for table \"%s\"" +msgstr "в элементе предложения FROM неверная ссылка на таблицу \"%s\"" + +#: parser/parse_relation.c:2481 +#, c-format +msgid "Perhaps you meant to reference the table alias \"%s\"." +msgstr "Возможно, предполагалась ссылка на псевдоним таблицы \"%s\"." + +#: parser/parse_relation.c:2483 +#, 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:2489 +#, c-format +msgid "missing FROM-clause entry for table \"%s\"" +msgstr "таблица \"%s\" отсутствует в предложении FROM" + +#: scan.l:411 +msgid "unterminated /* comment" +msgstr "незавершённый комментарий /*" + +#: scan.l:440 +msgid "unterminated bit string literal" +msgstr "оборванная битовая строка" + +#: 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 "" +"Строки со спецкодами Unicode нельзя использовать, когда параметр " +"standard_conforming_strings выключен." + +#: 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" + +#: 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: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:674 +msgid "unterminated dollar-quoted string" +msgstr "незавершённая спецстрока с $" + +#: scan.l:691 scan.l:703 scan.l:717 +msgid "zero-length delimited identifier" +msgstr "пустой идентификатор в кавычках" + +#: scan.l:730 +msgid "unterminated quoted identifier" +msgstr "незавершённый идентификатор в кавычках" + +#: scan.l:834 +msgid "operator too long" +msgstr "слишком длинный оператор" + +#. 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 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 "" +"Спецкоды Unicode для значений выше 007F можно использовать только с " +"серверной кодировкой UTF8" + +#: 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: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: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: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'." + +#: parser/parse_oper.c:221 +msgid "Use an explicit ordering operator or modify the query." +msgstr "Используйте явный оператор сортировки или измените запрос." + +#: parser/parse_oper.c:476 +#, c-format +msgid "operator requires run-time type coercion: %s" +msgstr "оператору требуется приведение типов во время выполнения: %s" + +#: parser/parse_oper.c:710 +#, c-format +msgid "operator is not unique: %s" +msgstr "оператор не уникален: %s" + +#: parser/parse_oper.c:712 +msgid "" +"Could not choose a best candidate operator. You might need to add explicit " +"type casts." +msgstr "" +"Не удалось выбрать лучшую кандидатуру оператора. Возможно, вам следует " +"добавить явные преобразования типов." + +#: parser/parse_oper.c:720 +msgid "" +"No operator matches the given name and argument type(s). You might need to " +"add explicit type casts." +msgstr "" +"Оператор с данными именем и типами аргументов не найден. Возможно, вам " +"следует добавить явные преобразования типов." + +#: parser/parse_oper.c:779 parser/parse_oper.c:893 +#, c-format +msgid "operator is only a shell: %s" +msgstr "оператор \"%s\" - лишь оболочка" + +#: parser/parse_oper.c:881 +msgid "op ANY/ALL (array) requires array on right side" +msgstr "для операторов ANY/ALL (с массивом) требуется массив справа" + +#: parser/parse_oper.c:923 +msgid "op ANY/ALL (array) requires operator to yield boolean" +msgstr "" +"для операторов ANY/ALL (с массивом) требуется, чтобы оператор = возвращал " +"логическое значение" + +#: parser/parse_oper.c:928 +msgid "op ANY/ALL (array) requires operator not to return a set" +msgstr "" +"для операторов ANY/ALL (с массивом) требуется, чтобы оператор возвращал не " +"множество" + +#: 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 "нумерованный аргумент не может следовать за именованным аргументом" + +#: parser/parse_func.c:236 +#, c-format +msgid "%s(*) specified, but %s is not an aggregate function" +msgstr "выражение %s(*) недопустимо, так как %s - не агрегатная функция" + +#: parser/parse_func.c:243 +#, c-format +msgid "DISTINCT specified, but %s is not an aggregate function" +msgstr "в аргументах %s указан DISTINCT, но это не агрегатная функции" + +#: parser/parse_func.c:249 +#, c-format +msgid "ORDER BY specified, but %s is not an aggregate function" +msgstr "в аргументах %s указан ORDER BY, но это не агрегатная функция" + +#: parser/parse_func.c:255 +#, c-format +msgid "" +"OVER specified, but %s is not a window function nor an aggregate function" +msgstr "" +"вызов %s включает предложение OVER, но это не оконная и не агрегатная функция" + +#: 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 - оно должно следовать за " +"всеми обычными аргументами функции." + +#: 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: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:419 +msgid "aggregates cannot return sets" +msgstr "агрегатные функции не могут возвращать множества" + +#: 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 для оконных функций не реализовано" + +#: parser/parse_func.c:494 +msgid "window functions cannot return sets" +msgstr "оконные функции не могут возвращать множества" + +#: parser/parse_func.c:505 +msgid "window functions cannot use named arguments" +msgstr "у оконных функций не может быть именованных аргументов" + +#: parser/parse_func.c:1589 +#, c-format +msgid "aggregate %s(*) does not exist" +msgstr "агрегатная функция %s(*) не существует" + +#: parser/parse_func.c:1594 +#, c-format +msgid "aggregate %s does not exist" +msgstr "агрегатная функция %s не существует" + +#: parser/parse_func.c:1613 +#, c-format +msgid "function %s is not an aggregate" +msgstr "функция \"%s\" не является агрегатной" + +#: parser/parse_type.c:83 +#, c-format +msgid "improper %%TYPE reference (too few dotted names): %s" +msgstr "неправильное указание %%TYPE (слишком мало компонентов): %s" + +#: parser/parse_type.c:105 +#, c-format +msgid "improper %%TYPE reference (too many dotted names): %s" +msgstr "неправильное указание %%TYPE (слишком много компонентов): %s" + +#: parser/parse_type.c:127 +#, c-format +msgid "type reference %s converted to %s" +msgstr "ссылка на тип %s преобразована в тип %s" + +#: 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:641 parser/parse_type.c:740 +#, c-format +msgid "invalid type name \"%s\"" +msgstr "неверное имя типа \"%s\"" + +#: parser/scansup.c:192 +#, c-format +msgid "identifier \"%s\" will be truncated to \"%s\"" +msgstr "идентификатор \"%s\" будет усечён до \"%s\"" + +#: parser/parse_cte.c:42 +#, c-format +msgid "" +"recursive reference to query \"%s\" must not appear within its non-recursive " +"term" +msgstr "" +"рекурсивная ссылка на запрос \"%s\" не должна фигурировать в его не " +"рекурсивной части" + +#: parser/parse_cte.c:44 +#, c-format +msgid "recursive reference to query \"%s\" must not appear within a subquery" +msgstr "" +"рекурсивная ссылка на запрос \"%s\" не должна фигурировать в подзапросе" + +#: parser/parse_cte.c:46 +#, c-format +msgid "" +"recursive reference to query \"%s\" must not appear within an outer join" +msgstr "" +"рекурсивная ссылка на запрос \"%s\" не должна фигурировать во внешнем " +"соединении" + +#: parser/parse_cte.c:48 +#, c-format +msgid "recursive reference to query \"%s\" must not appear within INTERSECT" +msgstr "рекурсивная ссылка на запрос \"%s\" не должна фигурировать в INTERSECT" + +#: parser/parse_cte.c:50 +#, c-format +msgid "recursive reference to query \"%s\" must not appear within EXCEPT" +msgstr "рекурсивная ссылка на запрос \"%s\" не должна фигурировать в EXCEPT" + +#: parser/parse_cte.c:132 +#, c-format +msgid "WITH query name \"%s\" specified more than once" +msgstr "имя запроса WITH \"%s\" указано неоднократно" + +#: 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 "" +"Измените правило сортировки в не рекурсивной части, добавив предложение " +"COLLATE." + +#: 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:710 +msgid "ORDER BY in a recursive query is not implemented" +msgstr "ORDER BY в рекурсивном запросе не поддерживается" + +#: parser/parse_cte.c:716 +msgid "OFFSET in a recursive query is not implemented" +msgstr "OFFSET в рекурсивном запросе не поддерживается" + +#: parser/parse_cte.c:722 +msgid "LIMIT in a recursive query is not implemented" +msgstr "LIMIT в рекурсивном запросе не поддерживается" + +#: parser/parse_cte.c:728 +msgid "FOR UPDATE/SHARE in a recursive query is not implemented" +msgstr "FOR UPDATE/SHARE в рекурсивном запросе не поддерживается" + +#: parser/parse_cte.c:785 +#, c-format +msgid "recursive reference to query \"%s\" must not appear more than once" +msgstr "рекурсивная ссылка на запрос \"%s\" указана неоднократно" + +#: port/win32_sema.c:94 +#, c-format +msgid "could not create semaphore: error code %d" +msgstr "не удалось создать семафор: код ошибки %d" + +#: port/win32_sema.c:165 +#, c-format +msgid "could not lock semaphore: error code %d" +msgstr "не удалось заблокировать семафор: код ошибки %d" + +#: port/win32_sema.c:178 +#, c-format +msgid "could not unlock semaphore: error code %d" +msgstr "не удалось разблокировать семафор: код ошибки %d" + +#: port/win32_sema.c:207 +#, c-format +msgid "could not try-lock semaphore: error code %d" +msgstr "не удалось попытаться заблокировать семафор: код ошибки %d" + +#: port/sysv_shmem.c:147 port/pg_shmem.c:147 +#, c-format +msgid "could not create shared memory segment: %m" +msgstr "не удалось создать сегмент разделяемой памяти: %m" + +#: 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(ключ=%lu, размер=%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 Б) можно снизить использование " +"разделяемой памяти, возможно, уменьшив 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 запрашивает сегмент " +"разделяемой памяти, превышая объём доступной физической или виртуальной " +"памяти или предел SHMALL, заданный в ядре. Вы можете либо уменьшить " +"запрашиваемый размер, либо увеличить SHMALL в конфигурации ядра. Для " +"уменьшения запроса (текущий размер: %lu Б) можно снизить использование " +"разделяемой памяти, возможно, уменьшив 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." + +#: port/sysv_shmem.c:439 port/pg_shmem.c:439 +#, c-format +msgid "could not stat data directory \"%s\": %m" +msgstr "не удалось получить информацию о каталоге данных \"%s\": %m" + +#: port/sysv_sema.c:114 port/pg_sema.c:114 +#, c-format +msgid "could not create semaphores: %m" +msgstr "не удалось создать семафоры: %m" + +#: 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/sysv_sema.c:119 port/pg_sema.c:119 +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 "" +"Эта ошибка НЕ означает, что на диске нет места. Вероятнее всего, превышен " +"предел числа установленных семафоров (SEMMNI), либо общего числа семафоров " +"(SEMMNS) в системе. Увеличьте соответствующий параметр ядра или уменьшите " +"потребность PostgreSQL в семафорах, уменьшив его параметр max_connections.\n" +"Подробная информация о настройке разделяемой памяти содержится в " +"документации PostgreSQL." + +#: port/sysv_sema.c:146 port/pg_sema.c:146 +#, 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/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/win32_shmem.c:169 +#, c-format +msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)." +msgstr "Ошибка в системном вызове CreateFileMapping(размер=%lu, имя=%s)." + +#: 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/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/win32/security.c:43 +#, c-format +msgid "could not open process token: error code %d\n" +msgstr "не удалось открыть маркер процесса: код ошибки %d\n" + +#: port/win32/security.c:63 +#, c-format +msgid "could not get SID for Administrators group: error code %d\n" +msgstr "не удалось получить SID группы Администраторы: код ошибки %d\n" + +#: port/win32/security.c:72 +#, c-format +msgid "could not get SID for PowerUsers group: error code %d\n" +msgstr "не удалось получить SID группы Опытные пользователи: код ошибки %d\n" + +#: port/win32/signal.c:189 +#, c-format +msgid "could not create signal listener pipe for PID %d: error code %d" +msgstr "" +"не удалось создать канал приёма сигналов для процесса с PID %d: код ошибки %d" + +#: 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 "" +"не удалось создать канал приёма сигналов: код ошибки %d; ещё одна " +"попытка...\n" + +#: port/win32/signal.c:312 +#, c-format +msgid "could not create signal dispatch thread: error code %d\n" +msgstr "не удалось создать поток распределения сигналов: код ошибки %d\n" + +#: port/win32/crashdump.c:108 +msgid "could not load dbghelp.dll, cannot write crash dump\n" +msgstr "не удалось загрузить dbghelp.dll, сохранить аварийный дамп нельзя\n" + +#: port/win32/crashdump.c:116 +msgid "" +"could not load required functions in dbghelp.dll, cannot write crash dump\n" +msgstr "" +"не удалось найти требуемые функции в dbghelp.dll, сохранить аварийный дамп " +"нельзя\n" + +#: port/win32/crashdump.c:147 +#, c-format +msgid "could not open crash dump file \"%s\" for writing: error code %u\n" +msgstr "не удалось открыть файл дампа \"%s\" для записи: код ошибки %u\n" + +#: port/win32/crashdump.c:154 +#, c-format +msgid "wrote crash dump to file \"%s\"\n" +msgstr "аварийный дамп записан в файл\"%s\"\n" + +#: port/win32/crashdump.c:156 +#, c-format +msgid "could not write crash dump to file \"%s\": error code %08x\n" +msgstr "не удалось записать аварийный дамп в файл \"%s\": код ошибки %08x\n" + +#: ../port/open.c:113 +msgid "sharing violation" +msgstr "нарушение совместного доступа" + +#: ../port/open.c:113 +msgid "lock violation" +msgstr "нарушение блокировки" + +#: ../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 "" +"Возможно, работе СУБД мешает антивирус, программа резервного копирования или " +"что-то подобное." + +#: ../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" + +#: ../port/win32error.c:199 +#, c-format +msgid "unrecognized win32 error code: %lu" +msgstr "нераспознанный код ошибки win32: %lu" + +#: ../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" + +#: ../port/dirmod.c:443 +#, c-format +msgid "could not open directory \"%s\": %s\n" +msgstr "не удалось открыть каталог \"%s\": %s\n" + +#: ../port/dirmod.c:480 +#, c-format +msgid "could not read directory \"%s\": %s\n" +msgstr "не удалось прочитать каталог \"%s\": %s\n" + +#: ../port/dirmod.c:563 +#, c-format +msgid "could not stat file or directory \"%s\": %s\n" +msgstr "не удалось получить информацию о файле или каталоге \"%s\": %s\n" + +#: ../port/dirmod.c:590 ../port/dirmod.c:607 +#, c-format +msgid "could not remove file or directory \"%s\": %s\n" +msgstr "ошибка при удалении файла или каталога \"%s\": %s\n" + +#: ../port/chklocale.c:328 ../port/chklocale.c:334 +#, c-format +msgid "could not determine encoding for locale \"%s\": codeset is \"%s\"" +msgstr "" +"не удалось определить кодировку для локали \"%s\": набор символов - \"%s\"" + +#: ../port/chklocale.c:336 +msgid "Please report this to ." +msgstr "" +"Пожалуйста, напишите об этой ошибке по адресу ." + +#: ../port/exec.c:125 ../port/exec.c:239 ../port/exec.c:282 +#, c-format +msgid "could not identify current directory: %s" +msgstr "не удалось определить текущий каталог: %s" + +#: ../port/exec.c:144 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "неверный исполняемый файл \"%s\"" + +#: ../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\"" + +#: ../port/exec.c:255 ../port/exec.c:291 +#, c-format +msgid "could not change directory to \"%s\"" +msgstr "не удалось перейти в каталог \"%s\"" + +#: ../port/exec.c:270 +#, c-format +msgid "could not read symbolic link \"%s\"" +msgstr "не удалось прочитать символическую ссылку \"%s\"" + +#: ../port/exec.c:525 +#, c-format +msgid "child process exited with exit code %d" +msgstr "дочерний процесс завершился с кодом возврата %d" + +#: ../port/exec.c:529 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "дочерний процесс прерван исключением 0x%X" + +#: ../port/exec.c:538 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "дочерний процесс завершён по сигналу %s" + +#: ../port/exec.c:541 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "дочерний процесс завершён по сигналу %d" + +#: ../port/exec.c:545 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "дочерний процесс завершился с нераспознанным состоянием %d" + +#~ msgid "arguments of row IN must all be row expressions" +#~ msgstr "все аргументы IN со строкой должны быть строковыми выражениями" + +#~ msgid "" +#~ "automatic vacuum of table \"%s.%s.%s\": could not (re)acquire exclusive " +#~ "lock for truncate scan" +#~ msgstr "" +#~ "автоматическая очистка таблицы \"%s.%s.%s\": получить исключительную " +#~ "блокировку для сканирования отсекаемых страниц не удалось" + +#~ msgid "index \"%s\" is not ready" +#~ msgstr "индекс \"%s\" не готов" diff --git a/src/backend/po/tr.po b/src/backend/po/tr.po deleted file mode 100644 index 2e65073296..0000000000 --- a/src/backend/po/tr.po +++ /dev/null @@ -1,16230 +0,0 @@ -# translation of postgres-tr.po to Turkish -# Nicolai Tufar , 2002-2006. -# Devrim GUNDUZ , 2003, 2004, 2005, 2006. -# -# -msgid "" -msgstr "" -"Project-Id-Version: postgres-tr\n" -"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2009-06-23 09:01+0000\n" -"PO-Revision-Date: 2009-06-23 13:50+0200\n" -"Last-Translator: Devrim GÜNDÜZ \n" -"Language-Team: Turkish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.9.1\n" -"X-Poedit-Language: Turkish\n" -"X-Poedit-Country: TURKEY\n" -"X-Poedit-Basepath: /home/ntufar/pg/pgsql/src/backend\n" -"X-Poedit-SearchPath-0: /home/ntufar/pg/pgsql/src/backend\n" - -#: libpq/auth.c:224 -#, c-format -msgid "authentication failed for user \"%s\": host rejected" -msgstr "\"%s\" kullanıcısı için kimlik doğrulaması başarısız oldu: adres geçerli değil" - -#: libpq/auth.c:227 -#, c-format -msgid "Kerberos 5 authentication failed for user \"%s\"" -msgstr "\"%s\" kullanıcısı için Kerberos 5 kimlik doğrulaması başarısız oldu" - -#: libpq/auth.c:230 -#, c-format -msgid "GSSAPI authentication failed for user \"%s\"" -msgstr "\"%s\" kullanıcısı için GSSPI kimlik doğrulaması başarısız" - -#: libpq/auth.c:233 -#, c-format -msgid "SSPI authentication failed for user \"%s\"" -msgstr "\"%s\" kullanıcısı için SSPI yetkilendirmesi başarısız oldu" - -#: libpq/auth.c:236 -#, c-format -msgid "\"trust\" authentication failed for user \"%s\"" -msgstr "\"%s\" kullanıcısı için \"trust\" kimlik doğrulaması başarısız oldu" - -#: libpq/auth.c:239 -#, c-format -msgid "Ident authentication failed for user \"%s\"" -msgstr "\"%s\" kullanıcısı için Ident kimlik doğrulaması başarısız oldu" - -#: libpq/auth.c:243 -#, c-format -msgid "password authentication failed for user \"%s\"" -msgstr "\"%s\" kullanıcısı için şifre doğrulaması başarısız oldu" - -#: libpq/auth.c:246 -#, c-format -msgid "PAM authentication failed for user \"%s\"" -msgstr "\"%s\" kullanıcısı için PAM kimlik doğrulaması başarısız oldu" - -#: libpq/auth.c:249 -#, c-format -msgid "LDAP authentication failed for user \"%s\"" -msgstr "\"%s\" kullanıcısı için LDAP kimlik doğrulaması başarısız" - -#: libpq/auth.c:252 -#, c-format -msgid "authentication failed for user \"%s\": invalid authentication method" -msgstr "\"%s\" kullanıcısının kimlik doğrulaması başarısız: geçersiz kimlik doğrulama yöntemi" - -#: libpq/auth.c:281 -msgid "missing or erroneous pg_hba.conf file" -msgstr "Eksik ya da hatalı pg_hba.conf dosyası" - -#: libpq/auth.c:282 -msgid "See server log for details." -msgstr "Ayrıntılar için sunucu loguna bakın." - -#: libpq/auth.c:303 -msgid "connection requires a valid client certificate" -msgstr "bağlantı, geçerli bir istemci sertifikasına gereksinim duyuyor." - -#: libpq/auth.c:344 -msgid "SSL on" -msgstr "SSL etkin" - -#: libpq/auth.c:344 -msgid "SSL off" -msgstr "SSL etkisiz" - -#: libpq/auth.c:342 -#, c-format -msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s" -msgstr "\"%s\" adresi, \"%s\" kullanıcısı, \"%s\" veritabanı için pg_hba.conf içinde bir tanım yok, %s" - -#: libpq/auth.c:348 -#, c-format -msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\"" -msgstr "\"%s\" adresi, \"%s\" kullanıcısı, \"%s\" veritabanı için pg_hba.conf içinde bir tanım yok" - -#: libpq/auth.c:404 -#, c-format -msgid "could not enable credential reception: %m" -msgstr "kimlik doğrulama alımı etkinleştirmesi başarısız: %m" - -#: libpq/auth.c:417 -#: libpq/hba.c:856 -msgid "MD5 authentication is not supported when \"db_user_namespace\" is enabled" -msgstr "\"db_user_namespace\" etkinken MD5 yetkilendirmesi desteklenmemektedir" - -#: libpq/auth.c:534 -#, c-format -msgid "expected password response, got message type %d" -msgstr "cevap olarak şifre beklenirken, %d mesaj tipi alındı" - -#: libpq/auth.c:562 -msgid "invalid password packet size" -msgstr "geçersiz password paket boyutu" - -#: libpq/auth.c:566 -msgid "received password packet" -msgstr "password paketi alınmıştır" - -#: libpq/auth.c:624 -#, c-format -msgid "Kerberos initialization returned error %d" -msgstr "Kerberos oluşturma hatası %d" - -#: libpq/auth.c:634 -#, c-format -msgid "Kerberos keytab resolving returned error %d" -msgstr "Kerberos keytab resolving hatası %d" - -#: libpq/auth.c:658 -#, c-format -msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d" -msgstr "Kerberos sname_to_principal(\"%s\", \"%s\") hatası: %d" - -#: libpq/auth.c:706 -#, c-format -msgid "Kerberos recvauth returned error %d" -msgstr "Kerberos recvauth hatası %d" - -#: libpq/auth.c:729 -#, c-format -msgid "Kerberos unparse_name returned error %d" -msgstr "Kerberos unparse_name hatası %d" - -#: libpq/auth.c:852 -#, c-format -msgid "%s: %s" -msgstr "%s: %s" - -#: libpq/auth.c:878 -msgid "GSSAPI is not supported in protocol version 2" -msgstr "GSSAPI protokol 2'de desteklenmiyor" - -#: libpq/auth.c:897 -#: libpq/auth.c:1251 -#: libpq/auth.c:1319 -#: libpq/auth.c:1926 -#: utils/mmgr/aset.c:385 -#: utils/mmgr/aset.c:564 -#: utils/mmgr/aset.c:747 -#: utils/mmgr/aset.c:953 -#: utils/adt/formatting.c:1493 -#: utils/adt/formatting.c:1549 -#: utils/adt/formatting.c:1606 -#: utils/adt/regexp.c:209 -#: utils/adt/varlena.c:3037 -#: utils/adt/varlena.c:3058 -#: utils/mb/mbutils.c:335 -#: utils/mb/mbutils.c:596 -#: utils/hash/dynahash.c:363 -#: utils/hash/dynahash.c:435 -#: utils/hash/dynahash.c:929 -#: utils/misc/guc.c:2746 -#: utils/misc/guc.c:2759 -#: utils/misc/guc.c:2772 -#: utils/init/miscinit.c:212 -#: utils/init/miscinit.c:233 -#: utils/init/miscinit.c:243 -#: utils/fmgr/dfmgr.c:224 -#: commands/sequence.c:928 -#: lib/stringinfo.c:245 -#: storage/buffer/buf_init.c:164 -#: storage/buffer/localbuf.c:347 -#: storage/file/fd.c:336 -#: storage/file/fd.c:719 -#: storage/file/fd.c:837 -#: storage/ipc/procarray.c:392 -#: storage/ipc/procarray.c:708 -#: storage/ipc/procarray.c:715 -#: postmaster/postmaster.c:1857 -#: postmaster/postmaster.c:1890 -#: postmaster/postmaster.c:2954 -#: postmaster/postmaster.c:3683 -#: postmaster/postmaster.c:3764 -#: postmaster/postmaster.c:4332 -msgid "out of memory" -msgstr "yetersiz bellek" - -#: libpq/auth.c:933 -#, c-format -msgid "expected GSS response, got message type %d" -msgstr "beklenen GSS yanıtı, %d mesaj tipi alındı" - -#: libpq/auth.c:996 -msgid "accepting GSS security context failed" -msgstr "GSS security context kabul işlemi başarısızdır" - -#: libpq/auth.c:1022 -msgid "retrieving GSS user name failed" -msgstr "GSS user name eğişimi başarısızdır" - -#: libpq/auth.c:1095 -#, c-format -msgid "SSPI error %x" -msgstr "SSPI hatası: %x" - -#: libpq/auth.c:1099 -#, c-format -msgid "%s (%x)" -msgstr "%s (%x)" - -#: libpq/auth.c:1139 -msgid "SSPI is not supported in protocol version 2" -msgstr "SSPI protokol 2'de desteklenmiyor" - -#: libpq/auth.c:1154 -msgid "could not acquire SSPI credentials" -msgstr "SSPI kimlik bilgileri alınamadı: %m" - -#: libpq/auth.c:1171 -#, c-format -msgid "expected SSPI response, got message type %d" -msgstr "SSPI yanıtı bekleniyordu, %d mesaj tipi alındı" - -#: libpq/auth.c:1243 -msgid "could not accept SSPI security context" -msgstr "SSPI güvenlik içeriği kabul edilemedi" - -#: libpq/auth.c:1299 -#, fuzzy -msgid "could not get token from SSPI security context" -msgstr "SSL context oluşturma hatası: %s" - -#: libpq/auth.c:1542 -#, c-format -msgid "could not create socket for Ident connection: %m" -msgstr "Ident bağlantısı için socket oluşturma hatası: %m" - -#: libpq/auth.c:1557 -#, c-format -msgid "could not bind to local address \"%s\": %m" -msgstr "\"%s\" yerel adresine bind hatası: %m" - -#: libpq/auth.c:1569 -#, c-format -msgid "could not connect to Ident server at address \"%s\", port %s: %m" -msgstr "\"%s\" adresi %s portunda Ident sunucusuna bağlanma hatası: %m" - -#: libpq/auth.c:1589 -#, c-format -msgid "could not send query to Ident server at address \"%s\", port %s: %m" -msgstr "\"%s\" adresi %s portunda Ident sunucusuna istek gönderme hatası: %m" - -#: libpq/auth.c:1604 -#, c-format -msgid "could not receive response from Ident server at address \"%s\", port %s: %m" -msgstr "\"%s\" adresi %s portunda Ident sunucusundan cevap alma hatası: %m" - -#: libpq/auth.c:1614 -#, c-format -msgid "invalidly formatted response from Ident server: \"%s\"" -msgstr "Ident sunucusundan biçimlendirilmiş cevap bağlanma hatası:\"%s\"" - -#: libpq/auth.c:1649 -#: libpq/auth.c:1679 -#: libpq/auth.c:1707 -#: libpq/auth.c:1783 -#, c-format -msgid "could not get peer credentials: %m" -msgstr "karşı tarafın kimlik bilgileri alınamadı: %m" - -#: libpq/auth.c:1658 -#: libpq/auth.c:1688 -#: libpq/auth.c:1725 -#: libpq/auth.c:1794 -#, c-format -msgid "local user with ID %d does not exist" -msgstr "yerel kullanıcı ID %d mevcut değildir" - -#: libpq/auth.c:1715 -#, fuzzy, c-format -msgid "could not get effective UID from peer credentials: %m" -msgstr "karşı tarafın kimlik bilgileri alınamadı: %m" - -#: libpq/auth.c:1805 -msgid "Ident authentication is not supported on local connections on this platform" -msgstr "bu platformda yerel bağlantılarda Ident kimlik doğrulaması desteklenmemektedir" - -#: libpq/auth.c:1874 -#, c-format -msgid "error from underlying PAM layer: %s" -msgstr "PAM katmanında hata: %s" - -#: libpq/auth.c:1879 -#, c-format -msgid "unsupported PAM conversation %d/%s" -msgstr "desteklenmeyen PAM iletişimi %d/%s" - -#: libpq/auth.c:1911 -msgid "empty password returned by client" -msgstr "istemci boş şifre gönderdi" - -#: libpq/auth.c:1971 -#, c-format -msgid "could not create PAM authenticator: %s" -msgstr "PAM authenticator oluşturulamıyor: %s" - -#: libpq/auth.c:1982 -#, c-format -msgid "pam_set_item(PAM_USER) failed: %s" -msgstr "pam_set_item(PAM_USER) başarısız: %s" - -#: libpq/auth.c:1993 -#, c-format -msgid "pam_set_item(PAM_CONV) failed: %s" -msgstr "pam_set_item(PAM_CONV) başarısız: %s" - -#: libpq/auth.c:2004 -#, c-format -msgid "pam_authenticate failed: %s" -msgstr "pam_authenticate başarısız: %s" - -#: libpq/auth.c:2015 -#, c-format -msgid "pam_acct_mgmt failed: %s" -msgstr "pam_acct_mgmt başarısız: %s" - -#: libpq/auth.c:2026 -#, c-format -msgid "could not release PAM authenticator: %s" -msgstr "PAM authenticator bırakma başarısız: %s" - -#: libpq/auth.c:2056 -msgid "LDAP server not specified" -msgstr "LDAP sunucu belirtilmedi" - -#: libpq/auth.c:2074 -#: libpq/auth.c:2078 -#, c-format -msgid "could not initialize LDAP: error code %d" -msgstr "LDAP ilklendirilemiyor: hata kodu %d" - -#: libpq/auth.c:2088 -#, c-format -msgid "could not set LDAP protocol version: error code %d" -msgstr "LDAP protokol sürümünü ayarlanamadı: hata kodu %d" - -#: libpq/auth.c:2117 -msgid "could not load wldap32.dll" -msgstr "wldap32.dll yüklenemedi" - -#: libpq/auth.c:2125 -msgid "could not load function _ldap_start_tls_sA in wldap32.dll" -msgstr "wldap32.dll kütüphanesinden _ldap_start_tls_sA fonksiyonu yüklenemedi." - -#: libpq/auth.c:2126 -msgid "LDAP over SSL is not supported on this platform." -msgstr "Bu platformda SSL üzerinde LDAP bu ortamda desteklenmemektedir." - -#: libpq/auth.c:2141 -#, c-format -msgid "could not start LDAP TLS session: error code %d" -msgstr "LDAP TLS oturumu başlatma bşarısız: hata kodu %d" - -#: libpq/auth.c:2158 -#, c-format -msgid "LDAP login failed for user \"%s\" on server \"%s\": error code %d" -msgstr "\"%s\" kullanıcısının \"%s\" sunucusunda LDAP oturumu açma başarısız: hata kodu %d" - -#: libpq/auth.c:2183 -#, fuzzy, c-format -msgid "Certificate login failed for user \"%s\": client certificate contains no username" -msgstr "\"%s\" kullanıcısının kimlik doğrulaması başarısız: geçersiz kimlik doğrulama yöntemi" - -#: libpq/be-fsstubs.c:127 -#: libpq/be-fsstubs.c:157 -#: libpq/be-fsstubs.c:172 -#: libpq/be-fsstubs.c:197 -#: libpq/be-fsstubs.c:244 -#: libpq/be-fsstubs.c:483 -#, c-format -msgid "invalid large-object descriptor: %d" -msgstr "geçersiz large-object descriptor: %d" - -#: libpq/be-fsstubs.c:177 -#, c-format -msgid "large object descriptor %d was not opened for writing" -msgstr "%d large object descriptor yazmak için açılmadı" - -#: libpq/be-fsstubs.c:357 -msgid "must be superuser to use server-side lo_import()" -msgstr "sunucu tarafı lo_import() kullanmak için superuser olmalısınız" - -#: libpq/be-fsstubs.c:358 -msgid "Anyone can use the client-side lo_import() provided by libpq." -msgstr "Libpq kütüphanesinin sağladığı istemci-tarafı lo_import() herkes kullanabilir." - -#: libpq/be-fsstubs.c:371 -#, c-format -msgid "could not open server file \"%s\": %m" -msgstr "\"%s\" sunucu dosyası açma hatası: %m" - -#: libpq/be-fsstubs.c:393 -#, c-format -msgid "could not read server file \"%s\": %m" -msgstr "\"%s\" sunucu dosyası okuma hatası: %m" - -#: libpq/be-fsstubs.c:423 -msgid "must be superuser to use server-side lo_export()" -msgstr "sunucu tarafı lo_export() kullanmak için superuser olmalısınız" - -#: libpq/be-fsstubs.c:424 -msgid "Anyone can use the client-side lo_export() provided by libpq." -msgstr "Libpq kütüphanesinin sağladığı istemci-tarafı lo_export() herkes kullanabilir." - -#: libpq/be-fsstubs.c:448 -#, c-format -msgid "could not create server file \"%s\": %m" -msgstr "\"%s\" sunucu dosyası oluşturma hatası: %m" - -#: libpq/be-fsstubs.c:460 -#, c-format -msgid "could not write server file \"%s\": %m" -msgstr "\"%s\" sunucu dosyası yazma hatası: %m" - -#: libpq/be-secure.c:275 -#: libpq/be-secure.c:369 -#, c-format -msgid "SSL error: %s" -msgstr "SSL hatası: %s" - -#: libpq/be-secure.c:284 -#: libpq/be-secure.c:378 -#: libpq/be-secure.c:934 -#, c-format -msgid "unrecognized SSL error code: %d" -msgstr "bilinmeyen SSL hata kodu: %d" - -#: libpq/be-secure.c:323 -#: libpq/be-secure.c:327 -#: libpq/be-secure.c:337 -msgid "SSL renegotiation failure" -msgstr "SSL yeniden görüşme hatası" - -#: libpq/be-secure.c:331 -msgid "SSL failed to send renegotiation request" -msgstr "SSL görüşme cevabı gönderme başarısız" - -#: libpq/be-secure.c:726 -#, c-format -msgid "could not create SSL context: %s" -msgstr "SSL context oluşturma hatası: %s" - -#: libpq/be-secure.c:736 -#, c-format -msgid "could not load server certificate file \"%s\": %s" -msgstr "sunucu srtifika dosyası \"%s\" yükleme başarısız: %s" - -#: libpq/be-secure.c:742 -#, c-format -msgid "could not access private key file \"%s\": %m" -msgstr "private key dosyası \"%s\" okunamıyor: %m" - -#: libpq/be-secure.c:757 -#, fuzzy, c-format -msgid "private key file \"%s\" has group or world access" -msgstr "veritabanı dizini \"%s\" gruba ve herkese erişime açıktır" - -#: libpq/be-secure.c:759 -msgid "Permissions should be u=rw (0600) or less." -msgstr "İzinler u=rw (0600) ya da daha az olmalıdır." - -#: libpq/be-secure.c:766 -#, c-format -msgid "could not load private key file \"%s\": %s" -msgstr "private key dosyası \"%s\" okunamıyor: %s" - -#: libpq/be-secure.c:771 -#, c-format -msgid "check of private key failed: %s" -msgstr "private key denetlemesi başarısız: %s" - -#: libpq/be-secure.c:800 -#, fuzzy, c-format -msgid "could not access root certificate file \"%s\": %m" -msgstr "ana sertifika dosyası \"%s\" okunaıyor: %s" - -#: libpq/be-secure.c:813 -#, c-format -msgid "could not load root certificate file \"%s\": %s" -msgstr "ana sertifika dosyası \"%s\" okunaıyor: %s" - -#: libpq/be-secure.c:835 -#, c-format -msgid "SSL certificate revocation list file \"%s\" ignored" -msgstr "SSL feshedilmiş sertifika dosyası \"%s\" yoksayıldı" - -#: libpq/be-secure.c:837 -msgid "SSL library does not support certificate revocation lists." -msgstr "SSL kütühanesi feshedilmiş sertifika listelerini desteklememektedir." - -#: libpq/be-secure.c:843 -#, c-format -msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s" -msgstr "SSL feshedilmiş sertifika dosyası \"%s\" bulunmadı, atlanıyor: %s" - -#: libpq/be-secure.c:845 -msgid "Certificates will not be checked against revocation list." -msgstr "Sertifikalar, feshedilmiş sertifika listeleri ile karşılaştırmayacaktır." - -#: libpq/be-secure.c:879 -#, c-format -msgid "could not initialize SSL connection: %s" -msgstr "SSL bağlantısı oluşturulamıyor: %s" - -#: libpq/be-secure.c:888 -#, c-format -msgid "could not set SSL socket: %s" -msgstr "SSL socket kurulamıyor: %s" - -#: libpq/be-secure.c:914 -#, c-format -msgid "could not accept SSL connection: %m" -msgstr "SSL bağlantı alınamıyor: %m" - -#: libpq/be-secure.c:918 -#: libpq/be-secure.c:929 -msgid "could not accept SSL connection: EOF detected" -msgstr "SSL bağlantı alınamıyor: EOF algılandı" - -#: libpq/be-secure.c:923 -#, c-format -msgid "could not accept SSL connection: %s" -msgstr "SSL bağlantı alınamıyor: %s" - -#: libpq/be-secure.c:961 -#, c-format -msgid "SSL connection from \"%s\"" -msgstr "\"%s\" adresinden SSL bağşantısı" - -#: libpq/be-secure.c:1005 -msgid "no SSL error reported" -msgstr "SSL hata yok" - -#: libpq/be-secure.c:1009 -#, c-format -msgid "SSL error code %lu" -msgstr "SSL hata kodu: %lu" - -#: libpq/hba.c:152 -#, c-format -msgid "authentication file token too long, skipping: \"%s\"" -msgstr "authentication file token uzunluğu sınırı aşmaktadır, esgeçiliyor: \"%s\"" - -#: libpq/hba.c:341 -#, c-format -msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" -msgstr "ikincil kimlik doğrulama dosyası \"@%s\", \"%s\" olarak açılamadı: %m" - -#. translator: the second %s is a list of auth methods -#: libpq/hba.c:582 -#, fuzzy, c-format -msgid "authentication option \"%s\" is only valid for authentication methods %s" -msgstr "\"%s\" kullanıcısının kimlik doğrulaması başarısız: geçersiz kimlik doğrulama yöntemi" - -#: libpq/hba.c:584 -#: libpq/hba.c:600 -#: libpq/hba.c:646 -#: libpq/hba.c:669 -#: libpq/hba.c:681 -#: libpq/hba.c:694 -#: libpq/hba.c:709 -#: libpq/hba.c:737 -#: libpq/hba.c:762 -#: libpq/hba.c:776 -#: libpq/hba.c:789 -#: libpq/hba.c:817 -#: libpq/hba.c:885 -#: libpq/hba.c:896 -#: libpq/hba.c:908 -#: libpq/hba.c:919 -#: libpq/hba.c:942 -#: libpq/hba.c:971 -#: libpq/hba.c:983 -#: libpq/hba.c:996 -#: libpq/hba.c:1030 -#: libpq/hba.c:1074 -#: tsearch/ts_locale.c:173 -#, c-format -msgid "line %d of configuration file \"%s\"" -msgstr "%d . satıri \"%s\" yapılandırma dosyasında" - -#: libpq/hba.c:598 -#, fuzzy, c-format -msgid "authentication method \"%s\" requires argument \"%s\" to be set" -msgstr "%u yetkilendirme sistemi desteklenmiyor\n" - -#: libpq/hba.c:644 -#, fuzzy -msgid "hostssl not supported on this platform" -msgstr "bu platformda tablespace desteklenmiyor" - -#: libpq/hba.c:645 -#, fuzzy -msgid "compile with --enable-ssl to use SSL connections" -msgstr "SSL bağlantısı sağlanamadı: %s\n" - -#: libpq/hba.c:667 -#, c-format -msgid "invalid connection type \"%s\"" -msgstr "geçersiz bağlantı tipi \"%s\"" - -#: libpq/hba.c:680 -#, fuzzy -msgid "end-of-line before database specification" -msgstr "çakışan \"datestyle\" tanımları" - -#: libpq/hba.c:693 -#, fuzzy -msgid "end-of-line before role specification" -msgstr "çakışan \"datestyle\" tanımları" - -#: libpq/hba.c:708 -#, fuzzy -msgid "end-of-line before IP address specification" -msgstr "çakışan \"datestyle\" tanımları" - -#: libpq/hba.c:735 -#, c-format -msgid "invalid IP address \"%s\": %s" -msgstr "geçersiz IP adresi \"%s\": %s" - -#: libpq/hba.c:760 -#, c-format -msgid "invalid CIDR mask in address \"%s\"" -msgstr "\"%s\" adresinde geçersiz CIDR maskesi" - -#: libpq/hba.c:775 -msgid "end-of-line before netmask specification" -msgstr "" - -#: libpq/hba.c:787 -#, c-format -msgid "invalid IP mask \"%s\": %s" -msgstr "geçersiz IP maskesi \"%s\" : %s" - -#: libpq/hba.c:803 -#, c-format -msgid "IP address and mask do not match in file \"%s\" line %d" -msgstr "\"%s\" dosyasında %d satırında IP adresi ve maske uyuşmamaktadır" - -#: libpq/hba.c:816 -msgid "end-of-line before authentication method" -msgstr "yetkilendirme yönteminden önce satır sonu" - -#: libpq/hba.c:883 -#, c-format -msgid "invalid authentication method \"%s\"" -msgstr "geçersiz yetkilendirme yöntemi\"%s\"" - -#: libpq/hba.c:894 -#, c-format -msgid "invalid authentication method \"%s\": not supported on this platform" -msgstr "\"%s*\" yetkilendirme sistemi bu platformda desteklenmiyor" - -#: libpq/hba.c:907 -msgid "krb5 authentication is not supported on local sockets" -msgstr "yerel soketlerde krb5 yetkilendirmesi desteklenmemektedir" - -#: libpq/hba.c:918 -msgid "cert authentication is only supported on hostssl connections" -msgstr "cert yetkilendirmesi sadece hostssl bağlantılarında desteklenmektedir" - -#: libpq/hba.c:941 -#, c-format -msgid "authentication option not in name=value format: %s" -msgstr "" - -#: libpq/hba.c:956 -msgid "ident, krb5, gssapi, sspi and cert" -msgstr "ident, krb5, gssapi, sspi ve cert" - -#: libpq/hba.c:970 -msgid "clientcert can only be configured for \"hostssl\" rows" -msgstr "" - -#: libpq/hba.c:981 -msgid "client certificates can only be checked if a root certificate store is available" -msgstr "" - -#: libpq/hba.c:982 -msgid "make sure the root certificate store is present and readable" -msgstr "kök sertifikasının mevcut ve okunabilir olduğundan emin olun" - -#: libpq/hba.c:995 -msgid "clientcert can not be set to 0 when using \"cert\" authentication" -msgstr "" - -#: libpq/hba.c:1029 -#, c-format -msgid "invalid LDAP port number: \"%s\"" -msgstr "Geçersiz LDAP port numarası: \"%s\"" - -#: libpq/hba.c:1055 -#: libpq/hba.c:1063 -msgid "krb5, gssapi and sspi" -msgstr "krb5, gssapi ve sspi" - -#: libpq/hba.c:1073 -#, fuzzy, c-format -msgid "unknown authentication option name: \"%s\"" -msgstr "%s: bilinmeyen yetkilendirme yöntemi\"%s\".\n" - -#: libpq/hba.c:1231 -#: access/transam/xlog.c:2285 -#: access/transam/xlog.c:3851 -#: access/transam/xlog.c:3941 -#: access/transam/xlog.c:4039 -#: utils/init/miscinit.c:993 -#: utils/init/miscinit.c:1099 -#: utils/init/postinit.c:94 -#: utils/init/postinit.c:134 -#: utils/error/elog.c:1394 -#: postmaster/autovacuum.c:1808 -#: ../port/copydir.c:119 -#, c-format -msgid "could not open file \"%s\": %m" -msgstr "\"%s\" dosyası açılamıyor: %m" - -#: libpq/hba.c:1320 -#: guc-file.l:403 -#, c-format -msgid "could not open configuration file \"%s\": %m" -msgstr "yapılandırma dosyası \"%s\" açılamadı: %m" - -#: libpq/hba.c:1498 -#, c-format -msgid "invalid regular expression \"%s\": %s" -msgstr "geçersiz düzensiz ifade \"%s\" : %s" - -#: libpq/hba.c:1520 -#, c-format -msgid "regular expression match for \"%s\" failed: %s" -msgstr "\"%s\" için düzenli ifade eşleşmesi başarısız: %s" - -#: libpq/hba.c:1536 -#, c-format -msgid "regular expression \"%s\" has no subexpressions as requested by backreference in \"%s\"" -msgstr "" - -#: libpq/hba.c:1598 -#, c-format -msgid "missing entry in file \"%s\" at end of line %d" -msgstr "\"%s\" dosyasında %d satırın sonunda eksik giriş" - -#: libpq/hba.c:1639 -#, c-format -msgid "provided username (%s) and authenticated username (%s) don't match" -msgstr "" - -#: libpq/hba.c:1660 -#, c-format -msgid "no match in usermap for user \"%s\" authenticated as \"%s\"" -msgstr "" - -#: libpq/hba.c:1662 -#, fuzzy, c-format -msgid "usermap \"%s\"" -msgstr " \"%s\" kullanıcısı" - -#: libpq/hba.c:1685 -#, c-format -msgid "could not open Ident usermap file \"%s\": %m" -msgstr "Ident usermap dosyası \"%s\" açılamadı: %m" - -#: libpq/pqcomm.c:289 -#, c-format -msgid "could not translate host name \"%s\", service \"%s\" to address: %s" -msgstr "host adı \"%s\", hizmet \"%s\" adrese çevirilemedi: %s" - -#: libpq/pqcomm.c:293 -#, c-format -msgid "could not translate service \"%s\" to address: %s" -msgstr "\"%s\" servesi adrese çevirilemedi: %s" - -#: libpq/pqcomm.c:320 -#, c-format -msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded" -msgstr "tüm istenilen adreslerine bind hatası: MAXLISTEN(%d) sınırı aşılmıştır" - -#: libpq/pqcomm.c:329 -msgid "IPv4" -msgstr "IPv4" - -#: libpq/pqcomm.c:333 -msgid "IPv6" -msgstr "IPv6" - -#: libpq/pqcomm.c:338 -msgid "Unix" -msgstr "Unix" - -#: libpq/pqcomm.c:343 -#, c-format -msgid "unrecognized address family %d" -msgstr "bilinmeyen adres ailesi %d" - -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:354 -#, c-format -msgid "could not create %s socket: %m" -msgstr "%s: socket oluşturma hatası: %m" - -#: libpq/pqcomm.c:379 -#, c-format -msgid "setsockopt(SO_REUSEADDR) failed: %m" -msgstr "setsockopt(SO_REUSEADDR) başarısız: %m" - -#: libpq/pqcomm.c:394 -#, c-format -msgid "setsockopt(IPV6_V6ONLY) failed: %m" -msgstr "setsockopt(IPV6_V6ONLY) başarısız: %m" - -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:413 -#, c-format -msgid "could not bind %s socket: %m" -msgstr "%s socket bind hatası: %m" - -#: libpq/pqcomm.c:416 -#, c-format -msgid "Is another postmaster already running on port %d? If not, remove socket file \"%s\" and retry." -msgstr "Başka bir postmaster %d portunda çalışıyor mu? Değil ise \"%s\" socket dosyasını kaldırın ve yeniden deneyin." - -#: libpq/pqcomm.c:419 -#, c-format -msgid "Is another postmaster already running on port %d? If not, wait a few seconds and retry." -msgstr "Başka bir postmaster %d portunda çalışıyor mu? Değil ise birkaç saniye bekleyin ve yeniden deneyin." - -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:452 -#, c-format -msgid "could not listen on %s socket: %m" -msgstr "%s socket dinleme hatası: %m" - -#: libpq/pqcomm.c:532 -#, c-format -msgid "group \"%s\" does not exist" -msgstr "\"%s\" grubu mevcut değil" - -#: libpq/pqcomm.c:542 -#, c-format -msgid "could not set group of file \"%s\": %m" -msgstr "\"%s\" dosyasının grup atama hatası: %m" - -#: libpq/pqcomm.c:553 -#, c-format -msgid "could not set permissions of file \"%s\": %m" -msgstr "\"%s\" dosyasının erişim hakklarını atanamıyor: %m" - -#: libpq/pqcomm.c:583 -#, c-format -msgid "could not accept new connection: %m" -msgstr "yeni bağlantı alma hatası: %m" - -#: libpq/pqcomm.c:769 -#, c-format -msgid "could not receive data from client: %m" -msgstr "istemciden veri alınamamıştır: %m" - -#: libpq/pqcomm.c:956 -msgid "unexpected EOF within message length word" -msgstr "mesaj uzunluk verisinde beklenmeyen EOF (dosya sonu)" - -#: libpq/pqcomm.c:967 -msgid "invalid message length" -msgstr "mesaj uzunluğu yanlıştır" - -#: libpq/pqcomm.c:989 -#: libpq/pqcomm.c:999 -msgid "incomplete message from client" -msgstr "istemciden alınan mesaj eksik" - -#: libpq/pqcomm.c:1108 -#, c-format -msgid "could not send data to client: %m" -msgstr "istemci sürecine sinyal gönderme başarısız: %m" - -#: libpq/pqformat.c:463 -msgid "no data left in message" -msgstr "mesajda başka veri kalmadı" - -#: libpq/pqformat.c:529 -msgid "binary value is out of range for type bigint" -msgstr "bigint tipi için değer kapsam dışındadır" - -#: libpq/pqformat.c:611 -#: libpq/pqformat.c:629 -#: libpq/pqformat.c:650 -#: utils/adt/arrayfuncs.c:1345 -#: utils/adt/rowtypes.c:551 -msgid "insufficient data left in message" -msgstr "mesajda yetersiz veri kaldı" - -#: libpq/pqformat.c:691 -msgid "invalid string in message" -msgstr "mesajda geçersiz satır" - -#: libpq/pqformat.c:707 -msgid "invalid message format" -msgstr "geçersiz mesaj biçimi" - -#: access/gist/gistsplit.c:372 -#, c-format -msgid "picksplit method for column %d of index \"%s\" failed" -msgstr "" - -#: access/gist/gistsplit.c:374 -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 "İndex en uygun durumda değil. Optimize etmek için bir geliştiri ile bağlantı kurun, ya da kolonu CREATE INDEX komutunda ikinci olarak kullanmayı deneyin." - -#: access/gist/gistutil.c:407 -#, c-format -msgid "index \"%s\" needs VACUUM or REINDEX to finish crash recovery" -msgstr "crash recovery bitirmesi için \"%s\" indeksin VACUUM veya REINDEX işleminden geçmesi gerekir" - -#: access/gist/gistutil.c:588 -#: access/nbtree/nbtpage.c:432 -#: access/hash/hashutil.c:169 -#, c-format -msgid "index \"%s\" contains unexpected zero page at block %u" -msgstr "\"%s\" indexnde %u bloğunda beklenmeyen boş sayfa" - -#: access/gist/gistutil.c:591 -#: access/gist/gistutil.c:602 -#: access/nbtree/nbtpage.c:435 -#: access/nbtree/nbtpage.c:446 -#: access/hash/hashutil.c:172 -#: access/hash/hashutil.c:183 -#: access/hash/hashutil.c:195 -#: access/hash/hashutil.c:216 -msgid "Please REINDEX it." -msgstr "Lütfen onu REINDEX'leyin." - -#: access/gist/gistutil.c:599 -#: access/nbtree/nbtpage.c:443 -#: access/hash/hashutil.c:180 -#: access/hash/hashutil.c:192 -#, c-format -msgid "index \"%s\" contains corrupted page at block %u" -msgstr "\"%s\" indexnde %u bloğunda bozuk sayfa" - -#: access/gist/gistvacuum.c:566 -#, c-format -msgid "index \"%s\" needs VACUUM FULL or REINDEX to finish crash recovery" -msgstr "crash recovery bitirmesi için \"%s\" indeksin VACUUM FULL veya REINDEX işleminden geçmesi gerekir" - -#: access/gist/gistxlog.c:794 -#, c-format -msgid "index %u/%u/%u needs VACUUM FULL or REINDEX to finish crash recovery" -msgstr "crash recovery bitirmesi için %u/%u/%u indeksin VACUUM FULL veya REINDEX işleminden geçmesi gerekir" - -#: access/gist/gistxlog.c:796 -msgid "Incomplete insertion detected during crash replay." -msgstr "Crash replay sırasında tamamlanmamış insert tespit edildi." - -#: access/common/heaptuple.c:686 -#: access/common/heaptuple.c:1438 -#, c-format -msgid "number of columns (%d) exceeds limit (%d)" -msgstr "kolonların sayısı (%d), (%d) sınırını aşıyor" - -#: access/common/indextuple.c:57 -#, c-format -msgid "number of index columns (%d) exceeds limit (%d)" -msgstr "index kolonlarının sayısı (%d), (%d) sınırını aşıyor" - -#: access/common/indextuple.c:168 -#, c-format -msgid "index row requires %lu bytes, maximum size is %lu" -msgstr "index satırının%lu byte'a gereksinmesi var, ancak en büyük byte büyüklüğü: %lu" - -#: access/common/printtup.c:278 -#: tcop/postgres.c:1630 -#: tcop/fastpath.c:180 -#: tcop/fastpath.c:552 -#, c-format -msgid "unsupported format code: %d" -msgstr "desteklenmeyen biçim kodu: %d" - -#: access/common/reloptions.c:285 -msgid "user-defined relation parameter types limit exceeded" -msgstr "" - -#: access/common/reloptions.c:584 -msgid "RESET must not include values for parameters" -msgstr "RESET, parametre için değer içermemeli" - -#: access/common/reloptions.c:617 -#, fuzzy, c-format -msgid "unrecognized parameter namespace \"%s\"" -msgstr "\"%s\" tanınmayan parametre" - -#: access/common/reloptions.c:857 -#, c-format -msgid "unrecognized parameter \"%s\"" -msgstr "\"%s\" tanınmayan parametre" - -#: access/common/reloptions.c:882 -#, c-format -msgid "parameter \"%s\" specified more than once" -msgstr "\"%s\" parametresi birden fazla kez belirtilmiştir" - -#: access/common/reloptions.c:897 -#, fuzzy, c-format -msgid "invalid value for boolean option \"%s\": %s" -msgstr "\"%s\" seçeneği için geçersiz değer: \"%s\"" - -#: access/common/reloptions.c:908 -#, fuzzy, c-format -msgid "invalid value for integer option \"%s\": %s" -msgstr "\"%s\" seçeneği için geçersiz değer: \"%s\"" - -#: access/common/reloptions.c:913 -#: access/common/reloptions.c:931 -#, fuzzy, c-format -msgid "value %s out of bounds for option \"%s\"" -msgstr "setval: %s değeri kapsam dışıdır, sequence \"%s\" (%s..%s)" - -#: access/common/reloptions.c:915 -#, fuzzy, c-format -msgid "Valid values are between \"%d\" and \"%d\"." -msgstr "Geçerli değerler: \"terse\", \"default\", ve \"verbose\"." - -#: access/common/reloptions.c:926 -#, fuzzy, c-format -msgid "invalid value for floating point option \"%s\": %s" -msgstr "\"%s\" seçeneği için geçersiz değer: \"%s\"" - -#: access/common/reloptions.c:933 -#, fuzzy, c-format -msgid "Valid values are between \"%f\" and \"%f\"." -msgstr "Geçerli değerler: \"terse\", \"default\", ve \"verbose\"." - -#: access/common/tupdesc.c:547 -#: parser/parse_relation.c:1194 -#, c-format -msgid "column \"%s\" cannot be declared SETOF" -msgstr "\"%s\" kolonu SETOF olarak bildirilemez" - -#: access/transam/slru.c:614 -#, c-format -msgid "file \"%s\" doesn't exist, reading as zeroes" -msgstr "\"%s\" dosyası mevcut değilr, sıfırlarla dolu dosya olarak okunuyor" - -#: access/transam/slru.c:844 -#: access/transam/slru.c:850 -#: access/transam/slru.c:857 -#: access/transam/slru.c:864 -#: access/transam/slru.c:871 -#: access/transam/slru.c:878 -#, c-format -msgid "could not access status of transaction %u" -msgstr "%u transactionunun durumuna erişilemiyor." - -#: access/transam/slru.c:845 -#, c-format -msgid "Could not open file \"%s\": %m." -msgstr "\"%s\" dosyası açılamıyor: %m" - -#: access/transam/slru.c:851 -#, c-format -msgid "Could not seek in file \"%s\" to offset %u: %m." -msgstr "\"%s\" dosyası, offset %u imleç değiştirme hatası: %m" - -#: access/transam/slru.c:858 -#, c-format -msgid "Could not read from file \"%s\" at offset %u: %m." -msgstr "\"%s\" dosyası, offset %u okuma hatası: %m" - -#: access/transam/slru.c:865 -#, c-format -msgid "Could not write to file \"%s\" at offset %u: %m." -msgstr "\"%s\" dosyası, offset %u yazma hatası: %m" - -#: access/transam/slru.c:872 -#, c-format -msgid "Could not fsync file \"%s\": %m." -msgstr "\"%s\" dosyası fsync hatası: %m" - -#: access/transam/slru.c:879 -#, c-format -msgid "Could not close file \"%s\": %m." -msgstr "\"%s\" dosyası kapatılamıyor: %m" - -#: access/transam/slru.c:1106 -#, c-format -msgid "could not truncate directory \"%s\": apparent wraparound" -msgstr "\"%s\" dizini küçültülemedi: başa sarma durumuna rastlandı" - -#: access/transam/slru.c:1187 -#, c-format -msgid "removing file \"%s\"" -msgstr "\"%s\" dosyası siliniyor" - -#: access/transam/twophase.c:228 -#, c-format -msgid "transaction identifier \"%s\" is too long" -msgstr "transaction identifier \"%s\" çok uzun" - -#: access/transam/twophase.c:235 -#, fuzzy -msgid "prepared transactions are disabled" -msgstr "prepared transaction başka bir veritabanına aittir" - -#: access/transam/twophase.c:236 -#, fuzzy -msgid "Set max_prepared_transactions to a nonzero value." -msgstr "prepared transaction başka bir veritabanına aittir" - -#: access/transam/twophase.c:269 -#, c-format -msgid "transaction identifier \"%s\" is already in use" -msgstr "\"%s\" transaction identifier kullanılmaktadır" - -#: access/transam/twophase.c:278 -msgid "maximum number of prepared transactions reached" -msgstr "En çok olabilecek prepared transaction sayısına ulaşılmıştır." - -#: access/transam/twophase.c:279 -#, c-format -msgid "Increase max_prepared_transactions (currently %d)." -msgstr "max_prepared_transactions parametresini artırın (şu an: %d)." - -#: access/transam/twophase.c:399 -#, c-format -msgid "prepared transaction with identifier \"%s\" is busy" -msgstr "identifier \"%s\" olan hazırlanmış transaction meşguldur" - -#: access/transam/twophase.c:407 -msgid "permission denied to finish prepared transaction" -msgstr "prepared transaction bitirmede erişim hatası" - -#: access/transam/twophase.c:408 -msgid "Must be superuser or the user that prepared the transaction." -msgstr "Superuser veya ğreparet transaction oluşturan kullanıcısı olmalısınız." - -#: access/transam/twophase.c:419 -msgid "prepared transaction belongs to another database" -msgstr "prepared transaction başka bir veritabanına aittir" - -#: access/transam/twophase.c:420 -msgid "Connect to the database where the transaction was prepared to finish it." -msgstr "İşlemini bitirmek için transaction prepare işlemi yapıldığı veritabanına bağlanın." - -#: access/transam/twophase.c:434 -#, c-format -msgid "prepared transaction with identifier \"%s\" does not exist" -msgstr "identifier \"%s\" olan hazırlanmış transaction mevcut değil" - -#: access/transam/twophase.c:886 -#, fuzzy -msgid "two-phase state file maximum length exceeded" -msgstr "yapılandırma dosyası \"%s\" açılamadı: en yüksek içiçe yuvalama derinliği aşılmıştır" - -#: access/transam/twophase.c:904 -#, c-format -msgid "could not create two-phase state file \"%s\": %m" -msgstr "\"%s\" two-phase state dosyası oluşturulamadı: %m" - -#: access/transam/twophase.c:918 -#: access/transam/twophase.c:935 -#: access/transam/twophase.c:984 -#: access/transam/twophase.c:1351 -#: access/transam/twophase.c:1358 -#, c-format -msgid "could not write two-phase state file: %m" -msgstr "two-phase state dosyası yazma hatası: %m" - -#: access/transam/twophase.c:944 -#, c-format -msgid "could not seek in two-phase state file: %m" -msgstr "two-phase state dosyası ilerleme hatası: %m" - -#: access/transam/twophase.c:990 -#: access/transam/twophase.c:1376 -#, c-format -msgid "could not close two-phase state file: %m" -msgstr "two-phase state dosyası kapatma hatası: %m" - -#: access/transam/twophase.c:1061 -#: access/transam/twophase.c:1456 -#, c-format -msgid "could not open two-phase state file \"%s\": %m" -msgstr "\"%s\" two-phase state dosyası açma hatası: %m" - -#: access/transam/twophase.c:1077 -#, c-format -msgid "could not stat two-phase state file \"%s\": %m" -msgstr "\"%s\" two-phase state dosyası stat hatası: %m" - -#: access/transam/twophase.c:1108 -#, c-format -msgid "could not read two-phase state file \"%s\": %m" -msgstr "\"%s\" two-phase state dosyası okuma hatası: %m" - -#: access/transam/twophase.c:1172 -#, c-format -msgid "two-phase state file for transaction %u is corrupt" -msgstr "%u transaction için two-phase state dosyası hasar görmüştür" - -#: access/transam/twophase.c:1313 -#, c-format -msgid "could not remove two-phase state file \"%s\": %m" -msgstr "\"%s\" two-phase state dosyası silinemedi: %m" - -#: access/transam/twophase.c:1342 -#, c-format -msgid "could not recreate two-phase state file \"%s\": %m" -msgstr "\"%s\" two-phase state dosyası yeniden oluşturulamadı: %m" - -#: access/transam/twophase.c:1370 -#, c-format -msgid "could not fsync two-phase state file: %m" -msgstr "two-phase state dosyası fsync hatası: %m" - -#: access/transam/twophase.c:1465 -#, c-format -msgid "could not fsync two-phase state file \"%s\": %m" -msgstr "\"%s\" two-phase state dosyası fsync hatası: %m" - -#: access/transam/twophase.c:1472 -#, c-format -msgid "could not close two-phase state file \"%s\": %m" -msgstr "two-phase state dosyası \"%s\" kapatılamıyor: %m" - -#: access/transam/twophase.c:1530 -#, c-format -msgid "removing future two-phase state file \"%s\"" -msgstr "geleceğe dönük two-phase state dosyası \"%s\" kaldırılıyor" - -#: access/transam/twophase.c:1546 -#: access/transam/twophase.c:1557 -#: access/transam/twophase.c:1645 -#, c-format -msgid "removing corrupt two-phase state file \"%s\"" -msgstr "hasar görmüş two-phase state dosyası \"%s\" kaldırılıyor" - -#: access/transam/twophase.c:1634 -#, c-format -msgid "removing stale two-phase state file \"%s\"" -msgstr "eskimiş two-phase state dosyası \"%s\" kaldırılıyor" - -#: access/transam/twophase.c:1652 -#, c-format -msgid "recovering prepared transaction %u" -msgstr "%u prepared transaction kurtarılıyor" - -#: access/transam/varsup.c:87 -#, c-format -msgid "database is not accepting commands to avoid wraparound data loss in database \"%s\"" -msgstr "\"%s\" veritabanı wraparound ve veri kaybı tehlikesini önlemek için bağlantıları kabul etmmemktedir" - -#: access/transam/varsup.c:89 -#, fuzzy, c-format -msgid "" -"Stop the postmaster and use a standalone backend to vacuum database \"%s\".\n" -"You might also need to commit or roll back old prepared transactions." -msgstr "postmaster sürecini kapatın ve \"%s\" veritabanına VACUUM uygulamak için bağımsız backend kullanın." - -#: access/transam/varsup.c:94 -#: access/transam/varsup.c:301 -#, c-format -msgid "database \"%s\" must be vacuumed within %u transactions" -msgstr "\"%s\" veritabanına transaction sayısı %u geçmeden vacuum işlemi uygulanmalıdır" - -#: access/transam/varsup.c:97 -#: access/transam/varsup.c:304 -#, fuzzy, c-format -msgid "" -"To avoid a database shutdown, execute a database-wide VACUUM in \"%s\".\n" -"You might also need to commit or roll back old prepared transactions." -msgstr "Veritabanı kapanmasını önlemek için \"%s\" veritabanında full-database VACUUM çalıştırın" - -#: access/transam/varsup.c:284 -#, c-format -msgid "transaction ID wrap limit is %u, limited by database \"%s\"" -msgstr "\"%2$s\" veritabanın transaction ID warp limiti %1$u" - -#: access/transam/xact.c:621 -msgid "cannot have more than 2^32-1 commands in a transaction" -msgstr "bir transaction içinde 2^32-1 komuttan fazla olamaz" - -#: access/transam/xact.c:1103 -#, fuzzy, c-format -msgid "maximum number of committed subtransactions (%d) exceeded" -msgstr "En çok olabilecek prepared transaction sayısına ulaşılmıştır." - -#: access/transam/xact.c:1820 -msgid "cannot PREPARE a transaction that has operated on temporary tables" -msgstr "geçeci tablolarda işlem yapmış transaction'a PREPARE yapılamaz" - -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2606 -#, c-format -msgid "%s cannot run inside a transaction block" -msgstr "%s bir transaction bloğu içinde çalışamaz" - -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2616 -#, c-format -msgid "%s cannot run inside a subtransaction" -msgstr "%s bir subtransaction içinde çalışamaz" - -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2626 -#, c-format -msgid "%s cannot be executed from a function or multi-command string" -msgstr "%s bir fonksiyonun veya çoklu komut satırından içinden çalıştırılamaz" - -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2677 -#, c-format -msgid "%s can only be used in transaction blocks" -msgstr "%s sadece transaction bloğu içinde kullanılabilir" - -#: access/transam/xact.c:2859 -msgid "there is already a transaction in progress" -msgstr "bir transaction zaten başlatılmıştır" - -#: access/transam/xact.c:3026 -#: access/transam/xact.c:3118 -msgid "there is no transaction in progress" -msgstr "çalışan bir transaction yok" - -#: access/transam/xact.c:3212 -#: access/transam/xact.c:3262 -#: access/transam/xact.c:3268 -#: access/transam/xact.c:3312 -#: access/transam/xact.c:3360 -#: access/transam/xact.c:3366 -msgid "no such savepoint" -msgstr "böyle bir savepoint bulunamadı" - -#: access/transam/xact.c:4000 -msgid "cannot have more than 2^32-1 subtransactions in a transaction" -msgstr "bir transaction içinde 2^32-1 subtransactiondan fazla olamaz" - -#: access/transam/xlog.c:1159 -#, c-format -msgid "could not create archive status file \"%s\": %m" -msgstr "\"%s\" arşiv durum dosyası oluşturulamadı: %m" - -#: access/transam/xlog.c:1167 -#, c-format -msgid "could not write archive status file \"%s\": %m" -msgstr "\"%s\" arşiv durum dosyası yazılamadı: %m" - -#: access/transam/xlog.c:1622 -#: access/transam/xlog.c:3437 -#, c-format -msgid "could not seek in log file %u, segment %u to offset %u: %m" -msgstr "kayıt dosyası %u, segment %u, offset %u imleç ilerleme hatası: %m" - -#: access/transam/xlog.c:1639 -#, c-format -msgid "could not write to log file %u, segment %u at offset %u, length %lu: %m" -msgstr "kayıt dosyası %u, segment %u, offset %u, uzunluk %lu yazma hatası: %m" - -#: access/transam/xlog.c:1826 -#, fuzzy, c-format -msgid "updated min recovery point to %X/%X" -msgstr "recoveri yeniden başlangıç noktası: %X/%X" - -#: access/transam/xlog.c:2146 -#: access/transam/xlog.c:2248 -#: access/transam/xlog.c:2481 -#: access/transam/xlog.c:2548 -#: access/transam/xlog.c:2557 -#, c-format -msgid "could not open file \"%s\" (log file %u, segment %u): %m" -msgstr "\"%s\" dosyası (log dosyası %u, segment %u) açma hatası: %m" - -#: access/transam/xlog.c:2171 -#: access/transam/xlog.c:2300 -#: access/transam/xlog.c:4020 -#: access/transam/xlog.c:7206 -#: access/transam/xlog.c:7341 -#: postmaster/postmaster.c:3482 -#: ../port/copydir.c:126 -#, c-format -msgid "could not create file \"%s\": %m" -msgstr "\"%s\" dosyası oluşturulamıyor: %m" - -#: access/transam/xlog.c:2203 -#: access/transam/xlog.c:2332 -#: access/transam/xlog.c:4072 -#: access/transam/xlog.c:4110 -#: utils/misc/guc.c:6770 -#: utils/misc/guc.c:6795 -#: utils/init/miscinit.c:1042 -#: utils/init/miscinit.c:1051 -#: commands/copy.c:1290 -#: commands/tablespace.c:706 -#: commands/tablespace.c:712 -#: postmaster/postmaster.c:3492 -#: postmaster/postmaster.c:3502 -#: ../port/copydir.c:148 -#, c-format -msgid "could not write to file \"%s\": %m" -msgstr "\"%s\" dosyası yazma hatası: %m" - -#: access/transam/xlog.c:2211 -#: access/transam/xlog.c:2339 -#: access/transam/xlog.c:4116 -#: ../port/copydir.c:158 -#, c-format -msgid "could not fsync file \"%s\": %m" -msgstr "\"%s\" dosyası fsync hatası: %m" - -#: access/transam/xlog.c:2216 -#: access/transam/xlog.c:2344 -#: access/transam/xlog.c:4121 -#: ../port/copydir.c:163 -#, c-format -msgid "could not close file \"%s\": %m" -msgstr "\"%s\" dosyası kapatılamıyor: %m" - -#: access/transam/xlog.c:2313 -#: access/transam/xlog.c:4051 -#: access/transam/xlog.c:7313 -#: access/transam/xlog.c:7363 -#: access/transam/xlog.c:7655 -#: access/transam/xlog.c:7680 -#: access/transam/xlog.c:7718 -#: utils/adt/genfile.c:132 -#: ../port/copydir.c:137 -#, c-format -msgid "could not read file \"%s\": %m" -msgstr "\"%s\" dosyası okuma hatası: %m" - -#: access/transam/xlog.c:2316 -#, c-format -msgid "not enough data in file \"%s\"" -msgstr "\"%s\" dosyasında yetersiz veri" - -#: access/transam/xlog.c:2433 -#, c-format -msgid "could not link file \"%s\" to \"%s\" (initialization of log file %u, segment %u): %m" -msgstr "\"%s\" dosyası \"%s\" dosyasına bağlanamıyor (log dosyası %u, segment %u sıfırlama işlemi): %m" - -#: access/transam/xlog.c:2454 -#, c-format -msgid "could not rename file \"%s\" to \"%s\" (initialization of log file %u, segment %u): %m" -msgstr "\"%s\" dosyası \"%s\" dosyasına taşınamıyor (log dosyası %u, segment %u ilklendirme işlemi): %m" - -#: access/transam/xlog.c:2586 -#, c-format -msgid "could not close log file %u, segment %u: %m" -msgstr "log dosyası %u kapatılamadı, segment %u : %m" - -#: access/transam/xlog.c:2654 -#: access/transam/xlog.c:2804 -#: access/transam/xlog.c:7189 -#: utils/adt/dbsize.c:62 -#: utils/adt/dbsize.c:209 -#: utils/adt/dbsize.c:278 -#: utils/adt/genfile.c:166 -#: ../port/copydir.c:81 -#, c-format -msgid "could not stat file \"%s\": %m" -msgstr "\"%s\" dosyası durumlanamadı: %m" - -#: access/transam/xlog.c:2662 -#: access/transam/xlog.c:7368 -#: commands/tablespace.c:631 -#, c-format -msgid "could not remove file \"%s\": %m" -msgstr "\"%s\" dosyası silinemedi: %m" - -#: access/transam/xlog.c:2785 -#, c-format -msgid "archive file \"%s\" has wrong size: %lu instead of %lu" -msgstr "\"%s\" arşiv dosyası yanlış boyuta sahip: %lu yerine %lu olmalıydı." - -#: access/transam/xlog.c:2792 -#, c-format -msgid "restored log file \"%s\" from archive" -msgstr "\"%s\" log dosyası arşivden geri yüklendi" - -#: access/transam/xlog.c:2842 -#, c-format -msgid "could not restore file \"%s\" from archive: return code %d" -msgstr "\"%s\" dosyası arşivden geri yüklenemiyor: dönüş kodu %d" - -#: access/transam/xlog.c:2959 -#, c-format -msgid "recovery_end_command \"%s\": return code %d" -msgstr "recovery_end_command \"%s\": dönüş kodu %d" - -#: access/transam/xlog.c:3024 -#: access/transam/xlog.c:3152 -#, c-format -msgid "could not open transaction log directory \"%s\": %m" -msgstr "\"%s\" transaction kayıt dizini açılamıyor: %m" - -#: access/transam/xlog.c:3061 -#, c-format -msgid "recycled transaction log file \"%s\"" -msgstr "\"%s\" transaction kayıt dosyası yeniden kullanımda" - -#: access/transam/xlog.c:3075 -#, c-format -msgid "removing transaction log file \"%s\"" -msgstr "\"%s\" transaction kayıt dosyası kaldırılıyor" - -#: access/transam/xlog.c:3112 -#: access/transam/xlog.c:3122 -#, fuzzy, c-format -msgid "required WAL directory \"%s\" does not exist" -msgstr "veritabanı deizini \"%s\" mevcut değil" - -#: access/transam/xlog.c:3128 -#, fuzzy, c-format -msgid "creating missing WAL directory \"%s\"" -msgstr "%s dizini yaratılıyor... " - -#: access/transam/xlog.c:3131 -#, fuzzy, c-format -msgid "could not create missing directory \"%s\": %m" -msgstr "\"%s\" dizini oluşturulamadı: %m" - -#: access/transam/xlog.c:3165 -#, c-format -msgid "removing transaction log backup history file \"%s\"" -msgstr "\"%s\" transaction kayıt yedek dosyası kaldırılıyor" - -#: access/transam/xlog.c:3284 -#, c-format -msgid "incorrect hole size in record at %X/%X" -msgstr "%X/%X adresinde geçersiz boşluk boyutu" - -#: access/transam/xlog.c:3297 -#, c-format -msgid "incorrect total length in record at %X/%X" -msgstr "%X/%X adresinde geçersiz toplam uzunluk" - -#: access/transam/xlog.c:3310 -#, c-format -msgid "incorrect resource manager data checksum in record at %X/%X" -msgstr "resoource manager data checksum %X/%X kaydında geçersiz" - -#: access/transam/xlog.c:3379 -#: access/transam/xlog.c:3467 -#, c-format -msgid "invalid record offset at %X/%X" -msgstr "%X/%X adresinde geçersiz kayıt offseti" - -#: access/transam/xlog.c:3421 -#: access/transam/xlog.c:3445 -#: access/transam/xlog.c:3610 -#, c-format -msgid "could not read from log file %u, segment %u, offset %u: %m" -msgstr "log dosyası %u, segment %u, offset %u okuma başarısız: %m" - -#: access/transam/xlog.c:3475 -#, c-format -msgid "contrecord is requested by %X/%X" -msgstr "contrecord %X/%X tarafından talep edilmiştir" - -#: access/transam/xlog.c:3492 -#, c-format -msgid "invalid xlog switch record at %X/%X" -msgstr "%X/%X adresinde geçersiz xlog switch kaydı" - -#: access/transam/xlog.c:3500 -#, c-format -msgid "record with zero length at %X/%X" -msgstr "%X/%X adresinde sıfır uzunluklu kayıt" - -#: access/transam/xlog.c:3509 -#, c-format -msgid "invalid record length at %X/%X" -msgstr "%X/%X adresinde geçersiz kayıt uzunluk" - -#: access/transam/xlog.c:3516 -#, c-format -msgid "invalid resource manager ID %u at %X/%X" -msgstr "%2$X/%3$X adresinde geçersiz resource manager ID %1$u" - -#: access/transam/xlog.c:3529 -#: access/transam/xlog.c:3545 -#, c-format -msgid "record with incorrect prev-link %X/%X at %X/%X" -msgstr "geçersiz incorrect prev-link olan kayıt: %X/%X at %X/%X" - -#: access/transam/xlog.c:3574 -#, c-format -msgid "record length %u at %X/%X too long" -msgstr "%2$X/%3$X adresinde çok büyük kayıt uzunluğu: %1$u " - -#: access/transam/xlog.c:3619 -#, c-format -msgid "there is no contrecord flag in log file %u, segment %u, offset %u" -msgstr "kayıt dosyası %u, segment %u, offset %u adresinde contrecord bulunamadı" - -#: access/transam/xlog.c:3629 -#, c-format -msgid "invalid contrecord length %u in log file %u, segment %u, offset %u" -msgstr "kayıt dosyası %2$u, segment %3$u, offset %4$u adresinde contrecord fazla uzun %1$u" - -#: access/transam/xlog.c:3718 -#, c-format -msgid "invalid magic number %04X in log file %u, segment %u, offset %u" -msgstr "kayıt dosyası %2$u, segment %3$u, offset %4$u adresinde geçersiz tanıtım kodu %1$04X" - -#: access/transam/xlog.c:3725 -#: access/transam/xlog.c:3771 -#, c-format -msgid "invalid info bits %04X in log file %u, segment %u, offset %u" -msgstr "kayıt dosyası %2$u, segment %3$u, offset %4$u adresinde geçersiz info bits %1$04X" - -#: access/transam/xlog.c:3747 -#: access/transam/xlog.c:3755 -#: access/transam/xlog.c:3762 -msgid "WAL file is from different system" -msgstr "WAL dosyası farklı bir sistemden" - -#: access/transam/xlog.c:3748 -#, c-format -msgid "WAL file SYSID is %s, pg_control SYSID is %s" -msgstr "WAL dosyası SYSID %s, pg_control SYSID %s" - -#: access/transam/xlog.c:3756 -msgid "Incorrect XLOG_SEG_SIZE in page header." -msgstr "Sayfa başlığında geçersiz XLOG_SEG_SIZE." - -#: access/transam/xlog.c:3763 -msgid "Incorrect XLOG_BLCKSZ in page header." -msgstr "Sayfa başlığında geçersiz XLOG_BLCKSZ." - -#: access/transam/xlog.c:3781 -#, c-format -msgid "unexpected pageaddr %X/%X in log file %u, segment %u, offset %u" -msgstr "beklenmeyen pageaddr %X/%X: kayıt dosyası: %u, segment %u, offset %u" - -#: access/transam/xlog.c:3793 -#, c-format -msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u" -msgstr "beklenmeyen timeline ID %u: kayıt dosyası: %u, segment %u, offset %u" - -#: access/transam/xlog.c:3811 -#, c-format -msgid "out-of-sequence timeline ID %u (after %u) in log file %u, segment %u, offset %u" -msgstr "sıra dışı timeline ID %u (%u'dan sonra) log dosyası %u, segment %u, offset %u" - -#: access/transam/xlog.c:3880 -#, c-format -msgid "syntax error in history file: %s" -msgstr "%s geçmiş dosyasında sözdizimi hatası" - -#: access/transam/xlog.c:3881 -msgid "Expected a numeric timeline ID." -msgstr "Sayısal timeline ID bekleniyordu." - -#: access/transam/xlog.c:3886 -#, c-format -msgid "invalid data in history file: %s" -msgstr "geçmiş dosyasında geçersiz veri: %s" - -#: access/transam/xlog.c:3887 -msgid "Timeline IDs must be in increasing sequence." -msgstr "Timeline ID daima artan sırayla olmalıdır." - -#: access/transam/xlog.c:3900 -#, c-format -msgid "invalid data in history file \"%s\"" -msgstr "\"%s\" geçmiş dosyasında geçersiz veri" - -#: access/transam/xlog.c:3901 -msgid "Timeline IDs must be less than child timeline's ID." -msgstr "timeline ID, child timeline ID'sinden daha düşük olmalıdır." - -#: access/transam/xlog.c:4138 -#, c-format -msgid "could not link file \"%s\" to \"%s\": %m" -msgstr "\"%s\" dosyası \"%s\" dosyasına bağlanamadı: %m" - -#: access/transam/xlog.c:4145 -#: access/transam/xlog.c:4959 -#: access/transam/xlog.c:5012 -#: access/transam/xlog.c:5410 -#: utils/init/flatfiles.c:289 -#: utils/init/flatfiles.c:673 -#: postmaster/pgarch.c:704 -#, c-format -msgid "could not rename file \"%s\" to \"%s\": %m" -msgstr "\"%s\" -- \"%s\" ad değiştirme hatası: %m" - -#: access/transam/xlog.c:4227 -#, c-format -msgid "could not create control file \"%s\": %m" -msgstr "kontrol dosyası \"%s\" oluşturma hatası: %m" - -#: access/transam/xlog.c:4238 -#: access/transam/xlog.c:4463 -#, c-format -msgid "could not write to control file: %m" -msgstr "kontrol dosyası yazma hatası: %m" - -#: access/transam/xlog.c:4244 -#: access/transam/xlog.c:4469 -#, c-format -msgid "could not fsync control file: %m" -msgstr "kontrol dosyası fsync hatası: %m" - -#: access/transam/xlog.c:4249 -#: access/transam/xlog.c:4474 -#, c-format -msgid "could not close control file: %m" -msgstr "kontrol dosyası kapatma hatası: %m" - -#: access/transam/xlog.c:4267 -#: access/transam/xlog.c:4452 -#, c-format -msgid "could not open control file \"%s\": %m" -msgstr "kontrol dosyası \"%s\" açma hatası: %m" - -#: access/transam/xlog.c:4273 -#, c-format -msgid "could not read from control file: %m" -msgstr "kontrol dosyasından okuma hatası: %m" - -#: access/transam/xlog.c:4286 -#: access/transam/xlog.c:4295 -#: access/transam/xlog.c:4319 -#: access/transam/xlog.c:4326 -#: access/transam/xlog.c:4333 -#: access/transam/xlog.c:4338 -#: access/transam/xlog.c:4345 -#: access/transam/xlog.c:4352 -#: access/transam/xlog.c:4359 -#: access/transam/xlog.c:4366 -#: access/transam/xlog.c:4373 -#: access/transam/xlog.c:4380 -#: access/transam/xlog.c:4389 -#: access/transam/xlog.c:4396 -#: access/transam/xlog.c:4405 -#: access/transam/xlog.c:4412 -#: access/transam/xlog.c:4421 -#: access/transam/xlog.c:4428 -#: utils/init/miscinit.c:1117 -msgid "database files are incompatible with server" -msgstr "veri dosyaları veritabanı sunucusu ile uyumlu değildir" - -#: access/transam/xlog.c:4287 -#, 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 "Veritabanı clusteri PG_CONTROL_VERSION %d (0x%08x) ile ilklendirilmiştir, ancak sunucu PG_CONTROL_VERSION %d (0x%08x) ile derlenmiştir. " - -#: access/transam/xlog.c:4291 -msgid "This could be a problem of mismatched byte ordering. It looks like you need to initdb." -msgstr "Bunun nedeni eşleşmeyen bayt sıralaması olabilir. initdb yapmanız gerekebilir." - -#: access/transam/xlog.c:4296 -#, c-format -msgid "The database cluster was initialized with PG_CONTROL_VERSION %d, but the server was compiled with PG_CONTROL_VERSION %d." -msgstr "Veritabanı clusteri PG_CONTROL_VERSION %d ile ilklendirilmiştir, ancak sunucu PG_CONTROL_VERSION %d ile derlenmiştir." - -#: access/transam/xlog.c:4299 -#: access/transam/xlog.c:4323 -#: access/transam/xlog.c:4330 -#: access/transam/xlog.c:4335 -msgid "It looks like you need to initdb." -msgstr "Durumu düzeltmek için initdb çalıştırın." - -#: access/transam/xlog.c:4310 -msgid "incorrect checksum in control file" -msgstr "kontrol dosyasında geçersiz checksum" - -#: access/transam/xlog.c:4320 -#, c-format -msgid "The database cluster was initialized with CATALOG_VERSION_NO %d, but the server was compiled with CATALOG_VERSION_NO %d." -msgstr "Veritabanı clusteri CATALOG_VERSION_NO %d ile ilklendirilmiştir, ancak sunucu CATALOG_VERSION_NO %d ile derlenmiştir." - -#: access/transam/xlog.c:4327 -#, c-format -msgid "The database cluster was initialized with MAXALIGN %d, but the server was compiled with MAXALIGN %d." -msgstr "Veritabanı clusteri MAXALIGN %d ile ilklendirilmiştir, ancak sunucu MAXALIGN %d ile derlenmiştir." - -#: access/transam/xlog.c:4334 -msgid "The database cluster appears to use a different floating-point number format than the server executable." -msgstr "Veritabanı dosyaları, sunucu programından farklı ondalık sayı biçimini kullanıyor." - -#: access/transam/xlog.c:4339 -#, c-format -msgid "The database cluster was initialized with BLCKSZ %d, but the server was compiled with BLCKSZ %d." -msgstr "Veritabanı clusteri BLCKSZ %d ile ilklendirilmiştir, ancak sunucu BLCKSZ %d ile derlenmiştir." - -#: access/transam/xlog.c:4342 -#: access/transam/xlog.c:4349 -#: access/transam/xlog.c:4356 -#: access/transam/xlog.c:4363 -#: access/transam/xlog.c:4370 -#: access/transam/xlog.c:4377 -#: access/transam/xlog.c:4384 -#: access/transam/xlog.c:4392 -#: access/transam/xlog.c:4399 -#: access/transam/xlog.c:4408 -#: access/transam/xlog.c:4415 -#: access/transam/xlog.c:4424 -#: access/transam/xlog.c:4431 -msgid "It looks like you need to recompile or initdb." -msgstr "Sistemi yeniden derlemeniz veya initdb çalıştırmanız gerekmetedir." - -#: access/transam/xlog.c:4346 -#, c-format -msgid "The database cluster was initialized with RELSEG_SIZE %d, but the server was compiled with RELSEG_SIZE %d." -msgstr "Veritabanı clusteri RELSEG_SIZE %d ile ilklendirilmiştir, ancak sunucu RELSEG_SIZE %d ile derlenmiştir." - -#: access/transam/xlog.c:4353 -#, c-format -msgid "The database cluster was initialized with XLOG_BLCKSZ %d, but the server was compiled with XLOG_BLCKSZ %d." -msgstr "Veritabanı clusteri XLOG_BLCKSZ %d ile ilklendirilmiştir, ancak sunucu XLOG_BLCKSZ %d ile derlenmiştir." - -#: access/transam/xlog.c:4360 -#, c-format -msgid "The database cluster was initialized with XLOG_SEG_SIZE %d, but the server was compiled with XLOG_SEG_SIZE %d." -msgstr "Veritabanı clusteri XLOG_SEG_SIZE %d ile ilklendirilmiştir, ancak sunucu XLOG_SEG_SIZE %d ile derlenmiştir." - -#: access/transam/xlog.c:4367 -#, c-format -msgid "The database cluster was initialized with NAMEDATALEN %d, but the server was compiled with NAMEDATALEN %d." -msgstr "Veritabanı clusteri NAMEDATALEN %d ile ilklendirilmiştir, ancak sunucu NAMEDATALEN %d ile derlenmiştir." - -#: access/transam/xlog.c:4374 -#, c-format -msgid "The database cluster was initialized with INDEX_MAX_KEYS %d, but the server was compiled with INDEX_MAX_KEYS %d." -msgstr "Veritabanı clusteri INDEX_MAX_KEYS %d ile ilklendirilmiştir, ancak sunucu INDEX_MAX_KEYS %d ile derlenmiştir." - -#: access/transam/xlog.c:4381 -#, 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 "Veritabanı clusteri TOAST_MAX_CHUNK_SIZE %d ile ilklendirilmiştir, ancak sunucu TOAST_MAX_CHUNK_SIZE %d ile derlenmiştir." - -#: access/transam/xlog.c:4390 -msgid "The database cluster was initialized without HAVE_INT64_TIMESTAMP but the server was compiled with HAVE_INT64_TIMESTAMP." -msgstr "Veritabanı clusteri HAVE_INT64_TIMESTAMP olmadan ilklendirilmiştir, ancak sunucu HAVE_INT64_TIMESTAMP ile derlenmiştir." - -#: access/transam/xlog.c:4397 -msgid "The database cluster was initialized with HAVE_INT64_TIMESTAMP but the server was compiled without HAVE_INT64_TIMESTAMP." -msgstr "Veritabanı clusteri HAVE_INT64_TIMESTAMP ile ilklendirilmiştir, ancak sunucu HAVE_INT64_TIMESTAMP olmadan derlenmiştir." - -#: access/transam/xlog.c:4406 -#, fuzzy -msgid "The database cluster was initialized without USE_FLOAT4_BYVAL but the server was compiled with USE_FLOAT4_BYVAL." -msgstr "Veritabanı clusteri XLOG_BLCKSZ %d ile ilklendirilmiştir, ancak sunucu XLOG_BLCKSZ %d ile derlenmiştir." - -#: access/transam/xlog.c:4413 -#, fuzzy -msgid "The database cluster was initialized with USE_FLOAT4_BYVAL but the server was compiled without USE_FLOAT4_BYVAL." -msgstr "Veritabanı clusteri XLOG_BLCKSZ %d ile ilklendirilmiştir, ancak sunucu XLOG_BLCKSZ %d ile derlenmiştir." - -#: access/transam/xlog.c:4422 -#, fuzzy -msgid "The database cluster was initialized without USE_FLOAT8_BYVAL but the server was compiled with USE_FLOAT8_BYVAL." -msgstr "Veritabanı clusteri XLOG_BLCKSZ %d ile ilklendirilmiştir, ancak sunucu XLOG_BLCKSZ %d ile derlenmiştir." - -#: access/transam/xlog.c:4429 -#, fuzzy -msgid "The database cluster was initialized with USE_FLOAT8_BYVAL but the server was compiled without USE_FLOAT8_BYVAL." -msgstr "Veritabanı clusteri XLOG_BLCKSZ %d ile ilklendirilmiştir, ancak sunucu XLOG_BLCKSZ %d ile derlenmiştir." - -#: access/transam/xlog.c:4657 -#, c-format -msgid "could not write bootstrap transaction log file: %m" -msgstr "bootstrap transaction log dosyası kapatılamadı: %m" - -#: access/transam/xlog.c:4663 -#, c-format -msgid "could not fsync bootstrap transaction log file: %m" -msgstr "bootstrap transaction log dosyası fsync başarısız: %m" - -#: access/transam/xlog.c:4668 -#, c-format -msgid "could not close bootstrap transaction log file: %m" -msgstr "bootstrap transaction log dosyası kapatılamadı: %m" - -#: access/transam/xlog.c:4729 -#, c-format -msgid "could not open recovery command file \"%s\": %m" -msgstr "recovery command dosyası \"%s\" açılamıyor: %m" - -#: access/transam/xlog.c:4734 -msgid "starting archive recovery" -msgstr "arşivden geri getirme başlatılıyor" - -#: access/transam/xlog.c:4779 -#, c-format -msgid "restore_command = '%s'" -msgstr "restore_command = '%s'" - -#: access/transam/xlog.c:4786 -#, fuzzy, c-format -msgid "recovery_end_command = '%s'" -msgstr "restore_command = '%s'" - -#: access/transam/xlog.c:4800 -#, c-format -msgid "recovery_target_timeline is not a valid number: \"%s\"" -msgstr "recovery_target_timeline geçerli sayısal bir değer değildir: \"%s\"" - -#: access/transam/xlog.c:4805 -#, c-format -msgid "recovery_target_timeline = %u" -msgstr "recovery_target_timeline = %u" - -#: access/transam/xlog.c:4808 -msgid "recovery_target_timeline = latest" -msgstr "recovery_target_timeline = latest" - -#: access/transam/xlog.c:4816 -#, c-format -msgid "recovery_target_xid is not a valid number: \"%s\"" -msgstr "recovery_target_xid geçerli sayısal bir değer değildir: \"%s\"" - -#: access/transam/xlog.c:4819 -#, c-format -msgid "recovery_target_xid = %u" -msgstr "recovery_target_xid = %u" - -#: access/transam/xlog.c:4844 -#, c-format -msgid "recovery_target_time = '%s'" -msgstr "recovery_target_time = '%s'" - -#: access/transam/xlog.c:4855 -#, fuzzy -msgid "parameter \"recovery_target_inclusive\" requires a Boolean value" -msgstr "\"%s\" seçeneği boolean değerini alır" - -#: access/transam/xlog.c:4857 -#, c-format -msgid "recovery_target_inclusive = %s" -msgstr "recovery_target_inclusive = %s" - -#: access/transam/xlog.c:4861 -#, c-format -msgid "unrecognized recovery parameter \"%s\"" -msgstr "\"%s\" tanınmayan recovery parametresi" - -#: access/transam/xlog.c:4869 -#, c-format -msgid "syntax error in recovery command file: %s" -msgstr "%s recovery komut dosyasında sözdizimi hatası " - -#: access/transam/xlog.c:4871 -msgid "Lines should have the format parameter = 'value'." -msgstr "Satırların biçimi şöyle olmalıdır: parametre = 'değer'." - -#: access/transam/xlog.c:4876 -#, c-format -msgid "recovery command file \"%s\" did not specify restore_command" -msgstr "\"%s\"recovery komut dosyasında restore_command değeri belirtilmemiştir" - -#: access/transam/xlog.c:4895 -#, c-format -msgid "recovery target timeline %u does not exist" -msgstr "recovery_target_timeline %u mevcut değil" - -#: access/transam/xlog.c:5016 -msgid "archive recovery complete" -msgstr "archive recovery tamamlandı" - -#: access/transam/xlog.c:5106 -#, c-format -msgid "recovery stopping after commit of transaction %u, time %s" -msgstr "kurtarma işlemi %u transactionunun, %s zamanında commit edilmesinden sonra durdu" - -#: access/transam/xlog.c:5111 -#, c-format -msgid "recovery stopping before commit of transaction %u, time %s" -msgstr "kurtarma işlemi %u transactionunun, %s zamanında commit edilmesinden önce durdu" - -#: access/transam/xlog.c:5119 -#, c-format -msgid "recovery stopping after abort of transaction %u, time %s" -msgstr "kurtarma işlemi %u transactionunun, %s zamanunda iptal edilmesinden sonra duruyor" - -#: access/transam/xlog.c:5124 -#, c-format -msgid "recovery stopping before abort of transaction %u, time %s" -msgstr "kurtarma işlemi %u transactionunun, %s zamanunda iptal edilmesinden önce duruyor" - -#: access/transam/xlog.c:5174 -msgid "control file contains invalid data" -msgstr "kontrol dosyası geçersiz veri içeriyor" - -#: access/transam/xlog.c:5178 -#, c-format -msgid "database system was shut down at %s" -msgstr "veritabanı sunucusu %s tarihinde kapatıldı" - -#: access/transam/xlog.c:5182 -#, c-format -msgid "database system shutdown was interrupted; last known up at %s" -msgstr "veritabanı kapatma işlemi iptal edildi; bilinen en son çalışma zamanı %s" - -#: access/transam/xlog.c:5186 -#, c-format -msgid "database system was interrupted while in recovery at %s" -msgstr "%s'da recovery sırasında veritabanı sistemi durduruldu" - -#: access/transam/xlog.c:5188 -msgid "This probably means that some data is corrupted and you will have to use the last backup for recovery." -msgstr "Büyük ihtimalle veri bozulmuştur, kurtarmak için en son yedeğinizi kullanın." - -#: access/transam/xlog.c:5192 -#, c-format -msgid "database system was interrupted while in recovery at log time %s" -msgstr "log time %s'da recovery sırasında veritabanı sistemi kesildi" - -#: access/transam/xlog.c:5194 -msgid "If this has occurred more than once some data might be corrupted and you might need to choose an earlier recovery target." -msgstr "Bu hata birden fazla kere meydana geldiyse, veri bozulmuş olabilir. Bu durumda daha erken tarihli kurtarma hedefinini belirtmelisiniz." - -#: access/transam/xlog.c:5198 -#, c-format -msgid "database system was interrupted; last known up at %s" -msgstr "veritabanı sunucusu durdurulmuştur; bilinen en son çalışma zamanı %s" - -#: access/transam/xlog.c:5237 -#, c-format -msgid "requested timeline %u is not a child of database system timeline %u" -msgstr "talep edilmiş timeline %u veritabanı sistem timeline %u için geçerli bir timeline değildir" - -#: access/transam/xlog.c:5251 -#: access/transam/xlog.c:5275 -#, c-format -msgid "checkpoint record is at %X/%X" -msgstr "checkpoint kaydı %X/%X noktasındadır" - -#: access/transam/xlog.c:5258 -msgid "could not locate required checkpoint record" -msgstr "istenilen checkpoint kaydı bulunamadı" - -#: access/transam/xlog.c:5259 -#, c-format -msgid "If you are not restoring from a backup, try removing the file \"%s/backup_label\"." -msgstr "Yedekten geri almıyorsanız, \"%s/backup_label\" dosyasını silmeyi deneyin." - -#: access/transam/xlog.c:5285 -#, c-format -msgid "using previous checkpoint record at %X/%X" -msgstr "%X/%X adresindeki eski checkpoint kaydı kullanılıyor" - -#: access/transam/xlog.c:5291 -msgid "could not locate a valid checkpoint record" -msgstr "geçerli checkpoint kaydı bulunamıyor" - -#: access/transam/xlog.c:5300 -#, c-format -msgid "redo record is at %X/%X; shutdown %s" -msgstr "redo kaydı %X/%X; kapatma %s" - -#: access/transam/xlog.c:5304 -#, c-format -msgid "next transaction ID: %u/%u; next OID: %u" -msgstr "sıradaki transaction ID: %u/%u; sıradaki OID: %u" - -#: access/transam/xlog.c:5308 -#, c-format -msgid "next MultiXactId: %u; next MultiXactOffset: %u" -msgstr "sıradaki MultiXactId: %u; sıradaki MultiXactOffset: %u" - -#: access/transam/xlog.c:5312 -msgid "invalid next transaction ID" -msgstr "sıradaki transaction ID geçersiz" - -#: access/transam/xlog.c:5330 -msgid "invalid redo in checkpoint record" -msgstr "checkpoint kaydındaki redo geçersizdir" - -#: access/transam/xlog.c:5341 -msgid "invalid redo record in shutdown checkpoint" -msgstr "shutdown checkpointteki redo kaydı geçersizdir" - -#: access/transam/xlog.c:5366 -msgid "automatic recovery in progress" -msgstr "otomatik kurtarma sürüyor" - -#: access/transam/xlog.c:5372 -msgid "database system was not properly shut down; automatic recovery in progress" -msgstr "veritabanı düzgün kapatılmamış; otomatik kurtarma işlemi sürüyor" - -#: access/transam/xlog.c:5455 -#, c-format -msgid "redo starts at %X/%X" -msgstr "redo başlangıcı %X/%X" - -#: access/transam/xlog.c:5459 -#, c-format -msgid "redo starts at %X/%X, consistency will be reached at %X/%X" -msgstr "" - -#: access/transam/xlog.c:5528 -msgid "consistent recovery state reached" -msgstr "" - -#: access/transam/xlog.c:5582 -#, c-format -msgid "redo done at %X/%X" -msgstr "redo bitişi %X/%X" - -#: access/transam/xlog.c:5586 -#: access/transam/xlog.c:6717 -#, c-format -msgid "last completed transaction was at log time %s" -msgstr "son tamamlanan transaction %s kayıt zamanındaydı" - -#: access/transam/xlog.c:5594 -msgid "redo is not required" -msgstr "redo işlemi gerekmiyor" - -#: access/transam/xlog.c:5614 -#, fuzzy -msgid "requested recovery stop point is before consistent recovery point" -msgstr "talep edilen kurtarma durma noktası yedek dump'ının bitiş tarihinden öncedir" - -#: access/transam/xlog.c:5617 -msgid "WAL ends before consistent recovery point" -msgstr "" - -#: access/transam/xlog.c:5638 -#, c-format -msgid "selected new timeline ID: %u" -msgstr "seçili yeni timeline ID: %u" - -#: access/transam/xlog.c:5865 -msgid "invalid primary checkpoint link in control file" -msgstr "kontrol dosyasındaki ana checkpoint bağlantısı geçersiz" - -#: access/transam/xlog.c:5869 -msgid "invalid secondary checkpoint link in control file" -msgstr "kontrol dosyasındaki ikincil checkpoint bağlantısı geçersiz" - -#: access/transam/xlog.c:5873 -msgid "invalid checkpoint link in backup_label file" -msgstr "backup_label dosyasındaki checkpoint linki geçersiz" - -#: access/transam/xlog.c:5887 -msgid "invalid primary checkpoint record" -msgstr "birincil checkpoint kaydı geçersiz" - -#: access/transam/xlog.c:5891 -msgid "invalid secondary checkpoint record" -msgstr "ikincil checkpoint kaydı geçersiz" - -#: access/transam/xlog.c:5895 -msgid "invalid checkpoint record" -msgstr "geçersiz checkpoint kaydı" - -#: access/transam/xlog.c:5906 -msgid "invalid resource manager ID in primary checkpoint record" -msgstr "birincil checkpoint kaydındaki resource manager ID geçersiz" - -#: access/transam/xlog.c:5910 -msgid "invalid resource manager ID in secondary checkpoint record" -msgstr "ikincil checkpoint kaydındaki resource manager ID geçersiz" - -#: access/transam/xlog.c:5914 -msgid "invalid resource manager ID in checkpoint record" -msgstr "checkpoint kaydındaki resource manager ID geçersiz" - -#: access/transam/xlog.c:5926 -msgid "invalid xl_info in primary checkpoint record" -msgstr "primary checkpoint kaydındaki xl_info geçersiz" - -#: access/transam/xlog.c:5930 -msgid "invalid xl_info in secondary checkpoint record" -msgstr "ikincil checkpoint kaydındaki xl_info geçersiz" - -#: access/transam/xlog.c:5934 -msgid "invalid xl_info in checkpoint record" -msgstr "checkpoint kaydındaki xl_info geçersiz" - -#: access/transam/xlog.c:5946 -msgid "invalid length of primary checkpoint record" -msgstr "birincil checkpoint kaydının uzunluğu geçersiz" - -#: access/transam/xlog.c:5950 -msgid "invalid length of secondary checkpoint record" -msgstr "ikincil checkpoint kaydının uzunluğu geçersiz" - -#: access/transam/xlog.c:5954 -msgid "invalid length of checkpoint record" -msgstr "checkpoint kaydın uzunluğu geçersiz" - -#: access/transam/xlog.c:6088 -msgid "shutting down" -msgstr "kapanıyor" - -#: access/transam/xlog.c:6110 -msgid "database system is shut down" -msgstr "veritabanı sistemi kapandı" - -#: access/transam/xlog.c:6238 -msgid "hurrying in-progress restartpoint" -msgstr "" - -#: access/transam/xlog.c:6464 -msgid "concurrent transaction log activity while database system is shutting down" -msgstr "veritabanının kapanması sırasında eşzamanlı transaction log hareketi" - -#: access/transam/xlog.c:6644 -msgid "skipping restartpoint, recovery has already ended" -msgstr "restartpoint (yeniden başlama noktası) atlanıyor, kurtarma zaten sona erdi" - -#: access/transam/xlog.c:6669 -#, fuzzy, c-format -msgid "skipping restartpoint, already performed at %X/%X" -msgstr "%X/%X adresindeki eski checkpoint kaydı kullanılıyor" - -#: access/transam/xlog.c:6712 -#, c-format -msgid "recovery restart point at %X/%X" -msgstr "recoveri yeniden başlangıç noktası: %X/%X" - -#: access/transam/xlog.c:6835 -#, c-format -msgid "unexpected timeline ID %u (after %u) in checkpoint record" -msgstr "checkpoint kaydındaki beklenmeyen timeline ID %u (%u'dan sonra)" - -#: access/transam/xlog.c:6867 -#, c-format -msgid "unexpected timeline ID %u (should be %u) in checkpoint record" -msgstr "checkpoint kaydındaki beklenmeyen timeline ID %u (%u olmalıydı)" - -#: access/transam/xlog.c:7003 -#: access/transam/xlog.c:7026 -#, c-format -msgid "could not fsync log file %u, segment %u: %m" -msgstr "kayıt dosyası %u, segment %u fsync yapılamıyor: %m" - -#: access/transam/xlog.c:7034 -#, c-format -msgid "could not fsync write-through log file %u, segment %u: %m" -msgstr "write-through log dosyası %u, segment %u fsync yapılamıyor: %m" - -#: access/transam/xlog.c:7043 -#, c-format -msgid "could not fdatasync log file %u, segment %u: %m" -msgstr "kayıt dosyası %u, segment %u fdatasync yapılamıyor: %m" - -#: access/transam/xlog.c:7086 -#: access/transam/xlog.c:7273 -msgid "must be superuser to run a backup" -msgstr "yedeklemeyi gerçekleştirmek için superuser haklarına sahip olmalısınız" - -#: access/transam/xlog.c:7091 -#: access/transam/xlog.c:7097 -#: access/transam/xlog.c:7278 -msgid "WAL archiving is not active" -msgstr "WAL arşivleme etkin değil" - -#: access/transam/xlog.c:7092 -#: access/transam/xlog.c:7279 -msgid "archive_mode must be enabled at server start." -msgstr "archive_mode sunucu başlatıldığında etkinleştirilmedir." - -#: access/transam/xlog.c:7098 -msgid "archive_command must be defined before online backups can be made safely." -msgstr "online yedekleme güvenilir bir biçimde çalışması için, önce archive_command tanımlayın." - -#: access/transam/xlog.c:7126 -#: access/transam/xlog.c:7195 -msgid "a backup is already in progress" -msgstr "bir backup işlemi zaten aktif" - -#: access/transam/xlog.c:7127 -msgid "Run pg_stop_backup() and try again." -msgstr "pg_stop_backup() çalıştırıp yeniden deneyin." - -#: access/transam/xlog.c:7196 -#, c-format -msgid "If you're sure there is no backup in progress, remove file \"%s\" and try again." -msgstr "Eğer bir backup sürecinin şu an çalışmadığından eminseniz, \"%s\" dosyasını kaldırın ve yeniden deneyin." - -#: access/transam/xlog.c:7217 -#: access/transam/xlog.c:7354 -#, c-format -msgid "could not write file \"%s\": %m" -msgstr "\"%s\" dosyasına yazma hatası: %m" - -#: access/transam/xlog.c:7317 -msgid "a backup is not in progress" -msgstr "şu an backup süreci çalışmıyor" - -#: access/transam/xlog.c:7329 -#: access/transam/xlog.c:7670 -#: access/transam/xlog.c:7676 -#: access/transam/xlog.c:7707 -#: access/transam/xlog.c:7713 -#, c-format -msgid "invalid data in file \"%s\"" -msgstr "\"%s\" dosyasında geçersiz veri" - -#: access/transam/xlog.c:7409 -#, c-format -msgid "pg_stop_backup still waiting for archive to complete (%d seconds elapsed)" -msgstr "pg_stop_backup hala arşivin bitmesini bekliyor (%d saniyedir devam ediyor)" - -#: access/transam/xlog.c:7434 -msgid "must be superuser to switch transaction log files" -msgstr "transaction log dosyaları değiştirmek için superuser olmalısınız" - -#: access/transam/xlog.c:7531 -#: access/transam/xlog.c:7597 -#, c-format -msgid "could not parse transaction log location \"%s\"" -msgstr "\"%s\" transaction log konumu ayrıştıramadı" - -#: access/transam/xlog.c:7741 -#, c-format -msgid "xlog redo %s" -msgstr "xlog redo %s" - -#: access/transam/xlog.c:7781 -msgid "online backup mode cancelled" -msgstr "çevrimiçi yedekleme modu iptal edildi" - -#: access/transam/xlog.c:7782 -#, fuzzy, c-format -msgid "\"%s\" was renamed to \"%s\"." -msgstr "\"%s\" zaten \"%s\" nesnesinin alt nesnesidir" - -#: access/transam/xlog.c:7789 -msgid "online backup mode was not cancelled" -msgstr "çevrimiçi yedek modu iptal edilmedi" - -#: access/transam/xlog.c:7790 -#, fuzzy, c-format -msgid "Could not rename \"%s\" to \"%s\": %m." -msgstr "\"%s\" -- \"%s\" ad değiştirme hatası: %m" - -#: access/gin/ginarrayproc.c:30 -msgid "array must not contain null values" -msgstr "array null kayıtları içeremez" - -#: access/gin/ginscan.c:164 -#: access/gin/ginscan.c:227 -msgid "GIN indexes do not support whole-index scans" -msgstr "GIN dizinler tüm dizin taramasını desteklememektedir" - -#: access/nbtree/nbtinsert.c:300 -#, c-format -msgid "duplicate key value violates unique constraint \"%s\"" -msgstr "tekrar eden kayıt, \"%s\" tekil kısıtlamasını ihlal etmektedir" - -#: access/nbtree/nbtinsert.c:421 -#: access/nbtree/nbtsort.c:483 -#, c-format -msgid "index row size %lu exceeds btree maximum, %lu" -msgstr "%lu index satır boyutu, btree indexi için %lu olan en büyük satır büyüklüğünü aşmaktadır" - -#: access/nbtree/nbtinsert.c:424 -#: access/nbtree/nbtsort.c:486 -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 "" -"Bir buffer sayfasının boyutunun 1/3'ni geçen değerler indekslenemez.\n" -"Yerine değerinin MD5 hash'ı değeri üzerinde function index ya da full text indexing kullanabilirisiniz." - -#: access/nbtree/nbtpage.c:160 -#: access/nbtree/nbtpage.c:364 -#, c-format -msgid "index \"%s\" is not a btree" -msgstr "\"%s\" indexi btree değildir." - -#: access/nbtree/nbtpage.c:166 -#: access/nbtree/nbtpage.c:370 -#, c-format -msgid "version mismatch in index \"%s\": file version %d, code version %d" -msgstr "\"%s\" indexinde sürüm uyuşmazlığı: dosya sürümü %d, kod sürümü ise %d" - -#: access/heap/heapam.c:1073 -#: access/heap/heapam.c:1101 -#: access/heap/heapam.c:1131 -#: catalog/aclchk.c:880 -#, c-format -msgid "\"%s\" is an index" -msgstr "\"%s\" bir indextir" - -#: access/heap/heapam.c:1078 -#: access/heap/heapam.c:1106 -#: access/heap/heapam.c:1136 -#: catalog/aclchk.c:887 -#: commands/tablecmds.c:2061 -#: commands/tablecmds.c:6250 -#: commands/tablecmds.c:7541 -#, c-format -msgid "\"%s\" is a composite type" -msgstr "\"%s\" bir birleşik tiptir" - -#: access/heap/heapam.c:3150 -#: access/heap/heapam.c:3181 -#: access/heap/heapam.c:3216 -#, c-format -msgid "could not obtain lock on row in relation \"%s\"" -msgstr "\"%s\" tablosundaki satır için lock alınamadı" - -#: access/heap/hio.c:174 -#: access/heap/rewriteheap.c:592 -#, c-format -msgid "row is too big: size %lu, maximum size %lu" -msgstr "satır çok büyük: boyutu %lu, olabileceği en fazla boyut %lu" - -#: access/index/indexam.c:149 -#: commands/comment.c:502 -#: commands/indexcmds.c:1324 -#: commands/tablecmds.c:211 -#: commands/tablecmds.c:2258 -#, c-format -msgid "\"%s\" is not an index" -msgstr "\"%s\" bir index değildir" - -#: access/hash/hashinsert.c:77 -#, c-format -msgid "index row size %lu exceeds hash maximum %lu" -msgstr "index satır boyutu %lu, %lu olan en yüksek hash boyutunu aşmaktadır" - -#: access/hash/hashinsert.c:80 -msgid "Values larger than a buffer page cannot be indexed." -msgstr "Bir buffer sayfası boyutundan yüksek değerler indekslenemz." - -#: access/hash/hashovfl.c:546 -#, c-format -msgid "out of overflow pages in hash index \"%s\"" -msgstr " \"%s\" hash indexi içinde sayfa taşması hatası" - -#: access/hash/hashsearch.c:152 -msgid "hash indexes do not support whole-index scans" -msgstr "hash indexler tüm index taramasını desteklememektedir" - -#: access/hash/hashutil.c:208 -#, c-format -msgid "index \"%s\" is not a hash index" -msgstr "\"%s\" indexi bir hash indexi değildir" - -#: access/hash/hashutil.c:214 -#, c-format -msgid "index \"%s\" has wrong hash version" -msgstr "\"%s\" indexi yanlış hash sürümüne sahiptir" - -#: utils/mmgr/aset.c:386 -#, c-format -msgid "Failed while creating memory context \"%s\"." -msgstr "Memory content \"%s\" oluşturma başarısız." - -#: utils/mmgr/aset.c:565 -#: utils/mmgr/aset.c:748 -#: utils/mmgr/aset.c:954 -#, c-format -msgid "Failed on request of size %lu." -msgstr "%lu boyutu isteği başarısız" - -#: utils/mmgr/portalmem.c:207 -#, c-format -msgid "cursor \"%s\" already exists" -msgstr "cursor \"%s\" zaten mevcut" - -#: utils/mmgr/portalmem.c:211 -#, c-format -msgid "closing existing cursor \"%s\"" -msgstr "var olan cursor \"%s\" kapatılıyor" - -#: utils/mmgr/portalmem.c:590 -msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD" -msgstr "WITH HOLD imleci oluşturan transaction PREPARE edilemedi" - -#: utils/mmgr/portalmem.c:889 -#: utils/fmgr/funcapi.c:60 -#: commands/prepare.c:749 -#: executor/execQual.c:1473 -#: executor/execQual.c:1498 -#: executor/execQual.c:1859 -#: executor/execQual.c:5018 -#: executor/functions.c:644 -#: foreign/foreign.c:281 -msgid "set-valued function called in context that cannot accept a set" -msgstr "set değerini kabul etmediği ortamda set değeri alan fonksiyon çağırılmış" - -#: utils/mmgr/portalmem.c:893 -#: commands/prepare.c:753 -#: foreign/foreign.c:286 -msgid "materialize mode required, but it is not allowed in this context" -msgstr "materialize mode gerekir ancak bu bağlamda kullanılamaz" - -#: utils/adt/acl.c:160 -#: utils/adt/name.c:87 -msgid "identifier too long" -msgstr "tanımlayıcı fazla uzun" - -#: utils/adt/acl.c:161 -#: utils/adt/name.c:88 -#, c-format -msgid "Identifier must be less than %d characters." -msgstr "Tamılayıcı %d karakterden daha küçük olmalı." - -#: utils/adt/acl.c:247 -#, c-format -msgid "unrecognized key word: \"%s\"" -msgstr "anahtar kelimesi anlaşılamıyor: \"%s\"" - -#: utils/adt/acl.c:248 -msgid "ACL key word must be \"group\" or \"user\"." -msgstr "ACL anahtar kelimesi \"group\" veya \"user\" olmalıdır." - -#: utils/adt/acl.c:253 -msgid "missing name" -msgstr "isim eksik" - -#: utils/adt/acl.c:254 -msgid "A name must follow the \"group\" or \"user\" key word." -msgstr "\"group\" veya \"user\" anahter kelimesini isim izlemelidir." - -#: utils/adt/acl.c:260 -msgid "missing \"=\" sign" -msgstr "\"=\" işareti eksik" - -#: utils/adt/acl.c:313 -#, c-format -msgid "invalid mode character: must be one of \"%s\"" -msgstr "geçersiz biçim karakteri: şunlardan biri olmalıdır: \"%s\"" - -#: utils/adt/acl.c:335 -msgid "a name must follow the \"/\" sign" -msgstr "\"/\" karakterini bir isim izlemelidir" - -#: utils/adt/acl.c:343 -#, c-format -msgid "defaulting grantor to user ID %u" -msgstr "varsayılan bağışlayıcı kullanıcı ID %u" - -#: utils/adt/acl.c:433 -msgid "ACL array contains wrong data type" -msgstr "ACL array yanlış veri tipini içermektedir" - -#: utils/adt/acl.c:437 -msgid "ACL arrays must be one-dimensional" -msgstr "ACL array tek boyutlu olmalıdır" - -#: utils/adt/acl.c:441 -msgid "ACL arrays must not contain null values" -msgstr "ACL array null kayıtları içeremez" - -#: utils/adt/acl.c:465 -msgid "extra garbage at the end of the ACL specification" -msgstr "ACL tanımının sonunda fuzuli karakterler" - -#: utils/adt/acl.c:994 -msgid "grant options cannot be granted back to your own grantor" -msgstr "grant seçenekleri kendi kendine verilemez" - -#: utils/adt/acl.c:1055 -msgid "dependent privileges exist" -msgstr "bağlı haklar mevcut" - -#: utils/adt/acl.c:1056 -msgid "Use CASCADE to revoke them too." -msgstr "Onları da geri almak için CASCADE kullanın." - -#: utils/adt/acl.c:1335 -msgid "aclinsert is no longer supported" -msgstr "aclinsert artık desteklenmemktedir" - -#: utils/adt/acl.c:1345 -msgid "aclremove is no longer supported" -msgstr "aclremove artık desteklenmemktedir" - -#: utils/adt/acl.c:1431 -#: utils/adt/acl.c:1485 -#, c-format -msgid "unrecognized privilege type: \"%s\"" -msgstr "bilinmeyen hak türü: \"%s\"" - -#: utils/adt/acl.c:2303 -#: utils/adt/ruleutils.c:1358 -#: catalog/aclchk.c:636 -#: commands/analyze.c:276 -#: commands/comment.c:579 -#: commands/copy.c:3404 -#: commands/sequence.c:1301 -#: commands/tablecmds.c:3823 -#: commands/tablecmds.c:3915 -#: commands/tablecmds.c:3962 -#: commands/tablecmds.c:4058 -#: commands/tablecmds.c:4119 -#: commands/tablecmds.c:4183 -#: commands/tablecmds.c:5567 -#: commands/tablecmds.c:5705 -#: parser/analyze.c:1720 -#: parser/parse_relation.c:2056 -#: parser/parse_relation.c:2111 -#: parser/parse_target.c:804 -#: parser/parse_type.c:117 -#, c-format -msgid "column \"%s\" of relation \"%s\" does not exist" -msgstr "\"%s\" kolonu \"%s\" tablosunda mevcut değil" - -#: utils/adt/acl.c:2514 -#: utils/adt/dbsize.c:144 -#: utils/init/postinit.c:420 -#: utils/init/postinit.c:539 -#: utils/init/postinit.c:555 -#: catalog/aclchk.c:500 -#: commands/comment.c:626 -#: commands/dbcommands.c:759 -#: commands/dbcommands.c:903 -#: commands/dbcommands.c:1010 -#: commands/dbcommands.c:1187 -#: commands/dbcommands.c:1374 -#: commands/dbcommands.c:1446 -#: commands/dbcommands.c:1533 -#, c-format -msgid "database \"%s\" does not exist" -msgstr "\"%s\" veritabanı mevcut değil" - -#: utils/adt/acl.c:2909 -#: utils/adt/regproc.c:118 -#: utils/adt/regproc.c:139 -#: utils/adt/regproc.c:291 -#, c-format -msgid "function \"%s\" does not exist" -msgstr "\"%s\" fonksiyonu mevcut değil" - -#: utils/adt/acl.c:3115 -#: catalog/aclchk.c:528 -#: commands/comment.c:1195 -#: commands/functioncmds.c:805 -#: commands/proclang.c:433 -#: commands/proclang.c:506 -#: commands/proclang.c:550 -#, c-format -msgid "language \"%s\" does not exist" -msgstr "\"%s\" dili mevcut değil" - -#: utils/adt/acl.c:3321 -#: catalog/aclchk.c:548 -#: catalog/namespace.c:338 -#: catalog/namespace.c:2124 -#: catalog/namespace.c:2165 -#: catalog/namespace.c:2213 -#: catalog/namespace.c:3120 -#: commands/comment.c:736 -#: commands/schemacmds.c:190 -#: commands/schemacmds.c:267 -#: commands/schemacmds.c:343 -#, c-format -msgid "schema \"%s\" does not exist" -msgstr "\"%s\" şeması mevcut değil" - -#: utils/adt/acl.c:3695 -#: utils/adt/dbsize.c:240 -#: catalog/aclchk.c:577 -#: commands/comment.c:665 -#: commands/dbcommands.c:431 -#: commands/dbcommands.c:1043 -#: commands/indexcmds.c:212 -#: commands/tablecmds.c:400 -#: commands/tablecmds.c:6509 -#: commands/tablespace.c:415 -#: commands/tablespace.c:770 -#: commands/tablespace.c:837 -#: commands/tablespace.c:931 -#: commands/tablespace.c:1055 -#: executor/execMain.c:2884 -#, c-format -msgid "tablespace \"%s\" does not exist" -msgstr "\"%s\" tablespace'i mevcut değil" - -#: utils/adt/acl.c:4200 -#, c-format -msgid "must be member of role \"%s\"" -msgstr "\"%s\" rolüne dahil olmalıdır" - -#: utils/adt/array_userfuncs.c:49 -msgid "could not determine input data types" -msgstr "giriş veri tipleri belirlenemiyor" - -#: utils/adt/array_userfuncs.c:83 -msgid "neither input type is an array" -msgstr "giriş tiplerinin hiçbiri array değildir" - -#: utils/adt/array_userfuncs.c:104 -#: utils/adt/array_userfuncs.c:114 -#: utils/adt/float.c:1100 -#: utils/adt/float.c:1159 -#: utils/adt/float.c:2716 -#: utils/adt/float.c:2732 -#: utils/adt/int.c:613 -#: utils/adt/int.c:642 -#: utils/adt/int.c:663 -#: utils/adt/int.c:683 -#: utils/adt/int.c:705 -#: utils/adt/int.c:730 -#: utils/adt/int.c:744 -#: utils/adt/int.c:759 -#: utils/adt/int.c:894 -#: utils/adt/int.c:915 -#: utils/adt/int.c:942 -#: utils/adt/int.c:977 -#: utils/adt/int.c:998 -#: utils/adt/int.c:1025 -#: utils/adt/int.c:1052 -#: utils/adt/int.c:1106 -#: utils/adt/int8.c:1195 -#: utils/adt/numeric.c:2035 -#: utils/adt/numeric.c:2044 -#: utils/adt/varbit.c:1377 -msgid "integer out of range" -msgstr "integer sıra dışıdır" - -#: utils/adt/array_userfuncs.c:122 -msgid "argument must be empty or one-dimensional array" -msgstr "argüman boş veya tek boyutlu dizi olmalıdır" - -#: utils/adt/array_userfuncs.c:225 -#: utils/adt/array_userfuncs.c:264 -#: utils/adt/array_userfuncs.c:301 -#: utils/adt/array_userfuncs.c:330 -#: utils/adt/array_userfuncs.c:358 -msgid "cannot concatenate incompatible arrays" -msgstr "uyumsuz arrayları birleştirilemez" - -#: utils/adt/array_userfuncs.c:226 -#, c-format -msgid "Arrays with element types %s and %s are not compatible for concatenation." -msgstr "Öğe tipleri %s ve %s olan dizileri bitiştirmede kullanılamaz." - -#: utils/adt/array_userfuncs.c:265 -#, c-format -msgid "Arrays of %d and %d dimensions are not compatible for concatenation." -msgstr "Bitiştirmede %d ve %d boyutlu dizileri kullanılamaz." - -#: utils/adt/array_userfuncs.c:302 -msgid "Arrays with differing element dimensions are not compatible for concatenation." -msgstr "Bitiştirmede öğeleri farklı boyutlu olan dizileri kullanılamaz." - -#: utils/adt/array_userfuncs.c:331 -#: utils/adt/array_userfuncs.c:359 -msgid "Arrays with differing dimensions are not compatible for concatenation." -msgstr "Bitiştirmede farklı boyutlu dizileri kullanılamaz." - -#: utils/adt/array_userfuncs.c:425 -#: utils/adt/arrayfuncs.c:1186 -#: utils/adt/arrayfuncs.c:2841 -#: utils/adt/arrayfuncs.c:4521 -#, c-format -msgid "invalid number of dimensions: %d" -msgstr "boyut sayısı geçersiz: %d" - -#: utils/adt/array_userfuncs.c:429 -#: utils/adt/arrayfuncs.c:203 -#: utils/adt/arrayfuncs.c:455 -#: utils/adt/arrayfuncs.c:1190 -#: utils/adt/arrayfuncs.c:2845 -#: utils/adt/arrayfuncs.c:4525 -#: executor/execQual.c:293 -#: executor/execQual.c:321 -#: executor/execQual.c:2907 -#, c-format -msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" -msgstr "dizin boyut sayısı (%d), izin verilern en yüksek değerini (%d) aşmaktadır" - -#: utils/adt/array_userfuncs.c:485 -#, fuzzy -msgid "could not determine input data type" -msgstr "giriş veri tipleri belirlenemiyor" - -#: utils/adt/arrayfuncs.c:210 -#: utils/adt/arrayfuncs.c:222 -msgid "missing dimension value" -msgstr "boyut değeri eksik" - -#: utils/adt/arrayfuncs.c:232 -msgid "missing \"]\" in array dimensions" -msgstr "array tanımında \"]\" eksik" - -#: utils/adt/arrayfuncs.c:240 -#: utils/adt/arrayfuncs.c:2370 -#: utils/adt/arrayfuncs.c:2398 -#: utils/adt/arrayfuncs.c:2413 -msgid "upper bound cannot be less than lower bound" -msgstr "üst sınır alt sınırından düşük olamaz" - -#: utils/adt/arrayfuncs.c:252 -#: utils/adt/arrayfuncs.c:278 -msgid "array value must start with \"{\" or dimension information" -msgstr "array değeri ya \"{\" ile ya da boyut bilgisi ile başlamalıdır" - -#: utils/adt/arrayfuncs.c:266 -msgid "missing assignment operator" -msgstr "atama işlemi eksik" - -#: utils/adt/arrayfuncs.c:283 -#: utils/adt/arrayfuncs.c:289 -msgid "array dimensions incompatible with array literal" -msgstr "array boyutları array değişmezi ile uyumsuz" - -#: utils/adt/arrayfuncs.c:392 -#: utils/adt/arrayfuncs.c:407 -#: utils/adt/arrayfuncs.c:416 -#: utils/adt/arrayfuncs.c:430 -#: utils/adt/arrayfuncs.c:450 -#: utils/adt/arrayfuncs.c:478 -#: utils/adt/arrayfuncs.c:483 -#: utils/adt/arrayfuncs.c:523 -#: utils/adt/arrayfuncs.c:544 -#: utils/adt/arrayfuncs.c:563 -#: utils/adt/arrayfuncs.c:673 -#: utils/adt/arrayfuncs.c:682 -#: utils/adt/arrayfuncs.c:712 -#: utils/adt/arrayfuncs.c:727 -#: utils/adt/arrayfuncs.c:780 -#, c-format -msgid "malformed array literal: \"%s\"" -msgstr "array literal bozuk: \"%s\"" - -#: utils/adt/arrayfuncs.c:490 -#: executor/execQual.c:2927 -#: executor/execQual.c:2954 -msgid "multidimensional arrays must have array expressions with matching dimensions" -msgstr "çok boyutlu dizinler boyut sayısı kadar dizin ifade sayısına sahip olmalıdırlar" - -#: utils/adt/arrayfuncs.c:819 -#: utils/adt/arrayfuncs.c:1407 -#: utils/adt/arrayfuncs.c:2725 -#: utils/adt/arrayfuncs.c:2873 -#: utils/adt/arrayfuncs.c:4621 -#: 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 "dizin boyutu izin verilern en yüksek değerini (%d) aşmaktadır" - -#: utils/adt/arrayfuncs.c:1197 -msgid "invalid array flags" -msgstr "array flags geçersiz" - -#: utils/adt/arrayfuncs.c:1205 -msgid "wrong element type" -msgstr "element tipi yanlış" - -#: utils/adt/arrayfuncs.c:1241 -#: utils/cache/lsyscache.c:2394 -#, c-format -msgid "no binary input function available for type %s" -msgstr "%s tipi için ikili giriş fonksiyonu mevcut değil" - -#: utils/adt/arrayfuncs.c:1381 -#, c-format -msgid "improper binary format in array element %d" -msgstr "%d dizi öğesi için geçersiz ikili biçimi" - -#: utils/adt/arrayfuncs.c:1463 -#: utils/cache/lsyscache.c:2429 -#, c-format -msgid "no binary output function available for type %s" -msgstr "%s tipi için ikili çıkış fonksiyonu mevcut değil" - -#: utils/adt/arrayfuncs.c:1837 -msgid "slices of fixed-length arrays not implemented" -msgstr "sabit-uzunluklu dizinlerin dilimleri implemente edilmemiş" - -#: utils/adt/arrayfuncs.c:2010 -#: utils/adt/arrayfuncs.c:2032 -#: utils/adt/arrayfuncs.c:2066 -#: utils/adt/arrayfuncs.c:2352 -#: utils/adt/arrayfuncs.c:4501 -#: utils/adt/arrayfuncs.c:4533 -#: utils/adt/arrayfuncs.c:4550 -msgid "wrong number of array subscripts" -msgstr "array subscript sayısı yanlış" - -#: utils/adt/arrayfuncs.c:2015 -#: utils/adt/arrayfuncs.c:2108 -#: utils/adt/arrayfuncs.c:2403 -msgid "array subscript out of range" -msgstr "array subscript kapsam dsışıdır" - -#: utils/adt/arrayfuncs.c:2020 -msgid "cannot assign null value to an element of a fixed-length array" -msgstr "sabit uzunluklu array elementine null değeri atanamaz" - -#: utils/adt/arrayfuncs.c:2306 -msgid "updates on slices of fixed-length arrays not implemented" -msgstr "sabit-uzunluklu dizinlerin dilimleri üzerinde update implemente edilmemiş" - -#: utils/adt/arrayfuncs.c:2342 -#: utils/adt/arrayfuncs.c:2429 -msgid "source array too small" -msgstr "kaynak array küçük" - -#: utils/adt/arrayfuncs.c:2980 -msgid "null array element not allowed in this context" -msgstr "bu ortamda null array elementi kabul edilmemektedir" - -#: utils/adt/arrayfuncs.c:3041 -#: utils/adt/arrayfuncs.c:3248 -#: utils/adt/arrayfuncs.c:3448 -msgid "cannot compare arrays of different element types" -msgstr "farklı öğe tipli dizinleri karşılaştırılamaz" - -#: utils/adt/arrayfuncs.c:3064 -#: utils/adt/arrayfuncs.c:3465 -#: utils/adt/rowtypes.c:1133 -#: parser/parse_oper.c:259 -#, c-format -msgid "could not identify an equality operator for type %s" -msgstr "%s tipi için eşitleme işlemi bulunamadı " - -#: utils/adt/arrayfuncs.c:3265 -#: utils/adt/rowtypes.c:907 -#: executor/execQual.c:4674 -#, c-format -msgid "could not identify a comparison function for type %s" -msgstr "%s tipi için karşılaştırma fonksiyonu bulunamadı" - -#: utils/adt/arrayfuncs.c:4399 -#: utils/adt/arrayfuncs.c:4439 -msgid "dimension array or low bound array cannot be NULL" -msgstr "" - -#: utils/adt/arrayfuncs.c:4502 -#: utils/adt/arrayfuncs.c:4534 -#, fuzzy -msgid "Dimension array must be one dimensional." -msgstr "typmod array tek boyutlu olmalıdır" - -#: utils/adt/arrayfuncs.c:4507 -#: utils/adt/arrayfuncs.c:4539 -#, fuzzy -msgid "wrong range of array subscripts" -msgstr "array subscript sayısı yanlış" - -#: utils/adt/arrayfuncs.c:4508 -#: utils/adt/arrayfuncs.c:4540 -msgid "Lower bound of dimension array must be one." -msgstr "" - -#: utils/adt/arrayfuncs.c:4513 -#: utils/adt/arrayfuncs.c:4545 -#, fuzzy -msgid "dimension values cannot be null" -msgstr "oturum kullanıcısının adı değiştirilemez" - -#: utils/adt/arrayfuncs.c:4551 -msgid "Low bound array has different size than dimensions array." -msgstr "" - -#: utils/adt/arrayutils.c:209 -#, fuzzy -msgid "typmod array must be type cstring[]" -msgstr "typmod array tamsyı tipinde olmalıdır" - -#: utils/adt/arrayutils.c:214 -msgid "typmod array must be one-dimensional" -msgstr "typmod array tek boyutlu olmalıdır" - -#: utils/adt/arrayutils.c:219 -msgid "typmod array must not contain nulls" -msgstr "typmod array null kayıtları içeremez" - -#: utils/adt/ascii.c:75 -#, c-format -msgid "encoding conversion from %s to ASCII not supported" -msgstr "%s karakter tipinden ASCII karakter tipine dönüştürme desteklenmiyor" - -#: utils/adt/ascii.c:126 -#: commands/dbcommands.c:234 -#, c-format -msgid "%s is not a valid encoding name" -msgstr "%s geçerli bir dil kodlaması adı değildir" - -#: utils/adt/ascii.c:144 -#: commands/dbcommands.c:224 -#, c-format -msgid "%d is not a valid encoding code" -msgstr "%d geçerli bir dil kodlaması değildir" - -#: utils/adt/bool.c:153 -#, c-format -msgid "invalid input syntax for type boolean: \"%s\"" -msgstr "boolean tipi için geçersiz giriş siz dizimi: \"%s\"" - -#: utils/adt/cash.c:232 -#, c-format -msgid "invalid input syntax for type money: \"%s\"" -msgstr "money tipi için geçersiz giriş siz dizimi: \"%s\"" - -#: utils/adt/cash.c:524 -#: utils/adt/cash.c:575 -#: utils/adt/cash.c:624 -#: utils/adt/cash.c:676 -#: utils/adt/cash.c:726 -#: utils/adt/float.c:763 -#: utils/adt/float.c:827 -#: utils/adt/float.c:2475 -#: utils/adt/float.c:2538 -#: utils/adt/geo_ops.c:3959 -#: utils/adt/int.c:719 -#: utils/adt/int.c:860 -#: utils/adt/int.c:955 -#: utils/adt/int.c:1039 -#: utils/adt/int.c:1065 -#: utils/adt/int.c:1085 -#: utils/adt/int8.c:604 -#: utils/adt/int8.c:651 -#: utils/adt/int8.c:829 -#: utils/adt/int8.c:924 -#: utils/adt/int8.c:1008 -#: utils/adt/int8.c:1103 -#: utils/adt/numeric.c:4183 -#: utils/adt/numeric.c:4466 -#: utils/adt/timestamp.c:2865 -msgid "division by zero" -msgstr "sıfırla bölüm" - -#: utils/adt/char.c:169 -msgid "\"char\" out of range" -msgstr "\"char\" sıra dışıdır" - -#: utils/adt/date.c:66 -#: utils/adt/timestamp.c:92 -#: utils/adt/varbit.c:44 -#: utils/adt/varchar.c:43 -msgid "invalid type modifier" -msgstr "tip belirteci geçersiz" - -#: utils/adt/date.c:71 -#, c-format -msgid "TIME(%d)%s precision must not be negative" -msgstr "TIME(%d)%s kesinliği sıfırdan küçük olamaz" - -#: utils/adt/date.c:77 -#, c-format -msgid "TIME(%d)%s precision reduced to maximum allowed, %d" -msgstr "TIME(%d)%s kesinliği en yüksek değerine (%d) kadar düşürüldü" - -#: utils/adt/date.c:142 -#: utils/adt/datetime.c:1181 -#: utils/adt/datetime.c:1926 -msgid "date/time value \"current\" is no longer supported" -msgstr "\"current\" tarih/saat değeri artık desteklenmiyor" - -#: utils/adt/date.c:167 -#, c-format -msgid "date out of range: \"%s\"" -msgstr "date kapsam dışıdır: \"%s\"" - -#: utils/adt/date.c:347 -#, fuzzy -msgid "cannot subtract infinite dates" -msgstr "sonsuz timestap veri tipi üzerinde çıkarma işlemi yapılamaz" - -#: utils/adt/date.c:404 -#: utils/adt/date.c:441 -msgid "date out of range for timestamp" -msgstr "timestamp için tarih aralık dışıdır" - -#: utils/adt/date.c:868 -#: utils/adt/date.c:915 -#: utils/adt/date.c:1471 -#: utils/adt/date.c:1508 -#: utils/adt/date.c:2382 -#: utils/adt/formatting.c:2961 -#: utils/adt/formatting.c:2993 -#: utils/adt/formatting.c:3061 -#: 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:264 -#: utils/adt/timestamp.c:486 -#: utils/adt/timestamp.c:526 -#: utils/adt/timestamp.c:2525 -#: utils/adt/timestamp.c:2546 -#: utils/adt/timestamp.c:2559 -#: utils/adt/timestamp.c:2568 -#: utils/adt/timestamp.c:2626 -#: utils/adt/timestamp.c:2649 -#: utils/adt/timestamp.c:2662 -#: utils/adt/timestamp.c:2673 -#: utils/adt/timestamp.c:3103 -#: utils/adt/timestamp.c:3233 -#: utils/adt/timestamp.c:3274 -#: utils/adt/timestamp.c:3362 -#: utils/adt/timestamp.c:3409 -#: utils/adt/timestamp.c:3520 -#: utils/adt/timestamp.c:3833 -#: utils/adt/timestamp.c:3970 -#: utils/adt/timestamp.c:3977 -#: utils/adt/timestamp.c:3991 -#: utils/adt/timestamp.c:4001 -#: utils/adt/timestamp.c:4064 -#: utils/adt/timestamp.c:4204 -#: utils/adt/timestamp.c:4214 -#: utils/adt/timestamp.c:4429 -#: utils/adt/timestamp.c:4508 -#: utils/adt/timestamp.c:4515 -#: utils/adt/timestamp.c:4542 -#: utils/adt/timestamp.c:4546 -#: utils/adt/timestamp.c:4603 -#: utils/adt/xml.c:1689 -#: utils/adt/xml.c:1696 -#: utils/adt/xml.c:1716 -#: utils/adt/xml.c:1723 -msgid "timestamp out of range" -msgstr "timestamp sıra dışıdır" - -#: utils/adt/date.c:941 -msgid "cannot convert reserved abstime value to date" -msgstr "ayrılmış abstime değeri tarihe çevrilemez" - -#: utils/adt/date.c:1095 -#: utils/adt/date.c:1102 -#: utils/adt/date.c:1870 -#: utils/adt/date.c:1877 -#, fuzzy -msgid "time out of range" -msgstr "date kapsam dışıdır: \"%s\"" - -#: utils/adt/date.c:1748 -#: utils/adt/date.c:1765 -#, c-format -msgid "\"time\" units \"%s\" not recognized" -msgstr "\"time\" birimi \"%s\" tanınmadı" - -#: utils/adt/date.c:1887 -#, fuzzy -msgid "time zone displacement out of range" -msgstr "yer değiştirme değeri kapsam dışında: \"%s\"" - -#: utils/adt/date.c:2512 -#: utils/adt/date.c:2529 -#, c-format -msgid "\"time with time zone\" units \"%s\" not recognized" -msgstr "\"%s\" birimi \"time with time zone\" veri tipi için tanımlı değildir" - -#: utils/adt/date.c:2587 -#: utils/adt/datetime.c:925 -#: utils/adt/datetime.c:1657 -#: utils/adt/timestamp.c:4441 -#: utils/adt/timestamp.c:4614 -#, c-format -msgid "time zone \"%s\" not recognized" -msgstr "time zone \"%s\" tanınmadı" - -#: utils/adt/date.c:2627 -#, c-format -msgid "\"interval\" time zone \"%s\" not valid" -msgstr "\"%s\" \"interval\" saat dilim geçersizdir" - -#: utils/adt/datetime.c:3513 -#: utils/adt/datetime.c:3520 -#, c-format -msgid "date/time field value out of range: \"%s\"" -msgstr "date/time alan değieri kapsam dışıdır: \"%s\"" - -#: utils/adt/datetime.c:3522 -msgid "Perhaps you need a different \"datestyle\" setting." -msgstr "Mutemelen farklı \"datestyle\" ayarınıza gerek var." - -#: utils/adt/datetime.c:3527 -#, c-format -msgid "interval field value out of range: \"%s\"" -msgstr "interval alan değeri kapsam dışında: \"%s\"" - -#: utils/adt/datetime.c:3533 -#, c-format -msgid "time zone displacement out of range: \"%s\"" -msgstr "yer değiştirme değeri kapsam dışında: \"%s\"" - -#. translator: first %s is inet or cidr -#: utils/adt/datetime.c:3540 -#: utils/adt/network.c:107 -#, c-format -msgid "invalid input syntax for type %s: \"%s\"" -msgstr "%s tipi için geçersiz giriş sözdizimi: \"%s\"" - -#: utils/adt/datum.c:80 -#: utils/adt/datum.c:92 -msgid "invalid Datum pointer" -msgstr "geçersiz Datum pointer" - -#: utils/adt/dbsize.c:102 -#: utils/adt/dbsize.c:189 -#, c-format -msgid "could not open tablespace directory \"%s\": %m" -msgstr "\"%s\" tablespace dizini açılamıyor: %m" - -#: utils/adt/dbsize.c:122 -#: catalog/aclchk.c:2486 -#: catalog/aclchk.c:3499 -#, c-format -msgid "database with OID %u does not exist" -msgstr "%u OID'li veritabanı mevcut değil" - -#: utils/adt/domains.c:80 -#, c-format -msgid "type %s is not a domain" -msgstr "%s tipi bir domain değildir" - -#: utils/adt/domains.c:128 -#: executor/execQual.c:3699 -#, c-format -msgid "domain %s does not allow null values" -msgstr "%s domaini null değerleri almamaktadır" - -#: utils/adt/domains.c:164 -#: executor/execQual.c:3728 -#, c-format -msgid "value for domain %s violates check constraint \"%s\"" -msgstr "%s domaine kaydedilecek değer \"%s\" check kısıtlamasını desteklememektedir" - -#: utils/adt/encode.c:55 -#: utils/adt/encode.c:91 -#, c-format -msgid "unrecognized encoding: \"%s\"" -msgstr "tanınmayan kodlama adı \"%s\"" - -#: utils/adt/encode.c:150 -#, c-format -msgid "invalid hexadecimal digit: \"%c\"" -msgstr "onaltılık rakam \"%c\" geçersiz" - -#: utils/adt/encode.c:178 -msgid "invalid hexadecimal data: odd number of digits" -msgstr "geçersiz hexadecimal veri: rakam sayısı tektir" - -#: utils/adt/encode.c:295 -msgid "unexpected \"=\"" -msgstr "beklenmeyen \"=\"" - -#: utils/adt/encode.c:307 -msgid "invalid symbol" -msgstr "geçersiz sembol" - -#: utils/adt/encode.c:327 -msgid "invalid end sequence" -msgstr "geçersiz end sequence" - -#: utils/adt/encode.c:441 -#: utils/adt/encode.c:506 -#: utils/adt/varlena.c:211 -#: utils/adt/varlena.c:252 -msgid "invalid input syntax for type bytea" -msgstr "bytea giriş tipi için geçersiz söz dizimi" - -#: utils/adt/enum.c:44 -#: utils/adt/enum.c:55 -#: utils/adt/enum.c:108 -#: utils/adt/enum.c:119 -#, c-format -msgid "invalid input value for enum %s: \"%s\"" -msgstr "%s enum tipi için geçersiz değer: \"%s\"" - -#: utils/adt/enum.c:80 -#: utils/adt/enum.c:146 -#, c-format -msgid "invalid internal value for enum: %u" -msgstr "enum için geçersiz iç değer: %u" - -#: utils/adt/enum.c:266 -#: utils/adt/enum.c:307 -#: utils/adt/enum.c:356 -#: utils/adt/enum.c:376 -msgid "could not determine actual enum type" -msgstr "gerçek enum veri tipli belirlenemiyor" - -#: utils/adt/float.c:54 -msgid "value out of range: overflow" -msgstr "değer kapsam dışıdır: overflow" - -#: utils/adt/float.c:59 -msgid "value out of range: underflow" -msgstr "değer kapsam dışıdır: underflow" - -#: utils/adt/float.c:205 -#: utils/adt/float.c:246 -#: utils/adt/float.c:297 -#, c-format -msgid "invalid input syntax for type real: \"%s\"" -msgstr "real tipi için geçersiz biçim: \"%s\"" - -#: utils/adt/float.c:241 -#, c-format -msgid "\"%s\" is out of range for type real" -msgstr "real tipi için kapsam dışı bir değer \"%s\"" - -#: utils/adt/float.c:398 -#: utils/adt/float.c:439 -#: utils/adt/float.c:490 -#: utils/adt/numeric.c:3645 -#: utils/adt/numeric.c:3671 -#, c-format -msgid "invalid input syntax for type double precision: \"%s\"" -msgstr "double precision tipi için geçersiz biçim: \"%s\"" - -#: utils/adt/float.c:434 -#, c-format -msgid "\"%s\" is out of range for type double precision" -msgstr "double precision tipi için kapsam dışı bir değer \"%s\"" - -#: utils/adt/float.c:1118 -#: utils/adt/float.c:1176 -#: utils/adt/int.c:339 -#: utils/adt/int.c:775 -#: utils/adt/int.c:804 -#: utils/adt/int.c:825 -#: utils/adt/int.c:845 -#: utils/adt/int.c:873 -#: utils/adt/int.c:1121 -#: utils/adt/int8.c:1220 -#: utils/adt/numeric.c:2136 -#: utils/adt/numeric.c:2147 -msgid "smallint out of range" -msgstr "smallint sıra dışıdır" - -#: utils/adt/float.c:1302 -#: utils/adt/numeric.c:4859 -msgid "cannot take square root of a negative number" -msgstr "sıfırdan küçük sayıdan kare kökü alınamaz" - -#: utils/adt/float.c:1344 -#: utils/adt/numeric.c:1948 -#, fuzzy -msgid "zero raised to a negative power is undefined" -msgstr "sıfırın sıfır katı belirsiz" - -#: utils/adt/float.c:1348 -#: utils/adt/numeric.c:1954 -msgid "a negative number raised to a non-integer power yields a complex result" -msgstr "" - -#: utils/adt/float.c:1414 -#: utils/adt/float.c:1444 -#: utils/adt/numeric.c:5077 -msgid "cannot take logarithm of zero" -msgstr "sıfırın logaritması hesaplanamaz" - -#: utils/adt/float.c:1418 -#: utils/adt/float.c:1448 -#: utils/adt/numeric.c:5081 -msgid "cannot take logarithm of a negative number" -msgstr "sıfırdan küçük sayıdan logaritması alınamaz" - -#: utils/adt/float.c:1475 -#: utils/adt/float.c:1496 -#: utils/adt/float.c:1517 -#: utils/adt/float.c:1539 -#: utils/adt/float.c:1560 -#: utils/adt/float.c:1581 -#: utils/adt/float.c:1603 -#: utils/adt/float.c:1624 -msgid "input is out of range" -msgstr "giriş sıra dısışıdır" - -#: utils/adt/float.c:2692 -#: utils/adt/numeric.c:955 -msgid "count must be greater than zero" -msgstr "sayısı sıfırdan büyük olmalı" - -#: utils/adt/float.c:2697 -#: utils/adt/numeric.c:962 -msgid "operand, lower bound and upper bound cannot be NaN" -msgstr "işlenenin alt ve üst sınırı NaN olamaz" - -#: utils/adt/float.c:2703 -msgid "lower and upper bounds must be finite" -msgstr "alt ve üst sınırları sonsuz olamaz" - -#: utils/adt/float.c:2741 -#: utils/adt/numeric.c:975 -msgid "lower bound cannot equal upper bound" -msgstr "alt sınır üst sınırı ile eşit olamaz" - -#: utils/adt/formatting.c:489 -msgid "invalid format specification for an interval value" -msgstr "interval değer biçimi yalnış" - -#: utils/adt/formatting.c:490 -msgid "Intervals are not tied to specific calendar dates." -msgstr "interval belli takvim tarihlerine bağlı değildir." - -#: utils/adt/formatting.c:1055 -msgid "\"9\" must be ahead of \"PR\"" -msgstr "\"9\", \"PR\"'dan önce olmalıdır" - -#: utils/adt/formatting.c:1074 -msgid "\"0\" must be ahead of \"PR\"" -msgstr "\"0\", \"PR\"'dan önce olmalıdır" - -#: utils/adt/formatting.c:1103 -msgid "multiple decimal points" -msgstr "birden fazla ondalık ayraç" - -#: utils/adt/formatting.c:1110 -#: utils/adt/formatting.c:1214 -msgid "cannot use \"V\" and decimal point together" -msgstr "\"V\" ve ondalık virgül bir arada kullanılamaz" - -#: utils/adt/formatting.c:1125 -#, fuzzy -msgid "cannot use \"S\" twice" -msgstr "\"S\" ve \"MI\" birlikte kullanılamaz" - -#: utils/adt/formatting.c:1132 -msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" -msgstr "\"S\" ve \"PL\"/\"MI\"/\"SG\"/\"PR\" bir arada kullanılamaz" - -#: utils/adt/formatting.c:1155 -msgid "cannot use \"S\" and \"MI\" together" -msgstr "\"S\" ve \"MI\" birlikte kullanılamaz" - -#: utils/adt/formatting.c:1168 -msgid "cannot use \"S\" and \"PL\" together" -msgstr "\"S\" ve \"PL\" birlikte kullanılamaz" - -#: utils/adt/formatting.c:1181 -msgid "cannot use \"S\" and \"SG\" together" -msgstr "\"S\" ve \"SG\" birlikte kullanılamaz" - -#: utils/adt/formatting.c:1193 -msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" -msgstr "\"PR\" ve \"S\"/\"PL\"/\"MI\"/\"SG\" bir arada kullanılamaz" - -#: utils/adt/formatting.c:1223 -msgid "\"E\" is not supported" -msgstr "\"E\" desteklenmiyor" - -#: utils/adt/formatting.c:1413 -#, c-format -msgid "\"%s\" is not a number" -msgstr "\"%s\" bir sayı değildir" - -#: utils/adt/formatting.c:1790 -#, fuzzy -msgid "invalid combination of date conventions" -msgstr "geçersiz bağlantı seçeneği \"%s\"\n" - -#: utils/adt/formatting.c:1791 -msgid "Do not mix Gregorian and ISO week date conventions in a formatting template." -msgstr "" - -#: utils/adt/formatting.c:1808 -#, c-format -msgid "conflicting values for \"%s\" field in formatting string" -msgstr "" - -#: utils/adt/formatting.c:1810 -msgid "This value contradicts a previous setting for the same field type." -msgstr "" - -#: utils/adt/formatting.c:1871 -#, c-format -msgid "source string too short for \"%s\" formatting field" -msgstr "" - -#: utils/adt/formatting.c:1873 -#, c-format -msgid "Field requires %d characters, but only %d remain." -msgstr "Alan %d karakter gerektiriyor, ama %d kaldı." - -#: utils/adt/formatting.c:1876 -#: utils/adt/formatting.c:1890 -msgid "If your source string is not fixed-width, try using the \"FM\" modifier." -msgstr "" - -#: utils/adt/formatting.c:1886 -#: utils/adt/formatting.c:1899 -#: utils/adt/formatting.c:2029 -#, fuzzy, c-format -msgid "invalid value \"%s\" for \"%s\"" -msgstr "%s için geçersiz değer" - -#: utils/adt/formatting.c:1888 -#, c-format -msgid "Field requires %d characters, but only %d could be parsed." -msgstr "" - -#: utils/adt/formatting.c:1901 -msgid "Value must be an integer." -msgstr "Değer tamsayı olmalıdır." - -#: utils/adt/formatting.c:1906 -#, fuzzy, c-format -msgid "value for \"%s\" in source string is out of range" -msgstr "oid tipi için \"%s\" değeri sıra dışıdır" - -#: utils/adt/formatting.c:1908 -#, c-format -msgid "Value must be in the range %d to %d." -msgstr "" - -#: utils/adt/formatting.c:2031 -msgid "The given value did not match any of the allowed values for this field." -msgstr "" - -#: utils/adt/formatting.c:2593 -#, fuzzy -msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date" -msgstr "bu platformda tablespace desteklenmiyor" - -#: utils/adt/formatting.c:2694 -#, fuzzy -msgid "invalid input string for \"Y,YYY\"" -msgstr "uuid tipi için geçersiz söz dizimi: \"%s\"" - -#: utils/adt/formatting.c:3208 -#, c-format -msgid "hour \"%d\" is invalid for the 12-hour clock" -msgstr "" - -#: utils/adt/formatting.c:3210 -msgid "Use the 24-hour clock, or give an hour between 1 and 12." -msgstr "" - -#: utils/adt/formatting.c:3248 -#, c-format -msgid "inconsistent use of year %04d and \"BC\"" -msgstr "tutarsız %04d tıl ve \"BC\" tanımının kullanımı" - -#: utils/adt/formatting.c:3295 -msgid "cannot calculate day of year without year information" -msgstr "yıl bilgisi olmadan yılın günü hesaplanamaz" - -#: utils/adt/formatting.c:4156 -msgid "\"RN\" not supported" -msgstr "\"RN\" desteklenmiyor" - -#: utils/adt/genfile.c:57 -msgid "reference to parent directory (\"..\") not allowed" -msgstr "(\"..\") ile üst dizin referansı yapılamaz" - -#: utils/adt/genfile.c:71 -msgid "absolute path not allowed" -msgstr "absolute path kullanılamaz" - -#: utils/adt/genfile.c:98 -msgid "must be superuser to read files" -msgstr "dosyaları okumak için superuser olmalısınız" - -#: utils/adt/genfile.c:105 -#: commands/copy.c:1748 -#, c-format -msgid "could not open file \"%s\" for reading: %m" -msgstr "\"%s\" dosyası, okunmak için açılamadı: %m" - -#: utils/adt/genfile.c:112 -#, c-format -msgid "could not seek in file \"%s\": %m" -msgstr "\"%s\" dosyası ilerleme hatası: %m" - -#: utils/adt/genfile.c:117 -msgid "requested length cannot be negative" -msgstr "istenilen uzunluk negatif olamaz" - -#: utils/adt/genfile.c:123 -#: utils/adt/oracle_compat.c:181 -#: utils/adt/oracle_compat.c:279 -#: utils/adt/oracle_compat.c:755 -#: utils/adt/oracle_compat.c:1045 -msgid "requested length too large" -msgstr "istenen uzunluk çok büyük" - -#: utils/adt/genfile.c:159 -msgid "must be superuser to get file information" -msgstr "dosya bilgisini almak için superuser olmalısınız" - -#: utils/adt/genfile.c:223 -msgid "must be superuser to get directory listings" -msgstr "dizindeki dosya listesini görmek için superuser olmalısınız" - -#: utils/adt/genfile.c:240 -#: utils/adt/misc.c:210 -#: utils/misc/tzparser.c:345 -#: commands/tablespace.c:581 -#: storage/file/fd.c:1530 -#: postmaster/postmaster.c:1089 -#: ../port/copydir.c:65 -#, c-format -msgid "could not open directory \"%s\": %m" -msgstr "\"%s\" dizini açılamıyor: %m" - -#: utils/adt/geo_ops.c:292 -#: utils/adt/geo_ops.c:4080 -#: utils/adt/geo_ops.c:4997 -msgid "too many points requested" -msgstr "sayı içindeki ondalık nokta sayısı çok fazla" - -#: utils/adt/geo_ops.c:315 -msgid "could not format \"path\" value" -msgstr "\"path\" değeri biçimlendirilemiyor" - -#: utils/adt/geo_ops.c:390 -#, c-format -msgid "invalid input syntax for type box: \"%s\"" -msgstr "box tipi için geçersiz biçim: \"%s\"" - -#: utils/adt/geo_ops.c:954 -#, c-format -msgid "invalid input syntax for type line: \"%s\"" -msgstr "line tipi için geçersiz biçim: \"%s\"" - -#: utils/adt/geo_ops.c:961 -#: utils/adt/geo_ops.c:1028 -#: utils/adt/geo_ops.c:1043 -#: utils/adt/geo_ops.c:1055 -msgid "type \"line\" not yet implemented" -msgstr "\"line\" veri tipi implemente edilmemiştir" - -#: utils/adt/geo_ops.c:1402 -#: utils/adt/geo_ops.c:1425 -#, c-format -msgid "invalid input syntax for type path: \"%s\"" -msgstr "path tipi için geçersiz biçim: \"%s\"" - -#: utils/adt/geo_ops.c:1464 -msgid "invalid number of points in external \"path\" value" -msgstr "dış \"path\" değerinde geçersiz nokta sayısı" - -#: utils/adt/geo_ops.c:1805 -#, c-format -msgid "invalid input syntax for type point: \"%s\"" -msgstr "point tipi için geçersiz biçim: \"%s\"" - -#: utils/adt/geo_ops.c:2033 -#, c-format -msgid "invalid input syntax for type lseg: \"%s\"" -msgstr "lseg tipi için geçersiz biçim: \"%s\"" - -#: utils/adt/geo_ops.c:2624 -msgid "function \"dist_lb\" not implemented" -msgstr "\"dist_lb\" fonksiyonu implemente edilmemiştir" - -#: utils/adt/geo_ops.c:3137 -msgid "function \"close_lb\" not implemented" -msgstr "\"close_lb\" fonksiyonu implemente edilmemiştir" - -#: utils/adt/geo_ops.c:3416 -msgid "cannot create bounding box for empty polygon" -msgstr "boş polygon için bounding box oluşturulamaz" - -#: utils/adt/geo_ops.c:3440 -#: utils/adt/geo_ops.c:3452 -#, c-format -msgid "invalid input syntax for type polygon: \"%s\"" -msgstr "polygon tipi için geçersiz biçim: \"%s\"" - -#: utils/adt/geo_ops.c:3492 -msgid "invalid number of points in external \"polygon\" value" -msgstr "dış \"polygon\" değerinde geçersiz nokta sayısı" - -#: utils/adt/geo_ops.c:3878 -msgid "function \"poly_distance\" not implemented" -msgstr "\"poly_distance\" fonksiyonu implement edilmemiş" - -#: utils/adt/geo_ops.c:4190 -msgid "function \"path_center\" not implemented" -msgstr "\"path_center\" fonksiyonu implement edilmemiş" - -#: utils/adt/geo_ops.c:4207 -msgid "open path cannot be converted to polygon" -msgstr "open path, polygon veri tipine dönüştürülemez" - -#: utils/adt/geo_ops.c:4374 -#: utils/adt/geo_ops.c:4384 -#: utils/adt/geo_ops.c:4399 -#: utils/adt/geo_ops.c:4405 -#, c-format -msgid "invalid input syntax for type circle: \"%s\"" -msgstr "circle tipi için geçersiz biçim: \"%s\"" - -#: utils/adt/geo_ops.c:4427 -#: utils/adt/geo_ops.c:4435 -msgid "could not format \"circle\" value" -msgstr "\"circle\" değeri biçimlendirilemedi" - -#: utils/adt/geo_ops.c:4462 -msgid "invalid radius in external \"circle\" value" -msgstr "\"circle\" değerin dış yarıçap değeri geçersiz" - -#: utils/adt/geo_ops.c:4983 -msgid "cannot convert circle with radius zero to polygon" -msgstr "yarıçapı sıfır olan daire polygon'a çevrilemez" - -#: utils/adt/geo_ops.c:4988 -msgid "must request at least 2 points" -msgstr "en az iki nokta istemelidir" - -#: utils/adt/geo_ops.c:5032 -#: utils/adt/geo_ops.c:5055 -msgid "cannot convert empty polygon to circle" -msgstr "boş polygon daireye çevrilemez" - -#: utils/adt/int.c:161 -msgid "int2vector has too many elements" -msgstr "int2vector çok fazla öğesine sahip" - -#: utils/adt/int.c:234 -msgid "invalid int2vector data" -msgstr "geçersiz int2vector verisi" - -#: utils/adt/int.c:1309 -#: utils/adt/int8.c:1357 -#: utils/adt/timestamp.c:4701 -#: utils/adt/timestamp.c:4782 -msgid "step size cannot equal zero" -msgstr "step boyutu sıfır olamaz" - -#: utils/adt/int8.c:101 -#: utils/adt/int8.c:136 -#: utils/adt/numutils.c:53 -#: utils/adt/numutils.c:63 -#: utils/adt/numutils.c:105 -#, c-format -msgid "invalid input syntax for integer: \"%s\"" -msgstr "integer için geçersiz sözdizimi:\"%s\"" - -#: utils/adt/int8.c:117 -#, c-format -msgid "value \"%s\" is out of range for type bigint" -msgstr "bigint tipi için \"%s\" değeri kapsam dışıdır" - -#: utils/adt/int8.c:506 -#: utils/adt/int8.c:535 -#: utils/adt/int8.c:556 -#: utils/adt/int8.c:589 -#: utils/adt/int8.c:617 -#: utils/adt/int8.c:635 -#: utils/adt/int8.c:681 -#: utils/adt/int8.c:698 -#: utils/adt/int8.c:767 -#: utils/adt/int8.c:788 -#: utils/adt/int8.c:815 -#: utils/adt/int8.c:842 -#: utils/adt/int8.c:863 -#: utils/adt/int8.c:884 -#: utils/adt/int8.c:911 -#: utils/adt/int8.c:946 -#: utils/adt/int8.c:967 -#: utils/adt/int8.c:994 -#: utils/adt/int8.c:1021 -#: utils/adt/int8.c:1042 -#: utils/adt/int8.c:1063 -#: utils/adt/int8.c:1090 -#: utils/adt/int8.c:1258 -#: utils/adt/int8.c:1297 -#: utils/adt/numeric.c:2088 -#: utils/adt/varbit.c:1456 -msgid "bigint out of range" -msgstr "biginit değeri sıra dışıdır" - -#: utils/adt/int8.c:1314 -msgid "OID out of range" -msgstr "OID kapsam dışıdır" - -#: utils/adt/like_match.c:103 -#, fuzzy -msgid "LIKE pattern must not end with escape character" -msgstr "$%d parametresi yoktur" - -#: utils/adt/like_match.c:289 -#: utils/adt/regexp.c:681 -msgid "invalid escape string" -msgstr "escape satırı geçersiz" - -#: utils/adt/like_match.c:290 -#: utils/adt/regexp.c:682 -msgid "Escape string must be empty or one character." -msgstr "Kaçış dizisi boş veya bir karakter olmalıdır." - -#: utils/adt/mac.c:65 -#, c-format -msgid "invalid input syntax for type macaddr: \"%s\"" -msgstr "macaddr tipi için geçersiz biçim: \"%s\"" - -#: utils/adt/mac.c:72 -#, c-format -msgid "invalid octet value in \"macaddr\" value: \"%s\"" -msgstr "\"macaddr\" içinde geçersiz octet değeri: \"%s\"" - -#: utils/adt/misc.c:79 -msgid "must be superuser to signal other server processes" -msgstr "diğer aktif sunucu süreçlerine sinyal göndermek için superuser olmanız lazım" - -#: utils/adt/misc.c:88 -#, c-format -msgid "PID %d is not a PostgreSQL server process" -msgstr "PID %d bir PostgreSQL sunucu süreci değildir" - -#: utils/adt/misc.c:101 -#: storage/lmgr/proc.c:932 -#, c-format -msgid "could not send signal to process %d: %m" -msgstr "%d sürecine sinyal gönderme başarısız: %m" - -#: utils/adt/misc.c:125 -msgid "must be superuser to signal the postmaster" -msgstr "postmaster süreçlerine sinyal göndermek için superuser olmanız lazım" - -#: utils/adt/misc.c:130 -#, c-format -msgid "failed to send signal to postmaster: %m" -msgstr "postmaster sürecine sinyal gönderme başarısız: %m" - -#: utils/adt/misc.c:147 -msgid "must be superuser to rotate log files" -msgstr "log dosyaları göndürmek için superuser olmalısınız" - -#: utils/adt/misc.c:152 -#, fuzzy -msgid "rotation not possible because log collection not active" -msgstr "log direction etkin olmadıpından rotation yapılamaz" - -#: utils/adt/misc.c:193 -msgid "global tablespace never has databases" -msgstr "global tablespace, database bulunduramaz" - -#: utils/adt/misc.c:213 -#, c-format -msgid "%u is not a tablespace OID" -msgstr "%u OID tablespace değildir" - -#: utils/adt/misc.c:349 -msgid "unreserved" -msgstr "" - -#: utils/adt/misc.c:353 -#, fuzzy -msgid "unreserved (cannot be function or type name)" -msgstr "geçerli kullanıcının adı değiştirilemez" - -#: utils/adt/misc.c:357 -msgid "reserved (can be function or type name)" -msgstr "" - -#: utils/adt/misc.c:361 -msgid "reserved" -msgstr "" - -#: utils/adt/nabstime.c:160 -#, c-format -msgid "invalid time zone name: \"%s\"" -msgstr "geçersiz zaman dilimi adı: \"%s\"" - -#: utils/adt/nabstime.c:506 -#: utils/adt/nabstime.c:579 -msgid "cannot convert abstime \"invalid\" to timestamp" -msgstr "abstime \"invalid\" interval tipine dönüştürülemiyor" - -#: utils/adt/nabstime.c:798 -msgid "invalid status in external \"tinterval\" value" -msgstr "harici \"tinterval\" değerinin durumu geçirsiz" - -#: utils/adt/nabstime.c:875 -msgid "cannot convert reltime \"invalid\" to interval" -msgstr "reltime \"invalid\" değeri interval'a dönüştürülemiyor" - -#: utils/adt/nabstime.c:1557 -#, c-format -msgid "invalid input syntax for type tinterval: \"%s\"" -msgstr "interval tipi için geçersiz biçim: \"%s\"" - -#: utils/adt/network.c:118 -#, c-format -msgid "invalid cidr value: \"%s\"" -msgstr "cidr değeri geçersiz: \"%s\"" - -#: utils/adt/network.c:119 -#: utils/adt/network.c:249 -msgid "Value has bits set to right of mask." -msgstr "Değerin maskenin sğında fazladan bitler var." - -#: 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 değeri biçimlendirilemiyor: %m" - -#. translator: %s is inet or cidr -#: utils/adt/network.c:217 -#, c-format -msgid "invalid address family in external \"%s\" value" -msgstr "dış \"%s\" değerinde geçersiz address family" - -#. translator: %s is inet or cidr -#: utils/adt/network.c:224 -#, c-format -msgid "invalid bits in external \"%s\" value" -msgstr "harici \"%s\" değerinin bitleri geçirsiz" - -#. translator: %s is inet or cidr -#: utils/adt/network.c:233 -#, c-format -msgid "invalid length in external \"%s\" value" -msgstr "harici \"%s\" değerinin uzunluğu geçirsiz" - -#: utils/adt/network.c:248 -msgid "invalid external \"cidr\" value" -msgstr "geçersiz harici \"cidr\" değeri" - -#: utils/adt/network.c:370 -#: utils/adt/network.c:397 -#, c-format -msgid "invalid mask length: %d" -msgstr "geçersiz mask uzunluğu: %d" - -#: utils/adt/network.c:682 -#, c-format -msgid "could not format cidr value: %m" -msgstr "cidr değeri biçimlendirilemiyor: %m" - -#: utils/adt/network.c:1255 -msgid "cannot AND inet values of different sizes" -msgstr "farklı uzunluğa sahip inet değerleri üzerinde AND işlemi yapılamaz" - -#: utils/adt/network.c:1287 -msgid "cannot OR inet values of different sizes" -msgstr "farklı uzunluğa sahip inet değerleri üzerinde OR işlemi yapılamaz" - -#: utils/adt/network.c:1348 -#: utils/adt/network.c:1424 -msgid "result is out of range" -msgstr "sonuç sıra dsışıdır" - -#: utils/adt/network.c:1389 -msgid "cannot subtract inet values of different sizes" -msgstr "farklı uzunluğa sahip inet değerleri üzerinde eksilme işlemi yapılamaz" - -#: utils/adt/numeric.c:351 -#: utils/adt/numeric.c:378 -#: utils/adt/numeric.c:3072 -#: utils/adt/numeric.c:3095 -#: utils/adt/numeric.c:3119 -#: utils/adt/numeric.c:3126 -#, c-format -msgid "invalid input syntax for type numeric: \"%s\"" -msgstr "numeric tipi için geçersiz biçim: \"%s\"" - -#: utils/adt/numeric.c:455 -msgid "invalid length in external \"numeric\" value" -msgstr "harici \"numeric\" değerinin uzunluğu geçirsiz" - -#: utils/adt/numeric.c:466 -msgid "invalid sign in external \"numeric\" value" -msgstr "harici \"numeric\" değerinin eksi işareti geçirsiz" - -#: utils/adt/numeric.c:476 -msgid "invalid digit in external \"numeric\" value" -msgstr "harici \"numeric\" değerinin rakamı geçirsiz" - -#: utils/adt/numeric.c:607 -#: utils/adt/numeric.c:621 -#, c-format -msgid "NUMERIC precision %d must be between 1 and %d" -msgstr "NUMERIC precision %d, 1 ile %d arasında olmalıdır" - -#: utils/adt/numeric.c:612 -#, c-format -msgid "NUMERIC scale %d must be between 0 and precision %d" -msgstr "NUMERIC %d ölçüsü 0 ile %d kesinliği arasında olmalıdır" - -#: utils/adt/numeric.c:630 -msgid "invalid NUMERIC type modifier" -msgstr "geçersiz NUMERIC tipi niteleyicisi" - -#: utils/adt/numeric.c:1663 -#: utils/adt/numeric.c:3430 -msgid "value overflows numeric format" -msgstr "değer, numerik biçiminin kapsamını taşımaktadır" - -#: utils/adt/numeric.c:2011 -msgid "cannot convert NaN to integer" -msgstr "NaN tipinden integer tipine dönüştürme hatası" - -#: utils/adt/numeric.c:2079 -msgid "cannot convert NaN to bigint" -msgstr "NaN tipinden bigint tipine dönüştürme hatası" - -#: utils/adt/numeric.c:2127 -msgid "cannot convert NaN to smallint" -msgstr "NaN tipinden smallint tipine dönüştürme hatası" - -#: utils/adt/numeric.c:3500 -msgid "numeric field overflow" -msgstr "numerik alan kapsamını taşımaktadır" - -#: utils/adt/numeric.c:3501 -#, c-format -msgid "A field with precision %d, scale %d must round to an absolute value less than %s%d." -msgstr "%d duyarlı, %d ölçekli bir alan %s%d'den daha az mutlak değere yuvarlanabilmelidir." - -#: utils/adt/numeric.c:4949 -msgid "argument for function \"exp\" too big" -msgstr "\"exp\" fonksiyonu için argüman fazla büyük" - -#: utils/adt/numutils.c:77 -#, c-format -msgid "value \"%s\" is out of range for type integer" -msgstr "integer tipi için \"%s\" değeri kapsam dışıdır" - -#: utils/adt/numutils.c:83 -#, c-format -msgid "value \"%s\" is out of range for type smallint" -msgstr "smallint tipi için \"%s\" değeri kapsam dışıdır" - -#: utils/adt/numutils.c:89 -#, c-format -msgid "value \"%s\" is out of range for 8-bit integer" -msgstr "8-bir integer tipi için \"%s\" değeri kapsam dışıdır" - -#: 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 tipi için geçersiz biçim: \"%s\"" - -#: utils/adt/oid.c:69 -#: utils/adt/oid.c:107 -#, c-format -msgid "value \"%s\" is out of range for type oid" -msgstr "oid tipi için \"%s\" değeri sıra dışıdır" - -#: utils/adt/oid.c:212 -msgid "oidvector has too many elements" -msgstr "oidvector çok fazla öğesine sahiptir" - -#: utils/adt/oid.c:285 -msgid "invalid oidvector data" -msgstr "geçersiz oidvector verisi" - -#: utils/adt/oracle_compat.c:892 -msgid "requested character too large" -msgstr "istenen karakter çok büyük" - -#: utils/adt/oracle_compat.c:938 -#: utils/adt/oracle_compat.c:992 -#, c-format -msgid "requested character too large for encoding: %d" -msgstr "Belirtilen karakter dil kodlaması için çok büyük: %d" - -#: utils/adt/oracle_compat.c:985 -msgid "null character not permitted" -msgstr "null karaktere izin verilmez" - -#: utils/adt/pseudotypes.c:94 -msgid "cannot accept a value of type any" -msgstr "any tipinde değer alınamaz" - -#: utils/adt/pseudotypes.c:107 -msgid "cannot display a value of type any" -msgstr "any tipinde değer gösterilemez" - -#: utils/adt/pseudotypes.c:121 -#: utils/adt/pseudotypes.c:149 -msgid "cannot accept a value of type anyarray" -msgstr "anyarray tipinde değer alınamaz" - -#: utils/adt/pseudotypes.c:174 -msgid "cannot accept a value of type anyenum" -msgstr "anyenum tipinde değer alınamaz" - -#: utils/adt/pseudotypes.c:224 -msgid "cannot accept a value of type trigger" -msgstr "trigger tipinde değer alınamaz" - -#: utils/adt/pseudotypes.c:237 -msgid "cannot display a value of type trigger" -msgstr "trigger tipinde değer gösterilemez" - -#: utils/adt/pseudotypes.c:251 -msgid "cannot accept a value of type language_handler" -msgstr "language_handler tipinde değer alınamaz" - -#: utils/adt/pseudotypes.c:264 -msgid "cannot display a value of type language_handler" -msgstr "language_handler tipinde değer gösterilemez" - -#: utils/adt/pseudotypes.c:278 -msgid "cannot accept a value of type internal" -msgstr "internal tipinde değer alınamaz" - -#: utils/adt/pseudotypes.c:291 -msgid "cannot display a value of type internal" -msgstr "internal tipinde değer gösterilemez" - -#: utils/adt/pseudotypes.c:305 -msgid "cannot accept a value of type opaque" -msgstr "opaque tipinde değer alınamaz" - -#: utils/adt/pseudotypes.c:318 -msgid "cannot display a value of type opaque" -msgstr "opaque tipinde değer gösterilemez" - -#: utils/adt/pseudotypes.c:332 -msgid "cannot accept a value of type anyelement" -msgstr "anyelement tipinde değer alınamaz" - -#: utils/adt/pseudotypes.c:345 -msgid "cannot display a value of type anyelement" -msgstr "anyelement tipinde değer gösterilemez" - -#: utils/adt/pseudotypes.c:358 -#, fuzzy -msgid "cannot accept a value of type anynonarray" -msgstr "anyarray tipinde değer alınamaz" - -#: utils/adt/pseudotypes.c:371 -#, fuzzy -msgid "cannot display a value of type anynonarray" -msgstr "any tipinde değer gösterilemez" - -#: utils/adt/pseudotypes.c:384 -msgid "cannot accept a value of a shell type" -msgstr "shell tipinde değer alınamaz" - -#: utils/adt/pseudotypes.c:397 -msgid "cannot display a value of a shell type" -msgstr "shell tipinde değer gösterilemez" - -#: utils/adt/regexp.c:194 -#: tsearch/spell.c:365 -#, c-format -msgid "invalid regular expression: %s" -msgstr "regular expression geçersiz: %s" - -#: utils/adt/regexp.c:273 -#: utils/adt/varlena.c:2588 -#, c-format -msgid "regular expression failed: %s" -msgstr "regular expression başarısız: %s" - -#: utils/adt/regexp.c:408 -#, fuzzy, c-format -msgid "invalid regexp option: \"%c\"" -msgstr "geçersiz regexp seçeneği: %c" - -#: utils/adt/regexp.c:864 -msgid "regexp_split does not support the global option" -msgstr "regexp_split, global seçeneği desteklemez" - -#: utils/adt/regproc.c:123 -#: utils/adt/regproc.c:143 -#, c-format -msgid "more than one function named \"%s\"" -msgstr "birden fazla \"%s\" adlı fonksiyon var" - -#: utils/adt/regproc.c:468 -#: utils/adt/regproc.c:488 -#: utils/adt/regproc.c:649 -#: parser/parse_oper.c:124 -#: parser/parse_oper.c:762 -#, c-format -msgid "operator does not exist: %s" -msgstr "operator mevcut değil: %s" - -#: utils/adt/regproc.c:472 -#: utils/adt/regproc.c:492 -#, c-format -msgid "more than one operator named %s" -msgstr "birden fazla \"%s\" adlı operatör var" - -#: utils/adt/regproc.c:636 -#: gram.y:5043 -msgid "missing argument" -msgstr "argüman eksik" - -#: utils/adt/regproc.c:637 -#: gram.y:5044 -msgid "Use NONE to denote the missing argument of a unary operator." -msgstr "Unary operator'un bir argümanı eksik olduğunu göstermek için NONE kullanın" - -#: utils/adt/regproc.c:641 -#: utils/adt/regproc.c:1501 -#: utils/adt/ruleutils.c:5230 -#: utils/adt/ruleutils.c:5267 -#: utils/adt/ruleutils.c:5301 -msgid "too many arguments" -msgstr "çok fazla argüman" - -#: utils/adt/regproc.c:642 -msgid "Provide two argument types for operator." -msgstr "Operatör için iki argüman tipi sağlayın." - -#: utils/adt/regproc.c:818 -#: catalog/namespace.c:275 -#: commands/lockcmds.c:118 -#: parser/parse_relation.c:877 -#: parser/parse_relation.c:885 -#, c-format -msgid "relation \"%s\" does not exist" -msgstr "\"%s\" nesnesi mevcut değil" - -#: utils/adt/regproc.c:983 -#: commands/functioncmds.c:126 -#: commands/tablecmds.c:215 -#: commands/typecmds.c:648 -#: commands/typecmds.c:2535 -#: parser/parse_func.c:1311 -#: parser/parse_type.c:199 -#, c-format -msgid "type \"%s\" does not exist" -msgstr "\"%s\" tipi mevcut değil" - -#: utils/adt/regproc.c:1336 -#: utils/adt/regproc.c:1341 -#: utils/adt/varlena.c:1989 -#: utils/adt/varlena.c:1994 -msgid "invalid name syntax" -msgstr "isim sözdizimi geçersiz" - -#: utils/adt/regproc.c:1399 -msgid "expected a left parenthesis" -msgstr "sol parantez beklenir" - -#: utils/adt/regproc.c:1415 -msgid "expected a right parenthesis" -msgstr "sağ parantez beklenir" - -#: utils/adt/regproc.c:1434 -msgid "expected a type name" -msgstr "tür ismi beklenir" - -#: utils/adt/regproc.c:1466 -msgid "improper type name" -msgstr "tür ismi geçersiz" - -#: utils/adt/ri_triggers.c:373 -#: utils/adt/ri_triggers.c:433 -#: utils/adt/ri_triggers.c:596 -#: utils/adt/ri_triggers.c:836 -#: utils/adt/ri_triggers.c:1024 -#: utils/adt/ri_triggers.c:1186 -#: utils/adt/ri_triggers.c:1374 -#: utils/adt/ri_triggers.c:1545 -#: utils/adt/ri_triggers.c:1728 -#: utils/adt/ri_triggers.c:1899 -#: utils/adt/ri_triggers.c:2115 -#: utils/adt/ri_triggers.c:2297 -#: utils/adt/ri_triggers.c:2500 -#: utils/adt/ri_triggers.c:2548 -#: utils/adt/ri_triggers.c:2593 -#: utils/adt/ri_triggers.c:2721 -#: gram.y:2429 -msgid "MATCH PARTIAL not yet implemented" -msgstr "MATCH PARTIAL implemente edilmemiştir" - -#: utils/adt/ri_triggers.c:407 -#: utils/adt/ri_triggers.c:2803 -#: utils/adt/ri_triggers.c:3461 -#: utils/adt/ri_triggers.c:3498 -#, c-format -msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\"" -msgstr "\"%s\" tablosu üzende işlem \"%s\" foreign key constrainti ihlal ediyor" - -#: utils/adt/ri_triggers.c:410 -#: utils/adt/ri_triggers.c:2806 -msgid "MATCH FULL does not allow mixing of null and nonnull key values." -msgstr "MATCH FULL, null ve nonnull anahtar değerlerinin bir arada kullanımına izin vermez." - -#: utils/adt/ri_triggers.c:3003 -#, c-format -msgid "function \"%s\" was not called by trigger manager" -msgstr "\"%s\" fonksiyonu trigger yöneticisi tarafından çağırılmamıştır" - -#: utils/adt/ri_triggers.c:3012 -#, c-format -msgid "function \"%s\" must be fired AFTER ROW" -msgstr "\"%s\" fonksiyonu AFTER ROW olarak çalıştırılmalıdır" - -#: utils/adt/ri_triggers.c:3020 -#, c-format -msgid "function \"%s\" must be fired for INSERT" -msgstr "\"%s\" fonksiyonu INSERT için çalıştırılmalıdır" - -#: utils/adt/ri_triggers.c:3026 -#, c-format -msgid "function \"%s\" must be fired for UPDATE" -msgstr "\"%s\" fonksiyonu UPDATE için çalıştırılmalıdır" - -#: utils/adt/ri_triggers.c:3033 -#, c-format -msgid "function \"%s\" must be fired for INSERT or UPDATE" -msgstr "\"%s\" fonksiyonu INSERT veya UPDATE için çalıştırılmalıdır" - -#: utils/adt/ri_triggers.c:3040 -#, c-format -msgid "function \"%s\" must be fired for DELETE" -msgstr "\"%s\" fonksiyonu DELETE için çalıştırılmalıdır" - -#: utils/adt/ri_triggers.c:3069 -#, c-format -msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\"" -msgstr "\"%2$s\" tablosunun \"%1$s\" triggeri için pg_constraint girişi yoktur" - -#: utils/adt/ri_triggers.c:3071 -msgid "Remove this referential integrity trigger and its mates, then do ALTER TABLE ADD CONSTRAINT." -msgstr "Bu ve diğer bütünlük kısıtlamaları ladırın, ardından ALTER TABLE ADD CONSTRAINT komutuyla yeni kısıtlama ekleyin." - -#: utils/adt/ri_triggers.c:3428 -#, c-format -msgid "referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave unexpected result" -msgstr "\"%3$s\" tablosu üzerinde \"%2$s\" bütünük kısıtlamasından \"%1$s\" nesnesini sorgulayan sorgu beklenmeyen bir sonuç getirdi" - -#: utils/adt/ri_triggers.c:3432 -msgid "This is most likely due to a rule having rewritten the query." -msgstr "Bu durum muhtemelen sorguyu değiştiren rule yüzünden meydana gelmiştir." - -#: utils/adt/ri_triggers.c:3463 -#, c-format -msgid "No rows were found in \"%s\"." -msgstr "\"%s\" içinde tahsis edilebilir bir girdi yok." - -#: utils/adt/ri_triggers.c:3500 -#, c-format -msgid "Key (%s)=(%s) is not present in table \"%s\"." -msgstr "\"%3$s\" tablosunda (%1$s)=(%2$s) anahtarı mevcut değildir." - -#: utils/adt/ri_triggers.c:3506 -#, c-format -msgid "update or delete on table \"%s\" violates foreign key constraint \"%s\" on table \"%s\"" -msgstr "\"%1$s\" tablosu üzerinde yapılan update veya delete işlemi \"%3$s\" tablosunun \"%2$s\" bütünlük kısıtlamasını ihlal ediyor" - -#: utils/adt/ri_triggers.c:3509 -#, c-format -msgid "Key (%s)=(%s) is still referenced from table \"%s\"." -msgstr "(%s)=(%s) anahtarı \"%s\" tablosundan hala referans edilmektedir." - -#: utils/adt/rowtypes.c:98 -#: utils/adt/rowtypes.c:467 -msgid "input of anonymous composite types is not implemented" -msgstr "anonymous composite veri girişi implemente edilmemiş" - -#: utils/adt/rowtypes.c:145 -#: utils/adt/rowtypes.c:173 -#: utils/adt/rowtypes.c:196 -#: utils/adt/rowtypes.c:204 -#: utils/adt/rowtypes.c:256 -#: utils/adt/rowtypes.c:264 -#, c-format -msgid "malformed record literal: \"%s\"" -msgstr "hatalı değer: \"%s\"" - -#: utils/adt/rowtypes.c:146 -msgid "Missing left parenthesis." -msgstr "Sol parantez eksik." - -#: utils/adt/rowtypes.c:174 -msgid "Too few columns." -msgstr "Sütun sayısı yetersiz." - -#: utils/adt/rowtypes.c:198 -#: utils/adt/rowtypes.c:206 -msgid "Unexpected end of input." -msgstr "Beklenmeyen girdi sonu." - -#: utils/adt/rowtypes.c:257 -msgid "Too many columns." -msgstr "Çok fazla sütun." - -#: utils/adt/rowtypes.c:265 -msgid "Junk after right parenthesis." -msgstr "Sağ parantezden sonra süprüntü." - -#: utils/adt/rowtypes.c:516 -#, c-format -msgid "wrong number of columns: %d, expected %d" -msgstr "geçersiz sütun sayısı: %2$d yerine %1$d" - -#: utils/adt/rowtypes.c:543 -#, c-format -msgid "wrong data type: %u, expected %u" -msgstr "yanlış veri tipi: %u beklenirken %u alındı" - -#: utils/adt/rowtypes.c:604 -#, c-format -msgid "improper binary format in record column %d" -msgstr "%d kayıt sütununda uygunsuz ikili biçimi" - -#: utils/adt/rowtypes.c:890 -#: utils/adt/rowtypes.c:1116 -#, c-format -msgid "cannot compare dissimilar column types %s and %s at record column %d" -msgstr "" - -#: utils/adt/rowtypes.c:968 -#: utils/adt/rowtypes.c:1179 -#, fuzzy -msgid "cannot compare record types with different numbers of columns" -msgstr "farklı öğe tipli dizinleri karşılaştırılamaz" - -#: utils/adt/ruleutils.c:1473 -#: commands/functioncmds.c:976 -#: commands/functioncmds.c:1082 -#: commands/functioncmds.c:1147 -#: commands/functioncmds.c:1302 -#, c-format -msgid "\"%s\" is an aggregate function" -msgstr "\"%s\" fonksiyonu bir aggregate fonksiyonudur" - -#: utils/adt/ruleutils.c:2083 -#, c-format -msgid "rule \"%s\" has unsupported event type %d" -msgstr "\"%s\" rule desteklenmeyen veri tipine sahip %d" - -#: utils/adt/selfuncs.c:4487 -#: utils/adt/selfuncs.c:4928 -msgid "case insensitive matching not supported on type bytea" -msgstr "bytea veri tipi için büyük ve küçük harf duyarsız karşılaştırma desteklenmemektedir" - -#: utils/adt/selfuncs.c:4593 -#: utils/adt/selfuncs.c:5088 -msgid "regular-expression matching not supported on type bytea" -msgstr "bytea tipi için regular-expression karşılaştırma desteklenmemektedir" - -#: 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 veri tipi için geersiz söz dizimi: \"%s\"" - -#: utils/adt/timestamp.c:97 -#, c-format -msgid "TIMESTAMP(%d)%s precision must not be negative" -msgstr "TIMESTAMP(%d)%s kesinliği sıfırdan küçük olamaz" - -#: utils/adt/timestamp.c:103 -#, c-format -msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d" -msgstr "TIMESTAMP(%d)%s kesinliği en yüksek değerine (%d) kadar düşürüldü" - -#: utils/adt/timestamp.c:171 -#: utils/adt/timestamp.c:430 -#, c-format -msgid "timestamp out of range: \"%s\"" -msgstr "timestamp kapsam dışıdır: \"%s\"" - -#: utils/adt/timestamp.c:189 -#: utils/adt/timestamp.c:448 -#: utils/adt/timestamp.c:659 -#, c-format -msgid "date/time value \"%s\" is no longer supported" -msgstr "\"%s\" tarih/saat değeri artık desteklenemektedir" - -#: utils/adt/timestamp.c:365 -#, c-format -msgid "timestamp(%d) precision must be between %d and %d" -msgstr "timestamp(%d) kesinliği %d ile %d arasında olmalıdır" - -#: utils/adt/timestamp.c:653 -#: utils/adt/timestamp.c:3098 -#: utils/adt/timestamp.c:3228 -#: utils/adt/timestamp.c:3613 -msgid "interval out of range" -msgstr "interval sonuç sıra dışıdır" - -#: utils/adt/timestamp.c:782 -#: utils/adt/timestamp.c:815 -msgid "invalid INTERVAL type modifier" -msgstr "geçersiz INTERVAL tipi niteleyicisi" - -#: utils/adt/timestamp.c:798 -#, c-format -msgid "INTERVAL(%d) precision must not be negative" -msgstr "INTEVRAL(%d) kesinliği sıfırdan küçük olamaz" - -#: utils/adt/timestamp.c:804 -#, c-format -msgid "INTERVAL(%d) precision reduced to maximum allowed, %d" -msgstr "INTEVRAL(%d) kesinliği izin verilen en yüksek değerine (%d) düşürülmüştür" - -#: utils/adt/timestamp.c:1096 -#, c-format -msgid "interval(%d) precision must be between %d and %d" -msgstr "interval(%d) kesinliği %d ile %d arasında olmalıdır" - -#: utils/adt/timestamp.c:2301 -msgid "cannot subtract infinite timestamps" -msgstr "sonsuz timestap veri tipi üzerinde çıkarma işlemi yapılamaz" - -#: utils/adt/timestamp.c:3354 -#: utils/adt/timestamp.c:3950 -#: utils/adt/timestamp.c:4009 -#, c-format -msgid "timestamp units \"%s\" not supported" -msgstr "interval birimi \"%s\" desteklenmemektedir" - -#: utils/adt/timestamp.c:3368 -#: utils/adt/timestamp.c:4019 -#, c-format -msgid "timestamp units \"%s\" not recognized" -msgstr "\"%s\" timestamp birimleri geçersiz" - -#: utils/adt/timestamp.c:3509 -#: utils/adt/timestamp.c:4181 -#: utils/adt/timestamp.c:4222 -#, c-format -msgid "timestamp with time zone units \"%s\" not supported" -msgstr "\"%s\" timestamp with time zone değerleri desteklenmemektedir" - -#: utils/adt/timestamp.c:3526 -#: utils/adt/timestamp.c:4231 -#, c-format -msgid "timestamp with time zone units \"%s\" not recognized" -msgstr "\"%s\" timestamp with time zone değerleri tanınmamaktadır" - -#: utils/adt/timestamp.c:3606 -#: utils/adt/timestamp.c:4337 -#, c-format -msgid "interval units \"%s\" not supported" -msgstr "interval birimi \"%s\" desteklenmemektedir" - -#: utils/adt/timestamp.c:3622 -#: utils/adt/timestamp.c:4364 -#, c-format -msgid "interval units \"%s\" not recognized" -msgstr "\"%s\" interval birimleri geçersiz" - -#: utils/adt/timestamp.c:4434 -#: utils/adt/timestamp.c:4607 -#, c-format -msgid "could not convert to time zone \"%s\"" -msgstr "\"%s\" zaman dilimine dönüştürülemedi" - -#: utils/adt/timestamp.c:4466 -#: utils/adt/timestamp.c:4640 -#, c-format -msgid "interval time zone \"%s\" must not specify month" -msgstr "\"%s\" interval time zone ayı belirtmemelidir" - -#: utils/adt/trigfuncs.c:41 -msgid "suppress_redundant_updates_trigger: must be called as trigger" -msgstr "" - -#: utils/adt/trigfuncs.c:47 -msgid "suppress_redundant_updates_trigger: must be called on update" -msgstr "" - -#: utils/adt/trigfuncs.c:53 -msgid "suppress_redundant_updates_trigger: must be called before update" -msgstr "" - -#: utils/adt/trigfuncs.c:59 -msgid "suppress_redundant_updates_trigger: must be called for each row" -msgstr "" - -#: utils/adt/tsgistidx.c:100 -msgid "gtsvector_in not implemented" -msgstr " gtsvector_in henüz implemente edilmemiştir" - -#: utils/adt/tsquery.c:156 -#: utils/adt/tsquery.c:392 -#: utils/adt/tsvector_parser.c:136 -#, fuzzy, c-format -msgid "syntax error in tsquery: \"%s\"" -msgstr "%s geçmiş dosyasında sözdizimi hatası" - -#: utils/adt/tsquery.c:177 -#, fuzzy, c-format -msgid "no operand in tsquery: \"%s\"" -msgstr "operator eşsiz değildir: %s" - -#: utils/adt/tsquery.c:250 -#, c-format -msgid "value is too big in tsquery: \"%s\"" -msgstr "tsquery'deki değer çok büyük: \"%s\"" - -#: utils/adt/tsquery.c:255 -#, fuzzy, c-format -msgid "operand is too long in tsquery: \"%s\"" -msgstr "operator eşsiz değildir: %s" - -#: utils/adt/tsquery.c:283 -#, c-format -msgid "word is too long in tsquery: \"%s\"" -msgstr "tsquery'deki sözcük çok uzun: \"%s\"" - -#: utils/adt/tsquery.c:512 -#, c-format -msgid "text-search query doesn't contain lexemes: \"%s\"" -msgstr "metin arama sorgusu lexeme içermiyor: \"%s\"" - -#: utils/adt/tsquery_cleanup.c:285 -msgid "text-search query contains only stop words or doesn't contain lexemes, ignored" -msgstr "" - -#: utils/adt/tsquery_rewrite.c:296 -#, fuzzy -msgid "ts_rewrite query must return two tsquery columns" -msgstr "subquery, bir tane sütun getirmelidir" - -#: utils/adt/tsrank.c:404 -#, fuzzy -msgid "array of weight must be one-dimensional" -msgstr "ACL array tek boyutlu olmalıdır" - -#: utils/adt/tsrank.c:409 -msgid "array of weight is too short" -msgstr "" - -#: utils/adt/tsrank.c:414 -#, fuzzy -msgid "array of weight must not contain nulls" -msgstr "array null kayıtları içeremez" - -#: utils/adt/tsrank.c:423 -#: utils/adt/tsrank.c:749 -msgid "weight out of range" -msgstr "ağırlık değeri sıra dışıdır" - -#: utils/adt/tsvector.c:215 -#, c-format -msgid "word is too long (%ld bytes, max %ld bytes)" -msgstr "sözcük çok uzun (%ld byte, en fazla %ld byte)" - -#: utils/adt/tsvector.c:222 -#, fuzzy, c-format -msgid "string is too long for tsvector (%ld bytes, max %ld bytes)" -msgstr "dizgi tsvector için çok uzun" - -#: utils/adt/tsvector.c:272 -#: utils/adt/tsvector_op.c:514 -#: tsearch/to_tsany.c:165 -#, fuzzy, c-format -msgid "string is too long for tsvector (%d bytes, max %d bytes)" -msgstr "dizgi tsvector için çok uzun" - -#: utils/adt/tsvector_op.c:1098 -#, fuzzy -msgid "ts_stat query must return one tsvector column" -msgstr "subquery, bir tane sütun getirmelidir" - -#: utils/adt/tsvector_op.c:1278 -#, fuzzy, c-format -msgid "tsvector column \"%s\" does not exist" -msgstr "\"%s\" sütunu mevcut değil" - -#: utils/adt/tsvector_op.c:1284 -#, fuzzy, c-format -msgid "column \"%s\" is not of tsvector type" -msgstr "\"%s\" sütunu \"%s\" tipine dönüştürülemez" - -#: utils/adt/tsvector_op.c:1296 -#, c-format -msgid "configuration column \"%s\" does not exist" -msgstr "\"%s\" yapılandırma kolonu mevcut değil" - -#: utils/adt/tsvector_op.c:1302 -#, fuzzy, c-format -msgid "column \"%s\" is not of regconfig type" -msgstr "%2$s veri tipinde \"%1$s\" sütunu bulunamadı" - -#: utils/adt/tsvector_op.c:1309 -#, fuzzy, c-format -msgid "configuration column \"%s\" must not be null" -msgstr "\"%s\" sütunu mevcut değil" - -#: utils/adt/tsvector_op.c:1322 -#, fuzzy, c-format -msgid "text search configuration name \"%s\" must be schema-qualified" -msgstr "Şema belirtilmediği takdirde isimlerin hangi şemalarda aranacağını belirtir." - -#: utils/adt/tsvector_op.c:1342 -#: commands/copy.c:3409 -#: commands/indexcmds.c:835 -#: commands/tablecmds.c:1913 -#: parser/parse_expr.c:466 -#, c-format -msgid "column \"%s\" does not exist" -msgstr "\"%s\" sütunu mevcut değil" - -#: utils/adt/tsvector_op.c:1347 -#, fuzzy, c-format -msgid "column \"%s\" is not of a character type" -msgstr "oid tipi için \"%s\" değeri sıra dışıdır" - -#: utils/adt/tsvector_parser.c:137 -#, c-format -msgid "syntax error in tsvector: \"%s\"" -msgstr "tsvector yazım hatası: \"%s\"" - -#: utils/adt/tsvector_parser.c:202 -#, fuzzy, c-format -msgid "there is no escaped character: \"%s\"" -msgstr "$%d parametresi yoktur" - -#: utils/adt/tsvector_parser.c:319 -#, fuzzy, c-format -msgid "wrong position info in tsvector: \"%s\"" -msgstr "%s ifadesi, %d terinde select listesinde değildir" - -#: utils/adt/uuid.c:128 -#, c-format -msgid "invalid input syntax for uuid: \"%s\"" -msgstr "uuid tipi için geçersiz söz dizimi: \"%s\"" - -#: utils/adt/varbit.c:49 -#: utils/adt/varchar.c:48 -#, c-format -msgid "length for type %s must be at least 1" -msgstr "%s tipinin uzunluğu en az 1 olmalıdır" - -#: utils/adt/varbit.c:54 -#: utils/adt/varchar.c:52 -#, c-format -msgid "length for type %s cannot exceed %d" -msgstr "%s tipin uzunluğu %d değerini aşamaz" - -#: utils/adt/varbit.c:157 -#: utils/adt/varbit.c:297 -#: utils/adt/varbit.c:353 -#, c-format -msgid "bit string length %d does not match type bit(%d)" -msgstr "%d bit string uzunluğu bit tipi (%d) ile uyuşmamaktadır" - -#: utils/adt/varbit.c:179 -#: utils/adt/varbit.c:477 -#, c-format -msgid "\"%c\" is not a valid binary digit" -msgstr "\"%c\" geçerli bir ikili rakamı değildir" - -#: utils/adt/varbit.c:204 -#: utils/adt/varbit.c:502 -#, c-format -msgid "\"%c\" is not a valid hexadecimal digit" -msgstr "\"%c\" geçerli bir onaltılı rakamı değildir" - -#: utils/adt/varbit.c:288 -#: utils/adt/varbit.c:589 -msgid "invalid length in external bit string" -msgstr "external bit string uzunuğu geçersiz" - -#: utils/adt/varbit.c:455 -#: utils/adt/varbit.c:598 -#: utils/adt/varbit.c:659 -#, c-format -msgid "bit string too long for type bit varying(%d)" -msgstr "bit varying(%d) tipi için bit string çok uzun" - -#: utils/adt/varbit.c:1048 -msgid "cannot AND bit strings of different sizes" -msgstr "farklı uzunluğa sahip bit stringler üzerinde AND işlemi yapılamaz" - -#: utils/adt/varbit.c:1089 -msgid "cannot OR bit strings of different sizes" -msgstr "farklı uzunluğa sahip bit stringler üzerinde OR işlemi yapılamaz" - -#: utils/adt/varbit.c:1135 -msgid "cannot XOR bit strings of different sizes" -msgstr "farklı uzunluğa sahip bit stringler üzerinde XOR işlemi yapılamaz" - -#: utils/adt/varchar.c:152 -#: utils/adt/varchar.c:305 -#, c-format -msgid "value too long for type character(%d)" -msgstr "character(%d) veri tipi için değer çok uzun" - -#: utils/adt/varchar.c:473 -#: utils/adt/varchar.c:594 -#, c-format -msgid "value too long for type character varying(%d)" -msgstr "varying(%d) veri tipi için çok uzun" - -#: utils/adt/varlena.c:670 -#: utils/adt/varlena.c:734 -#: utils/adt/varlena.c:1684 -msgid "negative substring length not allowed" -msgstr "dıfırdan küçük altatır uzunluğuna izin verilmiyor" - -#: utils/adt/varlena.c:1213 -#: utils/adt/varlena.c:1226 -#, c-format -msgid "could not convert string to UTF-16: error %lu" -msgstr "satır, UTF-16 kodlamasanıa çevrilemedi: %lu" - -#: utils/adt/varlena.c:1236 -#, c-format -msgid "could not compare Unicode strings: %m" -msgstr "Unicode satırları karşılaştırılamadı: %m" - -#: utils/adt/varlena.c:1779 -#: utils/adt/varlena.c:1810 -#: utils/adt/varlena.c:1846 -#: utils/adt/varlena.c:1889 -#, c-format -msgid "index %d out of valid range, 0..%d" -msgstr "%d indexi geçerli kapsamın dışındadır: 0..%d" - -#: utils/adt/varlena.c:1901 -msgid "new bit must be 0 or 1" -msgstr "yeni bit 0 veya 1 olmalıdır" - -#: utils/adt/varlena.c:2681 -msgid "field position must be greater than zero" -msgstr "alan yeri sıfırdan büyük olmalıdır" - -#: utils/adt/windowfuncs.c:243 -#, fuzzy -msgid "argument of ntile must be greater than zero" -msgstr "sayısı sıfırdan büyük olmalı" - -#: utils/adt/windowfuncs.c:465 -#, fuzzy -msgid "argument of nth_value must be greater than zero" -msgstr "sayısı sıfırdan büyük olmalı" - -#: utils/adt/xml.c:137 -msgid "unsupported XML feature" -msgstr "desteklenmeyen XML özelliği" - -#: utils/adt/xml.c:138 -#, fuzzy -msgid "This functionality requires the server to be built with libxml support." -msgstr "Bu özellik libxml desteği gerektirmektedir." - -#: utils/adt/xml.c:139 -msgid "You need to rebuild PostgreSQL using --with-libxml." -msgstr "PostgreSQL'i --with-libxml seçeneği ile yeniden derlemeniz gerekiyor." - -#: utils/adt/xml.c:158 -#: utils/mb/mbutils.c:477 -#, c-format -msgid "invalid encoding name \"%s\"" -msgstr "geçersiz dil kodlaması adı \"%s\"" - -#: utils/adt/xml.c:397 -#: utils/adt/xml.c:402 -msgid "invalid XML comment" -msgstr "XML açıklaması geçersiz" - -#: utils/adt/xml.c:531 -msgid "not an XML document" -msgstr "XML dokümanı değildir" - -#: utils/adt/xml.c:683 -#: utils/adt/xml.c:706 -msgid "invalid XML processing instruction" -msgstr "geçersiz XML işleme komutu" - -#: utils/adt/xml.c:684 -#, fuzzy, c-format -msgid "XML processing instruction target name cannot be \"%s\"." -msgstr "XML işleme komut hedefi \"xml\" ile başlayamaz." - -#: utils/adt/xml.c:707 -msgid "XML processing instruction cannot contain \"?>\"." -msgstr "XML işleme komutu \"?>\" içeremez." - -#: utils/adt/xml.c:786 -#, fuzzy -msgid "xmlvalidate is not implemented" -msgstr "UNIQUE predicate implemente edilmemiştir" - -#: utils/adt/xml.c:861 -msgid "could not initialize XML library" -msgstr "XML kütühanesi ilklendirilemedi" - -#: utils/adt/xml.c:862 -#, c-format -msgid "libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u." -msgstr "libxml2 kütüphanesi uyumsuz karakter veri tipine sahiptir: sizeof(char)=%u, sizeof(xmlChar)=%u." - -#: utils/adt/xml.c:1339 -#: utils/adt/xml.c:1340 -#: utils/adt/xml.c:1346 -#: utils/adt/xml.c:1417 -#: utils/misc/guc.c:4749 -#: utils/misc/guc.c:5017 -#: utils/fmgr/dfmgr.c:381 -#: tcop/postgres.c:3990 -#: catalog/dependency.c:903 -#: catalog/dependency.c:904 -#: catalog/dependency.c:910 -#: catalog/dependency.c:911 -#: catalog/dependency.c:922 -#: catalog/dependency.c:923 -#: commands/tablecmds.c:609 -#: commands/trigger.c:574 -#: commands/trigger.c:590 -#: commands/trigger.c:602 -#: commands/user.c:909 -#: commands/user.c:910 -#: storage/lmgr/deadlock.c:942 -#: storage/lmgr/deadlock.c:943 -#: nodes/print.c:85 -#, c-format -msgid "%s" -msgstr "%s" - -#: utils/adt/xml.c:1393 -#, fuzzy -msgid "Invalid character value." -msgstr "karakter kapsamı için geçersiz isimler" - -#: utils/adt/xml.c:1396 -msgid "Space required." -msgstr "" - -#: utils/adt/xml.c:1399 -msgid "standalone accepts only 'yes' or 'no'." -msgstr "" - -#: utils/adt/xml.c:1402 -msgid "Malformed declaration: missing version." -msgstr "" - -#: utils/adt/xml.c:1405 -msgid "Missing encoding in text declaration." -msgstr "" - -#: utils/adt/xml.c:1408 -msgid "Parsing XML declaration: '?>' expected." -msgstr "" - -#: utils/adt/xml.c:1411 -#, fuzzy, c-format -msgid "Unrecognized libxml error code: %d." -msgstr "bilinmeyen SSL hata kodu: %d" - -#: utils/adt/xml.c:1666 -#, fuzzy -msgid "date out of range" -msgstr "date kapsam dışıdır: \"%s\"" - -#: utils/adt/xml.c:1667 -#, fuzzy -msgid "XML does not support infinite date values." -msgstr "NULLIF, set argümanları desteklememektedir" - -#: utils/adt/xml.c:1690 -#: utils/adt/xml.c:1717 -#, fuzzy -msgid "XML does not support infinite timestamp values." -msgstr "sonsuz timestap veri tipi üzerinde çıkarma işlemi yapılamaz" - -#: utils/adt/xml.c:2007 -#: utils/adt/xml.c:2171 -#: commands/portalcmds.c:168 -#: commands/portalcmds.c:222 -#: executor/execCurrent.c:66 -#, c-format -msgid "cursor \"%s\" does not exist" -msgstr "\"%s\" imleci mevcut değil" - -#: utils/adt/xml.c:2086 -msgid "invalid query" -msgstr "geçersiz sorgu" - -#: utils/adt/xml.c:3319 -#, fuzzy -msgid "invalid array for XML namespace mapping" -msgstr "namespace eşlemi için geçersiz dizi verilmiştir" - -#: utils/adt/xml.c:3320 -msgid "The array must be two-dimensional with length of the second axis equal to 2." -msgstr "" - -#: utils/adt/xml.c:3344 -msgid "empty XPath expression" -msgstr "boş XPath ifadesi" - -#: utils/adt/xml.c:3392 -#, fuzzy -msgid "neither namespace name nor URI may be null" -msgstr "ne isim ne de URI, NULL olamaz" - -#: utils/adt/xml.c:3399 -#, fuzzy, c-format -msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" -msgstr "prefix=\"%s\" ve href=\"%s\" olan ad XML namespace oluştutulamaz" - -#: 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 karakter kümeleri için beklemnmeyen kodlama ID %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 "ISO-8859 karakter kümesi için beklemnmeyen kodlama ID %d" - -#: utils/mb/conv.c:509 -#, c-format -msgid "invalid encoding number: %d" -msgstr "kodlama numarası geçersiz: %d" - -#: utils/mb/encnames.c:564 -msgid "encoding name too long" -msgstr "kodlama ismi çok uzun" - -#: utils/mb/mbutils.c:240 -#: commands/variable.c:665 -#, c-format -msgid "conversion between %s and %s is not supported" -msgstr "%s ile %s arasında conversion desteklenmemektedir" - -#: utils/mb/mbutils.c:310 -#, c-format -msgid "default conversion function for encoding \"%s\" to \"%s\" does not exist" -msgstr "\"%s\" kodlamasından \"%s\" varsayılan kodlamasına dönüştürme fonksiyonu mevcut değildir" - -#: utils/mb/mbutils.c:336 -#: utils/mb/mbutils.c:597 -#, c-format -msgid "String of %d bytes is too long for encoding conversion." -msgstr "" - -#: utils/mb/mbutils.c:423 -#, c-format -msgid "invalid source encoding name \"%s\"" -msgstr "geçersiz kaynak dil kodlaması adı \"%s\"" - -#: utils/mb/mbutils.c:428 -#, c-format -msgid "invalid destination encoding name \"%s\"" -msgstr "geçersiz hedef dil kodlaması adı \"%s\"" - -#: utils/mb/mbutils.c:529 -#, c-format -msgid "invalid byte value for encoding \"%s\": 0x%02x" -msgstr "\"%s\" dil kodlaması için geçersiz bayt değeri: 0x%02x" - -#: utils/mb/mbutils.c:724 -msgid "invalid multibyte character for locale" -msgstr "karakter kapsamı için geçersiz isimler" - -#: utils/mb/mbutils.c:725 -msgid "The server's LC_CTYPE locale is probably incompatible with the database encoding." -msgstr "Sunucunun LC_TYPE yerel ayarı veritabanı kodlaması ile uyumsuz." - -#: utils/mb/wchar.c:1609 -#, c-format -msgid "invalid byte sequence for encoding \"%s\": 0x%s" -msgstr "\"%s\" dil kodlaması için geçersiz bayt dizisi: 0x%s" - -#: utils/mb/wchar.c:1612 -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 "Bu hata ayrıca bayt sırasının sunucunun beklediği kodlamada olmadığı zaman meydana gelmektedir. İstemci dil kodlaması \"client_encoding\" seçeneği ile ayarlanmaktadır." - -#: utils/mb/wchar.c:1641 -#, c-format -msgid "character 0x%s of encoding \"%s\" has no equivalent in \"%s\"" -msgstr "\"%2$s\" kodlamasının 0x%1$s karakterinin \"%3$s\" kodlamasında karşılığı yoktur" - -#: utils/sort/logtape.c:213 -#, c-format -msgid "could not write block %ld of temporary file: %m" -msgstr "geçici dosyasının %ld bloku yazılamıyor: %m" - -#: utils/sort/logtape.c:215 -msgid "Perhaps out of disk space?" -msgstr "Disk dolu mu?" - -#: utils/sort/logtape.c:232 -#, c-format -msgid "could not read block %ld of temporary file: %m" -msgstr "geçici dosyasının %ld bloku okunamıyor: %m" - -#: utils/sort/tuplesort.c:2806 -#, c-format -msgid "could not create unique index \"%s\"" -msgstr "\"%s\" tekil indexi yaratılamadı" - -#: utils/sort/tuplesort.c:2808 -msgid "Table contains duplicated values." -msgstr "Tabloda mukerrer değerler mevcut." - -#: utils/hash/dynahash.c:925 -#: storage/lmgr/lock.c:583 -#: storage/lmgr/lock.c:649 -#: storage/lmgr/lock.c:2051 -#: storage/lmgr/lock.c:2339 -#: storage/lmgr/lock.c:2404 -#: storage/lmgr/proc.c:186 -#: storage/lmgr/proc.c:199 -#: storage/ipc/shmem.c:190 -#: storage/ipc/shmem.c:359 -msgid "out of shared memory" -msgstr "shared memory yetersiz" - -#: utils/misc/guc.c:466 -msgid "Ungrouped" -msgstr "Diğer" - -#: utils/misc/guc.c:468 -msgid "File Locations" -msgstr "Dosya Konumları" - -#: utils/misc/guc.c:470 -msgid "Connections and Authentication" -msgstr "Bağlantı ve Kimlik Doğrulamaları" - -#: utils/misc/guc.c:472 -msgid "Connections and Authentication / Connection Settings" -msgstr "Bğlantılar ve Kimlik Doğrulaması/ Bağlantı Ayarları" - -#: utils/misc/guc.c:474 -msgid "Connections and Authentication / Security and Authentication" -msgstr "Bağlantı ve Kimlik Doğrulamaısı / Güvenlik ve Kimlik Doğrulaması" - -#: utils/misc/guc.c:476 -msgid "Resource Usage" -msgstr "Kaynak Kullanımı" - -#: utils/misc/guc.c:478 -msgid "Resource Usage / Memory" -msgstr "Kaynak Kullanımı / Bellek" - -#: utils/misc/guc.c:480 -msgid "Resource Usage / Kernel Resources" -msgstr "Kaynak Kullanımı / Kernel Kaynakları" - -#: utils/misc/guc.c:482 -msgid "Write-Ahead Log" -msgstr "Write-Ahead Log" - -#: utils/misc/guc.c:484 -msgid "Write-Ahead Log / Settings" -msgstr "Write-Ahead Log / Ayarlar" - -#: utils/misc/guc.c:486 -msgid "Write-Ahead Log / Checkpoints" -msgstr "Write-Ahead Log / Checkpoints" - -#: utils/misc/guc.c:488 -msgid "Query Tuning" -msgstr "Sorgu Performans Ayarları" - -#: utils/misc/guc.c:490 -msgid "Query Tuning / Planner Method Configuration" -msgstr "Sorgu Ayarları / Planlayıcı Metot Yapılandırması" - -#: utils/misc/guc.c:492 -msgid "Query Tuning / Planner Cost Constants" -msgstr "Sorgu Ayarları / Planlayıcı Cost Değişkenleri" - -#: utils/misc/guc.c:494 -msgid "Query Tuning / Genetic Query Optimizer" -msgstr "Sorgu Ayarları / Genetik Sorgu Optimizatörü" - -#: utils/misc/guc.c:496 -msgid "Query Tuning / Other Planner Options" -msgstr "Sorgu Ayarları / Planner'in Diğer Seçenekleri" - -#: utils/misc/guc.c:498 -msgid "Reporting and Logging" -msgstr "Raporlama ve Loglama" - -#: utils/misc/guc.c:500 -msgid "Reporting and Logging / Where to Log" -msgstr "Raporlama ve Günlük / Günlük Yeri" - -#: utils/misc/guc.c:502 -msgid "Reporting and Logging / When to Log" -msgstr "Raporlama ve Günlük / Günlük Tutma Zamanı" - -#: utils/misc/guc.c:504 -msgid "Reporting and Logging / What to Log" -msgstr "Reporting and Logging / Günlük İçeriği" - -#: utils/misc/guc.c:506 -msgid "Statistics" -msgstr "İstatistikler" - -#: utils/misc/guc.c:508 -msgid "Statistics / Monitoring" -msgstr "İstatistikler / Denetlemeler" - -#: utils/misc/guc.c:510 -msgid "Statistics / Query and Index Statistics Collector" -msgstr "İstatistikler / Sorgu ve İndeks İstatistik Toplayıcı" - -#: utils/misc/guc.c:512 -msgid "Autovacuum" -msgstr "Autovacuum" - -#: utils/misc/guc.c:514 -msgid "Client Connection Defaults" -msgstr "İstemci Bağlantı Varsayılanları" - -#: utils/misc/guc.c:516 -msgid "Client Connection Defaults / Statement Behavior" -msgstr "İstemci Bağlantı Varsayılan Seçenekleri / Deyim Davranışı" - -#: utils/misc/guc.c:518 -msgid "Client Connection Defaults / Locale and Formatting" -msgstr "İstemci Bağlantı Varsayılan Seçenekleri / Yerelleştirme ve Biçimlendirme" - -#: utils/misc/guc.c:520 -msgid "Client Connection Defaults / Other Defaults" -msgstr "İstemci Bağlantısı Varsayılan Değerler / Diğer Varsayılanlar" - -#: utils/misc/guc.c:522 -msgid "Lock Management" -msgstr "Lock Yönetimi" - -#: utils/misc/guc.c:524 -msgid "Version and Platform Compatibility" -msgstr "Sürüm ve Platform Uyumluluğu" - -#: utils/misc/guc.c:526 -msgid "Version and Platform Compatibility / Previous PostgreSQL Versions" -msgstr "Sürüm ve Platform Uyumluluğu / Önceki PostgreSQL Sürümleri" - -#: utils/misc/guc.c:528 -msgid "Version and Platform Compatibility / Other Platforms and Clients" -msgstr "Sürüm ve Platform Uyumluluğu / Diğer Platform ve İstemci" - -#: utils/misc/guc.c:530 -msgid "Preset Options" -msgstr "Önceden Tanımlanmış Seçenekler" - -#: utils/misc/guc.c:532 -msgid "Customized Options" -msgstr "Özel Ayarlar" - -#: utils/misc/guc.c:534 -msgid "Developer Options" -msgstr "Program geliştirici Seçenekleri" - -#: utils/misc/guc.c:588 -msgid "Enables the planner's use of sequential-scan plans." -msgstr "Planlayıcının sequential-scan planları kullanmaya izin ver." - -#: utils/misc/guc.c:596 -msgid "Enables the planner's use of index-scan plans." -msgstr "Planlayıcının index-scan planları kullanmaya izin ver." - -#: utils/misc/guc.c:604 -msgid "Enables the planner's use of bitmap-scan plans." -msgstr "Planlayıcının bitmap-scan planları kullanmaya izin veriyor." - -#: utils/misc/guc.c:612 -msgid "Enables the planner's use of TID scan plans." -msgstr "Planlayıcının TID scan planları kullanmaya izin ver." - -#: utils/misc/guc.c:620 -msgid "Enables the planner's use of explicit sort steps." -msgstr "Planlayıcının açık sıralama adımlarını kullanmaya izin ver." - -#: utils/misc/guc.c:628 -msgid "Enables the planner's use of hashed aggregation plans." -msgstr "Planlayıcının hashed aggregatin planlarını kullanmaya izin ver." - -#: utils/misc/guc.c:636 -msgid "Enables the planner's use of nested-loop join plans." -msgstr "Planlayıcının nested-loop planları kullanmaya izin ver." - -#: utils/misc/guc.c:644 -msgid "Enables the planner's use of merge join plans." -msgstr "Planlayıcının merge join planları kullanmaya izin ver." - -#: utils/misc/guc.c:652 -msgid "Enables the planner's use of hash join plans." -msgstr "Planlayıcının hash join planları kullanmaya izin ver." - -#: utils/misc/guc.c:660 -msgid "Enables genetic query optimization." -msgstr "Genetic query optimization algoritmasını etkinleştiriyor." - -#: utils/misc/guc.c:661 -msgid "This algorithm attempts to do planning without exhaustive searching." -msgstr "Bu algoritma planlamayı, tam bir arama yapılamadan yapmayı deniyor." - -#: utils/misc/guc.c:670 -msgid "Shows whether the current user is a superuser." -msgstr "Geçerli kullanıcının superuser olup olmadığını gösterir" - -#: utils/misc/guc.c:679 -msgid "Enables SSL connections." -msgstr "SSL bağlantıları etkinleştiriyor." - -#: utils/misc/guc.c:687 -msgid "Forces synchronization of updates to disk." -msgstr "Disk göncellemelerin anuyumlu olmasını zorluyor" - -#: utils/misc/guc.c:688 -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 "Sunucu, güncellemelerin fiziksel olarak diske yazılmasına emin olmak için fsync() sistem fonksiyonunu kullanıyor. Bu, işletim sistemi veya donanımın çöküşünden sonra veritabanı cluster'in tutarlı bir duruma kurtarılmasını garantiliyor." - -#: utils/misc/guc.c:698 -msgid "Sets immediate fsync at commit." -msgstr "commit işleminde anlık fsync gönderimini ayarlar." - -#: utils/misc/guc.c:706 -msgid "Continues processing past damaged page headers." -msgstr "Bozulmuş sayfa başlıkları atlayarak işlemeye devam ediyor." - -#: utils/misc/guc.c:707 -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 "Bozuk bir sayfanın algılanması genellikle PostgreSQL'in hatanın raporlaması ve geçerli transactionun durdururlmasına yol açıyor. zero_damaged_pages parametresine true atayınca, sistem bir uyarı raporlayıp, hatalı sayfayı sıfırlayıp işlemeye devam etmesine sebep oluyor. Bu davranış, bozuk sayfadaki tüm satırları silecektir." - -#: utils/misc/guc.c:719 -msgid "Writes full pages to WAL when first modified after a checkpoint." -msgstr "Checkpoint sonrasında ilk değiştirildiğinde sayfayı tamamiyle WAL loguna yazıyor." - -#: utils/misc/guc.c:720 -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 "İşletim sistemi çöktüğü anda sayfa diske yazması işlemi gerçekleştiriyorsa, sayfa, sadece kısmen yazılmış olabilir. Dolayısıyla kurtarma sırasında WAL içinde kaydedilmiş satır değişiklikleri yetersiz olabilir. Bu seçenek, sayfaları, checkpoint işleminden sonra ilk değiştirildiğinde sadece değişikliği değil, tam sayfayı WAL loguna yazıyor böylece tam bir kurtarmaya olanak tanıyor." - -#: utils/misc/guc.c:731 -msgid "Runs the server silently." -msgstr "Sunucusunu sessiz biçimde çalıştır." - -#: utils/misc/guc.c:732 -msgid "If this parameter is set, the server will automatically run in the background and any controlling terminals are dissociated." -msgstr "Bu parametre ayarlı ise, sunucu süreci, arka planda çalışacak ve sürecine bağlı tüm uçbirimlerin ilişkileri kesilecektir." - -#: utils/misc/guc.c:740 -msgid "Logs each checkpoint." -msgstr "Her checkpoint işlemini kaydeder" - -#: utils/misc/guc.c:748 -msgid "Logs each successful connection." -msgstr "Her başarılı bağlantıyı günlüğüne kaydediyor." - -#: utils/misc/guc.c:756 -msgid "Logs end of a session, including duration." -msgstr "Outum sonu ve toplam zamanı günlüğüne kaydediyor." - -#: utils/misc/guc.c:764 -msgid "Turns on various assertion checks." -msgstr "Çeşitli ısrar hata kontrollerini açıyor." - -#: utils/misc/guc.c:765 -msgid "This is a debugging aid." -msgstr "Bu bir debug yardımı." - -#: utils/misc/guc.c:779 -#: utils/misc/guc.c:861 -#: utils/misc/guc.c:920 -#: utils/misc/guc.c:929 -#: utils/misc/guc.c:938 -#: utils/misc/guc.c:947 -#: utils/misc/guc.c:1513 -#: utils/misc/guc.c:1522 -msgid "No description available." -msgstr "Açıklama yok." - -#: utils/misc/guc.c:788 -msgid "Logs the duration of each completed SQL statement." -msgstr "Tamamlanmış her SQL sorgusunun süresini günlüğüne kaydediyor." - -#: utils/misc/guc.c:796 -msgid "Logs each query's parse tree." -msgstr "" - -#: utils/misc/guc.c:804 -msgid "Logs each query's rewritten parse tree." -msgstr "" - -#: utils/misc/guc.c:812 -#, fuzzy -msgid "Logs each query's execution plan." -msgstr "Her başarılı bağlantıyı günlüğüne kaydediyor." - -#: utils/misc/guc.c:820 -msgid "Indents parse and plan tree displays." -msgstr "Ayrıştırma ve plan ağaçları girintili yazıyor." - -#: utils/misc/guc.c:828 -msgid "Writes parser performance statistics to the server log." -msgstr "Ayrıştırıcı perfomans istatistiklerinin sunucu günlüğüne yazıyor." - -#: utils/misc/guc.c:836 -msgid "Writes planner performance statistics to the server log." -msgstr "Planlayıcı perfomans istatistiklerinin sunucu günlüğüne yazıyor." - -#: utils/misc/guc.c:844 -msgid "Writes executor performance statistics to the server log." -msgstr "Yürütücü perfomans istatistiklerinin sunucu günlüğüne yazıyor." - -#: utils/misc/guc.c:852 -msgid "Writes cumulative performance statistics to the server log." -msgstr "Birikimli perfomans istatistiklerinin sunucu günlüğüne yazıyor." - -#: utils/misc/guc.c:872 -msgid "Collects information about executing commands." -msgstr "Yürütülen komutların istatistik bilgilerini topluyor." - -#: utils/misc/guc.c:873 -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 "Her oturumunun şu anda yürütülen komutlarının bilgi ve komutun başlatma zamanı toplamayı etkinleştir." - -#: utils/misc/guc.c:882 -msgid "Collects statistics on database activity." -msgstr "Veritabanı etkinliği sırasında istatistikleri toplar." - -#: utils/misc/guc.c:891 -msgid "Updates the process title to show the active SQL command." -msgstr "Sürecin başlığında işlemede olan SQL komutu gösterilecek." - -#: utils/misc/guc.c:892 -msgid "Enables updating of the process title every time a new SQL command is received by the server." -msgstr "Sunucu tarafından her yeni SQL komutu alındığında sürecin başlığı güncellenecektir." - -#: utils/misc/guc.c:900 -msgid "Starts the autovacuum subprocess." -msgstr "Otomatik vacuum alt sürecini başlatıyor." - -#: utils/misc/guc.c:909 -msgid "Generates debugging output for LISTEN and NOTIFY." -msgstr "LISTEN ve NOTIFY için hata ayıklama çıkışını üretiyor." - -#: utils/misc/guc.c:958 -msgid "Logs long lock waits." -msgstr "Çok uzun sürek lock işlemlerini kaydeder." - -#: utils/misc/guc.c:967 -msgid "Logs the host name in the connection logs." -msgstr "Bağlantı günlüğünde makine adını kaydediyor." - -#: utils/misc/guc.c:968 -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 "Vasayılan ayarında bağlantı günlüğünde sadece IP adresi yazılıyor. Eğer makine adının de kaydedilmesini istiyorsanız bu ayarı açın ancak bu durumda maine adı çözümlemesi küçük bir performans düşüşüne sebep olacaktır." - -#: utils/misc/guc.c:978 -msgid "Causes subtables to be included by default in various commands." -msgstr "Çeşitli komutlara varsayılan olarak alt tabloların eklenmesine sebep olacak." - -#: utils/misc/guc.c:986 -msgid "Encrypt passwords." -msgstr "Parolaları şifrele." - -#: utils/misc/guc.c:987 -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 veya ALTER USER komutunda şifre verilmiş ancak ENCRYPTED veya UNENCRYPTED verilmemiş ise bu parametre şifrenin şifrelenmiş olyp olmayacağını belirtiyor." - -#: utils/misc/guc.c:996 -msgid "Treats \"expr=NULL\" as \"expr IS NULL\"." -msgstr "\"expr=NULL\" ifadesini \"expr IS NULL\" olarak yorumlanıyor." - -#: utils/misc/guc.c:997 -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 "Çık ise, expr = NULL (veya NULL = expr) şeklindeki ifadeler xpr IS NULL olarak algılanıyor, yani expr eğer null sonuç veriyorsa true, aksi taktirde false sonuçu getiriyor. Doğru davranış ise exp = NULL ifadesinin her zamn null döndürmesidir." - -#: utils/misc/guc.c:1008 -msgid "Enables per-database user names." -msgstr "Veritabanı bazlı kullanıcı isimlerini etkinleştiriyor." - -#: utils/misc/guc.c:1017 -msgid "This parameter doesn't do anything." -msgstr "Bu parametre bir şey yapmıyor." - -#: utils/misc/guc.c:1018 -msgid "It's just here so that we won't choke on SET AUTOCOMMIT TO ON from 7.3-vintage clients." -msgstr "Bu ayar 7.3 istemcilerin göndereceği SET AUTOCOMMIT TO ON komutunu doğru yorumlamak için konulmuştır." - -#: utils/misc/guc.c:1026 -msgid "Sets the default read-only status of new transactions." -msgstr "Yeni transactionlar için salt okunur durumunu ayarlıyor." - -#: utils/misc/guc.c:1034 -msgid "Sets the current transaction's read-only status." -msgstr "Geçerli transactionlar için salt okunur durumunu ayarlıyor." - -#: utils/misc/guc.c:1043 -msgid "Automatically adds missing table references to FROM clauses." -msgstr "FROM tümcesine eksik tabloları ekliyor." - -#: utils/misc/guc.c:1051 -msgid "Check function bodies during CREATE FUNCTION." -msgstr "CREATE FUNCTION sırasında fonksiyon gövdelerini kontrol ediyor." - -#: utils/misc/guc.c:1059 -msgid "Enable input of NULL elements in arrays." -msgstr "Arrayların çıktılarında NULL elemntlerinin yansıtmasını etkinleştir." - -#: utils/misc/guc.c:1060 -msgid "When turned on, unquoted NULL in an array input value means a null value; otherwise it is taken literally." -msgstr "Açık olduğunda, array girdisinde tırnak içinde alınmamış NULL değeri null anlamına gelir; aksi taktirde değer, olduğu gibi kabul edilir." - -#: utils/misc/guc.c:1069 -msgid "Create new tables with OIDs by default." -msgstr "Varsayılan olarak yeni tabloları OID ile oluştur." - -#: utils/misc/guc.c:1077 -#, fuzzy -msgid "Start a subprocess to capture stderr output and/or csvlogs into log files." -msgstr "stderr çıktısını günlük dosyasın kaydetmek için bir alt sürecini çalıştırıyor" - -#: utils/misc/guc.c:1085 -msgid "Truncate existing log files of same name during log rotation." -msgstr "Günlük dosyaları döndürme sırasında aynı isimle var olan günlük dosyaları kesiyor." - -#: utils/misc/guc.c:1095 -msgid "Emit information about resource usage in sorting." -msgstr "Alfabetik sıralama sırasında kaynak kullanımı hakkında bilgi ver." - -#: utils/misc/guc.c:1108 -#, fuzzy -msgid "Generate debugging output for synchronized scanning." -msgstr "LISTEN ve NOTIFY için hata ayıklama çıkışını üretiyor." - -#: utils/misc/guc.c:1122 -msgid "Enable bounded sorting using heap sort." -msgstr "" - -#: utils/misc/guc.c:1134 -msgid "Emit WAL-related debugging output." -msgstr "WAL ile ilgili hata ayıklama çıktısını yayıyor." - -#: utils/misc/guc.c:1145 -msgid "Datetimes are integer based." -msgstr "Datetime veri tipleri tam sayı bazlıdır" - -#: utils/misc/guc.c:1159 -#, fuzzy -msgid "Sets whether Kerberos and GSSAPI user names should be treated as case-insensitive." -msgstr "Kerberos kullanıcı adları büyük ve küçük harf duyarıl olup olmayacağını belirtiyor." - -#: utils/misc/guc.c:1168 -msgid "Warn about backslash escapes in ordinary string literals." -msgstr "Standart satırlarındaters taksimler kullanıldığında uyar." - -#: utils/misc/guc.c:1177 -msgid "Causes '...' strings to treat backslashes literally." -msgstr "'...' satırları ters taksimleri olduğu gibi algılmasını belirtiyor." - -#: utils/misc/guc.c:1187 -#, fuzzy -msgid "Enable synchronized sequential scans." -msgstr "Planlayıcının sequential-scan planları kullanmaya izin ver." - -#: utils/misc/guc.c:1196 -msgid "Allows archiving of WAL files using archive_command." -msgstr "WAL dosyalarının archive_command kullanarak arşivlenmesine izin verir." - -#: utils/misc/guc.c:1205 -msgid "Allows modifications of the structure of system tables." -msgstr "Sistem tablolarının yapısının değiştirilmesine izin veriyor" - -#: utils/misc/guc.c:1215 -msgid "Disables reading from system indexes." -msgstr "Sistem indekslerinden okumayı engeller." - -#: utils/misc/guc.c:1216 -msgid "It does not prevent updating the indexes, so it is safe to use. The worst consequence is slowness." -msgstr "Indekslerinin değiştirmesini engellemediği için zarasızdır. En kötü sonuç yavaşlamadır." - -#: utils/misc/guc.c:1235 -msgid "Forces a switch to the next xlog file if a new file has not been started within N seconds." -msgstr "yeni xlog dosyası N saniye olşmamışsa log switch yapılacaktır" - -#: utils/misc/guc.c:1245 -msgid "Waits N seconds on connection startup after authentication." -msgstr "İstemci kimlik doğrulamasından sonra N saniye bekiyor." - -#: utils/misc/guc.c:1246 -#: utils/misc/guc.c:1584 -msgid "This allows attaching a debugger to the process." -msgstr "Hata ayıklayıcının bağlanmasına izin veriyor." - -#: utils/misc/guc.c:1254 -msgid "Sets the default statistics target." -msgstr "Varsayılan istatistik hedefi ayarlıyor." - -#: utils/misc/guc.c:1255 -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 komutuyla sütun bazlı hedef ayarlanmamışsa bu seçenek uygulanır." - -#: utils/misc/guc.c:1263 -msgid "Sets the FROM-list size beyond which subqueries are not collapsed." -msgstr "FROM listesi bu boyuttan büyükse alt sorguları araltılmayacaktır." - -#: utils/misc/guc.c:1265 -msgid "The planner will merge subqueries into upper queries if the resulting FROM list would have no more than this many items." -msgstr "FROM listesinde bu değerinden az öğe varse, planlayıcı alt sorgularını üst sorgu ile birleştirecek." - -#: utils/misc/guc.c:1274 -msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened." -msgstr "FROM listesi uzunluğu bu değerden büyükse JOIN ifadeler düzleştirilmeyecektir." - -#: utils/misc/guc.c:1276 -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 "Listede bu değerden daha çok nesne olursa, planlayıcısı belirlenmiş JOIN ifadeleri FROM nesnelerin listesine çevirecektir." - -#: utils/misc/guc.c:1285 -msgid "Sets the threshold of FROM items beyond which GEQO is used." -msgstr "FROM öğe sayısı bu eşiği geçince GEQO kullanılacaktır." - -#: utils/misc/guc.c:1293 -msgid "GEQO: effort is used to set the default for other GEQO parameters." -msgstr "GEQO: diğer GEQO parametreleri ayarlam için effort kullanılıyor." - -#: utils/misc/guc.c:1301 -msgid "GEQO: number of individuals in the population." -msgstr "GEQO: nüfusun içinde kişi sayısı." - -#: utils/misc/guc.c:1302 -#: utils/misc/guc.c:1310 -msgid "Zero selects a suitable default value." -msgstr "Sıfır ise uygun bir varsayılan değer atanıyor." - -#: utils/misc/guc.c:1309 -msgid "GEQO: number of iterations of the algorithm." -msgstr "GEQO: algoritm döngü sayısı." - -#: utils/misc/guc.c:1319 -msgid "Sets the time to wait on a lock before checking for deadlock." -msgstr "Bir lock üzerinde deadlock kontrolü yapmadan geçmesi gereken süreyi bielirtiyor." - -#: utils/misc/guc.c:1337 -msgid "Sets the maximum number of concurrent connections." -msgstr "Maksimum bağlantı sayısını ayarlıyor." - -#: utils/misc/guc.c:1346 -msgid "Sets the number of connection slots reserved for superusers." -msgstr "Superuser için rezerve edilmiş bağlantı sayısını ayarlıyor." - -#: utils/misc/guc.c:1355 -msgid "Sets the number of shared memory buffers used by the server." -msgstr "Sunucu tarafıundan kullanılacak shared memory arabellek sayısını ayarlıyor." - -#: utils/misc/guc.c:1365 -msgid "Sets the maximum number of temporary buffers used by each session." -msgstr "Her oturumun kullanabileceği en yüksek geçici buffer sayısı" - -#: utils/misc/guc.c:1375 -msgid "Sets the TCP port the server listens on." -msgstr "Sunucun dinleyeceği TCP port numarasını ayarlıyor." - -#: utils/misc/guc.c:1384 -msgid "Sets the access permissions of the Unix-domain socket." -msgstr "Unix-domain socket erişim haklarını ayarlıyor." - -#: utils/misc/guc.c:1385 -#, fuzzy -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 yvaları, standart Unix dosya sistemi izin altyapısını kullanıyor. Parametresi chmod ve umask sistem çağırılarının kabul edeceği biçimde numerik bir değerdir. (Sekizli sayı sistemi ile bir değer girecekseniz onu 0 (sıfır) ile başlatmalısınız.)" - -#: utils/misc/guc.c:1397 -msgid "Sets the maximum memory to be used for query workspaces." -msgstr "Sorgu çalışma alanları için kullanılacak en büyük bellek boyutu belirliyor." - -#: utils/misc/guc.c:1398 -msgid "This much memory can be used by each internal sort operation and hash table before switching to temporary disk files." -msgstr "Geçici disk dosyalarına başvurmadan dahili sort ve hash tablo işlemleirinin kullanabileceği bellek boyutu ayarlar." - -#: utils/misc/guc.c:1409 -msgid "Sets the maximum memory to be used for maintenance operations." -msgstr "Bakım işlemleri için kullanılacak en büyük bellek boyutu belirler." - -#: utils/misc/guc.c:1410 -msgid "This includes operations such as VACUUM and CREATE INDEX." -msgstr "Bu değer VACUUM ve CREATE INDEX gibi işlemleri için de geçerlidir." - -#: utils/misc/guc.c:1419 -msgid "Sets the maximum stack depth, in kilobytes." -msgstr "Kilobay olarak en büyük yığın boyutu ayarlar." - -#: utils/misc/guc.c:1429 -msgid "Vacuum cost for a page found in the buffer cache." -msgstr "Buffer cache içinde bulunan bir sayfanın vacuum işleme masrafı." - -#: utils/misc/guc.c:1438 -msgid "Vacuum cost for a page not found in the buffer cache." -msgstr "Buffer cache içinde bulunamayan bir sayfanın vacuum işleme masrafı." - -#: utils/misc/guc.c:1447 -msgid "Vacuum cost for a page dirtied by vacuum." -msgstr "Vacuum tarafında değiştirilecek sayfanın işleme masrafı." - -#: utils/misc/guc.c:1456 -msgid "Vacuum cost amount available before napping." -msgstr "Vacuum işleminin uyku durumuna geçmeden önce ne kadar işlem yapması. Yani bir geçişte ne kadar işlem yapacağı." - -#: utils/misc/guc.c:1465 -msgid "Vacuum cost delay in milliseconds." -msgstr "Vacuum işleminin milisaniye değeri." - -#: utils/misc/guc.c:1475 -msgid "Vacuum cost delay in milliseconds, for autovacuum." -msgstr "Vacuum işleminin masrafının milisaniye değeri (autovacuum için)." - -#: utils/misc/guc.c:1485 -msgid "Vacuum cost amount available before napping, for autovacuum." -msgstr "Vacuum işleminin uyku durumuna geçmeden önce ne kadar işlem yapması. Yani bir geçişte ne kadar işlem yapacağı." - -#: utils/misc/guc.c:1494 -msgid "Sets the maximum number of simultaneously open files for each server process." -msgstr "Her sunucu sürecinin içi aynı anda olabilecek en büyük açık dosya sayısı." - -#: utils/misc/guc.c:1503 -msgid "Sets the maximum number of simultaneously prepared transactions." -msgstr "Aynı zamanda olabilecek en çok prepared transaction sayısı." - -#: utils/misc/guc.c:1533 -msgid "Sets the maximum allowed duration of any statement." -msgstr "Bir sorgunun en çok çalışma zamanı." - -#: utils/misc/guc.c:1534 -msgid "A value of 0 turns off the timeout." -msgstr "0 (sıfır) değeri, zaman aşımını kapatıyor." - -#: utils/misc/guc.c:1543 -msgid "Minimum age at which VACUUM should freeze a table row." -msgstr "VACUUM, satırın üzerinde freeze işlemi yapabilecek yaşlılık süresi." - -#: utils/misc/guc.c:1552 -#, fuzzy -msgid "Age at which VACUUM should scan whole table to freeze tuples." -msgstr "VACUUM, satırın üzerinde freeze işlemi yapabilecek yaşlılık süresi." - -#: utils/misc/guc.c:1561 -msgid "Sets the maximum number of locks per transaction." -msgstr "Bir transaction içinde en yüksek olabilecek kilit sayısı." - -#: utils/misc/guc.c:1562 -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 "Bu tablonun boyutu, max_locks_per_transaction * max_connections kadar ayrı nesneye bir anda kilit uygulamaya gerektiğini göz önünde bulundurarak ayarlanır." - -#: utils/misc/guc.c:1572 -msgid "Sets the maximum allowed time to complete client authentication." -msgstr "İstemci kimlik doğrulamasını yapmak için zaman sınırı ayarlar." - -#: utils/misc/guc.c:1583 -msgid "Waits N seconds on connection startup before authentication." -msgstr "İstemci kimlik doğrulamasından önce N saniye bekiyor." - -#: utils/misc/guc.c:1593 -msgid "Sets the maximum distance in log segments between automatic WAL checkpoints." -msgstr "Otomatic WAL denetim noktaları (checkpoint) arasında katedilecek log segment saytısı." - -#: utils/misc/guc.c:1602 -msgid "Sets the maximum time between automatic WAL checkpoints." -msgstr "Otomatic WAL denetim noktaları (checkpoint) arasında geçecek zaman dilimi." - -#: utils/misc/guc.c:1612 -msgid "Enables warnings if checkpoint segments are filled more frequently than this." -msgstr "Eğer log denetim noktası (checkpoint) bu değerden daha sık oluyorsa günlüğüne bir not düş." - -#: utils/misc/guc.c:1614 -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 "Checkpoint segment dosyaların dolması nedeniyle denetim noktası (checkpoint) olayı bu değerdeki saniye sayısından daha sık oluyorsa sunucu günlük dosyasına not düş. Sıfır ise bu uyarıyı kapat." - -#: utils/misc/guc.c:1625 -msgid "Sets the number of disk-page buffers in shared memory for WAL." -msgstr "WAL için shared memory arabellek disk-sayfa sayısı." - -#: utils/misc/guc.c:1635 -#, fuzzy -msgid "WAL writer sleep time between WAL flushes." -msgstr "Background writer'in seferleri arasında hareketsiz kalacağı zaman süresi." - -#: utils/misc/guc.c:1645 -msgid "Sets the delay in microseconds between transaction commit and flushing WAL to disk." -msgstr "Transaction commit ile WAL dosyaların diske yazılması arasında milisaniye olarak gecikme süresi ayarlar." - -#: utils/misc/guc.c:1655 -msgid "Sets the minimum concurrent open transactions before performing commit_delay." -msgstr "commit_delay uygulamadan önce en az bu değer koşutzamanlı transaction olacak." - -#: utils/misc/guc.c:1665 -msgid "Sets the number of digits displayed for floating-point values." -msgstr "Floating-point değerlerinde gösterilecek rakam asyısı ayarlar." - -#: utils/misc/guc.c:1666 -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 "Bu ayar, real, double precision ve geometrik veri tiplerinde klullanılır. Bu değer, standart rakam sayısına eklenmektedir (FLT_DIG veya DBL_DIG)." - -#: utils/misc/guc.c:1676 -msgid "Sets the minimum execution time above which statements will be logged." -msgstr "Bu süreden uzun süre çalışacak sorgular log dosyasına yazılacaktır." - -#: utils/misc/guc.c:1678 -#, fuzzy -msgid "Zero prints all queries. -1 turns this feature off." -msgstr "Sifir ise tüm sorguları yazılacak. Varsayılan değer -1 (bu özellik kapalıdır)." - -#: utils/misc/guc.c:1687 -msgid "Sets the minimum execution time above which autovacuum actions will be logged." -msgstr "Autovacuum bu süreden çok zaman alırsa, eylemleri ayda alınacaktır." - -#: utils/misc/guc.c:1689 -#, fuzzy -msgid "Zero prints all actions. -1 turns autovacuum logging off." -msgstr "Sifir ise tüm eylemleri yazılacak. Varsayılan değer -1 (bu özellik kapalıdır)." - -#: utils/misc/guc.c:1698 -msgid "Background writer sleep time between rounds." -msgstr "Background writer'in seferleri arasında hareketsiz kalacağı zaman süresi." - -#: utils/misc/guc.c:1708 -msgid "Background writer maximum number of LRU pages to flush per round." -msgstr "Her seferinde background writer'in diske yazaçağı LRU sayfaların maximum sayısı." - -#: utils/misc/guc.c:1723 -msgid "Number of simultaneous requests that can be handled efficiently by the disk subsystem." -msgstr "" - -#: utils/misc/guc.c:1724 -msgid "For RAID arrays, this should be approximately the number of drive spindles in the array." -msgstr "" - -#: utils/misc/guc.c:1737 -msgid "Automatic log file rotation will occur after N minutes." -msgstr "Otomatik log dosya değişimi N dakikada bir gerçekleşecek." - -#: utils/misc/guc.c:1747 -msgid "Automatic log file rotation will occur after N kilobytes." -msgstr "Otomatik olg dosya değişimi N kilobayttan sonra gerçekleşecek." - -#: utils/misc/guc.c:1757 -msgid "Shows the maximum number of function arguments." -msgstr "Fonksiyon argünamlarının olabileceği en büyük sayısını gösteriyor." - -#: utils/misc/guc.c:1767 -msgid "Shows the maximum number of index keys." -msgstr "İndeks değerlerinin olabileceği en büyük sayısını gösteriyor." - -#: utils/misc/guc.c:1777 -msgid "Shows the maximum identifier length." -msgstr "Bır tanıtıcının en maximum uzunluğunu gösteriyor." - -#: utils/misc/guc.c:1787 -msgid "Shows the size of a disk block." -msgstr "Bir disk blokunun boyutunu gösteriyor." - -#: utils/misc/guc.c:1797 -#, fuzzy -msgid "Shows the number of pages per disk file." -msgstr "Bir disk blokunun boyutunu gösteriyor." - -#: utils/misc/guc.c:1807 -msgid "Shows the block size in the write ahead log." -msgstr "" - -#: utils/misc/guc.c:1817 -msgid "Shows the number of pages per write ahead log segment." -msgstr "" - -#: utils/misc/guc.c:1830 -msgid "Time to sleep between autovacuum runs." -msgstr "Autovacuum çalıştırmaları arasında bekleme zamanı." - -#: utils/misc/guc.c:1839 -msgid "Minimum number of tuple updates or deletes prior to vacuum." -msgstr "Vacuum işleminin başlaması için gereken düşük tuple update veya deleta sayısı." - -#: utils/misc/guc.c:1847 -msgid "Minimum number of tuple inserts, updates or deletes prior to analyze." -msgstr "Analyze işleminin başlaması için gereken düşük tuple insert, update veya deleta sayısı." - -#: utils/misc/guc.c:1856 -msgid "Age at which to autovacuum a table to prevent transaction ID wraparound." -msgstr "ID sarımı önemek için autovacuum yapılacağı yaşlılık değeri." - -#: utils/misc/guc.c:1865 -msgid "Sets the maximum number of simultaneously running autovacuum worker processes." -msgstr "Aynı anda çalışacak autovacuum süreç sayısını ayarlıyor." - -#: utils/misc/guc.c:1874 -msgid "Time between issuing TCP keepalives." -msgstr "TCP keepalive göndermelerin arasında saniye sayısı." - -#: utils/misc/guc.c:1875 -#: utils/misc/guc.c:1885 -msgid "A value of 0 uses the system default." -msgstr "0 (sıfır) değeri, sistem varsayılan değeri etkinleştirir." - -#: utils/misc/guc.c:1884 -msgid "Time between TCP keepalive retransmits." -msgstr "TCP keepalive yeniden göndermelerin arasında saniye sayısı." - -#: utils/misc/guc.c:1894 -msgid "Maximum number of TCP keepalive retransmits." -msgstr "En yüksek TCP keepalive gönderme sayısı." - -#: utils/misc/guc.c:1895 -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 "Keepalive açıkken, bir bağlantının kopmuş olmasını sayılamadan gönderilecek mükerrer paket sayısı. 0 (sıfır) değeri sistemdeki varsayılan eğerini alıyor." - -#: utils/misc/guc.c:1905 -msgid "Sets the maximum allowed result for exact search by GIN." -msgstr "GIN sorgulaması için izin verilen en yüksek sonuç sayısı." - -#: utils/misc/guc.c:1915 -msgid "Sets the planner's assumption about the size of the disk cache." -msgstr "Disk cache boyutu hakkında planner'in tahmini değerini belirtiyor." - -#: utils/misc/guc.c:1916 -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 "Yani kernel'in disk cache alanının PostgreSQL veri dosyaları için kullanılacak kısmının tahmini. Bu deşer, disk page birimleriyle giriliyor, bir disk page genellikle 8 kilobayttır." - -#: utils/misc/guc.c:1928 -msgid "Shows the server version as an integer." -msgstr "Sunucunun sürümünü tamsayı olarak gösteriyor." - -#: utils/misc/guc.c:1938 -msgid "Log the use of temporary files larger than this number of kilobytes." -msgstr "Bu kadar kilobayttan büyük geçici dosya kullanıldığında log tutuyor." - -#: utils/misc/guc.c:1939 -msgid "Zero logs all files. The default is -1 (turning this feature off)." -msgstr "Sifir, tüm dosyaları logluyor. Varsayılan değer -1 (bu özellik kapalıdır)." - -#: utils/misc/guc.c:1948 -msgid "Sets the size reserved for pg_stat_activity.current_query, in bytes." -msgstr "" - -#: utils/misc/guc.c:1966 -msgid "Sets the planner's estimate of the cost of a sequentially fetched disk page." -msgstr "Dıskten sırayla sayfa okuması için harcanacak işlem zamanı tahminini belirtiyor." - -#: utils/misc/guc.c:1975 -msgid "Sets the planner's estimate of the cost of a nonsequentially fetched disk page." -msgstr "Nonsequential disk page getirme işlemlerin tahmini zamanı belirtiyor." - -#: utils/misc/guc.c:1984 -msgid "Sets the planner's estimate of the cost of processing each tuple (row)." -msgstr "Bir satır işlemek için harcanacak işlem zamanı tahminini belirtiyor." - -#: utils/misc/guc.c:1993 -msgid "Sets the planner's estimate of the cost of processing each index entry during an index scan." -msgstr "Bir index taraması sırasında indexin her satırının taramasını yapmak için harcanacak işlem zamanı tahminini belirtiyor." - -#: utils/misc/guc.c:2002 -msgid "Sets the planner's estimate of the cost of processing each operator or function call." -msgstr "Bir operator veya fonksiyon çağırımı yapmak için harcanacak işlem zamanı tahminini belirtiyor." - -#: utils/misc/guc.c:2012 -#, fuzzy -msgid "Sets the planner's estimate of the fraction of a cursor's rows that will be retrieved." -msgstr "Bir satır işlemek için harcanacak işlem zamanı tahminini belirtiyor." - -#: utils/misc/guc.c:2022 -msgid "GEQO: selective pressure within the population." -msgstr "GEQO: selective pressure within the population. Oha be, query'yi mi optimize ediyoruz, piliç mi yetiştiriyoruz, yuh." - -#: utils/misc/guc.c:2032 -#, fuzzy -msgid "Multiple of the average buffer usage to free per round." -msgstr "Her seferinde background writer'in diske yazaçağı LRU bufferlerin yüzdesi." - -#: utils/misc/guc.c:2041 -msgid "Sets the seed for random-number generation." -msgstr "Random-number üretimi için seed değerini belirtiyor." - -#: utils/misc/guc.c:2051 -msgid "Number of tuple updates or deletes prior to vacuum as a fraction of reltuples." -msgstr "Vacuum işleminin başlaması için en düşük tuple update ve delete sayısı (retuple bölümü olarak)." - -#: utils/misc/guc.c:2059 -msgid "Number of tuple inserts, updates or deletes prior to analyze as a fraction of reltuples." -msgstr "Analyze işleminin başlaması için en düşük tuple insert, update ve delete sayısı (retuple bölümü olarak)." - -#: utils/misc/guc.c:2068 -msgid "Time spent flushing dirty buffers during checkpoint, as fraction of checkpoint interval." -msgstr "" - -#: utils/misc/guc.c:2086 -msgid "Sets the shell command that will be called to archive a WAL file." -msgstr "WAL dosyasını arşivlemek için çağırılacak kabuk komutunu ayarlıyor ." - -#: utils/misc/guc.c:2095 -msgid "Sets the client's character set encoding." -msgstr "İstemci karakter kodlamasını belirtiyor." - -#: utils/misc/guc.c:2105 -msgid "Controls information prefixed to each log line." -msgstr "Log satırlarının başlarına eklenecek bilgiyi ayarlıyor." - -#: utils/misc/guc.c:2106 -msgid "If blank, no prefix is used." -msgstr "Boş ise ön ek kullanlmayacak." - -#: utils/misc/guc.c:2114 -#, fuzzy -msgid "Sets the time zone to use in log messages." -msgstr "Log mesajlarının ayrıntı düzei belirtiyor." - -#: utils/misc/guc.c:2123 -msgid "Sets the display format for date and time values." -msgstr "Tarih ve zaman girişleri için biçim maskesini belirtiyor." - -#: utils/misc/guc.c:2124 -msgid "Also controls interpretation of ambiguous date inputs." -msgstr "Ayrıca belirsiz tarih girişinin yorumlamasını belirtiyor." - -#: utils/misc/guc.c:2134 -msgid "Sets the default tablespace to create tables and indexes in." -msgstr "İndeksleri oluşturma işemi için varsayılan tablespace ayarlıyor" - -#: utils/misc/guc.c:2135 -msgid "An empty string selects the database's default tablespace." -msgstr "Boş değer, veritabanının varsayılan tablespace'ı seçmektedir." - -#: utils/misc/guc.c:2144 -#, fuzzy -msgid "Sets the tablespace(s) to use for temporary tables and sort files." -msgstr "İndeksleri oluşturma işemi için varsayılan tablespace ayarlıyor" - -#: utils/misc/guc.c:2154 -msgid "Sets the path for dynamically loadable modules." -msgstr "Dinamik yüklenebilen modülleri arama dizinlerini belirtiyor." - -#: utils/misc/guc.c:2155 -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 "Bir dinamik kütüphane açmak gerektiğinde dosya adında dizin kısmı yoksa (dosya adın içinde taksim kararkteri yoksa), sistem, kütüphaneleri bulmak için bu dizinleri arayacak." - -#: utils/misc/guc.c:2167 -msgid "Sets the location of the Kerberos server key file." -msgstr "Kerberos server key dosyasının yerini belirtiyor." - -#: utils/misc/guc.c:2177 -msgid "Sets the name of the Kerberos service." -msgstr "Kerberos sevice adını belirtiyor." - -#: utils/misc/guc.c:2186 -msgid "Sets the Bonjour broadcast service name." -msgstr "Bonjour broadcast service adını belirtiyor." - -#: utils/misc/guc.c:2197 -msgid "Shows the collation order locale." -msgstr "Alfabetik sıralamasında kullanılacak locale ayarı gösteriyor." - -#: utils/misc/guc.c:2207 -msgid "Shows the character classification and case conversion locale." -msgstr "Karakter sınıflandırılması ve büyük/küçük çevirme işlemlerinde kullanıcak locale ayarı gösteriyor." - -#: utils/misc/guc.c:2217 -msgid "Sets the language in which messages are displayed." -msgstr "Mesajlarda kullanılacak dili belirtiyor." - -#: utils/misc/guc.c:2226 -msgid "Sets the locale for formatting monetary amounts." -msgstr "Parasal değerlerinin biçimlendirilmesinde kullanılacak locale ayarını belirtiyor." - -#: utils/misc/guc.c:2235 -msgid "Sets the locale for formatting numbers." -msgstr "Sayısal değerlerinin biçimlendirilmesinde kullanılacak locale ayarını belirtiyor." - -#: utils/misc/guc.c:2244 -msgid "Sets the locale for formatting date and time values." -msgstr "Tarih ve zaman değerlerinin biçimlendirilmesinde kullanılacak locale ayarını belirtiyor." - -#: utils/misc/guc.c:2253 -msgid "Lists shared libraries to preload into server." -msgstr "Sunucuya yüklenmiş ortak kütüphaneleri gösteriyor." - -#: utils/misc/guc.c:2263 -msgid "Lists shared libraries to preload into each backend." -msgstr "Her sunucuya yüklenenecek ortak kütüphaneleri gösteriyor." - -#: utils/misc/guc.c:2273 -msgid "Sets the schema search order for names that are not schema-qualified." -msgstr "Şema belirtilmediği takdirde isimlerin hangi şemalarda aranacağını belirtir." - -#: utils/misc/guc.c:2284 -msgid "Sets the server (database) character set encoding." -msgstr "Sunucu (veritabanı) karakter seti kodlamasını belirtiyor." - -#: utils/misc/guc.c:2295 -msgid "Shows the server version." -msgstr "Sunucunun sürümünü gösteriyor." - -#: utils/misc/guc.c:2306 -msgid "Sets the current role." -msgstr "Geçerli rolü belirtiyor." - -#: utils/misc/guc.c:2317 -msgid "Sets the session user name." -msgstr "Oturum açan kullanıcının ismini gösterir." - -#: utils/misc/guc.c:2327 -msgid "Sets the destination for server log output." -msgstr "Log dosyaları için hedef dizini belirtiyor." - -#: utils/misc/guc.c:2328 -#, fuzzy -msgid "Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and \"eventlog\", depending on the platform." -msgstr "Geçerli değerler, platforma bağlı olarak: \"stderr\", \"syslog\", and \"eventlog\"." - -#: utils/misc/guc.c:2338 -msgid "Sets the destination directory for log files." -msgstr "Log dosyaları için hedef dizini belirtiyor." - -#: utils/misc/guc.c:2339 -msgid "Can be specified as relative to the data directory or as absolute path." -msgstr "Bu değer hem veri dizininden göreceli hem de tam yol olabilir." - -#: utils/misc/guc.c:2348 -msgid "Sets the file name pattern for log files." -msgstr "Log dosyaları için kulanılacak şablonu belirtiyor." - -#: utils/misc/guc.c:2359 -msgid "Sets the program name used to identify PostgreSQL messages in syslog." -msgstr "Syslog içinde PostgreSQL mesajlarının kaynak olacağı program adını belirtiyor." - -#: utils/misc/guc.c:2370 -msgid "Sets the time zone for displaying and interpreting time stamps." -msgstr "Time stamp veri tipini çıktısında kullanılacak zaman dilimi belirtiyor." - -#: utils/misc/guc.c:2379 -msgid "Selects a file of time zone abbreviations." -msgstr "Timezone kısaltmaların olduğu dosyayı seçer." - -#: utils/misc/guc.c:2388 -msgid "Sets the current transaction's isolation level." -msgstr "Transaction isolation level belirtiyor." - -#: utils/misc/guc.c:2398 -msgid "Sets the owning group of the Unix-domain socket." -msgstr "Unix-domain socket grup sahipliğini belirtiyor." - -#: utils/misc/guc.c:2399 -msgid "The owning user of the socket is always the user that starts the server." -msgstr "Socket sahibi her zamn sunucu çalıştıran kullanıcıdır." - -#: utils/misc/guc.c:2408 -msgid "Sets the directory where the Unix-domain socket will be created." -msgstr "Unix-domain socket yarıtılacak dizinini belirtiyor." - -#: utils/misc/guc.c:2418 -msgid "Sets the host name or IP address(es) to listen to." -msgstr "Dinlenecek host adı veya IP adresleri belirtiyor." - -#: utils/misc/guc.c:2428 -msgid "Sets the list of known custom variable classes." -msgstr "Bilinen custom variable classes listesini belirtiyor." - -#: utils/misc/guc.c:2438 -msgid "Sets the server's data directory." -msgstr "Sunucusunun veri dizini belirtiyor." - -#: utils/misc/guc.c:2448 -msgid "Sets the server's main configuration file." -msgstr "Sunucunun ana konfigorasyon dosyasının yerini belirtiyor." - -#: utils/misc/guc.c:2458 -msgid "Sets the server's \"hba\" configuration file." -msgstr "Sunucusunun \"hba\" konfigurasyon dosyasını belirtiyor." - -#: utils/misc/guc.c:2468 -msgid "Sets the server's \"ident\" configuration file." -msgstr "Sunucusunun \"ident\" konfigurasyon dosyasını belirtiyor." - -#: utils/misc/guc.c:2478 -msgid "Writes the postmaster PID to the specified file." -msgstr "postmaster PID numarası belirtilen dosyaya yazar." - -#: utils/misc/guc.c:2488 -#, fuzzy -msgid "Writes temporary statistics files to the specified directory." -msgstr "postmaster PID numarası belirtilen dosyaya yazar." - -#: utils/misc/guc.c:2498 -msgid "Sets default text search configuration." -msgstr "Öntanımlı metin arama yapıkandırmasını ayarlar. " - -#: utils/misc/guc.c:2508 -msgid "Sets the list of allowed SSL ciphers." -msgstr "İzin verilen SSL şifreleme algoritmaların listesini ayarlıyor." - -#: utils/misc/guc.c:2528 -msgid "Sets whether \"\\'\" is allowed in string literals." -msgstr "Satır değişmezlerde \"\\'\" ifadesine izin verilip verilmeyeceğini belirtiyor." - -#: utils/misc/guc.c:2537 -msgid "Sets the message levels that are sent to the client." -msgstr "İstemciye yollancak mesaj düzeylerini belirtiyor." - -#: utils/misc/guc.c:2538 -#: utils/misc/guc.c:2587 -#: utils/misc/guc.c:2597 -#, fuzzy -msgid "Each level includes all the levels that follow it. The later the level, the fewer messages are sent." -msgstr "Geçerli değerler: DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, LOG, NOTICE, WARNING, and ERROR. Her düzey kendisinden daha büyük düzeyleri de kapsıyor. Düzey ne kadar yüksek ise o kadar az mesaj yollanıyor." - -#: utils/misc/guc.c:2547 -msgid "Enables the planner to use constraints to optimize queries." -msgstr "Planlayıcının sorgularını optimize etmek için constraints kullanmasına izin verir." - -#: utils/misc/guc.c:2548 -#, fuzzy -msgid "Table scans will be skipped if their constraints guarantee that no rows match the query." -msgstr "Constrainler tarafından sorguya uyan hiçbir satır uymayacağı garantilenirse child table scan yapılmayacaktır" - -#: utils/misc/guc.c:2558 -msgid "Sets the transaction isolation level of each new transaction." -msgstr "Her yeni transaction için transaction isolation level belirtiypr." - -#: utils/misc/guc.c:2567 -#, fuzzy -msgid "Sets the display format for interval values." -msgstr "Tarih ve zaman girişleri için biçim maskesini belirtiyor." - -#: utils/misc/guc.c:2577 -msgid "Sets the verbosity of logged messages." -msgstr "Log mesajlarının ayrıntı düzei belirtiyor." - -#: utils/misc/guc.c:2586 -msgid "Sets the message levels that are logged." -msgstr "Log dosyasına yazılacak mesajlarının düzeylerini belirtiyor." - -#: utils/misc/guc.c:2596 -msgid "Causes all statements generating error at or above this level to be logged." -msgstr "Belirtilen ya da daha üst düzeyde hata yaratan komutlarının gol dosyasına yazılacağına sebep olur." - -#: utils/misc/guc.c:2606 -msgid "Sets the type of statements logged." -msgstr "Log dosyasına yazılacak komutların tipini belirtiyor." - -#: utils/misc/guc.c:2616 -msgid "Sets the syslog \"facility\" to be used when syslog enabled." -msgstr "Syslog aktif durumunda kullanılacak syslog \"facility\" değerini belirtiyor." - -#: utils/misc/guc.c:2626 -msgid "Sets the regular expression \"flavor\"." -msgstr "\"flavor\" regular expression belirtiyor." - -#: utils/misc/guc.c:2635 -#, fuzzy -msgid "Sets the session's behavior for triggers and rewrite rules." -msgstr "Oturumun trigger ve rewrite rule davranışını belirtityor." - -#: utils/misc/guc.c:2645 -#, fuzzy -msgid "Collects function-level statistics on database activity." -msgstr "Veritabanı etkinliği sırasında istatistikleri toplar." - -#: utils/misc/guc.c:2654 -msgid "Selects the method used for forcing WAL updates to disk." -msgstr "WAL değikliklerinin diske yazılış yöntemini belirtiyor." - -#: utils/misc/guc.c:2664 -msgid "Sets how binary values are to be encoded in XML." -msgstr "İkili değerlerin XML içinde nasıl kodlanacağını belirtiyor." - -#: utils/misc/guc.c:2673 -msgid "Sets whether XML data in implicit parsing and serialization operations is to be considered as documents or content fragments." -msgstr "Ayrıştırma ve serialization işlemlerde XML veri birer document mi yoksa conten fragment olarak mı sayılacağını belirtiyor." - -#: utils/misc/guc.c:3443 -#, 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, greken konfigurasyon dosyasını bulamamaktadır.\n" -"Bu dosyanın --config-file veya -D başlatma parametresi veya PGDATA enviroment değişkeni ile belirtilebilir.\n" - -#: utils/misc/guc.c:3462 -#, c-format -msgid "%s cannot access the server configuration file \"%s\": %s\n" -msgstr "%s sunucu konfigurasyon dosyasına \"%s\" erişilemiyor: %s\n" - -#: utils/misc/guc.c:3482 -#, 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, greken veritabanı dosyaları bulamamaktadır.\n" -"Dizinin yeri \"%s\" dosyasında \"data_directory\" değişkeninde, -D başlatma parametresi veya PGDATA enviroment değişkeni ile belirtilebilir.\n" - -#: utils/misc/guc.c:3513 -#, 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, greken \"hba\" konfigurasyon dosyasını bulamamaktadır.\n" -"Bu dosyanın yeri \"%s\" dosyasında \"hba_file\" değişkeninde, -D başlatma parametresi veya PGDATA enviroment değişkeni ile belirtilebilir.\n" - -#: utils/misc/guc.c:3536 -#, 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, greken \"ident\" konfigurasyon dosyasını bulamamaktadır.\n" -"Bu dosyanın yeri \"%s\" dosyasında \"ident_file\" değişkeninde, başlatma parametresi -D veya PGDATA enviroment değişkeni ile belirtilebilir.\n" - -#: utils/misc/guc.c:4134 -#: utils/misc/guc.c:4302 -msgid "Value exceeds integer range." -msgstr "Değer tamsayı aralığını aşıyor." - -#: utils/misc/guc.c:4157 -msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"." -msgstr "Bu parametre için geçerli birimler \"kB\", \"MB\" ve \"GB\" 'dır." - -#: utils/misc/guc.c:4216 -msgid "Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"." -msgstr "Bu parametre için geçerli birimler: \"ms\", \"s\", \"min\", \"h\", ve \"d\"." - -#: utils/misc/guc.c:4524 -#: utils/misc/guc.c:5143 -#: utils/misc/guc.c:5191 -#: utils/misc/guc.c:5312 -#: utils/misc/guc.c:5892 -#: utils/misc/guc.c:6033 -#: guc-file.l:216 -#, c-format -msgid "unrecognized configuration parameter \"%s\"" -msgstr "\"%s\" bilinmeyen konfigurasyon parametresi" - -#: utils/misc/guc.c:4551 -#, c-format -msgid "parameter \"%s\" cannot be changed" -msgstr "\"%s\" parametresi değiştirilemez" - -#: utils/misc/guc.c:4568 -#: utils/misc/guc.c:4577 -#: guc-file.l:263 -#, fuzzy, c-format -msgid "attempted change of parameter \"%s\" ignored" -msgstr "\"%s\" parametresinin yeniden tanımlanma denemesi" - -#: utils/misc/guc.c:4570 -#: utils/misc/guc.c:4579 -#: guc-file.l:265 -#, fuzzy -msgid "This parameter cannot be changed after server start." -msgstr "\"%s\" parametresi, sunucu başlatıldıktan sonra değiştirilemez" - -#: utils/misc/guc.c:4588 -#, c-format -msgid "parameter \"%s\" cannot be changed now" -msgstr "\"%s\" parametresi şu anda değiştirilemez" - -#: utils/misc/guc.c:4618 -#, c-format -msgid "parameter \"%s\" cannot be set after connection start" -msgstr "\"%s\" parametresi bağlantı başlatıldıktan sonra değiştirilemez" - -#: utils/misc/guc.c:4628 -#, c-format -msgid "permission denied to set parameter \"%s\"" -msgstr "\"%s\" parametresi değiştirmek için erişim hatası" - -#: utils/misc/guc.c:4681 -#, c-format -msgid "parameter \"%s\" requires a Boolean value" -msgstr "\"%s\" seçeneği boolean değerini alır" - -#: utils/misc/guc.c:4703 -#: utils/misc/guc.c:4778 -#, c-format -msgid "invalid value for parameter \"%s\": %d" -msgstr "\"%s\" seçeneği için geçersiz değer: %d" - -#: utils/misc/guc.c:4747 -#: utils/misc/guc.c:4949 -#: utils/misc/guc.c:5015 -#: utils/misc/guc.c:5041 -#: guc-file.l:177 -#, c-format -msgid "invalid value for parameter \"%s\": \"%s\"" -msgstr "\"%s\" seçeneği için geçersiz değer: \"%s\"" - -#: utils/misc/guc.c:4756 -#, c-format -msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)" -msgstr "\"%2$s\" parametresi için %1$d değer sıra dışıdır (%3$d .. %4$d)" - -#: utils/misc/guc.c:4820 -#, c-format -msgid "parameter \"%s\" requires a numeric value" -msgstr "\"%s\" seçeneği sayısal değer gerektirir." - -#: utils/misc/guc.c:4828 -#, c-format -msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)" -msgstr "\"%2$s\" parametresi için %1$g değer sıra dışıdır (%3$g .. %4$g)" - -#: utils/misc/guc.c:4850 -#, c-format -msgid "invalid value for parameter \"%s\": %g" -msgstr "\"%s\" seçeneği için geçersiz değer: %g" - -#: utils/misc/guc.c:5147 -#: utils/misc/guc.c:5195 -#: utils/misc/guc.c:6037 -#, c-format -msgid "must be superuser to examine \"%s\"" -msgstr "\"%s\" değişkeninin değerini sorgulamak için superuser haklarına sahip olmalısınız" - -#: utils/misc/guc.c:5321 -#, c-format -msgid "SET %s takes only one argument" -msgstr "SET %s tek bir argüman alır" - -#: utils/misc/guc.c:5548 -msgid "SET requires parameter name" -msgstr "SET komutu patametre adını gerektirir" - -#: utils/misc/guc.c:5663 -#, c-format -msgid "attempt to redefine parameter \"%s\"" -msgstr "\"%s\" parametresinin yeniden tanımlanma denemesi" - -#: utils/misc/guc.c:6863 -#: utils/init/miscinit.c:1002 -#: commands/copy.c:2180 -#, c-format -msgid "could not read from file \"%s\": %m" -msgstr "\"%s\" dosyasından okuma hatası: %m" - -#: utils/misc/guc.c:6974 -#, c-format -msgid "could not parse setting for parameter \"%s\"" -msgstr "\"%s\" parametresi için verilen değer çözümlenemiyor" - -#: utils/misc/guc.c:7165 -msgid "invalid list syntax for parameter \"log_destination\"" -msgstr "\"log_destination\" parametresi için dözdizimi geçersiz" - -#: utils/misc/guc.c:7189 -#, c-format -msgid "unrecognized \"log_destination\" key word: \"%s\"" -msgstr "\"log_destination\" anahtar kelimesi tanımlanamıyor: \"%s\"" - -#: utils/misc/guc.c:7264 -msgid "SET AUTOCOMMIT TO OFF is no longer supported" -msgstr "SET AUTOCOMMIT TO OFF artık desteklenmiyor" - -#: utils/misc/guc.c:7336 -msgid "assertion checking is not supported by this build" -msgstr "assert checking desteği derlenmemiş" - -#: utils/misc/guc.c:7351 -msgid "SSL is not supported by this build" -msgstr "SSL bu yapılandırma tarafından desteklenmiyor." - -#: utils/misc/guc.c:7365 -msgid "cannot enable parameter when \"log_statement_stats\" is true" -msgstr "\"log_statement_stats\" tue iken değer aktif olamaz" - -#: utils/misc/guc.c:7381 -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\", veya \"log_executor_stats\" değerleri true iken \"log_statement_stats\" aktif edilemiyor" - -#: utils/misc/guc.c:7399 -msgid "cannot set transaction read-write mode inside a read-only transaction" -msgstr "salt okunur transaction içinde okuma-yazma moduna ayarlanamıyor" - -#: utils/misc/help_config.c:131 -msgid "internal error: unrecognized run-time parameter type\n" -msgstr "dahili hata: tanınmayan çalıştırma zamanı parametre tipi\n" - -#: utils/misc/tzparser.c:63 -#, c-format -msgid "time zone abbreviation \"%s\" is too long (maximum %d characters) in time zone file \"%s\", line %d" -msgstr "\"%3$s\" timezone dosyasında, %4$d satırında, timezone kısaltması \"%1$s\" çok uzundur (en çok %2$d karakter olabilr) " - -#: utils/misc/tzparser.c:72 -#, 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\" timezone dosyasında, %3$d satırında, %1$d timezone offset 900 san. (15 dk.) veya katları değildir" - -#: utils/misc/tzparser.c:86 -#, c-format -msgid "time zone offset %d is out of range in time zone file \"%s\", line %d" -msgstr "\"%2$s\" timezone dosyasında, %3$d satırında, %1$d timezone offset kapsam dışıdır" - -#: utils/misc/tzparser.c:123 -#, c-format -msgid "missing time zone abbreviation in time zone file \"%s\", line %d" -msgstr "\"%s\" time zone dosyasında, %d satırında time zone kısaltması eksik" - -#: utils/misc/tzparser.c:134 -#, c-format -msgid "missing time zone offset in time zone file \"%s\", line %d" -msgstr "\"%s\" time zone dosyasında, %d satırında time zone offset eksik" - -#: utils/misc/tzparser.c:143 -#, c-format -msgid "invalid number for time zone offset in time zone file \"%s\", line %d" -msgstr "\"%s\" timezone dosyasında, %d satırında, time zone offset için geçersiz numara" - -#: utils/misc/tzparser.c:168 -#, c-format -msgid "invalid syntax in time zone file \"%s\", line %d" -msgstr "\"%s\" time zone dosyasında, %d satırında söz dizimi hatası" - -#: utils/misc/tzparser.c:234 -#, c-format -msgid "time zone abbreviation \"%s\" is multiply defined" -msgstr "\"%s\" time zone kısaltması birden çok kez tanımlanmış" - -#: utils/misc/tzparser.c:236 -#, c-format -msgid "Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s\", line %d." -msgstr "\"%s\" timezone dosyasının %d. satırı, \"%s\" timezone dosyasının %d. satırı ile çakışmaktadır." - -#: utils/misc/tzparser.c:303 -#, c-format -msgid "invalid time zone file name \"%s\"" -msgstr "geçersiz zaman dilimi dosyası adı: \"%s\"" - -#: utils/misc/tzparser.c:318 -#, c-format -msgid "time zone file recursion limit exceeded in file \"%s\"" -msgstr "\"%s\" dosyasında derinlik sınırı aşılmıştır. (DİKKAT: Bu hatayı gördüyseniz pgsql-hackers@postgresql.org listesine rapor gönderin)" - -#: utils/misc/tzparser.c:347 -#: postmaster/postmaster.c:1091 -#, c-format -msgid "This may indicate an incomplete PostgreSQL installation, or that the file \"%s\" has been moved away from its proper location." -msgstr "" - -#: utils/misc/tzparser.c:361 -#: utils/misc/tzparser.c:376 -#, c-format -msgid "could not read time zone file \"%s\": %m" -msgstr "\"%s\" time zone dosyası okuma hatası: %m" - -#: utils/misc/tzparser.c:388 -#, c-format -msgid "line is too long in time zone file \"%s\", line %d" -msgstr "\"%s\" timezone dosyası, %d satırında, satır çok uzundur" - -#: utils/misc/tzparser.c:413 -#, fuzzy, c-format -msgid "@INCLUDE without file name in time zone file \"%s\", line %d" -msgstr "\"%s\" timezone dosyası, %d satırında @INCLUDE komutu dosya adını içermemktedir" - -#: guc-file.l:379 -#, c-format -msgid "could not open configuration file \"%s\": maximum nesting depth exceeded" -msgstr "yapılandırma dosyası \"%s\" açılamadı: en yüksek içiçe yuvalama derinliği aşılmıştır" - -#: guc-file.l:542 -#, c-format -msgid "syntax error in file \"%s\" line %u, near end of line" -msgstr "\"%s\" dosyasının %u. satırında satır sonunda sözdizimi hatası" - -#: guc-file.l:547 -#, c-format -msgid "syntax error in file \"%s\" line %u, near token \"%s\"" -msgstr "\"%s\" dosyasının %u. satırında, \"%s\" ifadesi yakınında sözdizimi hatası" - -#: utils/init/flatfiles.c:209 -#: utils/init/flatfiles.c:279 -#: utils/init/flatfiles.c:408 -#: utils/init/flatfiles.c:663 -#, c-format -msgid "could not write to temporary file \"%s\": %m" -msgstr "geçici dosyasına \"%s\" yazma başarısız: %m" - -#: utils/init/flatfiles.c:249 -#, c-format -msgid "invalid database name \"%s\"" -msgstr "geçersiz veritabanı adı \"%s\"" - -#: utils/init/flatfiles.c:505 -#, c-format -msgid "invalid role name \"%s\"" -msgstr "geçirsiz rol adı \"%s\"" - -#: utils/init/flatfiles.c:512 -#, c-format -msgid "invalid role password \"%s\"" -msgstr "geçersiz rol şifresi \"%s\"" - -#: utils/init/miscinit.c:177 -#, c-format -msgid "could not change directory to \"%s\": %m" -msgstr "çalışma dizini \"%s\" olarak değiştirilemedi: %m" - -#: utils/init/miscinit.c:421 -#: utils/cache/lsyscache.c:2750 -#: commands/user.c:566 -#: commands/user.c:748 -#: commands/user.c:858 -#: commands/user.c:1012 -#: commands/variable.c:752 -#: commands/variable.c:882 -#, c-format -msgid "role \"%s\" does not exist" -msgstr "\"%s\" rolü mevcut değil" - -#: utils/init/miscinit.c:451 -#, c-format -msgid "role \"%s\" is not permitted to log in" -msgstr " \"%s\" rolünun sisteme giriş hakkı yoktur" - -#: utils/init/miscinit.c:469 -#, c-format -msgid "too many connections for role \"%s\"" -msgstr "\"%s\" rol bağlantı sayısı aşılmıştır" - -#: utils/init/miscinit.c:544 -msgid "permission denied to set session authorization" -msgstr "oturum kimli doğrulama işlemine izin verilmemiş" - -#: utils/init/miscinit.c:626 -#, c-format -msgid "invalid role OID: %u" -msgstr "geçersiz rol OID: %u" - -#: utils/init/miscinit.c:718 -#, c-format -msgid "could not create lock file \"%s\": %m" -msgstr "\"%s\" lock dosyası oluşturma hatası: %m" - -#: utils/init/miscinit.c:732 -#, c-format -msgid "could not open lock file \"%s\": %m" -msgstr "\"%s\" lock dosyası okuma hatası: %m" - -#: utils/init/miscinit.c:738 -#, c-format -msgid "could not read lock file \"%s\": %m" -msgstr "\"%s\" lock dosyası okuma hatası: %m" - -#: utils/init/miscinit.c:801 -#, c-format -msgid "lock file \"%s\" already exists" -msgstr "\"%s\" lock dosyası zaten mevcuttur" - -#: utils/init/miscinit.c:805 -#, c-format -msgid "Is another postgres (PID %d) running in data directory \"%s\"?" -msgstr "\"%2$s\" veritabanı dizini kullanarak PID %1$d olan başka bir istemci süreci çalışmakta mıdır?" - -#: utils/init/miscinit.c:807 -#, c-format -msgid "Is another postmaster (PID %d) running in data directory \"%s\"?" -msgstr "\"%2$s\" veritabanı dizini kullanarak PID %1$d olan başka bir sunucu çalışmakta mıdır?" - -#: utils/init/miscinit.c:810 -#, c-format -msgid "Is another postgres (PID %d) using socket file \"%s\"?" -msgstr "\"%2$s\" kullanarak kullanarak PID %1$d olan başka bir istemci süreci çalışmakta mıdır?" - -#: utils/init/miscinit.c:812 -#, c-format -msgid "Is another postmaster (PID %d) using socket file \"%s\"?" -msgstr "\"%2$s\" kullanarak kullanarak PID %1$d olan başka bir sunucu çalışmakta mıdır?" - -#: utils/init/miscinit.c:840 -#, c-format -msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use" -msgstr "daha önce tanımlanmış shared memory blok (key %lu, ID %lu) hala kullanılmaktadır" - -#: utils/init/miscinit.c:843 -#, fuzzy, 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 "Eğer eski sunucunun sürecicinin çalımadığından emin iseniz, shared memory bloku \"ipcclean\", \"ipcrm\" komutları ile kaldırın ya da \"%s\" dosyasını silin." - -#: utils/init/miscinit.c:860 -#, c-format -msgid "could not remove old lock file \"%s\": %m" -msgstr "\"%s\" lock dosyası silinemiyor: %m" - -#: utils/init/miscinit.c:862 -msgid "The file seems accidentally left over, but it could not be removed. Please remove the file by hand and try again." -msgstr "Dosya yanlışlıkla eski süreç tarafından bırakılmış ve kaldırılamıyor. Lütfen onu elle silin ve tekrar deneyin." - -#: utils/init/miscinit.c:884 -#: utils/init/miscinit.c:894 -#, c-format -msgid "could not write lock file \"%s\": %m" -msgstr "\"%s\" lock dosyası yazma hatası: %m" - -#: utils/init/miscinit.c:1093 -#: utils/init/miscinit.c:1106 -#, c-format -msgid "\"%s\" is not a valid data directory" -msgstr "\"%s\" geçerli bir veritabanı dizini değildir" - -#: utils/init/miscinit.c:1095 -#, c-format -msgid "File \"%s\" is missing." -msgstr "\"%s\" dosyası eksik." - -#: utils/init/miscinit.c:1108 -#, c-format -msgid "File \"%s\" does not contain valid data." -msgstr "\"%s\" dosyası geçerli bilgi içermiyor." - -#: utils/init/miscinit.c:1110 -msgid "You might need to initdb." -msgstr "initdb yapmanız gerekebilir." - -#: utils/init/miscinit.c:1118 -#, c-format -msgid "The data directory was initialized by PostgreSQL version %ld.%ld, which is not compatible with this version %s." -msgstr "Veri dizini PostgreSQL %ld.%ld sürümü tarafından oluşturulmuştur ve kullandığınız %s sürümü ile uyumlu değildir." - -#: utils/init/miscinit.c:1166 -#, c-format -msgid "invalid list syntax in parameter \"%s\"" -msgstr "\"%s\" parametresinde geçersiz list söz dizimi" - -#: utils/init/miscinit.c:1203 -#, c-format -msgid "loaded library \"%s\"" -msgstr "\"%s\" kütüphanesi yüklendi" - -#: utils/init/postinit.c:177 -#, c-format -msgid "database \"%s\" has disappeared from pg_database" -msgstr "\"%s\" veritabanı pg_database tablosundan yok olmuş" - -#: utils/init/postinit.c:179 -#, c-format -msgid "Database OID %u now seems to belong to \"%s\"." -msgstr "OID %u olan veritabanı \"%s\" kullanıcıya aittir." - -#: utils/init/postinit.c:199 -#, c-format -msgid "database \"%s\" is not currently accepting connections" -msgstr "\"%s\" veritabanı şu anda bağlatı kabul etmiyor" - -#: utils/init/postinit.c:212 -#, c-format -msgid "permission denied for database \"%s\"" -msgstr "\"%s\" veritabanına erişim engellendi" - -#: utils/init/postinit.c:213 -msgid "User does not have CONNECT privilege." -msgstr "Kullanicinin CONNECT yetkisi verilmemiştir." - -#: utils/init/postinit.c:230 -#, c-format -msgid "too many connections for database \"%s\"" -msgstr "\"%s\" veritabanı bağlantı sayısı aşılmıştır" - -#: utils/init/postinit.c:252 -#: utils/init/postinit.c:259 -#, fuzzy -msgid "database locale is incompatible with operating system" -msgstr "veritabanı dosyaları işletim sistemi ile uyumlu değildir" - -#: utils/init/postinit.c:253 -#, fuzzy, c-format -msgid "The database was initialized with LC_COLLATE \"%s\", which is not recognized by setlocale()." -msgstr "Veritabanı LC_COLLATE \"%s\", ile ilklendirilmiştir, ancak setlocale() bu yereli tanımamaktadır.." - -#: utils/init/postinit.c:255 -#: utils/init/postinit.c:262 -msgid "Recreate the database with another locale or install the missing locale." -msgstr "" - -#: utils/init/postinit.c:260 -#, fuzzy, c-format -msgid "The database was initialized with LC_CTYPE \"%s\", which is not recognized by setlocale()." -msgstr "Veritabanı LC_CTYPE \"%s\", ile ilklendirilmiştir, ancak setlocale() bunu tanımamaktadır.." - -#: utils/init/postinit.c:410 -#, c-format -msgid "database %u does not exist" -msgstr "%u veritabanı mevcut değil" - -#: utils/init/postinit.c:541 -msgid "It seems to have just been dropped or renamed." -msgstr "Az önce kaldırılmış veya adını değiştirilmiştir." - -#: utils/init/postinit.c:557 -#, c-format -msgid "The database subdirectory \"%s\" is missing." -msgstr "Veritabanı alt dizini \"%s\" eksik." - -#: utils/init/postinit.c:562 -#, c-format -msgid "could not access directory \"%s\": %m" -msgstr "\"%s\" dizine erişim hatası: %m" - -#: utils/init/postinit.c:595 -msgid "no roles are defined in this database system" -msgstr "bu veritabanı sisteminde tanımlanmış rol bulunamadı" - -#: utils/init/postinit.c:596 -#, c-format -msgid "You should immediately run CREATE USER \"%s\" CREATEUSER;." -msgstr "Hemen CREATE USER \"%s\" CREATEUSER; komutunu çalıştırmalısınız." - -#: utils/init/postinit.c:626 -#, fuzzy -msgid "must be superuser to connect during database shutdown" -msgstr "superuser kullanıcısını oluşturmak için superuser olmalısınız" - -#: utils/init/postinit.c:636 -msgid "connection limit exceeded for non-superusers" -msgstr "superuser olmayan kullanıcı bağlantı sayısı sınırı aşıldı" - -#: utils/error/assert.c:37 -msgid "TRAP: ExceptionalCondition: bad arguments\n" -msgstr "TRAP: ExceptionalCondition: hatalı argümanlar\n" - -#: utils/error/assert.c:40 -#, c-format -msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n" -msgstr "TRAP: %s(\"%s\", Dosya: \"%s\", Satır: %d)\n" - -#: utils/error/elog.c:1404 -#, c-format -msgid "could not reopen file \"%s\" as stderr: %m" -msgstr "\"%s\" dosyası stderr olarak yeiden açılamadı: %m" - -#: utils/error/elog.c:1417 -#, c-format -msgid "could not reopen file \"%s\" as stdout: %m" -msgstr "\"%s\" dosyası stdout olarak yeiden açılamadı: %m" - -#: utils/error/elog.c:1727 -#: utils/error/elog.c:1737 -msgid "[unknown]" -msgstr "[bilinmeyen]" - -#: utils/error/elog.c:2077 -#: utils/error/elog.c:2359 -#: utils/error/elog.c:2437 -msgid "missing error text" -msgstr "hata mesajı eksik" - -#: utils/error/elog.c:2080 -#: utils/error/elog.c:2083 -#: utils/error/elog.c:2440 -#: utils/error/elog.c:2443 -#, c-format -msgid " at character %d" -msgstr " %d karakterinde " - -#: utils/error/elog.c:2093 -#: utils/error/elog.c:2100 -msgid "DETAIL: " -msgstr "AYRINTI:" - -#: utils/error/elog.c:2107 -msgid "HINT: " -msgstr "İPUCU:" - -#: utils/error/elog.c:2114 -msgid "QUERY: " -msgstr "SORGU:" - -#: utils/error/elog.c:2121 -msgid "CONTEXT: " -msgstr "ORTAM:" - -#: utils/error/elog.c:2131 -#, c-format -msgid "LOCATION: %s, %s:%d\n" -msgstr "YER: %s, %s:%d\n" - -#: utils/error/elog.c:2138 -#, c-format -msgid "LOCATION: %s:%d\n" -msgstr "YER: %s:%d\n" - -#: utils/error/elog.c:2152 -msgid "STATEMENT: " -msgstr "KOMUT: " - -#: utils/error/elog.c:2249 -msgid "Not safe to send CSV data\n" -msgstr "CSV verisini göndermek güvenli değil\n" - -#. translator: This string will be truncated at 47 -#. characters expanded. -#: utils/error/elog.c:2552 -#, c-format -msgid "operating system error %d" -msgstr "işletim sistemi hatası: %d" - -#: utils/error/elog.c:2575 -msgid "DEBUG" -msgstr "DEBUG" - -#: utils/error/elog.c:2579 -msgid "LOG" -msgstr "LOG" - -#: utils/error/elog.c:2582 -msgid "INFO" -msgstr "BİLGİ" - -#: utils/error/elog.c:2585 -msgid "NOTICE" -msgstr "NOT" - -#: utils/error/elog.c:2588 -msgid "WARNING" -msgstr "UYARI" - -#: utils/error/elog.c:2591 -msgid "ERROR" -msgstr "HATA" - -#: utils/error/elog.c:2594 -msgid "FATAL" -msgstr "ÖLÜMCÜL" - -#: utils/error/elog.c:2597 -msgid "PANIC" -msgstr "KRİTİK" - -#: utils/fmgr/dfmgr.c:125 -#, c-format -msgid "could not find function \"%s\" in file \"%s\"" -msgstr "\"%2$s\" dosyasında \"%1$s\" fonksiyonu bulunamadı" - -#: utils/fmgr/dfmgr.c:204 -#: utils/fmgr/dfmgr.c:406 -#: utils/fmgr/dfmgr.c:453 -#, c-format -msgid "could not access file \"%s\": %m" -msgstr "\"%s\" dosyası erişim hatası: %m" - -#: utils/fmgr/dfmgr.c:242 -#, c-format -msgid "could not load library \"%s\": %s" -msgstr "\"%s\" kütüphanesi yüklenemedi: %s" - -#: utils/fmgr/dfmgr.c:274 -#, c-format -msgid "incompatible library \"%s\": missing magic block" -msgstr "uyumsuz kütüphane \"%s\": magic block eksik" - -#: utils/fmgr/dfmgr.c:276 -msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro." -msgstr "extension kütüphaneleri PG_MODULE_MAGIC makrosunu kullanmak zorundadır." - -#: utils/fmgr/dfmgr.c:312 -#, c-format -msgid "incompatible library \"%s\": version mismatch" -msgstr "uyumsuz kütüphane \"%s\": sürüm uyuşmazlığı" - -#: utils/fmgr/dfmgr.c:314 -#, c-format -msgid "Server is version %d.%d, library is version %d.%d." -msgstr "Sunucu sürümü: %d.%d, kütüphane sürümü: %d.%d." - -#: utils/fmgr/dfmgr.c:333 -#, c-format -msgid "Server has FUNC_MAX_ARGS = %d, library has %d." -msgstr "" - -#: utils/fmgr/dfmgr.c:342 -#, c-format -msgid "Server has INDEX_MAX_KEYS = %d, library has %d." -msgstr "" - -#: utils/fmgr/dfmgr.c:351 -#, c-format -msgid "Server has NAMEDATALEN = %d, library has %d." -msgstr "" - -#: utils/fmgr/dfmgr.c:360 -#, c-format -msgid "Server has FLOAT4PASSBYVAL = %s, library has %s." -msgstr "" - -#: utils/fmgr/dfmgr.c:369 -#, c-format -msgid "Server has FLOAT8PASSBYVAL = %s, library has %s." -msgstr "" - -#: 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 "uyumsuz kütüphane \"%s\": magic block uyumsuz" - -#: utils/fmgr/dfmgr.c:537 -#, c-format -msgid "access to library \"%s\" is not allowed" -msgstr "\"%s\" kütüphanesine erişim engellendi" - -#: utils/fmgr/dfmgr.c:564 -#, c-format -msgid "invalid macro name in dynamic library path: %s" -msgstr "dinamik kütüphane yolunda geçersiz makro adı: %s" - -#: utils/fmgr/dfmgr.c:609 -msgid "zero-length component in parameter \"dynamic_library_path\"" -msgstr "\"dynamic_library_path\" parametresinde sıfır uzunluklu bileşen" - -#: utils/fmgr/dfmgr.c:628 -msgid "component in parameter \"dynamic_library_path\" is not an absolute path" -msgstr "\"dynamic_library_path\" parametresine bileşen kesin bir yol değildir" - -#: utils/fmgr/fmgr.c:266 -#, c-format -msgid "internal function \"%s\" is not in internal lookup table" -msgstr "\"%s\" dahili fonksiyonu, dahili referans tablosunda yer almamaktadır" - -#: utils/fmgr/fmgr.c:472 -#, c-format -msgid "unrecognized API version %d reported by info function \"%s\"" -msgstr "\"%2$s\" bilgi fonksiyonu tarafından bildirilen API versioynu %1$d tanımlı değildir" - -#: utils/fmgr/fmgr.c:843 -#: utils/fmgr/fmgr.c:2075 -#, c-format -msgid "function %u has too many arguments (%d, maximum is %d)" -msgstr "%u fonksiyonu çok fazla argümana sahip (%d, en yüksek ise %d)" - -#: utils/fmgr/funcapi.c:356 -#, c-format -msgid "could not determine actual result type for function \"%s\" declared to return type %s" -msgstr "geri döndürme tipi %2$s olarak tanımlanmış \"%1$s\" fonksiyonunun gerçek döndürme tipi belirlenememektedir" - -#: utils/fmgr/funcapi.c:1105 -#: utils/fmgr/funcapi.c:1136 -msgid "number of aliases does not match number of columns" -msgstr "Takma adların sayısı ile kolon satısı eşleşmiyor" - -#: utils/fmgr/funcapi.c:1130 -msgid "no column alias was provided" -msgstr "kolon takma adı verilmedi" - -#: utils/fmgr/funcapi.c:1154 -msgid "could not determine row description for function returning record" -msgstr "veri satırı döndüren fonksiyon için satır açıklaması bulunamadı" - -#: utils/cache/lsyscache.c:2319 -#: utils/cache/lsyscache.c:2354 -#: utils/cache/lsyscache.c:2389 -#: utils/cache/lsyscache.c:2424 -#, c-format -msgid "type %s is only a shell" -msgstr "%s tipi sadece bir shell" - -#: utils/cache/lsyscache.c:2324 -#, c-format -msgid "no input function available for type %s" -msgstr "%s tipi için giriş fonksiyonu mevcut değil" - -#: utils/cache/lsyscache.c:2359 -#, c-format -msgid "no output function available for type %s" -msgstr "%s tipi için çıkış fonksiyonu mevcut değil" - -#: utils/cache/plancache.c:527 -msgid "cached plan must not change result type" -msgstr "önbelleğe alınmış plan sonuç tipini değiştiremez" - -#: utils/cache/relcache.c:3707 -#, c-format -msgid "could not create relation-cache initialization file \"%s\": %m" -msgstr "relation-cache tanımlama dosyası \"%s\" açılamadı: %m" - -#: utils/cache/relcache.c:3709 -msgid "Continuing anyway, but there's something wrong." -msgstr "Devam ediyorum, ama bu işlem yanlıştır." - -#: utils/cache/typcache.c:146 -#: parser/parse_type.c:205 -#, c-format -msgid "type \"%s\" is only a shell" -msgstr "\"%s\" tipi bir shelldir" - -#: utils/cache/typcache.c:326 -#, c-format -msgid "type %s is not composite" -msgstr "%s tipi composite değildir" - -#: utils/cache/typcache.c:340 -msgid "record type has not been registered" -msgstr "kayıt tipi tecil edilmemiştir" - -#: tsearch/dict_ispell.c:52 -#: tsearch/dict_thesaurus.c:615 -msgid "multiple DictFile parameters" -msgstr "mükerrer DictFile parametre" - -#: tsearch/dict_ispell.c:63 -msgid "multiple AffFile parameters" -msgstr "çoklu AffFile parametresi" - -#: tsearch/dict_ispell.c:74 -#: tsearch/dict_simple.c:50 -#: snowball/dict_snowball.c:206 -msgid "multiple StopWords parameters" -msgstr "birden fazla StopWords parametresi" - -#: tsearch/dict_ispell.c:82 -#, c-format -msgid "unrecognized Ispell parameter: \"%s\"" -msgstr "tanımlanmayan ispell parametresi: \"%s\"" - -#: tsearch/dict_ispell.c:96 -msgid "missing AffFile parameter" -msgstr "ekisk AffFile parametresi" - -#: tsearch/dict_ispell.c:102 -#: tsearch/dict_thesaurus.c:639 -msgid "missing DictFile parameter" -msgstr "eksik DictFile parametresi" - -#: tsearch/dict_simple.c:59 -msgid "multiple Accept parameters" -msgstr "çoklu Accept parametreleri" - -#: tsearch/dict_simple.c:67 -#, fuzzy, c-format -msgid "unrecognized simple dictionary parameter: \"%s\"" -msgstr "\"%s\" tanınmayan recovery parametresi" - -#: tsearch/dict_synonym.c:99 -#, c-format -msgid "unrecognized synonym parameter: \"%s\"" -msgstr "tanımlanmamış eş anlamlılık parametresi: \"%s\"" - -#: tsearch/dict_synonym.c:106 -msgid "missing Synonyms parameter" -msgstr "eksik Synonyms parametresi" - -#: tsearch/dict_synonym.c:113 -#, c-format -msgid "could not open synonym file \"%s\": %m" -msgstr "\"%s\" eşanlamlılar dosyası açılamıyor: %m" - -#: tsearch/dict_thesaurus.c:180 -#, fuzzy, c-format -msgid "could not open thesaurus file \"%s\": %m" -msgstr "\"%s\" sunucu dosyası açma hatası: %m" - -#: tsearch/dict_thesaurus.c:213 -#, fuzzy -msgid "unexpected delimiter" -msgstr "beklenmeyen dosya sonu\n" - -#: tsearch/dict_thesaurus.c:263 -#: tsearch/dict_thesaurus.c:279 -#, fuzzy -msgid "unexpected end of line or lexeme" -msgstr "beklenmeyen dosya sonu\n" - -#: tsearch/dict_thesaurus.c:288 -#, fuzzy -msgid "unexpected end of line" -msgstr "beklenmeyen dosya sonu\n" - -#: tsearch/dict_thesaurus.c:413 -#, c-format -msgid "thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)" -msgstr "" - -#: tsearch/dict_thesaurus.c:419 -#, c-format -msgid "thesaurus sample word \"%s\" is a stop word (rule %d)" -msgstr "" - -#: tsearch/dict_thesaurus.c:422 -#, fuzzy -msgid "Use \"?\" to represent a stop word within a sample phrase." -msgstr "Satır sonu karakteri için \"\\r\" kullanın." - -#: tsearch/dict_thesaurus.c:567 -#, c-format -msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)" -msgstr "" - -#: tsearch/dict_thesaurus.c:574 -#, c-format -msgid "thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)" -msgstr "" - -#: tsearch/dict_thesaurus.c:586 -#, c-format -msgid "thesaurus substitute phrase is empty (rule %d)" -msgstr "" - -#: tsearch/dict_thesaurus.c:624 -msgid "multiple Dictionary parameters" -msgstr "çoklu Dil parametreleri" - -#: tsearch/dict_thesaurus.c:631 -#, fuzzy, c-format -msgid "unrecognized Thesaurus parameter: \"%s\"" -msgstr "\"%s\" tanınmayan parametre" - -#: tsearch/dict_thesaurus.c:643 -msgid "missing Dictionary parameter" -msgstr "eksik Sözlük parametresi" - -#: tsearch/spell.c:204 -#, c-format -msgid "could not open dictionary file \"%s\": %m" -msgstr "\"%s\" sözlük dosyası açılamadı: %m" - -#: tsearch/spell.c:444 -#: tsearch/spell.c:461 -#: tsearch/spell.c:478 -#: tsearch/spell.c:495 -#: tsearch/spell.c:517 -#: gram.y:10787 -#: gram.y:10804 -msgid "syntax error" -msgstr "söz dizim hatası " - -#: tsearch/spell.c:522 -#: tsearch/spell.c:772 -#: tsearch/spell.c:792 -#, fuzzy -msgid "multibyte flag character is not allowed" -msgstr "birden çok LIMIT ifadesi kullanılamaz" - -#: tsearch/spell.c:557 -#: tsearch/spell.c:615 -#: tsearch/spell.c:710 -#, c-format -msgid "could not open affix file \"%s\": %m" -msgstr "\"%s\" affix dosyası açılamıyor: %m" - -#: tsearch/spell.c:603 -msgid "Ispell dictionary supports only default flag value" -msgstr "" - -#: tsearch/spell.c:803 -msgid "wrong affix file format for flag" -msgstr "" - -#: tsearch/ts_locale.c:168 -#, fuzzy, c-format -msgid "line %d of configuration file \"%s\": \"%s\"" -msgstr "yapılandırma dosyası \"%s\" açılamadı: %m" - -#: tsearch/ts_locale.c:288 -#, c-format -msgid "conversion from wchar_t to server encoding failed: %m" -msgstr "wchar_t'den sunucu dil kodlamasına dönüşüm başarısız oldu: %m" - -#: tsearch/ts_parse.c:384 -#: tsearch/ts_parse.c:391 -#: tsearch/ts_parse.c:554 -#: tsearch/ts_parse.c:561 -msgid "word is too long to be indexed" -msgstr "sözcük indexlenebilmek için çok uzun" - -#: tsearch/ts_parse.c:385 -#: tsearch/ts_parse.c:392 -#: tsearch/ts_parse.c:555 -#: tsearch/ts_parse.c:562 -#, c-format -msgid "Words longer than %d characters are ignored." -msgstr "%d harften fazla sözcükler gözardı ediliyor." - -#: tsearch/ts_utils.c:53 -#, c-format -msgid "invalid text search configuration file name \"%s\"" -msgstr "geçersiz metin arama yapılandırma dosyası adı: \"%s\"" - -#: tsearch/ts_utils.c:91 -#, fuzzy, c-format -msgid "could not open stop-word file \"%s\": %m" -msgstr "\"%s\" dosyası açılamıyor: %m" - -#: tsearch/wparser.c:314 -#, fuzzy -msgid "text search parser does not support headline creation" -msgstr "\"%s\" tablespace'i mevcut değil" - -#: tsearch/wparser_def.c:2435 -#, fuzzy, c-format -msgid "unrecognized headline parameter: \"%s\"" -msgstr "\"%s\" tanınmayan parametre" - -#: tsearch/wparser_def.c:2444 -msgid "MinWords should be less than MaxWords" -msgstr "MinWords değeri MaxWords değerinden az olmalı" - -#: tsearch/wparser_def.c:2448 -msgid "MinWords should be positive" -msgstr "MinWords pozitif olmalıdır" - -#: tsearch/wparser_def.c:2452 -msgid "ShortWord should be >= 0" -msgstr "ShortWord >=0 olmalı" - -#: tsearch/wparser_def.c:2456 -#, fuzzy -msgid "MaxFragments should be >= 0" -msgstr "ShortWord >=0 olmalı" - -#: tcop/postgres.c:326 -#: tcop/postgres.c:349 -#: tcop/fastpath.c:292 -#: commands/copy.c:514 -#: commands/copy.c:533 -#: commands/copy.c:537 -msgid "unexpected EOF on client connection" -msgstr "istemci bağlantısında beklenmeyen EOF" - -#: tcop/postgres.c:376 -#: tcop/postgres.c:388 -#: tcop/postgres.c:399 -#: tcop/postgres.c:411 -#: tcop/postgres.c:3839 -#, c-format -msgid "invalid frontend message type %d" -msgstr "geçersiz frontend mesaj tipi %d" - -#: tcop/postgres.c:832 -#, c-format -msgid "statement: %s" -msgstr "komut: %s" - -#: tcop/postgres.c:891 -#: tcop/postgres.c:1200 -#: tcop/postgres.c:1480 -#: tcop/postgres.c:1916 -#: tcop/postgres.c:2233 -#: tcop/postgres.c:2313 -#: tcop/fastpath.c:305 -msgid "current transaction is aborted, commands ignored until end of transaction block" -msgstr "geçerli transaction durduruldu, transaction blokunun sonuna kadar komutlar yok sayılacak" - -#: tcop/postgres.c:1060 -#: tcop/postgres.c:1346 -#: tcop/postgres.c:1757 -#: tcop/postgres.c:1973 -#: tcop/fastpath.c:409 -#, c-format -msgid "duration: %s ms" -msgstr "süre: %s milisaniye" - -#: tcop/postgres.c:1065 -#, c-format -msgid "duration: %s ms statement: %s" -msgstr "süre: %s milisaniye komut: %s" - -#: tcop/postgres.c:1115 -#, c-format -msgid "parse %s: %s" -msgstr "parse %s: %s" - -#: tcop/postgres.c:1173 -msgid "cannot insert multiple commands into a prepared statement" -msgstr "önceden hazırlanmış komuta çoklu komut eklenemez" - -#: tcop/postgres.c:1239 -#: commands/prepare.c:122 -#: parser/analyze.c:2209 -#, c-format -msgid "could not determine data type of parameter $%d" -msgstr "$%d parametrenin veri tipini belirlenemiyor" - -#: tcop/postgres.c:1351 -#, c-format -msgid "duration: %s ms parse %s: %s" -msgstr "süre: %s milisaniye parse %s: %s" - -#: tcop/postgres.c:1397 -#, c-format -msgid "bind %s to %s" -msgstr "bind %s to %s" - -#: tcop/postgres.c:1416 -#: tcop/postgres.c:2213 -msgid "unnamed prepared statement does not exist" -msgstr "ismi verilmemiş hazırlamış komut mevcut değil" - -#: tcop/postgres.c:1458 -#, c-format -msgid "bind message has %d parameter formats but %d parameters" -msgstr "bind mesajı %d argüman biçimi ve %d argüman içeriyor" - -#: tcop/postgres.c:1464 -#, c-format -msgid "bind message supplies %d parameters, but prepared statement \"%s\" requires %d" -msgstr "bind mesajı %d parametre veriyor ancak \"%s\" hazırlanmış deymi %d gerektirir" - -#: tcop/postgres.c:1623 -#, c-format -msgid "incorrect binary data format in bind parameter %d" -msgstr "bind parametresinde geçersiz ikili veri %d" - -#: tcop/postgres.c:1762 -#, c-format -msgid "duration: %s ms bind %s%s%s: %s" -msgstr "süre: %s milisaniye bind %s%s%s: %s" - -#: tcop/postgres.c:1810 -#: tcop/postgres.c:2299 -#, c-format -msgid "portal \"%s\" does not exist" -msgstr "portal \"%s\" mevcut değildir" - -#: tcop/postgres.c:1897 -#: tcop/postgres.c:1981 -msgid "execute fetch from" -msgstr "execute fetch from" - -#: tcop/postgres.c:1898 -#: tcop/postgres.c:1982 -msgid "execute" -msgstr "execute" - -#: tcop/postgres.c:1895 -#, fuzzy, c-format -msgid "%s %s%s%s: %s" -msgstr "%s %s%s%s%s%s" - -#: tcop/postgres.c:1978 -#, fuzzy, c-format -msgid "duration: %s ms %s %s%s%s: %s" -msgstr "süre: %s milisaniye %s %s%s%s%s%s" - -#: tcop/postgres.c:2104 -#, c-format -msgid "prepare: %s" -msgstr "prepare: %s" - -#: tcop/postgres.c:2167 -#, c-format -msgid "parameters: %s" -msgstr "%s parametresi" - -#: tcop/postgres.c:2489 -msgid "terminating connection because of crash of another server process" -msgstr "diğer aktif sunucu sürecinin durması nedeniyle bağlantı kapatılmıştır" - -#: tcop/postgres.c:2490 -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 "Başka bir sürecin olağan dışı çıkışı nedeniyle shared memory bozulmuş ihtimali var. Dolayısıyla tüm süreçlerine tüm aktif işlemlerini rollback edip çıkmak komutu verilmiş." - -#: tcop/postgres.c:2494 -msgid "In a moment you should be able to reconnect to the database and repeat your command." -msgstr "Birkaç saniye sonra veritabana bağlanıp işlemlerinize devam edebilirsiniz." - -#: tcop/postgres.c:2613 -msgid "floating-point exception" -msgstr "gerçel sayı istisnası" - -#: tcop/postgres.c:2614 -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 "Geçersiz floating-point işlemi sinyali alındı. Bu, matematiksel sıfıra bölme gibi geçersiz işlem ya da kapsam dışı sonucun göstergesidir." - -#: tcop/postgres.c:2651 -msgid "terminating autovacuum process due to administrator command" -msgstr "yönetici talimatı doğrultusunda autovacuum süreci sonlandırılıyor" - -#: tcop/postgres.c:2655 -msgid "terminating connection due to administrator command" -msgstr "yönetici talimatı doğrultusunda bağlantı kesildi" - -#: tcop/postgres.c:2666 -msgid "canceling statement due to statement timeout" -msgstr "sorgu zaman aşımına uğradı ve iptal edildi" - -#: tcop/postgres.c:2670 -msgid "canceling autovacuum task" -msgstr "autovacuum görevi iptal ediliyor" - -#: tcop/postgres.c:2674 -msgid "canceling statement due to user request" -msgstr "kullanıcı isteği ile sorgu iptal edildi" - -#: tcop/postgres.c:2718 -msgid "stack depth limit exceeded" -msgstr "stack derinliği sınırı aşıldı" - -#: tcop/postgres.c:2719 -msgid "Increase the configuration parameter \"max_stack_depth\", after ensuring the platform's stack depth limit is adequate." -msgstr "İşletim sisteminin stack derinliğinin yeterli olduğundan emin olarak \"max_stack_depth\" konfigurasyon parametresini artırın." - -#: tcop/postgres.c:2735 -#, c-format -msgid "\"max_stack_depth\" must not exceed %ldkB" -msgstr "\"max_stack_depth\" parametresi %ldkB açmamalıdır" - -#: tcop/postgres.c:2737 -msgid "Increase the platform's stack depth limit via \"ulimit -s\" or local equivalent." -msgstr "İşletim sisteminin stack derinliği \"ulimit -s\" veya benzeri komutu ile arttırın." - -#: tcop/postgres.c:3114 -#: bootstrap/bootstrap.c:294 -#: postmaster/postmaster.c:652 -#, c-format -msgid "--%s requires a value" -msgstr "--%s bir değer gerektirir" - -#: tcop/postgres.c:3119 -#: bootstrap/bootstrap.c:299 -#: postmaster/postmaster.c:657 -#, c-format -msgid "-c %s requires a value" -msgstr "-c %s bir değer gerektirir" - -#: tcop/postgres.c:3254 -msgid "invalid command-line arguments for server process" -msgstr "sunucu süreci için geçersiz komut satırı parametreleri" - -#: tcop/postgres.c:3255 -#: tcop/postgres.c:3269 -#, c-format -msgid "Try \"%s --help\" for more information." -msgstr "Daha fazla bilgi için \"%s --help\" yazın." - -#: tcop/postgres.c:3267 -#, c-format -msgid "%s: invalid command-line arguments" -msgstr "%s: komut satırı parametresi yanlış" - -#: tcop/postgres.c:3277 -#, c-format -msgid "%s: no database nor user name specified" -msgstr ":%s: ne veritabanı ne de kullanıcı adı belirtilmemiştir" - -#: tcop/postgres.c:3749 -#, c-format -msgid "invalid CLOSE message subtype %d" -msgstr "geçersiz CLOSE mesaj alt tipi %d" - -#: tcop/postgres.c:3782 -#, c-format -msgid "invalid DESCRIBE message subtype %d" -msgstr "geçersiz DESCRIBE mesaj alt tipi %d" - -#: tcop/postgres.c:4020 -#, c-format -msgid "disconnection: session time: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%s" -msgstr "bağlantı bitti: oturum zamanı: %d:%02d:%02d.%03d user=%s database=%s host=%s%s%s" - -#: tcop/pquery.c:668 -#, c-format -msgid "bind message has %d result formats but query has %d columns" -msgstr "bind mesajı ında %d sonuç biçimi verilmişken sorguda %d sütun belirtilmiş" - -#: tcop/pquery.c:745 -#: tcop/pquery.c:1366 -#: commands/portalcmds.c:329 -#, c-format -msgid "portal \"%s\" cannot be run" -msgstr "\"%s\" portalı çalıştırılamıyor" - -#: tcop/pquery.c:979 -msgid "cursor can only scan forward" -msgstr "cursor sadece ileri doğru gidebilir" - -#: tcop/pquery.c:980 -msgid "Declare it with SCROLL option to enable backward scan." -msgstr "Geriye gitmesini sağlamak için SCROLL seçeneği ile bildirin." - -#: tcop/utility.c:90 -#: commands/tablecmds.c:732 -#: commands/tablecmds.c:1042 -#: commands/tablecmds.c:1860 -#: commands/tablecmds.c:3243 -#: commands/tablecmds.c:3272 -#: commands/tablecmds.c:4603 -#: commands/trigger.c:121 -#: commands/trigger.c:809 -#: rewrite/rewriteDefine.c:259 -#, c-format -msgid "permission denied: \"%s\" is a system catalog" -msgstr "erişim engellendi: \"%s\" bir sistem kataloğudur" - -#: tcop/utility.c:218 -#: commands/copy.c:1007 -#: executor/execMain.c:636 -msgid "transaction is read-only" -msgstr "transaction salt okunurdur" - -#: tcop/utility.c:1021 -msgid "must be superuser to do CHECKPOINT" -msgstr "CHECKPOINT yapmak için superuser olmalısınız" - -#: tcop/fastpath.c:109 -#: tcop/fastpath.c:483 -#: tcop/fastpath.c:613 -#, c-format -msgid "invalid argument size %d in function call message" -msgstr "fonksiyon çağırma mesajında geçersiz argüman boyutu %d" - -#: tcop/fastpath.c:223 -#: catalog/aclchk.c:2542 -#: catalog/aclchk.c:3230 -#, c-format -msgid "function with OID %u does not exist" -msgstr "%u OID'li fonksiyon mevcut değil" - -#: tcop/fastpath.c:333 -#, c-format -msgid "fastpath function call: \"%s\" (OID %u)" -msgstr "fastpath function çağırımı: \"%s\" OID %u" - -#: tcop/fastpath.c:413 -#, c-format -msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" -msgstr "süre: %s milisaniye fastpath function call: \"%s\" OID %u" - -#: tcop/fastpath.c:451 -#: tcop/fastpath.c:578 -#, c-format -msgid "function call message contains %d arguments but function requires %d" -msgstr "fonksiyon çağırısına %d argüman bulunmakta ancak fonkiyon %d argüman istemektedir" - -#: tcop/fastpath.c:459 -#, c-format -msgid "function call message contains %d argument formats but %d arguments" -msgstr "fonksiyon çağırma mesajı %d argüman biçimi ve %d argüman içeriyor" - -#: tcop/fastpath.c:546 -#: tcop/fastpath.c:629 -#, c-format -msgid "incorrect binary data format in function argument %d" -msgstr "%d fonksiyon argümanında geçersiz ikili veri" - -#: bootstrap/bootstrap.c:310 -#: postmaster/postmaster.c:669 -#: postmaster/postmaster.c:682 -#, c-format -msgid "Try \"%s --help\" for more information.\n" -msgstr "Daha fazla bilgi için \"%s --help\" yazın\n" - -#: bootstrap/bootstrap.c:319 -#, c-format -msgid "%s: invalid command-line arguments\n" -msgstr "%s: geçersiz komut satırı parametresi\n" - -#: catalog/aclchk.c:141 -msgid "grant options can only be granted to roles" -msgstr "grant opsiyonu, sadece rollere atanabilir" - -#: catalog/aclchk.c:252 -#, c-format -msgid "no privileges were granted for \"%s\"" -msgstr "\"%s\" nesnesine hiçbir hak verilemedi" - -#: catalog/aclchk.c:256 -#, c-format -msgid "not all privileges were granted for \"%s\"" -msgstr "\"%s\" nesnesine bazı hakları verilemedi" - -#: catalog/aclchk.c:263 -#, c-format -msgid "no privileges could be revoked for \"%s\"" -msgstr "\"%s\" nesnesinin hiçbir hakkı geri alınamadı" - -#: catalog/aclchk.c:267 -#, c-format -msgid "not all privileges could be revoked for \"%s\"" -msgstr "\"%s\" nesnesinin bazı hakları geri alınamadı" - -#: catalog/aclchk.c:329 -#, c-format -msgid "invalid privilege type %s for relation" -msgstr "nesne için geçersiz hak tipi %s" - -#: catalog/aclchk.c:333 -#, c-format -msgid "invalid privilege type %s for sequence" -msgstr "sequence için geçersiz hak tipi %s" - -#: catalog/aclchk.c:337 -#, c-format -msgid "invalid privilege type %s for database" -msgstr "veritabanı için geçersiz hak tipi %s" - -#: catalog/aclchk.c:341 -#, c-format -msgid "invalid privilege type %s for function" -msgstr "fonksiyon için geçersiz hak tipi %s" - -#: catalog/aclchk.c:345 -#, c-format -msgid "invalid privilege type %s for language" -msgstr "dil için geçersiz hak tipi %s" - -#: catalog/aclchk.c:349 -#, c-format -msgid "invalid privilege type %s for schema" -msgstr "şema için geçersiz hak tipi %s" - -#: catalog/aclchk.c:353 -#, c-format -msgid "invalid privilege type %s for tablespace" -msgstr "tablespace için geçersiz hak tipi %s" - -#: catalog/aclchk.c:357 -#, fuzzy, c-format -msgid "invalid privilege type %s for foreign-data wrapper" -msgstr "veritabanı için geçersiz hak tipi %s" - -#: catalog/aclchk.c:361 -#, fuzzy, c-format -msgid "invalid privilege type %s for foreign server" -msgstr "nesne için geçersiz hak tipi %s" - -#: catalog/aclchk.c:400 -#, fuzzy -msgid "column privileges are only valid for relations" -msgstr "nesne için geçersiz hak tipi %s" - -#: catalog/aclchk.c:895 -#: commands/comment.c:509 -#: commands/sequence.c:945 -#: commands/tablecmds.c:199 -#: commands/tablecmds.c:2045 -#: commands/tablecmds.c:2266 -#: commands/tablecmds.c:7500 -#, c-format -msgid "\"%s\" is not a sequence" -msgstr "\"%s\" bir sequence değildir" - -#: catalog/aclchk.c:933 -#, fuzzy, c-format -msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" -msgstr "\"%s\" sequence nesnesi sadece USAGE, SELECT, ve UPDATE desteklemektedir" - -#: catalog/aclchk.c:950 -msgid "invalid privilege type USAGE for table" -msgstr "tablo için geçersiz hak tipi kullanımı" - -#: catalog/aclchk.c:1094 -#, fuzzy, c-format -msgid "invalid privilege type %s for column" -msgstr "fonksiyon için geçersiz hak tipi %s" - -#: catalog/aclchk.c:1107 -#, fuzzy, c-format -msgid "sequence \"%s\" only supports SELECT column privileges" -msgstr "\"%s\" sequence nesnesi sadece USAGE, SELECT, ve UPDATE desteklemektedir" - -#: catalog/aclchk.c:1668 -#, c-format -msgid "language \"%s\" is not trusted" -msgstr "\"%s\" dili güvenilir bir dil değildir" - -#: catalog/aclchk.c:1670 -msgid "Only superusers can use untrusted languages." -msgstr "Güvenilir olmayan dilleri sadece superuser kullanabilir." - -#: catalog/aclchk.c:2024 -#, c-format -msgid "unrecognized privilege type \"%s\"" -msgstr "bilinmeyen hak türü \"%s\"" - -#: catalog/aclchk.c:2073 -#, fuzzy, c-format -msgid "permission denied for column %s" -msgstr "%s fonksiyonuna erişim engellendi" - -#: catalog/aclchk.c:2075 -#, c-format -msgid "permission denied for relation %s" -msgstr "%s nesnesine erişim engellendi" - -#: catalog/aclchk.c:2077 -#: commands/sequence.c:467 -#: commands/sequence.c:662 -#: commands/sequence.c:706 -#: commands/sequence.c:742 -#, c-format -msgid "permission denied for sequence %s" -msgstr "%s sequence'ine erişim izni verilmedi" - -#: catalog/aclchk.c:2079 -#, c-format -msgid "permission denied for database %s" -msgstr "%s veritabanına erişim engellendi" - -#: catalog/aclchk.c:2081 -#, c-format -msgid "permission denied for function %s" -msgstr "%s fonksiyonuna erişim engellendi" - -#: catalog/aclchk.c:2083 -#, c-format -msgid "permission denied for operator %s" -msgstr "%s operatorüne erişim engellendi" - -#: catalog/aclchk.c:2085 -#, c-format -msgid "permission denied for type %s" -msgstr "%s tipine erişim engellendi" - -#: catalog/aclchk.c:2087 -#, c-format -msgid "permission denied for language %s" -msgstr "%s diline erişim engellendi" - -#: catalog/aclchk.c:2089 -#, c-format -msgid "permission denied for schema %s" -msgstr "%s şemasına erişim engellendi" - -#: catalog/aclchk.c:2091 -#, c-format -msgid "permission denied for operator class %s" -msgstr "%s operatör sınıfına erişim engellendi" - -#: catalog/aclchk.c:2093 -#, c-format -msgid "permission denied for operator family %s" -msgstr "%s operator ailesine erişim engellendi" - -#: catalog/aclchk.c:2095 -#, c-format -msgid "permission denied for conversion %s" -msgstr "%s dönüşümüne erişim engellendi" - -#: catalog/aclchk.c:2097 -#, c-format -msgid "permission denied for tablespace %s" -msgstr "%s tablespace'ine erişim engellendi" - -#: catalog/aclchk.c:2099 -#, c-format -msgid "permission denied for text search dictionary %s" -msgstr "%s metin arama sözlüğüne erişim engellendi" - -#: catalog/aclchk.c:2101 -#, c-format -msgid "permission denied for text search configuration %s" -msgstr "%s metin arama yapılandırmasına erişim engellendi" - -#: catalog/aclchk.c:2103 -#, fuzzy, c-format -msgid "permission denied for foreign-data wrapper %s" -msgstr "%s veritabanına erişim engellendi" - -#: catalog/aclchk.c:2105 -#, fuzzy, c-format -msgid "permission denied for foreign server %s" -msgstr "%s dönüşümüne erişim engellendi" - -#: catalog/aclchk.c:2111 -#: catalog/aclchk.c:2113 -#, c-format -msgid "must be owner of relation %s" -msgstr "%s nesnesinin sahibi olmalısınız" - -#: catalog/aclchk.c:2115 -#, c-format -msgid "must be owner of sequence %s" -msgstr "%s sequence'ın sahibi olmalısınız" - -#: catalog/aclchk.c:2117 -#, c-format -msgid "must be owner of database %s" -msgstr "%s veritabanının sahibi olmalısınız" - -#: catalog/aclchk.c:2119 -#, c-format -msgid "must be owner of function %s" -msgstr "%s fonksiyonunun sahibi olmalısınız" - -#: catalog/aclchk.c:2121 -#, c-format -msgid "must be owner of operator %s" -msgstr "%s operatörünün sahibi olmalısınız" - -#: catalog/aclchk.c:2123 -#, c-format -msgid "must be owner of type %s" -msgstr "%s tipinin sahibi olmalısınız" - -#: catalog/aclchk.c:2125 -#, c-format -msgid "must be owner of language %s" -msgstr "%s dilinin sahibi olmalısınız" - -#: catalog/aclchk.c:2127 -#, c-format -msgid "must be owner of schema %s" -msgstr "%s şemasının sahibi olmalısınız" - -#: catalog/aclchk.c:2129 -#, c-format -msgid "must be owner of operator class %s" -msgstr "%s operatör sınıfının sahibi olmalısınız" - -#: catalog/aclchk.c:2131 -#, c-format -msgid "must be owner of operator family %s" -msgstr "%s operator ailesinin sahibi olmalısınız" - -#: catalog/aclchk.c:2133 -#, c-format -msgid "must be owner of conversion %s" -msgstr "%s dönüşümünün sahibi olmalısınız" - -#: catalog/aclchk.c:2135 -#, c-format -msgid "must be owner of tablespace %s" -msgstr "%s tablespace'inin sahibi olmalısınız" - -#: catalog/aclchk.c:2137 -#, c-format -msgid "must be owner of text search dictionary %s" -msgstr "%s metin arama sözlüğünün sahibi olmalısınız" - -#: catalog/aclchk.c:2139 -#, c-format -msgid "must be owner of text search configuration %s" -msgstr "%s metin arama sözlüğünün sahibi olmalısınız" - -#: catalog/aclchk.c:2141 -#, fuzzy, c-format -msgid "must be owner of foreign-data wrapper %s" -msgstr "%s veritabanının sahibi olmalısınız" - -#: catalog/aclchk.c:2143 -#, fuzzy, c-format -msgid "must be owner of foreign server %s" -msgstr "%s dönüşümünün sahibi olmalısınız" - -#: catalog/aclchk.c:2185 -#, fuzzy, c-format -msgid "permission denied for column %s of relation %s" -msgstr "%s nesnesine erişim engellendi" - -#: catalog/aclchk.c:2214 -#, c-format -msgid "role with OID %u does not exist" -msgstr "OID %u olan rol mevcut değil" - -#: catalog/aclchk.c:2305 -#: catalog/aclchk.c:2313 -#, fuzzy, c-format -msgid "attribute %d of relation with OID %u does not exist" -msgstr "%u OID'li nesne mevcut değil" - -#: catalog/aclchk.c:2390 -#: catalog/aclchk.c:3146 -#, c-format -msgid "relation with OID %u does not exist" -msgstr "%u OID'li nesne mevcut değil" - -#: catalog/aclchk.c:2598 -#: catalog/aclchk.c:3258 -#, c-format -msgid "language with OID %u does not exist" -msgstr "%u OID'li dil mevcut değil" - -#: catalog/aclchk.c:2682 -#: catalog/aclchk.c:3286 -#, c-format -msgid "schema with OID %u does not exist" -msgstr "%u OID'li şema mevcut değil" - -#: catalog/aclchk.c:2748 -#: catalog/aclchk.c:3325 -#, c-format -msgid "tablespace with OID %u does not exist" -msgstr "%u OID'li tablespace mevcut değil" - -#: catalog/aclchk.c:2808 -#, fuzzy, c-format -msgid "foreign-data wrapper with OID %u does not exist" -msgstr "%u OID'li veritabanı mevcut değil" - -#: catalog/aclchk.c:2871 -#: catalog/aclchk.c:3470 -#, fuzzy, c-format -msgid "foreign server with OID %u does not exist" -msgstr "%u OID'li dönüşüm mevcut değil" - -#: catalog/aclchk.c:3174 -#, c-format -msgid "type with OID %u does not exist" -msgstr "%u OID'li tip mevcut değil" - -#: catalog/aclchk.c:3202 -#, c-format -msgid "operator with OID %u does not exist" -msgstr "%u OID'li operatör mevcut değil" - -#: catalog/aclchk.c:3354 -#, c-format -msgid "operator class with OID %u does not exist" -msgstr "%u OID'li operatör sınıfı mevcut değil" - -#: catalog/aclchk.c:3383 -#, c-format -msgid "operator family with OID %u does not exist" -msgstr "OID'i %u olan operatör mevcut değil" - -#: catalog/aclchk.c:3412 -#, c-format -msgid "text search dictionary with OID %u does not exist" -msgstr "%u OID'li metin arama sözlüğü mevcut değil" - -#: catalog/aclchk.c:3441 -#, c-format -msgid "text search configuration with OID %u does not exist" -msgstr "%u OID'li metin arama sözlüğü mevcut değil" - -#: catalog/aclchk.c:3527 -#, c-format -msgid "conversion with OID %u does not exist" -msgstr "%u OID'li dönüşüm mevcut değil" - -#: catalog/catalog.c:75 -#, fuzzy -msgid "invalid fork name" -msgstr "geçirsiz rol adı \"%s\"" - -#: catalog/catalog.c:76 -#, fuzzy -msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"." -msgstr "Geçerli değerler: \"none\", \"mod\", \"ddl\", ve \"all\"." - -#: catalog/dependency.c:569 -#, c-format -msgid "cannot drop %s because %s requires it" -msgstr "%s tarafından kullanıldığı için %s kaldırılamıyor" - -#: catalog/dependency.c:572 -#, c-format -msgid "You can drop %s instead." -msgstr "Onun yerine %s nesnesini kaldırabilirsiniz." - -#: catalog/dependency.c:725 -#: catalog/pg_shdepend.c:547 -#, c-format -msgid "cannot drop %s because it is required by the database system" -msgstr "veritabanı sistemi tarafından kullanıldığı için %s kaldırılamıyor" - -#: catalog/dependency.c:839 -#, c-format -msgid "drop auto-cascades to %s" -msgstr "drop, auto-cascade neticesinde %s nesnesine varıyor" - -#: catalog/dependency.c:851 -#: catalog/dependency.c:860 -#, c-format -msgid "%s depends on %s" -msgstr "%s, %s nesnesine bağlıdır" - -#: catalog/dependency.c:872 -#: catalog/dependency.c:881 -#, c-format -msgid "drop cascades to %s" -msgstr "kaldırma işlemi , cascade neticesinde %s' nesnesine varıyor" - -#: catalog/dependency.c:889 -#: catalog/pg_shdepend.c:658 -#, fuzzy, 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" -"ve daha %d nesne (liste için sunucu log dosyasına bakın)" -msgstr[1] "" -"\n" -"ve daha %d nesne (liste için sunucu log dosyasına bakın)" - -#: catalog/dependency.c:901 -#, c-format -msgid "cannot drop %s because other objects depend on it" -msgstr "diğer nesnelerin ona bağlı olması nedeniyle %s kaldırılamıyor" - -#: catalog/dependency.c:905 -#: catalog/dependency.c:912 -msgid "Use DROP ... CASCADE to drop the dependent objects too." -msgstr "Bağlı nesneleri de kaldırmak için DROP ... CASCADE kullanın." - -#: catalog/dependency.c:909 -#, fuzzy -msgid "cannot drop desired object(s) because other objects depend on them" -msgstr "diğer nesnelerin ona bağlı olması nedeniyle %s kaldırılamıyor" - -#. translator: %d always has a value larger than 1 -#: catalog/dependency.c:918 -#, fuzzy, c-format -msgid "drop cascades to %d other object" -msgid_plural "drop cascades to %d other objects" -msgstr[0] "kaldırma işlemi , cascade neticesinde %s' nesnesine varıyor" -msgstr[1] "kaldırma işlemi , cascade neticesinde %s' nesnesine varıyor" - -#: catalog/dependency.c:2075 -#, c-format -msgid " column %s" -msgstr "%s sütunu" - -#: catalog/dependency.c:2081 -#, c-format -msgid "function %s" -msgstr "%s fonksiyonu" - -#: catalog/dependency.c:2086 -#, c-format -msgid "type %s" -msgstr "%s tipi" - -#: catalog/dependency.c:2116 -#, c-format -msgid "cast from %s to %s" -msgstr "%s tipi %s tipine cast" - -#: catalog/dependency.c:2144 -#, fuzzy, c-format -msgid "constraint %s on %s" -msgstr "%s constrainti etkin" - -#: catalog/dependency.c:2150 -#, c-format -msgid "constraint %s" -msgstr "%s constraint" - -#: catalog/dependency.c:2168 -#, c-format -msgid "conversion %s" -msgstr "%s dönüşümünü" - -#: catalog/dependency.c:2205 -#, c-format -msgid "default for %s" -msgstr "%s için varsayılan" - -#: catalog/dependency.c:2223 -#, c-format -msgid "language %s" -msgstr "%s dili" - -#: catalog/dependency.c:2230 -#, c-format -msgid "operator %s" -msgstr "%s operatoru" - -#: catalog/dependency.c:2264 -#, c-format -msgid "operator class %s for access method %s" -msgstr "%2$s erişim yöntemi için %1$s erişim metodu" - -#: catalog/dependency.c:2314 -#, fuzzy, c-format -msgid "operator %d %s of %s" -msgstr "%d %s operatoru " - -#: catalog/dependency.c:2361 -#, fuzzy, c-format -msgid "function %d %s of %s" -msgstr "%d %s fonksiyonu " - -#: catalog/dependency.c:2398 -#, c-format -msgid "rule %s on " -msgstr "%s rule etkin" - -#: catalog/dependency.c:2433 -#, c-format -msgid "trigger %s on " -msgstr "%s triggeri etkin" - -#: catalog/dependency.c:2450 -#, c-format -msgid "schema %s" -msgstr "%s şeması" - -#: catalog/dependency.c:2464 -#, c-format -msgid "text search parser %s" -msgstr "metin arama ayrıştırıcısı %s" - -#: catalog/dependency.c:2480 -#, c-format -msgid "text search dictionary %s" -msgstr "metin arama sözlüğü %s" - -#: catalog/dependency.c:2496 -#, c-format -msgid "text search template %s" -msgstr "metin arama şablonu %s" - -#: catalog/dependency.c:2512 -#, c-format -msgid "text search configuration %s" -msgstr "%s metin arama yapılandırması" - -#: catalog/dependency.c:2520 -#, c-format -msgid "role %s" -msgstr "%s rolü" - -#: catalog/dependency.c:2533 -#, c-format -msgid "database %s" -msgstr "%s veritabanı" - -#: catalog/dependency.c:2545 -#, c-format -msgid "tablespace %s" -msgstr "%s tablespace" - -#: catalog/dependency.c:2554 -#, fuzzy, c-format -msgid "foreign-data wrapper %s" -msgstr "kullanıcı tanımlı operatörler okunuyor\n" - -#: catalog/dependency.c:2563 -#, c-format -msgid "server %s" -msgstr "sunucu %s" - -#: catalog/dependency.c:2589 -#, c-format -msgid "user mapping for %s" -msgstr "" - -#: catalog/dependency.c:2633 -#, c-format -msgid "table %s" -msgstr "%s tablosu" - -#: catalog/dependency.c:2637 -#, c-format -msgid "index %s" -msgstr "%s indeksi" - -#: catalog/dependency.c:2641 -#, c-format -msgid "sequence %s" -msgstr "%s sequence" - -#: catalog/dependency.c:2645 -#, c-format -msgid "uncataloged table %s" -msgstr "%s katalog edilemeiş tablo" - -#: catalog/dependency.c:2649 -#, c-format -msgid "toast table %s" -msgstr "%s toast tablosu" - -#: catalog/dependency.c:2653 -#, c-format -msgid "view %s" -msgstr "%s view" - -#: catalog/dependency.c:2657 -#, c-format -msgid "composite type %s" -msgstr "%s composite type" - -#: catalog/dependency.c:2662 -#, c-format -msgid "relation %s" -msgstr "%s nesnesi" - -#: catalog/dependency.c:2703 -#, c-format -msgid "operator family %s for access method %s" -msgstr "%2$s erişim yöntemi için %1$s operatörü " - -#: catalog/heap.c:241 -#, c-format -msgid "permission denied to create \"%s.%s\"" -msgstr "\"%s.%s\" oluşturulmasına izin verilmedi" - -#: catalog/heap.c:243 -msgid "System catalog modifications are currently disallowed." -msgstr "System catalog değişikliklerine şu anda izin verilmiyor." - -#: catalog/heap.c:362 -#: commands/tablecmds.c:1156 -#: commands/tablecmds.c:1481 -#: commands/tablecmds.c:3597 -#, c-format -msgid "tables can have at most %d columns" -msgstr "bir tablo en fazla %d sütun içerebilir" - -#: catalog/heap.c:379 -#, c-format -msgid "column name \"%s\" conflicts with a system column name" -msgstr "\"%s\" kolon adı sistem kolonu ile çakışmaktadır" - -#: catalog/heap.c:395 -#, c-format -msgid "column name \"%s\" specified more than once" -msgstr "\"%s\" kolon adı birden fazla belirtilmiş" - -#: catalog/heap.c:431 -#, c-format -msgid "column \"%s\" has type \"unknown\"" -msgstr "\"%s\" sütunu \"unknown\" tipine sahip" - -#: catalog/heap.c:432 -msgid "Proceeding with relation creation anyway." -msgstr "Nesne oluşturmasına yine de devam edilmektedir." - -#: catalog/heap.c:443 -#, c-format -msgid "column \"%s\" has pseudo-type %s" -msgstr "\"%s\" sütunu %s pseudo-tipine sahip" - -#: catalog/heap.c:866 -#: catalog/index.c:595 -#: commands/tablecmds.c:2112 -#, c-format -msgid "relation \"%s\" already exists" -msgstr "\"%s\" nesnesi zaten mevcut" - -#: catalog/heap.c:883 -#: catalog/pg_type.c:379 -#: catalog/pg_type.c:656 -#: commands/typecmds.c:219 -#: commands/typecmds.c:796 -#: commands/typecmds.c:1122 -#, c-format -msgid "type \"%s\" already exists" -msgstr "\"%s\" tipi zaten mevcut" - -#: catalog/heap.c:884 -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 "Aynı adı taşıyan bir nesneye ilişkili veri tipi mevcuttur, başka bir ad seçmelisiniz." - -#: catalog/heap.c:905 -#: catalog/index.c:589 -#: commands/tablecmds.c:6693 -msgid "only shared relations can be placed in pg_global tablespace" -msgstr "pg_global tablo aralığına sadece paylaşımlı sensne konulabilir" - -#: catalog/heap.c:1434 -#, fuzzy, c-format -msgid "cannot drop \"%s\" because it is being used by active queries in this session" -msgstr "\"%s\" tablosu şu anda aktif sorgular tarafından kullanılmaktadır" - -#: catalog/heap.c:1885 -#, c-format -msgid "check constraint \"%s\" already exists" -msgstr "\"%s\"check constraint'i zaten mevcut" - -#: catalog/heap.c:2029 -#: catalog/pg_constraint.c:613 -#: commands/tablecmds.c:4430 -#, c-format -msgid "constraint \"%s\" for relation \"%s\" already exists" -msgstr "\"%s\" constraint 'i \"%s\" nesnesi için zaten mevcut" - -#: catalog/heap.c:2033 -#, fuzzy, c-format -msgid "merging constraint \"%s\" with inherited definition" -msgstr "\"%s\" sütunu miras alınan tanımı ile birleştiriliyor" - -#: catalog/heap.c:2132 -msgid "cannot use column references in default expression" -msgstr "defaul ifadesinde sütun referansı kullanılamaz" - -#: catalog/heap.c:2140 -msgid "default expression must not return a set" -msgstr "öntanımlı ifade küme döndürmelidir" - -#: catalog/heap.c:2148 -msgid "cannot use subquery in default expression" -msgstr "öntanımlı ifadede subquery kullanılamaz" - -#: catalog/heap.c:2152 -msgid "cannot use aggregate function in default expression" -msgstr "öntanımlı ifadede aggregate fonksiyonu kullanılamaz" - -#: catalog/heap.c:2156 -#, fuzzy -msgid "cannot use window function in default expression" -msgstr "öntanımlı ifadede aggregate fonksiyonu kullanılamaz" - -#: catalog/heap.c:2175 -#: rewrite/rewriteHandler.c:942 -#, c-format -msgid "column \"%s\" is of type %s but default expression is of type %s" -msgstr "\"%s\" kolonunun tipi %s'dır, ancak öntanımlı ifadenin tipi %s'dir." - -#: catalog/heap.c:2180 -#: commands/prepare.c:370 -#: parser/parse_node.c:367 -#: parser/parse_target.c:471 -#: parser/parse_target.c:730 -#: parser/parse_target.c:740 -#: rewrite/rewriteHandler.c:947 -msgid "You will need to rewrite or cast the expression." -msgstr "Bu ifadeyi yinden yazmalı ya da sonucunu cast etmelisiniz." - -#: catalog/heap.c:2216 -#, c-format -msgid "only table \"%s\" can be referenced in check constraint" -msgstr "check constraint içerisinde sadece \"%s\" tablosu kullanılabilir" - -#: catalog/heap.c:2225 -#: commands/typecmds.c:2258 -msgid "cannot use subquery in check constraint" -msgstr "check constraint içinde subquery kullanılamaz" - -#: catalog/heap.c:2229 -#: commands/typecmds.c:2262 -msgid "cannot use aggregate function in check constraint" -msgstr "check constraint içinde aggregate function kullanılamaz" - -#: catalog/heap.c:2233 -#: commands/typecmds.c:2266 -#, fuzzy -msgid "cannot use window function in check constraint" -msgstr "check constraint içinde aggregate function kullanılamaz" - -#: catalog/heap.c:2452 -msgid "unsupported ON COMMIT and foreign key combination" -msgstr "desteklenmeyen ON COMMIT ve foreign key birleştirmesi" - -#: catalog/heap.c:2453 -#, c-format -msgid "Table \"%s\" references \"%s\", but they do not have the same ON COMMIT setting." -msgstr "\"%s\" tablosu \"%s\" tablosuna başvuruyor ancak ikisi aynı ON COMMIT ayarına sahip değildir." - -#: catalog/heap.c:2458 -msgid "cannot truncate a table referenced in a foreign key constraint" -msgstr "ikincil anahtar bütünlük kısıtlamasının refere ettiği tabloyu truncate edemezsiniz" - -#: catalog/heap.c:2459 -#, c-format -msgid "Table \"%s\" references \"%s\"." -msgstr "\"%s\" tablosu \"%s\" tablosuna başvuruyor." - -#: catalog/heap.c:2461 -#, c-format -msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." -msgstr "\"%s\" tablosuna da truncate işlemi uygulayın, veya TRUNCATE ... CASCADE işlemi kullanın." - -#: catalog/index.c:552 -msgid "user-defined indexes on system catalog tables are not supported" -msgstr "sistem katalog tabloları üzerinde kullanıcı tanımlı index oluşturulamaz" - -#: catalog/index.c:562 -msgid "concurrent index creation on system catalog tables is not supported" -msgstr "sistem katalog tabloları üzerinde koşutzamanlı index oluşturma işlemi yapılamaz" - -#: catalog/index.c:571 -msgid "shared indexes cannot be created after initdb" -msgstr "initdb işleminden sonra shared indeks oluşturulamaz" - -#: catalog/index.c:2270 -msgid "cannot reindex temporary tables of other sessions" -msgstr "diğer oturumların geçici tabloları yeniden indexlenemez" - -#: catalog/index.c:2292 -#, c-format -msgid "shared index \"%s\" can only be reindexed in stand-alone mode" -msgstr "\"%s\" shared indexe sadece stand-alone modunda reindex işlemi uygulanabilir" - -#: catalog/namespace.c:229 -#: catalog/namespace.c:303 -#: commands/trigger.c:3514 -#, c-format -msgid "cross-database references are not implemented: \"%s.%s.%s\"" -msgstr "veritabanı-arası referanslar oluşturulamaz: \"%s.%s.%s\"" - -#: catalog/namespace.c:247 -#: catalog/namespace.c:314 -msgid "temporary tables cannot specify a schema name" -msgstr "geçici tablolarda şema adı belirtilemez" - -#: catalog/namespace.c:270 -#: commands/lockcmds.c:113 -#: parser/parse_relation.c:864 -#, c-format -msgid "relation \"%s.%s\" does not exist" -msgstr "\"%s.%s\" nesnesi mevcut değil" - -#: catalog/namespace.c:356 -#: catalog/namespace.c:2230 -msgid "no schema has been selected to create in" -msgstr "oluşturma işlemi için şema adı belirtimemiş" - -#: catalog/namespace.c:1575 -#: commands/tsearchcmds.c:306 -#, c-format -msgid "text search parser \"%s\" does not exist" -msgstr "\"%s\" metin arama ayrıştırıcısı mevcut değil" - -#: catalog/namespace.c:1703 -#: commands/tsearchcmds.c:664 -#, c-format -msgid "text search dictionary \"%s\" does not exist" -msgstr "\"%s\" metin arama sözlüğü mevcut değil" - -#: catalog/namespace.c:1832 -#: commands/tsearchcmds.c:1158 -#, c-format -msgid "text search template \"%s\" does not exist" -msgstr "\"%s\" metin arama şablonu mevcut değil" - -#: catalog/namespace.c:1960 -#: commands/tsearchcmds.c:1562 -#: commands/tsearchcmds.c:1722 -#, c-format -msgid "text search configuration \"%s\" does not exist" -msgstr "\"%s\" metin arama sözlüğü mevcut değil" - -#: catalog/namespace.c:2076 -#: parser/parse_expr.c:578 -#: parser/parse_target.c:909 -#, c-format -msgid "cross-database references are not implemented: %s" -msgstr "veritabanı-arası referanslar oluşturulamaz: %s" - -#: catalog/namespace.c:2082 -#: parser/parse_expr.c:612 -#: parser/parse_target.c:919 -#: gram.y:3434 -#: gram.y:9931 -#, c-format -msgid "improper qualified name (too many dotted names): %s" -msgstr "geçersiz qualified adı (çok fazla noktalı isim): %s" - -#: catalog/namespace.c:2262 -#, c-format -msgid "improper relation name (too many dotted names): %s" -msgstr "geçersiz nesne adı (çok fazla noktalı isim): %s" - -#: catalog/namespace.c:2836 -#, c-format -msgid "permission denied to create temporary tables in database \"%s\"" -msgstr "\"%s\" veritabanında geçici veritabanı oluşturma izni yok" - -#: catalog/pg_aggregate.c:100 -msgid "cannot determine transition data type" -msgstr "geçiş veri tipi belirlenemedi" - -#: catalog/pg_aggregate.c:101 -msgid "An aggregate using a polymorphic transition type must have at least one polymorphic argument." -msgstr "Polymorphic kullanan aggregateler bu en az birer polymorphic argüman içermelidir." - -#: catalog/pg_aggregate.c:124 -#, c-format -msgid "return type of transition function %s is not %s" -msgstr "%s geçiş fonksiyonunun tipi %s değildir" - -#: catalog/pg_aggregate.c:146 -msgid "must not omit initial value when transition function is strict and transition type is not compatible with input type" -msgstr "geçiş fonksiyonu strict olduğunda ve giriş parametresinin tipi uyumsuz olduğunda başlangıç değeri mutlaka verilmelidir" - -#: catalog/pg_aggregate.c:177 -#: catalog/pg_proc.c:196 -msgid "cannot determine result data type" -msgstr "sonuç veri tipi belirlenemiyor" - -#: catalog/pg_aggregate.c:178 -msgid "An aggregate returning a polymorphic type must have at least one polymorphic argument." -msgstr "Polymorphic döndüren aggregateler bu en az birer polymorphic argüman içermelidir." - -#: catalog/pg_aggregate.c:190 -#: catalog/pg_proc.c:202 -msgid "unsafe use of pseudo-type \"internal\"" -msgstr "\"internal\" pseudo-type'ın tehlikeli kullanışı" - -#: catalog/pg_aggregate.c:191 -#: catalog/pg_proc.c:203 -msgid "A function returning \"internal\" must have at least one \"internal\" argument." -msgstr "\"internal\" döndüren fonksiyonlar bu tiplerden en az bir argüman \"internal\" olmalıdır." - -#: catalog/pg_aggregate.c:199 -msgid "sort operator can only be specified for single-argument aggregates" -msgstr "sort işletmeni sadece tek argümanlı aggregate işin belirtilebilir" - -#: catalog/pg_aggregate.c:332 -#: commands/typecmds.c:1274 -#: commands/typecmds.c:1325 -#: commands/typecmds.c:1356 -#: commands/typecmds.c:1379 -#: commands/typecmds.c:1400 -#: commands/typecmds.c:1427 -#: commands/typecmds.c:1454 -#: parser/parse_func.c:236 -#: parser/parse_func.c:1291 -#, c-format -msgid "function %s does not exist" -msgstr "%s fonksiyonu mevcut değildir" - -#: catalog/pg_aggregate.c:337 -#, c-format -msgid "function %s returns a set" -msgstr "%s fonksiyonu bir küme döndürüyor" - -#: catalog/pg_aggregate.c:361 -#, c-format -msgid "function %s requires run-time type coercion" -msgstr "%s fonksiyonu çalışma zamanı tipi zorlaması gerektirir" - -#: catalog/pg_constraint.c:622 -#: commands/typecmds.c:2199 -#, c-format -msgid "constraint \"%s\" for domain \"%s\" already exists" -msgstr "\"%2$s\" domain için \"%1$s\" constraint için zaten mevcut" - -#: catalog/pg_conversion.c:67 -#, c-format -msgid "conversion \"%s\" already exists" -msgstr "conversion \"%s\" zaten mevcut" - -#: catalog/pg_conversion.c:80 -#, c-format -msgid "default conversion for %s to %s already exists" -msgstr "%s'dan %s'a öntanımlı dönüşüm zaten mevcut" - -#: catalog/pg_depend.c:209 -#, c-format -msgid "cannot remove dependency on %s because it is a system object" -msgstr "sistem nesnesi tarafından kullanıldığı için %s kaldırılamıyor" - -#: catalog/pg_enum.c:91 -#, c-format -msgid "invalid enum label \"%s\"" -msgstr "Geçersiz enum etiketi: \"%s\"" - -#: catalog/pg_enum.c:92 -#, c-format -msgid "Labels must be %d characters or less." -msgstr "Etiketler %d karakter ya da daha az olmalıdır." - -#: catalog/pg_largeobject.c:107 -#: commands/comment.c:1423 -#: storage/large_object/inv_api.c:266 -#: storage/large_object/inv_api.c:371 -#, c-format -msgid "large object %u does not exist" -msgstr "large object %u mevcut değil" - -#: catalog/pg_namespace.c:52 -#: commands/schemacmds.c:276 -#, c-format -msgid "schema \"%s\" already exists" -msgstr "\"%s\" şeması zaten mevcut" - -#: catalog/pg_operator.c:220 -#: catalog/pg_operator.c:358 -#, c-format -msgid "\"%s\" is not a valid operator name" -msgstr "\"%s\" geçerli bir operatör adı değildir" - -#: catalog/pg_operator.c:367 -msgid "only binary operators can have commutators" -msgstr "sadece ikili işlemler bir commutator'a sahip olabilirler" - -#: catalog/pg_operator.c:371 -msgid "only binary operators can have join selectivity" -msgstr "sadece ikili operatörler join selectivity'sine sahip olabilirler" - -#: catalog/pg_operator.c:375 -msgid "only binary operators can merge join" -msgstr "sadece ikili işlemler merge join edebilirler" - -#: catalog/pg_operator.c:379 -msgid "only binary operators can hash" -msgstr "sadece ikili işlemler hash edebilirler" - -#: catalog/pg_operator.c:390 -#, fuzzy -msgid "only boolean operators can have negators" -msgstr "sadece ikili işlemler bir commutator'a sahip olabilirler" - -#: catalog/pg_operator.c:394 -#, fuzzy -msgid "only boolean operators can have restriction selectivity" -msgstr "sadece ikili operatörler join selectivity'sine sahip olabilirler" - -#: catalog/pg_operator.c:398 -#, fuzzy -msgid "only boolean operators can have join selectivity" -msgstr "sadece ikili operatörler join selectivity'sine sahip olabilirler" - -#: catalog/pg_operator.c:402 -#, fuzzy -msgid "only boolean operators can merge join" -msgstr "sadece ikili işlemler merge join edebilirler" - -#: catalog/pg_operator.c:406 -#, fuzzy -msgid "only boolean operators can hash" -msgstr "sadece ikili işlemler hash edebilirler" - -#: catalog/pg_operator.c:418 -#, c-format -msgid "operator %s already exists" -msgstr "%s operatörü zaten mevcut" - -#: catalog/pg_operator.c:608 -msgid "operator cannot be its own negator or sort operator" -msgstr "bir işlem, kendisinin zıttı veya kendisinin sort operatörü olamaz" - -#: catalog/pg_proc.c:115 -#: parser/parse_func.c:1335 -#: parser/parse_func.c:1375 -#, fuzzy, c-format -msgid "functions cannot have more than %d argument" -msgid_plural "functions cannot have more than %d arguments" -msgstr[0] "bir fonksiyonun arguman sayısı %d sayısından büyük olamaz" -msgstr[1] "bir fonksiyonun arguman sayısı %d sayısından büyük olamaz" - -#: catalog/pg_proc.c:197 -msgid "A function returning a polymorphic type must have at least one polymorphic argument." -msgstr "Polymorphic tipini döndüren fonksiyonlar en az bir polymorphic argüman içermelidir." - -#: catalog/pg_proc.c:215 -#, c-format -msgid "\"%s\" is already an attribute of type %s" -msgstr "\"%s\" zanten %s tipinin özelliğidir" - -#: catalog/pg_proc.c:354 -#, c-format -msgid "function \"%s\" already exists with same argument types" -msgstr "\"%s\" fonksiyonu aynı argüman veri tipleriyle zaten mevcut" - -#: catalog/pg_proc.c:368 -#: catalog/pg_proc.c:390 -msgid "cannot change return type of existing function" -msgstr "var olan bir fonksiyonun döndürme tipi değiştirilemez" - -#: catalog/pg_proc.c:369 -#: catalog/pg_proc.c:392 -#: catalog/pg_proc.c:415 -#: catalog/pg_proc.c:441 -msgid "Use DROP FUNCTION first." -msgstr "Önce DROP FUNCTION kullanın." - -#: catalog/pg_proc.c:391 -msgid "Row type defined by OUT parameters is different." -msgstr "OUT parametresinde tanımlanmış Row veri tipi farklıdır." - -#: catalog/pg_proc.c:414 -#, fuzzy -msgid "cannot remove parameter defaults from existing function" -msgstr "var olan bir fonksiyonun döndürme tipi değiştirilemez" - -#: catalog/pg_proc.c:440 -#, fuzzy -msgid "cannot change data type of existing parameter default value" -msgstr "var olan bir fonksiyonun döndürme tipi değiştirilemez" - -#: catalog/pg_proc.c:452 -#, fuzzy, c-format -msgid "function \"%s\" is an aggregate function" -msgstr "\"%s\" fonksiyonu bir aggregate'tir" - -#: catalog/pg_proc.c:457 -#, fuzzy, c-format -msgid "function \"%s\" is not an aggregate function" -msgstr "\"%s\" fonksiyonu bir aggregate değildir" - -#: catalog/pg_proc.c:465 -#, fuzzy, c-format -msgid "function \"%s\" is a window function" -msgstr "%s fonksiyonu benzersiz değildir" - -#: catalog/pg_proc.c:470 -#, fuzzy, c-format -msgid "function \"%s\" is not a window function" -msgstr "\"%s\" fonksiyonu bir aggregate değildir" - -#: catalog/pg_proc.c:595 -#, c-format -msgid "there is no built-in function named \"%s\"" -msgstr "\"%s\" adlı gömülü bir fonksiyon yok" - -#: catalog/pg_proc.c:690 -#, c-format -msgid "SQL functions cannot return type %s" -msgstr "SQL fonksiyonları %s tipini dündüremezler" - -#: catalog/pg_proc.c:705 -#, c-format -msgid "SQL functions cannot have arguments of type %s" -msgstr "SQL fonksiyonları %s tipinde argümana sahip olamaz" - -#: catalog/pg_proc.c:777 -#: executor/functions.c:943 -#, c-format -msgid "SQL function \"%s\"" -msgstr " \"%s\" SQL fonksiyonu" - -#: catalog/pg_type.c:224 -#, c-format -msgid "invalid type internal size %d" -msgstr "tip dahili boyutu geçersiz :%d" - -#: catalog/pg_type.c:240 -#: catalog/pg_type.c:248 -#: catalog/pg_type.c:256 -#: catalog/pg_type.c:265 -#, fuzzy, c-format -msgid "alignment \"%c\" is invalid for passed-by-value type of size %d" -msgstr "passed-by-value tipler için %d dahili tip geçersizdir" - -#: catalog/pg_type.c:272 -#, c-format -msgid "internal size %d is invalid for passed-by-value type" -msgstr "passed-by-value tipler için %d dahili tip geçersizdir" - -#: catalog/pg_type.c:281 -#: catalog/pg_type.c:287 -#, fuzzy, c-format -msgid "alignment \"%c\" is invalid for variable-length type" -msgstr "passed-by-value tipler için %d dahili tip geçersizdir" - -#: catalog/pg_type.c:295 -msgid "fixed-size types must have storage PLAIN" -msgstr "sabit-boyutlu tipler PLAIN storage özelliği ile tanımlanmalıdır" - -#: catalog/pg_type.c:718 -#, c-format -msgid "could not form array type name for type \"%s\"" -msgstr "\"%s\" tipi için array tipi bulunamıyor" - -#: catalog/pg_shdepend.c:665 -#, fuzzy, 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" -"ve %d başka veritabanında nesneleri (liste için sunucu log dosyasına bakın)" -msgstr[1] "" -"\n" -"ve %d başka veritabanında nesneleri (liste için sunucu log dosyasına bakın)" - -#: catalog/pg_shdepend.c:979 -#, c-format -msgid "role %u was concurrently dropped" -msgstr "%u rolü eşzamanlı kaldırıldı" - -#: catalog/pg_shdepend.c:998 -#, c-format -msgid "tablespace %u was concurrently dropped" -msgstr "%u tablespace eşzamanlı kaldırıldı" - -#: catalog/pg_shdepend.c:1042 -#, c-format -msgid "owner of %s" -msgstr "%s nesnesinin sahibi" - -#: catalog/pg_shdepend.c:1044 -#, c-format -msgid "access to %s" -msgstr "erişim: %s" - -#. translator: %s will always be "database %s" -#: catalog/pg_shdepend.c:1052 -#, fuzzy, c-format -msgid "%d object in %s" -msgid_plural "%d objects in %s" -msgstr[0] "%2$s veritabanında %1$d nesne" -msgstr[1] "%2$s veritabanında %1$d nesne" - -#: catalog/pg_shdepend.c:1163 -#: catalog/pg_shdepend.c:1293 -#, c-format -msgid "cannot drop objects owned by %s because they are required by the database system" -msgstr "veritabanı sistemi tarafından ihtiyaç duyulduğu için %s kaldırılamıyor" - -#: catalog/toasting.c:94 -#: commands/comment.c:516 -#: commands/indexcmds.c:174 -#: commands/indexcmds.c:1358 -#: commands/lockcmds.c:140 -#: commands/tablecmds.c:193 -#: commands/tablecmds.c:1029 -#: commands/tablecmds.c:3231 -#: commands/trigger.c:115 -#: commands/trigger.c:803 -#, c-format -msgid "\"%s\" is not a table" -msgstr "\"%s\" bir tablo değildir" - -#: catalog/toasting.c:143 -msgid "shared tables cannot be toasted after initdb" -msgstr "initdb işleminden sonra paylaşılmış tablolar toast edilemez" - -#: commands/aggregatecmds.c:103 -#, c-format -msgid "aggregate attribute \"%s\" not recognized" -msgstr "aggregate parametresi \"%s\" tanınmıyor" - -#: commands/aggregatecmds.c:113 -msgid "aggregate stype must be specified" -msgstr "aggregate type belirtilmelidir" - -#: commands/aggregatecmds.c:117 -msgid "aggregate sfunc must be specified" -msgstr "aggregate sync belirtilmelidir" - -#: commands/aggregatecmds.c:134 -msgid "aggregate input type must be specified" -msgstr "aggregate girdi veri tipi belirtilmelidir" - -#: commands/aggregatecmds.c:159 -msgid "basetype is redundant with aggregate input type specification" -msgstr "aggregate input type specification ile basetype gereksizdir" - -#: commands/aggregatecmds.c:191 -#, c-format -msgid "aggregate transition data type cannot be %s" -msgstr "aggregate transaction veri tipi %s olamaz" - -#: commands/aggregatecmds.c:230 -#, c-format -msgid "aggregate %s(%s) does not exist, skipping" -msgstr "aggregate %s(%s) mevcut değil, atlanıyor" - -#: commands/aggregatecmds.c:297 -#: commands/functioncmds.c:1097 -#, c-format -msgid "function %s already exists in schema \"%s\"" -msgstr "%s fonksiyonu \"%s\" şemasında zaten mevcut" - -#: commands/analyze.c:180 -#, c-format -msgid "skipping \"%s\" --- only superuser can analyze it" -msgstr "\"%s\" atlanıyor --- sadece superuser onu analiz edebilir" - -#: commands/analyze.c:184 -#, fuzzy, c-format -msgid "skipping \"%s\" --- only superuser or database owner can analyze it" -msgstr "\"%s\" atlanıyor --- sadece tablo ve veritabanı sahibi onu analiz edebilir" - -#: commands/analyze.c:188 -#, c-format -msgid "skipping \"%s\" --- only table or database owner can analyze it" -msgstr "\"%s\" atlanıyor --- sadece tablo ve veritabanı sahibi onu analiz edebilir" - -#: commands/analyze.c:204 -#, c-format -msgid "skipping \"%s\" --- cannot analyze indexes, views, or special system tables" -msgstr "\"%s\" atlanıyor --- indexler, viewlar ya da özel sistem tabloları analiz edilemez" - -#: commands/analyze.c:232 -#, c-format -msgid "analyzing \"%s.%s\"" -msgstr "\"%s.%s\" analiz ediliyor" - -#: commands/analyze.c:531 -#, c-format -msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s" -msgstr "\"%s.%s.%s\" tablosunun automatic analyze; system kullanımı: %s" - -#: commands/analyze.c:1117 -#, 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 "\"%1$s\": %4$.0f canlı ve %5$.0f ölü satırı olan; örneklemede %6$d satır olan, %7$.0f tahmini toplam satır içeren %3$u sayfadan %2$d sayfa taranmıştır" - -#: commands/async.c:344 -#, fuzzy -msgid "cannot PREPARE a transaction that has executed LISTEN or UNLISTEN" -msgstr "WITH HOLD imleci oluşturan transaction PREPARE edilemedi" - -#: commands/cluster.c:123 -#: commands/cluster.c:471 -msgid "cannot cluster temporary tables of other sessions" -msgstr "diğer oturumların geçici tabloları üzerinde cluster yapılamaz" - -#: commands/cluster.c:154 -#, c-format -msgid "there is no previously clustered index for table \"%s\"" -msgstr "\"%s\" tablosunda daha önce cluster edilmiş index yoktur" - -#: commands/cluster.c:168 -#: commands/tablecmds.c:6473 -#, c-format -msgid "index \"%s\" for table \"%s\" does not exist" -msgstr "\"%s\"indexi, \"%s\" tablosunda mevcut değil" - -#: commands/cluster.c:348 -#, fuzzy, c-format -msgid "clustering \"%s.%s\"" -msgstr "\"%s.%s\" veritabanına vacuum yapılıyor" - -#: commands/cluster.c:378 -#, c-format -msgid "\"%s\" is not an index for table \"%s\"" -msgstr "\"%s\", \"%s\" tablosunun indexi değildir" - -#: commands/cluster.c:391 -#, c-format -msgid "cannot cluster on partial index \"%s\"" -msgstr "\"%s\" partial index üzerinde cluster yapılamaz" - -#: commands/cluster.c:397 -#, c-format -msgid "cannot cluster on index \"%s\" because access method does not support clustering" -msgstr "\"%s\" indexin erişim yöntemi clustering desteklemediği için cluster yapılamaz" - -#: commands/cluster.c:417 -#, c-format -msgid "cannot cluster on index \"%s\" because access method does not handle null values" -msgstr "\"%s\" indexin erişim yöntemi null değerleri desteklemediği için cluster yapılamaz" - -#: commands/cluster.c:420 -#, c-format -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 "Bunu önlemek için \"%s\" sütunu NOT NULL yaparak ya da tablodan cluser tanımlarını kaldırmak için ALTER TABLE ... SET WITHOUT CLUSTER kullanabilirsiniz." - -#: commands/cluster.c:422 -#, c-format -msgid "You might be able to work around this by marking column \"%s\" NOT NULL." -msgstr "\"%s\" sütununu NOT NULL olarak tanımlamakla bu sorunu çözebilirsiniz" - -#: commands/cluster.c:433 -#, c-format -msgid "cannot cluster on expressional index \"%s\" because its index access method does not handle null values" -msgstr "\"%s\" ifadesel indexin erişim yöntemi null değerleri desteklemediği için cluster yapılamaz" - -#: commands/cluster.c:448 -#, c-format -msgid "cannot cluster on invalid index \"%s\"" -msgstr "\"%s\" geçersiz indexi üzerinde cluster işlemi yapılamaz" - -#: commands/cluster.c:461 -#, c-format -msgid "\"%s\" is a system catalog" -msgstr "\"%s\" bir sistem kataloğudur" - -#: commands/comment.c:523 -#: commands/tablecmds.c:205 -#: commands/tablecmds.c:2051 -#: commands/tablecmds.c:2274 -#: commands/tablecmds.c:7508 -#: commands/view.c:162 -#, c-format -msgid "\"%s\" is not a view" -msgstr "\"%s\" bir view değildir" - -#: commands/comment.c:609 -msgid "database name cannot be qualified" -msgstr "veritabanı ismi geçerli değil" - -#: commands/comment.c:657 -msgid "tablespace name cannot be qualified" -msgstr "tablespace adı geçerli değil" - -#: commands/comment.c:694 -msgid "role name cannot be qualified" -msgstr "rol adı geçerli değil" - -#: commands/comment.c:703 -#, c-format -msgid "must be member of role \"%s\" to comment upon it" -msgstr "\"%s\" rolüne açıklama eklemek için bu role dahil olmalısınız" - -#: commands/comment.c:727 -#: commands/schemacmds.c:177 -msgid "schema name cannot be qualified" -msgstr "şema ismi geçerli değil" - -#: commands/comment.c:804 -#, c-format -msgid "rule \"%s\" does not exist" -msgstr "\"%s\" rule'u mevcut değil" - -#: commands/comment.c:812 -#, c-format -msgid "there are multiple rules named \"%s\"" -msgstr "\"%s\" adını taşıyan birden fazla rule mevcut" - -#: commands/comment.c:813 -msgid "Specify a relation name as well as a rule name." -msgstr "Rule adının yanında nesne adını da belirtin." - -#: commands/comment.c:841 -#: rewrite/rewriteDefine.c:689 -#: rewrite/rewriteDefine.c:752 -#: rewrite/rewriteRemove.c:63 -#, c-format -msgid "rule \"%s\" for relation \"%s\" does not exist" -msgstr "\"%s\" rule'u \"%s\" tablosunda mevcut değil" - -#: commands/comment.c:1036 -#: commands/trigger.c:734 -#: commands/trigger.c:934 -#: commands/trigger.c:1045 -#, c-format -msgid "trigger \"%s\" for table \"%s\" does not exist" -msgstr "\"%s\" triggeri \"%s\" tablosunda mevcut değil" - -#: commands/comment.c:1115 -#, c-format -msgid "table \"%s\" has multiple constraints named \"%s\"" -msgstr "\"%s\" tablosu birden fazla \"%s\" adlı constrainte sahip" - -#: commands/comment.c:1127 -#, c-format -msgid "constraint \"%s\" for table \"%s\" does not exist" -msgstr "\"%2$s\" tablosu için \"%1$s\" bütünlük kısıtlaması mevcut değil" - -#: commands/comment.c:1156 -#: commands/conversioncmds.c:153 -#: commands/conversioncmds.c:211 -#: commands/conversioncmds.c:267 -#, c-format -msgid "conversion \"%s\" does not exist" -msgstr "\"%s\" dönüşümü mevcut değil" - -#: commands/comment.c:1186 -msgid "language name cannot be qualified" -msgstr "dil ismi geçerli değil" - -#: commands/comment.c:1201 -msgid "must be superuser to comment on procedural language" -msgstr "bir yordamsal dile açıklama eklemek için superuser olmalısınız" - -#: commands/comment.c:1238 -#: commands/comment.c:1324 -#: commands/indexcmds.c:286 -#: commands/opclasscmds.c:290 -#: commands/opclasscmds.c:682 -#: commands/opclasscmds.c:785 -#: commands/opclasscmds.c:1517 -#: commands/opclasscmds.c:1580 -#: commands/opclasscmds.c:1748 -#: commands/opclasscmds.c:1848 -#: commands/opclasscmds.c:1945 -#: commands/opclasscmds.c:2072 -#, c-format -msgid "access method \"%s\" does not exist" -msgstr "\"%s\" erişim metodu mevcut değil" - -#: commands/comment.c:1267 -#: commands/comment.c:1277 -#: commands/indexcmds.c:1013 -#: commands/indexcmds.c:1023 -#: commands/opclasscmds.c:1529 -#: commands/opclasscmds.c:1533 -#: commands/opclasscmds.c:1770 -#: commands/opclasscmds.c:1781 -#: commands/opclasscmds.c:1969 -#: commands/opclasscmds.c:1980 -#, c-format -msgid "operator class \"%s\" does not exist for access method \"%s\"" -msgstr "\"%s\" erişim yöntemi için \"%s\" operatör sınıfı mevcut değil" - -#: commands/comment.c:1353 -#: commands/comment.c:1363 -#: commands/opclasscmds.c:352 -#: commands/opclasscmds.c:805 -#: commands/opclasscmds.c:1592 -#: commands/opclasscmds.c:1596 -#: commands/opclasscmds.c:1870 -#: commands/opclasscmds.c:1881 -#: commands/opclasscmds.c:2096 -#: commands/opclasscmds.c:2107 -#, c-format -msgid "operator family \"%s\" does not exist for access method \"%s\"" -msgstr "\"%s\" erişim yöntemi için \"%s\" operatör sınıfı mevcut değil" - -#: commands/comment.c:1466 -#: commands/functioncmds.c:1768 -#, c-format -msgid "cast from type %s to type %s does not exist" -msgstr "%s tipinden %s tipine cast mevcut değildir" - -#: commands/comment.c:1478 -#: commands/functioncmds.c:1509 -#: commands/functioncmds.c:1785 -#, c-format -msgid "must be owner of type %s or type %s" -msgstr "%s veya %s tiplerinin sahibi olmalısınız" - -#: commands/comment.c:1498 -msgid "must be superuser to comment on text search parser" -msgstr "metin arama ayrıştırıcısına açıklama eklemek için superuser olmalısınız" - -#: commands/comment.c:1527 -msgid "must be superuser to comment on text search template" -msgstr "bir metin arama şablonuna açıklama eklemek için superuser olmalısınız" - -#: commands/conversioncmds.c:69 -#, c-format -msgid "source encoding \"%s\" does not exist" -msgstr "\"%s\" kaynak dil kodlaması mevcut değil" - -#: commands/conversioncmds.c:76 -#, c-format -msgid "destination encoding \"%s\" does not exist" -msgstr "\"%s\" hedef dil kodlaması mevcut değil" - -#: commands/conversioncmds.c:90 -#, fuzzy, c-format -msgid "encoding conversion function %s must return type \"void\"" -msgstr "%s typmod_in fonksiyonu \"trigger\" tipini döndürmelidir" - -#: commands/conversioncmds.c:159 -#, c-format -msgid "conversion \"%s\" does not exist, skipping" -msgstr "\"%s\" dönüşümü mevcut değil, atlanıyor" - -#: commands/conversioncmds.c:229 -#, c-format -msgid "conversion \"%s\" already exists in schema \"%s\"" -msgstr "\"%s\" dönüşümü zaten \"%s\" şemasında mevcuttur" - -#: commands/copy.c:311 -#: commands/copy.c:323 -#: commands/copy.c:357 -#: commands/copy.c:367 -msgid "COPY BINARY is not supported to stdout or from stdin" -msgstr "stdin'den stdout'e COPY BINARY desteklenmemektedir" - -#: commands/copy.c:445 -#, c-format -msgid "could not write to COPY file: %m" -msgstr "COPY dosyasına yazma hatası: %m" - -#: commands/copy.c:457 -msgid "connection lost during COPY to stdout" -msgstr "stdout akımına COPY işlemi sırasında bağlantı kesildi" - -#: commands/copy.c:498 -#, c-format -msgid "could not read from COPY file: %m" -msgstr "COPY dosyasından okuma hatası: %m" - -#: commands/copy.c:549 -#, c-format -msgid "COPY from stdin failed: %s" -msgstr "stdin'den COPY başarısız: %s" - -#: commands/copy.c:565 -#, c-format -msgid "unexpected message type 0x%02X during COPY from stdin" -msgstr "stdin akımından COPY işlemi sırasında beklenmeyen mesaj tipi 0x%02X" - -#: commands/copy.c:746 -#: commands/copy.c:754 -#: commands/copy.c:762 -#: commands/copy.c:770 -#: commands/copy.c:778 -#: commands/copy.c:786 -#: commands/copy.c:794 -#: commands/copy.c:802 -#: commands/copy.c:810 -#: commands/copy.c:818 -#: commands/dbcommands.c:145 -#: commands/dbcommands.c:153 -#: commands/dbcommands.c:161 -#: commands/dbcommands.c:169 -#: commands/dbcommands.c:177 -#: commands/dbcommands.c:185 -#: commands/dbcommands.c:193 -#: commands/dbcommands.c:1323 -#: commands/dbcommands.c:1331 -#: commands/functioncmds.c:452 -#: commands/functioncmds.c:542 -#: commands/functioncmds.c:550 -#: commands/functioncmds.c:558 -#: commands/sequence.c:1017 -#: commands/sequence.c:1025 -#: commands/sequence.c:1033 -#: commands/sequence.c:1041 -#: commands/sequence.c:1049 -#: commands/sequence.c:1057 -#: commands/sequence.c:1065 -#: commands/sequence.c:1073 -#: commands/typecmds.c:275 -#: 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:452 -#: commands/user.c:464 -#: commands/user.c:472 -#: commands/user.c:480 -#: commands/user.c:488 -#: commands/user.c:496 -#: commands/user.c:504 -#: commands/user.c:513 -#: commands/user.c:521 -msgid "conflicting or redundant options" -msgstr "çakışan veya artık opsiyon" - -#: commands/copy.c:830 -msgid "cannot specify DELIMITER in BINARY mode" -msgstr "BINARY biçiminde DELIMITER belirtilemez" - -#: commands/copy.c:835 -msgid "cannot specify CSV in BINARY mode" -msgstr "BINARY biçiminde CSV belirtilemez" - -#: commands/copy.c:840 -msgid "cannot specify NULL in BINARY mode" -msgstr "BINARY biçiminde NULL belirtilemez" - -#: commands/copy.c:862 -#, fuzzy -msgid "COPY delimiter must be a single one-byte character" -msgstr "COPY ayıracı bir tek ASCII karakteri olmalıdır" - -#: commands/copy.c:869 -msgid "COPY delimiter cannot be newline or carriage return" -msgstr "COPY ayıracı yeni satır ya da satırbaşı karakteri olamaz" - -#: commands/copy.c:875 -msgid "COPY null representation cannot use newline or carriage return" -msgstr "COPY null betimlemesi yeni satır veya satırbaşı karakteri kullanamaz" - -#: commands/copy.c:892 -#, c-format -msgid "COPY delimiter cannot be \"%s\"" -msgstr "COPY ayıracı \"%s\" olamaz" - -#: commands/copy.c:898 -msgid "COPY HEADER available only in CSV mode" -msgstr "COPY HEADER sadece CSV modunda geçerli" - -#: commands/copy.c:904 -msgid "COPY quote available only in CSV mode" -msgstr "COPY quote sadece CSV modunda etkin" - -#: commands/copy.c:909 -#, fuzzy -msgid "COPY quote must be a single one-byte character" -msgstr "COPY quote bir tek ASCII karakteri olmalıdır" - -#: commands/copy.c:914 -msgid "COPY delimiter and quote must be different" -msgstr "COPY ayıracı ve alıntısı farklı olmalı" - -#: commands/copy.c:920 -msgid "COPY escape available only in CSV mode" -msgstr "COPY escape sadece CSV modunda etkin" - -#: commands/copy.c:925 -#, fuzzy -msgid "COPY escape must be a single one-byte character" -msgstr "COPY escape bir tek ASCII karakteri olmalıdır" - -#: commands/copy.c:931 -msgid "COPY force quote available only in CSV mode" -msgstr "COPY force quote sadece CSV modunda etkin" - -#: commands/copy.c:935 -msgid "COPY force quote only available using COPY TO" -msgstr "COPY force quote sadece COPY TO içerisinde kullanılabilir" - -#: commands/copy.c:941 -msgid "COPY force not null available only in CSV mode" -msgstr "COPY force not null sadece CSV modunda etkin" - -#: commands/copy.c:945 -msgid "COPY force not null only available using COPY FROM" -msgstr "COPY force quote sadece COPY FROM içerisinde kullanılabilir" - -#: commands/copy.c:951 -msgid "COPY delimiter must not appear in the NULL specification" -msgstr "NULL tanımında COPY ayracı belirtilmemelidir" - -#: commands/copy.c:958 -msgid "CSV quote character must not appear in the NULL specification" -msgstr "NULL tanımında CVS quote ayracı belirtilmemelidir" - -#: commands/copy.c:964 -msgid "must be superuser to COPY to or from a file" -msgstr "bir dosyadan veya bir dosyaya COPY işlemi yapmak için superuser haklarına sahip olmalısınız" - -#: commands/copy.c:965 -msgid "Anyone can COPY to stdout or from stdin. psql's \\copy command also works for anyone." -msgstr "Stdout'e ve stdin'e her kullanıcı COPY işlemi yapabilir. Ayrıca her kullanıcı psql'in \\copy komutunu kullanabilir." - -#: commands/copy.c:1013 -#, c-format -msgid "table \"%s\" does not have OIDs" -msgstr "\"%s\" tablosunda OID yoktur" - -#: commands/copy.c:1030 -msgid "COPY (SELECT) WITH OIDS is not supported" -msgstr "COPY (SELECT) WITH OIDS desteklenmemektedir" - -#: commands/copy.c:1057 -msgid "COPY (SELECT INTO) is not supported" -msgstr "COPY (SELECT INTO) desteklenmemektedir" - -#: commands/copy.c:1109 -#, c-format -msgid "FORCE QUOTE column \"%s\" not referenced by COPY" -msgstr "FORCE UNIQUE \"%s\" sütunu COPY tarafından referans edilmemiştir" - -#: commands/copy.c:1131 -#, c-format -msgid "FORCE NOT NULL column \"%s\" not referenced by COPY" -msgstr "FORCE NOT NULL \"%s\" sütunu COPY tarafından referans edilmemiştir" - -#: commands/copy.c:1209 -#, c-format -msgid "cannot copy from view \"%s\"" -msgstr "\"%s\" view'undan kopyalanamıyor" - -#: commands/copy.c:1211 -msgid "Try the COPY (SELECT ...) TO variant." -msgstr "COPY (SELECT ...) TO variant deyimini deneyin." - -#: commands/copy.c:1215 -#, c-format -msgid "cannot copy from sequence \"%s\"" -msgstr "\"%s\" sequence'inden kopyalanamıyor" - -#: commands/copy.c:1220 -#, c-format -msgid "cannot copy from non-table relation \"%s\"" -msgstr "\"%s\" tablo olmayan nesnesinden copy yapılamıyor" - -#: commands/copy.c:1244 -msgid "relative path not allowed for COPY to file" -msgstr "COPY işlemi ile dosyaya yazarken dosyanın tam yolunu belirtmelisiniz" - -#: commands/copy.c:1253 -#, c-format -msgid "could not open file \"%s\" for writing: %m" -msgstr "\"%s\" dosyası, yazmak için açılamadı: %m" - -#: commands/copy.c:1260 -#: commands/copy.c:1755 -#, c-format -msgid "\"%s\" is a directory" -msgstr "\"%s\" bir dizindir" - -#: commands/copy.c:1546 -#, c-format -msgid "COPY %s, line %d, column %s" -msgstr "COPY %s, satır %d, sütun %s" - -#: commands/copy.c:1550 -#: commands/copy.c:1595 -#, c-format -msgid "COPY %s, line %d" -msgstr "COPY %s, satır %d" - -#: commands/copy.c:1561 -#, c-format -msgid "COPY %s, line %d, column %s: \"%s\"" -msgstr "COPY %s, satır %d, sütun %s: \"%s\"" - -#: commands/copy.c:1569 -#, c-format -msgid "COPY %s, line %d, column %s: null input" -msgstr "COPY %s, satır %d, sütun %s: null girişi" - -#: commands/copy.c:1581 -#, c-format -msgid "COPY %s, line %d: \"%s\"" -msgstr "COPY %s, satır %d: \"%s\"" - -#: commands/copy.c:1683 -#, c-format -msgid "cannot copy to view \"%s\"" -msgstr "\"%s\" view'ina kopyalanamıyor" - -#: commands/copy.c:1688 -#, c-format -msgid "cannot copy to sequence \"%s\"" -msgstr "\"%s\" sequence'ine kopyalanamıyor" - -#: commands/copy.c:1693 -#, c-format -msgid "cannot copy to non-table relation \"%s\"" -msgstr "tablo olmayan \"%s\" nesnesi kopyalanamaz" - -#: commands/copy.c:1856 -msgid "COPY file signature not recognized" -msgstr "COPY dosya imzası tanınmamaktadır" - -#: commands/copy.c:1861 -msgid "invalid COPY file header (missing flags)" -msgstr "COPY dosya başlığı geçersiz (flagler eksik)" - -#: commands/copy.c:1867 -msgid "unrecognized critical flags in COPY file header" -msgstr "COPY dosya başlığında tanınmayan flag" - -#: commands/copy.c:1873 -msgid "invalid COPY file header (missing length)" -msgstr "COPY dosya başlığı geçersiz (uzunluklar eksik)" - -#: commands/copy.c:1880 -msgid "invalid COPY file header (wrong length)" -msgstr "geçersiz COPY dosya başlığı (yanlış uzunluk)" - -#: commands/copy.c:1971 -msgid "missing data for OID column" -msgstr "OID sütunu için veri eksik" - -#: commands/copy.c:1977 -msgid "null OID in COPY data" -msgstr "COPY verisinde null OID" - -#: commands/copy.c:1987 -#: commands/copy.c:2059 -msgid "invalid OID in COPY data" -msgstr "COPY verisinde geçersiz OID" - -#: commands/copy.c:2002 -#, c-format -msgid "missing data for column \"%s\"" -msgstr "\"%s\" sütunu için veri eksik" - -#: commands/copy.c:2043 -#, c-format -msgid "row field count is %d, expected %d" -msgstr "satır alanı sayısı %d, beklenen %d" - -#: commands/copy.c:2457 -#: commands/copy.c:2474 -msgid "literal carriage return found in data" -msgstr "veride satır sonu karakterine rastlanmıştır" - -#: commands/copy.c:2458 -#: commands/copy.c:2475 -#, fuzzy -msgid "unquoted carriage return found in data" -msgstr "veride satır sonu karakterine rastlanmıştır" - -#: commands/copy.c:2460 -#: commands/copy.c:2477 -msgid "Use \"\\r\" to represent carriage return." -msgstr "Satır sonu karakteri için \"\\r\" kullanın." - -#: commands/copy.c:2461 -#: commands/copy.c:2478 -#, fuzzy -msgid "Use quoted CSV field to represent carriage return." -msgstr "Satır sonu karakteri için \"\\r\" kullanın." - -#: commands/copy.c:2490 -msgid "literal newline found in data" -msgstr "veri içerisinde yeni satır karakteri bulundu" - -#: commands/copy.c:2491 -msgid "unquoted newline found in data" -msgstr "veri içerisinde alıntılanmamış satırbaşı" - -#: commands/copy.c:2493 -msgid "" -"Use \"\\n" -"\" to represent newline." -msgstr "" -"Yeni satır karakteri için \"\\n" -"\" kullanın." - -#: commands/copy.c:2494 -msgid "Use quoted CSV field to represent newline." -msgstr "Yeni satır belirtmek için alıntılanmış CSV kullanın" - -#: commands/copy.c:2540 -#: commands/copy.c:2576 -msgid "end-of-copy marker does not match previous newline style" -msgstr "end-of-copy göstergesi önceki yeni satır stiline uymuyor" - -#: commands/copy.c:2549 -#: commands/copy.c:2565 -msgid "end-of-copy marker corrupt" -msgstr "end-of-copy göstergesi zarar görmüş" - -#: commands/copy.c:2692 -#: commands/copy.c:2727 -#: commands/copy.c:2907 -#: commands/copy.c:2942 -msgid "extra data after last expected column" -msgstr "son beklenen sütundan sonra fazladan veri bulundu" - -#: commands/copy.c:2989 -msgid "unterminated CSV quoted field" -msgstr "sonlandırılmamış CSV quoted alanı" - -#: commands/copy.c:3066 -#: commands/copy.c:3085 -msgid "unexpected EOF in COPY data" -msgstr "COPY verisinde beklenmeyen dosya sonu" - -#: commands/copy.c:3075 -msgid "invalid field size" -msgstr "geçersiz alan boyutu" - -#: commands/copy.c:3098 -msgid "incorrect binary data format" -msgstr "ikili veri biçimi hatası" - -#: commands/copy.c:3416 -#: commands/tablecmds.c:1178 -#: parser/parse_target.c:820 -#: parser/parse_target.c:831 -#, c-format -msgid "column \"%s\" specified more than once" -msgstr "\"%s\" sütunu birden fazla belirtilmiş" - -#: commands/dbcommands.c:200 -msgid "LOCATION is not supported anymore" -msgstr "LOCATION artık desteklenmiyor" - -#: commands/dbcommands.c:201 -msgid "Consider using tablespaces instead." -msgstr "Onun yerine tablespace kullanabilirsiniz." - -#: commands/dbcommands.c:252 -#: commands/dbcommands.c:1355 -#: commands/user.c:250 -#: commands/user.c:547 -#, fuzzy, c-format -msgid "invalid connection limit: %d" -msgstr "geçersiz bağlantı seçeneği \"%s\"\n" - -#: commands/dbcommands.c:271 -msgid "permission denied to create database" -msgstr "veritabanı oluşturma izin verilmedi." - -#: commands/dbcommands.c:294 -#, c-format -msgid "template database \"%s\" does not exist" -msgstr "\"%s\" şablon veritabanı mevcut değil" - -#: commands/dbcommands.c:306 -#, c-format -msgid "permission denied to copy database \"%s\"" -msgstr "\"%s\" veritabanını kopyalama engellendi" - -#: commands/dbcommands.c:322 -#, c-format -msgid "invalid server encoding %d" -msgstr "%d sunucu dil kodlaması geçersiz" - -#: commands/dbcommands.c:328 -#: commands/dbcommands.c:332 -#, fuzzy, c-format -msgid "invalid locale name %s" -msgstr "geçirsiz rol adı \"%s\"" - -#: commands/dbcommands.c:365 -#: commands/dbcommands.c:379 -#, fuzzy, c-format -msgid "encoding %s does not match locale %s" -msgstr "%s dil kodlaması, sunucu yereli ile (%s) eşleşmiyor" - -#: commands/dbcommands.c:368 -#, fuzzy, c-format -msgid "The chosen LC_CTYPE setting requires encoding %s." -msgstr "Sunucunun LC_TYPE yerel ayarı, %s dil kodlamasını gerektirir." - -#: commands/dbcommands.c:382 -#, fuzzy, c-format -msgid "The chosen LC_COLLATE setting requires encoding %s." -msgstr "Sunucunun LC_TYPE yerel ayarı, %s dil kodlamasını gerektirir." - -#: commands/dbcommands.c:400 -#, c-format -msgid "new encoding (%s) is incompatible with the encoding of the template database (%s)" -msgstr "" - -#: commands/dbcommands.c:403 -msgid "Use the same encoding as in the template database, or use template0 as template." -msgstr "" - -#: commands/dbcommands.c:408 -#, c-format -msgid "new collation (%s) is incompatible with the collation of the template database (%s)" -msgstr "" - -#: commands/dbcommands.c:410 -msgid "Use the same collation as in the template database, or use template0 as template." -msgstr "" - -#: commands/dbcommands.c:415 -#, c-format -msgid "new LC_CTYPE (%s) is incompatible with the LC_CTYPE of the template database (%s)" -msgstr "" - -#: commands/dbcommands.c:417 -msgid "Use the same LC_CTYPE as in the template database, or use template0 as template." -msgstr "" - -#: commands/dbcommands.c:444 -#: commands/dbcommands.c:1060 -msgid "pg_global cannot be used as default tablespace" -msgstr "pg_global öntanımlı tablespace olarak kullanılamaz" - -#: commands/dbcommands.c:470 -#, c-format -msgid "cannot assign new default tablespace \"%s\"" -msgstr "yeni varsayılan tablespace \"%s\" atanamıyor" - -#: commands/dbcommands.c:472 -#, c-format -msgid "There is a conflict because database \"%s\" already has some tables in this tablespace." -msgstr "Bir çakışma var, çünkü \"%s\" veritabanının bulunduğu tablespace içinde başka tablolar var." - -#: commands/dbcommands.c:492 -#: commands/dbcommands.c:923 -#, c-format -msgid "database \"%s\" already exists" -msgstr "\"%s\" veritabanı zaten mevcut" - -#: commands/dbcommands.c:506 -#, c-format -msgid "source database \"%s\" is being accessed by other users" -msgstr "\"%s\" kaynak veritabanı başka bir kullanıcı tarafından kullanılmaktadır" - -#: commands/dbcommands.c:766 -#, c-format -msgid "database \"%s\" does not exist, skipping" -msgstr "\"%s\" veritabanı mevcut değil, atlanıyor" - -#: commands/dbcommands.c:787 -msgid "cannot drop a template database" -msgstr "template veritabanı kaldırılamaz" - -#: commands/dbcommands.c:793 -msgid "cannot drop the currently open database" -msgstr "şu anda açık olan veritabanı kaldırılamaz" - -#: commands/dbcommands.c:804 -#: commands/dbcommands.c:945 -#: commands/dbcommands.c:1082 -#, c-format -msgid "database \"%s\" is being accessed by other users" -msgstr "\"%s\" veritabanına başka kullanıcılar tarafından erişilmektedir" - -#: commands/dbcommands.c:914 -msgid "permission denied to rename database" -msgstr "veritabanı adı değiştirilmesine izin verilmedi" - -#: commands/dbcommands.c:934 -msgid "current database cannot be renamed" -msgstr "geçerli veritabanının adını değiştirilemez" - -#: commands/dbcommands.c:1034 -#, fuzzy -msgid "cannot change the tablespace of the currently open database" -msgstr "şu anda açık olan veritabanı kaldırılamaz" - -#: commands/dbcommands.c:1122 -#, fuzzy, c-format -msgid "some relations of database \"%s\" are already in tablespace \"%s\"" -msgstr "\"%s\" nesnesi zaten \"%s\" şemasında mevcuttur" - -#: commands/dbcommands.c:1124 -#, fuzzy -msgid "You must move them back to the database's default tablespace before using this command." -msgstr "Boş değer, veritabanının varsayılan tablespace'ı seçmektedir." - -#: commands/dbcommands.c:1254 -#: commands/dbcommands.c:1805 -#: commands/dbcommands.c:2000 -#: commands/dbcommands.c:2036 -#, c-format -msgid "some useless files may be left behind in old database directory \"%s\"" -msgstr "" - -#: commands/dbcommands.c:1572 -msgid "permission denied to change owner of database" -msgstr "veritabanı sahipliğini değiştirilmesine izin verilmedi" - -#: commands/dbcommands.c:1893 -#, c-format -msgid "There are %d other session(s) and %d prepared transaction(s) using the database." -msgstr "" - -#: commands/dbcommands.c:1896 -#, c-format -msgid "There are %d other session(s) using the database." -msgstr "" - -#: commands/dbcommands.c:1899 -#, fuzzy, c-format -msgid "There are %d prepared transaction(s) using the database." -msgstr "prepared transaction başka bir veritabanına aittir" - -#: commands/define.c:67 -#: commands/define.c:213 -#: commands/define.c:245 -#: commands/define.c:273 -#, c-format -msgid "%s requires a parameter" -msgstr "%s bir parametre gerektirir" - -#: commands/define.c:106 -#: commands/define.c:117 -#: commands/define.c:180 -#: commands/define.c:198 -#, c-format -msgid "%s requires a numeric value" -msgstr "%s seçeneği sayısal değer gerektirir" - -#: commands/define.c:166 -#, c-format -msgid "%s requires a Boolean value" -msgstr "%s, bir Boolean değeri gerektirir" - -#: commands/define.c:227 -#, c-format -msgid "argument of %s must be a name" -msgstr "%s için argüman bir ad olmalıdır" - -#: commands/define.c:257 -#, c-format -msgid "argument of %s must be a type name" -msgstr "%s argümanı tip adı olmalıdır" - -#: commands/define.c:282 -#, c-format -msgid "%s requires an integer value" -msgstr "%s bir tamsayı gerektirir" - -#: commands/define.c:303 -#, c-format -msgid "invalid argument for %s: \"%s\"" -msgstr "%s için geçersiz argüman: \"%s\"" - -#: commands/foreigncmds.c:131 -#: commands/foreigncmds.c:140 -#, fuzzy, c-format -msgid "option \"%s\" not found" -msgstr "time zone \"%s\" tanınmadı" - -#: commands/foreigncmds.c:150 -#, fuzzy, c-format -msgid "option \"%s\" provided more than once" -msgstr "\"%s\" sütunu birden fazla belirtilmiş" - -#: commands/foreigncmds.c:208 -#: commands/foreigncmds.c:216 -#, fuzzy, c-format -msgid "permission denied to change owner of foreign-data wrapper \"%s\"" -msgstr "veritabanı sahipliğini değiştirilmesine izin verilmedi" - -#: commands/foreigncmds.c:210 -#, fuzzy -msgid "Must be superuser to change owner of a foreign-data wrapper." -msgstr "Tablespace oluşturmak için superuser haklarına sahip olmalısınız." - -#: commands/foreigncmds.c:218 -msgid "The owner of a foreign-data wrapper must be a superuser." -msgstr "" - -#: commands/foreigncmds.c:229 -#: commands/foreigncmds.c:454 -#: commands/foreigncmds.c:552 -#: foreign/foreign.c:94 -#, fuzzy, c-format -msgid "foreign-data wrapper \"%s\" does not exist" -msgstr "\"%s\" veritabanı mevcut değil" - -#: commands/foreigncmds.c:273 -#: commands/foreigncmds.c:723 -#: commands/foreigncmds.c:811 -#: commands/foreigncmds.c:1089 -#: foreign/foreign.c:187 -#, fuzzy, c-format -msgid "server \"%s\" does not exist" -msgstr "\"%s\" rule'u mevcut değil" - -#: commands/foreigncmds.c:350 -#, fuzzy, c-format -msgid "permission denied to create foreign-data wrapper \"%s\"" -msgstr "\"%s\" veritabanında geçici veritabanı oluşturma izni yok" - -#: commands/foreigncmds.c:352 -#, fuzzy -msgid "Must be superuser to create a foreign-data wrapper." -msgstr "Tablespace oluşturmak için superuser haklarına sahip olmalısınız." - -#: commands/foreigncmds.c:363 -#, fuzzy, c-format -msgid "foreign-data wrapper \"%s\" already exists" -msgstr "\"%s\" veritabanı zaten mevcut" - -#: commands/foreigncmds.c:443 -#, fuzzy, c-format -msgid "permission denied to alter foreign-data wrapper \"%s\"" -msgstr "\"%s\" veritabanına erişim engellendi" - -#: commands/foreigncmds.c:445 -#, fuzzy -msgid "Must be superuser to alter a foreign-data wrapper." -msgstr "operator sınıfı değiştirmek için superuser olmalısınız" - -#: commands/foreigncmds.c:474 -msgid "changing the foreign-data wrapper validator can cause the options for dependent objects to become invalid" -msgstr "" - -#: commands/foreigncmds.c:543 -#, fuzzy, c-format -msgid "permission denied to drop foreign-data wrapper \"%s\"" -msgstr "\"%s\" veritabanını kopyalama engellendi" - -#: commands/foreigncmds.c:545 -#, fuzzy -msgid "Must be superuser to drop a foreign-data wrapper." -msgstr "Tablespace oluşturmak için superuser haklarına sahip olmalısınız." - -#: commands/foreigncmds.c:557 -#, fuzzy, c-format -msgid "foreign-data wrapper \"%s\" does not exist, skipping" -msgstr "\"%s\" veritabanı mevcut değil, atlanıyor" - -#: commands/foreigncmds.c:626 -#, fuzzy, c-format -msgid "server \"%s\" already exists" -msgstr "\"%s\" rolü zaten mevcut" - -#: commands/foreigncmds.c:815 -#, fuzzy, c-format -msgid "server \"%s\" does not exist, skipping" -msgstr "rol \"%s\" mevcut değil, atlanıyor" - -#: commands/foreigncmds.c:921 -#, fuzzy, c-format -msgid "user mapping \"%s\" already exists for server %s" -msgstr "\"%s\" nesnesi zaten \"%s\" şemasında mevcuttur" - -#: commands/foreigncmds.c:998 -#: commands/foreigncmds.c:1106 -#, fuzzy, c-format -msgid "user mapping \"%s\" does not exist for the server" -msgstr "\"%s\" şeması mevcut değil" - -#: commands/foreigncmds.c:1092 -#, fuzzy -msgid "server does not exist, skipping" -msgstr "%s operatorü mevcut değil, atlanıyor" - -#: commands/foreigncmds.c:1111 -#, fuzzy, c-format -msgid "user mapping \"%s\" does not exist for the server, skipping" -msgstr "\"%s\" şeması mevcut değil, atlanıyor" - -#: commands/functioncmds.c:98 -#, c-format -msgid "SQL function cannot return shell type %s" -msgstr "SQL fonksiyonu %s shell tipini döndüremiyor" - -#: commands/functioncmds.c:103 -#, c-format -msgid "return type %s is only a shell" -msgstr "return type %s is only a shell" - -#: commands/functioncmds.c:132 -#: parser/parse_type.c:264 -#, fuzzy, c-format -msgid "type modifier cannot be specified for shell type \"%s\"" -msgstr "\"%s\" veri tipi için tip niteliyicisi kullanılamaz" - -#: commands/functioncmds.c:138 -#, c-format -msgid "type \"%s\" is not yet defined" -msgstr "\"%s\" tipi henüz tanımlanmamış" - -#: commands/functioncmds.c:139 -msgid "Creating a shell type definition." -msgstr "Kabuk tip tanımı yaratılıyor." - -#: commands/functioncmds.c:218 -#, c-format -msgid "SQL function cannot accept shell type %s" -msgstr "SQL fonksiyonu %s shell tipini alamaz" - -#: commands/functioncmds.c:223 -#, c-format -msgid "argument type %s is only a shell" -msgstr "\"%s\" argümanı sadece bir kabuktur" - -#: commands/functioncmds.c:233 -#, c-format -msgid "type %s does not exist" -msgstr "%s tipi mevcut değil" - -#: commands/functioncmds.c:241 -msgid "functions cannot accept set arguments" -msgstr "fonksiyonlar küme argümanlarını kabul etmez" - -#: commands/functioncmds.c:250 -msgid "VARIADIC parameter must be the last input parameter" -msgstr "" - -#: commands/functioncmds.c:277 -msgid "VARIADIC parameter must be an array" -msgstr "" - -#: commands/functioncmds.c:299 -#, fuzzy -msgid "only input parameters can have default values" -msgstr "sadece ikili işlemler bir commutator'a sahip olabilirler" - -#: commands/functioncmds.c:311 -#, fuzzy -msgid "cannot use table references in parameter default value" -msgstr "defaul ifadesinde sütun referansı kullanılamaz" - -#: commands/functioncmds.c:327 -#, fuzzy -msgid "cannot use subquery in parameter default value" -msgstr "EXECUTE parametresinde subquery kullanılamaz" - -#: commands/functioncmds.c:331 -#, fuzzy -msgid "cannot use aggregate function in parameter default value" -msgstr "EXECUTE parametresinde aggregate fonksiyon kullanılamaz" - -#: commands/functioncmds.c:335 -#, fuzzy -msgid "cannot use window function in parameter default value" -msgstr "EXECUTE parametresinde aggregate fonksiyon kullanılamaz" - -#: commands/functioncmds.c:345 -msgid "input parameters after one with a default value must also have defaults" -msgstr "" - -#: commands/functioncmds.c:584 -msgid "no function body specified" -msgstr "fonksiyon gövdesi yok" - -#: commands/functioncmds.c:594 -msgid "no language specified" -msgstr "dil belirtilmemiş" - -#: commands/functioncmds.c:615 -#: commands/functioncmds.c:1332 -msgid "COST must be positive" -msgstr "COST pozitif olmalıdır" - -#: commands/functioncmds.c:623 -#: commands/functioncmds.c:1340 -msgid "ROWS must be positive" -msgstr "ROWS pozitif olmalıdır" - -#: commands/functioncmds.c:662 -#, c-format -msgid "unrecognized function attribute \"%s\" ignored" -msgstr "tanınmayan fonksiyon yarametresi \"%s\" yoksayıldı" - -#: commands/functioncmds.c:713 -#, c-format -msgid "only one AS item needed for language \"%s\"" -msgstr "\"%s\" dili için sadece bir AS öğe lazım" - -#: commands/functioncmds.c:807 -msgid "Use CREATE LANGUAGE to load the language into the database." -msgstr "Veritabana yeni bir dil eklemek için CREATE LANGUAGE kullanın." - -#: commands/functioncmds.c:854 -#, c-format -msgid "function result type must be %s because of OUT parameters" -msgstr "OUT parametresinde belirtildiği gibi fonksiyon sonuç tipi %s olmalıdır" - -#: commands/functioncmds.c:867 -msgid "function result type must be specified" -msgstr "fonksiyonun döndürme tipi belirtilmelidir" - -#: commands/functioncmds.c:902 -#: commands/functioncmds.c:1344 -msgid "ROWS is not applicable when function does not return a set" -msgstr "fonksiyonu bir set döndürmediğinde ROWS kullanılamaz" - -#: commands/functioncmds.c:954 -#, c-format -msgid "function %s(%s) does not exist, skipping" -msgstr "%s(%s) fonksiyonu mevcut değil, atlanıyor" - -#: commands/functioncmds.c:978 -msgid "Use DROP AGGREGATE to drop aggregate functions." -msgstr "Aggregate fonksiyonunı kaldırmak içim DROP AGGREGATE kullanın." - -#: commands/functioncmds.c:985 -#, c-format -msgid "removing built-in function \"%s\"" -msgstr "gömülü \"%s\" fonksiyonu kaldırılıyor" - -#: commands/functioncmds.c:1084 -msgid "Use ALTER AGGREGATE to rename aggregate functions." -msgstr "Aggregate fonksiyonunun adını değiştirmek içim ALTER AGGREGATE kullanın." - -#: commands/functioncmds.c:1149 -msgid "Use ALTER AGGREGATE to change owner of aggregate functions." -msgstr "Aggregate fonksiyonunun sahibini değiştirmek içim ALTER AGGREGATE kullanın." - -#: commands/functioncmds.c:1495 -#, c-format -msgid "source data type %s is a pseudo-type" -msgstr "kaynak veri tipi %s bir pseudo-type'dir" - -#: commands/functioncmds.c:1501 -#, c-format -msgid "target data type %s is a pseudo-type" -msgstr "hedef veri tipi %s bir pseudo-type'dir" - -#: commands/functioncmds.c:1540 -msgid "cast function must take one to three arguments" -msgstr "cast fonksiyonu birden üçe kadar parametre alabilir" - -#: commands/functioncmds.c:1544 -#, fuzzy -msgid "argument of cast function must match or be binary-coercible from source data type" -msgstr "cast fonksiyonun argümanları kaynak veritipleri ile aynı olmalıdır" - -#: commands/functioncmds.c:1548 -msgid "second argument of cast function must be type integer" -msgstr "cast fonksiyonunun ikinci parametresi tamsayı tipinde olmalıdır" - -#: commands/functioncmds.c:1552 -msgid "third argument of cast function must be type boolean" -msgstr "cast fonksiyonunun üçüncü parametresi boolean tipinde olmalıdır" - -#: commands/functioncmds.c:1556 -#, fuzzy -msgid "return data type of cast function must match or be binary-coercible to target data type" -msgstr "cast fonksiyonun döndürme tipi hedef tipi ile uyuşmalıdır" - -#: commands/functioncmds.c:1567 -msgid "cast function must not be volatile" -msgstr "cast fonksiyonu volatile olmamalıdır" - -#: commands/functioncmds.c:1572 -msgid "cast function must not be an aggregate function" -msgstr "cast fonksiyonu aggregate olmamalıdır" - -#: commands/functioncmds.c:1576 -#, fuzzy -msgid "cast function must not be a window function" -msgstr "cast fonksiyonu aggregate olmamalıdır" - -#: commands/functioncmds.c:1580 -msgid "cast function must not return a set" -msgstr "cast fonksiyonu bir set döndürmemelidir" - -#: commands/functioncmds.c:1606 -msgid "must be superuser to create a cast WITHOUT FUNCTION" -msgstr "cast WITHOUT FUNCTION oluşturmak için superuser olmalısınız" - -#: commands/functioncmds.c:1621 -msgid "source and target data types are not physically compatible" -msgstr "kaynak ve hedef veri tipleri fiziksel olarak uyumsuz" - -#: commands/functioncmds.c:1636 -#, fuzzy -msgid "composite data types are not binary-compatible" -msgstr "kaynak ve hedef veri tipleri fiziksel olarak uyumsuz" - -#: commands/functioncmds.c:1642 -#, fuzzy -msgid "enum data types are not binary-compatible" -msgstr "kaynak ve hedef veri tipleri fiziksel olarak uyumsuz" - -#: commands/functioncmds.c:1648 -#, fuzzy -msgid "array data types are not binary-compatible" -msgstr "kaynak ve hedef veri tipleri fiziksel olarak uyumsuz" - -#: commands/functioncmds.c:1658 -msgid "source data type and target data type are the same" -msgstr "kaynak ve hedef veri tipleri aynı" - -#: commands/functioncmds.c:1692 -#, c-format -msgid "cast from type %s to type %s already exists" -msgstr "%s tipinden %s tipini cast etme zaten mevcut" - -#: commands/functioncmds.c:1773 -#, c-format -msgid "cast from type %s to type %s does not exist, skipping" -msgstr "%s tipinden %s tipine cast mevcut değildir, atlanıyor" - -#: commands/functioncmds.c:1872 -#, c-format -msgid "function \"%s\" is already in schema \"%s\"" -msgstr "\"%s\" fonksiyonu \"%s\" şemasında zaten mevcut" - -#: commands/functioncmds.c:1880 -#: commands/tablecmds.c:7569 -#: commands/typecmds.c:2761 -msgid "cannot move objects into or out of temporary schemas" -msgstr "geçici şemasına nesleri aktarılamaz ve içinden alınamaz" - -#: commands/functioncmds.c:1886 -#: commands/tablecmds.c:7575 -#: commands/typecmds.c:2767 -msgid "cannot move objects into or out of TOAST schema" -msgstr "TOAST şemasına nesleri aktarılamaz ve içinden alınamaz" - -#: commands/functioncmds.c:1896 -#, c-format -msgid "function \"%s\" already exists in schema \"%s\"" -msgstr "\"%s\" fonksiyonu \"%s\" şemasında zaten mevcut" - -#: commands/indexcmds.c:149 -msgid "must specify at least one column" -msgstr "en az bir sütun belirtmelisiniz" - -#: commands/indexcmds.c:153 -#, c-format -msgid "cannot use more than %d columns in an index" -msgstr "bir index içinde %d sayısından fazla sütun kullanılamaz" - -#: commands/indexcmds.c:183 -msgid "cannot create indexes on temporary tables of other sessions" -msgstr "başka oturumların geçici tablolarına bağlı dizin oluşturulamaz" - -#: commands/indexcmds.c:276 -msgid "substituting access method \"gist\" for obsolete method \"rtree\"" -msgstr "artık kullanılmayan \"rtree\" yöntemi yerine \"gist\" yöntemi kullanılacak" - -#: commands/indexcmds.c:295 -#, c-format -msgid "access method \"%s\" does not support unique indexes" -msgstr "\"%s\" erişim yöntemi tekil indexleri desteklemiyor" - -#: commands/indexcmds.c:300 -#, c-format -msgid "access method \"%s\" does not support multicolumn indexes" -msgstr "\"%s\" erişim yöntemi çoklu sütun indexleri desteklemiyor" - -#: commands/indexcmds.c:333 -#: parser/parse_utilcmd.c:1001 -#: parser/parse_utilcmd.c:1085 -#, c-format -msgid "multiple primary keys for table \"%s\" are not allowed" -msgstr "\"%s\" tablosunda birden çok birincil anahtara izin verilmez" - -#: commands/indexcmds.c:350 -msgid "primary keys cannot be expressions" -msgstr "birincil anahtar bir ifade olamaz" - -#: commands/indexcmds.c:380 -#: commands/indexcmds.c:830 -#: parser/parse_utilcmd.c:1200 -#, c-format -msgid "column \"%s\" named in key does not exist" -msgstr "anahtar tanımında belirtilen \"%s\" sütunu mevcut değil" - -#: commands/indexcmds.c:435 -#, c-format -msgid "%s %s will create implicit index \"%s\" for table \"%s\"" -msgstr "%1$s %2$s \"%4$s\" tablosu için \"%3$s\" indexi oluşturulacaktır" - -#: commands/indexcmds.c:771 -msgid "cannot use subquery in index predicate" -msgstr "index tanımında subquery kullanılamaz" - -#: commands/indexcmds.c:775 -msgid "cannot use aggregate in index predicate" -msgstr "index tanımında aggregate kullanılamaz" - -#: commands/indexcmds.c:784 -msgid "functions in index predicate must be marked IMMUTABLE" -msgstr "index yüklemindeki kullanılacak fonksiyon IMMUTABLE olarak tanımlanmaıldır" - -#: commands/indexcmds.c:869 -msgid "cannot use subquery in index expression" -msgstr "index ifadesinde subquery kullanılamaz" - -#: commands/indexcmds.c:873 -msgid "cannot use aggregate function in index expression" -msgstr "index ifadesinde aggregate fonksiyonu kullanılamaz" - -#: commands/indexcmds.c:883 -msgid "functions in index expression must be marked IMMUTABLE" -msgstr "index ifadesinde kullanılacak fonksiyon IMMUTABLE olarak tanımlanmaıldır" - -#: commands/indexcmds.c:920 -#, c-format -msgid "access method \"%s\" does not support ASC/DESC options" -msgstr "\"%s\" erişim yöntemi ASC/DESC desteklemiyor" - -#: commands/indexcmds.c:925 -#, c-format -msgid "access method \"%s\" does not support NULLS FIRST/LAST options" -msgstr "\"%s\" erişim yöntemi NULLS FIRST/LAST desteklemiyor" - -#: commands/indexcmds.c:981 -#, c-format -msgid "data type %s has no default operator class for access method \"%s\"" -msgstr "%s veri tipinin \"%s\" erişim yöntemi için varsayılan operator sınıfı mevcut değil" - -#: commands/indexcmds.c:983 -msgid "You must specify an operator class for the index or define a default operator class for the data type." -msgstr "Bu index için operator class belirtmeli veya bu veri tipi için varsayılan operator class tanımlamalısınız." - -#: commands/indexcmds.c:1036 -#, c-format -msgid "operator class \"%s\" does not accept data type %s" -msgstr "\"%s\" operator sınıfı, %s veri tipini kabul etmiyor" - -#: commands/indexcmds.c:1126 -#, c-format -msgid "there are multiple default operator classes for data type %s" -msgstr "%s veri tipi için birden fazla varsayılan operator sınıfı mevcuttur" - -#: commands/indexcmds.c:1370 -#, c-format -msgid "shared table \"%s\" can only be reindexed in stand-alone mode" -msgstr "\"%s\" ortak tablosuna sadece stand-alone modunda reindex işlemi uygulanabilir" - -#: commands/indexcmds.c:1377 -#, c-format -msgid "table \"%s\" has no indexes" -msgstr "\"%s\" tablosunda hiçbir index yok" - -#: commands/indexcmds.c:1405 -msgid "can only reindex the currently open database" -msgstr "ancak açık olan veritabanı üzerinde reindex işlemi yapılabilir" - -#: commands/indexcmds.c:1496 -#, c-format -msgid "table \"%s\" was reindexed" -msgstr "\"%s\" tablosu yeniden indexlenmiştir" - -#: commands/lockcmds.c:84 -#, c-format -msgid "could not obtain lock on relation \"%s\"" -msgstr "\"%s\" tablosu için lock alınamadı" - -#: commands/lockcmds.c:89 -#, c-format -msgid "could not obtain lock on relation with OID %u" -msgstr "OID %u olan tablosu için lock alınamadı" - -#: commands/opclasscmds.c:197 -#: commands/opclasscmds.c:715 -#, c-format -msgid "operator family \"%s\" for access method \"%s\" already exists" -msgstr "\"%2$s\" erişim metodu için \"%1$s\" operatör sınıfı zaten mevcut" - -#: commands/opclasscmds.c:329 -msgid "must be superuser to create an operator class" -msgstr "operator sınıfı yaratmak için superuser olmalısınız" - -#: commands/opclasscmds.c:413 -#: commands/opclasscmds.c:865 -#: commands/opclasscmds.c:987 -#, c-format -msgid "invalid operator number %d, must be between 1 and %d" -msgstr "%d geçersiz operatör numarası, 0 ile %d arasında olmalıdır" - -#: commands/opclasscmds.c:456 -#: commands/opclasscmds.c:908 -#: commands/opclasscmds.c:1002 -#, c-format -msgid "invalid procedure number %d, must be between 1 and %d" -msgstr "%d geçersiz procedure numarası, 0 ile %d arasında olmalıdır" - -#: commands/opclasscmds.c:486 -msgid "storage type specified more than once" -msgstr "depolama tipi birden fazla kez belirtilmiştir" - -#: commands/opclasscmds.c:514 -#, c-format -msgid "storage type cannot be different from data type for access method \"%s\"" -msgstr "depolama yötemi erişim metodu \"%s\" ile aynı olmalıdır" - -#: commands/opclasscmds.c:531 -#, c-format -msgid "operator class \"%s\" for access method \"%s\" already exists" -msgstr "\"%2$s\" erişim metodu için \"%1$s\" operator sınıfı zaten mevcut" - -#: commands/opclasscmds.c:559 -#, c-format -msgid "could not make operator class \"%s\" be default for type %s" -msgstr "%2$s veri tipinie \"%1$s\" operator sınıfı varsayılan olarak atanamıyor" - -#: commands/opclasscmds.c:562 -#, c-format -msgid "Operator class \"%s\" already is the default." -msgstr "\"%s\" operatör sınıfı zaten varsayılandır." - -#: commands/opclasscmds.c:700 -msgid "must be superuser to create an operator family" -msgstr "operator sınıfı oluşturmak için superuser olmalısınız" - -#: commands/opclasscmds.c:818 -msgid "must be superuser to alter an operator family" -msgstr "operator sınıfı değiştirmek için superuser olmalısınız" - -#: commands/opclasscmds.c:881 -msgid "operator argument types must be specified in ALTER OPERATOR FAMILY" -msgstr "operator argument tipleri ALTER OPERATOR FAMILY işleminde belirtilmelidir" - -#: commands/opclasscmds.c:937 -msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY" -msgstr "ALTER OPERATOR FAMILY işleminde STORAGE kullanılamaz" - -#: commands/opclasscmds.c:1053 -msgid "one or two argument types must be specified" -msgstr "bir veya iki argüman türü belirtilmelidir" - -#: commands/opclasscmds.c:1081 -msgid "index operators must be binary" -msgstr "index işletmenleri ikili olmalıdır" - -#: commands/opclasscmds.c:1085 -msgid "index operators must return boolean" -msgstr "index işletmenleri boolean veri tipini döndürmeli" - -#: commands/opclasscmds.c:1125 -msgid "btree procedures must have two arguments" -msgstr "btree kümesi iki argüman almalıdır" - -#: commands/opclasscmds.c:1129 -msgid "btree procedures must return integer" -msgstr "btree yordamları tamsayı döndürmelidir" - -#: commands/opclasscmds.c:1144 -msgid "hash procedures must have one argument" -msgstr "hash yordamı bir tek argüman almalıdır" - -#: commands/opclasscmds.c:1148 -msgid "hash procedures must return integer" -msgstr "hash yordamı tamsayı dönmelidir" - -#: commands/opclasscmds.c:1173 -msgid "associated data types must be specified for index support procedure" -msgstr "index destekleyen yordamlarının bağlı veri tiplerini belirtmelidir" - -#: commands/opclasscmds.c:1199 -#, c-format -msgid "procedure number %d for (%s,%s) appears more than once" -msgstr "%d (%s, %s) yordam numarasına birden fazla kez rastlanıyor" - -#: commands/opclasscmds.c:1206 -#, c-format -msgid "operator number %d for (%s,%s) appears more than once" -msgstr "%d (%s,%s) operator numarasına birden fazla kez rastlanıyor" - -#: commands/opclasscmds.c:1254 -#, c-format -msgid "operator %d(%s,%s) already exists in operator family \"%s\"" -msgstr "\"%4$s\" operator ailesinde %1$d(%2$s,%3$s) operatoru zaten mevcuttur" - -#: commands/opclasscmds.c:1354 -#, c-format -msgid "function %d(%s,%s) already exists in operator family \"%s\"" -msgstr "\"%4$s\" operator ailesinde %1$d(%2$s,%3$s) fonksiyonu zaten mevcuttur" - -#: commands/opclasscmds.c:1441 -#, c-format -msgid "operator %d(%s,%s) does not exist in operator family \"%s\"" -msgstr "\"%4$s\" operator ailesinde %1$d(%2$s,%3$s) operatoru mevcut değil" - -#: commands/opclasscmds.c:1481 -#, c-format -msgid "function %d(%s,%s) does not exist in operator family \"%s\"" -msgstr "\"%4$s\" operator ailesinde %1$d(%2$s,%3$s) fonksiyonu mevcut değil" - -#: commands/opclasscmds.c:1802 -#, c-format -msgid "operator class \"%s\" for access method \"%s\" already exists in schema \"%s\"" -msgstr "\"%2$s\" erişim yöntemi için kullanılacak \"%1$s\" operator classı zaten \"%3$s\" şemasında mevcuttur" - -#: commands/opclasscmds.c:1902 -#, c-format -msgid "operator family \"%s\" for access method \"%s\" already exists in schema \"%s\"" -msgstr "\"%2$s\" erişim yöntemi için kullanılacak \"%1$s\" operator ailesi zaten \"%3$s\" şemasında mevcuttur" - -#: commands/operatorcmds.c:110 -#: commands/operatorcmds.c:118 -#, fuzzy -msgid "SETOF type not allowed for operator argument" -msgstr "operator argümanı setof tipinde olamaz" - -#: commands/operatorcmds.c:146 -#, c-format -msgid "operator attribute \"%s\" not recognized" -msgstr "\"%s\" operatör özniteliği tanınmamaktadır" - -#: commands/operatorcmds.c:156 -msgid "operator procedure must be specified" -msgstr "operatör yordamı belirtilmelidir" - -#: commands/operatorcmds.c:167 -msgid "at least one of leftarg or rightarg must be specified" -msgstr "en az bir tane leftarg veya rightarg belirtilmelidir" - -#: commands/operatorcmds.c:216 -#, fuzzy, c-format -msgid "restriction estimator function %s must return type \"float8\"" -msgstr "%s type send fonksiyonu \"cstring\" döndürmelidir" - -#: commands/operatorcmds.c:255 -#, fuzzy, c-format -msgid "join estimator function %s must return type \"float8\"" -msgstr "%s typmod_in fonksiyonu \"trigger\" tipini döndürmelidir" - -#: commands/operatorcmds.c:306 -#, c-format -msgid "operator %s does not exist, skipping" -msgstr "%s operatorü mevcut değil, atlanıyor" - -#: commands/portalcmds.c:61 -#: commands/portalcmds.c:160 -#: commands/portalcmds.c:212 -msgid "invalid cursor name: must not be empty" -msgstr "geçersiz imleç adı: boş olmamalıdır" - -#: commands/portalcmds.c:402 -msgid "could not reposition held cursor" -msgstr "tutulan cursorun yerini değiştirilemez" - -#: commands/prepare.c:71 -msgid "invalid statement name: must not be empty" -msgstr "geçersiz deyim adı: boş olmamalıdır" - -#: commands/prepare.c:140 -msgid "utility statements cannot be prepared" -msgstr "yardımcı program statementları hazırlanamaz" - -#: commands/prepare.c:240 -#: commands/prepare.c:247 -#: commands/prepare.c:702 -msgid "prepared statement is not a SELECT" -msgstr "hazırlanmış (prepared) sorgu SELECT değildir" - -#: commands/prepare.c:314 -#, c-format -msgid "wrong number of parameters for prepared statement \"%s\"" -msgstr "\"%s\" hazırlanmış sorgusunda parametre sayısı fazla" - -#: commands/prepare.c:316 -#, c-format -msgid "Expected %d parameters but got %d." -msgstr "%d beklenirken %d alındı." - -#: commands/prepare.c:345 -msgid "cannot use subquery in EXECUTE parameter" -msgstr "EXECUTE parametresinde subquery kullanılamaz" - -#: commands/prepare.c:349 -msgid "cannot use aggregate function in EXECUTE parameter" -msgstr "EXECUTE parametresinde aggregate fonksiyon kullanılamaz" - -#: commands/prepare.c:353 -#, fuzzy -msgid "cannot use window function in EXECUTE parameter" -msgstr "EXECUTE parametresinde aggregate fonksiyon kullanılamaz" - -#: commands/prepare.c:366 -#, c-format -msgid "parameter $%d of type %s cannot be coerced to the expected type %s" -msgstr "%2$s tipinde $%1$d parametresi %3$s beklenen tipine zorla dönüştürülemez" - -#: commands/prepare.c:459 -#, c-format -msgid "prepared statement \"%s\" already exists" -msgstr "\"%s\" hazırlanmış sorgusu zaten mevcut" - -#: commands/prepare.c:517 -#, c-format -msgid "prepared statement \"%s\" does not exist" -msgstr "hazırlanmış sorgu \"%s\" mevcut değil" - -#: commands/proclang.c:83 -#: commands/proclang.c:514 -#, c-format -msgid "language \"%s\" already exists" -msgstr "\"%s\" dili zaten mevcut" - -#: commands/proclang.c:98 -msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters" -msgstr "CREATE LANGUAGE parametrelerin yerinde pg_pltemplate bilgisi kullanılacaktır" - -#: commands/proclang.c:108 -#, c-format -msgid "must be superuser to create procedural language \"%s\"" -msgstr "\"%s\" yordamsal dilini oluşturmak için superuser olmalısınız" - -#: commands/proclang.c:128 -#: commands/proclang.c:245 -#, c-format -msgid "function %s must return type \"language_handler\"" -msgstr "%s fonksiyonunun döndürme tipi \"language_handler\" olmalıdır" - -#: commands/proclang.c:209 -#, c-format -msgid "unsupported language \"%s\"" -msgstr "\"%s\" dili desteklenmiyor" - -#: commands/proclang.c:211 -msgid "The supported languages are listed in the pg_pltemplate system catalog." -msgstr "Testeklenen dillerin listesi pg_pltemplate sistem cataloğunda bulunmaktadır." - -#: commands/proclang.c:219 -msgid "must be superuser to create custom procedural language" -msgstr "özel yordamsal dil oluşturmak için superuser olmalısınız" - -#: commands/proclang.c:238 -#, c-format -msgid "changing return type of function %s from \"opaque\" to \"language_handler\"" -msgstr "%s fonksiyonunun döndürme tipi \"opaque\"'dan \"language_handler\"'e değiştiriliyor" - -#: commands/proclang.c:436 -#, c-format -msgid "language \"%s\" does not exist, skipping" -msgstr "\"%s\" dili mevcut değil, atlanıyor" - -#: commands/schemacmds.c:82 -#: commands/schemacmds.c:292 -#, c-format -msgid "unacceptable schema name \"%s\"" -msgstr "\"%s\" kabul edilemez şema adı" - -#: commands/schemacmds.c:83 -#: commands/schemacmds.c:293 -msgid "The prefix \"pg_\" is reserved for system schemas." -msgstr "\"pg_\" ön eki, sistem şemaları için ayrılmıştır." - -#: commands/schemacmds.c:196 -#, c-format -msgid "schema \"%s\" does not exist, skipping" -msgstr "\"%s\" şeması mevcut değil, atlanıyor" - -#: commands/sequence.c:547 -#, c-format -msgid "nextval: reached maximum value of sequence \"%s\" (%s)" -msgstr "nextval: sequence en yüksek değerine ulaşmıştır \"%s\" (%s)" - -#: commands/sequence.c:570 -#, c-format -msgid "nextval: reached minimum value of sequence \"%s\" (%s)" -msgstr "nextval: sequence en düşük değerine ulaşmıştır \"%s\" (%s)" - -#: commands/sequence.c:668 -#, c-format -msgid "currval of sequence \"%s\" is not yet defined in this session" -msgstr "bu oturumda \"%s\" sequence'i için currval henüz tanımlanmamıştır" - -#: commands/sequence.c:687 -#: commands/sequence.c:695 -msgid "lastval is not yet defined in this session" -msgstr "bu otumda lastval daha tanımlanmadı" - -#: commands/sequence.c:759 -#, c-format -msgid "setval: value %s is out of bounds for sequence \"%s\" (%s..%s)" -msgstr "setval: %s değeri kapsam dışıdır, sequence \"%s\" (%s..%s)" - -#: commands/sequence.c:1088 -msgid "INCREMENT must not be zero" -msgstr "INCREMENT sıfır olamaz" - -#: commands/sequence.c:1134 -#, c-format -msgid "MINVALUE (%s) must be less than MAXVALUE (%s)" -msgstr "MINVALUE (%s), MAXVALUE (%s) değerinden küçük olmalıdır" - -#: commands/sequence.c:1159 -#, c-format -msgid "START value (%s) cannot be less than MINVALUE (%s)" -msgstr "START değeri (%s) MINVALUE değerinden (%s) küçük olamaz" - -#: commands/sequence.c:1171 -#, c-format -msgid "START value (%s) cannot be greater than MAXVALUE (%s)" -msgstr "START değeri (%s) MAXVALUE değerinden (%s) büyük olamaz" - -#: commands/sequence.c:1202 -#, fuzzy, c-format -msgid "RESTART value (%s) cannot be less than MINVALUE (%s)" -msgstr "START değeri (%s) MINVALUE değerinden (%s) küçük olamaz" - -#: commands/sequence.c:1214 -#, fuzzy, c-format -msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)" -msgstr "START değeri (%s) MAXVALUE değerinden (%s) büyük olamaz" - -#: commands/sequence.c:1229 -#, c-format -msgid "CACHE (%s) must be greater than zero" -msgstr "CACHE (%s) sıfırdan büyük olmalıdır" - -#: commands/sequence.c:1260 -msgid "invalid OWNED BY option" -msgstr "geçersiz OWNED BY seçeneği" - -#: commands/sequence.c:1261 -msgid "Specify OWNED BY table.column or OWNED BY NONE." -msgstr "OWNED BY table.column veya OWNED BY NONE belirtin." - -#: commands/sequence.c:1283 -#: commands/tablecmds.c:4597 -#, c-format -msgid "referenced relation \"%s\" is not a table" -msgstr " rerefans edilen \"%s\" nesnesi bir tablo değildir" - -#: commands/sequence.c:1290 -msgid "sequence must have same owner as table it is linked to" -msgstr "sequence ait olduğu tablo ile aynı kullanıcıya sahip olmalıdır" - -#: commands/sequence.c:1294 -msgid "sequence must be in same schema as table it is linked to" -msgstr "sequence ait olduğu tablonun bulunduğu şemada bulunmalıdır" - -#: commands/tablecmds.c:191 -#, c-format -msgid "table \"%s\" does not exist" -msgstr "tablo \"%s\" mevcut değil" - -#: commands/tablecmds.c:192 -#, c-format -msgid "table \"%s\" does not exist, skipping" -msgstr "tablo \"%s\" mevcut değil, atlanıyor" - -#: commands/tablecmds.c:194 -msgid "Use DROP TABLE to remove a table." -msgstr "Bir tabloyu kaldırmak için DROP TABLE KULLANIN." - -#: commands/tablecmds.c:197 -#, c-format -msgid "sequence \"%s\" does not exist" -msgstr "sequence \"%s\" mevcut değil" - -#: commands/tablecmds.c:198 -#, c-format -msgid "sequence \"%s\" does not exist, skipping" -msgstr "sequence \"%s\" mevcut değil, atlanıyor" - -#: commands/tablecmds.c:200 -msgid "Use DROP SEQUENCE to remove a sequence." -msgstr "Bir sequence kaldırmak için DROP SEQUENCE kullanın." - -#: commands/tablecmds.c:203 -#, c-format -msgid "view \"%s\" does not exist" -msgstr "view \"%s\" mevcut değil" - -#: commands/tablecmds.c:204 -#, c-format -msgid "view \"%s\" does not exist, skipping" -msgstr "view \"%s\" mevcut değil, atlanıyor" - -#: commands/tablecmds.c:206 -msgid "Use DROP VIEW to remove a view." -msgstr "Bir view kaldırmak için DROP VIEW kullanın." - -#: commands/tablecmds.c:209 -#, c-format -msgid "index \"%s\" does not exist" -msgstr "\"%s\" indexi mevcut değil" - -#: commands/tablecmds.c:210 -#, c-format -msgid "index \"%s\" does not exist, skipping" -msgstr "\"%s\" indexi mevcut değil, atlanıyor" - -#: commands/tablecmds.c:212 -msgid "Use DROP INDEX to remove an index." -msgstr "Bir index kaldırmak için DROP INDEX kullanın." - -#: commands/tablecmds.c:216 -#: commands/typecmds.c:654 -#, c-format -msgid "type \"%s\" does not exist, skipping" -msgstr "\"%s\" tipi mevcut değil, atlanıyor" - -#: commands/tablecmds.c:217 -#, c-format -msgid "\"%s\" is not a type" -msgstr "\"%s\" bir tip değildir" - -#: commands/tablecmds.c:218 -msgid "Use DROP TYPE to remove a type." -msgstr "Bir tipi kaldırmak için DROP TYPE kullanın." - -#: commands/tablecmds.c:370 -#: executor/execMain.c:2860 -msgid "ON COMMIT can only be used on temporary tables" -msgstr "ON COMMIT sadece geçici tablolarda kullanılabilir" - -#: commands/tablecmds.c:843 -#, c-format -msgid "truncate cascades to table \"%s\"" -msgstr "truncate işlemi , cascade neticesinde %s' tablosuna varıyor" - -#: commands/tablecmds.c:1052 -#, c-format -msgid "cannot truncate system relation \"%s\"" -msgstr "sistem tablosu \"%s\" truncate edilemez" - -#: commands/tablecmds.c:1062 -msgid "cannot truncate temporary tables of other sessions" -msgstr "diğer oturumların geçici tablolarını truncate edemezsiniz" - -#: commands/tablecmds.c:1203 -#: parser/parse_utilcmd.c:557 -#: parser/parse_utilcmd.c:1163 -#, c-format -msgid "inherited relation \"%s\" is not a table" -msgstr "miras alınan \"%s\" nesnesi bir tablo değildir" - -#: commands/tablecmds.c:1209 -#: commands/tablecmds.c:6913 -#, c-format -msgid "cannot inherit from temporary relation \"%s\"" -msgstr "\"%s\" geçici nesnesinden inherit yapılamaz" - -#: commands/tablecmds.c:1226 -#: commands/tablecmds.c:6941 -#, c-format -msgid "relation \"%s\" would be inherited from more than once" -msgstr "\"%s\" ilişkisi birden fazla miras alınmış" - -#: commands/tablecmds.c:1281 -#, c-format -msgid "merging multiple inherited definitions of column \"%s\"" -msgstr "\"%s\" sütununun birden fazla miras alınmış tanımı birleştiriliyor" - -#: commands/tablecmds.c:1289 -#, c-format -msgid "inherited column \"%s\" has a type conflict" -msgstr "miras alınan \"%s\" sütunu tip çakışması yaşıyor" - -#: commands/tablecmds.c:1291 -#: commands/tablecmds.c:1449 -#: parser/parse_coerce.c:302 -#: parser/parse_coerce.c:1488 -#: parser/parse_coerce.c:1507 -#: parser/parse_coerce.c:1552 -#: parser/parse_expr.c:1872 -#, c-format -msgid "%s versus %s" -msgstr "%s versus %s" - -#: commands/tablecmds.c:1439 -#, c-format -msgid "merging column \"%s\" with inherited definition" -msgstr "\"%s\" sütunu miras alınan tanımı ile birleştiriliyor" - -#: commands/tablecmds.c:1447 -#, c-format -msgid "column \"%s\" has a type conflict" -msgstr "\"%s\" sütununda tip çakışması" - -#: commands/tablecmds.c:1498 -#, c-format -msgid "column \"%s\" inherits conflicting default values" -msgstr "\"%s\" sütunu çakışan değerleri inherit ediyor" - -#: commands/tablecmds.c:1500 -msgid "To resolve the conflict, specify a default explicitly." -msgstr "Çakışmayı çözmek için varsayılan değeri açıkca belirtin." - -#: commands/tablecmds.c:1547 -#, c-format -msgid "check constraint name \"%s\" appears multiple times but with different expressions" -msgstr "\"%s\" check kısıtlaması birçok kez ve farklı anlatımla mevcuttur" - -#: commands/tablecmds.c:1903 -#, c-format -msgid "inherited column \"%s\" must be renamed in child tables too" -msgstr "miras alınan \"%s\" kolonunun adı alt tablolarda da değiştirilmelidir" - -#: commands/tablecmds.c:1921 -#, c-format -msgid "cannot rename system column \"%s\"" -msgstr "\"%s\" sistem sütununun adı değiştirilemez" - -#: commands/tablecmds.c:1931 -#, c-format -msgid "cannot rename inherited column \"%s\"" -msgstr "miras alınan \"%s\" sütununun adı değiştirilemez" - -#: commands/tablecmds.c:1942 -#: commands/tablecmds.c:3585 -#, c-format -msgid "column \"%s\" of relation \"%s\" already exists" -msgstr "\"%2$s\" nesnesinin \"%1$s\" sütunu zaten mevcut" - -#: commands/tablecmds.c:2063 -#: commands/tablecmds.c:6252 -#: commands/tablecmds.c:7543 -msgid "Use ALTER TYPE instead." -msgstr "Yerine ALTER TYPE kullanın." - -#. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2188 -#, fuzzy, c-format -msgid "cannot %s \"%s\" because it is being used by active queries in this session" -msgstr "\"%s\" tablosu şu anda aktif sorgular tarafından kullanılmaktadır" - -#. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2197 -#, fuzzy, c-format -msgid "cannot %s \"%s\" because it has pending trigger events" -msgstr "\"%s\" tablosuna bağlı trigger olayları bulunduğu için truncate işlemi yapılamadı" - -#: commands/tablecmds.c:2792 -#, c-format -msgid "cannot rewrite system relation \"%s\"" -msgstr "\"%s\" sistem tablosu yeniden yazılamaz" - -#: commands/tablecmds.c:2802 -msgid "cannot rewrite temporary tables of other sessions" -msgstr "diğer oturumların geçici tabloları yeniden yazılamaz" - -#: commands/tablecmds.c:3128 -#, c-format -msgid "column \"%s\" contains null values" -msgstr "\"%s\" sütunu null değerleri içermektedir" - -#: commands/tablecmds.c:3142 -#, c-format -msgid "check constraint \"%s\" is violated by some row" -msgstr "\"%s\" bütünlük kısıtlaması bir(kaç) satır tarafından ihlal edilmiş" - -#: commands/tablecmds.c:3225 -#: rewrite/rewriteDefine.c:253 -#, c-format -msgid "\"%s\" is not a table or view" -msgstr "\"%s\" bir tablo veya view değildir" - -#: commands/tablecmds.c:3261 -#: commands/tablecmds.c:4012 -#, c-format -msgid "\"%s\" is not a table or index" -msgstr "\"%s\" bir tablo veya index değil" - -#: commands/tablecmds.c:3416 -#, c-format -msgid "cannot alter table \"%s\" because column \"%s\".\"%s\" uses its rowtype" -msgstr "\"%2$s\".\"%3$s\" sütunu onun rowtype veri tipini kullandığı için \"%1$s\" tablosu değiştirilemez" - -#: commands/tablecmds.c:3423 -#, fuzzy, c-format -msgid "cannot alter type \"%s\" because column \"%s\".\"%s\" uses it" -msgstr "\"%2$s\".\"%3$s\" sütunu onun rowtype veri tipini kullandığı için \"%1$s\" tablosu değiştirilemez" - -#: commands/tablecmds.c:3494 -msgid "column must be added to child tables too" -msgstr "sütun, alt tablolarana da eklenmelidir" - -#: commands/tablecmds.c:3539 -#: commands/tablecmds.c:7097 -#, c-format -msgid "child table \"%s\" has different type for column \"%s\"" -msgstr "\"%s\" alt tablosundaki \"%s\" sütununun tipi farklıdır" - -#: commands/tablecmds.c:3546 -#, fuzzy, c-format -msgid "child table \"%s\" has a conflicting \"%s\" column" -msgstr "alt tablosunda \"%s\" kısıtlama eksiktir" - -#: commands/tablecmds.c:3558 -#, c-format -msgid "merging definition of column \"%s\" for child \"%s\"" -msgstr "\"%s\" sütunun tanımı \"%s\" alt tablo için birleştiriliyor" - -#: commands/tablecmds.c:3832 -#: commands/tablecmds.c:3924 -#: commands/tablecmds.c:3969 -#: commands/tablecmds.c:4065 -#: commands/tablecmds.c:4126 -#: commands/tablecmds.c:5576 -#, c-format -msgid "cannot alter system column \"%s\"" -msgstr "\"%s\" sistem sütunu değiştirilemez" - -#: commands/tablecmds.c:3868 -#, c-format -msgid "column \"%s\" is in a primary key" -msgstr "\"%s\" sütunu bir birincil anahtardır" - -#: commands/tablecmds.c:4039 -#, c-format -msgid "statistics target %d is too low" -msgstr "statistics target %d çok düşüktür" - -#: commands/tablecmds.c:4047 -#, c-format -msgid "lowering statistics target to %d" -msgstr "statistics target, %d değerine düşürülmektedir" - -#: commands/tablecmds.c:4107 -#, c-format -msgid "invalid storage type \"%s\"" -msgstr "geçersiz saklama tipi \"%s\"" - -#: commands/tablecmds.c:4138 -#, c-format -msgid "column data type %s can only have storage PLAIN" -msgstr "%s sütün veri tipleri sadece PLAIN depolama yöntemini kullanabilir" - -#: commands/tablecmds.c:4193 -#, c-format -msgid "cannot drop system column \"%s\"" -msgstr "\"%s\" sistem sütunu kaldırılamaz" - -#: commands/tablecmds.c:4200 -#, c-format -msgid "cannot drop inherited column \"%s\"" -msgstr "miras alınan \"%s\" sütunu kaldırılamaz" - -#: commands/tablecmds.c:4532 -#, fuzzy -msgid "constraint must be added to child tables too" -msgstr "sütun, alt tablolarana da eklenmelidir" - -#: commands/tablecmds.c:4619 -msgid "cannot reference temporary table from permanent table constraint" -msgstr "sürekli tablo kısıtlayıcısından geçici tablo referans edilemez" - -#: commands/tablecmds.c:4626 -msgid "cannot reference permanent table from temporary table constraint" -msgstr "geçeci tablo kısıtlayıcısından sürekli tablo referans edilemez" - -#: commands/tablecmds.c:4686 -msgid "number of referencing and referenced columns for foreign key disagree" -msgstr "foreign key'in referans eden ve referans edilen sütun sayısı uyuşmuyor" - -#: commands/tablecmds.c:4777 -#, c-format -msgid "foreign key constraint \"%s\" cannot be implemented" -msgstr "\"%s\" foreign key constrain oluşturulamaz" - -#: commands/tablecmds.c:4780 -#, c-format -msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s." -msgstr "\"%s\" ve \"%s\" anahtar sütunların tipi farklı: %s ve %s." - -#: commands/tablecmds.c:4873 -#, c-format -msgid "column \"%s\" referenced in foreign key constraint does not exist" -msgstr "foreign key kısıtlaması tarafından referans edilen sütun \"%s\" mevcut değil" - -#: commands/tablecmds.c:4878 -#, c-format -msgid "cannot have more than %d keys in a foreign key" -msgstr "foreign key kısıtlamasında %d'dan fazla anahtar olamaz" - -#: commands/tablecmds.c:4951 -#, c-format -msgid "there is no primary key for referenced table \"%s\"" -msgstr "referans edilen \"%s\" tablosunda primary key mevcut değil" - -#: commands/tablecmds.c:5085 -#, c-format -msgid "there is no unique constraint matching given keys for referenced table \"%s\"" -msgstr "\"%s\" referans edilen tablosunda belirtilen anahtarlara uyan bir unique constraint yok" - -#: commands/tablecmds.c:5405 -#, fuzzy, c-format -msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" -msgstr "miras alınan \"%s\" sütunu kaldırılamaz" - -#: commands/tablecmds.c:5429 -#: commands/tablecmds.c:5532 -#, fuzzy, c-format -msgid "constraint \"%s\" of relation \"%s\" does not exist" -msgstr "\"%s\" kolonu \"%s\" tablosunda mevcut değil" - -#: commands/tablecmds.c:5583 -#, c-format -msgid "cannot alter inherited column \"%s\"" -msgstr "miras alınan \"%s\" kolonu değiştirilemez" - -#: commands/tablecmds.c:5618 -msgid "transform expression must not return a set" -msgstr "transform ifadesi bir set döndürmemelidir" - -#: commands/tablecmds.c:5624 -msgid "cannot use subquery in transform expression" -msgstr "transform ifadesinde set kullanılamaz" - -#: commands/tablecmds.c:5628 -msgid "cannot use aggregate function in transform expression" -msgstr "transform ifadesinde aggregate function kullanılamaz" - -#: commands/tablecmds.c:5632 -#, fuzzy -msgid "cannot use window function in transform expression" -msgstr "transform ifadesinde aggregate function kullanılamaz" - -#: commands/tablecmds.c:5650 -#, fuzzy, c-format -msgid "column \"%s\" cannot be cast to type %s" -msgstr "\"%s\" sütunu \"%s\" tipine dönüştürülemez" - -#: commands/tablecmds.c:5676 -#, c-format -msgid "type of inherited column \"%s\" must be changed in child tables too" -msgstr "\"%s\" inherinted sütununların tipi çocuk tablolarında da değiştirilmelidir" - -#: commands/tablecmds.c:5715 -#, c-format -msgid "cannot alter type of column \"%s\" twice" -msgstr "\"%s\" sütununun tipini iki kez değiştirilemez" - -#: commands/tablecmds.c:5749 -#, fuzzy, c-format -msgid "default for column \"%s\" cannot be cast to type %s" -msgstr "\"%s\" sütunun varsayılan tipi \"%s\" tipine dönüştürülemez" - -#: commands/tablecmds.c:5875 -msgid "cannot alter type of a column used by a view or rule" -msgstr "view veya rule tarafından kullanılan sütunun tipini değiştirilemedi" - -#: commands/tablecmds.c:5876 -#, c-format -msgid "%s depends on column \"%s\"" -msgstr "%s sütunu \"%s\" sütununa bağlıdır" - -#: commands/tablecmds.c:6220 -#, c-format -msgid "cannot change owner of index \"%s\"" -msgstr "\"%s\" indeksinin sahibi değiştirilemez" - -#: commands/tablecmds.c:6222 -msgid "Change the ownership of the index's table, instead." -msgstr "Bunun yerine indeksin bağlı oldüğü tablonun sahipliğini değiştirin." - -#: commands/tablecmds.c:6238 -#, c-format -msgid "cannot change owner of sequence \"%s\"" -msgstr "\"%s\" sequence'in sahibi değiştirilemez" - -#: commands/tablecmds.c:6240 -#: commands/tablecmds.c:7533 -#, c-format -msgid "Sequence \"%s\" is linked to table \"%s\"." -msgstr "\"%s\" sequence'i, \"%s\" tablosuna bağlıdır" - -#: commands/tablecmds.c:6261 -#: commands/tablecmds.c:7551 -#, c-format -msgid "\"%s\" is not a table, view, or sequence" -msgstr "\"%s\" bir tablo, view veya sequence değildir" - -#: commands/tablecmds.c:6520 -msgid "cannot have multiple SET TABLESPACE subcommands" -msgstr "birden fazla SET TABLESPACE alt komutu veremezsiniz" - -#: commands/tablecmds.c:6574 -#, c-format -msgid "\"%s\" is not a table, index, or TOAST table" -msgstr "\"%s\" bir tablo, dizin, veya TOAST tablosu değildir" - -#: commands/tablecmds.c:6686 -#, c-format -msgid "cannot move system relation \"%s\"" -msgstr "\"%s\" sistem nesnesi taşınamaz" - -#: commands/tablecmds.c:6702 -msgid "cannot move temporary tables of other sessions" -msgstr "diğer oturumların geçici tabloları taşınamaz" - -#: commands/tablecmds.c:6968 -msgid "circular inheritance not allowed" -msgstr "çevrimsel inheritance yapısına izin verilmemektedir" - -#: commands/tablecmds.c:6969 -#, c-format -msgid "\"%s\" is already a child of \"%s\"." -msgstr "\"%s\" zaten \"%s\" nesnesinin alt nesnesidir" - -#: commands/tablecmds.c:6977 -#, c-format -msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs" -msgstr "OID olmayan \"%s\" tablosu, OID olan \"%s\" tablosu inherit edemez" - -#: commands/tablecmds.c:7104 -#, c-format -msgid "column \"%s\" in child table must be marked NOT NULL" -msgstr "alt tablosundaki \"%s\" sütunu NOT NULL olmalıdır" - -#: commands/tablecmds.c:7120 -#, c-format -msgid "child table is missing column \"%s\"" -msgstr "alt tablosunda \"%s\" sütunu eksiktir" - -#: commands/tablecmds.c:7199 -#, fuzzy, c-format -msgid "child table \"%s\" has different definition for check constraint \"%s\"" -msgstr "\"%s\" alt tablosundaki \"%s\" sütununun tipi farklıdır" - -#: commands/tablecmds.c:7223 -#, c-format -msgid "child table is missing constraint \"%s\"" -msgstr "alt tablosunda \"%s\" kısıtlama eksiktir" - -#: commands/tablecmds.c:7304 -#, c-format -msgid "relation \"%s\" is not a parent of relation \"%s\"" -msgstr "\"%s\" nesnesi \"%s\" nesnesinin üst nesnesi değildir" - -#: commands/tablecmds.c:7532 -msgid "cannot move an owned sequence into another schema" -msgstr "sahipliği belli olan sequence başka bir şemaya taşınamaz" - -#: commands/tablecmds.c:7561 -#, c-format -msgid "relation \"%s\" is already in schema \"%s\"" -msgstr "\"%s\" nesnesi zaten \"%s\" şemasında mevcuttur" - -#: commands/tablecmds.c:7626 -#, c-format -msgid "relation \"%s\" already exists in schema \"%s\"" -msgstr "\"%s\" nesnesi zaten \"%s\" şemasında mevcuttur" - -#: commands/tablespace.c:146 -#: commands/tablespace.c:154 -#: commands/tablespace.c:160 -#: ../port/copydir.c:59 -#, c-format -msgid "could not create directory \"%s\": %m" -msgstr "\"%s\" dizini oluşturulamadı: %m" - -#: commands/tablespace.c:171 -#, c-format -msgid "could not stat directory \"%s\": %m" -msgstr "\"%s\" dizinine erişilemedi: %m" - -#: commands/tablespace.c:180 -#, c-format -msgid "\"%s\" exists but is not a directory" -msgstr "\"%s\" mevcuttur ancak bir dizin değildir" - -#: commands/tablespace.c:211 -#, c-format -msgid "permission denied to create tablespace \"%s\"" -msgstr "tablespace \"%s\" oluşturma hatası" - -#: commands/tablespace.c:213 -msgid "Must be superuser to create a tablespace." -msgstr "Tablespace oluşturmak için superuser haklarına sahip olmalısınız." - -#: commands/tablespace.c:229 -msgid "tablespace location cannot contain single quotes" -msgstr "tablespace yeri adında tek tırnak bulunamaz" - -#: commands/tablespace.c:239 -msgid "tablespace location must be an absolute path" -msgstr "tablespace yeri gosteren ifade tam bir mutlak yol olmalıdır" - -#: commands/tablespace.c:249 -#, c-format -msgid "tablespace location \"%s\" is too long" -msgstr "tablespace yeri \"%s\" çok uzun" - -#: commands/tablespace.c:259 -#: commands/tablespace.c:786 -#, c-format -msgid "unacceptable tablespace name \"%s\"" -msgstr "\"%s\" tablespace adı kabul edilemez" - -#: commands/tablespace.c:261 -#: commands/tablespace.c:787 -msgid "The prefix \"pg_\" is reserved for system tablespaces." -msgstr "\"pg_\" ön eki, sistem tablespaceler için ayrılmıştır." - -#: commands/tablespace.c:271 -#: commands/tablespace.c:799 -#, c-format -msgid "tablespace \"%s\" already exists" -msgstr "tablespace \"%s\" zaten mevcut" - -#: commands/tablespace.c:309 -#: commands/tablespace.c:1295 -#, c-format -msgid "could not set permissions on directory \"%s\": %m" -msgstr "dizin \"%s\" için erişim hakları ayarlanamadı: %m" - -#: commands/tablespace.c:318 -#, c-format -msgid "directory \"%s\" is not empty" -msgstr "\"%s\"dizini boş değildir" - -#: commands/tablespace.c:339 -#: commands/tablespace.c:1310 -#, c-format -msgid "could not create symbolic link \"%s\": %m" -msgstr "symbolic link \"%s\" oluşturma hatası: %m" - -#: commands/tablespace.c:377 -#: commands/tablespace.c:529 -msgid "tablespaces are not supported on this platform" -msgstr "bu platformda tablespace desteklenmiyor" - -#: commands/tablespace.c:421 -#, c-format -msgid "tablespace \"%s\" does not exist, skipping" -msgstr "tabloaralığı \"%s\" mevcut değil, atlanıyor" - -#: commands/tablespace.c:486 -#, c-format -msgid "tablespace \"%s\" is not empty" -msgstr "\"%s\" tablespace boş değil" - -#: commands/tablespace.c:611 -#: commands/tablespace.c:648 -#, c-format -msgid "could not remove directory \"%s\": %m" -msgstr "\"%s\" dizini silme hatası: %m" - -#: commands/tablespace.c:656 -#, c-format -msgid "could not remove symbolic link \"%s\": %m" -msgstr "symbolic link \"%s\" kaldırma hatası: %m" - -#: commands/tablespace.c:1323 -#, c-format -msgid "tablespace %u is not empty" -msgstr "%u tablespace boş değil" - -#: commands/trigger.c:158 -msgid "TRUNCATE FOR EACH ROW triggers are not supported" -msgstr "" - -#: commands/trigger.c:174 -#, c-format -msgid "changing return type of function %s from \"opaque\" to \"trigger\"" -msgstr "%s fonksiyonunun döndürme değeri \"opaque\"tan \"trigger\"e değiştiriliyor" - -#: commands/trigger.c:181 -#, c-format -msgid "function %s must return type \"trigger\"" -msgstr "%s fonksiyonu \"trigger\" tipini döndürmelidir" - -#: commands/trigger.c:259 -#: commands/trigger.c:892 -#, c-format -msgid "trigger \"%s\" for relation \"%s\" already exists" -msgstr "\"%2$s\" nesnesi için \"%1$s\" tetikleyicisi (trigger) zaten mevcut" - -#: commands/trigger.c:461 -msgid "Found referenced table's UPDATE trigger." -msgstr "Başvurulan tablonun UPDATE tetikleyicisi bulundu." - -#: commands/trigger.c:462 -msgid "Found referenced table's DELETE trigger." -msgstr "Başvurulan tablonun DELETE tetikleyicisi bulundu." - -#: commands/trigger.c:463 -msgid "Found referencing table's trigger." -msgstr "Başvurulan tablonun tetikleyicisi bulundu." - -#: commands/trigger.c:572 -#: commands/trigger.c:588 -#, c-format -msgid "ignoring incomplete trigger group for constraint \"%s\" %s" -msgstr "\"%s\" %s kısıtlamasına ait eksik tetikleyicisi yok sayılıyor" - -#: commands/trigger.c:600 -#, c-format -msgid "converting trigger group into constraint \"%s\" %s" -msgstr "tetikleyicisi grubu \"%s\" %s kısıtlamasına dönüştürülüyor" - -#: commands/trigger.c:738 -#, c-format -msgid "trigger \"%s\" for table \"%s\" does not exist, skipping" -msgstr "\"%s\" triggeri \"%s\" tablosunda mevcut değil, atlanıyor" - -#: commands/trigger.c:1013 -#, c-format -msgid "permission denied: \"%s\" is a system trigger" -msgstr "erişim engellendi: \"%s\" bir sistem tetikleyicisidir" - -#: commands/trigger.c:1563 -#, c-format -msgid "trigger function %u returned null value" -msgstr "%u trigger fonksiyonu null değerini döndürdü" - -#: commands/trigger.c:1631 -#: commands/trigger.c:1762 -#: commands/trigger.c:1910 -#: commands/trigger.c:2061 -msgid "BEFORE STATEMENT trigger cannot return a value" -msgstr "BEFORE STATEMENT tetikleyicisi bir değer döndüremez" - -#: commands/trigger.c:2118 -#: executor/execMain.c:1600 -#: executor/execMain.c:1912 -#: executor/execMain.c:2090 -msgid "could not serialize access due to concurrent update" -msgstr "eşzamanlı update nedeniyle erişim sıralanamıyor" - -#: commands/trigger.c:3608 -#, c-format -msgid "constraint \"%s\" is not deferrable" -msgstr "\"%s\" constrainti ertelenebilir constraint değildir" - -#: commands/trigger.c:3634 -#, c-format -msgid "constraint \"%s\" does not exist" -msgstr "constraint \"%s\" mevcut değil" - -#: commands/tsearchcmds.c:109 -#: commands/tsearchcmds.c:947 -#, c-format -msgid "function %s should return type %s" -msgstr "%s fonksiyonu %s tipini döndürmeli" - -#: commands/tsearchcmds.c:178 -msgid "must be superuser to create text search parsers" -msgstr "metin arama ayrıştırıcısı yaratmak için superuser olmalısınız" - -#: commands/tsearchcmds.c:226 -#, c-format -msgid "text search parser parameter \"%s\" not recognized" -msgstr "\"%s\" metin arama ayrıştırıcısı tanımlanamadı" - -#: commands/tsearchcmds.c:236 -msgid "text search parser start method is required" -msgstr "metin arama ayrışırıcısının start metodu eksiktir" - -#: commands/tsearchcmds.c:241 -msgid "text search parser gettoken method is required" -msgstr "metin arama ayrışırıcısının gettoken metodu eksiktir" - -#: commands/tsearchcmds.c:246 -msgid "text search parser end method is required" -msgstr "metin arama ayrışırıcısının end metodu eksiktir" - -#: commands/tsearchcmds.c:251 -msgid "text search parser lextypes method is required" -msgstr "metin arama ayrışırıcısının lextypes metodu eksiktir" - -#: commands/tsearchcmds.c:283 -msgid "must be superuser to drop text search parsers" -msgstr "metin arama ayrıştırıcısını kaldırmak için superuser olmalısınız" - -#: commands/tsearchcmds.c:312 -#, c-format -msgid "text search parser \"%s\" does not exist, skipping" -msgstr " \"%s\" metin arama ayrıştırıcısı mevcut değil, atlanıyor" - -#: commands/tsearchcmds.c:369 -msgid "must be superuser to rename text search parsers" -msgstr "metin arama ayrıştırıcısını yeniden adlandırmak için superuser olmalısınız" - -#: commands/tsearchcmds.c:390 -#, c-format -msgid "text search parser \"%s\" already exists" -msgstr " \"%s\" metin arama ayrıştırıcısı zaten mevcut" - -#: commands/tsearchcmds.c:469 -#, c-format -msgid "text search template \"%s\" does not accept options" -msgstr "\"%s\" metin arama şeması seçenek kabul etmiyor" - -#: commands/tsearchcmds.c:542 -msgid "text search template is required" -msgstr "metin arama şablonu eksiktir" - -#: commands/tsearchcmds.c:610 -#, c-format -msgid "text search dictionary \"%s\" already exists" -msgstr "\"%s\" metin arama sözlüğü zaten mevcut" - -#: commands/tsearchcmds.c:670 -#, c-format -msgid "text search dictionary \"%s\" does not exist, skipping" -msgstr "\"%s\" metin arama sözlüğü mevcut değil, atlanıyor" - -#: commands/tsearchcmds.c:1008 -msgid "must be superuser to create text search templates" -msgstr "metin arama şablonu yaratmak için superuser olmalısınız" - -#: commands/tsearchcmds.c:1045 -#, c-format -msgid "text search template parameter \"%s\" not recognized" -msgstr "metin araama şablonu parametresi \"%s\" tanınmıyor" - -#: commands/tsearchcmds.c:1055 -msgid "text search template lexize method is required" -msgstr "metin arama şablonun lexsize metodu eksiktir" - -#: commands/tsearchcmds.c:1090 -msgid "must be superuser to rename text search templates" -msgstr "metin arama şablolarının adını değiştirmek için superuser olmalısınız" - -#: commands/tsearchcmds.c:1112 -#, c-format -msgid "text search template \"%s\" already exists" -msgstr "\"%s\" metin arama şablonu zaten mevcut" - -#: commands/tsearchcmds.c:1135 -msgid "must be superuser to drop text search templates" -msgstr "metin arama şablonlarını kaldırmak için superuser olmalısınız" - -#: commands/tsearchcmds.c:1164 -#, c-format -msgid "text search template \"%s\" does not exist, skipping" -msgstr "\"%s\" metin arama şablonu mevcut değil, atlanıyor" - -#: commands/tsearchcmds.c:1363 -#, c-format -msgid "text search configuration parameter \"%s\" not recognized" -msgstr "\"%s\"metin arama yapılandırma parametresi bulunamadı" - -#: commands/tsearchcmds.c:1370 -msgid "cannot specify both PARSER and COPY options" -msgstr "hem PARSER hem de COPY seçenekleri belirtilemez" - -#: commands/tsearchcmds.c:1400 -msgid "text search parser is required" -msgstr "metin arama ayrıştırıcısı eksiktir" - -#: commands/tsearchcmds.c:1509 -#, c-format -msgid "text search configuration \"%s\" already exists" -msgstr "\"%s\" metin arama yapılandırması zaten mevcut" - -#: commands/tsearchcmds.c:1568 -#, c-format -msgid "text search configuration \"%s\" does not exist, skipping" -msgstr "\"%s\" metin arama yapılandırması mevcut değil, atlanıyor" - -#: commands/tsearchcmds.c:1794 -#, c-format -msgid "token type \"%s\" does not exist" -msgstr "\"%s\" token tipi mevcut değil" - -#: commands/tsearchcmds.c:2018 -#, fuzzy, c-format -msgid "mapping for token type \"%s\" does not exist" -msgstr "\"%s\" tipi mevcut değil" - -#: commands/tsearchcmds.c:2024 -#, fuzzy, c-format -msgid "mapping for token type \"%s\" does not exist, skipping" -msgstr "\"%s\" tipi mevcut değil, atlanıyor" - -#: commands/tsearchcmds.c:2177 -#: commands/tsearchcmds.c:2288 -#, c-format -msgid "invalid parameter list format: \"%s\"" -msgstr "geçersiz parametre liste biçimi: \"%s\"" - -#: commands/typecmds.c:163 -#, fuzzy -msgid "must be superuser to create a base type" -msgstr "Tablespace oluşturmak için superuser haklarına sahip olmalısınız." - -#: commands/typecmds.c:268 -#, c-format -msgid "type attribute \"%s\" not recognized" -msgstr "\"%s\" type attribute bulunamadı" - -#: commands/typecmds.c:322 -#, c-format -msgid "invalid type category \"%s\": must be simple ASCII" -msgstr "" - -#: commands/typecmds.c:341 -#, c-format -msgid "array element type cannot be %s" -msgstr "array element veri tipi %s olamaz" - -#: commands/typecmds.c:373 -#, c-format -msgid "alignment \"%s\" not recognized" -msgstr "alignment \"%s\" tanınmamaktadır" - -#: commands/typecmds.c:390 -#, c-format -msgid "storage \"%s\" not recognized" -msgstr "storage \"%s\" tanınmamaktadır" - -#: commands/typecmds.c:399 -msgid "type input function must be specified" -msgstr "tipin giriş fonksiyonu belirtilmelidir" - -#: commands/typecmds.c:403 -msgid "type output function must be specified" -msgstr "tipin çıkış fonksiyonu belirtilmelidir" - -#: commands/typecmds.c:408 -msgid "type modifier output function is useless without a type modifier input function" -msgstr "type modifier input function olmadan type modifier output function kullanmak anlamsızdır" - -#: commands/typecmds.c:431 -#, c-format -msgid "changing return type of function %s from \"opaque\" to %s" -msgstr "%s fonksiyonunun döndürme değeri \"opaque\"tan \"%s\"e değiştiriliyor" - -#: commands/typecmds.c:438 -#, c-format -msgid "type input function %s must return type %s" -msgstr " %s type input function %s tipini döndürmelidir" - -#: commands/typecmds.c:448 -#, c-format -msgid "changing return type of function %s from \"opaque\" to \"cstring\"" -msgstr "%s fonksiyonunun döndürme değeri \"opaque\"tan \"cstring\"e değiştiriliyor" - -#: commands/typecmds.c:455 -#, c-format -msgid "type output function %s must return type \"cstring\"" -msgstr "%s type output fonksiyonu \"cstring\" döndürmelidir" - -#: commands/typecmds.c:464 -#, c-format -msgid "type receive function %s must return type %s" -msgstr " %s type receive function %s tipini döndürmelidir" - -#: commands/typecmds.c:473 -#, c-format -msgid "type send function %s must return type \"bytea\"" -msgstr "%s type send fonksiyonu \"cstring\" döndürmelidir" - -#: commands/typecmds.c:675 -#: commands/typecmds.c:2165 -#, c-format -msgid "\"%s\" is not a domain" -msgstr "\"%s\" bir domain değildir" - -#: commands/typecmds.c:817 -#, c-format -msgid "\"%s\" is not a valid base type for a domain" -msgstr "\"%s\" tipi bir domain için geçerli bir tip değildir" - -#: commands/typecmds.c:877 -#: commands/typecmds.c:1856 -msgid "foreign key constraints not possible for domains" -msgstr "domainlerde için foreign key constraint kullanılamaz" - -#: commands/typecmds.c:897 -msgid "multiple default expressions" -msgstr "birden fazla varsayılan ifade" - -#: commands/typecmds.c:961 -#: commands/typecmds.c:970 -msgid "conflicting NULL/NOT NULL constraints" -msgstr "çakışan NULL/NOT NULL constraint" - -#: commands/typecmds.c:989 -#: commands/typecmds.c:1874 -msgid "unique constraints not possible for domains" -msgstr "domainlerde için unique constraint kullanılamaz" - -#: commands/typecmds.c:995 -#: commands/typecmds.c:1880 -msgid "primary key constraints not possible for domains" -msgstr "domainlerde için primary key constraint kullanılamaz" - -#: commands/typecmds.c:1004 -#: commands/typecmds.c:1889 -msgid "specifying constraint deferrability not supported for domains" -msgstr "constraint srtelenebirliği domainlerde belirtilemez" - -#: commands/typecmds.c:1256 -#, c-format -msgid "changing argument type of function %s from \"opaque\" to \"cstring\"" -msgstr "%s fonksiyonunun argümanı \"opaque\"tan \"cstring\"e değiştiriliyor" - -#: commands/typecmds.c:1307 -#, c-format -msgid "changing argument type of function %s from \"opaque\" to %s" -msgstr "%s fonksiyonunun argümanı \"opaque\"tan \"%s\"e değiştiriliyor" - -#: commands/typecmds.c:1406 -#, c-format -msgid "typmod_in function %s must return type \"integer\"" -msgstr "%s typmod_in fonksiyonu \"trigger\" tipini döndürmelidir" - -#: commands/typecmds.c:1433 -#, c-format -msgid "typmod_out function %s must return type \"cstring\"" -msgstr "%s typmod_out fonksiyonu \"cstring\" döndürmelidir" - -#: commands/typecmds.c:1460 -#, c-format -msgid "type analyze function %s must return type \"boolean\"" -msgstr "%s tipi analiz fonksiyonu \"boolean\" tipini döndürmelidir" - -#: commands/typecmds.c:1489 -msgid "composite type must have at least one attribute" -msgstr "compisite tipinde en az bir öğe olmalıdır" - -#: commands/typecmds.c:1715 -#, c-format -msgid "column \"%s\" of table \"%s\" contains null values" -msgstr "\"%2$s\" tablosunun \"%1$s\" sütununda null değerler mevcut" - -#: commands/typecmds.c:1960 -#, c-format -msgid "column \"%s\" of table \"%s\" contains values that violate the new constraint" -msgstr "\"%2$s\" tablosunun \"%1$s\" sütununda yeni constrainti ihlal eden değerler mevcut" - -#: commands/typecmds.c:2241 -#: commands/typecmds.c:2250 -msgid "cannot use table references in domain check constraint" -msgstr "domain check constraintte tablo referansları kullanılamaz" - -#: commands/typecmds.c:2482 -#: commands/typecmds.c:2554 -#: commands/typecmds.c:2790 -#, c-format -msgid "%s is a table's row type" -msgstr "%s bir tablo satır tipidir" - -#: commands/typecmds.c:2484 -#: commands/typecmds.c:2556 -#: commands/typecmds.c:2792 -msgid "Use ALTER TABLE instead." -msgstr "Bunun yerine ALTER TABLE kullanın." - -#: commands/typecmds.c:2491 -#: commands/typecmds.c:2563 -#: commands/typecmds.c:2704 -#, c-format -msgid "cannot alter array type %s" -msgstr "%s array tipi değiştirilemez" - -#: commands/typecmds.c:2493 -#: commands/typecmds.c:2565 -#: commands/typecmds.c:2706 -#, c-format -msgid "You can alter type %s, which will alter the array type as well." -msgstr "%s tipini değiştirebilirsiniz, aynı zamanda array type de değiştirilecektir." - -#: commands/typecmds.c:2753 -#, c-format -msgid "type %s is already in schema \"%s\"" -msgstr "%s tipi \"%s\" şemasında zaten mevcut" - -#: commands/typecmds.c:2776 -#, c-format -msgid "type \"%s\" already exists in schema \"%s\"" -msgstr "\"%s\" tipi zaten \"%s\" şemasında mevcuttur" - -#: commands/user.c:145 -msgid "SYSID can no longer be specified" -msgstr "SYSID artık belirtilemez" - -#: commands/user.c:267 -msgid "must be superuser to create superusers" -msgstr "superuser kullanıcısını oluşturmak için superuser olmalısınız" - -#: commands/user.c:274 -msgid "permission denied to create role" -msgstr "rol oluşturılmasına izin verilmedi." - -#: commands/user.c:281 -#: commands/user.c:1045 -#, c-format -msgid "role name \"%s\" is reserved" -msgstr "\"%s\" rol adı sistem tarafından kullanılmaktadır" - -#: commands/user.c:297 -#: commands/user.c:1039 -#, c-format -msgid "role \"%s\" already exists" -msgstr "\"%s\" rolü zaten mevcut" - -#: commands/user.c:579 -#: commands/user.c:759 -#: commands/user.c:1291 -#: commands/user.c:1430 -msgid "must be superuser to alter superusers" -msgstr "superuserleri değiştirmek için superuser olmalısınız" - -#: commands/user.c:594 -#: commands/user.c:767 -msgid "permission denied" -msgstr "erişim engellendi" - -#: commands/user.c:829 -msgid "permission denied to drop role" -msgstr "rol kaldırılmasına izin verilmedi" - -#: commands/user.c:863 -#, c-format -msgid "role \"%s\" does not exist, skipping" -msgstr "rol \"%s\" mevcut değil, atlanıyor" - -#: commands/user.c:875 -#: commands/user.c:879 -msgid "current user cannot be dropped" -msgstr "geçerli kullanıcı kaldıramaz" - -#: commands/user.c:883 -msgid "session user cannot be dropped" -msgstr "oturum kullanıcısı kaldıramaz" - -#: commands/user.c:894 -msgid "must be superuser to drop superusers" -msgstr "superuser kullanıcıları drop etmek için superuser olmalısınız" - -#: commands/user.c:907 -#, c-format -msgid "role \"%s\" cannot be dropped because some objects depend on it" -msgstr "diğer nesnelerin ona bağlı olması nedeniyle \"%s\" rolü kaldırılamıyor" - -#: commands/user.c:1027 -msgid "session user cannot be renamed" -msgstr "oturum kullanıcısının adı değiştirilemez" - -#: commands/user.c:1031 -msgid "current user cannot be renamed" -msgstr "geçerli kullanıcının adı değiştirilemez" - -#: commands/user.c:1056 -msgid "must be superuser to rename superusers" -msgstr "superuser kullanıcıların adlarını değiştirmek için superuser olmalısınız" - -#: commands/user.c:1063 -msgid "permission denied to rename role" -msgstr "rol adını değiştirilmesine izin verilmedi" - -#: commands/user.c:1084 -msgid "MD5 password cleared because of role rename" -msgstr "rol adı değiştirildiği için MD5 şifresi sıfırlanmıştır" - -#: commands/user.c:1146 -msgid "column names cannot be included in GRANT/REVOKE ROLE" -msgstr "" - -#: commands/user.c:1190 -msgid "permission denied to drop objects" -msgstr "nesne düşürülmesine izin verilmedi" - -#: commands/user.c:1217 -#: commands/user.c:1226 -msgid "permission denied to reassign objects" -msgstr "nesne sahipliğini değiştirmeye izin verilmedi" - -#: commands/user.c:1299 -#: commands/user.c:1438 -#, c-format -msgid "must have admin option on role \"%s\"" -msgstr "\"%s\" rolünde admin opsiyonuna sahip olmalıdır" - -#: commands/user.c:1307 -msgid "must be superuser to set grantor" -msgstr "atama etkisine sahipliğini dağıtmak için superuser olmalısınız" - -#: commands/user.c:1332 -#, c-format -msgid "role \"%s\" is a member of role \"%s\"" -msgstr "\"%s\" rolü, \"%s\" rolüne dahildir" - -#: commands/user.c:1348 -#, c-format -msgid "role \"%s\" is already a member of role \"%s\"" -msgstr "\"%s\" rolü zaten \"%s\" rolüne dahildir" - -#: commands/user.c:1461 -#, c-format -msgid "role \"%s\" is not a member of role \"%s\"" -msgstr "\"%s\" rolü, \"%s\" rolüne dahil değildir" - -#: commands/vacuum.c:649 -msgid "oldest xmin is far in the past" -msgstr "en eski xmin uzun zaman önce yaratılmıştır" - -#: commands/vacuum.c:650 -msgid "Close open transactions soon to avoid wraparound problems." -msgstr "Başa dönme sorununu yaşamamak için aktif transactionları kapatın." - -#: commands/vacuum.c:978 -msgid "some databases have not been vacuumed in over 2 billion transactions" -msgstr "bazı veritabanlaı iki milyarı aşkın transaction vacuum işlemi yapılmadan işlemişler" - -#: commands/vacuum.c:979 -msgid "You might have already suffered transaction-wraparound data loss." -msgstr "transaction-wraparound veri kaybını zaten yaşamış olabilirsiniz." - -#: commands/vacuum.c:1111 -#, fuzzy, c-format -msgid "skipping \"%s\" --- only superuser can vacuum it" -msgstr "\"%s\" atlanıyor --- sadece tablo veya veritabanı sahibi onu vacuum edebilir" - -#: commands/vacuum.c:1115 -#, fuzzy, c-format -msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" -msgstr "\"%s\" atlanıyor --- sadece tablo veya veritabanı sahibi onu vacuum edebilir" - -#: commands/vacuum.c:1119 -#, c-format -msgid "skipping \"%s\" --- only table or database owner can vacuum it" -msgstr "\"%s\" atlanıyor --- sadece tablo veya veritabanı sahibi onu vacuum edebilir" - -#: commands/vacuum.c:1136 -#, c-format -msgid "skipping \"%s\" --- cannot vacuum indexes, views, or special system tables" -msgstr "\"%s\" atlanıyor --- indesk, view ve sistem tablolaları vacuum edilemez" - -#: commands/vacuum.c:1371 -#: commands/vacuumlazy.c:288 -#, c-format -msgid "vacuuming \"%s.%s\"" -msgstr "\"%s.%s\" veritabanına vacuum yapılıyor" - -#: commands/vacuum.c:1430 -#: commands/vacuumlazy.c:408 -#, c-format -msgid "relation \"%s\" page %u is uninitialized --- fixing" -msgstr "\"%s\" nesnesi, %u, sayfası sıfırlanmamış --- düzeltiyorum" - -#: commands/vacuum.c:1542 -#: commands/vacuum.c:1607 -#, fuzzy, c-format -msgid "relation \"%s\" TID %u/%u: XMIN_COMMITTED not set for transaction %u --- cannot shrink relation" -msgstr "\"%s\" tablosu TID %u/%u: InsertTransactionInProgress %u --- nesne küçültülemiyor" - -#: commands/vacuum.c:1575 -#, fuzzy, c-format -msgid "relation \"%s\" TID %u/%u: dead HOT-updated tuple --- cannot shrink relation" -msgstr "\"%s\" tablosu TID %u/%u: InsertTransactionInProgress %u --- nesne küçültülemiyor" - -#: commands/vacuum.c:1646 -#, c-format -msgid "relation \"%s\" TID %u/%u: InsertTransactionInProgress %u --- cannot shrink relation" -msgstr "\"%s\" tablosu TID %u/%u: InsertTransactionInProgress %u --- nesne küçültülemiyor" - -#: commands/vacuum.c:1663 -#, c-format -msgid "relation \"%s\" TID %u/%u: DeleteTransactionInProgress %u --- cannot shrink relation" -msgstr "\"%s\" tablosu TID %u/%u: DeleteTransactionInProgress %u --- nesne küçültülemiyor" - -#: commands/vacuum.c:1851 -#, c-format -msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages" -msgstr "\"%s\": bulunan %.0f kaldırılabilen, %.0f sabit satır sürümleri, toplam %u sayfa" - -#: commands/vacuum.c:1854 -#, c-format -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 ölü satır şımdilik kaldırılamıyor.\n" -"Kaldırılamayacak satır sürümleri %lu ile %lu bayt uzunukta.\n" -"%.0f öğe göstergesi kullanılmadı.\n" -"Topleam boş alan (kaldırılacak satır sürümleri dahil) %.0f bayttır.\n" -"%u sayfa boş ya da boşaltılacak, tablonun sonunda %u tane buna dahildir.\n" -"%u sayfa toplam %.0f boş bayt içeriği ile potansiyel taşıma hedefidir.\n" -"%s." - -#: commands/vacuum.c:2762 -#, c-format -msgid "\"%s\": moved %u row versions, truncated %u to %u pages" -msgstr "\"%s\": %u satır sürümü taşınmış, %u sayfa sayısından %u sayfaya düşürülmüştür" - -#: commands/vacuum.c:2765 -#: commands/vacuumlazy.c:802 -#: commands/vacuumlazy.c:895 -#: commands/vacuumlazy.c:1022 -#, c-format -msgid "%s." -msgstr "%s." - -#: commands/vacuum.c:3319 -#: commands/vacuumlazy.c:1019 -#, c-format -msgid "\"%s\": truncated %u to %u pages" -msgstr "\"%s\": %u sayfadan %u sayfaya düşürülmüştür" - -#: commands/vacuum.c:3412 -#: commands/vacuum.c:3489 -#: commands/vacuumlazy.c:935 -#, c-format -msgid "index \"%s\" now contains %.0f row versions in %u pages" -msgstr "\"%s\" indexi %.0f satır sürümü, %u sayfa" - -#: commands/vacuum.c:3416 -#, c-format -msgid "" -"%u index pages have been deleted, %u are currently reusable.\n" -"%s." -msgstr "" -"%u index sayfası silinmiş, %u kullanılabilir.\n" -"%s." - -#: commands/vacuum.c:3431 -#: commands/vacuum.c:3510 -#, c-format -msgid "index \"%s\" contains %.0f row versions, but table contains %.0f row versions" -msgstr "\"%s\" indexi %.0f satır sürümü içeriyor, ancak tablo %.0f satır sürümü içeriyor" - -#: commands/vacuum.c:3434 -#: commands/vacuum.c:3513 -msgid "Rebuild the index with REINDEX." -msgstr "REINDEX işlemiyle index yeniden oluşturuluyor." - -#: commands/vacuum.c:3493 -#: commands/vacuumlazy.c:939 -#, c-format -msgid "" -"%.0f index row versions were removed.\n" -"%u index pages have been deleted, %u are currently reusable.\n" -"%s." -msgstr "" -"%.0f index sürüm satırı kaldırıldı.\n" -"%u index sayfası silindi, %u şu an kullanılabilir.\n" -"%s" - -#: 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\" tablosunun automatic vacuumu: index scans: %d\n" -"pages: %d removed, %d remain\n" -"tuples: %.0f removed, %.0f remain\n" -"system kullanımı: %s" - -#: commands/vacuumlazy.c:733 -#, c-format -msgid "\"%s\": removed %.0f row versions in %u pages" -msgstr "\"%1$s\": %3$u sayfada %2$.0f satır sürümü kaldırılmış" - -#: commands/vacuumlazy.c:738 -#, fuzzy, c-format -msgid "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u pages" -msgstr "\"%s\": bulunan %.0f kaldırılabilen, %.0f sabit satır sürümleri, toplam %u sayfa" - -#: commands/vacuumlazy.c:741 -#, 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 ölü satır sürümü şu an kaldırılamıyor.\n" -"%.0f kullanılmamış öğe göstergesi vardı.\n" -"%u sayfa ise tamamen boş.\n" -"%s." - -#: commands/vacuumlazy.c:799 -#, c-format -msgid "\"%s\": removed %d row versions in %d pages" -msgstr "\"%1$s\": %3$d sayfada %2$d satır sürümü kaldırılmış" - -#: commands/vacuumlazy.c:892 -#, c-format -msgid "scanned index \"%s\" to remove %d row versions" -msgstr "\"%s\" indeksi tarandı, %d satır sürümü kaldırıldı" - -#: commands/variable.c:62 -msgid "invalid list syntax for parameter \"datestyle\"" -msgstr "\"datestyle\" parametresi için list sözdizimi geçersiz" - -#: commands/variable.c:161 -#, c-format -msgid "unrecognized \"datestyle\" key word: \"%s\"" -msgstr "\"datestyle\" anahtar kelimesi bulunamadı: \"%s\"" - -#: commands/variable.c:175 -msgid "conflicting \"datestyle\" specifications" -msgstr "çakışan \"datestyle\" tanımları" - -#: commands/variable.c:285 -msgid "invalid interval value for time zone: month not allowed" -msgstr "zaman dilimi için geçersiz aralık değeri: ay belirtilemez" - -#: commands/variable.c:293 -msgid "invalid interval value for time zone: day not allowed" -msgstr "zaman dilimi için geçersiz aralık değeri: gün ayarlanamaz" - -#: commands/variable.c:361 -#: commands/variable.c:493 -#, c-format -msgid "unrecognized time zone name: \"%s\"" -msgstr "bilinmeyen zaman dilimi adı: \"%s\"" - -#: commands/variable.c:370 -#: commands/variable.c:502 -#, c-format -msgid "time zone \"%s\" appears to use leap seconds" -msgstr "\"%s\" zaman dilimi artış saniyeleri kullanmaktadır" - -#: commands/variable.c:372 -#: commands/variable.c:504 -msgid "PostgreSQL does not support leap seconds." -msgstr "PostgreSQL, artış saniyeleri desteklememektedir." - -#: commands/variable.c:557 -msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query" -msgstr "bir sorgudan önce SET TRANSACTION ISOLATION LEVEL çağırılmalıdır" - -#: commands/variable.c:566 -msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction" -msgstr "subtransaction içinde SET TRANSACTION ISOLATION LEVEL çağırılmamalıdır" - -#: commands/variable.c:731 -msgid "cannot set session authorization within security-definer function" -msgstr "security-definer fonksiyonlarında oturum yetkilendirilmesi yapılamıyor." - -#: commands/variable.c:855 -#, fuzzy -msgid "cannot set role within security-definer function" -msgstr "var olan bir fonksiyonun döndürme tipi değiştirilemez" - -#: commands/variable.c:898 -#, c-format -msgid "permission denied to set role \"%s\"" -msgstr "\"%s\" rolü ayarlanması engellendi" - -#: commands/view.c:138 -msgid "view must have at least one column" -msgstr "viewda en az bir sütun olmalıdır" - -#: commands/view.c:259 -#: commands/view.c:271 -#, fuzzy -msgid "cannot drop columns from view" -msgstr "view silme hatası" - -#: commands/view.c:276 -#, fuzzy, c-format -msgid "cannot change name of view column \"%s\" to \"%s\"" -msgstr "view sütunu \"%s\" ad değiştirme hatası" - -#: commands/view.c:284 -#, fuzzy, c-format -msgid "cannot change data type of view column \"%s\" from %s to %s" -msgstr "\"%s\" view sütununun tipi değiştirilemiyor" - -#: commands/view.c:440 -msgid "CREATE VIEW specifies more column names than columns" -msgstr "CREATE VIEW sütun sayısından çok sütün adı belirtmektedir" - -#: commands/view.c:456 -#, c-format -msgid "view \"%s\" will be a temporary view" -msgstr "\"%s\" view, bir geçeci view olacaktır" - -#: executor/execCurrent.c:75 -#, c-format -msgid "cursor \"%s\" is not a SELECT query" -msgstr "\"%s\" imleci SELECT sorgusu değil" - -#: executor/execCurrent.c:81 -#, c-format -msgid "cursor \"%s\" is held from a previous transaction" -msgstr "önceki işlemden \"%s\" cursoru tutulmaktadır" - -#: executor/execCurrent.c:110 -#, c-format -msgid "cursor \"%s\" has multiple FOR UPDATE/SHARE references to table \"%s\"" -msgstr "" - -#: executor/execCurrent.c:119 -#, c-format -msgid "cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\"" -msgstr "" - -#: executor/execCurrent.c:129 -#: executor/execCurrent.c:176 -#, fuzzy, c-format -msgid "cursor \"%s\" is not positioned on a row" -msgstr " \"%s\" rolünun sisteme giriş hakkı yoktur" - -#: executor/execCurrent.c:163 -#, fuzzy, c-format -msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\"" -msgstr "\"%s\" rolü, \"%s\" rolüne dahil değildir" - -#: executor/execCurrent.c:228 -#: executor/execQual.c:893 -#, c-format -msgid "no value found for parameter %d" -msgstr "%d parametresi içim değer bulunamadı" - -#: executor/execMain.c:943 -#, fuzzy -msgid "SELECT FOR UPDATE/SHARE is not supported within a query with multiple result relations" -msgstr "inheritance sorgulamalar için SELECT FOR UPDATE/SHARE desteklenmemektedir" - -#: executor/execMain.c:1089 -#, c-format -msgid "cannot change sequence \"%s\"" -msgstr "\"%s\" sequence değiştirilemez" - -#: executor/execMain.c:1095 -#, c-format -msgid "cannot change TOAST relation \"%s\"" -msgstr "\"%s\" TOAST objesi değiştirilemez" - -#: executor/execMain.c:1101 -#, c-format -msgid "cannot change view \"%s\"" -msgstr "\"%s\" view değiştirilemiyor" - -#: executor/execMain.c:1107 -#, c-format -msgid "cannot change relation \"%s\"" -msgstr "\"%s\" nesnesi değiştirilemiyor" - -#: executor/execMain.c:1183 -#: executor/execMain.c:1193 -#: executor/execMain.c:1210 -#: executor/execMain.c:1218 -#: executor/execQual.c:618 -#: executor/execQual.c:637 -#: executor/execQual.c:647 -msgid "table row type and query-specified row type do not match" -msgstr "sorgu-tanımlı sonuç satırı ve tablonun sonuç satırı uyuşmamaktadır" - -#: executor/execMain.c:1184 -#, fuzzy -msgid "Query has too many columns." -msgstr "subquery çok fazla sütuna sahip" - -#: executor/execMain.c:1194 -#: executor/execQual.c:638 -#, c-format -msgid "Table has type %s at ordinal position %d, but query expects %s." -msgstr "Sorgu, %2$d adresine döndürme tipi %1$s iken, %3$s bekliyor." - -#: executor/execMain.c:1211 -#, fuzzy, c-format -msgid "Query provides a value for a dropped column at ordinal position %d." -msgstr "%d adresinde düşürülmüş sütunda fiziksel saklam uyuşmazlığı." - -#: executor/execMain.c:1219 -#, fuzzy -msgid "Query has too few columns." -msgstr "subquery'de yetersiz sütun sayısı" - -#: executor/execMain.c:2228 -#, c-format -msgid "null value in column \"%s\" violates not-null constraint" -msgstr "\"%s\" sütununda null değeri not-null kısıtlamasını ihlal ediyor" - -#: executor/execMain.c:2240 -#, c-format -msgid "new row for relation \"%s\" violates check constraint \"%s\"" -msgstr "\"%s\" tablosuna girilen yeni satır \"%s\" check kısıtlamasını ihlal ediyor" - -#: executor/execQual.c:306 -#: executor/execQual.c:334 -msgid "array subscript in assignment must not be null" -msgstr "atamada array subscript null olamaz" - -#: executor/execQual.c:559 -#: executor/execQual.c:3817 -#, c-format -msgid "attribute %d has wrong type" -msgstr "attribute %d yalnış tipe sahiptir" - -#: executor/execQual.c:560 -#: executor/execQual.c:3818 -#, c-format -msgid "Table has type %s, but query expects %s." -msgstr "Tablonun tipi %s iken, sorgu %s beklemektedir." - -#: executor/execQual.c:619 -#, fuzzy, 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] "Sorgu, döndürülen satırın %2$d sütundan oluşmasını beklerken, %1$d sütun geldi." -msgstr[1] "Sorgu, döndürülen satırın %2$d sütundan oluşmasını beklerken, %1$d sütun geldi." - -#: executor/execQual.c:648 -#: executor/execQual.c:1363 -#, c-format -msgid "Physical storage mismatch on dropped attribute at ordinal position %d." -msgstr "%d adresinde düşürülmüş sütunda fiziksel saklam uyuşmazlığı." - -#: executor/execQual.c:1047 -#: parser/parse_func.c:88 -#: parser/parse_func.c:260 -#: parser/parse_func.c:541 -#, fuzzy, 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] "bit fonksiyona %d sayısından fazla argüman gönderilemez" -msgstr[1] "bit fonksiyona %d sayısından fazla argüman gönderilemez" - -#: executor/execQual.c:1231 -msgid "functions and operators can take at most one set argument" -msgstr "fonksiyon ve operator en çok bir tane set parametresi alabiliyorlar" - -#: executor/execQual.c:1281 -#, fuzzy -msgid "function returning setof record called in context that cannot accept type record" -msgstr "tip kaydı içermeyen alanda çağırılan ve kayıt döndüren fonksiyon" - -#: executor/execQual.c:1336 -#: executor/execQual.c:1352 -#: executor/execQual.c:1362 -msgid "function return row and query-specified return row do not match" -msgstr "sorgu-tanımlı sonuç satırı ve gerçek sonuç satırı uyuşmamaktadır" - -#: executor/execQual.c:1337 -#, fuzzy, 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] "Sorgu, döndürülen satırın %2$d sütundan oluşmasını beklerken, %1$d sürun geldi." -msgstr[1] "Sorgu, döndürülen satırın %2$d sütundan oluşmasını beklerken, %1$d sürun geldi." - -#: executor/execQual.c:1353 -#, c-format -msgid "Returned type %s at ordinal position %d, but query expects %s." -msgstr "Sorgu, %2$d adresine döndürme tipi %1$s iken, %3$s bekliyor." - -#: executor/execQual.c:1606 -#: executor/execQual.c:2024 -msgid "table-function protocol for materialize mode was not followed" -msgstr "materialize biçimi için table-function protokolü izlenmemiş" - -#: executor/execQual.c:1626 -#: executor/execQual.c:2031 -#, c-format -msgid "unrecognized table-function returnMode: %d" -msgstr "belinmeyen table-function returnMode: %d" - -#: executor/execQual.c:1946 -msgid "function returning set of rows cannot return null value" -msgstr "satır seti döndüren fonksiyon null değerini döndüremez" - -#: executor/execQual.c:2191 -msgid "IS DISTINCT FROM does not support set arguments" -msgstr "IS DISTINCT FROM ifadesi set parametreleri desteklememektedir" - -#: executor/execQual.c:2266 -msgid "op ANY/ALL (array) does not support set arguments" -msgstr "op ANY/ALL (array) set parametreleri desteklememektedir" - -#: executor/execQual.c:2885 -msgid "cannot merge incompatible arrays" -msgstr "uyumsuz dizinleri birleştirilemez" - -#: executor/execQual.c:2886 -#, c-format -msgid "Array with element type %s cannot be included in ARRAY construct with element type %s." -msgstr "%s öğe tipi olan dizin, %s öğe tipi olan dizin ile aynı ARRAY içine eklenemez" - -#: executor/execQual.c:3469 -msgid "NULLIF does not support set arguments" -msgstr "NULLIF, set argümanları desteklememektedir" - -#: executor/execQual.c:4192 -#: optimizer/util/clauses.c:547 -#: parser/parse_agg.c:74 -msgid "aggregate function calls cannot be nested" -msgstr "aggregate fonksiyon çağırmaları içiçe olamaz" - -#: executor/execQual.c:4230 -#: optimizer/util/clauses.c:621 -#: parser/parse_agg.c:121 -#, fuzzy -msgid "window function calls cannot be nested" -msgstr "aggregate fonksiyon çağırmaları içiçe olamaz" - -#: executor/execQual.c:4430 -msgid "target type is not an array" -msgstr "hedef tipi array değildir" - -#: executor/execQual.c:4543 -#, c-format -msgid "ROW() column has type %s instead of type %s" -msgstr "ROW() sütünü %2$s yerine %1$s tipine sahip" - -#. translator: %s is a SQL statement name -#: executor/functions.c:153 -#, c-format -msgid "%s is not allowed in a SQL function" -msgstr "%s, bir SQL fonksiyonunda yer alamaz" - -#. translator: %s is a SQL statement name -#: executor/functions.c:160 -#: executor/spi.c:1209 -#: executor/spi.c:1771 -#, c-format -msgid "%s is not allowed in a non-volatile function" -msgstr "non-volatile fonksiyonda %s kullanılamaz" - -#: executor/functions.c:254 -#, c-format -msgid "could not determine actual result type for function declared to return type %s" -msgstr "geri döndürme tipi %s olarak tanımlanmış fonksiyonun gerçek döndürme tipi belirlenememektedir" - -#: executor/functions.c:293 -#, c-format -msgid "could not determine actual type of argument declared %s" -msgstr "tipi %s olarak tanımlanmış fonksiyonun parametresinin gerçek döndürme tipi belirlenememektedir" - -#: executor/functions.c:930 -#, c-format -msgid "SQL function \"%s\" statement %d" -msgstr "\"%s\" SQL fonksiyonu, %d komutu" - -#: executor/functions.c:949 -#, c-format -msgid "SQL function \"%s\" during startup" -msgstr "başlangıç sırasında \"%s\" SQL fonksiyonu" - -#: executor/functions.c:1078 -#: executor/functions.c:1114 -#: executor/functions.c:1126 -#: executor/functions.c:1213 -#: executor/functions.c:1225 -#: executor/functions.c:1250 -#, c-format -msgid "return type mismatch in function declared to return %s" -msgstr "%s dönüşlü bildirilmiş işlevde return deyimin tipi uyumsuz" - -#: executor/functions.c:1080 -#, fuzzy -msgid "Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING." -msgstr "Fonksiyonun son komutu SELECT olmalıdır." - -#: executor/functions.c:1116 -#, fuzzy -msgid "Final statement must return exactly one column." -msgstr "Son SELECT tam bir satır döndürmelidir." - -#: executor/functions.c:1128 -#, c-format -msgid "Actual return type is %s." -msgstr "Asıl döndürme tipi %s." - -#: executor/functions.c:1215 -#, fuzzy -msgid "Final statement returns too many columns." -msgstr "Son SELECT fazla satır döndürüyor." - -#: executor/functions.c:1227 -#, fuzzy, c-format -msgid "Final statement returns %s instead of %s at column %d." -msgstr "Son SELECT %3$d sütununda %2$s yerine %1$s döndürüyor." - -#: executor/functions.c:1252 -#, fuzzy -msgid "Final statement returns too few columns." -msgstr "Son SELECT az satır döndürüyor." - -#: executor/functions.c:1266 -#, c-format -msgid "return type %s is not supported for SQL functions" -msgstr "SQL fonksiyonların içinde %s dönüş tipi desteklenmemektedir" - -#: executor/nodeAgg.c:1543 -#: executor/nodeWindowAgg.c:1502 -#, c-format -msgid "aggregate %u needs to have compatible input type and transition type" -msgstr "%u aggregate fonksiyonu uyumlu giriş ve geçiş tiplerine sahip olmalıdır" - -#: executor/nodeAgg.c:1564 -msgid "DISTINCT is supported only for single-argument aggregates" -msgstr "DISTINCT sace tek arümanlı aggregatelerde desteklenmektedir" - -#: executor/nodeHashjoin.c:731 -#: executor/nodeHashjoin.c:765 -#, c-format -msgid "could not rewind hash-join temporary file: %m" -msgstr "geçici hash-join dosyasına başa alma işlemi başarısız: %m" - -#: executor/nodeHashjoin.c:799 -#: executor/nodeHashjoin.c:805 -#, c-format -msgid "could not write to hash-join temporary file: %m" -msgstr "geçici hash-join dosyasına yazma başarısız: %m" - -#: executor/nodeHashjoin.c:839 -#: executor/nodeHashjoin.c:849 -#, c-format -msgid "could not read from hash-join temporary file: %m" -msgstr "geçici hash-join dosyasına okuma başarısız: %m" - -#: executor/nodeLimit.c:251 -#, fuzzy -msgid "OFFSET must not be negative" -msgstr "COST pozitif olmalıdır" - -#: executor/nodeLimit.c:278 -msgid "LIMIT must not be negative" -msgstr "LIMIT negatif sayı olmamalı" - -#: executor/nodeMergejoin.c:1509 -msgid "RIGHT JOIN is only supported with merge-joinable join conditions" -msgstr "RIGHT JOIN ancak merge-join işlemine uygun şartlarında desteklenmektedir" - -#: executor/nodeMergejoin.c:1527 -#: optimizer/path/joinpath.c:1062 -msgid "FULL JOIN is only supported with merge-joinable join conditions" -msgstr "FULL JOIN ancak merge-join işlemine uygun şartlarında desteklenmektedir" - -#: executor/nodeSubplan.c:308 -#: executor/nodeSubplan.c:347 -#: executor/nodeSubplan.c:972 -msgid "more than one row returned by a subquery used as an expression" -msgstr "ifade içinde kullanılan alt sorgusu birden fazla satır döndürüldü" - -#: executor/spi.c:211 -msgid "transaction left non-empty SPI stack" -msgstr "transaction boş olamayan SPI stack bıraktı" - -#: executor/spi.c:212 -#: executor/spi.c:276 -msgid "Check for missing \"SPI_finish\" calls." -msgstr "Atlanan \"SPI_finish\" çağırılarına bakın." - -#: executor/spi.c:275 -msgid "subtransaction left non-empty SPI stack" -msgstr "subtransaction left non-empty SPI stack" - -#: executor/spi.c:1051 -msgid "cannot open multi-query plan as cursor" -msgstr "multi-query plan imleç olarak açılmıyor" - -#. translator: %s is name of a SQL command, eg INSERT -#: executor/spi.c:1056 -#, c-format -msgid "cannot open %s query as cursor" -msgstr "%s sorgusu sorgusunu imleç olarak açılmıyor" - -#: executor/spi.c:1186 -#: parser/analyze.c:1875 -msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" -msgstr "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE desteklenmiyor" - -#: executor/spi.c:1187 -#: parser/analyze.c:1876 -msgid "Scrollable cursors must be READ ONLY." -msgstr "Scrollable cursorkar READ ONLY olmalıdır." - -#: executor/spi.c:2062 -#, c-format -msgid "SQL statement \"%s\"" -msgstr "SQL deyimi: \"%s\"" - -#: foreign/foreign.c:240 -#, fuzzy, c-format -msgid "user mapping not found for \"%s\"" -msgstr "\"%s\" rolünde admin opsiyonuna sahip olmalıdır" - -#: foreign/foreign.c:418 -#, fuzzy, c-format -msgid "invalid option \"%s\"" -msgstr "\"%s\" ikili dosyası geçersiz" - -#: foreign/foreign.c:419 -#, c-format -msgid "Valid options in this context are: %s" -msgstr "" - -#: lib/stringinfo.c:246 -#, c-format -msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes." -msgstr "%d bayt uzunluğunda olan satır arabelleği %d bayt ile uzatılamıyor." - -#: storage/buffer/bufmgr.c:129 -#: storage/buffer/bufmgr.c:233 -#, fuzzy -msgid "cannot access temporary tables of other sessions" -msgstr "diğer oturumların geçici tabloları taşınamaz" - -#: storage/buffer/bufmgr.c:361 -#, fuzzy, c-format -msgid "unexpected data beyond EOF in block %u of relation %s" -msgstr "\"%2$s\" nesnesinin %1$u bloğunda dosya sonundan sonra beklenmeyen veri" - -#: storage/buffer/bufmgr.c:363 -msgid "This has been seen to occur with buggy kernels; consider updating your system." -msgstr "Bu durum bazı eski çekirdeklerde meydana gelebilir. Yeni kernellerde bu düzeltilmiştir." - -#: storage/buffer/bufmgr.c:435 -#, fuzzy, c-format -msgid "invalid page header in block %u of relation %s; zeroing out page" -msgstr "\"%2$s\" tablosunun %1$u bloğunda geçersiz sayfa başlığı; sayfa sıfırlanıyor" - -#: storage/buffer/bufmgr.c:443 -#, fuzzy, c-format -msgid "invalid page header in block %u of relation %s" -msgstr "\"%2$s\" tablosunun %1$u bloğunda geçersiz sayfa başlığı" - -#: storage/buffer/bufmgr.c:2716 -#, fuzzy, c-format -msgid "could not write block %u of %s" -msgstr "%2$u/%3$u/%4$u nesnesinin %1$u bloku yazılamıyor" - -#: storage/buffer/bufmgr.c:2718 -msgid "Multiple failures --- write error might be permanent." -msgstr "Çoklu hata --- yazma hatası kalıcı olabilir." - -#: storage/buffer/bufmgr.c:2739 -#, fuzzy, c-format -msgid "writing block %u of relation %s" -msgstr "block: %u nesne %u/%u/%u yazılıyor" - -#: storage/buffer/localbuf.c:188 -msgid "no empty local buffer available" -msgstr "boş yerel arabellek bulunamadı" - -#: storage/smgr/md.c:261 -#, fuzzy, c-format -msgid "could not create relation %s: %m" -msgstr "nesne %u/%u/%u oluşturma hatası: %m" - -#: storage/smgr/md.c:348 -#: storage/smgr/md.c:1173 -#, fuzzy, c-format -msgid "could not remove relation %s: %m" -msgstr "nesne %u/%u/%u kaldırma hatası: %m" - -#: storage/smgr/md.c:372 -#, fuzzy, c-format -msgid "could not remove segment %u of relation %s: %m" -msgstr "segment %u, nesne %u/%u/%u kaldırılamıyor: %m" - -#: storage/smgr/md.c:417 -#, fuzzy, c-format -msgid "cannot extend relation %s beyond %u blocks" -msgstr "%u/%u/%u nesnesi %u bloğuna kadar genişletilemiyor" - -#: storage/smgr/md.c:439 -#: storage/smgr/md.c:600 -#: storage/smgr/md.c:673 -#, fuzzy, c-format -msgid "could not seek to block %u of relation %s: %m" -msgstr "%2$u/%3$u/%4$u nesnesinin %1$u bloğuna arama hatası: %5$m" - -#: storage/smgr/md.c:448 -#, fuzzy, c-format -msgid "could not extend relation %s: %m" -msgstr "nesne %u/%u/%u genişletme hatası: %m" - -#: storage/smgr/md.c:450 -#: storage/smgr/md.c:457 -#: storage/smgr/md.c:699 -msgid "Check free disk space." -msgstr "Yeterli disk alanı kontrol edin" - -#: storage/smgr/md.c:454 -#, fuzzy, c-format -msgid "could not extend relation %s: wrote only %d of %d bytes at block %u" -msgstr "%1$u/%2$u/%3$u nesnesi büyütme hatası: %6$u bloğunda %4$d bayttan sadece %5$d bayt yazıldı" - -#: storage/smgr/md.c:511 -#, fuzzy, c-format -msgid "could not open relation %s: %m" -msgstr "nesne %u/%u/%u açma hatası: %m" - -#: storage/smgr/md.c:617 -#, fuzzy, c-format -msgid "could not read block %u of relation %s: %m" -msgstr "%2$u/%3$u/%4$u nesnesinin %1$u bloku okunamıyor: %5$m" - -#: storage/smgr/md.c:633 -#, fuzzy, c-format -msgid "could not read block %u of relation %s: read only %d of %d bytes" -msgstr "%2$u/%3$u/%4$u nesnesinin %1$u bloku okunamıyor: %6$d bayttan sadece %5$d bayt okundu" - -#: storage/smgr/md.c:690 -#, fuzzy, c-format -msgid "could not write block %u of relation %s: %m" -msgstr "%2$u/%3$u/%4$u nesnesinin %1$u bloku yazılamıyor: %5$m" - -#: storage/smgr/md.c:695 -#, fuzzy, c-format -msgid "could not write block %u of relation %s: wrote only %d of %d bytes" -msgstr "%2$u/%3$u/%4$u nesnesinin %1$u bloku yazılamıyor: %6$d bayttan sadece %5$d bayt yazıldı" - -#: storage/smgr/md.c:764 -#, fuzzy, c-format -msgid "could not open segment %u of relation %s: %m" -msgstr "segment %u, nesne %u/%u/%u açma yapılamıyor: %m" - -#: storage/smgr/md.c:795 -#, fuzzy, c-format -msgid "could not truncate relation %s to %u blocks: it's only %u blocks now" -msgstr "%u/%u/%u nesnesi %u blokuna kadar kesilemiyor: nesnenin boyutu %u blok olarak ayarlandı" - -#: storage/smgr/md.c:819 -#: storage/smgr/md.c:844 -#, c-format -msgid "could not truncate relation %s to %u blocks: %m" -msgstr "%s ilişkisi to %u bloğa küçültülemedi: %m" - -#: storage/smgr/md.c:889 -#: storage/smgr/md.c:1063 -#: storage/smgr/md.c:1207 -#, fuzzy, c-format -msgid "could not fsync segment %u of relation %s: %m" -msgstr "log dosyası segment %u, nesne %u/%u/%u fsync yapılamıyor: %m" - -#: storage/smgr/md.c:1068 -#, fuzzy, c-format -msgid "could not fsync segment %u of relation %s but retrying: %m" -msgstr "segment %u, nesne %u/%u/%u fsync yapılamıyor: %m" - -#: storage/smgr/md.c:1554 -#, fuzzy, c-format -msgid "could not open segment %u of relation %s (target block %u): %m" -msgstr "segment %u, nesne%u/%u/%u (hedef blok %u) açılamıyor: %m" - -#: storage/smgr/md.c:1577 -#, fuzzy, c-format -msgid "could not seek to end of segment %u of relation %s: %m" -msgstr "segment %u, nesne %u/%u/%u arama yapılamıyor: %m" - -#: storage/file/fd.c:383 -#, c-format -msgid "getrlimit failed: %m" -msgstr "getrlimit başarısız oldu: %m" - -#: storage/file/fd.c:473 -msgid "insufficient file descriptors available to start server process" -msgstr "sunucu sürecini başlatmak için yetersiz dosya belirteçleri" - -#: storage/file/fd.c:474 -#, c-format -msgid "System allows %d, we need at least %d." -msgstr "Sistem %d dosya belirtecine izin veriyor, PostgreSQL en az %d istiyor." - -#: storage/file/fd.c:515 -#: storage/file/fd.c:1376 -#: storage/file/fd.c:1491 -#, c-format -msgid "out of file descriptors: %m; release and retry" -msgstr "dosya belirteçleri kullanımda: %m; serbest bırakın ve yeniden kullanın" - -#: storage/file/fd.c:1043 -#, c-format -msgid "temporary file: path \"%s\", size %lu" -msgstr "geçici dosya: yol \"%s\", boyut %lu" - -#: storage/file/fd.c:1550 -#, c-format -msgid "could not read directory \"%s\": %m" -msgstr "\"%s\" dizini okunamıyor: %m" - -#: 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 "bozuk sayfa göstergesi: lower = %u, upper = %u, special = %u" - -#: storage/page/bufpage.c:433 -#, c-format -msgid "corrupted item pointer: %u" -msgstr "nesne imleyici bozuk: %u" - -#: storage/page/bufpage.c:444 -#: storage/page/bufpage.c:805 -#, c-format -msgid "corrupted item lengths: total %u, available space %u" -msgstr "bozuk öğe uzunluğu: toplam %u, boş alan %u" - -#: storage/page/bufpage.c:642 -#: storage/page/bufpage.c:778 -#, c-format -msgid "corrupted item pointer: offset = %u, size = %u" -msgstr "bozuk öğe göstergisi: offset = %u, size = %u" - -#: storage/large_object/inv_api.c:545 -#: storage/large_object/inv_api.c:736 -#, c-format -msgid "large object %u was not opened for writing" -msgstr "large object %u yazmak için açılamadı" - -#: storage/lmgr/deadlock.c:915 -#, c-format -msgid "Process %d waits for %s on %s; blocked by process %d." -msgstr "Process %d waits for %s on %s; blocked by process %d." - -#: storage/lmgr/deadlock.c:934 -#, fuzzy, c-format -msgid "Process %d: %s" -msgstr "erişim: %s" - -#: storage/lmgr/deadlock.c:941 -msgid "deadlock detected" -msgstr "ÖlüKilit konumu saptandı" - -#: storage/lmgr/deadlock.c:944 -msgid "See server log for query details." -msgstr "Sorgu ayrıntıları için sunucu kayıt dosyasına bakın." - -#: storage/lmgr/lmgr.c:717 -#, c-format -msgid "relation %u of database %u" -msgstr "%2$u veritabanının %1$u nesnesi" - -#: storage/lmgr/lmgr.c:723 -#, c-format -msgid "extension of relation %u of database %u" -msgstr "%u nesnesinin uzantısı %u veritabanına aittir" - -#: storage/lmgr/lmgr.c:729 -#, c-format -msgid "page %u of relation %u of database %u" -msgstr "%u sayfası %u nesnesinindir ve %u veritabanındadır" - -#: storage/lmgr/lmgr.c:736 -#, c-format -msgid "tuple (%u,%u) of relation %u of database %u" -msgstr "(%u,%u) satırı %u nesnesinindir ve %u veritabanındadır" - -#: storage/lmgr/lmgr.c:744 -#, c-format -msgid "transaction %u" -msgstr "transaction %u" - -#: storage/lmgr/lmgr.c:749 -#, c-format -msgid "virtual transaction %d/%u" -msgstr "sanal transaction %d/%u" - -#: storage/lmgr/lmgr.c:755 -#, c-format -msgid "object %u of class %u of database %u" -msgstr "%u nesnesi %u sınıfındandır ve %u veritabanındadır" - -#: storage/lmgr/lmgr.c:763 -#, c-format -msgid "user lock [%u,%u,%u]" -msgstr "user lock [%u,%u,%u]" - -#: storage/lmgr/lmgr.c:770 -#, c-format -msgid "advisory lock [%u,%u,%u,%u]" -msgstr "advisory lock [%u,%u,%u,%u]" - -#: storage/lmgr/lmgr.c:778 -#, c-format -msgid "unrecognized locktag type %d" -msgstr "bilinmeyen locktag tipi %d" - -#: storage/lmgr/lock.c:584 -#: storage/lmgr/lock.c:650 -#: storage/lmgr/lock.c:2340 -#: storage/lmgr/lock.c:2405 -msgid "You might need to increase max_locks_per_transaction." -msgstr "max_locks_per_transaction değerini artırmanız gerekebilir." - -#: storage/lmgr/lock.c:2052 -msgid "Not enough memory for reassigning the prepared transaction's locks." -msgstr "Hazırlanmış transaction'un lock'ları yeniden atanması için yeterli bellek yok." - -#: storage/lmgr/proc.c:275 -#: storage/ipc/procarray.c:151 -#: storage/ipc/sinvaladt.c:293 -#: postmaster/postmaster.c:1725 -msgid "sorry, too many clients already" -msgstr "üzgünüm, istemci sayısı çok fazla" - -#: storage/lmgr/proc.c:966 -#, c-format -msgid "process %d avoided deadlock for %s on %s by rearranging queue order after %ld.%03d ms" -msgstr "%d süreci %s işlemi %s nesnesi için kaynak kilitlenmesini önledi bunun için %ld.%03d milisaniye bekledikten sonra sırada bekleyen işlemler yeniden düzenlendi" - -#: storage/lmgr/proc.c:978 -#, c-format -msgid "process %d detected deadlock while waiting for %s on %s after %ld.%03d ms" -msgstr "%d süreci %s nesnesini %s işlemi için beklerken %ld.%03d milisaniye sonra deadlock tespit etti" - -#: storage/lmgr/proc.c:984 -#, fuzzy, c-format -msgid "process %d still waiting for %s on %s after %ld.%03d ms" -msgstr "Process %d waits for %s on %s; blocked by process %d." - -#: storage/lmgr/proc.c:988 -#, c-format -msgid "process %d acquired %s on %s after %ld.%03d ms" -msgstr "process %d acquired %s on %s after %ld.%03d ms" - -#: storage/lmgr/proc.c:1004 -#, c-format -msgid "process %d failed to acquire %s on %s after %ld.%03d ms" -msgstr "process %d failed to acquire %s on %s after %ld.%03d ms" - -#: storage/ipc/shmem.c:392 -#, c-format -msgid "could not allocate shared memory segment \"%s\"" -msgstr "shared memory segment oluşturulamıyor: \"%s\"" - -#: storage/ipc/shmem.c:420 -#: storage/ipc/shmem.c:439 -msgid "requested shared memory size overflows size_t" -msgstr "istenilen shared memory boyutu size_t tipini aşıyor" - -#: main/main.c:230 -#, c-format -msgid "%s: setsysinfo failed: %s\n" -msgstr "%s: setsysinfo başarısız: %s\n" - -#: main/main.c:249 -#, c-format -msgid "%s: WSAStartup failed: %d\n" -msgstr "%s: WSAStartup başarısız: %d\n" - -#: main/main.c:268 -#, c-format -msgid "" -"%s is the PostgreSQL server.\n" -"\n" -msgstr "" -"%s bir PostgreSQL suncusudur.\n" -"\n" - -#: main/main.c:269 -#, c-format -msgid "" -"Usage:\n" -" %s [OPTION]...\n" -"\n" -msgstr "" -"kullanım:\n" -" %s [OPTION]...\n" -"\n" - -#: main/main.c:270 -#, c-format -msgid "Options:\n" -msgstr "Seçenekler:\n" - -#: main/main.c:272 -#, c-format -msgid " -A 1|0 enable/disable run-time assert checking\n" -msgstr " -A 1|0 run-time assert kontrolü etkinleştir/etkisizleştir\n" - -#: main/main.c:274 -#, c-format -msgid " -B NBUFFERS number of shared buffers\n" -msgstr " -B NBUFFERS shared buffer sayısı\n" - -#: main/main.c:275 -#, c-format -msgid " -c NAME=VALUE set run-time parameter\n" -msgstr " -c NAME=VALUE çalıştırma zamanı parametresini ayarla\n" - -#: main/main.c:276 -#, c-format -msgid " -d 1-5 debugging level\n" -msgstr " -d 1-5 debug düzeyi\n" - -#: main/main.c:277 -#, c-format -msgid " -D DATADIR database directory\n" -msgstr " -D DATADIR veritabanı dizini\n" - -#: main/main.c:278 -#, c-format -msgid " -e use European date input format (DMY)\n" -msgstr " -e tarih veri girişi için avrupa biçimini kullan (DMY)\n" - -#: main/main.c:279 -#, c-format -msgid " -F turn fsync off\n" -msgstr " -F fsync etkisizleştir\n" - -#: main/main.c:280 -#, c-format -msgid " -h HOSTNAME host name or IP address to listen on\n" -msgstr " -h HOSTNAME sadece bu IP adresini dinle\n" - -#: main/main.c:281 -#, c-format -msgid " -i enable TCP/IP connections\n" -msgstr " -i TCP/IP bağlantılarına izin ver\n" - -#: main/main.c:282 -#, c-format -msgid " -k DIRECTORY Unix-domain socket location\n" -msgstr " -k DIRECTORY Unix-domain socket yeri\n" - -#: main/main.c:284 -#, c-format -msgid " -l enable SSL connections\n" -msgstr " -l SSL bağlantıları etkinleştir\n" - -#: main/main.c:286 -#, c-format -msgid " -N MAX-CONNECT maximum number of allowed connections\n" -msgstr " -N MAX-CONNECT izin verilen azami bağlantı sayısı\n" - -#: main/main.c:287 -#, c-format -msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n" -msgstr " -o OPTIONS her sunucu sürecine \"OPTIONS\" parametresini ilet (artık kullanılmamaktadır)\n" - -#: main/main.c:288 -#, c-format -msgid " -p PORT port number to listen on\n" -msgstr " -p PORT dinlenecek port numarası\n" - -#: main/main.c:289 -#, c-format -msgid " -s show statistics after each query\n" -msgstr " -s her sorgudan sonra istatistikleri göster\n" - -#: main/main.c:290 -#, c-format -msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n" -msgstr " -S WORK-MEM alfabetik sıralama işlemi için kullanılacak bellek (kilobayt bazında)\n" - -#: main/main.c:291 -#, c-format -msgid " --NAME=VALUE set run-time parameter\n" -msgstr " --NAME=VALUE çalıştırma zamanı parametresini ayarla\n" - -#: main/main.c:292 -#, c-format -msgid " --describe-config describe configuration parameters, then exit\n" -msgstr " --describe-config ayar parametresini açıklama ve çık\n" - -#: main/main.c:293 -#, c-format -msgid " --help show this help, then exit\n" -msgstr " --help bu yardım ekranını yaz ve çık\n" - -#: main/main.c:294 -#, c-format -msgid " --version output version information, then exit\n" -msgstr " --version sürüm bilgisini yaz ve çık\n" - -#: main/main.c:296 -#, c-format -msgid "" -"\n" -"Developer options:\n" -msgstr "" -"\n" -"Program geliştirici Seçenekleri:\n" - -#: main/main.c:297 -#, c-format -msgid " -f s|i|n|m|h forbid use of some plan types\n" -msgstr " -f s|i|n|m|h bazı plan yöntemlerinin kullanımı yasakla\n" - -#: main/main.c:298 -#, c-format -msgid " -n do not reinitialize shared memory after abnormal exit\n" -msgstr " -n normal olmayan sonladırmadan sonra shared memory yeniden sıfırlamayı engelle\n" - -#: main/main.c:299 -#, c-format -msgid " -O allow system table structure changes\n" -msgstr " -O sistem tabloların yapı değişikliğine izin ver\n" - -#: main/main.c:300 -#, c-format -msgid " -P disable system indexes\n" -msgstr " -P sistem indeksleri etkisizleştir\n" - -#: main/main.c:301 -#, c-format -msgid " -t pa|pl|ex show timings after each query\n" -msgstr " -t pa|pl|ex her sorgudan sonra harcanan zamanı göster\n" - -#: main/main.c:302 -#, c-format -msgid " -T send SIGSTOP to all backend servers if one dies\n" -msgstr " -T biri sonlandırdığında ümü backend süreçlerine SIGSTOP mesajını gönder\n" - -#: main/main.c:303 -#, c-format -msgid " -W NUM wait NUM seconds to allow attach from a debugger\n" -msgstr " -W NUM debuggerin başlanması için NUM daniye bekle\n" - -#: main/main.c:305 -#, c-format -msgid "" -"\n" -"Options for single-user mode:\n" -msgstr "" -"\n" -"Tek kullanıcılı biçimi seçenekleri:\n" - -#: main/main.c:306 -#, c-format -msgid " --single selects single-user mode (must be first argument)\n" -msgstr " --single tek kullanıcılı biçini seçiyor (ilk argüman olmalı)\n" - -#: main/main.c:307 -#, c-format -msgid " DBNAME database name (defaults to user name)\n" -msgstr " DBNAME veritabanı adı (varsayılan, kullanıcı adı)\n" - -#: main/main.c:308 -#, c-format -msgid " -d 0-5 override debugging level\n" -msgstr " -d 0-5 debug düzeyi değiştir\n" - -#: main/main.c:309 -#, c-format -msgid " -E echo statement before execution\n" -msgstr " -E çalıştırmadan sorguyu ekrana yaz\n" - -#: main/main.c:310 -#, c-format -msgid " -j do not use newline as interactive query delimiter\n" -msgstr " -j yeni satı işareti sorgunun sonu olarak algılama\n" - -#: main/main.c:311 -#: main/main.c:316 -#, c-format -msgid " -r FILENAME send stdout and stderr to given file\n" -msgstr " -r FILENAME stdout ve stderr çıktılarını belirtilen dosyaya gönder\n" - -#: main/main.c:313 -#, c-format -msgid "" -"\n" -"Options for bootstrapping mode:\n" -msgstr "" -"\n" -"Bootstrapping biçimi seçenekleri:\n" - -#: main/main.c:314 -#, c-format -msgid " --boot selects bootstrapping mode (must be first argument)\n" -msgstr " --boot bootstrapping biçimini seçiyor (mutlaka ilk argüman olmalı)\n" - -#: main/main.c:315 -#, c-format -msgid " DBNAME database name (mandatory argument in bootstrapping mode)\n" -msgstr " DBNAME veritabanı adı (bootstrapping biçimi için zorunlu argüman)\n" - -#: main/main.c:317 -#, c-format -msgid " -x NUM internal use\n" -msgstr " -x NUM iç kullanım\n" - -#: main/main.c:319 -#, 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" -"Çalıştırma zamanı parametrelerin tam listesi için ve onların komut \n" -"satırı ve ayarlar dosyasında nasıl belirleyeceğinizi tam açıklaması için\n" -"lütfen dokümanlara başvurun.\n" -"\n" -"Hata raporları adresine iletin.\n" - -#: main/main.c:333 -msgid "" -"\"root\" execution of the PostgreSQL server is not permitted.\n" -"The server must be started under an unprivileged user ID to prevent\n" -"possible system security compromise. See the documentation for\n" -"more information on how to properly start the server.\n" -msgstr "" -"PostgreSQL'in, \"root\" kullanıcı olarak çalıştırılmasını tavsiye edilmememktedir.\n" -"Olası güvenilik açığı önlemek için, sunucu, sistem yönetici olmayan\n" -"bir kullanıcı ID ile çalıştırılmalıdır. Sunucunun doğru başlatılması\n" -"konusunda daha fazla bilgi için PostgreSQL dökümanlara bakın.\n" - -#: main/main.c:350 -#, c-format -msgid "%s: real and effective user IDs must match\n" -msgstr "%s: gerçek ve etkin kullanıcı ID'leri birbirine uymalıdır\n" - -#: main/main.c:357 -msgid "" -"Execution of PostgreSQL by a user with administrative permissions is not\n" -"permitted.\n" -"The server must be started under an unprivileged user ID to prevent\n" -"possible system security compromises. See the documentation for\n" -"more information on how to properly start the server.\n" -msgstr "" -"PostgreSQL, sistem yöneticisi haklarına sahip kullanıcısı tarafından çalıştırılamaz.\n" -"Olası güvenilik açığı önlemek için, sunucu, sistem yönetici olmayan bir kullanıcı ID\n" -"ile çalıştırılmalıdır. Sunucunun doğru başlatılması konusunda daha fazla bilgi\n" -"için dökümanlara bakın.\n" - -#: main/main.c:378 -#, c-format -msgid "%s: invalid effective UID: %d\n" -msgstr "%s: aktif UID %d geçersizidir\n" - -#: main/main.c:391 -#, c-format -msgid "%s: could not determine user name (GetUserName failed)\n" -msgstr "%s: kullanıcı adı belirlenemedi (GetUserName başarısız)\n" - -#: optimizer/plan/initsplan.c:571 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer join" -msgstr "SELECT FOR UPDATE/SHARE outer join'in null olabilecek tarafına uygulanamaz" - -#: optimizer/plan/planner.c:843 -#: parser/analyze.c:1187 -#: parser/analyze.c:1379 -#: parser/analyze.c:1936 -msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT" -msgstr "UNION/INTERSECT/EXCEPT içeren sorguda SELECT FOR UPDATE/SHARE kullanılamaz" - -#: optimizer/plan/planner.c:1041 -msgid "could not implement GROUP BY" -msgstr "" - -#: optimizer/plan/planner.c:1042 -#: optimizer/plan/planner.c:1473 -#: optimizer/prep/prepunion.c:768 -msgid "Some of the datatypes only support hashing, while others only support sorting." -msgstr "" - -#: optimizer/plan/planner.c:1472 -msgid "could not implement DISTINCT" -msgstr "" - -#: optimizer/plan/planner.c:2520 -msgid "could not implement window PARTITION BY" -msgstr "" - -#: optimizer/plan/planner.c:2521 -msgid "Window partitioning columns must be of sortable datatypes." -msgstr "" - -#: optimizer/plan/planner.c:2525 -msgid "could not implement window ORDER BY" -msgstr "" - -#: optimizer/plan/planner.c:2526 -msgid "Window ordering columns must be of sortable datatypes." -msgstr "" - -#: optimizer/util/clauses.c:3796 -#, c-format -msgid "SQL function \"%s\" during inlining" -msgstr "satır içine alınma işlemi sırasında \"%s\" SQL fonksiyonu" - -#: optimizer/prep/preptlist.c:132 -msgid "SELECT FOR UPDATE/SHARE is not allowed in subqueries" -msgstr "subquery sorgusunda SELECT FOR UPDATE/SHARE kullanılamaz" - -#: optimizer/prep/prepunion.c:373 -msgid "could not implement recursive UNION" -msgstr "" - -#: optimizer/prep/prepunion.c:374 -msgid "All column datatypes must be hashable." -msgstr "" - -#. translator: %s is UNION, INTERSECT, or EXCEPT -#: optimizer/prep/prepunion.c:767 -#, fuzzy, c-format -msgid "could not implement %s" -msgstr "\"%s\" dosyası açılamıyor: %m" - -#: parser/analyze.c:443 -msgid "INSERT ... SELECT cannot specify INTO" -msgstr "INSERT ... SELECT ifadesinde INTO öğesi kullanılamaz" - -#: parser/analyze.c:545 -#: parser/analyze.c:967 -msgid "VALUES lists must all be the same length" -msgstr "VALUES listesi eşit uzunlukta olmalıdır" - -#: parser/analyze.c:566 -#: parser/analyze.c:1071 -msgid "VALUES must not contain table references" -msgstr "VALUES, tablo başvuruları içeremez" - -#: parser/analyze.c:580 -#: parser/analyze.c:1085 -msgid "VALUES must not contain OLD or NEW references" -msgstr "VALUES kısmında OLD veya NEW başvurular bulunmamalıdır" - -#: parser/analyze.c:581 -#: parser/analyze.c:1086 -msgid "Use SELECT ... UNION ALL ... instead." -msgstr "Onun yerine SELECT ... UNION ALL ... kullanın" - -#: parser/analyze.c:691 -#: parser/analyze.c:1098 -msgid "cannot use aggregate function in VALUES" -msgstr "VALUES kısmında aggregate fonksiyonları kullanılamaz" - -#: parser/analyze.c:697 -#: parser/analyze.c:1104 -msgid "cannot use window function in VALUES" -msgstr "VALUES işleminde window fonksiyonu kullanılamaz" - -#: parser/analyze.c:729 -msgid "INSERT has more expressions than target columns" -msgstr "INSERT, hedef sütun sayısından çok ifade bulundurmaktadır" - -#: parser/analyze.c:737 -msgid "INSERT has more target columns than expressions" -msgstr "INSERT, ifade sayısından çok hedef sütun bulundurmaktadır" - -#: parser/analyze.c:983 -msgid "DEFAULT can only appear in a VALUES list within INSERT" -msgstr "DEFAUL sadece INSERT içinde yer alan VALUES listesinde yer alabilir" - -#: parser/analyze.c:1052 -#: parser/analyze.c:2095 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES" -msgstr "SELECT FOR UPDATE/SHARE ifadesi VALUES kısmına uygulanamaz" - -#: parser/analyze.c:1303 -msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" -msgstr "geçersiz UNION/INTERSECT/EXCEPT ORDER BY ifadesi" - -#: parser/analyze.c:1304 -msgid "Only result column names can be used, not expressions or functions." -msgstr "Sadece sonuç sütun aldarı kullanılabilir, ifade veya fonksiyon kullanılamaz." - -#: parser/analyze.c:1305 -msgid "Add the expression/function to every SELECT, or move the UNION into a FROM clause." -msgstr "Bu ifade/fonksiyonu ger SELECT içine yerleştirin ya da FROM ifadesine UNION ekleyin." - -#: parser/analyze.c:1371 -msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" -msgstr "INTO, sadece UNION/INTERSECT/EXCEPT işleminin ilk SELECT ifadesinde kullanılabilir" - -#: parser/analyze.c:1431 -msgid "UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of same query level" -msgstr "UNION/INTERSECT/EXCEPT öğesinin üye somutu aynı seviyedeki diğer tabloya erişilemez" - -#: parser/analyze.c:1499 -#, c-format -msgid "each %s query must have the same number of columns" -msgstr "her %s sorgusu ayını sütun sayısına sahip olmalıdır" - -#: parser/analyze.c:1619 -msgid "CREATE TABLE AS specifies too many column names" -msgstr "CREATE TABLE AS işleminde belirtilen sütun sayısı çok fazla" - -#: parser/analyze.c:1669 -msgid "cannot use aggregate function in UPDATE" -msgstr "UPDATE parametresinde aggregate fonksiyon kullanılamaz" - -#: parser/analyze.c:1675 -msgid "cannot use window function in UPDATE" -msgstr "UPDATE işleminde window fonksiyonu kullanılamaz" - -#: parser/analyze.c:1782 -msgid "cannot use aggregate function in RETURNING" -msgstr "RETURNING parametresinde aggregate fonksiyon kullanılamaz" - -#: parser/analyze.c:1788 -#, fuzzy -msgid "cannot use window function in RETURNING" -msgstr "RETURNING parametresinde aggregate fonksiyon kullanılamaz" - -#: parser/analyze.c:1807 -msgid "RETURNING cannot contain references to other relations" -msgstr "RETURNING, başka nesnelere başvuru içeremez" - -#: parser/analyze.c:1846 -msgid "cannot specify both SCROLL and NO SCROLL" -msgstr "hem SCROLL hem de NO SCROLL aynı yerde kullanılamaz" - -#: parser/analyze.c:1860 -msgid "DECLARE CURSOR cannot specify INTO" -msgstr "DECLARE CURSOR tanımında INTO kullanılamaz" - -#: parser/analyze.c:1868 -msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported" -msgstr "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE desteklenmiyor" - -#: parser/analyze.c:1869 -msgid "Holdable cursors must be READ ONLY." -msgstr "Holdable imleçler READ ONLY olmalıdır." - -#: parser/analyze.c:1882 -msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported" -msgstr "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE desteklenmiyor" - -#: parser/analyze.c:1883 -msgid "Insensitive cursors must be READ ONLY." -msgstr "Insensitive cursorlar READ ONLY olmalıdır." - -#: parser/analyze.c:1940 -msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause" -msgstr "SELECT FOR UPDATE/SHARE ifadesinde DISTINCT kullanılamaz" - -#: parser/analyze.c:1944 -msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause" -msgstr "SELECT FOR UPDATE/SHARE ifadesinde GROUP BY kullanılamaz" - -#: parser/analyze.c:1948 -msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause" -msgstr "SELECT FOR UPDATE/SHARE ifadesinde HAVING kullanılamaz" - -#: parser/analyze.c:1952 -msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions" -msgstr "aggregate fonskiyonlarinda SELECT FOR UPDATE/SHARE kullanılamaz" - -#: parser/analyze.c:1956 -#, fuzzy -msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions" -msgstr "aggregate fonskiyonlarinda SELECT FOR UPDATE/SHARE kullanılamaz" - -#: parser/analyze.c:2022 -#: parser/analyze.c:2114 -#: rewrite/rewriteHandler.c:1257 -#, fuzzy -msgid "SELECT FOR UPDATE/SHARE cannot be applied to an outer-level WITH query" -msgstr "SELECT FOR UPDATE/SHARE joine uygulanamaz" - -#: parser/analyze.c:2048 -#, fuzzy -msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names" -msgstr "SELECT FOR UPDATE/SHARE joine uygulanamaz" - -#: parser/analyze.c:2077 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join" -msgstr "SELECT FOR UPDATE/SHARE joine uygulanamaz" - -#: parser/analyze.c:2083 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to NEW or OLD" -msgstr "SELECT FOR UPDATE/SHARE, NEW veya OLD tanımlarına uygulanamaz" - -#: parser/analyze.c:2089 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function" -msgstr "SELECT FOR UPDATE/SHARE, bir fonksiyonuna uygulanamaz" - -#: parser/analyze.c:2135 -#, c-format -msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause" -msgstr "FOR UPDATE/SHARE ifadesinde belirtilen \"%s\" tablosu FROM ifadesinde bulunamadı" - -#: parser/analyze.c:2203 -#: parser/parse_coerce.c:283 -#: parser/parse_expr.c:641 -#: parser/parse_expr.c:648 -#, c-format -msgid "there is no parameter $%d" -msgstr "$%d parametresi yoktur" - -#: parser/parse_agg.c:84 -#, fuzzy -msgid "aggregate function calls cannot contain window function calls" -msgstr "aggregate fonksiyon çağırmaları içiçe olamaz" - -#: parser/parse_agg.c:155 -#: parser/parse_clause.c:1546 -#, fuzzy, c-format -msgid "window \"%s\" does not exist" -msgstr "\"%s\" indexi mevcut değil" - -#: parser/parse_agg.c:243 -msgid "aggregates not allowed in WHERE clause" -msgstr "WHERE ifadesinde aggregate kullanılamaz" - -#: parser/parse_agg.c:249 -msgid "aggregates not allowed in JOIN conditions" -msgstr "JOIN ifadesinde aggregate kullanılamaz" - -#: parser/parse_agg.c:270 -msgid "aggregates not allowed in GROUP BY clause" -msgstr "GROUP BY ifadesinde aggregate kullanılamaz" - -#: parser/parse_agg.c:338 -msgid "aggregate functions not allowed in a recursive query's recursive term" -msgstr "" - -#: parser/parse_agg.c:363 -#, fuzzy -msgid "window functions not allowed in WHERE clause" -msgstr "WHERE ifadesinde aggregate kullanılamaz" - -#: parser/parse_agg.c:369 -#, fuzzy -msgid "window functions not allowed in JOIN conditions" -msgstr "JOIN ifadesinde aggregate kullanılamaz" - -#: parser/parse_agg.c:375 -#, fuzzy -msgid "window functions not allowed in HAVING clause" -msgstr "WHERE ifadesinde aggregate kullanılamaz" - -#: parser/parse_agg.c:388 -#, fuzzy -msgid "window functions not allowed in GROUP BY clause" -msgstr "GROUP BY ifadesinde aggregate kullanılamaz" - -#: parser/parse_agg.c:407 -#: parser/parse_agg.c:420 -#, fuzzy -msgid "window functions not allowed in window definition" -msgstr "%s, bir SQL fonksiyonunda yer alamaz" - -#: parser/parse_agg.c:541 -#, c-format -msgid "column \"%s.%s\" must appear in the GROUP BY clause or be used in an aggregate function" -msgstr "aggregate fonksiyonu kullanmak için \"%s.%s\" sütununu GROUP BY listesine eklemelisiniz" - -#: parser/parse_agg.c:547 -#, c-format -msgid "subquery uses ungrouped column \"%s.%s\" from outer query" -msgstr "subquery, dış sorgusundan \"%s.%s\" gruplandırılanmamış sütunu kullanıyor" - -#: parser/parse_clause.c:414 -#, c-format -msgid "JOIN/ON clause refers to \"%s\", which is not part of JOIN" -msgstr "JOIN/ON ifadesi, JOIN parçası olmayan \"%s\" öğesine referans etmektedir" - -#: parser/parse_clause.c:494 -msgid "subquery in FROM cannot have SELECT INTO" -msgstr "FROM ifadesindeki subquery içerisinde SELECT INTO kullanılamaz" - -#: parser/parse_clause.c:516 -msgid "subquery in FROM cannot refer to other relations of same query level" -msgstr "FROM öğesinde subquery ifadesi aynı seviyedeki diğer tabloya erişemez" - -#: parser/parse_clause.c:567 -msgid "function expression in FROM cannot refer to other relations of same query level" -msgstr "FROM öğesinde fonksiyon ifadesi aynı seviyedeki diğer tabloya erişemez" - -#: parser/parse_clause.c:580 -msgid "cannot use aggregate function in function expression in FROM" -msgstr "FROM ifadesinin fonksiyon ifadesinde aggregate fonksiyonu kullanılamaz" - -#: parser/parse_clause.c:587 -#, fuzzy -msgid "cannot use window function in function expression in FROM" -msgstr "FROM ifadesinin fonksiyon ifadesinde aggregate fonksiyonu kullanılamaz" - -#: parser/parse_clause.c:863 -#, c-format -msgid "column name \"%s\" appears more than once in USING clause" -msgstr "USING ifadesinde \"%s\" sütun adı birden fazla kez rastlanıyor" - -#: parser/parse_clause.c:878 -#, c-format -msgid "common column name \"%s\" appears more than once in left table" -msgstr "sol tablosunda \"%s\" sütun adı birden fazla kez rastlanıyor" - -#: parser/parse_clause.c:887 -#, c-format -msgid "column \"%s\" specified in USING clause does not exist in left table" -msgstr "USING ifadesinde belirtilen \"%s\" sütunu sol tablosunda bulunmamaktadır" - -#: parser/parse_clause.c:901 -#, c-format -msgid "common column name \"%s\" appears more than once in right table" -msgstr "\"%s\" sütun adı sağ tavblosunda birden fazla kez rastlanmaktadır" - -#: parser/parse_clause.c:910 -#, c-format -msgid "column \"%s\" specified in USING clause does not exist in right table" -msgstr "USING ifadesinde kullaınılan \"%s\" sütunu sağ tablosunda mevcut değildir" - -#: parser/parse_clause.c:967 -#, c-format -msgid "column alias list for \"%s\" has too many entries" -msgstr "\"%s\" için sütun alias listesinde gereğinden fazla öğe var" - -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1186 -#, c-format -msgid "argument of %s must not contain variables" -msgstr "%s ifadesinin argüanı değişken bulundurmamalıdır" - -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1197 -#, fuzzy, c-format -msgid "argument of %s must not contain aggregate functions" -msgstr "%s ifadesinin argüanı aggregate bulundurmamalıdır" - -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1208 -#, fuzzy, c-format -msgid "argument of %s must not contain window functions" -msgstr "%s ifadesinin argüanı değişlen bulundurmamalıdır" - -#. translator: first %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1322 -#, c-format -msgid "%s \"%s\" is ambiguous" -msgstr "%s \"%s\" iki anlamlıdır" - -#. translator: %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1346 -#, c-format -msgid "non-integer constant in %s" -msgstr "%s içinde tamsayı olamayan bir sabit" - -#. translator: %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1364 -#, c-format -msgid "%s position %d is not in select list" -msgstr "%s ifadesi, %d terinde select listesinde değildir" - -#: parser/parse_clause.c:1534 -#, fuzzy, c-format -msgid "window \"%s\" is already defined" -msgstr "\"%s\" zanten bir view'dur" - -#: parser/parse_clause.c:1587 -#, c-format -msgid "cannot override PARTITION BY clause of window \"%s\"" -msgstr "" - -#: parser/parse_clause.c:1599 -#, c-format -msgid "cannot override ORDER BY clause of window \"%s\"" -msgstr "" - -#: parser/parse_clause.c:1621 -#, fuzzy, c-format -msgid "cannot override frame clause of window \"%s\"" -msgstr "\"%s\" sistem sütununun adı değiştirilemez" - -#: parser/parse_clause.c:1677 -msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list" -msgstr "SELECT DISTINCE sorgusunda ORDER BY select listesinde bulunmalıdır" - -#: parser/parse_clause.c:1763 -#: parser/parse_clause.c:1795 -msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions" -msgstr "SELECT DISTINCT ON ifadesi, ORDER BY ifadelerine uymak zorundadır" - -#: parser/parse_clause.c:1914 -#, c-format -msgid "operator %s is not a valid ordering operator" -msgstr "%s geçerli bir sıralama operatör adı değildir" - -#: parser/parse_clause.c:1916 -msgid "Ordering operators must be \"<\" or \">\" members of btree operator families." -msgstr "Ordering operators must be \"<\" or \">\" members of btree operator families." - -#: parser/parse_coerce.c:300 -#: parser/parse_expr.c:1870 -#, c-format -msgid "inconsistent types deduced for parameter $%d" -msgstr "$%d parametresi için geçersiz tip bulundu" - -#: parser/parse_coerce.c:891 -#: parser/parse_coerce.c:920 -#: parser/parse_coerce.c:938 -#: parser/parse_coerce.c:953 -#: parser/parse_expr.c:1522 -#: parser/parse_expr.c:2025 -#, c-format -msgid "cannot cast type %s to %s" -msgstr "%s tipi %s tipine dökülemiyor" - -#: parser/parse_coerce.c:923 -msgid "Input has too few columns." -msgstr "Girişte sütun sayısı azdır." - -#: parser/parse_coerce.c:941 -#, c-format -msgid "Cannot cast type %s to %s in column %d." -msgstr "%3$d sütununda %1$s tipi %2$s tipine dökülemiyor." - -#: parser/parse_coerce.c:956 -msgid "Input has too many columns." -msgstr "Giriş çok fazla sütun içeriyor." - -#. translator: first %s is name of a SQL construct, eg WHERE -#: parser/parse_coerce.c:999 -#, c-format -msgid "argument of %s must be type boolean, not type %s" -msgstr "%s'ın argümanları %s değil, boolean tipinde olamalıdır" - -#. translator: %s is name of a SQL construct, eg WHERE -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_coerce.c:1009 -#: parser/parse_coerce.c:1058 -#, c-format -msgid "argument of %s must not return a set" -msgstr "%s'ın argümanları set veri tipini döndüremez" - -#. translator: first %s is name of a SQL construct, eg LIMIT -#: parser/parse_coerce.c:1046 -#, c-format -msgid "argument of %s must be type %s, not type %s" -msgstr "%s'ın argümanı %s değil, %s tipinde olamalıdır" - -#. translator: first %s is name of a SQL construct, eg CASE -#: parser/parse_coerce.c:1179 -#, c-format -msgid "%s types %s and %s cannot be matched" -msgstr "%s tipleri %s ve %s bir araya gelemez" - -#. translator: first %s is name of a SQL construct, eg CASE -#: parser/parse_coerce.c:1246 -#, c-format -msgid "%s could not convert type %s to %s" -msgstr "%s %s tipi %s tipime dönüştürülemiyor" - -#: parser/parse_coerce.c:1487 -msgid "arguments declared \"anyelement\" are not all alike" -msgstr "\"anyelement\" olarak tanımlanan argümanlar birbirine benzemiyor" - -#: parser/parse_coerce.c:1506 -msgid "arguments declared \"anyarray\" are not all alike" -msgstr "\"anyarray\" olarak tanımlanan argümanlar birbirine benzemiyor" - -#: parser/parse_coerce.c:1535 -#: parser/parse_coerce.c:1679 -#: parser/parse_coerce.c:1710 -#, c-format -msgid "argument declared \"anyarray\" is not an array but type %s" -msgstr "\"anyarray\" olarak tanımlanmış argüman bir dizin değil, %s tipidir" - -#: parser/parse_coerce.c:1551 -msgid "argument declared \"anyarray\" is not consistent with argument declared \"anyelement\"" -msgstr "\"anyarray\" olarak tanımlanmış parametre \"anyelement\" olarak tanımlanmış parametresiyle tutarlı değildir" - -#: parser/parse_coerce.c:1569 -msgid "could not determine polymorphic type because input has type \"unknown\"" -msgstr "giriş, \"unknown\" tipinde olduğu için polymorphic tipi belirlenemedi" - -#: parser/parse_coerce.c:1579 -#, fuzzy, c-format -msgid "type matched to anynonarray is an array type: %s" -msgstr "enyenum ile eşleştirilen tip bir enum tipi değildir: %s" - -#: parser/parse_coerce.c:1589 -#, c-format -msgid "type matched to anyenum is not an enum type: %s" -msgstr "enyenum ile eşleştirilen tip bir enum tipi değildir: %s" - -#: parser/parse_coerce.c:1618 -#: parser/parse_coerce.c:1635 -#: parser/parse_coerce.c:1693 -#: parser/parse_expr.c:1488 -#: parser/parse_func.c:304 -#: parser/parse_oper.c:991 -#: nodes/nodeFuncs.c:107 -#: nodes/nodeFuncs.c:133 -#, c-format -msgid "could not find array type for data type %s" -msgstr "%s pipi için array tipi bulunamıyor" - -#: parser/parse_cte.c:40 -#, c-format -msgid "recursive reference to query \"%s\" must not appear within its non-recursive term" -msgstr "" - -#: parser/parse_cte.c:42 -#, c-format -msgid "recursive reference to query \"%s\" must not appear within a subquery" -msgstr "" - -#: parser/parse_cte.c:44 -#, c-format -msgid "recursive reference to query \"%s\" must not appear within an outer join" -msgstr "" - -#: parser/parse_cte.c:46 -#, c-format -msgid "recursive reference to query \"%s\" must not appear within INTERSECT" -msgstr "" - -#: parser/parse_cte.c:48 -#, c-format -msgid "recursive reference to query \"%s\" must not appear within EXCEPT" -msgstr "" - -#: parser/parse_cte.c:133 -#, fuzzy, c-format -msgid "WITH query name \"%s\" specified more than once" -msgstr "\"%s\" tablo adı birden fazla kez belirtilmiştir" - -#: parser/parse_cte.c:269 -#, fuzzy -msgid "subquery in WITH cannot have SELECT INTO" -msgstr "FROM ifadesindeki subquery içerisinde SELECT INTO kullanılamaz" - -#: parser/parse_cte.c:310 -#, c-format -msgid "recursive query \"%s\" column %d has type %s in non-recursive term but type %s overall" -msgstr "" - -#: parser/parse_cte.c:316 -msgid "Cast the output of the non-recursive term to the correct type." -msgstr "" - -#: parser/parse_cte.c:386 -#, fuzzy, c-format -msgid "WITH query \"%s\" has %d columns available but %d columns specified" -msgstr "\"%s\" tablosuna %d sütun bulunmakta ancak sorguda %d sütun belirtilmiş" - -#: parser/parse_cte.c:566 -#, fuzzy -msgid "mutual recursion between WITH items is not implemented" -msgstr "NEW için rule eylemleri implement edilmemiş" - -#: parser/parse_cte.c:618 -#, c-format -msgid "recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] recursive-term" -msgstr "" - -#: parser/parse_cte.c:650 -#, fuzzy -msgid "ORDER BY in a recursive query is not implemented" -msgstr "view üzerinde WHERE CURRENT OF implement edilmemiştir" - -#: parser/parse_cte.c:656 -#, fuzzy -msgid "OFFSET in a recursive query is not implemented" -msgstr "view üzerinde WHERE CURRENT OF implement edilmemiştir" - -#: parser/parse_cte.c:662 -#, fuzzy -msgid "LIMIT in a recursive query is not implemented" -msgstr "anonymous composite veri girişi implemente edilmemiş" - -#: parser/parse_cte.c:668 -#, fuzzy -msgid "FOR UPDATE/SHARE in a recursive query is not implemented" -msgstr "view üzerinde WHERE CURRENT OF implement edilmemiştir" - -#: parser/parse_cte.c:730 -#, fuzzy, c-format -msgid "recursive reference to query \"%s\" must not appear more than once" -msgstr "%d (%s, %s) yordam numarasına birden fazla kez rastlanıyor" - -#: parser/parse_expr.c:343 -#: parser/parse_target.c:596 -#, fuzzy -msgid "row expansion via \"*\" is not supported here" -msgstr "\"E\" desteklenmiyor" - -#: parser/parse_expr.c:891 -msgid "NULLIF requires = operator to yield boolean" -msgstr "boolean değerini almak için NULLIF, = işlemini kullanmalıdır" - -#: parser/parse_expr.c:1064 -msgid "arguments of row IN must all be row expressions" -msgstr "IN satırında argümanlar birer satır ifadesi olmalıdır" - -#: parser/parse_expr.c:1267 -#, fuzzy -msgid "subquery cannot have SELECT INTO" -msgstr "FROM ifadesindeki subquery içerisinde SELECT INTO kullanılamaz" - -#: parser/parse_expr.c:1295 -msgid "subquery must return a column" -msgstr "subquery, sütün döndürmeli" - -#: parser/parse_expr.c:1302 -msgid "subquery must return only one column" -msgstr "subquery, bir tane sütun getirmelidir" - -#: parser/parse_expr.c:1361 -msgid "subquery has too many columns" -msgstr "subquery çok fazla sütuna sahip" - -#: parser/parse_expr.c:1366 -msgid "subquery has too few columns" -msgstr "subquery'de yetersiz sütun sayısı" - -#: parser/parse_expr.c:1462 -#, fuzzy -msgid "cannot determine type of empty array" -msgstr "sonuç veri tipi belirlenemiyor" - -#: parser/parse_expr.c:1463 -msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]." -msgstr "" - -#: parser/parse_expr.c:1477 -#, fuzzy, c-format -msgid "could not find element type for data type %s" -msgstr "%s pipi için array tipi bulunamıyor" - -#: parser/parse_expr.c:1675 -msgid "unnamed XML attribute value must be a column reference" -msgstr "isimsiz XML attribute değeri bir sütun referansı olmalıdır" - -#: parser/parse_expr.c:1676 -msgid "unnamed XML element value must be a column reference" -msgstr "isimsiz XML öğesi bir sütun referansı olmalıdır" - -#: parser/parse_expr.c:1691 -#, c-format -msgid "XML attribute name \"%s\" appears more than once" -msgstr "\"%s\" XML attrıbute adı birden fazla kez belirtilmiştir" - -#: parser/parse_expr.c:1798 -#, fuzzy, c-format -msgid "cannot cast XMLSERIALIZE result to %s" -msgstr "%s tipi %s tipine dökülemiyor" - -#: parser/parse_expr.c:2066 -#: parser/parse_expr.c:2264 -msgid "unequal number of entries in row expressions" -msgstr "satır ifadelerınde farklı öğe sayısı" - -#: parser/parse_expr.c:2076 -msgid "cannot compare rows of zero length" -msgstr "sıfır uzunluklu satırlar karşılaştırılamaz" - -#: parser/parse_expr.c:2101 -#, c-format -msgid "row comparison operator must yield type boolean, not type %s" -msgstr "satır karşılaştırma operatörü %s tipini değil, boolean tipini döndürmelidir" - -#: parser/parse_expr.c:2108 -msgid "row comparison operator must not return a set" -msgstr "satır karşılaştırma operatörü set döndürmemelidir" - -#: parser/parse_expr.c:2167 -#: parser/parse_expr.c:2211 -#, c-format -msgid "could not determine interpretation of row comparison operator %s" -msgstr "%s satır karşılaştırma operatörünün youmlaması tespit edilemedi" - -#: parser/parse_expr.c:2169 -msgid "Row comparison operators must be associated with btree operator families." -msgstr "Satır karşılaştırma operatörleri btree sınıf operatörleri ile ilişilmelidir" - -#: parser/parse_expr.c:2213 -msgid "There are multiple equally-plausible candidates." -msgstr "Birden fazla uygun aday vardır." - -#: parser/parse_expr.c:2304 -msgid "IS DISTINCT FROM requires = operator to yield boolean" -msgstr "boolean değerini almak için IS DISTINCT FROM, = işlemini kullanmalıdır" - -#: parser/parse_func.c:187 -#, c-format -msgid "%s(*) specified, but %s is not an aggregate function" -msgstr "%s(*) belirtilmiş, ancak %s bir aggregate fonksiyonu değildir" - -#: parser/parse_func.c:194 -#, c-format -msgid "DISTINCT specified, but %s is not an aggregate function" -msgstr "DISTINCT belirtilmiş, ancak %s bir aggregate fonksiyonu değildir" - -#: parser/parse_func.c:200 -#, fuzzy, c-format -msgid "OVER specified, but %s is not a window function nor an aggregate function" -msgstr "%s(*) belirtilmiş, ancak %s bir aggregate fonksiyonu değildir" - -#: parser/parse_func.c:227 -#, c-format -msgid "function %s is not unique" -msgstr "%s fonksiyonu benzersiz değildir" - -#: parser/parse_func.c:230 -msgid "Could not choose a best candidate function. You might need to add explicit type casts." -msgstr "En iyi aday fonksiyon seçilememiş. Explicit type cast eklemeniz gerekebilir." - -#: parser/parse_func.c:239 -msgid "No function matches the given name and argument types. You might need to add explicit type casts." -msgstr "Verilmiş ad ve argüman tiplerine uyan fonksiyon bulunamamış. Explicit type cast eklemeniz gerekebilir." - -#: parser/parse_func.c:346 -#: parser/parse_func.c:399 -#, c-format -msgid "%s(*) must be used to call a parameterless aggregate function" -msgstr "%s(*) olmadan parametre olmayan aggregate çağırılamaz" - -#: parser/parse_func.c:353 -msgid "aggregates cannot return sets" -msgstr "aggregate set söndüremez" - -#: parser/parse_func.c:372 -msgid "window function call requires an OVER clause" -msgstr "" - -#: parser/parse_func.c:389 -#, fuzzy -msgid "DISTINCT is not implemented for window functions" -msgstr "SSPI bu sunucuda desteklenmemektedir" - -#: parser/parse_func.c:406 -#, fuzzy -msgid "window functions cannot return sets" -msgstr "SQL fonksiyonları %s tipini dündüremezler" - -#: parser/parse_func.c:1190 -#, c-format -msgid "column %s.%s does not exist" -msgstr "%s.%s sütunu mevcut değil" - -#: parser/parse_func.c:1202 -#, c-format -msgid "column \"%s\" not found in data type %s" -msgstr "%2$s veri tipinde \"%1$s\" sütunu bulunamadı" - -#: parser/parse_func.c:1208 -#, c-format -msgid "could not identify column \"%s\" in record data type" -msgstr "record veri tipinde \"%s\" sütunu bulunamamış" - -#: parser/parse_func.c:1214 -#, c-format -msgid "column notation .%s applied to type %s, which is not a composite type" -msgstr ".%s sütün tanım biçimi %s tipine uygulanmış; bu tip, bir composite tipi değildir" - -#: parser/parse_func.c:1398 -#, c-format -msgid "aggregate %s(*) does not exist" -msgstr "aggregate %s(*) mevcut değil" - -#: parser/parse_func.c:1403 -#, c-format -msgid "aggregate %s does not exist" -msgstr "aggregate %s mevcut değil" - -#: parser/parse_func.c:1424 -#, c-format -msgid "function %s is not an aggregate" -msgstr "%s fonksiyonu bir aggregate değildir" - -#: parser/parse_node.c:77 -#, c-format -msgid "target lists can have at most %d entries" -msgstr "hedef listesi en fazla %d kayıt içerebilir" - -#: parser/parse_node.c:219 -#, c-format -msgid "cannot subscript type %s because it is not an array" -msgstr "%s tipi bir array olmadığı için ona subscript yapılamaz " - -#: parser/parse_node.c:313 -#: parser/parse_node.c:339 -msgid "array subscript must have type integer" -msgstr "array subscript tamsyı tipinde olmalıdır" - -#: parser/parse_node.c:363 -#, c-format -msgid "array assignment requires type %s but expression is of type %s" -msgstr "array ataması %s tipini gerektirmektedir ancak ifade %s tipindedir" - -#: parser/parse_oper.c:253 -#, c-format -msgid "could not identify an ordering operator for type %s" -msgstr "%s tipi için sırama işlemi bulunamadı" - -#: parser/parse_oper.c:255 -msgid "Use an explicit ordering operator or modify the query." -msgstr "Sıralama işlemini açıkça belirtin veya sorguda değişiklik yapın" - -#: parser/parse_oper.c:512 -#, c-format -msgid "operator requires run-time type coercion: %s" -msgstr "işlem, çalışma zamanı tip zola değiştirmeyi gerektiriri: %s" - -#: parser/parse_oper.c:754 -#, c-format -msgid "operator is not unique: %s" -msgstr "operator eşsiz değildir: %s" - -#: parser/parse_oper.c:756 -msgid "Could not choose a best candidate operator. You might need to add explicit type casts." -msgstr "En iyi aday işlem seçilememiş. Explicit type cast eklemeniz gerekebilir." - -#: parser/parse_oper.c:764 -msgid "No operator matches the given name and argument type(s). You might need to add explicit type casts." -msgstr "Verilen ad ve argüman tiplerine uyan işlem bulunamadı. Explicit type cast eklemeniz gerekebilir." - -#: parser/parse_oper.c:823 -#: parser/parse_oper.c:936 -#, fuzzy, c-format -msgid "operator is only a shell: %s" -msgstr "%s tipi sadece bir shell" - -#: parser/parse_oper.c:924 -msgid "op ANY/ALL (array) requires array on right side" -msgstr "op ANY/ALL (array) sağ tarafta bir array gerektiri" - -#: parser/parse_oper.c:966 -msgid "op ANY/ALL (array) requires operator to yield boolean" -msgstr "op ANY/ALL (array) operatorun boolean tipinde değer getirilmesi gerekir" - -#: parser/parse_oper.c:971 -msgid "op ANY/ALL (array) requires operator not to return a set" -msgstr "op ANY/ALL (array) operatorun set tipinde değer getirilmesi gerekir" - -#: parser/parse_relation.c:142 -#, c-format -msgid "table reference \"%s\" is ambiguous" -msgstr "\"%s\" tablo referanslı iki anlamlı" - -#: parser/parse_relation.c:178 -#, c-format -msgid "table reference %u is ambiguous" -msgstr "%u tablo referanslı iki anlamlı" - -#: parser/parse_relation.c:338 -#, c-format -msgid "table name \"%s\" specified more than once" -msgstr "\"%s\" tablo adı birden fazla kez belirtilmiştir" - -#: parser/parse_relation.c:473 -#: parser/parse_relation.c:547 -#, c-format -msgid "column reference \"%s\" is ambiguous" -msgstr "\"%s\" sütun referansı iki anlamlı" - -#: parser/parse_relation.c:783 -#: parser/parse_relation.c:1072 -#: parser/parse_relation.c:1432 -#, c-format -msgid "table \"%s\" has %d columns available but %d columns specified" -msgstr "\"%s\" tablosuna %d sütun bulunmakta ancak sorguda %d sütun belirtilmiş" - -#: parser/parse_relation.c:813 -#, c-format -msgid "too many column aliases specified for function %s" -msgstr "%s fonksiyonu için çok fazla sütun alias belirtilmiş" - -#: parser/parse_relation.c:879 -#, fuzzy, c-format -msgid "There is a WITH item named \"%s\", but it cannot be referenced from this part of the query." -msgstr "\"%s\" tablosu için kayıt var ama sorgunun bu kısmaından bu tablo erişilemez." - -#: parser/parse_relation.c:881 -msgid "Use WITH RECURSIVE, or re-order the WITH items to remove forward references." -msgstr "" - -#: parser/parse_relation.c:1151 -msgid "a column definition list is only allowed for functions returning \"record\"" -msgstr "sütun tanım listesi, sadece \"record\" veri tipini döndüren fonksiyonlarda kullanılır" - -#: parser/parse_relation.c:1159 -msgid "a column definition list is required for functions returning \"record\"" -msgstr "sütun tanım listesi,\"record\" veri tipini döndüren fonksiyonlarda kullanılmalıdır" - -#: parser/parse_relation.c:1206 -#, c-format -msgid "function \"%s\" in FROM has unsupported return type %s" -msgstr "FROM ifadesinde kullanılan \"%s\" fonksiyonu %s desteklenmeyen döndürme tipini kullanıyor" - -#: parser/parse_relation.c:1278 -#, c-format -msgid "VALUES lists \"%s\" have %d columns available but %d columns specified" -msgstr "\"%s\" VALUES lıstesinde %d sütun varken %d sütun belirtilmiştir" - -#: parser/parse_relation.c:1334 -#, fuzzy, c-format -msgid "joins can have at most %d columns" -msgstr "bir tablo en fazla %d sütun içerebilir" - -#: parser/parse_relation.c:2098 -#, c-format -msgid "column %d of relation \"%s\" does not exist" -msgstr "\"%2$s\" tablosunun %1$d kolonu mevcut değil" - -#: parser/parse_relation.c:2460 -#, c-format -msgid "invalid reference to FROM-clause entry for table \"%s\"" -msgstr "FROM öğesinde \"%s\" tablo öğesine geçersiz başvuru" - -#: parser/parse_relation.c:2463 -#: parser/parse_relation.c:2483 -#, c-format -msgid "Perhaps you meant to reference the table alias \"%s\"." -msgstr "Belki tablonun arma adını \"%s\" kullanmak istediniz" - -#: parser/parse_relation.c:2465 -#: parser/parse_relation.c:2486 -#, c-format -msgid "There is an entry for table \"%s\", but it cannot be referenced from this part of the query." -msgstr "\"%s\" tablosu için kayıt var ama sorgunun bu kısmaından bu tablo erişilemez." - -#: parser/parse_relation.c:2471 -#, c-format -msgid "missing FROM-clause entry for table \"%s\"" -msgstr "\"%s\" tablo öğesinde FROM öğesi eksik" - -#: parser/parse_relation.c:2480 -#, c-format -msgid "adding missing FROM-clause entry for table \"%s\"" -msgstr "\"%s\" tablo öğesinde eksik FROM öğesi ekleniyor" - -#: parser/parse_target.c:369 -#: parser/parse_target.c:657 -#, c-format -msgid "cannot assign to system column \"%s\"" -msgstr "\"%s\" sistem sütununa veri atanamıyor" - -#: parser/parse_target.c:394 -msgid "cannot set an array element to DEFAULT" -msgstr "array öğesine DEFAULT değeri atanamıyor" - -#: parser/parse_target.c:399 -msgid "cannot set a subfield to DEFAULT" -msgstr "subfield, DEFAULT değeri alamaz" - -#: parser/parse_target.c:466 -#, c-format -msgid "column \"%s\" is of type %s but expression is of type %s" -msgstr "\"%s\" sütunu %s tipinde ancak ifade %s tipindedir" - -#: parser/parse_target.c:641 -#, c-format -msgid "cannot assign to field \"%s\" of column \"%s\" because its type %s is not a composite type" -msgstr "%3$s composite tipi olmadığı için \"%2$s\" sütununun \"%1$s\" alanına atama başarısız" - -#: parser/parse_target.c:650 -#, c-format -msgid "cannot assign to field \"%s\" of column \"%s\" because there is no such column in data type %s" -msgstr "%3$s veri tipi olmadığı için \"%2$s\" sütununun \"%1$s\" alanına atama başarısız" - -#: parser/parse_target.c:725 -#, c-format -msgid "array assignment to \"%s\" requires type %s but expression is of type %s" -msgstr "\"%s\" alanına atama işlemi %s veri tipini gerektirmektedir ancak %s veri tipi alınmış" - -#: parser/parse_target.c:735 -#, c-format -msgid "subfield \"%s\" is of type %s but expression is of type %s" -msgstr "\"%s\" subfield %s tipinde ancak ifade %s tipindedir" - -#: parser/parse_target.c:991 -msgid "SELECT * with no tables specified is not valid" -msgstr "SELECT *, tablo tanımı olmadan geçersizdir" - -#: parser/parse_type.c:83 -#, c-format -msgid "improper %%TYPE reference (too few dotted names): %s" -msgstr "geçersiz %%TYPE başvurusu (çok az noktalı isim): %s" - -#: parser/parse_type.c:105 -#, c-format -msgid "improper %%TYPE reference (too many dotted names): %s" -msgstr "geçersiz %%TYPE başvurusu (çok fazla noktalı isim): %s" - -#: parser/parse_type.c:127 -#, c-format -msgid "type reference %s converted to %s" -msgstr "type reference %s'dan %s'a çevirilmiş" - -#: parser/parse_type.c:273 -#, c-format -msgid "type modifier is not allowed for type \"%s\"" -msgstr "\"%s\" veri tipi için tip niteliyicisi kullanılamaz" - -#: parser/parse_type.c:316 -#, fuzzy -msgid "type modifiers must be simple constants or identifiers" -msgstr "tip belirteçleri birer tamsayı sabiti olmalıdır" - -#: parser/parse_type.c:555 -#: parser/parse_type.c:654 -#, c-format -msgid "invalid type name \"%s\"" -msgstr "tip adı \"%s\" geçersiz" - -#: parser/parse_utilcmd.c:297 -#, fuzzy -msgid "array of serial is not implemented" -msgstr "UNIQUE predicate implemente edilmemiştir" - -#: parser/parse_utilcmd.c:339 -#, c-format -msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\"" -msgstr "%s, \"%s.%s\" serial sütunu için \"%s\" örtülü sequence oluşturacaktır" - -#: parser/parse_utilcmd.c:441 -#: parser/parse_utilcmd.c:451 -#, c-format -msgid "conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\"" -msgstr "\"%2$s\" tablosunda \"%1$s\" sütunu için çelişen NULL/NOT NULL tanımları" - -#: parser/parse_utilcmd.c:461 -#, c-format -msgid "multiple default values specified for column \"%s\" of table \"%s\"" -msgstr "\"%2$s\" tablosunun \"%1$s\" sütunu için birden fazla varsayılan değer verilmiştir" - -#: parser/parse_utilcmd.c:1212 -#, c-format -msgid "column \"%s\" appears twice in primary key constraint" -msgstr "\"%s\" sütunu primary key kısıtlamasında iki rastlanıyor" - -#: parser/parse_utilcmd.c:1217 -#, c-format -msgid "column \"%s\" appears twice in unique constraint" -msgstr "\"%s\" sütunu unique kısıtlamasında iki kez rastlanıyor" - -#: parser/parse_utilcmd.c:1364 -msgid "index expression cannot return a set" -msgstr "index ifadesi set tipi döndüremez" - -#: parser/parse_utilcmd.c:1374 -msgid "index expressions and predicates can refer only to the table being indexed" -msgstr "index ifade ve yüklemler sadece indexlenen tabloyu referans edebilirler" - -#: parser/parse_utilcmd.c:1469 -msgid "rule WHERE condition cannot contain references to other relations" -msgstr "rule tanımının WHERE öğesinde başka tablolara referans içermemelidir" - -#: parser/parse_utilcmd.c:1475 -msgid "cannot use aggregate function in rule WHERE condition" -msgstr "WHERE şart ifadelerinde aggregate function kullanılamaz" - -#: parser/parse_utilcmd.c:1479 -#, fuzzy -msgid "cannot use window function in rule WHERE condition" -msgstr "WHERE şart ifadelerinde aggregate function kullanılamaz" - -#: parser/parse_utilcmd.c:1551 -msgid "rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE actions" -msgstr "rule tanımının WHERE öğesinde sadece SELECT, INSERT, UPDATE veya DELETE işlemi bulunabilir" - -#: parser/parse_utilcmd.c:1569 -#: parser/parse_utilcmd.c:1639 -#: rewrite/rewriteManip.c:1024 -#: rewrite/rewriteHandler.c:424 -msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" -msgstr "conditional UNION/INTERSECT/EXCEPT komutları empemente edilmemiş" - -#: parser/parse_utilcmd.c:1587 -msgid "ON SELECT rule cannot use OLD" -msgstr "ON SELECT rule OLD tanımını kullanamaz" - -#: parser/parse_utilcmd.c:1591 -msgid "ON SELECT rule cannot use NEW" -msgstr "ON SELECT rule NEW tanımını kullanamaz" - -#: parser/parse_utilcmd.c:1600 -msgid "ON INSERT rule cannot use OLD" -msgstr "ON INSERT rule OLD tanımını kullanamaz" - -#: parser/parse_utilcmd.c:1606 -msgid "ON DELETE rule cannot use NEW" -msgstr "ON DELETE rule NEW tanımını kullanamaz" - -#: parser/parse_utilcmd.c:1889 -msgid "misplaced DEFERRABLE clause" -msgstr "DEFERRABLE ifadesi burada kullanılamaz" - -#: parser/parse_utilcmd.c:1893 -#: parser/parse_utilcmd.c:1906 -msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" -msgstr "birden fazla DEFERRABLE/NOT DEFERRABLE tanımına izin verilmez" - -#: parser/parse_utilcmd.c:1902 -msgid "misplaced NOT DEFERRABLE clause" -msgstr "NOT DEFERRABLE yanlış yerde kullanılmış" - -#: parser/parse_utilcmd.c:1913 -#: parser/parse_utilcmd.c:1936 -#: gram.y:3246 -#: gram.y:3262 -msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" -msgstr "INITIALLY DEFERRED olarak tanımlanan kısıtlayıcı DEFERRABLE özelliğine sahip olmalıdır" - -#: parser/parse_utilcmd.c:1920 -msgid "misplaced INITIALLY DEFERRED clause" -msgstr "INITIALLY DEFERRED yanlış yerde kullanılmış" - -#: parser/parse_utilcmd.c:1924 -#: parser/parse_utilcmd.c:1947 -msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" -msgstr "birden fazla INITIALLY IMMEDIATE/DEFERRED kullanılamaz" - -#: parser/parse_utilcmd.c:1943 -msgid "misplaced INITIALLY IMMEDIATE clause" -msgstr "INITIALLY IMMEDIATE yanlış yerde kullanılmış" - -#: parser/parse_utilcmd.c:2114 -#, c-format -msgid "CREATE specifies a schema (%s) different from the one being created (%s)" -msgstr "CREATE işleminin belirttiği şema (%s) yaratılacak (%s) olanından farklı" - -#: parser/scansup.c:181 -#, c-format -msgid "identifier \"%s\" will be truncated to \"%.*s\"" -msgstr "\"%s\" adı \"%.*s\" uzunluğuna budanacaktır" - -#: gram.y:1191 -#, fuzzy -msgid "current database cannot be changed" -msgstr "geçerli veritabanının adını değiştirilemez" - -#: gram.y:1306 -#: gram.y:1321 -msgid "time zone interval must be HOUR or HOUR TO MINUTE" -msgstr "zaman dilimi aralığı HOUR veya HOUR TO MINUTE olmalıdır" - -#: gram.y:1326 -#: gram.y:7744 -#: gram.y:10037 -#, fuzzy -msgid "interval precision specified twice" -msgstr "interval(%d) kesinliği %d ile %d arasında olmalıdır" - -#: gram.y:2522 -msgid "CREATE TABLE AS cannot specify INTO" -msgstr "CREATE TABLE AS işleminde INTO kullanılamaz" - -#: gram.y:3176 -#, fuzzy -msgid "duplicate trigger events specified" -msgstr "birden fazla INSERT olayı belirtilmiştir" - -#: gram.y:3326 -msgid "CREATE ASSERTION is not yet implemented" -msgstr "CREATE ASSERTION implemente edilmemiştir" - -#: gram.y:3342 -msgid "DROP ASSERTION is not yet implemented" -msgstr "DROP ASSERTION implemente edilmemiştir" - -#: gram.y:3638 -#, fuzzy -msgid "RECHECK is no longer required" -msgstr "aclinsert artık desteklenmemktedir" - -#: gram.y:3639 -#, fuzzy -msgid "Update your data type." -msgstr "Veri tiplerinin listesi" - -#: gram.y:5917 -#: gram.y:5923 -#: gram.y:5929 -msgid "WITH CHECK OPTION is not implemented" -msgstr "WITH CHECK OPTION gerçekleştirilmemiştir" - -#: gram.y:6515 -msgid "column name list not allowed in CREATE TABLE / AS EXECUTE" -msgstr "CREATE TABLE / AS EXECUTE işleminde sütun isim listesi verilmez" - -#: gram.y:6736 -msgid "number of columns does not match number of values" -msgstr "değer sayısı sayısı ile kolon satısı eşleşmiyor" - -#: gram.y:7160 -msgid "LIMIT #,# syntax is not supported" -msgstr "LIMIT #,# sözdizimi desteklenmemektedir" - -#: gram.y:7161 -msgid "Use separate LIMIT and OFFSET clauses." -msgstr "Ayrı LIMIT ve OFFSET ifadeleri kullanın." - -#: gram.y:7382 -msgid "VALUES in FROM must have an alias" -msgstr "FROM öğesindeki VALUES'ler bir alias almalıdır" - -#: gram.y:7383 -msgid "For example, FROM (VALUES ...) [AS] foo." -msgstr "Örneğin, FROM (VALUES ...) [AS] birşey." - -#: gram.y:7388 -msgid "subquery in FROM must have an alias" -msgstr "FROM öğesindeki subquery bir aliası almalıdır" - -#: gram.y:7389 -msgid "For example, FROM (SELECT ...) [AS] foo." -msgstr "Örneğin, FROM (SELECT ...) [AS] birşey." - -#: gram.y:7870 -msgid "precision for type float must be at least 1 bit" -msgstr "float veri tipinin kesinliği en az 1 bit olmalıdır" - -#: gram.y:7879 -msgid "precision for type float must be less than 54 bits" -msgstr "float veri tipinin kesinliği ne çok 54 bit olabilir" - -#: gram.y:8575 -msgid "UNIQUE predicate is not yet implemented" -msgstr "UNIQUE predicate implemente edilmemiştir" - -#: gram.y:9414 -#: gram.y:9429 -msgid "frame start cannot be UNBOUNDED FOLLOWING" -msgstr "" - -#: gram.y:9419 -#: gram.y:9434 -#, fuzzy -msgid "frame start at CURRENT ROW is not implemented" -msgstr "view üzerinde WHERE CURRENT OF implement edilmemiştir" - -#: gram.y:9439 -msgid "frame end cannot be UNBOUNDED PRECEDING" -msgstr "" - -#: gram.y:10559 -msgid "OLD used in query that is not in a rule" -msgstr "rule olmayan sorgusunda OLD kullanıldı" - -#: gram.y:10569 -msgid "NEW used in query that is not in a rule" -msgstr "rule olmayan sorgusunda NEW kullanıldı" - -#: gram.y:10617 -#: gram.y:10824 -msgid "improper use of \"*\"" -msgstr "\"*\"'nin geçersiz kullanımı" - -#: gram.y:10756 -msgid "wrong number of parameters on left side of OVERLAPS expression" -msgstr "OVERLAPS ifadesinin sol tarafında yanlış parametre sayısı kullanılmış" - -#: gram.y:10763 -msgid "wrong number of parameters on right side of OVERLAPS expression" -msgstr "OVERLAPS ifadesinin sağ tarafında yanlış parametre sayısı kullanılmış" - -#: gram.y:10886 -msgid "multiple ORDER BY clauses not allowed" -msgstr "birden çok ORDER BY ifadesi kullanılamaz" - -#: gram.y:10897 -msgid "multiple OFFSET clauses not allowed" -msgstr "birden fazla OFFSET ifadesi desteklenmemektedir" - -#: gram.y:10906 -msgid "multiple LIMIT clauses not allowed" -msgstr "birden çok LIMIT ifadesi kullanılamaz" - -#: gram.y:10915 -#, fuzzy -msgid "multiple WITH clauses not allowed" -msgstr "birden çok LIMIT ifadesi kullanılamaz" - -#: gram.y:11069 -msgid "OUT and INOUT arguments aren't allowed in TABLE functions" -msgstr "" - -#: scan.l:386 -msgid "unterminated /* comment" -msgstr "/* açıklama sonlandırılmamış" - -#: scan.l:415 -msgid "unterminated bit string literal" -msgstr "sonuçlandırılmamış bit string literal" - -#: scan.l:436 -msgid "unterminated hexadecimal string literal" -msgstr "sonuçlandırılmamış hexadecimal string literal" - -#: scan.l:476 -msgid "unsafe use of string constant with Unicode escapes" -msgstr "" - -#: scan.l:477 -msgid "String constants with Unicode escapes cannot be used when standard_conforming_strings is off." -msgstr "" - -#: scan.l:524 -msgid "unsafe use of \\' in a string literal" -msgstr "string literal içinde güvenli olmayan \\' kullanımı" - -#: scan.l:525 -msgid "Use '' to write quotes in strings. \\' is insecure in client-only encodings." -msgstr "Satır içinde tırnak yazmak için iki tek tırnak ('') kullanın. İstemci baslı kodlamalarda (\\') kullanımı güvendi değildir." - -#: scan.l:554 -msgid "unterminated quoted string" -msgstr "sonuçlandırılmamış tırnakla sınırlandırılmış satır" - -#: scan.l:598 -msgid "unterminated dollar-quoted string" -msgstr "sonuçlandırılmamış dolar işeretiyle sınırlandırılmış satır" - -#: scan.l:615 -#: scan.l:627 -#: scan.l:641 -msgid "zero-length delimited identifier" -msgstr "sınırlandırılmış tanım sıfır uzunluklu" - -#: scan.l:654 -msgid "unterminated quoted identifier" -msgstr "sonuçlandırılmamış tırnakla sınırlandırılmış tanım" - -#: scan.l:748 -msgid "operator too long" -msgstr "operator fazla uzun" - -#. translator: %s is typically the translation of "syntax error" -#: scan.l:897 -#, c-format -msgid "%s at end of input" -msgstr "giriş sonuna %s" - -#. translator: first %s is typically the translation of "syntax error" -#: scan.l:905 -#, c-format -msgid "%s at or near \"%s\"" -msgstr "\"%2$s\" yerinde %1$s" - -#: scan.l:1025 -msgid "Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8" -msgstr "" - -#: scan.l:1042 -#, fuzzy -msgid "invalid Unicode escape character" -msgstr "escape satırı geçersiz" - -#: scan.l:1085 -#, fuzzy -msgid "invalid Unicode escape value" -msgstr "geçersiz end sequence" - -#: scan.l:1134 -msgid "nonstandard use of \\' in a string literal" -msgstr "string literal içinde standart olmayan \\' kullanımı" - -#: scan.l:1135 -msgid "Use '' to write quotes in strings, or use the escape string syntax (E'...')." -msgstr "Satır içinde tırnak yazmak için ya iki tek tırnak ('') ya da escape kullanın (E'...')." - -#: scan.l:1144 -msgid "nonstandard use of \\\\ in a string literal" -msgstr "string literal içinde standart olmayan \\\\ kullanımı" - -#: scan.l:1145 -msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'." -msgstr "Ters taksim için escape satır sözdizimini kullanın, örneğin, E'\\\\'." - -#: scan.l:1159 -msgid "nonstandard use of escape in a string literal" -msgstr "string literal içinde standart olmayan escape kullanımı" - -#: scan.l:1160 -msgid "" -"Use the escape string syntax for escapes, e.g., E'\\r\\n" -"'." -msgstr "" -"Escape için standart sözdizimini kullanın, örneğin, E'\\r\\n" -"'." - -#: port/win32/signal.c:189 -#, c-format -msgid "could not create signal listener pipe for pid %d: error code %d" -msgstr "signal listener pipe oluşturulamadı: %d: hata kodu %d" - -#: port/win32/signal.c:269 -#, c-format -msgid "could not create signal listener pipe: error code %d; retrying\n" -msgstr "signal listener pipe oluşturulamadı: %d; yeniden deneniyor\n" - -#: port/win32/signal.c:282 -#, c-format -msgid "could not create signal dispatch thread: error code %d\n" -msgstr "signal dispatch thread oluşturulamıyor: hata kodu %d\n" - -#: port/win32/security.c:43 -#, c-format -msgid "could not open process token: error code %d\n" -msgstr "open process token açma başarısız: hata kodu %d\n" - -#: port/win32/security.c:63 -#, c-format -msgid "could not get SID for Administrators group: error code %d\n" -msgstr "Administrators grubunun SID numarası alınamadı: hata kodu %d\n" - -#: port/win32/security.c:72 -#, c-format -msgid "could not get SID for PowerUsers group: error code %d\n" -msgstr "PowerUsers grubunun SID numarası alınamadı: %d\n" - -#: port/sysv_sema.c:114 -#: port/pg_sema.c:114 -#, c-format -msgid "could not create semaphores: %m" -msgstr "semaphores oluşturma hatası: %m" - -#: port/sysv_sema.c:115 -#: port/pg_sema.c:115 -#, c-format -msgid "Failed system call was semget(%lu, %d, 0%o)." -msgstr "Başarısız çağrı: semget(%lu, %d, 0%o)." - -#: 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 "" -"Bu hata mesajı yeterli boş disk alanı kalmadığı anlamına gelmiyor .\n" -"Bu durum, sistemin semaphore set (SEMMNI) veya semaphore (SEMMNS) sayı sınırlaması aşmasında meydana gelmektedir. Belirtilen parametrelerin değerleri yükseltmelisiniz. Başka seçeneğiniz ise PostgerSQL sisteminin semaphore tütekitimini max_connections parametresini şu an %d) düşürerek azaltabilirsiniz.\n" -"PostgreSQL dokümanlarında bu konu ile ilgili daha ayrıntılı açıklama ve konfigurasyon hakkında bilgileri bulabilirsiniz." - -#: 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 "Kernel SEMVMX değerini en az %d değerine kadar çıkartmalısınız. Daha fazla bilgi için PostgreSQL dokümanlarına bakın." - -#: port/win32_sema.c:94 -#, c-format -msgid "could not create semaphore: error code %d" -msgstr "semaphore oluşturma hatası: hata kodu %d" - -#: port/win32_sema.c:161 -#, c-format -msgid "could not lock semaphore: error code %d" -msgstr "lock semaphore başarısız: hata kodu %d" - -#: port/win32_sema.c:174 -#, c-format -msgid "could not unlock semaphore: error code %d" -msgstr "unlock semaphore başarısız: hata kodu %d" - -#: port/win32_sema.c:203 -#, c-format -msgid "could not try-lock semaphore: error code %d" -msgstr "try-lock semaphore başarısız: hata kodu %d" - -#: port/sysv_shmem.c:99 -#: port/pg_shmem.c:99 -#, c-format -msgid "could not create shared memory segment: %m" -msgstr "shared memory segment oluşturulamıyor: %m" - -#: port/sysv_shmem.c:100 -#: port/pg_shmem.c:100 -#, c-format -msgid "Failed system call was shmget(key=%lu, size=%lu, 0%o)." -msgstr "Başarısız sistem çağrısı: shmget(key=%lu, size=%lu, 0%o)." - -#: port/sysv_shmem.c:104 -#: port/pg_shmem.c:104 -#, 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_buffers parameter (currently %d) and/or its max_connections parameter (currently %d).\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 "" -"Bu hata, PostgreSQL'in shared memory isteğinin çekirdeğin SHMMAX parametresinde verilen değerinin aşıldığını gösteriyor. İstenilen bellek boyutunu düşürebilir ya da çekirdeği daha büyük bir SHMMAX parametresi ile yeniden yapılandırabilirsiniz. İstenilen bellek boyutunu (şu an %lu bayt) düşürmek için PostgreSQL'in shared_buffers parametresini (şu an %d) ve/veya max_connections (şu an %d) parametrelerini düşürebilirsiniz.\n" -" Eğer istenilen bellek boyutu zaten küçük ise, çekirdeğin SHMMIN parametresinden düşük olabilir; bu durumda istenilen bellek boyutunu SHMMIN değerine kadar büyütmeniz ya da SHMMIN değerini düşürmeniz gerekli.PostgreSQL belgelerinde shared memory yapılandırılması hakkında daha fazla bilgi bulabilirsiniz." - -#: port/sysv_shmem.c:117 -#: port/pg_shmem.c:117 -#, 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_buffers parameter (currently %d) and/or its max_connections parameter (currently %d).\n" -"The PostgreSQL documentation contains more information about shared memory configuration." -msgstr "" -"Bu hata genellikle PostgreSQL'in shared kullanımı boş takas alanını aştığı zaman ortaya çıkıyor. İstenilen bellek bouytu (şu an %lu bayt) düşürmek için, PostgreSQL'in shared_buffers (şu an %d) ve/veya max_connections (şu an %d) parametrelerini düşürün.\n" -"PostgreSQL dokümanlarında shared memory yapılandırması hakkında daha fazla bilgi bulabilirsiniz." - -#: port/sysv_shmem.c:126 -#: port/pg_shmem.c:126 -#, 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), by reducing its shared_buffers parameter (currently %d) and/or its max_connections parameter (currently %d).\n" -"The PostgreSQL documentation contains more information about shared memory configuration." -msgstr "" -"Bu hata mesajı yeterli boş disk alanı kalmadığı anlamına gelmiyor . Bu durum, tüm shared memory ID alınmış olduğu zamanda -- ki bu durumda SHMMNI parametresinin değerleri yükseltmelisiniz; ya da sistemin shared memory sınırına ulaşıldığı zamanda oluşur. Shared memory sınırını yükseltemezseniz, PostgreSQL sisteminin shared memory tüketimini (şu an %lu bayt) shared_buffers (şu an %d) ve/veya max_connections parametresini (şu an %d) düşürerek azaltabilirsiniz.\n" -"PostgreSQL belgelerinde bu konu ile ilgili daha ayrıntılı açıklama ve yapılandırma hakkında bilgileri bulabilirsiniz." - -#: port/sysv_shmem.c:381 -#: port/pg_shmem.c:381 -#, c-format -msgid "could not stat data directory \"%s\": %m" -msgstr "\"%s\" veri dizin hakkında bilgi alınamadı: %m" - -#: port/win32_shmem.c:158 -#: port/win32_shmem.c:193 -#: port/win32_shmem.c:214 -#, c-format -msgid "could not create shared memory segment: %lu" -msgstr "shared memory segment oluşturulamıyor: %lu" - -#: port/win32_shmem.c:159 -#, fuzzy, c-format -msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)." -msgstr "Başarısız sistem çağrısı: CreateFileMapping(size=%lu, name=%s)" - -#: port/win32_shmem.c:183 -msgid "pre-existing shared memory block is still in use" -msgstr "daha önce tanımlanmış shared memory bloğu hala kullanılmaktadır" - -#: port/win32_shmem.c:184 -msgid "Check if there are any old server processes still running, and terminate them." -msgstr "Hala çalışan sunucu süreçleri bulun ve varsa sonlandırın." - -#: port/win32_shmem.c:194 -#, fuzzy -msgid "Failed system call was DuplicateHandle." -msgstr "Başarısız çağrı: DuplicateHandle" - -#: port/win32_shmem.c:215 -#, fuzzy -msgid "Failed system call was MapViewOfFileEx." -msgstr "Başarısız çağrı: MapViewOfFileEx" - -#: postmaster/autovacuum.c:365 -#, c-format -msgid "could not fork autovacuum launcher process: %m" -msgstr "vacuum süreci fork edilemedi: %m" - -#: postmaster/autovacuum.c:529 -msgid "autovacuum launcher started" -msgstr "otomatik vacuum başlatma süreci çalıştırıldı" - -#: postmaster/autovacuum.c:760 -msgid "autovacuum launcher shutting down" -msgstr "otomatik vacuum başlatma süreci kapatılıyor" - -#: postmaster/autovacuum.c:1426 -#, fuzzy, c-format -msgid "could not fork autovacuum worker process: %m" -msgstr "Otomatik vacuum süreci fork edilemedi: %m" - -#: postmaster/autovacuum.c:1628 -#, c-format -msgid "autovacuum: processing database \"%s\"" -msgstr "autovacuum: \"%s\" veritabanı işleniyor" - -#: postmaster/autovacuum.c:2000 -#, fuzzy, c-format -msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"" -msgstr "autovacuum: \"%s\" veritabanı işleniyor" - -#: postmaster/autovacuum.c:2012 -#, fuzzy, c-format -msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\"" -msgstr "autovacuum: \"%s\" veritabanı işleniyor" - -#: postmaster/autovacuum.c:2273 -#, c-format -msgid "automatic vacuum of table \"%s.%s.%s\"" -msgstr "\"%s.%s.%s\" tablosunun otomatik vacuum'u" - -#: postmaster/autovacuum.c:2276 -#, c-format -msgid "automatic analyze of table \"%s.%s.%s\"" -msgstr "\"%s.%s.%s\" tablosunun otomatik analizi" - -#: postmaster/autovacuum.c:2738 -msgid "autovacuum not started because of misconfiguration" -msgstr "geçersiz ayarlarından dolayı autovacuum çalıştırılamadı" - -#: postmaster/autovacuum.c:2739 -msgid "Enable the \"track_counts\" option." -msgstr "\"track_counts\" seçeneği etkinleştir." - -#: postmaster/autovacuum.c:2795 -msgid "not enough shared memory for autovacuum" -msgstr "otomatik vacuum için shared memory yeterli değildir" - -#: postmaster/bgwriter.c:462 -#, fuzzy, c-format -msgid "checkpoints are occurring too frequently (%d second apart)" -msgid_plural "checkpoints are occurring too frequently (%d seconds apart)" -msgstr[0] "checkpoint işlemi çok sık çağırılıyor (%d saniye aralıkla)" -msgstr[1] "checkpoint işlemi çok sık çağırılıyor (%d saniye aralıkla)" - -#: postmaster/bgwriter.c:466 -msgid "Consider increasing the configuration parameter \"checkpoint_segments\"." -msgstr "\"checkpoint_segments\" yapılandırma parametresi ile bu aralığı büyütebilirsiniz." - -#: postmaster/bgwriter.c:575 -#, c-format -msgid "transaction log switch forced (archive_timeout=%d)" -msgstr "transaction log switch forced (archive_timeout=%d)" - -#: postmaster/bgwriter.c:883 -msgid "not enough shared memory for background writer" -msgstr "arka planı writer için shared memory yeterli değildir" - -#: postmaster/bgwriter.c:1031 -msgid "checkpoint request failed" -msgstr "checkpoint isteği başarısız" - -#: postmaster/bgwriter.c:1032 -msgid "Consult recent messages in the server log for details." -msgstr "Ayrıntılar için sunucu günlük dosyasına bakın." - -#: postmaster/pgarch.c:158 -#, c-format -msgid "could not fork archiver: %m" -msgstr "archiver başlatılamadı: %m" - -#: postmaster/pgarch.c:416 -msgid "archive_mode enabled, yet archive_command is not set" -msgstr "archive_mode aktiftir, ancak archive_command ayarlanmadı" - -#: postmaster/pgarch.c:454 -#, c-format -msgid "transaction log file \"%s\" could not be archived: too many failures" -msgstr "transaction log dosyası \"%s\" arşivlenemedi: çok fazla başarısız işlem" - -#: postmaster/pgarch.c:557 -#, c-format -msgid "archive command failed with exit code %d" -msgstr "arşiv komutu başarısız. Döndürülen kod: %d" - -#: postmaster/pgarch.c:559 -#: postmaster/pgarch.c:569 -#: postmaster/pgarch.c:576 -#: postmaster/pgarch.c:582 -#: postmaster/pgarch.c:591 -#, c-format -msgid "The failed archive command was: %s" -msgstr "Başarısız arşiv komuyu: %s" - -#: postmaster/pgarch.c:566 -#, c-format -msgid "archive command was terminated by exception 0x%X" -msgstr "arşiv süreç 0x%X exception tarafından sonlandırıldı" - -#: postmaster/pgarch.c:568 -#: postmaster/postmaster.c:2662 -#, fuzzy -msgid "See C include file \"ntstatus.h\" for a description of the hexadecimal value." -msgstr "Bu hex değerin tanımlaması için \"ntstatus.h\" dosyasına bakın." - -#: postmaster/pgarch.c:573 -#, c-format -msgid "archive command was terminated by signal %d: %s" -msgstr "arşiv komutu %d sinyali tarafından sonlandırıldı: %s" - -#: postmaster/pgarch.c:580 -#, c-format -msgid "archive command was terminated by signal %d" -msgstr "arşiv komutu %d sinyali tarafından sonlandırıldı" - -#: postmaster/pgarch.c:589 -#, c-format -msgid "archive command exited with unrecognized status %d" -msgstr "arşiv komutu beklenmeyen durum ile sonlandırıldı %d" - -#: postmaster/pgarch.c:601 -#, c-format -msgid "archived transaction log file \"%s\"" -msgstr "arşivlenen transaction kayıt dosyası \"%s\"" - -#: postmaster/pgarch.c:650 -#, c-format -msgid "could not open archive status directory \"%s\": %m" -msgstr "arşiv durum dizini \"%s\" açılamıyor: %m" - -#: postmaster/pgstat.c:323 -#, c-format -msgid "could not resolve \"localhost\": %s" -msgstr "\"localhost\" adresi çözümlenemedi: %s" - -#: postmaster/pgstat.c:346 -msgid "trying another address for the statistics collector" -msgstr "istatistik toplayıcı süreci için başka bir adres deneniyor" - -#: postmaster/pgstat.c:355 -#, c-format -msgid "could not create socket for statistics collector: %m" -msgstr "istatistik toplayıcı soket oluşturma hatası: %m" - -#: postmaster/pgstat.c:367 -#, c-format -msgid "could not bind socket for statistics collector: %m" -msgstr "istatistik toplayıcı soket bind hatası: %m" - -#: postmaster/pgstat.c:378 -#, c-format -msgid "could not get address of socket for statistics collector: %m" -msgstr "istatistik toplayıcı sürecinin soket adresi alınamadı: %m" - -#: postmaster/pgstat.c:394 -#, c-format -msgid "could not connect socket for statistics collector: %m" -msgstr "istatistik toplayıcı soket bağlama hatası: %m" - -#: postmaster/pgstat.c:415 -#, c-format -msgid "could not send test message on socket for statistics collector: %m" -msgstr "istatistik toplayıcı sürecine test mesajı gönderme hatası: %m" - -#: postmaster/pgstat.c:441 -#: postmaster/pgstat.c:2744 -#, c-format -msgid "select() failed in statistics collector: %m" -msgstr "istatistik toplayıcı sürecinde select() hatası: %m" - -#: postmaster/pgstat.c:456 -msgid "test message did not get through on socket for statistics collector" -msgstr "istatistik toplayıcı sürecine test mesajı gönderilemedi" - -#: postmaster/pgstat.c:471 -#, c-format -msgid "could not receive test message on socket for statistics collector: %m" -msgstr "istatistik toplayıcı süreci deneme mesajı alma hatası: %m" - -#: postmaster/pgstat.c:481 -msgid "incorrect test message transmission on socket for statistics collector" -msgstr "istatistik toplayıcı soket aracılığı ile mesaj gönderme hatası" - -#: postmaster/pgstat.c:504 -#, c-format -msgid "could not set statistics collector socket to nonblocking mode: %m" -msgstr "istatistik toplayıcı soketi nonblocking durumuna getirilemedi: %m" - -#: postmaster/pgstat.c:514 -msgid "disabling statistics collector for lack of working socket" -msgstr "çalışan socket olmadığından istatistik toplayıcı iptal edildi" - -#: postmaster/pgstat.c:616 -#, c-format -msgid "could not fork statistics collector: %m" -msgstr "istatistik toplayıcı başlatılamıyor: %m" - -#: postmaster/pgstat.c:1144 -msgid "must be superuser to reset statistics counters" -msgstr "istatistik sayaçlarını sadece veritabanı superuserı sıfırlayabilir" - -#: postmaster/pgstat.c:2723 -#, c-format -msgid "poll() failed in statistics collector: %m" -msgstr "istatistik toplayıcı sürecinde poll() hatası: %m" - -#: postmaster/pgstat.c:2768 -#, c-format -msgid "could not read statistics message: %m" -msgstr "istatistik mesajı okunamadı: %m" - -#: postmaster/pgstat.c:2967 -#, c-format -msgid "could not open temporary statistics file \"%s\": %m" -msgstr "geçici istatistik dosyası \"%s\" açılamıyor: %m" - -#: postmaster/pgstat.c:3039 -#, c-format -msgid "could not write temporary statistics file \"%s\": %m" -msgstr "geçici istatistik dosyasına \"%s\" yazılamıyor: %m" - -#: postmaster/pgstat.c:3048 -#, c-format -msgid "could not close temporary statistics file \"%s\": %m" -msgstr "geçici istatistik dosyası \"%s\" açılamıyor: %m" - -#: postmaster/pgstat.c:3056 -#, c-format -msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" -msgstr "geçici istatistik dosyasının adı değiştirilemiyor eski: \"%s\" yeni: \"%s\": %m" - -#: postmaster/pgstat.c:3144 -#: postmaster/pgstat.c:3154 -#: postmaster/pgstat.c:3176 -#: postmaster/pgstat.c:3190 -#: postmaster/pgstat.c:3252 -#: postmaster/pgstat.c:3269 -#: postmaster/pgstat.c:3284 -#: postmaster/pgstat.c:3301 -#: postmaster/pgstat.c:3316 -msgid "corrupted pgstat.stat file" -msgstr "bozuk pgstat.stat dosyası" - -#: postmaster/pgstat.c:3657 -msgid "database hash table corrupted during cleanup --- abort" -msgstr "veritabanı %d için tablolar hash tablosu temizleme sırasında bozulmuştur --- iptal" - -#: postmaster/postmaster.c:543 -#, c-format -msgid "%s: invalid argument for option -f: \"%s\"\n" -msgstr "%s: -f seçeneği için geçersiz parametre: \"%s\"\n" - -#: postmaster/postmaster.c:629 -#, c-format -msgid "%s: invalid argument for option -t: \"%s\"\n" -msgstr "%s: -t seçeneği için geçersiz parametre: \"%s\"\n" - -#: postmaster/postmaster.c:680 -#, c-format -msgid "%s: invalid argument: \"%s\"\n" -msgstr "%s: geçersiz parametre: \"%s\"\n" - -#: postmaster/postmaster.c:705 -#, c-format -msgid "%s: superuser_reserved_connections must be less than max_connections\n" -msgstr "%s: superuser_reserved_connections parametresi, max_connections parametresinden küçük olmalıdır\n" - -#: postmaster/postmaster.c:715 -#, c-format -msgid "%s: invalid datetoken tables, please fix\n" -msgstr "%s: datetoken tabloları bozuk, lütfen düzeltin\n" - -#: postmaster/postmaster.c:821 -msgid "invalid list syntax for \"listen_addresses\"" -msgstr "\"listen_addresses\" için geçersiz sözdizimi" - -#: postmaster/postmaster.c:842 -#, c-format -msgid "could not create listen socket for \"%s\"" -msgstr "\"%s\" için socket oluşturma hatası" - -#: postmaster/postmaster.c:848 -msgid "could not create any TCP/IP sockets" -msgstr "TCP/IP socket oluşturma hatası" - -#: postmaster/postmaster.c:875 -msgid "could not create Unix-domain socket" -msgstr "UNIX-domani socket oluşturma hatası" - -#: postmaster/postmaster.c:883 -msgid "no socket created for listening" -msgstr "dinlemek için socket oluşturulmadı" - -#: postmaster/postmaster.c:906 -#: postmaster/postmaster.c:3236 -#, fuzzy -msgid "could not load pg_hba.conf" -msgstr "wldap32.dll yüklenemedi" - -#: postmaster/postmaster.c:923 -#, fuzzy -msgid "could not create I/O completion port for child queue" -msgstr "\"%s\" için socket oluşturma hatası" - -#: postmaster/postmaster.c:967 -#, c-format -msgid "%s: could not write external PID file \"%s\": %s\n" -msgstr "%s: harici PID dosyası \"%s\" yazılamadı: %s\n" - -#: postmaster/postmaster.c:1068 -#, c-format -msgid "%s: could not locate matching postgres executable" -msgstr "%s: uygun postgres çalıştırma dosysı bulunamadı" - -#: postmaster/postmaster.c:1119 -#, c-format -msgid "data directory \"%s\" does not exist" -msgstr "veritabanı deizini \"%s\" mevcut değil" - -#: postmaster/postmaster.c:1124 -#, c-format -msgid "could not read permissions of directory \"%s\": %m" -msgstr "\"%s\" dizininin erişim haklarını okunamıyor: %m" - -#: postmaster/postmaster.c:1132 -#, fuzzy, c-format -msgid "specified data directory \"%s\" is not a directory" -msgstr "veritabanı deizini \"%s\" mevcut değil" - -#: postmaster/postmaster.c:1148 -#, c-format -msgid "data directory \"%s\" has wrong ownership" -msgstr "\"%s\" veritabanı dizininin erişim hakları yalnıştır" - -#: postmaster/postmaster.c:1150 -msgid "The server must be started by the user that owns the data directory." -msgstr "Sunucu, veri dizini sahip kullanıcı tarafından başlatılmalıdır." - -#: postmaster/postmaster.c:1170 -#, c-format -msgid "data directory \"%s\" has group or world access" -msgstr "veritabanı dizini \"%s\" gruba ve herkese erişime açıktır" - -#: postmaster/postmaster.c:1172 -msgid "Permissions should be u=rwx (0700)." -msgstr "Erişim hakları u=rwx (0700) olmalıdır." - -#: postmaster/postmaster.c:1183 -#, 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: veritabanı sistemi bulamamaktadır.\n" -"\"%s\" klasöründe arama yapılmıştır,\n" -"ancak \"%s\" dosyası bulunamamıştır: %s\n" - -#: postmaster/postmaster.c:1218 -#, c-format -msgid "%s: could not fork background process: %s\n" -msgstr "%s: artalan süreci başlatma hatası: %s\n" - -#: postmaster/postmaster.c:1239 -#, c-format -msgid "%s: could not dissociate from controlling TTY: %s\n" -msgstr "%s: control TTY ile bağlantı kesilemiyor: %s\n" - -#: postmaster/postmaster.c:1319 -#, c-format -msgid "select() failed in postmaster: %m" -msgstr "postmaster içinde select() başarısız: %m" - -#: postmaster/postmaster.c:1468 -#: postmaster/postmaster.c:1499 -msgid "incomplete startup packet" -msgstr "başlatma paketi eksik" - -#: postmaster/postmaster.c:1480 -msgid "invalid length of startup packet" -msgstr "başlatma paketinin uzunluğu geçirsiz" - -#: postmaster/postmaster.c:1536 -#, c-format -msgid "failed to send SSL negotiation response: %m" -msgstr "SSL görüşme cevabı gönderme başarısız: %m" - -#: postmaster/postmaster.c:1565 -#, c-format -msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" -msgstr "frontend protokolü %u.%u desteklenememktedir: sunucunun desteklediği protokolleri %u.0 ila %u.%u arasında" - -#: postmaster/postmaster.c:1629 -msgid "invalid startup packet layout: expected terminator as last byte" -msgstr "geçersiz sartup packet düzeni: son bayt bir sonlandırıcı olmalıdır" - -#: postmaster/postmaster.c:1657 -msgid "no PostgreSQL user name specified in startup packet" -msgstr "başlatma paketinde PostgreSQL kullanıcı adı belirtilmemiştir" - -#: postmaster/postmaster.c:1710 -msgid "the database system is starting up" -msgstr "veritabanı başlatılıyor" - -#: postmaster/postmaster.c:1715 -msgid "the database system is shutting down" -msgstr "veritabanı kapatılıyor" - -#: postmaster/postmaster.c:1720 -msgid "the database system is in recovery mode" -msgstr "veritabanı kurtarma modundadır" - -#: postmaster/postmaster.c:1787 -#, fuzzy, c-format -msgid "wrong key in cancel request for process %d" -msgstr "%d sürecinin iptal isteminde geçersiz anahtar" - -#: postmaster/postmaster.c:1795 -#, fuzzy, c-format -msgid "PID %d in cancel request did not match any process" -msgstr "%d sürecinin iptal isteminde geçersiz pid" - -#: postmaster/postmaster.c:1987 -msgid "received SIGHUP, reloading configuration files" -msgstr "SIGHUP sinyali alınmıştır, yapılandırma dosyaları yeniden okunuyor" - -#: postmaster/postmaster.c:2008 -msgid "pg_hba.conf not reloaded" -msgstr "pg_hba.conf yeniden yüklenmedi" - -#: postmaster/postmaster.c:2051 -msgid "received smart shutdown request" -msgstr "akıllı kapatma isteği alındı" - -#: postmaster/postmaster.c:2087 -msgid "received fast shutdown request" -msgstr "hızlı kapatma isteği alındı" - -#: postmaster/postmaster.c:2101 -msgid "aborting any active transactions" -msgstr "aktif transactionlar iptal ediliyor" - -#: postmaster/postmaster.c:2129 -msgid "received immediate shutdown request" -msgstr "immediate shutdown isteği alındı" - -#: postmaster/postmaster.c:2203 -#: postmaster/postmaster.c:2231 -msgid "startup process" -msgstr "başlatma süreci" - -#: postmaster/postmaster.c:2206 -msgid "aborting startup due to startup process failure" -msgstr "başlatma süreci hatası nedeniyle başlatma süreci durdurulmuştır" - -#: postmaster/postmaster.c:2271 -msgid "database system is ready to accept connections" -msgstr "veritabanı sunucusu bağlantı kabul etmeye hazır" - -#: postmaster/postmaster.c:2323 -msgid "background writer process" -msgstr "background writer süreci" - -#: postmaster/postmaster.c:2339 -msgid "WAL writer process" -msgstr "WAL yazma süreci" - -#: postmaster/postmaster.c:2354 -msgid "autovacuum launcher process" -msgstr "otomatik vacuum başlatma süreci" - -#: postmaster/postmaster.c:2368 -msgid "archiver process" -msgstr "arşivleyici süreci" - -#: postmaster/postmaster.c:2386 -msgid "statistics collector process" -msgstr "istatistik toplama süreci" - -#: postmaster/postmaster.c:2400 -msgid "system logger process" -msgstr "logger süreci" - -#: postmaster/postmaster.c:2435 -#: postmaster/postmaster.c:2445 -#: postmaster/postmaster.c:2463 -msgid "server process" -msgstr "sunucu süreci" - -#: postmaster/postmaster.c:2499 -msgid "terminating any other active server processes" -msgstr "diğer aktif sunucu süreçleri durduruluyor" - -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2651 -#, c-format -msgid "%s (PID %d) exited with exit code %d" -msgstr "%s (PID %d) exit code %d ile sonlandı" - -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2660 -#, c-format -msgid "%s (PID %d) was terminated by exception 0x%X" -msgstr "%s (PID %d) 0x%X exception tarafından sonlandırıldı" - -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2669 -#, c-format -msgid "%s (PID %d) was terminated by signal %d: %s" -msgstr "%s (PID %d) %d sinyali tarafından sonlandırıldı: %s" - -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2679 -#, c-format -msgid "%s (PID %d) was terminated by signal %d" -msgstr "%s (PID %d) %d sinyali tarafından sonlandırıldı" - -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2688 -#, c-format -msgid "%s (PID %d) exited with unrecognized status %d" -msgstr "%s (PID %d) tanınmayan status kodu ile sonlandırıldı %d" - -#: postmaster/postmaster.c:2825 -msgid "abnormal database system shutdown" -msgstr "veritabanı sistemi olağandışı kapandı" - -#: postmaster/postmaster.c:2857 -msgid "all server processes terminated; reinitializing" -msgstr "tüm sunucu süreçleri durduruldu; yeniden ilklendiriliyor" - -#: postmaster/postmaster.c:3020 -#, c-format -msgid "could not fork new process for connection: %m" -msgstr "bağlantı için yeni süreç başlatılamadı: %m" - -#: postmaster/postmaster.c:3062 -msgid "could not fork new process for connection: " -msgstr "bağlantı için yeni süreç başlatılamadı:" - -#: postmaster/postmaster.c:3202 -#, c-format -msgid "connection received: host=%s%s%s" -msgstr "bağlantı alındı: istemci=%s%s%s" - -#: postmaster/postmaster.c:3281 -#, c-format -msgid "connection authorized: user=%s database=%s" -msgstr "bağlantı tanımı: kullanıcı=%s veritabanı=%s" - -#: postmaster/postmaster.c:3521 -#, c-format -msgid "could not execute server process \"%s\": %m" -msgstr "\"%s\" sunucu süreci başlatma hatası: %m" - -#: postmaster/postmaster.c:4023 -#, fuzzy -msgid "database system is in consistent recovery mode" -msgstr "veritabanı kurtarma modundadır" - -#: postmaster/postmaster.c:4240 -#, c-format -msgid "could not fork startup process: %m" -msgstr "başlatma süreci fork edilemedi: %m" - -#: postmaster/postmaster.c:4244 -#, c-format -msgid "could not fork background writer process: %m" -msgstr "background writer süreci başlatılamadı: %m" - -#: postmaster/postmaster.c:4248 -#, c-format -msgid "could not fork WAL writer process: %m" -msgstr "WAL yazıcı süreci başlatılamadı: %m" - -#: postmaster/postmaster.c:4252 -#, c-format -msgid "could not fork process: %m" -msgstr "süreç başlatma hatası: %m" - -#: postmaster/postmaster.c:4524 -#, c-format -msgid "could not duplicate socket %d for use in backend: error code %d" -msgstr "backend içinde kullanılacak duplicate socket %d oluşturulamadı: hata kodu %d" - -#: postmaster/postmaster.c:4553 -#, c-format -msgid "could not create inherited socket: error code %d\n" -msgstr "inherited socket oluşturulamıyor: hata kodu %d\n" - -#: postmaster/postmaster.c:4582 -#: postmaster/postmaster.c:4589 -#, c-format -msgid "could not read from backend variables file \"%s\": %s\n" -msgstr "\"%s\" backend parametreler dosyasından okunamıyor: %s\n" - -#: postmaster/postmaster.c:4598 -#, c-format -msgid "could not remove file \"%s\": %s\n" -msgstr "\"%s\" dosyası silinemedi: %s\n" - -#: postmaster/postmaster.c:4611 -#, c-format -msgid "could not map view of backend variables: error code %d\n" -msgstr "backend değişkenleri map view hatası: hata kodu: %d\n" - -#: postmaster/postmaster.c:4620 -#, c-format -msgid "could not unmap view of backend variables: error code %d\n" -msgstr "backend değişkenleri unmap view hatası: hata kodu: %d\n" - -#: postmaster/postmaster.c:4627 -#, c-format -msgid "could not close handle to backend parameter variables: error code %d\n" -msgstr "backend parameter değişkenler tanıtıcısı kapatılamadı: hata kodu %d\n" - -#: postmaster/postmaster.c:4773 -msgid "could not read exit code for process\n" -msgstr "Sürecin çıkış kodu okunamadı\n" - -#: postmaster/postmaster.c:4778 -#, fuzzy -msgid "could not post child completion status\n" -msgstr "SSL bağlantı alınamıyor: %s" - -#: postmaster/syslogger.c:383 -#, c-format -msgid "select() failed in logger process: %m" -msgstr "logger süreci içerisinde select() hatası: %m" - -#: postmaster/syslogger.c:395 -#: postmaster/syslogger.c:959 -#, c-format -msgid "could not read from logger pipe: %m" -msgstr "syslog pipe okuma hatası: %m" - -#: postmaster/syslogger.c:434 -msgid "logger shutting down" -msgstr "loglama süreci kapatılıyor" - -#: postmaster/syslogger.c:478 -#: postmaster/syslogger.c:492 -#, c-format -msgid "could not create pipe for syslog: %m" -msgstr "syslog için pipe oluşturulamadı: %m" - -#: postmaster/syslogger.c:512 -#: postmaster/syslogger.c:996 -#, c-format -msgid "could not create log file \"%s\": %m" -msgstr "\"%s\" günlük dosyası oluşturma hatası: %m" - -#: postmaster/syslogger.c:527 -#, c-format -msgid "could not fork system logger: %m" -msgstr "sistem loglayıcı başlatma hatası: %m" - -#: postmaster/syslogger.c:558 -#, c-format -msgid "could not redirect stdout: %m" -msgstr "stdout yönlendirilmesi yapılamadı: %m" - -#: postmaster/syslogger.c:563 -#: postmaster/syslogger.c:581 -#, c-format -msgid "could not redirect stderr: %m" -msgstr "stderr yönlendirilmesi yapılamadı: %m" - -#: postmaster/syslogger.c:924 -#, c-format -msgid "could not write to log file: %s\n" -msgstr "log dosyası yazma hatası: %s\n" - -#: postmaster/syslogger.c:1071 -#: postmaster/syslogger.c:1133 -#, c-format -msgid "could not open new log file \"%s\": %m" -msgstr "yeni kayıt dosyası \"%s\" açma hatası: %m" - -#: postmaster/syslogger.c:1083 -#: postmaster/syslogger.c:1145 -msgid "disabling automatic rotation (use SIGHUP to reenable)" -msgstr "otomatik dönüşüm etkisiz (yeniden yetkilendirmek için SIGHUP kullanın)" - -#: rewrite/rewriteDefine.c:109 -#: rewrite/rewriteDefine.c:759 -#, c-format -msgid "rule \"%s\" for relation \"%s\" already exists" -msgstr "\"%s\" kuralı(rule), \"%s\" nesnesi için zaten mevcut" - -#: rewrite/rewriteDefine.c:283 -msgid "rule actions on OLD are not implemented" -msgstr "OLD için rule eylemleri implement edilmemiş" - -#: rewrite/rewriteDefine.c:284 -msgid "Use views or triggers instead." -msgstr "Bunun yerine view veya trigger kullanın." - -#: rewrite/rewriteDefine.c:288 -msgid "rule actions on NEW are not implemented" -msgstr "NEW için rule eylemleri implement edilmemiş" - -#: rewrite/rewriteDefine.c:289 -msgid "Use triggers instead." -msgstr "Bunun yerine lütfen triggerleri kullanın." - -#: rewrite/rewriteDefine.c:302 -msgid "INSTEAD NOTHING rules on SELECT are not implemented" -msgstr "SELECT üzerinde INSTEAD NOTHING rule implement edilmemiştir" - -#: rewrite/rewriteDefine.c:303 -msgid "Use views instead." -msgstr "Lütfen yerine viewları kullanın" - -#: rewrite/rewriteDefine.c:311 -msgid "multiple actions for rules on SELECT are not implemented" -msgstr "SELECT rule'ler için birden fazla eylem tanımlanma implement edilmemiştir" - -#: rewrite/rewriteDefine.c:323 -msgid "rules on SELECT must have action INSTEAD SELECT" -msgstr "SELECT rule tanımları INSTEAD SELECT öğesini taşımak zorundadır" - -#: rewrite/rewriteDefine.c:331 -msgid "event qualifications are not implemented for rules on SELECT" -msgstr "SELECT rule'ler için olay tanımları implement edilmemiştir" - -#: rewrite/rewriteDefine.c:356 -#, c-format -msgid "\"%s\" is already a view" -msgstr "\"%s\" zanten bir view'dur" - -#: rewrite/rewriteDefine.c:380 -#, c-format -msgid "view rule for \"%s\" must be named \"%s\"" -msgstr "rule \"%s\" için view'nun adını \"%s\" olarak değiştirilmelidir" - -#: rewrite/rewriteDefine.c:405 -#, c-format -msgid "could not convert table \"%s\" to a view because it is not empty" -msgstr "\"%s\" tablosu boş olmadığı için vew'a çevirilemedi" - -#: rewrite/rewriteDefine.c:412 -#, c-format -msgid "could not convert table \"%s\" to a view because it has triggers" -msgstr "\"%s\" tablosuna bağlı trigger bulunduğu için vew'a çevirilemedi" - -#: rewrite/rewriteDefine.c:414 -msgid "In particular, the table cannot be involved in any foreign key relationships." -msgstr "Özellikle, tablo, foreign key ilişkilerinde kullanılamaz." - -#: rewrite/rewriteDefine.c:419 -#, c-format -msgid "could not convert table \"%s\" to a view because it has indexes" -msgstr "\"%s\" tablosuna bağlı index bulunduğu için vew'a çevirilemedi" - -#: rewrite/rewriteDefine.c:425 -#, c-format -msgid "could not convert table \"%s\" to a view because it has child tables" -msgstr "\"%s\" tablosuna bağlı çöcuk tabloları bulunduğu için vew'a çevirilemedi" - -#: rewrite/rewriteDefine.c:452 -msgid "cannot have multiple RETURNING lists in a rule" -msgstr "bir rule içinde birden fazla RETURNING listesi olamaz" - -#: rewrite/rewriteDefine.c:457 -msgid "RETURNING lists are not supported in conditional rules" -msgstr "şartlı rule içinde RETURNING listeleri kullanılamaz" - -#: rewrite/rewriteDefine.c:461 -msgid "RETURNING lists are not supported in non-INSTEAD rules" -msgstr "non-INSTEAD rule içinde RETURNING listeleri kullanılamaz" - -#: rewrite/rewriteDefine.c:540 -msgid "SELECT rule's target list has too many entries" -msgstr "SELECT rule'un hedef öğesi listesinin öğe sayısı fazladır" - -#: rewrite/rewriteDefine.c:541 -msgid "RETURNING list has too many entries" -msgstr "RETURNING listesinde çok fazla öğe vardır" - -#: rewrite/rewriteDefine.c:557 -msgid "cannot convert relation containing dropped columns to view" -msgstr "cannot convert relation containing dropped columns to view" - -#: rewrite/rewriteDefine.c:562 -#, c-format -msgid "SELECT rule's target entry %d has different column name from \"%s\"" -msgstr "SELECT rule'un hedef öğesi %d sütun \"%s\"'dan farklı bir isme sahip" - -#: rewrite/rewriteDefine.c:568 -#, c-format -msgid "SELECT rule's target entry %d has different type from column \"%s\"" -msgstr "SELECT rule'un hedef öğesi %d sütun \"%s\"'dan farklı bir tipe sahip" - -#: rewrite/rewriteDefine.c:570 -#, c-format -msgid "RETURNING list's entry %d has different type from column \"%s\"" -msgstr "RETURNING listesinin %d öğesi \"%s\" sütunun tipinden farklı" - -#: rewrite/rewriteDefine.c:585 -#, c-format -msgid "SELECT rule's target entry %d has different size from column \"%s\"" -msgstr "SELECT rule'un hedef öğesi %d sütun \"%s\"'dan farklı bir boyuta sahip" - -#: rewrite/rewriteDefine.c:587 -#, c-format -msgid "RETURNING list's entry %d has different size from column \"%s\"" -msgstr "RETURNING listesinin %d öğesi \"%s\" sütunun boyutundan farklı" - -#: rewrite/rewriteDefine.c:595 -msgid "SELECT rule's target list has too few entries" -msgstr "SELECT rule'un hedef listesi gereğinden az öğeye sahip" - -#: rewrite/rewriteDefine.c:596 -msgid "RETURNING list has too few entries" -msgstr "RETURNING ifadesinde çok az öğe vardır" - -#: rewrite/rewriteManip.c:1012 -msgid "conditional utility statements are not implemented" -msgstr "Conditional utility statements implement edilmemiş" - -#: rewrite/rewriteManip.c:1213 -msgid "WHERE CURRENT OF on a view is not implemented" -msgstr "view üzerinde WHERE CURRENT OF implement edilmemiştir" - -#: rewrite/rewriteRemove.c:67 -#, c-format -msgid "rule \"%s\" for relation \"%s\" does not exist, skipping" -msgstr "\"%s\" rule'ü \"%s\" tablosunda mevcut değil ... atlanıyor" - -#: rewrite/rewriteHandler.c:486 -msgid "cannot have RETURNING lists in multiple rules" -msgstr "RETURNING tümcesi, birden fazla rule içinde kullanılamaz" - -#: rewrite/rewriteHandler.c:786 -#: rewrite/rewriteHandler.c:804 -#, c-format -msgid "multiple assignments to same column \"%s\"" -msgstr "aynı sütun \"%s\" için birden fazla değer atama" - -#: rewrite/rewriteHandler.c:1430 -#: rewrite/rewriteHandler.c:1751 -#, c-format -msgid "infinite recursion detected in rules for relation \"%s\"" -msgstr "\"%s\" tablosuna bağlı rule'de sonsuz özyineleme bulundu" - -#: rewrite/rewriteHandler.c:1789 -#, c-format -msgid "cannot perform INSERT RETURNING on relation \"%s\"" -msgstr "\"%s\" nesnesinde INSERT RETURNING yapılamaz" - -#: rewrite/rewriteHandler.c:1791 -msgid "You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." -msgstr "RETURNING tümcesi olan ON INSERT DO INSTEAD rule gerekmektedir" - -#: rewrite/rewriteHandler.c:1796 -#, c-format -msgid "cannot perform UPDATE RETURNING on relation \"%s\"" -msgstr "\"%s\" nesnesinde UPDATE RETURNING yapılamaz" - -#: rewrite/rewriteHandler.c:1798 -msgid "You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." -msgstr "RETURNING tümcesi olan ON UPDATE DO INSTEAD rule gerekmektedir" - -#: rewrite/rewriteHandler.c:1803 -#, c-format -msgid "cannot perform DELETE RETURNING on relation \"%s\"" -msgstr "\"%s\" nesnesi üzerinde DELETE RETURNING işlemi yapılamaz" - -#: rewrite/rewriteHandler.c:1805 -msgid "You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." -msgstr "Bunu yapmak için şartsız RETURNING tümcesi olan ON DELETE DO INSTEAD rule gerekmetedir." - -#: rewrite/rewriteHandler.c:1903 -msgid "cannot insert into a view" -msgstr "view yazma hatası" - -#: rewrite/rewriteHandler.c:1904 -msgid "You need an unconditional ON INSERT DO INSTEAD rule." -msgstr "ON INSERT DO INSTEAD rule gerekmektedir." - -#: rewrite/rewriteHandler.c:1909 -msgid "cannot update a view" -msgstr "view değiştirilemiyor" - -#: rewrite/rewriteHandler.c:1910 -msgid "You need an unconditional ON UPDATE DO INSTEAD rule." -msgstr "ON UPDATE DO INSTEAD rule gerekmektedir." - -#: rewrite/rewriteHandler.c:1915 -msgid "cannot delete from a view" -msgstr "view silme hatası" - -#: rewrite/rewriteHandler.c:1916 -msgid "You need an unconditional ON DELETE DO INSTEAD rule." -msgstr "ON DELETE DO INSTEAD rule gerekmektedir." - -#: snowball/dict_snowball.c:183 -#, c-format -msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\"" -msgstr "\"%s\" dili ve \"%s\" kodlaması için Snowball stemmer mevcut değildir" - -#: snowball/dict_snowball.c:215 -msgid "multiple Language parameters" -msgstr "çoklu Language parametreleri" - -#: snowball/dict_snowball.c:222 -#, c-format -msgid "unrecognized Snowball parameter: \"%s\"" -msgstr "tanımlanmamış Snowball parametresi: \"%s\" " - -#: snowball/dict_snowball.c:230 -msgid "missing Language parameter" -msgstr "eksik Language parametresi" - -#: ../port/chklocale.c:319 -#: ../port/chklocale.c:325 -#, fuzzy, c-format -msgid "could not determine encoding for locale \"%s\": codeset is \"%s\"" -msgstr "\"%s\" için junction ayarlanamadı: %s" - -#: ../port/chklocale.c:327 -msgid "Please report this to ." -msgstr "Bunu lütfen adresine bildiriniz." - -#: ../port/dirmod.c:75 -#: ../port/dirmod.c:88 -#: ../port/dirmod.c:101 -#, c-format -msgid "out of memory\n" -msgstr "bellek yetersiz\n" - -#: ../port/dirmod.c:267 -#, c-format -msgid "could not set junction for \"%s\": %s" -msgstr "\"%s\" için junction ayarlanamadı: %s" - -#: ../port/dirmod.c:270 -#, c-format -msgid "could not set junction for \"%s\": %s\n" -msgstr "\"%s\" için junction ayarlanamadı: %s\n" - -#: ../port/dirmod.c:309 -#, c-format -msgid "could not open directory \"%s\": %s\n" -msgstr "\"%s\" dizini açılamıyor: %s\n" - -#: ../port/dirmod.c:346 -#, c-format -msgid "could not read directory \"%s\": %s\n" -msgstr "\"%s\" dizini okunamıyor: %s\n" - -#: ../port/dirmod.c:429 -#, c-format -msgid "could not stat file or directory \"%s\": %s\n" -msgstr "\"%s\" dosya ya da dizini bulunamadı: %s\n" - -#: ../port/dirmod.c:456 -#: ../port/dirmod.c:473 -#, c-format -msgid "could not remove file or directory \"%s\": %s\n" -msgstr "\"%s\" dosya ya da dizin silme hatası: %s\n" - -#: ../port/exec.c:195 -#: ../port/exec.c:309 -#: ../port/exec.c:352 -#, c-format -msgid "could not identify current directory: %s" -msgstr "geçerli dizin belirlenemedi: %s" - -#: ../port/exec.c:214 -#, c-format -msgid "invalid binary \"%s\"" -msgstr "\"%s\" ikili dosyası geçersiz" - -#: ../port/exec.c:263 -#, c-format -msgid "could not read binary \"%s\"" -msgstr "\"%s\" ikili dosyası okunamıyor" - -#: ../port/exec.c:270 -#, c-format -msgid "could not find a \"%s\" to execute" -msgstr "çalıştırılacak \"%s\" bulunamadı" - -#: ../port/exec.c:325 -#: ../port/exec.c:361 -#, c-format -msgid "could not change directory to \"%s\"" -msgstr "çalışma dizini \"%s\" olarak değiştirilemedi" - -#: ../port/exec.c:340 -#, c-format -msgid "could not read symbolic link \"%s\"" -msgstr "sembolik link \"%s\" okuma hatası" - -#: ../port/exec.c:586 -#, c-format -msgid "child process exited with exit code %d" -msgstr "alt süreç %d kodu ile sonlandı" - -#: ../port/exec.c:590 -#, c-format -msgid "child process was terminated by exception 0x%X" -msgstr "alt süreç 0x%X exception tarafından sonlandırıldı" - -#: ../port/exec.c:599 -#, c-format -msgid "child process was terminated by signal %s" -msgstr "alt süreç %s sinyali tarafından sonlandırıldı" - -#: ../port/exec.c:602 -#, c-format -msgid "child process was terminated by signal %d" -msgstr "alt süreç %d sinyali tarafından sonlandırıldı" - -#: ../port/exec.c:606 -#, c-format -msgid "child process exited with unrecognized status %d" -msgstr "alt süreç beklenmeyen status kodu ile sonlandırıldı %d" - -#: ../port/open.c:113 -msgid "sharing violation" -msgstr "paylaşım çakışması" - -#: ../port/open.c:113 -msgid "lock violation" -msgstr "lock çakışması " - -#: ../port/open.c:112 -#, c-format -msgid "could not open file \"%s\": %s" -msgstr "\"%s\" dosyası açılamıyor: %s" - -#: ../port/open.c:114 -msgid "Continuing to retry for 30 seconds." -msgstr "30 saniyede bir denemeye devam ediliyor." - -#: ../port/open.c:115 -msgid "You might have antivirus, backup, or similar software interfering with the database system." -msgstr "Veritabanı sistemi ile etkileşen antivirüs, yedekleme yada benzeri yazılımlar olabilir." - -#: ../port/strerror.c:25 -#, c-format -msgid "unrecognized error %d" -msgstr "bilinmeyen hata %d" - -#: ../port/win32error.c:184 -#, c-format -msgid "mapped win32 error code %lu to %d" -msgstr "%lu win32 hata kodu %d koduna adreslendi" - -#: ../port/win32error.c:195 -#, c-format -msgid "unrecognized win32 error code: %lu" -msgstr "bilinmeyen win32 hata kodu: %lu" - -#~ msgid "multiple DELETE events specified" -#~ msgstr "birden fazla DELETE olayı belirtilmiştir" -#~ msgid "multiple UPDATE events specified" -#~ msgstr "birden fazla UPDATE olayı belirtilmiştir" - -#, fuzzy -#~ msgid "multiple TRUNCATE events specified" -#~ msgstr "birden fazla UPDATE olayı belirtilmiştir" -#~ msgid "could not create XPath object" -#~ msgstr "XPath nesnesi oluşturulamadı" -#~ msgid "fillfactor=%d is out of range (should be between %d and 100)" -#~ msgstr "fillfactor=%d kapsam dışıdır (%d ile 100 arasında olmalıdır)" -#~ msgid "GIN index does not support search with void query" -#~ msgstr "GIN dizini boş bir sorguyla aramayı desteklemiyor" -#~ msgid "invalid LC_COLLATE setting" -#~ msgstr "geçersiz LC_COLLATE ayarı" -#~ msgid "invalid LC_CTYPE setting" -#~ msgstr "geçersiz LC_TYPE ayarı" -#~ msgid "" -#~ "The database cluster was initialized with LOCALE_NAME_BUFLEN %d, but the " -#~ "server was compiled with LOCALE_NAME_BUFLEN %d." -#~ msgstr "" -#~ "Veritabanı clusteri LOCALE_NAME_BUFLEN %d ile ilklendirilmiştir, ancak " -#~ "sunucu LOCALE_NAME_BUFLEN %d ile derlenmiştir." -#~ msgid "It looks like you need to initdb or install locale support." -#~ msgstr "Yerel desteğini kurmanız ya da initdb çalıştırmanız gerekmektedir." -#~ msgid "log_restartpoints = %s" -#~ msgstr "log_restartpoints = %s" -#~ msgid "WAL ends before end time of backup dump" -#~ msgstr "WAL, yedek dump'ının bitiş zamanından önce sona ermiştir" -#~ msgid "syntax error: cannot back up" -#~ msgstr "sözdizimi hatası: geri diilemiyor" -#~ msgid "syntax error; also virtual memory exhausted" -#~ msgstr "sözdizimi hatası; ayrıca sanal bellek de dolmuştur" -#~ msgid "parser stack overflow" -#~ msgstr "parser stack overflow" -#~ msgid "failed to drop all objects depending on %s" -#~ msgstr "%s nesnesine bağlı nesnelerinin kaldırma işlemi başarısız oldu" -#~ msgid "there are objects dependent on %s" -#~ msgstr "%s nesnesine bağlı nesneler var." -#~ msgid "could not remove database directory \"%s\"" -#~ msgstr "\"%s\" veritabanı dizini kaldırılamıyor" -#~ msgid "multiple constraints named \"%s\" were dropped" -#~ msgstr "\"%s\" adlı birden fazla constraint drop edilmiş" -#~ msgid "constraint definition for check constraint \"%s\" does not match" -#~ msgstr "check kısıtlamasının \"%s\" kısıtlama tanımı uyuşmamaktadır" -#~ msgid "" -#~ "relation \"%s.%s\" contains more than \"max_fsm_pages\" pages with useful " -#~ "free space" -#~ msgstr "" -#~ "\"%s.%s\" nesnesi \"max_fsm_pages\" paramteresinde belirtilmiş sayısının " -#~ "üzerinde kullanılabilecek boş alan içeriyor" -#~ msgid "cannot change number of columns in view" -#~ msgstr "view içerisinde sütun sayısı değiştirilemez" -#~ msgid "" -#~ "unexpected Kerberos user name received from client (received \"%s\", " -#~ "expected \"%s\")" -#~ msgstr "" -#~ "İstemciden beklenmeyen Kerberos kullanıcı adı alınmış (alınan \"%s\", " -#~ "beklenen \"%s\")" -#~ msgid "Kerberos 5 not implemented on this server" -#~ msgstr "Kerberos 5 bu sunucuda desteklenmemektedir" -#~ msgid "GSSAPI not implemented on this server" -#~ msgstr "GSSAPI bu sunucuda desteklenmemektedir" - -#, fuzzy -#~ msgid "could not acquire SSPI credentials handle" -#~ msgstr "karşı tarafın kimlik bilgileri alınamadı: %m" - -#, fuzzy -#~ msgid "could not get security token from context" -#~ msgstr "SSL context oluşturma hatası: %s" -#~ msgid "unsafe permissions on private key file \"%s\"" -#~ msgstr "private key dosyası \"%s\" sakıncalı erişim haklarına sahip" -#~ msgid "" -#~ "File must be owned by the database user and must have no permissions for " -#~ "\"group\" or \"other\"." -#~ msgstr "" -#~ "Dosya, veritabanı sahibi kullanıcısına ait olmalı ve \"group\" ya da " -#~ "\"other\" kullanıcılarına erişim hakları verilmemelidir." -#~ msgid "" -#~ "cannot use authentication method \"crypt\" because password is MD5-" -#~ "encrypted" -#~ msgstr "" -#~ "şifreler MD5 algoritması ile şifrelenmiş olduğu için \"crypt\" kimlik " -#~ "doğrulama yöntemi kullanılamıyor" -#~ msgid "invalid entry in file \"%s\" at line %d, token \"%s\"" -#~ msgstr "\"%s\" dosyasında %d satırında, \"%s\" simgesinde geçersiz giriş" -#~ msgid "missing field in file \"%s\" at end of line %d" -#~ msgstr "\"%s\" dosyasında %d satırın sonunda eksik alan" -#~ msgid "cannot use Ident authentication without usermap field" -#~ msgstr "usermap fiels olmadan Ident kimlik doğrulaması kullanılamıyor" -#~ msgid "Ident protocol identifies remote user as \"%s\"" -#~ msgstr "Ident protokolü uzak kullanıcısını \"%s\" olarak tanıtıyor" -#~ msgid "missing FROM-clause entry in subquery for table \"%s\"" -#~ msgstr "\"%s\" tablosu için subquery tanımında FROM öğesi eksik" -#~ msgid "adding missing FROM-clause entry in subquery for table \"%s\"" -#~ msgstr "\"%s\" tablosu için subquery tanımında eksik FROM öğesi ekleniyor" -#~ msgid "could not set statistics collector timer: %m" -#~ msgstr "statistics collector zamanlayıcısı ayarlama hatası: %m" -#~ msgid "insufficient shared memory for free space map" -#~ msgstr "free space map için yetersiz shared memory" -#~ msgid "max_fsm_pages must exceed max_fsm_relations * %d" -#~ msgstr "" -#~ "max_fsm_pages değeri, max_fsm_relations * %d değerinden büyük olmalıdır" -#~ msgid "free space map contains %d pages in %d relations" -#~ msgstr "free space map %2$d nesnede %1$d sayfa içermektedir" -#~ msgid "" -#~ "A total of %.0f page slots are in use (including overhead).\n" -#~ "%.0f page slots are required to track all free space.\n" -#~ "Current limits are: %d page slots, %d relations, using %.0f kB." -#~ msgstr "" -#~ "Toplam %.0f sayfa slotu kullanılmıştır (overhead dahildir).\n" -#~ "Boş alanı takip etmek için %.0f sayfa slotuna ihtiyaç duyulmaktadır.\n" -#~ "Şu anki kimitleri: %d sayfa slotu, %d nesne, toplam: %.0f kB." -#~ msgid "max_fsm_relations(%d) equals the number of relations checked" -#~ msgstr "max_fsm_relations(%d) equals the number of relations checked" -#~ msgid "" -#~ "You have at least %d relations. Consider increasing the configuration " -#~ "parameter \"max_fsm_relations\"." -#~ msgstr "" -#~ "Nesne sayısı: %d. \"max_fsm_relations\" yapılandırma parametresini " -#~ "arttırmaya deneyebilirsiniz." -#~ msgid "number of page slots needed (%.0f) exceeds max_fsm_pages (%d)" -#~ msgstr "" -#~ "ihtiyaç duyulan page slot sayısı (%.0f), max_fsm_pages (%d) parametresini " -#~ "aşmaktadır" -#~ msgid "" -#~ "Consider increasing the configuration parameter \"max_fsm_pages\" to a " -#~ "value over %.0f." -#~ msgstr "" -#~ "\"max_fsm_pages\" yapılandırma parametresini %.0f değerine kadar " -#~ "yükseltmeyi deneyebilirsiniz." - -#, fuzzy -#~ msgid "could not fsync relation %u/%u/%u: %m" -#~ msgstr "nesne %u/%u/%u açma hatası: %m" -#~ msgid "unexpected delimiter at line %d of thesaurus file \"%s\"" -#~ msgstr "" -#~ "\"%2$s\" thesaurus dosyasında %1$d satırında beklenmeyen sınırlayıcı." -#~ msgid "unexpected end of line or lexeme at line %d of thesaurus file \"%s\"" -#~ msgstr "" -#~ "%d numaralı satırda, \"%s\" sözlük dosyasında, beklenmeyen satır sonu ya " -#~ "da sözcükbirim" - -#, fuzzy -#~ msgid "unexpected end of line at line %d of thesaurus file \"%s\"" -#~ msgstr "" -#~ "\"%2$s\" nesnesinin %1$u bloğunda dosya sonundan sonra beklenmeyen veri" - -#, fuzzy -#~ msgid "syntax error at line %d of affix file \"%s\"" -#~ msgstr "%s geçmiş dosyasında sözdizimi hatası" -#~ msgid "invalid argument for power function" -#~ msgstr "power fonksiyonu için geçersin argüman" -#~ msgid "not unique \"S\"" -#~ msgstr "\"S\" tek değildir" -#~ msgid "invalid AM/PM string" -#~ msgstr "geçersiz AM/PM satırı" -#~ msgid "\"TZ\"/\"tz\" not supported" -#~ msgstr "\"TZ\"/\"tz\" desteklenmiyor" -#~ msgid "January" -#~ msgstr "Ocak" -#~ msgid "February" -#~ msgstr "Şubat" -#~ msgid "March" -#~ msgstr "Mart" -#~ msgid "April" -#~ msgstr "Nisan" -#~ msgid "May" -#~ msgstr "Mayıs" -#~ msgid "June" -#~ msgstr "Haziran" -#~ msgid "July" -#~ msgstr "Temmuz" -#~ msgid "August" -#~ msgstr "Ağustos" -#~ msgid "September" -#~ msgstr "Eylül" -#~ msgid "October" -#~ msgstr "Ekim" -#~ msgid "November" -#~ msgstr "Kasım" -#~ msgid "December" -#~ msgstr "Aralık" -#~ msgid "Jan" -#~ msgstr "Oca" -#~ msgid "Feb" -#~ msgstr "Şub" -#~ msgid "Mar" -#~ msgstr "Mar" -#~ msgid "Apr" -#~ msgstr "Nis" -#~ msgid "S:May" -#~ msgstr "S:May" -#~ msgid "Jun" -#~ msgstr "Haz" -#~ msgid "Jul" -#~ msgstr "Tem" -#~ msgid "Aug" -#~ msgstr "Auğ" -#~ msgid "Sep" -#~ msgstr "Eyl" -#~ msgid "Oct" -#~ msgstr "Eki" -#~ msgid "Nov" -#~ msgstr "Kas" -#~ msgid "Dec" -#~ msgstr "Ara" -#~ msgid "Sunday" -#~ msgstr "Pazar" -#~ msgid "Monday" -#~ msgstr "Pazartesi" -#~ msgid "Tuesday" -#~ msgstr "Salı" -#~ msgid "Wednesday" -#~ msgstr "Çarşamba" -#~ msgid "Thursday" -#~ msgstr "Perşembe" -#~ msgid "Friday" -#~ msgstr "Cuma" -#~ msgid "Saturday" -#~ msgstr "Cumartesi" -#~ msgid "Sun" -#~ msgstr "Pz" -#~ msgid "Mon" -#~ msgstr "Pzt" -#~ msgid "Tue" -#~ msgstr "Sal" -#~ msgid "Wed" -#~ msgstr "Çar" -#~ msgid "Thu" -#~ msgstr "Prş" -#~ msgid "Fri" -#~ msgstr "Cum" -#~ msgid "Sat" -#~ msgstr "Cmt" -#~ msgid "AM/PM hour must be between 1 and 12" -#~ msgstr "AM/PM saati 1 ile 12 arasında olmalıdır" -#~ msgid "UTF-16 to UTF-8 translation failed: %lu" -#~ msgstr "UTF-16'dan UTF-8'e dönüştürme hatası: %lu" -#~ msgid "cannot calculate week number without year information" -#~ msgstr "yıl bilgisi olmadan haftanın günü hesaplanamaz" -#~ msgid "query requires full scan, which is not supported by GIN indexes" -#~ msgstr "sorgu tam tarama gerektiriyor; ancak GIN indexler bunu desteklemez" -#~ msgid "" -#~ "@@ operator does not support lexeme weight restrictions in GIN index " -#~ "searches" -#~ msgstr "" -#~ "@@ operatörü GIN index aramalarında sözcükbirim ağırlık kısıtlamalarını " -#~ "desteklemez" -#~ msgid "Use the @@@ operator instead." -#~ msgstr "Bunun yerine @@@ operatörünü kullanın." -#~ msgid "Resource Usage / Free Space Map" -#~ msgstr "Kaynak Kullanımı / Boş Alan Haritası" -#~ msgid "Prints the parse tree to the server log." -#~ msgstr "Ayrıştırma ağacını sunucu günlüğüne yazıyor." -#~ msgid "Prints the parse tree after rewriting to server log." -#~ msgstr "" -#~ "Ayrıştırma ağacını rewrite ilmeinden sonra sunucu günlüğüne yazıyor." -#~ msgid "Prints the execution plan to server log." -#~ msgstr "Yürütme planını sunucu günlüğüne yazıyor." -#~ msgid "Uses the indented output format for EXPLAIN VERBOSE." -#~ msgstr "EXPLAIN VERBOSE için girintili çıktı biçimini kullanıyor." -#~ msgid "" -#~ "Sets the maximum number of tables and indexes for which free space is " -#~ "tracked." -#~ msgstr "Boş alanı takibi yapılacak tabloların en büyük sayısı." -#~ msgid "" -#~ "Sets the maximum number of disk pages for which free space is tracked." -#~ msgstr "Boş alanı takibi yapılacak disk sayfaların en büyük sayısı." -#~ msgid "Valid values are ON, OFF, and SAFE_ENCODING." -#~ msgstr "Geçerli değerler: ON, OFF ve SAFE_ENCODING." -#~ msgid "" -#~ "Each SQL transaction has an isolation level, which can be either \"read " -#~ "uncommitted\", \"read committed\", \"repeatable read\", or \"serializable" -#~ "\"." -#~ msgstr "" -#~ "Her SQL transaction bir isolation level'e sahiptir, geçerli değerler: " -#~ "\"read uncommitted\", \"read committed\", \"repeatable read\", " -#~ "\"serializable\"." - -#, fuzzy -#~ msgid "Each session can be either \"origin\", \"replica\", or \"local\"." -#~ msgstr "Bir oturum \"origin\", \"replica\" veya \"local\" olabilir." - -#, fuzzy -#~ msgid "Sets realm to match Kerberos and GSSAPI users against." -#~ msgstr "Kerberos sevice adını belirtiyor." -#~ msgid "Sets the hostname of the Kerberos server." -#~ msgstr "Kerberos sunucusunun bilgisayar adını belirtiyor." -#~ msgid "This can be set to advanced, extended, or basic." -#~ msgstr "Bu değer şunlardan biri olabilir: advanced, extended, or basic." -#~ msgid "" -#~ "Valid values are LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, " -#~ "LOCAL7." -#~ msgstr "" -#~ "Geçerli değerler: LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, " -#~ "LOCAL7." -#~ msgid "Valid values are BASE64 and HEX." -#~ msgstr "Geçerli değerler: BASE64 ve HEX." -#~ msgid "Valid values are DOCUMENT and CONTENT." -#~ msgstr "Geçerli değerler: DOCUMENT ve CONTENT." -#~ 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 "" -#~ "Geçerli değerler: DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, " -#~ "WARNING, ERROR, LOG, FATAL, and PANIC. Her düzey kendisinden daha büyük " -#~ "düzeyleri de kapsıyor." -#~ msgid "" -#~ "All SQL statements that cause an error of the specified level or a higher " -#~ "level are logged." -#~ msgstr "" -#~ "Belirtilen ya da daha üst düzeyde hata yaratan SQL sorguları " -#~ "loglanacaktır." -#~ msgid "" -#~ "parameter \"%s\" cannot be changed after server start; configuration file " -#~ "change ignored" -#~ msgstr "" -#~ "\"%s\" parametresi, sunucu başlatıldıktan sonra değiştirilemez; " -#~ "yapılandırma dosyası yok sayıldı" - -#, fuzzy -#~ msgid "invalid value for parameter \"%s\": \"%d\"" -#~ msgstr "\"%s\" seçeneği için geçersiz değer: \"%s\"" -#~ msgid "cannot truncate table \"%s\" because it has pending trigger events" -#~ msgstr "" -#~ "\"%s\" tablosuna bağlı trigger olayları bulunduğu için truncate işlemi " -#~ "yapılamadı" - -#, fuzzy -#~ msgid "cannot alter table \"%s\" because it has pending trigger events" -#~ msgstr "" -#~ "\"%s\" tablosuna bağlı trigger olayları bulunduğu için truncate işlemi " -#~ "yapılamadı" -#~ 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: buffer sayısı (-B), izin verilen bağlantı sayısından (-N) en az iki " -#~ "kat daha büyük ve 16'dan daha küçük olmamalıdır\n" - -#, fuzzy -#~ msgid "invalid regis pattern: \"%s\"" -#~ msgstr "geçirsiz rol adı \"%s\"" - diff --git a/src/backend/po/zh_CN.po b/src/backend/po/zh_CN.po index 3c25df610a..46e2070e00 100644 --- a/src/backend/po/zh_CN.po +++ b/src/backend/po/zh_CN.po @@ -1,16251 +1,17669 @@ # simplified Chinese translation file for PostgreSQL server # Weiping He , 2001. # -# $PostgreSQL: pgsql/src/backend/po/zh_CN.po,v 1.10 2005/01/06 09:07:12 petere Exp $ -# msgid "" msgstr "" "Project-Id-Version: postgres (PostgreSQL 9.0)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-10-01 14:43+0000\n" -"PO-Revision-Date: 2010-10-01 13:03+0800\n" +"POT-Creation-Date: 2013-01-29 13:52+0000\n" +"PO-Revision-Date: 2013-06-24 14:11-0400\n" "Last-Translator: Weibin \n" "Language-Team: Chinese (Simplified)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: main/main.c:230 -#, c-format -msgid "%s: setsysinfo failed: %s\n" -msgstr "%s: setsysinfo 失败: %s\n" - -#: main/main.c:249 +#: postmaster/bgwriter.c:483 #, c-format -msgid "%s: WSAStartup failed: %d\n" -msgstr "%s: WSAStartup 失败: %d\n" +msgid "checkpoints are occurring too frequently (%d second apart)" +msgid_plural "checkpoints are occurring too frequently (%d seconds apart)" +msgstr[0] "检查点事件发生过于频繁(%d 秒间隔)" -#: main/main.c:268 -#, c-format +#: postmaster/bgwriter.c:487 msgid "" -"%s is the PostgreSQL server.\n" -"\n" -msgstr "" -"%s 是 PostgreSQL 服务器.\n" -"\n" +"Consider increasing the configuration parameter \"checkpoint_segments\"." +msgstr "认为增加配置参数 \"checkpoint_segments\"." -#: main/main.c:269 +#: postmaster/bgwriter.c:599 #, c-format -msgid "" -"Usage:\n" -" %s [OPTION]...\n" -"\n" -msgstr "" -"用法:\n" -" %s [选项]...\n" -"\n" +msgid "transaction log switch forced (archive_timeout=%d)" +msgstr "强制切换事务日志 (archive_timeout=%d)" -#: main/main.c:270 -#, c-format -msgid "Options:\n" -msgstr "选项:\n" +#: postmaster/bgwriter.c:1062 +msgid "checkpoint request failed" +msgstr "检查点请求失败" -#: main/main.c:272 -#, c-format -msgid " -A 1|0 enable/disable run-time assert checking\n" -msgstr " -A 1|0 打开/关闭运行时断言检查\n" +#: postmaster/bgwriter.c:1063 +msgid "Consult recent messages in the server log for details." +msgstr "详细信息请参考服务器日志." -#: main/main.c:274 +#: postmaster/bgwriter.c:1245 #, c-format -msgid " -B NBUFFERS number of shared buffers\n" -msgstr " -B NBUFFERS 共享缓冲区的数量\n" +msgid "compacted fsync request queue from %d entries to %d entries" +msgstr "将fsync请求队列从%d压缩至%d项" -#: main/main.c:275 +#: postmaster/pgstat.c:330 #, c-format -msgid " -c NAME=VALUE set run-time parameter\n" -msgstr " -c 名字=数值 设置运行时参数\n" +msgid "could not resolve \"localhost\": %s" +msgstr "无法解析 \"localhost\": %s" -#: main/main.c:276 -#, c-format -msgid " -d 1-5 debugging level\n" -msgstr " -d 1-5 调试级别\n" +#: postmaster/pgstat.c:353 +msgid "trying another address for the statistics collector" +msgstr "为统计信息收集器尝试另一个地址" -#: main/main.c:277 +#: postmaster/pgstat.c:362 #, c-format -msgid " -D DATADIR database directory\n" -msgstr " -D 数据目录 数据库目录\n" +msgid "could not create socket for statistics collector: %m" +msgstr "无法为统计收集器创建套接字: %m" -#: main/main.c:278 +#: postmaster/pgstat.c:374 #, c-format -msgid " -e use European date input format (DMY)\n" -msgstr " -e 使用欧洲日期输入格式 (DMY)\n" +msgid "could not bind socket for statistics collector: %m" +msgstr "无法绑定统计收集器的套接字: %m" -#: main/main.c:279 +#: postmaster/pgstat.c:385 #, c-format -msgid " -F turn fsync off\n" -msgstr " -F 关闭 fsync\n" +msgid "could not get address of socket for statistics collector: %m" +msgstr "无法获得统计收集器的套接字地址: %m" -#: main/main.c:280 +#: postmaster/pgstat.c:401 #, c-format -msgid " -h HOSTNAME host name or IP address to listen on\n" -msgstr " -h 主机名 侦听的主机名或者 IP 地址\n" +msgid "could not connect socket for statistics collector: %m" +msgstr "无法联接统计收集器的套接字: %m" -#: main/main.c:281 +#: postmaster/pgstat.c:422 #, c-format -msgid " -i enable TCP/IP connections\n" -msgstr " -i 打开 TCP/IP 联接\n" +msgid "could not send test message on socket for statistics collector: %m" +msgstr "无法为统计收集器在套接字上发送测试信息: %m" -#: main/main.c:282 +#: postmaster/pgstat.c:448 postmaster/pgstat.c:2996 #, c-format -msgid " -k DIRECTORY Unix-domain socket location\n" -msgstr " -k 目录 Unix 域套接字的位置\n" +msgid "select() failed in statistics collector: %m" +msgstr "在统计收集器中 select() 失败: %m" -#: main/main.c:284 -#, c-format -msgid " -l enable SSL connections\n" -msgstr " -l 打开 SSL 联接\n" +#: postmaster/pgstat.c:463 +msgid "test message did not get through on socket for statistics collector" +msgstr "统计收集器的测试信息没有通过套接字: %m" -#: main/main.c:286 +#: postmaster/pgstat.c:478 #, c-format -msgid " -N MAX-CONNECT maximum number of allowed connections\n" -msgstr " -N MAX-CONNECT 允许建立的最大联接数目\n" +msgid "could not receive test message on socket for statistics collector: %m" +msgstr "无法为统计收集器在套接字上接收测试信息: %m" -#: main/main.c:287 +#: postmaster/pgstat.c:488 +msgid "incorrect test message transmission on socket for statistics collector" +msgstr "统计收集器在套接字上不正确的测试信息 transmission: %m" + +#: postmaster/pgstat.c:511 #, c-format -msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n" -msgstr " -o OPTIONS 把 \"OPTIONS\" 传递给每一个后端服务器进程(已作废)\n" +msgid "could not set statistics collector socket to nonblocking mode: %m" +msgstr "无法把统计收集器的套接字设置为非阻塞模式: %m" -#: main/main.c:288 +#: postmaster/pgstat.c:521 +msgid "disabling statistics collector for lack of working socket" +msgstr "当缺乏可用套接字时取消统计收集器" + +#: postmaster/pgstat.c:623 #, c-format -msgid " -p PORT port number to listen on\n" -msgstr " -p PORT 监听的端口号\n" +msgid "could not fork statistics collector: %m" +msgstr "无法派生 (fork) 统计收集器: %m" -#: main/main.c:289 +#: postmaster/pgstat.c:1153 postmaster/pgstat.c:1177 postmaster/pgstat.c:1208 +msgid "must be superuser to reset statistics counters" +msgstr "必须为超级用户才可以重置统计计数器" + +#: postmaster/pgstat.c:1184 utils/adt/pgstatfuncs.c:1547 #, c-format -msgid " -s show statistics after each query\n" -msgstr " -s 每个查询后显示统计信息\n" +msgid "unrecognized reset target: \"%s\"" +msgstr "未识别的重置目标:\"%s\"" -#: main/main.c:290 +#: postmaster/pgstat.c:1185 utils/adt/pgstatfuncs.c:1548 +msgid "Target must be \"bgwriter\"." +msgstr "目标必须是\"bgwriter\"." + +#: postmaster/pgstat.c:2975 #, c-format -msgid " -S WORK-MEM set amount of memory for sorts (in kB)\n" -msgstr " -S WORK-MEM 设置排序内存数量 (单位为 kB)\n" +msgid "poll() failed in statistics collector: %m" +msgstr "在统计收集器中执行poll()失败: %m" -#: main/main.c:291 +#: postmaster/pgstat.c:3020 #, c-format -msgid " --NAME=VALUE set run-time parameter\n" -msgstr " --NAME=VALUE 设置运行时参数\n" +msgid "could not read statistics message: %m" +msgstr "无法读取统计信息: %m" -#: main/main.c:292 +#: postmaster/pgstat.c:3291 #, c-format -msgid " --describe-config describe configuration parameters, then exit\n" -msgstr " --describe-config 描述配置参数, 然后退出\n" +msgid "could not open temporary statistics file \"%s\": %m" +msgstr "无法打开临时统计文件 \"%s\": %m" -#: main/main.c:293 +#: postmaster/pgstat.c:3363 #, c-format -msgid " --help show this help, then exit\n" -msgstr " --help 显示此帮助信息, 然后退出\n" +msgid "could not write temporary statistics file \"%s\": %m" +msgstr "无法写临时统计文件 \"%s\": %m" -#: main/main.c:294 +#: postmaster/pgstat.c:3372 #, c-format -msgid " --version output version information, then exit\n" -msgstr " --version 输出版本信息, 然后退出\n" +msgid "could not close temporary statistics file \"%s\": %m" +msgstr "无法关闭临时统计文件 \"%s\": %m" -#: main/main.c:296 +#: postmaster/pgstat.c:3380 #, c-format -msgid "" -"\n" -"Developer options:\n" -msgstr "" -"\n" -"开发人员选项:\n" +msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" +msgstr "无法把临时统计文件 \"%s\" 重命名为 \"%s\": %m" -#: main/main.c:297 +#: postmaster/pgstat.c:3486 postmaster/pgstat.c:3715 #, 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 "could not open statistics file \"%s\": %m" +msgstr "无法打开统计文件 \"%s\": %m" -#: main/main.c:298 +#: postmaster/pgstat.c:3498 postmaster/pgstat.c:3508 postmaster/pgstat.c:3530 +#: postmaster/pgstat.c:3545 postmaster/pgstat.c:3608 postmaster/pgstat.c:3626 +#: postmaster/pgstat.c:3642 postmaster/pgstat.c:3660 postmaster/pgstat.c:3676 +#: postmaster/pgstat.c:3727 postmaster/pgstat.c:3738 #, c-format -msgid "" -" -n do not reinitialize shared memory after abnormal exit\n" -msgstr " -n 在异常退出之后不再重新初始化共享内存\n" +msgid "corrupted statistics file \"%s\"" +msgstr "统计文件损坏\"%s\"" -#: main/main.c:299 +#: postmaster/pgstat.c:4036 +msgid "database hash table corrupted during cleanup --- abort" +msgstr "清理过程中数据库散列表毁坏 --- 终止" + +#: postmaster/autovacuum.c:359 #, c-format -msgid " -O allow system table structure changes\n" -msgstr " -O 允许改变系统表结构\n" +msgid "could not fork autovacuum launcher process: %m" +msgstr "无法派生autovacuum启动进程: %m" -#: main/main.c:300 +#: postmaster/autovacuum.c:404 +msgid "autovacuum launcher started" +msgstr "已启动autovacuum" + +#: postmaster/autovacuum.c:781 +msgid "autovacuum launcher shutting down" +msgstr "正在关闭autovacuum启动进程" + +#: postmaster/autovacuum.c:1416 #, c-format -msgid " -P disable system indexes\n" -msgstr " -P 关闭系统索引\n" +msgid "could not fork autovacuum worker process: %m" +msgstr "无法派生autovacuum工作进程: %m" -#: main/main.c:301 +#: postmaster/autovacuum.c:1634 #, c-format -msgid " -t pa|pl|ex show timings after each query\n" -msgstr " -t pa|pl|ex 每个查询后显示计时\n" +msgid "autovacuum: processing database \"%s\"" +msgstr "autovacuum: 正在处理数据库 \"%s\"" -#: main/main.c:302 +#: postmaster/autovacuum.c:2037 #, c-format -msgid " -T send SIGSTOP to all backend servers if one dies\n" -msgstr "" -" -T 如果一个后端进程退出, 那么向所有后端进程发送 SIGSTOP\n" +msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"" +msgstr "autovacuum: 正在数据库\"%3$s\"中删除遗留的临时表\"%1$s\".\"%2$s\"" -#: main/main.c:303 +#: postmaster/autovacuum.c:2049 #, c-format -msgid " -W NUM wait NUM seconds to allow attach from a debugger\n" -msgstr " -W NUM 等待 NUM 秒, 以便允许调试器加入调试\n" +msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\"" +msgstr "autovacuum: 在数据库\"%3$s\"中找到遗留的临时表\"%1$s\".\"%2$s\"" -#: main/main.c:305 +#: postmaster/autovacuum.c:2319 #, c-format -msgid "" -"\n" -"Options for single-user mode:\n" -msgstr "" -"\n" -"单用户模式的选项:\n" +msgid "automatic vacuum of table \"%s.%s.%s\"" +msgstr "对表\"%s.%s.%s\"进行自动清理" -# help.c:109 -#: main/main.c:306 +#: postmaster/autovacuum.c:2322 #, c-format -msgid " --single selects single-user mode (must be first argument)\n" -msgstr " --single 选择单用户模式(必须是第一个参数)\n" +msgid "automatic analyze of table \"%s.%s.%s\"" +msgstr "对表\"%s.%s.%s\"进行自动分析" -# help.c:136 -#: main/main.c:307 +#: postmaster/autovacuum.c:2808 +msgid "autovacuum not started because of misconfiguration" +msgstr "因为配制错误,而无法启动autovacuum" + +#: postmaster/autovacuum.c:2809 +msgid "Enable the \"track_counts\" option." +msgstr "启用选项\"track_counts\" " + +#: postmaster/syslogger.c:418 #, c-format -msgid " DBNAME database name (defaults to user name)\n" -msgstr " DBNAME 数据库名称(对用户名缺省)\n" +msgid "select() failed in logger process: %m" +msgstr "日志进程中的 select() 失败: %m" -#: main/main.c:308 +#: postmaster/syslogger.c:430 postmaster/syslogger.c:1014 #, c-format -msgid " -d 0-5 override debugging level\n" -msgstr " -d 1-5 覆盖调试级别\n" +msgid "could not read from logger pipe: %m" +msgstr "无法从日志管道读取: %m" -#: main/main.c:309 +#: postmaster/syslogger.c:477 +msgid "logger shutting down" +msgstr "日志正在关闭" + +#: postmaster/syslogger.c:521 postmaster/syslogger.c:535 #, c-format -msgid " -E echo statement before execution\n" -msgstr " -E 执行前显示查询\n" +msgid "could not create pipe for syslog: %m" +msgstr "无法为统计日志 (syslog) 创建管道: %m" -#: main/main.c:310 +#: postmaster/syslogger.c:571 #, c-format -msgid " -j do not use newline as interactive query delimiter\n" -msgstr " -j 不使用新行作为交互查询的分隔符\n" +msgid "could not fork system logger: %m" +msgstr "无法派生 (fork) 系统日志: %m" -#: main/main.c:311 main/main.c:316 +#: postmaster/syslogger.c:602 #, c-format -msgid " -r FILENAME send stdout and stderr to given file\n" -msgstr " -r FILENAME 把标准输出和标准错误发送到指定的文件中\n" +msgid "could not redirect stdout: %m" +msgstr "无法重定向到标准输出 (stdout) : %m" -#: main/main.c:313 +#: postmaster/syslogger.c:607 postmaster/syslogger.c:625 #, c-format -msgid "" -"\n" -"Options for bootstrapping mode:\n" -msgstr "" -"\n" -"引导模式的选项:\n" +msgid "could not redirect stderr: %m" +msgstr "无法重定向到标准错误 (stderr) : %m" -#: main/main.c:314 +#: postmaster/syslogger.c:969 #, c-format -msgid " --boot selects bootstrapping mode (must be first argument)\n" -msgstr " --boot 选择引导模式(必须是第一个参数)\n" +msgid "could not write to log file: %s\n" +msgstr "无法写入日志文件: %s\n" -#: main/main.c:315 +#: postmaster/syslogger.c:1095 #, c-format -msgid "" -" DBNAME database name (mandatory argument in bootstrapping mode)\n" -msgstr " DBNAME 数据库名称(在引导模式中是必选参数)\n" +msgid "could not open log file \"%s\": %m" +msgstr "无法打开事务日志文件 \"%s\": %m" -#: main/main.c:317 -#, c-format -msgid " -x NUM internal use\n" -msgstr " -x NUM 内部使用\n" +#: postmaster/syslogger.c:1157 postmaster/syslogger.c:1201 +msgid "disabling automatic rotation (use SIGHUP to re-enable)" +msgstr "取消自动轮寻 (使用 SIGHUP re-enable)" -#: main/main.c:319 +#: postmaster/pgarch.c:158 #, 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 "could not fork archiver: %m" +msgstr "无法 fork archiver: %m" -#: main/main.c:333 -msgid "" -"\"root\" execution of the PostgreSQL server is not permitted.\n" -"The server must be started under an unprivileged user ID to prevent\n" -"possible system security compromise. See the documentation for\n" -"more information on how to properly start the server.\n" -msgstr "" -"不允许 \"root\" 执行 PostgreSQL 服务器.\n" -"服务器必须以一个非特权的用户身份启动以避免\n" -"可能的系统安全性问题. 参阅文档获取更多\n" -"有关如何正确启动服务器的信息.\n" +#: postmaster/pgarch.c:450 +msgid "archive_mode enabled, yet archive_command is not set" +msgstr "已启用归档模式参数archive_mode,但是还没有设置参数archive_command is" -#: main/main.c:350 +#: postmaster/pgarch.c:465 #, c-format -msgid "%s: real and effective user IDs must match\n" -msgstr "%s: 真实和有效用户标识必须相互匹配\n" +msgid "transaction log file \"%s\" could not be archived: too many failures" +msgstr "事务日志文件 \"%s\" 无法归档: 失败次数太多" -#: main/main.c:357 -msgid "" -"Execution of PostgreSQL by a user with administrative permissions is not\n" -"permitted.\n" -"The server must be started under an unprivileged user ID to prevent\n" -"possible system security compromises. See the documentation for\n" -"more information on how to properly start the server.\n" -msgstr "" -"不允许管理员权限的用户运行 PostgreSQL 服务器.\n" -"服务器必须以一个非特权的用户身份启动以避免\n" -"可能的系统安全性问题. 参阅文档获取更多\n" -"有关如何正确启动服务器的信息.\n" +#: postmaster/pgarch.c:568 +#, c-format +msgid "archive command failed with exit code %d" +msgstr "归档命令执行失败,退出代码为 %d" -#: main/main.c:378 +#: postmaster/pgarch.c:570 postmaster/pgarch.c:580 postmaster/pgarch.c:587 +#: postmaster/pgarch.c:593 postmaster/pgarch.c:602 #, c-format -msgid "%s: invalid effective UID: %d\n" -msgstr "%s: 无效 UID: %d\n" +msgid "The failed archive command was: %s" +msgstr "执行失败的归档命令是: %s" -#: main/main.c:391 +#: postmaster/pgarch.c:577 #, c-format -msgid "%s: could not determine user name (GetUserName failed)\n" -msgstr "%s: 无法确定用户名称 (GetUserName 失败)\n" +msgid "archive command was terminated by exception 0x%X" +msgstr "归档命令被异常 0x%X 终止" + +#: postmaster/pgarch.c:579 postmaster/postmaster.c:2888 +msgid "" +"See C include file \"ntstatus.h\" for a description of the hexadecimal value." +msgstr "关于对16进制值的描述, 参见C语言的引用文件 \"ntstatus.h\" " -#: tsearch/wparser_def.c:2533 +#: postmaster/pgarch.c:584 #, c-format -msgid "unrecognized headline parameter: \"%s\"" -msgstr "未识别的标题参数: \"%s\"" +msgid "archive command was terminated by signal %d: %s" +msgstr "归档命令被信号%d终止:%s" -#: tsearch/wparser_def.c:2542 -msgid "MinWords should be less than MaxWords" -msgstr "MinWords的值应该小于MaxWords的值" +#: postmaster/pgarch.c:591 +#, c-format +msgid "archive command was terminated by signal %d" +msgstr "归档命令被信号%d终止" -#: tsearch/wparser_def.c:2546 -msgid "MinWords should be positive" -msgstr "MinWord应该是正数." +#: postmaster/pgarch.c:600 +#, c-format +msgid "archive command exited with unrecognized status %d" +msgstr "归档命令已退出, 未知状态 %d" -#: tsearch/wparser_def.c:2550 -msgid "ShortWord should be >= 0" -msgstr "ShortWord应该大于等于0" +#: postmaster/pgarch.c:612 +#, c-format +msgid "archived transaction log file \"%s\"" +msgstr "归档事务日志文件 \"%s\"" -#: tsearch/wparser_def.c:2554 -msgid "MaxFragments should be >= 0" -msgstr "MaxFragments应该大于等于0" +#: postmaster/pgarch.c:661 +#, c-format +msgid "could not open archive status directory \"%s\": %m" +msgstr "无法打开归档状态目录 \"%s\": %m" -#: tsearch/dict_ispell.c:52 tsearch/dict_thesaurus.c:615 -msgid "multiple DictFile parameters" -msgstr "多个DictFile参数" +#: postmaster/pgarch.c:715 access/transam/xlog.c:4613 +#: access/transam/xlog.c:5573 access/transam/xlog.c:5626 +#: access/transam/xlog.c:6415 +#, c-format +msgid "could not rename file \"%s\" to \"%s\": %m" +msgstr "无法把文件 \"%s\" 重命名为 \"%s\": %m" -#: tsearch/dict_ispell.c:63 -msgid "multiple AffFile parameters" -msgstr "多个AffFile参数" +#: postmaster/postmaster.c:574 +#, c-format +msgid "%s: invalid argument for option -f: \"%s\"\n" +msgstr "%s: 选项-f的参数无效: \"%s\"\n" -#: tsearch/dict_ispell.c:74 tsearch/dict_simple.c:50 -#: snowball/dict_snowball.c:206 -msgid "multiple StopWords parameters" -msgstr "多个 StopWords参数" +#: postmaster/postmaster.c:660 +#, c-format +msgid "%s: invalid argument for option -t: \"%s\"\n" +msgstr "%s: -t选项的参数无效: \"%s\"\n" -#: tsearch/dict_ispell.c:82 +#: postmaster/postmaster.c:683 bootstrap/bootstrap.c:277 tcop/postgres.c:3437 #, c-format -msgid "unrecognized Ispell parameter: \"%s\"" -msgstr "未识别的Ispell参数: \"%s\"" +msgid "--%s requires a value" +msgstr "--%s 需要一个值" -#: tsearch/dict_ispell.c:96 -msgid "missing AffFile parameter" -msgstr "丢失AffFile参数" +#: postmaster/postmaster.c:688 bootstrap/bootstrap.c:282 tcop/postgres.c:3442 +#, c-format +msgid "-c %s requires a value" +msgstr "-c %s 需要一个值" -#: tsearch/dict_ispell.c:102 tsearch/dict_thesaurus.c:639 -msgid "missing DictFile parameter" -msgstr "丢失DictFile参数" +#: postmaster/postmaster.c:700 postmaster/postmaster.c:713 +#: bootstrap/bootstrap.c:293 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "请用 \"%s --help\" 获取更多的信息.\n" -#: tsearch/dict_simple.c:59 -msgid "multiple Accept parameters" -msgstr "多个接受参数" +#: postmaster/postmaster.c:711 +#, c-format +msgid "%s: invalid argument: \"%s\"\n" +msgstr "%s: 无效参数: \"%s\"\n" -#: tsearch/dict_simple.c:67 +#: postmaster/postmaster.c:736 #, c-format -msgid "unrecognized simple dictionary parameter: \"%s\"" -msgstr "未识别简单字典参数:\"%s\"" +msgid "%s: superuser_reserved_connections must be less than max_connections\n" +msgstr "%s: 超级用户保留联接数必须小于最大联接数\n" -#: tsearch/dict_synonym.c:119 +#: postmaster/postmaster.c:741 #, c-format -msgid "unrecognized synonym parameter: \"%s\"" -msgstr "未识别的同义词参数: \"%s\"" +msgid "%s: max_wal_senders must be less than max_connections\n" +msgstr "%s: max_wal_senders必须小于最大连接数\n" -#: tsearch/dict_synonym.c:126 -msgid "missing Synonyms parameter" -msgstr "丢失同义词参数" +#: postmaster/postmaster.c:746 +msgid "" +"WAL archival (archive_mode=on) requires wal_level \"archive\" or " +"\"hot_standby\"" +msgstr "" +"WAL归档的设置(archive_mode=on)要求wal_level设置为\"archive\"或\"hot_standby\"" -#: tsearch/dict_synonym.c:133 +#: postmaster/postmaster.c:749 +msgid "" +"WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or " +"\"hot_standby\"" +msgstr "" +"WAL 流复制的设置(max_wal_senders > 0)要求将wal_level设置为\"archive\"或" +"\"hot_standby\"" + +#: postmaster/postmaster.c:757 #, c-format -msgid "could not open synonym file \"%s\": %m" -msgstr "无法打开synonym文件 \"%s\": %m" +msgid "%s: invalid datetoken tables, please fix\n" +msgstr "%s: 无效的 datetoken 表, 请修复\n" -#: tsearch/dict_thesaurus.c:180 +#: postmaster/postmaster.c:857 +msgid "invalid list syntax for \"listen_addresses\"" +msgstr "无效的 \"listen_addresses\" 语法" + +#: postmaster/postmaster.c:887 #, c-format -msgid "could not open thesaurus file \"%s\": %m" -msgstr "无法打开同义词词典文件 \"%s\": %m" +msgid "could not create listen socket for \"%s\"" +msgstr "无法为 \"%s\" 创建监听套接字" -#: tsearch/dict_thesaurus.c:213 -msgid "unexpected delimiter" -msgstr "意外出现的分隔符" +# fe-connect.c:891 +#: postmaster/postmaster.c:893 +msgid "could not create any TCP/IP sockets" +msgstr "无法创建TCP/IP套接字" -#: tsearch/dict_thesaurus.c:263 tsearch/dict_thesaurus.c:279 -msgid "unexpected end of line or lexeme" -msgstr "意外出现的行或词汇末尾" +#: postmaster/postmaster.c:944 +msgid "could not create Unix-domain socket" +msgstr "无法创建 Unix-domain 套接字" -#: tsearch/dict_thesaurus.c:288 -msgid "unexpected end of line" -msgstr "意外的输入末尾" +#: postmaster/postmaster.c:952 +msgid "no socket created for listening" +msgstr "没有为监听创建套接字" -#: tsearch/dict_thesaurus.c:412 -#, c-format -msgid "" -"thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)" -msgstr "(规则 %2$d)子字典没有识别同义词字典样例词\"%1$s\" " +# fe-lobj.c:412 +#: postmaster/postmaster.c:991 +msgid "could not create I/O completion port for child queue" +msgstr "无法为子队列创建I/O完成端口" -#: tsearch/dict_thesaurus.c:418 +#: postmaster/postmaster.c:1035 #, c-format -msgid "thesaurus sample word \"%s\" is a stop word (rule %d)" -msgstr "(规则 %2$d)同义词字典样例词\"%1$s\"是一个终止词. " +msgid "%s: could not write external PID file \"%s\": %s\n" +msgstr "%s: 无法写入外部 PID 文件 \"%s\": %s\n" -#: tsearch/dict_thesaurus.c:421 -msgid "Use \"?\" to represent a stop word within a sample phrase." -msgstr "在示例短语中使用\"?\" 来代表一个结束词." +#: postmaster/postmaster.c:1103 utils/init/postinit.c:197 +msgid "could not load pg_hba.conf" +msgstr "无法加载pg_hba.conf" -#: tsearch/dict_thesaurus.c:567 +#: postmaster/postmaster.c:1156 #, c-format -msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)" -msgstr "(规则 %2$d)同义词字典替代词\"%1$s\"是一个终止词. " +msgid "%s: could not locate matching postgres executable" +msgstr "%s: 无法找到匹配的 postgres 执行文件" -#: tsearch/dict_thesaurus.c:574 +#: postmaster/postmaster.c:1177 utils/misc/tzparser.c:323 utils/adt/misc.c:213 +#: utils/adt/genfile.c:353 commands/tablespace.c:689 commands/tablespace.c:699 +#: storage/file/fd.c:1605 storage/file/copydir.c:67 storage/file/copydir.c:106 #, c-format -msgid "" -"thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)" -msgstr "(规则 %2$d)子字典没有识别同义词字典替代词\"%1$s\"" +msgid "could not open directory \"%s\": %m" +msgstr "无法打开目录 \"%s\": %m" -#: tsearch/dict_thesaurus.c:586 +#: postmaster/postmaster.c:1179 utils/misc/tzparser.c:325 #, c-format -msgid "thesaurus substitute phrase is empty (rule %d)" -msgstr "(规则 %d)同义词字典替代短语是空的" - -#: tsearch/dict_thesaurus.c:624 -msgid "multiple Dictionary parameters" -msgstr "多个字典参数" +msgid "" +"This may indicate an incomplete PostgreSQL installation, or that the file " +"\"%s\" has been moved away from its proper location." +msgstr "" +"这可能表示PostgreSQL安装未完成,或者文件\"%s\"已经从正确的位置移动到另外的位" +"置了." -#: tsearch/dict_thesaurus.c:631 +#: postmaster/postmaster.c:1207 #, c-format -msgid "unrecognized Thesaurus parameter: \"%s\"" -msgstr "未识别的同义词字典参数 \"%s\"" +msgid "data directory \"%s\" does not exist" +msgstr "数据目录 \"%s\" 不存在" -#: tsearch/dict_thesaurus.c:643 -msgid "missing Dictionary parameter" -msgstr "丢失字典参数" +#: postmaster/postmaster.c:1212 +#, c-format +msgid "could not read permissions of directory \"%s\": %m" +msgstr "没有读取目录 \"%s\" 的权限: %m" -#: tsearch/spell.c:204 +#: postmaster/postmaster.c:1220 #, c-format -msgid "could not open dictionary file \"%s\": %m" -msgstr "无法打开字典文件 \"%s\": %m" +msgid "specified data directory \"%s\" is not a directory" +msgstr "所指定的数据目录 \"%s\"不是一个目录." -#: tsearch/spell.c:365 utils/adt/regexp.c:190 +#: postmaster/postmaster.c:1236 #, c-format -msgid "invalid regular expression: %s" -msgstr "无效的正则表达式: %s" +msgid "data directory \"%s\" has wrong ownership" +msgstr "data目录 \"%s\"的所有者权限错误." -#: tsearch/spell.c:444 tsearch/spell.c:461 tsearch/spell.c:478 -#: tsearch/spell.c:495 tsearch/spell.c:517 gram.y:11474 gram.y:11491 -msgid "syntax error" -msgstr "语法错误" +#: postmaster/postmaster.c:1238 +msgid "The server must be started by the user that owns the data directory." +msgstr "服务器必须由拥有data目录的用户启动" -#: tsearch/spell.c:522 tsearch/spell.c:772 tsearch/spell.c:792 -msgid "multibyte flag character is not allowed" -msgstr "不允许使用多字节标志字符" - -#: tsearch/spell.c:557 tsearch/spell.c:615 tsearch/spell.c:710 +#: postmaster/postmaster.c:1258 #, c-format -msgid "could not open affix file \"%s\": %m" -msgstr "无法打开affix文件 \"%s\": %m" - -#: tsearch/spell.c:603 -msgid "Ispell dictionary supports only default flag value" -msgstr "Ispell 字典只支持缺省标记值" +msgid "data directory \"%s\" has group or world access" +msgstr "组或其他用户都可以访问数据目录 \"%s\"" -#: tsearch/spell.c:803 -msgid "wrong affix file format for flag" -msgstr "对于标志的词缀文件格式错误" +#: postmaster/postmaster.c:1260 +msgid "Permissions should be u=rwx (0700)." +msgstr "权限应该为 u=rwx (0700)." -#: tsearch/to_tsany.c:165 utils/adt/tsvector.c:272 utils/adt/tsvector_op.c:514 +#: postmaster/postmaster.c:1271 #, c-format -msgid "string is too long for tsvector (%d bytes, max %d bytes)" -msgstr "字符串对于tsvector来说太长了(当前 %d字节, 最大允许值是%d字节)" +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" -#: tsearch/ts_locale.c:168 +#: postmaster/postmaster.c:1307 #, c-format -msgid "line %d of configuration file \"%s\": \"%s\"" -msgstr "配置文件\"%2$s\"的第%1$d行: \"%3$s\"" +msgid "%s: could not open file \"%s\": %s\n" +msgstr "%s: 无法打开文件 \"%s\": %s\n" -#: tsearch/ts_locale.c:173 libpq/hba.c:653 libpq/hba.c:669 libpq/hba.c:715 -#: libpq/hba.c:738 libpq/hba.c:750 libpq/hba.c:763 libpq/hba.c:778 -#: libpq/hba.c:825 libpq/hba.c:848 libpq/hba.c:865 libpq/hba.c:878 -#: libpq/hba.c:894 libpq/hba.c:909 libpq/hba.c:949 libpq/hba.c:981 -#: libpq/hba.c:992 libpq/hba.c:1004 libpq/hba.c:1015 libpq/hba.c:1032 -#: libpq/hba.c:1053 libpq/hba.c:1082 libpq/hba.c:1094 libpq/hba.c:1107 -#: libpq/hba.c:1141 libpq/hba.c:1215 libpq/hba.c:1233 libpq/hba.c:1254 -#: libpq/hba.c:1285 libpq/hba.c:1295 +# command.c:1148 +#: postmaster/postmaster.c:1314 #, c-format -msgid "line %d of configuration file \"%s\"" -msgstr "配置文件\"%2$s\"的第%1$d行" +msgid "%s: could not open log file \"%s/%s\": %s\n" +msgstr "%s:无法打开日志文件\"%s/%s\": %s\n" -#: tsearch/ts_locale.c:288 +#: postmaster/postmaster.c:1325 #, 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 "词太长以至于不能作为索引" +msgid "%s: could not fork background process: %s\n" +msgstr "%s: 无法 fork 后台进程: %s\n" -#: tsearch/ts_parse.c:392 tsearch/ts_parse.c:399 tsearch/ts_parse.c:562 -#: tsearch/ts_parse.c:569 +#: postmaster/postmaster.c:1347 #, c-format -msgid "Words longer than %d characters are ignored." -msgstr "超出%d个字符长度的词被忽略." +msgid "%s: could not dissociate from controlling TTY: %s\n" +msgstr "%s: 无法与控制 TTY 断开联系: %s\n" -# describe.c:641 -#: tsearch/ts_utils.c:53 +#: postmaster/postmaster.c:1442 #, c-format -msgid "invalid text search configuration file name \"%s\"" -msgstr "无效的文本搜索配置文件名\"%s\"" +msgid "select() failed in postmaster: %m" +msgstr "postmaster select() 失败: %m" -#: tsearch/ts_utils.c:91 -#, c-format -msgid "could not open stop-word file \"%s\": %m" -msgstr "无法打开stop-word 文件 \"%s\": %m" +#: postmaster/postmaster.c:1604 postmaster/postmaster.c:1635 +msgid "incomplete startup packet" +msgstr "不完整的启动包" -#: tsearch/wparser.c:314 -msgid "text search parser does not support headline creation" -msgstr "文本搜索解析器不支持标题创建" +#: postmaster/postmaster.c:1616 +msgid "invalid length of startup packet" +msgstr "无效的启动包长度" -#: access/transam/slru.c:595 +#: postmaster/postmaster.c:1673 #, c-format -msgid "file \"%s\" doesn't exist, reading as zeroes" -msgstr "文件 \"%s\" 不存在, 假设读取了 0 字节" +msgid "failed to send SSL negotiation response: %m" +msgstr "发送 SSL 协商响应失败: %m" -#: access/transam/slru.c:825 access/transam/slru.c:831 -#: access/transam/slru.c:838 access/transam/slru.c:845 -#: access/transam/slru.c:852 access/transam/slru.c:859 +#: postmaster/postmaster.c:1702 #, c-format -msgid "could not access status of transaction %u" -msgstr "无法处理事物 %u 的状态" +msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" +msgstr "不支持的前端协议 %u.%u: 服务端支持 %u.0 到 %u.%u" -#: access/transam/slru.c:826 -#, c-format -msgid "Could not open file \"%s\": %m." -msgstr "无法打开文件 \"%s\": %m" +#: postmaster/postmaster.c:1753 +msgid "invalid value for boolean option \"replication\"" +msgstr "布尔选项\"replication\"的值无效" -#: access/transam/slru.c:832 -#, c-format -msgid "Could not seek in file \"%s\" to offset %u: %m." -msgstr "无法在文件 \"%s\" 偏移量 %u 查找: %m" +#: postmaster/postmaster.c:1773 +msgid "invalid startup packet layout: expected terminator as last byte" +msgstr "无效的启动包格式: 预计结束符为最后一个字节" -#: access/transam/slru.c:839 -#, c-format -msgid "Could not read from file \"%s\" at offset %u: %m." -msgstr "无法从文件 \"%s\" 偏移量 %u 读取: %m" +#: postmaster/postmaster.c:1801 +msgid "no PostgreSQL user name specified in startup packet" +msgstr "在启动包中没有指定 PostgreSQL 用户名" -#: access/transam/slru.c:846 -#, c-format -msgid "Could not write to file \"%s\" at offset %u: %m." -msgstr "无法往文件 \"%s\" 偏移量 %u 写入: %m" +#: postmaster/postmaster.c:1858 +msgid "the database system is starting up" +msgstr "数据库系统启动中" -#: access/transam/slru.c:853 -#, c-format -msgid "Could not fsync file \"%s\": %m." -msgstr "无法在文件 \"%s\"上执行系统调用fsync: %m" +#: postmaster/postmaster.c:1863 +msgid "the database system is shutting down" +msgstr "数据库系统停止中" -#: access/transam/slru.c:860 -#, c-format -msgid "Could not close file \"%s\": %m." -msgstr "无法关闭文件 \"%s\": %m" +#: postmaster/postmaster.c:1868 +msgid "the database system is in recovery mode" +msgstr "数据库系统在恢复模式中" -#: access/transam/slru.c:1087 -#, c-format -msgid "could not truncate directory \"%s\": apparent wraparound" -msgstr "无法清空目录\"%s\": 有明显的重叠" +#: postmaster/postmaster.c:1873 storage/ipc/procarray.c:271 +#: storage/ipc/sinvaladt.c:302 storage/lmgr/proc.c:304 +msgid "sorry, too many clients already" +msgstr "对不起, 已经有太多的客户" -#: access/transam/slru.c:1168 +#: postmaster/postmaster.c:1935 #, c-format -msgid "removing file \"%s\"" -msgstr "删除文件 \"%s\"" +msgid "wrong key in cancel request for process %d" +msgstr "对于进程 %d,在取消请求中的键值错误" -#: access/transam/twophase.c:247 +#: postmaster/postmaster.c:1943 #, c-format -msgid "transaction identifier \"%s\" is too long" -msgstr "事务标示符 \"%s\" 太长" +msgid "PID %d in cancel request did not match any process" +msgstr "没有进程与取消请求中的PID %d 相匹配" -# large_obj.c:55 -#: access/transam/twophase.c:254 -msgid "prepared transactions are disabled" -msgstr "禁用已准备好的事务" +#: postmaster/postmaster.c:2015 postmaster/postmaster.c:2046 +#: postmaster/postmaster.c:3248 postmaster/postmaster.c:3932 +#: postmaster/postmaster.c:4018 postmaster/postmaster.c:4635 +#: utils/hash/dynahash.c:368 utils/hash/dynahash.c:445 +#: utils/hash/dynahash.c:959 utils/misc/guc.c:3298 utils/misc/guc.c:3311 +#: utils/misc/guc.c:3324 utils/misc/tzparser.c:455 utils/init/miscinit.c:150 +#: utils/init/miscinit.c:171 utils/init/miscinit.c:181 utils/fmgr/dfmgr.c:224 +#: utils/mb/mbutils.c:374 utils/mb/mbutils.c:675 utils/mmgr/aset.c:416 +#: utils/mmgr/aset.c:587 utils/mmgr/aset.c:765 utils/mmgr/aset.c:966 +#: utils/adt/regexp.c:209 utils/adt/varlena.c:3468 utils/adt/varlena.c:3489 +#: utils/adt/formatting.c:1529 utils/adt/formatting.c:1650 +#: utils/adt/formatting.c:1783 lib/stringinfo.c:266 commands/sequence.c:1014 +#: libpq/auth.c:1022 libpq/auth.c:1382 libpq/auth.c:1450 libpq/auth.c:1852 +#: storage/file/fd.c:359 storage/file/fd.c:742 storage/file/fd.c:860 +#: storage/ipc/procarray.c:801 storage/ipc/procarray.c:1212 +#: storage/ipc/procarray.c:1219 storage/ipc/procarray.c:1459 +#: storage/ipc/procarray.c:1910 storage/buffer/localbuf.c:350 +#: storage/buffer/buf_init.c:154 +msgid "out of memory" +msgstr "内存用尽" -#: access/transam/twophase.c:255 -msgid "Set max_prepared_transactions to a nonzero value." -msgstr "将max_prepared_transactions设置为一个非零值" +#: postmaster/postmaster.c:2149 +msgid "received SIGHUP, reloading configuration files" +msgstr "接收到 SIGHUP, 重载配置文件" -#: access/transam/twophase.c:288 -#, c-format -msgid "transaction identifier \"%s\" is already in use" -msgstr "事务标示符\"%s\"已经在使用" +#: postmaster/postmaster.c:2172 +msgid "pg_hba.conf not reloaded" +msgstr "没有重新加载pg_hba.conf" -#: access/transam/twophase.c:297 -msgid "maximum number of prepared transactions reached" -msgstr "已经达到已准备好事务的最大数量" +#: postmaster/postmaster.c:2215 +msgid "received smart shutdown request" +msgstr "接到到智能 (smart) 停止请求" -#: access/transam/twophase.c:298 -#, c-format -msgid "Increase max_prepared_transactions (currently %d)." -msgstr "增加max_prepared_transactions的值(当前值是%d)." +#: postmaster/postmaster.c:2262 +msgid "received fast shutdown request" +msgstr "接收到快速 (fast) 停止请求" -#: access/transam/twophase.c:418 -#, c-format -msgid "prepared transaction with identifier \"%s\" is busy" -msgstr "标示符为\"%s\"的事务处于繁忙状态." +#: postmaster/postmaster.c:2280 +msgid "aborting any active transactions" +msgstr "中断任何激活事务" -#: access/transam/twophase.c:426 -msgid "permission denied to finish prepared transaction" -msgstr "完成已准备好事务的权限不够" +#: postmaster/postmaster.c:2309 +msgid "received immediate shutdown request" +msgstr "接收到立即 (immediate) 停止请求" -#: access/transam/twophase.c:427 -msgid "Must be superuser or the user that prepared the transaction." -msgstr "必须是超级用户或者是准备好事务的用户" +#: postmaster/postmaster.c:2397 postmaster/postmaster.c:2418 +msgid "startup process" +msgstr "启动进程" -#: access/transam/twophase.c:438 -msgid "prepared transaction belongs to another database" -msgstr "已准备好的事务属于另一个数据库" +#: postmaster/postmaster.c:2400 +msgid "aborting startup due to startup process failure" +msgstr "由于启动进程失败, 终止启动" -#: access/transam/twophase.c:439 -msgid "" -"Connect to the database where the transaction was prepared to finish it." -msgstr "连接到带有准备好完成事务的数据库" +#: postmaster/postmaster.c:2452 +msgid "database system is ready to accept connections" +msgstr "数据库系统准备接受连接" -#: access/transam/twophase.c:453 -#, c-format -msgid "prepared transaction with identifier \"%s\" does not exist" -msgstr "带有标示符\"%s\" 已准备好事务不存在" +#: postmaster/postmaster.c:2507 +msgid "background writer process" +msgstr "后台写入进程" -#: access/transam/twophase.c:936 -msgid "two-phase state file maximum length exceeded" -msgstr "超过两阶段状态文件的最大长度" +#: postmaster/postmaster.c:2523 +msgid "WAL writer process" +msgstr "WAL写入进程" -#: access/transam/twophase.c:954 -#, c-format -msgid "could not create two-phase state file \"%s\": %m" -msgstr "无法创建两阶段提交状态文件 \"%s\": %m" +#: postmaster/postmaster.c:2537 +msgid "WAL receiver process" +msgstr "WAL接收进程" -#: access/transam/twophase.c:968 access/transam/twophase.c:985 -#: access/transam/twophase.c:1034 access/transam/twophase.c:1445 -#: access/transam/twophase.c:1452 -#, c-format -msgid "could not write two-phase state file: %m" -msgstr "无法对两阶段提交状态文件进行写操作: %m" +#: postmaster/postmaster.c:2552 +msgid "autovacuum launcher process" +msgstr "autovacuum启动进程" -#: access/transam/twophase.c:994 -#, c-format -msgid "could not seek in two-phase state file: %m" -msgstr "无法在两阶段提交状态文件中进行查找: %m" +#: postmaster/postmaster.c:2567 +msgid "archiver process" +msgstr "归档进程" -#: access/transam/twophase.c:1040 access/transam/twophase.c:1470 -#, c-format -msgid "could not close two-phase state file: %m" -msgstr "无法关闭两阶段提交状态文件: %m" +#: postmaster/postmaster.c:2583 +msgid "statistics collector process" +msgstr "统计收集器进程" -#: access/transam/twophase.c:1112 access/transam/twophase.c:1550 -#, c-format -msgid "could not open two-phase state file \"%s\": %m" -msgstr "无法打开两阶段提交状态文件\"%s\": %m" +#: postmaster/postmaster.c:2597 +msgid "system logger process" +msgstr "系统日志进程" -#: access/transam/twophase.c:1129 -#, c-format -msgid "could not stat two-phase state file \"%s\": %m" -msgstr "无法获取两阶段提交状态文件 \"%s\" 的状态: %m" +#: postmaster/postmaster.c:2632 postmaster/postmaster.c:2651 +#: postmaster/postmaster.c:2658 postmaster/postmaster.c:2676 +msgid "server process" +msgstr "服务器进程" -#: access/transam/twophase.c:1161 -#, c-format -msgid "could not read two-phase state file \"%s\": %m" -msgstr "无法读取两阶段提交状态文件 \"%s\": %m" +#: postmaster/postmaster.c:2712 +msgid "terminating any other active server processes" +msgstr "中断任何其它已激活的服务器进程" -#: access/transam/twophase.c:1253 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2877 #, c-format -msgid "two-phase state file for transaction %u is corrupt" -msgstr "事务%u的两阶段提交状态文件损坏" +msgid "%s (PID %d) exited with exit code %d" +msgstr "%s (PID %d) 已退出, 退出代码 %d" -#: access/transam/twophase.c:1407 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2886 #, c-format -msgid "could not remove two-phase state file \"%s\": %m" -msgstr "无法删除两阶段提交状态文件\"%s\": %m" +msgid "%s (PID %d) was terminated by exception 0x%X" +msgstr "%s (PID %d) 被异常 0x%X 终止" -#: access/transam/twophase.c:1436 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2895 #, c-format -msgid "could not recreate two-phase state file \"%s\": %m" -msgstr "无法重新创建两阶段提交状态文件 \"%s\": %m" +msgid "%s (PID %d) was terminated by signal %d: %s" +msgstr "%s (PID %d) 被信号 %d 中断: %s" -#: access/transam/twophase.c:1464 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2905 #, c-format -msgid "could not fsync two-phase state file: %m" -msgstr "无法在两阶段提交状态文件上执行系统调用fsync: %m" +msgid "%s (PID %d) was terminated by signal %d" +msgstr "%s (PID %d) 被信号 %d 中断" -#: access/transam/twophase.c:1559 +#. translator: %s is a noun phrase describing a child process, such as +#. "server process" +#: postmaster/postmaster.c:2914 #, c-format -msgid "could not fsync two-phase state file \"%s\": %m" -msgstr "无法在两阶段提交状态文件\"%s\"上执行系统调用fsync: %m" +msgid "%s (PID %d) exited with unrecognized status %d" +msgstr "%s (PID %d) 已退出, 意外状态 %d" -#: access/transam/twophase.c:1566 -#, c-format -msgid "could not close two-phase state file \"%s\": %m" -msgstr "无法关闭两阶段提交状态文件 \"%s\": %m" +#: postmaster/postmaster.c:3094 +msgid "abnormal database system shutdown" +msgstr "数据库系统异常关闭" -#: access/transam/twophase.c:1631 -#, c-format -msgid "removing future two-phase state file \"%s\"" -msgstr "删除可能产生的两阶段提交状态文件 \"%s\"" +#: postmaster/postmaster.c:3133 +msgid "all server processes terminated; reinitializing" +msgstr "所有的服务器进程被中止; 重新初始化" -#: access/transam/twophase.c:1647 access/transam/twophase.c:1658 -#: access/transam/twophase.c:1771 access/transam/twophase.c:1782 -#: access/transam/twophase.c:1855 +#: postmaster/postmaster.c:3316 #, c-format -msgid "removing corrupt two-phase state file \"%s\"" -msgstr "删除已损坏的两阶段提交状态文件\"%s\"" +msgid "could not fork new process for connection: %m" +msgstr "无法为联接派生新进程: %m" -#: access/transam/twophase.c:1760 access/transam/twophase.c:1844 +#: postmaster/postmaster.c:3358 +msgid "could not fork new process for connection: " +msgstr "无法为联接派生新进程: " + +#: postmaster/postmaster.c:3472 #, c-format -msgid "removing stale two-phase state file \"%s\"" -msgstr "正在删除无用的两阶段提交状态文件\"%s\"" +msgid "connection received: host=%s port=%s" +msgstr "已接收到连接: 主机=%s 端口=%s" -#: access/transam/twophase.c:1862 +#: postmaster/postmaster.c:3477 #, c-format -msgid "recovering prepared transaction %u" -msgstr "正在恢复已准备事务%u" +msgid "connection received: host=%s" +msgstr "已接收到连接: 主机=%s" -#: access/transam/varsup.c:113 +#: postmaster/postmaster.c:3707 access/transam/xlog.c:2397 +#: access/transam/xlog.c:2530 access/transam/xlog.c:4463 +#: access/transam/xlog.c:9158 access/transam/xlog.c:9399 +#: storage/file/copydir.c:172 storage/smgr/md.c:289 #, 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 -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进程,然后使用单独的后台进程来清理数据库.\n" -"您也可能需要提交或回滚旧的已准备好事务." +msgid "could not create file \"%s\": %m" +msgstr "无法创建文件 \"%s\": %m" -#: access/transam/varsup.c:120 +#: postmaster/postmaster.c:3717 postmaster/postmaster.c:3727 +#: utils/misc/guc.c:7432 utils/misc/guc.c:7457 utils/init/miscinit.c:1097 +#: utils/init/miscinit.c:1106 utils/init/miscinit.c:1113 +#: access/transam/xlog.c:2429 access/transam/xlog.c:2562 +#: access/transam/xlog.c:4515 access/transam/xlog.c:4578 +#: storage/file/copydir.c:197 #, c-format -msgid "" -"database is not accepting commands to avoid wraparound data loss in database " -"with OID %u" -msgstr "数据库没有接受命令来避免在带有OID为%u的数据库中的重叠数据损失" +msgid "could not write to file \"%s\": %m" +msgstr "无法写入文件 \"%s\": %m" -#: access/transam/varsup.c:132 access/transam/varsup.c:358 +#: postmaster/postmaster.c:3746 #, c-format -msgid "database \"%s\" must be vacuumed within %u transactions" -msgstr "数据库 \"%s\"在运行%u个事务中进行清理(vacuume)." +msgid "could not execute server process \"%s\": %m" +msgstr "无法执行服务器进程 \"%s\": %m" -#: access/transam/varsup.c:135 access/transam/varsup.c:142 -#: access/transam/varsup.c:361 access/transam/varsup.c:368 -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" -"您也可能需要提交或回滚旧的已准备好的事务." +#: postmaster/postmaster.c:4268 +msgid "database system is ready to accept read only connections" +msgstr "数据库系统准备接受只读请求的连接" -#: access/transam/varsup.c:139 access/transam/varsup.c:365 +#: postmaster/postmaster.c:4538 #, c-format -msgid "database with OID %u must be vacuumed within %u transactions" -msgstr "带有OID为%u的数据库必须在%u个事务中进行清理(vacuume)." +msgid "could not fork startup process: %m" +msgstr "无法派生启动进程: %m" -#: access/transam/varsup.c:332 +#: postmaster/postmaster.c:4542 #, c-format -msgid "transaction ID wrap limit is %u, limited by database with OID %u" -msgstr "事务ID的封装限制是%u, 由带有OID为%u的数据库限制." - -#: access/transam/xact.c:716 -msgid "cannot have more than 2^32-1 commands in a transaction" -msgstr "在一个事物中不可以超过 2^32-1 个命令" +msgid "could not fork background writer process: %m" +msgstr "无法 fork 后台写入进程: %m" -#: access/transam/xact.c:1236 +#: postmaster/postmaster.c:4546 #, c-format -msgid "maximum number of committed subtransactions (%d) exceeded" -msgstr "超过已提交子事务的最大数量(%d)" - -#: access/transam/xact.c:1993 -msgid "cannot PREPARE a transaction that has operated on temporary tables" -msgstr "无法在一个已经在临时表上操作的事务上执行PREPARE操作" +msgid "could not fork WAL writer process: %m" +msgstr "无法派生WAL写入进程: %m" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2782 +#: postmaster/postmaster.c:4550 #, c-format -msgid "%s cannot run inside a transaction block" -msgstr "%s 无法在事物块中运行" +msgid "could not fork WAL receiver process: %m" +msgstr "无法派生WAL接收进程: %m" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2792 +#: postmaster/postmaster.c:4554 #, c-format -msgid "%s cannot run inside a subtransaction" -msgstr "%s 无法在一个子事物中运行" +msgid "could not fork process: %m" +msgstr "无法派生进程: %m" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2802 +#: postmaster/postmaster.c:4839 #, c-format -msgid "%s cannot be executed from a function or multi-command string" -msgstr "%s 无法从函数或包含多条命令的字符串中执行." +msgid "could not duplicate socket %d for use in backend: error code %d" +msgstr "无法为后端使用复制套接字 %d: 错误码为 %d" -#. translator: %s represents an SQL statement name -#: access/transam/xact.c:2853 +#: postmaster/postmaster.c:4871 #, c-format -msgid "%s can only be used in transaction blocks" -msgstr "%s 只能在事务块中使用" - -#: access/transam/xact.c:3035 -msgid "there is already a transaction in progress" -msgstr "已经有一个事物在运行中" - -#: access/transam/xact.c:3202 access/transam/xact.c:3294 -msgid "there is no transaction in progress" -msgstr "没有事物在运行中" - -#: access/transam/xact.c:3388 access/transam/xact.c:3438 -#: access/transam/xact.c:3444 access/transam/xact.c:3488 -#: access/transam/xact.c:3536 access/transam/xact.c:3542 -msgid "no such savepoint" -msgstr "没有这个保存点" - -#: access/transam/xact.c:4172 -msgid "cannot have more than 2^32-1 subtransactions in a transaction" -msgstr "在一个事物中不可以超过有 2^32-1 个子事物" +msgid "could not create inherited socket: error code %d\n" +msgstr "无法创建继承套接字: 错误码为 %d\n" -#: access/transam/xlog.c:1275 +#: postmaster/postmaster.c:4900 postmaster/postmaster.c:4907 #, c-format -msgid "could not create archive status file \"%s\": %m" -msgstr "无法创建归档状态文件 \"%s\": %m" +msgid "could not read from backend variables file \"%s\": %s\n" +msgstr "无法从后端可变 (variables) 文件 \"%s\" 读取: %s\n" -#: access/transam/xlog.c:1283 +#: postmaster/postmaster.c:4916 #, c-format -msgid "could not write archive status file \"%s\": %m" -msgstr "无法写入归档状态文件 \"%s\": %m" +msgid "could not remove file \"%s\": %s\n" +msgstr "无法删除文件 \"%s\": %s\n" -#: access/transam/xlog.c:1738 access/transam/xlog.c:9581 -#: replication/walreceiver.c:479 replication/walsender.c:596 +#: postmaster/postmaster.c:4933 #, c-format -msgid "could not seek in log file %u, segment %u to offset %u: %m" -msgstr "无法在日志文件 %u 中查找, 段 %u 偏移量 %u: %m" +msgid "could not map view of backend variables: error code %d\n" +msgstr "无法 map 后端变量视图: 错误码为 %d\n" -#: access/transam/xlog.c:1755 replication/walreceiver.c:496 +#: postmaster/postmaster.c:4942 #, 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 unmap view of backend variables: error code %d\n" +msgstr "无法 unmap 后端变量视图: 错误码为 %d\n" -#: access/transam/xlog.c:1957 +#: postmaster/postmaster.c:4949 #, c-format -msgid "updated min recovery point to %X/%X" -msgstr "将最小恢复点更新到%X/%X" +msgid "could not close handle to backend parameter variables: error code %d\n" +msgstr "无法关闭后端参数变量的句柄: 错误码为 %d\n" -#: access/transam/xlog.c:2298 access/transam/xlog.c:2402 -#: access/transam/xlog.c:2631 access/transam/xlog.c:2702 -#: access/transam/xlog.c:2759 replication/walsender.c:584 -#, c-format -msgid "could not open file \"%s\" (log file %u, segment %u): %m" -msgstr "无法打开文件 \"%s\" (日志文件 %u, 段 %u): %m" +#: postmaster/postmaster.c:5094 +msgid "could not read exit code for process\n" +msgstr "无法为进程读取退出代码\n" -#: access/transam/xlog.c:2323 access/transam/xlog.c:2456 -#: access/transam/xlog.c:4286 access/transam/xlog.c:8443 -#: access/transam/xlog.c:8598 storage/smgr/md.c:278 storage/file/copydir.c:172 -#: postmaster/postmaster.c:3640 -#, c-format -msgid "could not create file \"%s\": %m" -msgstr "无法创建文件 \"%s\": %m" +#: postmaster/postmaster.c:5099 +msgid "could not post child completion status\n" +msgstr "无法传递子队列的结束状态\n" -#: access/transam/xlog.c:2355 access/transam/xlog.c:2488 -#: access/transam/xlog.c:4338 access/transam/xlog.c:4394 commands/copy.c:1316 -#: storage/file/copydir.c:197 postmaster/postmaster.c:3650 -#: postmaster/postmaster.c:3660 utils/misc/guc.c:7008 utils/misc/guc.c:7033 -#: utils/init/miscinit.c:1054 utils/init/miscinit.c:1063 -#: utils/init/miscinit.c:1070 +#: utils/cache/ts_cache.c:620 commands/tsearchcmds.c:1753 +#: commands/tsearchcmds.c:1909 catalog/namespace.c:2276 #, c-format -msgid "could not write to file \"%s\": %m" -msgstr "无法写入文件 \"%s\": %m" +msgid "text search configuration \"%s\" does not exist" +msgstr "文本搜寻配置 \"%s\" 不存在" -#: access/transam/xlog.c:2363 access/transam/xlog.c:2495 -#: access/transam/xlog.c:4400 storage/smgr/md.c:909 storage/smgr/md.c:1083 -#: storage/smgr/md.c:1226 storage/file/copydir.c:269 -#, c-format -msgid "could not fsync file \"%s\": %m" -msgstr "无法 fsync 文件 \"%s\": %m" +#: utils/cache/plancache.c:589 +msgid "cached plan must not change result type" +msgstr "已缓冲的计划不能改变结果类型" -#: access/transam/xlog.c:2368 access/transam/xlog.c:2500 -#: access/transam/xlog.c:4405 storage/file/copydir.c:211 +#: utils/cache/relcache.c:4321 #, c-format -msgid "could not close file \"%s\": %m" -msgstr "无法关闭文件 \"%s\": %m" +msgid "could not create relation-cache initialization file \"%s\": %m" +msgstr "无法创建 relation-cache 初始化文件 \"%s\": %m" -#: access/transam/xlog.c:2441 access/transam/xlog.c:4113 -#: access/transam/xlog.c:4207 access/transam/xlog.c:4305 storage/smgr/md.c:532 -#: storage/smgr/md.c:785 storage/file/copydir.c:165 storage/file/copydir.c:255 -#: utils/error/elog.c:1403 utils/init/miscinit.c:1005 -#: utils/init/miscinit.c:1118 -#, c-format -msgid "could not open file \"%s\": %m" -msgstr "无法打开文件 \"%s\": %m" +#: utils/cache/relcache.c:4323 +msgid "Continuing anyway, but there's something wrong." +msgstr "仍继续, 但肯定有些错误存在." -#: access/transam/xlog.c:2469 access/transam/xlog.c:4317 -#: access/transam/xlog.c:8546 access/transam/xlog.c:8620 -#: access/transam/xlog.c:9003 access/transam/xlog.c:9028 -#: storage/file/copydir.c:186 utils/adt/genfile.c:133 +#: utils/cache/relcache.c:4537 #, c-format -msgid "could not read file \"%s\": %m" -msgstr "无法读取文件 \"%s\": %m" +msgid "could not remove cache file \"%s\": %m" +msgstr "无法删除缓存文件 \"%s\": %m" -#: access/transam/xlog.c:2472 -#, c-format -msgid "not enough data in file \"%s\"" -msgstr "文件 \"%s\" 中的数据不足" +#: utils/cache/relmapper.c:454 +msgid "cannot PREPARE a transaction that modified relation mapping" +msgstr "不支持对修改关系映射的事务进行PREPARE操作" -#: access/transam/xlog.c:2591 +#: utils/cache/relmapper.c:596 utils/cache/relmapper.c:702 #, 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 "could not open relation mapping file \"%s\": %m" +msgstr "无法打开关系映射文件 \"%s\": %m" -#: access/transam/xlog.c:2603 +#: utils/cache/relmapper.c:609 #, c-format -msgid "" -"could not rename file \"%s\" to \"%s\" (initialization of log file %u, " -"segment %u): %m" -msgstr "无法重命名文件 \"%s\" 为 \"%s\" (日志文件 %u 的初始化, 段 %u): %m" +msgid "could not read relation mapping file \"%s\": %m" +msgstr "无法读取关系映射文件 \"%s\": %m" -#: access/transam/xlog.c:2786 replication/walreceiver.c:453 +#: utils/cache/relmapper.c:619 #, c-format -msgid "could not close log file %u, segment %u: %m" -msgstr "无法关闭日志文件 %u, 段 %u: %m" +msgid "relation mapping file \"%s\" contains invalid data" +msgstr "在关系映射文件\"%s\"中包含无效的数据" -#: access/transam/xlog.c:2858 access/transam/xlog.c:3023 -#: access/transam/xlog.c:8426 storage/file/copydir.c:86 -#: storage/file/copydir.c:125 utils/adt/dbsize.c:65 utils/adt/dbsize.c:217 -#: utils/adt/dbsize.c:288 utils/adt/genfile.c:170 +#: utils/cache/relmapper.c:629 #, c-format -msgid "could not stat file \"%s\": %m" -msgstr "无法取文件 \"%s\" 的状态: %m" +msgid "relation mapping file \"%s\" contains incorrect checksum" +msgstr "在关系映射文件\"%s\"中包含不正确的检验和" -#: access/transam/xlog.c:2866 access/transam/xlog.c:8625 storage/smgr/md.c:348 -#: storage/smgr/md.c:395 storage/smgr/md.c:1192 +#: utils/cache/relmapper.c:741 #, c-format -msgid "could not remove file \"%s\": %m" -msgstr "无法删除文件 \"%s\": %m" +msgid "could not write to relation mapping file \"%s\": %m" +msgstr "无法对关系映射文件 \"%s\" 进行写操作: %m" -#: access/transam/xlog.c:3002 +#: utils/cache/relmapper.c:754 #, c-format -msgid "archive file \"%s\" has wrong size: %lu instead of %lu" -msgstr "归档文件\"%s\"大小错误:应该是%lu而不是%lu" +msgid "could not fsync relation mapping file \"%s\": %m" +msgstr "无法将关系映射文件\"%s\"的内容刷新到磁盘: %m" -#: access/transam/xlog.c:3011 +#: utils/cache/relmapper.c:760 #, c-format -msgid "restored log file \"%s\" from archive" -msgstr "从归档中恢复日志文件 \"%s\"" +msgid "could not close relation mapping file \"%s\": %m" +msgstr "无法关闭关系映射文件\"%s\": %m" -#: access/transam/xlog.c:3061 +#: utils/cache/lsyscache.c:2413 utils/cache/lsyscache.c:2446 +#: utils/cache/lsyscache.c:2479 utils/cache/lsyscache.c:2512 #, c-format -msgid "could not restore file \"%s\" from archive: return code %d" -msgstr "无法从归档中恢复文件 \"%s\": 返回码为 %d" +msgid "type %s is only a shell" +msgstr "类型 %s 只是一个 shell" -#: access/transam/xlog.c:3176 +#: utils/cache/lsyscache.c:2418 #, c-format -msgid "%s \"%s\": return code %d" -msgstr "%s \"%s\": 返回码为 %d" +msgid "no input function available for type %s" +msgstr "没有有效的 %s 类型输入函数" -#: access/transam/xlog.c:3286 access/transam/xlog.c:3469 +#: utils/cache/lsyscache.c:2451 #, c-format -msgid "could not open transaction log directory \"%s\": %m" -msgstr "无法打开事务日志目录 \"%s\": %m" +msgid "no output function available for type %s" +msgstr "没有有效的 %s 类型输出函数" -#: access/transam/xlog.c:3340 +#: utils/cache/lsyscache.c:2484 utils/adt/arrayfuncs.c:1307 #, c-format -msgid "recycled transaction log file \"%s\"" -msgstr "回收事务日志文件 \"%s\"" +msgid "no binary input function available for type %s" +msgstr "没有类型 %s 的有效二进制输入函数" -#: access/transam/xlog.c:3356 +#: utils/cache/lsyscache.c:2517 utils/adt/arrayfuncs.c:1529 #, c-format -msgid "removing transaction log file \"%s\"" -msgstr "删除事务日志文件 \"%s\"" +msgid "no binary output function available for type %s" +msgstr "没有类型 %s 的有效二进制输出函数" -#: access/transam/xlog.c:3379 +#: utils/cache/typcache.c:195 parser/parse_type.c:202 #, c-format -msgid "could not rename old transaction log file \"%s\": %m" -msgstr "无法重命名旧的事务日志文件\"%s\": %m" +msgid "type \"%s\" is only a shell" +msgstr "类型 \"%s\" 只是一个 shell" -#: access/transam/xlog.c:3391 +#: utils/cache/typcache.c:629 #, c-format -msgid "could not remove old transaction log file \"%s\": %m" -msgstr "无法删除旧的事务日志文件 \"%s\": %m" +msgid "type %s is not composite" +msgstr "类型 %s 不是复合类型" -#: access/transam/xlog.c:3429 access/transam/xlog.c:3439 -#, c-format -msgid "required WAL directory \"%s\" does not exist" -msgstr "所需要的WAL目录 \"%s\" 不存在" +#: utils/cache/typcache.c:643 +msgid "record type has not been registered" +msgstr "记录类型没有注册" -#: access/transam/xlog.c:3445 +#: utils/cache/typcache.c:996 commands/typecmds.c:1272 #, c-format -msgid "creating missing WAL directory \"%s\"" -msgstr "正在创建丢失的WAL目录\"%s\"" +msgid "%s is not an enum" +msgstr "%s 不是枚举" -#: access/transam/xlog.c:3448 -#, c-format -msgid "could not create missing directory \"%s\": %m" -msgstr "无法创建丢失的目录 \"%s\": %m" +#: utils/hash/dynahash.c:955 storage/ipc/shmem.c:190 +#: storage/lmgr/predicate.c:2246 storage/lmgr/predicate.c:2261 +#: storage/lmgr/predicate.c:3656 storage/lmgr/predicate.c:4800 +#: storage/lmgr/proc.c:197 storage/lmgr/proc.c:216 storage/lmgr/lock.c:723 +#: storage/lmgr/lock.c:792 storage/lmgr/lock.c:2301 storage/lmgr/lock.c:2690 +#: storage/lmgr/lock.c:2755 +msgid "out of shared memory" +msgstr "共享内存用尽" -#: access/transam/xlog.c:3482 -#, c-format -msgid "removing transaction log backup history file \"%s\"" -msgstr "正在删除事务日志备份历史文件 \"%s\"" +#: utils/misc/help_config.c:131 +msgid "internal error: unrecognized run-time parameter type\n" +msgstr "内部错误: 未知的运行时参数类型\n" -#: access/transam/xlog.c:3602 -#, c-format -msgid "incorrect hole size in record at %X/%X" -msgstr "在%X/%X上的记录中页的未使用空洞大小不正确" +#: utils/misc/guc.c:525 +msgid "Ungrouped" +msgstr "取消组" -#: access/transam/xlog.c:3615 -#, c-format -msgid "incorrect total length in record at %X/%X" -msgstr "在%X/%X上的记录中的总长度不正确" +#: utils/misc/guc.c:527 +msgid "File Locations" +msgstr "文件位置" -#: access/transam/xlog.c:3628 -#, c-format -msgid "incorrect resource manager data checksum in record at %X/%X" -msgstr "在记录的 %X/%X 中的不正确资源管理数据校验值" +#: utils/misc/guc.c:529 +msgid "Connections and Authentication" +msgstr "联接和认证" -#: access/transam/xlog.c:3697 access/transam/xlog.c:3733 -#, c-format -msgid "invalid record offset at %X/%X" -msgstr "无效的记录偏移量 %X/%X" +#: utils/misc/guc.c:531 +msgid "Connections and Authentication / Connection Settings" +msgstr "联接和认证 / 联接设置" -#: access/transam/xlog.c:3741 -#, c-format -msgid "contrecord is requested by %X/%X" -msgstr "%X/%X 需要 contrecord" +#: utils/misc/guc.c:533 +msgid "Connections and Authentication / Security and Authentication" +msgstr "联接和认证 / 安全和认证" -#: access/transam/xlog.c:3756 -#, c-format -msgid "invalid xlog switch record at %X/%X" -msgstr "在%X/%X上的xlog切换记录无效" +#: utils/misc/guc.c:535 +msgid "Resource Usage" +msgstr "资源使用" -#: access/transam/xlog.c:3764 -#, c-format -msgid "record with zero length at %X/%X" -msgstr "在 %X/%X 位置有零长度的记录" +#: utils/misc/guc.c:537 +msgid "Resource Usage / Memory" +msgstr "资源使用 / 内存" -#: access/transam/xlog.c:3773 -#, c-format -msgid "invalid record length at %X/%X" -msgstr "在%X/%X的无效的记录长度 " +#: utils/misc/guc.c:539 +msgid "Resource Usage / Kernel Resources" +msgstr "资源使用 / 内核资源" -#: access/transam/xlog.c:3780 -#, c-format -msgid "invalid resource manager ID %u at %X/%X" -msgstr "在 %2$X/%3$X 位置, 为无效的资源管理 ID %1$u" +#: utils/misc/guc.c:541 +msgid "Resource Usage / Cost-Based Vacuum Delay" +msgstr "资源使用 / 基于开销的Vacuum延迟" -#: access/transam/xlog.c:3793 access/transam/xlog.c:3809 -#, c-format -msgid "record with incorrect prev-link %X/%X at %X/%X" -msgstr "在 %3$X/%4$X位置的记录带有不正确的prev-link %1$X/%2$X" +#: utils/misc/guc.c:543 +msgid "Resource Usage / Background Writer" +msgstr "资源使用 / 后台写入进程" -#: access/transam/xlog.c:3838 -#, c-format -msgid "record length %u at %X/%X too long" -msgstr "在 %2$X/%3$X, 记录长度 %1$u 太长" +#: utils/misc/guc.c:545 +msgid "Resource Usage / Asynchronous Behavior" +msgstr "资源使用 / 异步系统行为" -#: access/transam/xlog.c:3878 -#, c-format -msgid "there is no contrecord flag in log file %u, segment %u, offset %u" -msgstr "日志文件 %u, 段 %u, 偏移量 %u 中没有 contrecord 标志" +#: utils/misc/guc.c:547 +msgid "Write-Ahead Log" +msgstr "Write-Ahead 日志" -#: access/transam/xlog.c:3888 -#, 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" +#: utils/misc/guc.c:549 +msgid "Write-Ahead Log / Settings" +msgstr "Write-Ahead 日志 / 设置" -#: access/transam/xlog.c:3978 -#, 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" +#: utils/misc/guc.c:551 +msgid "Write-Ahead Log / Checkpoints" +msgstr "Write-Ahead 日志 / Checkpoints" -#: access/transam/xlog.c:3985 access/transam/xlog.c:4031 -#, 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" +#: utils/misc/guc.c:553 +msgid "Write-Ahead Log / Archiving" +msgstr "Write-Ahead 日志 / 归档" -#: access/transam/xlog.c:4007 access/transam/xlog.c:4015 -#: access/transam/xlog.c:4022 -msgid "WAL file is from different database system" -msgstr "WAL 文件来自不同的数据库系统" +#: utils/misc/guc.c:555 +msgid "Replication" +msgstr "复制" -#: access/transam/xlog.c:4008 -#, c-format -msgid "" -"WAL file database system identifier is %s, pg_control database system " -"identifier is %s." -msgstr "WAL文件的数据库系统标识符是%s,pg_control的数据库系统标识符是%s." +#: utils/misc/guc.c:557 +msgid "Replication / Master Server" +msgstr "复制/主服务器" -#: access/transam/xlog.c:4016 -msgid "Incorrect XLOG_SEG_SIZE in page header." -msgstr "页头中不正确的 XLOG_SEG_SIZE." +#: utils/misc/guc.c:559 +msgid "Replication / Standby Servers" +msgstr "复制 / 备用服务器" -#: access/transam/xlog.c:4023 -msgid "Incorrect XLOG_BLCKSZ in page header." -msgstr "页头中不正确的 XLOG_SEG_SIZE." +#: utils/misc/guc.c:561 +msgid "Query Tuning" +msgstr "查询调整" -#: access/transam/xlog.c:4039 -#, 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" +#: utils/misc/guc.c:563 +msgid "Query Tuning / Planner Method Configuration" +msgstr "查询调整 / 规划器方法配置" -#: access/transam/xlog.c:4051 -#, 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" +#: utils/misc/guc.c:565 +msgid "Query Tuning / Planner Cost Constants" +msgstr "查询调整 / Planner Cost Constants" -#: access/transam/xlog.c:4069 -#, c-format -msgid "" -"out-of-sequence timeline ID %u (after %u) in log file %u, segment %u, offset " -"%u" -msgstr "" -"日志文件 %3$u 中超出序列的 timeline ID %1$u (%2$u 之后), 段 %4$u, 偏移量 %5$u" +#: utils/misc/guc.c:567 +msgid "Query Tuning / Genetic Query Optimizer" +msgstr "查询调整 / 基因查询优化" -#: access/transam/xlog.c:4142 -#, c-format -msgid "syntax error in history file: %s" -msgstr "历史文件中的语法错误: %s" +#: utils/misc/guc.c:569 +msgid "Query Tuning / Other Planner Options" +msgstr "查询调整 / 其它规划器选项" -#: access/transam/xlog.c:4143 -msgid "Expected a numeric timeline ID." -msgstr "期望一个数字 timeline ID." +#: utils/misc/guc.c:571 +msgid "Reporting and Logging" +msgstr "报告和日志" -#: access/transam/xlog.c:4148 -#, c-format -msgid "invalid data in history file: %s" -msgstr "历史文件中的无效数据: %s" +#: utils/misc/guc.c:573 +msgid "Reporting and Logging / Where to Log" +msgstr "报告和日志 / 日志位置" -#: access/transam/xlog.c:4149 -msgid "Timeline IDs must be in increasing sequence." -msgstr "TimeLine ID 必须为递增序列." +#: utils/misc/guc.c:575 +msgid "Reporting and Logging / When to Log" +msgstr "报告和日志 / 日志时间" -#: access/transam/xlog.c:4162 -#, c-format -msgid "invalid data in history file \"%s\"" -msgstr "历史文件 \"%s\" 中存在无效数据" +#: utils/misc/guc.c:577 +msgid "Reporting and Logging / What to Log" +msgstr "报告和日志 / 日志内容" -#: access/transam/xlog.c:4163 -msgid "Timeline IDs must be less than child timeline's ID." -msgstr "Timeline ID 必须小于子 timeline 的 ID." +#: utils/misc/guc.c:579 +msgid "Statistics" +msgstr "统计信息" -#: access/transam/xlog.c:4422 -#, c-format -msgid "could not link file \"%s\" to \"%s\": %m" -msgstr "无法把文件 \"%s\" 链接到 \"%s\": %m" +#: utils/misc/guc.c:581 +msgid "Statistics / Monitoring" +msgstr "统计信息 / 监控" -#: access/transam/xlog.c:4429 access/transam/xlog.c:5378 -#: access/transam/xlog.c:5431 access/transam/xlog.c:6007 -#: postmaster/pgarch.c:715 -#, c-format -msgid "could not rename file \"%s\" to \"%s\": %m" -msgstr "无法把文件 \"%s\" 重命名为 \"%s\": %m" +#: utils/misc/guc.c:583 +msgid "Statistics / Query and Index Statistics Collector" +msgstr "统计信息 / 查询和索引统计收集器" -#: access/transam/xlog.c:4511 -#, c-format -msgid "could not create control file \"%s\": %m" -msgstr "无法创建控制文件 \"%s\": %m" +#: utils/misc/guc.c:585 +msgid "Autovacuum" +msgstr "Autovacuum" -#: access/transam/xlog.c:4522 access/transam/xlog.c:4747 -#, c-format -msgid "could not write to control file: %m" -msgstr "无法写入控制文件: %m" +#: utils/misc/guc.c:587 +msgid "Client Connection Defaults" +msgstr "客户端联接默认" -#: access/transam/xlog.c:4528 access/transam/xlog.c:4753 -#, c-format -msgid "could not fsync control file: %m" -msgstr "无法 fsync 控制文件: %m" +#: utils/misc/guc.c:589 +msgid "Client Connection Defaults / Statement Behavior" +msgstr "客户端联接默认 / 语句动作" -#: access/transam/xlog.c:4533 access/transam/xlog.c:4758 -#, c-format -msgid "could not close control file: %m" -msgstr "无法关闭控制文件: %m" +#: utils/misc/guc.c:591 +msgid "Client Connection Defaults / Locale and Formatting" +msgstr "客户端联接默认 / 本地化和格式化" -#: access/transam/xlog.c:4551 access/transam/xlog.c:4736 -#, c-format -msgid "could not open control file \"%s\": %m" -msgstr "无法打开控制文件 \"%s\": %m" +#: utils/misc/guc.c:593 +msgid "Client Connection Defaults / Other Defaults" +msgstr "客户端联接默认 / 其它默认" -#: access/transam/xlog.c:4557 -#, c-format -msgid "could not read from control file: %m" -msgstr "无法读取控制文件: %m" +#: utils/misc/guc.c:595 +msgid "Lock Management" +msgstr "锁管理" -#: access/transam/xlog.c:4570 access/transam/xlog.c:4579 -#: access/transam/xlog.c:4603 access/transam/xlog.c:4610 -#: access/transam/xlog.c:4617 access/transam/xlog.c:4622 -#: access/transam/xlog.c:4629 access/transam/xlog.c:4636 -#: access/transam/xlog.c:4643 access/transam/xlog.c:4650 -#: access/transam/xlog.c:4657 access/transam/xlog.c:4664 -#: access/transam/xlog.c:4673 access/transam/xlog.c:4680 -#: access/transam/xlog.c:4689 access/transam/xlog.c:4696 -#: access/transam/xlog.c:4705 access/transam/xlog.c:4712 -#: utils/init/miscinit.c:1136 -msgid "database files are incompatible with server" -msgstr "数据库文件和服务器不兼容" +#: utils/misc/guc.c:597 +msgid "Version and Platform Compatibility" +msgstr "版本和平台兼容性" -#: access/transam/xlog.c:4571 -#, 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)编译的." +#: utils/misc/guc.c:599 +msgid "Version and Platform Compatibility / Previous PostgreSQL Versions" +msgstr "版本和平台兼容性 / 上一个 PostgreSQL 版本" -#: access/transam/xlog.c:4575 -msgid "" -"This could be a problem of mismatched byte ordering. It looks like you need " -"to initdb." -msgstr "这是一个字节顺序不匹配的问题.您需要运行initdb." +#: utils/misc/guc.c:601 +msgid "Version and Platform Compatibility / Other Platforms and Clients" +msgstr "版本和平台兼容性 / 其它平台和客户端" -#: access/transam/xlog.c:4580 -#, c-format -msgid "" -"The database cluster was initialized with PG_CONTROL_VERSION %d, but the " -"server was compiled with PG_CONTROL_VERSION %d." -msgstr "" -"数据库集群是以 PG_CONTROL_VERSION %d 初始化的, 但是 服务器是以 " -"PG_CONTROL_VERSION %d 编译的." +#: utils/misc/guc.c:603 +msgid "Error Handling" +msgstr "错误处理" -#: access/transam/xlog.c:4583 access/transam/xlog.c:4607 -#: access/transam/xlog.c:4614 access/transam/xlog.c:4619 -msgid "It looks like you need to initdb." -msgstr "看上去, 你需要初始化数据库." +#: utils/misc/guc.c:605 +msgid "Preset Options" +msgstr "预置选项" -#: access/transam/xlog.c:4594 -msgid "incorrect checksum in control file" -msgstr "控制文件的校验值不正确" +#: utils/misc/guc.c:607 +msgid "Customized Options" +msgstr "定制选项" -#: access/transam/xlog.c:4604 -#, c-format -msgid "" -"The database cluster was initialized with CATALOG_VERSION_NO %d, but the " -"server was compiled with CATALOG_VERSION_NO %d." -msgstr "" -"数据库簇是以 CATALOG_VERSION_NO %d 初始化的, 但是 服务器是以 " -"CATALOG_VERSION_NO %d 编译的." +#: utils/misc/guc.c:609 +msgid "Developer Options" +msgstr "开发人员选项" -#: access/transam/xlog.c:4611 -#, c-format -msgid "" -"The database cluster was initialized with MAXALIGN %d, but the server was " -"compiled with MAXALIGN %d." -msgstr "" -"数据库集群是以 MAXALIGN%d 初始化的, 但是 服务器是以 NAMEDATALEN %d 编译的." +#: utils/misc/guc.c:663 +msgid "Enables the planner's use of sequential-scan plans." +msgstr "启用查询计划器的顺序扫描计划." -#: access/transam/xlog.c:4618 -msgid "" -"The database cluster appears to use a different floating-point number format " -"than the server executable." -msgstr "数据库集群在使用与服务器执行部分不同的浮点数格式" +#: utils/misc/guc.c:672 +msgid "Enables the planner's use of index-scan plans." +msgstr "启用查询计划器的索引扫描计划." -#: access/transam/xlog.c:4623 -#, c-format -msgid "" -"The database cluster was initialized with BLCKSZ %d, but the server was " -"compiled with BLCKSZ %d." -msgstr "数据库簇是以 BLCKSZ %d 初始化的, 但是 服务器是以 BLCKSZ %d 编译的." +#: utils/misc/guc.c:681 +msgid "Enables the planner's use of bitmap-scan plans." +msgstr "启用查询计划器的位图扫描计划." -#: access/transam/xlog.c:4626 access/transam/xlog.c:4633 -#: access/transam/xlog.c:4640 access/transam/xlog.c:4647 -#: access/transam/xlog.c:4654 access/transam/xlog.c:4661 -#: access/transam/xlog.c:4668 access/transam/xlog.c:4676 -#: access/transam/xlog.c:4683 access/transam/xlog.c:4692 -#: access/transam/xlog.c:4699 access/transam/xlog.c:4708 -#: access/transam/xlog.c:4715 -msgid "It looks like you need to recompile or initdb." -msgstr "看上去, 你需要重新编译或初始化数据库." +#: utils/misc/guc.c:690 +msgid "Enables the planner's use of TID scan plans." +msgstr "启用查询计划器的TID扫描计划." -#: access/transam/xlog.c:4630 -#, c-format -msgid "" -"The database cluster was initialized with RELSEG_SIZE %d, but the server was " -"compiled with RELSEG_SIZE %d." -msgstr "" -"数据库簇是以 RELSEG_SIZE %d 初始化的, 但是 服务器是以 RELSEG_SIZE %d 编译的." +#: utils/misc/guc.c:699 +msgid "Enables the planner's use of explicit sort steps." +msgstr "启用查询计划器的显式排序步骤." -#: access/transam/xlog.c:4637 -#, 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 编译" -"的." +#: utils/misc/guc.c:708 +msgid "Enables the planner's use of hashed aggregation plans." +msgstr "启用查询计划器的哈希聚合计划." -#: access/transam/xlog.c:4644 -#, c-format -msgid "" -"The database cluster was initialized with XLOG_SEG_SIZE %d, but the server " -"was compiled with XLOG_SEG_SIZE %d." -msgstr "" -"数据库簇是以 XLOG_SEG_SIZE %d 初始化的, 但是 服务器是以 XLOG_SEG_SIZE %d 编译" -"的." +#: utils/misc/guc.c:717 +msgid "Enables the planner's use of materialization." +msgstr "启用查询计划器的实体化使用." -#: access/transam/xlog.c:4651 -#, c-format -msgid "" -"The database cluster was initialized with NAMEDATALEN %d, but the server was " -"compiled with NAMEDATALEN %d." -msgstr "" -"数据库簇是以 NAMEDATALEN %d 初始化的, 但是 服务器是以 NAMEDATALEN %d 编译的." +#: utils/misc/guc.c:726 +msgid "Enables the planner's use of nested-loop join plans." +msgstr "启用查询计划器的嵌套循环连接计划." -#: access/transam/xlog.c:4658 -#, 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 编译的." +#: utils/misc/guc.c:735 +msgid "Enables the planner's use of merge join plans." +msgstr "启用查询计划器的合并连接计划." -#: access/transam/xlog.c:4665 -#, 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 编译的." +#: utils/misc/guc.c:744 +msgid "Enables the planner's use of hash join plans." +msgstr "启用查询计划器的哈希连接计划." -#: access/transam/xlog.c:4674 -msgid "" -"The database cluster was initialized without HAVE_INT64_TIMESTAMP but the " -"server was compiled with HAVE_INT64_TIMESTAMP." -msgstr "" -"数据库簇初始化时没有定义 HAVE_INT64_TIMESTAMP, 但是 服务器编译时定义了 " -"HAVE_INT64_TIMESTAMP." +#: utils/misc/guc.c:753 +msgid "Enables genetic query optimization." +msgstr "启用基因查询优化." -#: access/transam/xlog.c:4681 -msgid "" -"The database cluster was initialized with HAVE_INT64_TIMESTAMP but the " -"server was compiled without HAVE_INT64_TIMESTAMP." -msgstr "" -"数据库簇初始化时定义了 HAVE_INT64_TIMESTAMP, 但是 服务器编译时没有定义 " -"HAVE_INT64_TIMESTAMP." +#: utils/misc/guc.c:754 +msgid "This algorithm attempts to do planning without exhaustive searching." +msgstr "算法企图执行不带有无穷搜索的计划." -#: access/transam/xlog.c:4690 -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选项编译的." +#: utils/misc/guc.c:764 +msgid "Shows whether the current user is a superuser." +msgstr "显示当前用户是否是超级用户." -#: access/transam/xlog.c:4697 -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编译" -"的." +#: utils/misc/guc.c:774 +msgid "Enables advertising the server via Bonjour." +msgstr "启用通过Bonjour的方式来宣布数据库服务器在网络中的存在." + +#: utils/misc/guc.c:783 +msgid "Enables SSL connections." +msgstr "启用 SSL 联接." + +#: utils/misc/guc.c:792 +msgid "Forces synchronization of updates to disk." +msgstr "强制和磁盘同步更新" -#: access/transam/xlog.c:4706 +#: utils/misc/guc.c:793 msgid "" -"The database cluster was initialized without USE_FLOAT8_BYVAL but the server " -"was compiled with USE_FLOAT8_BYVAL." +"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 "" -"数据库集群在初始化时没有带有 USE_FLOAT8_BYVAL, 但是服务器是以 " -"USE_FLOAT8_BYVAL编译的." +"服务器将在多个位置使用系统调用fsync()来确定更新操作已经将数据写入磁盘.这将确" +"保在操作系统或硬件崩溃后数据库集群将恢复到一个一致性状态. " + +#: utils/misc/guc.c:804 +msgid "Continues processing past damaged page headers." +msgstr "继续处理已损坏的页头." -#: access/transam/xlog.c:4713 +#: utils/misc/guc.c:805 msgid "" -"The database cluster was initialized with USE_FLOAT8_BYVAL but the server " -"was compiled without USE_FLOAT8_BYVAL." +"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 "" -"数据库集群是以USE_FLOAT8_BYVAL初始化的, 但是 服务器没有以USE_FLOAT8_BYVAL编" -"译." +"对已损坏页头的检测通常会使PostgreSQL报告一个错误, 并中止当前事务.将参数" +"zero_damaged_pages设置为true可以使系统只报告一个警告信息,不输出已损坏的页," +"并且能够继续处理当前事务.这种情况将使毁坏数据,因为这样通常会使所有的记录在已" +"损坏的页上存放." -#: access/transam/xlog.c:4956 -#, c-format -msgid "could not write bootstrap transaction log file: %m" -msgstr "无法写入 bootstrap 事务日志文件: %m" +#: utils/misc/guc.c:818 +msgid "Writes full pages to WAL when first modified after a checkpoint." +msgstr "在检查点事件发生后发生第一次修改数据时,把所有的页写到WAL文件中" -#: access/transam/xlog.c:4962 -#, c-format -msgid "could not fsync bootstrap transaction log file: %m" -msgstr "无法同步 (fsync) 事务日志文件: %m" +#: utils/misc/guc.c:819 +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发生检查点事件后进行第一次修改" +"操作时这个选项可以写入页。这样将允许进行完全恢复." -#: access/transam/xlog.c:4967 -#, c-format -msgid "could not close bootstrap transaction log file: %m" -msgstr "无法关闭 bootstrap 事务日志文件: %m" +#: utils/misc/guc.c:831 +msgid "Runs the server silently." +msgstr "以安静模式 (silently) 运行服务器." -#: access/transam/xlog.c:5129 -#, c-format -msgid "could not open recovery command file \"%s\": %m" -msgstr "无法打开恢复命令文件 \"%s\": %m" +#: utils/misc/guc.c:832 +msgid "" +"If this parameter is set, the server will automatically run in the " +"background and any controlling terminals are dissociated." +msgstr "如果此参数设置了, 服务器将自动运行在后台, 与任何控制终端脱离." -#: access/transam/xlog.c:5153 -#, c-format -msgid "restore_command = '%s'" -msgstr "restore_command = '%s'" +#: utils/misc/guc.c:841 +msgid "Logs each checkpoint." +msgstr "记录每一个检查点事件" -#: access/transam/xlog.c:5160 -#, c-format -msgid "recovery_end_command = '%s'" -msgstr "recovery_end_command = '%s'" +#: utils/misc/guc.c:850 +msgid "Logs each successful connection." +msgstr "记录每一个成功的联接." -#: access/transam/xlog.c:5167 -#, c-format -msgid "archive_cleanup_command = '%s'" -msgstr "archive_cleanup_command = '%s'" +#: utils/misc/guc.c:859 +msgid "Logs end of a session, including duration." +msgstr "对会话的结束时间和整个会话的持续时间进行日志记录" -#: access/transam/xlog.c:5181 -#, c-format -msgid "recovery_target_timeline is not a valid number: \"%s\"" -msgstr "recovery_target_timeline 不是一个有效的数字: \"%s\"" +#: utils/misc/guc.c:868 +msgid "Turns on various assertion checks." +msgstr "打开各种判断检查." -#: access/transam/xlog.c:5186 -#, c-format -msgid "recovery_target_timeline = %u" -msgstr "recovery_target_timeline = %u" +#: utils/misc/guc.c:869 +msgid "This is a debugging aid." +msgstr "这是一个出错帮助." -#: access/transam/xlog.c:5189 -msgid "recovery_target_timeline = latest" -msgstr "recovery_target_timeline = latest" +#: utils/misc/guc.c:883 +msgid "Terminate session on any error." +msgstr "只要遇错即终止会话." -#: access/transam/xlog.c:5197 -#, c-format -msgid "recovery_target_xid is not a valid number: \"%s\"" -msgstr "recovery_target_xid 不是一个有效的数字: \"%s\"" +#: utils/misc/guc.c:892 +msgid "Reinitialize server after backend crash." +msgstr "后端服务器崩溃时重新初始化服务器." -#: access/transam/xlog.c:5200 -#, c-format -msgid "recovery_target_xid = %u" -msgstr "recovery_target_xid = %u" +#: utils/misc/guc.c:902 +msgid "Logs the duration of each completed SQL statement." +msgstr "记录每一条完成了的 SQL 语句过程." -#: access/transam/xlog.c:5223 -#, c-format -msgid "recovery_target_time = '%s'" -msgstr "recovery_target_time = %s" +#: utils/misc/guc.c:911 +msgid "Logs each query's parse tree." +msgstr "对每个查询的分析树进行日志记录" -#: access/transam/xlog.c:5234 access/transam/xlog.c:5243 utils/misc/guc.c:4895 -#, c-format -msgid "parameter \"%s\" requires a Boolean value" -msgstr "参数 \"%s\" 需要一个布尔值" +#: utils/misc/guc.c:920 +msgid "Logs each query's rewritten parse tree." +msgstr "对每个查询的重写分析树进行日志记录" -#: access/transam/xlog.c:5236 -#, c-format -msgid "recovery_target_inclusive = %s" -msgstr "recovery_target_inclusive = %s" +#: utils/misc/guc.c:929 +msgid "Logs each query's execution plan." +msgstr "记录每一个查询的执行计划" -#: access/transam/xlog.c:5245 -#, c-format -msgid "standby_mode = '%s'" -msgstr "standby_mode = '%s'" +#: utils/misc/guc.c:938 +msgid "Indents parse and plan tree displays." +msgstr "显示缩进的解析和计划树" -#: access/transam/xlog.c:5251 -#, c-format -msgid "primary_conninfo = '%s'" -msgstr "primary_conninfo = '%s'" +#: utils/misc/guc.c:947 +msgid "Writes parser performance statistics to the server log." +msgstr "把分析器性能统计信息写入到服务器日志中." -#: access/transam/xlog.c:5258 -#, c-format -msgid "trigger_file = '%s'" -msgstr "trigger_file = '%s'" +#: utils/misc/guc.c:956 +msgid "Writes planner performance statistics to the server log." +msgstr "把规划器性能统计信息写入到服务器日志中." -#: access/transam/xlog.c:5263 -#, c-format -msgid "unrecognized recovery parameter \"%s\"" -msgstr "未认可的恢复参数 \"%s\"" +#: utils/misc/guc.c:965 +msgid "Writes executor performance statistics to the server log." +msgstr "把执行器 (executor) 性能统计信息写入到服务器日志中." -#: access/transam/xlog.c:5271 -#, c-format -msgid "syntax error in recovery command file: %s" -msgstr "恢复命令文件语法错误: %s" +#: utils/misc/guc.c:974 +msgid "Writes cumulative performance statistics to the server log." +msgstr "把 cumulative 性能统计信息写入到服务器日志中." -#: access/transam/xlog.c:5273 -msgid "Lines should have the format parameter = 'value'." -msgstr "行格式为 参数 = '值'." +#: utils/misc/guc.c:984 utils/misc/guc.c:1049 utils/misc/guc.c:1059 +#: utils/misc/guc.c:1069 utils/misc/guc.c:1079 utils/misc/guc.c:1804 +#: utils/misc/guc.c:1814 +msgid "No description available." +msgstr "没有可用的描述" -#: access/transam/xlog.c:5282 -#, c-format -msgid "" -"recovery command file \"%s\" specified neither primary_conninfo nor " -"restore_command" -msgstr "" -"恢复命令文件 \"%s\" 既没有指定restore_command,也没有指定primary_conninfo" +#: utils/misc/guc.c:996 +msgid "Collects information about executing commands." +msgstr "收集执行命令的统计信息." -#: access/transam/xlog.c:5284 +#: utils/misc/guc.c:997 msgid "" -"The database server will regularly poll the pg_xlog subdirectory to check " -"for files placed there." -msgstr "数据服务器将会通过定期轮询pg_xlog子目录来检查放在这里的文件。" +"Enables the collection of information on the currently executing command of " +"each session, along with the time at which that command began execution." +msgstr "在每个会话当前正在执行的命令上启用信息收集, 并带有命令开始执行的时间." -#: access/transam/xlog.c:5290 -#, c-format -msgid "" -"recovery command file \"%s\" must specify restore_command when standby mode " -"is not enabled" -msgstr "" -"当没有启用备份模式的时候恢复命令文件 \"%s\" 必须指定 restore_command的值" +#: utils/misc/guc.c:1007 +msgid "Collects statistics on database activity." +msgstr "在数据库上正在执行的事务上收集统计信息." -#: access/transam/xlog.c:5310 -#, c-format -msgid "recovery target timeline %u does not exist" -msgstr "恢复目标的时间线 %u 不存在" +#: utils/misc/guc.c:1017 +msgid "Updates the process title to show the active SQL command." +msgstr "更新进程标题来显示处于活动状态的SQL命令" -#: access/transam/xlog.c:5435 -msgid "archive recovery complete" -msgstr "归档恢复完毕" +#: utils/misc/guc.c:1018 +msgid "" +"Enables updating of the process title every time a new SQL command is " +"received by the server." +msgstr "每一次服务器开始运行新的SQL命令时启用进程标题的更新." -#: access/transam/xlog.c:5525 -#, c-format -msgid "recovery stopping after commit of transaction %u, time %s" -msgstr "恢复停止在事物 %u 提交之后, 时间 %s" +#: utils/misc/guc.c:1027 +msgid "Starts the autovacuum subprocess." +msgstr "启动autovacuum子进程." -#: access/transam/xlog.c:5530 -#, c-format -msgid "recovery stopping before commit of transaction %u, time %s" -msgstr "恢复停止在事物 %u 提交之前, 时间 %s" +#: utils/misc/guc.c:1037 +msgid "Generates debugging output for LISTEN and NOTIFY." +msgstr "为 LISTEN 和 NOTIFY 生成出错信息." -#: access/transam/xlog.c:5538 -#, c-format -msgid "recovery stopping after abort of transaction %u, time %s" -msgstr "恢复停止在事物 %u 中断之后, 时间 %s" +#: utils/misc/guc.c:1091 +msgid "Logs long lock waits." +msgstr "对长时间的锁等待记日志" -#: access/transam/xlog.c:5543 -#, c-format -msgid "recovery stopping before abort of transaction %u, time %s" -msgstr "恢复停止在事物 %u 中断之前, 时间 %s" +#: utils/misc/guc.c:1101 +msgid "Logs the host name in the connection logs." +msgstr "在联接日志中记录主机名." -#: access/transam/xlog.c:5626 -#, c-format +#: utils/misc/guc.c:1102 msgid "" -"hot standby is not possible because %s = %d is a lower setting than on the " -"master server (its value was %d)" +"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 "" -"在备用点无法实施热备操作,因为%s = %d这个设置低于在主服务器的设置(它的值是%" -"d)" +"在缺省情况下,连接日志只显示每个正在连接主机的IP地址.如果想要显示主机名,那么" +"必须把它打开,但是这取决于主机名解析的设置,这在性能上不会有影响." -#: access/transam/xlog.c:5648 -msgid "WAL was generated with wal_level=minimal, data may be missing" -msgstr "WAL文件由wal_level=minimal的设置而产生,这种情况下数据可能会丢失" +#: utils/misc/guc.c:1113 +msgid "Causes subtables to be included by default in various commands." +msgstr "使子表在不同的命令中被缺省包含" -#: access/transam/xlog.c:5649 -msgid "" -"This happens if you temporarily set wal_level=minimal without taking a new " -"base backup." -msgstr "" -"发生这种情况是因为您临时将wal_level设置为minimal,而没有同时进行基础备份" +#: utils/misc/guc.c:1122 +msgid "Encrypt passwords." +msgstr "加密口令." -#: access/transam/xlog.c:5660 +#: utils/misc/guc.c:1123 msgid "" -"hot standby is not possible because wal_level was not set to \"hot_standby\" " -"on the master server" +"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 "" -"无法实施热备份,因为在主用服务器上参数wal_level没有设置为\"hot_standby\"" +"当在 CREATE USER 或者 ALTER USER 语句中指定的口令没有用 ENCRYPTED 或者 " +"UNENCRYPTED, 此参数确定口令是否加密." -#: access/transam/xlog.c:5661 -msgid "" -"Either set wal_level to \"hot_standby\" on the master, or turn off " -"hot_standby here." -msgstr "" -"在这里既可以将参数wal_level设置为\"hot_standby\" ,也可以将hot_standby关闭" +#: utils/misc/guc.c:1133 +msgid "Treats \"expr=NULL\" as \"expr IS NULL\"." +msgstr "\"expr=NULL\" 看作为 \"expr IS NULL\"." -#: access/transam/xlog.c:5708 -msgid "control file contains invalid data" -msgstr "控制文件包含无效的数据" +#: utils/misc/guc.c:1134 +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 NUL而进" +"行处理, 那就是说,如果expr计算为空值那么会返回true,否则返回为false。表达式" +"expr = NULL的正确行为应该是永远返回为空(未知)" -#: access/transam/xlog.c:5712 -#, c-format -msgid "database system was shut down at %s" -msgstr "数据库上次关闭时间为 %s" +#: utils/misc/guc.c:1146 +msgid "Enables per-database user names." +msgstr "启用每个数据库的用户名" -#: access/transam/xlog.c:5716 -#, c-format -msgid "database system was shut down in recovery at %s" -msgstr "在%s,数据库在恢复中关闭" +#: utils/misc/guc.c:1156 +msgid "This parameter doesn't do anything." +msgstr "这个参数不做任何事情." -#: access/transam/xlog.c:5720 -#, c-format -msgid "database system shutdown was interrupted; last known up at %s" -msgstr "数据库系统关闭操作被中断;上一次已知的运行是在%s" +#: utils/misc/guc.c:1157 +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." -#: access/transam/xlog.c:5724 -#, c-format -msgid "database system was interrupted while in recovery at %s" -msgstr "恢复时, 数据库系统在 %s 被中断" +#: utils/misc/guc.c:1166 +msgid "Sets the default read-only status of new transactions." +msgstr "为新事物设置默认的只读状态." -#: access/transam/xlog.c:5726 +#: utils/misc/guc.c:1175 +msgid "Sets the current transaction's read-only status." +msgstr "设置当前事务的只读状态." + +#: utils/misc/guc.c:1185 +msgid "Sets the default deferrable status of new transactions." +msgstr "为新事物设置默认的可延迟状态." + +#: utils/misc/guc.c:1194 msgid "" -"This probably means that some data is corrupted and you will have to use the " -"last backup for recovery." -msgstr "这意味着一些数据被毁坏, 你将不得不使用最新的备份恢复." +"Whether to defer a read-only serializable transaction until it can be " +"executed with no possible serialization failures." +msgstr "" +"是否要延期执行一个只读可串行化事务,直到执行时不会出现任何可串行化失败." -#: access/transam/xlog.c:5730 -#, c-format -msgid "database system was interrupted while in recovery at log time %s" -msgstr "当日志时间%s进行恢复时,数据库系统被中断" +#: utils/misc/guc.c:1204 +msgid "Check function bodies during CREATE FUNCTION." +msgstr "在创建函数过程中检查函数体." + +#: utils/misc/guc.c:1213 +msgid "Enable input of NULL elements in arrays." +msgstr "在数组中启用空值成员输入" -#: access/transam/xlog.c:5732 +#: utils/misc/guc.c:1214 msgid "" -"If this has occurred more than once some data might be corrupted and you " -"might need to choose an earlier recovery target." +"When turned on, unquoted NULL in an array input value means a null value; " +"otherwise it is taken literally." msgstr "" -"如果这种现象多次发生,那么表示数据可能已经损坏,您可能需要选择更早一点的恢复" -"目标" +"当打开这个选项的时候,在数组输入值中没有引用的NULL表示空值;否则是按照字面上的" +"含义进行解释." -#: access/transam/xlog.c:5736 -#, c-format -msgid "database system was interrupted; last known up at %s" -msgstr "数据库系统中断;上一次的启动时间是在%s" +#: utils/misc/guc.c:1224 +msgid "Create new tables with OIDs by default." +msgstr "缺省下使用OIDs来创建表." -#: access/transam/xlog.c:5785 -#, c-format -msgid "requested timeline %u is not a child of database system timeline %u" -msgstr "所要求的时间线%u不附属数据库系统时间线%u" +#: utils/misc/guc.c:1233 +msgid "" +"Start a subprocess to capture stderr output and/or csvlogs into log files." +msgstr "启动一个子进程用来捕获stderr输出或csvlogs,写到到日志文件中." -#: access/transam/xlog.c:5803 -msgid "entering standby mode" -msgstr "正在进入备用模式" +#: utils/misc/guc.c:1242 +msgid "Truncate existing log files of same name during log rotation." +msgstr "在日志切换期间截断相同名称的日志文件" -#: access/transam/xlog.c:5806 -#, c-format -msgid "starting point-in-time recovery to XID %u" -msgstr "开始执行到XID %u的基于时间点恢复" +#: utils/misc/guc.c:1253 +msgid "Emit information about resource usage in sorting." +msgstr "发出在排序中关于资源使用的信息." -#: access/transam/xlog.c:5810 -#, c-format -msgid "starting point-in-time recovery to %s" -msgstr "开始执行到%s的基于时间点恢复" +#: utils/misc/guc.c:1267 +msgid "Generate debugging output for synchronized scanning." +msgstr "为同步扫描生成调试信息." -#: access/transam/xlog.c:5814 -msgid "starting archive recovery" -msgstr "开始归档恢复" +#: utils/misc/guc.c:1282 +msgid "Enable bounded sorting using heap sort." +msgstr "使用堆排序来启用有界排序." -#: access/transam/xlog.c:5827 access/transam/xlog.c:5852 -#, c-format -msgid "checkpoint record is at %X/%X" -msgstr "checkpoint 记录位置在 %X/%X" +#: utils/misc/guc.c:1295 +msgid "Emit WAL-related debugging output." +msgstr "发出与WAL相关的调试信息输出" -#: access/transam/xlog.c:5834 -msgid "could not locate required checkpoint record" -msgstr "无法找到需要的 checkpoint 记录" +#: utils/misc/guc.c:1307 +msgid "Datetimes are integer based." +msgstr "日期时间类型值是基于整数类型的" -#: access/transam/xlog.c:5835 -#, c-format +#: utils/misc/guc.c:1322 msgid "" -"If you are not restoring from a backup, try removing the file \"%s/" -"backup_label\"." -msgstr "如果你不是从备份恢复, 请删除 \"%s/backup_label\"." +"Sets whether Kerberos and GSSAPI user names should be treated as case-" +"insensitive." +msgstr "设置 Kerberos和GSSAPI的用户名是否应该区分大小写." -#: access/transam/xlog.c:5862 access/transam/xlog.c:5877 -msgid "could not locate a valid checkpoint record" -msgstr "无法找到一个有效的 checkpoint 记录" +#: utils/misc/guc.c:1332 +msgid "Warn about backslash escapes in ordinary string literals." +msgstr "在顺序字符串文字中关于反斜线转义的警告" -#: access/transam/xlog.c:5871 -#, c-format -msgid "using previous checkpoint record at %X/%X" -msgstr "使用在 %X/%X 的前一个 checkpoint 记录" +#: utils/misc/guc.c:1342 +msgid "Causes '...' strings to treat backslashes literally." +msgstr "使字符串'...' 按照字面含义处理反斜线" -#: access/transam/xlog.c:5886 -#, c-format -msgid "redo record is at %X/%X; shutdown %s" -msgstr "重做记录是在%X/%X; 关闭 %s" +#: utils/misc/guc.c:1353 +msgid "Enable synchronized sequential scans." +msgstr "启用同步序列扫描" -#: access/transam/xlog.c:5890 -#, c-format -msgid "next transaction ID: %u/%u; next OID: %u" -msgstr "下一个事务ID: %u/%u; 下一个 OID: %u" +#: utils/misc/guc.c:1363 +msgid "Allows archiving of WAL files using archive_command." +msgstr "允许使用archive_command参数对WAL文件进行归档." -#: access/transam/xlog.c:5894 -#, c-format -msgid "next MultiXactId: %u; next MultiXactOffset: %u" -msgstr "下一个MultiXactId: %u; 下一个MultiXactOffset: %u" +#: utils/misc/guc.c:1373 +msgid "Allows connections and queries during recovery." +msgstr "允许在恢复期间进行连接和查询." -#: access/transam/xlog.c:5897 -#, c-format -msgid "oldest unfrozen transaction ID: %u, in database %u" -msgstr "在数据库%2$u中,最旧的非冻结事务ID是%1$u" +#: utils/misc/guc.c:1383 +msgid "" +"Allows feedback from a hot standby to the primary that will avoid query " +"conflicts." +msgstr "允许来自热备节点到主节点的响应,以避免查询冲突." -#: access/transam/xlog.c:5901 -msgid "invalid next transaction ID" -msgstr "无效的下一个事务 ID" +#: utils/misc/guc.c:1393 +msgid "Allows modifications of the structure of system tables." +msgstr "允许修改系统表的结构." -#: access/transam/xlog.c:5920 -msgid "invalid redo in checkpoint record" -msgstr "在检查点记录中无效的redo操作" +#: utils/misc/guc.c:1404 +msgid "Disables reading from system indexes." +msgstr "禁止从系统索引中进行读操作" -#: access/transam/xlog.c:5931 -msgid "invalid redo record in shutdown checkpoint" -msgstr "在关闭检查点中的redo记录无效" +#: utils/misc/guc.c:1405 +msgid "" +"It does not prevent updating the indexes, so it is safe to use. The worst " +"consequence is slowness." +msgstr "这不能防止更新索引,所以应该安全的使用。最糟糕的结果是使系统性能变慢." -#: access/transam/xlog.c:5961 +#: utils/misc/guc.c:1416 msgid "" -"database system was not properly shut down; automatic recovery in progress" -msgstr "数据库系统没有正确的关闭; 处于自动恢复状态中" +"Enables backward compatibility mode for privilege checks on large objects." +msgstr "为在大对象上的权限检查启用向后兼容模式." -#: access/transam/xlog.c:6026 -msgid "initializing for hot standby" -msgstr "正在为热备进行初始化" +#: utils/misc/guc.c:1417 +msgid "" +"Skips privilege checks when reading or modifying large objects, for " +"compatibility with PostgreSQL releases prior to 9.0." +msgstr "" +"为了与9.0版本之前的PostgreSQL相兼容,在读取或修改大对象时候不进行权限检查" -#: access/transam/xlog.c:6153 -#, c-format -msgid "redo starts at %X/%X" -msgstr "redo 在 %X/%X 开始" +#: utils/misc/guc.c:1427 +msgid "When generating SQL fragments, quote all identifiers." +msgstr "在生成SQL片段时,对所有标识符加引号括起来." -#: access/transam/xlog.c:6252 -#, c-format -msgid "redo done at %X/%X" -msgstr "redo 在 %X/%X 完成" +#: utils/misc/guc.c:1446 +msgid "" +"Forces a switch to the next xlog file if a new file has not been started " +"within N seconds." +msgstr "如果新的文件没有在N秒内启动,那么强制切换到下一个xlog文件." -#: access/transam/xlog.c:6257 access/transam/xlog.c:7726 -#, c-format -msgid "last completed transaction was at log time %s" -msgstr "上一次完成事务是在日志时间%s完成的." +#: utils/misc/guc.c:1457 +msgid "Waits N seconds on connection startup after authentication." +msgstr "完成认证后,在启动的连接上等待N秒" -#: access/transam/xlog.c:6265 -msgid "redo is not required" -msgstr "不需要 redo" +#: utils/misc/guc.c:1458 utils/misc/guc.c:1907 +msgid "This allows attaching a debugger to the process." +msgstr "允许将调试器添加到进程" -#: access/transam/xlog.c:6305 -msgid "requested recovery stop point is before consistent recovery point" -msgstr "所要求的恢复停止点在一致性恢复点之前" +#: utils/misc/guc.c:1467 +msgid "Sets the default statistics target." +msgstr "设置默认统计对象." -#: access/transam/xlog.c:6308 -msgid "WAL ends before consistent recovery point" -msgstr "在一致性恢复点前结束WAL" +#: utils/misc/guc.c:1468 +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产生列定义目标集合的列上使用." -#: access/transam/xlog.c:6329 -#, c-format -msgid "selected new timeline ID: %u" -msgstr "已选择的新时间线ID:%u" +#: utils/misc/guc.c:1477 +msgid "Sets the FROM-list size beyond which subqueries are not collapsed." +msgstr "所设置的FROM列表大小超过子查询所允许的最大长度" -#: access/transam/xlog.c:6565 -#, c-format -msgid "consistent recovery state reached at %X/%X" -msgstr "在%X/%X上已到达一致性恢复状态" +#: utils/misc/guc.c:1479 +msgid "" +"The planner will merge subqueries into upper queries if the resulting FROM " +"list would have no more than this many items." +msgstr "" +"如果所产生的FROM列表成员不超过上层查询的相应的数量,那么计划器会把子查询合并到" +"上层查询中." -#: access/transam/xlog.c:6691 -msgid "invalid primary checkpoint link in control file" -msgstr "在控制文件中无效的主 checkpoint 链接" +#: utils/misc/guc.c:1489 +msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened." +msgstr "设置的FROM列表大小超过没有展平的JOIN结构大小." -#: access/transam/xlog.c:6695 -msgid "invalid secondary checkpoint link in control file" -msgstr "在控制文件中无效的次 checkpoint 链接" +#: utils/misc/guc.c:1491 +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子句后" +"面的成员列表中." -#: access/transam/xlog.c:6699 -msgid "invalid checkpoint link in backup_label file" -msgstr "在 backup_label 文件中无效的 checkpoint 链接" +#: utils/misc/guc.c:1501 +msgid "Sets the threshold of FROM items beyond which GEQO is used." +msgstr "设置超过GEQO使用的FROM列表成员数量门限值." -#: access/transam/xlog.c:6713 -msgid "invalid primary checkpoint record" -msgstr "无效的主 checkpoint 记录" +#: utils/misc/guc.c:1510 +msgid "GEQO: effort is used to set the default for other GEQO parameters." +msgstr "GEQO: 为其它GEQO参数设置缺省值" -#: access/transam/xlog.c:6717 -msgid "invalid secondary checkpoint record" -msgstr "无效的次 checkpoint 记录" +#: utils/misc/guc.c:1519 +msgid "GEQO: number of individuals in the population." +msgstr "GEQO: 人群 (population) 个体 (individual) 数" -#: access/transam/xlog.c:6721 -msgid "invalid checkpoint record" -msgstr "无效的 checkpoint 记录" +#: utils/misc/guc.c:1520 utils/misc/guc.c:1529 +msgid "Zero selects a suitable default value." +msgstr "没有选择出一个合适的缺省值" -#: access/transam/xlog.c:6732 -msgid "invalid resource manager ID in primary checkpoint record" -msgstr "在主 checkpoint 记录中的无效资源管理器 ID" +#: utils/misc/guc.c:1528 +msgid "GEQO: number of iterations of the algorithm." +msgstr "GEQO: 算法的迭代次数" -#: access/transam/xlog.c:6736 -msgid "invalid resource manager ID in secondary checkpoint record" -msgstr "在次 checkpoint 记录中的无效资源管理器 ID" +#: utils/misc/guc.c:1539 +msgid "Sets the time to wait on a lock before checking for deadlock." +msgstr "在检查死锁前设置在一个锁上的等待时间." -#: access/transam/xlog.c:6740 -msgid "invalid resource manager ID in checkpoint record" -msgstr "在 checkpoint 记录中的无效资源管理器 ID" +#: utils/misc/guc.c:1550 +msgid "" +"Sets the maximum delay before canceling queries when a hot standby server is " +"processing archived WAL data." +msgstr "当热备服务器在处理已归档的WAL数据时,在取消查询请求前设置最大的延迟." -#: access/transam/xlog.c:6752 -msgid "invalid xl_info in primary checkpoint record" -msgstr "在主 checkpoint 记录中无效的 xl_info" +#: utils/misc/guc.c:1561 +msgid "" +"Sets the maximum delay before canceling queries when a hot standby server is " +"processing streamed WAL data." +msgstr "" +"当热备服务器在处理通过流复制的WAL数据时,在取消查询请求前设置最大的延迟." -#: access/transam/xlog.c:6756 -msgid "invalid xl_info in secondary checkpoint record" -msgstr "在次 checkpoint 记录中无效的 xl_info" +#: utils/misc/guc.c:1572 +msgid "" +"Sets the maximum interval between WAL receiver status reports to the primary." +msgstr "为WAL接受进程的状态报告(向主节点)设置最大时间间隔." -#: access/transam/xlog.c:6760 -msgid "invalid xl_info in checkpoint record" -msgstr "在 checkpoint 记录中无效的 xl_info" +#: utils/misc/guc.c:1583 +msgid "Sets the maximum number of concurrent connections." +msgstr "设置并发联接的最大个数." -#: access/transam/xlog.c:6772 -msgid "invalid length of primary checkpoint record" -msgstr "无效的主 checkpoint 记录长度" +#: utils/misc/guc.c:1593 +msgid "Sets the number of connection slots reserved for superusers." +msgstr "设置为超级用户保留的联接数." -#: access/transam/xlog.c:6776 -msgid "invalid length of secondary checkpoint record" -msgstr "无效的次 checkpoint 记录长度" +#: utils/misc/guc.c:1607 +msgid "Sets the number of shared memory buffers used by the server." +msgstr "设置服务器使用的共享内存缓冲区的数量." -#: access/transam/xlog.c:6780 -msgid "invalid length of checkpoint record" -msgstr "无效的 checkpoint 记录长度" +#: utils/misc/guc.c:1618 +msgid "Sets the maximum number of temporary buffers used by each session." +msgstr "设置每个会话可使用的临时缓冲区的最大数量." -#: access/transam/xlog.c:6942 -msgid "shutting down" -msgstr "正在关闭" +#: utils/misc/guc.c:1629 +msgid "Sets the TCP port the server listens on." +msgstr "设置服务器监听的 TCP 端口号." -#: access/transam/xlog.c:6964 -msgid "database system is shut down" -msgstr "数据库系统已关闭" +#: utils/misc/guc.c:1639 +msgid "Sets the access permissions of the Unix-domain socket." +msgstr "设置 Unix-domain 套接字的访问权限." -#: access/transam/xlog.c:7357 +#: utils/misc/guc.c:1640 msgid "" -"concurrent transaction log activity while database system is shutting down" -msgstr "当数据库正在关闭时, 仍有活跃的并发事物日志" +"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 套接字使用普通的Unix文件许可集合.参数值应该是数值模式定义, 它的形" +"式应该是系统调用chmod和umask可接受的.(为了使用习惯上以0开头的八进制格式数值)" -#: access/transam/xlog.c:7589 -msgid "skipping restartpoint, recovery has already ended" -msgstr "正在跳过重新启动点, 恢复已经结束" +#: utils/misc/guc.c:1654 +msgid "Sets the file permissions for log files." +msgstr "设置日志文件的文件访问权限." -#: access/transam/xlog.c:7614 -#, c-format -msgid "skipping restartpoint, already performed at %X/%X" -msgstr "跳过重新启动点,它已经在%X/%X上执行了." +#: utils/misc/guc.c:1655 +msgid "" +"The parameter value is expected to be a numeric mode specification in the " +"form accepted by the chmod and umask system calls. (To use the customary " +"octal format the number must start with a 0 (zero).)" +msgstr "" +"参数值期望使用数值模式来指定, 它的形式应该是系统调用chmod和umask可接受的.(为" +"了使用习惯上以0开头的八进制格式数值)" -#: access/transam/xlog.c:7724 -#, c-format -msgid "recovery restart point at %X/%X" -msgstr "恢复得重新启动点是在%X/%X开始" +#: utils/misc/guc.c:1668 +msgid "Sets the maximum memory to be used for query workspaces." +msgstr "设置查询工作空间使用的最大内存数." -#: access/transam/xlog.c:7894 -msgid "online backup was cancelled, recovery cannot continue" -msgstr "由于取消了在线备份操作,恢复操作无法继续" +#: utils/misc/guc.c:1669 +msgid "" +"This much memory can be used by each internal sort operation and hash table " +"before switching to temporary disk files." +msgstr "" +"这些内存将可以由每一个内部排序操作和转换到临时磁盘文件之前的散列表来使用" -#: access/transam/xlog.c:7946 -#, c-format -msgid "unexpected timeline ID %u (after %u) in checkpoint record" -msgstr "在检查点记录中出现未期望的时间线ID%u(在%u之后)" +#: utils/misc/guc.c:1681 +msgid "Sets the maximum memory to be used for maintenance operations." +msgstr "设置维护操作使用的最大内存数." -#: access/transam/xlog.c:7982 -#, c-format -msgid "unexpected timeline ID %u (should be %u) in checkpoint record" -msgstr "在检查点记录中出现未期望的时间线ID%u(应该是%u)" +#: utils/misc/guc.c:1682 +msgid "This includes operations such as VACUUM and CREATE INDEX." +msgstr "此处动作包括 VACUUM 和 CREATE INDEX." -#: access/transam/xlog.c:8238 access/transam/xlog.c:8264 -#, c-format -msgid "could not fsync log file %u, segment %u: %m" -msgstr "无法同步 (fsync) 日志文件 %u, 段 %u: %m" +#: utils/misc/guc.c:1697 +msgid "Sets the maximum stack depth, in kilobytes." +msgstr "设置最大的堆栈深度,单位是千字节." -#: access/transam/xlog.c:8272 -#, c-format -msgid "could not fsync write-through log file %u, segment %u: %m" -msgstr "无法同步 (fsync) 日志文件 %u, 段 %u: %m" +#: utils/misc/guc.c:1708 +msgid "Vacuum cost for a page found in the buffer cache." +msgstr "在缓冲区缓存中找到对于一个页进行清理的开销." -#: access/transam/xlog.c:8281 -#, c-format -msgid "could not fdatasync log file %u, segment %u: %m" -msgstr "无法同步 (fdatasync) 日志文件 %u, 段 %u: %m" +#: utils/misc/guc.c:1718 +msgid "Vacuum cost for a page not found in the buffer cache." +msgstr "在缓冲区缓存中没有找到对于一个页进行清理的开销." -#: access/transam/xlog.c:8324 access/transam/xlog.c:8516 -msgid "must be superuser to run a backup" -msgstr "运行备份必须为超级用户" +#: utils/misc/guc.c:1728 +msgid "Vacuum cost for a page dirtied by vacuum." +msgstr "由vacuum进程对脏页进行清理的开销." -#: access/transam/xlog.c:8329 access/transam/xlog.c:8521 -#: access/transam/xlog.c:8724 access/transam/xlog.c:8752 -#: access/transam/xlog.c:8785 access/transam/xlog.c:8877 -#: access/transam/xlog.c:8952 -msgid "recovery is in progress" -msgstr "恢复操作正在进行中" +#: utils/misc/guc.c:1738 +msgid "Vacuum cost amount available before napping." +msgstr "在暂停前可用的清理开销总量." -#: access/transam/xlog.c:8330 access/transam/xlog.c:8522 -#: access/transam/xlog.c:8725 access/transam/xlog.c:8753 -#: access/transam/xlog.c:8786 -msgid "WAL control functions cannot be executed during recovery." -msgstr "在恢复期间无法执行WAL控制函数" +#: utils/misc/guc.c:1748 +msgid "Vacuum cost delay in milliseconds." +msgstr "Vacuum开销延迟是以毫秒为单位" -#: access/transam/xlog.c:8335 access/transam/xlog.c:8527 -msgid "WAL level not sufficient for making an online backup" -msgstr "WAL的级别不能满足在线备份的要求" +#: utils/misc/guc.c:1759 +msgid "Vacuum cost delay in milliseconds, for autovacuum." +msgstr "对于autovacuum来说,Vacuum开销延迟是以毫秒为单位" -#: access/transam/xlog.c:8336 access/transam/xlog.c:8528 -msgid "" -"wal_level must be set to \"archive\" or \"hot_standby\" at server start." -msgstr "在服务器启动的时候wal_level必须被设置为\"archive\"或\"hot_standby\"." +#: utils/misc/guc.c:1770 +msgid "Vacuum cost amount available before napping, for autovacuum." +msgstr "对于autovacuum进程,在暂停前前进行清理有效开销总量." -#: access/transam/xlog.c:8363 access/transam/xlog.c:8432 -msgid "a backup is already in progress" -msgstr "一个备份已经在运行中" +#: utils/misc/guc.c:1780 +msgid "" +"Sets the maximum number of simultaneously open files for each server process." +msgstr "设置每一个服务器进程同时打开文件的最大个数." -#: access/transam/xlog.c:8364 -msgid "Run pg_stop_backup() and try again." -msgstr "运行pg_stop_backup(),然后重新尝试一次." +#: utils/misc/guc.c:1793 +msgid "Sets the maximum number of simultaneously prepared transactions." +msgstr "设置同步的已准备好事务的最大个数." -#: access/transam/xlog.c:8433 -#, c-format -msgid "" -"If you're sure there is no backup in progress, remove file \"%s\" and try " -"again." -msgstr "如果你确认没有其他备份进程在运行, 删除文件 \"%s\", 然后重试." +#: utils/misc/guc.c:1826 +msgid "Sets the maximum allowed duration of any statement." +msgstr "设置任何语句执行时间的最大值 (单位毫秒)." -#: access/transam/xlog.c:8454 access/transam/xlog.c:8611 -#, c-format -msgid "could not write file \"%s\": %m" -msgstr "无法写入文件 \"%s\": %m" +#: utils/misc/guc.c:1827 +msgid "A value of 0 turns off the timeout." +msgstr "值为 0 的时候关闭超时." -#: access/transam/xlog.c:8550 -msgid "a backup is not in progress" -msgstr "没有备份在运行中" +#: utils/misc/guc.c:1837 +msgid "Minimum age at which VACUUM should freeze a table row." +msgstr "VACUUM应该冻结一行记录的最小时间." -#: access/transam/xlog.c:8562 access/transam/xlog.c:9018 -#: access/transam/xlog.c:9024 -#, c-format -msgid "invalid data in file \"%s\"" -msgstr "文件 \"%s\" 中存在无效数据" +#: utils/misc/guc.c:1847 +msgid "Age at which VACUUM should scan whole table to freeze tuples." +msgstr "这是VACUUM应该扫描整个表来冻结元组的时候." -#: access/transam/xlog.c:8674 +#: utils/misc/guc.c:1857 msgid "" -"pg_stop_backup cleanup done, waiting for required WAL segments to be archived" -msgstr "pg_stop_backup命令所执行的清理操作已完成,正在等待所要求的WAL段归档" +"Number of transactions by which VACUUM and HOT cleanup should be deferred, " +"if any." +msgstr "VACUUM和热清理操作应该延迟的事务数量." -#: access/transam/xlog.c:8684 -#, 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秒)" +#: utils/misc/guc.c:1870 +msgid "Sets the maximum number of locks per transaction." +msgstr "设置每一个事物锁的最大个数." -#: access/transam/xlog.c:8686 +#: utils/misc/guc.c:1871 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." +"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 "" -"请检查您的归档命令是否正确执行。pg_stop_backup命令可以安全退出,但是没有所有" -"需要的WAL段的话,数据库备份将无法使用。" +"持有共享锁表的大小是基于最多max_locks_per_transaction * max_connections个不同" +"对象需要在任何时刻被锁定的假设来指定的." -#: access/transam/xlog.c:8693 -msgid "pg_stop_backup complete, all required WAL segments have been archived" -msgstr "pg_stop_backup 执行完成,所有需要的WAL段都已经归档完成。" +#: utils/misc/guc.c:1882 +msgid "Sets the maximum number of predicate locks per transaction." +msgstr "设置每一个事物的断言锁的最大个数." -#: access/transam/xlog.c:8697 +#: utils/misc/guc.c:1883 msgid "" -"WAL archiving is not enabled; you must ensure that all required WAL segments " -"are copied through other means to complete the backup" +"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 "" -"没有启用WAL归档;您必须确保所有的WAL段已通过其他的方法拷贝,这样才能完成备份" +"共享断言锁表的大小是基于最多max_locks_per_transaction * max_connections个不同" +"对象需要在任何时刻被锁定的假设来指定的." -#: access/transam/xlog.c:8719 -msgid "must be superuser to switch transaction log files" -msgstr "必须为超级用户才能切换事务日志文件" +#: utils/misc/guc.c:1894 +msgid "Sets the maximum allowed time to complete client authentication." +msgstr "设置完成客户端认证的需要等待的最长时间" -#: access/transam/xlog.c:8878 -msgid "pg_xlogfile_name_offset() cannot be executed during recovery." -msgstr "在恢复过程中不能执行pg_xlogfile_name_offset()" +#: utils/misc/guc.c:1906 +msgid "Waits N seconds on connection startup before authentication." +msgstr "在认证前在连接启动上需要等待N秒" -#: access/transam/xlog.c:8888 access/transam/xlog.c:8960 -#, c-format -msgid "could not parse transaction log location \"%s\"" -msgstr "无法解析事务日志位置\"%s\"" +#: utils/misc/guc.c:1917 +msgid "Sets the number of WAL files held for standby servers." +msgstr "设置用于备用服务器而持有WAL文件的数量." -#: access/transam/xlog.c:8953 -msgid "pg_xlogfile_name() cannot be executed during recovery." -msgstr "在恢复过程中无法执行pg_xlogfile_name() " +#: utils/misc/guc.c:1927 +msgid "" +"Sets the maximum distance in log segments between automatic WAL checkpoints." +msgstr "在自动WAL检查点之间设置log段中的最大距离." -#: access/transam/xlog.c:9050 -#, c-format -msgid "xlog redo %s" -msgstr "xlog重做 %s" +#: utils/misc/guc.c:1937 +msgid "Sets the maximum time between automatic WAL checkpoints." +msgstr "设置两次自动WAL检查点事件之间需要等待的最大时间" -#: access/transam/xlog.c:9090 -msgid "online backup mode cancelled" -msgstr "取消在线备份模式" +#: utils/misc/guc.c:1948 +msgid "" +"Enables warnings if checkpoint segments are filled more frequently than this." +msgstr "如果检查点段的填充频度超过了最大值,启用警告功能。" -#: access/transam/xlog.c:9091 -#, c-format -msgid "\"%s\" was renamed to \"%s\"." -msgstr "\"%s\" 被重新命名为\"%s\"." +#: utils/misc/guc.c:1950 +msgid "" +"Write a message to the server log if checkpoints caused by the filling of " +"checkpoint segment files happens more frequently than this number of " +"seconds. Zero turns off the warning." +msgstr "" +"如果检查点事件是由于填充检查点段比这个数量的秒数更加频繁所引起,那么会向服务" +"器日志写一条消息. 如果把参数设置为0,那么可以关掉警告功能." -#: access/transam/xlog.c:9098 -msgid "online backup mode was not cancelled" -msgstr "没有取消在线备份模式" +#: utils/misc/guc.c:1962 +msgid "Sets the number of disk-page buffers in shared memory for WAL." +msgstr "为 WAL 设置共享内存中磁盘页缓冲区的个数." -#: access/transam/xlog.c:9099 -#, c-format -msgid "Could not rename \"%s\" to \"%s\": %m." -msgstr "无法把文件 \"%s\" 重命名为 \"%s\": %m" +#: utils/misc/guc.c:1973 +msgid "WAL writer sleep time between WAL flushes." +msgstr "WAL写进程在两次刷新WAL缓存内容之间的睡眠时间" -#: access/transam/xlog.c:9567 access/transam/xlog.c:9589 -#, c-format -msgid "could not read from log file %u, segment %u, offset %u: %m" -msgstr "无法从日志文件 %u 读取, 段 %u, 偏移量 %u: %m" +#: utils/misc/guc.c:1985 +msgid "Sets the maximum number of simultaneously running WAL sender processes." +msgstr "设置同时运行的WAL发送进程最大数量" -#: access/transam/xlog.c:9677 -#, c-format -msgid "trigger file found: %s" -msgstr "已找到触发器文件:%s" +#: utils/misc/guc.c:1995 +msgid "WAL sender sleep time between WAL replications." +msgstr "设置在WAL复制操作之间WAL发送进程的休眠时间" -#: access/common/tupdesc.c:545 parser/parse_relation.c:1165 -#, c-format -msgid "column \"%s\" cannot be declared SETOF" -msgstr "字段 \"%s\" 不能被声明为 SETOF" +#: utils/misc/guc.c:2006 +msgid "Sets the maximum time to wait for WAL replication." +msgstr "设置最大时间,等待WAL复制." -#: access/common/heaptuple.c:646 access/common/heaptuple.c:1398 -#, c-format -msgid "number of columns (%d) exceeds limit (%d)" -msgstr "字段个数 (%d) 超出限制 (%d)" +#: utils/misc/guc.c:2017 +msgid "" +"Sets the delay in microseconds between transaction commit and flushing WAL " +"to disk." +msgstr "设置事物提交和刷新 WAL 到磁盘间的延迟时间, 单位微秒." -#: access/common/indextuple.c:57 -#, c-format -msgid "number of index columns (%d) exceeds limit (%d)" -msgstr "索引字段个数 (%d) 超出限制 (%d)" +#: utils/misc/guc.c:2028 +msgid "" +"Sets the minimum concurrent open transactions before performing commit_delay." +msgstr "在执行commit_delay前,设置最少的可同步打开事务的数量." -#: access/common/indextuple.c:168 -#, c-format -msgid "index row requires %lu bytes, maximum size is %lu" -msgstr "索引行需要 %lu 字节, 最大值为 %lu" +#: utils/misc/guc.c:2039 +msgid "Sets the number of digits displayed for floating-point values." +msgstr "设置浮点数显示的位数." -#: access/common/printtup.c:278 tcop/fastpath.c:181 tcop/fastpath.c:561 -#: tcop/postgres.c:1698 -#, c-format -msgid "unsupported format code: %d" -msgstr "不支持的格式代码: %d" +#: utils/misc/guc.c:2040 +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)" -#: access/common/reloptions.c:323 -msgid "user-defined relation parameter types limit exceeded" -msgstr "用户定义的关系参数类型超过限制" +#: utils/misc/guc.c:2051 +msgid "Sets the minimum execution time above which statements will be logged." +msgstr "设置最小执行时间,执行时间大于等于这个值的语句都将被记录." -#: access/common/reloptions.c:622 -msgid "RESET must not include values for parameters" -msgstr "RESET中不能包含参数的值" +#: utils/misc/guc.c:2053 +msgid "Zero prints all queries. -1 turns this feature off." +msgstr "" +"如果值设置为0,那么打印出所有查询. 如果设置为-1,那么将把这个功能特性关闭" -#: access/common/reloptions.c:655 -#, c-format -msgid "unrecognized parameter namespace \"%s\"" -msgstr "未识别的参数命名空间 \"%s\"" - -#: access/common/reloptions.c:895 -#, c-format -msgid "unrecognized parameter \"%s\"" -msgstr "未识别的参数 \"%s\"" +#: utils/misc/guc.c:2063 +msgid "" +"Sets the minimum execution time above which autovacuum actions will be " +"logged." +msgstr "" +"设置最小执行时间,如果autovacuum操作时间大于等于这个值,那么将记录这些操作." -#: access/common/reloptions.c:920 -#, c-format -msgid "parameter \"%s\" specified more than once" -msgstr "表名 \"%s\" 被指定多次" +#: utils/misc/guc.c:2065 +msgid "Zero prints all actions. -1 turns autovacuum logging off." +msgstr "0表示打印出所有的操作.-1表示关闭对autovacuum的日志记录功能" -#: access/common/reloptions.c:935 -#, c-format -msgid "invalid value for boolean option \"%s\": %s" -msgstr "布尔选项\"%s\"的值无效:%s" +#: utils/misc/guc.c:2075 +msgid "Background writer sleep time between rounds." +msgstr "后台写入进程 (Background writer) 两次运行之间的休眠时间." -#: access/common/reloptions.c:946 -#, c-format -msgid "invalid value for integer option \"%s\": %s" -msgstr "参数 \"%s\" 的值无效: \"%s\"" +#: utils/misc/guc.c:2086 +msgid "Background writer maximum number of LRU pages to flush per round." +msgstr "后台写入进程 (Background writer) 每次可刷新LRU页的最大数量" -#: access/common/reloptions.c:951 access/common/reloptions.c:969 -#, c-format -msgid "value %s out of bounds for option \"%s\"" -msgstr "值 %s超出了选项\"%s\"的范围" +#: utils/misc/guc.c:2102 +msgid "" +"Number of simultaneous requests that can be handled efficiently by the disk " +"subsystem." +msgstr "可以由磁盘子系统有效处理的并发请求数量." -#: access/common/reloptions.c:953 -#, c-format -msgid "Valid values are between \"%d\" and \"%d\"." -msgstr "有效值在\"%d\"和\"%d\"之间." +#: utils/misc/guc.c:2103 +msgid "" +"For RAID arrays, this should be approximately the number of drive spindles " +"in the array." +msgstr "对于RAID磁盘阵列来说,同步可处理的请求与磁盘阵列中磁盘数量应该相近." -#: access/common/reloptions.c:964 -#, c-format -msgid "invalid value for floating point option \"%s\": %s" -msgstr "浮点数类型选项\"%s\"的值无效:%s" +#: utils/misc/guc.c:2116 +msgid "Automatic log file rotation will occur after N minutes." +msgstr "在N分钟后将会产生自动日志文件切换." -#: access/common/reloptions.c:971 -#, c-format -msgid "Valid values are between \"%f\" and \"%f\"." -msgstr "有效值在 \"%f\"和 \"%f\"之间" +#: utils/misc/guc.c:2127 +msgid "Automatic log file rotation will occur after N kilobytes." +msgstr "当写入了N千字节会发生自动日志文件切换" -#: 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不匹配." +#: utils/misc/guc.c:2138 +msgid "Shows the maximum number of function arguments." +msgstr "显示函数参数的最大个数." -#: access/common/tupconvert.c:135 -#, c-format -msgid "" -"Number of returned columns (%d) does not match expected column count (%d)." -msgstr "所返回列的数量(%d)与所期望列的数量(%d)不匹配." +#: utils/misc/guc.c:2149 +msgid "Shows the maximum number of index keys." +msgstr "显示索引键值的最大个数." -#: access/common/tupconvert.c:240 -#, c-format -msgid "" -"Attribute \"%s\" of type %s does not match corresponding attribute of type %" -"s." -msgstr "类型%2$s的属性\"%1$s\"与对应类型%3$s的属性不匹配。" +#: utils/misc/guc.c:2160 +msgid "Shows the maximum identifier length." +msgstr "显示标识符最大长度" -#: access/common/tupconvert.c:252 -#, c-format -msgid "Attribute \"%s\" of type %s does not exist in type %s." -msgstr "类型%2$s的属性\"%1$s\"在类型%3$s中不存在." +#: utils/misc/guc.c:2171 +msgid "Shows the size of a disk block." +msgstr "显示一个磁盘块的大小" -#: access/gin/ginarrayproc.c:30 -msgid "array must not contain null values" -msgstr "在数组中不能包含空值" +#: utils/misc/guc.c:2182 +msgid "Shows the number of pages per disk file." +msgstr "显示在每个磁盘文件中页的数量." -#: access/gin/ginentrypage.c:83 access/gin/ginentrypage.c:118 -#: access/nbtree/nbtinsert.c:522 access/nbtree/nbtsort.c:483 -#, c-format -msgid "index row size %lu exceeds maximum %lu for index \"%s\"" -msgstr "索引行的大小 %1$lu 超过了索引\"%3$s\"所允许的最大值%2$lu" +#: utils/misc/guc.c:2193 +msgid "Shows the block size in the write ahead log." +msgstr "显示预写日志中的块大小." -#: access/gin/ginscan.c:168 access/gin/ginscan.c:231 -msgid "GIN indexes do not support whole-index scans" -msgstr "GIN索引不支持完整索引 (whole-index) 扫描" +#: utils/misc/guc.c:2204 +msgid "Shows the number of pages per write ahead log segment." +msgstr "显示每个预写日志段中页的数量." -#: access/gist/gistxlog.c:803 -#, c-format -msgid "index %u/%u/%u needs VACUUM FULL or REINDEX to finish crash recovery" -msgstr "索引%u/%u/%u需要运行VACUUM FULL或REINDEX来结束崩溃恢复." +#: utils/misc/guc.c:2217 +msgid "Time to sleep between autovacuum runs." +msgstr "两次运行autovacuum进程的休眠时间" -#: access/gist/gistxlog.c:805 -msgid "Incomplete insertion detected during crash replay." -msgstr "在系统崩溃回放期间检测到未完成的插入操作." +#: utils/misc/guc.c:2227 +msgid "Minimum number of tuple updates or deletes prior to vacuum." +msgstr "设置激活清理操作所需要最小数量的更新或删除元组." -#: access/gist/gistsplit.c:372 -#, c-format -msgid "picksplit method for column %d of index \"%s\" failed" -msgstr "为索引\"%2$s\"的第%1$d列执行picksplit方法失败" +#: utils/misc/guc.c:2236 +msgid "Minimum number of tuple inserts, updates or deletes prior to analyze." +msgstr "设置激活分析前所插入,更新或删除元组的最小数量" -#: access/gist/gistsplit.c:374 +#: utils/misc/guc.c:2246 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:407 -#, c-format -msgid "index \"%s\" needs VACUUM or REINDEX to finish crash recovery" -msgstr "索引\"%s\"需要运行VACUUM或REINDEX来结束崩溃恢复." +"Age at which to autovacuum a table to prevent transaction ID wraparound." +msgstr "这是应该自动清理一张表以避免事务ID重叠的时间段." -#: access/gist/gistutil.c:588 access/hash/hashutil.c:165 -#: access/nbtree/nbtpage.c:432 -#, c-format -msgid "index \"%s\" contains unexpected zero page at block %u" -msgstr "索引\"%s\"在块%u上包含未期望的零页" +#: utils/misc/guc.c:2257 +msgid "" +"Sets the maximum number of simultaneously running autovacuum worker " +"processes." +msgstr "设置最大可同时运行的autovacuum工作进程数量" -#: access/gist/gistutil.c:591 access/gist/gistutil.c:602 -#: access/hash/hashutil.c:168 access/hash/hashutil.c:179 -#: access/hash/hashutil.c:191 access/hash/hashutil.c:212 -#: access/nbtree/nbtpage.c:435 access/nbtree/nbtpage.c:446 -msgid "Please REINDEX it." -msgstr "请重建索引 (REINDEX)." +#: utils/misc/guc.c:2267 +msgid "Time between issuing TCP keepalives." +msgstr "启动TCP存活定时器的间隔" -#: access/gist/gistutil.c:599 access/hash/hashutil.c:176 -#: access/hash/hashutil.c:188 access/nbtree/nbtpage.c:443 -#, c-format -msgid "index \"%s\" contains corrupted page at block %u" -msgstr "索引\"%s\"在块%u上包含已损坏的页" +#: utils/misc/guc.c:2268 utils/misc/guc.c:2279 +msgid "A value of 0 uses the system default." +msgstr "值为0的时候表示系统缺省值" -#: access/gist/gistvacuum.c:72 -#, c-format -msgid "index \"%s\" needs VACUUM FULL or REINDEX to finish crash recovery" -msgstr "索引\"%s\"需要运行VACUUM FULL或REINDEX来结束崩溃恢复." +#: utils/misc/guc.c:2278 +msgid "Time between TCP keepalive retransmits." +msgstr "在两次TCP存活启动器重新传送之间需要花费的时间" -#: access/hash/hashutil.c:204 -#, c-format -msgid "index \"%s\" is not a hash index" -msgstr "索引 \"%s\" 不是一个散列索引" +#: utils/misc/guc.c:2289 +msgid "" +"Set the amount of traffic to send and receive before renegotiating the " +"encryption keys." +msgstr "在重新设定加密键之前设定需要进行发送和接收的流量总和" -#: access/hash/hashutil.c:210 -#, c-format -msgid "index \"%s\" has wrong hash version" -msgstr "索引 \"%s\" 有错误的散列版本" +#: utils/misc/guc.c:2300 +msgid "Maximum number of TCP keepalive retransmits." +msgstr "设置每一个事物锁的最大个数." -#: access/hash/hashinsert.c:73 -#, c-format -msgid "index row size %lu exceeds hash maximum %lu" -msgstr "索引列大小 %lu 超过散列最大值 %lu" +#: utils/misc/guc.c:2301 +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用于" +"表示系统缺省." -#: access/hash/hashinsert.c:76 -msgid "Values larger than a buffer page cannot be indexed." -msgstr "大于一个缓冲页的值无法用于创建索引." +#: utils/misc/guc.c:2312 +msgid "Sets the maximum allowed result for exact search by GIN." +msgstr "设置由GIN进行的精确搜索所允许的最大允许结果." -#: access/hash/hashovfl.c:546 -#, c-format -msgid "out of overflow pages in hash index \"%s\"" -msgstr "散列索引 \"%s\" 中页溢出" +#: utils/misc/guc.c:2323 +msgid "Sets the planner's assumption about the size of the disk cache." +msgstr "设置关于计划器对磁盘缓冲大小的假设." -#: access/hash/hashsearch.c:152 -msgid "hash indexes do not support whole-index scans" -msgstr "散列索引不支持完整索引 (whole-index) 扫描" +#: utils/misc/guc.c:2324 +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大小的页为单位." -#: access/heap/heapam.c:1076 access/heap/heapam.c:1104 -#: access/heap/heapam.c:1134 catalog/aclchk.c:1714 -#, c-format -msgid "\"%s\" is an index" -msgstr "\"%s\" 是一个索引" +#: utils/misc/guc.c:2337 +msgid "Shows the server version as an integer." +msgstr "以整数的形式显示服务器版本信息." -#: access/heap/heapam.c:1081 access/heap/heapam.c:1109 -#: access/heap/heapam.c:1139 catalog/aclchk.c:1721 commands/tablecmds.c:2162 -#: commands/tablecmds.c:6528 commands/tablecmds.c:7834 -#, c-format -msgid "\"%s\" is a composite type" -msgstr "\"%s\" 为混和类型" +#: utils/misc/guc.c:2348 +msgid "Log the use of temporary files larger than this number of kilobytes." +msgstr "记录对超过这个数量(以千字节为单位)的临时文件的使用." -#: access/heap/heapam.c:3149 access/heap/heapam.c:3180 -#: access/heap/heapam.c:3215 -#, c-format -msgid "could not obtain lock on row in relation \"%s\"" -msgstr "无法在关系 \"%s\"中的记录上获得锁" +#: utils/misc/guc.c:2349 +msgid "Zero logs all files. The default is -1 (turning this feature off)." +msgstr "如果设置为0,打印所有查询. 默认值为 -1 (表示关闭此功能)." -#: access/heap/hio.c:175 access/heap/rewriteheap.c:592 -#, c-format -msgid "row is too big: size %lu, maximum size %lu" -msgstr "行太大: 尺寸 %lu, 最大值 %lu" +#: utils/misc/guc.c:2359 +msgid "Sets the size reserved for pg_stat_activity.current_query, in bytes." +msgstr "设置为pg_stat_activity.current_query所保留的空间大小,以字节为单位." -#: access/index/indexam.c:149 commands/comment.c:559 commands/indexcmds.c:1595 -#: commands/tablecmds.c:212 commands/tablecmds.c:2357 -#, c-format -msgid "\"%s\" is not an index" -msgstr "\"%s\" 不是一个索引" +#: utils/misc/guc.c:2378 +msgid "" +"Sets the planner's estimate of the cost of a sequentially fetched disk page." +msgstr "设置计划器对顺序获取磁盘页的开销估算" -#: access/nbtree/nbtinsert.c:384 -#, c-format -msgid "duplicate key value violates unique constraint \"%s\"" -msgstr "重复键违反唯一约束\"%s\"" +#: utils/misc/guc.c:2388 +msgid "" +"Sets the planner's estimate of the cost of a nonsequentially fetched disk " +"page." +msgstr "设置计划器对非顺序获取磁盘页的开销估算." -#: access/nbtree/nbtinsert.c:386 -#, c-format -msgid "Key %s already exists." -msgstr "键值\"%s\" 已经存在" +#: utils/misc/guc.c:2398 +msgid "Sets the planner's estimate of the cost of processing each tuple (row)." +msgstr "设置计划器对处理每个元组(也就是记录)的开销估算" -#: access/nbtree/nbtinsert.c:448 executor/execUtils.c:1319 -#, c-format -msgid "failed to re-find tuple within index \"%s\"" -msgstr "在索引\"%s\"中重新寻找元组失败" +#: utils/misc/guc.c:2408 +msgid "" +"Sets the planner's estimate of the cost of processing each index entry " +"during an index scan." +msgstr "设置计划器在索引扫描期间对处理每个索引项的开销估算." -#: access/nbtree/nbtinsert.c:450 executor/execUtils.c:1321 -msgid "This may be because of a non-immutable index expression." -msgstr "这可能是由于一个非不可改变的索引表达式引起的" +#: utils/misc/guc.c:2418 +msgid "" +"Sets the planner's estimate of the cost of processing each operator or " +"function call." +msgstr "设置计划器对处理每个操作符和函数调用的开销估算." -#: access/nbtree/nbtinsert.c:526 access/nbtree/nbtsort.c:487 +#: utils/misc/guc.c:2429 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哈希函数索引,或者使用全文索引." +"Sets the planner's estimate of the fraction of a cursor's rows that will be " +"retrieved." +msgstr "设置计划器对于通过游标取回记录部分的估算." -#: access/nbtree/nbtpage.c:160 access/nbtree/nbtpage.c:364 -#, c-format -msgid "index \"%s\" is not a btree" -msgstr "索引 \"%s\" 不是一个 btree" +#: utils/misc/guc.c:2440 +msgid "GEQO: selective pressure within the population." +msgstr "GEQO: 在总体中的选择性压力" -#: access/nbtree/nbtpage.c:166 access/nbtree/nbtpage.c:370 -#, c-format -msgid "version mismatch in index \"%s\": file version %d, code version %d" -msgstr "在索引 \"%s\" 中版本不匹配: 文件版本 %d, 代码版本 %d" +#: utils/misc/guc.c:2450 +msgid "GEQO: seed for random path selection." +msgstr "GEQO:用于随机路径选择的种子." -#: bootstrap/bootstrap.c:272 tcop/postgres.c:3334 postmaster/postmaster.c:675 -#, c-format -msgid "--%s requires a value" -msgstr "--%s 需要一个值" +#: utils/misc/guc.c:2460 +msgid "Multiple of the average buffer usage to free per round." +msgstr "每一次释放平均缓冲区使用量的倍数大小" -#: bootstrap/bootstrap.c:277 tcop/postgres.c:3339 postmaster/postmaster.c:680 -#, c-format -msgid "-c %s requires a value" -msgstr "-c %s 需要一个值" +#: utils/misc/guc.c:2470 +msgid "Sets the seed for random-number generation." +msgstr "设置生成随机数的种子." -#: bootstrap/bootstrap.c:288 postmaster/postmaster.c:692 -#: postmaster/postmaster.c:705 -#, c-format -msgid "Try \"%s --help\" for more information.\n" -msgstr "请用 \"%s --help\" 获取更多的信息.\n" +#: utils/misc/guc.c:2481 +msgid "" +"Number of tuple updates or deletes prior to vacuum as a fraction of " +"reltuples." +msgstr "在清理前需要插入,删除或更新元组的数量,这个数量是作为表大小的百分比" -#: bootstrap/bootstrap.c:297 -#, c-format -msgid "%s: invalid command-line arguments\n" -msgstr "%s: 无效的命令行参数\n" +#: utils/misc/guc.c:2490 +msgid "" +"Number of tuple inserts, updates or deletes prior to analyze as a fraction " +"of reltuples." +msgstr "在分析前插入,删除或更新元组的数量,这个数量是作为表大小的百分比" -#: catalog/toasting.c:91 commands/comment.c:573 commands/indexcmds.c:187 -#: commands/indexcmds.c:1627 commands/lockcmds.c:149 commands/tablecmds.c:194 -#: commands/tablecmds.c:1096 commands/tablecmds.c:3354 commands/trigger.c:149 -#: commands/trigger.c:1063 -#, c-format -msgid "\"%s\" is not a table" -msgstr "\"%s\" 不是一个表" +#: utils/misc/guc.c:2500 +msgid "" +"Time spent flushing dirty buffers during checkpoint, as fraction of " +"checkpoint interval." +msgstr "" +"在检查点事件期间花费在将缓冲区中脏页刷新到磁盘的时间, 这个时间作为检查点间隔" +"的百分比。" -#: catalog/toasting.c:141 -msgid "shared tables cannot be toasted after initdb" -msgstr "在 initdb 之后, 不可以 toasted 共享表" +#: utils/misc/guc.c:2519 +msgid "Sets the shell command that will be called to archive a WAL file." +msgstr "设置用于对WAL文件进行归档的shell命令" -#: catalog/aclchk.c:196 -msgid "grant options can only be granted to roles" -msgstr "grant 选项只能用于个体用户上" +#: utils/misc/guc.c:2529 +msgid "Sets the client's character set encoding." +msgstr "设置客户端编码" -#: catalog/aclchk.c:312 -#, c-format -msgid "no privileges were granted for column \"%s\" of relation \"%s\"" -msgstr "没有为关系\"%2$s\"的列\"%1$s\"授予相应的权限" +#: utils/misc/guc.c:2540 +msgid "Controls information prefixed to each log line." +msgstr "将控制信息作为每条日志文本的前缀" -#: catalog/aclchk.c:317 -#, c-format -msgid "no privileges were granted for \"%s\"" -msgstr "没有为\"%s\"授予权限" +#: utils/misc/guc.c:2541 +msgid "If blank, no prefix is used." +msgstr "如果是空的,那么不使用前缀" -#: catalog/aclchk.c:325 -#, c-format -msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" -msgstr "没有为关系\"%2$s\"的列\"%1$s\"授予所有权限" +#: utils/misc/guc.c:2550 +msgid "Sets the time zone to use in log messages." +msgstr "设置在日志消息中使用的时间区域" -#: catalog/aclchk.c:330 -#, c-format -msgid "not all privileges were granted for \"%s\"" -msgstr "没有为\"%s\"授予所有的权限" +#: utils/misc/guc.c:2560 +msgid "Sets the display format for date and time values." +msgstr "设置日期和时间值的显示格式." -#: catalog/aclchk.c:341 -#, c-format -msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" -msgstr "不能从关系\"%2$s\"的列\"%1$s\"上撤销权限" +#: utils/misc/guc.c:2561 +msgid "Also controls interpretation of ambiguous date inputs." +msgstr "控制对模糊日期输入的解释." -#: catalog/aclchk.c:346 -#, c-format -msgid "no privileges could be revoked for \"%s\"" -msgstr "不能为\"%s\"撤销权限" +#: utils/misc/guc.c:2572 +msgid "Sets the default tablespace to create tables and indexes in." +msgstr "设置用于创建表和索引的缺省表空间." -#: catalog/aclchk.c:354 -#, c-format -msgid "" -"not all privileges could be revoked for column \"%s\" of relation \"%s\"" -msgstr "不能从关系\"%2$s\"的列\"%1$s\"上撤销所有权限" +#: utils/misc/guc.c:2573 +msgid "An empty string selects the database's default tablespace." +msgstr "使用空字符串表示数据库的缺省表空间." -#: catalog/aclchk.c:359 -#, c-format -msgid "not all privileges could be revoked for \"%s\"" -msgstr "不能为\"%s\"撤销所有权限" +#: utils/misc/guc.c:2583 +msgid "Sets the tablespace(s) to use for temporary tables and sort files." +msgstr "将表空间设置为用于存放临时表和排序文件" -#: catalog/aclchk.c:438 catalog/aclchk.c:927 -#, c-format -msgid "invalid privilege type %s for relation" -msgstr "关系的权限类型%s无效" +#: utils/misc/guc.c:2594 +msgid "Sets the path for dynamically loadable modules." +msgstr "设置动态加载摸组的路径." -#: catalog/aclchk.c:442 catalog/aclchk.c:931 -#, c-format -msgid "invalid privilege type %s for sequence" -msgstr "序列的权限类型 %s 无效" +#: utils/misc/guc.c:2595 +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 "" +"如果一个动态加载模块需要打开并且指定名字没有路径 (例如, 名字中没包含斜杠), 系" +"统将在此路径中查找指定的文件." -#: catalog/aclchk.c:446 -#, c-format -msgid "invalid privilege type %s for database" -msgstr "无效的数据库权限类型 %s" +#: utils/misc/guc.c:2608 +msgid "Sets the location of the Kerberos server key file." +msgstr "设置 Kerberos 服务器密钥文件位置." -#: catalog/aclchk.c:450 catalog/aclchk.c:935 -#, c-format -msgid "invalid privilege type %s for function" -msgstr "无效的函数权限类型 %s" +#: utils/misc/guc.c:2619 +msgid "Sets the name of the Kerberos service." +msgstr "设置Kerberos服务的名称" -#: catalog/aclchk.c:454 -#, c-format -msgid "invalid privilege type %s for language" -msgstr "无效的语言权限类型 %s" +#: utils/misc/guc.c:2629 +msgid "Sets the Bonjour service name." +msgstr "设置Bonjour服务名称." -#: catalog/aclchk.c:458 -#, c-format -msgid "invalid privilege type %s for large object" -msgstr "用于大对象的无效权限类型%s" +#: utils/misc/guc.c:2641 +msgid "Shows the collation order locale." +msgstr "显示排序规则顺序的语言环境" -#: catalog/aclchk.c:462 -#, c-format -msgid "invalid privilege type %s for schema" -msgstr "无效的模式权限类型 %s" +#: utils/misc/guc.c:2652 +msgid "Shows the character classification and case conversion locale." +msgstr "显示字符分类和按条件转换的语言环境." -#: catalog/aclchk.c:466 -#, c-format -msgid "invalid privilege type %s for tablespace" -msgstr "无效的表空间权限类型 %s" +#: utils/misc/guc.c:2663 +msgid "Sets the language in which messages are displayed." +msgstr "设置信息显示语言." -#: catalog/aclchk.c:470 -#, c-format -msgid "invalid privilege type %s for foreign-data wrapper" -msgstr "外部数据封装器的权限类型 %s 无效" +#: utils/misc/guc.c:2673 +msgid "Sets the locale for formatting monetary amounts." +msgstr "为货币数量格式设置 locale." -#: catalog/aclchk.c:474 -#, c-format -msgid "invalid privilege type %s for foreign server" -msgstr "外部服务器的权限类型%s无效" +#: utils/misc/guc.c:2683 +msgid "Sets the locale for formatting numbers." +msgstr "为数字格式设置 locale" -#: catalog/aclchk.c:513 -msgid "column privileges are only valid for relations" -msgstr "列权限只对关系有效" +#: utils/misc/guc.c:2693 +msgid "Sets the locale for formatting date and time values." +msgstr "为日期和时间值格式设置 locale" -#: catalog/aclchk.c:614 commands/comment.c:698 commands/dbcommands.c:760 -#: commands/dbcommands.c:905 commands/dbcommands.c:1004 -#: commands/dbcommands.c:1181 commands/dbcommands.c:1366 -#: commands/dbcommands.c:1410 commands/dbcommands.c:1456 utils/adt/acl.c:2975 -#: utils/adt/dbsize.c:149 utils/init/postinit.c:708 utils/init/postinit.c:776 -#: utils/init/postinit.c:793 -#, c-format -msgid "database \"%s\" does not exist" -msgstr "数据库 \"%s\" 不存在" +#: utils/misc/guc.c:2703 +msgid "Lists shared libraries to preload into server." +msgstr "列出预装入服务器的共享库." -#: catalog/aclchk.c:640 commands/comment.c:1220 commands/functioncmds.c:836 -#: commands/functioncmds.c:1990 commands/proclang.c:531 -#: commands/proclang.c:600 commands/proclang.c:640 utils/adt/acl.c:3562 -#, c-format -msgid "language \"%s\" does not exist" -msgstr "语言 \"%s\" 不存在" +#: utils/misc/guc.c:2714 +msgid "Lists shared libraries to preload into each backend." +msgstr "列出预先加载到每个后台进程的共享库." -#: catalog/aclchk.c:656 catalog/aclchk.c:3684 catalog/aclchk.c:4375 -#: catalog/pg_largeobject.c:116 catalog/pg_largeobject.c:176 -#: commands/comment.c:1415 storage/large_object/inv_api.c:272 -#, c-format -msgid "large object %u does not exist" -msgstr "大对象 %u 不存在" +#: utils/misc/guc.c:2725 +msgid "Sets the schema search order for names that are not schema-qualified." +msgstr "为不是模式限定的名称设置模式搜索顺序" -#: catalog/aclchk.c:673 catalog/aclchk.c:1051 catalog/namespace.c:340 -#: catalog/namespace.c:2307 catalog/namespace.c:2346 catalog/namespace.c:2393 -#: catalog/namespace.c:3320 commands/comment.c:806 commands/schemacmds.c:190 -#: commands/schemacmds.c:264 commands/schemacmds.c:335 utils/adt/acl.c:3760 -#, c-format -msgid "schema \"%s\" does not exist" -msgstr "模式 \"%s\" 不存在" +#: utils/misc/guc.c:2737 +msgid "Sets the server (database) character set encoding." +msgstr "设置服务器 (数据库) 字符编码." -#: catalog/aclchk.c:702 commands/comment.c:737 commands/dbcommands.c:436 -#: commands/dbcommands.c:1037 commands/indexcmds.c:225 -#: commands/tablecmds.c:430 commands/tablecmds.c:6787 -#: commands/tablespace.c:410 commands/tablespace.c:808 -#: commands/tablespace.c:875 commands/tablespace.c:980 -#: commands/tablespace.c:1036 commands/tablespace.c:1160 -#: executor/execMain.c:2125 utils/adt/acl.c:4134 utils/adt/dbsize.c:248 -#, c-format -msgid "tablespace \"%s\" does not exist" -msgstr "表空间 \"%s\" 不存在" +#: utils/misc/guc.c:2749 +msgid "Shows the server version." +msgstr "显示服务器版本信息." -#: catalog/aclchk.c:869 catalog/aclchk.c:877 commands/copy.c:751 -#: commands/copy.c:769 commands/copy.c:777 commands/copy.c:785 -#: commands/copy.c:793 commands/copy.c:801 commands/copy.c:809 -#: commands/copy.c:817 commands/copy.c:833 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/functioncmds.c:485 commands/functioncmds.c:575 -#: commands/functioncmds.c:583 commands/functioncmds.c:591 -#: commands/functioncmds.c:1953 commands/functioncmds.c:1961 -#: commands/sequence.c:1025 commands/sequence.c:1033 commands/sequence.c:1041 -#: commands/sequence.c:1049 commands/sequence.c:1057 commands/sequence.c:1065 -#: commands/sequence.c:1073 commands/sequence.c:1081 commands/typecmds.c:274 -#: commands/user.c:140 commands/user.c:157 commands/user.c:165 -#: commands/user.c:173 commands/user.c:181 commands/user.c:189 -#: commands/user.c:197 commands/user.c:205 commands/user.c:213 -#: commands/user.c:221 commands/user.c:229 commands/user.c:467 -#: commands/user.c:479 commands/user.c:487 commands/user.c:495 -#: commands/user.c:503 commands/user.c:511 commands/user.c:519 -#: commands/user.c:528 commands/user.c:536 -msgid "conflicting or redundant options" -msgstr "选项冲突或过多" +#: utils/misc/guc.c:2761 +msgid "Sets the current role." +msgstr "设置当前的角色" -#: catalog/aclchk.c:968 -msgid "default privileges cannot be set for columns" -msgstr "无法为列设置缺省权限" +#: utils/misc/guc.c:2773 +msgid "Sets the session user name." +msgstr "设置会话用户名称." -#: catalog/aclchk.c:1464 commands/analyze.c:341 commands/comment.c:651 -#: commands/copy.c:3441 commands/sequence.c:1309 commands/tablecmds.c:3949 -#: commands/tablecmds.c:4039 commands/tablecmds.c:4086 -#: commands/tablecmds.c:4182 commands/tablecmds.c:4226 -#: commands/tablecmds.c:4305 commands/tablecmds.c:4386 -#: commands/tablecmds.c:5837 commands/tablecmds.c:5975 commands/trigger.c:527 -#: parser/analyze.c:1814 parser/parse_relation.c:1996 -#: parser/parse_relation.c:2051 parser/parse_target.c:808 -#: parser/parse_type.c:117 utils/adt/acl.c:2770 utils/adt/ruleutils.c:1523 -#, c-format -msgid "column \"%s\" of relation \"%s\" does not exist" -msgstr "关系 \"%2$s\" 的 \"%1$s\" 字段不存在" +#: utils/misc/guc.c:2784 +msgid "Sets the destination for server log output." +msgstr "设置服务器日志输出目标." -#: catalog/aclchk.c:1729 commands/comment.c:566 commands/sequence.c:953 -#: commands/tablecmds.c:200 commands/tablecmds.c:2146 -#: commands/tablecmds.c:2365 commands/tablecmds.c:7793 utils/adt/acl.c:2006 -#: utils/adt/acl.c:2036 utils/adt/acl.c:2068 utils/adt/acl.c:2100 -#: utils/adt/acl.c:2128 utils/adt/acl.c:2158 -#, c-format -msgid "\"%s\" is not a sequence" -msgstr "\"%s\" 不是一个序列" +#: utils/misc/guc.c:2785 +msgid "" +"Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and " +"\"eventlog\", depending on the platform." +msgstr "" +"有效值为 \"stderr\", \"syslog\", \"csvlog\", and \"eventlog\" 的组合, 这取决" +"于平台的种类." -#: catalog/aclchk.c:1767 -#, c-format -msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" -msgstr "序列\"%s\"只支持权限USAGE, SELECT 和UPDATE" +#: utils/misc/guc.c:2796 +msgid "Sets the destination directory for log files." +msgstr "设置日志文件目的目录." -#: catalog/aclchk.c:1784 -msgid "invalid privilege type USAGE for table" -msgstr "表的权限类型 USAGE 无效" +#: utils/misc/guc.c:2797 +msgid "Can be specified as relative to the data directory or as absolute path." +msgstr "可以指定为data目录的相对目录或绝对目录." -#: catalog/aclchk.c:1934 -#, c-format -msgid "invalid privilege type %s for column" -msgstr "列的权限类型%s无效" +#: utils/misc/guc.c:2807 +msgid "Sets the file name pattern for log files." +msgstr "设置日志文件的文件名字模式." -#: catalog/aclchk.c:1947 -#, c-format -msgid "sequence \"%s\" only supports SELECT column privileges" -msgstr "序列\"%s\"只支持在列上的SELECT权限" +#: utils/misc/guc.c:2818 +msgid "Sets the program name used to identify PostgreSQL messages in syslog." +msgstr "设置在系统日志 (syslog) 中确认 PostgreSQL 信息的程序名." -#: catalog/aclchk.c:2531 -#, c-format -msgid "language \"%s\" is not trusted" -msgstr "语言 \"%s\" 不可信" +#: utils/misc/guc.c:2829 +msgid "Sets the time zone for displaying and interpreting time stamps." +msgstr "设置显示和解释时间戳的时区." -#: catalog/aclchk.c:2533 -msgid "Only superusers can use untrusted languages." -msgstr "只有超级用户可以使用非信任语言." +#: utils/misc/guc.c:2839 +msgid "Selects a file of time zone abbreviations." +msgstr "选择时间区域缩写的文件" -#: catalog/aclchk.c:3040 -#, c-format -msgid "unrecognized privilege type \"%s\"" -msgstr "未知的权限类型: \"%s\"" +#: utils/misc/guc.c:2849 +msgid "Sets the current transaction's isolation level." +msgstr "设置当前事物的隔离级别." -#: catalog/aclchk.c:3089 -#, c-format -msgid "permission denied for column %s" -msgstr "访问列 %s 的权限不够" +#: utils/misc/guc.c:2860 +msgid "Sets the owning group of the Unix-domain socket." +msgstr "设置 Unix-domain 套接字的属组." -#: catalog/aclchk.c:3091 -#, c-format -msgid "permission denied for relation %s" -msgstr "对关系 %s 权限不够" +#: utils/misc/guc.c:2861 +msgid "" +"The owning user of the socket is always the user that starts the server." +msgstr "套接字的属主用户也是起动服务的用户." -#: catalog/aclchk.c:3093 commands/sequence.c:469 commands/sequence.c:668 -#: commands/sequence.c:710 commands/sequence.c:746 -#, c-format -msgid "permission denied for sequence %s" -msgstr "对于序列 %s, 权限不够" +#: utils/misc/guc.c:2871 +msgid "Sets the directory where the Unix-domain socket will be created." +msgstr "设置创建 Unix-domain 套接字的目录." -#: catalog/aclchk.c:3095 -#, c-format -msgid "permission denied for database %s" -msgstr "对数据库 %s 权限不够" +#: utils/misc/guc.c:2882 +msgid "Sets the host name or IP address(es) to listen to." +msgstr "设置监听的主机名或 IP 地址." -#: catalog/aclchk.c:3097 -#, c-format -msgid "permission denied for function %s" -msgstr "对函数 %s 权限不够" +#: utils/misc/guc.c:2893 +msgid "Sets the list of known custom variable classes." +msgstr "设置已知变量类型的列表" -#: catalog/aclchk.c:3099 -#, c-format -msgid "permission denied for operator %s" -msgstr "对操作符 %s 权限不够" +#: utils/misc/guc.c:2904 +msgid "Sets the server's data directory." +msgstr "设置服务器的数据目录" -#: catalog/aclchk.c:3101 -#, c-format -msgid "permission denied for type %s" -msgstr "对类型 %s 权限不够" +#: utils/misc/guc.c:2915 +msgid "Sets the server's main configuration file." +msgstr "设置服务器的主配置文件" -#: catalog/aclchk.c:3103 -#, c-format -msgid "permission denied for language %s" -msgstr "对语言 %s 权限不够" +#: utils/misc/guc.c:2926 +msgid "Sets the server's \"hba\" configuration file." +msgstr "设置服务器的 \"hba\" 配置文件" -#: catalog/aclchk.c:3105 -#, c-format -msgid "permission denied for large object %s" -msgstr "在大对象%s上的权限不够" +#: utils/misc/guc.c:2937 +msgid "Sets the server's \"ident\" configuration file." +msgstr "设置服务器的 \"ident\" 配置文件" -#: catalog/aclchk.c:3107 -#, c-format -msgid "permission denied for schema %s" -msgstr "对模式 %s 权限不够" +#: utils/misc/guc.c:2948 +msgid "Writes the postmaster PID to the specified file." +msgstr "把 postmaster PID 写到指定文件." -#: catalog/aclchk.c:3109 -#, c-format -msgid "permission denied for operator class %s" -msgstr "对操作符表 %s 权限不够" +#: utils/misc/guc.c:2959 +msgid "Writes temporary statistics files to the specified directory." +msgstr "将临时统计信息文件写到指定的目录" -#: catalog/aclchk.c:3111 -#, c-format -msgid "permission denied for operator family %s" -msgstr "对于操作符表%s的权限不够" +#: utils/misc/guc.c:2970 +msgid "List of names of potential synchronous standbys." +msgstr "可能的同步备用节点的名称列表." -#: catalog/aclchk.c:3113 -#, c-format -msgid "permission denied for conversion %s" -msgstr "对编码转换 %s 权限不够" +# describe.c:97 +#: utils/misc/guc.c:2981 +msgid "Sets default text search configuration." +msgstr "设置缺省文本搜索配置" -#: catalog/aclchk.c:3115 -#, c-format -msgid "permission denied for tablespace %s" -msgstr "对表空间 %s 权限不够" +#: utils/misc/guc.c:2991 +msgid "Sets the list of allowed SSL ciphers." +msgstr "设置日志信息的冗长." -#: catalog/aclchk.c:3117 -#, c-format -msgid "permission denied for text search dictionary %s" -msgstr "访问文本搜索字典%s的权限不够" +#: utils/misc/guc.c:3006 +msgid "Sets the application name to be reported in statistics and logs." +msgstr "设置在统计和日志中出现的应用程序名称." -#: catalog/aclchk.c:3119 -#, c-format -msgid "permission denied for text search configuration %s" -msgstr "访问文本搜索配置%s的权限不足" +#: utils/misc/guc.c:3026 +msgid "Sets whether \"\\'\" is allowed in string literals." +msgstr "在字符串常量中设置是否允许使用\"\\'\"" -#: catalog/aclchk.c:3121 -#, c-format -msgid "permission denied for foreign-data wrapper %s" -msgstr "访问外部数据封装器 %s 的权限不足" +#: utils/misc/guc.c:3036 +msgid "Sets the output format for bytea." +msgstr "设置bytea类型数据的输出格式" -#: catalog/aclchk.c:3123 -#, c-format -msgid "permission denied for foreign server %s" -msgstr "访问外部服务器%s的权限不足" +#: utils/misc/guc.c:3046 +msgid "Sets the message levels that are sent to the client." +msgstr "设置发送到客户端的信息级别." -#: catalog/aclchk.c:3129 catalog/aclchk.c:3131 -#, c-format -msgid "must be owner of relation %s" -msgstr "必须是关系 %s 的属主" +#: utils/misc/guc.c:3047 utils/misc/guc.c:3100 utils/misc/guc.c:3111 +#: utils/misc/guc.c:3167 +msgid "" +"Each level includes all the levels that follow it. The later the level, the " +"fewer messages are sent." +msgstr "每一层都包含在这一层后面的层次, 对于越往后的层次,就会发送越少的消息." -#: catalog/aclchk.c:3133 -#, c-format -msgid "must be owner of sequence %s" -msgstr "必须是序列 %s 的属主" +#: utils/misc/guc.c:3057 +msgid "Enables the planner to use constraints to optimize queries." +msgstr "使计划器可以使用约束来优化查询." -#: catalog/aclchk.c:3135 -#, c-format -msgid "must be owner of database %s" -msgstr "必须是数据库 %s 的属主" +#: utils/misc/guc.c:3058 +msgid "" +"Table scans will be skipped if their constraints guarantee that no rows " +"match the query." +msgstr "如果约束能够确保没有列符合查询条件,那么将跳过表扫描." -#: catalog/aclchk.c:3137 -#, c-format -msgid "must be owner of function %s" -msgstr "必须是函数 %s 的属主" +#: utils/misc/guc.c:3068 +msgid "Sets the transaction isolation level of each new transaction." +msgstr "设置每一个新事物的隔离 (isolation) 级别." -#: catalog/aclchk.c:3139 -#, c-format -msgid "must be owner of operator %s" -msgstr "必须是操作符 %s 的属主" +#: utils/misc/guc.c:3078 +msgid "Sets the display format for interval values." +msgstr "设置时间间隔值的显示格式." -#: catalog/aclchk.c:3141 -#, c-format -msgid "must be owner of type %s" -msgstr "必须是类型 %s 的属主" +#: utils/misc/guc.c:3089 +msgid "Sets the verbosity of logged messages." +msgstr "设置日志信息的冗长." -#: catalog/aclchk.c:3143 -#, c-format -msgid "must be owner of language %s" -msgstr "必须是语言 %s 的属主" +#: utils/misc/guc.c:3099 +msgid "Sets the message levels that are logged." +msgstr "设置日志记录的信息级别." -#: catalog/aclchk.c:3145 -#, c-format -msgid "must be owner of large object %s" -msgstr "必须是大对象%s的属主" +#: utils/misc/guc.c:3110 +msgid "" +"Causes all statements generating error at or above this level to be logged." +msgstr "在此级别或以上级别, 所有语句产生的错误将被记录." -#: catalog/aclchk.c:3147 -#, c-format -msgid "must be owner of schema %s" -msgstr "必须是模式 %s 的属主" +#: utils/misc/guc.c:3121 +msgid "Sets the type of statements logged." +msgstr "设置记录语句的类型." -#: catalog/aclchk.c:3149 -#, c-format -msgid "must be owner of operator class %s" -msgstr "必须是操作符表 %s 的属主" +#: utils/misc/guc.c:3131 +msgid "Sets the syslog \"facility\" to be used when syslog enabled." +msgstr "当启用系统日志 (syslog), 设置系统日志使用 \"facility\"." -#: catalog/aclchk.c:3151 -#, c-format -msgid "must be owner of operator family %s" -msgstr "必须是操作符集合 %s 的属主" +#: utils/misc/guc.c:3146 +msgid "Sets the session's behavior for triggers and rewrite rules." +msgstr "为触发器和重写规则设置会话的行为" -#: catalog/aclchk.c:3153 -#, c-format -msgid "must be owner of conversion %s" -msgstr "必须是编码转换 %s 的属主" +#: utils/misc/guc.c:3156 +msgid "Sets the current transaction's synchronization level." +msgstr "设置当前事物的同步级别." -#: catalog/aclchk.c:3155 -#, c-format -msgid "must be owner of tablespace %s" -msgstr "必须是表空间 %s 的属主" +#: utils/misc/guc.c:3166 +msgid "Enables logging of recovery-related debugging information." +msgstr "启用日志功能,对与恢复操作相关的调试信息进行记录." -# describe.c:1549 -#: catalog/aclchk.c:3157 -#, c-format -msgid "must be owner of text search dictionary %s" -msgstr "必须是文本搜寻字典%s的属主" +#: utils/misc/guc.c:3182 +msgid "Collects function-level statistics on database activity." +msgstr "在数据库运行的事务中收集函数级别统计信息." -# describe.c:97 -#: catalog/aclchk.c:3159 -#, c-format -msgid "must be owner of text search configuration %s" -msgstr "必须是文本搜索配置%s的属主" +#: utils/misc/guc.c:3192 +msgid "Set the level of information written to the WAL." +msgstr "设置写入WAL文件的信息的内容详细级别" + +#: utils/misc/guc.c:3202 +msgid "Selects the method used for forcing WAL updates to disk." +msgstr "选择用于强制将WAL缓冲区的内容更新到磁盘的方法." + +#: utils/misc/guc.c:3212 +msgid "Sets how binary values are to be encoded in XML." +msgstr "设置在XML中如何对二进制的值进行编码." + +#: utils/misc/guc.c:3222 +msgid "" +"Sets whether XML data in implicit parsing and serialization operations is to " +"be considered as documents or content fragments." +msgstr "设置在隐式分析和串行操作中的XML数据是否被当作文档或者内容片断." -#: catalog/aclchk.c:3161 +#: utils/misc/guc.c:4064 #, c-format -msgid "must be owner of foreign-data wrapper %s" -msgstr "必须是外部数据封装器 %s 的属主" +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" -#: catalog/aclchk.c:3163 +#: utils/misc/guc.c:4083 #, c-format -msgid "must be owner of foreign server %s" -msgstr "必须是外部服务器 %s 的属主" +msgid "%s cannot access the server configuration file \"%s\": %s\n" +msgstr "%s 无法处理服务器的配置文件 \"%s\": %s\n" -#: catalog/aclchk.c:3205 +#: utils/misc/guc.c:4103 #, c-format -msgid "permission denied for column \"%s\" of relation \"%s\"" -msgstr "访问关系\"%2$s\"的列\"%1$s\"的权限不够" +msgid "" +"%s does not know where to find the database system data.\n" +"This can be specified as \"data_directory\" in \"%s\", or by the -D " +"invocation option, or by the PGDATA environment variable.\n" +msgstr "" +"%s 不知道在哪里可以找到数据库系统数据.\n" +"可以在 \"%s\" 中指定 \"data_directory\", 或者通过 -D 选项指定或者通过设置 " +"PGDATA 环境变量.\n" -#: catalog/aclchk.c:3232 +#: utils/misc/guc.c:4134 #, c-format -msgid "role with OID %u does not exist" -msgstr "OID为%u的角色不存在" +msgid "" +"%s does not know where to find the \"hba\" configuration file.\n" +"This can be specified as \"hba_file\" in \"%s\", or by the -D invocation " +"option, or by the PGDATA environment variable.\n" +msgstr "" +"%s 不知道在哪里可以找到 \"hba\" 配置文件.\n" +"可以在 \"%s\" 中指定 \"hba_file\", 或者通过 -D 选项指定或者通过设置PGDATA 环" +"境变量.\n" -#: catalog/aclchk.c:3325 catalog/aclchk.c:3333 +#: utils/misc/guc.c:4157 #, c-format -msgid "attribute %d of relation with OID %u does not exist" -msgstr "带有OID为%2$u的关系的属性%1$d不存在" +msgid "" +"%s does not know where to find the \"ident\" configuration file.\n" +"This can be specified as \"ident_file\" in \"%s\", or by the -D invocation " +"option, or by the PGDATA environment variable.\n" +msgstr "" +"%s 不知道在哪里可以找到 \"ident\" 配置文件.\n" +"可以在 \"%s\" 中指定 \"ident_file\", 或者通过 -D 选项指定或者通过设置PGDATA " +"环境变量.\n" + +#: utils/misc/guc.c:4739 utils/misc/guc.c:4903 +msgid "Value exceeds integer range." +msgstr "值已超过整数范围" + +#: utils/misc/guc.c:4758 +msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"." +msgstr "这个参数的有效单位是\"kB\", \"MB\", 和\"GB\"." -#: catalog/aclchk.c:3406 catalog/aclchk.c:4226 +#: utils/misc/guc.c:4817 +msgid "" +"Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"." +msgstr "这个参数可使用的有效单元是\"ms\", \"s\", \"min\", \"h\", 和\"d\"." + +#: utils/misc/guc.c:5100 utils/misc/guc.c:5869 utils/misc/guc.c:5921 +#: utils/misc/guc.c:6594 utils/misc/guc.c:6753 utils/misc/guc.c:7932 +#: guc-file.l:203 #, c-format -msgid "relation with OID %u does not exist" -msgstr "OID 为 %u 的关系不存在" +msgid "unrecognized configuration parameter \"%s\"" +msgstr "未认可的配置参数 \"%s\"" -#: catalog/aclchk.c:3500 catalog/aclchk.c:4590 utils/adt/dbsize.c:127 +#: utils/misc/guc.c:5133 #, c-format -msgid "database with OID %u does not exist" -msgstr "OID 为 %u 的数据库不存在" +msgid "parameter \"%s\" cannot be changed" +msgstr "参数 \"%s\" 不可以改变" -#: catalog/aclchk.c:3554 catalog/aclchk.c:4304 tcop/fastpath.c:222 +#: utils/misc/guc.c:5162 utils/misc/guc.c:5336 utils/misc/guc.c:5433 +#: utils/misc/guc.c:5527 utils/misc/guc.c:5641 utils/misc/guc.c:5742 +#: guc-file.l:250 #, c-format -msgid "function with OID %u does not exist" -msgstr "OID 为 %u 的函数不存在" +msgid "parameter \"%s\" cannot be changed without restarting the server" +msgstr "在没有启动服务器的情况下,不能改变参数 \"%s\" " -#: catalog/aclchk.c:3608 catalog/aclchk.c:4330 +#: utils/misc/guc.c:5172 #, c-format -msgid "language with OID %u does not exist" -msgstr "OID 为 %u 的语言不存在" +msgid "parameter \"%s\" cannot be changed now" +msgstr "参数 \"%s\" 现在不能改变" -#: catalog/aclchk.c:3769 catalog/aclchk.c:4402 +#: utils/misc/guc.c:5203 #, c-format -msgid "schema with OID %u does not exist" -msgstr "OID 为 %u 的模式不存在" +msgid "parameter \"%s\" cannot be set after connection start" +msgstr "联接启动后, 参数 \"%s\" 不能设置" -#: catalog/aclchk.c:3823 catalog/aclchk.c:4429 +#: utils/misc/guc.c:5213 utils/misc/guc.c:7947 #, c-format -msgid "tablespace with OID %u does not exist" -msgstr "OID 为 %u 的表空间不存在" +msgid "permission denied to set parameter \"%s\"" +msgstr "设置参数 \"%s\" 权限不允许" -#: catalog/aclchk.c:3881 +#: utils/misc/guc.c:5251 #, c-format -msgid "foreign-data wrapper with OID %u does not exist" -msgstr "带有OID为%u的外部数据封装器(foreign-data wrapper)不存在" +msgid "cannot set parameter \"%s\" within security-definer function" +msgstr "无法在安全定义者操作中设置参数\"%s\" " -#: catalog/aclchk.c:3942 catalog/aclchk.c:4563 +#: utils/misc/guc.c:5259 utils/init/miscinit.c:381 #, c-format -msgid "foreign server with OID %u does not exist" -msgstr "带有OID为%u的外部服务器不存在" +msgid "cannot set parameter \"%s\" within security-restricted operation" +msgstr "无法在对安全有严格限制的操作中设置参数\"%s\" " -#: catalog/aclchk.c:4252 +#: utils/misc/guc.c:5309 access/transam/xlog.c:5338 access/transam/xlog.c:5429 +#: access/transam/xlog.c:5440 commands/extension.c:527 +#: commands/extension.c:535 #, c-format -msgid "type with OID %u does not exist" -msgstr "OID 为 %u 的类型不存在" +msgid "parameter \"%s\" requires a Boolean value" +msgstr "参数 \"%s\" 需要一个布尔值" -#: catalog/aclchk.c:4278 +#: utils/misc/guc.c:5397 utils/misc/guc.c:5711 utils/misc/guc.c:8111 +#: utils/misc/guc.c:8145 #, c-format -msgid "operator with OID %u does not exist" -msgstr "OID 为 %u 的操作符不存在" +msgid "invalid value for parameter \"%s\": \"%s\"" +msgstr "参数 \"%s\" 的值无效: \"%s\"" -#: catalog/aclchk.c:4455 +#: utils/misc/guc.c:5399 utils/misc/guc.c:5713 utils/misc/guc.c:8014 +#: utils/misc/guc.c:8048 utils/misc/guc.c:8082 utils/misc/guc.c:8116 +#: utils/misc/guc.c:8151 commands/tablecmds.c:693 commands/user.c:957 +#: storage/lmgr/proc.c:1069 storage/lmgr/deadlock.c:951 +#: catalog/objectaddress.c:315 catalog/dependency.c:937 +#: catalog/dependency.c:938 catalog/dependency.c:944 catalog/dependency.c:945 +#: catalog/dependency.c:956 catalog/dependency.c:957 port/win32/security.c:51 #, c-format -msgid "operator class with OID %u does not exist" -msgstr "OID 为 %u 的操作符表不存在" +msgid "%s" +msgstr "%s" -#: catalog/aclchk.c:4482 +#: utils/misc/guc.c:5406 #, c-format -msgid "operator family with OID %u does not exist" -msgstr "OID 为 %u 的操作符表不存在" +msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)" +msgstr "%d 超出了参数 \"%s\" (%d .. %d) 的有效范围" -#: catalog/aclchk.c:4509 +#: utils/misc/guc.c:5492 #, c-format -msgid "text search dictionary with OID %u does not exist" -msgstr "带有OID为%u的文本搜索字典不存在" +msgid "parameter \"%s\" requires a numeric value" +msgstr "参数 \"%s\" 需要一个数字值" -#: catalog/aclchk.c:4536 +#: utils/misc/guc.c:5500 #, c-format -msgid "text search configuration with OID %u does not exist" -msgstr "带有OID为%u的文本搜索配置不存在" +msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)" +msgstr "%g 超出了参数 \"%s\" (%g .. %g) 的有效范围" -#: catalog/aclchk.c:4616 +#: utils/misc/guc.c:5877 utils/misc/guc.c:5925 utils/misc/guc.c:6757 #, c-format -msgid "conversion with OID %u does not exist" -msgstr "OID 为 %u 的编码转换不存在" +msgid "must be superuser to examine \"%s\"" +msgstr "检查 \"%s\" 必须为超级用户" -#: catalog/catalog.c:75 -msgid "invalid fork name" -msgstr "无效分支名称" +#: utils/misc/guc.c:5991 +#, c-format +msgid "SET %s takes only one argument" +msgstr "SET %s 只能带一个参数" -#: catalog/catalog.c:76 -msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"." -msgstr "有效的分支名称是 \"main\", \"fsm\", 和 \"vm\"." +#: utils/misc/guc.c:6224 +msgid "SET requires parameter name" +msgstr "SET 需要参数名字" -#: catalog/dependency.c:578 +#: utils/misc/guc.c:6339 #, c-format -msgid "cannot drop %s because %s requires it" -msgstr "无法删除 %s, 因为 %s 需要它" +msgid "attempt to redefine parameter \"%s\"" +msgstr "尝试重新定义参数 \"%s\"" -#: catalog/dependency.c:581 +#: utils/misc/guc.c:7527 utils/init/miscinit.c:1055 #, c-format -msgid "You can drop %s instead." -msgstr "您也可以删除 %s 代替." +msgid "could not read from file \"%s\": %m" +msgstr "无法读取文件 \"%s\": %m" -#: catalog/dependency.c:734 catalog/pg_shdepend.c:560 +#: utils/misc/guc.c:7648 #, c-format -msgid "cannot drop %s because it is required by the database system" -msgstr "无法删除 %s, 因为它是数据库系统所需要的" +msgid "could not parse setting for parameter \"%s\"" +msgstr "无法分析参数 \"%s\" 的设置" -#: catalog/dependency.c:848 +#: utils/misc/guc.c:8009 utils/misc/guc.c:8043 #, c-format -msgid "drop auto-cascades to %s" -msgstr "自动递归删除 %s" +msgid "invalid value for parameter \"%s\": %d" +msgstr "参数 \"%s\" 的值无效: %d" -#: catalog/dependency.c:860 catalog/dependency.c:869 +#: utils/misc/guc.c:8077 #, c-format -msgid "%s depends on %s" -msgstr "%s 倚赖于 %s" +msgid "invalid value for parameter \"%s\": %g" +msgstr "参数 \"%s\" 的值无效: %g" -#: catalog/dependency.c:881 catalog/dependency.c:890 -#, c-format -msgid "drop cascades to %s" -msgstr "递归删除 %s" +#: utils/misc/guc.c:8181 commands/variable.c:59 commands/tablespace.c:1163 +#: replication/syncrep.c:661 catalog/namespace.c:3559 +msgid "List syntax is invalid." +msgstr "列表语法无效." -#: catalog/dependency.c:898 catalog/pg_shdepend.c:671 +#: utils/misc/guc.c:8205 commands/variable.c:160 #, c-format +msgid "Unrecognized key word: \"%s\"." +msgstr "未知的关键字: \"%s\"." + +#: utils/misc/guc.c:8267 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" -"%d个其它对象(相关列表参见服务器日志)" +"\"temp_buffers\" cannot be changed after any temporary tables have been " +"accessed in the session." +msgstr "" +"在当前会话中,如果有任何临时表被访问,就不能改变\"temp_buffers\"中的内容." -#: catalog/dependency.c:910 -#, c-format -msgid "cannot drop %s because other objects depend on it" -msgstr "无法删除 %s 因为有其它对象倚赖它" +#: utils/misc/guc.c:8279 +msgid "SET AUTOCOMMIT TO OFF is no longer supported" +msgstr "SET AUTOCOMMIT TO OFF 不再被支持" -#: catalog/dependency.c:912 catalog/dependency.c:913 catalog/dependency.c:919 -#: catalog/dependency.c:920 catalog/dependency.c:931 catalog/dependency.c:932 -#: commands/tablecmds.c:658 commands/trigger.c:832 commands/trigger.c:848 -#: commands/trigger.c:860 commands/user.c:902 commands/user.c:903 -#: tcop/postgres.c:4238 storage/lmgr/deadlock.c:942 -#: storage/lmgr/deadlock.c:943 nodes/print.c:85 utils/adt/xml.c:1363 -#: utils/adt/xml.c:1364 utils/adt/xml.c:1370 utils/adt/xml.c:1441 -#: utils/misc/guc.c:4963 utils/misc/guc.c:5231 utils/fmgr/dfmgr.c:381 -#, c-format -msgid "%s" -msgstr "%s" +#: utils/misc/guc.c:8354 +msgid "assertion checking is not supported by this build" +msgstr "这个版本的安装不支持使用断言检查" -#: catalog/dependency.c:914 catalog/dependency.c:921 -msgid "Use DROP ... CASCADE to drop the dependent objects too." -msgstr "使用 DROP .. CASCADE 把倚赖对象一并删除." +# input.c:213 +#: utils/misc/guc.c:8367 +msgid "Bonjour is not supported by this build" +msgstr "这个版本的安装不支持使用Bonjour " -#: catalog/dependency.c:918 -msgid "cannot drop desired object(s) because other objects depend on them" -msgstr "无法删除希望的对象,因为有其它对象倚赖它" +# input.c:213 +#: utils/misc/guc.c:8380 +msgid "SSL is not supported by this build" +msgstr "这个版本的安装不支持使用SSL" -#. translator: %d always has a value larger than 1 -#: catalog/dependency.c:927 -#, c-format -msgid "drop cascades to %d other object" -msgid_plural "drop cascades to %d other objects" -msgstr[0] "串联删除%d个其它对象" +#: utils/misc/guc.c:8392 +msgid "Cannot enable parameter when \"log_statement_stats\" is true." +msgstr "当 \"log_statement_stats\" 为 true 时, 不能启动参数." -#: catalog/dependency.c:2097 -#, c-format -msgid " column %s" -msgstr " 字段 %s" +#: utils/misc/guc.c:8404 +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\"." -#: catalog/dependency.c:2103 +#: guc-file.l:274 #, c-format -msgid "function %s" -msgstr "函数 %s" +msgid "parameter \"%s\" removed from configuration file, reset to default" +msgstr "参数\"%s\"已从配置文件中删除,重新设置为缺省" -#: catalog/dependency.c:2108 +#: guc-file.l:333 #, c-format -msgid "type %s" -msgstr "类型 %s" +msgid "parameter \"%s\" changed to \"%s\"" +msgstr "参数 \"%s\"被改为\"%s\"" -#: catalog/dependency.c:2138 +#: guc-file.l:374 #, c-format -msgid "cast from %s to %s" -msgstr "%s 转换为 %s" +msgid "" +"could not open configuration file \"%s\": maximum nesting depth exceeded" +msgstr "无法打开配置文件 \"%s\": 已超过最大的嵌套深度" -#: catalog/dependency.c:2165 +#: guc-file.l:409 libpq/hba.c:1683 #, c-format -msgid "constraint %s on %s" -msgstr "在%2$s上的约束%1$s " +msgid "could not open configuration file \"%s\": %m" +msgstr "无法打开配置文件 \"%s\": %m" -#: catalog/dependency.c:2171 +#: guc-file.l:589 #, c-format -msgid "constraint %s" -msgstr "约束 %s" +msgid "syntax error in file \"%s\" line %u, near end of line" +msgstr "在文件 \"%s\" 第 %u 行, 行尾附近语法错误" -#: catalog/dependency.c:2188 +#: guc-file.l:594 #, c-format -msgid "conversion %s" -msgstr "编码转换 %s" +msgid "syntax error in file \"%s\" line %u, near token \"%s\"" +msgstr "在文件 \"%s\" 第 %u 行, 记号 \"%s\" 附近语法错误" -#: catalog/dependency.c:2225 +#: utils/misc/tzparser.c:61 #, c-format -msgid "default for %s" -msgstr "%s的缺省" +msgid "" +"time zone abbreviation \"%s\" is too long (maximum %d characters) in time " +"zone file \"%s\", line %d" +msgstr "在时区文件\"%3$s\"的第%4$d行中时区缩写\"%1$s\"太长了(最大允许%2$d字符)" -#: catalog/dependency.c:2242 +#: utils/misc/tzparser.c:68 #, c-format -msgid "language %s" -msgstr "语言 %s" +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分钟)的倍数." -#: catalog/dependency.c:2248 +#: utils/misc/tzparser.c:80 #, c-format -msgid "large object %u" -msgstr "大对象 %u " +msgid "time zone offset %d is out of range in time zone file \"%s\", line %d" +msgstr "时区文件\"%2$s\"的第%3$d行中的时区偏移%1$d超出范围." -#: catalog/dependency.c:2253 +#: utils/misc/tzparser.c:115 #, c-format -msgid "operator %s" -msgstr "操作符 %s" +msgid "missing time zone abbreviation in time zone file \"%s\", line %d" +msgstr "在时区文件\"%s\"的第%d行中丢失时区缩写" -#: catalog/dependency.c:2285 +#: utils/misc/tzparser.c:124 #, c-format -msgid "operator class %s for access method %s" -msgstr "处理方法 %s 的操作符类 %s" +msgid "missing time zone offset in time zone file \"%s\", line %d" +msgstr "在时间区域文件\"%s\"的第%d行中,丢失时区偏移量" -#: catalog/dependency.c:2335 +#: utils/misc/tzparser.c:131 #, c-format -msgid "operator %d %s of %s" -msgstr "%3$s的操作符%1$d %2$s" +msgid "invalid number for time zone offset in time zone file \"%s\", line %d" +msgstr "在时区文件\"%s\"的第%d行中,时区偏移量的数量无效" -#: catalog/dependency.c:2382 +#: utils/misc/tzparser.c:154 #, c-format -msgid "function %d %s of %s" -msgstr "%3$s 的函数%1$d %2$s " +msgid "invalid syntax in time zone file \"%s\", line %d" +msgstr "在时间区域文件\"%s\"的第%d行中语法错误" -#: catalog/dependency.c:2419 +#: utils/misc/tzparser.c:218 #, c-format -msgid "rule %s on " -msgstr "规则 %s 在 " +msgid "time zone abbreviation \"%s\" is multiply defined" +msgstr "多次定义时间区缩写\"%s\" " -#: catalog/dependency.c:2454 +#: utils/misc/tzparser.c:220 #, c-format -msgid "trigger %s on " -msgstr "触发器 %s 在 " +msgid "" +"Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s" +"\", line %d." +msgstr "在时区文件\"%s\"中第%d行的项, 与在文件\"%s\"第%d行中的项相冲突." -#: catalog/dependency.c:2471 +#: utils/misc/tzparser.c:285 #, c-format -msgid "schema %s" -msgstr "模式 %s" +msgid "invalid time zone file name \"%s\"" +msgstr "无效时区文件名称 \"%s\"" -#: catalog/dependency.c:2484 +#: utils/misc/tzparser.c:298 #, c-format -msgid "text search parser %s" -msgstr "文本搜寻解析器 %s" +msgid "time zone file recursion limit exceeded in file \"%s\"" +msgstr "在文件\"%s\"中已超过了对时区文件递归限制" -# sql_help.h:301 -#: catalog/dependency.c:2499 +#: utils/misc/tzparser.c:337 utils/misc/tzparser.c:350 #, c-format -msgid "text search dictionary %s" -msgstr "文本搜寻字典 %s" +msgid "could not read time zone file \"%s\": %m" +msgstr "无法读取时间区域文件 \"%s\": %m" -# describe.c:1753 -#: catalog/dependency.c:2514 +#: utils/misc/tzparser.c:360 #, c-format -msgid "text search template %s" -msgstr "文本搜寻模版 %s" +msgid "line is too long in time zone file \"%s\", line %d" +msgstr "在时间区域文件\"%s\"的第%d行中文本太长了." -#: catalog/dependency.c:2529 +#: utils/misc/tzparser.c:383 #, c-format -msgid "text search configuration %s" -msgstr "文本搜寻配置 %s" +msgid "@INCLUDE without file name in time zone file \"%s\", line %d" +msgstr "在时间区域文件\"%s\"中的第%d行中,@INCLUDE没有带文件名 " -#: catalog/dependency.c:2537 +#: utils/init/miscinit.c:115 #, c-format -msgid "role %s" -msgstr "角色 %s" +msgid "could not change directory to \"%s\": %m" +msgstr "无法跳转到目录 \"%s\" 中: %m" -#: catalog/dependency.c:2550 +#: utils/init/miscinit.c:432 utils/adt/acl.c:4822 commands/variable.c:891 +#: commands/variable.c:963 commands/user.c:623 commands/user.c:825 +#: commands/user.c:905 commands/user.c:1056 #, c-format -msgid "database %s" -msgstr "数据库 %s" +msgid "role \"%s\" does not exist" +msgstr "角色 \"%s\" 不存在" -# describe.c:1342 -#: catalog/dependency.c:2562 +#: utils/init/miscinit.c:460 #, c-format -msgid "tablespace %s" -msgstr "表空间 %s" +msgid "role \"%s\" is not permitted to log in" +msgstr "不允许角色\"%s\" 进行登录" -#: catalog/dependency.c:2571 +#: utils/init/miscinit.c:478 #, c-format -msgid "foreign-data wrapper %s" -msgstr "外部数据封装器 %s" +msgid "too many connections for role \"%s\"" +msgstr "由角色\"%s\"发起的连接太多了" -#: catalog/dependency.c:2580 -#, c-format -msgid "server %s" -msgstr "服务器 %s" +#: utils/init/miscinit.c:538 +msgid "permission denied to set session authorization" +msgstr "设置会话认证权限不允许" -#: catalog/dependency.c:2605 +#: utils/init/miscinit.c:618 #, c-format -msgid "user mapping for %s" -msgstr "用于 %s 的用户映射" +msgid "invalid role OID: %u" +msgstr "无效的角色OID:%u" -#: catalog/dependency.c:2639 +#: utils/init/miscinit.c:750 #, c-format -msgid "default privileges on new relations belonging to role %s" -msgstr "在新的关系上的缺省权限属于角色%s" +msgid "could not create lock file \"%s\": %m" +msgstr "无法创建锁文件 \"%s\": %m" -#: catalog/dependency.c:2644 +#: utils/init/miscinit.c:764 #, c-format -msgid "default privileges on new sequences belonging to role %s" -msgstr "在新的序列上的缺省权限属于角色%s" +msgid "could not open lock file \"%s\": %m" +msgstr "无法打开锁文件 \"%s\": %m" -#: catalog/dependency.c:2649 +#: utils/init/miscinit.c:770 #, c-format -msgid "default privileges on new functions belonging to role %s" -msgstr "在新的函数上的缺省权限属于角色%s" +msgid "could not read lock file \"%s\": %m" +msgstr "无法读取锁文件 \"%s\": %m" -#: catalog/dependency.c:2655 +#: utils/init/miscinit.c:818 #, c-format -msgid "default privileges belonging to role %s" -msgstr "缺省权限属于角色%s" +msgid "lock file \"%s\" already exists" +msgstr "锁文件 \"%s\" 已经存在" -#: catalog/dependency.c:2663 +#: utils/init/miscinit.c:822 #, c-format -msgid " in schema %s" -msgstr "在模式%s中" +msgid "Is another postgres (PID %d) running in data directory \"%s\"?" +msgstr "是否其它 postgres (PID %d) 运行在数据目录 \"%s\"?" -#: catalog/dependency.c:2711 +#: utils/init/miscinit.c:824 #, c-format -msgid "table %s" -msgstr "表 %s" +msgid "Is another postmaster (PID %d) running in data directory \"%s\"?" +msgstr "是否其它 postmaster (PID %d) 运行在数据目录 \"%s\"?" -#: catalog/dependency.c:2715 +#: utils/init/miscinit.c:827 #, c-format -msgid "index %s" -msgstr "索引 %s" +msgid "Is another postgres (PID %d) using socket file \"%s\"?" +msgstr "是否其它 postgres (PID %d) 使用套接字文件 \"%s\"?" -#: catalog/dependency.c:2719 +#: utils/init/miscinit.c:829 #, c-format -msgid "sequence %s" -msgstr "序列 %s" +msgid "Is another postmaster (PID %d) using socket file \"%s\"?" +msgstr "是否其它 postmaster (PID %d) 使用套接字文件 \"%s\"?" -#: catalog/dependency.c:2723 +#: utils/init/miscinit.c:865 #, c-format -msgid "uncataloged table %s" -msgstr "未归类的表 %s" +msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use" +msgstr "先前存在的共享内存块 (key %lu, ID %lu) 仍在使用中" -#: catalog/dependency.c:2727 +#: utils/init/miscinit.c:868 #, c-format -msgid "toast table %s" -msgstr "toast 表 %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 "" +"如果你确认没有旧的服务器进程在运行, 删除共享内存块,或者只删除文件 \"%s\"." -#: catalog/dependency.c:2731 +#: utils/init/miscinit.c:884 #, c-format -msgid "view %s" -msgstr "视图 %s" +msgid "could not remove old lock file \"%s\": %m" +msgstr "无法删除旧的锁文件 \"%s\": %m" + +#: 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 "文件像是意外留下的, 但是不能删除它. 请手工删除此文件, 然后再重试一次." -#: catalog/dependency.c:2735 +#: utils/init/miscinit.c:927 utils/init/miscinit.c:938 +#: utils/init/miscinit.c:948 #, c-format -msgid "composite type %s" -msgstr "复合类型 %s" +msgid "could not write lock file \"%s\": %m" +msgstr "无法写入锁文件 \"%s\": %m" -#: catalog/dependency.c:2740 +#: utils/init/miscinit.c:1046 utils/init/miscinit.c:1161 +#: utils/error/elog.c:1515 access/transam/xlog.c:2515 +#: access/transam/xlog.c:4232 access/transam/xlog.c:4326 +#: access/transam/xlog.c:4482 replication/basebackup.c:791 +#: storage/file/copydir.c:165 storage/file/copydir.c:255 storage/smgr/md.c:553 +#: storage/smgr/md.c:810 #, c-format -msgid "relation %s" -msgstr "关系 %s" +msgid "could not open file \"%s\": %m" +msgstr "无法打开文件 \"%s\": %m" -#: catalog/dependency.c:2777 +#: utils/init/miscinit.c:1155 utils/init/miscinit.c:1168 #, c-format -msgid "operator family %s for access method %s" -msgstr "访问方法 %2$s 的操作符类 %1$s" +msgid "\"%s\" is not a valid data directory" +msgstr "\"%s\" 不是一个有效的数据目录" -#: catalog/heap.c:257 +#: utils/init/miscinit.c:1157 #, c-format -msgid "permission denied to create \"%s.%s\"" -msgstr "创建 \"%s.%s\" 权限不够" +msgid "File \"%s\" is missing." +msgstr "文件 \"%s\" 丢失." -#: catalog/heap.c:259 -msgid "System catalog modifications are currently disallowed." -msgstr "系统表修改是不被同时允许的" - -#: catalog/heap.c:380 commands/tablecmds.c:1235 commands/tablecmds.c:1619 -#: commands/tablecmds.c:3722 +#: utils/init/miscinit.c:1170 #, c-format -msgid "tables can have at most %d columns" -msgstr "表最多可以有 %d 个字段" +msgid "File \"%s\" does not contain valid data." +msgstr "文件 \"%s\" 没有包含有效数据." -#: catalog/heap.c:397 -#, c-format -msgid "column name \"%s\" conflicts with a system column name" -msgstr "字段名 \"%s\" 与系统字段名冲突" +#: utils/init/miscinit.c:1172 +msgid "You might need to initdb." +msgstr "您需要初始化数据库 (initdb)." -#: catalog/heap.c:413 -#, c-format -msgid "column name \"%s\" specified more than once" -msgstr "字段名称\"%s\" 被定义多次" +#: utils/init/miscinit.c:1179 access/transam/xlog.c:4754 +#: access/transam/xlog.c:4763 access/transam/xlog.c:4787 +#: access/transam/xlog.c:4794 access/transam/xlog.c:4801 +#: access/transam/xlog.c:4806 access/transam/xlog.c:4813 +#: access/transam/xlog.c:4820 access/transam/xlog.c:4827 +#: access/transam/xlog.c:4834 access/transam/xlog.c:4841 +#: access/transam/xlog.c:4848 access/transam/xlog.c:4857 +#: access/transam/xlog.c:4864 access/transam/xlog.c:4873 +#: access/transam/xlog.c:4880 access/transam/xlog.c:4889 +#: access/transam/xlog.c:4896 +msgid "database files are incompatible with server" +msgstr "数据库文件和服务器不兼容" -#: catalog/heap.c:451 +#: utils/init/miscinit.c:1180 #, c-format -msgid "column \"%s\" has type \"unknown\"" -msgstr "字段 \"%s\" 类型为 \"未知\"" - -#: catalog/heap.c:452 -msgid "Proceeding with relation creation anyway." -msgstr "继续关系的创建." +msgid "" +"The data directory was initialized by PostgreSQL version %ld.%ld, which is " +"not compatible with this version %s." +msgstr "数据目录是以 PostgreSQL 版本 %ld.%ld 初始化的, 它于当前版本 %s 不兼容." -#: catalog/heap.c:465 +#: utils/init/miscinit.c:1228 #, c-format -msgid "column \"%s\" has pseudo-type %s" -msgstr "字段 \"%s\" 有伪类型 %s" +msgid "invalid list syntax in parameter \"%s\"" +msgstr "在参数\"%s\"中列表语法无效" -#: catalog/heap.c:927 catalog/index.c:621 commands/tablecmds.c:2211 +#: utils/init/miscinit.c:1265 #, c-format -msgid "relation \"%s\" already exists" -msgstr "关系 \"%s\" 已经存在" +msgid "loaded library \"%s\"" +msgstr "已加载的库 \"%s\"" -#: catalog/heap.c:943 catalog/pg_type.c:385 catalog/pg_type.c:665 -#: commands/typecmds.c:218 commands/typecmds.c:795 commands/typecmds.c:1120 -#: commands/typecmds.c:1543 +#: utils/init/postinit.c:225 #, c-format -msgid "type \"%s\" already exists" -msgstr "类型 \"%s\" 已经存在" +msgid "replication connection authorized: user=%s" +msgstr "复制连接已经授权: 用户=%s" -#: catalog/heap.c:944 -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 "" -"关系和与它相关联的类型名称相同,所以不能使用与任何已存在类型名称相冲突的名称." +#: utils/init/postinit.c:229 +#, c-format +msgid "connection authorized: user=%s database=%s" +msgstr "联接认证: 主机=%s 数据库=%s" -#: catalog/heap.c:1540 +#: utils/init/postinit.c:260 #, c-format -msgid "" -"cannot drop \"%s\" because it is being used by active queries in this session" -msgstr "无法删除 \"%s\", 因为它正在被这个会话中处于活动状态的查询使用" +msgid "database \"%s\" has disappeared from pg_database" +msgstr "关于数据库\"%s\"的记录在系统目录视图pg_database中不存在" -#: catalog/heap.c:1991 +#: utils/init/postinit.c:262 #, c-format -msgid "check constraint \"%s\" already exists" -msgstr "检查约束 \"%s\" 已经存在" +msgid "Database OID %u now seems to belong to \"%s\"." +msgstr "数据库OID%u现在属于\"%s\"." -#: catalog/heap.c:2135 catalog/pg_constraint.c:639 commands/tablecmds.c:4633 +#: utils/init/postinit.c:282 #, c-format -msgid "constraint \"%s\" for relation \"%s\" already exists" -msgstr "关系 \"%2$s\" 的约束 \"%1$s\" 已经存在" +msgid "database \"%s\" is not currently accepting connections" +msgstr "数据库 \"%s\" 当前不接受联接" -#: catalog/heap.c:2139 +#: utils/init/postinit.c:295 #, c-format -msgid "merging constraint \"%s\" with inherited definition" -msgstr "正在合并带有已继承定义的约束\"%s\" " +msgid "permission denied for database \"%s\"" +msgstr "访问数据库\"%s\"的权限不够" -#: catalog/heap.c:2237 -msgid "cannot use column references in default expression" -msgstr "在默认的表达式中不能使用字段关联" +#: utils/init/postinit.c:296 +msgid "User does not have CONNECT privilege." +msgstr "用户没有CONNECT权限." -#: catalog/heap.c:2245 -msgid "default expression must not return a set" -msgstr "默认表达式不能返回一个组合" +# command.c:981 +#: utils/init/postinit.c:313 +#, c-format +msgid "too many connections for database \"%s\"" +msgstr "到数据库 \"%s\"的连接太多了" -#: catalog/heap.c:2253 -msgid "cannot use subquery in default expression" -msgstr "在默认的表达式中不能使用子查询" +#: utils/init/postinit.c:335 utils/init/postinit.c:342 +msgid "database locale is incompatible with operating system" +msgstr "数据库所使用的语言环境和操作系统的不兼容" -#: catalog/heap.c:2257 -msgid "cannot use aggregate function in default expression" -msgstr "在默认的表达式中不能使用聚合函数" +#: 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()识别" -#: catalog/heap.c:2261 -msgid "cannot use window function in default expression" -msgstr "在缺省表达式中不能使用窗口函数" +#: utils/init/postinit.c:338 utils/init/postinit.c:345 +msgid "" +"Recreate the database with another locale or install the missing locale." +msgstr "以另外一种语言环境重新创建数据库,或者安装丢失的语言环境." -#: catalog/heap.c:2280 rewrite/rewriteHandler.c:952 +#: utils/init/postinit.c:343 #, c-format -msgid "column \"%s\" is of type %s but default expression is of type %s" -msgstr "字段 \"%s\" 类型是 %s, 但默认表达式类型是 %s" +msgid "" +"The database was initialized with LC_CTYPE \"%s\", which is not recognized " +"by setlocale()." +msgstr "" +"数据库集群是带 LC_CTYPE \"%s\" 初始化的, 但此 LC_CTYPE 是不被 setlocale() 认" +"可的." -#: catalog/heap.c:2285 commands/prepare.c:369 parser/parse_node.c:370 -#: parser/parse_target.c:475 parser/parse_target.c:734 -#: parser/parse_target.c:744 rewrite/rewriteHandler.c:957 -msgid "You will need to rewrite or cast the expression." -msgstr "你需要重写或转换表达式" +#: utils/init/postinit.c:608 +msgid "no roles are defined in this database system" +msgstr "当前数据库系统中没有定义角色" -#: catalog/heap.c:2321 +#: utils/init/postinit.c:609 #, c-format -msgid "only table \"%s\" can be referenced in check constraint" -msgstr "在检查约束中只有表 \"%s\" 能被关联的" - -#: catalog/heap.c:2330 commands/typecmds.c:2298 -msgid "cannot use subquery in check constraint" -msgstr "在检查约束中不可以使用子查询" +msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;." +msgstr "您应该立即运行 CREATE USER \"%s\" SUPERUSER;." -#: catalog/heap.c:2334 commands/typecmds.c:2302 -msgid "cannot use aggregate function in check constraint" -msgstr "在检查约束中不能使用聚合函数" +#: utils/init/postinit.c:632 +msgid "new replication connections are not allowed during database shutdown" +msgstr "在数据库服务器关闭期间不允许接受新的复制连接" -#: catalog/heap.c:2338 commands/typecmds.c:2306 -msgid "cannot use window function in check constraint" -msgstr "在检查约束中不能使用窗口函数" +#: utils/init/postinit.c:636 +msgid "must be superuser to connect during database shutdown" +msgstr "只有超级用户才能在数据库关闭期间连接数据库" -#: catalog/heap.c:2577 -msgid "unsupported ON COMMIT and foreign key combination" -msgstr "不支持ON COMMIT和外键一同使用" +#: utils/init/postinit.c:646 +msgid "must be superuser to connect in binary upgrade mode" +msgstr "只有超级用户才能以二进制升级模式进行连接" -#: catalog/heap.c:2578 -#, c-format +#: utils/init/postinit.c:660 msgid "" -"Table \"%s\" references \"%s\", but they do not have the same ON COMMIT " -"setting." -msgstr "表 \"%s\"引用表\"%s\",但是它们没有相同的ON COMMIT设置." +"remaining connection slots are reserved for non-replication superuser " +"connections" +msgstr "已保留的连接位置为执行非复制请求的超级用户预留" -#: catalog/heap.c:2583 -msgid "cannot truncate a table referenced in a foreign key constraint" -msgstr "在一个外键约束中无法删除 (truncate) 一个表的关联" +#: utils/init/postinit.c:675 +#, fuzzy +msgid "must be replication role to start walsender" +msgstr "只有超级用户或者拥有复制角色的用户才能启动 walsender" -#: catalog/heap.c:2584 +#: utils/init/postinit.c:718 utils/init/postinit.c:786 +#: utils/init/postinit.c:803 commands/dbcommands.c:791 +#: commands/dbcommands.c:936 commands/dbcommands.c:1035 +#: commands/dbcommands.c:1208 commands/dbcommands.c:1393 +#: commands/dbcommands.c:1478 commands/dbcommands.c:1905 commands/comment.c:60 #, c-format -msgid "Table \"%s\" references \"%s\"." -msgstr "表\"%s\" 引用\"%s\"." +msgid "database \"%s\" does not exist" +msgstr "数据库 \"%s\" 不存在" -#: catalog/heap.c:2586 +#: utils/init/postinit.c:735 #, c-format -msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." -msgstr "同时截断表\"%s\" ,或者使用TRUNCATE ... CASCADE." +msgid "database %u does not exist" +msgstr "数据库%u不存在" -#: catalog/index.c:582 -msgid "user-defined indexes on system catalog tables are not supported" -msgstr "在系统表上用户定义的索引是不被支持的" +#: utils/init/postinit.c:787 +msgid "It seems to have just been dropped or renamed." +msgstr "它已经被删除或者改名了." -#: catalog/index.c:592 -msgid "concurrent index creation on system catalog tables is not supported" -msgstr "不支持在系统目录表上同时创建索引" +#: utils/init/postinit.c:805 +#, c-format +msgid "The database subdirectory \"%s\" is missing." +msgstr "数据库子目录 \"%s\" 丢失." -#: catalog/index.c:610 -msgid "shared indexes cannot be created after initdb" -msgstr "在 initdb 之后, 不能创建共享索引" +#: utils/init/postinit.c:810 +#, c-format +msgid "could not access directory \"%s\": %m" +msgstr "无法访问目录 \"%s\": %m" -#: catalog/index.c:2430 -msgid "cannot reindex temporary tables of other sessions" -msgstr "不能重新创建其他会话的临时表上的索引" +#: utils/error/elog.c:1525 +#, c-format +msgid "could not reopen file \"%s\" as stderr: %m" +msgstr "无法作为标准错误重新打开文件 \"%s\": %m" -#: catalog/namespace.c:232 catalog/namespace.c:306 commands/trigger.c:3930 +#: utils/error/elog.c:1538 #, c-format -msgid "cross-database references are not implemented: \"%s.%s.%s\"" -msgstr "未实现跨数据库关联: \"%s.%s.%s\"" +msgid "could not reopen file \"%s\" as stdout: %m" +msgstr "无法作为标准输出重新打开文件 \"%s\": %m" -#: catalog/namespace.c:250 catalog/namespace.c:317 -msgid "temporary tables cannot specify a schema name" -msgstr "临时表不能指定模式名称" +#: utils/error/elog.c:1928 utils/error/elog.c:1938 utils/error/elog.c:1948 +msgid "[unknown]" +msgstr "[未知]" -#: catalog/namespace.c:273 commands/lockcmds.c:122 parser/parse_relation.c:835 -#, c-format -msgid "relation \"%s.%s\" does not exist" -msgstr "关系 \"%s.%s\" 不存在" +#: utils/error/elog.c:2299 utils/error/elog.c:2579 utils/error/elog.c:2657 +msgid "missing error text" +msgstr "缺少错误信息" -#: catalog/namespace.c:278 commands/lockcmds.c:127 parser/parse_relation.c:848 -#: parser/parse_relation.c:856 utils/adt/regproc.c:810 +#: utils/error/elog.c:2302 utils/error/elog.c:2305 utils/error/elog.c:2660 +#: utils/error/elog.c:2663 #, c-format -msgid "relation \"%s\" does not exist" -msgstr "关系 \"%s\" 不存在" +msgid " at character %d" +msgstr " 第 %d 个字符处" -#: catalog/namespace.c:358 catalog/namespace.c:2410 -msgid "no schema has been selected to create in" -msgstr "创建中没有选择模式" +#: utils/error/elog.c:2315 utils/error/elog.c:2322 +msgid "DETAIL: " +msgstr "详细信息: " -#: catalog/namespace.c:1748 commands/tsearchcmds.c:306 -#, c-format -msgid "text search parser \"%s\" does not exist" -msgstr "文本搜索解析器 \"%s\" 不存在" +#: utils/error/elog.c:2329 +msgid "HINT: " +msgstr "提示: " -#: catalog/namespace.c:1871 commands/tsearchcmds.c:654 -#, c-format -msgid "text search dictionary \"%s\" does not exist" -msgstr "文本搜索字典 \"%s\" 不存在" +#: utils/error/elog.c:2336 +msgid "QUERY: " +msgstr "查询: " -#: catalog/namespace.c:1995 commands/tsearchcmds.c:1137 -#, c-format -msgid "text search template \"%s\" does not exist" -msgstr "文本搜索模版 \"%s\" 不存在" +#: utils/error/elog.c:2343 +msgid "CONTEXT: " +msgstr "上下文: " -#: catalog/namespace.c:2118 commands/tsearchcmds.c:1532 -#: commands/tsearchcmds.c:1688 +#: utils/error/elog.c:2353 #, c-format -msgid "text search configuration \"%s\" does not exist" -msgstr "文本搜寻配置 \"%s\" 不存在" +msgid "LOCATION: %s, %s:%d\n" +msgstr "位置: %s, %s:%d\n" -#: catalog/namespace.c:2231 parser/parse_expr.c:769 parser/parse_target.c:998 +#: utils/error/elog.c:2360 #, c-format -msgid "cross-database references are not implemented: %s" -msgstr "未实现跨数据库关联: %s" +msgid "LOCATION: %s:%d\n" +msgstr "位置: %s:%d\n" -#: catalog/namespace.c:2237 parser/parse_expr.c:776 parser/parse_target.c:1005 -#: gram.y:3672 gram.y:10605 -#, c-format -msgid "improper qualified name (too many dotted names): %s" -msgstr "不合适的条件名称 (名字中太多的点符号): %s" +#: utils/error/elog.c:2374 +msgid "STATEMENT: " +msgstr "语句: " -#: catalog/namespace.c:2442 +#. translator: This string will be truncated at 47 +#. characters expanded. +#: utils/error/elog.c:2772 #, c-format -msgid "improper relation name (too many dotted names): %s" -msgstr "不合适的关系名称 (名字中太多的点符号): %s" +msgid "operating system error %d" +msgstr "操作系统错误 %d" -#: catalog/namespace.c:3024 -#, c-format -msgid "permission denied to create temporary tables in database \"%s\"" -msgstr "不允许在数据库 \"%s\" 中创建临时表" +#: utils/error/elog.c:2795 +msgid "DEBUG" +msgstr "调试" -#: catalog/namespace.c:3040 -msgid "cannot create temporary tables during recovery" -msgstr "不能在恢复过程中创建临时表" +#: utils/error/elog.c:2799 +msgid "LOG" +msgstr "日志" -#: catalog/pg_aggregate.c:100 -msgid "cannot determine transition data type" -msgstr "无法确定转换数据类型" +#: utils/error/elog.c:2802 +msgid "INFO" +msgstr "信息" -#: catalog/pg_aggregate.c:101 -msgid "" -"An aggregate using a polymorphic transition type must have at least one " -"polymorphic argument." -msgstr "使用多态转换类型的聚合函数必须至少有一个多态的参数" +#: utils/error/elog.c:2805 +msgid "NOTICE" +msgstr "注意" -#: catalog/pg_aggregate.c:124 -#, c-format -msgid "return type of transition function %s is not %s" -msgstr "转换函数的返回类型 %s 不是 %s" +#: utils/error/elog.c:2808 +msgid "WARNING" +msgstr "警告" -#: 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 "当转换函数是受限制的并且转换类型与输入类型不兼容时,不能忽略初始化值" +#: utils/error/elog.c:2811 +msgid "ERROR" +msgstr "错误" -#: catalog/pg_aggregate.c:175 catalog/pg_proc.c:204 -msgid "cannot determine result data type" -msgstr "无法确定结构数据类型" +#: utils/error/elog.c:2814 +msgid "FATAL" +msgstr "致命错误" -#: catalog/pg_aggregate.c:176 -msgid "" -"An aggregate returning a polymorphic type must have at least one polymorphic " -"argument." -msgstr "使用多态类型的聚合函数必须至少有一个多态的参数" +#: utils/error/elog.c:2817 +msgid "PANIC" +msgstr "比致命错误还过分的错误" -#: catalog/pg_aggregate.c:188 catalog/pg_proc.c:210 -msgid "unsafe use of pseudo-type \"internal\"" -msgstr "使用伪类型\"internal\"的方式不安全" +#: utils/error/assert.c:37 +msgid "TRAP: ExceptionalCondition: bad arguments\n" +msgstr "TRAP: ExceptionalCondition: 错误参数\n" -#: catalog/pg_aggregate.c:189 catalog/pg_proc.c:211 -msgid "" -"A function returning \"internal\" must have at least one \"internal\" " -"argument." -msgstr "返回\"internal\"类型结果的函数必须至少有一个\"internal\" 类型的参数" +#: utils/error/assert.c:40 +#, c-format +msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n" +msgstr "TRAP: %s(\"%s\", 文件: \"%s\", 行数: %d)\n" -#: catalog/pg_aggregate.c:197 -msgid "sort operator can only be specified for single-argument aggregates" -msgstr "只能为单一参数的聚合函数而定义排序操作符." +#: utils/sort/tuplesort.c:3131 +#, c-format +msgid "could not create unique index \"%s\"" +msgstr "无法创建唯一索引\"%s\"" -#: catalog/pg_aggregate.c:331 commands/typecmds.c:1269 -#: commands/typecmds.c:1320 commands/typecmds.c:1351 commands/typecmds.c:1374 -#: commands/typecmds.c:1395 commands/typecmds.c:1422 commands/typecmds.c:1449 -#: parser/parse_func.c:294 parser/parse_func.c:305 parser/parse_func.c:1464 +#: utils/sort/tuplesort.c:3133 #, c-format -msgid "function %s does not exist" -msgstr "函数 %s 不存在" +msgid "Key %s is duplicated." +msgstr "键值%s重复了" -#: catalog/pg_aggregate.c:337 +#: utils/sort/logtape.c:213 #, c-format -msgid "function %s returns a set" -msgstr "函数 %s 返回一个组合" +msgid "could not write block %ld of temporary file: %m" +msgstr "无法写入临时文件块 %ld: %m" -#: catalog/pg_aggregate.c:362 +#: utils/sort/logtape.c:215 +msgid "Perhaps out of disk space?" +msgstr "可能超出磁盘空间?" + +#: utils/sort/logtape.c:232 #, c-format -msgid "function %s requires run-time type coercion" -msgstr "函数 %s 需要运行时类型强制" +msgid "could not read block %ld of temporary file: %m" +msgstr "无法读取临时文件块 %ld: %m" -#: catalog/pg_constraint.c:648 commands/typecmds.c:2239 +#: utils/fmgr/fmgr.c:271 #, c-format -msgid "constraint \"%s\" for domain \"%s\" already exists" -msgstr "域 \"%2$s\" 的约束 \"%1$s\" 已经存在" +msgid "internal function \"%s\" is not in internal lookup table" +msgstr "内部函数 \"%s\" 不在内部查找表中" -#: catalog/pg_constraint.c:767 +#: utils/fmgr/fmgr.c:481 #, c-format -msgid "table \"%s\" has multiple constraints named \"%s\"" -msgstr "表 \"%s\" 有多个名为 \"%s\" 的约束" +msgid "unrecognized API version %d reported by info function \"%s\"" +msgstr "信息函数\"%2$s\"报告无法识别的API版本%1$d." -#: catalog/pg_constraint.c:779 +#: utils/fmgr/fmgr.c:852 utils/fmgr/fmgr.c:2113 #, c-format -msgid "constraint \"%s\" for table \"%s\" does not exist" -msgstr "表 \"%2$s\" 的 \"%1$s\" 约束不存在" +msgid "function %u has too many arguments (%d, maximum is %d)" +msgstr "函数 %u 参数太多 (%d, 最大个数为 %d)" -#: catalog/pg_conversion.c:66 +#: utils/fmgr/dfmgr.c:125 #, c-format -msgid "conversion \"%s\" already exists" -msgstr "编码转换 \"%s\" 已经存在" +msgid "could not find function \"%s\" in file \"%s\"" +msgstr "在文件 \"%2$s\" 中无法找到函数 \"%1$s\"" -#: catalog/pg_conversion.c:79 +#: utils/fmgr/dfmgr.c:204 utils/fmgr/dfmgr.c:413 utils/fmgr/dfmgr.c:461 #, c-format -msgid "default conversion for %s to %s already exists" -msgstr "默认的 %s 到 %s 的转换已经存在" +msgid "could not access file \"%s\": %m" +msgstr "无法访问文件 \"%s\": %m" + +#: utils/fmgr/dfmgr.c:242 +#, c-format +msgid "could not load library \"%s\": %s" +msgstr "无法加载库 \"%s\": %s" -#: catalog/pg_depend.c:209 +#: utils/fmgr/dfmgr.c:274 #, c-format -msgid "cannot remove dependency on %s because it is a system object" -msgstr "无法删除在%s上的依赖关系,因为它是一个系统对象" +msgid "incompatible library \"%s\": missing magic block" +msgstr "库\"%s\"不兼容:丢失魔法块" -#: catalog/pg_enum.c:70 -msgid "EnumValuesCreate() can only set a single OID" -msgstr "函数ValuesCreate()只能设置一个单独的OID" +#: utils/fmgr/dfmgr.c:276 +msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro." +msgstr "需要扩展库来使用宏PG_MODULE_MAGIC。" -#: catalog/pg_enum.c:110 +#: utils/fmgr/dfmgr.c:312 #, c-format -msgid "invalid enum label \"%s\"" -msgstr "无效的枚举类型标签 \"%s\"" +msgid "incompatible library \"%s\": version mismatch" +msgstr "库 \"%s\"不兼容:版本不匹配" -#: catalog/pg_enum.c:111 +#: utils/fmgr/dfmgr.c:314 #, c-format -msgid "Labels must be %d characters or less." -msgstr "标签必需为 %d 个字符或更少" +msgid "Server is version %d.%d, library is version %d.%d." +msgstr "服务器版本是%d.%d,库的版本是%d.%d." -#: catalog/pg_largeobject.c:200 commands/comment.c:1422 libpq/be-fsstubs.c:287 +#: utils/fmgr/dfmgr.c:333 #, c-format -msgid "must be owner of large object %u" -msgstr "必须是大对象%u的属主" +msgid "Server has FUNC_MAX_ARGS = %d, library has %d." +msgstr "服务器有FUNC_MAX_ARGS = %d, 库有%d" -#: catalog/pg_namespace.c:50 commands/schemacmds.c:272 +#: utils/fmgr/dfmgr.c:342 #, c-format -msgid "schema \"%s\" already exists" -msgstr "模式 \"%s\" 已经存在" +msgid "Server has INDEX_MAX_KEYS = %d, library has %d." +msgstr "服务器有INDEX_MAX_KEYS = %d, 库有%d" -#: catalog/pg_operator.c:220 catalog/pg_operator.c:358 +#: utils/fmgr/dfmgr.c:351 #, c-format -msgid "\"%s\" is not a valid operator name" -msgstr "\"%s\" 不是一个有效的操作符名称" +msgid "Server has NAMEDATALEN = %d, library has %d." +msgstr "服务器有NAMEDATALEN = %d, 库有%d" -#: catalog/pg_operator.c:367 -msgid "only binary operators can have commutators" -msgstr "只有二进制操作符能有交换 (commutators)" +#: utils/fmgr/dfmgr.c:360 +#, c-format +msgid "Server has FLOAT4PASSBYVAL = %s, library has %s." +msgstr "服务器有FLOAT4PASSBYVAL = %s, 库有%s." -#: catalog/pg_operator.c:371 -msgid "only binary operators can have join selectivity" -msgstr "只有二进制操作符能有可选择性联合" +#: utils/fmgr/dfmgr.c:369 +#, c-format +msgid "Server has FLOAT8PASSBYVAL = %s, library has %s." +msgstr "服务器有FLOAT8PASSBYVAL = %s, 库有%s." -#: catalog/pg_operator.c:375 -msgid "only binary operators can merge join" -msgstr "只有二进制操作符可以合并联合" +#: utils/fmgr/dfmgr.c:376 +msgid "Magic block has unexpected length or padding difference." +msgstr "Magic块带有未期望的长度或者填充的方式不同." -#: catalog/pg_operator.c:379 -msgid "only binary operators can hash" -msgstr "只有二进制操作符可以散列" +#: utils/fmgr/dfmgr.c:379 +#, c-format +msgid "incompatible library \"%s\": magic block mismatch" +msgstr "不兼容的库\"%s\": 魔法块不匹配" -#: catalog/pg_operator.c:390 -msgid "only boolean operators can have negators" -msgstr "只有布尔类型的操作符能够具有负号." +#: utils/fmgr/dfmgr.c:545 +#, c-format +msgid "access to library \"%s\" is not allowed" +msgstr "不允许对库 \"%s\"进行访问" -#: catalog/pg_operator.c:394 -msgid "only boolean operators can have restriction selectivity" -msgstr "只有布尔类型操作能够具有限制选择性" +#: utils/fmgr/dfmgr.c:572 +#, c-format +msgid "invalid macro name in dynamic library path: %s" +msgstr "动态库路径中无效的宏名字: %s" -#: catalog/pg_operator.c:398 -msgid "only boolean operators can have join selectivity" -msgstr "只有布尔类型操作能够具有连接选择性" +#: utils/fmgr/dfmgr.c:617 +msgid "zero-length component in parameter \"dynamic_library_path\"" +msgstr "在参数\"dynamic_library_path\"的组件长度为零" -#: catalog/pg_operator.c:402 -msgid "only boolean operators can merge join" -msgstr "只有布尔类型操作符可以进行合并联合操作" +#: utils/fmgr/dfmgr.c:636 +msgid "component in parameter \"dynamic_library_path\" is not an absolute path" +msgstr "在参数\"dynamic_library_path\"中的组成部分不是绝对路径." -#: catalog/pg_operator.c:406 -msgid "only boolean operators can hash" -msgstr "只有布尔操作符可以进行散列操作" +#: utils/fmgr/funcapi.c:60 utils/mmgr/portalmem.c:985 commands/prepare.c:751 +#: commands/extension.c:1707 commands/extension.c:1816 +#: commands/extension.c:2009 foreign/foreign.c:350 executor/functions.c:785 +#: executor/execQual.c:1706 executor/execQual.c:1731 executor/execQual.c:2092 +#: executor/execQual.c:5221 replication/walsender.c:1412 +msgid "set-valued function called in context that cannot accept a set" +msgstr "在不能接受使用集合的环境中调用set-valued函数" -#: catalog/pg_operator.c:418 +#: utils/fmgr/funcapi.c:354 #, c-format -msgid "operator %s already exists" -msgstr "操作符 %s 已经存在" +msgid "" +"could not determine actual result type for function \"%s\" declared to " +"return type %s" +msgstr "无法确定声明为返回类型%2$s的函数\"%1$s\"的实际结果类型" -#: catalog/pg_operator.c:607 -msgid "operator cannot be its own negator or sort operator" -msgstr "操作符不能否定自己或者排序分类操作符" +#: utils/fmgr/funcapi.c:1208 utils/fmgr/funcapi.c:1239 +msgid "number of aliases does not match number of columns" +msgstr "别名个数与字段个数不匹配" -#: catalog/pg_proc.c:123 parser/parse_func.c:1509 parser/parse_func.c:1549 -#, c-format -msgid "functions cannot have more than %d argument" -msgid_plural "functions cannot have more than %d arguments" -msgstr[0] "函数的参数不能多于%d个" +#: utils/fmgr/funcapi.c:1233 +msgid "no column alias was provided" +msgstr "没有提供字段别名" -#: catalog/pg_proc.c:205 -msgid "" -"A function returning a polymorphic type must have at least one polymorphic " -"argument." -msgstr "返回一个多态类型的函数必须至少有一个多态参数" +#: utils/fmgr/funcapi.c:1257 +msgid "could not determine row description for function returning record" +msgstr "无法确定函数返回记录的行描述" -#: catalog/pg_proc.c:223 +#: 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 "\"%s\" is already an attribute of type %s" -msgstr "\"%s\" 已经是类型 %s 的一个属性" +msgid "unexpected encoding ID %d for ISO 8859 character sets" +msgstr " ISO 8859 字符集出现非期望的编码ID%d" -#: catalog/pg_proc.c:362 +#: 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 "function \"%s\" already exists with same argument types" -msgstr "带相同参数类型的函数 \"%s\" 已经存在" - -#: catalog/pg_proc.c:376 catalog/pg_proc.c:398 -msgid "cannot change return type of existing function" -msgstr "不能改变已经存在的函数的返回值类型" - -#: catalog/pg_proc.c:377 catalog/pg_proc.c:400 catalog/pg_proc.c:442 -#: catalog/pg_proc.c:465 catalog/pg_proc.c:491 -msgid "Use DROP FUNCTION first." -msgstr "请先使用 DROP FUNCTION." - -#: catalog/pg_proc.c:399 -msgid "Row type defined by OUT parameters is different." -msgstr "由OUT模式参数定义的记录类型不同" +msgid "unexpected encoding ID %d for WIN character sets" +msgstr "WIN字符集出现非期望的编码ID%d" -#: catalog/pg_proc.c:440 +#: utils/mb/conv.c:509 #, c-format -msgid "cannot change name of input parameter \"%s\"" -msgstr "无法改变输入参数\"%s\"的名称" - -#: catalog/pg_proc.c:464 -msgid "cannot remove parameter defaults from existing function" -msgstr "不能从已存在的函数种删除参数缺正值" +msgid "invalid encoding number: %d" +msgstr "无效编码编号: %d" -#: catalog/pg_proc.c:490 -msgid "cannot change data type of existing parameter default value" -msgstr "不能改变已经存在参数缺省值的数据类型" +#: utils/mb/encnames.c:485 +msgid "encoding name too long" +msgstr "编码名字太长" -#: catalog/pg_proc.c:502 +#: utils/mb/mbutils.c:281 #, c-format -msgid "function \"%s\" is an aggregate function" -msgstr "函数\"%s\" 是一个聚合函数" +msgid "conversion between %s and %s is not supported" +msgstr "不支持 %s 和 %s 之间的编码转换" -#: catalog/pg_proc.c:507 +#: utils/mb/mbutils.c:351 #, c-format -msgid "function \"%s\" is not an aggregate function" -msgstr "函数 \"%s\" 不是一个聚合函数" +msgid "" +"default conversion function for encoding \"%s\" to \"%s\" does not exist" +msgstr "默认的 \"%s\" 到 \"%s\" 的编码转换函数不存在" -#: catalog/pg_proc.c:515 +#: utils/mb/mbutils.c:375 utils/mb/mbutils.c:676 #, c-format -msgid "function \"%s\" is a window function" -msgstr "函数\"%s\"是一个窗口函数" +msgid "String of %d bytes is too long for encoding conversion." +msgstr "对于编码转化来说带有%d个字节的字符串太长." -#: catalog/pg_proc.c:520 +#: utils/mb/mbutils.c:462 #, c-format -msgid "function \"%s\" is not a window function" -msgstr "函数 \"%s\" 不是一个窗口函数" +msgid "invalid source encoding name \"%s\"" +msgstr "无效的源编码名称 \"%s\"" -#: catalog/pg_proc.c:688 +#: utils/mb/mbutils.c:467 #, c-format -msgid "there is no built-in function named \"%s\"" -msgstr "没有名为 \"%s\" 的内建函数" +msgid "invalid destination encoding name \"%s\"" +msgstr "无效的目标编码名称 \"%s\"" -#: catalog/pg_proc.c:780 +#: utils/mb/mbutils.c:515 utils/adt/xml.c:159 #, c-format -msgid "SQL functions cannot return type %s" -msgstr "SQL 函数无法返回 %s 类型" +msgid "invalid encoding name \"%s\"" +msgstr "无效的编码名称 \"%s\"" -#: catalog/pg_proc.c:795 +#: utils/mb/mbutils.c:589 #, c-format -msgid "SQL functions cannot have arguments of type %s" -msgstr "SQL 函数不能有 %s 类型的参数" +msgid "invalid byte value for encoding \"%s\": 0x%02x" +msgstr "对于编码\"%s\"的字节值无效: 0x%02x" -#: catalog/pg_proc.c:861 executor/functions.c:936 +#: utils/mb/wchar.c:1777 #, c-format -msgid "SQL function \"%s\"" -msgstr "SQL 函数 \"%s\"" +msgid "invalid byte sequence for encoding \"%s\": 0x%s" +msgstr "无效的 \"%s\" 编码字节顺序: 0x%s" -#: catalog/pg_shdepend.c:678 +#: utils/mb/wchar.c:1806 #, 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" -"对象在 %d 个其它数据库中" +msgid "character 0x%s of encoding \"%s\" has no equivalent in \"%s\"" +msgstr "编码\"%2$s\"的字符0x%1$s在\"%3$s\"没有相对应物" -#: catalog/pg_shdepend.c:990 +#: utils/mmgr/aset.c:417 #, c-format -msgid "role %u was concurrently dropped" -msgstr "角色%u被同时删除" +msgid "Failed while creating memory context \"%s\"." +msgstr "创建内存上下文 \"%s\" 失败." -#: catalog/pg_shdepend.c:1009 +#: utils/mmgr/aset.c:588 utils/mmgr/aset.c:766 utils/mmgr/aset.c:967 #, c-format -msgid "tablespace %u was concurrently dropped" -msgstr "表空间 %u 被同时删除" - -#: catalog/pg_shdepend.c:1024 -#, c-format -msgid "database %u was concurrently dropped" -msgstr "数据库 %u 被同时删除" +msgid "Failed on request of size %lu." +msgstr "分配内存 %lu 大小失败." -#: catalog/pg_shdepend.c:1068 +#: utils/mmgr/portalmem.c:207 #, c-format -msgid "owner of %s" -msgstr "%s的属主" +msgid "cursor \"%s\" already exists" +msgstr "游标 \"%s\" 已经存在" -#: catalog/pg_shdepend.c:1070 +#: utils/mmgr/portalmem.c:211 #, c-format -msgid "privileges for %s" -msgstr "%s的权限" +msgid "closing existing cursor \"%s\"" +msgstr "关闭已存在的游标 \"%s\"" -#. translator: %s will always be "database %s" -#: catalog/pg_shdepend.c:1078 +#: utils/mmgr/portalmem.c:478 #, c-format -msgid "%d object in %s" -msgid_plural "%d objects in %s" -msgstr[0] "在%2$s中的%1$d个对象" +msgid "cannot drop active portal \"%s\"" +msgstr "不能删除处于活动状态的portal \"%s\"" -#: catalog/pg_shdepend.c:1189 catalog/pg_shdepend.c:1285 -#, c-format -msgid "" -"cannot drop objects owned by %s because they are required by the database " -"system" -msgstr "无法删除由%s所拥有的对象, 因为数据库系统需要这些对象" +#: utils/mmgr/portalmem.c:668 +msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD" +msgstr "无法对一个已经创建带有WITH HOLD游标的事务执行PREPARE操作." -#: catalog/pg_type.c:231 -#, c-format -msgid "invalid type internal size %d" -msgstr "无效类型内部大小 %d" +#: utils/mmgr/portalmem.c:989 commands/prepare.c:755 commands/extension.c:1711 +#: commands/extension.c:1820 commands/extension.c:2013 foreign/foreign.c:355 +#: replication/walsender.c:1416 +msgid "materialize mode required, but it is not allowed in this context" +msgstr "要求使用物化模式,但是在这种环境下不允许使用." -#: catalog/pg_type.c:247 catalog/pg_type.c:255 catalog/pg_type.c:263 -#: catalog/pg_type.c:272 -#, c-format -msgid "alignment \"%c\" is invalid for passed-by-value type of size %d" -msgstr "对齐方式 \"%c\"对于大小为%d的passed-by-value 类型是无效的" +#: utils/adt/windowfuncs.c:243 +msgid "argument of ntile must be greater than zero" +msgstr "ntile的参数必须大于零" -#: catalog/pg_type.c:279 -#, c-format -msgid "internal size %d is invalid for passed-by-value type" -msgstr "internal 大小 %d 对于 passed-by-value 类型是无效的" +#: utils/adt/windowfuncs.c:465 +msgid "argument of nth_value must be greater than zero" +msgstr "nth_value的参数必须大于零" -#: catalog/pg_type.c:288 catalog/pg_type.c:294 -#, c-format -msgid "alignment \"%c\" is invalid for variable-length type" -msgstr "对齐方式 \"%c\"对于大小为可变长度的类型是无效的" +#: utils/adt/xml.c:138 +msgid "unsupported XML feature" +msgstr "不支持的XML特性" -#: catalog/pg_type.c:302 -msgid "fixed-size types must have storage PLAIN" -msgstr "固定大小类型必需有明确的存储" +#: utils/adt/xml.c:139 +msgid "This functionality requires the server to be built with libxml support." +msgstr "这个功能是需要在创建服务器时带有对libxml的支持才能实现 " -#: catalog/pg_type.c:730 -#, c-format -msgid "could not form array type name for type \"%s\"" -msgstr "无法为类型\"%s\"来形成数组类型名称" +#: utils/adt/xml.c:140 +msgid "You need to rebuild PostgreSQL using --with-libxml." +msgstr "您需要使用--with-libxml选项重新生成PostgreSQL" -#: commands/view.c:139 -msgid "view must have at least one column" -msgstr "视图必需至少有一个字段" +# command.c:122 +#: utils/adt/xml.c:405 utils/adt/xml.c:410 +msgid "invalid XML comment" +msgstr "无效的XML注释" -#: commands/view.c:163 commands/comment.c:580 commands/tablecmds.c:206 -#: commands/tablecmds.c:2152 commands/tablecmds.c:2373 -#: commands/tablecmds.c:7801 -#, c-format -msgid "\"%s\" is not a view" -msgstr "\"%s\" 不是一个视图" +#: utils/adt/xml.c:539 +msgid "not an XML document" +msgstr "不是一个XML文档" -#: commands/view.c:260 commands/view.c:272 -msgid "cannot drop columns from view" -msgstr "无法从视图中删除列" +#: utils/adt/xml.c:692 utils/adt/xml.c:715 +msgid "invalid XML processing instruction" +msgstr "无效的XML处理命令" -#: commands/view.c:277 +#: utils/adt/xml.c:693 #, c-format -msgid "cannot change name of view column \"%s\" to \"%s\"" -msgstr "不能将视图字段的名称从\"%s\"改成\"%s\"" +msgid "XML processing instruction target name cannot be \"%s\"." +msgstr "XML处理命令目标名称不能是\"%s\"." -#: commands/view.c:285 -#, c-format -msgid "cannot change data type of view column \"%s\" from %s to %s" -msgstr "不可以将视图字段 \"%s\" 的数据类型从%s改为%s" +#: utils/adt/xml.c:716 +msgid "XML processing instruction cannot contain \"?>\"." +msgstr "XML处理命令不能包含\"?>\"." -#: commands/view.c:441 -msgid "CREATE VIEW specifies more column names than columns" -msgstr "CREATE VIEW 指定的字段名比实际字段多" +#: utils/adt/xml.c:795 +msgid "xmlvalidate is not implemented" +msgstr "没有实现xmlvalidate" -#: commands/view.c:457 -#, c-format -msgid "view \"%s\" will be a temporary view" -msgstr "视图\"%s\" 将是一个临时视图." +#: utils/adt/xml.c:880 +msgid "could not initialize XML library" +msgstr "无法初始化XML库" -#: commands/aggregatecmds.c:103 +#: utils/adt/xml.c:881 #, c-format -msgid "aggregate attribute \"%s\" not recognized" -msgstr "聚集属性 \"%s\" 不被认可" +msgid "" +"libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u." +msgstr "libxml2具有不兼容的字符类型: sizeof(char)=%u, sizeof(xmlChar)=%u. " -#: commands/aggregatecmds.c:113 -msgid "aggregate stype must be specified" -msgstr "聚集 stype 必须指定" +#: utils/adt/xml.c:1448 +msgid "Invalid character value." +msgstr "无效的字符值" -#: commands/aggregatecmds.c:117 -msgid "aggregate sfunc must be specified" -msgstr "聚集 sfunc 必须指定" +#: utils/adt/xml.c:1451 +msgid "Space required." +msgstr "要求空格" -#: commands/aggregatecmds.c:134 -msgid "aggregate input type must be specified" -msgstr "必须指定聚合函数的输入参数类型" +#: utils/adt/xml.c:1454 +msgid "standalone accepts only 'yes' or 'no'." +msgstr "单机只接受'yes'或'no'." -#: commands/aggregatecmds.c:159 -msgid "basetype is redundant with aggregate input type specification" -msgstr "如果带有聚合函数输入类型定义,那么基类型定义就是冗余的." +#: utils/adt/xml.c:1457 +msgid "Malformed declaration: missing version." +msgstr "有缺陷的声明: 丢失版本." -#: commands/aggregatecmds.c:191 -#, c-format -msgid "aggregate transition data type cannot be %s" -msgstr "聚集转换数据类型不能为 %s" +#: utils/adt/xml.c:1460 +msgid "Missing encoding in text declaration." +msgstr "在文本声明中丢失编码" -#: commands/aggregatecmds.c:230 -#, c-format -msgid "aggregate %s(%s) does not exist, skipping" -msgstr "聚合函数 %s(%s) 不存在,跳过" +#: utils/adt/xml.c:1463 +msgid "Parsing XML declaration: '?>' expected." +msgstr "正在解析XML声明: 期望'?>' " -#: commands/aggregatecmds.c:292 commands/functioncmds.c:1119 +#: utils/adt/xml.c:1466 #, c-format -msgid "function %s already exists in schema \"%s\"" -msgstr "在模式 \"%2$s\" 中函数 %1$s 已经存在" +msgid "Unrecognized libxml error code: %d." +msgstr "未知的libxml错误码: %d" -#: commands/analyze.c:166 -#, c-format -msgid "skipping \"%s\" --- only superuser can analyze it" -msgstr "忽略 \"%s\" --- 只有超级用户能够分析它" +#: utils/adt/xml.c:1717 utils/adt/date.c:217 +msgid "date out of range" +msgstr "日期超出范围" -#: commands/analyze.c:170 -#, c-format -msgid "skipping \"%s\" --- only superuser or database owner can analyze it" -msgstr "忽略 \"%s\" --- 只有超级用户或数据库的属主能够分析它" +#: utils/adt/xml.c:1718 +msgid "XML does not support infinite date values." +msgstr "XML不支持无限日期值" -#: commands/analyze.c:174 -#, c-format -msgid "skipping \"%s\" --- only table or database owner can analyze it" -msgstr "忽略 \"%s\" --- 只有表或数据库的属主能够分析它" +#: utils/adt/xml.c:1740 utils/adt/xml.c:1747 utils/adt/xml.c:1767 +#: utils/adt/xml.c:1774 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 +#: utils/adt/formatting.c:3185 utils/adt/formatting.c:3217 +#: utils/adt/formatting.c:3285 utils/adt/date.c:913 utils/adt/date.c:960 +#: utils/adt/date.c:1516 utils/adt/date.c:1553 utils/adt/date.c:2426 +#: utils/adt/nabstime.c:480 utils/adt/nabstime.c:523 utils/adt/nabstime.c:553 +#: utils/adt/nabstime.c:596 +msgid "timestamp out of range" +msgstr "时间戳超出范围" -#: commands/analyze.c:190 -#, c-format -msgid "" -"skipping \"%s\" --- cannot analyze indexes, views, or special system tables" -msgstr "忽略 \"%s\" --- 无法分析索引, 视图或特殊的系统表" +#: utils/adt/xml.c:1741 utils/adt/xml.c:1768 +msgid "XML does not support infinite timestamp values." +msgstr "XML不支持无限时间戳值" -#: commands/analyze.c:283 +#: utils/adt/xml.c:2074 utils/adt/xml.c:2238 commands/portalcmds.c:168 +#: commands/portalcmds.c:222 executor/execCurrent.c:66 #, c-format -msgid "analyzing \"%s.%s\" inheritance tree" -msgstr "正在分析 \"%s.%s\"继承树" +msgid "cursor \"%s\" does not exist" +msgstr "游标 \"%s\" 不存在" -#: commands/analyze.c:288 -#, c-format -msgid "analyzing \"%s.%s\"" -msgstr "正在分析 \"%s.%s\"" +#: utils/adt/xml.c:2153 +msgid "invalid query" +msgstr "无效的查询" -#: commands/analyze.c:609 -#, c-format -msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s" -msgstr "自动分析表 \"%s.%s.%s\"的系统使用情况: %s" +#: utils/adt/xml.c:3377 +msgid "invalid array for XML namespace mapping" +msgstr "对于XML命名空间映射的无效数组" -#: commands/analyze.c:1232 -#, c-format +#: utils/adt/xml.c:3378 msgid "" -"\"%s\": scanned %d of %u pages, containing %.0f live rows and %.0f dead " -"rows; %d rows in sample, %.0f estimated total rows" -msgstr "" -"\"%1$s\": 已经扫描了%3$u页的%2$d, 包含%4$.0f可用的记录和%5$.0f不能用的记录; " -"在示例中有%6$d条记录,估算所有记录为%7$.0f ." - -#: commands/analyze.c:1493 executor/execQual.c:2735 -msgid "could not convert row type" -msgstr "无法转换记录类型" - -#: commands/async.c:567 -msgid "channel name cannot be empty" -msgstr "通道名称不能为空" - -#: commands/async.c:572 -msgid "channel name too long" -msgstr "通道名称太长" - -#: commands/async.c:579 -msgid "payload string too long" -msgstr "流量负载字符串太长" +"The array must be two-dimensional with length of the second axis equal to 2." +msgstr "数组必须是第二个坐标轴等于2的两维数组" -#: commands/async.c:763 -msgid "" -"cannot PREPARE a transaction that has executed LISTEN, UNLISTEN or NOTIFY" -msgstr "无法在一个已经执行了LISTEN或UNLISTEN操作的事务上执行PREPARE" +#: utils/adt/xml.c:3402 +msgid "empty XPath expression" +msgstr "空的XPath表达式" -#: commands/async.c:868 -msgid "too many notifications in the NOTIFY queue" -msgstr "在NOTIFY队列中的通知太多了" +#: utils/adt/xml.c:3450 +msgid "neither namespace name nor URI may be null" +msgstr "URI或者命名空间名称不可为空." -#: commands/async.c:1421 +# fe-misc.c:702 +#: utils/adt/xml.c:3457 #, c-format -msgid "NOTIFY queue is %.0f%% full" -msgstr "NOTIFY队列达到了%.0f%%的容量" +msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" +msgstr "无法以名称\"%s\"和URI\"%s\"来注册XML命名空间" -#: commands/async.c:1423 +#: utils/adt/regexp.c:194 tsearch/spell.c:439 #, c-format -msgid "" -"The server process with PID %d is among those with the oldest transactions." -msgstr "带有PID为%d的服务器进程在那些带有最老事务的进程中。" - -#: commands/async.c:1426 -msgid "" -"The NOTIFY queue cannot be emptied until that process ends its current " -"transaction." -msgstr "在进程结束它所处理的当前事务前, NOTIFY队列不能为空." - -#: commands/cluster.c:126 commands/cluster.c:364 -msgid "cannot cluster temporary tables of other sessions" -msgstr "无法为其它会话的临时表建簇" +msgid "invalid regular expression: %s" +msgstr "无效的正则表达式: %s" -#: commands/cluster.c:156 +#: utils/adt/regexp.c:274 utils/adt/regexp.c:1223 utils/adt/varlena.c:2860 #, c-format -msgid "there is no previously clustered index for table \"%s\"" -msgstr "在表 \"%s\" 中未找到先前建簇的索引" +msgid "regular expression failed: %s" +msgstr "正则表达式失败: %s" -#: commands/cluster.c:170 commands/tablecmds.c:6751 +#: utils/adt/regexp.c:411 #, c-format -msgid "index \"%s\" for table \"%s\" does not exist" -msgstr "表 \"%2$s\" 的 \"%1$s\" 索引不存在" - -#: commands/cluster.c:353 -msgid "cannot cluster a shared catalog" -msgstr "无法在共享目录视图上进行聚簇操作" +msgid "invalid regexp option: \"%c\"" +msgstr "无效的正则表达式选项: \"%c\"" -#: commands/cluster.c:368 -msgid "cannot vacuum temporary tables of other sessions" -msgstr "无法对其它会话的临时表进行清理操作" +#: utils/adt/regexp.c:683 utils/adt/like_match.c:289 +msgid "invalid escape string" +msgstr "无效的逃逸字符串" -#: commands/cluster.c:384 -#, c-format -msgid "clustering \"%s.%s\"" -msgstr "正在对\"%s.%s\"进行聚簇操作" +#: utils/adt/regexp.c:684 utils/adt/like_match.c:290 +msgid "Escape string must be empty or one character." +msgstr "逃逸字符串必须为空或者一个字符." -#: commands/cluster.c:389 commands/vacuumlazy.c:320 -#, c-format -msgid "vacuuming \"%s.%s\"" -msgstr "正在清理 (vacuum) \"%s.%s\"" +#: utils/adt/regexp.c:883 +msgid "regexp_split does not support the global option" +msgstr "regexp_split 不支持全局选项" -#: commands/cluster.c:421 -#, c-format -msgid "\"%s\" is not an index for table \"%s\"" -msgstr "对于表 \"%2$s\" \"%1$s\" 不是一个索引" +#: utils/adt/datum.c:80 utils/adt/datum.c:92 +msgid "invalid Datum pointer" +msgstr "无效的 Datum 指针" -#: commands/cluster.c:429 -#, c-format -msgid "" -"cannot cluster on index \"%s\" because access method does not support " -"clustering" -msgstr "无法在索引\"%s\"进行聚簇操作,因为访问方法不支持进行聚簇操作" +#: utils/adt/array_userfuncs.c:48 +msgid "could not determine input data types" +msgstr "无法确定输入数据类型" -#: commands/cluster.c:441 -#, c-format -msgid "cannot cluster on partial index \"%s\"" -msgstr "无法在部分索引 \"%s\"上进行聚簇操作" +#: utils/adt/array_userfuncs.c:82 +msgid "neither input type is an array" +msgstr "没有输入类型是数组" -#: commands/cluster.c:461 -#, c-format -msgid "" -"cannot cluster on index \"%s\" because access method does not handle null " -"values" -msgstr "无法在索引 \"%s\" 上进行聚簇操作,因为访问方法不处理空值" +#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113 +#: 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/varlena.c:950 +#: utils/adt/varlena.c:1968 utils/adt/int8.c:1247 utils/adt/float.c:1101 +#: utils/adt/float.c:1160 utils/adt/float.c:2711 utils/adt/float.c:2727 +#: utils/adt/varbit.c:1111 utils/adt/varbit.c:1503 utils/adt/arrayfuncs.c:1276 +#: utils/adt/numeric.c:2253 utils/adt/numeric.c:2262 +msgid "integer out of range" +msgstr "整数超出范围" -#: commands/cluster.c:464 -#, c-format -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来从表中删除聚簇定义来应急处理这个问题." +#: utils/adt/array_userfuncs.c:121 +msgid "argument must be empty or one-dimensional array" +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 +#: utils/adt/array_userfuncs.c:357 +msgid "cannot concatenate incompatible arrays" +msgstr "无法连结不兼容的数组" -#: commands/cluster.c:466 +#: utils/adt/array_userfuncs.c:225 #, c-format msgid "" -"You might be able to work around this by marking column \"%s\" NOT NULL." -msgstr "您可以通过标记字段 \"%s\" 为 NOT NULL 来运行" +"Arrays with element types %s and %s are not compatible for concatenation." +msgstr "成员类型是%s和%s的数组对于串联操作是不兼容的." -#: commands/cluster.c:477 +#: 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:301 msgid "" -"cannot cluster on expressional index \"%s\" because its index access method " -"does not handle null values" -msgstr "无法在表达式索引 \"%s\" 进行聚簇操作, 因为它的索引访问方法不处理空值" +"Arrays with differing element dimensions are not compatible for " +"concatenation." +msgstr "带有不同成员维度的数组对于串联操作不兼容" -#: commands/cluster.c:492 -#, c-format -msgid "cannot cluster on invalid index \"%s\"" -msgstr "无法在无效索引\"%s\"进行聚簇操作" +#: utils/adt/array_userfuncs.c:330 utils/adt/array_userfuncs.c:358 +msgid "Arrays with differing dimensions are not compatible for concatenation." +msgstr "带有不同维度的数组对于串联操作不兼容." -#: commands/comment.c:642 +#: utils/adt/array_userfuncs.c:426 utils/adt/arrayfuncs.c:1238 +#: utils/adt/arrayfuncs.c:2911 utils/adt/arrayfuncs.c:4936 #, c-format -msgid "\"%s\" is not a table, view, or composite type" -msgstr "\"%s\" 不是一个表,视图,或者组合类型" +msgid "invalid number of dimensions: %d" +msgstr "无效的大小值: %d" -#: commands/comment.c:681 -msgid "database name cannot be qualified" -msgstr "不能限定数据库名称" +#: 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:4940 +#: executor/execQual.c:303 executor/execQual.c:331 executor/execQual.c:3080 +#, c-format +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgstr "数组的维数(%d)超过最大允许值(%d)" -#: commands/comment.c:729 -msgid "tablespace name cannot be qualified" -msgstr "不能限定表空间名称" +#: utils/adt/array_userfuncs.c:487 +msgid "could not determine input data type" +msgstr "无法确定输入数据类型" -#: commands/comment.c:766 -msgid "role name cannot be qualified" -msgstr "不能限定角色名称" +#: utils/adt/int.c:162 +msgid "int2vector has too many elements" +msgstr "int2vector 有太多的元素" -#: commands/comment.c:775 -#, c-format -msgid "must be member of role \"%s\" to comment upon it" -msgstr "只有角色\"%s\" 的成员才能对它进行注释" +#: utils/adt/int.c:237 +msgid "invalid int2vector data" +msgstr "无效的int2vector数据" -#: commands/comment.c:799 commands/schemacmds.c:178 -msgid "schema name cannot be qualified" -msgstr "不能限定模式名称" +#: utils/adt/int.c:243 utils/adt/oid.c:212 utils/adt/oid.c:293 +msgid "oidvector has too many elements" +msgstr "oidvector 有太多元素" -#: commands/comment.c:874 -#, c-format -msgid "rule \"%s\" does not exist" -msgstr "规则 \"%s\" 不存在" +#: 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/float.c:1119 +#: utils/adt/float.c:1177 utils/adt/numeric.c:2354 utils/adt/numeric.c:2365 +msgid "smallint out of range" +msgstr "smallint 超出范围" -#: commands/comment.c:882 -#, c-format -msgid "there are multiple rules named \"%s\"" -msgstr "有多条规则的名字是 \"%s\"" +#: 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/timestamp.c:2876 utils/adt/geo_ops.c:4130 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/float.c:764 +#: utils/adt/float.c:828 utils/adt/float.c:2470 utils/adt/float.c:2533 +#: utils/adt/cash.c:507 utils/adt/cash.c:557 utils/adt/cash.c:608 +#: utils/adt/cash.c:657 utils/adt/cash.c:709 utils/adt/cash.c:759 +#: utils/adt/numeric.c:4507 utils/adt/numeric.c:4790 +msgid "division by zero" +msgstr "除以零" -#: commands/comment.c:883 -msgid "Specify a relation name as well as a rule name." -msgstr "指定一个关系名称, 和规则名称一样." +#: utils/adt/int.c:1362 utils/adt/timestamp.c:4712 utils/adt/timestamp.c:4793 +#: utils/adt/int8.c:1409 +msgid "step size cannot equal zero" +msgstr "单步执行大小不能等于0" -#: commands/comment.c:910 rewrite/rewriteDefine.c:687 -#: rewrite/rewriteDefine.c:749 rewrite/rewriteRemove.c:62 -#, c-format -msgid "rule \"%s\" for relation \"%s\" does not exist" -msgstr "关系 \"%2$s\" 的 \"%1$s\" 规则不存在" +#: utils/adt/tsgistidx.c:100 +msgid "gtsvector_in not implemented" +msgstr "没有实现gtsvector_in" -#: commands/comment.c:1105 commands/trigger.c:994 commands/trigger.c:1194 -#: commands/trigger.c:1305 +#: utils/adt/bool.c:153 #, c-format -msgid "trigger \"%s\" for table \"%s\" does not exist" -msgstr "表 \"%2$s\" 的 \"%1$s\" 触发器不存在" +msgid "invalid input syntax for type boolean: \"%s\"" +msgstr "无效的布尔类型输入语法: \"%s\"" -#: commands/comment.c:1183 commands/conversioncmds.c:153 -#: commands/conversioncmds.c:209 commands/conversioncmds.c:262 +#: utils/adt/arrayutils.c:93 utils/adt/arrayutils.c:102 +#: utils/adt/arrayutils.c:109 utils/adt/arrayfuncs.c:871 +#: utils/adt/arrayfuncs.c:1473 utils/adt/arrayfuncs.c:2795 +#: utils/adt/arrayfuncs.c:2943 utils/adt/arrayfuncs.c:5036 #, c-format -msgid "conversion \"%s\" does not exist" -msgstr "编码转换 \"%s\" 不存在" - -#: commands/comment.c:1213 -msgid "language name cannot be qualified" -msgstr "不能限定language名称" +msgid "array size exceeds the maximum allowed (%d)" +msgstr "数组的大小超过了最大允许值(%d)" -#: commands/comment.c:1226 -msgid "must be superuser to comment on procedural language" -msgstr "必须成为超级用户才被允许注释过程语言" +#: utils/adt/arrayutils.c:209 +msgid "typmod array must be type cstring[]" +msgstr "typmod 数组必须是cstring[]类型" -#: commands/comment.c:1261 commands/comment.c:1342 commands/indexcmds.c:295 -#: commands/opclasscmds.c:281 commands/opclasscmds.c:669 -#: commands/opclasscmds.c:769 commands/opclasscmds.c:1495 -#: commands/opclasscmds.c:1556 commands/opclasscmds.c:1718 -#: commands/opclasscmds.c:1812 commands/opclasscmds.c:1903 -#: commands/opclasscmds.c:2046 -#, c-format -msgid "access method \"%s\" does not exist" -msgstr "访问方式 \"%s\" 不存在" +#: utils/adt/arrayutils.c:214 +msgid "typmod array must be one-dimensional" +msgstr "参数必须为空或者一维数组" -#: commands/comment.c:1289 commands/comment.c:1297 commands/indexcmds.c:1149 -#: commands/indexcmds.c:1157 commands/opclasscmds.c:1507 -#: commands/opclasscmds.c:1511 commands/opclasscmds.c:1739 -#: commands/opclasscmds.c:1750 commands/opclasscmds.c:1926 -#: commands/opclasscmds.c:1937 -#, c-format -msgid "operator class \"%s\" does not exist for access method \"%s\"" -msgstr "处理方法 \"%s\" 的操作符类 \"%s\" 不存在" +#: utils/adt/arrayutils.c:219 +msgid "typmod array must not contain nulls" +msgstr "typmod不能包含空值" -#: commands/comment.c:1370 commands/comment.c:1378 commands/opclasscmds.c:343 -#: commands/opclasscmds.c:789 commands/opclasscmds.c:1568 -#: commands/opclasscmds.c:1572 commands/opclasscmds.c:1833 -#: commands/opclasscmds.c:1844 commands/opclasscmds.c:2069 -#: commands/opclasscmds.c:2080 -#, c-format -msgid "operator family \"%s\" does not exist for access method \"%s\"" -msgstr "访问方法\"%2$s\"的操作符表 \"%1$s\" 不存在" +#: utils/adt/trigfuncs.c:41 +msgid "suppress_redundant_updates_trigger: must be called as trigger" +msgstr "suppress_redundant_updates_trigger:必须以触发器的形式调用" -#: commands/comment.c:1469 commands/functioncmds.c:1777 -#, c-format -msgid "cast from type %s to type %s does not exist" -msgstr "类型 %s 到类型 %s 的转换不存在" +#: utils/adt/trigfuncs.c:47 +msgid "suppress_redundant_updates_trigger: must be called on update" +msgstr "suppress_redundant_updates_trigger: 必须在更新操作上调用" -#: commands/comment.c:1481 commands/functioncmds.c:1522 -#: commands/functioncmds.c:1794 -#, c-format -msgid "must be owner of type %s or type %s" -msgstr "只能是类型 %s 或 %s 的所由者" +#: utils/adt/trigfuncs.c:53 +msgid "suppress_redundant_updates_trigger: must be called before update" +msgstr "suppress_redundant_updates_trigger: 必须在更新操作前调用" -#: commands/comment.c:1501 -msgid "must be superuser to comment on text search parser" -msgstr "必须成为超级用户才能在文本搜索解析器上进行注释" +#: utils/adt/trigfuncs.c:59 +msgid "suppress_redundant_updates_trigger: must be called for each row" +msgstr "suppress_redundant_updates_trigger: 必须为每条记录调用" -#: commands/comment.c:1530 -msgid "must be superuser to comment on text search template" -msgstr "必须成为超级用户才能在文本搜索模版上进行注释" +#: utils/adt/timestamp.c:92 utils/adt/varchar.c:43 utils/adt/date.c:66 +#: utils/adt/varbit.c:51 +msgid "invalid type modifier" +msgstr "无效的类型修改器" -#: commands/constraint.c:59 utils/adt/ri_triggers.c:2999 +#: utils/adt/timestamp.c:97 #, c-format -msgid "function \"%s\" was not called by trigger manager" -msgstr "函数 \"%s\" 没有被触发器管理器调用" +msgid "TIMESTAMP(%d)%s precision must not be negative" +msgstr "TIMESTAMP(%d)%s 精确度不能为负数" -#: commands/constraint.c:66 utils/adt/ri_triggers.c:3008 +#: utils/adt/timestamp.c:103 #, c-format -msgid "function \"%s\" must be fired AFTER ROW" -msgstr "函数 \"%s\"必须为AFTER ROW触发" +msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d" +msgstr "将TIMESTAMP(%d)%s减少到最大允许值,%d" -#: commands/constraint.c:80 utils/adt/ri_triggers.c:3029 +#: utils/adt/timestamp.c:171 utils/adt/timestamp.c:435 #, c-format -msgid "function \"%s\" must be fired for INSERT or UPDATE" -msgstr "函数 \"%s\"必须为INSERT或UPDATE操作触发" +msgid "timestamp out of range: \"%s\"" +msgstr "时间戳超出范围: \"%s\"" -#: commands/conversioncmds.c:69 +#: utils/adt/timestamp.c:189 utils/adt/timestamp.c:453 +#: utils/adt/timestamp.c:664 #, c-format -msgid "source encoding \"%s\" does not exist" -msgstr "源编码 \"%s\" 不存在" +msgid "date/time value \"%s\" is no longer supported" +msgstr "日期/时间值 \"%s\" 不再被支持" + +#: utils/adt/timestamp.c:260 +msgid "timestamp cannot be NaN" +msgstr "时间戳不能是NaN" -#: commands/conversioncmds.c:76 +#: utils/adt/timestamp.c:370 #, c-format -msgid "destination encoding \"%s\" does not exist" -msgstr "目标编码 \"%s\" 不存在" +msgid "timestamp(%d) precision must be between %d and %d" +msgstr "timestamp(%d) 的精确度必需在 %d 到 %d 之间" + +#: 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类型修改器" -#: commands/conversioncmds.c:90 +#: utils/adt/timestamp.c:803 #, c-format -msgid "encoding conversion function %s must return type \"void\"" -msgstr "编码转换函数%s必须返回类型\"void\"" +msgid "INTERVAL(%d) precision must not be negative" +msgstr "INTERVAL(%d) 的精确度不能为负数" -#: commands/conversioncmds.c:159 +#: utils/adt/timestamp.c:809 #, c-format -msgid "conversion \"%s\" does not exist, skipping" -msgstr "编码转换 \"%s\" 不存在,跳过" +msgid "INTERVAL(%d) precision reduced to maximum allowed, %d" +msgstr "将INTERVAL(%d)减少到最大允许值,%d" -#: commands/conversioncmds.c:224 +#: utils/adt/timestamp.c:1101 #, c-format -msgid "conversion \"%s\" already exists in schema \"%s\"" -msgstr "约束 \"%s\" 已经存在于模式 \"%s\" 中" +msgid "interval(%d) precision must be between %d and %d" +msgstr "interval(%d) 的精确度必需在 %d 到 %d 之间" -#: commands/copy.c:312 commands/copy.c:324 commands/copy.c:358 -#: commands/copy.c:368 -msgid "COPY BINARY is not supported to stdout or from stdin" -msgstr "COPOY BINARY 不支持输出到标准输出或来自标准输入" +#: utils/adt/timestamp.c:2306 +msgid "cannot subtract infinite timestamps" +msgstr "无法减去无限长的时间戳" -#: commands/copy.c:446 +#: utils/adt/timestamp.c:3365 utils/adt/timestamp.c:3961 +#: utils/adt/timestamp.c:4020 #, c-format -msgid "could not write to COPY file: %m" -msgstr "无法写入 COPY 文件: %m" +msgid "timestamp units \"%s\" not supported" +msgstr "不支持时间戳单位 \"%s\"" -#: commands/copy.c:458 -msgid "connection lost during COPY to stdout" -msgstr "COPY 到标准输出的过程中联接中断" +#: utils/adt/timestamp.c:3379 utils/adt/timestamp.c:4030 +#, c-format +msgid "timestamp units \"%s\" not recognized" +msgstr "时间戳单位 \"%s\" 不被认可" -#: commands/copy.c:499 +#: utils/adt/timestamp.c:3520 utils/adt/timestamp.c:4192 +#: utils/adt/timestamp.c:4233 #, c-format -msgid "could not read from COPY file: %m" -msgstr "无法从COPY命令中文件进行读操作: %m" +msgid "timestamp with time zone units \"%s\" not supported" +msgstr "不支持带时区的时间戳单位 \"%s\"" -#: commands/copy.c:515 commands/copy.c:534 commands/copy.c:538 -#: tcop/fastpath.c:291 tcop/postgres.c:342 tcop/postgres.c:365 -msgid "unexpected EOF on client connection" -msgstr "在客户端联接上的意外 EOF" +#: utils/adt/timestamp.c:3537 utils/adt/timestamp.c:4242 +#, c-format +msgid "timestamp with time zone units \"%s\" not recognized" +msgstr "带时区的时间戳单位 \"%s\" 不被认可" -#: commands/copy.c:550 +#: utils/adt/timestamp.c:3617 utils/adt/timestamp.c:4348 #, c-format -msgid "COPY from stdin failed: %s" -msgstr "从标准输入上 COPY 失败: %s" +msgid "interval units \"%s\" not supported" +msgstr "不支持 \"%s\" 的 interval 单位" -#: commands/copy.c:566 +#: utils/adt/timestamp.c:3633 utils/adt/timestamp.c:4375 #, c-format -msgid "unexpected message type 0x%02X during COPY from stdin" -msgstr "意外的信息类型 0x%02X, 在标准输入上 COPY 的过程中" +msgid "interval units \"%s\" not recognized" +msgstr "interval 单位 \"%s\" 不被认可" -#: commands/copy.c:762 +#: utils/adt/timestamp.c:4445 utils/adt/timestamp.c:4618 #, c-format -msgid "COPY format \"%s\" not recognized" -msgstr "没有识别COPY命令的格式\"%s\"" +msgid "could not convert to time zone \"%s\"" +msgstr "无法转换到时间区域\"%s\"" -#: commands/copy.c:825 commands/copy.c:839 +#: utils/adt/timestamp.c:4452 utils/adt/timestamp.c:4625 utils/adt/date.c:2631 +#: utils/adt/datetime.c:928 utils/adt/datetime.c:1663 #, c-format -msgid "argument to option \"%s\" must be a list of column names" -msgstr "选项 \"%s\"的参数必须是一个包含列名的列表" +msgid "time zone \"%s\" not recognized" +msgstr "时区 \"%s\" 不被认可" -#: commands/copy.c:845 +#: utils/adt/timestamp.c:4477 utils/adt/timestamp.c:4651 #, c-format -msgid "option \"%s\" not recognized" -msgstr "未识别选项\"%s\"" +msgid "interval time zone \"%s\" must not specify month" +msgstr "时区 \"%s\" 间隔不可以指定月份" -#: commands/copy.c:856 -msgid "cannot specify DELIMITER in BINARY mode" -msgstr "在 BINARY 模式中你不能指定 DELIMITER" +#: utils/adt/selfuncs.c:4926 +msgid "case insensitive matching not supported on type bytea" +msgstr "在类型bytea上不支持对不区分大小写的匹配" -#: commands/copy.c:861 -msgid "cannot specify NULL in BINARY mode" -msgstr "在 BINARY 模式中你不能指定 NULL" +#: utils/adt/selfuncs.c:4941 utils/adt/like.c:211 +msgid "could not determine which collation to use for ILIKE" +msgstr "无法确定ILIKE使用哪种排序规则" -#: commands/copy.c:883 -msgid "COPY delimiter must be a single one-byte character" -msgstr "COPY命令中 的分隔符必需是单字节字符" +#: utils/adt/selfuncs.c:4942 utils/adt/varlena.c:1315 +#: 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 commands/indexcmds.c:896 commands/view.c:145 +#: regex/regc_pg_locale.c:259 catalog/heap.c:560 +msgid "Use the COLLATE clause to set the collation explicitly." +msgstr "使用COLLATE子句来显示设置排序规则." -#: commands/copy.c:890 -msgid "COPY delimiter cannot be newline or carriage return" -msgstr "COPY 命令中的分隔符不能使新行或回车符" +#: utils/adt/selfuncs.c:5029 +msgid "regular-expression matching not supported on type bytea" +msgstr "在 bytea 类型上不支持正则表达式匹配" -#: commands/copy.c:896 -msgid "COPY null representation cannot use newline or carriage return" -msgstr "在COPY命令中空表达式中不能使用新行或换行回车." +#: utils/adt/varlena.c:246 utils/adt/varlena.c:287 utils/adt/encode.c:441 +#: utils/adt/encode.c:506 +msgid "invalid input syntax for type bytea" +msgstr "无效的 bytea 类型输入语法" -#: commands/copy.c:913 -#, c-format -msgid "COPY delimiter cannot be \"%s\"" -msgstr "COPY命令中的分隔符不能为\"%s\"" +#: 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 utils/adt/varbit.c:1004 +#: utils/adt/varbit.c:1106 +msgid "negative substring length not allowed" +msgstr "不允许子串长度为负数" -#: commands/copy.c:919 -msgid "COPY HEADER available only in CSV mode" -msgstr "只在CSV 模式中才能使用COPY HEADER命令" +#: utils/adt/varlena.c:1314 +msgid "could not determine which collation to use for string comparison" +msgstr "无法确定字符串比较中使用哪种排序规则" -#: commands/copy.c:925 -msgid "COPY quote available only in CSV mode" -msgstr "只有在CSV模式中才能在COPY命令中使用引号" +#: 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" -#: commands/copy.c:930 -msgid "COPY quote must be a single one-byte character" -msgstr "在COPY命令中的引号必须是单字节字符" +#: utils/adt/varlena.c:1386 +#, c-format +msgid "could not compare Unicode strings: %m" +msgstr "无法比较Unicode类型字符串: %m" -#: commands/copy.c:935 -msgid "COPY delimiter and quote must be different" -msgstr "COPY命令中的分隔符和引号不能一样." +#: 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" -#: commands/copy.c:941 -msgid "COPY escape available only in CSV mode" -msgstr "COPY 转义 (escape) 只在 CSV 模式中有效" +#: utils/adt/varlena.c:2163 utils/adt/varbit.c:1740 +msgid "new bit must be 0 or 1" +msgstr "新的位必须为 0 或 1" -#: commands/copy.c:946 -msgid "COPY escape must be a single one-byte character" -msgstr "在COPY命令中的转义字符必须是单个单字节字符" +#: utils/adt/varlena.c:2245 utils/adt/varlena.c:2250 utils/adt/regproc.c:1320 +#: utils/adt/regproc.c:1325 +msgid "invalid name syntax" +msgstr "无效的名字语法" -#: commands/copy.c:952 -msgid "COPY force quote available only in CSV mode" -msgstr "只有在CSV模式中才能在COPY命令中进行强制引用操作" +#: utils/adt/varlena.c:2953 +msgid "field position must be greater than zero" +msgstr "字段的位置必须大于0" -#: commands/copy.c:956 -msgid "COPY force quote only available using COPY TO" -msgstr "只有使用COPY TO命令时, COPY强制引用操作才有效" +#: utils/adt/varlena.c:3822 utils/adt/varlena.c:3883 +msgid "unterminated conversion specifier" +msgstr "未结束的转换标识符" -#: commands/copy.c:962 -msgid "COPY force not null available only in CSV mode" -msgstr "只有在CSV模式中强制不为空的COPY命令才有效" +# fe-exec.c:2130 +#: utils/adt/varlena.c:3846 utils/adt/varlena.c:3862 +msgid "argument number is out of range" +msgstr "参数号超出了范围" -#: commands/copy.c:966 -msgid "COPY force not null only available using COPY FROM" -msgstr "只有在使用COPY FROM命令时,在COPY命令中的强制不可为空的操作才有效" +#: utils/adt/varlena.c:3889 +msgid "conversion specifies argument 0, but arguments are numbered from 1" +msgstr "转换指定了参数 0, 但参数值序号从 1开始记起" -#: commands/copy.c:972 -msgid "COPY delimiter must not appear in the NULL specification" -msgstr "COPY分隔符不能出现NULL定义中" +#: utils/adt/varlena.c:3896 +msgid "too few arguments for format" +msgstr "格式化的参数太少" -#: commands/copy.c:979 -msgid "CSV quote character must not appear in the NULL specification" -msgstr "CSV引用字符不能出现在NULL定义中." +#: utils/adt/varlena.c:3917 +#, c-format +msgid "unrecognized conversion specifier \"%c\"" +msgstr "不能识别的转换标识符 \"%c\"" -#: commands/copy.c:985 -msgid "must be superuser to COPY to or from a file" -msgstr "必须成为超级用户才能 COPY 到文件或从文件 COPY" +#: utils/adt/varlena.c:3946 +msgid "null values cannot be formatted as an SQL identifier" +msgstr "null值不能格式化为SQL标识符" -#: commands/copy.c:986 -msgid "" -"Anyone can COPY to stdout or from stdin. psql's \\copy command also works " -"for anyone." -msgstr "" -"任何人可以 COPY 到标准输出或来自标准输入的 COPY. 任何人也可以使用 Psql 的 " -"\\copy 命令." +#: utils/adt/like_match.c:104 utils/adt/like_match.c:164 +msgid "LIKE pattern must not end with escape character" +msgstr "LIKE模式不能以转义字符结束" -#: commands/copy.c:1032 +#: utils/adt/tid.c:70 utils/adt/tid.c:78 utils/adt/tid.c:86 #, c-format -msgid "table \"%s\" does not have OIDs" -msgstr "表 \"%s\" 没有 OID" +msgid "invalid input syntax for type tid: \"%s\"" +msgstr "无效的 tid 类型输入语法: \"%s\"" -#: commands/copy.c:1049 -msgid "COPY (SELECT) WITH OIDS is not supported" -msgstr "不支持使用COPY (SELECT) WITH OIDS" +#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:4251 utils/adt/geo_ops.c:5172 +msgid "too many points requested" +msgstr "要求了太多的点" -#: commands/copy.c:1076 -msgid "COPY (SELECT INTO) is not supported" -msgstr "不支持使用COPY (SELECT INTO)命令." +#: utils/adt/geo_ops.c:317 +msgid "could not format \"path\" value" +msgstr "无法格式化 \"path\" 值" -#: commands/copy.c:1135 +#: utils/adt/geo_ops.c:392 #, c-format -msgid "FORCE QUOTE column \"%s\" not referenced by COPY" -msgstr "COPY命令没有引用FORCE QUOTE的列\"%s\" ." +msgid "invalid input syntax for type box: \"%s\"" +msgstr "无效的 box 类型输入语法: \"%s\"" -#: commands/copy.c:1157 +#: utils/adt/geo_ops.c:956 #, c-format -msgid "FORCE NOT NULL column \"%s\" not referenced by COPY" -msgstr "COPY命令没有引用FORCE NOT NULL的列\"%s\" ." +msgid "invalid input syntax for type line: \"%s\"" +msgstr "无效的 line 类型输入语法: \"%s\"" + +#: 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\" 没有实现" -#: commands/copy.c:1235 +#: utils/adt/geo_ops.c:1411 utils/adt/geo_ops.c:1434 #, c-format -msgid "cannot copy from view \"%s\"" -msgstr "不可以从视图 \"%s\" 拷贝" +msgid "invalid input syntax for type path: \"%s\"" +msgstr "无效的 path 类型输入语法: \"%s\"" -#: commands/copy.c:1237 -msgid "Try the COPY (SELECT ...) TO variant." -msgstr "尝试不同形式的COPY (SELECT ...) TO命令" +#: utils/adt/geo_ops.c:1473 +msgid "invalid number of points in external \"path\" value" +msgstr "在外部 \"path\" 值中的点数量无效." -#: commands/copy.c:1241 +#: utils/adt/geo_ops.c:1816 #, c-format -msgid "cannot copy from sequence \"%s\"" -msgstr "不可以从序列 \"%s\" 拷贝" +msgid "invalid input syntax for type point: \"%s\"" +msgstr "无效的 point 类型输入语法: \"%s\"" -#: commands/copy.c:1246 +#: utils/adt/geo_ops.c:2044 #, c-format -msgid "cannot copy from non-table relation \"%s\"" -msgstr "不可以从非表关系 \"%s\" 拷贝" +msgid "invalid input syntax for type lseg: \"%s\"" +msgstr "无效的 lseg 类型输入语法: \"%s\"" -#: commands/copy.c:1270 -msgid "relative path not allowed for COPY to file" -msgstr "COPY 到文件不允许相对路径" +#: utils/adt/geo_ops.c:2648 +msgid "function \"dist_lb\" not implemented" +msgstr "函数 \"dist_lb\" 没有实现" -#: commands/copy.c:1279 -#, c-format -msgid "could not open file \"%s\" for writing: %m" -msgstr "为了写入, 无法打开文件 \"%s\": %m" +#: utils/adt/geo_ops.c:3161 +msgid "function \"close_lb\" not implemented" +msgstr "函数 \"close_lb\" 没有实现" -#: commands/copy.c:1286 commands/copy.c:1781 -#, c-format -msgid "\"%s\" is a directory" -msgstr "\"%s\" 是一个目录" +#: utils/adt/geo_ops.c:3450 +msgid "cannot create bounding box for empty polygon" +msgstr "无法为空多边形创建 bounding box" -#: commands/copy.c:1572 +#: utils/adt/geo_ops.c:3474 utils/adt/geo_ops.c:3486 #, c-format -msgid "COPY %s, line %d, column %s" -msgstr "COPY %s, 行 %d, 列 %s" +msgid "invalid input syntax for type polygon: \"%s\"" +msgstr "无效的 polygon 类型输入语法: \"%s\"" -#: commands/copy.c:1576 commands/copy.c:1621 -#, c-format -msgid "COPY %s, line %d" -msgstr "COPY %s, 行 %d" +#: utils/adt/geo_ops.c:3526 +msgid "invalid number of points in external \"polygon\" value" +msgstr "在外部\"polygon\" 值中的点数量无效." -#: commands/copy.c:1587 -#, c-format -msgid "COPY %s, line %d, column %s: \"%s\"" -msgstr "COPY %s, 行 %d, 列 %s: \"%s\"" +#: utils/adt/geo_ops.c:4049 +msgid "function \"poly_distance\" not implemented" +msgstr "函数 \"poly_distance\" 没有实现" -#: commands/copy.c:1595 -#, c-format -msgid "COPY %s, line %d, column %s: null input" -msgstr "COPY %s, 行 %d, 列 %s: 空的输入" +#: utils/adt/geo_ops.c:4363 +msgid "function \"path_center\" not implemented" +msgstr "函数 \"path_center\" 没有实现" -#: commands/copy.c:1607 -#, c-format -msgid "COPY %s, line %d: \"%s\"" -msgstr "COPY %s, 行 %d: \"%s\"" +#: utils/adt/geo_ops.c:4380 +msgid "open path cannot be converted to polygon" +msgstr "打开的路径不能转换为多态型" -#: commands/copy.c:1709 +#: 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 "cannot copy to view \"%s\"" -msgstr "不可以拷贝到视图 \"%s\"" +msgid "invalid input syntax for type circle: \"%s\"" +msgstr "无效的 circle 类型输入语法: \"%s\"" + +#: 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:4637 +msgid "invalid radius in external \"circle\" value" +msgstr "在外部\"circle\" 值中的半径无效" + +#: utils/adt/geo_ops.c:5158 +msgid "cannot convert circle with radius zero to polygon" +msgstr "无法将半径为0的圆转换为多边类型" + +#: utils/adt/geo_ops.c:5163 +msgid "must request at least 2 points" +msgstr "必须要求至少两个点." -#: commands/copy.c:1714 +#: utils/adt/geo_ops.c:5207 utils/adt/geo_ops.c:5230 +msgid "cannot convert empty polygon to circle" +msgstr "无法转换空的多边形到圆形" + +#: utils/adt/varchar.c:48 utils/adt/varbit.c:56 #, c-format -msgid "cannot copy to sequence \"%s\"" -msgstr "不可以拷贝到序列 \"%s\"" +msgid "length for type %s must be at least 1" +msgstr "类型 %s 的长度至少为 1" -#: commands/copy.c:1719 +#: utils/adt/varchar.c:52 utils/adt/varbit.c:61 #, c-format -msgid "cannot copy to non-table relation \"%s\"" -msgstr "不可以拷贝到非表关系 \"%s\"" +msgid "length for type %s cannot exceed %d" +msgstr "类型 %s 的长度不能超过 %d" -#: commands/copy.c:1774 utils/adt/genfile.c:106 +#: utils/adt/varchar.c:152 utils/adt/varchar.c:305 #, c-format -msgid "could not open file \"%s\" for reading: %m" -msgstr "为了读取, 无法打开文件 \"%s\": %m" +msgid "value too long for type character(%d)" +msgstr "对于字符类型来说这个值太长了(%d)" -#: commands/copy.c:1887 -msgid "COPY file signature not recognized" -msgstr "文件签字不被认可" +#: utils/adt/varchar.c:467 utils/adt/varchar.c:588 +#, c-format +msgid "value too long for type character varying(%d)" +msgstr "对于可变字符类型来说,值太长了(%d)" -#: commands/copy.c:1892 -msgid "invalid COPY file header (missing flags)" -msgstr "无效的 COPY 文件头 (缺少标志)" +#: 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 "无效的整数类型输入语法: \"%s\"" -#: commands/copy.c:1898 -msgid "unrecognized critical flags in COPY file header" -msgstr "在 COPY 文件头有不认可的危险标志" +#: utils/adt/int8.c:114 +#, c-format +msgid "value \"%s\" is out of range for type bigint" +msgstr "值 \"%s\" 超出 bigint 类型范围" -#: commands/copy.c:1904 -msgid "invalid COPY file header (missing length)" -msgstr "无效的 COPY 文件头 (缺少长度)" +#: 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/varbit.c:1583 utils/adt/numeric.c:2306 +msgid "bigint out of range" +msgstr "bigint 超出范围" -#: commands/copy.c:1911 -msgid "invalid COPY file header (wrong length)" -msgstr "无效的 COPY 文件头 (错误长度)" +#: utils/adt/int8.c:1366 +msgid "OID out of range" +msgstr "OID 超出范围" -#: commands/copy.c:2002 -msgid "missing data for OID column" -msgstr "OID列丢失数据" +#: utils/adt/float.c:54 +msgid "value out of range: overflow" +msgstr "值超出范围: 上溢" -#: commands/copy.c:2008 -msgid "null OID in COPY data" -msgstr "在 COPY 数据中没有 OID" +#: utils/adt/float.c:59 +msgid "value out of range: underflow" +msgstr "值超出范围: 下溢" -#: commands/copy.c:2018 commands/copy.c:2090 -msgid "invalid OID in COPY data" -msgstr "在 COPY 数据中无效的 OID" +#: 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 "无效的实数类型输入语法: \"%s\"" -#: commands/copy.c:2033 +#: utils/adt/float.c:242 #, c-format -msgid "missing data for column \"%s\"" -msgstr "字段 \"%s\" 缺少数据" +msgid "\"%s\" is out of range for type real" +msgstr "\"%s\" 超出实数类型的范围" -#: commands/copy.c:2074 +#: 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 "row field count is %d, expected %d" -msgstr "元组字段计数是 %d, 期望计数是 %d" +msgid "invalid input syntax for type double precision: \"%s\"" +msgstr "无效的双精度类型输入语法: \"%s\"" -#: commands/copy.c:2217 utils/misc/guc.c:7101 utils/init/miscinit.c:1014 +#: utils/adt/float.c:435 #, c-format -msgid "could not read from file \"%s\": %m" -msgstr "无法读取文件 \"%s\": %m" +msgid "\"%s\" is out of range for type double precision" +msgstr "\"%s\" 超出双精度类型的范围" -#: commands/copy.c:2494 commands/copy.c:2511 -msgid "literal carriage return found in data" -msgstr "在数据中找到了文字的回车换行符" +#: utils/adt/float.c:1303 utils/adt/numeric.c:5183 +msgid "cannot take square root of a negative number" +msgstr "无法为负数做平方根" -#: commands/copy.c:2495 commands/copy.c:2512 -msgid "unquoted carriage return found in data" -msgstr "在数据中找到了未用引号引起来的回车换行符" +#: utils/adt/float.c:1345 utils/adt/numeric.c:2166 +msgid "zero raised to a negative power is undefined" +msgstr "被提升到负乘方的最低点没有定义." -#: commands/copy.c:2497 commands/copy.c:2514 -msgid "Use \"\\r\" to represent carriage return." -msgstr "使用\"\\r\"来代表换行回车" +#: 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 "被升为非整数的平方的负数产生了一个复杂结果." -#: commands/copy.c:2498 commands/copy.c:2515 -msgid "Use quoted CSV field to represent carriage return." -msgstr "使用以引号引起来的CSV字段代表换行回车." +#: utils/adt/float.c:1415 utils/adt/float.c:1445 utils/adt/numeric.c:5401 +msgid "cannot take logarithm of zero" +msgstr "无法取零的对数" -#: commands/copy.c:2527 -msgid "literal newline found in data" -msgstr "在数据中找到了文字形式的新行" +#: utils/adt/float.c:1419 utils/adt/float.c:1449 utils/adt/numeric.c:5405 +msgid "cannot take logarithm of a negative number" +msgstr "无法取负数的对数" -#: commands/copy.c:2528 -msgid "unquoted newline found in data" -msgstr "在数据中找到了未用引号引起来的新行" +#: 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 "输入超出范围" -#: commands/copy.c:2530 -msgid "Use \"\\n\" to represent newline." -msgstr "使用 \"\\n\" 表示新行." +#: utils/adt/float.c:2687 utils/adt/numeric.c:1171 +msgid "count must be greater than zero" +msgstr "总数必须大于零" -#: commands/copy.c:2531 -msgid "Use quoted CSV field to represent newline." -msgstr "使用用引号因起来的CSV字段来表示新行." +#: utils/adt/float.c:2692 utils/adt/numeric.c:1178 +msgid "operand, lower bound and upper bound cannot be NaN" +msgstr "操作数,下限和上限不能是NaN" -#: commands/copy.c:2577 commands/copy.c:2613 -msgid "end-of-copy marker does not match previous newline style" -msgstr "end-of-copy标示不匹配先前的新数据行的风格." +#: utils/adt/float.c:2698 +msgid "lower and upper bounds must be finite" +msgstr "地位和高位边界必须是有限的." -#: commands/copy.c:2586 commands/copy.c:2602 -msgid "end-of-copy marker corrupt" -msgstr "copy命令结束标记损坏" +#: utils/adt/float.c:2736 utils/adt/numeric.c:1191 +msgid "lower bound cannot equal upper bound" +msgstr "下限不能等于上限" -#: commands/copy.c:2729 commands/copy.c:2764 commands/copy.c:2944 -#: commands/copy.c:2979 -msgid "extra data after last expected column" -msgstr "最后期望字段后有额外数据" +#: utils/adt/formatting.c:492 +msgid "invalid format specification for an interval value" +msgstr "间隔值的格式定义无效" -#: commands/copy.c:3026 -msgid "unterminated CSV quoted field" -msgstr "CSV 引号域没有结束" +#: utils/adt/formatting.c:493 +msgid "Intervals are not tied to specific calendar dates." +msgstr "间隔没有与特定的日历的日期相联系" -#: commands/copy.c:3103 commands/copy.c:3122 -msgid "unexpected EOF in COPY data" -msgstr "在 COPY 数据中意外的 EOF" +#: utils/adt/formatting.c:1060 +msgid "\"EEEE\" must be the last pattern used" +msgstr "\"EEEE\"必须是所使用的最后一个模式" -#: commands/copy.c:3112 -msgid "invalid field size" -msgstr "无效字段尺寸" +#: utils/adt/formatting.c:1068 +msgid "\"9\" must be ahead of \"PR\"" +msgstr "\"9\" 必须在 \"PR\" 之前" -#: commands/copy.c:3135 -msgid "incorrect binary data format" -msgstr "不正确的二进制数据格式" +#: utils/adt/formatting.c:1084 +msgid "\"0\" must be ahead of \"PR\"" +msgstr "\"0\" 必须在 \"PR\" 之前" -#: commands/copy.c:3446 commands/indexcmds.c:908 commands/tablecmds.c:1260 -#: commands/tablecmds.c:2065 parser/parse_expr.c:758 -#: utils/adt/tsvector_op.c:1347 -#, c-format -msgid "column \"%s\" does not exist" -msgstr "字段 \"%s\" 不存在" +#: utils/adt/formatting.c:1110 +msgid "multiple decimal points" +msgstr "多个小数点" -#: commands/copy.c:3453 commands/tablecmds.c:1286 commands/trigger.c:536 -#: parser/parse_target.c:824 parser/parse_target.c:835 -#, c-format -msgid "column \"%s\" specified more than once" -msgstr "字段 \"%s\" 被指定多次" +#: utils/adt/formatting.c:1114 utils/adt/formatting.c:1197 +msgid "cannot use \"V\" and decimal point together" +msgstr "不能 \"V\" 和小数点一起使用" -#: commands/dbcommands.c:201 -msgid "LOCATION is not supported anymore" -msgstr "不再支持 LOCATION" +#: utils/adt/formatting.c:1126 +msgid "cannot use \"S\" twice" +msgstr "无法两次使用 \"S\" " -#: commands/dbcommands.c:202 -msgid "Consider using tablespaces instead." -msgstr "考虑使用表空间代替." +#: utils/adt/formatting.c:1130 +msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" +msgstr "\"S\" 不可以和 \"PL\"/\"MI\"/\"SG\"/\"PR\" 一起使用" -#: commands/dbcommands.c:225 utils/adt/ascii.c:144 -#, c-format -msgid "%d is not a valid encoding code" -msgstr "%d 是一个无效编码" +#: utils/adt/formatting.c:1150 +msgid "cannot use \"S\" and \"MI\" together" +msgstr "\"S\" 不可以和 \"MI\" 一起使用" -#: commands/dbcommands.c:235 utils/adt/ascii.c:126 -#, c-format -msgid "%s is not a valid encoding name" -msgstr "%s 是一个无效编码名字" +#: utils/adt/formatting.c:1160 +msgid "cannot use \"S\" and \"PL\" together" +msgstr "\"S\" 不可以和 \"PL\" 一起使用" -# fe-connect.c:2558 -#: commands/dbcommands.c:253 commands/dbcommands.c:1347 commands/user.c:255 -#: commands/user.c:562 -#, c-format -msgid "invalid connection limit: %d" -msgstr "无效的连接限制:%d" +#: utils/adt/formatting.c:1170 +msgid "cannot use \"S\" and \"SG\" together" +msgstr "\"S\" 不可以和 \"SG\" 一起使用" -#: commands/dbcommands.c:272 -msgid "permission denied to create database" -msgstr "创建数据库权限不够" +#: utils/adt/formatting.c:1179 +msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" +msgstr "\"PR\" 不可以和 \"S\"/\"PL\"/\"MI\"/\"SG\" 一起使用" -#: commands/dbcommands.c:295 -#, c-format -msgid "template database \"%s\" does not exist" -msgstr "template 数据库 \"%s\" 不存在" +#: utils/adt/formatting.c:1205 +msgid "cannot use \"EEEE\" twice" +msgstr "无法两次使用 \"EEEE\"" -#: commands/dbcommands.c:307 -#, c-format -msgid "permission denied to copy database \"%s\"" -msgstr "拷贝数据库 \"%s\" 权限不够" +#: utils/adt/formatting.c:1211 +msgid "\"EEEE\" is incompatible with other formats" +msgstr "\"EEEE\"与其它格式不兼容" -#: commands/dbcommands.c:323 -#, c-format -msgid "invalid server encoding %d" -msgstr "无效服务器编码 %d" +#: utils/adt/formatting.c:1212 +msgid "" +"\"EEEE\" may only be used together with digit and decimal point patterns." +msgstr "\"EEEE\"只能与数字和小数模式一同使用" -#: commands/dbcommands.c:329 commands/dbcommands.c:333 +#: utils/adt/formatting.c:1412 #, c-format -msgid "invalid locale name %s" -msgstr "无效的语言环境名称 %s" +msgid "\"%s\" is not a number" +msgstr "\"%s\" 不是一个数字" -#: commands/dbcommands.c:369 commands/dbcommands.c:384 -#, c-format -msgid "encoding %s does not match locale %s" -msgstr "编码 \"%s\"与语言环境%s不匹配" +#: utils/adt/formatting.c:1519 utils/adt/formatting.c:1569 +msgid "could not determine which collation to use for lower() function" +msgstr "无法确定函数lower()使用哪个排序规则" -#: commands/dbcommands.c:372 -#, c-format -msgid "The chosen LC_CTYPE setting requires encoding %s." -msgstr "所选择的LC_CTYPE设置需要编码%s" +#: utils/adt/formatting.c:1640 utils/adt/formatting.c:1690 +msgid "could not determine which collation to use for upper() function" +msgstr "无法确定函数upper()使用哪个排序规则" -#: commands/dbcommands.c:387 -#, c-format -msgid "The chosen LC_COLLATE setting requires encoding %s." -msgstr "所选择的 LC_COLLATE设置需要编码%s" +#: utils/adt/formatting.c:1773 utils/adt/formatting.c:1835 +msgid "could not determine which collation to use for initcap() function" +msgstr "无法确定函数initcap()使用哪个排序规则" -#: commands/dbcommands.c:405 -#, c-format -msgid "" -"new encoding (%s) is incompatible with the encoding of the template database " -"(%s)" -msgstr "新的编码(%s)与模板数据库(%s)的编码不兼容" +# fe-connect.c:2558 +#: utils/adt/formatting.c:2017 +msgid "invalid combination of date conventions" +msgstr "无效的日期约定格式组合" -#: commands/dbcommands.c:408 +#: utils/adt/formatting.c:2018 msgid "" -"Use the same encoding as in the template database, or use template0 as " -"template." -msgstr "在模版数据库中使用同一编码,或者使用template0作为模版." +"Do not mix Gregorian and ISO week date conventions in a formatting template." +msgstr "在格式模板中不要混用Gregorian和ISO周日期转换. " -#: commands/dbcommands.c:413 +#: utils/adt/formatting.c:2035 #, c-format -msgid "" -"new collation (%s) is incompatible with the collation of the template " -"database (%s)" -msgstr "新的排序规则(%s)与模版数据库(%s)中的排序规则不兼容" +msgid "conflicting values for \"%s\" field in formatting string" +msgstr "在格式化字符串中对于\"%s\"字段的值冲突" -#: commands/dbcommands.c:415 -msgid "" -"Use the same collation as in the template database, or use template0 as " -"template." -msgstr "在模版数据库中使用同一排序规则,或者使用template0作为模版." +#: utils/adt/formatting.c:2037 +msgid "This value contradicts a previous setting for the same field type." +msgstr "这个值与先前设定的同一字段类型相抵触" -#: commands/dbcommands.c:420 +#: utils/adt/formatting.c:2098 #, 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不兼容." +msgid "source string too short for \"%s\" formatting field" +msgstr "对于\"%s\" 格式化字段的源字符串太短" -#: commands/dbcommands.c:422 -msgid "" -"Use the same LC_CTYPE as in the template database, or use template0 as " -"template." -msgstr "在模版数据库中使用同一LC_CTYPE,或者使用template0作为模版." +#: utils/adt/formatting.c:2100 +#, c-format +msgid "Field requires %d characters, but only %d remain." +msgstr "字段要求有%d个字符,但是这里只有%d个" -#: commands/dbcommands.c:449 commands/dbcommands.c:1054 -msgid "pg_global cannot be used as default tablespace" -msgstr "pg_global不能作为缺省表空间使用" +#: 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\"修改器." -#: commands/dbcommands.c:475 +#: utils/adt/formatting.c:2113 utils/adt/formatting.c:2126 +#: utils/adt/formatting.c:2256 #, c-format -msgid "cannot assign new default tablespace \"%s\"" -msgstr "无法分配新的默认表空间 \"%s\"" +msgid "invalid value \"%s\" for \"%s\"" +msgstr "\"%s\"的值\"%s\"无效" -#: commands/dbcommands.c:477 +#: utils/adt/formatting.c:2115 #, c-format -msgid "" -"There is a conflict because database \"%s\" already has some tables in this " -"tablespace." -msgstr "此处有冲突, 因为数据库 \"%s\" 已经有一些表在此表空间中." +msgid "Field requires %d characters, but only %d could be parsed." +msgstr "字段要求%d个字符, 但是只能解析%d个字符." -#: commands/dbcommands.c:497 commands/dbcommands.c:925 -#, c-format -msgid "database \"%s\" already exists" -msgstr "数据库 \"%s\" 已经存在" +#: utils/adt/formatting.c:2128 +msgid "Value must be an integer." +msgstr "值必须是一个整数" -#: commands/dbcommands.c:511 +#: utils/adt/formatting.c:2133 #, c-format -msgid "source database \"%s\" is being accessed by other users" -msgstr "其他用户正在使用源数据库 \"%s\"" +msgid "value for \"%s\" in source string is out of range" +msgstr "在源字符串中\"%s\"的值超出了范围" -#: commands/dbcommands.c:767 +#: utils/adt/formatting.c:2135 #, c-format -msgid "database \"%s\" does not exist, skipping" -msgstr "数据库 \"%s\" 不存在,跳过" +msgid "Value must be in the range %d to %d." +msgstr "值必须是在范围%d到%d之间." -#: commands/dbcommands.c:788 -msgid "cannot drop a template database" -msgstr "无法删除模板数据库" +#: utils/adt/formatting.c:2258 +msgid "The given value did not match any of the allowed values for this field." +msgstr "给定的值与这个字段所允许的值不匹配." -#: commands/dbcommands.c:794 -msgid "cannot drop the currently open database" -msgstr "无法删除当前使用的数据库" +#: utils/adt/formatting.c:2814 +msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date" +msgstr "在to_date中不支持\"TZ\"/\"tz\"的格式模式" -#: commands/dbcommands.c:805 commands/dbcommands.c:947 -#: commands/dbcommands.c:1076 -#, c-format -msgid "database \"%s\" is being accessed by other users" -msgstr "其他用户正在使用数据库 \"%s\"" +#: utils/adt/formatting.c:2918 +msgid "invalid input string for \"Y,YYY\"" +msgstr "对于\"Y,YYY\", 所输入的字符串无效" -#: commands/dbcommands.c:916 -msgid "permission denied to rename database" -msgstr "重命名数据库权限不够" +#: utils/adt/formatting.c:3309 utils/adt/date.c:167 +#, c-format +msgid "date out of range: \"%s\"" +msgstr "时间戳超出范围: \"%s\"" -#: commands/dbcommands.c:936 -msgid "current database cannot be renamed" -msgstr "不能对当前数据库进行改名" +#: utils/adt/formatting.c:3441 +#, c-format +msgid "hour \"%d\" is invalid for the 12-hour clock" +msgstr "对于12小时制的钟表,小时数\"%d\"无效" -#: commands/dbcommands.c:1028 -msgid "cannot change the tablespace of the currently open database" -msgstr "无法改变当前已打开数据库的表空间" +#: utils/adt/formatting.c:3443 +msgid "Use the 24-hour clock, or give an hour between 1 and 12." +msgstr "使用24小时制的钟表,或者将小时数限定在1到12之间." -#: commands/dbcommands.c:1116 +#: utils/adt/formatting.c:3481 #, c-format -msgid "some relations of database \"%s\" are already in tablespace \"%s\"" -msgstr "在表空间 \"%2$s\"中已经存储了数据库\"%1$s\"中的一些关系了" +msgid "inconsistent use of year %04d and \"BC\"" +msgstr "年份%04d和\"BC\"的使用不一致" -#: commands/dbcommands.c:1118 -msgid "" -"You must move them back to the database's default tablespace before using " -"this command." -msgstr "在使用这条命令前,您必须把它们移动回数据库的缺省表空间" +#: utils/adt/formatting.c:3528 +msgid "cannot calculate day of year without year information" +msgstr "没有年份信息无法计算年的天数" -#: commands/dbcommands.c:1246 commands/dbcommands.c:1719 -#: commands/dbcommands.c:1913 commands/dbcommands.c:1961 -#: commands/tablespace.c:579 -#, c-format -msgid "some useless files may be left behind in old database directory \"%s\"" -msgstr "在原先的数据库目录\"%s\"可能留下了一些无用的文件" +#: utils/adt/formatting.c:4390 +msgid "\"EEEE\" not supported for input" +msgstr "不支持为输入使用\"EEEE\"" -#: commands/dbcommands.c:1495 -msgid "permission denied to change owner of database" -msgstr "改变数据库属主的权限不够" +#: utils/adt/formatting.c:4402 +msgid "\"RN\" not supported for input" +msgstr "不支持为输入使用\"RN\"" -#: commands/dbcommands.c:1807 +#: utils/adt/date.c:71 #, c-format -msgid "" -"There are %d other session(s) and %d prepared transaction(s) using the " -"database." -msgstr "这里有%d个其它的会话和%d个已准备好的事务正在使用数据库." +msgid "TIME(%d)%s precision must not be negative" +msgstr "TIME(%d)%s 精确度不能为负数" -#: commands/dbcommands.c:1810 +#: utils/adt/date.c:77 #, c-format -msgid "There are %d other session(s) using the database." -msgstr "这里有%d个其它会话正在使用数据库." +msgid "TIME(%d)%s precision reduced to maximum allowed, %d" +msgstr "TIME(%d)%s精度减少到最大允许值,%d" -#: commands/dbcommands.c:1813 -#, c-format -msgid "There are %d prepared transaction(s) using the database." -msgstr "这里有%d个已准备好的事务正在使用数据库." +#: 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 "日期/时间值 \"current\" 不再被支持了" -#: 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 需要一个参数" +#: utils/adt/date.c:359 +msgid "cannot subtract infinite dates" +msgstr "无法减去无限大的日期" -#: 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 需要一个数字值" +#: utils/adt/date.c:416 utils/adt/date.c:453 +msgid "date out of range for timestamp" +msgstr "日期超出了时间戳的范围" -#: commands/define.c:175 -#, c-format -msgid "%s requires a Boolean value" -msgstr "%s 需要一个布尔值" +#: utils/adt/date.c:986 +msgid "cannot convert reserved abstime value to date" +msgstr "不能转换保留 abstime 值为 date" -#: commands/define.c:236 +#: 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:1793 utils/adt/date.c:1810 #, c-format -msgid "argument of %s must be a name" -msgstr "%s 的参数必须是一个名字" +msgid "\"time\" units \"%s\" not recognized" +msgstr "\"time\" 单位 \"%s\" 不被认可" -#: commands/define.c:266 +#: utils/adt/date.c:1931 +msgid "time zone displacement out of range" +msgstr "时间区域置换超出范围" + +#: utils/adt/date.c:2556 utils/adt/date.c:2573 #, c-format -msgid "argument of %s must be a type name" -msgstr "%s 的参数必需是一个类型名" +msgid "\"time with time zone\" units \"%s\" not recognized" +msgstr "\"time with time zone\" 单位 \"%s\" 不被认可" -#: commands/define.c:291 +#: utils/adt/date.c:2671 #, c-format -msgid "%s requires an integer value" -msgstr "%s 需要一个整数值" +msgid "\"interval\" time zone \"%s\" not valid" +msgstr "\"interval\" 时间区域 \"%s\" 无效" -#: commands/define.c:312 +#: utils/adt/varbit.c:166 utils/adt/varbit.c:309 utils/adt/varbit.c:366 #, c-format -msgid "invalid argument for %s: \"%s\"" -msgstr "%s 的无效参数: \"%s\"" +msgid "bit string length %d does not match type bit(%d)" +msgstr "bit字符串的长度(%d)与bit类型(%d)不匹配." -#: commands/explain.c:149 +#: utils/adt/varbit.c:188 utils/adt/varbit.c:490 #, c-format -msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\"" -msgstr "用于EXPLAIN选项\"%s\"的值无效:\"%s\"" +msgid "\"%c\" is not a valid binary digit" +msgstr "\"%c\" 不是一个有效的二进制数" -#: commands/explain.c:155 +#: utils/adt/varbit.c:213 utils/adt/varbit.c:515 #, c-format -msgid "unrecognized EXPLAIN option \"%s\"" -msgstr "无法识别的EXPLAIN选项\"%s\"" +msgid "\"%c\" is not a valid hexadecimal digit" +msgstr "\"%c\" 不是一个有效的十六进制数" -#: commands/explain.c:162 -msgid "EXPLAIN option BUFFERS requires ANALYZE" -msgstr "在EXPLAIN命令中BUFFERS和ANALYZE选项需要一起使用" +#: utils/adt/varbit.c:300 utils/adt/varbit.c:603 +msgid "invalid length in external bit string" +msgstr "无效的外部位串长度" -#: commands/foreigncmds.c:132 commands/foreigncmds.c:141 +#: utils/adt/varbit.c:468 utils/adt/varbit.c:612 utils/adt/varbit.c:674 #, c-format -msgid "option \"%s\" not found" -msgstr "没有找到选项 \"%s\" " +msgid "bit string too long for type bit varying(%d)" +msgstr "bit字符串对于可变bit类型(%d)来说太长了." + +#: utils/adt/varbit.c:1164 +msgid "cannot AND bit strings of different sizes" +msgstr "无法为不同大小的字符串进行与 (AND) 位运算" + +#: utils/adt/varbit.c:1206 +msgid "cannot OR bit strings of different sizes" +msgstr "无法为不同大小的字符串进行或 (OR) 位运算" + +#: utils/adt/varbit.c:1253 +msgid "cannot XOR bit strings of different sizes" +msgstr "无法为不同大小的字符串进行异或 (XOR) 位运算" -#: commands/foreigncmds.c:151 +#: utils/adt/varbit.c:1731 utils/adt/varbit.c:1789 #, c-format -msgid "option \"%s\" provided more than once" -msgstr "选项 \"%s\" 被提供了多次" +msgid "bit index %d out of valid range (0..%d)" +msgstr "比特索引 %d 超出有效范围 (0..%d)" -#: commands/foreigncmds.c:209 commands/foreigncmds.c:217 +#: utils/adt/tsvector.c:215 #, c-format -msgid "permission denied to change owner of foreign-data wrapper \"%s\"" -msgstr "修改外部数据封装器的 \"%s\" 的属主权限不够" +msgid "word is too long (%ld bytes, max %ld bytes)" +msgstr "词太长了(%ld字节, 最大 %ld 字节)" -#: commands/foreigncmds.c:211 -msgid "Must be superuser to change owner of a foreign-data wrapper." -msgstr "只有超级用户可以更改外部数据封装器的属主" +#: utils/adt/tsvector.c:222 +#, c-format +msgid "string is too long for tsvector (%ld bytes, max %ld bytes)" +msgstr "字符串对于tsvector来说太长了(当前 %ld字节, 最大允许值是%ld字节)" -#: commands/foreigncmds.c:219 -msgid "The owner of a foreign-data wrapper must be a superuser." -msgstr "外部数据封装器的属主必须是超级用户." +#: utils/adt/tsvector.c:272 utils/adt/tsvector_op.c:530 tsearch/to_tsany.c:165 +#, c-format +msgid "string is too long for tsvector (%d bytes, max %d bytes)" +msgstr "字符串对于tsvector来说太长了(当前 %d字节, 最大允许值是%d字节)" -#: commands/foreigncmds.c:228 commands/foreigncmds.c:452 -#: commands/foreigncmds.c:553 foreign/foreign.c:90 +#: utils/adt/ascii.c:75 #, c-format -msgid "foreign-data wrapper \"%s\" does not exist" -msgstr "外部数据封装器 \"%s\" 不存在" +msgid "encoding conversion from %s to ASCII not supported" +msgstr "编码转换不支持从 %s 到 ASCII 的转换" -#: commands/foreigncmds.c:270 commands/foreigncmds.c:723 -#: commands/foreigncmds.c:813 commands/foreigncmds.c:1089 -#: foreign/foreign.c:179 +#: utils/adt/ascii.c:126 commands/dbcommands.c:236 #, c-format -msgid "server \"%s\" does not exist" -msgstr "服务器\"%s\" 不存在" +msgid "%s is not a valid encoding name" +msgstr "%s 是一个无效编码名字" -#: commands/foreigncmds.c:347 +#: utils/adt/ascii.c:144 commands/dbcommands.c:226 #, c-format -msgid "permission denied to create foreign-data wrapper \"%s\"" -msgstr "创建外部数据封装器\"%s\"失败" +msgid "%d is not a valid encoding code" +msgstr "%d 是一个无效编码" -#: commands/foreigncmds.c:349 -msgid "Must be superuser to create a foreign-data wrapper." -msgstr "只有超级用户能创建外部数据封装器" +#: utils/adt/dbsize.c:65 utils/adt/dbsize.c:211 utils/adt/dbsize.c:279 +#: utils/adt/genfile.c:107 utils/adt/genfile.c:279 access/transam/xlog.c:2932 +#: access/transam/xlog.c:3097 access/transam/xlog.c:9143 +#: access/transam/xlog.c:9319 storage/file/copydir.c:86 +#: storage/file/copydir.c:125 +#, c-format +msgid "could not stat file \"%s\": %m" +msgstr "无法取文件 \"%s\" 的状态: %m" -#: commands/foreigncmds.c:360 +#: utils/adt/dbsize.c:105 utils/adt/dbsize.c:189 #, c-format -msgid "foreign-data wrapper \"%s\" already exists" -msgstr "外部数据封装器\"%s\"已经存在" +msgid "could not open tablespace directory \"%s\": %m" +msgstr "无法打开表空间目录 \"%s\": %m" -#: commands/foreigncmds.c:442 +#: utils/adt/dbsize.c:127 catalog/aclchk.c:3493 catalog/aclchk.c:4610 #, c-format -msgid "permission denied to alter foreign-data wrapper \"%s\"" -msgstr "不允许修改外部数据封装器\"%s\"" +msgid "database with OID %u does not exist" +msgstr "OID 为 %u 的数据库不存在" -#: commands/foreigncmds.c:444 -msgid "Must be superuser to alter a foreign-data wrapper." -msgstr "只有超级用户才能修改一个外部数据封装器." +#: utils/adt/cash.c:237 +#, c-format +msgid "invalid input syntax for type money: \"%s\"" +msgstr "无效的货币类型输入语法: \"%s\"" -#: commands/foreigncmds.c:472 -msgid "" -"changing the foreign-data wrapper validator can cause the options for " -"dependent objects to become invalid" -msgstr "改变外部数据封装器的验证能够使所它依赖对象的选项变为无效" +#: utils/adt/tsrank.c:404 +msgid "array of weight must be one-dimensional" +msgstr "权重数组必须为空或者一维数组" -#: commands/foreigncmds.c:544 -#, c-format -msgid "permission denied to drop foreign-data wrapper \"%s\"" -msgstr "删除外部数据封装器 \"%s\" 的权限不够" +#: utils/adt/tsrank.c:409 +msgid "array of weight is too short" +msgstr "权重数组太短了." -#: commands/foreigncmds.c:546 -msgid "Must be superuser to drop a foreign-data wrapper." -msgstr "只有超级用户可以删除外部数据封装器" +#: utils/adt/tsrank.c:414 +msgid "array of weight must not contain nulls" +msgstr "权重数组不能包含空值" -#: commands/foreigncmds.c:558 -#, c-format -msgid "foreign-data wrapper \"%s\" does not exist, skipping" -msgstr "外部数据封装器\"%s\" 不存在,跳过" +#: utils/adt/tsrank.c:423 utils/adt/tsrank.c:749 +msgid "weight out of range" +msgstr "权重 超出范围" -#: commands/foreigncmds.c:625 -#, c-format -msgid "server \"%s\" already exists" -msgstr "服务器 \"%s\" 已经存在" +#: utils/adt/name.c:91 utils/adt/acl.c:166 +msgid "identifier too long" +msgstr "标识符太长" -#: commands/foreigncmds.c:817 +#: utils/adt/name.c:92 utils/adt/acl.c:167 #, c-format -msgid "server \"%s\" does not exist, skipping" -msgstr "服务器 \"%s\"不存在,跳过 " +msgid "Identifier must be less than %d characters." +msgstr "标识符必须小于 %d 个字符." -#: commands/foreigncmds.c:920 +#. translator: first %s is inet or cidr +#: utils/adt/network.c:107 utils/adt/datetime.c:3564 #, c-format -msgid "user mapping \"%s\" already exists for server %s" -msgstr "对于服务器%2$s,用户映射\"%1$s\"已存在 " +msgid "invalid input syntax for type %s: \"%s\"" +msgstr "无效的类型 %s 输入语法: \"%s\"" -#: commands/foreigncmds.c:998 commands/foreigncmds.c:1105 +#: utils/adt/network.c:118 #, c-format -msgid "user mapping \"%s\" does not exist for the server" -msgstr "对于服务器来说,用户映射\"%s\"不存在" +msgid "invalid cidr value: \"%s\"" +msgstr "无效的 cidr 值: \"%s\"" -#: commands/foreigncmds.c:1092 -msgid "server does not exist, skipping" -msgstr "服务器不存在,跳过" +#: utils/adt/network.c:119 utils/adt/network.c:249 +msgid "Value has bits set to right of mask." +msgstr "这个值带有的bit集合,在掩码的右边." -#: commands/foreigncmds.c:1110 +#: utils/adt/network.c:160 utils/adt/network.c:614 utils/adt/network.c:639 +#: utils/adt/network.c:664 #, c-format -msgid "user mapping \"%s\" does not exist for the server, skipping" -msgstr "用户映射\"%s\"对于服务器来说不存在,跳过" +msgid "could not format inet value: %m" +msgstr "无法格式化 inet 值: %m" -#: commands/functioncmds.c:98 +#. translator: %s is inet or cidr +#: utils/adt/network.c:217 #, c-format -msgid "SQL function cannot return shell type %s" -msgstr "SQL 函数不能返回 shell 类型 %s" +msgid "invalid address family in external \"%s\" value" +msgstr "在外部\"%s\"值中的地址族无效" -#: commands/functioncmds.c:103 +#. translator: %s is inet or cidr +#: utils/adt/network.c:224 #, c-format -msgid "return type %s is only a shell" -msgstr "返回类型 %s 只是一个 shell" +msgid "invalid bits in external \"%s\" value" +msgstr "在外部\"%s\"值中的bit无效" -#: commands/functioncmds.c:126 commands/tablecmds.c:216 -#: commands/typecmds.c:650 commands/typecmds.c:2572 parser/parse_func.c:1485 -#: parser/parse_type.c:196 utils/adt/regproc.c:973 +#. translator: %s is inet or cidr +#: utils/adt/network.c:233 #, c-format -msgid "type \"%s\" does not exist" -msgstr "类型 \"%s\" 不存在" +msgid "invalid length in external \"%s\" value" +msgstr "在外部\"%s\"值中的长度无效" + +#: utils/adt/network.c:248 +msgid "invalid external \"cidr\" value" +msgstr "无效的外部 \"cidr\" 值" -#: commands/functioncmds.c:132 parser/parse_type.c:261 +#: utils/adt/network.c:370 utils/adt/network.c:397 #, c-format -msgid "type modifier cannot be specified for shell type \"%s\"" -msgstr "不能为shell类型\"%s\"指定类型修改器" +msgid "invalid mask length: %d" +msgstr "无效掩码长度: %d" -#: commands/functioncmds.c:138 +#: utils/adt/network.c:682 #, c-format -msgid "type \"%s\" is not yet defined" -msgstr "类型 \"%s\" 仍没被定义" +msgid "could not format cidr value: %m" +msgstr "无法格式化cidr值: %m" -#: commands/functioncmds.c:139 -msgid "Creating a shell type definition." -msgstr "创建一个 shell 类型定义." +#: utils/adt/network.c:1255 +msgid "cannot AND inet values of different sizes" +msgstr "无法为不同大小的inet类型值进行与 (AND) 位运算" + +#: utils/adt/network.c:1287 +msgid "cannot OR inet values of different sizes" +msgstr "无法为不同大小的inet类型值进行或 (OR) 运算" + +#: 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类型值进行减法运算" -#: commands/functioncmds.c:218 +#: utils/adt/mac.c:65 #, c-format -msgid "SQL function cannot accept shell type %s" -msgstr "SQL 函数不能接收 shell 类型 %s" +msgid "invalid input syntax for type macaddr: \"%s\"" +msgstr "无效的 macaddr 类型输入语法: \"%s\"" -#: commands/functioncmds.c:223 +#: utils/adt/mac.c:72 #, c-format -msgid "argument type %s is only a shell" -msgstr "参数类型 %s 只是一个 shell" +msgid "invalid octet value in \"macaddr\" value: \"%s\"" +msgstr "在 \"macaddr\" 值中的无效八位值: \"%s\"" -#: commands/functioncmds.c:233 +#: utils/adt/domains.c:80 #, c-format -msgid "type %s does not exist" -msgstr "类型 %s 不存在" +msgid "type %s is not a domain" +msgstr "类型%s不是一个域" -#: commands/functioncmds.c:241 -msgid "functions cannot accept set arguments" -msgstr "函数不能接收设定参数" +#: utils/adt/domains.c:128 executor/execQual.c:3872 +#, c-format +msgid "domain %s does not allow null values" +msgstr "域 %s 不允许空值" -#: commands/functioncmds.c:250 -msgid "VARIADIC parameter must be the last input parameter" -msgstr "参数VARIADIC必须是最后一个输入参数" +#: utils/adt/domains.c:164 executor/execQual.c:3901 +#, c-format +msgid "value for domain %s violates check constraint \"%s\"" +msgstr "域 %s 的值违反了检查约束 \"%s\"" -#: commands/functioncmds.c:277 -msgid "VARIADIC parameter must be an array" -msgstr "参数VARIADIC必须是一个数组" +#: utils/adt/ruleutils.c:1580 utils/adt/acl.c:2772 commands/tablecmds.c:4524 +#: commands/tablecmds.c:4616 commands/tablecmds.c:4663 +#: commands/tablecmds.c:4759 commands/tablecmds.c:4803 +#: commands/tablecmds.c:4882 commands/tablecmds.c:4966 +#: commands/tablecmds.c:6619 commands/tablecmds.c:6828 commands/analyze.c:343 +#: commands/sequence.c:1443 commands/copy.c:3787 commands/trigger.c:592 +#: catalog/aclchk.c:1428 catalog/objectaddress.c:545 parser/analyze.c:2046 +#: parser/parse_target.c:895 parser/parse_relation.c:2050 +#: parser/parse_relation.c:2107 parser/parse_type.c:117 +#, c-format +msgid "column \"%s\" of relation \"%s\" does not exist" +msgstr "关系 \"%2$s\" 的 \"%1$s\" 字段不存在" -#: commands/functioncmds.c:317 +#: utils/adt/ruleutils.c:1696 commands/functioncmds.c:1008 +#: commands/functioncmds.c:1108 commands/functioncmds.c:1171 +#: commands/functioncmds.c:1322 #, c-format -msgid "parameter name \"%s\" used more than once" -msgstr "多次使用参数名称 \"%s\"" +msgid "\"%s\" is an aggregate function" +msgstr "\"%s\" 是一个聚合函数" -#: commands/functioncmds.c:332 -msgid "only input parameters can have default values" -msgstr "只有输入参数才能有缺省值" +#: utils/adt/ruleutils.c:2429 +#, c-format +msgid "rule \"%s\" has unsupported event type %d" +msgstr "规则 \"%s\" 不支持事件类型 %d" -#: commands/functioncmds.c:344 -msgid "cannot use table references in parameter default value" -msgstr "在参数缺省值中不能使用表引用" +#: utils/adt/ruleutils.c:5885 utils/adt/ruleutils.c:5940 +#: utils/adt/ruleutils.c:5977 utils/adt/regproc.c:635 utils/adt/regproc.c:1485 +msgid "too many arguments" +msgstr "太多参数" -#: commands/functioncmds.c:360 -msgid "cannot use subquery in parameter default value" -msgstr "在参数缺省值中不能使用自查询" +#: utils/adt/pseudotypes.c:94 +msgid "cannot accept a value of type any" +msgstr "无法接受一个 any 类型值" -#: commands/functioncmds.c:364 -msgid "cannot use aggregate function in parameter default value" -msgstr "在参数的缺省值中不能使用聚合函数" +#: utils/adt/pseudotypes.c:107 +msgid "cannot display a value of type any" +msgstr "无法显示一个 any 类型值" -#: commands/functioncmds.c:368 -msgid "cannot use window function in parameter default value" -msgstr "在参数的缺省值中不能使用窗口函数" +#: utils/adt/pseudotypes.c:121 utils/adt/pseudotypes.c:149 +msgid "cannot accept a value of type anyarray" +msgstr "无法接受一个 anyarray 类型值" -#: commands/functioncmds.c:378 -msgid "input parameters after one with a default value must also have defaults" -msgstr "在带有缺省值参数后面的输入参数必须也带有缺省值." +#: utils/adt/pseudotypes.c:174 +msgid "cannot accept a value of type anyenum" +msgstr "无法接受一个anyenum类型值" -#: commands/functioncmds.c:617 -msgid "no function body specified" -msgstr "没有指定函数体" +#: utils/adt/pseudotypes.c:252 +msgid "cannot accept a value of type trigger" +msgstr "无法接受一个 trigger 类型值" -#: commands/functioncmds.c:627 -msgid "no language specified" -msgstr "没有指定语言" +#: utils/adt/pseudotypes.c:265 +msgid "cannot display a value of type trigger" +msgstr "无法显示一个 trigger 类型值" -#: commands/functioncmds.c:648 commands/functioncmds.c:1349 -msgid "COST must be positive" -msgstr "COST必需为正数" +#: utils/adt/pseudotypes.c:279 +msgid "cannot accept a value of type language_handler" +msgstr "无法接受一个 language_handler 类型值" -#: commands/functioncmds.c:656 commands/functioncmds.c:1357 -msgid "ROWS must be positive" -msgstr "ROWS必需为正数" +#: utils/adt/pseudotypes.c:292 +msgid "cannot display a value of type language_handler" +msgstr "无法显示一个 language_handler 类型值" -#: commands/functioncmds.c:695 -#, c-format -msgid "unrecognized function attribute \"%s\" ignored" -msgstr "忽略未认可的函数属性 \"%s\"" +#: utils/adt/pseudotypes.c:306 +msgid "cannot accept a value of type fdw_handler" +msgstr "无法接受一个 fdw_handler 类型值" -#: commands/functioncmds.c:746 -#, c-format -msgid "only one AS item needed for language \"%s\"" -msgstr "对于 \"%s\" 语言只能要求一个 AS 项目" +#: utils/adt/pseudotypes.c:319 +msgid "cannot display a value of type fdw_handler" +msgstr "无法显示一个 fdw_handler 类型值" -#: commands/functioncmds.c:838 commands/functioncmds.c:1992 -msgid "Use CREATE LANGUAGE to load the language into the database." -msgstr "使用CREATE LANGUAGE向数据库加载语言." +#: utils/adt/pseudotypes.c:333 +msgid "cannot accept a value of type internal" +msgstr "无法接受一个 internal 类型值" -#: commands/functioncmds.c:885 -#, c-format -msgid "function result type must be %s because of OUT parameters" -msgstr "因为OUT参数,函数的结果类型必须是%s" +#: utils/adt/pseudotypes.c:346 +msgid "cannot display a value of type internal" +msgstr "无法显示一个 internal 类型值" -#: commands/functioncmds.c:898 -msgid "function result type must be specified" -msgstr "必须指定函数返回结果的类型" +#: utils/adt/pseudotypes.c:360 +msgid "cannot accept a value of type opaque" +msgstr "无法接受一个 opaque 类型值" -#: commands/functioncmds.c:933 commands/functioncmds.c:1361 -msgid "ROWS is not applicable when function does not return a set" -msgstr "当转换函数不返回一个组合时,不适用ROWS" +#: utils/adt/pseudotypes.c:373 +msgid "cannot display a value of type opaque" +msgstr "无法显示一个 opaque 类型值" -#: commands/functioncmds.c:985 -#, c-format -msgid "function %s(%s) does not exist, skipping" -msgstr "函数 %s(%s) 不存在,跳过" +#: utils/adt/pseudotypes.c:387 +msgid "cannot accept a value of type anyelement" +msgstr "无法接受一个 anyelement 类型值" -#: commands/functioncmds.c:1005 commands/functioncmds.c:1105 -#: commands/functioncmds.c:1168 commands/functioncmds.c:1319 -#: utils/adt/ruleutils.c:1634 -#, c-format -msgid "\"%s\" is an aggregate function" -msgstr "\"%s\" 是一个聚合函数" +#: utils/adt/pseudotypes.c:400 +msgid "cannot display a value of type anyelement" +msgstr "无法显示一个 anyelement 类型值" -#: commands/functioncmds.c:1007 -msgid "Use DROP AGGREGATE to drop aggregate functions." -msgstr "使用 DROP AGGREGATE 删除一个聚合函数." +#: utils/adt/pseudotypes.c:413 +msgid "cannot accept a value of type anynonarray" +msgstr "无法接受一个anynonarray类型值" -#: commands/functioncmds.c:1014 -#, c-format -msgid "removing built-in function \"%s\"" -msgstr "删除内建函数 \"%s\"" +#: utils/adt/pseudotypes.c:426 +msgid "cannot display a value of type anynonarray" +msgstr "无法显示一个anynonarray类型的值" -#: commands/functioncmds.c:1107 -msgid "Use ALTER AGGREGATE to rename aggregate functions." -msgstr "使用 ALTER AGGREGATE 对聚合函数重命名." +#: utils/adt/pseudotypes.c:439 +msgid "cannot accept a value of a shell type" +msgstr "无法接受一个shell类型的值" -#: commands/functioncmds.c:1170 -msgid "Use ALTER AGGREGATE to change owner of aggregate functions." -msgstr "使用 ALTER AGGREGATE 改变聚合函数的属主." +#: utils/adt/pseudotypes.c:452 +msgid "cannot display a value of a shell type" +msgstr "无法显示一个shell类型值" -#: commands/functioncmds.c:1508 -#, c-format -msgid "source data type %s is a pseudo-type" -msgstr "源数据类型 %s 是一个伪类型" +#: utils/adt/pseudotypes.c:474 utils/adt/pseudotypes.c:498 +msgid "cannot accept a value of type pg_node_tree" +msgstr "无法接受一个 pg_node_tree类型值" -#: commands/functioncmds.c:1514 -#, c-format -msgid "target data type %s is a pseudo-type" -msgstr "目标数据类型 %s 是一个伪类型" +#: utils/adt/char.c:169 +msgid "\"char\" out of range" +msgstr "\"char\" 超出范围" -#: commands/functioncmds.c:1551 -msgid "cast function must take one to three arguments" -msgstr "类型转换函数只能带一到三个参数" +#: utils/adt/arrayfuncs.c:235 utils/adt/arrayfuncs.c:247 +msgid "missing dimension value" +msgstr "缺少大小值" -#: commands/functioncmds.c:1555 -msgid "" -"argument of cast function must match or be binary-coercible from source data " -"type" -msgstr "功能指派函数的参数必须匹配或者是或者从源数据类型以二进制方式强制转换的" +#: utils/adt/arrayfuncs.c:257 +msgid "missing \"]\" in array dimensions" +msgstr "数组声明缺少 ']'" -#: commands/functioncmds.c:1559 -msgid "second argument of cast function must be type integer" -msgstr "类型转换函数的第二个参数必须为整型" +#: 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 "上限不能小于底限" -#: commands/functioncmds.c:1563 -msgid "third argument of cast function must be type boolean" -msgstr "类型转换函数的第三个参数必须为布尔类型" +#: utils/adt/arrayfuncs.c:277 utils/adt/arrayfuncs.c:303 +msgid "array value must start with \"{\" or dimension information" +msgstr "数组值必须以 \"{\" 开始或者维数信息" -#: commands/functioncmds.c:1567 -msgid "" -"return data type of cast function must match or be binary-coercible to " -"target data type" -msgstr "功能指派函数的返回数据类型必须匹配或者强制二进制方式转换的目标数据类型" +#: utils/adt/arrayfuncs.c:291 +msgid "missing assignment operator" +msgstr "缺少指定的操作符" -#: commands/functioncmds.c:1578 -msgid "cast function must not be volatile" -msgstr "类型转换函数不能为易失的 (volatile)" +#: utils/adt/arrayfuncs.c:308 utils/adt/arrayfuncs.c:314 +msgid "array dimensions incompatible with array literal" +msgstr "数组维数与数组值不兼容" -#: commands/functioncmds.c:1583 -msgid "cast function must not be an aggregate function" -msgstr "转换函数不能是一个聚合函数" +#: 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\"" -#: commands/functioncmds.c:1587 -msgid "cast function must not be a window function" -msgstr "功能转换函数不能使窗口函数" +#: utils/adt/arrayfuncs.c:542 executor/execQual.c:3100 +#: executor/execQual.c:3127 +msgid "" +"multidimensional arrays must have array expressions with matching dimensions" +msgstr "多维数组必须有符合维度的数组表达式" -#: commands/functioncmds.c:1591 -msgid "cast function must not return a set" -msgstr "转换函数不能返回一个组合" +#: utils/adt/arrayfuncs.c:1249 +msgid "invalid array flags" +msgstr "无效的数组标记" -#: commands/functioncmds.c:1617 -msgid "must be superuser to create a cast WITHOUT FUNCTION" -msgstr "只有超级用户能创建一个非函数的类型转换" +#: utils/adt/arrayfuncs.c:1257 +msgid "wrong element type" +msgstr "错误的元素类型" -#: commands/functioncmds.c:1632 -msgid "source and target data types are not physically compatible" -msgstr "源数据类型和目标数据类型不相容" +#: utils/adt/arrayfuncs.c:1411 utils/adt/rowtypes.c:572 libpq/pqformat.c:556 +#: libpq/pqformat.c:574 libpq/pqformat.c:595 +msgid "insufficient data left in message" +msgstr "信息中剩下的数据不够" -#: commands/functioncmds.c:1647 -msgid "composite data types are not binary-compatible" -msgstr "组合数据类型不是二进制兼容" +#: utils/adt/arrayfuncs.c:1447 +#, c-format +msgid "improper binary format in array element %d" +msgstr "数组元素 %d 为不正确的二进制格式" -#: commands/functioncmds.c:1653 -msgid "enum data types are not binary-compatible" -msgstr "枚举数据类型不是二进制兼容" +#: utils/adt/arrayfuncs.c:1903 +msgid "slices of fixed-length arrays not implemented" +msgstr "没有实现固定长度数组的部分" -#: commands/functioncmds.c:1659 -msgid "array data types are not binary-compatible" -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:4916 utils/adt/arrayfuncs.c:4948 +#: utils/adt/arrayfuncs.c:4965 +msgid "wrong number of array subscripts" +msgstr "错误的数组下标" -#: commands/functioncmds.c:1669 -msgid "source data type and target data type are the same" -msgstr "源数据类型和目标数据类型相同" +#: utils/adt/arrayfuncs.c:2081 utils/adt/arrayfuncs.c:2174 +#: utils/adt/arrayfuncs.c:2469 +msgid "array subscript out of range" +msgstr "数组下标超出范围" -#: commands/functioncmds.c:1702 -#, c-format -msgid "cast from type %s to type %s already exists" -msgstr "类型 %s 到 %s 的转换已经存在" +#: utils/adt/arrayfuncs.c:2086 +msgid "cannot assign null value to an element of a fixed-length array" +msgstr "无法将空值分配给固定长度数组的成员" -#: commands/functioncmds.c:1782 -#, c-format -msgid "cast from type %s to type %s does not exist, skipping" -msgstr "从类型 %s 到类型 %s 的类型转换不存在,跳过" +#: utils/adt/arrayfuncs.c:2372 +msgid "updates on slices of fixed-length arrays not implemented" +msgstr "没有实现在固定长度数组部分上的更新操作" -#: commands/functioncmds.c:1879 -#, c-format -msgid "function \"%s\" is already in schema \"%s\"" -msgstr "在模式 \"%2$s\" 中函数 \"%1$s\"已经存在" +#: utils/adt/arrayfuncs.c:2408 utils/adt/arrayfuncs.c:2495 +msgid "source array too small" +msgstr "源数组太小" -#: commands/functioncmds.c:1887 commands/tablecmds.c:7862 -#: commands/typecmds.c:2794 -msgid "cannot move objects into or out of temporary schemas" -msgstr "无法将对象移入或移出临时模式" +#: utils/adt/arrayfuncs.c:3050 +msgid "null array element not allowed in this context" +msgstr "不支持空数组元素" -#: commands/functioncmds.c:1893 commands/tablecmds.c:7868 -#: commands/typecmds.c:2800 -msgid "cannot move objects into or out of TOAST schema" -msgstr "无法将对象移入或移出TOAST模式" +#: utils/adt/arrayfuncs.c:3153 utils/adt/arrayfuncs.c:3361 +#: utils/adt/arrayfuncs.c:3678 +msgid "cannot compare arrays of different element types" +msgstr "无法比较不同元素类型的数组" -#: commands/functioncmds.c:1902 +#: utils/adt/arrayfuncs.c:3176 utils/adt/arrayfuncs.c:3695 +#: utils/adt/rowtypes.c:1185 parser/parse_oper.c:225 #, c-format -msgid "function \"%s\" already exists in schema \"%s\"" -msgstr "在模式 \"%2$s\" 中函数 \"%1$s\" 已经存在" +msgid "could not identify an equality operator for type %s" +msgstr "无法为类型%s识别等于操作符" -#: commands/functioncmds.c:1974 -msgid "no inline code specified" -msgstr "没有指定内联代码" +#: utils/adt/arrayfuncs.c:3378 utils/adt/rowtypes.c:950 +#: executor/execQual.c:4892 +#, c-format +msgid "could not identify a comparison function for type %s" +msgstr "无法为类型 %s 确认一个比对函数" -#: commands/functioncmds.c:2022 +#: utils/adt/arrayfuncs.c:3563 #, c-format -msgid "language \"%s\" does not support inline code execution" -msgstr "语言 \"%s\" 不支持执行内联代码" +msgid "could not identify a hash function for type %s" +msgstr "无法为类型 %s 确认一个哈希函数" -#: commands/indexcmds.c:162 -msgid "must specify at least one column" -msgstr "必需至少指定一个字段" +#: utils/adt/arrayfuncs.c:4814 utils/adt/arrayfuncs.c:4854 +msgid "dimension array or low bound array cannot be null" +msgstr "维度数组或低界数组不能为空(null)" -#: commands/indexcmds.c:166 -#, c-format -msgid "cannot use more than %d columns in an index" -msgstr "在一个索引中不能使用超过 %d 个字段" +#: utils/adt/arrayfuncs.c:4917 utils/adt/arrayfuncs.c:4949 +msgid "Dimension array must be one dimensional." +msgstr "维度数组必须是一维" -#: commands/indexcmds.c:196 -msgid "cannot create indexes on temporary tables of other sessions" -msgstr "不能在其他会话的临时表上创建索引" +#: utils/adt/arrayfuncs.c:4922 utils/adt/arrayfuncs.c:4954 +msgid "wrong range of array subscripts" +msgstr "无效的数组下标范围" -#: commands/indexcmds.c:256 commands/tablecmds.c:455 commands/tablecmds.c:6978 -msgid "only shared relations can be placed in pg_global tablespace" -msgstr "在pg_global表空间中只能放置共享关系" +#: utils/adt/arrayfuncs.c:4923 utils/adt/arrayfuncs.c:4955 +msgid "Lower bound of dimension array must be one." +msgstr "维度数组的低界必须是1" -#: commands/indexcmds.c:287 -msgid "substituting access method \"gist\" for obsolete method \"rtree\"" -msgstr "将已作废的方法\"rtree\"替换为访问方法\"gist\" " +#: utils/adt/arrayfuncs.c:4928 utils/adt/arrayfuncs.c:4960 +msgid "dimension values cannot be null" +msgstr "维度值不能为空" -#: commands/indexcmds.c:304 +#: utils/adt/arrayfuncs.c:4966 +msgid "Low bound array has different size than dimensions array." +msgstr "低界数组的大小与多维数组不同" + +#: utils/adt/tsquery.c:156 utils/adt/tsquery.c:392 +#: utils/adt/tsvector_parser.c:136 #, c-format -msgid "access method \"%s\" does not support unique indexes" -msgstr "存取方法 \"%s\" 不支持唯一索引" +msgid "syntax error in tsquery: \"%s\"" +msgstr "在tsquery中的语法错误:\"%s\"" -#: commands/indexcmds.c:309 +#: utils/adt/tsquery.c:177 #, c-format -msgid "access method \"%s\" does not support multicolumn indexes" -msgstr "存取方法 \"%s\" 不支持多字段索引" +msgid "no operand in tsquery: \"%s\"" +msgstr "在tsquery中没有操作数:\"%s\"" -#: commands/indexcmds.c:314 +#: utils/adt/tsquery.c:250 #, c-format -msgid "access method \"%s\" does not support exclusion constraints" -msgstr "访问方法 \"%s\" 不支持排他约束" +msgid "value is too big in tsquery: \"%s\"" +msgstr "在tsquery中的值太大了:\"%s\"" -#: commands/indexcmds.c:347 parser/parse_utilcmd.c:1212 -#: parser/parse_utilcmd.c:1298 +#: utils/adt/tsquery.c:255 #, c-format -msgid "multiple primary keys for table \"%s\" are not allowed" -msgstr "对表 \"%s\" 指定多个主键是不允许的" +msgid "operand is too long in tsquery: \"%s\"" +msgstr "在tsquery中操作数太长了: \"%s\"" -#: commands/indexcmds.c:364 -msgid "primary keys cannot be expressions" -msgstr "主键不能是表达式" +#: utils/adt/tsquery.c:283 +#, c-format +msgid "word is too long in tsquery: \"%s\"" +msgstr "在tsquery中的词太长了:\"%s\" " -#: commands/indexcmds.c:394 commands/indexcmds.c:903 -#: parser/parse_utilcmd.c:1445 +#: utils/adt/tsquery.c:512 #, c-format -msgid "column \"%s\" named in key does not exist" -msgstr "在键字中命名的字段 \"%s\" 不存在" +msgid "text-search query doesn't contain lexemes: \"%s\"" +msgstr "文本搜索查询没有包含词汇单位:\"%s\"" + +#: utils/adt/misc.c:80 +msgid "must be superuser to signal other server processes" +msgstr "只有超级用户可以发送信号到其他服务器进程" -#: commands/indexcmds.c:468 +#: utils/adt/misc.c:89 #, c-format -msgid "%s %s will create implicit index \"%s\" for table \"%s\"" -msgstr "%1$s %2$s 将要为表 \"%4$s\" 创建隐含索引 \"%3$s\"" +msgid "PID %d is not a PostgreSQL server process" +msgstr "PID %d 不是 PostgreSQL 服务器进程" -#: commands/indexcmds.c:827 -msgid "cannot use subquery in index predicate" -msgstr "索引声明中不能使用子查询" +#: utils/adt/misc.c:102 storage/lmgr/proc.c:1079 +#, c-format +msgid "could not send signal to process %d: %m" +msgstr "无法发送信号到进程 %d: %m" -#: commands/indexcmds.c:831 -msgid "cannot use aggregate in index predicate" -msgstr "索引声明中不能使用聚合函数" +#: utils/adt/misc.c:126 +msgid "must be superuser to signal the postmaster" +msgstr "只有超级用户可以发送信号到postmaster进程" -#: commands/indexcmds.c:840 -msgid "functions in index predicate must be marked IMMUTABLE" -msgstr "索引声明中函数必需标记为 IMMUTABLE" +#: utils/adt/misc.c:131 +#, c-format +msgid "failed to send signal to postmaster: %m" +msgstr "无法发送信号到postmaster进程: %m" -#: commands/indexcmds.c:942 -msgid "cannot use subquery in index expression" -msgstr "索引表达式中不能使用子查询" +#: utils/adt/misc.c:148 +msgid "must be superuser to rotate log files" +msgstr "只有超级用户能切换日志文件" -#: commands/indexcmds.c:946 -msgid "cannot use aggregate function in index expression" -msgstr "索引表达式中不能使用聚合函数" +#: utils/adt/misc.c:153 +msgid "rotation not possible because log collection not active" +msgstr "日志切换无法进行,因为没有激活日志收集功能" -#: commands/indexcmds.c:956 -msgid "functions in index expression must be marked IMMUTABLE" -msgstr "索引表达式中函数必需标记为 IMMUTABLE" +#: utils/adt/misc.c:195 +msgid "global tablespace never has databases" +msgstr "全局表空间没有数据库" -#: commands/indexcmds.c:991 +#: utils/adt/misc.c:216 #, c-format -msgid "operator %s is not commutative" -msgstr "操作符%s不是可交换的" +msgid "%u is not a tablespace OID" +msgstr "%u 不是一个表空间 OID" -#: commands/indexcmds.c:993 -msgid "Only commutative operators can be used in exclusion constraints." -msgstr "只有可交换操作符能够在排他约束中使用." +#: utils/adt/misc.c:352 +msgid "unreserved" +msgstr "未保留" -#: commands/indexcmds.c:1019 -#, c-format -msgid "operator %s is not a member of operator family \"%s\"" -msgstr "操作符%s不是操作符表\"%s\"的成员" +#: utils/adt/misc.c:356 +msgid "unreserved (cannot be function or type name)" +msgstr "未保留(不能是函数或者类型名称)" -#: commands/indexcmds.c:1022 -msgid "" -"The exclusion operator must be related to the index operator class for the " -"constraint." -msgstr "排他操作符必须和用于约束的索引操作符级别相关联" +#: utils/adt/misc.c:360 +msgid "reserved (can be function or type name)" +msgstr "已保留(可以是函数或类型名称)" -#: commands/indexcmds.c:1057 -#, c-format -msgid "access method \"%s\" does not support ASC/DESC options" -msgstr "访问方法 \"%s\" 不支持ASC/DESC选项" +#: utils/adt/misc.c:364 +msgid "reserved" +msgstr "已保留" -#: commands/indexcmds.c:1062 -#, c-format -msgid "access method \"%s\" does not support NULLS FIRST/LAST options" -msgstr "访问方法 \"%s\" 不支持NULLS FIRST/LAST选项" +#: 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:117 +msgid "requested length too large" +msgstr "请求长度太大" + +#: utils/adt/oracle_compat.c:895 +msgid "requested character too large" +msgstr "所请求的字符太大" -#: commands/indexcmds.c:1118 +#: utils/adt/oracle_compat.c:941 utils/adt/oracle_compat.c:995 #, c-format -msgid "data type %s has no default operator class for access method \"%s\"" -msgstr "对访问方法 \"%2$s\" 数据类型 %1$s 没有默认的操作符表" +msgid "requested character too large for encoding: %d" +msgstr "对于编码来说所要求的字符太大了: %d" -#: commands/indexcmds.c:1120 -msgid "" -"You must specify an operator class for the index or define a default " -"operator class for the data type." -msgstr "你必须指定一个操作符表给索引或定义一个默认的操作符表给数据类型." +#: utils/adt/oracle_compat.c:988 +msgid "null character not permitted" +msgstr "不允许使用空字符" + +#: utils/adt/tsvector_op.c:1173 +msgid "ts_stat query must return one tsvector column" +msgstr "ts_stat查询必须在tsvector类型列上返回" -#: commands/indexcmds.c:1170 +#: utils/adt/tsvector_op.c:1353 #, c-format -msgid "operator class \"%s\" does not accept data type %s" -msgstr "操作符表 \"%s\" 不能处理数据类型 %s" +msgid "tsvector column \"%s\" does not exist" +msgstr "tsvector字段 \"%s\" 不存在" -#: commands/indexcmds.c:1260 +#: utils/adt/tsvector_op.c:1359 #, c-format -msgid "there are multiple default operator classes for data type %s" -msgstr "数据类型 %s 有多个默认的操作符表" +msgid "column \"%s\" is not of tsvector type" +msgstr "列\"%s\"不属于tsvector类型" -#: commands/indexcmds.c:1639 +#: utils/adt/tsvector_op.c:1371 #, c-format -msgid "table \"%s\" has no indexes" -msgstr "表 \"%s\" 没有索引" +msgid "configuration column \"%s\" does not exist" +msgstr "配置字段 \"%s\" 不存在" -#: commands/indexcmds.c:1667 -msgid "can only reindex the currently open database" -msgstr "只能在当前打开的数据库上重建索引" +#: utils/adt/tsvector_op.c:1377 +#, c-format +msgid "column \"%s\" is not of regconfig type" +msgstr "列\"%s\"不属于regconfig类型" -#: commands/indexcmds.c:1752 +#: utils/adt/tsvector_op.c:1384 #, c-format -msgid "table \"%s.%s\" was reindexed" -msgstr "表 \"%s.%s\" 已被重新索引" +msgid "configuration column \"%s\" must not be null" +msgstr "配置列\"%s\"不能为空" -#: commands/lockcmds.c:93 +#: utils/adt/tsvector_op.c:1397 #, c-format -msgid "could not obtain lock on relation \"%s\"" -msgstr "无法在关系 \"%s\" 上获得锁" +msgid "text search configuration name \"%s\" must be schema-qualified" +msgstr "文本搜索配置名称\"%s\"必须是模式限定的。" -#: commands/lockcmds.c:98 +#: utils/adt/tsvector_op.c:1417 commands/tablecmds.c:1301 +#: commands/tablecmds.c:2076 commands/copy.c:3792 commands/indexcmds.c:811 +#: parser/parse_expr.c:766 #, c-format -msgid "could not obtain lock on relation with OID %u" -msgstr "无法从带有OID %u关系上获得锁" +msgid "column \"%s\" does not exist" +msgstr "字段 \"%s\" 不存在" -#: commands/opclasscmds.c:190 commands/opclasscmds.c:701 +#: utils/adt/tsvector_op.c:1422 #, c-format -msgid "operator family \"%s\" for access method \"%s\" already exists" -msgstr "访问方法 \"%2$s\" 操作符表 \"%1$s\" 已经存在" +msgid "column \"%s\" is not of a character type" +msgstr "字段 \"%s\"不属于字符类型" -#: commands/opclasscmds.c:320 -msgid "must be superuser to create an operator class" -msgstr "只有超级用户能创建一个操作符表" +#: utils/adt/datetime.c:3537 utils/adt/datetime.c:3544 +#, c-format +msgid "date/time field value out of range: \"%s\"" +msgstr "日期/时间值超出范围: \"%s\"" + +#: utils/adt/datetime.c:3546 +msgid "Perhaps you need a different \"datestyle\" setting." +msgstr "也许你需要不同的 \"datesytle\" 设置." -#: commands/opclasscmds.c:403 commands/opclasscmds.c:849 -#: commands/opclasscmds.c:971 +#: utils/adt/datetime.c:3551 #, c-format -msgid "invalid operator number %d, must be between 1 and %d" -msgstr "无效的操作符号 %d, 必需在 1 到 %d 之间" +msgid "interval field value out of range: \"%s\"" +msgstr "间隔字段超出范围: \"%s\"" -#: commands/opclasscmds.c:446 commands/opclasscmds.c:892 -#: commands/opclasscmds.c:986 +#: utils/adt/datetime.c:3557 #, c-format -msgid "invalid procedure number %d, must be between 1 and %d" -msgstr "无效的过程号 %d, 必需在 1 到 %d 之间" +msgid "time zone displacement out of range: \"%s\"" +msgstr "时间区域置换超出范围: \"%s\"" -#: commands/opclasscmds.c:476 -msgid "storage type specified more than once" -msgstr "存储类型指定了多次" +#: utils/adt/genfile.c:60 +msgid "reference to parent directory (\"..\") not allowed" +msgstr "不允许引用源目录(\"..\") " -#: commands/opclasscmds.c:504 -#, c-format -msgid "" -"storage type cannot be different from data type for access method \"%s\"" -msgstr "存储类型应该和用于访问方法 \"%s\" 数据类型一样" +#: 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 "路径必须在当前目录或其子目录下" -#: commands/opclasscmds.c:520 +#: utils/adt/genfile.c:122 commands/copy.c:2193 #, c-format -msgid "operator class \"%s\" for access method \"%s\" already exists" -msgstr "访问方法 \"%2$s\" 操作符表 \"%1$s\" 已经存在" +msgid "could not open file \"%s\" for reading: %m" +msgstr "为了读取, 无法打开文件 \"%s\": %m" -#: commands/opclasscmds.c:548 +#: utils/adt/genfile.c:129 #, c-format -msgid "could not make operator class \"%s\" be default for type %s" -msgstr "无法把操作符表 \"%s\" 设置为类型 %s 的默认操作符表" +msgid "could not seek in file \"%s\": %m" +msgstr "无法在文件\"%s\"进行查找: %m" -#: commands/opclasscmds.c:551 +#: utils/adt/genfile.c:138 access/transam/xlog.c:2543 +#: access/transam/xlog.c:4494 access/transam/xlog.c:9331 +#: access/transam/xlog.c:9344 access/transam/xlog.c:9878 +#: access/transam/xlog.c:9913 storage/file/copydir.c:186 #, c-format -msgid "Operator class \"%s\" already is the default." -msgstr "操作符表 \"%s\" 已经是默认的了." +msgid "could not read file \"%s\": %m" +msgstr "无法读取文件 \"%s\": %m" -#: commands/opclasscmds.c:687 -msgid "must be superuser to create an operator family" -msgstr "只有超级用户能创建一个操作符表" +#: 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 "只有超级用户能对文件进行读操作" -#: commands/opclasscmds.c:802 -msgid "must be superuser to alter an operator family" -msgstr "只有超级用户能修改一个操作符表" +#: utils/adt/genfile.c:186 utils/adt/genfile.c:231 +msgid "requested length cannot be negative" +msgstr "所请求的长度不能是负数" -#: commands/opclasscmds.c:865 -msgid "operator argument types must be specified in ALTER OPERATOR FAMILY" -msgstr "在ALTER OPERATOR FAMILY中必须指定操作符参数类型" +#: utils/adt/genfile.c:272 +msgid "must be superuser to get file information" +msgstr "只有超级用户才能获取文件信息" -#: commands/opclasscmds.c:921 -msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY" -msgstr "在ALTER OPERATOR FAMILY中无法指定参数STORAGE" +#: utils/adt/genfile.c:336 +msgid "must be superuser to get directory listings" +msgstr "只有超级用户才能获取目录列表" -#: commands/opclasscmds.c:1037 -msgid "one or two argument types must be specified" -msgstr "必须指定一个或两个参数类型" +#: utils/adt/tsquery_rewrite.c:296 +msgid "ts_rewrite query must return two tsquery columns" +msgstr "ts_rewrite查询必须返回两个tsquery字段的记录" -#: commands/opclasscmds.c:1063 -msgid "index operators must be binary" -msgstr "索引操作符必须为二进制" +#: utils/adt/tsquery_cleanup.c:285 +msgid "" +"text-search query contains only stop words or doesn't contain lexemes, " +"ignored" +msgstr "文本搜索查询只包含结束词或者不包含词汇单位, 被忽略" -#: commands/opclasscmds.c:1067 -msgid "index operators must return boolean" -msgstr "索引操作符必须返回布尔值" +#: utils/adt/uuid.c:128 +#, c-format +msgid "invalid input syntax for uuid: \"%s\"" +msgstr "uuid的输入语法无效:\"%s\" " -#: commands/opclasscmds.c:1105 -msgid "btree procedures must have two arguments" -msgstr "btree 过程必须有两个参数" +#: utils/adt/rowtypes.c:99 utils/adt/rowtypes.c:488 +msgid "input of anonymous composite types is not implemented" +msgstr "匿名复合类型输入仍未实现" -#: commands/opclasscmds.c:1109 -msgid "btree procedures must return integer" -msgstr "btree 过程必须返回整数" +#: 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 "有缺陷的记录常量: \"%s\"" -#: commands/opclasscmds.c:1124 -msgid "hash procedures must have one argument" -msgstr "哈希存储过程必须有一个参数" +#: utils/adt/rowtypes.c:153 +msgid "Missing left parenthesis." +msgstr "缺少一个左括弧" -#: commands/opclasscmds.c:1128 -msgid "hash procedures must return integer" -msgstr "哈希存储过程必须返回整数" +#: utils/adt/rowtypes.c:181 +msgid "Too few columns." +msgstr "字段太少." -#: commands/opclasscmds.c:1153 -msgid "associated data types must be specified for index support procedure" -msgstr "必须为索引支持的存储过程指定相关联的数据类型" +#: utils/adt/rowtypes.c:205 utils/adt/rowtypes.c:213 +msgid "Unexpected end of input." +msgstr "意外的输入末尾" -#: commands/opclasscmds.c:1179 -#, c-format -msgid "procedure number %d for (%s,%s) appears more than once" -msgstr "对于(%2$s,%3$s)的存储过程号%1$d出现了多次 " +#: utils/adt/rowtypes.c:264 +msgid "Too many columns." +msgstr "太多字段." -#: commands/opclasscmds.c:1186 -#, c-format -msgid "operator number %d for (%s,%s) appears more than once" -msgstr "对于(%2$s,%3$s)操作符号%1$d出现过多次" +#: utils/adt/rowtypes.c:272 +msgid "Junk after right parenthesis." +msgstr "右括号后的内容无用." -#: commands/opclasscmds.c:1234 +#: utils/adt/rowtypes.c:537 #, c-format -msgid "operator %d(%s,%s) already exists in operator family \"%s\"" -msgstr "在操作符表\"%4$s\"中已存在操作符 %1$d(%2$s,%3$s)" +msgid "wrong number of columns: %d, expected %d" +msgstr "错误的字段个数: %d, 期望为 %d" -#: commands/opclasscmds.c:1334 +#: utils/adt/rowtypes.c:564 #, c-format -msgid "function %d(%s,%s) already exists in operator family \"%s\"" -msgstr "在操作符表\"%4$s\"中已存在函数 %1$d(%2$s,%3$s)" +msgid "wrong data type: %u, expected %u" +msgstr "错误的数据类型: %u, 期望为 %u" -#: commands/opclasscmds.c:1421 +#: utils/adt/rowtypes.c:625 #, c-format -msgid "operator %d(%s,%s) does not exist in operator family \"%s\"" -msgstr "在操作符表\"%4$s\"中不存在操作符 %1$d(%2$s,%3$s)" +msgid "improper binary format in record column %d" +msgstr "在记录字段 %d 为不正确的二进制格式" -#: commands/opclasscmds.c:1461 +#: utils/adt/rowtypes.c:925 utils/adt/rowtypes.c:1160 #, 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:1768 -#, c-format -msgid "" -"operator class \"%s\" for access method \"%s\" already exists in schema \"%s" -"\"" -msgstr "访问方法 \"%s\" 的操作符表 \"%s\" 已经在模式 \"%s\" 存在了" +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 +msgid "cannot compare record types with different numbers of columns" +msgstr "无法比较不同元素类型的数组" -#: commands/opclasscmds.c:1862 +#: utils/adt/nabstime.c:160 #, c-format -msgid "" -"operator family \"%s\" for access method \"%s\" already exists in schema \"%s" -"\"" -msgstr "对于访问方法 \"%2$s\" 的操作符表 \"%1$s\" 已经在模式 \"%3$s\" 存在了" +msgid "invalid time zone name: \"%s\"" +msgstr "无效时区名字: \"%s\"" -#: commands/operatorcmds.c:98 -msgid "=> is deprecated as an operator name" -msgstr "=>做为操作符名称已被废弃" +#: utils/adt/nabstime.c:506 utils/adt/nabstime.c:579 +msgid "cannot convert abstime \"invalid\" to timestamp" +msgstr "无法把 abstime \"invalid\" 转换为 timestamp." -#: commands/operatorcmds.c:99 -msgid "" -"This name may be disallowed altogether in future versions of PostgreSQL." -msgstr "在将来的PostgreSQL版本中不允许使用这个名称." +#: utils/adt/nabstime.c:806 +msgid "invalid status in external \"tinterval\" value" +msgstr "无效的外部 \"tinterval\" 值状态" -#: commands/operatorcmds.c:120 commands/operatorcmds.c:128 -msgid "SETOF type not allowed for operator argument" -msgstr "不允许将SETOF类型用于操作符参数" +#: utils/adt/nabstime.c:880 +msgid "cannot convert reltime \"invalid\" to interval" +msgstr "无法把 reltime \"invalid\" 转换为 interval" -#: commands/operatorcmds.c:156 +#: utils/adt/nabstime.c:1575 #, c-format -msgid "operator attribute \"%s\" not recognized" -msgstr "操作符属性 \"%s\" 不被认可" +msgid "invalid input syntax for type tinterval: \"%s\"" +msgstr "无效的 tinterval 类型输入语法: \"%s\"" -#: commands/operatorcmds.c:166 -msgid "operator procedure must be specified" -msgstr "必须指定操作符过程" +#: utils/adt/numutils.c:75 +#, c-format +msgid "value \"%s\" is out of range for type integer" +msgstr "值 \"%s\" 超出整数类型范围" -#: commands/operatorcmds.c:177 -msgid "at least one of leftarg or rightarg must be specified" -msgstr "必须至少指定一个左参数 (leftarg) 或右参数 (rightarg)" +#: utils/adt/numutils.c:81 +#, c-format +msgid "value \"%s\" is out of range for type smallint" +msgstr "值 \"%s\" 超出 smallint 类型范围" -#: commands/operatorcmds.c:226 +#: utils/adt/numutils.c:87 #, c-format -msgid "restriction estimator function %s must return type \"float8\"" -msgstr "限制估算函数 %s 必需返回类型\"float8\"" +msgid "value \"%s\" is out of range for 8-bit integer" +msgstr "值 \"%s\" 超出 8 位整数范围" -#: commands/operatorcmds.c:265 +#: utils/adt/pg_locale.c:953 #, c-format -msgid "join estimator function %s must return type \"float8\"" -msgstr "连接估算函数 %s 必需返回类型\"float8\"" +msgid "could not create locale \"%s\": %m" +msgstr "无法创建本地化环境 \"%s\": %m" -#: commands/operatorcmds.c:316 +#: utils/adt/pg_locale.c:956 #, c-format -msgid "operator %s does not exist, skipping" -msgstr "操作符 %s不存在,跳过" +msgid "" +"The operating system could not find any locale data for the locale name \"%s" +"\"." +msgstr "操作系统无法找到本地化名 \"%s\"对应的任何本地化数据." -#: commands/portalcmds.c:61 commands/portalcmds.c:160 -#: commands/portalcmds.c:212 -msgid "invalid cursor name: must not be empty" -msgstr "无效的游标名称: 不能为空" +#: utils/adt/pg_locale.c:1043 +msgid "" +"collations with different collate and ctype values are not supported on this " +"platform" +msgstr "在此平台上不支持带有不同collate和ctype值的排序规则" + +#: utils/adt/pg_locale.c:1058 +msgid "nondefault collations are not supported on this platform" +msgstr "在这个平台上不支持使用非缺省的排序规则" + +#: utils/adt/pg_locale.c:1229 +msgid "invalid multibyte character for locale" +msgstr "无效的多字节字符, 对于 locale" + +#: utils/adt/pg_locale.c:1230 +msgid "" +"The server's LC_CTYPE locale is probably incompatible with the database " +"encoding." +msgstr "服务器本地 LC_CTYPE 可能与数据库编码不兼容." -#: commands/portalcmds.c:168 commands/portalcmds.c:222 -#: executor/execCurrent.c:66 utils/adt/xml.c:2044 utils/adt/xml.c:2208 +#: utils/adt/encode.c:55 utils/adt/encode.c:91 #, c-format -msgid "cursor \"%s\" does not exist" -msgstr "游标 \"%s\" 不存在" +msgid "unrecognized encoding: \"%s\"" +msgstr "未知编码: \"%s\"" -#: commands/portalcmds.c:329 tcop/pquery.c:748 tcop/pquery.c:1371 +#: utils/adt/encode.c:150 #, c-format -msgid "portal \"%s\" cannot be run" -msgstr "入口 \"%s\" 不可以运行" +msgid "invalid hexadecimal digit: \"%c\"" +msgstr "无效的十六进制数字: \"%c\"" -#: commands/portalcmds.c:402 -msgid "could not reposition held cursor" -msgstr "无法定位游标" +#: utils/adt/encode.c:178 +msgid "invalid hexadecimal data: odd number of digits" +msgstr "无效的十六进制数据: 奇怪的数字个数" -#: commands/prepare.c:70 -msgid "invalid statement name: must not be empty" -msgstr "无效的语句名称: 不能为空" +#: utils/adt/encode.c:295 +msgid "unexpected \"=\"" +msgstr "意外的 \"=\"" -#: commands/prepare.c:121 tcop/postgres.c:1301 parser/parse_param.c:293 -#, c-format -msgid "could not determine data type of parameter $%d" -msgstr "无法确定参数 $%d 的数据类型" +#: utils/adt/encode.c:307 +msgid "invalid symbol" +msgstr "无效符号" -#: commands/prepare.c:139 -msgid "utility statements cannot be prepared" -msgstr "不能准备好工具语句" +#: utils/adt/encode.c:327 +msgid "invalid end sequence" +msgstr "无效的结束顺序" -#: commands/prepare.c:239 commands/prepare.c:246 commands/prepare.c:702 -msgid "prepared statement is not a SELECT" -msgstr "准备好的语句不是一个 SELECT" +#: 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\"" -#: commands/prepare.c:313 +#: utils/adt/oid.c:69 utils/adt/oid.c:107 #, c-format -msgid "wrong number of parameters for prepared statement \"%s\"" -msgstr "准备好的语句 \"%s\" 参数个数错误" +msgid "value \"%s\" is out of range for type oid" +msgstr "值 \"%s\" 超出类型 oid 范围" -#: commands/prepare.c:315 +#: utils/adt/oid.c:287 +msgid "invalid oidvector data" +msgstr "无效的oidvector数据" + +#: utils/adt/acl.c:253 #, c-format -msgid "Expected %d parameters but got %d." -msgstr "预计 %d 个参数, 但得到了 %d 个." +msgid "unrecognized key word: \"%s\"" +msgstr "未知的键值: \"%s\"" -#: commands/prepare.c:344 -msgid "cannot use subquery in EXECUTE parameter" -msgstr "在 EXECUTE 参数中不可以使用子查询" +#: utils/adt/acl.c:254 +msgid "ACL key word must be \"group\" or \"user\"." +msgstr "ACL 键值必须为 \"group\" 或者 \"user\"." -#: commands/prepare.c:348 -msgid "cannot use aggregate function in EXECUTE parameter" -msgstr "在 EXECUTE 参数中不可以使用聚合函数" +#: utils/adt/acl.c:259 +msgid "missing name" +msgstr "缺少名字" -#: commands/prepare.c:352 -msgid "cannot use window function in EXECUTE parameter" -msgstr "在EXECUTE参数中不能使用窗口函数" +#: utils/adt/acl.c:260 +msgid "A name must follow the \"group\" or \"user\" key word." +msgstr "一个名字必须为 \"group\" 或者 \"user\" 键值." -#: commands/prepare.c:365 -#, c-format -msgid "parameter $%d of type %s cannot be coerced to the expected type %s" -msgstr "类型 %2$s 的参数 $%1$d 不能强制到预计 (expected) 类型 %3$s" +#: utils/adt/acl.c:266 +msgid "missing \"=\" sign" +msgstr "缺少 \"=\" 符号" -#: commands/prepare.c:463 +#: utils/adt/acl.c:319 #, c-format -msgid "prepared statement \"%s\" already exists" -msgstr "准备好的语句 \"%s\" 已经存在" +msgid "invalid mode character: must be one of \"%s\"" +msgstr "无效的模式字符: 必须是 \"%s\" 其中的一个" -#: commands/prepare.c:521 +#: utils/adt/acl.c:341 +msgid "a name must follow the \"/\" sign" +msgstr "名字必须再 \"/\" 符号后" + +#: utils/adt/acl.c:349 #, c-format -msgid "prepared statement \"%s\" does not exist" -msgstr "准备好的语句 \"%s\" 不存在" +msgid "defaulting grantor to user ID %u" +msgstr "缺省将授权者身份给予用户ID %u" -#: commands/prepare.c:747 executor/execQual.c:1615 executor/execQual.c:1640 -#: executor/execQual.c:2001 executor/execQual.c:5100 executor/functions.c:652 -#: foreign/foreign.c:271 utils/mmgr/portalmem.c:937 utils/fmgr/funcapi.c:60 -msgid "set-valued function called in context that cannot accept a set" -msgstr "在不能接受使用集合的环境中调用set-valued函数" +#: utils/adt/acl.c:540 +msgid "ACL array contains wrong data type" +msgstr "ACL数组包含错误数据类型" -#: commands/prepare.c:751 foreign/foreign.c:276 utils/mmgr/portalmem.c:941 -msgid "materialize mode required, but it is not allowed in this context" -msgstr "要求使用物化模式,但是在这种环境下不允许使用." +#: utils/adt/acl.c:544 +msgid "ACL arrays must be one-dimensional" +msgstr "ACL数组必须是一维数组" -#: commands/proclang.c:92 -msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters" -msgstr "使用pg_pltemplate信息,而不是CREATE LANGUAGE的参数" +#: utils/adt/acl.c:548 +msgid "ACL arrays must not contain null values" +msgstr "ACL数组不能包含空值" -#: commands/proclang.c:102 -#, c-format -msgid "must be superuser to create procedural language \"%s\"" -msgstr "只有有超级用户权限的用户才能创建过程语言\"%s\"" +#: utils/adt/acl.c:572 +msgid "extra garbage at the end of the ACL specification" +msgstr "在ACL定义的结束部分的多余的无用部分" -#: commands/proclang.c:122 commands/proclang.c:278 -#, c-format -msgid "function %s must return type \"language_handler\"" -msgstr "函数 %s 必须返回 \"language_handler\" 类型" +#: utils/adt/acl.c:1129 +msgid "grant options cannot be granted back to your own grantor" +msgstr "不能将grant选项授予您自己的授予者 " -#: commands/proclang.c:242 -#, c-format -msgid "unsupported language \"%s\"" -msgstr "不支持语言 \"%s\"" +#: utils/adt/acl.c:1190 +msgid "dependent privileges exist" +msgstr "存在依赖权限" -#: commands/proclang.c:244 -msgid "The supported languages are listed in the pg_pltemplate system catalog." -msgstr "在pg_pltemplate系统目录视图中列出了所支持的语言." +#: utils/adt/acl.c:1191 +msgid "Use CASCADE to revoke them too." +msgstr "使用CASCADE回收这些权限" -#: commands/proclang.c:252 -msgid "must be superuser to create custom procedural language" -msgstr "只有有超级用户权限的用户才能创建过程语言" +#: utils/adt/acl.c:1470 +msgid "aclinsert is no longer supported" +msgstr "不再支持 aclinsert" -#: commands/proclang.c:271 -#, c-format -msgid "" -"changing return type of function %s from \"opaque\" to \"language_handler\"" -msgstr "函数 %s 的返回类型 \"opaque\" 改变成 \"language_handler\"" +#: utils/adt/acl.c:1480 +msgid "aclremove is no longer supported" +msgstr "不再支持 aclremove" -#: commands/proclang.c:356 commands/proclang.c:606 +#: utils/adt/acl.c:1566 utils/adt/acl.c:1620 #, c-format -msgid "language \"%s\" already exists" -msgstr "语言 \"%s\" 已经存在" +msgid "unrecognized privilege type: \"%s\"" +msgstr "未知的权限类型: \"%s\"" -#: commands/proclang.c:534 +#: 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 +#: commands/tablecmds.c:209 commands/tablecmds.c:2175 +#: commands/tablecmds.c:2422 commands/tablecmds.c:9032 +#: commands/sequence.c:1032 catalog/aclchk.c:1693 catalog/objectaddress.c:398 #, c-format -msgid "language \"%s\" does not exist, skipping" -msgstr "语言 \"%s\" 不存在" +msgid "\"%s\" is not a sequence" +msgstr "\"%s\" 不是一个序列" -#: commands/schemacmds.c:82 commands/schemacmds.c:288 +#: utils/adt/acl.c:3359 utils/adt/regproc.c:118 utils/adt/regproc.c:139 +#: utils/adt/regproc.c:289 #, c-format -msgid "unacceptable schema name \"%s\"" -msgstr "不可访问的模式名字 \"%s\"" - -#: commands/schemacmds.c:83 commands/schemacmds.c:289 -msgid "The prefix \"pg_\" is reserved for system schemas." -msgstr "前缀 \"pg_\" 是保留给系统模式的." +msgid "function \"%s\" does not exist" +msgstr "函数 \"%s\" 不存在" -#: commands/schemacmds.c:196 +#: utils/adt/acl.c:4608 #, c-format -msgid "schema \"%s\" does not exist, skipping" -msgstr "模式 \"%s\" 不存在" +msgid "must be member of role \"%s\"" +msgstr "必须是角色\"%s\"的成员" -#: commands/sequence.c:553 +#: utils/adt/enum.c:48 utils/adt/enum.c:58 utils/adt/enum.c:113 +#: utils/adt/enum.c:123 #, c-format -msgid "nextval: reached maximum value of sequence \"%s\" (%s)" -msgstr "nextval: 达到序列 \"%s\" 的最大值了 (%s)" +msgid "invalid input value for enum %s: \"%s\"" +msgstr "对于枚举%s的输入值无效: \"%s\"" -#: commands/sequence.c:576 +#: utils/adt/enum.c:85 utils/adt/enum.c:148 utils/adt/enum.c:198 #, c-format -msgid "nextval: reached minimum value of sequence \"%s\" (%s)" -msgstr "nextval: 达到序列 \"%s\" 的最小值了 (%s)" +msgid "invalid internal value for enum: %u" +msgstr "对于枚举的无效内部值: %u" -#: commands/sequence.c:674 +#: 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 "无法确定实际的枚举类型" + +#: utils/adt/enum.c:365 utils/adt/enum.c:394 #, c-format -msgid "currval of sequence \"%s\" is not yet defined in this session" -msgstr "在此会话中序列 \"%s\" 的 currval 仍没被定义" +msgid "enum %s contains no values" +msgstr "枚举 \"%s\" 没有值" -#: commands/sequence.c:693 commands/sequence.c:699 -msgid "lastval is not yet defined in this session" -msgstr "在这个会话中还没有定义lastval " +#: 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:2887 +msgid "MATCH PARTIAL not yet implemented" +msgstr "MATCH PARTIAL 仍未实现" -#: commands/sequence.c:767 +#: utils/adt/ri_triggers.c:409 utils/adt/ri_triggers.c:2841 +#: utils/adt/ri_triggers.c:3535 utils/adt/ri_triggers.c:3567 #, c-format -msgid "setval: value %s is out of bounds for sequence \"%s\" (%s..%s)" -msgstr "setval: 值 %s 超出序列 \"%s\" 的范围 (%s..%s)" - -#: commands/sequence.c:936 lib/stringinfo.c:266 libpq/auth.c:1020 -#: libpq/auth.c:1374 libpq/auth.c:1442 libpq/auth.c:2016 -#: storage/buffer/buf_init.c:154 storage/buffer/localbuf.c:348 -#: storage/file/fd.c:355 storage/file/fd.c:738 storage/file/fd.c:856 -#: storage/ipc/procarray.c:841 storage/ipc/procarray.c:1219 -#: storage/ipc/procarray.c:1226 storage/ipc/procarray.c:1457 -#: storage/ipc/procarray.c:1851 postmaster/postmaster.c:1968 -#: postmaster/postmaster.c:2001 postmaster/postmaster.c:3183 -#: postmaster/postmaster.c:3861 postmaster/postmaster.c:3942 -#: postmaster/postmaster.c:4530 utils/mmgr/aset.c:408 utils/mmgr/aset.c:587 -#: utils/mmgr/aset.c:770 utils/mmgr/aset.c:976 utils/adt/formatting.c:1491 -#: utils/adt/formatting.c:1547 utils/adt/formatting.c:1604 -#: utils/adt/regexp.c:205 utils/adt/varlena.c:3246 utils/adt/varlena.c:3267 -#: utils/misc/guc.c:2915 utils/misc/guc.c:2928 utils/misc/guc.c:2941 -#: utils/fmgr/dfmgr.c:224 utils/hash/dynahash.c:363 utils/hash/dynahash.c:435 -#: utils/hash/dynahash.c:929 utils/init/miscinit.c:149 -#: utils/init/miscinit.c:170 utils/init/miscinit.c:180 utils/mb/mbutils.c:334 -#: utils/mb/mbutils.c:606 -msgid "out of memory" -msgstr "内存用尽" +msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\"" +msgstr "插入或更新表 \"%s\" 违反外键约束 \"%s\"" -#: commands/sequence.c:1096 -msgid "INCREMENT must not be zero" -msgstr "INCREMENT 不必为零" +#: utils/adt/ri_triggers.c:412 utils/adt/ri_triggers.c:2844 +msgid "MATCH FULL does not allow mixing of null and nonnull key values." +msgstr "MATCH FULL 不允许空和非空键值的混合." -#: commands/sequence.c:1142 +#: utils/adt/ri_triggers.c:3080 commands/constraint.c:59 #, c-format -msgid "MINVALUE (%s) must be less than MAXVALUE (%s)" -msgstr "MINVALUE (%s) 必需小于 MAXVALUE (%s)" +msgid "function \"%s\" was not called by trigger manager" +msgstr "函数 \"%s\" 没有被触发器管理器调用" -#: commands/sequence.c:1167 +#: utils/adt/ri_triggers.c:3089 commands/constraint.c:66 #, c-format -msgid "START value (%s) cannot be less than MINVALUE (%s)" -msgstr "START 值 (%s) 不能小于 MINVALUE (%s)" +msgid "function \"%s\" must be fired AFTER ROW" +msgstr "函数 \"%s\"必须为AFTER ROW触发" -#: commands/sequence.c:1179 +#: utils/adt/ri_triggers.c:3097 #, c-format -msgid "START value (%s) cannot be greater than MAXVALUE (%s)" -msgstr "START 值 (%s) 不能大于 MAXVALUE (%s)" +msgid "function \"%s\" must be fired for INSERT" +msgstr "函数 \"%s\"必须为INSERT操作触发" -#: commands/sequence.c:1210 +#: utils/adt/ri_triggers.c:3103 #, c-format -msgid "RESTART value (%s) cannot be less than MINVALUE (%s)" -msgstr "RESTART值 (%s) 不能小于 MINVALUE (%s)" +msgid "function \"%s\" must be fired for UPDATE" +msgstr "函数 \"%s\"必须为UPDATE操作触发" -#: commands/sequence.c:1222 +#: utils/adt/ri_triggers.c:3110 commands/constraint.c:80 #, c-format -msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)" -msgstr "RESTART 值 (%s) 不能大于 MAXVALUE (%s)" +msgid "function \"%s\" must be fired for INSERT or UPDATE" +msgstr "函数 \"%s\"必须为INSERT或UPDATE操作触发" -#: commands/sequence.c:1237 +#: utils/adt/ri_triggers.c:3117 #, c-format -msgid "CACHE (%s) must be greater than zero" -msgstr "CACHE (%s) 必须大于零" +msgid "function \"%s\" must be fired for DELETE" +msgstr "函数 \"%s\"必须为DELETE操作触发" -#: commands/sequence.c:1268 -msgid "invalid OWNED BY option" -msgstr "无效的OWNED BY选项" +#: utils/adt/ri_triggers.c:3146 +#, c-format +msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\"" +msgstr "在pg_constraint上没有对于表 \"%2$s\" 上的触发器 \"%1$s\" 的项" -#: commands/sequence.c:1269 -msgid "Specify OWNED BY table.column or OWNED BY NONE." -msgstr "指定OWNED BY 表.列 or OWNED BY NONE." +#: utils/adt/ri_triggers.c:3148 +msgid "" +"Remove this referential integrity trigger and its mates, then do ALTER TABLE " +"ADD CONSTRAINT." +msgstr "" +"删除这个参照完整性触发器和与它相关的对象,然后执行ALTER TABLE ADD CONSTRAINT" +"操作." -#: commands/sequence.c:1291 commands/tablecmds.c:4808 +#: utils/adt/ri_triggers.c:3502 #, c-format -msgid "referenced relation \"%s\" is not a table" -msgstr "关联的关系 \"%s\" 不是一个表" - -#: commands/sequence.c:1298 -msgid "sequence must have same owner as table it is linked to" -msgstr "序列的属主必须和与它相链接的表的属主相同." +msgid "" +"referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave " +"unexpected result" +msgstr "" +"从在\"%3$s\"的约束\"%2$s\"中在\"%1$s\"上执行的参照完整性查询得出非期待结果." -#: commands/sequence.c:1302 -msgid "sequence must be in same schema as table it is linked to" -msgstr "序列必须和与它相链接的表存放在同一个模式" +#: utils/adt/ri_triggers.c:3506 +msgid "This is most likely due to a rule having rewritten the query." +msgstr "这很可能是由于规则正在重写查询" -#: commands/tablecmds.c:192 +#: utils/adt/ri_triggers.c:3537 #, c-format -msgid "table \"%s\" does not exist" -msgstr "表 \"%s\" 不存在" +msgid "No rows were found in \"%s\"." +msgstr "在 \"%s\" 没有发现行." -#: commands/tablecmds.c:193 +#: utils/adt/ri_triggers.c:3569 #, c-format -msgid "table \"%s\" does not exist, skipping" -msgstr "表 \"%s\" 不存在" - -#: commands/tablecmds.c:195 -msgid "Use DROP TABLE to remove a table." -msgstr "请使用 DROP TABLE 删除一个表." +msgid "Key (%s)=(%s) is not present in table \"%s\"." +msgstr "键值对(%s)=(%s)没有在表\"%s\"中出现." -#: commands/tablecmds.c:198 +#: utils/adt/ri_triggers.c:3575 #, c-format -msgid "sequence \"%s\" does not exist" -msgstr "序列 \"%s\" 不存在" +msgid "" +"update or delete on table \"%s\" violates foreign key constraint \"%s\" on " +"table \"%s\"" +msgstr "在 \"%1$s\" 上的更新或删除操作违反了在 \"%3$s\" 上的外键约束 \"%2$s\"" -#: commands/tablecmds.c:199 +#: utils/adt/ri_triggers.c:3578 #, c-format -msgid "sequence \"%s\" does not exist, skipping" -msgstr "序列 \"%s\" 不存在" - -#: commands/tablecmds.c:201 -msgid "Use DROP SEQUENCE to remove a sequence." -msgstr "请使用 DROP SEQUENCE 删除一个序列." +msgid "Key (%s)=(%s) is still referenced from table \"%s\"." +msgstr "键值对(%s)=(%s)仍然是从表\"%s\"引用的." -#: commands/tablecmds.c:204 +#: 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 "view \"%s\" does not exist" -msgstr "视图 \"%s\" 不存在" +msgid "invalid input syntax for type numeric: \"%s\"" +msgstr "无效的数字类型输入语法: \"%s\"" -#: commands/tablecmds.c:205 -#, c-format -msgid "view \"%s\" does not exist, skipping" -msgstr "视图 \"%s\" 不存在" +#: utils/adt/numeric.c:653 +msgid "invalid length in external \"numeric\" value" +msgstr "无效的外部 \"numeric\" 值长度" -#: commands/tablecmds.c:207 -msgid "Use DROP VIEW to remove a view." -msgstr "请使用 DROP VIEW 删除一个视图." +#: utils/adt/numeric.c:664 +msgid "invalid sign in external \"numeric\" value" +msgstr "无效的外部 \"numeric\" 值符号" -#: commands/tablecmds.c:210 -#, c-format -msgid "index \"%s\" does not exist" -msgstr "索引 \"%s\" 不存在" +#: utils/adt/numeric.c:674 +msgid "invalid digit in external \"numeric\" value" +msgstr "无效的外部 \"numeric\" 值位数" -#: commands/tablecmds.c:211 +#: utils/adt/numeric.c:814 utils/adt/numeric.c:828 #, c-format -msgid "index \"%s\" does not exist, skipping" -msgstr "索引 \"%s\" 不存在" - -#: commands/tablecmds.c:213 -msgid "Use DROP INDEX to remove an index." -msgstr "请使用 DROP INDEX 删除一个索引." +msgid "NUMERIC precision %d must be between 1 and %d" +msgstr "NUMERIC %d 的精度必须在 1 和 %d 之间" -#: commands/tablecmds.c:217 commands/typecmds.c:656 +#: utils/adt/numeric.c:819 #, c-format -msgid "type \"%s\" does not exist, skipping" -msgstr "类型 \"%s\" 不存在" +msgid "NUMERIC scale %d must be between 0 and precision %d" +msgstr "NUMERIC 数值范围 %d 必须在 0 和精度 %d 之间" -#: commands/tablecmds.c:218 -#, c-format -msgid "\"%s\" is not a type" -msgstr "\"%s\" 不是一个类型" +# fe-exec.c:2055 +#: utils/adt/numeric.c:837 +msgid "invalid NUMERIC type modifier" +msgstr "无效的NUMERIC类型修改器" -#: commands/tablecmds.c:219 -msgid "Use DROP TYPE to remove a type." -msgstr "请使用 DROP TYPE 删除一个类型." +#: utils/adt/numeric.c:1881 utils/adt/numeric.c:3754 +msgid "value overflows numeric format" +msgstr "值溢出数字格式" -#: commands/tablecmds.c:390 executor/execMain.c:2091 -msgid "ON COMMIT can only be used on temporary tables" -msgstr "ON COMMIT 只能被用于临时表" +#: utils/adt/numeric.c:2229 +msgid "cannot convert NaN to integer" +msgstr "无法转化 NaN 为整数" -#: commands/tablecmds.c:400 executor/execMain.c:2101 -msgid "cannot create temporary table within security-restricted operation" -msgstr "不能在安全限制的操作中创建临时表" +#: utils/adt/numeric.c:2297 +msgid "cannot convert NaN to bigint" +msgstr "无法转换 NaN 为 bigint" -#: commands/tablecmds.c:777 commands/tablecmds.c:1109 -#: commands/tablecmds.c:2001 commands/tablecmds.c:3366 -#: commands/tablecmds.c:3395 commands/tablecmds.c:4814 commands/trigger.c:155 -#: commands/trigger.c:1069 tcop/utility.c:92 rewrite/rewriteDefine.c:258 -#, c-format -msgid "permission denied: \"%s\" is a system catalog" -msgstr "权限不够: \"%s\" 是一个系统表" +#: utils/adt/numeric.c:2345 +msgid "cannot convert NaN to smallint" +msgstr "无法转换 NaN 为 smallint" -#: commands/tablecmds.c:889 +#: utils/adt/numeric.c:3824 +msgid "numeric field overflow" +msgstr "数字字段溢出" + +#: utils/adt/numeric.c:3825 #, c-format -msgid "truncate cascades to table \"%s\"" -msgstr "级联截断表\"%s\"" +msgid "" +"A field with precision %d, scale %d must round to an absolute value less " +"than %s%d." +msgstr "精度为%d,范围是%d的字段必须四舍五入到小于%s%d的绝对值." -#: commands/tablecmds.c:1119 -msgid "cannot truncate temporary tables of other sessions" -msgstr "不能缩短其他会话的临时表" +#: utils/adt/numeric.c:5273 +msgid "argument for function \"exp\" too big" +msgstr "对于函数 \"exp\" 参数太大" -#: commands/tablecmds.c:1314 parser/parse_utilcmd.c:590 -#: parser/parse_utilcmd.c:1408 +#: utils/adt/tsvector_parser.c:137 #, c-format -msgid "inherited relation \"%s\" is not a table" -msgstr "继承关系 \"%s\" 不是一个表" +msgid "syntax error in tsvector: \"%s\"" +msgstr "在tsvector中的语法错误:\"%s\" " -#: commands/tablecmds.c:1320 commands/tablecmds.c:7206 +#: utils/adt/tsvector_parser.c:202 #, c-format -msgid "cannot inherit from temporary relation \"%s\"" -msgstr "不能从临时关系 \"%s\" 继承" +msgid "there is no escaped character: \"%s\"" +msgstr "那里没有转义的字符: \"%s\"" -#: commands/tablecmds.c:1337 commands/tablecmds.c:7234 +#: utils/adt/tsvector_parser.c:319 #, c-format -msgid "relation \"%s\" would be inherited from more than once" -msgstr "关系 \"%s\" 将被继承多次" +msgid "wrong position info in tsvector: \"%s\"" +msgstr "在tsvector中的错误位置信息: \"%s\"" -#: commands/tablecmds.c:1392 +#: utils/adt/regproc.c:123 utils/adt/regproc.c:143 #, c-format -msgid "merging multiple inherited definitions of column \"%s\"" -msgstr "合并属性 \"%s\" 的多个继承定义" +msgid "more than one function named \"%s\"" +msgstr "多个函数名为 \"%s\"" -#: commands/tablecmds.c:1400 +#: 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 #, c-format -msgid "inherited column \"%s\" has a type conflict" -msgstr "继承属性 \"%s\" 类型冲突" +msgid "operator does not exist: %s" +msgstr "操作符不存在: %s" -#: commands/tablecmds.c:1402 commands/tablecmds.c:1414 -#: commands/tablecmds.c:1574 commands/tablecmds.c:1586 -#: parser/parse_coerce.c:1438 parser/parse_coerce.c:1457 -#: parser/parse_coerce.c:1502 parser/parse_param.c:214 +#: utils/adt/regproc.c:468 utils/adt/regproc.c:488 #, c-format -msgid "%s versus %s" -msgstr "%s 对 %s" +msgid "more than one operator named %s" +msgstr "多个操作符名为 %s" -#: commands/tablecmds.c:1412 -#, c-format -msgid "inherited column \"%s\" has a storage parameter conflict" -msgstr "继承列 \"%s\" 有一个存储参数冲突" +#: utils/adt/regproc.c:630 gram.y:6217 +msgid "missing argument" +msgstr "缺少参数" -#: commands/tablecmds.c:1564 -#, c-format -msgid "merging column \"%s\" with inherited definition" -msgstr "合并属性 \"%s\" 连同继承定义" +#: utils/adt/regproc.c:631 gram.y:6218 +msgid "Use NONE to denote the missing argument of a unary operator." +msgstr "使用 NONE 表示一元操作符缺少的参数." -#: commands/tablecmds.c:1572 -#, c-format -msgid "column \"%s\" has a type conflict" -msgstr "属性 \"%s\" 类型冲突" +#: utils/adt/regproc.c:636 +msgid "Provide two argument types for operator." +msgstr "为操作符提供两个参数类型." -#: commands/tablecmds.c:1584 +#: utils/adt/regproc.c:810 commands/lockcmds.c:127 catalog/namespace.c:290 +#: parser/parse_relation.c:855 parser/parse_relation.c:863 #, c-format -msgid "column \"%s\" has a storage parameter conflict" -msgstr "列 \"%s\" 带有一个冲突的存储参数" +msgid "relation \"%s\" does not exist" +msgstr "关系 \"%s\" 不存在" -#: commands/tablecmds.c:1636 +#: utils/adt/regproc.c:973 commands/tablecmds.c:225 +#: commands/functioncmds.c:128 commands/typecmds.c:660 +#: commands/typecmds.c:2661 parser/parse_func.c:1502 parser/parse_type.c:196 #, c-format -msgid "column \"%s\" inherits conflicting default values" -msgstr "属性 \"%s\" 继承与默认值冲突" +msgid "type \"%s\" does not exist" +msgstr "类型 \"%s\" 不存在" -#: commands/tablecmds.c:1638 -msgid "To resolve the conflict, specify a default explicitly." -msgstr "要解决冲突, 指定明确的默认值" +#: utils/adt/regproc.c:1383 +msgid "expected a left parenthesis" +msgstr "需要一个左括弧" -#: commands/tablecmds.c:1685 -#, c-format -msgid "" -"check constraint name \"%s\" appears multiple times but with different " -"expressions" -msgstr "检查约束名称\"%s\"出现多次,但是带有不同的表达式" +#: utils/adt/regproc.c:1399 +msgid "expected a right parenthesis" +msgstr "需要一个右括弧" -#: commands/tablecmds.c:1973 -msgid "cannot rename column of typed table" -msgstr "无法重新命名已确定类型表(typed table)的列" +#: utils/adt/regproc.c:1418 +msgid "expected a type name" +msgstr "需要一个类型名字" -#: commands/tablecmds.c:1989 -#, c-format -msgid "\"%s\" is not a table, view, composite type or index" -msgstr "\"%s\" 不是一个表,视图,组合类型或者索引" +#: utils/adt/regproc.c:1450 +msgid "improper type name" +msgstr "不正确的类型名字" -#: commands/tablecmds.c:2055 +#: snowball/dict_snowball.c:183 #, c-format -msgid "inherited column \"%s\" must be renamed in child tables too" -msgstr "在子表中继承属性 \"%s\" 也必需重命名" +msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\"" +msgstr "对于语言\"%s\" 和编码\"%s\"来说,没有有效的Snowball stemmer " -#: commands/tablecmds.c:2073 -#, c-format -msgid "cannot rename system column \"%s\"" -msgstr "不能对系统字段 \"%s\" 重命名" +#: snowball/dict_snowball.c:206 tsearch/dict_ispell.c:75 +#: tsearch/dict_simple.c:50 +msgid "multiple StopWords parameters" +msgstr "多个 StopWords参数" -#: commands/tablecmds.c:2088 -#, c-format -msgid "cannot rename inherited column \"%s\"" -msgstr "不能对继承字段 \"%s\" 重命名" +#: snowball/dict_snowball.c:215 +msgid "multiple Language parameters" +msgstr "多语言参数" -#: commands/tablecmds.c:2099 commands/tablecmds.c:3710 +#: snowball/dict_snowball.c:222 #, c-format -msgid "column \"%s\" of relation \"%s\" already exists" -msgstr "关系 \"%s\" 的属性 \"%s\" 已经存在" +msgid "unrecognized Snowball parameter: \"%s\"" +msgstr "未识别Snowball参数: \"%s\"" -#: commands/tablecmds.c:2164 commands/tablecmds.c:6530 -#: commands/tablecmds.c:7836 -msgid "Use ALTER TYPE instead." -msgstr "请使用ALTER TYPE" +#: snowball/dict_snowball.c:230 +msgid "missing Language parameter" +msgstr "缺少语言参数" -#. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2287 +#: bootstrap/bootstrap.c:302 #, c-format -msgid "" -"cannot %s \"%s\" because it is being used by active queries in this session" -msgstr "无法%s \"%s\" 因为它正在被这个会话中的活动查询使用" +msgid "%s: invalid command-line arguments\n" +msgstr "%s: 无效的命令行参数\n" -#. translator: first %s is a SQL command, eg ALTER TABLE -#: commands/tablecmds.c:2296 +#: lib/stringinfo.c:267 #, c-format -msgid "cannot %s \"%s\" because it has pending trigger events" -msgstr "无法%s \"%s\"因为它有一个待发生的触发器事件" +msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes." +msgstr "无法为包含%d字节的字符串缓冲区扩大%d个更多字节." -#: commands/tablecmds.c:2909 +#: tsearch/ts_locale.c:177 #, c-format -msgid "cannot rewrite system relation \"%s\"" -msgstr "不能改写系统关系 \"%s\"" - -#: commands/tablecmds.c:2919 -msgid "cannot rewrite temporary tables of other sessions" -msgstr "不能改写其他会话的临时表" +msgid "line %d of configuration file \"%s\": \"%s\"" +msgstr "配置文件\"%2$s\"的第%1$d行: \"%3$s\"" -#: commands/tablecmds.c:3243 +#: tsearch/ts_locale.c:182 libpq/hba.c:781 libpq/hba.c:797 libpq/hba.c:833 +#: libpq/hba.c:855 libpq/hba.c:864 libpq/hba.c:887 libpq/hba.c:899 +#: libpq/hba.c:912 libpq/hba.c:927 libpq/hba.c:982 libpq/hba.c:1002 +#: libpq/hba.c:1016 libpq/hba.c:1033 libpq/hba.c:1046 libpq/hba.c:1062 +#: libpq/hba.c:1077 libpq/hba.c:1119 libpq/hba.c:1151 libpq/hba.c:1162 +#: libpq/hba.c:1182 libpq/hba.c:1193 libpq/hba.c:1204 libpq/hba.c:1221 +#: libpq/hba.c:1242 libpq/hba.c:1272 libpq/hba.c:1284 libpq/hba.c:1297 +#: libpq/hba.c:1331 libpq/hba.c:1405 libpq/hba.c:1423 libpq/hba.c:1444 +#: libpq/hba.c:1475 libpq/hba.c:1485 #, c-format -msgid "column \"%s\" contains null values" -msgstr "字段 \"%s\" 包含空值" +msgid "line %d of configuration file \"%s\"" +msgstr "配置文件\"%2$s\"的第%1$d行" -#: commands/tablecmds.c:3257 +#: tsearch/ts_locale.c:302 #, c-format -msgid "check constraint \"%s\" is violated by some row" -msgstr "一些行违反了检查约束 \"%s\"" +msgid "conversion from wchar_t to server encoding failed: %m" +msgstr "从wchar_t转换到服务器编码失败: %m" -#: commands/tablecmds.c:3348 rewrite/rewriteDefine.c:252 +#: tsearch/dict_thesaurus.c:180 #, c-format -msgid "\"%s\" is not a table or view" -msgstr "\"%s\" 不是一个视图或视图" - -#: commands/tablecmds.c:3384 commands/tablecmds.c:4136 -#, c-format -msgid "\"%s\" is not a table or index" -msgstr "\"%s\" 不是一个表或索引" - -#: commands/tablecmds.c:3539 -#, c-format -msgid "cannot alter table \"%s\" because column \"%s\".\"%s\" uses its rowtype" -msgstr "无法修改表\"%s\" ,因为列\"%s\".\"%s\"使用它的记录类型" +msgid "could not open thesaurus file \"%s\": %m" +msgstr "无法打开同义词词典文件 \"%s\": %m" -#: commands/tablecmds.c:3546 -#, c-format -msgid "cannot alter type \"%s\" because column \"%s\".\"%s\" uses it" -msgstr "不能修改类型 \"%s\", 因为列 \"%s\".\"%s\"正在使用它" +#: tsearch/dict_thesaurus.c:213 +msgid "unexpected delimiter" +msgstr "意外出现的分隔符" -#: commands/tablecmds.c:3593 -msgid "cannot add column to typed table" -msgstr "无法为已确定类型表(typed table)添加列" +#: tsearch/dict_thesaurus.c:263 tsearch/dict_thesaurus.c:279 +msgid "unexpected end of line or lexeme" +msgstr "意外出现的行或词汇末尾" -#: commands/tablecmds.c:3622 -msgid "column must be added to child tables too" -msgstr "属性也必需加入到子表中" +#: tsearch/dict_thesaurus.c:288 +msgid "unexpected end of line" +msgstr "意外的输入末尾" -#: commands/tablecmds.c:3667 commands/tablecmds.c:7390 +#: tsearch/dict_thesaurus.c:412 #, c-format -msgid "child table \"%s\" has different type for column \"%s\"" -msgstr "子表 \"%s\" 的字段 \"%s\" 有不同的类型" +msgid "" +"thesaurus sample word \"%s\" isn't recognized by subdictionary (rule %d)" +msgstr "(规则 %2$d)子字典没有识别同义词字典样例词\"%1$s\" " -#: commands/tablecmds.c:3674 +#: tsearch/dict_thesaurus.c:418 #, c-format -msgid "child table \"%s\" has a conflicting \"%s\" column" -msgstr "子表\"%s\"有一个冲突列\"%s\"" +msgid "thesaurus sample word \"%s\" is a stop word (rule %d)" +msgstr "(规则 %2$d)同义词字典样例词\"%1$s\"是一个终止词. " -#: commands/tablecmds.c:3686 -#, c-format -msgid "merging definition of column \"%s\" for child \"%s\"" -msgstr "合并子表 \"%2$s\" 的字段 \"%1$s\" 定义" +#: tsearch/dict_thesaurus.c:421 +msgid "Use \"?\" to represent a stop word within a sample phrase." +msgstr "在示例短语中使用\"?\" 来代表一个结束词." -#: commands/tablecmds.c:3958 commands/tablecmds.c:4048 -#: commands/tablecmds.c:4093 commands/tablecmds.c:4189 -#: commands/tablecmds.c:4233 commands/tablecmds.c:4312 -#: commands/tablecmds.c:5846 +#: tsearch/dict_thesaurus.c:567 #, c-format -msgid "cannot alter system column \"%s\"" -msgstr "不能更改系统字段 \"%s\"" +msgid "thesaurus substitute word \"%s\" is a stop word (rule %d)" +msgstr "(规则 %2$d)同义词字典替代词\"%1$s\"是一个终止词. " -#: commands/tablecmds.c:3992 +#: tsearch/dict_thesaurus.c:574 #, c-format -msgid "column \"%s\" is in a primary key" -msgstr "字段 \"%s\" 是一个主键" +msgid "" +"thesaurus substitute word \"%s\" isn't recognized by subdictionary (rule %d)" +msgstr "(规则 %2$d)子字典没有识别同义词字典替代词\"%1$s\"" -#: commands/tablecmds.c:4163 +#: tsearch/dict_thesaurus.c:586 #, c-format -msgid "statistics target %d is too low" -msgstr "目标统计 %d 太低" +msgid "thesaurus substitute phrase is empty (rule %d)" +msgstr "(规则 %d)同义词字典替代短语是空的" -#: commands/tablecmds.c:4171 -#, c-format -msgid "lowering statistics target to %d" -msgstr "降低目标统计到 %d" +#: tsearch/dict_thesaurus.c:615 tsearch/dict_ispell.c:53 +msgid "multiple DictFile parameters" +msgstr "多个DictFile参数" -#: commands/tablecmds.c:4293 -#, c-format -msgid "invalid storage type \"%s\"" -msgstr "无效存储类型 \"%s\"" +#: tsearch/dict_thesaurus.c:624 +msgid "multiple Dictionary parameters" +msgstr "多个字典参数" -#: commands/tablecmds.c:4324 +#: tsearch/dict_thesaurus.c:631 #, c-format -msgid "column data type %s can only have storage PLAIN" -msgstr "字段数据类型 %s 只能存储为明文 (PLAIN)" +msgid "unrecognized Thesaurus parameter: \"%s\"" +msgstr "未识别的同义词字典参数 \"%s\"" -#: commands/tablecmds.c:4353 -msgid "cannot drop column from typed table" -msgstr "无法从已确定类型表(typed table)中删除列" +#: tsearch/dict_thesaurus.c:639 tsearch/dict_ispell.c:103 +msgid "missing DictFile parameter" +msgstr "丢失DictFile参数" -#: commands/tablecmds.c:4392 -#, c-format -msgid "column \"%s\" of relation \"%s\" does not exist, skipping" -msgstr "关系 \"%2$s\" 的 列\"%1$s\"不存在" +#: tsearch/dict_thesaurus.c:643 +msgid "missing Dictionary parameter" +msgstr "丢失字典参数" + +#: 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 "词太长以至于不能作为索引" -#: commands/tablecmds.c:4405 +#: tsearch/ts_parse.c:392 tsearch/ts_parse.c:399 tsearch/ts_parse.c:562 +#: tsearch/ts_parse.c:569 #, c-format -msgid "cannot drop system column \"%s\"" -msgstr "不能删除系统字段 \"%s\"" +msgid "Words longer than %d characters are ignored." +msgstr "超出%d个字符长度的词被忽略." + +#: tsearch/wparser.c:314 +msgid "text search parser does not support headline creation" +msgstr "文本搜索解析器不支持标题创建" -#: commands/tablecmds.c:4412 +#: tsearch/wparser_def.c:2551 #, c-format -msgid "cannot drop inherited column \"%s\"" -msgstr "不能删除继承字段 \"%s\"" +msgid "unrecognized headline parameter: \"%s\"" +msgstr "未识别的标题参数: \"%s\"" -#: commands/tablecmds.c:4743 -msgid "constraint must be added to child tables too" -msgstr "必须也要对子表加上约束" +#: tsearch/wparser_def.c:2560 +msgid "MinWords should be less than MaxWords" +msgstr "MinWords的值应该小于MaxWords的值" -#: commands/tablecmds.c:4830 -msgid "cannot reference temporary table from permanent table constraint" -msgstr "不可以从固定表约束关联临时表" +#: tsearch/wparser_def.c:2564 +msgid "MinWords should be positive" +msgstr "MinWord应该是正数." -#: commands/tablecmds.c:4837 -msgid "cannot reference permanent table from temporary table constraint" -msgstr "不可以从临时表约束关联固定表" +#: tsearch/wparser_def.c:2568 +msgid "ShortWord should be >= 0" +msgstr "ShortWord应该大于等于0" -#: commands/tablecmds.c:4897 -msgid "number of referencing and referenced columns for foreign key disagree" -msgstr "外键的关联数和关联字段不一致" +#: tsearch/wparser_def.c:2572 +msgid "MaxFragments should be >= 0" +msgstr "MaxFragments应该大于等于0" -#: commands/tablecmds.c:4986 +#: tsearch/spell.c:276 #, c-format -msgid "foreign key constraint \"%s\" cannot be implemented" -msgstr "无法实现外键约束 \"%s\"" +msgid "could not open dictionary file \"%s\": %m" +msgstr "无法打开字典文件 \"%s\": %m" -#: commands/tablecmds.c:4989 -#, c-format -msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s." -msgstr "关键字段 \"%s\" 和 \"%s\" 为混和类型: %s 和 %s." +#: tsearch/spell.c:518 tsearch/spell.c:535 tsearch/spell.c:552 +#: tsearch/spell.c:569 tsearch/spell.c:591 gram.y:12477 gram.y:12494 +msgid "syntax error" +msgstr "语法错误" -#: commands/tablecmds.c:5084 -#, c-format -msgid "column \"%s\" referenced in foreign key constraint does not exist" -msgstr "在外键约束中的关联字段 \"%s\" 不存在" +#: tsearch/spell.c:596 tsearch/spell.c:842 tsearch/spell.c:862 +msgid "multibyte flag character is not allowed" +msgstr "不允许使用多字节标志字符" -#: commands/tablecmds.c:5089 +#: tsearch/spell.c:629 tsearch/spell.c:687 tsearch/spell.c:780 #, c-format -msgid "cannot have more than %d keys in a foreign key" -msgstr "在一个外键中不能超过 %d 个键" +msgid "could not open affix file \"%s\": %m" +msgstr "无法打开affix文件 \"%s\": %m" -#: commands/tablecmds.c:5154 -#, c-format -msgid "cannot use a deferrable primary key for referenced table \"%s\"" -msgstr "无法为被引用的表\"%s\"使用可延迟的主键" +#: tsearch/spell.c:675 +msgid "Ispell dictionary supports only default flag value" +msgstr "Ispell 字典只支持缺省标记值" -#: commands/tablecmds.c:5171 -#, c-format -msgid "there is no primary key for referenced table \"%s\"" -msgstr "关联表 \"%s\" 没有主键" +#: tsearch/spell.c:873 +msgid "wrong affix file format for flag" +msgstr "对于标志的词缀文件格式错误" + +#: tsearch/dict_ispell.c:64 +msgid "multiple AffFile parameters" +msgstr "多个AffFile参数" -#: commands/tablecmds.c:5321 +#: tsearch/dict_ispell.c:83 #, c-format -msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" -msgstr "无法为被引用的表\"%s\"使用可延迟的唯一性约束" +msgid "unrecognized Ispell parameter: \"%s\"" +msgstr "未识别的Ispell参数: \"%s\"" -#: commands/tablecmds.c:5326 +#: tsearch/dict_ispell.c:97 +msgid "missing AffFile parameter" +msgstr "丢失AffFile参数" + +# describe.c:641 +#: tsearch/ts_utils.c:53 #, c-format -msgid "" -"there is no unique constraint matching given keys for referenced table \"%s\"" -msgstr "没有唯一约束与关联表 \"%s\" 给定的键值匹配" +msgid "invalid text search configuration file name \"%s\"" +msgstr "无效的文本搜索配置文件名\"%s\"" -#: commands/tablecmds.c:5656 +#: tsearch/ts_utils.c:91 #, c-format -msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" -msgstr "不能删除关系\"%2$s\"的继承约束\"%1$s\"" +msgid "could not open stop-word file \"%s\": %m" +msgstr "无法打开stop-word 文件 \"%s\": %m" -#: commands/tablecmds.c:5683 commands/tablecmds.c:5797 +#: tsearch/dict_synonym.c:119 #, c-format -msgid "constraint \"%s\" of relation \"%s\" does not exist" -msgstr "关系 \"%2$s\" 的 约束\"%1$s\" 不存在" +msgid "unrecognized synonym parameter: \"%s\"" +msgstr "未识别的同义词参数: \"%s\"" -#: commands/tablecmds.c:5689 +#: tsearch/dict_synonym.c:126 +msgid "missing Synonyms parameter" +msgstr "丢失同义词参数" + +#: tsearch/dict_synonym.c:133 #, c-format -msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" -msgstr "关系 \"%2$s\" 的 约束\"%1$s\" 不存在" +msgid "could not open synonym file \"%s\": %m" +msgstr "无法打开synonym文件 \"%s\": %m" -#: commands/tablecmds.c:5830 -msgid "cannot alter column type of typed table" -msgstr "无法修改已确定类型表(typed table)中列的类型" +#: tsearch/dict_simple.c:59 +msgid "multiple Accept parameters" +msgstr "多个接受参数" -#: commands/tablecmds.c:5853 +#: tsearch/dict_simple.c:67 #, c-format -msgid "cannot alter inherited column \"%s\"" -msgstr "不能修改继承字段 \"%s\"" +msgid "unrecognized simple dictionary parameter: \"%s\"" +msgstr "未识别简单字典参数:\"%s\"" -#: commands/tablecmds.c:5888 -msgid "transform expression must not return a set" -msgstr "转换表达式不能返回一个组合" +#: tcop/pquery.c:660 +#, c-format +msgid "bind message has %d result formats but query has %d columns" +msgstr "绑定信息有%d个结果格式,但是在查询中有%d列." -#: commands/tablecmds.c:5894 -msgid "cannot use subquery in transform expression" -msgstr "在转换表达式中不能使用子查询" +#: tcop/pquery.c:738 tcop/pquery.c:1401 commands/portalcmds.c:340 +#, c-format +msgid "portal \"%s\" cannot be run" +msgstr "入口 \"%s\" 不可以运行" -#: commands/tablecmds.c:5898 -msgid "cannot use aggregate function in transform expression" -msgstr "转换表达式中不能使用聚合函数" +#: tcop/pquery.c:969 +msgid "cursor can only scan forward" +msgstr "游标能够只向前扫描" -#: commands/tablecmds.c:5902 -msgid "cannot use window function in transform expression" -msgstr "在转换表达式中不能使用窗口函数" +#: tcop/pquery.c:970 +msgid "Declare it with SCROLL option to enable backward scan." +msgstr "带 SCROLL 选项声明允许向后扫描" -#: commands/tablecmds.c:5920 +#: tcop/fastpath.c:109 tcop/fastpath.c:485 tcop/fastpath.c:615 #, c-format -msgid "column \"%s\" cannot be cast to type %s" -msgstr "字段 \"%s\" 不能转换成类型 \"%s\"" +msgid "invalid argument size %d in function call message" +msgstr "在函数调用信息中, 参数大小 %d 是无效的" -#: commands/tablecmds.c:5946 +#: tcop/fastpath.c:180 tcop/fastpath.c:554 tcop/postgres.c:1666 +#: access/common/printtup.c:278 #, c-format -msgid "type of inherited column \"%s\" must be changed in child tables too" -msgstr "在子表中继承字段 \"%s\" 的类型也必需改变" +msgid "unsupported format code: %d" +msgstr "不支持的格式代码: %d" -#: commands/tablecmds.c:5985 +#: tcop/fastpath.c:221 catalog/aclchk.c:3547 catalog/aclchk.c:4297 #, c-format -msgid "cannot alter type of column \"%s\" twice" -msgstr "不能更改字段 \"%s\" 的类型两遍" +msgid "function with OID %u does not exist" +msgstr "OID 为 %u 的函数不存在" -#: commands/tablecmds.c:6019 -#, c-format -msgid "default for column \"%s\" cannot be cast to type %s" -msgstr "字段 \"%s\" 的默认值不能转换成类型 \"%s\"" +#: tcop/fastpath.c:290 tcop/postgres.c:351 tcop/postgres.c:374 +#: commands/copy.c:542 commands/copy.c:561 commands/copy.c:565 +msgid "unexpected EOF on client connection" +msgstr "在客户端联接上的意外 EOF" -#: commands/tablecmds.c:6145 -msgid "cannot alter type of a column used by a view or rule" -msgstr "不能使用视图或规则改变一个字段的类型" +#: tcop/fastpath.c:303 tcop/postgres.c:919 tcop/postgres.c:1229 +#: tcop/postgres.c:1510 tcop/postgres.c:1952 tcop/postgres.c:2320 +#: tcop/postgres.c:2401 +msgid "" +"current transaction is aborted, commands ignored until end of transaction " +"block" +msgstr "当前事务被终止, 事务块结束之前的查询被忽略" -#: commands/tablecmds.c:6146 +#: tcop/fastpath.c:331 #, c-format -msgid "%s depends on column \"%s\"" -msgstr "%s 倚赖于字段 \"%s\"" +msgid "fastpath function call: \"%s\" (OID %u)" +msgstr "快捷路径函数调用: \"%s\" (OID %u)" -#: commands/tablecmds.c:6498 +#: tcop/fastpath.c:411 tcop/postgres.c:1089 tcop/postgres.c:1376 +#: tcop/postgres.c:1793 tcop/postgres.c:2010 #, c-format -msgid "cannot change owner of index \"%s\"" -msgstr "无法改变索引\"%s\" 的属主" - -#: commands/tablecmds.c:6500 -msgid "Change the ownership of the index's table, instead." -msgstr "可以改变索引表的所有权" +msgid "duration: %s ms" +msgstr "执行时间: %s ms" -#: commands/tablecmds.c:6516 +#: tcop/fastpath.c:415 #, c-format -msgid "cannot change owner of sequence \"%s\"" -msgstr "无法改变序列 \"%s\"的属主" +msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" +msgstr "持续时间: %s ms 快速路经的函数调用: \"%s\" (OID %u)" -#: commands/tablecmds.c:6518 commands/tablecmds.c:7826 +#: tcop/fastpath.c:453 tcop/fastpath.c:580 #, c-format -msgid "Sequence \"%s\" is linked to table \"%s\"." -msgstr "序列 \"%s\"已链接到表\"%s\"." +msgid "function call message contains %d arguments but function requires %d" +msgstr "函数调用信息包含 %d 个参数, 但函数需要 %d 个" -#: commands/tablecmds.c:6539 commands/tablecmds.c:7844 +#: tcop/fastpath.c:461 #, c-format -msgid "\"%s\" is not a table, view, or sequence" -msgstr "\"%s\" 不是一个表,视图,或者序列" - -#: commands/tablecmds.c:6798 -msgid "cannot have multiple SET TABLESPACE subcommands" -msgstr "无法执行多个SET TABLESPACE子命令" +msgid "function call message contains %d argument formats but %d arguments" +msgstr "函数调用信息为包含 %d 个参数的格式, 但给定了 %d 个参数" -#: commands/tablecmds.c:6850 +#: tcop/fastpath.c:548 tcop/fastpath.c:631 #, c-format -msgid "\"%s\" is not a table, index, or TOAST table" -msgstr "\"%s\"不是表,索引或TOAST表" +msgid "incorrect binary data format in function argument %d" +msgstr "函数参数 %d 为不正确的二进制数据格式" -#: commands/tablecmds.c:6971 +#: tcop/postgres.c:401 tcop/postgres.c:413 tcop/postgres.c:424 +#: tcop/postgres.c:436 tcop/postgres.c:4194 #, c-format -msgid "cannot move system relation \"%s\"" -msgstr "不能删除系统关系 \"%s\"" - -#: commands/tablecmds.c:6987 -msgid "cannot move temporary tables of other sessions" -msgstr "不能在其他会话中删除临时表" - -#: commands/tablecmds.c:7176 -msgid "cannot change inheritance of typed table" -msgstr "无法改变已确定类型表(typed table)的继承性" - -#: commands/tablecmds.c:7261 -msgid "circular inheritance not allowed" -msgstr "不允许循环继承" +msgid "invalid frontend message type %d" +msgstr "无效前端信息类型 %d" -#: commands/tablecmds.c:7262 +#: tcop/postgres.c:860 #, c-format -msgid "\"%s\" is already a child of \"%s\"." -msgstr "\"%s\" 已经是 \"%s\"的子表了." +msgid "statement: %s" +msgstr "语句: %s" -#: commands/tablecmds.c:7270 +#: tcop/postgres.c:1094 #, c-format -msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs" -msgstr "不带有OIDs的表\"%s\"无法从带有OIDs的表\"%s\"继承。" +msgid "duration: %s ms statement: %s" +msgstr "执行时间: %s ms 语句: %s" -#: commands/tablecmds.c:7397 +# 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:1144 #, c-format -msgid "column \"%s\" in child table must be marked NOT NULL" -msgstr "在子表中的列\"%s\"必须标识为NOT NULL" +msgid "parse %s: %s" +msgstr "解析 %s: %s" -#: commands/tablecmds.c:7413 -#, c-format -msgid "child table is missing column \"%s\"" -msgstr "在子表中没有列\"%s\"" +#: tcop/postgres.c:1202 +msgid "cannot insert multiple commands into a prepared statement" +msgstr "无法插入多条命令到一个准备好的语句中" -#: commands/tablecmds.c:7492 +#: tcop/postgres.c:1269 commands/prepare.c:122 parser/parse_param.c:303 #, c-format -msgid "child table \"%s\" has different definition for check constraint \"%s\"" -msgstr "子表 \"%s\" 对于检查约束\"%s\"有不同的定义" +msgid "could not determine data type of parameter $%d" +msgstr "无法确定参数 $%d 的数据类型" -#: commands/tablecmds.c:7516 +#: tcop/postgres.c:1381 #, c-format -msgid "child table is missing constraint \"%s\"" -msgstr "子表丢失约束\"%s\"" +msgid "duration: %s ms parse %s: %s" +msgstr "执行时间: %s ms 解析 %s: %s" -#: commands/tablecmds.c:7597 +#: tcop/postgres.c:1427 #, c-format -msgid "relation \"%s\" is not a parent of relation \"%s\"" -msgstr "关系 \"%s\" 不是关系\"%s\"的父表" - -#: commands/tablecmds.c:7825 -msgid "cannot move an owned sequence into another schema" -msgstr "无法将已分配的序列移动到另一个模式中" +msgid "bind %s to %s" +msgstr "将%s绑定到%s" -#: commands/tablecmds.c:7854 -#, c-format -msgid "relation \"%s\" is already in schema \"%s\"" -msgstr "关系\"%s\"已经在模式\"%s\"中了" +#: tcop/postgres.c:1446 tcop/postgres.c:2300 +msgid "unnamed prepared statement does not exist" +msgstr "未命名的准备语句不存在" -#: commands/tablecmds.c:7917 +#: tcop/postgres.c:1488 #, c-format -msgid "relation \"%s\" already exists in schema \"%s\"" -msgstr "在模式\"%2$s\"中已经存在关系\"%1$s\"" +msgid "bind message has %d parameter formats but %d parameters" +msgstr "绑定信息有%d个参数格式,但是实际上有%d个参数" -#: commands/tablespace.c:157 commands/tablespace.c:174 -#: commands/tablespace.c:185 commands/tablespace.c:193 -#: commands/tablespace.c:598 storage/file/copydir.c:61 +#: tcop/postgres.c:1494 #, c-format -msgid "could not create directory \"%s\": %m" -msgstr "无法创建目录 \"%s\": %m" +msgid "" +"bind message supplies %d parameters, but prepared statement \"%s\" requires " +"%d" +msgstr "绑定消息提供了%d个参数,但是已准备好语句\"%s\" 要求%d个参数" -#: commands/tablespace.c:204 +#: tcop/postgres.c:1659 #, c-format -msgid "could not stat directory \"%s\": %m" -msgstr "无法取目录 \"%s\" 状态: %m" +msgid "incorrect binary data format in bind parameter %d" +msgstr "在绑定参数%d中出现不正确的二进制数据" -#: commands/tablespace.c:213 +#: tcop/postgres.c:1798 #, c-format -msgid "\"%s\" exists but is not a directory" -msgstr "\"%s\" 存在, 但不是一个目录" +msgid "duration: %s ms bind %s%s%s: %s" +msgstr "执行时间: %s ms 绑定%s%s%s: %s" -#: commands/tablespace.c:243 +#: tcop/postgres.c:1846 tcop/postgres.c:2387 #, c-format -msgid "permission denied to create tablespace \"%s\"" -msgstr "创建表空间 \"%s\" 权限不够" - -#: commands/tablespace.c:245 -msgid "Must be superuser to create a tablespace." -msgstr "只有超级用户能创建表空间" +msgid "portal \"%s\" does not exist" +msgstr "入口 \"%s\" 不存在" -#: commands/tablespace.c:261 -msgid "tablespace location cannot contain single quotes" -msgstr "表空间路径不能包含单引号" +#: tcop/postgres.c:1933 tcop/postgres.c:2018 +msgid "execute fetch from" +msgstr "执行FETCH操作" -#: commands/tablespace.c:271 -msgid "tablespace location must be an absolute path" -msgstr "表空间路径必须为绝对路径" +#: tcop/postgres.c:1934 tcop/postgres.c:2019 +msgid "execute" +msgstr "执行" -#: commands/tablespace.c:282 +#: tcop/postgres.c:1931 #, c-format -msgid "tablespace location \"%s\" is too long" -msgstr "表空间路径 \"%s\" 太长" +msgid "%s %s%s%s: %s" +msgstr "%s %s%s%s: %s" -#: commands/tablespace.c:292 commands/tablespace.c:824 +#: tcop/postgres.c:2015 #, c-format -msgid "unacceptable tablespace name \"%s\"" -msgstr "不可访问的表空间名字 \"%s\"" +msgid "duration: %s ms %s %s%s%s: %s" +msgstr "执行时间: %s ms %s%s%s%s: %s" -#: commands/tablespace.c:294 commands/tablespace.c:825 -msgid "The prefix \"pg_\" is reserved for system tablespaces." -msgstr "前缀 \"pg_\" 是保留给系统表空间的." +#: tcop/postgres.c:2141 +#, c-format +msgid "prepare: %s" +msgstr "准备: %s" -#: commands/tablespace.c:304 commands/tablespace.c:837 +#: tcop/postgres.c:2204 #, c-format -msgid "tablespace \"%s\" already exists" -msgstr "表空间 \"%s\" 已经存在" +msgid "parameters: %s" +msgstr "参数: %s" -#: commands/tablespace.c:372 commands/tablespace.c:524 -msgid "tablespaces are not supported on this platform" -msgstr "在此平台上不支持表空间" +#: tcop/postgres.c:2223 +msgid "abort reason: recovery conflict" +msgstr "中断原因:与恢复操作相冲突" -#: commands/tablespace.c:416 -#, c-format -msgid "tablespace \"%s\" does not exist, skipping" -msgstr "表空间 \"%s\" 不存在,跳过" +#: tcop/postgres.c:2239 +msgid "User was holding shared buffer pin for too long." +msgstr "用户所持有共享缓存锁的时间太长了." -#: commands/tablespace.c:481 -#, c-format -msgid "tablespace \"%s\" is not empty" -msgstr "表空间 \"%s\" 不是空的" +#: tcop/postgres.c:2242 +msgid "User was holding a relation lock for too long." +msgstr "用户对一个关系正在持有的锁的时间太长了." -#: commands/tablespace.c:555 -#, c-format -msgid "directory \"%s\" does not exist" -msgstr "目录 \"%s\" 不存在" +#: tcop/postgres.c:2245 +msgid "User was or might have been using tablespace that must be dropped." +msgstr "用户正在使用一个必须被删除的表空间" -#: commands/tablespace.c:556 -#, c-format -msgid "" -"Create directory \"%s\" for this tablespace before restarting the server." -msgstr "在重新启动服务器前为这个表空间创建目录\"%s\"." +#: tcop/postgres.c:2248 +msgid "User query might have needed to see row versions that must be removed." +msgstr "用户查询可能需要看到而必须被删除的行版本号" -#: commands/tablespace.c:561 -#, c-format -msgid "could not set permissions on directory \"%s\": %m" -msgstr "无法为目录 \"%s\" 的设置权限: %m" +#: tcop/postgres.c:2251 storage/ipc/standby.c:498 +msgid "User transaction caused buffer deadlock with recovery." +msgstr "用户事务造成了恢复操作期间缓冲区的死锁" -#: commands/tablespace.c:593 -#, c-format -msgid "directory \"%s\" already in use as a tablespace" -msgstr "目录 \"%s\" 以一个表空间的形式正在使用" +# large_obj.c:36 +#: tcop/postgres.c:2254 +msgid "User was connected to a database that must be dropped." +msgstr "用户连接到必须被删除的数据库" -#: commands/tablespace.c:608 commands/tablespace.c:745 -#, c-format -msgid "could not remove symbolic link \"%s\": %m" -msgstr "无法删除符号链接 \"%s\": %m" +#: tcop/postgres.c:2588 +msgid "terminating connection because of crash of another server process" +msgstr "中断联接, 因为其它服务器进程崩溃" -#: commands/tablespace.c:618 -#, c-format -msgid "could not create symbolic link \"%s\": %m" -msgstr "无法创建符号链接 \"%s\": %m" +#: tcop/postgres.c:2589 +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 命令此服务器进程回滚当前事物并退出, 因为其它服务器进程不正常的退出" +"可能毁坏了共享内存." -#: commands/tablespace.c:679 storage/file/copydir.c:67 -#: storage/file/copydir.c:106 storage/file/fd.c:1572 -#: postmaster/postmaster.c:1142 utils/adt/genfile.c:244 utils/adt/misc.c:213 -#: utils/misc/tzparser.c:345 -#, c-format -msgid "could not open directory \"%s\": %m" -msgstr "无法打开目录 \"%s\": %m" +#: tcop/postgres.c:2593 tcop/postgres.c:2943 +msgid "" +"In a moment you should be able to reconnect to the database and repeat your " +"command." +msgstr "一会儿你将可以重联接数据库并且重复你的命令." -#: commands/tablespace.c:709 commands/tablespace.c:721 -#: commands/tablespace.c:737 -#, c-format -msgid "could not remove directory \"%s\": %m" -msgstr "无法删除目录 \"%s\": %m" +#: tcop/postgres.c:2705 +msgid "floating-point exception" +msgstr "浮点异常" -#: commands/tablespace.c:1421 -#, c-format -msgid "tablespace %u is not empty" -msgstr "表空间 %u 不是空的" +#: tcop/postgres.c:2706 +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 "无效的浮点数操作.这表示结果越界或者进行了无效的操作,例如除零." -#: commands/trigger.c:192 -msgid "TRUNCATE FOR EACH ROW triggers are not supported" -msgstr "不支持使用TRUNCATE FOR EACH ROW触发器" +#: tcop/postgres.c:2874 +msgid "terminating autovacuum process due to administrator command" +msgstr "由于管理员命令中断autovacuum进程" -#: commands/trigger.c:233 -msgid "cannot use subquery in trigger WHEN condition" -msgstr "在触发器的WHEN条件中无法使用子查询" +#: tcop/postgres.c:2880 tcop/postgres.c:2890 tcop/postgres.c:2941 +msgid "terminating connection due to conflict with recovery" +msgstr "由于与恢复操作相冲突而中断连接" -#: commands/trigger.c:237 -msgid "cannot use aggregate function in trigger WHEN condition" -msgstr "在触发器的WHEN条件中无法使用聚合函数" +#: tcop/postgres.c:2896 +msgid "terminating connection due to administrator command" +msgstr "由于管理员命令中断联接" -#: commands/trigger.c:241 -msgid "cannot use window function in trigger WHEN condition" -msgstr "在触发器的WHEN条件中无法使用窗口函数" +#: tcop/postgres.c:2911 +msgid "canceling authentication due to timeout" +msgstr "由于超时,正在取消认证鉴权命令" -#: commands/trigger.c:261 commands/trigger.c:274 -msgid "statement trigger's WHEN condition cannot reference column values" -msgstr "语句级触发器的WHEN条件中不能引用列的值。" +#: tcop/postgres.c:2920 +msgid "canceling statement due to statement timeout" +msgstr "由于语句执行超时,正在取消查询命令" -#: commands/trigger.c:266 -msgid "INSERT trigger's WHEN condition cannot reference OLD values" -msgstr "在INSERT触发器的WHEN条件中不能引用OLD值。" +#: tcop/postgres.c:2929 +msgid "canceling autovacuum task" +msgstr "正在取消自动清理任务" -#: commands/trigger.c:279 -msgid "DELETE trigger's WHEN condition cannot reference NEW values" -msgstr "在DELETE触发器的WHEN条件中不能引用NEW值。" +#: tcop/postgres.c:2948 storage/ipc/standby.c:497 +msgid "canceling statement due to conflict with recovery" +msgstr "由于与恢复操作冲突,正在取消语句命令" -#: commands/trigger.c:284 -msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns" -msgstr "BEFORE类型触发器的WHERE条件不能引用NEW系统列" +#: tcop/postgres.c:2964 +msgid "canceling statement due to user request" +msgstr "由于用户请求而正在取消查询" -#: commands/trigger.c:322 -#, c-format -msgid "changing return type of function %s from \"opaque\" to \"trigger\"" -msgstr "改变函数 %s 的返回类型 \"opaque\" 为 \"trigger\"" +#: tcop/postgres.c:3092 tcop/postgres.c:3114 +msgid "stack depth limit exceeded" +msgstr "堆栈深度超过限制" -#: commands/trigger.c:329 +#: tcop/postgres.c:3093 tcop/postgres.c:3115 #, c-format -msgid "function %s must return type \"trigger\"" -msgstr "函数 %s 必需返回 \"trigger\" 类型" +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)." -#: commands/trigger.c:438 commands/trigger.c:1152 +#: tcop/postgres.c:3131 #, c-format -msgid "trigger \"%s\" for relation \"%s\" already exists" -msgstr "对于关系 \"%2$s\" 的 \"%1$s\" 触发器已经存在" +msgid "\"max_stack_depth\" must not exceed %ldkB." +msgstr "\"max_stack_depth\"不能超过%ldkB." -#: commands/trigger.c:719 -msgid "Found referenced table's UPDATE trigger." -msgstr "找到被引用表的UPDATE触发器" +#: tcop/postgres.c:3133 +msgid "" +"Increase the platform's stack depth limit via \"ulimit -s\" or local " +"equivalent." +msgstr "通过命令\"ulimit -s\"或本地相同的命令来增加平台的堆栈深度限制." -#: commands/trigger.c:720 -msgid "Found referenced table's DELETE trigger." -msgstr "找到被引用表的DELETE触发器" +#: tcop/postgres.c:3468 +msgid "invalid command-line arguments for server process" +msgstr "服务器进程的无效命令行参数" -#: commands/trigger.c:721 -msgid "Found referencing table's trigger." -msgstr "找到正在引用表的触发器" +#: tcop/postgres.c:3469 tcop/postgres.c:3475 +#, c-format +msgid "Try \"%s --help\" for more information." +msgstr "请用 \"%s --help\" 获取更多的信息." -#: commands/trigger.c:830 commands/trigger.c:846 +#: tcop/postgres.c:3473 #, c-format -msgid "ignoring incomplete trigger group for constraint \"%s\" %s" -msgstr "对于\"%s\" %s,忽略未完成的触发器组" +msgid "%s: invalid command-line arguments" +msgstr "%s: 无效的命令行参数" -#: commands/trigger.c:858 +#: tcop/postgres.c:3565 #, c-format -msgid "converting trigger group into constraint \"%s\" %s" -msgstr "正在将触发器组转换为约束\"%s\" %s" +msgid "%s: no database nor user name specified" +msgstr "%s: 没有指定数据库, 也没有指定用户名" -#: commands/trigger.c:998 +#: tcop/postgres.c:4104 #, c-format -msgid "trigger \"%s\" for table \"%s\" does not exist, skipping" -msgstr "表 \"%2$s\" 的 \"%1$s\" 触发器不存在" +msgid "invalid CLOSE message subtype %d" +msgstr "无效的 CLOSE 信息子类型 %d" -#: commands/trigger.c:1273 +#: tcop/postgres.c:4137 #, c-format -msgid "permission denied: \"%s\" is a system trigger" -msgstr "权限不够: \"%s\" 是一个系统触发器" +msgid "invalid DESCRIBE message subtype %d" +msgstr "无效的 DESCRIBE 信息子类型 %d" -#: commands/trigger.c:1848 +#: tcop/postgres.c:4371 #, c-format -msgid "trigger function %u returned null value" -msgstr "触发器函数 %u 返回了空值" +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" -#: commands/trigger.c:1908 commands/trigger.c:2023 commands/trigger.c:2160 -#: commands/trigger.c:2304 -msgid "BEFORE STATEMENT trigger cannot return a value" -msgstr "BEFORE STATEMENT 触发器不能返回一个值" - -#: commands/trigger.c:2366 executor/execMain.c:1544 -#: executor/nodeLockRows.c:136 executor/nodeModifyTable.c:334 -#: executor/nodeModifyTable.c:522 -msgid "could not serialize access due to concurrent update" -msgstr "由于同步更新而无法串行访问" - -#: commands/trigger.c:3981 +#: tcop/utility.c:95 commands/tablecmds.c:817 commands/tablecmds.c:1150 +#: commands/tablecmds.c:1998 commands/tablecmds.c:3740 +#: commands/tablecmds.c:5483 commands/trigger.c:192 commands/trigger.c:1105 +#: rewrite/rewriteDefine.c:263 #, c-format -msgid "constraint \"%s\" is not deferrable" -msgstr "约束 \"%s\" 不可展缓" +msgid "permission denied: \"%s\" is a system catalog" +msgstr "权限不够: \"%s\" 是一个系统表" -#: commands/trigger.c:4004 +#. translator: %s is name of a SQL command, eg CREATE +#: tcop/utility.c:253 #, c-format -msgid "constraint \"%s\" does not exist" -msgstr "约束 \"%s\" 不存在" +msgid "cannot execute %s in a read-only transaction" +msgstr "不能在一个只读模式的事务中执行%s" -#: commands/tsearchcmds.c:109 commands/tsearchcmds.c:929 +#. translator: %s is name of a SQL command, eg CREATE +#: tcop/utility.c:272 #, c-format -msgid "function %s should return type %s" -msgstr "函数%s应该返回类型%s的值" - -#: commands/tsearchcmds.c:178 -msgid "must be superuser to create text search parsers" -msgstr "只有超级用户能创建文本搜索解析器" +msgid "cannot execute %s during recovery" +msgstr "无法在恢复期间执行%s" -#: commands/tsearchcmds.c:226 +#. translator: %s is name of a SQL command, eg PREPARE +#: tcop/utility.c:290 #, c-format -msgid "text search parser parameter \"%s\" not recognized" -msgstr "未识别文本搜索参数\"%s\"" - -#: commands/tsearchcmds.c:236 -msgid "text search parser start method is required" -msgstr "需要使用文本搜索解析器的start方法" - -#: commands/tsearchcmds.c:241 -msgid "text search parser gettoken method is required" -msgstr "需要使用文本搜索解析器的gettoken方法" - -#: commands/tsearchcmds.c:246 -msgid "text search parser end method is required" -msgstr "需要使用文本搜索解析器的end方法" - -#: commands/tsearchcmds.c:251 -msgid "text search parser lextypes method is required" -msgstr "需要使用文本搜索解析器的lextypes方法" +msgid "cannot execute %s within security-restricted operation" +msgstr "无法在安全限制操作中执行%s" -#: commands/tsearchcmds.c:283 -msgid "must be superuser to drop text search parsers" -msgstr "只有超级用户可以删除文本搜索解析器" +#: tcop/utility.c:1198 +msgid "must be superuser to do CHECKPOINT" +msgstr "只有超级用户可以做 CHECKPOINT" -#: commands/tsearchcmds.c:312 +#: access/common/tupconvert.c:107 #, c-format -msgid "text search parser \"%s\" does not exist, skipping" -msgstr "文本搜索解析器\"%s\"不存在,跳过" - -#: commands/tsearchcmds.c:367 -msgid "must be superuser to rename text search parsers" -msgstr "只有超级用户可以重新命名文本搜索解析器" +msgid "Returned type %s does not match expected type %s in column %d." +msgstr "在第%3$d列中返回类型%1$s与期望的类型%2$s不匹配." -#: commands/tsearchcmds.c:385 +#: access/common/tupconvert.c:135 #, c-format -msgid "text search parser \"%s\" already exists" -msgstr "文本搜索解析器\"%s\"已存在" +msgid "" +"Number of returned columns (%d) does not match expected column count (%d)." +msgstr "所返回列的数量(%d)与所期望列的数量(%d)不匹配." -#: commands/tsearchcmds.c:462 +#: access/common/tupconvert.c:240 #, c-format -msgid "text search template \"%s\" does not accept options" -msgstr "文本搜索模板 \"%s\"不接受使用选项" - -# describe.c:1753 -#: commands/tsearchcmds.c:535 -msgid "text search template is required" -msgstr "要求使用文本搜寻模板" +msgid "" +"Attribute \"%s\" of type %s does not match corresponding attribute of type " +"%s." +msgstr "类型%2$s的属性\"%1$s\"与对应类型%3$s的属性不匹配。" -#: commands/tsearchcmds.c:600 +#: access/common/tupconvert.c:252 #, c-format -msgid "text search dictionary \"%s\" already exists" -msgstr "文本搜索字典\"%s\" 已经存在" +msgid "Attribute \"%s\" of type %s does not exist in type %s." +msgstr "类型%2$s的属性\"%1$s\"在类型%3$s中不存在." -#: commands/tsearchcmds.c:660 +#: access/common/indextuple.c:57 #, c-format -msgid "text search dictionary \"%s\" does not exist, skipping" -msgstr "文本搜索字典 \"%s\" 不存在,跳过" - -#: commands/tsearchcmds.c:990 -msgid "must be superuser to create text search templates" -msgstr "只有超级用户能创建文本搜索模板" +msgid "number of index columns (%d) exceeds limit (%d)" +msgstr "索引字段个数 (%d) 超出限制 (%d)" -#: commands/tsearchcmds.c:1027 +#: access/common/indextuple.c:168 #, c-format -msgid "text search template parameter \"%s\" not recognized" -msgstr "未识别文本搜索模板参数\"%s\"" +msgid "index row requires %lu bytes, maximum size is %lu" +msgstr "索引行需要 %lu 字节, 最大值为 %lu" -#: commands/tsearchcmds.c:1037 -msgid "text search template lexize method is required" -msgstr "要求使用文本搜索模板词汇方法" +#: access/common/reloptions.c:323 +msgid "user-defined relation parameter types limit exceeded" +msgstr "用户定义的关系参数类型超过限制" -#: commands/tsearchcmds.c:1072 -msgid "must be superuser to rename text search templates" -msgstr "只有超级用户可以重新命名文本搜索模板" +#: access/common/reloptions.c:622 +msgid "RESET must not include values for parameters" +msgstr "RESET中不能包含参数的值" -#: commands/tsearchcmds.c:1091 +#: access/common/reloptions.c:655 #, c-format -msgid "text search template \"%s\" already exists" -msgstr "文本搜索模板\"%s\" 已经存在" - -#: commands/tsearchcmds.c:1114 -msgid "must be superuser to drop text search templates" -msgstr "只有超级用户可以删除文本搜索模板" +msgid "unrecognized parameter namespace \"%s\"" +msgstr "未识别的参数命名空间 \"%s\"" -#: commands/tsearchcmds.c:1143 +#: access/common/reloptions.c:898 #, c-format -msgid "text search template \"%s\" does not exist, skipping" -msgstr "文本搜索模板\"%s\"不存在,跳过" +msgid "unrecognized parameter \"%s\"" +msgstr "未识别的参数 \"%s\"" -#: commands/tsearchcmds.c:1338 +#: access/common/reloptions.c:923 #, c-format -msgid "text search configuration parameter \"%s\" not recognized" -msgstr "未识别文本搜索配置参数\"%s\"" - -#: commands/tsearchcmds.c:1345 -msgid "cannot specify both PARSER and COPY options" -msgstr "不能同时指定PARSER和COPY选项" - -#: commands/tsearchcmds.c:1373 -msgid "text search parser is required" -msgstr "需要使用文本搜索解析器" +msgid "parameter \"%s\" specified more than once" +msgstr "表名 \"%s\" 被指定多次" -#: commands/tsearchcmds.c:1479 +#: access/common/reloptions.c:938 #, c-format -msgid "text search configuration \"%s\" already exists" -msgstr "文本搜索配置\"%s\"已存在" +msgid "invalid value for boolean option \"%s\": %s" +msgstr "布尔选项\"%s\"的值无效:%s" -#: commands/tsearchcmds.c:1538 +#: access/common/reloptions.c:949 #, c-format -msgid "text search configuration \"%s\" does not exist, skipping" -msgstr "文本搜寻配置 \"%s\"不存在,跳过" +msgid "invalid value for integer option \"%s\": %s" +msgstr "参数 \"%s\" 的值无效: \"%s\"" -#: commands/tsearchcmds.c:1760 +#: access/common/reloptions.c:954 access/common/reloptions.c:972 #, c-format -msgid "token type \"%s\" does not exist" -msgstr "符号类型 \"%s\" 不存在" +msgid "value %s out of bounds for option \"%s\"" +msgstr "值 %s超出了选项\"%s\"的范围" -#: commands/tsearchcmds.c:1984 +#: access/common/reloptions.c:956 #, c-format -msgid "mapping for token type \"%s\" does not exist" -msgstr "符号类型\"%s\"的映射不存在" +msgid "Valid values are between \"%d\" and \"%d\"." +msgstr "有效值在\"%d\"和\"%d\"之间." -#: commands/tsearchcmds.c:1990 +#: access/common/reloptions.c:967 #, c-format -msgid "mapping for token type \"%s\" does not exist, skipping" -msgstr "符号类型\"%s\"的映射不存在, 跳过" +msgid "invalid value for floating point option \"%s\": %s" +msgstr "浮点数类型选项\"%s\"的值无效:%s" -#: commands/tsearchcmds.c:2143 commands/tsearchcmds.c:2254 +#: access/common/reloptions.c:974 #, c-format -msgid "invalid parameter list format: \"%s\"" -msgstr "无效参数列表格式: \"%s\"" - -#: commands/typecmds.c:163 -msgid "must be superuser to create a base type" -msgstr "只有超级用户能创建基类型" +msgid "Valid values are between \"%f\" and \"%f\"." +msgstr "有效值在 \"%f\"和 \"%f\"之间" -#: commands/typecmds.c:267 +#: access/common/tupdesc.c:575 parser/parse_relation.c:1176 #, c-format -msgid "type attribute \"%s\" not recognized" -msgstr "类型属性 \"%s\" 不被认可" +msgid "column \"%s\" cannot be declared SETOF" +msgstr "字段 \"%s\" 不能被声明为 SETOF" -#: commands/typecmds.c:321 +#: access/common/heaptuple.c:646 access/common/heaptuple.c:1398 #, c-format -msgid "invalid type category \"%s\": must be simple ASCII" -msgstr "无效的类型目录 \"%s\": 必须是简单ASCII" +msgid "number of columns (%d) exceeds limit (%d)" +msgstr "字段个数 (%d) 超出限制 (%d)" -#: commands/typecmds.c:340 +#: access/hash/hashovfl.c:547 #, c-format -msgid "array element type cannot be %s" -msgstr "排列元素类型不能为 %s" +msgid "out of overflow pages in hash index \"%s\"" +msgstr "散列索引 \"%s\" 中页溢出" -#: commands/typecmds.c:372 -#, c-format -msgid "alignment \"%s\" not recognized" -msgstr "alignment \"%s\" 不被认可" +#: access/hash/hashsearch.c:152 +msgid "hash indexes do not support whole-index scans" +msgstr "散列索引不支持完整索引 (whole-index) 扫描" -#: commands/typecmds.c:389 +#: access/hash/hashinsert.c:73 #, c-format -msgid "storage \"%s\" not recognized" -msgstr "存储 \"%s\" 不被认可" - -#: commands/typecmds.c:398 -msgid "type input function must be specified" -msgstr "类型输入函数 %s 必需指定" - -#: commands/typecmds.c:402 -msgid "type output function must be specified" -msgstr "类型输出函数 %s 必需指定" +msgid "index row size %lu exceeds hash maximum %lu" +msgstr "索引列大小 %lu 超过散列最大值 %lu" -#: commands/typecmds.c:407 -msgid "" -"type modifier output function is useless without a type modifier input " -"function" -msgstr "如果没有类型修改器的输入函数,那么类型修改器的输出函数没有用" +#: access/hash/hashinsert.c:76 +msgid "Values larger than a buffer page cannot be indexed." +msgstr "大于一个缓冲页的值无法用于创建索引." -#: commands/typecmds.c:430 +#: access/hash/hashutil.c:170 access/nbtree/nbtpage.c:433 +#: access/gist/gistutil.c:637 #, c-format -msgid "changing return type of function %s from \"opaque\" to %s" -msgstr "改变函数 %s 的返回类型 \"opaque\" 为 %s" +msgid "index \"%s\" contains unexpected zero page at block %u" +msgstr "索引\"%s\"在块%u上包含未期望的零页" -#: commands/typecmds.c:437 -#, c-format -msgid "type input function %s must return type %s" -msgstr "类型输入函数 %s 必需返回类型 %s" +#: 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 +#: access/gist/gist.c:731 access/gist/gistutil.c:640 +#: access/gist/gistutil.c:651 access/gist/gistvacuum.c:274 +msgid "Please REINDEX it." +msgstr "请重建索引 (REINDEX)." -#: commands/typecmds.c:447 +#: access/hash/hashutil.c:181 access/hash/hashutil.c:193 +#: access/nbtree/nbtpage.c:444 access/gist/gistutil.c:648 #, c-format -msgid "changing return type of function %s from \"opaque\" to \"cstring\"" -msgstr "改变函数 %s 的返回类型 \"opaque\" 为 \"cstring\"" +msgid "index \"%s\" contains corrupted page at block %u" +msgstr "索引\"%s\"在块%u上包含已损坏的页" -#: commands/typecmds.c:454 +#: access/hash/hashutil.c:209 #, c-format -msgid "type output function %s must return type \"cstring\"" -msgstr "类型输出函数 %s 必需返回类型 \"cstring\"" +msgid "index \"%s\" is not a hash index" +msgstr "索引 \"%s\" 不是一个散列索引" -#: commands/typecmds.c:463 +#: access/hash/hashutil.c:215 #, c-format -msgid "type receive function %s must return type %s" -msgstr "类型接收函数 %s 必需返回类型 %s" +msgid "index \"%s\" has wrong hash version" +msgstr "索引 \"%s\" 有错误的散列版本" -#: commands/typecmds.c:472 +#: access/heap/hio.c:175 access/heap/rewriteheap.c:597 #, c-format -msgid "type send function %s must return type \"bytea\"" -msgstr "类型发送函数 %s 必需返回类型 \"bytea\"" +msgid "row is too big: size %lu, maximum size %lu" +msgstr "行太大: 尺寸 %lu, 最大值 %lu" -#: commands/typecmds.c:677 commands/typecmds.c:2205 +#: access/heap/heapam.c:1089 access/heap/heapam.c:1117 +#: access/heap/heapam.c:1147 catalog/aclchk.c:1678 #, c-format -msgid "\"%s\" is not a domain" -msgstr "\"%s\" 不是一个域" +msgid "\"%s\" is an index" +msgstr "\"%s\" 是一个索引" -#: commands/typecmds.c:816 +#: access/heap/heapam.c:1094 access/heap/heapam.c:1122 +#: access/heap/heapam.c:1152 commands/tablecmds.c:2197 +#: commands/tablecmds.c:7413 commands/tablecmds.c:9082 catalog/aclchk.c:1685 #, c-format -msgid "\"%s\" is not a valid base type for a domain" -msgstr "对于一个域, \"%s\" 不是一个有效的基本类型" - -#: commands/typecmds.c:885 -msgid "multiple default expressions" -msgstr "多遍默认表达式" - -#: commands/typecmds.c:949 commands/typecmds.c:958 -msgid "conflicting NULL/NOT NULL constraints" -msgstr "NULL/NOT NULL 约束冲突" +msgid "\"%s\" is a composite type" +msgstr "\"%s\" 为混和类型" -#: commands/typecmds.c:977 commands/typecmds.c:1902 -msgid "unique constraints not possible for domains" -msgstr "唯一约束对于域不可用" +#: access/heap/heapam.c:3223 access/heap/heapam.c:3254 +#: access/heap/heapam.c:3289 +#, c-format +msgid "could not obtain lock on row in relation \"%s\"" +msgstr "无法在关系 \"%s\"中的记录上获得锁" -#: commands/typecmds.c:983 commands/typecmds.c:1908 -msgid "primary key constraints not possible for domains" -msgstr "不可为域使用主键约束" +#: access/transam/xact.c:729 +msgid "cannot have more than 2^32-1 commands in a transaction" +msgstr "在一个事物中不可以超过 2^32-1 个命令" -#: commands/typecmds.c:989 commands/typecmds.c:1914 -msgid "exclusion constraints not possible for domains" -msgstr "排他约束对于域不可用" +#: access/transam/xact.c:1269 +#, c-format +msgid "maximum number of committed subtransactions (%d) exceeded" +msgstr "超过已提交子事务的最大数量(%d)" -#: commands/typecmds.c:995 commands/typecmds.c:1920 -msgid "foreign key constraints not possible for domains" -msgstr "外键约束对于域不可用" +#: access/transam/xact.c:2045 +msgid "cannot PREPARE a transaction that has operated on temporary tables" +msgstr "无法在一个已经在临时表上操作的事务上执行PREPARE操作" -#: commands/typecmds.c:1004 commands/typecmds.c:1929 -msgid "specifying constraint deferrability not supported for domains" -msgstr "所指定的约束延迟对域不支持" +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2837 +#, c-format +msgid "%s cannot run inside a transaction block" +msgstr "%s 无法在事物块中运行" -#: commands/typecmds.c:1251 +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2847 #, c-format -msgid "changing argument type of function %s from \"opaque\" to \"cstring\"" -msgstr "改变函数 %s 的参数类型 \"opaque\" 为 \"cstring\"" +msgid "%s cannot run inside a subtransaction" +msgstr "%s 无法在一个子事物中运行" -#: commands/typecmds.c:1302 +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2857 #, c-format -msgid "changing argument type of function %s from \"opaque\" to %s" -msgstr "改变函数 %s 的参数类型 \"opaque\" 为 %s" +msgid "%s cannot be executed from a function or multi-command string" +msgstr "%s 无法从函数或包含多条命令的字符串中执行." -#: commands/typecmds.c:1401 +#. translator: %s represents an SQL statement name +#: access/transam/xact.c:2908 #, c-format -msgid "typmod_in function %s must return type \"integer\"" -msgstr "typmod_in类型函数 %s 必需返回 \"trigger\" 类型" +msgid "%s can only be used in transaction blocks" +msgstr "%s 只能在事务块中使用" -#: commands/typecmds.c:1428 -#, c-format -msgid "typmod_out function %s must return type \"cstring\"" -msgstr "typmod_out类型函数 %s 必需返回类型 \"cstring\"" +#: access/transam/xact.c:3090 +msgid "there is already a transaction in progress" +msgstr "已经有一个事物在运行中" -#: commands/typecmds.c:1455 -#, c-format -msgid "type analyze function %s must return type \"boolean\"" -msgstr "类型 analyze 函数 %s 必需返回类型 \"boolean\"" +#: access/transam/xact.c:3257 access/transam/xact.c:3349 +msgid "there is no transaction in progress" +msgstr "没有事物在运行中" -#: commands/typecmds.c:1513 -msgid "composite type must have at least one attribute" -msgstr "混合类型必需至少有一个属性" +#: access/transam/xact.c:3443 access/transam/xact.c:3493 +#: access/transam/xact.c:3499 access/transam/xact.c:3543 +#: access/transam/xact.c:3591 access/transam/xact.c:3597 +msgid "no such savepoint" +msgstr "没有这个保存点" -#: commands/typecmds.c:1754 -#, c-format -msgid "column \"%s\" of table \"%s\" contains null values" -msgstr "表 \"%2$s\" 的字段 \"%1$s\" 包含空值" +#: access/transam/xact.c:4244 +msgid "cannot have more than 2^32-1 subtransactions in a transaction" +msgstr "在一个事物中不可以超过有 2^32-1 个子事物" -#: commands/typecmds.c:2000 +#: access/transam/varsup.c:114 #, c-format msgid "" -"column \"%s\" of table \"%s\" contains values that violate the new constraint" -msgstr "表 \"%2$s\" 的字段 \"%1$s\" 包含的值违反了新约束" +"database is not accepting commands to avoid wraparound data loss in database " +"\"%s\"" +msgstr "数据库没有接收命令来避免在数据库\"%s\"中的重叠数据损失" -#: commands/typecmds.c:2281 commands/typecmds.c:2290 -msgid "cannot use table references in domain check constraint" -msgstr "在域检查约束中不可以使用表关联" +#: 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进程,然后使用单独的后台进程来清理数据库.\n" +"您也可能需要提交或回滚旧的已准备好事务." -#: commands/typecmds.c:2519 commands/typecmds.c:2591 commands/typecmds.c:2822 +#: access/transam/varsup.c:121 #, c-format -msgid "%s is a table's row type" -msgstr "%s 是一个表的记录类型" - -#: commands/typecmds.c:2521 commands/typecmds.c:2593 commands/typecmds.c:2824 -msgid "Use ALTER TABLE instead." -msgstr "请使用 ALTER TABLE命令代替." +msgid "" +"database is not accepting commands to avoid wraparound data loss in database " +"with OID %u" +msgstr "数据库没有接受命令来避免在带有OID为%u的数据库中的重叠数据损失" -#: commands/typecmds.c:2528 commands/typecmds.c:2600 commands/typecmds.c:2739 +#: access/transam/varsup.c:133 access/transam/varsup.c:368 #, c-format -msgid "cannot alter array type %s" -msgstr "不能更改数组类型%s" +msgid "database \"%s\" must be vacuumed within %u transactions" +msgstr "数据库 \"%s\"在运行%u个事务中进行清理(vacuume)." -#: commands/typecmds.c:2530 commands/typecmds.c:2602 commands/typecmds.c:2741 -#, c-format -msgid "You can alter type %s, which will alter the array type as well." -msgstr "您能够修改类型%s, 因而也能修改数组类型" +#: 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" +"您也可能需要提交或回滚旧的已准备好的事务." -#: commands/typecmds.c:2786 +#: access/transam/varsup.c:140 access/transam/varsup.c:375 #, c-format -msgid "type %s is already in schema \"%s\"" -msgstr "在模式\"%2$s\"中已经有类型 %1$s了" +msgid "database with OID %u must be vacuumed within %u transactions" +msgstr "带有OID为%u的数据库必须在%u个事务中进行清理(vacuume)." -#: commands/typecmds.c:2808 +#: access/transam/varsup.c:333 #, c-format -msgid "type \"%s\" already exists in schema \"%s\"" -msgstr "在于模式\"%2$s\"中已存在类型\"%1$s\"" +msgid "transaction ID wrap limit is %u, limited by database with OID %u" +msgstr "事务ID的封装限制是%u, 由带有OID为%u的数据库限制." -#: commands/user.c:150 -msgid "SYSID can no longer be specified" -msgstr "不能再指定SYSID" +#: access/transam/twophase.c:250 +#, c-format +msgid "transaction identifier \"%s\" is too long" +msgstr "事务标示符 \"%s\" 太长" -#: commands/user.c:272 -msgid "must be superuser to create superusers" -msgstr "只有超级用户能创建另一个超级用户" +# large_obj.c:55 +#: access/transam/twophase.c:257 +msgid "prepared transactions are disabled" +msgstr "禁用已准备好的事务" -#: commands/user.c:279 -msgid "permission denied to create role" -msgstr "创建角色的权限不够" +#: access/transam/twophase.c:258 +msgid "Set max_prepared_transactions to a nonzero value." +msgstr "将max_prepared_transactions设置为一个非零值" -#: commands/user.c:286 commands/user.c:1033 +#: access/transam/twophase.c:291 #, c-format -msgid "role name \"%s\" is reserved" -msgstr "角色名称 \"%s\" 被保留了" +msgid "transaction identifier \"%s\" is already in use" +msgstr "事务标示符\"%s\"已经在使用" + +#: access/transam/twophase.c:300 +msgid "maximum number of prepared transactions reached" +msgstr "已经达到已准备好事务的最大数量" -#: commands/user.c:300 commands/user.c:1027 +#: access/transam/twophase.c:301 #, c-format -msgid "role \"%s\" already exists" -msgstr "角色\"%s\" 已经存在" +msgid "Increase max_prepared_transactions (currently %d)." +msgstr "增加max_prepared_transactions的值(当前值是%d)." -#: commands/user.c:579 commands/user.c:767 commands/user.c:851 -#: commands/user.c:1002 commands/variable.c:735 commands/variable.c:849 -#: utils/cache/lsyscache.c:2669 utils/init/miscinit.c:413 +#: access/transam/twophase.c:421 #, c-format -msgid "role \"%s\" does not exist" -msgstr "角色 \"%s\" 不存在" +msgid "prepared transaction with identifier \"%s\" is busy" +msgstr "标示符为\"%s\"的事务处于繁忙状态." -#: commands/user.c:592 commands/user.c:784 commands/user.c:1267 -#: commands/user.c:1404 -msgid "must be superuser to alter superusers" -msgstr "只有超级用户能修改超级用户" +#: access/transam/twophase.c:429 +msgid "permission denied to finish prepared transaction" +msgstr "完成已准备好事务的权限不够" -#: commands/user.c:607 commands/user.c:792 -msgid "permission denied" -msgstr "权限不够" +#: access/transam/twophase.c:430 +msgid "Must be superuser or the user that prepared the transaction." +msgstr "必须是超级用户或者是准备好事务的用户" -#: commands/user.c:802 -#, c-format -msgid "database \"%s\" not found" -msgstr "没有找到数据库\"%s\" " +#: access/transam/twophase.c:441 +msgid "prepared transaction belongs to another database" +msgstr "已准备好的事务属于另一个数据库" -#: commands/user.c:824 -msgid "permission denied to drop role" -msgstr "删除角色的权限不够" +#: access/transam/twophase.c:442 +msgid "" +"Connect to the database where the transaction was prepared to finish it." +msgstr "连接到带有准备好完成事务的数据库" -#: commands/user.c:856 +#: access/transam/twophase.c:456 #, c-format -msgid "role \"%s\" does not exist, skipping" -msgstr "角色 \"%s\" 不存在" - -#: commands/user.c:868 commands/user.c:872 -msgid "current user cannot be dropped" -msgstr "当前用户不能被删除" +msgid "prepared transaction with identifier \"%s\" does not exist" +msgstr "带有标示符\"%s\" 已准备好事务不存在" -#: commands/user.c:876 -msgid "session user cannot be dropped" -msgstr "会话用户不能被删除" +#: access/transam/twophase.c:939 +msgid "two-phase state file maximum length exceeded" +msgstr "超过两阶段状态文件的最大长度" -#: commands/user.c:887 -msgid "must be superuser to drop superusers" -msgstr "只有超级用户可以删除超级用户" +#: access/transam/twophase.c:957 +#, c-format +msgid "could not create two-phase state file \"%s\": %m" +msgstr "无法创建两阶段提交状态文件 \"%s\": %m" -#: commands/user.c:900 +#: access/transam/twophase.c:971 access/transam/twophase.c:988 +#: access/transam/twophase.c:1044 access/transam/twophase.c:1464 +#: access/transam/twophase.c:1471 #, c-format -msgid "role \"%s\" cannot be dropped because some objects depend on it" -msgstr "无法删除\"%s\"因为有其它对象倚赖它" +msgid "could not write two-phase state file: %m" +msgstr "无法对两阶段提交状态文件进行写操作: %m" -#: commands/user.c:1017 -msgid "session user cannot be renamed" -msgstr "无法重命名会话用户" +#: access/transam/twophase.c:997 +#, c-format +msgid "could not seek in two-phase state file: %m" +msgstr "无法在两阶段提交状态文件中进行查找: %m" -#: commands/user.c:1021 -msgid "current user cannot be renamed" -msgstr "无法重新命名当前用户" +#: access/transam/twophase.c:1050 access/transam/twophase.c:1489 +#, c-format +msgid "could not close two-phase state file: %m" +msgstr "无法关闭两阶段提交状态文件: %m" -#: commands/user.c:1044 -msgid "must be superuser to rename superusers" -msgstr "只有超级用户可以对超级用户重命名" +#: access/transam/twophase.c:1130 access/transam/twophase.c:1569 +#, c-format +msgid "could not open two-phase state file \"%s\": %m" +msgstr "无法打开两阶段提交状态文件\"%s\": %m" -#: commands/user.c:1051 -msgid "permission denied to rename role" -msgstr "重命名角色的权限不够" +#: access/transam/twophase.c:1147 +#, c-format +msgid "could not stat two-phase state file \"%s\": %m" +msgstr "无法获取两阶段提交状态文件 \"%s\" 的状态: %m" -#: commands/user.c:1072 -msgid "MD5 password cleared because of role rename" -msgstr "由于对角色重命名, 需要清除以MD5方式加密的口令" +#: access/transam/twophase.c:1179 +#, c-format +msgid "could not read two-phase state file \"%s\": %m" +msgstr "无法读取两阶段提交状态文件 \"%s\": %m" -#: commands/user.c:1128 -msgid "column names cannot be included in GRANT/REVOKE ROLE" -msgstr "在GRANT/REVOKE ROLE中不能包含列名" +#: access/transam/twophase.c:1271 +#, c-format +msgid "two-phase state file for transaction %u is corrupt" +msgstr "事务%u的两阶段提交状态文件损坏" -#: commands/user.c:1166 -msgid "permission denied to drop objects" -msgstr "删除对象的权限不足" +#: access/transam/twophase.c:1426 +#, c-format +msgid "could not remove two-phase state file \"%s\": %m" +msgstr "无法删除两阶段提交状态文件\"%s\": %m" -#: commands/user.c:1193 commands/user.c:1202 -msgid "permission denied to reassign objects" -msgstr "重新分配对象的权限不足" +#: access/transam/twophase.c:1455 +#, c-format +msgid "could not recreate two-phase state file \"%s\": %m" +msgstr "无法重新创建两阶段提交状态文件 \"%s\": %m" -#: commands/user.c:1275 commands/user.c:1412 +#: access/transam/twophase.c:1483 #, c-format -msgid "must have admin option on role \"%s\"" -msgstr "在角色\"%s\"上必须有admin选项" +msgid "could not fsync two-phase state file: %m" +msgstr "无法在两阶段提交状态文件上执行系统调用fsync: %m" -#: commands/user.c:1283 -msgid "must be superuser to set grantor" -msgstr "只有超级用户能设置授权者" +#: access/transam/twophase.c:1578 +#, c-format +msgid "could not fsync two-phase state file \"%s\": %m" +msgstr "无法在两阶段提交状态文件\"%s\"上执行系统调用fsync: %m" -#: commands/user.c:1308 +#: access/transam/twophase.c:1585 #, c-format -msgid "role \"%s\" is a member of role \"%s\"" -msgstr "角色\"%s\" 是角色\"%s\"的成员" +msgid "could not close two-phase state file \"%s\": %m" +msgstr "无法关闭两阶段提交状态文件 \"%s\": %m" -#: commands/user.c:1323 +#: access/transam/twophase.c:1650 #, c-format -msgid "role \"%s\" is already a member of role \"%s\"" -msgstr "角色\"%s\" 已经是角色\"%s\"的成员" +msgid "removing future two-phase state file \"%s\"" +msgstr "删除可能产生的两阶段提交状态文件 \"%s\"" -#: commands/user.c:1434 +#: access/transam/twophase.c:1666 access/transam/twophase.c:1677 +#: access/transam/twophase.c:1790 access/transam/twophase.c:1801 +#: access/transam/twophase.c:1874 #, c-format -msgid "role \"%s\" is not a member of role \"%s\"" -msgstr "角色 \"%s\"不是角色 \"%s\"的成员" +msgid "removing corrupt two-phase state file \"%s\"" +msgstr "删除已损坏的两阶段提交状态文件\"%s\"" -#: commands/vacuum.c:421 -msgid "oldest xmin is far in the past" -msgstr "最旧的xmin" +#: access/transam/twophase.c:1779 access/transam/twophase.c:1863 +#, c-format +msgid "removing stale two-phase state file \"%s\"" +msgstr "正在删除无用的两阶段提交状态文件\"%s\"" -#: commands/vacuum.c:422 -msgid "Close open transactions soon to avoid wraparound problems." -msgstr "立即关闭已打开的事物, 以避免 wraparound 问题." +#: access/transam/twophase.c:1881 +#, c-format +msgid "recovering prepared transaction %u" +msgstr "正在恢复已准备事务%u" -#: commands/vacuum.c:747 -msgid "some databases have not been vacuumed in over 2 billion transactions" -msgstr "一些数据库在超过 20 亿笔事物后没有做清理 (vacuum)." +#: access/transam/slru.c:609 +#, c-format +msgid "file \"%s\" doesn't exist, reading as zeroes" +msgstr "文件 \"%s\" 不存在, 假设读取了 0 字节" -#: commands/vacuum.c:748 -msgid "You might have already suffered transaction-wraparound data loss." -msgstr "您可能已经遇到了由于事务重叠而造成的数据丢失." +#: 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 的状态" -#: commands/vacuum.c:873 +#: access/transam/slru.c:840 #, c-format -msgid "skipping \"%s\" --- only superuser can vacuum it" -msgstr "忽略 \"%s\" --- 只有超级用户能够清理 (vacuum)" +msgid "Could not open file \"%s\": %m." +msgstr "无法打开文件 \"%s\": %m" -#: commands/vacuum.c:877 +#: access/transam/slru.c:846 #, c-format -msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" -msgstr "忽略 \"%s\" --- 只有超级用户或数据库属主能够清理 (vacuum)" +msgid "Could not seek in file \"%s\" to offset %u: %m." +msgstr "无法在文件 \"%s\" 偏移量 %u 查找: %m" -#: commands/vacuum.c:881 +#: access/transam/slru.c:853 #, c-format -msgid "skipping \"%s\" --- only table or database owner can vacuum it" -msgstr "忽略 \"%s\" --- 只有表或数据库属主能够清理 (vacuum)" +msgid "Could not read from file \"%s\" at offset %u: %m." +msgstr "无法从文件 \"%s\" 偏移量 %u 读取: %m" -#: commands/vacuum.c:898 +#: access/transam/slru.c:860 #, c-format -msgid "" -"skipping \"%s\" --- cannot vacuum indexes, views, or special system tables" -msgstr "忽略 \"%s\" --- 无法清理 (vacuum) 索引, 视图或特殊的系统表" +msgid "Could not write to file \"%s\" at offset %u: %m." +msgstr "无法往文件 \"%s\" 偏移量 %u 写入: %m" -#: commands/vacuumlazy.c:234 +#: access/transam/slru.c:867 #, 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 " +msgid "Could not fsync file \"%s\": %m." +msgstr "无法在文件 \"%s\"上执行系统调用fsync: %m" -#: commands/vacuumlazy.c:449 +#: access/transam/slru.c:874 #, c-format -msgid "relation \"%s\" page %u is uninitialized --- fixing" -msgstr "关系 \"%s\" 页 %u 没有初始化 --- 修复" +msgid "Could not close file \"%s\": %m." +msgstr "无法关闭文件 \"%s\": %m" -#: commands/vacuumlazy.c:785 +#: access/transam/slru.c:1101 #, c-format -msgid "\"%s\": removed %.0f row versions in %u pages" -msgstr "\"%1$s\": 在%3$u页中已删除%2$.0f行版本号" +msgid "could not truncate directory \"%s\": apparent wraparound" +msgstr "无法清空目录\"%s\": 有明显的重叠" -#: commands/vacuumlazy.c:790 +#: access/transam/slru.c:1182 #, c-format -msgid "" -"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u " -"pages" -msgstr "" -"\"%1$s\": 在超出%5$u页的%4$u中找到可删除版本号%2$.0f, 不可删除的版本号%3$.0f" +msgid "removing file \"%s\"" +msgstr "删除文件 \"%s\"" -#: commands/vacuumlazy.c:793 +#: access/transam/xlog.c:1340 #, 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." +msgid "could not create archive status file \"%s\": %m" +msgstr "无法创建归档状态文件 \"%s\": %m" -#: commands/vacuumlazy.c:851 +#: access/transam/xlog.c:1348 #, c-format -msgid "\"%s\": removed %d row versions in %d pages" -msgstr "\"%1$s\": 在%3$d个页中已删除%2$d记录版本" +msgid "could not write archive status file \"%s\": %m" +msgstr "无法写入归档状态文件 \"%s\": %m" -#: commands/vacuumlazy.c:854 commands/vacuumlazy.c:946 -#: commands/vacuumlazy.c:1071 +#: access/transam/xlog.c:1803 access/transam/xlog.c:10511 +#: replication/walreceiver.c:515 replication/walsender.c:1004 #, c-format -msgid "%s." -msgstr "%s" +msgid "could not seek in log file %u, segment %u to offset %u: %m" +msgstr "无法在日志文件 %u 中查找, 段 %u 偏移量 %u: %m" -#: commands/vacuumlazy.c:943 +#: access/transam/xlog.c:1820 replication/walreceiver.c:532 #, c-format -msgid "scanned index \"%s\" to remove %d row versions" -msgstr "扫描索引\"%s\"来删除%d记录版本" +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" -#: commands/vacuumlazy.c:985 +#: access/transam/xlog.c:2022 #, c-format -msgid "index \"%s\" now contains %.0f row versions in %u pages" -msgstr "索引\"%1$s\"在%3$u个页中包含了行版本号%2$.0f" +msgid "updated min recovery point to %X/%X" +msgstr "将最小恢复点更新到%X/%X" -#: commands/vacuumlazy.c:989 +#: access/transam/xlog.c:2372 access/transam/xlog.c:2476 +#: access/transam/xlog.c:2705 access/transam/xlog.c:2776 +#: access/transam/xlog.c:2833 replication/walsender.c:992 #, 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." +msgid "could not open file \"%s\" (log file %u, segment %u): %m" +msgstr "无法打开文件 \"%s\" (日志文件 %u, 段 %u): %m" -#: commands/vacuumlazy.c:1068 +#: access/transam/xlog.c:2437 access/transam/xlog.c:2569 +#: access/transam/xlog.c:4584 storage/file/copydir.c:269 storage/smgr/md.c:932 +#: storage/smgr/md.c:1137 storage/smgr/md.c:1291 #, c-format -msgid "\"%s\": truncated %u to %u pages" -msgstr "\"%s\": 将%u截断到%u pages" +msgid "could not fsync file \"%s\": %m" +msgstr "无法 fsync 文件 \"%s\": %m" -#: commands/variable.c:62 -msgid "invalid list syntax for parameter \"datestyle\"" -msgstr "对于参数\"datestyle\",列表语法无效" +#: access/transam/xlog.c:2442 access/transam/xlog.c:2574 +#: access/transam/xlog.c:4589 commands/copy.c:1329 storage/file/copydir.c:211 +#, c-format +msgid "could not close file \"%s\": %m" +msgstr "无法关闭文件 \"%s\": %m" -#: commands/variable.c:161 +#: access/transam/xlog.c:2546 #, c-format -msgid "unrecognized \"datestyle\" key word: \"%s\"" -msgstr "不认可的 \"datestyle\" 关键字: \"%s\"" +msgid "not enough data in file \"%s\"" +msgstr "文件 \"%s\" 中的数据不足" -#: commands/variable.c:175 -msgid "conflicting \"datestyle\" specifications" -msgstr "\"datestyle\" 规范冲突" +#: access/transam/xlog.c:2665 +#, c-format +msgid "" +"could not link file \"%s\" to \"%s\" (initialization of log file %u, segment " +"%u): %m" +msgstr "无法链接文件 \"%s\" 到 \"%s\" (日志文件 %u 的初始化, 段 %u): %m" -#: commands/variable.c:285 -msgid "invalid interval value for time zone: month not allowed" -msgstr "无效的时区间隔值: 不允许有月份" +#: access/transam/xlog.c:2677 +#, c-format +msgid "" +"could not rename file \"%s\" to \"%s\" (initialization of log file %u, " +"segment %u): %m" +msgstr "无法重命名文件 \"%s\" 为 \"%s\" (日志文件 %u 的初始化, 段 %u): %m" -#: commands/variable.c:293 -msgid "invalid interval value for time zone: day not allowed" -msgstr "无效的时区间隔值: 不允许有日期" +#: access/transam/xlog.c:2860 replication/walreceiver.c:489 +#, c-format +msgid "could not close log file %u, segment %u: %m" +msgstr "无法关闭日志文件 %u, 段 %u: %m" -#: commands/variable.c:361 commands/variable.c:493 +#: access/transam/xlog.c:2940 access/transam/xlog.c:9349 storage/smgr/md.c:371 +#: storage/smgr/md.c:420 storage/smgr/md.c:1251 #, c-format -msgid "unrecognized time zone name: \"%s\"" -msgstr "不被认可的时区名字: \"%s\"" +msgid "could not remove file \"%s\": %m" +msgstr "无法删除文件 \"%s\": %m" -#: commands/variable.c:370 commands/variable.c:502 +#: access/transam/xlog.c:3076 #, c-format -msgid "time zone \"%s\" appears to use leap seconds" -msgstr "时区 \"%s\" 看上去使用了闰秒" +msgid "archive file \"%s\" has wrong size: %lu instead of %lu" +msgstr "归档文件\"%s\"大小错误:应该是%lu而不是%lu" -#: commands/variable.c:372 commands/variable.c:504 -msgid "PostgreSQL does not support leap seconds." -msgstr "PostgreSQL 不支持闰秒" +#: access/transam/xlog.c:3085 +#, c-format +msgid "restored log file \"%s\" from archive" +msgstr "从归档中恢复日志文件 \"%s\"" -#: commands/variable.c:557 -msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query" -msgstr "SET TRANSACTION ISOLATION LEVEL 必须在任何查询之前调用" +#: access/transam/xlog.c:3135 +#, c-format +msgid "could not restore file \"%s\" from archive: return code %d" +msgstr "无法从归档中恢复文件 \"%s\": 返回码为 %d" -#: commands/variable.c:566 -msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction" -msgstr "SET TRANSACTION ISOLATION LEVEL 不能在子事物中调用" +#. 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:3249 +#, c-format +msgid "%s \"%s\": return code %d" +msgstr "%s \"%s\": 返回码为 %d" -#: commands/variable.c:665 utils/mb/mbutils.c:241 +#: access/transam/xlog.c:3359 access/transam/xlog.c:3542 #, c-format -msgid "conversion between %s and %s is not supported" -msgstr "不支持 %s 和 %s 之间的编码转换" +msgid "could not open transaction log directory \"%s\": %m" +msgstr "无法打开事务日志目录 \"%s\": %m" -#: commands/variable.c:865 +#: access/transam/xlog.c:3413 #, c-format -msgid "permission denied to set role \"%s\"" -msgstr "设置角色\"%s\"的权限不足" +msgid "recycled transaction log file \"%s\"" +msgstr "回收事务日志文件 \"%s\"" -#: tcop/fastpath.c:110 tcop/fastpath.c:492 tcop/fastpath.c:622 +#: access/transam/xlog.c:3429 #, c-format -msgid "invalid argument size %d in function call message" -msgstr "在函数调用信息中, 参数大小 %d 是无效的" +msgid "removing transaction log file \"%s\"" +msgstr "删除事务日志文件 \"%s\"" -#: tcop/fastpath.c:304 tcop/postgres.c:951 tcop/postgres.c:1261 -#: tcop/postgres.c:1542 tcop/postgres.c:1984 tcop/postgres.c:2352 -#: tcop/postgres.c:2433 -msgid "" -"current transaction is aborted, commands ignored until end of transaction " -"block" -msgstr "当前事务被终止, 事务块结束之前的查询被忽略" +#: access/transam/xlog.c:3452 +#, c-format +msgid "could not rename old transaction log file \"%s\": %m" +msgstr "无法重命名旧的事务日志文件\"%s\": %m" -#: tcop/fastpath.c:332 +#: access/transam/xlog.c:3464 #, c-format -msgid "fastpath function call: \"%s\" (OID %u)" -msgstr "快捷路径函数调用: \"%s\" (OID %u)" +msgid "could not remove old transaction log file \"%s\": %m" +msgstr "无法删除旧的事务日志文件 \"%s\": %m" -#: tcop/fastpath.c:359 parser/parse_func.c:1654 -msgid "argument to pg_get_expr() must come from system catalogs" -msgstr "pg_get_expr() 的参数必须来自系统目录视图" +#: access/transam/xlog.c:3502 access/transam/xlog.c:3512 +#, c-format +msgid "required WAL directory \"%s\" does not exist" +msgstr "所需要的WAL目录 \"%s\" 不存在" -#: tcop/fastpath.c:418 tcop/postgres.c:1121 tcop/postgres.c:1408 -#: tcop/postgres.c:1825 tcop/postgres.c:2042 +#: access/transam/xlog.c:3518 #, c-format -msgid "duration: %s ms" -msgstr "执行时间: %s ms" +msgid "creating missing WAL directory \"%s\"" +msgstr "正在创建丢失的WAL目录\"%s\"" -#: tcop/fastpath.c:422 +#: access/transam/xlog.c:3521 #, c-format -msgid "duration: %s ms fastpath function call: \"%s\" (OID %u)" -msgstr "持续时间: %s ms 快速路经的函数调用: \"%s\" (OID %u)" +msgid "could not create missing directory \"%s\": %m" +msgstr "无法创建丢失的目录 \"%s\": %m" -#: tcop/fastpath.c:460 tcop/fastpath.c:587 +#: access/transam/xlog.c:3555 #, c-format -msgid "function call message contains %d arguments but function requires %d" -msgstr "函数调用信息包含 %d 个参数, 但函数需要 %d 个" +msgid "removing transaction log backup history file \"%s\"" +msgstr "正在删除事务日志备份历史文件 \"%s\"" -#: tcop/fastpath.c:468 +#: access/transam/xlog.c:3697 #, c-format -msgid "function call message contains %d argument formats but %d arguments" -msgstr "函数调用信息为包含 %d 个参数的格式, 但给定了 %d 个参数" +msgid "incorrect hole size in record at %X/%X" +msgstr "在%X/%X上的记录中页的未使用空洞大小不正确" -#: tcop/fastpath.c:555 tcop/fastpath.c:638 +#: access/transam/xlog.c:3710 #, c-format -msgid "incorrect binary data format in function argument %d" -msgstr "函数参数 %d 为不正确的二进制数据格式" +msgid "incorrect total length in record at %X/%X" +msgstr "在%X/%X上的记录中的总长度不正确" -#: tcop/postgres.c:392 tcop/postgres.c:404 tcop/postgres.c:415 -#: tcop/postgres.c:427 tcop/postgres.c:4094 +#: access/transam/xlog.c:3723 #, c-format -msgid "invalid frontend message type %d" -msgstr "无效前端信息类型 %d" +msgid "incorrect resource manager data checksum in record at %X/%X" +msgstr "在记录的 %X/%X 中的不正确资源管理数据校验值" -#: tcop/postgres.c:892 +#: access/transam/xlog.c:3801 access/transam/xlog.c:3839 #, c-format -msgid "statement: %s" -msgstr "语句: %s" +msgid "invalid record offset at %X/%X" +msgstr "无效的记录偏移量 %X/%X" -#: tcop/postgres.c:1126 +#: access/transam/xlog.c:3847 #, c-format -msgid "duration: %s ms statement: %s" -msgstr "执行时间: %s ms 语句: %s" +msgid "contrecord is requested by %X/%X" +msgstr "%X/%X 需要 contrecord" -# 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:1176 +#: access/transam/xlog.c:3862 #, c-format -msgid "parse %s: %s" -msgstr "解析 %s: %s" +msgid "invalid xlog switch record at %X/%X" +msgstr "在%X/%X上的xlog切换记录无效" -#: tcop/postgres.c:1234 -msgid "cannot insert multiple commands into a prepared statement" -msgstr "无法插入多条命令到一个准备好的语句中" +#: access/transam/xlog.c:3870 +#, c-format +msgid "record with zero length at %X/%X" +msgstr "在 %X/%X 位置有零长度的记录" -#: tcop/postgres.c:1413 +#: access/transam/xlog.c:3879 #, c-format -msgid "duration: %s ms parse %s: %s" -msgstr "执行时间: %s ms 解析 %s: %s" +msgid "invalid record length at %X/%X" +msgstr "在%X/%X的无效的记录长度 " -#: tcop/postgres.c:1459 +#: access/transam/xlog.c:3886 #, c-format -msgid "bind %s to %s" -msgstr "将%s绑定到%s" +msgid "invalid resource manager ID %u at %X/%X" +msgstr "在 %2$X/%3$X 位置, 为无效的资源管理 ID %1$u" -#: tcop/postgres.c:1478 tcop/postgres.c:2332 -msgid "unnamed prepared statement does not exist" -msgstr "未命名的准备语句不存在" +#: access/transam/xlog.c:3899 access/transam/xlog.c:3915 +#, c-format +msgid "record with incorrect prev-link %X/%X at %X/%X" +msgstr "在 %3$X/%4$X位置的记录带有不正确的prev-link %1$X/%2$X" -#: tcop/postgres.c:1520 +#: access/transam/xlog.c:3944 #, c-format -msgid "bind message has %d parameter formats but %d parameters" -msgstr "绑定信息有%d个参数格式,但是实际上有%d个参数" +msgid "record length %u at %X/%X too long" +msgstr "在 %2$X/%3$X, 记录长度 %1$u 太长" -#: tcop/postgres.c:1526 +#: access/transam/xlog.c:3984 #, c-format -msgid "" -"bind message supplies %d parameters, but prepared statement \"%s\" requires %" -"d" -msgstr "绑定消息提供了%d个参数,但是已准备好语句\"%s\" 要求%d个参数" +msgid "there is no contrecord flag in log file %u, segment %u, offset %u" +msgstr "日志文件 %u, 段 %u, 偏移量 %u 中没有 contrecord 标志" -#: tcop/postgres.c:1691 +#: access/transam/xlog.c:3994 #, c-format -msgid "incorrect binary data format in bind parameter %d" -msgstr "在绑定参数%d中出现不正确的二进制数据" +msgid "invalid contrecord length %u in log file %u, segment %u, offset %u" +msgstr "日志文件 %2$u 中无效的 contrecord 长度 %1$u, 段 %3$u, 偏移量 %4$u" -#: tcop/postgres.c:1830 +#: access/transam/xlog.c:4084 #, c-format -msgid "duration: %s ms bind %s%s%s: %s" -msgstr "执行时间: %s ms 绑定%s%s%s: %s" +msgid "invalid magic number %04X in log file %u, segment %u, offset %u" +msgstr "日志文件 %2$u, 段 %3$u, 偏移量 %4$u 中无效的 magic 数字 %1$04X" -#: tcop/postgres.c:1878 tcop/postgres.c:2419 +#: access/transam/xlog.c:4091 access/transam/xlog.c:4137 #, c-format -msgid "portal \"%s\" does not exist" -msgstr "入口 \"%s\" 不存在" +msgid "invalid info bits %04X in log file %u, segment %u, offset %u" +msgstr "日志文件 %2$u 中无效的信息 (info) 位 %1$04X, 段 %3$u, 偏移量 %4$u" -#: tcop/postgres.c:1965 tcop/postgres.c:2050 -msgid "execute fetch from" -msgstr "执行FETCH操作" +#: access/transam/xlog.c:4113 access/transam/xlog.c:4121 +#: access/transam/xlog.c:4128 +msgid "WAL file is from different database system" +msgstr "WAL 文件来自不同的数据库系统" -#: tcop/postgres.c:1966 tcop/postgres.c:2051 -msgid "execute" -msgstr "执行" +#: access/transam/xlog.c:4114 +#, 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:4122 +msgid "Incorrect XLOG_SEG_SIZE in page header." +msgstr "页头中不正确的 XLOG_SEG_SIZE." + +#: access/transam/xlog.c:4129 +msgid "Incorrect XLOG_BLCKSZ in page header." +msgstr "页头中不正确的 XLOG_SEG_SIZE." -#: tcop/postgres.c:1963 +#: access/transam/xlog.c:4145 #, c-format -msgid "%s %s%s%s: %s" -msgstr "%s %s%s%s: %s" +msgid "unexpected pageaddr %X/%X in log file %u, segment %u, offset %u" +msgstr "日志文件 %3$u 中意外的页地址 %1$X/%2$X, 段 %4$u, 偏移量 %5$u" -#: tcop/postgres.c:2047 +#: access/transam/xlog.c:4157 #, c-format -msgid "duration: %s ms %s %s%s%s: %s" -msgstr "执行时间: %s ms %s%s%s%s: %s" +msgid "unexpected timeline ID %u in log file %u, segment %u, offset %u" +msgstr "日志文件 %2$u 中意外的 timeline ID %1$u, 段 %3$u, 偏移量 %4$u" -#: tcop/postgres.c:2173 +#: access/transam/xlog.c:4184 #, c-format -msgid "prepare: %s" -msgstr "准备: %s" +msgid "" +"out-of-sequence timeline ID %u (after %u) in log file %u, segment %u, offset " +"%u" +msgstr "" +"日志文件 %3$u 中超出序列的 timeline ID %1$u (%2$u 之后), 段 %4$u, 偏移量 %5$u" -#: tcop/postgres.c:2236 +#: access/transam/xlog.c:4261 #, c-format -msgid "parameters: %s" -msgstr "参数: %s" +msgid "syntax error in history file: %s" +msgstr "历史文件中的语法错误: %s" -#: tcop/postgres.c:2255 -msgid "abort reason: recovery conflict" -msgstr "中断原因:与恢复操作相冲突" +#: access/transam/xlog.c:4262 +msgid "Expected a numeric timeline ID." +msgstr "期望一个数字 timeline ID." -#: tcop/postgres.c:2271 -msgid "User was holding shared buffer pin for too long." -msgstr "用户所持有共享缓存锁的时间太长了." +#: access/transam/xlog.c:4267 +#, c-format +msgid "invalid data in history file: %s" +msgstr "历史文件中的无效数据: %s" -#: tcop/postgres.c:2274 -msgid "User was holding a relation lock for too long." -msgstr "用户对一个关系正在持有的锁的时间太长了." +#: access/transam/xlog.c:4268 +msgid "Timeline IDs must be in increasing sequence." +msgstr "TimeLine ID 必须为递增序列." -#: tcop/postgres.c:2277 -msgid "User was or might have been using tablespace that must be dropped." -msgstr "用户正在使用一个必须被删除的表空间" +#: access/transam/xlog.c:4281 +#, c-format +msgid "invalid data in history file \"%s\"" +msgstr "历史文件 \"%s\" 中存在无效数据" -#: tcop/postgres.c:2280 -msgid "User query might have needed to see row versions that must be removed." -msgstr "用户查询可能需要看到而必须被删除的行版本号" +#: access/transam/xlog.c:4282 +msgid "Timeline IDs must be less than child timeline's ID." +msgstr "Timeline ID 必须小于子 timeline 的 ID." -#: tcop/postgres.c:2283 storage/ipc/standby.c:507 -msgid "User transaction caused buffer deadlock with recovery." -msgstr "用户事务造成了恢复操作期间缓冲区的死锁" +#: access/transam/xlog.c:4368 +#, c-format +msgid "new timeline %u is not a child of database system timeline %u" +msgstr "新的时间线%u不附属于数据库系统时间线%u" -# large_obj.c:36 -#: tcop/postgres.c:2286 -msgid "User was connected to a database that must be dropped." -msgstr "用户连接到必须被删除的数据库" - -#: tcop/postgres.c:2620 -msgid "terminating connection because of crash of another server process" -msgstr "中断联接, 因为其它服务器进程崩溃" - -#: tcop/postgres.c:2621 -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 命令此服务器进程回滚当前事物并退出, 因为其它服务器进程不正常的退出" -"可能毁坏了共享内存." +#: access/transam/xlog.c:4381 +#, c-format +msgid "new target timeline is %u" +msgstr "新的目标时间线为%u" -#: tcop/postgres.c:2625 tcop/postgres.c:2957 -msgid "" -"In a moment you should be able to reconnect to the database and repeat your " -"command." -msgstr "一会儿你将可以重联接数据库并且重复你的命令." +#: access/transam/xlog.c:4606 +#, c-format +msgid "could not link file \"%s\" to \"%s\": %m" +msgstr "无法把文件 \"%s\" 链接到 \"%s\": %m" -#: tcop/postgres.c:2729 -msgid "floating-point exception" -msgstr "浮点异常" +#: access/transam/xlog.c:4695 +#, c-format +msgid "could not create control file \"%s\": %m" +msgstr "无法创建控制文件 \"%s\": %m" -#: tcop/postgres.c:2730 -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 "无效的浮点数操作.这表示结果越界或者进行了无效的操作,例如除零." +#: access/transam/xlog.c:4706 access/transam/xlog.c:4931 +#, c-format +msgid "could not write to control file: %m" +msgstr "无法写入控制文件: %m" -#: tcop/postgres.c:2897 -msgid "terminating autovacuum process due to administrator command" -msgstr "由于管理员命令中断autovacuum进程" +#: access/transam/xlog.c:4712 access/transam/xlog.c:4937 +#, c-format +msgid "could not fsync control file: %m" +msgstr "无法 fsync 控制文件: %m" -#: tcop/postgres.c:2901 tcop/postgres.c:2906 tcop/postgres.c:2955 -msgid "terminating connection due to conflict with recovery" -msgstr "由于与恢复操作相冲突而中断连接" +#: access/transam/xlog.c:4717 access/transam/xlog.c:4942 +#, c-format +msgid "could not close control file: %m" +msgstr "无法关闭控制文件: %m" -#: tcop/postgres.c:2911 -msgid "terminating connection due to administrator command" -msgstr "由于管理员命令中断联接" +#: access/transam/xlog.c:4735 access/transam/xlog.c:4920 +#, c-format +msgid "could not open control file \"%s\": %m" +msgstr "无法打开控制文件 \"%s\": %m" -#: tcop/postgres.c:2926 -msgid "canceling authentication due to timeout" -msgstr "由于超时,正在取消认证鉴权命令" +#: access/transam/xlog.c:4741 +#, c-format +msgid "could not read from control file: %m" +msgstr "无法读取控制文件: %m" -#: tcop/postgres.c:2935 -msgid "canceling statement due to statement timeout" -msgstr "由于语句执行超时,正在取消查询命令" +#: access/transam/xlog.c:4755 +#, 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)编译的." -#: tcop/postgres.c:2944 -msgid "canceling autovacuum task" -msgstr "正在取消自动清理任务" +#: access/transam/xlog.c:4759 +msgid "" +"This could be a problem of mismatched byte ordering. It looks like you need " +"to initdb." +msgstr "这是一个字节顺序不匹配的问题.您需要运行initdb." -#: tcop/postgres.c:2962 storage/ipc/standby.c:506 -msgid "canceling statement due to conflict with recovery" -msgstr "由于与恢复操作冲突,正在取消语句命令" +#: access/transam/xlog.c:4764 +#, c-format +msgid "" +"The database cluster was initialized with PG_CONTROL_VERSION %d, but the " +"server was compiled with PG_CONTROL_VERSION %d." +msgstr "" +"数据库集群是以 PG_CONTROL_VERSION %d 初始化的, 但是 服务器是以 " +"PG_CONTROL_VERSION %d 编译的." -#: tcop/postgres.c:2978 -msgid "canceling statement due to user request" -msgstr "由于用户请求而正在取消查询" +#: access/transam/xlog.c:4767 access/transam/xlog.c:4791 +#: access/transam/xlog.c:4798 access/transam/xlog.c:4803 +msgid "It looks like you need to initdb." +msgstr "看上去, 你需要初始化数据库." -#: tcop/postgres.c:3023 -msgid "stack depth limit exceeded" -msgstr "堆栈深度超过限制" +#: access/transam/xlog.c:4778 +msgid "incorrect checksum in control file" +msgstr "控制文件的校验值不正确" -#: tcop/postgres.c:3024 +#: access/transam/xlog.c:4788 +#, c-format msgid "" -"Increase the configuration parameter \"max_stack_depth\", after ensuring the " -"platform's stack depth limit is adequate." +"The database cluster was initialized with CATALOG_VERSION_NO %d, but the " +"server was compiled with CATALOG_VERSION_NO %d." msgstr "" -"在确定了平台的堆栈深度限制是足够大后,增加配置参数 \"max_stack_depth\"的值." +"数据库簇是以 CATALOG_VERSION_NO %d 初始化的, 但是 服务器是以 " +"CATALOG_VERSION_NO %d 编译的." -#: tcop/postgres.c:3040 +#: access/transam/xlog.c:4795 #, c-format -msgid "\"max_stack_depth\" must not exceed %ldkB" -msgstr "参数\"max_stack_depth\"不能超过所限制的%ldkB" - -#: tcop/postgres.c:3042 msgid "" -"Increase the platform's stack depth limit via \"ulimit -s\" or local " -"equivalent." -msgstr "通过命令\"ulimit -s\"或本地相同的命令来增加平台的堆栈深度限制." +"The database cluster was initialized with MAXALIGN %d, but the server was " +"compiled with MAXALIGN %d." +msgstr "" +"数据库集群是以 MAXALIGN%d 初始化的, 但是 服务器是以 NAMEDATALEN %d 编译的." -#: tcop/postgres.c:3365 -msgid "invalid command-line arguments for server process" -msgstr "服务器进程的无效命令行参数" +#: access/transam/xlog.c:4802 +msgid "" +"The database cluster appears to use a different floating-point number format " +"than the server executable." +msgstr "数据库集群在使用与服务器执行部分不同的浮点数格式" -#: tcop/postgres.c:3366 tcop/postgres.c:3372 +#: access/transam/xlog.c:4807 #, c-format -msgid "Try \"%s --help\" for more information." -msgstr "请用 \"%s --help\" 获取更多的信息." +msgid "" +"The database cluster was initialized with BLCKSZ %d, but the server was " +"compiled with BLCKSZ %d." +msgstr "数据库簇是以 BLCKSZ %d 初始化的, 但是 服务器是以 BLCKSZ %d 编译的." -#: tcop/postgres.c:3370 -#, c-format -msgid "%s: invalid command-line arguments" -msgstr "%s: 无效的命令行参数" +#: access/transam/xlog.c:4810 access/transam/xlog.c:4817 +#: access/transam/xlog.c:4824 access/transam/xlog.c:4831 +#: access/transam/xlog.c:4838 access/transam/xlog.c:4845 +#: access/transam/xlog.c:4852 access/transam/xlog.c:4860 +#: access/transam/xlog.c:4867 access/transam/xlog.c:4876 +#: access/transam/xlog.c:4883 access/transam/xlog.c:4892 +#: access/transam/xlog.c:4899 +msgid "It looks like you need to recompile or initdb." +msgstr "看上去, 你需要重新编译或初始化数据库." -#: tcop/postgres.c:3466 +#: access/transam/xlog.c:4814 #, c-format -msgid "%s: no database nor user name specified" -msgstr "%s: 没有指定数据库, 也没有指定用户名" +msgid "" +"The database cluster was initialized with RELSEG_SIZE %d, but the server was " +"compiled with RELSEG_SIZE %d." +msgstr "" +"数据库簇是以 RELSEG_SIZE %d 初始化的, 但是 服务器是以 RELSEG_SIZE %d 编译的." -#: tcop/postgres.c:4004 +#: access/transam/xlog.c:4821 #, c-format -msgid "invalid CLOSE message subtype %d" -msgstr "无效的 CLOSE 信息子类型 %d" +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 编译" +"的." -#: tcop/postgres.c:4037 +#: access/transam/xlog.c:4828 #, c-format -msgid "invalid DESCRIBE message subtype %d" -msgstr "无效的 DESCRIBE 信息子类型 %d" +msgid "" +"The database cluster was initialized with XLOG_SEG_SIZE %d, but the server " +"was compiled with XLOG_SEG_SIZE %d." +msgstr "" +"数据库簇是以 XLOG_SEG_SIZE %d 初始化的, 但是 服务器是以 XLOG_SEG_SIZE %d 编译" +"的." -#: tcop/postgres.c:4268 +#: access/transam/xlog.c:4835 #, 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" +"The database cluster was initialized with NAMEDATALEN %d, but the server was " +"compiled with NAMEDATALEN %d." +msgstr "" +"数据库簇是以 NAMEDATALEN %d 初始化的, 但是 服务器是以 NAMEDATALEN %d 编译的." -#: tcop/pquery.c:670 +#: access/transam/xlog.c:4842 #, c-format -msgid "bind message has %d result formats but query has %d columns" -msgstr "绑定信息有%d个结果格式,但是在查询中有%d列." - -#: tcop/pquery.c:978 -msgid "cursor can only scan forward" -msgstr "游标能够只向前扫描" - -#: tcop/pquery.c:979 -msgid "Declare it with SCROLL option to enable backward scan." -msgstr "带 SCROLL 选项声明允许向后扫描" +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 编译的." -#. translator: %s is name of a SQL command, eg CREATE -#: tcop/utility.c:242 +#: access/transam/xlog.c:4849 #, c-format -msgid "cannot execute %s in a read-only transaction" -msgstr "不能在一个只读模式的事务中执行%s" +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 编译的." -#. translator: %s is name of a SQL command, eg CREATE -#: tcop/utility.c:261 -#, c-format -msgid "cannot execute %s during recovery" -msgstr "无法在恢复期间执行%s" +#: access/transam/xlog.c:4858 +msgid "" +"The database cluster was initialized without HAVE_INT64_TIMESTAMP but the " +"server was compiled with HAVE_INT64_TIMESTAMP." +msgstr "" +"数据库簇初始化时没有定义 HAVE_INT64_TIMESTAMP, 但是 服务器编译时定义了 " +"HAVE_INT64_TIMESTAMP." -#. translator: %s is name of a SQL command, eg PREPARE -#: tcop/utility.c:279 -#, c-format -msgid "cannot execute %s within security-restricted operation" -msgstr "无法在安全限制操作中执行%s" +#: access/transam/xlog.c:4865 +msgid "" +"The database cluster was initialized with HAVE_INT64_TIMESTAMP but the " +"server was compiled without HAVE_INT64_TIMESTAMP." +msgstr "" +"数据库簇初始化时定义了 HAVE_INT64_TIMESTAMP, 但是 服务器编译时没有定义 " +"HAVE_INT64_TIMESTAMP." -#: tcop/utility.c:1129 -msgid "must be superuser to do CHECKPOINT" -msgstr "只有超级用户可以做 CHECKPOINT" +#: access/transam/xlog.c:4874 +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选项编译的." -#: executor/execCurrent.c:75 -#, c-format -msgid "cursor \"%s\" is not a SELECT query" -msgstr "游标 \"%s\"不是一个SELECT查询" +#: access/transam/xlog.c:4881 +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编译" +"的." -#: executor/execCurrent.c:81 -#, c-format -msgid "cursor \"%s\" is held from a previous transaction" -msgstr "游标\"%s\"是前一个事务所持有的" +#: access/transam/xlog.c:4890 +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编译的." -#: executor/execCurrent.c:113 -#, c-format -msgid "cursor \"%s\" has multiple FOR UPDATE/SHARE references to table \"%s\"" -msgstr "游标\"%s\"有多个引用表\"%s\"的FOR UPDATE/SHARE语句" +#: access/transam/xlog.c:4897 +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编" +"译." -#: executor/execCurrent.c:122 +#: access/transam/xlog.c:5222 #, c-format -msgid "" -"cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\"" -msgstr "游标\"%s\"没有引用表\"%s\"的FOR UPDATE/SHARE语句" +msgid "could not write bootstrap transaction log file: %m" +msgstr "无法写入 bootstrap 事务日志文件: %m" -#: executor/execCurrent.c:132 executor/execCurrent.c:178 +#: access/transam/xlog.c:5228 #, c-format -msgid "cursor \"%s\" is not positioned on a row" -msgstr "没有在记录上对游标\"%s\"进行定位" +msgid "could not fsync bootstrap transaction log file: %m" +msgstr "无法同步 (fsync) 事务日志文件: %m" -#: executor/execCurrent.c:165 +#: access/transam/xlog.c:5233 #, c-format -msgid "cursor \"%s\" is not a simply updatable scan of table \"%s\"" -msgstr "游标\"%s\"不对表\"%s\"进行可更新扫描" +msgid "could not close bootstrap transaction log file: %m" +msgstr "无法关闭 bootstrap 事务日志文件: %m" -#: executor/execCurrent.c:230 executor/execQual.c:1024 +#: access/transam/xlog.c:5300 #, c-format -msgid "" -"type of parameter %d (%s) does not match that when preparing the plan (%s)" -msgstr "第%d个参数(%s)的类型与正在执行计划(%s)中的不匹配" +msgid "could not open recovery command file \"%s\": %m" +msgstr "无法打开恢复命令文件 \"%s\": %m" -#: executor/execCurrent.c:242 executor/execQual.c:1035 +#: access/transam/xlog.c:5354 #, c-format -msgid "no value found for parameter %d" -msgstr "没有找到参数 %d 的值" +msgid "recovery_target_timeline is not a valid number: \"%s\"" +msgstr "recovery_target_timeline 不是一个有效的数字: \"%s\"" -#: executor/execMain.c:876 +#: access/transam/xlog.c:5370 #, c-format -msgid "cannot change sequence \"%s\"" -msgstr "不可以改变序列 \"%s\"" +msgid "recovery_target_xid is not a valid number: \"%s\"" +msgstr "recovery_target_xid 不是一个有效的数字: \"%s\"" -#: executor/execMain.c:882 +#: access/transam/xlog.c:5414 #, c-format -msgid "cannot change TOAST relation \"%s\"" -msgstr "不可以改变 TOAST 关系 \"%s\"" +msgid "recovery_target_name is too long (maximum %d characters)" +msgstr "recovery_target_name 值超长 (最大长度为 %d 个字符)" -#: executor/execMain.c:888 +#: access/transam/xlog.c:5461 #, c-format -msgid "cannot change view \"%s\"" -msgstr "不可以改变视图 \"%s\"" +msgid "unrecognized recovery parameter \"%s\"" +msgstr "未认可的恢复参数 \"%s\"" -#: executor/execMain.c:894 +#: access/transam/xlog.c:5472 #, c-format -msgid "cannot change relation \"%s\"" -msgstr "无法改变关系 \"%s\"" +msgid "" +"recovery command file \"%s\" specified neither primary_conninfo nor " +"restore_command" +msgstr "" +"恢复命令文件 \"%s\" 既没有指定restore_command,也没有指定primary_conninfo" -#: executor/execMain.c:1319 -#, c-format -msgid "null value in column \"%s\" violates not-null constraint" -msgstr "在字段 \"%s\" 中空值违反了非空约束" +#: access/transam/xlog.c:5474 +msgid "" +"The database server will regularly poll the pg_xlog subdirectory to check " +"for files placed there." +msgstr "数据服务器将会通过定期轮询pg_xlog子目录来检查放在这里的文件。" -#: executor/execMain.c:1331 +#: access/transam/xlog.c:5480 #, c-format -msgid "new row for relation \"%s\" violates check constraint \"%s\"" -msgstr "关系 \"%s\" 的新列违反了检查约束 \"%s\"" +msgid "" +"recovery command file \"%s\" must specify restore_command when standby mode " +"is not enabled" +msgstr "" +"当没有启用备份模式的时候恢复命令文件 \"%s\" 必须指定 restore_command的值" -#: executor/execQual.c:296 executor/execQual.c:324 executor/execQual.c:2988 -#: utils/adt/array_userfuncs.c:428 utils/adt/arrayfuncs.c:204 -#: utils/adt/arrayfuncs.c:483 utils/adt/arrayfuncs.c:1218 -#: utils/adt/arrayfuncs.c:2886 utils/adt/arrayfuncs.c:4566 +#: access/transam/xlog.c:5500 #, c-format -msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" -msgstr "数组的维数(%d)超过最大允许值(%d)" - -#: executor/execQual.c:309 executor/execQual.c:337 -msgid "array subscript in assignment must not be null" -msgstr "在分配中的数组下标不能为空" +msgid "recovery target timeline %u does not exist" +msgstr "恢复目标的时间线 %u 不存在" -#: executor/execQual.c:633 executor/execQual.c:3906 -#, c-format -msgid "attribute %d has wrong type" -msgstr "属性%d的类型错误" +#: access/transam/xlog.c:5630 +msgid "archive recovery complete" +msgstr "归档恢复完毕" -#: executor/execQual.c:634 executor/execQual.c:3907 +#: access/transam/xlog.c:5748 #, c-format -msgid "Table has type %s, but query expects %s." -msgstr "表具有类型%s,但是查询期望类型%s." - -#: executor/execQual.c:698 executor/execQual.c:717 executor/execQual.c:916 -#: 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 "表记录类型和查询指定记录不匹配" +msgid "recovery stopping after commit of transaction %u, time %s" +msgstr "恢复停止在事物 %u 提交之后, 时间 %s" -#: executor/execQual.c:699 +#: access/transam/xlog.c:5753 #, 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个属性" +msgid "recovery stopping before commit of transaction %u, time %s" +msgstr "恢复停止在事物 %u 提交之前, 时间 %s" -#: executor/execQual.c:718 executor/nodeModifyTable.c:93 +#: access/transam/xlog.c:5761 #, c-format -msgid "Table has type %s at ordinal position %d, but query expects %s." -msgstr "表在位置%2$d具有类型%1$s,但是查询期望类型%3$s." +msgid "recovery stopping after abort of transaction %u, time %s" +msgstr "恢复停止在事物 %u 中断之后, 时间 %s" -#: executor/execQual.c:917 executor/execQual.c:1505 +#: access/transam/xlog.c:5766 #, c-format -msgid "Physical storage mismatch on dropped attribute at ordinal position %d." -msgstr "在顺序位置%d上已删除属性与物理存储上的不匹配." +msgid "recovery stopping before abort of transaction %u, time %s" +msgstr "恢复停止在事物 %u 中断之前, 时间 %s" -#: executor/execQual.c:1189 parser/parse_func.c:97 parser/parse_func.c:329 -#: parser/parse_func.c:645 +#: access/transam/xlog.c:5775 #, 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:1373 -msgid "functions and operators can take at most one set argument" -msgstr "函数和操作符最多带一组参数" +msgid "recovery stopping at restore point \"%s\", time %s" +msgstr "恢复停止在恢复点 \"%s\", 时间 %s" -#: executor/execQual.c:1423 -msgid "" -"function returning setof record called in context that cannot accept type " -"record" -msgstr "调用用于返回setof记录的函数的环境不能接受使用记录类型" +#: access/transam/xlog.c:5809 +msgid "recovery has paused" +msgstr "恢复操作已暂停" -#: executor/execQual.c:1478 executor/execQual.c:1494 executor/execQual.c:1504 -msgid "function return row and query-specified return row do not match" -msgstr "指定查询返回记录和实际函数返回记录不匹配" +#: access/transam/xlog.c:5810 +msgid "Execute pg_xlog_replay_resume() to continue." +msgstr "执行 pg_xlog_replay_resume() 以继续." -#: executor/execQual.c:1479 -#, 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个属性" +#: access/transam/xlog.c:5853 access/transam/xlog.c:5875 +#: access/transam/xlog.c:5897 +msgid "must be superuser to control recovery" +msgstr "只有超级用户才能控制恢复" -#: executor/execQual.c:1495 -#, c-format -msgid "Returned type %s at ordinal position %d, but query expects %s." -msgstr "在顺序位置%2$d的返回类型是%1$s, 但是查询期望使用类型%3$s." +#: access/transam/xlog.c:5858 access/transam/xlog.c:5880 +#: access/transam/xlog.c:5902 +msgid "recovery is not in progress" +msgstr "恢复操作没在进行中" -#: executor/execQual.c:1748 executor/execQual.c:2171 -msgid "table-function protocol for materialize mode was not followed" -msgstr "没有跟随针对物化模式的表函数协议" +#: access/transam/xlog.c:5859 access/transam/xlog.c:5881 +#: access/transam/xlog.c:5903 +msgid "Recovery control functions can only be executed during recovery." +msgstr "在恢复期间无法执行恢复控制函数" -#: executor/execQual.c:1768 executor/execQual.c:2178 +#: access/transam/xlog.c:5996 #, c-format -msgid "unrecognized table-function returnMode: %d" -msgstr "未认可的表函数返回模式 (returnMode): %d" - -#: executor/execQual.c:2088 -msgid "function returning set of rows cannot return null value" -msgstr "函数返回值为多列时不能返回空值" - -#: executor/execQual.c:2145 -msgid "rows returned by function are not all of the same row type" -msgstr "函数返回的记录不完全属于相同的记录类型" - -#: executor/execQual.c:2338 -msgid "IS DISTINCT FROM does not support set arguments" -msgstr "IS DISTINCT FROM 不支持一组参数" +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)" -#: executor/execQual.c:2413 -msgid "op ANY/ALL (array) does not support set arguments" -msgstr "操作符 ANY/ALL (数组) 不支持设置参数" +#: access/transam/xlog.c:6018 +msgid "WAL was generated with wal_level=minimal, data may be missing" +msgstr "WAL文件由wal_level=minimal的设置而产生,这种情况下数据可能会丢失" -#: executor/execQual.c:2966 -msgid "cannot merge incompatible arrays" -msgstr "无法合并不兼容的排列" +#: access/transam/xlog.c:6019 +msgid "" +"This happens if you temporarily set wal_level=minimal without taking a new " +"base backup." +msgstr "" +"发生这种情况是因为您临时将wal_level设置为minimal,而没有同时进行基础备份" -#: executor/execQual.c:2967 -#, c-format +#: access/transam/xlog.c:6030 msgid "" -"Array with element type %s cannot be included in ARRAY construct with " -"element type %s." -msgstr "元素类型为 %s 的 ARRAY 结构中不能包含带有元素类型为 %s 的数组." +"hot standby is not possible because wal_level was not set to \"hot_standby\" " +"on the master server" +msgstr "" +"无法实施热备份,因为在主用服务器上参数wal_level没有设置为\"hot_standby\"" -#: executor/execQual.c:3008 executor/execQual.c:3035 -#: utils/adt/arrayfuncs.c:518 +#: access/transam/xlog.c:6031 msgid "" -"multidimensional arrays must have array expressions with matching dimensions" -msgstr "多维数组必须有符合维度的数组表达式" +"Either set wal_level to \"hot_standby\" on the master, or turn off " +"hot_standby here." +msgstr "" +"在这里既可以将参数wal_level设置为\"hot_standby\" ,也可以将hot_standby关闭" -#: executor/execQual.c:3550 -msgid "NULLIF does not support set arguments" -msgstr "NULLIF 不支持一组参数" +#: access/transam/xlog.c:6079 +msgid "control file contains invalid data" +msgstr "控制文件包含无效的数据" -#: executor/execQual.c:3780 utils/adt/domains.c:128 +#: access/transam/xlog.c:6083 #, c-format -msgid "domain %s does not allow null values" -msgstr "域 %s 不允许空值" +msgid "database system was shut down at %s" +msgstr "数据库上次关闭时间为 %s" -#: executor/execQual.c:3809 utils/adt/domains.c:164 +#: access/transam/xlog.c:6087 #, c-format -msgid "value for domain %s violates check constraint \"%s\"" -msgstr "域 %s 的值违反了检查约束 \"%s\"" - -#: executor/execQual.c:4277 optimizer/util/clauses.c:572 -#: parser/parse_agg.c:160 -msgid "aggregate function calls cannot be nested" -msgstr "不允许嵌套调用聚合函数" - -#: executor/execQual.c:4315 optimizer/util/clauses.c:646 -#: parser/parse_agg.c:207 -msgid "window function calls cannot be nested" -msgstr "不允许嵌套调用窗口函数" - -#: executor/execQual.c:4515 -msgid "target type is not an array" -msgstr "目标类型不是一个数组" +msgid "database system was shut down in recovery at %s" +msgstr "在%s,数据库在恢复中关闭" -#: executor/execQual.c:4628 +#: access/transam/xlog.c:6091 #, c-format -msgid "ROW() column has type %s instead of type %s" -msgstr "ROW() 列类型 %s 替换为 %s" +msgid "database system shutdown was interrupted; last known up at %s" +msgstr "数据库系统关闭操作被中断;上一次已知的运行是在%s" -#: executor/execQual.c:4759 utils/adt/arrayfuncs.c:3306 -#: utils/adt/rowtypes.c:913 +#: access/transam/xlog.c:6095 #, c-format -msgid "could not identify a comparison function for type %s" -msgstr "无法为类型 %s 确认一个比对函数" +msgid "database system was interrupted while in recovery at %s" +msgstr "恢复时, 数据库系统在 %s 被中断" -#: executor/execUtils.c:1296 -#, c-format -msgid "could not create exclusion constraint \"%s\"" -msgstr "无法创建排他约束\"%s\"" +#: access/transam/xlog.c:6097 +msgid "" +"This probably means that some data is corrupted and you will have to use the " +"last backup for recovery." +msgstr "这意味着一些数据被毁坏, 你将不得不使用最新的备份恢复." -#: executor/execUtils.c:1298 +#: access/transam/xlog.c:6101 #, c-format -msgid "Key %s conflicts with key %s." -msgstr "键%s与另外一个键%s冲突" +msgid "database system was interrupted while in recovery at log time %s" +msgstr "当日志时间%s进行恢复时,数据库系统被中断" -#: executor/execUtils.c:1303 -#, c-format -msgid "conflicting key value violates exclusion constraint \"%s\"" -msgstr "互相冲突的键值违反排他约束\"%s\"" +#: access/transam/xlog.c:6103 +msgid "" +"If this has occurred more than once some data might be corrupted and you " +"might need to choose an earlier recovery target." +msgstr "" +"如果这种现象多次发生,那么表示数据可能已经损坏,您可能需要选择更早一点的恢复" +"目标" -#: executor/execUtils.c:1305 +#: access/transam/xlog.c:6107 #, c-format -msgid "Key %s conflicts with existing key %s." -msgstr "键%s与已存在的键%s冲突" +msgid "database system was interrupted; last known up at %s" +msgstr "数据库系统中断;上一次的启动时间是在%s" -#. translator: %s is a SQL statement name -#: executor/functions.c:154 +#: access/transam/xlog.c:6156 #, c-format -msgid "%s is not allowed in a SQL function" -msgstr "%s 不允许在一个 SQL 函数中" +msgid "requested timeline %u is not a child of database system timeline %u" +msgstr "所要求的时间线%u不附属数据库系统时间线%u" -#. translator: %s is a SQL statement name -#: executor/functions.c:161 executor/spi.c:1256 executor/spi.c:1846 -#, c-format -msgid "%s is not allowed in a non-volatile function" -msgstr "%s 在一个 non-valatile 函数中是不允许的" +#: access/transam/xlog.c:6174 +msgid "entering standby mode" +msgstr "正在进入备用模式" -#: executor/functions.c:259 +#: access/transam/xlog.c:6177 #, c-format -msgid "" -"could not determine actual result type for function declared to return type %" -"s" -msgstr "无法确定实际结果类型为函数声明返回类型 %s" +msgid "starting point-in-time recovery to XID %u" +msgstr "开始执行到XID %u的基于时间点恢复" -#: executor/functions.c:298 +#: access/transam/xlog.c:6181 #, c-format -msgid "could not determine actual type of argument declared %s" -msgstr "无法确定声明为 %s 的参数的实际类型" +msgid "starting point-in-time recovery to %s" +msgstr "开始执行到%s的基于时间点恢复" -#: executor/functions.c:923 +#: access/transam/xlog.c:6185 #, c-format -msgid "SQL function \"%s\" statement %d" -msgstr "SQL 函数 \"%s\" 语句 %d" +msgid "starting point-in-time recovery to \"%s\"" +msgstr "开始执行到基于时间点恢复的时间点\"%s\"" -#: executor/functions.c:946 -#, c-format -msgid "SQL function \"%s\" during startup" -msgstr "SQL 函数 \"%s\" 在启动的时候" +#: access/transam/xlog.c:6189 +msgid "starting archive recovery" +msgstr "开始归档恢复" -#: executor/functions.c:1091 executor/functions.c:1127 -#: executor/functions.c:1139 executor/functions.c:1245 -#: executor/functions.c:1277 executor/functions.c:1306 +#: access/transam/xlog.c:6211 access/transam/xlog.c:6251 #, c-format -msgid "return type mismatch in function declared to return %s" -msgstr "函数返回类型和声明类型 %s 不匹配" - -#: executor/functions.c:1093 -msgid "" -"Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING." -msgstr "函数的最后语句必须是 SELECT 或 INSERT/UPDATE/DELETE RETURNING." +msgid "checkpoint record is at %X/%X" +msgstr "checkpoint 记录位置在 %X/%X" -#: executor/functions.c:1129 -msgid "Final statement must return exactly one column." -msgstr "最终的语句必须返回一列." +#: access/transam/xlog.c:6225 +msgid "could not find redo location referenced by checkpoint record" +msgstr "无法找到checkpoint 记录对应的重做日志位置" -#: executor/functions.c:1141 +#: access/transam/xlog.c:6226 access/transam/xlog.c:6233 #, c-format -msgid "Actual return type is %s." -msgstr "实际返回类型是 %s." - -#: executor/functions.c:1247 -msgid "Final statement returns too many columns." -msgstr "最终的语句的返回列太多." +msgid "" +"If you are not restoring from a backup, try removing the file \"%s/" +"backup_label\"." +msgstr "如果你不是从备份恢复, 请删除 \"%s/backup_label\"." -#: executor/functions.c:1279 -#, c-format -msgid "Final statement returns %s instead of %s at column %d." -msgstr "最终语句在第 %3$d 列返回 %1$s 而不是 %2$s" +#: access/transam/xlog.c:6232 +msgid "could not locate required checkpoint record" +msgstr "无法找到需要的 checkpoint 记录" -#: executor/functions.c:1308 -msgid "Final statement returns too few columns." -msgstr "最终的语句返回的列太少." +#: access/transam/xlog.c:6261 access/transam/xlog.c:6276 +msgid "could not locate a valid checkpoint record" +msgstr "无法找到一个有效的 checkpoint 记录" -#: executor/functions.c:1356 +#: access/transam/xlog.c:6270 #, c-format -msgid "return type %s is not supported for SQL functions" -msgstr "SQL 函数不支持返回类型 %s" +msgid "using previous checkpoint record at %X/%X" +msgstr "使用在 %X/%X 的前一个 checkpoint 记录" -#: executor/nodeAgg.c:1717 executor/nodeWindowAgg.c:1842 +#: access/transam/xlog.c:6285 #, c-format -msgid "aggregate %u needs to have compatible input type and transition type" -msgstr "聚集 %u 需要有兼容的输入类型和转换类型" +msgid "redo record is at %X/%X; shutdown %s" +msgstr "重做记录是在%X/%X; 关闭 %s" -#: executor/nodeHashjoin.c:721 executor/nodeHashjoin.c:755 +#: access/transam/xlog.c:6289 #, c-format -msgid "could not rewind hash-join temporary file: %m" -msgstr "无法卷回 (rewind) 散列联接 (hash-join) 临时文件: %m" +msgid "next transaction ID: %u/%u; next OID: %u" +msgstr "下一个事务ID: %u/%u; 下一个 OID: %u" -#: executor/nodeHashjoin.c:789 executor/nodeHashjoin.c:795 +#: access/transam/xlog.c:6293 #, c-format -msgid "could not write to hash-join temporary file: %m" -msgstr "无法写入散列联接 (hash-join) 临时文件: %m" +msgid "next MultiXactId: %u; next MultiXactOffset: %u" +msgstr "下一个MultiXactId: %u; 下一个MultiXactOffset: %u" -#: executor/nodeHashjoin.c:829 executor/nodeHashjoin.c:839 +#: access/transam/xlog.c:6296 #, c-format -msgid "could not read from hash-join temporary file: %m" -msgstr "无法从散列联接 (hash-join) 临时文件读取: %m" +msgid "oldest unfrozen transaction ID: %u, in database %u" +msgstr "在数据库%2$u中,最旧的非冻结事务ID是%1$u" -#: executor/nodeLimit.c:251 -msgid "OFFSET must not be negative" -msgstr "OFFSET后的值不能是负数" +#: access/transam/xlog.c:6300 +msgid "invalid next transaction ID" +msgstr "无效的下一个事务 ID" -#: executor/nodeLimit.c:278 -msgid "LIMIT must not be negative" -msgstr "LIMIT后的值不能为负数" +#: access/transam/xlog.c:6322 +msgid "invalid redo in checkpoint record" +msgstr "在检查点记录中无效的redo操作" -#: executor/nodeMergejoin.c:1586 -msgid "RIGHT JOIN is only supported with merge-joinable join conditions" -msgstr "RIGHT JOIN 只支持可合并联结条件" +#: access/transam/xlog.c:6333 +msgid "invalid redo record in shutdown checkpoint" +msgstr "在关闭检查点中的redo记录无效" -#: executor/nodeMergejoin.c:1606 optimizer/path/joinpath.c:1072 -msgid "FULL JOIN is only supported with merge-joinable join conditions" -msgstr "只有在合并连接查询条件中才支持FULL JOIN" +#: access/transam/xlog.c:6363 +msgid "" +"database system was not properly shut down; automatic recovery in progress" +msgstr "数据库系统没有正确的关闭; 处于自动恢复状态中" -#: executor/nodeModifyTable.c:83 -msgid "Query has too many columns." -msgstr "查询中的列太多了" +#: access/transam/xlog.c:6442 +msgid "initializing for hot standby" +msgstr "正在为热备进行初始化" -#: executor/nodeModifyTable.c:110 +#: access/transam/xlog.c:6571 #, c-format -msgid "Query provides a value for a dropped column at ordinal position %d." -msgstr "在顺序位置%d上查询为已删除的列提供了一个值" +msgid "redo starts at %X/%X" +msgstr "redo 在 %X/%X 开始" -#: executor/nodeModifyTable.c:118 -msgid "Query has too few columns." -msgstr "查询中的列太少了" +#: access/transam/xlog.c:6699 +#, c-format +msgid "redo done at %X/%X" +msgstr "redo 在 %X/%X 完成" -#: 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 "作为一个表达式使用的子查询返回了多列" +#: access/transam/xlog.c:6704 access/transam/xlog.c:8296 +#, c-format +msgid "last completed transaction was at log time %s" +msgstr "上一次完成事务是在日志时间%s完成的." -#: executor/nodeWindowAgg.c:1233 -msgid "frame starting offset must not be null" -msgstr "框架(frame)的启动偏移量不能为空" +#: access/transam/xlog.c:6712 +msgid "redo is not required" +msgstr "不需要 redo" -#: executor/nodeWindowAgg.c:1246 -msgid "frame starting offset must not be negative" -msgstr "框架(frame)的启动偏移量不能为负数" +#: access/transam/xlog.c:6760 +msgid "requested recovery stop point is before consistent recovery point" +msgstr "所要求的恢复停止点在一致性恢复点之前" -#: executor/nodeWindowAgg.c:1259 -msgid "frame ending offset must not be null" -msgstr "框架(frame)的结束偏移量不能为空" +#: access/transam/xlog.c:6769 +msgid "WAL ends before end of online backup" +msgstr "联机备份终止之前,WAL已经终止" -#: executor/nodeWindowAgg.c:1272 -msgid "frame ending offset must not be negative" -msgstr "框架(frame)的结束偏移量不能为负数" +#: access/transam/xlog.c:6770 +msgid "" +"Online backup started with pg_start_backup() must be ended with " +"pg_stop_backup(), and all WAL up to that point must be available at recovery." +msgstr "" +"由pg_start_backup()发起的联机备份必须通过调用pg_stop_backup()来终止, 并且到那" +"一刻为止所有的WAL日志在恢复时必须存在." -#: executor/spi.c:210 -msgid "transaction left non-empty SPI stack" -msgstr "事物剩下非空的 SPI 栈" +#: access/transam/xlog.c:6773 +msgid "WAL ends before consistent recovery point" +msgstr "在一致性恢复点前结束WAL" -#: executor/spi.c:211 executor/spi.c:275 -msgid "Check for missing \"SPI_finish\" calls." -msgstr "检查是否缺少 \"SPI_finish\" 调用." +#: access/transam/xlog.c:6794 +#, c-format +msgid "selected new timeline ID: %u" +msgstr "已选择的新时间线ID:%u" -#: executor/spi.c:274 -msgid "subtransaction left non-empty SPI stack" -msgstr "子事物剩下非空的 SPI 栈" +#: access/transam/xlog.c:7044 +#, c-format +msgid "consistent recovery state reached at %X/%X" +msgstr "在%X/%X上已到达一致性恢复状态" -#: executor/spi.c:1137 -msgid "cannot open multi-query plan as cursor" -msgstr "无法作为游标打开多条查询规划" +#: access/transam/xlog.c:7211 +msgid "invalid primary checkpoint link in control file" +msgstr "在控制文件中无效的主 checkpoint 链接" -#. 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" +#: access/transam/xlog.c:7215 +msgid "invalid secondary checkpoint link in control file" +msgstr "在控制文件中无效的次 checkpoint 链接" -#: executor/spi.c:1233 parser/analyze.c:1969 -msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" -msgstr "不支持DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE " +#: access/transam/xlog.c:7219 +msgid "invalid checkpoint link in backup_label file" +msgstr "在 backup_label 文件中无效的 checkpoint 链接" -#: executor/spi.c:1234 parser/analyze.c:1970 -msgid "Scrollable cursors must be READ ONLY." -msgstr "可滚动游标必须为只读." +#: access/transam/xlog.c:7233 +msgid "invalid primary checkpoint record" +msgstr "无效的主 checkpoint 记录" -#: executor/spi.c:2142 -#, c-format -msgid "SQL statement \"%s\"" -msgstr "SQL 语句 \"%s\"" +#: access/transam/xlog.c:7237 +msgid "invalid secondary checkpoint record" +msgstr "无效的次 checkpoint 记录" -#: foreign/foreign.c:230 -#, c-format -msgid "user mapping not found for \"%s\"" -msgstr "没有找到对于\"%s\"的用户映射" +#: access/transam/xlog.c:7241 +msgid "invalid checkpoint record" +msgstr "无效的 checkpoint 记录" -#: foreign/foreign.c:408 -#, c-format -msgid "invalid option \"%s\"" -msgstr "无效选项 \"%s\"" +#: access/transam/xlog.c:7252 +msgid "invalid resource manager ID in primary checkpoint record" +msgstr "在主 checkpoint 记录中的无效资源管理器 ID" -#: foreign/foreign.c:409 -#, c-format -msgid "Valid options in this context are: %s" -msgstr "这个环境中有效选项是:%s" +#: access/transam/xlog.c:7256 +msgid "invalid resource manager ID in secondary checkpoint record" +msgstr "在次 checkpoint 记录中的无效资源管理器 ID" -#: lib/stringinfo.c:267 -#, c-format -msgid "Cannot enlarge string buffer containing %d bytes by %d more bytes." -msgstr "无法为包含%d字节的字符串缓冲区扩大%d个更多字节." +#: access/transam/xlog.c:7260 +msgid "invalid resource manager ID in checkpoint record" +msgstr "在 checkpoint 记录中的无效资源管理器 ID" -#: libpq/auth.c:255 -#, c-format -msgid "authentication failed for user \"%s\": host rejected" -msgstr "用户 \"%s\" 认证失败: 主机拒绝" +#: access/transam/xlog.c:7272 +msgid "invalid xl_info in primary checkpoint record" +msgstr "在主 checkpoint 记录中无效的 xl_info" -#: libpq/auth.c:258 -#, c-format -msgid "Kerberos 5 authentication failed for user \"%s\"" -msgstr "用户 \"%s\" Kerberos5 认证失败" +#: access/transam/xlog.c:7276 +msgid "invalid xl_info in secondary checkpoint record" +msgstr "在次 checkpoint 记录中无效的 xl_info" -#: libpq/auth.c:261 -#, c-format -msgid "\"trust\" authentication failed for user \"%s\"" -msgstr "用户 \"%s\" \"trust\" 认证失败" +#: access/transam/xlog.c:7280 +msgid "invalid xl_info in checkpoint record" +msgstr "在 checkpoint 记录中无效的 xl_info" -#: libpq/auth.c:264 -#, c-format -msgid "Ident authentication failed for user \"%s\"" -msgstr "用户 \"%s\" Ident 认证失败" +#: access/transam/xlog.c:7292 +msgid "invalid length of primary checkpoint record" +msgstr "无效的主 checkpoint 记录长度" -#: libpq/auth.c:268 -#, c-format -msgid "password authentication failed for user \"%s\"" -msgstr "用户 \"%s\" Password 认证失败" +#: access/transam/xlog.c:7296 +msgid "invalid length of secondary checkpoint record" +msgstr "无效的次 checkpoint 记录长度" -#: libpq/auth.c:273 +#: access/transam/xlog.c:7300 +msgid "invalid length of checkpoint record" +msgstr "无效的 checkpoint 记录长度" + +#: access/transam/xlog.c:7462 +msgid "shutting down" +msgstr "正在关闭" + +#: access/transam/xlog.c:7484 +msgid "database system is shut down" +msgstr "数据库系统已关闭" + +#: access/transam/xlog.c:7916 +msgid "" +"concurrent transaction log activity while database system is shutting down" +msgstr "当数据库正在关闭时, 仍有活跃的并发事物日志" + +#: access/transam/xlog.c:8150 +msgid "skipping restartpoint, recovery has already ended" +msgstr "正在跳过重新启动点, 恢复已经结束" + +#: access/transam/xlog.c:8175 #, c-format -msgid "GSSAPI authentication failed for user \"%s\"" -msgstr "对于用户\"%s\"的GSSAPI 认证失败" +msgid "skipping restartpoint, already performed at %X/%X" +msgstr "跳过重新启动点,它已经在%X/%X上执行了." -#: libpq/auth.c:276 +#: access/transam/xlog.c:8294 #, c-format -msgid "SSPI authentication failed for user \"%s\"" -msgstr "对于用户 \"%s\" 的 SSPI 认证失败" +msgid "recovery restart point at %X/%X" +msgstr "恢复得重新启动点是在%X/%X开始" -#: libpq/auth.c:279 +#: access/transam/xlog.c:8394 #, c-format -msgid "PAM authentication failed for user \"%s\"" -msgstr "用户 \"%s\" 认证 PAM 失败" +msgid "restore point \"%s\" created at %X/%X" +msgstr "恢复点\"%s\",创建于%X/%X" + +#: access/transam/xlog.c:8494 +msgid "online backup was canceled, recovery cannot continue" +msgstr "在线备份操作已取消,恢复操作无法继续" -#: libpq/auth.c:282 +#: access/transam/xlog.c:8557 #, c-format -msgid "LDAP authentication failed for user \"%s\"" -msgstr "对于用户 \"%s\"的LDAP认证失败" +msgid "unexpected timeline ID %u (after %u) in checkpoint record" +msgstr "在检查点记录中出现未期望的时间线ID%u(在%u之后)" -#: libpq/auth.c:285 +#: access/transam/xlog.c:8602 #, c-format -msgid "certificate authentication failed for user \"%s\"" -msgstr "用户 \"%s\" 的认证失败" +msgid "unexpected timeline ID %u (should be %u) in checkpoint record" +msgstr "在检查点记录中出现未期望的时间线ID%u(应该是%u)" -#: libpq/auth.c:288 +#: access/transam/xlog.c:8866 access/transam/xlog.c:8890 #, c-format -msgid "RADIUS authentication failed for user \"%s\"" -msgstr "用户 \"%s\" 的RADIUS认证失败" +msgid "could not fsync log file %u, segment %u: %m" +msgstr "无法同步 (fsync) 日志文件 %u, 段 %u: %m" -#: libpq/auth.c:291 +#: access/transam/xlog.c:8898 #, c-format -msgid "authentication failed for user \"%s\": invalid authentication method" -msgstr "用户 \"%s\" 认证失败: 无效的认证方式" +msgid "could not fsync write-through log file %u, segment %u: %m" +msgstr "无法同步 (fsync) 日志文件 %u, 段 %u: %m" -#: libpq/auth.c:320 -msgid "missing or erroneous pg_hba.conf file" -msgstr "缺失或者时拿到错误的 pg_hba.conf 文件" +#: access/transam/xlog.c:8907 +#, c-format +msgid "could not fdatasync log file %u, segment %u: %m" +msgstr "无法同步 (fdatasync) 日志文件 %u, 段 %u: %m" -#: libpq/auth.c:321 -msgid "See server log for details." -msgstr "详细信息请查看服务器日志." +#: access/transam/xlog.c:8988 access/transam/xlog.c:9267 +msgid "must be superuser or replication role to run a backup" +msgstr "运行备份必须为超级用户或者是复制角色用户" -#: libpq/auth.c:351 -msgid "connection requires a valid client certificate" -msgstr "连接中需要一个有效的客户端认证" +#: access/transam/xlog.c:8993 access/transam/xlog.c:9272 +#: access/transam/xlog.c:9535 access/transam/xlog.c:9567 +#: access/transam/xlog.c:9608 access/transam/xlog.c:9641 +#: access/transam/xlog.c:9748 access/transam/xlog.c:9823 +msgid "recovery is in progress" +msgstr "恢复操作正在进行中" -#: libpq/auth.c:395 libpq/auth.c:411 libpq/auth.c:448 libpq/auth.c:464 -msgid "SSL on" -msgstr "SSL 开启" +#: access/transam/xlog.c:8994 access/transam/xlog.c:9273 +#: access/transam/xlog.c:9536 access/transam/xlog.c:9568 +#: access/transam/xlog.c:9609 access/transam/xlog.c:9642 +msgid "WAL control functions cannot be executed during recovery." +msgstr "在恢复期间无法执行WAL控制函数" -#: libpq/auth.c:395 libpq/auth.c:411 libpq/auth.c:448 libpq/auth.c:464 -msgid "SSL off" -msgstr "SSL 关闭" +#: access/transam/xlog.c:8999 access/transam/xlog.c:9278 +msgid "WAL level not sufficient for making an online backup" +msgstr "WAL的级别不能满足在线备份的要求" -#: libpq/auth.c:393 -#, c-format +#: access/transam/xlog.c:9000 access/transam/xlog.c:9279 +#: access/transam/xlog.c:9574 msgid "" -"pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s" -msgstr "pg_hba.conf中的记录拒绝来自主机\"%s\",用户 \"%s\",%s的复制连接" +"wal_level must be set to \"archive\" or \"hot_standby\" at server start." +msgstr "在服务器启动的时候wal_level必须被设置为\"archive\"或\"hot_standby\"." -#: libpq/auth.c:399 +#: access/transam/xlog.c:9005 #, c-format -msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\"" -msgstr "pg_hba.conf 记录拒绝来自主机\"%s\", 用户\"%s\"的复制连接" +msgid "backup label too long (max %d bytes)" +msgstr "备份标签名超长(最大为%d字节)" -#: libpq/auth.c:408 +#: access/transam/xlog.c:9046 access/transam/xlog.c:9149 +msgid "a backup is already in progress" +msgstr "一个备份已经在运行中" + +#: access/transam/xlog.c:9047 +msgid "Run pg_stop_backup() and try again." +msgstr "运行pg_stop_backup(),然后重新尝试一次." + +#: access/transam/xlog.c:9150 #, c-format msgid "" -"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s" -"\", %s" -msgstr "" -"pg_hba.conf 记录拒绝来自主机\"%s\", 用户\"%s\", 数据库\"%s\", %s的复制连接" +"If you're sure there is no backup in progress, remove file \"%s\" and try " +"again." +msgstr "如果你确认没有其他备份进程在运行, 删除文件 \"%s\", 然后重试." -#: libpq/auth.c:415 +#: access/transam/xlog.c:9165 access/transam/xlog.c:9411 #, c-format -msgid "" -"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\"" -msgstr "pg_hba.conf 记录拒绝来自主机\"%s\", 用户\"%s\", 数据库\"%s\"的复制连接" +msgid "could not write file \"%s\": %m" +msgstr "无法写入文件 \"%s\": %m" + +#: access/transam/xlog.c:9323 +msgid "a backup is not in progress" +msgstr "没有备份在运行中" -#: libpq/auth.c:446 +#: access/transam/xlog.c:9362 access/transam/xlog.c:9893 +#: access/transam/xlog.c:9899 #, c-format +msgid "invalid data in file \"%s\"" +msgstr "文件 \"%s\" 中存在无效数据" + +#: access/transam/xlog.c:9460 msgid "" -"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s" -"\", %s" -msgstr "没有来自主机 \"%s\", 用户\"%s\", %s的复制连接的pg_hba.conf记录" +"pg_stop_backup cleanup done, waiting for required WAL segments to be archived" +msgstr "pg_stop_backup命令所执行的清理操作已完成,正在等待所要求的WAL段归档" -#: libpq/auth.c:452 +#: access/transam/xlog.c:9470 #, c-format msgid "" -"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\"" -msgstr "没有来自主机 \"%s\", 用户\"%s\"的复制连接的pg_hba.conf记录" +"pg_stop_backup still waiting for all required WAL segments to be archived " +"(%d seconds elapsed)" +msgstr "pg_stop_backup在等待所有需要的WAL段归档(已过去%d秒)" -#: libpq/auth.c:461 -#, c-format -msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\", %s" +#: access/transam/xlog.c:9472 +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 "" -"没有用于主机 \"%s\", 用户 \"%s\", 数据库 \"%s\", %s 的 pg_hba.conf 记录" - -#: libpq/auth.c:468 -#, c-format -msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\"" -msgstr "没有用于主机 \"%s\", 用户 \"%s\", 数据库 \"%s\" 的 pg_hba.conf 记录" +"请检查您的归档命令是否正确执行。pg_stop_backup命令可以安全退出,但是如果没有" +"所有需要的WAL段,数据库备份将无法使用." -#: libpq/auth.c:526 -#, c-format -msgid "could not enable credential reception: %m" -msgstr "无法启用证书接收: %m" +#: access/transam/xlog.c:9479 +msgid "pg_stop_backup complete, all required WAL segments have been archived" +msgstr "pg_stop_backup 执行完成,所有需要的WAL段都已经归档完成。" -#: libpq/auth.c:539 libpq/hba.c:948 +#: access/transam/xlog.c:9483 msgid "" -"MD5 authentication is not supported when \"db_user_namespace\" is enabled" -msgstr "当启用 \"db_user_namespace\" 时不支持 MD5 认证" +"WAL archiving is not enabled; you must ensure that all required WAL segments " +"are copied through other means to complete the backup" +msgstr "" +"没有启用WAL归档;您必须确保所有的WAL段已通过其他的方法拷贝,这样才能完成备份" -#: libpq/auth.c:660 -#, c-format -msgid "expected password response, got message type %d" -msgstr "期望得到口令回应,但是得到了消息类型%d." +#: access/transam/xlog.c:9530 +msgid "must be superuser to switch transaction log files" +msgstr "必须为超级用户才能切换事务日志文件" -#: libpq/auth.c:688 -msgid "invalid password packet size" -msgstr "无效的口令包尺寸" +#: access/transam/xlog.c:9562 +msgid "must be superuser to create a restore point" +msgstr "只有超级用户能创建恢复点" -#: libpq/auth.c:692 -msgid "received password packet" -msgstr "接收到口令包" +#: access/transam/xlog.c:9573 +msgid "WAL level not sufficient for creating a restore point" +msgstr "WAL的级别不能满足创建恢复点的要求" -#: libpq/auth.c:750 +#: access/transam/xlog.c:9581 #, c-format -msgid "Kerberos initialization returned error %d" -msgstr "Kerberos 初始化返回错误 %d" +msgid "value too long for restore point (maximum %d characters)" +msgstr "恢复点值超长(最大%d个字符)" -#: libpq/auth.c:760 -#, c-format -msgid "Kerberos keytab resolving returned error %d" -msgstr "Kerberos keytab 解析返回错误 %d" +#: access/transam/xlog.c:9749 +msgid "pg_xlogfile_name_offset() cannot be executed during recovery." +msgstr "在恢复过程中不能执行pg_xlogfile_name_offset()" -#: libpq/auth.c:784 +#: access/transam/xlog.c:9759 access/transam/xlog.c:9831 #, c-format -msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d" -msgstr "Kerberos sname_to_principal(\"%s\", \"%s\") 返回错误 %d" +msgid "could not parse transaction log location \"%s\"" +msgstr "无法解析事务日志位置\"%s\"" -#: libpq/auth.c:829 -#, c-format -msgid "Kerberos recvauth returned error %d" -msgstr "Kerberos recvauth 返回错误 %d" +#: access/transam/xlog.c:9824 +msgid "pg_xlogfile_name() cannot be executed during recovery." +msgstr "在恢复过程中无法执行pg_xlogfile_name() " -#: libpq/auth.c:852 +#: access/transam/xlog.c:9935 #, c-format -msgid "Kerberos unparse_name returned error %d" -msgstr "Kerberos unparse_name 返回错误 %d" +msgid "xlog redo %s" +msgstr "xlog重做 %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 -#: libpq/auth.c:975 +#: access/transam/xlog.c:9975 +msgid "online backup mode canceled" +msgstr "在线备份模式已取消" + +#: access/transam/xlog.c:9976 #, c-format -msgid "%s: %s" -msgstr "%s: %s" +msgid "\"%s\" was renamed to \"%s\"." +msgstr "\"%s\" 被重新命名为\"%s\"." -#: libpq/auth.c:1001 -msgid "GSSAPI is not supported in protocol version 2" -msgstr "在协议版本2中不支持使用GSSAPI" +#: access/transam/xlog.c:9983 +msgid "online backup mode was not canceled" +msgstr "在线备份模式没有取消" -#: libpq/auth.c:1056 +#: access/transam/xlog.c:9984 #, c-format -msgid "expected GSS response, got message type %d" -msgstr "期望GSS回应,但是得到了信息类型%d" +msgid "Could not rename \"%s\" to \"%s\": %m." +msgstr "无法把文件 \"%s\" 重命名为 \"%s\": %m" -#: libpq/auth.c:1119 -msgid "accepting GSS security context failed" -msgstr "接收GSS安全环境失败" +#: access/transam/xlog.c:10497 access/transam/xlog.c:10519 +#, c-format +msgid "could not read from log file %u, segment %u, offset %u: %m" +msgstr "无法从日志文件 %u 读取, 段 %u, 偏移量 %u: %m" -#: libpq/auth.c:1145 -msgid "retrieving GSS user name failed" -msgstr "获取GSS用户名失败" +#: access/transam/xlog.c:10608 +msgid "received promote request" +msgstr "接收到提或请求" -#: libpq/auth.c:1218 +#: access/transam/xlog.c:10621 #, c-format -msgid "SSPI error %x" -msgstr "SSPI 错误 %x" +msgid "trigger file found: %s" +msgstr "已找到触发器文件:%s" -#: libpq/auth.c:1222 +#: access/gin/ginentrypage.c:101 access/nbtree/nbtsort.c:483 +#: access/nbtree/nbtinsert.c:531 #, c-format -msgid "%s (%x)" -msgstr "%s (%x)" +msgid "index row size %lu exceeds maximum %lu for index \"%s\"" +msgstr "索引行的大小 %1$lu 超过了索引\"%3$s\"所允许的最大值%2$lu" -#: libpq/auth.c:1262 -msgid "SSPI is not supported in protocol version 2" -msgstr "在协议版本2中不支持使用SSPI" +#: access/gin/ginscan.c:401 +msgid "old GIN indexes do not support whole-index scans nor searches for nulls" +msgstr "老的GIN索引不支持完整索引 (whole-index) 扫描,也不支持null值搜索" -#: libpq/auth.c:1277 -msgid "could not acquire SSPI credentials" -msgstr "无法获得同等 (peer) 证书: %m" +#: access/gin/ginscan.c:402 +#, c-format +msgid "To fix this, do REINDEX INDEX \"%s\"." +msgstr "要解决此问题, 可执行REINDEX INDEX \"%s\"." -#: libpq/auth.c:1294 +#: access/nbtree/nbtpage.c:161 access/nbtree/nbtpage.c:365 +#: parser/parse_utilcmd.c:1577 #, c-format -msgid "expected SSPI response, got message type %d" -msgstr "期望SSPI回应,但是得到了消息类型%d" +msgid "index \"%s\" is not a btree" +msgstr "索引 \"%s\" 不是一个 btree" -#: libpq/auth.c:1366 -msgid "could not accept SSPI security context" -msgstr "无法访问SSPI安全环境" +#: 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, 代码版本 %d" -#: libpq/auth.c:1422 -msgid "could not get token from SSPI security context" -msgstr "无法从SSPI安全环境中获取令牌(token)" +#: access/nbtree/nbtsort.c:487 access/nbtree/nbtinsert.c:535 +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哈希函数索引,或者使用全文索引." -#: libpq/auth.c:1665 +#: access/nbtree/nbtinsert.c:393 #, c-format -msgid "could not create socket for Ident connection: %m" -msgstr "无法为 Ident 联接创建套接字: %m" +msgid "duplicate key value violates unique constraint \"%s\"" +msgstr "重复键违反唯一约束\"%s\"" -#: libpq/auth.c:1680 +#: access/nbtree/nbtinsert.c:395 #, c-format -msgid "could not bind to local address \"%s\": %m" -msgstr "无法绑定到本地地址 \"%s\": %m" +msgid "Key %s already exists." +msgstr "键值\"%s\" 已经存在" -#: libpq/auth.c:1692 +#: access/nbtree/nbtinsert.c:457 #, c-format -msgid "could not connect to Ident server at address \"%s\", port %s: %m" -msgstr "无法联接到地址为 \"%s\", 端口为 %s 的 Ident 服务器: %m" +msgid "failed to re-find tuple within index \"%s\"" +msgstr "在索引\"%s\"中重新寻找元组失败" -#: libpq/auth.c:1712 -#, c-format -msgid "could not send query to Ident server at address \"%s\", port %s: %m" -msgstr "无法发送查询到地址为 \"%s\", 端口为 %s 的 Ident 服务器: %m" +#: access/nbtree/nbtinsert.c:459 +msgid "This may be because of a non-immutable index expression." +msgstr "这可能是由于一个非不可改变的索引表达式引起的" -#: libpq/auth.c:1727 +#: access/index/indexam.c:161 commands/tablecmds.c:221 +#: commands/tablecmds.c:2414 commands/indexcmds.c:1507 +#: catalog/objectaddress.c:391 #, c-format -msgid "" -"could not receive response from Ident server at address \"%s\", port %s: %m" -msgstr "无法从地址为 \"%s\", 端口为 %s 的 Ident 服务器接收应答: %m" +msgid "\"%s\" is not an index" +msgstr "\"%s\" 不是一个索引" -#: libpq/auth.c:1737 -#, c-format -msgid "invalidly formatted response from Ident server: \"%s\"" -msgstr "从 Ident 服务器接收的无效格式应答: \"%s\"" +#: access/gist/gist.c:127 access/gist/gist.c:243 +msgid "unlogged GiST indexes are not supported" +msgstr "不支持不带事务日志的GiST索引" -#: libpq/auth.c:1772 libpq/auth.c:1802 libpq/auth.c:1830 libpq/auth.c:1906 +#: access/gist/gist.c:728 access/gist/gistvacuum.c:271 #, c-format -msgid "could not get peer credentials: %m" -msgstr "无法获得同等 (peer) 证书: %m" +msgid "index \"%s\" contains an inner tuple marked as invalid" +msgstr "索引\"%s\"包含无效的内部元组" -#: libpq/auth.c:1781 libpq/auth.c:1811 libpq/auth.c:1848 libpq/auth.c:1917 -#, c-format -msgid "local user with ID %d does not exist" -msgstr "ID 为 %d 的本地用户不存在" +#: access/gist/gist.c:730 access/gist/gistvacuum.c:273 +msgid "" +"This is caused by an incomplete page split at crash recovery before " +"upgrading to PostgreSQL 9.1." +msgstr "这是在升级到PostgreSQL 9.1之前执行灾难恢复时不完全的页分裂引起的." -#: libpq/auth.c:1838 +#: access/gist/gistsplit.c:375 #, c-format -msgid "could not get effective UID from peer credentials: %m" -msgstr "无法从对端证书中获取有效的UID: %m" +msgid "picksplit method for column %d of index \"%s\" failed" +msgstr "为索引\"%2$s\"的第%1$d列执行picksplit方法失败" -#: libpq/auth.c:1928 +#: access/gist/gistsplit.c:377 msgid "" -"Ident authentication is not supported on local connections on this platform" -msgstr "在此平台上不支持本地联接的 Ident 认证" +"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命令中尝试在这一列" +"上创建第二个索引." -#: libpq/auth.c:2045 libpq/auth.c:2317 libpq/auth.c:2677 -msgid "empty password returned by client" -msgstr "客户端返回了空口令" +#: commands/lockcmds.c:93 +#, c-format +msgid "could not obtain lock on relation \"%s\"" +msgstr "无法在关系 \"%s\" 上获得锁" -#: libpq/auth.c:2055 +#: commands/lockcmds.c:98 #, c-format -msgid "error from underlying PAM layer: %s" -msgstr "来自 PAM 层下面的错误: %s" +msgid "could not obtain lock on relation with OID %u" +msgstr "无法从带有OID %u关系上获得锁" -#: libpq/auth.c:2124 +#: commands/lockcmds.c:122 catalog/namespace.c:285 parser/parse_relation.c:842 #, c-format -msgid "could not create PAM authenticator: %s" -msgstr "无法创建 PAM 类型器: %s" +msgid "relation \"%s.%s\" does not exist" +msgstr "关系 \"%s.%s\" 不存在" -#: libpq/auth.c:2135 +#: commands/lockcmds.c:149 commands/tablecmds.c:203 commands/tablecmds.c:1137 +#: commands/tablecmds.c:2406 commands/tablecmds.c:3758 +#: commands/tablecmds.c:6731 commands/indexcmds.c:197 +#: commands/indexcmds.c:1539 catalog/toasting.c:93 catalog/objectaddress.c:405 #, c-format -msgid "pam_set_item(PAM_USER) failed: %s" -msgstr "pam_set_item(PAM_USER) 失败: %s" +msgid "\"%s\" is not a table" +msgstr "\"%s\" 不是一个表" -#: libpq/auth.c:2146 +#: commands/define.c:67 commands/define.c:222 commands/define.c:254 +#: commands/define.c:282 #, c-format -msgid "pam_set_item(PAM_CONV) failed: %s" -msgstr "pam_set_item(PAM_CONV) 失败: %s" +msgid "%s requires a parameter" +msgstr "%s 需要一个参数" -#: libpq/auth.c:2157 +#: commands/define.c:108 commands/define.c:119 commands/define.c:189 +#: commands/define.c:207 #, c-format -msgid "pam_authenticate failed: %s" -msgstr "pam_authenticate 失败: %s" +msgid "%s requires a numeric value" +msgstr "%s 需要一个数字值" -#: libpq/auth.c:2168 +#: commands/define.c:175 #, c-format -msgid "pam_acct_mgmt failed: %s" -msgstr "pam_acct_mgmt 失败: %s" +msgid "%s requires a Boolean value" +msgstr "%s 需要一个布尔值" -#: libpq/auth.c:2179 +#: commands/define.c:236 #, c-format -msgid "could not release PAM authenticator: %s" -msgstr "无法释放 PAM 类型器: %s" +msgid "argument of %s must be a name" +msgstr "%s 的参数必须是一个名字" + +#: commands/define.c:266 +#, c-format +msgid "argument of %s must be a type name" +msgstr "%s 的参数必需是一个类型名" -#: libpq/auth.c:2212 libpq/auth.c:2216 +#: commands/define.c:291 #, c-format -msgid "could not initialize LDAP: error code %d" -msgstr "无法初始化LDAP: 错误代码%d" +msgid "%s requires an integer value" +msgstr "%s 需要一个整数值" -#: libpq/auth.c:2226 +#: commands/define.c:312 #, c-format -msgid "could not set LDAP protocol version: error code %d" -msgstr "无法设置LDAP协议版本: 错误代码 %d" +msgid "invalid argument for %s: \"%s\"" +msgstr "%s 的无效参数: \"%s\"" -#: libpq/auth.c:2255 -msgid "could not load wldap32.dll" -msgstr "无法加载wldap32.dll" +#: commands/variable.c:172 +msgid "Conflicting \"datestyle\" specifications." +msgstr "\"datestyle\" 规范冲突." -#: libpq/auth.c:2263 -msgid "could not load function _ldap_start_tls_sA in wldap32.dll" -msgstr "无法加载在wldap32.dll中的函数_ldap_start_tls_sA" +#: commands/variable.c:328 +msgid "Cannot specify months in time zone interval." +msgstr "在 time zone interval中无法指定月." -#: libpq/auth.c:2264 -msgid "LDAP over SSL is not supported on this platform." -msgstr "在此平台上不支持在SSL连接上的LDAP" +#: commands/variable.c:334 +msgid "Cannot specify days in time zone interval." +msgstr "在 time zone interval中无法指定天." -#: libpq/auth.c:2279 +#: commands/variable.c:378 commands/variable.c:517 #, c-format -msgid "could not start LDAP TLS session: error code %d" -msgstr "无法启动LDAP TLS会话: 错误码 %d" - -#: libpq/auth.c:2301 -msgid "LDAP server not specified" -msgstr "没有指定LDAP服务器" +msgid "time zone \"%s\" appears to use leap seconds" +msgstr "时区 \"%s\" 看上去使用了闰秒" -#: libpq/auth.c:2353 -msgid "invalid character in user name for LDAP authentication" -msgstr "在需要进行LDAP认证的用户名中出现无效字符" +#: commands/variable.c:380 commands/variable.c:519 +msgid "PostgreSQL does not support leap seconds." +msgstr "PostgreSQL 不支持闰秒" -#: libpq/auth.c:2368 -#, 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" +#: commands/variable.c:587 +msgid "cannot set transaction read-write mode inside a read-only transaction" +msgstr "不能在一个只读事物里面设置读写模式" -#: libpq/auth.c:2393 -#, c-format -msgid "could not search LDAP for filter \"%s\" on server \"%s\": error code %d" -msgstr "无法在服务器\"%2$s\"上为过滤器\"%1$s\"进行的搜索LDAP:错误代码%3$d" +#: commands/variable.c:594 +msgid "transaction read-write mode must be set before any query" +msgstr "执行任意查询前必须设置事务的读写模式" -#: libpq/auth.c:2403 -#, c-format -msgid "LDAP search failed for filter \"%s\" on server \"%s\": no such user" -msgstr "在服务器\"%2$s\"上为过滤器\"%1$s\"进行的LDAP搜索失败:没有此用户" +#: commands/variable.c:601 +msgid "cannot set transaction read-write mode during recovery" +msgstr "在恢复操作期间不能设置事务的读写模式" -#: libpq/auth.c:2407 -#, 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个匹配)" +#: commands/variable.c:650 +msgid "SET TRANSACTION ISOLATION LEVEL must be called before any query" +msgstr "SET TRANSACTION ISOLATION LEVEL 必须在任何查询之前调用" -#: libpq/auth.c:2424 -#, 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" +#: commands/variable.c:657 +msgid "SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction" +msgstr "SET TRANSACTION ISOLATION LEVEL 不能在子事物中调用" -#: libpq/auth.c:2444 -#, c-format -msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s" -msgstr "在服务器 \"%2$s\"上搜索用户\"%1$s\"后无法解除绑定:%3$s" +#: commands/variable.c:664 storage/lmgr/predicate.c:1570 +msgid "cannot use serializable mode in a hot standby" +msgstr "热备过程中无法使用可串行化模式" -#: libpq/auth.c:2481 -#, c-format -msgid "LDAP login failed for user \"%s\" on server \"%s\": error code %d" -msgstr "用户 \"%s\" 在服务器 \"%s\" 进行LDAP登录失败:错误代码 %d" +#: commands/variable.c:665 +msgid "You can use REPEATABLE READ instead." +msgstr "您必须使用REPEATABLE READ来代替" -#: libpq/auth.c:2509 -#, c-format +#: commands/variable.c:713 msgid "" -"certificate authentication failed for user \"%s\": client certificate " -"contains no user name" -msgstr "用户\"%s\"的认证鉴权失败: 客户端认证没有包含用户名" +"SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction" +msgstr "SET TRANSACTION [NOT] DEFERRABLE 不能在子事物中调用" -#: libpq/auth.c:2633 -msgid "RADIUS server not specified" -msgstr "没有指定RADIUS服务器" +#: commands/variable.c:719 +msgid "SET TRANSACTION [NOT] DEFERRABLE must be called before any query" +msgstr "SET TRANSACTION [NOT] DEFERRABLE 必须在任何查询之前调用" -#: libpq/auth.c:2640 -msgid "RADIUS secret not specified" -msgstr "没有指定RADIUS机密(secret) " +#: commands/variable.c:801 +#, c-format +msgid "Conversion between %s and %s is not supported." +msgstr "不支持 %s 和 %s 之间的编码转换." + +#: commands/variable.c:808 +msgid "Cannot change \"client_encoding\" now." +msgstr "现在无法改变 \"client_encoding\" 值." -#: libpq/auth.c:2656 libpq/hba.c:1213 +#: commands/variable.c:978 #, c-format -msgid "could not translate RADIUS server name \"%s\" to address: %s" -msgstr "无法将RADIUS服务器名称 \"%s\" 翻译为相应地址:%s" +msgid "permission denied to set role \"%s\"" +msgstr "设置角色\"%s\"的权限不足" -#: libpq/auth.c:2684 -msgid "" -"RADIUS authentication does not support passwords longer than 16 characters" -msgstr "RADIUS认证不支持长度超过16个字符的口令" +#: commands/prepare.c:71 +msgid "invalid statement name: must not be empty" +msgstr "无效的语句名称: 不能为空" -#: libpq/auth.c:2695 -msgid "could not generate random encryption vector" -msgstr "无法产生随机加密向量" +#: commands/prepare.c:140 +msgid "utility statements cannot be prepared" +msgstr "不能准备好工具语句" -#: libpq/auth.c:2718 -msgid "could not perform MD5 encryption of password" -msgstr "无法执行口令的MD5加密" +#: commands/prepare.c:240 commands/prepare.c:247 commands/prepare.c:706 +msgid "prepared statement is not a SELECT" +msgstr "准备好的语句不是一个 SELECT" -#: libpq/auth.c:2740 +#: commands/prepare.c:314 #, c-format -msgid "could not create RADIUS socket: %m" -msgstr "无法创建RADIUS套接字: %m" +msgid "wrong number of parameters for prepared statement \"%s\"" +msgstr "准备好的语句 \"%s\" 参数个数错误" -#: libpq/auth.c:2761 +#: commands/prepare.c:316 #, c-format -msgid "could not bind local RADIUS socket: %m" -msgstr "无法绑定本地RADIUS套接字: %m" +msgid "Expected %d parameters but got %d." +msgstr "预计 %d 个参数, 但得到了 %d 个." -#: libpq/auth.c:2771 -#, c-format -msgid "could not send RADIUS packet: %m" -msgstr "无法发送RADIUS包: %m" +#: commands/prepare.c:345 +msgid "cannot use subquery in EXECUTE parameter" +msgstr "在 EXECUTE 参数中不可以使用子查询" -#: libpq/auth.c:2796 -#, c-format -msgid "could not check status on RADIUS socket: %m" -msgstr "无法在RADIUS套接字上检查状态: %m" +#: commands/prepare.c:349 +msgid "cannot use aggregate function in EXECUTE parameter" +msgstr "在 EXECUTE 参数中不可以使用聚合函数" -#: libpq/auth.c:2803 -msgid "timeout waiting for RADIUS response" -msgstr "在等待RADIUS回应包时超时" +#: commands/prepare.c:353 +msgid "cannot use window function in EXECUTE parameter" +msgstr "在EXECUTE参数中不能使用窗口函数" -#: libpq/auth.c:2819 +#: commands/prepare.c:366 #, c-format -msgid "could not read RADIUS response: %m" -msgstr "无法读取RADIUS回应包: %m" +msgid "parameter $%d of type %s cannot be coerced to the expected type %s" +msgstr "类型 %2$s 的参数 $%1$d 不能强制到预计 (expected) 类型 %3$s" -#: libpq/auth.c:2834 libpq/auth.c:2838 -#, c-format -msgid "RADIUS response was sent from incorrect port: %i" -msgstr "RADIUS回应数据包是从不正确的端口中发出的:%i" +#: commands/prepare.c:370 rewrite/rewriteHandler.c:1035 catalog/heap.c:2446 +#: parser/parse_target.c:489 parser/parse_target.c:735 +#: parser/parse_target.c:745 parser/parse_node.c:397 +msgid "You will need to rewrite or cast the expression." +msgstr "你需要重写或转换表达式" -#: libpq/auth.c:2847 +#: commands/prepare.c:467 #, c-format -msgid "RADIUS response too short: %i" -msgstr "RADIUS回应包的长度太短:%i" +msgid "prepared statement \"%s\" already exists" +msgstr "准备好的语句 \"%s\" 已经存在" -#: libpq/auth.c:2854 +#: commands/prepare.c:525 #, c-format -msgid "RADIUS response has corrupt length: %i (actual length %i)" -msgstr "RADIUS回应包的长度不正确:%i(实际长度是%i)" +msgid "prepared statement \"%s\" does not exist" +msgstr "准备好的语句 \"%s\" 不存在" -#: libpq/auth.c:2862 +#: commands/tablecmds.c:201 #, c-format -msgid "RADIUS response is to a different request: %i (should be %i)" -msgstr "RADIUS回应包发送到了一个不同的请求上:%i (应该是%i)" +msgid "table \"%s\" does not exist" +msgstr "表 \"%s\" 不存在" -#: libpq/auth.c:2887 -msgid "could not perform MD5 encryption of received packet" -msgstr "无法执行所接收数据包的MD5加密" +#: commands/tablecmds.c:202 +#, c-format +msgid "table \"%s\" does not exist, skipping" +msgstr "表 \"%s\" 不存在" -#: libpq/auth.c:2896 -msgid "RADIUS response has incorrect MD5 signature" -msgstr "RADIUS回应包带有不正确的MD5签名" +#: commands/tablecmds.c:204 +msgid "Use DROP TABLE to remove a table." +msgstr "请使用 DROP TABLE 删除一个表." -#: libpq/auth.c:2907 +#: commands/tablecmds.c:207 #, c-format -msgid "RADIUS response has invalid code (%i) for user \"%s\"" -msgstr "对于用户\"%2$s\"来说RADIUS回应包带有无效编码(%1$i) " +msgid "sequence \"%s\" does not exist" +msgstr "序列 \"%s\" 不存在" -#: 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:518 +#: commands/tablecmds.c:208 #, c-format -msgid "invalid large-object descriptor: %d" -msgstr "无效的大对象描述符: %d" +msgid "sequence \"%s\" does not exist, skipping" +msgstr "序列 \"%s\" 不存在" + +#: commands/tablecmds.c:210 +msgid "Use DROP SEQUENCE to remove a sequence." +msgstr "请使用 DROP SEQUENCE 删除一个序列." -#: libpq/be-fsstubs.c:173 libpq/be-fsstubs.c:205 libpq/be-fsstubs.c:528 +#: commands/tablecmds.c:213 #, c-format -msgid "permission denied for large object %u" -msgstr "访问大对象%u的权限不够" +msgid "view \"%s\" does not exist" +msgstr "视图 \"%s\" 不存在" -#: libpq/be-fsstubs.c:194 +#: commands/tablecmds.c:214 #, c-format -msgid "large object descriptor %d was not opened for writing" -msgstr "无法打开大对象描述符%d进行写操作" +msgid "view \"%s\" does not exist, skipping" +msgstr "视图 \"%s\" 不存在" -#: libpq/be-fsstubs.c:392 -msgid "must be superuser to use server-side lo_import()" -msgstr "必须是超级用户才可以使用服务器端的 lo_import()" +#: commands/tablecmds.c:215 commands/tablecmds.c:2181 +#: commands/tablecmds.c:2438 commands/tablecmds.c:3773 +#: commands/tablecmds.c:9040 commands/view.c:181 catalog/objectaddress.c:412 +#, c-format +msgid "\"%s\" is not a view" +msgstr "\"%s\" 不是一个视图" -#: libpq/be-fsstubs.c:393 -msgid "Anyone can use the client-side lo_import() provided by libpq." -msgstr "任何人都可以使用 libpq 提供的客户端 lo_import()." +#: commands/tablecmds.c:216 +msgid "Use DROP VIEW to remove a view." +msgstr "请使用 DROP VIEW 删除一个视图." -#: libpq/be-fsstubs.c:406 +#: commands/tablecmds.c:219 parser/parse_utilcmd.c:1505 #, c-format -msgid "could not open server file \"%s\": %m" -msgstr "无法打开服务器文件 \"%s\": %m" +msgid "index \"%s\" does not exist" +msgstr "索引 \"%s\" 不存在" -#: libpq/be-fsstubs.c:428 +#: commands/tablecmds.c:220 #, c-format -msgid "could not read server file \"%s\": %m" -msgstr "无法读取服务器文件 \"%s\": %m" - -#: libpq/be-fsstubs.c:458 -msgid "must be superuser to use server-side lo_export()" -msgstr "必须是超级用户才可以使用服务器端的 lo_export()" +msgid "index \"%s\" does not exist, skipping" +msgstr "索引 \"%s\" 不存在" -#: libpq/be-fsstubs.c:459 -msgid "Anyone can use the client-side lo_export() provided by libpq." -msgstr "任何人都可以使用 libpq 提供的客户端 lo_export()." +#: commands/tablecmds.c:222 +msgid "Use DROP INDEX to remove an index." +msgstr "请使用 DROP INDEX 删除一个索引." -#: libpq/be-fsstubs.c:483 +#: commands/tablecmds.c:226 commands/typecmds.c:666 #, c-format -msgid "could not create server file \"%s\": %m" -msgstr "无法创建服务器文件 \"%s\": %m" +msgid "type \"%s\" does not exist, skipping" +msgstr "类型 \"%s\" 不存在" -#: libpq/be-fsstubs.c:495 +#: commands/tablecmds.c:227 #, c-format -msgid "could not write server file \"%s\": %m" -msgstr "无法写入服务器文件 \"%s\": %m" +msgid "\"%s\" is not a type" +msgstr "\"%s\" 不是一个类型" + +#: commands/tablecmds.c:228 +msgid "Use DROP TYPE to remove a type." +msgstr "请使用 DROP TYPE 删除一个类型." -#: libpq/be-secure.c:283 libpq/be-secure.c:378 +#: commands/tablecmds.c:231 commands/tablecmds.c:8952 #, c-format -msgid "SSL error: %s" -msgstr "SSL 错误: %s" +msgid "foreign table \"%s\" does not exist" +msgstr "外部表 \"%s\" 不存在" -#: libpq/be-secure.c:292 libpq/be-secure.c:387 libpq/be-secure.c:951 +#: commands/tablecmds.c:232 #, c-format -msgid "unrecognized SSL error code: %d" -msgstr "未知的 SSL 错误码: %d" +msgid "foreign table \"%s\" does not exist, skipping" +msgstr "外部表 \"%s\" 不存在, 跳过" -#: libpq/be-secure.c:331 libpq/be-secure.c:335 libpq/be-secure.c:345 -msgid "SSL renegotiation failure" -msgstr "SSL 协商失败" +#: commands/tablecmds.c:233 commands/tablecmds.c:2187 +#: commands/tablecmds.c:2446 commands/tablecmds.c:3776 +#: commands/tablecmds.c:9048 catalog/objectaddress.c:419 +#, c-format +msgid "\"%s\" is not a foreign table" +msgstr "\"%s\" 不是一个外部表" -#: libpq/be-secure.c:339 -msgid "SSL failed to send renegotiation request" -msgstr "发送 SSL 协商响应失败" +#: commands/tablecmds.c:234 +msgid "Use DROP FOREIGN TABLE to remove a foreign table." +msgstr "请使用 DROP FOREIGN TABLE 删除一个外部表." -#: libpq/be-secure.c:736 -#, c-format -msgid "could not create SSL context: %s" -msgstr "无法创建 SSL 环境: %s" +#: commands/tablecmds.c:429 executor/execMain.c:2411 +msgid "ON COMMIT can only be used on temporary tables" +msgstr "ON COMMIT 只能被用于临时表" -#: libpq/be-secure.c:746 -#, c-format -msgid "could not load server certificate file \"%s\": %s" -msgstr "无法装载服务器认证文件 \"%s\": %s" +#: commands/tablecmds.c:433 +msgid "constraints on foreign tables are not supported" +msgstr "不支持在外部表上使用约束" -#: libpq/be-secure.c:752 -#, c-format -msgid "could not access private key file \"%s\": %m" -msgstr "无法处理私钥文件 \"%s\": %m" +#: commands/tablecmds.c:451 executor/execMain.c:2429 +msgid "cannot create temporary table within security-restricted operation" +msgstr "不能在安全限制的操作中创建临时表" -#: libpq/be-secure.c:767 -#, c-format -msgid "private key file \"%s\" has group or world access" -msgstr "私钥文件\"%s\"具有由所在组或全局范围访问的权限" +#: commands/tablecmds.c:483 commands/tablecmds.c:7932 commands/indexcmds.c:262 +#: executor/execMain.c:2462 +msgid "only shared relations can be placed in pg_global tablespace" +msgstr "在pg_global表空间中只能放置共享关系" -#: libpq/be-secure.c:769 -msgid "Permissions should be u=rw (0600) or less." -msgstr "权限应该为u=rw (0600)或者更少" +#: commands/tablecmds.c:549 commands/tablecmds.c:4284 +msgid "default values on foreign tables are not supported" +msgstr "外部表中不支持使用缺省值" -#: libpq/be-secure.c:776 +#: commands/tablecmds.c:929 #, c-format -msgid "could not load private key file \"%s\": %s" -msgstr "无法装载私钥文件 \"%s\": %s" +msgid "truncate cascades to table \"%s\"" +msgstr "级联截断表\"%s\"" -#: libpq/be-secure.c:781 -#, c-format -msgid "check of private key failed: %s" -msgstr "检查私钥失败: %s" +#: commands/tablecmds.c:1160 +msgid "cannot truncate temporary tables of other sessions" +msgstr "不能缩短其他会话的临时表" -#: libpq/be-secure.c:809 +#: commands/tablecmds.c:1276 commands/tablecmds.c:1708 +#: commands/tablecmds.c:4209 catalog/heap.c:389 #, c-format -msgid "could not access root certificate file \"%s\": %m" -msgstr "无法访问根认证文件\"%s\": %m" +msgid "tables can have at most %d columns" +msgstr "表最多可以有 %d 个字段" -#: libpq/be-secure.c:820 +#: commands/tablecmds.c:1327 commands/copy.c:3799 commands/trigger.c:601 +#: parser/parse_target.c:911 parser/parse_target.c:922 #, c-format -msgid "could not load root certificate file \"%s\": %s" -msgstr "无法装载根 (root) 认证文件 \"%s\": %s" +msgid "column \"%s\" specified more than once" +msgstr "字段 \"%s\" 被指定多次" -#: libpq/be-secure.c:843 +#: commands/tablecmds.c:1362 parser/parse_utilcmd.c:623 +#: parser/parse_utilcmd.c:1717 #, 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库不支持认证撤销列表" +msgid "inherited relation \"%s\" is not a table" +msgstr "继承关系 \"%s\" 不是一个表" -#: libpq/be-secure.c:852 +#: commands/tablecmds.c:1369 commands/tablecmds.c:8164 #, c-format -msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s" -msgstr "没有找到SSL认证撤销列表文件\"%s\",跳过: %s" +msgid "cannot inherit from temporary relation \"%s\"" +msgstr "不能从临时关系 \"%s\" 继承" -#: libpq/be-secure.c:854 -msgid "Certificates will not be checked against revocation list." -msgstr "无法针对撤销列表检查认证" +#: commands/tablecmds.c:1377 commands/tablecmds.c:8172 +#, fuzzy +msgid "cannot inherit from temporary relation of another session" +msgstr "不能从临时关系 \"%s\" 继承" -#: libpq/be-secure.c:896 +#: commands/tablecmds.c:1393 commands/tablecmds.c:8206 #, c-format -msgid "could not initialize SSL connection: %s" -msgstr "无法初始化 SSL 联接: %s" +msgid "relation \"%s\" would be inherited from more than once" +msgstr "关系 \"%s\" 将被继承多次" -#: libpq/be-secure.c:905 +#: commands/tablecmds.c:1441 #, c-format -msgid "could not set SSL socket: %s" -msgstr "无法创建 SSL 套接字: %s" +msgid "merging multiple inherited definitions of column \"%s\"" +msgstr "合并属性 \"%s\" 的多个继承定义" -#: libpq/be-secure.c:931 +#: commands/tablecmds.c:1449 #, c-format -msgid "could not accept SSL connection: %m" -msgstr "无法访问 SSL 联接: %m" +msgid "inherited column \"%s\" has a type conflict" +msgstr "继承属性 \"%s\" 类型冲突" -#: libpq/be-secure.c:935 libpq/be-secure.c:946 -msgid "could not accept SSL connection: EOF detected" -msgstr "无法访问 SSL 联接: 发现 EOF" +#: commands/tablecmds.c:1451 commands/tablecmds.c:1472 +#: commands/tablecmds.c:1653 commands/tablecmds.c:1675 +#: parser/parse_coerce.c:1540 parser/parse_coerce.c:1560 +#: parser/parse_coerce.c:1605 parser/parse_param.c:217 +#, c-format +msgid "%s versus %s" +msgstr "%s 对 %s" -#: libpq/be-secure.c:940 +#: commands/tablecmds.c:1458 #, c-format -msgid "could not accept SSL connection: %s" -msgstr "无法访问 SSL 联接: %s" +msgid "inherited column \"%s\" has a collation conflict" +msgstr "继承列 \"%s\" 出现排序规则冲突" -#: libpq/be-secure.c:991 -msgid "SSL certificate's common name contains embedded null" -msgstr "在SSL认证的普通名称中包含嵌入的空值" +#: commands/tablecmds.c:1460 commands/tablecmds.c:1663 +#: commands/tablecmds.c:4153 +#, c-format +msgid "\"%s\" versus \"%s\"" +msgstr "\"%s\" 对 \"%s\"" -#: libpq/be-secure.c:998 +#: commands/tablecmds.c:1470 #, c-format -msgid "SSL connection from \"%s\"" -msgstr "来自 \"%s\" 的 SSL 联接" +msgid "inherited column \"%s\" has a storage parameter conflict" +msgstr "继承列 \"%s\" 有一个存储参数冲突" -#: libpq/be-secure.c:1042 -msgid "no SSL error reported" -msgstr "没有报告SSL错误" +#: commands/tablecmds.c:1578 parser/parse_utilcmd.c:776 +#: parser/parse_utilcmd.c:1154 parser/parse_utilcmd.c:1230 +msgid "cannot convert whole-row table reference" +msgstr "无法转换整行表引用" -#: libpq/be-secure.c:1046 +#: commands/tablecmds.c:1579 parser/parse_utilcmd.c:777 #, c-format -msgid "SSL error code %lu" -msgstr "SSL错误代码 %lu" +msgid "Constraint \"%s\" contains a whole-row reference to table \"%s\"." +msgstr "约束\"%s\"包含到表\"%s\"的整行引用." -#: libpq/hba.c:158 +#: commands/tablecmds.c:1643 #, c-format -msgid "authentication file token too long, skipping: \"%s\"" -msgstr "认证文件标记 (token) 太长, 忽略: \"%s\"" +msgid "merging column \"%s\" with inherited definition" +msgstr "合并属性 \"%s\" 连同继承定义" -#: libpq/hba.c:351 +#: commands/tablecmds.c:1651 #, c-format -msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" -msgstr "无法打开次认证文件 \"@%s\" 为 \"%s\": %m" +msgid "column \"%s\" has a type conflict" +msgstr "属性 \"%s\" 类型冲突" -#. translator: the second %s is a list of auth methods -#: libpq/hba.c:651 +#: commands/tablecmds.c:1661 #, c-format -msgid "" -"authentication option \"%s\" is only valid for authentication methods %s" -msgstr "认证选项\"%s\"只对认证方法%s有效" +msgid "column \"%s\" has a collation conflict" +msgstr "列 \"%s\" 出现排序规则冲突" -# fe-auth.c:640 -#: libpq/hba.c:667 +#: commands/tablecmds.c:1673 #, c-format -msgid "authentication method \"%s\" requires argument \"%s\" to be set" -msgstr "在认证方法\"%s\"需要设置参数\"%s\" " +msgid "column \"%s\" has a storage parameter conflict" +msgstr "列 \"%s\" 带有一个冲突的存储参数" -#: libpq/hba.c:713 -msgid "hostssl not supported on this platform" -msgstr "在此平台上不支持使用hostssl" +#: commands/tablecmds.c:1725 +#, c-format +msgid "column \"%s\" inherits conflicting default values" +msgstr "属性 \"%s\" 继承与默认值冲突" -#: libpq/hba.c:714 -msgid "Compile with --with-openssl to use SSL connections." -msgstr "为了使用SSL连接,在编译时需要带有 --with-openssl选项" +#: commands/tablecmds.c:1727 +msgid "To resolve the conflict, specify a default explicitly." +msgstr "要解决冲突, 指定明确的默认值" -# fe-connect.c:2558 -#: libpq/hba.c:736 +#: commands/tablecmds.c:1774 #, c-format -msgid "invalid connection type \"%s\"" -msgstr "无效连接类型\"%s\"" - -#: libpq/hba.c:749 -msgid "end-of-line before database specification" -msgstr "在数据库定义前面出现行结束符" +msgid "" +"check constraint name \"%s\" appears multiple times but with different " +"expressions" +msgstr "检查约束名称\"%s\"出现多次,但是带有不同的表达式" -#: libpq/hba.c:762 -msgid "end-of-line before role specification" -msgstr "在角色定义前面出现行结束符" +#: commands/tablecmds.c:1969 +msgid "cannot rename column of typed table" +msgstr "无法重新命名已确定类型表(typed table)的列" -#: libpq/hba.c:777 -msgid "end-of-line before IP address specification" -msgstr "在IP地址定义前面出现行结束符" +#: commands/tablecmds.c:1986 +#, fuzzy, c-format +msgid "\"%s\" is not a table, view, composite type, index or foreign table" +msgstr "\"%s\" 不是一个表,视图,组合类型,索引或者外部表" -#: libpq/hba.c:823 +#: commands/tablecmds.c:2052 #, c-format -msgid "invalid IP address \"%s\": %s" -msgstr "IP地址无效\"%s\": %s" +msgid "inherited column \"%s\" must be renamed in child tables too" +msgstr "在子表中继承属性 \"%s\" 也必需重命名" -#: libpq/hba.c:846 +#: commands/tablecmds.c:2084 #, c-format -msgid "invalid CIDR mask in address \"%s\"" -msgstr "在地址\"%s\"中的CIDR掩码无效" +msgid "cannot rename system column \"%s\"" +msgstr "不能对系统字段 \"%s\" 重命名" -#: libpq/hba.c:864 -msgid "end-of-line before netmask specification" -msgstr "在网络掩码定义前的行结束符" +#: commands/tablecmds.c:2099 +#, c-format +msgid "cannot rename inherited column \"%s\"" +msgstr "不能对继承字段 \"%s\" 重命名" -#: libpq/hba.c:876 +#: commands/tablecmds.c:2110 commands/tablecmds.c:4197 #, c-format -msgid "invalid IP mask \"%s\": %s" -msgstr "无效IP地址掩码\"%s\": %s" +msgid "column \"%s\" of relation \"%s\" already exists" +msgstr "关系 \"%s\" 的属性 \"%s\" 已经存在" -#: libpq/hba.c:893 -msgid "IP address and mask do not match" -msgstr "IP地址与掩码不匹配" +#: commands/tablecmds.c:2199 commands/tablecmds.c:7415 +#: commands/tablecmds.c:9084 +msgid "Use ALTER TYPE instead." +msgstr "请使用ALTER TYPE" -#: libpq/hba.c:908 -msgid "end-of-line before authentication method" -msgstr "在认证方法前面出现行结束符" +#: commands/tablecmds.c:2246 catalog/index.c:773 catalog/heap.c:1013 +#, c-format +msgid "relation \"%s\" already exists" +msgstr "关系 \"%s\" 已经存在" -#: libpq/hba.c:979 +#. translator: first %s is a SQL command, eg ALTER TABLE +#: commands/tablecmds.c:2322 #, c-format -msgid "invalid authentication method \"%s\"" -msgstr "无效认证方法\"%s\"" +msgid "" +"cannot %s \"%s\" because it is being used by active queries in this session" +msgstr "无法%s \"%s\" 因为它正在被这个会话中的活动查询使用" -# fe-auth.c:640 -#: libpq/hba.c:990 +#. translator: first %s is a SQL command, eg ALTER TABLE +#: commands/tablecmds.c:2331 #, c-format -msgid "invalid authentication method \"%s\": not supported on this platform" -msgstr "无效的认证方法\"%s\": 在这个平台上不支持" +msgid "cannot %s \"%s\" because it has pending trigger events" +msgstr "无法%s \"%s\"因为它有一个待发生的触发器事件" -#: libpq/hba.c:1003 -msgid "krb5 authentication is not supported on local sockets" -msgstr "在本地套接字上不支持krb5认证" +#: commands/tablecmds.c:2430 +#, c-format +msgid "\"%s\" is not a composite type" +msgstr "\"%s\" 不是组合类型" -#: libpq/hba.c:1014 -msgid "gssapi authentication is not supported on local sockets" -msgstr "在本地套接字上不支持gssapi认证" +#: commands/tablecmds.c:3260 +#, c-format +msgid "cannot rewrite system relation \"%s\"" +msgstr "不能改写系统关系 \"%s\"" -#: libpq/hba.c:1031 -msgid "cert authentication is only supported on hostssl connections" -msgstr "只有在hostssl连接上才支持cert认证" +#: commands/tablecmds.c:3270 +msgid "cannot rewrite temporary tables of other sessions" +msgstr "不能改写其他会话的临时表" -#: libpq/hba.c:1052 +#: commands/tablecmds.c:3495 #, c-format -msgid "authentication option not in name=value format: %s" -msgstr "认证选项的格式不是名称=值:%s" +msgid "rewriting table \"%s\"" +msgstr "重写表 \"%s\"" -#: libpq/hba.c:1067 -msgid "ident, krb5, gssapi, sspi and cert" -msgstr "ident, krb5, gssapi, sspi和cert" - -#: libpq/hba.c:1081 -msgid "clientcert can only be configured for \"hostssl\" rows" -msgstr "只能为\"hostssl\" 记录配置clientcert " +#: commands/tablecmds.c:3499 +#, c-format +msgid "verifying table \"%s\"" +msgstr "校验表\"%s\"" -#: libpq/hba.c:1092 -msgid "" -"client certificates can only be checked if a root certificate store is " -"available" -msgstr "只有在根认证有效的情况下才能检查客户端认证" +#: commands/tablecmds.c:3606 +#, c-format +msgid "column \"%s\" contains null values" +msgstr "字段 \"%s\" 包含空值" -#: libpq/hba.c:1093 -msgid "Make sure the root.crt file is present and readable." -msgstr "确定文件root.crt存在并且可读" +#: commands/tablecmds.c:3620 +#, c-format +msgid "check constraint \"%s\" is violated by some row" +msgstr "一些行违反了检查约束 \"%s\"" -#: libpq/hba.c:1106 -msgid "clientcert can not be set to 0 when using \"cert\" authentication" -msgstr "当使用\"cert\"认证时clientcert不能设置为0" +#: commands/tablecmds.c:3761 commands/tablecmds.c:4713 +#, c-format +msgid "\"%s\" is not a table or index" +msgstr "\"%s\" 不是一个表或索引" -#: libpq/hba.c:1140 +#: commands/tablecmds.c:3764 commands/trigger.c:186 commands/trigger.c:1099 +#: rewrite/rewriteDefine.c:257 #, c-format -msgid "invalid LDAP port number: \"%s\"" -msgstr "无效LDAP端口号: \"%s\"" +msgid "\"%s\" is not a table or view" +msgstr "\"%s\" 不是一个视图或视图" -#: libpq/hba.c:1186 libpq/hba.c:1194 -msgid "krb5, gssapi and sspi" -msgstr "krb5, gssapi和sspi" +#: commands/tablecmds.c:3767 +#, c-format +msgid "\"%s\" is not a table or foreign table" +msgstr "\"%s\" 不是表或外部表" -#: libpq/hba.c:1232 +#: commands/tablecmds.c:3770 #, c-format -msgid "invalid RADIUS port number: \"%s\"" -msgstr "无效RADIUS端口号: \"%s\"" +msgid "\"%s\" is not a table, composite type, or foreign table" +msgstr "\"%s\" 不是一个表,组合类型或者外部表" -#: libpq/hba.c:1252 +#: commands/tablecmds.c:3780 #, c-format -msgid "unrecognized authentication option name: \"%s\"" -msgstr "未知认证选项名称:\"%s\"" +msgid "\"%s\" is of the wrong type" +msgstr "\"%s\" 是一个错误类型" -#: libpq/hba.c:1284 -msgid "" -"cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, or ldapsearchattribute " -"together with ldapprefix" -msgstr "" -"无法和ldapprefix一同使用ldapbasedn, ldapbinddn, ldapbindpasswd或" -"ldapsearchattribute" +#: commands/tablecmds.c:3929 commands/tablecmds.c:3936 +#, c-format +msgid "cannot alter type \"%s\" because column \"%s.%s\" uses it" +msgstr "不能修改类型 \"%s\", 因为列 \"%s.%s\"正在使用它" -# fe-auth.c:640 -#: libpq/hba.c:1294 +#: commands/tablecmds.c:3943 +#, c-format msgid "" -"authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix" -"\", or \"ldapsuffix\" to be set" -msgstr "" -"在认证方法\"ldap\"中需要设置参数 \"ldapbasedn\", \"ldapprefix\"或\"ldapsuffix" -"\"" +"cannot alter foreign table \"%s\" because column \"%s.%s\" uses its row type" +msgstr "无法修改外部表\"%s\" ,因为列\"%s.%s\"使用它的行类型" -#: libpq/hba.c:1482 guc-file.l:436 +#: commands/tablecmds.c:3950 #, c-format -msgid "could not open configuration file \"%s\": %m" -msgstr "无法打开配置文件 \"%s\": %m" +msgid "cannot alter table \"%s\" because column \"%s.%s\" uses its row type" +msgstr "无法修改表\"%s\" ,因为列\"%s.%s\"使用它的行类型" -#: libpq/hba.c:1614 +#: commands/tablecmds.c:4012 #, c-format -msgid "invalid regular expression \"%s\": %s" -msgstr "无效的正则表达式\"%s\": %s" +msgid "cannot alter type \"%s\" because it is the type of a typed table" +msgstr "无法修改已确定类型表(typed table)中列的类型\"%s\"" -#: libpq/hba.c:1637 +#: commands/tablecmds.c:4014 +msgid "Use ALTER ... CASCADE to alter the typed tables too." +msgstr "使用ALTER .. CASCADE 把类型表一并修改." + +#: commands/tablecmds.c:4058 #, c-format -msgid "regular expression match for \"%s\" failed: %s" -msgstr "正则表达式匹配\"%s\"失败:%s" +msgid "type %s is not a composite type" +msgstr "类型 %s 不是复合类型" + +#: commands/tablecmds.c:4084 +msgid "cannot add column to typed table" +msgstr "无法为已确定类型表(typed table)添加列" -#: libpq/hba.c:1655 +#: commands/tablecmds.c:4145 commands/tablecmds.c:8360 #, c-format -msgid "" -"regular expression \"%s\" has no subexpressions as requested by " -"backreference in \"%s\"" -msgstr "正则表达式\"%s\"没有在\"%s\"中的后项引用所要求的子表达式." +msgid "child table \"%s\" has different type for column \"%s\"" +msgstr "子表 \"%s\" 的字段 \"%s\" 有不同的类型" -#: libpq/hba.c:1721 +#: commands/tablecmds.c:4151 commands/tablecmds.c:8367 #, c-format -msgid "missing entry in file \"%s\" at end of line %d" -msgstr "在 \"%s\" 文件的第 %d 行末尾缺少记录" +msgid "child table \"%s\" has different collation for column \"%s\"" +msgstr "子表 \"%s\" 的字段 \"%s\" 有不同的排序规则" -#: libpq/hba.c:1762 +#: commands/tablecmds.c:4161 #, c-format -msgid "provided user name (%s) and authenticated user name (%s) do not match" -msgstr "所提供的用户名(%s)和被认证的用户名(%s) 不匹配" +msgid "child table \"%s\" has a conflicting \"%s\" column" +msgstr "子表\"%s\"有一个冲突列\"%s\"" -#: libpq/hba.c:1783 +#: commands/tablecmds.c:4173 #, c-format -msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\"" -msgstr "对于以\"%3$s\"身份认证为的用户\"%2$s\",在用户映射\"%1$s\"中没有匹配" +msgid "merging definition of column \"%s\" for child \"%s\"" +msgstr "合并子表 \"%2$s\" 的字段 \"%1$s\" 定义" -#: libpq/hba.c:1807 +#: commands/tablecmds.c:4403 +msgid "column must be added to child tables too" +msgstr "属性也必需加入到子表中" + +#: commands/tablecmds.c:4533 commands/tablecmds.c:4625 +#: commands/tablecmds.c:4670 commands/tablecmds.c:4766 +#: commands/tablecmds.c:4810 commands/tablecmds.c:4889 +#: commands/tablecmds.c:6628 #, c-format -msgid "could not open usermap file \"%s\": %m" -msgstr "无法打开用户映射文件\"%s\": %m" +msgid "cannot alter system column \"%s\"" +msgstr "不能更改系统字段 \"%s\"" -#: libpq/pqcomm.c:294 +#: commands/tablecmds.c:4569 #, c-format -msgid "could not translate host name \"%s\", service \"%s\" to address: %s" -msgstr "无法解析主机名 \"%s\", 服务 \"%s\" 到地址: %s" +msgid "column \"%s\" is in a primary key" +msgstr "字段 \"%s\" 是一个主键" -#: libpq/pqcomm.c:298 +#: commands/tablecmds.c:4740 #, c-format -msgid "could not translate service \"%s\" to address: %s" -msgstr "无法解析服务 \"%s\" 到地址: %s" +msgid "statistics target %d is too low" +msgstr "目标统计 %d 太低" -#: libpq/pqcomm.c:325 +#: commands/tablecmds.c:4748 #, c-format -msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded" -msgstr "无法绑定所有需要的地址:超过最大数量MAXLISTEN (%d)" +msgid "lowering statistics target to %d" +msgstr "降低目标统计到 %d" -#: libpq/pqcomm.c:334 -msgid "IPv4" -msgstr "IPv4" +#: commands/tablecmds.c:4870 +#, c-format +msgid "invalid storage type \"%s\"" +msgstr "无效存储类型 \"%s\"" -#: libpq/pqcomm.c:338 -msgid "IPv6" -msgstr "IPv6" +#: commands/tablecmds.c:4901 +#, c-format +msgid "column data type %s can only have storage PLAIN" +msgstr "字段数据类型 %s 只能存储为明文 (PLAIN)" -#: libpq/pqcomm.c:343 -msgid "Unix" -msgstr "Unix" +#: commands/tablecmds.c:4931 +msgid "cannot drop column from typed table" +msgstr "无法从已确定类型表(typed table)中删除列" -#: libpq/pqcomm.c:348 +#: commands/tablecmds.c:4972 #, c-format -msgid "unrecognized address family %d" -msgstr "不认可的地址族 %d" +msgid "column \"%s\" of relation \"%s\" does not exist, skipping" +msgstr "关系 \"%2$s\" 的 列\"%1$s\"不存在" -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:359 +#: commands/tablecmds.c:4985 #, c-format -msgid "could not create %s socket: %m" -msgstr "无法创建 %s 套接字: %m" +msgid "cannot drop system column \"%s\"" +msgstr "不能删除系统字段 \"%s\"" -#: libpq/pqcomm.c:384 +#: commands/tablecmds.c:4992 #, c-format -msgid "setsockopt(SO_REUSEADDR) failed: %m" -msgstr "setsockopt(SO_REUSEADDR) 失败: %m" +msgid "cannot drop inherited column \"%s\"" +msgstr "不能删除继承字段 \"%s\"" -#: libpq/pqcomm.c:399 +#: commands/tablecmds.c:5218 #, c-format -msgid "setsockopt(IPV6_V6ONLY) failed: %m" -msgstr "setsockopt(IPV6_V6ONLY) 失败: %m" +msgid "" +"ALTER TABLE / ADD CONSTRAINT USING INDEX will rename index \"%s\" to \"%s\"" +msgstr "" +"ALTER TABLE / ADD CONSTRAINT USING INDEX 会把索引 \"%s\" 重命名为 \"%s\"" -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:418 +#: commands/tablecmds.c:5288 catalog/pg_constraint.c:645 catalog/heap.c:2296 #, c-format -msgid "could not bind %s socket: %m" -msgstr "无法绑定 %s 套接字: %m" +msgid "constraint \"%s\" for relation \"%s\" already exists" +msgstr "关系 \"%2$s\" 的约束 \"%1$s\" 已经存在" + +#: commands/tablecmds.c:5412 +msgid "constraint must be added to child tables too" +msgstr "必须也要对子表加上约束" -#: libpq/pqcomm.c:421 +#: commands/tablecmds.c:5477 commands/sequence.c:1425 #, c-format +msgid "referenced relation \"%s\" is not a table" +msgstr "关联的关系 \"%s\" 不是一个表" + +#: commands/tablecmds.c:5500 +msgid "constraints on permanent tables may reference only permanent tables" +msgstr "永久表上的约束只能引用永久表" + +#: commands/tablecmds.c:5507 msgid "" -"Is another postmaster already running on port %d? If not, remove socket file " -"\"%s\" and retry." -msgstr "" -"是否有其它 postmaster 已经在端口 %d 上运行了? 如果没有, 删除套接字文件 \"%s" -"\" 然后再重试." +"constraints on unlogged tables may reference only permanent or unlogged " +"tables" +msgstr "无事务日志的表上的约束只能引用持久表或者无事务日志的表" -#: libpq/pqcomm.c:424 -#, c-format +#: commands/tablecmds.c:5513 +msgid "constraints on temporary tables may reference only temporary tables" +msgstr "临时表上的约束只能引用临时表" + +#: commands/tablecmds.c:5517 +#, fuzzy msgid "" -"Is another postmaster already running on port %d? If not, wait a few seconds " -"and retry." -msgstr "" -"是否有其它 postmaster 已经在端口 %d 上运行了? 如果没有, 请等待几秒钟后然后再" -"重试." +"constraints on temporary tables must involve temporary tables of this session" +msgstr "临时表上的约束只能引用临时表" -#. translator: %s is IPv4, IPv6, or Unix -#: libpq/pqcomm.c:457 -#, c-format -msgid "could not listen on %s socket: %m" -msgstr "无法在 %s 套接字上监听: %m" +#: commands/tablecmds.c:5578 +msgid "number of referencing and referenced columns for foreign key disagree" +msgstr "外键的关联数和关联字段不一致" -#: libpq/pqcomm.c:542 +#: commands/tablecmds.c:5667 #, c-format -msgid "group \"%s\" does not exist" -msgstr "组 \"%s\" 不存在" +msgid "foreign key constraint \"%s\" cannot be implemented" +msgstr "无法实现外键约束 \"%s\"" -#: libpq/pqcomm.c:552 +#: commands/tablecmds.c:5670 #, c-format -msgid "could not set group of file \"%s\": %m" -msgstr "无法设置文件 \"%s\" 的组: %m" +msgid "Key columns \"%s\" and \"%s\" are of incompatible types: %s and %s." +msgstr "关键字段 \"%s\" 和 \"%s\" 为混和类型: %s 和 %s." + +#: commands/tablecmds.c:5783 +#, fuzzy, c-format +msgid "foreign key constraint \"%s\" of relation \"%s\" does not exist" +msgstr "关系 \"%2$s\" 的 约束\"%1$s\" 不存在" -#: libpq/pqcomm.c:563 +#: commands/tablecmds.c:5846 #, c-format -msgid "could not set permissions of file \"%s\": %m" -msgstr "无法设置文件 \"%s\" 的权限: %m" +msgid "column \"%s\" referenced in foreign key constraint does not exist" +msgstr "在外键约束中的关联字段 \"%s\" 不存在" -#: libpq/pqcomm.c:593 +#: commands/tablecmds.c:5851 #, c-format -msgid "could not accept new connection: %m" -msgstr "无法访问新联接: %m" +msgid "cannot have more than %d keys in a foreign key" +msgstr "在一个外键中不能超过 %d 个键" -#: libpq/pqcomm.c:779 libpq/pqcomm.c:879 +#: commands/tablecmds.c:5916 #, c-format -msgid "could not receive data from client: %m" -msgstr "无法从客户端获得数据: %m" +msgid "cannot use a deferrable primary key for referenced table \"%s\"" +msgstr "无法为被引用的表\"%s\"使用可延迟的主键" -#: libpq/pqcomm.c:854 +#: commands/tablecmds.c:5933 #, c-format -msgid "could not set socket to non-blocking mode: %m" -msgstr "无法将套接字设置为非阻塞模式: %m" +msgid "there is no primary key for referenced table \"%s\"" +msgstr "关联表 \"%s\" 没有主键" -#: libpq/pqcomm.c:900 libpq/pqcomm.c:911 +#: commands/tablecmds.c:6085 #, c-format -msgid "could not set socket to blocking mode: %m" -msgstr "无法将套接字设置为阻塞模式: %m" +msgid "cannot use a deferrable unique constraint for referenced table \"%s\"" +msgstr "无法为被引用的表\"%s\"使用可延迟的唯一性约束" -#: libpq/pqcomm.c:1056 -msgid "unexpected EOF within message length word" -msgstr "在信息长度字里有意外的 EOF" +#: commands/tablecmds.c:6090 +#, c-format +msgid "" +"there is no unique constraint matching given keys for referenced table \"%s\"" +msgstr "没有唯一约束与关联表 \"%s\" 给定的键值匹配" -#: libpq/pqcomm.c:1067 -msgid "invalid message length" -msgstr "无效的信息长度" +#: commands/tablecmds.c:6141 +#, c-format +msgid "validating foreign key constraint \"%s\"" +msgstr "正验证外键约束 \"%s\"" -#: libpq/pqcomm.c:1089 libpq/pqcomm.c:1099 -msgid "incomplete message from client" -msgstr "从客户端过来的不完整信息" +#: commands/tablecmds.c:6437 +#, c-format +msgid "cannot drop inherited constraint \"%s\" of relation \"%s\"" +msgstr "不能删除关系\"%2$s\"的继承约束\"%1$s\"" -#: libpq/pqcomm.c:1208 +#: commands/tablecmds.c:6464 commands/tablecmds.c:6577 #, c-format -msgid "could not send data to client: %m" -msgstr "无法发送数据给客户端: %m" +msgid "constraint \"%s\" of relation \"%s\" does not exist" +msgstr "关系 \"%2$s\" 的 约束\"%1$s\" 不存在" -#: libpq/pqformat.c:436 -msgid "no data left in message" -msgstr "信息中已经没有数据了" +#: commands/tablecmds.c:6470 +#, c-format +msgid "constraint \"%s\" of relation \"%s\" does not exist, skipping" +msgstr "关系 \"%2$s\" 的 约束\"%1$s\" 不存在" -#: libpq/pqformat.c:556 libpq/pqformat.c:574 libpq/pqformat.c:595 -#: utils/adt/arrayfuncs.c:1386 utils/adt/rowtypes.c:557 -msgid "insufficient data left in message" -msgstr "信息中剩下的数据不够" +#: commands/tablecmds.c:6612 +msgid "cannot alter column type of typed table" +msgstr "无法修改已确定类型表(typed table)中列的类型" -#: libpq/pqformat.c:636 -msgid "invalid string in message" -msgstr "信息中的无效字串" - -#: libpq/pqformat.c:652 -msgid "invalid message format" -msgstr "无效的信息格式" - -#: snowball/dict_snowball.c:183 +#: commands/tablecmds.c:6635 #, c-format -msgid "no Snowball stemmer available for language \"%s\" and encoding \"%s\"" -msgstr "对于语言\"%s\" 和编码\"%s\"来说,没有有效的Snowball stemmer " +msgid "cannot alter inherited column \"%s\"" +msgstr "不能修改继承字段 \"%s\"" -#: snowball/dict_snowball.c:215 -msgid "multiple Language parameters" -msgstr "多语言参数" +#: commands/tablecmds.c:6677 +msgid "transform expression must not return a set" +msgstr "转换表达式不能返回一个组合" -#: snowball/dict_snowball.c:222 -#, c-format -msgid "unrecognized Snowball parameter: \"%s\"" -msgstr "未识别Snowball参数: \"%s\"" +#: commands/tablecmds.c:6683 +msgid "cannot use subquery in transform expression" +msgstr "在转换表达式中不能使用子查询" -#: snowball/dict_snowball.c:230 -msgid "missing Language parameter" -msgstr "缺少语言参数" +#: commands/tablecmds.c:6687 +msgid "cannot use aggregate function in transform expression" +msgstr "转换表达式中不能使用聚合函数" + +#: commands/tablecmds.c:6691 +msgid "cannot use window function in transform expression" +msgstr "在转换表达式中不能使用窗口函数" -#: storage/smgr/md.c:371 storage/smgr/md.c:839 +#: commands/tablecmds.c:6710 #, c-format -msgid "could not truncate file \"%s\": %m" -msgstr "无法截断文件 \"%s\": %m" +msgid "column \"%s\" cannot be cast to type %s" +msgstr "字段 \"%s\" 不能转换成类型 \"%s\"" -#: storage/smgr/md.c:439 +#: commands/tablecmds.c:6757 #, c-format -msgid "cannot extend file \"%s\" beyond %u blocks" -msgstr "扩展文件\"%s\"的大小不能超过%u个数据块" +msgid "type of inherited column \"%s\" must be changed in child tables too" +msgstr "在子表中继承字段 \"%s\" 的类型也必需改变" -#: storage/smgr/md.c:461 storage/smgr/md.c:621 storage/smgr/md.c:694 +#: commands/tablecmds.c:6838 #, c-format -msgid "could not seek to block %u in file \"%s\": %m" -msgstr "无法在文件\"%2$s\"中查找到数据块%1$u: %3$m" +msgid "cannot alter type of column \"%s\" twice" +msgstr "不能更改字段 \"%s\" 的类型两遍" -#: storage/smgr/md.c:469 +#: commands/tablecmds.c:6874 #, c-format -msgid "could not extend file \"%s\": %m" -msgstr "无法扩展文件 \"%s\": %m" +msgid "default for column \"%s\" cannot be cast to type %s" +msgstr "字段 \"%s\" 的默认值不能转换成类型 \"%s\"" -#: storage/smgr/md.c:471 storage/smgr/md.c:478 storage/smgr/md.c:720 -msgid "Check free disk space." -msgstr "检查空闲磁盘控件." +#: commands/tablecmds.c:7000 +msgid "cannot alter type of a column used by a view or rule" +msgstr "不能使用视图或规则改变一个字段的类型" -#: storage/smgr/md.c:475 +#: commands/tablecmds.c:7001 commands/tablecmds.c:7020 #, 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" +msgid "%s depends on column \"%s\"" +msgstr "%s 倚赖于字段 \"%s\"" -#: storage/smgr/md.c:638 -#, c-format -msgid "could not read block %u in file \"%s\": %m" -msgstr "无法在文件\"%2$s\"中读取块%1$u: %3$m" +#: commands/tablecmds.c:7019 +msgid "cannot alter type of a column used in a trigger definition" +msgstr "无法更改触发器定义中的列类型" -#: storage/smgr/md.c:654 +#: commands/tablecmds.c:7383 #, 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" +msgid "cannot change owner of index \"%s\"" +msgstr "无法改变索引\"%s\" 的属主" -#: storage/smgr/md.c:711 -#, c-format -msgid "could not write block %u in file \"%s\": %m" -msgstr "无法在文件 \"%2$s\"中写入块%1$u: %3$m" +#: commands/tablecmds.c:7385 +msgid "Change the ownership of the index's table, instead." +msgstr "可以改变索引表的所有权" -#: storage/smgr/md.c:716 +#: commands/tablecmds.c:7401 #, 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" +msgid "cannot change owner of sequence \"%s\"" +msgstr "无法改变序列 \"%s\"的属主" -#: storage/smgr/md.c:815 +#: commands/tablecmds.c:7403 commands/tablecmds.c:9074 #, c-format -msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now" -msgstr "无法将文件\"%s\"截断到%u个数据块;它现在只有%u个数据块" +msgid "Sequence \"%s\" is linked to table \"%s\"." +msgstr "序列 \"%s\"已链接到表\"%s\"." -#: storage/smgr/md.c:864 +#: commands/tablecmds.c:7424 commands/tablecmds.c:9092 #, c-format -msgid "could not truncate file \"%s\" to %u blocks: %m" -msgstr "无法将文件\"%s\"截断到%u个数据块: %m" +msgid "\"%s\" is not a table, view, sequence, or foreign table" +msgstr "\"%s\" 不是表,视图,序列或者外部表" -#: storage/smgr/md.c:1087 +#: commands/tablecmds.c:7709 commands/cluster.c:178 #, c-format -msgid "could not fsync file \"%s\" but retrying: %m" -msgstr "无法对文件\"%s\"进行fsync操作但是正在重新尝试: %m" +msgid "index \"%s\" for table \"%s\" does not exist" +msgstr "表 \"%2$s\" 的 \"%1$s\" 索引不存在" + +#: commands/tablecmds.c:7752 +msgid "cannot have multiple SET TABLESPACE subcommands" +msgstr "无法执行多个SET TABLESPACE子命令" -#: storage/smgr/md.c:1586 +#: commands/tablecmds.c:7804 #, c-format -msgid "could not open file \"%s\" (target block %u): %m" -msgstr "无法打开文件\"%s\"(目标数据块%u): %m" +msgid "\"%s\" is not a table, index, or TOAST table" +msgstr "\"%s\"不是表,索引或TOAST表" -#: storage/smgr/md.c:1608 +#: commands/tablecmds.c:7925 #, c-format -msgid "could not seek to end of file \"%s\": %m" -msgstr "无法查找到文件\"%s\"的末端: %m" +msgid "cannot move system relation \"%s\"" +msgstr "不能删除系统关系 \"%s\"" -#: storage/buffer/bufmgr.c:131 storage/buffer/bufmgr.c:235 -msgid "cannot access temporary tables of other sessions" -msgstr "无法访问其它会话的临时表" +#: commands/tablecmds.c:7941 +msgid "cannot move temporary tables of other sessions" +msgstr "不能在其他会话中删除临时表" -#: storage/buffer/bufmgr.c:364 -#, c-format -msgid "unexpected data beyond EOF in block %u of relation %s" -msgstr "关系 \"%2$s\" 的块 %1$u 中的EOF后面出现未期望的数据" +#: commands/tablecmds.c:8133 +msgid "cannot change inheritance of typed table" +msgstr "无法改变已确定类型表(typed table)的继承性" -#: storage/buffer/bufmgr.c:366 -msgid "" -"This has been seen to occur with buggy kernels; consider updating your " -"system." -msgstr "这是由于内核缺陷所致;请考虑更新您的操作系统." +#: commands/tablecmds.c:8179 +#, fuzzy +msgid "cannot inherit to temporary relation of another session" +msgstr "不能改写其他会话的临时表" -#: storage/buffer/bufmgr.c:438 +#: commands/tablecmds.c:8233 +msgid "circular inheritance not allowed" +msgstr "不允许循环继承" + +#: commands/tablecmds.c:8234 #, c-format -msgid "invalid page header in block %u of relation %s; zeroing out page" -msgstr "关系 \"%2$s\" 中的块 %1$u 无效的页头;正在对页进行清零操作" +msgid "\"%s\" is already a child of \"%s\"." +msgstr "\"%s\" 已经是 \"%s\"的子表了." -#: storage/buffer/bufmgr.c:446 +#: commands/tablecmds.c:8242 #, c-format -msgid "invalid page header in block %u of relation %s" -msgstr "关系 \"%2$s\" 中的块 %1$u 无效的页头" +msgid "table \"%s\" without OIDs cannot inherit from table \"%s\" with OIDs" +msgstr "不带有OIDs的表\"%s\"无法从带有OIDs的表\"%s\"继承。" -#: storage/buffer/bufmgr.c:2706 +#: commands/tablecmds.c:8378 #, c-format -msgid "could not write block %u of %s" -msgstr "无法写入%2$s的块%1$u" +msgid "column \"%s\" in child table must be marked NOT NULL" +msgstr "在子表中的列\"%s\"必须标识为NOT NULL" -#: storage/buffer/bufmgr.c:2708 -msgid "Multiple failures --- write error might be permanent." -msgstr "多次失败 --- 写错误可能是永久性的" +#: commands/tablecmds.c:8394 +#, c-format +msgid "child table is missing column \"%s\"" +msgstr "在子表中没有列\"%s\"" -#: storage/buffer/bufmgr.c:2729 +#: commands/tablecmds.c:8473 #, c-format -msgid "writing block %u of relation %s" -msgstr "写入关系%2$s的块%1$u" +msgid "child table \"%s\" has different definition for check constraint \"%s\"" +msgstr "子表 \"%s\" 对于检查约束\"%s\"有不同的定义" -#: storage/buffer/localbuf.c:189 -msgid "no empty local buffer available" -msgstr "没有可用的本地缓冲区" +#: commands/tablecmds.c:8497 +#, c-format +msgid "child table is missing constraint \"%s\"" +msgstr "子表丢失约束\"%s\"" -# fe-misc.c:389 fe-misc.c:423 fe-misc.c:838 -#: storage/file/fd.c:402 +#: commands/tablecmds.c:8577 #, c-format -msgid "getrlimit failed: %m" -msgstr "函数getrlimit执行失败: %m" +msgid "relation \"%s\" is not a parent of relation \"%s\"" +msgstr "关系 \"%s\" 不是关系\"%s\"的父表" -#: storage/file/fd.c:492 -msgid "insufficient file descriptors available to start server process" -msgstr "启动服务器进程的有效文件描述符不足" +#: commands/tablecmds.c:8794 +msgid "typed tables cannot inherit" +msgstr "类型表不能继承" -#: storage/file/fd.c:493 +#: commands/tablecmds.c:8825 #, c-format -msgid "System allows %d, we need at least %d." -msgstr "系统允许 %d, 我们至少需要 %d." +msgid "table is missing column \"%s\"" +msgstr "表中没有列\"%s\"" -#: storage/file/fd.c:534 storage/file/fd.c:1418 storage/file/fd.c:1533 +#: commands/tablecmds.c:8835 #, c-format -msgid "out of file descriptors: %m; release and retry" -msgstr "超出文件描述符: %m; 释放再重试" +msgid "table has column \"%s\" where type requires \"%s\"" +msgstr "表中含有列\"%s\",需要类型\"%s\"" -#: storage/file/fd.c:1067 +#: commands/tablecmds.c:8844 #, c-format -msgid "temporary file: path \"%s\", size %lu" -msgstr "临时文件: 路径 \"%s\", 大小%lu" +msgid "table \"%s\" has different type for column \"%s\"" +msgstr "表\"%s\"中的列\"%s\"带有不同的类型" -#: storage/file/fd.c:1592 +#: commands/tablecmds.c:8857 #, c-format -msgid "could not read directory \"%s\": %m" -msgstr "无法读取目录 \"%s\": %m" +msgid "table has extra column \"%s\"" +msgstr "表含有多余的列\"%s\"" -#: storage/ipc/procarray.c:270 storage/ipc/sinvaladt.c:302 -#: storage/lmgr/proc.c:289 postmaster/postmaster.c:1833 -msgid "sorry, too many clients already" -msgstr "对不起, 已经有太多的客户" - -#: storage/ipc/procarray.c:694 -msgid "consistent state delayed because recovery snapshot incomplete" -msgstr "一致性状态延迟,因为恢复快照不完整" - -#: storage/ipc/shmem.c:190 storage/lmgr/lock.c:610 storage/lmgr/lock.c:679 -#: storage/lmgr/lock.c:2119 storage/lmgr/lock.c:2498 storage/lmgr/lock.c:2563 -#: storage/lmgr/proc.c:192 storage/lmgr/proc.c:210 utils/hash/dynahash.c:925 -msgid "out of shared memory" -msgstr "共享内存用尽" - -#: storage/ipc/shmem.c:346 storage/ipc/shmem.c:399 +#: commands/tablecmds.c:8904 #, c-format -msgid "" -"not enough shared memory for data structure \"%s\" (%lu bytes requested)" -msgstr "没有足够的共享内存提供给数据结构\"%s\" (需要%lu个字节)" +msgid "\"%s\" is not a typed table" +msgstr "\"%s\" 不是一个类型表" -#: storage/ipc/shmem.c:365 -#, c-format -msgid "could not create ShmemIndex entry for data structure \"%s\"" -msgstr "无法为数据结构\"%s\"创建ShmemIndex项" +#: commands/tablecmds.c:9073 +msgid "cannot move an owned sequence into another schema" +msgstr "无法将已分配的序列移动到另一个模式中" -#: storage/ipc/shmem.c:380 +#: commands/tablecmds.c:9180 #, c-format -msgid "" -"ShmemIndex entry size is wrong for data structure \"%s\": expected %lu, " -"actual %lu" -msgstr "" -"对于数据结构\"%s\"来说ShmemIndex项的大小错误:所期望的值是%lu,实际的值是%lu" +msgid "relation \"%s\" already exists in schema \"%s\"" +msgstr "在模式\"%2$s\"中已经存在关系\"%1$s\"" -#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446 -msgid "requested shared memory size overflows size_t" -msgstr "所要求的共享内存大小超过size_t" +#: commands/proclang.c:93 +msgid "using pg_pltemplate information instead of CREATE LANGUAGE parameters" +msgstr "使用pg_pltemplate信息,而不是CREATE LANGUAGE的参数" -#: storage/large_object/inv_api.c:550 storage/large_object/inv_api.c:747 +#: commands/proclang.c:103 #, c-format -msgid "large object %u was not opened for writing" -msgstr "大对象%u无法打开来进行写操作" +msgid "must be superuser to create procedural language \"%s\"" +msgstr "只有有超级用户权限的用户才能创建过程语言\"%s\"" -#: storage/large_object/inv_api.c:557 storage/large_object/inv_api.c:754 +#: commands/proclang.c:123 commands/proclang.c:279 #, c-format -msgid "large object %u was already dropped" -msgstr "大对象%u已经被删除" +msgid "function %s must return type \"language_handler\"" +msgstr "函数 %s 必须返回 \"language_handler\" 类型" -#: storage/lmgr/deadlock.c:915 +#: commands/proclang.c:243 #, c-format -msgid "Process %d waits for %s on %s; blocked by process %d." -msgstr "进程%1$d等待在%3$s上的%2$s; 由进程%4$d阻塞." +msgid "unsupported language \"%s\"" +msgstr "不支持语言 \"%s\"" -#: storage/lmgr/deadlock.c:934 -#, c-format -msgid "Process %d: %s" -msgstr "进程 %d: %s" +#: commands/proclang.c:245 +msgid "The supported languages are listed in the pg_pltemplate system catalog." +msgstr "在pg_pltemplate系统目录视图中列出了所支持的语言." -#: storage/lmgr/deadlock.c:941 -msgid "deadlock detected" -msgstr "检测到死锁" +#: commands/proclang.c:253 +msgid "must be superuser to create custom procedural language" +msgstr "只有有超级用户权限的用户才能创建过程语言" -#: storage/lmgr/deadlock.c:944 -msgid "See server log for query details." -msgstr "详细信息请查看服务器日志." +#: commands/proclang.c:272 +#, c-format +msgid "" +"changing return type of function %s from \"opaque\" to \"language_handler\"" +msgstr "函数 %s 的返回类型 \"opaque\" 改变成 \"language_handler\"" -#: storage/lmgr/lmgr.c:717 +#: commands/proclang.c:357 commands/proclang.c:606 #, c-format -msgid "relation %u of database %u" -msgstr "数据库%2$u的关系%1$u" +msgid "language \"%s\" already exists" +msgstr "语言 \"%s\" 已经存在" -#: storage/lmgr/lmgr.c:723 +#: commands/proclang.c:537 #, c-format -msgid "extension of relation %u of database %u" -msgstr "数据库%2$u的关系%1$u的扩展" +msgid "language \"%s\" does not exist, skipping" +msgstr "语言 \"%s\" 不存在" -#: storage/lmgr/lmgr.c:729 +#: commands/proclang.c:600 commands/proclang.c:640 commands/proclang.c:754 +#: commands/functioncmds.c:839 commands/functioncmds.c:2019 #, c-format -msgid "page %u of relation %u of database %u" -msgstr "数据库%3$u的关系%2$u的页%1$u" +msgid "language \"%s\" does not exist" +msgstr "语言 \"%s\" 不存在" -#: storage/lmgr/lmgr.c:736 +#: commands/analyze.c:153 #, c-format -msgid "tuple (%u,%u) of relation %u of database %u" -msgstr "数据库%4$u的关系%3$u中的元组(%1$u,%2$u)" +msgid "skipping analyze of \"%s\" --- lock not available" +msgstr "跳过对 \"%s\"的分析 --- 锁无法得到" -#: storage/lmgr/lmgr.c:744 +#: commands/analyze.c:170 #, c-format -msgid "transaction %u" -msgstr "事务 %u" +msgid "skipping \"%s\" --- only superuser can analyze it" +msgstr "忽略 \"%s\" --- 只有超级用户能够分析它" -# sql_help.h:101 -# sql_help.h:413 -#: storage/lmgr/lmgr.c:749 +#: commands/analyze.c:174 #, c-format -msgid "virtual transaction %d/%u" -msgstr "虚拟事务 %d/%u" +msgid "skipping \"%s\" --- only superuser or database owner can analyze it" +msgstr "忽略 \"%s\" --- 只有超级用户或数据库的属主能够分析它" -#: storage/lmgr/lmgr.c:755 +#: commands/analyze.c:178 #, c-format -msgid "object %u of class %u of database %u" -msgstr "数据库%3$u的类%2$u的对象%1$u" +msgid "skipping \"%s\" --- only table or database owner can analyze it" +msgstr "忽略 \"%s\" --- 只有表或数据库的属主能够分析它" -#: storage/lmgr/lmgr.c:763 +#: commands/analyze.c:194 #, c-format -msgid "user lock [%u,%u,%u]" -msgstr "用户锁[%u,%u,%u]" +msgid "skipping \"%s\" --- cannot analyze non-tables or special system tables" +msgstr "忽略 \"%s\" --- 无法分析非表或特殊的系统表" -#: storage/lmgr/lmgr.c:770 +#: commands/analyze.c:285 #, c-format -msgid "advisory lock [%u,%u,%u,%u]" -msgstr "建议锁 [%u,%u,%u,%u]" +msgid "analyzing \"%s.%s\" inheritance tree" +msgstr "正在分析 \"%s.%s\"继承树" -#: storage/lmgr/lmgr.c:778 +#: commands/analyze.c:290 #, c-format -msgid "unrecognized locktag type %d" -msgstr "未知的locktag 类型 %d" +msgid "analyzing \"%s.%s\"" +msgstr "正在分析 \"%s.%s\"" -#: storage/lmgr/lock.c:515 +#: commands/analyze.c:598 #, c-format -msgid "" -"cannot acquire lock mode %s on database objects while recovery is in progress" -msgstr "在恢复操作的过程中不能在数据库对象上获取锁模式%s" +msgid "automatic analyze of table \"%s.%s.%s\" system usage: %s" +msgstr "自动分析表 \"%s.%s.%s\"的系统使用情况: %s" -#: storage/lmgr/lock.c:517 +#: commands/analyze.c:1238 +#, c-format msgid "" -"Only RowExclusiveLock or less can be acquired on database objects during " -"recovery." -msgstr "在恢复操作期间只有在数据对象上获取RowExclusiveLock或者更低级别的锁。" +"\"%s\": scanned %d of %u pages, containing %.0f live rows and %.0f dead " +"rows; %d rows in sample, %.0f estimated total rows" +msgstr "" +"\"%1$s\": 已经扫描了%3$u页的%2$d, 包含%4$.0f可用的记录和%5$.0f不能用的记录; " +"在示例中有%6$d条记录,估算所有记录为%7$.0f ." -#: storage/lmgr/lock.c:611 storage/lmgr/lock.c:680 storage/lmgr/lock.c:2499 -#: storage/lmgr/lock.c:2564 -msgid "You might need to increase max_locks_per_transaction." -msgstr "您可能需要增加参数max_locks_per_transaction." +#: commands/analyze.c:1499 executor/execQual.c:2827 +msgid "could not convert row type" +msgstr "无法转换记录类型" -#: storage/lmgr/lock.c:2120 -msgid "Not enough memory for reassigning the prepared transaction's locks." -msgstr "没有足够的内存用于为已准备好事务分配锁" +#: commands/conversioncmds.c:71 +#, c-format +msgid "source encoding \"%s\" does not exist" +msgstr "源编码 \"%s\" 不存在" -#: storage/lmgr/proc.c:1006 utils/adt/misc.c:102 +#: commands/conversioncmds.c:78 #, c-format -msgid "could not send signal to process %d: %m" -msgstr "无法发送信号到进程 %d: %m" +msgid "destination encoding \"%s\" does not exist" +msgstr "目标编码 \"%s\" 不存在" -#: storage/lmgr/proc.c:1040 +#: commands/conversioncmds.c:92 #, c-format -msgid "" -"process %d avoided deadlock for %s on %s by rearranging queue order after %" -"ld.%03d ms" -msgstr "" -"进程%1$d在%4$ld.%5$03d ms通过重新安排序列顺序来避免在%3$s上的%2$s的死锁" +msgid "encoding conversion function %s must return type \"void\"" +msgstr "编码转换函数%s必须返回类型\"void\"" -#: storage/lmgr/proc.c:1052 +#: commands/conversioncmds.c:152 #, 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同时监测到死锁" +msgid "conversion \"%s\" does not exist, skipping" +msgstr "编码转换 \"%s\" 不存在,跳过" -#: storage/lmgr/proc.c:1058 +#: commands/conversioncmds.c:211 #, 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" +msgid "conversion \"%s\" already exists in schema \"%s\"" +msgstr "约束 \"%s\" 已经存在于模式 \"%s\" 中" -#: storage/lmgr/proc.c:1062 +#: commands/sequence.c:127 +msgid "unlogged sequences are not supported" +msgstr "非事务日志型序列不被支持" + +#: commands/sequence.c:537 commands/sequence.c:751 commands/sequence.c:793 +#: commands/sequence.c:830 commands/sequence.c:1495 catalog/aclchk.c:3072 #, 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" +msgid "permission denied for sequence %s" +msgstr "对于序列 %s, 权限不够" -#: storage/lmgr/proc.c:1078 +#: commands/sequence.c:620 #, 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失败" +msgid "nextval: reached maximum value of sequence \"%s\" (%s)" +msgstr "nextval: 达到序列 \"%s\" 的最大值了 (%s)" -#: storage/page/bufpage.c:143 storage/page/bufpage.c:390 -#: storage/page/bufpage.c:623 storage/page/bufpage.c:753 +#: commands/sequence.c:643 #, c-format -msgid "corrupted page pointers: lower = %u, upper = %u, special = %u" -msgstr "已损坏的页指针:低位=%u, 高位=%u, 特定=%u" +msgid "nextval: reached minimum value of sequence \"%s\" (%s)" +msgstr "nextval: 达到序列 \"%s\" 的最小值了 (%s)" -#: storage/page/bufpage.c:433 +#: commands/sequence.c:757 #, c-format -msgid "corrupted item pointer: %u" -msgstr "已损坏的成员指针: %u" +msgid "currval of sequence \"%s\" is not yet defined in this session" +msgstr "在此会话中序列 \"%s\" 的 currval 仍没被定义" -#: storage/page/bufpage.c:444 storage/page/bufpage.c:805 +#: commands/sequence.c:776 commands/sequence.c:782 +msgid "lastval is not yet defined in this session" +msgstr "在这个会话中还没有定义lastval " + +#: commands/sequence.c:851 #, c-format -msgid "corrupted item lengths: total %u, available space %u" -msgstr "已损坏的成员长度: 总长度%u,可有效使用的空间%u" +msgid "setval: value %s is out of bounds for sequence \"%s\" (%s..%s)" +msgstr "setval: 值 %s 超出序列 \"%s\" 的范围 (%s..%s)" -#: storage/page/bufpage.c:642 storage/page/bufpage.c:778 +#: commands/sequence.c:1142 commands/sequence.c:1150 commands/sequence.c:1158 +#: commands/sequence.c:1166 commands/sequence.c:1174 commands/sequence.c:1182 +#: commands/sequence.c:1190 commands/sequence.c:1198 +#: 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/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:147 commands/dbcommands.c:155 +#: commands/dbcommands.c:163 commands/dbcommands.c:171 +#: commands/dbcommands.c:179 commands/dbcommands.c:187 +#: commands/dbcommands.c:195 commands/dbcommands.c:1342 +#: commands/dbcommands.c:1350 commands/extension.c:1250 +#: commands/extension.c:1258 commands/extension.c:1266 +#: commands/extension.c:2727 commands/collationcmds.c:93 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/foreigncmds.c:468 commands/foreigncmds.c:477 +#: commands/typecmds.c:282 catalog/aclchk.c:833 catalog/aclchk.c:841 +msgid "conflicting or redundant options" +msgstr "选项冲突或过多" + +#: commands/sequence.c:1220 +msgid "INCREMENT must not be zero" +msgstr "INCREMENT 不必为零" + +#: commands/sequence.c:1276 #, c-format -msgid "corrupted item pointer: offset = %u, size = %u" -msgstr "已损坏的成员指针: 偏移量 = %u, 大小 = %u" +msgid "MINVALUE (%s) must be less than MAXVALUE (%s)" +msgstr "MINVALUE (%s) 必需小于 MAXVALUE (%s)" -#: nodes/nodeFuncs.c:110 nodes/nodeFuncs.c:136 parser/parse_coerce.c:1568 -#: parser/parse_coerce.c:1585 parser/parse_coerce.c:1643 -#: parser/parse_expr.c:1606 parser/parse_func.c:373 parser/parse_oper.c:983 +#: commands/sequence.c:1301 #, c-format -msgid "could not find array type for data type %s" -msgstr "无法为数据类型 %s 找到数组类型" +msgid "START value (%s) cannot be less than MINVALUE (%s)" +msgstr "START 值 (%s) 不能小于 MINVALUE (%s)" -#: optimizer/plan/initsplan.c:585 -msgid "" -"SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer " -"join" -msgstr "SELECT FOR UPDATE/SHARE不适用于外连接中可为空的那一端." +#: commands/sequence.c:1313 +#, c-format +msgid "START value (%s) cannot be greater than MAXVALUE (%s)" +msgstr "START 值 (%s) 不能大于 MAXVALUE (%s)" -#: optimizer/plan/planner.c:946 parser/analyze.c:1196 parser/analyze.c:1384 -#: parser/analyze.c:2026 -msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT" -msgstr "在SELECT FOR UPDATE/SHARE中不允许带有关键词UNION/INTERSECT/EXCEPT" +#: commands/sequence.c:1343 +#, c-format +msgid "RESTART value (%s) cannot be less than MINVALUE (%s)" +msgstr "RESTART值 (%s) 不能小于 MINVALUE (%s)" -#: optimizer/plan/planner.c:2220 -msgid "could not implement GROUP BY" -msgstr "无法实现GROUP BY语句" +#: commands/sequence.c:1355 +#, c-format +msgid "RESTART value (%s) cannot be greater than MAXVALUE (%s)" +msgstr "RESTART 值 (%s) 不能大于 MAXVALUE (%s)" -#: optimizer/plan/planner.c:2221 optimizer/plan/planner.c:2390 -#: optimizer/prep/prepunion.c:769 -msgid "" -"Some of the datatypes only support hashing, while others only support " -"sorting." -msgstr "一些数据类型只支持哈希,同时另外一些数据类型只支持排序." +#: commands/sequence.c:1370 +#, c-format +msgid "CACHE (%s) must be greater than zero" +msgstr "CACHE (%s) 必须大于零" -#: optimizer/plan/planner.c:2389 -msgid "could not implement DISTINCT" -msgstr "无法实现DISTINCT语句" +#: commands/sequence.c:1402 +msgid "invalid OWNED BY option" +msgstr "无效的OWNED BY选项" -#: optimizer/plan/planner.c:2833 -msgid "could not implement window PARTITION BY" -msgstr "无法实现与窗口函数一同使用PARTITION BY子句" +#: commands/sequence.c:1403 +msgid "Specify OWNED BY table.column or OWNED BY NONE." +msgstr "指定OWNED BY 表.列 or OWNED BY NONE." -#: optimizer/plan/planner.c:2834 -msgid "Window partitioning columns must be of sortable datatypes." -msgstr "窗口分区列必须属于可排序的数据类型" +#: commands/sequence.c:1432 +msgid "sequence must have same owner as table it is linked to" +msgstr "序列的属主必须和与它相链接的表的属主相同." -#: optimizer/plan/planner.c:2838 -msgid "could not implement window ORDER BY" -msgstr "无法实现与窗口函数一同使用ORDER BY 语句" +#: commands/sequence.c:1436 +msgid "sequence must be in same schema as table it is linked to" +msgstr "序列必须和与它相链接的表存放在同一个模式" -#: optimizer/plan/planner.c:2839 -msgid "Window ordering columns must be of sortable datatypes." -msgstr "窗口的排序列必须属于可排序的数据类型" +#: commands/functioncmds.c:100 +#, c-format +msgid "SQL function cannot return shell type %s" +msgstr "SQL 函数不能返回 shell 类型 %s" -#: optimizer/util/clauses.c:4002 +#: commands/functioncmds.c:105 #, c-format -msgid "SQL function \"%s\" during inlining" -msgstr "SQL 函数 \"%s\" 在内联 (inlining) 期间" +msgid "return type %s is only a shell" +msgstr "返回类型 %s 只是一个 shell" -#: optimizer/prep/prepunion.c:374 -msgid "could not implement recursive UNION" -msgstr "无法实现递归UNION操作" +#: commands/functioncmds.c:134 parser/parse_type.c:278 +#, c-format +msgid "type modifier cannot be specified for shell type \"%s\"" +msgstr "不能为shell类型\"%s\"指定类型修改器" -#: optimizer/prep/prepunion.c:375 -msgid "All column datatypes must be hashable." -msgstr "所有列的数据类型必须可进行哈希计算." +#: commands/functioncmds.c:140 +#, c-format +msgid "type \"%s\" is not yet defined" +msgstr "类型 \"%s\" 仍没被定义" -#. translator: %s is UNION, INTERSECT, or EXCEPT -#: optimizer/prep/prepunion.c:768 +#: commands/functioncmds.c:141 +msgid "Creating a shell type definition." +msgstr "创建一个 shell 类型定义." + +#: commands/functioncmds.c:220 #, c-format -msgid "could not implement %s" -msgstr "无法实现%s" +msgid "SQL function cannot accept shell type %s" +msgstr "SQL 函数不能接收 shell 类型 %s" -#: parser/scansup.c:190 +#: commands/functioncmds.c:225 #, c-format -msgid "identifier \"%s\" will be truncated to \"%s\"" -msgstr "标识符\"%s\"将会被截断为\"%s\"" +msgid "argument type %s is only a shell" +msgstr "参数类型 %s 只是一个 shell" -#: parser/analyze.c:441 -msgid "INSERT ... SELECT cannot specify INTO" -msgstr "在INSERT ... SELECT语句中不能指定INTO" +#: commands/functioncmds.c:235 +#, c-format +msgid "type %s does not exist" +msgstr "类型 %s 不存在" -#: parser/analyze.c:543 parser/analyze.c:968 -msgid "VALUES lists must all be the same length" -msgstr "在VALUES列表中每个成员的长度必须相同" +#: commands/functioncmds.c:243 +msgid "functions cannot accept set arguments" +msgstr "函数不能接收设定参数" -#: parser/analyze.c:564 parser/analyze.c:1073 -msgid "VALUES must not contain table references" -msgstr "在VALUES列表中不能包含对表的引用" +#: commands/functioncmds.c:252 +msgid "VARIADIC parameter must be the last input parameter" +msgstr "参数VARIADIC必须是最后一个输入参数" -#: parser/analyze.c:578 parser/analyze.c:1087 -msgid "VALUES must not contain OLD or NEW references" -msgstr "在VALUES列表中不能包括对OLD或NEW的引用" +#: commands/functioncmds.c:279 +msgid "VARIADIC parameter must be an array" +msgstr "参数VARIADIC必须是一个数组" -#: parser/analyze.c:579 parser/analyze.c:1088 -msgid "Use SELECT ... UNION ALL ... instead." -msgstr "使用SELECT ... UNION ALL ..." +#: commands/functioncmds.c:319 +#, c-format +msgid "parameter name \"%s\" used more than once" +msgstr "多次使用参数名称 \"%s\"" -#: parser/analyze.c:689 parser/analyze.c:1100 -msgid "cannot use aggregate function in VALUES" -msgstr "在VALUES列表中不能使用聚合函数" +#: commands/functioncmds.c:334 +msgid "only input parameters can have default values" +msgstr "只有输入参数才能有缺省值" -#: parser/analyze.c:695 parser/analyze.c:1106 -msgid "cannot use window function in VALUES" -msgstr "在VALUES列表中不能使用窗口函数" +#: commands/functioncmds.c:347 +msgid "cannot use table references in parameter default value" +msgstr "在参数缺省值中不能使用表引用" -#: parser/analyze.c:727 -msgid "INSERT has more expressions than target columns" -msgstr "INSERT 的表达式多于指定的字段数" +#: commands/functioncmds.c:363 +msgid "cannot use subquery in parameter default value" +msgstr "在参数缺省值中不能使用自查询" -#: parser/analyze.c:735 -msgid "INSERT has more target columns than expressions" -msgstr "INSERT 的指定字段数多于表达式" +#: commands/functioncmds.c:367 +msgid "cannot use aggregate function in parameter default value" +msgstr "在参数的缺省值中不能使用聚合函数" -#: parser/analyze.c:984 -msgid "DEFAULT can only appear in a VALUES list within INSERT" -msgstr "DEFAULT只能在INSERT语句中的VALUES列表中出现" +#: commands/functioncmds.c:371 +msgid "cannot use window function in parameter default value" +msgstr "在参数的缺省值中不能使用窗口函数" -#: parser/analyze.c:1054 parser/analyze.c:2174 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES" -msgstr "SELECT FOR UPDATE/SHARE 不能适用于一个 VALUES" +#: commands/functioncmds.c:381 +msgid "input parameters after one with a default value must also have defaults" +msgstr "在带有缺省值参数后面的输入参数必须也带有缺省值." -#: parser/analyze.c:1307 -msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" -msgstr "无效的UNION/INTERSECT/EXCEPT ORDER BY 子句" +#: commands/functioncmds.c:620 +msgid "no function body specified" +msgstr "没有指定函数体" -#: parser/analyze.c:1308 -msgid "Only result column names can be used, not expressions or functions." -msgstr "无法使用表达式或函数,只有结果列的名称可以使用." +#: commands/functioncmds.c:630 +msgid "no language specified" +msgstr "没有指定语言" -#: parser/analyze.c:1309 -msgid "" -"Add the expression/function to every SELECT, or move the UNION into a FROM " -"clause." -msgstr "对每个SELECT语句增加表达式/函数, 或者将UNION移动到FROM子句中." +#: commands/functioncmds.c:651 commands/functioncmds.c:1352 +msgid "COST must be positive" +msgstr "COST必需为正数" -#: parser/analyze.c:1376 -msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" -msgstr "INTO 只允许在 UNION/INTERSECT/EXCEPT 的第一个 SELECT 上使用" +#: commands/functioncmds.c:659 commands/functioncmds.c:1360 +msgid "ROWS must be positive" +msgstr "ROWS必需为正数" -#: parser/analyze.c:1436 -msgid "" -"UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of " -"same query level" -msgstr "UNION/INTERSECT/EXCEPT的成员语句不能参考相同查询层次的其它关系" +#: commands/functioncmds.c:698 +#, c-format +msgid "unrecognized function attribute \"%s\" ignored" +msgstr "忽略未认可的函数属性 \"%s\"" -#: parser/analyze.c:1521 +#: commands/functioncmds.c:749 #, c-format -msgid "each %s query must have the same number of columns" -msgstr "每一个 %s 查询必须有相同的字段个数" +msgid "only one AS item needed for language \"%s\"" +msgstr "对于 \"%s\" 语言只能要求一个 AS 项目" -#: parser/analyze.c:1713 -msgid "CREATE TABLE AS specifies too many column names" -msgstr "CREATE TABLE AS 指定了太多的字段名字" +#: commands/functioncmds.c:841 commands/functioncmds.c:2021 +msgid "Use CREATE LANGUAGE to load the language into the database." +msgstr "使用CREATE LANGUAGE向数据库加载语言." -#: parser/analyze.c:1763 -msgid "cannot use aggregate function in UPDATE" -msgstr "在UPDATE语句中不能以使用聚合函数" +#: commands/functioncmds.c:888 +#, c-format +msgid "function result type must be %s because of OUT parameters" +msgstr "因为OUT参数,函数的结果类型必须是%s" -#: parser/analyze.c:1769 -msgid "cannot use window function in UPDATE" -msgstr "在UPDATE语句中不能以使用窗口函数" +#: commands/functioncmds.c:901 +msgid "function result type must be specified" +msgstr "必须指定函数返回结果的类型" -#: parser/analyze.c:1876 -msgid "cannot use aggregate function in RETURNING" -msgstr "在RETURNING子句中不能使用聚合函数" +#: commands/functioncmds.c:936 commands/functioncmds.c:1364 +msgid "ROWS is not applicable when function does not return a set" +msgstr "当转换函数不返回一个组合时,不适用ROWS" -#: parser/analyze.c:1882 -msgid "cannot use window function in RETURNING" -msgstr "无法在RETURNING子句中使用窗口函数" +#: commands/functioncmds.c:988 +#, c-format +msgid "function %s(%s) does not exist, skipping" +msgstr "函数 %s(%s) 不存在,跳过" -#: parser/analyze.c:1901 -msgid "RETURNING cannot contain references to other relations" -msgstr "RETURNING关键词的后面不能包含对其它关系的引用" +#: commands/functioncmds.c:1010 +msgid "Use DROP AGGREGATE to drop aggregate functions." +msgstr "使用 DROP AGGREGATE 删除一个聚合函数." -#: parser/analyze.c:1940 -msgid "cannot specify both SCROLL and NO SCROLL" -msgstr "不可同时指定 SCROLL 和 NO SCROLL" +#: commands/functioncmds.c:1017 +#, c-format +msgid "removing built-in function \"%s\"" +msgstr "删除内建函数 \"%s\"" -#: parser/analyze.c:1954 -msgid "DECLARE CURSOR cannot specify INTO" -msgstr "在DECLARE CURSOR语句中不能指定关键词INTO" - -#: parser/analyze.c:1962 -msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported" -msgstr "不支持DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE" - -#: parser/analyze.c:1963 -msgid "Holdable cursors must be READ ONLY." -msgstr "可保持游标必须为只读." - -#: parser/analyze.c:1976 -msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported" -msgstr "不支持DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE" +#: commands/functioncmds.c:1110 +msgid "Use ALTER AGGREGATE to rename aggregate functions." +msgstr "使用 ALTER AGGREGATE 对聚合函数重命名." -#: parser/analyze.c:1977 -msgid "Insensitive cursors must be READ ONLY." -msgstr "非敏感游标必须为只读模式(READ ONLY)." +#: commands/functioncmds.c:1122 commands/aggregatecmds.c:292 +#, c-format +msgid "function %s already exists in schema \"%s\"" +msgstr "在模式 \"%2$s\" 中函数 %1$s 已经存在" -#: parser/analyze.c:2030 -msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause" -msgstr "SELECT FOR UPDATE/SHARE 不允许带 DISTINCT 子句" +#: commands/functioncmds.c:1173 +msgid "Use ALTER AGGREGATE to change owner of aggregate functions." +msgstr "使用 ALTER AGGREGATE 改变聚合函数的属主." -#: parser/analyze.c:2034 -msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause" -msgstr "SELECT FOR UPDATE/SHARE不允许带有GROUP BY子句" +#: commands/functioncmds.c:1512 +#, c-format +msgid "source data type %s is a pseudo-type" +msgstr "源数据类型 %s 是一个伪类型" -#: parser/analyze.c:2038 -msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause" -msgstr "SELECT FOR UPDATE/SHARE不允许带有HAVING子句" +#: commands/functioncmds.c:1518 +#, c-format +msgid "target data type %s is a pseudo-type" +msgstr "目标数据类型 %s 是一个伪类型" -#: parser/analyze.c:2042 -msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions" -msgstr "SELECT FOR UPDATE/SHARE不允许带聚合函数" +#: commands/functioncmds.c:1526 commands/functioncmds.c:1814 +#: catalog/objectaddress.c:843 +#, c-format +msgid "must be owner of type %s or type %s" +msgstr "只能是类型 %s 或 %s 的所由者" -#: parser/analyze.c:2046 -msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions" -msgstr "SELECT FOR UPDATE/SHARE不允许带有窗口函数" +#: commands/functioncmds.c:1555 +msgid "cast function must take one to three arguments" +msgstr "类型转换函数只能带一到三个参数" -#: parser/analyze.c:2050 +#: commands/functioncmds.c:1559 msgid "" -"SELECT FOR UPDATE/SHARE is not allowed with set-returning functions in the " -"target list" -msgstr "在目标列表中,不允许SELECT FOR UPDATE/SHARE带有返回集合的函数" - -#: parser/analyze.c:2126 -msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names" -msgstr "在SELECT FOR UPDATE/SHARE 语句中必须指定非限定的关系名称" - -#: parser/analyze.c:2156 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join" -msgstr "SELECT FOR UPDATE/SHARE 不能适用于一个联合 (join)" - -#: parser/analyze.c:2162 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to NEW or OLD" -msgstr "SELECT FOR UPDATE/SHARE不适用于NEW或OLD子句" - -#: parser/analyze.c:2168 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function" -msgstr "SELECT FOR UPDATE/SHARE不适用于一个函数" +"argument of cast function must match or be binary-coercible from source data " +"type" +msgstr "功能指派函数的参数必须匹配或者是或者从源数据类型以二进制方式强制转换的" -#: parser/analyze.c:2180 -msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query" -msgstr "SELECT FOR UPDATE/SHARE 不能适用于WITH查询" +#: commands/functioncmds.c:1563 +msgid "second argument of cast function must be type integer" +msgstr "类型转换函数的第二个参数必须为整型" -#: parser/analyze.c:2194 -#, c-format -msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause" -msgstr "在FROM子句中的FOR UPDATE/SHARE子句中没有找到关系 \"%s\"" +#: commands/functioncmds.c:1567 +msgid "third argument of cast function must be type boolean" +msgstr "类型转换函数的第三个参数必须为布尔类型" -#: parser/parse_agg.c:127 parser/parse_oper.c:254 -#, c-format -msgid "could not identify an ordering operator for type %s" -msgstr "无法为类型%s识别顺序操作符" +#: commands/functioncmds.c:1571 +msgid "" +"return data type of cast function must match or be binary-coercible to " +"target data type" +msgstr "功能指派函数的返回数据类型必须匹配或者强制二进制方式转换的目标数据类型" -#: parser/parse_agg.c:129 -msgid "Aggregates with DISTINCT must be able to sort their inputs." -msgstr "带有DISTINCT关键字的聚合函数必须能够对它们的输入进行排序" +#: commands/functioncmds.c:1582 +msgid "cast function must not be volatile" +msgstr "类型转换函数不能为易失的 (volatile)" -#: parser/parse_agg.c:170 -msgid "aggregate function calls cannot contain window function calls" -msgstr "对于聚合函数调用不能包含窗口函数的调用" +#: commands/functioncmds.c:1587 +msgid "cast function must not be an aggregate function" +msgstr "转换函数不能是一个聚合函数" -#: parser/parse_agg.c:241 parser/parse_clause.c:1620 -#, c-format -msgid "window \"%s\" does not exist" -msgstr "窗口\"%s\"不存在" +#: commands/functioncmds.c:1591 +msgid "cast function must not be a window function" +msgstr "功能转换函数不能使窗口函数" -#: parser/parse_agg.c:331 -msgid "aggregates not allowed in WHERE clause" -msgstr "聚合函数不允许在 WHERE 子句中" +#: commands/functioncmds.c:1595 +msgid "cast function must not return a set" +msgstr "转换函数不能返回一个组合" -#: parser/parse_agg.c:337 -msgid "aggregates not allowed in JOIN conditions" -msgstr "聚合函数不允许在 JOIN 条件中" +#: commands/functioncmds.c:1621 +msgid "must be superuser to create a cast WITHOUT FUNCTION" +msgstr "只有超级用户能创建一个非函数的类型转换" -#: parser/parse_agg.c:358 -msgid "aggregates not allowed in GROUP BY clause" -msgstr "聚合函数不允许在 GROUP BY 子句中" +#: commands/functioncmds.c:1636 +msgid "source and target data types are not physically compatible" +msgstr "源数据类型和目标数据类型不相容" -#: parser/parse_agg.c:426 -msgid "aggregate functions not allowed in a recursive query's recursive term" -msgstr "在递归查询的递归术语中不允许使用聚合函数" +#: commands/functioncmds.c:1651 +msgid "composite data types are not binary-compatible" +msgstr "组合数据类型不是二进制兼容" -#: parser/parse_agg.c:451 -msgid "window functions not allowed in WHERE clause" -msgstr "在WHERE子句中不允许出现窗口函数" +#: commands/functioncmds.c:1657 +msgid "enum data types are not binary-compatible" +msgstr "枚举数据类型不是二进制兼容" -#: parser/parse_agg.c:457 -msgid "window functions not allowed in JOIN conditions" -msgstr "在 JOIN 条件中不允许出现窗口函数" +#: commands/functioncmds.c:1663 +msgid "array data types are not binary-compatible" +msgstr "数组数据类型不是二进制兼容的" -#: parser/parse_agg.c:463 -msgid "window functions not allowed in HAVING clause" -msgstr "在HAVING子句中不允许出现窗口函数" +#: commands/functioncmds.c:1680 +msgid "domain data types must not be marked binary-compatible" +msgstr "域数据类型不能标为二进制兼容" -#: parser/parse_agg.c:476 -msgid "window functions not allowed in GROUP BY clause" -msgstr "在GROUP BY子句中不允许出现窗口函数" +#: commands/functioncmds.c:1690 +msgid "source data type and target data type are the same" +msgstr "源数据类型和目标数据类型相同" -#: parser/parse_agg.c:495 parser/parse_agg.c:508 -msgid "window functions not allowed in window definition" -msgstr "在窗口定义中不允许出现窗口定义" +#: commands/functioncmds.c:1723 +#, c-format +msgid "cast from type %s to type %s already exists" +msgstr "类型 %s 到 %s 的转换已经存在" -#: parser/parse_agg.c:630 +#: commands/functioncmds.c:1803 #, 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 子句中或者在聚合函数中使用" +msgid "cast from type %s to type %s does not exist, skipping" +msgstr "从类型 %s 到类型 %s 的类型转换不存在,跳过" -#: parser/parse_agg.c:636 +#: commands/functioncmds.c:1841 #, c-format -msgid "subquery uses ungrouped column \"%s.%s\" from outer query" -msgstr "子查询使用了外层查询中的非分组列 \"%s.%s\" " +msgid "cast from type %s to type %s does not exist" +msgstr "类型 %s 到类型 %s 的转换不存在" -#: parser/parse_clause.c:420 +#: commands/functioncmds.c:1929 #, c-format -msgid "JOIN/ON clause refers to \"%s\", which is not part of JOIN" -msgstr "JOIN/ON子句引用的\"%s\"不属于JOIN操作的一部分" +msgid "function \"%s\" already exists in schema \"%s\"" +msgstr "在模式 \"%2$s\" 中函数 \"%1$s\" 已经存在" -#: parser/parse_clause.c:501 -msgid "subquery in FROM cannot have SELECT INTO" -msgstr "FROM中的子查询不能有SELECT INTO" +#: commands/functioncmds.c:2003 +msgid "no inline code specified" +msgstr "没有指定内联代码" -#: parser/parse_clause.c:523 -msgid "subquery in FROM cannot refer to other relations of same query level" -msgstr "在FROM子句中的子查询无法参考相同查询级别中的关系" +#: commands/functioncmds.c:2051 +#, c-format +msgid "language \"%s\" does not support inline code execution" +msgstr "语言 \"%s\" 不支持执行内联代码" -#: parser/parse_clause.c:574 -msgid "" -"function expression in FROM cannot refer to other relations of same query " -"level" -msgstr "在FROM子句中的函数表达式无法参考相同查询级别中的关系" +#: 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 "COPOY BINARY 不支持输出到标准输出或来自标准输入" -#: parser/parse_clause.c:587 -msgid "cannot use aggregate function in function expression in FROM" -msgstr "不能在 FROM 中的函数表达式中使用聚合函数" +#: commands/copy.c:473 +#, c-format +msgid "could not write to COPY file: %m" +msgstr "无法写入 COPY 文件: %m" -#: parser/parse_clause.c:594 -msgid "cannot use window function in function expression in FROM" -msgstr "不能在FROM中的函数表达式中使用窗口函数" +#: commands/copy.c:485 +msgid "connection lost during COPY to stdout" +msgstr "COPY 到标准输出的过程中联接中断" -#: parser/parse_clause.c:870 +#: commands/copy.c:526 #, c-format -msgid "column name \"%s\" appears more than once in USING clause" -msgstr "在 USING 子句中字段名 \"%s\" 出现多次" +msgid "could not read from COPY file: %m" +msgstr "无法从COPY命令中文件进行读操作: %m" -#: parser/parse_clause.c:885 +#: commands/copy.c:577 #, c-format -msgid "common column name \"%s\" appears more than once in left table" -msgstr "共同的字段名 \"%s\" 在左边的表中出现了多次" +msgid "COPY from stdin failed: %s" +msgstr "从标准输入上 COPY 失败: %s" -#: parser/parse_clause.c:894 +#: commands/copy.c:593 #, c-format -msgid "column \"%s\" specified in USING clause does not exist in left table" -msgstr "USING 子句中指定的字段 \"%s\" 在左边的表中不存在" +msgid "unexpected message type 0x%02X during COPY from stdin" +msgstr "意外的信息类型 0x%02X, 在标准输入上 COPY 的过程中" -#: parser/parse_clause.c:908 -#, c-format -msgid "common column name \"%s\" appears more than once in right table" -msgstr "共同的字段名 \"%s\" 在右边的表中出现了多次" +#: commands/copy.c:745 +msgid "must be superuser to COPY to or from a file" +msgstr "必须成为超级用户才能 COPY 到文件或从文件 COPY" -#: parser/parse_clause.c:917 -#, c-format -msgid "column \"%s\" specified in USING clause does not exist in right table" -msgstr "USING 子句中指定的字段 \"%s\" 在右边的表中不存在" +#: commands/copy.c:746 +msgid "" +"Anyone can COPY to stdout or from stdin. psql's \\copy command also works " +"for anyone." +msgstr "" +"任何人可以 COPY 到标准输出或来自标准输入的 COPY. 任何人也可以使用 Psql 的 " +"\\copy 命令." -#: parser/parse_clause.c:974 +#: commands/copy.c:874 #, c-format -msgid "column alias list for \"%s\" has too many entries" -msgstr "\"%s\" 的字段别名列表有太多记录" +msgid "COPY format \"%s\" not recognized" +msgstr "没有识别COPY命令的格式\"%s\"" -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1211 +#: commands/copy.c:937 commands/copy.c:951 #, c-format -msgid "argument of %s must not contain variables" -msgstr "%s 的参数不能包含变量" +msgid "argument to option \"%s\" must be a list of column names" +msgstr "选项 \"%s\"的参数必须是一个包含列名的列表" -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1222 +#: commands/copy.c:964 #, c-format -msgid "argument of %s must not contain aggregate functions" -msgstr "%s 的参数一定不能包含聚合函数" +msgid "argument to option \"%s\" must be a valid encoding name" +msgstr "选项 \"%s\"的参数必须是一个有效的编码名" -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_clause.c:1233 +#: commands/copy.c:970 #, c-format -msgid "argument of %s must not contain window functions" -msgstr "%s 的参数一定不能包含窗口函数" +msgid "option \"%s\" not recognized" +msgstr "未识别选项\"%s\"" -#. translator: first %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1350 -#, c-format -msgid "%s \"%s\" is ambiguous" -msgstr "%s \"%s\" 是不明确的" +#: commands/copy.c:981 +msgid "cannot specify DELIMITER in BINARY mode" +msgstr "在 BINARY 模式中你不能指定 DELIMITER" -#. translator: %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1374 -#, c-format -msgid "non-integer constant in %s" -msgstr "在 %s 中的非整数常量" +#: commands/copy.c:986 +msgid "cannot specify NULL in BINARY mode" +msgstr "在 BINARY 模式中你不能指定 NULL" -#. translator: %s is name of a SQL construct, eg ORDER BY -#: parser/parse_clause.c:1392 -#, c-format -msgid "%s position %d is not in select list" -msgstr "%s 位置%d不在select列表中." +#: commands/copy.c:1008 +msgid "COPY delimiter must be a single one-byte character" +msgstr "COPY命令中 的分隔符必需是单字节字符" -#: parser/parse_clause.c:1608 -#, c-format -msgid "window \"%s\" is already defined" -msgstr "已经定义窗口\"%s\"" +#: commands/copy.c:1015 +msgid "COPY delimiter cannot be newline or carriage return" +msgstr "COPY 命令中的分隔符不能使新行或回车符" -#: parser/parse_clause.c:1662 -#, c-format -msgid "cannot override PARTITION BY clause of window \"%s\"" -msgstr "无法覆盖窗口\"%s\"的PARTITION BY子句" +#: commands/copy.c:1021 +msgid "COPY null representation cannot use newline or carriage return" +msgstr "在COPY命令中空表达式中不能使用新行或换行回车." -#: parser/parse_clause.c:1674 +#: commands/copy.c:1038 #, c-format -msgid "cannot override ORDER BY clause of window \"%s\"" -msgstr "无法覆盖窗口 \"%s\"的ORDER BY子句" +msgid "COPY delimiter cannot be \"%s\"" +msgstr "COPY命令中的分隔符不能为\"%s\"" -#: parser/parse_clause.c:1696 -#, c-format -msgid "cannot override frame clause of window \"%s\"" -msgstr "无法覆盖窗口\"%s\"的框架(frame)子句" +#: commands/copy.c:1044 +msgid "COPY HEADER available only in CSV mode" +msgstr "只在CSV 模式中才能使用COPY HEADER命令" -#: parser/parse_clause.c:1762 -msgid "" -"in an aggregate with DISTINCT, ORDER BY expressions must appear in argument " -"list" -msgstr "" -"在带有DISTINCT子句的聚合函数中,ORDER BY子句后面的表达式必须在参数列表中出现" +#: commands/copy.c:1050 +msgid "COPY quote available only in CSV mode" +msgstr "只有在CSV模式中才能在COPY命令中使用引号" -#: parser/parse_clause.c:1763 -msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list" -msgstr "在查询列表中必须出现SELECT DISTINCT, ORDER BY表达式" +#: commands/copy.c:1055 +msgid "COPY quote must be a single one-byte character" +msgstr "在COPY命令中的引号必须是单字节字符" -#: parser/parse_clause.c:1849 parser/parse_clause.c:1881 -msgid "SELECT DISTINCT ON expressions must match initial ORDER BY expressions" -msgstr "表达式SELECT DISTINCT ON必须匹配初始化的ORDER BY表达式" +#: commands/copy.c:1060 +msgid "COPY delimiter and quote must be different" +msgstr "COPY命令中的分隔符和引号不能一样." -#: parser/parse_clause.c:2000 -#, c-format -msgid "operator %s is not a valid ordering operator" -msgstr "操作符%s不时有效的排序操作符" +#: commands/copy.c:1066 +msgid "COPY escape available only in CSV mode" +msgstr "COPY 转义 (escape) 只在 CSV 模式中有效" -#: parser/parse_clause.c:2002 -msgid "" -"Ordering operators must be \"<\" or \">\" members of btree operator families." -msgstr "顺序操作符必须是btree操作符家族的成员\"<\"或\">\"." +#: commands/copy.c:1071 +msgid "COPY escape must be a single one-byte character" +msgstr "在COPY命令中的转义字符必须是单个单字节字符" -#: parser/parse_coerce.c:841 parser/parse_coerce.c:870 -#: parser/parse_coerce.c:888 parser/parse_coerce.c:903 -#: parser/parse_expr.c:1640 parser/parse_expr.c:2151 -#, c-format -msgid "cannot cast type %s to %s" -msgstr "无法把类型 %s 转换为 %s" +#: commands/copy.c:1077 +msgid "COPY force quote available only in CSV mode" +msgstr "只有在CSV模式中才能在COPY命令中进行强制引用操作" -#: parser/parse_coerce.c:873 -msgid "Input has too few columns." -msgstr "输入字段太少" +#: commands/copy.c:1081 +msgid "COPY force quote only available using COPY TO" +msgstr "只有使用COPY TO命令时, COPY强制引用操作才有效" -#: parser/parse_coerce.c:891 -#, c-format -msgid "Cannot cast type %s to %s in column %d." -msgstr "不能把第 %3$d 个字段的类型 %1$s 转换为 %2$s." +#: commands/copy.c:1087 +msgid "COPY force not null available only in CSV mode" +msgstr "只有在CSV模式中强制不为空的COPY命令才有效" -#: parser/parse_coerce.c:906 -msgid "Input has too many columns." -msgstr "输入字段太多" +#: commands/copy.c:1091 +msgid "COPY force not null only available using COPY FROM" +msgstr "只有在使用COPY FROM命令时,在COPY命令中的强制不可为空的操作才有效" -#. translator: first %s is name of a SQL construct, eg WHERE -#: parser/parse_coerce.c:949 -#, c-format -msgid "argument of %s must be type boolean, not type %s" -msgstr "%s 的参数必需是布尔类型, 而不是 %s 类型" +#: commands/copy.c:1097 +msgid "COPY delimiter must not appear in the NULL specification" +msgstr "COPY分隔符不能出现NULL定义中" -#. translator: %s is name of a SQL construct, eg WHERE -#. translator: %s is name of a SQL construct, eg LIMIT -#: parser/parse_coerce.c:959 parser/parse_coerce.c:1008 +#: commands/copy.c:1104 +msgid "CSV quote character must not appear in the NULL specification" +msgstr "CSV引用字符不能出现在NULL定义中." + +#: commands/copy.c:1166 #, c-format -msgid "argument of %s must not return a set" -msgstr "%s 的参数不能返回一个组合" +msgid "table \"%s\" does not have OIDs" +msgstr "表 \"%s\" 没有 OID" -#. translator: first %s is name of a SQL construct, eg LIMIT -#: parser/parse_coerce.c:996 +#: commands/copy.c:1183 +msgid "COPY (SELECT) WITH OIDS is not supported" +msgstr "不支持使用COPY (SELECT) WITH OIDS" + +#: commands/copy.c:1210 +msgid "COPY (SELECT INTO) is not supported" +msgstr "不支持使用COPY (SELECT INTO)命令." + +#: commands/copy.c:1270 #, c-format -msgid "argument of %s must be type %s, not type %s" -msgstr "%s 的参数必需是类型%s, 而不是类型%s " +msgid "FORCE QUOTE column \"%s\" not referenced by COPY" +msgstr "COPY命令没有引用FORCE QUOTE的列\"%s\" ." -#. translator: first %s is name of a SQL construct, eg CASE -#: parser/parse_coerce.c:1129 +#: commands/copy.c:1292 #, c-format -msgid "%s types %s and %s cannot be matched" -msgstr "%s 的类型 %s 和 %s 不匹配" +msgid "FORCE NOT NULL column \"%s\" not referenced by COPY" +msgstr "COPY命令没有引用FORCE NOT NULL的列\"%s\" ." -#. translator: first %s is name of a SQL construct, eg CASE -#: parser/parse_coerce.c:1196 +#: commands/copy.c:1356 #, c-format -msgid "%s could not convert type %s to %s" -msgstr "%s 无法转换类型 %s 为 %s" +msgid "cannot copy from view \"%s\"" +msgstr "不可以从视图 \"%s\" 拷贝" -#: parser/parse_coerce.c:1437 -msgid "arguments declared \"anyelement\" are not all alike" -msgstr "参数声明的 \"anyelement\" 不全相同" +#: commands/copy.c:1358 commands/copy.c:1364 +msgid "Try the COPY (SELECT ...) TO variant." +msgstr "尝试不同形式的COPY (SELECT ...) TO命令" -#: parser/parse_coerce.c:1456 -msgid "arguments declared \"anyarray\" are not all alike" -msgstr "参数声明的 \"anyarray\" 不全相同" +#: commands/copy.c:1362 +#, c-format +msgid "cannot copy from foreign table \"%s\"" +msgstr "不可以从外部表 \"%s\" 拷贝" -#: parser/parse_coerce.c:1485 parser/parse_coerce.c:1629 -#: parser/parse_coerce.c:1660 +#: commands/copy.c:1368 #, c-format -msgid "argument declared \"anyarray\" is not an array but type %s" -msgstr "参数声明的 \"anyarray\" 不是一个数组, 但是类型为 %s" +msgid "cannot copy from sequence \"%s\"" +msgstr "不可以从序列 \"%s\" 拷贝" -#: parser/parse_coerce.c:1501 -msgid "" -"argument declared \"anyarray\" is not consistent with argument declared " -"\"anyelement\"" -msgstr "参数声明的 \"anyarray\" 和参数声明的 \"anyelement\" 不一致" +#: commands/copy.c:1373 +#, c-format +msgid "cannot copy from non-table relation \"%s\"" +msgstr "不可以从非表关系 \"%s\" 拷贝" -#: parser/parse_coerce.c:1519 -msgid "could not determine polymorphic type because input has type \"unknown\"" -msgstr "无法确定多态类型, 因为输入类型为 \"unknown\"" +#: commands/copy.c:1397 +msgid "relative path not allowed for COPY to file" +msgstr "COPY 到文件不允许相对路径" -#: parser/parse_coerce.c:1529 +#: commands/copy.c:1407 #, c-format -msgid "type matched to anynonarray is an array type: %s" -msgstr "与anynonarray匹配的类型是一个数组类型:%s" +msgid "could not open file \"%s\" for writing: %m" +msgstr "为了写入, 无法打开文件 \"%s\": %m" -#: parser/parse_coerce.c:1539 +#: commands/copy.c:1414 commands/copy.c:2200 #, c-format -msgid "type matched to anyenum is not an enum type: %s" -msgstr "匹配anyenum的类型不是枚举类型:%s" +msgid "\"%s\" is a directory" +msgstr "\"%s\" 是一个目录" -#: parser/parse_cte.c:40 +#: commands/copy.c:1738 #, c-format -msgid "" -"recursive reference to query \"%s\" must not appear within its non-recursive " -"term" -msgstr "对查询 \"%s\" 的递归引用不能出现在它的非递归形式中" +msgid "COPY %s, line %d, column %s" +msgstr "COPY %s, 行 %d, 列 %s" -#: parser/parse_cte.c:42 +#: commands/copy.c:1742 commands/copy.c:1787 #, c-format -msgid "recursive reference to query \"%s\" must not appear within a subquery" -msgstr "对查询 \"%s\" 的递归引用不能出现在子查询中" +msgid "COPY %s, line %d" +msgstr "COPY %s, 行 %d" -#: parser/parse_cte.c:44 +#: commands/copy.c:1753 #, c-format -msgid "" -"recursive reference to query \"%s\" must not appear within an outer join" -msgstr "对查询 \"%s\" 的递归引用不能出现在外连接中" +msgid "COPY %s, line %d, column %s: \"%s\"" +msgstr "COPY %s, 行 %d, 列 %s: \"%s\"" -#: parser/parse_cte.c:46 +#: commands/copy.c:1761 #, c-format -msgid "recursive reference to query \"%s\" must not appear within INTERSECT" -msgstr "对查询 \"%s\" 的递归引用不能出现在INTERSECT操作中" +msgid "COPY %s, line %d, column %s: null input" +msgstr "COPY %s, 行 %d, 列 %s: 空的输入" -#: parser/parse_cte.c:48 +#: commands/copy.c:1773 #, c-format -msgid "recursive reference to query \"%s\" must not appear within EXCEPT" -msgstr "对查询 \"%s\" 的递归引用不能出现在EXCEPT操作中" +msgid "COPY %s, line %d: \"%s\"" +msgstr "COPY %s, 行 %d: \"%s\"" -#: parser/parse_cte.c:130 +#: commands/copy.c:1857 #, c-format -msgid "WITH query name \"%s\" specified more than once" -msgstr "WITH 查询名\"%s\" 被指定多次" - -#: parser/parse_cte.c:247 -msgid "subquery in WITH cannot have SELECT INTO" -msgstr "在WITH开始的字查询不能有SELECT INTO" +msgid "cannot copy to view \"%s\"" +msgstr "不可以拷贝到视图 \"%s\"" -#: parser/parse_cte.c:288 +#: commands/copy.c:1862 #, c-format -msgid "" -"recursive query \"%s\" column %d has type %s in non-recursive term but type %" -"s overall" -msgstr "递归查询\"%s\"的列%d在非递归术语中的类型是%s,但是全部类型都是%s" +msgid "cannot copy to foreign table \"%s\"" +msgstr "不可以拷贝到外部表 \"%s\"" -#: parser/parse_cte.c:294 -msgid "Cast the output of the non-recursive term to the correct type." -msgstr "将非递归术语的输出指派为正确的类型" - -#: parser/parse_cte.c:376 +#: commands/copy.c:1867 #, c-format -msgid "WITH query \"%s\" has %d columns available but %d columns specified" -msgstr "WITH 查询\"%s\"有%d个有效字段, 但只指定了%d个字段" - -#: parser/parse_cte.c:556 -msgid "mutual recursion between WITH items is not implemented" -msgstr "没有实现在WITH成员之间的相互递归引用" +msgid "cannot copy to sequence \"%s\"" +msgstr "不可以拷贝到序列 \"%s\"" -#: parser/parse_cte.c:608 +#: commands/copy.c:1872 #, c-format -msgid "" -"recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] " -"recursive-term" -msgstr "递归查询\"%s\"没有非递归术语UNION [ALL]递归术语这种形式" +msgid "cannot copy to non-table relation \"%s\"" +msgstr "不可以拷贝到非表关系 \"%s\"" -#: parser/parse_cte.c:640 -msgid "ORDER BY in a recursive query is not implemented" -msgstr "在递归查询中没有实现ORDER BY " +#: commands/copy.c:2219 +msgid "COPY file signature not recognized" +msgstr "文件签字不被认可" -#: parser/parse_cte.c:646 -msgid "OFFSET in a recursive query is not implemented" -msgstr "在递归查询终未实现OFFSET" +#: commands/copy.c:2224 +msgid "invalid COPY file header (missing flags)" +msgstr "无效的 COPY 文件头 (缺少标志)" -#: parser/parse_cte.c:652 -msgid "LIMIT in a recursive query is not implemented" -msgstr "在递归查询终的未实现LIMIT" +#: commands/copy.c:2230 +msgid "unrecognized critical flags in COPY file header" +msgstr "在 COPY 文件头有不认可的危险标志" -#: parser/parse_cte.c:658 -msgid "FOR UPDATE/SHARE in a recursive query is not implemented" -msgstr "在递归查询中没有实现FOR UPDATE/SHARE " +#: commands/copy.c:2236 +msgid "invalid COPY file header (missing length)" +msgstr "无效的 COPY 文件头 (缺少长度)" -#: parser/parse_cte.c:715 -#, c-format -msgid "recursive reference to query \"%s\" must not appear more than once" -msgstr "对查询\"%s\"的递归引用不能出现多次" +#: commands/copy.c:2243 +msgid "invalid COPY file header (wrong length)" +msgstr "无效的 COPY 文件头 (错误长度)" -#: parser/parse_expr.c:358 parser/parse_expr.c:751 -#, c-format -msgid "column %s.%s does not exist" -msgstr "字段 %s.%s 不存在" +#: commands/copy.c:2376 commands/copy.c:3058 commands/copy.c:3288 +msgid "extra data after last expected column" +msgstr "最后期望字段后有额外数据" -#: parser/parse_expr.c:370 -#, c-format -msgid "column \"%s\" not found in data type %s" -msgstr "在数据类型 %2$s 中未找到字段 \"%1$s\"" +#: commands/copy.c:2386 +msgid "missing data for OID column" +msgstr "OID列丢失数据" -#: parser/parse_expr.c:376 -#, c-format -msgid "could not identify column \"%s\" in record data type" -msgstr "在记录数据类型中无法确认字段 \"%s\"" +#: commands/copy.c:2392 +msgid "null OID in COPY data" +msgstr "在 COPY 数据中没有 OID" + +#: commands/copy.c:2402 commands/copy.c:2501 +msgid "invalid OID in COPY data" +msgstr "在 COPY 数据中无效的 OID" -#: parser/parse_expr.c:382 +#: commands/copy.c:2417 #, c-format -msgid "column notation .%s applied to type %s, which is not a composite type" -msgstr "将列符号.%s应用到类型%s(这个类型不是组合类型)" +msgid "missing data for column \"%s\"" +msgstr "字段 \"%s\" 缺少数据" -#: parser/parse_expr.c:412 parser/parse_target.c:600 -msgid "row expansion via \"*\" is not supported here" -msgstr "不支持通过\"*\"实现的记录扩展" +#: commands/copy.c:2476 +msgid "received copy data after EOF marker" +msgstr "在EOF标志后收到了复制数据" -#: parser/parse_expr.c:735 parser/parse_relation.c:478 -#: parser/parse_relation.c:551 parser/parse_target.c:977 +#: commands/copy.c:2483 #, c-format -msgid "column reference \"%s\" is ambiguous" -msgstr "字段关联 \"%s\" 是不明确的" +msgid "row field count is %d, expected %d" +msgstr "元组字段计数是 %d, 期望计数是 %d" -#: parser/parse_expr.c:803 parser/parse_param.c:108 parser/parse_param.c:139 -#: parser/parse_param.c:195 parser/parse_param.c:287 -#, c-format -msgid "there is no parameter $%d" -msgstr "没有参数 $%d" +#: commands/copy.c:2822 commands/copy.c:2839 +msgid "literal carriage return found in data" +msgstr "在数据中找到了文字的回车换行符" -#: parser/parse_expr.c:1008 -msgid "NULLIF requires = operator to yield boolean" -msgstr "在NULLIF操作中需要等号操作符来产生布尔类型的返回值" +#: commands/copy.c:2823 commands/copy.c:2840 +msgid "unquoted carriage return found in data" +msgstr "在数据中找到了未用引号引起来的回车换行符" -#: parser/parse_expr.c:1181 -msgid "arguments of row IN must all be row expressions" -msgstr "记录IN的参数必须都是记录表达式" +#: commands/copy.c:2825 commands/copy.c:2842 +msgid "Use \"\\r\" to represent carriage return." +msgstr "使用\"\\r\"来代表换行回车" -#: parser/parse_expr.c:1385 -msgid "subquery cannot have SELECT INTO" -msgstr "FROM中的子查询不能有SELECT INTO" +#: commands/copy.c:2826 commands/copy.c:2843 +msgid "Use quoted CSV field to represent carriage return." +msgstr "使用以引号引起来的CSV字段代表换行回车." -#: parser/parse_expr.c:1413 -msgid "subquery must return a column" -msgstr "子查询必须返回一个字段" +#: commands/copy.c:2855 +msgid "literal newline found in data" +msgstr "在数据中找到了文字形式的新行" -#: parser/parse_expr.c:1420 -msgid "subquery must return only one column" -msgstr "子查询必须只能返回一个字段" +#: commands/copy.c:2856 +msgid "unquoted newline found in data" +msgstr "在数据中找到了未用引号引起来的新行" -#: parser/parse_expr.c:1479 -msgid "subquery has too many columns" -msgstr "子查询有太多的字段" +#: commands/copy.c:2858 +msgid "Use \"\\n\" to represent newline." +msgstr "使用 \"\\n\" 表示新行." -#: parser/parse_expr.c:1484 -msgid "subquery has too few columns" -msgstr "子查询字段太少" +#: commands/copy.c:2859 +msgid "Use quoted CSV field to represent newline." +msgstr "使用用引号因起来的CSV字段来表示新行." -#: parser/parse_expr.c:1580 -msgid "cannot determine type of empty array" -msgstr "无法确定空数组的类型" +#: commands/copy.c:2905 commands/copy.c:2941 +msgid "end-of-copy marker does not match previous newline style" +msgstr "end-of-copy标示不匹配先前的新数据行的风格." -#: parser/parse_expr.c:1581 -msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]." -msgstr "显式地将值指派为期望类型,例如ARRAY[]::integer[]." +#: commands/copy.c:2914 commands/copy.c:2930 +msgid "end-of-copy marker corrupt" +msgstr "copy命令结束标记损坏" -#: parser/parse_expr.c:1595 -#, c-format -msgid "could not find element type for data type %s" -msgstr "无法为数据类型%s找到成员类型" +#: commands/copy.c:3372 +msgid "unterminated CSV quoted field" +msgstr "CSV 引号域没有结束" -#: parser/parse_expr.c:1793 -msgid "unnamed XML attribute value must be a column reference" -msgstr "未命名的XML属性值必须是一个列引用" +#: commands/copy.c:3449 commands/copy.c:3468 +msgid "unexpected EOF in COPY data" +msgstr "在 COPY 数据中意外的 EOF" -#: parser/parse_expr.c:1794 -msgid "unnamed XML element value must be a column reference" -msgstr "未命名的XML成员值必须是一个列引用" +#: commands/copy.c:3458 +msgid "invalid field size" +msgstr "无效字段尺寸" -#: parser/parse_expr.c:1809 -#, c-format -msgid "XML attribute name \"%s\" appears more than once" -msgstr "XML属性名称\"%s\"出现多次" +#: commands/copy.c:3481 +msgid "incorrect binary data format" +msgstr "不正确的二进制数据格式" + +#: commands/cluster.c:134 commands/cluster.c:372 +msgid "cannot cluster temporary tables of other sessions" +msgstr "无法为其它会话的临时表建簇" -#: parser/parse_expr.c:1916 +#: commands/cluster.c:164 #, c-format -msgid "cannot cast XMLSERIALIZE result to %s" -msgstr "无法把XMLSERIALIZE强制转换为%s" +msgid "there is no previously clustered index for table \"%s\"" +msgstr "在表 \"%s\" 中未找到先前建簇的索引" -#: parser/parse_expr.c:2192 parser/parse_expr.c:2390 -msgid "unequal number of entries in row expressions" -msgstr "在记录表达式中,项的数量不相等" +#: commands/cluster.c:361 +msgid "cannot cluster a shared catalog" +msgstr "无法在共享目录视图上进行聚簇操作" -#: parser/parse_expr.c:2202 -msgid "cannot compare rows of zero length" -msgstr "无法比较零长度的记录" +#: commands/cluster.c:376 +msgid "cannot vacuum temporary tables of other sessions" +msgstr "无法对其它会话的临时表进行清理操作" -#: parser/parse_expr.c:2227 +#: commands/cluster.c:426 #, c-format -msgid "row comparison operator must yield type boolean, not type %s" -msgstr "行比较操作符必需返回布尔类型, 而不是类型%s" - -#: parser/parse_expr.c:2234 -msgid "row comparison operator must not return a set" -msgstr "行比较操作符不能返回一个集合" +msgid "\"%s\" is not an index for table \"%s\"" +msgstr "对于表 \"%2$s\" \"%1$s\" 不是一个索引" -#: parser/parse_expr.c:2293 parser/parse_expr.c:2337 +#: commands/cluster.c:434 #, c-format -msgid "could not determine interpretation of row comparison operator %s" -msgstr "无法确定行比较操作符%s的说明" - -#: parser/parse_expr.c:2295 msgid "" -"Row comparison operators must be associated with btree operator families." -msgstr "记录比较表达式必须与btree操作符相关联." - -#: parser/parse_expr.c:2339 -msgid "There are multiple equally-plausible candidates." -msgstr "有多个相等的类似候选." - -#: parser/parse_expr.c:2430 -msgid "IS DISTINCT FROM requires = operator to yield boolean" -msgstr "IS DISTINCT FROM操作中需要等号来产生布尔类型的值" +"cannot cluster on index \"%s\" because access method does not support " +"clustering" +msgstr "无法在索引\"%s\"进行聚簇操作,因为访问方法不支持进行聚簇操作" -#: parser/parse_func.c:153 +#: commands/cluster.c:446 #, c-format -msgid "argument name \"%s\" used more than once" -msgstr "参数名称\"%s\"被使用多次" - -#: parser/parse_func.c:164 -msgid "positional argument cannot follow named argument" -msgstr "已确定位置的参数不能在已命名参数的后面" +msgid "cannot cluster on partial index \"%s\"" +msgstr "无法在部分索引 \"%s\"上进行聚簇操作" -#: parser/parse_func.c:242 +#: commands/cluster.c:460 #, c-format -msgid "%s(*) specified, but %s is not an aggregate function" -msgstr "指定了 %s(*), 但是 %s 不是一个聚合函数" +msgid "cannot cluster on invalid index \"%s\"" +msgstr "无法在无效索引\"%s\"进行聚簇操作" -#: parser/parse_func.c:249 +#: commands/cluster.c:894 #, c-format -msgid "DISTINCT specified, but %s is not an aggregate function" -msgstr "指定了 DISTINCT, 但是 %s 不是一个聚合函数" +msgid "clustering \"%s.%s\" using index scan on \"%s\"" +msgstr "簇 \"%s.%s\" 正在 \"%s\"进行索引扫描" -#: parser/parse_func.c:255 +#: commands/cluster.c:900 #, c-format -msgid "ORDER BY specified, but %s is not an aggregate function" -msgstr "指定了ORDER BY语句, 但是%s不是一个聚合函数" +msgid "clustering \"%s.%s\" using sequential scan and sort" +msgstr "簇 \"%s.%s\"正在进行顺序扫描和排序" -#: parser/parse_func.c:261 +#: commands/cluster.c:905 commands/vacuumlazy.c:361 #, c-format -msgid "" -"OVER specified, but %s is not a window function nor an aggregate function" -msgstr "指定了OVER关键字,但是%s不是窗口函数或聚合函数" +msgid "vacuuming \"%s.%s\"" +msgstr "正在清理 (vacuum) \"%s.%s\"" -#: parser/parse_func.c:283 +#: commands/cluster.c:1065 #, c-format -msgid "function %s is not unique" -msgstr "函数 %s 不是唯一的" - -#: parser/parse_func.c:286 msgid "" -"Could not choose a best candidate function. You might need to add explicit " -"type casts." -msgstr "无法选择最佳候选函数. 你也许需要增加明确的类型转换." +"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages" +msgstr "" +"\"%1$s\": 在%4$u个页中找到%2$.0f个可删除行版本,%3$.0f不可删除的行版本." -#: parser/parse_func.c:297 +#: commands/cluster.c:1069 +#, 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." +"%.0f dead row versions cannot be removed yet.\n" +"%s." msgstr "" -"没有匹配指定名称和参数类型的函数. 您可能将ORDER BY子句放在了不正确的位置;" -"ORDER BY子句必须出现在所有聚合函数的常规参数的后面." +"%.0f 死行版本号仍不能移除.\n" +"%s." -#: parser/parse_func.c:308 +#: commands/vacuumlazy.c:276 +#, c-format msgid "" -"No function matches the given name and argument types. You might need to add " -"explicit type casts." -msgstr "没有匹配指定名称和参数类型的函数. 您也许需要增加明确的类型转换." +"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 " -#: parser/parse_func.c:415 parser/parse_func.c:480 +#: commands/vacuumlazy.c:530 #, c-format -msgid "%s(*) must be used to call a parameterless aggregate function" -msgstr "%s(*)必须用来调用没有参数的聚合函数" - -#: parser/parse_func.c:422 -msgid "aggregates cannot return sets" -msgstr "聚合函数可以不返回集合" - -#: parser/parse_func.c:434 -msgid "aggregates cannot use named arguments" -msgstr "聚合函数不能使用已命名的参数" - -#: parser/parse_func.c:453 -msgid "window function call requires an OVER clause" -msgstr "在窗口函数调用中需要使用OVER子句" - -#: parser/parse_func.c:470 -msgid "DISTINCT is not implemented for window functions" -msgstr "对于窗口函数,没有实现DISTINCT" - -#: parser/parse_func.c:490 -msgid "aggregate ORDER BY is not implemented for window functions" -msgstr "对于窗口函数,没有实现在按照聚合函数进行ORDER BY操作的功能" - -#: parser/parse_func.c:496 -msgid "window functions cannot return sets" -msgstr "窗口函数不能返回集合" - -#: parser/parse_func.c:507 -msgid "window functions cannot use named arguments" -msgstr "窗口函数不能使用已命名参数" +msgid "relation \"%s\" page %u is uninitialized --- fixing" +msgstr "关系 \"%s\" 页 %u 没有初始化 --- 修复" -#: parser/parse_func.c:1572 +#: commands/vacuumlazy.c:889 #, c-format -msgid "aggregate %s(*) does not exist" -msgstr "聚合函数 %s(*) 不存在" +msgid "\"%s\": removed %.0f row versions in %u pages" +msgstr "\"%1$s\": 在%3$u页中已删除%2$.0f行版本号" -#: parser/parse_func.c:1577 +#: commands/vacuumlazy.c:894 #, c-format -msgid "aggregate %s does not exist" -msgstr "聚合函数 %s(*) 不存在" +msgid "" +"\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u " +"pages" +msgstr "" +"\"%1$s\": 在超出%5$u页的%4$u中找到可删除版本号%2$.0f, 不可删除的版本号%3$.0f" -#: parser/parse_func.c:1596 +#: commands/vacuumlazy.c:898 #, c-format -msgid "function %s is not an aggregate" -msgstr "函数 \"%s\" 不是一个聚合函数" +msgid "" +"%.0f dead row versions cannot be removed yet.\n" +"There were %.0f unused item pointers.\n" +"%u pages are entirely empty.\n" +"%s." +msgstr "" +"已不用的行版本%.0f还不能删除.\n" +"那里有%.0f个没使用的成员指针.\n" +"%u页当前完全是空的.\n" +"%s." -#: parser/parse_node.c:82 +#: commands/vacuumlazy.c:956 #, c-format -msgid "target lists can have at most %d entries" -msgstr "目标列表最多可以有 %d 个字段" +msgid "\"%s\": removed %d row versions in %d pages" +msgstr "\"%1$s\": 在%3$d个页中已删除%2$d记录版本" -#: parser/parse_node.c:222 +#: commands/vacuumlazy.c:959 commands/vacuumlazy.c:1051 +#: commands/vacuumlazy.c:1225 #, c-format -msgid "cannot subscript type %s because it is not an array" -msgstr "无法下标类型 %s, 因为它不是一个数组" - -#: parser/parse_node.c:316 parser/parse_node.c:342 -msgid "array subscript must have type integer" -msgstr "数组下标必须为整数类型" +msgid "%s." +msgstr "%s" -#: parser/parse_node.c:366 +#: commands/vacuumlazy.c:1048 #, c-format -msgid "array assignment requires type %s but expression is of type %s" -msgstr "数组分配要求类型%s,但是表达式属于类型%s" +msgid "scanned index \"%s\" to remove %d row versions" +msgstr "扫描索引\"%s\"来删除%d记录版本" -#: parser/parse_oper.c:124 parser/parse_oper.c:751 utils/adt/regproc.c:464 -#: utils/adt/regproc.c:484 utils/adt/regproc.c:643 +#: commands/vacuumlazy.c:1089 #, c-format -msgid "operator does not exist: %s" -msgstr "操作符不存在: %s" +msgid "index \"%s\" now contains %.0f row versions in %u pages" +msgstr "索引\"%1$s\"在%3$u个页中包含了行版本号%2$.0f" -#: parser/parse_oper.c:256 -msgid "Use an explicit ordering operator or modify the query." -msgstr "使用显式操作符或修改查询" +#: commands/vacuumlazy.c:1093 +#, 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." -#: parser/parse_oper.c:260 utils/adt/arrayfuncs.c:3105 -#: utils/adt/arrayfuncs.c:3506 utils/adt/rowtypes.c:1139 +#: commands/vacuumlazy.c:1153 #, c-format -msgid "could not identify an equality operator for type %s" -msgstr "无法为类型%s识别等于操作符" +msgid "" +"automatic vacuum of table \"%s.%s.%s\": cannot (re)acquire exclusive lock " +"for truncate scan" +msgstr "" -#: parser/parse_oper.c:509 +#: commands/vacuumlazy.c:1222 #, c-format -msgid "operator requires run-time type coercion: %s" -msgstr "操作符需要运行时类型强制: %s" +msgid "\"%s\": truncated %u to %u pages" +msgstr "\"%s\": 将%u截断到%u pages" -#: parser/parse_oper.c:743 +#: commands/vacuumlazy.c:1277 #, c-format -msgid "operator is not unique: %s" -msgstr "操作符不是唯一的: %s" +msgid "\"%s\": suspending truncate due to conflicting lock request" +msgstr "" -#: parser/parse_oper.c:745 -msgid "" -"Could not choose a best candidate operator. You might need to add explicit " -"type casts." -msgstr "无法选择最佳候选操作符. 您也许需要增加显式的类型转换." +#: commands/dbcommands.c:202 +msgid "LOCATION is not supported anymore" +msgstr "不再支持 LOCATION" -#: parser/parse_oper.c:753 -msgid "" -"No operator matches the given name and argument type(s). You might need to " -"add explicit type casts." -msgstr "没有匹配指定名称和参数类型的操作符. 您也许需要增加明确的类型转换." +#: commands/dbcommands.c:203 +msgid "Consider using tablespaces instead." +msgstr "考虑使用表空间代替." -#: parser/parse_oper.c:812 parser/parse_oper.c:928 +# fe-connect.c:2558 +#: commands/dbcommands.c:254 commands/dbcommands.c:1374 commands/user.c:267 +#: commands/user.c:606 #, c-format -msgid "operator is only a shell: %s" -msgstr "操作符只是一个shell: %s" - -#: parser/parse_oper.c:916 -msgid "op ANY/ALL (array) requires array on right side" -msgstr "操作符ANY/ALL (array)要求数组在右边" - -#: parser/parse_oper.c:958 -msgid "op ANY/ALL (array) requires operator to yield boolean" -msgstr "操作ANY/ALL (array)需要产生布尔值的操作符." +msgid "invalid connection limit: %d" +msgstr "无效的连接限制:%d" -#: parser/parse_oper.c:963 -msgid "op ANY/ALL (array) requires operator not to return a set" -msgstr "操作ANY/ALL (array)需要不返回集合的操作符" +#: commands/dbcommands.c:273 +msgid "permission denied to create database" +msgstr "创建数据库权限不够" -#: parser/parse_param.c:212 +#: commands/dbcommands.c:296 #, c-format -msgid "inconsistent types deduced for parameter $%d" -msgstr "对于参数$%d,推断出不一致的类型" +msgid "template database \"%s\" does not exist" +msgstr "template 数据库 \"%s\" 不存在" -#: parser/parse_relation.c:147 +#: commands/dbcommands.c:308 #, c-format -msgid "table reference \"%s\" is ambiguous" -msgstr "表关联 \"%s\" 是不明确的" +msgid "permission denied to copy database \"%s\"" +msgstr "拷贝数据库 \"%s\" 权限不够" -#: parser/parse_relation.c:183 +#: commands/dbcommands.c:324 #, c-format -msgid "table reference %u is ambiguous" -msgstr "表关联 %u 是不明确的" +msgid "invalid server encoding %d" +msgstr "无效服务器编码 %d" -#: parser/parse_relation.c:343 +#: commands/dbcommands.c:330 commands/dbcommands.c:334 #, c-format -msgid "table name \"%s\" specified more than once" -msgstr "表名 \"%s\" 被指定多次" +msgid "invalid locale name %s" +msgstr "无效的语言环境名称 %s" -#: parser/parse_relation.c:754 parser/parse_relation.c:1043 -#: parser/parse_relation.c:1403 +#: commands/dbcommands.c:353 #, c-format -msgid "table \"%s\" has %d columns available but %d columns specified" -msgstr "表 \"%s\" 有 %d 个有效字段, 但指定了 %d 个字段" +msgid "" +"new encoding (%s) is incompatible with the encoding of the template database " +"(%s)" +msgstr "新的编码(%s)与模板数据库(%s)的编码不兼容" -#: parser/parse_relation.c:784 -#, c-format -msgid "too many column aliases specified for function %s" -msgstr "为函数 %s 指定了太多的字段别名" +#: commands/dbcommands.c:356 +msgid "" +"Use the same encoding as in the template database, or use template0 as " +"template." +msgstr "在模版数据库中使用同一编码,或者使用template0作为模版." -#: parser/parse_relation.c:850 +#: commands/dbcommands.c:361 #, c-format msgid "" -"There is a WITH item named \"%s\", but it cannot be referenced from this " -"part of the query." -msgstr "这里有一个名称为\"%s\"的WITH成员,但是不能从查询的这个部分引用它." +"new collation (%s) is incompatible with the collation of the template " +"database (%s)" +msgstr "新的排序规则(%s)与模版数据库(%s)中的排序规则不兼容" -#: parser/parse_relation.c:852 +#: commands/dbcommands.c:363 msgid "" -"Use WITH RECURSIVE, or re-order the WITH items to remove forward references." -msgstr "使用WITH RECURSIVE或重新排序WITH成员来删除前向引用." +"Use the same collation as in the template database, or use template0 as " +"template." +msgstr "在模版数据库中使用同一排序规则,或者使用template0作为模版." -#: parser/parse_relation.c:1122 +#: commands/dbcommands.c:368 +#, c-format msgid "" -"a column definition list is only allowed for functions returning \"record\"" -msgstr "一个字段定义列表只允许返回 \"record\" 的函数" - -#: parser/parse_relation.c:1130 -msgid "a column definition list is required for functions returning \"record\"" -msgstr "一个字段定义列表需要返回 \"record\" 的函数" +"new LC_CTYPE (%s) is incompatible with the LC_CTYPE of the template database " +"(%s)" +msgstr "新的LC_CTYPE (%s)与模版数据库(%s)中的LC_CTYPE不兼容." -#: parser/parse_relation.c:1177 -#, c-format -msgid "function \"%s\" in FROM has unsupported return type %s" -msgstr "FROM 中的函数 \"%s\" 不支持返回类型 %s" +#: commands/dbcommands.c:370 +msgid "" +"Use the same LC_CTYPE as in the template database, or use template0 as " +"template." +msgstr "在模版数据库中使用同一LC_CTYPE,或者使用template0作为模版." -#: parser/parse_relation.c:1249 +#: commands/dbcommands.c:392 commands/dbcommands.c:1081 +msgid "pg_global cannot be used as default tablespace" +msgstr "pg_global不能作为缺省表空间使用" + +#: commands/dbcommands.c:418 #, c-format -msgid "VALUES lists \"%s\" have %d columns available but %d columns specified" -msgstr "VALUES列表\"%s\"中有%d列有效, 但指定了%d个列." +msgid "cannot assign new default tablespace \"%s\"" +msgstr "无法分配新的默认表空间 \"%s\"" -#: parser/parse_relation.c:1305 +#: commands/dbcommands.c:420 #, c-format -msgid "joins can have at most %d columns" -msgstr "连接最多可以有 %d 个字段" +msgid "" +"There is a conflict because database \"%s\" already has some tables in this " +"tablespace." +msgstr "此处有冲突, 因为数据库 \"%s\" 已经有一些表在此表空间中." -#: parser/parse_relation.c:2038 +#: commands/dbcommands.c:440 commands/dbcommands.c:956 #, c-format -msgid "column %d of relation \"%s\" does not exist" -msgstr "在关系\"%2$s\"中的列 %1$d 不存在" +msgid "database \"%s\" already exists" +msgstr "数据库 \"%s\" 已经存在" -#: parser/parse_relation.c:2397 +#: commands/dbcommands.c:454 #, c-format -msgid "invalid reference to FROM-clause entry for table \"%s\"" -msgstr "对于表 \"%s\"的FROM子句项的引用无效 " +msgid "source database \"%s\" is being accessed by other users" +msgstr "其他用户正在使用源数据库 \"%s\"" -#: parser/parse_relation.c:2400 +#: commands/dbcommands.c:722 commands/dbcommands.c:737 #, c-format -msgid "Perhaps you meant to reference the table alias \"%s\"." -msgstr "可能您是要引用表的化名 \"%s\"." +msgid "encoding %s does not match locale %s" +msgstr "编码 \"%s\"与语言环境%s不匹配" -#: parser/parse_relation.c:2402 +#: commands/dbcommands.c:725 #, c-format -msgid "" -"There is an entry for table \"%s\", but it cannot be referenced from this " -"part of the query." -msgstr "这里有一个对于表\"%s\"的项,但是不能从查询的这个部分中引用." +msgid "The chosen LC_CTYPE setting requires encoding %s." +msgstr "所选择的LC_CTYPE设置需要编码%s" -#: parser/parse_relation.c:2408 +#: commands/dbcommands.c:740 #, c-format -msgid "missing FROM-clause entry for table \"%s\"" -msgstr "对于表\"%s\",丢失FROM子句项" +msgid "The chosen LC_COLLATE setting requires encoding %s." +msgstr "所选择的 LC_COLLATE设置需要编码%s" -#: parser/parse_target.c:373 parser/parse_target.c:661 +#: commands/dbcommands.c:798 #, c-format -msgid "cannot assign to system column \"%s\"" -msgstr "不能指定系统字段名 \"%s\"" +msgid "database \"%s\" does not exist, skipping" +msgstr "数据库 \"%s\" 不存在,跳过" -#: parser/parse_target.c:398 -msgid "cannot set an array element to DEFAULT" -msgstr "不能设置一个数组元素为 DEFAULT" +#: commands/dbcommands.c:819 +msgid "cannot drop a template database" +msgstr "无法删除模板数据库" -#: parser/parse_target.c:403 -msgid "cannot set a subfield to DEFAULT" -msgstr "不能设置子字段为 DEFAULT" +#: commands/dbcommands.c:825 +msgid "cannot drop the currently open database" +msgstr "无法删除当前使用的数据库" -#: parser/parse_target.c:470 +#: commands/dbcommands.c:836 commands/dbcommands.c:978 +#: commands/dbcommands.c:1103 #, c-format -msgid "column \"%s\" is of type %s but expression is of type %s" -msgstr "字段 \"%s\" 的类型为 %s, 但表达式的类型为 %s" +msgid "database \"%s\" is being accessed by other users" +msgstr "其他用户正在使用数据库 \"%s\"" -#: parser/parse_target.c:645 -#, c-format -msgid "" -"cannot assign to field \"%s\" of column \"%s\" because its type %s is not a " -"composite type" -msgstr "" -"无法指定列 \"%2$s\" 的字段 \"%1$s\", 因为它的类型 %3$s 不是一个复合类型" +#: commands/dbcommands.c:947 +msgid "permission denied to rename database" +msgstr "重命名数据库权限不够" -#: parser/parse_target.c:654 -#, c-format -msgid "" -"cannot assign to field \"%s\" of column \"%s\" because there is no such " -"column in data type %s" -msgstr "" -"无法给字段 \"%2$s\" 的数据域 \"%1$s\" 赋值, 因为在数据类型 %3$s 中没有此列" +#: commands/dbcommands.c:967 +msgid "current database cannot be renamed" +msgstr "不能对当前数据库进行改名" + +#: commands/dbcommands.c:1059 +msgid "cannot change the tablespace of the currently open database" +msgstr "无法改变当前已打开数据库的表空间" -#: parser/parse_target.c:729 +#: commands/dbcommands.c:1143 #, c-format +msgid "some relations of database \"%s\" are already in tablespace \"%s\"" +msgstr "在表空间 \"%2$s\"中已经存储了数据库\"%1$s\"中的一些关系了" + +#: commands/dbcommands.c:1145 msgid "" -"array assignment to \"%s\" requires type %s but expression is of type %s" -msgstr "将数组分配给\"%s\" 时需要类型%s,但是表达式属于类型%s" +"You must move them back to the database's default tablespace before using " +"this command." +msgstr "在使用这条命令前,您必须把它们移动回数据库的缺省表空间" -#: parser/parse_target.c:739 +#: commands/dbcommands.c:1273 commands/dbcommands.c:1752 +#: commands/dbcommands.c:1966 commands/dbcommands.c:2014 +#: commands/tablespace.c:584 #, c-format -msgid "subfield \"%s\" is of type %s but expression is of type %s" -msgstr "子字段 \"%s\" 的类型为 %s, 但表达式的类型为 %s" +msgid "some useless files may be left behind in old database directory \"%s\"" +msgstr "在原先的数据库目录\"%s\"可能留下了一些无用的文件" -#: parser/parse_target.c:1039 -msgid "SELECT * with no tables specified is not valid" -msgstr "SELECT * 没有指定表是无效的" +#: commands/dbcommands.c:1517 +msgid "permission denied to change owner of database" +msgstr "改变数据库属主的权限不够" -#: parser/parse_type.c:83 +#: commands/dbcommands.c:1853 #, c-format -msgid "improper %%TYPE reference (too few dotted names): %s" -msgstr "不合适的 %%TYPE 关联 (名字中点符号太少): %s" +msgid "" +"There are %d other session(s) and %d prepared transaction(s) using the " +"database." +msgstr "这里有%d个其它的会话和%d个已准备好的事务正在使用数据库." -#: parser/parse_type.c:105 +#: commands/dbcommands.c:1856 #, c-format -msgid "improper %%TYPE reference (too many dotted names): %s" -msgstr "不合适的 %%TYPE 关联 (名字中太多点符号): %s" +msgid "There are %d other session(s) using the database." +msgstr "这里有%d个其它会话正在使用数据库." -#: parser/parse_type.c:127 +#: commands/dbcommands.c:1859 #, c-format -msgid "type reference %s converted to %s" -msgstr "类型关联 %s 转换为 %s" +msgid "There are %d prepared transaction(s) using the database." +msgstr "这里有%d个已准备好的事务正在使用数据库." -#: parser/parse_type.c:202 utils/cache/typcache.c:151 +#: commands/explain.c:153 #, c-format -msgid "type \"%s\" is only a shell" -msgstr "类型 \"%s\" 只是一个 shell" +msgid "unrecognized value for EXPLAIN option \"%s\": \"%s\"" +msgstr "用于EXPLAIN选项\"%s\"的值无效:\"%s\"" -#: parser/parse_type.c:270 +#: commands/explain.c:159 #, c-format -msgid "type modifier is not allowed for type \"%s\"" -msgstr "对于类型\"%s\"不允许使用类型修改器" - -#: parser/parse_type.c:313 -msgid "type modifiers must be simple constants or identifiers" -msgstr "类型修改器必须是简单的常量或标示符." +msgid "unrecognized EXPLAIN option \"%s\"" +msgstr "无法识别的EXPLAIN选项\"%s\"" -#: parser/parse_type.c:548 parser/parse_type.c:647 -#, c-format -msgid "invalid type name \"%s\"" -msgstr "无效的类型名字 \"%s\"" +#: commands/explain.c:166 +msgid "EXPLAIN option BUFFERS requires ANALYZE" +msgstr "在EXPLAIN命令中BUFFERS和ANALYZE选项需要一起使用" -#: parser/parse_utilcmd.c:306 -msgid "array of serial is not implemented" -msgstr "未实现序号数组" +#: commands/indexcmds.c:160 +msgid "must specify at least one column" +msgstr "必需至少指定一个字段" -#: parser/parse_utilcmd.c:350 +#: commands/indexcmds.c:164 #, c-format -msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\"" -msgstr "%1$s 将为 serial 字段 \"%3$s.%4$s\" 创建隐含序列 \"%2$s\"" +msgid "cannot use more than %d columns in an index" +msgstr "在一个索引中不能使用超过 %d 个字段" -#: parser/parse_utilcmd.c:451 parser/parse_utilcmd.c:463 +#: commands/indexcmds.c:192 #, c-format -msgid "" -"conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\"" -msgstr "表 \"%2$s\" 的字段 \"%1$s\" 声明 NULL/NOT NULL 冲突" +msgid "cannot create index on foreign table \"%s\"" +msgstr "外部表\"%s\"上无法创建索引" -#: parser/parse_utilcmd.c:475 +#: commands/indexcmds.c:207 +msgid "cannot create indexes on temporary tables of other sessions" +msgstr "不能在其他会话的临时表上创建索引" + +#: commands/indexcmds.c:293 +msgid "substituting access method \"gist\" for obsolete method \"rtree\"" +msgstr "将已作废的方法\"rtree\"替换为访问方法\"gist\" " + +#: commands/indexcmds.c:301 commands/opclasscmds.c:369 +#: commands/opclasscmds.c:790 commands/opclasscmds.c:2202 #, c-format -msgid "multiple default values specified for column \"%s\" of table \"%s\"" -msgstr "对表 \"%2$s\" 的字段 \"%1$s\" 指定了多遍默认值" +msgid "access method \"%s\" does not exist" +msgstr "访问方式 \"%s\" 不存在" -#: parser/parse_utilcmd.c:832 +#: commands/indexcmds.c:310 #, c-format -msgid "type %s is not a composite type" -msgstr "类型 %s 不是复合类型" +msgid "access method \"%s\" does not support unique indexes" +msgstr "存取方法 \"%s\" 不支持唯一索引" -#: parser/parse_utilcmd.c:1457 +#: commands/indexcmds.c:315 #, c-format -msgid "column \"%s\" appears twice in primary key constraint" -msgstr "在主键约束中字段 \"%s\" 出现了两次" +msgid "access method \"%s\" does not support multicolumn indexes" +msgstr "存取方法 \"%s\" 不支持多字段索引" -#: parser/parse_utilcmd.c:1462 +#: commands/indexcmds.c:320 #, c-format -msgid "column \"%s\" appears twice in unique constraint" -msgstr "字段 \"%s\" 在唯一约束中出现两次" +msgid "access method \"%s\" does not support exclusion constraints" +msgstr "访问方法 \"%s\" 不支持排他约束" -#: parser/parse_utilcmd.c:1615 -msgid "index expression cannot return a set" -msgstr "索引表达式不能返回一个集合" +#: commands/indexcmds.c:396 +#, c-format +msgid "%s %s will create implicit index \"%s\" for table \"%s\"" +msgstr "%1$s %2$s 将要为表 \"%4$s\" 创建隐含索引 \"%3$s\"" -#: parser/parse_utilcmd.c:1625 -msgid "" -"index expressions and predicates can refer only to the table being indexed" -msgstr "索引表达式和声明只能指向要建索引的表" +#: commands/indexcmds.c:728 +msgid "cannot use subquery in index predicate" +msgstr "索引声明中不能使用子查询" -#: parser/parse_utilcmd.c:1720 -msgid "rule WHERE condition cannot contain references to other relations" -msgstr "规则的WHERE条件不能包含到其它关系的引用" +#: commands/indexcmds.c:732 +msgid "cannot use aggregate in index predicate" +msgstr "索引声明中不能使用聚合函数" -#: parser/parse_utilcmd.c:1726 -msgid "cannot use aggregate function in rule WHERE condition" -msgstr "在检查约束中不能使用聚合函数" +#: commands/indexcmds.c:741 +msgid "functions in index predicate must be marked IMMUTABLE" +msgstr "索引声明中函数必需标记为 IMMUTABLE" -#: parser/parse_utilcmd.c:1730 -msgid "cannot use window function in rule WHERE condition" -msgstr "在检查约束中不能使用窗口函数" +#: commands/indexcmds.c:806 parser/parse_utilcmd.c:1754 +#, c-format +msgid "column \"%s\" named in key does not exist" +msgstr "在键字中命名的字段 \"%s\" 不存在" -#: parser/parse_utilcmd.c:1802 -msgid "" -"rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE " -"actions" -msgstr "带有WHERE 条件的规则只允许有操作 SELECT, INSERT, UPDATE, 或者 DELETE " +#: commands/indexcmds.c:859 +msgid "cannot use subquery in index expression" +msgstr "索引表达式中不能使用子查询" -#: parser/parse_utilcmd.c:1820 parser/parse_utilcmd.c:1890 -#: rewrite/rewriteHandler.c:432 rewrite/rewriteManip.c:1021 -msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" -msgstr "条件工具语句 UNION/INTERSECT/EXCEPT 没有实现" +#: commands/indexcmds.c:863 +msgid "cannot use aggregate function in index expression" +msgstr "索引表达式中不能使用聚合函数" -#: parser/parse_utilcmd.c:1838 -msgid "ON SELECT rule cannot use OLD" -msgstr "规则ON SELECT不能使用关键词OLD" +#: commands/indexcmds.c:874 +msgid "functions in index expression must be marked IMMUTABLE" +msgstr "索引表达式中函数必需标记为 IMMUTABLE" -#: parser/parse_utilcmd.c:1842 -msgid "ON SELECT rule cannot use NEW" -msgstr "规则ON SELECT不能使用关键词NEW" +#: commands/indexcmds.c:895 +msgid "could not determine which collation to use for index expression" +msgstr "索引表达式上无法确定使用哪个排序规则" -#: parser/parse_utilcmd.c:1851 -msgid "ON INSERT rule cannot use OLD" -msgstr "规则ON INSERT不能使用关键词OLD" +#: commands/indexcmds.c:903 commands/typecmds.c:843 +#: parser/parse_utilcmd.c:2606 parser/parse_expr.c:2165 +#: parser/parse_type.c:492 +#, c-format +msgid "collations are not supported by type %s" +msgstr "类型%s不能使用排序规则" -#: parser/parse_utilcmd.c:1857 -msgid "ON DELETE rule cannot use NEW" -msgstr "规则ON DELETE不能使用关键词NEW" +#: commands/indexcmds.c:941 +#, c-format +msgid "operator %s is not commutative" +msgstr "操作符%s不是可交换的" -#: parser/parse_utilcmd.c:2138 -msgid "misplaced DEFERRABLE clause" -msgstr "DEFERRABLE 子句位置错误" +#: commands/indexcmds.c:943 +msgid "Only commutative operators can be used in exclusion constraints." +msgstr "只有可交换操作符能够在排他约束中使用." -#: parser/parse_utilcmd.c:2143 parser/parse_utilcmd.c:2158 -msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" -msgstr "不允许多个 DEFERRABLE/NOT DEFERRABLE 子句" +#: commands/indexcmds.c:969 +#, c-format +msgid "operator %s is not a member of operator family \"%s\"" +msgstr "操作符%s不是操作符表\"%s\"的成员" -#: parser/parse_utilcmd.c:2153 -msgid "misplaced NOT DEFERRABLE clause" -msgstr "NOT DEFERRABLE 子句位置错误" +#: commands/indexcmds.c:972 +msgid "" +"The exclusion operator must be related to the index operator class for the " +"constraint." +msgstr "排他操作符必须和用于约束的索引操作符级别相关联" -#: parser/parse_utilcmd.c:2166 parser/parse_utilcmd.c:2192 gram.y:3484 -#: gram.y:3500 -msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" -msgstr "约束声明 INITIALLY DEFERRED 必须为 DEFERRABLE" +#: commands/indexcmds.c:1007 +#, c-format +msgid "access method \"%s\" does not support ASC/DESC options" +msgstr "访问方法 \"%s\" 不支持ASC/DESC选项" -#: parser/parse_utilcmd.c:2174 -msgid "misplaced INITIALLY DEFERRED clause" -msgstr "INITIALLY DEFERRED 子句位置错误" +#: commands/indexcmds.c:1012 +#, c-format +msgid "access method \"%s\" does not support NULLS FIRST/LAST options" +msgstr "访问方法 \"%s\" 不支持NULLS FIRST/LAST选项" -#: parser/parse_utilcmd.c:2179 parser/parse_utilcmd.c:2205 -msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" -msgstr "不允许多个 INITIALLY IMMEDIATE/DEFERRED 子句" +#: commands/indexcmds.c:1068 +#, c-format +msgid "data type %s has no default operator class for access method \"%s\"" +msgstr "对访问方法 \"%2$s\" 数据类型 %1$s 没有默认的操作符表" -#: parser/parse_utilcmd.c:2200 -msgid "misplaced INITIALLY IMMEDIATE clause" -msgstr "INITIALLY IMMEDIATE 子句位置错误" +#: commands/indexcmds.c:1070 +msgid "" +"You must specify an operator class for the index or define a default " +"operator class for the data type." +msgstr "你必须指定一个操作符表给索引或定义一个默认的操作符表给数据类型." -#: parser/parse_utilcmd.c:2373 +#: commands/indexcmds.c:1099 commands/indexcmds.c:1107 +#: commands/opclasscmds.c:212 commands/opclasscmds.c:1568 #, c-format -msgid "" -"CREATE specifies a schema (%s) different from the one being created (%s)" -msgstr "CREATE 指定的模式 (%s) 和将要创建的 (%s) 不同" +msgid "operator class \"%s\" does not exist for access method \"%s\"" +msgstr "处理方法 \"%s\" 的操作符类 \"%s\" 不存在" -#: gram.y:1255 -msgid "current database cannot be changed" -msgstr "不能改变当前使用的数据库" +#: commands/indexcmds.c:1120 +#, c-format +msgid "operator class \"%s\" does not accept data type %s" +msgstr "操作符表 \"%s\" 不能处理数据类型 %s" -#: gram.y:1370 gram.y:1385 -msgid "time zone interval must be HOUR or HOUR TO MINUTE" -msgstr "时区间隔必须为 HOUR 或者 HOUR TO MINUTE" +#: commands/indexcmds.c:1210 +#, c-format +msgid "there are multiple default operator classes for data type %s" +msgstr "数据类型 %s 有多个默认的操作符表" -#: gram.y:1390 gram.y:8280 gram.y:10731 -msgid "interval precision specified twice" -msgstr "两次指定间隔精度" +#: commands/indexcmds.c:1551 +#, c-format +msgid "table \"%s\" has no indexes" +msgstr "表 \"%s\" 没有索引" -#: gram.y:2521 -msgid "CHECK constraints cannot be deferred" -msgstr "CHECK约束不能延迟" - -#: gram.y:2610 utils/adt/ri_triggers.c:373 utils/adt/ri_triggers.c:433 -#: utils/adt/ri_triggers.c:596 utils/adt/ri_triggers.c:836 -#: utils/adt/ri_triggers.c:1024 utils/adt/ri_triggers.c:1186 -#: utils/adt/ri_triggers.c:1374 utils/adt/ri_triggers.c:1545 -#: utils/adt/ri_triggers.c:1728 utils/adt/ri_triggers.c:1899 -#: utils/adt/ri_triggers.c:2115 utils/adt/ri_triggers.c:2297 -#: utils/adt/ri_triggers.c:2500 utils/adt/ri_triggers.c:2548 -#: utils/adt/ri_triggers.c:2593 utils/adt/ri_triggers.c:2721 -msgid "MATCH PARTIAL not yet implemented" -msgstr "MATCH PARTIAL 仍未实现" +#: commands/indexcmds.c:1579 +msgid "can only reindex the currently open database" +msgstr "只能在当前打开的数据库上重建索引" -#: gram.y:2725 -msgid "CREATE TABLE AS cannot specify INTO" -msgstr "在CREATE TABLE AS中不可指定 INTO" +#: commands/indexcmds.c:1664 +#, c-format +msgid "table \"%s.%s\" was reindexed" +msgstr "表 \"%s.%s\" 已被重新索引" -#: gram.y:3395 -msgid "duplicate trigger events specified" -msgstr "重复指定触发器事件" +#: commands/view.c:143 +#, c-format +msgid "could not determine which collation to use for view column \"%s\"" +msgstr "视图中的列\"%s\"无法确定使用哪种排序规则" -#: gram.y:3564 -msgid "CREATE ASSERTION is not yet implemented" -msgstr "CREATE ASSERTION 仍未实现" +#: commands/view.c:158 +msgid "view must have at least one column" +msgstr "视图必需至少有一个字段" -#: gram.y:3580 -msgid "DROP ASSERTION is not yet implemented" -msgstr "DROP ASSERTION 仍未实现" +#: commands/view.c:283 commands/view.c:295 +msgid "cannot drop columns from view" +msgstr "无法从视图中删除列" -#: gram.y:3881 -msgid "RECHECK is no longer required" -msgstr "不再需要RECHECK选项了" +#: commands/view.c:300 +#, c-format +msgid "cannot change name of view column \"%s\" to \"%s\"" +msgstr "不能将视图字段的名称从\"%s\"改成\"%s\"" -# describe.c:289 -#: gram.y:3882 -msgid "Update your data type." -msgstr "更改您的数据类型" +#: commands/view.c:308 +#, c-format +msgid "cannot change data type of view column \"%s\" from %s to %s" +msgstr "不可以将视图字段 \"%s\" 的数据类型从%s改为%s" -#: gram.y:5421 utils/adt/regproc.c:630 -msgid "missing argument" -msgstr "缺少参数" +#: commands/view.c:447 +msgid "views must not contain SELECT INTO" +msgstr "视力中不能包含SELECT INTO" -#: gram.y:5422 utils/adt/regproc.c:631 -msgid "Use NONE to denote the missing argument of a unary operator." -msgstr "使用 NONE 表示一元操作符缺少的参数." +#: commands/view.c:451 +msgid "views must not contain data-modifying statements in WITH" +msgstr "视图不能包含修改数据的WITH子句" -#: gram.y:6357 gram.y:6363 gram.y:6369 -msgid "WITH CHECK OPTION is not implemented" -msgstr "未实现WITH CHECK OPTION" +#: commands/view.c:479 +msgid "CREATE VIEW specifies more column names than columns" +msgstr "CREATE VIEW 指定的字段名比实际字段多" -#: gram.y:7046 -msgid "column name list not allowed in CREATE TABLE / AS EXECUTE" -msgstr "字段名列表不允许在 CREATE TABLE / AS EXECUTE 中" +#: commands/view.c:487 +msgid "views cannot be unlogged because they do not have storage" +msgstr "视图无法取消事务日志,因为它们没有相应存储" -#: gram.y:7267 -msgid "number of columns does not match number of values" -msgstr "列的数量与值的数量不匹配" +#: commands/view.c:501 +#, c-format +msgid "view \"%s\" will be a temporary view" +msgstr "视图\"%s\" 将是一个临时视图." -#: gram.y:7707 -msgid "LIMIT #,# syntax is not supported" -msgstr "不支持 LIMIT #,# 语法" +#: commands/opclasscmds.c:136 commands/opclasscmds.c:1838 +#: commands/opclasscmds.c:1849 commands/opclasscmds.c:2083 +#: commands/opclasscmds.c:2094 +#, c-format +msgid "operator family \"%s\" does not exist for access method \"%s\"" +msgstr "访问方法\"%2$s\"的操作符表 \"%1$s\" 不存在" -#: gram.y:7708 -msgid "Use separate LIMIT and OFFSET clauses." -msgstr "LIMIT和OFFSET子句要分隔开" +#: commands/opclasscmds.c:271 +#, c-format +msgid "operator family \"%s\" for access method \"%s\" already exists" +msgstr "访问方法 \"%2$s\" 操作符表 \"%1$s\" 已经存在" -#: gram.y:7926 -msgid "VALUES in FROM must have an alias" -msgstr "FROM中的VALUES子句必须有一个别名" +#: commands/opclasscmds.c:408 +msgid "must be superuser to create an operator class" +msgstr "只有超级用户能创建一个操作符表" -#: gram.y:7927 -msgid "For example, FROM (VALUES ...) [AS] foo." -msgstr "例如, FROM (SELECT ...) [AS] foo." +#: 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 之间" -#: gram.y:7932 -msgid "subquery in FROM must have an alias" -msgstr "FROM 中的子查询必须有一个别名" +#: 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 之间" -#: gram.y:7933 -msgid "For example, FROM (SELECT ...) [AS] foo." -msgstr "例如, FROM (SELECT ...) [AS] foo." +#: commands/opclasscmds.c:561 +msgid "storage type specified more than once" +msgstr "存储类型指定了多次" -#: gram.y:8406 -msgid "precision for type float must be at least 1 bit" -msgstr "浮点类型的精确度必须至少 1 位" +#: commands/opclasscmds.c:589 +#, c-format +msgid "" +"storage type cannot be different from data type for access method \"%s\"" +msgstr "存储类型应该和用于访问方法 \"%s\" 数据类型一样" -#: gram.y:8415 -msgid "precision for type float must be less than 54 bits" -msgstr "浮点类型的精确度必须小于 54 位" +#: commands/opclasscmds.c:605 +#, c-format +msgid "operator class \"%s\" for access method \"%s\" already exists" +msgstr "访问方法 \"%2$s\" 操作符表 \"%1$s\" 已经存在" -#: gram.y:9121 -msgid "UNIQUE predicate is not yet implemented" -msgstr "没有实现UNIQUE谓词" +#: commands/opclasscmds.c:633 +#, c-format +msgid "could not make operator class \"%s\" be default for type %s" +msgstr "无法把操作符表 \"%s\" 设置为类型 %s 的默认操作符表" -#: gram.y:9993 -msgid "RANGE PRECEDING is only supported with UNBOUNDED" -msgstr "UNBOUNDED不支持RANGE PRECEDING" +#: commands/opclasscmds.c:636 +#, c-format +msgid "Operator class \"%s\" already is the default." +msgstr "操作符表 \"%s\" 已经是默认的了." -#: gram.y:9999 -msgid "RANGE FOLLOWING is only supported with UNBOUNDED" -msgstr "UNBOUNDED不支持RANGE FOLLOWING" +#: commands/opclasscmds.c:760 +msgid "must be superuser to create an operator family" +msgstr "只有超级用户能创建一个操作符表" -#: gram.y:10026 gram.y:10049 -msgid "frame start cannot be UNBOUNDED FOLLOWING" -msgstr "框架的起始位置不能被执行UNBOUNDED FOLLOWING操作." +#: commands/opclasscmds.c:816 +msgid "must be superuser to alter an operator family" +msgstr "只有超级用户能修改一个操作符表" -#: gram.y:10031 -msgid "frame starting from following row cannot end with current row" -msgstr "从后面记录启动的窗口框架(frame)不能以当前记录结束" +#: commands/opclasscmds.c:880 +msgid "operator argument types must be specified in ALTER OPERATOR FAMILY" +msgstr "在ALTER OPERATOR FAMILY中必须指定操作符参数类型" -#: gram.y:10054 -msgid "frame end cannot be UNBOUNDED PRECEDING" -msgstr "框架的结束位置不能被执行UNBOUNDED FOLLOWING操作." +#: commands/opclasscmds.c:944 +msgid "STORAGE cannot be specified in ALTER OPERATOR FAMILY" +msgstr "在ALTER OPERATOR FAMILY中无法指定参数STORAGE" -#: gram.y:10060 -msgid "frame starting from current row cannot have preceding rows" -msgstr "从当前记录启动的窗口框架(frame)不能拥有正在处理的记录" +#: commands/opclasscmds.c:1060 +msgid "one or two argument types must be specified" +msgstr "必须指定一个或两个参数类型" -#: gram.y:10067 -msgid "frame starting from following row cannot have preceding rows" -msgstr "从后面记录启动的窗口框架(frame)不能拥有正在处理的记录" +#: commands/opclasscmds.c:1086 +msgid "index operators must be binary" +msgstr "索引操作符必须为二进制" -#: gram.y:10706 -msgid "type modifier cannot have parameter name" -msgstr "类型修改器不能有参数名称" +#: commands/opclasscmds.c:1111 +#, c-format +msgid "access method \"%s\" does not support ordering operators" +msgstr "访问方法 \"%s\" 不支持排序操作符" -#: gram.y:11303 gram.y:11511 -msgid "improper use of \"*\"" -msgstr "对\"*\"的使用不正确" +#: commands/opclasscmds.c:1124 +msgid "index search operators must return boolean" +msgstr "索引搜索操作符必须返回布尔值" -#: gram.y:11442 -msgid "wrong number of parameters on left side of OVERLAPS expression" -msgstr "OVERLAPS 表达式左边的参数个数不对" +#: commands/opclasscmds.c:1163 +msgid "btree procedures must have two arguments" +msgstr "btree 过程必须有两个参数" -#: gram.y:11449 -msgid "wrong number of parameters on right side of OVERLAPS expression" -msgstr "OVERLAPS 表达式右边的参数个数不对" +#: commands/opclasscmds.c:1167 +msgid "btree procedures must return integer" +msgstr "btree 过程必须返回整数" -#: gram.y:11574 -msgid "multiple ORDER BY clauses not allowed" -msgstr "不允许多个 ORDER BY 子句" +#: commands/opclasscmds.c:1182 +msgid "hash procedures must have one argument" +msgstr "哈希存储过程必须有一个参数" -#: gram.y:11585 -msgid "multiple OFFSET clauses not allowed" -msgstr "不允许多个 OFFSET 子句" +#: commands/opclasscmds.c:1186 +msgid "hash procedures must return integer" +msgstr "哈希存储过程必须返回整数" -#: gram.y:11594 -msgid "multiple LIMIT clauses not allowed" -msgstr "不允许多个 LIMIT 子句" +#: commands/opclasscmds.c:1211 +msgid "associated data types must be specified for index support procedure" +msgstr "必须为索引支持的存储过程指定相关联的数据类型" -#: gram.y:11603 -msgid "multiple WITH clauses not allowed" -msgstr "不允许使用多个WITH子句" +#: commands/opclasscmds.c:1237 +#, c-format +msgid "procedure number %d for (%s,%s) appears more than once" +msgstr "对于(%2$s,%3$s)的存储过程号%1$d出现了多次 " -#: gram.y:11757 -msgid "OUT and INOUT arguments aren't allowed in TABLE functions" -msgstr "在TABLE函数中不允许使用OUT或INOUT模式的参数" +#: commands/opclasscmds.c:1244 +#, c-format +msgid "operator number %d for (%s,%s) appears more than once" +msgstr "对于(%2$s,%3$s)操作符号%1$d出现过多次" -#: scan.l:411 -msgid "unterminated /* comment" -msgstr "/* 注释没有结束" +#: commands/opclasscmds.c:1293 +#, c-format +msgid "operator %d(%s,%s) already exists in operator family \"%s\"" +msgstr "在操作符表\"%4$s\"中已存在操作符 %1$d(%2$s,%3$s)" -#: scan.l:440 -msgid "unterminated bit string literal" -msgstr "未结束的bit字符串常量" +#: commands/opclasscmds.c:1406 +#, c-format +msgid "function %d(%s,%s) already exists in operator family \"%s\"" +msgstr "在操作符表\"%4$s\"中已存在函数 %1$d(%2$s,%3$s)" -#: scan.l:461 -msgid "unterminated hexadecimal string literal" -msgstr "未结束的16进制字符串常量" +#: commands/opclasscmds.c:1493 +#, c-format +msgid "operator %d(%s,%s) does not exist in operator family \"%s\"" +msgstr "在操作符表\"%4$s\"中不存在操作符 %1$d(%2$s,%3$s)" -#: scan.l:511 -msgid "unsafe use of string constant with Unicode escapes" -msgstr "这种使用带有Unicode转义字符的字符串常量的方法不安全." +#: commands/opclasscmds.c:1533 +#, c-format +msgid "function %d(%s,%s) does not exist in operator family \"%s\"" +msgstr "在操作符表\"%4$s\"中不存在函数 %1$d(%2$s,%3$s)" -#: scan.l:512 +#: commands/opclasscmds.c:1618 +#, c-format msgid "" -"String constants with Unicode escapes cannot be used when " -"standard_conforming_strings is off." -msgstr "" -"当参数standard_conforming_strings处于关闭状态时,无法使用带有Unicode转义字符" -"的字符串常量." +"operator family \"%s\" does not exist for access method \"%s\", skipping" +msgstr "访问方法\"%2$s\"的操作符表 \"%1$s\" 不存在, 跳过" -#: 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)" +#: commands/opclasscmds.c:1778 +#, c-format +msgid "" +"operator class \"%s\" for access method \"%s\" already exists in schema \"%s" +"\"" +msgstr "访问方法 \"%s\" 的操作符表 \"%s\" 已经在模式 \"%s\" 存在了" -#: scan.l:586 -msgid "invalid Unicode escape" -msgstr "无效的Unicode转义字符" +#: commands/opclasscmds.c:1867 +#, c-format +msgid "" +"operator family \"%s\" for access method \"%s\" already exists in schema \"%s" +"\"" +msgstr "对于访问方法 \"%2$s\" 的操作符表 \"%1$s\" 已经在模式 \"%3$s\" 存在了" -#: scan.l:587 -msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX." -msgstr "Unicode转义字符必须是\\uXXXX或\\UXXXXXXXX." +#: commands/extension.c:149 commands/extension.c:2685 +#, c-format +msgid "extension \"%s\" does not exist" +msgstr "扩展 \"%s\" 不存在" -#: scan.l:598 -msgid "unsafe use of \\' in a string literal" -msgstr "在字符串常量中使用\\不安全" +#: commands/extension.c:248 commands/extension.c:257 commands/extension.c:269 +#: commands/extension.c:279 +#, c-format +msgid "invalid extension name: \"%s\"" +msgstr "无效扩展名: \"%s\"" -#: scan.l:599 -msgid "" -"Use '' to write quotes in strings. \\' is insecure in client-only encodings." -msgstr "使用''在字符串中表示引号,在只有客户端使用的编码中使用\\'不安全." +#: commands/extension.c:249 +msgid "Extension names must not be empty." +msgstr "扩展名不能为空." -#: scan.l:629 -msgid "unterminated quoted string" -msgstr "未结束的引用字符串" +#: commands/extension.c:258 +msgid "Extension names must not contain \"--\"." +msgstr "扩展名不能包含\"--\"." -#: scan.l:674 -msgid "unterminated dollar-quoted string" -msgstr "未结束的用$符号引用的字符串" +#: commands/extension.c:270 +msgid "Extension names must not begin or end with \"-\"." +msgstr "扩展名不能以 \"-\"作为开始或结束符." -#: scan.l:691 scan.l:703 scan.l:717 -msgid "zero-length delimited identifier" -msgstr "长度为0的分隔标示符" +#: commands/extension.c:280 +msgid "Extension names must not contain directory separator characters." +msgstr "扩展名不能包含目录分隔符." -#: scan.l:730 -msgid "unterminated quoted identifier" -msgstr "未结束的引用标识符" +#: commands/extension.c:295 commands/extension.c:304 commands/extension.c:313 +#: commands/extension.c:323 +#, c-format +msgid "invalid extension version name: \"%s\"" +msgstr "无效的扩展版本名: \"%s\"" -#: scan.l:834 -msgid "operator too long" -msgstr "操作符太长" +#: commands/extension.c:296 +msgid "Version names must not be empty." +msgstr "版本名不能为空." -#. translator: %s is typically the translation of "syntax error" -#: scan.l:992 +#: commands/extension.c:305 +msgid "Version names must not contain \"--\"." +msgstr "版本名不能包含\"--\"." + +#: commands/extension.c:314 +msgid "Version names must not begin or end with \"-\"." +msgstr "版本名不能以 \"-\"作为开始或结束符." + +#: commands/extension.c:324 +msgid "Version names must not contain directory separator characters." +msgstr "版本名不能包含目录分隔符." + +#: commands/extension.c:474 #, c-format -msgid "%s at end of input" -msgstr "%s 在输入的末尾" +msgid "could not open extension control file \"%s\": %m" +msgstr "无法打开扩展控制文件 \"%s\": %m" -#. translator: first %s is typically the translation of "syntax error" -#: scan.l:1000 +#: commands/extension.c:495 commands/extension.c:505 #, c-format -msgid "%s at or near \"%s\"" -msgstr "%s 在 \"%s\" 或附近的" +msgid "parameter \"%s\" cannot be set in a secondary extension control file" +msgstr "第二扩展控制文件中, 无法设置参数 \"%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时,无法为在007F以上的码点值使用Unicode转义值." +#: commands/extension.c:544 +#, c-format +msgid "\"%s\" is not a valid encoding name" +msgstr "\"%s\" 是一个无效编码名" -#: scan.l:1189 scan.l:1325 -msgid "invalid Unicode escape value" -msgstr "无效的Unicode转义值" +#: commands/extension.c:558 +#, c-format +msgid "parameter \"%s\" must be a list of extension names" +msgstr "参数 \"%s\"必须是一个包含扩展名的列表" -#: scan.l:1214 -msgid "invalid Unicode escape character" -msgstr "无效Unicode转义字符" +#: commands/extension.c:565 +#, c-format +msgid "unrecognized parameter \"%s\" in file \"%s\"" +msgstr "文件\"%2$s\"中出现未识别的参数 \"%1$s\"" -#: scan.l:1381 -msgid "nonstandard use of \\' in a string literal" -msgstr "在字符串常量中以不标准的方法使用\\'" +#: commands/extension.c:574 +msgid "parameter \"schema\" cannot be specified when \"relocatable\" is true" +msgstr "当\"relocatable\"为真时,参数\"schema\"不允许被指定" -#: scan.l:1382 +#: commands/extension.c:726 msgid "" -"Use '' to write quotes in strings, or use the escape string syntax (E'...')." -msgstr "使用''或者转义字符串语法(E'...')将字符串引起来." +"transaction control statements are not allowed within an extension script" +msgstr "扩展脚本中不允许出现事务控制语句" -#: scan.l:1391 -msgid "nonstandard use of \\\\ in a string literal" -msgstr "在字符串常量中以不标准的方法使用\\\\ " +#: commands/extension.c:794 +#, c-format +msgid "permission denied to create extension \"%s\"" +msgstr "创建扩展 \"%s\" 权限不够" -#: scan.l:1392 -msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'." -msgstr "为反斜线使用转移字符串语法,例如.,E'\\\\'." +#: commands/extension.c:796 +msgid "Must be superuser to create this extension." +msgstr "只有超级用户能创建扩展." -#: scan.l:1406 -msgid "nonstandard use of escape in a string literal" -msgstr "在字符串常量中以不标准的方法使用转义字符" +#: commands/extension.c:800 +#, c-format +msgid "permission denied to update extension \"%s\"" +msgstr "更新扩展 \"%s\" 权限不够" -#: scan.l:1407 -msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'." -msgstr "对转移字符使用转义字符串语法,例如 E'\\r\\n'." +#: commands/extension.c:802 +msgid "Must be superuser to update this extension." +msgstr "只有超级用户能更新扩展." -#: port/win32/security.c:43 +#: commands/extension.c:1084 #, c-format -msgid "could not open process token: error code %d\n" -msgstr "无法打开进程令牌 (token): 错误码 %d\n" +msgid "" +"extension \"%s\" has no update path from version \"%s\" to version \"%s\"" +msgstr "扩展 \"%s\" 没有从版本\"%s\"到版本\"%s\"的更新路径" -#: port/win32/security.c:63 +#: commands/extension.c:1211 #, c-format -msgid "could not get SID for Administrators group: error code %d\n" -msgstr "无法获取管理员组的 SID: 错误码 %d\n" +msgid "extension \"%s\" already exists, skipping" +msgstr "扩展 \"%s\" 已经存在,跳过" -#: port/win32/security.c:72 +#: commands/extension.c:1218 #, c-format -msgid "could not get SID for PowerUsers group: error code %d\n" -msgstr "无法获取超级用户组的 SID: 错误码 %d\n" +msgid "extension \"%s\" already exists" +msgstr "扩展 \"%s\" 已经存在" -#: port/win32/signal.c:189 -#, c-format -msgid "could not create signal listener pipe for pid %d: error code %d" -msgstr "无法为进程 (pid) %d 创建信号监听管道: 错误码为 %d" +#: commands/extension.c:1229 +msgid "nested CREATE EXTENSION is not supported" +msgstr "不支持嵌套的CREATE EXTENSION" -#: 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 "无法创建信号监听管道: 错误码 %d; 重试\n" +#: commands/extension.c:1284 commands/extension.c:2745 +msgid "version to install must be specified" +msgstr "必须指定安装版本" -#: port/win32/signal.c:312 +#: commands/extension.c:1301 #, c-format -msgid "could not create signal dispatch thread: error code %d\n" -msgstr "无法创建信号发送线程: 错误码 %d\n" +msgid "FROM version must be different from installation target version \"%s\"" +msgstr "FROM 版本与安装的目标版本 \"%s\" 必须不同" -#: port/win32_shmem.c:168 port/win32_shmem.c:203 port/win32_shmem.c:224 +#: commands/extension.c:1356 #, c-format -msgid "could not create shared memory segment: %lu" -msgstr "无法创建共享内存段: %lu" +msgid "extension \"%s\" must be installed in schema \"%s\"" +msgstr "扩展\"%s\"已经安装到模式\"%s\"中了" -#: port/win32_shmem.c:169 +#: commands/extension.c:1435 commands/extension.c:2886 #, c-format -msgid "Failed system call was CreateFileMapping(size=%lu, name=%s)." -msgstr "系统调用CreateFileMapping(size=%lu, name=%s)执行失败." +msgid "required extension \"%s\" is not installed" +msgstr "所需要的扩展\"%s\"没被安装" -#: port/win32_shmem.c:193 -msgid "pre-existing shared memory block is still in use" -msgstr "已存在的共享内存块仍在使用中" +#: commands/extension.c:1596 commands/extension.c:2484 +#: catalog/objectaddress.c:289 +msgid "extension name cannot be qualified" +msgstr "扩展名不合格" -#: port/win32_shmem.c:194 -msgid "" -"Check if there are any old server processes still running, and terminate " -"them." -msgstr "检查原先的服务器进程是否仍在运行,如果是的话请终止这些进程." +#: commands/extension.c:1604 +#, c-format +msgid "extension \"%s\" does not exist, skipping" +msgstr "扩展 \"%s\" 不存在,跳过" -#: port/win32_shmem.c:204 -msgid "Failed system call was DuplicateHandle." -msgstr "系统调用DuplicateHandle执行失败" +#: commands/extension.c:1659 +#, c-format +msgid "cannot drop extension \"%s\" because it is being modified" +msgstr "无法删除扩展\"%s\",因为它正被修改中" -#: port/win32_shmem.c:225 -msgid "Failed system call was MapViewOfFileEx." -msgstr "系统调用MapViewOfFileEx执行失败." +#: commands/extension.c:2130 +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脚本里调用" -#: port/sysv_sema.c:114 port/pg_sema.c:114 +#: commands/extension.c:2142 #, c-format -msgid "could not create semaphores: %m" -msgstr "无法创建信号量: %m" +msgid "OID %u does not refer to a table" +msgstr "OID %u没有引用任何表" -#: port/sysv_sema.c:115 port/pg_sema.c:115 +#: commands/extension.c:2147 #, c-format -msgid "Failed system call was semget(%lu, %d, 0%o)." -msgstr "semget(%lu, %d, 0%o) 系统调用失败." +msgid "table \"%s\" is not a member of the extension being created" +msgstr "表\"%s\"不是被创建的任何一个扩展的成员" -#: port/sysv_sema.c:119 port/pg_sema.c:119 +#: commands/extension.c:2511 #, 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表示)的限制.您需要增加这两个系统核心参数" -"的值。另外也可以通过i减小PostgreSQL参数max_connections(当前是%d)来减少它所消" -"耗的信号灯总数.\n" -"在PostgreSQL文档中包含了更多关于如何配置PostgreSQL的信息。" +"cannot move extension \"%s\" into schema \"%s\" because the extension " +"contains the schema" +msgstr "不能将扩展 \"%s\" 转移到模式 \"%s\" 里,因为该扩展已经拥有该模式" -#: port/sysv_sema.c:148 port/pg_sema.c:148 +#: commands/extension.c:2551 commands/extension.c:2614 #, 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 文档." +msgid "extension \"%s\" does not support SET SCHEMA" +msgstr "扩展 \"%s\" 不支持SET SCHEMA操作" -#: port/sysv_shmem.c:147 port/pg_shmem.c:147 +#: commands/extension.c:2616 #, c-format -msgid "could not create shared memory segment: %m" -msgstr "无法创建共享内存段: %m" +msgid "%s is not in the extension's schema \"%s\"" +msgstr "扩展模式\"%2$s\"中不存在%1$s" -#: port/sysv_shmem.c:148 port/pg_shmem.c:148 +#: commands/extension.c:2665 +msgid "nested ALTER EXTENSION is not supported" +msgstr "不支持使用嵌套的ALTER EXTENSION" + +#: commands/extension.c:2756 #, c-format -msgid "Failed system call was shmget(key=%lu, size=%lu, 0%o)." -msgstr "系统调用shmget(key=%lu, size=%lu, 0%o) 执行失败." +msgid "version \"%s\" of extension \"%s\" is already installed" +msgstr "扩展\"%2$s\"的版本\"%1$s\"已经安装" -#: port/sysv_shmem.c:152 port/pg_shmem.c:152 +#: commands/extension.c:2979 catalog/pg_depend.c:164 #, 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_buffers " -"parameter (currently %d) and/or its max_connections parameter (currently %" -"d).\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" -"(当前是%d)和参数max_connections(当前是%d).\n" -"如果所请求的共享内存已经很小了,那么可能的原因是所请求的大小小于内核参数" -"SHMMIN,在这种情况下需要增大所请求的共享内存或者重新配置SHMMIN.\n" -"更多关于配置共享内存的信息包含在PostgreSQL文档中." +msgid "%s is already a member of extension \"%s\"" +msgstr "\"%s\" 已经是扩展\"%s\"的成员" -#: port/sysv_shmem.c:165 port/pg_shmem.c:165 +#: commands/extension.c:2991 #, 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_buffers parameter (currently %d) and/or " -"its max_connections parameter (currently %d).\n" -"The PostgreSQL documentation contains more information about shared memory " -"configuration." -msgstr "" -"这个错误通常表示PostgreSQL所请求的共享内存段超过了可用内存总量或者交换空间," -"或者超过了内核中设定的SHMALL参数值。您可以减小所请求的值或者重新将内核中的" -"SHMALL参数配置一个较大的值 为减少所请求空间的大小(当前是%lu字节),请减少参数" -"shared_buffers(当前是%d字节)和参数max_connections(当前是%d).\n" -"PostgreSQL文档包含了关于如何配置共享内存的更多信息." +"cannot add schema \"%s\" to extension \"%s\" because the schema contains the " +"extension" +msgstr "无法为扩展\"%2$s\"添加模式\"%1$s\",因为该模式已经包含此扩展" -#: port/sysv_shmem.c:176 port/pg_shmem.c:176 +#: commands/extension.c:3009 #, 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), by reducing its shared_buffers parameter (currently %" -"d) and/or its max_connections parameter (currently %d).\n" -"The PostgreSQL documentation contains more information about shared memory " -"configuration." +msgid "%s is not a member of extension \"%s\"" msgstr "" -"这个错误不表示您系统上磁盘空间已经用尽.原因既有可能是系统上所有的有效共享内存" -"ID不存在了,这样需要在内核中升高SHMMNI参数的值,或者是因为已到达系统最大的共" -"享内存限制.如果无法增加共享内存的上限值,请通过减少参数shared_buffers(当前是%" -"2$d字节)和参数max_connections(当前是%3$d)来减少PostgreSQL占有的共享内存(当前" -"是%1$lu字节).在PostgreSQL文档中包含了关于如何配置共享内存的更多信息." -#: port/sysv_shmem.c:431 port/pg_shmem.c:431 +#: commands/collationcmds.c:81 #, c-format -msgid "could not stat data directory \"%s\": %m" -msgstr "无法取目录 \"%s\" 状态: %m" +msgid "collation attribute \"%s\" not recognized" +msgstr "无法识别排序规则属性 \"%s\"" -#: port/win32_sema.c:94 -#, c-format -msgid "could not create semaphore: error code %d" -msgstr "无法创建信号量: 错误代码 %d" +#: commands/collationcmds.c:126 +msgid "parameter \"lc_collate\" must be specified" +msgstr "参数\"lc_collate\" 必须指定" -#: port/win32_sema.c:161 -#, c-format -msgid "could not lock semaphore: error code %d" -msgstr "无法锁定信号灯(semaphore): 错误代码%d" +#: commands/collationcmds.c:131 +msgid "parameter \"lc_ctype\" must be specified" +msgstr "参数\"lc_ctype\"必须指定" -#: port/win32_sema.c:174 +#: commands/collationcmds.c:177 #, c-format -msgid "could not unlock semaphore: error code %d" -msgstr "无法对信号灯(semaphore)解锁: 错误代码 %d" +msgid "collation \"%s\" does not exist, skipping" +msgstr "排序规则 \"%s\" 不存在,跳过" -#: port/win32_sema.c:203 +#: commands/collationcmds.c:237 commands/collationcmds.c:416 #, c-format -msgid "could not try-lock semaphore: error code %d" -msgstr "无法进行锁定信号灯(semaphore)的尝试: 错误代码 %d" +msgid "collation \"%s\" for encoding \"%s\" already exists in schema \"%s\"" +msgstr "在模式\"%3$s\"中已经存在对应于编码\"%2$s\"的排序规则\"%1$s\"" -#: postmaster/autovacuum.c:359 +#: commands/collationcmds.c:249 commands/collationcmds.c:428 #, c-format -msgid "could not fork autovacuum launcher process: %m" -msgstr "无法派生autovacuum启动进程: %m" - -#: postmaster/autovacuum.c:404 -msgid "autovacuum launcher started" -msgstr "已启动autovacuum" - -#: postmaster/autovacuum.c:760 -msgid "autovacuum launcher shutting down" -msgstr "正在关闭autovacuum启动进程" +msgid "collation \"%s\" already exists in schema \"%s\"" +msgstr "在模式\"%2$s\"中已经存在排序规则\"%1$s\"" -#: postmaster/autovacuum.c:1394 +#: commands/comment.c:97 commands/seclabel.c:113 #, c-format -msgid "could not fork autovacuum worker process: %m" -msgstr "无法派生autovacuum工作进程: %m" +msgid "\"%s\" is not a table, view, composite type, or foreign table" +msgstr "\"%s\" 不是一个表,视图,组合类型或者外部表" -#: postmaster/autovacuum.c:1595 +#: 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 "autovacuum: processing database \"%s\"" -msgstr "autovacuum: 正在处理数据库 \"%s\"" +msgid "could not create directory \"%s\": %m" +msgstr "无法创建目录 \"%s\": %m" -#: postmaster/autovacuum.c:1976 +#: commands/tablespace.c:205 #, c-format -msgid "autovacuum: dropping orphan temp table \"%s\".\"%s\" in database \"%s\"" -msgstr "autovacuum: 正在数据库\"%3$s\"中删除遗留的临时表\"%1$s\".\"%2$s\"" +msgid "could not stat directory \"%s\": %m" +msgstr "无法取目录 \"%s\" 状态: %m" -#: postmaster/autovacuum.c:1988 +#: commands/tablespace.c:214 #, c-format -msgid "autovacuum: found orphan temp table \"%s\".\"%s\" in database \"%s\"" -msgstr "autovacuum: 在数据库\"%3$s\"中找到遗留的临时表\"%1$s\".\"%2$s\"" +msgid "\"%s\" exists but is not a directory" +msgstr "\"%s\" 存在, 但不是一个目录" -#: postmaster/autovacuum.c:2249 +#: commands/tablespace.c:244 #, c-format -msgid "automatic vacuum of table \"%s.%s.%s\"" -msgstr "对表\"%s.%s.%s\"进行自动清理" +msgid "permission denied to create tablespace \"%s\"" +msgstr "创建表空间 \"%s\" 权限不够" -#: postmaster/autovacuum.c:2252 -#, c-format -msgid "automatic analyze of table \"%s.%s.%s\"" -msgstr "对表\"%s.%s.%s\"进行自动分析" +#: commands/tablespace.c:246 +msgid "Must be superuser to create a tablespace." +msgstr "只有超级用户能创建表空间" -#: postmaster/autovacuum.c:2720 -msgid "autovacuum not started because of misconfiguration" -msgstr "因为配制错误,而无法启动autovacuum" +#: commands/tablespace.c:262 +msgid "tablespace location cannot contain single quotes" +msgstr "表空间路径不能包含单引号" -#: postmaster/autovacuum.c:2721 -msgid "Enable the \"track_counts\" option." -msgstr "启用选项\"track_counts\" " +#: commands/tablespace.c:272 +msgid "tablespace location must be an absolute path" +msgstr "表空间路径必须为绝对路径" -#: postmaster/bgwriter.c:472 +#: commands/tablespace.c:283 #, 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/bgwriter.c:476 -msgid "" -"Consider increasing the configuration parameter \"checkpoint_segments\"." -msgstr "认为增加配置参数 \"checkpoint_segments\"." +msgid "tablespace location \"%s\" is too long" +msgstr "表空间路径 \"%s\" 太长" -#: postmaster/bgwriter.c:588 +#: commands/tablespace.c:293 commands/tablespace.c:853 #, c-format -msgid "transaction log switch forced (archive_timeout=%d)" -msgstr "强制切换事务日志 (archive_timeout=%d)" - -#: postmaster/bgwriter.c:1044 -msgid "checkpoint request failed" -msgstr "检查点请求失败" +msgid "unacceptable tablespace name \"%s\"" +msgstr "不可访问的表空间名字 \"%s\"" -#: postmaster/bgwriter.c:1045 -msgid "Consult recent messages in the server log for details." -msgstr "详细信息请参考服务器日志." +#: commands/tablespace.c:295 commands/tablespace.c:854 +msgid "The prefix \"pg_\" is reserved for system tablespaces." +msgstr "前缀 \"pg_\" 是保留给系统表空间的." -#: postmaster/pgarch.c:158 +#: commands/tablespace.c:305 commands/tablespace.c:866 #, c-format -msgid "could not fork archiver: %m" -msgstr "无法 fork archiver: %m" +msgid "tablespace \"%s\" already exists" +msgstr "表空间 \"%s\" 已经存在" -#: postmaster/pgarch.c:450 -msgid "archive_mode enabled, yet archive_command is not set" -msgstr "已启用归档模式参数archive_mode,但是还没有设置参数archive_command is" +#: commands/tablespace.c:377 commands/tablespace.c:529 +#: replication/basebackup.c:150 replication/basebackup.c:676 +msgid "tablespaces are not supported on this platform" +msgstr "在此平台上不支持表空间" -#: postmaster/pgarch.c:465 +#: commands/tablespace.c:415 commands/tablespace.c:837 +#: commands/tablespace.c:904 commands/tablespace.c:1009 +#: commands/tablespace.c:1075 commands/tablespace.c:1213 +#: commands/tablespace.c:1413 #, c-format -msgid "transaction log file \"%s\" could not be archived: too many failures" -msgstr "事务日志文件 \"%s\" 无法归档: 失败次数太多" +msgid "tablespace \"%s\" does not exist" +msgstr "表空间 \"%s\" 不存在" -#: postmaster/pgarch.c:568 +#: commands/tablespace.c:421 #, c-format -msgid "archive command failed with exit code %d" -msgstr "归档命令执行失败,退出代码为 %d" +msgid "tablespace \"%s\" does not exist, skipping" +msgstr "表空间 \"%s\" 不存在,跳过" -#: postmaster/pgarch.c:570 postmaster/pgarch.c:580 postmaster/pgarch.c:587 -#: postmaster/pgarch.c:593 postmaster/pgarch.c:602 +#: commands/tablespace.c:486 #, c-format -msgid "The failed archive command was: %s" -msgstr "执行失败的归档命令是: %s" +msgid "tablespace \"%s\" is not empty" +msgstr "表空间 \"%s\" 不是空的" -#: postmaster/pgarch.c:577 +#: commands/tablespace.c:560 #, c-format -msgid "archive command was terminated by exception 0x%X" -msgstr "归档命令被异常 0x%X 终止" +msgid "directory \"%s\" does not exist" +msgstr "目录 \"%s\" 不存在" -#: postmaster/pgarch.c:579 postmaster/postmaster.c:2835 -msgid "" -"See C include file \"ntstatus.h\" for a description of the hexadecimal value." -msgstr "关于对16进制值的描述, 参见C语言的引用文件 \"ntstatus.h\" " +#: commands/tablespace.c:561 +msgid "Create this directory for the tablespace before restarting the server." +msgstr "在重新启动服务器前为这个表空间创建该目录." -#: postmaster/pgarch.c:584 +#: commands/tablespace.c:566 #, c-format -msgid "archive command was terminated by signal %d: %s" -msgstr "归档命令被信号%d终止:%s" +msgid "could not set permissions on directory \"%s\": %m" +msgstr "无法为目录 \"%s\" 的设置权限: %m" -#: postmaster/pgarch.c:591 +#: commands/tablespace.c:598 #, 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" +msgid "directory \"%s\" already in use as a tablespace" +msgstr "目录 \"%s\" 以一个表空间的形式正在使用" -#: postmaster/pgarch.c:612 +#: commands/tablespace.c:613 commands/tablespace.c:774 #, c-format -msgid "archived transaction log file \"%s\"" -msgstr "归档事务日志文件 \"%s\"" +msgid "could not remove symbolic link \"%s\": %m" +msgstr "无法删除符号链接 \"%s\": %m" -#: postmaster/pgarch.c:661 +#: commands/tablespace.c:623 #, c-format -msgid "could not open archive status directory \"%s\": %m" -msgstr "无法打开归档状态目录 \"%s\": %m" +msgid "could not create symbolic link \"%s\": %m" +msgstr "无法创建符号链接 \"%s\": %m" -#: postmaster/pgstat.c:328 +#: commands/tablespace.c:729 commands/tablespace.c:742 +#: commands/tablespace.c:766 #, c-format -msgid "could not resolve \"localhost\": %s" -msgstr "无法解析 \"localhost\": %s" - -#: postmaster/pgstat.c:351 -msgid "trying another address for the statistics collector" -msgstr "为统计信息收集器尝试另一个地址" +msgid "could not remove directory \"%s\": %m" +msgstr "无法删除目录 \"%s\": %m" -#: postmaster/pgstat.c:360 +#: commands/tablespace.c:1080 #, c-format -msgid "could not create socket for statistics collector: %m" -msgstr "无法为统计收集器创建套接字: %m" +msgid "Tablespace \"%s\" does not exist." +msgstr "表空间 \"%s\" 不存在." -#: postmaster/pgstat.c:372 +#: commands/tablespace.c:1512 #, c-format -msgid "could not bind socket for statistics collector: %m" -msgstr "无法绑定统计收集器的套接字: %m" +msgid "directories for tablespace %u could not be removed" +msgstr "表空间 %u 的目录不能被移除" -#: postmaster/pgstat.c:383 -#, c-format -msgid "could not get address of socket for statistics collector: %m" -msgstr "无法获得统计收集器的套接字地址: %m" +#: commands/tablespace.c:1514 +msgid "You can remove the directories manually if necessary." +msgstr "如有必要您可以手动移除这些目录." -#: postmaster/pgstat.c:399 +#: commands/schemacmds.c:82 commands/schemacmds.c:275 #, c-format -msgid "could not connect socket for statistics collector: %m" -msgstr "无法联接统计收集器的套接字: %m" +msgid "unacceptable schema name \"%s\"" +msgstr "不可访问的模式名字 \"%s\"" -#: postmaster/pgstat.c:420 -#, c-format -msgid "could not send test message on socket for statistics collector: %m" -msgstr "无法为统计收集器在套接字上发送测试信息: %m" +#: commands/schemacmds.c:83 commands/schemacmds.c:276 +msgid "The prefix \"pg_\" is reserved for system schemas." +msgstr "前缀 \"pg_\" 是保留给系统模式的." + +#: commands/schemacmds.c:178 catalog/objectaddress.c:298 +msgid "schema name cannot be qualified" +msgstr "不能限定模式名称" -#: postmaster/pgstat.c:446 postmaster/pgstat.c:2909 +#: commands/schemacmds.c:186 #, c-format -msgid "select() failed in statistics collector: %m" -msgstr "在统计收集器中 select() 失败: %m" +msgid "schema \"%s\" does not exist, skipping" +msgstr "模式 \"%s\" 不存在" -#: postmaster/pgstat.c:461 -msgid "test message did not get through on socket for statistics collector" -msgstr "统计收集器的测试信息没有通过套接字: %m" +#: commands/schemacmds.c:253 commands/schemacmds.c:322 +#: catalog/namespace.c:2610 catalog/namespace.c:3599 catalog/namespace.c:3602 +#, c-format +msgid "schema \"%s\" does not exist" +msgstr "模式 \"%s\" 不存在" -#: postmaster/pgstat.c:476 +#: commands/schemacmds.c:259 catalog/pg_namespace.c:60 #, c-format -msgid "could not receive test message on socket for statistics collector: %m" -msgstr "无法为统计收集器在套接字上接收测试信息: %m" +msgid "schema \"%s\" already exists" +msgstr "模式 \"%s\" 已经存在" -#: postmaster/pgstat.c:486 -msgid "incorrect test message transmission on socket for statistics collector" -msgstr "统计收集器在套接字上不正确的测试信息 transmission: %m" +#: commands/seclabel.c:58 +msgid "no security label providers have been loaded" +msgstr "没有安全标签提供者被加载" + +#: commands/seclabel.c:62 +msgid "" +"must specify provider when multiple security label providers have been loaded" +msgstr "当多个安全提供者已经加载时,必须指定提供者" -#: postmaster/pgstat.c:509 +#: commands/seclabel.c:80 #, c-format -msgid "could not set statistics collector socket to nonblocking mode: %m" -msgstr "无法把统计收集器的套接字设置为非阻塞模式: %m" +msgid "security label provider \"%s\" is not loaded" +msgstr "安装标签提供者\"%s\"没有加载" -#: postmaster/pgstat.c:519 -msgid "disabling statistics collector for lack of working socket" -msgstr "当缺乏可用套接字时取消统计收集器" +#: commands/portalcmds.c:61 commands/portalcmds.c:160 +#: commands/portalcmds.c:212 +msgid "invalid cursor name: must not be empty" +msgstr "无效的游标名称: 不能为空" + +#: commands/portalcmds.c:413 +msgid "could not reposition held cursor" +msgstr "无法定位游标" -#: postmaster/pgstat.c:621 +#: commands/aggregatecmds.c:103 #, c-format -msgid "could not fork statistics collector: %m" -msgstr "无法派生 (fork) 统计收集器: %m" +msgid "aggregate attribute \"%s\" not recognized" +msgstr "聚集属性 \"%s\" 不被认可" -#: postmaster/pgstat.c:1151 postmaster/pgstat.c:1175 postmaster/pgstat.c:1206 -msgid "must be superuser to reset statistics counters" -msgstr "必须为超级用户才可以重置统计计数器" +#: commands/aggregatecmds.c:113 +msgid "aggregate stype must be specified" +msgstr "聚集 stype 必须指定" -#: postmaster/pgstat.c:1182 -#, c-format -msgid "unrecognized reset target: \"%s\"" -msgstr "未识别的重置目标:\"%s\"" +#: commands/aggregatecmds.c:117 +msgid "aggregate sfunc must be specified" +msgstr "聚集 sfunc 必须指定" -#: postmaster/pgstat.c:1183 -msgid "Target must be \"bgwriter\"." -msgstr "目标必须是\"bgwriter\"." +#: commands/aggregatecmds.c:134 +msgid "aggregate input type must be specified" +msgstr "必须指定聚合函数的输入参数类型" -#: postmaster/pgstat.c:2888 -#, c-format -msgid "poll() failed in statistics collector: %m" -msgstr "在统计收集器中执行poll()失败: %m" +#: commands/aggregatecmds.c:159 +msgid "basetype is redundant with aggregate input type specification" +msgstr "如果带有聚合函数输入类型定义,那么基类型定义就是冗余的." -#: postmaster/pgstat.c:2933 +#: commands/aggregatecmds.c:191 #, c-format -msgid "could not read statistics message: %m" -msgstr "无法读取统计信息: %m" +msgid "aggregate transition data type cannot be %s" +msgstr "聚集转换数据类型不能为 %s" -#: postmaster/pgstat.c:3190 +#: commands/aggregatecmds.c:230 #, c-format -msgid "could not open temporary statistics file \"%s\": %m" -msgstr "无法打开临时统计文件 \"%s\": %m" +msgid "aggregate %s(%s) does not exist, skipping" +msgstr "聚合函数 %s(%s) 不存在,跳过" -#: postmaster/pgstat.c:3262 -#, c-format -msgid "could not write temporary statistics file \"%s\": %m" -msgstr "无法写临时统计文件 \"%s\": %m" +#: commands/user.c:143 +msgid "SYSID can no longer be specified" +msgstr "不能再指定SYSID" -#: postmaster/pgstat.c:3271 -#, c-format -msgid "could not close temporary statistics file \"%s\": %m" -msgstr "无法关闭临时统计文件 \"%s\": %m" +#: commands/user.c:284 +msgid "must be superuser to create superusers" +msgstr "只有超级用户能创建另一个超级用户" -#: postmaster/pgstat.c:3279 -#, c-format -msgid "could not rename temporary statistics file \"%s\" to \"%s\": %m" -msgstr "无法把临时统计文件 \"%s\" 重命名为 \"%s\": %m" +#: commands/user.c:291 +msgid "must be superuser to create replication users" +msgstr "只有超级用户能创建复制用户" -#: postmaster/pgstat.c:3379 postmaster/pgstat.c:3608 +#: commands/user.c:298 +msgid "permission denied to create role" +msgstr "创建角色的权限不够" + +#: commands/user.c:305 commands/user.c:1087 #, c-format -msgid "could not open statistics file \"%s\": %m" -msgstr "无法打开统计文件 \"%s\": %m" +msgid "role name \"%s\" is reserved" +msgstr "角色名称 \"%s\" 被保留了" -#: postmaster/pgstat.c:3391 postmaster/pgstat.c:3401 postmaster/pgstat.c:3423 -#: postmaster/pgstat.c:3438 postmaster/pgstat.c:3501 postmaster/pgstat.c:3519 -#: postmaster/pgstat.c:3535 postmaster/pgstat.c:3553 postmaster/pgstat.c:3569 -#: postmaster/pgstat.c:3620 postmaster/pgstat.c:3631 +#: commands/user.c:318 commands/user.c:1081 #, c-format -msgid "corrupted statistics file \"%s\"" -msgstr "统计文件损坏\"%s\"" +msgid "role \"%s\" already exists" +msgstr "角色\"%s\" 已经存在" -#: postmaster/pgstat.c:3925 -msgid "database hash table corrupted during cleanup --- abort" -msgstr "清理过程中数据库散列表毁坏 --- 终止" +#: commands/user.c:636 commands/user.c:842 commands/user.c:1321 +#: commands/user.c:1458 +msgid "must be superuser to alter superusers" +msgstr "只有超级用户能修改超级用户" -#: postmaster/postmaster.c:566 -#, c-format -msgid "%s: invalid argument for option -f: \"%s\"\n" -msgstr "%s: 选项-f的参数无效: \"%s\"\n" +#: commands/user.c:643 +msgid "must be superuser to alter replication users" +msgstr "只有超级用户能修改复制用户" -#: postmaster/postmaster.c:652 -#, c-format -msgid "%s: invalid argument for option -t: \"%s\"\n" -msgstr "%s: -t选项的参数无效: \"%s\"\n" +#: commands/user.c:659 commands/user.c:850 +msgid "permission denied" +msgstr "权限不够" -#: postmaster/postmaster.c:703 -#, c-format -msgid "%s: invalid argument: \"%s\"\n" -msgstr "%s: 无效参数: \"%s\"\n" +#: commands/user.c:878 +msgid "permission denied to drop role" +msgstr "删除角色的权限不够" -#: postmaster/postmaster.c:728 +#: commands/user.c:910 #, c-format -msgid "%s: superuser_reserved_connections must be less than max_connections\n" -msgstr "%s: 超级用户保留联接数必须小于最大联接数\n" +msgid "role \"%s\" does not exist, skipping" +msgstr "角色 \"%s\" 不存在" -#: postmaster/postmaster.c:733 -msgid "" -"WAL archival (archive_mode=on) requires wal_level \"archive\" or " -"\"hot_standby\"" -msgstr "" -"WAL归档的设置(archive_mode=on)要求wal_level设置为\"archive\"或\"hot_standby\"" +#: commands/user.c:922 commands/user.c:926 +msgid "current user cannot be dropped" +msgstr "当前用户不能被删除" -#: postmaster/postmaster.c:736 -msgid "" -"WAL streaming (max_wal_senders > 0) requires wal_level \"archive\" or " -"\"hot_standby\"" -msgstr "" -"WAL 流复制的设置(max_wal_senders > 0)要求将wal_level设置为\"archive\"或" -"\"hot_standby\"" +#: commands/user.c:930 +msgid "session user cannot be dropped" +msgstr "会话用户不能被删除" -#: postmaster/postmaster.c:744 +#: commands/user.c:941 +msgid "must be superuser to drop superusers" +msgstr "只有超级用户可以删除超级用户" + +#: commands/user.c:954 #, c-format -msgid "%s: invalid datetoken tables, please fix\n" -msgstr "%s: 无效的 datetoken 表, 请修复\n" +msgid "role \"%s\" cannot be dropped because some objects depend on it" +msgstr "无法删除\"%s\"因为有其它对象倚赖它" -#: postmaster/postmaster.c:850 -msgid "invalid list syntax for \"listen_addresses\"" -msgstr "无效的 \"listen_addresses\" 语法" +#: commands/user.c:1071 +msgid "session user cannot be renamed" +msgstr "无法重命名会话用户" -#: postmaster/postmaster.c:871 -#, c-format -msgid "could not create listen socket for \"%s\"" -msgstr "无法为 \"%s\" 创建监听套接字" +#: commands/user.c:1075 +msgid "current user cannot be renamed" +msgstr "无法重新命名当前用户" -# fe-connect.c:891 -#: postmaster/postmaster.c:877 -msgid "could not create any TCP/IP sockets" -msgstr "无法创建TCP/IP套接字" +#: commands/user.c:1098 +msgid "must be superuser to rename superusers" +msgstr "只有超级用户可以对超级用户重命名" -#: postmaster/postmaster.c:928 -msgid "could not create Unix-domain socket" -msgstr "无法创建 Unix-domain 套接字" +#: commands/user.c:1105 +msgid "permission denied to rename role" +msgstr "重命名角色的权限不够" -#: postmaster/postmaster.c:936 -msgid "no socket created for listening" -msgstr "没有为监听创建套接字" +#: commands/user.c:1126 +msgid "MD5 password cleared because of role rename" +msgstr "由于对角色重命名, 需要清除以MD5方式加密的口令" -# fe-lobj.c:412 -#: postmaster/postmaster.c:962 -msgid "could not create I/O completion port for child queue" -msgstr "无法为子队列创建I/O完成端口" +#: commands/user.c:1182 +msgid "column names cannot be included in GRANT/REVOKE ROLE" +msgstr "在GRANT/REVOKE ROLE中不能包含列名" -#: postmaster/postmaster.c:1006 -#, c-format -msgid "%s: could not write external PID file \"%s\": %s\n" -msgstr "%s: 无法写入外部 PID 文件 \"%s\": %s\n" +#: commands/user.c:1220 +msgid "permission denied to drop objects" +msgstr "删除对象的权限不足" -#: postmaster/postmaster.c:1074 utils/init/postinit.c:197 -msgid "could not load pg_hba.conf" -msgstr "无法加载pg_hba.conf" +#: commands/user.c:1247 commands/user.c:1256 +msgid "permission denied to reassign objects" +msgstr "重新分配对象的权限不足" -#: postmaster/postmaster.c:1121 +#: commands/user.c:1329 commands/user.c:1466 #, c-format -msgid "%s: could not locate matching postgres executable" -msgstr "%s: 无法找到匹配的 postgres 执行文件" +msgid "must have admin option on role \"%s\"" +msgstr "在角色\"%s\"上必须有admin选项" -#: postmaster/postmaster.c:1144 utils/misc/tzparser.c:347 -#, 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\"已经从正确的位置移动到另外的位" -"置了." +#: commands/user.c:1337 +msgid "must be superuser to set grantor" +msgstr "只有超级用户能设置授权者" -#: postmaster/postmaster.c:1172 +#: commands/user.c:1362 #, c-format -msgid "data directory \"%s\" does not exist" -msgstr "数据目录 \"%s\" 不存在" +msgid "role \"%s\" is a member of role \"%s\"" +msgstr "角色\"%s\" 是角色\"%s\"的成员" -#: postmaster/postmaster.c:1177 +#: commands/user.c:1377 #, c-format -msgid "could not read permissions of directory \"%s\": %m" -msgstr "没有读取目录 \"%s\" 的权限: %m" +msgid "role \"%s\" is already a member of role \"%s\"" +msgstr "角色\"%s\" 已经是角色\"%s\"的成员" -#: postmaster/postmaster.c:1185 +#: commands/user.c:1488 #, c-format -msgid "specified data directory \"%s\" is not a directory" -msgstr "所指定的数据目录 \"%s\"不是一个目录." +msgid "role \"%s\" is not a member of role \"%s\"" +msgstr "角色 \"%s\"不是角色 \"%s\"的成员" -#: postmaster/postmaster.c:1201 +#: commands/foreigncmds.c:135 commands/foreigncmds.c:144 #, c-format -msgid "data directory \"%s\" has wrong ownership" -msgstr "data目录 \"%s\"的所有者权限错误." +msgid "option \"%s\" not found" +msgstr "没有找到选项 \"%s\" " -#: postmaster/postmaster.c:1203 -msgid "The server must be started by the user that owns the data directory." -msgstr "服务器必须由拥有data目录的用户启动" +#: commands/foreigncmds.c:154 +#, c-format +msgid "option \"%s\" provided more than once" +msgstr "选项 \"%s\" 被提供了多次" -#: postmaster/postmaster.c:1223 +#: commands/foreigncmds.c:221 commands/foreigncmds.c:229 #, c-format -msgid "data directory \"%s\" has group or world access" -msgstr "组或其他用户都可以访问数据目录 \"%s\"" +msgid "permission denied to change owner of foreign-data wrapper \"%s\"" +msgstr "修改外部数据封装器的 \"%s\" 的属主权限不够" -#: postmaster/postmaster.c:1225 -msgid "Permissions should be u=rwx (0700)." -msgstr "权限应该为 u=rwx (0700)." +#: commands/foreigncmds.c:223 +msgid "Must be superuser to change owner of a foreign-data wrapper." +msgstr "只有超级用户可以更改外部数据封装器的属主" -#: postmaster/postmaster.c:1236 +#: commands/foreigncmds.c:231 +msgid "The owner of a foreign-data wrapper must be a superuser." +msgstr "外部数据封装器的属主必须是超级用户." + +#: commands/foreigncmds.c:265 commands/foreigncmds.c:636 +#: commands/foreigncmds.c:784 foreign/foreign.c:524 #, 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" +msgid "foreign-data wrapper \"%s\" does not exist" +msgstr "外部数据封装器 \"%s\" 不存在" -#: postmaster/postmaster.c:1272 +#: commands/foreigncmds.c:292 catalog/aclchk.c:3874 catalog/aclchk.c:4556 #, c-format -msgid "%s: could not open file \"%s\": %s\n" -msgstr "%s: 无法打开文件 \"%s\": %s\n" +msgid "foreign-data wrapper with OID %u does not exist" +msgstr "带有OID为%u的外部数据封装器(foreign-data wrapper)不存在" -# command.c:1148 -#: postmaster/postmaster.c:1279 +#: commands/foreigncmds.c:366 commands/foreigncmds.c:962 +#: commands/foreigncmds.c:1050 commands/foreigncmds.c:1334 +#: foreign/foreign.c:544 #, c-format -msgid "%s: could not open log file \"%s/%s\": %s\n" -msgstr "%s:无法打开日志文件\"%s/%s\": %s\n" +msgid "server \"%s\" does not exist" +msgstr "服务器\"%s\" 不存在" -#: postmaster/postmaster.c:1290 +#: commands/foreigncmds.c:391 catalog/aclchk.c:3935 catalog/aclchk.c:4583 #, c-format -msgid "%s: could not fork background process: %s\n" -msgstr "%s: 无法 fork 后台进程: %s\n" +msgid "foreign server with OID %u does not exist" +msgstr "带有OID为%u的外部服务器不存在" -#: postmaster/postmaster.c:1312 +#: commands/foreigncmds.c:418 #, c-format -msgid "%s: could not dissociate from controlling TTY: %s\n" -msgstr "%s: 无法与控制 TTY 断开联系: %s\n" +msgid "function %s must return type \"fdw_handler\"" +msgstr "函数 %s 必须返回 \"fdw_handler\" 类型" -#: postmaster/postmaster.c:1407 +#: commands/foreigncmds.c:513 #, c-format -msgid "select() failed in postmaster: %m" -msgstr "postmaster select() 失败: %m" - -#: postmaster/postmaster.c:1564 postmaster/postmaster.c:1595 -msgid "incomplete startup packet" -msgstr "不完整的启动包" +msgid "permission denied to create foreign-data wrapper \"%s\"" +msgstr "创建外部数据封装器\"%s\"失败" -#: postmaster/postmaster.c:1576 -msgid "invalid length of startup packet" -msgstr "无效的启动包长度" +#: commands/foreigncmds.c:515 +msgid "Must be superuser to create a foreign-data wrapper." +msgstr "只有超级用户能创建外部数据封装器" -#: postmaster/postmaster.c:1633 +#: commands/foreigncmds.c:526 #, c-format -msgid "failed to send SSL negotiation response: %m" -msgstr "发送 SSL 协商响应失败: %m" +msgid "foreign-data wrapper \"%s\" already exists" +msgstr "外部数据封装器\"%s\"已经存在" -#: postmaster/postmaster.c:1662 +#: commands/foreigncmds.c:626 #, c-format -msgid "unsupported frontend protocol %u.%u: server supports %u.0 to %u.%u" -msgstr "不支持的前端协议 %u.%u: 服务端支持 %u.0 到 %u.%u" +msgid "permission denied to alter foreign-data wrapper \"%s\"" +msgstr "不允许修改外部数据封装器\"%s\"" -#: postmaster/postmaster.c:1713 -msgid "invalid value for boolean option \"replication\"" -msgstr "布尔选项\"replication\"的值无效" +#: commands/foreigncmds.c:628 +msgid "Must be superuser to alter a foreign-data wrapper." +msgstr "只有超级用户才能修改一个外部数据封装器." -#: postmaster/postmaster.c:1733 -msgid "invalid startup packet layout: expected terminator as last byte" -msgstr "无效的启动包格式: 预计结束符为最后一个字节" +#: commands/foreigncmds.c:659 +msgid "" +"changing the foreign-data wrapper handler can change behavior of existing " +"foreign tables" +msgstr "改变外部数据封装器可能会改变现存的外部表的行为" -#: postmaster/postmaster.c:1761 -msgid "no PostgreSQL user name specified in startup packet" -msgstr "在启动包中没有指定 PostgreSQL 用户名" +#: commands/foreigncmds.c:673 +msgid "" +"changing the foreign-data wrapper validator can cause the options for " +"dependent objects to become invalid" +msgstr "改变外部数据封装器的验证能够使所它依赖对象的选项变为无效" -#: postmaster/postmaster.c:1818 -msgid "the database system is starting up" -msgstr "数据库系统启动中" +#: commands/foreigncmds.c:775 +#, c-format +msgid "permission denied to drop foreign-data wrapper \"%s\"" +msgstr "删除外部数据封装器 \"%s\" 的权限不够" -#: postmaster/postmaster.c:1823 -msgid "the database system is shutting down" -msgstr "数据库系统停止中" +#: commands/foreigncmds.c:777 +msgid "Must be superuser to drop a foreign-data wrapper." +msgstr "只有超级用户可以删除外部数据封装器" -#: postmaster/postmaster.c:1828 -msgid "the database system is in recovery mode" -msgstr "数据库系统在恢复模式中" +#: commands/foreigncmds.c:789 +#, c-format +msgid "foreign-data wrapper \"%s\" does not exist, skipping" +msgstr "外部数据封装器\"%s\" 不存在,跳过" -#: postmaster/postmaster.c:1895 +#: commands/foreigncmds.c:858 #, c-format -msgid "wrong key in cancel request for process %d" -msgstr "对于进程 %d,在取消请求中的键值错误" +msgid "server \"%s\" already exists" +msgstr "服务器 \"%s\" 已经存在" -#: postmaster/postmaster.c:1903 +#: commands/foreigncmds.c:1054 #, c-format -msgid "PID %d in cancel request did not match any process" -msgstr "没有进程与取消请求中的PID %d 相匹配" +msgid "server \"%s\" does not exist, skipping" +msgstr "服务器 \"%s\"不存在,跳过 " -#: postmaster/postmaster.c:2104 -msgid "received SIGHUP, reloading configuration files" -msgstr "接收到 SIGHUP, 重载配置文件" +#: commands/foreigncmds.c:1159 +#, c-format +msgid "user mapping \"%s\" already exists for server %s" +msgstr "对于服务器%2$s,用户映射\"%1$s\"已存在 " -#: postmaster/postmaster.c:2127 -msgid "pg_hba.conf not reloaded" -msgstr "没有重新加载pg_hba.conf" +#: commands/foreigncmds.c:1245 commands/foreigncmds.c:1350 +#, c-format +msgid "user mapping \"%s\" does not exist for the server" +msgstr "对于服务器来说,用户映射\"%s\"不存在" -#: postmaster/postmaster.c:2170 -msgid "received smart shutdown request" -msgstr "接到到智能 (smart) 停止请求" +#: commands/foreigncmds.c:1337 +msgid "server does not exist, skipping" +msgstr "服务器不存在,跳过" -#: postmaster/postmaster.c:2217 -msgid "received fast shutdown request" -msgstr "接收到快速 (fast) 停止请求" +#: commands/foreigncmds.c:1355 +#, c-format +msgid "user mapping \"%s\" does not exist for the server, skipping" +msgstr "用户映射\"%s\"对于服务器来说不存在,跳过" -#: postmaster/postmaster.c:2235 -msgid "aborting any active transactions" -msgstr "中断任何激活事务" +#: commands/vacuum.c:419 +msgid "oldest xmin is far in the past" +msgstr "最旧的xmin" -#: postmaster/postmaster.c:2264 -msgid "received immediate shutdown request" -msgstr "接收到立即 (immediate) 停止请求" +#: commands/vacuum.c:420 +msgid "Close open transactions soon to avoid wraparound problems." +msgstr "立即关闭已打开的事物, 以避免 wraparound 问题." -#: postmaster/postmaster.c:2340 postmaster/postmaster.c:2368 -msgid "startup process" -msgstr "启动进程" +#: commands/vacuum.c:811 +msgid "some databases have not been vacuumed in over 2 billion transactions" +msgstr "一些数据库在超过 20 亿笔事物后没有做清理 (vacuum)." -#: postmaster/postmaster.c:2343 -msgid "aborting startup due to startup process failure" -msgstr "由于启动进程失败, 终止启动" +#: commands/vacuum.c:812 +msgid "You might have already suffered transaction-wraparound data loss." +msgstr "您可能已经遇到了由于事务重叠而造成的数据丢失." -#: postmaster/postmaster.c:2402 -msgid "database system is ready to accept connections" -msgstr "数据库系统准备接受连接" +#: commands/vacuum.c:919 +#, c-format +msgid "skipping vacuum of \"%s\" --- lock not available" +msgstr "跳过对 \"%s\" 的压缩处理 --- 无法获取相应锁" -#: postmaster/postmaster.c:2457 -msgid "background writer process" -msgstr "后台写入进程" +#: commands/vacuum.c:945 +#, c-format +msgid "skipping \"%s\" --- only superuser can vacuum it" +msgstr "忽略 \"%s\" --- 只有超级用户能够清理 (vacuum)" -#: postmaster/postmaster.c:2473 -msgid "WAL writer process" -msgstr "WAL写入进程" +#: commands/vacuum.c:949 +#, c-format +msgid "skipping \"%s\" --- only superuser or database owner can vacuum it" +msgstr "忽略 \"%s\" --- 只有超级用户或数据库属主能够清理 (vacuum)" -#: postmaster/postmaster.c:2487 -msgid "WAL receiver process" -msgstr "WAL接收进程" +#: commands/vacuum.c:953 +#, c-format +msgid "skipping \"%s\" --- only table or database owner can vacuum it" +msgstr "忽略 \"%s\" --- 只有表或数据库属主能够清理 (vacuum)" -#: postmaster/postmaster.c:2502 -msgid "autovacuum launcher process" -msgstr "autovacuum启动进程" +#: commands/vacuum.c:970 +#, c-format +msgid "skipping \"%s\" --- cannot vacuum non-tables or special system tables" +msgstr "忽略 \"%s\" --- 无法清理 (vacuum) 非表或者特殊的系统表" -#: postmaster/postmaster.c:2517 -msgid "archiver process" -msgstr "归档进程" +#: commands/async.c:567 +msgid "channel name cannot be empty" +msgstr "通道名称不能为空" -#: postmaster/postmaster.c:2533 -msgid "statistics collector process" -msgstr "统计收集器进程" +#: commands/async.c:572 +msgid "channel name too long" +msgstr "通道名称太长" -#: postmaster/postmaster.c:2547 -msgid "system logger process" -msgstr "系统日志进程" +#: commands/async.c:579 +msgid "payload string too long" +msgstr "流量负载字符串太长" -#: postmaster/postmaster.c:2582 postmaster/postmaster.c:2598 -#: postmaster/postmaster.c:2605 postmaster/postmaster.c:2623 -msgid "server process" -msgstr "服务器进程" +#: commands/async.c:763 +msgid "" +"cannot PREPARE a transaction that has executed LISTEN, UNLISTEN or NOTIFY" +msgstr "无法在一个已经执行了LISTEN或UNLISTEN操作的事务上执行PREPARE" -#: postmaster/postmaster.c:2659 -msgid "terminating any other active server processes" -msgstr "中断任何其它已激活的服务器进程" +#: commands/async.c:868 +msgid "too many notifications in the NOTIFY queue" +msgstr "在NOTIFY队列中的通知太多了" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2824 +#: commands/async.c:1447 #, c-format -msgid "%s (PID %d) exited with exit code %d" -msgstr "%s (PID %d) 已退出, 退出代码 %d" +msgid "NOTIFY queue is %.0f%% full" +msgstr "NOTIFY队列达到了%.0f%%的容量" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2833 +#: commands/async.c:1449 #, c-format -msgid "%s (PID %d) was terminated by exception 0x%X" -msgstr "%s (PID %d) 被异常 0x%X 终止" +msgid "" +"The server process with PID %d is among those with the oldest transactions." +msgstr "带有PID为%d的服务器进程在那些带有最老事务的进程中。" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2842 -#, c-format -msgid "%s (PID %d) was terminated by signal %d: %s" -msgstr "%s (PID %d) 被信号 %d 中断: %s" +#: commands/async.c:1452 +msgid "" +"The NOTIFY queue cannot be emptied until that process ends its current " +"transaction." +msgstr "在进程结束它所处理的当前事务前, NOTIFY队列不能为空." -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2852 +#: commands/trigger.c:159 #, c-format -msgid "%s (PID %d) was terminated by signal %d" -msgstr "%s (PID %d) 被信号 %d 中断" +msgid "\"%s\" is a table" +msgstr "\"%s\" 是一个表" -#. translator: %s is a noun phrase describing a child process, such as -#. "server process" -#: postmaster/postmaster.c:2861 +#: commands/trigger.c:161 +msgid "Tables cannot have INSTEAD OF triggers." +msgstr "表不能使用INSTEAD OF触发器." + +#: commands/trigger.c:172 commands/trigger.c:179 #, c-format -msgid "%s (PID %d) exited with unrecognized status %d" -msgstr "%s (PID %d) 已退出, 意外状态 %d" +msgid "\"%s\" is a view" +msgstr "\"%s\" 是一个视图" -#: postmaster/postmaster.c:3041 -msgid "abnormal database system shutdown" -msgstr "数据库系统异常关闭" +#: commands/trigger.c:174 +msgid "Views cannot have row-level BEFORE or AFTER triggers." +msgstr "视图不能使用行级 BEFORE 或 AFTER 触发器." -#: postmaster/postmaster.c:3079 -msgid "all server processes terminated; reinitializing" -msgstr "所有的服务器进程被中止; 重新初始化" +#: commands/trigger.c:181 +msgid "Views cannot have TRUNCATE triggers." +msgstr "视图不能使用 TRUNCATE 触发器." -#: postmaster/postmaster.c:3251 -#, c-format -msgid "could not fork new process for connection: %m" -msgstr "无法为联接派生新进程: %m" +#: commands/trigger.c:228 +msgid "TRUNCATE FOR EACH ROW triggers are not supported" +msgstr "不支持使用TRUNCATE FOR EACH ROW触发器" -#: postmaster/postmaster.c:3293 -msgid "could not fork new process for connection: " -msgstr "无法为联接派生新进程: " +#: commands/trigger.c:236 +msgid "INSTEAD OF triggers must be FOR EACH ROW" +msgstr "INSTEAD OF 触发器必须使用 FOR EACH ROW" -#: postmaster/postmaster.c:3407 -#, c-format -msgid "connection received: host=%s port=%s" -msgstr "已接收到连接: 主机=%s 端口=%s" +#: commands/trigger.c:240 +msgid "INSTEAD OF triggers cannot have WHEN conditions" +msgstr "INSTEAD OF 触发器不能使用 WHEN 条件子句" -#: postmaster/postmaster.c:3412 -#, c-format -msgid "connection received: host=%s" -msgstr "已接收到连接: 主机=%s" +#: commands/trigger.c:244 +msgid "INSTEAD OF triggers cannot have column lists" +msgstr "INSTEAD OF 触发器不能带有字段列表" -#: postmaster/postmaster.c:3679 -#, c-format -msgid "could not execute server process \"%s\": %m" -msgstr "无法执行服务器进程 \"%s\": %m" +#: commands/trigger.c:288 +msgid "cannot use subquery in trigger WHEN condition" +msgstr "在触发器的WHEN条件中无法使用子查询" -#: postmaster/postmaster.c:4192 -msgid "database system is ready to accept read only connections" -msgstr "数据库系统准备接受只读请求的连接" +#: commands/trigger.c:292 +msgid "cannot use aggregate function in trigger WHEN condition" +msgstr "在触发器的WHEN条件中无法使用聚合函数" -#: postmaster/postmaster.c:4433 -#, c-format -msgid "could not fork startup process: %m" -msgstr "无法派生启动进程: %m" +#: commands/trigger.c:296 +msgid "cannot use window function in trigger WHEN condition" +msgstr "在触发器的WHEN条件中无法使用窗口函数" -#: postmaster/postmaster.c:4437 -#, c-format -msgid "could not fork background writer process: %m" -msgstr "无法 fork 后台写入进程: %m" +#: commands/trigger.c:318 commands/trigger.c:331 +msgid "statement trigger's WHEN condition cannot reference column values" +msgstr "语句级触发器的WHEN条件中不能引用列的值。" -#: postmaster/postmaster.c:4441 -#, c-format -msgid "could not fork WAL writer process: %m" -msgstr "无法派生WAL写入进程: %m" +#: commands/trigger.c:323 +msgid "INSERT trigger's WHEN condition cannot reference OLD values" +msgstr "在INSERT触发器的WHEN条件中不能引用OLD值。" -#: postmaster/postmaster.c:4445 -#, c-format -msgid "could not fork WAL receiver process: %m" -msgstr "无法派生WAL接收进程: %m" +#: commands/trigger.c:336 +msgid "DELETE trigger's WHEN condition cannot reference NEW values" +msgstr "在DELETE触发器的WHEN条件中不能引用NEW值。" -#: postmaster/postmaster.c:4449 -#, c-format -msgid "could not fork process: %m" -msgstr "无法派生进程: %m" +#: commands/trigger.c:341 +msgid "BEFORE trigger's WHEN condition cannot reference NEW system columns" +msgstr "BEFORE类型触发器的WHERE条件不能引用NEW系统列" -#: postmaster/postmaster.c:4731 +#: commands/trigger.c:386 #, c-format -msgid "could not duplicate socket %d for use in backend: error code %d" -msgstr "无法为后端使用复制套接字 %d: 错误码为 %d" +msgid "changing return type of function %s from \"opaque\" to \"trigger\"" +msgstr "改变函数 %s 的返回类型 \"opaque\" 为 \"trigger\"" -#: postmaster/postmaster.c:4763 +#: commands/trigger.c:393 #, c-format -msgid "could not create inherited socket: error code %d\n" -msgstr "无法创建继承套接字: 错误码为 %d\n" +msgid "function %s must return type \"trigger\"" +msgstr "函数 %s 必需返回 \"trigger\" 类型" -#: postmaster/postmaster.c:4792 postmaster/postmaster.c:4799 +#: commands/trigger.c:503 commands/trigger.c:1241 #, c-format -msgid "could not read from backend variables file \"%s\": %s\n" -msgstr "无法从后端可变 (variables) 文件 \"%s\" 读取: %s\n" +msgid "trigger \"%s\" for relation \"%s\" already exists" +msgstr "对于关系 \"%2$s\" 的 \"%1$s\" 触发器已经存在" -#: postmaster/postmaster.c:4808 -#, c-format -msgid "could not remove file \"%s\": %s\n" -msgstr "无法删除文件 \"%s\": %s\n" +#: commands/trigger.c:788 +msgid "Found referenced table's UPDATE trigger." +msgstr "找到被引用表的UPDATE触发器" -#: postmaster/postmaster.c:4821 -#, c-format -msgid "could not map view of backend variables: error code %d\n" -msgstr "无法 map 后端变量视图: 错误码为 %d\n" +#: commands/trigger.c:789 +msgid "Found referenced table's DELETE trigger." +msgstr "找到被引用表的DELETE触发器" -#: postmaster/postmaster.c:4830 -#, c-format -msgid "could not unmap view of backend variables: error code %d\n" -msgstr "无法 unmap 后端变量视图: 错误码为 %d\n" +#: commands/trigger.c:790 +msgid "Found referencing table's trigger." +msgstr "找到正在引用表的触发器" -#: postmaster/postmaster.c:4837 +#: commands/trigger.c:899 commands/trigger.c:915 #, c-format -msgid "could not close handle to backend parameter variables: error code %d\n" -msgstr "无法关闭后端参数变量的句柄: 错误码为 %d\n" - -#: postmaster/postmaster.c:4980 -msgid "could not read exit code for process\n" -msgstr "无法为进程读取退出代码\n" - -#: postmaster/postmaster.c:4985 -msgid "could not post child completion status\n" -msgstr "无法传递子队列的结束状态\n" +msgid "ignoring incomplete trigger group for constraint \"%s\" %s" +msgstr "对于\"%s\" %s,忽略未完成的触发器组" -#: postmaster/syslogger.c:387 +#: commands/trigger.c:927 #, c-format -msgid "select() failed in logger process: %m" -msgstr "日志进程中的 select() 失败: %m" +msgid "converting trigger group into constraint \"%s\" %s" +msgstr "正在将触发器组转换为约束\"%s\" %s" -#: postmaster/syslogger.c:399 postmaster/syslogger.c:973 +#: commands/trigger.c:1043 #, c-format -msgid "could not read from logger pipe: %m" -msgstr "无法从日志管道读取: %m" - -#: postmaster/syslogger.c:446 -msgid "logger shutting down" -msgstr "日志正在关闭" +msgid "trigger \"%s\" for table \"%s\" does not exist, skipping" +msgstr "表 \"%2$s\" 的 \"%1$s\" 触发器不存在" -#: postmaster/syslogger.c:490 postmaster/syslogger.c:504 +#: commands/trigger.c:1170 commands/trigger.c:1283 commands/trigger.c:1394 #, c-format -msgid "could not create pipe for syslog: %m" -msgstr "无法为统计日志 (syslog) 创建管道: %m" +msgid "trigger \"%s\" for table \"%s\" does not exist" +msgstr "表 \"%2$s\" 的 \"%1$s\" 触发器不存在" -#: postmaster/syslogger.c:524 postmaster/syslogger.c:1012 +#: commands/trigger.c:1362 #, c-format -msgid "could not create log file \"%s\": %m" -msgstr "无法创建日志文件 \"%s\": %m" +msgid "permission denied: \"%s\" is a system trigger" +msgstr "权限不够: \"%s\" 是一个系统触发器" -#: postmaster/syslogger.c:539 +#: commands/trigger.c:1844 #, c-format -msgid "could not fork system logger: %m" -msgstr "无法派生 (fork) 系统日志: %m" +msgid "trigger function %u returned null value" +msgstr "触发器函数 %u 返回了空值" -#: postmaster/syslogger.c:570 -#, c-format -msgid "could not redirect stdout: %m" -msgstr "无法重定向到标准输出 (stdout) : %m" +#: commands/trigger.c:1903 commands/trigger.c:2102 commands/trigger.c:2286 +#: commands/trigger.c:2528 +msgid "BEFORE STATEMENT trigger cannot return a value" +msgstr "BEFORE STATEMENT 触发器不能返回一个值" -#: postmaster/syslogger.c:575 postmaster/syslogger.c:593 -#, c-format -msgid "could not redirect stderr: %m" -msgstr "无法重定向到标准错误 (stderr) : %m" +#: commands/trigger.c:2590 executor/nodeLockRows.c:137 +#: executor/nodeModifyTable.c:366 executor/nodeModifyTable.c:582 +#: executor/execMain.c:1867 +msgid "could not serialize access due to concurrent update" +msgstr "由于同步更新而无法串行访问" -#: postmaster/syslogger.c:928 +#: commands/trigger.c:4166 catalog/namespace.c:234 catalog/namespace.c:318 #, c-format -msgid "could not write to log file: %s\n" -msgstr "无法写入日志文件: %s\n" +msgid "cross-database references are not implemented: \"%s.%s.%s\"" +msgstr "未实现跨数据库关联: \"%s.%s.%s\"" -#: postmaster/syslogger.c:1083 postmaster/syslogger.c:1141 +#: commands/trigger.c:4217 #, c-format -msgid "could not open new log file \"%s\": %m" -msgstr "无法打开新的日志文件 \"%s\": %m" - -#: postmaster/syslogger.c:1095 postmaster/syslogger.c:1153 -msgid "disabling automatic rotation (use SIGHUP to re-enable)" -msgstr "取消自动轮寻 (使用 SIGHUP re-enable)" +msgid "constraint \"%s\" is not deferrable" +msgstr "约束 \"%s\" 不可展缓" -#: replication/libpqwalreceiver/libpqwalreceiver.c:100 +#: commands/trigger.c:4240 #, c-format -msgid "could not connect to the primary server: %s" -msgstr "无法连接到主用服务器:%s" +msgid "constraint \"%s\" does not exist" +msgstr "约束 \"%s\" 不存在" -#: replication/libpqwalreceiver/libpqwalreceiver.c:112 -#, c-format +#: commands/operatorcmds.c:100 +msgid "=> is deprecated as an operator name" +msgstr "=>做为操作符名称已被废弃" + +#: commands/operatorcmds.c:101 msgid "" -"could not receive database system identifier and timeline ID from the " -"primary server: %s" -msgstr "无法从主用服务器接收数据库系统标识符和时间线ID:%s" +"This name may be disallowed altogether in future versions of PostgreSQL." +msgstr "在将来的PostgreSQL版本中不允许使用这个名称." -#: replication/libpqwalreceiver/libpqwalreceiver.c:123 -msgid "invalid response from primary server" -msgstr "来自主用服务器的回应无效" +#: commands/operatorcmds.c:122 commands/operatorcmds.c:130 +msgid "SETOF type not allowed for operator argument" +msgstr "不允许将SETOF类型用于操作符参数" -#: replication/libpqwalreceiver/libpqwalreceiver.c:124 +#: commands/operatorcmds.c:158 #, c-format -msgid "Expected 1 tuple with 2 fields, got %d tuples with %d fields." -msgstr "" -"期望得到带有2个字段的一条记录,但是现在得到了%d条记录,每条带有%d个字段。" +msgid "operator attribute \"%s\" not recognized" +msgstr "操作符属性 \"%s\" 不被认可" -#: replication/libpqwalreceiver/libpqwalreceiver.c:139 -msgid "database system identifier differs between the primary and standby" -msgstr "在主用服务器和备用服务器之间,数据库系统标识符是不一样的。" +#: commands/operatorcmds.c:168 +msgid "operator procedure must be specified" +msgstr "必须指定操作符过程" -#: replication/libpqwalreceiver/libpqwalreceiver.c:140 +#: commands/operatorcmds.c:179 +msgid "at least one of leftarg or rightarg must be specified" +msgstr "必须至少指定一个左参数 (leftarg) 或右参数 (rightarg)" + +#: commands/operatorcmds.c:228 #, c-format -msgid "The primary's identifier is %s, the standby's identifier is %s." -msgstr "主用服务器的标识符是%s,备用服务器的标识符是%s。" +msgid "restriction estimator function %s must return type \"float8\"" +msgstr "限制估算函数 %s 必需返回类型\"float8\"" -#: replication/libpqwalreceiver/libpqwalreceiver.c:152 +#: commands/operatorcmds.c:267 #, c-format -msgid "timeline %u of the primary does not match recovery target timeline %u" -msgstr "主用服务器的时间线%u与恢复目标的时间线%u不匹配" +msgid "join estimator function %s must return type \"float8\"" +msgstr "连接估算函数 %s 必需返回类型\"float8\"" -#: replication/libpqwalreceiver/libpqwalreceiver.c:164 +#: commands/operatorcmds.c:318 #, c-format -msgid "could not start WAL streaming: %s" -msgstr "无法启动WAL流复制: %s" +msgid "operator %s does not exist, skipping" +msgstr "操作符 %s不存在,跳过" -#: replication/libpqwalreceiver/libpqwalreceiver.c:171 -msgid "streaming replication successfully connected to primary" -msgstr "流复制成功连接到主服务器" +#: commands/typecmds.c:169 +msgid "must be superuser to create a base type" +msgstr "只有超级用户能创建基类型" -# fe-misc.c:450 fe-misc.c:642 fe-misc.c:798 -#: replication/libpqwalreceiver/libpqwalreceiver.c:193 -msgid "socket not open" -msgstr "套接字未打开" +#: commands/typecmds.c:224 commands/typecmds.c:806 commands/typecmds.c:1145 +#: commands/typecmds.c:1622 catalog/pg_type.c:396 catalog/pg_type.c:699 +#: catalog/heap.c:1029 +#, c-format +msgid "type \"%s\" already exists" +msgstr "类型 \"%s\" 已经存在" -#: replication/libpqwalreceiver/libpqwalreceiver.c:233 +#: commands/typecmds.c:275 #, c-format -msgid "select() failed: %m" -msgstr "执行select()失败: %m" +msgid "type attribute \"%s\" not recognized" +msgstr "类型属性 \"%s\" 不被认可" -#: replication/libpqwalreceiver/libpqwalreceiver.c:364 -#: replication/libpqwalreceiver/libpqwalreceiver.c:386 -#: replication/libpqwalreceiver/libpqwalreceiver.c:391 +#: commands/typecmds.c:329 #, c-format -msgid "could not receive data from WAL stream: %s" -msgstr "无法从WAL流中获得数据: %s" +msgid "invalid type category \"%s\": must be simple ASCII" +msgstr "无效的类型目录 \"%s\": 必须是简单ASCII" -#: replication/libpqwalreceiver/libpqwalreceiver.c:382 -msgid "replication terminated by primary server" -msgstr "复制由主用服务器终止" +#: commands/typecmds.c:348 +#, c-format +msgid "array element type cannot be %s" +msgstr "排列元素类型不能为 %s" -#: replication/walreceiver.c:138 -msgid "terminating walreceiver process due to administrator command" -msgstr "由于管理员命令中断walreceiver进程" +#: commands/typecmds.c:380 +#, c-format +msgid "alignment \"%s\" not recognized" +msgstr "alignment \"%s\" 不被认可" -#: replication/walreceiver.c:287 -msgid "cannot continue WAL streaming, recovery has already ended" -msgstr "无法继续进行WAL流复制操作,恢复已经结束" +#: commands/typecmds.c:397 +#, c-format +msgid "storage \"%s\" not recognized" +msgstr "存储 \"%s\" 不被认可" -#: replication/walsender.c:116 -msgid "recovery is still in progress, can't accept WAL streaming connections" -msgstr "恢复操作正在进行当中,无法接受WAL流复制的连接" +#: commands/typecmds.c:408 +msgid "type input function must be specified" +msgstr "类型输入函数 %s 必需指定" -#: replication/walsender.c:278 -msgid "standby connections not allowed because wal_level=minimal" -msgstr "不允许使用备份连接因为设置了wal_level=minimal" +#: commands/typecmds.c:412 +msgid "type output function must be specified" +msgstr "类型输出函数 %s 必需指定" + +#: commands/typecmds.c:417 +msgid "" +"type modifier output function is useless without a type modifier input " +"function" +msgstr "如果没有类型修改器的输入函数,那么类型修改器的输出函数没有用" -#: replication/walsender.c:300 +#: commands/typecmds.c:440 #, c-format -msgid "invalid standby query string: %s" -msgstr "无效的备用服务器查询字符串:%s" +msgid "changing return type of function %s from \"opaque\" to %s" +msgstr "改变函数 %s 的返回类型 \"opaque\" 为 %s" -#: replication/walsender.c:313 replication/walsender.c:339 -msgid "unexpected EOF on standby connection" -msgstr "在备用服务器连接上的出现意外的EOF" +#: commands/typecmds.c:447 +#, c-format +msgid "type input function %s must return type %s" +msgstr "类型输入函数 %s 必需返回类型 %s" -#: replication/walsender.c:319 +#: commands/typecmds.c:457 #, c-format -msgid "invalid standby handshake message type %d" -msgstr "无效的备用握手消息类型 %d" +msgid "changing return type of function %s from \"opaque\" to \"cstring\"" +msgstr "改变函数 %s 的返回类型 \"opaque\" 为 \"cstring\"" -#: replication/walsender.c:360 +#: commands/typecmds.c:464 #, c-format -msgid "invalid standby closing message type %d" -msgstr "无效的备用关闭消息类型 %d" +msgid "type output function %s must return type \"cstring\"" +msgstr "类型输出函数 %s 必需返回类型 \"cstring\"" -#: replication/walsender.c:506 +#: commands/typecmds.c:473 #, c-format -msgid "" -"number of requested standby connections exceeds max_wal_senders (currently %" -"d)" -msgstr "所要求的备用服务器连接数超过了参数max_wal_senders的值(当前设置为%d)" +msgid "type receive function %s must return type %s" +msgstr "类型接收函数 %s 必需返回类型 %s" -#: replication/walsender.c:578 replication/walsender.c:640 +#: commands/typecmds.c:482 #, c-format -msgid "requested WAL segment %s has already been removed" -msgstr "所要求的WAL段%s已经被删除" +msgid "type send function %s must return type \"bytea\"" +msgstr "类型发送函数 %s 必需返回类型 \"bytea\"" -#: replication/walsender.c:611 +#: commands/typecmds.c:687 #, c-format -msgid "could not read from log file %u, segment %u, offset %u, length %lu: %m" -msgstr "无法从日志文件%u中段为%u,偏移量为%u, 长度为%lu的位置上进行读操作: %m" +msgid "\"%s\" is not a domain" +msgstr "\"%s\" 不是一个域" -#: rewrite/rewriteDefine.c:108 rewrite/rewriteDefine.c:756 +#: commands/typecmds.c:827 #, c-format -msgid "rule \"%s\" for relation \"%s\" already exists" -msgstr "关系 \"%2$s\" 的规则 \"%1$s\" 已经存在" +msgid "\"%s\" is not a valid base type for a domain" +msgstr "对于一个域, \"%s\" 不是一个有效的基本类型" -#: rewrite/rewriteDefine.c:282 -msgid "rule actions on OLD are not implemented" -msgstr "在 OLD 上的规则动作没有实现" +#: commands/typecmds.c:909 +msgid "multiple default expressions" +msgstr "多遍默认表达式" -#: rewrite/rewriteDefine.c:283 -msgid "Use views or triggers instead." -msgstr "请使用视图或触发器代替." +#: commands/typecmds.c:973 commands/typecmds.c:982 +msgid "conflicting NULL/NOT NULL constraints" +msgstr "NULL/NOT NULL 约束冲突" -#: rewrite/rewriteDefine.c:287 -msgid "rule actions on NEW are not implemented" -msgstr "在 NEW 上的规则动作没有实现" +#: commands/typecmds.c:1001 commands/typecmds.c:1984 +msgid "unique constraints not possible for domains" +msgstr "唯一约束对于域不可用" -#: rewrite/rewriteDefine.c:288 -msgid "Use triggers instead." -msgstr "请使用触发器代替." +#: commands/typecmds.c:1007 commands/typecmds.c:1990 +msgid "primary key constraints not possible for domains" +msgstr "不可为域使用主键约束" -#: rewrite/rewriteDefine.c:301 -msgid "INSTEAD NOTHING rules on SELECT are not implemented" -msgstr "在 SELECT 上的 INSTEAD NOTHING 规则没有实现" +#: commands/typecmds.c:1013 commands/typecmds.c:1996 +msgid "exclusion constraints not possible for domains" +msgstr "排他约束对于域不可用" -#: rewrite/rewriteDefine.c:302 -msgid "Use views instead." -msgstr "请使用视图代替." +#: commands/typecmds.c:1019 commands/typecmds.c:2002 +msgid "foreign key constraints not possible for domains" +msgstr "外键约束对于域不可用" -#: rewrite/rewriteDefine.c:310 -msgid "multiple actions for rules on SELECT are not implemented" -msgstr "在 SELECT 上的多动作规则没有实现" +#: commands/typecmds.c:1028 commands/typecmds.c:2011 +msgid "specifying constraint deferrability not supported for domains" +msgstr "所指定的约束延迟对域不支持" -#: rewrite/rewriteDefine.c:322 -msgid "rules on SELECT must have action INSTEAD SELECT" -msgstr "在 SELECT 上的规则必须有 INSTEAD SELECT 动作" +#: commands/typecmds.c:1332 +#, c-format +msgid "changing argument type of function %s from \"opaque\" to \"cstring\"" +msgstr "改变函数 %s 的参数类型 \"opaque\" 为 \"cstring\"" -#: rewrite/rewriteDefine.c:330 -msgid "event qualifications are not implemented for rules on SELECT" -msgstr "在 SELECT 上规则的事件条件没有实现" +#: 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 catalog/pg_aggregate.c:331 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 不存在" -#: rewrite/rewriteDefine.c:355 +#: commands/typecmds.c:1383 #, c-format -msgid "\"%s\" is already a view" -msgstr "\"%s\" 已经是一个视图了" +msgid "changing argument type of function %s from \"opaque\" to %s" +msgstr "改变函数 %s 的参数类型 \"opaque\" 为 %s" -#: rewrite/rewriteDefine.c:379 +#: commands/typecmds.c:1482 #, c-format -msgid "view rule for \"%s\" must be named \"%s\"" -msgstr "用于 \"%s\" 的视图规则必须命名为 \"%s\"" +msgid "typmod_in function %s must return type \"integer\"" +msgstr "typmod_in类型函数 %s 必需返回 \"trigger\" 类型" -#: rewrite/rewriteDefine.c:404 +#: commands/typecmds.c:1509 #, c-format -msgid "could not convert table \"%s\" to a view because it is not empty" -msgstr "无法把表 \"%s\" 转化为视图, 因为它不是空的" +msgid "typmod_out function %s must return type \"cstring\"" +msgstr "typmod_out类型函数 %s 必需返回类型 \"cstring\"" -#: rewrite/rewriteDefine.c:411 +#: commands/typecmds.c:1536 #, c-format -msgid "could not convert table \"%s\" to a view because it has triggers" -msgstr "无法把表 \"%s\" 转换为视图, 因为它有触发器" +msgid "type analyze function %s must return type \"boolean\"" +msgstr "类型 analyze 函数 %s 必需返回类型 \"boolean\"" -#: rewrite/rewriteDefine.c:413 +#: commands/typecmds.c:1836 +#, c-format +msgid "column \"%s\" of table \"%s\" contains null values" +msgstr "表 \"%2$s\" 的字段 \"%1$s\" 包含空值" + +#: commands/typecmds.c:2082 +#, c-format msgid "" -"In particular, the table cannot be involved in any foreign key relationships." -msgstr "特别是在任何外键关系中不能涉及表" +"column \"%s\" of table \"%s\" contains values that violate the new constraint" +msgstr "表 \"%2$s\" 的字段 \"%1$s\" 包含的值违反了新约束" -#: rewrite/rewriteDefine.c:418 +#: commands/typecmds.c:2287 #, c-format -msgid "could not convert table \"%s\" to a view because it has indexes" -msgstr "无法把表 \"%s\" 转换为视图, 因为它有索引" +msgid "%s is not a domain" +msgstr "%s 不是一个域" -#: rewrite/rewriteDefine.c:424 +#: commands/typecmds.c:2321 catalog/pg_constraint.c:654 #, c-format -msgid "could not convert table \"%s\" to a view because it has child tables" -msgstr "无法把表 \"%s\" 转换为视图, 因为它有子表" +msgid "constraint \"%s\" for domain \"%s\" already exists" +msgstr "域 \"%2$s\" 的约束 \"%1$s\" 已经存在" -#: rewrite/rewriteDefine.c:451 -msgid "cannot have multiple RETURNING lists in a rule" -msgstr "在一个规则中不能有多个RETURNING列表" +#: commands/typecmds.c:2369 commands/typecmds.c:2378 +msgid "cannot use table references in domain check constraint" +msgstr "在域检查约束中不可以使用表关联" -#: rewrite/rewriteDefine.c:456 -msgid "RETURNING lists are not supported in conditional rules" -msgstr "在条件规则中不支持RETURNING列表" +#: commands/typecmds.c:2386 catalog/heap.c:2501 +msgid "cannot use subquery in check constraint" +msgstr "在检查约束中不可以使用子查询" -#: rewrite/rewriteDefine.c:460 -msgid "RETURNING lists are not supported in non-INSTEAD rules" -msgstr "在非INSTEAD规则中不支持RETURNING列表" +#: commands/typecmds.c:2390 catalog/heap.c:2505 +msgid "cannot use aggregate function in check constraint" +msgstr "在检查约束中不能使用聚合函数" -#: rewrite/rewriteDefine.c:539 -msgid "SELECT rule's target list has too many entries" -msgstr "SELECT 规则的目标列表的记录太多" +#: commands/typecmds.c:2394 catalog/heap.c:2509 +msgid "cannot use window function in check constraint" +msgstr "在检查约束中不能使用窗口函数" -#: rewrite/rewriteDefine.c:540 -msgid "RETURNING list has too many entries" -msgstr "RETURNING列表中的项太多." +#: commands/typecmds.c:2608 commands/typecmds.c:2680 commands/typecmds.c:2919 +#, c-format +msgid "%s is a table's row type" +msgstr "%s 是一个表的记录类型" -#: rewrite/rewriteDefine.c:556 -msgid "cannot convert relation containing dropped columns to view" -msgstr "无法转换包含已删除字段的关系为视图" +#: commands/typecmds.c:2610 commands/typecmds.c:2682 commands/typecmds.c:2921 +msgid "Use ALTER TABLE instead." +msgstr "请使用 ALTER TABLE命令代替." -#: rewrite/rewriteDefine.c:561 +#: commands/typecmds.c:2617 commands/typecmds.c:2689 commands/typecmds.c:2838 #, c-format -msgid "SELECT rule's target entry %d has different column name from \"%s\"" -msgstr "SELECT 规则的目标记录 %d 的字段名和 \"%s\" 不同" +msgid "cannot alter array type %s" +msgstr "不能更改数组类型%s" -#: rewrite/rewriteDefine.c:567 +#: commands/typecmds.c:2619 commands/typecmds.c:2691 commands/typecmds.c:2840 #, c-format -msgid "SELECT rule's target entry %d has different type from column \"%s\"" -msgstr "SELECT 规则的目标记录 %d 和字段 \"%s\" 的类型不同" +msgid "You can alter type %s, which will alter the array type as well." +msgstr "您能够修改类型%s, 因而也能修改数组类型" -#: rewrite/rewriteDefine.c:569 +#: commands/typecmds.c:2905 #, c-format -msgid "RETURNING list's entry %d has different type from column \"%s\"" -msgstr "RETURNING列表中的第%d项与列\"%s\"的类型不同" +msgid "type \"%s\" already exists in schema \"%s\"" +msgstr "在于模式\"%2$s\"中已存在类型\"%1$s\"" -#: rewrite/rewriteDefine.c:584 +#: commands/tsearchcmds.c:117 commands/tsearchcmds.c:1044 #, c-format -msgid "SELECT rule's target entry %d has different size from column \"%s\"" -msgstr "SELECT 规则的目标记录 %d 与字段 \"%s\" 的大小不同" +msgid "function %s should return type %s" +msgstr "函数%s应该返回类型%s的值" + +#: commands/tsearchcmds.c:189 +msgid "must be superuser to create text search parsers" +msgstr "只有超级用户能创建文本搜索解析器" -#: rewrite/rewriteDefine.c:586 +#: commands/tsearchcmds.c:237 #, c-format -msgid "RETURNING list's entry %d has different size from column \"%s\"" -msgstr "在RETURNING列表中的第%d项的大小与列 \"%s\"不同" +msgid "text search parser parameter \"%s\" not recognized" +msgstr "未识别文本搜索参数\"%s\"" -#: rewrite/rewriteDefine.c:594 -msgid "SELECT rule's target list has too few entries" -msgstr "SELECT 规则的目标列表记录数太少" +#: commands/tsearchcmds.c:247 +msgid "text search parser start method is required" +msgstr "需要使用文本搜索解析器的start方法" -#: rewrite/rewriteDefine.c:595 -msgid "RETURNING list has too few entries" -msgstr "RETURNING 列表后面的项太少" +#: commands/tsearchcmds.c:252 +msgid "text search parser gettoken method is required" +msgstr "需要使用文本搜索解析器的gettoken方法" -#: rewrite/rewriteHandler.c:495 -msgid "cannot have RETURNING lists in multiple rules" -msgstr "无法在多个规则中拥有RETURNING列表" +#: commands/tsearchcmds.c:257 +msgid "text search parser end method is required" +msgstr "需要使用文本搜索解析器的end方法" -#: rewrite/rewriteHandler.c:796 rewrite/rewriteHandler.c:814 -#, c-format -msgid "multiple assignments to same column \"%s\"" -msgstr "对同一列\"%s\"进行了多次分配" +#: commands/tsearchcmds.c:262 +msgid "text search parser lextypes method is required" +msgstr "需要使用文本搜索解析器的lextypes方法" + +#: commands/tsearchcmds.c:297 +msgid "must be superuser to drop text search parsers" +msgstr "只有超级用户可以删除文本搜索解析器" -#: rewrite/rewriteHandler.c:1417 rewrite/rewriteHandler.c:1740 +#: commands/tsearchcmds.c:320 catalog/namespace.c:1906 #, c-format -msgid "infinite recursion detected in rules for relation \"%s\"" -msgstr "在关系 \"%s\" 的规则中发现无限循环" +msgid "text search parser \"%s\" does not exist" +msgstr "文本搜索解析器 \"%s\" 不存在" -#: rewrite/rewriteHandler.c:1778 +#: commands/tsearchcmds.c:326 #, c-format -msgid "cannot perform INSERT RETURNING on relation \"%s\"" -msgstr "无法在关系\"%s\"上执行INSERT RETURNING " +msgid "text search parser \"%s\" does not exist, skipping" +msgstr "文本搜索解析器\"%s\"不存在,跳过" -#: rewrite/rewriteHandler.c:1780 -msgid "" -"You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." -msgstr "您需要一个无条件, 且带有RETURNING子句的ON INSERT DO INSTEAD的规则." +#: commands/tsearchcmds.c:381 +msgid "must be superuser to rename text search parsers" +msgstr "只有超级用户可以重新命名文本搜索解析器" -#: rewrite/rewriteHandler.c:1785 +#: commands/tsearchcmds.c:399 #, c-format -msgid "cannot perform UPDATE RETURNING on relation \"%s\"" -msgstr "无法在关系\"%s\"执行UPDATE RETURNING" +msgid "text search parser \"%s\" already exists" +msgstr "文本搜索解析器\"%s\"已存在" -#: rewrite/rewriteHandler.c:1787 -msgid "" -"You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." -msgstr "您需要一个无条件的 ON UPDATE DO INSTEAD 规则." +#: commands/tsearchcmds.c:525 +#, c-format +msgid "text search template \"%s\" does not accept options" +msgstr "文本搜索模板 \"%s\"不接受使用选项" + +# describe.c:1753 +#: commands/tsearchcmds.c:598 +msgid "text search template is required" +msgstr "要求使用文本搜寻模板" -#: rewrite/rewriteHandler.c:1792 +#: commands/tsearchcmds.c:667 #, c-format -msgid "cannot perform DELETE RETURNING on relation \"%s\"" -msgstr "无法在关系 \"%s\"上执行DELETE RETURNING" +msgid "text search dictionary \"%s\" already exists" +msgstr "文本搜索字典\"%s\" 已经存在" -#: rewrite/rewriteHandler.c:1794 -msgid "" -"You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." -msgstr "您需要一个无条件, 且带有RETURNING子句的ON DELETE DO INSTEAD 规则." +#: commands/tsearchcmds.c:769 catalog/namespace.c:2029 +#, c-format +msgid "text search dictionary \"%s\" does not exist" +msgstr "文本搜索字典 \"%s\" 不存在" -#: rewrite/rewriteHandler.c:1892 -msgid "cannot insert into a view" -msgstr "无法插入到一个视图" +#: commands/tsearchcmds.c:775 +#, c-format +msgid "text search dictionary \"%s\" does not exist, skipping" +msgstr "文本搜索字典 \"%s\" 不存在,跳过" -#: rewrite/rewriteHandler.c:1893 -msgid "You need an unconditional ON INSERT DO INSTEAD rule." -msgstr "你需要一个无条件的 ON INSERT DO INSTEAD 规则." +#: commands/tsearchcmds.c:1108 +msgid "must be superuser to create text search templates" +msgstr "只有超级用户能创建文本搜索模板" -#: rewrite/rewriteHandler.c:1898 -msgid "cannot update a view" -msgstr "无法更新一个视图" +#: commands/tsearchcmds.c:1145 +#, c-format +msgid "text search template parameter \"%s\" not recognized" +msgstr "未识别文本搜索模板参数\"%s\"" -#: rewrite/rewriteHandler.c:1899 -msgid "You need an unconditional ON UPDATE DO INSTEAD rule." -msgstr "你需要一个无条件的 ON UPDATE DO INSTEAD 规则." +#: commands/tsearchcmds.c:1155 +msgid "text search template lexize method is required" +msgstr "要求使用文本搜索模板词汇方法" -#: rewrite/rewriteHandler.c:1904 -msgid "cannot delete from a view" -msgstr "无法从一个视图中删除" +#: commands/tsearchcmds.c:1193 +msgid "must be superuser to rename text search templates" +msgstr "只有超级用户可以重新命名文本搜索模板" -#: rewrite/rewriteHandler.c:1905 -msgid "You need an unconditional ON DELETE DO INSTEAD rule." -msgstr "你需要一个无条件的 ON DELETE DO INSTEAD 规则." +#: commands/tsearchcmds.c:1212 +#, c-format +msgid "text search template \"%s\" already exists" +msgstr "文本搜索模板\"%s\" 已经存在" -#: rewrite/rewriteManip.c:1009 -msgid "conditional utility statements are not implemented" -msgstr "条件工具语句没有实现" +#: commands/tsearchcmds.c:1281 +msgid "must be superuser to drop text search templates" +msgstr "只有超级用户可以删除文本搜索模板" -#: rewrite/rewriteManip.c:1174 -msgid "WHERE CURRENT OF on a view is not implemented" -msgstr "未实现在视图上的WHERE CURRENT OF操作" +#: commands/tsearchcmds.c:1304 catalog/namespace.c:2153 +#, c-format +msgid "text search template \"%s\" does not exist" +msgstr "文本搜索模版 \"%s\" 不存在" -#: rewrite/rewriteRemove.c:66 +#: commands/tsearchcmds.c:1310 #, c-format -msgid "rule \"%s\" for relation \"%s\" does not exist, skipping" -msgstr "关系 \"%2$s\"的规则\"%1$s\"不存在,跳过" +msgid "text search template \"%s\" does not exist, skipping" +msgstr "文本搜索模板\"%s\"不存在,跳过" -#: utils/cache/typcache.c:331 +#: commands/tsearchcmds.c:1508 #, c-format -msgid "type %s is not composite" -msgstr "类型 %s 不是复合类型" +msgid "text search configuration parameter \"%s\" not recognized" +msgstr "未识别文本搜索配置参数\"%s\"" -#: utils/cache/typcache.c:345 -msgid "record type has not been registered" -msgstr "记录类型没有注册" +#: commands/tsearchcmds.c:1515 +msgid "cannot specify both PARSER and COPY options" +msgstr "不能同时指定PARSER和COPY选项" -#: utils/cache/lsyscache.c:2234 utils/cache/lsyscache.c:2267 -#: utils/cache/lsyscache.c:2300 utils/cache/lsyscache.c:2333 -#, c-format -msgid "type %s is only a shell" -msgstr "类型 %s 只是一个 shell" +#: commands/tsearchcmds.c:1543 +msgid "text search parser is required" +msgstr "需要使用文本搜索解析器" -#: utils/cache/lsyscache.c:2239 +#: commands/tsearchcmds.c:1652 #, c-format -msgid "no input function available for type %s" -msgstr "没有有效的 %s 类型输入函数" +msgid "text search configuration \"%s\" already exists" +msgstr "文本搜索配置\"%s\"已存在" -#: utils/cache/lsyscache.c:2272 +#: commands/tsearchcmds.c:1759 #, c-format -msgid "no output function available for type %s" -msgstr "没有有效的 %s 类型输出函数" +msgid "text search configuration \"%s\" does not exist, skipping" +msgstr "文本搜寻配置 \"%s\"不存在,跳过" -#: utils/cache/lsyscache.c:2305 utils/adt/arrayfuncs.c:1282 +#: commands/tsearchcmds.c:1981 #, c-format -msgid "no binary input function available for type %s" -msgstr "没有类型 %s 的有效二进制输入函数" +msgid "token type \"%s\" does not exist" +msgstr "符号类型 \"%s\" 不存在" -#: utils/cache/lsyscache.c:2338 utils/adt/arrayfuncs.c:1504 +#: commands/tsearchcmds.c:2203 #, c-format -msgid "no binary output function available for type %s" -msgstr "没有类型 %s 的有效二进制输出函数" - -#: utils/cache/plancache.c:589 -msgid "cached plan must not change result type" -msgstr "已缓冲的计划不能改变结果类型" +msgid "mapping for token type \"%s\" does not exist" +msgstr "符号类型\"%s\"的映射不存在" -#: utils/cache/relcache.c:4289 +#: commands/tsearchcmds.c:2209 #, c-format -msgid "could not create relation-cache initialization file \"%s\": %m" -msgstr "无法创建 relation-cache 初始化文件 \"%s\": %m" - -#: utils/cache/relcache.c:4291 -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操作" +msgid "mapping for token type \"%s\" does not exist, skipping" +msgstr "符号类型\"%s\"的映射不存在, 跳过" -#: utils/cache/relmapper.c:596 utils/cache/relmapper.c:702 +#: commands/tsearchcmds.c:2362 commands/tsearchcmds.c:2473 #, c-format -msgid "could not open relation mapping file \"%s\": %m" -msgstr "无法打开关系映射文件 \"%s\": %m" +msgid "invalid parameter list format: \"%s\"" +msgstr "无效参数列表格式: \"%s\"" -#: utils/cache/relmapper.c:609 +#: commands/alter.c:415 #, c-format -msgid "could not read relation mapping file \"%s\": %m" -msgstr "无法读取关系映射文件 \"%s\": %m" +msgid "must be superuser to set schema of %s" +msgstr "只有超级用户能设置%s的模式" -#: utils/cache/relmapper.c:619 +#: commands/alter.c:443 #, c-format -msgid "relation mapping file \"%s\" contains invalid data" -msgstr "在关系映射文件\"%s\"中包含无效的数据" +msgid "%s already exists in schema \"%s\"" +msgstr "在于模式\"%2$s\"中已存在类型%1$s" -#: utils/cache/relmapper.c:629 +#: foreign/foreign.c:198 #, c-format -msgid "relation mapping file \"%s\" contains incorrect checksum" -msgstr "在关系映射文件\"%s\"中包含不正确的检验和" +msgid "user mapping not found for \"%s\"" +msgstr "没有找到对于\"%s\"的用户映射" -#: utils/cache/relmapper.c:741 +#: foreign/foreign.c:321 #, c-format -msgid "could not write to relation mapping file \"%s\": %m" -msgstr "无法对关系映射文件 \"%s\" 进行写操作: %m" +msgid "foreign-data wrapper \"%s\" has no handler" +msgstr "外部数据封装器 \"%s\"没有处理函数" -#: utils/cache/relmapper.c:754 +#: foreign/foreign.c:498 #, c-format -msgid "could not fsync relation mapping file \"%s\": %m" -msgstr "无法将关系映射文件\"%s\"的内容刷新到磁盘: %m" +msgid "invalid option \"%s\"" +msgstr "无效选项 \"%s\"" -#: utils/cache/relmapper.c:760 +#: foreign/foreign.c:499 #, c-format -msgid "could not close relation mapping file \"%s\": %m" -msgstr "无法关闭关系映射文件\"%s\": %m" +msgid "Valid options in this context are: %s" +msgstr "这个环境中有效选项是:%s" -#: utils/sort/logtape.c:213 +#: regex/regc_pg_locale.c:258 +msgid "could not determine which collation to use for regular expression" +msgstr "无法确定正规表达式中使用何种排序规则" + +#: nodes/nodeFuncs.c:114 nodes/nodeFuncs.c:140 parser/parse_coerce.c:1671 +#: parser/parse_coerce.c:1688 parser/parse_coerce.c:1750 +#: parser/parse_expr.c:1638 parser/parse_oper.c:948 parser/parse_func.c:367 #, c-format -msgid "could not write block %ld of temporary file: %m" -msgstr "无法写入临时文件块 %ld: %m" +msgid "could not find array type for data type %s" +msgstr "无法为数据类型 %s 找到数组类型" -#: utils/sort/logtape.c:215 -msgid "Perhaps out of disk space?" -msgstr "可能超出磁盘空间?" +#: executor/nodeSubplan.c:302 executor/nodeSubplan.c:341 +#: executor/nodeSubplan.c:968 +msgid "more than one row returned by a subquery used as an expression" +msgstr "作为一个表达式使用的子查询返回了多列" -#: utils/sort/logtape.c:232 -#, c-format -msgid "could not read block %ld of temporary file: %m" -msgstr "无法读取临时文件块 %ld: %m" +#: executor/nodeWindowAgg.c:1238 +msgid "frame starting offset must not be null" +msgstr "框架(frame)的启动偏移量不能为空" -#: utils/sort/tuplesort.c:2806 -#, c-format -msgid "could not create unique index \"%s\"" -msgstr "无法创建唯一索引\"%s\"" +#: executor/nodeWindowAgg.c:1251 +msgid "frame starting offset must not be negative" +msgstr "框架(frame)的启动偏移量不能为负数" -#: utils/sort/tuplesort.c:2808 -#, c-format -msgid "Key %s is duplicated." -msgstr "键值%s重复了" +#: executor/nodeWindowAgg.c:1264 +msgid "frame ending offset must not be null" +msgstr "框架(frame)的结束偏移量不能为空" -#: utils/mmgr/aset.c:409 -#, c-format -msgid "Failed while creating memory context \"%s\"." -msgstr "创建内存上下文 \"%s\" 失败." +#: executor/nodeWindowAgg.c:1277 +msgid "frame ending offset must not be negative" +msgstr "框架(frame)的结束偏移量不能为负数" -#: utils/mmgr/aset.c:588 utils/mmgr/aset.c:771 utils/mmgr/aset.c:977 +#: executor/nodeWindowAgg.c:1851 executor/nodeAgg.c:1730 #, c-format -msgid "Failed on request of size %lu." -msgstr "分配内存 %lu 大小失败." +msgid "aggregate %u needs to have compatible input type and transition type" +msgstr "聚集 %u 需要有兼容的输入类型和转换类型" -#: utils/mmgr/portalmem.c:207 +#: executor/functions.c:195 #, c-format -msgid "cursor \"%s\" already exists" -msgstr "游标 \"%s\" 已经存在" +msgid "could not determine actual type of argument declared %s" +msgstr "无法确定声明为 %s 的参数的实际类型" -#: utils/mmgr/portalmem.c:211 +#. translator: %s is a SQL statement name +#: executor/functions.c:295 #, c-format -msgid "closing existing cursor \"%s\"" -msgstr "关闭已存在的游标 \"%s\"" +msgid "%s is not allowed in a SQL function" +msgstr "%s 不允许在一个 SQL 函数中" -#: utils/mmgr/portalmem.c:422 +#. translator: %s is a SQL statement name +#: executor/functions.c:302 executor/spi.c:1256 executor/spi.c:1891 #, c-format -msgid "cannot drop active portal \"%s\"" -msgstr "不能删除处于活动状态的portal \"%s\"" - -#: utils/mmgr/portalmem.c:627 -msgid "cannot PREPARE a transaction that has created a cursor WITH HOLD" -msgstr "无法对一个已经创建带有WITH HOLD游标的事务执行PREPARE操作." +msgid "%s is not allowed in a non-volatile function" +msgstr "%s 在一个 non-valatile 函数中是不允许的" -#: utils/adt/xml.c:135 -msgid "unsupported XML feature" -msgstr "不支持的XML特性" +#: executor/functions.c:408 +#, c-format +msgid "" +"could not determine actual result type for function declared to return type " +"%s" +msgstr "无法确定实际结果类型为函数声明返回类型 %s" -#: utils/adt/xml.c:136 -msgid "This functionality requires the server to be built with libxml support." -msgstr "这个功能是需要在创建服务器时带有对libxml的支持才能实现 " +#: executor/functions.c:1146 +#, c-format +msgid "SQL function \"%s\" statement %d" +msgstr "SQL 函数 \"%s\" 语句 %d" -#: utils/adt/xml.c:137 -msgid "You need to rebuild PostgreSQL using --with-libxml." -msgstr "您需要使用--with-libxml选项重新生成PostgreSQL" +#: executor/functions.c:1162 catalog/pg_proc.c:891 +#, c-format +msgid "SQL function \"%s\"" +msgstr "SQL 函数 \"%s\"" -#: utils/adt/xml.c:156 utils/mb/mbutils.c:476 +#: executor/functions.c:1172 #, c-format -msgid "invalid encoding name \"%s\"" -msgstr "无效的编码名称 \"%s\"" +msgid "SQL function \"%s\" during startup" +msgstr "SQL 函数 \"%s\" 在启动的时候" -# command.c:122 -#: utils/adt/xml.c:402 utils/adt/xml.c:407 -msgid "invalid XML comment" -msgstr "无效的XML注释" +#: 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 不匹配" -#: utils/adt/xml.c:536 -msgid "not an XML document" -msgstr "不是一个XML文档" +#: executor/functions.c:1334 +msgid "" +"Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING." +msgstr "函数的最后语句必须是 SELECT 或 INSERT/UPDATE/DELETE RETURNING." -#: utils/adt/xml.c:689 utils/adt/xml.c:712 -msgid "invalid XML processing instruction" -msgstr "无效的XML处理命令" +#: executor/functions.c:1370 +msgid "Final statement must return exactly one column." +msgstr "最终的语句必须返回一列." -#: utils/adt/xml.c:690 +#: executor/functions.c:1382 #, c-format -msgid "XML processing instruction target name cannot be \"%s\"." -msgstr "XML处理命令目标名称不能是\"%s\"." +msgid "Actual return type is %s." +msgstr "实际返回类型是 %s." -#: utils/adt/xml.c:713 -msgid "XML processing instruction cannot contain \"?>\"." -msgstr "XML处理命令不能包含\"?>\"." +#: executor/functions.c:1495 +msgid "Final statement returns too many columns." +msgstr "最终的语句的返回列太多." -#: utils/adt/xml.c:792 -msgid "xmlvalidate is not implemented" -msgstr "没有实现xmlvalidate" +#: executor/functions.c:1528 +#, c-format +msgid "Final statement returns %s instead of %s at column %d." +msgstr "最终语句在第 %3$d 列返回 %1$s 而不是 %2$s" -#: utils/adt/xml.c:877 -msgid "could not initialize XML library" -msgstr "无法初始化XML库" +#: executor/functions.c:1558 +msgid "Final statement returns too few columns." +msgstr "最终的语句返回的列太少." -#: utils/adt/xml.c:878 +#: executor/functions.c:1607 #, c-format -msgid "" -"libxml2 has incompatible char type: sizeof(char)=%u, sizeof(xmlChar)=%u." -msgstr "libxml2具有不兼容的字符类型: sizeof(char)=%u, sizeof(xmlChar)=%u. " +msgid "return type %s is not supported for SQL functions" +msgstr "SQL 函数不支持返回类型 %s" -#: utils/adt/xml.c:1417 -msgid "Invalid character value." -msgstr "无效的字符值" +#: executor/nodeModifyTable.c:82 executor/nodeModifyTable.c:92 +#: executor/nodeModifyTable.c:109 executor/nodeModifyTable.c:117 +#: executor/execQual.c:837 executor/execQual.c:854 executor/execQual.c:1014 +msgid "table row type and query-specified row type do not match" +msgstr "表记录类型和查询指定记录不匹配" -#: utils/adt/xml.c:1420 -msgid "Space required." -msgstr "要求空格" +#: executor/nodeModifyTable.c:83 +msgid "Query has too many columns." +msgstr "查询中的列太多了" -#: utils/adt/xml.c:1423 -msgid "standalone accepts only 'yes' or 'no'." -msgstr "单机只接受'yes'或'no'." +#: executor/nodeModifyTable.c:93 executor/execQual.c:855 +#, c-format +msgid "Table has type %s at ordinal position %d, but query expects %s." +msgstr "表在位置%2$d具有类型%1$s,但是查询期望类型%3$s." -#: utils/adt/xml.c:1426 -msgid "Malformed declaration: missing version." -msgstr "有缺陷的声明: 丢失版本." +#: executor/nodeModifyTable.c:110 +#, c-format +msgid "Query provides a value for a dropped column at ordinal position %d." +msgstr "在顺序位置%d上查询为已删除的列提供了一个值" -#: utils/adt/xml.c:1429 -msgid "Missing encoding in text declaration." -msgstr "在文本声明中丢失编码" +#: executor/nodeModifyTable.c:118 +msgid "Query has too few columns." +msgstr "查询中的列太少了" -#: utils/adt/xml.c:1432 -msgid "Parsing XML declaration: '?>' expected." -msgstr "正在解析XML声明: 期望'?>' " +#: executor/nodeLimit.c:253 +msgid "OFFSET must not be negative" +msgstr "OFFSET后的值不能是负数" + +#: executor/nodeLimit.c:280 +msgid "LIMIT must not be negative" +msgstr "LIMIT后的值不能为负数" -#: utils/adt/xml.c:1435 +#: executor/execMain.c:999 #, c-format -msgid "Unrecognized libxml error code: %d." -msgstr "未知的libxml错误码: %d" +msgid "cannot change sequence \"%s\"" +msgstr "不可以改变序列 \"%s\"" -#: utils/adt/xml.c:1688 utils/adt/date.c:217 -msgid "date out of range" -msgstr "日期超出范围" +#: executor/execMain.c:1005 +#, c-format +msgid "cannot change TOAST relation \"%s\"" +msgstr "不可以改变 TOAST 关系 \"%s\"" -#: utils/adt/xml.c:1689 -msgid "XML does not support infinite date values." -msgstr "XML不支持无限日期值" +#: executor/execMain.c:1015 +#, c-format +msgid "cannot insert into view \"%s\"" +msgstr "无法插入到视图\"%s\"" -#: utils/adt/xml.c:1711 utils/adt/xml.c:1718 utils/adt/xml.c:1738 -#: utils/adt/xml.c:1745 utils/adt/date.c:880 utils/adt/date.c:927 -#: utils/adt/date.c:1483 utils/adt/date.c:1520 utils/adt/date.c:2394 -#: utils/adt/formatting.c:2956 utils/adt/formatting.c:2988 -#: utils/adt/formatting.c:3056 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 "时间戳超出范围" +#: executor/execMain.c:1017 +msgid "" +"You need an unconditional ON INSERT DO INSTEAD rule or an INSTEAD OF INSERT " +"trigger." +msgstr "" +"你需要一个无条件的 ON INSERT DO INSTEAD 规则或者INSTEAD OF INSERT触发器." -#: utils/adt/xml.c:1712 utils/adt/xml.c:1739 -msgid "XML does not support infinite timestamp values." -msgstr "XML不支持无限时间戳值" +#: executor/execMain.c:1023 +#, c-format +msgid "cannot update view \"%s\"" +msgstr "无法更新视图\"%s\"" -#: utils/adt/xml.c:2123 -msgid "invalid query" -msgstr "无效的查询" +#: executor/execMain.c:1025 +msgid "" +"You need an unconditional ON UPDATE DO INSTEAD rule or an INSTEAD OF UPDATE " +"trigger." +msgstr "" +"你需要一个无条件的 ON UPDATE DO INSTEAD 规则或者INSTEAD OF UPDATE触发器." -#: utils/adt/xml.c:3352 -msgid "invalid array for XML namespace mapping" -msgstr "对于XML命名空间映射的无效数组" +#: executor/execMain.c:1031 +#, c-format +msgid "cannot delete from view \"%s\"" +msgstr "无法删除视图\"%s\"" -#: utils/adt/xml.c:3353 +#: executor/execMain.c:1033 msgid "" -"The array must be two-dimensional with length of the second axis equal to 2." -msgstr "数组必须是第二个坐标轴等于2的两维数组" +"You need an unconditional ON DELETE DO INSTEAD rule or an INSTEAD OF DELETE " +"trigger." +msgstr "" +"你需要一个无条件的 ON DELETE DO INSTEAD 规则或者INSTEAD OF DELETE触发器." -#: utils/adt/xml.c:3377 -msgid "empty XPath expression" -msgstr "空的XPath表达式" +#: executor/execMain.c:1043 +#, c-format +msgid "cannot change foreign table \"%s\"" +msgstr "无法改变外部表 \"%s\"" -#: utils/adt/xml.c:3425 -msgid "neither namespace name nor URI may be null" -msgstr "URI或者命名空间名称不可为空." +#: executor/execMain.c:1049 +#, c-format +msgid "cannot change relation \"%s\"" +msgstr "无法改变关系 \"%s\"" -# fe-misc.c:702 -#: utils/adt/xml.c:3432 +#: executor/execMain.c:1073 #, c-format -msgid "could not register XML namespace with name \"%s\" and URI \"%s\"" -msgstr "无法以名称\"%s\"和URI\"%s\"来注册XML命名空间" +msgid "cannot lock rows in sequence \"%s\"" +msgstr "无法锁定序列\"%s\"中的行" -#: utils/adt/acl.c:164 utils/adt/name.c:87 -msgid "identifier too long" -msgstr "标识符太长" +#: executor/execMain.c:1080 +#, c-format +msgid "cannot lock rows in TOAST relation \"%s\"" +msgstr "无法锁定TOAST 关系 \"%s\"中的行" -#: utils/adt/acl.c:165 utils/adt/name.c:88 +#: executor/execMain.c:1087 #, c-format -msgid "Identifier must be less than %d characters." -msgstr "标识符必须小于 %d 个字符." +msgid "cannot lock rows in view \"%s\"" +msgstr "无法锁定 \"%s\" 中的行" -#: utils/adt/acl.c:251 +#: executor/execMain.c:1094 #, c-format -msgid "unrecognized key word: \"%s\"" -msgstr "未知的键值: \"%s\"" +msgid "cannot lock rows in foreign table \"%s\"" +msgstr "无法锁定外部表 \"%s\"中的行" -#: utils/adt/acl.c:252 -msgid "ACL key word must be \"group\" or \"user\"." -msgstr "ACL 键值必须为 \"group\" 或者 \"user\"." +#: executor/execMain.c:1100 +#, c-format +msgid "cannot lock rows in relation \"%s\"" +msgstr "无法锁定关系 \"%s\"中的行" -#: utils/adt/acl.c:257 -msgid "missing name" -msgstr "缺少名字" +#: executor/execMain.c:1571 +#, c-format +msgid "null value in column \"%s\" violates not-null constraint" +msgstr "在字段 \"%s\" 中空值违反了非空约束" -#: utils/adt/acl.c:258 -msgid "A name must follow the \"group\" or \"user\" key word." -msgstr "一个名字必须为 \"group\" 或者 \"user\" 键值." +#: executor/execMain.c:1583 +#, c-format +msgid "new row for relation \"%s\" violates check constraint \"%s\"" +msgstr "关系 \"%s\" 的新列违反了检查约束 \"%s\"" -#: utils/adt/acl.c:264 -msgid "missing \"=\" sign" -msgstr "缺少 \"=\" 符号" +#: executor/nodeMergejoin.c:1604 +msgid "RIGHT JOIN is only supported with merge-joinable join conditions" +msgstr "RIGHT JOIN 只支持可合并联结条件" -#: utils/adt/acl.c:317 -#, c-format -msgid "invalid mode character: must be one of \"%s\"" -msgstr "无效的模式字符: 必须是 \"%s\" 其中的一个" +#: executor/nodeMergejoin.c:1624 +msgid "FULL JOIN is only supported with merge-joinable join conditions" +msgstr "只有在合并连接查询条件中才支持FULL JOIN" -#: utils/adt/acl.c:339 -msgid "a name must follow the \"/\" sign" -msgstr "名字必须再 \"/\" 符号后" +#: executor/execUtils.c:1308 +#, c-format +msgid "could not create exclusion constraint \"%s\"" +msgstr "无法创建排他约束\"%s\"" -#: utils/adt/acl.c:347 +#: executor/execUtils.c:1310 #, c-format -msgid "defaulting grantor to user ID %u" -msgstr "缺省将授权者身份给予用户ID %u" +msgid "Key %s conflicts with key %s." +msgstr "键%s与另外一个键%s冲突" -#: utils/adt/acl.c:538 -msgid "ACL array contains wrong data type" -msgstr "ACL数组包含错误数据类型" +#: executor/execUtils.c:1315 +#, c-format +msgid "conflicting key value violates exclusion constraint \"%s\"" +msgstr "互相冲突的键值违反排他约束\"%s\"" -#: utils/adt/acl.c:542 -msgid "ACL arrays must be one-dimensional" -msgstr "ACL数组必须是一维数组" +#: executor/execUtils.c:1317 +#, c-format +msgid "Key %s conflicts with existing key %s." +msgstr "键%s与已存在的键%s冲突" -#: utils/adt/acl.c:546 -msgid "ACL arrays must not contain null values" -msgstr "ACL数组不能包含空值" +#: executor/spi.c:210 +msgid "transaction left non-empty SPI stack" +msgstr "事物剩下非空的 SPI 栈" -#: utils/adt/acl.c:570 -msgid "extra garbage at the end of the ACL specification" -msgstr "在ACL定义的结束部分的多余的无用部分" +#: executor/spi.c:211 executor/spi.c:275 +msgid "Check for missing \"SPI_finish\" calls." +msgstr "检查是否缺少 \"SPI_finish\" 调用." -#: utils/adt/acl.c:1127 -msgid "grant options cannot be granted back to your own grantor" -msgstr "不能将grant选项授予您自己的授予者 " +#: executor/spi.c:274 +msgid "subtransaction left non-empty SPI stack" +msgstr "子事物剩下非空的 SPI 栈" -#: utils/adt/acl.c:1188 -msgid "dependent privileges exist" -msgstr "存在依赖权限" +#: executor/spi.c:1137 +msgid "cannot open multi-query plan as cursor" +msgstr "无法作为游标打开多条查询规划" -#: utils/adt/acl.c:1189 -msgid "Use CASCADE to revoke them too." -msgstr "使用CASCADE回收这些权限" +#. 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" -#: utils/adt/acl.c:1468 -msgid "aclinsert is no longer supported" -msgstr "不再支持 aclinsert" +#: executor/spi.c:1233 parser/analyze.c:2213 +msgid "DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE is not supported" +msgstr "不支持DECLARE SCROLL CURSOR ... FOR UPDATE/SHARE " -#: utils/adt/acl.c:1478 -msgid "aclremove is no longer supported" -msgstr "不再支持 aclremove" +#: executor/spi.c:1234 parser/analyze.c:2214 +msgid "Scrollable cursors must be READ ONLY." +msgstr "可滚动游标必须为只读." -#: utils/adt/acl.c:1564 utils/adt/acl.c:1618 +#: executor/spi.c:2157 #, c-format -msgid "unrecognized privilege type: \"%s\"" -msgstr "未知的权限类型: \"%s\"" +msgid "SQL statement \"%s\"" +msgstr "SQL 语句 \"%s\"" -#: utils/adt/acl.c:3364 utils/adt/regproc.c:118 utils/adt/regproc.c:139 -#: utils/adt/regproc.c:289 +#: executor/nodeHashjoin.c:814 executor/nodeHashjoin.c:844 #, c-format -msgid "function \"%s\" does not exist" -msgstr "函数 \"%s\" 不存在" +msgid "could not rewind hash-join temporary file: %m" +msgstr "无法卷回 (rewind) 散列联接 (hash-join) 临时文件: %m" -#: utils/adt/acl.c:4635 +#: executor/nodeHashjoin.c:879 executor/nodeHashjoin.c:885 #, c-format -msgid "must be member of role \"%s\"" -msgstr "必须是角色\"%s\"的成员" +msgid "could not write to hash-join temporary file: %m" +msgstr "无法写入散列联接 (hash-join) 临时文件: %m" -#: utils/adt/array_userfuncs.c:48 -msgid "could not determine input data types" -msgstr "无法确定输入数据类型" +#: executor/nodeHashjoin.c:919 executor/nodeHashjoin.c:929 +#, c-format +msgid "could not read from hash-join temporary file: %m" +msgstr "无法从散列联接 (hash-join) 临时文件读取: %m" -#: utils/adt/array_userfuncs.c:82 -msgid "neither input type is an array" -msgstr "没有输入类型是数组" - -#: utils/adt/array_userfuncs.c:103 utils/adt/array_userfuncs.c:113 -#: utils/adt/arrayfuncs.c:1251 utils/adt/float.c:1101 utils/adt/float.c:1160 -#: utils/adt/float.c:2711 utils/adt/float.c:2727 utils/adt/int.c:622 -#: utils/adt/int.c:651 utils/adt/int.c:672 utils/adt/int.c:692 -#: utils/adt/int.c:714 utils/adt/int.c:739 utils/adt/int.c:753 -#: utils/adt/int.c:768 utils/adt/int.c:903 utils/adt/int.c:924 -#: utils/adt/int.c:951 utils/adt/int.c:991 utils/adt/int.c:1012 -#: utils/adt/int.c:1039 utils/adt/int.c:1066 utils/adt/int.c:1120 -#: utils/adt/int8.c:1196 utils/adt/numeric.c:2062 utils/adt/numeric.c:2071 -#: utils/adt/varbit.c:1098 utils/adt/varbit.c:1483 utils/adt/varlena.c:942 -#: utils/adt/varlena.c:1915 -msgid "integer out of range" -msgstr "整数超出范围" +#: executor/execCurrent.c:75 +#, c-format +msgid "cursor \"%s\" is not a SELECT query" +msgstr "游标 \"%s\"不是一个SELECT查询" -#: utils/adt/array_userfuncs.c:121 -msgid "argument must be empty or one-dimensional array" -msgstr "参数必须为空或者一维数组" +#: executor/execCurrent.c:81 +#, c-format +msgid "cursor \"%s\" is held from a previous transaction" +msgstr "游标\"%s\"是前一个事务所持有的" -#: 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 "无法连结不兼容的数组" +#: executor/execCurrent.c:113 +#, c-format +msgid "cursor \"%s\" has multiple FOR UPDATE/SHARE references to table \"%s\"" +msgstr "游标\"%s\"有多个引用表\"%s\"的FOR UPDATE/SHARE语句" -#: utils/adt/array_userfuncs.c:225 +#: executor/execCurrent.c:122 #, c-format msgid "" -"Arrays with element types %s and %s are not compatible for concatenation." -msgstr "成员类型是%s和%s的数组对于串联操作是不兼容的." +"cursor \"%s\" does not have a FOR UPDATE/SHARE reference to table \"%s\"" +msgstr "游标\"%s\"没有引用表\"%s\"的FOR UPDATE/SHARE语句" -#: utils/adt/array_userfuncs.c:264 +#: executor/execCurrent.c:132 executor/execCurrent.c:178 #, c-format -msgid "Arrays of %d and %d dimensions are not compatible for concatenation." -msgstr "维度是%d和%d的数组对于串联操作不兼容" +msgid "cursor \"%s\" is not positioned on a row" +msgstr "没有在记录上对游标\"%s\"进行定位" -#: utils/adt/array_userfuncs.c:301 +#: 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:1126 +#, c-format msgid "" -"Arrays with differing element dimensions are not compatible for " -"concatenation." -msgstr "带有不同成员维度的数组对于串联操作不兼容" +"type of parameter %d (%s) does not match that when preparing the plan (%s)" +msgstr "第%d个参数(%s)的类型与正在执行计划(%s)中的不匹配" -#: utils/adt/array_userfuncs.c:330 utils/adt/array_userfuncs.c:358 -msgid "Arrays with differing dimensions are not compatible for concatenation." -msgstr "带有不同维度的数组对于串联操作不兼容." +#: executor/execCurrent.c:242 executor/execQual.c:1138 +#, c-format +msgid "no value found for parameter %d" +msgstr "没有找到参数 %d 的值" -#: utils/adt/array_userfuncs.c:424 utils/adt/arrayfuncs.c:1214 -#: utils/adt/arrayfuncs.c:2882 utils/adt/arrayfuncs.c:4562 +#: executor/execQual.c:316 executor/execQual.c:344 +msgid "array subscript in assignment must not be null" +msgstr "在分配中的数组下标不能为空" + +#: executor/execQual.c:637 executor/execQual.c:3998 #, c-format -msgid "invalid number of dimensions: %d" -msgstr "无效的大小值: %d" +msgid "attribute %d has wrong type" +msgstr "属性%d的类型错误" -#: utils/adt/array_userfuncs.c:484 -msgid "could not determine input data type" -msgstr "无法确定输入数据类型" +#: executor/execQual.c:638 executor/execQual.c:3999 +#, c-format +msgid "Table has type %s, but query expects %s." +msgstr "表具有类型%s,但是查询期望类型%s." -#: utils/adt/arrayfuncs.c:211 utils/adt/arrayfuncs.c:223 -msgid "missing dimension value" -msgstr "缺少大小值" +#: executor/execQual.c:838 +#, 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个属性" -#: utils/adt/arrayfuncs.c:233 -msgid "missing \"]\" in array dimensions" -msgstr "数组声明缺少 ']'" +#: executor/execQual.c:1015 executor/execQual.c:1612 +#, c-format +msgid "Physical storage mismatch on dropped attribute at ordinal position %d." +msgstr "在顺序位置%d上已删除属性与物理存储上的不匹配." -#: utils/adt/arrayfuncs.c:241 utils/adt/arrayfuncs.c:2411 -#: utils/adt/arrayfuncs.c:2439 utils/adt/arrayfuncs.c:2454 -msgid "upper bound cannot be less than lower bound" -msgstr "上限不能小于底限" +#: executor/execQual.c:1291 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个" -#: utils/adt/arrayfuncs.c:253 utils/adt/arrayfuncs.c:279 -msgid "array value must start with \"{\" or dimension information" -msgstr "数组值必须以 \"{\" 开始或者维数信息" +#: executor/execQual.c:1480 +msgid "functions and operators can take at most one set argument" +msgstr "函数和操作符最多带一组参数" -#: utils/adt/arrayfuncs.c:267 -msgid "missing assignment operator" -msgstr "缺少指定的操作符" +#: executor/execQual.c:1530 +msgid "" +"function returning setof record called in context that cannot accept type " +"record" +msgstr "调用用于返回setof记录的函数的环境不能接受使用记录类型" -#: utils/adt/arrayfuncs.c:284 utils/adt/arrayfuncs.c:290 -msgid "array dimensions incompatible with array literal" -msgstr "数组维数与数组值不兼容" +#: executor/execQual.c:1585 executor/execQual.c:1601 executor/execQual.c:1611 +msgid "function return row and query-specified return row do not match" +msgstr "指定查询返回记录和实际函数返回记录不匹配" -#: utils/adt/arrayfuncs.c:420 utils/adt/arrayfuncs.c:435 -#: utils/adt/arrayfuncs.c:444 utils/adt/arrayfuncs.c:458 -#: utils/adt/arrayfuncs.c:478 utils/adt/arrayfuncs.c:506 -#: utils/adt/arrayfuncs.c:511 utils/adt/arrayfuncs.c:551 -#: utils/adt/arrayfuncs.c:572 utils/adt/arrayfuncs.c:591 -#: utils/adt/arrayfuncs.c:701 utils/adt/arrayfuncs.c:710 -#: utils/adt/arrayfuncs.c:740 utils/adt/arrayfuncs.c:755 -#: utils/adt/arrayfuncs.c:808 +#: executor/execQual.c:1586 #, c-format -msgid "malformed array literal: \"%s\"" -msgstr "有缺陷的数组常量:\"%s\"" +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个属性" -#: utils/adt/arrayfuncs.c:847 utils/adt/arrayfuncs.c:1448 -#: utils/adt/arrayfuncs.c:2766 utils/adt/arrayfuncs.c:2914 -#: utils/adt/arrayfuncs.c:4662 utils/adt/arrayutils.c:93 -#: utils/adt/arrayutils.c:102 utils/adt/arrayutils.c:109 +#: executor/execQual.c:1602 #, c-format -msgid "array size exceeds the maximum allowed (%d)" -msgstr "数组的大小超过了最大允许值(%d)" - -#: utils/adt/arrayfuncs.c:1225 -msgid "invalid array flags" -msgstr "无效的数组标记" +msgid "Returned type %s at ordinal position %d, but query expects %s." +msgstr "在顺序位置%2$d的返回类型是%1$s, 但是查询期望使用类型%3$s." -#: utils/adt/arrayfuncs.c:1233 -msgid "wrong element type" -msgstr "错误的元素类型" +#: executor/execQual.c:1838 executor/execQual.c:2263 +msgid "table-function protocol for materialize mode was not followed" +msgstr "没有跟随针对物化模式的表函数协议" -#: utils/adt/arrayfuncs.c:1422 +#: executor/execQual.c:1858 executor/execQual.c:2270 #, c-format -msgid "improper binary format in array element %d" -msgstr "数组元素 %d 为不正确的二进制格式" +msgid "unrecognized table-function returnMode: %d" +msgstr "未认可的表函数返回模式 (returnMode): %d" -#: utils/adt/arrayfuncs.c:1878 -msgid "slices of fixed-length arrays not implemented" -msgstr "没有实现固定长度数组的部分" +#: executor/execQual.c:2180 +msgid "function returning set of rows cannot return null value" +msgstr "函数返回值为多列时不能返回空值" -#: utils/adt/arrayfuncs.c:2051 utils/adt/arrayfuncs.c:2073 -#: utils/adt/arrayfuncs.c:2107 utils/adt/arrayfuncs.c:2393 -#: utils/adt/arrayfuncs.c:4542 utils/adt/arrayfuncs.c:4574 -#: utils/adt/arrayfuncs.c:4591 -msgid "wrong number of array subscripts" -msgstr "错误的数组下标" +#: executor/execQual.c:2237 +msgid "rows returned by function are not all of the same row type" +msgstr "函数返回的记录不完全属于相同的记录类型" -#: utils/adt/arrayfuncs.c:2056 utils/adt/arrayfuncs.c:2149 -#: utils/adt/arrayfuncs.c:2444 -msgid "array subscript out of range" -msgstr "数组下标超出范围" +#: executor/execQual.c:2428 +msgid "IS DISTINCT FROM does not support set arguments" +msgstr "IS DISTINCT FROM 不支持一组参数" -#: utils/adt/arrayfuncs.c:2061 -msgid "cannot assign null value to an element of a fixed-length array" -msgstr "无法将空值分配给固定长度数组的成员" +#: executor/execQual.c:2505 +msgid "op ANY/ALL (array) does not support set arguments" +msgstr "操作符 ANY/ALL (数组) 不支持设置参数" -#: utils/adt/arrayfuncs.c:2347 -msgid "updates on slices of fixed-length arrays not implemented" -msgstr "没有实现在固定长度数组部分上的更新操作" +#: executor/execQual.c:3058 +msgid "cannot merge incompatible arrays" +msgstr "无法合并不兼容的排列" -#: utils/adt/arrayfuncs.c:2383 utils/adt/arrayfuncs.c:2470 -msgid "source array too small" -msgstr "源数组太小" +#: executor/execQual.c:3059 +#, c-format +msgid "" +"Array with element type %s cannot be included in ARRAY construct with " +"element type %s." +msgstr "元素类型为 %s 的 ARRAY 结构中不能包含带有元素类型为 %s 的数组." -#: utils/adt/arrayfuncs.c:3021 -msgid "null array element not allowed in this context" -msgstr "不支持空数组元素" +#: executor/execQual.c:3642 +msgid "NULLIF does not support set arguments" +msgstr "NULLIF 不支持一组参数" -#: utils/adt/arrayfuncs.c:3082 utils/adt/arrayfuncs.c:3289 -#: utils/adt/arrayfuncs.c:3489 -msgid "cannot compare arrays of different element types" -msgstr "无法比较不同元素类型的数组" +#: executor/execQual.c:4394 optimizer/util/clauses.c:573 +#: parser/parse_agg.c:164 +msgid "aggregate function calls cannot be nested" +msgstr "不允许嵌套调用聚合函数" -#: utils/adt/arrayfuncs.c:4440 utils/adt/arrayfuncs.c:4480 -msgid "dimension array or low bound array cannot be NULL" -msgstr "维度数组或低界数组不能为空" +#: executor/execQual.c:4432 optimizer/util/clauses.c:647 +#: parser/parse_agg.c:211 +msgid "window function calls cannot be nested" +msgstr "不允许嵌套调用窗口函数" -#: utils/adt/arrayfuncs.c:4543 utils/adt/arrayfuncs.c:4575 -msgid "Dimension array must be one dimensional." -msgstr "维度数组必须是一维" +#: executor/execQual.c:4644 +msgid "target type is not an array" +msgstr "目标类型不是一个数组" -#: utils/adt/arrayfuncs.c:4548 utils/adt/arrayfuncs.c:4580 -msgid "wrong range of array subscripts" -msgstr "无效的数组下标范围" +#: executor/execQual.c:4757 +#, c-format +msgid "ROW() column has type %s instead of type %s" +msgstr "ROW() 列类型 %s 替换为 %s" -#: utils/adt/arrayfuncs.c:4549 utils/adt/arrayfuncs.c:4581 -msgid "Lower bound of dimension array must be one." -msgstr "维度数组的低界必须是1" +#: replication/walreceiver.c:150 +msgid "terminating walreceiver process due to administrator command" +msgstr "由于管理员命令中断walreceiver进程" -#: utils/adt/arrayfuncs.c:4554 utils/adt/arrayfuncs.c:4586 -msgid "dimension values cannot be null" -msgstr "维度值不能为空" +#: replication/walreceiver.c:304 +msgid "cannot continue WAL streaming, recovery has already ended" +msgstr "无法继续进行WAL流复制操作,恢复已经结束" -#: utils/adt/arrayfuncs.c:4592 -msgid "Low bound array has different size than dimensions array." -msgstr "低界数组的大小与多维数组不同" +#: replication/walsender.c:141 +msgid "recovery is still in progress, can't accept WAL streaming connections" +msgstr "恢复操作正在进行当中,无法接受WAL流复制的连接" -#: utils/adt/arrayutils.c:209 -msgid "typmod array must be type cstring[]" -msgstr "typmod 数组必须是cstring[]类型" +#: replication/walsender.c:261 replication/walsender.c:489 +#: replication/walsender.c:547 +msgid "unexpected EOF on standby connection" +msgstr "在备用服务器连接上的出现意外的EOF" -#: utils/adt/arrayutils.c:214 -msgid "typmod array must be one-dimensional" -msgstr "参数必须为空或者一维数组" +#: replication/walsender.c:267 +#, c-format +msgid "invalid standby handshake message type %d" +msgstr "无效的备用握手消息类型 %d" -#: utils/adt/arrayutils.c:219 -msgid "typmod array must not contain nulls" -msgstr "typmod不能包含空值" +#: replication/walsender.c:379 +msgid "standby connections not allowed because wal_level=minimal" +msgstr "不允许使用备份连接因为设置了wal_level=minimal" -#: utils/adt/ascii.c:75 +#: replication/walsender.c:461 #, c-format -msgid "encoding conversion from %s to ASCII not supported" -msgstr "编码转换不支持从 %s 到 ASCII 的转换" +msgid "invalid standby query string: %s" +msgstr "无效的备用服务器查询字符串:%s" -#: utils/adt/bool.c:153 +#: replication/walsender.c:518 #, c-format -msgid "invalid input syntax for type boolean: \"%s\"" -msgstr "无效的布尔类型输入语法: \"%s\"" +msgid "invalid standby message type \"%c\"" +msgstr "无效的备用节点消息类型 \"%c\"" -#: utils/adt/cash.c:232 +#: replication/walsender.c:569 #, c-format -msgid "invalid input syntax for type money: \"%s\"" -msgstr "无效的货币类型输入语法: \"%s\"" +msgid "unexpected message type \"%c\"" +msgstr "意外的消息类型\"%c\"" -#: utils/adt/cash.c:524 utils/adt/cash.c:575 utils/adt/cash.c:624 -#: utils/adt/cash.c:676 utils/adt/cash.c:726 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:4121 utils/adt/int.c:728 utils/adt/int.c:869 -#: utils/adt/int.c:965 utils/adt/int.c:1053 utils/adt/int.c:1079 -#: utils/adt/int.c:1099 utils/adt/int8.c:597 utils/adt/int8.c:644 -#: utils/adt/int8.c:820 utils/adt/int8.c:916 utils/adt/int8.c:1004 -#: utils/adt/int8.c:1100 utils/adt/numeric.c:4298 utils/adt/numeric.c:4581 -#: utils/adt/timestamp.c:2876 -msgid "division by zero" -msgstr "除以零" +#: replication/walsender.c:763 +#, c-format +msgid "standby \"%s\" has now caught up with primary" +msgstr "备用节点 \"%s\" 现在遇上了主节点" -#: utils/adt/char.c:169 -msgid "\"char\" out of range" -msgstr "\"char\" 超出范围" +#: replication/walsender.c:841 +msgid "terminating walsender process due to replication timeout" +msgstr "由于复制超时, 中断walreceiver进程" -#: utils/adt/date.c:66 utils/adt/timestamp.c:92 utils/adt/varbit.c:49 -#: utils/adt/varchar.c:43 -msgid "invalid type modifier" -msgstr "无效的类型修改器" +#: replication/walsender.c:908 +#, c-format +msgid "" +"number of requested standby connections exceeds max_wal_senders (currently " +"%d)" +msgstr "所要求的备用服务器连接数超过了参数max_wal_senders的值(当前设置为%d)" -#: utils/adt/date.c:71 +#: replication/walsender.c:986 replication/walsender.c:1048 #, c-format -msgid "TIME(%d)%s precision must not be negative" -msgstr "TIME(%d)%s 精确度不能为负数" +msgid "requested WAL segment %s has already been removed" +msgstr "所要求的WAL段%s已经被删除" -#: utils/adt/date.c:77 +#: replication/walsender.c:1019 #, c-format -msgid "TIME(%d)%s precision reduced to maximum allowed, %d" -msgstr "TIME(%d)%s精度减少到最大允许值,%d" +msgid "could not read from log file %u, segment %u, offset %u, length %lu: %m" +msgstr "无法从日志文件%u中段为%u,偏移量为%u, 长度为%lu的位置上进行读操作: %m" -#: 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 "日期/时间值 \"current\" 不再被支持了" +#: replication/basebackup.c:124 replication/basebackup.c:657 +#, c-format +msgid "could not read symbolic link \"%s\": %m" +msgstr "无法读取符号链接 \"%s\": %m" -#: utils/adt/date.c:167 +#: replication/basebackup.c:131 replication/basebackup.c:661 #, c-format -msgid "date out of range: \"%s\"" -msgstr "时间戳超出范围: \"%s\"" +msgid "symbolic link \"%s\" target is too long" +msgstr "符号链接 \"%s\" 目标超长" -#: utils/adt/date.c:359 -msgid "cannot subtract infinite dates" -msgstr "无法减去无限大的日期" +#: replication/basebackup.c:252 replication/basebackup.c:810 +msgid "base backup could not send data, aborting backup" +msgstr "基础备份无法发送数据,终止备份" -#: utils/adt/date.c:416 utils/adt/date.c:453 -msgid "date out of range for timestamp" -msgstr "日期超出了时间戳的范围" +#: replication/basebackup.c:299 replication/basebackup.c:308 +#: replication/basebackup.c:317 replication/basebackup.c:326 +#: replication/basebackup.c:335 +#, c-format +msgid "duplicate option \"%s\"" +msgstr "重复选项 \"%s\"" -#: utils/adt/date.c:953 -msgid "cannot convert reserved abstime value to date" -msgstr "不能转换保留 abstime 值为 date" +#: replication/basebackup.c:387 +#, fuzzy, c-format +msgid "could not open directory \"pg_tblspc\": %m" +msgstr "无法打开目录 \"%s\": %m" -#: utils/adt/date.c:1107 utils/adt/date.c:1114 utils/adt/date.c:1882 -#: utils/adt/date.c:1889 -msgid "time out of range" -msgstr "时间超出范围" +#: replication/basebackup.c:597 +msgid "shutdown requested, aborting active base backup" +msgstr "发送了关闭请求, 正终止正在执行的基础备份" -#: utils/adt/date.c:1760 utils/adt/date.c:1777 +#: replication/basebackup.c:611 #, c-format -msgid "\"time\" units \"%s\" not recognized" -msgstr "\"time\" 单位 \"%s\" 不被认可" - -#: utils/adt/date.c:1899 -msgid "time zone displacement out of range" -msgstr "时间区域置换超出范围" +msgid "could not stat file or directory \"%s\": %m" +msgstr "无法统计文件或目录\"%s\": %m" -#: utils/adt/date.c:2524 utils/adt/date.c:2541 +#: replication/basebackup.c:710 #, c-format -msgid "\"time with time zone\" units \"%s\" not recognized" -msgstr "\"time with time zone\" 单位 \"%s\" 不被认可" +msgid "skipping special file \"%s\"" +msgstr "跳过特殊文件 \"%s\"" -#: utils/adt/date.c:2599 utils/adt/datetime.c:928 utils/adt/datetime.c:1663 -#: utils/adt/timestamp.c:4452 utils/adt/timestamp.c:4625 +#: replication/basebackup.c:800 #, c-format -msgid "time zone \"%s\" not recognized" -msgstr "时区 \"%s\" 不被认可" +msgid "archive member \"%s\" too large for tar format" +msgstr "在 tar 格式中归档成员\"%s\"太大" -#: utils/adt/date.c:2639 -#, c-format -msgid "\"interval\" time zone \"%s\" not valid" -msgstr "\"interval\" 时间区域 \"%s\" 无效" +#: replication/syncrep.c:210 +msgid "" +"canceling the wait for synchronous replication and terminating connection " +"due to administrator command" +msgstr "取消等待同步复制,听从管理员命令终断连接" -#: utils/adt/datetime.c:3529 utils/adt/datetime.c:3536 -#, c-format -msgid "date/time field value out of range: \"%s\"" -msgstr "日期/时间值超出范围: \"%s\"" - -#: utils/adt/datetime.c:3538 -msgid "Perhaps you need a different \"datestyle\" setting." -msgstr "也许你需要不同的 \"datesytle\" 设置." +#: replication/syncrep.c:211 replication/syncrep.c:228 +msgid "" +"The transaction has already committed locally, but might not have been " +"replicated to the standby." +msgstr "事务已经在本地提交, 但有可能还没完成到备用节点的复制." -#: utils/adt/datetime.c:3543 -#, c-format -msgid "interval field value out of range: \"%s\"" -msgstr "间隔字段超出范围: \"%s\"" +#: replication/syncrep.c:227 +msgid "canceling wait for synchronous replication due to user request" +msgstr "听从用户请求,取消等待同步复制" -#: utils/adt/datetime.c:3549 +#: replication/syncrep.c:358 #, c-format -msgid "time zone displacement out of range: \"%s\"" -msgstr "时间区域置换超出范围: \"%s\"" +msgid "standby \"%s\" now has synchronous standby priority %u" +msgstr "备用节点 \"%s\" 现在拥有同步备用优先级: %u" -#. translator: first %s is inet or cidr -#: utils/adt/datetime.c:3556 utils/adt/network.c:107 +#: replication/syncrep.c:456 #, c-format -msgid "invalid input syntax for type %s: \"%s\"" -msgstr "无效的类型 %s 输入语法: \"%s\"" +msgid "standby \"%s\" is now the synchronous standby with priority %u" +msgstr "备用节点 \"%s\" 现在是拥有同步备用优先级: %u的备用节点" -#: utils/adt/datum.c:80 utils/adt/datum.c:92 -msgid "invalid Datum pointer" -msgstr "无效的 Datum 指针" +#: repl_scanner.l:76 +msgid "invalid streaming start location" +msgstr "无效的流起始位置" -#: utils/adt/dbsize.c:105 utils/adt/dbsize.c:195 -#, c-format -msgid "could not open tablespace directory \"%s\": %m" -msgstr "无法打开表空间目录 \"%s\": %m" +#: repl_scanner.l:97 scan.l:629 +msgid "unterminated quoted string" +msgstr "未结束的引用字符串" -#: utils/adt/domains.c:80 +#: repl_scanner.l:107 #, c-format -msgid "type %s is not a domain" -msgstr "类型%s不是一个域" +msgid "syntax error: unexpected character \"%s\"" +msgstr "语法错误: 遇到意外字符\"%s\"" -#: utils/adt/encode.c:55 utils/adt/encode.c:91 +#: replication/libpqwalreceiver/libpqwalreceiver.c:101 #, c-format -msgid "unrecognized encoding: \"%s\"" -msgstr "未知编码: \"%s\"" +msgid "could not connect to the primary server: %s" +msgstr "无法连接到主用服务器:%s" -#: utils/adt/encode.c:150 +#: replication/libpqwalreceiver/libpqwalreceiver.c:113 #, c-format -msgid "invalid hexadecimal digit: \"%c\"" -msgstr "无效的十六进制数字: \"%c\"" - -#: utils/adt/encode.c:178 -msgid "invalid hexadecimal data: odd number of digits" -msgstr "无效的十六进制数据: 奇怪的数字个数" - -#: utils/adt/encode.c:295 -msgid "unexpected \"=\"" -msgstr "意外的 \"=\"" +msgid "" +"could not receive database system identifier and timeline ID from the " +"primary server: %s" +msgstr "无法从主用服务器接收数据库系统标识符和时间线ID:%s" -#: utils/adt/encode.c:307 -msgid "invalid symbol" -msgstr "无效符号" +#: replication/libpqwalreceiver/libpqwalreceiver.c:124 +msgid "invalid response from primary server" +msgstr "来自主用服务器的回应无效" -#: utils/adt/encode.c:327 -msgid "invalid end sequence" -msgstr "无效的结束顺序" +#: replication/libpqwalreceiver/libpqwalreceiver.c:125 +#, c-format +msgid "Expected 1 tuple with 3 fields, got %d tuples with %d fields." +msgstr "" +"期望得到带有3个字段的一条记录,但是现在得到了%d条记录,每条带有%d个字段." -#: utils/adt/encode.c:441 utils/adt/encode.c:506 utils/adt/varlena.c:238 -#: utils/adt/varlena.c:279 -msgid "invalid input syntax for type bytea" -msgstr "无效的 bytea 类型输入语法" +#: replication/libpqwalreceiver/libpqwalreceiver.c:140 +msgid "database system identifier differs between the primary and standby" +msgstr "在主用服务器和备用服务器之间,数据库系统标识符是不一样的。" -#: utils/adt/enum.c:44 utils/adt/enum.c:54 utils/adt/enum.c:109 -#: utils/adt/enum.c:119 +#: replication/libpqwalreceiver/libpqwalreceiver.c:141 #, c-format -msgid "invalid input value for enum %s: \"%s\"" -msgstr "对于枚举%s的输入值无效: \"%s\"" +msgid "The primary's identifier is %s, the standby's identifier is %s." +msgstr "主用服务器的标识符是%s,备用服务器的标识符是%s。" -#: utils/adt/enum.c:81 utils/adt/enum.c:144 +#: replication/libpqwalreceiver/libpqwalreceiver.c:153 #, c-format -msgid "invalid internal value for enum: %u" -msgstr "对于枚举的无效内部值: %u" +msgid "timeline %u of the primary does not match recovery target timeline %u" +msgstr "主用服务器的时间线%u与恢复目标的时间线%u不匹配" -#: utils/adt/enum.c:264 utils/adt/enum.c:303 utils/adt/enum.c:350 -#: utils/adt/enum.c:370 -msgid "could not determine actual enum type" -msgstr "无法确定实际的枚举类型" +#: replication/libpqwalreceiver/libpqwalreceiver.c:165 +#, c-format +msgid "could not start WAL streaming: %s" +msgstr "无法启动WAL流复制: %s" -#: utils/adt/float.c:54 -msgid "value out of range: overflow" -msgstr "值超出范围: 上溢" +#: replication/libpqwalreceiver/libpqwalreceiver.c:171 +msgid "streaming replication successfully connected to primary" +msgstr "流复制成功连接到主服务器" -#: utils/adt/float.c:59 -msgid "value out of range: underflow" -msgstr "值超出范围: 下溢" +# fe-misc.c:450 fe-misc.c:642 fe-misc.c:798 +#: replication/libpqwalreceiver/libpqwalreceiver.c:193 +msgid "socket not open" +msgstr "套接字未打开" -#: utils/adt/float.c:206 utils/adt/float.c:247 utils/adt/float.c:298 +#: replication/libpqwalreceiver/libpqwalreceiver.c:233 port/pg_latch.c:265 +#: port/unix_latch.c:265 #, c-format -msgid "invalid input syntax for type real: \"%s\"" -msgstr "无效的实数类型输入语法: \"%s\"" +msgid "select() failed: %m" +msgstr "执行select()失败: %m" -#: utils/adt/float.c:242 +#: replication/libpqwalreceiver/libpqwalreceiver.c:367 +#: replication/libpqwalreceiver/libpqwalreceiver.c:388 +#: replication/libpqwalreceiver/libpqwalreceiver.c:393 #, c-format -msgid "\"%s\" is out of range for type real" -msgstr "\"%s\" 超出实数类型的范围" +msgid "could not receive data from WAL stream: %s" +msgstr "无法从WAL流中获得数据: %s" -#: utils/adt/float.c:399 utils/adt/float.c:440 utils/adt/float.c:491 -#: utils/adt/numeric.c:3760 utils/adt/numeric.c:3786 -#, c-format -msgid "invalid input syntax for type double precision: \"%s\"" -msgstr "无效的双精度类型输入语法: \"%s\"" +#: replication/libpqwalreceiver/libpqwalreceiver.c:384 +msgid "replication terminated by primary server" +msgstr "复制由主用服务器终止" -#: utils/adt/float.c:435 +# fe-misc.c:702 +#: replication/libpqwalreceiver/libpqwalreceiver.c:415 #, c-format -msgid "\"%s\" is out of range for type double precision" -msgstr "\"%s\" 超出双精度类型的范围" +msgid "could not send data to WAL stream: %s" +msgstr "无法向WAL流:%s发送数据" -#: utils/adt/float.c:1119 utils/adt/float.c:1177 utils/adt/int.c:348 -#: utils/adt/int.c:784 utils/adt/int.c:813 utils/adt/int.c:834 -#: utils/adt/int.c:854 utils/adt/int.c:882 utils/adt/int.c:1135 -#: utils/adt/int8.c:1221 utils/adt/numeric.c:2163 utils/adt/numeric.c:2174 -msgid "smallint out of range" -msgstr "smallint 超出范围" +#: optimizer/plan/initsplan.c:598 +msgid "" +"SELECT FOR UPDATE/SHARE cannot be applied to the nullable side of an outer " +"join" +msgstr "SELECT FOR UPDATE/SHARE不适用于外连接中可为空的那一端." -#: utils/adt/float.c:1303 utils/adt/numeric.c:4974 -msgid "cannot take square root of a negative number" -msgstr "无法为负数做平方根" +#: optimizer/plan/planner.c:940 parser/analyze.c:1333 parser/analyze.c:1541 +#: parser/analyze.c:2270 +msgid "SELECT FOR UPDATE/SHARE is not allowed with UNION/INTERSECT/EXCEPT" +msgstr "在SELECT FOR UPDATE/SHARE中不允许带有关键词UNION/INTERSECT/EXCEPT" -#: utils/adt/float.c:1345 utils/adt/numeric.c:1975 -msgid "zero raised to a negative power is undefined" -msgstr "被提升到负乘方的最低点没有定义." +#: optimizer/plan/planner.c:2235 +msgid "could not implement GROUP BY" +msgstr "无法实现GROUP BY语句" -#: utils/adt/float.c:1349 utils/adt/numeric.c:1981 -msgid "a negative number raised to a non-integer power yields a complex result" -msgstr "被升为非整数的平方的负数产生了一个复杂结果." +#: optimizer/plan/planner.c:2236 optimizer/plan/planner.c:2408 +#: optimizer/prep/prepunion.c:801 +msgid "" +"Some of the datatypes only support hashing, while others only support " +"sorting." +msgstr "一些数据类型只支持哈希,同时另外一些数据类型只支持排序." -#: utils/adt/float.c:1415 utils/adt/float.c:1445 utils/adt/numeric.c:5192 -msgid "cannot take logarithm of zero" -msgstr "无法取零的对数" +#: optimizer/plan/planner.c:2407 +msgid "could not implement DISTINCT" +msgstr "无法实现DISTINCT语句" -#: utils/adt/float.c:1419 utils/adt/float.c:1449 utils/adt/numeric.c:5196 -msgid "cannot take logarithm of a negative number" -msgstr "无法取负数的对数" +#: optimizer/plan/planner.c:2858 +msgid "could not implement window PARTITION BY" +msgstr "无法实现与窗口函数一同使用PARTITION BY子句" -#: 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 "输入超出范围" +#: optimizer/plan/planner.c:2859 +msgid "Window partitioning columns must be of sortable datatypes." +msgstr "窗口分区列必须属于可排序的数据类型" -#: utils/adt/float.c:2687 utils/adt/numeric.c:982 -msgid "count must be greater than zero" -msgstr "总数必须大于零" +#: optimizer/plan/planner.c:2863 +msgid "could not implement window ORDER BY" +msgstr "无法实现与窗口函数一同使用ORDER BY 语句" -#: utils/adt/float.c:2692 utils/adt/numeric.c:989 -msgid "operand, lower bound and upper bound cannot be NaN" -msgstr "操作数,下限和上限不能是NaN" +#: optimizer/plan/planner.c:2864 +msgid "Window ordering columns must be of sortable datatypes." +msgstr "窗口的排序列必须属于可排序的数据类型" -#: utils/adt/float.c:2698 -msgid "lower and upper bounds must be finite" -msgstr "地位和高位边界必须是有限的." +#: optimizer/prep/prepunion.c:395 +msgid "could not implement recursive UNION" +msgstr "无法实现递归UNION操作" -#: utils/adt/float.c:2736 utils/adt/numeric.c:1002 -msgid "lower bound cannot equal upper bound" -msgstr "下限不能等于上限" +#: optimizer/prep/prepunion.c:396 +msgid "All column datatypes must be hashable." +msgstr "所有列的数据类型必须可进行哈希计算." -#: utils/adt/formatting.c:491 -msgid "invalid format specification for an interval value" -msgstr "间隔值的格式定义无效" +#. translator: %s is UNION, INTERSECT, or EXCEPT +#: optimizer/prep/prepunion.c:800 +#, c-format +msgid "could not implement %s" +msgstr "无法实现%s" -#: utils/adt/formatting.c:492 -msgid "Intervals are not tied to specific calendar dates." -msgstr "间隔没有与特定的日历的日期相联系" +#: optimizer/path/joinrels.c:673 +msgid "" +"FULL JOIN is only supported with merge-joinable or hash-joinable join " +"conditions" +msgstr "只有在合并连接或哈希连接的查询条件中才支持FULL JOIN" -#: utils/adt/formatting.c:1059 -msgid "\"EEEE\" must be the last pattern used" -msgstr "\"EEEE\"必须是所使用的最后一个模式" +#: optimizer/util/plancat.c:97 +msgid "cannot access temporary or unlogged relations during recovery" +msgstr "无法在恢复过程中访问临时关系或非事务日志关系" -#: utils/adt/formatting.c:1067 -msgid "\"9\" must be ahead of \"PR\"" -msgstr "\"9\" 必须在 \"PR\" 之前" +#: optimizer/util/clauses.c:4166 +#, c-format +msgid "SQL function \"%s\" during inlining" +msgstr "SQL 函数 \"%s\" 在内联 (inlining) 期间" -#: utils/adt/formatting.c:1083 -msgid "\"0\" must be ahead of \"PR\"" -msgstr "\"0\" 必须在 \"PR\" 之前" +#: libpq/pqcomm.c:306 +#, c-format +msgid "could not translate host name \"%s\", service \"%s\" to address: %s" +msgstr "无法解析主机名 \"%s\", 服务 \"%s\" 到地址: %s" -#: utils/adt/formatting.c:1109 -msgid "multiple decimal points" -msgstr "多个小数点" +#: libpq/pqcomm.c:310 +#, c-format +msgid "could not translate service \"%s\" to address: %s" +msgstr "无法解析服务 \"%s\" 到地址: %s" -#: utils/adt/formatting.c:1113 utils/adt/formatting.c:1196 -msgid "cannot use \"V\" and decimal point together" -msgstr "不能 \"V\" 和小数点一起使用" +#: libpq/pqcomm.c:337 +#, c-format +msgid "could not bind to all requested addresses: MAXLISTEN (%d) exceeded" +msgstr "无法绑定所有需要的地址:超过最大数量MAXLISTEN (%d)" -#: utils/adt/formatting.c:1125 -msgid "cannot use \"S\" twice" -msgstr "无法两次使用 \"S\" " +#: libpq/pqcomm.c:346 +msgid "IPv4" +msgstr "IPv4" -#: utils/adt/formatting.c:1129 -msgid "cannot use \"S\" and \"PL\"/\"MI\"/\"SG\"/\"PR\" together" -msgstr "\"S\" 不可以和 \"PL\"/\"MI\"/\"SG\"/\"PR\" 一起使用" +#: libpq/pqcomm.c:350 +msgid "IPv6" +msgstr "IPv6" -#: utils/adt/formatting.c:1149 -msgid "cannot use \"S\" and \"MI\" together" -msgstr "\"S\" 不可以和 \"MI\" 一起使用" +#: libpq/pqcomm.c:355 +msgid "Unix" +msgstr "Unix" -#: utils/adt/formatting.c:1159 -msgid "cannot use \"S\" and \"PL\" together" -msgstr "\"S\" 不可以和 \"PL\" 一起使用" +#: libpq/pqcomm.c:360 +#, c-format +msgid "unrecognized address family %d" +msgstr "不认可的地址族 %d" -#: utils/adt/formatting.c:1169 -msgid "cannot use \"S\" and \"SG\" together" -msgstr "\"S\" 不可以和 \"SG\" 一起使用" +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:371 +#, c-format +msgid "could not create %s socket: %m" +msgstr "无法创建 %s 套接字: %m" -#: utils/adt/formatting.c:1178 -msgid "cannot use \"PR\" and \"S\"/\"PL\"/\"MI\"/\"SG\" together" -msgstr "\"PR\" 不可以和 \"S\"/\"PL\"/\"MI\"/\"SG\" 一起使用" +#: libpq/pqcomm.c:396 +#, c-format +msgid "setsockopt(SO_REUSEADDR) failed: %m" +msgstr "setsockopt(SO_REUSEADDR) 失败: %m" -#: utils/adt/formatting.c:1204 -msgid "cannot use \"EEEE\" twice" -msgstr "无法两次使用 \"EEEE\"" +#: libpq/pqcomm.c:411 +#, c-format +msgid "setsockopt(IPV6_V6ONLY) failed: %m" +msgstr "setsockopt(IPV6_V6ONLY) 失败: %m" -#: utils/adt/formatting.c:1210 -msgid "\"EEEE\" is incompatible with other formats" -msgstr "\"EEEE\"与其它格式不兼容" +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:430 +#, c-format +msgid "could not bind %s socket: %m" +msgstr "无法绑定 %s 套接字: %m" -#: utils/adt/formatting.c:1211 +#: libpq/pqcomm.c:433 +#, c-format msgid "" -"\"EEEE\" may only be used together with digit and decimal point patterns." -msgstr "\"EEEE\"只能与数字和小数模式一同使用" +"Is another postmaster already running on port %d? If not, remove socket file " +"\"%s\" and retry." +msgstr "" +"是否有其它 postmaster 已经在端口 %d 上运行了? 如果没有, 删除套接字文件 \"%s" +"\" 然后再重试." -#: utils/adt/formatting.c:1411 +#: libpq/pqcomm.c:436 #, c-format -msgid "\"%s\" is not a number" -msgstr "\"%s\" 不是一个数字" - -# fe-connect.c:2558 -#: utils/adt/formatting.c:1788 -msgid "invalid combination of date conventions" -msgstr "无效的日期约定格式组合" - -#: utils/adt/formatting.c:1789 msgid "" -"Do not mix Gregorian and ISO week date conventions in a formatting template." -msgstr "在格式模板中不要混用Gregorian和ISO周日期转换. " +"Is another postmaster already running on port %d? If not, wait a few seconds " +"and retry." +msgstr "" +"是否有其它 postmaster 已经在端口 %d 上运行了? 如果没有, 请等待几秒钟后然后再" +"重试." -#: utils/adt/formatting.c:1806 +#. translator: %s is IPv4, IPv6, or Unix +#: libpq/pqcomm.c:469 #, c-format -msgid "conflicting values for \"%s\" field in formatting string" -msgstr "在格式化字符串中对于\"%s\"字段的值冲突" - -#: utils/adt/formatting.c:1808 -msgid "This value contradicts a previous setting for the same field type." -msgstr "这个值与先前设定的同一字段类型相抵触" +msgid "could not listen on %s socket: %m" +msgstr "无法在 %s 套接字上监听: %m" -#: utils/adt/formatting.c:1869 +#: libpq/pqcomm.c:499 #, c-format -msgid "source string too short for \"%s\" formatting field" -msgstr "对于\"%s\" 格式化字段的源字符串太短" +msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)" +msgstr "Unix域的套接字路径 \"%s\" 超长(最大为%d字节)" -#: utils/adt/formatting.c:1871 +#: libpq/pqcomm.c:562 #, c-format -msgid "Field requires %d characters, but only %d remain." -msgstr "字段要求有%d个字符,但是这里只有%d个" +msgid "group \"%s\" does not exist" +msgstr "组 \"%s\" 不存在" -#: utils/adt/formatting.c:1874 utils/adt/formatting.c:1888 -msgid "" -"If your source string is not fixed-width, try using the \"FM\" modifier." -msgstr "如果源字符串不是固定长度,请尝试使用\"FM\"修改器." +#: libpq/pqcomm.c:572 +#, c-format +msgid "could not set group of file \"%s\": %m" +msgstr "无法设置文件 \"%s\" 的组: %m" -#: utils/adt/formatting.c:1884 utils/adt/formatting.c:1897 -#: utils/adt/formatting.c:2027 +#: libpq/pqcomm.c:583 #, c-format -msgid "invalid value \"%s\" for \"%s\"" -msgstr "\"%s\"的值\"%s\"无效" +msgid "could not set permissions of file \"%s\": %m" +msgstr "无法设置文件 \"%s\" 的权限: %m" -#: utils/adt/formatting.c:1886 +#: libpq/pqcomm.c:613 #, c-format -msgid "Field requires %d characters, but only %d could be parsed." -msgstr "字段要求%d个字符, 但是只能解析%d个字符." +msgid "could not accept new connection: %m" +msgstr "无法访问新联接: %m" -#: utils/adt/formatting.c:1899 -msgid "Value must be an integer." -msgstr "值必须是一个整数" +#: libpq/pqcomm.c:781 +#, c-format +msgid "could not set socket to non-blocking mode: %m" +msgstr "无法将套接字设置为非阻塞模式: %m" -#: utils/adt/formatting.c:1904 +#: libpq/pqcomm.c:787 #, c-format -msgid "value for \"%s\" in source string is out of range" -msgstr "在源字符串中\"%s\"的值超出了范围" +msgid "could not set socket to blocking mode: %m" +msgstr "无法将套接字设置为阻塞模式: %m" -#: utils/adt/formatting.c:1906 +#: libpq/pqcomm.c:839 libpq/pqcomm.c:929 #, c-format -msgid "Value must be in the range %d to %d." -msgstr "值必须是在范围%d到%d之间." +msgid "could not receive data from client: %m" +msgstr "无法从客户端获得数据: %m" -#: utils/adt/formatting.c:2029 -msgid "The given value did not match any of the allowed values for this field." -msgstr "给定的值与这个字段所允许的值不匹配." +#: libpq/pqcomm.c:1080 +msgid "unexpected EOF within message length word" +msgstr "在信息长度字里有意外的 EOF" -#: utils/adt/formatting.c:2585 -msgid "\"TZ\"/\"tz\" format patterns are not supported in to_date" -msgstr "在to_date中不支持\"TZ\"/\"tz\"的格式模式" +#: libpq/pqcomm.c:1091 +msgid "invalid message length" +msgstr "无效的信息长度" -#: utils/adt/formatting.c:2689 -msgid "invalid input string for \"Y,YYY\"" -msgstr "对于\"Y,YYY\", 所输入的字符串无效" +#: libpq/pqcomm.c:1113 libpq/pqcomm.c:1123 +msgid "incomplete message from client" +msgstr "从客户端过来的不完整信息" -#: utils/adt/formatting.c:3206 +#: libpq/pqcomm.c:1253 #, c-format -msgid "hour \"%d\" is invalid for the 12-hour clock" -msgstr "对于12小时制的钟表,小时数\"%d\"无效" - -#: utils/adt/formatting.c:3208 -msgid "Use the 24-hour clock, or give an hour between 1 and 12." -msgstr "使用24小时制的钟表,或者将小时数限定在1到12之间." +msgid "could not send data to client: %m" +msgstr "无法发送数据给客户端: %m" -#: utils/adt/formatting.c:3246 +#: libpq/be-secure.c:284 libpq/be-secure.c:379 #, c-format -msgid "inconsistent use of year %04d and \"BC\"" -msgstr "年份%04d和\"BC\"的使用不一致" - -#: utils/adt/formatting.c:3293 -msgid "cannot calculate day of year without year information" -msgstr "没有年份信息无法计算年的天数" - -#: utils/adt/formatting.c:4151 -msgid "\"EEEE\" not supported for input" -msgstr "不支持为输入使用\"EEEE\"" +msgid "SSL error: %s" +msgstr "SSL 错误: %s" -#: utils/adt/formatting.c:4163 -msgid "\"RN\" not supported for input" -msgstr "不支持为输入使用\"RN\"" +#: libpq/be-secure.c:293 libpq/be-secure.c:388 libpq/be-secure.c:958 +#, c-format +msgid "unrecognized SSL error code: %d" +msgstr "未知的 SSL 错误码: %d" -#: utils/adt/genfile.c:58 -msgid "reference to parent directory (\"..\") not allowed" -msgstr "不允许引用源目录(\"..\") " +#: libpq/be-secure.c:332 libpq/be-secure.c:336 libpq/be-secure.c:346 +msgid "SSL renegotiation failure" +msgstr "SSL 协商失败" -#: utils/adt/genfile.c:72 -msgid "absolute path not allowed" -msgstr "不允许使用绝对路径" +#: libpq/be-secure.c:340 +msgid "SSL failed to send renegotiation request" +msgstr "发送 SSL 协商响应失败" -#: utils/adt/genfile.c:99 -msgid "must be superuser to read files" -msgstr "只有超级用户能对文件进行读操作" +#: libpq/be-secure.c:737 +#, c-format +msgid "could not create SSL context: %s" +msgstr "无法创建 SSL 环境: %s" -#: utils/adt/genfile.c:113 +#: libpq/be-secure.c:753 #, c-format -msgid "could not seek in file \"%s\": %m" -msgstr "无法在文件\"%s\"进行查找: %m" +msgid "could not load server certificate file \"%s\": %s" +msgstr "无法装载服务器认证文件 \"%s\": %s" -#: utils/adt/genfile.c:118 -msgid "requested length cannot be negative" -msgstr "所请求的长度不能是负数" +#: libpq/be-secure.c:759 +#, c-format +msgid "could not access private key file \"%s\": %m" +msgstr "无法处理私钥文件 \"%s\": %m" -#: utils/adt/genfile.c:124 utils/adt/oracle_compat.c:181 -#: utils/adt/oracle_compat.c:279 utils/adt/oracle_compat.c:755 -#: utils/adt/oracle_compat.c:1045 -msgid "requested length too large" -msgstr "请求长度太大" +#: libpq/be-secure.c:774 +#, c-format +msgid "private key file \"%s\" has group or world access" +msgstr "私钥文件\"%s\"具有由所在组或全局范围访问的权限" -#: utils/adt/genfile.c:163 -msgid "must be superuser to get file information" -msgstr "只有超级用户才能获取文件信息" +#: libpq/be-secure.c:776 +msgid "Permissions should be u=rw (0600) or less." +msgstr "权限应该为u=rw (0600)或者更少" -#: utils/adt/genfile.c:227 -msgid "must be superuser to get directory listings" -msgstr "只有超级用户才能获取目录列表" +#: libpq/be-secure.c:783 +#, c-format +msgid "could not load private key file \"%s\": %s" +msgstr "无法装载私钥文件 \"%s\": %s" -#: utils/adt/geo_ops.c:294 utils/adt/geo_ops.c:4242 utils/adt/geo_ops.c:5159 -msgid "too many points requested" -msgstr "要求了太多的点" +#: libpq/be-secure.c:788 +#, c-format +msgid "check of private key failed: %s" +msgstr "检查私钥失败: %s" -#: utils/adt/geo_ops.c:317 -msgid "could not format \"path\" value" -msgstr "无法格式化 \"path\" 值" +#: libpq/be-secure.c:816 +#, c-format +msgid "could not access root certificate file \"%s\": %m" +msgstr "无法访问根认证文件\"%s\": %m" -#: utils/adt/geo_ops.c:392 +#: libpq/be-secure.c:827 #, c-format -msgid "invalid input syntax for type box: \"%s\"" -msgstr "无效的 box 类型输入语法: \"%s\"" +msgid "could not load root certificate file \"%s\": %s" +msgstr "无法装载根 (root) 认证文件 \"%s\": %s" -#: utils/adt/geo_ops.c:956 +#: libpq/be-secure.c:850 #, c-format -msgid "invalid input syntax for type line: \"%s\"" -msgstr "无效的 line 类型输入语法: \"%s\"" +msgid "SSL certificate revocation list file \"%s\" ignored" +msgstr "忽略SSL认证撤销列表文件 \"%s\"" -#: 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\" 没有实现" +#: libpq/be-secure.c:852 +msgid "SSL library does not support certificate revocation lists." +msgstr "SSL库不支持认证撤销列表" -#: utils/adt/geo_ops.c:1404 utils/adt/geo_ops.c:1427 +#: libpq/be-secure.c:859 #, c-format -msgid "invalid input syntax for type path: \"%s\"" -msgstr "无效的 path 类型输入语法: \"%s\"" +msgid "SSL certificate revocation list file \"%s\" not found, skipping: %s" +msgstr "没有找到SSL认证撤销列表文件\"%s\",跳过: %s" -#: utils/adt/geo_ops.c:1466 -msgid "invalid number of points in external \"path\" value" -msgstr "在外部 \"path\" 值中的点数量无效." +#: libpq/be-secure.c:861 +msgid "Certificates will not be checked against revocation list." +msgstr "无法针对撤销列表检查认证" -#: utils/adt/geo_ops.c:1807 +#: libpq/be-secure.c:903 #, c-format -msgid "invalid input syntax for type point: \"%s\"" -msgstr "无效的 point 类型输入语法: \"%s\"" +msgid "could not initialize SSL connection: %s" +msgstr "无法初始化 SSL 联接: %s" -#: utils/adt/geo_ops.c:2035 +#: libpq/be-secure.c:912 #, c-format -msgid "invalid input syntax for type lseg: \"%s\"" -msgstr "无效的 lseg 类型输入语法: \"%s\"" - -#: utils/adt/geo_ops.c:2639 -msgid "function \"dist_lb\" not implemented" -msgstr "函数 \"dist_lb\" 没有实现" +msgid "could not set SSL socket: %s" +msgstr "无法创建 SSL 套接字: %s" -#: utils/adt/geo_ops.c:3152 -msgid "function \"close_lb\" not implemented" -msgstr "函数 \"close_lb\" 没有实现" +#: libpq/be-secure.c:938 +#, c-format +msgid "could not accept SSL connection: %m" +msgstr "无法访问 SSL 联接: %m" -#: utils/adt/geo_ops.c:3441 -msgid "cannot create bounding box for empty polygon" -msgstr "无法为空多边形创建 bounding box" +#: libpq/be-secure.c:942 libpq/be-secure.c:953 +msgid "could not accept SSL connection: EOF detected" +msgstr "无法访问 SSL 联接: 发现 EOF" -#: utils/adt/geo_ops.c:3465 utils/adt/geo_ops.c:3477 +#: libpq/be-secure.c:947 #, c-format -msgid "invalid input syntax for type polygon: \"%s\"" -msgstr "无效的 polygon 类型输入语法: \"%s\"" - -#: utils/adt/geo_ops.c:3517 -msgid "invalid number of points in external \"polygon\" value" -msgstr "在外部\"polygon\" 值中的点数量无效." +msgid "could not accept SSL connection: %s" +msgstr "无法访问 SSL 联接: %s" -#: utils/adt/geo_ops.c:4040 -msgid "function \"poly_distance\" not implemented" -msgstr "函数 \"poly_distance\" 没有实现" +#: libpq/be-secure.c:1003 +msgid "SSL certificate's common name contains embedded null" +msgstr "在SSL认证的普通名称中包含嵌入的空值" -#: utils/adt/geo_ops.c:4352 -msgid "function \"path_center\" not implemented" -msgstr "函数 \"path_center\" 没有实现" +#: libpq/be-secure.c:1014 +#, c-format +msgid "SSL connection from \"%s\"" +msgstr "来自 \"%s\" 的 SSL 联接" -#: utils/adt/geo_ops.c:4369 -msgid "open path cannot be converted to polygon" -msgstr "打开的路径不能转换为多态型" +#: libpq/be-secure.c:1065 +msgid "no SSL error reported" +msgstr "没有报告SSL错误" -#: utils/adt/geo_ops.c:4536 utils/adt/geo_ops.c:4546 utils/adt/geo_ops.c:4561 -#: utils/adt/geo_ops.c:4567 +#: libpq/be-secure.c:1069 #, c-format -msgid "invalid input syntax for type circle: \"%s\"" -msgstr "无效的 circle 类型输入语法: \"%s\"" - -#: utils/adt/geo_ops.c:4589 utils/adt/geo_ops.c:4597 -msgid "could not format \"circle\" value" -msgstr "无法格式化 \"circle\" 的值" +msgid "SSL error code %lu" +msgstr "SSL错误代码 %lu" -#: utils/adt/geo_ops.c:4624 -msgid "invalid radius in external \"circle\" value" -msgstr "在外部\"circle\" 值中的半径无效" +#: libpq/pqformat.c:436 +msgid "no data left in message" +msgstr "信息中已经没有数据了" -#: utils/adt/geo_ops.c:5145 -msgid "cannot convert circle with radius zero to polygon" -msgstr "无法将半径为0的圆转换为多边类型" +#: libpq/pqformat.c:636 +msgid "invalid string in message" +msgstr "信息中的无效字串" -#: utils/adt/geo_ops.c:5150 -msgid "must request at least 2 points" -msgstr "必须要求至少两个点." +#: libpq/pqformat.c:652 +msgid "invalid message format" +msgstr "无效的信息格式" -#: utils/adt/geo_ops.c:5194 utils/adt/geo_ops.c:5217 -msgid "cannot convert empty polygon to circle" -msgstr "无法转换空的多边形到圆形" +#: libpq/auth.c:257 +#, c-format +msgid "authentication failed for user \"%s\": host rejected" +msgstr "用户 \"%s\" 认证失败: 主机拒绝" -#: utils/adt/int.c:162 -msgid "int2vector has too many elements" -msgstr "int2vector 有太多的元素" +#: libpq/auth.c:260 +#, c-format +msgid "Kerberos 5 authentication failed for user \"%s\"" +msgstr "用户 \"%s\" Kerberos5 认证失败" -#: utils/adt/int.c:236 -msgid "invalid int2vector data" -msgstr "无效的int2vector数据" +#: libpq/auth.c:263 +#, c-format +msgid "\"trust\" authentication failed for user \"%s\"" +msgstr "用户 \"%s\" \"trust\" 认证失败" -#: utils/adt/int.c:242 utils/adt/oid.c:212 utils/adt/oid.c:292 -msgid "oidvector has too many elements" -msgstr "oidvector 有太多元素" +#: libpq/auth.c:266 +#, c-format +msgid "Ident authentication failed for user \"%s\"" +msgstr "用户 \"%s\" Ident 认证失败" -#: utils/adt/int.c:1323 utils/adt/int8.c:1358 utils/adt/timestamp.c:4712 -#: utils/adt/timestamp.c:4793 -msgid "step size cannot equal zero" -msgstr "单步执行大小不能等于0" +#: libpq/auth.c:269 +#, c-format +msgid "Peer authentication failed for user \"%s\"" +msgstr "对用户\"%s\"的对等认证失败" -#: utils/adt/int8.c:97 utils/adt/int8.c:132 utils/adt/numutils.c:53 -#: utils/adt/numutils.c:63 utils/adt/numutils.c:105 +#: libpq/auth.c:273 #, c-format -msgid "invalid input syntax for integer: \"%s\"" -msgstr "无效的整数类型输入语法: \"%s\"" +msgid "password authentication failed for user \"%s\"" +msgstr "用户 \"%s\" Password 认证失败" -#: utils/adt/int8.c:113 +#: libpq/auth.c:278 #, c-format -msgid "value \"%s\" is out of range for type bigint" -msgstr "值 \"%s\" 超出 bigint 类型范围" +msgid "GSSAPI authentication failed for user \"%s\"" +msgstr "对于用户\"%s\"的GSSAPI 认证失败" -#: utils/adt/int8.c:502 utils/adt/int8.c:531 utils/adt/int8.c:552 -#: utils/adt/int8.c:582 utils/adt/int8.c:610 utils/adt/int8.c:628 -#: utils/adt/int8.c:672 utils/adt/int8.c:689 utils/adt/int8.c:758 -#: utils/adt/int8.c:779 utils/adt/int8.c:806 utils/adt/int8.c:833 -#: utils/adt/int8.c:854 utils/adt/int8.c:875 utils/adt/int8.c:902 -#: utils/adt/int8.c:942 utils/adt/int8.c:963 utils/adt/int8.c:990 -#: utils/adt/int8.c:1017 utils/adt/int8.c:1038 utils/adt/int8.c:1059 -#: utils/adt/int8.c:1086 utils/adt/int8.c:1259 utils/adt/int8.c:1298 -#: utils/adt/numeric.c:2115 utils/adt/varbit.c:1563 -msgid "bigint out of range" -msgstr "bigint 超出范围" +#: libpq/auth.c:281 +#, c-format +msgid "SSPI authentication failed for user \"%s\"" +msgstr "对于用户 \"%s\" 的 SSPI 认证失败" -#: utils/adt/int8.c:1315 -msgid "OID out of range" -msgstr "OID 超出范围" +#: libpq/auth.c:284 +#, c-format +msgid "PAM authentication failed for user \"%s\"" +msgstr "用户 \"%s\" 认证 PAM 失败" -#: utils/adt/like_match.c:103 utils/adt/like_match.c:163 -msgid "LIKE pattern must not end with escape character" -msgstr "LIKE模式不能以转义字符结束" +#: libpq/auth.c:287 +#, c-format +msgid "LDAP authentication failed for user \"%s\"" +msgstr "对于用户 \"%s\"的LDAP认证失败" -#: utils/adt/like_match.c:287 utils/adt/regexp.c:668 -msgid "invalid escape string" -msgstr "无效的逃逸字符串" - -#: utils/adt/like_match.c:288 utils/adt/regexp.c:669 -msgid "Escape string must be empty or one character." -msgstr "逃逸字符串必须为空或者一个字符." - -#: utils/adt/mac.c:65 +#: libpq/auth.c:290 #, c-format -msgid "invalid input syntax for type macaddr: \"%s\"" -msgstr "无效的 macaddr 类型输入语法: \"%s\"" +msgid "certificate authentication failed for user \"%s\"" +msgstr "用户 \"%s\" 的认证失败" -#: utils/adt/mac.c:72 +#: libpq/auth.c:293 #, c-format -msgid "invalid octet value in \"macaddr\" value: \"%s\"" -msgstr "在 \"macaddr\" 值中的无效八位值: \"%s\"" - -#: utils/adt/misc.c:80 -msgid "must be superuser to signal other server processes" -msgstr "只有超级用户可以发送信号到其他服务器进程" +msgid "RADIUS authentication failed for user \"%s\"" +msgstr "用户 \"%s\" 的RADIUS认证失败" -#: utils/adt/misc.c:89 +#: libpq/auth.c:296 #, c-format -msgid "PID %d is not a PostgreSQL server process" -msgstr "PID %d 不是 PostgreSQL 服务器进程" +msgid "authentication failed for user \"%s\": invalid authentication method" +msgstr "用户 \"%s\" 认证失败: 无效的认证方式" -#: utils/adt/misc.c:126 -msgid "must be superuser to signal the postmaster" -msgstr "只有超级用户可以发送信号到postmaster进程" +#: libpq/auth.c:325 +msgid "missing or erroneous pg_hba.conf file" +msgstr "缺失或者时拿到错误的 pg_hba.conf 文件" -#: utils/adt/misc.c:131 -#, c-format -msgid "failed to send signal to postmaster: %m" -msgstr "无法发送信号到postmaster进程: %m" +#: libpq/auth.c:326 +msgid "See server log for details." +msgstr "详细信息请查看服务器日志." -#: utils/adt/misc.c:148 -msgid "must be superuser to rotate log files" -msgstr "只有超级用户能切换日志文件" +#: libpq/auth.c:356 +msgid "connection requires a valid client certificate" +msgstr "连接中需要一个有效的客户端认证" -#: utils/adt/misc.c:153 -msgid "rotation not possible because log collection not active" -msgstr "日志切换无法进行,因为没有激活日志收集功能" +#: libpq/auth.c:400 libpq/auth.c:416 libpq/auth.c:464 libpq/auth.c:482 +msgid "SSL on" +msgstr "SSL 开启" -#: utils/adt/misc.c:195 -msgid "global tablespace never has databases" -msgstr "全局表空间没有数据库" +#: libpq/auth.c:400 libpq/auth.c:416 libpq/auth.c:464 libpq/auth.c:482 +msgid "SSL off" +msgstr "SSL 关闭" -#: utils/adt/misc.c:216 +#: libpq/auth.c:398 #, c-format -msgid "%u is not a tablespace OID" -msgstr "%u 不是一个表空间 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 "已保留" +msgid "" +"pg_hba.conf rejects replication connection for host \"%s\", user \"%s\", %s" +msgstr "pg_hba.conf中的记录拒绝来自主机\"%s\",用户 \"%s\",%s的复制连接" -#: utils/adt/nabstime.c:160 +#: libpq/auth.c:404 #, c-format -msgid "invalid time zone name: \"%s\"" -msgstr "无效时区名字: \"%s\"" - -#: utils/adt/nabstime.c:506 utils/adt/nabstime.c:579 -msgid "cannot convert abstime \"invalid\" to timestamp" -msgstr "无法把 abstime \"invalid\" 转换为 timestamp." - -#: utils/adt/nabstime.c:806 -msgid "invalid status in external \"tinterval\" value" -msgstr "无效的外部 \"tinterval\" 值状态" - -#: utils/adt/nabstime.c:880 -msgid "cannot convert reltime \"invalid\" to interval" -msgstr "无法把 reltime \"invalid\" 转换为 interval" +msgid "pg_hba.conf rejects replication connection for host \"%s\", user \"%s\"" +msgstr "pg_hba.conf 记录拒绝来自主机\"%s\", 用户\"%s\"的复制连接" -#: utils/adt/nabstime.c:1562 +#: libpq/auth.c:413 #, c-format -msgid "invalid input syntax for type tinterval: \"%s\"" -msgstr "无效的 tinterval 类型输入语法: \"%s\"" +msgid "" +"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s" +"\", %s" +msgstr "" +"pg_hba.conf 记录拒绝来自主机\"%s\", 用户\"%s\", 数据库\"%s\", %s的复制连接" -#: utils/adt/network.c:118 +#: libpq/auth.c:420 #, c-format -msgid "invalid cidr value: \"%s\"" -msgstr "无效的 cidr 值: \"%s\"" - -#: utils/adt/network.c:119 utils/adt/network.c:249 -msgid "Value has bits set to right of mask." -msgstr "这个值带有的bit集合,在掩码的右边." +msgid "" +"pg_hba.conf rejects connection for host \"%s\", user \"%s\", database \"%s\"" +msgstr "pg_hba.conf 记录拒绝来自主机\"%s\", 用户\"%s\", 数据库\"%s\"的复制连接" -#: utils/adt/network.c:160 utils/adt/network.c:614 utils/adt/network.c:639 -#: utils/adt/network.c:664 +#: libpq/auth.c:449 #, c-format -msgid "could not format inet value: %m" -msgstr "无法格式化 inet 值: %m" +msgid "Client IP address resolved to \"%s\", forward lookup matches." +msgstr "客户端IP地址解析为 \"%s\", 与转发查找结果相匹配." -#. translator: %s is inet or cidr -#: utils/adt/network.c:217 +#: libpq/auth.c:451 #, c-format -msgid "invalid address family in external \"%s\" value" -msgstr "在外部\"%s\"值中的地址族无效" +msgid "Client IP address resolved to \"%s\", forward lookup not checked." +msgstr "客户端IP地址解析为 \"%s\", 转发查找结果没有检查." -#. translator: %s is inet or cidr -#: utils/adt/network.c:224 +#: libpq/auth.c:453 #, c-format -msgid "invalid bits in external \"%s\" value" -msgstr "在外部\"%s\"值中的bit无效" +msgid "Client IP address resolved to \"%s\", forward lookup does not match." +msgstr "客户端IP地址解析为 \"%s\", 与转发查找结果不匹配." -#. translator: %s is inet or cidr -#: utils/adt/network.c:233 +#: libpq/auth.c:462 #, c-format -msgid "invalid length in external \"%s\" value" -msgstr "在外部\"%s\"值中的长度无效" +msgid "" +"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s" +"\", %s" +msgstr "没有来自主机 \"%s\", 用户\"%s\", %s的复制连接的pg_hba.conf记录" -#: utils/adt/network.c:248 -msgid "invalid external \"cidr\" value" -msgstr "无效的外部 \"cidr\" 值" +#: libpq/auth.c:469 +#, c-format +msgid "" +"no pg_hba.conf entry for replication connection from host \"%s\", user \"%s\"" +msgstr "没有来自主机 \"%s\", 用户\"%s\"的复制连接的pg_hba.conf记录" -#: utils/adt/network.c:370 utils/adt/network.c:397 +#: libpq/auth.c:479 #, c-format -msgid "invalid mask length: %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 记录" -#: utils/adt/network.c:682 +#: libpq/auth.c:487 #, c-format -msgid "could not format cidr value: %m" -msgstr "无法格式化cidr值: %m" +msgid "no pg_hba.conf entry for host \"%s\", user \"%s\", database \"%s\"" +msgstr "没有用于主机 \"%s\", 用户 \"%s\", 数据库 \"%s\" 的 pg_hba.conf 记录" -#: utils/adt/network.c:1255 -msgid "cannot AND inet values of different sizes" -msgstr "无法为不同大小的inet类型值进行与 (AND) 位运算" +#: libpq/auth.c:539 libpq/hba.c:1118 +msgid "" +"MD5 authentication is not supported when \"db_user_namespace\" is enabled" +msgstr "当启用 \"db_user_namespace\" 时不支持 MD5 认证" -#: utils/adt/network.c:1287 -msgid "cannot OR inet values of different sizes" -msgstr "无法为不同大小的inet类型值进行或 (OR) 运算" +#: libpq/auth.c:663 +#, c-format +msgid "expected password response, got message type %d" +msgstr "期望得到口令回应,但是得到了消息类型%d." -#: utils/adt/network.c:1348 utils/adt/network.c:1424 -msgid "result is out of range" -msgstr "结果超出范围" +#: libpq/auth.c:691 +msgid "invalid password packet size" +msgstr "无效的口令包尺寸" -#: utils/adt/network.c:1389 -msgid "cannot subtract inet values of different sizes" -msgstr "无法为不同大小的inet类型值进行减法运算" +#: libpq/auth.c:695 +msgid "received password packet" +msgstr "接收到口令包" -#: utils/adt/numeric.c:352 utils/adt/numeric.c:379 utils/adt/numeric.c:3083 -#: utils/adt/numeric.c:3106 utils/adt/numeric.c:3130 utils/adt/numeric.c:3137 +#: libpq/auth.c:753 #, c-format -msgid "invalid input syntax for type numeric: \"%s\"" -msgstr "无效的数字类型输入语法: \"%s\"" - -#: utils/adt/numeric.c:482 -msgid "invalid length in external \"numeric\" value" -msgstr "无效的外部 \"numeric\" 值长度" +msgid "Kerberos initialization returned error %d" +msgstr "Kerberos 初始化返回错误 %d" -#: utils/adt/numeric.c:493 -msgid "invalid sign in external \"numeric\" value" -msgstr "无效的外部 \"numeric\" 值符号" +#: libpq/auth.c:763 +#, c-format +msgid "Kerberos keytab resolving returned error %d" +msgstr "Kerberos keytab 解析返回错误 %d" -#: utils/adt/numeric.c:503 -msgid "invalid digit in external \"numeric\" value" -msgstr "无效的外部 \"numeric\" 值位数" +#: libpq/auth.c:787 +#, c-format +msgid "Kerberos sname_to_principal(\"%s\", \"%s\") returned error %d" +msgstr "Kerberos sname_to_principal(\"%s\", \"%s\") 返回错误 %d" -#: utils/adt/numeric.c:634 utils/adt/numeric.c:648 +#: libpq/auth.c:832 #, c-format -msgid "NUMERIC precision %d must be between 1 and %d" -msgstr "NUMERIC %d 的精度必须在 1 和 %d 之间" +msgid "Kerberos recvauth returned error %d" +msgstr "Kerberos recvauth 返回错误 %d" -#: utils/adt/numeric.c:639 +#: libpq/auth.c:855 #, c-format -msgid "NUMERIC scale %d must be between 0 and precision %d" -msgstr "NUMERIC 数值范围 %d 必须在 0 和精度 %d 之间" +msgid "Kerberos unparse_name returned error %d" +msgstr "Kerberos unparse_name 返回错误 %d" -# fe-exec.c:2055 -#: utils/adt/numeric.c:657 -msgid "invalid NUMERIC type modifier" -msgstr "无效的NUMERIC类型修改器" +#: libpq/auth.c:1003 +msgid "GSSAPI is not supported in protocol version 2" +msgstr "在协议版本2中不支持使用GSSAPI" -#: utils/adt/numeric.c:1690 utils/adt/numeric.c:3545 -msgid "value overflows numeric format" -msgstr "值溢出数字格式" +#: libpq/auth.c:1058 +#, c-format +msgid "expected GSS response, got message type %d" +msgstr "期望GSS回应,但是得到了信息类型%d" -#: utils/adt/numeric.c:2038 -msgid "cannot convert NaN to integer" -msgstr "无法转化 NaN 为整数" +#: libpq/auth.c:1121 +msgid "accepting GSS security context failed" +msgstr "接收GSS安全环境失败" -#: utils/adt/numeric.c:2106 -msgid "cannot convert NaN to bigint" -msgstr "无法转换 NaN 为 bigint" +#: libpq/auth.c:1147 +msgid "retrieving GSS user name failed" +msgstr "获取GSS用户名失败" -#: utils/adt/numeric.c:2154 -msgid "cannot convert NaN to smallint" -msgstr "无法转换 NaN 为 smallint" +#: libpq/auth.c:1264 +msgid "SSPI is not supported in protocol version 2" +msgstr "在协议版本2中不支持使用SSPI" -#: utils/adt/numeric.c:3615 -msgid "numeric field overflow" -msgstr "数字字段溢出" +#: libpq/auth.c:1279 +msgid "could not acquire SSPI credentials" +msgstr "无法获得同等 (peer) 证书: %m" -#: utils/adt/numeric.c:3616 +#: libpq/auth.c:1296 #, 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的绝对值." +msgid "expected SSPI response, got message type %d" +msgstr "期望SSPI回应,但是得到了消息类型%d" -#: utils/adt/numeric.c:5064 -msgid "argument for function \"exp\" too big" -msgstr "对于函数 \"exp\" 参数太大" +#: libpq/auth.c:1368 +msgid "could not accept SSPI security context" +msgstr "无法访问SSPI安全环境" -#: utils/adt/numutils.c:77 +#: libpq/auth.c:1430 +msgid "could not get token from SSPI security context" +msgstr "无法从SSPI安全环境中获取令牌(token)" + +#: libpq/auth.c:1674 #, c-format -msgid "value \"%s\" is out of range for type integer" -msgstr "值 \"%s\" 超出整数类型范围" +msgid "could not create socket for Ident connection: %m" +msgstr "无法为 Ident 联接创建套接字: %m" -#: utils/adt/numutils.c:83 +#: libpq/auth.c:1689 #, c-format -msgid "value \"%s\" is out of range for type smallint" -msgstr "值 \"%s\" 超出 smallint 类型范围" +msgid "could not bind to local address \"%s\": %m" +msgstr "无法绑定到本地地址 \"%s\": %m" -#: utils/adt/numutils.c:89 +#: libpq/auth.c:1701 #, c-format -msgid "value \"%s\" is out of range for 8-bit integer" -msgstr "值 \"%s\" 超出 8 位整数范围" +msgid "could not connect to Ident server at address \"%s\", port %s: %m" +msgstr "无法联接到地址为 \"%s\", 端口为 %s 的 Ident 服务器: %m" -#: utils/adt/oid.c:43 utils/adt/oid.c:57 utils/adt/oid.c:63 utils/adt/oid.c:84 +#: libpq/auth.c:1721 #, c-format -msgid "invalid input syntax for type oid: \"%s\"" -msgstr "无效的 oid 类型输入语法: \"%s\"" +msgid "could not send query to Ident server at address \"%s\", port %s: %m" +msgstr "无法发送查询到地址为 \"%s\", 端口为 %s 的 Ident 服务器: %m" -#: utils/adt/oid.c:69 utils/adt/oid.c:107 +#: libpq/auth.c:1736 #, c-format -msgid "value \"%s\" is out of range for type oid" -msgstr "值 \"%s\" 超出类型 oid 范围" +msgid "" +"could not receive response from Ident server at address \"%s\", port %s: %m" +msgstr "无法从地址为 \"%s\", 端口为 %s 的 Ident 服务器接收应答: %m" -#: utils/adt/oid.c:286 -msgid "invalid oidvector data" -msgstr "无效的oidvector数据" +#: libpq/auth.c:1746 +#, c-format +msgid "invalidly formatted response from Ident server: \"%s\"" +msgstr "从 Ident 服务器接收的无效格式应答: \"%s\"" -#: utils/adt/oracle_compat.c:892 -msgid "requested character too large" -msgstr "所请求的字符太大" +# fe-auth.c:640 +#: libpq/auth.c:1785 +msgid "peer authentication is not supported on this platform" +msgstr "对等认证在这个平台上不支持" -#: utils/adt/oracle_compat.c:938 utils/adt/oracle_compat.c:992 +#: libpq/auth.c:1789 #, c-format -msgid "requested character too large for encoding: %d" -msgstr "对于编码来说所要求的字符太大了: %d" +msgid "could not get peer credentials: %m" +msgstr "无法获得同等 (peer) 证书: %m" -#: utils/adt/oracle_compat.c:985 -msgid "null character not permitted" -msgstr "不允许使用空字符" +#: libpq/auth.c:1798 +#, c-format +msgid "local user with ID %d does not exist" +msgstr "ID 为 %d 的本地用户不存在" -#: utils/adt/pseudotypes.c:94 -msgid "cannot accept a value of type any" -msgstr "无法接受一个 any 类型值" +#: libpq/auth.c:1881 libpq/auth.c:2153 libpq/auth.c:2513 +msgid "empty password returned by client" +msgstr "客户端返回了空口令" -#: utils/adt/pseudotypes.c:107 -msgid "cannot display a value of type any" -msgstr "无法显示一个 any 类型值" +#: libpq/auth.c:1891 +#, c-format +msgid "error from underlying PAM layer: %s" +msgstr "来自 PAM 层下面的错误: %s" -#: utils/adt/pseudotypes.c:121 utils/adt/pseudotypes.c:149 -msgid "cannot accept a value of type anyarray" -msgstr "无法接受一个 anyarray 类型值" +#: libpq/auth.c:1960 +#, c-format +msgid "could not create PAM authenticator: %s" +msgstr "无法创建 PAM 类型器: %s" -#: utils/adt/pseudotypes.c:174 -msgid "cannot accept a value of type anyenum" -msgstr "无法接受一个anyenum类型值" +#: libpq/auth.c:1971 +#, c-format +msgid "pam_set_item(PAM_USER) failed: %s" +msgstr "pam_set_item(PAM_USER) 失败: %s" -#: utils/adt/pseudotypes.c:224 -msgid "cannot accept a value of type trigger" -msgstr "无法接受一个 trigger 类型值" +#: libpq/auth.c:1982 +#, c-format +msgid "pam_set_item(PAM_CONV) failed: %s" +msgstr "pam_set_item(PAM_CONV) 失败: %s" -#: utils/adt/pseudotypes.c:237 -msgid "cannot display a value of type trigger" -msgstr "无法显示一个 trigger 类型值" +#: libpq/auth.c:1993 +#, c-format +msgid "pam_authenticate failed: %s" +msgstr "pam_authenticate 失败: %s" -#: utils/adt/pseudotypes.c:251 -msgid "cannot accept a value of type language_handler" -msgstr "无法接受一个 language_handler 类型值" +#: libpq/auth.c:2004 +#, c-format +msgid "pam_acct_mgmt failed: %s" +msgstr "pam_acct_mgmt 失败: %s" -#: utils/adt/pseudotypes.c:264 -msgid "cannot display a value of type language_handler" -msgstr "无法显示一个 language_handler 类型值" +#: libpq/auth.c:2015 +#, c-format +msgid "could not release PAM authenticator: %s" +msgstr "无法释放 PAM 类型器: %s" -#: utils/adt/pseudotypes.c:278 -msgid "cannot accept a value of type internal" -msgstr "无法接受一个 internal 类型值" +#: libpq/auth.c:2048 libpq/auth.c:2052 +#, c-format +msgid "could not initialize LDAP: error code %d" +msgstr "无法初始化LDAP: 错误代码%d" -#: utils/adt/pseudotypes.c:291 -msgid "cannot display a value of type internal" -msgstr "无法显示一个 internal 类型值" +#: libpq/auth.c:2062 +#, c-format +msgid "could not set LDAP protocol version: error code %d" +msgstr "无法设置LDAP协议版本: 错误代码 %d" -#: utils/adt/pseudotypes.c:305 -msgid "cannot accept a value of type opaque" -msgstr "无法接受一个 opaque 类型值" +#: libpq/auth.c:2091 +msgid "could not load wldap32.dll" +msgstr "无法加载wldap32.dll" -#: utils/adt/pseudotypes.c:318 -msgid "cannot display a value of type opaque" -msgstr "无法显示一个 opaque 类型值" +#: libpq/auth.c:2099 +msgid "could not load function _ldap_start_tls_sA in wldap32.dll" +msgstr "无法加载在wldap32.dll中的函数_ldap_start_tls_sA" -#: utils/adt/pseudotypes.c:332 -msgid "cannot accept a value of type anyelement" -msgstr "无法接受一个 anyelement 类型值" +#: libpq/auth.c:2100 +msgid "LDAP over SSL is not supported on this platform." +msgstr "在此平台上不支持在SSL连接上的LDAP" -#: utils/adt/pseudotypes.c:345 -msgid "cannot display a value of type anyelement" -msgstr "无法显示一个 anyelement 类型值" +#: libpq/auth.c:2115 +#, c-format +msgid "could not start LDAP TLS session: error code %d" +msgstr "无法启动LDAP TLS会话: 错误码 %d" -#: utils/adt/pseudotypes.c:358 -msgid "cannot accept a value of type anynonarray" -msgstr "无法接受一个anynonarray类型值" +#: libpq/auth.c:2137 +msgid "LDAP server not specified" +msgstr "没有指定LDAP服务器" -#: utils/adt/pseudotypes.c:371 -msgid "cannot display a value of type anynonarray" -msgstr "无法显示一个anynonarray类型的值" +#: libpq/auth.c:2189 +msgid "invalid character in user name for LDAP authentication" +msgstr "在需要进行LDAP认证的用户名中出现无效字符" -#: utils/adt/pseudotypes.c:384 -msgid "cannot accept a value of a shell type" -msgstr "无法接受一个shell类型的值" +#: libpq/auth.c:2204 +#, 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" -#: utils/adt/pseudotypes.c:397 -msgid "cannot display a value of a shell type" -msgstr "无法显示一个shell类型值" +#: libpq/auth.c:2229 +#, c-format +msgid "could not search LDAP for filter \"%s\" on server \"%s\": error code %d" +msgstr "无法在服务器\"%2$s\"上为过滤器\"%1$s\"进行的搜索LDAP:错误代码%3$d" -#: utils/adt/regexp.c:269 utils/adt/varlena.c:2797 +#: libpq/auth.c:2239 #, c-format -msgid "regular expression failed: %s" -msgstr "正则表达式失败: %s" +msgid "LDAP search failed for filter \"%s\" on server \"%s\": no such user" +msgstr "在服务器\"%2$s\"上为过滤器\"%1$s\"进行的LDAP搜索失败:没有此用户" -#: utils/adt/regexp.c:404 +#: libpq/auth.c:2243 #, c-format -msgid "invalid regexp option: \"%c\"" -msgstr "无效的正则表达式选项: \"%c\"" +msgid "" +"LDAP search failed for filter \"%s\" on server \"%s\": user is not unique " +"(%ld matches)" +msgstr "" +"在服务器\"%2$s\"上的为过滤器\"%1$s\"进行的LDAP搜索失败:用户不是唯一的(找" +"到%3$ld个匹配)" -#: utils/adt/regexp.c:865 -msgid "regexp_split does not support the global option" -msgstr "regexp_split 不支持全局选项" +#: libpq/auth.c:2260 +#, 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" -#: utils/adt/regproc.c:123 utils/adt/regproc.c:143 +#: libpq/auth.c:2280 #, c-format -msgid "more than one function named \"%s\"" -msgstr "多个函数名为 \"%s\"" +msgid "could not unbind after searching for user \"%s\" on server \"%s\": %s" +msgstr "在服务器 \"%2$s\"上搜索用户\"%1$s\"后无法解除绑定:%3$s" -#: utils/adt/regproc.c:468 utils/adt/regproc.c:488 +#: libpq/auth.c:2317 #, c-format -msgid "more than one operator named %s" -msgstr "多个操作符名为 %s" +msgid "LDAP login failed for user \"%s\" on server \"%s\": error code %d" +msgstr "用户 \"%s\" 在服务器 \"%s\" 进行LDAP登录失败:错误代码 %d" -#: utils/adt/regproc.c:635 utils/adt/regproc.c:1485 utils/adt/ruleutils.c:5516 -#: utils/adt/ruleutils.c:5571 utils/adt/ruleutils.c:5608 -msgid "too many arguments" -msgstr "太多参数" +#: libpq/auth.c:2345 +#, c-format +msgid "" +"certificate authentication failed for user \"%s\": client certificate " +"contains no user name" +msgstr "用户\"%s\"的认证鉴权失败: 客户端认证没有包含用户名" -#: utils/adt/regproc.c:636 -msgid "Provide two argument types for operator." -msgstr "为操作符提供两个参数类型." +#: libpq/auth.c:2469 +msgid "RADIUS server not specified" +msgstr "没有指定RADIUS服务器" -#: utils/adt/regproc.c:1320 utils/adt/regproc.c:1325 utils/adt/varlena.c:2198 -#: utils/adt/varlena.c:2203 -msgid "invalid name syntax" -msgstr "无效的名字语法" +#: libpq/auth.c:2476 +msgid "RADIUS secret not specified" +msgstr "没有指定RADIUS机密(secret) " -#: utils/adt/regproc.c:1383 -msgid "expected a left parenthesis" -msgstr "需要一个左括弧" +#: libpq/auth.c:2492 libpq/hba.c:1403 +#, c-format +msgid "could not translate RADIUS server name \"%s\" to address: %s" +msgstr "无法将RADIUS服务器名称 \"%s\" 翻译为相应地址:%s" -#: utils/adt/regproc.c:1399 -msgid "expected a right parenthesis" -msgstr "需要一个右括弧" +#: libpq/auth.c:2520 +msgid "" +"RADIUS authentication does not support passwords longer than 16 characters" +msgstr "RADIUS认证不支持长度超过16个字符的口令" -#: utils/adt/regproc.c:1418 -msgid "expected a type name" -msgstr "需要一个类型名字" +#: libpq/auth.c:2531 +msgid "could not generate random encryption vector" +msgstr "无法产生随机加密向量" -#: utils/adt/regproc.c:1450 -msgid "improper type name" -msgstr "不正确的类型名字" +#: libpq/auth.c:2554 +msgid "could not perform MD5 encryption of password" +msgstr "无法执行口令的MD5加密" -#: utils/adt/ri_triggers.c:407 utils/adt/ri_triggers.c:2803 -#: utils/adt/ri_triggers.c:3454 utils/adt/ri_triggers.c:3486 +#: libpq/auth.c:2576 #, c-format -msgid "insert or update on table \"%s\" violates foreign key constraint \"%s\"" -msgstr "插入或更新表 \"%s\" 违反外键约束 \"%s\"" +msgid "could not create RADIUS socket: %m" +msgstr "无法创建RADIUS套接字: %m" -#: utils/adt/ri_triggers.c:410 utils/adt/ri_triggers.c:2806 -msgid "MATCH FULL does not allow mixing of null and nonnull key values." -msgstr "MATCH FULL 不允许空和非空键值的混合." +#: libpq/auth.c:2597 +#, c-format +msgid "could not bind local RADIUS socket: %m" +msgstr "无法绑定本地RADIUS套接字: %m" -#: utils/adt/ri_triggers.c:3016 +#: libpq/auth.c:2607 #, c-format -msgid "function \"%s\" must be fired for INSERT" -msgstr "函数 \"%s\"必须为INSERT操作触发" +msgid "could not send RADIUS packet: %m" +msgstr "无法发送RADIUS包: %m" + +#: libpq/auth.c:2636 libpq/auth.c:2661 +msgid "timeout waiting for RADIUS response" +msgstr "在等待RADIUS回应包时超时" -#: utils/adt/ri_triggers.c:3022 +#: libpq/auth.c:2654 #, c-format -msgid "function \"%s\" must be fired for UPDATE" -msgstr "函数 \"%s\"必须为UPDATE操作触发" +msgid "could not check status on RADIUS socket: %m" +msgstr "无法在RADIUS套接字上检查状态: %m" -#: utils/adt/ri_triggers.c:3036 +#: libpq/auth.c:2683 #, c-format -msgid "function \"%s\" must be fired for DELETE" -msgstr "函数 \"%s\"必须为DELETE操作触发" +msgid "could not read RADIUS response: %m" +msgstr "无法读取RADIUS回应包: %m" -#: utils/adt/ri_triggers.c:3065 +#: libpq/auth.c:2695 libpq/auth.c:2699 #, c-format -msgid "no pg_constraint entry for trigger \"%s\" on table \"%s\"" -msgstr "在pg_constraint上没有对于表 \"%2$s\" 上的触发器 \"%1$s\" 的项" +msgid "RADIUS response was sent from incorrect port: %i" +msgstr "RADIUS回应数据包是从不正确的端口中发出的:%i" -#: utils/adt/ri_triggers.c:3067 -msgid "" -"Remove this referential integrity trigger and its mates, then do ALTER TABLE " -"ADD CONSTRAINT." -msgstr "" -"删除这个参照完整性触发器和与它相关的对象,然后执行ALTER TABLE ADD CONSTRAINT" -"操作." +#: libpq/auth.c:2708 +#, c-format +msgid "RADIUS response too short: %i" +msgstr "RADIUS回应包的长度太短:%i" -#: utils/adt/ri_triggers.c:3421 +#: libpq/auth.c:2715 #, c-format -msgid "" -"referential integrity query on \"%s\" from constraint \"%s\" on \"%s\" gave " -"unexpected result" -msgstr "" -"从在\"%3$s\"的约束\"%2$s\"中在\"%1$s\"上执行的参照完整性查询得出非期待结果." +msgid "RADIUS response has corrupt length: %i (actual length %i)" +msgstr "RADIUS回应包的长度不正确:%i(实际长度是%i)" -#: utils/adt/ri_triggers.c:3425 -msgid "This is most likely due to a rule having rewritten the query." -msgstr "这很可能是由于规则正在重写查询" +#: libpq/auth.c:2723 +#, c-format +msgid "RADIUS response is to a different request: %i (should be %i)" +msgstr "RADIUS回应包发送到了一个不同的请求上:%i (应该是%i)" + +#: libpq/auth.c:2748 +msgid "could not perform MD5 encryption of received packet" +msgstr "无法执行所接收数据包的MD5加密" -#: utils/adt/ri_triggers.c:3456 +#: libpq/auth.c:2757 +msgid "RADIUS response has incorrect MD5 signature" +msgstr "RADIUS回应包带有不正确的MD5签名" + +#: libpq/auth.c:2774 #, c-format -msgid "No rows were found in \"%s\"." -msgstr "在 \"%s\" 没有发现行." +msgid "RADIUS response has invalid code (%i) for user \"%s\"" +msgstr "对于用户\"%2$s\"来说RADIUS回应包带有无效编码(%1$i) " -#: utils/adt/ri_triggers.c:3488 +#: libpq/hba.c:160 #, c-format -msgid "Key (%s)=(%s) is not present in table \"%s\"." -msgstr "键值对(%s)=(%s)没有在表\"%s\"中出现." +msgid "authentication file token too long, skipping: \"%s\"" +msgstr "认证文件标记 (token) 太长, 忽略: \"%s\"" -#: utils/adt/ri_triggers.c:3494 +#: libpq/hba.c:355 #, c-format -msgid "" -"update or delete on table \"%s\" violates foreign key constraint \"%s\" on " -"table \"%s\"" -msgstr "在 \"%1$s\" 上的更新或删除操作违反了在 \"%3$s\" 上的外键约束 \"%2$s\"" +msgid "could not open secondary authentication file \"@%s\" as \"%s\": %m" +msgstr "无法打开次认证文件 \"@%s\" 为 \"%s\": %m" -#: utils/adt/ri_triggers.c:3497 +# fe-misc.c:702 +#: libpq/hba.c:628 #, c-format -msgid "Key (%s)=(%s) is still referenced from table \"%s\"." -msgstr "键值对(%s)=(%s)仍然是从表\"%s\"引用的." +msgid "could not translate host name \"%s\" to address: %s" +msgstr "无法解释主机名 \"%s\" 到地址: %s" -#: utils/adt/rowtypes.c:98 utils/adt/rowtypes.c:473 -msgid "input of anonymous composite types is not implemented" -msgstr "匿名复合类型输入仍未实现" +#. 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有效" -#: 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 +# fe-auth.c:640 +#: libpq/hba.c:795 #, c-format -msgid "malformed record literal: \"%s\"" -msgstr "有缺陷的记录常量: \"%s\"" +msgid "authentication method \"%s\" requires argument \"%s\" to be set" +msgstr "在认证方法\"%s\"需要设置参数\"%s\" " -#: utils/adt/rowtypes.c:152 -msgid "Missing left parenthesis." -msgstr "缺少一个左括弧" +# input.c:213 +#: libpq/hba.c:832 +msgid "local connections are not supported by this build" +msgstr "这个版本编译不支持本地连接" -#: utils/adt/rowtypes.c:180 -msgid "Too few columns." -msgstr "字段太少." +#: libpq/hba.c:853 +msgid "hostssl requires SSL to be turned on" +msgstr "hostssl 要求开启 SSL开关" -#: utils/adt/rowtypes.c:204 utils/adt/rowtypes.c:212 -msgid "Unexpected end of input." -msgstr "意外的输入末尾" +#: libpq/hba.c:854 +msgid "Set ssl = on in postgresql.conf." +msgstr "在postgresql.conf配置文件中设置 ssl 开关为 on." -#: utils/adt/rowtypes.c:263 -msgid "Too many columns." -msgstr "太多字段." +# input.c:213 +#: libpq/hba.c:862 +msgid "hostssl is not supported by this build" +msgstr "这个版本的编译安装不支持使用hostssl" -#: utils/adt/rowtypes.c:271 -msgid "Junk after right parenthesis." -msgstr "右括号后的内容无用." +#: libpq/hba.c:863 +msgid "Compile with --with-openssl to use SSL connections." +msgstr "为了使用SSL连接,在编译时需要带有 --with-openssl选项" -#: utils/adt/rowtypes.c:522 +# fe-connect.c:2558 +#: libpq/hba.c:885 #, c-format -msgid "wrong number of columns: %d, expected %d" -msgstr "错误的字段个数: %d, 期望为 %d" +msgid "invalid connection type \"%s\"" +msgstr "无效连接类型\"%s\"" + +#: libpq/hba.c:898 +msgid "end-of-line before database specification" +msgstr "在数据库定义前面出现行结束符" + +#: libpq/hba.c:911 +msgid "end-of-line before role specification" +msgstr "在角色定义前面出现行结束符" + +#: libpq/hba.c:926 +msgid "end-of-line before IP address specification" +msgstr "在IP地址定义前面出现行结束符" -#: utils/adt/rowtypes.c:549 +#: libpq/hba.c:980 #, c-format -msgid "wrong data type: %u, expected %u" -msgstr "错误的数据类型: %u, 期望为 %u" +msgid "invalid IP address \"%s\": %s" +msgstr "IP地址无效\"%s\": %s" -#: utils/adt/rowtypes.c:610 +#: libpq/hba.c:1000 #, c-format -msgid "improper binary format in record column %d" -msgstr "在记录字段 %d 为不正确的二进制格式" +msgid "specifying both host name and CIDR mask is invalid: \"%s\"" +msgstr "指定主机名,同时 CIDR 掩码: \"%s\"值无效" -#: utils/adt/rowtypes.c:896 utils/adt/rowtypes.c:1122 +#: libpq/hba.c:1014 #, c-format -msgid "cannot compare dissimilar column types %s and %s at record column %d" -msgstr "在记录列%3$d上不能对不相似的列类型%1$s和%2$s进行比较" +msgid "invalid CIDR mask in address \"%s\"" +msgstr "在地址\"%s\"中的CIDR掩码无效" -#: utils/adt/rowtypes.c:974 utils/adt/rowtypes.c:1185 -msgid "cannot compare record types with different numbers of columns" -msgstr "无法比较不同元素类型的数组" +#: libpq/hba.c:1032 +msgid "end-of-line before netmask specification" +msgstr "在网络掩码定义前的行结束符" -#: utils/adt/ruleutils.c:2236 +#: libpq/hba.c:1044 #, c-format -msgid "rule \"%s\" has unsupported event type %d" -msgstr "规则 \"%s\" 不支持事件类型 %d" +msgid "invalid IP mask \"%s\": %s" +msgstr "无效IP地址掩码\"%s\": %s" -#: utils/adt/selfuncs.c:4762 utils/adt/selfuncs.c:5191 -msgid "case insensitive matching not supported on type bytea" -msgstr "在类型bytea上不支持对不区分大小写的匹配" +#: libpq/hba.c:1061 +msgid "IP address and mask do not match" +msgstr "IP地址与掩码不匹配" -#: utils/adt/selfuncs.c:4867 utils/adt/selfuncs.c:5351 -msgid "regular-expression matching not supported on type bytea" -msgstr "在 bytea 类型上不支持正则表达式匹配" +#: libpq/hba.c:1076 +msgid "end-of-line before authentication method" +msgstr "在认证方法前面出现行结束符" -#: utils/adt/tid.c:70 utils/adt/tid.c:78 utils/adt/tid.c:86 +#: libpq/hba.c:1149 #, c-format -msgid "invalid input syntax for type tid: \"%s\"" -msgstr "无效的 tid 类型输入语法: \"%s\"" +msgid "invalid authentication method \"%s\"" +msgstr "无效认证方法\"%s\"" -#: utils/adt/timestamp.c:97 +# fe-auth.c:640 +#: libpq/hba.c:1160 #, c-format -msgid "TIMESTAMP(%d)%s precision must not be negative" -msgstr "TIMESTAMP(%d)%s 精确度不能为负数" +msgid "invalid authentication method \"%s\": not supported by this build" +msgstr "这个版本的编译安装不支持无效的认证方法\"%s\"" -#: utils/adt/timestamp.c:103 -#, c-format -msgid "TIMESTAMP(%d)%s precision reduced to maximum allowed, %d" -msgstr "将TIMESTAMP(%d)%s减少到最大允许值,%d" +#: libpq/hba.c:1181 +msgid "krb5 authentication is not supported on local sockets" +msgstr "在本地套接字上不支持krb5认证" -#: utils/adt/timestamp.c:171 utils/adt/timestamp.c:435 -#, c-format -msgid "timestamp out of range: \"%s\"" -msgstr "时间戳超出范围: \"%s\"" +#: libpq/hba.c:1192 +msgid "gssapi authentication is not supported on local sockets" +msgstr "在本地套接字上不支持gssapi认证" -#: 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 "日期/时间值 \"%s\" 不再被支持" +#: libpq/hba.c:1203 +msgid "peer authentication is only supported on local sockets" +msgstr "对等认证只支持在本地套接字的情形下使用" -#: utils/adt/timestamp.c:260 -msgid "timestamp cannot be NaN" -msgstr "时间戳不能是NaN" +#: libpq/hba.c:1220 +msgid "cert authentication is only supported on hostssl connections" +msgstr "只有在hostssl连接上才支持cert认证" -#: utils/adt/timestamp.c:370 +#: libpq/hba.c:1241 #, c-format -msgid "timestamp(%d) precision must be between %d and %d" -msgstr "timestamp(%d) 的精确度必需在 %d 到 %d 之间" +msgid "authentication option not in name=value format: %s" +msgstr "认证选项的格式不是名称=值:%s" -#: 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 超出范围" +#: libpq/hba.c:1257 +#, fuzzy +msgid "ident, peer, krb5, gssapi, sspi and cert" +msgstr "ident, peer, krb5, gssapi, sspi和cert" -#: utils/adt/timestamp.c:787 utils/adt/timestamp.c:820 -msgid "invalid INTERVAL type modifier" -msgstr "无效的INTERVAL类型修改器" +#: libpq/hba.c:1271 +msgid "clientcert can only be configured for \"hostssl\" rows" +msgstr "只能为\"hostssl\" 记录配置clientcert " -#: utils/adt/timestamp.c:803 +#: libpq/hba.c:1282 +msgid "" +"client certificates can only be checked if a root certificate store is " +"available" +msgstr "只有在根认证有效的情况下才能检查客户端认证" + +#: libpq/hba.c:1283 +msgid "Make sure the root.crt file is present and readable." +msgstr "确定文件root.crt存在并且可读" + +#: libpq/hba.c:1296 +msgid "clientcert can not be set to 0 when using \"cert\" authentication" +msgstr "当使用\"cert\"认证时clientcert不能设置为0" + +#: libpq/hba.c:1330 #, c-format -msgid "INTERVAL(%d) precision must not be negative" -msgstr "INTERVAL(%d) 的精确度不能为负数" +msgid "invalid LDAP port number: \"%s\"" +msgstr "无效LDAP端口号: \"%s\"" -#: utils/adt/timestamp.c:809 +#: libpq/hba.c:1376 libpq/hba.c:1384 +msgid "krb5, gssapi and sspi" +msgstr "krb5, gssapi和sspi" + +#: libpq/hba.c:1422 #, c-format -msgid "INTERVAL(%d) precision reduced to maximum allowed, %d" -msgstr "将INTERVAL(%d)减少到最大允许值,%d" +msgid "invalid RADIUS port number: \"%s\"" +msgstr "无效RADIUS端口号: \"%s\"" -#: utils/adt/timestamp.c:1101 +#: libpq/hba.c:1442 #, c-format -msgid "interval(%d) precision must be between %d and %d" -msgstr "interval(%d) 的精确度必需在 %d 到 %d 之间" +msgid "unrecognized authentication option name: \"%s\"" +msgstr "未知认证选项名称:\"%s\"" -#: utils/adt/timestamp.c:2306 -msgid "cannot subtract infinite timestamps" -msgstr "无法减去无限长的时间戳" +#: libpq/hba.c:1474 +msgid "" +"cannot use ldapbasedn, ldapbinddn, ldapbindpasswd, or ldapsearchattribute " +"together with ldapprefix" +msgstr "" +"无法和ldapprefix一同使用ldapbasedn, ldapbinddn, ldapbindpasswd或" +"ldapsearchattribute" -#: utils/adt/timestamp.c:3365 utils/adt/timestamp.c:3961 -#: utils/adt/timestamp.c:4020 +# fe-auth.c:640 +#: libpq/hba.c:1484 +msgid "" +"authentication method \"ldap\" requires argument \"ldapbasedn\", \"ldapprefix" +"\", or \"ldapsuffix\" to be set" +msgstr "" +"在认证方法\"ldap\"中需要设置参数 \"ldapbasedn\", \"ldapprefix\"或\"ldapsuffix" +"\"" + +#: libpq/hba.c:1815 #, c-format -msgid "timestamp units \"%s\" not supported" -msgstr "不支持时间戳单位 \"%s\"" +msgid "invalid regular expression \"%s\": %s" +msgstr "无效的正则表达式\"%s\": %s" -#: utils/adt/timestamp.c:3379 utils/adt/timestamp.c:4030 +#: libpq/hba.c:1838 #, c-format -msgid "timestamp units \"%s\" not recognized" -msgstr "时间戳单位 \"%s\" 不被认可" +msgid "regular expression match for \"%s\" failed: %s" +msgstr "正则表达式匹配\"%s\"失败:%s" -#: utils/adt/timestamp.c:3520 utils/adt/timestamp.c:4192 -#: utils/adt/timestamp.c:4233 +#: libpq/hba.c:1856 #, c-format -msgid "timestamp with time zone units \"%s\" not supported" -msgstr "不支持带时区的时间戳单位 \"%s\"" +msgid "" +"regular expression \"%s\" has no subexpressions as requested by " +"backreference in \"%s\"" +msgstr "正则表达式\"%s\"没有在\"%s\"中的后项引用所要求的子表达式." -#: utils/adt/timestamp.c:3537 utils/adt/timestamp.c:4242 +#: libpq/hba.c:1922 #, c-format -msgid "timestamp with time zone units \"%s\" not recognized" -msgstr "带时区的时间戳单位 \"%s\" 不被认可" +msgid "missing entry in file \"%s\" at end of line %d" +msgstr "在 \"%s\" 文件的第 %d 行末尾缺少记录" -#: utils/adt/timestamp.c:3617 utils/adt/timestamp.c:4348 +#: libpq/hba.c:1963 #, c-format -msgid "interval units \"%s\" not supported" -msgstr "不支持 \"%s\" 的 interval 单位" +msgid "provided user name (%s) and authenticated user name (%s) do not match" +msgstr "所提供的用户名(%s)和被认证的用户名(%s) 不匹配" -#: utils/adt/timestamp.c:3633 utils/adt/timestamp.c:4375 +#: libpq/hba.c:1984 #, c-format -msgid "interval units \"%s\" not recognized" -msgstr "interval 单位 \"%s\" 不被认可" +msgid "no match in usermap \"%s\" for user \"%s\" authenticated as \"%s\"" +msgstr "对于以\"%3$s\"身份认证为的用户\"%2$s\",在用户映射\"%1$s\"中没有匹配" -#: utils/adt/timestamp.c:4445 utils/adt/timestamp.c:4618 +#: libpq/hba.c:2008 #, c-format -msgid "could not convert to time zone \"%s\"" -msgstr "无法转换到时间区域\"%s\"" +msgid "could not open usermap file \"%s\": %m" +msgstr "无法打开用户映射文件\"%s\": %m" -#: utils/adt/timestamp.c:4477 utils/adt/timestamp.c:4651 +#: 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 "interval time zone \"%s\" must not specify month" -msgstr "时区 \"%s\" 间隔不可以指定月份" +msgid "invalid large-object descriptor: %d" +msgstr "无效的大对象描述符: %d" -#: utils/adt/trigfuncs.c:41 -msgid "suppress_redundant_updates_trigger: must be called as trigger" -msgstr "suppress_redundant_updates_trigger:必须以触发器的形式调用" +#: 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的权限不够" -#: utils/adt/trigfuncs.c:47 -msgid "suppress_redundant_updates_trigger: must be called on update" -msgstr "suppress_redundant_updates_trigger: 必须在更新操作上调用" +#: libpq/be-fsstubs.c:194 +#, c-format +msgid "large object descriptor %d was not opened for writing" +msgstr "无法打开大对象描述符%d进行写操作" -#: utils/adt/trigfuncs.c:53 -msgid "suppress_redundant_updates_trigger: must be called before update" -msgstr "suppress_redundant_updates_trigger: 必须在更新操作前调用" +#: libpq/be-fsstubs.c:287 catalog/objectaddress.c:828 +#: catalog/pg_largeobject.c:200 +#, c-format +msgid "must be owner of large object %u" +msgstr "必须是大对象%u的属主" -#: utils/adt/trigfuncs.c:59 -msgid "suppress_redundant_updates_trigger: must be called for each row" -msgstr "suppress_redundant_updates_trigger: 必须为每条记录调用" +#: libpq/be-fsstubs.c:392 +msgid "must be superuser to use server-side lo_import()" +msgstr "必须是超级用户才可以使用服务器端的 lo_import()" -#: utils/adt/tsgistidx.c:100 -msgid "gtsvector_in not implemented" -msgstr "没有实现gtsvector_in" +#: libpq/be-fsstubs.c:393 +msgid "Anyone can use the client-side lo_import() provided by libpq." +msgstr "任何人都可以使用 libpq 提供的客户端 lo_import()." -#: utils/adt/tsquery.c:156 utils/adt/tsquery.c:392 -#: utils/adt/tsvector_parser.c:136 +#: libpq/be-fsstubs.c:406 #, c-format -msgid "syntax error in tsquery: \"%s\"" -msgstr "在tsquery中的语法错误:\"%s\"" +msgid "could not open server file \"%s\": %m" +msgstr "无法打开服务器文件 \"%s\": %m" -#: utils/adt/tsquery.c:177 +#: libpq/be-fsstubs.c:428 #, c-format -msgid "no operand in tsquery: \"%s\"" -msgstr "在tsquery中没有操作数:\"%s\"" +msgid "could not read server file \"%s\": %m" +msgstr "无法读取服务器文件 \"%s\": %m" -#: utils/adt/tsquery.c:250 -#, c-format -msgid "value is too big in tsquery: \"%s\"" -msgstr "在tsquery中的值太大了:\"%s\"" +#: libpq/be-fsstubs.c:458 +msgid "must be superuser to use server-side lo_export()" +msgstr "必须是超级用户才可以使用服务器端的 lo_export()" -#: utils/adt/tsquery.c:255 -#, c-format -msgid "operand is too long in tsquery: \"%s\"" -msgstr "在tsquery中操作数太长了: \"%s\"" +#: libpq/be-fsstubs.c:459 +msgid "Anyone can use the client-side lo_export() provided by libpq." +msgstr "任何人都可以使用 libpq 提供的客户端 lo_export()." -#: utils/adt/tsquery.c:283 +#: libpq/be-fsstubs.c:484 #, c-format -msgid "word is too long in tsquery: \"%s\"" -msgstr "在tsquery中的词太长了:\"%s\" " +msgid "could not create server file \"%s\": %m" +msgstr "无法创建服务器文件 \"%s\": %m" -#: utils/adt/tsquery.c:512 +#: libpq/be-fsstubs.c:496 #, c-format -msgid "text-search query doesn't contain lexemes: \"%s\"" -msgstr "文本搜索查询没有包含词汇单位:\"%s\"" +msgid "could not write server file \"%s\": %m" +msgstr "无法写入服务器文件 \"%s\": %m" -#: utils/adt/tsquery_cleanup.c:285 -msgid "" -"text-search query contains only stop words or doesn't contain lexemes, " -"ignored" -msgstr "文本搜索查询只包含结束词或者不包含词汇单位, 被忽略" - -#: 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 "权重数组必须为空或者一维数组" +# fe-misc.c:389 fe-misc.c:423 fe-misc.c:838 +#: storage/file/fd.c:406 +#, c-format +msgid "getrlimit failed: %m" +msgstr "函数getrlimit执行失败: %m" -#: utils/adt/tsrank.c:409 -msgid "array of weight is too short" -msgstr "权重数组太短了." +#: storage/file/fd.c:496 +msgid "insufficient file descriptors available to start server process" +msgstr "启动服务器进程的有效文件描述符不足" -#: utils/adt/tsrank.c:414 -msgid "array of weight must not contain nulls" -msgstr "权重数组不能包含空值" +#: storage/file/fd.c:497 +#, c-format +msgid "System allows %d, we need at least %d." +msgstr "系统允许 %d, 我们至少需要 %d." -#: utils/adt/tsrank.c:423 utils/adt/tsrank.c:749 -msgid "weight out of range" -msgstr "权重 超出范围" +#: 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; 释放再重试" -#: utils/adt/tsvector.c:215 +#: storage/file/fd.c:1091 #, c-format -msgid "word is too long (%ld bytes, max %ld bytes)" -msgstr "词太长了(%ld字节, 最大 %ld 字节)" +msgid "temporary file: path \"%s\", size %lu" +msgstr "临时文件: 路径 \"%s\", 大小%lu" -#: utils/adt/tsvector.c:222 +#: storage/file/fd.c:1625 #, c-format -msgid "string is too long for tsvector (%ld bytes, max %ld bytes)" -msgstr "字符串对于tsvector来说太长了(当前 %ld字节, 最大允许值是%ld字节)" +msgid "could not read directory \"%s\": %m" +msgstr "无法读取目录 \"%s\": %m" -#: utils/adt/tsvector_op.c:1103 -msgid "ts_stat query must return one tsvector column" -msgstr "ts_stat查询必须在tsvector类型列上返回" +#: 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/tsvector_op.c:1283 +#: storage/ipc/shmem.c:365 #, c-format -msgid "tsvector column \"%s\" does not exist" -msgstr "tsvector字段 \"%s\" 不存在" +msgid "could not create ShmemIndex entry for data structure \"%s\"" +msgstr "无法为数据结构\"%s\"创建ShmemIndex项" -#: utils/adt/tsvector_op.c:1289 +#: storage/ipc/shmem.c:380 #, c-format -msgid "column \"%s\" is not of tsvector type" -msgstr "列\"%s\"不属于tsvector类型" +msgid "" +"ShmemIndex entry size is wrong for data structure \"%s\": expected %lu, " +"actual %lu" +msgstr "" +"对于数据结构\"%s\"来说ShmemIndex项的大小错误:所期望的值是%lu,实际的值是%lu" -#: utils/adt/tsvector_op.c:1301 +#: storage/ipc/shmem.c:427 storage/ipc/shmem.c:446 +msgid "requested shared memory size overflows size_t" +msgstr "所要求的共享内存大小超过size_t" + +#: storage/buffer/bufmgr.c:134 storage/buffer/bufmgr.c:239 +msgid "cannot access temporary tables of other sessions" +msgstr "无法访问其它会话的临时表" + +#: storage/buffer/bufmgr.c:375 #, c-format -msgid "configuration column \"%s\" does not exist" -msgstr "配置字段 \"%s\" 不存在" +msgid "unexpected data beyond EOF in block %u of relation %s" +msgstr "关系 \"%2$s\" 的块 %1$u 中的EOF后面出现未期望的数据" + +#: storage/buffer/bufmgr.c:377 +msgid "" +"This has been seen to occur with buggy kernels; consider updating your " +"system." +msgstr "这是由于内核缺陷所致;请考虑更新您的操作系统." -#: utils/adt/tsvector_op.c:1307 +#: storage/buffer/bufmgr.c:449 #, c-format -msgid "column \"%s\" is not of regconfig type" -msgstr "列\"%s\"不属于regconfig类型" +msgid "invalid page header in block %u of relation %s; zeroing out page" +msgstr "关系 \"%2$s\" 中的块 %1$u 无效的页头;正在对页进行清零操作" -#: utils/adt/tsvector_op.c:1314 +#: storage/buffer/bufmgr.c:457 #, c-format -msgid "configuration column \"%s\" must not be null" -msgstr "配置列\"%s\"不能为空" +msgid "invalid page header in block %u of relation %s" +msgstr "关系 \"%2$s\" 中的块 %1$u 无效的页头" -#: utils/adt/tsvector_op.c:1327 +#: storage/buffer/bufmgr.c:2743 #, c-format -msgid "text search configuration name \"%s\" must be schema-qualified" -msgstr "文本搜索配置名称\"%s\"必须是模式限定的。" +msgid "could not write block %u of %s" +msgstr "无法写入%2$s的块%1$u" -#: utils/adt/tsvector_op.c:1352 +#: storage/buffer/bufmgr.c:2745 +msgid "Multiple failures --- write error might be permanent." +msgstr "多次失败 --- 写错误可能是永久性的" + +#: storage/buffer/bufmgr.c:2766 storage/buffer/bufmgr.c:2785 #, c-format -msgid "column \"%s\" is not of a character type" -msgstr "字段 \"%s\"不属于字符类型" +msgid "writing block %u of relation %s" +msgstr "写入关系%2$s的块%1$u" -#: utils/adt/tsvector_parser.c:137 +#: storage/buffer/localbuf.c:190 +msgid "no empty local buffer available" +msgstr "没有可用的本地缓冲区" + +#: storage/large_object/inv_api.c:277 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 #, c-format -msgid "syntax error in tsvector: \"%s\"" -msgstr "在tsvector中的语法错误:\"%s\" " +msgid "large object %u does not exist" +msgstr "大对象 %u 不存在" -#: utils/adt/tsvector_parser.c:202 +#: storage/large_object/inv_api.c:555 storage/large_object/inv_api.c:752 #, c-format -msgid "there is no escaped character: \"%s\"" -msgstr "那里没有转义的字符: \"%s\"" +msgid "large object %u was not opened for writing" +msgstr "大对象%u无法打开来进行写操作" -#: utils/adt/tsvector_parser.c:319 +#: storage/large_object/inv_api.c:562 storage/large_object/inv_api.c:759 #, c-format -msgid "wrong position info in tsvector: \"%s\"" -msgstr "在tsvector中的错误位置信息: \"%s\"" +msgid "large object %u was already dropped" +msgstr "大对象%u已经被删除" -#: utils/adt/uuid.c:128 +#: storage/page/bufpage.c:143 storage/page/bufpage.c:390 +#: storage/page/bufpage.c:623 storage/page/bufpage.c:753 #, c-format -msgid "invalid input syntax for uuid: \"%s\"" -msgstr "uuid的输入语法无效:\"%s\" " +msgid "corrupted page pointers: lower = %u, upper = %u, special = %u" +msgstr "已损坏的页指针:低位=%u, 高位=%u, 特定=%u" -#: utils/adt/varbit.c:54 utils/adt/varchar.c:48 +#: storage/page/bufpage.c:433 #, c-format -msgid "length for type %s must be at least 1" -msgstr "类型 %s 的长度至少为 1" +msgid "corrupted item pointer: %u" +msgstr "已损坏的成员指针: %u" -#: utils/adt/varbit.c:59 utils/adt/varchar.c:52 +#: storage/page/bufpage.c:444 storage/page/bufpage.c:805 #, c-format -msgid "length for type %s cannot exceed %d" -msgstr "类型 %s 的长度不能超过 %d" +msgid "corrupted item lengths: total %u, available space %u" +msgstr "已损坏的成员长度: 总长度%u,可有效使用的空间%u" -#: utils/adt/varbit.c:162 utils/adt/varbit.c:302 utils/adt/varbit.c:358 +#: storage/page/bufpage.c:642 storage/page/bufpage.c:778 #, c-format -msgid "bit string length %d does not match type bit(%d)" -msgstr "bit字符串的长度(%d)与bit类型(%d)不匹配." +msgid "corrupted item pointer: offset = %u, size = %u" +msgstr "已损坏的成员指针: 偏移量 = %u, 大小 = %u" -#: utils/adt/varbit.c:184 utils/adt/varbit.c:482 +#: storage/smgr/md.c:393 storage/smgr/md.c:863 #, c-format -msgid "\"%c\" is not a valid binary digit" -msgstr "\"%c\" 不是一个有效的二进制数" +msgid "could not truncate file \"%s\": %m" +msgstr "无法截断文件 \"%s\": %m" -#: utils/adt/varbit.c:209 utils/adt/varbit.c:507 +#: storage/smgr/md.c:460 #, c-format -msgid "\"%c\" is not a valid hexadecimal digit" -msgstr "\"%c\" 不是一个有效的十六进制数" +msgid "cannot extend file \"%s\" beyond %u blocks" +msgstr "扩展文件\"%s\"的大小不能超过%u个数据块" -#: utils/adt/varbit.c:293 utils/adt/varbit.c:594 -msgid "invalid length in external bit string" -msgstr "无效的外部位串长度" +#: storage/smgr/md.c:482 storage/smgr/md.c:643 storage/smgr/md.c:718 +#, c-format +msgid "could not seek to block %u in file \"%s\": %m" +msgstr "无法在文件\"%2$s\"中查找到数据块%1$u: %3$m" -#: utils/adt/varbit.c:460 utils/adt/varbit.c:603 utils/adt/varbit.c:664 +#: storage/smgr/md.c:490 #, c-format -msgid "bit string too long for type bit varying(%d)" -msgstr "bit字符串对于可变bit类型(%d)来说太长了." +msgid "could not extend file \"%s\": %m" +msgstr "无法扩展文件 \"%s\": %m" -#: utils/adt/varbit.c:991 utils/adt/varbit.c:1093 utils/adt/varlena.c:729 -#: utils/adt/varlena.c:793 utils/adt/varlena.c:937 utils/adt/varlena.c:1843 -#: utils/adt/varlena.c:1910 -msgid "negative substring length not allowed" -msgstr "不允许子串长度为负数" +#: storage/smgr/md.c:492 storage/smgr/md.c:499 storage/smgr/md.c:745 +msgid "Check free disk space." +msgstr "检查空闲磁盘控件." -#: utils/adt/varbit.c:1149 -msgid "cannot AND bit strings of different sizes" -msgstr "无法为不同大小的字符串进行与 (AND) 位运算" +#: storage/smgr/md.c:496 +#, 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" -#: utils/adt/varbit.c:1190 -msgid "cannot OR bit strings of different sizes" -msgstr "无法为不同大小的字符串进行或 (OR) 位运算" +#: storage/smgr/md.c:661 +#, c-format +msgid "could not read block %u in file \"%s\": %m" +msgstr "无法在文件\"%2$s\"中读取块%1$u: %3$m" -#: utils/adt/varbit.c:1236 -msgid "cannot XOR bit strings of different sizes" -msgstr "无法为不同大小的字符串进行异或 (XOR) 位运算" +#: storage/smgr/md.c:677 +#, 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" -#: utils/adt/varbit.c:1710 utils/adt/varbit.c:1768 +#: storage/smgr/md.c:736 #, c-format -msgid "bit index %d out of valid range (0..%d)" -msgstr "比特索引 %d 超出有效范围 (0..%d)" +msgid "could not write block %u in file \"%s\": %m" +msgstr "无法在文件 \"%2$s\"中写入块%1$u: %3$m" -#: utils/adt/varbit.c:1719 utils/adt/varlena.c:2110 -msgid "new bit must be 0 or 1" -msgstr "新的位必须为 0 或 1" +#: storage/smgr/md.c:741 +#, 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" -#: utils/adt/varchar.c:152 utils/adt/varchar.c:305 +#: storage/smgr/md.c:839 #, c-format -msgid "value too long for type character(%d)" -msgstr "对于字符类型来说这个值太长了(%d)" +msgid "could not truncate file \"%s\" to %u blocks: it's only %u blocks now" +msgstr "无法将文件\"%s\"截断到%u个数据块;它现在只有%u个数据块" -#: utils/adt/varchar.c:473 utils/adt/varchar.c:594 +#: storage/smgr/md.c:888 #, c-format -msgid "value too long for type character varying(%d)" -msgstr "对于可变字符类型来说,值太长了(%d)" +msgid "could not truncate file \"%s\" to %u blocks: %m" +msgstr "无法将文件\"%s\"截断到%u个数据块: %m" -#: utils/adt/varlena.c:1333 utils/adt/varlena.c:1346 +#: storage/smgr/md.c:1141 #, c-format -msgid "could not convert string to UTF-16: error %lu" -msgstr "无法将字符串转换为UTF-16编码:错误 %lu" +msgid "could not fsync file \"%s\" but retrying: %m" +msgstr "无法对文件\"%s\"进行fsync操作但是正在重新尝试: %m" -#: utils/adt/varlena.c:1356 +#: storage/smgr/md.c:1286 +msgid "could not forward fsync request because request queue is full" +msgstr "请求队列已满,无法转发fsync请求" + +#: storage/smgr/md.c:1661 #, c-format -msgid "could not compare Unicode strings: %m" -msgstr "无法比较Unicode类型字符串: %m" +msgid "could not open file \"%s\" (target block %u): %m" +msgstr "无法打开文件\"%s\"(目标数据块%u): %m" -#: utils/adt/varlena.c:1988 utils/adt/varlena.c:2019 utils/adt/varlena.c:2055 -#: utils/adt/varlena.c:2098 +#: storage/smgr/md.c:1683 #, c-format -msgid "index %d out of valid range, 0..%d" -msgstr "索引 %d 超出有效范围, 0..%d" +msgid "could not seek to end of file \"%s\": %m" +msgstr "无法查找到文件\"%s\"的末端: %m" -#: utils/adt/varlena.c:2890 -msgid "field position must be greater than zero" -msgstr "字段的位置必须大于0" +#: storage/lmgr/predicate.c:665 +msgid "not enough elements in RWConflictPool to record a read/write conflict" +msgstr "RWConflictPool(读写冲突池)没有足够的元素来记录读/写冲突" -#: utils/adt/windowfuncs.c:243 -msgid "argument of ntile must be greater than zero" -msgstr "ntile的参数必须大于零" +#: storage/lmgr/predicate.c:666 storage/lmgr/predicate.c:694 +msgid "" +"You might need to run fewer transactions at a time or increase " +"max_connections." +msgstr "您可能需要每次执行更少的事务,要么增大max_connections值." -#: utils/adt/windowfuncs.c:465 -msgid "argument of nth_value must be greater than zero" -msgstr "nth_value的参数必须大于零" +#: storage/lmgr/predicate.c:693 +msgid "" +"not enough elements in RWConflictPool to record a potential read/write " +"conflict" +msgstr "RWConflictPool(读写冲突池)没有足够的元素来记录可能的读/写冲突" -#: utils/misc/tzparser.c:63 -#, c-format +#: storage/lmgr/predicate.c:898 +msgid "memory for serializable conflict tracking is nearly exhausted" +msgstr "串行化冲突跟踪所需要的内存几乎耗尽" + +#: storage/lmgr/predicate.c:899 msgid "" -"time zone abbreviation \"%s\" is too long (maximum %d characters) in time " -"zone file \"%s\", line %d" -msgstr "在时区文件\"%3$s\"的第%4$d行中时区缩写\"%1$s\"太长了(最大允许%2$d字符)" +"There might be an idle transaction or a forgotten prepared transaction " +"causing this." +msgstr "可能是由于空闲事务或者一个忘了准备的事务导致此问题." -#: utils/misc/tzparser.c:72 +#: storage/lmgr/predicate.c:1181 storage/lmgr/predicate.c:1253 #, 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分钟)的倍数." +"not enough shared memory for elements of data structure \"%s\" (%lu bytes " +"requested)" +msgstr "没有足够的共享内存供数据结构\"%s\"使用 (它需要%lu个字节)" -#: utils/misc/tzparser.c:86 -#, 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超出范围." +#: storage/lmgr/predicate.c:1536 +msgid "deferrable snapshot was unsafe; trying a new one" +msgstr "可延缓的快照不安全;请尝试使用新的快照" -#: utils/misc/tzparser.c:123 -#, c-format -msgid "missing time zone abbreviation in time zone file \"%s\", line %d" -msgstr "在时区文件\"%s\"的第%d行中丢失时区缩写" +#: storage/lmgr/predicate.c:1571 +msgid "\"default_transaction_isolation\" is set to \"serializable\"." +msgstr "\"default_transaction_isolation\"被设置为\"可串行化\"." -#: utils/misc/tzparser.c:134 -#, c-format -msgid "missing time zone offset in time zone file \"%s\", line %d" -msgstr "在时间区域文件\"%s\"的第%d行中,丢失时区偏移量" +#: storage/lmgr/predicate.c:1572 +msgid "" +"You can use \"SET default_transaction_isolation = 'repeatable read'\" to " +"change the default." +msgstr "" +"您可以使用 \"SET default_transaction_isolation = 'repeatable read'\"来改变缺" +"省值." -#: utils/misc/tzparser.c:143 -#, c-format -msgid "invalid number for time zone offset in time zone file \"%s\", line %d" -msgstr "在时区文件\"%s\"的第%d行中,时区偏移量的数量无效" +#: storage/lmgr/predicate.c:2247 storage/lmgr/predicate.c:2262 +#: storage/lmgr/predicate.c:3657 +msgid "You might need to increase max_pred_locks_per_transaction." +msgstr "您可能需要增大参数max_pred_locks_per_transaction的值." + +#: storage/lmgr/predicate.c:3811 storage/lmgr/predicate.c:3900 +#: storage/lmgr/predicate.c:3908 storage/lmgr/predicate.c:3947 +#: storage/lmgr/predicate.c:4186 storage/lmgr/predicate.c:4524 +#: storage/lmgr/predicate.c:4536 storage/lmgr/predicate.c:4578 +#: storage/lmgr/predicate.c:4616 +msgid "" +"could not serialize access due to read/write dependencies among transactions" +msgstr "由于多个事务间的读/写依赖而无法串行访问" + +#: storage/lmgr/predicate.c:3813 storage/lmgr/predicate.c:3902 +#: storage/lmgr/predicate.c:3910 storage/lmgr/predicate.c:3949 +#: storage/lmgr/predicate.c:4188 storage/lmgr/predicate.c:4526 +#: storage/lmgr/predicate.c:4538 storage/lmgr/predicate.c:4580 +#: storage/lmgr/predicate.c:4618 +msgid "The transaction might succeed if retried." +msgstr "该事务如果重试,有可能成功." -#: utils/misc/tzparser.c:168 +#: storage/lmgr/proc.c:1057 #, c-format -msgid "invalid syntax in time zone file \"%s\", line %d" -msgstr "在时间区域文件\"%s\"的第%d行中语法错误" +msgid "Process %d waits for %s on %s." +msgstr "进程%1$d等待在%3$s上的%2$s" -#: utils/misc/tzparser.c:234 +#: storage/lmgr/proc.c:1067 #, c-format -msgid "time zone abbreviation \"%s\" is multiply defined" -msgstr "多次定义时间区缩写\"%s\" " +msgid "sending cancel to blocking autovacuum PID %d" +msgstr "向阻塞的自动清理(autovacuum)进程%d发送取消(cancel)请求" -#: utils/misc/tzparser.c:236 +#: storage/lmgr/proc.c:1113 #, c-format msgid "" -"Entry in time zone file \"%s\", line %d, conflicts with entry in file \"%s" -"\", line %d." -msgstr "在时区文件\"%s\"中第%d行的项, 与在文件\"%s\"第%d行中的项相冲突." +"process %d avoided deadlock for %s on %s by rearranging queue order after " +"%ld.%03d ms" +msgstr "" +"进程%1$d在%4$ld.%5$03d ms通过重新安排序列顺序来避免在%3$s上的%2$s的死锁" -#: utils/misc/tzparser.c:303 +#: storage/lmgr/proc.c:1125 #, c-format -msgid "invalid time zone file name \"%s\"" -msgstr "无效时区文件名称 \"%s\"" +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同时监测到死锁" -#: utils/misc/tzparser.c:318 +#: storage/lmgr/proc.c:1131 #, c-format -msgid "time zone file recursion limit exceeded in file \"%s\"" -msgstr "在文件\"%s\"中已超过了对时区文件递归限制" +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" -#: utils/misc/tzparser.c:361 utils/misc/tzparser.c:376 +#: storage/lmgr/proc.c:1135 #, c-format -msgid "could not read time zone file \"%s\": %m" -msgstr "无法读取时间区域文件 \"%s\": %m" +msgid "process %d acquired %s on %s after %ld.%03d ms" +msgstr "进程%1$d在%4$ld.%5$03d ms后获取在%3$s上的%2$s" -#: utils/misc/tzparser.c:388 +#: storage/lmgr/proc.c:1151 #, c-format -msgid "line is too long in time zone file \"%s\", line %d" -msgstr "在时间区域文件\"%s\"的第%d行中文本太长了." +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失败" -#: utils/misc/tzparser.c:413 +#: storage/lmgr/lock.c:609 #, c-format -msgid "@INCLUDE without file name in time zone file \"%s\", line %d" -msgstr "在时间区域文件\"%s\"中的第%d行中,@INCLUDE没有带文件名 " +msgid "" +"cannot acquire lock mode %s on database objects while recovery is in progress" +msgstr "在恢复操作的过程中不能在数据库对象上获取锁模式%s" -#: utils/misc/guc.c:476 -msgid "Ungrouped" -msgstr "取消组" +#: storage/lmgr/lock.c:611 +msgid "" +"Only RowExclusiveLock or less can be acquired on database objects during " +"recovery." +msgstr "在恢复操作期间只有在数据对象上获取RowExclusiveLock或者更低级别的锁。" -#: utils/misc/guc.c:478 -msgid "File Locations" -msgstr "文件位置" +#: storage/lmgr/lock.c:724 storage/lmgr/lock.c:793 storage/lmgr/lock.c:2691 +#: storage/lmgr/lock.c:2756 +msgid "You might need to increase max_locks_per_transaction." +msgstr "您可能需要增加参数max_locks_per_transaction." -#: utils/misc/guc.c:480 -msgid "Connections and Authentication" -msgstr "联接和认证" +#: storage/lmgr/lock.c:2116 storage/lmgr/lock.c:2210 +msgid "" +"cannot PREPARE while holding both session-level and transaction-level locks " +"on the same object" +msgstr "在一个对象上同时拥有会话级和事务级锁时,无法执行PREPARE" -#: utils/misc/guc.c:482 -msgid "Connections and Authentication / Connection Settings" -msgstr "联接和认证 / 联接设置" +#: storage/lmgr/lock.c:2302 +msgid "Not enough memory for reassigning the prepared transaction's locks." +msgstr "没有足够的内存用于为已准备好事务分配锁" -#: utils/misc/guc.c:484 -msgid "Connections and Authentication / Security and Authentication" -msgstr "联接和认证 / 安全和认证" +#: storage/lmgr/deadlock.c:923 +#, c-format +msgid "Process %d waits for %s on %s; blocked by process %d." +msgstr "进程%1$d等待在%3$s上的%2$s; 由进程%4$d阻塞." -#: utils/misc/guc.c:486 -msgid "Resource Usage" -msgstr "资源使用" +#: storage/lmgr/deadlock.c:942 +#, c-format +msgid "Process %d: %s" +msgstr "进程 %d: %s" -#: utils/misc/guc.c:488 -msgid "Resource Usage / Memory" -msgstr "资源使用 / 内存" +#: storage/lmgr/deadlock.c:949 +msgid "deadlock detected" +msgstr "检测到死锁" -#: utils/misc/guc.c:490 -msgid "Resource Usage / Kernel Resources" -msgstr "资源使用 / 内核资源" +#: storage/lmgr/deadlock.c:952 +msgid "See server log for query details." +msgstr "详细信息请查看服务器日志." -#: utils/misc/guc.c:492 -msgid "Resource Usage / Cost-Based Vacuum Delay" -msgstr "资源使用 / 基于开销的Vacuum延迟" +#: storage/lmgr/lmgr.c:756 +#, c-format +msgid "relation %u of database %u" +msgstr "数据库%2$u的关系%1$u" -#: utils/misc/guc.c:494 -msgid "Resource Usage / Background Writer" -msgstr "资源使用 / 后台写入进程" +#: storage/lmgr/lmgr.c:762 +#, c-format +msgid "extension of relation %u of database %u" +msgstr "数据库%2$u的关系%1$u的扩展" -#: utils/misc/guc.c:496 -msgid "Resource Usage / Asynchronous Behavior" -msgstr "资源使用 / 异步系统行为" +#: storage/lmgr/lmgr.c:768 +#, c-format +msgid "page %u of relation %u of database %u" +msgstr "数据库%3$u的关系%2$u的页%1$u" -#: utils/misc/guc.c:498 -msgid "Write-Ahead Log" -msgstr "Write-Ahead 日志" +#: storage/lmgr/lmgr.c:775 +#, c-format +msgid "tuple (%u,%u) of relation %u of database %u" +msgstr "数据库%4$u的关系%3$u中的元组(%1$u,%2$u)" -#: utils/misc/guc.c:500 -msgid "Write-Ahead Log / Settings" -msgstr "Write-Ahead 日志 / 设置" +#: storage/lmgr/lmgr.c:783 +#, c-format +msgid "transaction %u" +msgstr "事务 %u" -#: utils/misc/guc.c:502 -msgid "Write-Ahead Log / Checkpoints" -msgstr "Write-Ahead 日志 / Checkpoints" +# sql_help.h:101 +# sql_help.h:413 +#: storage/lmgr/lmgr.c:788 +#, c-format +msgid "virtual transaction %d/%u" +msgstr "虚拟事务 %d/%u" -#: utils/misc/guc.c:504 -msgid "Write-Ahead Log / Archiving" -msgstr "Write-Ahead 日志 / 归档" +#: storage/lmgr/lmgr.c:794 +#, c-format +msgid "object %u of class %u of database %u" +msgstr "数据库%3$u的类%2$u的对象%1$u" -#: utils/misc/guc.c:506 -msgid "Write-Ahead Log / Streaming Replication" -msgstr "Write-Ahead 日志 / 流复制" +#: storage/lmgr/lmgr.c:802 +#, c-format +msgid "user lock [%u,%u,%u]" +msgstr "用户锁[%u,%u,%u]" -#: utils/misc/guc.c:508 -msgid "Write-Ahead Log / Standby Servers" -msgstr "Write-Ahead 日志 / 备用服务器" +#: storage/lmgr/lmgr.c:809 +#, c-format +msgid "advisory lock [%u,%u,%u,%u]" +msgstr "建议锁 [%u,%u,%u,%u]" -#: utils/misc/guc.c:510 -msgid "Query Tuning" -msgstr "查询调整" +#: storage/lmgr/lmgr.c:817 +#, c-format +msgid "unrecognized locktag type %d" +msgstr "未知的locktag 类型 %d" -#: utils/misc/guc.c:512 -msgid "Query Tuning / Planner Method Configuration" -msgstr "查询调整 / 规划器方法配置" +#: rewrite/rewriteRemove.c:62 rewrite/rewriteSupport.c:117 +#: rewrite/rewriteDefine.c:700 rewrite/rewriteDefine.c:762 +#, c-format +msgid "rule \"%s\" for relation \"%s\" does not exist" +msgstr "关系 \"%2$s\" 的 \"%1$s\" 规则不存在" -#: utils/misc/guc.c:514 -msgid "Query Tuning / Planner Cost Constants" -msgstr "查询调整 / Planner Cost Constants" +#: rewrite/rewriteRemove.c:66 +#, c-format +msgid "rule \"%s\" for relation \"%s\" does not exist, skipping" +msgstr "关系 \"%2$s\"的规则\"%1$s\"不存在,跳过" -#: utils/misc/guc.c:516 -msgid "Query Tuning / Genetic Query Optimizer" -msgstr "查询调整 / 基因查询优化" +#: rewrite/rewriteManip.c:1012 +msgid "conditional utility statements are not implemented" +msgstr "条件工具语句没有实现" -#: utils/misc/guc.c:518 -msgid "Query Tuning / Other Planner Options" -msgstr "查询调整 / 其它规划器选项" +#: rewrite/rewriteManip.c:1024 rewrite/rewriteHandler.c:442 +#: parser/parse_utilcmd.c:2144 parser/parse_utilcmd.c:2243 +msgid "conditional UNION/INTERSECT/EXCEPT statements are not implemented" +msgstr "条件工具语句 UNION/INTERSECT/EXCEPT 没有实现" -#: utils/misc/guc.c:520 -msgid "Reporting and Logging" -msgstr "报告和日志" +#: rewrite/rewriteManip.c:1177 +msgid "WHERE CURRENT OF on a view is not implemented" +msgstr "未实现在视图上的WHERE CURRENT OF操作" -#: utils/misc/guc.c:522 -msgid "Reporting and Logging / Where to Log" -msgstr "报告和日志 / 日志位置" +#: rewrite/rewriteSupport.c:156 +#, c-format +msgid "rule \"%s\" does not exist" +msgstr "规则 \"%s\" 不存在" -#: utils/misc/guc.c:524 -msgid "Reporting and Logging / When to Log" -msgstr "报告和日志 / 日志时间" +#: rewrite/rewriteSupport.c:165 +#, c-format +msgid "there are multiple rules named \"%s\"" +msgstr "有多条规则的名字是 \"%s\"" -#: utils/misc/guc.c:526 -msgid "Reporting and Logging / What to Log" -msgstr "报告和日志 / 日志内容" +#: rewrite/rewriteSupport.c:166 +msgid "Specify a relation name as well as a rule name." +msgstr "指定一个关系名称, 和规则名称一样." -#: utils/misc/guc.c:528 -msgid "Statistics" -msgstr "统计信息" +#: rewrite/rewriteHandler.c:485 +#, c-format +msgid "" +"WITH query name \"%s\" appears in both a rule action and the query being " +"rewritten" +msgstr "WITH 查询名 \"%s\" 看起来好像在某规则行为和查询重写里同时出现" -#: utils/misc/guc.c:530 -msgid "Statistics / Monitoring" -msgstr "统计信息 / 监控" +#: rewrite/rewriteHandler.c:543 +msgid "cannot have RETURNING lists in multiple rules" +msgstr "无法在多个规则中拥有RETURNING列表" -#: utils/misc/guc.c:532 -msgid "Statistics / Query and Index Statistics Collector" -msgstr "统计信息 / 查询和索引统计收集器" +#: rewrite/rewriteHandler.c:874 rewrite/rewriteHandler.c:892 +#, c-format +msgid "multiple assignments to same column \"%s\"" +msgstr "对同一列\"%s\"进行了多次分配" -#: utils/misc/guc.c:534 -msgid "Autovacuum" -msgstr "Autovacuum" +#: rewrite/rewriteHandler.c:1030 catalog/heap.c:2441 +#, c-format +msgid "column \"%s\" is of type %s but default expression is of type %s" +msgstr "字段 \"%s\" 类型是 %s, 但默认表达式类型是 %s" -#: utils/misc/guc.c:536 -msgid "Client Connection Defaults" -msgstr "客户端联接默认" +#: rewrite/rewriteHandler.c:1627 rewrite/rewriteHandler.c:2022 +#, c-format +msgid "infinite recursion detected in rules for relation \"%s\"" +msgstr "在关系 \"%s\" 的规则中发现无限循环" -#: utils/misc/guc.c:538 -msgid "Client Connection Defaults / Statement Behavior" -msgstr "客户端联接默认 / 语句动作" +#: rewrite/rewriteHandler.c:1883 +msgid "" +"DO INSTEAD NOTHING rules are not supported for data-modifying statements in " +"WITH" +msgstr "DO INSTEAD NOTHING规则不支持在WITH子句中执行数据修改操作" -#: utils/misc/guc.c:540 -msgid "Client Connection Defaults / Locale and Formatting" -msgstr "客户端联接默认 / 本地化和格式化" +#: rewrite/rewriteHandler.c:1897 +msgid "" +"conditional DO INSTEAD rules are not supported for data-modifying statements " +"in WITH" +msgstr "DO INSTEAD 条件规则不支持在WITH子句中执行数据修改操作" -#: utils/misc/guc.c:542 -msgid "Client Connection Defaults / Other Defaults" -msgstr "客户端联接默认 / 其它默认" +#: rewrite/rewriteHandler.c:1901 +msgid "DO ALSO rules are not supported for data-modifying statements in WITH" +msgstr "DO ALSO 规则不支持在WITH子句中执行数据修改操作" -#: utils/misc/guc.c:544 -msgid "Lock Management" -msgstr "锁管理" +#: rewrite/rewriteHandler.c:1906 +msgid "" +"multi-statement DO INSTEAD rules are not supported for data-modifying " +"statements in WITH" +msgstr "多语句 DO INSTEAD 规则不支持在WITH子句中执行数据修改操作" -#: utils/misc/guc.c:546 -msgid "Version and Platform Compatibility" -msgstr "版本和平台兼容性" +#: rewrite/rewriteHandler.c:2060 +#, c-format +msgid "cannot perform INSERT RETURNING on relation \"%s\"" +msgstr "无法在关系\"%s\"上执行INSERT RETURNING " -#: utils/misc/guc.c:548 -msgid "Version and Platform Compatibility / Previous PostgreSQL Versions" -msgstr "版本和平台兼容性 / 上一个 PostgreSQL 版本" +#: rewrite/rewriteHandler.c:2062 +msgid "" +"You need an unconditional ON INSERT DO INSTEAD rule with a RETURNING clause." +msgstr "您需要一个无条件, 且带有RETURNING子句的ON INSERT DO INSTEAD的规则." -#: utils/misc/guc.c:550 -msgid "Version and Platform Compatibility / Other Platforms and Clients" -msgstr "版本和平台兼容性 / 其它平台和客户端" +#: rewrite/rewriteHandler.c:2067 +#, c-format +msgid "cannot perform UPDATE RETURNING on relation \"%s\"" +msgstr "无法在关系\"%s\"执行UPDATE RETURNING" -#: utils/misc/guc.c:552 -msgid "Preset Options" -msgstr "预置选项" +#: rewrite/rewriteHandler.c:2069 +msgid "" +"You need an unconditional ON UPDATE DO INSTEAD rule with a RETURNING clause." +msgstr "您需要一个无条件的 ON UPDATE DO INSTEAD 规则." -#: utils/misc/guc.c:554 -msgid "Customized Options" -msgstr "定制选项" +#: rewrite/rewriteHandler.c:2074 +#, c-format +msgid "cannot perform DELETE RETURNING on relation \"%s\"" +msgstr "无法在关系 \"%s\"上执行DELETE RETURNING" -#: utils/misc/guc.c:556 -msgid "Developer Options" -msgstr "开发人员选项" +#: rewrite/rewriteHandler.c:2076 +msgid "" +"You need an unconditional ON DELETE DO INSTEAD rule with a RETURNING clause." +msgstr "您需要一个无条件, 且带有RETURNING子句的ON DELETE DO INSTEAD 规则." -#: utils/misc/guc.c:610 -msgid "Enables the planner's use of sequential-scan plans." -msgstr "启用查询计划器的顺序扫描计划." +#: rewrite/rewriteHandler.c:2140 +msgid "" +"WITH cannot be used in a query that is rewritten by rules into multiple " +"queries" +msgstr "WITH 不能用于按规则可重写为多个查询的查询语句中" -#: utils/misc/guc.c:618 -msgid "Enables the planner's use of index-scan plans." -msgstr "启用查询计划器的索引扫描计划." +#: rewrite/rewriteDefine.c:109 rewrite/rewriteDefine.c:769 +#, c-format +msgid "rule \"%s\" for relation \"%s\" already exists" +msgstr "关系 \"%2$s\" 的规则 \"%1$s\" 已经存在" -#: utils/misc/guc.c:626 -msgid "Enables the planner's use of bitmap-scan plans." -msgstr "启用查询计划器的位图扫描计划." +#: rewrite/rewriteDefine.c:287 +msgid "rule actions on OLD are not implemented" +msgstr "在 OLD 上的规则动作没有实现" -#: utils/misc/guc.c:634 -msgid "Enables the planner's use of TID scan plans." -msgstr "启用查询计划器的TID扫描计划." +#: rewrite/rewriteDefine.c:288 +msgid "Use views or triggers instead." +msgstr "请使用视图或触发器代替." -#: utils/misc/guc.c:642 -msgid "Enables the planner's use of explicit sort steps." -msgstr "启用查询计划器的显式排序步骤." +#: rewrite/rewriteDefine.c:292 +msgid "rule actions on NEW are not implemented" +msgstr "在 NEW 上的规则动作没有实现" -#: utils/misc/guc.c:650 -msgid "Enables the planner's use of hashed aggregation plans." -msgstr "启用查询计划器的哈希聚合计划." +#: rewrite/rewriteDefine.c:293 +msgid "Use triggers instead." +msgstr "请使用触发器代替." -#: utils/misc/guc.c:658 -msgid "Enables the planner's use of materialization." -msgstr "启用查询计划器的实体化使用." +#: rewrite/rewriteDefine.c:306 +msgid "INSTEAD NOTHING rules on SELECT are not implemented" +msgstr "在 SELECT 上的 INSTEAD NOTHING 规则没有实现" -#: utils/misc/guc.c:666 -msgid "Enables the planner's use of nested-loop join plans." -msgstr "启用查询计划器的嵌套循环连接计划." +#: rewrite/rewriteDefine.c:307 +msgid "Use views instead." +msgstr "请使用视图代替." -#: utils/misc/guc.c:674 -msgid "Enables the planner's use of merge join plans." -msgstr "启用查询计划器的合并连接计划." +#: rewrite/rewriteDefine.c:315 +msgid "multiple actions for rules on SELECT are not implemented" +msgstr "在 SELECT 上的多动作规则没有实现" -#: utils/misc/guc.c:682 -msgid "Enables the planner's use of hash join plans." -msgstr "启用查询计划器的哈希连接计划." +#: rewrite/rewriteDefine.c:327 +msgid "rules on SELECT must have action INSTEAD SELECT" +msgstr "在 SELECT 上的规则必须有 INSTEAD SELECT 动作" -#: utils/misc/guc.c:690 -msgid "Enables genetic query optimization." -msgstr "启用基因查询优化." +#: rewrite/rewriteDefine.c:335 +msgid "rules on SELECT must not contain data-modifying statements in WITH" +msgstr "SELECT上的规则: 不能在WITH子句中包含数据修改操作" -#: utils/misc/guc.c:691 -msgid "This algorithm attempts to do planning without exhaustive searching." -msgstr "算法企图执行不带有无穷搜索的计划." +#: rewrite/rewriteDefine.c:343 +msgid "event qualifications are not implemented for rules on SELECT" +msgstr "在 SELECT 上规则的事件条件没有实现" -#: utils/misc/guc.c:700 -msgid "Shows whether the current user is a superuser." -msgstr "显示当前用户是否是超级用户." +#: rewrite/rewriteDefine.c:368 +#, c-format +msgid "\"%s\" is already a view" +msgstr "\"%s\" 已经是一个视图了" -#: utils/misc/guc.c:709 -msgid "Enables advertising the server via Bonjour." -msgstr "启用通过Bonjour的方式来宣布数据库服务器在网络中的存在." +#: rewrite/rewriteDefine.c:392 +#, c-format +msgid "view rule for \"%s\" must be named \"%s\"" +msgstr "用于 \"%s\" 的视图规则必须命名为 \"%s\"" -#: utils/misc/guc.c:717 -msgid "Enables SSL connections." -msgstr "启用 SSL 联接." +#: rewrite/rewriteDefine.c:417 +#, c-format +msgid "could not convert table \"%s\" to a view because it is not empty" +msgstr "无法把表 \"%s\" 转化为视图, 因为它不是空的" -#: utils/misc/guc.c:725 -msgid "Forces synchronization of updates to disk." -msgstr "强制和磁盘同步更新" +#: rewrite/rewriteDefine.c:424 +#, c-format +msgid "could not convert table \"%s\" to a view because it has triggers" +msgstr "无法把表 \"%s\" 转换为视图, 因为它有触发器" -#: utils/misc/guc.c:726 +#: rewrite/rewriteDefine.c:426 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:736 -msgid "Sets immediate fsync at commit." -msgstr "设置在提交时立即执行函数fsync" +"In particular, the table cannot be involved in any foreign key relationships." +msgstr "特别是在任何外键关系中不能涉及表" -#: utils/misc/guc.c:744 -msgid "Continues processing past damaged page headers." -msgstr "继续处理已损坏的页头." +#: rewrite/rewriteDefine.c:431 +#, c-format +msgid "could not convert table \"%s\" to a view because it has indexes" +msgstr "无法把表 \"%s\" 转换为视图, 因为它有索引" -#: utils/misc/guc.c:745 -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报告一个错误, 并中止当前事务.将参数" -"zero_damaged_pages设置为true可以使系统只报告一个警告信息,不输出已损坏的页," -"并且能够继续处理当前事务.这种情况将使毁坏数据,因为这样通常会使所有的记录在已" -"损坏的页上存放." +#: rewrite/rewriteDefine.c:437 +#, c-format +msgid "could not convert table \"%s\" to a view because it has child tables" +msgstr "无法把表 \"%s\" 转换为视图, 因为它有子表" -#: utils/misc/guc.c:757 -msgid "Writes full pages to WAL when first modified after a checkpoint." -msgstr "在检查点事件发生后发生第一次修改数据时,把所有的页写到WAL文件中" +#: rewrite/rewriteDefine.c:464 +msgid "cannot have multiple RETURNING lists in a rule" +msgstr "在一个规则中不能有多个RETURNING列表" -#: utils/misc/guc.c:758 -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发生检查点事件后进行第一次修改" -"操作时这个选项可以写入页。这样将允许进行完全恢复." +#: rewrite/rewriteDefine.c:469 +msgid "RETURNING lists are not supported in conditional rules" +msgstr "在条件规则中不支持RETURNING列表" -#: utils/misc/guc.c:769 -msgid "Runs the server silently." -msgstr "以安静模式 (silently) 运行服务器." +#: rewrite/rewriteDefine.c:473 +msgid "RETURNING lists are not supported in non-INSTEAD rules" +msgstr "在非INSTEAD规则中不支持RETURNING列表" -#: utils/misc/guc.c:770 -msgid "" -"If this parameter is set, the server will automatically run in the " -"background and any controlling terminals are dissociated." -msgstr "如果此参数设置了, 服务器将自动运行在后台, 与任何控制终端脱离." +#: rewrite/rewriteDefine.c:552 +msgid "SELECT rule's target list has too many entries" +msgstr "SELECT 规则的目标列表的记录太多" -#: utils/misc/guc.c:778 -msgid "Logs each checkpoint." -msgstr "记录每一个检查点事件" +#: rewrite/rewriteDefine.c:553 +msgid "RETURNING list has too many entries" +msgstr "RETURNING列表中的项太多." -#: utils/misc/guc.c:786 -msgid "Logs each successful connection." -msgstr "记录每一个成功的联接." +#: rewrite/rewriteDefine.c:569 +msgid "cannot convert relation containing dropped columns to view" +msgstr "无法转换包含已删除字段的关系为视图" -#: utils/misc/guc.c:794 -msgid "Logs end of a session, including duration." -msgstr "对会话的结束时间和整个会话的持续时间进行日志记录" +#: rewrite/rewriteDefine.c:574 +#, c-format +msgid "SELECT rule's target entry %d has different column name from \"%s\"" +msgstr "SELECT 规则的目标记录 %d 的字段名和 \"%s\" 不同" -#: utils/misc/guc.c:802 -msgid "Turns on various assertion checks." -msgstr "打开各种判断检查." +#: rewrite/rewriteDefine.c:580 +#, c-format +msgid "SELECT rule's target entry %d has different type from column \"%s\"" +msgstr "SELECT 规则的目标记录 %d 和字段 \"%s\" 的类型不同" -#: utils/misc/guc.c:803 -msgid "This is a debugging aid." -msgstr "这是一个出错帮助." +#: rewrite/rewriteDefine.c:582 +#, c-format +msgid "RETURNING list's entry %d has different type from column \"%s\"" +msgstr "RETURNING列表中的第%d项与列\"%s\"的类型不同" -#: utils/misc/guc.c:817 utils/misc/guc.c:899 utils/misc/guc.c:958 -#: utils/misc/guc.c:967 utils/misc/guc.c:976 utils/misc/guc.c:985 -#: utils/misc/guc.c:1587 utils/misc/guc.c:1596 -msgid "No description available." -msgstr "没有可用的描述" +#: rewrite/rewriteDefine.c:597 +#, c-format +msgid "SELECT rule's target entry %d has different size from column \"%s\"" +msgstr "SELECT 规则的目标记录 %d 与字段 \"%s\" 的大小不同" -#: utils/misc/guc.c:826 -msgid "Logs the duration of each completed SQL statement." -msgstr "记录每一条完成了的 SQL 语句过程." +#: rewrite/rewriteDefine.c:599 +#, c-format +msgid "RETURNING list's entry %d has different size from column \"%s\"" +msgstr "在RETURNING列表中的第%d项的大小与列 \"%s\"不同" -#: utils/misc/guc.c:834 -msgid "Logs each query's parse tree." -msgstr "对每个查询的分析树进行日志记录" +#: rewrite/rewriteDefine.c:607 +msgid "SELECT rule's target list has too few entries" +msgstr "SELECT 规则的目标列表记录数太少" -#: utils/misc/guc.c:842 -msgid "Logs each query's rewritten parse tree." -msgstr "对每个查询的重写分析树进行日志记录" +#: rewrite/rewriteDefine.c:608 +msgid "RETURNING list has too few entries" +msgstr "RETURNING 列表后面的项太少" -#: utils/misc/guc.c:850 -msgid "Logs each query's execution plan." -msgstr "记录每一个查询的执行计划" +#: catalog/pg_aggregate.c:100 +msgid "cannot determine transition data type" +msgstr "无法确定转换数据类型" -#: utils/misc/guc.c:858 -msgid "Indents parse and plan tree displays." -msgstr "显示缩进的解析和计划树" +#: catalog/pg_aggregate.c:101 +msgid "" +"An aggregate using a polymorphic transition type must have at least one " +"polymorphic argument." +msgstr "使用多态转换类型的聚合函数必须至少有一个多态的参数" -#: utils/misc/guc.c:866 -msgid "Writes parser performance statistics to the server log." -msgstr "把分析器性能统计信息写入到服务器日志中." +#: catalog/pg_aggregate.c:124 +#, c-format +msgid "return type of transition function %s is not %s" +msgstr "转换函数的返回类型 %s 不是 %s" -#: utils/misc/guc.c:874 -msgid "Writes planner performance statistics to the server log." -msgstr "把规划器性能统计信息写入到服务器日志中." +#: 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 "当转换函数是受限制的并且转换类型与输入类型不兼容时,不能忽略初始化值" -#: utils/misc/guc.c:882 -msgid "Writes executor performance statistics to the server log." -msgstr "把执行器 (executor) 性能统计信息写入到服务器日志中." +#: catalog/pg_aggregate.c:175 catalog/pg_proc.c:205 +msgid "cannot determine result data type" +msgstr "无法确定结构数据类型" -#: utils/misc/guc.c:890 -msgid "Writes cumulative performance statistics to the server log." -msgstr "把 cumulative 性能统计信息写入到服务器日志中." +#: catalog/pg_aggregate.c:176 +msgid "" +"An aggregate returning a polymorphic type must have at least one polymorphic " +"argument." +msgstr "使用多态类型的聚合函数必须至少有一个多态的参数" -#: utils/misc/guc.c:910 -msgid "Collects information about executing commands." -msgstr "收集执行命令的统计信息." +#: catalog/pg_aggregate.c:188 catalog/pg_proc.c:211 +msgid "unsafe use of pseudo-type \"internal\"" +msgstr "使用伪类型\"internal\"的方式不安全" -#: utils/misc/guc.c:911 +#: catalog/pg_aggregate.c:189 catalog/pg_proc.c:212 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 "在每个会话当前正在执行的命令上启用信息收集, 并带有命令开始执行的时间." +"A function returning \"internal\" must have at least one \"internal\" " +"argument." +msgstr "返回\"internal\"类型结果的函数必须至少有一个\"internal\" 类型的参数" -#: utils/misc/guc.c:920 -msgid "Collects statistics on database activity." -msgstr "在数据库上正在执行的事务上收集统计信息." +#: catalog/pg_aggregate.c:197 +msgid "sort operator can only be specified for single-argument aggregates" +msgstr "只能为单一参数的聚合函数而定义排序操作符." -#: utils/misc/guc.c:929 -msgid "Updates the process title to show the active SQL command." -msgstr "更新进程标题来显示处于活动状态的SQL命令" +#: catalog/pg_aggregate.c:337 +#, c-format +msgid "function %s returns a set" +msgstr "函数 %s 返回一个组合" -#: utils/misc/guc.c:930 -msgid "" -"Enables updating of the process title every time a new SQL command is " -"received by the server." -msgstr "每一次服务器开始运行新的SQL命令时启用进程标题的更新." +#: catalog/pg_aggregate.c:362 +#, c-format +msgid "function %s requires run-time type coercion" +msgstr "函数 %s 需要运行时类型强制" -#: utils/misc/guc.c:938 -msgid "Starts the autovacuum subprocess." -msgstr "启动autovacuum子进程." +#: catalog/pg_collation.c:75 +#, c-format +msgid "collation \"%s\" for encoding \"%s\" already exists" +msgstr "编码 \"%2$s\" 的排序规则 \"%1$s\" 已经存在" -#: utils/misc/guc.c:947 -msgid "Generates debugging output for LISTEN and NOTIFY." -msgstr "为 LISTEN 和 NOTIFY 生成出错信息." +#: catalog/pg_collation.c:89 +#, c-format +msgid "collation \"%s\" already exists" +msgstr "排序规则 \"%s\" 已经存在" -#: utils/misc/guc.c:996 -msgid "Logs long lock waits." -msgstr "对长时间的锁等待记日志" +#: catalog/index.c:206 parser/parse_utilcmd.c:1352 parser/parse_utilcmd.c:1438 +#, c-format +msgid "multiple primary keys for table \"%s\" are not allowed" +msgstr "对表 \"%s\" 指定多个主键是不允许的" -#: utils/misc/guc.c:1005 -msgid "Logs the host name in the connection logs." -msgstr "在联接日志中记录主机名." +#: catalog/index.c:224 +msgid "primary keys cannot be expressions" +msgstr "主键不能是表达式" -#: utils/misc/guc.c:1006 -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地址.如果想要显示主机名,那么" -"必须把它打开,但是这取决于主机名解析的设置,这在性能上不会有影响." +#: catalog/index.c:734 catalog/index.c:1132 +msgid "user-defined indexes on system catalog tables are not supported" +msgstr "在系统表上用户定义的索引是不被支持的" -#: utils/misc/guc.c:1016 -msgid "Causes subtables to be included by default in various commands." -msgstr "使子表在不同的命令中被缺省包含" +#: catalog/index.c:744 +msgid "concurrent index creation on system catalog tables is not supported" +msgstr "不支持在系统目录表上同时创建索引" -#: utils/misc/guc.c:1024 -msgid "Encrypt passwords." -msgstr "加密口令." +#: catalog/index.c:762 +msgid "shared indexes cannot be created after initdb" +msgstr "在 initdb 之后, 不能创建共享索引" -#: utils/misc/guc.c:1025 -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, 此参数确定口令是否加密." +#: catalog/index.c:1745 +#, c-format +msgid "building index \"%s\" on table \"%s\"" +msgstr "为表 \"%2$s\" 建立索引\"%1$s\"" -#: utils/misc/guc.c:1034 -msgid "Treats \"expr=NULL\" as \"expr IS NULL\"." -msgstr "\"expr=NULL\" 看作为 \"expr IS NULL\"." +#: catalog/index.c:2886 +msgid "cannot reindex temporary tables of other sessions" +msgstr "不能重新创建其他会话的临时表上的索引" + +#: catalog/pg_conversion.c:67 +#, c-format +msgid "conversion \"%s\" already exists" +msgstr "编码转换 \"%s\" 已经存在" + +#: catalog/pg_conversion.c:80 +#, c-format +msgid "default conversion for %s to %s already exists" +msgstr "默认的 %s 到 %s 的转换已经存在" + +#: catalog/toasting.c:144 +msgid "shared tables cannot be toasted after initdb" +msgstr "在 initdb 之后, 不可以 toasted 共享表" + +#: 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个" -#: utils/misc/guc.c:1035 +#: catalog/pg_proc.c:206 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 NUL而进" -"行处理, 那就是说,如果expr计算为空值那么会返回true,否则返回为false。表达式" -"expr = NULL的正确行为应该是永远返回为空(未知)" +"A function returning a polymorphic type must have at least one polymorphic " +"argument." +msgstr "返回一个多态类型的函数必须至少有一个多态参数" + +#: catalog/pg_proc.c:224 +#, c-format +msgid "\"%s\" is already an attribute of type %s" +msgstr "\"%s\" 已经是类型 %s 的一个属性" + +#: catalog/pg_proc.c:363 +#, c-format +msgid "function \"%s\" already exists with same argument types" +msgstr "带相同参数类型的函数 \"%s\" 已经存在" + +#: catalog/pg_proc.c:377 catalog/pg_proc.c:399 +msgid "cannot change return type of existing function" +msgstr "不能改变已经存在的函数的返回值类型" + +#: 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模式参数定义的记录类型不同" + +#: catalog/pg_proc.c:441 +#, c-format +msgid "cannot change name of input parameter \"%s\"" +msgstr "无法改变输入参数\"%s\"的名称" + +#: catalog/pg_proc.c:465 +msgid "cannot remove parameter defaults from existing function" +msgstr "不能从已存在的函数种删除参数缺正值" + +#: catalog/pg_proc.c:491 +msgid "cannot change data type of existing parameter default value" +msgstr "不能改变已经存在参数缺省值的数据类型" + +#: catalog/pg_proc.c:503 +#, c-format +msgid "function \"%s\" is an aggregate function" +msgstr "函数\"%s\" 是一个聚合函数" + +#: catalog/pg_proc.c:508 +#, c-format +msgid "function \"%s\" is not an aggregate function" +msgstr "函数 \"%s\" 不是一个聚合函数" + +#: catalog/pg_proc.c:516 +#, c-format +msgid "function \"%s\" is a window function" +msgstr "函数\"%s\"是一个窗口函数" + +#: catalog/pg_proc.c:521 +#, c-format +msgid "function \"%s\" is not a window function" +msgstr "函数 \"%s\" 不是一个窗口函数" + +#: catalog/pg_proc.c:698 +#, c-format +msgid "there is no built-in function named \"%s\"" +msgstr "没有名为 \"%s\" 的内建函数" + +#: catalog/pg_proc.c:790 +#, c-format +msgid "SQL functions cannot return type %s" +msgstr "SQL 函数无法返回 %s 类型" + +#: catalog/pg_proc.c:805 +#, c-format +msgid "SQL functions cannot have arguments of type %s" +msgstr "SQL 函数不能有 %s 类型的参数" + +#: catalog/catalog.c:76 +msgid "invalid fork name" +msgstr "无效分支名称" + +#: catalog/catalog.c:77 +msgid "Valid fork names are \"main\", \"fsm\", and \"vm\"." +msgstr "有效的分支名称是 \"main\", \"fsm\", 和 \"vm\"." + +#: catalog/pg_shdepend.c:566 catalog/dependency.c:757 +#, c-format +msgid "cannot drop %s because it is required by the database system" +msgstr "无法删除 %s, 因为它是数据库系统所需要的" + +#: catalog/pg_shdepend.c:677 catalog/dependency.c:923 +#, 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" +"%d个其它对象(相关列表参见服务器日志)" + +#: catalog/pg_shdepend.c:684 +#, 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" +"对象在 %d 个其它数据库中" + +#: catalog/pg_shdepend.c:996 +#, c-format +msgid "role %u was concurrently dropped" +msgstr "角色%u被同时删除" + +#: catalog/pg_shdepend.c:1015 +#, c-format +msgid "tablespace %u was concurrently dropped" +msgstr "表空间 %u 被同时删除" + +#: catalog/pg_shdepend.c:1030 +#, c-format +msgid "database %u was concurrently dropped" +msgstr "数据库 %u 被同时删除" + +#: catalog/pg_shdepend.c:1074 +#, c-format +msgid "owner of %s" +msgstr "%s的属主" + +#: catalog/pg_shdepend.c:1076 +#, c-format +msgid "privileges for %s" +msgstr "%s的权限" + +#. translator: %s will always be "database %s" +#: catalog/pg_shdepend.c:1084 +#, c-format +msgid "%d object in %s" +msgid_plural "%d objects in %s" +msgstr[0] "在%2$s中的%1$d个对象" + +#: catalog/pg_shdepend.c:1195 +#, c-format +msgid "" +"cannot drop objects owned by %s because they are required by the database " +"system" +msgstr "无法删除由%s所拥有的对象, 因为数据库系统需要这些对象" + +#: catalog/pg_shdepend.c:1298 +#, c-format +msgid "" +"cannot reassign ownership of objects owned by %s because they are required " +"by the database system" +msgstr "无法再分配由%s所拥有的对象, 因为数据库系统需要这些对象" + +#: catalog/pg_constraint.c:783 +#, c-format +msgid "table \"%s\" has multiple constraints named \"%s\"" +msgstr "表 \"%s\" 有多个名为 \"%s\" 的约束" + +#: catalog/pg_constraint.c:795 +#, c-format +msgid "constraint \"%s\" for table \"%s\" does not exist" +msgstr "表 \"%2$s\" 的 \"%1$s\" 约束不存在" + +#: 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的passed-by-value 类型是无效的" + +#: catalog/pg_type.c:289 +#, c-format +msgid "internal size %d is invalid for passed-by-value type" +msgstr "internal 大小 %d 对于 passed-by-value 类型是无效的" + +#: 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:312 +msgid "fixed-size types must have storage PLAIN" +msgstr "固定大小类型必需有明确的存储" + +#: catalog/pg_type.c:764 +#, c-format +msgid "could not form array type name for type \"%s\"" +msgstr "无法为类型\"%s\"来形成数组类型名称" + +#: catalog/aclchk.c:200 +msgid "grant options can only be granted to roles" +msgstr "grant 选项只能用于个体用户上" + +#: catalog/aclchk.c:316 +#, c-format +msgid "no privileges were granted for column \"%s\" of relation \"%s\"" +msgstr "没有为关系\"%2$s\"的列\"%1$s\"授予相应的权限" + +#: catalog/aclchk.c:321 +#, c-format +msgid "no privileges were granted for \"%s\"" +msgstr "没有为\"%s\"授予权限" + +#: catalog/aclchk.c:329 +#, c-format +msgid "not all privileges were granted for column \"%s\" of relation \"%s\"" +msgstr "没有为关系\"%2$s\"的列\"%1$s\"授予所有权限" + +#: catalog/aclchk.c:334 +#, c-format +msgid "not all privileges were granted for \"%s\"" +msgstr "没有为\"%s\"授予所有的权限" + +#: catalog/aclchk.c:345 +#, c-format +msgid "no privileges could be revoked for column \"%s\" of relation \"%s\"" +msgstr "不能从关系\"%2$s\"的列\"%1$s\"上撤销权限" + +#: catalog/aclchk.c:350 +#, c-format +msgid "no privileges could be revoked for \"%s\"" +msgstr "不能为\"%s\"撤销权限" + +#: catalog/aclchk.c:358 +#, c-format +msgid "" +"not all privileges could be revoked for column \"%s\" of relation \"%s\"" +msgstr "不能从关系\"%2$s\"的列\"%1$s\"上撤销所有权限" + +#: catalog/aclchk.c:363 +#, c-format +msgid "not all privileges could be revoked for \"%s\"" +msgstr "不能为\"%s\"撤销所有权限" + +#: catalog/aclchk.c:442 catalog/aclchk.c:891 +#, c-format +msgid "invalid privilege type %s for relation" +msgstr "关系的权限类型%s无效" + +#: catalog/aclchk.c:446 catalog/aclchk.c:895 +#, c-format +msgid "invalid privilege type %s for sequence" +msgstr "序列的权限类型 %s 无效" + +#: catalog/aclchk.c:450 +#, c-format +msgid "invalid privilege type %s for database" +msgstr "无效的数据库权限类型 %s" + +#: catalog/aclchk.c:454 catalog/aclchk.c:899 +#, c-format +msgid "invalid privilege type %s for function" +msgstr "无效的函数权限类型 %s" + +#: catalog/aclchk.c:458 +#, c-format +msgid "invalid privilege type %s for language" +msgstr "无效的语言权限类型 %s" + +#: catalog/aclchk.c:462 +#, c-format +msgid "invalid privilege type %s for large object" +msgstr "用于大对象的无效权限类型%s" + +#: catalog/aclchk.c:466 +#, c-format +msgid "invalid privilege type %s for schema" +msgstr "无效的模式权限类型 %s" + +#: catalog/aclchk.c:470 +#, c-format +msgid "invalid privilege type %s for tablespace" +msgstr "无效的表空间权限类型 %s" + +#: catalog/aclchk.c:474 +#, c-format +msgid "invalid privilege type %s for foreign-data wrapper" +msgstr "外部数据封装器的权限类型 %s 无效" + +#: 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/aclchk.c:932 +msgid "default privileges cannot be set for columns" +msgstr "无法为列设置缺省权限" + +#: catalog/aclchk.c:1731 +#, c-format +msgid "sequence \"%s\" only supports USAGE, SELECT, and UPDATE privileges" +msgstr "序列\"%s\"只支持权限USAGE, SELECT 和UPDATE" + +#: catalog/aclchk.c:1748 +msgid "invalid privilege type USAGE for table" +msgstr "表的权限类型 USAGE 无效" + +#: 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: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:3068 +#, c-format +msgid "permission denied for column %s" +msgstr "访问列 %s 的权限不够" + +#: catalog/aclchk.c:3070 +#, c-format +msgid "permission denied for relation %s" +msgstr "对关系 %s 权限不够" + +#: catalog/aclchk.c:3074 +#, c-format +msgid "permission denied for database %s" +msgstr "对数据库 %s 权限不够" + +#: catalog/aclchk.c:3076 +#, c-format +msgid "permission denied for function %s" +msgstr "对函数 %s 权限不够" + +#: catalog/aclchk.c:3078 +#, c-format +msgid "permission denied for operator %s" +msgstr "对操作符 %s 权限不够" + +#: catalog/aclchk.c:3080 +#, c-format +msgid "permission denied for type %s" +msgstr "对类型 %s 权限不够" + +#: catalog/aclchk.c:3082 +#, c-format +msgid "permission denied for language %s" +msgstr "对语言 %s 权限不够" + +#: catalog/aclchk.c:3084 +#, c-format +msgid "permission denied for large object %s" +msgstr "在大对象%s上的权限不够" + +#: catalog/aclchk.c:3086 +#, c-format +msgid "permission denied for schema %s" +msgstr "对模式 %s 权限不够" + +#: catalog/aclchk.c:3088 +#, c-format +msgid "permission denied for operator class %s" +msgstr "对操作符表 %s 权限不够" + +#: catalog/aclchk.c:3090 +#, c-format +msgid "permission denied for operator family %s" +msgstr "对于操作符表%s的权限不够" + +#: catalog/aclchk.c:3092 +#, c-format +msgid "permission denied for collation %s" +msgstr "对排序规则 %s 权限不够" + +#: catalog/aclchk.c:3094 +#, c-format +msgid "permission denied for conversion %s" +msgstr "对编码转换 %s 权限不够" + +#: catalog/aclchk.c:3096 +#, c-format +msgid "permission denied for tablespace %s" +msgstr "对表空间 %s 权限不够" + +#: catalog/aclchk.c:3098 +#, c-format +msgid "permission denied for text search dictionary %s" +msgstr "访问文本搜索字典%s的权限不够" + +#: catalog/aclchk.c:3100 +#, c-format +msgid "permission denied for text search configuration %s" +msgstr "访问文本搜索配置%s的权限不足" + +#: catalog/aclchk.c:3102 +#, c-format +msgid "permission denied for foreign-data wrapper %s" +msgstr "访问外部数据封装器 %s 的权限不足" + +#: catalog/aclchk.c:3104 +#, c-format +msgid "permission denied for foreign server %s" +msgstr "访问外部服务器%s的权限不足" + +#: catalog/aclchk.c:3106 +#, c-format +msgid "permission denied for extension %s" +msgstr "对扩展 %s 权限不够" + +#: catalog/aclchk.c:3112 catalog/aclchk.c:3114 +#, c-format +msgid "must be owner of relation %s" +msgstr "必须是关系 %s 的属主" + +#: catalog/aclchk.c:3116 +#, c-format +msgid "must be owner of sequence %s" +msgstr "必须是序列 %s 的属主" + +#: catalog/aclchk.c:3118 +#, c-format +msgid "must be owner of database %s" +msgstr "必须是数据库 %s 的属主" + +#: catalog/aclchk.c:3120 +#, c-format +msgid "must be owner of function %s" +msgstr "必须是函数 %s 的属主" + +#: catalog/aclchk.c:3122 +#, c-format +msgid "must be owner of operator %s" +msgstr "必须是操作符 %s 的属主" + +#: catalog/aclchk.c:3124 +#, c-format +msgid "must be owner of type %s" +msgstr "必须是类型 %s 的属主" + +#: catalog/aclchk.c:3126 +#, c-format +msgid "must be owner of language %s" +msgstr "必须是语言 %s 的属主" + +#: catalog/aclchk.c:3128 +#, c-format +msgid "must be owner of large object %s" +msgstr "必须是大对象%s的属主" + +#: catalog/aclchk.c:3130 +#, c-format +msgid "must be owner of schema %s" +msgstr "必须是模式 %s 的属主" + +#: catalog/aclchk.c:3132 +#, c-format +msgid "must be owner of operator class %s" +msgstr "必须是操作符表 %s 的属主" + +#: catalog/aclchk.c:3134 +#, c-format +msgid "must be owner of operator family %s" +msgstr "必须是操作符集合 %s 的属主" + +#: catalog/aclchk.c:3136 +#, c-format +msgid "must be owner of collation %s" +msgstr "必须是排序规则 %s 的属主" + +#: catalog/aclchk.c:3138 +#, c-format +msgid "must be owner of conversion %s" +msgstr "必须是编码转换 %s 的属主" + +#: catalog/aclchk.c:3140 +#, c-format +msgid "must be owner of tablespace %s" +msgstr "必须是表空间 %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:3146 +#, c-format +msgid "must be owner of foreign-data wrapper %s" +msgstr "必须是外部数据封装器 %s 的属主" + +#: catalog/aclchk.c:3148 +#, c-format +msgid "must be owner of foreign server %s" +msgstr "必须是外部服务器 %s 的属主" + +#: catalog/aclchk.c:3150 +#, c-format +msgid "must be owner of extension %s" +msgstr "必须是扩展 %s 的属主" + +#: catalog/aclchk.c:3192 +#, c-format +msgid "permission denied for column \"%s\" of relation \"%s\"" +msgstr "访问关系\"%2$s\"的列\"%1$s\"的权限不够" + +#: catalog/aclchk.c:3219 +#, c-format +msgid "role with OID %u does not exist" +msgstr "OID为%u的角色不存在" + +#: catalog/aclchk.c:3312 catalog/aclchk.c:3320 +#, c-format +msgid "attribute %d of relation with OID %u does not exist" +msgstr "带有OID为%2$u的关系的属性%1$d不存在" + +#: catalog/aclchk.c:3393 catalog/aclchk.c:4219 +#, c-format +msgid "relation with OID %u does not exist" +msgstr "OID 为 %u 的关系不存在" + +#: catalog/aclchk.c:3601 catalog/aclchk.c:4323 +#, c-format +msgid "language with OID %u does not exist" +msgstr "OID 为 %u 的语言不存在" + +#: catalog/aclchk.c:3762 catalog/aclchk.c:4395 +#, c-format +msgid "schema with OID %u does not exist" +msgstr "OID 为 %u 的模式不存在" + +#: catalog/aclchk.c:3816 catalog/aclchk.c:4422 +#, c-format +msgid "tablespace with OID %u does not exist" +msgstr "OID 为 %u 的表空间不存在" + +#: catalog/aclchk.c:4245 +#, c-format +msgid "type with OID %u does not exist" +msgstr "OID 为 %u 的类型不存在" + +#: catalog/aclchk.c:4271 +#, c-format +msgid "operator with OID %u does not exist" +msgstr "OID 为 %u 的操作符不存在" + +#: catalog/aclchk.c:4448 +#, c-format +msgid "operator class with OID %u does not exist" +msgstr "OID 为 %u 的操作符表不存在" + +#: catalog/aclchk.c:4475 +#, c-format +msgid "operator family with OID %u does not exist" +msgstr "OID 为 %u 的操作符表不存在" + +#: catalog/aclchk.c:4502 +#, c-format +msgid "text search dictionary with OID %u does not exist" +msgstr "带有OID为%u的文本搜索字典不存在" + +#: catalog/aclchk.c:4529 +#, c-format +msgid "text search configuration with OID %u does not exist" +msgstr "带有OID为%u的文本搜索配置不存在" + +#: catalog/aclchk.c:4636 +#, c-format +msgid "collation with OID %u does not exist" +msgstr "OID 为 %u 的排序规则不存在" + +#: catalog/aclchk.c:4662 +#, c-format +msgid "conversion with OID %u does not exist" +msgstr "OID 为 %u 的编码转换不存在" + +#: catalog/aclchk.c:4703 +#, c-format +msgid "extension with OID %u does not exist" +msgstr "OID 为 %u 的扩展不存在" + +#: catalog/namespace.c:260 +msgid "temporary tables cannot specify a schema name" +msgstr "临时表不能指定模式名称" + +#: catalog/namespace.c:358 catalog/namespace.c:2589 +msgid "no schema has been selected to create in" +msgstr "创建中没有选择模式" + +#: catalog/namespace.c:410 catalog/namespace.c:423 +msgid "cannot create relations in temporary schemas of other sessions" +msgstr "不能在其他会话的临时方案上创建关系" + +#: catalog/namespace.c:414 +msgid "cannot create temporary relation in non-temporary schema" +msgstr "不能在非临时方案上创建临时关系" + +#: catalog/namespace.c:429 +msgid "only temporary relations may be created in temporary schemas" +msgstr "临时方案里只能创建临时关系" + +#: catalog/namespace.c:2389 parser/parse_expr.c:777 parser/parse_target.c:1085 +#, c-format +msgid "cross-database references are not implemented: %s" +msgstr "未实现跨数据库关联: %s" + +#: catalog/namespace.c:2395 gram.y:11611 gram.y:12811 parser/parse_expr.c:784 +#: parser/parse_target.c:1092 +#, c-format +msgid "improper qualified name (too many dotted names): %s" +msgstr "不合适的条件名称 (名字中太多的点符号): %s" + +#: catalog/namespace.c:2523 +#, c-format +msgid "%s is already in schema \"%s\"" +msgstr "在模式\"%2$s\"中已存在 %1$s了" + +#: catalog/namespace.c:2531 +msgid "cannot move objects into or out of temporary schemas" +msgstr "无法将对象移入或移出临时模式" + +#: catalog/namespace.c:2537 +msgid "cannot move objects into or out of TOAST schema" +msgstr "无法将对象移入或移出TOAST模式" + +#: catalog/namespace.c:2641 +#, c-format +msgid "improper relation name (too many dotted names): %s" +msgstr "不合适的关系名称 (名字中太多的点符号): %s" + +#: catalog/namespace.c:3040 +#, c-format +msgid "collation \"%s\" for encoding \"%s\" does not exist" +msgstr "编码 \"%2$s\" 中的排序规则 \"%1$s\" 不存在" + +#: catalog/namespace.c:3092 +#, c-format +msgid "conversion \"%s\" does not exist" +msgstr "编码转换 \"%s\" 不存在" + +#: catalog/namespace.c:3297 +#, c-format +msgid "permission denied to create temporary tables in database \"%s\"" +msgstr "不允许在数据库 \"%s\" 中创建临时表" + +#: catalog/namespace.c:3313 +msgid "cannot create temporary tables during recovery" +msgstr "不能在恢复过程中创建临时表" + +#: catalog/objectaddress.c:286 +msgid "database 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:301 +msgid "language name cannot be qualified" +msgstr "不能限定language名称" + +#: catalog/objectaddress.c:304 +msgid "foreign-data wrapper name cannot be qualified" +msgstr "foreign-data包装器名无法限定" + +#: catalog/objectaddress.c:307 +msgid "server name cannot be qualified" +msgstr "无法限定服务器名" + +#: catalog/objectaddress.c:532 +msgid "column name must be qualified" +msgstr "不能限定列名称" + +#: catalog/objectaddress.c:874 catalog/objectaddress.c:890 +msgid "must be superuser" +msgstr "必须是超级用户" + +#: catalog/objectaddress.c:881 +msgid "must have CREATEROLE privilege" +msgstr "必须拥有CREATEROLE权限." + +#: catalog/dependency.c:593 +#, c-format +msgid "cannot drop %s because %s requires it" +msgstr "无法删除 %s, 因为 %s 需要它" + +#: catalog/dependency.c:596 +#, c-format +msgid "You can drop %s instead." +msgstr "您也可以删除 %s 代替." + +#: catalog/dependency.c:873 +#, c-format +msgid "drop auto-cascades to %s" +msgstr "自动递归删除 %s" + +#: catalog/dependency.c:885 catalog/dependency.c:894 +#, c-format +msgid "%s depends on %s" +msgstr "%s 倚赖于 %s" + +#: catalog/dependency.c:906 catalog/dependency.c:915 +#, c-format +msgid "drop cascades to %s" +msgstr "递归删除 %s" + +#: catalog/dependency.c:935 +#, c-format +msgid "cannot drop %s because other objects depend on it" +msgstr "无法删除 %s 因为有其它对象倚赖它" + +#: catalog/dependency.c:939 catalog/dependency.c:946 +msgid "Use DROP ... CASCADE to drop the dependent objects too." +msgstr "使用 DROP .. CASCADE 把倚赖对象一并删除." + +#: catalog/dependency.c:943 +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:952 +#, c-format +msgid "drop cascades to %d other object" +msgid_plural "drop cascades to %d other objects" +msgstr[0] "串联删除%d个其它对象" + +#: catalog/dependency.c:2223 +#, c-format +msgid " column %s" +msgstr " 字段 %s" + +#: catalog/dependency.c:2229 +#, c-format +msgid "function %s" +msgstr "函数 %s" + +#: catalog/dependency.c:2234 +#, c-format +msgid "type %s" +msgstr "类型 %s" + +#: catalog/dependency.c:2264 +#, c-format +msgid "cast from %s to %s" +msgstr "%s 转换为 %s" + +#: catalog/dependency.c:2284 +#, c-format +msgid "collation %s" +msgstr "排序规则 %s" + +#: catalog/dependency.c:2308 +#, c-format +msgid "constraint %s on %s" +msgstr "在%2$s上的约束%1$s " + +#: catalog/dependency.c:2314 +#, c-format +msgid "constraint %s" +msgstr "约束 %s" + +#: catalog/dependency.c:2331 +#, c-format +msgid "conversion %s" +msgstr "编码转换 %s" + +#: catalog/dependency.c:2368 +#, c-format +msgid "default for %s" +msgstr "%s的缺省" + +#: catalog/dependency.c:2385 +#, c-format +msgid "language %s" +msgstr "语言 %s" + +#: catalog/dependency.c:2391 +#, c-format +msgid "large object %u" +msgstr "大对象 %u " + +#: catalog/dependency.c:2396 +#, c-format +msgid "operator %s" +msgstr "操作符 %s" + +#: catalog/dependency.c:2428 +#, 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:2478 +#, 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:2528 +#, c-format +msgid "function %d (%s, %s) of %s: %s" +msgstr "%4$s: %5$s 的函数%1$d (%2$s, %3$s)" + +#: catalog/dependency.c:2568 +#, c-format +msgid "rule %s on " +msgstr "规则 %s 在 " + +#: catalog/dependency.c:2603 +#, c-format +msgid "trigger %s on " +msgstr "触发器 %s 在 " + +#: catalog/dependency.c:2620 +#, c-format +msgid "schema %s" +msgstr "模式 %s" + +#: catalog/dependency.c:2633 +#, c-format +msgid "text search parser %s" +msgstr "文本搜寻解析器 %s" + +# sql_help.h:301 +#: catalog/dependency.c:2648 +#, c-format +msgid "text search dictionary %s" +msgstr "文本搜寻字典 %s" + +# describe.c:1753 +#: catalog/dependency.c:2663 +#, c-format +msgid "text search template %s" +msgstr "文本搜寻模版 %s" + +#: catalog/dependency.c:2678 +#, c-format +msgid "text search configuration %s" +msgstr "文本搜寻配置 %s" + +#: catalog/dependency.c:2686 +#, c-format +msgid "role %s" +msgstr "角色 %s" + +#: catalog/dependency.c:2699 +#, c-format +msgid "database %s" +msgstr "数据库 %s" + +# describe.c:1342 +#: catalog/dependency.c:2711 +#, c-format +msgid "tablespace %s" +msgstr "表空间 %s" + +#: catalog/dependency.c:2720 +#, c-format +msgid "foreign-data wrapper %s" +msgstr "外部数据封装器 %s" + +#: catalog/dependency.c:2729 +#, c-format +msgid "server %s" +msgstr "服务器 %s" + +#: catalog/dependency.c:2754 +#, c-format +msgid "user mapping for %s" +msgstr "用于 %s 的用户映射" + +#: catalog/dependency.c:2788 +#, c-format +msgid "default privileges on new relations belonging to role %s" +msgstr "在新的关系上的缺省权限属于角色%s" + +#: catalog/dependency.c:2793 +#, c-format +msgid "default privileges on new sequences belonging to role %s" +msgstr "在新的序列上的缺省权限属于角色%s" + +#: catalog/dependency.c:2798 +#, c-format +msgid "default privileges on new functions belonging to role %s" +msgstr "在新的函数上的缺省权限属于角色%s" + +#: catalog/dependency.c:2804 +#, c-format +msgid "default privileges belonging to role %s" +msgstr "缺省权限属于角色%s" + +#: catalog/dependency.c:2812 +#, c-format +msgid " in schema %s" +msgstr "在模式%s中" + +#: catalog/dependency.c:2829 +#, c-format +msgid "extension %s" +msgstr "扩展 %s" + +#: catalog/dependency.c:2887 +#, c-format +msgid "table %s" +msgstr "表 %s" + +#: catalog/dependency.c:2891 +#, c-format +msgid "index %s" +msgstr "索引 %s" + +#: catalog/dependency.c:2895 +#, c-format +msgid "sequence %s" +msgstr "序列 %s" + +#: catalog/dependency.c:2899 +#, c-format +msgid "uncataloged table %s" +msgstr "未归类的表 %s" + +#: catalog/dependency.c:2903 +#, c-format +msgid "toast table %s" +msgstr "toast 表 %s" + +#: catalog/dependency.c:2907 +#, c-format +msgid "view %s" +msgstr "视图 %s" + +#: catalog/dependency.c:2911 +#, c-format +msgid "composite type %s" +msgstr "复合类型 %s" + +#: catalog/dependency.c:2915 +#, c-format +msgid "foreign table %s" +msgstr "外部表 %s" + +#: catalog/dependency.c:2920 +#, c-format +msgid "relation %s" +msgstr "关系 %s" + +#: catalog/dependency.c:2957 +#, c-format +msgid "operator family %s for access method %s" +msgstr "访问方法 %2$s 的操作符类 %1$s" + +#: catalog/pg_operator.c:221 catalog/pg_operator.c:363 +#, c-format +msgid "\"%s\" is not a valid operator name" +msgstr "\"%s\" 不是一个有效的操作符名称" + +#: catalog/pg_operator.c:372 +msgid "only binary operators can have commutators" +msgstr "只有二进制操作符能有交换 (commutators)" + +#: catalog/pg_operator.c:376 +msgid "only binary operators can have join selectivity" +msgstr "只有二进制操作符能有可选择性联合" + +#: catalog/pg_operator.c:380 +msgid "only binary operators can merge join" +msgstr "只有二进制操作符可以合并联合" + +#: 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 "只有布尔类型操作符可以进行合并联合操作" + +#: catalog/pg_operator.c:411 +msgid "only boolean operators can hash" +msgstr "只有布尔操作符可以进行散列操作" + +#: catalog/pg_operator.c:423 +#, c-format +msgid "operator %s already exists" +msgstr "操作符 %s 已经存在" + +#: catalog/pg_operator.c:616 +msgid "operator cannot be its own negator or sort operator" +msgstr "操作符不能否定自己或者排序分类操作符" + +#: catalog/pg_enum.c:113 catalog/pg_enum.c:199 +#, c-format +msgid "invalid enum label \"%s\"" +msgstr "无效的枚举类型标签 \"%s\"" + +#: catalog/pg_enum.c:114 catalog/pg_enum.c:200 +#, c-format +msgid "Labels must be %d characters or less." +msgstr "标签必需为 %d 个字符或更少" + +#: catalog/pg_enum.c:264 +#, c-format +msgid "\"%s\" is not an existing enum label" +msgstr "枚举标签\"%s\" 不存在" + +#: catalog/pg_enum.c:325 +msgid "ALTER TYPE ADD BEFORE/AFTER is incompatible with binary upgrade" +msgstr "ALTER TYPE ADD BEFORE/AFTER与二进制升级不兼容" + +#: catalog/heap.c:264 +#, c-format +msgid "permission denied to create \"%s.%s\"" +msgstr "创建 \"%s.%s\" 权限不够" + +#: catalog/heap.c:266 +msgid "System catalog modifications are currently disallowed." +msgstr "系统表修改是不被同时允许的" + +#: catalog/heap.c:406 +#, c-format +msgid "column name \"%s\" conflicts with a system column name" +msgstr "字段名 \"%s\" 与系统字段名冲突" + +#: catalog/heap.c:422 +#, c-format +msgid "column name \"%s\" specified more than once" +msgstr "字段名称\"%s\" 被定义多次" + +#: catalog/heap.c:472 +#, c-format +msgid "column \"%s\" has type \"unknown\"" +msgstr "字段 \"%s\" 类型为 \"未知\"" + +#: catalog/heap.c:473 +msgid "Proceeding with relation creation anyway." +msgstr "继续关系的创建." + +#: catalog/heap.c:486 +#, c-format +msgid "column \"%s\" has pseudo-type %s" +msgstr "字段 \"%s\" 有伪类型 %s" + +#: catalog/heap.c:516 +#, c-format +msgid "composite type %s cannot be made a member of itself" +msgstr "混合类型 %s 的成员不能为自身" + +#: catalog/heap.c:558 +#, c-format +msgid "no collation was derived for column \"%s\" with collatable type %s" +msgstr "没有来自列 \"%s\"的排序规则带有可排序类型 %s" + +#: catalog/heap.c:1030 +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:2150 +#, c-format +msgid "check constraint \"%s\" already exists" +msgstr "检查约束 \"%s\" 已经存在" + +#: catalog/heap.c:2300 +#, c-format +msgid "merging constraint \"%s\" with inherited definition" +msgstr "正在合并带有已继承定义的约束\"%s\" " + +#: catalog/heap.c:2398 +msgid "cannot use column references in default expression" +msgstr "在默认的表达式中不能使用字段关联" + +#: catalog/heap.c:2406 +msgid "default expression must not return a set" +msgstr "默认表达式不能返回一个组合" + +#: catalog/heap.c:2414 +msgid "cannot use subquery in default expression" +msgstr "在默认的表达式中不能使用子查询" + +#: catalog/heap.c:2418 +msgid "cannot use aggregate function in default expression" +msgstr "在默认的表达式中不能使用聚合函数" + +#: catalog/heap.c:2422 +msgid "cannot use window function in default expression" +msgstr "在缺省表达式中不能使用窗口函数" + +#: catalog/heap.c:2492 +#, c-format +msgid "only table \"%s\" can be referenced in check constraint" +msgstr "在检查约束中只有表 \"%s\" 能被关联的" + +#: catalog/heap.c:2748 +msgid "unsupported ON COMMIT and foreign key combination" +msgstr "不支持ON COMMIT和外键一同使用" + +#: catalog/heap.c:2749 +#, 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:2754 +msgid "cannot truncate a table referenced in a foreign key constraint" +msgstr "在一个外键约束中无法删除 (truncate) 一个表的关联" + +#: catalog/heap.c:2755 +#, c-format +msgid "Table \"%s\" references \"%s\"." +msgstr "表\"%s\" 引用\"%s\"." + +#: catalog/heap.c:2757 +#, c-format +msgid "Truncate table \"%s\" at the same time, or use TRUNCATE ... CASCADE." +msgstr "同时截断表\"%s\" ,或者使用TRUNCATE ... CASCADE." + +#: catalog/pg_depend.c:323 +#, c-format +msgid "cannot remove dependency on %s because it is a system object" +msgstr "无法删除在%s上的依赖关系,因为它是一个系统对象" + +#: main/main.c:237 +#, c-format +msgid "%s: setsysinfo failed: %s\n" +msgstr "%s: setsysinfo 失败: %s\n" + +#: main/main.c:259 +#, c-format +msgid "%s: WSAStartup failed: %d\n" +msgstr "%s: WSAStartup 失败: %d\n" + +#: main/main.c:278 +#, c-format +msgid "" +"%s is the PostgreSQL server.\n" +"\n" +msgstr "" +"%s 是 PostgreSQL 服务器.\n" +"\n" + +#: main/main.c:279 +#, c-format +msgid "" +"Usage:\n" +" %s [OPTION]...\n" +"\n" +msgstr "" +"用法:\n" +" %s [选项]...\n" +"\n" + +#: main/main.c:280 +#, c-format +msgid "Options:\n" +msgstr "选项:\n" + +#: main/main.c:282 +#, c-format +msgid " -A 1|0 enable/disable run-time assert checking\n" +msgstr " -A 1|0 打开/关闭运行时断言检查\n" + +#: main/main.c:284 +#, c-format +msgid " -B NBUFFERS number of shared buffers\n" +msgstr " -B NBUFFERS 共享缓冲区的数量\n" + +#: main/main.c:285 +#, c-format +msgid " -c NAME=VALUE set run-time parameter\n" +msgstr " -c 名字=数值 设置运行时参数\n" + +#: main/main.c:286 +#, c-format +msgid " -d 1-5 debugging level\n" +msgstr " -d 1-5 调试级别\n" + +#: main/main.c:287 +#, c-format +msgid " -D DATADIR database directory\n" +msgstr " -D 数据目录 数据库目录\n" + +#: main/main.c:288 +#, c-format +msgid " -e use European date input format (DMY)\n" +msgstr " -e 使用欧洲日期输入格式 (DMY)\n" + +#: main/main.c:289 +#, c-format +msgid " -F turn fsync off\n" +msgstr " -F 关闭 fsync\n" + +#: main/main.c:290 +#, c-format +msgid " -h HOSTNAME host name or IP address to listen on\n" +msgstr " -h 主机名 侦听的主机名或者 IP 地址\n" + +#: main/main.c:291 +#, c-format +msgid " -i enable TCP/IP connections\n" +msgstr " -i 打开 TCP/IP 联接\n" + +#: main/main.c:292 +#, c-format +msgid " -k DIRECTORY Unix-domain socket location\n" +msgstr " -k 目录 Unix 域套接字的位置\n" + +#: main/main.c:294 +#, c-format +msgid " -l enable SSL connections\n" +msgstr " -l 打开 SSL 联接\n" + +#: main/main.c:296 +#, c-format +msgid " -N MAX-CONNECT maximum number of allowed connections\n" +msgstr " -N MAX-CONNECT 允许建立的最大联接数目\n" + +#: main/main.c:297 +#, c-format +msgid " -o OPTIONS pass \"OPTIONS\" to each server process (obsolete)\n" +msgstr " -o OPTIONS 把 \"OPTIONS\" 传递给每一个后端服务器进程(已作废)\n" + +#: main/main.c:298 +#, c-format +msgid " -p PORT port number to listen on\n" +msgstr " -p PORT 监听的端口号\n" + +#: main/main.c:299 +#, c-format +msgid " -s show statistics after each query\n" +msgstr " -s 每个查询后显示统计信息\n" + +#: 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" + +#: main/main.c:301 +#, c-format +msgid " --NAME=VALUE set run-time parameter\n" +msgstr " --NAME=VALUE 设置运行时参数\n" + +#: main/main.c:302 +#, c-format +msgid " --describe-config describe configuration parameters, then exit\n" +msgstr " --describe-config 描述配置参数, 然后退出\n" + +#: main/main.c:303 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help 显示此帮助信息, 然后退出\n" + +#: main/main.c:304 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version 输出版本信息, 然后退出\n" + +#: main/main.c:306 +#, c-format +msgid "" +"\n" +"Developer options:\n" +msgstr "" +"\n" +"开发人员选项:\n" + +#: 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" + +#: main/main.c:308 +#, c-format +msgid "" +" -n do not reinitialize shared memory after abnormal exit\n" +msgstr " -n 在异常退出之后不再重新初始化共享内存\n" + +#: main/main.c:309 +#, c-format +msgid " -O allow system table structure changes\n" +msgstr " -O 允许改变系统表结构\n" + +#: main/main.c:310 +#, c-format +msgid " -P disable system indexes\n" +msgstr " -P 关闭系统索引\n" + +#: main/main.c:311 +#, c-format +msgid " -t pa|pl|ex show timings after each query\n" +msgstr " -t pa|pl|ex 每个查询后显示计时\n" + +#: main/main.c:312 +#, fuzzy, c-format +msgid " -T send SIGSTOP to all backend processes if one dies\n" +msgstr "" +" -T 如果一个后端进程退出, 那么向所有后端进程发送 SIGSTOP\n" + +#: 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" + +#: main/main.c:318 +#, c-format +msgid " -d 0-5 override debugging level\n" +msgstr " -d 1-5 覆盖调试级别\n" + +#: main/main.c:319 +#, c-format +msgid " -E echo statement before execution\n" +msgstr " -E 执行前显示查询\n" + +#: main/main.c:320 +#, c-format +msgid " -j do not use newline as interactive query delimiter\n" +msgstr " -j 不使用新行作为交互查询的分隔符\n" + +#: main/main.c:321 main/main.c:326 +#, c-format +msgid " -r FILENAME send stdout and stderr to given file\n" +msgstr " -r FILENAME 把标准输出和标准错误发送到指定的文件中\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" + +#: 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: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 security 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:360 +#, c-format +msgid "%s: real and effective user IDs must match\n" +msgstr "%s: 真实和有效用户标识必须相互匹配\n" + +#: 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 security compromises. See the documentation for\n" +"more information on how to properly start the server.\n" +msgstr "" +"不允许管理员权限的用户运行 PostgreSQL 服务器.\n" +"服务器必须以一个非特权的用户身份启动以避免\n" +"可能的系统安全性问题. 参阅文档获取更多\n" +"有关如何正确启动服务器的信息.\n" -#: utils/misc/guc.c:1046 -msgid "Enables per-database user names." -msgstr "启用每个数据库的用户名" +#: main/main.c:388 +#, c-format +msgid "%s: invalid effective UID: %d\n" +msgstr "%s: 无效 UID: %d\n" -#: utils/misc/guc.c:1055 -msgid "This parameter doesn't do anything." -msgstr "这个参数不做任何事情." +#: main/main.c:401 +#, c-format +msgid "%s: could not determine user name (GetUserName failed)\n" +msgstr "%s: 无法确定用户名称 (GetUserName 失败)\n" -#: utils/misc/guc.c:1056 -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." +#: parser/parse_coerce.c:932 parser/parse_coerce.c:962 +#: parser/parse_coerce.c:980 parser/parse_coerce.c:995 +#: parser/parse_expr.c:1672 parser/parse_expr.c:2134 parser/parse_target.c:829 +#, c-format +msgid "cannot cast type %s to %s" +msgstr "无法把类型 %s 转换为 %s" -#: utils/misc/guc.c:1064 -msgid "Sets the default read-only status of new transactions." -msgstr "为新事物设置默认的只读状态." +#: parser/parse_coerce.c:965 +msgid "Input has too few columns." +msgstr "输入字段太少" -#: utils/misc/guc.c:1072 -msgid "Sets the current transaction's read-only status." -msgstr "设置当前事务的只读状态." +#: parser/parse_coerce.c:983 +#, c-format +msgid "Cannot cast type %s to %s in column %d." +msgstr "不能把第 %3$d 个字段的类型 %1$s 转换为 %2$s." -#: utils/misc/guc.c:1081 -msgid "Check function bodies during CREATE FUNCTION." -msgstr "在创建函数过程中检查函数体." +#: parser/parse_coerce.c:998 +msgid "Input has too many columns." +msgstr "输入字段太多" -#: utils/misc/guc.c:1089 -msgid "Enable input of NULL elements in arrays." -msgstr "在数组中启用空值成员输入" +#. translator: first %s is name of a SQL construct, eg WHERE +#: parser/parse_coerce.c:1041 +#, c-format +msgid "argument of %s must be type boolean, not type %s" +msgstr "%s 的参数必需是布尔类型, 而不是 %s 类型" -#: utils/misc/guc.c:1090 -msgid "" -"When turned on, unquoted NULL in an array input value means a null value; " -"otherwise it is taken literally." -msgstr "" -"当打开这个选项的时候,在数组输入值中没有引用的NULL表示空值;否则是按照字面上的" -"含义进行解释." +#. 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 +#, c-format +msgid "argument of %s must not return a set" +msgstr "%s 的参数不能返回一个组合" -#: utils/misc/guc.c:1099 -msgid "Create new tables with OIDs by default." -msgstr "缺省下使用OIDs来创建表." +#. translator: first %s is name of a SQL construct, eg LIMIT +#: parser/parse_coerce.c:1088 +#, c-format +msgid "argument of %s must be type %s, not type %s" +msgstr "%s 的参数必需是类型%s, 而不是类型%s " -#: utils/misc/guc.c:1107 -msgid "" -"Start a subprocess to capture stderr output and/or csvlogs into log files." -msgstr "启动一个子进程用来捕获stderr输出或csvlogs,写到到日志文件中." +#. translator: first %s is name of a SQL construct, eg CASE +#: parser/parse_coerce.c:1221 +#, c-format +msgid "%s types %s and %s cannot be matched" +msgstr "%s 的类型 %s 和 %s 不匹配" -#: utils/misc/guc.c:1115 -msgid "Truncate existing log files of same name during log rotation." -msgstr "在日志切换期间截断相同名称的日志文件" +#. translator: first %s is name of a SQL construct, eg CASE +#: parser/parse_coerce.c:1288 +#, c-format +msgid "%s could not convert type %s to %s" +msgstr "%s 无法转换类型 %s 为 %s" -#: utils/misc/guc.c:1125 -msgid "Emit information about resource usage in sorting." -msgstr "发出在排序中关于资源使用的信息." +#: parser/parse_coerce.c:1539 +msgid "arguments declared \"anyelement\" are not all alike" +msgstr "参数声明的 \"anyelement\" 不全相同" -#: utils/misc/guc.c:1138 -msgid "Generate debugging output for synchronized scanning." -msgstr "为同步扫描生成调试信息." +#: parser/parse_coerce.c:1559 +msgid "arguments declared \"anyarray\" are not all alike" +msgstr "参数声明的 \"anyarray\" 不全相同" -#: utils/misc/guc.c:1152 -msgid "Enable bounded sorting using heap sort." -msgstr "使用堆排序来启用有界排序." +#: parser/parse_coerce.c:1588 parser/parse_coerce.c:1736 +#: parser/parse_coerce.c:1768 +#, c-format +msgid "argument declared \"anyarray\" is not an array but type %s" +msgstr "参数声明的 \"anyarray\" 不是一个数组, 但是类型为 %s" -#: utils/misc/guc.c:1164 -msgid "Emit WAL-related debugging output." -msgstr "发出与WAL相关的调试信息输出" +#: parser/parse_coerce.c:1604 +msgid "" +"argument declared \"anyarray\" is not consistent with argument declared " +"\"anyelement\"" +msgstr "参数声明的 \"anyarray\" 和参数声明的 \"anyelement\" 不一致" -#: utils/misc/guc.c:1175 -msgid "Datetimes are integer based." -msgstr "日期时间类型值是基于整数类型的" +#: parser/parse_coerce.c:1622 +msgid "could not determine polymorphic type because input has type \"unknown\"" +msgstr "无法确定多态类型, 因为输入类型为 \"unknown\"" -#: utils/misc/guc.c:1189 -msgid "" -"Sets whether Kerberos and GSSAPI user names should be treated as case-" -"insensitive." -msgstr "设置 Kerberos和GSSAPI的用户名是否应该区分大小写." +#: parser/parse_coerce.c:1632 +#, c-format +msgid "type matched to anynonarray is an array type: %s" +msgstr "与anynonarray匹配的类型是一个数组类型:%s" -#: utils/misc/guc.c:1198 -msgid "Warn about backslash escapes in ordinary string literals." -msgstr "在顺序字符串文字中关于反斜线转义的警告" +#: parser/parse_coerce.c:1642 +#, c-format +msgid "type matched to anyenum is not an enum type: %s" +msgstr "匹配anyenum的类型不是枚举类型:%s" -#: utils/misc/guc.c:1207 -msgid "Causes '...' strings to treat backslashes literally." -msgstr "使字符串'...' 按照字面含义处理反斜线" +#: gram.y:915 +#, c-format +msgid "unrecognized role option \"%s\"" +msgstr "无法识别的角色选项\"%s\"" -#: utils/misc/guc.c:1217 -msgid "Enable synchronized sequential scans." -msgstr "启用同步序列扫描" +#: gram.y:1301 +msgid "current database cannot be changed" +msgstr "不能改变当前使用的数据库" -#: utils/misc/guc.c:1226 -msgid "Allows archiving of WAL files using archive_command." -msgstr "允许使用archive_command参数对WAL文件进行归档." +#: gram.y:1419 gram.y:1434 +msgid "time zone interval must be HOUR or HOUR TO MINUTE" +msgstr "时区间隔必须为 HOUR 或者 HOUR TO MINUTE" -#: utils/misc/guc.c:1235 -msgid "Allows connections and queries during recovery." -msgstr "允许在恢复期间进行连接和查询." +#: gram.y:1439 gram.y:9246 gram.y:11736 +msgid "interval precision specified twice" +msgstr "两次指定间隔精度" -#: utils/misc/guc.c:1244 -msgid "Allows modifications of the structure of system tables." -msgstr "允许修改系统表的结构." +#: gram.y:3005 +msgid "CREATE TABLE AS cannot specify INTO" +msgstr "在CREATE TABLE AS中不可指定 INTO" -#: utils/misc/guc.c:1254 -msgid "Disables reading from system indexes." -msgstr "禁止从系统索引中进行读操作" +#: gram.y:4058 +msgid "duplicate trigger events specified" +msgstr "重复指定触发器事件" -#: utils/misc/guc.c:1255 -msgid "" -"It does not prevent updating the indexes, so it is safe to use. The worst " -"consequence is slowness." -msgstr "这不能防止更新索引,所以应该安全的使用。最糟糕的结果是使系统性能变慢." +#: gram.y:4153 parser/parse_utilcmd.c:2527 parser/parse_utilcmd.c:2553 +msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" +msgstr "约束声明 INITIALLY DEFERRED 必须为 DEFERRABLE" -#: utils/misc/guc.c:1265 -msgid "" -"Enables backward compatibility mode for privilege checks on large objects." -msgstr "为在大对象上的权限检查启用向后兼容模式." +#: gram.y:4160 +msgid "conflicting constraint properties" +msgstr "约束属性冲突" -#: utils/misc/guc.c:1266 -msgid "" -"Skips privilege checks when reading or modifying large objects, for " -"compatibility with PostgreSQL releases prior to 9.0." -msgstr "" -"为了与9.0版本之前的PostgreSQL相兼容,在读取或修改大对象时候不进行权限检查" +#: gram.y:4221 +msgid "CREATE ASSERTION is not yet implemented" +msgstr "CREATE ASSERTION 仍未实现" -#: utils/misc/guc.c:1284 -msgid "" -"Forces a switch to the next xlog file if a new file has not been started " -"within N seconds." -msgstr "如果新的文件没有在N秒内启动,那么强制切换到下一个xlog文件." +#: gram.y:4237 +msgid "DROP ASSERTION is not yet implemented" +msgstr "DROP ASSERTION 仍未实现" -#: utils/misc/guc.c:1294 -msgid "Waits N seconds on connection startup after authentication." -msgstr "完成认证后,在启动的连接上等待N秒" +#: gram.y:4573 +msgid "RECHECK is no longer required" +msgstr "不再需要RECHECK选项了" -#: utils/misc/guc.c:1295 utils/misc/guc.c:1670 -msgid "This allows attaching a debugger to the process." -msgstr "允许将调试器添加到进程" +# describe.c:289 +#: gram.y:4574 +msgid "Update your data type." +msgstr "更改您的数据类型" -#: utils/misc/guc.c:1303 -msgid "Sets the default statistics target." -msgstr "设置默认统计对象." +#: gram.y:7297 gram.y:7303 gram.y:7309 +msgid "WITH CHECK OPTION is not implemented" +msgstr "未实现WITH CHECK OPTION" -#: utils/misc/guc.c:1304 -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产生列定义目标集合的列上使用." +#: gram.y:7986 +msgid "column name list not allowed in CREATE TABLE / AS EXECUTE" +msgstr "字段名列表不允许在 CREATE TABLE / AS EXECUTE 中" -#: utils/misc/guc.c:1312 -msgid "Sets the FROM-list size beyond which subqueries are not collapsed." -msgstr "所设置的FROM列表大小超过子查询所允许的最大长度" +#: gram.y:8210 +msgid "number of columns does not match number of values" +msgstr "列的数量与值的数量不匹配" -#: utils/misc/guc.c:1314 -msgid "" -"The planner will merge subqueries into upper queries if the resulting FROM " -"list would have no more than this many items." -msgstr "" -"如果所产生的FROM列表成员不超过上层查询的相应的数量,那么计划器会把子查询合并到" -"上层查询中." +#: gram.y:8660 +msgid "LIMIT #,# syntax is not supported" +msgstr "不支持 LIMIT #,# 语法" -#: utils/misc/guc.c:1323 -msgid "Sets the FROM-list size beyond which JOIN constructs are not flattened." -msgstr "设置的FROM列表大小超过没有展平的JOIN结构大小." +#: gram.y:8661 +msgid "Use separate LIMIT and OFFSET clauses." +msgstr "LIMIT和OFFSET子句要分隔开" -#: utils/misc/guc.c:1325 -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子句后" -"面的成员列表中." +#: gram.y:8879 +msgid "VALUES in FROM must have an alias" +msgstr "FROM中的VALUES子句必须有一个别名" -#: utils/misc/guc.c:1334 -msgid "Sets the threshold of FROM items beyond which GEQO is used." -msgstr "设置超过GEQO使用的FROM列表成员数量门限值." +#: gram.y:8880 +msgid "For example, FROM (VALUES ...) [AS] foo." +msgstr "例如, FROM (SELECT ...) [AS] foo." -#: utils/misc/guc.c:1342 -msgid "GEQO: effort is used to set the default for other GEQO parameters." -msgstr "GEQO: 为其它GEQO参数设置缺省值" +#: gram.y:8885 +msgid "subquery in FROM must have an alias" +msgstr "FROM 中的子查询必须有一个别名" -#: utils/misc/guc.c:1350 -msgid "GEQO: number of individuals in the population." -msgstr "GEQO: 人群 (population) 个体 (individual) 数" +#: gram.y:8886 +msgid "For example, FROM (SELECT ...) [AS] foo." +msgstr "例如, FROM (SELECT ...) [AS] foo." -#: utils/misc/guc.c:1351 utils/misc/guc.c:1359 -msgid "Zero selects a suitable default value." -msgstr "没有选择出一个合适的缺省值" +#: gram.y:9372 +msgid "precision for type float must be at least 1 bit" +msgstr "浮点类型的精确度必须至少 1 位" -#: utils/misc/guc.c:1358 -msgid "GEQO: number of iterations of the algorithm." -msgstr "GEQO: 算法的迭代次数" +#: gram.y:9381 +msgid "precision for type float must be less than 54 bits" +msgstr "浮点类型的精确度必须小于 54 位" -#: utils/misc/guc.c:1368 -msgid "Sets the time to wait on a lock before checking for deadlock." -msgstr "在检查死锁前设置在一个锁上的等待时间." +#: gram.y:10095 +msgid "UNIQUE predicate is not yet implemented" +msgstr "没有实现UNIQUE谓词" -#: utils/misc/guc.c:1378 -msgid "" -"Sets the maximum delay before canceling queries when a hot standby server is " -"processing archived WAL data." -msgstr "当热备服务器在处理已归档的WAL数据时,在取消查询请求前设置最大的延迟." +#: gram.y:11003 +msgid "RANGE PRECEDING is only supported with UNBOUNDED" +msgstr "UNBOUNDED不支持RANGE PRECEDING" -#: utils/misc/guc.c:1388 -msgid "" -"Sets the maximum delay before canceling queries when a hot standby server is " -"processing streamed WAL data." -msgstr "" -"当热备服务器在处理通过流复制的WAL数据时,在取消查询请求前设置最大的延迟." +#: gram.y:11009 +msgid "RANGE FOLLOWING is only supported with UNBOUNDED" +msgstr "UNBOUNDED不支持RANGE FOLLOWING" -#: utils/misc/guc.c:1408 -msgid "Sets the maximum number of concurrent connections." -msgstr "设置并发联接的最大个数." +#: gram.y:11036 gram.y:11059 +msgid "frame start cannot be UNBOUNDED FOLLOWING" +msgstr "框架的起始位置不能被执行UNBOUNDED FOLLOWING操作." -#: utils/misc/guc.c:1417 -msgid "Sets the number of connection slots reserved for superusers." -msgstr "设置为超级用户保留的联接数." +#: gram.y:11041 +msgid "frame starting from following row cannot end with current row" +msgstr "从后面记录启动的窗口框架(frame)不能以当前记录结束" -#: utils/misc/guc.c:1426 -msgid "Sets the number of shared memory buffers used by the server." -msgstr "设置服务器使用的共享内存缓冲区的数量." +#: gram.y:11064 +msgid "frame end cannot be UNBOUNDED PRECEDING" +msgstr "框架的结束位置不能被执行UNBOUNDED FOLLOWING操作." -#: utils/misc/guc.c:1436 -msgid "Sets the maximum number of temporary buffers used by each session." -msgstr "设置每个会话可使用的临时缓冲区的最大数量." +#: gram.y:11070 +msgid "frame starting from current row cannot have preceding rows" +msgstr "从当前记录启动的窗口框架(frame)不能拥有正在处理的记录" -#: utils/misc/guc.c:1446 -msgid "Sets the TCP port the server listens on." -msgstr "设置服务器监听的 TCP 端口号." +#: gram.y:11077 +msgid "frame starting from following row cannot have preceding rows" +msgstr "从后面记录启动的窗口框架(frame)不能拥有正在处理的记录" + +#: gram.y:11711 +msgid "type modifier cannot have parameter name" +msgstr "类型修改器不能有参数名称" -#: utils/misc/guc.c:1455 -msgid "Sets the access permissions of the Unix-domain socket." -msgstr "设置 Unix-domain 套接字的访问权限." +#: gram.y:12306 gram.y:12514 +msgid "improper use of \"*\"" +msgstr "对\"*\"的使用不正确" -#: utils/misc/guc.c:1456 -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 套接字使用普通的Unix文件许可集合.参数值应该是数值模式定义, 它的形" -"式应该是系统调用chmod和umask可接受的.(为了使用习惯上以0开头的八进制格式数值)" +#: gram.y:12445 +msgid "wrong number of parameters on left side of OVERLAPS expression" +msgstr "OVERLAPS 表达式左边的参数个数不对" -#: utils/misc/guc.c:1468 -msgid "Sets the maximum memory to be used for query workspaces." -msgstr "设置查询工作空间使用的最大内存数." +#: gram.y:12452 +msgid "wrong number of parameters on right side of OVERLAPS expression" +msgstr "OVERLAPS 表达式右边的参数个数不对" -#: utils/misc/guc.c:1469 -msgid "" -"This much memory can be used by each internal sort operation and hash table " -"before switching to temporary disk files." -msgstr "" -"这些内存将可以由每一个内部排序操作和转换到临时磁盘文件之前的散列表来使用" +#: gram.y:12577 +msgid "multiple ORDER BY clauses not allowed" +msgstr "不允许多个 ORDER BY 子句" -#: utils/misc/guc.c:1480 -msgid "Sets the maximum memory to be used for maintenance operations." -msgstr "设置维护操作使用的最大内存数." +#: gram.y:12588 +msgid "multiple OFFSET clauses not allowed" +msgstr "不允许多个 OFFSET 子句" -#: utils/misc/guc.c:1481 -msgid "This includes operations such as VACUUM and CREATE INDEX." -msgstr "此处动作包括 VACUUM 和 CREATE INDEX." +#: gram.y:12597 +msgid "multiple LIMIT clauses not allowed" +msgstr "不允许多个 LIMIT 子句" -#: utils/misc/guc.c:1490 -msgid "Sets the maximum stack depth, in kilobytes." -msgstr "设置最大的堆栈深度,单位是千字节." +#: gram.y:12606 +msgid "multiple WITH clauses not allowed" +msgstr "不允许使用多个WITH子句" -#: utils/misc/guc.c:1500 -msgid "Vacuum cost for a page found in the buffer cache." -msgstr "在缓冲区缓存中找到对于一个页进行清理的开销." +#: gram.y:12752 +msgid "OUT and INOUT arguments aren't allowed in TABLE functions" +msgstr "在TABLE函数中不允许使用OUT或INOUT模式的参数" -#: utils/misc/guc.c:1509 -msgid "Vacuum cost for a page not found in the buffer cache." -msgstr "在缓冲区缓存中没有找到对于一个页进行清理的开销." +#: gram.y:12853 +msgid "multiple COLLATE clauses not allowed" +msgstr "不允许多个 COLLATE 子句" -#: utils/misc/guc.c:1518 -msgid "Vacuum cost for a page dirtied by vacuum." -msgstr "由vacuum进程对脏页进行清理的开销." +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:12891 gram.y:12904 +#, c-format +msgid "%s constraints cannot be marked DEFERRABLE" +msgstr "%s约束不能标为DEFERRABLE" -#: utils/misc/guc.c:1527 -msgid "Vacuum cost amount available before napping." -msgstr "在暂停前可用的清理开销总量." +#. translator: %s is CHECK, UNIQUE, or similar +#: gram.y:12917 +#, c-format +msgid "%s constraints cannot be marked NOT VALID" +msgstr "%s约束不能标为NOT VALID" -#: utils/misc/guc.c:1536 -msgid "Vacuum cost delay in milliseconds." -msgstr "Vacuum开销延迟是以毫秒为单位" +#: parser/parse_utilcmd.c:182 +#, c-format +msgid "relation \"%s\" already exists, skipping" +msgstr "关系 \"%s\" 已经存在, 跳过" -#: utils/misc/guc.c:1546 -msgid "Vacuum cost delay in milliseconds, for autovacuum." -msgstr "对于autovacuum来说,Vacuum开销延迟是以毫秒为单位" +#: parser/parse_utilcmd.c:335 +msgid "array of serial is not implemented" +msgstr "未实现序号数组" -#: utils/misc/guc.c:1556 -msgid "Vacuum cost amount available before napping, for autovacuum." -msgstr "对于autovacuum进程,在暂停前前进行清理有效开销总量." +#: parser/parse_utilcmd.c:383 +#, c-format +msgid "%s will create implicit sequence \"%s\" for serial column \"%s.%s\"" +msgstr "%1$s 将为 serial 字段 \"%3$s.%4$s\" 创建隐含序列 \"%2$s\"" -#: utils/misc/guc.c:1565 +#: parser/parse_utilcmd.c:484 parser/parse_utilcmd.c:496 +#, c-format msgid "" -"Sets the maximum number of simultaneously open files for each server process." -msgstr "设置每一个服务器进程同时打开文件的最大个数." +"conflicting NULL/NOT NULL declarations for column \"%s\" of table \"%s\"" +msgstr "表 \"%2$s\" 的字段 \"%1$s\" 声明 NULL/NOT NULL 冲突" -#: utils/misc/guc.c:1577 -msgid "Sets the maximum number of simultaneously prepared transactions." -msgstr "设置同步的已准备好事务的最大个数." +#: parser/parse_utilcmd.c:508 +#, c-format +msgid "multiple default values specified for column \"%s\" of table \"%s\"" +msgstr "对表 \"%2$s\" 的字段 \"%1$s\" 指定了多遍默认值" -#: utils/misc/guc.c:1607 -msgid "Sets the maximum allowed duration of any statement." -msgstr "设置任何语句执行时间的最大值 (单位毫秒)." +#: parser/parse_utilcmd.c:1155 parser/parse_utilcmd.c:1231 +#, c-format +msgid "Index \"%s\" contains a whole-row table reference." +msgstr "索引 \"%s\" 包含一个整行表引用." -#: utils/misc/guc.c:1608 -msgid "A value of 0 turns off the timeout." -msgstr "值为 0 的时候关闭超时." +#: parser/parse_utilcmd.c:1496 +msgid "cannot use an existing index in CREATE TABLE" +msgstr " CREATE TABLE语句不能使用一个已存在的索引" -#: utils/misc/guc.c:1617 -msgid "Minimum age at which VACUUM should freeze a table row." -msgstr "VACUUM应该冻结一行记录的最小时间." +#: parser/parse_utilcmd.c:1516 +#, c-format +msgid "index \"%s\" is already associated with a constraint" +msgstr "index \"%s\"与某个约束已经关联" -#: utils/misc/guc.c:1626 -msgid "Age at which VACUUM should scan whole table to freeze tuples." -msgstr "这是VACUUM应该扫描整个表来冻结元组的时候." +#: parser/parse_utilcmd.c:1524 +#, c-format +msgid "index \"%s\" does not belong to table \"%s\"" +msgstr "索引 \"%s\" 不属于表\"%s\"" -#: utils/misc/guc.c:1635 -msgid "" -"Number of transactions by which VACUUM and HOT cleanup should be deferred, " -"if any." -msgstr "VACUUM和热清理操作应该延迟的事务数量." +#: parser/parse_utilcmd.c:1531 +#, c-format +msgid "index \"%s\" is not valid" +msgstr "索引 \"%s\" 无效" -#: utils/misc/guc.c:1647 -msgid "Sets the maximum number of locks per transaction." -msgstr "设置每一个事物锁的最大个数." +#: parser/parse_utilcmd.c:1537 +#, c-format +msgid "\"%s\" is not a unique index" +msgstr "\"%s\" 不是唯一索引" -#: utils/misc/guc.c:1648 -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个不同" -"对象需要在任何时刻被锁定的假设来指定的." +#: parser/parse_utilcmd.c:1538 parser/parse_utilcmd.c:1545 +#: parser/parse_utilcmd.c:1552 parser/parse_utilcmd.c:1622 +msgid "Cannot create a primary key or unique constraint using such an index." +msgstr "无法使用该索引创建主键或唯一约束." -#: utils/misc/guc.c:1658 -msgid "Sets the maximum allowed time to complete client authentication." -msgstr "设置完成客户端认证的需要等待的最长时间" +#: parser/parse_utilcmd.c:1544 +#, c-format +msgid "index \"%s\" contains expressions" +msgstr "索引 \"%s\" 含有表达式" -#: utils/misc/guc.c:1669 -msgid "Waits N seconds on connection startup before authentication." -msgstr "在认证前在连接启动上需要等待N秒" +#: parser/parse_utilcmd.c:1551 +#, c-format +msgid "\"%s\" is a partial index" +msgstr "\"%s\" 是一个部分索引" -#: utils/misc/guc.c:1679 -msgid "Sets the number of WAL files held for standby servers." -msgstr "设置用于备用服务器而持有WAL文件的数量." +#: parser/parse_utilcmd.c:1563 +#, c-format +msgid "\"%s\" is a deferrable index" +msgstr "\"%s\" 不是一个延迟索引" -#: utils/misc/guc.c:1688 -msgid "" -"Sets the maximum distance in log segments between automatic WAL checkpoints." -msgstr "在自动WAL检查点之间设置log段中的最大距离." +#: parser/parse_utilcmd.c:1564 +msgid "Cannot create a non-deferrable constraint using a deferrable index." +msgstr "无法为使用可延迟索引的约束创建非可延迟约束" -#: utils/misc/guc.c:1697 -msgid "Sets the maximum time between automatic WAL checkpoints." -msgstr "设置两次自动WAL检查点事件之间需要等待的最大时间" +#: parser/parse_utilcmd.c:1621 +#, c-format +msgid "index \"%s\" does not have default sorting behavior" +msgstr "索引 \"%s\"没有缺省的排序行为" -#: utils/misc/guc.c:1707 -msgid "" -"Enables warnings if checkpoint segments are filled more frequently than this." -msgstr "如果检查点段的填充频度超过了最大值,启用警告功能。" +#: parser/parse_utilcmd.c:1766 +#, c-format +msgid "column \"%s\" appears twice in primary key constraint" +msgstr "在主键约束中字段 \"%s\" 出现了两次" -#: utils/misc/guc.c:1709 -msgid "" -"Write a message to the server log if checkpoints caused by the filling of " -"checkpoint segment files happens more frequently than this number of " -"seconds. Zero turns off the warning." -msgstr "" -"如果检查点事件是由于填充检查点段比这个数量的秒数更加频繁所引起,那么会向服务" -"器日志写一条消息. 如果把参数设置为0,那么可以关掉警告功能." +#: parser/parse_utilcmd.c:1772 +#, c-format +msgid "column \"%s\" appears twice in unique constraint" +msgstr "字段 \"%s\" 在唯一约束中出现两次" -#: utils/misc/guc.c:1720 -msgid "Sets the number of disk-page buffers in shared memory for WAL." -msgstr "为 WAL 设置共享内存中磁盘页缓冲区的个数." +#: parser/parse_utilcmd.c:1937 +msgid "index expression cannot return a set" +msgstr "索引表达式不能返回一个集合" -#: utils/misc/guc.c:1730 -msgid "WAL writer sleep time between WAL flushes." -msgstr "WAL写进程在两次刷新WAL缓存内容之间的睡眠时间" +#: parser/parse_utilcmd.c:1947 +msgid "" +"index expressions and predicates can refer only to the table being indexed" +msgstr "索引表达式和声明只能指向要建索引的表" -#: utils/misc/guc.c:1741 -msgid "Sets the maximum number of simultaneously running WAL sender processes." -msgstr "设置同时运行的WAL发送进程最大数量" +#: parser/parse_utilcmd.c:2044 +msgid "rule WHERE condition cannot contain references to other relations" +msgstr "规则的WHERE条件不能包含到其它关系的引用" -#: utils/misc/guc.c:1750 -msgid "WAL sender sleep time between WAL replications." -msgstr "设置在WAL复制操作之间WAL发送进程的休眠时间" +#: parser/parse_utilcmd.c:2050 +msgid "cannot use aggregate function in rule WHERE condition" +msgstr "在检查约束中不能使用聚合函数" -#: utils/misc/guc.c:1760 -msgid "" -"Sets the delay in microseconds between transaction commit and flushing WAL " -"to disk." -msgstr "设置事物提交和刷新 WAL 到磁盘间的延迟时间, 单位微秒." +#: parser/parse_utilcmd.c:2054 +msgid "cannot use window function in rule WHERE condition" +msgstr "在检查约束中不能使用窗口函数" -#: utils/misc/guc.c:1770 +#: parser/parse_utilcmd.c:2126 msgid "" -"Sets the minimum concurrent open transactions before performing commit_delay." -msgstr "在执行commit_delay前,设置最少的可同步打开事务的数量." +"rules with WHERE conditions can only have SELECT, INSERT, UPDATE, or DELETE " +"actions" +msgstr "带有WHERE 条件的规则只允许有操作 SELECT, INSERT, UPDATE, 或者 DELETE " -#: utils/misc/guc.c:1780 -msgid "Sets the number of digits displayed for floating-point values." -msgstr "设置浮点数显示的位数." +#: parser/parse_utilcmd.c:2162 +msgid "ON SELECT rule cannot use OLD" +msgstr "规则ON SELECT不能使用关键词OLD" -#: utils/misc/guc.c:1781 -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)" +#: parser/parse_utilcmd.c:2166 +msgid "ON SELECT rule cannot use NEW" +msgstr "规则ON SELECT不能使用关键词NEW" -#: utils/misc/guc.c:1791 -msgid "Sets the minimum execution time above which statements will be logged." -msgstr "设置最小执行时间,执行时间大于等于这个值的语句都将被记录." +#: parser/parse_utilcmd.c:2175 +msgid "ON INSERT rule cannot use OLD" +msgstr "规则ON INSERT不能使用关键词OLD" -#: utils/misc/guc.c:1793 -msgid "Zero prints all queries. -1 turns this feature off." -msgstr "" -"如果值设置为0,那么打印出所有查询. 如果设置为-1,那么将把这个功能特性关闭" +#: parser/parse_utilcmd.c:2181 +msgid "ON DELETE rule cannot use NEW" +msgstr "规则ON DELETE不能使用关键词NEW" -#: utils/misc/guc.c:1802 -msgid "" -"Sets the minimum execution time above which autovacuum actions will be " -"logged." -msgstr "" -"设置最小执行时间,如果autovacuum操作时间大于等于这个值,那么将记录这些操作." +#: parser/parse_utilcmd.c:2209 +msgid "cannot refer to OLD within WITH query" +msgstr "WITH查询中无法引用OLD" -#: utils/misc/guc.c:1804 -msgid "Zero prints all actions. -1 turns autovacuum logging off." -msgstr "0表示打印出所有的操作.-1表示关闭对autovacuum的日志记录功能" +#: parser/parse_utilcmd.c:2216 +msgid "cannot refer to NEW within WITH query" +msgstr "WITH 查询无法引用NEW" -#: utils/misc/guc.c:1813 -msgid "Background writer sleep time between rounds." -msgstr "后台写入进程 (Background writer) 两次运行之间的休眠时间." +#: parser/parse_utilcmd.c:2499 +msgid "misplaced DEFERRABLE clause" +msgstr "DEFERRABLE 子句位置错误" -#: utils/misc/guc.c:1823 -msgid "Background writer maximum number of LRU pages to flush per round." -msgstr "后台写入进程 (Background writer) 每次可刷新LRU页的最大数量" +#: parser/parse_utilcmd.c:2504 parser/parse_utilcmd.c:2519 +msgid "multiple DEFERRABLE/NOT DEFERRABLE clauses not allowed" +msgstr "不允许多个 DEFERRABLE/NOT DEFERRABLE 子句" -#: utils/misc/guc.c:1838 -msgid "" -"Number of simultaneous requests that can be handled efficiently by the disk " -"subsystem." -msgstr "可以由磁盘子系统有效处理的并发请求数量." +#: parser/parse_utilcmd.c:2514 +msgid "misplaced NOT DEFERRABLE clause" +msgstr "NOT DEFERRABLE 子句位置错误" + +#: parser/parse_utilcmd.c:2535 +msgid "misplaced INITIALLY DEFERRED clause" +msgstr "INITIALLY DEFERRED 子句位置错误" + +#: parser/parse_utilcmd.c:2540 parser/parse_utilcmd.c:2566 +msgid "multiple INITIALLY IMMEDIATE/DEFERRED clauses not allowed" +msgstr "不允许多个 INITIALLY IMMEDIATE/DEFERRED 子句" + +#: parser/parse_utilcmd.c:2561 +msgid "misplaced INITIALLY IMMEDIATE clause" +msgstr "INITIALLY IMMEDIATE 子句位置错误" -#: utils/misc/guc.c:1839 +#: parser/parse_utilcmd.c:2752 +#, c-format msgid "" -"For RAID arrays, this should be approximately the number of drive spindles " -"in the array." -msgstr "对于RAID磁盘阵列来说,同步可处理的请求与磁盘阵列中磁盘数量应该相近." +"CREATE specifies a schema (%s) different from the one being created (%s)" +msgstr "CREATE 指定的模式 (%s) 和将要创建的 (%s) 不同" -#: utils/misc/guc.c:1852 -msgid "Automatic log file rotation will occur after N minutes." -msgstr "在N分钟后将会产生自动日志文件切换." +#: parser/parse_agg.c:131 parser/parse_oper.c:219 +#, c-format +msgid "could not identify an ordering operator for type %s" +msgstr "无法为类型%s识别顺序操作符" -#: utils/misc/guc.c:1862 -msgid "Automatic log file rotation will occur after N kilobytes." -msgstr "当写入了N千字节会发生自动日志文件切换" +#: parser/parse_agg.c:133 +msgid "Aggregates with DISTINCT must be able to sort their inputs." +msgstr "带有DISTINCT关键字的聚合函数必须能够对它们的输入进行排序" -#: utils/misc/guc.c:1872 -msgid "Shows the maximum number of function arguments." -msgstr "显示函数参数的最大个数." +#: parser/parse_agg.c:174 +msgid "aggregate function calls cannot contain window function calls" +msgstr "对于聚合函数调用不能包含窗口函数的调用" -#: utils/misc/guc.c:1882 -msgid "Shows the maximum number of index keys." -msgstr "显示索引键值的最大个数." +#: parser/parse_agg.c:245 parser/parse_clause.c:1637 +#, c-format +msgid "window \"%s\" does not exist" +msgstr "窗口\"%s\"不存在" -#: utils/misc/guc.c:1892 -msgid "Shows the maximum identifier length." -msgstr "显示标识符最大长度" +#: parser/parse_agg.c:336 +msgid "aggregates not allowed in WHERE clause" +msgstr "聚合函数不允许在 WHERE 子句中" -#: utils/misc/guc.c:1902 -msgid "Shows the size of a disk block." -msgstr "显示一个磁盘块的大小" +#: parser/parse_agg.c:342 +msgid "aggregates not allowed in JOIN conditions" +msgstr "聚合函数不允许在 JOIN 条件中" -#: utils/misc/guc.c:1912 -msgid "Shows the number of pages per disk file." -msgstr "显示在每个磁盘文件中页的数量." +#: 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 "在递归查询的递归术语中不允许使用聚合函数" -#: utils/misc/guc.c:1922 -msgid "Shows the block size in the write ahead log." -msgstr "显示预写日志中的块大小." +#: parser/parse_agg.c:458 +msgid "window functions not allowed in WHERE clause" +msgstr "在WHERE子句中不允许出现窗口函数" -#: utils/misc/guc.c:1932 -msgid "Shows the number of pages per write ahead log segment." -msgstr "显示每个预写日志段中页的数量." +#: parser/parse_agg.c:464 +msgid "window functions not allowed in JOIN conditions" +msgstr "在 JOIN 条件中不允许出现窗口函数" -#: utils/misc/guc.c:1945 -msgid "Time to sleep between autovacuum runs." -msgstr "两次运行autovacuum进程的休眠时间" +#: parser/parse_agg.c:470 +msgid "window functions not allowed in HAVING clause" +msgstr "在HAVING子句中不允许出现窗口函数" -#: utils/misc/guc.c:1954 -msgid "Minimum number of tuple updates or deletes prior to vacuum." -msgstr "设置激活清理操作所需要最小数量的更新或删除元组." +#: parser/parse_agg.c:483 +msgid "window functions not allowed in GROUP BY clause" +msgstr "在GROUP BY子句中不允许出现窗口函数" -#: utils/misc/guc.c:1962 -msgid "Minimum number of tuple inserts, updates or deletes prior to analyze." -msgstr "设置激活分析前所插入,更新或删除元组的最小数量" +#: parser/parse_agg.c:502 parser/parse_agg.c:515 +msgid "window functions not allowed in window definition" +msgstr "在窗口定义中不允许出现窗口定义" -#: utils/misc/guc.c:1971 +#: parser/parse_agg.c:673 +#, c-format msgid "" -"Age at which to autovacuum a table to prevent transaction ID wraparound." -msgstr "这是应该自动清理一张表以避免事务ID重叠的时间段." +"column \"%s.%s\" must appear in the GROUP BY clause or be used in an " +"aggregate function" +msgstr "字段 \"%s.%s\" 必须出现在 GROUP BY 子句中或者在聚合函数中使用" -#: utils/misc/guc.c:1981 -msgid "" -"Sets the maximum number of simultaneously running autovacuum worker " -"processes." -msgstr "设置最大可同时运行的autovacuum工作进程数量" +#: parser/parse_agg.c:679 +#, c-format +msgid "subquery uses ungrouped column \"%s.%s\" from outer query" +msgstr "子查询使用了外层查询中的非分组列 \"%s.%s\" " -#: utils/misc/guc.c:1990 -msgid "Time between issuing TCP keepalives." -msgstr "启动TCP存活定时器的间隔" +#: parser/analyze.c:472 +msgid "INSERT ... SELECT cannot specify INTO" +msgstr "在INSERT ... SELECT语句中不能指定INTO" -#: utils/misc/guc.c:1991 utils/misc/guc.c:2001 -msgid "A value of 0 uses the system default." -msgstr "值为0的时候表示系统缺省值" +#: parser/analyze.c:565 parser/analyze.c:1071 +msgid "VALUES lists must all be the same length" +msgstr "在VALUES列表中每个成员的长度必须相同" -#: utils/misc/guc.c:2000 -msgid "Time between TCP keepalive retransmits." -msgstr "在两次TCP存活启动器重新传送之间需要花费的时间" +#: parser/analyze.c:607 parser/analyze.c:1212 +msgid "VALUES must not contain table references" +msgstr "在VALUES列表中不能包含对表的引用" -#: utils/misc/guc.c:2010 -msgid "" -"Set the amount of traffic to send and receive before renegotiating the " -"encryption keys." -msgstr "在重新设定加密键之前设定需要进行发送和接收的流量总和" +#: parser/analyze.c:621 parser/analyze.c:1226 +msgid "VALUES must not contain OLD or NEW references" +msgstr "在VALUES列表中不能包括对OLD或NEW的引用" -#: utils/misc/guc.c:2020 -msgid "Maximum number of TCP keepalive retransmits." -msgstr "设置每一个事物锁的最大个数." +#: parser/analyze.c:622 parser/analyze.c:1227 +msgid "Use SELECT ... UNION ALL ... instead." +msgstr "使用SELECT ... UNION ALL ..." -#: utils/misc/guc.c:2021 -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用于" -"表示系统缺省." +#: parser/analyze.c:726 parser/analyze.c:1239 +msgid "cannot use aggregate function in VALUES" +msgstr "在VALUES列表中不能使用聚合函数" -#: utils/misc/guc.c:2031 -msgid "Sets the maximum allowed result for exact search by GIN." -msgstr "设置由GIN进行的精确搜索所允许的最大允许结果." +#: parser/analyze.c:732 parser/analyze.c:1245 +msgid "cannot use window function in VALUES" +msgstr "在VALUES列表中不能使用窗口函数" -#: utils/misc/guc.c:2041 -msgid "Sets the planner's assumption about the size of the disk cache." -msgstr "设置关于计划器对磁盘缓冲大小的假设." +#: parser/analyze.c:766 +msgid "INSERT has more expressions than target columns" +msgstr "INSERT 的表达式多于指定的字段数" -#: utils/misc/guc.c:2042 -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大小的页为单位." +#: parser/analyze.c:784 +msgid "INSERT has more target columns than expressions" +msgstr "INSERT 的指定字段数多于表达式" -#: utils/misc/guc.c:2054 -msgid "Shows the server version as an integer." -msgstr "以整数的形式显示服务器版本信息." +#: parser/analyze.c:788 +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期望值相同. 您是否偶尔使用了额外的" +"父表达式?" -#: utils/misc/guc.c:2064 -msgid "Log the use of temporary files larger than this number of kilobytes." -msgstr "记录对超过这个数量(以千字节为单位)的临时文件的使用." +#: parser/analyze.c:1085 +msgid "DEFAULT can only appear in a VALUES list within INSERT" +msgstr "DEFAULT只能在INSERT语句中的VALUES列表中出现" -#: utils/misc/guc.c:2065 -msgid "Zero logs all files. The default is -1 (turning this feature off)." -msgstr "如果设置为0,打印所有查询. 默认值为 -1 (表示关闭此功能)." +#: parser/analyze.c:1193 parser/analyze.c:2421 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to VALUES" +msgstr "SELECT FOR UPDATE/SHARE 不能适用于一个 VALUES" -#: utils/misc/guc.c:2074 -msgid "Sets the size reserved for pg_stat_activity.current_query, in bytes." -msgstr "设置为pg_stat_activity.current_query所保留的空间大小,以字节为单位." +#: parser/analyze.c:1456 +msgid "invalid UNION/INTERSECT/EXCEPT ORDER BY clause" +msgstr "无效的UNION/INTERSECT/EXCEPT ORDER BY 子句" -#: utils/misc/guc.c:2092 -msgid "" -"Sets the planner's estimate of the cost of a sequentially fetched disk page." -msgstr "设置计划器对顺序获取磁盘页的开销估算" +#: parser/analyze.c:1457 +msgid "Only result column names can be used, not expressions or functions." +msgstr "无法使用表达式或函数,只有结果列的名称可以使用." -#: utils/misc/guc.c:2101 +#: parser/analyze.c:1458 msgid "" -"Sets the planner's estimate of the cost of a nonsequentially fetched disk " -"page." -msgstr "设置计划器对非顺序获取磁盘页的开销估算." - -#: utils/misc/guc.c:2110 -msgid "Sets the planner's estimate of the cost of processing each tuple (row)." -msgstr "设置计划器对处理每个元组(也就是记录)的开销估算" +"Add the expression/function to every SELECT, or move the UNION into a FROM " +"clause." +msgstr "对每个SELECT语句增加表达式/函数, 或者将UNION移动到FROM子句中." -#: utils/misc/guc.c:2119 -msgid "" -"Sets the planner's estimate of the cost of processing each index entry " -"during an index scan." -msgstr "设置计划器在索引扫描期间对处理每个索引项的开销估算." +#: parser/analyze.c:1533 +msgid "INTO is only allowed on first SELECT of UNION/INTERSECT/EXCEPT" +msgstr "INTO 只允许在 UNION/INTERSECT/EXCEPT 的第一个 SELECT 上使用" -#: utils/misc/guc.c:2128 +#: parser/analyze.c:1593 msgid "" -"Sets the planner's estimate of the cost of processing each operator or " -"function call." -msgstr "设置计划器对处理每个操作符和函数调用的开销估算." +"UNION/INTERSECT/EXCEPT member statement cannot refer to other relations of " +"same query level" +msgstr "UNION/INTERSECT/EXCEPT的成员语句不能参考相同查询层次的其它关系" -#: utils/misc/guc.c:2138 -msgid "" -"Sets the planner's estimate of the fraction of a cursor's rows that will be " -"retrieved." -msgstr "设置计划器对于通过游标取回记录部分的估算." +#: parser/analyze.c:1681 +#, c-format +msgid "each %s query must have the same number of columns" +msgstr "每一个 %s 查询必须有相同的字段个数" -#: utils/misc/guc.c:2148 -msgid "GEQO: selective pressure within the population." -msgstr "GEQO: 在总体中的选择性压力" +#: parser/analyze.c:1937 +msgid "CREATE TABLE AS specifies too many column names" +msgstr "CREATE TABLE AS 指定了太多的字段名字" -#: utils/misc/guc.c:2157 -msgid "GEQO: seed for random path selection." -msgstr "GEQO:用于随机路径选择的种子." +#: parser/analyze.c:1995 +msgid "cannot use aggregate function in UPDATE" +msgstr "在UPDATE语句中不能以使用聚合函数" -#: utils/misc/guc.c:2166 -msgid "Multiple of the average buffer usage to free per round." -msgstr "每一次释放平均缓冲区使用量的倍数大小" +#: parser/analyze.c:2001 +msgid "cannot use window function in UPDATE" +msgstr "在UPDATE语句中不能以使用窗口函数" -#: utils/misc/guc.c:2175 -msgid "Sets the seed for random-number generation." -msgstr "设置生成随机数的种子." +#: parser/analyze.c:2110 +msgid "cannot use aggregate function in RETURNING" +msgstr "在RETURNING子句中不能使用聚合函数" -#: utils/misc/guc.c:2185 -msgid "" -"Number of tuple updates or deletes prior to vacuum as a fraction of " -"reltuples." -msgstr "在清理前需要插入,删除或更新元组的数量,这个数量是作为表大小的百分比" +#: parser/analyze.c:2116 +msgid "cannot use window function in RETURNING" +msgstr "无法在RETURNING子句中使用窗口函数" -#: utils/misc/guc.c:2193 -msgid "" -"Number of tuple inserts, updates or deletes prior to analyze as a fraction " -"of reltuples." -msgstr "在分析前插入,删除或更新元组的数量,这个数量是作为表大小的百分比" +#: parser/analyze.c:2135 +msgid "RETURNING cannot contain references to other relations" +msgstr "RETURNING关键词的后面不能包含对其它关系的引用" -#: utils/misc/guc.c:2202 -msgid "" -"Time spent flushing dirty buffers during checkpoint, as fraction of " -"checkpoint interval." -msgstr "" -"在检查点事件期间花费在将缓冲区中脏页刷新到磁盘的时间, 这个时间作为检查点间隔" -"的百分比。" +#: parser/analyze.c:2174 +msgid "cannot specify both SCROLL and NO SCROLL" +msgstr "不可同时指定 SCROLL 和 NO SCROLL" -#: utils/misc/guc.c:2220 -msgid "Sets the shell command that will be called to archive a WAL file." -msgstr "设置用于对WAL文件进行归档的shell命令" +#: parser/analyze.c:2188 +msgid "DECLARE CURSOR cannot specify INTO" +msgstr "在DECLARE CURSOR语句中不能指定关键词INTO" -#: utils/misc/guc.c:2229 -msgid "Sets the client's character set encoding." -msgstr "设置客户端编码" +#: parser/analyze.c:2200 +msgid "DECLARE CURSOR must not contain data-modifying statements in WITH" +msgstr "DECLARE CURSOR不能在WITH子句中包含修改数据的操作" -#: utils/misc/guc.c:2239 -msgid "Controls information prefixed to each log line." -msgstr "将控制信息作为每条日志文本的前缀" +#: parser/analyze.c:2206 +msgid "DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE is not supported" +msgstr "不支持DECLARE CURSOR WITH HOLD ... FOR UPDATE/SHARE" -#: utils/misc/guc.c:2240 -msgid "If blank, no prefix is used." -msgstr "如果是空的,那么不使用前缀" +#: parser/analyze.c:2207 +msgid "Holdable cursors must be READ ONLY." +msgstr "可保持游标必须为只读." -#: utils/misc/guc.c:2248 -msgid "Sets the time zone to use in log messages." -msgstr "设置在日志消息中使用的时间区域" +#: parser/analyze.c:2220 +msgid "DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE is not supported" +msgstr "不支持DECLARE INSENSITIVE CURSOR ... FOR UPDATE/SHARE" -#: utils/misc/guc.c:2257 -msgid "Sets the display format for date and time values." -msgstr "设置日期和时间值的显示格式." +#: parser/analyze.c:2221 +msgid "Insensitive cursors must be READ ONLY." +msgstr "非敏感游标必须为只读模式(READ ONLY)." -#: utils/misc/guc.c:2258 -msgid "Also controls interpretation of ambiguous date inputs." -msgstr "控制对模糊日期输入的解释." +#: parser/analyze.c:2274 +msgid "SELECT FOR UPDATE/SHARE is not allowed with DISTINCT clause" +msgstr "SELECT FOR UPDATE/SHARE 不允许带 DISTINCT 子句" -#: utils/misc/guc.c:2268 -msgid "Sets the default tablespace to create tables and indexes in." -msgstr "设置用于创建表和索引的缺省表空间." +#: parser/analyze.c:2278 +msgid "SELECT FOR UPDATE/SHARE is not allowed with GROUP BY clause" +msgstr "SELECT FOR UPDATE/SHARE不允许带有GROUP BY子句" -#: utils/misc/guc.c:2269 -msgid "An empty string selects the database's default tablespace." -msgstr "使用空字符串表示数据库的缺省表空间." +#: parser/analyze.c:2282 +msgid "SELECT FOR UPDATE/SHARE is not allowed with HAVING clause" +msgstr "SELECT FOR UPDATE/SHARE不允许带有HAVING子句" -#: utils/misc/guc.c:2278 -msgid "Sets the tablespace(s) to use for temporary tables and sort files." -msgstr "将表空间设置为用于存放临时表和排序文件" +#: parser/analyze.c:2286 +msgid "SELECT FOR UPDATE/SHARE is not allowed with aggregate functions" +msgstr "SELECT FOR UPDATE/SHARE不允许带聚合函数" -#: utils/misc/guc.c:2288 -msgid "Sets the path for dynamically loadable modules." -msgstr "设置动态加载摸组的路径." +#: parser/analyze.c:2290 +msgid "SELECT FOR UPDATE/SHARE is not allowed with window functions" +msgstr "SELECT FOR UPDATE/SHARE不允许带有窗口函数" -#: utils/misc/guc.c:2289 +#: parser/analyze.c:2294 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 "" -"如果一个动态加载模块需要打开并且指定名字没有路径 (例如, 名字中没包含斜杠), 系" -"统将在此路径中查找指定的文件." +"SELECT FOR UPDATE/SHARE is not allowed with set-returning functions in the " +"target list" +msgstr "在目标列表中,不允许SELECT FOR UPDATE/SHARE带有返回集合的函数" -#: utils/misc/guc.c:2301 -msgid "Sets the location of the Kerberos server key file." -msgstr "设置 Kerberos 服务器密钥文件位置." +#: parser/analyze.c:2373 +msgid "SELECT FOR UPDATE/SHARE must specify unqualified relation names" +msgstr "在SELECT FOR UPDATE/SHARE 语句中必须指定非限定的关系名称" -#: utils/misc/guc.c:2311 -msgid "Sets the name of the Kerberos service." -msgstr "设置Kerberos服务的名称" +#: parser/analyze.c:2390 +#, c-format +msgid "SELECT FOR UPDATE/SHARE cannot be used with foreign table \"%s\"" +msgstr "SELECT FOR UPDATE/SHARE 不能用于外部表\"%s\"" -#: utils/misc/guc.c:2320 -msgid "Sets the Bonjour service name." -msgstr "设置Bonjour服务名称." +#: parser/analyze.c:2409 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a join" +msgstr "SELECT FOR UPDATE/SHARE 不能适用于一个联合 (join)" -#: utils/misc/guc.c:2331 -msgid "Shows the collation order locale." -msgstr "显示排序规则顺序的语言环境" +#: parser/analyze.c:2415 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a function" +msgstr "SELECT FOR UPDATE/SHARE不适用于一个函数" -#: utils/misc/guc.c:2341 -msgid "Shows the character classification and case conversion locale." -msgstr "显示字符分类和按条件转换的语言环境." +#: parser/analyze.c:2427 +msgid "SELECT FOR UPDATE/SHARE cannot be applied to a WITH query" +msgstr "SELECT FOR UPDATE/SHARE 不能适用于WITH查询" -#: utils/misc/guc.c:2351 -msgid "Sets the language in which messages are displayed." -msgstr "设置信息显示语言." +#: parser/analyze.c:2441 +#, c-format +msgid "relation \"%s\" in FOR UPDATE/SHARE clause not found in FROM clause" +msgstr "在FROM子句中的FOR UPDATE/SHARE子句中没有找到关系 \"%s\"" -#: utils/misc/guc.c:2360 -msgid "Sets the locale for formatting monetary amounts." -msgstr "为货币数量格式设置 locale." +#: 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: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子句中的子查询无法参考相同查询级别中的关系" -#: utils/misc/guc.c:2369 -msgid "Sets the locale for formatting numbers." -msgstr "为数字格式设置 locale" +#: parser/parse_clause.c:580 +msgid "" +"function expression in FROM cannot refer to other relations of same query " +"level" +msgstr "在FROM子句中的函数表达式无法参考相同查询级别中的关系" -#: utils/misc/guc.c:2378 -msgid "Sets the locale for formatting date and time values." -msgstr "为日期和时间值格式设置 locale" +#: parser/parse_clause.c:593 +msgid "cannot use aggregate function in function expression in FROM" +msgstr "不能在 FROM 中的函数表达式中使用聚合函数" -#: utils/misc/guc.c:2387 -msgid "Lists shared libraries to preload into server." -msgstr "列出预装入服务器的共享库." +#: parser/parse_clause.c:600 +msgid "cannot use window function in function expression in FROM" +msgstr "不能在FROM中的函数表达式中使用窗口函数" -#: utils/misc/guc.c:2397 -msgid "Lists shared libraries to preload into each backend." -msgstr "列出预先加载到每个后台进程的共享库." +#: parser/parse_clause.c:877 +#, c-format +msgid "column name \"%s\" appears more than once in USING clause" +msgstr "在 USING 子句中字段名 \"%s\" 出现多次" -#: utils/misc/guc.c:2407 -msgid "Sets the schema search order for names that are not schema-qualified." -msgstr "为不是模式限定的名称设置模式搜索顺序" +#: parser/parse_clause.c:892 +#, c-format +msgid "common column name \"%s\" appears more than once in left table" +msgstr "共同的字段名 \"%s\" 在左边的表中出现了多次" -#: utils/misc/guc.c:2418 -msgid "Sets the server (database) character set encoding." -msgstr "设置服务器 (数据库) 字符编码." +#: parser/parse_clause.c:901 +#, c-format +msgid "column \"%s\" specified in USING clause does not exist in left table" +msgstr "USING 子句中指定的字段 \"%s\" 在左边的表中不存在" -#: utils/misc/guc.c:2429 -msgid "Shows the server version." -msgstr "显示服务器版本信息." +#: parser/parse_clause.c:915 +#, c-format +msgid "common column name \"%s\" appears more than once in right table" +msgstr "共同的字段名 \"%s\" 在右边的表中出现了多次" -#: utils/misc/guc.c:2440 -msgid "Sets the current role." -msgstr "设置当前的角色" +#: parser/parse_clause.c:924 +#, c-format +msgid "column \"%s\" specified in USING clause does not exist in right table" +msgstr "USING 子句中指定的字段 \"%s\" 在右边的表中不存在" -#: utils/misc/guc.c:2451 -msgid "Sets the session user name." -msgstr "设置会话用户名称." +#: parser/parse_clause.c:981 +#, c-format +msgid "column alias list for \"%s\" has too many entries" +msgstr "\"%s\" 的字段别名列表有太多记录" -#: utils/misc/guc.c:2461 -msgid "Sets the destination for server log output." -msgstr "设置服务器日志输出目标." +#. 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 的参数不能包含变量" -#: utils/misc/guc.c:2462 -msgid "" -"Valid values are combinations of \"stderr\", \"syslog\", \"csvlog\", and " -"\"eventlog\", depending on the platform." -msgstr "" -"有效值为 \"stderr\", \"syslog\", \"csvlog\", and \"eventlog\" 的组合, 这取决" -"于平台的种类." +#. 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 的参数一定不能包含聚合函数" -#: utils/misc/guc.c:2472 -msgid "Sets the destination directory for log files." -msgstr "设置日志文件目的目录." +#. 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 的参数一定不能包含窗口函数" -#: utils/misc/guc.c:2473 -msgid "Can be specified as relative to the data directory or as absolute path." -msgstr "可以指定为data目录的相对目录或绝对目录." +#. 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\" 是不明确的" -#: utils/misc/guc.c:2482 -msgid "Sets the file name pattern for log files." -msgstr "设置日志文件的文件名字模式." +#. 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 中的非整数常量" -#: utils/misc/guc.c:2493 -msgid "Sets the program name used to identify PostgreSQL messages in syslog." -msgstr "设置在系统日志 (syslog) 中确认 PostgreSQL 信息的程序名." +#. 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不在select列表中." -#: utils/misc/guc.c:2504 -msgid "Sets the time zone for displaying and interpreting time stamps." -msgstr "设置显示和解释时间戳的时区." +#: parser/parse_clause.c:1625 +#, c-format +msgid "window \"%s\" is already defined" +msgstr "已经定义窗口\"%s\"" -#: utils/misc/guc.c:2513 -msgid "Selects a file of time zone abbreviations." -msgstr "选择时间区域缩写的文件" +#: parser/parse_clause.c:1679 +#, c-format +msgid "cannot override PARTITION BY clause of window \"%s\"" +msgstr "无法覆盖窗口\"%s\"的PARTITION BY子句" -#: utils/misc/guc.c:2522 -msgid "Sets the current transaction's isolation level." -msgstr "设置当前事物的隔离级别." +#: parser/parse_clause.c:1691 +#, c-format +msgid "cannot override ORDER BY clause of window \"%s\"" +msgstr "无法覆盖窗口 \"%s\"的ORDER BY子句" -#: utils/misc/guc.c:2532 -msgid "Sets the owning group of the Unix-domain socket." -msgstr "设置 Unix-domain 套接字的属组." +#: parser/parse_clause.c:1713 +#, c-format +msgid "cannot override frame clause of window \"%s\"" +msgstr "无法覆盖窗口\"%s\"的框架(frame)子句" -#: utils/misc/guc.c:2533 +#: parser/parse_clause.c:1779 msgid "" -"The owning user of the socket is always the user that starts the server." -msgstr "套接字的属主用户也是起动服务的用户." +"in an aggregate with DISTINCT, ORDER BY expressions must appear in argument " +"list" +msgstr "" +"在带有DISTINCT子句的聚合函数中,ORDER BY子句后面的表达式必须在参数列表中出现" -#: utils/misc/guc.c:2542 -msgid "Sets the directory where the Unix-domain socket will be created." -msgstr "设置创建 Unix-domain 套接字的目录." +#: parser/parse_clause.c:1780 +msgid "for SELECT DISTINCT, ORDER BY expressions must appear in select list" +msgstr "在查询列表中必须出现SELECT DISTINCT, ORDER BY表达式" -#: utils/misc/guc.c:2552 -msgid "Sets the host name or IP address(es) to listen to." -msgstr "设置监听的主机名或 IP 地址." +#: 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表达式" -#: utils/misc/guc.c:2562 -msgid "Sets the list of known custom variable classes." -msgstr "设置已知变量类型的列表" +#: parser/parse_clause.c:2020 +#, c-format +msgid "operator %s is not a valid ordering operator" +msgstr "操作符%s不时有效的排序操作符" -#: utils/misc/guc.c:2572 -msgid "Sets the server's data directory." -msgstr "设置服务器的数据目录" +#: parser/parse_clause.c:2022 +msgid "" +"Ordering operators must be \"<\" or \">\" members of btree operator families." +msgstr "顺序操作符必须是btree操作符家族的成员\"<\"或\">\"." -#: utils/misc/guc.c:2582 -msgid "Sets the server's main configuration file." -msgstr "设置服务器的主配置文件" +#: parser/parse_expr.c:366 parser/parse_expr.c:759 +#, c-format +msgid "column %s.%s does not exist" +msgstr "字段 %s.%s 不存在" -#: utils/misc/guc.c:2592 -msgid "Sets the server's \"hba\" configuration file." -msgstr "设置服务器的 \"hba\" 配置文件" +#: parser/parse_expr.c:378 +#, c-format +msgid "column \"%s\" not found in data type %s" +msgstr "在数据类型 %2$s 中未找到字段 \"%1$s\"" -#: utils/misc/guc.c:2602 -msgid "Sets the server's \"ident\" configuration file." -msgstr "设置服务器的 \"ident\" 配置文件" +#: parser/parse_expr.c:384 +#, c-format +msgid "could not identify column \"%s\" in record data type" +msgstr "在记录数据类型中无法确认字段 \"%s\"" -#: utils/misc/guc.c:2612 -msgid "Writes the postmaster PID to the specified file." -msgstr "把 postmaster PID 写到指定文件." +#: parser/parse_expr.c:390 +#, c-format +msgid "column notation .%s applied to type %s, which is not a composite type" +msgstr "将列符号.%s应用到类型%s(这个类型不是组合类型)" -#: utils/misc/guc.c:2622 -msgid "Writes temporary statistics files to the specified directory." -msgstr "将临时统计信息文件写到指定的目录" +#: parser/parse_expr.c:420 parser/parse_target.c:617 +msgid "row expansion via \"*\" is not supported here" +msgstr "不支持通过\"*\"实现的记录扩展" -# describe.c:97 -#: utils/misc/guc.c:2632 -msgid "Sets default text search configuration." -msgstr "设置缺省文本搜索配置" +#: parser/parse_expr.c:743 parser/parse_target.c:1064 +#: parser/parse_relation.c:478 parser/parse_relation.c:558 +#, c-format +msgid "column reference \"%s\" is ambiguous" +msgstr "字段关联 \"%s\" 是不明确的" -#: utils/misc/guc.c:2642 -msgid "Sets the list of allowed SSL ciphers." -msgstr "设置日志信息的冗长." +#: 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 +#, c-format +msgid "there is no parameter $%d" +msgstr "没有参数 $%d" -#: utils/misc/guc.c:2653 -msgid "Sets the application name to be reported in statistics and logs." -msgstr "设置在统计和日志中出现的应用程序名称." +#: parser/parse_expr.c:1023 +msgid "NULLIF requires = operator to yield boolean" +msgstr "在NULLIF操作中需要等号操作符来产生布尔类型的返回值" -#: utils/misc/guc.c:2672 -msgid "Sets whether \"\\'\" is allowed in string literals." -msgstr "在字符串常量中设置是否允许使用\"\\'\"" +#: parser/parse_expr.c:1202 +msgid "arguments of row IN must all be row expressions" +msgstr "记录IN的参数必须都是记录表达式" -#: utils/misc/guc.c:2681 -msgid "Sets the output format for bytea." -msgstr "设置bytea类型数据的输出格式" +#: parser/parse_expr.c:1416 +msgid "subquery cannot have SELECT INTO" +msgstr "FROM中的子查询不能有SELECT INTO" -#: utils/misc/guc.c:2690 -msgid "Sets the message levels that are sent to the client." -msgstr "设置发送到客户端的信息级别." +#: parser/parse_expr.c:1444 +msgid "subquery must return a column" +msgstr "子查询必须返回一个字段" -#: utils/misc/guc.c:2691 utils/misc/guc.c:2740 utils/misc/guc.c:2750 -#: utils/misc/guc.c:2790 -msgid "" -"Each level includes all the levels that follow it. The later the level, the " -"fewer messages are sent." -msgstr "每一层都包含在这一层后面的层次, 对于越往后的层次,就会发送越少的消息." +#: parser/parse_expr.c:1451 +msgid "subquery must return only one column" +msgstr "子查询必须只能返回一个字段" -#: utils/misc/guc.c:2700 -msgid "Enables the planner to use constraints to optimize queries." -msgstr "使计划器可以使用约束来优化查询." +#: parser/parse_expr.c:1511 +msgid "subquery has too many columns" +msgstr "子查询有太多的字段" -#: utils/misc/guc.c:2701 -msgid "" -"Table scans will be skipped if their constraints guarantee that no rows " -"match the query." -msgstr "如果约束能够确保没有列符合查询条件,那么将跳过表扫描." +#: parser/parse_expr.c:1516 +msgid "subquery has too few columns" +msgstr "子查询字段太少" -#: utils/misc/guc.c:2711 -msgid "Sets the transaction isolation level of each new transaction." -msgstr "设置每一个新事物的隔离 (isolation) 级别." +#: parser/parse_expr.c:1612 +msgid "cannot determine type of empty array" +msgstr "无法确定空数组的类型" -#: utils/misc/guc.c:2720 -msgid "Sets the display format for interval values." -msgstr "设置时间间隔值的显示格式." +#: parser/parse_expr.c:1613 +msgid "Explicitly cast to the desired type, for example ARRAY[]::integer[]." +msgstr "显式地将值指派为期望类型,例如ARRAY[]::integer[]." -#: utils/misc/guc.c:2730 -msgid "Sets the verbosity of logged messages." -msgstr "设置日志信息的冗长." +#: parser/parse_expr.c:1627 +#, c-format +msgid "could not find element type for data type %s" +msgstr "无法为数据类型%s找到成员类型" -#: utils/misc/guc.c:2739 -msgid "Sets the message levels that are logged." -msgstr "设置日志记录的信息级别." +#: parser/parse_expr.c:1841 +msgid "unnamed XML attribute value must be a column reference" +msgstr "未命名的XML属性值必须是一个列引用" -#: utils/misc/guc.c:2749 -msgid "" -"Causes all statements generating error at or above this level to be logged." -msgstr "在此级别或以上级别, 所有语句产生的错误将被记录." +#: parser/parse_expr.c:1842 +msgid "unnamed XML element value must be a column reference" +msgstr "未命名的XML成员值必须是一个列引用" -#: utils/misc/guc.c:2759 -msgid "Sets the type of statements logged." -msgstr "设置记录语句的类型." +#: parser/parse_expr.c:1857 +#, c-format +msgid "XML attribute name \"%s\" appears more than once" +msgstr "XML属性名称\"%s\"出现多次" -#: utils/misc/guc.c:2769 -msgid "Sets the syslog \"facility\" to be used when syslog enabled." -msgstr "当启用系统日志 (syslog), 设置系统日志使用 \"facility\"." +#: parser/parse_expr.c:1964 +#, c-format +msgid "cannot cast XMLSERIALIZE result to %s" +msgstr "无法把XMLSERIALIZE强制转换为%s" -#: utils/misc/guc.c:2779 -msgid "Sets the session's behavior for triggers and rewrite rules." -msgstr "为触发器和重写规则设置会话的行为" +#: parser/parse_expr.c:2207 parser/parse_expr.c:2407 +msgid "unequal number of entries in row expressions" +msgstr "在记录表达式中,项的数量不相等" -#: utils/misc/guc.c:2789 -msgid "Enables logging of recovery-related debugging information." -msgstr "启用日志功能,对与恢复操作相关的调试信息进行记录." +#: parser/parse_expr.c:2217 +msgid "cannot compare rows of zero length" +msgstr "无法比较零长度的记录" -#: utils/misc/guc.c:2803 -msgid "Collects function-level statistics on database activity." -msgstr "在数据库运行的事务中收集函数级别统计信息." +#: parser/parse_expr.c:2242 +#, c-format +msgid "row comparison operator must yield type boolean, not type %s" +msgstr "行比较操作符必需返回布尔类型, 而不是类型%s" -#: utils/misc/guc.c:2812 -msgid "Set the level of information written to the WAL." -msgstr "设置写入WAL文件的信息的内容详细级别" +#: parser/parse_expr.c:2249 +msgid "row comparison operator must not return a set" +msgstr "行比较操作符不能返回一个集合" + +#: parser/parse_expr.c:2308 parser/parse_expr.c:2353 +#, c-format +msgid "could not determine interpretation of row comparison operator %s" +msgstr "无法确定行比较操作符%s的说明" -#: utils/misc/guc.c:2821 -msgid "Selects the method used for forcing WAL updates to disk." -msgstr "选择用于强制将WAL缓冲区的内容更新到磁盘的方法." +#: parser/parse_expr.c:2310 +msgid "" +"Row comparison operators must be associated with btree operator families." +msgstr "记录比较表达式必须与btree操作符相关联." -#: utils/misc/guc.c:2831 -msgid "Sets how binary values are to be encoded in XML." -msgstr "设置在XML中如何对二进制的值进行编码." +#: parser/parse_expr.c:2355 +msgid "There are multiple equally-plausible candidates." +msgstr "有多个相等的类似候选." -#: utils/misc/guc.c:2840 -msgid "" -"Sets whether XML data in implicit parsing and serialization operations is to " -"be considered as documents or content fragments." -msgstr "设置在隐式分析和串行操作中的XML数据是否被当作文档或者内容片断." +#: parser/parse_expr.c:2447 +msgid "IS DISTINCT FROM requires = operator to yield boolean" +msgstr "IS DISTINCT FROM操作中需要等号来产生布尔类型的值" -#: utils/misc/guc.c:3612 +#: parser/parse_target.c:382 parser/parse_target.c:670 #, 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" +msgid "cannot assign to system column \"%s\"" +msgstr "不能指定系统字段名 \"%s\"" -#: utils/misc/guc.c:3631 +#: parser/parse_target.c:410 +msgid "cannot set an array element to DEFAULT" +msgstr "不能设置一个数组元素为 DEFAULT" + +#: parser/parse_target.c:415 +msgid "cannot set a subfield to DEFAULT" +msgstr "不能设置子字段为 DEFAULT" + +#: parser/parse_target.c:484 #, c-format -msgid "%s cannot access the server configuration file \"%s\": %s\n" -msgstr "%s 无法处理服务器的配置文件 \"%s\": %s\n" +msgid "column \"%s\" is of type %s but expression is of type %s" +msgstr "字段 \"%s\" 的类型为 %s, 但表达式的类型为 %s" -#: utils/misc/guc.c:3651 +#: parser/parse_target.c:654 #, 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" +"cannot assign to field \"%s\" of column \"%s\" because its type %s is not a " +"composite type" msgstr "" -"%s 不知道在哪里可以找到数据库系统数据.\n" -"可以在 \"%s\" 中指定 \"data_directory\", 或者通过 -D 选项指定或者通过设置 " -"PGDATA 环境变量.\n" +"无法指定列 \"%2$s\" 的字段 \"%1$s\", 因为它的类型 %3$s 不是一个复合类型" -#: utils/misc/guc.c:3682 +#: parser/parse_target.c:663 #, 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" +"cannot assign to field \"%s\" of column \"%s\" because there is no such " +"column in data type %s" msgstr "" -"%s 不知道在哪里可以找到 \"hba\" 配置文件.\n" -"可以在 \"%s\" 中指定 \"hba_file\", 或者通过 -D 选项指定或者通过设置PGDATA 环" -"境变量.\n" +"无法给字段 \"%2$s\" 的数据域 \"%1$s\" 赋值, 因为在数据类型 %3$s 中没有此列" -#: utils/misc/guc.c:3705 +#: parser/parse_target.c:730 #, c-format msgid "" -"%s does not know where to find the \"ident\" configuration file.\n" -"This can be specified as \"ident_file\" in \"%s\", or by the -D invocation " -"option, or by the PGDATA environment variable.\n" -msgstr "" -"%s 不知道在哪里可以找到 \"ident\" 配置文件.\n" -"可以在 \"%s\" 中指定 \"ident_file\", 或者通过 -D 选项指定或者通过设置PGDATA " -"环境变量.\n" - -#: utils/misc/guc.c:4310 utils/misc/guc.c:4474 -msgid "Value exceeds integer range." -msgstr "值已超过整数范围" +"array assignment to \"%s\" requires type %s but expression is of type %s" +msgstr "将数组分配给\"%s\" 时需要类型%s,但是表达式属于类型%s" -#: utils/misc/guc.c:4329 -msgid "Valid units for this parameter are \"kB\", \"MB\", and \"GB\"." -msgstr "这个参数的有效单位是\"kB\", \"MB\", 和\"GB\"." +#: parser/parse_target.c:740 +#, c-format +msgid "subfield \"%s\" is of type %s but expression is of type %s" +msgstr "子字段 \"%s\" 的类型为 %s, 但表达式的类型为 %s" -#: utils/misc/guc.c:4388 -msgid "" -"Valid units for this parameter are \"ms\", \"s\", \"min\", \"h\", and \"d\"." -msgstr "这个参数可使用的有效单元是\"ms\", \"s\", \"min\", \"h\", 和\"d\"." +#: parser/parse_target.c:1126 +msgid "SELECT * with no tables specified is not valid" +msgstr "SELECT * 没有指定表是无效的" -#: utils/misc/guc.c:4697 utils/misc/guc.c:5361 utils/misc/guc.c:5411 -#: utils/misc/guc.c:6115 utils/misc/guc.c:6274 utils/misc/guc.c:7496 -#: guc-file.l:217 +#: parser/parse_param.c:215 #, c-format -msgid "unrecognized configuration parameter \"%s\"" -msgstr "未认可的配置参数 \"%s\"" +msgid "inconsistent types deduced for parameter $%d" +msgstr "对于参数$%d,推断出不一致的类型" -#: utils/misc/guc.c:4724 +#: parser/parse_node.c:83 #, c-format -msgid "parameter \"%s\" cannot be changed" -msgstr "参数 \"%s\" 不可以改变" +msgid "target lists can have at most %d entries" +msgstr "目标列表最多可以有 %d 个字段" -#: utils/misc/guc.c:4741 utils/misc/guc.c:4749 guc-file.l:264 +#: parser/parse_node.c:240 #, c-format -msgid "parameter \"%s\" cannot be changed without restarting the server" -msgstr "在没有启动服务器的情况下,不能改变参数 \"%s\" " +msgid "cannot subscript type %s because it is not an array" +msgstr "无法下标类型 %s, 因为它不是一个数组" -#: utils/misc/guc.c:4759 -#, c-format -msgid "parameter \"%s\" cannot be changed now" -msgstr "参数 \"%s\" 现在不能改变" +#: parser/parse_node.c:342 parser/parse_node.c:369 +msgid "array subscript must have type integer" +msgstr "数组下标必须为整数类型" -#: utils/misc/guc.c:4790 +#: parser/parse_node.c:393 #, c-format -msgid "parameter \"%s\" cannot be set after connection start" -msgstr "联接启动后, 参数 \"%s\" 不能设置" +msgid "array assignment requires type %s but expression is of type %s" +msgstr "数组分配要求类型%s,但是表达式属于类型%s" -#: utils/misc/guc.c:4800 utils/misc/guc.c:7511 +#: parser/parse_collate.c:214 parser/parse_collate.c:538 #, c-format -msgid "permission denied to set parameter \"%s\"" -msgstr "设置参数 \"%s\" 权限不允许" +msgid "collation mismatch between implicit collations \"%s\" and \"%s\"" +msgstr "排序名:\"%s\" 和 \"%s\"之间的排序规则不匹配" -#: utils/misc/guc.c:4838 -#, c-format -msgid "cannot set parameter \"%s\" within security-definer function" -msgstr "无法在安全定义者操作中设置参数\"%s\" " +#: 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 子句来选择排序规则." -#: utils/misc/guc.c:4846 utils/init/miscinit.c:380 +#: parser/parse_collate.c:763 #, c-format -msgid "cannot set parameter \"%s\" within security-restricted operation" -msgstr "无法在对安全有严格限制的操作中设置参数\"%s\" " +msgid "collation mismatch between explicit collations \"%s\" and \"%s\"" +msgstr "排序名:\"%s\" 和 \"%s\"之间的排序规则不匹配" -#: utils/misc/guc.c:4917 utils/misc/guc.c:4992 +#: parser/parse_relation.c:147 #, c-format -msgid "invalid value for parameter \"%s\": %d" -msgstr "参数 \"%s\" 的值无效: %d" +msgid "table reference \"%s\" is ambiguous" +msgstr "表关联 \"%s\" 是不明确的" -#: utils/misc/guc.c:4961 utils/misc/guc.c:5163 utils/misc/guc.c:5229 -#: utils/misc/guc.c:5255 guc-file.l:178 +#: parser/parse_relation.c:183 #, c-format -msgid "invalid value for parameter \"%s\": \"%s\"" -msgstr "参数 \"%s\" 的值无效: \"%s\"" +msgid "table reference %u is ambiguous" +msgstr "表关联 %u 是不明确的" -#: utils/misc/guc.c:4970 +#: parser/parse_relation.c:343 #, c-format -msgid "%d is outside the valid range for parameter \"%s\" (%d .. %d)" -msgstr "%d 超出了参数 \"%s\" (%d .. %d) 的有效范围" +msgid "table name \"%s\" specified more than once" +msgstr "表名 \"%s\" 被指定多次" -#: utils/misc/guc.c:5034 +#: parser/parse_relation.c:761 parser/parse_relation.c:1052 +#: parser/parse_relation.c:1439 #, c-format -msgid "parameter \"%s\" requires a numeric value" -msgstr "参数 \"%s\" 需要一个数字值" +msgid "table \"%s\" has %d columns available but %d columns specified" +msgstr "表 \"%s\" 有 %d 个有效字段, 但指定了 %d 个字段" -#: utils/misc/guc.c:5042 +#: parser/parse_relation.c:791 #, c-format -msgid "%g is outside the valid range for parameter \"%s\" (%g .. %g)" -msgstr "%g 超出了参数 \"%s\" (%g .. %g) 的有效范围" +msgid "too many column aliases specified for function %s" +msgstr "为函数 %s 指定了太多的字段别名" -#: utils/misc/guc.c:5064 +#: parser/parse_relation.c:857 #, c-format -msgid "invalid value for parameter \"%s\": %g" -msgstr "参数 \"%s\" 的值无效: %g" +msgid "" +"There is a WITH item named \"%s\", but it cannot be referenced from this " +"part of the query." +msgstr "这里有一个名称为\"%s\"的WITH成员,但是不能从查询的这个部分引用它." -#: utils/misc/guc.c:5367 utils/misc/guc.c:5415 utils/misc/guc.c:6278 -#, c-format -msgid "must be superuser to examine \"%s\"" -msgstr "检查 \"%s\" 必须为超级用户" +#: parser/parse_relation.c:859 +msgid "" +"Use WITH RECURSIVE, or re-order the WITH items to remove forward references." +msgstr "使用WITH RECURSIVE或重新排序WITH成员来删除前向引用." -#: utils/misc/guc.c:5526 -#, c-format -msgid "SET %s takes only one argument" -msgstr "SET %s 只能带一个参数" +#: parser/parse_relation.c:1132 +msgid "" +"a column definition list is only allowed for functions returning \"record\"" +msgstr "一个字段定义列表只允许返回 \"record\" 的函数" -#: utils/misc/guc.c:5753 -msgid "SET requires parameter name" -msgstr "SET 需要参数名字" +#: parser/parse_relation.c:1140 +msgid "a column definition list is required for functions returning \"record\"" +msgstr "一个字段定义列表需要返回 \"record\" 的函数" -#: utils/misc/guc.c:5868 +#: parser/parse_relation.c:1191 #, c-format -msgid "attempt to redefine parameter \"%s\"" -msgstr "尝试重新定义参数 \"%s\"" +msgid "function \"%s\" in FROM has unsupported return type %s" +msgstr "FROM 中的函数 \"%s\" 不支持返回类型 %s" -#: utils/misc/guc.c:7212 +#: parser/parse_relation.c:1265 #, c-format -msgid "could not parse setting for parameter \"%s\"" -msgstr "无法分析参数 \"%s\" 的设置" - -#: utils/misc/guc.c:7555 -msgid "invalid list syntax for parameter \"log_destination\"" -msgstr "无效的 \"log_destination\" 参数列表语法" +msgid "VALUES lists \"%s\" have %d columns available but %d columns specified" +msgstr "VALUES列表\"%s\"中有%d列有效, 但指定了%d个列." -#: utils/misc/guc.c:7579 +#: parser/parse_relation.c:1321 #, c-format -msgid "unrecognized \"log_destination\" key word: \"%s\"" -msgstr "不认可的 \"log_destination\" 关键字: \"%s\"" - -#: utils/misc/guc.c:7654 -msgid "SET AUTOCOMMIT TO OFF is no longer supported" -msgstr "SET AUTOCOMMIT TO OFF 不再被支持" - -#: utils/misc/guc.c:7726 -msgid "assertion checking is not supported by this build" -msgstr "这个版本的安装不支持使用断言检查" - -# input.c:213 -#: utils/misc/guc.c:7741 -msgid "Bonjour is not supported by this build" -msgstr "这个版本的安装不支持使用Bonjour " - -# input.c:213 -#: utils/misc/guc.c:7756 -msgid "SSL is not supported by this build" -msgstr "这个版本的安装不支持使用SSL" - -#: utils/misc/guc.c:7770 -msgid "cannot enable parameter when \"log_statement_stats\" is true" -msgstr "当 \"log_statement_stats\" 为 true 时, 不能启动参数." - -#: utils/misc/guc.c:7786 -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/guc.c:7804 -msgid "cannot set transaction read-write mode inside a read-only transaction" -msgstr "不能在一个只读事物里面设置读写模式" +msgid "joins can have at most %d columns" +msgstr "连接最多可以有 %d 个字段" -#: utils/misc/guc.c:7815 -msgid "cannot set transaction read-write mode during recovery" -msgstr "在恢复操作期间不能设置事务的读写模式" +#: parser/parse_relation.c:1412 +#, c-format +msgid "WITH query \"%s\" does not have a RETURNING clause" +msgstr "WITH 查询 \"%s\" 没有RETURNING子句" -#: utils/misc/help_config.c:131 -msgid "internal error: unrecognized run-time parameter type\n" -msgstr "内部错误: 未知的运行时参数类型\n" +#: parser/parse_relation.c:2094 +#, c-format +msgid "column %d of relation \"%s\" does not exist" +msgstr "在关系\"%2$s\"中的列 %1$d 不存在" -#: guc-file.l:288 +#: parser/parse_relation.c:2478 #, c-format -msgid "parameter \"%s\" removed from configuration file, reset to default" -msgstr "参数\"%s\"已从配置文件中删除,重新设置为缺省" +msgid "invalid reference to FROM-clause entry for table \"%s\"" +msgstr "对于表 \"%s\"的FROM子句项的引用无效 " -#: guc-file.l:344 +#: parser/parse_relation.c:2481 #, c-format -msgid "parameter \"%s\" changed to \"%s\"" -msgstr "参数 \"%s\"被改为\"%s\"" +msgid "Perhaps you meant to reference the table alias \"%s\"." +msgstr "可能您是要引用表的化名 \"%s\"." -#: guc-file.l:412 +#: parser/parse_relation.c:2483 #, c-format msgid "" -"could not open configuration file \"%s\": maximum nesting depth exceeded" -msgstr "无法打开配置文件 \"%s\": 已超过最大的嵌套深度" +"There is an entry for table \"%s\", but it cannot be referenced from this " +"part of the query." +msgstr "这里有一个对于表\"%s\"的项,但是不能从查询的这个部分中引用." -#: guc-file.l:575 +#: parser/parse_relation.c:2489 #, c-format -msgid "syntax error in file \"%s\" line %u, near end of line" -msgstr "在文件 \"%s\" 第 %u 行, 行尾附近语法错误" +msgid "missing FROM-clause entry for table \"%s\"" +msgstr "对于表\"%s\",丢失FROM子句项" -#: guc-file.l:580 -#, c-format -msgid "syntax error in file \"%s\" line %u, near token \"%s\"" -msgstr "在文件 \"%s\" 第 %u 行, 记号 \"%s\" 附近语法错误" +#: scan.l:411 +msgid "unterminated /* comment" +msgstr "/* 注释没有结束" -#: utils/error/assert.c:37 -msgid "TRAP: ExceptionalCondition: bad arguments\n" -msgstr "TRAP: ExceptionalCondition: 错误参数\n" +#: scan.l:440 +msgid "unterminated bit string literal" +msgstr "未结束的bit字符串常量" -#: utils/error/assert.c:40 -#, c-format -msgid "TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n" -msgstr "TRAP: %s(\"%s\", 文件: \"%s\", 行数: %d)\n" +#: scan.l:461 +msgid "unterminated hexadecimal string literal" +msgstr "未结束的16进制字符串常量" -#: utils/error/elog.c:1413 -#, c-format -msgid "could not reopen file \"%s\" as stderr: %m" -msgstr "无法作为标准错误重新打开文件 \"%s\": %m" +#: scan.l:511 +msgid "unsafe use of string constant with Unicode escapes" +msgstr "这种使用带有Unicode转义字符的字符串常量的方法不安全." -#: utils/error/elog.c:1426 -#, c-format -msgid "could not reopen file \"%s\" as stdout: %m" -msgstr "无法作为标准输出重新打开文件 \"%s\": %m" +#: scan.l:512 +msgid "" +"String constants with Unicode escapes cannot be used when " +"standard_conforming_strings is off." +msgstr "" +"当参数standard_conforming_strings处于关闭状态时,无法使用带有Unicode转义字符" +"的字符串常量." -#: utils/error/elog.c:1811 utils/error/elog.c:1821 utils/error/elog.c:1831 -msgid "[unknown]" -msgstr "[未知]" +#: 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)" + +#: scan.l:586 +msgid "invalid Unicode escape" +msgstr "无效的Unicode转义字符" + +#: scan.l:587 +msgid "Unicode escapes must be \\uXXXX or \\UXXXXXXXX." +msgstr "Unicode转义字符必须是\\uXXXX或\\UXXXXXXXX." -#: utils/error/elog.c:2179 utils/error/elog.c:2459 utils/error/elog.c:2537 -msgid "missing error text" -msgstr "缺少错误信息" +#: scan.l:598 +msgid "unsafe use of \\' in a string literal" +msgstr "在字符串常量中使用\\不安全" -#: utils/error/elog.c:2182 utils/error/elog.c:2185 utils/error/elog.c:2540 -#: utils/error/elog.c:2543 -#, c-format -msgid " at character %d" -msgstr " 第 %d 个字符处" +#: scan.l:599 +msgid "" +"Use '' to write quotes in strings. \\' is insecure in client-only encodings." +msgstr "使用''在字符串中表示引号,在只有客户端使用的编码中使用\\'不安全." -#: utils/error/elog.c:2195 utils/error/elog.c:2202 -msgid "DETAIL: " -msgstr "详细信息: " +#: scan.l:674 +msgid "unterminated dollar-quoted string" +msgstr "未结束的用$符号引用的字符串" -#: utils/error/elog.c:2209 -msgid "HINT: " -msgstr "提示: " +#: scan.l:691 scan.l:703 scan.l:717 +msgid "zero-length delimited identifier" +msgstr "长度为0的分隔标示符" -#: utils/error/elog.c:2216 -msgid "QUERY: " -msgstr "查询: " +#: scan.l:730 +msgid "unterminated quoted identifier" +msgstr "未结束的引用标识符" -#: utils/error/elog.c:2223 -msgid "CONTEXT: " -msgstr "上下文: " +#: scan.l:834 +msgid "operator too long" +msgstr "操作符太长" -#: utils/error/elog.c:2233 +#. translator: %s is typically the translation of "syntax error" +#: scan.l:992 #, c-format -msgid "LOCATION: %s, %s:%d\n" -msgstr "位置: %s, %s:%d\n" +msgid "%s at end of input" +msgstr "%s 在输入的末尾" -#: utils/error/elog.c:2240 +#. translator: first %s is typically the translation of "syntax error" +#: scan.l:1000 #, c-format -msgid "LOCATION: %s:%d\n" -msgstr "位置: %s:%d\n" +msgid "%s at or near \"%s\"" +msgstr "%s 在 \"%s\" 或附近的" -#: utils/error/elog.c:2254 -msgid "STATEMENT: " -msgstr "语句: " +#: 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时,无法为在007F以上的码点值使用Unicode转义值." -#. translator: This string will be truncated at 47 -#. characters expanded. -#: utils/error/elog.c:2652 -#, c-format -msgid "operating system error %d" -msgstr "操作系统错误 %d" +#: scan.l:1189 scan.l:1325 +msgid "invalid Unicode escape value" +msgstr "无效的Unicode转义值" -#: utils/error/elog.c:2675 -msgid "DEBUG" -msgstr "调试" +#: scan.l:1214 +msgid "invalid Unicode escape character" +msgstr "无效Unicode转义字符" -#: utils/error/elog.c:2679 -msgid "LOG" -msgstr "日志" +#: scan.l:1381 +msgid "nonstandard use of \\' in a string literal" +msgstr "在字符串常量中以不标准的方法使用\\'" -#: utils/error/elog.c:2682 -msgid "INFO" -msgstr "信息" +#: scan.l:1382 +msgid "" +"Use '' to write quotes in strings, or use the escape string syntax (E'...')." +msgstr "使用''或者转义字符串语法(E'...')将字符串引起来." -#: utils/error/elog.c:2685 -msgid "NOTICE" -msgstr "注意" +#: scan.l:1391 +msgid "nonstandard use of \\\\ in a string literal" +msgstr "在字符串常量中以不标准的方法使用\\\\ " -#: utils/error/elog.c:2688 -msgid "WARNING" -msgstr "警告" +#: scan.l:1392 +msgid "Use the escape string syntax for backslashes, e.g., E'\\\\'." +msgstr "为反斜线使用转移字符串语法,例如.,E'\\\\'." -#: utils/error/elog.c:2691 -msgid "ERROR" -msgstr "错误" +#: scan.l:1406 +msgid "nonstandard use of escape in a string literal" +msgstr "在字符串常量中以不标准的方法使用转义字符" -#: utils/error/elog.c:2694 -msgid "FATAL" -msgstr "致命错误" +#: scan.l:1407 +msgid "Use the escape string syntax for escapes, e.g., E'\\r\\n'." +msgstr "对转移字符使用转义字符串语法,例如 E'\\r\\n'." -#: utils/error/elog.c:2697 -msgid "PANIC" -msgstr "比致命错误还过分的错误" +#: parser/parse_oper.c:221 +msgid "Use an explicit ordering operator or modify the query." +msgstr "使用显式操作符或修改查询" -#: utils/fmgr/dfmgr.c:125 +#: parser/parse_oper.c:476 #, c-format -msgid "could not find function \"%s\" in file \"%s\"" -msgstr "在文件 \"%2$s\" 中无法找到函数 \"%1$s\"" +msgid "operator requires run-time type coercion: %s" +msgstr "操作符需要运行时类型强制: %s" -#: utils/fmgr/dfmgr.c:204 utils/fmgr/dfmgr.c:413 utils/fmgr/dfmgr.c:461 +#: parser/parse_oper.c:710 #, c-format -msgid "could not access file \"%s\": %m" -msgstr "无法访问文件 \"%s\": %m" +msgid "operator is not unique: %s" +msgstr "操作符不是唯一的: %s" -#: utils/fmgr/dfmgr.c:242 -#, c-format -msgid "could not load library \"%s\": %s" -msgstr "无法加载库 \"%s\": %s" +#: parser/parse_oper.c:712 +msgid "" +"Could not choose a best candidate operator. You might need to add explicit " +"type casts." +msgstr "无法选择最佳候选操作符. 您也许需要增加显式的类型转换." -#: utils/fmgr/dfmgr.c:274 +#: parser/parse_oper.c:720 +msgid "" +"No operator matches the given name and argument type(s). You might need to " +"add explicit type casts." +msgstr "没有匹配指定名称和参数类型的操作符. 您也许需要增加明确的类型转换." + +#: parser/parse_oper.c:779 parser/parse_oper.c:893 #, c-format -msgid "incompatible library \"%s\": missing magic block" -msgstr "库\"%s\"不兼容:丢失魔法块" +msgid "operator is only a shell: %s" +msgstr "操作符只是一个shell: %s" -#: utils/fmgr/dfmgr.c:276 -msgid "Extension libraries are required to use the PG_MODULE_MAGIC macro." -msgstr "需要扩展库来使用宏PG_MODULE_MAGIC。" +#: parser/parse_oper.c:881 +msgid "op ANY/ALL (array) requires array on right side" +msgstr "操作符ANY/ALL (array)要求数组在右边" -#: utils/fmgr/dfmgr.c:312 -#, c-format -msgid "incompatible library \"%s\": version mismatch" -msgstr "库 \"%s\"不兼容:版本不匹配" +#: parser/parse_oper.c:923 +msgid "op ANY/ALL (array) requires operator to yield boolean" +msgstr "操作ANY/ALL (array)需要产生布尔值的操作符." -#: utils/fmgr/dfmgr.c:314 +#: parser/parse_oper.c:928 +msgid "op ANY/ALL (array) requires operator not to return a set" +msgstr "操作ANY/ALL (array)需要不返回集合的操作符" + +#: parser/parse_func.c:147 #, c-format -msgid "Server is version %d.%d, library is version %d.%d." -msgstr "服务器版本是%d.%d,库的版本是%d.%d." +msgid "argument name \"%s\" used more than once" +msgstr "参数名称\"%s\"被使用多次" -#: utils/fmgr/dfmgr.c:333 +#: parser/parse_func.c:158 +msgid "positional argument cannot follow named argument" +msgstr "已确定位置的参数不能在已命名参数的后面" + +#: parser/parse_func.c:236 #, c-format -msgid "Server has FUNC_MAX_ARGS = %d, library has %d." -msgstr "服务器有FUNC_MAX_ARGS = %d, 库有%d" +msgid "%s(*) specified, but %s is not an aggregate function" +msgstr "指定了 %s(*), 但是 %s 不是一个聚合函数" -#: utils/fmgr/dfmgr.c:342 +#: parser/parse_func.c:243 #, c-format -msgid "Server has INDEX_MAX_KEYS = %d, library has %d." -msgstr "服务器有INDEX_MAX_KEYS = %d, 库有%d" +msgid "DISTINCT specified, but %s is not an aggregate function" +msgstr "指定了 DISTINCT, 但是 %s 不是一个聚合函数" -#: utils/fmgr/dfmgr.c:351 +#: parser/parse_func.c:249 #, c-format -msgid "Server has NAMEDATALEN = %d, library has %d." -msgstr "服务器有NAMEDATALEN = %d, 库有%d" +msgid "ORDER BY specified, but %s is not an aggregate function" +msgstr "指定了ORDER BY语句, 但是%s不是一个聚合函数" -#: utils/fmgr/dfmgr.c:360 +#: parser/parse_func.c:255 #, c-format -msgid "Server has FLOAT4PASSBYVAL = %s, library has %s." -msgstr "服务器有FLOAT4PASSBYVAL = %s, 库有%s." +msgid "" +"OVER specified, but %s is not a window function nor an aggregate function" +msgstr "指定了OVER关键字,但是%s不是窗口函数或聚合函数" -#: utils/fmgr/dfmgr.c:369 +#: parser/parse_func.c:277 #, c-format -msgid "Server has FLOAT8PASSBYVAL = %s, library has %s." -msgstr "服务器有FLOAT8PASSBYVAL = %s, 库有%s." +msgid "function %s is not unique" +msgstr "函数 %s 不是唯一的" -#: utils/fmgr/dfmgr.c:376 -msgid "Magic block has unexpected length or padding difference." -msgstr "Magic块带有未期望的长度或者填充的方式不同." +#: parser/parse_func.c:280 +msgid "" +"Could not choose a best candidate function. You might need to add explicit " +"type casts." +msgstr "无法选择最佳候选函数. 你也许需要增加明确的类型转换." -#: utils/fmgr/dfmgr.c:379 -#, c-format -msgid "incompatible library \"%s\": magic block mismatch" -msgstr "不兼容的库\"%s\": 魔法块不匹配" +#: 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子句必须出现在所有聚合函数的常规参数的后面." -#: utils/fmgr/dfmgr.c:545 -#, c-format -msgid "access to library \"%s\" is not allowed" -msgstr "不允许对库 \"%s\"进行访问" +#: parser/parse_func.c:302 +msgid "" +"No function matches the given name and argument types. You might need to add " +"explicit type casts." +msgstr "没有匹配指定名称和参数类型的函数. 您也许需要增加明确的类型转换." -#: utils/fmgr/dfmgr.c:572 +#: parser/parse_func.c:412 parser/parse_func.c:478 #, c-format -msgid "invalid macro name in dynamic library path: %s" -msgstr "动态库路径中无效的宏名字: %s" +msgid "%s(*) must be used to call a parameterless aggregate function" +msgstr "%s(*)必须用来调用没有参数的聚合函数" -#: utils/fmgr/dfmgr.c:617 -msgid "zero-length component in parameter \"dynamic_library_path\"" -msgstr "在参数\"dynamic_library_path\"的组件长度为零" +#: parser/parse_func.c:419 +msgid "aggregates cannot return sets" +msgstr "聚合函数可以不返回集合" -#: utils/fmgr/dfmgr.c:636 -msgid "component in parameter \"dynamic_library_path\" is not an absolute path" -msgstr "在参数\"dynamic_library_path\"中的组成部分不是绝对路径." +#: parser/parse_func.c:431 +msgid "aggregates cannot use named arguments" +msgstr "聚合函数不能使用已命名的参数" -#: utils/fmgr/fmgr.c:264 -#, c-format -msgid "internal function \"%s\" is not in internal lookup table" -msgstr "内部函数 \"%s\" 不在内部查找表中" +#: parser/parse_func.c:450 +msgid "window function call requires an OVER clause" +msgstr "在窗口函数调用中需要使用OVER子句" -#: utils/fmgr/fmgr.c:468 -#, c-format -msgid "unrecognized API version %d reported by info function \"%s\"" -msgstr "信息函数\"%2$s\"报告无法识别的API版本%1$d." +#: parser/parse_func.c:468 +msgid "DISTINCT is not implemented for window functions" +msgstr "对于窗口函数,没有实现DISTINCT" -#: utils/fmgr/fmgr.c:839 utils/fmgr/fmgr.c:2071 -#, c-format -msgid "function %u has too many arguments (%d, maximum is %d)" -msgstr "函数 %u 参数太多 (%d, 最大个数为 %d)" +#: parser/parse_func.c:488 +msgid "aggregate ORDER BY is not implemented for window functions" +msgstr "对于窗口函数,没有实现在按照聚合函数进行ORDER BY操作的功能" -#: utils/fmgr/funcapi.c:354 -#, c-format -msgid "" -"could not determine actual result type for function \"%s\" declared to " -"return type %s" -msgstr "无法确定声明为返回类型%2$s的函数\"%1$s\"的实际结果类型" +#: parser/parse_func.c:494 +msgid "window functions cannot return sets" +msgstr "窗口函数不能返回集合" -#: utils/fmgr/funcapi.c:1187 utils/fmgr/funcapi.c:1218 -msgid "number of aliases does not match number of columns" -msgstr "别名个数与字段个数不匹配" +#: parser/parse_func.c:505 +msgid "window functions cannot use named arguments" +msgstr "窗口函数不能使用已命名参数" -#: utils/fmgr/funcapi.c:1212 -msgid "no column alias was provided" -msgstr "没有提供字段别名" +#: parser/parse_func.c:1589 +#, c-format +msgid "aggregate %s(*) does not exist" +msgstr "聚合函数 %s(*) 不存在" -#: utils/fmgr/funcapi.c:1236 -msgid "could not determine row description for function returning record" -msgstr "无法确定函数返回记录的行描述" +#: parser/parse_func.c:1594 +#, c-format +msgid "aggregate %s does not exist" +msgstr "聚合函数 %s(*) 不存在" -#: utils/init/miscinit.c:114 +#: parser/parse_func.c:1613 #, c-format -msgid "could not change directory to \"%s\": %m" -msgstr "无法跳转到目录 \"%s\" 中: %m" +msgid "function %s is not an aggregate" +msgstr "函数 \"%s\" 不是一个聚合函数" -#: utils/init/miscinit.c:441 +#: parser/parse_type.c:83 #, c-format -msgid "role \"%s\" is not permitted to log in" -msgstr "不允许角色\"%s\" 进行登录" +msgid "improper %%TYPE reference (too few dotted names): %s" +msgstr "不合适的 %%TYPE 关联 (名字中点符号太少): %s" -#: utils/init/miscinit.c:459 +#: parser/parse_type.c:105 #, c-format -msgid "too many connections for role \"%s\"" -msgstr "由角色\"%s\"发起的连接太多了" +msgid "improper %%TYPE reference (too many dotted names): %s" +msgstr "不合适的 %%TYPE 关联 (名字中太多点符号): %s" -#: utils/init/miscinit.c:519 -msgid "permission denied to set session authorization" -msgstr "设置会话认证权限不允许" +#: parser/parse_type.c:127 +#, c-format +msgid "type reference %s converted to %s" +msgstr "类型关联 %s 转换为 %s" -#: utils/init/miscinit.c:599 +#: parser/parse_type.c:287 #, c-format -msgid "invalid role OID: %u" -msgstr "无效的角色OID:%u" +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 "类型修改器必须是简单的常量或标示符." -#: utils/init/miscinit.c:731 +#: parser/parse_type.c:641 parser/parse_type.c:740 #, c-format -msgid "could not create lock file \"%s\": %m" -msgstr "无法创建锁文件 \"%s\": %m" +msgid "invalid type name \"%s\"" +msgstr "无效的类型名字 \"%s\"" -#: utils/init/miscinit.c:745 +#: parser/scansup.c:190 #, c-format -msgid "could not open lock file \"%s\": %m" -msgstr "无法打开锁文件 \"%s\": %m" +msgid "identifier \"%s\" will be truncated to \"%s\"" +msgstr "标识符\"%s\"将会被截断为\"%s\"" -#: utils/init/miscinit.c:751 +#: parser/parse_cte.c:42 #, c-format -msgid "could not read lock file \"%s\": %m" -msgstr "无法读取锁文件 \"%s\": %m" +msgid "" +"recursive reference to query \"%s\" must not appear within its non-recursive " +"term" +msgstr "对查询 \"%s\" 的递归引用不能出现在它的非递归形式中" -#: utils/init/miscinit.c:799 +#: parser/parse_cte.c:44 #, c-format -msgid "lock file \"%s\" already exists" -msgstr "锁文件 \"%s\" 已经存在" +msgid "recursive reference to query \"%s\" must not appear within a subquery" +msgstr "对查询 \"%s\" 的递归引用不能出现在子查询中" -#: utils/init/miscinit.c:803 +#: parser/parse_cte.c:46 #, c-format -msgid "Is another postgres (PID %d) running in data directory \"%s\"?" -msgstr "是否其它 postgres (PID %d) 运行在数据目录 \"%s\"?" +msgid "" +"recursive reference to query \"%s\" must not appear within an outer join" +msgstr "对查询 \"%s\" 的递归引用不能出现在外连接中" -#: utils/init/miscinit.c:805 +#: parser/parse_cte.c:48 #, c-format -msgid "Is another postmaster (PID %d) running in data directory \"%s\"?" -msgstr "是否其它 postmaster (PID %d) 运行在数据目录 \"%s\"?" +msgid "recursive reference to query \"%s\" must not appear within INTERSECT" +msgstr "对查询 \"%s\" 的递归引用不能出现在INTERSECT操作中" -#: utils/init/miscinit.c:808 +#: parser/parse_cte.c:50 #, c-format -msgid "Is another postgres (PID %d) using socket file \"%s\"?" -msgstr "是否其它 postgres (PID %d) 使用套接字文件 \"%s\"?" +msgid "recursive reference to query \"%s\" must not appear within EXCEPT" +msgstr "对查询 \"%s\" 的递归引用不能出现在EXCEPT操作中" -#: utils/init/miscinit.c:810 +#: parser/parse_cte.c:132 #, c-format -msgid "Is another postmaster (PID %d) using socket file \"%s\"?" -msgstr "是否其它 postmaster (PID %d) 使用套接字文件 \"%s\"?" +msgid "WITH query name \"%s\" specified more than once" +msgstr "WITH 查询名\"%s\" 被指定多次" + +#: 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子句只能在最上层出现" -#: utils/init/miscinit.c:841 +#: parser/parse_cte.c:320 #, c-format -msgid "pre-existing shared memory block (key %lu, ID %lu) is still in use" -msgstr "先前存在的共享内存块 (key %lu, ID %lu) 仍在使用中" +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 "将非递归术语的输出指派为正确的类型" -#: utils/init/miscinit.c:844 +#: parser/parse_cte.c:331 #, 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\"." +"recursive query \"%s\" column %d has collation \"%s\" in non-recursive term " +"but collation \"%s\" overall" msgstr "" -"如果你确认没有旧的服务器进程在运行, 删除共享内存块,或者只删除文件 \"%s\"." +"递归查询\"%s\"的列%d在非递归术语中应有排序规则\"%s\",但是其排序规则都是%s" + +#: parser/parse_cte.c:335 +msgid "Use the COLLATE clause to set the collation of the non-recursive term." +msgstr "使用COLLATE子句设置非递归项的排序规则." -#: utils/init/miscinit.c:861 +#: parser/parse_cte.c:426 #, c-format -msgid "could not remove old lock file \"%s\": %m" -msgstr "无法删除旧的锁文件 \"%s\": %m" +msgid "WITH query \"%s\" has %d columns available but %d columns specified" +msgstr "WITH 查询\"%s\"有%d个有效字段, 但只指定了%d个字段" -#: utils/init/miscinit.c:863 -msgid "" -"The file seems accidentally left over, but it could not be removed. Please " -"remove the file by hand and try again." -msgstr "文件像是意外留下的, 但是不能删除它. 请手工删除此文件, 然后再重试一次." +#: parser/parse_cte.c:606 +msgid "mutual recursion between WITH items is not implemented" +msgstr "没有实现在WITH成员之间的相互递归引用" -#: utils/init/miscinit.c:885 utils/init/miscinit.c:896 -#: utils/init/miscinit.c:906 +#: parser/parse_cte.c:658 #, c-format -msgid "could not write lock file \"%s\": %m" -msgstr "无法写入锁文件 \"%s\": %m" +msgid "recursive query \"%s\" must not contain data-modifying statements" +msgstr "递归查询 \"%s\" 不能包含数据修改语句" -#: utils/init/miscinit.c:1112 utils/init/miscinit.c:1125 +#: parser/parse_cte.c:666 #, c-format -msgid "\"%s\" is not a valid data directory" -msgstr "\"%s\" 不是一个有效的数据目录" +msgid "" +"recursive query \"%s\" does not have the form non-recursive-term UNION [ALL] " +"recursive-term" +msgstr "递归查询\"%s\"没有非递归术语UNION [ALL]递归术语这种形式" -#: utils/init/miscinit.c:1114 -#, c-format -msgid "File \"%s\" is missing." -msgstr "文件 \"%s\" 丢失." +#: parser/parse_cte.c:710 +msgid "ORDER BY in a recursive query is not implemented" +msgstr "在递归查询中没有实现ORDER BY " -#: utils/init/miscinit.c:1127 -#, c-format -msgid "File \"%s\" does not contain valid data." -msgstr "文件 \"%s\" 没有包含有效数据." +#: parser/parse_cte.c:716 +msgid "OFFSET in a recursive query is not implemented" +msgstr "在递归查询终未实现OFFSET" -#: utils/init/miscinit.c:1129 -msgid "You might need to initdb." -msgstr "您需要初始化数据库 (initdb)." +#: parser/parse_cte.c:722 +msgid "LIMIT in a recursive query is not implemented" +msgstr "在递归查询终的未实现LIMIT" -#: utils/init/miscinit.c:1137 -#, 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 不兼容." +#: parser/parse_cte.c:728 +msgid "FOR UPDATE/SHARE in a recursive query is not implemented" +msgstr "在递归查询中没有实现FOR UPDATE/SHARE " -#: utils/init/miscinit.c:1185 +#: parser/parse_cte.c:785 #, c-format -msgid "invalid list syntax in parameter \"%s\"" -msgstr "在参数\"%s\"中列表语法无效" +msgid "recursive reference to query \"%s\" must not appear more than once" +msgstr "对查询\"%s\"的递归引用不能出现多次" -#: utils/init/miscinit.c:1222 +#: port/win32_sema.c:94 #, c-format -msgid "loaded library \"%s\"" -msgstr "已加载的库 \"%s\"" +msgid "could not create semaphore: error code %d" +msgstr "无法创建信号量: 错误代码 %d" -#: utils/init/postinit.c:229 +#: port/win32_sema.c:165 #, c-format -msgid "replication connection authorized: user=%s host=%s port=%s" -msgstr "复制连接已经认证: 用户=%s 主机=%s 端口=%s" +msgid "could not lock semaphore: error code %d" +msgstr "无法锁定信号灯(semaphore): 错误代码%d" -#: utils/init/postinit.c:235 +#: port/win32_sema.c:178 #, c-format -msgid "replication connection authorized: user=%s host=%s" -msgstr "复制连接已经认证: 用户=%s 主机=%s" +msgid "could not unlock semaphore: error code %d" +msgstr "无法对信号灯(semaphore)解锁: 错误代码 %d" -#: utils/init/postinit.c:241 +#: port/win32_sema.c:207 #, c-format -msgid "connection authorized: user=%s database=%s" -msgstr "联接认证: 主机=%s 数据库=%s" +msgid "could not try-lock semaphore: error code %d" +msgstr "无法进行锁定信号灯(semaphore)的尝试: 错误代码 %d" -#: utils/init/postinit.c:271 +#: port/sysv_shmem.c:147 port/pg_shmem.c:147 #, c-format -msgid "database \"%s\" has disappeared from pg_database" -msgstr "关于数据库\"%s\"的记录在系统目录视图pg_database中不存在" +msgid "could not create shared memory segment: %m" +msgstr "无法创建共享内存段: %m" -#: utils/init/postinit.c:273 +#: port/sysv_shmem.c:148 port/pg_shmem.c:148 #, c-format -msgid "Database OID %u now seems to belong to \"%s\"." -msgstr "数据库OID%u现在属于\"%s\"." +msgid "Failed system call was shmget(key=%lu, size=%lu, 0%o)." +msgstr "系统调用shmget(key=%lu, size=%lu, 0%o) 执行失败." -#: utils/init/postinit.c:293 +#: port/sysv_shmem.c:152 port/pg_shmem.c:152 #, c-format -msgid "database \"%s\" is not currently accepting connections" -msgstr "数据库 \"%s\" 当前不接受联接" +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文档中." -#: utils/init/postinit.c:306 +#: port/sysv_shmem.c:165 port/pg_shmem.c:165 #, c-format -msgid "permission denied for database \"%s\"" -msgstr "访问数据库\"%s\"的权限不够" +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所请求的共享内存段超过了可用内存总量或者交换空间," +"或者超过了内核中设定的SHMALL参数值。您可以减小所请求的值或者重新将内核中的" +"SHMALL参数配置一个较大的值 为减少所请求空间的大小(当前是%lu字节),请减少参数" +"shared_buffers和参数max_connections.\n" +"PostgreSQL文档包含了关于如何配置共享内存的更多信息." -#: utils/init/postinit.c:307 -msgid "User does not have CONNECT privilege." -msgstr "用户没有CONNECT权限." +#: 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参数的值,或者是因为已到达系统最大的共" +"享内存限制.如果无法增加共享内存的上限值,请通过减少参数shared_buffers和参数" +"max_connections来减少PostgreSQL占有的共享内存(当前是%lu字节).\n" +"在PostgreSQL文档中包含了关于如何配置共享内存的更多信息." -# command.c:981 -#: utils/init/postinit.c:324 +#: port/sysv_shmem.c:439 port/pg_shmem.c:439 #, c-format -msgid "too many connections for database \"%s\"" -msgstr "到数据库 \"%s\"的连接太多了" +msgid "could not stat data directory \"%s\": %m" +msgstr "无法取目录 \"%s\" 状态: %m" -#: utils/init/postinit.c:346 utils/init/postinit.c:353 -msgid "database locale is incompatible with operating system" -msgstr "数据库所使用的语言环境和操作系统的不兼容" +#: port/sysv_sema.c:114 port/pg_sema.c:114 +#, c-format +msgid "could not create semaphores: %m" +msgstr "无法创建信号量: %m" -#: utils/init/postinit.c:347 +#: port/sysv_sema.c:115 port/pg_sema.c:115 #, c-format -msgid "" -"The database was initialized with LC_COLLATE \"%s\", which is not " -"recognized by setlocale()." -msgstr "" -"数据库集群是以 LC_COLLATE \"%s\"来初始化的,这个排序规则无法由setlocale()识别" +msgid "Failed system call was semget(%lu, %d, 0%o)." +msgstr "semget(%lu, %d, 0%o) 系统调用失败." -#: utils/init/postinit.c:349 utils/init/postinit.c:356 +#: port/sysv_sema.c:119 port/pg_sema.c:119 msgid "" -"Recreate the database with another locale or install the missing locale." -msgstr "以另外一种语言环境重新创建数据库,或者安装丢失的语言环境." +"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 "" +"这个错误不表示磁盘空间已经用完. 发生的原因有可能超过系统对于最大数量信号灯集" +"合(由参数SEMMNI表示),或者是对系统范围内最大可使用信号灯(由参数SEMMNS表示)的" +"限制.您需要增加这两个系统核心参数的值。另外也可以通过i减小PostgreSQL参数" +"max_connections来减少它所消耗的信号灯总数.\n" +"在PostgreSQL文档中包含了更多关于如何配置PostgreSQL的信息。" -#: utils/init/postinit.c:354 +#: port/sysv_sema.c:146 port/pg_sema.c:146 #, c-format msgid "" -"The database was initialized with LC_CTYPE \"%s\", which is not recognized " -"by setlocale()." +"You possibly need to raise your kernel's SEMVMX value to be at least %d. " +"Look into the PostgreSQL documentation for details." msgstr "" -"数据库集群是带 LC_CTYPE \"%s\" 初始化的, 但此 LC_CTYPE 是不被 setlocale() 认" -"可的." - -#: utils/init/postinit.c:608 -msgid "no roles are defined in this database system" -msgstr "当前数据库系统中没有定义角色" +"你可能需要增加内核的 SEMVMX 值至少为 %d. 详细信息请查找 PostgreSQL 文档." -#: utils/init/postinit.c:609 +#: port/win32_shmem.c:168 port/win32_shmem.c:203 port/win32_shmem.c:224 #, c-format -msgid "You should immediately run CREATE USER \"%s\" SUPERUSER;." -msgstr "您应该立即运行 CREATE USER \"%s\" SUPERUSER;." +msgid "could not create shared memory segment: %lu" +msgstr "无法创建共享内存段: %lu" -#: utils/init/postinit.c:632 -msgid "new replication connections are not allowed during database shutdown" -msgstr "在数据库服务器关闭期间不允许接受新的复制连接" +#: 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/postinit.c:636 -msgid "must be superuser to connect during database shutdown" -msgstr "只有超级用户才能在数据库关闭期间连接数据库" +#: port/win32_shmem.c:193 +msgid "pre-existing shared memory block is still in use" +msgstr "已存在的共享内存块仍在使用中" -#: utils/init/postinit.c:650 +#: port/win32_shmem.c:194 msgid "" -"remaining connection slots are reserved for non-replication superuser " -"connections" -msgstr "已保留的连接位置为执行非复制请求的超级用户预留" - -#: utils/init/postinit.c:665 -msgid "must be superuser to start walsender" -msgstr "只有超级用户才能启动 walsender" +"Check if there are any old server processes still running, and terminate " +"them." +msgstr "检查原先的服务器进程是否仍在运行,如果是的话请终止这些进程." -#: utils/init/postinit.c:725 -#, c-format -msgid "database %u does not exist" -msgstr "数据库%u不存在" +#: port/win32_shmem.c:204 +msgid "Failed system call was DuplicateHandle." +msgstr "系统调用DuplicateHandle执行失败" -#: utils/init/postinit.c:777 -msgid "It seems to have just been dropped or renamed." -msgstr "它已经被删除或者改名了." +#: port/win32_shmem.c:225 +msgid "Failed system call was MapViewOfFileEx." +msgstr "系统调用MapViewOfFileEx执行失败." -#: utils/init/postinit.c:795 +#: port/win32/security.c:43 #, c-format -msgid "The database subdirectory \"%s\" is missing." -msgstr "数据库子目录 \"%s\" 丢失." +msgid "could not open process token: error code %d\n" +msgstr "无法打开进程令牌 (token): 错误码 %d\n" -#: utils/init/postinit.c:800 +#: port/win32/security.c:63 #, c-format -msgid "could not access directory \"%s\": %m" -msgstr "无法访问目录 \"%s\": %m" +msgid "could not get SID for Administrators group: error code %d\n" +msgstr "无法获取管理员组的 SID: 错误码 %d\n" -#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:136 -#: utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c:163 +#: port/win32/security.c:72 #, c-format -msgid "unexpected encoding ID %d for ISO 8859 character sets" -msgstr " ISO 8859 字符集出现非期望的编码ID%d" +msgid "could not get SID for PowerUsers group: error code %d\n" +msgstr "无法获取超级用户组的 SID: 错误码 %d\n" -#: utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:126 -#: utils/mb/conversion_procs/utf8_and_win/utf8_and_win.c:153 +#: port/win32/signal.c:189 +#, fuzzy, c-format +msgid "could not create signal listener pipe for PID %d: error code %d" +msgstr "无法为进程PID %d 创建信号监听管道: 错误码为 %lu" + +#: port/win32/signal.c:269 port/win32/signal.c:301 #, c-format -msgid "unexpected encoding ID %d for WIN character sets" -msgstr "WIN字符集出现非期望的编码ID%d" +msgid "could not create signal listener pipe: error code %d; retrying\n" +msgstr "无法创建信号监听管道: 错误码 %d; 重试\n" -#: utils/mb/conv.c:509 +#: port/win32/signal.c:312 #, c-format -msgid "invalid encoding number: %d" -msgstr "无效编码编号: %d" +msgid "could not create signal dispatch thread: error code %d\n" +msgstr "无法创建信号发送线程: 错误码 %d\n" -#: utils/mb/encnames.c:485 -msgid "encoding name too long" -msgstr "编码名字太长" +#: port/win32/crashdump.c:108 +msgid "could not load dbghelp.dll, cannot write crash dump\n" +msgstr "无法加载dbghelp.dll动态库, 无法生成崩溃转储文件\n" -#: utils/mb/mbutils.c:311 -#, c-format +#: port/win32/crashdump.c:116 msgid "" -"default conversion function for encoding \"%s\" to \"%s\" does not exist" -msgstr "默认的 \"%s\" 到 \"%s\" 的编码转换函数不存在" +"could not load required functions in dbghelp.dll, cannot write crash dump\n" +msgstr "无法从dbghelp.dll动态库中加载所需要的函数, 无法生成崩溃转储文件\n" -#: utils/mb/mbutils.c:335 utils/mb/mbutils.c:607 -#, c-format -msgid "String of %d bytes is too long for encoding conversion." -msgstr "对于编码转化来说带有%d个字节的字符串太长." +#: port/win32/crashdump.c:147 +#, fuzzy, c-format +msgid "could not open crash dump file \"%s\" for writing: error code %u\n" +msgstr "无法打开崩溃转储文件 \"%s\"执行写操作: 错误码 %lu\n" -#: utils/mb/mbutils.c:422 +# command.c:646 +#: port/win32/crashdump.c:154 #, c-format -msgid "invalid source encoding name \"%s\"" -msgstr "无效的源编码名称 \"%s\"" +msgid "wrote crash dump to file \"%s\"\n" +msgstr "生成崩溃转储文件\"%s\"\n" -#: utils/mb/mbutils.c:427 -#, c-format -msgid "invalid destination encoding name \"%s\"" -msgstr "无效的目标编码名称 \"%s\"" +#: port/win32/crashdump.c:156 +#, fuzzy, c-format +msgid "could not write crash dump to file \"%s\": error code %08x\n" +msgstr "无法写入崩溃转储文件 \"%s\": 错误码 %lu\n" + +#: ../port/open.c:113 +msgid "sharing violation" +msgstr "共享冲突" + +#: ../port/open.c:113 +msgid "lock violation" +msgstr "锁冲突" -#: utils/mb/mbutils.c:539 +# fe-lobj.c:400 fe-lobj.c:483 +#: ../port/open.c:112 #, c-format -msgid "invalid byte value for encoding \"%s\": 0x%02x" -msgstr "对于编码\"%s\"的字节值无效: 0x%02x" +msgid "could not open file \"%s\": %s" +msgstr "无法打开文件 \"%s\": %s" -#: utils/mb/mbutils.c:734 -msgid "invalid multibyte character for locale" -msgstr "无效的多字节字符, 对于 locale" +#: ../port/open.c:114 +msgid "Continuing to retry for 30 seconds." +msgstr "继续重新尝试30秒" -#: utils/mb/mbutils.c:735 +#: ../port/open.c:115 msgid "" -"The server's LC_CTYPE locale is probably incompatible with the database " -"encoding." -msgstr "服务器本地 LC_CTYPE 可能与数据库编码不兼容." +"You might have antivirus, backup, or similar software interfering with the " +"database system." +msgstr "您可能有反病毒,备份或类似的软件与数据库系统冲突" -#: utils/mb/wchar.c:1609 +#: ../port/strerror.c:25 #, c-format -msgid "invalid byte sequence for encoding \"%s\": 0x%s" -msgstr "无效的 \"%s\" 编码字节顺序: 0x%s" +msgid "unrecognized error %d" +msgstr "未知的 SSL 错误码: %d" -#: utils/mb/wchar.c:1638 +#: ../port/win32error.c:188 #, c-format -msgid "character 0x%s of encoding \"%s\" has no equivalent in \"%s\"" -msgstr "编码\"%2$s\"的字符0x%1$s在\"%3$s\"没有相对应物" +msgid "mapped win32 error code %lu to %d" +msgstr "将win32错误代码%2$d映射为%1$lu" -#: ../port/chklocale.c:326 ../port/chklocale.c:332 +#: ../port/win32error.c:199 #, c-format -msgid "could not determine encoding for locale \"%s\": codeset is \"%s\"" -msgstr "无法确定语言环境\"%s\"的编码: 代码集是\"%s\"" - -#: ../port/chklocale.c:334 -msgid "Please report this to ." -msgstr "请向 发送报告." +msgid "unrecognized win32 error code: %lu" +msgstr "未知的 win32 错误码: %lu" #: ../port/dirmod.c:75 ../port/dirmod.c:88 ../port/dirmod.c:101 #, c-format @@ -16262,26 +17680,45 @@ msgstr "无法为\"%s\"设置连接点: %s" msgid "could not set junction for \"%s\": %s\n" msgstr "无法为\"%s\"设置连接点: %s\n" -#: ../port/dirmod.c:325 +#: ../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" + +#: ../port/dirmod.c:443 #, c-format msgid "could not open directory \"%s\": %s\n" msgstr "无法打开目录 \"%s\": %s\n" -#: ../port/dirmod.c:362 +#: ../port/dirmod.c:480 #, c-format msgid "could not read directory \"%s\": %s\n" msgstr "无法读取目录 \"%s\": %s\n" -#: ../port/dirmod.c:445 +#: ../port/dirmod.c:563 #, c-format msgid "could not stat file or directory \"%s\": %s\n" msgstr "无法获取文件或目录\"%s\"的状态: %s\n" -#: ../port/dirmod.c:472 ../port/dirmod.c:489 +#: ../port/dirmod.c:590 ../port/dirmod.c:607 #, c-format msgid "could not remove file or directory \"%s\": %s\n" msgstr "无法删除目录 \"%s\": %s\n" +#: ../port/chklocale.c:328 ../port/chklocale.c:334 +#, c-format +msgid "could not determine encoding for locale \"%s\": codeset is \"%s\"" +msgstr "无法确定语言环境\"%s\"的编码: 代码集是\"%s\"" + +#: ../port/chklocale.c:336 +msgid "Please report this to ." +msgstr "请向 发送报告." + #: ../port/exec.c:125 ../port/exec.c:239 ../port/exec.c:282 #, c-format msgid "could not identify current directory: %s" @@ -16314,69 +17751,229 @@ msgstr "无法进入目录 \"%s\"" msgid "could not read symbolic link \"%s\"" msgstr "无法读取符号链接 \"%s\"" -#: ../port/exec.c:516 +#: ../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" msgstr "子进程已退出, 退出码为 %d" -#: ../port/exec.c:520 +#: ../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "子进程被例外(exception) 0x%X 终止" -#: ../port/exec.c:529 +#: ../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "子进程被信号 %s 终止" -#: ../port/exec.c:532 +#: ../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "子进程被信号 %d 终止" -#: ../port/exec.c:536 +#: ../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "子进程已退出, 未知状态 %d" -#: ../port/open.c:113 -msgid "sharing violation" -msgstr "共享冲突" +#~ msgid "restore_command = '%s'" +#~ msgstr "restore_command = '%s'" -#: ../port/open.c:113 -msgid "lock violation" -msgstr "锁冲突" +#~ msgid "recovery_end_command = '%s'" +#~ msgstr "recovery_end_command = '%s'" -# fe-lobj.c:400 fe-lobj.c:483 -#: ../port/open.c:112 -#, c-format -msgid "could not open file \"%s\": %s" -msgstr "无法打开文件 \"%s\": %s" +#~ msgid "archive_cleanup_command = '%s'" +#~ msgstr "archive_cleanup_command = '%s'" -#: ../port/open.c:114 -msgid "Continuing to retry for 30 seconds." -msgstr "继续重新尝试30秒" +#~ msgid "recovery_target_timeline = latest" +#~ msgstr "recovery_target_timeline = latest" -#: ../port/open.c:115 -msgid "" -"You might have antivirus, backup, or similar software interfering with the " -"database system." -msgstr "您可能有反病毒,备份或类似的软件与数据库系统冲突" +#~ msgid "recovery_target_xid = %u" +#~ msgstr "recovery_target_xid = %u" -#: ../port/strerror.c:25 -#, c-format -msgid "unrecognized error %d" -msgstr "未知的 SSL 错误码: %d" +#~ msgid "recovery_target_time = '%s'" +#~ msgstr "recovery_target_time = %s" -#: ../port/win32error.c:184 -#, c-format -msgid "mapped win32 error code %lu to %d" -msgstr "将win32错误代码%2$d映射为%1$lu" +#~ msgid "recovery_target_inclusive = %s" +#~ msgstr "recovery_target_inclusive = %s" -#: ../port/win32error.c:195 -#, c-format -msgid "unrecognized win32 error code: %lu" -msgstr "未知的 win32 错误码: %lu" +#~ msgid "standby_mode = '%s'" +#~ msgstr "standby_mode = '%s'" + +#~ msgid "primary_conninfo = '%s'" +#~ msgstr "primary_conninfo = '%s'" + +#~ msgid "trigger_file = '%s'" +#~ msgstr "trigger_file = '%s'" + +#~ msgid "syntax error in recovery command file: %s" +#~ msgstr "恢复命令文件语法错误: %s" + +#~ msgid "Lines should have the format parameter = 'value'." +#~ msgstr "行格式为 参数 = '值'." + +#~ msgid "array must not contain null values" +#~ msgstr "在数组中不能包含空值" + +#~ 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 "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 "" +#~ "cannot drop \"%s\" because it is being used by active queries in this " +#~ "session" +#~ msgstr "无法删除 \"%s\", 因为它正在被这个会话中处于活动状态的查询使用" + +#~ msgid "EnumValuesCreate() can only set a single OID" +#~ msgstr "函数ValuesCreate()只能设置一个单独的OID" + +#~ msgid "clustering \"%s.%s\"" +#~ msgstr "正在对\"%s.%s\"进行聚簇操作" + +#~ msgid "" +#~ "cannot cluster on index \"%s\" because access method does not handle null " +#~ "values" +#~ msgstr "无法在索引 \"%s\" 上进行聚簇操作,因为访问方法不处理空值" + +#~ 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\" 进行聚簇操作, 因为它的索引访问方法不处理空值" + +#~ msgid "\"%s\" is not a table, view, or composite type" +#~ msgstr "\"%s\" 不是一个表,视图,或者组合类型" + +#~ msgid "must be member of role \"%s\" to comment upon it" +#~ msgstr "只有角色\"%s\" 的成员才能对它进行注释" + +#~ msgid "must be superuser to comment on procedural language" +#~ msgstr "必须成为超级用户才被允许注释过程语言" + +#~ msgid "must be superuser to comment on text search parser" +#~ msgstr "必须成为超级用户才能在文本搜索解析器上进行注释" + +#~ msgid "must be superuser to comment on text search template" +#~ msgstr "必须成为超级用户才能在文本搜索模版上进行注释" + +#~ msgid "function \"%s\" is already in schema \"%s\"" +#~ msgstr "在模式 \"%2$s\" 中函数 \"%1$s\"已经存在" + +#~ msgid "cannot reference temporary table from permanent table constraint" +#~ msgstr "不可以从固定表约束关联临时表" + +#~ msgid "cannot reference permanent table from temporary table constraint" +#~ msgstr "不可以从临时表约束关联固定表" + +#~ msgid "tablespace %u is not empty" +#~ msgstr "表空间 %u 不是空的" + +#~ msgid "database \"%s\" not found" +#~ msgstr "没有找到数据库\"%s\" " + +#~ msgid "invalid list syntax for parameter \"datestyle\"" +#~ msgstr "对于参数\"datestyle\",列表语法无效" + +#~ msgid "unrecognized \"datestyle\" key word: \"%s\"" +#~ msgstr "不认可的 \"datestyle\" 关键字: \"%s\"" + +#~ msgid "invalid interval value for time zone: month not allowed" +#~ msgstr "无效的时区间隔值: 不允许有月份" + +#~ msgid "invalid interval value for time zone: day not allowed" +#~ msgstr "无效的时区间隔值: 不允许有日期" + +#~ msgid "unrecognized time zone name: \"%s\"" +#~ msgstr "不被认可的时区名字: \"%s\"" + +#~ msgid "argument to pg_get_expr() must come from system catalogs" +#~ msgstr "pg_get_expr() 的参数必须来自系统目录视图" + +#~ msgid "cannot change view \"%s\"" +#~ msgstr "不可以改变视图 \"%s\"" + +#~ msgid "could not enable credential reception: %m" +#~ msgstr "无法启用证书接收: %m" + +# 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 +#~ msgid "%s: %s" +#~ msgstr "%s: %s" + +#~ msgid "SSPI error %x" +#~ msgstr "SSPI 错误 %x" + +#~ msgid "%s (%x)" +#~ msgstr "%s (%x)" + +#~ msgid "could not get effective UID from peer credentials: %m" +#~ msgstr "无法从对端证书中获取有效的UID: %m" + +#~ msgid "" +#~ "Ident authentication is not supported on local connections on this " +#~ "platform" +#~ msgstr "在此平台上不支持本地联接的 Ident 认证" + +#~ msgid "hostssl not supported on this platform" +#~ msgstr "在此平台上不支持使用hostssl" + +#~ msgid "consistent state delayed because recovery snapshot incomplete" +#~ msgstr "一致性状态延迟,因为恢复快照不完整" + +#~ msgid "SELECT FOR UPDATE/SHARE cannot be applied to NEW or OLD" +#~ msgstr "SELECT FOR UPDATE/SHARE不适用于NEW或OLD子句" + +#~ msgid "could not create log file \"%s\": %m" +#~ msgstr "无法创建日志文件 \"%s\": %m" + +#~ msgid "could not open new log file \"%s\": %m" +#~ msgstr "无法打开新的日志文件 \"%s\": %m" + +#~ msgid "Write-Ahead Log / Streaming Replication" +#~ msgstr "Write-Ahead 日志 / 流复制" + +#~ msgid "Sets immediate fsync at commit." +#~ msgstr "设置在提交时立即执行函数fsync" + +#~ msgid "invalid list syntax for parameter \"log_destination\"" +#~ msgstr "无效的 \"log_destination\" 参数列表语法" + +#~ msgid "unrecognized \"log_destination\" key word: \"%s\"" +#~ msgstr "不认可的 \"log_destination\" 关键字: \"%s\"" + +#~ msgid "replication connection authorized: user=%s host=%s port=%s" +#~ msgstr "复制连接已经认证: 用户=%s 主机=%s 端口=%s" #~ msgid "" #~ "%s is the PostgreSQL stand-alone backend. It is not\n" @@ -16505,10 +18102,6 @@ msgstr "未知的 win32 错误码: %lu" #~ msgid "function \"%s\" called with wrong number of trigger arguments" #~ msgstr "函数 \"%s\" 调用了错误的触发器参数个数" -#~ msgid "" -#~ "table \"%s\" does not have column \"%s\" referenced by constraint \"%s\"" -#~ msgstr "表 \"%1$s\" 没有通过约束 \"%3$s\" 的字段 \"%2$s\" 关联" - #~ msgid "type \"double precision\" value out of range: overflow" #~ msgstr "类型 \"双精度 (double precision)\" 值超出范围: 上溢" @@ -16630,9 +18223,6 @@ msgstr "未知的 win32 错误码: %lu" #~ msgid "\"%s\" is a special relation" #~ msgstr "\"%s\" 为特别关系" -#~ msgid "variable-length rtree keys are not supported" -#~ msgstr "不支持变长 rtree 键" - #~ msgid "could not read from log file %u, segment %u at offset %u: %m" #~ msgstr "无法从日志文件 %u 读取, 段 %u 偏移量 %u: %m" @@ -16685,41 +18275,9 @@ msgstr "未知的 win32 错误码: %lu" #~ "%d." #~ msgstr "在数据库 %4$u 的关系 %3$u 上进程 %1$d 等待进程 %5$d 阻塞的 %2$s." -#, fuzzy -#~ msgid "could not open relation %u/%u/%u: %m" -#~ msgstr "无法关闭关系 %u/%u/%u: %m" - -#, fuzzy -#~ msgid "could not fsync segment %u of relation %u/%u/%u: %m" -#~ msgstr "无法对关系%2$s的段%1$u执行fsync操作: %3m" - -#, fuzzy -#~ msgid "could not open segment %u of relation %u/%u/%u (target block %u): %m" -#~ msgstr "无法打开关系%2$s的段%1$u(目标块%3$u): %4$m" - #~ msgid "could not close relation %u/%u/%u: %m" #~ msgstr "无法关闭关系 %u/%u/%u: %m" -#, fuzzy -#~ msgid "could not create relation %u/%u/%u: %m" -#~ msgstr "无法关闭关系 %u/%u/%u: %m" - -#, fuzzy -#~ msgid "could not remove relation %u/%u/%u: %m" -#~ msgstr "无法关闭关系 %u/%u/%u: %m" - -#, fuzzy -#~ msgid "could not extend relation %u/%u/%u: %m" -#~ msgstr "无法同步关系 %u/%u/%u: %m" - -#, fuzzy -#~ msgid "could not read block %u of relation %u/%u/%u: %m" -#~ msgstr "无法读取关系%2$s的块 %1$u: %3$m" - -#, fuzzy -#~ msgid "could not write block %u of relation %u/%u/%u: %m" -#~ msgstr "无法对关系%2$s的块 %1$u进行写操作: %3$m" - #~ msgid "could not count blocks of relation %u/%u/%u: %m" #~ msgstr "无法为关系 %u/%u/%u 计算块数: %m" @@ -16816,17 +18374,6 @@ msgstr "未知的 win32 错误码: %lu" #~ msgid "table \"%s\" already has a TOAST table" #~ msgstr "表 \"%s\" 已经是一个 TOAST 表" -#~ msgid "table \"%s\" does not need a TOAST table" -#~ msgstr "表 \"%s\" 不需要一个 TOAST 表" - -#, fuzzy -#~ msgid "invalid group name \"%s\"" -#~ msgstr "无效角色名称 \"%s\"" - -#, fuzzy -#~ msgid "invalid user password \"%s\"" -#~ msgstr "无效角色口令 \"%s\"" - #~ msgid "user name \"%s\" is reserved" #~ msgstr "用户名 \"%s\" 被保留了" @@ -16893,10 +18440,6 @@ msgstr "未知的 win32 错误码: %lu" #~ msgid "syntax error: cannot back up" #~ msgstr "语法错误: 无法支持/倒退" -#, fuzzy -#~ msgid "CREATE TABLE AS may not specify INTO" -#~ msgstr "在CREATE TABLE AS中不可指定 INTO" - #~ msgid "CREATE FUNCTION / OUT parameters are not implemented" #~ msgstr "CREATE FUNCTION / OUT 参数未实现" @@ -16947,10 +18490,6 @@ msgstr "未知的 win32 错误码: %lu" #~ msgid "function %s(%s) is not an aggregate" #~ msgstr "函数 %s(%s) 不是一个聚合函数" -#, fuzzy -#~ msgid "SELECT FOR UPDATE is not supported for inheritance queries" -#~ msgstr "在子查询中不允许使用SELECT FOR UPDATE/SHARE" - #~ msgid "could not identify an equality operator for types %s and %s" #~ msgstr "无法为类型 %s 和 %s 确认一个等号操作符" @@ -16958,10 +18497,6 @@ msgstr "未知的 win32 错误码: %lu" #~ "equality operator for types %s and %s should be merge-joinable, but isn't" #~ msgstr "类型 %s 和 %s 的等号操作符应该为可合并联合的, 但这个不是" -#, fuzzy -#~ msgid "SELECT FOR UPDATE is not allowed in subqueries" -#~ msgstr "在子查询中不允许使用SELECT FOR UPDATE/SHARE" - #~ msgid "cannot open SELECT INTO query as cursor" #~ msgstr "无法作为游标打开 SELECT INTO 查询" @@ -17138,11 +18673,6 @@ msgstr "未知的 win32 错误码: %lu" #~ msgstr "" #~ "关系 \"%s\" TID %u/%u: DeleteTransactionInProgress %u --- 不能缩小关系" -#~ msgid "" -#~ "\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages" -#~ msgstr "" -#~ "\"%1$s\": 在%4$u个页中找到%2$.0f个可删除行版本,%3$.0f不可删除的行版本." - #~ msgid "" #~ "%.0f dead row versions cannot be removed yet.\n" #~ "Nonremovable row versions range from %lu to %lu bytes long.\n" diff --git a/src/backend/po/zh_TW.po b/src/backend/po/zh_TW.po index 22a10e4d1a..5110ab9d0c 100644 --- a/src/backend/po/zh_TW.po +++ b/src/backend/po/zh_TW.po @@ -12,7 +12,7 @@ msgstr "" "PO-Revision-Date: 2011-05-16 13:37+0800\n" "Last-Translator: Zhenbang Wei \n" "Language-Team: EnterpriseDB translation team \n" -"Language: \n" +"Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -16909,7 +16909,6 @@ msgstr "interval 欄位值超出範圍: \"%s\"" msgid "time zone displacement out of range: \"%s\"" msgstr "時區位移超出範圍:\"%s\"" -# translator: first %s is inet or cidr # translator: first %s is inet or cidr # utils/adt/datetime.c:3342 utils/adt/network.c:93 #. translator: first %s is inet or cidr diff --git a/src/backend/port/ipc_test.c b/src/backend/port/ipc_test.c index b4bcf40a7a..88b1b57549 100644 --- a/src/backend/port/ipc_test.c +++ b/src/backend/port/ipc_test.c @@ -303,7 +303,7 @@ main(int argc, char **argv) proc_exit(1); } - printf("forked child pid %d OK\n", cpid); + printf("forked child PID %d OK\n", cpid); if (storage->flag != 1234) printf("Wrong value found in shared memory!\n"); diff --git a/src/backend/port/pipe.c b/src/backend/port/pipe.c index b86a53ad34..b249e95910 100644 --- a/src/backend/port/pipe.c +++ b/src/backend/port/pipe.c @@ -29,7 +29,7 @@ pgpipe(int handles[2]) if ((s = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { - ereport(LOG, (errmsg_internal("pgpipe failed to create socket: %ui", WSAGetLastError()))); + ereport(LOG, (errmsg_internal("pgpipe could not create socket: %ui", WSAGetLastError()))); return -1; } @@ -39,38 +39,38 @@ pgpipe(int handles[2]) serv_addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); if (bind(s, (SOCKADDR *) &serv_addr, len) == SOCKET_ERROR) { - ereport(LOG, (errmsg_internal("pgpipe failed to bind: %ui", WSAGetLastError()))); + ereport(LOG, (errmsg_internal("pgpipe could not bind: %ui", WSAGetLastError()))); closesocket(s); return -1; } if (listen(s, 1) == SOCKET_ERROR) { - ereport(LOG, (errmsg_internal("pgpipe failed to listen: %ui", WSAGetLastError()))); + ereport(LOG, (errmsg_internal("pgpipe could not listen: %ui", WSAGetLastError()))); closesocket(s); return -1; } if (getsockname(s, (SOCKADDR *) &serv_addr, &len) == SOCKET_ERROR) { - ereport(LOG, (errmsg_internal("pgpipe failed to getsockname: %ui", WSAGetLastError()))); + ereport(LOG, (errmsg_internal("pgpipe could not getsockname: %ui", WSAGetLastError()))); closesocket(s); return -1; } if ((handles[1] = socket(PF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { - ereport(LOG, (errmsg_internal("pgpipe failed to create socket 2: %ui", WSAGetLastError()))); + ereport(LOG, (errmsg_internal("pgpipe could not create socket 2: %ui", WSAGetLastError()))); closesocket(s); return -1; } if (connect(handles[1], (SOCKADDR *) &serv_addr, len) == SOCKET_ERROR) { - ereport(LOG, (errmsg_internal("pgpipe failed to connect socket: %ui", WSAGetLastError()))); + ereport(LOG, (errmsg_internal("pgpipe could not connect socket: %ui", WSAGetLastError()))); closesocket(s); return -1; } if ((handles[0] = accept(s, (SOCKADDR *) &serv_addr, &len)) == INVALID_SOCKET) { - ereport(LOG, (errmsg_internal("pgpipe failed to accept socket: %ui", WSAGetLastError()))); + ereport(LOG, (errmsg_internal("pgpipe could not accept socket: %ui", WSAGetLastError()))); closesocket(handles[1]); handles[1] = INVALID_SOCKET; closesocket(s); diff --git a/src/backend/port/sysv_sema.c b/src/backend/port/sysv_sema.c index 2bc4b49611..7b67186926 100644 --- a/src/backend/port/sysv_sema.c +++ b/src/backend/port/sysv_sema.c @@ -94,15 +94,17 @@ InternalIpcSemaphoreCreate(IpcSemaphoreKey semKey, int numSems) if (semId < 0) { + int saved_errno = errno; + /* * Fail quietly if error indicates a collision with existing set. One * would expect EEXIST, given that we said IPC_EXCL, but perhaps we * could get a permission violation instead? Also, EIDRM might occur * if an old set is slated for destruction but not gone yet. */ - if (errno == EEXIST || errno == EACCES + if (saved_errno == EEXIST || saved_errno == EACCES #ifdef EIDRM - || errno == EIDRM + || saved_errno == EIDRM #endif ) return -1; @@ -115,7 +117,7 @@ InternalIpcSemaphoreCreate(IpcSemaphoreKey semKey, int numSems) errdetail("Failed system call was semget(%lu, %d, 0%o).", (unsigned long) semKey, numSems, IPC_CREAT | IPC_EXCL | IPCProtection), - (errno == ENOSPC) ? + (saved_errno == ENOSPC) ? errhint("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 " @@ -139,13 +141,17 @@ IpcSemaphoreInitialize(IpcSemaphoreId semId, int semNum, int value) semun.val = value; if (semctl(semId, semNum, SETVAL, semun) < 0) + { + int saved_errno = errno; + ereport(FATAL, (errmsg_internal("semctl(%d, %d, SETVAL, %d) failed: %m", semId, semNum, value), - (errno == ERANGE) ? + (saved_errno == ERANGE) ? errhint("You possibly need to raise your kernel's SEMVMX value to be at least " "%d. Look into the PostgreSQL documentation for details.", value) : 0)); + } } /* diff --git a/src/backend/port/sysv_shmem.c b/src/backend/port/sysv_shmem.c index 285d5f20ae..3840ad7b1b 100644 --- a/src/backend/port/sysv_shmem.c +++ b/src/backend/port/sysv_shmem.c @@ -79,15 +79,17 @@ InternalIpcMemoryCreate(IpcMemoryKey memKey, Size size) if (shmid < 0) { + int shmget_errno = errno; + /* * Fail quietly if error indicates a collision with existing segment. * One would expect EEXIST, given that we said IPC_EXCL, but perhaps * we could get a permission violation instead? Also, EIDRM might * occur if an old seg is slated for destruction but not gone yet. */ - if (errno == EEXIST || errno == EACCES + if (shmget_errno == EEXIST || shmget_errno == EACCES #ifdef EIDRM - || errno == EIDRM + || shmget_errno == EIDRM #endif ) return NULL; @@ -101,10 +103,8 @@ InternalIpcMemoryCreate(IpcMemoryKey memKey, Size size) * against SHMMIN in the preexisting-segment case, so we will not get * EINVAL a second time if there is such a segment. */ - if (errno == EINVAL) + if (shmget_errno == EINVAL) { - int save_errno = errno; - shmid = shmget(memKey, 0, IPC_CREAT | IPC_EXCL | IPCProtection); if (shmid < 0) @@ -130,8 +130,6 @@ InternalIpcMemoryCreate(IpcMemoryKey memKey, Size size) elog(LOG, "shmctl(%d, %d, 0) failed: %m", (int) shmid, IPC_RMID); } - - errno = save_errno; } /* @@ -143,12 +141,13 @@ InternalIpcMemoryCreate(IpcMemoryKey memKey, Size size) * it should be. SHMMNI violation is ENOSPC, per spec. Just plain * not-enough-RAM is ENOMEM. */ + errno = shmget_errno; ereport(FATAL, (errmsg("could not create shared memory segment: %m"), errdetail("Failed system call was shmget(key=%lu, size=%lu, 0%o).", (unsigned long) memKey, (unsigned long) size, IPC_CREAT | IPC_EXCL | IPCProtection), - (errno == EINVAL) ? + (shmget_errno == EINVAL) ? errhint("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. " @@ -161,7 +160,7 @@ InternalIpcMemoryCreate(IpcMemoryKey memKey, Size size) "The PostgreSQL documentation contains more information about shared " "memory configuration.", (unsigned long) size) : 0, - (errno == ENOMEM) ? + (shmget_errno == ENOMEM) ? errhint("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 " @@ -172,7 +171,7 @@ InternalIpcMemoryCreate(IpcMemoryKey memKey, Size size) "The PostgreSQL documentation contains more information about shared " "memory configuration.", (unsigned long) size) : 0, - (errno == ENOSPC) ? + (shmget_errno == ENOSPC) ? errhint("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, " diff --git a/src/backend/port/unix_latch.c b/src/backend/port/unix_latch.c index 6dae7c94c0..caedafe7c0 100644 --- a/src/backend/port/unix_latch.c +++ b/src/backend/port/unix_latch.c @@ -3,60 +3,6 @@ * unix_latch.c * Routines for inter-process latches * - * A latch is a boolean variable, with operations that let you to sleep - * until it is set. A latch can be set from another process, or a signal - * handler within the same process. - * - * The latch interface is a reliable replacement for the common pattern of - * using pg_usleep() or select() to wait until a signal arrives, where the - * signal handler sets a global variable. Because on some platforms, an - * incoming signal doesn't interrupt sleep, and even on platforms where it - * does there is a race condition if the signal arrives just before - * entering the sleep, the common pattern must periodically wake up and - * poll the global variable. pselect() system call was invented to solve - * the problem, but it is not portable enough. Latches are designed to - * overcome these limitations, allowing you to sleep without polling and - * ensuring a quick response to signals from other processes. - * - * There are two kinds of latches: local and shared. A local latch is - * initialized by InitLatch, and can only be set from the same process. - * A local latch can be used to wait for a signal to arrive, by calling - * SetLatch in the signal handler. A shared latch resides in shared memory, - * and must be initialized at postmaster startup by InitSharedLatch. Before - * a shared latch can be waited on, it must be associated with a process - * with OwnLatch. Only the process owning the latch can wait on it, but any - * process can set it. - * - * There are three basic operations on a latch: - * - * SetLatch - Sets the latch - * ResetLatch - Clears the latch, allowing it to be set again - * WaitLatch - Waits for the latch to become set - * - * The correct pattern to wait for an event is: - * - * for (;;) - * { - * ResetLatch(); - * if (work to do) - * Do Stuff(); - * - * WaitLatch(); - * } - * - * It's important to reset the latch *before* checking if there's work to - * do. Otherwise, if someone sets the latch between the check and the - * ResetLatch call, you will miss it and Wait will block. - * - * To wake up the waiter, you must first set a global flag or something - * else that the main loop tests in the "if (work to do)" part, and call - * SetLatch *after* that. SetLatch is designed to return quickly if the - * latch is already set. - * - * - * Implementation - * -------------- - * * The Unix implementation uses the so-called self-pipe trick to overcome * the race condition involved with select() and setting a global flag * in the signal handler. When a latch is set and the current process @@ -65,8 +11,8 @@ * interrupt select() on all platforms, and even on platforms where it * does, a signal that arrives just before the select() call does not * prevent the select() from entering sleep. An incoming byte on a pipe - * however reliably interrupts the sleep, and makes select() to return - * immediately if the signal arrives just before select() begins. + * however reliably interrupts the sleep, and causes select() to return + * immediately even if the signal arrives before select() begins. * * When SetLatch is called from the same process that owns the latch, * SetLatch writes the byte directly to the pipe. If it's owned by another @@ -99,25 +45,54 @@ /* Are we currently in WaitLatch? The signal handler would like to know. */ static volatile sig_atomic_t waiting = false; -/* Read and write end of the self-pipe */ +/* Read and write ends of the self-pipe */ static int selfpipe_readfd = -1; static int selfpipe_writefd = -1; -/* private function prototypes */ -static void initSelfPipe(void); -static void drainSelfPipe(void); +/* Private function prototypes */ static void sendSelfPipeByte(void); +static void drainSelfPipe(void); +/* + * Initialize the process-local latch infrastructure. + * + * This must be called once during startup of any process that can wait on + * latches, before it issues any InitLatch() or OwnLatch() calls. + */ +void +InitializeLatchSupport(void) +{ + int pipefd[2]; + + Assert(selfpipe_readfd == -1); + + /* + * Set up the self-pipe that allows a signal handler to wake up the + * select() in WaitLatch. Make the write-end non-blocking, so that + * SetLatch won't block if the event has already been set many times + * filling the kernel buffer. Make the read-end non-blocking too, so that + * we can easily clear the pipe by reading until EAGAIN or EWOULDBLOCK. + */ + if (pipe(pipefd) < 0) + elog(FATAL, "pipe() failed: %m"); + if (fcntl(pipefd[0], F_SETFL, O_NONBLOCK) < 0) + elog(FATAL, "fcntl() failed on read-end of self-pipe: %m"); + if (fcntl(pipefd[1], F_SETFL, O_NONBLOCK) < 0) + elog(FATAL, "fcntl() failed on write-end of self-pipe: %m"); + + selfpipe_readfd = pipefd[0]; + selfpipe_writefd = pipefd[1]; +} + /* * Initialize a backend-local latch. */ void InitLatch(volatile Latch *latch) { - /* Initialize the self pipe if this is our first latch in the process */ - if (selfpipe_readfd == -1) - initSelfPipe(); + /* Assert InitializeLatchSupport has been called in this process */ + Assert(selfpipe_readfd >= 0); latch->is_set = false; latch->owner_pid = MyProcPid; @@ -126,13 +101,14 @@ InitLatch(volatile Latch *latch) /* * Initialize a shared latch that can be set from other processes. The latch - * is initially owned by no-one, use OwnLatch to associate it with the + * is initially owned by no-one; use OwnLatch to associate it with the * current process. * * InitSharedLatch needs to be called in postmaster before forking child * processes, usually right after allocating the shared memory block - * containing the latch with ShmemInitStruct. The Unix implementation - * doesn't actually require that, but the Windows one does. + * containing the latch with ShmemInitStruct. (The Unix implementation + * doesn't actually require that, but the Windows one does.) Because of + * this restriction, we have no concurrency issues to worry about here. */ void InitSharedLatch(volatile Latch *latch) @@ -144,23 +120,29 @@ InitSharedLatch(volatile Latch *latch) /* * Associate a shared latch with the current process, allowing it to - * wait on it. + * wait on the latch. + * + * Although there is a sanity check for latch-already-owned, we don't do + * any sort of locking here, meaning that we could fail to detect the error + * if two processes try to own the same latch at about the same time. If + * there is any risk of that, caller must provide an interlock to prevent it. * - * Make sure that latch_sigusr1_handler() is called from the SIGUSR1 signal - * handler, as shared latches use SIGUSR1 to for inter-process communication. + * In any process that calls OwnLatch(), make sure that + * latch_sigusr1_handler() is called from the SIGUSR1 signal handler, + * as shared latches use SIGUSR1 for inter-process communication. */ void OwnLatch(volatile Latch *latch) { - Assert(latch->is_shared); + /* Assert InitializeLatchSupport has been called in this process */ + Assert(selfpipe_readfd >= 0); - /* Initialize the self pipe if this is our first latch in the process */ - if (selfpipe_readfd == -1) - initSelfPipe(); + Assert(latch->is_shared); /* sanity check */ if (latch->owner_pid != 0) elog(ERROR, "latch already owned"); + latch->owner_pid = MyProcPid; } @@ -172,6 +154,7 @@ DisownLatch(volatile Latch *latch) { Assert(latch->is_shared); Assert(latch->owner_pid == MyProcPid); + latch->owner_pid = 0; } @@ -179,10 +162,13 @@ DisownLatch(volatile Latch *latch) * Wait for given latch to be set or until timeout is exceeded. * If the latch is already set, the function returns immediately. * - * The 'timeout' is given in microseconds, and -1 means wait forever. - * On some platforms, signals cause the timeout to be restarted, so beware - * that the function can sleep for several times longer than the specified - * timeout. + * The 'timeout' is given in milliseconds, and -1 means wait forever. + * On some platforms, signals do not interrupt the wait, or even + * cause the timeout to be restarted, so beware that the function can sleep + * for several times longer than the requested timeout. However, this + * difficulty is not so great as it seems, because the signal handlers for any + * signals that the caller should respond to ought to be programmed to end the + * wait by calling SetLatch. Ideally, the timeout parameter is vestigial. * * The latch must be owned by the current process, ie. it must be a * backend-local latch initialized with InitLatch, or a shared latch @@ -218,8 +204,8 @@ WaitLatchOrSocket(volatile Latch *latch, pgsocket sock, bool forRead, /* Initialize timeout */ if (timeout >= 0) { - tv.tv_sec = timeout / 1000000L; - tv.tv_usec = timeout % 1000000L; + tv.tv_sec = timeout / 1000L; + tv.tv_usec = (timeout % 1000L) * 1000L; tvp = &tv; } @@ -229,21 +215,31 @@ WaitLatchOrSocket(volatile Latch *latch, pgsocket sock, bool forRead, int hifd; /* - * Clear the pipe, and check if the latch is set already. If someone + * Clear the pipe, then check if the latch is set already. If someone * sets the latch between this and the select() below, the setter will * write a byte to the pipe (or signal us and the signal handler will * do that), and the select() will return immediately. + * + * Note: we assume that the kernel calls involved in drainSelfPipe() + * and SetLatch() will provide adequate synchronization on machines + * with weak memory ordering, so that we cannot miss seeing is_set + * if the signal byte is already in the pipe when we drain it. */ drainSelfPipe(); + if (latch->is_set) { result = 1; break; } + /* Must wait ... set up the event masks for select() */ FD_ZERO(&input_mask); + FD_ZERO(&output_mask); + FD_SET(selfpipe_readfd, &input_mask); hifd = selfpipe_readfd; + if (sock != PGINVALID_SOCKET && forRead) { FD_SET(sock, &input_mask); @@ -251,7 +247,6 @@ WaitLatchOrSocket(volatile Latch *latch, pgsocket sock, bool forRead, hifd = sock; } - FD_ZERO(&output_mask); if (sock != PGINVALID_SOCKET && forWrite) { FD_SET(sock, &output_mask); @@ -264,6 +259,7 @@ WaitLatchOrSocket(volatile Latch *latch, pgsocket sock, bool forRead, { if (errno == EINTR) continue; + waiting = false; ereport(ERROR, (errcode_for_socket_access(), errmsg("select() failed: %m"))); @@ -288,14 +284,27 @@ WaitLatchOrSocket(volatile Latch *latch, pgsocket sock, bool forRead, } /* - * Sets a latch and wakes up anyone waiting on it. Returns quickly if the - * latch is already set. + * Sets a latch and wakes up anyone waiting on it. + * + * This is cheap if the latch is already set, otherwise not so much. + * + * NB: when calling this in a signal handler, be sure to save and restore + * errno around it. (That's standard practice in most signal handlers, of + * course, but we used to omit it in handlers that only set a flag.) */ void SetLatch(volatile Latch *latch) { pid_t owner_pid; + /* + * XXX there really ought to be a memory barrier operation right here, + * to ensure that any flag variables we might have changed get flushed + * to main memory before we check/set is_set. Without that, we have to + * require that callers provide their own synchronization for machines + * with weak memory ordering (see latch.h). + */ + /* Quick exit if already set */ if (latch->is_set) return; @@ -307,19 +316,30 @@ SetLatch(volatile Latch *latch) * we're in a signal handler. We use the self-pipe to wake up the select() * in that case. If it's another process, send a signal. * - * Fetch owner_pid only once, in case the owner simultaneously disowns the - * latch and clears owner_pid. XXX: This assumes that pid_t is atomic, - * which isn't guaranteed to be true! In practice, the effective range of - * pid_t fits in a 32 bit integer, and so should be atomic. In the worst - * case, we might end up signaling wrong process if the right one disowns - * the latch just as we fetch owner_pid. Even then, you're very unlucky if - * a process with that bogus pid exists. + * Fetch owner_pid only once, in case the latch is concurrently getting + * owned or disowned. XXX: This assumes that pid_t is atomic, which isn't + * guaranteed to be true! In practice, the effective range of pid_t fits + * in a 32 bit integer, and so should be atomic. In the worst case, we + * might end up signaling the wrong process. Even then, you're very + * unlucky if a process with that bogus pid exists and belongs to + * Postgres; and PG database processes should handle excess SIGUSR1 + * interrupts without a problem anyhow. + * + * Another sort of race condition that's possible here is for a new process + * to own the latch immediately after we look, so we don't signal it. + * This is okay so long as all callers of ResetLatch/WaitLatch follow the + * standard coding convention of waiting at the bottom of their loops, + * not the top, so that they'll correctly process latch-setting events that + * happen before they enter the loop. */ owner_pid = latch->owner_pid; if (owner_pid == 0) return; else if (owner_pid == MyProcPid) - sendSelfPipeByte(); + { + if (waiting) + sendSelfPipeByte(); + } else kill(owner_pid, SIGUSR1); } @@ -335,11 +355,27 @@ ResetLatch(volatile Latch *latch) Assert(latch->owner_pid == MyProcPid); latch->is_set = false; + + /* + * XXX there really ought to be a memory barrier operation right here, to + * ensure that the write to is_set gets flushed to main memory before we + * examine any flag variables. Otherwise a concurrent SetLatch might + * falsely conclude that it needn't signal us, even though we have missed + * seeing some flag updates that SetLatch was supposed to inform us of. + * For the moment, callers must supply their own synchronization of flag + * variables (see latch.h). + */ } /* - * SetLatch uses SIGUSR1 to wake up the process waiting on the latch. Wake - * up WaitLatch. + * SetLatch uses SIGUSR1 to wake up the process waiting on the latch. + * + * Wake up WaitLatch, if we're waiting. (We might not be, since SIGUSR1 is + * overloaded for multiple purposes; or we might not have reached WaitLatch + * yet, in which case we don't need to fill the pipe either.) + * + * NB: when calling this in a signal handler, be sure to save and restore + * errno around it. */ void latch_sigusr1_handler(void) @@ -348,30 +384,6 @@ latch_sigusr1_handler(void) sendSelfPipeByte(); } -/* initialize the self-pipe */ -static void -initSelfPipe(void) -{ - int pipefd[2]; - - /* - * Set up the self-pipe that allows a signal handler to wake up the - * select() in WaitLatch. Make the write-end non-blocking, so that - * SetLatch won't block if the event has already been set many times - * filling the kernel buffer. Make the read-end non-blocking too, so that - * we can easily clear the pipe by reading until EAGAIN or EWOULDBLOCK. - */ - if (pipe(pipefd) < 0) - elog(FATAL, "pipe() failed: %m"); - if (fcntl(pipefd[0], F_SETFL, O_NONBLOCK) < 0) - elog(FATAL, "fcntl() failed on read-end of self-pipe: %m"); - if (fcntl(pipefd[1], F_SETFL, O_NONBLOCK) < 0) - elog(FATAL, "fcntl() failed on write-end of self-pipe: %m"); - - selfpipe_readfd = pipefd[0]; - selfpipe_writefd = pipefd[1]; -} - /* Send one byte to the self-pipe, to wake up WaitLatch */ static void sendSelfPipeByte(void) @@ -403,13 +415,19 @@ sendSelfPipeByte(void) } } -/* Read all available data from the self-pipe */ +/* + * Read all available data from the self-pipe + * + * Note: this is only called when waiting = true. If it fails and doesn't + * return, it must reset that flag first (though ideally, this will never + * happen). + */ static void drainSelfPipe(void) { /* * There shouldn't normally be more than one byte in the pipe, or maybe a - * few more if multiple processes run SetLatch at the same instant. + * few bytes if multiple processes run SetLatch at the same instant. */ char buf[16]; int rc; @@ -424,9 +442,21 @@ drainSelfPipe(void) else if (errno == EINTR) continue; /* retry */ else + { + waiting = false; elog(ERROR, "read() on self-pipe failed: %m"); + } } else if (rc == 0) + { + waiting = false; elog(ERROR, "unexpected EOF on self-pipe"); + } + else if (rc < sizeof(buf)) + { + /* we successfully drained the pipe; no need to read() again */ + break; + } + /* else buffer wasn't big enough, so read again */ } } diff --git a/src/backend/port/win32/crashdump.c b/src/backend/port/win32/crashdump.c index 119dd076ca..b905206a29 100644 --- a/src/backend/port/win32/crashdump.c +++ b/src/backend/port/win32/crashdump.c @@ -105,7 +105,7 @@ crashDumpHandler(struct _EXCEPTION_POINTERS * pExceptionInfo) hDll = LoadLibrary("dbghelp.dll"); if (hDll == NULL) { - write_stderr("could not load dbghelp.dll, cannot write crashdump\n"); + write_stderr("could not load dbghelp.dll, cannot write crash dump\n"); return EXCEPTION_CONTINUE_SEARCH; } @@ -113,7 +113,7 @@ crashDumpHandler(struct _EXCEPTION_POINTERS * pExceptionInfo) if (pDump == NULL) { - write_stderr("could not load required functions in dbghelp.dll, cannot write crashdump\n"); + write_stderr("could not load required functions in dbghelp.dll, cannot write crash dump\n"); return EXCEPTION_CONTINUE_SEARCH; } @@ -144,16 +144,16 @@ crashDumpHandler(struct _EXCEPTION_POINTERS * pExceptionInfo) NULL); if (dumpFile == INVALID_HANDLE_VALUE) { - write_stderr("could not open crash dump file %s for writing: error code %u\n", + write_stderr("could not open crash dump file \"%s\" for writing: error code %u\n", dumpPath, (unsigned int) GetLastError()); return EXCEPTION_CONTINUE_SEARCH; } if ((*pDump) (selfProcHandle, selfPid, dumpFile, dumpType, &ExInfo, NULL, NULL)) - write_stderr("wrote crash dump to %s\n", dumpPath); + write_stderr("wrote crash dump to file \"%s\"\n", dumpPath); else - write_stderr("could not write crash dump to %s: error code %08x\n", + write_stderr("could not write crash dump to file \"%s\": error code %08x\n", dumpPath, (unsigned int) GetLastError()); CloseHandle(dumpFile); diff --git a/src/backend/port/win32/signal.c b/src/backend/port/win32/signal.c index b5675ec76f..d2dfd01223 100644 --- a/src/backend/port/win32/signal.c +++ b/src/backend/port/win32/signal.c @@ -83,18 +83,18 @@ pgwin32_signal_initialize(void) pgwin32_signal_event = CreateEvent(NULL, TRUE, FALSE, NULL); if (pgwin32_signal_event == NULL) ereport(FATAL, - (errmsg_internal("failed to create signal event: %d", (int) GetLastError()))); + (errmsg_internal("could not create signal event: %d", (int) GetLastError()))); /* Create thread for handling signals */ signal_thread_handle = CreateThread(NULL, 0, pg_signal_thread, NULL, 0, NULL); if (signal_thread_handle == NULL) ereport(FATAL, - (errmsg_internal("failed to create signal handler thread"))); + (errmsg_internal("could not create signal handler thread"))); /* Create console control handle to pick up Ctrl-C etc */ if (!SetConsoleCtrlHandler(pg_console_handler, TRUE)) ereport(FATAL, - (errmsg_internal("failed to set console control handler"))); + (errmsg_internal("could not set console control handler"))); } /* @@ -171,7 +171,7 @@ pqsignal(int signum, pqsigfunc handler) return prevfunc; } -/* Create the signal listener pipe for specified pid */ +/* Create the signal listener pipe for specified PID */ HANDLE pgwin32_create_signal_listener(pid_t pid) { @@ -186,7 +186,7 @@ pgwin32_create_signal_listener(pid_t pid) if (pipe == INVALID_HANDLE_VALUE) ereport(ERROR, - (errmsg("could not create signal listener pipe for pid %d: error code %d", + (errmsg("could not create signal listener pipe for PID %d: error code %d", (int) pid, (int) GetLastError()))); return pipe; diff --git a/src/backend/port/win32/socket.c b/src/backend/port/win32/socket.c index c918da981b..9e849271fe 100644 --- a/src/backend/port/win32/socket.c +++ b/src/backend/port/win32/socket.c @@ -99,7 +99,7 @@ TranslateSocketError(void) break; default: ereport(NOTICE, - (errmsg_internal("Unknown win32 socket error code: %i", WSAGetLastError()))); + (errmsg_internal("unrecognized win32 socket error code: %i", WSAGetLastError()))); errno = EINVAL; } } @@ -137,33 +137,33 @@ pgwin32_waitforsinglesocket(SOCKET s, int what, int timeout) HANDLE events[2]; int r; + /* Create an event object just once and use it on all future calls */ if (waitevent == INVALID_HANDLE_VALUE) { waitevent = CreateEvent(NULL, TRUE, FALSE, NULL); if (waitevent == INVALID_HANDLE_VALUE) ereport(ERROR, - (errmsg_internal("Failed to create socket waiting event: %i", (int) GetLastError()))); + (errmsg_internal("could not create socket waiting event: %i", (int) GetLastError()))); } else if (!ResetEvent(waitevent)) ereport(ERROR, - (errmsg_internal("Failed to reset socket waiting event: %i", (int) GetLastError()))); + (errmsg_internal("could not reset socket waiting event: %i", (int) GetLastError()))); /* - * make sure we don't multiplex this kernel event object with a different - * socket from a previous call + * Track whether socket is UDP or not. (NB: most likely, this is both + * useless and wrong; there is no reason to think that the behavior of + * WSAEventSelect is different for TCP and UDP.) */ - if (current_socket != s) - { - if (current_socket != -1) - WSAEventSelect(current_socket, waitevent, 0); isUDP = isDataGram(s); - } - current_socket = s; - if (WSAEventSelect(s, waitevent, what) == SOCKET_ERROR) + /* + * Attach event to socket. NOTE: we must detach it again before returning, + * since other bits of code may try to attach other events to the socket. + */ + if (WSAEventSelect(s, waitevent, what) != 0) { TranslateSocketError(); return 0; @@ -196,10 +196,14 @@ pgwin32_waitforsinglesocket(SOCKET s, int what, int timeout) r = WSASend(s, &buf, 1, &sent, 0, NULL, NULL); if (r == 0) /* Completed - means things are fine! */ + { + WSAEventSelect(s, NULL, 0); return 1; + } else if (WSAGetLastError() != WSAEWOULDBLOCK) { TranslateSocketError(); + WSAEventSelect(s, NULL, 0); return 0; } } @@ -210,6 +214,8 @@ pgwin32_waitforsinglesocket(SOCKET s, int what, int timeout) else r = WaitForMultipleObjectsEx(2, events, FALSE, timeout, TRUE); + WSAEventSelect(s, NULL, 0); + if (r == WAIT_OBJECT_0 || r == WAIT_IO_COMPLETION) { pgwin32_dispatch_queued_signals(); @@ -219,9 +225,12 @@ pgwin32_waitforsinglesocket(SOCKET s, int what, int timeout) if (r == WAIT_OBJECT_0 + 1) return 1; if (r == WAIT_TIMEOUT) + { + errno = EWOULDBLOCK; return 0; + } ereport(ERROR, - (errmsg_internal("Bad return from WaitForMultipleObjects: %i (%i)", r, (int) GetLastError()))); + (errmsg_internal("unrecognized return value from WaitForMultipleObjects: %i (%i)", r, (int) GetLastError()))); return 0; } @@ -364,7 +373,7 @@ pgwin32_recv(SOCKET s, char *buf, int len, int f) return b; } ereport(NOTICE, - (errmsg_internal("Failed to read from ready socket (after retries)"))); + (errmsg_internal("could not read from ready socket (after retries)"))); errno = EWOULDBLOCK; return -1; } @@ -543,9 +552,12 @@ pgwin32_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, c if (writefds && FD_ISSET(sockets[i], writefds)) flags |= FD_WRITE | FD_CLOSE; - if (WSAEventSelect(sockets[i], events[i], flags) == SOCKET_ERROR) + if (WSAEventSelect(sockets[i], events[i], flags) != 0) { TranslateSocketError(); + /* release already-assigned event objects */ + while (--i >= 0) + WSAEventSelect(sockets[i], NULL, 0); for (i = 0; i < numevents; i++) WSACloseEvent(events[i]); return -1; @@ -565,9 +577,9 @@ pgwin32_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, c for (i = 0; i < numevents; i++) { ZeroMemory(&resEvents, sizeof(resEvents)); - if (WSAEnumNetworkEvents(sockets[i], events[i], &resEvents) == SOCKET_ERROR) + if (WSAEnumNetworkEvents(sockets[i], events[i], &resEvents) != 0) ereport(FATAL, - (errmsg_internal("failed to enumerate network events: %i", (int) GetLastError()))); + (errmsg_internal("failed to enumerate network events: %i", (int) WSAGetLastError()))); /* Read activity? */ if (readfds && FD_ISSET(sockets[i], readfds)) { @@ -594,10 +606,10 @@ pgwin32_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, c } } - /* Clean up all handles */ + /* Clean up all the event objects */ for (i = 0; i < numevents; i++) { - WSAEventSelect(sockets[i], events[i], 0); + WSAEventSelect(sockets[i], NULL, 0); WSACloseEvent(events[i]); } @@ -645,7 +657,7 @@ pgwin32_socket_strerror(int err) handleDLL = LoadLibraryEx("netmsg.dll", NULL, DONT_RESOLVE_DLL_REFERENCES | LOAD_LIBRARY_AS_DATAFILE); if (handleDLL == NULL) ereport(FATAL, - (errmsg_internal("Failed to load netmsg.dll: %i", (int) GetLastError()))); + (errmsg_internal("could not load netmsg.dll: %i", (int) GetLastError()))); } ZeroMemory(&wserrbuf, sizeof(wserrbuf)); @@ -658,7 +670,7 @@ pgwin32_socket_strerror(int err) NULL) == 0) { /* Failed to get id */ - sprintf(wserrbuf, "Unknown winsock error %i", err); + sprintf(wserrbuf, "unrecognized winsock error %i", err); } return wserrbuf; } diff --git a/src/backend/port/win32/timer.c b/src/backend/port/win32/timer.c index e118d96a4b..97224df386 100644 --- a/src/backend/port/win32/timer.c +++ b/src/backend/port/win32/timer.c @@ -97,7 +97,7 @@ setitimer(int which, const struct itimerval * value, struct itimerval * ovalue) timerCommArea.event = CreateEvent(NULL, TRUE, FALSE, NULL); if (timerCommArea.event == NULL) ereport(FATAL, - (errmsg_internal("failed to create timer event: %d", + (errmsg_internal("could not create timer event: %d", (int) GetLastError()))); MemSet(&timerCommArea.value, 0, sizeof(struct itimerval)); @@ -107,7 +107,7 @@ setitimer(int which, const struct itimerval * value, struct itimerval * ovalue) timerThreadHandle = CreateThread(NULL, 0, pg_timer_thread, NULL, 0, NULL); if (timerThreadHandle == INVALID_HANDLE_VALUE) ereport(FATAL, - (errmsg_internal("failed to create timer thread: %d", + (errmsg_internal("could not create timer thread: %d", (int) GetLastError()))); } diff --git a/src/backend/port/win32_latch.c b/src/backend/port/win32_latch.c index 4bcf7b7a8f..3699153392 100644 --- a/src/backend/port/win32_latch.c +++ b/src/backend/port/win32_latch.c @@ -1,9 +1,10 @@ /*------------------------------------------------------------------------- * * win32_latch.c - * Windows implementation of latches. + * Routines for inter-process latches * - * See unix_latch.c for information on usage. + * See unix_latch.c for header comments for the exported functions; + * the API presented here is supposed to be the same as there. * * The Windows implementation uses Windows events that are inherited by * all postmaster child processes. @@ -23,11 +24,16 @@ #include #include "miscadmin.h" -#include "replication/walsender.h" #include "storage/latch.h" #include "storage/shmem.h" +void +InitializeLatchSupport(void) +{ + /* currently, nothing to do here for Windows */ +} + void InitLatch(volatile Latch *latch) { @@ -88,7 +94,7 @@ WaitLatch(volatile Latch *latch, long timeout) } int -WaitLatchOrSocket(volatile Latch *latch, SOCKET sock, bool forRead, +WaitLatchOrSocket(volatile Latch *latch, pgsocket sock, bool forRead, bool forWrite, long timeout) { DWORD rc; @@ -98,6 +104,9 @@ WaitLatchOrSocket(volatile Latch *latch, SOCKET sock, bool forRead, int numevents; int result = 0; + if (latch->owner_pid != MyProcPid) + elog(ERROR, "cannot wait on a latch owned by another process"); + latchevent = latch->event; events[0] = latchevent; @@ -105,10 +114,11 @@ WaitLatchOrSocket(volatile Latch *latch, SOCKET sock, bool forRead, numevents = 2; if (sock != PGINVALID_SOCKET && (forRead || forWrite)) { + /* Need an event object to represent events on the socket */ int flags = 0; if (forRead) - flags |= FD_READ; + flags |= (FD_READ | FD_CLOSE); if (forWrite) flags |= FD_WRITE; @@ -134,7 +144,7 @@ WaitLatchOrSocket(volatile Latch *latch, SOCKET sock, bool forRead, } rc = WaitForMultipleObjects(numevents, events, FALSE, - (timeout >= 0) ? (timeout / 1000) : INFINITE); + (timeout >= 0) ? timeout : INFINITE); if (rc == WAIT_FAILED) elog(ERROR, "WaitForMultipleObjects() failed: error code %d", (int) GetLastError()); else if (rc == WAIT_TIMEOUT) @@ -151,11 +161,10 @@ WaitLatchOrSocket(volatile Latch *latch, SOCKET sock, bool forRead, Assert(sock != PGINVALID_SOCKET); ZeroMemory(&resEvents, sizeof(resEvents)); - if (WSAEnumNetworkEvents(sock, sockevent, &resEvents) == SOCKET_ERROR) + if (WSAEnumNetworkEvents(sock, sockevent, &resEvents) != 0) ereport(FATAL, - (errmsg_internal("failed to enumerate network events: %i", (int) GetLastError()))); - - if ((forRead && resEvents.lNetworkEvents & FD_READ) || + (errmsg_internal("failed to enumerate network events: %i", (int) WSAGetLastError()))); + if ((forRead && resEvents.lNetworkEvents & (FD_READ | FD_CLOSE)) || (forWrite && resEvents.lNetworkEvents & FD_WRITE)) result = 2; break; @@ -164,10 +173,10 @@ WaitLatchOrSocket(volatile Latch *latch, SOCKET sock, bool forRead, elog(ERROR, "unexpected return code from WaitForMultipleObjects(): %d", (int) rc); } - /* Clean up the handle we created for the socket */ - if (sock != PGINVALID_SOCKET && (forRead || forWrite)) + /* Clean up the event object we created for the socket */ + if (sockevent != WSA_INVALID_EVENT) { - WSAEventSelect(sock, sockevent, 0); + WSAEventSelect(sock, NULL, 0); WSACloseEvent(sockevent); } @@ -187,15 +196,10 @@ SetLatch(volatile Latch *latch) /* * See if anyone's waiting for the latch. It can be the current process if - * we're in a signal handler. Use a local variable here in case the latch - * is just disowned between the test and the SetEvent call, and event - * field set to NULL. + * we're in a signal handler. * - * Fetch handle field only once, in case the owner simultaneously disowns - * the latch and clears handle. This assumes that HANDLE is atomic, which - * isn't guaranteed to be true! In practice, it should be, and in the - * worst case we end up calling SetEvent with a bogus handle, and SetEvent - * will return an error with no harm done. + * Use a local variable here just in case somebody changes the event field + * concurrently (which really should not happen). */ handle = latch->event; if (handle) @@ -212,5 +216,8 @@ SetLatch(volatile Latch *latch) void ResetLatch(volatile Latch *latch) { + /* Only the owner should reset the latch */ + Assert(latch->owner_pid == MyProcPid); + latch->is_set = false; } diff --git a/src/backend/port/win32_sema.c b/src/backend/port/win32_sema.c index 8c364dfe88..6602e47ffc 100644 --- a/src/backend/port/win32_sema.c +++ b/src/backend/port/win32_sema.c @@ -121,8 +121,13 @@ PGSemaphoreLock(PGSemaphore sema, bool interruptOK) DWORD ret; HANDLE wh[2]; - wh[0] = *sema; - wh[1] = pgwin32_signal_event; + /* + * Note: pgwin32_signal_event should be first to ensure that it will be + * reported when multiple events are set. We want to guarantee that + * pending signals are serviced. + */ + wh[0] = pgwin32_signal_event; + wh[1] = *sema; /* * As in other implementations of PGSemaphoreLock, we need to check for @@ -135,20 +140,19 @@ PGSemaphoreLock(PGSemaphore sema, bool interruptOK) ImmediateInterruptOK = interruptOK; CHECK_FOR_INTERRUPTS(); - errno = 0; ret = WaitForMultipleObjectsEx(2, wh, FALSE, INFINITE, TRUE); if (ret == WAIT_OBJECT_0) - { - /* We got it! */ - return; - } - else if (ret == WAIT_OBJECT_0 + 1) { /* Signal event is set - we have a signal to deliver */ pgwin32_dispatch_queued_signals(); errno = EINTR; } + else if (ret == WAIT_OBJECT_0 + 1) + { + /* We got it! */ + errno = 0; + } else /* Otherwise we are in trouble */ errno = EIDRM; diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c index fcc912f8e3..3d57c45377 100644 --- a/src/backend/postmaster/autovacuum.c +++ b/src/backend/postmaster/autovacuum.c @@ -526,6 +526,27 @@ AutoVacLauncherMain(int argc, char *argv[]) /* must unblock signals before calling rebuild_database_list */ PG_SETMASK(&UnBlockSig); + /* + * Force zero_damaged_pages OFF in the autovac process, even if it is set + * in postgresql.conf. We don't really want such a dangerous option being + * applied non-interactively. + */ + SetConfigOption("zero_damaged_pages", "false", PGC_SUSET, PGC_S_OVERRIDE); + + /* + * Force statement_timeout to zero to avoid a timeout setting from + * preventing regular maintenance from being executed. + */ + SetConfigOption("statement_timeout", "0", PGC_SUSET, PGC_S_OVERRIDE); + + /* + * Force default_transaction_isolation to READ COMMITTED. We don't + * want to pay the overhead of serializable mode, nor add any risk + * of causing deadlocks or delaying other transactions. + */ + SetConfigOption("default_transaction_isolation", "read committed", + PGC_SUSET, PGC_S_OVERRIDE); + /* in emergency mode, just start a worker and go away */ if (!AutoVacuumingActive()) { @@ -714,7 +735,7 @@ AutoVacLauncherMain(int argc, char *argv[]) worker->wi_links.next = (SHM_QUEUE *) AutoVacuumShmem->av_freeWorkers; AutoVacuumShmem->av_freeWorkers = worker; AutoVacuumShmem->av_startingWorker = NULL; - elog(WARNING, "worker took too long to start; cancelled"); + elog(WARNING, "worker took too long to start; canceled"); } } else @@ -1461,7 +1482,7 @@ AutoVacWorkerMain(int argc, char *argv[]) pqsignal(SIGHUP, SIG_IGN); /* - * SIGINT is used to signal cancelling the current table's vacuum; SIGTERM + * SIGINT is used to signal canceling the current table's vacuum; SIGTERM * means abort and exit cleanly, and SIGQUIT means abandon ship. */ pqsignal(SIGINT, StatementCancelHandler); @@ -1527,13 +1548,22 @@ AutoVacWorkerMain(int argc, char *argv[]) */ SetConfigOption("statement_timeout", "0", PGC_SUSET, PGC_S_OVERRIDE); + /* + * Force default_transaction_isolation to READ COMMITTED. We don't + * want to pay the overhead of serializable mode, nor add any risk + * of causing deadlocks or delaying other transactions. + */ + SetConfigOption("default_transaction_isolation", "read committed", + PGC_SUSET, PGC_S_OVERRIDE); + /* * Force synchronous replication off to allow regular maintenance even if * we are waiting for standbys to connect. This is important to ensure we * aren't blocked from performing anti-wraparound tasks. */ if (synchronous_commit > SYNCHRONOUS_COMMIT_LOCAL_FLUSH) - SetConfigOption("synchronous_commit", "local", PGC_SUSET, PGC_S_OVERRIDE); + SetConfigOption("synchronous_commit", "local", + PGC_SUSET, PGC_S_OVERRIDE); /* * Get the info about the database we're going to work on. diff --git a/src/backend/postmaster/bgwriter.c b/src/backend/postmaster/bgwriter.c index 1f4ac93d8d..83c13e252c 100644 --- a/src/backend/postmaster/bgwriter.c +++ b/src/backend/postmaster/bgwriter.c @@ -116,7 +116,7 @@ */ typedef struct { - RelFileNodeBackend rnode; + RelFileNode rnode; ForkNumber forknum; BlockNumber segno; /* see md.c for special values */ /* might add a real request-type field later; not needed yet */ @@ -305,6 +305,7 @@ BackgroundWriterMain(void) false, true); /* we needn't bother with the other ResourceOwnerRelease phases */ AtEOXact_Buffers(false); + AtEOXact_SMgr(); AtEOXact_Files(); AtEOXact_HashTables(false); @@ -896,17 +897,22 @@ BgWriterShmemSize(void) void BgWriterShmemInit(void) { + Size size = BgWriterShmemSize(); bool found; BgWriterShmem = (BgWriterShmemStruct *) ShmemInitStruct("Background Writer Data", - BgWriterShmemSize(), + size, &found); if (!found) { - /* First time through, so initialize */ - MemSet(BgWriterShmem, 0, sizeof(BgWriterShmemStruct)); + /* + * First time through, so initialize. Note that we zero the whole + * requests array; this is so that CompactBgwriterRequestQueue + * can assume that any pad bytes in the request structs are zeroes. + */ + MemSet(BgWriterShmem, 0, size); SpinLockInit(&BgWriterShmem->ckpt_lck); BgWriterShmem->max_requests = NBuffers; } @@ -1068,6 +1074,10 @@ RequestCheckpoint(int flags) * is dirty and must be fsync'd before next checkpoint. We also use this * opportunity to count such writes for statistical purposes. * + * This functionality is only supported for regular (not backend-local) + * relations, so the rnode argument is intentionally RelFileNode not + * RelFileNodeBackend. + * * segno specifies which segment (not block!) of the relation needs to be * fsync'd. (Since the valid range is much less than BlockNumber, we can * use high values for special flags; that's all internal to md.c, which @@ -1084,8 +1094,7 @@ RequestCheckpoint(int flags) * let the backend know by returning false. */ bool -ForwardFsyncRequest(RelFileNodeBackend rnode, ForkNumber forknum, - BlockNumber segno) +ForwardFsyncRequest(RelFileNode rnode, ForkNumber forknum, BlockNumber segno) { BgWriterRequest *request; @@ -1129,6 +1138,7 @@ ForwardFsyncRequest(RelFileNodeBackend rnode, ForkNumber forknum, /* * CompactBgwriterRequestQueue * Remove duplicates from the request queue to avoid backend fsyncs. + * Returns "true" if any entries were removed. * * Although a full fsync request queue is not common, it can lead to severe * performance problems when it does happen. So far, this situation has @@ -1138,11 +1148,11 @@ ForwardFsyncRequest(RelFileNodeBackend rnode, ForkNumber forknum, * gets very expensive and can slow down the whole system. * * Trying to do this every time the queue is full could lose if there - * aren't any removable entries. But should be vanishingly rare in + * aren't any removable entries. But that should be vanishingly rare in * practice: there's one queue entry per shared buffer. */ static bool -CompactBgwriterRequestQueue() +CompactBgwriterRequestQueue(void) { struct BgWriterSlotMapping { @@ -1160,18 +1170,20 @@ CompactBgwriterRequestQueue() /* must hold BgWriterCommLock in exclusive mode */ Assert(LWLockHeldByMe(BgWriterCommLock)); + /* Initialize skip_slot array */ + skip_slot = palloc0(sizeof(bool) * BgWriterShmem->num_requests); + /* Initialize temporary hash table */ MemSet(&ctl, 0, sizeof(ctl)); ctl.keysize = sizeof(BgWriterRequest); ctl.entrysize = sizeof(struct BgWriterSlotMapping); ctl.hash = tag_hash; + ctl.hcxt = CurrentMemoryContext; + htab = hash_create("CompactBgwriterRequestQueue", BgWriterShmem->num_requests, &ctl, - HASH_ELEM | HASH_FUNCTION); - - /* Initialize skip_slot array */ - skip_slot = palloc0(sizeof(bool) * BgWriterShmem->num_requests); + HASH_ELEM | HASH_FUNCTION | HASH_CONTEXT); /* * The basic idea here is that a request can be skipped if it's followed @@ -1182,23 +1194,32 @@ CompactBgwriterRequestQueue() * intervening FORGET_RELATION_FSYNC or FORGET_DATABASE_FSYNC request, so * we do it this way. It would be possible to be even smarter if we made * the code below understand the specific semantics of such requests (it - * could blow away preceding entries that would end up being cancelled + * could blow away preceding entries that would end up being canceled * anyhow), but it's not clear that the extra complexity would buy us * anything. */ - for (n = 0; n < BgWriterShmem->num_requests; ++n) + for (n = 0; n < BgWriterShmem->num_requests; n++) { BgWriterRequest *request; struct BgWriterSlotMapping *slotmap; bool found; + /* + * We use the request struct directly as a hashtable key. This + * assumes that any padding bytes in the structs are consistently the + * same, which should be okay because we zeroed them in + * BgWriterShmemInit. Note also that RelFileNode had better + * contain no pad bytes. + */ request = &BgWriterShmem->requests[n]; slotmap = hash_search(htab, request, HASH_ENTER, &found); if (found) { + /* Duplicate, so mark the previous occurrence as skippable */ skip_slot[slotmap->slot] = true; - ++num_skipped; + num_skipped++; } + /* Remember slot containing latest occurrence of this request value */ slotmap->slot = n; } @@ -1213,7 +1234,8 @@ CompactBgwriterRequestQueue() } /* We found some duplicates; remove them. */ - for (n = 0, preserve_count = 0; n < BgWriterShmem->num_requests; ++n) + preserve_count = 0; + for (n = 0; n < BgWriterShmem->num_requests; n++) { if (skip_slot[n]) continue; diff --git a/src/backend/postmaster/fork_process.c b/src/backend/postmaster/fork_process.c index b2fe9a13f4..d2d37cd261 100644 --- a/src/backend/postmaster/fork_process.c +++ b/src/backend/postmaster/fork_process.c @@ -17,6 +17,9 @@ #include #include #include +#ifdef USE_SSL +#include +#endif #ifndef WIN32 /* @@ -94,6 +97,13 @@ fork_process(void) } } #endif /* LINUX_OOM_ADJ */ + + /* + * Make sure processes do not share OpenSSL randomness state. + */ +#ifdef USE_SSL + RAND_cleanup(); +#endif } return result; diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c index 1d80c311d8..77e195e554 100644 --- a/src/backend/postmaster/pgstat.c +++ b/src/backend/postmaster/pgstat.c @@ -682,8 +682,8 @@ pgstat_report_stat(bool force) int i; /* Don't expend a clock check if nothing to do */ - if ((pgStatTabList == NULL || pgStatTabList->tsa_used == 0) - && !have_function_stats) + if ((pgStatTabList == NULL || pgStatTabList->tsa_used == 0) && + !have_function_stats && !force) return; /* diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 1fcb2c05ac..87c44c8154 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -34,7 +34,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -345,6 +345,8 @@ int PGXCNodeId = -1; * This will have minimal impact on performance */ uint32 PGXCNodeIdentifier = 0; + +static bool isNodeRegistered = false; #endif /* @@ -462,7 +464,9 @@ typedef struct pid_t PostmasterPid; TimestampTz PgStartTime; TimestampTz PgReloadTime; + pg_time_t first_syslogger_file_time; bool redirection_done; + bool IsBinaryUpgrade; #ifdef WIN32 HANDLE PostmasterHandle; HANDLE initial_signal_pipe; @@ -533,11 +537,6 @@ PostmasterMain(int argc, char *argv[]) */ umask(S_IRWXG | S_IRWXO); - /* - * Fire up essential subsystems: memory management - */ - MemoryContextInit(); - /* * By default, palloc() requests in the postmaster will be allocated in * the PostmasterContext, which is space that can be recycled by backends. @@ -788,11 +787,16 @@ PostmasterMain(int argc, char *argv[]) /* * Check for invalid combinations of GUC settings. */ - if (ReservedBackends >= MaxBackends) + if (ReservedBackends >= MaxConnections) { write_stderr("%s: superuser_reserved_connections must be less than max_connections\n", progname); ExitPostmaster(1); } + if (max_wal_senders >= MaxConnections) + { + write_stderr("%s: max_wal_senders must be less than max_connections\n", progname); + ExitPostmaster(1); + } if (XLogArchiveMode && wal_level == WAL_LEVEL_MINIMAL) ereport(ERROR, (errmsg("WAL archival (archive_mode=on) requires wal_level \"archive\" or \"hot_standby\""))); @@ -825,7 +829,7 @@ PostmasterMain(int argc, char *argv[]) char **p; ereport(DEBUG3, - (errmsg_internal("%s: PostmasterMain: initial environ dump:", + (errmsg_internal("%s: PostmasterMain: initial environment dump:", progname))); ereport(DEBUG3, (errmsg_internal("-----------------------------------------"))); @@ -884,12 +888,6 @@ PostmasterMain(int argc, char *argv[]) */ process_shared_preload_libraries(); - /* - * Remove old temporary files. At this point there can be no other - * Postgres processes running in this directory, so this should be safe. - */ - RemovePgTempFiles(); - /* * Establish input sockets. */ @@ -1028,6 +1026,11 @@ PostmasterMain(int argc, char *argv[]) */ set_max_safe_fds(); + /* + * Set reference point for stack-depth checking. + */ + set_stack_base(); + /* * Initialize the list of active backends. */ @@ -1132,24 +1135,6 @@ PostmasterMain(int argc, char *argv[]) */ whereToSendOutput = DestNone; -#ifdef PGXC - /* Register node on GTM during Postmaster Startup. */ - if (IS_PGXC_COORDINATOR) - { - if (RegisterGTM(GTM_NODE_COORDINATOR, PostPortNumber, userDoption) < 0) - ereport(FATAL, - (errcode(ERRCODE_IO_ERROR), - errmsg("Can not register Coordinator on GTM"))); - } - if (IS_PGXC_DATANODE) - { - if (RegisterGTM(GTM_NODE_DATANODE, PostPortNumber, userDoption) < 0) - ereport(FATAL, - (errcode(ERRCODE_IO_ERROR), - errmsg("Can not register Datanode on GTM"))); - } -#endif - /* * Initialize stats collection subsystem (this does NOT start the * collector process!) @@ -1175,6 +1160,12 @@ PostmasterMain(int argc, char *argv[]) } load_ident(); + /* + * Remove old temporary files. At this point there can be no other + * Postgres processes running in this directory, so this should be safe. + */ + RemovePgTempFiles(); + /* * Remember postmaster startup time */ @@ -2320,10 +2311,13 @@ pmdie(SIGNAL_ARGS) signal_child(PgPoolerPID, SIGTERM); /* Unregister Node on GTM */ - if (IS_PGXC_COORDINATOR) - UnregisterGTM(GTM_NODE_COORDINATOR); - else if (IS_PGXC_DATANODE) - UnregisterGTM(GTM_NODE_DATANODE); + if (isNodeRegistered) + { + if (IS_PGXC_COORDINATOR) + UnregisterGTM(GTM_NODE_COORDINATOR); + else if (IS_PGXC_DATANODE) + UnregisterGTM(GTM_NODE_DATANODE); + } #endif /* @@ -2393,10 +2387,13 @@ pmdie(SIGNAL_ARGS) signal_child(PgPoolerPID, SIGTERM); /* Unregister Node on GTM */ - if (IS_PGXC_COORDINATOR) - UnregisterGTM(GTM_NODE_COORDINATOR); - else if (IS_PGXC_DATANODE) - UnregisterGTM(GTM_NODE_DATANODE); + if (isNodeRegistered) + { + if (IS_PGXC_COORDINATOR) + UnregisterGTM(GTM_NODE_COORDINATOR); + else if (IS_PGXC_DATANODE) + UnregisterGTM(GTM_NODE_DATANODE); + } #endif pmState = PM_WAIT_BACKENDS; } @@ -2424,6 +2421,7 @@ pmdie(SIGNAL_ARGS) #ifdef PGXC /* PGXC_COORD */ if (IS_PGXC_COORDINATOR && PgPoolerPID != 0) signal_child(PgPoolerPID, SIGQUIT); + #endif if (BgWriterPID != 0) signal_child(BgWriterPID, SIGQUIT); @@ -2490,6 +2488,18 @@ reaper(SIGNAL_ARGS) { StartupPID = 0; + /* + * Startup process exited in response to a shutdown request (or it + * completed normally regardless of the shutdown request). + */ + if (Shutdown > NoShutdown && + (EXIT_STATUS_0(exitstatus) || EXIT_STATUS_1(exitstatus))) + { + pmState = PM_WAIT_BACKENDS; + /* PostmasterStateMachine logic does the rest */ + continue; + } + /* * Unexpected exit of startup process (including FATAL exit) * during PM_STARTUP is treated as catastrophic. There are no @@ -2505,25 +2515,18 @@ reaper(SIGNAL_ARGS) } /* - * Startup process exited in response to a shutdown request (or it - * completed normally regardless of the shutdown request). - */ - if (Shutdown > NoShutdown && - (EXIT_STATUS_0(exitstatus) || EXIT_STATUS_1(exitstatus))) - { - pmState = PM_WAIT_BACKENDS; - /* PostmasterStateMachine logic does the rest */ - continue; - } - - /* - * Any unexpected exit (including FATAL exit) of the startup - * process is treated as a crash, except that we don't want to - * reinitialize. + * 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 + * that's probably the reason it died, and we do want to try to + * restart in that case. */ if (!EXIT_STATUS_0(exitstatus)) { - RecoveryError = true; + if (!FatalError) + RecoveryError = true; HandleChildCrash(pid, exitstatus, _("startup process")); continue; @@ -3723,7 +3726,7 @@ BackendRun(Port *port) * from ExtraOptions is (strlen(ExtraOptions) + 1) / 2; see * pg_split_opts(). */ - maxac = 5; /* for fixed args supplied below */ + maxac = 2; /* for fixed args supplied below */ maxac += (strlen(ExtraOptions) + 1) / 2; av = (char **) MemoryContextAlloc(TopMemoryContext, @@ -3739,11 +3742,6 @@ BackendRun(Port *port) */ pg_split_opts(av, &ac, ExtraOptions); - /* - * Tell the backend which database to use. - */ - av[ac++] = port->database_name; - av[ac] = NULL; Assert(ac < maxac); @@ -3766,7 +3764,7 @@ BackendRun(Port *port) */ MemoryContextSwitchTo(TopMemoryContext); - return (PostgresMain(ac, av, port->user_name)); + return PostgresMain(ac, av, port->database_name, port->user_name); } @@ -4146,13 +4144,17 @@ SubPostmasterMain(int argc, char *argv[]) whereToSendOutput = DestNone; /* Setup essential subsystems (to ensure elog() behaves sanely) */ - MemoryContextInit(); InitializeGUCOptions(); /* Read in the variables file */ memset(&port, 0, sizeof(Port)); read_backend_variables(argv[2], &port); + /* + * Set reference point for stack-depth checking + */ + set_stack_base(); + /* * Set up memory area for GSS information. Mirrors the code in ConnCreate * for the non-exec case. @@ -4388,7 +4390,7 @@ sigusr1_handler(SIGNAL_ARGS) * first. We don't want to go back to recovery in that case. */ if (CheckPostmasterSignal(PMSIGNAL_RECOVERY_STARTED) && - pmState == PM_STARTUP) + pmState == PM_STARTUP && Shutdown == NoShutdown) { /* WAL redo has started. We're out of reinitialization. */ FatalError = false; @@ -4403,7 +4405,7 @@ sigusr1_handler(SIGNAL_ARGS) pmState = PM_RECOVERY; } if (CheckPostmasterSignal(PMSIGNAL_BEGIN_HOT_STANDBY) && - pmState == PM_RECOVERY) + pmState == PM_RECOVERY && Shutdown == NoShutdown) { /* * Likewise, start other special children as needed. @@ -4417,6 +4419,53 @@ sigusr1_handler(SIGNAL_ARGS) pmState = PM_HOT_STANDBY; } +#ifdef PGXC + /* + * Register node to GTM. + * A node can only be registered if it has reached a stable recovery state + * and if is a master node. + * A standby node is created from a hot backup of master so master and slave + * nodes will normally share the same node name. Having master and slave share + * the same node name is convenient for slave promotion, and this makes master + * and slave nodes being seen as equal by GTM in cluster. As two nodes cannot + * register on GTM with the same name, it looks normal to let only master + * register and have slave nodes bypass this process. + */ + if (pmState == PM_RUN && + !isNodeRegistered) + { + isNodeRegistered = true; + + /* Register node on GTM during Postmaster Startup. */ + if (IS_PGXC_COORDINATOR) + { + if (RegisterGTM(GTM_NODE_COORDINATOR, PostPortNumber, data_directory) < 0) + { + UnregisterGTM(GTM_NODE_COORDINATOR); + if (RegisterGTM(GTM_NODE_COORDINATOR, PostPortNumber, data_directory) < 0) + { + ereport(FATAL, + (errcode(ERRCODE_IO_ERROR), + errmsg("Can not register Coordinator on GTM"))); + } + } + } + if (IS_PGXC_DATANODE) + { + if (RegisterGTM(GTM_NODE_DATANODE, PostPortNumber, data_directory) < 0) + { + UnregisterGTM(GTM_NODE_DATANODE); + if (RegisterGTM(GTM_NODE_DATANODE, PostPortNumber, data_directory) < 0) + { + ereport(FATAL, + (errcode(ERRCODE_IO_ERROR), + errmsg("Can not register Datanode on GTM"))); + } + } + } + } +#endif + if (CheckPostmasterSignal(PMSIGNAL_WAKEN_ARCHIVER) && PgArchPID != 0) { @@ -4434,7 +4483,8 @@ sigusr1_handler(SIGNAL_ARGS) signal_child(SysLoggerPID, SIGUSR1); } - if (CheckPostmasterSignal(PMSIGNAL_START_AUTOVAC_LAUNCHER)) + if (CheckPostmasterSignal(PMSIGNAL_START_AUTOVAC_LAUNCHER) && + Shutdown == NoShutdown) { /* * Start one iteration of the autovacuum daemon, even if autovacuuming @@ -4448,7 +4498,8 @@ sigusr1_handler(SIGNAL_ARGS) start_autovac_launcher = true; } - if (CheckPostmasterSignal(PMSIGNAL_START_AUTOVAC_WORKER)) + if (CheckPostmasterSignal(PMSIGNAL_START_AUTOVAC_WORKER) && + Shutdown == NoShutdown) { /* The autovacuum launcher wants us to start a worker process. */ StartAutovacuumWorker(); @@ -4457,7 +4508,8 @@ sigusr1_handler(SIGNAL_ARGS) if (CheckPostmasterSignal(PMSIGNAL_START_WALRECEIVER) && WalReceiverPID == 0 && (pmState == PM_STARTUP || pmState == PM_RECOVERY || - pmState == PM_HOT_STANDBY || pmState == PM_WAIT_READONLY)) + pmState == PM_HOT_STANDBY || pmState == PM_WAIT_READONLY) && + Shutdown == NoShutdown) { /* Startup Process wants us to start the walreceiver process. */ WalReceiverPID = StartWalReceiver(); @@ -4855,7 +4907,7 @@ MaxLivePostmasterChildren(void) /* * The following need to be available to the save/restore_backend_variables - * functions + * functions. They are marked NON_EXEC_STATIC in their home modules. */ extern slock_t *ShmemLock; extern LWLock *LWLockArray; @@ -4864,6 +4916,7 @@ extern PROC_HDR *ProcGlobal; extern PGPROC *AuxiliaryProcs; extern PMSignalData *PMSignalState; extern pgsocket pgStatSock; +extern pg_time_t first_syslogger_file_time; #ifndef WIN32 #define write_inheritable_socket(dest, src, childpid) ((*(dest) = (src)), true) @@ -4915,8 +4968,10 @@ save_backend_variables(BackendParameters *param, Port *port, param->PostmasterPid = PostmasterPid; param->PgStartTime = PgStartTime; param->PgReloadTime = PgReloadTime; + param->first_syslogger_file_time = first_syslogger_file_time; param->redirection_done = redirection_done; + param->IsBinaryUpgrade = IsBinaryUpgrade; #ifdef WIN32 param->PostmasterHandle = PostmasterHandle; @@ -5133,8 +5188,10 @@ restore_backend_variables(BackendParameters *param, Port *port) PostmasterPid = param->PostmasterPid; PgStartTime = param->PgStartTime; PgReloadTime = param->PgReloadTime; + first_syslogger_file_time = param->first_syslogger_file_time; redirection_done = param->redirection_done; + IsBinaryUpgrade = param->IsBinaryUpgrade; #ifdef WIN32 PostmasterHandle = param->PostmasterHandle; diff --git a/src/backend/postmaster/syslogger.c b/src/backend/postmaster/syslogger.c index 85e4f808db..264cab0690 100644 --- a/src/backend/postmaster/syslogger.c +++ b/src/backend/postmaster/syslogger.c @@ -2,7 +2,7 @@ * * syslogger.c * - * The system logger (syslogger) is new in Postgres 8.0. It catches all + * The system logger (syslogger) appeared in Postgres 8.0. It catches all * stderr output from the postmaster, backends, and other subprocesses * by redirecting to a pipe, and writes it to a set of logfiles. * It's possible to have size and age limits for the logfile configured @@ -34,6 +34,7 @@ #include "lib/stringinfo.h" #include "libpq/pqsignal.h" #include "miscadmin.h" +#include "nodes/pg_list.h" #include "pgtime.h" #include "postmaster/fork_process.h" #include "postmaster/postmaster.h" @@ -87,17 +88,22 @@ extern bool redirection_done; */ static pg_time_t next_rotation_time; static bool pipe_eof_seen = false; +static bool rotation_disabled = false; static FILE *syslogFile = NULL; static FILE *csvlogFile = NULL; +NON_EXEC_STATIC pg_time_t first_syslogger_file_time = 0; static char *last_file_name = NULL; static char *last_csv_file_name = NULL; /* - * Buffers for saving partial messages from different backends. We don't expect - * that there will be very many outstanding at one time, so 20 seems plenty of - * leeway. If this array gets full we won't lose messages, but we will lose - * the protocol protection against them being partially written or interleaved. + * Buffers for saving partial messages from different backends. * + * Keep NBUFFER_LISTS lists of these, with the entry for a given source pid + * being in the list numbered (pid % NBUFFER_LISTS), so as to cut down on + * the number of entries we have to examine for any one incoming message. + * There must never be more than one entry for the same source pid. + * + * An inactive buffer is not removed from its list, just held for re-use. * An inactive buffer has pid == 0 and undefined contents of data. */ typedef struct @@ -106,8 +112,8 @@ typedef struct StringInfoData data; /* accumulated data, as a StringInfo */ } save_buffer; -#define CHUNK_SLOTS 20 -static save_buffer saved_chunks[CHUNK_SLOTS]; +#define NBUFFER_LISTS 256 +static List *buffer_lists[NBUFFER_LISTS]; /* These must be exported for EXEC_BACKEND case ... annoying */ #ifndef WIN32 @@ -279,6 +285,13 @@ SysLoggerMain(int argc, char *argv[]) elog(FATAL, "could not create syslogger data transfer thread: %m"); #endif /* WIN32 */ + /* + * Remember active logfile's name. We recompute this from the reference + * time because passing down just the pg_time_t is a lot cheaper than + * passing a whole file path in the EXEC_BACKEND case. + */ + last_file_name = logfile_getname(first_syslogger_file_time, NULL); + /* remember active logfile parameters */ currentLogDir = pstrdup(Log_directory); currentLogFilename = pstrdup(Log_filename); @@ -314,6 +327,11 @@ SysLoggerMain(int argc, char *argv[]) pfree(currentLogDir); currentLogDir = pstrdup(Log_directory); rotation_requested = true; + + /* + * Also, create new directory if not present; ignore errors + */ + mkdir(Log_directory, S_IRWXU); } if (strcmp(Log_filename, currentLogFilename) != 0) { @@ -331,9 +349,19 @@ SysLoggerMain(int argc, char *argv[]) currentLogRotationAge = Log_RotationAge; set_next_rotation_time(); } + + /* + * If we had a rotation-disabling failure, re-enable rotation + * attempts after SIGHUP, and force one immediately. + */ + if (rotation_disabled) + { + rotation_disabled = false; + rotation_requested = true; + } } - if (!rotation_requested && Log_RotationAge > 0) + if (!rotation_requested && Log_RotationAge > 0 && !rotation_disabled) { /* Do a logfile rotation if it's time */ pg_time_t now = (pg_time_t) time(NULL); @@ -342,7 +370,7 @@ SysLoggerMain(int argc, char *argv[]) rotation_requested = time_based_rotation = true; } - if (!rotation_requested && Log_RotationSize > 0) + if (!rotation_requested && Log_RotationSize > 0 && !rotation_disabled) { /* Do a rotation if file is too big */ if (ftell(syslogFile) >= Log_RotationSize * 1024L) @@ -515,9 +543,18 @@ SysLogger_Start(void) /* * The initial logfile is created right in the postmaster, to verify that - * the Log_directory is writable. + * the Log_directory is writable. We save the reference time so that + * the syslogger child process can recompute this file name. + * + * It might look a bit strange to re-do this during a syslogger restart, + * but we must do so since the postmaster closed syslogFile after the + * previous fork (and remembering that old file wouldn't be right anyway). + * Note we always append here, we won't overwrite any existing file. This + * is consistent with the normal rules, because by definition this is not + * a time-based rotation. */ - filename = logfile_getname(time(NULL), NULL); + first_syslogger_file_time = time(NULL); + filename = logfile_getname(first_syslogger_file_time, NULL); syslogFile = logfile_open(filename, "a", false); @@ -588,8 +625,11 @@ SysLogger_Start(void) errmsg("could not redirect stderr: %m"))); close(fd); _setmode(_fileno(stderr), _O_BINARY); - /* Now we are done with the write end of the pipe. */ - CloseHandle(syslogPipe[1]); + /* + * Now we are done with the write end of the pipe. + * CloseHandle() must not be called because the preceding + * close() closes the underlying handle. + */ syslogPipe[1] = 0; #endif redirection_done = true; @@ -731,6 +771,12 @@ process_pipe_input(char *logbuffer, int *bytes_in_logbuffer) (p.is_last == 't' || p.is_last == 'f' || p.is_last == 'T' || p.is_last == 'F')) { + List *buffer_list; + ListCell *cell; + save_buffer *existing_slot = NULL, + *free_slot = NULL; + StringInfo str; + chunklen = PIPE_HEADER_SIZE + p.len; /* Fall out of loop if we don't have the whole chunk yet */ @@ -740,53 +786,54 @@ process_pipe_input(char *logbuffer, int *bytes_in_logbuffer) dest = (p.is_last == 'T' || p.is_last == 'F') ? LOG_DESTINATION_CSVLOG : LOG_DESTINATION_STDERR; - if (p.is_last == 'f' || p.is_last == 'F') + /* Locate any existing buffer for this source pid */ + buffer_list = buffer_lists[p.pid % NBUFFER_LISTS]; + foreach(cell, buffer_list) { - /* - * Save a complete non-final chunk in the per-pid buffer if - * possible - if not just write it out. - */ - int free_slot = -1, - existing_slot = -1; - int i; - StringInfo str; + save_buffer *buf = (save_buffer *) lfirst(cell); - for (i = 0; i < CHUNK_SLOTS; i++) + if (buf->pid == p.pid) { - if (saved_chunks[i].pid == p.pid) - { - existing_slot = i; - break; - } - if (free_slot < 0 && saved_chunks[i].pid == 0) - free_slot = i; + existing_slot = buf; + break; } - if (existing_slot >= 0) + if (buf->pid == 0 && free_slot == NULL) + free_slot = buf; + } + + if (p.is_last == 'f' || p.is_last == 'F') + { + /* + * Save a complete non-final chunk in a per-pid buffer + */ + if (existing_slot != NULL) { - str = &(saved_chunks[existing_slot].data); + /* Add chunk to data from preceding chunks */ + str = &(existing_slot->data); appendBinaryStringInfo(str, cursor + PIPE_HEADER_SIZE, p.len); } - else if (free_slot >= 0) + else { - saved_chunks[free_slot].pid = p.pid; - str = &(saved_chunks[free_slot].data); + /* First chunk of message, save in a new buffer */ + if (free_slot == NULL) + { + /* + * Need a free slot, but there isn't one in the list, + * so create a new one and extend the list with it. + */ + free_slot = palloc(sizeof(save_buffer)); + buffer_list = lappend(buffer_list, free_slot); + buffer_lists[p.pid % NBUFFER_LISTS] = buffer_list; + } + free_slot->pid = p.pid; + str = &(free_slot->data); initStringInfo(str); appendBinaryStringInfo(str, cursor + PIPE_HEADER_SIZE, p.len); } - else - { - /* - * If there is no free slot we'll just have to take our - * chances and write out a partial message and hope that - * it's not followed by something from another pid. - */ - write_syslogger_file(cursor + PIPE_HEADER_SIZE, p.len, - dest); - } } else { @@ -794,26 +841,15 @@ process_pipe_input(char *logbuffer, int *bytes_in_logbuffer) * Final chunk --- add it to anything saved for that pid, and * either way write the whole thing out. */ - int existing_slot = -1; - int i; - StringInfo str; - - for (i = 0; i < CHUNK_SLOTS; i++) + if (existing_slot != NULL) { - if (saved_chunks[i].pid == p.pid) - { - existing_slot = i; - break; - } - } - if (existing_slot >= 0) - { - str = &(saved_chunks[existing_slot].data); + str = &(existing_slot->data); appendBinaryStringInfo(str, cursor + PIPE_HEADER_SIZE, p.len); write_syslogger_file(str->data, str->len, dest); - saved_chunks[existing_slot].pid = 0; + /* Mark the buffer unused, and reclaim string storage */ + existing_slot->pid = 0; pfree(str->data); } else @@ -869,17 +905,27 @@ static void flush_pipe_input(char *logbuffer, int *bytes_in_logbuffer) { int i; - StringInfo str; /* Dump any incomplete protocol messages */ - for (i = 0; i < CHUNK_SLOTS; i++) + for (i = 0; i < NBUFFER_LISTS; i++) { - if (saved_chunks[i].pid != 0) + List *list = buffer_lists[i]; + ListCell *cell; + + foreach(cell, list) { - str = &(saved_chunks[i].data); - write_syslogger_file(str->data, str->len, LOG_DESTINATION_STDERR); - saved_chunks[i].pid = 0; - pfree(str->data); + save_buffer *buf = (save_buffer *) lfirst(cell); + + if (buf->pid != 0) + { + StringInfo str = &(buf->data); + + write_syslogger_file(str->data, str->len, + LOG_DESTINATION_STDERR); + /* Mark the buffer unused, and reclaim string storage */ + buf->pid = 0; + pfree(str->data); + } } } @@ -988,8 +1034,12 @@ pipeThread(void *arg) #endif /* WIN32 */ /* - * open the csv log file - we do this opportunistically, because + * Open the csv log file - we do this opportunistically, because * we don't know if CSV logging will be wanted. + * + * This is only used the first time we open the csv log in a given syslogger + * process, not during rotations. As with opening the main log file, we + * always append in this situation. */ static void open_csvlogfile(void) @@ -1000,7 +1050,10 @@ open_csvlogfile(void) csvlogFile = logfile_open(filename, "a", false); - pfree(filename); + if (last_csv_file_name != NULL) /* probably shouldn't happen */ + pfree(last_csv_file_name); + + last_csv_file_name = filename; } /* @@ -1079,14 +1132,7 @@ logfile_rotate(bool time_based_rotation, int size_rotation_for) * elapsed time and not something else, and (c) the computed file name is * different from what we were previously logging into. * - * Note: during the first rotation after forking off from the postmaster, - * last_file_name will be NULL. (We don't bother to set it in the - * postmaster because it ain't gonna work in the EXEC_BACKEND case.) So we - * will always append in that situation, even though truncating would - * usually be safe. - * - * For consistency, we treat CSV logs the same even though they aren't - * opened in the postmaster. + * Note: last_file_name should never be NULL here, but if it is, append. */ if (time_based_rotation || (size_rotation_for & LOG_DESTINATION_STDERR)) { @@ -1109,8 +1155,7 @@ logfile_rotate(bool time_based_rotation, int size_rotation_for) { ereport(LOG, (errmsg("disabling automatic rotation (use SIGHUP to re-enable)"))); - Log_RotationAge = 0; - Log_RotationSize = 0; + rotation_disabled = true; } if (filename) @@ -1154,8 +1199,7 @@ logfile_rotate(bool time_based_rotation, int size_rotation_for) { ereport(LOG, (errmsg("disabling automatic rotation (use SIGHUP to re-enable)"))); - Log_RotationAge = 0; - Log_RotationSize = 0; + rotation_disabled = true; } if (filename) diff --git a/src/backend/postmaster/walwriter.c b/src/backend/postmaster/walwriter.c index d0d7c9bebf..80991f6f56 100644 --- a/src/backend/postmaster/walwriter.c +++ b/src/backend/postmaster/walwriter.c @@ -177,6 +177,7 @@ WalWriterMain(void) false, true); /* we needn't bother with the other ResourceOwnerRelease phases */ AtEOXact_Buffers(false); + AtEOXact_SMgr(); AtEOXact_Files(); AtEOXact_HashTables(false); diff --git a/src/backend/regex/Makefile b/src/backend/regex/Makefile index 21e7fa5329..74a4c0c89d 100644 --- a/src/backend/regex/Makefile +++ b/src/backend/regex/Makefile @@ -12,7 +12,7 @@ subdir = src/backend/regex top_builddir = ../../.. include $(top_builddir)/src/Makefile.global -OBJS = regcomp.o regerror.o regexec.o regfree.o +OBJS = regcomp.o regerror.o regexec.o regfree.o regprefix.o include $(top_srcdir)/src/backend/common.mk diff --git a/src/backend/regex/regc_color.c b/src/backend/regex/regc_color.c index 2aeb861d97..e6aa899518 100644 --- a/src/backend/regex/regc_color.c +++ b/src/backend/regex/regc_color.c @@ -66,8 +66,9 @@ initcm(struct vars * v, cd = cm->cd; /* cm->cd[WHITE] */ cd->sub = NOSUB; cd->arcs = NULL; - cd->flags = 0; + cd->firstchr = CHR_MIN; cd->nchrs = CHR_MAX - CHR_MIN + 1; + cd->flags = 0; /* upper levels of tree */ for (t = &cm->tree[0], j = NBYTS - 1; j > 0; t = nextt, j--) @@ -246,7 +247,15 @@ newcolor(struct colormap * cm) /* oops, must allocate more */ struct colordesc *newCd; + if (cm->max == MAX_COLOR) + { + CERR(REG_ECOLORS); + return COLORLESS; /* too many colors */ + } + n = cm->ncds * 2; + if (n > MAX_COLOR + 1) + n = MAX_COLOR + 1; if (cm->cd == cm->cdspace) { newCd = (struct colordesc *) MALLOC(n * sizeof(struct colordesc)); @@ -272,6 +281,7 @@ newcolor(struct colormap * cm) cd->nchrs = 0; cd->sub = NOSUB; cd->arcs = NULL; + cd->firstchr = CHR_MIN; /* in case never set otherwise */ cd->flags = 0; cd->block = NULL; @@ -371,6 +381,8 @@ subcolor(struct colormap * cm, chr c) if (co == sco) /* already in an open subcolor */ return co; /* rest is redundant */ cm->cd[co].nchrs--; + if (cm->cd[sco].nchrs == 0) + cm->cd[sco].firstchr = c; cm->cd[sco].nchrs++; setcolor(cm, c, sco); return sco; @@ -438,6 +450,11 @@ subrange(struct vars * v, /* * subblock - allocate new subcolors for one tree block of chrs, fill in arcs + * + * Note: subcolors that are created during execution of this function + * will not be given a useful value of firstchr; it'll be left as CHR_MIN. + * For the current usage of firstchr in pg_regprefix, this does not matter + * because such subcolors won't occur in the common prefix of a regex. */ static void subblock(struct vars * v, diff --git a/src/backend/regex/regc_nfa.c b/src/backend/regex/regc_nfa.c index 66a361ee2f..170da5954c 100644 --- a/src/backend/regex/regc_nfa.c +++ b/src/backend/regex/regc_nfa.c @@ -174,11 +174,23 @@ newstate(struct nfa * nfa) { struct state *s; + /* + * 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. + */ + if (CANCEL_REQUESTED(nfa->v->re)) + { + NERR(REG_CANCEL); + return NULL; + } + if (TooManyStates(nfa)) { NERR(REG_ETOOBIG); return NULL; } + if (nfa->free != NULL) { s = nfa->free; @@ -455,6 +467,56 @@ freearc(struct nfa * nfa, from->free = victim; } +/* + * hasnonemptyout - Does state have a non-EMPTY out arc? + */ +static int +hasnonemptyout(struct state * s) +{ + struct arc *a; + + for (a = s->outs; a != NULL; a = a->outchain) + { + if (a->type != EMPTY) + return 1; + } + 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) + { + if (a->type != EMPTY) + n++; + } + return n; +} + +/* + * nonemptyins - count non-EMPTY in arcs of a state + */ +static int +nonemptyins(struct state * s) +{ + int n = 0; + struct arc *a; + + for (a = s->ins; a != NULL; a = a->inchain) + { + if (a->type != EMPTY) + n++; + } + return n; +} + /* * findarc - find arc, if any, from given source with given type and color * If there is more than one such arc, the result is random. @@ -511,19 +573,25 @@ moveins(struct nfa * nfa, } /* - * copyins - copy all in arcs of a state to another state + * 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) + struct state * newState, + int all) { struct arc *a; assert(oldState != newState); for (a = oldState->ins; a != NULL; a = a->inchain) - cparc(nfa, a, a->from, newState); + { + if (all || a->type != EMPTY) + cparc(nfa, a, a->from, newState); + } } /* @@ -546,19 +614,25 @@ moveouts(struct nfa * nfa, } /* - * copyouts - copy all out arcs of a state to another state + * copyouts - copy out arcs of a state to another state + * + * Either all arcs, or only non-empty ones as determined by all value. */ static void copyouts(struct nfa * nfa, struct state * oldState, - struct state * newState) + struct state * newState, + int all) { struct arc *a; assert(oldState != newState); for (a = oldState->outs; a != NULL; a = a->outchain) - cparc(nfa, a, newState, a->to); + { + if (all || a->type != EMPTY) + cparc(nfa, a, newState, a->to); + } } /* @@ -881,7 +955,7 @@ pull(struct nfa * nfa, if (NISERR()) return 0; assert(to != from); /* con is not an inarc */ - copyins(nfa, from, s); /* duplicate inarcs */ + copyins(nfa, from, s, 1); /* duplicate inarcs */ cparc(nfa, con, s, to); /* move constraint arc */ freearc(nfa, con); from = s; @@ -1027,7 +1101,7 @@ push(struct nfa * nfa, s = newstate(nfa); if (NISERR()) return 0; - copyouts(nfa, to, s); /* duplicate outarcs */ + copyouts(nfa, to, s, 1); /* duplicate outarcs */ cparc(nfa, con, from, s); /* move constraint */ freearc(nfa, con); to = s; @@ -1134,91 +1208,205 @@ fixempties(struct nfa * nfa, FILE *f) /* for debug output; NULL none */ { struct state *s; + struct state *s2; struct state *nexts; struct arc *a; struct arc *nexta; - int progress; - /* find and eliminate empties until there are no more */ - do + /* + * First, get rid of any states whose sole out-arc is an EMPTY, since + * they're basically just aliases for their successor. The parsing + * algorithm creates enough of these that it's worth special-casing this. + */ + for (s = nfa->states; s != NULL && !NISERR(); s = nexts) { - progress = 0; - for (s = nfa->states; s != NULL && !NISERR() && - s->no != FREESTATE; s = nexts) + nexts = s->next; + if (s->flag || s->nouts != 1) + continue; + a = s->outs; + assert(a != NULL && a->outchain == NULL); + if (a->type != EMPTY) + continue; + if (s != a->to) + moveins(nfa, s, a->to); + dropstate(nfa, s); + } + + /* + * Similarly, get rid of any state with a single EMPTY in-arc, by folding + * it into its predecessor. + */ + 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); + if (s->flag || s->nins != 1) + continue; + a = s->ins; + assert(a != NULL && a->inchain == NULL); + if (a->type != EMPTY) + continue; + if (s != a->from) + moveouts(nfa, s, a->from); + dropstate(nfa, s); + } + + /* + * 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 + * 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. + */ + for (s = nfa->states; s != NULL && !NISERR(); s = s->next) + { + for (s2 = emptyreachable(s, s); s2 != s && !NISERR(); s2 = nexts) { - nexts = s->next; - for (a = s->outs; a != NULL && !NISERR(); a = nexta) - { - nexta = a->outchain; - if (a->type == EMPTY && unempty(nfa, a)) - progress = 1; - assert(nexta == NULL || s->no != FREESTATE); - } + /* + * 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); + + /* Reset the tmp fields as we walk back */ + nexts = s2->tmp; + s2->tmp = NULL; } - if (progress && f != NULL) - dumpnfa(nfa, f); - } while (progress && !NISERR()); + s->tmp = NULL; + } + + if (NISERR()) + return; + + /* + * Now remove all the EMPTY arcs, since we don't need them anymore. + */ + for (s = nfa->states; s != NULL; s = s->next) + { + for (a = s->outs; a != NULL; a = nexta) + { + nexta = a->outchain; + if (a->type == EMPTY) + freearc(nfa, a); + } + } + + /* + * And 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.) + */ + for (s = nfa->states; s != NULL; s = nexts) + { + nexts = s->next; + if ((s->nins == 0 || s->nouts == 0) && !s->flag) + dropstate(nfa, s); + } + + if (f != NULL) + dumpnfa(nfa, f); } /* - * unempty - optimize out an EMPTY arc, if possible + * emptyreachable - recursively find all states reachable from s by EMPTY arcs * - * Actually, as it stands this function always succeeds, but the return - * value is kept with an eye on possible future changes. + * 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. + * + * 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. */ -static int /* 0 couldn't, 1 could */ -unempty(struct nfa * nfa, - struct arc * a) +static struct state * +emptyreachable(struct state * s, struct state * lastfound) { - struct state *from = a->from; - struct state *to = a->to; - int usefrom; /* work on from, as opposed to to? */ - - assert(a->type == EMPTY); - assert(from != nfa->pre && to != nfa->post); + struct arc *a; - if (from == to) - { /* vacuous loop */ - freearc(nfa, a); - return 1; + s->tmp = lastfound; + lastfound = s; + for (a = s->outs; a != NULL; a = a->outchain) + { + if (a->type == EMPTY && a->to->tmp == NULL) + lastfound = emptyreachable(a->to, lastfound); } + return lastfound; +} + +/* + * replaceempty - replace an EMPTY arc chain with some non-empty 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(). + */ +static void +replaceempty(struct nfa * nfa, + struct state * from, + struct state * to) +{ + int fromouts; + int toins; + + assert(from != to); - /* decide which end to work on */ - usefrom = 1; /* default: attack from */ - if (from->nouts > to->nins) - usefrom = 0; - else if (from->nouts == to->nins) + /* + * 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. + * + * 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. + */ + fromouts = nonemptyouts(from); + toins = (fromouts == 0) ? 1 : nonemptyins(to); + + if (fromouts > toins) { - /* decide on secondary issue: move/copy fewest arcs */ - if (from->nins > to->nouts) - usefrom = 0; + copyouts(nfa, to, from, 0); + return; + } + if (fromouts < toins) + { + copyins(nfa, from, to, 0); + return; } - freearc(nfa, a); - if (usefrom) + /* + * fromouts == toins. Decide on secondary issue: copy fewest arcs. + * + * 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. + */ + if (from->nins > to->nouts) { - if (from->nouts == 0) - { - /* was the state's only outarc */ - moveins(nfa, from, to); - freestate(nfa, from); - } - else - copyins(nfa, from, to); + copyouts(nfa, to, from, 0); + return; } else { - if (to->nins == 0) - { - /* was the state's only inarc */ - moveouts(nfa, to, from); - freestate(nfa, to); - } - else - copyouts(nfa, to, from); + copyins(nfa, from, to, 0); + return; } - - return 1; } /* @@ -1330,14 +1518,16 @@ compact(struct nfa * nfa, for (s = nfa->states; s != NULL; s = s->next) { nstates++; - narcs += 1 + s->nouts + 1; - /* 1 as a fake for flags, nouts for arcs, 1 as endmarker */ + narcs += s->nouts + 1; /* need one extra for endmarker */ } + cnfa->stflags = (char *) MALLOC(nstates * sizeof(char)); cnfa->states = (struct carc **) MALLOC(nstates * sizeof(struct carc *)); cnfa->arcs = (struct carc *) MALLOC(narcs * sizeof(struct carc)); - if (cnfa->states == NULL || cnfa->arcs == NULL) + if (cnfa->stflags == NULL || cnfa->states == NULL || cnfa->arcs == NULL) { + if (cnfa->stflags != NULL) + FREE(cnfa->stflags); if (cnfa->states != NULL) FREE(cnfa->states); if (cnfa->arcs != NULL) @@ -1359,9 +1549,8 @@ compact(struct nfa * nfa, for (s = nfa->states; s != NULL; s = s->next) { assert((size_t) s->no < nstates); + cnfa->stflags[s->no] = 0; cnfa->states[s->no] = ca; - ca->co = 0; /* clear and skip flags "arc" */ - ca++; first = ca; for (a = s->outs; a != NULL; a = a->outchain) switch (a->type) @@ -1392,8 +1581,8 @@ compact(struct nfa * nfa, /* mark no-progress states */ for (a = nfa->pre->outs; a != NULL; a = a->outchain) - cnfa->states[a->to->no]->co = 1; - cnfa->states[nfa->pre->no]->co = 1; + cnfa->stflags[a->to->no] = CNFA_NOPROGRESS; + cnfa->stflags[nfa->pre->no] = CNFA_NOPROGRESS; } /* @@ -1433,6 +1622,7 @@ freecnfa(struct cnfa * cnfa) { assert(cnfa->nstates != 0); /* not empty already */ cnfa->nstates = 0; + FREE(cnfa->stflags); FREE(cnfa->states); FREE(cnfa->arcs); } @@ -1617,7 +1807,7 @@ dumpcnfa(struct cnfa * cnfa, fprintf(f, ", haslacons"); fprintf(f, "\n"); for (st = 0; st < cnfa->nstates; st++) - dumpcstate(st, cnfa->states[st], cnfa, f); + dumpcstate(st, cnfa, f); fflush(f); } #endif @@ -1629,22 +1819,20 @@ dumpcnfa(struct cnfa * cnfa, */ static void dumpcstate(int st, - struct carc * ca, struct cnfa * cnfa, FILE *f) { - int i; + struct carc * ca; int pos; - fprintf(f, "%d%s", st, (ca[0].co) ? ":" : "."); + fprintf(f, "%d%s", st, (cnfa->stflags[st] & CNFA_NOPROGRESS) ? ":" : "."); pos = 1; - for (i = 1; ca[i].co != COLORLESS; i++) + for (ca = cnfa->states[st]; ca->co != COLORLESS; ca++) { - if (ca[i].co < cnfa->ncolors) - fprintf(f, "\t[%ld]->%d", (long) ca[i].co, ca[i].to); + if (ca->co < cnfa->ncolors) + fprintf(f, "\t[%ld]->%d", (long) ca->co, ca->to); else - fprintf(f, "\t:%ld:->%d", (long) ca[i].co - cnfa->ncolors, - ca[i].to); + fprintf(f, "\t:%ld:->%d", (long) (ca->co - cnfa->ncolors), ca->to); if (pos == 5) { fprintf(f, "\n"); @@ -1653,7 +1841,7 @@ dumpcstate(int st, else pos++; } - if (i == 1 || pos != 1) + if (ca == cnfa->states[st] || pos != 1) fprintf(f, "\n"); fflush(f); } diff --git a/src/backend/regex/regcomp.c b/src/backend/regex/regcomp.c index bd4d4c3761..2ddcdff09a 100644 --- a/src/backend/regex/regcomp.c +++ b/src/backend/regex/regcomp.c @@ -34,6 +34,8 @@ #include "regex/regguts.h" +#include "miscadmin.h" /* needed by rcancelrequested() */ + /* * forward declarations, up here so forward datatypes etc. are defined early */ @@ -67,6 +69,7 @@ static long nfanode(struct vars *, struct subre *, FILE *); 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); #ifdef REG_DEBUG static void dump(regex_t *, FILE *); @@ -122,12 +125,15 @@ static void destroystate(struct nfa *, struct state *); static void newarc(struct nfa *, int, pcolor, struct state *, struct state *); static struct arc *allocarc(struct nfa *, struct state *); static void freearc(struct nfa *, struct arc *); +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 moveins(struct nfa *, struct state *, struct state *); -static void copyins(struct nfa *, struct state *, struct state *); +static void copyins(struct nfa *, struct state *, struct state *, int); static void moveouts(struct nfa *, struct state *, struct state *); -static void copyouts(struct nfa *, struct state *, struct state *); +static void copyouts(struct nfa *, struct state *, struct state *, int); 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 *); @@ -146,7 +152,8 @@ static int push(struct nfa *, struct arc *); #define COMPATIBLE 3 /* compatible but not satisfied yet */ static int combine(struct arc *, struct arc *); static void fixempties(struct nfa *, FILE *); -static int unempty(struct nfa *, struct arc *); +static struct state *emptyreachable(struct state *, struct state *); +static void replaceempty(struct nfa *, struct state *, struct state *); 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 *); @@ -162,7 +169,7 @@ 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 carc *, struct cnfa *, FILE *); +static void dumpcstate(int, struct cnfa *, FILE *); #endif /* === regc_cvec.c === */ static struct cvec *newcvec(int, int); @@ -272,12 +279,16 @@ struct vars /* static function list */ static struct fns functions = { rfree, /* regfree insides */ + rcancelrequested /* check for cancel request */ }; /* * pg_regcomp - compile regular expression + * + * Note: on failure, no resources remain allocated, so pg_regfree() + * need not be applied to re. */ int pg_regcomp(regex_t *re, @@ -579,7 +590,7 @@ makesearch(struct vars * v, for (s = slist; s != NULL; s = s2) { s2 = newstate(nfa); - copyouts(nfa, s, s2); + copyouts(nfa, s, s2, 1); for (a = s->ins; a != NULL; a = b) { b = a->inchain; @@ -708,6 +719,7 @@ parsebranch(struct vars * v, /* NB, recursion in parseqatom() may swallow rest of branch */ parseqatom(v, stopper, type, lp, right, t); + NOERRN(); } if (!seencontent) @@ -1087,8 +1099,12 @@ parseqatom(struct vars * v, NOERR(); } - /* it's quantifier time; first, turn x{0,...} into x{1,...}|empty */ - if (m == 0) + /* + * It's quantifier time. If the atom is just a BACKREF, we'll let it deal + * with quantifiers internally. Otherwise, the first step is to turn + * x{0,...} into x{1,...}|empty + */ + if (m == 0 && atomtype != BACKREF) { EMPTYARC(s2, atom->end); /* the bypass */ assert(PREF(qprefer) != 0); @@ -1148,6 +1164,7 @@ parseqatom(struct vars * v, EMPTYARC(atom->end, rp); t->right = subre(v, '=', 0, atom->end, rp); } + NOERR(); assert(SEE('|') || SEE(stopper) || SEE(EOS)); t->flags |= COMBINE(t->flags, t->right->flags); top->flags |= COMBINE(top->flags, t->flags); @@ -1849,15 +1866,34 @@ rfree(regex_t *re) g = (struct guts *) re->re_guts; re->re_guts = NULL; re->re_fns = NULL; - g->magic = 0; - freecm(&g->cmap); - if (g->tree != NULL) - freesubre((struct vars *) NULL, g->tree); - if (g->lacons != NULL) - freelacons(g->lacons, g->nlacons); - if (!NULLCNFA(g->search)) - freecnfa(&g->search); - FREE(g); + if (g != NULL) + { + g->magic = 0; + freecm(&g->cmap); + if (g->tree != NULL) + freesubre((struct vars *) NULL, g->tree); + if (g->lacons != NULL) + freelacons(g->lacons, g->nlacons); + if (!NULLCNFA(g->search)) + freecnfa(&g->search); + FREE(g); + } +} + +/* + * rcancelrequested - check for external request to cancel regex operation + * + * Return nonzero to fail the operation with error code REG_CANCEL, + * 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 +rcancelrequested(void) +{ + return InterruptPending && (QueryCancelPending || ProcDiePending); } #ifdef REG_DEBUG diff --git a/src/backend/regex/rege_dfa.c b/src/backend/regex/rege_dfa.c index e521261a57..5efb761d6d 100644 --- a/src/backend/regex/rege_dfa.c +++ b/src/backend/regex/rege_dfa.c @@ -458,14 +458,14 @@ miss(struct vars * v, /* used only for debug flags */ gotstate = 0; for (i = 0; i < d->nstates; i++) if (ISBSET(css->states, i)) - for (ca = cnfa->states[i] + 1; ca->co != COLORLESS; ca++) + for (ca = cnfa->states[i]; ca->co != COLORLESS; ca++) if (ca->co == co) { BSET(d->work, ca->to); gotstate = 1; if (ca->to == cnfa->post) ispost = 1; - if (!cnfa->states[ca->to]->co) + if (!(cnfa->stflags[ca->to] & CNFA_NOPROGRESS)) noprogress = 0; FDEBUG(("%d -> %d\n", i, ca->to)); } @@ -476,10 +476,9 @@ miss(struct vars * v, /* used only for debug flags */ dolacons = 0; for (i = 0; i < d->nstates; i++) if (ISBSET(d->work, i)) - for (ca = cnfa->states[i] + 1; ca->co != COLORLESS; - ca++) + for (ca = cnfa->states[i]; ca->co != COLORLESS; ca++) { - if (ca->co <= cnfa->ncolors) + if (ca->co < cnfa->ncolors) continue; /* NOTE CONTINUE */ sawlacons = 1; if (ISBSET(d->work, ca->to)) @@ -490,7 +489,7 @@ miss(struct vars * v, /* used only for debug flags */ dolacons = 1; if (ca->to == cnfa->post) ispost = 1; - if (!cnfa->states[ca->to]->co) + if (!(cnfa->stflags[ca->to] & CNFA_NOPROGRESS)) noprogress = 0; FDEBUG(("%d :> %d\n", i, ca->to)); } diff --git a/src/backend/regex/regexec.c b/src/backend/regex/regexec.c index 7dc0ddba29..7cd6679ede 100644 --- a/src/backend/regex/regexec.c +++ b/src/backend/regex/regexec.c @@ -467,19 +467,21 @@ cfindloop(struct vars * v, *coldp = cold; return er; } - if ((shorter) ? end == estop : end == begin) - { - /* no point in trying again */ - *coldp = cold; - return REG_NOMATCH; - } - /* go around and try again */ + /* try next shorter/longer match with same begin point */ if (shorter) + { + if (end == estop) + break; /* NOTE BREAK OUT */ estart = end + 1; + } else + { + if (end == begin) + break; /* NOTE BREAK OUT */ estop = end - 1; - } - } + } + } /* end loop over endpoint positions */ + } /* end loop over beginning positions */ } while (close < v->stop); *coldp = cold; @@ -711,6 +713,10 @@ cdissect(struct vars * v, assert(t != NULL); MDEBUG(("cdissect %ld-%ld %c\n", LOFF(begin), LOFF(end), t->op)); + /* handy place to check for operation cancel */ + if (CANCEL_REQUESTED(v->re)) + return REG_CANCEL; + switch (t->op) { case '=': /* terminal node */ @@ -719,7 +725,7 @@ cdissect(struct vars * v, case '|': /* alternation */ assert(t->left != NULL); return caltdissect(v, t, begin, end); - case 'b': /* back ref -- shouldn't be calling us! */ + case 'b': /* back reference */ assert(t->left == NULL && t->right == NULL); return cbrdissect(v, t, begin, end); case '.': /* concatenation */ @@ -976,12 +982,12 @@ cbrdissect(struct vars * v, chr *begin, /* beginning of relevant substring */ chr *end) /* end of same */ { - int i; int n = t->subno; - size_t len; - chr *paren; + size_t numreps; + size_t tlen; + size_t brlen; + chr *brstring; chr *p; - chr *stop; int min = t->min; int max = t->max; @@ -992,46 +998,65 @@ cbrdissect(struct vars * v, MDEBUG(("cbackref n%d %d{%d-%d}\n", t->retry, n, min, max)); + /* get the backreferenced string */ if (v->pmatch[n].rm_so == -1) return REG_NOMATCH; - paren = v->start + v->pmatch[n].rm_so; - len = v->pmatch[n].rm_eo - v->pmatch[n].rm_so; + brstring = v->start + v->pmatch[n].rm_so; + brlen = v->pmatch[n].rm_eo - v->pmatch[n].rm_so; /* no room to maneuver -- retries are pointless */ if (v->mem[t->retry]) return REG_NOMATCH; v->mem[t->retry] = 1; - /* special-case zero-length string */ - if (len == 0) + /* special cases for zero-length strings */ + if (brlen == 0) { - if (begin == end) + /* + * matches only if target is zero length, but any number of + * repetitions can be considered to be present + */ + if (begin == end && min <= max) + { + MDEBUG(("cbackref matched trivially\n")); + return REG_OKAY; + } + return REG_NOMATCH; + } + if (begin == end) + { + /* matches only if zero repetitions are okay */ + if (min == 0) + { + MDEBUG(("cbackref matched trivially\n")); return REG_OKAY; + } return REG_NOMATCH; } - /* and too-short string */ - assert(end >= begin); - if ((size_t) (end - begin) < len) + /* + * check target length to see if it could possibly be an allowed number of + * repetitions of brstring + */ + assert(end > begin); + tlen = end - begin; + if (tlen % brlen != 0) + return REG_NOMATCH; + numreps = tlen / brlen; + if (numreps < min || (numreps > max && max != INFINITY)) return REG_NOMATCH; - stop = end - len; - /* count occurrences */ - i = 0; - for (p = begin; p <= stop && (i < max || max == INFINITY); p += len) + /* okay, compare the actual string contents */ + p = begin; + while (numreps-- > 0) { - if ((*v->g->compare) (paren, p, len) != 0) - break; - i++; + if ((*v->g->compare) (brstring, p, brlen) != 0) + return REG_NOMATCH; + p += brlen; } - MDEBUG(("cbackref found %d\n", i)); - /* and sort it out */ - if (p != end) /* didn't consume all of it */ - return REG_NOMATCH; - if (min <= i && (i <= max || max == INFINITY)) - return REG_OKAY; - return REG_NOMATCH; /* out of range */ + MDEBUG(("cbackref matched\n")); + return REG_OKAY; } /* diff --git a/src/backend/regex/regprefix.c b/src/backend/regex/regprefix.c new file mode 100644 index 0000000000..6f91288e9d --- /dev/null +++ b/src/backend/regex/regprefix.c @@ -0,0 +1,259 @@ +/*------------------------------------------------------------------------- + * + * regprefix.c + * Extract a common prefix, if any, from a compiled regex. + * + * + * Portions Copyright (c) 2012, PostgreSQL Global Development Group + * Portions Copyright (c) 1998, 1999 Henry Spencer + * + * IDENTIFICATION + * src/backend/regex/regprefix.c + * + *------------------------------------------------------------------------- + */ + +#include "regex/regguts.h" + + +/* + * forward declarations + */ +static int findprefix(struct cnfa * cnfa, struct colormap * cm, + chr *string, size_t *slength); + + +/* + * pg_regprefix - get common prefix for regular expression + * + * Returns one of: + * REG_NOMATCH: there is no common prefix of strings matching the regex + * REG_PREFIX: there is a common prefix of strings matching the regex + * REG_EXACT: all strings satisfying the regex must match the same string + * or a REG_XXX error code + * + * In the non-failure cases, *string is set to a malloc'd string containing + * the common prefix or exact value, of length *slength (measured in chrs + * not bytes!). + * + * This function does not analyze all complex cases (such as lookahead + * constraints) exactly. Therefore it is possible that some strings matching + * the reported prefix or exact-match string do not satisfy the regex. But + * it should never be the case that a string satisfying the regex does not + * match the reported prefix or exact-match string. + */ +int +pg_regprefix(regex_t *re, + chr **string, + size_t *slength) +{ + struct guts *g; + struct cnfa *cnfa; + int st; + + /* sanity checks */ + if (string == NULL || slength == NULL) + return REG_INVARG; + *string = NULL; /* initialize for failure cases */ + *slength = 0; + if (re == NULL || re->re_magic != REMAGIC) + return REG_INVARG; + if (re->re_csize != sizeof(chr)) + return REG_MIXED; + + /* Initialize locale-dependent support */ + pg_set_regex_collation(re->re_collation); + + /* setup */ + g = (struct guts *) re->re_guts; + if (g->info & REG_UIMPOSSIBLE) + return REG_NOMATCH; + + /* + * This implementation considers only the search NFA for the topmost regex + * tree node. Therefore, constraints such as backrefs are not fully + * applied, which is allowed per the function's API spec. + */ + assert(g->tree != NULL); + cnfa = &g->tree->cnfa; + + /* + * Since a correct NFA should never contain any exit-free loops, it should + * not be possible for our traversal to return to a previously visited + * NFA state. Hence we need at most nstates chrs in the output string. + */ + *string = (chr *) MALLOC(cnfa->nstates * sizeof(chr)); + if (*string == NULL) + return REG_ESPACE; + + /* do it */ + st = findprefix(cnfa, &g->cmap, *string, slength); + + assert(*slength <= cnfa->nstates); + + /* clean up */ + if (st != REG_PREFIX && st != REG_EXACT) + { + FREE(*string); + *string = NULL; + *slength = 0; + } + + return st; +} + +/* + * findprefix - extract common prefix from cNFA + * + * Results are returned into the preallocated chr array string[], with + * *slength (which must be preset to zero) incremented for each chr. + */ +static int /* regprefix return code */ +findprefix(struct cnfa * cnfa, + struct colormap * cm, + chr *string, + size_t *slength) +{ + int st; + int nextst; + color thiscolor; + chr c; + struct carc *ca; + + /* + * The "pre" state must have only BOS/BOL outarcs, else pattern isn't + * anchored left. If we have both BOS and BOL, they must go to the + * same next state. + */ + st = cnfa->pre; + nextst = -1; + for (ca = cnfa->states[st]; ca->co != COLORLESS; ca++) + { + if (ca->co == cnfa->bos[0] || ca->co == cnfa->bos[1]) + { + if (nextst == -1) + nextst = ca->to; + else if (nextst != ca->to) + return REG_NOMATCH; + } + else + return REG_NOMATCH; + } + if (nextst == -1) + return REG_NOMATCH; + + /* + * Scan through successive states, stopping as soon as we find one with + * more than one acceptable transition character (either multiple colors + * on out-arcs, or a color with more than one member chr). + * + * We could find a state with multiple out-arcs that are all labeled with + * the same singleton color; this comes from patterns like "^ab(cde|cxy)". + * In that case we add the chr "c" to the output string but then exit the + * loop with nextst == -1. This leaves a little bit on the table: if the + * pattern is like "^ab(cde|cdy)", we won't notice that "d" could be added + * to the prefix. But chasing multiple parallel state chains doesn't seem + * worth the trouble. + */ + do + { + st = nextst; + nextst = -1; + 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 */ + 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]) + { + thiscolor = COLORLESS; + break; + } + if (thiscolor == COLORLESS) + { + /* First plain outarc */ + thiscolor = ca->co; + nextst = ca->to; + } + else if (thiscolor == ca->co) + { + /* Another plain outarc for same color */ + nextst = -1; + } + else + { + /* More than one plain outarc color terminates the search */ + thiscolor = COLORLESS; + break; + } + } + /* Done if we didn't find exactly one color on plain outarcs */ + if (thiscolor == COLORLESS) + break; + /* The color must be a singleton */ + if (cm->cd[thiscolor].nchrs != 1) + break; + + /* + * Identify the color's sole member chr and add it to the prefix + * string. In general the colormap data structure doesn't provide a + * way to find color member chrs, except by trying GETCOLOR() on each + * possible chr value, which won't do at all. However, for the cases + * we care about it should be sufficient to test the "firstchr" value, + * that is the first chr ever added to the color. There are cases + * where this might no longer be a member of the color (so we do need + * to test), but none of them are likely to arise for a character that + * is a member of a common prefix. If we do hit such a corner case, + * we just fall out without adding anything to the prefix string. + */ + c = cm->cd[thiscolor].firstchr; + if (GETCOLOR(cm, c) != thiscolor) + break; + + string[(*slength)++] = c; + + /* Advance to next state, but only if we have a unique next state */ + } while (nextst != -1); + + /* + * If we ended at a state that only has EOS/EOL outarcs leading to the + * "post" state, then we have an exact-match string. Note this is true + * even if the string is of zero length. + */ + nextst = -1; + for (ca = cnfa->states[st]; ca->co != COLORLESS; ca++) + { + if (ca->co == cnfa->eos[0] || ca->co == cnfa->eos[1]) + { + if (nextst == -1) + nextst = ca->to; + else if (nextst != ca->to) + { + nextst = -1; + break; + } + } + else + { + nextst = -1; + break; + } + } + if (nextst == cnfa->post) + return REG_EXACT; + + /* + * Otherwise, if we were unable to identify any prefix characters, say + * NOMATCH --- the pattern is anchored left, but doesn't specify any + * particular first character. + */ + if (*slength > 0) + return REG_PREFIX; + + return REG_NOMATCH; +} diff --git a/src/backend/replication/Makefile b/src/backend/replication/Makefile index 3fe490e580..9d9ec87c9a 100644 --- a/src/backend/replication/Makefile +++ b/src/backend/replication/Makefile @@ -12,6 +12,8 @@ subdir = src/backend/replication top_builddir = ../../.. include $(top_builddir)/src/Makefile.global +override CPPFLAGS := -I$(srcdir) $(CPPFLAGS) + OBJS = walsender.o walreceiverfuncs.o walreceiver.o basebackup.o \ repl_gram.o syncrep.o diff --git a/src/backend/replication/basebackup.c b/src/backend/replication/basebackup.c index 030a283e81..a387f42a60 100644 --- a/src/backend/replication/basebackup.c +++ b/src/backend/replication/basebackup.c @@ -18,10 +18,12 @@ #include #include "access/xlog_internal.h" /* for pg_start/stop_backup */ +#include "catalog/catalog.h" #include "catalog/pg_type.h" #include "lib/stringinfo.h" #include "libpq/libpq.h" #include "libpq/pqformat.h" +#include "miscadmin.h" #include "nodes/pg_list.h" #include "replication/basebackup.h" #include "replication/walsender.h" @@ -42,11 +44,12 @@ typedef struct } basebackup_options; -static int64 sendDir(char *path, int basepathlen, bool sizeonly); -static void sendFile(char *readfilename, char *tarfilename, - struct stat * statbuf); +static int64 sendDir(char *path, int basepathlen, bool sizeonly, List *tablespaces); +static int64 sendTablespace(char *path, bool sizeonly); +static bool sendFile(char *readfilename, char *tarfilename, + struct stat * statbuf, bool missing_ok); static void sendFileWithContent(const char *filename, const char *content); -static void _tarWriteHeader(const char *filename, char *linktarget, +static void _tarWriteHeader(const char *filename, const char *linktarget, struct stat * statbuf); static void send_int8_string(StringInfoData *buf, int64 intval); static void SendBackupHeader(List *tablespaces); @@ -66,6 +69,7 @@ typedef struct { char *oid; char *path; + char *rpath; /* relative path within PGDATA, or NULL */ int64 size; } tablespaceinfo; @@ -92,6 +96,9 @@ perform_base_backup(basebackup_options *opt, DIR *tblspcdir) XLogRecPtr startptr; XLogRecPtr endptr; char *labelfile; + int datadirpathlen; + + datadirpathlen = strlen(DataDir); startptr = do_pg_start_backup(opt->label, opt->fastcheckpoint, &labelfile); SendXlogRecPtrResult(startptr); @@ -108,6 +115,8 @@ perform_base_backup(basebackup_options *opt, DIR *tblspcdir) { char fullpath[MAXPGPATH]; char linkpath[MAXPGPATH]; + char *relpath = NULL; + int rllen; /* Skip special stuff */ if (strcmp(de->d_name, ".") == 0 || strcmp(de->d_name, "..") == 0) @@ -115,24 +124,55 @@ perform_base_backup(basebackup_options *opt, DIR *tblspcdir) snprintf(fullpath, sizeof(fullpath), "pg_tblspc/%s", de->d_name); - MemSet(linkpath, 0, sizeof(linkpath)); - if (readlink(fullpath, linkpath, sizeof(linkpath) - 1) == -1) +#if defined(HAVE_READLINK) || defined(WIN32) + rllen = readlink(fullpath, linkpath, sizeof(linkpath)); + if (rllen < 0) + { + ereport(WARNING, + (errmsg("could not read symbolic link \"%s\": %m", + fullpath))); + continue; + } + else if (rllen >= sizeof(linkpath)) { ereport(WARNING, - (errmsg("unable to read symbolic link %s: %m", fullpath))); + (errmsg("symbolic link \"%s\" target is too long", + fullpath))); continue; } + linkpath[rllen] = '\0'; + + /* + * Relpath holds the relative path of the tablespace directory + * when it's located within PGDATA, or NULL if it's located + * elsewhere. + */ + if (rllen > datadirpathlen && + strncmp(linkpath, DataDir, datadirpathlen) == 0 && + IS_DIR_SEP(linkpath[datadirpathlen])) + relpath = linkpath + datadirpathlen + 1; ti = palloc(sizeof(tablespaceinfo)); ti->oid = pstrdup(de->d_name); ti->path = pstrdup(linkpath); - ti->size = opt->progress ? sendDir(linkpath, strlen(linkpath), true) : -1; + ti->rpath = relpath ? pstrdup(relpath) : NULL; + ti->size = opt->progress ? sendTablespace(fullpath, true) : -1; tablespaces = lappend(tablespaces, ti); +#else + /* + * If the platform does not have symbolic links, it should not be + * possible to have tablespaces - clearly somebody else created + * them. Warn about it and ignore. + */ + ereport(WARNING, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("tablespaces are not supported on this platform"))); +#endif } /* Add a node for the base directory at the end */ ti = palloc0(sizeof(tablespaceinfo)); - ti->size = opt->progress ? sendDir(".", 1, true) : -1; + ti->size = opt->progress ? sendDir(".", 1, true, tablespaces) : -1; tablespaces = lappend(tablespaces, ti); /* Send tablespace header */ @@ -150,13 +190,26 @@ perform_base_backup(basebackup_options *opt, DIR *tblspcdir) pq_sendint(&buf, 0, 2); /* natts */ pq_endmessage(&buf); - /* In the main tar, include the backup_label first. */ if (ti->path == NULL) + { + struct stat statbuf; + + /* In the main tar, include the backup_label first... */ sendFileWithContent(BACKUP_LABEL_FILE, labelfile); - sendDir(ti->path == NULL ? "." : ti->path, - ti->path == NULL ? 1 : strlen(ti->path), - false); + /* ... then the bulk of the files ... */ + sendDir(".", 1, false, tablespaces); + + /* ... and pg_control after everything else. */ + if (lstat(XLOG_CONTROL_FILE, &statbuf) != 0) + ereport(ERROR, + (errcode_for_file_access(), + errmsg("could not stat control file \"%s\": %m", + XLOG_CONTROL_FILE))); + sendFile(XLOG_CONTROL_FILE, XLOG_CONTROL_FILE, &statbuf, false); + } + else + sendTablespace(ti->path, false); /* * If we're including WAL, and this is the main data directory we @@ -363,7 +416,7 @@ SendBaseBackup(BaseBackupCmd *cmd) dir = AllocateDir("pg_tblspc"); if (!dir) ereport(ERROR, - (errmsg("unable to open directory pg_tblspc: %m"))); + (errmsg("could not open directory \"pg_tblspc\": %m"))); perform_base_backup(&opt, dir); @@ -531,13 +584,61 @@ sendFileWithContent(const char *filename, const char *content) } } +/* + * Include the tablespace directory pointed to by 'path' in the output tar + * stream. If 'sizeonly' is true, we just calculate a total length and return + * it, without actually sending anything. + * + * Only used to send auxiliary tablespaces, not PGDATA. + */ +static int64 +sendTablespace(char *path, bool sizeonly) +{ + int64 size; + char pathbuf[MAXPGPATH]; + struct stat statbuf; + + /* + * 'path' points to the tablespace location, but we only want to include + * the version directory in it that belongs to us. + */ + snprintf(pathbuf, sizeof(pathbuf), "%s/%s", path, + TABLESPACE_VERSION_DIRECTORY); + + /* + * Store a directory entry in the tar file so we get the permissions right. + */ + if (lstat(pathbuf, &statbuf) != 0) + { + if (errno != ENOENT) + ereport(ERROR, + (errcode_for_file_access(), + errmsg("could not stat file or directory \"%s\": %m", + pathbuf))); + + /* If the tablespace went away while scanning, it's no error. */ + return 0; + } + if (!sizeonly) + _tarWriteHeader(TABLESPACE_VERSION_DIRECTORY, NULL, &statbuf); + size = 512; /* Size of the header just added */ + + /* Send all the files in the tablespace version directory */ + size += sendDir(pathbuf, strlen(path), sizeonly, NIL); + + return size; +} + /* * Include all files from the given directory in the output tar stream. If - * 'sizeonly' is true, we just calculate a total length and return ig, without + * 'sizeonly' is true, we just calculate a total length and return it, without * actually sending anything. + * + * Omit any directory in the tablespaces list, to avoid backing up + * tablespaces twice when they were created inside PGDATA. */ static int64 -sendDir(char *path, int basepathlen, bool sizeonly) +sendDir(char *path, int basepathlen, bool sizeonly, List *tablespaces) { DIR *dir; struct dirent *de; @@ -577,15 +678,16 @@ sendDir(char *path, int basepathlen, bool sizeonly) snprintf(pathbuf, MAXPGPATH, "%s/%s", path, de->d_name); - /* Skip postmaster.pid in the data directory */ - if (strcmp(pathbuf, "./postmaster.pid") == 0) + /* Skip postmaster.pid and postmaster.opts in the data directory */ + if (strcmp(pathbuf, "./postmaster.pid") == 0 || + strcmp(pathbuf, "./postmaster.opts") == 0) continue; if (lstat(pathbuf, &statbuf) != 0) { if (errno != ENOENT) ereport(ERROR, - (errcode(errcode_for_file_access()), + (errcode_for_file_access(), errmsg("could not stat file or directory \"%s\": %m", pathbuf))); @@ -615,27 +717,51 @@ sendDir(char *path, int basepathlen, bool sizeonly) continue; /* don't recurse into pg_xlog */ } + /* Allow symbolic links in pg_tblspc only */ + if (strcmp(path, "./pg_tblspc") == 0 && #ifndef WIN32 - if (S_ISLNK(statbuf.st_mode) && strcmp(path, "./pg_tblspc") == 0) + S_ISLNK(statbuf.st_mode) #else - if (pgwin32_is_junction(pathbuf) && strcmp(path, "./pg_tblspc") == 0) + pgwin32_is_junction(pathbuf) #endif + ) { - /* Allow symbolic links in pg_tblspc */ +#if defined(HAVE_READLINK) || defined(WIN32) char linkpath[MAXPGPATH]; + int rllen; - MemSet(linkpath, 0, sizeof(linkpath)); - if (readlink(pathbuf, linkpath, sizeof(linkpath) - 1) == -1) + rllen = readlink(pathbuf, linkpath, sizeof(linkpath)); + if (rllen < 0) ereport(ERROR, - (errcode(errcode_for_file_access()), + (errcode_for_file_access(), errmsg("could not read symbolic link \"%s\": %m", pathbuf))); + if (rllen >= sizeof(linkpath)) + ereport(ERROR, + (errmsg("symbolic link \"%s\" target is too long", + pathbuf))); + linkpath[rllen] = '\0'; + if (!sizeonly) _tarWriteHeader(pathbuf + basepathlen + 1, linkpath, &statbuf); size += 512; /* Size of the header just added */ +#else + /* + * If the platform does not have symbolic links, it should not be + * possible to have tablespaces - clearly somebody else created + * them. Warn about it and ignore. + */ + ereport(WARNING, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("tablespaces are not supported on this platform"))); + continue; +#endif /* HAVE_READLINK */ } else if (S_ISDIR(statbuf.st_mode)) { + bool skip_this_dir = false; + ListCell *lc; + /* * Store a directory entry in the tar file so we can get the * permissions right. @@ -644,16 +770,44 @@ sendDir(char *path, int basepathlen, bool sizeonly) _tarWriteHeader(pathbuf + basepathlen + 1, NULL, &statbuf); size += 512; /* Size of the header just added */ - /* call ourselves recursively for a directory */ - size += sendDir(pathbuf, basepathlen, sizeonly); + /* + * Call ourselves recursively for a directory, unless it happens + * to be a separate tablespace located within PGDATA. + */ + foreach(lc, tablespaces) + { + tablespaceinfo *ti = (tablespaceinfo *) lfirst(lc); + + /* + * ti->rpath is the tablespace relative path within PGDATA, or + * NULL if the tablespace has been properly located somewhere + * else. + * + * Skip past the leading "./" in pathbuf when comparing. + */ + if (ti->rpath && strcmp(ti->rpath, pathbuf + 2) == 0) + { + skip_this_dir = true; + break; + } + } + if (!skip_this_dir) + size += sendDir(pathbuf, basepathlen, sizeonly, tablespaces); } else if (S_ISREG(statbuf.st_mode)) { - /* Add size, rounded up to 512byte block */ - size += ((statbuf.st_size + 511) & ~511); + bool sent = false; + if (!sizeonly) - sendFile(pathbuf, pathbuf + basepathlen + 1, &statbuf); - size += 512; /* Size of the header of the file */ + sent = sendFile(pathbuf, pathbuf + basepathlen + 1, &statbuf, + true); + + if (sent || sizeonly) + { + /* Add size, rounded up to 512byte block */ + size += ((statbuf.st_size + 511) & ~511); + size += 512; /* Size of the header of the file */ + } } else ereport(WARNING, @@ -701,16 +855,29 @@ _tarChecksum(char *header) int i, sum; - sum = 0; + /* + * Per POSIX, the checksum is the simple sum of all bytes in the header, + * treating the bytes as unsigned, and treating the checksum field (at + * offset 148) as though it contained 8 spaces. + */ + sum = 8 * ' '; /* presumed value for checksum field */ for (i = 0; i < 512; i++) if (i < 148 || i >= 156) sum += 0xFF & header[i]; - return sum + 256; /* Assume 8 blanks in checksum field */ + return sum; } -/* Given the member, write the TAR header & send the file */ -static void -sendFile(char *readfilename, char *tarfilename, struct stat * statbuf) +/* + * Given the member, write the TAR header & send the file. + * + * If 'missing_ok' is true, will not throw an error if the file is not found. + * + * Returns true if the file was successfully sent, false if 'missing_ok', + * and the file did not exist. + */ +static bool +sendFile(char *readfilename, char *tarfilename, struct stat *statbuf, + bool missing_ok) { FILE *fp; char buf[TAR_SEND_SIZE]; @@ -720,9 +887,13 @@ sendFile(char *readfilename, char *tarfilename, struct stat * statbuf) fp = AllocateFile(readfilename, "rb"); if (fp == NULL) + { + if (errno == ENOENT && missing_ok) + return false; ereport(ERROR, - (errcode(errcode_for_file_access()), + (errcode_for_file_access(), errmsg("could not open file \"%s\": %m", readfilename))); + } /* * Some compilers will throw a warning knowing this test can never be true @@ -776,16 +947,23 @@ sendFile(char *readfilename, char *tarfilename, struct stat * statbuf) } FreeFile(fp); + + return true; } static void -_tarWriteHeader(const char *filename, char *linktarget, struct stat * statbuf) +_tarWriteHeader(const char *filename, const char *linktarget, + struct stat * statbuf) { char h[512]; - int lastSum = 0; - int sum; + /* + * Note: most of the fields in a tar header are not supposed to be + * null-terminated. We use sprintf, which will write a null after the + * required bytes; that null goes into the first byte of the next field. + * This is okay as long as we fill the fields in order. + */ memset(h, 0, sizeof(h)); /* Name 100 */ @@ -797,20 +975,23 @@ _tarWriteHeader(const char *filename, char *linktarget, struct stat * statbuf) * indicated in the tar format by adding a slash at the end of the * name, the same as for regular directories. */ - h[strlen(filename)] = '/'; - h[strlen(filename) + 1] = '\0'; + int flen = strlen(filename); + + flen = Min(flen, 99); + h[flen] = '/'; + h[flen + 1] = '\0'; } /* Mode 8 */ - sprintf(&h[100], "%07o ", statbuf->st_mode); + sprintf(&h[100], "%07o ", (int) statbuf->st_mode); /* User ID 8 */ sprintf(&h[108], "%07o ", statbuf->st_uid); /* Group 8 */ - sprintf(&h[117], "%07o ", statbuf->st_gid); + sprintf(&h[116], "%07o ", statbuf->st_gid); - /* File size 12 - 11 digits, 1 space, no NUL */ + /* File size 12 - 11 digits, 1 space; use print_val for 64 bit support */ if (linktarget != NULL || S_ISDIR(statbuf->st_mode)) /* Symbolic link or directory has size zero */ print_val(&h[124], 0, 8, 11); @@ -821,14 +1002,14 @@ _tarWriteHeader(const char *filename, char *linktarget, struct stat * statbuf) /* Mod Time 12 */ sprintf(&h[136], "%011o ", (int) statbuf->st_mtime); - /* Checksum 8 */ - sprintf(&h[148], "%06o ", lastSum); + /* Checksum 8 cannot be calculated until we've filled all other fields */ if (linktarget != NULL) { /* Type - Symbolic link */ sprintf(&h[156], "2"); - strcpy(&h[157], linktarget); + /* Link Name 100 */ + sprintf(&h[157], "%.99s", linktarget); } else if (S_ISDIR(statbuf->st_mode)) /* Type - directory */ @@ -837,10 +1018,11 @@ _tarWriteHeader(const char *filename, char *linktarget, struct stat * statbuf) /* Type - regular file */ sprintf(&h[156], "0"); - /* Link tag 100 (NULL) */ + /* Magic 6 */ + sprintf(&h[257], "ustar"); - /* Magic 6 + Version 2 */ - sprintf(&h[257], "ustar00"); + /* Version 2 */ + sprintf(&h[263], "00"); /* User 32 */ /* XXX: Do we need to care about setting correct username? */ @@ -850,17 +1032,21 @@ _tarWriteHeader(const char *filename, char *linktarget, struct stat * statbuf) /* XXX: Do we need to care about setting correct group name? */ sprintf(&h[297], "%.31s", "postgres"); - /* Maj Dev 8 */ - sprintf(&h[329], "%6o ", 0); + /* Major Dev 8 */ + sprintf(&h[329], "%07o ", 0); - /* Min Dev 8 */ - sprintf(&h[337], "%6o ", 0); + /* Minor Dev 8 */ + sprintf(&h[337], "%07o ", 0); - while ((sum = _tarChecksum(h)) != lastSum) - { - sprintf(&h[148], "%06o ", sum); - lastSum = sum; - } + /* Prefix 155 - not used, leave as nulls */ + + /* + * We mustn't overwrite the next field while inserting the checksum. + * Fortunately, the checksum can't exceed 6 octal digits, so we just write + * 6 digits, a space, and a null, which is legal per POSIX. + */ + sprintf(&h[148], "%06o ", _tarChecksum(h)); + /* Now send the completed header. */ pq_putmessage('d', h, 512); } diff --git a/src/backend/replication/repl_gram.y b/src/backend/replication/repl_gram.y index 4930ad1d09..d99708ca8e 100644 --- a/src/backend/replication/repl_gram.y +++ b/src/backend/replication/repl_gram.y @@ -16,10 +16,10 @@ #include "postgres.h" #include "nodes/makefuncs.h" -#include "nodes/parsenodes.h" -#include "replication/replnodes.h" +#include "nodes/replnodes.h" #include "replication/walsender.h" + /* Result of the parsing is returned here */ Node *replication_parse_result; diff --git a/src/backend/replication/syncrep.c b/src/backend/replication/syncrep.c index 08a40866f0..7fe9b09adf 100644 --- a/src/backend/replication/syncrep.c +++ b/src/backend/replication/syncrep.c @@ -111,9 +111,6 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN) Assert(SHMQueueIsDetached(&(MyProc->syncRepLinks))); Assert(WalSndCtl != NULL); - /* Reset the latch before adding ourselves to the queue. */ - ResetLatch(&MyProc->waitLatch); - LWLockAcquire(SyncRepLock, LW_EXCLUSIVE); Assert(MyProc->syncRepState == SYNC_REP_NOT_WAITING); @@ -166,15 +163,8 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN) { int syncRepState; - /* - * Wait on latch for up to 60 seconds. This allows us to check for - * postmaster death regularly while waiting. Note that timeout here - * does not necessarily release from loop. - */ - WaitLatch(&MyProc->waitLatch, 60000000L); - /* Must reset the latch before testing state. */ - ResetLatch(&MyProc->waitLatch); + ResetLatch(&MyProc->procLatch); /* * Try checking the state without the lock first. There's no @@ -184,6 +174,12 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN) * walsender changes the state to SYNC_REP_WAIT_COMPLETE, it will * never update it again, so we can't be seeing a stale value in that * case. + * + * Note: on machines with weak memory ordering, the acquisition of + * the lock is essential to avoid race conditions: we cannot be sure + * the sender's state update has reached main memory until we acquire + * the lock. We could get rid of this dance if SetLatch/ResetLatch + * contained memory barriers. */ syncRepState = MyProc->syncRepState; if (syncRepState == SYNC_REP_WAITING) @@ -202,7 +198,7 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN) * is not true: it's already committed locally. The former is no good * either: the client has requested synchronous replication, and is * entitled to assume that an acknowledged commit is also replicated, - * which may not be true. So in this case we issue a WARNING (which + * which might not be true. So in this case we issue a WARNING (which * some clients may be able to interpret) and shut off further output. * We do NOT reset ProcDiePending, so that the process will die after * the commit is cleaned up. @@ -212,7 +208,7 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN) ereport(WARNING, (errcode(ERRCODE_ADMIN_SHUTDOWN), errmsg("canceling the wait for synchronous replication and terminating connection due to administrator command"), - errdetail("The transaction has already committed locally, but may not have been replicated to the standby."))); + errdetail("The transaction has already committed locally, but might not have been replicated to the standby."))); whereToSendOutput = DestNone; SyncRepCancelWait(); break; @@ -229,7 +225,7 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN) QueryCancelPending = false; ereport(WARNING, (errmsg("canceling wait for synchronous replication due to user request"), - errdetail("The transaction has already committed locally, but may not have been replicated to the standby."))); + errdetail("The transaction has already committed locally, but might not have been replicated to the standby."))); SyncRepCancelWait(); break; } @@ -246,6 +242,13 @@ SyncRepWaitForLSN(XLogRecPtr XactCommitLSN) SyncRepCancelWait(); break; } + + /* + * Wait on latch for up to 10 seconds. This allows us to check for + * cancel/die signal or postmaster death regularly while waiting. Note + * that timeout here does not necessarily release from loop. + */ + WaitLatch(&MyProc->procLatch, 10000L); } /* @@ -316,7 +319,7 @@ SyncRepCancelWait(void) } void -SyncRepCleanupAtProcExit(int code, Datum arg) +SyncRepCleanupAtProcExit(void) { if (!SHMQueueIsDetached(&(MyProc->syncRepLinks))) { @@ -324,8 +327,6 @@ SyncRepCleanupAtProcExit(int code, Datum arg) SHMQueueDelete(&(MyProc->syncRepLinks)); LWLockRelease(SyncRepLock); } - - DisownLatch(&MyProc->waitLatch); } /* @@ -374,14 +375,17 @@ SyncRepReleaseWaiters(void) int numprocs = 0; int priority = 0; int i; + XLogRecPtr InvalidXLogRecPtr = {0, 0}; /* * 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 or still running base backup, then leave quickly also. + * 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) + MyWalSnd->state < WALSNDSTATE_STREAMING || + XLByteEQ(MyWalSnd->flush, InvalidXLogRecPtr)) return; /* @@ -398,9 +402,11 @@ SyncRepReleaseWaiters(void) volatile WalSnd *walsnd = &walsndctl->walsnds[i]; if (walsnd->pid != 0 && + walsnd->state == WALSNDSTATE_STREAMING && walsnd->sync_standby_priority > 0 && (priority == 0 || - priority > walsnd->sync_standby_priority)) + priority > walsnd->sync_standby_priority) && + !XLByteEQ(walsnd->flush, InvalidXLogRecPtr)) { priority = walsnd->sync_standby_priority; syncWalSnd = walsnd; @@ -554,9 +560,7 @@ SyncRepWakeQueue(bool all) /* * Wake only when we have set state and removed from queue. */ - Assert(SHMQueueIsDetached(&(thisproc->syncRepLinks))); - Assert(thisproc->syncRepState == SYNC_REP_WAIT_COMPLETE); - SetLatch(&(thisproc->waitLatch)); + SetLatch(&(thisproc->procLatch)); numprocs++; } diff --git a/src/backend/replication/walreceiver.c b/src/backend/replication/walreceiver.c index 471c844ab2..7058b888ca 100644 --- a/src/backend/replication/walreceiver.c +++ b/src/backend/replication/walreceiver.c @@ -276,6 +276,11 @@ WalReceiverMain(void) walrcv_connect(conninfo, startpoint); DisableWalRcvImmediateExit(); + /* Initialize LogstreamResult, reply_message and feedback_message */ + LogstreamResult.Write = LogstreamResult.Flush = GetXLogReplayRecPtr(); + MemSet(&reply_message, 0, sizeof(reply_message)); + MemSet(&feedback_message, 0, sizeof(feedback_message)); + /* Loop until end-of-streaming or error */ for (;;) { @@ -373,11 +378,15 @@ WalRcvSigHupHandler(SIGNAL_ARGS) static void WalRcvShutdownHandler(SIGNAL_ARGS) { + int save_errno = errno; + got_SIGTERM = true; /* Don't joggle the elbow of proc_exit */ if (!proc_exit_inprogress && WalRcvImmediateInterruptOK) ProcessWalRcvInterrupts(); + + errno = save_errno; } /* diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c index 470e6d170d..b6bf633337 100644 --- a/src/backend/replication/walsender.c +++ b/src/backend/replication/walsender.c @@ -22,7 +22,8 @@ * If the server is shut down, postmaster sends us SIGUSR2 after all * regular backends have exited and the shutdown checkpoint has been written. * This instruct walsender to send any outstanding WAL, including the - * shutdown checkpoint record, and then exit. + * shutdown checkpoint record, wait for it to be replicated to the standby, + * and then exit. * * * Portions Copyright (c) 2010-2011, PostgreSQL Global Development Group @@ -37,16 +38,16 @@ #include #include -#include "funcapi.h" -#include "access/xlog_internal.h" #include "access/transam.h" +#include "access/xlog_internal.h" #include "catalog/pg_type.h" +#include "funcapi.h" #include "libpq/libpq.h" #include "libpq/pqformat.h" #include "libpq/pqsignal.h" #include "miscadmin.h" +#include "nodes/replnodes.h" #include "replication/basebackup.h" -#include "replication/replnodes.h" #include "replication/walprotocol.h" #include "replication/walsender.h" #include "storage/fd.h" @@ -476,7 +477,7 @@ ProcessRepliesIfAny(void) { unsigned char firstchar; int r; - int received = false; + bool received = false; for (;;) { @@ -515,7 +516,7 @@ ProcessRepliesIfAny(void) default: ereport(FATAL, (errcode(ERRCODE_PROTOCOL_VIOLATION), - errmsg("invalid standby message type %d", + errmsg("invalid standby message type \"%c\"", firstchar))); } } @@ -566,7 +567,7 @@ ProcessStandbyMessage(void) default: ereport(COMMERROR, (errcode(ERRCODE_PROTOCOL_VIOLATION), - errmsg("unexpected message type %c", msgtype))); + errmsg("unexpected message type \"%c\"", msgtype))); proc_exit(0); } } @@ -611,76 +612,67 @@ static void ProcessStandbyHSFeedbackMessage(void) { StandbyHSFeedbackMessage reply; - TransactionId newxmin = InvalidTransactionId; + TransactionId nextXid; + uint32 nextEpoch; - pq_copymsgbytes(&reply_message, (char *) &reply, sizeof(StandbyHSFeedbackMessage)); + /* Decipher the reply message */ + pq_copymsgbytes(&reply_message, (char *) &reply, + sizeof(StandbyHSFeedbackMessage)); elog(DEBUG2, "hot standby feedback xmin %u epoch %u", reply.xmin, reply.epoch); + /* Ignore invalid xmin (can't actually happen with current walreceiver) */ + if (!TransactionIdIsNormal(reply.xmin)) + return; + /* - * Update the WalSender's proc xmin to allow it to be visible to - * snapshots. This will hold back the removal of dead rows and thereby - * prevent the generation of cleanup conflicts on the standby server. + * Check that the provided xmin/epoch are sane, that is, not in the future + * and not so far back as to be already wrapped around. Ignore if not. + * + * Epoch of nextXid should be same as standby, or if the counter has + * wrapped, then one greater than standby. */ - if (TransactionIdIsValid(reply.xmin)) - { - TransactionId nextXid; - uint32 nextEpoch; - bool epochOK = false; - - GetNextXidAndEpoch(&nextXid, &nextEpoch); - - /* - * Epoch of oldestXmin should be same as standby or if the counter has - * wrapped, then one less than reply. - */ - if (reply.xmin <= nextXid) - { - if (reply.epoch == nextEpoch) - epochOK = true; - } - else - { - if (nextEpoch > 0 && reply.epoch == nextEpoch - 1) - epochOK = true; - } - - /* - * Feedback from standby must not go backwards, nor should it go - * forwards further than our most recent xid. - */ - if (epochOK && TransactionIdPrecedesOrEquals(reply.xmin, nextXid)) - { - if (!TransactionIdIsValid(MyProc->xmin)) - { - TransactionId oldestXmin = GetOldestXmin(true, true); + GetNextXidAndEpoch(&nextXid, &nextEpoch); - if (TransactionIdPrecedes(oldestXmin, reply.xmin)) - newxmin = reply.xmin; - else - newxmin = oldestXmin; - } - else - { - if (TransactionIdPrecedes(MyProc->xmin, reply.xmin)) - newxmin = reply.xmin; - else - newxmin = MyProc->xmin; /* stay the same */ - } - } + if (reply.xmin <= nextXid) + { + if (reply.epoch != nextEpoch) + return; + } + else + { + if (reply.epoch + 1 != nextEpoch) + return; } + if (!TransactionIdPrecedesOrEquals(reply.xmin, nextXid)) + return; /* epoch OK, but it's wrapped around */ + /* - * Grab the ProcArrayLock to set xmin, or invalidate for bad reply + * Set the WalSender's xmin equal to the standby's requested xmin, so that + * the xmin will be taken into account by GetOldestXmin. This will hold + * back the removal of dead rows and thereby prevent the generation of + * cleanup conflicts on the standby server. + * + * There is a small window for a race condition here: although we just + * checked that reply.xmin precedes nextXid, the nextXid could have gotten + * advanced between our fetching it and applying the xmin below, perhaps + * far enough to make reply.xmin wrap around. In that case the xmin we + * set here would be "in the future" and have no effect. No point in + * worrying about this since it's too late to save the desired data + * anyway. Assuming that the standby sends us an increasing sequence of + * xmins, this could only happen during the first reply cycle, else our + * own xmin would prevent nextXid from advancing so far. + * + * We don't bother taking the ProcArrayLock here. Setting the xmin field + * is assumed atomic, and there's no real need to prevent a concurrent + * GetOldestXmin. (If we're moving our xmin forward, this is obviously + * safe, and if we're moving it backwards, well, the data is at risk + * already since a VACUUM could have just finished calling GetOldestXmin.) */ - if (MyProc->xmin != newxmin) - { - LWLockAcquire(ProcArrayLock, LW_SHARED); - MyProc->xmin = newxmin; - LWLockRelease(ProcArrayLock); - } + MyProc->xmin = reply.xmin; } /* Main loop of walsender process */ @@ -709,6 +701,9 @@ WalSndLoop(void) /* Loop forever, unless we get an error */ for (;;) { + /* Clear any already-pending wakeups */ + ResetLatch(&MyWalSnd->latch); + /* * Emergency bailout if postmaster has died. This is to avoid the * necessity for manual cleanup of all postmaster children. @@ -727,60 +722,94 @@ WalSndLoop(void) /* Normal exit from the walsender is here */ if (walsender_shutdown_requested) { - /* Inform the standby that XLOG streaming was done */ + /* Inform the standby that XLOG streaming is done */ pq_puttextmessage('C', "COPY 0"); pq_flush(); proc_exit(0); } + /* Check for input from the client */ + ProcessRepliesIfAny(); + /* * If we don't have any pending data in the output buffer, try to send - * some more. + * some more. If there is some, we don't bother to call XLogSend + * again until we've flushed it ... but we'd better assume we are not + * caught up. */ if (!pq_is_send_pending()) - { XLogSend(output_message, &caughtup); + else + caughtup = false; + + /* Try to flush pending output to the client */ + if (pq_flush_if_writable() != 0) + break; + + /* If nothing remains to be sent right now ... */ + if (caughtup && !pq_is_send_pending()) + { + /* + * If we're in catchup state, move to streaming. This is an + * important state change for users to know about, since before + * this point data loss might occur if the primary dies and we + * need to failover to the standby. The state change is also + * important for synchronous replication, since commits that + * started to wait at that point might wait for some time. + */ + if (MyWalSnd->state == WALSNDSTATE_CATCHUP) + { + ereport(DEBUG1, + (errmsg("standby \"%s\" has now caught up with primary", + application_name))); + WalSndSetState(WALSNDSTATE_STREAMING); + } /* - * Even if we wrote all the WAL that was available when we started - * sending, more might have arrived while we were sending this - * batch. We had the latch set while sending, so we have not - * received any signals from that time. Let's arm the latch again, - * and after that check that we're still up-to-date. + * When SIGUSR2 arrives, we send any outstanding logs up to the + * shutdown checkpoint record (i.e., the latest record), wait + * for them to be replicated to the standby, and exit. + * This may be a normal termination at shutdown, or a promotion, + * the walsender is not sure which. */ - if (caughtup && !pq_is_send_pending()) + if (walsender_ready_to_stop) { - ResetLatch(&MyWalSnd->latch); + XLogRecPtr replicatedPtr; + /* ... let's just be real sure we're caught up ... */ XLogSend(output_message, &caughtup); + + /* + * Check a write location to see whether all the WAL have + * successfully been replicated if this walsender is connecting + * to a standby such as pg_receivexlog which always returns + * an invalid flush location. Otherwise, check a flush location. + */ + replicatedPtr = XLogRecPtrIsInvalid(MyWalSnd->flush) ? + MyWalSnd->write : MyWalSnd->flush; + if (caughtup && XLByteEQ(sentPtr, replicatedPtr) && + !pq_is_send_pending()) + { + walsender_shutdown_requested = true; + continue; /* don't want to wait more */ + } } } - /* Flush pending output to the client */ - if (pq_flush_if_writable() != 0) - break; - /* - * When SIGUSR2 arrives, we send any outstanding logs up to the - * shutdown checkpoint record (i.e., the latest record) and exit. + * We don't block if not caught up, unless there is unsent data + * pending in which case we'd better block until the socket is + * write-ready. This test is only needed for the case where XLogSend + * loaded a subset of the available data but then pq_flush_if_writable + * flushed it all --- we should immediately try to send more. */ - if (walsender_ready_to_stop && !pq_is_send_pending()) - { - XLogSend(output_message, &caughtup); - ProcessRepliesIfAny(); - if (caughtup && !pq_is_send_pending()) - walsender_shutdown_requested = true; - } - - if ((caughtup || pq_is_send_pending()) && - !got_SIGHUP && - !walsender_shutdown_requested) + if (caughtup || pq_is_send_pending()) { TimestampTz finish_time = 0; - long sleeptime; + long sleeptime = -1; - /* Reschedule replication timeout */ + /* Determine time until replication timeout */ if (replication_timeout > 0) { long secs; @@ -804,12 +833,16 @@ WalSndLoop(void) sleeptime = WalSndDelay; } - /* Sleep */ + /* Sleep until something happens or replication timeout */ WaitLatchOrSocket(&MyWalSnd->latch, MyProcPort->sock, true, pq_is_send_pending(), - sleeptime * 1000L); + sleeptime); - /* Check for replication timeout */ + /* + * Check for replication timeout. Note we ignore the corner case + * possibility that the client replied just as we reached the + * timeout ... he's supposed to reply *before* that. + */ if (replication_timeout > 0 && GetCurrentTimestamp() >= finish_time) { @@ -823,24 +856,6 @@ WalSndLoop(void) break; } } - - /* - * If we're in catchup state, see if its time to move to streaming. - * This is an important state change for users, since before this - * point data loss might occur if the primary dies and we need to - * failover to the standby. The state change is also important for - * synchronous replication, since commits that started to wait at that - * point might wait for some time. - */ - if (MyWalSnd->state == WALSNDSTATE_CATCHUP && caughtup) - { - ereport(DEBUG1, - (errmsg("standby \"%s\" has now caught up with primary", - application_name))); - WalSndSetState(WALSNDSTATE_STREAMING); - } - - ProcessRepliesIfAny(); } /* @@ -916,17 +931,23 @@ InitWalSnd(void) static void WalSndKill(int code, Datum arg) { - Assert(MyWalSnd != NULL); + WalSnd *walsnd = MyWalSnd; + + Assert(walsnd != NULL); + + /* + * Clear MyWalSnd first; then disown the latch. This is so that signal + * handlers won't try to touch the latch after it's no longer ours. + */ + MyWalSnd = NULL; + + DisownLatch(&walsnd->latch); /* * Mark WalSnd struct no longer in use. Assume that no lock is required * for this. */ - MyWalSnd->pid = 0; - DisownLatch(&MyWalSnd->latch); - - /* WalSnd struct isn't mine anymore */ - MyWalSnd = NULL; + walsnd->pid = 0; } /* @@ -1188,18 +1209,33 @@ XLogSend(char *msgbuf, bool *caughtup) static void WalSndSigHupHandler(SIGNAL_ARGS) { + int save_errno = errno; + got_SIGHUP = true; if (MyWalSnd) SetLatch(&MyWalSnd->latch); + + errno = save_errno; } /* SIGTERM: set flag to shut down */ static void WalSndShutdownHandler(SIGNAL_ARGS) { + int save_errno = errno; + walsender_shutdown_requested = true; if (MyWalSnd) SetLatch(&MyWalSnd->latch); + + /* + * Set the standard (non-walsender) state as well, so that we can + * abort things like do_pg_stop_backup(). + */ + InterruptPending = true; + ProcDiePending = true; + + errno = save_errno; } /* @@ -1238,16 +1274,24 @@ WalSndQuickDieHandler(SIGNAL_ARGS) static void WalSndXLogSendHandler(SIGNAL_ARGS) { + int save_errno = errno; + latch_sigusr1_handler(); + + errno = save_errno; } /* SIGUSR2: set flag to do a last cycle and shut down afterwards */ static void WalSndLastCycleHandler(SIGNAL_ARGS) { + int save_errno = errno; + walsender_ready_to_stop = true; if (MyWalSnd) SetLatch(&MyWalSnd->latch); + + errno = save_errno; } /* Set up signal handlers */ @@ -1260,7 +1304,7 @@ WalSndSignals(void) pqsignal(SIGINT, SIG_IGN); /* not used */ pqsignal(SIGTERM, WalSndShutdownHandler); /* request shutdown */ pqsignal(SIGQUIT, WalSndQuickDieHandler); /* hard crash time */ - pqsignal(SIGALRM, SIG_IGN); + pqsignal(SIGALRM, handle_sig_alarm); pqsignal(SIGPIPE, SIG_IGN); pqsignal(SIGUSR1, WalSndXLogSendHandler); /* request WAL sending */ pqsignal(SIGUSR2, WalSndLastCycleHandler); /* request a last cycle and @@ -1379,6 +1423,7 @@ pg_stat_get_wal_senders(PG_FUNCTION_ARGS) int priority = 0; int sync_standby = -1; int i; + XLogRecPtr InvalidXLogRecPtr = {0, 0}; /* check to see if caller supports us returning a tuplestore */ if (rsinfo == NULL || !IsA(rsinfo, ReturnSetInfo)) @@ -1419,12 +1464,19 @@ pg_stat_get_wal_senders(PG_FUNCTION_ARGS) if (walsnd->pid != 0) { - sync_priority[i] = walsnd->sync_standby_priority; + /* + * Treat a standby such as a pg_basebackup background process + * which always returns an invalid flush location, as an + * asynchronous standby. + */ + sync_priority[i] = XLByteEQ(walsnd->flush, InvalidXLogRecPtr) ? + 0 : walsnd->sync_standby_priority; if (walsnd->state == WALSNDSTATE_STREAMING && walsnd->sync_standby_priority > 0 && (priority == 0 || - priority > walsnd->sync_standby_priority)) + priority > walsnd->sync_standby_priority) && + !XLByteEQ(walsnd->flush, InvalidXLogRecPtr)) { priority = walsnd->sync_standby_priority; sync_standby = i; diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c index 52c55def15..5a4c569594 100644 --- a/src/backend/rewrite/rewriteDefine.c +++ b/src/backend/rewrite/rewriteDefine.c @@ -240,14 +240,12 @@ DefineQueryRewrite(char *rulename, /* * If we are installing an ON SELECT rule, we had better grab * AccessExclusiveLock to ensure no SELECTs are currently running on the - * event relation. For other types of rules, it is sufficient to grab - * ShareRowExclusiveLock to lock out insert/update/delete actions and to - * ensure that we lock out current CREATE RULE statements. + * event relation. For other types of rules, it would be sufficient to + * grab ShareRowExclusiveLock to lock out insert/update/delete actions and + * to ensure that we lock out current CREATE RULE statements; but because + * of race conditions in access to catalog entries, we can't do that yet. */ - if (event_type == CMD_SELECT) - event_relation = heap_open(event_relid, AccessExclusiveLock); - else - event_relation = heap_open(event_relid, ShareRowExclusiveLock); + event_relation = heap_open(event_relid, AccessExclusiveLock); /* * Verify relation is of a type that rules can sensibly be applied to. diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c index ac4b9fe746..965897b2ca 100644 --- a/src/backend/rewrite/rewriteHandler.c +++ b/src/backend/rewrite/rewriteHandler.c @@ -18,6 +18,7 @@ #include "catalog/pg_type.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" +#include "optimizer/clauses.h" #include "parser/analyze.h" #include "parser/parse_coerce.h" #include "parser/parsetree.h" @@ -48,7 +49,13 @@ typedef struct rewrite_event CmdType event; /* type of rule being fired */ } rewrite_event; -static bool acquireLocksOnSubLinks(Node *node, void *context); +typedef struct acquireLocksOnSubLinks_context +{ + bool for_execute; /* AcquireRewriteLocks' forExecute param */ +} acquireLocksOnSubLinks_context; + +static bool acquireLocksOnSubLinks(Node *node, + acquireLocksOnSubLinks_context *context); static Query *rewriteRuleAction(Query *parsetree, Query *rule_action, Node *rule_qual, @@ -90,9 +97,19 @@ static bool pull_qual_vars_walker(Node *node, pull_qual_vars_context *context); * These locks will ensure that the relation schemas don't change under us * while we are rewriting and planning the query. * - * forUpdatePushedDown indicates that a pushed-down FOR UPDATE/SHARE applies - * to the current subquery, requiring all rels to be opened with RowShareLock. - * This should always be false at the start of the recursion. + * forExecute indicates that the query is about to be executed. + * If so, we'll acquire RowExclusiveLock on the query's resultRelation, + * RowShareLock on any relation accessed FOR UPDATE/SHARE, and + * AccessShareLock on all other relations mentioned. + * + * If forExecute is false, AccessShareLock is acquired on all relations. + * This case is suitable for ruleutils.c, for example, where we only need + * schema stability and we don't intend to actually modify any relations. + * + * forUpdatePushedDown indicates that a pushed-down FOR UPDATE/SHARE + * applies to the current subquery, requiring all rels to be opened with at + * least RowShareLock. This should always be false at the top of the + * recursion. This flag is ignored if forExecute is false. * * A secondary purpose of this routine is to fix up JOIN RTE references to * dropped columns (see details below). Because the RTEs are modified in @@ -111,9 +128,8 @@ static bool pull_qual_vars_walker(Node *node, pull_qual_vars_context *context); * such a list in a stored rule to include references to dropped columns. * (If the column is not explicitly referenced anywhere else in the query, * the dependency mechanism won't consider it used by the rule and so won't - * prevent the column drop.) To support get_rte_attribute_is_dropped(), - * we replace join alias vars that reference dropped columns with NULL Const - * nodes. + * prevent the column drop.) To support get_rte_attribute_is_dropped(), we + * replace join alias vars that reference dropped columns with null pointers. * * (In PostgreSQL 8.0, we did not do this processing but instead had * get_rte_attribute_is_dropped() recurse to detect dropped columns in joins. @@ -121,10 +137,15 @@ static bool pull_qual_vars_walker(Node *node, pull_qual_vars_context *context); * construction of a nested join was O(N^2) in the nesting depth.) */ void -AcquireRewriteLocks(Query *parsetree, bool forUpdatePushedDown) +AcquireRewriteLocks(Query *parsetree, + bool forExecute, + bool forUpdatePushedDown) { ListCell *l; int rt_index; + acquireLocksOnSubLinks_context context; + + context.for_execute = forExecute; /* * First, process RTEs of the current query level. @@ -150,14 +171,12 @@ AcquireRewriteLocks(Query *parsetree, bool forUpdatePushedDown) * release it until end of transaction. This protects the * rewriter and planner against schema changes mid-query. * - * If the relation is the query's result relation, then we - * need RowExclusiveLock. Otherwise, check to see if the - * relation is accessed FOR UPDATE/SHARE or not. We can't - * just grab AccessShareLock because then the executor would - * be trying to upgrade the lock, leading to possible - * deadlocks. + * Assuming forExecute is true, this logic must match what the + * executor will do, else we risk lock-upgrade deadlocks. */ - if (rt_index == parsetree->resultRelation) + if (!forExecute) + lockmode = AccessShareLock; + else if (rt_index == parsetree->resultRelation) lockmode = RowExclusiveLock; else if (forUpdatePushedDown || get_parse_rowmark(parsetree, rt_index) != NULL) @@ -180,8 +199,8 @@ AcquireRewriteLocks(Query *parsetree, bool forUpdatePushedDown) /* * Scan the join's alias var list to see if any columns have - * been dropped, and if so replace those Vars with NULL - * Consts. + * been dropped, and if so replace those Vars with null + * pointers. * * Since a join has only two inputs, we can expect to see * multiple references to the same input RTE; optimize away @@ -192,16 +211,20 @@ AcquireRewriteLocks(Query *parsetree, bool forUpdatePushedDown) curinputrte = NULL; foreach(ll, rte->joinaliasvars) { - Var *aliasvar = (Var *) lfirst(ll); + Var *aliasitem = (Var *) lfirst(ll); + Var *aliasvar = aliasitem; + + /* Look through any implicit coercion */ + aliasvar = (Var *) strip_implicit_coercions((Node *) aliasvar); /* * If the list item isn't a simple Var, then it must * represent a merged column, ie a USING column, and so it * couldn't possibly be dropped, since it's referenced in - * the join clause. (Conceivably it could also be a NULL - * constant already? But that's OK too.) + * the join clause. (Conceivably it could also be a null + * pointer already? But that's OK too.) */ - if (IsA(aliasvar, Var)) + if (aliasvar && IsA(aliasvar, Var)) { /* * The elements of an alias list have to refer to @@ -225,15 +248,11 @@ AcquireRewriteLocks(Query *parsetree, bool forUpdatePushedDown) if (get_rte_attribute_is_dropped(curinputrte, aliasvar->varattno)) { - /* - * can't use vartype here, since that might be a - * now-dropped type OID, but it doesn't really - * matter what type the Const claims to be. - */ - aliasvar = (Var *) makeNullConst(INT4OID, -1, InvalidOid); + /* Replace the join alias item with a NULL */ + aliasitem = NULL; } } - newaliasvars = lappend(newaliasvars, aliasvar); + newaliasvars = lappend(newaliasvars, aliasitem); } rte->joinaliasvars = newaliasvars; break; @@ -245,6 +264,7 @@ AcquireRewriteLocks(Query *parsetree, bool forUpdatePushedDown) * recurse to process the represented subquery. */ AcquireRewriteLocks(rte->subquery, + forExecute, (forUpdatePushedDown || get_parse_rowmark(parsetree, rt_index) != NULL)); break; @@ -260,7 +280,7 @@ AcquireRewriteLocks(Query *parsetree, bool forUpdatePushedDown) { CommonTableExpr *cte = (CommonTableExpr *) lfirst(l); - AcquireRewriteLocks((Query *) cte->ctequery, false); + AcquireRewriteLocks((Query *) cte->ctequery, forExecute, false); } /* @@ -268,7 +288,7 @@ AcquireRewriteLocks(Query *parsetree, bool forUpdatePushedDown) * the rtable and cteList. */ if (parsetree->hasSubLinks) - query_tree_walker(parsetree, acquireLocksOnSubLinks, NULL, + query_tree_walker(parsetree, acquireLocksOnSubLinks, &context, QTW_IGNORE_RC_SUBQUERIES); } @@ -276,7 +296,7 @@ AcquireRewriteLocks(Query *parsetree, bool forUpdatePushedDown) * Walker to find sublink subqueries for AcquireRewriteLocks */ static bool -acquireLocksOnSubLinks(Node *node, void *context) +acquireLocksOnSubLinks(Node *node, acquireLocksOnSubLinks_context *context) { if (node == NULL) return false; @@ -285,7 +305,9 @@ acquireLocksOnSubLinks(Node *node, void *context) SubLink *sub = (SubLink *) node; /* Do what we came for */ - AcquireRewriteLocks((Query *) sub->subselect, false); + AcquireRewriteLocks((Query *) sub->subselect, + context->for_execute, + false); /* Fall through to process lefthand args of SubLink */ } @@ -327,6 +349,9 @@ rewriteRuleAction(Query *parsetree, int rt_length; Query *sub_action; Query **sub_action_ptr; + acquireLocksOnSubLinks_context context; + + context.for_execute = true; /* * Make modifiable copies of rule action and qual (what we're passed are @@ -338,8 +363,8 @@ rewriteRuleAction(Query *parsetree, /* * Acquire necessary locks and fix any deleted JOIN RTE entries. */ - AcquireRewriteLocks(rule_action, false); - (void) acquireLocksOnSubLinks(rule_qual, NULL); + AcquireRewriteLocks(rule_action, true, false); + (void) acquireLocksOnSubLinks(rule_qual, &context); current_varno = rt_index; rt_length = list_length(parsetree->rtable); @@ -1311,7 +1336,8 @@ rewriteTargetListUD(Query *parsetree, RangeTblEntry *target_rte, */ var = makeWholeRowVar(target_rte, parsetree->resultRelation, - 0); + 0, + false); attrname = "wholerow"; } @@ -1516,7 +1542,7 @@ ApplyRetrieveRule(Query *parsetree, */ rule_action = copyObject(linitial(rule->actions)); - AcquireRewriteLocks(rule_action, forUpdatePushedDown); + AcquireRewriteLocks(rule_action, true, forUpdatePushedDown); /* * Recursively expand any view references inside the view. @@ -1838,6 +1864,9 @@ CopyAndAddInvertedQual(Query *parsetree, { /* Don't scribble on the passed qual (it's in the relcache!) */ Node *new_qual = (Node *) copyObject(rule_qual); + acquireLocksOnSubLinks_context context; + + context.for_execute = true; /* * In case there are subqueries in the qual, acquire necessary locks and @@ -1845,7 +1874,7 @@ CopyAndAddInvertedQual(Query *parsetree, * rewriteRuleAction, but not entirely ... consider restructuring so that * we only need to process the qual this way once.) */ - (void) acquireLocksOnSubLinks(new_qual, NULL); + (void) acquireLocksOnSubLinks(new_qual, &context); /* Fix references to OLD */ ChangeVarNodes(new_qual, PRS2_OLD_VARNO, rt_index, 0); @@ -2564,7 +2593,7 @@ QueryRewrite(Query *parsetree) * Rewrite the CREATE TABLE AS and SELECT INTO queries as a * INSERT INTO .. SELECT query. The target table must be created first using * utility command processing. This takes care of creating the target table on - * all the coordinators and the data nodes. + * all the Coordinators and the Datanodes. */ List * QueryRewriteCTAS(Query *parsetree) @@ -2667,9 +2696,7 @@ QueryRewriteCTAS(Query *parsetree) /* Finally, fire off the query to run the DDL */ ProcessUtility(cparsetree->utilityStmt, cquery.data, NULL, true, NULL, -#ifdef PGXC false, -#endif /* PGXC */ NULL); /* diff --git a/src/backend/rewrite/rewriteManip.c b/src/backend/rewrite/rewriteManip.c index d3985b2093..3f20d741f6 100644 --- a/src/backend/rewrite/rewriteManip.c +++ b/src/backend/rewrite/rewriteManip.c @@ -1201,6 +1201,119 @@ replace_rte_variables_mutator(Node *node, } +/* + * map_variable_attnos() finds all user-column Vars in an expression tree + * that reference a particular RTE, and adjusts their varattnos according + * to the given mapping array (varattno n is replaced by attno_map[n-1]). + * Vars for system columns are not modified. + * + * A zero in the mapping array represents a dropped column, which should not + * appear in the expression. + * + * If the expression tree contains a whole-row Var for the target RTE, + * the Var is not changed but *found_whole_row is returned as TRUE. + * For most callers this is an error condition, but we leave it to the caller + * to report the error so that useful context can be provided. (In some + * usages it would be appropriate to modify the Var's vartype and insert a + * ConvertRowtypeExpr node to map back to the original vartype. We might + * someday extend this function's API to support that. For now, the only + * concession to that future need is that this function is a tree mutator + * not just a walker.) + * + * This could be built using replace_rte_variables and a callback function, + * but since we don't ever need to insert sublinks, replace_rte_variables is + * overly complicated. + */ + +typedef struct +{ + int target_varno; /* RTE index to search for */ + int sublevels_up; /* (current) nesting depth */ + const AttrNumber *attno_map; /* map array for user attnos */ + int map_length; /* number of entries in attno_map[] */ + bool *found_whole_row; /* output flag */ +} map_variable_attnos_context; + +static Node * +map_variable_attnos_mutator(Node *node, + map_variable_attnos_context *context) +{ + if (node == NULL) + return NULL; + if (IsA(node, Var)) + { + Var *var = (Var *) node; + + if (var->varno == context->target_varno && + var->varlevelsup == context->sublevels_up) + { + /* Found a matching variable, make the substitution */ + Var *newvar = (Var *) palloc(sizeof(Var)); + int attno = var->varattno; + + *newvar = *var; + if (attno > 0) + { + /* user-defined column, replace attno */ + if (attno > context->map_length || + context->attno_map[attno - 1] == 0) + elog(ERROR, "unexpected varattno %d in expression to be mapped", + attno); + newvar->varattno = newvar->varoattno = context->attno_map[attno - 1]; + } + else if (attno == 0) + { + /* whole-row variable, warn caller */ + *(context->found_whole_row) = true; + } + return (Node *) newvar; + } + /* otherwise fall through to copy the var normally */ + } + else if (IsA(node, Query)) + { + /* Recurse into RTE subquery or not-yet-planned sublink subquery */ + Query *newnode; + + context->sublevels_up++; + newnode = query_tree_mutator((Query *) node, + map_variable_attnos_mutator, + (void *) context, + 0); + context->sublevels_up--; + return (Node *) newnode; + } + return expression_tree_mutator(node, map_variable_attnos_mutator, + (void *) context); +} + +Node * +map_variable_attnos(Node *node, + int target_varno, int sublevels_up, + const AttrNumber *attno_map, int map_length, + bool *found_whole_row) +{ + map_variable_attnos_context context; + + context.target_varno = target_varno; + context.sublevels_up = sublevels_up; + context.attno_map = attno_map; + context.map_length = map_length; + context.found_whole_row = found_whole_row; + + *found_whole_row = false; + + /* + * Must be prepared to start with a Query or a bare expression tree; if + * it's a Query, we don't want to increment sublevels_up. + */ + return query_or_expression_tree_mutator(node, + map_variable_attnos_mutator, + (void *) &context, + 0); +} + + /* * ResolveNew - replace Vars with corresponding items from a targetlist * diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c index b12348b39d..b6539514f8 100644 --- a/src/backend/storage/buffer/bufmgr.c +++ b/src/backend/storage/buffer/bufmgr.c @@ -201,7 +201,8 @@ ReadBuffer(Relation reln, BlockNumber blockNum) * Assume when this function is called, that reln has been opened already. * * In RBM_NORMAL mode, the page is read from disk, and the page header is - * validated. An error is thrown if the page header is not valid. + * validated. An error is thrown if the page header is not valid. (But + * note that an all-zero page is considered "valid"; see PageIsVerified().) * * RBM_ZERO_ON_ERROR is like the normal mode, but if the page header is not * valid, the page is zeroed instead of throwing an error. This is intended @@ -215,6 +216,8 @@ ReadBuffer(Relation reln, BlockNumber blockNum) * 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_NORMAL_NO_LOG mode is treated the same as RBM_NORMAL here. + * * If strategy is not NULL, a nondefault buffer access strategy is used. * See buffer/README for details. */ @@ -269,6 +272,8 @@ ReadBufferWithoutRelcache(RelFileNode rnode, ForkNumber forkNum, SMgrRelation smgr = smgropen(rnode, InvalidBackendId); + Assert(InRecovery); + return ReadBuffer_common(smgr, RELPERSISTENCE_PERMANENT, forkNum, blockNum, mode, strategy, &hit); } @@ -952,7 +957,7 @@ MarkBufferDirty(Buffer buffer) volatile BufferDesc *bufHdr; if (!BufferIsValid(buffer)) - elog(ERROR, "bad buffer id: %d", buffer); + elog(ERROR, "bad buffer ID: %d", buffer); if (BufferIsLocal(buffer)) { @@ -1181,10 +1186,10 @@ BufferSync(int flags) /* * Unless this is a shutdown checkpoint, we write only permanent, dirty - * buffers. But at shutdown time, we write all dirty buffers. + * buffers. But at shutdown or end of recovery, we write all dirty buffers. */ - if (!(flags & CHECKPOINT_IS_SHUTDOWN)) - flags |= BM_PERMANENT; + if (!((flags & CHECKPOINT_IS_SHUTDOWN) || (flags & CHECKPOINT_END_OF_RECOVERY))) + mask |= BM_PERMANENT; /* * Loop over all buffers, and mark the ones that need to be written with @@ -1474,7 +1479,18 @@ BgBufferSync(void) smoothing_samples; /* Scale the estimate by a GUC to allow more aggressive tuning. */ - upcoming_alloc_est = smoothed_alloc * bgwriter_lru_multiplier; + upcoming_alloc_est = (int) (smoothed_alloc * bgwriter_lru_multiplier); + + /* + * If recent_alloc remains at zero for many cycles, smoothed_alloc will + * eventually underflow to zero, and the underflows produce annoying + * kernel warnings on some platforms. Once upcoming_alloc_est has gone + * to zero, there's no point in tracking smaller and smaller values of + * smoothed_alloc, so just reset it to exactly zero to avoid this + * syndrome. It will pop back up as soon as recent_alloc increases. + */ + if (upcoming_alloc_est == 0) + smoothed_alloc = 0; /* * Even in cases where there's been little or no buffer allocation @@ -1834,10 +1850,7 @@ BufferGetTag(Buffer buffer, RelFileNode *rnode, ForkNumber *forknum, * written.) * * If the caller has an smgr reference for the buffer's relation, pass it - * as the second parameter. If not, pass NULL. In the latter case, the - * relation will be marked as "transient" so that the corresponding - * kernel-level file descriptors are closed when the current transaction ends, - * if any. + * as the second parameter. If not, pass NULL. */ static void FlushBuffer(volatile BufferDesc *buf, SMgrRelation reln) @@ -1859,12 +1872,9 @@ FlushBuffer(volatile BufferDesc *buf, SMgrRelation reln) errcontext.previous = error_context_stack; error_context_stack = &errcontext; - /* Find smgr relation for buffer, and mark it as transient */ + /* Find smgr relation for buffer */ if (reln == NULL) - { reln = smgropen(buf->tag.rnode, InvalidBackendId); - smgrsettransient(reln); - } TRACE_POSTGRESQL_BUFFER_FLUSH_START(buf->tag.forkNum, buf->tag.blockNum, @@ -1960,7 +1970,8 @@ DropRelFileNodeBuffers(RelFileNodeBackend rnode, ForkNumber forkNum, { int i; - if (rnode.backend != InvalidBackendId) + /* If it's a local relation, it's localbuf.c's problem. */ + if (RelFileNodeBackendIsTemp(rnode)) { if (rnode.backend == MyBackendId) DropRelFileNodeLocalBuffers(rnode.node, forkNum, firstDelBlock); @@ -2198,7 +2209,7 @@ ReleaseBuffer(Buffer buffer) volatile BufferDesc *bufHdr; if (!BufferIsValid(buffer)) - elog(ERROR, "bad buffer id: %d", buffer); + elog(ERROR, "bad buffer ID: %d", buffer); ResourceOwnerForgetBuffer(CurrentResourceOwner, buffer); @@ -2270,7 +2281,7 @@ SetBufferCommitInfoNeedsSave(Buffer buffer) volatile BufferDesc *bufHdr; if (!BufferIsValid(buffer)) - elog(ERROR, "bad buffer id: %d", buffer); + elog(ERROR, "bad buffer ID: %d", buffer); if (BufferIsLocal(buffer)) { @@ -2449,10 +2460,11 @@ LockBufferForCleanup(Buffer buffer) /* Wait to be signaled by UnpinBuffer() */ if (InHotStandby) { - /* Share the bufid that Startup process waits on */ + /* Publish the bufid that Startup process waits on */ SetStartupBufferPinWaitBufId(buffer - 1); /* Set alarm and then wait to be signaled by UnpinBuffer() */ ResolveRecoveryConflictWithBufferPin(); + /* Reset the published bufid */ SetStartupBufferPinWaitBufId(-1); } else @@ -2465,7 +2477,7 @@ LockBufferForCleanup(Buffer buffer) /* * Check called from RecoveryConflictInterrupt handler when Startup - * process requests cancelation of all pin holders that are blocking it. + * process requests cancellation of all pin holders that are blocking it. */ bool HoldingBufferPinThatDelaysRecovery(void) diff --git a/src/backend/storage/file/buffile.c b/src/backend/storage/file/buffile.c index c436d71877..c593f72b16 100644 --- a/src/backend/storage/file/buffile.c +++ b/src/backend/storage/file/buffile.c @@ -23,8 +23,10 @@ * will go away automatically at transaction end. If the underlying * virtual File is made with OpenTemporaryFile, then all resources for * the file are certain to be cleaned up even if processing is aborted - * by ereport(ERROR). To avoid confusion, the caller should take care that - * all calls for a single BufFile are made in the same palloc context. + * by ereport(ERROR). The data structures required are made in the + * palloc context that was current when the BufFile was created, and + * any external resources such as temp files are owned by the ResourceOwner + * that was current at that time. * * BufFile also supports temporary files that exceed the OS file size limit * (by opening multiple fd.c temporary files). This is an essential feature @@ -38,6 +40,7 @@ #include "storage/fd.h" #include "storage/buffile.h" #include "storage/buf_internals.h" +#include "utils/resowner.h" /* * We break BufFiles into gigabyte-sized segments, regardless of RELSEG_SIZE. @@ -68,6 +71,13 @@ struct BufFile bool isInterXact; /* keep open over transactions? */ bool dirty; /* does buffer need to be written? */ + /* + * resowner is the ResourceOwner to use for underlying temp files. (We + * don't need to remember the memory context we're using explicitly, + * because after creation we only repalloc our arrays larger.) + */ + ResourceOwner resowner; + /* * "current pos" is position of start of buffer within the logical file. * Position as seen by user of BufFile is (curFile, curOffset + pos). @@ -103,6 +113,7 @@ makeBufFile(File firstfile) file->isTemp = false; file->isInterXact = false; file->dirty = false; + file->resowner = CurrentResourceOwner; file->curFile = 0; file->curOffset = 0L; file->pos = 0; @@ -118,11 +129,18 @@ static void extendBufFile(BufFile *file) { File pfile; + ResourceOwner oldowner; + + /* Be sure to associate the file with the BufFile's resource owner */ + oldowner = CurrentResourceOwner; + CurrentResourceOwner = file->resowner; Assert(file->isTemp); pfile = OpenTemporaryFile(file->isInterXact); Assert(pfile >= 0); + CurrentResourceOwner = oldowner; + file->files = (File *) repalloc(file->files, (file->numFiles + 1) * sizeof(File)); file->offsets = (off_t *) repalloc(file->offsets, @@ -141,7 +159,8 @@ extendBufFile(BufFile *file) * at end of transaction. * * Note: if interXact is true, the caller had better be calling us in a - * memory context that will survive across transaction boundaries. + * memory context, and with a resource owner, that will survive across + * transaction boundaries. */ BufFile * BufFileCreateTemp(bool interXact) diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c index e7792eac7d..a2f7551b76 100644 --- a/src/backend/storage/file/fd.c +++ b/src/backend/storage/file/fd.c @@ -110,9 +110,15 @@ static int max_safe_fds = 32; /* default if not changed */ /* Debugging.... */ #ifdef FDDEBUG -#define DO_DB(A) A +#define DO_DB(A) \ + do { \ + int _do_db_save_errno = errno; \ + A; \ + errno = _do_db_save_errno; \ + } while (0) #else -#define DO_DB(A) /* A */ +#define DO_DB(A) \ + ((void) 0) #endif #define VFD_CLOSED (-1) @@ -127,11 +133,12 @@ static int max_safe_fds = 32; /* default if not changed */ /* these are the assigned bits in fdstate below: */ #define FD_TEMPORARY (1 << 0) /* T = delete when closed */ #define FD_XACT_TEMPORARY (1 << 1) /* T = delete at eoXact */ -#define FD_XACT_TRANSIENT (1 << 2) /* T = close (not delete) at aoXact, - * but keep VFD */ -/* Flag to tell whether there are files to close/delete at end of transaction */ -static bool have_pending_fd_cleanup = false; +/* + * Flag to tell whether it's worth scanning VfdCache looking for temp files to + * close + */ +static bool have_xact_temporary_files = false; typedef struct vfd { @@ -164,13 +171,7 @@ static int nfile = 0; /* * List of stdio FILEs and DIRs opened with AllocateFile * and AllocateDir. - * - * Since we don't want to encourage heavy use of AllocateFile or AllocateDir, - * it seems OK to put a pretty small maximum limit on the number of - * simultaneously allocated descs. */ -#define MAX_ALLOCATED_DESCS 32 - typedef enum { AllocateDescFile, @@ -180,16 +181,17 @@ typedef enum typedef struct { AllocateDescKind kind; + SubTransactionId create_subid; union { FILE *file; DIR *dir; } desc; - SubTransactionId create_subid; } AllocateDesc; static int numAllocatedDescs = 0; -static AllocateDesc allocatedDescs[MAX_ALLOCATED_DESCS]; +static int maxAllocatedDescs = 0; +static AllocateDesc *allocatedDescs = NULL; /* * Number of temporary files opened during the current session; @@ -215,6 +217,7 @@ static int nextTempTableSpace = 0; * Insert - put a file at the front of the Lru ring * LruInsert - put a file at the front of the Lru ring and open it * ReleaseLruFile - Release an fd by closing the last entry in the Lru ring + * ReleaseLruFiles - Release fd(s) until we're under the max_safe_fds limit * AllocateVfd - grab a free (or new) file record (from VfdArray) * FreeVfd - free a file record * @@ -242,11 +245,14 @@ static void LruDelete(File file); static void Insert(File file); static int LruInsert(File file); static bool ReleaseLruFile(void); +static void ReleaseLruFiles(void); static File AllocateVfd(void); static void FreeVfd(File file); static int FileAccess(File file); static File OpenTemporaryFileInTablespace(Oid tblspcOid, bool rejectError); +static bool reserveAllocatedDesc(void); +static int FreeDesc(AllocateDesc *desc); static void AtProcExit_Files(int code, Datum arg); static void CleanupTempFiles(bool isProcExit); static void RemovePgTempFilesInDir(const char *tmpdirname); @@ -592,7 +598,6 @@ LruDelete(File file) Vfd *vfdP; Assert(file != 0); - Assert(!FileIsNotOpen(file)); DO_DB(elog(LOG, "LruDelete %d (%s)", file, VfdCache[file].fileName)); @@ -650,11 +655,8 @@ LruInsert(File file) if (FileIsNotOpen(file)) { - while (nfile + numAllocatedDescs >= max_safe_fds) - { - if (!ReleaseLruFile()) - break; - } + /* Close excess kernel FDs. */ + ReleaseLruFiles(); /* * The open could still fail for lack of file descriptors, eg due to @@ -666,7 +668,7 @@ LruInsert(File file) if (vfdP->fd < 0) { DO_DB(elog(LOG, "RE_OPEN FAILED: %d", errno)); - return vfdP->fd; + return -1; } else { @@ -693,6 +695,9 @@ LruInsert(File file) return 0; } +/* + * Release one kernel FD by closing the least-recently-used VFD. + */ static bool ReleaseLruFile(void) { @@ -711,13 +716,27 @@ ReleaseLruFile(void) return false; /* no files available to free */ } +/* + * Release kernel FDs as needed to get under the max_safe_fds limit. + * After calling this, it's OK to try to open another file. + */ +static void +ReleaseLruFiles(void) +{ + while (nfile + numAllocatedDescs >= max_safe_fds) + { + if (!ReleaseLruFile()) + break; + } +} + static File AllocateVfd(void) { Index i; File file; - DO_DB(elog(LOG, "AllocateVfd. Size %lu", SizeVfdCache)); + DO_DB(elog(LOG, "AllocateVfd. Size %lu", (unsigned long) SizeVfdCache)); Assert(SizeVfdCache > 0); /* InitFileAccess not called? */ @@ -864,18 +883,18 @@ PathNameOpenFile(FileName fileName, int fileFlags, int fileMode) file = AllocateVfd(); vfdP = &VfdCache[file]; - while (nfile + numAllocatedDescs >= max_safe_fds) - { - if (!ReleaseLruFile()) - break; - } + /* Close excess kernel FDs. */ + ReleaseLruFiles(); vfdP->fd = BasicOpenFile(fileName, fileFlags, fileMode); if (vfdP->fd < 0) { + int save_errno = errno; + FreeVfd(file); free(fnamecopy); + errno = save_errno; return -1; } ++nfile; @@ -955,7 +974,7 @@ OpenTemporaryFile(bool interXact) VfdCache[file].resowner = CurrentResourceOwner; /* ensure cleanup happens at eoxact */ - have_pending_fd_cleanup = true; + have_xact_temporary_files = true; } return file; @@ -1034,25 +1053,6 @@ OpenTemporaryFileInTablespace(Oid tblspcOid, bool rejectError) return file; } -/* - * Set the transient flag on a file - * - * This flag tells CleanupTempFiles to close the kernel-level file descriptor - * (but not the VFD itself) at end of transaction. - */ -void -FileSetTransient(File file) -{ - Vfd *vfdP; - - Assert(FileIsValid(file)); - - vfdP = &VfdCache[file]; - vfdP->fdstate |= FD_XACT_TRANSIENT; - - have_pending_fd_cleanup = true; -} - /* * close a file when done with it */ @@ -1420,6 +1420,66 @@ FilePathName(File file) } +/* + * Make room for another allocatedDescs[] array entry if needed and possible. + * Returns true if an array element is available. + */ +static bool +reserveAllocatedDesc(void) +{ + AllocateDesc *newDescs; + int newMax; + + /* Quick out if array already has a free slot. */ + if (numAllocatedDescs < maxAllocatedDescs) + return true; + + /* + * If the array hasn't yet been created in the current process, initialize + * it with FD_MINFREE / 2 elements. In many scenarios this is as many as + * we will ever need, anyway. We don't want to look at max_safe_fds + * immediately because set_max_safe_fds() may not have run yet. + */ + if (allocatedDescs == NULL) + { + newMax = FD_MINFREE / 2; + newDescs = (AllocateDesc *) malloc(newMax * sizeof(AllocateDesc)); + /* Out of memory already? Treat as fatal error. */ + if (newDescs == NULL) + ereport(ERROR, + (errcode(ERRCODE_OUT_OF_MEMORY), + errmsg("out of memory"))); + allocatedDescs = newDescs; + maxAllocatedDescs = newMax; + return true; + } + + /* + * Consider enlarging the array beyond the initial allocation used above. + * By the time this happens, max_safe_fds should be known accurately. + * + * We mustn't let allocated descriptors hog all the available FDs, and in + * practice we'd better leave a reasonable number of FDs for VFD use. So + * set the maximum to max_safe_fds / 2. (This should certainly be at + * least as large as the initial size, FD_MINFREE / 2.) + */ + newMax = max_safe_fds / 2; + if (newMax > maxAllocatedDescs) + { + newDescs = (AllocateDesc *) realloc(allocatedDescs, + newMax * sizeof(AllocateDesc)); + /* Treat out-of-memory as a non-fatal error. */ + if (newDescs == NULL) + return false; + allocatedDescs = newDescs; + maxAllocatedDescs = newMax; + return true; + } + + /* Can't enlarge allocatedDescs[] any more. */ + return false; +} + /* * Routines that want to use stdio (ie, FILE*) should use AllocateFile * rather than plain fopen(). This lets fd.c deal with freeing FDs if @@ -1445,16 +1505,15 @@ AllocateFile(const char *name, const char *mode) DO_DB(elog(LOG, "AllocateFile: Allocated %d (%s)", numAllocatedDescs, name)); - /* - * The test against MAX_ALLOCATED_DESCS prevents us from overflowing - * allocatedFiles[]; the test against max_safe_fds prevents AllocateFile - * from hogging every one of the available FDs, which'd lead to infinite - * looping. - */ - if (numAllocatedDescs >= MAX_ALLOCATED_DESCS || - numAllocatedDescs >= max_safe_fds - 1) - elog(ERROR, "exceeded MAX_ALLOCATED_DESCS while trying to open file \"%s\"", - name); + /* Can we allocate another non-virtual FD? */ + if (!reserveAllocatedDesc()) + ereport(ERROR, + (errcode(ERRCODE_INSUFFICIENT_RESOURCES), + errmsg("exceeded maxAllocatedDescs (%d) while trying to open file \"%s\"", + maxAllocatedDescs, name))); + + /* Close excess kernel FDs. */ + ReleaseLruFiles(); TryAgain: if ((file = fopen(name, mode)) != NULL) @@ -1561,16 +1620,15 @@ AllocateDir(const char *dirname) DO_DB(elog(LOG, "AllocateDir: Allocated %d (%s)", numAllocatedDescs, dirname)); - /* - * The test against MAX_ALLOCATED_DESCS prevents us from overflowing - * allocatedDescs[]; the test against max_safe_fds prevents AllocateDir - * from hogging every one of the available FDs, which'd lead to infinite - * looping. - */ - if (numAllocatedDescs >= MAX_ALLOCATED_DESCS || - numAllocatedDescs >= max_safe_fds - 1) - elog(ERROR, "exceeded MAX_ALLOCATED_DESCS while trying to open directory \"%s\"", - dirname); + /* Can we allocate another non-virtual FD? */ + if (!reserveAllocatedDesc()) + ereport(ERROR, + (errcode(ERRCODE_INSUFFICIENT_RESOURCES), + errmsg("exceeded maxAllocatedDescs (%d) while trying to open directory \"%s\"", + maxAllocatedDescs, dirname))); + + /* Close excess kernel FDs. */ + ReleaseLruFiles(); TryAgain: if ((dir = opendir(dirname)) != NULL) @@ -1805,9 +1863,8 @@ AtEOSubXact_Files(bool isCommit, SubTransactionId mySubid, * particularly care which). All still-open per-transaction temporary file * VFDs are closed, which also causes the underlying files to be deleted * (although they should've been closed already by the ResourceOwner - * cleanup). Transient files have their kernel file descriptors closed. - * Furthermore, all "allocated" stdio files are closed. We also forget any - * transaction-local temp tablespace list. + * cleanup). Furthermore, all "allocated" stdio files are closed. We also + * forget any transaction-local temp tablespace list. */ void AtEOXact_Files(void) @@ -1830,10 +1887,7 @@ AtProcExit_Files(int code, Datum arg) } /* - * General cleanup routine for fd.c. - * - * Temporary files are closed, and their underlying files deleted. - * Transient files are closed. + * Close temporary files and delete their underlying files. * * isProcExit: if true, this is being called as the backend process is * exiting. If that's the case, we should remove all temporary files; if @@ -1850,51 +1904,35 @@ CleanupTempFiles(bool isProcExit) * Careful here: at proc_exit we need extra cleanup, not just * xact_temporary files. */ - if (isProcExit || have_pending_fd_cleanup) + if (isProcExit || have_xact_temporary_files) { Assert(FileIsNotOpen(0)); /* Make sure ring not corrupted */ for (i = 1; i < SizeVfdCache; i++) { unsigned short fdstate = VfdCache[i].fdstate; - if (VfdCache[i].fileName != NULL) + if ((fdstate & FD_TEMPORARY) && VfdCache[i].fileName != NULL) { - if (fdstate & FD_TEMPORARY) - { - /* - * If we're in the process of exiting a backend process, close - * all temporary files. Otherwise, only close temporary files - * local to the current transaction. They should be closed by - * the ResourceOwner mechanism already, so this is just a - * debugging cross-check. - */ - if (isProcExit) - FileClose(i); - else if (fdstate & FD_XACT_TEMPORARY) - { - elog(WARNING, - "temporary file %s not closed at end-of-transaction", - VfdCache[i].fileName); - FileClose(i); - } - } - else if (fdstate & FD_XACT_TRANSIENT) + /* + * If we're in the process of exiting a backend process, close + * all temporary files. Otherwise, only close temporary files + * local to the current transaction. They should be closed by + * the ResourceOwner mechanism already, so this is just a + * debugging cross-check. + */ + if (isProcExit) + FileClose(i); + else if (fdstate & FD_XACT_TEMPORARY) { - /* - * Close the FD, and remove the entry from the LRU ring, - * but also remove the flag from the VFD. This is to - * ensure that if the VFD is reused in the future for - * non-transient access, we don't close it inappropriately - * then. - */ - if (!FileIsNotOpen(i)) - LruDelete(i); - VfdCache[i].fdstate &= ~FD_XACT_TRANSIENT; + elog(WARNING, + "temporary file %s not closed at end-of-transaction", + VfdCache[i].fileName); + FileClose(i); } } } - have_pending_fd_cleanup = false; + have_xact_temporary_files = false; } /* Clean up "allocated" stdio files and dirs. */ diff --git a/src/backend/storage/file/reinit.c b/src/backend/storage/file/reinit.c index 9c59fd648b..9f5bcea2f0 100644 --- a/src/backend/storage/file/reinit.c +++ b/src/backend/storage/file/reinit.c @@ -57,10 +57,9 @@ ResetUnloggedRelations(int op) oldctx; /* Log it. */ - ereport(DEBUG1, - (errmsg("resetting unlogged relations: cleanup %d init %d", - (op & UNLOGGED_RELATION_CLEANUP) != 0, - (op & UNLOGGED_RELATION_INIT) != 0))); + elog(DEBUG1, "resetting unlogged relations: cleanup %d init %d", + (op & UNLOGGED_RELATION_CLEANUP) != 0, + (op & UNLOGGED_RELATION_INIT) != 0); /* * Just to be sure we don't leak any memory, let's create a temporary diff --git a/src/backend/storage/ipc/procarray.c b/src/backend/storage/ipc/procarray.c index 8dca1fa735..fd68650450 100644 --- a/src/backend/storage/ipc/procarray.c +++ b/src/backend/storage/ipc/procarray.c @@ -18,6 +18,23 @@ * backend PGPROCs at need by checking for pid == 0. * #ifdef PGXC + * Vanilla PostgreSQL assumes maximum TransactinIds in any snapshot is + * arrayP->maxProcs. It does not apply to XC because XC's snapshot + * should include XIDs running in other node, which may come at any + * time. This means that needed size of xip varies from time to time. + * + * This must be handled properly in all the functions in this module. + * + * The member max_xcnt was added as SnapshotData member to indicate the + * real size of xip array. + * + * Here, the following assumption is made for SnapshotData struct throughout + * this module. + * + * 1. xip member physical size is indicated by max_xcnt member. + * 2. If max_xcnt == 0, it means that xip members is NULL, and vise versa. + * 3. xip (and subxip) are allocated usign malloc() or realloc() directly. + * * For Postgres-XC, there is some special handling for ANALYZE. * An XID for a local ANALYZE command will never involve other nodes. * Also, ANALYZE may run for a long time, affecting snapshot xmin values @@ -43,7 +60,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -70,6 +87,7 @@ #include "pgxc/pgxc.h" #include "access/gtm.h" #include "storage/ipc.h" +#include "pgxc/nodemgr.h" /* PGXC_DATANODE */ #include "postmaster/autovacuum.h" #endif @@ -79,9 +97,9 @@ typedef struct ProcArrayStruct { int numProcs; /* number of valid procs entries */ -#ifdef PGXC +#ifdef PGXC int numAVProcs; /* number of autovacuum procs - stored at the begining of the array */ -#endif +#endif int maxProcs; /* allocated size of procs array */ /* @@ -166,15 +184,19 @@ static void DisplayXidCache(void); typedef enum { SNAPSHOT_UNDEFINED, /* Coordinator has not sent snapshot or not yet connected */ - SNAPSHOT_LOCAL, /* Coordinator has instructed data node to build up snapshot from the local procarray */ + SNAPSHOT_LOCAL, /* Coordinator has instructed Datanode to build up snapshot from the local procarray */ SNAPSHOT_COORDINATOR, /* Coordinator has sent snapshot data */ - SNAPSHOT_DIRECT /* Data Node obtained directly from GTM */ + SNAPSHOT_DIRECT /* Datanode obtained directly from GTM */ } SnapshotSource; void SetGlobalSnapshotData(int xmin, int xmax, int xcnt, int *xip); void UnsetGlobalSnapshotData(void); +static bool GetPGXCSnapshotData(Snapshot snapshot); static bool GetSnapshotDataDataNode(Snapshot snapshot); static bool GetSnapshotDataCoordinator(Snapshot snapshot); +static bool resizeXip(Snapshot snapshot, int newsize); +static bool resizeSubxip(Snapshot snapshot, int newsize); +static void cleanSnapshot(Snapshot snapshot); /* Global snapshot data */ static SnapshotSource snapshot_source = SNAPSHOT_UNDEFINED; static int gxmin = InvalidTransactionId; @@ -199,6 +221,7 @@ static int KnownAssignedXidsGetAndSetXmin(TransactionId *xarray, TransactionId xmax); static TransactionId KnownAssignedXidsGetOldestXmin(void); static void KnownAssignedXidsDisplay(int trace_level); +static void KnownAssignedXidsReset(void); /* * Report shared-memory space needed by CreateSharedProcArray. @@ -227,8 +250,13 @@ ProcArrayShmemSize(void) * standby in the current run, but we don't know that yet at the time * shared memory is being set up. */ +#if 0 /* Reamins this code for the test to disable KnownAssignedXids in the slave */ +#define TOTAL_MAX_CACHED_SUBXIDS \ + (((PGPROC_MAX_CACHED_SUBXIDS + 1) * PROCARRAY_MAXPROCS) * (MaxCoords + MaxDataNodes)) +#else #define TOTAL_MAX_CACHED_SUBXIDS \ ((PGPROC_MAX_CACHED_SUBXIDS + 1) * PROCARRAY_MAXPROCS) +#endif if (EnableHotStandby) { @@ -319,7 +347,7 @@ ProcArrayAdd(PGPROC *proc) arrayP->numAVProcs++; } else -#endif +#endif arrayP->procs[arrayP->numProcs] = proc; arrayP->numProcs++; @@ -432,12 +460,12 @@ ProcArrayEndTransaction(PGPROC *proc, TransactionId latestXid) #ifdef PGXC /* * Remove this assertion. We have seen this failing because a ROLLBACK - * statement may get canceled by a coordinator, leading to recursive + * statement may get canceled by a Coordinator, leading to recursive * abort of a transaction. This must be a PostgreSQL issue, highlighted * by XC. See thread on hackers with subject "Canceling ROLLBACK * statement" */ -#else +#else Assert(TransactionIdIsValid(proc->xid)); #endif @@ -474,7 +502,7 @@ ProcArrayEndTransaction(PGPROC *proc, TransactionId latestXid) * We are seeing this assertion failure every once in a while. We have * a theory about how this can happen also on vanilla PostgreSQL, we * don't have a reproducible case yet (see email of hackers with - * subject "Canceling ROLLBACK statement". + * subject "Canceling ROLLBACK statement". */ Assert(!TransactionIdIsValid(proc->xid)); #endif @@ -523,6 +551,29 @@ ProcArrayClearTransaction(PGPROC *proc) proc->subxids.overflowed = false; } +/* + * ProcArrayInitRecovery -- initialize recovery xid mgmt environment + * + * Remember up to where the startup process initialized the CLOG and subtrans + * so we can ensure it's initialized gaplessly up to the point where necessary + * while in recovery. + */ +void +ProcArrayInitRecovery(TransactionId initializedUptoXID) +{ + Assert(standbyState == STANDBY_INITIALIZED); + Assert(TransactionIdIsNormal(initializedUptoXID)); + + /* + * we set latestObservedXid to the xid SUBTRANS has been initialized upto, + * so we can extend it from that point onwards in + * RecordKnownAssignedTransactionIds, and when we get consistent in + * ProcArrayApplyRecoveryInfo(). + */ + latestObservedXid = initializedUptoXID; + TransactionIdRetreat(latestObservedXid); +} + /* * ProcArrayApplyRecoveryInfo -- apply recovery info about xids * @@ -555,7 +606,7 @@ ProcArrayApplyRecoveryInfo(RunningTransactions running) * Remove stale transactions, if any. */ ExpireOldKnownAssignedTransactionIds(running->oldestRunningXid); - StandbyReleaseOldLocks(running->oldestRunningXid); + StandbyReleaseOldLocks(running->xcnt, running->xids); /* * If our snapshot is already valid, nothing else to do... @@ -565,8 +616,9 @@ ProcArrayApplyRecoveryInfo(RunningTransactions running) /* * If our initial RunningTransactionsData had an overflowed snapshot then - * we knew we were missing some subxids from our snapshot. We can use this - * data as an initial snapshot, but we cannot yet mark it valid. We know + * we knew we were missing some subxids from our snapshot. If we continue + * to see overflowed snapshots then we might never be able to start up, + * so we make another test to see if our snapshot is now valid. We know * that the missing subxids are equal to or earlier than nextXid. After we * initialise we continue to apply changes during recovery, so once the * oldestRunningXid is later than the nextXid from the initial snapshot we @@ -575,34 +627,46 @@ ProcArrayApplyRecoveryInfo(RunningTransactions running) */ if (standbyState == STANDBY_SNAPSHOT_PENDING) { - if (TransactionIdPrecedes(standbySnapshotPendingXmin, - running->oldestRunningXid)) + /* + * If the snapshot isn't overflowed or if its empty we can + * reset our pending state and use this snapshot instead. + */ + if (!running->subxid_overflow || running->xcnt == 0) { - standbyState = STANDBY_SNAPSHOT_READY; - elog(trace_recovery(DEBUG2), - "running xact data now proven complete"); - elog(trace_recovery(DEBUG2), - "recovery snapshots are now enabled"); + /* + * If we have already collected known assigned xids, we need to + * throw them away before we apply the recovery snapshot. + */ + KnownAssignedXidsReset(); + standbyState = STANDBY_INITIALIZED; } else - elog(trace_recovery(DEBUG2), - "recovery snapshot waiting for %u oldest active xid on standby is %u", - standbySnapshotPendingXmin, - running->oldestRunningXid); - return; + { + if (TransactionIdPrecedes(standbySnapshotPendingXmin, + running->oldestRunningXid)) + { + standbyState = STANDBY_SNAPSHOT_READY; + elog(trace_recovery(DEBUG1), + "recovery snapshots are now enabled"); + } + else + elog(trace_recovery(DEBUG1), + "recovery snapshot waiting for non-overflowed snapshot or " + "until oldest active xid on standby is at least %u (now %u)", + standbySnapshotPendingXmin, + running->oldestRunningXid); + return; + } } Assert(standbyState == STANDBY_INITIALIZED); /* - * OK, we need to initialise from the RunningTransactionsData record - */ - - /* - * Release any locks belonging to old transactions that are not running - * according to the running-xacts record. + * OK, we need to initialise from the RunningTransactionsData record. + * + * NB: this can be reached at least twice, so make sure new code can deal + * with that. */ - StandbyReleaseOldLocks(running->nextXid); /* * Nobody else is running yet, but take locks anyhow @@ -620,7 +684,6 @@ ProcArrayApplyRecoveryInfo(RunningTransactions running) * xids to subtrans. If RunningXacts is overflowed then we don't have * enough information to correctly update subtrans anyway. */ - Assert(procArray->numKnownAssignedXids == 0); /* * Allocate a temporary array to avoid modifying the array passed as @@ -650,6 +713,12 @@ ProcArrayApplyRecoveryInfo(RunningTransactions running) if (nxids > 0) { + if (procArray->numKnownAssignedXids != 0) + { + LWLockRelease(ProcArrayLock); + elog(ERROR, "KnownAssignedXids is not empty"); + } + /* * Sort the array so that we can add them safely into * KnownAssignedXids. @@ -668,20 +737,38 @@ ProcArrayApplyRecoveryInfo(RunningTransactions running) pfree(xids); /* + * latestObservedXid is at least set to the the point where SUBTRANS was + * started up to (c.f. ProcArrayInitRecovery()) or to the biggest xid + * RecordKnownAssignedTransactionIds() was called for. Initialize + * subtrans from thereon, up to nextXid - 1. + * + * We need to duplicate parts of RecordKnownAssignedTransactionId() here, + * because we've just added xids to the known assigned xids machinery that + * haven't gone through RecordKnownAssignedTransactionId(). + */ + Assert(TransactionIdIsNormal(latestObservedXid)); + TransactionIdAdvance(latestObservedXid); + while (TransactionIdPrecedes(latestObservedXid, running->nextXid)) + { + ExtendSUBTRANS(latestObservedXid); + TransactionIdAdvance(latestObservedXid); + } + TransactionIdRetreat(latestObservedXid); /* = running->nextXid - 1 */ + + /* ---------- * Now we've got the running xids we need to set the global values that * are used to track snapshots as they evolve further. * - * - latestCompletedXid which will be the xmax for snapshots - - * lastOverflowedXid which shows whether snapshots overflow - nextXid + * - latestCompletedXid which will be the xmax for snapshots + * - lastOverflowedXid which shows whether snapshots overflow + * - nextXid * * If the snapshot overflowed, then we still initialise with what we know, * but the recovery snapshot isn't fully valid yet because we know there * are some subxids missing. We don't know the specific subxids that are * missing, so conservatively assume the last one is latestObservedXid. + * ---------- */ - latestObservedXid = running->nextXid; - TransactionIdRetreat(latestObservedXid); - if (running->subxid_overflow) { standbyState = STANDBY_SNAPSHOT_PENDING; @@ -694,7 +781,6 @@ ProcArrayApplyRecoveryInfo(RunningTransactions running) standbyState = STANDBY_SNAPSHOT_READY; standbySnapshotPendingXmin = InvalidTransactionId; - procArray->lastOverflowedXid = InvalidTransactionId; } /* @@ -717,13 +803,15 @@ ProcArrayApplyRecoveryInfo(RunningTransactions running) LWLockRelease(ProcArrayLock); - elog(trace_recovery(DEBUG2), "running transaction data initialized"); KnownAssignedXidsDisplay(trace_recovery(DEBUG3)); if (standbyState == STANDBY_SNAPSHOT_READY) - elog(trace_recovery(DEBUG2), "recovery snapshots are now enabled"); + elog(trace_recovery(DEBUG1), "recovery snapshots are now enabled"); else - ereport(LOG, - (errmsg("consistent state delayed because recovery snapshot incomplete"))); + elog(trace_recovery(DEBUG1), + "recovery snapshot waiting for non-overflowed snapshot or " + "until oldest active xid on standby is at least %u (now %u)", + standbySnapshotPendingXmin, + running->oldestRunningXid); } /* @@ -765,6 +853,10 @@ ProcArrayApplyXidAssignment(TransactionId topxid, for (i = 0; i < nsubxids; i++) SubTransSetParent(subxids[i], topxid, false); + /* KnownAssignedXids isn't maintained yet, so we're done for now */ + if (standbyState == STANDBY_INITIALIZED) + return; + /* * Uses same locking as transaction commit */ @@ -1087,22 +1179,32 @@ TransactionIdIsActive(TransactionId xid) * This is also used to determine where to truncate pg_subtrans. allDbs * must be TRUE for that case, and ignoreVacuum FALSE. * - * Note: it's possible for the calculated value to move backwards on repeated - * calls. The calculated value is conservative, so that anything older is - * definitely not considered as running by anyone anymore, but the exact - * value calculated depends on a number of things. For example, if allDbs is - * TRUE and there are no transactions running in the current database, - * GetOldestXmin() returns latestCompletedXid. If a transaction begins after - * that, its xmin will include in-progress transactions in other databases - * that started earlier, so another call will return an lower value. The - * return value is also adjusted with vacuum_defer_cleanup_age, so increasing - * that setting on the fly is an easy way to have GetOldestXmin() move - * backwards. - * * Note: we include all currently running xids in the set of considered xids. * This ensures that if a just-started xact has not yet set its snapshot, * when it does set the snapshot it cannot set xmin less than what we compute. * See notes in src/backend/access/transam/README. + * + * Note: despite the above, it's possible for the calculated value to move + * backwards on repeated calls. The calculated value is conservative, so that + * anything older is definitely not considered as running by anyone anymore, + * but the exact value calculated depends on a number of things. For example, + * if allDbs is FALSE and there are no transactions running in the current + * database, GetOldestXmin() returns latestCompletedXid. If a transaction + * begins after that, its xmin will include in-progress transactions in other + * databases that started earlier, so another call will return a lower value. + * Nonetheless it is safe to vacuum a table in the current database with the + * first result. There are also replication-related effects: a walsender + * process can set its xmin based on transactions that are no longer running + * in the master but are still being replayed on the standby, thus possibly + * making the GetOldestXmin reading go backwards. In this case there is a + * possibility that we lose data that the standby would like to have, but + * there is little we can do about that --- data is only protected if the + * walsender runs continuously while queries are executed on the standby. + * (The Hot Standby code deals with such cases by failing standby queries + * that needed to access already-removed data, so there's no integrity bug.) + * The return value is also adjusted with vacuum_defer_cleanup_age, so + * increasing that setting on the fly is another easy way to make + * GetOldestXmin() move backwards, with no consequences for data integrity. */ TransactionId GetOldestXmin(bool allDbs, bool ignoreVacuum) @@ -1140,7 +1242,7 @@ GetOldestXmin(bool allDbs, bool ignoreVacuum) if (allDbs || proc->databaseId == MyDatabaseId || - proc->databaseId == 0) /* include WalSender */ + proc->databaseId == 0) /* always include WalSender */ { /* Fetch xid just once - see GetNewTransactionId */ TransactionId xid = proc->xid; @@ -1186,16 +1288,18 @@ GetOldestXmin(bool allDbs, bool ignoreVacuum) LWLockRelease(ProcArrayLock); /* - * Compute the cutoff XID, being careful not to generate a "permanent" - * XID. We need do this only on the primary, never on standby. + * Compute the cutoff XID by subtracting vacuum_defer_cleanup_age, + * being careful not to generate a "permanent" XID. * * vacuum_defer_cleanup_age provides some additional "slop" for the * benefit of hot standby queries on slave servers. This is quick and * dirty, and perhaps not all that useful unless the master has a - * predictable transaction rate, but it's what we've got. Note that - * we are assuming vacuum_defer_cleanup_age isn't large enough to - * cause wraparound --- so guc.c should limit it to no more than the - * xidStopLimit threshold in varsup.c. + * predictable transaction rate, but it offers some protection when + * there's no walsender connection. Note that we are assuming + * vacuum_defer_cleanup_age isn't large enough to cause wraparound --- + * so guc.c should limit it to no more than the xidStopLimit threshold + * in varsup.c. Also note that we intentionally don't apply + * vacuum_defer_cleanup_age on standby servers. */ result -= vacuum_defer_cleanup_age; if (!TransactionIdIsNormal(result)) @@ -1250,55 +1354,28 @@ GetSnapshotData(Snapshot snapshot) int subcount = 0; bool suboverflowed = false; + + Assert(snapshot != NULL); + #ifdef PGXC /* PGXC_DATANODE */ /* - * The typical case is that the coordinator passes down the snapshot to the - * data nodes to use, while it itselfs obtains them from GTM. - * The data nodes may however connect directly to GTM themselves to obtain - * XID and snapshot information for autovacuum worker threads. - */ - if (IS_PGXC_DATANODE || IsConnFromCoord()) - { - if (GetSnapshotDataDataNode(snapshot)) - return snapshot; - /* else fallthrough */ - } - else if (IS_PGXC_COORDINATOR && !IsConnFromCoord() && IsNormalProcessingMode()) - { - /* Snapshot has ever been received from remote Coordinator */ - if (GetSnapshotDataCoordinator(snapshot)) - return snapshot; - /* else fallthrough */ - } + * Obtain a global snapshot for a Postgres-XC session + * if possible. + */ + if (GetPGXCSnapshotData(snapshot)) + return snapshot; /* - * If we have no snapshot, we will use a local one. - * If we are in normal mode, we output a warning though. - * We currently fallback and use a local one at initdb time, - * as well as when a new connection occurs. - * This is also the case for autovacuum launcher. - * - * IsPostmasterEnvironment - checks for initdb - * IsNormalProcessingMode() - checks for new connections - * IsAutoVacuumLauncherProcess - checks for autovacuum launcher process + * The codes below run when GetPGXCSnapshotData() couldn't get snapshot from + * GTM. So no data in snapshot will be used. */ - if (IS_PGXC_DATANODE && - snapshot_source == SNAPSHOT_UNDEFINED && - IsPostmasterEnvironment && - IsNormalProcessingMode() && - !IsAutoVacuumLauncherProcess()) - { - elog(WARNING, "Do not have a GTM snapshot available"); - } -#endif - + cleanSnapshot(snapshot); + /* * Fallback to standard routine, calculate snapshot from local proc arrey * if no master connection */ - - - Assert(snapshot != NULL); +#endif /* * Allocating space for maxProcs xids is usually overkill; numProcs would @@ -1313,6 +1390,10 @@ GetSnapshotData(Snapshot snapshot) */ if (snapshot->xip == NULL) { +#ifdef PGXC + resizeXip(snapshot, arrayP->maxProcs); + resizeSubxip(snapshot, TOTAL_MAX_CACHED_SUBXIDS); +#else /* * First call for this snapshot. Snapshot is same size whether or not * we are in recovery, see later comments. @@ -1330,8 +1411,8 @@ GetSnapshotData(Snapshot snapshot) ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"))); +#endif } - /* * It is sufficient to get shared lock on ProcArrayLock, even if we are * going to set MyProc->xmin. @@ -1398,7 +1479,14 @@ GetSnapshotData(Snapshot snapshot) if (TransactionIdFollowsOrEquals(xid, xmax)) continue; if (proc != MyProc) +#ifdef PGXC + { + resizeXip(snapshot, count + 1); +#endif snapshot->xip[count++] = xid; +#ifdef PGXC + } +#endif if (TransactionIdPrecedes(xid, xmin)) xmin = xid; } @@ -1497,8 +1585,11 @@ GetSnapshotData(Snapshot snapshot) snapshot->curcid = GetCurrentCommandId(false); #ifdef PGXC - elog(DEBUG1, "Local snapshot is built, xmin: %d, xmax: %d, xcnt: %d, RecentGlobalXmin: %d", xmin, xmax, count, globalxmin); -#endif + if (!RecoveryInProgress()) + elog(DEBUG1, "Local snapshot is built, xmin: %d, xmax: %d, xcnt: %d, RecentGlobalXmin: %d", + xmin, xmax, count, globalxmin); +#endif + /* * This is a new snapshot, so set both refcounts are zero, and mark it as * not copied in persistent memory. @@ -1529,6 +1620,11 @@ GetSnapshotData(Snapshot snapshot) * We don't worry about updating other counters, we want to keep this as * simple as possible and leave GetSnapshotData() as the primary code for * that bookkeeping. + * + * Note that if any transaction has overflowed its cached subtransactions + * then there is no real need include any subtransactions. That isn't a + * common enough case to worry about optimising the size of the WAL record, + * and we may wish to see that data for diagnostic purposes anyway. */ RunningTransactions GetRunningTransactionData(void) @@ -1649,6 +1745,63 @@ GetRunningTransactionData(void) return CurrentRunningXacts; } +/* + * GetOldestActiveTransactionId() + * + * Similar to GetSnapshotData but returns just oldestActiveXid. We include + * all PGPROCs with an assigned TransactionId, even VACUUM processes. + * We look at all databases, though there is no need to include WALSender + * since this has no effect on hot standby conflicts. + * + * This is never executed during recovery so there is no need to look at + * KnownAssignedXids. + * + * We don't worry about updating other counters, we want to keep this as + * simple as possible and leave GetSnapshotData() as the primary code for + * that bookkeeping. + */ +TransactionId +GetOldestActiveTransactionId(void) +{ + ProcArrayStruct *arrayP = procArray; + TransactionId oldestRunningXid; + int index; + + Assert(!RecoveryInProgress()); + + LWLockAcquire(ProcArrayLock, LW_SHARED); + + oldestRunningXid = ShmemVariableCache->nextXid; + + /* + * Spin over procArray collecting all xids and subxids. + */ + for (index = 0; index < arrayP->numProcs; index++) + { + volatile PGPROC *proc = arrayP->procs[index]; + TransactionId xid; + + /* Fetch xid just once - see GetNewTransactionId */ + xid = proc->xid; + + if (!TransactionIdIsNormal(xid)) + continue; + + if (TransactionIdPrecedes(xid, oldestRunningXid)) + oldestRunningXid = xid; + + /* + * Top-level XID of a transaction is always less than any of its + * subxids, so we don't need to check if any of the subxids are + * smaller than oldestRunningXid + */ + } + + LWLockRelease(ProcArrayLock); + + return oldestRunningXid; +} + /* * GetTransactionsInCommit -- Get the XIDs of transactions that are committing * @@ -2445,11 +2598,11 @@ DisplayXidCache(void) #endif /* XIDCACHE_DEBUG */ -#ifdef PGXC +#ifdef PGXC /* - * Store snapshot data received from the coordinator + * Store snapshot data received from the Coordinator */ -void +void SetGlobalSnapshotData(int xmin, int xmax, int xcnt, int *xip) { snapshot_source = SNAPSHOT_COORDINATOR; @@ -2463,7 +2616,7 @@ SetGlobalSnapshotData(int xmin, int xmax, int xcnt, int *xip) } /* - * Force datanode to use local snapshot data + * Force Datanode to use local snapshot data */ void UnsetGlobalSnapshotData(void) @@ -2478,18 +2631,83 @@ UnsetGlobalSnapshotData(void) elog (DEBUG1, "unset snapshot info"); } + /* - * Get snapshot data for data node - * This is usually passed down from the coordinator + * Entry of snapshot obtention for Postgres-XC node + */ +static bool +GetPGXCSnapshotData(Snapshot snapshot) +{ + /* + * If this node is in recovery phase, + * snapshot has to be taken directly from WAL information. + */ + if (RecoveryInProgress()) + return false; + + /* + * The typical case is that the local Coordinator passes down the snapshot to the + * remote nodes to use, while it itself obtains it from GTM. Autovacuum processes + * need however to connect directly to GTM themselves to obtain XID and snapshot + * information for autovacuum worker threads. + * A vacuum analyze uses a special function to get a transaction ID and signal + * GTM not to include this transaction ID in snapshot. + * A vacuum worker starts as a normal transaction would. + */ + if (IS_PGXC_DATANODE || IsConnFromCoord() || IsAutoVacuumWorkerProcess()) + { + if (GetSnapshotDataDataNode(snapshot)) + return true; + /* else fallthrough */ + } + else if (IS_PGXC_COORDINATOR && !IsConnFromCoord() && IsNormalProcessingMode()) + { + /* Snapshot has ever been received from remote Coordinator */ + if (GetSnapshotDataCoordinator(snapshot)) + return true; + /* else fallthrough */ + } + + /* + * If we have no snapshot, we will use a local one. + * If we are in normal mode, we output a warning though. + * We currently fallback and use a local one at initdb time, + * as well as when a new connection occurs. + * This is also the case for autovacuum launcher. + * + * IsPostmasterEnvironment - checks for initdb + * IsNormalProcessingMode() - checks for new connections + * IsAutoVacuumLauncherProcess - checks for autovacuum launcher process + */ + if (IS_PGXC_DATANODE && + snapshot_source == SNAPSHOT_UNDEFINED && + IsPostmasterEnvironment && + IsNormalProcessingMode() && + !IsAutoVacuumLauncherProcess()) + { + elog(WARNING, "Do not have a GTM snapshot available"); + } + return false; +} + +/* + * Get snapshot data for Datanode + * This is usually passed down from the Coordinator * * returns whether or not to return immediately with snapshot */ -static bool +static bool GetSnapshotDataDataNode(Snapshot snapshot) { - Assert(IS_PGXC_DATANODE || IsConnFromCoord()); + Assert(IS_PGXC_DATANODE || IsConnFromCoord() || IsAutoVacuumWorkerProcess()); + /* + * Fallback to general case if Datanode is accessed directly by an application + */ + if (IsPGXCNodeXactDatanodeDirect()) + return GetSnapshotDataCoordinator(snapshot); + /* Have a look at cases where Datanode is accessed by cluster internally */ if (IsAutoVacuumWorkerProcess() || GetForceXidFromGTM()) { GTM_Snapshot gtm_snapshot; @@ -2546,39 +2764,11 @@ GetSnapshotDataDataNode(Snapshot snapshot) * maxProcs does not change at runtime, we can simply reuse the previous * xip arrays if any. (This relies on the fact that all callers pass * static SnapshotData structs.) */ - if (snapshot->xip == NULL) - { - ProcArrayStruct *arrayP = procArray; - /* - * First call for this snapshot - */ - snapshot->xip = (TransactionId *) - malloc(arrayP->maxProcs * sizeof(TransactionId)); - if (snapshot->xip == NULL) - ereport(ERROR, - (errcode(ERRCODE_OUT_OF_MEMORY), - errmsg("out of memory"))); - - Assert(snapshot->subxip == NULL); - snapshot->subxip = (TransactionId *) - malloc(arrayP->maxProcs * PGPROC_MAX_CACHED_SUBXIDS * sizeof(TransactionId)); - if (snapshot->subxip == NULL) - ereport(ERROR, - (errcode(ERRCODE_OUT_OF_MEMORY), - errmsg("out of memory"))); - } - else if (snapshot->max_xcnt < gxcnt) - { - snapshot->xip = (TransactionId *) - realloc(snapshot->xip, gxcnt * sizeof(TransactionId)); - if (snapshot->xip == NULL) - ereport(ERROR, - (errcode(ERRCODE_OUT_OF_MEMORY), - errmsg("out of memory"))); - snapshot->max_xcnt = gxcnt; - } - memcpy(snapshot->xip, gxip, gxcnt * sizeof(TransactionId)); + resizeXip(snapshot, Max(arrayP->maxProcs, gxcnt)); + resizeSubxip(snapshot, PGPROC_MAX_CACHED_SUBXIDS); + + memcpy(snapshot->xip, gxip, gxcnt * sizeof(TransactionId)); snapshot->curcid = GetCurrentCommandId(false); if (!TransactionIdIsValid(MyProc->xmin)) @@ -2593,7 +2783,7 @@ GetSnapshotDataDataNode(Snapshot snapshot) RecentXmin = gxmin; /* PGXCTODO - set this until we handle subtransactions. */ - snapshot->subxcnt = 0; + snapshot->subxcnt = 0; /* * This is a new snapshot, so set both refcounts are zero, and mark it @@ -2644,17 +2834,7 @@ GetSnapshotDataDataNode(Snapshot snapshot) continue; if (proc != MyProc) { - if (snapshot->xcnt >= snapshot->max_xcnt) - { - snapshot->max_xcnt += arrayP->numProcs; - - snapshot->xip = (TransactionId *) - realloc(snapshot->xip, snapshot->max_xcnt * sizeof(TransactionId)); - if (snapshot->xip == NULL) - ereport(ERROR, - (errcode(ERRCODE_OUT_OF_MEMORY), - errmsg("out of memory"))); - } + resizeXip(snapshot, snapshot->xcnt + 1); snapshot->xip[snapshot->xcnt++] = xid; elog(DEBUG1, "Adding Analyze for xid %d to snapshot", proc->xid); } @@ -2675,28 +2855,35 @@ GetSnapshotDataDataNode(Snapshot snapshot) } /* - * Get snapshot data for coordinator - * It will later be passed down to data nodes + * Get snapshot data for Coordinator + * It will later be passed down to Datanodes * * returns whether or not to return immediately with snapshot */ -static bool +static bool GetSnapshotDataCoordinator(Snapshot snapshot) { bool canbe_grouped; GTM_Snapshot gtm_snapshot; - - Assert (IS_PGXC_COORDINATOR); + Assert(IS_PGXC_COORDINATOR || IsPGXCNodeXactDatanodeDirect()); canbe_grouped = (!FirstSnapshotSet) || (!IsolationUsesXactSnapshot()); + + /* Log some information about snapshot obtention */ + if (IsAutoVacuumWorkerProcess()) + elog(DEBUG1, "Getting snapshot for autovacuum. Current XID = %d", GetCurrentTransactionId()); + else + elog(DEBUG1, "Getting snapshot. Current XID = %d", GetCurrentTransactionId()); + gtm_snapshot = GetSnapshotGTM(GetCurrentTransactionId(), canbe_grouped); - if (!gtm_snapshot) + if (!gtm_snapshot) ereport(ERROR, (errcode(ERRCODE_CONNECTION_FAILURE), - errmsg("GTM error, could not obtain snapshot"))); - else + errmsg("GTM error, could not obtain snapshot XID = %d", + GetCurrentTransactionId()))); + else { snapshot->xmin = gtm_snapshot->sn_xmin; snapshot->xmax = gtm_snapshot->sn_xmax; @@ -2716,47 +2903,14 @@ GetSnapshotDataCoordinator(Snapshot snapshot) * xip arrays if any. (This relies on the fact that all callers pass * static SnapshotData structs.) */ - if (snapshot->xip == NULL) - { - ProcArrayStruct *arrayP = procArray; - /* - * First call for this snapshot - */ - snapshot->xip = (TransactionId *) - malloc(Max(arrayP->maxProcs, gtm_snapshot->sn_xcnt) * sizeof(TransactionId)); - if (snapshot->xip == NULL) - ereport(ERROR, - (errcode(ERRCODE_OUT_OF_MEMORY), - errmsg("out of memory"))); - snapshot->max_xcnt = Max(arrayP->maxProcs, gtm_snapshot->sn_xcnt); - /* - * FIXME - * - * We really don't support subtransaction in PGXC right now, but - * when we would, we should fix the allocation below - */ - Assert(snapshot->subxip == NULL); - snapshot->subxip = (TransactionId *) - malloc(arrayP->maxProcs * PGPROC_MAX_CACHED_SUBXIDS * sizeof(TransactionId)); - - if (snapshot->subxip == NULL) - ereport(ERROR, - (errcode(ERRCODE_OUT_OF_MEMORY), - errmsg("out of memory"))); - } - else if (snapshot->max_xcnt < gtm_snapshot->sn_xcnt) { - snapshot->xip = (TransactionId *) - realloc(snapshot->xip, gtm_snapshot->sn_xcnt * sizeof(TransactionId)); - if (snapshot->xip == NULL) - ereport(ERROR, - (errcode(ERRCODE_OUT_OF_MEMORY), - errmsg("out of memory"))); - snapshot->max_xcnt = gtm_snapshot->sn_xcnt; + ProcArrayStruct *arrayP = procArray; + resizeXip(snapshot, Max(arrayP->maxProcs, gtm_snapshot->sn_xcnt)); + resizeSubxip(snapshot, PGPROC_MAX_CACHED_SUBXIDS); } - memcpy(snapshot->xip, gtm_snapshot->sn_xip, gtm_snapshot->sn_xcnt * sizeof(TransactionId)); + memcpy(snapshot->xip, gtm_snapshot->sn_xip, gtm_snapshot->sn_xcnt * sizeof(TransactionId)); snapshot->curcid = GetCurrentCommandId(false); if (!TransactionIdIsValid(MyProc->xmin)) @@ -2771,7 +2925,7 @@ GetSnapshotDataCoordinator(Snapshot snapshot) RecentXmin = snapshot->xmin; /* PGXCTODO - set this until we handle subtransactions. */ - snapshot->subxcnt = 0; + snapshot->subxcnt = 0; /* * This is a new snapshot, so set both refcounts are zero, and mark it * as not copied in persistent memory. @@ -2784,6 +2938,80 @@ GetSnapshotDataCoordinator(Snapshot snapshot) return false; } +/* + * Assumes xip is NULL when max_xcnt == 0 + */ +static bool +resizeXip(Snapshot snapshot, int newsize) +{ +#define xipResizeUnit (64) + newsize = ((newsize + xipResizeUnit - 1)/xipResizeUnit)*xipResizeUnit; + + if (snapshot->max_xcnt == 0) + { + snapshot->xip = malloc(newsize * sizeof(TransactionId)); + if (snapshot->xip == NULL) + { + ereport(ERROR, + (errcode(ERRCODE_OUT_OF_MEMORY), + errmsg("out of memory"))); + return false; + } + snapshot->max_xcnt = newsize; + snapshot->xcnt = 0; + return true; + } + else if (snapshot->max_xcnt >= newsize) + return true; + else + { + snapshot->xip = realloc(snapshot->xip, newsize * sizeof(TransactionId)); + if (snapshot->xip == NULL) + { + ereport(ERROR, + (errcode(ERRCODE_OUT_OF_MEMORY), + errmsg("out of memory"))); + return false; + } + snapshot->max_xcnt = newsize; + return true; + } + return false; +} + +/* + * Because XC does not support subtransaction so far, this function allocates + * subxip array with the fixes size of TOTAL_MAX_CACHED_SUBXIDS. This is + * controlled by resizeXip() above. + * If subxip member is not NULL, it assumes subxip array has TOTAL_MAX_CACHED_SUBXIDS + * size, regardless what size is specified. + * This part needs improvement when XC supports subtransaction. + */ +static bool +resizeSubxip(Snapshot snapshot, int newsize) +{ + if (snapshot->subxip) + return true; + snapshot->subxip = (TransactionId *) + malloc(TOTAL_MAX_CACHED_SUBXIDS * sizeof(TransactionId)); + if (snapshot->subxip == NULL) + { + ereport(ERROR, + (errcode(ERRCODE_OUT_OF_MEMORY), + errmsg("out of memory"))); + return false; + } + return true; +} + +/* Cleanup the snapshot */ +static void +cleanSnapshot(Snapshot snapshot) +{ + snapshot->xcnt = 0; + snapshot->subxcnt = 0; + snapshot->xmin = snapshot->xmax = snapshot->recent_global_xmin = InvalidTransactionId; +} #endif /* PGXC */ /* ---------------------------------------------- @@ -2857,18 +3085,11 @@ RecordKnownAssignedTransactionIds(TransactionId xid) { Assert(standbyState >= STANDBY_INITIALIZED); Assert(TransactionIdIsValid(xid)); + Assert(TransactionIdIsValid(latestObservedXid)); elog(trace_recovery(DEBUG4), "record known xact %u latestObservedXid %u", xid, latestObservedXid); - /* - * If the KnownAssignedXids machinery isn't up yet, do nothing. - */ - if (standbyState <= STANDBY_INITIALIZED) - return; - - Assert(TransactionIdIsValid(latestObservedXid)); - /* * When a newly observed xid arrives, it is frequently the case that it is * *not* the next xid in sequence. When this occurs, we must treat the @@ -2879,22 +3100,34 @@ RecordKnownAssignedTransactionIds(TransactionId xid) TransactionId next_expected_xid; /* - * Extend clog and subtrans like we do in GetNewTransactionId() during - * normal operation using individual extend steps. Typical case - * requires almost no activity. + * Extend subtrans like we do in GetNewTransactionId() during normal + * operation using individual extend steps. Note that we do not need + * to extend clog since its extensions are WAL logged. + * + * This part has to be done regardless of standbyState since we + * immediately start assigning subtransactions to their toplevel + * transactions. */ next_expected_xid = latestObservedXid; - TransactionIdAdvance(next_expected_xid); - while (TransactionIdPrecedesOrEquals(next_expected_xid, xid)) + while (TransactionIdPrecedes(next_expected_xid, xid)) { - ExtendCLOG(next_expected_xid); + TransactionIdAdvance(next_expected_xid); ExtendSUBTRANS(next_expected_xid); + } + Assert(next_expected_xid == xid); - TransactionIdAdvance(next_expected_xid); + /* + * If the KnownAssignedXids machinery isn't up yet, there's nothing + * more to do since we don't track assigned xids yet. + */ + if (standbyState <= STANDBY_INITIALIZED) + { + latestObservedXid = xid; + return; } /* - * Add the new xids onto the KnownAssignedXids array. + * Add (latestObservedXid, xid] onto the KnownAssignedXids array. */ next_expected_xid = latestObservedXid; TransactionIdAdvance(next_expected_xid); @@ -3125,6 +3358,25 @@ static void KnownAssignedXidsAdd(TransactionId from_xid, TransactionId to_xid, bool exclusive_lock) { +#ifdef PGXC + /* + * Postgres-XC Version 1.0.x supports log shipping replication but not hot standby + * because hot standby needs to provide consistent database views for all the + * datanode, which is not available yet. + * + * On the other hand, in the slave, current KnownAssignedXids ignores latter half + * of XLOG_XACT_ASSIGNMENT wal record and registers all the possible XIDs found + * at the first half of the wal record. Some of them can be missing and such missing + * Xids remain in the buffer, causing overflow and the slave stops. + * + * It will need various change in the code, while the hot standby does not work correctly. + * + * For short term solution for Version 1.0.x, it was determined to disable whole hot + * hot staydby. + * + * Hot standby correction will be done in next major release. + */ +#else /* use volatile pointer to prevent code rearrangement */ volatile ProcArrayStruct *pArray = procArray; TransactionId next_xid; @@ -3229,6 +3481,7 @@ KnownAssignedXidsAdd(TransactionId from_xid, TransactionId to_xid, pArray->headKnownAssignedXids = head; SpinLockRelease(&pArray->known_assigned_xids_lck); } +#endif } /* @@ -3398,6 +3651,25 @@ KnownAssignedXidsRemoveTree(TransactionId xid, int nsubxids, static void KnownAssignedXidsRemovePreceding(TransactionId removeXid) { +#ifdef PGXC + /* + * Postgres-XC Version 1.0.x supports log shipping replication but not hot standby + * because hot standby needs to provide consistent database views for all the + * datanode, which is not available yet. + * + * On the other hand, in the slave, current KnownAssignedXids ignores latter half + * of XLOG_XACT_ASSIGNMENT wal record and registers all the possible XIDs found + * at the first half of the wal record. Some of them can be missing and such missing + * Xids remain in the buffer, causing overflow and the slave stops. + * + * It will need various change in the code, while the hot standby does not work correctly. + * + * For short term solution for Version 1.0.x, it was determined to disable whole hot + * hot staydby. + * + * Hot standby correction will be done in next major release. + */ +#else /* use volatile pointer to prevent code rearrangement */ volatile ProcArrayStruct *pArray = procArray; int count = 0; @@ -3463,6 +3735,7 @@ KnownAssignedXidsRemovePreceding(TransactionId removeXid) /* Opportunistically compress the array */ KnownAssignedXidsCompress(false); +#endif } /* @@ -3492,6 +3765,26 @@ static int KnownAssignedXidsGetAndSetXmin(TransactionId *xarray, TransactionId *xmin, TransactionId xmax) { +#ifdef PGXC + /* + * Postgres-XC Version 1.0.x supports log shipping replication but not hot standby + * because hot standby needs to provide consistent database views for all the + * datanode, which is not available yet. + * + * On the other hand, in the slave, current KnownAssignedXids ignores latter half + * of XLOG_XACT_ASSIGNMENT wal record and registers all the possible XIDs found + * at the first half of the wal record. Some of them can be missing and such missing + * Xids remain in the buffer, causing overflow and the slave stops. + * + * It will need various change in the code, while the hot standby does not work correctly. + * + * For short term solution for Version 1.0.x, it was determined to disable whole hot + * hot staydby. + * + * Hot standby correction will be done in next major release. + */ + return 0; +#else /* use volatile pointer to prevent code rearrangement */ volatile ProcArrayStruct *pArray = procArray; int count = 0; @@ -3542,6 +3835,7 @@ KnownAssignedXidsGetAndSetXmin(TransactionId *xarray, TransactionId *xmin, } return count; +#endif } /* @@ -3551,6 +3845,26 @@ KnownAssignedXidsGetAndSetXmin(TransactionId *xarray, TransactionId *xmin, static TransactionId KnownAssignedXidsGetOldestXmin(void) { +#ifdef PGXC + /* + * Postgres-XC Version 1.0.x supports log shipping replication but not hot standby + * because hot standby needs to provide consistent database views for all the + * datanode, which is not available yet. + * + * On the other hand, in the slave, current KnownAssignedXids ignores latter half + * of XLOG_XACT_ASSIGNMENT wal record and registers all the possible XIDs found + * at the first half of the wal record. Some of them can be missing and such missing + * Xids remain in the buffer, causing overflow and the slave stops. + * + * It will need various change in the code, while the hot standby does not work correctly. + * + * For short term solution for Version 1.0.x, it was determined to disable whole hot + * hot staydby. + * + * Hot standby correction will be done in next major release. + */ + return InvalidTransactionId; +#else /* use volatile pointer to prevent code rearrangement */ volatile ProcArrayStruct *pArray = procArray; int head, @@ -3573,6 +3887,7 @@ KnownAssignedXidsGetOldestXmin(void) } return InvalidTransactionId; +#endif } /* @@ -3619,3 +3934,22 @@ KnownAssignedXidsDisplay(int trace_level) pfree(buf.data); } + +/* + * KnownAssignedXidsReset + * Resets KnownAssignedXids to be empty + */ +static void +KnownAssignedXidsReset(void) +{ + /* use volatile pointer to prevent code rearrangement */ + volatile ProcArrayStruct *pArray = procArray; + + LWLockAcquire(ProcArrayLock, LW_EXCLUSIVE); + + pArray->numKnownAssignedXids = 0; + pArray->tailKnownAssignedXids = 0; + pArray->headKnownAssignedXids = 0; + + LWLockRelease(ProcArrayLock); +} diff --git a/src/backend/storage/ipc/procsignal.c b/src/backend/storage/ipc/procsignal.c index 80f69025d8..243ffbc590 100644 --- a/src/backend/storage/ipc/procsignal.c +++ b/src/backend/storage/ipc/procsignal.c @@ -145,6 +145,13 @@ CleanupProcSignalState(int status, Datum arg) slot = &ProcSignalSlots[pss_idx - 1]; Assert(slot == MyProcSignalSlot); + /* + * Clear MyProcSignalSlot, so that a SIGUSR1 received after this point + * won't try to access it after it's no longer ours (and perhaps even + * after we've unmapped the shared memory segment). + */ + MyProcSignalSlot = NULL; + /* sanity check */ if (slot->pss_pid != MyProcPid) { diff --git a/src/backend/storage/ipc/sinval.c b/src/backend/storage/ipc/sinval.c index 9ab16b16ed..ff45c03b47 100644 --- a/src/backend/storage/ipc/sinval.c +++ b/src/backend/storage/ipc/sinval.c @@ -174,11 +174,15 @@ HandleCatchupInterrupt(void) /* * We may be called while ImmediateInterruptOK is true; turn it off - * while messing with the catchup state. (We would have to save and - * restore it anyway, because PGSemaphore operations inside - * ProcessCatchupEvent() might reset it.) + * while messing with the catchup state. This prevents problems if + * SIGINT or similar arrives while we're working. Just to be real + * sure, bump the interrupt holdoff counter as well. That way, even + * if something inside ProcessCatchupEvent() transiently sets + * ImmediateInterruptOK (eg while waiting on a lock), we won't get + * interrupted until we're done with the catchup interrupt. */ ImmediateInterruptOK = false; + HOLD_INTERRUPTS(); /* * I'm not sure whether some flavors of Unix might allow another @@ -202,8 +206,10 @@ HandleCatchupInterrupt(void) } /* - * Restore ImmediateInterruptOK, and check for interrupts if needed. + * Restore the holdoff level and ImmediateInterruptOK, and check for + * interrupts if needed. */ + RESUME_INTERRUPTS(); ImmediateInterruptOK = save_ImmediateInterruptOK; if (save_ImmediateInterruptOK) CHECK_FOR_INTERRUPTS(); diff --git a/src/backend/storage/ipc/sinvaladt.c b/src/backend/storage/ipc/sinvaladt.c index 1df20c4732..4f446aab7a 100644 --- a/src/backend/storage/ipc/sinvaladt.c +++ b/src/backend/storage/ipc/sinvaladt.c @@ -323,7 +323,7 @@ SharedInvalBackendInit(bool sendOnly) /* register exit routine to mark my entry inactive at exit */ on_shmem_exit(CleanupInvalidationState, PointerGetDatum(segP)); - elog(DEBUG4, "my backend id is %d", MyBackendId); + elog(DEBUG4, "my backend ID is %d", MyBackendId); } /* diff --git a/src/backend/storage/ipc/standby.c b/src/backend/storage/ipc/standby.c index 75b5ab458a..322f5bb258 100644 --- a/src/backend/storage/ipc/standby.c +++ b/src/backend/storage/ipc/standby.c @@ -81,7 +81,7 @@ InitRecoveryTransactionEnvironment(void) * hold AccessShareLocks so never block while we write or lock new rows. */ vxid.backendId = MyBackendId; - vxid.localTransactionId = GetNextLocalTransactionId(); + vxid.localTransactionId = MyProc->lxid = GetNextLocalTransactionId(); VirtualXactLockTableInsert(vxid); standbyState = STANDBY_INITIALIZED; @@ -97,11 +97,18 @@ InitRecoveryTransactionEnvironment(void) void ShutdownRecoveryTransactionEnvironment(void) { + VirtualTransactionId vxid; + /* Mark all tracked in-progress transactions as finished. */ ExpireAllKnownAssignedTransactionIds(); /* Release all locks the tracked transactions were holding */ StandbyReleaseAllLocks(); + + /* Cleanup our VirtualTransaction */ + vxid.backendId = MyBackendId; + vxid.localTransactionId = MyProc->lxid; + VirtualXactLockTableDelete(vxid); } @@ -459,24 +466,25 @@ SendRecoveryConflictWithBufferPin(ProcSignalReason reason) /* * In Hot Standby perform early deadlock detection. We abort the lock - * wait if are about to sleep while holding the buffer pin that Startup - * process is waiting for. The deadlock occurs because we can only be - * waiting behind an AccessExclusiveLock, which can only clear when a - * transaction completion record is replayed, which can only occur when - * Startup process is not waiting. So if Startup process is waiting we - * never will clear that lock, so if we wait we cause deadlock. If we - * are the Startup process then no need to check for deadlocks. + * wait if we are about to sleep while holding the buffer pin that Startup + * process is waiting for. + * + * Note: this code is pessimistic, because there is no way for it to + * determine whether an actual deadlock condition is present: the lock we + * need to wait for might be unrelated to any held by the Startup process. + * Sooner or later, this mechanism should get ripped out in favor of somehow + * accounting for buffer locks in DeadLockCheck(). However, errors here + * seem to be very low-probability in practice, so for now it's not worth + * the trouble. */ void -CheckRecoveryConflictDeadlock(LWLockId partitionLock) +CheckRecoveryConflictDeadlock(void) { - Assert(!InRecovery); + Assert(!InRecovery); /* do not call in Startup process */ if (!HoldingBufferPinThatDelaysRecovery()) return; - LWLockRelease(partitionLock); - /* * Error message should match ProcessInterrupts() but we avoid calling * that because we aren't handling an interrupt at this point. Note that @@ -508,6 +516,10 @@ CheckRecoveryConflictDeadlock(LWLockId partitionLock) * RelationLockList, so we can keep track of the various entries made by * the Startup process's virtual xid in the shared lock table. * + * We record the lock against the top-level xid, rather than individual + * subtransaction xids. This means AccessExclusiveLocks held by aborted + * subtransactions are not released as early as possible on standbys. + * * List elements use type xl_rel_lock, since the WAL record type exactly * matches the information that we need to keep track of. * @@ -523,7 +535,9 @@ StandbyAcquireAccessExclusiveLock(TransactionId xid, Oid dbOid, Oid relOid) LOCKTAG locktag; /* Already processed? */ - if (TransactionIdDidCommit(xid) || TransactionIdDidAbort(xid)) + if (!TransactionIdIsValid(xid) || + TransactionIdDidCommit(xid) || + TransactionIdDidAbort(xid)) return; elog(trace_recovery(DEBUG4), @@ -605,23 +619,18 @@ StandbyReleaseLockTree(TransactionId xid, int nsubxids, TransactionId *subxids) } /* - * StandbyReleaseLocksMany - * Release standby locks held by XIDs < removeXid - * - * If keepPreparedXacts is true, keep prepared transactions even if - * they're older than removeXid + * Called at end of recovery and when we see a shutdown checkpoint. */ -static void -StandbyReleaseLocksMany(TransactionId removeXid, bool keepPreparedXacts) +void +StandbyReleaseAllLocks(void) { ListCell *cell, *prev, *next; LOCKTAG locktag; - /* - * Release all matching locks. - */ + elog(trace_recovery(DEBUG2), "release all standby locks"); + prev = NULL; for (cell = list_head(RecoveryLockList); cell; cell = next) { @@ -629,10 +638,67 @@ StandbyReleaseLocksMany(TransactionId removeXid, bool keepPreparedXacts) next = lnext(cell); - if (!TransactionIdIsValid(removeXid) || TransactionIdPrecedes(lock->xid, removeXid)) + elog(trace_recovery(DEBUG4), + "releasing recovery lock: xid %u db %u rel %u", + lock->xid, lock->dbOid, lock->relOid); + SET_LOCKTAG_RELATION(locktag, lock->dbOid, lock->relOid); + if (!LockRelease(&locktag, AccessExclusiveLock, true)) + elog(LOG, + "RecoveryLockList contains entry for lock no longer recorded by lock manager: xid %u database %u relation %u", + lock->xid, lock->dbOid, lock->relOid); + RecoveryLockList = list_delete_cell(RecoveryLockList, cell, prev); + pfree(lock); + } +} + +/* + * StandbyReleaseOldLocks + * Release standby locks held by top-level XIDs that aren't running, + * as long as they're not prepared transactions. + */ +void +StandbyReleaseOldLocks(int nxids, TransactionId *xids) +{ + ListCell *cell, + *prev, + *next; + LOCKTAG locktag; + + prev = NULL; + for (cell = list_head(RecoveryLockList); cell; cell = next) + { + xl_standby_lock *lock = (xl_standby_lock *) lfirst(cell); + bool remove = false; + + next = lnext(cell); + + Assert(TransactionIdIsValid(lock->xid)); + + if (StandbyTransactionIdIsPrepared(lock->xid)) + remove = false; + else + { + int i; + bool found = false; + + for (i = 0; i < nxids; i++) + { + if (lock->xid == xids[i]) + { + found = true; + break; + } + } + + /* + * If its not a running transaction, remove it. + */ + if (!found) + remove = true; + } + + if (remove) { - if (keepPreparedXacts && StandbyTransactionIdIsPrepared(lock->xid)) - continue; elog(trace_recovery(DEBUG4), "releasing recovery lock: xid %u db %u rel %u", lock->xid, lock->dbOid, lock->relOid); @@ -649,27 +715,6 @@ StandbyReleaseLocksMany(TransactionId removeXid, bool keepPreparedXacts) } } -/* - * Called at end of recovery and when we see a shutdown checkpoint. - */ -void -StandbyReleaseAllLocks(void) -{ - elog(trace_recovery(DEBUG2), "release all standby locks"); - StandbyReleaseLocksMany(InvalidTransactionId, false); -} - -/* - * StandbyReleaseOldLocks - * Release standby locks held by XIDs < removeXid, as long - * as they're not prepared transactions. - */ -void -StandbyReleaseOldLocks(TransactionId removeXid) -{ - StandbyReleaseLocksMany(removeXid, true); -} - /* * -------------------------------------------------------------------- * Recovery handling for Rmgr RM_STANDBY_ID @@ -811,9 +856,16 @@ standby_desc(StringInfo buf, uint8 xl_info, char *rec) * Later, when we apply the running xact data we must be careful to ignore * transactions already committed, since those commits raced ahead when * making WAL entries. + * + * The loose timing also means that locks may be recorded that have a + * zero xid, since xids are removed from procs before locks are removed. + * So we must prune the lock list down to ensure we hold locks only for + * currently running xids, performed by StandbyReleaseOldLocks(). + * Zero xids should no longer be possible, but we may be replaying WAL + * from a time when they were possible. */ void -LogStandbySnapshot(TransactionId *oldestActiveXid, TransactionId *nextXid) +LogStandbySnapshot(void) { RunningTransactions running; xl_standby_lock *locks; @@ -823,16 +875,11 @@ LogStandbySnapshot(TransactionId *oldestActiveXid, TransactionId *nextXid) /* * Get details of any AccessExclusiveLocks being held at the moment. - * - * XXX GetRunningTransactionLocks() currently holds a lock on all - * partitions though it is possible to further optimise the locking. By - * reference counting locks and storing the value on the ProcArray entry - * for each backend we can easily tell if any locks need recording without - * trying to acquire the partition locks and scanning the lock table. */ locks = GetRunningTransactionLocks(&nlocks); if (nlocks > 0) LogAccessExclusiveLocks(nlocks, locks); + pfree(locks); /* * Log details of all in-progress transactions. This should be the last @@ -842,9 +889,6 @@ LogStandbySnapshot(TransactionId *oldestActiveXid, TransactionId *nextXid) LogCurrentRunningXacts(running); /* GetRunningTransactionData() acquired XidGenLock, we must release it */ LWLockRelease(XidGenLock); - - *oldestActiveXid = running->oldestRunningXid; - *nextXid = running->nextXid; } /* diff --git a/src/backend/storage/large_object/inv_api.c b/src/backend/storage/large_object/inv_api.c index e0441f5bf1..1e7c501bc8 100644 --- a/src/backend/storage/large_object/inv_api.c +++ b/src/backend/storage/large_object/inv_api.c @@ -243,39 +243,47 @@ LargeObjectDesc * inv_open(Oid lobjId, int flags, MemoryContext mcxt) { LargeObjectDesc *retval; - - retval = (LargeObjectDesc *) MemoryContextAlloc(mcxt, - sizeof(LargeObjectDesc)); - - retval->id = lobjId; - retval->subid = GetCurrentSubTransactionId(); - retval->offset = 0; + Snapshot snapshot = NULL; + int descflags = 0; if (flags & INV_WRITE) { - retval->snapshot = SnapshotNow; - retval->flags = IFS_WRLOCK | IFS_RDLOCK; + snapshot = SnapshotNow; + descflags = IFS_WRLOCK | IFS_RDLOCK; } else if (flags & INV_READ) { - /* - * We must register the snapshot in TopTransaction's resowner, because - * it must stay alive until the LO is closed rather than until the - * current portal shuts down. - */ - retval->snapshot = RegisterSnapshotOnOwner(GetActiveSnapshot(), - TopTransactionResourceOwner); - retval->flags = IFS_RDLOCK; + snapshot = GetActiveSnapshot(); + descflags = IFS_RDLOCK; } else elog(ERROR, "invalid flags: %d", flags); /* Can't use LargeObjectExists here because it always uses SnapshotNow */ - if (!myLargeObjectExists(lobjId, retval->snapshot)) + if (!myLargeObjectExists(lobjId, snapshot)) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("large object %u does not exist", lobjId))); + /* + * We must register the snapshot in TopTransaction's resowner, because + * it must stay alive until the LO is closed rather than until the + * current portal shuts down. Do this after checking that the LO exists, + * to avoid leaking the snapshot if an error is thrown. + */ + if (snapshot != SnapshotNow) + snapshot = RegisterSnapshotOnOwner(snapshot, + TopTransactionResourceOwner); + + /* All set, create a descriptor */ + retval = (LargeObjectDesc *) MemoryContextAlloc(mcxt, + sizeof(LargeObjectDesc)); + retval->id = lobjId; + retval->subid = GetCurrentSubTransactionId(); + retval->offset = 0; + retval->snapshot = snapshot; + retval->flags = descflags; + return retval; } diff --git a/src/backend/storage/lmgr/README b/src/backend/storage/lmgr/README index 87fd312e31..81ad489a5a 100644 --- a/src/backend/storage/lmgr/README +++ b/src/backend/storage/lmgr/README @@ -501,8 +501,8 @@ The caller can then send a cancellation signal. This implements the principle that autovacuum has a low locking priority (eg it must not block DDL on the table). -User Locks ----------- +User Locks (Advisory Locks) +--------------------------- User locks are handled totally on the application side as long term cooperative locks which may extend beyond the normal transaction boundaries. @@ -516,12 +516,12 @@ level by someone. User locks and normal locks are completely orthogonal and they don't interfere with each other. -There are two types of user locks: session level and transaction level. -Session level user locks are not released at transaction end. They must -be released explicitly by the application --- but they are released -automatically when a backend terminates. On the other hand, transaction -level user locks are released automatically at the end of the transaction -as like as other normal locks. +User locks can be acquired either at session level or transaction level. +A session-level lock request is not automatically released at transaction +end, but must be explicitly released by the application. (However, any +remaining locks are always released at session end.) Transaction-level +user lock requests behave the same as normal lock requests, in that they +are released at transaction end and do not need explicit unlocking. Locking during Hot Standby -------------------------- diff --git a/src/backend/storage/lmgr/README-SSI b/src/backend/storage/lmgr/README-SSI index c685beef4a..a9dc01f237 100644 --- a/src/backend/storage/lmgr/README-SSI +++ b/src/backend/storage/lmgr/README-SSI @@ -3,11 +3,11 @@ src/backend/storage/lmgr/README-SSI Serializable Snapshot Isolation (SSI) and Predicate Locking =========================================================== -This is currently sitting in the lmgr directory because about 90% of -the code is an implementation of predicate locking, which is required -for SSI, rather than being directly related to SSI itself. When -another use for predicate locking justifies the effort to tease these -two things apart, this README file should probably be split. +This code is in the lmgr directory because about 90% of it is an +implementation of predicate locking, which is required for SSI, +rather than being directly related to SSI itself. When another use +for predicate locking justifies the effort to tease these two things +apart, this README file should probably be split. Credits @@ -51,13 +51,13 @@ if a transaction can be shown to always do the right thing when it is run alone (before or after any other transaction), it will always do the right thing in any mix of concurrent serializable transactions. Where conflicts with other transactions would result in an -inconsistent state within the database, or an inconsistent view of +inconsistent state within the database or an inconsistent view of the data, a serializable transaction will block or roll back to prevent the anomaly. The SQL standard provides a specific SQLSTATE for errors generated when a transaction rolls back for this reason, so that transactions can be retried automatically. -Before version 9.1 PostgreSQL did not support a full serializable +Before version 9.1, PostgreSQL did not support a full serializable isolation level. A request for serializable transaction isolation actually provided snapshot isolation. This has well known anomalies which can allow data corruption or inconsistent views of the data @@ -77,7 +77,7 @@ Serializable Isolation Implementation Strategies Techniques for implementing full serializable isolation have been published and in use in many database products for decades. The -primary technique which has been used is Strict 2 Phase Locking +primary technique which has been used is Strict Two-Phase Locking (S2PL), which operates by blocking writes against data which has been read by concurrent transactions and blocking any access (read or write) against data which has been written by concurrent @@ -112,54 +112,93 @@ visualize the difference between the serializable implementations described above, is to consider that among transactions executing at the serializable transaction isolation level, the results are required to be consistent with some serial (one-at-a-time) execution -of the transactions[1]. How is that order determined in each? +of the transactions [1]. How is that order determined in each? -S2PL locks rows used by the transaction in a way which blocks -conflicting access, so that at the moment of a successful commit it -is certain that no conflicting access has occurred. Some transactions -may have blocked, essentially being partially serialized with the -committing transaction, to allow this. Some transactions may have -been rolled back, due to cycles in the blocking. But with S2PL, -transactions can always be viewed as having occurred serially, in the -order of successful commit. +In S2PL, each transaction locks any data it accesses. It holds the +locks until committing, preventing other transactions from making +conflicting accesses to the same data in the interim. Some +transactions may have to be rolled back to prevent deadlock. But +successful transactions can always be viewed as having occurred +sequentially, in the order they committed. With snapshot isolation, reads never block writes, nor vice versa, so -there is much less actual serialization. The order in which -transactions appear to have executed is determined by something more -subtle than in S2PL: read/write dependencies. If a transaction -attempts to read data which is not visible to it because the -transaction which wrote it (or will later write it) is concurrent -(one of them was running when the other acquired its snapshot), then -the reading transaction appears to have executed first, regardless of -the actual sequence of transaction starts or commits (since it sees a -database state prior to that in which the other transaction leaves -it). If one transaction has both rw-dependencies in (meaning that a -concurrent transaction attempts to read data it writes) and out -(meaning it attempts to read data a concurrent transaction writes), -and a couple other conditions are met, there can appear to be a cycle -in execution order of the transactions. This is when the anomalies -occur. - -SSI works by watching for the conditions mentioned above, and rolling -back a transaction when needed to prevent any anomaly. The apparent -order of execution will always be consistent with any actual -serialization (i.e., a transaction which run by itself can always be -considered to have run after any transactions committed before it -started and before any transacton which starts after it commits); but -among concurrent transactions it will appear that the transaction on -the read side of a rw-dependency executed before the transaction on -the write side. +more concurrency is possible. The order in which transactions appear +to have executed is determined by something more subtle than in S2PL: +read/write dependencies. If a transaction reads data, it appears to +execute after the transaction that wrote the data it is reading. +Similarly, if it updates data, it appears to execute after the +transaction that wrote the previous version. These dependencies, which +we call "wr-dependencies" and "ww-dependencies", are consistent with +the commit order, because the first transaction must have committed +before the second starts. However, there can also be dependencies +between two *concurrent* transactions, i.e. where one was running when +the other acquired its snapshot. These "rw-conflicts" occur when one +transaction attempts to read data which is not visible to it because +the transaction which wrote it (or will later write it) is +concurrent. The reading transaction appears to have executed first, +regardless of the actual sequence of transaction starts or commits, +because it sees a database state prior to that in which the other +transaction leaves it. + +Anomalies occur when a cycle is created in the graph of dependencies: +when a dependency or series of dependencies causes transaction A to +appear to have executed before transaction B, but another series of +dependencies causes B to appear before A. If that's the case, then +the results can't be consistent with any serial execution of the +transactions. + + +SSI Algorithm +------------- + +As of 9.1, serializable transactions in PostgreSQL are implemented using +Serializable Snapshot Isolation (SSI), based on the work of Cahill +et al. Fundamentally, this allows snapshot isolation to run as it +previously did, while monitoring for conditions which could create a +serialization anomaly. + +SSI is based on the observation [2] that each snapshot isolation +anomaly corresponds to a cycle that contains a "dangerous structure" +of two adjacent rw-conflict edges: + + Tin ------> Tpivot ------> Tout + rw rw + +SSI works by watching for this dangerous structure, and rolling +back a transaction when needed to prevent any anomaly. This means it +only needs to track rw-conflicts between concurrent transactions, not +wr- and ww-dependencies. It also means there is a risk of false +positives, because not every dangerous structure is embedded in an +actual cycle. The number of false positives is low in practice, so +this represents an acceptable tradeoff for keeping the detection +overhead low. + +The PostgreSQL implementation uses two additional optimizations: + +* Tout must commit before any other transaction in the cycle + (see proof of Theorem 2.1 of [2]). We only roll back a transaction + if Tout commits before Tpivot and Tin. + +* if Tin is read-only, there can only be an anomaly if Tout committed + before Tin takes its snapshot. This optimization is an original + one. Proof: + + - Because there is a cycle, there must be some transaction T0 that + precedes Tin in the cycle. (T0 might be the same as Tout.) + + - The edge between T0 and Tin can't be a rw-conflict or ww-dependency, + because Tin was read-only, so it must be a wr-dependency. + Those can only occur if T0 committed before Tin took its snapshot, + else Tin would have ignored T0's output. + + - Because Tout must commit before any other transaction in the + cycle, it must commit before T0 commits -- and thus before Tin + starts. PostgreSQL Implementation ------------------------- -The implementation of serializable transactions for PostgreSQL is -accomplished through Serializable Snapshot Isolation (SSI), based on -the work of Cahill, et al. Fundamentally, this allows snapshot -isolation to run as it has, while monitoring for conditions which -could create a serialization anomaly. - * Since this technique is based on Snapshot Isolation (SI), those areas in PostgreSQL which don't use SI can't be brought under SSI. This includes system tables, temporary tables, sequences, hint bit @@ -180,7 +219,7 @@ lock or to use SELECT FOR SHARE or SELECT FOR UPDATE. * Those who want to continue to use snapshot isolation without the additional protections of SSI (and the associated costs of enforcing those protections), can use the REPEATABLE READ transaction -isolation level. This level will retain its legacy behavior, which +isolation level. This level retains its legacy behavior, which is identical to the old SERIALIZABLE implementation and fully consistent with the standard's requirements for the REPEATABLE READ transaction isolation level. @@ -200,9 +239,9 @@ serialization anomalies will fail with SQLSTATE 40001, which has a standard meaning of "serialization failure". * This SSI implementation makes an effort to choose the -transaction to be cancelled such that an immediate retry of the +transaction to be canceled such that an immediate retry of the transaction will not fail due to conflicts with exactly the same -transactions. Pursuant to this goal, no transaction is cancelled +transactions. Pursuant to this goal, no transaction is canceled until one of the other transactions in the set of conflicts which could generate an anomaly has successfully committed. This is conceptually similar to how write conflicts are handled. To fully @@ -222,8 +261,8 @@ full serializable transactions under either strategy. Practical implementations of predicate locking generally involve acquiring locks against data as it is accessed, using multiple granularities (tuple, page, table, etc.) with escalation as needed to keep the lock -count to a number which can be tracked within RAM structures, and -this was used in PostgreSQL. Coarse granularities can cause some +count to a number which can be tracked within RAM structures. This +approach was used in PostgreSQL. Coarse granularities can cause some false positive indications of conflict. The number of false positives can be influenced by plan choice. @@ -236,11 +275,11 @@ in PostgreSQL, but tailored to the needs of SIREAD predicate locking, are used. These refer to physical objects actually accessed in the course of executing the query, to model the predicates through inference. Anyone interested in this subject should review the -Hellerstein, Stonebraker and Hamilton paper[2], along with the +Hellerstein, Stonebraker and Hamilton paper [3], along with the locking papers referenced from that and the Cahill papers. Because the SIREAD locks don't block, traditional locking techniques -were be modified. Intent locking (locking higher level objects +have to be modified. Intent locking (locking higher level objects before locking lower level objects) doesn't work with non-blocking "locks" (which are, in some respects, more like flags than locks). @@ -248,10 +287,10 @@ A configurable amount of shared memory is reserved at postmaster start-up to track predicate locks. This size cannot be changed without a restart. - * To prevent resource exhaustion, multiple fine-grained locks may +To prevent resource exhaustion, multiple fine-grained locks may be promoted to a single coarser-grained lock as needed. - * An attempt to acquire an SIREAD lock on a tuple when the same +An attempt to acquire an SIREAD lock on a tuple when the same transaction already holds an SIREAD lock on the page or the relation will be ignored. Likewise, an attempt to lock a page when the relation is locked will be ignored, and the acquisition of a coarser @@ -270,8 +309,17 @@ Predicate locks will be acquired for the heap based on the following: will be locked, whether or not it meets selection criteria; except that there is no need to acquire an SIREAD lock on a tuple when the transaction already holds a write lock on any tuple representing the -row, since a rw-dependency would also create a ww-dependency which -has more aggressive enforcement and will thus prevent any anomaly. +row, since a rw-conflict would also create a ww-dependency which +has more aggressive enforcement and thus will prevent any anomaly. + + * Modifying a heap tuple creates a rw-conflict with any transaction +that holds a SIREAD lock on that tuple, or on the page or relation +that contains it. + + * Inserting a new tuple creates a rw-conflict with any transaction +holding a SIREAD lock on the entire relation. It doesn't conflict with +page-level locks, because page-level locks are only used to aggregate +tuple locks. Unlike index page locks, they don't lock "gaps" on the page. Index AM implementations @@ -296,7 +344,7 @@ need not generate a conflict, although an update which "moves" a row into the scan must generate a conflict. While correctness allows false positives, they should be minimized for performance reasons. -Several optimizations are possible: +Several optimizations are possible, though not all are implemented yet: * An index scan which is just finding the right position for an index insertion or deletion need not acquire a predicate lock. @@ -317,10 +365,13 @@ x = 1 AND x = 2), then no predicate lock is needed. Other index AM implementation considerations: - * If a btree search discovers that no root page has yet been -created, a predicate lock on the index relation is required; -otherwise btree searches must get to the leaf level to determine -which tuples match, so predicate locks go there. + * For an index AM that doesn't have support for predicate locking, +we just acquire a predicate lock on the whole index for any search. + + * B-tree index searches acquire predicate locks only on the +index *leaf* pages needed to lock the appropriate index range. If, +however, a search discovers that no root page has yet been created, a +predicate lock on the index relation is required. * GiST searches can determine that there are no matches at any level of the index, so there must be a predicate lock at each index @@ -346,17 +397,12 @@ to be added from scratch. 2. The existing in-memory lock structures were not suitable for tracking SIREAD locks. - * The database products used for the prototype -implementations for the papers used update-in-place with a rollback -log for their MVCC implementations, while PostgreSQL leaves the old -version of a row in place and adds a new tuple to represent the row -at a new location. * In PostgreSQL, tuple level locks are not held in RAM for any length of time; lock information is written to the tuples involved in the transactions. * In PostgreSQL, existing lock structures have pointers to -memory which is related to a connection. SIREAD locks need to persist -past the end of the originating transaction and even the connection +memory which is related to a session. SIREAD locks need to persist +past the end of the originating transaction and even the session which ran it. * PostgreSQL needs to be able to tolerate a large number of transactions executing while one long-running transaction stays open @@ -371,7 +417,8 @@ isolation level distinct from snapshot isolation. in the papers. 5. PostgreSQL doesn't assign a transaction number to a database -transaction until and unless necessary. +transaction until and unless necessary (normally, when the transaction +attempts to modify data). 6. PostgreSQL has pluggable data types with user-definable operators, as well as pluggable index types, not all of which are @@ -413,55 +460,60 @@ versions of the row, based on the following proof that any additional serialization failures we would get from that would be false positives: - o If transaction T1 reads a row (thus acquiring a predicate -lock on it) and a second transaction T2 updates that row, must a -third transaction T3 which updates the new version of the row have a -rw-conflict in from T1 to prevent anomalies? In other words, does it -matter whether this edge T1 -> T3 is there? + o If transaction T1 reads a row version (thus acquiring a +predicate lock on it) and a second transaction T2 updates that row +version (thus creating a rw-conflict graph edge from T1 to T2), must a +third transaction T3 which re-updates the new version of the row also +have a rw-conflict in from T1 to prevent anomalies? In other words, +does it matter whether we recognize the edge T1 -> T3? o If T1 has a conflict in, it certainly doesn't. Adding the edge T1 -> T3 would create a dangerous structure, but we already had -one from the edge T1 -> T2, so we would have aborted something -anyway. +one from the edge T1 -> T2, so we would have aborted something anyway. +(T2 has already committed, else T3 could not have updated its output; +but we would have aborted either T1 or T1's predecessor(s). Hence +no cycle involving T1 and T3 can survive.) o Now let's consider the case where T1 doesn't have a -conflict in. If that's the case, for this edge T1 -> T3 to make a -difference, T3 must have a rw-conflict out that induces a cycle in -the dependency graph, i.e. a conflict out to some transaction -preceding T1 in the serial order. (A conflict out to T1 would work -too, but that would mean T1 has a conflict in and we would have -rolled back.) +rw-conflict in. If that's the case, for this edge T1 -> T3 to make a +difference, T3 must have a rw-conflict out that induces a cycle in the +dependency graph, i.e. a conflict out to some transaction preceding T1 +in the graph. (A conflict out to T1 itself would be problematic too, +but that would mean T1 has a conflict in, the case we already +eliminated.) o So now we're trying to figure out if there can be an rw-conflict edge T3 -> T0, where T0 is some transaction that precedes -T1. For T0 to precede T1, there has to be has to be some edge, or -sequence of edges, from T0 to T1. At least the last edge has to be a -wr-dependency or ww-dependency rather than a rw-conflict, because T1 -doesn't have a rw-conflict in. And that gives us enough information -about the order of transactions to see that T3 can't have a -rw-dependency to T0: +T1. For T0 to precede T1, there has to be some edge, or sequence of +edges, from T0 to T1. At least the last edge has to be a wr-dependency +or ww-dependency rather than a rw-conflict, because T1 doesn't have a +rw-conflict in. And that gives us enough information about the order +of transactions to see that T3 can't have a rw-conflict to T0: - T0 committed before T1 started (the wr/ww-dependency implies this) - T1 started before T2 committed (the T1->T2 rw-conflict implies this) - - T2 committed before T3 started (otherwise, T3 would be aborted + - T2 committed before T3 started (otherwise, T3 would get aborted because of an update conflict) o That means T0 committed before T3 started, and therefore there can't be a rw-conflict from T3 to T0. - o In both cases, we didn't need the T1 -> T3 edge. + o So in all cases, we don't need the T1 -> T3 edge to +recognize cycles. Therefore it's not necessary for T1's SIREAD lock +on the original tuple version to cover later versions as well. - * Predicate locking in PostgreSQL will start at the tuple level -when possible, with automatic conversion of multiple fine-grained -locks to coarser granularity as need to avoid resource exhaustion. -The amount of memory used for these structures will be configurable, -to balance RAM usage against SIREAD lock granularity. + * Predicate locking in PostgreSQL starts at the tuple level +when possible. Multiple fine-grained locks are promoted to a single +coarser-granularity lock as needed to avoid resource exhaustion. The +amount of memory used for these structures is configurable, to balance +RAM usage against SIREAD lock granularity. - * A process-local copy of locks held by a process and the coarser -covering locks with counts, are kept to support granularity promotion -decisions with low CPU and locking overhead. + * Each backend keeps a process-local table of the locks it holds. +To support granularity promotion decisions with low CPU and locking +overhead, this table also includes the coarser covering locks and the +number of finer-granularity locks they cover. - * Conflicts will be identified by looking for predicate locks -when tuples are written and looking at the MVCC information when + * Conflicts are identified by looking for predicate locks +when tuples are written, and by looking at the MVCC information when tuples are read. There is no matching between two RAM-based locks. * Because write locks are stored in the heap tuples rather than a @@ -479,10 +531,12 @@ NULL to indicate no conflict and a self-reference to indicate multiple conflicts or conflicts with committed transactions, we use a list of rw-conflicts. With the more complete information, false positives are reduced and we have sufficient data for more aggressive -clean-up and other optimizations. +clean-up and other optimizations: + o We can avoid ever rolling back a transaction until and unless there is a pivot where a transaction on the conflict *out* side of the pivot committed before either of the other transactions. + o We can avoid ever rolling back a transaction when the transaction on the conflict *in* side of the pivot is explicitly or implicitly READ ONLY unless the transaction on the conflict *out* @@ -490,19 +544,20 @@ side of the pivot committed before the READ ONLY transaction acquired its snapshot. (An implicit READ ONLY transaction is one which committed without writing, even though it was not explicitly declared to be READ ONLY.) + o We can more aggressively clean up conflicts, predicate locks, and SSI transaction information. - * Allow a READ ONLY transaction to "opt out" of SSI if there are + * We allow a READ ONLY transaction to "opt out" of SSI if there are no READ WRITE transactions which could cause the READ ONLY transaction to ever become part of a "dangerous structure" of overlapping transaction dependencies. - * Allow the user to request that a READ ONLY transaction wait + * We allow the user to request that a READ ONLY transaction wait until the conditions are right for it to start in the "opt out" state described above. We add a DEFERRABLE state to transactions, which is specified and maintained in a way similar to READ ONLY. It is -ignored for transactions which are not SERIALIZABLE and READ ONLY. +ignored for transactions that are not SERIALIZABLE and READ ONLY. * When a transaction must be rolled back, we pick among the active transactions such that an immediate retry will not fail again @@ -512,7 +567,7 @@ on conflicts with the same transactions. information about older committed transactions to put an upper bound on RAM used. Beyond that limit, information spills to disk. Performance can degrade in a pessimal situation, but it should be -tolerable, and transactions won't need to be cancelled or blocked +tolerable, and transactions won't need to be canceled or blocked from starting. @@ -538,12 +593,6 @@ address it? replication solutions, like Postgres-R, Slony, pgpool, HS/SR, etc. This is related to the "WAL file replay" issue. - * Weak-memory-ordering machines. Make sure that shared memory -access which involves visibility across multiple transactions uses -locks as needed to avoid problems. On the other hand, ensure that we -really need volatile where we're using it. -http://archives.postgresql.org/pgsql-committers/2008-06/msg00228.php - * UNIQUE btree search for equality on all columns. Since a search of a UNIQUE index using equality tests on all columns will lock the heap tuple if an entry is found, it appears that there is no need to @@ -551,15 +600,6 @@ get a predicate lock on the index in that case. A predicate lock is still needed for such a search if a matching index entry which points to a visible tuple is not found. - * Planner index probes. To avoid problems with data skew at the -ends of an index which have historically caused bad plans, the -planner now probes the end of an index to see what the maximum or -minimum value is when a query appears to be requesting a range of -data outside what statistics shows is present. These planner checks -don't require predicate locking, but there's currently no easy way to -avoid it. What can we do to avoid predicate locking for such planner -activity? - * Minimize touching of shared memory. Should lists in shared memory push entries which have just been returned to the front of the available list, so they will be popped back off soon and some memory @@ -567,19 +607,23 @@ might never be touched, or should we keep adding returned items to the end of the available list? -Footnotes ---------- +References +---------- [1] http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt Search for serial execution to find the relevant section. -[2] http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf -Joseph M. Hellerstein, Michael Stonebraker and James Hamilton. 2007. +[2] A. Fekete et al. Making Snapshot Isolation Serializable. In ACM +Transactions on Database Systems 30:2, Jun. 2005. +http://dx.doi.org/10.1145/1071610.1071615 + +[3] Joseph M. Hellerstein, Michael Stonebraker and James Hamilton. 2007. Architecture of a Database System. Foundations and Trends(R) in Databases Vol. 1, No. 2 (2007) 141-259. +http://db.cs.berkeley.edu/papers/fntdb07-architecture.pdf Of particular interest: * 6.1 A Note on ACID * 6.2 A Brief Review of Serializability * 6.3 Locking and Latching * 6.3.1 Transaction Isolation Levels - * 6.5.3 Next-Key Locking: Physical Surrogates for Logical + * 6.5.3 Next-Key Locking: Physical Surrogates for Logical Properties diff --git a/src/backend/storage/lmgr/deadlock.c b/src/backend/storage/lmgr/deadlock.c index 980042b6af..aa6d315226 100644 --- a/src/backend/storage/lmgr/deadlock.c +++ b/src/backend/storage/lmgr/deadlock.c @@ -525,25 +525,6 @@ FindLockCycleRecurse(PGPROC *checkProc, if ((proclock->holdMask & LOCKBIT_ON(lm)) && (conflictMask & LOCKBIT_ON(lm))) { - /* - * Look for a blocking autovacuum. There can be more than - * one in the deadlock cycle, in which case we just pick a - * random one. We stash the autovacuum worker's PGPROC so - * that the caller can send a cancel signal to it, if - * appropriate. - * - * Note we read vacuumFlags without any locking. This is - * OK only for checking the PROC_IS_AUTOVACUUM flag, - * because that flag is set at process start and never - * reset; there is logic elsewhere to avoid cancelling an - * autovacuum that is working for preventing Xid - * wraparound problems (which needs to read a different - * vacuumFlag bit), but we don't do that here to avoid - * grabbing ProcArrayLock. - */ - if (proc->vacuumFlags & PROC_IS_AUTOVACUUM) - blocking_autovacuum_proc = proc; - /* This proc hard-blocks checkProc */ if (FindLockCycleRecurse(proc, depth + 1, softEdges, nSoftEdges)) @@ -557,7 +538,34 @@ FindLockCycleRecurse(PGPROC *checkProc, return true; } - /* If no deadlock, we're done looking at this proclock */ + + /* + * No deadlock here, but see if this proc is an autovacuum + * that is directly hard-blocking our own proc. If so, + * report it so that the caller can send a cancel signal + * to it, if appropriate. If there's more than one such + * proc, it's indeterminate which one will be reported. + * + * We don't touch autovacuums that are indirectly blocking + * us; it's up to the direct blockee to take action. This + * rule simplifies understanding the behavior and ensures + * that an autovacuum won't be canceled with less than + * deadlock_timeout grace period. + * + * Note we read vacuumFlags without any locking. This is + * OK only for checking the PROC_IS_AUTOVACUUM flag, + * because that flag is set at process start and never + * reset. There is logic elsewhere to avoid canceling an + * autovacuum that is working to prevent XID wraparound + * problems (which needs to read a different vacuumFlag + * bit), but we don't do that here to avoid grabbing + * ProcArrayLock. + */ + if (checkProc == MyProc && + proc->vacuumFlags & PROC_IS_AUTOVACUUM) + blocking_autovacuum_proc = proc; + + /* We're done looking at this proclock */ break; } } @@ -939,7 +947,7 @@ DeadLockReport(void) ereport(ERROR, (errcode(ERRCODE_T_R_DEADLOCK_DETECTED), errmsg("deadlock detected"), - errdetail("%s", clientbuf.data), + errdetail_internal("%s", clientbuf.data), errdetail_log("%s", logbuf.data), errhint("See server log for query details."))); } diff --git a/src/backend/storage/lmgr/lmgr.c b/src/backend/storage/lmgr/lmgr.c index 859b3852db..c91f6ac10e 100644 --- a/src/backend/storage/lmgr/lmgr.c +++ b/src/backend/storage/lmgr/lmgr.c @@ -231,6 +231,24 @@ UnlockRelation(Relation relation, LOCKMODE lockmode) LockRelease(&tag, lockmode, false); } +/* + * LockHasWaitersRelation + * + * This is a functiion to check if someone else is waiting on a + * lock, we are currently holding. + */ +bool +LockHasWaitersRelation(Relation relation, LOCKMODE lockmode) +{ + LOCKTAG tag; + + SET_LOCKTAG_RELATION(tag, + relation->rd_lockInfo.lockRelId.dbId, + relation->rd_lockInfo.lockRelId.relId); + + return LockHasWaiters(&tag, lockmode, false); +} + /* * LockRelationIdForSession * @@ -534,6 +552,24 @@ VirtualXactLockTableInsert(VirtualTransactionId vxid) (void) LockAcquire(&tag, ExclusiveLock, false, false); } +/* + * VirtualXactLockTableDelete + * + * Release a Virtual Transaction lock. Only called by Startup process + * at end of Hot Standby. + */ +void +VirtualXactLockTableDelete(VirtualTransactionId vxid) +{ + LOCKTAG tag; + + Assert(VirtualTransactionIdIsValid(vxid)); + + SET_LOCKTAG_VIRTUALTRANSACTION(tag, vxid); + + (void) LockRelease(&tag, ExclusiveLock, false); +} + /* * VirtualXactLockTableWait * diff --git a/src/backend/storage/lmgr/lock.c b/src/backend/storage/lmgr/lock.c index 88ee185099..d7e3da012e 100644 --- a/src/backend/storage/lmgr/lock.c +++ b/src/backend/storage/lmgr/lock.c @@ -260,7 +260,7 @@ static uint32 proclock_hash(const void *key, Size keysize); static void RemoveLocalLock(LOCALLOCK *locallock); static void GrantLockLocal(LOCALLOCK *locallock, ResourceOwner owner); static void WaitOnLock(LOCALLOCK *locallock, ResourceOwner owner); -static void ReleaseLockForOwner(LOCALLOCK *locallock, ResourceOwner owner); +static void ReleaseLockIfHeld(LOCALLOCK *locallock, bool sessionLock); static bool UnGrantLock(LOCK *lock, LOCKMODE lockmode, PROCLOCK *proclock, LockMethod lockMethodTable); static void CleanUpLock(LOCK *lock, PROCLOCK *proclock, @@ -440,6 +440,98 @@ ProcLockHashCode(const PROCLOCKTAG *proclocktag, uint32 hashcode) return lockhash; } +/* + * LockHasWaiters -- look up 'locktag' and check if releasing this + * lock would wake up other processes waiting for it. + */ +bool +LockHasWaiters(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock) +{ + LOCKMETHODID lockmethodid = locktag->locktag_lockmethodid; + LockMethod lockMethodTable; + LOCALLOCKTAG localtag; + LOCALLOCK *locallock; + LOCK *lock; + PROCLOCK *proclock; + LWLockId partitionLock; + bool hasWaiters = false; + + if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) + elog(ERROR, "unrecognized lock method: %d", lockmethodid); + lockMethodTable = LockMethods[lockmethodid]; + if (lockmode <= 0 || lockmode > lockMethodTable->numLockModes) + elog(ERROR, "unrecognized lock mode: %d", lockmode); + +#ifdef LOCK_DEBUG + if (LOCK_DEBUG_ENABLED(locktag)) + elog(LOG, "LockHasWaiters: lock [%u,%u] %s", + locktag->locktag_field1, locktag->locktag_field2, + lockMethodTable->lockModeNames[lockmode]); +#endif + + /* + * Find the LOCALLOCK entry for this lock and lockmode + */ + MemSet(&localtag, 0, sizeof(localtag)); /* must clear padding */ + localtag.lock = *locktag; + localtag.mode = lockmode; + + locallock = (LOCALLOCK *) hash_search(LockMethodLocalHash, + (void *) &localtag, + HASH_FIND, NULL); + + /* + * let the caller print its own error message, too. Do not ereport(ERROR). + */ + if (!locallock || locallock->nLocks <= 0) + { + elog(WARNING, "you don't own a lock of type %s", + lockMethodTable->lockModeNames[lockmode]); + return false; + } + + /* + * Check the shared lock table. + */ + partitionLock = LockHashPartitionLock(locallock->hashcode); + + LWLockAcquire(partitionLock, LW_SHARED); + + /* + * We don't need to re-find the lock or proclock, since we kept their + * addresses in the locallock table, and they couldn't have been removed + * while we were holding a lock on them. + */ + lock = locallock->lock; + LOCK_PRINT("LockHasWaiters: found", lock, lockmode); + proclock = locallock->proclock; + PROCLOCK_PRINT("LockHasWaiters: found", proclock); + + /* + * Double-check that we are actually holding a lock of the type we want to + * release. + */ + if (!(proclock->holdMask & LOCKBIT_ON(lockmode))) + { + PROCLOCK_PRINT("LockHasWaiters: WRONGTYPE", proclock); + LWLockRelease(partitionLock); + elog(WARNING, "you don't own a lock of type %s", + lockMethodTable->lockModeNames[lockmode]); + RemoveLocalLock(locallock); + return false; + } + + /* + * Do the checking. + */ + if ((lockMethodTable->conflictTab[lockmode] & lock->waitMask) != 0) + hasWaiters = true; + + LWLockRelease(partitionLock); + + return hasWaiters; +} + /* * LockAcquire -- Check for lock conflicts, sleep if conflict found, @@ -567,11 +659,11 @@ LockAcquireExtendedXC(const LOCKTAG *locktag, lockMethodTable->lockModeNames[lockmode]); #endif - /* Session locks are never transactional, else check table */ - if (!sessionLock && lockMethodTable->transactional) - owner = CurrentResourceOwner; - else + /* Identify owner for lock */ + if (sessionLock) owner = NULL; + else + owner = CurrentResourceOwner; /* * Find or create a LOCALLOCK entry for this lock and lockmode @@ -879,13 +971,6 @@ LockAcquireExtendedXC(const LOCKTAG *locktag, return LOCKACQUIRE_NOT_AVAIL; } - /* - * In Hot Standby perform early deadlock detection in normal backends. - * If deadlock found we release partition lock but do not return. - */ - if (RecoveryInProgress() && !InRecovery) - CheckRecoveryConflictDeadlock(partitionLock); - /* * Set bitmask of locks this process already holds on this object. */ @@ -1448,11 +1533,11 @@ LockRelease(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock) ResourceOwner owner; int i; - /* Session locks are never transactional, else check table */ - if (!sessionLock && lockMethodTable->transactional) - owner = CurrentResourceOwner; - else + /* Identify owner for lock */ + if (sessionLock) owner = NULL; + else + owner = CurrentResourceOwner; for (i = locallock->numLockOwners - 1; i >= 0; i--) { @@ -1533,31 +1618,6 @@ LockRelease(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock) return TRUE; } -/* - * LockReleaseSession -- Release all session locks of the specified lock method - * that are held by the current process. - */ -void -LockReleaseSession(LOCKMETHODID lockmethodid) -{ - HASH_SEQ_STATUS status; - LOCALLOCK *locallock; - - if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) - elog(ERROR, "unrecognized lock method: %d", lockmethodid); - - hash_seq_init(&status, LockMethodLocalHash); - - while ((locallock = (LOCALLOCK *) hash_seq_search(&status)) != NULL) - { - /* Ignore items that are not of the specified lock method */ - if (LOCALLOCK_LOCKMETHOD(*locallock) != lockmethodid) - continue; - - ReleaseLockForOwner(locallock, NULL); - } -} - /* * LockReleaseAll -- Release all locks of the specified lock method that * are held by the current process. @@ -1745,6 +1805,31 @@ LockReleaseAll(LOCKMETHODID lockmethodid, bool allLocks) #endif } +/* + * LockReleaseSession -- Release all session locks of the specified lock method + * that are held by the current process. + */ +void +LockReleaseSession(LOCKMETHODID lockmethodid) +{ + HASH_SEQ_STATUS status; + LOCALLOCK *locallock; + + if (lockmethodid <= 0 || lockmethodid >= lengthof(LockMethods)) + elog(ERROR, "unrecognized lock method: %d", lockmethodid); + + hash_seq_init(&status, LockMethodLocalHash); + + while ((locallock = (LOCALLOCK *) hash_seq_search(&status)) != NULL) + { + /* Ignore items that are not of the specified lock method */ + if (LOCALLOCK_LOCKMETHOD(*locallock) != lockmethodid) + continue; + + ReleaseLockIfHeld(locallock, true); + } +} + /* * LockReleaseCurrentOwner * Release all locks belonging to CurrentResourceOwner @@ -1759,25 +1844,37 @@ LockReleaseCurrentOwner(void) while ((locallock = (LOCALLOCK *) hash_seq_search(&status)) != NULL) { - /* Ignore items that must be nontransactional */ - if (!LockMethods[LOCALLOCK_LOCKMETHOD(*locallock)]->transactional) - continue; - - ReleaseLockForOwner(locallock, CurrentResourceOwner); + ReleaseLockIfHeld(locallock, false); } } /* - * Subroutine to release a lock belonging to the 'owner' if found. - * 'owner' can be NULL to release a session lock. + * ReleaseLockIfHeld + * Release any session-level locks on this lockable object if sessionLock + * is true; else, release any locks held by CurrentResourceOwner. + * + * It is tempting to pass this a ResourceOwner pointer (or NULL for session + * locks), but without refactoring LockRelease() we cannot support releasing + * locks belonging to resource owners other than CurrentResourceOwner. + * If we were to refactor, it'd be a good idea to fix it so we don't have to + * do a hashtable lookup of the locallock, too. However, currently this + * function isn't used heavily enough to justify refactoring for its + * convenience. */ static void -ReleaseLockForOwner(LOCALLOCK *locallock, ResourceOwner owner) +ReleaseLockIfHeld(LOCALLOCK *locallock, bool sessionLock) { - int i; + ResourceOwner owner; LOCALLOCKOWNER *lockOwners; + int i; + + /* Identify owner for lock (must match LockRelease!) */ + if (sessionLock) + owner = NULL; + else + owner = CurrentResourceOwner; - /* Scan to see if there are any locks belonging to the owner */ + /* Scan to see if there are any locks belonging to the target owner */ lockOwners = locallock->lockOwners; for (i = locallock->numLockOwners - 1; i >= 0; i--) { @@ -1804,8 +1901,8 @@ ReleaseLockForOwner(LOCALLOCK *locallock, ResourceOwner owner) locallock->nLocks = 1; if (!LockRelease(&locallock->tag.lock, locallock->tag.mode, - owner == NULL)) - elog(WARNING, "ReleaseLockForOwner: failed??"); + sessionLock)) + elog(WARNING, "ReleaseLockIfHeld: failed??"); } break; } @@ -1835,10 +1932,6 @@ LockReassignCurrentOwner(void) int ic = -1; int ip = -1; - /* Ignore items that must be nontransactional */ - if (!LockMethods[LOCALLOCK_LOCKMETHOD(*locallock)]->transactional) - continue; - /* * Scan to see if there are any locks belonging to current owner or * its parent @@ -1999,13 +2092,13 @@ GetLockConflicts(const LOCKTAG *locktag, LOCKMODE lockmode) * Do the preparatory work for a PREPARE: make 2PC state file records * for all locks currently held. * - * Non-transactional locks are ignored, as are VXID locks. + * Session-level locks are ignored, as are VXID locks. * - * There are some special cases that we error out on: we can't be holding - * any session locks (should be OK since only VACUUM uses those) and we - * can't be holding any locks on temporary objects (since that would mess - * up the current backend if it tries to exit before the prepared xact is - * committed). + * There are some special cases that we error out on: we can't be holding any + * locks at both session and transaction level (since we must either keep or + * give away the PROCLOCK object), and we can't be holding any locks on + * temporary objects (since that would mess up the current backend if it tries + * to exit before the prepared xact is committed). */ void AtPrepare_Locks(void) @@ -2023,12 +2116,10 @@ AtPrepare_Locks(void) { TwoPhaseLockRecord record; LOCALLOCKOWNER *lockOwners = locallock->lockOwners; + bool haveSessionLock; + bool haveXactLock; int i; - /* Ignore nontransactional locks */ - if (!LockMethods[LOCALLOCK_LOCKMETHOD(*locallock)]->transactional) - continue; - /* * Ignore VXID locks. We don't want those to be held by prepared * transactions, since they aren't meaningful after a restart. @@ -2040,14 +2131,38 @@ AtPrepare_Locks(void) if (locallock->nLocks <= 0) continue; - /* Scan to verify there are no session locks */ + /* Scan to see whether we hold it at session or transaction level */ + haveSessionLock = haveXactLock = false; for (i = locallock->numLockOwners - 1; i >= 0; i--) { - /* elog not ereport since this should not happen */ if (lockOwners[i].owner == NULL) - elog(ERROR, "cannot PREPARE when session locks exist"); + haveSessionLock = true; + else + haveXactLock = true; } + /* Ignore it if we have only session lock */ + if (!haveXactLock) + continue; + + /* + * If we have both session- and transaction-level locks, fail. This + * should never happen with regular locks, since we only take those at + * session level in some special operations like VACUUM. It's + * possible to hit this with advisory locks, though. + * + * It would be nice if we could keep the session hold and give away + * the transactional hold to the prepared xact. However, that would + * require two PROCLOCK objects, and we cannot be sure that another + * PROCLOCK will be available when it comes time for PostPrepare_Locks + * to do the deed. So for now, we error out while we can still do so + * safely. + */ + if (haveSessionLock) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot PREPARE while holding both session-level and transaction-level locks on the same object"))); + /* * Create a 2PC record. */ @@ -2102,6 +2217,11 @@ PostPrepare_Locks(TransactionId xid) while ((locallock = (LOCALLOCK *) hash_seq_search(&status)) != NULL) { + LOCALLOCKOWNER *lockOwners = locallock->lockOwners; + bool haveSessionLock; + bool haveXactLock; + int i; + if (locallock->proclock == NULL || locallock->lock == NULL) { /* @@ -2113,15 +2233,29 @@ PostPrepare_Locks(TransactionId xid) continue; } - /* Ignore nontransactional locks */ - if (!LockMethods[LOCALLOCK_LOCKMETHOD(*locallock)]->transactional) - continue; - /* Ignore VXID locks */ if (locallock->tag.lock.locktag_type == LOCKTAG_VIRTUALTRANSACTION) continue; - /* We already checked there are no session locks */ + /* Scan to see whether we hold it at session or transaction level */ + haveSessionLock = haveXactLock = false; + for (i = locallock->numLockOwners - 1; i >= 0; i--) + { + if (lockOwners[i].owner == NULL) + haveSessionLock = true; + else + haveXactLock = true; + } + + /* Ignore it if we have only session lock */ + if (!haveXactLock) + continue; + + /* This can't happen, because we already checked it */ + if (haveSessionLock) + ereport(PANIC, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot PREPARE while holding both session-level and transaction-level locks on the same object"))); /* Mark the proclock to show we need to release this lockmode */ if (locallock->nLocks > 0) @@ -2162,10 +2296,6 @@ PostPrepare_Locks(TransactionId xid) lock = proclock->tag.myLock; - /* Ignore nontransactional locks */ - if (!LockMethods[LOCK_LOCKMETHOD(*lock)]->transactional) - goto next_item; - /* Ignore VXID locks */ if (lock->tag.locktag_type == LOCKTAG_VIRTUALTRANSACTION) goto next_item; @@ -2177,10 +2307,11 @@ PostPrepare_Locks(TransactionId xid) Assert(lock->nGranted <= lock->nRequested); Assert((proclock->holdMask & ~lock->grantMask) == 0); - /* - * Since there were no session locks, we should be releasing all - * locks - */ + /* Ignore it if nothing to release (must be a session lock) */ + if (proclock->releaseMask == 0) + goto next_item; + + /* Else we should be releasing all locks */ if (proclock->releaseMask != proclock->holdMask) elog(PANIC, "we seem to have dropped a bit somewhere"); @@ -2361,18 +2492,26 @@ GetLockStatusData(void) } /* - * Returns a list of currently held AccessExclusiveLocks, for use - * by GetRunningTransactionData(). + * Returns a list of currently held AccessExclusiveLocks, for use by + * LogStandbySnapshot(). The result is a palloc'd array, + * with the number of elements returned into *nlocks. + * + * XXX This currently takes a lock on all partitions of the lock table, + * but it's possible to do better. By reference counting locks and storing + * the value in the ProcArray entry for each backend we could tell if any + * locks need recording without having to acquire the partition locks and + * scan the lock table. Whether that's worth the additional overhead + * is pretty dubious though. */ xl_standby_lock * GetRunningTransactionLocks(int *nlocks) { + xl_standby_lock *accessExclusiveLocks; PROCLOCK *proclock; HASH_SEQ_STATUS seqstat; int i; int index; int els; - xl_standby_lock *accessExclusiveLocks; /* * Acquire lock on the entire shared lock data structure. @@ -2410,8 +2549,18 @@ GetRunningTransactionLocks(int *nlocks) { PGPROC *proc = proclock->tag.myProc; LOCK *lock = proclock->tag.myLock; + TransactionId xid = proc->xid; - accessExclusiveLocks[index].xid = proc->xid; + /* + * Don't record locks for transactions if we know they have already + * issued their WAL record for commit but not yet released lock. + * It is still possible that we see locks held by already complete + * transactions, if they haven't yet zeroed their xids. + */ + if (!TransactionIdIsValid(xid)) + continue; + + accessExclusiveLocks[index].xid = xid; accessExclusiveLocks[index].dbOid = lock->tag.locktag_field1; accessExclusiveLocks[index].relOid = lock->tag.locktag_field2; @@ -2419,6 +2568,8 @@ GetRunningTransactionLocks(int *nlocks) } } + Assert(index <= els); + /* * And release locks. We do this in reverse order for two reasons: (1) * Anyone else who needs more than one of the locks will be trying to lock @@ -2711,7 +2862,7 @@ lock_twophase_recover(TransactionId xid, uint16 info, /* * Re-acquire a lock belonging to a transaction that was prepared, when - * when starting up into hot standby mode. + * starting up into hot standby mode. */ void lock_twophase_standby_recover(TransactionId xid, uint16 info, diff --git a/src/backend/storage/lmgr/predicate.c b/src/backend/storage/lmgr/predicate.c index 9f79f54bf7..b736478703 100644 --- a/src/backend/storage/lmgr/predicate.c +++ b/src/backend/storage/lmgr/predicate.c @@ -148,19 +148,22 @@ * predicate lock maintenance * RegisterSerializableTransaction(Snapshot snapshot) * RegisterPredicateLockingXid(void) - * PredicateLockRelation(Relation relation) - * PredicateLockPage(Relation relation, BlockNumber blkno) - * PredicateLockTuple(Relation relation, HeapTuple tuple) + * PredicateLockRelation(Relation relation, Snapshot snapshot) + * PredicateLockPage(Relation relation, BlockNumber blkno, + * Snapshot snapshot) + * PredicateLockTuple(Relation relation, HeapTuple tuple, + * Snapshot snapshot) * PredicateLockPageSplit(Relation relation, BlockNumber oldblkno, - * BlockNumber newblkno); + * BlockNumber newblkno) * PredicateLockPageCombine(Relation relation, BlockNumber oldblkno, - * BlockNumber newblkno); + * BlockNumber newblkno) * TransferPredicateLocksToHeapRelation(Relation relation) * ReleasePredicateLocks(bool isCommit) * * conflict detection (may also trigger rollback) * CheckForSerializableConflictOut(bool visible, Relation relation, - * HeapTupleData *tup, Buffer buffer) + * HeapTupleData *tup, Buffer buffer, + * Snapshot snapshot) * CheckForSerializableConflictIn(Relation relation, HeapTupleData *tup, * Buffer buffer) * CheckTableForSerializableConflictIn(Relation relation) @@ -241,9 +244,18 @@ #define SxactIsOnFinishedList(sxact) (!SHMQueueIsDetached(&((sxact)->finishedLink))) -#define SxactIsPrepared(sxact) (((sxact)->flags & SXACT_FLAG_PREPARED) != 0) +/* + * Note that a sxact is marked "prepared" once it has passed + * PreCommit_CheckForSerializationFailure, even if it isn't using + * 2PC. This is the point at which it can no longer be aborted. + * + * The PREPARED flag remains set after commit, so SxactIsCommitted + * implies SxactIsPrepared. + */ #define SxactIsCommitted(sxact) (((sxact)->flags & SXACT_FLAG_COMMITTED) != 0) +#define SxactIsPrepared(sxact) (((sxact)->flags & SXACT_FLAG_PREPARED) != 0) #define SxactIsRolledBack(sxact) (((sxact)->flags & SXACT_FLAG_ROLLED_BACK) != 0) +#define SxactIsDoomed(sxact) (((sxact)->flags & SXACT_FLAG_DOOMED) != 0) #define SxactIsReadOnly(sxact) (((sxact)->flags & SXACT_FLAG_READ_ONLY) != 0) #define SxactHasSummaryConflictIn(sxact) (((sxact)->flags & SXACT_FLAG_SUMMARY_CONFLICT_IN) != 0) #define SxactHasSummaryConflictOut(sxact) (((sxact)->flags & SXACT_FLAG_SUMMARY_CONFLICT_OUT) != 0) @@ -256,27 +268,6 @@ #define SxactIsDeferrableWaiting(sxact) (((sxact)->flags & SXACT_FLAG_DEFERRABLE_WAITING) != 0) #define SxactIsROSafe(sxact) (((sxact)->flags & SXACT_FLAG_RO_SAFE) != 0) #define SxactIsROUnsafe(sxact) (((sxact)->flags & SXACT_FLAG_RO_UNSAFE) != 0) -#define SxactIsMarkedForDeath(sxact) (((sxact)->flags & SXACT_FLAG_MARKED_FOR_DEATH) != 0) - -/* - * Is this relation exempt from predicate locking? We don't do predicate - * locking on system or temporary relations. - */ -#define SkipPredicateLocksForRelation(relation) \ - (((relation)->rd_id < FirstBootstrapObjectId) \ - || RelationUsesLocalBuffers(relation)) - -/* - * When a public interface method is called for serializing a relation within - * the current transaction, this is the test to see if we should do a quick - * return. - */ -#define SkipSerialization(relation) \ - ((!IsolationIsSerializable()) \ - || ((MySerializableXact == InvalidSerializableXact)) \ - || ReleasePredicateLocksIfROSafe() \ - || SkipPredicateLocksForRelation(relation)) - /* * Compute the hash code associated with a PREDICATELOCKTARGETTAG. @@ -314,7 +305,13 @@ static SlruCtlData OldSerXidSlruCtlData; #define OLDSERXID_PAGESIZE BLCKSZ #define OLDSERXID_ENTRYSIZE sizeof(SerCommitSeqNo) #define OLDSERXID_ENTRIESPERPAGE (OLDSERXID_PAGESIZE / OLDSERXID_ENTRYSIZE) -#define OLDSERXID_MAX_PAGE (SLRU_PAGES_PER_SEGMENT * 0x10000 - 1) + +/* + * Set maximum pages based on the lesser of the number needed to track all + * transactions and the maximum that SLRU supports. + */ +#define OLDSERXID_MAX_PAGE Min(SLRU_PAGES_PER_SEGMENT * 0x10000 - 1, \ + (MaxTransactionId) / OLDSERXID_ENTRIESPERPAGE) #define OldSerXidNextPage(page) (((page) >= OLDSERXID_MAX_PAGE) ? 0 : (page) + 1) @@ -380,7 +377,7 @@ static SHM_QUEUE *FinishedSerializableTransactions; * this entry, you can ensure that there's enough scratch space available for * inserting one entry in the hash table. This is an otherwise-invalid tag. */ -static const PREDICATELOCKTARGETTAG ScratchTargetTag = {0, 0, 0, 0, 0}; +static const PREDICATELOCKTARGETTAG ScratchTargetTag = {0, 0, 0, 0}; static uint32 ScratchTargetTagHash; static int ScratchPartitionLock; @@ -437,14 +434,13 @@ static void CreatePredicateLock(const PREDICATELOCKTARGETTAG *targettag, uint32 targettaghash, SERIALIZABLEXACT *sxact); static void DeleteLockTarget(PREDICATELOCKTARGET *target, uint32 targettaghash); -static bool TransferPredicateLocksToNewTarget(const PREDICATELOCKTARGETTAG oldtargettag, - const PREDICATELOCKTARGETTAG newtargettag, +static bool TransferPredicateLocksToNewTarget(PREDICATELOCKTARGETTAG oldtargettag, + PREDICATELOCKTARGETTAG newtargettag, bool removeOld); static void PredicateLockAcquire(const PREDICATELOCKTARGETTAG *targettag); -static void DropAllPredicateLocksFromTable(const Relation relation, +static void DropAllPredicateLocksFromTable(Relation relation, bool transfer); static void SetNewSxactGlobalXmin(void); -static bool ReleasePredicateLocksIfROSafe(void); static void ClearOldPredicateLocks(void); static void ReleaseOneSerializableXact(SERIALIZABLEXACT *sxact, bool partial, bool summarize); @@ -454,6 +450,90 @@ static void FlagRWConflict(SERIALIZABLEXACT *reader, SERIALIZABLEXACT *writer); static void OnConflict_CheckForSerializationFailure(const SERIALIZABLEXACT *reader, SERIALIZABLEXACT *writer); + +/*------------------------------------------------------------------------*/ + +/* + * Does this relation participate in predicate locking? Temporary and system + * relations are exempt. + */ +static inline bool +PredicateLockingNeededForRelation(Relation relation) +{ + return !(relation->rd_id < FirstBootstrapObjectId || + RelationUsesLocalBuffers(relation)); +} + +/* + * When a public interface method is called for a read, this is the test to + * see if we should do a quick return. + * + * Note: this function has side-effects! If this transaction has been flagged + * as RO-safe since the last call, we release all predicate locks and reset + * MySerializableXact. That makes subsequent calls to return quickly. + * + * This is marked as 'inline' to make to eliminate the function call overhead + * in the common case that serialization is not needed. + */ +static inline bool +SerializationNeededForRead(Relation relation, Snapshot snapshot) +{ + /* Nothing to do if this is not a serializable transaction */ + if (MySerializableXact == InvalidSerializableXact) + return false; + + /* + * Don't acquire locks or conflict when scanning with a special snapshot. + * This excludes things like CLUSTER and REINDEX. They use the wholesale + * functions TransferPredicateLocksToHeapRelation() and + * CheckTableForSerializableConflictIn() to participate serialization, but + * the scans involved don't need serialization. + */ + if (!IsMVCCSnapshot(snapshot)) + return false; + + /* + * Check if we have just become "RO-safe". If we have, immediately release + * all locks as they're not needed anymore. This also resets + * MySerializableXact, so that subsequent calls to this function can exit + * quickly. + * + * A transaction is flagged as RO_SAFE if all concurrent R/W transactions + * commit without having conflicts out to an earlier snapshot, thus + * ensuring that no conflicts are possible for this transaction. + */ + if (SxactIsROSafe(MySerializableXact)) + { + ReleasePredicateLocks(false); + return false; + } + + /* Check if the relation doesn't participate in predicate locking */ + if (!PredicateLockingNeededForRelation(relation)) + return false; + + return true; /* no excuse to skip predicate locking */ +} + +/* + * Like SerializationNeededForRead(), but called on writes. + * The logic is the same, but there is no snapshot and we can't be RO-safe. + */ +static inline bool +SerializationNeededForWrite(Relation relation) +{ + /* Nothing to do if this is not a serializable transaction */ + if (MySerializableXact == InvalidSerializableXact) + return false; + + /* Check if the relation doesn't participate in predicate locking */ + if (!PredicateLockingNeededForRelation(relation)) + return false; + + return true; /* no excuse to skip predicate locking */ +} + + /*------------------------------------------------------------------------*/ /* @@ -542,8 +622,8 @@ RWConflictExists(const SERIALIZABLEXACT *reader, const SERIALIZABLEXACT *writer) Assert(reader != writer); /* Check the ends of the purported conflict first. */ - if (SxactIsRolledBack(reader) - || SxactIsRolledBack(writer) + if (SxactIsDoomed(reader) + || SxactIsDoomed(writer) || SHMQueueEmpty(&reader->outConflicts) || SHMQueueEmpty(&writer->inConflicts)) return false; @@ -582,7 +662,7 @@ SetRWConflict(SERIALIZABLEXACT *reader, SERIALIZABLEXACT *writer) if (!conflict) ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), - errmsg("not enough elements in RWConflictPool to record a rw-conflict"), + errmsg("not enough elements in RWConflictPool to record a read/write conflict"), errhint("You might need to run fewer transactions at a time or increase max_connections."))); SHMQueueDelete(&conflict->outLink); @@ -610,7 +690,7 @@ SetPossibleUnsafeConflict(SERIALIZABLEXACT *roXact, if (!conflict) ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), - errmsg("not enough elements in RWConflictPool to record a potential rw-conflict"), + errmsg("not enough elements in RWConflictPool to record a potential read/write conflict"), errhint("You might need to run fewer transactions at a time or increase max_connections."))); SHMQueueDelete(&conflict->outLink); @@ -687,7 +767,7 @@ OldSerXidPagePrecedesLogically(int p, int q) diff = p - q; if (diff >= ((OLDSERXID_MAX_PAGE + 1) / 2)) diff -= OLDSERXID_MAX_PAGE + 1; - else if (diff < -((OLDSERXID_MAX_PAGE + 1) / 2)) + else if (diff < -((int) (OLDSERXID_MAX_PAGE + 1) / 2)) diff += OLDSERXID_MAX_PAGE + 1; return diff < 0; } @@ -816,7 +896,7 @@ OldSerXidAdd(TransactionId xid, SerCommitSeqNo minConflictCommitSeqNo) oldSerXidControl->warningIssued = true; ereport(WARNING, (errmsg("memory for serializable conflict tracking is nearly exhausted"), - errhint("There may be an idle transaction or a forgotten prepared transaction causing this."))); + errhint("There might be an idle transaction or a forgotten prepared transaction causing this."))); } } @@ -1110,6 +1190,7 @@ InitPredicateLocks(void) } PredXact->OldCommittedSxact = CreatePredXact(); SetInvalidVirtualTransactionId(PredXact->OldCommittedSxact->vxid); + PredXact->OldCommittedSxact->prepareSeqNo = 0; PredXact->OldCommittedSxact->commitSeqNo = 0; PredXact->OldCommittedSxact->SeqNo.lastCommitBeforeSnapshot = 0; SHMQueueInit(&PredXact->OldCommittedSxact->outConflicts); @@ -1432,8 +1513,7 @@ GetSafeSnapshot(Snapshot origSnapshot) * them marked us as conflicted. */ MySerializableXact->flags |= SXACT_FLAG_DEFERRABLE_WAITING; - while (!(SHMQueueEmpty((SHM_QUEUE *) - &MySerializableXact->possibleUnsafeConflicts) || + while (!(SHMQueueEmpty(&MySerializableXact->possibleUnsafeConflicts) || SxactIsROUnsafe(MySerializableXact))) { LWLockRelease(SerializableXactHashLock); @@ -1478,6 +1558,19 @@ RegisterSerializableTransaction(Snapshot snapshot) { Assert(IsolationIsSerializable()); + /* + * Can't use serializable mode while recovery is still active, as it is, + * for example, on a hot standby. We could get here despite the check + * in check_XactIsoLevel() if default_transaction_isolation is set to + * serializable, so phrase the hint accordingly. + */ + if (RecoveryInProgress()) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot use serializable mode in a hot standby"), + errdetail("\"default_transaction_isolation\" is set to \"serializable\"."), + errhint("You can use \"SET default_transaction_isolation = 'repeatable read'\" to change the default."))); + /* * A special optimization is available for SERIALIZABLE READ ONLY * DEFERRABLE transactions -- we can wait for a suitable snapshot and @@ -1571,6 +1664,7 @@ RegisterSerializableTransactionInt(Snapshot snapshot) /* Initialize the structure. */ sxact->vxid = vxid; sxact->SeqNo.lastCommitBeforeSnapshot = PredXact->LastSxactCommitSeqNo; + sxact->prepareSeqNo = InvalidSerCommitSeqNo; sxact->commitSeqNo = InvalidSerCommitSeqNo; SHMQueueInit(&(sxact->outConflicts)); SHMQueueInit(&(sxact->inConflicts)); @@ -1596,8 +1690,9 @@ RegisterSerializableTransactionInt(Snapshot snapshot) othersxact != NULL; othersxact = NextPredXact(othersxact)) { - if (!SxactIsOnFinishedList(othersxact) && - !SxactIsReadOnly(othersxact)) + if (!SxactIsCommitted(othersxact) + && !SxactIsDoomed(othersxact) + && !SxactIsReadOnly(othersxact)) { SetPossibleUnsafeConflict(sxact, othersxact); } @@ -1634,7 +1729,7 @@ RegisterSerializableTransactionInt(Snapshot snapshot) * Also store it for easy reference in MySerializableXact. */ void -RegisterPredicateLockingXid(const TransactionId xid) +RegisterPredicateLockingXid(TransactionId xid) { SERIALIZABLEXIDTAG sxidtag; SERIALIZABLEXID *sxid; @@ -1683,7 +1778,7 @@ RegisterPredicateLockingXid(const TransactionId xid) * One use is to support proper behavior during GiST index vacuum. */ bool -PageIsPredicateLocked(const Relation relation, const BlockNumber blkno) +PageIsPredicateLocked(Relation relation, BlockNumber blkno) { PREDICATELOCKTARGETTAG targettag; uint32 targettaghash; @@ -2245,11 +2340,11 @@ PredicateLockAcquire(const PREDICATELOCKTARGETTAG *targettag) * Clear any finer-grained predicate locks this session has on the relation. */ void -PredicateLockRelation(const Relation relation) +PredicateLockRelation(Relation relation, Snapshot snapshot) { PREDICATELOCKTARGETTAG tag; - if (SkipSerialization(relation)) + if (!SerializationNeededForRead(relation, snapshot)) return; SET_PREDICATELOCKTARGETTAG_RELATION(tag, @@ -2268,11 +2363,11 @@ PredicateLockRelation(const Relation relation) * Clear any finer-grained predicate locks this session has on the relation. */ void -PredicateLockPage(const Relation relation, const BlockNumber blkno) +PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot) { PREDICATELOCKTARGETTAG tag; - if (SkipSerialization(relation)) + if (!SerializationNeededForRead(relation, snapshot)) return; SET_PREDICATELOCKTARGETTAG_PAGE(tag, @@ -2290,13 +2385,13 @@ PredicateLockPage(const Relation relation, const BlockNumber blkno) * Skip if this is a temporary table. */ void -PredicateLockTuple(const Relation relation, const HeapTuple tuple) +PredicateLockTuple(Relation relation, HeapTuple tuple, Snapshot snapshot) { PREDICATELOCKTARGETTAG tag; ItemPointer tid; TransactionId targetxmin; - if (SkipSerialization(relation)) + if (!SerializationNeededForRead(relation, snapshot)) return; /* @@ -2323,8 +2418,6 @@ PredicateLockTuple(const Relation relation, const HeapTuple tuple) } } } - else - targetxmin = InvalidTransactionId; /* * Do quick-but-not-definitive test for a relation lock first. This will @@ -2343,8 +2436,7 @@ PredicateLockTuple(const Relation relation, const HeapTuple tuple) relation->rd_node.dbNode, relation->rd_id, ItemPointerGetBlockNumber(tid), - ItemPointerGetOffsetNumber(tid), - targetxmin); + ItemPointerGetOffsetNumber(tid)); PredicateLockAcquire(&tag); } @@ -2428,8 +2520,8 @@ DeleteLockTarget(PREDICATELOCKTARGET *target, uint32 targettaghash) * Caller must hold SerializablePredicateLockListLock. */ static bool -TransferPredicateLocksToNewTarget(const PREDICATELOCKTARGETTAG oldtargettag, - const PREDICATELOCKTARGETTAG newtargettag, +TransferPredicateLocksToNewTarget(PREDICATELOCKTARGETTAG oldtargettag, + PREDICATELOCKTARGETTAG newtargettag, bool removeOld) { uint32 oldtargettaghash; @@ -2548,14 +2640,13 @@ TransferPredicateLocksToNewTarget(const PREDICATELOCKTARGETTAG oldtargettag, Assert(found); } - newpredlock = (PREDICATELOCK *) - hash_search_with_hash_value - (PredicateLockHash, - &newpredlocktag, - PredicateLockHashCodeFromTargetHashCode(&newpredlocktag, - newtargettaghash), - HASH_ENTER_NULL, &found); + hash_search_with_hash_value(PredicateLockHash, + &newpredlocktag, + PredicateLockHashCodeFromTargetHashCode(&newpredlocktag, + newtargettaghash), + HASH_ENTER_NULL, + &found); if (!newpredlock) { /* Out of shared memory. Undo what we've done so far. */ @@ -2645,7 +2736,7 @@ TransferPredicateLocksToNewTarget(const PREDICATELOCKTARGETTAG oldtargettag, * transaction which executed DROP TABLE, the false condition will be useful. */ static void -DropAllPredicateLocksFromTable(const Relation relation, bool transfer) +DropAllPredicateLocksFromTable(Relation relation, bool transfer) { HASH_SEQ_STATUS seqstat; PREDICATELOCKTARGET *oldtarget; @@ -2667,7 +2758,7 @@ DropAllPredicateLocksFromTable(const Relation relation, bool transfer) if (!TransactionIdIsValid(PredXact->SxactGlobalXmin)) return; - if (SkipPredicateLocksForRelation(relation)) + if (!PredicateLockingNeededForRelation(relation)) return; dbId = relation->rd_node.dbNode; @@ -2791,12 +2882,12 @@ DropAllPredicateLocksFromTable(const Relation relation, bool transfer) newpredlocktag.myTarget = heaptarget; newpredlocktag.myXact = oldXact; newpredlock = (PREDICATELOCK *) - hash_search_with_hash_value - (PredicateLockHash, - &newpredlocktag, - PredicateLockHashCodeFromTargetHashCode(&newpredlocktag, - heaptargettaghash), - HASH_ENTER, &found); + hash_search_with_hash_value(PredicateLockHash, + &newpredlocktag, + PredicateLockHashCodeFromTargetHashCode(&newpredlocktag, + heaptargettaghash), + HASH_ENTER, + &found); if (!found) { SHMQueueInsertBefore(&(heaptarget->predicateLocks), @@ -2841,7 +2932,7 @@ DropAllPredicateLocksFromTable(const Relation relation, bool transfer) * relation to a single relation lock on the heap. */ void -TransferPredicateLocksToHeapRelation(const Relation relation) +TransferPredicateLocksToHeapRelation(Relation relation) { DropAllPredicateLocksFromTable(relation, true); } @@ -2862,8 +2953,8 @@ TransferPredicateLocksToHeapRelation(const Relation relation) * which hold the locks getting in and noticing. */ void -PredicateLockPageSplit(const Relation relation, const BlockNumber oldblkno, - const BlockNumber newblkno) +PredicateLockPageSplit(Relation relation, BlockNumber oldblkno, + BlockNumber newblkno) { PREDICATELOCKTARGETTAG oldtargettag; PREDICATELOCKTARGETTAG newtargettag; @@ -2882,7 +2973,7 @@ PredicateLockPageSplit(const Relation relation, const BlockNumber oldblkno, if (!TransactionIdIsValid(PredXact->SxactGlobalXmin)) return; - if (SkipPredicateLocksForRelation(relation)) + if (!PredicateLockingNeededForRelation(relation)) return; Assert(oldblkno != newblkno); @@ -2947,8 +3038,8 @@ PredicateLockPageSplit(const Relation relation, const BlockNumber oldblkno, * occurs in the context of another transaction isolation level. */ void -PredicateLockPageCombine(const Relation relation, const BlockNumber oldblkno, - const BlockNumber newblkno) +PredicateLockPageCombine(Relation relation, BlockNumber oldblkno, + BlockNumber newblkno) { /* * Page combines differ from page splits in that we ought to be able to @@ -3019,7 +3110,7 @@ SetNewSxactGlobalXmin(void) * holding locks. */ void -ReleasePredicateLocks(const bool isCommit) +ReleasePredicateLocks(bool isCommit) { bool needToClear; RWConflict conflict, @@ -3045,8 +3136,9 @@ ReleasePredicateLocks(const bool isCommit) } Assert(!isCommit || SxactIsPrepared(MySerializableXact)); - Assert(!SxactIsRolledBack(MySerializableXact)); + Assert(!isCommit || !SxactIsDoomed(MySerializableXact)); Assert(!SxactIsCommitted(MySerializableXact)); + Assert(!SxactIsRolledBack(MySerializableXact)); /* may not be serializable during COMMIT/ROLLBACK PREPARED */ if (MySerializableXact->pid != 0) @@ -3086,7 +3178,27 @@ ReleasePredicateLocks(const bool isCommit) } else { + /* + * The DOOMED flag indicates that we intend to roll back this + * transaction and so it should not cause serialization failures for + * other transactions that conflict with it. Note that this flag might + * already be set, if another backend marked this transaction for + * abort. + * + * The ROLLED_BACK flag further indicates that ReleasePredicateLocks + * has been called, and so the SerializableXact is eligible for + * cleanup. This means it should not be considered when calculating + * SxactGlobalXmin. + */ + MySerializableXact->flags |= SXACT_FLAG_DOOMED; MySerializableXact->flags |= SXACT_FLAG_ROLLED_BACK; + /* + * If the transaction was previously prepared, but is now failing due + * to a ROLLBACK PREPARED or (hopefully very rare) error after the + * prepare, clear the prepared flag. This simplifies conflict + * checking. + */ + MySerializableXact->flags &= ~SXACT_FLAG_PREPARED; } if (!topLevelIsDeclaredReadOnly) @@ -3114,13 +3226,13 @@ ReleasePredicateLocks(const bool isCommit) * opposed to 'outLink' for the r/w xacts. */ possibleUnsafeConflict = (RWConflict) - SHMQueueNext((SHM_QUEUE *) &MySerializableXact->possibleUnsafeConflicts, - (SHM_QUEUE *) &MySerializableXact->possibleUnsafeConflicts, + SHMQueueNext(&MySerializableXact->possibleUnsafeConflicts, + &MySerializableXact->possibleUnsafeConflicts, offsetof(RWConflictData, inLink)); while (possibleUnsafeConflict) { nextConflict = (RWConflict) - SHMQueueNext((SHM_QUEUE *) &MySerializableXact->possibleUnsafeConflicts, + SHMQueueNext(&MySerializableXact->possibleUnsafeConflicts, &possibleUnsafeConflict->inLink, offsetof(RWConflictData, inLink)); @@ -3153,13 +3265,13 @@ ReleasePredicateLocks(const bool isCommit) * previously committed transactions. */ conflict = (RWConflict) - SHMQueueNext((SHM_QUEUE *) &MySerializableXact->outConflicts, - (SHM_QUEUE *) &MySerializableXact->outConflicts, + SHMQueueNext(&MySerializableXact->outConflicts, + &MySerializableXact->outConflicts, offsetof(RWConflictData, outLink)); while (conflict) { nextConflict = (RWConflict) - SHMQueueNext((SHM_QUEUE *) &MySerializableXact->outConflicts, + SHMQueueNext(&MySerializableXact->outConflicts, &conflict->outLink, offsetof(RWConflictData, outLink)); @@ -3168,8 +3280,8 @@ ReleasePredicateLocks(const bool isCommit) && SxactIsCommitted(conflict->sxactIn)) { if ((MySerializableXact->flags & SXACT_FLAG_CONFLICT_OUT) == 0 - || conflict->sxactIn->commitSeqNo < MySerializableXact->SeqNo.earliestOutConflictCommit) - MySerializableXact->SeqNo.earliestOutConflictCommit = conflict->sxactIn->commitSeqNo; + || conflict->sxactIn->prepareSeqNo < MySerializableXact->SeqNo.earliestOutConflictCommit) + MySerializableXact->SeqNo.earliestOutConflictCommit = conflict->sxactIn->prepareSeqNo; MySerializableXact->flags |= SXACT_FLAG_CONFLICT_OUT; } @@ -3186,13 +3298,13 @@ ReleasePredicateLocks(const bool isCommit) * we're rolling back, clear them all. */ conflict = (RWConflict) - SHMQueueNext((SHM_QUEUE *) &MySerializableXact->inConflicts, - (SHM_QUEUE *) &MySerializableXact->inConflicts, + SHMQueueNext(&MySerializableXact->inConflicts, + &MySerializableXact->inConflicts, offsetof(RWConflictData, inLink)); while (conflict) { nextConflict = (RWConflict) - SHMQueueNext((SHM_QUEUE *) &MySerializableXact->inConflicts, + SHMQueueNext(&MySerializableXact->inConflicts, &conflict->inLink, offsetof(RWConflictData, inLink)); @@ -3213,13 +3325,13 @@ ReleasePredicateLocks(const bool isCommit) * up if they are known safe or known unsafe. */ possibleUnsafeConflict = (RWConflict) - SHMQueueNext((SHM_QUEUE *) &MySerializableXact->possibleUnsafeConflicts, - (SHM_QUEUE *) &MySerializableXact->possibleUnsafeConflicts, + SHMQueueNext(&MySerializableXact->possibleUnsafeConflicts, + &MySerializableXact->possibleUnsafeConflicts, offsetof(RWConflictData, outLink)); while (possibleUnsafeConflict) { nextConflict = (RWConflict) - SHMQueueNext((SHM_QUEUE *) &MySerializableXact->possibleUnsafeConflicts, + SHMQueueNext(&MySerializableXact->possibleUnsafeConflicts, &possibleUnsafeConflict->outLink, offsetof(RWConflictData, outLink)); @@ -3290,7 +3402,7 @@ ReleasePredicateLocks(const bool isCommit) /* Add this to the list of transactions to check for later cleanup. */ if (isCommit) SHMQueueInsertBefore(FinishedSerializableTransactions, - (SHM_QUEUE *) &(MySerializableXact->finishedLink)); + &MySerializableXact->finishedLink); if (!isCommit) ReleaseOneSerializableXact(MySerializableXact, false, false); @@ -3311,30 +3423,6 @@ ReleasePredicateLocks(const bool isCommit) } } -/* - * ReleasePredicateLocksIfROSafe - * Check if the current transaction is read only and operating on - * a safe snapshot. If so, release predicate locks and return - * true. - * - * A transaction is flagged as RO_SAFE if all concurrent R/W - * transactions commit without having conflicts out to an earlier - * snapshot, thus ensuring that no conflicts are possible for this - * transaction. Thus, we call this function as part of the - * SkipSerialization check on all public interface methods. - */ -static bool -ReleasePredicateLocksIfROSafe(void) -{ - if (SxactIsROSafe(MySerializableXact)) - { - ReleasePredicateLocks(false); - return true; - } - else - return false; -} - /* * Clear old predicate locks, belonging to committed transactions that are no * longer interesting to any in-progress transaction. @@ -3379,10 +3467,29 @@ ClearOldPredicateLocks(void) else if (finishedSxact->commitSeqNo > PredXact->HavePartialClearedThrough && finishedSxact->commitSeqNo <= PredXact->CanPartialClearThrough) { + /* + * Any active transactions that took their snapshot before this + * transaction committed are read-only, so we can clear part of + * its state. + */ LWLockRelease(SerializableXactHashLock); - ReleaseOneSerializableXact(finishedSxact, - !SxactIsReadOnly(finishedSxact), - false); + + if (SxactIsReadOnly(finishedSxact)) + { + /* A read-only transaction can be removed entirely */ + SHMQueueDelete(&(finishedSxact->finishedLink)); + ReleaseOneSerializableXact(finishedSxact, false, false); + } + else + { + /* + * A read-write transaction can only be partially + * cleared. We need to keep the SERIALIZABLEXACT but + * can release the SIREAD locks and conflicts in. + */ + ReleaseOneSerializableXact(finishedSxact, true, false); + } + PredXact->HavePartialClearedThrough = finishedSxact->commitSeqNo; LWLockAcquire(SerializableXactHashLock, LW_SHARED); } @@ -3488,6 +3595,7 @@ ReleaseOneSerializableXact(SERIALIZABLEXACT *sxact, bool partial, Assert(sxact != NULL); Assert(SxactIsRolledBack(sxact) || SxactIsCommitted(sxact)); + Assert(partial || !SxactIsOnFinishedList(sxact)); Assert(LWLockHeldByMe(SerializableFinishedListLock)); /* @@ -3679,8 +3787,9 @@ XidIsConcurrent(TransactionId xid) * currently no known reason to call this function from an index AM. */ void -CheckForSerializableConflictOut(const bool visible, const Relation relation, - const HeapTuple tuple, const Buffer buffer) +CheckForSerializableConflictOut(bool visible, Relation relation, + HeapTuple tuple, Buffer buffer, + Snapshot snapshot) { TransactionId xid; SERIALIZABLEXIDTAG sxidtag; @@ -3688,15 +3797,16 @@ CheckForSerializableConflictOut(const bool visible, const Relation relation, SERIALIZABLEXACT *sxact; HTSV_Result htsvResult; - if (SkipSerialization(relation)) + if (!SerializationNeededForRead(relation, snapshot)) return; - if (SxactIsMarkedForDeath(MySerializableXact)) + /* Check if someone else has already decided that we need to die */ + if (SxactIsDoomed(MySerializableXact)) { ereport(ERROR, (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), errmsg("could not serialize access due to read/write dependencies among transactions"), - errdetail("Cancelled on identification as a pivot, during conflict out checking."), + errdetail_internal("Reason code: Canceled on identification as a pivot, during conflict out checking."), errhint("The transaction might succeed if retried."))); } @@ -3785,15 +3895,15 @@ CheckForSerializableConflictOut(const bool visible, const Relation relation, ereport(ERROR, (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), errmsg("could not serialize access due to read/write dependencies among transactions"), - errdetail("Cancelled on conflict out to old pivot %u.", xid), + errdetail_internal("Reason code: Canceled on conflict out to old pivot %u.", xid), errhint("The transaction might succeed if retried."))); if (SxactHasSummaryConflictIn(MySerializableXact) - || !SHMQueueEmpty((SHM_QUEUE *) &MySerializableXact->inConflicts)) + || !SHMQueueEmpty(&MySerializableXact->inConflicts)) ereport(ERROR, (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), errmsg("could not serialize access due to read/write dependencies among transactions"), - errdetail("Cancelled on identification as a pivot, with conflict out to old committed transaction %u.", xid), + errdetail_internal("Reason code: Canceled on identification as a pivot, with conflict out to old committed transaction %u.", xid), errhint("The transaction might succeed if retried."))); MySerializableXact->flags |= SXACT_FLAG_SUMMARY_CONFLICT_OUT; @@ -3805,11 +3915,9 @@ CheckForSerializableConflictOut(const bool visible, const Relation relation, } sxact = sxid->myXact; Assert(TransactionIdEquals(sxact->topXid, xid)); - if (sxact == MySerializableXact - || SxactIsRolledBack(sxact) - || SxactIsMarkedForDeath(sxact)) + if (sxact == MySerializableXact || SxactIsDoomed(sxact)) { - /* We can't conflict with our own transaction or one rolled back. */ + /* Can't conflict with ourself or a transaction that will roll back. */ LWLockRelease(SerializableXactHashLock); return; } @@ -3818,13 +3926,13 @@ CheckForSerializableConflictOut(const bool visible, const Relation relation, * We have a conflict out to a transaction which has a conflict out to a * summarized transaction. That summarized transaction must have * committed first, and we can't tell when it committed in relation to our - * snapshot acquisition, so something needs to be cancelled. + * snapshot acquisition, so something needs to be canceled. */ if (SxactHasSummaryConflictOut(sxact)) { if (!SxactIsPrepared(sxact)) { - sxact->flags |= SXACT_FLAG_MARKED_FOR_DEATH; + sxact->flags |= SXACT_FLAG_DOOMED; LWLockRelease(SerializableXactHashLock); return; } @@ -3834,7 +3942,7 @@ CheckForSerializableConflictOut(const bool visible, const Relation relation, ereport(ERROR, (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), errmsg("could not serialize access due to read/write dependencies among transactions"), - errdetail("Cancelled on conflict out to old pivot."), + errdetail_internal("Reason code: Canceled on conflict out to old pivot."), errhint("The transaction might succeed if retried."))); } } @@ -3951,7 +4059,7 @@ CheckTargetForConflictsIn(PREDICATELOCKTARGETTAG *targettag) mypredlocktag = predlock->tag; } } - else if (!SxactIsRolledBack(sxact) + else if (!SxactIsDoomed(sxact) && (!SxactIsCommitted(sxact) || TransactionIdPrecedes(GetTransactionSnapshot()->xmin, sxact->finishedBefore)) @@ -3964,7 +4072,7 @@ CheckTargetForConflictsIn(PREDICATELOCKTARGETTAG *targettag) * Re-check after getting exclusive lock because the other * transaction may have flagged a conflict. */ - if (!SxactIsRolledBack(sxact) + if (!SxactIsDoomed(sxact) && (!SxactIsCommitted(sxact) || TransactionIdPrecedes(GetTransactionSnapshot()->xmin, sxact->finishedBefore)) @@ -4060,19 +4168,20 @@ CheckTargetForConflictsIn(PREDICATELOCKTARGETTAG *targettag) * tuple itself. */ void -CheckForSerializableConflictIn(const Relation relation, const HeapTuple tuple, - const Buffer buffer) +CheckForSerializableConflictIn(Relation relation, HeapTuple tuple, + Buffer buffer) { PREDICATELOCKTARGETTAG targettag; - if (SkipSerialization(relation)) + if (!SerializationNeededForWrite(relation)) return; - if (SxactIsMarkedForDeath(MySerializableXact)) + /* Check if someone else has already decided that we need to die */ + if (SxactIsDoomed(MySerializableXact)) ereport(ERROR, (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), errmsg("could not serialize access due to read/write dependencies among transactions"), - errdetail("Cancelled on identification as a pivot, during conflict in checking."), + errdetail_internal("Reason code: Canceled on identification as a pivot, during conflict in checking."), errhint("The transaction might succeed if retried."))); /* @@ -4095,9 +4204,8 @@ CheckForSerializableConflictIn(const Relation relation, const HeapTuple tuple, SET_PREDICATELOCKTARGETTAG_TUPLE(targettag, relation->rd_node.dbNode, relation->rd_id, - ItemPointerGetBlockNumber(&(tuple->t_data->t_ctid)), - ItemPointerGetOffsetNumber(&(tuple->t_data->t_ctid)), - HeapTupleHeaderGetXmin(tuple->t_data)); + ItemPointerGetBlockNumber(&(tuple->t_self)), + ItemPointerGetOffsetNumber(&(tuple->t_self))); CheckTargetForConflictsIn(&targettag); } @@ -4144,7 +4252,7 @@ CheckForSerializableConflictIn(const Relation relation, const HeapTuple tuple, * lead to some false positives, but it doesn't seem worth the trouble.) */ void -CheckTableForSerializableConflictIn(const Relation relation) +CheckTableForSerializableConflictIn(Relation relation) { HASH_SEQ_STATUS seqstat; PREDICATELOCKTARGET *target; @@ -4161,7 +4269,7 @@ CheckTableForSerializableConflictIn(const Relation relation) if (!TransactionIdIsValid(PredXact->SxactGlobalXmin)) return; - if (SkipSerialization(relation)) + if (!SerializationNeededForWrite(relation)) return; /* @@ -4308,6 +4416,11 @@ OnConflict_CheckForSerializationFailure(const SERIALIZABLEXACT *reader, * - the writer committed before T2 * - the reader is a READ ONLY transaction and the reader was concurrent * with T2 (= reader acquired its snapshot before T2 committed) + * + * We also handle the case that T2 is prepared but not yet committed + * here. In that case T2 has already checked for conflicts, so if it + * commits first, making the above conflict real, it's too late for it + * to abort. *------------------------------------------------------------------------ */ if (!failure) @@ -4326,13 +4439,13 @@ OnConflict_CheckForSerializationFailure(const SERIALIZABLEXACT *reader, { SERIALIZABLEXACT *t2 = conflict->sxactIn; - if (SxactIsCommitted(t2) + if (SxactIsPrepared(t2) && (!SxactIsCommitted(reader) - || t2->commitSeqNo <= reader->commitSeqNo) + || t2->prepareSeqNo <= reader->commitSeqNo) && (!SxactIsCommitted(writer) - || t2->commitSeqNo <= writer->commitSeqNo) + || t2->prepareSeqNo <= writer->commitSeqNo) && (!SxactIsReadOnly(reader) - || t2->commitSeqNo <= reader->SeqNo.lastCommitBeforeSnapshot)) + || t2->prepareSeqNo <= reader->SeqNo.lastCommitBeforeSnapshot)) { failure = true; break; @@ -4345,7 +4458,8 @@ OnConflict_CheckForSerializationFailure(const SERIALIZABLEXACT *reader, } /*------------------------------------------------------------------------ - * Check whether the reader has become a pivot with a committed writer: + * Check whether the reader has become a pivot with a writer + * that's committed (or prepared): * * T0 ------> R ------> W * rw rw @@ -4356,7 +4470,7 @@ OnConflict_CheckForSerializationFailure(const SERIALIZABLEXACT *reader, * - T0 is READ ONLY, and overlaps the writer *------------------------------------------------------------------------ */ - if (!failure && SxactIsCommitted(writer) && !SxactIsReadOnly(reader)) + if (!failure && SxactIsPrepared(writer) && !SxactIsReadOnly(reader)) { if (SxactHasSummaryConflictIn(reader)) { @@ -4372,11 +4486,11 @@ OnConflict_CheckForSerializationFailure(const SERIALIZABLEXACT *reader, { SERIALIZABLEXACT *t0 = conflict->sxactOut; - if (!SxactIsRolledBack(t0) + if (!SxactIsDoomed(t0) && (!SxactIsCommitted(t0) - || t0->commitSeqNo >= writer->commitSeqNo) + || t0->commitSeqNo >= writer->prepareSeqNo) && (!SxactIsReadOnly(t0) - || t0->SeqNo.lastCommitBeforeSnapshot >= writer->commitSeqNo)) + || t0->SeqNo.lastCommitBeforeSnapshot >= writer->prepareSeqNo)) { failure = true; break; @@ -4404,7 +4518,7 @@ OnConflict_CheckForSerializationFailure(const SERIALIZABLEXACT *reader, ereport(ERROR, (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), errmsg("could not serialize access due to read/write dependencies among transactions"), - errdetail("Cancelled on identification as a pivot, during write."), + errdetail_internal("Reason code: Canceled on identification as a pivot, during write."), errhint("The transaction might succeed if retried."))); } else if (SxactIsPrepared(writer)) @@ -4416,10 +4530,10 @@ OnConflict_CheckForSerializationFailure(const SERIALIZABLEXACT *reader, ereport(ERROR, (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), errmsg("could not serialize access due to read/write dependencies among transactions"), - errdetail("Cancelled on conflict out to pivot %u, during read.", writer->topXid), + errdetail_internal("Reason code: Canceled on conflict out to pivot %u, during read.", writer->topXid), errhint("The transaction might succeed if retried."))); } - writer->flags |= SXACT_FLAG_MARKED_FOR_DEATH; + writer->flags |= SXACT_FLAG_DOOMED; } } @@ -4437,7 +4551,7 @@ OnConflict_CheckForSerializationFailure(const SERIALIZABLEXACT *reader, * marked for death, because rolling back another transaction might mean * that we flail without ever making progress. This transaction is * committing writes, so letting it commit ensures progress. If we - * cancelled the far conflict, it might immediately fail again on retry. + * canceled the far conflict, it might immediately fail again on retry. */ void PreCommit_CheckForSerializationFailure(void) @@ -4451,25 +4565,25 @@ PreCommit_CheckForSerializationFailure(void) LWLockAcquire(SerializableXactHashLock, LW_EXCLUSIVE); - if (SxactIsMarkedForDeath(MySerializableXact)) + /* Check if someone else has already decided that we need to die */ + if (SxactIsDoomed(MySerializableXact)) { LWLockRelease(SerializableXactHashLock); ereport(ERROR, (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), errmsg("could not serialize access due to read/write dependencies among transactions"), - errdetail("Cancelled on identification as a pivot, during commit attempt."), + errdetail_internal("Reason code: Canceled on identification as a pivot, during commit attempt."), errhint("The transaction might succeed if retried."))); } nearConflict = (RWConflict) - SHMQueueNext((SHM_QUEUE *) &MySerializableXact->inConflicts, - (SHM_QUEUE *) &MySerializableXact->inConflicts, + SHMQueueNext(&MySerializableXact->inConflicts, + &MySerializableXact->inConflicts, offsetof(RWConflictData, inLink)); while (nearConflict) { if (!SxactIsCommitted(nearConflict->sxactOut) - && !SxactIsRolledBack(nearConflict->sxactOut) - && !SxactIsMarkedForDeath(nearConflict->sxactOut)) + && !SxactIsDoomed(nearConflict->sxactOut)) { RWConflict farConflict; @@ -4482,10 +4596,24 @@ PreCommit_CheckForSerializationFailure(void) if (farConflict->sxactOut == MySerializableXact || (!SxactIsCommitted(farConflict->sxactOut) && !SxactIsReadOnly(farConflict->sxactOut) - && !SxactIsRolledBack(farConflict->sxactOut) - && !SxactIsMarkedForDeath(farConflict->sxactOut))) + && !SxactIsDoomed(farConflict->sxactOut))) { - nearConflict->sxactOut->flags |= SXACT_FLAG_MARKED_FOR_DEATH; + /* + * Normally, we kill the pivot transaction to make sure we + * make progress if the failing transaction is retried. + * However, we can't kill it if it's already prepared, so + * in that case we commit suicide instead. + */ + if (SxactIsPrepared(nearConflict->sxactOut)) + { + LWLockRelease(SerializableXactHashLock); + ereport(ERROR, + (errcode(ERRCODE_T_R_SERIALIZATION_FAILURE), + errmsg("could not serialize access due to read/write dependencies among transactions"), + errdetail_internal("Reason code: Canceled on commit attempt with conflict in from prepared pivot."), + errhint("The transaction might succeed if retried."))); + } + nearConflict->sxactOut->flags |= SXACT_FLAG_DOOMED; break; } farConflict = (RWConflict) @@ -4496,11 +4624,12 @@ PreCommit_CheckForSerializationFailure(void) } nearConflict = (RWConflict) - SHMQueueNext((SHM_QUEUE *) &MySerializableXact->inConflicts, + SHMQueueNext(&MySerializableXact->inConflicts, &nearConflict->inLink, offsetof(RWConflictData, inLink)); } + MySerializableXact->prepareSeqNo = ++(PredXact->LastSxactCommitSeqNo); MySerializableXact->flags |= SXACT_FLAG_PREPARED; LWLockRelease(SerializableXactHashLock); @@ -4539,14 +4668,11 @@ AtPrepare_PredicateLocks(void) xactRecord->flags = MySerializableXact->flags; /* - * Tweak the flags. Since we're not going to output the inConflicts and - * outConflicts lists, if they're non-empty we'll represent that by - * setting the appropriate summary conflict flags. + * Note that we don't include the list of conflicts in our out in + * the statefile, because new conflicts can be added even after the + * transaction prepares. We'll just make a conservative assumption + * during recovery instead. */ - if (!SHMQueueEmpty((SHM_QUEUE *) &MySerializableXact->inConflicts)) - xactRecord->flags |= SXACT_FLAG_SUMMARY_CONFLICT_IN; - if (!SHMQueueEmpty((SHM_QUEUE *) &MySerializableXact->outConflicts)) - xactRecord->flags |= SXACT_FLAG_SUMMARY_CONFLICT_OUT; RegisterTwoPhaseRecord(TWOPHASE_RM_PREDICATELOCK_ID, 0, &record, sizeof(record)); @@ -4675,20 +4801,12 @@ predicatelock_twophase_recover(TransactionId xid, uint16 info, sxact->pid = 0; /* a prepared xact hasn't committed yet */ + sxact->prepareSeqNo = RecoverySerCommitSeqNo; sxact->commitSeqNo = InvalidSerCommitSeqNo; sxact->finishedBefore = InvalidTransactionId; sxact->SeqNo.lastCommitBeforeSnapshot = RecoverySerCommitSeqNo; - - /* - * We don't need the details of a prepared transaction's conflicts, - * just whether it had conflicts in or out (which we get from the - * flags) - */ - SHMQueueInit(&(sxact->outConflicts)); - SHMQueueInit(&(sxact->inConflicts)); - /* * Don't need to track this; no transactions running at the time the * recovered xact started are still active, except possibly other @@ -4710,6 +4828,17 @@ predicatelock_twophase_recover(TransactionId xid, uint16 info, (MaxBackends + max_prepared_xacts)); } + /* + * We don't know whether the transaction had any conflicts or + * not, so we'll conservatively assume that it had both a + * conflict in and a conflict out, and represent that with the + * summary conflict flags. + */ + SHMQueueInit(&(sxact->outConflicts)); + SHMQueueInit(&(sxact->inConflicts)); + sxact->flags |= SXACT_FLAG_SUMMARY_CONFLICT_IN; + sxact->flags |= SXACT_FLAG_SUMMARY_CONFLICT_OUT; + /* Register the transaction's xid */ sxidtag.xid = xid; sxid = (SERIALIZABLEXID *) hash_search(SerializableXidHash, diff --git a/src/backend/storage/lmgr/proc.c b/src/backend/storage/lmgr/proc.c index c7f055b6e0..67a2602bf9 100644 --- a/src/backend/storage/lmgr/proc.c +++ b/src/backend/storage/lmgr/proc.c @@ -184,11 +184,15 @@ InitProcGlobal(void) */ ProcGlobal->freeProcs = NULL; ProcGlobal->autovacFreeProcs = NULL; + ProcGlobal->startupProc = NULL; + ProcGlobal->startupProcPid = 0; + ProcGlobal->startupBufferPinWaitBufId = -1; ProcGlobal->spins_per_delay = DEFAULT_SPINS_PER_DELAY; /* - * Pre-create the PGPROC structures and create a semaphore for each. + * Pre-create the PGPROC structures and create a semaphore and latch + * for each. */ procs = (PGPROC *) ShmemAlloc((MaxConnections) * sizeof(PGPROC)); if (!procs) @@ -199,9 +203,9 @@ InitProcGlobal(void) for (i = 0; i < MaxConnections; i++) { PGSemaphoreCreate(&(procs[i].sem)); + InitSharedLatch(&procs[i].procLatch); procs[i].links.next = (SHM_QUEUE *) ProcGlobal->freeProcs; ProcGlobal->freeProcs = &procs[i]; - InitSharedLatch(&procs[i].waitLatch); } /* @@ -218,9 +222,9 @@ InitProcGlobal(void) for (i = 0; i < autovacuum_max_workers + 1; i++) { PGSemaphoreCreate(&(procs[i].sem)); + InitSharedLatch(&procs[i].procLatch); procs[i].links.next = (SHM_QUEUE *) ProcGlobal->autovacFreeProcs; ProcGlobal->autovacFreeProcs = &procs[i]; - InitSharedLatch(&procs[i].waitLatch); } /* @@ -231,7 +235,7 @@ InitProcGlobal(void) { AuxiliaryProcs[i].pid = 0; /* marks auxiliary proc as not in use */ PGSemaphoreCreate(&(AuxiliaryProcs[i].sem)); - InitSharedLatch(&AuxiliaryProcs[i].waitLatch); + InitSharedLatch(&AuxiliaryProcs[i].procLatch); } /* Create ProcStructLock spinlock, too */ @@ -259,6 +263,13 @@ InitProcess(void) if (MyProc != NULL) elog(ERROR, "you already exist"); + /* + * Initialize process-local latch support. This could fail if the kernel + * is low on resources, and if so we want to exit cleanly before acquiring + * any shared-memory resources. + */ + InitializeLatchSupport(); + /* * Try to get a proc struct from the free list. If this fails, we must be * out of PGPROC structures (not to mention semaphores). @@ -307,8 +318,8 @@ InitProcess(void) MarkPostmasterChildActive(); /* - * Initialize all fields of MyProc, except for the semaphore which was - * prepared for us by InitProcGlobal. + * Initialize all fields of MyProc, except for the semaphore and latch, + * which were prepared for us by InitProcGlobal. */ SHMQueueElemInit(&(MyProc->links)); MyProc->waitStatus = STATUS_OK; @@ -337,12 +348,17 @@ InitProcess(void) SHMQueueInit(&(MyProc->myProcLocks[i])); MyProc->recoveryConflictPending = false; - /* Initialise for sync rep */ + /* Initialize fields for sync rep */ MyProc->waitLSN.xlogid = 0; MyProc->waitLSN.xrecoff = 0; MyProc->syncRepState = SYNC_REP_NOT_WAITING; SHMQueueElemInit(&(MyProc->syncRepLinks)); - OwnLatch((Latch *) &MyProc->waitLatch); + + /* + * Acquire ownership of the PGPROC's latch, so that we can use WaitLatch. + * Note that there's no particular need to do ResetLatch here. + */ + OwnLatch(&MyProc->procLatch); /* * We might be reusing a semaphore that belonged to a failed process. So @@ -383,7 +399,6 @@ InitProcessPhase2(void) /* * Arrange to clean that up at backend exit. */ - on_shmem_exit(SyncRepCleanupAtProcExit, 0); on_shmem_exit(RemoveProcFromArray, 0); } @@ -423,6 +438,13 @@ InitAuxiliaryProcess(void) if (MyProc != NULL) elog(ERROR, "you already exist"); + /* + * Initialize process-local latch support. This could fail if the kernel + * is low on resources, and if so we want to exit cleanly before acquiring + * any shared-memory resources. + */ + InitializeLatchSupport(); + /* * We use the ProcStructLock to protect assignment and releasing of * AuxiliaryProcs entries. @@ -458,8 +480,8 @@ InitAuxiliaryProcess(void) SpinLockRelease(ProcStructLock); /* - * Initialize all fields of MyProc, except for the semaphore which was - * prepared for us by InitProcGlobal. + * Initialize all fields of MyProc, except for the semaphore and latch, + * which were prepared for us by InitProcGlobal. */ SHMQueueElemInit(&(MyProc->links)); MyProc->waitStatus = STATUS_OK; @@ -484,6 +506,12 @@ InitAuxiliaryProcess(void) for (i = 0; i < NUM_LOCK_PARTITIONS; i++) SHMQueueInit(&(MyProc->myProcLocks[i])); + /* + * Acquire ownership of the PGPROC's latch, so that we can use WaitLatch. + * Note that there's no particular need to do ResetLatch here. + */ + OwnLatch(&MyProc->procLatch); + /* * We might be reusing a semaphore that belonged to a failed process. So * be careful and reinitialize its value here. (This is not strictly @@ -511,7 +539,6 @@ PublishStartupProcessInformation(void) procglobal->startupProc = MyProc; procglobal->startupProcPid = MyProcPid; - procglobal->startupBufferPinWaitBufId = 0; SpinLockRelease(ProcStructLock); } @@ -538,14 +565,10 @@ SetStartupBufferPinWaitBufId(int bufid) int GetStartupBufferPinWaitBufId(void) { - int bufid; - /* use volatile pointer to prevent code rearrangement */ volatile PROC_HDR *procglobal = ProcGlobal; - bufid = procglobal->startupBufferPinWaitBufId; - - return bufid; + return procglobal->startupBufferPinWaitBufId; } /* @@ -645,9 +668,12 @@ LockWaitCancel(void) * ProcReleaseLocks() -- release locks associated with current transaction * at main transaction commit or abort * - * At main transaction commit, we release all locks except session locks. + * At main transaction commit, we release standard locks except session locks. * At main transaction abort, we release all locks including session locks. * + * Advisory locks are released only if they are transaction-level; + * session-level holds remain, whether this is a commit or not. + * * At subtransaction commit, we don't release any locks (so this func is not * needed at all); we will defer the releasing to the parent transaction. * At subtransaction abort, we release all locks held by the subtransaction; @@ -661,10 +687,9 @@ ProcReleaseLocks(bool isCommit) return; /* If waiting, get off wait queue (should only be needed after error) */ LockWaitCancel(); - /* Release locks */ + /* Release standard locks, including session-level if aborting */ LockReleaseAll(DEFAULT_LOCKMETHOD, !isCommit); - - /* Release transaction level advisory locks */ + /* Release transaction-level advisory locks */ LockReleaseAll(USER_LOCKMETHOD, false); } @@ -688,9 +713,13 @@ ProcKill(int code, Datum arg) { /* use volatile pointer to prevent code rearrangement */ volatile PROC_HDR *procglobal = ProcGlobal; + PGPROC *proc; Assert(MyProc != NULL); + /* Make sure we're out of the sync rep lists */ + SyncRepCleanupAtProcExit(); + /* * Release any LW locks I am holding. There really shouldn't be any, but * it's cheap to check again before we cut the knees off the LWLock @@ -698,23 +727,29 @@ ProcKill(int code, Datum arg) */ LWLockReleaseAll(); + /* + * Clear MyProc first; then disown the process latch. This is so that + * signal handlers won't try to clear the process latch after it's no + * longer ours. + */ + proc = MyProc; + MyProc = NULL; + DisownLatch(&proc->procLatch); + SpinLockAcquire(ProcStructLock); /* Return PGPROC structure (and semaphore) to appropriate freelist */ if (IsAnyAutoVacuumProcess()) { - MyProc->links.next = (SHM_QUEUE *) procglobal->autovacFreeProcs; - procglobal->autovacFreeProcs = MyProc; + proc->links.next = (SHM_QUEUE *) procglobal->autovacFreeProcs; + procglobal->autovacFreeProcs = proc; } else { - MyProc->links.next = (SHM_QUEUE *) procglobal->freeProcs; - procglobal->freeProcs = MyProc; + proc->links.next = (SHM_QUEUE *) procglobal->freeProcs; + procglobal->freeProcs = proc; } - /* PGPROC struct isn't mine anymore */ - MyProc = NULL; - /* Update shared estimate of spins_per_delay */ procglobal->spins_per_delay = update_spins_per_delay(procglobal->spins_per_delay); @@ -743,6 +778,7 @@ AuxiliaryProcKill(int code, Datum arg) { int proctype = DatumGetInt32(arg); PGPROC *auxproc; + PGPROC *proc; Assert(proctype >= 0 && proctype < NUM_AUXILIARY_PROCS); @@ -753,13 +789,19 @@ AuxiliaryProcKill(int code, Datum arg) /* Release any LW locks I am holding (see notes above) */ LWLockReleaseAll(); + /* + * Clear MyProc first; then disown the process latch. This is so that + * signal handlers won't try to clear the process latch after it's no + * longer ours. + */ + proc = MyProc; + MyProc = NULL; + DisownLatch(&proc->procLatch); + SpinLockAcquire(ProcStructLock); /* Mark auxiliary proc no longer in use */ - MyProc->pid = 0; - - /* PGPROC struct isn't mine anymore */ - MyProc = NULL; + proc->pid = 0; /* Update shared estimate of spins_per_delay */ ProcGlobal->spins_per_delay = update_spins_per_delay(ProcGlobal->spins_per_delay); @@ -954,6 +996,15 @@ ProcSleep(LOCALLOCK *locallock, LockMethod lockMethodTable) */ LWLockRelease(partitionLock); + /* + * Also, now that we will successfully clean up after an ereport, it's + * safe to check to see if there's a buffer pin deadlock against the + * Startup process. Of course, that's only necessary if we're doing + * Hot Standby and are not the Startup process ourselves. + */ + if (RecoveryInProgress() && !InRecovery) + CheckRecoveryConflictDeadlock(); + /* Reset deadlock_state before enabling the signal handler */ deadlock_state = DS_NOT_YET_CHECKED; @@ -1016,12 +1067,29 @@ ProcSleep(LOCALLOCK *locallock, LockMethod lockMethodTable) !(autovac->vacuumFlags & PROC_VACUUM_FOR_WRAPAROUND)) { int pid = autovac->pid; + StringInfoData locktagbuf; + StringInfoData logbuf; /* errdetail for server log */ + + initStringInfo(&locktagbuf); + initStringInfo(&logbuf); + DescribeLockTag(&locktagbuf, &lock->tag); + appendStringInfo(&logbuf, + _("Process %d waits for %s on %s."), + MyProcPid, + GetLockmodeName(lock->tag.locktag_lockmethodid, + lockmode), + locktagbuf.data); + + /* release lock as quickly as possible */ + LWLockRelease(ProcArrayLock); - elog(DEBUG2, "sending cancel to blocking autovacuum pid = %d", - pid); + ereport(LOG, + (errmsg("sending cancel to blocking autovacuum PID %d", + pid), + errdetail_log("%s", logbuf.data))); - /* don't hold the lock across the kill() syscall */ - LWLockRelease(ProcArrayLock); + pfree(logbuf.data); + pfree(locktagbuf.data); /* send the autovacuum worker Back to Old Kent Road */ if (kill(pid, SIGINT) < 0) @@ -1345,7 +1413,7 @@ CheckDeadLock(void) * the lock. * * If blocked by autovacuum, this wakeup will enable ProcSleep to send - * the cancelling signal to the autovacuum worker. + * the canceling signal to the autovacuum worker. */ PGSemaphoreUnlock(&MyProc->sem); } diff --git a/src/backend/storage/lmgr/spin.c b/src/backend/storage/lmgr/spin.c index cb3e126af1..9f1ce1e8c8 100644 --- a/src/backend/storage/lmgr/spin.c +++ b/src/backend/storage/lmgr/spin.c @@ -23,6 +23,7 @@ #include "postgres.h" #include "miscadmin.h" +#include "replication/walsender.h" #include "storage/lwlock.h" #include "storage/spin.h" @@ -50,14 +51,21 @@ SpinlockSemas(void) int SpinlockSemas(void) { + int nsemas; + /* * It would be cleaner to distribute this logic into the affected modules, * similar to the way shmem space estimation is handled. * - * For now, though, we just need a few spinlocks (10 should be plenty) - * plus one for each LWLock and one for each buffer header. + * For now, though, there are few enough users of spinlocks that we just + * keep the knowledge here. */ - return NumLWLocks() + NBuffers + 10; + nsemas = NumLWLocks(); /* one for each lwlock */ + nsemas += NBuffers; /* one for each buffer header */ + nsemas += max_wal_senders; /* one for each wal sender process */ + nsemas += 30; /* plus a bunch for other small-scale use */ + + return nsemas; } /* diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c index 7f44606c1a..ead48ccddd 100644 --- a/src/backend/storage/smgr/md.c +++ b/src/backend/storage/smgr/md.c @@ -121,13 +121,17 @@ static MemoryContext MdCxt; /* context for all md.c allocations */ * be deleted after the next checkpoint, but we use a linked list instead of * a hash table, because we don't expect there to be any duplicate requests. * + * These mechanisms are only used for non-temp relations; we never fsync + * temp rels, nor do we need to postpone their deletion (see comments in + * mdunlink). + * * (Regular backends do not track pending operations locally, but forward * them to the bgwriter.) */ typedef struct { - RelFileNodeBackend rnode; /* the targeted relation */ - ForkNumber forknum; + RelFileNode rnode; /* the targeted relation */ + ForkNumber forknum; /* which fork */ BlockNumber segno; /* which segment */ } PendingOperationTag; @@ -142,7 +146,7 @@ typedef struct typedef struct { - RelFileNodeBackend rnode; /* the dead relation to delete */ + RelFileNode rnode; /* the dead relation to delete */ CycleCtr cycle_ctr; /* mdckpt_cycle_ctr when request was made */ } PendingUnlinkEntry; @@ -288,9 +292,6 @@ mdcreate(SMgrRelation reln, ForkNumber forkNum, bool isRedo) pfree(path); - if (reln->smgr_transient) - FileSetTransient(fd); - reln->md_fd[forkNum] = _fdvec_alloc(); reln->md_fd[forkNum]->mdfd_vfd = fd; @@ -301,11 +302,11 @@ mdcreate(SMgrRelation reln, ForkNumber forkNum, bool isRedo) /* * mdunlink() -- Unlink a relation. * - * Note that we're passed a RelFileNode --- by the time this is called, + * Note that we're passed a RelFileNodeBackend --- by the time this is called, * there won't be an SMgrRelation hashtable entry anymore. * - * Actually, we don't unlink the first segment file of the relation, but - * just truncate it to zero length, and record a request to unlink it after + * For regular relations, we don't unlink the first segment file of the rel, + * but just truncate it to zero length, and record a request to unlink it after * the next checkpoint. Additional segments can be unlinked immediately, * however. Leaving the empty file in place prevents that relfilenode * number from being reused. The scenario this protects us from is: @@ -322,7 +323,19 @@ mdcreate(SMgrRelation reln, ForkNumber forkNum, bool isRedo) * number until it's safe, because relfilenode assignment skips over any * existing file. * - * If isRedo is true, it's okay for the relation to be already gone. + * We do not need to go through this dance for temp relations, though, because + * we never make WAL entries for temp rels, and so a temp rel poses no threat + * to the health of a regular rel that has taken over its relfilenode number. + * The fact that temp rels and regular rels have different file naming + * patterns provides additional safety. + * + * All the above applies only to the relation's main fork; other forks can + * just be removed immediately, since they are not needed to prevent the + * relfilenode number from being recycled. Also, we do not carefully + * track whether other forks have been created or not, but just attempt to + * unlink them unconditionally; so we should never complain about ENOENT. + * + * If isRedo is true, it's unsurprising for the relation to be already gone. * Also, we should remove the file immediately instead of queuing a request * for later, since during redo there's no possibility of creating a * conflicting relation. @@ -338,25 +351,24 @@ mdunlink(RelFileNodeBackend rnode, ForkNumber forkNum, bool isRedo) /* * We have to clean out any pending fsync requests for the doomed - * relation, else the next mdsync() will fail. + * relation, else the next mdsync() will fail. There can't be any such + * requests for a temp relation, though. */ - ForgetRelationFsyncRequests(rnode, forkNum); + if (!RelFileNodeBackendIsTemp(rnode)) + ForgetRelationFsyncRequests(rnode.node, forkNum); path = relpath(rnode, forkNum); /* * Delete or truncate the first segment. */ - if (isRedo || forkNum != MAIN_FORKNUM) + if (isRedo || forkNum != MAIN_FORKNUM || RelFileNodeBackendIsTemp(rnode)) { ret = unlink(path); - if (ret < 0) - { - if (!isRedo || errno != ENOENT) - ereport(WARNING, - (errcode_for_file_access(), - errmsg("could not remove file \"%s\": %m", path))); - } + if (ret < 0 && errno != ENOENT) + ereport(WARNING, + (errcode_for_file_access(), + errmsg("could not remove file \"%s\": %m", path))); } else { @@ -379,6 +391,9 @@ mdunlink(RelFileNodeBackend rnode, ForkNumber forkNum, bool isRedo) ereport(WARNING, (errcode_for_file_access(), errmsg("could not truncate file \"%s\": %m", path))); + + /* Register request to unlink first segment later */ + register_unlink(rnode); } /* @@ -410,10 +425,6 @@ mdunlink(RelFileNodeBackend rnode, ForkNumber forkNum, bool isRedo) } pfree(path); - - /* Register request to unlink first segment later */ - if (!isRedo && forkNum == MAIN_FORKNUM) - register_unlink(rnode); } /* @@ -545,9 +556,6 @@ mdopen(SMgrRelation reln, ForkNumber forknum, ExtensionBehavior behavior) pfree(path); - if (reln->smgr_transient) - FileSetTransient(fd); - reln->md_fd[forknum] = mdfd = _fdvec_alloc(); mdfd->mdfd_vfd = fd; @@ -1076,8 +1084,7 @@ mdsync(void) * the relation will have been dirtied through this same smgr * relation, and so we can save a file open/close cycle. */ - reln = smgropen(entry->tag.rnode.node, - entry->tag.rnode.backend); + reln = smgropen(entry->tag.rnode, InvalidBackendId); /* * It is possible that the relation has been dropped or @@ -1228,7 +1235,7 @@ mdpostckpt(void) Assert((CycleCtr) (entry->cycle_ctr + 1) == mdckpt_cycle_ctr); /* Unlink the file */ - path = relpath(entry->rnode, MAIN_FORKNUM); + path = relpathperm(entry->rnode, MAIN_FORKNUM); if (unlink(path) < 0) { /* @@ -1256,20 +1263,23 @@ mdpostckpt(void) * If there is a local pending-ops table, just make an entry in it for * mdsync to process later. Otherwise, try to pass off the fsync request * to the background writer process. If that fails, just do the fsync - * locally before returning (we expect this will not happen often enough + * locally before returning (we hope this will not happen often enough * to be a performance problem). */ static void register_dirty_segment(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg) { + /* Temp relations should never be fsync'd */ + Assert(!SmgrIsTemp(reln)); + if (pendingOpsTable) { /* push it into local pending-ops table */ - RememberFsyncRequest(reln->smgr_rnode, forknum, seg->mdfd_segno); + RememberFsyncRequest(reln->smgr_rnode.node, forknum, seg->mdfd_segno); } else { - if (ForwardFsyncRequest(reln->smgr_rnode, forknum, seg->mdfd_segno)) + if (ForwardFsyncRequest(reln->smgr_rnode.node, forknum, seg->mdfd_segno)) return; /* passed it off successfully */ ereport(DEBUG1, @@ -1286,16 +1296,23 @@ register_dirty_segment(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg) /* * register_unlink() -- Schedule a file to be deleted after next checkpoint * + * We don't bother passing in the fork number, because this is only used + * with main forks. + * * As with register_dirty_segment, this could involve either a local or * a remote pending-ops table. */ static void register_unlink(RelFileNodeBackend rnode) { + /* Should never be used with temp relations */ + Assert(!RelFileNodeBackendIsTemp(rnode)); + if (pendingOpsTable) { /* push it into local pending-ops table */ - RememberFsyncRequest(rnode, MAIN_FORKNUM, UNLINK_RELATION_REQUEST); + RememberFsyncRequest(rnode.node, MAIN_FORKNUM, + UNLINK_RELATION_REQUEST); } else { @@ -1307,7 +1324,7 @@ register_unlink(RelFileNodeBackend rnode) * XXX should we just leave the file orphaned instead? */ Assert(IsUnderPostmaster); - while (!ForwardFsyncRequest(rnode, MAIN_FORKNUM, + while (!ForwardFsyncRequest(rnode.node, MAIN_FORKNUM, UNLINK_RELATION_REQUEST)) pg_usleep(10000L); /* 10 msec seems a good number */ } @@ -1333,8 +1350,7 @@ register_unlink(RelFileNodeBackend rnode) * structure for them.) */ void -RememberFsyncRequest(RelFileNodeBackend rnode, ForkNumber forknum, - BlockNumber segno) +RememberFsyncRequest(RelFileNode rnode, ForkNumber forknum, BlockNumber segno) { Assert(pendingOpsTable); @@ -1347,7 +1363,7 @@ RememberFsyncRequest(RelFileNodeBackend rnode, ForkNumber forknum, hash_seq_init(&hstat, pendingOpsTable); while ((entry = (PendingOperationEntry *) hash_seq_search(&hstat)) != NULL) { - if (RelFileNodeBackendEquals(entry->tag.rnode, rnode) && + if (RelFileNodeEquals(entry->tag.rnode, rnode) && entry->tag.forknum == forknum) { /* Okay, cancel this entry */ @@ -1368,7 +1384,7 @@ RememberFsyncRequest(RelFileNodeBackend rnode, ForkNumber forknum, hash_seq_init(&hstat, pendingOpsTable); while ((entry = (PendingOperationEntry *) hash_seq_search(&hstat)) != NULL) { - if (entry->tag.rnode.node.dbNode == rnode.node.dbNode) + if (entry->tag.rnode.dbNode == rnode.dbNode) { /* Okay, cancel this entry */ entry->canceled = true; @@ -1382,7 +1398,7 @@ RememberFsyncRequest(RelFileNodeBackend rnode, ForkNumber forknum, PendingUnlinkEntry *entry = (PendingUnlinkEntry *) lfirst(cell); next = lnext(cell); - if (entry->rnode.node.dbNode == rnode.node.dbNode) + if (entry->rnode.dbNode == rnode.dbNode) { pendingUnlinks = list_delete_cell(pendingUnlinks, cell, prev); pfree(entry); @@ -1397,6 +1413,9 @@ RememberFsyncRequest(RelFileNodeBackend rnode, ForkNumber forknum, MemoryContext oldcxt = MemoryContextSwitchTo(MdCxt); PendingUnlinkEntry *entry; + /* PendingUnlinkEntry doesn't store forknum, since it's always MAIN */ + Assert(forknum == MAIN_FORKNUM); + entry = palloc(sizeof(PendingUnlinkEntry)); entry->rnode = rnode; entry->cycle_ctr = mdckpt_cycle_ctr; @@ -1446,10 +1465,10 @@ RememberFsyncRequest(RelFileNodeBackend rnode, ForkNumber forknum, } /* - * ForgetRelationFsyncRequests -- forget any fsyncs for a rel + * ForgetRelationFsyncRequests -- forget any fsyncs for a relation fork */ void -ForgetRelationFsyncRequests(RelFileNodeBackend rnode, ForkNumber forknum) +ForgetRelationFsyncRequests(RelFileNode rnode, ForkNumber forknum) { if (pendingOpsTable) { @@ -1484,12 +1503,11 @@ ForgetRelationFsyncRequests(RelFileNodeBackend rnode, ForkNumber forknum) void ForgetDatabaseFsyncRequests(Oid dbid) { - RelFileNodeBackend rnode; + RelFileNode rnode; - rnode.node.dbNode = dbid; - rnode.node.spcNode = 0; - rnode.node.relNode = 0; - rnode.backend = InvalidBackendId; + rnode.dbNode = dbid; + rnode.spcNode = 0; + rnode.relNode = 0; if (pendingOpsTable) { @@ -1562,9 +1580,6 @@ _mdfd_openseg(SMgrRelation reln, ForkNumber forknum, BlockNumber segno, if (fd < 0) return NULL; - if (reln->smgr_transient) - FileSetTransient(fd); - /* allocate an mdfdvec entry for it */ v = _fdvec_alloc(); diff --git a/src/backend/storage/smgr/smgr.c b/src/backend/storage/smgr/smgr.c index be89ee6d91..51d966300d 100644 --- a/src/backend/storage/smgr/smgr.c +++ b/src/backend/storage/smgr/smgr.c @@ -78,11 +78,16 @@ static const int NSmgr = lengthof(smgrsw); /* * Each backend has a hashtable that stores all extant SMgrRelation objects. + * In addition, "unowned" SMgrRelation objects are chained together in a list. */ static HTAB *SMgrRelationHash = NULL; +static SMgrRelation first_unowned_reln = NULL; + /* local function prototypes */ static void smgrshutdown(int code, Datum arg); +static void add_to_unowned_list(SMgrRelation reln); +static void remove_from_unowned_list(SMgrRelation reln); /* @@ -126,7 +131,7 @@ smgrshutdown(int code, Datum arg) /* * smgropen() -- Return an SMgrRelation object, creating it if need be. * - * This does not attempt to actually open the object. + * This does not attempt to actually open the underlying file. */ SMgrRelation smgropen(RelFileNode rnode, BackendId backend) @@ -146,6 +151,7 @@ smgropen(RelFileNode rnode, BackendId backend) ctl.hash = tag_hash; SMgrRelationHash = hash_create("smgr relation table", 400, &ctl, HASH_ELEM | HASH_FUNCTION); + first_unowned_reln = NULL; } /* Look up or create an entry */ @@ -165,33 +171,19 @@ smgropen(RelFileNode rnode, BackendId backend) reln->smgr_targblock = InvalidBlockNumber; reln->smgr_fsm_nblocks = InvalidBlockNumber; reln->smgr_vm_nblocks = InvalidBlockNumber; - reln->smgr_transient = false; reln->smgr_which = 0; /* we only have md.c at present */ /* mark it not open */ for (forknum = 0; forknum <= MAX_FORKNUM; forknum++) reln->md_fd[forknum] = NULL; + + /* it has no owner yet */ + add_to_unowned_list(reln); } - else - /* if it was transient before, it no longer is */ - reln->smgr_transient = false; return reln; } -/* - * smgrsettransient() -- mark an SMgrRelation object as transaction-bound - * - * The main effect of this is that all opened files are marked to be - * kernel-level closed (but not necessarily VFD-closed) when the current - * transaction ends. - */ -void -smgrsettransient(SMgrRelation reln) -{ - reln->smgr_transient = true; -} - /* * smgrsetowner() -- Establish a long-lived reference to an SMgrRelation object * @@ -201,20 +193,94 @@ smgrsettransient(SMgrRelation reln) void smgrsetowner(SMgrRelation *owner, SMgrRelation reln) { + /* We don't support "disowning" an SMgrRelation here, use smgrclearowner */ + Assert(owner != NULL); + /* * First, unhook any old owner. (Normally there shouldn't be any, but it * seems possible that this can happen during swap_relation_files() * depending on the order of processing. It's ok to close the old * relcache entry early in that case.) + * + * If there isn't an old owner, then the reln should be in the unowned + * list, and we need to remove it. */ if (reln->smgr_owner) *(reln->smgr_owner) = NULL; + else + remove_from_unowned_list(reln); /* Now establish the ownership relationship. */ reln->smgr_owner = owner; *owner = reln; } +/* + * smgrclearowner() -- Remove long-lived reference to an SMgrRelation object + * if one exists + */ +void +smgrclearowner(SMgrRelation *owner, SMgrRelation reln) +{ + /* Do nothing if the SMgrRelation object is not owned by the owner */ + if (reln->smgr_owner != owner) + return; + + /* unset the owner's reference */ + *owner = NULL; + + /* unset our reference to the owner */ + reln->smgr_owner = NULL; + + add_to_unowned_list(reln); +} + +/* + * add_to_unowned_list -- link an SMgrRelation onto the unowned list + * + * Check remove_from_unowned_list()'s comments for performance + * considerations. + */ +static void +add_to_unowned_list(SMgrRelation reln) +{ + /* place it at head of the list (to make smgrsetowner cheap) */ + reln->next_unowned_reln = first_unowned_reln; + first_unowned_reln = reln; +} + +/* + * remove_from_unowned_list -- unlink an SMgrRelation from the unowned list + * + * If the reln is not present in the list, nothing happens. Typically this + * would be caller error, but there seems no reason to throw an error. + * + * In the worst case this could be rather slow; but in all the cases that seem + * likely to be performance-critical, the reln being sought will actually be + * first in the list. Furthermore, the number of unowned relns touched in any + * one transaction shouldn't be all that high typically. So it doesn't seem + * worth expending the additional space and management logic needed for a + * doubly-linked list. + */ +static void +remove_from_unowned_list(SMgrRelation reln) +{ + SMgrRelation *link; + SMgrRelation cur; + + for (link = &first_unowned_reln, cur = *link; + cur != NULL; + link = &cur->next_unowned_reln, cur = *link) + { + if (cur == reln) + { + *link = cur->next_unowned_reln; + cur->next_unowned_reln = NULL; + break; + } + } +} + /* * smgrexists() -- Does the underlying file for a fork exist? */ @@ -238,6 +304,9 @@ smgrclose(SMgrRelation reln) owner = reln->smgr_owner; + if (!owner) + remove_from_unowned_list(reln); + if (hash_search(SMgrRelationHash, (void *) &(reln->smgr_rnode), HASH_REMOVE, NULL) == NULL) @@ -563,3 +632,29 @@ smgrpostckpt(void) (*(smgrsw[i].smgr_post_ckpt)) (); } } + +/* + * AtEOXact_SMgr + * + * This routine is called during transaction commit or abort (it doesn't + * particularly care which). All transient SMgrRelation objects are closed. + * + * We do this as a compromise between wanting transient SMgrRelations to + * live awhile (to amortize the costs of blind writes of multiple blocks) + * and needing them to not live forever (since we're probably holding open + * a kernel file descriptor for the underlying file, and we need to ensure + * that gets closed reasonably soon if the file gets deleted). + */ +void +AtEOXact_SMgr(void) +{ + /* + * Zap all unowned SMgrRelations. We rely on smgrclose() to remove each + * one from the list. + */ + while (first_unowned_reln != NULL) + { + Assert(first_unowned_reln->smgr_owner == NULL); + smgrclose(first_unowned_reln); + } +} diff --git a/src/backend/storage/smgr/smgrtype.c b/src/backend/storage/smgr/smgrtype.c index ec3292afcd..ea7bf496da 100644 --- a/src/backend/storage/smgr/smgrtype.c +++ b/src/backend/storage/smgr/smgrtype.c @@ -54,7 +54,7 @@ smgrout(PG_FUNCTION_ARGS) char *s; if (i >= NStorageManagers || i < 0) - elog(ERROR, "invalid storage manager id: %d", i); + elog(ERROR, "invalid storage manager ID: %d", i); s = pstrdup(StorageManager[i].smgr_name); PG_RETURN_CSTRING(s); diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index b35f190681..07a9b40dd0 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -135,8 +135,10 @@ int PostAuthDelay = 0; static long max_stack_depth_bytes = 100 * 1024L; /* - * Stack base pointer -- initialized by PostgresMain. This is not static - * so that PL/Java can modify it. + * Stack base pointer -- initialized by PostmasterMain and inherited by + * subprocesses. This is not static because old versions of PL/Java modify + * it directly. Newer versions use set_stack_base(), but we want to stay + * binary-compatible for the time being. */ char *stack_base_ptr = NULL; @@ -200,7 +202,7 @@ static int UseNewLine = 1; /* Use newlines query delimiters (the default) */ static int UseNewLine = 0; /* Use EOF as query delimiters */ #endif /* TCOP_DONTUSENEWLINE */ -/* whether or not, and why, we were cancelled by conflict with recovery */ +/* whether or not, and why, we were canceled by conflict with recovery */ static bool RecoveryConflictPending = false; static bool RecoveryConflictRetryable = true; static ProcSignalReason RecoveryConflictReason; @@ -1276,7 +1278,7 @@ exec_parse_message(const char *query_string, /* string to execute */ #ifdef PGXC /* * if we have the parameter types passed, which happens only in case of - * connection from coordinators, fill paramTypes with their OIDs for + * connection from Coordinators, fill paramTypes with their OIDs for * subsequent use. We have to do name to OID conversion, in a transaction * context. */ @@ -2690,6 +2692,13 @@ quickdie(SIGNAL_ARGS) sigaddset(&BlockSig, SIGQUIT); /* prevent nested calls */ PG_SETMASK(&BlockSig); + /* + * Prevent interrupts while exiting; though we just blocked signals that + * would queue new interrupts, one may have been pending. We don't want a + * quickdie() downgraded to a mere query cancel. + */ + HOLD_INTERRUPTS(); + /* * If we're aborting out of client auth, don't risk trying to send * anything to the client; we will likely violate the protocol, not to @@ -2765,11 +2774,12 @@ die(SIGNAL_ARGS) InterruptHoldoffCount--; ProcessInterrupts(); } - - /* Interrupt any sync rep wait which is currently in progress. */ - SetLatch(&(MyProc->waitLatch)); } + /* If we're still here, waken anything waiting on the process latch */ + if (MyProc) + SetLatch(&MyProc->procLatch); + errno = save_errno; } @@ -2807,11 +2817,12 @@ StatementCancelHandler(SIGNAL_ARGS) InterruptHoldoffCount--; ProcessInterrupts(); } - - /* Interrupt any sync rep wait which is currently in progress. */ - SetLatch(&(MyProc->waitLatch)); } + /* If we're still here, waken anything waiting on the process latch */ + if (MyProc) + SetLatch(&MyProc->procLatch); + errno = save_errno; } @@ -3123,6 +3134,53 @@ ia64_get_bsp(void) #endif /* IA64 */ +/* + * set_stack_base: set up reference point for stack depth checking + * + * Returns the old reference point, if any. + */ +pg_stack_base_t +set_stack_base(void) +{ + char stack_base; + pg_stack_base_t old; + +#if defined(__ia64__) || defined(__ia64) + old.stack_base_ptr = stack_base_ptr; + old.register_stack_base_ptr = register_stack_base_ptr; +#else + old = stack_base_ptr; +#endif + + /* Set up reference point for stack depth checking */ + stack_base_ptr = &stack_base; +#if defined(__ia64__) || defined(__ia64) + register_stack_base_ptr = ia64_get_bsp(); +#endif + + return old; +} + +/* + * restore_stack_base: restore reference point for stack depth checking + * + * This can be used after set_stack_base() to restore the old value. This + * is currently only used in PL/Java. When PL/Java calls a backend function + * from different thread, the thread's stack is at a different location than + * the main thread's stack, so it sets the base pointer before the call, and + * restores it afterwards. + */ +void +restore_stack_base(pg_stack_base_t base) +{ +#if defined(__ia64__) || defined(__ia64) + stack_base_ptr = base.stack_base_ptr; + register_stack_base_ptr = base.register_stack_base_ptr; +#else + stack_base_ptr = base; +#endif +} + /* * check_stack_depth: check for excessively deep recursion * @@ -3138,7 +3196,7 @@ check_stack_depth(void) long stack_depth; /* - * Compute distance from PostgresMain's local variables to my own + * Compute distance from reference point to to my local variables */ stack_depth = (long) (stack_base_ptr - &stack_top_loc); @@ -3328,13 +3386,14 @@ get_stats_option_name(const char *arg) * coming from the client, or PGC_SUSET for insecure options coming from * a superuser client. * - * Returns the database name extracted from the command line, if any. + * If a database name is present in the command line arguments, it's + * returned into *dbname (this is allowed only if *dbname is initially NULL). * ---------------------------------------------------------------- */ -const char * -process_postgres_switches(int argc, char *argv[], GucContext ctx) +void +process_postgres_switches(int argc, char *argv[], GucContext ctx, + const char **dbname) { - const char *dbname; bool secure = (ctx == PGC_POSTMASTER); int errs = 0; GucSource gucsource; @@ -3380,7 +3439,8 @@ process_postgres_switches(int argc, char *argv[], GucContext ctx) case 'b': /* Undocumented flag used for binary upgrades */ - IsBinaryUpgrade = true; + if (secure) + IsBinaryUpgrade = true; break; #ifdef PGXC case 'C': @@ -3397,7 +3457,8 @@ process_postgres_switches(int argc, char *argv[], GucContext ctx) break; case 'E': - EchoQuery = true; + if (secure) + EchoQuery = true; break; case 'e': @@ -3422,7 +3483,8 @@ process_postgres_switches(int argc, char *argv[], GucContext ctx) break; case 'j': - UseNewLine = 0; + if (secure) + UseNewLine = 0; break; case 'k': @@ -3543,27 +3605,29 @@ process_postgres_switches(int argc, char *argv[], GucContext ctx) #ifdef PGXC /* - * Make sure we specified the mode if Coordinator or Data Node. + * Make sure we specified the mode if Coordinator or Datanode. * Allow for the exception of initdb by checking config option */ if (!IS_PGXC_COORDINATOR && !IS_PGXC_DATANODE && IsUnderPostmaster) { ereport(FATAL, (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("PG-XC: must start as either a Coordinator (-C) or Data Node (-X)\n"))); + errmsg("PG-XC: must start as either a Coordinator (-C) or Datanode (-X)\n"))); } if (!IsPostmasterEnvironment) { - /* Treat it as a data node for initdb to work properly */ + /* Treat it as a Datanode for initdb to work properly */ isPGXCDataNode = true; } #endif /* - * Should be no more arguments except an optional database name, and - * that's only in the secure case. + * Optional database name should be there only if *dbname is NULL. */ - if (errs || argc - optind > 1 || (argc != optind && !secure)) + if (!errs && dbname && *dbname == NULL && argc - optind >= 1) + *dbname = strdup(argv[optind++]); + + if (errs || argc != optind) { /* spell the error message a bit differently depending on context */ if (IsUnderPostmaster) @@ -3579,11 +3643,6 @@ process_postgres_switches(int argc, char *argv[], GucContext ctx) errhint("Try \"%s --help\" for more information.", progname))); } - if (argc - optind == 1) - dbname = strdup(argv[optind]); - else - dbname = NULL; - /* * Reset getopt(3) library so that it will work correctly in subprocesses * or when this function is called a second time with another array. @@ -3592,8 +3651,6 @@ process_postgres_switches(int argc, char *argv[], GucContext ctx) #ifdef HAVE_INT_OPTRESET optreset = 1; /* some systems need this too */ #endif - - return dbname; } @@ -3603,16 +3660,17 @@ process_postgres_switches(int argc, char *argv[], GucContext ctx) * * argc/argv are the command line arguments to be used. (When being forked * by the postmaster, these are not the original argv array of the process.) - * username is the (possibly authenticated) PostgreSQL user name to be used - * for the session. + * dbname is the name of the database to connect to, or NULL if the database + * name should be extracted from the command line arguments or defaulted. + * username is the PostgreSQL user name to be used for the session. * ---------------------------------------------------------------- */ int -PostgresMain(int argc, char *argv[], const char *username) +PostgresMain(int argc, char *argv[], + const char *dbname, + const char *username) { - const char *dbname; int firstchar; - char stack_base; StringInfoData input_message; sigjmp_buf local_sigjmp_buf; volatile bool send_ready_for_query = true; @@ -3641,22 +3699,8 @@ PostgresMain(int argc, char *argv[], const char *username) MyStartTime = time(NULL); } - /* - * Fire up essential subsystems: error and memory management - * - * If we are running under the postmaster, this is done already. - */ - if (!IsUnderPostmaster) - MemoryContextInit(); - SetProcessingMode(InitProcessing); - /* Set up reference point for stack depth checking */ - stack_base_ptr = &stack_base; -#if defined(__ia64__) || defined(__ia64) - register_stack_base_ptr = ia64_get_bsp(); -#endif - /* Compute paths, if we didn't inherit them from postmaster */ if (my_exec_path[0] == '\0') { @@ -3677,7 +3721,7 @@ PostgresMain(int argc, char *argv[], const char *username) /* * Parse command-line options. */ - dbname = process_postgres_switches(argc, argv, PGC_POSTMASTER); + process_postgres_switches(argc, argv, PGC_POSTMASTER, &dbname); /* Must have gotten a database name, or have a default (the username) */ if (dbname == NULL) @@ -4594,7 +4638,7 @@ ShowUsage(const char *title) ereport(LOG, (errmsg_internal("%s", title), - errdetail("%s", str.data))); + errdetail_internal("%s", str.data))); pfree(str.data); } diff --git a/src/backend/tcop/pquery.c b/src/backend/tcop/pquery.c index 2b094dd653..bf36a63d15 100644 --- a/src/backend/tcop/pquery.c +++ b/src/backend/tcop/pquery.c @@ -508,7 +508,8 @@ PortalStart(Portal portal, ParamListInfo params, Snapshot snapshot) PG_TRY(); { ActivePortal = portal; - CurrentResourceOwner = portal->resowner; + if (portal->resowner) + CurrentResourceOwner = portal->resowner; PortalContext = PortalGetHeapMemory(portal); oldContext = MemoryContextSwitchTo(PortalGetHeapMemory(portal)); @@ -638,7 +639,7 @@ PortalStart(Portal portal, ParamListInfo params, Snapshot snapshot) PG_CATCH(); { /* Uncaught error while executing portal: mark it dead */ - portal->status = PORTAL_FAILED; + MarkPortalFailed(portal); /* Restore global vars and propagate error */ ActivePortal = saveActivePortal; @@ -791,7 +792,8 @@ PortalRun(Portal portal, long count, bool isTopLevel, PG_TRY(); { ActivePortal = portal; - CurrentResourceOwner = portal->resowner; + if (portal->resowner) + CurrentResourceOwner = portal->resowner; PortalContext = PortalGetHeapMemory(portal); MemoryContextSwitchTo(PortalContext); @@ -860,7 +862,7 @@ PortalRun(Portal portal, long count, bool isTopLevel, PG_CATCH(); { /* Uncaught error while executing portal: mark it dead */ - portal->status = PORTAL_FAILED; + MarkPortalFailed(portal); /* Restore global vars and propagate error */ if (saveMemoryContext == saveTopTransactionContext) @@ -1466,7 +1468,8 @@ PortalRunFetch(Portal portal, PG_TRY(); { ActivePortal = portal; - CurrentResourceOwner = portal->resowner; + if (portal->resowner) + CurrentResourceOwner = portal->resowner; PortalContext = PortalGetHeapMemory(portal); oldContext = MemoryContextSwitchTo(PortalContext); @@ -1503,7 +1506,7 @@ PortalRunFetch(Portal portal, PG_CATCH(); { /* Uncaught error while executing portal: mark it dead */ - portal->status = PORTAL_FAILED; + MarkPortalFailed(portal); /* Restore global vars and propagate error */ ActivePortal = saveActivePortal; diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index 8ec12de77c..0ef80b34f3 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -7,7 +7,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -55,11 +55,13 @@ #include "rewrite/rewriteDefine.h" #include "rewrite/rewriteRemove.h" #include "storage/fd.h" +#include "storage/lmgr.h" #include "tcop/pquery.h" #include "tcop/utility.h" #include "utils/acl.h" #include "utils/guc.h" #include "utils/syscache.h" +#include "utils/lsyscache.h" #ifdef PGXC #include "pgxc/barrier.h" @@ -99,19 +101,17 @@ ProcessUtility_hook_type ProcessUtility_hook = NULL; * except when allowSystemTableMods is true. */ void -CheckRelationOwnership(RangeVar *rel, bool noCatalogs) +CheckRelationOwnership(Oid relOid, bool noCatalogs) { - Oid relOid; HeapTuple tuple; - relOid = RangeVarGetRelid(rel, false); tuple = SearchSysCache1(RELOID, ObjectIdGetDatum(relOid)); if (!HeapTupleIsValid(tuple)) /* should not happen */ elog(ERROR, "cache lookup failed for relation %u", relOid); if (!pg_class_ownercheck(relOid, GetUserId())) aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_CLASS, - rel->relname); + get_rel_name(relOid)); if (noCatalogs) { @@ -120,7 +120,7 @@ CheckRelationOwnership(RangeVar *rel, bool noCatalogs) ereport(ERROR, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), errmsg("permission denied: \"%s\" is a system catalog", - rel->relname))); + get_rel_name(relOid)))); } ReleaseSysCache(tuple); @@ -463,7 +463,7 @@ standard_ProcessUtility(Node *parsetree, case TRANS_STMT_COMMIT_PREPARED: PreventTransactionChain(isTopLevel, "COMMIT PREPARED"); PreventCommandDuringRecovery("COMMIT PREPARED"); -#ifdef PGXC +#ifdef PGXC /* * Commit a transaction which was explicitely prepared * before @@ -481,7 +481,7 @@ standard_ProcessUtility(Node *parsetree, case TRANS_STMT_ROLLBACK_PREPARED: PreventTransactionChain(isTopLevel, "ROLLBACK PREPARED"); PreventCommandDuringRecovery("ROLLBACK PREPARED"); -#ifdef PGXC +#ifdef PGXC /* * Abort a transaction which was explicitely prepared * before @@ -761,14 +761,26 @@ standard_ProcessUtility(Node *parsetree, case T_CreateExtensionStmt: CreateExtension((CreateExtensionStmt *) parsetree); +#ifdef PGXC + if (IS_PGXC_COORDINATOR) + ExecUtilityStmtOnNodes(queryString, NULL, sentToRemote, false, EXEC_ON_ALL_NODES, false); +#endif break; case T_AlterExtensionStmt: ExecAlterExtensionStmt((AlterExtensionStmt *) parsetree); +#ifdef PGXC + if (IS_PGXC_COORDINATOR) + ExecUtilityStmtOnNodes(queryString, NULL, sentToRemote, false, EXEC_ON_ALL_NODES, false); +#endif break; case T_AlterExtensionContentsStmt: ExecAlterExtensionContentsStmt((AlterExtensionContentsStmt *) parsetree); +#ifdef PGXC + if (IS_PGXC_COORDINATOR) + ExecUtilityStmtOnNodes(queryString, NULL, sentToRemote, false, EXEC_ON_ALL_NODES, false); +#endif break; case T_CreateFdwStmt: @@ -1117,9 +1129,23 @@ standard_ProcessUtility(Node *parsetree, { List *stmts; ListCell *l; + AlterTableStmt *atstmt = (AlterTableStmt *) parsetree; + Oid relid; + LOCKMODE lockmode; + + /* + * Look up the relation OID just once, right here at the + * beginning, so that we don't end up repeating the name + * lookup later and latching onto a different relation + * partway through. + */ + lockmode = AlterTableGetLockLevel(atstmt->cmds); + relid = RangeVarGetRelid(atstmt->relation, false); + LockRelationOid(relid, lockmode); /* Run parse analysis ... */ - stmts = transformAlterTableStmt((AlterTableStmt *) parsetree, + stmts = transformAlterTableStmt(relid, + atstmt, queryString); #ifdef PGXC /* @@ -1147,7 +1173,7 @@ standard_ProcessUtility(Node *parsetree, if (IsA(stmt, AlterTableStmt)) { /* Do the table alteration proper */ - AlterTable((AlterTableStmt *) stmt); + AlterTable(relid, (AlterTableStmt *) stmt); } else { @@ -1400,9 +1426,10 @@ standard_ProcessUtility(Node *parsetree, case T_IndexStmt: /* CREATE INDEX */ { IndexStmt *stmt = (IndexStmt *) parsetree; + Oid relid; + LOCKMODE lockmode; #ifdef PGXC - Oid relid; bool is_temp = false; RemoteQueryExecType exec_type = EXEC_ON_ALL_NODES; @@ -1425,13 +1452,26 @@ standard_ProcessUtility(Node *parsetree, PreventTransactionChain(isTopLevel, "CREATE INDEX CONCURRENTLY"); - CheckRelationOwnership(stmt->relation, true); + /* + * Look up the relation OID just once, right here at the + * beginning, so that we don't end up repeating the name + * lookup later and latching onto a different relation + * partway through. To avoid lock upgrade hazards, it's + * important that we take the strongest lock that will + * eventually be needed here, so the lockmode calculation + * needs to match what DefineIndex() does. + */ + lockmode = stmt->concurrent ? ShareUpdateExclusiveLock + : ShareLock; + relid = RangeVarGetRelid(stmt->relation, false); + LockRelationOid(relid, lockmode); + CheckRelationOwnership(relid, true); /* Run parse analysis ... */ - stmt = transformIndexStmt(stmt, queryString); + stmt = transformIndexStmt(relid, stmt, queryString); /* ... and do it */ - DefineIndex(stmt->relation, /* relation */ + DefineIndex(relid, /* relation */ stmt->idxname, /* index name */ InvalidOid, /* no predefined OID */ stmt->accessMethod, /* am name */ @@ -1560,8 +1600,17 @@ standard_ProcessUtility(Node *parsetree, case T_AlterDatabaseStmt: AlterDatabase((AlterDatabaseStmt *) parsetree, isTopLevel); #ifdef PGXC + /* + * If the query uses SET TABLESPACE, enforce autocommit as it + * cannot run inside a transaction block. + */ if (IS_PGXC_COORDINATOR) - ExecUtilityStmtOnNodes(queryString, NULL, sentToRemote, false, EXEC_ON_ALL_NODES, false); + ExecUtilityStmtOnNodes(queryString, + NULL, + sentToRemote, + IsSetTableSpace((AlterDatabaseStmt *) parsetree) ? true : false, + EXEC_ON_ALL_NODES, + false); #endif break; @@ -1658,18 +1707,22 @@ standard_ProcessUtility(Node *parsetree, break; case T_VacuumStmt: - /* we choose to allow this during "read only" transactions */ - PreventCommandDuringRecovery("VACUUM"); + { + VacuumStmt *stmt = (VacuumStmt *) parsetree; + + /* we choose to allow this during "read only" transactions */ + PreventCommandDuringRecovery((stmt->options & VACOPT_VACUUM) ? + "VACUUM" : "ANALYZE"); #ifdef PGXC - /* - * We have to run the command on nodes before coordinator because - * vacuum() pops active snapshot and we can not send it to nodes - */ - if (IS_PGXC_COORDINATOR) - ExecUtilityStmtOnNodes(queryString, NULL, sentToRemote, true, EXEC_ON_DATANODES, false); + /* + * We have to run the command on nodes before Coordinator because + * vacuum() pops active snapshot and we can not send it to nodes + */ + if (IS_PGXC_COORDINATOR) + ExecUtilityStmtOnNodes(queryString, NULL, sentToRemote, true, EXEC_ON_DATANODES, false); #endif - vacuum((VacuumStmt *) parsetree, InvalidOid, true, NULL, false, - isTopLevel); + vacuum(stmt, InvalidOid, true, NULL, false, isTopLevel); + } break; case T_ExplainStmt: @@ -1729,7 +1782,8 @@ standard_ProcessUtility(Node *parsetree, case T_CreateTrigStmt: (void) CreateTrigger((CreateTrigStmt *) parsetree, queryString, - InvalidOid, InvalidOid, false); + InvalidOid, InvalidOid, InvalidOid, + InvalidOid, false); #ifdef PGXC /* Postgres-XC does not support yet triggers */ ereport(ERROR, @@ -1935,16 +1989,10 @@ standard_ProcessUtility(Node *parsetree, case T_CreateGroupStmt: PgxcGroupCreate((CreateGroupStmt *) parsetree); - - if (IS_PGXC_COORDINATOR) - ExecUtilityStmtOnNodes(queryString, NULL, sentToRemote, true, EXEC_ON_ALL_NODES, false); break; case T_DropGroupStmt: PgxcGroupRemove((DropGroupStmt *) parsetree); - - if (IS_PGXC_COORDINATOR) - ExecUtilityStmtOnNodes(queryString, NULL, sentToRemote, true, EXEC_ON_ALL_NODES, false); break; #endif @@ -2072,7 +2120,7 @@ standard_ProcessUtility(Node *parsetree, case T_RemoteQuery: Assert(IS_PGXC_COORDINATOR); /* - * Do not launch query on Other Datanodes if remote connection is a coordinator one + * Do not launch query on Other Datanodes if remote connection is a Coordinator one * it will cause a deadlock in the cluster at Datanode levels. */ if (!IsConnFromCoord()) @@ -3775,8 +3823,8 @@ GetNodesForCommentUtility(CommentStmt *stmt, bool *is_temp) /* * GetNodesForRulesUtility * Get the nodes to execute this RULE related utility statement. - * A rule is expanded on coordinator itself, and does not need any - * existence on datanode. In fact, if it were to exist on datanode, + * A rule is expanded on Coordinator itself, and does not need any + * existence on Datanode. In fact, if it were to exist on Datanode, * there is a possibility that it would expand again */ static RemoteQueryExecType diff --git a/src/backend/tsearch/dict_ispell.c b/src/backend/tsearch/dict_ispell.c index 31929c00ac..a7f13b2a94 100644 --- a/src/backend/tsearch/dict_ispell.c +++ b/src/backend/tsearch/dict_ispell.c @@ -128,20 +128,19 @@ dispell_lexize(PG_FUNCTION_ARGS) if (res == NULL) PG_RETURN_POINTER(NULL); - ptr = cptr = res; - while (ptr->lexeme) + cptr = res; + for (ptr = cptr; ptr->lexeme; ptr++) { if (searchstoplist(&(d->stoplist), ptr->lexeme)) { pfree(ptr->lexeme); ptr->lexeme = NULL; - ptr++; } else { - memcpy(cptr, ptr, sizeof(TSLexeme)); + if (cptr != ptr) + memcpy(cptr, ptr, sizeof(TSLexeme)); cptr++; - ptr++; } } cptr->lexeme = NULL; diff --git a/src/backend/tsearch/spell.c b/src/backend/tsearch/spell.c index be1663cd88..a8cbb20157 100644 --- a/src/backend/tsearch/spell.c +++ b/src/backend/tsearch/spell.c @@ -255,7 +255,7 @@ NIAddSpell(IspellDict *Conf, const char *word, const char *flag) } Conf->Spell[Conf->nspell] = (SPELL *) tmpalloc(SPELLHDRSZ + strlen(word) + 1); strcpy(Conf->Spell[Conf->nspell]->word, word); - strncpy(Conf->Spell[Conf->nspell]->p.flag, flag, MAXFLAGLEN); + strlcpy(Conf->Spell[Conf->nspell]->p.flag, flag, MAXFLAGLEN); Conf->nspell++; } diff --git a/src/backend/tsearch/to_tsany.c b/src/backend/tsearch/to_tsany.c index 5284c9c714..8163098200 100644 --- a/src/backend/tsearch/to_tsany.c +++ b/src/backend/tsearch/to_tsany.c @@ -342,6 +342,7 @@ to_tsquery_byid(PG_FUNCTION_ARGS) if (query->size == 0) PG_RETURN_TSQUERY(query); + /* clean out any stopword placeholders from the tree */ res = clean_fakeval(GETQUERY(query), &len); if (!res) { @@ -351,6 +352,10 @@ to_tsquery_byid(PG_FUNCTION_ARGS) } memcpy((void *) GETQUERY(query), (void *) res, len * sizeof(QueryItem)); + /* + * Removing the stopword placeholders might've resulted in fewer + * QueryItems. If so, move the operands up accordingly. + */ if (len != query->size) { char *oldoperand = GETOPERAND(query); @@ -359,7 +364,7 @@ to_tsquery_byid(PG_FUNCTION_ARGS) Assert(len < query->size); query->size = len; - memcpy((void *) GETOPERAND(query), oldoperand, VARSIZE(query) - (oldoperand - (char *) query)); + memmove((void *) GETOPERAND(query), oldoperand, VARSIZE(query) - (oldoperand - (char *) query)); SET_VARSIZE(query, COMPUTESIZE(len, lenoperand)); } @@ -393,6 +398,7 @@ plainto_tsquery_byid(PG_FUNCTION_ARGS) if (query->size == 0) PG_RETURN_TSQUERY(query); + /* clean out any stopword placeholders from the tree */ res = clean_fakeval(GETQUERY(query), &len); if (!res) { @@ -402,6 +408,10 @@ plainto_tsquery_byid(PG_FUNCTION_ARGS) } memcpy((void *) GETQUERY(query), (void *) res, len * sizeof(QueryItem)); + /* + * Removing the stopword placeholders might've resulted in fewer + * QueryItems. If so, move the operands up accordingly. + */ if (len != query->size) { char *oldoperand = GETOPERAND(query); @@ -410,7 +420,7 @@ plainto_tsquery_byid(PG_FUNCTION_ARGS) Assert(len < query->size); query->size = len; - memcpy((void *) GETOPERAND(query), oldoperand, lenoperand); + memmove((void *) GETOPERAND(query), oldoperand, lenoperand); SET_VARSIZE(query, COMPUTESIZE(len, lenoperand)); } diff --git a/src/backend/tsearch/ts_selfuncs.c b/src/backend/tsearch/ts_selfuncs.c index 366fa2ebf4..79dff51944 100644 --- a/src/backend/tsearch/ts_selfuncs.c +++ b/src/backend/tsearch/ts_selfuncs.c @@ -299,23 +299,29 @@ tsquery_opr_selec(QueryItem *item, char *operand, { /* Prefix match, ie the query item is lexeme:* */ Selectivity matched, - allmcvs; - int i; + allmces; + int i, + n_matched; /* - * Our strategy is to scan through the MCV list and add up the - * frequencies of the ones that match the prefix, thereby assuming - * that the MCVs are representative of the whole lexeme population - * in this respect. Compare histogram_selectivity(). + * Our strategy is to scan through the MCELEM list and combine the + * frequencies of the ones that match the prefix. We then + * extrapolate the fraction of matching MCELEMs to the remaining + * rows, assuming that the MCELEMs are representative of the whole + * lexeme population in this respect. (Compare + * histogram_selectivity().) Note that these are most common + * elements not most common values, so they're not mutually + * exclusive. We treat occurrences as independent events. * * This is only a good plan if we have a pretty fair number of - * MCVs available; we set the threshold at 100. If no stats or + * MCELEMs available; we set the threshold at 100. If no stats or * insufficient stats, arbitrarily use DEFAULT_TS_MATCH_SEL*4. */ if (lookup == NULL || length < 100) return (Selectivity) (DEFAULT_TS_MATCH_SEL * 4); - matched = allmcvs = 0; + matched = allmces = 0; + n_matched = 0; for (i = 0; i < length; i++) { TextFreq *t = lookup + i; @@ -324,20 +330,26 @@ tsquery_opr_selec(QueryItem *item, char *operand, if (tlen >= key.length && strncmp(key.lexeme, VARDATA_ANY(t->element), key.length) == 0) - matched += t->frequency; - allmcvs += t->frequency; + { + matched += t->frequency - matched * t->frequency; + n_matched++; + } + allmces += t->frequency - allmces * t->frequency; } - if (allmcvs > 0) /* paranoia about zero divide */ - selec = matched / allmcvs; - else - selec = (Selectivity) (DEFAULT_TS_MATCH_SEL * 4); + /* Clamp to ensure sanity in the face of roundoff error */ + CLAMP_PROBABILITY(matched); + CLAMP_PROBABILITY(allmces); + + selec = matched + (1.0 - allmces) * ((double) n_matched / length); /* * In any case, never believe that a prefix match has selectivity - * less than DEFAULT_TS_MATCH_SEL. + * less than we would assign for a non-MCELEM lexeme. This + * preserves the property that "word:*" should be estimated to + * match at least as many rows as "word" would be. */ - selec = Max(DEFAULT_TS_MATCH_SEL, selec); + selec = Max(Min(DEFAULT_TS_MATCH_SEL, minfreq / 2), selec); } else { diff --git a/src/backend/tsearch/wparser_def.c b/src/backend/tsearch/wparser_def.c index 7ba3314588..f66851426b 100644 --- a/src/backend/tsearch/wparser_def.c +++ b/src/backend/tsearch/wparser_def.c @@ -432,7 +432,7 @@ TParserCopyClose(TParser *prs) * or give wrong result. * - multibyte encoding and C-locale often are used for * Asian languages. - * - if locale is C the we use pgwstr instead of wstr + * - if locale is C then we use pgwstr instead of wstr. */ #ifdef USE_WIDE_UPPER_LOWER @@ -444,9 +444,13 @@ p_is##type(TParser *prs) { \ if ( prs->usewide ) \ { \ if ( prs->pgwstr ) \ - return is##type( 0xff & *( prs->pgwstr + prs->state->poschar) );\ - \ - return isw##type( *(wint_t*)( prs->wstr + prs->state->poschar ) ); \ + { \ + unsigned int c = *(prs->pgwstr + prs->state->poschar); \ + if ( c > 0x7f ) \ + return 0; \ + return is##type( c ); \ + } \ + return isw##type( *( prs->wstr + prs->state->poschar ) ); \ } \ \ return is##type( *(unsigned char*)( prs->str + prs->state->posbyte ) ); \ @@ -475,10 +479,10 @@ p_isalnum(TParser *prs) if (c > 0x7f) return 1; - return isalnum(0xff & c); + return isalnum(c); } - return iswalnum((wint_t) *(prs->wstr + prs->state->poschar)); + return iswalnum(*(prs->wstr + prs->state->poschar)); } return isalnum(*(unsigned char *) (prs->str + prs->state->posbyte)); @@ -507,10 +511,10 @@ p_isalpha(TParser *prs) if (c > 0x7f) return 1; - return isalpha(0xff & c); + return isalpha(c); } - return iswalpha((wint_t) *(prs->wstr + prs->state->poschar)); + return iswalpha(*(prs->wstr + prs->state->poschar)); } return isalpha(*(unsigned char *) (prs->str + prs->state->posbyte)); diff --git a/src/backend/utils/adt/acl.c b/src/backend/utils/adt/acl.c index 4a3e241c41..7c4eaaca8a 100644 --- a/src/backend/utils/adt/acl.c +++ b/src/backend/utils/adt/acl.c @@ -1165,11 +1165,11 @@ recursive_revoke(Acl *acl, if (grantee == ownerId) return acl; - /* The grantee might still have the privileges via another grantor */ + /* The grantee might still have some grant options via another grantor */ still_has = aclmask(acl, grantee, ownerId, ACL_GRANT_OPTION_FOR(revoke_privs), ACLMASK_ALL); - revoke_privs &= ~still_has; + revoke_privs &= ~ACL_OPTION_TO_PRIVS(still_has); if (revoke_privs == ACL_NO_RIGHTS) return acl; @@ -4314,6 +4314,11 @@ pg_role_aclcheck(Oid role_oid, Oid roleid, AclMode mode) { if (mode & ACL_GRANT_OPTION_FOR(ACL_CREATE)) { + /* + * XXX For roleid == role_oid, is_admin_of_role() also examines the + * session and call stack. That suits two-argument pg_has_role(), but + * it gives the three-argument version a lamentable whimsy. + */ if (is_admin_of_role(roleid, role_oid)) return ACLCHECK_OK; } @@ -4631,11 +4636,9 @@ is_member_of_role_nosuper(Oid member, Oid role) /* - * Is member an admin of role (directly or indirectly)? That is, is it - * a member WITH ADMIN OPTION? - * - * We could cache the result as for is_member_of_role, but currently this - * is not used in any performance-critical paths, so we don't. + * Is member an admin of role? That is, is member the role itself (subject to + * restrictions below), a member (directly or indirectly) WITH ADMIN OPTION, + * or a superuser? */ bool is_admin_of_role(Oid member, Oid role) @@ -4644,14 +4647,41 @@ is_admin_of_role(Oid member, Oid role) List *roles_list; ListCell *l; - /* Fast path for simple case */ - if (member == role) - return true; - - /* Superusers have every privilege, so are part of every role */ if (superuser_arg(member)) return true; + if (member == role) + /* + * A role can admin itself when it matches the session user and we're + * outside any security-restricted operation, SECURITY DEFINER or + * similar context. SQL-standard roles cannot self-admin. However, + * SQL-standard users are distinct from roles, and they are not + * grantable like roles: PostgreSQL's role-user duality extends the + * standard. Checking for a session user match has the effect of + * letting a role self-admin only when it's conspicuously behaving + * like a user. Note that allowing self-admin under a mere SET ROLE + * would make WITH ADMIN OPTION largely irrelevant; any member could + * SET ROLE to issue the otherwise-forbidden command. + * + * Withholding self-admin in a security-restricted operation prevents + * object owners from harnessing the session user identity during + * administrative maintenance. Suppose Alice owns a database, has + * issued "GRANT alice TO bob", and runs a daily ANALYZE. Bob creates + * an alice-owned SECURITY DEFINER function that issues "REVOKE alice + * FROM carol". If he creates an expression index calling that + * function, Alice will attempt the REVOKE during each ANALYZE. + * Checking InSecurityRestrictedOperation() thwarts that attack. + * + * Withholding self-admin in SECURITY DEFINER functions makes their + * behavior independent of the calling user. There's no security or + * SQL-standard-conformance need for that restriction, though. + * + * A role cannot have actual WITH ADMIN OPTION on itself, because that + * would imply a membership loop. Therefore, we're done either way. + */ + return member == GetSessionUserId() && + !InLocalUserIdChange() && !InSecurityRestrictedOperation(); + /* * Find all the roles that member is a member of, including multi-level * recursion. We build a list in the same way that is_member_of_role does diff --git a/src/backend/utils/adt/cash.c b/src/backend/utils/adt/cash.c index faef6f8381..fde02ab317 100644 --- a/src/backend/utils/adt/cash.c +++ b/src/backend/utils/adt/cash.c @@ -30,12 +30,6 @@ #include "utils/numeric.h" #include "utils/pg_locale.h" -#define CASH_BUFSZ 36 - -#define TERMINATOR (CASH_BUFSZ - 1) -#define LAST_PAREN (TERMINATOR - 1) -#define LAST_DIGIT (LAST_PAREN - 1) - /************************************************************************* * Private routines @@ -107,13 +101,13 @@ cash_in(PG_FUNCTION_ARGS) Cash value = 0; Cash dec = 0; Cash sgn = 1; - int seen_dot = 0; + bool seen_dot = false; const char *s = str; int fpoint; - char dsymbol, - ssymbol, - psymbol; - const char *nsymbol, + char dsymbol; + const char *ssymbol, + *psymbol, + *nsymbol, *csymbol; struct lconv *lconvert = PGLC_localeconv(); @@ -131,18 +125,22 @@ cash_in(PG_FUNCTION_ARGS) if (fpoint < 0 || fpoint > 10) fpoint = 2; /* best guess in this case, I think */ - dsymbol = ((*lconvert->mon_decimal_point != '\0') ? *lconvert->mon_decimal_point : '.'); - if (*lconvert->mon_thousands_sep != '\0') - ssymbol = *lconvert->mon_thousands_sep; + /* we restrict dsymbol to be a single byte, but not the other symbols */ + if (*lconvert->mon_decimal_point != '\0' && + lconvert->mon_decimal_point[1] == '\0') + dsymbol = *lconvert->mon_decimal_point; else - /* ssymbol should not equal dsymbol */ - ssymbol = (dsymbol != ',') ? ',' : '.'; - csymbol = ((*lconvert->currency_symbol != '\0') ? lconvert->currency_symbol : "$"); - psymbol = ((*lconvert->positive_sign != '\0') ? *lconvert->positive_sign : '+'); - nsymbol = ((*lconvert->negative_sign != '\0') ? lconvert->negative_sign : "-"); + dsymbol = '.'; + if (*lconvert->mon_thousands_sep != '\0') + ssymbol = lconvert->mon_thousands_sep; + else /* ssymbol should not equal dsymbol */ + ssymbol = (dsymbol != ',') ? "," : "."; + csymbol = (*lconvert->currency_symbol != '\0') ? lconvert->currency_symbol : "$"; + psymbol = (*lconvert->positive_sign != '\0') ? lconvert->positive_sign : "+"; + nsymbol = (*lconvert->negative_sign != '\0') ? lconvert->negative_sign : "-"; #ifdef CASHDEBUG - printf("cashin- precision '%d'; decimal '%c'; thousands '%c'; currency '%s'; positive '%c'; negative '%s'\n", + printf("cashin- precision '%d'; decimal '%c'; thousands '%s'; currency '%s'; positive '%s'; negative '%s'\n", fpoint, dsymbol, ssymbol, csymbol, psymbol, nsymbol); #endif @@ -164,22 +162,20 @@ cash_in(PG_FUNCTION_ARGS) { sgn = -1; s += strlen(nsymbol); -#ifdef CASHDEBUG - printf("cashin- negative symbol; string is '%s'\n", s); -#endif } else if (*s == '(') { sgn = -1; s++; } - else if (*s == psymbol) - s++; + else if (strncmp(s, psymbol, strlen(psymbol)) == 0) + s += strlen(psymbol); #ifdef CASHDEBUG printf("cashin- string is '%s'\n", s); #endif + /* allow whitespace and currency symbol after the sign, too */ while (isspace((unsigned char) *s)) s++; if (strncmp(s, csymbol, strlen(csymbol)) == 0) @@ -189,7 +185,7 @@ cash_in(PG_FUNCTION_ARGS) printf("cashin- string is '%s'\n", s); #endif - for (;; s++) + for (; *s; s++) { /* we look for digits as long as we have found less */ /* than the required number of decimal places */ @@ -203,33 +199,44 @@ cash_in(PG_FUNCTION_ARGS) /* decimal point? then start counting fractions... */ else if (*s == dsymbol && !seen_dot) { - seen_dot = 1; + seen_dot = true; } /* ignore if "thousands" separator, else we're done */ - else if (*s != ssymbol) - { - /* round off */ - if (isdigit((unsigned char) *s) && *s >= '5') - value++; - - /* adjust for less than required decimal places */ - for (; dec < fpoint; dec++) - value *= 10; - + else if (strncmp(s, ssymbol, strlen(ssymbol)) == 0) + s += strlen(ssymbol) - 1; + else break; - } } - /* should only be trailing digits followed by whitespace or right paren */ + /* round off if there's another digit */ + if (isdigit((unsigned char) *s) && *s >= '5') + value++; + + /* adjust for less than required decimal places */ + for (; dec < fpoint; dec++) + value *= 10; + + /* + * should only be trailing digits followed by whitespace, right paren, + * or possibly a trailing minus sign + */ while (isdigit((unsigned char) *s)) s++; - while (isspace((unsigned char) *s) || *s == ')') - s++; - - if (*s != '\0') - ereport(ERROR, - (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), - errmsg("invalid input syntax for type money: \"%s\"", str))); + while (*s) + { + if (isspace((unsigned char) *s) || *s == ')') + s++; + else if (strncmp(s, nsymbol, strlen(nsymbol)) == 0) + { + sgn = -1; + s += strlen(nsymbol); + } + else + ereport(ERROR, + (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), + errmsg("invalid input syntax for type money: \"%s\"", + str))); + } result = value * sgn; @@ -242,26 +249,24 @@ cash_in(PG_FUNCTION_ARGS) /* cash_out() - * Function to convert cash to a dollars and cents representation. - * XXX HACK This code appears to assume US conventions for - * positive-valued amounts. - tgl 97/04/14 + * Function to convert cash to a dollars and cents representation, using + * the lc_monetary locale's formatting. */ Datum cash_out(PG_FUNCTION_ARGS) { Cash value = PG_GETARG_CASH(0); char *result; - char buf[CASH_BUFSZ]; - int minus = 0; - int count = LAST_DIGIT; - int point_pos; - int ssymbol_position = 0; + char buf[128]; + char *bufptr; + bool minus = false; + int digit_pos; int points, mon_group; - char ssymbol; - const char *csymbol, - *nsymbol; char dsymbol; + const char *ssymbol, + *csymbol, + *nsymbol; char convention; struct lconv *lconvert = PGLC_localeconv(); @@ -279,69 +284,78 @@ cash_out(PG_FUNCTION_ARGS) mon_group = 3; convention = lconvert->n_sign_posn; - dsymbol = ((*lconvert->mon_decimal_point != '\0') ? *lconvert->mon_decimal_point : '.'); - if (*lconvert->mon_thousands_sep != '\0') - ssymbol = *lconvert->mon_thousands_sep; - else - /* ssymbol should not equal dsymbol */ - ssymbol = (dsymbol != ',') ? ',' : '.'; - csymbol = ((*lconvert->currency_symbol != '\0') ? lconvert->currency_symbol : "$"); - nsymbol = ((*lconvert->negative_sign != '\0') ? lconvert->negative_sign : "-"); - - point_pos = LAST_DIGIT - points; - point_pos -= (points - 1) / mon_group; - ssymbol_position = point_pos % (mon_group + 1); + /* we restrict dsymbol to be a single byte, but not the other symbols */ + if (*lconvert->mon_decimal_point != '\0' && + lconvert->mon_decimal_point[1] == '\0') + dsymbol = *lconvert->mon_decimal_point; + else + dsymbol = '.'; + if (*lconvert->mon_thousands_sep != '\0') + ssymbol = lconvert->mon_thousands_sep; + else /* ssymbol should not equal dsymbol */ + ssymbol = (dsymbol != ',') ? "," : "."; + csymbol = (*lconvert->currency_symbol != '\0') ? lconvert->currency_symbol : "$"; + nsymbol = (*lconvert->negative_sign != '\0') ? lconvert->negative_sign : "-"; /* we work with positive amounts and add the minus sign at the end */ if (value < 0) { - minus = 1; + minus = true; value = -value; } - /* allow for trailing negative strings */ - MemSet(buf, ' ', CASH_BUFSZ); - buf[TERMINATOR] = buf[LAST_PAREN] = '\0'; + /* we build the result string right-to-left in buf[] */ + bufptr = buf + sizeof(buf) - 1; + *bufptr = '\0'; - while (value || count > (point_pos - 2)) + /* + * Generate digits till there are no non-zero digits left and we emitted + * at least one to the left of the decimal point. digit_pos is the + * current digit position, with zero as the digit just left of the decimal + * point, increasing to the right. + */ + digit_pos = points; + do { - if (points && count == point_pos) - buf[count--] = dsymbol; - else if (ssymbol && count % (mon_group + 1) == ssymbol_position) - buf[count--] = ssymbol; + if (points && digit_pos == 0) + { + /* insert decimal point */ + *(--bufptr) = dsymbol; + } + else if (digit_pos < points && (digit_pos % mon_group) == 0) + { + /* insert thousands sep */ + bufptr -= strlen(ssymbol); + memcpy(bufptr, ssymbol, strlen(ssymbol)); + } - buf[count--] = ((uint64) value % 10) + '0'; + *(--bufptr) = ((uint64) value % 10) + '0'; value = ((uint64) value) / 10; - } - - strncpy((buf + count - strlen(csymbol) + 1), csymbol, strlen(csymbol)); - count -= strlen(csymbol) - 1; + digit_pos--; + } while (value || digit_pos >= 0); - /* - * If points == 0 and the number of digits % mon_group == 0, the code - * above adds a trailing ssymbol on the far right, so remove it. - */ - if (buf[LAST_DIGIT] == ssymbol) - buf[LAST_DIGIT] = '\0'; + /* prepend csymbol */ + bufptr -= strlen(csymbol); + memcpy(bufptr, csymbol, strlen(csymbol)); /* see if we need to signify negative amount */ if (minus) { - result = palloc(CASH_BUFSZ + 2 - count + strlen(nsymbol)); + result = palloc(strlen(bufptr) + strlen(nsymbol) + 3); /* Position code of 0 means use parens */ if (convention == 0) - sprintf(result, "(%s)", buf + count); + sprintf(result, "(%s)", bufptr); else if (convention == 2) - sprintf(result, "%s%s", buf + count, nsymbol); + sprintf(result, "%s%s", bufptr, nsymbol); else - sprintf(result, "%s%s", nsymbol, buf + count); + sprintf(result, "%s%s", nsymbol, bufptr); } else { - result = palloc(CASH_BUFSZ + 2 - count); - strcpy(result, buf + count); + /* just emit what we have */ + result = pstrdup(bufptr); } PG_RETURN_CSTRING(result); diff --git a/src/backend/utils/adt/date.c b/src/backend/utils/adt/date.c index e737e720f5..51c6b6bacb 100644 --- a/src/backend/utils/adt/date.c +++ b/src/backend/utils/adt/date.c @@ -1924,9 +1924,8 @@ timetz_recv(PG_FUNCTION_ARGS) result->zone = pq_getmsgint(buf, sizeof(result->zone)); - /* we allow GMT displacements up to 14:59:59, cf DecodeTimezone() */ - if (result->zone <= -15 * SECS_PER_HOUR || - result->zone >= 15 * SECS_PER_HOUR) + /* Check for sane GMT displacement; see notes in utils/timestamp.h */ + if (result->zone <= -TZDISP_LIMIT || result->zone >= TZDISP_LIMIT) ereport(ERROR, (errcode(ERRCODE_INVALID_TIME_ZONE_DISPLACEMENT_VALUE), errmsg("time zone displacement out of range"))); diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c index 3d320ccdd5..05e1730c88 100644 --- a/src/backend/utils/adt/datetime.c +++ b/src/backend/utils/adt/datetime.c @@ -89,10 +89,10 @@ char *days[] = {"Sunday", "Monday", "Tuesday", "Wednesday", * Note that this table must be strictly alphabetically ordered to allow an * O(ln(N)) search algorithm to be used. * - * The text field is NOT guaranteed to be NULL-terminated. + * The token field is NOT guaranteed to be NULL-terminated. * - * To keep this table reasonably small, we divide the lexval for TZ and DTZ - * entries by 15 (so they are on 15 minute boundaries) and truncate the text + * 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 @@ -107,7 +107,7 @@ static datetkn *timezonetktbl = NULL; static int sztimezonetktbl = 0; static const datetkn datetktbl[] = { -/* text, token, lexval */ + /* token, type, value */ {EARLY, RESERV, DTK_EARLY}, /* "-infinity" reserved for "early time" */ {DA_D, ADBC, AD}, /* "ad" for years > 0 */ {"allballs", RESERV, DTK_ZULU}, /* 00:00:00 */ @@ -187,7 +187,7 @@ static const datetkn datetktbl[] = { static int szdatetktbl = sizeof datetktbl / sizeof datetktbl[0]; static datetkn deltatktbl[] = { - /* text, token, lexval */ + /* token, type, value */ {"@", IGNORE_DTF, 0}, /* postgres relative prefix */ {DAGO, AGO, 0}, /* "ago" indicates negative time offset */ {"c", UNITS, DTK_CENTURY}, /* "century" relative */ @@ -1447,12 +1447,6 @@ DetermineTimeZoneOffset(struct pg_tm * tm, pg_tz *tzp) after_isdst; int res; - if (tzp == session_timezone && HasCTZSet) - { - tm->tm_isdst = 0; /* for lack of a better idea */ - return CTimeZone; - } - /* * 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 @@ -2169,9 +2163,12 @@ DecodeDate(char *str, int fmask, int *tmask, bool *is2digits, while (*str != '\0' && nf < MAXDATEFIELDS) { /* skip field separators */ - while (!isalnum((unsigned char) *str)) + while (*str != '\0' && !isalnum((unsigned char) *str)) str++; + if (*str == '\0') + return DTERR_BAD_FORMAT; /* end of string after separator */ + field[nf] = str; if (isdigit((unsigned char) *str)) { @@ -2702,9 +2699,6 @@ DecodeNumberField(int len, char *str, int fmask, * Return 0 if okay (and set *tzp), a DTERR code if not okay. * * NB: this must *not* ereport on failure; see commands/variable.c. - * - * Note: we allow timezone offsets up to 13:59. There are places that - * use +1300 summer time. */ static int DecodeTimezone(char *str, int *tzp) @@ -2749,7 +2743,8 @@ DecodeTimezone(char *str, int *tzp) else min = 0; - if (hr < 0 || hr > 14) + /* Range-check the values; see notes in utils/timestamp.h */ + if (hr < 0 || hr > MAX_TZDISP_HOUR) return DTERR_TZDISP_OVERFLOW; if (min < 0 || min >= MINS_PER_HOUR) return DTERR_TZDISP_OVERFLOW; @@ -2879,19 +2874,18 @@ DecodeInterval(char **field, int *ftype, int nf, int range, case DTK_TZ: /* - * Timezone is a token with a leading sign character and at + * Timezone means a token with a leading sign character and at * least one digit; there could be ':', '.', '-' embedded in * it as well. */ Assert(*field[i] == '-' || *field[i] == '+'); /* - * Try for hh:mm or hh:mm:ss. If not, fall through to - * DTK_NUMBER case, which can handle signed float numbers and - * signed year-month values. + * Check for signed hh:mm or hh:mm:ss. If so, process exactly + * like DTK_TIME case above, plus handling the sign. */ if (strchr(field[i] + 1, ':') != NULL && - DecodeTime(field[i] + 1, fmask, INTERVAL_FULL_RANGE, + DecodeTime(field[i] + 1, fmask, range, &tmask, tm, fsec) == 0) { if (*field[i] == '-') @@ -2909,9 +2903,14 @@ DecodeInterval(char **field, int *ftype, int nf, int range, * are reading right to left. */ type = DTK_DAY; - tmask = DTK_M(TZ); break; } + + /* + * Otherwise, fall through to DTK_NUMBER case, which can + * handle signed float numbers and signed year-month values. + */ + /* FALL THROUGH */ case DTK_DATE: @@ -4162,6 +4161,7 @@ ConvertTimeZoneAbbrevs(TimeZoneAbbrevTable *tbl, tbl->numabbrevs = n; 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); diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c index 7a7d6e4c32..67f9ed3ddd 100644 --- a/src/backend/utils/adt/dbsize.c +++ b/src/backend/utils/adt/dbsize.c @@ -43,9 +43,9 @@ static int64 pgxc_exec_sizefunc(Oid relOid, char *funcname, char *extra_arg); /* * Below macro is important when the object size functions are called - * for system catalog tables. For pg_catalog tables and other coordinator-only - * tables, we should return the data from coordinator. If we don't find - * locator info, that means it is a coordinator-only table. + * for system catalog tables. For pg_catalog tables and other Coordinator-only + * tables, we should return the data from Coordinator. If we don't find + * locator info, that means it is a Coordinator-only table. */ #define COLLECT_FROM_DATANODES(relid) \ (IS_PGXC_COORDINATOR && !IsConnFromCoord() && \ @@ -297,6 +297,9 @@ pg_tablespace_size_name(PG_FUNCTION_ARGS) /* * calculate size of (one fork of) a relation + * + * Note: we can safely apply this to temp tables of other sessions, so there + * is no check here or at the call sites for that. */ static int64 calculate_relation_size(RelFileNode *rfn, BackendId backend, ForkNumber forknum) @@ -728,7 +731,7 @@ pg_relation_filepath(PG_FUNCTION_ARGS) /* * pgxc_tablespace_size - * Given a tablespace oid, return sum of pg_tablespace_size() executed on all the datanodes + * Given a tablespace oid, return sum of pg_tablespace_size() executed on all the Datanodes */ static Datum pgxc_tablespace_size(Oid tsOid) @@ -753,7 +756,7 @@ pgxc_tablespace_size(Oid tsOid) /* * pgxc_database_size - * Given a dboid, return sum of pg_database_size() executed on all the datanodes + * Given a dboid, return sum of pg_database_size() executed on all the Datanodes */ static Datum pgxc_database_size(Oid dbOid) @@ -807,7 +810,7 @@ pgxc_execute_on_nodes(int numnodes, Oid *nodelist, char *query) initStringInfo(&buf); - /* Get pg_***_size function results from all data nodes */ + /* Get pg_***_size function results from all Datanodes */ for (i = 0; i < numnodes; i++) { nodename = get_pgxc_nodename(nodelist[i]); @@ -849,7 +852,7 @@ pgxc_execute_on_nodes(int numnodes, Oid *nodelist, char *query) /* * pgxc_exec_sizefunc - * Execute the given object size system function on all the datanodes associated + * Execute the given object size system function on all the Datanodes associated * with relOid, and return the sum of all. * * Args: diff --git a/src/backend/utils/adt/enum.c b/src/backend/utils/adt/enum.c index 8f65c84d30..2e026c8009 100644 --- a/src/backend/utils/adt/enum.c +++ b/src/backend/utils/adt/enum.c @@ -17,6 +17,7 @@ #include "access/heapam.h" #include "catalog/indexing.h" #include "catalog/pg_enum.h" +#include "catalog/pg_type.h" #include "fmgr.h" #include "libpq/pqformat.h" #include "utils/array.h" @@ -104,6 +105,10 @@ enum_recv(PG_FUNCTION_ARGS) char *name; int nbytes; + /* guard against pre-9.3 misdeclaration of enum_recv */ + if (get_fn_expr_argtype(fcinfo->flinfo, 0) == CSTRINGOID) + elog(ERROR, "invalid argument for enum_recv"); + name = pq_getmsgtext(buf, buf->len - buf->cursor, &nbytes); /* must check length to prevent Assert failure within SearchSysCache */ diff --git a/src/backend/utils/adt/float.c b/src/backend/utils/adt/float.c index 771665b028..72d3d4fe73 100644 --- a/src/backend/utils/adt/float.c +++ b/src/backend/utils/adt/float.c @@ -175,11 +175,7 @@ is_infinite(double val) /* - * float4in - converts "num" to float - * restricted syntax: - * {} [+|-] {digit} [.{digit}] [] - * where is a space, digit is 0-9, - * is "e" or "E" followed by an integer. + * float4in - converts "num" to float4 */ Datum float4in(PG_FUNCTION_ARGS) @@ -196,6 +192,10 @@ float4in(PG_FUNCTION_ARGS) */ orig_num = num; + /* skip leading whitespace */ + while (*num != '\0' && isspace((unsigned char) *num)) + num++; + /* * Check for an empty-string input to begin with, to avoid the vagaries of * strtod() on different platforms. @@ -206,20 +206,23 @@ float4in(PG_FUNCTION_ARGS) errmsg("invalid input syntax for type real: \"%s\"", orig_num))); - /* skip leading whitespace */ - while (*num != '\0' && isspace((unsigned char) *num)) - num++; - errno = 0; val = strtod(num, &endptr); /* did we not see anything that looks like a double? */ if (endptr == num || errno != 0) { + int save_errno = errno; + /* - * C99 requires that strtod() accept NaN and [-]Infinity, but not all - * platforms support that yet (and some accept them but set ERANGE - * anyway...) Therefore, we check for these inputs ourselves. + * C99 requires that strtod() accept NaN, [+-]Infinity, and [+-]Inf, + * but not all platforms support all of these (and some accept them + * but set ERANGE anyway...) Therefore, we check for these inputs + * ourselves if strtod() fails. + * + * Note: C99 also requires hexadecimal input as well as some extended + * forms of NaN, but we consider these forms unportable and don't try + * to support them. You can use 'em if your strtod() takes 'em. */ if (pg_strncasecmp(num, "NaN", 3) == 0) { @@ -231,12 +234,32 @@ float4in(PG_FUNCTION_ARGS) val = get_float4_infinity(); endptr = num + 8; } + else if (pg_strncasecmp(num, "+Infinity", 9) == 0) + { + val = get_float4_infinity(); + endptr = num + 9; + } else if (pg_strncasecmp(num, "-Infinity", 9) == 0) { val = -get_float4_infinity(); endptr = num + 9; } - else if (errno == ERANGE) + else if (pg_strncasecmp(num, "inf", 3) == 0) + { + val = get_float4_infinity(); + endptr = num + 3; + } + else if (pg_strncasecmp(num, "+inf", 4) == 0) + { + val = get_float4_infinity(); + endptr = num + 4; + } + else if (pg_strncasecmp(num, "-inf", 4) == 0) + { + val = -get_float4_infinity(); + endptr = num + 4; + } + else if (save_errno == ERANGE) ereport(ERROR, (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), errmsg("\"%s\" is out of range for type real", @@ -274,6 +297,11 @@ float4in(PG_FUNCTION_ARGS) val = get_float4_infinity(); endptr = num + 8; } + else if (pg_strncasecmp(num, "+Infinity", 9) == 0) + { + val = get_float4_infinity(); + endptr = num + 9; + } else if (pg_strncasecmp(num, "-Infinity", 9) == 0) { val = -get_float4_infinity(); @@ -369,10 +397,6 @@ float4send(PG_FUNCTION_ARGS) /* * float8in - converts "num" to float8 - * restricted syntax: - * {} [+|-] {digit} [.{digit}] [] - * where is a space, digit is 0-9, - * is "e" or "E" followed by an integer. */ Datum float8in(PG_FUNCTION_ARGS) @@ -389,6 +413,10 @@ float8in(PG_FUNCTION_ARGS) */ orig_num = num; + /* skip leading whitespace */ + while (*num != '\0' && isspace((unsigned char) *num)) + num++; + /* * Check for an empty-string input to begin with, to avoid the vagaries of * strtod() on different platforms. @@ -399,20 +427,23 @@ float8in(PG_FUNCTION_ARGS) errmsg("invalid input syntax for type double precision: \"%s\"", orig_num))); - /* skip leading whitespace */ - while (*num != '\0' && isspace((unsigned char) *num)) - num++; - errno = 0; val = strtod(num, &endptr); /* did we not see anything that looks like a double? */ if (endptr == num || errno != 0) { + int save_errno = errno; + /* - * C99 requires that strtod() accept NaN and [-]Infinity, but not all - * platforms support that yet (and some accept them but set ERANGE - * anyway...) Therefore, we check for these inputs ourselves. + * C99 requires that strtod() accept NaN, [+-]Infinity, and [+-]Inf, + * but not all platforms support all of these (and some accept them + * but set ERANGE anyway...) Therefore, we check for these inputs + * ourselves if strtod() fails. + * + * Note: C99 also requires hexadecimal input as well as some extended + * forms of NaN, but we consider these forms unportable and don't try + * to support them. You can use 'em if your strtod() takes 'em. */ if (pg_strncasecmp(num, "NaN", 3) == 0) { @@ -424,12 +455,32 @@ float8in(PG_FUNCTION_ARGS) val = get_float8_infinity(); endptr = num + 8; } + else if (pg_strncasecmp(num, "+Infinity", 9) == 0) + { + val = get_float8_infinity(); + endptr = num + 9; + } else if (pg_strncasecmp(num, "-Infinity", 9) == 0) { val = -get_float8_infinity(); endptr = num + 9; } - else if (errno == ERANGE) + else if (pg_strncasecmp(num, "inf", 3) == 0) + { + val = get_float8_infinity(); + endptr = num + 3; + } + else if (pg_strncasecmp(num, "+inf", 4) == 0) + { + val = get_float8_infinity(); + endptr = num + 4; + } + else if (pg_strncasecmp(num, "-inf", 4) == 0) + { + val = -get_float8_infinity(); + endptr = num + 4; + } + else if (save_errno == ERANGE) ereport(ERROR, (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), errmsg("\"%s\" is out of range for type double precision", @@ -467,6 +518,11 @@ float8in(PG_FUNCTION_ARGS) val = get_float8_infinity(); endptr = num + 8; } + else if (pg_strncasecmp(num, "+Infinity", 9) == 0) + { + val = get_float8_infinity(); + endptr = num + 9; + } else if (pg_strncasecmp(num, "-Infinity", 9) == 0) { val = -get_float8_infinity(); diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c index 726a1f4552..6f267db025 100644 --- a/src/backend/utils/adt/formatting.c +++ b/src/backend/utils/adt/formatting.c @@ -1491,12 +1491,7 @@ str_tolower(const char *buff, size_t nbytes, Oid collid) /* C/POSIX collations use this path regardless of database encoding */ if (lc_ctype_is_c(collid)) { - char *p; - - result = pnstrdup(buff, nbytes); - - for (p = result; *p; p++) - *p = pg_ascii_tolower((unsigned char) *p); + result = asc_tolower(buff, nbytes); } #ifdef USE_WIDE_UPPER_LOWER else if (pg_database_encoding_max_length() > 1) @@ -1612,12 +1607,7 @@ str_toupper(const char *buff, size_t nbytes, Oid collid) /* C/POSIX collations use this path regardless of database encoding */ if (lc_ctype_is_c(collid)) { - char *p; - - result = pnstrdup(buff, nbytes); - - for (p = result; *p; p++) - *p = pg_ascii_toupper((unsigned char) *p); + result = asc_toupper(buff, nbytes); } #ifdef USE_WIDE_UPPER_LOWER else if (pg_database_encoding_max_length() > 1) @@ -1734,23 +1724,7 @@ str_initcap(const char *buff, size_t nbytes, Oid collid) /* C/POSIX collations use this path regardless of database encoding */ if (lc_ctype_is_c(collid)) { - char *p; - - result = pnstrdup(buff, nbytes); - - for (p = result; *p; p++) - { - char c; - - if (wasalnum) - *p = c = pg_ascii_tolower((unsigned char) *p); - else - *p = c = pg_ascii_toupper((unsigned char) *p); - /* we don't trust isalnum() here */ - wasalnum = ((c >= 'A' && c <= 'Z') || - (c >= 'a' && c <= 'z') || - (c >= '0' && c <= '9')); - } + result = asc_initcap(buff, nbytes); } #ifdef USE_WIDE_UPPER_LOWER else if (pg_database_encoding_max_length() > 1) @@ -1873,6 +1847,87 @@ str_initcap(const char *buff, size_t nbytes, Oid collid) return result; } +/* + * ASCII-only lower function + * + * We pass the number of bytes so we can pass varlena and char* + * to this function. The result is a palloc'd, null-terminated string. + */ +char * +asc_tolower(const char *buff, size_t nbytes) +{ + char *result; + char *p; + + if (!buff) + return NULL; + + result = pnstrdup(buff, nbytes); + + for (p = result; *p; p++) + *p = pg_ascii_tolower((unsigned char) *p); + + return result; +} + +/* + * ASCII-only upper function + * + * We pass the number of bytes so we can pass varlena and char* + * to this function. The result is a palloc'd, null-terminated string. + */ +char * +asc_toupper(const char *buff, size_t nbytes) +{ + char *result; + char *p; + + if (!buff) + return NULL; + + result = pnstrdup(buff, nbytes); + + for (p = result; *p; p++) + *p = pg_ascii_toupper((unsigned char) *p); + + return result; +} + +/* + * ASCII-only initcap function + * + * We pass the number of bytes so we can pass varlena and char* + * to this function. The result is a palloc'd, null-terminated string. + */ +char * +asc_initcap(const char *buff, size_t nbytes) +{ + char *result; + char *p; + int wasalnum = false; + + if (!buff) + return NULL; + + result = pnstrdup(buff, nbytes); + + for (p = result; *p; p++) + { + char c; + + if (wasalnum) + *p = c = pg_ascii_tolower((unsigned char) *p); + else + *p = c = pg_ascii_toupper((unsigned char) *p); + /* we don't trust isalnum() here */ + wasalnum = ((c >= 'A' && c <= 'Z') || + (c >= 'a' && c <= 'z') || + (c >= '0' && c <= '9')); + } + + return result; +} + /* convenience routines for when the input is null-terminated */ static char * @@ -1893,6 +1948,20 @@ str_initcap_z(const char *buff, Oid collid) return str_initcap(buff, strlen(buff), collid); } +static char * +asc_tolower_z(const char *buff) +{ + return asc_tolower(buff, strlen(buff)); +} + +static char * +asc_toupper_z(const char *buff) +{ + return asc_toupper(buff, strlen(buff)); +} + +/* asc_initcap_z is not currently needed */ + /* ---------- * Skip TM / th in FROM_CHAR @@ -2380,7 +2449,8 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col INVALID_FOR_INTERVAL; if (tmtcTzn(in)) { - char *p = str_tolower_z(tmtcTzn(in), collid); + /* We assume here that timezone names aren't localized */ + char *p = asc_tolower_z(tmtcTzn(in)); strcpy(s, p); pfree(p); @@ -2427,7 +2497,7 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col strcpy(s, str_toupper_z(localized_full_months[tm->tm_mon - 1], collid)); else sprintf(s, "%*s", S_FM(n->suffix) ? 0 : -9, - str_toupper_z(months_full[tm->tm_mon - 1], collid)); + asc_toupper_z(months_full[tm->tm_mon - 1])); s += strlen(s); break; case DCH_Month: @@ -2437,7 +2507,8 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col if (S_TM(n->suffix)) strcpy(s, str_initcap_z(localized_full_months[tm->tm_mon - 1], collid)); else - sprintf(s, "%*s", S_FM(n->suffix) ? 0 : -9, months_full[tm->tm_mon - 1]); + sprintf(s, "%*s", S_FM(n->suffix) ? 0 : -9, + months_full[tm->tm_mon - 1]); s += strlen(s); break; case DCH_month: @@ -2447,10 +2518,8 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col if (S_TM(n->suffix)) strcpy(s, str_tolower_z(localized_full_months[tm->tm_mon - 1], collid)); else - { - sprintf(s, "%*s", S_FM(n->suffix) ? 0 : -9, months_full[tm->tm_mon - 1]); - *s = pg_tolower((unsigned char) *s); - } + sprintf(s, "%*s", S_FM(n->suffix) ? 0 : -9, + asc_tolower_z(months_full[tm->tm_mon - 1])); s += strlen(s); break; case DCH_MON: @@ -2460,7 +2529,7 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col if (S_TM(n->suffix)) strcpy(s, str_toupper_z(localized_abbrev_months[tm->tm_mon - 1], collid)); else - strcpy(s, str_toupper_z(months[tm->tm_mon - 1], collid)); + strcpy(s, asc_toupper_z(months[tm->tm_mon - 1])); s += strlen(s); break; case DCH_Mon: @@ -2480,10 +2549,7 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col if (S_TM(n->suffix)) strcpy(s, str_tolower_z(localized_abbrev_months[tm->tm_mon - 1], collid)); else - { - strcpy(s, months[tm->tm_mon - 1]); - *s = pg_tolower((unsigned char) *s); - } + strcpy(s, asc_tolower_z(months[tm->tm_mon - 1])); s += strlen(s); break; case DCH_MM: @@ -2498,7 +2564,7 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col strcpy(s, str_toupper_z(localized_full_days[tm->tm_wday], collid)); else sprintf(s, "%*s", S_FM(n->suffix) ? 0 : -9, - str_toupper_z(days[tm->tm_wday], collid)); + asc_toupper_z(days[tm->tm_wday])); s += strlen(s); break; case DCH_Day: @@ -2506,7 +2572,8 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col if (S_TM(n->suffix)) strcpy(s, str_initcap_z(localized_full_days[tm->tm_wday], collid)); else - sprintf(s, "%*s", S_FM(n->suffix) ? 0 : -9, days[tm->tm_wday]); + sprintf(s, "%*s", S_FM(n->suffix) ? 0 : -9, + days[tm->tm_wday]); s += strlen(s); break; case DCH_day: @@ -2514,10 +2581,8 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col if (S_TM(n->suffix)) strcpy(s, str_tolower_z(localized_full_days[tm->tm_wday], collid)); else - { - sprintf(s, "%*s", S_FM(n->suffix) ? 0 : -9, days[tm->tm_wday]); - *s = pg_tolower((unsigned char) *s); - } + sprintf(s, "%*s", S_FM(n->suffix) ? 0 : -9, + asc_tolower_z(days[tm->tm_wday])); s += strlen(s); break; case DCH_DY: @@ -2525,7 +2590,7 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col if (S_TM(n->suffix)) strcpy(s, str_toupper_z(localized_abbrev_days[tm->tm_wday], collid)); else - strcpy(s, str_toupper_z(days_short[tm->tm_wday], collid)); + strcpy(s, asc_toupper_z(days_short[tm->tm_wday])); s += strlen(s); break; case DCH_Dy: @@ -2541,10 +2606,7 @@ DCH_to_char(FormatNode *node, bool is_interval, TmToChar *in, char *out, Oid col if (S_TM(n->suffix)) strcpy(s, str_tolower_z(localized_abbrev_days[tm->tm_wday], collid)); else - { - strcpy(s, days_short[tm->tm_wday]); - *s = pg_tolower((unsigned char) *s); - } + strcpy(s, asc_tolower_z(days_short[tm->tm_wday])); s += strlen(s); break; case DCH_DDD: @@ -3303,6 +3365,12 @@ to_date(PG_FUNCTION_ARGS) do_to_timestamp(date_txt, fmt, &tm, &fsec); + if (!IS_VALID_JULIAN(tm.tm_year, tm.tm_mon, tm.tm_mday)) + ereport(ERROR, + (errcode(ERRCODE_DATETIME_VALUE_OUT_OF_RANGE), + errmsg("date out of range: \"%s\"", + text_to_cstring(date_txt)))); + result = date2j(tm.tm_year, tm.tm_mon, tm.tm_mday) - POSTGRES_EPOCH_JDATE; PG_RETURN_DATEADT(result); @@ -3902,6 +3970,9 @@ NUM_prepare_locale(NUMProc *Np) /* ---------- * Return pointer of last relevant number after decimal point * 12.0500 --> last relevant is '5' + * 12.0000 --> last relevant is '.' + * If there is no decimal point, return NULL (which will result in same + * behavior as if FM hadn't been specified). * ---------- */ static char * @@ -3915,7 +3986,8 @@ get_last_relevant_decnum(char *num) #endif if (!p) - p = num; + return NULL; + result = p; while (*(++p)) @@ -4452,13 +4524,22 @@ NUM_processor(FormatNode *node, NUMDesc *Num, char *inout, char *number, { Np->num_pre = plen; - if (IS_FILLMODE(Np->Num)) + if (IS_FILLMODE(Np->Num) && IS_DECIMAL(Np->Num)) { - if (IS_DECIMAL(Np->Num)) - Np->last_relevant = get_last_relevant_decnum( - Np->number + - ((Np->Num->zero_end - Np->num_pre > 0) ? - Np->Num->zero_end - Np->num_pre : 0)); + Np->last_relevant = get_last_relevant_decnum(Np->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) + { + char *last_zero; + + last_zero = Np->number + (Np->Num->zero_end - Np->num_pre); + if (Np->last_relevant < last_zero) + Np->last_relevant = last_zero; + } } if (Np->sign_wrote == FALSE && Np->num_pre == 0) @@ -4632,12 +4713,12 @@ NUM_processor(FormatNode *node, NUMDesc *Num, char *inout, char *number, case NUM_rn: if (IS_FILLMODE(Np->Num)) { - strcpy(Np->inout_p, str_tolower_z(Np->number_p, collid)); + strcpy(Np->inout_p, asc_tolower_z(Np->number_p)); Np->inout_p += strlen(Np->inout_p) - 1; } else { - sprintf(Np->inout_p, "%15s", str_tolower_z(Np->number_p, collid)); + sprintf(Np->inout_p, "%15s", asc_tolower_z(Np->number_p)); Np->inout_p += strlen(Np->inout_p) - 1; } break; diff --git a/src/backend/utils/adt/geo_ops.c b/src/backend/utils/adt/geo_ops.c index 2cf2f64411..ca03947bc8 100644 --- a/src/backend/utils/adt/geo_ops.c +++ b/src/backend/utils/adt/geo_ops.c @@ -1403,6 +1403,7 @@ path_in(PG_FUNCTION_ARGS) char *s; int npts; int size; + int base_size; int depth = 0; if ((npts = pair_count(str, ',')) <= 0) @@ -1421,7 +1422,15 @@ path_in(PG_FUNCTION_ARGS) depth++; } - size = offsetof(PATH, p[0]) +sizeof(path->p[0]) * npts; + base_size = sizeof(path->p[0]) * npts; + size = offsetof(PATH, p[0]) + base_size; + + /* Check for integer overflow */ + if (base_size / npts != sizeof(path->p[0]) || size <= base_size) + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("too many points requested"))); + path = (PATH *) palloc(size); SET_VARSIZE(path, size); @@ -3465,6 +3474,7 @@ poly_in(PG_FUNCTION_ARGS) POLYGON *poly; int npts; int size; + int base_size; int isopen; char *s; @@ -3473,7 +3483,15 @@ poly_in(PG_FUNCTION_ARGS) (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), errmsg("invalid input syntax for type polygon: \"%s\"", str))); - size = offsetof(POLYGON, p[0]) +sizeof(poly->p[0]) * npts; + base_size = sizeof(poly->p[0]) * npts; + size = offsetof(POLYGON, p[0]) + base_size; + + /* Check for integer overflow */ + if (base_size / npts != sizeof(poly->p[0]) || size <= base_size) + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("too many points requested"))); + poly = (POLYGON *) palloc0(size); /* zero any holes */ SET_VARSIZE(poly, size); @@ -4379,6 +4397,10 @@ path_poly(PG_FUNCTION_ARGS) (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("open path cannot be converted to polygon"))); + /* + * Never overflows: the old size fit in MaxAllocSize, and the new size is + * just a small constant larger. + */ size = offsetof(POLYGON, p[0]) +sizeof(poly->p[0]) * path->npts; poly = (POLYGON *) palloc(size); @@ -4484,6 +4506,10 @@ poly_path(PG_FUNCTION_ARGS) int size; int i; + /* + * Never overflows: the old size fit in MaxAllocSize, and the new size is + * smaller by a small constant. + */ size = offsetof(PATH, p[0]) +sizeof(path->p[0]) * poly->npts; path = (PATH *) palloc(size); diff --git a/src/backend/utils/adt/int.c b/src/backend/utils/adt/int.c index 019fcaaa36..07493e3c3f 100644 --- a/src/backend/utils/adt/int.c +++ b/src/backend/utils/adt/int.c @@ -681,18 +681,6 @@ int4mul(PG_FUNCTION_ARGS) int32 arg2 = PG_GETARG_INT32(1); int32 result; -#ifdef WIN32 - - /* - * Win32 doesn't throw a catchable exception for SELECT -2147483648 * - * (-1); -- INT_MIN - */ - if (arg2 == -1 && arg1 == INT_MIN) - ereport(ERROR, - (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), - errmsg("integer out of range"))); -#endif - result = arg1 * arg2; /* @@ -709,7 +697,8 @@ int4mul(PG_FUNCTION_ARGS) if (!(arg1 >= (int32) SHRT_MIN && arg1 <= (int32) SHRT_MAX && arg2 >= (int32) SHRT_MIN && arg2 <= (int32) SHRT_MAX) && arg2 != 0 && - (result / arg2 != arg1 || (arg2 == -1 && arg1 < 0 && result < 0))) + ((arg2 == -1 && arg1 < 0 && result < 0) || + result / arg2 != arg1)) ereport(ERROR, (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), errmsg("integer out of range"))); @@ -732,30 +721,27 @@ int4div(PG_FUNCTION_ARGS) PG_RETURN_NULL(); } -#ifdef WIN32 - /* - * Win32 doesn't throw a catchable exception for SELECT -2147483648 / - * (-1); -- INT_MIN + * INT_MIN / -1 is problematic, since the result can't be represented on a + * two's-complement machine. Some machines produce INT_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 (arg2 == -1 && arg1 == INT_MIN) - ereport(ERROR, - (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), - errmsg("integer out of range"))); -#endif + if (arg2 == -1) + { + result = -arg1; + /* overflow check (needed for INT_MIN) */ + if (arg1 != 0 && SAMESIGN(result, arg1)) + ereport(ERROR, + (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), + errmsg("integer out of range"))); + PG_RETURN_INT32(result); + } + + /* No overflow is possible */ result = arg1 / arg2; - /* - * Overflow check. The only possible overflow case is for arg1 = INT_MIN, - * arg2 = -1, where the correct result is -INT_MIN, which can't be - * represented on a two's-complement machine. Most machines produce - * INT_MIN but it seems some produce zero. - */ - if (arg2 == -1 && arg1 < 0 && result <= 0) - ereport(ERROR, - (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), - errmsg("integer out of range"))); PG_RETURN_INT32(result); } @@ -877,18 +863,27 @@ int2div(PG_FUNCTION_ARGS) PG_RETURN_NULL(); } - result = arg1 / arg2; - /* - * Overflow check. The only possible overflow case is for arg1 = - * SHRT_MIN, arg2 = -1, where the correct result is -SHRT_MIN, which can't - * be represented on a two's-complement machine. Most machines produce - * SHRT_MIN but it seems some produce zero. + * SHRT_MIN / -1 is problematic, since the result can't be represented on + * a two's-complement machine. Some machines produce SHRT_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 (arg2 == -1 && arg1 < 0 && result <= 0) - ereport(ERROR, - (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), - errmsg("smallint out of range"))); + if (arg2 == -1) + { + result = -arg1; + /* overflow check (needed for SHRT_MIN) */ + if (arg1 != 0 && SAMESIGN(result, arg1)) + ereport(ERROR, + (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), + errmsg("smallint out of range"))); + PG_RETURN_INT16(result); + } + + /* No overflow is possible */ + + result = arg1 / arg2; + PG_RETURN_INT16(result); } @@ -1065,18 +1060,27 @@ int42div(PG_FUNCTION_ARGS) PG_RETURN_NULL(); } - result = arg1 / arg2; - /* - * Overflow check. The only possible overflow case is for arg1 = INT_MIN, - * arg2 = -1, where the correct result is -INT_MIN, which can't be - * represented on a two's-complement machine. Most machines produce - * INT_MIN but it seems some produce zero. + * INT_MIN / -1 is problematic, since the result can't be represented on a + * two's-complement machine. Some machines produce INT_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 (arg2 == -1 && arg1 < 0 && result <= 0) - ereport(ERROR, - (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), - errmsg("integer out of range"))); + if (arg2 == -1) + { + result = -arg1; + /* overflow check (needed for INT_MIN) */ + if (arg1 != 0 && SAMESIGN(result, arg1)) + ereport(ERROR, + (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), + errmsg("integer out of range"))); + PG_RETURN_INT32(result); + } + + /* No overflow is possible */ + + result = arg1 / arg2; + PG_RETURN_INT32(result); } @@ -1095,8 +1099,12 @@ int4mod(PG_FUNCTION_ARGS) PG_RETURN_NULL(); } - /* SELECT ((-2147483648)::int4) % (-1); causes a floating point exception */ - if (arg1 == INT_MIN && arg2 == -1) + /* + * Some machines throw a floating-point exception for INT_MIN % -1, which + * is a bit silly since the correct answer is perfectly well-defined, + * namely zero. + */ + if (arg2 == -1) PG_RETURN_INT32(0); /* No overflow is possible */ @@ -1119,6 +1127,15 @@ int2mod(PG_FUNCTION_ARGS) PG_RETURN_NULL(); } + /* + * Some machines throw a floating-point exception for INT_MIN % -1, which + * is a bit silly since the correct answer is perfectly well-defined, + * namely zero. (It's not clear this ever happens when dealing with + * int16, but we might as well have the test for safety.) + */ + if (arg2 == -1) + PG_RETURN_INT16(0); + /* No overflow is possible */ PG_RETURN_INT16(arg1 % arg2); @@ -1382,6 +1399,10 @@ generate_series_step_int4(PG_FUNCTION_ARGS) /* increment current in preparation for next iteration */ fctx->current += fctx->step; + /* if next-value computation overflows, this is the final result */ + if (SAMESIGN(result, fctx->step) && !SAMESIGN(result, fctx->current)) + fctx->step = 0; + /* do when there is more left to send */ SRF_RETURN_NEXT(funcctx, Int32GetDatum(result)); } diff --git a/src/backend/utils/adt/int8.c b/src/backend/utils/adt/int8.c index 451916480c..b28b6f03e7 100644 --- a/src/backend/utils/adt/int8.c +++ b/src/backend/utils/adt/int8.c @@ -574,7 +574,8 @@ int8mul(PG_FUNCTION_ARGS) if (arg1 != (int64) ((int32) arg1) || arg2 != (int64) ((int32) arg2)) { if (arg2 != 0 && - (result / arg2 != arg1 || (arg2 == -1 && arg1 < 0 && result < 0))) + ((arg2 == -1 && arg1 < 0 && result < 0) || + result / arg2 != arg1)) ereport(ERROR, (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), errmsg("bigint out of range"))); @@ -598,18 +599,27 @@ int8div(PG_FUNCTION_ARGS) PG_RETURN_NULL(); } - result = arg1 / arg2; - /* - * Overflow check. The only possible overflow case is for arg1 = - * INT64_MIN, arg2 = -1, where the correct result is -INT64_MIN, which - * can't be represented on a two's-complement machine. Most machines - * produce INT64_MIN but it seems some produce zero. + * 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 (arg2 == -1 && arg1 < 0 && result <= 0) - ereport(ERROR, - (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), - errmsg("bigint out of range"))); + if (arg2 == -1) + { + result = -arg1; + /* overflow check (needed for INT64_MIN) */ + if (arg1 != 0 && SAMESIGN(result, arg1)) + ereport(ERROR, + (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), + errmsg("bigint out of range"))); + PG_RETURN_INT64(result); + } + + /* No overflow is possible */ + + result = arg1 / arg2; + PG_RETURN_INT64(result); } @@ -649,6 +659,14 @@ int8mod(PG_FUNCTION_ARGS) PG_RETURN_NULL(); } + /* + * Some machines throw a floating-point exception for INT64_MIN % -1, + * which is a bit silly since the correct answer is perfectly + * well-defined, namely zero. + */ + if (arg2 == -1) + PG_RETURN_INT64(0); + /* No overflow is possible */ PG_RETURN_INT64(arg1 % arg2); @@ -830,18 +848,27 @@ int84div(PG_FUNCTION_ARGS) PG_RETURN_NULL(); } - result = arg1 / arg2; - /* - * Overflow check. The only possible overflow case is for arg1 = - * INT64_MIN, arg2 = -1, where the correct result is -INT64_MIN, which - * can't be represented on a two's-complement machine. Most machines - * produce INT64_MIN but it seems some produce zero. + * 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 (arg2 == -1 && arg1 < 0 && result <= 0) - ereport(ERROR, - (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), - errmsg("bigint out of range"))); + if (arg2 == -1) + { + result = -arg1; + /* overflow check (needed for INT64_MIN) */ + if (arg1 != 0 && SAMESIGN(result, arg1)) + ereport(ERROR, + (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), + errmsg("bigint out of range"))); + PG_RETURN_INT64(result); + } + + /* No overflow is possible */ + + result = arg1 / arg2; + PG_RETURN_INT64(result); } @@ -1018,18 +1045,27 @@ int82div(PG_FUNCTION_ARGS) PG_RETURN_NULL(); } - result = arg1 / arg2; - /* - * Overflow check. The only possible overflow case is for arg1 = - * INT64_MIN, arg2 = -1, where the correct result is -INT64_MIN, which - * can't be represented on a two's-complement machine. Most machines - * produce INT64_MIN but it seems some produce zero. + * 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 (arg2 == -1 && arg1 < 0 && result <= 0) - ereport(ERROR, - (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), - errmsg("bigint out of range"))); + if (arg2 == -1) + { + result = -arg1; + /* overflow check (needed for INT64_MIN) */ + if (arg1 != 0 && SAMESIGN(result, arg1)) + ereport(ERROR, + (errcode(ERRCODE_NUMERIC_VALUE_OUT_OF_RANGE), + errmsg("bigint out of range"))); + PG_RETURN_INT64(result); + } + + /* No overflow is possible */ + + result = arg1 / arg2; + PG_RETURN_INT64(result); } @@ -1410,6 +1446,10 @@ generate_series_step_int8(PG_FUNCTION_ARGS) /* increment current in preparation for next iteration */ fctx->current += fctx->step; + /* if next-value computation overflows, this is the final result */ + if (SAMESIGN(result, fctx->step) && !SAMESIGN(result, fctx->current)) + fctx->step = 0; + /* do when there is more left to send */ SRF_RETURN_NEXT(funcctx, Int64GetDatum(result)); } diff --git a/src/backend/utils/adt/lockfuncs.c b/src/backend/utils/adt/lockfuncs.c index e437103ce0..3a9e5dec5e 100644 --- a/src/backend/utils/adt/lockfuncs.c +++ b/src/backend/utils/adt/lockfuncs.c @@ -439,9 +439,9 @@ pg_lock_status(PG_FUNCTION_ARGS) /* * pgxc_advisory_lock - Core function that implements the algorithm needed to - * propogate the advisory lock function calls to all coordinators. + * propogate the advisory lock function calls to all Coordinators. * The idea is to make the advisory locks cluster-aware, so that a user having - * a lock from coordinator 1 will make the user from coordinator 2 to wait for + * a lock from Coordinator 1 will make the user from Coordinator 2 to wait for * the same lock. * * Return true if all locks are returned successfully. False otherwise. @@ -476,7 +476,7 @@ pgxc_advisory_lock(int64 key64, int32 key1, int32 key2, bool iskeybig, PgxcNodeGetOids(&coOids, &dnOids, &numcoords, &numdnodes, false); - /* Skip everything XC specific if there's only one coordinator running */ + /* Skip everything XC specific if there's only one Coordinator running */ if (numcoords <= 1) { (void) LockAcquire(&locktag, lockmode, sessionLock, dontWait); @@ -521,22 +521,22 @@ pgxc_advisory_lock(int64 key64, int32 key1, int32 key2, bool iskeybig, appendStringInfo(&unlock_cmd, "SELECT pg_catalog.%s(%s)", unlock_funcname.data, args.data); /* - * Go on locking on each coordinator. Keep on unlocking the previous one - * after a lock is held on next coordinator. Don't unlock the local - * coordinator. After finishing all coordinators, ultimately only the local - * coordinator would be locked, but still we will have scanned all - * coordinators to make sure no one else has already grabbed the lock. The + * Go on locking on each Coordinator. Keep on unlocking the previous one + * after a lock is held on next Coordinator. Don't unlock the local + * Coordinator. After finishing all Coordinators, ultimately only the local + * Coordinator would be locked, but still we will have scanned all + * Coordinators to make sure no one else has already grabbed the lock. The * reason for unlocking all remote locks is because the session level locks * don't get unlocked until explicitly unlocked or the session quits. After * the user session quits without explicitly unlocking, the coord-to-coord - * pooler connection stays and so does the remote coordinator lock. + * pooler connection stays and so does the remote Coordinator lock. */ prev = -1; for (i = 0; i <= numcoords && !abort_locking; i++, prev++) { if (i < numcoords) { - /* If this coordinator is myself, execute native lock calls */ + /* If this Coordinator is myself, execute native lock calls */ if (i == PGXCNodeId - 1) lock_status = LockAcquire(&locktag, lockmode, sessionLock, dontWait); else @@ -546,7 +546,7 @@ pgxc_advisory_lock(int64 key64, int32 key1, int32 key2, bool iskeybig, { abort_locking = true; /* - * If we have gone past the local coordinator node, it implies + * If we have gone past the local Coordinator node, it implies * that we have obtained a local lock. But now that we are * aborting, we need to release the local lock first. */ @@ -557,7 +557,7 @@ pgxc_advisory_lock(int64 key64, int32 key1, int32 key2, bool iskeybig, /* * If we are dealing with session locks, unlock the previous lock, but - * only if it is a remote coordinator. If it is a local one, we want to + * only if it is a remote Coordinator. If it is a local one, we want to * keep that lock. Remember, the final status should be that there is * only *one* lock held, and that is the local lock. */ diff --git a/src/backend/utils/adt/name.c b/src/backend/utils/adt/name.c index 09c12efd8d..a2fee8e4d6 100644 --- a/src/backend/utils/adt/name.c +++ b/src/backend/utils/adt/name.c @@ -46,13 +46,17 @@ Datum namein(PG_FUNCTION_ARGS) { char *s = PG_GETARG_CSTRING(0); - NameData *result; + Name result; int len; len = strlen(s); - len = pg_mbcliplen(s, len, NAMEDATALEN - 1); - result = (NameData *) palloc0(NAMEDATALEN); + /* Truncate oversize input */ + if (len >= NAMEDATALEN) + len = pg_mbcliplen(s, len, NAMEDATALEN - 1); + + /* We use palloc0 here to ensure result is zero-padded */ + result = (Name) palloc0(NAMEDATALEN); memcpy(NameStr(*result), s, len); PG_RETURN_NAME(result); diff --git a/src/backend/utils/adt/network.c b/src/backend/utils/adt/network.c index 80e5915b3e..a968d70799 100644 --- a/src/backend/utils/adt/network.c +++ b/src/backend/utils/adt/network.c @@ -172,7 +172,7 @@ network_out(inet *src, bool is_cidr) Datum inet_out(PG_FUNCTION_ARGS) { - inet *src = PG_GETARG_INET_P(0); + inet *src = PG_GETARG_INET_PP(0); PG_RETURN_CSTRING(network_out(src, false)); } @@ -180,7 +180,7 @@ inet_out(PG_FUNCTION_ARGS) Datum cidr_out(PG_FUNCTION_ARGS) { - inet *src = PG_GETARG_INET_P(0); + inet *src = PG_GETARG_INET_PP(0); PG_RETURN_CSTRING(network_out(src, true)); } @@ -299,7 +299,7 @@ network_send(inet *addr, bool is_cidr) Datum inet_send(PG_FUNCTION_ARGS) { - inet *addr = PG_GETARG_INET_P(0); + inet *addr = PG_GETARG_INET_PP(0); PG_RETURN_BYTEA_P(network_send(addr, false)); } @@ -307,7 +307,7 @@ inet_send(PG_FUNCTION_ARGS) Datum cidr_send(PG_FUNCTION_ARGS) { - inet *addr = PG_GETARG_INET_P(0); + inet *addr = PG_GETARG_INET_PP(0); PG_RETURN_BYTEA_P(network_send(addr, true)); } @@ -316,7 +316,7 @@ cidr_send(PG_FUNCTION_ARGS) Datum inet_to_cidr(PG_FUNCTION_ARGS) { - inet *src = PG_GETARG_INET_P(0); + inet *src = PG_GETARG_INET_PP(0); inet *dst; int bits; int byte; @@ -357,7 +357,7 @@ inet_to_cidr(PG_FUNCTION_ARGS) Datum inet_set_masklen(PG_FUNCTION_ARGS) { - inet *src = PG_GETARG_INET_P(0); + inet *src = PG_GETARG_INET_PP(0); int bits = PG_GETARG_INT32(1); inet *dst; @@ -381,7 +381,7 @@ inet_set_masklen(PG_FUNCTION_ARGS) Datum cidr_set_masklen(PG_FUNCTION_ARGS) { - inet *src = PG_GETARG_INET_P(0); + inet *src = PG_GETARG_INET_PP(0); int bits = PG_GETARG_INT32(1); inet *dst; int byte; @@ -457,8 +457,8 @@ network_cmp_internal(inet *a1, inet *a2) Datum network_cmp(PG_FUNCTION_ARGS) { - inet *a1 = PG_GETARG_INET_P(0); - inet *a2 = PG_GETARG_INET_P(1); + inet *a1 = PG_GETARG_INET_PP(0); + inet *a2 = PG_GETARG_INET_PP(1); PG_RETURN_INT32(network_cmp_internal(a1, a2)); } @@ -469,8 +469,8 @@ network_cmp(PG_FUNCTION_ARGS) Datum network_lt(PG_FUNCTION_ARGS) { - inet *a1 = PG_GETARG_INET_P(0); - inet *a2 = PG_GETARG_INET_P(1); + inet *a1 = PG_GETARG_INET_PP(0); + inet *a2 = PG_GETARG_INET_PP(1); PG_RETURN_BOOL(network_cmp_internal(a1, a2) < 0); } @@ -478,8 +478,8 @@ network_lt(PG_FUNCTION_ARGS) Datum network_le(PG_FUNCTION_ARGS) { - inet *a1 = PG_GETARG_INET_P(0); - inet *a2 = PG_GETARG_INET_P(1); + inet *a1 = PG_GETARG_INET_PP(0); + inet *a2 = PG_GETARG_INET_PP(1); PG_RETURN_BOOL(network_cmp_internal(a1, a2) <= 0); } @@ -487,8 +487,8 @@ network_le(PG_FUNCTION_ARGS) Datum network_eq(PG_FUNCTION_ARGS) { - inet *a1 = PG_GETARG_INET_P(0); - inet *a2 = PG_GETARG_INET_P(1); + inet *a1 = PG_GETARG_INET_PP(0); + inet *a2 = PG_GETARG_INET_PP(1); PG_RETURN_BOOL(network_cmp_internal(a1, a2) == 0); } @@ -496,8 +496,8 @@ network_eq(PG_FUNCTION_ARGS) Datum network_ge(PG_FUNCTION_ARGS) { - inet *a1 = PG_GETARG_INET_P(0); - inet *a2 = PG_GETARG_INET_P(1); + inet *a1 = PG_GETARG_INET_PP(0); + inet *a2 = PG_GETARG_INET_PP(1); PG_RETURN_BOOL(network_cmp_internal(a1, a2) >= 0); } @@ -505,8 +505,8 @@ network_ge(PG_FUNCTION_ARGS) Datum network_gt(PG_FUNCTION_ARGS) { - inet *a1 = PG_GETARG_INET_P(0); - inet *a2 = PG_GETARG_INET_P(1); + inet *a1 = PG_GETARG_INET_PP(0); + inet *a2 = PG_GETARG_INET_PP(1); PG_RETURN_BOOL(network_cmp_internal(a1, a2) > 0); } @@ -514,8 +514,8 @@ network_gt(PG_FUNCTION_ARGS) Datum network_ne(PG_FUNCTION_ARGS) { - inet *a1 = PG_GETARG_INET_P(0); - inet *a2 = PG_GETARG_INET_P(1); + inet *a1 = PG_GETARG_INET_PP(0); + inet *a2 = PG_GETARG_INET_PP(1); PG_RETURN_BOOL(network_cmp_internal(a1, a2) != 0); } @@ -526,7 +526,7 @@ network_ne(PG_FUNCTION_ARGS) Datum hashinet(PG_FUNCTION_ARGS) { - inet *addr = PG_GETARG_INET_P(0); + inet *addr = PG_GETARG_INET_PP(0); int addrsize = ip_addrsize(addr); /* XXX this assumes there are no pad bytes in the data structure */ @@ -539,8 +539,8 @@ hashinet(PG_FUNCTION_ARGS) Datum network_sub(PG_FUNCTION_ARGS) { - inet *a1 = PG_GETARG_INET_P(0); - inet *a2 = PG_GETARG_INET_P(1); + inet *a1 = PG_GETARG_INET_PP(0); + inet *a2 = PG_GETARG_INET_PP(1); if (ip_family(a1) == ip_family(a2)) { @@ -554,8 +554,8 @@ network_sub(PG_FUNCTION_ARGS) Datum network_subeq(PG_FUNCTION_ARGS) { - inet *a1 = PG_GETARG_INET_P(0); - inet *a2 = PG_GETARG_INET_P(1); + inet *a1 = PG_GETARG_INET_PP(0); + inet *a2 = PG_GETARG_INET_PP(1); if (ip_family(a1) == ip_family(a2)) { @@ -569,8 +569,8 @@ network_subeq(PG_FUNCTION_ARGS) Datum network_sup(PG_FUNCTION_ARGS) { - inet *a1 = PG_GETARG_INET_P(0); - inet *a2 = PG_GETARG_INET_P(1); + inet *a1 = PG_GETARG_INET_PP(0); + inet *a2 = PG_GETARG_INET_PP(1); if (ip_family(a1) == ip_family(a2)) { @@ -584,8 +584,8 @@ network_sup(PG_FUNCTION_ARGS) Datum network_supeq(PG_FUNCTION_ARGS) { - inet *a1 = PG_GETARG_INET_P(0); - inet *a2 = PG_GETARG_INET_P(1); + inet *a1 = PG_GETARG_INET_PP(0); + inet *a2 = PG_GETARG_INET_PP(1); if (ip_family(a1) == ip_family(a2)) { @@ -602,7 +602,7 @@ network_supeq(PG_FUNCTION_ARGS) Datum network_host(PG_FUNCTION_ARGS) { - inet *ip = PG_GETARG_INET_P(0); + inet *ip = PG_GETARG_INET_PP(0); char *ptr; char tmp[sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:255.255.255.255/128")]; @@ -628,7 +628,7 @@ network_host(PG_FUNCTION_ARGS) Datum network_show(PG_FUNCTION_ARGS) { - inet *ip = PG_GETARG_INET_P(0); + inet *ip = PG_GETARG_INET_PP(0); int len; char tmp[sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:255.255.255.255/128")]; @@ -651,7 +651,7 @@ network_show(PG_FUNCTION_ARGS) Datum inet_abbrev(PG_FUNCTION_ARGS) { - inet *ip = PG_GETARG_INET_P(0); + inet *ip = PG_GETARG_INET_PP(0); char *dst; char tmp[sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:255.255.255.255/128")]; @@ -669,7 +669,7 @@ inet_abbrev(PG_FUNCTION_ARGS) Datum cidr_abbrev(PG_FUNCTION_ARGS) { - inet *ip = PG_GETARG_INET_P(0); + inet *ip = PG_GETARG_INET_PP(0); char *dst; char tmp[sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:255.255.255.255/128")]; @@ -687,7 +687,7 @@ cidr_abbrev(PG_FUNCTION_ARGS) Datum network_masklen(PG_FUNCTION_ARGS) { - inet *ip = PG_GETARG_INET_P(0); + inet *ip = PG_GETARG_INET_PP(0); PG_RETURN_INT32(ip_bits(ip)); } @@ -695,7 +695,7 @@ network_masklen(PG_FUNCTION_ARGS) Datum network_family(PG_FUNCTION_ARGS) { - inet *ip = PG_GETARG_INET_P(0); + inet *ip = PG_GETARG_INET_PP(0); switch (ip_family(ip)) { @@ -714,7 +714,7 @@ network_family(PG_FUNCTION_ARGS) Datum network_broadcast(PG_FUNCTION_ARGS) { - inet *ip = PG_GETARG_INET_P(0); + inet *ip = PG_GETARG_INET_PP(0); inet *dst; int byte; int bits; @@ -763,7 +763,7 @@ network_broadcast(PG_FUNCTION_ARGS) Datum network_network(PG_FUNCTION_ARGS) { - inet *ip = PG_GETARG_INET_P(0); + inet *ip = PG_GETARG_INET_PP(0); inet *dst; int byte; int bits; @@ -807,7 +807,7 @@ network_network(PG_FUNCTION_ARGS) Datum network_netmask(PG_FUNCTION_ARGS) { - inet *ip = PG_GETARG_INET_P(0); + inet *ip = PG_GETARG_INET_PP(0); inet *dst; int byte; int bits; @@ -849,7 +849,7 @@ network_netmask(PG_FUNCTION_ARGS) Datum network_hostmask(PG_FUNCTION_ARGS) { - inet *ip = PG_GETARG_INET_P(0); + inet *ip = PG_GETARG_INET_PP(0); inet *dst; int byte; int bits; @@ -907,7 +907,7 @@ convert_network_to_scalar(Datum value, Oid typid) case INETOID: case CIDROID: { - inet *ip = DatumGetInetP(value); + inet *ip = DatumGetInetPP(value); int len; double res; int i; @@ -1218,7 +1218,7 @@ inet_server_port(PG_FUNCTION_ARGS) Datum inetnot(PG_FUNCTION_ARGS) { - inet *ip = PG_GETARG_INET_P(0); + inet *ip = PG_GETARG_INET_PP(0); inet *dst; dst = (inet *) palloc0(sizeof(inet)); @@ -1243,8 +1243,8 @@ inetnot(PG_FUNCTION_ARGS) Datum inetand(PG_FUNCTION_ARGS) { - inet *ip = PG_GETARG_INET_P(0); - inet *ip2 = PG_GETARG_INET_P(1); + inet *ip = PG_GETARG_INET_PP(0); + inet *ip2 = PG_GETARG_INET_PP(1); inet *dst; dst = (inet *) palloc0(sizeof(inet)); @@ -1275,8 +1275,8 @@ inetand(PG_FUNCTION_ARGS) Datum inetor(PG_FUNCTION_ARGS) { - inet *ip = PG_GETARG_INET_P(0); - inet *ip2 = PG_GETARG_INET_P(1); + inet *ip = PG_GETARG_INET_PP(0); + inet *ip2 = PG_GETARG_INET_PP(1); inet *dst; dst = (inet *) palloc0(sizeof(inet)); @@ -1359,7 +1359,7 @@ internal_inetpl(inet *ip, int64 addend) Datum inetpl(PG_FUNCTION_ARGS) { - inet *ip = PG_GETARG_INET_P(0); + inet *ip = PG_GETARG_INET_PP(0); int64 addend = PG_GETARG_INT64(1); PG_RETURN_INET_P(internal_inetpl(ip, addend)); @@ -1369,7 +1369,7 @@ inetpl(PG_FUNCTION_ARGS) Datum inetmi_int8(PG_FUNCTION_ARGS) { - inet *ip = PG_GETARG_INET_P(0); + inet *ip = PG_GETARG_INET_PP(0); int64 addend = PG_GETARG_INT64(1); PG_RETURN_INET_P(internal_inetpl(ip, -addend)); @@ -1379,8 +1379,8 @@ inetmi_int8(PG_FUNCTION_ARGS) Datum inetmi(PG_FUNCTION_ARGS) { - inet *ip = PG_GETARG_INET_P(0); - inet *ip2 = PG_GETARG_INET_P(1); + inet *ip = PG_GETARG_INET_PP(0); + inet *ip2 = PG_GETARG_INET_PP(1); int64 res = 0; if (ip_family(ip) != ip_family(ip2)) diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c index cf663466c3..c3181be0d2 100644 --- a/src/backend/utils/adt/pg_locale.c +++ b/src/backend/utils/adt/pg_locale.c @@ -239,7 +239,9 @@ check_locale(int category, const char *value) /* set the locale with setlocale, to see if it accepts it. */ ret = (setlocale(category, value) != NULL); - setlocale(category, save); /* assume this won't fail */ + /* restore old value. */ + if (!setlocale(category, save)) + elog(WARNING, "failed to restore old locale"); pfree(save); return ret; @@ -499,13 +501,15 @@ PGLC_localeconv(void) /* Try to restore internal settings */ if (save_lc_monetary) { - setlocale(LC_MONETARY, save_lc_monetary); + if (!setlocale(LC_MONETARY, save_lc_monetary)) + elog(WARNING, "failed to restore old locale"); pfree(save_lc_monetary); } if (save_lc_numeric) { - setlocale(LC_NUMERIC, save_lc_numeric); + if (!setlocale(LC_NUMERIC, save_lc_numeric)) + elog(WARNING, "failed to restore old locale"); pfree(save_lc_numeric); } @@ -513,7 +517,8 @@ PGLC_localeconv(void) /* Try to restore internal ctype settings */ if (save_lc_ctype) { - setlocale(LC_CTYPE, save_lc_ctype); + if (!setlocale(LC_CTYPE, save_lc_ctype)) + elog(WARNING, "failed to restore old locale"); pfree(save_lc_ctype); } #endif @@ -674,7 +679,8 @@ cache_locale_time(void) /* try to restore internal settings */ if (save_lc_time) { - setlocale(LC_TIME, save_lc_time); + if (!setlocale(LC_TIME, save_lc_time)) + elog(WARNING, "failed to restore old locale"); pfree(save_lc_time); } @@ -682,7 +688,8 @@ cache_locale_time(void) /* try to restore internal ctype settings */ if (save_lc_ctype) { - setlocale(LC_CTYPE, save_lc_ctype); + if (!setlocale(LC_CTYPE, save_lc_ctype)) + elog(WARNING, "failed to restore old locale"); pfree(save_lc_ctype); } #endif @@ -700,8 +707,7 @@ cache_locale_time(void) * otherwise returns the pointer to a static area which * contains the iso formatted locale name. */ -static -char * +static char * IsoLocaleName(const char *winlocname) { #if (_MSC_VER >= 1400) /* VC8.0 or later */ @@ -930,6 +936,29 @@ lc_ctype_is_c(Oid collation) } +/* simple subroutine for reporting errors from newlocale() */ +#ifdef HAVE_LOCALE_T +static void +report_newlocale_failure(const char *localename) +{ + /* copy errno in case one of the ereport auxiliary functions changes it */ + int save_errno = errno; + + /* + * ENOENT means "no such locale", not "no such file", so clarify that + * errno with an errdetail message. + */ + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("could not create locale \"%s\": %m", + localename), + (save_errno == ENOENT ? + errdetail("The operating system could not find any locale data for the locale name \"%s\".", + localename) : 0))); +} +#endif /* HAVE_LOCALE_T */ + + /* * Create a locale_t from a collation OID. Results are cached for the * lifetime of the backend. Thus, do not free the result with freelocale(). @@ -988,10 +1017,7 @@ pg_newlocale_from_collation(Oid collid) result = _create_locale(LC_ALL, collcollate); #endif if (!result) - ereport(ERROR, - (errcode_for_file_access(), - errmsg("could not create locale \"%s\": %m", - collcollate))); + report_newlocale_failure(collcollate); } else { @@ -1001,16 +1027,10 @@ pg_newlocale_from_collation(Oid collid) loc1 = newlocale(LC_COLLATE_MASK, collcollate, NULL); if (!loc1) - ereport(ERROR, - (errcode_for_file_access(), - errmsg("could not create locale \"%s\": %m", - collcollate))); + report_newlocale_failure(collcollate); result = newlocale(LC_CTYPE_MASK, collctype, loc1); if (!result) - ereport(ERROR, - (errcode_for_file_access(), - errmsg("could not create locale \"%s\": %m", - collctype))); + report_newlocale_failure(collctype); #else /* @@ -1171,17 +1191,17 @@ char2wchar(wchar_t *to, size_t tolen, const char *from, size_t fromlen, else { #ifdef HAVE_LOCALE_T -#ifdef HAVE_WCSTOMBS_L +#ifdef HAVE_MBSTOWCS_L /* Use mbstowcs_l for nondefault locales */ result = mbstowcs_l(to, str, tolen, locale); -#else /* !HAVE_WCSTOMBS_L */ +#else /* !HAVE_MBSTOWCS_L */ /* We have to temporarily set the locale as current ... ugh */ locale_t save_locale = uselocale(locale); result = mbstowcs(to, str, tolen); uselocale(save_locale); -#endif /* HAVE_WCSTOMBS_L */ +#endif /* HAVE_MBSTOWCS_L */ #else /* !HAVE_LOCALE_T */ /* Can't have locale != 0 without HAVE_LOCALE_T */ elog(ERROR, "mbstowcs_l is not available"); diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c index 12dbff4c9a..c75b942026 100644 --- a/src/backend/utils/adt/pgstatfuncs.c +++ b/src/backend/utils/adt/pgstatfuncs.c @@ -587,7 +587,6 @@ pg_stat_get_activity(PG_FUNCTION_ARGS) bool nulls[12]; HeapTuple tuple; PgBackendStatus *beentry; - SockAddr zero_clientaddr; MemSet(values, 0, sizeof(values)); MemSet(nulls, 0, sizeof(nulls)); @@ -628,6 +627,8 @@ pg_stat_get_activity(PG_FUNCTION_ARGS) /* Values only available to same user or superuser */ if (superuser() || beentry->st_userid == GetUserId()) { + SockAddr zero_clientaddr; + if (*(beentry->st_activity) == '\0') { values[4] = CStringGetTextDatum(""); @@ -657,7 +658,7 @@ pg_stat_get_activity(PG_FUNCTION_ARGS) /* A zeroed client addr means we don't know */ memset(&zero_clientaddr, 0, sizeof(zero_clientaddr)); if (memcmp(&(beentry->st_clientaddr), &zero_clientaddr, - sizeof(zero_clientaddr) == 0)) + sizeof(zero_clientaddr)) == 0) { nulls[9] = true; nulls[10] = true; @@ -919,7 +920,7 @@ pg_stat_get_backend_client_addr(PG_FUNCTION_ARGS) /* A zeroed client addr means we don't know */ memset(&zero_clientaddr, 0, sizeof(zero_clientaddr)); if (memcmp(&(beentry->st_clientaddr), &zero_clientaddr, - sizeof(zero_clientaddr) == 0)) + sizeof(zero_clientaddr)) == 0) PG_RETURN_NULL(); switch (beentry->st_clientaddr.addr.ss_family) @@ -966,7 +967,7 @@ pg_stat_get_backend_client_port(PG_FUNCTION_ARGS) /* A zeroed client addr means we don't know */ memset(&zero_clientaddr, 0, sizeof(zero_clientaddr)); if (memcmp(&(beentry->st_clientaddr), &zero_clientaddr, - sizeof(zero_clientaddr) == 0)) + sizeof(zero_clientaddr)) == 0) PG_RETURN_NULL(); switch (beentry->st_clientaddr.addr.ss_family) @@ -1537,9 +1538,17 @@ pg_stat_reset(PG_FUNCTION_ARGS) Datum pg_stat_reset_shared(PG_FUNCTION_ARGS) { - char *target = text_to_cstring(PG_GETARG_TEXT_PP(0)); - - pgstat_reset_shared_counters(target); + if (PG_ARGISNULL(0)) + /* + * Same error message as in pgstat_reset_shared_counters(), + * to keep translations the same. + */ + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("unrecognized reset target: \"%s\"", "null"), + errhint("Target must be \"bgwriter\"."))); + + pgstat_reset_shared_counters(text_to_cstring(PG_GETARG_TEXT_PP(0))); PG_RETURN_VOID(); } diff --git a/src/backend/utils/adt/regexp.c b/src/backend/utils/adt/regexp.c index 0dbbd6715c..7e05a53810 100644 --- a/src/backend/utils/adt/regexp.c +++ b/src/backend/utils/adt/regexp.c @@ -31,6 +31,7 @@ #include "catalog/pg_type.h" #include "funcapi.h" +#include "miscadmin.h" #include "regex/regex.h" #include "utils/builtins.h" #include "utils/guc.h" @@ -187,9 +188,17 @@ RE_compile_and_cache(text *text_re, int cflags, Oid collation) if (regcomp_result != REG_OKAY) { - /* re didn't compile */ + /* re didn't compile (no need for pg_regfree, if so) */ + + /* + * Here and in other places in this file, do CHECK_FOR_INTERRUPTS + * before reporting a regex error. This is so that if the regex + * library aborts and returns REG_CANCEL, we don't print an error + * message that implies the regex was invalid. + */ + CHECK_FOR_INTERRUPTS(); + pg_regerror(regcomp_result, &re_temp.cre_re, errMsg, sizeof(errMsg)); - /* XXX should we pg_regfree here? */ ereport(ERROR, (errcode(ERRCODE_INVALID_REGULAR_EXPRESSION), errmsg("invalid regular expression: %s", errMsg))); @@ -269,6 +278,7 @@ RE_wchar_execute(regex_t *re, pg_wchar *data, int data_len, if (regexec_result != REG_OKAY && regexec_result != REG_NOMATCH) { /* re failed??? */ + CHECK_FOR_INTERRUPTS(); pg_regerror(regexec_result, re, errMsg, sizeof(errMsg)); ereport(ERROR, (errcode(ERRCODE_INVALID_REGULAR_EXPRESSION), @@ -958,14 +968,13 @@ setup_regexp_matches(text *orig_str, text *pattern, text *flags, break; /* - * Advance search position. Normally we start just after the end of - * the previous match, but always advance at least one character (the - * special case can occur if the pattern matches zero characters just - * after the prior match or at the end of the string). + * Advance search position. Normally we start the next search at the + * end of the previous match; but if the match was of zero length, we + * have to advance by one character, or we'd just find the same match + * again. */ - if (start_search < pmatch[0].rm_eo) - start_search = pmatch[0].rm_eo; - else + start_search = prev_match_end; + if (pmatch[0].rm_so == pmatch[0].rm_eo) start_search++; if (start_search > wide_len) break; @@ -1170,3 +1179,69 @@ build_regexp_split_result(regexp_matches_ctx *splitctx) Int32GetDatum(startpos + 1)); } } + +/* + * regexp_fixed_prefix - extract fixed prefix, if any, for a regexp + * + * The result is NULL if there is no fixed prefix, else a palloc'd string. + * If it is an exact match, not just a prefix, *exact is returned as TRUE. + */ +char * +regexp_fixed_prefix(text *text_re, bool case_insensitive, Oid collation, + bool *exact) +{ + char *result; + regex_t *re; + int cflags; + int re_result; + pg_wchar *str; + size_t slen; + size_t maxlen; + char errMsg[100]; + + *exact = false; /* default result */ + + /* Compile RE */ + cflags = REG_ADVANCED; + if (case_insensitive) + cflags |= REG_ICASE; + + re = RE_compile_and_cache(text_re, cflags, collation); + + /* Examine it to see if there's a fixed prefix */ + re_result = pg_regprefix(re, &str, &slen); + + switch (re_result) + { + case REG_NOMATCH: + return NULL; + + case REG_PREFIX: + /* continue with wchar conversion */ + break; + + case REG_EXACT: + *exact = true; + /* continue with wchar conversion */ + break; + + default: + /* re failed??? */ + CHECK_FOR_INTERRUPTS(); + pg_regerror(re_result, re, errMsg, sizeof(errMsg)); + ereport(ERROR, + (errcode(ERRCODE_INVALID_REGULAR_EXPRESSION), + errmsg("regular expression failed: %s", errMsg))); + break; + } + + /* Convert pg_wchar result back to database encoding */ + maxlen = pg_database_encoding_max_length() * slen + 1; + result = (char *) palloc(maxlen); + slen = pg_wchar2mb_with_len(str, result, slen); + Assert(slen < maxlen); + + free(str); + + return result; +} diff --git a/src/backend/utils/adt/ri_triggers.c b/src/backend/utils/adt/ri_triggers.c index f7ed6b8e92..b6b3a84b9f 100644 --- a/src/backend/utils/adt/ri_triggers.c +++ b/src/backend/utils/adt/ri_triggers.c @@ -2645,7 +2645,7 @@ RI_Initial_Check(Trigger *trigger, Relation fk_rel, Relation pk_rel) RangeTblEntry *fkrte; const char *sep; int i; - int old_work_mem; + int save_nestlevel; char workmembuf[32]; int spi_result; SPIPlanPtr qplan; @@ -2784,14 +2784,16 @@ RI_Initial_Check(Trigger *trigger, Relation fk_rel, Relation pk_rel) * this seems to meet the criteria for being considered a "maintenance" * operation, and accordingly we use maintenance_work_mem. * - * We do the equivalent of "SET LOCAL work_mem" so that transaction abort - * will restore the old value if we lose control due to an error. + * We use the equivalent of a function SET option to allow the setting to + * persist for exactly the duration of the check query. guc.c also takes + * care of undoing the setting on error. */ - old_work_mem = work_mem; + save_nestlevel = NewGUCNestLevel(); + snprintf(workmembuf, sizeof(workmembuf), "%d", maintenance_work_mem); (void) set_config_option("work_mem", workmembuf, PGC_USERSET, PGC_S_SESSION, - GUC_ACTION_LOCAL, true); + GUC_ACTION_SAVE, true); if (SPI_connect() != SPI_OK_CONNECT) elog(ERROR, "SPI_connect failed"); @@ -2874,13 +2876,9 @@ RI_Initial_Check(Trigger *trigger, Relation fk_rel, Relation pk_rel) elog(ERROR, "SPI_finish failed"); /* - * Restore work_mem for the remainder of the current transaction. This is - * another SET LOCAL, so it won't affect the session value. + * Restore work_mem. */ - snprintf(workmembuf, sizeof(workmembuf), "%d", old_work_mem); - (void) set_config_option("work_mem", workmembuf, - PGC_USERSET, PGC_S_SESSION, - GUC_ACTION_LOCAL, true); + AtEOXact_GUC(true, save_nestlevel); return true; } diff --git a/src/backend/utils/adt/rowtypes.c b/src/backend/utils/adt/rowtypes.c index acfd063f37..2397ba933a 100644 --- a/src/backend/utils/adt/rowtypes.c +++ b/src/backend/utils/adt/rowtypes.c @@ -31,6 +31,7 @@ typedef struct ColumnIOData Oid column_type; Oid typiofunc; Oid typioparam; + bool typisvarlena; FmgrInfo proc; } ColumnIOData; @@ -366,6 +367,7 @@ record_out(PG_FUNCTION_ARGS) { ColumnIOData *column_info = &my_extra->columns[i]; Oid column_type = tupdesc->attrs[i]->atttypid; + Datum attr; char *value; char *tmp; bool nq; @@ -389,17 +391,24 @@ record_out(PG_FUNCTION_ARGS) */ if (column_info->column_type != column_type) { - bool typIsVarlena; - getTypeOutputInfo(column_type, &column_info->typiofunc, - &typIsVarlena); + &column_info->typisvarlena); fmgr_info_cxt(column_info->typiofunc, &column_info->proc, fcinfo->flinfo->fn_mcxt); column_info->column_type = column_type; } - value = OutputFunctionCall(&column_info->proc, values[i]); + /* + * If we have a toasted datum, forcibly detoast it here to avoid + * memory leakage inside the type's output routine. + */ + if (column_info->typisvarlena) + attr = PointerGetDatum(PG_DETOAST_DATUM(values[i])); + else + attr = values[i]; + + value = OutputFunctionCall(&column_info->proc, attr); /* Detect whether we need double quotes for this value */ nq = (value[0] == '\0'); /* force quotes for empty string */ @@ -418,17 +427,23 @@ record_out(PG_FUNCTION_ARGS) /* And emit the string */ if (nq) - appendStringInfoChar(&buf, '"'); + appendStringInfoCharMacro(&buf, '"'); for (tmp = value; *tmp; tmp++) { char ch = *tmp; if (ch == '"' || ch == '\\') - appendStringInfoChar(&buf, ch); - appendStringInfoChar(&buf, ch); + appendStringInfoCharMacro(&buf, ch); + appendStringInfoCharMacro(&buf, ch); } if (nq) - appendStringInfoChar(&buf, '"'); + appendStringInfoCharMacro(&buf, '"'); + + pfree(value); + + /* Clean up detoasted copy, if any */ + if (DatumGetPointer(attr) != DatumGetPointer(values[i])) + pfree(DatumGetPointer(attr)); } appendStringInfoChar(&buf, ')'); @@ -719,6 +734,7 @@ record_send(PG_FUNCTION_ARGS) { ColumnIOData *column_info = &my_extra->columns[i]; Oid column_type = tupdesc->attrs[i]->atttypid; + Datum attr; bytea *outputbytes; /* Ignore dropped columns in datatype */ @@ -739,23 +755,35 @@ record_send(PG_FUNCTION_ARGS) */ if (column_info->column_type != column_type) { - bool typIsVarlena; - getTypeBinaryOutputInfo(column_type, &column_info->typiofunc, - &typIsVarlena); + &column_info->typisvarlena); fmgr_info_cxt(column_info->typiofunc, &column_info->proc, fcinfo->flinfo->fn_mcxt); column_info->column_type = column_type; } - outputbytes = SendFunctionCall(&column_info->proc, values[i]); + /* + * If we have a toasted datum, forcibly detoast it here to avoid + * memory leakage inside the type's output routine. + */ + if (column_info->typisvarlena) + attr = PointerGetDatum(PG_DETOAST_DATUM(values[i])); + else + attr = values[i]; + + outputbytes = SendFunctionCall(&column_info->proc, attr); /* We assume the result will not have been toasted */ pq_sendint(&buf, VARSIZE(outputbytes) - VARHDRSZ, 4); pq_sendbytes(&buf, VARDATA(outputbytes), VARSIZE(outputbytes) - VARHDRSZ); + pfree(outputbytes); + + /* Clean up detoasted copy, if any */ + if (DatumGetPointer(attr) != DatumGetPointer(values[i])) + pfree(DatumGetPointer(attr)); } pfree(values); diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index 3c781bb019..ceaaea5fc3 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -106,7 +106,7 @@ typedef struct int indentLevel; /* current indent level for prettyprint */ bool varprefix; /* TRUE to print prefixes on Vars */ #ifdef PGXC - bool finalise_aggs; /* should datanode finalise the aggregates? */ + bool finalise_aggs; /* should Datanode finalise the aggregates? */ #endif /* PGXC */ } deparse_context; @@ -224,13 +224,13 @@ static void get_rule_orderby(List *orderList, List *targetList, static void get_rule_windowclause(Query *query, deparse_context *context); static void get_rule_windowspec(WindowClause *wc, List *targetList, deparse_context *context); -static char *get_variable(Var *var, int levelsup, bool showstar, +static char *get_variable(Var *var, int levelsup, bool istoplevel, deparse_context *context); static RangeTblEntry *find_rte_by_refname(const char *refname, deparse_context *context); +static Node *find_param_referent(Param *param, deparse_context *context, + deparse_namespace **dpns_p, ListCell **ancestor_cell_p); static void get_parameter(Param *param, deparse_context *context); -static void print_parameter_expr(Node *expr, ListCell *ancestor_cell, - deparse_namespace *dpns, deparse_context *context); static const char *get_simple_binary_op_name(OpExpr *expr); static bool isSimpleNode(Node *node, Node *parentNode, int prettyFlags); static void appendContextKeyword(deparse_context *context, const char *str, @@ -475,7 +475,7 @@ pg_get_viewdef_worker(Oid viewoid, int prettyFlags) * Get the pg_rewrite tuple for the view's SELECT rule */ args[0] = ObjectIdGetDatum(viewoid); - args[1] = PointerGetDatum(ViewSelectRuleName); + args[1] = DirectFunctionCall1(namein, CStringGetDatum(ViewSelectRuleName)); nulls[0] = ' '; nulls[1] = ' '; spirc = SPI_execute_plan(plan_getviewrule, args, nulls, true, 2); @@ -1396,7 +1396,6 @@ pg_get_constraintdef_worker(Oid constraintId, bool fullCommand, appendStringInfo(&buf, " DEFERRABLE"); if (conForm->condeferred) appendStringInfo(&buf, " INITIALLY DEFERRED"); - if (!conForm->convalidated) appendStringInfoString(&buf, " NOT VALID"); @@ -2632,7 +2631,7 @@ make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc, query = getInsertSelectQuery(query, NULL); /* Must acquire locks right away; see notes in get_query_def() */ - AcquireRewriteLocks(query, false); + AcquireRewriteLocks(query, false, false); context.buf = buf; context.namespaces = list_make1(&dpns); @@ -2797,7 +2796,7 @@ get_query_def_from_valuesList(Query *query, StringInfo buf) * consistent results. Note we assume it's OK to scribble on the passed * querytree! */ - AcquireRewriteLocks(query, false); + AcquireRewriteLocks(query, false, false); context.buf = buf; context.namespaces = NIL; @@ -2953,8 +2952,11 @@ get_query_def(Query *query, StringInfo buf, List *parentnamespace, * relations, and fix up deleted columns in JOIN RTEs. This ensures * consistent results. Note we assume it's OK to scribble on the passed * querytree! + * + * We are only deparsing the query (we are not about to execute it), so we + * only need AccessShareLock on the relations it mentions. */ - AcquireRewriteLocks(query, false); + AcquireRewriteLocks(query, false, false); context.buf = buf; context.namespaces = lcons(&dpns, list_copy(parentnamespace)); @@ -3368,11 +3370,12 @@ get_target_list(List *targetList, deparse_context *context, * "foo.*", which is the preferred notation in most contexts, but at * 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 want just "foo", instead. + * different from a whole-row Var). We need to call get_variable + * directly so that we can tell it to do the right thing. */ if (tle->expr && IsA(tle->expr, Var)) { - attname = get_variable((Var *) tle->expr, 0, false, context); + attname = get_variable((Var *) tle->expr, 0, true, context); } else { @@ -3404,7 +3407,7 @@ get_target_list(List *targetList, deparse_context *context, /* * Because the empty target list can generate invalid SQL * clause. Here, just fill a '*' to process a table without - * any columns, this statement will be sent to data nodes + * any columns, this statement will be sent to Datanodes * and treated correctly on remote nodes. */ if (no_targetlist) @@ -3767,8 +3770,8 @@ get_insert_query_def(Query *query, deparse_context *context) #endif /* - * If it's an INSERT ... SELECT or VALUES (...), (...), ... there will be - * a single RTE for the SELECT or VALUES. + * If it's an INSERT ... SELECT or multi-row VALUES, there will be a + * single RTE for the SELECT or VALUES. Plain VALUES has neither. */ foreach(l, query->rtable) { @@ -3814,7 +3817,7 @@ get_insert_query_def(Query *query, deparse_context *context) context->indentLevel += PRETTYINDENT_STD; appendStringInfoChar(buf, ' '); } - appendStringInfo(buf, "INSERT INTO %s (", + appendStringInfo(buf, "INSERT INTO %s ", generate_relation_name(rte->relid, NIL)); /* @@ -3831,6 +3834,8 @@ get_insert_query_def(Query *query, deparse_context *context) values_cell = NULL; strippedexprs = NIL; sep = ""; + if (query->targetList) + appendStringInfoChar(buf, '('); foreach(l, query->targetList) { TargetEntry *tle = (TargetEntry *) lfirst(l); @@ -3867,7 +3872,8 @@ get_insert_query_def(Query *query, deparse_context *context) context, true)); } } - appendStringInfo(buf, ") "); + if (query->targetList) + appendStringInfo(buf, ") "); if (select_rte) { @@ -3880,7 +3886,7 @@ get_insert_query_def(Query *query, deparse_context *context) /* Add the multi-VALUES expression lists */ get_values_def(values_rte->values_lists, context); } - else + else if (strippedexprs) { /* Add the single-VALUES expression list */ appendContextKeyword(context, "VALUES (", @@ -3888,6 +3894,11 @@ get_insert_query_def(Query *query, deparse_context *context) get_rule_expr((Node *) strippedexprs, context, false); appendStringInfoChar(buf, ')'); } + else + { + /* No expressions, so it must be DEFAULT VALUES */ + appendStringInfo(buf, "DEFAULT VALUES"); + } /* Add RETURNING if present */ if (query->returningList) @@ -4241,13 +4252,20 @@ get_utility_query_def(Query *query, deparse_context *context) * the Var's varlevelsup has to be interpreted with respect to a context * above the current one; levelsup indicates the offset. * - * If showstar is TRUE, whole-row Vars are displayed as "foo.*"; - * if FALSE, merely as "foo". + * If istoplevel is TRUE, the Var is at the top level of a SELECT's + * targetlist, which means we need special treatment of whole-row Vars. + * Instead of the normal "tab.*", we'll print "tab.*::typename", which is a + * dirty hack to prevent "tab.*" from being expanded into multiple columns. + * (The parser will strip the useless coercion, so no inefficiency is added in + * dump and reload.) We used to print just "tab" in such cases, but that is + * ambiguous and will yield the wrong result if "tab" is also a plain column + * name in the query. * - * Returns the attname of the Var, or NULL if not determinable. + * Returns the attname of the Var, or NULL if the Var has no attname (because + * it is a whole-row Var). */ static char * -get_variable(Var *var, int levelsup, bool showstar, deparse_context *context) +get_variable(Var *var, int levelsup, bool istoplevel, deparse_context *context) { StringInfo buf = context->buf; RangeTblEntry *rte; @@ -4419,13 +4437,20 @@ get_variable(Var *var, int levelsup, bool showstar, deparse_context *context) Var *aliasvar; aliasvar = (Var *) list_nth(rte->joinaliasvars, attnum - 1); - if (IsA(aliasvar, Var)) + /* we intentionally don't strip implicit coercions here */ + if (aliasvar && IsA(aliasvar, Var)) { return get_variable(aliasvar, var->varlevelsup + levelsup, - showstar, context); + istoplevel, context); } } - /* Unnamed join has neither schemaname nor refname */ + + /* + * Unnamed join has neither schemaname nor refname. (Note: since + * it's unnamed, there is no way the user could have referenced it + * to create a whole-row Var for it. So we don't have to cover + * that case below.) + */ refname = NULL; } } @@ -4441,28 +4466,39 @@ get_variable(Var *var, int levelsup, bool showstar, deparse_context *context) appendStringInfo(buf, "%s.", quote_identifier(schemaname)); appendStringInfoString(buf, quote_identifier(refname)); - if (attname || showstar) - appendStringInfoChar(buf, '.'); + appendStringInfoChar(buf, '.'); } if (attname) appendStringInfoString(buf, quote_identifier(attname)); - else if (showstar) + else + { appendStringInfoChar(buf, '*'); + if (istoplevel) + appendStringInfo(buf, "::%s", + format_type_with_typemod(var->vartype, + var->vartypmod)); + } return attname; } /* - * Get the name of a field of an expression of composite type. - * - * This is fairly straightforward except for the case of a Var of type RECORD. - * Since no actual table or view column is allowed to have type RECORD, such - * a Var must refer to a JOIN or FUNCTION RTE or to a subquery output. We - * drill down to find the ultimate defining expression and attempt to infer - * the field name from it. We ereport if we can't determine the name. + * Get the name of a field of an expression of composite type. The + * expression is usually a Var, but we handle other cases too. * * levelsup is an extra offset to interpret the Var's varlevelsup correctly. + * + * This is fairly straightforward when the expression has a named composite + * type; we need only look up the type in the catalogs. However, the type + * could also be RECORD. Since no actual table or view column is allowed to + * have type RECORD, a Var of type RECORD must refer to a JOIN or FUNCTION RTE + * or to a subquery output. We drill down to find the ultimate defining + * expression and attempt to infer the field name from it. We ereport if we + * can't determine the name. + * + * Similarly, a PARAM of type RECORD has to refer to some expression of + * a determinable composite type. */ static const char * get_name_for_var_field(Var *var, int fieldno, @@ -4487,6 +4523,29 @@ get_name_for_var_field(Var *var, int fieldno, return strVal(list_nth(r->colnames, fieldno - 1)); } + /* + * If it's a Param of type RECORD, try to find what the Param refers to. + */ + if (IsA(var, Param)) + { + Param *param = (Param *) var; + ListCell *ancestor_cell; + + expr = find_param_referent(param, context, &dpns, &ancestor_cell); + if (expr) + { + /* Found a match, so recurse to decipher the field name */ + deparse_namespace save_dpns; + const char *result; + + push_ancestor_plan(dpns, ancestor_cell, &save_dpns); + result = get_name_for_var_field((Var *) expr, fieldno, + 0, context); + pop_ancestor_plan(dpns, &save_dpns); + return result; + } + } + /* * If it's a Var of type RECORD, we have to find what the Var refers to; * if not, we can use get_expr_result_type. If that fails, we try @@ -4674,6 +4733,8 @@ get_name_for_var_field(Var *var, int fieldno, elog(ERROR, "cannot decompile join alias var in plan tree"); Assert(attnum > 0 && attnum <= list_length(rte->joinaliasvars)); expr = (Node *) list_nth(rte->joinaliasvars, attnum - 1); + Assert(expr != NULL); + /* we intentionally don't strip implicit coercions here */ if (IsA(expr, Var)) return get_name_for_var_field((Var *) expr, fieldno, var->varlevelsup + levelsup, @@ -4852,17 +4913,25 @@ find_rte_by_refname(const char *refname, deparse_context *context) } /* - * Display a Param appropriately. + * Try to find the referenced expression for a PARAM_EXEC Param that might + * reference a parameter supplied by an upper NestLoop or SubPlan plan node. + * + * If successful, return the expression and set *dpns_p and *ancestor_cell_p + * appropriately for calling push_ancestor_plan(). If no referent can be + * found, return NULL. */ -static void -get_parameter(Param *param, deparse_context *context) +static Node * +find_param_referent(Param *param, deparse_context *context, + deparse_namespace **dpns_p, ListCell **ancestor_cell_p) { + /* Initialize output parameters to prevent compiler warnings */ + *dpns_p = NULL; + *ancestor_cell_p = NULL; + /* - * If it's a PARAM_EXEC parameter, try to locate the expression from which - * the parameter was computed. This will necessarily be in some ancestor - * of the current expression's PlanState. Note that failing to find a - * referent isn't an error, since the Param might well be a subplan output - * rather than an input. + * If it's a PARAM_EXEC parameter, look for a matching NestLoopParam or + * SubPlan argument. This will necessarily be in some ancestor of the + * current expression's PlanState. */ if (param->paramkind == PARAM_EXEC) { @@ -4897,10 +4966,10 @@ get_parameter(Param *param, deparse_context *context) if (nlp->paramno == param->paramid) { - /* Found a match, so print it */ - print_parameter_expr((Node *) nlp->paramval, lc, - dpns, context); - return; + /* Found a match, so return it */ + *dpns_p = dpns; + *ancestor_cell_p = lc; + return (Node *) nlp->paramval; } } } @@ -4926,9 +4995,10 @@ get_parameter(Param *param, deparse_context *context) if (paramid == param->paramid) { - /* Found a match, so print it */ - print_parameter_expr(arg, lc, dpns, context); - return; + /* Found a match, so return it */ + *dpns_p = dpns; + *ancestor_cell_p = lc; + return arg; } } @@ -4963,50 +5033,71 @@ get_parameter(Param *param, deparse_context *context) } } - /* - * Not PARAM_EXEC, or couldn't find referent: just print $N. - */ - appendStringInfo(context->buf, "$%d", param->paramid); + /* No referent found */ + return NULL; } -/* Print a parameter reference expression found by get_parameter */ +/* + * Display a Param appropriately. + */ static void -print_parameter_expr(Node *expr, ListCell *ancestor_cell, - deparse_namespace *dpns, deparse_context *context) +get_parameter(Param *param, deparse_context *context) { - deparse_namespace save_dpns; - bool save_varprefix; - bool need_paren; - - /* Switch attention to the ancestor plan node */ - push_ancestor_plan(dpns, ancestor_cell, &save_dpns); + Node *expr; + deparse_namespace *dpns; + ListCell *ancestor_cell; /* - * Force prefixing of Vars, since they won't belong to the relation being - * scanned in the original plan node. + * If it's a PARAM_EXEC parameter, try to locate the expression from which + * the parameter was computed. Note that failing to find a referent isn't + * an error, since the Param might well be a subplan output rather than an + * input. */ - save_varprefix = context->varprefix; - context->varprefix = true; + expr = find_param_referent(param, context, &dpns, &ancestor_cell); + if (expr) + { + /* Found a match, so print it */ + deparse_namespace save_dpns; + bool save_varprefix; + bool need_paren; - /* - * A Param's expansion is typically a Var, Aggref, or upper-level Param, - * which wouldn't need extra parentheses. Otherwise, insert parens to - * ensure the expression looks atomic. - */ - need_paren = !(IsA(expr, Var) || - IsA(expr, Aggref) || - IsA(expr, Param)); - if (need_paren) - appendStringInfoChar(context->buf, '('); + /* Switch attention to the ancestor plan node */ + push_ancestor_plan(dpns, ancestor_cell, &save_dpns); - get_rule_expr(expr, context, false); + /* + * Force prefixing of Vars, since they won't belong to the relation + * being scanned in the original plan node. + */ + save_varprefix = context->varprefix; + context->varprefix = true; - if (need_paren) - appendStringInfoChar(context->buf, ')'); + /* + * A Param's expansion is typically a Var, Aggref, or upper-level + * Param, which wouldn't need extra parentheses. Otherwise, insert + * parens to ensure the expression looks atomic. + */ + need_paren = !(IsA(expr, Var) || + IsA(expr, Aggref) || + IsA(expr, Param)); + if (need_paren) + appendStringInfoChar(context->buf, '('); + + get_rule_expr(expr, context, false); + + if (need_paren) + appendStringInfoChar(context->buf, ')'); + + context->varprefix = save_varprefix; + + pop_ancestor_plan(dpns, &save_dpns); - context->varprefix = save_varprefix; + return; + } - pop_ancestor_plan(dpns, &save_dpns); + /* + * Not PARAM_EXEC, or couldn't find referent: just print $N. + */ + appendStringInfo(context->buf, "$%d", param->paramid); } /* @@ -5336,7 +5427,7 @@ get_rule_expr(Node *node, deparse_context *context, switch (nodeTag(node)) { case T_Var: - (void) get_variable((Var *) node, 0, true, context); + (void) get_variable((Var *) node, 0, false, context); break; case T_Const: @@ -6441,7 +6532,7 @@ get_agg_expr(Aggref *aggref, deparse_context *context) * Datanode should send finalised aggregate results. Datanodes evaluate only * transition results. In order to get the finalised aggregate, we enclose * the aggregate call inside final function call, so as to get finalised - * results at the coordinator + * results at the Coordinator */ if (context->finalise_aggs) { diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c index 9c55f296d1..8b8e7cc13c 100644 --- a/src/backend/utils/adt/selfuncs.c +++ b/src/backend/utils/adt/selfuncs.c @@ -83,6 +83,15 @@ * joins, however, the selectivity is defined as the fraction of the left-hand * side relation's rows that are expected to have a match (ie, at least one * row with a TRUE result) in the right-hand side. + * + * For both oprrest and oprjoin functions, the operator's input collation OID + * (if any) is passed using the standard fmgr mechanism, so that the estimator + * function can fetch it with PG_GET_COLLATION(). Note, however, that all + * statistics in pg_statistic are currently built using the database's default + * collation. Thus, in most cases where we are looking at statistics, we + * should ignore the actual operator collation and use DEFAULT_COLLATION_OID. + * We expect that the error induced by doing this is usually not large enough + * to justify complicating matters. *---------- */ @@ -143,7 +152,8 @@ static double ineq_histogram_selectivity(PlannerInfo *root, static double eqjoinsel_inner(Oid operator, VariableStatData *vardata1, VariableStatData *vardata2); static double eqjoinsel_semi(Oid operator, - VariableStatData *vardata1, VariableStatData *vardata2); + VariableStatData *vardata1, VariableStatData *vardata2, + RelOptInfo *inner_rel); static bool convert_to_scalar(Datum value, Oid valuetypid, double *scaledvalue, Datum lobound, Datum hibound, Oid boundstypid, double *scaledlobound, double *scaledhibound); @@ -172,10 +182,15 @@ static bool get_actual_variable_range(PlannerInfo *root, VariableStatData *vardata, Oid sortop, Datum *min, Datum *max); +static RelOptInfo *find_join_input_rel(PlannerInfo *root, Relids relids); static Selectivity prefix_selectivity(PlannerInfo *root, VariableStatData *vardata, Oid vartype, Oid opfamily, Const *prefixcon); -static Selectivity pattern_selectivity(Const *patt, Pattern_Type ptype); +static Selectivity like_selectivity(const char *patt, int pattlen, + bool case_insensitive); +static Selectivity regex_selectivity(const char *patt, int pattlen, + bool case_insensitive, + int fixed_prefix_len); static Datum string_to_datum(const char *str, Oid datatype); static Const *string_to_const(const char *str, Oid datatype); static Const *string_to_bytea_const(const char *str, size_t str_len); @@ -1085,6 +1100,7 @@ patternsel(PG_FUNCTION_ARGS, Pattern_Type ptype, bool negate) Oid operator = PG_GETARG_OID(1); List *args = (List *) PG_GETARG_POINTER(2); int varRelid = PG_GETARG_INT32(3); + Oid collation = PG_GET_COLLATION(); VariableStatData vardata; Node *other; bool varonleft; @@ -1093,9 +1109,9 @@ patternsel(PG_FUNCTION_ARGS, Pattern_Type ptype, bool negate) Oid vartype; Oid opfamily; Pattern_Prefix_Status pstatus; - Const *patt = NULL; + Const *patt; Const *prefix = NULL; - Const *rest = NULL; + Selectivity rest_selec = 0; double result; /* @@ -1185,17 +1201,20 @@ patternsel(PG_FUNCTION_ARGS, Pattern_Type ptype, bool negate) } /* - * Divide pattern into fixed prefix and remainder. XXX we have to assume - * default collation here, because we don't have access to the actual - * input collation for the operator. FIXME ... + * Pull out any fixed prefix implied by the pattern, and estimate the + * fractional selectivity of the remainder of the pattern. Unlike many of + * the other functions in this file, we use the pattern operator's actual + * collation for this step. This is not because we expect the collation + * to make a big difference in the selectivity estimate (it seldom would), + * but because we want to be sure we cache compiled regexps under the + * right cache key, so that they can be re-used at runtime. */ patt = (Const *) other; - pstatus = pattern_fixed_prefix(patt, ptype, DEFAULT_COLLATION_OID, - &prefix, &rest); + pstatus = pattern_fixed_prefix(patt, ptype, collation, + &prefix, &rest_selec); /* - * If necessary, coerce the prefix constant to the right type. (The "rest" - * constant need not be changed.) + * If necessary, coerce the prefix constant to the right type. */ if (prefix && prefix->consttype != vartype) { @@ -1269,15 +1288,13 @@ patternsel(PG_FUNCTION_ARGS, Pattern_Type ptype, bool negate) { Selectivity heursel; Selectivity prefixsel; - Selectivity restsel; if (pstatus == Pattern_Prefix_Partial) prefixsel = prefix_selectivity(root, &vardata, vartype, opfamily, prefix); else prefixsel = 1.0; - restsel = pattern_selectivity(rest, ptype); - heursel = prefixsel * restsel; + heursel = prefixsel * rest_selec; if (selec < 0) /* fewer than 10 histogram entries? */ selec = heursel; @@ -1500,31 +1517,29 @@ booltestsel(PlannerInfo *root, BoolTestType booltesttype, Node *arg, /* * No most-common-value info available. Still have null fraction * information, so use it for IS [NOT] UNKNOWN. Otherwise adjust - * for null fraction and assume an even split for boolean tests. + * for null fraction and assume a 50-50 split of TRUE and FALSE. */ switch (booltesttype) { case IS_UNKNOWN: - - /* - * Use freq_null directly. - */ + /* select only NULL values */ selec = freq_null; break; case IS_NOT_UNKNOWN: - - /* - * Select not unknown (not null) values. Calculate from - * freq_null. - */ + /* select non-NULL values */ selec = 1.0 - freq_null; break; case IS_TRUE: - case IS_NOT_TRUE: case IS_FALSE: - case IS_NOT_FALSE: + /* Assume we select half of the non-NULL values */ selec = (1.0 - freq_null) / 2.0; break; + case IS_NOT_TRUE: + case IS_NOT_FALSE: + /* Assume we select NULLs plus half of the non-NULLs */ + /* equiv. to freq_null + (1.0 - freq_null) / 2.0 */ + selec = (freq_null + 1.0) / 2.0; + break; default: elog(ERROR, "unrecognized booltesttype: %d", (int) booltesttype); @@ -1774,18 +1789,20 @@ scalararraysel(PlannerInfo *root, elem_nulls[i], elmbyval)); if (is_join_clause) - s2 = DatumGetFloat8(FunctionCall5(&oprselproc, - PointerGetDatum(root), - ObjectIdGetDatum(operator), - PointerGetDatum(args), - Int16GetDatum(jointype), - PointerGetDatum(sjinfo))); + s2 = DatumGetFloat8(FunctionCall5Coll(&oprselproc, + clause->inputcollid, + PointerGetDatum(root), + ObjectIdGetDatum(operator), + PointerGetDatum(args), + Int16GetDatum(jointype), + PointerGetDatum(sjinfo))); else - s2 = DatumGetFloat8(FunctionCall4(&oprselproc, - PointerGetDatum(root), - ObjectIdGetDatum(operator), - PointerGetDatum(args), - Int32GetDatum(varRelid))); + s2 = DatumGetFloat8(FunctionCall4Coll(&oprselproc, + clause->inputcollid, + PointerGetDatum(root), + ObjectIdGetDatum(operator), + PointerGetDatum(args), + Int32GetDatum(varRelid))); if (useOr) s1 = s1 + s2 - s1 * s2; else @@ -1816,18 +1833,20 @@ scalararraysel(PlannerInfo *root, */ args = list_make2(leftop, elem); if (is_join_clause) - s2 = DatumGetFloat8(FunctionCall5(&oprselproc, - PointerGetDatum(root), - ObjectIdGetDatum(operator), - PointerGetDatum(args), - Int16GetDatum(jointype), - PointerGetDatum(sjinfo))); + s2 = DatumGetFloat8(FunctionCall5Coll(&oprselproc, + clause->inputcollid, + PointerGetDatum(root), + ObjectIdGetDatum(operator), + PointerGetDatum(args), + Int16GetDatum(jointype), + PointerGetDatum(sjinfo))); else - s2 = DatumGetFloat8(FunctionCall4(&oprselproc, - PointerGetDatum(root), - ObjectIdGetDatum(operator), - PointerGetDatum(args), - Int32GetDatum(varRelid))); + s2 = DatumGetFloat8(FunctionCall4Coll(&oprselproc, + clause->inputcollid, + PointerGetDatum(root), + ObjectIdGetDatum(operator), + PointerGetDatum(args), + Int32GetDatum(varRelid))); if (useOr) s1 = s1 + s2 - s1 * s2; else @@ -1852,18 +1871,20 @@ scalararraysel(PlannerInfo *root, dummyexpr->collation = clause->inputcollid; args = list_make2(leftop, dummyexpr); if (is_join_clause) - s2 = DatumGetFloat8(FunctionCall5(&oprselproc, - PointerGetDatum(root), - ObjectIdGetDatum(operator), - PointerGetDatum(args), - Int16GetDatum(jointype), - PointerGetDatum(sjinfo))); + s2 = DatumGetFloat8(FunctionCall5Coll(&oprselproc, + clause->inputcollid, + PointerGetDatum(root), + ObjectIdGetDatum(operator), + PointerGetDatum(args), + Int16GetDatum(jointype), + PointerGetDatum(sjinfo))); else - s2 = DatumGetFloat8(FunctionCall4(&oprselproc, - PointerGetDatum(root), - ObjectIdGetDatum(operator), - PointerGetDatum(args), - Int32GetDatum(varRelid))); + s2 = DatumGetFloat8(FunctionCall4Coll(&oprselproc, + clause->inputcollid, + PointerGetDatum(root), + ObjectIdGetDatum(operator), + PointerGetDatum(args), + Int32GetDatum(varRelid))); s1 = useOr ? 0.0 : 1.0; /* @@ -1935,6 +1956,7 @@ rowcomparesel(PlannerInfo *root, { Selectivity s1; Oid opno = linitial_oid(clause->opnos); + Oid inputcollid = linitial_oid(clause->inputcollids); List *opargs; bool is_join_clause; @@ -1975,6 +1997,7 @@ rowcomparesel(PlannerInfo *root, /* Estimate selectivity for a join clause. */ s1 = join_selectivity(root, opno, opargs, + inputcollid, jointype, sjinfo); } @@ -1983,6 +2006,7 @@ rowcomparesel(PlannerInfo *root, /* Estimate selectivity for a restriction clause. */ s1 = restriction_selectivity(root, opno, opargs, + inputcollid, varRelid); } @@ -2007,6 +2031,7 @@ eqjoinsel(PG_FUNCTION_ARGS) VariableStatData vardata1; VariableStatData vardata2; bool join_is_reversed; + RelOptInfo *inner_rel; get_join_variables(root, args, sjinfo, &vardata1, &vardata2, &join_is_reversed); @@ -2020,11 +2045,21 @@ eqjoinsel(PG_FUNCTION_ARGS) break; case JOIN_SEMI: case JOIN_ANTI: + /* + * Look up the join's inner relation. min_righthand is sufficient + * information because neither SEMI nor ANTI joins permit any + * reassociation into or out of their RHS, so the righthand will + * always be exactly that set of rels. + */ + inner_rel = find_join_input_rel(root, sjinfo->min_righthand); + if (!join_is_reversed) - selec = eqjoinsel_semi(operator, &vardata1, &vardata2); + selec = eqjoinsel_semi(operator, &vardata1, &vardata2, + inner_rel); else selec = eqjoinsel_semi(get_commutator(operator), - &vardata2, &vardata1); + &vardata2, &vardata1, + inner_rel); break; default: /* other values not expected here */ @@ -2245,22 +2280,10 @@ eqjoinsel_inner(Oid operator, * XXX Can we be smarter if we have an MCV list for just one side? It * seems that if we assume equal distribution for the other side, we * end up with the same answer anyway. - * - * An additional hack we use here is to clamp the nd1 and nd2 values - * to not more than what we are estimating the input relation sizes to - * be, providing a crude correction for the selectivity of restriction - * clauses on those relations. (We don't do that in the other path - * since there we are comparing the nd values to stats for the whole - * relations.) */ double nullfrac1 = stats1 ? stats1->stanullfrac : 0.0; double nullfrac2 = stats2 ? stats2->stanullfrac : 0.0; - if (vardata1->rel) - nd1 = Min(nd1, vardata1->rel->rows); - if (vardata2->rel) - nd2 = Min(nd2, vardata2->rel->rows); - selec = (1.0 - nullfrac1) * (1.0 - nullfrac2); if (nd1 > nd2) selec /= nd1; @@ -2286,7 +2309,8 @@ eqjoinsel_inner(Oid operator, */ static double eqjoinsel_semi(Oid operator, - VariableStatData *vardata1, VariableStatData *vardata2) + VariableStatData *vardata1, VariableStatData *vardata2, + RelOptInfo *inner_rel) { double selec; double nd1; @@ -2306,6 +2330,25 @@ eqjoinsel_semi(Oid operator, nd1 = get_variable_numdistinct(vardata1); nd2 = get_variable_numdistinct(vardata2); + /* + * We clamp nd2 to be not more than what we estimate the inner relation's + * size to be. This is intuitively somewhat reasonable since obviously + * there can't be more than that many distinct values coming from the + * inner rel. The reason for the asymmetry (ie, that we don't clamp nd1 + * likewise) is that this is the only pathway by which restriction clauses + * applied to the inner rel will affect the join result size estimate, + * since set_joinrel_size_estimates will multiply SEMI/ANTI selectivity by + * only the outer rel's size. If we clamped nd1 we'd be double-counting + * the selectivity of outer-rel restrictions. + * + * We can apply this clamping both with respect to the base relation from + * which the join variable comes (if there is just one), and to the + * immediate inner input relation of the current join. + */ + if (vardata2->rel) + nd2 = Min(nd2, vardata2->rel->rows); + nd2 = Min(nd2, inner_rel->rows); + if (HeapTupleIsValid(vardata1->statsTuple)) { stats1 = (Form_pg_statistic) GETSTRUCT(vardata1->statsTuple); @@ -2349,11 +2392,21 @@ eqjoinsel_semi(Oid operator, uncertainfrac, uncertain; int i, - nmatches; + nmatches, + clamped_nvalues2; + + /* + * The clamping above could have resulted in nd2 being less than + * nvalues2; in which case, we assume that precisely the nd2 most + * common values in the relation will appear in the join input, and so + * compare to only the first nd2 members of the MCV list. Of course + * this is frequently wrong, but it's the best bet we can make. + */ + clamped_nvalues2 = Min(nvalues2, nd2); fmgr_info(get_opcode(operator), &eqproc); hasmatch1 = (bool *) palloc0(nvalues1 * sizeof(bool)); - hasmatch2 = (bool *) palloc0(nvalues2 * sizeof(bool)); + hasmatch2 = (bool *) palloc0(clamped_nvalues2 * sizeof(bool)); /* * Note we assume that each MCV will match at most one member of the @@ -2366,7 +2419,7 @@ eqjoinsel_semi(Oid operator, { int j; - for (j = 0; j < nvalues2; j++) + for (j = 0; j < clamped_nvalues2; j++) { if (hasmatch2[j]) continue; @@ -2411,7 +2464,7 @@ eqjoinsel_semi(Oid operator, { nd1 -= nmatches; nd2 -= nmatches; - if (nd1 <= nd2 || nd2 <= 0) + if (nd1 <= nd2 || nd2 < 0) uncertainfrac = 1.0; else uncertainfrac = nd2 / nd1; @@ -2432,12 +2485,7 @@ eqjoinsel_semi(Oid operator, if (nd1 != DEFAULT_NUM_DISTINCT && nd2 != DEFAULT_NUM_DISTINCT) { - if (vardata1->rel) - nd1 = Min(nd1, vardata1->rel->rows); - if (vardata2->rel) - nd2 = Min(nd2, vardata2->rel->rows); - - if (nd1 <= nd2 || nd2 <= 0) + if (nd1 <= nd2 || nd2 < 0) selec = 1.0 - nullfrac1; else selec = (nd2 / nd1) * (1.0 - nullfrac1); @@ -3042,8 +3090,21 @@ estimate_num_groups(PlannerInfo *root, List *groupExprs, double input_rows) double numdistinct; ListCell *l; - /* We should not be called unless query has GROUP BY (or DISTINCT) */ - Assert(groupExprs != NIL); + /* + * We don't ever want to return an estimate of zero groups, as that tends + * to lead to division-by-zero and other unpleasantness. The input_rows + * estimate is usually already at least 1, but clamp it just in case it + * isn't. + */ + input_rows = clamp_row_est(input_rows); + + /* + * If no grouping columns, there's exactly one group. (This can't happen + * for normal cases with GROUP BY or DISTINCT, but it is possible for + * corner cases with set operations.) + */ + if (groupExprs == NIL) + return 1.0; /* * Count groups derived from boolean grouping expressions. For other @@ -3089,7 +3150,9 @@ estimate_num_groups(PlannerInfo *root, List *groupExprs, double input_rows) * PlaceHolderVar doesn't change the number of groups, which boils * down to ignoring the possible addition of nulls to the result set). */ - varshere = pull_var_clause(groupexpr, PVC_RECURSE_PLACEHOLDERS); + varshere = pull_var_clause(groupexpr, + PVC_RECURSE_AGGREGATES, + PVC_RECURSE_PLACEHOLDERS); /* * If we find any variable-free GROUP BY item, then either it is a @@ -4093,7 +4156,9 @@ get_join_variables(PlannerInfo *root, List *args, SpecialJoinInfo *sjinfo, * commonly the same as the exposed type of the variable argument, * but can be different in binary-compatible-type cases. * isunique: TRUE if we were able to match the var to a unique index, - * implying its values are unique for this query. + * implying its values are unique for this query. (Caution: this + * should be trusted for statistical purposes only, since we do not + * check indimmediate.) * * Caller is responsible for doing ReleaseVariableStats() before exiting. */ @@ -4645,6 +4710,7 @@ get_actual_variable_range(PlannerInfo *root, VariableStatData *vardata, HeapTuple tup; Datum values[INDEX_MAX_KEYS]; bool isnull[INDEX_MAX_KEYS]; + SnapshotData SnapshotDirty; estate = CreateExecutorState(); econtext = GetPerTupleExprContext(estate); @@ -4667,6 +4733,7 @@ get_actual_variable_range(PlannerInfo *root, VariableStatData *vardata, slot = MakeSingleTupleTableSlot(RelationGetDescr(heapRel)); econtext->ecxt_scantuple = slot; get_typlenbyval(vardata->atttype, &typLen, &typByVal); + InitDirtySnapshot(SnapshotDirty); /* set up an IS NOT NULL scan key so that we ignore nulls */ ScanKeyEntryInitialize(&scankeys[0], @@ -4683,8 +4750,23 @@ get_actual_variable_range(PlannerInfo *root, VariableStatData *vardata, /* If min is requested ... */ if (min) { - index_scan = index_beginscan(heapRel, indexRel, SnapshotNow, - 1, 0); + /* + * In principle, we should scan the index with our current + * active snapshot, which is the best approximation we've got + * to what the query will see when executed. But that won't + * be exact if a new snap is taken before running the query, + * and it can be very expensive if a lot of uncommitted rows + * exist at the end of the index (because we'll laboriously + * fetch each one and reject it). What seems like a good + * compromise is to use SnapshotDirty. That will accept + * uncommitted rows, and thus avoid fetching multiple heap + * tuples in this scenario. On the other hand, it will reject + * known-dead rows, and thus not give a bogus answer when the + * extreme value has been deleted; that case motivates not + * using SnapshotAny here. + */ + index_scan = index_beginscan(heapRel, indexRel, + &SnapshotDirty, 1, 0); index_rescan(index_scan, scankeys, 1, NULL, 0); /* Fetch first tuple in sortop's direction */ @@ -4715,8 +4797,8 @@ get_actual_variable_range(PlannerInfo *root, VariableStatData *vardata, /* If max is requested, and we didn't find the index is empty */ if (max && have_data) { - index_scan = index_beginscan(heapRel, indexRel, SnapshotNow, - 1, 0); + index_scan = index_beginscan(heapRel, indexRel, + &SnapshotDirty, 1, 0); index_rescan(index_scan, scankeys, 1, NULL, 0); /* Fetch first tuple in reverse direction */ @@ -4761,6 +4843,37 @@ get_actual_variable_range(PlannerInfo *root, VariableStatData *vardata, return have_data; } +/* + * find_join_input_rel + * Look up the input relation for a join. + * + * We assume that the input relation's RelOptInfo must have been constructed + * already. + */ +static RelOptInfo * +find_join_input_rel(PlannerInfo *root, Relids relids) +{ + RelOptInfo *rel = NULL; + + switch (bms_membership(relids)) + { + case BMS_EMPTY_SET: + /* should not happen */ + break; + case BMS_SINGLETON: + rel = find_base_rel(root, bms_singleton_member(relids)); + break; + case BMS_MULTIPLE: + rel = find_join_rel(root, relids); + break; + } + + if (rel == NULL) + elog(ERROR, "could not find RelOptInfo for given relids"); + + return rel; +} + /*------------------------------------------------------------------------- * @@ -4808,9 +4921,9 @@ pattern_char_isalpha(char c, bool is_multibyte, * * *prefix is set to a palloc'd prefix string (in the form of a Const node), * or to NULL if no fixed prefix exists for the pattern. - * *rest is set to a palloc'd Const representing the remainder of the pattern - * after the portion describing the fixed prefix. - * Each of these has the same type (TEXT or BYTEA) as the given pattern Const. + * If rest_selec is not NULL, *rest_selec is set to an estimate of the + * selectivity of the remainder of the pattern (without any fixed prefix). + * The prefix Const has the same type (TEXT or BYTEA) as the input pattern. * * The return value distinguishes no fixed prefix, a partial prefix, * or an exact-match-only pattern. @@ -4818,12 +4931,11 @@ pattern_char_isalpha(char c, bool is_multibyte, static Pattern_Prefix_Status like_fixed_prefix(Const *patt_const, bool case_insensitive, Oid collation, - Const **prefix_const, Const **rest_const) + Const **prefix_const, Selectivity *rest_selec) { char *match; char *patt; int pattlen; - char *rest; Oid typeid = patt_const->consttype; int pos, match_pos; @@ -4903,18 +5015,15 @@ like_fixed_prefix(Const *patt_const, bool case_insensitive, Oid collation, } match[match_pos] = '\0'; - rest = &patt[pos]; if (typeid != BYTEAOID) - { *prefix_const = string_to_const(match, typeid); - *rest_const = string_to_const(rest, typeid); - } else - { *prefix_const = string_to_bytea_const(match, match_pos); - *rest_const = string_to_bytea_const(rest, pattlen - pos); - } + + if (rest_selec != NULL) + *rest_selec = like_selectivity(&patt[pos], pattlen - pos, + case_insensitive); pfree(patt); pfree(match); @@ -4931,20 +5040,11 @@ like_fixed_prefix(Const *patt_const, bool case_insensitive, Oid collation, static Pattern_Prefix_Status regex_fixed_prefix(Const *patt_const, bool case_insensitive, Oid collation, - Const **prefix_const, Const **rest_const) + Const **prefix_const, Selectivity *rest_selec) { - char *match; - int pos, - match_pos, - prev_pos, - prev_match_pos; - bool have_leading_paren; - char *patt; - char *rest; Oid typeid = patt_const->consttype; - bool is_multibyte = (pg_database_encoding_max_length() > 1); - pg_locale_t locale = 0; - bool locale_is_c = false; + char *prefix; + bool exact; /* * Should be unnecessary, there are no bytea regex operators defined. As @@ -4956,201 +5056,79 @@ regex_fixed_prefix(Const *patt_const, bool case_insensitive, Oid collation, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("regular-expression matching not supported on type bytea"))); - if (case_insensitive) - { - /* If case-insensitive, we need locale info */ - if (lc_ctype_is_c(collation)) - locale_is_c = true; - else if (collation != DEFAULT_COLLATION_OID) - { - if (!OidIsValid(collation)) - { - /* - * This typically means that the parser could not resolve a - * conflict of implicit collations, so report it that way. - */ - ereport(ERROR, - (errcode(ERRCODE_INDETERMINATE_COLLATION), - errmsg("could not determine which collation to use for regular expression"), - errhint("Use the COLLATE clause to set the collation explicitly."))); - } - locale = pg_newlocale_from_collation(collation); - } - } - - /* the right-hand const is type text for all of these */ - patt = TextDatumGetCString(patt_const->constvalue); + /* Use the regexp machinery to extract the prefix, if any */ + prefix = regexp_fixed_prefix(DatumGetTextPP(patt_const->constvalue), + case_insensitive, collation, + &exact); - /* - * Check for ARE director prefix. It's worth our trouble to recognize - * this because similar_escape() used to use it, and some other code might - * still use it, to force ARE mode. - */ - pos = 0; - if (strncmp(patt, "***:", 4) == 0) - pos = 4; - - /* Pattern must be anchored left */ - if (patt[pos] != '^') + if (prefix == NULL) { - rest = patt; - *prefix_const = NULL; - *rest_const = string_to_const(rest, typeid); - - return Pattern_Prefix_None; - } - pos++; - /* - * If '|' is present in pattern, then there may be multiple alternatives - * for the start of the string. (There are cases where this isn't so, for - * instance if the '|' is inside parens, but detecting that reliably is - * too hard.) - */ - if (strchr(patt + pos, '|') != NULL) - { - rest = patt; + if (rest_selec != NULL) + { + char *patt = TextDatumGetCString(patt_const->constvalue); - *prefix_const = NULL; - *rest_const = string_to_const(rest, typeid); + *rest_selec = regex_selectivity(patt, strlen(patt), + case_insensitive, + 0); + pfree(patt); + } return Pattern_Prefix_None; } - /* OK, allocate space for pattern */ - match = palloc(strlen(patt) + 1); - prev_match_pos = match_pos = 0; + *prefix_const = string_to_const(prefix, typeid); - /* - * We special-case the syntax '^(...)$' because psql uses it. But beware: - * sequences beginning "(?" are not what they seem, unless they're "(?:". - * (We must recognize that because of similar_escape().) - */ - have_leading_paren = false; - if (patt[pos] == '(' && - (patt[pos + 1] != '?' || patt[pos + 2] == ':')) + if (rest_selec != NULL) { - have_leading_paren = true; - pos += (patt[pos + 1] != '?' ? 1 : 3); - } - - /* Scan remainder of pattern */ - prev_pos = pos; - while (patt[pos]) - { - int len; - - /* - * Check for characters that indicate multiple possible matches here. - * Also, drop out at ')' or '$' so the termination test works right. - */ - if (patt[pos] == '.' || - patt[pos] == '(' || - patt[pos] == ')' || - patt[pos] == '[' || - patt[pos] == '^' || - patt[pos] == '$') - break; - - /* Stop if case-varying character (it's sort of a wildcard) */ - if (case_insensitive && - pattern_char_isalpha(patt[pos], is_multibyte, locale, locale_is_c)) - break; - - /* - * Check for quantifiers. Except for +, this means the preceding - * character is optional, so we must remove it from the prefix too! - */ - if (patt[pos] == '*' || - patt[pos] == '?' || - patt[pos] == '{') + if (exact) { - match_pos = prev_match_pos; - pos = prev_pos; - break; + /* Exact match, so there's no additional selectivity */ + *rest_selec = 1.0; } - if (patt[pos] == '+') + else { - pos = prev_pos; - break; - } + char *patt = TextDatumGetCString(patt_const->constvalue); - /* - * Normally, backslash quotes the next character. But in AREs, - * backslash followed by alphanumeric is an escape, not a quoted - * character. Must treat it as having multiple possible matches. - * Note: since only ASCII alphanumerics are escapes, we don't have to - * be paranoid about multibyte or collations here. - */ - if (patt[pos] == '\\') - { - if (isalnum((unsigned char) patt[pos + 1])) - break; - pos++; - if (patt[pos] == '\0') - break; + *rest_selec = regex_selectivity(patt, strlen(patt), + case_insensitive, + strlen(prefix)); + pfree(patt); } - /* save position in case we need to back up on next loop cycle */ - prev_match_pos = match_pos; - prev_pos = pos; - /* must use encoding-aware processing here */ - len = pg_mblen(&patt[pos]); - memcpy(&match[match_pos], &patt[pos], len); - match_pos += len; - pos += len; } - match[match_pos] = '\0'; - rest = &patt[pos]; - - if (have_leading_paren && patt[pos] == ')') - pos++; - - if (patt[pos] == '$' && patt[pos + 1] == '\0') - { - rest = &patt[pos + 1]; - - *prefix_const = string_to_const(match, typeid); - *rest_const = string_to_const(rest, typeid); - - pfree(patt); - pfree(match); + pfree(prefix); + if (exact) return Pattern_Prefix_Exact; /* pattern specifies exact match */ - } - - *prefix_const = string_to_const(match, typeid); - *rest_const = string_to_const(rest, typeid); - - pfree(patt); - pfree(match); - - if (match_pos > 0) + else return Pattern_Prefix_Partial; - - return Pattern_Prefix_None; } Pattern_Prefix_Status pattern_fixed_prefix(Const *patt, Pattern_Type ptype, Oid collation, - Const **prefix, Const **rest) + Const **prefix, Selectivity *rest_selec) { Pattern_Prefix_Status result; switch (ptype) { case Pattern_Type_Like: - result = like_fixed_prefix(patt, false, collation, prefix, rest); + result = like_fixed_prefix(patt, false, collation, + prefix, rest_selec); break; case Pattern_Type_Like_IC: - result = like_fixed_prefix(patt, true, collation, prefix, rest); + result = like_fixed_prefix(patt, true, collation, + prefix, rest_selec); break; case Pattern_Type_Regex: - result = regex_fixed_prefix(patt, false, collation, prefix, rest); + result = regex_fixed_prefix(patt, false, collation, + prefix, rest_selec); break; case Pattern_Type_Regex_IC: - result = regex_fixed_prefix(patt, true, collation, prefix, rest); + result = regex_fixed_prefix(patt, true, collation, + prefix, rest_selec); break; default: elog(ERROR, "unrecognized ptype: %d", (int) ptype); @@ -5265,7 +5243,8 @@ prefix_selectivity(PlannerInfo *root, VariableStatData *vardata, /* * Estimate the selectivity of a pattern of the specified type. - * Note that any fixed prefix of the pattern will have been removed already. + * Note that any fixed prefix of the pattern will have been removed already, + * so actually we may be looking at just a fragment of the pattern. * * For now, we use a very simplistic approach: fixed characters reduce the * selectivity a good deal, character ranges reduce it a little, @@ -5279,37 +5258,10 @@ prefix_selectivity(PlannerInfo *root, VariableStatData *vardata, #define PARTIAL_WILDCARD_SEL 2.0 static Selectivity -like_selectivity(Const *patt_const, bool case_insensitive) +like_selectivity(const char *patt, int pattlen, bool case_insensitive) { Selectivity sel = 1.0; int pos; - Oid typeid = patt_const->consttype; - char *patt; - int pattlen; - - /* the right-hand const is type text or bytea */ - Assert(typeid == BYTEAOID || typeid == TEXTOID); - - if (typeid == BYTEAOID && case_insensitive) - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("case insensitive matching not supported on type bytea"))); - - if (typeid != BYTEAOID) - { - patt = TextDatumGetCString(patt_const->constvalue); - pattlen = strlen(patt); - } - else - { - bytea *bstr = DatumGetByteaP(patt_const->constvalue); - - pattlen = VARSIZE(bstr) - VARHDRSZ; - patt = (char *) palloc(pattlen); - memcpy(patt, VARDATA(bstr), pattlen); - if ((Pointer) bstr != DatumGetPointer(patt_const->constvalue)) - pfree(bstr); - } /* Skip any leading wildcard; it's already factored into initial sel */ for (pos = 0; pos < pattlen; pos++) @@ -5339,13 +5291,11 @@ like_selectivity(Const *patt_const, bool case_insensitive) /* Could get sel > 1 if multiple wildcards */ if (sel > 1.0) sel = 1.0; - - pfree(patt); return sel; } static Selectivity -regex_selectivity_sub(char *patt, int pattlen, bool case_insensitive) +regex_selectivity_sub(const char *patt, int pattlen, bool case_insensitive) { Selectivity sel = 1.0; int paren_depth = 0; @@ -5438,26 +5388,10 @@ regex_selectivity_sub(char *patt, int pattlen, bool case_insensitive) } static Selectivity -regex_selectivity(Const *patt_const, bool case_insensitive) +regex_selectivity(const char *patt, int pattlen, bool case_insensitive, + int fixed_prefix_len) { Selectivity sel; - char *patt; - int pattlen; - Oid typeid = patt_const->consttype; - - /* - * Should be unnecessary, there are no bytea regex operators defined. As - * such, it should be noted that the rest of this function has *not* been - * made safe for binary (possibly NULL containing) strings. - */ - if (typeid == BYTEAOID) - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("regular-expression matching not supported on type bytea"))); - - /* the right-hand const is type text for all of these */ - patt = TextDatumGetCString(patt_const->constvalue); - pattlen = strlen(patt); /* If patt doesn't end with $, consider it to have a trailing wildcard */ if (pattlen > 0 && patt[pattlen - 1] == '$' && @@ -5471,37 +5405,15 @@ regex_selectivity(Const *patt_const, bool case_insensitive) /* no trailing $ */ sel = regex_selectivity_sub(patt, pattlen, case_insensitive); sel *= FULL_WILDCARD_SEL; - if (sel > 1.0) - sel = 1.0; } - return sel; -} -static Selectivity -pattern_selectivity(Const *patt, Pattern_Type ptype) -{ - Selectivity result; + /* If there's a fixed prefix, discount its selectivity */ + if (fixed_prefix_len > 0) + sel /= pow(FIXED_CHAR_SEL, fixed_prefix_len); - switch (ptype) - { - case Pattern_Type_Like: - result = like_selectivity(patt, false); - break; - case Pattern_Type_Like_IC: - result = like_selectivity(patt, true); - break; - case Pattern_Type_Regex: - result = regex_selectivity(patt, false); - break; - case Pattern_Type_Regex_IC: - result = regex_selectivity(patt, true); - break; - default: - elog(ERROR, "unrecognized ptype: %d", (int) ptype); - result = 1.0; /* keep compiler quiet */ - break; - } - return result; + /* Make sure result stays in range */ + CLAMP_PROBABILITY(sel); + return sel; } @@ -6374,6 +6286,20 @@ gistcostestimate(PG_FUNCTION_ARGS) PG_RETURN_VOID(); } + +/* + * Support routines for gincostestimate + */ + +typedef struct +{ + bool haveFullScan; + double partialEntries; + double exactEntries; + double searchEntries; + double arrayScans; +} GinQualCounts; + /* Find the index column matching "op"; return its index, or -1 if no match */ static int find_index_column(Node *op, IndexOptInfo *index) @@ -6389,6 +6315,277 @@ find_index_column(Node *op, IndexOptInfo *index) return -1; } +/* + * Estimate the number of index terms that need to be searched for while + * testing the given GIN query, and increment the counts in *counts + * appropriately. If the query is unsatisfiable, return false. + */ +static bool +gincost_pattern(IndexOptInfo *index, int indexcol, + Oid clause_op, Datum query, + GinQualCounts *counts) +{ + Oid extractProcOid; + int strategy_op; + Oid lefttype, + righttype; + int32 nentries = 0; + bool *partial_matches = NULL; + Pointer *extra_data = NULL; + bool *nullFlags = NULL; + int32 searchMode = GIN_SEARCH_MODE_DEFAULT; + int32 i; + + /* + * Get the operator's strategy number and declared input data types + * within the index opfamily. (We don't need the latter, but we use + * get_op_opfamily_properties because it will throw error if it fails + * to find a matching pg_amop entry.) + */ + get_op_opfamily_properties(clause_op, index->opfamily[indexcol], false, + &strategy_op, &lefttype, &righttype); + + /* + * GIN always uses the "default" support functions, which are those + * with lefttype == righttype == the opclass' opcintype (see + * IndexSupportInitialize in relcache.c). + */ + extractProcOid = get_opfamily_proc(index->opfamily[indexcol], + index->opcintype[indexcol], + index->opcintype[indexcol], + GIN_EXTRACTQUERY_PROC); + + if (!OidIsValid(extractProcOid)) + { + /* should not happen; throw same error as index_getprocinfo */ + elog(ERROR, "missing support function %d for attribute %d of index \"%s\"", + GIN_EXTRACTQUERY_PROC, indexcol + 1, + get_rel_name(index->indexoid)); + } + + OidFunctionCall7(extractProcOid, + query, + PointerGetDatum(&nentries), + UInt16GetDatum(strategy_op), + PointerGetDatum(&partial_matches), + PointerGetDatum(&extra_data), + PointerGetDatum(&nullFlags), + PointerGetDatum(&searchMode)); + + if (nentries <= 0 && searchMode == GIN_SEARCH_MODE_DEFAULT) + { + /* No match is possible */ + return false; + } + + for (i = 0; i < nentries; i++) + { + /* + * For partial match we haven't any information to estimate number of + * matched entries in index, so, we just estimate it as 100 + */ + if (partial_matches && partial_matches[i]) + counts->partialEntries += 100; + else + counts->exactEntries++; + + counts->searchEntries++; + } + + if (searchMode == GIN_SEARCH_MODE_INCLUDE_EMPTY) + { + /* Treat "include empty" like an exact-match item */ + counts->exactEntries++; + counts->searchEntries++; + } + else if (searchMode != GIN_SEARCH_MODE_DEFAULT) + { + /* It's GIN_SEARCH_MODE_ALL */ + counts->haveFullScan = true; + } + + return true; +} + +/* + * Estimate the number of index terms that need to be searched for while + * testing the given GIN index clause, and increment the counts in *counts + * appropriately. If the query is unsatisfiable, return false. + */ +static bool +gincost_opexpr(IndexOptInfo *index, OpExpr *clause, GinQualCounts *counts) +{ + Node *leftop = get_leftop((Expr *) clause); + Node *rightop = get_rightop((Expr *) clause); + Oid clause_op = clause->opno; + int indexcol; + Node *operand; + + /* Locate the operand being compared to the index column */ + if ((indexcol = find_index_column(leftop, index)) >= 0) + { + operand = rightop; + } + else if ((indexcol = find_index_column(rightop, index)) >= 0) + { + operand = leftop; + clause_op = get_commutator(clause_op); + } + else + { + elog(ERROR, "could not match index to operand"); + operand = NULL; /* keep compiler quiet */ + } + + if (IsA(operand, RelabelType)) + operand = (Node *) ((RelabelType *) operand)->arg; + + /* + * It's impossible to call extractQuery method for unknown operand. So + * unless operand is a Const we can't do much; just assume there will + * be one ordinary search entry from the operand at runtime. + */ + if (!IsA(operand, Const)) + { + counts->exactEntries++; + counts->searchEntries++; + return true; + } + + /* If Const is null, there can be no matches */ + if (((Const *) operand)->constisnull) + return false; + + /* Otherwise, apply extractQuery and get the actual term counts */ + return gincost_pattern(index, indexcol, clause_op, + ((Const *) operand)->constvalue, + counts); +} + +/* + * Estimate the number of index terms that need to be searched for while + * testing the given GIN index clause, and increment the counts in *counts + * appropriately. If the query is unsatisfiable, return false. + * + * A ScalarArrayOpExpr will give rise to N separate indexscans at runtime, + * each of which involves one value from the RHS array, plus all the + * non-array quals (if any). To model this, we average the counts across + * the RHS elements, and add the averages to the counts in *counts (which + * correspond to per-indexscan costs). We also multiply counts->arrayScans + * by N, causing gincostestimate to scale up its estimates accordingly. + */ +static bool +gincost_scalararrayopexpr(IndexOptInfo *index, ScalarArrayOpExpr *clause, + double numIndexEntries, + GinQualCounts *counts) +{ + Node *leftop = (Node *) linitial(clause->args); + Node *rightop = (Node *) lsecond(clause->args); + Oid clause_op = clause->opno; + int indexcol; + ArrayType *arrayval; + int16 elmlen; + bool elmbyval; + char elmalign; + int numElems; + Datum *elemValues; + bool *elemNulls; + GinQualCounts arraycounts; + int numPossible = 0; + int i; + + Assert(clause->useOr); + + /* index column must be on the left */ + if ((indexcol = find_index_column(leftop, index)) < 0) + elog(ERROR, "could not match index to operand"); + + if (IsA(rightop, RelabelType)) + rightop = (Node *) ((RelabelType *) rightop)->arg; + + /* + * It's impossible to call extractQuery method for unknown operand. So + * unless operand is a Const we can't do much; just assume there will + * be one ordinary search entry from each array entry at runtime, and + * fall back on a probably-bad estimate of the number of array entries. + */ + if (!IsA(rightop, Const)) + { + counts->exactEntries++; + counts->searchEntries++; + counts->arrayScans *= estimate_array_length(rightop); + return true; + } + + /* If Const is null, there can be no matches */ + if (((Const *) rightop)->constisnull) + return false; + + /* Otherwise, extract the array elements and iterate over them */ + arrayval = DatumGetArrayTypeP(((Const *) rightop)->constvalue); + get_typlenbyvalalign(ARR_ELEMTYPE(arrayval), + &elmlen, &elmbyval, &elmalign); + deconstruct_array(arrayval, + ARR_ELEMTYPE(arrayval), + elmlen, elmbyval, elmalign, + &elemValues, &elemNulls, &numElems); + + memset(&arraycounts, 0, sizeof(arraycounts)); + + for (i = 0; i < numElems; i++) + { + GinQualCounts elemcounts; + + /* NULL can't match anything, so ignore, as the executor will */ + if (elemNulls[i]) + continue; + + /* Otherwise, apply extractQuery and get the actual term counts */ + memset(&elemcounts, 0, sizeof(elemcounts)); + + if (gincost_pattern(index, indexcol, clause_op, elemValues[i], + &elemcounts)) + { + /* We ignore array elements that are unsatisfiable patterns */ + numPossible++; + + if (elemcounts.haveFullScan) + { + /* + * Full index scan will be required. We treat this as if + * every key in the index had been listed in the query; is + * that reasonable? + */ + elemcounts.partialEntries = 0; + elemcounts.exactEntries = numIndexEntries; + elemcounts.searchEntries = numIndexEntries; + } + arraycounts.partialEntries += elemcounts.partialEntries; + arraycounts.exactEntries += elemcounts.exactEntries; + arraycounts.searchEntries += elemcounts.searchEntries; + } + } + + if (numPossible == 0) + { + /* No satisfiable patterns in the array */ + return false; + } + + /* + * Now add the averages to the global counts. This will give us an + * estimate of the average number of terms searched for in each indexscan, + * including contributions from both array and non-array quals. + */ + counts->partialEntries += arraycounts.partialEntries / numPossible; + counts->exactEntries += arraycounts.exactEntries / numPossible; + counts->searchEntries += arraycounts.searchEntries / numPossible; + + counts->arrayScans *= numPossible; + + return true; +} + /* * GIN has search behavior completely different from other index types */ @@ -6412,17 +6609,15 @@ gincostestimate(PG_FUNCTION_ARGS) numDataPages, numPendingPages, numEntries; - bool haveFullScan = false; - double partialEntriesInQuals = 0.0; - double searchEntriesInQuals = 0.0; - double exactEntriesInQuals = 0.0; + GinQualCounts counts; + bool matchPossible; double entryPagesFetched, dataPagesFetched, dataPagesFetchedBySel; double qual_op_cost, qual_arg_cost, spc_random_page_cost, - num_scans; + outer_scans; QualCost index_qual_cost; Relation indexRel; GinStatsData ginStats; @@ -6508,199 +6703,113 @@ gincostestimate(PG_FUNCTION_ARGS) /* * Examine quals to estimate number of search entries & partial matches */ + memset(&counts, 0, sizeof(counts)); + counts.arrayScans = 1; + matchPossible = true; + foreach(l, indexQuals) { RestrictInfo *rinfo = (RestrictInfo *) lfirst(l); Expr *clause; - Node *leftop, - *rightop, - *operand; - Oid extractProcOid; - Oid clause_op; - int strategy_op; - Oid lefttype, - righttype; - int32 nentries = 0; - bool *partial_matches = NULL; - Pointer *extra_data = NULL; - bool *nullFlags = NULL; - int32 searchMode = GIN_SEARCH_MODE_DEFAULT; - int indexcol; Assert(IsA(rinfo, RestrictInfo)); clause = rinfo->clause; - Assert(IsA(clause, OpExpr)); - leftop = get_leftop(clause); - rightop = get_rightop(clause); - clause_op = ((OpExpr *) clause)->opno; - - if ((indexcol = find_index_column(leftop, index)) >= 0) - { - operand = rightop; - } - else if ((indexcol = find_index_column(rightop, index)) >= 0) - { - operand = leftop; - clause_op = get_commutator(clause_op); - } - else - { - elog(ERROR, "could not match index to operand"); - operand = NULL; /* keep compiler quiet */ - } - - if (IsA(operand, RelabelType)) - operand = (Node *) ((RelabelType *) operand)->arg; - - /* - * It's impossible to call extractQuery method for unknown operand. So - * unless operand is a Const we can't do much; just assume there will - * be one ordinary search entry from the operand at runtime. - */ - if (!IsA(operand, Const)) - { - searchEntriesInQuals++; - continue; - } - - /* If Const is null, there can be no matches */ - if (((Const *) operand)->constisnull) - { - *indexStartupCost = 0; - *indexTotalCost = 0; - *indexSelectivity = 0; - PG_RETURN_VOID(); - } - - /* - * Get the operator's strategy number and declared input data types - * within the index opfamily. (We don't need the latter, but we use - * get_op_opfamily_properties because it will throw error if it fails - * to find a matching pg_amop entry.) - */ - get_op_opfamily_properties(clause_op, index->opfamily[indexcol], false, - &strategy_op, &lefttype, &righttype); - - /* - * GIN always uses the "default" support functions, which are those - * with lefttype == righttype == the opclass' opcintype (see - * IndexSupportInitialize in relcache.c). - */ - extractProcOid = get_opfamily_proc(index->opfamily[indexcol], - index->opcintype[indexcol], - index->opcintype[indexcol], - GIN_EXTRACTQUERY_PROC); - - if (!OidIsValid(extractProcOid)) + if (IsA(clause, OpExpr)) { - /* should not happen; throw same error as index_getprocinfo */ - elog(ERROR, "missing support function %d for attribute %d of index \"%s\"", - GIN_EXTRACTQUERY_PROC, indexcol + 1, - get_rel_name(index->indexoid)); + matchPossible = gincost_opexpr(index, + (OpExpr *) clause, + &counts); + if (!matchPossible) + break; } - - OidFunctionCall7(extractProcOid, - ((Const *) operand)->constvalue, - PointerGetDatum(&nentries), - UInt16GetDatum(strategy_op), - PointerGetDatum(&partial_matches), - PointerGetDatum(&extra_data), - PointerGetDatum(&nullFlags), - PointerGetDatum(&searchMode)); - - if (nentries <= 0 && searchMode == GIN_SEARCH_MODE_DEFAULT) + else if (IsA(clause, ScalarArrayOpExpr)) { - /* No match is possible */ - *indexStartupCost = 0; - *indexTotalCost = 0; - *indexSelectivity = 0; - PG_RETURN_VOID(); + matchPossible = gincost_scalararrayopexpr(index, + (ScalarArrayOpExpr *) clause, + numEntries, + &counts); + if (!matchPossible) + break; } else { - int32 i; - - for (i = 0; i < nentries; i++) - { - /* - * For partial match we haven't any information to estimate - * number of matched entries in index, so, we just estimate it - * as 100 - */ - if (partial_matches && partial_matches[i]) - partialEntriesInQuals += 100; - else - exactEntriesInQuals++; - - searchEntriesInQuals++; - } + /* shouldn't be anything else for a GIN index */ + elog(ERROR, "unsupported GIN indexqual type: %d", + (int) nodeTag(clause)); } + } - if (searchMode == GIN_SEARCH_MODE_INCLUDE_EMPTY) - { - /* Treat "include empty" like an exact-match item */ - exactEntriesInQuals++; - searchEntriesInQuals++; - } - else if (searchMode != GIN_SEARCH_MODE_DEFAULT) - { - /* It's GIN_SEARCH_MODE_ALL */ - haveFullScan = true; - } + /* Fall out if there were any provably-unsatisfiable quals */ + if (!matchPossible) + { + *indexStartupCost = 0; + *indexTotalCost = 0; + *indexSelectivity = 0; + PG_RETURN_VOID(); } - if (haveFullScan || indexQuals == NIL) + if (counts.haveFullScan || indexQuals == NIL) { /* * Full index scan will be required. We treat this as if every key in * the index had been listed in the query; is that reasonable? */ - searchEntriesInQuals = numEntries; + counts.partialEntries = 0; + counts.exactEntries = numEntries; + counts.searchEntries = numEntries; } /* Will we have more than one iteration of a nestloop scan? */ if (outer_rel != NULL && outer_rel->rows > 1) - num_scans = outer_rel->rows; + outer_scans = outer_rel->rows; else - num_scans = 1; + outer_scans = 1; /* - * cost to begin scan, first of all, pay attention to pending list. + * Compute cost to begin scan, first of all, pay attention to pending list. */ entryPagesFetched = numPendingPages; /* * Estimate number of entry pages read. We need to do - * searchEntriesInQuals searches. Use a power function as it should be, + * counts.searchEntries searches. Use a power function as it should be, * but tuples on leaf pages usually is much greater. Here we include all * searches in entry tree, including search of first entry in partial * match algorithm */ - entryPagesFetched += ceil(searchEntriesInQuals * rint(pow(numEntryPages, 0.15))); + entryPagesFetched += ceil(counts.searchEntries * rint(pow(numEntryPages, 0.15))); /* * 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. */ - entryPagesFetched += ceil(numEntryPages * partialEntriesInQuals / numEntries); + entryPagesFetched += ceil(numEntryPages * counts.partialEntries / numEntries); /* * Partial match algorithm reads all data pages before doing actual scan, - * so it's a startup cost. Again, we havn't any useful stats here, so, + * so it's a startup cost. Again, we haven't any useful stats here, so, * estimate it as proportion */ - dataPagesFetched = ceil(numDataPages * partialEntriesInQuals / numEntries); + dataPagesFetched = ceil(numDataPages * counts.partialEntries / numEntries); - /* calculate cache effects */ - if (num_scans > 1 || searchEntriesInQuals > 1) + /* + * Calculate cache effects if more than one scan due to nestloops or array + * quals. The result is pro-rated per nestloop scan, but the array qual + * factor shouldn't be pro-rated (compare genericcostestimate). + */ + if (outer_scans > 1 || counts.arrayScans > 1) { + entryPagesFetched *= outer_scans * counts.arrayScans; entryPagesFetched = index_pages_fetched(entryPagesFetched, (BlockNumber) numEntryPages, numEntryPages, root); + entryPagesFetched /= outer_scans; + dataPagesFetched *= outer_scans * counts.arrayScans; dataPagesFetched = index_pages_fetched(dataPagesFetched, (BlockNumber) numDataPages, numDataPages, root); + dataPagesFetched /= outer_scans; } /* @@ -6709,8 +6818,12 @@ gincostestimate(PG_FUNCTION_ARGS) */ *indexStartupCost = (entryPagesFetched + dataPagesFetched) * spc_random_page_cost; - /* cost to scan data pages for each exact (non-partial) matched entry */ - dataPagesFetched = ceil(numDataPages * exactEntriesInQuals / numEntries); + /* + * Now we compute the number of data pages fetched while the scan proceeds. + */ + + /* data pages scanned for each exact (non-partial) matched entry */ + dataPagesFetched = ceil(numDataPages * counts.exactEntries / numEntries); /* * Estimate number of data pages read, using selectivity estimation and @@ -6731,10 +6844,17 @@ gincostestimate(PG_FUNCTION_ARGS) dataPagesFetched = dataPagesFetchedBySel; } - if (num_scans > 1) + /* Account for cache effects, the same as above */ + if (outer_scans > 1 || counts.arrayScans > 1) + { + dataPagesFetched *= outer_scans * counts.arrayScans; dataPagesFetched = index_pages_fetched(dataPagesFetched, (BlockNumber) numDataPages, numDataPages, root); + dataPagesFetched /= outer_scans; + } + + /* And apply random_page_cost as the cost per page */ *indexTotalCost = *indexStartupCost + dataPagesFetched * spc_random_page_cost; diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index cd99abc502..63adc53158 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -1568,8 +1568,9 @@ tm2timestamp(struct pg_tm * tm, fsec_t fsec, int *tzp, Timestamp *result) return -1; } /* check for just-barely overflow (okay except time-of-day wraps) */ - if ((*result < 0 && date >= 0) || - (*result >= 0 && date < 0)) + /* caution: we want to allow 1999-12-31 24:00:00 */ + if ((*result < 0 && date > 0) || + (*result > 0 && date < -1)) { *result = 0; /* keep compiler quiet */ return -1; diff --git a/src/backend/utils/adt/tsquery.c b/src/backend/utils/adt/tsquery.c index 5baa02b1c0..625421545c 100644 --- a/src/backend/utils/adt/tsquery.c +++ b/src/backend/utils/adt/tsquery.c @@ -517,8 +517,13 @@ parse_tsquery(char *buf, return query; } - /* Pack the QueryItems in the final TSQuery struct to return to caller */ + if (TSQUERY_TOO_BIG(list_length(state.polstr), state.sumlen)) + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("tsquery is too large"))); commonlen = COMPUTESIZE(list_length(state.polstr), state.sumlen); + + /* Pack the QueryItems in the final TSQuery struct to return to caller */ query = (TSQuery) palloc0(commonlen); SET_VARSIZE(query, commonlen); query->size = list_length(state.polstr); diff --git a/src/backend/utils/adt/tsquery_util.c b/src/backend/utils/adt/tsquery_util.c index 53093f1e86..08411b0ade 100644 --- a/src/backend/utils/adt/tsquery_util.c +++ b/src/backend/utils/adt/tsquery_util.c @@ -334,6 +334,11 @@ QTN2QT(QTNode *in) QTN2QTState state; cntsize(in, &sumlen, &nnode); + + if (TSQUERY_TOO_BIG(nnode, sumlen)) + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("tsquery is too large"))); len = COMPUTESIZE(nnode, sumlen); out = (TSQuery) palloc0(len); diff --git a/src/backend/utils/adt/tsvector.c b/src/backend/utils/adt/tsvector.c index 6810615a25..b28a32d69d 100644 --- a/src/backend/utils/adt/tsvector.c +++ b/src/backend/utils/adt/tsvector.c @@ -125,7 +125,8 @@ uniqueentry(WordEntryIN *a, int l, char *buf, int *outbuflen) buflen += res->poslen * sizeof(WordEntryPos) + sizeof(uint16); } res++; - memcpy(res, ptr, sizeof(WordEntryIN)); + if (res != ptr) + memcpy(res, ptr, sizeof(WordEntryIN)); } else if (ptr->entry.haspos) { diff --git a/src/backend/utils/adt/tsvector_op.c b/src/backend/utils/adt/tsvector_op.c index 66674917f0..55d7c8fe38 100644 --- a/src/backend/utils/adt/tsvector_op.c +++ b/src/backend/utils/adt/tsvector_op.c @@ -340,11 +340,14 @@ tsvector_concat(PG_FUNCTION_ARGS) j, i1, i2, - dataoff; + dataoff, + output_bytes, + output_size; char *data, *data1, *data2; + /* Get max position in in1; we'll need this to offset in2's positions */ ptr = ARRPTR(in1); i = in1->size; while (i--) @@ -368,10 +371,23 @@ tsvector_concat(PG_FUNCTION_ARGS) data2 = STRPTR(in2); i1 = in1->size; i2 = in2->size; - /* conservative estimate of space needed */ - out = (TSVector) palloc0(VARSIZE(in1) + VARSIZE(in2)); - SET_VARSIZE(out, VARSIZE(in1) + VARSIZE(in2)); + + /* + * Conservative estimate of space needed. We might need all the data + * in both inputs, and conceivably add a pad byte before position data + * for each item where there was none before. + */ + output_bytes = VARSIZE(in1) + VARSIZE(in2) + i1 + i2; + + out = (TSVector) palloc0(output_bytes); + SET_VARSIZE(out, output_bytes); + + /* + * We must make out->size valid so that STRPTR(out) is sensible. We'll + * collapse out any unused space at the end. + */ out->size = in1->size + in2->size; + ptr = ARRPTR(out); data = STRPTR(out); dataoff = 0; @@ -513,10 +529,18 @@ tsvector_concat(PG_FUNCTION_ARGS) (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), errmsg("string is too long for tsvector (%d bytes, max %d bytes)", dataoff, MAXSTRPOS))); - out->size = ptr - ARRPTR(out); - SET_VARSIZE(out, CALCDATASIZE(out->size, dataoff)); + /* + * Adjust sizes (asserting that we didn't overrun the original estimates) + * and collapse out any unused array entries. + */ + output_size = ptr - ARRPTR(out); + Assert(output_size <= out->size); + out->size = output_size; if (data != STRPTR(out)) memmove(STRPTR(out), data, dataoff); + output_bytes = CALCDATASIZE(out->size, dataoff); + Assert(output_bytes <= VARSIZE(out)); + SET_VARSIZE(out, output_bytes); PG_FREE_IF_COPY(in1, 0); PG_FREE_IF_COPY(in2, 1); diff --git a/src/backend/utils/adt/txid.c b/src/backend/utils/adt/txid.c index 2907306e92..31867c4fa8 100644 --- a/src/backend/utils/adt/txid.c +++ b/src/backend/utils/adt/txid.c @@ -27,6 +27,7 @@ #include "miscadmin.h" #include "libpq/pqformat.h" #include "utils/builtins.h" +#include "utils/memutils.h" #include "utils/snapmgr.h" @@ -66,6 +67,8 @@ typedef struct #define TXID_SNAPSHOT_SIZE(nxip) \ (offsetof(TxidSnapshot, xip) + sizeof(txid) * (nxip)) +#define TXID_SNAPSHOT_MAX_NXIP \ + ((MaxAllocSize - offsetof(TxidSnapshot, xip)) / sizeof(txid)) /* * Epoch values from xact.c @@ -444,20 +447,12 @@ txid_snapshot_recv(PG_FUNCTION_ARGS) txid last = 0; int nxip; int i; - int avail; - int expect; txid xmin, xmax; - /* - * load nxip and check for nonsense. - * - * (nxip > avail) check is against int overflows in 'expect'. - */ + /* load and validate nxip */ nxip = pq_getmsgint(buf, 4); - avail = buf->len - buf->cursor; - expect = 8 + 8 + nxip * 8; - if (nxip < 0 || nxip > avail || expect > avail) + if (nxip < 0 || nxip > TXID_SNAPSHOT_MAX_NXIP) goto bad_format; xmin = pq_getmsgint64(buf); diff --git a/src/backend/utils/adt/varbit.c b/src/backend/utils/adt/varbit.c index 3fa81175fd..1727f25679 100644 --- a/src/backend/utils/adt/varbit.c +++ b/src/backend/utils/adt/varbit.c @@ -147,12 +147,22 @@ bit_in(PG_FUNCTION_ARGS) sp = input_string; } + /* + * Determine bitlength from input string. MaxAllocSize ensures a regular + * input is small enough, but we must check hex input. + */ slen = strlen(sp); - /* Determine bitlength from input string */ if (bit_not_hex) bitlen = slen; else + { + if (slen > VARBITMAXLEN / 4) + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("bit string length exceeds the maximum allowed (%d)", + VARBITMAXLEN))); bitlen = slen * 4; + } /* * Sometimes atttypmod is not supplied. If it is supplied we need to make @@ -449,12 +459,22 @@ varbit_in(PG_FUNCTION_ARGS) sp = input_string; } + /* + * Determine bitlength from input string. MaxAllocSize ensures a regular + * input is small enough, but we must check hex input. + */ slen = strlen(sp); - /* Determine bitlength from input string */ if (bit_not_hex) bitlen = slen; else + { + if (slen > VARBITMAXLEN / 4) + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("bit string length exceeds the maximum allowed (%d)", + VARBITMAXLEN))); bitlen = slen * 4; + } /* * Sometimes atttypmod is not supplied. If it is supplied we need to make @@ -534,6 +554,9 @@ varbit_in(PG_FUNCTION_ARGS) /* * varbit_out - * Prints the string as bits to preserve length accurately + * + * XXX varbit_recv() and hex input to varbit_in() can load a value that this + * cannot emit. Consider using hex output for such values. */ Datum varbit_out(PG_FUNCTION_ARGS) @@ -910,6 +933,11 @@ bit_catenate(VarBit *arg1, VarBit *arg2) bitlen1 = VARBITLEN(arg1); bitlen2 = VARBITLEN(arg2); + if (bitlen1 > VARBITMAXLEN - bitlen2) + ereport(ERROR, + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("bit string length exceeds the maximum allowed (%d)", + VARBITMAXLEN))); bytelen = VARBITTOTALLEN(bitlen1 + bitlen2); result = (VarBit *) palloc(bytelen); diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c index 1c0ef921a7..7b84637f8c 100644 --- a/src/backend/utils/adt/varchar.c +++ b/src/backend/utils/adt/varchar.c @@ -371,9 +371,9 @@ bpchar_name(PG_FUNCTION_ARGS) len = VARSIZE_ANY_EXHDR(s); s_data = VARDATA_ANY(s); - /* Truncate to max length for a Name */ + /* Truncate oversize input */ if (len >= NAMEDATALEN) - len = NAMEDATALEN - 1; + len = pg_mbcliplen(s_data, len, NAMEDATALEN - 1); /* Remove trailing blanks */ while (len > 0) @@ -383,16 +383,10 @@ bpchar_name(PG_FUNCTION_ARGS) len--; } - result = (NameData *) palloc(NAMEDATALEN); + /* We use palloc0 here to ensure result is zero-padded */ + result = (Name) palloc0(NAMEDATALEN); memcpy(NameStr(*result), s_data, len); - /* Now null pad to full length... */ - while (len < NAMEDATALEN) - { - *(NameStr(*result) + len) = '\0'; - len++; - } - PG_RETURN_NAME(result); } diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c index 9acbc2d4e5..e9ea628804 100644 --- a/src/backend/utils/adt/varlena.c +++ b/src/backend/utils/adt/varlena.c @@ -2198,18 +2198,12 @@ text_name(PG_FUNCTION_ARGS) /* Truncate oversize input */ if (len >= NAMEDATALEN) - len = NAMEDATALEN - 1; + len = pg_mbcliplen(VARDATA_ANY(s), len, NAMEDATALEN - 1); - result = (Name) palloc(NAMEDATALEN); + /* We use palloc0 here to ensure result is zero-padded */ + result = (Name) palloc0(NAMEDATALEN); memcpy(NameStr(*result), VARDATA_ANY(s), len); - /* now null pad to full length... */ - while (len < NAMEDATALEN) - { - *(NameStr(*result) + len) = '\0'; - len++; - } - PG_RETURN_NAME(result); } @@ -2860,6 +2854,7 @@ replace_text_regexp(text *src_text, void *regexp, { char errMsg[100]; + CHECK_FOR_INTERRUPTS(); pg_regerror(regexec_result, re, errMsg, sizeof(errMsg)); ereport(ERROR, (errcode(ERRCODE_INVALID_REGULAR_EXPRESSION), @@ -2908,7 +2903,10 @@ replace_text_regexp(text *src_text, void *regexp, break; /* - * Search from next character when the matching text is zero width. + * Advance search position. Normally we start the next search at the + * end of the previous match; but if the match was of zero length, we + * have to advance by one character, or we'd just find the same match + * again. */ search_start = data_pos; if (pmatch[0].rm_so == pmatch[0].rm_eo) @@ -3622,11 +3620,19 @@ string_agg_finalfn(PG_FUNCTION_ARGS) PG_RETURN_NULL(); } +/* + * Implementation of both concat() and concat_ws(). + * + * sepstr/seplen describe the separator. argidx is the first argument + * to concatenate (counting from zero). + */ static text * -concat_internal(const char *sepstr, int seplen, int argidx, FunctionCallInfo fcinfo) +concat_internal(const char *sepstr, int seplen, int argidx, + FunctionCallInfo fcinfo) { - StringInfoData str; text *result; + StringInfoData str; + bool first_arg = true; int i; initStringInfo(&str); @@ -3635,17 +3641,21 @@ concat_internal(const char *sepstr, int seplen, int argidx, FunctionCallInfo fci { if (!PG_ARGISNULL(i)) { + Datum value = PG_GETARG_DATUM(i); Oid valtype; - Datum value; Oid typOutput; bool typIsVarlena; - if (i > argidx) + /* add separator if appropriate */ + if (first_arg) + first_arg = false; + else appendBinaryStringInfo(&str, sepstr, seplen); - /* append n-th value */ - value = PG_GETARG_DATUM(i); + /* call the appropriate type output function, append the result */ valtype = get_fn_expr_argtype(fcinfo->flinfo, i); + if (!OidIsValid(valtype)) + elog(ERROR, "could not determine data type of concat() input"); getTypeOutputInfo(valtype, &typOutput, &typIsVarlena); appendStringInfoString(&str, OidOutputFunctionCall(typOutput, value)); @@ -3664,12 +3674,12 @@ concat_internal(const char *sepstr, int seplen, int argidx, FunctionCallInfo fci Datum text_concat(PG_FUNCTION_ARGS) { - PG_RETURN_TEXT_P(concat_internal(NULL, 0, 0, fcinfo)); + PG_RETURN_TEXT_P(concat_internal("", 0, 0, fcinfo)); } /* - * Concatenate all but first argument values with separators. The first - * parameter is used as a separator. NULL arguments are ignored. + * Concatenate all but first argument value with separators. The first + * parameter is used as the separator. NULL arguments are ignored. */ Datum text_concat_ws(PG_FUNCTION_ARGS) @@ -3682,8 +3692,8 @@ text_concat_ws(PG_FUNCTION_ARGS) sep = PG_GETARG_TEXT_PP(0); - PG_RETURN_TEXT_P(concat_internal( - VARDATA_ANY(sep), VARSIZE_ANY_EXHDR(sep), 1, fcinfo)); + PG_RETURN_TEXT_P(concat_internal(VARDATA_ANY(sep), VARSIZE_ANY_EXHDR(sep), + 1, fcinfo)); } /* @@ -3887,7 +3897,7 @@ text_format(PG_FUNCTION_ARGS) if (arg > PG_NARGS() - 1) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("too few arguments for format conversion"))); + errmsg("too few arguments for format"))); /* * At this point, we should see the main conversion specifier. Whether @@ -3908,7 +3918,7 @@ text_format(PG_FUNCTION_ARGS) default: ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), - errmsg("unrecognized conversion specifier: %c", + errmsg("unrecognized conversion specifier \"%c\"", *cp))); } } @@ -3937,7 +3947,7 @@ text_format_string_conversion(StringInfo buf, char conversion, else if (conversion == 'I') ereport(ERROR, (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), - errmsg("NULL cannot be escaped as an SQL identifier"))); + errmsg("null values cannot be formatted as an SQL identifier"))); return; } diff --git a/src/backend/utils/adt/version.c b/src/backend/utils/adt/version.c index 6ea5bd2267..decad4e3eb 100644 --- a/src/backend/utils/adt/version.c +++ b/src/backend/utils/adt/version.c @@ -22,3 +22,11 @@ pgsql_version(PG_FUNCTION_ARGS) { PG_RETURN_TEXT_P(cstring_to_text(PG_VERSION_STR)); } + +#ifdef PGXC +Datum +pgxc_version(PG_FUNCTION_ARGS) +{ + PG_RETURN_TEXT_P(cstring_to_text(PGXC_VERSION_STR)); +} +#endif diff --git a/src/backend/utils/adt/xml.c b/src/backend/utils/adt/xml.c index 702b9e3e9f..3261eac1ce 100644 --- a/src/backend/utils/adt/xml.c +++ b/src/backend/utils/adt/xml.c @@ -48,6 +48,7 @@ #ifdef USE_LIBXML #include #include +#include #include #include #include @@ -86,6 +87,8 @@ int xmloption; static StringInfo xml_err_buf = NULL; +static xmlParserInputPtr xmlPgEntityLoader(const char *URL, const char *ID, + xmlParserCtxtPtr ctxt); static void xml_errorHandler(void *ctxt, const char *msg,...); static void xml_ereport_by_code(int level, int sqlcode, const char *msg, int errcode); @@ -886,6 +889,9 @@ pg_xml_init(void) /* Now that xml_err_buf exists, safe to call xml_errorHandler */ xmlSetGenericErrorFunc(NULL, xml_errorHandler); + /* set up our entity loader, too */ + xmlSetExternalEntityLoader(xmlPgEntityLoader); + #ifdef USE_LIBXMLCONTEXT /* Set up memory allocation our way, too */ xml_memory_init(); @@ -910,6 +916,9 @@ pg_xml_init(void) * about, anyway. */ xmlSetGenericErrorFunc(NULL, xml_errorHandler); + + /* set up our entity loader, too */ + xmlSetExternalEntityLoader(xmlPgEntityLoader); } } @@ -1323,6 +1332,25 @@ xml_pstrdup(const char *string) #endif /* USE_LIBXMLCONTEXT */ +/* + * xmlPgEntityLoader --- entity loader callback function + * + * Silently prevent any external entity URL from being loaded. We don't want + * to throw an error, so instead make the entity appear to expand to an empty + * string. + * + * We would prefer to allow loading entities that exist in the system's + * global XML catalog; but the available libxml2 APIs make that a complex + * and fragile task. For now, just shut down all external access. + */ +static xmlParserInputPtr +xmlPgEntityLoader(const char *URL, const char *ID, + xmlParserCtxtPtr ctxt) +{ + return xmlNewStringInputStream(ctxt, (const xmlChar *) ""); +} + + /* * xml_ereport --- report an XML-related error * @@ -1363,14 +1391,14 @@ xml_ereport(int level, int sqlcode, const char *msg) ereport(level, (errcode(sqlcode), - errmsg("%s", msg), - errdetail("%s", detail))); + errmsg_internal("%s", msg), + errdetail_internal("%s", detail))); } else { ereport(level, (errcode(sqlcode), - errmsg("%s", msg))); + errmsg_internal("%s", msg))); } } @@ -1441,7 +1469,7 @@ xml_ereport_by_code(int level, int sqlcode, ereport(level, (errcode(sqlcode), - errmsg("%s", msg), + errmsg_internal("%s", msg), errdetail(det, code))); } diff --git a/src/backend/utils/cache/catcache.c b/src/backend/utils/cache/catcache.c index 350e040474..00f17d9edc 100644 --- a/src/backend/utils/cache/catcache.c +++ b/src/backend/utils/cache/catcache.c @@ -19,6 +19,7 @@ #include "access/heapam.h" #include "access/relscan.h" #include "access/sysattr.h" +#include "access/tuptoaster.h" #include "access/valid.h" #include "catalog/pg_operator.h" #include "catalog/pg_type.h" @@ -423,18 +424,19 @@ CatCacheRemoveCList(CatCache *cache, CatCList *cl) /* * CatalogCacheIdInvalidate * - * Invalidate entries in the specified cache, given a hash value and - * item pointer. Positive entries are deleted if they match the item - * pointer. Negative entries must be deleted if they match the hash - * value (since we do not have the exact key of the tuple that's being - * inserted). But this should only rarely result in loss of a cache - * entry that could have been kept. + * Invalidate entries in the specified cache, given a hash value. * - * Note that it's not very relevant whether the tuple identified by - * the item pointer is being inserted or deleted. We don't expect to - * find matching positive entries in the one case, and we don't expect - * to find matching negative entries in the other; but we will do the - * right things in any case. + * We delete cache entries that match the hash value, whether positive + * or negative. We don't care whether the invalidation is the result + * of a tuple insertion or a deletion. + * + * We used to try to match positive cache entries by TID, but that is + * unsafe after a VACUUM FULL on a system catalog: an inval event could + * be queued before VACUUM FULL, and then processed afterwards, when the + * target tuple that has to be invalidated has a different TID than it + * did when the event was created. So now we just compare hash values and + * accept the small risk of unnecessary invalidations due to false matches. + * (The ItemPointer argument is therefore useless and should get removed.) * * This routine is only quasi-public: it should only be used by inval.c. */ @@ -496,11 +498,7 @@ CatalogCacheIdInvalidate(int cacheId, nextelt = DLGetSucc(elt); - if (hashValue != ct->hash_value) - continue; /* ignore non-matching hash values */ - - if (ct->negative || - ItemPointerEquals(pointer, &ct->tuple.t_self)) + if (hashValue == ct->hash_value) { if (ct->refcount > 0 || (ct->c_list && ct->c_list->refcount > 0)) @@ -695,12 +693,8 @@ CatalogCacheFlushCatalog(Oid catId) for (cache = CacheHdr->ch_caches; cache; cache = cache->cc_next) { - /* We can ignore uninitialized caches, since they must be empty */ - if (cache->cc_tupdesc == NULL) - continue; - /* Does this cache store tuples of the target catalog? */ - if (cache->cc_tupdesc->attrs[0]->attrelid == catId) + if (cache->cc_reloid == catId) { /* Yes, so flush all its contents */ ResetCatalogCache(cache); @@ -1605,16 +1599,32 @@ CatalogCacheCreateEntry(CatCache *cache, HeapTuple ntp, uint32 hashValue, Index hashIndex, bool negative) { CatCTup *ct; + HeapTuple dtp; MemoryContext oldcxt; + /* + * If there are any out-of-line toasted fields in the tuple, expand them + * in-line. This saves cycles during later use of the catcache entry, + * and also protects us against the possibility of the toast tuples being + * freed before we attempt to fetch them, in case of something using a + * slightly stale catcache entry. + */ + if (HeapTupleHasExternal(ntp)) + dtp = toast_flatten_tuple(ntp, cache->cc_tupdesc); + else + dtp = ntp; + /* * Allocate CatCTup header in cache memory, and copy the tuple there too. */ oldcxt = MemoryContextSwitchTo(CacheMemoryContext); ct = (CatCTup *) palloc(sizeof(CatCTup)); - heap_copytuple_with_tuple(ntp, &ct->tuple); + heap_copytuple_with_tuple(dtp, &ct->tuple); MemoryContextSwitchTo(oldcxt); + if (dtp != ntp) + heap_freetuple(dtp); + /* * Finish initializing the CatCTup header, and add it to the cache's * linked list and counts. diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c index ebc83440de..4249bd3376 100644 --- a/src/backend/utils/cache/inval.c +++ b/src/backend/utils/cache/inval.c @@ -529,7 +529,7 @@ LocalExecuteInvalidationMessage(SharedInvalidationMessage *msg) RelationMapInvalidate(false); } else - elog(FATAL, "unrecognized SI message id: %d", msg->id); + elog(FATAL, "unrecognized SI message ID: %d", msg->id); } /* @@ -854,24 +854,12 @@ xactGetCommittedInvalidationMessages(SharedInvalidationMessage **msgs, return numSharedInvalidMessagesArray; } -#define RecoveryRelationCacheInitFileInvalidate(dbo, tbo, tf) \ -{ \ - DatabasePath = GetDatabasePath(dbo, tbo); \ - elog(trace_recovery(DEBUG4), "removing relcache init file in %s", DatabasePath); \ - RelationCacheInitFileInvalidate(tf); \ - pfree(DatabasePath); \ -} - /* * ProcessCommittedInvalidationMessages is executed by xact_redo_commit() * to process invalidation messages added to commit records. * * Relcache init file invalidation requires processing both * before and after we send the SI messages. See AtEOXact_Inval() - * - * We deliberately avoid SetDatabasePath() since it is intended to be used - * only once by normal backends, so we set DatabasePath directly then - * pfree after use. See RecoveryRelationCacheInitFileInvalidate() macro. */ void ProcessCommittedInvalidationMessages(SharedInvalidationMessage *msgs, @@ -885,12 +873,25 @@ ProcessCommittedInvalidationMessages(SharedInvalidationMessage *msgs, (RelcacheInitFileInval ? " and relcache file invalidation" : "")); if (RelcacheInitFileInval) - RecoveryRelationCacheInitFileInvalidate(dbid, tsid, true); + { + /* + * RelationCacheInitFilePreInvalidate requires DatabasePath to be set, + * but we should not use SetDatabasePath during recovery, since it is + * intended to be used only once by normal backends. Hence, a quick + * hack: set DatabasePath directly then unset after use. + */ + DatabasePath = GetDatabasePath(dbid, tsid); + elog(trace_recovery(DEBUG4), "removing relcache init file in \"%s\"", + DatabasePath); + RelationCacheInitFilePreInvalidate(); + pfree(DatabasePath); + DatabasePath = NULL; + } SendSharedInvalidMessages(msgs, nmsgs); if (RelcacheInitFileInval) - RecoveryRelationCacheInitFileInvalidate(dbid, tsid, false); + RelationCacheInitFilePostInvalidate(); } /* @@ -931,7 +932,7 @@ AtEOXact_Inval(bool isCommit) * unless we committed. */ if (transInvalInfo->RelcacheInitFileInval) - RelationCacheInitFileInvalidate(true); + RelationCacheInitFilePreInvalidate(); AppendInvalidationMessages(&transInvalInfo->PriorCmdInvalidMsgs, &transInvalInfo->CurrentCmdInvalidMsgs); @@ -940,7 +941,7 @@ AtEOXact_Inval(bool isCommit) SendSharedInvalidMessages); if (transInvalInfo->RelcacheInitFileInval) - RelationCacheInitFileInvalidate(false); + RelationCacheInitFilePostInvalidate(); } else if (transInvalInfo != NULL) { diff --git a/src/backend/utils/cache/lsyscache.c b/src/backend/utils/cache/lsyscache.c index 589c9ffe1d..27ee1dfbb9 100644 --- a/src/backend/utils/cache/lsyscache.c +++ b/src/backend/utils/cache/lsyscache.c @@ -627,52 +627,30 @@ get_op_hash_functions(Oid opno, /* * get_op_btree_interpretation * Given an operator's OID, find out which btree opfamilies it belongs to, - * and what strategy number it has within each one. The results are - * returned as an OID list and a parallel integer list. + * and what properties it has within each one. The results are returned + * as a palloc'd list of OpBtreeInterpretation structs. * * In addition to the normal btree operators, we consider a <> operator to be * a "member" of an opfamily if its negator is an equality operator of the * opfamily. ROWCOMPARE_NE is returned as the strategy number for this case. */ -void -get_op_btree_interpretation(Oid opno, List **opfamilies, List **opstrats) +List * +get_op_btree_interpretation(Oid opno) { + List *result = NIL; + OpBtreeInterpretation *thisresult; CatCList *catlist; - bool op_negated; int i; - *opfamilies = NIL; - *opstrats = NIL; - /* * Find all the pg_amop entries containing the operator. */ catlist = SearchSysCacheList1(AMOPOPID, ObjectIdGetDatum(opno)); - /* - * If we can't find any opfamily containing the op, perhaps it is a <> - * operator. See if it has a negator that is in an opfamily. - */ - op_negated = false; - if (catlist->n_members == 0) - { - Oid op_negator = get_negator(opno); - - if (OidIsValid(op_negator)) - { - op_negated = true; - ReleaseSysCacheList(catlist); - catlist = SearchSysCacheList1(AMOPOPID, - ObjectIdGetDatum(op_negator)); - } - } - - /* Now search the opfamilies */ for (i = 0; i < catlist->n_members; i++) { HeapTuple op_tuple = &catlist->members[i]->tuple; Form_pg_amop op_form = (Form_pg_amop) GETSTRUCT(op_tuple); - Oid opfamily_id; StrategyNumber op_strategy; /* must be btree */ @@ -680,23 +658,66 @@ get_op_btree_interpretation(Oid opno, List **opfamilies, List **opstrats) continue; /* Get the operator's btree strategy number */ - opfamily_id = op_form->amopfamily; op_strategy = (StrategyNumber) op_form->amopstrategy; Assert(op_strategy >= 1 && op_strategy <= 5); - if (op_negated) + thisresult = (OpBtreeInterpretation *) + palloc(sizeof(OpBtreeInterpretation)); + thisresult->opfamily_id = op_form->amopfamily; + thisresult->strategy = op_strategy; + thisresult->oplefttype = op_form->amoplefttype; + thisresult->oprighttype = op_form->amoprighttype; + result = lappend(result, thisresult); + } + + ReleaseSysCacheList(catlist); + + /* + * If we didn't find any btree opfamily containing the operator, perhaps + * it is a <> operator. See if it has a negator that is in an opfamily. + */ + if (result == NIL) + { + Oid op_negator = get_negator(opno); + + if (OidIsValid(op_negator)) { - /* Only consider negators that are = */ - if (op_strategy != BTEqualStrategyNumber) - continue; - op_strategy = ROWCOMPARE_NE; - } + catlist = SearchSysCacheList1(AMOPOPID, + ObjectIdGetDatum(op_negator)); - *opfamilies = lappend_oid(*opfamilies, opfamily_id); - *opstrats = lappend_int(*opstrats, op_strategy); + for (i = 0; i < catlist->n_members; i++) + { + HeapTuple op_tuple = &catlist->members[i]->tuple; + Form_pg_amop op_form = (Form_pg_amop) GETSTRUCT(op_tuple); + StrategyNumber op_strategy; + + /* must be btree */ + if (op_form->amopmethod != BTREE_AM_OID) + continue; + + /* Get the operator's btree strategy number */ + op_strategy = (StrategyNumber) op_form->amopstrategy; + Assert(op_strategy >= 1 && op_strategy <= 5); + + /* Only consider negators that are = */ + if (op_strategy != BTEqualStrategyNumber) + continue; + + /* OK, report it with "strategy" ROWCOMPARE_NE */ + thisresult = (OpBtreeInterpretation *) + palloc(sizeof(OpBtreeInterpretation)); + thisresult->opfamily_id = op_form->amopfamily; + thisresult->strategy = ROWCOMPARE_NE; + thisresult->oplefttype = op_form->amoplefttype; + thisresult->oprighttype = op_form->amoprighttype; + result = lappend(result, thisresult); + } + + ReleaseSysCacheList(catlist); + } } - ReleaseSysCacheList(catlist); + return result; } /* @@ -1872,10 +1893,9 @@ getTypeIOParam(HeapTuple typeTuple) /* * Array types get their typelem as parameter; everybody else gets their - * own type OID as parameter. (As of 8.2, domains must get their own OID - * even if their base type is an array.) + * own type OID as parameter. */ - if (typeStruct->typtype == TYPTYPE_BASE && OidIsValid(typeStruct->typelem)) + if (OidIsValid(typeStruct->typelem)) return typeStruct->typelem; else return HeapTupleGetOid(typeTuple); @@ -2375,8 +2395,8 @@ get_pgxc_groupmembers(Oid groupid, Oid **members) /* * get_pgxc_classnodes - * Obtain PGXC class datanode list for given relation Oid - * Return number of datanodes and their list + * Obtain PGXC class Datanode list for given relation Oid + * Return number of Datanodes and their list * * Node list is returned as a palloc'd array */ diff --git a/src/backend/utils/cache/plancache.c b/src/backend/utils/cache/plancache.c index aaa2151d44..550ed35f8e 100644 --- a/src/backend/utils/cache/plancache.c +++ b/src/backend/utils/cache/plancache.c @@ -69,6 +69,14 @@ static void drop_datanode_statements(Plan *plannode); #endif +/* + * We must skip "overhead" operations that involve database access when the + * cached plan's subject statement is a transaction control command. + */ +#define IsTransactionStmtPlan(plansource) \ + ((plansource)->raw_parse_tree && \ + IsA((plansource)->raw_parse_tree, TransactionStmt)) + static List *cached_plans_list = NIL; static void StoreCachedPlan(CachedPlanSource *plansource, List *stmt_list, @@ -145,9 +153,13 @@ CreateCachedPlan(Node *raw_parse_tree, /* * Fetch current search_path into new context, but do any recalculation - * work required in caller's context. + * work required in caller's context. Skip this for a transaction control + * command, since we won't need it and can't risk catalog access. */ - search_path = GetOverrideSearchPath(source_context); + if (raw_parse_tree && IsA(raw_parse_tree, TransactionStmt)) + search_path = NULL; + else + search_path = GetOverrideSearchPath(source_context); /* * Create and fill the CachedPlanSource struct within the new context. @@ -241,9 +253,13 @@ FastCreateCachedPlan(Node *raw_parse_tree, /* * Fetch current search_path into given context, but do any recalculation - * work required in caller's context. + * work required in caller's context. Skip this for a transaction control + * command, since we won't need it and can't risk catalog access. */ - search_path = GetOverrideSearchPath(context); + if (raw_parse_tree && IsA(raw_parse_tree, TransactionStmt)) + search_path = NULL; + else + search_path = GetOverrideSearchPath(context); /* * Create and fill the CachedPlanSource struct within the given context. @@ -357,7 +373,7 @@ StoreCachedPlan(CachedPlanSource *plansource, #ifdef PGXC /* * If this plansource belongs to a named prepared statement, store the stmt - * name for the datanode queries. + * name for the Datanode queries. */ if (IS_PGXC_COORDINATOR && !IsConnFromCoord() && plansource->stmt_name) @@ -367,7 +383,7 @@ StoreCachedPlan(CachedPlanSource *plansource, /* * Scan the plans and set the statement field for all found RemoteQuery - * nodes so they use data node statements + * nodes so they use Datanode statements */ n = 0; foreach(lc, stmt_list) @@ -467,7 +483,7 @@ DropCachedPlan(CachedPlanSource *plansource) { ListCell *lc; - /* Close any active planned datanode statements */ + /* Close any active planned Datanode statements */ foreach (lc, plan->stmt_list) { Node *node = lfirst(lc); @@ -589,7 +605,8 @@ RevalidateCachedPlan(CachedPlanSource *plansource, bool useResOwner) * * (XXX is there anything else we really need to restore?) */ - PushOverrideSearchPath(plansource->search_path); + if (plansource->search_path) + PushOverrideSearchPath(plansource->search_path); /* * If a snapshot is already set (the normal case), we can just use @@ -673,7 +690,8 @@ RevalidateCachedPlan(CachedPlanSource *plansource, bool useResOwner) PopActiveSnapshot(); /* Now we can restore current search path */ - PopOverrideSearchPath(); + if (plansource->search_path) + PopOverrideSearchPath(); /* * Store the plans into the plancache entry, advancing the generation @@ -697,7 +715,7 @@ RevalidateCachedPlan(CachedPlanSource *plansource, bool useResOwner) } /* - * Find and release all datanode statements referenced by the plan node and subnodes + * Find and release all Datanode statements referenced by the plan node and subnodes */ #ifdef PGXC static void diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index cdb40e3b75..7f6f1a780e 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -859,20 +859,33 @@ RelationBuildDesc(Oid targetRelId, bool insertIt) case RELPERSISTENCE_UNLOGGED: case RELPERSISTENCE_PERMANENT: relation->rd_backend = InvalidBackendId; + relation->rd_islocaltemp = false; break; case RELPERSISTENCE_TEMP: if (isTempOrToastNamespace(relation->rd_rel->relnamespace)) + { relation->rd_backend = MyBackendId; + relation->rd_islocaltemp = true; + } else { /* - * If it's a local temp table, but not one of ours, we have to - * use the slow, grotty method to figure out the owning - * backend. + * If it's a temp table, but not one of ours, we have to use + * the slow, grotty method to figure out the owning backend. + * + * Note: it's possible that rd_backend gets set to MyBackendId + * here, in case we are looking at a pg_class entry left over + * from a crashed backend that coincidentally had the same + * BackendId we're using. We should *not* consider such a + * table to be "ours"; this is why we need the separate + * rd_islocaltemp flag. The pg_class entry will get flushed + * if/when we clean out the corresponding temp table namespace + * in preparation for using it. */ relation->rd_backend = GetTempNamespaceBackendId(relation->rd_rel->relnamespace); Assert(relation->rd_backend != InvalidBackendId); + relation->rd_islocaltemp = false; } break; default: @@ -1399,6 +1412,7 @@ formrdesc(const char *relationName, Oid relationReltype, relation->rd_createSubid = InvalidSubTransactionId; relation->rd_newRelfilenodeSubid = InvalidSubTransactionId; relation->rd_backend = InvalidBackendId; + relation->rd_islocaltemp = false; /* * initialize relation tuple form @@ -1426,8 +1440,8 @@ formrdesc(const char *relationName, Oid relationReltype, /* formrdesc is used only for permanent relations */ relation->rd_rel->relpersistence = RELPERSISTENCE_PERMANENT; - relation->rd_rel->relpages = 1; - relation->rd_rel->reltuples = 1; + relation->rd_rel->relpages = 0; + relation->rd_rel->reltuples = 0; relation->rd_rel->relkind = RELKIND_RELATION; relation->rd_rel->relhasoids = hasoids; relation->rd_rel->relnatts = (int16) natts; @@ -1742,9 +1756,22 @@ RelationReloadIndexInfo(Relation relation) RelationGetRelid(relation)); index = (Form_pg_index) GETSTRUCT(tuple); + /* + * Basically, let's just copy all the bool fields. There are one or + * two of these that can't actually change in the current code, but + * it's not worth it to track exactly which ones they are. None of + * the array fields are allowed to change, though. + */ + relation->rd_index->indisunique = index->indisunique; + relation->rd_index->indisprimary = index->indisprimary; + relation->rd_index->indisexclusion = index->indisexclusion; + relation->rd_index->indimmediate = index->indimmediate; + relation->rd_index->indisclustered = index->indisclustered; relation->rd_index->indisvalid = index->indisvalid; relation->rd_index->indcheckxmin = index->indcheckxmin; relation->rd_index->indisready = index->indisready; + + /* Copy xmin too, as that is needed to make sense of indcheckxmin */ HeapTupleHeaderSetXmin(relation->rd_indextuple->t_data, HeapTupleHeaderGetXmin(tuple->t_data)); @@ -1908,7 +1935,7 @@ RelationClearRelation(Relation relation, bool rebuild) * on next access. Meanwhile it's not any less valid than it was * before, so any code that might expect to continue accessing it * isn't hurt by the rebuild failure. (Consider for example a - * subtransaction that ALTERs a table and then gets cancelled partway + * subtransaction that ALTERs a table and then gets canceled partway * through the cache entry rebuild. The outer transaction should * still see the not-modified cache entry as valid.) The worst * consequence of an error is leaking the necessarily-unreferenced new @@ -2115,11 +2142,11 @@ RelationCacheInvalidateEntry(Oid relationId) * so hash_seq_search will complete safely; (b) during the second pass we * only hold onto pointers to nondeletable entries. * - * The two-phase approach also makes it easy to ensure that we process - * nailed-in-cache indexes before other nondeletable items, and that we - * process pg_class_oid_index first of all. In scenarios where a nailed - * index has been given a new relfilenode, we have to detect that update - * before the nailed index is used in reloading any other relcache entry. + * The two-phase approach also makes it easy to update relfilenodes for + * mapped relations before we do anything else, and to ensure that the + * second pass processes nailed-in-cache items before other nondeletable + * items. This should ensure that system catalogs are up to date before + * we attempt to use them to reload information about other open relations. */ void RelationCacheInvalidate(void) @@ -2131,6 +2158,11 @@ RelationCacheInvalidate(void) List *rebuildList = NIL; ListCell *l; + /* + * Reload relation mapping data before starting to reconstruct cache. + */ + RelationMapInvalidateAll(); + /* Phase 1 */ hash_seq_init(&status, RelationIdCache); @@ -2141,7 +2173,7 @@ RelationCacheInvalidate(void) /* Must close all smgr references to avoid leaving dangling ptrs */ RelationCloseSmgr(relation); - /* Ignore new relations, since they are never SI targets */ + /* Ignore new relations, since they are never cross-backend targets */ if (relation->rd_createSubid != InvalidSubTransactionId) continue; @@ -2155,22 +2187,33 @@ RelationCacheInvalidate(void) } else { + /* + * If it's a mapped relation, immediately update its rd_node in + * case its relfilenode changed. We must do this during phase 1 + * in case the relation is consulted during rebuild of other + * relcache entries in phase 2. It's safe since consulting the + * map doesn't involve any access to relcache entries. + */ + if (RelationIsMapped(relation)) + RelationInitPhysicalAddr(relation); + /* * Add this entry to list of stuff to rebuild in second pass. - * pg_class_oid_index goes on the front of rebuildFirstList, other - * nailed indexes on the back, and everything else into - * rebuildList (in no particular order). + * pg_class goes to the front of rebuildFirstList while + * pg_class_oid_index goes to the back of rebuildFirstList, so + * they are done first and second respectively. Other nailed + * relations go to the front of rebuildList, so they'll be done + * next in no particular order; and everything else goes to the + * back of rebuildList. */ - if (relation->rd_isnailed && - relation->rd_rel->relkind == RELKIND_INDEX) - { - if (RelationGetRelid(relation) == ClassOidIndexId) - rebuildFirstList = lcons(relation, rebuildFirstList); - else - rebuildFirstList = lappend(rebuildFirstList, relation); - } - else + if (RelationGetRelid(relation) == RelationRelationId) + rebuildFirstList = lcons(relation, rebuildFirstList); + else if (RelationGetRelid(relation) == ClassOidIndexId) + rebuildFirstList = lappend(rebuildFirstList, relation); + else if (relation->rd_isnailed) rebuildList = lcons(relation, rebuildList); + else + rebuildList = lappend(rebuildList, relation); } } @@ -2181,11 +2224,6 @@ RelationCacheInvalidate(void) */ smgrcloseall(); - /* - * Reload relation mapping data before starting to reconstruct cache. - */ - RelationMapInvalidateAll(); - /* Phase 2: rebuild the items found to need rebuild in phase 1 */ foreach(l, rebuildFirstList) { @@ -2522,16 +2560,19 @@ RelationBuildLocalRelation(const char *relname, /* needed when bootstrapping: */ rel->rd_rel->relowner = BOOTSTRAP_SUPERUSERID; - /* set up persistence; rd_backend is a function of persistence type */ + /* set up persistence and relcache fields dependent on it */ rel->rd_rel->relpersistence = relpersistence; switch (relpersistence) { case RELPERSISTENCE_UNLOGGED: case RELPERSISTENCE_PERMANENT: rel->rd_backend = InvalidBackendId; + rel->rd_islocaltemp = false; break; case RELPERSISTENCE_TEMP: + Assert(isTempOrToastNamespace(relnamespace)); rel->rd_backend = MyBackendId; + rel->rd_islocaltemp = true; break; default: elog(ERROR, "invalid relpersistence: %c", relpersistence); @@ -3354,7 +3395,8 @@ RelationGetIndexList(Relation relation) result = insert_ordered_oid(result, index->indexrelid); /* Check to see if it is a unique, non-partial btree index on OID */ - if (index->indnatts == 1 && + if (IndexIsValid(index) && + index->indnatts == 1 && index->indisunique && index->indimmediate && index->indkey.values[0] == ObjectIdAttributeNumber && index->indclass.values[0] == OID_BTREE_OPS_OID && @@ -3661,6 +3703,11 @@ RelationGetIndexAttrBitmap(Relation relation) /* * For each index, add referenced attributes to indexattrs. + * + * Note: we consider all indexes returned by RelationGetIndexList, even if + * they are not indisready or indisvalid. This is important because an + * index for which CREATE INDEX CONCURRENTLY has just started must be + * included in HOT-safety decisions (see README.HOT). */ indexattrs = NULL; foreach(l, indexoidlist) @@ -4387,8 +4434,8 @@ write_relcache_init_file(bool shared) * updated by SI message processing, but we can't be sure whether what we * wrote out was up-to-date.) * - * This mustn't run concurrently with RelationCacheInitFileInvalidate, so - * grab a serialization lock for the duration. + * This mustn't run concurrently with the code that unlinks an init file + * and sends SI messages, so grab a serialization lock for the duration. */ LWLockAcquire(RelCacheInitLock, LW_EXCLUSIVE); @@ -4452,19 +4499,22 @@ RelationIdIsInInitFile(Oid relationId) * changed one or more of the relation cache entries that are kept in the * local init file. * - * We actually need to remove the init file twice: once just before sending - * the SI messages that include relcache inval for such relations, and once - * just after sending them. The unlink before ensures that a backend that's - * currently starting cannot read the now-obsolete init file and then miss - * the SI messages that will force it to update its relcache entries. (This - * works because the backend startup sequence gets into the PGPROC array before - * trying to load the init file.) The unlink after is to synchronize with a - * backend that may currently be trying to write an init file based on data - * that we've just rendered invalid. Such a backend will see the SI messages, - * but we can't leave the init file sitting around to fool later backends. + * To be safe against concurrent inspection or rewriting of the init file, + * we must take RelCacheInitLock, then remove the old init file, then send + * the SI messages that include relcache inval for such relations, and then + * release RelCacheInitLock. This serializes the whole affair against + * write_relcache_init_file, so that we can be sure that any other process + * that's concurrently trying to create a new init file won't move an + * already-stale version into place after we unlink. Also, because we unlink + * before sending the SI messages, a backend that's currently starting cannot + * read the now-obsolete init file and then miss the SI messages that will + * force it to update its relcache entries. (This works because the backend + * startup sequence gets into the sinval array before trying to load the init + * file.) * - * Ignore any failure to unlink the file, since it might not be there if - * no backend has been started since the last removal. + * We take the lock and do the unlink in RelationCacheInitFilePreInvalidate, + * then release the lock in RelationCacheInitFilePostInvalidate. Caller must + * send any pending SI messages between those calls. * * Notice this deals only with the local init file, not the shared init file. * The reason is that there can never be a "significant" change to the @@ -4474,34 +4524,37 @@ RelationIdIsInInitFile(Oid relationId) * be invalid enough to make it necessary to remove it. */ void -RelationCacheInitFileInvalidate(bool beforeSend) +RelationCacheInitFilePreInvalidate(void) { char initfilename[MAXPGPATH]; snprintf(initfilename, sizeof(initfilename), "%s/%s", DatabasePath, RELCACHE_INIT_FILENAME); - if (beforeSend) - { - /* no interlock needed here */ - unlink(initfilename); - } - else + LWLockAcquire(RelCacheInitLock, LW_EXCLUSIVE); + + if (unlink(initfilename) < 0) { /* - * We need to interlock this against write_relcache_init_file, to - * guard against possibility that someone renames a new-but- - * already-obsolete init file into place just after we unlink. With - * the interlock, it's certain that write_relcache_init_file will - * notice our SI inval message before renaming into place, or else - * that we will execute second and successfully unlink the file. + * The file might not be there if no backend has been started since + * the last removal. But complain about failures other than ENOENT. + * Fortunately, it's not too late to abort the transaction if we + * can't get rid of the would-be-obsolete init file. */ - LWLockAcquire(RelCacheInitLock, LW_EXCLUSIVE); - unlink(initfilename); - LWLockRelease(RelCacheInitLock); + if (errno != ENOENT) + ereport(ERROR, + (errcode_for_file_access(), + errmsg("could not remove cache file \"%s\": %m", + initfilename))); } } +void +RelationCacheInitFilePostInvalidate(void) +{ + LWLockRelease(RelCacheInitLock); +} + /* * Remove the init files during postmaster startup. * diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c index 31b98ff8bb..b93e9cb69b 100644 --- a/src/backend/utils/cache/syscache.c +++ b/src/backend/utils/cache/syscache.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -15,7 +15,7 @@ * These routines allow the parser/planner/executor to perform * rapid lookups on the contents of the system catalogs. * - * see utils/syscache.h for a list of the cache id's + * see utils/syscache.h for a list of the cache IDs * *------------------------------------------------------------------------- */ @@ -916,7 +916,7 @@ SearchSysCache(int cacheId, { if (cacheId < 0 || cacheId >= SysCacheSize || !PointerIsValid(SysCache[cacheId])) - elog(ERROR, "invalid cache id: %d", cacheId); + elog(ERROR, "invalid cache ID: %d", cacheId); return SearchCatCache(SysCache[cacheId], key1, key2, key3, key4); } @@ -1100,7 +1100,7 @@ SysCacheGetAttr(int cacheId, HeapTuple tup, */ if (cacheId < 0 || cacheId >= SysCacheSize || !PointerIsValid(SysCache[cacheId])) - elog(ERROR, "invalid cache id: %d", cacheId); + elog(ERROR, "invalid cache ID: %d", cacheId); if (!PointerIsValid(SysCache[cacheId]->cc_tupdesc)) { InitCatCachePhase2(SysCache[cacheId], false); @@ -1121,7 +1121,7 @@ SearchSysCacheList(int cacheId, int nkeys, { if (cacheId < 0 || cacheId >= SysCacheSize || !PointerIsValid(SysCache[cacheId])) - elog(ERROR, "invalid cache id: %d", cacheId); + elog(ERROR, "invalid cache ID: %d", cacheId); return SearchCatCacheList(SysCache[cacheId], nkeys, key1, key2, key3, key4); diff --git a/src/backend/utils/cache/ts_cache.c b/src/backend/utils/cache/ts_cache.c index a8c4d76565..93f6e5e237 100644 --- a/src/backend/utils/cache/ts_cache.c +++ b/src/backend/utils/cache/ts_cache.c @@ -604,8 +604,25 @@ check_TSCurrentConfig(char **newval, void **extra, GucSource source) cfgId = get_ts_config_oid(stringToQualifiedNameList(*newval), true); + /* + * When source == PGC_S_TEST, we are checking the argument of an + * ALTER DATABASE SET or ALTER USER SET command. It could be that + * the intended use of the setting is for some other database, so + * we should not error out if the text search configuration is not + * present in the current database. We issue a NOTICE instead. + */ if (!OidIsValid(cfgId)) - return false; + { + if (source == PGC_S_TEST) + { + ereport(NOTICE, + (errcode(ERRCODE_UNDEFINED_OBJECT), + errmsg("text search configuration \"%s\" does not exist", *newval))); + return true; + } + else + return false; + } /* * Modify the actually stored value to be fully qualified, to ensure @@ -626,7 +643,7 @@ check_TSCurrentConfig(char **newval, void **extra, GucSource source) free(*newval); *newval = strdup(buf); pfree(buf); - if (!newval) + if (!*newval) return false; } diff --git a/src/backend/utils/cache/typcache.c b/src/backend/utils/cache/typcache.c index b16ed6a208..5fd02958cf 100644 --- a/src/backend/utils/cache/typcache.c +++ b/src/backend/utils/cache/typcache.c @@ -578,6 +578,9 @@ cache_record_field_properties(TypeCacheEntry *typentry) load_typcache_tupdesc(typentry); tupdesc = typentry->tupDesc; + /* Must bump the refcount while we do additional catalog lookups */ + IncrTupleDescRefCount(tupdesc); + /* Have each property if all non-dropped fields have the property */ newflags = (TCFLAGS_HAVE_FIELD_EQUALITY | TCFLAGS_HAVE_FIELD_COMPARE); @@ -601,6 +604,8 @@ cache_record_field_properties(TypeCacheEntry *typentry) break; } typentry->flags |= newflags; + + DecrTupleDescRefCount(tupdesc); } typentry->flags |= TCFLAGS_CHECKED_FIELD_PROPERTIES; } @@ -1021,7 +1026,7 @@ load_enum_cache_data(TypeCacheEntry *tcache) enum_rel = heap_open(EnumRelationId, AccessShareLock); enum_scan = systable_beginscan(enum_rel, EnumTypIdLabelIndexId, - true, GetTransactionSnapshot(), + true, GetLatestSnapshot(), 1, &skey); while (HeapTupleIsValid(enum_tuple = systable_getnext(enum_scan))) diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 3cd64a66d3..e08e66de02 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -109,11 +109,12 @@ int Log_destination = LOG_DESTINATION_STDERR; /* * Max string length to send to syslog(). Note that this doesn't count the * sequence-number prefix we add, and of course it doesn't count the prefix - * added by syslog itself. On many implementations it seems that the hard - * limit is approximately 2K bytes including both those prefixes. + * added by syslog itself. Solaris and sysklogd truncate the final message + * at 1024 bytes, so this value leaves 124 bytes for those prefixes. (Most + * other syslog implementations seem to have limits of 2KB or so.) */ #ifndef PG_SYSLOG_LIMIT -#define PG_SYSLOG_LIMIT 1024 +#define PG_SYSLOG_LIMIT 900 #endif static bool openlog_done = false; @@ -163,6 +164,7 @@ static void send_message_to_server_log(ErrorData *edata); static void send_message_to_frontend(ErrorData *edata); static char *expand_fmt_string(const char *fmt, ErrorData *edata); static const char *useful_strerror(int errnum); +static const char *get_errno_symbol(int errnum); static const char *error_severity(int elevel); static void append_with_tabs(StringInfo buf, const char *str); static bool is_log_level_output(int elevel, int log_min_level); @@ -303,6 +305,18 @@ errstart(int elevel, const char *filename, int lineno, if (elevel < ERROR && !output_to_server && !output_to_client) return false; + /* + * We need to do some actual work. Make sure that memory context + * initialization has finished, else we can't do anything useful. + */ + if (ErrorContext == NULL) + { + /* Ooops, hard crash time; very little we can do safely here */ + write_stderr("error occurred at %s:%d before error message processing is available\n", + filename ? filename : "(unknown file)", lineno); + exit(2); + } + /* * Okay, crank up a stack entry to store the info in. */ @@ -345,6 +359,15 @@ errstart(int elevel, const char *filename, int lineno, edata->elevel = elevel; edata->output_to_server = output_to_server; edata->output_to_client = output_to_client; + if (filename) + { + const char *slash; + + /* keep only base name, useful especially for vpath builds */ + slash = strrchr(filename, '/'); + if (slash) + filename = slash + 1; + } edata->filename = filename; edata->lineno = lineno; edata->funcname = funcname; @@ -377,12 +400,25 @@ errfinish(int dummy,...) { ErrorData *edata = &errordata[errordata_stack_depth]; int elevel = edata->elevel; + bool save_ImmediateInterruptOK; MemoryContext oldcontext; ErrorContextCallback *econtext; recursion_depth++; CHECK_STACK_DEPTH(); + /* + * Ensure we can't get interrupted while performing error reporting. This + * is needed to prevent recursive entry to functions like syslog(), which + * may not be re-entrant. + * + * Note: other places that save-and-clear ImmediateInterruptOK also do + * HOLD_INTERRUPTS(), but that should not be necessary here since we + * don't call anything that could turn on ImmediateInterruptOK. + */ + save_ImmediateInterruptOK = ImmediateInterruptOK; + ImmediateInterruptOK = false; + /* * Do processing in ErrorContext, which we hope has enough reserved space * to report an error. @@ -408,17 +444,16 @@ errfinish(int dummy,...) /* * We do some minimal cleanup before longjmp'ing so that handlers can * execute in a reasonably sane state. - */ - - /* This is just in case the error came while waiting for input */ - ImmediateInterruptOK = false; - - /* + * * Reset InterruptHoldoffCount in case we ereport'd from inside an * interrupt holdoff section. (We assume here that no handler will * itself be inside a holdoff section. If necessary, such a handler * could save and restore InterruptHoldoffCount for itself, but this * should make life easier for most.) + * + * Note that we intentionally don't restore ImmediateInterruptOK here, + * even if it was set at entry. We definitely don't want that on + * while doing error cleanup. */ InterruptHoldoffCount = 0; @@ -475,10 +510,7 @@ errfinish(int dummy,...) { /* * For a FATAL error, we let proc_exit clean up and exit. - */ - ImmediateInterruptOK = false; - - /* + * * If we just reported a startup failure, the client will disconnect * on receiving it, so don't send any more to the client. */ @@ -511,15 +543,18 @@ errfinish(int dummy,...) * XXX: what if we are *in* the postmaster? abort() won't kill our * children... */ - ImmediateInterruptOK = false; fflush(stdout); fflush(stderr); abort(); } /* - * We reach here if elevel <= WARNING. OK to return to caller. - * + * We reach here if elevel <= WARNING. OK to return to caller, so restore + * caller's setting of ImmediateInterruptOK. + */ + ImmediateInterruptOK = save_ImmediateInterruptOK; + + /* * But check for cancel/die interrupt first --- this is so that the user * can stop a query emitting tons of notice or warning messages, even if * it's in a loop that otherwise fails to check for interrupts. @@ -846,6 +881,33 @@ errdetail(const char *fmt,...) } +/* + * errdetail_internal --- add a detail error message text to the current error + * + * This is exactly like errdetail() except that strings passed to + * errdetail_internal are not translated, and are customarily left out of the + * internationalization message dictionary. This should be used for detail + * messages that seem not worth translating for one reason or another + * (typically, that they don't seem to be useful to average users). + */ +int +errdetail_internal(const char *fmt,...) +{ + ErrorData *edata = &errordata[errordata_stack_depth]; + MemoryContext oldcontext; + + recursion_depth++; + CHECK_STACK_DEPTH(); + oldcontext = MemoryContextSwitchTo(ErrorContext); + + EVALUATE_MESSAGE(detail, false, false); + + MemoryContextSwitchTo(oldcontext); + recursion_depth--; + return 0; /* return value does not matter */ +} + + /* * errdetail_log --- add a detail_log error message text to the current error */ @@ -1103,6 +1165,15 @@ elog_start(const char *filename, int lineno, const char *funcname) { ErrorData *edata; + /* Make sure that memory context initialization has finished */ + if (ErrorContext == NULL) + { + /* Ooops, hard crash time; very little we can do safely here */ + write_stderr("error occurred at %s:%d before error message processing is available\n", + filename ? filename : "(unknown file)", lineno); + exit(2); + } + if (++errordata_stack_depth >= ERRORDATA_STACK_SIZE) { /* @@ -1117,6 +1188,15 @@ elog_start(const char *filename, int lineno, const char *funcname) } edata = &errordata[errordata_stack_depth]; + if (filename) + { + const char *slash; + + /* keep only base name, useful especially for vpath builds */ + slash = strrchr(filename, '/'); + if (slash) + filename = slash + 1; + } edata->filename = filename; edata->lineno = lineno; edata->funcname = funcname; @@ -2706,7 +2786,7 @@ expand_fmt_string(const char *fmt, ErrorData *edata) static const char * useful_strerror(int errnum) { - /* this buffer is only used if errno has a bogus value */ + /* this buffer is only used if strerror() and get_errno_symbol() fail */ static char errorstr_buf[48]; const char *str; @@ -2718,10 +2798,16 @@ useful_strerror(int errnum) str = strerror(errnum); /* - * Some strerror()s return an empty string for out-of-range errno. This is - * ANSI C spec compliant, but not exactly useful. + * Some strerror()s return an empty string for out-of-range errno. This + * is ANSI C spec compliant, but not exactly useful. Also, we may get + * back strings of question marks if libc cannot transcode the message to + * the codeset specified by LC_CTYPE. If we get nothing useful, first try + * get_errno_symbol(), and if that fails, print the numeric errno. */ - if (str == NULL || *str == '\0') + if (str == NULL || *str == '\0' || *str == '?') + str = get_errno_symbol(errnum); + + if (str == NULL) { snprintf(errorstr_buf, sizeof(errorstr_buf), /*------ @@ -2734,6 +2820,178 @@ useful_strerror(int errnum) return str; } +/* + * Returns a symbol (e.g. "ENOENT") for an errno code. + * Returns NULL if the code is unrecognized. + */ +static const char * +get_errno_symbol(int errnum) +{ + switch (errnum) + { + case E2BIG: + return "E2BIG"; + case EACCES: + return "EACCES"; +#ifdef EADDRINUSE + case EADDRINUSE: + return "EADDRINUSE"; +#endif +#ifdef EADDRNOTAVAIL + case EADDRNOTAVAIL: + return "EADDRNOTAVAIL"; +#endif + case EAFNOSUPPORT: + return "EAFNOSUPPORT"; +#ifdef EAGAIN + case EAGAIN: + return "EAGAIN"; +#endif +#ifdef EALREADY + case EALREADY: + return "EALREADY"; +#endif + case EBADF: + return "EBADF"; +#ifdef EBADMSG + case EBADMSG: + return "EBADMSG"; +#endif + case EBUSY: + return "EBUSY"; + case ECHILD: + return "ECHILD"; +#ifdef ECONNABORTED + case ECONNABORTED: + return "ECONNABORTED"; +#endif + case ECONNREFUSED: + return "ECONNREFUSED"; +#ifdef ECONNRESET + case ECONNRESET: + return "ECONNRESET"; +#endif + case EDEADLK: + return "EDEADLK"; + case EDOM: + return "EDOM"; + case EEXIST: + return "EEXIST"; + case EFAULT: + return "EFAULT"; + case EFBIG: + return "EFBIG"; +#ifdef EHOSTUNREACH + case EHOSTUNREACH: + return "EHOSTUNREACH"; +#endif + case EIDRM: + return "EIDRM"; + case EINPROGRESS: + return "EINPROGRESS"; + case EINTR: + return "EINTR"; + case EINVAL: + return "EINVAL"; + case EIO: + return "EIO"; +#ifdef EISCONN + case EISCONN: + return "EISCONN"; +#endif + case EISDIR: + return "EISDIR"; +#ifdef ELOOP + case ELOOP: + return "ELOOP"; +#endif + case EMFILE: + return "EMFILE"; + case EMLINK: + return "EMLINK"; + case EMSGSIZE: + return "EMSGSIZE"; + case ENAMETOOLONG: + return "ENAMETOOLONG"; + case ENFILE: + return "ENFILE"; + case ENOBUFS: + return "ENOBUFS"; + case ENODEV: + return "ENODEV"; + case ENOENT: + return "ENOENT"; + case ENOEXEC: + return "ENOEXEC"; + case ENOMEM: + return "ENOMEM"; + case ENOSPC: + return "ENOSPC"; + case ENOSYS: + return "ENOSYS"; +#ifdef ENOTCONN + case ENOTCONN: + return "ENOTCONN"; +#endif + case ENOTDIR: + return "ENOTDIR"; +#if defined(ENOTEMPTY) && (ENOTEMPTY != EEXIST) /* same code on AIX */ + case ENOTEMPTY: + return "ENOTEMPTY"; +#endif +#ifdef ENOTSOCK + case ENOTSOCK: + return "ENOTSOCK"; +#endif +#ifdef ENOTSUP + case ENOTSUP: + return "ENOTSUP"; +#endif + case ENOTTY: + return "ENOTTY"; + case ENXIO: + return "ENXIO"; +#if defined(EOPNOTSUPP) && (!defined(ENOTSUP) || (EOPNOTSUPP != ENOTSUP)) + case EOPNOTSUPP: + return "EOPNOTSUPP"; +#endif +#ifdef EOVERFLOW + case EOVERFLOW: + return "EOVERFLOW"; +#endif + case EPERM: + return "EPERM"; + case EPIPE: + return "EPIPE"; + case EPROTONOSUPPORT: + return "EPROTONOSUPPORT"; + case ERANGE: + return "ERANGE"; +#ifdef EROFS + case EROFS: + return "EROFS"; +#endif + case ESRCH: + return "ESRCH"; +#ifdef ETIMEDOUT + case ETIMEDOUT: + return "ETIMEDOUT"; +#endif +#ifdef ETXTBSY + case ETXTBSY: + return "ETXTBSY"; +#endif +#if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN)) + case EWOULDBLOCK: + return "EWOULDBLOCK"; +#endif + case EXDEV: + return "EXDEV"; + } + + return NULL; +} + /* * error_severity --- get localized string representing elevel diff --git a/src/backend/utils/fmgr/dfmgr.c b/src/backend/utils/fmgr/dfmgr.c index 97a3bd51e5..734bd05689 100644 --- a/src/backend/utils/fmgr/dfmgr.c +++ b/src/backend/utils/fmgr/dfmgr.c @@ -378,7 +378,7 @@ incompatible_module_error(const char *libname, ereport(ERROR, (errmsg("incompatible library \"%s\": magic block mismatch", libname), - errdetail("%s", details.data))); + errdetail_internal("%s", details.data))); } /* diff --git a/src/backend/utils/fmgr/fmgr.c b/src/backend/utils/fmgr/fmgr.c index 21fb5ade7a..0a2d4ef956 100644 --- a/src/backend/utils/fmgr/fmgr.c +++ b/src/backend/utils/fmgr/fmgr.c @@ -24,6 +24,7 @@ #include "miscadmin.h" #include "nodes/nodeFuncs.h" #include "pgstat.h" +#include "utils/acl.h" #include "utils/builtins.h" #include "utils/fmgrtab.h" #include "utils/guc.h" @@ -158,7 +159,7 @@ fmgr_lookupByName(const char *name) void fmgr_info(Oid functionId, FmgrInfo *finfo) { - fmgr_info_cxt(functionId, finfo, CurrentMemoryContext); + fmgr_info_cxt_security(functionId, finfo, CurrentMemoryContext, false); } /* @@ -173,7 +174,7 @@ fmgr_info_cxt(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt) /* * This one does the actual work. ignore_security is ordinarily false - * but is set to true by fmgr_security_definer to avoid recursion. + * but is set to true when we need to avoid recursion. */ static void fmgr_info_cxt_security(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt, @@ -223,7 +224,8 @@ fmgr_info_cxt_security(Oid functionId, FmgrInfo *finfo, MemoryContext mcxt, /* * If it has prosecdef set, non-null proconfig, or if a plugin wants to * hook function entry/exit, use fmgr_security_definer call handler --- - * unless we are being called again by fmgr_security_definer. + * unless we are being called again by fmgr_security_definer or + * fmgr_info_other_lang. * * When using fmgr_security_definer, function stats tracking is always * disabled at the outer level, and instead we set the flag properly in @@ -405,7 +407,13 @@ fmgr_info_other_lang(Oid functionId, FmgrInfo *finfo, HeapTuple procedureTuple) elog(ERROR, "cache lookup failed for language %u", language); languageStruct = (Form_pg_language) GETSTRUCT(languageTuple); - fmgr_info(languageStruct->lanplcallfoid, &plfinfo); + /* + * Look up the language's call handler function, ignoring any attributes + * that would normally cause insertion of fmgr_security_definer. We + * need to get back a bare pointer to the actual C-language function. + */ + fmgr_info_cxt_security(languageStruct->lanplcallfoid, &plfinfo, + CurrentMemoryContext, true); finfo->fn_addr = plfinfo.fn_addr; /* @@ -2438,3 +2446,86 @@ get_call_expr_arg_stable(Node *expr, int argnum) return false; } + +/*------------------------------------------------------------------------- + * Support routines for procedural language implementations + *------------------------------------------------------------------------- + */ + +/* + * Verify that a validator is actually associated with the language of a + * particular function and that the user has access to both the language and + * the function. All validators should call this before doing anything + * substantial. Doing so ensures a user cannot achieve anything with explicit + * calls to validators that he could not achieve with CREATE FUNCTION or by + * simply calling an existing function. + * + * When this function returns false, callers should skip all validation work + * and call PG_RETURN_VOID(). This never happens at present; it is reserved + * for future expansion. + * + * In particular, checking that the validator corresponds to the function's + * language allows untrusted language validators to assume they process only + * superuser-chosen source code. (Untrusted language call handlers, by + * definition, do assume that.) A user lacking the USAGE language privilege + * would be unable to reach the validator through CREATE FUNCTION, so we check + * that to block explicit calls as well. Checking the EXECUTE privilege on + * the function is often superfluous, because most users can clone the + * function to get an executable copy. It is meaningful against users with no + * database TEMP right and no permanent schema CREATE right, thereby unable to + * create any function. Also, if the function tracks persistent state by + * function OID or name, validating the original function might permit more + * mischief than creating and validating a clone thereof. + */ +bool +CheckFunctionValidatorAccess(Oid validatorOid, Oid functionOid) +{ + HeapTuple procTup; + HeapTuple langTup; + Form_pg_proc procStruct; + Form_pg_language langStruct; + AclResult aclresult; + + /* Get the function's pg_proc entry */ + procTup = SearchSysCache1(PROCOID, ObjectIdGetDatum(functionOid)); + if (!HeapTupleIsValid(procTup)) + elog(ERROR, "cache lookup failed for function %u", functionOid); + procStruct = (Form_pg_proc) GETSTRUCT(procTup); + + /* + * Fetch pg_language entry to know if this is the correct validation + * function for that pg_proc entry. + */ + langTup = SearchSysCache1(LANGOID, ObjectIdGetDatum(procStruct->prolang)); + if (!HeapTupleIsValid(langTup)) + elog(ERROR, "cache lookup failed for language %u", procStruct->prolang); + langStruct = (Form_pg_language) GETSTRUCT(langTup); + + if (langStruct->lanvalidator != validatorOid) + ereport(ERROR, + (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), + errmsg("language validation function %u called for language %u instead of %u", + validatorOid, procStruct->prolang, + langStruct->lanvalidator))); + + /* first validate that we have permissions to use the language */ + aclresult = pg_language_aclcheck(procStruct->prolang, GetUserId(), + ACL_USAGE); + if (aclresult != ACLCHECK_OK) + aclcheck_error(aclresult, ACL_KIND_LANGUAGE, + NameStr(langStruct->lanname)); + + /* + * Check whether we are allowed to execute the function itself. If we can + * execute it, there should be no possible side-effect of + * compiling/validation that execution can't have. + */ + aclresult = pg_proc_aclcheck(functionOid, GetUserId(), ACL_EXECUTE); + if (aclresult != ACLCHECK_OK) + aclcheck_error(aclresult, ACL_KIND_PROC, NameStr(procStruct->proname)); + + ReleaseSysCache(procTup); + ReleaseSysCache(langTup); + + return true; +} diff --git a/src/backend/utils/hash/dynahash.c b/src/backend/utils/hash/dynahash.c index d9027291ee..77d615cbda 100644 --- a/src/backend/utils/hash/dynahash.c +++ b/src/backend/utils/hash/dynahash.c @@ -63,6 +63,8 @@ #include "postgres.h" +#include + #include "access/xact.h" #include "storage/shmem.h" #include "storage/spin.h" @@ -200,6 +202,8 @@ static void hdefault(HTAB *hashp); static int choose_nelem_alloc(Size entrysize); static bool init_htab(HTAB *hashp, long nelem); static void hash_corrupted(HTAB *hashp); +static long next_pow2_long(long num); +static int next_pow2_int(long num); static void register_seq_scan(HTAB *hashp); static void deregister_seq_scan(HTAB *hashp); static bool has_seq_scans(HTAB *hashp); @@ -374,8 +378,13 @@ hash_create(const char *tabname, long nelem, HASHCTL *info, int flags) { /* Doesn't make sense to partition a local hash table */ Assert(flags & HASH_SHARED_MEM); - /* # of partitions had better be a power of 2 */ - Assert(info->num_partitions == (1L << my_log2(info->num_partitions))); + + /* + * The number of partitions had better be a power of 2. Also, it must + * be less than INT_MAX (see init_htab()), so call the int version of + * next_pow2. + */ + Assert(info->num_partitions == next_pow2_int(info->num_partitions)); hctl->num_partitions = info->num_partitions; } @@ -518,7 +527,6 @@ init_htab(HTAB *hashp, long nelem) { HASHHDR *hctl = hashp->hctl; HASHSEGMENT *segp; - long lnbuckets; int nbuckets; int nsegs; @@ -533,9 +541,7 @@ init_htab(HTAB *hashp, long nelem) * number of buckets. Allocate space for the next greater power of two * number of buckets */ - lnbuckets = (nelem - 1) / hctl->ffactor + 1; - - nbuckets = 1 << my_log2(lnbuckets); + nbuckets = next_pow2_int((nelem - 1) / hctl->ffactor + 1); /* * In a partitioned table, nbuckets must be at least equal to @@ -553,7 +559,7 @@ init_htab(HTAB *hashp, long nelem) * Figure number of directory segments needed, round up to a power of 2 */ nsegs = (nbuckets - 1) / hctl->ssize + 1; - nsegs = 1 << my_log2(nsegs); + nsegs = next_pow2_int(nsegs); /* * Make sure directory is big enough. If pre-allocated directory is too @@ -623,9 +629,9 @@ hash_estimate_size(long num_entries, Size entrysize) elementAllocCnt; /* estimate number of buckets wanted */ - nBuckets = 1L << my_log2((num_entries - 1) / DEF_FFACTOR + 1); + nBuckets = next_pow2_long((num_entries - 1) / DEF_FFACTOR + 1); /* # of segments needed for nBuckets */ - nSegments = 1L << my_log2((nBuckets - 1) / DEF_SEGSIZE + 1); + nSegments = next_pow2_long((nBuckets - 1) / DEF_SEGSIZE + 1); /* directory entries */ nDirEntries = DEF_DIRSIZE; while (nDirEntries < nSegments) @@ -666,9 +672,9 @@ hash_select_dirsize(long num_entries) nDirEntries; /* estimate number of buckets wanted */ - nBuckets = 1L << my_log2((num_entries - 1) / DEF_FFACTOR + 1); + nBuckets = next_pow2_long((num_entries - 1) / DEF_FFACTOR + 1); /* # of segments needed for nBuckets */ - nSegments = 1L << my_log2((nBuckets - 1) / DEF_SEGSIZE + 1); + nSegments = next_pow2_long((nBuckets - 1) / DEF_SEGSIZE + 1); /* directory entries */ nDirEntries = DEF_DIRSIZE; while (nDirEntries < nSegments) @@ -820,6 +826,27 @@ hash_search_with_hash_value(HTAB *hashp, hctl->accesses++; #endif + /* + * If inserting, check if it is time to split a bucket. + * + * NOTE: failure to expand table is not a fatal error, it just means we + * have to run at higher fill factor than we wanted. However, if we're + * using the palloc allocator then it will throw error anyway on + * out-of-memory, so we must do this before modifying the table. + */ + if (action == HASH_ENTER || action == HASH_ENTER_NULL) + { + /* + * Can't split if running in partitioned mode, nor if frozen, nor if + * table is the subject of any active hash_seq_search scans. Strange + * order of these tests is to try to check cheaper conditions first. + */ + if (!IS_PARTITIONED(hctl) && !hashp->frozen && + hctl->nentries / (long) (hctl->max_bucket + 1) >= hctl->ffactor && + !has_seq_scans(hashp)) + (void) expand_table(hashp); + } + /* * Do the initial lookup */ @@ -940,24 +967,12 @@ hash_search_with_hash_value(HTAB *hashp, currBucket->hashvalue = hashvalue; hashp->keycopy(ELEMENTKEY(currBucket), keyPtr, keysize); - /* caller is expected to fill the data field on return */ - /* - * Check if it is time to split a bucket. Can't split if running - * in partitioned mode, nor if table is the subject of any active - * hash_seq_search scans. Strange order of these tests is to try - * to check cheaper conditions first. + * Caller is expected to fill the data field on return. DO NOT + * insert any code that could possibly throw error here, as doing + * so would leave the table entry incomplete and hence corrupt the + * caller's data structure. */ - if (!IS_PARTITIONED(hctl) && - hctl->nentries / (long) (hctl->max_bucket + 1) >= hctl->ffactor && - !has_seq_scans(hashp)) - { - /* - * NOTE: failure to expand table is not a fatal error, it just - * means we have to run at higher fill factor than we wanted. - */ - expand_table(hashp); - } return (void *) ELEMENTKEY(currBucket); } @@ -1394,11 +1409,32 @@ my_log2(long num) int i; long limit; + /* guard against too-large input, which would put us into infinite loop */ + if (num > LONG_MAX / 2) + num = LONG_MAX / 2; + for (i = 0, limit = 1; limit < num; i++, limit <<= 1) ; return i; } +/* calculate first power of 2 >= num, bounded to what will fit in a long */ +static long +next_pow2_long(long num) +{ + /* my_log2's internal range check is sufficient */ + return 1L << my_log2(num); +} + +/* calculate first power of 2 >= num, bounded to what will fit in an int */ +static int +next_pow2_int(long num) +{ + if (num > INT_MAX / 2) + num = INT_MAX / 2; + return 1 << my_log2(num); +} + /************************* SEQ SCAN TRACKING ************************/ diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c index 0b6fd19abe..e70bf9ff17 100644 --- a/src/backend/utils/init/miscinit.c +++ b/src/backend/utils/init/miscinit.c @@ -388,15 +388,15 @@ SetUserIdAndContext(Oid userid, bool sec_def_context) /* - * Check if the authenticated user is a replication role + * Check whether specified role has explicit REPLICATION privilege */ bool -is_authenticated_user_replication_role(void) +has_rolreplication(Oid roleid) { bool result = false; HeapTuple utup; - utup = SearchSysCache1(AUTHOID, ObjectIdGetDatum(AuthenticatedUserId)); + utup = SearchSysCache1(AUTHOID, ObjectIdGetDatum(roleid)); if (HeapTupleIsValid(utup)) { result = ((Form_pg_authid) GETSTRUCT(utup))->rolreplication; @@ -889,9 +889,9 @@ CreateLockFile(const char *filename, bool amPostmaster, /* * Successfully created the file, now fill it. See comment in miscadmin.h - * about the contents. Note that we write the same info into both datadir - * and socket lockfiles; although more stuff may get added to the datadir - * lockfile later. + * about the contents. Note that we write the same first five lines into + * both datadir and socket lockfiles; although more stuff may get added to + * the datadir lockfile later. */ snprintf(buffer, sizeof(buffer), "%d\n%s\n%ld\n%d\n%s\n", amPostmaster ? (int) my_pid : -((int) my_pid), @@ -905,6 +905,13 @@ CreateLockFile(const char *filename, bool amPostmaster, #endif ); + /* + * In a standalone backend, the next line (LOCK_FILE_LINE_LISTEN_ADDR) + * will never receive data, so fill it in as empty now. + */ + if (isDDLock && !amPostmaster) + strlcat(buffer, "\n", sizeof(buffer)); + errno = 0; if (write(fd, buffer, strlen(buffer)) != strlen(buffer)) { @@ -1059,7 +1066,8 @@ AddToDataDirLockFile(int target_line, const char *str) { if ((ptr = strchr(ptr, '\n')) == NULL) { - elog(LOG, "bogus data in \"%s\"", DIRECTORY_LOCK_FILE); + elog(LOG, "incomplete data in \"%s\": found only %d newlines while trying to add line %d", + DIRECTORY_LOCK_FILE, lineno - 1, target_line); close(fd); return; } diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c index d64130bd34..b2bde38b29 100644 --- a/src/backend/utils/init/postinit.c +++ b/src/backend/utils/init/postinit.c @@ -488,7 +488,7 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username, SharedInvalBackendInit(false); if (MyBackendId > MaxBackends || MyBackendId <= 0) - elog(FATAL, "bad backend id: %d", MyBackendId); + elog(FATAL, "bad backend ID: %d", MyBackendId); /* Now that we have a BackendId, we can participate in ProcSignal */ ProcSignalInit(MyBackendId); @@ -570,7 +570,18 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username, */ if (!bootstrap) { + /* statement_timestamp must be set for timeouts to work correctly */ + SetCurrentStatementStartTimestamp(); StartTransactionCommand(); + + /* + * transaction_isolation will have been set to the default by the + * above. If the default is "serializable", and we are in hot + * standby, we will fail if we don't change it to something lower. + * Fortunately, "read committed" is plenty good enough. + */ + XactIsoLevel = XACT_READ_COMMITTED; + (void) GetTransactionSnapshot(); } @@ -657,7 +668,7 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username, Assert(!bootstrap); /* must have authenticated as a replication role */ - if (!is_authenticated_user_replication_role()) + if (!has_rolreplication(GetUserId())) ereport(FATAL, (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), errmsg("must be replication role to start walsender"))); @@ -900,7 +911,7 @@ process_startup_options(Port *port, bool am_superuser) Assert(ac < maxac); - (void) process_postgres_switches(ac, av, gucctx); + (void) process_postgres_switches(ac, av, gucctx, NULL); } /* diff --git a/src/backend/utils/mb/conversion_procs/euc2004_sjis2004/euc2004_sjis2004.c b/src/backend/utils/mb/conversion_procs/euc2004_sjis2004/euc2004_sjis2004.c index 3499f774b3..868bdbcf69 100644 --- a/src/backend/utils/mb/conversion_procs/euc2004_sjis2004/euc2004_sjis2004.c +++ b/src/backend/utils/mb/conversion_procs/euc2004_sjis2004/euc2004_sjis2004.c @@ -218,8 +218,7 @@ get_ten(int b, int *ku) static void shift_jis_20042euc_jis_2004(const unsigned char *sjis, unsigned char *p, int len) { - int c1, - c2; + int c1; int ku, ten, kubun; @@ -229,7 +228,6 @@ shift_jis_20042euc_jis_2004(const unsigned char *sjis, unsigned char *p, int len while (len > 0) { c1 = *sjis; - c2 = sjis[1]; if (!IS_HIGHBIT_SET(c1)) { @@ -245,7 +243,7 @@ shift_jis_20042euc_jis_2004(const unsigned char *sjis, unsigned char *p, int len l = pg_encoding_verifymb(PG_SHIFT_JIS_2004, (const char *) sjis, len); - if (l < 0) + if (l < 0 || l > len) report_invalid_encoding(PG_SHIFT_JIS_2004, (const char *) sjis, len); @@ -257,6 +255,8 @@ shift_jis_20042euc_jis_2004(const unsigned char *sjis, unsigned char *p, int len } else if (l == 2) { + int c2 = sjis[1]; + plane = 1; ku = 1; ten = 1; diff --git a/src/backend/utils/mb/mbutils.c b/src/backend/utils/mb/mbutils.c index 848c26f41f..287ff808fc 100644 --- a/src/backend/utils/mb/mbutils.c +++ b/src/backend/utils/mb/mbutils.c @@ -710,6 +710,28 @@ pg_encoding_mb2wchar_with_len(int encoding, return (*pg_wchar_table[encoding].mb2wchar_with_len) ((const unsigned char *) from, to, len); } +/* convert a wchar string to a multibyte */ +int +pg_wchar2mb(const pg_wchar *from, char *to) +{ + return (*pg_wchar_table[DatabaseEncoding->encoding].wchar2mb_with_len) (from, (unsigned char *)to, pg_wchar_strlen(from)); +} + +/* convert a wchar string to a multibyte with a limited length */ +int +pg_wchar2mb_with_len(const pg_wchar *from, char *to, int len) +{ + return (*pg_wchar_table[DatabaseEncoding->encoding].wchar2mb_with_len) (from, (unsigned char *)to, len); +} + +/* same, with any encoding */ +int +pg_encoding_wchar2mb_with_len(int encoding, + const pg_wchar *from, char *to, int len) +{ + return (*pg_wchar_table[encoding].wchar2mb_with_len) (from, (unsigned char *)to, len); +} + /* returns the byte length of a multibyte character */ int pg_mblen(const char *mbstr) diff --git a/src/backend/utils/mb/wchar.c b/src/backend/utils/mb/wchar.c index 5b0cf628fe..3ebd2dda7a 100644 --- a/src/backend/utils/mb/wchar.c +++ b/src/backend/utils/mb/wchar.c @@ -99,8 +99,7 @@ pg_euc2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) *to |= *from++; len -= 2; } - else - /* must be ASCII */ + else /* must be ASCII */ { *to = *from++; len--; @@ -339,6 +338,55 @@ pg_euctw_dsplen(const unsigned char *s) return len; } +/* + * Convert pg_wchar to EUC_* encoding. + * caller must allocate enough space for "to", including a trailing zero! + * len: length of from. + * "from" not necessarily null terminated. + */ +static int +pg_wchar2euc_with_len(const pg_wchar *from, unsigned char *to, int len) +{ + int cnt = 0; + + while (len > 0 && *from) + { + unsigned char c; + + if ((c = (*from >> 24))) + { + *to++ = c; + *to++ = (*from >> 16) & 0xff; + *to++ = (*from >> 8) & 0xff; + *to++ = *from & 0xff; + cnt += 4; + } + else if ((c = (*from >> 16))) + { + *to++ = c; + *to++ = (*from >> 8) & 0xff; + *to++ = *from & 0xff; + cnt += 3; + } + else if ((c = (*from >> 8))) + { + *to++ = c; + *to++ = *from & 0xff; + cnt += 2; + } + else + { + *to++ = *from; + cnt++; + } + from++; + len--; + } + *to = 0; + return cnt; +} + + /* * JOHAB */ @@ -453,6 +501,31 @@ unicode_to_utf8(pg_wchar c, unsigned char *utf8string) return utf8string; } +/* + * Trivial conversion from pg_wchar to UTF-8. + * caller should allocate enough space for "to" + * len: length of from. + * "from" not necessarily null terminated. + */ +static int +pg_wchar2utf_with_len(const pg_wchar *from, unsigned char *to, int len) +{ + int cnt = 0; + + while (len > 0 && *from) + { + int char_len; + + unicode_to_utf8(*from, to); + char_len = pg_utf_mblen(to); + cnt += char_len; + to += char_len; + from++; + len--; + } + *to = 0; + return cnt; +} /* * Return the byte length of a UTF8 character pointed to by s @@ -719,6 +792,77 @@ pg_mule2wchar_with_len(const unsigned char *from, pg_wchar *to, int len) return cnt; } +/* + * convert pg_wchar to mule internal code + * caller should allocate enough space for "to" + * len: length of from. + * "from" not necessarily null terminated. + */ +static int +pg_wchar2mule_with_len(const pg_wchar *from, unsigned char *to, int len) +{ + int cnt = 0; + + while (len > 0 && *from) + { + unsigned char lb; + + lb = (*from >> 16) & 0xff; + if (IS_LC1(lb)) + { + *to++ = lb; + *to++ = *from & 0xff; + cnt += 2; + } + else if (IS_LC2(lb)) + { + *to++ = lb; + *to++ = (*from >> 8) & 0xff; + *to++ = *from & 0xff; + cnt += 3; + } + else if (IS_LCPRV1_A_RANGE(lb)) + { + *to++ = LCPRV1_A; + *to++ = lb; + *to++ = *from & 0xff; + cnt += 3; + } + else if (IS_LCPRV1_B_RANGE(lb)) + { + *to++ = LCPRV1_B; + *to++ = lb; + *to++ = *from & 0xff; + cnt += 3; + } + else if (IS_LCPRV2_A_RANGE(lb)) + { + *to++ = LCPRV2_A; + *to++ = lb; + *to++ = (*from >> 8) & 0xff; + *to++ = *from & 0xff; + cnt += 4; + } + else if (IS_LCPRV2_B_RANGE(lb)) + { + *to++ = LCPRV2_B; + *to++ = lb; + *to++ = (*from >> 8) & 0xff; + *to++ = *from & 0xff; + cnt += 4; + } + else + { + *to++ = *from & 0xff; + cnt += 1; + } + from++; + len--; + } + *to = 0; + return cnt; +} + int pg_mule_mblen(const unsigned char *s) { @@ -774,6 +918,28 @@ pg_latin12wchar_with_len(const unsigned char *from, pg_wchar *to, int len) return cnt; } +/* + * Trivial conversion from pg_wchar to single byte encoding. Just ignores + * high bits. + * caller should allocate enough space for "to" + * len: length of from. + * "from" not necessarily null terminated. + */ +static int +pg_wchar2single_with_len(const pg_wchar *from, unsigned char *to, int len) +{ + int cnt = 0; + + while (len > 0 && *from) + { + *to++ = *from++; + len--; + cnt++; + } + *to = 0; + return cnt; +} + static int pg_latin1_mblen(const unsigned char *s) { @@ -1341,48 +1507,48 @@ pg_utf8_islegal(const unsigned char *source, int length) *------------------------------------------------------------------- */ pg_wchar_tbl pg_wchar_table[] = { - {pg_ascii2wchar_with_len, pg_ascii_mblen, pg_ascii_dsplen, pg_ascii_verifier, 1}, /* PG_SQL_ASCII */ - {pg_eucjp2wchar_with_len, pg_eucjp_mblen, pg_eucjp_dsplen, pg_eucjp_verifier, 3}, /* PG_EUC_JP */ - {pg_euccn2wchar_with_len, pg_euccn_mblen, pg_euccn_dsplen, pg_euccn_verifier, 2}, /* PG_EUC_CN */ - {pg_euckr2wchar_with_len, pg_euckr_mblen, pg_euckr_dsplen, pg_euckr_verifier, 3}, /* PG_EUC_KR */ - {pg_euctw2wchar_with_len, pg_euctw_mblen, pg_euctw_dsplen, pg_euctw_verifier, 4}, /* PG_EUC_TW */ - {pg_eucjp2wchar_with_len, pg_eucjp_mblen, pg_eucjp_dsplen, pg_eucjp_verifier, 3}, /* PG_EUC_JIS_2004 */ - {pg_utf2wchar_with_len, pg_utf_mblen, pg_utf_dsplen, pg_utf8_verifier, 4}, /* PG_UTF8 */ - {pg_mule2wchar_with_len, pg_mule_mblen, pg_mule_dsplen, pg_mule_verifier, 4}, /* PG_MULE_INTERNAL */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN1 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN2 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN3 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN4 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN5 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN6 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN7 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN8 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN9 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN10 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1256 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1258 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN866 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN874 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_KOI8R */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1251 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1252 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-5 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-6 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-7 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-8 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1250 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1253 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1254 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1255 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1257 */ - {pg_latin12wchar_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_KOI8U */ - {0, pg_sjis_mblen, pg_sjis_dsplen, pg_sjis_verifier, 2}, /* PG_SJIS */ - {0, pg_big5_mblen, pg_big5_dsplen, pg_big5_verifier, 2}, /* PG_BIG5 */ - {0, pg_gbk_mblen, pg_gbk_dsplen, pg_gbk_verifier, 2}, /* PG_GBK */ - {0, pg_uhc_mblen, pg_uhc_dsplen, pg_uhc_verifier, 2}, /* PG_UHC */ - {0, pg_gb18030_mblen, pg_gb18030_dsplen, pg_gb18030_verifier, 4}, /* PG_GB18030 */ - {0, pg_johab_mblen, pg_johab_dsplen, pg_johab_verifier, 3}, /* PG_JOHAB */ - {0, pg_sjis_mblen, pg_sjis_dsplen, pg_sjis_verifier, 2} /* PG_SHIFT_JIS_2004 */ + {pg_ascii2wchar_with_len, pg_wchar2single_with_len, pg_ascii_mblen, pg_ascii_dsplen, pg_ascii_verifier, 1}, /* PG_SQL_ASCII */ + {pg_eucjp2wchar_with_len, pg_wchar2euc_with_len, pg_eucjp_mblen, pg_eucjp_dsplen, pg_eucjp_verifier, 3}, /* PG_EUC_JP */ + {pg_euccn2wchar_with_len, pg_wchar2euc_with_len, pg_euccn_mblen, pg_euccn_dsplen, pg_euccn_verifier, 2}, /* PG_EUC_CN */ + {pg_euckr2wchar_with_len, pg_wchar2euc_with_len, pg_euckr_mblen, pg_euckr_dsplen, pg_euckr_verifier, 3}, /* PG_EUC_KR */ + {pg_euctw2wchar_with_len, pg_wchar2euc_with_len, pg_euctw_mblen, pg_euctw_dsplen, pg_euctw_verifier, 4}, /* PG_EUC_TW */ + {pg_eucjp2wchar_with_len, pg_wchar2euc_with_len, pg_eucjp_mblen, pg_eucjp_dsplen, pg_eucjp_verifier, 3}, /* PG_EUC_JIS_2004 */ + {pg_utf2wchar_with_len, pg_wchar2utf_with_len, pg_utf_mblen, pg_utf_dsplen, pg_utf8_verifier, 4}, /* PG_UTF8 */ + {pg_mule2wchar_with_len, pg_wchar2mule_with_len, pg_mule_mblen, pg_mule_dsplen, pg_mule_verifier, 4}, /* PG_MULE_INTERNAL */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN1 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN2 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN3 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN4 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN5 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN6 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN7 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN8 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN9 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_LATIN10 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1256 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1258 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN866 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN874 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_KOI8R */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1251 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1252 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-5 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-6 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-7 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* ISO-8859-8 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1250 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1253 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1254 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1255 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_WIN1257 */ + {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifier, 1}, /* PG_KOI8U */ + {0, 0, pg_sjis_mblen, pg_sjis_dsplen, pg_sjis_verifier, 2}, /* PG_SJIS */ + {0, 0, pg_big5_mblen, pg_big5_dsplen, pg_big5_verifier, 2}, /* PG_BIG5 */ + {0, 0, pg_gbk_mblen, pg_gbk_dsplen, pg_gbk_verifier, 2}, /* PG_GBK */ + {0, 0, pg_uhc_mblen, pg_uhc_dsplen, pg_uhc_verifier, 2}, /* PG_UHC */ + {0, 0, pg_gb18030_mblen, pg_gb18030_dsplen, pg_gb18030_verifier, 4}, /* PG_GB18030 */ + {0, 0, pg_johab_mblen, pg_johab_dsplen, pg_johab_verifier, 3}, /* PG_JOHAB */ + {0, 0, pg_sjis_mblen, pg_sjis_dsplen, pg_sjis_verifier, 2} /* PG_SHIFT_JIS_2004 */ }; /* returns the byte length of a word for mule internal code */ diff --git a/src/backend/utils/misc/guc-file.l b/src/backend/utils/misc/guc-file.l index 78907b939d..3e9b10328d 100644 --- a/src/backend/utils/misc/guc-file.l +++ b/src/backend/utils/misc/guc-file.l @@ -306,9 +306,9 @@ ProcessConfigFile(GucContext context) /* In SIGHUP cases in the postmaster, report changes */ if (context == PGC_SIGHUP && !IsUnderPostmaster) { - const char *preval = GetConfigOption(item->name, false); + const char *preval = GetConfigOption(item->name, true, false); - /* string variables could be NULL; treat that as empty */ + /* If option doesn't exist yet or is NULL, treat as empty string */ if (!preval) preval = ""; /* must dup, else might have dangling pointer below */ @@ -323,7 +323,7 @@ ProcessConfigFile(GucContext context) if (pre_value) { - const char *post_value = GetConfigOption(item->name, false); + const char *post_value = GetConfigOption(item->name, true, false); if (!post_value) post_value = ""; diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index a5cfe86880..34e41efc94 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -7,7 +7,7 @@ * * * Copyright (c) 2000-2011, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * Written by Peter Eisentraut . * * IDENTIFICATION @@ -582,10 +582,12 @@ const char *const config_group_names[] = gettext_noop("Write-Ahead Log / Checkpoints"), /* WAL_ARCHIVING */ gettext_noop("Write-Ahead Log / Archiving"), - /* WAL_REPLICATION */ - gettext_noop("Write-Ahead Log / Streaming Replication"), - /* WAL_STANDBY_SERVERS */ - gettext_noop("Write-Ahead Log / Standby Servers"), + /* REPLICATION */ + gettext_noop("Replication"), + /* REPLICATION_MASTER */ + gettext_noop("Replication / Master Server"), + /* REPLICATION_STANDBY */ + gettext_noop("Replication / Standby Servers"), /* QUERY_TUNING */ gettext_noop("Query Tuning"), /* QUERY_TUNING_METHOD */ @@ -957,7 +959,7 @@ static struct config_bool ConfigureNamesBool[] = }, { {"restart_after_crash", PGC_SIGHUP, ERROR_HANDLING_OPTIONS, - gettext_noop("Reinitialize after backend crash."), + gettext_noop("Reinitialize server after backend crash."), NULL }, &restart_after_crash, @@ -1437,7 +1439,7 @@ static struct config_bool ConfigureNamesBool[] = }, { - {"hot_standby", PGC_POSTMASTER, WAL_STANDBY_SERVERS, + {"hot_standby", PGC_POSTMASTER, REPLICATION_STANDBY, gettext_noop("Allows connections and queries during recovery."), NULL }, @@ -1447,8 +1449,8 @@ static struct config_bool ConfigureNamesBool[] = }, { - {"hot_standby_feedback", PGC_SIGHUP, WAL_STANDBY_SERVERS, - gettext_noop("Allows feedback from a hot standby primary that will avoid query conflicts."), + {"hot_standby_feedback", PGC_SIGHUP, REPLICATION_STANDBY, + gettext_noop("Allows feedback from a hot standby to the primary that will avoid query conflicts."), NULL }, &hot_standby_feedback, @@ -1557,7 +1559,7 @@ static struct config_int ConfigureNamesInt[] = GUC_UNIT_S }, &XLogArchiveTimeout, - 0, 0, INT_MAX, + 0, 0, INT_MAX / 2, NULL, NULL, NULL }, { @@ -1567,7 +1569,7 @@ static struct config_int ConfigureNamesInt[] = GUC_NOT_IN_SAMPLE | GUC_UNIT_S }, &PostAuthDelay, - 0, 0, INT_MAX, + 0, 0, INT_MAX / 1000000, NULL, NULL, NULL }, { @@ -1654,7 +1656,7 @@ static struct config_int ConfigureNamesInt[] = }, { - {"max_standby_archive_delay", PGC_SIGHUP, WAL_STANDBY_SERVERS, + {"max_standby_archive_delay", PGC_SIGHUP, REPLICATION_STANDBY, gettext_noop("Sets the maximum delay before canceling queries when a hot standby server is processing archived WAL data."), NULL, GUC_UNIT_MS @@ -1665,7 +1667,7 @@ static struct config_int ConfigureNamesInt[] = }, { - {"max_standby_streaming_delay", PGC_SIGHUP, WAL_STANDBY_SERVERS, + {"max_standby_streaming_delay", PGC_SIGHUP, REPLICATION_STANDBY, gettext_noop("Sets the maximum delay before canceling queries when a hot standby server is processing streamed WAL data."), NULL, GUC_UNIT_MS @@ -1676,8 +1678,8 @@ static struct config_int ConfigureNamesInt[] = }, { - {"wal_receiver_status_interval", PGC_SIGHUP, WAL_STANDBY_SERVERS, - gettext_noop("Sets the maximum interval between WAL receiver status reports to the master."), + {"wal_receiver_status_interval", PGC_SIGHUP, REPLICATION_STANDBY, + gettext_noop("Sets the maximum interval between WAL receiver status reports to the primary."), NULL, GUC_UNIT_S }, @@ -1966,7 +1968,7 @@ static struct config_int ConfigureNamesInt[] = }, { - {"vacuum_defer_cleanup_age", PGC_SIGHUP, WAL_REPLICATION, + {"vacuum_defer_cleanup_age", PGC_SIGHUP, REPLICATION_MASTER, gettext_noop("Number of transactions by which VACUUM and HOT cleanup should be deferred, if any."), NULL }, @@ -2026,7 +2028,7 @@ static struct config_int ConfigureNamesInt[] = }, { - {"wal_keep_segments", PGC_SIGHUP, WAL_REPLICATION, + {"wal_keep_segments", PGC_SIGHUP, REPLICATION_MASTER, gettext_noop("Sets the number of WAL files held for standby servers."), NULL }, @@ -2094,7 +2096,7 @@ static struct config_int ConfigureNamesInt[] = { /* see max_connections */ - {"max_wal_senders", PGC_POSTMASTER, WAL_REPLICATION, + {"max_wal_senders", PGC_POSTMASTER, REPLICATION_MASTER, gettext_noop("Sets the maximum number of simultaneously running WAL sender processes."), NULL }, @@ -2104,7 +2106,7 @@ static struct config_int ConfigureNamesInt[] = }, { - {"wal_sender_delay", PGC_SIGHUP, WAL_REPLICATION, + {"wal_sender_delay", PGC_SIGHUP, REPLICATION_MASTER, gettext_noop("WAL sender sleep time between WAL replications."), NULL, GUC_UNIT_MS @@ -2115,7 +2117,7 @@ static struct config_int ConfigureNamesInt[] = }, { - {"replication_timeout", PGC_SIGHUP, WAL_REPLICATION, + {"replication_timeout", PGC_SIGHUP, REPLICATION_MASTER, gettext_noop("Sets the maximum time to wait for WAL replication."), NULL, GUC_UNIT_MS @@ -3142,8 +3144,8 @@ static struct config_string ConfigureNamesString[] = }, { - {"synchronous_standby_names", PGC_SIGHUP, WAL_REPLICATION, - gettext_noop("List of potential standby names to synchronise with."), + {"synchronous_standby_names", PGC_SIGHUP, REPLICATION_MASTER, + gettext_noop("List of names of potential synchronous standbys."), NULL, GUC_LIST_INPUT }, @@ -4576,8 +4578,9 @@ AtStart_GUC(void) /* * Enter a new nesting level for GUC values. This is called at subtransaction - * start and when entering a function that has proconfig settings. NOTE that - * we must not risk error here, else subtransaction start will be unhappy. + * start, and when entering a function that has proconfig settings, and in + * some other places where we want to set GUC variables transiently. + * NOTE we must not risk error here, else subtransaction start will be unhappy. */ int NewGUCNestLevel(void) @@ -4587,8 +4590,9 @@ NewGUCNestLevel(void) /* * Do GUC processing at transaction or subtransaction commit or abort, or - * when exiting a function that has proconfig settings. (The name is thus - * a bit of a misnomer; perhaps it should be ExitGUCNestLevel or some such.) + * when exiting a function that has proconfig settings, or when undoing a + * transient assignment to some GUC variables. (The name is thus a bit of + * a misnomer; perhaps it should be ExitGUCNestLevel or some such.) * During abort, we discard all GUC settings that were applied at nesting * levels >= nestLevel. nestLevel == 1 corresponds to the main transaction. */ @@ -4621,11 +4625,11 @@ AtEOXact_GUC(bool isCommit, int nestLevel) GucStack *stack; /* - * Process and pop each stack entry within the nest level. To - * simplify fmgr_security_definer(), we allow failure exit from a - * function-with-SET-options to be recovered at the surrounding - * transaction or subtransaction abort; so there could be more than - * one stack entry to pop. + * Process and pop each stack entry within the nest level. To simplify + * fmgr_security_definer() and other places that use GUC_ACTION_SAVE, + * we allow failure exit from code that uses a local nest level to be + * recovered at the surrounding transaction or subtransaction abort; + * so there could be more than one stack entry to pop. */ while ((stack = gconf->stack) != NULL && stack->nest_level >= nestLevel) @@ -6055,8 +6059,11 @@ SetConfigOption(const char *name, const char *value, /* - * Fetch the current value of the option `name'. If the option doesn't exist, - * throw an ereport and don't return. + * Fetch the current value of the option `name', as a string. + * + * If the option doesn't exist, return NULL if missing_ok is true (NOTE that + * this cannot be distinguished from a string variable with a NULL value!), + * otherwise throw an ereport and don't return. * * If restrict_superuser is true, we also enforce that only superusers can * see GUC_SUPERUSER_ONLY variables. This should only be passed as true @@ -6066,16 +6073,21 @@ SetConfigOption(const char *name, const char *value, * valid until the next call to configuration related functions. */ const char * -GetConfigOption(const char *name, bool restrict_superuser) +GetConfigOption(const char *name, bool missing_ok, bool restrict_superuser) { struct config_generic *record; static char buffer[256]; record = find_option(name, false, ERROR); if (record == NULL) + { + if (missing_ok) + return NULL; ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), - errmsg("unrecognized configuration parameter \"%s\"", name))); + errmsg("unrecognized configuration parameter \"%s\"", + name))); + } if (restrict_superuser && (record->flags & GUC_SUPERUSER_ONLY) && !superuser()) @@ -7571,6 +7583,8 @@ _ShowOption(struct config_generic * record, bool use_units) * * variable name, string, null terminated * variable value, string, null terminated + * variable sourcefile, string, null terminated (empty if none) + * variable sourceline, integer * variable source, integer */ static void @@ -7607,8 +7621,7 @@ write_one_nondefault_variable(FILE *fp, struct config_generic * gconf) { struct config_real *conf = (struct config_real *) gconf; - /* Could lose precision here? */ - fprintf(fp, "%f", *conf->variable); + fprintf(fp, "%.17g", *conf->variable); } break; @@ -7632,7 +7645,12 @@ write_one_nondefault_variable(FILE *fp, struct config_generic * gconf) fputc(0, fp); - fwrite(&gconf->source, sizeof(gconf->source), 1, fp); + if (gconf->sourcefile) + fprintf(fp, "%s", gconf->sourcefile); + fputc(0, fp); + + fwrite(&gconf->sourceline, 1, sizeof(gconf->sourceline), fp); + fwrite(&gconf->source, 1, sizeof(gconf->source), fp); } void @@ -7735,8 +7753,10 @@ read_nondefault_variables(void) { FILE *fp; char *varname, - *varvalue; - int varsource; + *varvalue, + *varsourcefile; + int varsourceline; + GucSource varsource; /* * Open file @@ -7761,16 +7781,26 @@ read_nondefault_variables(void) break; if ((record = find_option(varname, true, FATAL)) == NULL) - elog(FATAL, "failed to locate variable %s in exec config params file", varname); + elog(FATAL, "failed to locate variable \"%s\" in exec config params file", varname); + if ((varvalue = read_string_with_null(fp)) == NULL) elog(FATAL, "invalid format of exec config params file"); - if (fread(&varsource, sizeof(varsource), 1, fp) == 0) + if ((varsourcefile = read_string_with_null(fp)) == NULL) elog(FATAL, "invalid format of exec config params file"); + if (fread(&varsourceline, 1, sizeof(varsourceline), fp) != sizeof(varsourceline)) + elog(FATAL, "invalid format of exec config params file"); + if (fread(&varsource, 1, sizeof(varsource), fp) != sizeof(varsource)) + elog(FATAL, "invalid format of exec config params file"); + + (void) set_config_option(varname, varvalue, + record->context, varsource, + GUC_ACTION_SET, true); + if (varsourcefile[0]) + set_config_sourcefile(varname, varsourcefile, varsourceline); - (void) set_config_option(varname, varvalue, record->context, - varsource, GUC_ACTION_SET, true); free(varname); free(varvalue); + free(varsourcefile); } FreeFile(fp); @@ -8219,11 +8249,11 @@ call_bool_check_hook(struct config_bool * conf, bool *newval, void **extra, ereport(elevel, (errcode(GUC_check_errcode_value), GUC_check_errmsg_string ? - errmsg("%s", GUC_check_errmsg_string) : + errmsg_internal("%s", GUC_check_errmsg_string) : errmsg("invalid value for parameter \"%s\": %d", conf->gen.name, (int) *newval), GUC_check_errdetail_string ? - errdetail("%s", GUC_check_errdetail_string) : 0, + errdetail_internal("%s", GUC_check_errdetail_string) : 0, GUC_check_errhint_string ? errhint("%s", GUC_check_errhint_string) : 0)); /* Flush any strings created in ErrorContext */ @@ -8253,11 +8283,11 @@ call_int_check_hook(struct config_int * conf, int *newval, void **extra, ereport(elevel, (errcode(GUC_check_errcode_value), GUC_check_errmsg_string ? - errmsg("%s", GUC_check_errmsg_string) : + errmsg_internal("%s", GUC_check_errmsg_string) : errmsg("invalid value for parameter \"%s\": %d", conf->gen.name, *newval), GUC_check_errdetail_string ? - errdetail("%s", GUC_check_errdetail_string) : 0, + errdetail_internal("%s", GUC_check_errdetail_string) : 0, GUC_check_errhint_string ? errhint("%s", GUC_check_errhint_string) : 0)); /* Flush any strings created in ErrorContext */ @@ -8287,11 +8317,11 @@ call_real_check_hook(struct config_real * conf, double *newval, void **extra, ereport(elevel, (errcode(GUC_check_errcode_value), GUC_check_errmsg_string ? - errmsg("%s", GUC_check_errmsg_string) : + errmsg_internal("%s", GUC_check_errmsg_string) : errmsg("invalid value for parameter \"%s\": %g", conf->gen.name, *newval), GUC_check_errdetail_string ? - errdetail("%s", GUC_check_errdetail_string) : 0, + errdetail_internal("%s", GUC_check_errdetail_string) : 0, GUC_check_errhint_string ? errhint("%s", GUC_check_errhint_string) : 0)); /* Flush any strings created in ErrorContext */ @@ -8321,11 +8351,11 @@ call_string_check_hook(struct config_string * conf, char **newval, void **extra, ereport(elevel, (errcode(GUC_check_errcode_value), GUC_check_errmsg_string ? - errmsg("%s", GUC_check_errmsg_string) : + errmsg_internal("%s", GUC_check_errmsg_string) : errmsg("invalid value for parameter \"%s\": \"%s\"", conf->gen.name, *newval ? *newval : ""), GUC_check_errdetail_string ? - errdetail("%s", GUC_check_errdetail_string) : 0, + errdetail_internal("%s", GUC_check_errdetail_string) : 0, GUC_check_errhint_string ? errhint("%s", GUC_check_errhint_string) : 0)); /* Flush any strings created in ErrorContext */ @@ -8355,12 +8385,12 @@ call_enum_check_hook(struct config_enum * conf, int *newval, void **extra, ereport(elevel, (errcode(GUC_check_errcode_value), GUC_check_errmsg_string ? - errmsg("%s", GUC_check_errmsg_string) : + errmsg_internal("%s", GUC_check_errmsg_string) : errmsg("invalid value for parameter \"%s\": \"%s\"", conf->gen.name, config_enum_lookup_by_value(conf, *newval)), GUC_check_errdetail_string ? - errdetail("%s", GUC_check_errdetail_string) : 0, + errdetail_internal("%s", GUC_check_errdetail_string) : 0, GUC_check_errhint_string ? errhint("%s", GUC_check_errhint_string) : 0)); /* Flush any strings created in ErrorContext */ @@ -8478,7 +8508,7 @@ check_temp_buffers(int *newval, void **extra, GucSource source) */ if (NLocBuffer && NLocBuffer != *newval) { - GUC_check_errdetail("\"temp_buffers\" cannot be changed after any temp tables have been accessed in the session."); + GUC_check_errdetail("\"temp_buffers\" cannot be changed after any temporary tables have been accessed in the session."); return false; } return true; diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index d53455ee6e..bb8dacbb46 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -184,32 +184,41 @@ #archive_timeout = 0 # force a logfile segment switch after this # number of seconds; 0 disables -# - Streaming Replication - Server Settings -#synchronous_standby_names = '' # standby servers that provide sync rep - # comma-separated list of application_name from standby(s); - # '*' = all +#------------------------------------------------------------------------------ +# REPLICATION +#------------------------------------------------------------------------------ + +# - Master Server - +# These settings are ignored on a standby server #max_wal_senders = 0 # max number of walsender processes # (change requires restart) #wal_sender_delay = 1s # walsender cycle time, 1-10000 milliseconds #wal_keep_segments = 0 # in logfile segments, 16MB each; 0 disables #vacuum_defer_cleanup_age = 0 # number of xacts by which cleanup is delayed -#replication_timeout = 60s # in milliseconds, 0 is disabled +#replication_timeout = 60s # in milliseconds; 0 disables +#synchronous_standby_names = '' # standby servers that provide sync rep + # comma-separated list of application_name + # from standby(s); '*' = all # - Standby Servers - +# These settings are ignored on a master server + #hot_standby = off # "on" allows queries during recovery # (change requires restart) -#hot_standby_feedback = off # info from standby to prevent query conflicts #max_standby_archive_delay = 30s # max delay before canceling queries # when reading WAL from archive; # -1 allows indefinite delay #max_standby_streaming_delay = 30s # max delay before canceling queries # when reading streaming WAL; # -1 allows indefinite delay -#wal_receiver_status_interval = 10s # replies at least this often, 0 disables +#wal_receiver_status_interval = 10s # send replies at least this often + # 0 disables +#hot_standby_feedback = off # send info from standby to prevent + # query conflicts #------------------------------------------------------------------------------ @@ -580,6 +589,12 @@ # Usage of commit instead of two-phase commit may break # data consistency so use at your own risk. +# - Postgres-XC specific Planner Method Configuration + +#enable_fast_query_shipping = on +#enable_remotejoin = on +#enable_remotegroup = on + #------------------------------------------------------------------------------ # CUSTOMIZED OPTIONS #------------------------------------------------------------------------------ diff --git a/src/backend/utils/mmgr/mcxt.c b/src/backend/utils/mmgr/mcxt.c index 01e70155b3..262423aa3c 100644 --- a/src/backend/utils/mmgr/mcxt.c +++ b/src/backend/utils/mmgr/mcxt.c @@ -71,7 +71,8 @@ void *allocTopCxt(size_t s); * In normal multi-backend operation, this is called once during * postmaster startup, and not at all by individual backend startup * (since the backends inherit an already-initialized context subsystem - * by virtue of being forked off the postmaster). + * by virtue of being forked off the postmaster). But in an EXEC_BACKEND + * build, each process must do this for itself. * * In a standalone backend this must be called during backend startup. */ @@ -105,6 +106,9 @@ MemoryContextInit(void) * where retained memory in a context is *essential* --- we want to be * sure ErrorContext still has some memory even if we've run out * elsewhere! + * + * This should be the last step in this function, as elog.c assumes memory + * management works once ErrorContext is non-null. */ ErrorContext = AllocSetContextCreate(TopMemoryContext, "ErrorContext", diff --git a/src/backend/utils/mmgr/portalmem.c b/src/backend/utils/mmgr/portalmem.c index 0bae872589..f334935f81 100644 --- a/src/backend/utils/mmgr/portalmem.c +++ b/src/backend/utils/mmgr/portalmem.c @@ -422,6 +422,8 @@ UnpinPortal(Portal portal) /* * MarkPortalDone * Transition a portal from ACTIVE to DONE state. + * + * NOTE: never set portal->status = PORTAL_DONE directly; call this instead. */ void MarkPortalDone(Portal portal) @@ -435,8 +437,36 @@ MarkPortalDone(Portal portal) * well do that now, since the portal can't be executed any more. * * In some cases involving execution of a ROLLBACK command in an already - * aborted transaction, this prevents an assertion failure from reaching - * AtCleanup_Portals with the cleanup hook still unexecuted. + * aborted transaction, this prevents an assertion failure caused by + * reaching AtCleanup_Portals with the cleanup hook still unexecuted. + */ + if (PointerIsValid(portal->cleanup)) + { + (*portal->cleanup) (portal); + portal->cleanup = NULL; + } +} + +/* + * MarkPortalFailed + * Transition a portal into FAILED state. + * + * NOTE: never set portal->status = PORTAL_FAILED directly; call this instead. + */ +void +MarkPortalFailed(Portal portal) +{ + /* Perform the state transition */ + Assert(portal->status != PORTAL_DONE); + portal->status = PORTAL_FAILED; + + /* + * Allow portalcmds.c to clean up the state it knows about. We might as + * well do that now, since the portal can't be executed any more. + * + * In some cases involving cleanup of an already aborted transaction, this + * prevents an assertion failure caused by reaching AtCleanup_Portals with + * the cleanup hook still unexecuted. */ if (PointerIsValid(portal->cleanup)) { @@ -472,6 +502,9 @@ PortalDrop(Portal portal, bool isTopCommit) * hook's responsibility to not try to do that more than once, in the case * that failure occurs and then we come back to drop the portal again * during transaction abort. + * + * Note: in most paths of control, this will have been done already in + * MarkPortalDone or MarkPortalFailed. We're just making sure. */ if (PointerIsValid(portal->cleanup)) { @@ -730,7 +763,7 @@ AtAbort_Portals(void) /* Any portal that was actually running has to be considered broken */ if (portal->status == PORTAL_ACTIVE) - portal->status = PORTAL_FAILED; + MarkPortalFailed(portal); /* * Do nothing else to cursors held over from a previous transaction. @@ -745,9 +778,12 @@ AtAbort_Portals(void) * AtSubAbort_Portals. */ if (portal->status == PORTAL_READY) - portal->status = PORTAL_FAILED; + MarkPortalFailed(portal); - /* let portalcmds.c clean up the state it knows about */ + /* + * Allow portalcmds.c to clean up the state it knows about, if we + * haven't already. + */ if (PointerIsValid(portal->cleanup)) { (*portal->cleanup) (portal); @@ -886,9 +922,12 @@ AtSubAbort_Portals(SubTransactionId mySubid, */ if (portal->status == PORTAL_READY || portal->status == PORTAL_ACTIVE) - portal->status = PORTAL_FAILED; + MarkPortalFailed(portal); - /* let portalcmds.c clean up the state it knows about */ + /* + * Allow portalcmds.c to clean up the state it knows about, if we + * haven't already. + */ if (PointerIsValid(portal->cleanup)) { (*portal->cleanup) (portal); diff --git a/src/backend/utils/sort/tuplesort.c b/src/backend/utils/sort/tuplesort.c index b82dd5daae..68c0c2d056 100644 --- a/src/backend/utils/sort/tuplesort.c +++ b/src/backend/utils/sort/tuplesort.c @@ -1855,7 +1855,7 @@ inittapes(Tuplesortstate *state) * account for tuple space, so we don't care if LACKMEM becomes * inaccurate.) */ - tapeSpace = maxTapes * TAPE_BUFFER_OVERHEAD; + tapeSpace = (long) maxTapes * TAPE_BUFFER_OVERHEAD; if (tapeSpace + GetMemoryChunkSpace(state->memtuples) < state->allowedMem) USEMEM(state, tapeSpace); diff --git a/src/backend/utils/sort/tuplestore.c b/src/backend/utils/sort/tuplestore.c index b59587b73b..4d6e3aa0e4 100644 --- a/src/backend/utils/sort/tuplestore.c +++ b/src/backend/utils/sort/tuplestore.c @@ -570,7 +570,8 @@ tuplestore_puttuple(Tuplestorestate *state, HeapTuple tuple) MemoryContext oldcxt = MemoryContextSwitchTo(state->context); /* - * Copy the tuple. (Must do this even in WRITEFILE case.) + * Copy the tuple. (Must do this even in WRITEFILE case. Note that + * COPYTUP includes USEMEM, so we needn't do that here.) */ tuple = COPYTUP(state, tuple); @@ -580,9 +581,8 @@ tuplestore_puttuple(Tuplestorestate *state, HeapTuple tuple) } /* - * Similar to tuplestore_puttuple(), but start from the values + nulls - * array. This avoids requiring that the caller construct a HeapTuple, - * saving a copy. + * Similar to tuplestore_puttuple(), but work from values + nulls arrays. + * This avoids an extra tuple-construction operation. */ void tuplestore_putvalues(Tuplestorestate *state, TupleDesc tdesc, @@ -592,6 +592,7 @@ tuplestore_putvalues(Tuplestorestate *state, TupleDesc tdesc, MemoryContext oldcxt = MemoryContextSwitchTo(state->context); tuple = heap_form_minimal_tuple(tdesc, values, isnull); + USEMEM(state, GetMemoryChunkSpace(tuple)); tuplestore_puttuple_common(state, (void *) tuple); diff --git a/src/backend/utils/time/snapmgr.c b/src/backend/utils/time/snapmgr.c index 740c487b2c..c61910afe0 100644 --- a/src/backend/utils/time/snapmgr.c +++ b/src/backend/utils/time/snapmgr.c @@ -169,9 +169,9 @@ GetTransactionSnapshot(void) Snapshot GetLatestSnapshot(void) { - /* Should not be first call in transaction */ + /* If first call in transaction, go ahead and set the xact snapshot */ if (!FirstSnapshotSet) - elog(ERROR, "no snapshot has been set"); + return GetTransactionSnapshot(); SecondarySnapshot = GetSnapshotData(&SecondarySnapshotData); diff --git a/src/backend/utils/time/tqual.c b/src/backend/utils/time/tqual.c index d81ee7de06..b396e7ecf7 100644 --- a/src/backend/utils/time/tqual.c +++ b/src/backend/utils/time/tqual.c @@ -861,7 +861,8 @@ HeapTupleSatisfiesDirty(HeapTupleHeader tuple, Snapshot snapshot, if (TransactionIdIsInProgress(HeapTupleHeaderGetXmax(tuple))) { - snapshot->xmax = HeapTupleHeaderGetXmax(tuple); + if (!(tuple->t_infomask & HEAP_IS_LOCKED)) + snapshot->xmax = HeapTupleHeaderGetXmax(tuple); return true; } diff --git a/src/bin/Makefile b/src/bin/Makefile index 72844c81c1..2332bad013 100644 --- a/src/bin/Makefile +++ b/src/bin/Makefile @@ -15,8 +15,12 @@ include $(top_builddir)/src/Makefile.global SUBDIRS = initdb initgtm pg_ctl pg_dump \ psql scripts pg_config pg_controldata pg_resetxlog pg_basebackup + ifeq ($(PORTNAME), win32) -SUBDIRS+=pgevent +SUBDIRS += pgevent +else +ALWAYS_SUBDIRS += pgevent endif $(recurse) +$(recurse_always) diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c index 933b2bc60d..6f24b8a148 100644 --- a/src/bin/initdb/initdb.c +++ b/src/bin/initdb/initdb.c @@ -39,7 +39,7 @@ * This code is released under the terms of the PostgreSQL License. * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/bin/initdb/initdb.c @@ -193,7 +193,6 @@ static int locale_date_order(const char *locale); static bool check_locale_name(const char *locale); static bool check_locale_encoding(const char *locale, int encoding); static void setlocales(void); -static char *localemap(char *locale); static void usage(const char *progname); #ifdef WIN32 @@ -382,6 +381,7 @@ readfile(const char *path) int maxlength = 1, linelen = 0; int nlines = 0; + int n; char **result; char *buffer; int c; @@ -419,13 +419,13 @@ readfile(const char *path) /* now reprocess the file and store the lines */ rewind(infile); - nlines = 0; - while (fgets(buffer, maxlength + 1, infile) != NULL) - result[nlines++] = xstrdup(buffer); + n = 0; + while (fgets(buffer, maxlength + 1, infile) != NULL && n < nlines) + result[n++] = xstrdup(buffer); fclose(infile); free(buffer); - result[nlines] = NULL; + result[n] = NULL; return result; } @@ -2330,61 +2330,6 @@ strreplace(char *str, char *needle, char *replacement) } #endif /* WIN32 */ -/* - * Windows has a problem with locale names that have a dot in the country - * name. For example: - * - * "Chinese (Traditional)_Hong Kong S.A.R..950" - * - * For some reason, setlocale() doesn't accept that. Fortunately, Windows' - * setlocale() accepts various alternative names for such countries, so we - * map the full country names to accepted aliases. - * - * The returned string is always malloc'd - if no mapping is done it is - * just a malloc'd copy of the original. - */ -static char * -localemap(char *locale) -{ - locale = xstrdup(locale); - -#ifdef WIN32 - - /* - * Map the full country name to an abbreviation that setlocale() accepts. - * - * "HKG" is listed here: - * http://msdn.microsoft.com/en-us/library/cdax410z%28v=vs.71%29.aspx - * (Country/Region Strings). - * - * "ARE" is the ISO-3166 three-letter code for U.A.E. It is not on the - * above list, but seems to work anyway. - */ - strreplace(locale, "Hong Kong S.A.R.", "HKG"); - strreplace(locale, "U.A.E.", "ARE"); - - /* - * The ISO-3166 country code for Macau S.A.R. is MAC, but Windows doesn't - * seem to recognize that. And Macau isn't listed in the table of accepted - * abbreviations linked above. - * - * Fortunately, "ZHM" seems to be accepted as an alias for "Chinese - * (Traditional)_Macau S.A.R..950", so we use that. Note that it's unlike - * HKG and ARE, ZHM is an alias for the whole locale name, not just the - * country part. I'm not sure where that "ZHM" comes from, must be some - * legacy naming scheme. But hey, it works. - * - * Some versions of Windows spell it "Macau", others "Macao". - */ - strreplace(locale, "Chinese (Traditional)_Macau S.A.R..950", "ZHM"); - strreplace(locale, "Chinese_Macau S.A.R..950", "ZHM"); - strreplace(locale, "Chinese (Traditional)_Macao S.A.R..950", "ZHM"); - strreplace(locale, "Chinese_Macao S.A.R..950", "ZHM"); -#endif /* WIN32 */ - - return locale; -} - /* * set up the locale variables * @@ -2416,25 +2361,25 @@ setlocales(void) */ if (strlen(lc_ctype) == 0 || !check_locale_name(lc_ctype)) - lc_ctype = localemap(setlocale(LC_CTYPE, NULL)); + lc_ctype = xstrdup(setlocale(LC_CTYPE, NULL)); if (strlen(lc_collate) == 0 || !check_locale_name(lc_collate)) - lc_collate = localemap(setlocale(LC_COLLATE, NULL)); + lc_collate = xstrdup(setlocale(LC_COLLATE, NULL)); if (strlen(lc_numeric) == 0 || !check_locale_name(lc_numeric)) - lc_numeric = localemap(setlocale(LC_NUMERIC, NULL)); + lc_numeric = xstrdup(setlocale(LC_NUMERIC, NULL)); if (strlen(lc_time) == 0 || !check_locale_name(lc_time)) - lc_time = localemap(setlocale(LC_TIME, NULL)); + lc_time = xstrdup(setlocale(LC_TIME, NULL)); if (strlen(lc_monetary) == 0 || !check_locale_name(lc_monetary)) - lc_monetary = localemap(setlocale(LC_MONETARY, NULL)); + lc_monetary = xstrdup(setlocale(LC_MONETARY, NULL)); if (strlen(lc_messages) == 0 || !check_locale_name(lc_messages)) #if defined(LC_MESSAGES) && !defined(WIN32) { /* when available get the current locale setting */ - lc_messages = localemap(setlocale(LC_MESSAGES, NULL)); + lc_messages = xstrdup(setlocale(LC_MESSAGES, NULL)); } #else { /* when not available, get the CTYPE setting */ - lc_messages = localemap(setlocale(LC_CTYPE, NULL)); + lc_messages = xstrdup(setlocale(LC_CTYPE, NULL)); } #endif @@ -2557,7 +2502,7 @@ usage(const char *progname) { printf(_("%s initializes a PostgreSQL database cluster.\n\n"), progname); printf(_("Usage:\n")); - printf(_(" %s [OPTION]... [DATADIR] [NODENAME]\n"), progname); + printf(_(" %s [OPTION]... [DATADIR]\n"), progname); printf(_("\nOptions:\n")); printf(_(" -A, --auth=METHOD default authentication method for local connections\n")); printf(_(" [-D, --pgdata=]DATADIR location for this database cluster\n")); @@ -2765,7 +2710,7 @@ main(int argc, char *argv[]) if (optind < argc) { fprintf(stderr, _("%s: too many command-line arguments (first is \"%s\")\n"), - progname, argv[optind + 1]); + progname, argv[optind]); fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); exit(1); @@ -3367,7 +3312,7 @@ main(int argc, char *argv[]) fprintf(stderr, "%s", authwarning); /* Get directory specification used to start this executable */ - strcpy(bin_dir, argv[0]); + strlcpy(bin_dir, argv[0], sizeof(bin_dir)); get_parent_directory(bin_dir); diff --git a/src/bin/initdb/nls.mk b/src/bin/initdb/nls.mk index 0dc5107aa4..45d540831d 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 ko pt_BR ro ru sv ta tr zh_CN zh_TW +AVAIL_LANGUAGES := cs de es fr it ja ko pl pt_BR ro ru sv tr zh_CN zh_TW GETTEXT_FILES := initdb.c ../../port/dirmod.c ../../port/exec.c GETTEXT_TRIGGERS:= _ simple_prompt diff --git a/src/bin/initdb/po/cs.po b/src/bin/initdb/po/cs.po index 0372714dc7..9427a88dab 100644 --- a/src/bin/initdb/po/cs.po +++ b/src/bin/initdb/po/cs.po @@ -1,37 +1,39 @@ -# translation of initdb-cs.po to -# translation of initdb-cs.po to Czech -# Karel Žák, 2004. -# Zdeněk Kotala, 2009. +# Czech translation of initdb # +# Karel Žák, 2004. +# Zdeněk Kotala, 2009, 2011. +# Tomáš Vondra , 2011, 2012, 2013. msgid "" msgstr "" -"Project-Id-Version: postgresql-8.4\n" +"Project-Id-Version: initdb-cs (PostgreSQL 9.1)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2009-06-06 23:08+0000\n" -"PO-Revision-Date: 2010-09-25 00:36+0300\n" -"Last-Translator: Zdeněk Kotala\n" -"Language-Team: \n" +"POT-Creation-Date: 2011-08-30 11:36+0200\n" +"PO-Revision-Date: 2011-09-06 11:33+0200\n" +"Last-Translator: Tomas Vondra \n" +"Language-Team: Czech \n" +"Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 1.2\n" -#: initdb.c:254 initdb.c:268 +#: initdb.c:260 initdb.c:274 #, c-format msgid "%s: out of memory\n" msgstr "%s: nedostatek paměti\n" -#: initdb.c:377 initdb.c:1490 +#: initdb.c:383 initdb.c:1289 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: nelze otevřít soubor \"%s\" pro čtení: %s\n" -#: initdb.c:439 initdb.c:998 initdb.c:1027 +#: initdb.c:439 initdb.c:805 initdb.c:834 #, c-format msgid "%s: could not open file \"%s\" for writing: %s\n" msgstr "%s: nelze otevřít soubor \"%s\" pro zápis: %s\n" -#: initdb.c:447 initdb.c:455 initdb.c:1005 initdb.c:1033 +#: initdb.c:447 initdb.c:455 initdb.c:812 initdb.c:840 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s: nelze zapsat do souboru \"%s\": %s\n" @@ -41,57 +43,58 @@ msgstr "%s: nelze zapsat do souboru \"%s\": %s\n" msgid "%s: could not execute command \"%s\": %s\n" msgstr "%s: nelze vykonat příkaz \"%s\": %s\n" -#: initdb.c:594 +#: initdb.c:490 #, c-format msgid "%s: removing data directory \"%s\"\n" msgstr "%s: odstraňuji datový adresář \"%s\"\n" -#: initdb.c:597 +#: initdb.c:493 #, c-format msgid "%s: failed to remove data directory\n" msgstr "%s: selhalo odstranění datového adresáře\n" -#: initdb.c:603 +#: initdb.c:499 #, c-format msgid "%s: removing contents of data directory \"%s\"\n" msgstr "%s: odstraňuji obsah datového adresáře \"%s\"\n" -#: initdb.c:606 +#: initdb.c:502 #, c-format msgid "%s: failed to remove contents of data directory\n" msgstr "%s: selhalo odstranění obsahu datového adresáře\n" -#: initdb.c:612 +#: initdb.c:508 #, c-format msgid "%s: removing transaction log directory \"%s\"\n" msgstr "%s: odstraňuji adresář s transakčním logem \"%s\"\n" -#: initdb.c:615 +#: initdb.c:511 #, c-format msgid "%s: failed to remove transaction log directory\n" msgstr "%s: selhalo odstraňení adresáře s transakčním logem\n" -#: initdb.c:621 +#: initdb.c:517 #, c-format msgid "%s: removing contents of transaction log directory \"%s\"\n" msgstr "%s: odstraňuji obsah adresáře s transakčním logem \"%s\"\n" -#: initdb.c:624 +#: initdb.c:520 #, c-format msgid "%s: failed to remove contents of transaction log directory\n" msgstr "%s: selhalo odstranění obsahu adresáře s transakčním logem\n" -#: initdb.c:633 +#: initdb.c:529 #, c-format msgid "%s: data directory \"%s\" not removed at user's request\n" msgstr "%s: datový adresář \"%s\" nebyl na žádost uživatele odstraněn\n" -#: initdb.c:638 +#: initdb.c:534 #, c-format msgid "%s: transaction log directory \"%s\" not removed at user's request\n" -msgstr "%s: adresář s transakčním logem \"%s\" nebyl na žádost uživatele odstraněn\n" +msgstr "" +"%s: adresář s transakčním logem \"%s\" nebyl na žádost uživatele odstraněn\n" -#: initdb.c:660 +#: initdb.c:556 #, c-format msgid "" "%s: cannot be run as root\n" @@ -102,32 +105,32 @@ msgstr "" "Prosím přihlaste se jako (neprivilegovaný) uživatel, který bude vlastníkem\n" "serverového procesu (například pomocí příkazu \"su\").\n" -#: initdb.c:672 +#: initdb.c:568 #, c-format msgid "%s: could not obtain information about current user: %s\n" msgstr "%s: nelze získat informace o aktualním uživateli: %s\n" -#: initdb.c:689 +#: initdb.c:585 #, c-format msgid "%s: could not get current user name: %s\n" msgstr "%s: nelze získat jméno aktuálního uživatele: %s\n" -#: initdb.c:720 +#: initdb.c:616 #, c-format msgid "%s: \"%s\" is not a valid server encoding name\n" msgstr "%s: \"%s\" není platný název kódování znaků\n" -#: initdb.c:918 initdb.c:3058 +#: initdb.c:725 initdb.c:3173 #, c-format msgid "%s: could not create directory \"%s\": %s\n" msgstr "%s: nelze vytvořít adresář \"%s\": %s\n" -#: initdb.c:948 +#: initdb.c:755 #, c-format msgid "%s: file \"%s\" does not exist\n" msgstr "%s: soubor \"%s\" neexistuje\n" -#: initdb.c:950 initdb.c:959 initdb.c:969 +#: initdb.c:757 initdb.c:766 initdb.c:776 #, c-format msgid "" "This might mean you have a corrupted installation or identified\n" @@ -136,36 +139,36 @@ msgstr "" "To znamená, že vaše instalace je poškozena, nebo jste\n" "zadal chybný adresář v parametru -L při spuštění.\n" -#: initdb.c:956 +#: initdb.c:763 #, c-format msgid "%s: could not access file \"%s\": %s\n" msgstr "%s: nelze přistupit k souboru \"%s\": %s\n" -#: initdb.c:967 +#: initdb.c:774 #, c-format msgid "%s: file \"%s\" is not a regular file\n" msgstr "%s: soubor \"%s\" není běžný soubor\n" -#: initdb.c:1075 +#: initdb.c:882 #, c-format msgid "selecting default max_connections ... " -msgstr "vybírám základní nastavení max_connections ... " +msgstr "vybírám implicitní nastavení max_connections ... " -#: initdb.c:1104 +#: initdb.c:911 #, c-format msgid "selecting default shared_buffers ... " -msgstr "vybírám základní nastavení shared_buffers ... " +msgstr "vybírám implicitní nastavení shared_buffers ... " -#: initdb.c:1147 +#: initdb.c:954 msgid "creating configuration files ... " msgstr "vytvářím konfigurační soubory ... " -#: initdb.c:1314 +#: initdb.c:1129 #, c-format msgid "creating template1 database in %s/base/1 ... " msgstr "vytvářím databázi template1 v %s/base/1 ... " -#: initdb.c:1330 +#: initdb.c:1145 #, c-format msgid "" "%s: input file \"%s\" does not belong to PostgreSQL %s\n" @@ -175,105 +178,135 @@ msgstr "" "Zkontrolujte si vaši instalaci nebo zadejte platnou cestu pomocí\n" "parametru -L.\n" -#: initdb.c:1429 +#: initdb.c:1230 msgid "initializing pg_authid ... " msgstr "inicializuji pg_authid ... " -#: initdb.c:1465 +#: initdb.c:1264 msgid "Enter new superuser password: " msgstr "Zadejte nové heslo pro superuživatele: " -#: initdb.c:1466 +#: initdb.c:1265 msgid "Enter it again: " msgstr "Zadejte ho znovu: " -#: initdb.c:1469 +#: initdb.c:1268 #, c-format msgid "Passwords didn't match.\n" msgstr "Hesla nesouhlasí.\n" -#: initdb.c:1496 +#: initdb.c:1295 #, c-format msgid "%s: could not read password from file \"%s\": %s\n" msgstr "%s: nemohu přečíst heslo ze souboru \"%s\": %s\n" -#: initdb.c:1509 +#: initdb.c:1308 #, c-format msgid "setting password ... " msgstr "nastavuji heslo ... " -#: initdb.c:1533 -#, c-format -msgid "%s: The password file was not generated. Please report this problem.\n" -msgstr "" -"%s: Soubor s hesly nebyl vytvořen. Prosíme oznamte tento problém tvůrcům.\n" - -#: initdb.c:1617 +#: initdb.c:1408 msgid "initializing dependencies ... " msgstr "inicializuji závislosti ... " -#: initdb.c:1645 +#: initdb.c:1436 msgid "creating system views ... " msgstr "vytvářím systémové pohledy ... " -#: initdb.c:1681 +#: initdb.c:1472 msgid "loading system objects' descriptions ... " msgstr "nahrávám popisy systémových objektů ... " -#: initdb.c:1733 +#: initdb.c:1578 +#| msgid "creating conversions ... " +msgid "creating collations ... " +msgstr "vytvářím collations ... " + +#: initdb.c:1611 +#, c-format +msgid "%s: locale name too long, skipped: %s\n" +msgstr "%s: jméno locale je příliš dlouhé, přeskakuji: %s\n" + +#: initdb.c:1636 +#, c-format +msgid "%s: locale name has non-ASCII characters, skipped: %s\n" +msgstr "%s: jméno locale obsahuje ne-ASCII znaky, přeskakuji: %s\n" + +#: initdb.c:1699 +#, c-format +msgid "No usable system locales were found.\n" +msgstr "" +"Nebylo nalezené žádné použitelné systémové nárovní nastavení (locales).\n" + +#: initdb.c:1700 +#, c-format +msgid "Use the option \"--debug\" to see details.\n" +msgstr "Pro více detailů použijte volbu \"--debug\".\n" + +#: initdb.c:1703 +#, c-format +#| msgid "%s: symlinks are not supported on this platform" +msgid "not supported on this platform\n" +msgstr "na této platformě není podporováno\n" + +#: initdb.c:1718 msgid "creating conversions ... " -msgstr "vytvářím konvertory ... " +msgstr "vytvářím konverze ... " -#: initdb.c:1768 +#: initdb.c:1753 msgid "creating dictionaries ... " msgstr "vytvářím adresáře ... " -#: initdb.c:1821 +#: initdb.c:1807 msgid "setting privileges on built-in objects ... " msgstr "nastavuji oprávnění pro vestavěné objekty ... " -#: initdb.c:1879 +#: initdb.c:1865 msgid "creating information schema ... " msgstr "vytvářím informační schéma ... " -#: initdb.c:1935 +#: initdb.c:1921 +msgid "loading PL/pgSQL server-side language ... " +msgstr "načítám PL/pgSQL jazyk ... " + +#: initdb.c:1946 msgid "vacuuming database template1 ... " msgstr "pouštím VACUUM na databázi template1 ... " -#: initdb.c:1989 +#: initdb.c:2002 msgid "copying template1 to template0 ... " msgstr "kopíruji template1 do template0 ... " -#: initdb.c:2020 +#: initdb.c:2034 msgid "copying template1 to postgres ... " msgstr "kopíruji template1 do postgres ... " -#: initdb.c:2077 +#: initdb.c:2091 #, c-format msgid "caught signal\n" msgstr "signál obdržen\n" -#: initdb.c:2083 +#: initdb.c:2097 #, c-format msgid "could not write to child process: %s\n" -msgstr "nemohu zapsat do dětského procesu: %s\n" +msgstr "nemohu zapsat do potomka: %s\n" -#: initdb.c:2091 +#: initdb.c:2105 #, c-format msgid "ok\n" msgstr "ok\n" -#: initdb.c:2211 +#: initdb.c:2225 #, c-format msgid "%s: invalid locale name \"%s\"\n" msgstr "%s: neplatný název národního nastavení (locale) \"%s\"\n" -#: initdb.c:2244 +#: initdb.c:2251 #, c-format msgid "%s: encoding mismatch\n" msgstr "%s: nesouhlasí kódování znaků\n" -#: initdb.c:2246 +#: initdb.c:2253 #, c-format msgid "" "The encoding you selected (%s) and the encoding that the\n" @@ -288,26 +321,26 @@ msgstr "" "spusťte znovu %s a buď nespecifikujte kódování znaků explicitně, nebo\n" "vyberte takovou kombinaci, která si odpovídá.\n" -#: initdb.c:2427 +#: initdb.c:2514 #, c-format msgid "" "%s initializes a PostgreSQL database cluster.\n" "\n" msgstr "" -"%s inicializuji prostor pro PostgreSQL.databáze\n" +"%s inicializuji PostgreSQL klastr\n" "\n" -#: initdb.c:2428 +#: initdb.c:2515 #, c-format msgid "Usage:\n" msgstr "Použití:\n" -#: initdb.c:2429 +#: initdb.c:2516 #, c-format msgid " %s [OPTION]... [DATADIR]\n" msgstr " %s [PŘEPÍNAČ]... [DATAADR]\n" -#: initdb.c:2430 +#: initdb.c:2517 #, c-format msgid "" "\n" @@ -316,31 +349,33 @@ msgstr "" "\n" "Přepínače:\n" -#: initdb.c:2431 +#: initdb.c:2518 #, c-format msgid "" " -A, --auth=METHOD default authentication method for local " "connections\n" msgstr "" -" -A, --auth=METODA výchozí autentizační metoda pro lokálníspojení\n" +" -A, --auth=METODA výchozí autentizační metoda pro lokální spojení\n" -#: initdb.c:2432 +#: initdb.c:2519 #, c-format msgid " [-D, --pgdata=]DATADIR location for this database cluster\n" msgstr " [-D, --pgdata=]DATAADR umístění tohoto databázového klastru\n" -#: initdb.c:2433 +#: initdb.c:2520 #, c-format msgid " -E, --encoding=ENCODING set default encoding for new databases\n" msgstr "" " -E, --encoding=KÓDOVÁNÍ nastavení výchozího kódování pro nové databáze\n" -#: initdb.c:2434 +#: initdb.c:2521 #, c-format msgid " --locale=LOCALE set default locale for new databases\n" -msgstr " --locale=LOCALE nastavení implicitního národního nastavení pro novou databázi\n" +msgstr "" +" --locale=LOCALE nastavení implicitního národního nastavení pro " +"novou databázi\n" -#: initdb.c:2435 +#: initdb.c:2522 #, c-format msgid "" " --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n" @@ -355,47 +390,48 @@ msgstr "" " v příslušných kategoriích (výchozí hodnoty se \n" " vezmou z nastavení prostředí)\n" -#: initdb.c:2439 +#: initdb.c:2526 #, c-format msgid " --no-locale equivalent to --locale=C\n" msgstr " --no-locale ekvivalent --locale=C\n" -#: initdb.c:2440 +#: initdb.c:2527 #, c-format msgid "" " --pwfile=FILE read password for the new superuser from file\n" msgstr "" -" --pwfile=SOUBOR načti heslo pro nového superuživatele ze souboru\n" +" --pwfile=SOUBOR načti heslo pro nového superuživatele ze " +"souboru\n" -#: initdb.c:2441 +#: initdb.c:2528 #, c-format msgid "" " -T, --text-search-config=CFG\n" " default text search configuration\n" msgstr "" " -T, --text-search-config=CFG\n" -" implicitní configurace fulltextového vyhledávání\n" +" implicitní configurace fulltextového " +"vyhledávání\n" -#: initdb.c:2443 +#: initdb.c:2530 #, c-format msgid " -U, --username=NAME database superuser name\n" msgstr " -U, --username=JMÉNO jméno databázového superuživatele\n" -#: initdb.c:2444 +#: initdb.c:2531 #, c-format msgid "" " -W, --pwprompt prompt for a password for the new superuser\n" msgstr "" " -W, --pwprompt zeptej se na heslo pro nového superuživatele\n" -#: initdb.c:2445 +#: initdb.c:2532 #, c-format msgid "" " -X, --xlogdir=XLOGDIR location for the transaction log directory\n" -msgstr "" -" -X, --xlogdir=XLOGDIR umístění adresáře s transakčním logem\n" +msgstr " -X, --xlogdir=XLOGDIR umístění adresáře s transakčním logem\n" -#: initdb.c:2446 +#: initdb.c:2533 #, c-format msgid "" "\n" @@ -404,27 +440,27 @@ msgstr "" "\n" "Méně často používané přepínače:\n" -#: initdb.c:2447 +#: initdb.c:2534 #, c-format msgid " -d, --debug generate lots of debugging output\n" msgstr " -d, --debug generuj spoustu ladicích informací\n" -#: initdb.c:2448 +#: initdb.c:2535 #, c-format msgid " -L DIRECTORY where to find the input files\n" msgstr " -L DIRECTORY kde se nalézají vstupní soubory\n" -#: initdb.c:2449 +#: initdb.c:2536 #, c-format msgid " -n, --noclean do not clean up after errors\n" msgstr " -n, --noclean neuklízet po chybě\n" -#: initdb.c:2450 +#: initdb.c:2537 #, c-format msgid " -s, --show show internal settings\n" msgstr " -s, --show ukaž interní nastavení\n" -#: initdb.c:2451 +#: initdb.c:2538 #, c-format msgid "" "\n" @@ -433,17 +469,17 @@ msgstr "" "\n" "Ostatní přepínače:\n" -#: initdb.c:2452 +#: initdb.c:2539 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help ukaž tuto nápovědu, potom skonči\n" -#: initdb.c:2453 +#: initdb.c:2540 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version vypiš informace o verzi, potom skonči\n" -#: initdb.c:2454 +#: initdb.c:2541 #, c-format msgid "" "\n" @@ -454,7 +490,7 @@ msgstr "" "Pokud není specifikován datový adresář, použije se proměnná\n" "prostředí PGDATA.\n" -#: initdb.c:2456 +#: initdb.c:2543 #, c-format msgid "" "\n" @@ -463,32 +499,32 @@ msgstr "" "\n" "Chyby hlaste na adresu .\n" -#: initdb.c:2561 +#: initdb.c:2649 #, c-format msgid "Running in debug mode.\n" msgstr "Běžím v ladicím režimu.\n" -#: initdb.c:2565 +#: initdb.c:2653 #, c-format msgid "Running in noclean mode. Mistakes will not be cleaned up.\n" msgstr "Běžím v režimu \"noclean\". Chybné kroky nebudou uklizeny.\n" -#: initdb.c:2608 initdb.c:2626 initdb.c:2894 +#: initdb.c:2696 initdb.c:2714 initdb.c:2996 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Zkuste \"%s --help\" pro více informací.\n" -#: initdb.c:2624 +#: initdb.c:2712 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: příliš mnoho argumentů v příkazové řádce (první je \"%s\")\n" -#: initdb.c:2633 +#: initdb.c:2721 #, c-format msgid "%s: password prompt and password file cannot be specified together\n" msgstr "%s: dotaz na heslo a soubor s heslem nemohou být vyžadovány najednou\n" -#: initdb.c:2639 +#: initdb.c:2727 msgid "" "\n" "WARNING: enabling \"trust\" authentication for local connections\n" @@ -500,19 +536,19 @@ msgstr "" "Toto můžete změnit úpravou souboru pg_hba.conf nebo použitím\n" "parametru -A při příštím spuštění initdb.\n" -#: initdb.c:2662 +#: initdb.c:2750 #, c-format msgid "%s: unrecognized authentication method \"%s\"\n" msgstr "%s: neznámá autentizační metoda \"%s\".\n" -#: initdb.c:2672 +#: initdb.c:2760 #, c-format msgid "" "%s: must specify a password for the superuser to enable %s authentication\n" msgstr "" "%s: musíte zadat heslo superuživatele pro použití autentizace typu %s.\n" -#: initdb.c:2687 +#: initdb.c:2789 #, c-format msgid "" "%s: no data directory specified\n" @@ -525,7 +561,7 @@ msgstr "" "Učiňte tak buď použitím přepínače -D nebo nastavením proměnné\n" "prostředí PGDATA.\n" -#: initdb.c:2763 +#: initdb.c:2873 #, c-format msgid "" "The program \"postgres\" is needed by %s but was not found in the\n" @@ -536,7 +572,7 @@ msgstr "" "adresáři jako \"%s\".\n" "Zkontrolujte vaši instalaci.\n" -#: initdb.c:2770 +#: initdb.c:2880 #, c-format msgid "" "The program \"postgres\" was found by \"%s\"\n" @@ -547,17 +583,12 @@ msgstr "" "ale nebyl ve stejné verzi jako %s.\n" "Zkontrolujte vaši instalaci.\n" -#: initdb.c:2789 +#: initdb.c:2899 #, c-format msgid "%s: input file location must be an absolute path\n" msgstr "%s: cesta k umístění vstupního souboru musí být absolutní\n" -#: initdb.c:2797 -#, c-format -msgid "%s: could not determine valid short version string\n" -msgstr "%s: nemohu zjistit platné krátké označení verze\n" - -#: initdb.c:2852 +#: initdb.c:2956 #, c-format msgid "" "The files belonging to this database system will be owned by user \"%s\".\n" @@ -568,12 +599,12 @@ msgstr "" "Tento uživatel musí být také vlastníkem serverového procesu.\n" "\n" -#: initdb.c:2862 +#: initdb.c:2966 #, c-format msgid "The database cluster will be initialized with locale %s.\n" msgstr "Databázový klastr bude inicializován s národním nastavením %s.\n" -#: initdb.c:2865 +#: initdb.c:2969 #, c-format msgid "" "The database cluster will be initialized with locales\n" @@ -592,22 +623,34 @@ msgstr "" " NUMERIC: %s\n" " TIME: %s\n" -#: initdb.c:2891 +#: initdb.c:2993 #, c-format msgid "%s: could not find suitable encoding for locale %s\n" msgstr "%s: nemohu najít vhodné kódování pro národní nastavení %s\n" -#: initdb.c:2893 +#: initdb.c:2995 #, c-format msgid "Rerun %s with the -E option.\n" msgstr "Spusťte znovu %s s přepínačem -E.\n" -#: initdb.c:2902 +#: initdb.c:3008 +#, c-format +#| msgid "" +#| "Encoding %s is not allowed as a server-side encoding.\n" +#| "Rerun %s with a different locale selection.\n" +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 "" +"Kódování %s vyplývající z locale není povoleno jako kódování na serveru.\n" +"Implicitní kódování databáze bude nastaveno na %s.\n" + +#: initdb.c:3016 #, c-format msgid "%s: locale %s requires unsupported encoding %s\n" msgstr "%s: národní prostředí %s vyžaduje nepodporované kódování %s\n" -#: initdb.c:2905 +#: initdb.c:3019 #, c-format msgid "" "Encoding %s is not allowed as a server-side encoding.\n" @@ -616,25 +659,26 @@ msgstr "" "Kódování %s není povoleno jako kódování na serveru.\n" "Pusťte znovu %s s jiným nastavením národního prostředí.\n" -#: initdb.c:2913 +#: initdb.c:3028 #, c-format msgid "The default database encoding has accordingly been set to %s.\n" msgstr "" "Výchozí kódování pro databáze bylo odpovídajícím způsobem nastaveno na %s.\n" -#: initdb.c:2930 +#: initdb.c:3045 #, c-format msgid "%s: could not find suitable text search configuration for locale %s\n" msgstr "%s: nemohu najít vhodnou konfigurace fulltextového vyhledávání %s\n" -#: initdb.c:2941 +#: initdb.c:3056 #, c-format msgid "" "%s: warning: suitable text search configuration for locale %s is unknown\n" msgstr "" -"%s: varování: vhodná konfigurace fulltextového vyhledávání pro národní nastavení %s je neznámá\n" +"%s: varování: vhodná konfigurace fulltextového vyhledávání pro národní " +"nastavení %s je neznámá\n" -#: initdb.c:2946 +#: initdb.c:3061 #, c-format msgid "" "%s: warning: specified text search configuration \"%s\" might not match " @@ -643,32 +687,33 @@ msgstr "" "%s: varování: zvolená konfigurace fulltextového vyhledávání \"%s\" nemusí " "souhlasit s národním prostředím %s\n" -#: initdb.c:2951 +#: initdb.c:3066 #, c-format msgid "The default text search configuration will be set to \"%s\".\n" -msgstr "Implicitní konfigurace fulltextového vyhledávání bude nastavena na \"%s\".\n" +msgstr "" +"Implicitní konfigurace fulltextového vyhledávání bude nastavena na \"%s\".\n" -#: initdb.c:2985 initdb.c:3052 +#: initdb.c:3100 initdb.c:3167 #, c-format msgid "creating directory %s ... " msgstr "vytvářím adresář %s ... " -#: initdb.c:2999 initdb.c:3069 +#: initdb.c:3114 initdb.c:3185 #, c-format msgid "fixing permissions on existing directory %s ... " msgstr "opravuji oprávnění pro existující adresář %s ... " -#: initdb.c:3005 initdb.c:3075 +#: initdb.c:3120 initdb.c:3191 #, c-format msgid "%s: could not change permissions of directory \"%s\": %s\n" msgstr "%s: nelze změnit práva adresáře \"%s\": %s\n" -#: initdb.c:3018 initdb.c:3087 +#: initdb.c:3133 initdb.c:3204 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: adresář \"%s\" existuje, ale není prázdný\n" -#: initdb.c:3021 +#: initdb.c:3136 #, c-format msgid "" "If you want to create a new database system, either remove or empty\n" @@ -679,17 +724,17 @@ msgstr "" "vyprázdněte adresář \"%s\" nebo spusťte %s\n" "s argumentem jiným než \"%s\".\n" -#: initdb.c:3029 initdb.c:3097 +#: initdb.c:3144 initdb.c:3214 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: nelze přístoupit k adresáři \"%s\": %s\n" -#: initdb.c:3043 +#: initdb.c:3158 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" msgstr "%s: cesta k umístění adresáře transakčního logu musí být absolutní\n" -#: initdb.c:3090 +#: initdb.c:3207 #, c-format msgid "" "If you want to store the transaction log there, either\n" @@ -698,23 +743,22 @@ msgstr "" "Pokud chcete v tomto adresáři ukládat transakční log odstraňte nebo\n" "vyprázdněte adresář \"%s\".\n" - -#: initdb.c:3109 +#: initdb.c:3226 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" msgstr "%s: nelze vytvořit symbolický link \"%s\": %s\n" -#: initdb.c:3114 +#: initdb.c:3231 #, c-format msgid "%s: symlinks are not supported on this platform" msgstr "%s: na této platformě nejsou podporovány symbolické linky" -#: initdb.c:3120 +#: initdb.c:3237 #, c-format msgid "creating subdirectories ... " msgstr "vytvářím adresáře ... " -#: initdb.c:3182 +#: initdb.c:3303 #, c-format msgid "" "\n" @@ -736,85 +780,99 @@ msgstr "" #: ../../port/dirmod.c:75 ../../port/dirmod.c:88 ../../port/dirmod.c:101 #, c-format msgid "out of memory\n" -msgstr "paměť vyčerpána\n" +msgstr "nedostatek paměti\n" -#: ../../port/dirmod.c:270 +#: ../../port/dirmod.c:286 #, c-format msgid "could not set junction for \"%s\": %s\n" msgstr "nelze nastavit propojení \"%s\": %s\n" -#: ../../port/dirmod.c:309 +#: ../../port/dirmod.c:361 +#, c-format +#| msgid "could not set junction for \"%s\": %s\n" +msgid "could not get junction for \"%s\": %s\n" +msgstr "nelze najít funkci pro \"%s\": %s\n" + +#: ../../port/dirmod.c:443 #, c-format msgid "could not open directory \"%s\": %s\n" msgstr "nelze otevřít adresář \"%s\": %s\n" -#: ../../port/dirmod.c:346 +#: ../../port/dirmod.c:480 #, c-format msgid "could not read directory \"%s\": %s\n" msgstr "nelze číst z adresáře \"%s\": %s\n" -#: ../../port/dirmod.c:429 +#: ../../port/dirmod.c:563 #, c-format msgid "could not stat file or directory \"%s\": %s\n" msgstr "nelze získat informace o souboru nebo adresáři \"%s\": %s\n" -#: ../../port/dirmod.c:456 ../../port/dirmod.c:473 +#: ../../port/dirmod.c:590 ../../port/dirmod.c:607 #, c-format msgid "could not remove file or directory \"%s\": %s\n" msgstr "nelze smazat soubor nebo adresář \"%s\": %s\n" -#: ../../port/exec.c:195 ../../port/exec.c:309 ../../port/exec.c:352 +#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 #, c-format msgid "could not identify current directory: %s" msgstr "nelze získat aktuální adresář: %s" -#: ../../port/exec.c:214 +#: ../../port/exec.c:144 #, c-format msgid "invalid binary \"%s\"" msgstr "neplatný binární soubor\"%s\"" -#: ../../port/exec.c:263 +#: ../../port/exec.c:193 #, c-format msgid "could not read binary \"%s\"" msgstr "nelze číst binární soubor \"%s\"" -#: ../../port/exec.c:270 +#: ../../port/exec.c:200 #, c-format msgid "could not find a \"%s\" to execute" msgstr "nelze najít spustitelný soubor \"%s\"" -#: ../../port/exec.c:325 ../../port/exec.c:361 +#: ../../port/exec.c:255 ../../port/exec.c:291 #, c-format msgid "could not change directory to \"%s\"" msgstr "nelze změnit adresář na \"%s\"" -#: ../../port/exec.c:340 +#: ../../port/exec.c:270 #, c-format msgid "could not read symbolic link \"%s\"" msgstr "nelze číst symbolický link \"%s\"" -#: ../../port/exec.c:586 +#: ../../port/exec.c:517 #, c-format msgid "child process exited with exit code %d" msgstr "potomek skončil s návratovým kódem %d" -#: ../../port/exec.c:590 +#: ../../port/exec.c:521 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "potomek byl ukončen vyjímkou 0x%X" -#: ../../port/exec.c:599 +#: ../../port/exec.c:530 #, c-format msgid "child process was terminated by signal %s" msgstr "potomek byl ukončen signálem %s" -#: ../../port/exec.c:602 +#: ../../port/exec.c:533 #, c-format msgid "child process was terminated by signal %d" msgstr "potomek byl ukončen signálem %d" -#: ../../port/exec.c:606 +#: ../../port/exec.c:537 #, c-format msgid "child process exited with unrecognized status %d" msgstr "potomek skončil s nerozponaným stavem %d" +#~ msgid "" +#~ "%s: The password file was not generated. Please report this problem.\n" +#~ msgstr "" +#~ "%s: Soubor s hesly nebyl vytvořen. Prosíme oznamte tento problém " +#~ "tvůrcům.\n" + +#~ msgid "%s: could not determine valid short version string\n" +#~ msgstr "%s: nemohu zjistit platné krátké označení verze\n" diff --git a/src/bin/initdb/po/de.po b/src/bin/initdb/po/de.po index 390f1c7597..27191c0230 100644 --- a/src/bin/initdb/po/de.po +++ b/src/bin/initdb/po/de.po @@ -3,14 +3,12 @@ # # Use these quotes: »%s« # -# pgtranslation Id: initdb.po,v 1.17 2011/05/10 18:41:25 petere Exp $ -# msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" "POT-Creation-Date: 2011-05-09 04:39+0000\n" -"PO-Revision-Date: 2011-05-09 21:07+0300\n" +"PO-Revision-Date: 2012-05-03 21:45+0300\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: Peter Eisentraut \n" "Language: de\n" @@ -426,7 +424,7 @@ msgstr " -W, --pwprompt frage nach Passwort für neuen Superuser\n" #, 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 den Transaktionslog\n" #: initdb.c:2521 #, c-format diff --git a/src/bin/initdb/po/es.po b/src/bin/initdb/po/es.po index 97475d8e11..1550204346 100644 --- a/src/bin/initdb/po/es.po +++ b/src/bin/initdb/po/es.po @@ -1,105 +1,105 @@ # Spanish translation of initdb. # -# Copyright (C) 2004-2010 PostgreSQL Global Development Group +# Copyright (C) 2004-2012 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # -# Álvaro Herrera , 2004-2010 -# -# pgtranslation Id: initdb.po,v 1.10 2010/09/24 21:58:59 petere Exp $ +# Álvaro Herrera , 2004-2012 # msgid "" msgstr "" -"Project-Id-Version: initdb (PostgreSQL 8.4)\n" +"Project-Id-Version: initdb (PostgreSQL 9.1)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-08-30 20:02+0000\n" -"PO-Revision-Date: 2010-09-25 00:37+0300\n" +"POT-Creation-Date: 2013-08-26 19:45+0000\n" +"PO-Revision-Date: 2012-02-21 22:53-0300\n" "Last-Translator: Álvaro Herrera \n" "Language-Team: PgSQL-es-Ayuda \n" +"Language: es\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: initdb.c:254 initdb.c:268 +#: initdb.c:259 initdb.c:273 #, c-format msgid "%s: out of memory\n" msgstr "%s: memoria agotada\n" -#: initdb.c:377 initdb.c:1432 +#: initdb.c:383 initdb.c:1289 #, 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:433 initdb.c:956 initdb.c:985 +#: initdb.c:439 initdb.c:805 initdb.c:834 #, 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:441 initdb.c:449 initdb.c:963 initdb.c:991 +#: initdb.c:447 initdb.c:455 initdb.c:812 initdb.c:840 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s: no se pudo escribir el archivo «%s»: %s\n" -#: initdb.c:468 +#: initdb.c:474 #, c-format msgid "%s: could not execute command \"%s\": %s\n" msgstr "%s: no se pudo ejecutar la orden «%s»: %s\n" -#: initdb.c:588 +#: initdb.c:490 #, c-format msgid "%s: removing data directory \"%s\"\n" msgstr "%s: eliminando el directorio de datos «%s»\n" -#: initdb.c:591 +#: initdb.c:493 #, c-format msgid "%s: failed to remove data directory\n" msgstr "%s: no se pudo eliminar el directorio de datos\n" -#: initdb.c:597 +#: initdb.c:499 #, c-format msgid "%s: removing contents of data directory \"%s\"\n" msgstr "%s: eliminando el contenido del directorio «%s»\n" -#: initdb.c:600 +#: initdb.c:502 #, 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:606 +#: initdb.c:508 #, c-format msgid "%s: removing transaction log directory \"%s\"\n" msgstr "%s: eliminando el directorio de registro de transacciones «%s»\n" -#: initdb.c:609 +#: initdb.c:511 #, 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:615 +#: initdb.c:517 #, 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" +"%s: eliminando el contenido del directorio de registro de transacciones " +"«%s»\n" -#: initdb.c:618 +#: initdb.c:520 #, 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:627 +#: initdb.c:529 #, 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:632 +#: initdb.c:534 #, 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:654 +#: initdb.c:556 #, c-format msgid "" "%s: cannot be run as root\n" @@ -110,32 +110,32 @@ msgstr "" "Por favor conéctese (usando, por ejemplo, «su») como un usuario sin\n" "privilegios especiales, quien ejecutará el proceso servidor.\n" -#: initdb.c:666 +#: initdb.c:568 #, 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:683 +#: initdb.c:585 #, 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:714 +#: initdb.c:616 #, 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:876 initdb.c:3009 +#: initdb.c:725 initdb.c:3118 #, c-format msgid "%s: could not create directory \"%s\": %s\n" msgstr "%s: no se pudo crear el directorio «%s»: %s\n" -#: initdb.c:906 +#: initdb.c:755 #, c-format msgid "%s: file \"%s\" does not exist\n" msgstr "%s: el archivo «%s» no existe\n" -#: initdb.c:908 initdb.c:917 initdb.c:927 +#: initdb.c:757 initdb.c:766 initdb.c:776 #, c-format msgid "" "This might mean you have a corrupted installation or identified\n" @@ -144,36 +144,36 @@ 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:914 +#: initdb.c:763 #, c-format msgid "%s: could not access file \"%s\": %s\n" msgstr "%s: no se pudo acceder al archivo «%s»: %s\n" -#: initdb.c:925 +#: initdb.c:774 #, 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:1033 +#: initdb.c:882 #, c-format msgid "selecting default max_connections ... " msgstr "seleccionando el valor para max_connections ... " -#: initdb.c:1062 +#: initdb.c:911 #, c-format msgid "selecting default shared_buffers ... " msgstr "seleccionando el valor para shared_buffers ... " -#: initdb.c:1105 +#: initdb.c:954 msgid "creating configuration files ... " msgstr "creando archivos de configuración ... " -#: initdb.c:1272 +#: initdb.c:1129 #, c-format msgid "creating template1 database in %s/base/1 ... " msgstr "creando base de datos template1 en %s/base/1 ... " -#: initdb.c:1288 +#: initdb.c:1145 #, c-format msgid "" "%s: input file \"%s\" does not belong to PostgreSQL %s\n" @@ -183,103 +183,134 @@ msgstr "" "Verifique su instalación o especifique la ruta correcta usando la opción -" "L.\n" -#: initdb.c:1373 +#: initdb.c:1230 msgid "initializing pg_authid ... " msgstr "inicializando pg_authid ... " -#: initdb.c:1407 +#: initdb.c:1264 msgid "Enter new superuser password: " msgstr "Ingrese la nueva contraseña del superusuario: " -#: initdb.c:1408 +#: initdb.c:1265 msgid "Enter it again: " msgstr "Ingrésela nuevamente: " -#: initdb.c:1411 +#: initdb.c:1268 #, c-format msgid "Passwords didn't match.\n" msgstr "Las constraseñas no coinciden.\n" -#: initdb.c:1438 +#: initdb.c:1295 #, 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:1451 +#: initdb.c:1308 #, c-format msgid "setting password ... " msgstr "estableciendo contraseña ... " -#: initdb.c:1549 +#: initdb.c:1408 msgid "initializing dependencies ... " msgstr "inicializando dependencias ... " -#: initdb.c:1577 +#: initdb.c:1436 msgid "creating system views ... " msgstr "creando las vistas de sistema ... " -#: initdb.c:1613 +#: initdb.c:1472 msgid "loading system objects' descriptions ... " msgstr "cargando las descripciones de los objetos del sistema ... " -#: initdb.c:1665 +#: initdb.c:1578 +msgid "creating collations ... " +msgstr "creando algoritmos de ordenamiento ... " + +#: initdb.c:1611 +#, 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:1636 +#, 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:1699 +#, c-format +msgid "No usable system locales were found.\n" +msgstr "No se encontraron configuraciones regionales usable.\n" + +#: initdb.c:1700 +#, c-format +msgid "Use the option \"--debug\" to see details.\n" +msgstr "Use la opción «--debug» para ver detalles.\n" + +#: initdb.c:1703 +#, c-format +msgid "not supported on this platform\n" +msgstr "no está soportado en esta plataforma\n" + +#: initdb.c:1718 msgid "creating conversions ... " msgstr "creando conversiones ... " -#: initdb.c:1700 +#: initdb.c:1753 msgid "creating dictionaries ... " -msgstr "creando directorios ... " +msgstr "creando diccionarios ... " -#: initdb.c:1754 +#: initdb.c:1807 msgid "setting privileges on built-in objects ... " msgstr "estableciendo privilegios en objetos predefinidos ... " -#: initdb.c:1812 +#: initdb.c:1865 msgid "creating information schema ... " msgstr "creando el esquema de información ... " -#: initdb.c:1868 +#: initdb.c:1921 msgid "loading PL/pgSQL server-side language ... " msgstr "instalando el lenguaje PL/pgSQL ... " -#: initdb.c:1893 +#: initdb.c:1946 msgid "vacuuming database template1 ... " msgstr "haciendo vacuum a la base de datos template1 ... " -#: initdb.c:1947 +#: initdb.c:2002 msgid "copying template1 to template0 ... " msgstr "copiando template1 a template0 ... " -#: initdb.c:1978 +#: initdb.c:2034 msgid "copying template1 to postgres ... " msgstr "copiando template1 a postgres ... " -#: initdb.c:2035 +#: initdb.c:2091 #, c-format msgid "caught signal\n" msgstr "se ha capturado una señal\n" -#: initdb.c:2041 +#: initdb.c:2097 #, c-format msgid "could not write to child process: %s\n" msgstr "no se pudo escribir al proceso hijo: %s\n" -#: initdb.c:2049 +#: initdb.c:2105 #, c-format msgid "ok\n" msgstr "hecho\n" -#: initdb.c:2169 +#: initdb.c:2225 #, c-format msgid "%s: invalid locale name \"%s\"\n" msgstr "%s: nombre de configuración local «%s» no es válido\n" -#: initdb.c:2195 +#: initdb.c:2251 #, c-format msgid "%s: encoding mismatch\n" msgstr "%s: codificaciones no coinciden\n" -#: initdb.c:2197 +#: initdb.c:2253 #, c-format msgid "" "The encoding you selected (%s) and the encoding that the\n" @@ -294,7 +325,7 @@ msgstr "" "Ejecute %s nuevamente y no especifique una codificación, o bien especifique\n" "una combinación adecuada.\n" -#: initdb.c:2378 +#: initdb.c:2459 #, c-format msgid "" "%s initializes a PostgreSQL database cluster.\n" @@ -303,17 +334,17 @@ msgstr "" "%s inicializa un cluster de base de datos PostgreSQL.\n" "\n" -#: initdb.c:2379 +#: initdb.c:2460 #, c-format msgid "Usage:\n" msgstr "Empleo:\n" -#: initdb.c:2380 +#: initdb.c:2461 #, c-format msgid " %s [OPTION]... [DATADIR]\n" msgstr " %s [OPCIÓN]... [DATADIR]\n" -#: initdb.c:2381 +#: initdb.c:2462 #, c-format msgid "" "\n" @@ -322,7 +353,7 @@ msgstr "" "\n" "Opciones:\n" -#: initdb.c:2382 +#: initdb.c:2463 #, c-format msgid "" " -A, --auth=METHOD default authentication method for local " @@ -331,27 +362,27 @@ msgstr "" " -A, --auth=METODO método de autentificación por omisión para\n" " conexiones locales\n" -#: initdb.c:2383 +#: initdb.c:2464 #, 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:2384 +#: initdb.c:2465 #, 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:2385 +#: initdb.c:2466 #, 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:2386 +#: initdb.c:2467 #, c-format msgid "" " --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n" @@ -367,12 +398,12 @@ msgstr "" "omisión\n" " es tomado de variables de ambiente)\n" -#: initdb.c:2390 +#: initdb.c:2471 #, c-format msgid " --no-locale equivalent to --locale=C\n" msgstr " --no-locale equivalente a --locale=C\n" -#: initdb.c:2391 +#: initdb.c:2472 #, c-format msgid "" " --pwfile=FILE read password for the new superuser from file\n" @@ -380,7 +411,7 @@ msgstr "" " --pwfile=ARCHIVO leer contraseña del nuevo superusuario del " "archivo\n" -#: initdb.c:2392 +#: initdb.c:2473 #, c-format msgid "" " -T, --text-search-config=CFG\n" @@ -389,19 +420,19 @@ msgstr "" " -T, --text-search-config=CONF\n" " configuración de búsqueda en texto por omisión\n" -#: initdb.c:2394 +#: initdb.c:2475 #, c-format msgid " -U, --username=NAME database superuser name\n" msgstr " -U, --username=USUARIO nombre del superusuario del cluster\n" -#: initdb.c:2395 +#: initdb.c:2476 #, 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:2396 +#: initdb.c:2477 #, c-format msgid "" " -X, --xlogdir=XLOGDIR location for the transaction log directory\n" @@ -409,7 +440,7 @@ msgstr "" " -X, --xlogdir=XLOGDIR ubicación del directorio del registro de\n" " transacciones\n" -#: initdb.c:2397 +#: initdb.c:2478 #, c-format msgid "" "\n" @@ -418,27 +449,27 @@ msgstr "" "\n" "Opciones menos usadas:\n" -#: initdb.c:2398 +#: initdb.c:2479 #, c-format msgid " -d, --debug generate lots of debugging output\n" msgstr " -d, --debug genera mucha salida de depuración\n" -#: initdb.c:2399 +#: initdb.c:2480 #, c-format msgid " -L DIRECTORY where to find the input files\n" msgstr " -L DIRECTORIO donde encontrar los archivos de entrada\n" -#: initdb.c:2400 +#: initdb.c:2481 #, c-format msgid " -n, --noclean do not clean up after errors\n" msgstr " -n, --noclean no limpiar después de errores\n" -#: initdb.c:2401 +#: initdb.c:2482 #, c-format msgid " -s, --show show internal settings\n" msgstr " -s, --show muestra variables internas\n" -#: initdb.c:2402 +#: initdb.c:2483 #, c-format msgid "" "\n" @@ -447,17 +478,17 @@ msgstr "" "\n" "Otras opciones:\n" -#: initdb.c:2403 +#: initdb.c:2484 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help mostrar esta ayuda y salir\n" -#: initdb.c:2404 +#: initdb.c:2485 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version mostrar información de version y salir\n" -#: initdb.c:2405 +#: initdb.c:2486 #, c-format msgid "" "\n" @@ -468,7 +499,7 @@ msgstr "" "Si el directorio de datos no es especificado, se usa la variable de\n" "ambiente PGDATA.\n" -#: initdb.c:2407 +#: initdb.c:2488 #, c-format msgid "" "\n" @@ -477,34 +508,34 @@ msgstr "" "\n" "Reporte errores a .\n" -#: initdb.c:2512 +#: initdb.c:2594 #, c-format msgid "Running in debug mode.\n" msgstr "Ejecutando en modo de depuración.\n" -#: initdb.c:2516 +#: initdb.c:2598 #, 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:2559 initdb.c:2577 initdb.c:2845 +#: initdb.c:2641 initdb.c:2659 initdb.c:2941 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Use «%s --help» para obtener mayor información.\n" -#: initdb.c:2575 +#: initdb.c:2657 #, 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:2584 +#: initdb.c:2666 #, 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:2590 +#: initdb.c:2672 msgid "" "\n" "WARNING: enabling \"trust\" authentication for local connections\n" @@ -516,12 +547,12 @@ msgstr "" "Puede cambiar esto editando pg_hba.conf o usando el parámetro -A\n" "la próxima vez que ejecute initdb.\n" -#: initdb.c:2613 +#: initdb.c:2695 #, c-format msgid "%s: unrecognized authentication method \"%s\"\n" msgstr "%s: método de autentificación desconocido: «%s»\n" -#: initdb.c:2623 +#: initdb.c:2705 #, c-format msgid "" "%s: must specify a password for the superuser to enable %s authentication\n" @@ -529,7 +560,7 @@ msgstr "" "%s: debe especificar una contraseña al superusuario para activar\n" "autentificación %s\n" -#: initdb.c:2638 +#: initdb.c:2734 #, c-format msgid "" "%s: no data directory specified\n" @@ -541,7 +572,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:2722 +#: initdb.c:2818 #, c-format msgid "" "The program \"postgres\" is needed by %s but was not found in the\n" @@ -552,7 +583,7 @@ msgstr "" "directorio que «%s».\n" "Verifique su instalación.\n" -#: initdb.c:2729 +#: initdb.c:2825 #, c-format msgid "" "The program \"postgres\" was found by \"%s\"\n" @@ -563,12 +594,12 @@ msgstr "" "de la misma versión que «%s».\n" "Verifique su instalación.\n" -#: initdb.c:2748 +#: initdb.c:2844 #, 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:2805 +#: initdb.c:2901 #, c-format msgid "" "The files belonging to this database system will be owned by user \"%s\".\n" @@ -578,12 +609,12 @@ msgstr "" "Los archivos de este cluster serán de propiedad del usuario «%s».\n" "Este usuario también debe ser quien ejecute el proceso servidor.\n" -#: initdb.c:2815 +#: initdb.c:2911 #, c-format msgid "The database cluster will be initialized with locale %s.\n" msgstr "El cluster será inicializado con configuración local %s.\n" -#: initdb.c:2818 +#: initdb.c:2914 #, c-format msgid "" "The database cluster will be initialized with locales\n" @@ -602,25 +633,35 @@ msgstr "" " NUMERIC: %s\n" " TIME: %s\n" -#: initdb.c:2842 +#: initdb.c:2938 #, 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 local %s\n" -#: initdb.c:2844 +#: initdb.c:2940 #, c-format msgid "Rerun %s with the -E option.\n" msgstr "Ejecute %s con la opción -E.\n" -#: initdb.c:2853 +#: initdb.c:2953 +#, 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 "" +"La codificación %s, implícita en la configuración regional,\n" +"no puede ser usada como codificación del lado del servidor.\n" +"La codificación por omisión será %s.\n" + +#: initdb.c:2961 #, c-format msgid "%s: locale %s requires unsupported encoding %s\n" msgstr "" "%s: la configuración local %s requiere la codificación no soportada %s\n" -#: initdb.c:2856 +#: initdb.c:2964 #, c-format msgid "" "Encoding %s is not allowed as a server-side encoding.\n" @@ -630,19 +671,19 @@ msgstr "" "del servidor.\n" "Ejecute %s nuevamente con una selección de configuración local diferente.\n" -#: initdb.c:2864 +#: initdb.c:2973 #, 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:2881 +#: initdb.c:2990 #, c-format msgid "%s: could not find suitable text search configuration for locale %s\n" msgstr "" "%s: no se pudo encontrar una configuración para búsqueda en texto apropiada\n" "para la configuración local %s\n" -#: initdb.c:2892 +#: initdb.c:3001 #, c-format msgid "" "%s: warning: suitable text search configuration for locale %s is unknown\n" @@ -650,7 +691,7 @@ msgstr "" "%s: atención: la configuración de búsqueda en texto apropiada para\n" "la configuración local %s es desconocida\n" -#: initdb.c:2897 +#: initdb.c:3006 #, c-format msgid "" "%s: warning: specified text search configuration \"%s\" might not match " @@ -659,32 +700,32 @@ msgstr "" "%s: atención: la configuración de búsqueda en texto «%s» especificada\n" "podría no coincidir con la configuración local %s\n" -#: initdb.c:2902 +#: initdb.c:3011 #, c-format msgid "The default text search configuration will be set to \"%s\".\n" msgstr "La configuración de búsqueda en texto ha sido definida a «%s».\n" -#: initdb.c:2936 initdb.c:3003 +#: initdb.c:3045 initdb.c:3112 #, c-format msgid "creating directory %s ... " msgstr "creando el directorio %s ... " -#: initdb.c:2950 initdb.c:3020 +#: initdb.c:3059 initdb.c:3130 #, c-format msgid "fixing permissions on existing directory %s ... " msgstr "corrigiendo permisos en el directorio existente %s ... " -#: initdb.c:2956 initdb.c:3026 +#: initdb.c:3065 initdb.c:3136 #, 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:2969 initdb.c:3038 +#: initdb.c:3078 initdb.c:3149 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: el directorio «%s» no está vacío\n" -#: initdb.c:2972 +#: initdb.c:3081 #, c-format msgid "" "If you want to create a new database system, either remove or empty\n" @@ -695,18 +736,18 @@ msgstr "" "el directorio «%s», o ejecute %s\n" "con un argumento distinto de «%s».\n" -#: initdb.c:2980 initdb.c:3048 +#: initdb.c:3089 initdb.c:3159 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: no se pudo acceder al directorio «%s»: %s\n" -#: initdb.c:2994 +#: initdb.c:3103 #, 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:3041 +#: initdb.c:3152 #, c-format msgid "" "If you want to store the transaction log there, either\n" @@ -715,22 +756,22 @@ msgstr "" "Si quiere almacenar el directorio de registro de transacciones ahí,\n" "elimine o vacíe el directorio «%s».\n" -#: initdb.c:3060 +#: initdb.c:3171 #, 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:3065 +#: initdb.c:3176 #, 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:3071 +#: initdb.c:3182 #, c-format msgid "creating subdirectories ... " msgstr "creando subdirectorios ... " -#: initdb.c:3135 +#: initdb.c:3248 #, c-format msgid "" "\n" @@ -759,22 +800,27 @@ msgstr "memoria agotada\n" msgid "could not set junction for \"%s\": %s\n" msgstr "no se pudo definir un junction para «%s»: %s\n" -#: ../../port/dirmod.c:325 +#: ../../port/dirmod.c:361 +#, c-format +msgid "could not get junction for \"%s\": %s\n" +msgstr "no se pudo obtener junction para «%s»: %s\n" + +#: ../../port/dirmod.c:443 #, c-format msgid "could not open directory \"%s\": %s\n" msgstr "no se pudo abrir el directorio «%s»: %s\n" -#: ../../port/dirmod.c:362 +#: ../../port/dirmod.c:480 #, c-format msgid "could not read directory \"%s\": %s\n" msgstr "no se pudo leer el directorio «%s»: %s\n" -#: ../../port/dirmod.c:445 +#: ../../port/dirmod.c:563 #, 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:472 ../../port/dirmod.c:489 +#: ../../port/dirmod.c:590 ../../port/dirmod.c:607 #, 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" @@ -809,42 +855,27 @@ msgstr "no se pudo cambiar el directorio a «%s»" msgid "could not read symbolic link \"%s\"" msgstr "no se pudo leer el enlace simbólico «%s»" -#: ../../port/exec.c:516 +#: ../../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" msgstr "el proceso hijo terminó con código de salida %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "el proceso hijo fue terminado por una excepción 0x%X" -#: ../../port/exec.c:529 +#: ../../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "el proceso hijo fue terminado por una señal %s" -#: ../../port/exec.c:532 +#: ../../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "el proceso hijo fue terminado por una señal %d" -#: ../../port/exec.c:536 +#: ../../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "el proceso hijo terminó con código no reconocido %d" - -#~ msgid "" -#~ "%s: The password file was not generated. Please report this problem.\n" -#~ msgstr "" -#~ "%s: El archivo de contraseña no fue generado.\n" -#~ "Por favor reporte este problema.\n" - -#~ msgid "%s: could not determine valid short version string\n" -#~ msgstr "%s: no se pudo determinar una cadena corta de número de versión\n" - -#~ msgid "" -#~ " --locale=LOCALE initialize database cluster with given " -#~ "locale\n" -#~ msgstr "" -#~ " --locale=LOCALE inicializar usando esta configuración local\n" diff --git a/src/bin/initdb/po/fr.po b/src/bin/initdb/po/fr.po index 952cba4835..36a7b2b6a8 100644 --- a/src/bin/initdb/po/fr.po +++ b/src/bin/initdb/po/fr.po @@ -1,8 +1,6 @@ # translation of initdb.po to fr_fr # french message translation file for initdb # -# $PostgreSQL$ -# # Use these quotes: � %s � # # Guillaume Lelarge , 2004-2009. @@ -11,99 +9,100 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 8.4\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2009-12-19 01:11+0000\n" -"PO-Revision-Date: 2010-09-25 00:38+0300\n" +"POT-Creation-Date: 2011-06-13 14:53+0000\n" +"PO-Revision-Date: 2011-06-13 17:45+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" -#: initdb.c:255 -#: initdb.c:269 +#: initdb.c:260 +#: initdb.c:274 #, c-format msgid "%s: out of memory\n" msgstr "%s : m�moire �puis�e\n" -#: initdb.c:378 -#: initdb.c:1469 +#: initdb.c:383 +#: initdb.c:1289 #, 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:434 -#: initdb.c:993 -#: initdb.c:1022 +#: initdb.c:439 +#: initdb.c:805 +#: initdb.c:834 #, 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:442 -#: initdb.c:450 -#: initdb.c:1000 -#: initdb.c:1028 +#: initdb.c:447 +#: initdb.c:455 +#: initdb.c:812 +#: initdb.c:840 #, 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:469 +#: initdb.c:474 #, 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:589 +#: initdb.c:490 #, c-format msgid "%s: removing data directory \"%s\"\n" msgstr "%s : suppression du r�pertoire des donn�es � %s �\n" -#: initdb.c:592 +#: initdb.c:493 #, 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:598 +#: initdb.c:499 #, 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:601 +#: initdb.c:502 #, 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:607 +#: initdb.c:508 #, c-format msgid "%s: removing transaction log directory \"%s\"\n" msgstr "%s : suppression du r�pertoire des journaux de transaction � %s �\n" -#: initdb.c:610 +#: initdb.c:511 #, 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" -#: initdb.c:616 +#: initdb.c:517 #, 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" -#: initdb.c:619 +#: initdb.c:520 #, 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" -#: initdb.c:628 +#: initdb.c:529 #, 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" -#: initdb.c:633 +#: initdb.c:534 #, 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" "de l'utilisateur\n" -#: initdb.c:655 +#: initdb.c:556 #, c-format msgid "" "%s: cannot be run as root\n" @@ -114,35 +113,35 @@ 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:667 +#: initdb.c:568 #, 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:684 +#: initdb.c:585 #, 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:715 +#: initdb.c:616 #, 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:913 -#: initdb.c:3052 +#: initdb.c:725 +#: initdb.c:3173 #, 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:943 +#: initdb.c:755 #, c-format msgid "%s: file \"%s\" does not exist\n" msgstr "%s : le fichier � %s � n'existe pas\n" -#: initdb.c:945 -#: initdb.c:954 -#: initdb.c:964 +#: initdb.c:757 +#: initdb.c:766 +#: initdb.c:776 #, c-format msgid "" "This might mean you have a corrupted installation or identified\n" @@ -151,36 +150,36 @@ 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:951 +#: initdb.c:763 #, 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:962 +#: initdb.c:774 #, c-format msgid "%s: file \"%s\" is not a regular file\n" msgstr "%s : � %s � n'est pas un fichier\n" -#: initdb.c:1070 +#: initdb.c:882 #, c-format msgid "selecting default max_connections ... " msgstr "s�lection de la valeur par d�faut de max_connections... " -#: initdb.c:1099 +#: initdb.c:911 #, c-format msgid "selecting default shared_buffers ... " msgstr "s�lection de la valeur par d�faut pour shared_buffers... " -#: initdb.c:1142 +#: initdb.c:954 msgid "creating configuration files ... " msgstr "cr�ation des fichiers de configuration... " -#: initdb.c:1309 +#: initdb.c:1129 #, 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:1325 +#: initdb.c:1145 #, c-format msgid "" "%s: input file \"%s\" does not belong to PostgreSQL %s\n" @@ -189,103 +188,132 @@ 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:1410 +#: initdb.c:1230 msgid "initializing pg_authid ... " msgstr "initialisation de pg_authid... " -#: initdb.c:1444 +#: initdb.c:1264 msgid "Enter new superuser password: " msgstr "Saisissez le nouveau mot de passe du super-utilisateur : " -#: initdb.c:1445 +#: initdb.c:1265 msgid "Enter it again: " msgstr "Saisissez-le � nouveau : " -#: initdb.c:1448 +#: initdb.c:1268 #, c-format msgid "Passwords didn't match.\n" msgstr "Les mots de passe ne sont pas identiques.\n" -#: initdb.c:1475 +#: initdb.c:1295 #, 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:1488 +#: initdb.c:1308 #, c-format msgid "setting password ... " msgstr "initialisation du mot de passe... " -#: initdb.c:1586 +#: initdb.c:1408 msgid "initializing dependencies ... " msgstr "initialisation des d�pendances... " -#: initdb.c:1614 +#: initdb.c:1436 msgid "creating system views ... " msgstr "cr�ation des vues syst�me... " -#: initdb.c:1650 +#: initdb.c:1472 msgid "loading system objects' descriptions ... " msgstr "chargement de la description des objets syst�me... " -#: initdb.c:1702 +#: initdb.c:1578 +msgid "creating collations ... " +msgstr "cr�ation des collationnements... " + +#: initdb.c:1611 +#, c-format +msgid "%s: locale name too long, skipped: %s\n" +msgstr "%s : nom de locale trop long, ignor� : %s\n" + +#: initdb.c:1636 +#, c-format +msgid "%s: locale name has non-ASCII characters, skipped: %s\n" +msgstr "%s : le nom de la locale contient des cartact�res non ASCI, ignor� : %s\n" + +#: initdb.c:1699 +#, c-format +msgid "No usable system locales were found.\n" +msgstr "Aucune locale syst�me utilisable n'a �t� trouv�e.\n" + +#: initdb.c:1700 +#, c-format +msgid "Use the option \"--debug\" to see details.\n" +msgstr "Utilisez l'option � --debug � pour voir le d�tail.\n" + +#: initdb.c:1703 +#, c-format +msgid "not supported on this platform\n" +msgstr "non support� sur cette plateforme\n" + +#: initdb.c:1718 msgid "creating conversions ... " msgstr "cr�ation des conversions... " -#: initdb.c:1737 +#: initdb.c:1753 msgid "creating dictionaries ... " msgstr "cr�ation des dictionnaires... " -#: initdb.c:1791 +#: initdb.c:1807 msgid "setting privileges on built-in objects ... " msgstr "initialisation des droits sur les objets internes... " -#: initdb.c:1849 +#: initdb.c:1865 msgid "creating information schema ... " msgstr "cr�ation du sch�ma d'informations... " -#: initdb.c:1905 +#: initdb.c:1921 msgid "loading PL/pgSQL server-side language ... " msgstr "chargement du langage PL/pgSQL... " -#: initdb.c:1930 +#: initdb.c:1946 msgid "vacuuming database template1 ... " msgstr "lancement du vacuum sur la base de donn�es template1... " -#: initdb.c:1984 +#: initdb.c:2002 msgid "copying template1 to template0 ... " msgstr "copie de template1 vers template0... " -#: initdb.c:2015 +#: initdb.c:2034 msgid "copying template1 to postgres ... " msgstr "copie de template1 vers postgres... " -#: initdb.c:2072 +#: initdb.c:2091 #, c-format msgid "caught signal\n" msgstr "signal re�u\n" -#: initdb.c:2078 +#: initdb.c:2097 #, c-format msgid "could not write to child process: %s\n" msgstr "n'a pas pu �crire au processus fils : %s\n" -#: initdb.c:2086 +#: initdb.c:2105 #, c-format msgid "ok\n" msgstr "ok\n" -#: initdb.c:2206 +#: initdb.c:2225 #, c-format msgid "%s: invalid locale name \"%s\"\n" msgstr "%s : nom de locale invalide (� %s �)\n" -#: initdb.c:2232 +#: initdb.c:2251 #, c-format msgid "%s: encoding mismatch\n" msgstr "%s : diff�rence d'encodage\n" -#: initdb.c:2234 +#: initdb.c:2253 #, c-format msgid "" "The encoding you selected (%s) and the encoding that the\n" @@ -300,7 +328,7 @@ msgstr "" "R�-ex�cutez %s sans pr�ciser d'encodage, ou en choisissant une combinaison\n" "compatible.\n" -#: initdb.c:2415 +#: initdb.c:2514 #, c-format msgid "" "%s initializes a PostgreSQL database cluster.\n" @@ -309,17 +337,17 @@ msgstr "" "%s initialise un cluster PostgreSQL.\n" "\n" -#: initdb.c:2416 +#: initdb.c:2515 #, c-format msgid "Usage:\n" msgstr "Usage :\n" -#: initdb.c:2417 +#: initdb.c:2516 #, c-format msgid " %s [OPTION]... [DATADIR]\n" msgstr " %s [OPTION]... [R�P_DONN�ES]\n" -#: initdb.c:2418 +#: initdb.c:2517 #, c-format msgid "" "\n" @@ -328,33 +356,33 @@ msgstr "" "\n" "Options :\n" -#: initdb.c:2419 +#: initdb.c:2518 #, c-format msgid " -A, --auth=METHOD default authentication method for local connections\n" msgstr "" " -A, --auth=M�THODE m�thode d'authentification par d�faut pour les\n" " connexions locales\n" -#: initdb.c:2420 +#: initdb.c:2519 #, 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:2421 +#: initdb.c:2520 #, 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:2422 +#: initdb.c:2521 #, 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:2423 +#: initdb.c:2522 #, c-format msgid "" " --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n" @@ -369,19 +397,19 @@ msgstr "" " de donn�es (les valeurs par d�faut sont prises\n" " dans l'environnement)\n" -#: initdb.c:2427 +#: initdb.c:2526 #, c-format msgid " --no-locale equivalent to --locale=C\n" msgstr " --no-locale �quivalent � --locale=C\n" -#: initdb.c:2428 +#: initdb.c:2527 #, c-format msgid " --pwfile=FILE read password for the new superuser from file\n" msgstr "" " --pwfile=NOMFICHIER lit le mot de passe du nouveau\n" " super-utilisateur � partir de ce fichier\n" -#: initdb.c:2429 +#: initdb.c:2528 #, c-format msgid "" " -T, --text-search-config=CFG\n" @@ -391,24 +419,24 @@ msgstr "" " configuration par d�faut de la recherche plein\n" " texte\n" -#: initdb.c:2431 +#: initdb.c:2530 #, 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" -#: initdb.c:2432 +#: initdb.c:2531 #, c-format 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:2433 +#: initdb.c:2532 #, 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" -#: initdb.c:2434 +#: initdb.c:2533 #, c-format msgid "" "\n" @@ -417,29 +445,29 @@ msgstr "" "\n" "Options moins utilis�es :\n" -#: initdb.c:2435 +#: initdb.c:2534 #, c-format msgid " -d, --debug generate lots of debugging output\n" msgstr " -d, --debug engendre un grand nombre de traces de d�bogage\n" -#: initdb.c:2436 +#: initdb.c:2535 #, 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:2437 +#: initdb.c:2536 #, 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:2438 +#: initdb.c:2537 #, c-format msgid " -s, --show show internal settings\n" msgstr " -s, --show affiche la configuration interne\n" -#: initdb.c:2439 +#: initdb.c:2538 #, c-format msgid "" "\n" @@ -448,17 +476,17 @@ msgstr "" "\n" "Autres options :\n" -#: initdb.c:2440 +#: initdb.c:2539 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help affiche cette aide puis quitte\n" -#: initdb.c:2441 +#: initdb.c:2540 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version affiche la version puis quitte\n" -#: initdb.c:2442 +#: initdb.c:2541 #, c-format msgid "" "\n" @@ -469,7 +497,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:2444 +#: initdb.c:2543 #, c-format msgid "" "\n" @@ -478,36 +506,36 @@ msgstr "" "\n" "Rapporter les bogues � .\n" -#: initdb.c:2549 +#: initdb.c:2649 #, c-format msgid "Running in debug mode.\n" msgstr "Lanc� en mode d�bogage.\n" -#: initdb.c:2553 +#: initdb.c:2653 #, 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" -#: initdb.c:2596 -#: initdb.c:2614 -#: initdb.c:2888 +#: initdb.c:2696 +#: initdb.c:2714 +#: initdb.c:2996 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Essayer � %s --help � pour plus d'informations.\n" -#: initdb.c:2612 +#: initdb.c:2712 #, 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:2621 +#: initdb.c:2721 #, 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:2627 +#: initdb.c:2727 msgid "" "\n" "WARNING: enabling \"trust\" authentication for local connections\n" @@ -520,19 +548,19 @@ msgstr "" "Cela peut �tre modifi� par l'�dition de pg_hba.conf ou en utilisant l'option\n" "-A au prochain lancement d'initdb.\n" -#: initdb.c:2650 +#: initdb.c:2750 #, c-format msgid "%s: unrecognized authentication method \"%s\"\n" msgstr "%s : m�thode d'authentification � %s � inconnue.\n" -#: initdb.c:2660 +#: initdb.c:2760 #, c-format 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:2675 +#: initdb.c:2789 #, c-format msgid "" "%s: no data directory specified\n" @@ -545,7 +573,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:2759 +#: initdb.c:2873 #, c-format msgid "" "The program \"postgres\" is needed by %s but was not found in the\n" @@ -556,7 +584,7 @@ msgstr "" "le m�me r�pertoire que � %s �.\n" "V�rifiez votre installation.\n" -#: initdb.c:2766 +#: initdb.c:2880 #, c-format msgid "" "The program \"postgres\" was found by \"%s\"\n" @@ -567,19 +595,14 @@ msgstr "" "version que � %s �.\n" "V�rifiez votre installation.\n" -#: initdb.c:2785 +#: initdb.c:2899 #, 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:2793 -#, c-format -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" - -#: initdb.c:2848 +#: initdb.c:2956 #, c-format msgid "" "The files belonging to this database system will be owned by user \"%s\".\n" @@ -590,12 +613,12 @@ msgstr "" "Le processus serveur doit �galement lui appartenir.\n" "\n" -#: initdb.c:2858 +#: initdb.c:2966 #, c-format msgid "The database cluster will be initialized with locale %s.\n" msgstr "Le cluster sera initialis� avec la locale %s.\n" -#: initdb.c:2861 +#: initdb.c:2969 #, c-format msgid "" "The database cluster will be initialized with locales\n" @@ -614,22 +637,31 @@ msgstr "" " NUMERIC: %s\n" " TIME: %s\n" -#: initdb.c:2885 +#: initdb.c:2993 #, 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:2887 +#: initdb.c:2995 #, c-format msgid "Rerun %s with the -E option.\n" msgstr "Relancez %s avec l'option -E.\n" -#: initdb.c:2896 +#: initdb.c:3008 +#, 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 par d�faut des bases de donn�es sera configur� � %s.\n" + +#: initdb.c:3016 #, c-format msgid "%s: locale %s requires unsupported encoding %s\n" msgstr "%s : la locale %s n�cessite l'encodage non support� %s\n" -#: initdb.c:2899 +#: initdb.c:3019 #, c-format msgid "" "Encoding %s is not allowed as a server-side encoding.\n" @@ -638,64 +670,64 @@ 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:2907 +#: initdb.c:3028 #, 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:2924 +#: initdb.c:3045 #, c-format msgid "%s: could not find suitable text search configuration for locale %s\n" msgstr "" "%s : n'a pas pu trouver la configuration de la recherche plein texte en\n" " ad�quation avec la locale � %s �\n" -#: initdb.c:2935 +#: initdb.c:3056 #, c-format msgid "%s: warning: suitable text search configuration for locale %s is unknown\n" msgstr "" "%s : attention : pas de configuration de la recherche plein texte connue\n" "pour la locale � %s �\n" -#: initdb.c:2940 +#: initdb.c:3061 #, c-format msgid "%s: warning: specified text search configuration \"%s\" might not match locale %s\n" msgstr "" "%s : attention : la configuration indiqu�e pour la recherche plein texte,\n" "� %s �, pourrait ne pas correspondre � la locale � %s �\n" -#: initdb.c:2945 +#: initdb.c:3066 #, 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" -#: initdb.c:2979 -#: initdb.c:3046 +#: initdb.c:3100 +#: initdb.c:3167 #, c-format msgid "creating directory %s ... " msgstr "cr�ation du r�pertoire %s... " -#: initdb.c:2993 -#: initdb.c:3063 +#: initdb.c:3114 +#: initdb.c:3185 #, c-format msgid "fixing permissions on existing directory %s ... " msgstr "correction des droits sur le r�pertoire existant %s... " -#: initdb.c:2999 -#: initdb.c:3069 +#: initdb.c:3120 +#: initdb.c:3191 #, 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:3012 -#: initdb.c:3081 +#: initdb.c:3133 +#: initdb.c:3204 #, 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:3015 +#: initdb.c:3136 #, c-format msgid "" "If you want to create a new database system, either remove or empty\n" @@ -706,20 +738,20 @@ msgstr "" "videz le r�pertoire � %s �.\n" "Vous pouvez aussi ex�cuter %s avec un argument autre que � %s �.\n" -#: initdb.c:3023 -#: initdb.c:3091 +#: initdb.c:3144 +#: initdb.c:3214 #, 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:3037 +#: initdb.c:3158 #, 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:3084 +#: initdb.c:3207 #, c-format msgid "" "If you want to store the transaction log there, either\n" @@ -728,22 +760,22 @@ msgstr "" "Si vous voulez enregistrer ici le journal des transactions, supprimez ou\n" "videz le r�pertoire � %s �.\n" -#: initdb.c:3103 +#: initdb.c:3226 #, 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:3108 +#: initdb.c:3231 #, 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:3114 +#: initdb.c:3237 #, c-format msgid "creating subdirectories ... " msgstr "cr�ation des sous-r�pertoires... " -#: initdb.c:3178 +#: initdb.c:3303 #, c-format msgid "" "\n" @@ -774,90 +806,97 @@ msgstr "m msgid "could not set junction for \"%s\": %s\n" msgstr "n'a pas pu configurer la jonction pour � %s � : %s\n" -#: ../../port/dirmod.c:325 +#: ../../port/dirmod.c:361 +#, 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:443 #, 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:362 +#: ../../port/dirmod.c:480 #, 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:445 +#: ../../port/dirmod.c:563 #, 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:472 -#: ../../port/dirmod.c:489 +#: ../../port/dirmod.c:590 +#: ../../port/dirmod.c:607 #, 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:195 -#: ../../port/exec.c:309 -#: ../../port/exec.c:352 +#: ../../port/exec.c:125 +#: ../../port/exec.c:239 +#: ../../port/exec.c:282 #, c-format msgid "could not identify current directory: %s" msgstr "n'a pas pu identifier le r�pertoire courant : %s" -#: ../../port/exec.c:214 +#: ../../port/exec.c:144 #, c-format msgid "invalid binary \"%s\"" msgstr "binaire � %s � invalide" -#: ../../port/exec.c:263 +#: ../../port/exec.c:193 #, c-format msgid "could not read binary \"%s\"" msgstr "n'a pas pu lire le binaire � %s �" -#: ../../port/exec.c:270 +#: ../../port/exec.c:200 #, c-format msgid "could not find a \"%s\" to execute" msgstr "n'a pas pu trouver un � %s � � ex�cuter" -#: ../../port/exec.c:325 -#: ../../port/exec.c:361 +#: ../../port/exec.c:255 +#: ../../port/exec.c:291 #, c-format msgid "could not change directory to \"%s\"" msgstr "n'a pas pu acc�der au r�pertoire � %s �" -#: ../../port/exec.c:340 +#: ../../port/exec.c:270 #, c-format msgid "could not read symbolic link \"%s\"" msgstr "n'a pas pu lire le lien symbolique � %s �" -#: ../../port/exec.c:586 +#: ../../port/exec.c:517 #, c-format msgid "child process exited with exit code %d" msgstr "le processus fils a quitt� avec le code de sortie %d" -#: ../../port/exec.c:590 +#: ../../port/exec.c:521 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "le processus fils a �t� termin� par l'exception 0x%X" -#: ../../port/exec.c:599 +#: ../../port/exec.c:530 #, c-format msgid "child process was terminated by signal %s" msgstr "le processus fils a �t� termin� par le signal %s" -#: ../../port/exec.c:602 +#: ../../port/exec.c:533 #, c-format msgid "child process was terminated by signal %d" msgstr "le processus fils a �t� termin� par le signal %d" -#: ../../port/exec.c:606 +#: ../../port/exec.c:537 #, c-format msgid "child process exited with unrecognized status %d" msgstr "le processus fils a quitt� avec un statut %d non reconnu" +#~ 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" #~ msgstr "" #~ "%s : le fichier de mots de passe n'a pas �t� cr��.\n" #~ "Merci de rapporter ce probl�me.\n" - diff --git a/src/bin/initdb/po/it.po b/src/bin/initdb/po/it.po index 82db331063..ce6bacc02b 100644 --- a/src/bin/initdb/po/it.po +++ b/src/bin/initdb/po/it.po @@ -6,13 +6,14 @@ # http://www.itpug.org/ - info@itpug.org # # Traduttori: -# * Flavio Spada -# +# * Daniele Varrazzo +# # Revisori: # * Gabriele Bartolini # * Emanuele Zamprogno -# +# # Traduttori precedenti: +# * Flavio Spada , 2010 # * Fabrizio Mazzoni , 2003. # * Ottavio Campana , 2007. # @@ -21,102 +22,95 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" +"Project-Id-Version: initdb (PostgreSQL) 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-03-26 13:16+0000\n" -"PO-Revision-Date: 2010-09-25 00:44+0300\n" -"Last-Translator: Gabriele Bartolini \n" +"POT-Creation-Date: 2013-01-29 13:57+0000\n" +"PO-Revision-Date: 2012-12-03 15:57+0100\n" +"Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Italian\n" -"X-Poedit-Country: ITALY\n" "X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Poedit 1.5.4\n" -#: initdb.c:254 -#: initdb.c:268 +#: initdb.c:259 initdb.c:273 #, c-format msgid "%s: out of memory\n" msgstr "%s: memoria esaurita\n" -#: initdb.c:377 -#: initdb.c:1432 +#: initdb.c:383 initdb.c:1289 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" -msgstr "%s: impossibile aprire il file \"%s\" per la lettura: %s\n" +msgstr "%s: errore nell'apertura del file \"%s\" per la lettura: %s\n" -#: initdb.c:433 -#: initdb.c:956 -#: initdb.c:985 +#: initdb.c:439 initdb.c:805 initdb.c:834 #, c-format msgid "%s: could not open file \"%s\" for writing: %s\n" -msgstr "%s: impossibile aprire il file \"%s\" per la scrittura: %s\n" +msgstr "%s: errore nell'apertura del file \"%s\" per la scrittura: %s\n" -#: initdb.c:441 -#: initdb.c:449 -#: initdb.c:963 -#: initdb.c:991 +#: initdb.c:447 initdb.c:455 initdb.c:812 initdb.c:840 #, c-format msgid "%s: could not write file \"%s\": %s\n" -msgstr "%s: impossibile scrivere nel file \"%s\": %s\n" +msgstr "%s: errore nella scrittura del file \"%s\": %s\n" -#: initdb.c:468 +#: initdb.c:474 #, c-format msgid "%s: could not execute command \"%s\": %s\n" -msgstr "%s: impossibile eseguire il comando \"%s\": %s\n" +msgstr "%s: esecuzione del comando \"%s\" fallita: %s\n" -#: initdb.c:588 +#: initdb.c:490 #, c-format msgid "%s: removing data directory \"%s\"\n" msgstr "%s: rimozione della directory dati \"%s\"\n" -#: initdb.c:591 +#: initdb.c:493 #, c-format msgid "%s: failed to remove data directory\n" -msgstr "%s: rimozione fallita della directory dati\n" +msgstr "%s: rimozione della directory dati fallita\n" -#: initdb.c:597 +#: initdb.c:499 #, c-format msgid "%s: removing contents of data directory \"%s\"\n" -msgstr "%s: rimozione dei contenuti dalla directory dati \"%s\"\n" +msgstr "%s: rimozione dei contenuti della directory dati \"%s\"\n" -#: initdb.c:600 +#: initdb.c:502 #, c-format msgid "%s: failed to remove contents of data directory\n" -msgstr "%s: rimozione fallita dei contenuti dalla directory dati\n" +msgstr "%s: rimozione dei contenuti dalla directory dati fallita\n" -#: initdb.c:606 +#: initdb.c:508 #, c-format msgid "%s: removing transaction log directory \"%s\"\n" -msgstr "%s: rimozione della directory contenente i log delle transazioni \"%s\"\n" +msgstr "%s: rimozione della directory dei log delle transazioni \"%s\"\n" -#: initdb.c:609 +#: initdb.c:511 #, c-format msgid "%s: failed to remove transaction log directory\n" -msgstr "%s: rimozione fallita della directory contenente i log delle transazioni\n" +msgstr "%s: rimozione della directory dei log delle transazioni fallita\n" -#: initdb.c:615 +#: initdb.c:517 #, c-format msgid "%s: removing contents of transaction log directory \"%s\"\n" -msgstr "%s: rimozione dei contenuti della directory contenente i log delle transazioni \"%s\"\n" +msgstr "%s: rimozione dei contenuti della directory dei log delle transazioni \"%s\"\n" -#: initdb.c:618 +#: initdb.c:520 #, c-format msgid "%s: failed to remove contents of transaction log directory\n" -msgstr "%s: rimozione fallita dei contenuti della directory contenente i log delle transazioni\n" +msgstr "%s: rimozione dei contenuti della directory dei log delle transazioni fallita\n" -#: initdb.c:627 +#: initdb.c:529 #, c-format msgid "%s: data directory \"%s\" not removed at user's request\n" -msgstr "%s: directory dati \"%s\" non rimossa per richiesta dell'utente\n" +msgstr "%s: directory dati \"%s\" non rimossa su richiesta dell'utente\n" -#: initdb.c:632 +#: initdb.c:534 #, c-format msgid "%s: transaction log directory \"%s\" not removed at user's request\n" -msgstr "%s: directory contenente i log delle transazioni \"%s\" non rimossa per richiesta dell'utente\n" +msgstr "%s: directory dei log delle transazioni \"%s\" non rimossa su richiesta dell'utente\n" -#: initdb.c:654 +#: initdb.c:556 #, c-format msgid "" "%s: cannot be run as root\n" @@ -124,182 +118,208 @@ msgid "" "own the server process.\n" msgstr "" "%s: non può essere eseguito da root\n" -"Effettuate il log in (usando per esempio \"su\") con l'utente\n" +"Effettua il login (usando per esempio \"su\") con l'utente\n" "(non privilegiato) che controllerà il processo server.\n" -#: initdb.c:666 +#: initdb.c:568 #, c-format msgid "%s: could not obtain information about current user: %s\n" -msgstr "%s: impossibile acquisire informazioni sull'utente: %s\n" +msgstr "%s: non è stato possibile acquisire informazioni sull'utente corrente: %s\n" -#: initdb.c:683 +#: initdb.c:585 #, c-format msgid "%s: could not get current user name: %s\n" -msgstr "%s: impossibile determinare il nome utente: %s\n" +msgstr "%s: non è stato possibile determinare il nome utente corrente: %s\n" -#: initdb.c:714 +#: initdb.c:616 #, 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:876 -#: initdb.c:3009 +#: initdb.c:725 initdb.c:3118 #, c-format msgid "%s: could not create directory \"%s\": %s\n" -msgstr "%s: impossibile creare la directory \"%s\": %s\n" +msgstr "%s: creazione della directory \"%s\" fallita: %s\n" -#: initdb.c:906 +#: initdb.c:755 #, c-format msgid "%s: file \"%s\" does not exist\n" msgstr "%s: il file \"%s\" non esiste\n" -#: initdb.c:908 -#: initdb.c:917 -#: initdb.c:927 +#: initdb.c:757 initdb.c:766 initdb.c:776 #, c-format msgid "" "This might mean you have a corrupted installation or identified\n" "the wrong directory with the invocation option -L.\n" msgstr "" -"Questo potrebbe indica una corruzione dell'installazione oppure\n" -"avete indicato una directory errata con l'opzione -L.\n" +"Questo potrebbe indica una installazione corrotta oppure\n" +"hai indicato la directory errata con l'opzione -L.\n" -#: initdb.c:914 +#: initdb.c:763 #, c-format msgid "%s: could not access file \"%s\": %s\n" -msgstr "%s: impossibile aprire il file \"%s\": %s\n" +msgstr "%s: accesso al file \"%s\" fallito: %s\n" -#: initdb.c:925 +#: initdb.c:774 #, c-format msgid "%s: file \"%s\" is not a regular file\n" msgstr "%s: il file \"%s\" non è un file regolare\n" -#: initdb.c:1033 +#: initdb.c:882 #, c-format msgid "selecting default max_connections ... " msgstr "selezione del parametro max_connections predefinito ... " -#: initdb.c:1062 +#: initdb.c:911 #, c-format msgid "selecting default shared_buffers ... " -msgstr "si sta selezionando lo shared_buffers predefinito ... " +msgstr "selezione di shared_buffers predefinito ... " -#: initdb.c:1105 +#: initdb.c:954 msgid "creating configuration files ... " msgstr "creazione dei file di configurazione ... " -#: initdb.c:1272 +#: initdb.c:1129 #, c-format msgid "creating template1 database in %s/base/1 ... " msgstr "creazione del database template1 in in %s/base/1 ... " -#: initdb.c:1288 +#: initdb.c:1145 #, c-format msgid "" "%s: input file \"%s\" does not belong to PostgreSQL %s\n" "Check your installation or specify the correct path using the option -L.\n" msgstr "" "%s: il file di input \"%s\" non appartiene a PostgreSQL %s\n" -"Controllate l'installazione o specificate un percorso corretto con\n" -"l'opzione -L.\n" +"Controlla la correttezza dell'installazione oppure specifica\n" +"il percorso corretto con l'opzione -L.\n" -#: initdb.c:1373 +#: initdb.c:1230 msgid "initializing pg_authid ... " msgstr "inizializzazione di pg_authid ... " -#: initdb.c:1407 +#: initdb.c:1264 msgid "Enter new superuser password: " -msgstr "Inserire la nuova password del superuser: " +msgstr "Inserisci la nuova password del superutente: " -#: initdb.c:1408 +#: initdb.c:1265 msgid "Enter it again: " -msgstr "Reinserirla: " +msgstr "Conferma password: " -#: initdb.c:1411 +#: initdb.c:1268 #, c-format msgid "Passwords didn't match.\n" -msgstr "Le password non corrispondono. \n" +msgstr "Le password non corrispondono.\n" -#: initdb.c:1438 +#: initdb.c:1295 #, c-format msgid "%s: could not read password from file \"%s\": %s\n" -msgstr "%s: impossibile leggere il file delle password \"%s\": %s\n" +msgstr "%s: lettura del file delle password \"%s\" fallita: %s\n" -#: initdb.c:1451 +#: initdb.c:1308 #, c-format msgid "setting password ... " msgstr "impostazione password ... " -#: initdb.c:1549 +#: initdb.c:1408 msgid "initializing dependencies ... " msgstr "inizializzazione delle dipendenze ... " -#: initdb.c:1577 +#: initdb.c:1436 msgid "creating system views ... " msgstr "creazione delle viste di sistema ... " -#: initdb.c:1613 +#: initdb.c:1472 msgid "loading system objects' descriptions ... " -msgstr "caricamento delle descrizioni degli oggetti di sistema" +msgstr "caricamento delle descrizioni degli oggetti di sistema ... " -#: initdb.c:1665 +#: initdb.c:1578 +msgid "creating collations ... " +msgstr "creazione degli ordinamenti alfabetici ... " + +#: initdb.c:1611 +#, c-format +msgid "%s: locale name too long, skipped: %s\n" +msgstr "%s: nome locale troppo lungo, saltato: %s\n" + +#: initdb.c:1636 +#, 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:1699 +#, c-format +msgid "No usable system locales were found.\n" +msgstr "Nessun locale di sistema trovato.\n" + +#: initdb.c:1700 +#, c-format +msgid "Use the option \"--debug\" to see details.\n" +msgstr "Usa l'opzione \"--debug\" per vedere i dettagli.\n" + +#: initdb.c:1703 +#, c-format +msgid "not supported on this platform\n" +msgstr "non supportato su questa piattaforma\n" + +#: initdb.c:1718 msgid "creating conversions ... " msgstr "creazione delle conversioni ... " -#: initdb.c:1700 +#: initdb.c:1753 msgid "creating dictionaries ... " msgstr "creazione dizionari ... " -#: initdb.c:1754 +#: initdb.c:1807 msgid "setting privileges on built-in objects ... " -msgstr "impostazione dei privilegi per gli oggetti incorporati ... " +msgstr "impostazione dei privilegi per gli oggetti predefiniti ... " -#: initdb.c:1812 +#: initdb.c:1865 msgid "creating information schema ... " msgstr "creazione dello schema informazioni ... " -#: initdb.c:1868 +#: initdb.c:1921 msgid "loading PL/pgSQL server-side language ... " -msgstr "caricamento sul server del linguaggio PL/pgSQL ... " +msgstr "caricamento del linguaggio lato server PL/pgSQL ... " -#: initdb.c:1893 +#: initdb.c:1946 msgid "vacuuming database template1 ... " msgstr "vacuum del database template1 ... " -#: initdb.c:1947 +#: initdb.c:2002 msgid "copying template1 to template0 ... " msgstr "copia di template1 a template0 ... " -#: initdb.c:1978 +#: initdb.c:2034 msgid "copying template1 to postgres ... " msgstr "copia di template1 a postgres ... " -#: initdb.c:2035 +#: initdb.c:2091 #, c-format msgid "caught signal\n" msgstr "intercettato segnale\n" -#: initdb.c:2041 +#: initdb.c:2097 #, c-format msgid "could not write to child process: %s\n" -msgstr "impossibile scrivere sul processo figlio: %s\n" +msgstr "scrittura verso il processo figlio fallita: %s\n" -#: initdb.c:2049 +#: initdb.c:2105 #, c-format msgid "ok\n" msgstr "ok\n" -#: initdb.c:2169 +#: initdb.c:2225 #, c-format msgid "%s: invalid locale name \"%s\"\n" msgstr "%s: nome locale non valido \"%s\"\n" -#: initdb.c:2195 +#: initdb.c:2251 #, c-format msgid "%s: encoding mismatch\n" msgstr "%s: mancata corrispondenza di codifica\n" -#: initdb.c:2197 +#: initdb.c:2253 #, c-format msgid "" "The encoding you selected (%s) and the encoding that the\n" @@ -309,12 +329,12 @@ msgid "" "or choose a matching combination.\n" msgstr "" "La codifica selezionata (%s) e la codifica usata dal locale\n" -"(%s) non sono uguali. Questo causerebbe un funzionamento errato\n" +"(%s) non corrispondono. Questo causerebbe un funzionamento errato\n" "in molte funzioni di elaborazione delle stringhe di caratteri.\n" -"Rieseguite %s e non specificate una codifica esplicitamente o\n" -"selezionate una combinazione corretta.\n" +"Esegui di nuovo %s senza specificare una codifica esplicitamente\n" +"oppure seleziona una combinazione corretta.\n" -#: initdb.c:2378 +#: initdb.c:2459 #, c-format msgid "" "%s initializes a PostgreSQL database cluster.\n" @@ -323,17 +343,17 @@ msgstr "" "%s inizializza un cluster di database PostgreSQL.\n" "\n" -#: initdb.c:2379 +#: initdb.c:2460 #, c-format msgid "Usage:\n" msgstr "Utilizzo:\n" -#: initdb.c:2380 +#: initdb.c:2461 #, c-format msgid " %s [OPTION]... [DATADIR]\n" -msgstr " %s [OPTION]... [DATADIR]\n" +msgstr " %s [OPZIONE]... [DATADIR]\n" -#: initdb.c:2381 +#: initdb.c:2462 #, c-format msgid "" "\n" @@ -342,33 +362,33 @@ msgstr "" "\n" "Opzioni:\n" -#: initdb.c:2382 +#: initdb.c:2463 #, c-format msgid " -A, --auth=METHOD default authentication method for local connections\n" msgstr "" -" -A, --auth=METHOD metodo di autenticazione predefinito per le\n" +" -A, --auth=METODO metodo di autenticazione predefinito per le\n" " connessioni locali\n" -#: initdb.c:2383 +#: initdb.c:2464 #, c-format msgid " [-D, --pgdata=]DATADIR location for this database cluster\n" -msgstr " [-D, --pgdata=]DATADIR posizione di questo database cluster\n" +msgstr " [-D, --pgdata=]DATADIR dove creare questo cluster di database\n" -#: initdb.c:2384 +#: initdb.c:2465 #, 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:2385 +#: initdb.c:2466 #, c-format msgid " --locale=LOCALE set default locale for new databases\n" msgstr "" -" --locale=LOCALE imposta la codifica predefinita per i nuovi\n" +" --locale=LOCALE imposta il locale predefinito per i nuovi\n" " database\n" -#: initdb.c:2386 +#: initdb.c:2467 #, c-format msgid "" " --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n" @@ -376,50 +396,50 @@ msgid "" " 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" -" --lc-monetary, --lc-numeric, --lc-time=LOCALE\n" -" inizializza il nuovo database cluster con il locale\n" -" specificato nella categoria corrispondente. Il\n" -" valore predefinito viene preso dalle variabili\n" +" --lc-collate, --lc-ctype, --lc-messages=LOCALE\n" +" --lc-monetary, --lc-numeric, --lc-time=LOCALE\n" +" inizializza il nuovo cluster di database con il\n" +" locale specificato nella categoria corrispondente.\n" +" Il valore predefinito viene preso dalle variabili\n" " d'ambiente\n" -#: initdb.c:2390 +#: initdb.c:2471 #, c-format msgid " --no-locale equivalent to --locale=C\n" -msgstr " --no-locale equivalente a --locale=C\n" +msgstr " --no-locale equivalente a --locale=C\n" -#: initdb.c:2391 +#: initdb.c:2472 #, c-format msgid " --pwfile=FILE read password for the new superuser from file\n" -msgstr " --pwfile=FILE legge la password per il nuovo superuser dal file\n" +msgstr " --pwfile=FILE leggi la password per il nuovo superutente dal file\n" -#: initdb.c:2392 +#: initdb.c:2473 #, c-format msgid "" " -T, --text-search-config=CFG\n" " default text search configuration\n" msgstr "" " -T, --text-search-config=CFG\n" -" configurazione prefedinita per la ricerca testi\n" +" configurazione predefinita per la ricerca di testo\n" -#: initdb.c:2394 +#: initdb.c:2475 #, c-format msgid " -U, --username=NAME database superuser name\n" -msgstr " -U, --username=NAME nome del superuser del database\n" +msgstr " -U, --username=NOME nome del superutente del database\n" -#: initdb.c:2395 +#: initdb.c:2476 #, c-format msgid " -W, --pwprompt prompt for a password for the new superuser\n" -msgstr " -W, --pwprompt richiede la password per il nuovo superuser\n" +msgstr " -W, --pwprompt richiedi la password per il nuovo superutente\n" -#: initdb.c:2396 +#: initdb.c:2477 #, 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:2397 +#: initdb.c:2478 #, c-format msgid "" "\n" @@ -428,27 +448,27 @@ msgstr "" "\n" "Opzioni utilizzate meno frequentemente:\n" -#: initdb.c:2398 +#: initdb.c:2479 #, c-format msgid " -d, --debug generate lots of debugging output\n" msgstr " -d, --debug genera molto output di debug\n" -#: initdb.c:2399 +#: initdb.c:2480 #, c-format msgid " -L DIRECTORY where to find the input files\n" msgstr " -L DIRECTORY dove trovare i file di input\n" -#: initdb.c:2400 +#: initdb.c:2481 #, c-format msgid " -n, --noclean do not clean up after errors\n" msgstr " -n, --noclean non ripulire dopo gli errori\n" -#: initdb.c:2401 +#: initdb.c:2482 #, c-format msgid " -s, --show show internal settings\n" msgstr " -s, --show mostra le impostazioni interne\n" -#: initdb.c:2402 +#: initdb.c:2483 #, c-format msgid "" "\n" @@ -457,17 +477,17 @@ msgstr "" "\n" "Altre opzioni:\n" -#: initdb.c:2403 +#: initdb.c:2484 #, c-format msgid " -?, --help show this help, then exit\n" -msgstr " -?, --help mostra questo aiuto, poi esce\n" +msgstr " -?, --help mostra questo aiuto ed esci\n" -#: initdb.c:2404 +#: initdb.c:2485 #, c-format msgid " -V, --version output version information, then exit\n" -msgstr " -V, --version mostra informazioni sulla versione, poi esce\n" +msgstr " -V, --version mostra informazioni sulla versione ed esci\n" -#: initdb.c:2405 +#: initdb.c:2486 #, c-format msgid "" "\n" @@ -478,45 +498,43 @@ msgstr "" "Se la directory dati non è specificata, viene usata la variabile\n" "d'ambiente PGDATA.\n" -#: initdb.c:2407 +#: initdb.c:2488 #, c-format msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" -"Segnalate i bachi a .\n" +"Puoi segnalare eventuali bug a .\n" -#: initdb.c:2512 +#: initdb.c:2594 #, c-format msgid "Running in debug mode.\n" msgstr "Esecuzione in modalità debug\n" -#: initdb.c:2516 +#: initdb.c:2598 #, c-format msgid "Running in noclean mode. Mistakes will not be cleaned up.\n" -msgstr "Esecuzione in modalità noclean. Gli errori non verrano puliti.\n" +msgstr "Esecuzione in modalità noclean. Gli errori non verranno ripuliti.\n" -#: initdb.c:2559 -#: initdb.c:2577 -#: initdb.c:2845 +#: initdb.c:2641 initdb.c:2659 initdb.c:2941 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Provate \"%s --help\" per maggiori informazioni.\n" +msgstr "Prova \"%s --help\" per maggiori informazioni.\n" -#: initdb.c:2575 +#: initdb.c:2657 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" -msgstr "%s: troppi parametri nella linea di comando (il primo è \"%s\")\n" +msgstr "%s: troppi argomenti nella riga di comando (il primo è \"%s\")\n" -#: initdb.c:2584 +#: initdb.c:2666 #, 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:2590 +#: initdb.c:2672 msgid "" "\n" "WARNING: enabling \"trust\" authentication for local connections\n" @@ -524,21 +542,21 @@ msgid "" "next time you run initdb.\n" msgstr "" "\n" -"ATTENZIONE: abilitazione dell'autenticazione \"trust\" per le connesioni\n" -"locali. E' possibile cambiare questa impostazione modificando il file\n" -"pg_hba.conf o utilizzando il flag -A alla prossima esecuzione di initdb.\n" +"ATTENZIONE: abilitazione dell'autenticazione \"trust\" per le connessioni\n" +"locali. È possibile cambiare questa impostazione modificando il file\n" +"pg_hba.conf o utilizzando l'opzione -A alla prossima esecuzione di initdb.\n" -#: initdb.c:2613 +#: initdb.c:2695 #, c-format msgid "%s: unrecognized authentication method \"%s\"\n" -msgstr "%s: metodo di autenticazione non riconosciuto \"%s\"\n" +msgstr "%s: metodo di autenticazione sconosciuto \"%s\"\n" -#: initdb.c:2623 +#: initdb.c:2705 #, c-format msgid "%s: must specify a password for the superuser to enable %s authentication\n" -msgstr "%s: è obbligatorio specificare una password per abilitare l'autenticazione %s del superuser\n" +msgstr "%s: occorre specificare una password per il superutente per abilitare l'autenticazione %s\n" -#: initdb.c:2638 +#: initdb.c:2734 #, c-format msgid "" "%s: no data directory specified\n" @@ -547,11 +565,11 @@ msgid "" "environment variable PGDATA.\n" msgstr "" "%s: nessuna directory dati specificati\n" -"E' necessario indicare la directory dove risiederanno i dati di questo\n" -"database. Fate questo invocando l'opzione -D o con la variabile globale\n" +"È necessario indicare la directory dove risiederanno i dati di questo\n" +"database. Puoi farlo usando l'opzione -D oppure la variabile globale\n" "PGDATA.\n" -#: initdb.c:2722 +#: initdb.c:2818 #, c-format msgid "" "The program \"postgres\" is needed by %s but was not found in the\n" @@ -560,25 +578,25 @@ msgid "" msgstr "" "Il programma \"postgres\" è richiesto da %s ma non è stato trovato\n" "nella stessa directory \"%s\".\n" -"Verificate l'installazione.\n" +"Verifica la correttezza dell'installazione.\n" -#: initdb.c:2729 +#: initdb.c:2825 #, c-format msgid "" "The program \"postgres\" was found by \"%s\"\n" "but was not the same version as %s.\n" "Check your installation.\n" msgstr "" -"Il programma \"postgres\" è stato trovato da \"%s\" ma non ha\n" -"la stessa versione \"%s\".\n" -"Verificate l'installazione.\n" +"Il programma \"postgres\" è stato trovato da \"%s\"\n" +"ma non ha la stessa versione di %s.\n" +"Verifica la correttezza dell'installazione.\n" -#: initdb.c:2748 +#: initdb.c:2844 #, c-format msgid "%s: input file location must be an absolute path\n" -msgstr "%s: la posizione del file di input deve essere un path assoluto\n" +msgstr "%s: la posizione del file di input deve essere un percorso assoluto\n" -#: initdb.c:2805 +#: initdb.c:2901 #, c-format msgid "" "The files belonging to this database system will be owned by user \"%s\".\n" @@ -589,12 +607,12 @@ msgstr "" "Questo utente deve inoltre possedere il processo server.\n" "\n" -#: initdb.c:2815 +#: initdb.c:2911 #, c-format msgid "The database cluster will be initialized with locale %s.\n" -msgstr "Il database cluster sarà inizializzato con il locale %s.\n" +msgstr "Il cluster di database sarà inizializzato con il locale %s.\n" -#: initdb.c:2818 +#: initdb.c:2914 #, c-format msgid "" "The database cluster will be initialized with locales\n" @@ -605,7 +623,7 @@ msgid "" " NUMERIC: %s\n" " TIME: %s\n" msgstr "" -"Il database cluster sarà inizializzato con i locale\n" +"Il cluster di database sarà inizializzato con i locale\n" " COLLATE: %s\n" " CTYPE: %s\n" " MESSAGES: %s\n" @@ -613,128 +631,132 @@ msgstr "" " NUMERIC: %s\n" " TIME: %s\n" -#: initdb.c:2842 +#: initdb.c:2938 #, c-format msgid "%s: could not find suitable encoding for locale %s\n" -msgstr "%s: impossibile determinare una codifica adeguata per il locale %s\n" +msgstr "%s: non è stato possibile determinare una codifica adeguata per il locale %s\n" -#: initdb.c:2844 +#: initdb.c:2940 #, c-format msgid "Rerun %s with the -E option.\n" -msgstr "Rieseguite %s con l'opzione -E .\n" +msgstr "Esegui di nuovo %s con l'opzione -E.\n" + +#: initdb.c:2953 +#, 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 "" +"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:2853 +#: initdb.c:2961 #, 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:2856 +#: initdb.c:2964 #, c-format msgid "" "Encoding %s is not allowed as a server-side encoding.\n" "Rerun %s with a different locale selection.\n" msgstr "" -"La codifica %s non è disponibile come codifica server-side.\n" -"Rieseguite %s con un locale diverso.\n" +"La codifica %s non è disponibile come codifica lato server.\n" +"Esegui di nuovo %s con un locale diverso.\n" -#: initdb.c:2864 +#: initdb.c:2973 #, 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:2881 +#: initdb.c:2990 #, c-format msgid "%s: could not find suitable text search configuration for locale %s\n" -msgstr "%s: impossibile trovare una configurazione per la ricerca testo per il locale %s\n" +msgstr "%s: non è stato possibile trovare una configurazione per la ricerca testo adeguata al locale %s\n" -#: initdb.c:2892 +#: initdb.c:3001 #, c-format msgid "%s: warning: suitable text search configuration for locale %s is unknown\n" -msgstr "%s: attenzione: la configurazione adeguata per la ricerca testo per il locale %s non è conosciuta\n" +msgstr "%s: attenzione: non si conosce una configurazione per la ricerca testo adeguata al locale %s\n" -#: initdb.c:2897 +#: initdb.c:3006 #, c-format msgid "%s: warning: specified text search configuration \"%s\" might not match locale %s\n" msgstr "" "%s: attenzione: la configurazione specificata per la ricerca testo \"%s\"\n" -" non corrisponde al locale %s\n" +"potrebbe non corrispondere al locale %s\n" -#: initdb.c:2902 +#: initdb.c:3011 #, c-format msgid "The default text search configuration will be set to \"%s\".\n" msgstr "La configurazione predefinita di ricerca testo sarà impostata a \"%s\".\n" -#: initdb.c:2936 -#: initdb.c:3003 +#: initdb.c:3045 initdb.c:3112 #, c-format msgid "creating directory %s ... " msgstr "creazione della directory %s ... " -#: initdb.c:2950 -#: initdb.c:3020 +#: initdb.c:3059 initdb.c:3130 #, c-format msgid "fixing permissions on existing directory %s ... " -msgstr "correggo i permessi sulla directory esistente %s ... " +msgstr "correzione dei permessi sulla directory esistente %s ... " -#: initdb.c:2956 -#: initdb.c:3026 +#: initdb.c:3065 initdb.c:3136 #, c-format msgid "%s: could not change permissions of directory \"%s\": %s\n" -msgstr "%s: impossibile cambiare i permessi di accesso della directory \"%s\": %s\n" +msgstr "%s: modifica dei permessi della directory \"%s\" fallita: %s\n" -#: initdb.c:2969 -#: initdb.c:3038 +#: initdb.c:3078 initdb.c:3149 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: la directory \"%s\" esiste ma non è vuota\n" -#: initdb.c:2972 +#: initdb.c:3081 #, c-format msgid "" "If you want to create a new database system, either remove or empty\n" "the directory \"%s\" or run %s\n" "with an argument other than \"%s\".\n" msgstr "" -"Se volete creare un nuovo sistema di database, cancellate o svuotate\n" -"la directory \"%s\" o eseguite %s\n" +"Se vuoi creare un nuovo sistema di database, elimina o svuota\n" +"la directory \"%s\" oppure esegui %s\n" "con un argomento diverso da \"%s\".\n" -#: initdb.c:2980 -#: initdb.c:3048 +#: initdb.c:3089 initdb.c:3159 #, c-format msgid "%s: could not access directory \"%s\": %s\n" -msgstr "%s: impossibile accedere alla directory \"%s\": %s\n" +msgstr "%s: accesso alla directory \"%s\" fallito: %s\n" -#: initdb.c:2994 +#: initdb.c:3103 #, 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 path assoluto\n" +msgstr "%s: la directory dei log delle transazioni deve essere un percorso assoluto\n" -#: initdb.c:3041 +#: initdb.c:3152 #, c-format msgid "" "If you want to store the transaction log there, either\n" "remove or empty the directory \"%s\".\n" msgstr "" -"Se volete salvare i log delle transazioni la', rimuovete\n" -"o svuotate la directory \"%s\".\n" +"Se vuoi salvare lì i log delle transazioni,\n" +"elimina oppure svuota la directory \"%s\".\n" -#: initdb.c:3060 +#: initdb.c:3171 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" -msgstr "%s: impossibile creare il link simbolico \"%s\": %s\n" +msgstr "%s: creazione del link simbolico \"%s\" fallita: %s\n" -#: initdb.c:3065 +#: initdb.c:3176 #, c-format msgid "%s: symlinks are not supported on this platform" msgstr "%s: i link simbolici non sono supportati su questa piattaforma" -#: initdb.c:3071 +#: initdb.c:3182 #, c-format msgid "creating subdirectories ... " -msgstr "creazione delle sottodirectory ... " +msgstr "creazione delle sottodirectory ... " -#: initdb.c:3135 +#: initdb.c:3248 #, c-format msgid "" "\n" @@ -746,16 +768,14 @@ msgid "" "\n" msgstr "" "\n" -"Successo. Ora si può attivare il database server con:\n" +"Successo. Ora puoi avviare il server database con:\n" "\n" " %s%s%spostgres%s -D %s%s%s\n" "oppure\n" " %s%s%spg_ctl%s -D %s%s%s -l logfile start\n" "\n" -#: ../../port/dirmod.c:75 -#: ../../port/dirmod.c:88 -#: ../../port/dirmod.c:101 +#: ../../port/dirmod.c:75 ../../port/dirmod.c:88 ../../port/dirmod.c:101 #, c-format msgid "out of memory\n" msgstr "memoria esaurita\n" @@ -763,35 +783,37 @@ msgstr "memoria esaurita\n" #: ../../port/dirmod.c:286 #, c-format msgid "could not set junction for \"%s\": %s\n" -msgstr "impossibile impostare la giunzione per \"%s\": %s\n" +msgstr "non è stato possibile impostare la giunzione per \"%s\": %s\n" -#: ../../port/dirmod.c:325 +#: ../../port/dirmod.c:361 +#, 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:443 #, c-format msgid "could not open directory \"%s\": %s\n" -msgstr "impossibile aprire la directory \"%s\": %s\n" +msgstr "apertura della directory \"%s\" fallita: %s\n" -#: ../../port/dirmod.c:362 +#: ../../port/dirmod.c:480 #, c-format msgid "could not read directory \"%s\": %s\n" -msgstr "impossibile leggere la directory \"%s\": %s\n" +msgstr "lettura della directory \"%s\" fallita: %s\n" -#: ../../port/dirmod.c:445 +#: ../../port/dirmod.c:563 #, c-format msgid "could not stat file or directory \"%s\": %s\n" -msgstr "impossibile rimuovere il file o la directory \"%s\": %s\n" +msgstr "non è stato possibile ottenere informazioni sul file o directory \"%s\": %s\n" -#: ../../port/dirmod.c:472 -#: ../../port/dirmod.c:489 +#: ../../port/dirmod.c:590 ../../port/dirmod.c:607 #, c-format msgid "could not remove file or directory \"%s\": %s\n" -msgstr "impossibile rimuovere il file o la directory \"%s\": %s\n" +msgstr "rimozione del file o directory \"%s\" fallita: %s\n" -#: ../../port/exec.c:125 -#: ../../port/exec.c:239 -#: ../../port/exec.c:282 +#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 #, c-format msgid "could not identify current directory: %s" -msgstr "impossibile identificare la directory corrente: %s" +msgstr "identificazione della directory corrente fallita: %s" #: ../../port/exec.c:144 #, c-format @@ -801,68 +823,44 @@ msgstr "binario non valido \"%s\"" #: ../../port/exec.c:193 #, c-format msgid "could not read binary \"%s\"" -msgstr "impossibile leggere il binario \"%s\"" +msgstr "lettura del binario \"%s\" fallita" #: ../../port/exec.c:200 #, c-format msgid "could not find a \"%s\" to execute" -msgstr "impossibile trovare un \"%s\" da eseguire" +msgstr "programma \"%s\" da eseguire non trovato" -#: ../../port/exec.c:255 -#: ../../port/exec.c:291 +#: ../../port/exec.c:255 ../../port/exec.c:291 #, c-format msgid "could not change directory to \"%s\"" -msgstr "impossibile cambiare directory in \"%s\"" +msgstr "spostamento nella directory \"%s\" fallito" #: ../../port/exec.c:270 #, c-format msgid "could not read symbolic link \"%s\"" -msgstr "impossibile leggere il link simbolico \"%s\"" +msgstr "lettura del link simbolico \"%s\" fallita" -#: ../../port/exec.c:516 +#: ../../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" -msgstr "il processo figlio è uscito con exit code %d" +msgstr "processo figlio uscito con codice di uscita %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" -msgstr "il processo figlio è stato terminato dall'eccezione 0x%X" +msgstr "processo figlio terminato da eccezione 0x%X" -#: ../../port/exec.c:529 +#: ../../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" -msgstr "il processo figlio terminato dal segnale %s" +msgstr "processo figlio terminato da segnale %s" -#: ../../port/exec.c:532 +#: ../../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" -msgstr "il processo figlio è stato terminato dal segnale %d" +msgstr "processo figlio terminato da segnale %d" -#: ../../port/exec.c:536 +#: ../../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" -msgstr "il processo figlio è uscito con lo stato non riconosciuto %d" - -#~ msgid "" -#~ "%s: The password file was not generated. Please report this problem.\n" -#~ msgstr "" -#~ "%s: Il file delle password non è stato generato. Segnalate questo " -#~ "problema.\n" - -#~ msgid "%s: could not determine valid short version string\n" -#~ msgstr "" -#~ "%s: impossibile determinare una versione corta della stringa valida\n" - -#~ msgid "" -#~ " --locale=LOCALE initialize database cluster with given " -#~ "locale\n" -#~ msgstr "" -#~ " --locale=LOCALE inizzializza il database cluster con il\n" -#~ "locale specificato\n" - -#~ msgid "%s: failed\n" -#~ msgstr "%s: fallito\n" - -#~ msgid "creating directory %s/%s ... " -#~ msgstr "creazione directory %s/%s ... " +msgstr "processo figlio uscito con stato non riconosciuto %d" diff --git a/src/bin/initdb/po/ja.po b/src/bin/initdb/po/ja.po index 708e1e0285..1afd0e94c5 100644 --- a/src/bin/initdb/po/ja.po +++ b/src/bin/initdb/po/ja.po @@ -2,92 +2,93 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.0.0rc1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-07-20 12:52+0900\n" -"PO-Revision-Date: 2010-09-25 00:58+0300\n" +"POT-Creation-Date: 2011-06-14 21:24+0900\n" +"PO-Revision-Date: 2011-08-30 21:25+0900\n" "Last-Translator: HOTTA Michihide \n" "Language-Team: jpug-doc \n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: initdb.c:254 initdb.c:268 +#: initdb.c:260 initdb.c:274 #, c-format msgid "%s: out of memory\n" msgstr "%s: メモリ不足です\n" -#: initdb.c:377 initdb.c:1432 +#: initdb.c:383 initdb.c:1289 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: 読み取り用のファイル\"%s\"をオープンできませんでした:%s\n" -#: initdb.c:433 initdb.c:956 initdb.c:985 +#: initdb.c:439 initdb.c:805 initdb.c:834 #, c-format msgid "%s: could not open file \"%s\" for writing: %s\n" msgstr "%s:書き込み用のファイル\"%s\"をオープンできませんでした: %s\n" -#: initdb.c:441 initdb.c:449 initdb.c:963 initdb.c:991 +#: initdb.c:447 initdb.c:455 initdb.c:812 initdb.c:840 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s:ファイル\"%s\"の書き込みに失敗しました: %s\n" -#: initdb.c:468 +#: initdb.c:474 #, c-format msgid "%s: could not execute command \"%s\": %s\n" msgstr "%s: コマンド\"%s\"の実効に失敗しました: %s\n" -#: initdb.c:588 +#: initdb.c:490 #, c-format msgid "%s: removing data directory \"%s\"\n" -msgstr "%s: データディレクトリ\"%s\"の削除を削除しています\n" +msgstr "%s: データディレクトリ\"%s\"を削除しています\n" -#: initdb.c:591 +#: initdb.c:493 #, c-format msgid "%s: failed to remove data directory\n" msgstr "%s: データディレクトリの削除に失敗しました\n" -#: initdb.c:597 +#: initdb.c:499 #, c-format msgid "%s: removing contents of data directory \"%s\"\n" msgstr "%s: データディレクトリ\"%s\"の内容を削除しています\n" -#: initdb.c:600 +#: initdb.c:502 #, c-format msgid "%s: failed to remove contents of data directory\n" msgstr "%s: データディレクトリの内容の削除に失敗しました\n" -#: initdb.c:606 +#: initdb.c:508 #, c-format msgid "%s: removing transaction log directory \"%s\"\n" msgstr "%s: トランザクションログディレクトリ\"%s\"を削除しています\n" -#: initdb.c:609 +#: initdb.c:511 #, c-format msgid "%s: failed to remove transaction log directory\n" msgstr "%s: トランザクションログディレクトリの削除に失敗しました\n" -#: initdb.c:615 +#: initdb.c:517 #, c-format msgid "%s: removing contents of transaction log directory \"%s\"\n" msgstr "%s: トランザクションログディレクトリ\"%s\"の内容を削除しています\n" -#: initdb.c:618 +#: initdb.c:520 #, c-format msgid "%s: failed to remove contents of transaction log directory\n" msgstr "%s: トランザクションログディレクトリの内容の削除に失敗しました\n" -#: initdb.c:627 +#: initdb.c:529 #, c-format msgid "%s: data directory \"%s\" not removed at user's request\n" msgstr "%s: ユーザが要求したデータディレクトリ\"%s\"を削除しません\n" -#: initdb.c:632 +#: initdb.c:534 #, c-format msgid "%s: transaction log directory \"%s\" not removed at user's request\n" msgstr "" "%s: ユーザが要求したトランザクションログディレクトリ\"%s\"を削除しません\n" -#: initdb.c:654 +#: initdb.c:556 #, c-format msgid "" "%s: cannot be run as root\n" @@ -98,32 +99,32 @@ msgstr "" "サーバプロセスの所有者となる(非特権)ユーザとして(例えば\"su\"を使用して)ログ" "インしてください。\n" -#: initdb.c:666 +#: initdb.c:568 #, c-format msgid "%s: could not obtain information about current user: %s\n" msgstr "%s: 現在のユーザに関する情報を得ることができませんでした: %s\n" -#: initdb.c:683 +#: initdb.c:585 #, c-format msgid "%s: could not get current user name: %s\n" msgstr "%s: 現在のユーザ名を得ることができませんでした: %s\n" -#: initdb.c:714 +#: initdb.c:616 #, c-format msgid "%s: \"%s\" is not a valid server encoding name\n" msgstr "%s: \"%s\" は無効なサーバ符号化方式名です。\n" -#: initdb.c:876 initdb.c:3009 +#: initdb.c:725 initdb.c:3173 #, c-format msgid "%s: could not create directory \"%s\": %s\n" msgstr "%s: ディレクトリ\"%s\"を作成できませんでした。: %s\n" -#: initdb.c:906 +#: initdb.c:755 #, c-format msgid "%s: file \"%s\" does not exist\n" msgstr "%s: ファイル\"%s\"がありません\n" -#: initdb.c:908 initdb.c:917 initdb.c:927 +#: initdb.c:757 initdb.c:766 initdb.c:776 #, c-format msgid "" "This might mean you have a corrupted installation or identified\n" @@ -132,36 +133,36 @@ msgstr "" "インストレーションが破損しているか-Lオプションで指定したディ\n" "レクトリが間違っているかを意味する可能性があります。\n" -#: initdb.c:914 +#: initdb.c:763 #, c-format msgid "%s: could not access file \"%s\": %s\n" msgstr "%s: ファイル\"%s\"にアクセスできませんでした: %s\n" -#: initdb.c:925 +#: initdb.c:774 #, c-format msgid "%s: file \"%s\" is not a regular file\n" msgstr "%s: \"%s\" は通常のファイルではありません\n" -#: initdb.c:1033 +#: initdb.c:882 #, c-format msgid "selecting default max_connections ... " msgstr "デフォルトのmax_connectionsを選択しています ... " -#: initdb.c:1062 +#: initdb.c:911 #, c-format msgid "selecting default shared_buffers ... " msgstr "デフォルトの shared_buffers を選択しています ... " -#: initdb.c:1105 +#: initdb.c:954 msgid "creating configuration files ... " msgstr "設定ファイルを作成しています ... " -#: initdb.c:1272 +#: initdb.c:1129 #, c-format msgid "creating template1 database in %s/base/1 ... " msgstr "%s/base/1にtemplate1データベースを作成しています ... " -#: initdb.c:1288 +#: initdb.c:1145 #, c-format msgid "" "%s: input file \"%s\" does not belong to PostgreSQL %s\n" @@ -171,104 +172,133 @@ msgstr "" "インストレーションを検査し、-Lオプションを使用して正しいパスを指定してくださ" "い。\n" -#: initdb.c:1373 +#: initdb.c:1230 msgid "initializing pg_authid ... " msgstr "pg_authidを初期化しています ... " -#: initdb.c:1407 +#: initdb.c:1264 msgid "Enter new superuser password: " msgstr "新しいスーパーユーザのパスワードを入力してください:" -#: initdb.c:1408 +#: initdb.c:1265 msgid "Enter it again: " msgstr "再入力してください:" -#: initdb.c:1411 +#: initdb.c:1268 #, c-format msgid "Passwords didn't match.\n" msgstr "パスワードが一致しません。\n" -#: initdb.c:1438 +#: initdb.c:1295 #, c-format msgid "%s: could not read password from file \"%s\": %s\n" msgstr "" "%s: ファイル\"%s\"からパスワードを読み取ることができませんでした。: %s\n" -#: initdb.c:1451 +#: initdb.c:1308 #, c-format msgid "setting password ... " msgstr "パスワードを設定しています ... " -#: initdb.c:1549 +#: initdb.c:1408 msgid "initializing dependencies ... " msgstr "依存関係を初期化しています ... " -#: initdb.c:1577 +#: initdb.c:1436 msgid "creating system views ... " msgstr "システムビューを作成しています ... " -#: initdb.c:1613 +#: initdb.c:1472 msgid "loading system objects' descriptions ... " msgstr "システムオブジェクトの定義をロードしています ... " -#: initdb.c:1665 +#: initdb.c:1578 +msgid "creating collations ... " +msgstr "照合順序を作成しています ... " + +#: initdb.c:1611 +#, c-format +msgid "%s: locale name too long, skipped: %s\n" +msgstr "%s: ロケール名が長過ぎますので飛ばします: %s\n" + +#: initdb.c:1636 +#, c-format +msgid "%s: locale name has non-ASCII characters, skipped: %s\n" +msgstr "%s: ロケール名に非ASCII文字がありますので飛ばします: %s\n" + +#: initdb.c:1699 +#, c-format +msgid "No usable system locales were found.\n" +msgstr "使用できるシステムロケールが見つかりません\n" + +#: initdb.c:1700 +#, c-format +msgid "Use the option \"--debug\" to see details.\n" +msgstr "詳細を確認するためには\"--debug\"オプションを使用してください。\n" + +#: initdb.c:1703 +#, c-format +msgid "not supported on this platform\n" +msgstr "このプラットフォームではサポートされません\n" + +#: initdb.c:1718 msgid "creating conversions ... " msgstr "変換を作成しています ... " -#: initdb.c:1700 +#: initdb.c:1753 msgid "creating dictionaries ... " msgstr "ディレクトリを作成しています ... " -#: initdb.c:1754 +#: initdb.c:1807 msgid "setting privileges on built-in objects ... " msgstr "組み込みオブジェクトに権限を設定しています ... " -#: initdb.c:1812 +#: initdb.c:1865 msgid "creating information schema ... " msgstr "情報スキーマを作成しています ... " -#: initdb.c:1868 +#: initdb.c:1921 msgid "loading PL/pgSQL server-side language ... " msgstr "PL/pgSQL サーバサイド言語をロードしています ... " -#: initdb.c:1893 +#: initdb.c:1946 msgid "vacuuming database template1 ... " msgstr "template1データベースをバキュームしています ... " -#: initdb.c:1947 +#: initdb.c:2002 msgid "copying template1 to template0 ... " msgstr "template1からtemplate0へコピーしています ... " -#: initdb.c:1978 +#: initdb.c:2034 msgid "copying template1 to postgres ... " msgstr "template1からpostgresへコピーしています ... " -#: initdb.c:2035 +#: initdb.c:2091 #, c-format msgid "caught signal\n" msgstr "シグナルが発生しました\n" -#: initdb.c:2041 +#: initdb.c:2097 #, c-format msgid "could not write to child process: %s\n" msgstr "子プロセスへの書き込みができませんでした: %s\n" -#: initdb.c:2049 +#: initdb.c:2105 #, c-format msgid "ok\n" msgstr "ok\n" -#: initdb.c:2169 +#: initdb.c:2225 #, c-format msgid "%s: invalid locale name \"%s\"\n" -msgstr "\"%s: ロケール名\"%s\"は無効です。\n" +msgstr "%s: ロケール名\"%s\"は無効です。\n" -#: initdb.c:2195 +#: initdb.c:2251 #, c-format msgid "%s: encoding mismatch\n" msgstr "%s: 符号化方式が合いません\n" -#: initdb.c:2197 +#: initdb.c:2253 #, c-format msgid "" "The encoding you selected (%s) and the encoding that the\n" @@ -278,28 +308,28 @@ msgid "" "or choose a matching combination.\n" msgstr "" "選択した符号化方式(%s)と選択したロケールが使用する符号化方式(%s)が\n" -"が合いません。これにより各種の文字列処理関数が不正な動作をする可能性が\n" +"合いません。これにより各種の文字列処理関数が不正な動作をする可能性が\n" "あります。明示的な符号化方式の指定を止めるか合致する組み合わせを\n" "選択して%sを再実行してください\n" -#: initdb.c:2378 +#: initdb.c:2514 #, c-format msgid "" "%s initializes a PostgreSQL database cluster.\n" "\n" msgstr "%sはPostgreSQLデータベースクラスタを初期化します。\n" -#: initdb.c:2379 +#: initdb.c:2515 #, c-format msgid "Usage:\n" msgstr "使用方法:\n" -#: initdb.c:2380 +#: initdb.c:2516 #, c-format msgid " %s [OPTION]... [DATADIR]\n" msgstr " %s [OPTION]... [DATADIR]\n" -#: initdb.c:2381 +#: initdb.c:2517 #, c-format msgid "" "\n" @@ -308,7 +338,7 @@ msgstr "" "\n" "オプション:\n" -#: initdb.c:2382 +#: initdb.c:2518 #, c-format msgid "" " -A, --auth=METHOD default authentication method for local " @@ -316,24 +346,24 @@ msgid "" msgstr "" " -A, --auth=METHOD ローカルな接続向けのデフォルトの認証方式です\n" -#: initdb.c:2383 +#: initdb.c:2519 #, c-format msgid " [-D, --pgdata=]DATADIR location for this database cluster\n" msgstr " [-D, --pgdata=]DATADIR データベースクラスタの場所です\n" -#: initdb.c:2384 +#: initdb.c:2520 #, c-format msgid " -E, --encoding=ENCODING set default encoding for new databases\n" msgstr "" " -E, --encoding=ENCODING 新規データベース用のデフォルトの符号化方式です\n" -#: initdb.c:2385 +#: initdb.c:2521 #, c-format msgid " --locale=LOCALE set default locale for new databases\n" msgstr "" " --locale=LOCALE 新しいデータベースのデフォルトロケールをセット\n" -#: initdb.c:2386 +#: initdb.c:2522 #, c-format msgid "" " --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n" @@ -348,12 +378,12 @@ msgstr "" " デフォルトロケールをセット(デフォルト値は\n" " 環境変数から選ばれます)\n" -#: initdb.c:2390 +#: initdb.c:2526 #, c-format msgid " --no-locale equivalent to --locale=C\n" msgstr " --no-locale --locale=C と同じです\n" -#: initdb.c:2391 +#: initdb.c:2527 #, c-format msgid "" " --pwfile=FILE read password for the new superuser from file\n" @@ -361,7 +391,7 @@ msgstr "" " --pwfile=ファイル名 新しいスーパーユーザのパスワードをファイルから読" "み込む\n" -#: initdb.c:2392 +#: initdb.c:2528 #, c-format msgid "" " -T, --text-search-config=CFG\n" @@ -370,12 +400,12 @@ msgstr "" " -T, --text-search-config=CFG\\\n" " デフォルトのテキスト検索設定です\n" -#: initdb.c:2394 +#: initdb.c:2530 #, c-format msgid " -U, --username=NAME database superuser name\n" msgstr " -U, --username=NAME データベーススーパーユーザの名前です\n" -#: initdb.c:2395 +#: initdb.c:2531 #, c-format msgid "" " -W, --pwprompt prompt for a password for the new superuser\n" @@ -383,14 +413,14 @@ msgstr "" " -W, --pwprompt 新規スーパーユーザに対してパスワード入力を促しま" "す\n" -#: initdb.c:2396 +#: initdb.c:2532 #, c-format msgid "" " -X, --xlogdir=XLOGDIR location for the transaction log directory\n" msgstr "" " -X, --xlogdir=XLOGDIR トランザクションログディレクトリの場所です\n" -#: initdb.c:2397 +#: initdb.c:2533 #, c-format msgid "" "\n" @@ -399,27 +429,27 @@ msgstr "" "\n" "使用頻度の低いオプション:\n" -#: initdb.c:2398 +#: initdb.c:2534 #, c-format msgid " -d, --debug generate lots of debugging output\n" msgstr " -d, --debug 多くのデバッグ用の出力を生成します\n" -#: initdb.c:2399 +#: initdb.c:2535 #, c-format msgid " -L DIRECTORY where to find the input files\n" msgstr " -L DIRECTORY 入力ファイルの場所を指定します\n" -#: initdb.c:2400 +#: initdb.c:2536 #, c-format msgid " -n, --noclean do not clean up after errors\n" msgstr " -n, --noclean エラー発生後の削除を行いません\n" -#: initdb.c:2401 +#: initdb.c:2537 #, c-format msgid " -s, --show show internal settings\n" msgstr " -s, --show 内部設定を表示します\n" -#: initdb.c:2402 +#: initdb.c:2538 #, c-format msgid "" "\n" @@ -428,17 +458,17 @@ msgstr "" "\n" "その他のオプション:\n" -#: initdb.c:2403 +#: initdb.c:2539 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help このヘルプを表示し、終了します\n" -#: initdb.c:2404 +#: initdb.c:2540 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version バージョン情報を表示し、終了します\n" -#: initdb.c:2405 +#: initdb.c:2541 #, c-format msgid "" "\n" @@ -448,7 +478,7 @@ msgstr "" "\n" "データディレクトリが指定されない場合、PGDATA環境変数が使用されます。\n" -#: initdb.c:2407 +#: initdb.c:2543 #, c-format msgid "" "\n" @@ -457,33 +487,33 @@ msgstr "" "\n" "不具合はまで報告してください。\n" -#: initdb.c:2512 +#: initdb.c:2649 #, c-format msgid "Running in debug mode.\n" msgstr "デバッグモードで実行しています。\n" -#: initdb.c:2516 +#: initdb.c:2653 #, c-format msgid "Running in noclean mode. Mistakes will not be cleaned up.\n" msgstr "" "削除を行わないモードで実行しています。失敗した場合でも削除されません。\n" -#: initdb.c:2559 initdb.c:2577 initdb.c:2845 +#: initdb.c:2696 initdb.c:2714 initdb.c:2996 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "詳細は\"%s --help\"を行ってください。\n" -#: initdb.c:2575 +#: initdb.c:2712 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: コマンドライン引数が多すぎます。(始めは\"%s\")\n" -#: initdb.c:2584 +#: initdb.c:2721 #, c-format msgid "%s: password prompt and password file cannot be specified together\n" msgstr "%s: パスワードプロンプトとパスワードファイルは同時に指定できません\n" -#: initdb.c:2590 +#: initdb.c:2727 msgid "" "\n" "WARNING: enabling \"trust\" authentication for local connections\n" @@ -495,19 +525,18 @@ msgstr "" "pg_hba.confを編集する、もしくは、次回initdbを実行する時に-Aオプショ\n" "ンを使用することで変更することができます。\n" -#: initdb.c:2613 +#: initdb.c:2750 #, c-format msgid "%s: unrecognized authentication method \"%s\"\n" msgstr "%s: \"%s\"は未知の認証方式です\n" -#: initdb.c:2623 +#: initdb.c:2760 #, c-format msgid "" "%s: must specify a password for the superuser to enable %s authentication\n" -msgstr "" -"\"%s: %s認証を有効にするためにスーパーユーザのパスワードを指定してください\n" +msgstr "%s: %s認証を有効にするためにスーパーユーザのパスワードを指定してください\n" -#: initdb.c:2638 +#: initdb.c:2789 #, c-format msgid "" "%s: no data directory specified\n" @@ -520,7 +549,7 @@ msgstr "" "ません。-Dオプションを付けて呼び出す、あるいは、PGDATA環境変数を使用する\n" "ことで指定することができます。\n" -#: initdb.c:2722 +#: initdb.c:2873 #, c-format msgid "" "The program \"postgres\" is needed by %s but was not found in the\n" @@ -531,7 +560,7 @@ msgstr "" "ませんでした。\n" "インストレーションを検査してください。\n" -#: initdb.c:2729 +#: initdb.c:2880 #, c-format msgid "" "The program \"postgres\" was found by \"%s\"\n" @@ -542,12 +571,12 @@ msgstr "" "はありませんでした。\n" "インストレーションを検査してください。\n" -#: initdb.c:2748 +#: initdb.c:2899 #, c-format msgid "%s: input file location must be an absolute path\n" msgstr "%s: 入力ファイルの場所は絶対パスでなければなりません\n" -#: initdb.c:2805 +#: initdb.c:2956 #, c-format msgid "" "The files belonging to this database system will be owned by user \"%s\".\n" @@ -558,12 +587,12 @@ msgstr "" "このユーザがサーバプロセスを所有しなければなりません。\n" "\n" -#: initdb.c:2815 +#: initdb.c:2966 #, c-format msgid "The database cluster will be initialized with locale %s.\n" msgstr "データベースクラスタはロケール%sで初期化されます。\n" -#: initdb.c:2818 +#: initdb.c:2969 #, c-format msgid "" "The database cluster will be initialized with locales\n" @@ -582,22 +611,31 @@ msgstr "" " NUMERIC: %s\n" " TIME: %s\n" -#: initdb.c:2842 +#: initdb.c:2993 #, c-format msgid "%s: could not find suitable encoding for locale %s\n" msgstr "%s: ロケール%s用に適切な符号化方式がありませんでした\n" -#: initdb.c:2844 +#: initdb.c:2995 #, c-format msgid "Rerun %s with the -E option.\n" msgstr "-Eオプションを付けて%sを再実行してください。\n" -#: initdb.c:2853 +#: initdb.c:3008 +#, 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 "" +"ロケールにより暗示される符号化方式%sはサーバ側の符号化方式として使用できません。\n" +"デフォルトのデータベース符号が方式は代わりに%sに設定されます。\n" + +#: initdb.c:3016 #, c-format msgid "%s: locale %s requires unsupported encoding %s\n" msgstr "%s: ロケール%sはサポートしない符号化方式%sを必要とします\n" -#: initdb.c:2856 +#: initdb.c:3019 #, c-format msgid "" "Encoding %s is not allowed as a server-side encoding.\n" @@ -606,23 +644,23 @@ msgstr "" "符号化方式%sはサーバ側の符号化方式として使用できません。\n" "別のロケールを選択して%sを再実行してください\n" -#: initdb.c:2864 +#: initdb.c:3028 #, c-format msgid "The default database encoding has accordingly been set to %s.\n" msgstr "デフォルトのデータベース符号化方式は%sに設定されました。\n" -#: initdb.c:2881 +#: initdb.c:3045 #, c-format msgid "%s: could not find suitable text search configuration for locale %s\n" msgstr "%s: ロケール\"%s\"用の適切なテキスト検索設定が見つかりません\n" -#: initdb.c:2892 +#: initdb.c:3056 #, c-format msgid "" "%s: warning: suitable text search configuration for locale %s is unknown\n" msgstr "%s:警告:ロケール%sに適したテキスト検索設定が不明です。\n" -#: initdb.c:2897 +#: initdb.c:3061 #, c-format msgid "" "%s: warning: specified text search configuration \"%s\" might not match " @@ -631,32 +669,32 @@ msgstr "" "%s:警告:指定したテキスト検索設定\"%s\"がロケール%sに合わない可能性\n" "があります\n" -#: initdb.c:2902 +#: initdb.c:3066 #, c-format msgid "The default text search configuration will be set to \"%s\".\n" msgstr "デフォルトのテキスト検索設定は%sに設定されました。\n" -#: initdb.c:2936 initdb.c:3003 +#: initdb.c:3100 initdb.c:3167 #, c-format msgid "creating directory %s ... " msgstr "ディレクトリ%sを作成しています ... " -#: initdb.c:2950 initdb.c:3020 +#: initdb.c:3114 initdb.c:3185 #, c-format msgid "fixing permissions on existing directory %s ... " msgstr "ディレクトリ%sの権限を設定しています ... " -#: initdb.c:2956 initdb.c:3026 +#: initdb.c:3120 initdb.c:3191 #, c-format msgid "%s: could not change permissions of directory \"%s\": %s\n" msgstr "%s: ディレクトリ\"%s\"の権限を変更できませんでした: %s\n" -#: initdb.c:2969 initdb.c:3038 +#: initdb.c:3133 initdb.c:3204 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: ディレクトリ\"%s\"は存在しますが、空ではありません\n" -#: initdb.c:2972 +#: initdb.c:3136 #, c-format msgid "" "If you want to create a new database system, either remove or empty\n" @@ -667,19 +705,19 @@ msgstr "" "を削除するか空にしてください。または、%sを\"%s\"以外の引数で実行して\n" "ください。\n" -#: initdb.c:2980 initdb.c:3048 +#: initdb.c:3144 initdb.c:3214 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: ディレクトリ\"%s\"にアクセスできませんでした: %s\n" -#: initdb.c:2994 +#: initdb.c:3158 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" msgstr "" "%s: トランザクションログのディレクトリの位置は、絶対パスでなければなりませ" "ん\n" -#: initdb.c:3041 +#: initdb.c:3207 #, c-format msgid "" "If you want to store the transaction log there, either\n" @@ -688,22 +726,22 @@ msgstr "" "そこにトランザクションログを格納したい場合はディレクトリ\"%s\"を削除するか\n" "空にしてください\n" -#: initdb.c:3060 +#: initdb.c:3226 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" msgstr "%s: シンボリックリンク\"%s\"を作成できませんでした: %s\n" -#: initdb.c:3065 +#: initdb.c:3231 #, c-format msgid "%s: symlinks are not supported on this platform" msgstr "%s: このプラットフォームでシンボリックリンクはサポートされていません" -#: initdb.c:3071 +#: initdb.c:3237 #, c-format msgid "creating subdirectories ... " msgstr "サブディレクトリを作成しています ... " -#: initdb.c:3135 +#: initdb.c:3303 #, c-format msgid "" "\n" @@ -732,23 +770,28 @@ msgstr "メモリ不足です\n" msgid "could not set junction for \"%s\": %s\n" msgstr "\"%s\"のjunctionを設定できませんでした: %s\n" -#: ../../port/dirmod.c:325 +#: ../../port/dirmod.c:361 +#, c-format +msgid "could not get junction for \"%s\": %s\n" +msgstr "\"%s\"のjunctionを入手できませんでした: %s\n" + +#: ../../port/dirmod.c:443 #, c-format msgid "could not open directory \"%s\": %s\n" msgstr "ディレクトリ\"%s\"をオープンできませんでした。: %s\n" -#: ../../port/dirmod.c:362 +#: ../../port/dirmod.c:480 #, c-format msgid "could not read directory \"%s\": %s\n" msgstr "ディレクトリ\"%s\"を読み取れませんでした。: %s\n" -#: ../../port/dirmod.c:445 +#: ../../port/dirmod.c:563 #, c-format msgid "could not stat file or directory \"%s\": %s\n" msgstr "" "\"%s\"というファイルまたはディレクトリの情報を取得できませんでした。: %s\n" -#: ../../port/dirmod.c:472 ../../port/dirmod.c:489 +#: ../../port/dirmod.c:590 ../../port/dirmod.c:607 #, c-format msgid "could not remove file or directory \"%s\": %s\n" msgstr "\"%s\"というファイルまたはディレクトリを削除できませんでした。: %s\n" @@ -783,27 +826,27 @@ msgstr "ディレクトリを\"%s\"に変更できませんでした" msgid "could not read symbolic link \"%s\"" msgstr "シンボリックリンク\"%s\"を読み取りできませんでした" -#: ../../port/exec.c:516 +#: ../../port/exec.c:517 #, c-format msgid "child process exited with exit code %d" msgstr "子プロセスが終了コード%dで終了しました" -#: ../../port/exec.c:520 +#: ../../port/exec.c:521 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "子プロセスが例外0x%Xで終了しました" -#: ../../port/exec.c:529 +#: ../../port/exec.c:530 #, c-format msgid "child process was terminated by signal %s" msgstr "子プロセスがシグナル%sで終了しました" -#: ../../port/exec.c:532 +#: ../../port/exec.c:533 #, c-format msgid "child process was terminated by signal %d" msgstr "子プロセスがシグナル%dで終了しました" -#: ../../port/exec.c:536 +#: ../../port/exec.c:537 #, c-format msgid "child process exited with unrecognized status %d" msgstr "子プロセスが未知のステータス%dで終了しました" diff --git a/src/bin/initdb/po/ko.po b/src/bin/initdb/po/ko.po index 65e5c06a89..45187e7ae0 100644 --- a/src/bin/initdb/po/ko.po +++ b/src/bin/initdb/po/ko.po @@ -9,6 +9,7 @@ msgstr "" "PO-Revision-Date: 2010-09-24 12:25-0400\n" "Last-Translator: EnterpriseDB translation team \n" "Language-Team: EnterpriseDB translation team \n" +"Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=euc-kr\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/initdb/po/pl.po b/src/bin/initdb/po/pl.po new file mode 100644 index 0000000000..5fc8e36540 --- /dev/null +++ b/src/bin/initdb/po/pl.po @@ -0,0 +1,887 @@ +# INITDB Translated Messages into the Polish Language +# Copyright (c) 2005 toczek, xxxtoczekxxx@wp.pl +# Distributed under the same licensing terms as PostgreSQL itself. +# Begina Felicysym , 2011. +msgid "" +msgstr "" +"Project-Id-Version: initdb (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-09-29 22:54+0000\n" +"PO-Revision-Date: 2011-09-30 09:51-0300\n" +"Last-Translator: Begina Felicysym \n" +"Language-Team: Begina Felicysym\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1-beta1\n" + +#: initdb.c:259 initdb.c:273 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: brak pamięci\n" + +#: initdb.c:382 initdb.c:1288 +#, 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:438 initdb.c:804 initdb.c:833 +#, 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:446 initdb.c:454 initdb.c:811 initdb.c:839 +#, c-format +msgid "%s: could not write file \"%s\": %s\n" +msgstr "%s: nie można zapisać pliku \"%s\": %s\n" + +#: initdb.c:473 +#, c-format +msgid "%s: could not execute command \"%s\": %s\n" +msgstr "%s: nie można wykonać komendy \"%s\": %s\n" + +#: initdb.c:489 +#, c-format +msgid "%s: removing data directory \"%s\"\n" +msgstr "%s: usuwanie katalogu danych \"%s\"\n" + +#: initdb.c:492 +#, c-format +msgid "%s: failed to remove data directory\n" +msgstr "%s: nie udało się usunięcie katalogu danych\n" + +#: initdb.c:498 +#, c-format +msgid "%s: removing contents of data directory \"%s\"\n" +msgstr "%s: usuwanie zawartości w katalogu danych \"%s\"\n" + +#: initdb.c:501 +#, 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:507 +#, c-format +msgid "%s: removing transaction log directory \"%s\"\n" +msgstr "%s: usuwanie katalogu dziennika transakcji \"%s\"\n" + +#: initdb.c:510 +#, 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:516 +#, c-format +msgid "%s: removing contents of transaction log directory \"%s\"\n" +msgstr "%s: usuwanie zawartości katalogu dziennika transakcji \"%s\"\n" + +#: initdb.c:519 +#, 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:528 +#, 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:533 +#, 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:555 +#, c-format +msgid "" +"%s: cannot be run as root\n" +"Please log in (using, e.g., \"su\") as the (unprivileged) user that will\n" +"own the server process.\n" +msgstr "" +"%s: nie można uruchomić jako root\n" +"Proszę zalogować się (używając np: \"su\") na (nieuprzywilejowanego) " +"użytkownika, który\n" +"będzie właścicielem procesu.\n" + +#: initdb.c:567 +#, 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:584 +#, 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:615 +#, c-format +msgid "%s: \"%s\" is not a valid server encoding name\n" +msgstr "%s: \"%s\" nie jest poprawną nazwą kodowania\n" + +#: initdb.c:724 initdb.c:3117 +#, c-format +msgid "%s: could not create directory \"%s\": %s\n" +msgstr "%s: nie można utworzyć katalogu \"%s\": %s\n" + +#: initdb.c:754 +#, c-format +msgid "%s: file \"%s\" does not exist\n" +msgstr "%s: plik \"%s\" nie istnieje\n" + +#: initdb.c:756 initdb.c:765 initdb.c:775 +#, c-format +msgid "" +"This might mean you have a corrupted installation or identified\n" +"the wrong directory with the invocation option -L.\n" +msgstr "" +"Oznacza to iż posiadasz uszkodzoną instalację lub wskazałeś\n" +"zły katalog przy użyciu opcji -L.\n" + +#: initdb.c:762 +#, 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:773 +#, c-format +msgid "%s: file \"%s\" is not a regular file\n" +msgstr "%s: plik \"%s\" nie jest zwykłym plikiem\n" + +#: initdb.c:881 +#, c-format +msgid "selecting default max_connections ... " +msgstr "wybieranie domyślnej wartości max_connections ... " + +#: initdb.c:910 +#, c-format +msgid "selecting default shared_buffers ... " +msgstr "wybieranie domyślnej wartości shared_buffers ... " + +#: initdb.c:953 +msgid "creating configuration files ... " +msgstr "tworzenie plików konfiguracyjnych ... " + +#: initdb.c:1128 +#, c-format +msgid "creating template1 database in %s/base/1 ... " +msgstr "tworzenie bazy template1 w folderze %s/base/1 ... " + +#: initdb.c:1144 +#, c-format +msgid "" +"%s: input file \"%s\" does not belong to PostgreSQL %s\n" +"Check your installation or specify the correct path using the option -L.\n" +msgstr "" +"%s: 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:1229 +msgid "initializing pg_authid ... " +msgstr "inicjowanie pg_authid ... " + +#: initdb.c:1263 +msgid "Enter new superuser password: " +msgstr "Podaj hasło superużytkownika: " + +#: initdb.c:1264 +msgid "Enter it again: " +msgstr "Powtórz podane hasło: " + +#: initdb.c:1267 +#, c-format +msgid "Passwords didn't match.\n" +msgstr "Podane hasła różnią się.\n" + +#: initdb.c:1294 +#, 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:1307 +#, c-format +msgid "setting password ... " +msgstr "ustawianie hasła ... " + +#: initdb.c:1407 +msgid "initializing dependencies ... " +msgstr "inicjowanie powiązań ... " + +#: initdb.c:1435 +msgid "creating system views ... " +msgstr "tworzenie widoków systemowych ... " + +#: initdb.c:1471 +msgid "loading system objects' descriptions ... " +msgstr "wczytywanie opisów obiektów systemowych ... " + +#: initdb.c:1577 +msgid "creating collations ... " +msgstr "tworzenie porównań ... " + +#: initdb.c:1610 +#, c-format +msgid "%s: locale name too long, skipped: %s\n" +msgstr "%s: nazwa lokalizacji zbyt długa, pominięto: %s\n" + +#: initdb.c:1635 +#, 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:1698 +#, c-format +msgid "No usable system locales were found.\n" +msgstr "" +"Nie znaleziono lokalizacji systemowej nadającej się do wykorzystania.\n" + +#: initdb.c:1699 +#, c-format +msgid "Use the option \"--debug\" to see details.\n" +msgstr "Użyj opcji \"--debug\" by zobaczyć szczegóły.\n" + +#: initdb.c:1702 +#, c-format +msgid "not supported on this platform\n" +msgstr "nieobsługiwane na tej platformie\n" + +#: initdb.c:1717 +msgid "creating conversions ... " +msgstr "tworzenie konwersji ... " + +#: initdb.c:1752 +msgid "creating dictionaries ... " +msgstr "tworzenie słowników ... " + +#: initdb.c:1806 +msgid "setting privileges on built-in objects ... " +msgstr "ustawianie uprawnień dla wbudowanych obiektów ... " + +#: initdb.c:1864 +msgid "creating information schema ... " +msgstr "tworzenie schematu informacyjnego ... " + +#: initdb.c:1920 +msgid "loading PL/pgSQL server-side language ... " +msgstr "pobieranie języka PL/pgSQL używanego po stronie serwera ... " + +#: initdb.c:1945 +msgid "vacuuming database template1 ... " +msgstr "odkurzanie bazy template1 ... " + +#: initdb.c:2001 +msgid "copying template1 to template0 ... " +msgstr "kopiowanie bazy template1 do bazy template0 ... " + +#: initdb.c:2033 +msgid "copying template1 to postgres ... " +msgstr "kopiowanie bazy template1 do bazy postgres ... " + +#: initdb.c:2090 +#, c-format +msgid "caught signal\n" +msgstr "sygnał otrzymany\n" + +#: initdb.c:2096 +#, c-format +msgid "could not write to child process: %s\n" +msgstr "nie można zapisać do procesu potomnego: %s\n" + +#: initdb.c:2104 +#, c-format +msgid "ok\n" +msgstr "ok\n" + +#: initdb.c:2224 +#, c-format +msgid "%s: invalid locale name \"%s\"\n" +msgstr "%s: błędna nazwa lokalizacji \"%s\"\n" + +#: initdb.c:2250 +#, c-format +msgid "%s: encoding mismatch\n" +msgstr "%s: niezgodność kodowania\n" + +#: initdb.c:2252 +#, c-format +msgid "" +"The encoding you selected (%s) and the encoding that the\n" +"selected locale uses (%s) do not match. This would lead to\n" +"misbehavior in various character string processing functions.\n" +"Rerun %s and either do not specify an encoding explicitly,\n" +"or choose a matching combination.\n" +msgstr "" +"Wybrane kodowanie (%s) i kodowanie używane przez\n" +"lokalizację (%s) nie zgadzają się. Może to prowadzić\n" +"do błędów w wielu funkcjach przetwarzających ciągi znaków.\n" +"Aby poprawić ten błąd uruchom ponownie %s i albo nie ustawiaj kodowania\n" +"albo wybierz pasującą kombinację.\n" + +#: initdb.c:2458 +#, c-format +msgid "" +"%s initializes a PostgreSQL database cluster.\n" +"\n" +msgstr "" +"%s inicjuje klaster bazy danych PostgreSQL.\n" +"\n" + +#: initdb.c:2459 +#, c-format +msgid "Usage:\n" +msgstr "Składnia:\n" + +#: initdb.c:2460 +#, c-format +msgid " %s [OPTION]... [DATADIR]\n" +msgstr " %s [OPCJA]... [KATALOG-DOCELOWY]\n" + +#: initdb.c:2461 +#, c-format +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Opcje:\n" + +#: initdb.c:2462 +#, 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:2463 +#, c-format +msgid " [-D, --pgdata=]DATADIR location for this database cluster\n" +msgstr " [-D, --pgdata=]KATALOG-DOCELOWY lokalizacja klastra bazy danych\n" + +#: initdb.c:2464 +#, 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:2465 +#, 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:2466 +#, 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" +" new databases (default taken from environment)\n" +msgstr "" +" --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n" +" --lc-monetary=, --lc-numeric=, --lc-time=LOCALE\n" +" ustawia domyślną lokalizację w odpowiedniej " +"kategorii\n" +" dla nowych baz danych (domyślnie pobierana ze " +"środowiska)\n" + +#: initdb.c:2470 +#, c-format +msgid " --no-locale equivalent to --locale=C\n" +msgstr " --no-locale równoważna z opcją --locale=C\n" + +#: initdb.c:2471 +#, 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:2472 +#, c-format +msgid "" +" -T, --text-search-config=CFG\n" +" default text search configuration\n" +msgstr "" +" -T, --text-search-config=CFG\n" +" domyślna konfiguracja wyszukiwania tekstowego\n" + +#: initdb.c:2474 +#, c-format +msgid " -U, --username=NAME database superuser name\n" +msgstr " -U, --username=NAZWA superużytkownik bazy danych\n" + +#: initdb.c:2475 +#, 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:2476 +#, c-format +msgid "" +" -X, --xlogdir=XLOGDIR location for the transaction log directory\n" +msgstr "" +" -X, --xlogdir=XLOGDIR umiejscowienie folderu dziennika transakcji\n" + +#: initdb.c:2477 +#, c-format +msgid "" +"\n" +"Less commonly used options:\n" +msgstr "" +"\n" +"Rzadziej używane opcje:\n" + +#: initdb.c:2478 +#, c-format +msgid " -d, --debug generate lots of debugging output\n" +msgstr " -d, --debug wyświetlanie informacji debugger'a\n" + +#: initdb.c:2479 +#, c-format +msgid " -L DIRECTORY where to find the input files\n" +msgstr " -L KATALOG gdzie szukać plików wejściowych\n" + +#: initdb.c:2480 +#, 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:2481 +#, c-format +msgid " -s, --show show internal settings\n" +msgstr " -s, --show pokaż wewnętrzne ustawienia\n" + +#: initdb.c:2482 +#, c-format +msgid "" +"\n" +"Other options:\n" +msgstr "" +"\n" +"Pozostałe opcje:\n" + +#: initdb.c:2483 +#, c-format +msgid " -?, --help show this help, then exit\n" +msgstr " -?, --help pokaż tą pomoc i zakończ działanie\n" + +#: initdb.c:2484 +#, c-format +msgid " -V, --version output version information, then exit\n" +msgstr " -V, --version pokaż informacje o wersji i zakończ\n" + +#: initdb.c:2485 +#, c-format +msgid "" +"\n" +"If the data directory is not specified, the environment variable PGDATA\n" +"is used.\n" +msgstr "" +"\n" +"Jeśli katalog nie jest wskazany wtedy używana jest zmienna PGDATA\n" +"do określenia tegoż katalogu.\n" + +#: initdb.c:2487 +#, c-format +msgid "" +"\n" +"Report bugs to .\n" +msgstr "" +"\n" +"Błędy proszę przesyłać na adres .\n" + +#: initdb.c:2593 +#, c-format +msgid "Running in debug mode.\n" +msgstr "Działanie w trybie debug.\n" + +#: initdb.c:2597 +#, 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:2640 initdb.c:2658 initdb.c:2940 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Spróbuj \"%s --help\" aby uzyskać więcej informacji.\n" + +#: initdb.c:2656 +#, 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:2665 +#, 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:2671 +msgid "" +"\n" +"WARNING: enabling \"trust\" authentication for local connections\n" +"You can change this by editing pg_hba.conf or using the -A option the\n" +"next time you run initdb.\n" +msgstr "" +"\n" +"UWAGA: metoda autoryzacji ustawiona jako \"trust\" dla połączeń.\n" +"Metodę autoryzacji możesz zmienić edytując plik pg_hba.conf\n" +"lub używając opcji -A przy uruchomieniu initdb.\n" + +#: initdb.c:2694 +#, c-format +msgid "%s: unrecognized authentication method \"%s\"\n" +msgstr "%s: nierozpoznany sposób autoryzacji \"%s\"\n" + +#: initdb.c:2704 +#, 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:2733 +#, c-format +msgid "" +"%s: no data directory specified\n" +"You must identify the directory where the data for this database system\n" +"will reside. Do this with either the invocation option -D or the\n" +"environment variable PGDATA.\n" +msgstr "" +"%s: nie ustawiony katalog danych\n" +"Musisz podać katalog gdzie dane bazy danych będą przechowywane.\n" +"Możesz tego dokonać używając opcję -D lub przy pomocy\n" +"zmiennej środowiskowej PGDATA.\n" + +#: initdb.c:2817 +#, c-format +msgid "" +"The program \"postgres\" is needed by %s but was not found in the\n" +"same directory as \"%s\".\n" +"Check your installation.\n" +msgstr "" +"Program \"postgres\" jest wymagany przez %s ale nie został znaleziony \n" +"w tym samym folderze co \"%s\".\n" +"Sprawdź instalację.\n" + +#: initdb.c:2824 +#, c-format +msgid "" +"The program \"postgres\" was found by \"%s\"\n" +"but was not the same version as %s.\n" +"Check your installation.\n" +msgstr "" +"Program \"postgres\" został znaleziony przez \"%s\"\n" +"ale nie jest w tej samej wersji co %s.\n" +"Sprawdź instalację.\n" + +#: initdb.c:2843 +#, 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:2900 +#, c-format +msgid "" +"The files belonging to this database system will be owned by user \"%s\".\n" +"This user must also own the server process.\n" +"\n" +msgstr "" +"Właścicielem plików należących do sytemu bazy danych będzie użytkownik \"%s" +"\".\n" +"Ten użytkownik musi jednocześnie być właścicielem procesu serwera.\n" +"\n" + +#: initdb.c:2910 +#, 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:2913 +#, c-format +msgid "" +"The database cluster will be initialized with locales\n" +" COLLATE: %s\n" +" CTYPE: %s\n" +" MESSAGES: %s\n" +" MONETARY: %s\n" +" NUMERIC: %s\n" +" TIME: %s\n" +msgstr "" +"Klaster bazy danych zostanie utworzony z zestawem reguł językowych\n" +" COLLATE: %s\n" +" CTYPE: %s\n" +" MESSAGES: %s\n" +" MONETARY: %s\n" +" NUMERIC: %s\n" +" TIME: %s\n" + +#: initdb.c:2937 +#, 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:2939 +#, c-format +msgid "Rerun %s with the -E option.\n" +msgstr "Włącz polecenie %s ponownie z opcją -E.\n" + +#: initdb.c:2952 +#, 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 "" +"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:2960 +#, c-format +msgid "%s: locale %s requires unsupported encoding %s\n" +msgstr "%s: lokalizacja %s wymaga nie wspieranego kodowania %s\n" + +#: initdb.c:2963 +#, c-format +msgid "" +"Encoding %s is not allowed as a server-side encoding.\n" +"Rerun %s with a different locale selection.\n" +msgstr "" +"Kodowanie %s jest niedozwolone jako kodowanie po stronie serwera.\n" +"Uruchom ponownie %s z wybraną inną lokalizacją.\n" + +#: initdb.c:2972 +#, 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:2989 +#, 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:3000 +#, 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:3005 +#, 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:3010 +#, 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:3044 initdb.c:3111 +#, c-format +msgid "creating directory %s ... " +msgstr "tworzenie katalogu %s ... " + +#: initdb.c:3058 initdb.c:3129 +#, c-format +msgid "fixing permissions on existing directory %s ... " +msgstr "ustalanie uprawnień katalogu %s ... " + +#: initdb.c:3064 initdb.c:3135 +#, 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:3077 initdb.c:3148 +#, c-format +msgid "%s: directory \"%s\" exists but is not empty\n" +msgstr "%s: folder \"%s\" nie jest pusty\n" + +#: initdb.c:3080 +#, c-format +msgid "" +"If you want to create a new database system, either remove or empty\n" +"the directory \"%s\" or run %s\n" +"with an argument other than \"%s\".\n" +msgstr "" +"Jeśli chcesz utworzyć nową bazę danych usuń lub wyczyść,\n" +"katalog \"%s\" lub uruchom program %s\n" +"z argumentem wskazującym katalog innym niż \"%s\".\n" + +#: initdb.c:3088 initdb.c:3158 +#, c-format +msgid "%s: could not access directory \"%s\": %s\n" +msgstr "%s: brak dostępu do katalogu \"%s\": %s\n" + +#: initdb.c:3102 +#, 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:3151 +#, c-format +msgid "" +"If you want to store the transaction log there, either\n" +"remove or empty the directory \"%s\".\n" +msgstr "" +"Jeśli chcesz tam przechowywać dziennik transakcji, albo\n" +"usuń albo wyczyść zawartość folderu \"%s\".\n" + +#: initdb.c:3170 +#, 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:3175 +#, c-format +msgid "%s: symlinks are not supported on this platform" +msgstr "%s: linki symb. nie są obsługiwane na tej platformie" + +#: initdb.c:3181 +#, c-format +msgid "creating subdirectories ... " +msgstr "tworzenie podkatalogów ... " + +#: initdb.c:3247 +#, c-format +msgid "" +"\n" +"Success. You can now start the database server using:\n" +"\n" +" %s%s%spostgres%s -D %s%s%s\n" +"or\n" +" %s%s%spg_ctl%s -D %s%s%s -l logfile start\n" +"\n" +msgstr "" +"\n" +"Sukces. Teraz możesz uruchomić serwer bazy danych używając:\n" +"\n" +" %s%s%spostgres%s -D %s%s%s\n" +"lub\n" +" %s%s%s%spg_ctl -D %s%s%s -l plik_z_logami start\n" +"\n" + +#: ../../port/dirmod.c:75 ../../port/dirmod.c:88 ../../port/dirmod.c:101 +#, c-format +msgid "out of memory\n" +msgstr "brak pamięci\n" + +#: ../../port/dirmod.c:286 +#, 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:361 +#, 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:443 +#, c-format +msgid "could not open directory \"%s\": %s\n" +msgstr "nie można otworzyć katalogu \"%s\": %s\n" + +#: ../../port/dirmod.c:480 +#, c-format +msgid "could not read directory \"%s\": %s\n" +msgstr "nie można czytać katalogu \"%s\": %s\n" + +#: ../../port/dirmod.c:563 +#, 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:590 ../../port/dirmod.c:607 +#, 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:125 ../../port/exec.c:239 ../../port/exec.c:282 +#, c-format +msgid "could not identify current directory: %s" +msgstr "nie można zidentyfikować aktualnego katalogu: %s" + +#: ../../port/exec.c:144 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "niepoprawny binarny \"%s\"" + +#: ../../port/exec.c:193 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "nie można odczytać binarnego \"%s\"" + +#: ../../port/exec.c:200 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "nie znaleziono \"%s\" do wykonania" + +#: ../../port/exec.c:255 ../../port/exec.c:291 +#, c-format +msgid "could not change directory to \"%s\"" +msgstr "nie można zmienić katalogu na \"%s\"" + +#: ../../port/exec.c:270 +#, c-format +msgid "could not read symbolic link \"%s\"" +msgstr "nie można odczytać odwołania symbolicznego \"%s\"" + +#: ../../port/exec.c:517 +#, c-format +msgid "child process exited with exit code %d" +msgstr "proces potomny zakończył działanie z kodem %d" + +#: ../../port/exec.c:521 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "proces potomny został zatrzymany przez wyjątek 0x%X" + +#: ../../port/exec.c:530 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "proces potomny został zatrzymany przez sygnał %s" + +#: ../../port/exec.c:533 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "proces potomny został zatrzymany przez sygnał %d" + +#: ../../port/exec.c:537 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "proces potomny zakończył działanie z nieznanym stanem %d" + +#~ msgid "" +#~ "%s: The password file was not generated. Please report this problem.\n" +#~ msgstr "" +#~ "%s: Plik z hasłem nie został stworzony. Proszę zgłosić ten problem.\n" + +#~ msgid "enabling unlimited row size for system tables ... " +#~ msgstr "" +#~ "umożliwienie nieskończonego rozmiaru wiersza w tabeli systemowej ... " + +#~ msgid "" +#~ " --locale=LOCALE initialize database cluster with given " +#~ "locale\n" +#~ msgstr "" +#~ " --locale=LOCALE\t\t\t przygotowanie klastra bazy danych z podanymi " +#~ "regułami językowymi\n" + +#~ msgid "%s: could not determine valid short version string\n" +#~ msgstr "%s: nie można ustalić poprawnego skróconego opisu wersji\n" + +#~ msgid "creating directory %s/%s ... " +#~ msgstr "tworzenie katalogu %s/%s ... " diff --git a/src/bin/initdb/po/pt_BR.po b/src/bin/initdb/po/pt_BR.po index e2bc1c49cc..ae32b97001 100644 --- a/src/bin/initdb/po/pt_BR.po +++ b/src/bin/initdb/po/pt_BR.po @@ -1,98 +1,99 @@ # 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-2010. +# Euler Taveira de Oliveira , 2003-2011. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-05-08 21:46-0300\n" +"POT-Creation-Date: 2011-09-06 04:53+0000\n" "PO-Revision-Date: 2010-09-25 00:45+0300\n" "Last-Translator: Euler Taveira de Oliveira \n" "Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: initdb.c:254 initdb.c:268 +#: initdb.c:259 initdb.c:273 #, c-format msgid "%s: out of memory\n" msgstr "%s: sem memória\n" -#: initdb.c:377 initdb.c:1432 +#: initdb.c:382 initdb.c:1288 #, 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:433 initdb.c:956 initdb.c:985 +#: initdb.c:438 initdb.c:804 initdb.c:833 #, 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:441 initdb.c:449 initdb.c:963 initdb.c:991 +#: initdb.c:446 initdb.c:454 initdb.c:811 initdb.c:839 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s: não pôde escrever arquivo \"%s\": %s\n" -#: initdb.c:468 +#: initdb.c:473 #, c-format msgid "%s: could not execute command \"%s\": %s\n" msgstr "%s: não pôde executar comando \"%s\": %s\n" -#: initdb.c:588 +#: initdb.c:489 #, c-format msgid "%s: removing data directory \"%s\"\n" msgstr "%s: removendo diretório de dados \"%s\"\n" -#: initdb.c:591 +#: initdb.c:492 #, c-format msgid "%s: failed to remove data directory\n" msgstr "%s: falhou ao remover diretório de dados\n" -#: initdb.c:597 +#: initdb.c:498 #, 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:600 +#: initdb.c:501 #, 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:606 +#: initdb.c:507 #, c-format msgid "%s: removing transaction log directory \"%s\"\n" msgstr "%s: removendo diretório do log de transação \"%s\"\n" -#: initdb.c:609 +#: initdb.c:510 #, 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:615 +#: initdb.c:516 #, 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:618 +#: initdb.c:519 #, 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:627 +#: initdb.c:528 #, 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:632 +#: initdb.c:533 #, 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:654 +#: initdb.c:555 #, c-format msgid "" "%s: cannot be run as root\n" @@ -104,32 +105,32 @@ msgstr "" "que será\n" "o dono do processo do servidor.\n" -#: initdb.c:666 +#: initdb.c:567 #, 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:683 +#: initdb.c:584 #, 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:714 +#: initdb.c:615 #, 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:876 initdb.c:3009 +#: initdb.c:724 initdb.c:3117 #, 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:906 +#: initdb.c:754 #, c-format msgid "%s: file \"%s\" does not exist\n" msgstr "%s: arquivo \"%s\" não existe\n" -#: initdb.c:908 initdb.c:917 initdb.c:927 +#: initdb.c:756 initdb.c:765 initdb.c:775 #, c-format msgid "" "This might mean you have a corrupted installation or identified\n" @@ -138,36 +139,36 @@ 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:914 +#: initdb.c:762 #, c-format msgid "%s: could not access file \"%s\": %s\n" msgstr "%s: não pôde acessar arquivo \"%s\": %s\n" -#: initdb.c:925 +#: initdb.c:773 #, c-format msgid "%s: file \"%s\" is not a regular file\n" msgstr "%s: arquivo \"%s\" não é um arquivo regular\n" -#: initdb.c:1033 +#: initdb.c:881 #, c-format msgid "selecting default max_connections ... " msgstr "selecionando max_connections padrão ... " -#: initdb.c:1062 +#: initdb.c:910 #, c-format msgid "selecting default shared_buffers ... " msgstr "selecionando shared_buffers padrão ... " -#: initdb.c:1105 +#: initdb.c:953 msgid "creating configuration files ... " msgstr "criando arquivos de configuração ... " -#: initdb.c:1272 +#: initdb.c:1128 #, c-format msgid "creating template1 database in %s/base/1 ... " msgstr "criando banco de dados template1 em %s/base/1 ... " -#: initdb.c:1288 +#: initdb.c:1144 #, c-format msgid "" "%s: input file \"%s\" does not belong to PostgreSQL %s\n" @@ -177,103 +178,133 @@ msgstr "" "Verifique sua instalação ou especifique o caminho correto utilizando a opção " "-L.\n" -#: initdb.c:1373 +#: initdb.c:1229 msgid "initializing pg_authid ... " msgstr "inicializando pg_authid ... " -#: initdb.c:1407 +#: initdb.c:1263 msgid "Enter new superuser password: " msgstr "Digite nova senha de super-usuário: " -#: initdb.c:1408 +#: initdb.c:1264 msgid "Enter it again: " msgstr "Digite-a novamente: " -#: initdb.c:1411 +#: initdb.c:1267 #, c-format msgid "Passwords didn't match.\n" msgstr "Senhas não correspondem.\n" -#: initdb.c:1438 +#: initdb.c:1294 #, 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:1451 +#: initdb.c:1307 #, c-format msgid "setting password ... " msgstr "definindo senha ... " -#: initdb.c:1549 +#: initdb.c:1407 msgid "initializing dependencies ... " msgstr "inicializando dependências ... " -#: initdb.c:1577 +#: initdb.c:1435 msgid "creating system views ... " msgstr "criando visões do sistema ... " -#: initdb.c:1613 +#: initdb.c:1471 msgid "loading system objects' descriptions ... " msgstr "carregando descrições de objetos do sistema ... " -#: initdb.c:1665 +#: initdb.c:1577 +msgid "creating collations ... " +msgstr "criando ordenações ... " + +#: initdb.c:1610 +#, 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:1635 +#, 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:1698 +#, c-format +msgid "No usable system locales were found.\n" +msgstr "Nenhuma configuração regional do sistema utilizável foi encontrada.\n" + +#: initdb.c:1699 +#, c-format +msgid "Use the option \"--debug\" to see details.\n" +msgstr "Utilize a opção \"--debug\" para obter detalhes.\n" + +#: initdb.c:1702 +#, c-format +msgid "not supported on this platform\n" +msgstr "não é suportado nessa plataforma\n" + +#: initdb.c:1717 msgid "creating conversions ... " msgstr "criando conversões ... " -#: initdb.c:1700 +#: initdb.c:1752 msgid "creating dictionaries ... " msgstr "criando dicionários ... " -#: initdb.c:1754 +#: initdb.c:1806 msgid "setting privileges on built-in objects ... " msgstr "definindo privilégios dos objetos embutidos ... " -#: initdb.c:1812 +#: initdb.c:1864 msgid "creating information schema ... " msgstr "criando esquema informação ... " -#: initdb.c:1868 +#: initdb.c:1920 msgid "loading PL/pgSQL server-side language ... " msgstr "carregando linguagem PL/pgSQL ... " -#: initdb.c:1893 +#: initdb.c:1945 msgid "vacuuming database template1 ... " msgstr "limpando banco de dados template1 ... " -#: initdb.c:1947 +#: initdb.c:2001 msgid "copying template1 to template0 ... " msgstr "copiando template1 para template0 ... " -#: initdb.c:1978 +#: initdb.c:2033 msgid "copying template1 to postgres ... " msgstr "copiando template1 para postgres ... " -#: initdb.c:2035 +#: initdb.c:2090 #, c-format msgid "caught signal\n" msgstr "sinal foi recebido\n" -#: initdb.c:2041 +#: initdb.c:2096 #, c-format msgid "could not write to child process: %s\n" msgstr "não pôde escrever em processo filho: %s\n" -#: initdb.c:2049 +#: initdb.c:2104 #, c-format msgid "ok\n" msgstr "ok\n" -#: initdb.c:2169 +#: initdb.c:2224 #, c-format msgid "%s: invalid locale name \"%s\"\n" msgstr "%s: nome de configuração regional \"%s\" é inválido\n" -#: initdb.c:2195 +#: initdb.c:2250 #, c-format msgid "%s: encoding mismatch\n" msgstr "%s: codificação não corresponde\n" -#: initdb.c:2197 +#: initdb.c:2252 #, c-format msgid "" "The encoding you selected (%s) and the encoding that the\n" @@ -290,7 +321,7 @@ msgstr "" "Execute novamente o %s e não especifique uma codificação explicitamente\n" "ou escolha uma outra combinação.\n" -#: initdb.c:2378 +#: initdb.c:2458 #, c-format msgid "" "%s initializes a PostgreSQL database cluster.\n" @@ -299,17 +330,17 @@ msgstr "" "%s inicializa um agrupamento de banco de dados PostgreSQL.\n" "\n" -#: initdb.c:2379 +#: initdb.c:2459 #, c-format msgid "Usage:\n" msgstr "Uso:\n" -#: initdb.c:2380 +#: initdb.c:2460 #, c-format msgid " %s [OPTION]... [DATADIR]\n" msgstr " %s [OPÇÃO]... [DIRDADOS]\n" -#: initdb.c:2381 +#: initdb.c:2461 #, c-format msgid "" "\n" @@ -318,7 +349,7 @@ msgstr "" "\n" "Opções:\n" -#: initdb.c:2382 +#: initdb.c:2462 #, c-format msgid "" " -A, --auth=METHOD default authentication method for local " @@ -327,27 +358,27 @@ msgstr "" " -A, --auth=MÉTODO método de autenticação padrão para conexões " "locais\n" -#: initdb.c:2383 +#: initdb.c:2463 #, 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:2384 +#: initdb.c:2464 #, 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:2385 +#: initdb.c:2465 #, 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:2386 +#: initdb.c:2466 #, c-format msgid "" " --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n" @@ -363,12 +394,12 @@ msgstr "" " para novos bancos de dados (o ambiente é " "assumido como padrão)\n" -#: initdb.c:2390 +#: initdb.c:2470 #, c-format msgid " --no-locale equivalent to --locale=C\n" msgstr " --no-locale equivalente a --locale=C\n" -#: initdb.c:2391 +#: initdb.c:2471 #, c-format msgid "" " --pwfile=FILE read password for the new superuser from file\n" @@ -376,7 +407,7 @@ msgstr "" " --pwfile=ARQUIVO lê senha do novo super-usuário a partir do " "arquivo\n" -#: initdb.c:2392 +#: initdb.c:2472 #, c-format msgid "" " -T, --text-search-config=CFG\n" @@ -385,25 +416,25 @@ msgstr "" " -T, --text-search-config=CFG\n" " configuração de busca textual padrão\n" -#: initdb.c:2394 +#: initdb.c:2474 #, 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:2395 +#: initdb.c:2475 #, 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:2396 +#: initdb.c:2476 #, 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:2397 +#: initdb.c:2477 #, c-format msgid "" "\n" @@ -412,27 +443,27 @@ msgstr "" "\n" "Opções utilizadas com menos frequência:\n" -#: initdb.c:2398 +#: initdb.c:2478 #, c-format msgid " -d, --debug generate lots of debugging output\n" msgstr " -d, --debug mostra saída da depuração\n" -#: initdb.c:2399 +#: initdb.c:2479 #, 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:2400 +#: initdb.c:2480 #, c-format msgid " -n, --noclean do not clean up after errors\n" msgstr " -n, --noclean não remove após erros\n" -#: initdb.c:2401 +#: initdb.c:2481 #, c-format msgid " -s, --show show internal settings\n" msgstr " -s, --show mostra definições internas\n" -#: initdb.c:2402 +#: initdb.c:2482 #, c-format msgid "" "\n" @@ -441,18 +472,18 @@ msgstr "" "\n" "Outras opções:\n" -#: initdb.c:2403 +#: initdb.c:2483 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help mostra essa ajuda e termina\n" -#: initdb.c:2404 +#: initdb.c:2484 #, 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:2405 +#: initdb.c:2485 #, c-format msgid "" "\n" @@ -463,7 +494,7 @@ msgstr "" "Se o diretório de dados não for especificado, a variável de ambiente PGDATA\n" "é utilizada.\n" -#: initdb.c:2407 +#: initdb.c:2487 #, c-format msgid "" "\n" @@ -472,34 +503,34 @@ msgstr "" "\n" "Relate erros a .\n" -#: initdb.c:2512 +#: initdb.c:2593 #, c-format msgid "Running in debug mode.\n" msgstr "Executando no modo de depuração.\n" -#: initdb.c:2516 +#: initdb.c:2597 #, 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:2559 initdb.c:2577 initdb.c:2845 +#: initdb.c:2640 initdb.c:2658 initdb.c:2940 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Tente \"%s --help\" para obter informações adicionais.\n" -#: initdb.c:2575 +#: initdb.c:2656 #, 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:2584 +#: initdb.c:2665 #, 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:2590 +#: initdb.c:2671 msgid "" "\n" "WARNING: enabling \"trust\" authentication for local connections\n" @@ -511,12 +542,12 @@ msgstr "" "Você pode mudá-lo editando o pg_hba.conf ou utilizando a opção -A na\n" "próxima vez que você executar o initdb.\n" -#: initdb.c:2613 +#: initdb.c:2694 #, c-format msgid "%s: unrecognized authentication method \"%s\"\n" msgstr "%s: método de autenticação desconhecido \"%s\"\n" -#: initdb.c:2623 +#: initdb.c:2704 #, c-format msgid "" "%s: must specify a password for the superuser to enable %s authentication\n" @@ -524,7 +555,7 @@ msgstr "" "%s: você precisa especificar uma senha para o super-usuário para habilitar a " "autenticação %s\n" -#: initdb.c:2638 +#: initdb.c:2733 #, c-format msgid "" "%s: no data directory specified\n" @@ -538,7 +569,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:2722 +#: initdb.c:2817 #, c-format msgid "" "The program \"postgres\" is needed by %s but was not found in the\n" @@ -549,7 +580,7 @@ msgstr "" "mesmo diretório que \"%s\".\n" "Verifique sua instalação.\n" -#: initdb.c:2729 +#: initdb.c:2824 #, c-format msgid "" "The program \"postgres\" was found by \"%s\"\n" @@ -560,12 +591,12 @@ msgstr "" "mas não tem a mesma versão que %s.\n" "Verifique sua instalação.\n" -#: initdb.c:2748 +#: initdb.c:2843 #, 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:2805 +#: initdb.c:2900 #, c-format msgid "" "The files belonging to this database system will be owned by user \"%s\".\n" @@ -576,14 +607,14 @@ msgstr "" "Esse usuário deve ser o dono do processo do servidor também.\n" "\n" -#: initdb.c:2815 +#: initdb.c:2910 #, 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" +"O agrupamento de banco de dados será inicializado com configuração regional " +"%s.\n" -#: initdb.c:2818 +#: initdb.c:2913 #, c-format msgid "" "The database cluster will be initialized with locales\n" @@ -603,24 +634,34 @@ msgstr "" " NUMERIC: %s\n" " TIME: %s\n" -#: initdb.c:2842 +#: initdb.c:2937 #, 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:2844 +#: initdb.c:2939 #, c-format msgid "Rerun %s with the -E option.\n" msgstr "Execute novamente %s com a opção -E.\n" -#: initdb.c:2853 +#: initdb.c:2952 +#, 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 "" +"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:2960 #, 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:2856 +#: initdb.c:2963 #, c-format msgid "" "Encoding %s is not allowed as a server-side encoding.\n" @@ -629,19 +670,19 @@ 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:2864 +#: initdb.c:2972 #, 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:2881 +#: initdb.c:2989 #, 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:2892 +#: initdb.c:3000 #, c-format msgid "" "%s: warning: suitable text search configuration for locale %s is unknown\n" @@ -649,7 +690,7 @@ msgstr "" "%s: aviso: configuração de busca textual ideal para configuração regional %s " "é desconhecida\n" -#: initdb.c:2897 +#: initdb.c:3005 #, c-format msgid "" "%s: warning: specified text search configuration \"%s\" might not match " @@ -658,32 +699,32 @@ msgstr "" "%s: aviso: configuração de busca textual especificada \"%s\" pode não " "corresponder a configuração regional %s\n" -#: initdb.c:2902 +#: initdb.c:3010 #, 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:2936 initdb.c:3003 +#: initdb.c:3044 initdb.c:3111 #, c-format msgid "creating directory %s ... " msgstr "criando diretório %s ... " -#: initdb.c:2950 initdb.c:3020 +#: initdb.c:3058 initdb.c:3129 #, c-format msgid "fixing permissions on existing directory %s ... " msgstr "alterando permissões no diretório existente %s ... " -#: initdb.c:2956 initdb.c:3026 +#: initdb.c:3064 initdb.c:3135 #, 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:2969 initdb.c:3038 +#: initdb.c:3077 initdb.c:3148 #, 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:2972 +#: initdb.c:3080 #, c-format msgid "" "If you want to create a new database system, either remove or empty\n" @@ -694,17 +735,17 @@ msgstr "" "o diretório \"%s\" ou execute %s\n" "com um argumento ao invés de \"%s\".\n" -#: initdb.c:2980 initdb.c:3048 +#: initdb.c:3088 initdb.c:3158 #, 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:2994 +#: initdb.c:3102 #, 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:3041 +#: initdb.c:3151 #, c-format msgid "" "If you want to store the transaction log there, either\n" @@ -713,22 +754,22 @@ msgstr "" "Se você quer armazenar o log de transação no mesmo, \n" "remova ou esvazie o diretório \"%s\".\n" -#: initdb.c:3060 +#: initdb.c:3170 #, 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:3065 +#: initdb.c:3175 #, 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:3071 +#: initdb.c:3181 #, c-format msgid "creating subdirectories ... " msgstr "criando subdiretórios ... " -#: initdb.c:3135 +#: initdb.c:3247 #, c-format msgid "" "\n" @@ -757,22 +798,27 @@ msgstr "sem memória\n" msgid "could not set junction for \"%s\": %s\n" msgstr "não pôde definir junção para \"%s\": %s\n" -#: ../../port/dirmod.c:325 +#: ../../port/dirmod.c:361 +#, 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:443 #, c-format msgid "could not open directory \"%s\": %s\n" msgstr "não pôde abrir diretório \"%s\": %s\n" -#: ../../port/dirmod.c:362 +#: ../../port/dirmod.c:480 #, c-format msgid "could not read directory \"%s\": %s\n" msgstr "não pôde ler diretório \"%s\": %s\n" -#: ../../port/dirmod.c:445 +#: ../../port/dirmod.c:563 #, 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:472 ../../port/dirmod.c:489 +#: ../../port/dirmod.c:590 ../../port/dirmod.c:607 #, 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" @@ -807,27 +853,27 @@ msgstr "não pôde mudar diretório para \"%s\"" msgid "could not read symbolic link \"%s\"" msgstr "não pôde ler link simbólico \"%s\"" -#: ../../port/exec.c:516 +#: ../../port/exec.c:517 #, c-format msgid "child process exited with exit code %d" msgstr "processo filho terminou com código de saída %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:521 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "processo filho foi terminado pela exceção 0x%X" -#: ../../port/exec.c:529 +#: ../../port/exec.c:530 #, c-format msgid "child process was terminated by signal %s" msgstr "processo filho foi terminado pelo sinal %s" -#: ../../port/exec.c:532 +#: ../../port/exec.c:533 #, c-format msgid "child process was terminated by signal %d" msgstr "processo filho foi terminado pelo sinal %d" -#: ../../port/exec.c:536 +#: ../../port/exec.c:537 #, c-format msgid "child process exited with unrecognized status %d" msgstr "processo filho terminou com status desconhecido %d" diff --git a/src/bin/initdb/po/ro.po b/src/bin/initdb/po/ro.po index 53fff76003..d1da82e6b5 100644 --- a/src/bin/initdb/po/ro.po +++ b/src/bin/initdb/po/ro.po @@ -5,100 +5,102 @@ msgid "" msgstr "" "Project-Id-Version: initdb-ro\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-09-02 17:59+0000\n" -"PO-Revision-Date: 2010-09-27 22:01-0000\n" -"Last-Translator: Max \n" -"Language-Team: Română \n" +"POT-Creation-Date: 2011-11-09 20:41+0000\n" +"PO-Revision-Date: 2011-11-22 11:44-0000\n" +"Last-Translator: Gheorge Rosca Codreanu \n" +"Language-Team: Română \n" +"Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.2\n" "X-Poedit-Language: Romanian\n" "X-Poedit-Country: ROMANIA\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n" -#: initdb.c:254 -#: initdb.c:268 +#: initdb.c:259 +#: initdb.c:273 #, c-format msgid "%s: out of memory\n" msgstr "%s: memorie insuficientă\n" -#: initdb.c:377 -#: initdb.c:1432 +#: initdb.c:382 +#: initdb.c:1288 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: imposibil de deschis fişierul \"%s\" pentru citire: %s\n" -#: initdb.c:433 -#: initdb.c:956 -#: initdb.c:985 +#: initdb.c:438 +#: initdb.c:804 +#: initdb.c:833 #, c-format msgid "%s: could not open file \"%s\" for writing: %s\n" msgstr "%s: imposibil de deschis fişierul \"%s\" pentru scriere: %s\n" -#: initdb.c:441 -#: initdb.c:449 -#: initdb.c:963 -#: initdb.c:991 +#: initdb.c:446 +#: initdb.c:454 +#: initdb.c:811 +#: initdb.c:839 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s: imposibil de scris fişierul \"%s\": %s\n" -#: initdb.c:468 +#: initdb.c:473 #, c-format msgid "%s: could not execute command \"%s\": %s\n" msgstr "%s: imposibil de executat comanda\"%s\": %s\n" -#: initdb.c:588 +#: initdb.c:489 #, c-format msgid "%s: removing data directory \"%s\"\n" msgstr "%s: eliminare director de date \"%s\"\n" -#: initdb.c:591 +#: initdb.c:492 #, c-format msgid "%s: failed to remove data directory\n" msgstr "%s: eliminare director de date eşuată\n" -#: initdb.c:597 +#: initdb.c:498 #, c-format msgid "%s: removing contents of data directory \"%s\"\n" msgstr "%s: eliminare conţinut al directorului de date \"%s\"\n" -#: initdb.c:600 +#: initdb.c:501 #, c-format msgid "%s: failed to remove contents of data directory\n" msgstr "%s: eliminare conţinut al directorului de date eşuată\n" -#: initdb.c:606 +#: initdb.c:507 #, c-format msgid "%s: removing transaction log directory \"%s\"\n" msgstr "%s: eliminare directorul jurnal de tranzacţii \"%s\"\n" -#: initdb.c:609 +#: initdb.c:510 #, c-format msgid "%s: failed to remove transaction log directory\n" msgstr "%s: eliminarea directorului fișierului jurnal de tranzacții a eșuat\n" -#: initdb.c:615 +#: initdb.c:516 #, c-format msgid "%s: removing contents of transaction log directory \"%s\"\n" msgstr "%s: eliminare conţinut al directorului jurnal de tranzacții \"%s\"\n" -#: initdb.c:618 +#: initdb.c:519 #, c-format msgid "%s: failed to remove contents of transaction log directory\n" msgstr "%s: eliminarea conţinutului directorului jurnal de tranzacți a eşuat\n" -#: initdb.c:627 +#: initdb.c:528 #, c-format msgid "%s: data directory \"%s\" not removed at user's request\n" msgstr "%s: directorul de date \"%s\" nu a fost eliminat la solicitarea utilizatorului\n" -#: initdb.c:632 +#: initdb.c:533 #, c-format msgid "%s: transaction log directory \"%s\" not removed at user's request\n" msgstr "%s: directorul jurnal de tranzacții \"%s\" nu a fost eliminat la solicitarea utilizatorului\n" -#: initdb.c:654 +#: initdb.c:555 #, c-format msgid "" "%s: cannot be run as root\n" @@ -109,35 +111,35 @@ msgstr "" "Autentificaţi-vă (folosind, de exempu, \"su\") ca utilizatorul (neprivilegiat)\n" "care va deţine procesul server.\n" -#: initdb.c:666 +#: initdb.c:567 #, c-format msgid "%s: could not obtain information about current user: %s\n" msgstr "%s: imposibil de obţinut informaţii despre utilizatorul curent: %s\n" -#: initdb.c:683 +#: initdb.c:584 #, c-format msgid "%s: could not get current user name: %s\n" msgstr "%s: imposibil de obţinut numele utilizatorului curent: %s\n" -#: initdb.c:714 +#: initdb.c:615 #, c-format msgid "%s: \"%s\" is not a valid server encoding name\n" msgstr "%s: \"%s\" nu este un nume valid de codificare pentru server\n" -#: initdb.c:876 -#: initdb.c:3009 +#: initdb.c:724 +#: initdb.c:3117 #, c-format msgid "%s: could not create directory \"%s\": %s\n" msgstr "%s: imposibil de creat directorul \"%s\": %s\n" -#: initdb.c:906 +#: initdb.c:754 #, c-format msgid "%s: file \"%s\" does not exist\n" msgstr "%s: fişierul \"%s\" nu există\n" -#: initdb.c:908 -#: initdb.c:917 -#: initdb.c:927 +#: initdb.c:756 +#: initdb.c:765 +#: initdb.c:775 #, c-format msgid "" "This might mean you have a corrupted installation or identified\n" @@ -146,36 +148,36 @@ msgstr "" "Acest lucru înseamnă că aveţi o instalare coruptă sau că aţi specificat\n" "un director greşit pentru opţiunea -L.\n" -#: initdb.c:914 +#: initdb.c:762 #, c-format msgid "%s: could not access file \"%s\": %s\n" msgstr "%s: imposibil de accesat fişierul \"%s\": %s\n" -#: initdb.c:925 +#: initdb.c:773 #, c-format msgid "%s: file \"%s\" is not a regular file\n" msgstr "%s: fişierul \"%s\" nu este un fișier obișnuit\n" -#: initdb.c:1033 +#: initdb.c:881 #, c-format msgid "selecting default max_connections ... " msgstr "selectare valoare implicită pentru max_connections ... " -#: initdb.c:1062 +#: initdb.c:910 #, c-format msgid "selecting default shared_buffers ... " msgstr "selectare valoare implicită pentru shared_buffers ... " -#: initdb.c:1105 +#: initdb.c:953 msgid "creating configuration files ... " msgstr "creare fişiere de configurare ... " -#: initdb.c:1272 +#: initdb.c:1128 #, c-format msgid "creating template1 database in %s/base/1 ... " msgstr "creare bază de date template1 în %s/base/1 ... " -#: initdb.c:1288 +#: initdb.c:1144 #, c-format msgid "" "%s: input file \"%s\" does not belong to PostgreSQL %s\n" @@ -184,103 +186,132 @@ msgstr "" "%s: fişierul de intrare \"%s\" nu aparţine de PostgreSQL %s\n" "Verificaţi instalarea sau specificaţi calea corectă folosind opţiunea -L.\n" -#: initdb.c:1373 +#: initdb.c:1229 msgid "initializing pg_authid ... " msgstr "iniţializare pg_authid ... " -#: initdb.c:1407 +#: initdb.c:1263 msgid "Enter new superuser password: " msgstr "Introduceţi noua parolă pentru utilizatorul privilegiat: " -#: initdb.c:1408 +#: initdb.c:1264 msgid "Enter it again: " msgstr "Introduceţi din nou: " -#: initdb.c:1411 +#: initdb.c:1267 #, c-format msgid "Passwords didn't match.\n" msgstr "Parola nu se verifică\n" -#: initdb.c:1438 +#: initdb.c:1294 #, c-format msgid "%s: could not read password from file \"%s\": %s\n" msgstr "%s: imposibil de citit parola din fişierul \"%s\": %s\n" -#: initdb.c:1451 +#: initdb.c:1307 #, c-format msgid "setting password ... " msgstr "setare parolă ... " -#: initdb.c:1549 +#: initdb.c:1407 msgid "initializing dependencies ... " msgstr "iniţializare dependinţe ... " -#: initdb.c:1577 +#: initdb.c:1435 msgid "creating system views ... " msgstr "creare vizualizări sistem ... " -#: initdb.c:1613 +#: initdb.c:1471 msgid "loading system objects' descriptions ... " msgstr "încărcare descrieri obiecte sistem ... " -#: initdb.c:1665 +#: initdb.c:1577 +msgid "creating collations ... " +msgstr "creare colaţionări ... " + +#: initdb.c:1610 +#, c-format +msgid "%s: locale name too long, skipped: %s\n" +msgstr "%s: numele localizării e prea lung, omis: %s\n" + +#: initdb.c:1635 +#, c-format +msgid "%s: locale name has non-ASCII characters, skipped: %s\n" +msgstr "%s: numele localizării are caractere non-ASCII, sunt omise: %s\n" + +#: initdb.c:1698 +#, c-format +msgid "No usable system locales were found.\n" +msgstr "Nu au fost găsite localizări sistem care să poată fi folosite.\n" + +#: initdb.c:1699 +#, c-format +msgid "Use the option \"--debug\" to see details.\n" +msgstr "Folosiţi opţiunea \"--debug\" pentru a vedea detalii.\n" + +#: initdb.c:1702 +#, c-format +msgid "not supported on this platform\n" +msgstr "nu este suportat pe această platformă\n" + +#: initdb.c:1717 msgid "creating conversions ... " msgstr "creare conversii ... " -#: initdb.c:1700 +#: initdb.c:1752 msgid "creating dictionaries ... " msgstr "creare dicționare ... " -#: initdb.c:1754 +#: initdb.c:1806 msgid "setting privileges on built-in objects ... " msgstr "setare privilegii pentru obiectele predefinite ... " -#: initdb.c:1812 +#: initdb.c:1864 msgid "creating information schema ... " msgstr "creare schemă de informaţii ... " -#: initdb.c:1868 +#: initdb.c:1920 msgid "loading PL/pgSQL server-side language ... " msgstr "încărcând limbajul server PL/pgSQL ... " -#: initdb.c:1893 +#: initdb.c:1945 msgid "vacuuming database template1 ... " msgstr "vidare bază de date template1 ... " -#: initdb.c:1947 +#: initdb.c:2001 msgid "copying template1 to template0 ... " msgstr "copiere template1 în template0 ... " -#: initdb.c:1978 +#: initdb.c:2033 msgid "copying template1 to postgres ... " msgstr "copiere template1 în postgres ... " -#: initdb.c:2035 +#: initdb.c:2090 #, c-format msgid "caught signal\n" msgstr "interceptare semnal\n" -#: initdb.c:2041 +#: initdb.c:2096 #, c-format msgid "could not write to child process: %s\n" msgstr "imposibil de scris în procesul fiu: %s\n" -#: initdb.c:2049 +#: initdb.c:2104 #, c-format msgid "ok\n" msgstr "ok\n" -#: initdb.c:2169 +#: initdb.c:2224 #, c-format msgid "%s: invalid locale name \"%s\"\n" msgstr "%s: nume de localizare incorect \"%s\"\n" -#: initdb.c:2195 +#: initdb.c:2250 #, c-format msgid "%s: encoding mismatch\n" msgstr "%s: nepotrivire de codificare\n" -#: initdb.c:2197 +#: initdb.c:2252 #, c-format msgid "" "The encoding you selected (%s) and the encoding that the\n" @@ -295,7 +326,7 @@ msgstr "" "rulaţi %s din nou şi fie nu specificaţi nici o codificare, fie selectaţi\n" "o combinaţie potrivită.\n" -#: initdb.c:2378 +#: initdb.c:2458 #, c-format msgid "" "%s initializes a PostgreSQL database cluster.\n" @@ -304,17 +335,17 @@ msgstr "" "%s iniţializează un grup de baze de date PostgreSQL.\n" "\n" -#: initdb.c:2379 +#: initdb.c:2459 #, c-format msgid "Usage:\n" msgstr "Utilizare:\n" -#: initdb.c:2380 +#: initdb.c:2460 #, c-format msgid " %s [OPTION]... [DATADIR]\n" msgstr " %s [OPŢIUNE]... [DIRDATE]\n" -#: initdb.c:2381 +#: initdb.c:2461 #, c-format msgid "" "\n" @@ -323,27 +354,27 @@ msgstr "" "\n" "Opţiuni:\n" -#: initdb.c:2382 +#: initdb.c:2462 #, c-format msgid " -A, --auth=METHOD default authentication method for local connections\n" msgstr " -A, --auth=METODĂ metoda de autentificare implicită pentru conexiunile locale\n" -#: initdb.c:2383 +#: initdb.c:2463 #, c-format msgid " [-D, --pgdata=]DATADIR location for this database cluster\n" msgstr " [-D, --pgdata=]DIRDATE locaţia pentru acest grup de baze de date\n" -#: initdb.c:2384 +#: initdb.c:2464 #, c-format msgid " -E, --encoding=ENCODING set default encoding for new databases\n" msgstr " -E, --encoding=CODIFICARE setează codificarea implicită pentru bazele de date noi\n" -#: initdb.c:2385 +#: initdb.c:2465 #, c-format msgid " --locale=LOCALE set default locale for new databases\n" msgstr " --locale=CODIFICARE setează codificarea implicită pentru bazele de date noi\n" -#: initdb.c:2386 +#: initdb.c:2466 #, c-format msgid "" " --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n" @@ -356,17 +387,17 @@ msgstr "" " setează localizarea pentru bazele de date noi\n" " în categoria predefinită (implicit, luată din mediu)\n" -#: initdb.c:2390 +#: initdb.c:2470 #, c-format msgid " --no-locale equivalent to --locale=C\n" msgstr " --no-locale echivalent cu --locale=C\n" -#: initdb.c:2391 +#: initdb.c:2471 #, c-format msgid " --pwfile=FILE read password for the new superuser from file\n" msgstr " --pwfile=FIȘIER citire parolă pentru noul utilizator privilegiat din fişier\n" -#: initdb.c:2392 +#: initdb.c:2472 #, c-format msgid "" " -T, --text-search-config=CFG\n" @@ -375,22 +406,22 @@ msgstr "" " -T, --text-search-config=CFG\n" " configurarea prestabilită pentru căutare text\n" -#: initdb.c:2394 +#: initdb.c:2474 #, c-format msgid " -U, --username=NAME database superuser name\n" msgstr " -U, --username=NUME nume utilizator privilegiat pentru baza de date\n" -#: initdb.c:2395 +#: initdb.c:2475 #, c-format msgid " -W, --pwprompt prompt for a password for the new superuser\n" msgstr " -W, --pwprompt solicitare parolă pentru noul utilizator privilegiat\n" -#: initdb.c:2396 +#: initdb.c:2476 #, c-format msgid " -X, --xlogdir=XLOGDIR location for the transaction log directory\n" msgstr " -X, --xlogdir=XLOGDIR locația directorului jurnal de tranzacții\n" -#: initdb.c:2397 +#: initdb.c:2477 #, c-format msgid "" "\n" @@ -399,27 +430,27 @@ msgstr "" "\n" "Opţiuni mai puţin folosite:\n" -#: initdb.c:2398 +#: initdb.c:2478 #, c-format msgid " -d, --debug generate lots of debugging output\n" msgstr " -d, --debug generează mesaje pentru depanare\n" -#: initdb.c:2399 +#: initdb.c:2479 #, c-format msgid " -L DIRECTORY where to find the input files\n" msgstr " -L DIRECTOR locaţia fişierele de intrare\n" -#: initdb.c:2400 +#: initdb.c:2480 #, c-format msgid " -n, --noclean do not clean up after errors\n" msgstr " -n, --noclean nu se face curat după erori\n" -#: initdb.c:2401 +#: initdb.c:2481 #, c-format msgid " -s, --show show internal settings\n" msgstr " -s, --show afişează setările interne\n" -#: initdb.c:2402 +#: initdb.c:2482 #, c-format msgid "" "\n" @@ -428,17 +459,17 @@ msgstr "" "\n" "Alte opţiuni:\n" -#: initdb.c:2403 +#: initdb.c:2483 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help afişează acest mesaj de ajutor, apoi iese\n" -#: initdb.c:2404 +#: initdb.c:2484 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version afişează informaţiile despre versiune, apoi iese\n" -#: initdb.c:2405 +#: initdb.c:2485 #, c-format msgid "" "\n" @@ -448,7 +479,7 @@ msgstr "" "\n" "Dacă nu este specificat directorul de date, este folosită variabila de mediu PGDATA.\n" -#: initdb.c:2407 +#: initdb.c:2487 #, c-format msgid "" "\n" @@ -457,34 +488,34 @@ msgstr "" "\n" "Raportaţi erorile la .\n" -#: initdb.c:2512 +#: initdb.c:2593 #, c-format msgid "Running in debug mode.\n" msgstr "Rulare în mod depanare.\n" -#: initdb.c:2516 +#: initdb.c:2597 #, c-format msgid "Running in noclean mode. Mistakes will not be cleaned up.\n" msgstr "Rulare în mod \"noclean\". Greşelile nu vor fi corectate.\n" -#: initdb.c:2559 -#: initdb.c:2577 -#: initdb.c:2845 +#: initdb.c:2640 +#: initdb.c:2658 +#: initdb.c:2940 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Încercaţi \"%s --help\" pentru mai multe informaţii.\n" -#: initdb.c:2575 +#: initdb.c:2656 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: prea multe argumente în linia de comandă (primul este \"%s\")\n" -#: initdb.c:2584 +#: initdb.c:2665 #, c-format msgid "%s: password prompt and password file cannot be specified together\n" msgstr "%s: solicitarea parolei şi fişierul de parole nu pot fi specificate împreună\n" -#: initdb.c:2590 +#: initdb.c:2671 msgid "" "\n" "WARNING: enabling \"trust\" authentication for local connections\n" @@ -496,17 +527,17 @@ msgstr "" "Puteţi modifica acest lucru editând pg_hba.conf sau folosind opţiunea -A\n" "la următoarea rulare a initdb.\n" -#: initdb.c:2613 +#: initdb.c:2694 #, c-format msgid "%s: unrecognized authentication method \"%s\"\n" msgstr "%s: metodă de autentificare nerecunoscută \"%s\"\n" -#: initdb.c:2623 +#: initdb.c:2704 #, c-format msgid "%s: must specify a password for the superuser to enable %s authentication\n" msgstr "%s: trebuie să specificaţi o parolă pentru utilizatorul privilegiat pentru a activa autentificarea %s\n" -#: initdb.c:2638 +#: initdb.c:2733 #, c-format msgid "" "%s: no data directory specified\n" @@ -519,7 +550,7 @@ msgstr "" "de baze de date. Puteţi face acest lucru folosind opţiunea -D sau\n" "variabila de mediu PGDATA.\n" -#: initdb.c:2722 +#: initdb.c:2817 #, c-format msgid "" "The program \"postgres\" is needed by %s but was not found in the\n" @@ -530,7 +561,7 @@ msgstr "" "în acelaşi director cu \"%s\".\n" "Verificaţi instalarea.\n" -#: initdb.c:2729 +#: initdb.c:2824 #, c-format msgid "" "The program \"postgres\" was found by \"%s\"\n" @@ -541,12 +572,12 @@ msgstr "" "dar nu are aceeaşi versiune ca %s.\n" "Verificaţi instalarea.\n" -#: initdb.c:2748 +#: initdb.c:2843 #, c-format msgid "%s: input file location must be an absolute path\n" msgstr "%s: locaţia fişierului de intrare trebuie să fie o cale absolută\n" -#: initdb.c:2805 +#: initdb.c:2900 #, c-format msgid "" "The files belonging to this database system will be owned by user \"%s\".\n" @@ -557,12 +588,12 @@ msgstr "" "Acest utilizator trebuie să deţină şi procesul serverului.\n" "\n" -#: initdb.c:2815 +#: initdb.c:2910 #, c-format msgid "The database cluster will be initialized with locale %s.\n" msgstr "Grupul de baze de date va fi iniţializat cu localizarea %s.\n" -#: initdb.c:2818 +#: initdb.c:2913 #, c-format msgid "" "The database cluster will be initialized with locales\n" @@ -581,22 +612,31 @@ msgstr "" " NUMERIC: %s\n" " TIME: %s\n" -#: initdb.c:2842 +#: initdb.c:2937 #, c-format msgid "%s: could not find suitable encoding for locale %s\n" msgstr "%s: imposibil de găsit o codificare potrivită pentru localizarea %s\n" -#: initdb.c:2844 +#: initdb.c:2939 #, c-format msgid "Rerun %s with the -E option.\n" msgstr "Re-rulaţi %s cu opţiunea -E.\n" -#: initdb.c:2853 +#: initdb.c:2952 +#, 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 "" +"Codificarea %s nu este permisă ca și codificare server.\n" +"În locul acesteia baza de date va avea codificarea prestabilită %s.\n" + +#: initdb.c:2960 #, c-format msgid "%s: locale %s requires unsupported encoding %s\n" msgstr "%s: localizarea %s necesită codificarea nesuportată %s\n" -#: initdb.c:2856 +#: initdb.c:2963 #, c-format msgid "" "Encoding %s is not allowed as a server-side encoding.\n" @@ -605,56 +645,56 @@ msgstr "" "Codificarea %s nu este permisă ca și codificare server.\n" "Rulați din nou %s după ce selectați o localizare diferită.\n" -#: initdb.c:2864 +#: initdb.c:2972 #, c-format msgid "The default database encoding has accordingly been set to %s.\n" msgstr "Codificarea implicită a bazei de date a fost setată în mod corespunzător la %s.\n" -#: initdb.c:2881 +#: initdb.c:2989 #, c-format msgid "%s: could not find suitable text search configuration for locale %s\n" msgstr "%s: imposibil de găsit configurarea potrivită pentru căutare text pentru localizarea %s\n" -#: initdb.c:2892 +#: initdb.c:3000 #, c-format msgid "%s: warning: suitable text search configuration for locale %s is unknown\n" msgstr "%s: atenție: configurarea potrivită pentru căutare text pentru localizarea %s nu este cunoscută\n" -#: initdb.c:2897 +#: initdb.c:3005 #, c-format msgid "%s: warning: specified text search configuration \"%s\" might not match locale %s\n" msgstr "%s: atenție: configurarea specificată pentru căutare text \"%s\" posibil să nu se potrivească cu localizarea %s\n" -#: initdb.c:2902 +#: initdb.c:3010 #, c-format msgid "The default text search configuration will be set to \"%s\".\n" msgstr "Configurarrea implicită pentru căutare text va fi stabilită la \"%s\".\n" -#: initdb.c:2936 -#: initdb.c:3003 +#: initdb.c:3044 +#: initdb.c:3111 #, c-format msgid "creating directory %s ... " msgstr "creare director %s ... " -#: initdb.c:2950 -#: initdb.c:3020 +#: initdb.c:3058 +#: initdb.c:3129 #, c-format msgid "fixing permissions on existing directory %s ... " msgstr "stabilire permisiuni pentru directorul existent %s ... " -#: initdb.c:2956 -#: initdb.c:3026 +#: initdb.c:3064 +#: initdb.c:3135 #, c-format msgid "%s: could not change permissions of directory \"%s\": %s\n" msgstr "%s: imposibil de schimbat drepturile de acces pentru directorul \"%s\": %s\n" -#: initdb.c:2969 -#: initdb.c:3038 +#: initdb.c:3077 +#: initdb.c:3148 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: directorul \"%s\" există dar nu este gol\n" -#: initdb.c:2972 +#: initdb.c:3080 #, c-format msgid "" "If you want to create a new database system, either remove or empty\n" @@ -665,18 +705,18 @@ msgstr "" "directorul \"%s\" sau rulaţi %s\n" "cu alt argument decât \"%s\".\n" -#: initdb.c:2980 -#: initdb.c:3048 +#: initdb.c:3088 +#: initdb.c:3158 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: imposibil de accesat directorul \"%s\": %s\n" -#: initdb.c:2994 +#: initdb.c:3102 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" msgstr "%s: locaţia fişierului log de tranzacții trebuie să fie o cale absolută\n" -#: initdb.c:3041 +#: initdb.c:3151 #, c-format msgid "" "If you want to store the transaction log there, either\n" @@ -685,22 +725,22 @@ msgstr "" "Dacă doriți să stocați fișierul jurnal de tranzacții aici, fie\n" "ștergeți sau goliți directorul \"%s\".\n" -#: initdb.c:3060 +#: initdb.c:3170 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" msgstr "%s: nu poate crea legătura simbolică \"%s\": %s\n" -#: initdb.c:3065 +#: initdb.c:3175 #, c-format msgid "%s: symlinks are not supported on this platform" msgstr "%s: symlink nu sunt suportate pe această platformă" -#: initdb.c:3071 +#: initdb.c:3181 #, c-format msgid "creating subdirectories ... " msgstr "creare subdirectoare ..." -#: initdb.c:3135 +#: initdb.c:3247 #, c-format msgid "" "\n" @@ -731,23 +771,28 @@ msgstr "memorie insuficientă\n" msgid "could not set junction for \"%s\": %s\n" msgstr "imposibil de stabilit joncțiunea pentru \"%s\": %s\n" -#: ../../port/dirmod.c:325 +#: ../../port/dirmod.c:361 +#, c-format +msgid "could not get junction for \"%s\": %s\n" +msgstr "imposibil de obţinut joncțiunea pentru \"%s\": %s\n" + +#: ../../port/dirmod.c:443 #, c-format msgid "could not open directory \"%s\": %s\n" msgstr "imposibil de deschis directorul \"%s\": %s\n" -#: ../../port/dirmod.c:362 +#: ../../port/dirmod.c:480 #, c-format msgid "could not read directory \"%s\": %s\n" msgstr "imposibil de citit directorul \"%s\": %s\n" -#: ../../port/dirmod.c:445 +#: ../../port/dirmod.c:563 #, c-format msgid "could not stat file or directory \"%s\": %s\n" msgstr "imposibil de stabilit directorul \"%s\": %s\n" -#: ../../port/dirmod.c:472 -#: ../../port/dirmod.c:489 +#: ../../port/dirmod.c:590 +#: ../../port/dirmod.c:607 #, c-format msgid "could not remove file or directory \"%s\": %s\n" msgstr "imposibil de eliminat directorul \"%s\": %s\n" @@ -785,27 +830,27 @@ msgstr "imposibil de schimbat directorul în \"%s\"" msgid "could not read symbolic link \"%s\"" msgstr "imposibil de citit legătura simbolică \"%s\"" -#: ../../port/exec.c:516 +#: ../../port/exec.c:517 #, c-format msgid "child process exited with exit code %d" msgstr "procesul fiu a ieşit cu codul %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:521 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "procesul fiu a fost terminat cu excepția 0x%X" -#: ../../port/exec.c:529 +#: ../../port/exec.c:530 #, c-format msgid "child process was terminated by signal %s" msgstr "procesul fiu a fost terminat cu semnalul %s" -#: ../../port/exec.c:532 +#: ../../port/exec.c:533 #, c-format msgid "child process was terminated by signal %d" msgstr "procesul fiu a fost terminat cu semnalul %d" -#: ../../port/exec.c:536 +#: ../../port/exec.c:537 #, c-format msgid "child process exited with unrecognized status %d" msgstr "procesul fiu a ieşit cu starea nerecunoscută %d" diff --git a/src/bin/initdb/po/ru.po b/src/bin/initdb/po/ru.po index 307010af5e..f7ce950f3e 100644 --- a/src/bin/initdb/po/ru.po +++ b/src/bin/initdb/po/ru.po @@ -2,6 +2,7 @@ # INITDB Translated Messages into the Russian Language (UTF-8) # # Copyright (c) 2004 Serguei A. Mokhov, mokhov@cs.concordia.ca +# Copyright (c) 2012 Alexander Lakhin # Distributed under the same licensing terms as PostgreSQL itself. # # pgtranslation Id: initdb.po,v 1.4 2010/12/07 21:22:21 petere Exp $ @@ -11,293 +12,319 @@ # http://wiki.postgresql.org/wiki/NLS/ru/dict # # ChangeLog: -# - November , 2010: complete translation for 9 current, Andrey Sudnik -# - March 26, 2009: complete translation for 8.3, Sergey Burladyan -# - January 17, 2005: complete translation for 8.0, Serguei A. Mokhov -# - December, 2004: New translation by Oleg Bartunov -# - March 27 - December 10, 2004: Initial Translation, Serguei A. Mokhov # +# - April 2, 2012: Bug fixes. Alexander Lakhin . +# - February 22, 2012: Minor fixes. Alexander Lakhin . +# - February 15, 2012: complete translation for 9.1. Alexander Lakhin . +# - November , 2010: complete translation for 9 current, Andrey Sudnik . +# - March 26, 2009: complete translation for 8.3, Sergey Burladyan . +# - January 17, 2005: complete translation for 8.0, Serguei A. Mokhov . +# - December, 2004: New translation by Oleg Bartunov . +# - March 27 - December 10, 2004: Initial Translation, Serguei A. Mokhov . msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9 current\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-11-29 18:40+0000\n" -"PO-Revision-Date: 2010-11-30 16:12+0600\n" -"Last-Translator: Andrey Sudnik \n" -"Language-Team: pgsql-ru-general \n" -"Language: \n" +"POT-Creation-Date: 2012-07-10 22:27+0000\n" +"PO-Revision-Date: 2012-04-02 19:16+0400\n" +"Last-Translator: Alexander Lakhin \n" +"Language-Team: Russian \n" +"Language: ru\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Russian\n" "X-Poedit-Country: RUSSIAN FEDERATION\n" "X-Poedit-SourceCharset: utf-8\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 1.4\n" -#: initdb.c:254 -#: initdb.c:268 +#: initdb.c:259 initdb.c:273 #, c-format msgid "%s: out of memory\n" -msgstr "%s: не хватило памяти\n" +msgstr "%s: нехватка памяти\n" -#: initdb.c:377 -#: initdb.c:1432 +#: initdb.c:382 initdb.c:1288 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: не удалось открыть файл \"%s\" для чтения: %s\n" -#: initdb.c:433 -#: initdb.c:956 -#: initdb.c:985 +#: initdb.c:438 initdb.c:804 initdb.c:833 #, c-format msgid "%s: could not open file \"%s\" for writing: %s\n" msgstr "%s: не удалось открыть файл \"%s\" для записи: %s\n" -#: initdb.c:441 -#: initdb.c:449 -#: initdb.c:963 -#: initdb.c:991 +#: initdb.c:446 initdb.c:454 initdb.c:811 initdb.c:839 #, c-format msgid "%s: could not write file \"%s\": %s\n" -msgstr "%s: не удалось записать в файл \"%s\": %s\n" +msgstr "%s: не удалось записать файл \"%s\": %s\n" -#: initdb.c:468 +#: initdb.c:473 #, c-format msgid "%s: could not execute command \"%s\": %s\n" msgstr "%s: не удалось выполнить команду \"%s\": %s\n" -#: initdb.c:588 +#: initdb.c:489 #, c-format msgid "%s: removing data directory \"%s\"\n" -msgstr "%s: удаление директории данных \"%s\"\n" +msgstr "%s: удаление каталога данных \"%s\"\n" -#: initdb.c:591 +#: initdb.c:492 #, c-format msgid "%s: failed to remove data directory\n" -msgstr "%s: ошибка при удалении директории данных\n" +msgstr "%s: ошибка при удалении каталога данных\n" -#: initdb.c:597 +#: initdb.c:498 #, c-format msgid "%s: removing contents of data directory \"%s\"\n" -msgstr "%s: удаление содержимого директории данных \"%s\"\n" +msgstr "%s: удаление содержимого каталога данных \"%s\"\n" -#: initdb.c:600 +#: initdb.c:501 #, c-format msgid "%s: failed to remove contents of data directory\n" -msgstr "%s: ошибка при удалении содержимого директории данных\n" +msgstr "%s: ошибка при удалении содержимого каталога данных\n" -#: initdb.c:606 +#: initdb.c:507 #, c-format msgid "%s: removing transaction log directory \"%s\"\n" -msgstr "%s: удаление директории журнала транзакций \"%s\"\n" +msgstr "%s: удаление каталога журнала транзакций \"%s\"\n" -#: initdb.c:609 +#: initdb.c:510 #, c-format msgid "%s: failed to remove transaction log directory\n" -msgstr "%s: ошибка при удалении директории журнала транзакций\n" +msgstr "%s: ошибка при удалении каталога журнала транзакций\n" -#: initdb.c:615 +#: initdb.c:516 #, c-format msgid "%s: removing contents of transaction log directory \"%s\"\n" -msgstr "%s: удаление содержимого директории журнала транзакций \"%s\"\n" +msgstr "%s: очистка каталога журнала транзакций \"%s\"\n" -#: initdb.c:618 +#: initdb.c:519 #, c-format msgid "%s: failed to remove contents of transaction log directory\n" -msgstr "%s: ошибка при удалении содержимого директории журнала транзакций\n" +msgstr "%s: ошибка при очистке каталога журнала транзакций\n" -#: initdb.c:627 +#: initdb.c:528 #, c-format msgid "%s: data directory \"%s\" not removed at user's request\n" -msgstr "%s: директория данных \"%s\" не удалена по запросу пользователя\n" +msgstr "%s: каталог данных \"%s\" не был удалён по запросу пользователя\n" -#: initdb.c:632 +#: initdb.c:533 #, c-format msgid "%s: transaction log directory \"%s\" not removed at user's request\n" -msgstr "%s: директория журнала транзакций \"%s\" не удалена по запросу пользователя\n" +msgstr "" +"%s: каталог журнала транзакций \"%s\" не был удалён по запросу пользователя\n" -#: initdb.c:654 +#: initdb.c:555 #, c-format msgid "" "%s: cannot be run as root\n" "Please log in (using, e.g., \"su\") as the (unprivileged) user that will\n" "own the server process.\n" msgstr "" -"%s: нельзя запускать под root'ом\n" -"Пожалуйста, зайдите как (непривилегированный) пользователь (например,\n" -"используя \"su\"), под которым будет выполняться серверный процесс.\n" +"Запускать %s от имени root нельзя.\n" +"Пожалуйста, переключитесь на обычного пользователя (например,\n" +"используя \"su\"), который будет запускать серверный процесс.\n" -#: initdb.c:666 +#: initdb.c:567 #, c-format msgid "%s: could not obtain information about current user: %s\n" msgstr "%s: не удалось получить информацию о текущем пользователе: %s\n" -#: initdb.c:683 +#: initdb.c:584 #, c-format msgid "%s: could not get current user name: %s\n" -msgstr "%s: не удалось получить имя текущего пользователя: %s\n" +msgstr "%s: не удалось узнать имя текущего пользователя: %s\n" -#: initdb.c:714 +#: initdb.c:615 #, c-format msgid "%s: \"%s\" is not a valid server encoding name\n" -msgstr "%s: \"%s\" не является верной кодировкой сервера\n" +msgstr "%s: \"%s\" - неверное имя серверной кодировки\n" -#: initdb.c:876 -#: initdb.c:3009 +#: initdb.c:724 initdb.c:3117 #, c-format msgid "%s: could not create directory \"%s\": %s\n" -msgstr "%s: не удалось создать директорию \"%s\": %s\n" +msgstr "%s: не удалось создать каталог \"%s\": %s\n" -#: initdb.c:906 +#: initdb.c:754 #, c-format msgid "%s: file \"%s\" does not exist\n" msgstr "%s: файл \"%s\" не существует\n" -#: initdb.c:908 -#: initdb.c:917 -#: initdb.c:927 +#: initdb.c:756 initdb.c:765 initdb.c:775 #, c-format msgid "" "This might mean you have a corrupted installation or identified\n" "the wrong directory with the invocation option -L.\n" msgstr "" -"Это означает, что у вас проблемы с установкой или указана\n" -"неправильная директория в опции запуска -L.\n" +"Это означает, что ваша установка PostgreSQL испорчена или в параметре -L\n" +"задан неправильный каталог.\n" -#: initdb.c:914 +#: initdb.c:762 #, c-format msgid "%s: could not access file \"%s\": %s\n" msgstr "%s: нет доступа к файлу \"%s\": %s\n" -#: initdb.c:925 +#: initdb.c:773 #, c-format msgid "%s: file \"%s\" is not a regular file\n" -msgstr "%s: файл \"%s\" не является обычным файлом\n" +msgstr "%s: \"%s\" - не обычный файл\n" -#: initdb.c:1033 +#: initdb.c:881 #, c-format msgid "selecting default max_connections ... " -msgstr "выбирается значение по умолчанию для max_connections ... " +msgstr "выбирается значение max_connections... " -#: initdb.c:1062 +#: initdb.c:910 #, c-format msgid "selecting default shared_buffers ... " -msgstr "выбирается значение по умолчанию для shared_buffers ... " +msgstr "выбирается значение shared_buffers... " -#: initdb.c:1105 +#: initdb.c:953 msgid "creating configuration files ... " -msgstr "создание конфигурационных файлов ... " +msgstr "создание конфигурационных файлов... " -#: initdb.c:1272 +#: initdb.c:1128 #, c-format msgid "creating template1 database in %s/base/1 ... " -msgstr "создание базы template1 в %s/base/1 ... " +msgstr "создание базы template1 в %s/base/1... " -#: initdb.c:1288 +#: initdb.c:1144 #, c-format msgid "" "%s: input file \"%s\" does not belong to PostgreSQL %s\n" "Check your installation or specify the correct path using the option -L.\n" msgstr "" "%s: входной файл \"%s\" не принадлежит PostgreSQL %s\n" -"Проверьте вашу установку или укажите правильный путь с помощью опции -L.\n" +"Проверьте вашу установку или укажите правильный путь в параметре -L.\n" -#: initdb.c:1373 +#: initdb.c:1229 msgid "initializing pg_authid ... " -msgstr "инициализация pg_authid ... " +msgstr "инициализация pg_authid... " -#: initdb.c:1407 +#: initdb.c:1263 msgid "Enter new superuser password: " -msgstr "Введите новый пароль администратора: " +msgstr "Введите новый пароль суперпользователя: " -#: initdb.c:1408 +#: initdb.c:1264 msgid "Enter it again: " -msgstr "Введите его снова: " +msgstr "Повторите его: " -#: initdb.c:1411 +#: initdb.c:1267 #, c-format msgid "Passwords didn't match.\n" msgstr "Пароли не совпадают.\n" -#: initdb.c:1438 +#: initdb.c:1294 #, c-format msgid "%s: could not read password from file \"%s\": %s\n" -msgstr "%s: не удалось считать пароль из файла \"%s\": %s\n" +msgstr "%s: не удалось прочитать пароль из файла \"%s\": %s\n" -#: initdb.c:1451 +#: initdb.c:1307 #, c-format msgid "setting password ... " -msgstr "установка пароля ... " +msgstr "установка пароля... " -#: initdb.c:1549 +#: initdb.c:1407 msgid "initializing dependencies ... " -msgstr "инициализация зависимостей ... " +msgstr "инициализация зависимостей... " -#: initdb.c:1577 +#: initdb.c:1435 msgid "creating system views ... " -msgstr "создание системных представлений ... " +msgstr "создание системных представлений... " -#: initdb.c:1613 +#: initdb.c:1471 msgid "loading system objects' descriptions ... " -msgstr "загрузка системных описаний объектов ... " +msgstr "загрузка описаний системных объектов... " -#: initdb.c:1665 +#: initdb.c:1577 +msgid "creating collations ... " +msgstr "создание правил сортировки... " + +#: initdb.c:1610 +#, c-format +msgid "%s: locale name too long, skipped: %s\n" +msgstr "%s: слишком длинное имя локали, пропущено: %s\n" + +#: initdb.c:1635 +#, c-format +msgid "%s: locale name has non-ASCII characters, skipped: %s\n" +msgstr "%s: имя локали содержит не ASCII-символы, пропущено: %s\n" + +#: initdb.c:1698 +#, c-format +msgid "No usable system locales were found.\n" +msgstr "Пригодные локали в системе не найдены.\n" + +#: initdb.c:1699 +#, c-format +msgid "Use the option \"--debug\" to see details.\n" +msgstr "Добавьте параметр \"--debug\", чтобы узнать подробности.\n" + +#: initdb.c:1702 +#, c-format +msgid "not supported on this platform\n" +msgstr "не поддерживается в этой ОС\n" + +#: initdb.c:1717 msgid "creating conversions ... " -msgstr "создание конверсий ... " +msgstr "создание преобразований... " -#: initdb.c:1700 +#: initdb.c:1752 msgid "creating dictionaries ... " -msgstr "создание словарей ... " +msgstr "создание словарей... " -#: initdb.c:1754 +#: initdb.c:1806 msgid "setting privileges on built-in objects ... " -msgstr "установка привилегий для встроенных объектов ... " +msgstr "установка прав для встроенных объектов... " -#: initdb.c:1812 +#: initdb.c:1864 msgid "creating information schema ... " -msgstr "создание информационной схемы ... " +msgstr "создание информационной схемы... " -#: initdb.c:1868 +#: initdb.c:1920 msgid "loading PL/pgSQL server-side language ... " -msgstr "загружется PL/pgSQL язык на стороне сервера ... " +msgstr "загрузка серверного языка PL/pgSQL... " -#: initdb.c:1893 +#: initdb.c:1945 msgid "vacuuming database template1 ... " -msgstr "сборка мусора в базе template1 ... " +msgstr "очистка базы данных template1... " -#: initdb.c:1947 +#: initdb.c:2001 msgid "copying template1 to template0 ... " -msgstr "копирование template1 в template0 ... " +msgstr "копирование template1 в template0... " -#: initdb.c:1978 +#: initdb.c:2033 msgid "copying template1 to postgres ... " -msgstr "копирование template1 в postgres ... " +msgstr "копирование template1 в postgres... " -#: initdb.c:2035 +#: initdb.c:2090 #, c-format msgid "caught signal\n" -msgstr "перехвачен сигнал\n" +msgstr "получен сигнал\n" -#: initdb.c:2041 +#: initdb.c:2096 #, c-format msgid "could not write to child process: %s\n" -msgstr "не удалось записать в дочерний процесс: %s\n" +msgstr "не удалось записать в поток дочернего процесса: %s\n" -#: initdb.c:2049 +#: initdb.c:2104 #, c-format msgid "ok\n" msgstr "ок\n" -#: initdb.c:2169 +#: initdb.c:2224 #, c-format msgid "%s: invalid locale name \"%s\"\n" msgstr "%s: ошибочное имя локали \"%s\"\n" -#: initdb.c:2195 +#: initdb.c:2250 #, c-format msgid "%s: encoding mismatch\n" msgstr "%s: несоответствие кодировки\n" -#: initdb.c:2197 +#: initdb.c:2252 #, c-format msgid "" "The encoding you selected (%s) and the encoding that the\n" @@ -306,13 +333,13 @@ msgid "" "Rerun %s and either do not specify an encoding explicitly,\n" "or choose a matching combination.\n" msgstr "" -"Кодировка которую вы выбрали (%s) и кодировка выбранной\n" -"локали (%s) не совпадают. Это может привести к неожиданным\n" -"результатам в различных функциях связанных с обработкой строк. \n" -"Для исправления перезапустите %s и, либо не указывайте\n" -"кодировку, либо задайте правильную комбинацию кодировки и локали.\n" +"Выбранная вами кодировка (%s) не совпадает с кодировкой\n" +"локали (%s). Это может привести к неправильной работе\n" +"различных функций обработки текстовых строк.\n" +"Для исправления перезапустите %s, не указывая кодировку явно, \n" +"либо выберите подходящее сочетание параметров локализации.\n" -#: initdb.c:2378 +#: initdb.c:2458 #, c-format msgid "" "%s initializes a PostgreSQL database cluster.\n" @@ -321,141 +348,150 @@ msgstr "" "%s инициализирует кластер PostgreSQL.\n" "\n" -#: initdb.c:2379 +#: initdb.c:2459 #, c-format msgid "Usage:\n" msgstr "Использование:\n" -#: initdb.c:2380 +#: initdb.c:2460 #, c-format msgid " %s [OPTION]... [DATADIR]\n" -msgstr " %s [ОПЦИИ]... [ДИРЕКТОРИЯ-ДАННЫХ]\n" +msgstr " %s [ПАРАМЕТР]... [КАТАЛОГ]\n" -#: initdb.c:2381 +#: initdb.c:2461 #, c-format msgid "" "\n" "Options:\n" msgstr "" "\n" -"Опции:\n" +"Параметры:\n" -#: initdb.c:2382 +#: initdb.c:2462 #, c-format -msgid " -A, --auth=METHOD default authentication method for local connections\n" -msgstr " -A, --auth=МЕТОД метод аутентификации по умолчанию для локальных подключений\n" +msgid "" +" -A, --auth=METHOD default authentication method for local " +"connections\n" +msgstr "" +" -A, --auth=МЕТОД метод проверки подлинности по умолчанию\n" +" для локальных подключений\n" -#: initdb.c:2383 +#: initdb.c:2463 #, c-format msgid " [-D, --pgdata=]DATADIR location for this database cluster\n" -msgstr " [-D, --pgdata=]ДИР-ДАННЫХ местонахождение для этого кластера баз данных\n" +msgstr " [-D, --pgdata=]КАТАЛОГ расположение данных этого кластера БД\n" -#: initdb.c:2384 +#: initdb.c:2464 #, c-format msgid " -E, --encoding=ENCODING set default encoding for new databases\n" -msgstr " -E, --encoding=КОДИРОВКА установить кодировку по умолчанию для новых баз\n" +msgstr " -E, --encoding=КОДИРОВКА кодировка по умолчанию для новых баз\n" -#: initdb.c:2385 +#: initdb.c:2465 #, c-format msgid " --locale=LOCALE set default locale for new databases\n" -msgstr " --locale=LOCALE установить локаль по умолчанию для новых баз\n" +msgstr " --locale=ЛОКАЛЬ локаль по умолчанию для новых баз\n" -#: initdb.c:2386 +#: initdb.c:2466 #, 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" -" --lc-monetary=, --lc-numeric=, --lc-time=LOCALE\n" -" установить локаль в соответствующей категории для\n" -" новых баз (значения по умолчанию берутся из окружения)\n" +" --lc-collate=, --lc-ctype=, --lc-messages=ЛОКАЛЬ\n" +" --lc-monetary=, --lc-numeric=, --lc-time=ЛОКАЛЬ\n" +" установить соответствующий параметр локали\n" +" для новых баз (вместо значения из окружения)\n" -#: initdb.c:2390 +#: initdb.c:2470 #, c-format msgid " --no-locale equivalent to --locale=C\n" msgstr " --no-locale эквивалентно --locale=C\n" -#: initdb.c:2391 +#: initdb.c:2471 #, c-format -msgid " --pwfile=FILE read password for the new superuser from file\n" -msgstr " --pwfile=FILE читать пароль для нового администратора из файла\n" +msgid "" +" --pwfile=FILE read password for the new superuser from file\n" +msgstr "" +" --pwfile=ФАЙЛ прочитать пароль суперпользователя из файла\n" -#: initdb.c:2392 +#: initdb.c:2472 #, c-format msgid "" " -T, --text-search-config=CFG\n" " default text search configuration\n" msgstr "" " -T, --text-search-config=КОНФИГУРАЦИЯ\n" -" конфигурация полнотекстового поиска по умолчанию\n" +" конфигурация текстового поиска по умолчанию\n" -#: initdb.c:2394 +#: initdb.c:2474 #, c-format msgid " -U, --username=NAME database superuser name\n" -msgstr " -U, --username=ИМЯ имя администратора базы данных\n" +msgstr " -U, --username=ИМЯ имя суперпользователя БД\n" -#: initdb.c:2395 +#: initdb.c:2475 #, c-format -msgid " -W, --pwprompt prompt for a password for the new superuser\n" -msgstr " -W, --pwprompt запросить пароль для нового администратора\n" +msgid "" +" -W, --pwprompt prompt for a password for the new superuser\n" +msgstr " -W, --pwprompt запросить пароль суперпользователя\n" -#: initdb.c:2396 +#: initdb.c:2476 #, c-format -msgid " -X, --xlogdir=XLOGDIR location for the transaction log directory\n" -msgstr " -X, --xlogdir=XLOGDIR местонахождение для директории журнала транзакций\n" +msgid "" +" -X, --xlogdir=XLOGDIR location for the transaction log directory\n" +msgstr " -X, --xlogdir=КАТАЛОГ расположение журнала транзакций\n" -#: initdb.c:2397 +#: initdb.c:2477 #, c-format msgid "" "\n" "Less commonly used options:\n" msgstr "" "\n" -"Редко используемые опции:\n" +"Редко используемые параметры:\n" -#: initdb.c:2398 +#: initdb.c:2478 #, c-format msgid " -d, --debug generate lots of debugging output\n" msgstr " -d, --debug выдавать много отладочных сообщений\n" -#: initdb.c:2399 +#: initdb.c:2479 #, c-format msgid " -L DIRECTORY where to find the input files\n" -msgstr " -L ДИРЕКТОРИЯ где найти входные файлы\n" +msgstr " -L КАТАЛОГ расположение входных файлов\n" -#: initdb.c:2400 +#: initdb.c:2480 #, c-format msgid " -n, --noclean do not clean up after errors\n" msgstr " -n, --noclean не очищать после ошибок\n" -#: initdb.c:2401 +#: initdb.c:2481 #, c-format msgid " -s, --show show internal settings\n" -msgstr " -s, --show показать внутренние установки\n" +msgstr " -s, --show показать внутренние настройки\n" -#: initdb.c:2402 +#: initdb.c:2482 #, c-format msgid "" "\n" "Other options:\n" msgstr "" "\n" -"Другие опции:\n" +"Другие параметры:\n" -#: initdb.c:2403 +#: initdb.c:2483 #, c-format msgid " -?, --help show this help, then exit\n" -msgstr " -?, --help показать эту помощь и выйти\n" +msgstr " -?, --help показать эту справку и выйти\n" -#: initdb.c:2404 +#: initdb.c:2484 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version показать версию и выйти\n" -#: initdb.c:2405 +#: initdb.c:2485 #, c-format msgid "" "\n" @@ -463,45 +499,45 @@ msgid "" "is used.\n" msgstr "" "\n" -"Если директория данных не указана, используется значение переменной окружения PGDATA.\n" +"Если каталог данных не указан, используется переменная окружения PGDATA.\n" -#: initdb.c:2407 +#: initdb.c:2487 #, c-format msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" -"Сообщения об ошибках: .\n" +"Об ошибках сообщайте по адресу .\n" -#: initdb.c:2512 +#: initdb.c:2593 #, c-format msgid "Running in debug mode.\n" -msgstr "Выполнение в режиме отладки.\n" +msgstr "Программа запущена в режиме отладки.\n" -#: initdb.c:2516 +#: initdb.c:2597 #, c-format msgid "Running in noclean mode. Mistakes will not be cleaned up.\n" -msgstr "Выполнение в режиме 'noclean'. Сборка мусора и чистка после ошибок производиться не будет.\n" +msgstr "" +"Программа запущена в режим 'noclean' - очистки и исправления ошибок не " +"будет.\n" -#: initdb.c:2559 -#: initdb.c:2577 -#: initdb.c:2845 +#: initdb.c:2640 initdb.c:2658 initdb.c:2940 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Наберите \"%s --help\" для более подробной информации.\n" +msgstr "Для дополнительной информации попробуйте \"%s --help\".\n" -#: initdb.c:2575 +#: initdb.c:2656 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: слишком много аргументов командной строки (первый: \"%s\")\n" -#: initdb.c:2584 +#: initdb.c:2665 #, c-format msgid "%s: password prompt and password file cannot be specified together\n" -msgstr "%s: нельзя указывать одновременно запрос пароля и файл паролей\n" +msgstr "%s: нельзя одновременно запросить пароль и прочитать пароль из файла\n" -#: initdb.c:2590 +#: initdb.c:2671 msgid "" "\n" "WARNING: enabling \"trust\" authentication for local connections\n" @@ -509,21 +545,25 @@ msgid "" "next time you run initdb.\n" msgstr "" "\n" -"ВНИМАНИЕ: используется аутентификация \"trust\" для локальных подключений.\n" -"Вы можете её поменять, отредактировав pg_hba.conf или используя опцию -A,\n" +"ВНИМАНИЕ: используется проверка подлинности \"trust\" для локальных " +"подключений.\n" +"Другой метод можно выбрать, отредактировав pg_hba.conf или используя ключ -" +"A\n" "при следующем выполнении initdb.\n" -#: initdb.c:2613 +#: initdb.c:2694 #, c-format msgid "%s: unrecognized authentication method \"%s\"\n" -msgstr "%s: нераспознанный метод аутентификации \"%s\"\n" +msgstr "%s: нераспознанный метод проверки подлинности \"%s\"\n" -#: initdb.c:2623 +#: initdb.c:2704 #, c-format -msgid "%s: must specify a password for the superuser to enable %s authentication\n" -msgstr "%s: необходимо указать пароль администратора для включения аутентификации %s\n" +msgid "" +"%s: must specify a password for the superuser to enable %s authentication\n" +msgstr "" +"%s: для применения метода %s необходимо указать пароль суперпользователя\n" -#: initdb.c:2638 +#: initdb.c:2733 #, c-format msgid "" "%s: no data directory specified\n" @@ -531,55 +571,55 @@ msgid "" "will reside. Do this with either the invocation option -D or the\n" "environment variable PGDATA.\n" msgstr "" -"%s: директория данных не указана\n" -"Вы должны указать директорию для расположения данных для\n" -"для этой системы. Это можно сделать с помощью указания опции -D\n" -"или установки переменной окружения PGDATA.\n" +"%s: каталог данных не определён\n" +"Вы должны указать, где будут располагаться данные этой СУБД.\n" +"Это можно сделать, добавив ключ -D или установив переменную\n" +"окружения PGDATA.\n" -#: initdb.c:2722 +#: initdb.c:2817 #, c-format msgid "" "The program \"postgres\" is needed by %s but was not found in the\n" "same directory as \"%s\".\n" "Check your installation.\n" msgstr "" -"Программа \"postgres\" нужна для %s, но она не найдена в \n" -"той же директории, что и \"%s\".\n" -"Проверьте вашу установку.\n" +"Программа \"postgres\" нужна для %s, но она не найдена\n" +"в каталоге \"%s\".\n" +"Проверьте вашу установку PostgreSQL.\n" -#: initdb.c:2729 +#: initdb.c:2824 #, c-format msgid "" "The program \"postgres\" was found by \"%s\"\n" "but was not the same version as %s.\n" "Check your installation.\n" msgstr "" -"Программа \"postgres\" найдена рядом с %s, но не\n" -"с той же версией как %s.\n" -"Проверьте вашу установку.\n" +"Программа \"postgres\" найдена в \"%s\",\n" +"но её версия отличается от версии %s.\n" +"Проверьте вашу установку PostgreSQL.\n" -#: initdb.c:2748 +#: initdb.c:2843 #, c-format msgid "%s: input file location must be an absolute path\n" -msgstr "%s: местонахождение входного файла должно быть абсолютным путём\n" +msgstr "%s: расположение входных файлов должно задаваться абсолютным путём\n" -#: initdb.c:2805 +#: initdb.c:2900 #, c-format msgid "" "The files belonging to this database system will be owned by user \"%s\".\n" "This user must also own the server process.\n" "\n" msgstr "" -"Файлы, сопутствующие этой системе баз данных, будут\n" -"принадлежать пользователю \"%s\". Этот пользователь\n" -"также должен быть владельцем процесса сервера.\n" +"Файлы, относящиеся к этой СУБД, будут принадлежать пользователю \"%s\".\n" +"От его имени также будет запускаться процесс сервера.\n" +"\n" -#: initdb.c:2815 +#: initdb.c:2910 #, c-format msgid "The database cluster will be initialized with locale %s.\n" msgstr "Кластер баз данных будет инициализирован с локалью %s.\n" -#: initdb.c:2818 +#: initdb.c:2913 #, c-format msgid "" "The database cluster will be initialized with locales\n" @@ -590,7 +630,7 @@ msgid "" " NUMERIC: %s\n" " TIME: %s\n" msgstr "" -"Кластер баз данных будет инициализирован со следующими локалями:\n" +"Кластер баз данных будет инициализирован со следующими параметрами локали:\n" " COLLATE: %s\n" " CTYPE: %s\n" " MESSAGES: %s\n" @@ -598,126 +638,141 @@ msgstr "" " NUMERIC: %s\n" " TIME: %s\n" -#: initdb.c:2842 +#: initdb.c:2937 #, c-format msgid "%s: could not find suitable encoding for locale %s\n" msgstr "%s: не удалось найти подходящую кодировку для локали %s\n" -#: initdb.c:2844 +#: initdb.c:2939 #, c-format msgid "Rerun %s with the -E option.\n" -msgstr "Перезапустите %s с опцией -E.\n" +msgstr "Перезапустите %s с параметром -E.\n" -#: initdb.c:2853 +#: initdb.c:2952 +#, 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 "" +"Кодировка %s, подразумеваемая локалью, не годится для сервера.\n" +"Вместо неё в качестве кодировки БД по умолчанию будет выбрана %s.\n" + +#: initdb.c:2960 #, c-format msgid "%s: locale %s requires unsupported encoding %s\n" -msgstr "%s: локаль %s требует не поддерживаемую кодировку %s\n" +msgstr "%s: для локали %s требуется неподдерживаемая кодировка %s\n" -#: initdb.c:2856 +#: initdb.c:2963 #, c-format msgid "" "Encoding %s is not allowed as a server-side encoding.\n" "Rerun %s with a different locale selection.\n" msgstr "" "Кодировка %s недопустима в качестве кодировки сервера.\n" -"Перезапустите %s выбрав другую локаль.\n" +"Перезапустите %s, выбрав другую локаль.\n" -#: initdb.c:2864 +#: initdb.c:2972 #, c-format msgid "The default database encoding has accordingly been set to %s.\n" -msgstr "Кодировка базы по умолчанию установлена в %s.\n" +msgstr "" +"Кодировка БД по умолчанию, выбранная в соответствии с настройками: %s.\n" -#: initdb.c:2881 +#: initdb.c:2989 #, c-format msgid "%s: could not find suitable text search configuration for locale %s\n" -msgstr "%s: не удалось найти подходящую конфигурацию полнотекстового поиска для локали %s\n" +msgstr "" +"%s: не удалось найти подходящую конфигурацию текстового поиска для локали " +"%s\n" -#: initdb.c:2892 +#: initdb.c:3000 #, c-format -msgid "%s: warning: suitable text search configuration for locale %s is unknown\n" -msgstr "%s: внимание: подходящая конфигурация полнотекстового поиска для локали %s неизвестна\n" +msgid "" +"%s: warning: suitable text search configuration for locale %s is unknown\n" +msgstr "" +"%s: внимание: для локали %s нет известной конфигурации текстового поиска\n" -#: initdb.c:2897 +#: initdb.c:3005 #, c-format -msgid "%s: warning: specified text search configuration \"%s\" might not match locale %s\n" -msgstr "%s: внимание: указанная конфигурация полнотекстового поиска \"%s\" может не соответствовать локали %s\n" +msgid "" +"%s: warning: specified text search configuration \"%s\" might not match " +"locale %s\n" +msgstr "" +"%s: внимание: указанная конфигурация текстового поиска \"%s\" может не " +"соответствовать локали %s\n" -#: initdb.c:2902 +#: initdb.c:3010 #, c-format msgid "The default text search configuration will be set to \"%s\".\n" -msgstr "Конфигурация полнотекстового поиска по умолчанию установлена в \"%s\".\n" +msgstr "Выбрана конфигурация текстового поиска по умолчанию \"%s\".\n" -#: initdb.c:2936 -#: initdb.c:3003 +#: initdb.c:3044 initdb.c:3111 #, c-format msgid "creating directory %s ... " -msgstr "создание директории %s ... " +msgstr "создание каталога %s... " -#: initdb.c:2950 -#: initdb.c:3020 +#: initdb.c:3058 initdb.c:3129 #, c-format msgid "fixing permissions on existing directory %s ... " -msgstr "исправление прав на существующую директорию %s ... " +msgstr "исправление прав для существующего каталога %s... " -#: initdb.c:2956 -#: initdb.c:3026 +#: initdb.c:3064 initdb.c:3135 #, c-format msgid "%s: could not change permissions of directory \"%s\": %s\n" -msgstr "%s: не удалось поменять права на директорию \"%s\": %s\n" +msgstr "%s: не удалось поменять права для каталога \"%s\": %s\n" -#: initdb.c:2969 -#: initdb.c:3038 +#: initdb.c:3077 initdb.c:3148 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" -msgstr "%s: директория \"%s\" существует но не пуста\n" +msgstr "%s: каталог \"%s\" существует, но он не пуст\n" -#: initdb.c:2972 +#: initdb.c:3080 #, c-format msgid "" "If you want to create a new database system, either remove or empty\n" "the directory \"%s\" or run %s\n" "with an argument other than \"%s\".\n" msgstr "" -"Если вы хотите создать новую систему баз данных, удалите либо всю \n" -"директорию \"%s\" или её содержимое или выполните %s\n" -"с аргументом отличным от \"%s\".\n" +"Если вы хотите создать новую систему баз данных,\n" +"удалите или очистите каталог \"%s\",\n" +"либо при запуске %s в качестве пути укажите не \"%s\".\n" -#: initdb.c:2980 -#: initdb.c:3048 +#: initdb.c:3088 initdb.c:3158 #, c-format msgid "%s: could not access directory \"%s\": %s\n" -msgstr "%s: нет доступа к директории \"%s\": %s\n" +msgstr "%s: нет доступа к каталогу \"%s\": %s\n" -#: initdb.c:2994 +#: initdb.c:3102 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" -msgstr "%s: местонахождение директории журнала транзакций должно быть абсолютным путём\n" +msgstr "" +"%s: расположение каталога журнала транзакций должно определяться абсолютным " +"путём\n" -#: initdb.c:3041 +#: initdb.c:3151 #, c-format msgid "" "If you want to store the transaction log there, either\n" "remove or empty the directory \"%s\".\n" msgstr "" -"Если вы действительно хотите хранить журнал транзакций здесь, удалите\n" -"директорию \"%s\" либо всё её содержимое.\n" +"Если вы хотите хранить журнал транзакций здесь,\n" +"удалите или очистите каталог \"%s\".\n" -#: initdb.c:3060 +#: initdb.c:3170 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" msgstr "%s: не удалось создать символическую ссылку \"%s\": %s\n" -#: initdb.c:3065 +#: initdb.c:3175 #, c-format msgid "%s: symlinks are not supported on this platform" -msgstr "%s: символьные ссылки не поддерживаются на этой платформе" +msgstr "%s: символические ссылки не поддерживаются в этой ОС" -#: initdb.c:3071 +#: initdb.c:3181 #, c-format msgid "creating subdirectories ... " -msgstr "создание поддиректорий ... " +msgstr "создание подкаталогов... " -#: initdb.c:3135 +#: initdb.c:3247 #, c-format msgid "" "\n" @@ -729,16 +784,14 @@ msgid "" "\n" msgstr "" "\n" -"Успех. Вы теперь можете запустить сервер баз данных:\n" +"Готово. Теперь вы можете запустить сервер баз данных:\n" "\n" " %s%s%spostgres%s -D %s%s%s\n" "или\n" " %s%s%spg_ctl%s -D %s%s%s -l logfile start\n" "\n" -#: ../../port/dirmod.c:75 -#: ../../port/dirmod.c:88 -#: ../../port/dirmod.c:101 +#: ../../port/dirmod.c:75 ../../port/dirmod.c:88 ../../port/dirmod.c:101 #, c-format msgid "out of memory\n" msgstr "нехватка памяти\n" @@ -746,105 +799,84 @@ msgstr "нехватка памяти\n" #: ../../port/dirmod.c:286 #, c-format msgid "could not set junction for \"%s\": %s\n" -msgstr "не удалось создать связь для \"%s\": %s\n" +msgstr "не удалось создать связь для каталога \"%s\": %s\n" + +#: ../../port/dirmod.c:361 +#, c-format +msgid "could not get junction for \"%s\": %s\n" +msgstr "не удалось получить связь для каталога \"%s\": %s\n" -#: ../../port/dirmod.c:325 +#: ../../port/dirmod.c:443 #, c-format msgid "could not open directory \"%s\": %s\n" -msgstr "не удалось открыть директорию \"%s\": %s\n" +msgstr "не удалось открыть каталог \"%s\": %s\n" -#: ../../port/dirmod.c:362 +#: ../../port/dirmod.c:480 #, c-format msgid "could not read directory \"%s\": %s\n" -msgstr "не удалось прочитать директорию \"%s\": %s\n" +msgstr "не удалось прочитать каталог \"%s\": %s\n" -#: ../../port/dirmod.c:445 +#: ../../port/dirmod.c:563 #, c-format msgid "could not stat file or directory \"%s\": %s\n" -msgstr "не удалось получить статус файла или директории \"%s\": %s\n" +msgstr "не удалось получить информацию о файле или каталоге \"%s\": %s\n" -#: ../../port/dirmod.c:472 -#: ../../port/dirmod.c:489 +#: ../../port/dirmod.c:590 ../../port/dirmod.c:607 #, c-format msgid "could not remove file or directory \"%s\": %s\n" -msgstr "не удалось удалить файл или директорию \"%s\": %s\n" +msgstr "ошибка при удалении файла или каталога \"%s\": %s\n" -#: ../../port/exec.c:125 -#: ../../port/exec.c:239 -#: ../../port/exec.c:282 +#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 #, c-format msgid "could not identify current directory: %s" -msgstr "не удалось идентифицировать текущую директорию: %s" +msgstr "не удалось определить текущий каталог: %s" #: ../../port/exec.c:144 #, c-format msgid "invalid binary \"%s\"" -msgstr "неверный бинарный \"%s\"" +msgstr "неверный исполняемый файл \"%s\"" #: ../../port/exec.c:193 #, c-format msgid "could not read binary \"%s\"" -msgstr "не удалось считать бинарный \"%s\"" +msgstr "не удалось прочитать исполняемый файл \"%s\"" #: ../../port/exec.c:200 #, c-format msgid "could not find a \"%s\" to execute" -msgstr "\"%s\" не найден для выполнения" +msgstr "не удалось найти запускаемый файл \"%s\"" -#: ../../port/exec.c:255 -#: ../../port/exec.c:291 +#: ../../port/exec.c:255 ../../port/exec.c:291 #, c-format msgid "could not change directory to \"%s\"" -msgstr "не удалось поменять директорию на \"%s\"" +msgstr "не удалось перейти в каталог \"%s\"" #: ../../port/exec.c:270 #, c-format msgid "could not read symbolic link \"%s\"" -msgstr "не удалось считать символическую ссылку \"%s\"" +msgstr "не удалось прочитать символическую ссылку \"%s\"" -#: ../../port/exec.c:516 +#: ../../port/exec.c:517 #, c-format msgid "child process exited with exit code %d" msgstr "дочерний процесс завершился с кодом возврата %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:521 #, c-format msgid "child process was terminated by exception 0x%X" -msgstr "дочерний процесс завершён исключением 0x%X" +msgstr "дочерний процесс прерван исключением 0x%X" -#: ../../port/exec.c:529 +#: ../../port/exec.c:530 #, c-format msgid "child process was terminated by signal %s" -msgstr "дочерний процесс завершён сигналом %s" +msgstr "дочерний процесс завершён по сигналу %s" -#: ../../port/exec.c:532 +#: ../../port/exec.c:533 #, c-format msgid "child process was terminated by signal %d" -msgstr "дочерний процесс завершён сигналом %d" +msgstr "дочерний процесс завершён по сигналу %d" -#: ../../port/exec.c:536 +#: ../../port/exec.c:537 #, c-format msgid "child process exited with unrecognized status %d" -msgstr "дочерний процесс завершился с нераспознанным статусом %d" - -#~ msgid "" -#~ "%s: The password file was not generated. Please report this problem.\n" -#~ msgstr "" -#~ "%s: Не удалось сгенерировать пароль. Пожалуйста, сообщите об этой " -#~ "проблеме.\n" - -#~ msgid "" -#~ " --locale=LOCALE initialize database cluster with given " -#~ "locale\n" -#~ msgstr "" -#~ " --locale=ЛОКАЛЬ инициализировать кластер баз данных с " -#~ "указанной локалью\n" - -#~ msgid "%s: could not determine valid short version string\n" -#~ msgstr "%s: не в состоянии определить правильную короткую строку версии\n" - -#~ msgid "enabling unlimited row size for system tables ... " -#~ msgstr "разрешение неограниченного размера строки для системных таблиц ... " - -#~ msgid "creating directory %s/%s ... " -#~ msgstr "создание директории %s/%s ... " +msgstr "дочерний процесс завершился с нераспознанным состоянием %d" diff --git a/src/bin/initdb/po/sv.po b/src/bin/initdb/po/sv.po index cfc3457280..e698bd1f3f 100644 --- a/src/bin/initdb/po/sv.po +++ b/src/bin/initdb/po/sv.po @@ -13,6 +13,7 @@ msgstr "" "PO-Revision-Date: 2010-09-25 00:47+0300\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: Swedish \n" +"Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/initdb/po/ta.po b/src/bin/initdb/po/ta.po deleted file mode 100644 index 5b4e50f1e8..0000000000 --- a/src/bin/initdb/po/ta.po +++ /dev/null @@ -1,782 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# This file is put in the public domain. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: Postgres Tamil Translation\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-09-21 09:15-0300\n" -"PO-Revision-Date: 2007-09-25 20:54+0530\n" -"Last-Translator: ஆமாச்சு \n" -"Language-Team: Ubuntu Tamil Team \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Tamil\n" -"X-Poedit-Country: INDIA\n" -"X-Poedit-SourceCharset: utf-8\n" - -#: initdb.c:264 -#: initdb.c:278 -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: நினைவில் இல்லை\n" - -#: initdb.c:387 -#: initdb.c:1666 -#, c-format -msgid "%s: could not open file \"%s\" for reading: %s\n" -msgstr "%s: \"%s\" கோப்பினை வாசிக்கும் பொருட்டுத் திறக்க இயலவில்லை: %s\n" - -#: initdb.c:449 -#: initdb.c:1184 -#: initdb.c:1213 -#, c-format -msgid "%s: could not open file \"%s\" for writing: %s\n" -msgstr "%s: \"%s\" கோப்பினை இயற்றும் பொருட்டு திறக்க இயலவில்லை: %s\n" - -#: initdb.c:457 -#: initdb.c:465 -#: initdb.c:1191 -#: initdb.c:1219 -#, c-format -msgid "%s: could not write file \"%s\": %s\n" -msgstr "%s: கோப்பினை இயற்ற இயலவில்லை \"%s\": %s\n" - -#: initdb.c:484 -#, c-format -msgid "%s: could not execute command \"%s\": %s\n" -msgstr "%s: ஆணையை நிறைவேற்ற இயலவில்லை \"%s\": %s\n" - -#: initdb.c:604 -#, c-format -msgid "%s: removing data directory \"%s\"\n" -msgstr "%s: தரவின் அடைவு அகற்றப் படுகின்றது \"%s\"\n" - -#: initdb.c:607 -#, c-format -msgid "%s: failed to remove data directory\n" -msgstr "%s: தரவின் அடைவினை அகற்ற இயவில்லை\n" - -#: initdb.c:613 -#, c-format -msgid "%s: removing contents of data directory \"%s\"\n" -msgstr "%s: தரவு அடைவில் இருப்பவை அகற்றப்படுகின்றன \"%s\"\n" - -#: initdb.c:616 -#, c-format -msgid "%s: failed to remove contents of data directory\n" -msgstr "%s: தரவு அடைவில் இருப்பனவற்றை அகற்ற இயலவில்லை\n" - -#: initdb.c:622 -#, c-format -msgid "%s: removing transaction log directory \"%s\"\n" -msgstr "%s: பரிமாற்றப் பதிவு அடைவு அகற்றப் படுகின்றது \"%s\"\n" - -#: initdb.c:625 -#, c-format -msgid "%s: failed to remove transaction log directory\n" -msgstr "%s: பரிமாற்றப் பதிவு அடைவினை அகற்ற இயலவில்லை\n" - -#: initdb.c:631 -#, c-format -msgid "%s: removing contents of transaction log directory \"%s\"\n" -msgstr "%s: பரிமாற்றப் பதிவு அடைவின் இருப்புக்கள் அகற்றப் படுகின்றன \"%s\"\n" - -#: initdb.c:634 -#, c-format -msgid "%s: failed to remove contents of transaction log directory\n" -msgstr "%s: பரிமாற்றப் பதிவு அடைவின் இருப்புக்களை அகற்ற இயலவில்லை\n" - -#: initdb.c:643 -#, c-format -msgid "%s: data directory \"%s\" not removed at user's request\n" -msgstr "%s: பயனரின் கோரிக்கைக்கு இணங்க தரவு அடைவு \"%s\" அகற்றப் படவில்லை\n" - -#: initdb.c:648 -#, c-format -msgid "%s: transaction log directory \"%s\" not removed at user's request\n" -msgstr "%s: பயனரின் கோரிக்கைக்கு இணங்க பரிமாற்றப் பதிவு அடைவு \"%s\" அகற்றப் படவில்லை\n" - -#: initdb.c:672 -#, c-format -msgid "" -"%s: cannot be run as root\n" -"Please log in (using, e.g., \"su\") as the (unprivileged) user that will\n" -"own the server process.\n" -msgstr "" -"%s: மூலவராக இயக்க இயலாது\n" -" வழங்கியின் பணிகளுக்கு உரிமையுள்ள \n" -" பயனராக (சலுகையற்ற) நுழையவும் (உ.ம்., \"su\" பயன்படுத்துவது).\n" - -#: initdb.c:718 -#, c-format -msgid "%s: \"%s\" is not a valid server encoding name\n" -msgstr "%s: \"%s:\" வழங்கியின் என்கோடிங் பெயர் செல்லாதது\n" - -#: initdb.c:878 -#, c-format -msgid "%s: warning: encoding mismatch\n" -msgstr "%s: எச்சரிக்கை: என்கோடிங் முரண்படுகிறது\n" - -#: initdb.c:880 -#, c-format -msgid "" -"The encoding you selected (%s) and the encoding that the selected\n" -"locale uses (%s) are not known to match. This might lead to\n" -"misbehavior in various character string processing functions. To fix\n" -"this situation, rerun %s and either do not specify an encoding\n" -"explicitly, or choose a matching combination.\n" -msgstr "" -"தாங்கள் தேர்வு செய்த என்கோடிங் வகையும் (%s) தேர்வு செய்யப் பட்ட \n" -"அகத்தின் என்கோடிங் வகையும் (%s) பொருந்தவில்லை. இது\n" -" சரங்களின் மீது பணிபுரியும் செயற்பாடுகளை பாதிக்கும். இதனைக்\n" -" களைய, %sனை என்கோடிங் வகையைக் கொடுக்காதவாறோ\n" -"அல்லது பொருந்தக் கூடிய ஒன்றைக் கொடுத்தோ மீள இயக்கவும்.\n" - -#: initdb.c:1109 -#: initdb.c:3144 -#, c-format -msgid "%s: could not create directory \"%s\": %s\n" -msgstr "%s: அடைவினை உருவாக்க இயலவில்லை \"%s\":%s\n" - -#: initdb.c:1138 -#, c-format -msgid "" -"%s: file \"%s\" does not exist\n" -"This means you have a corrupted installation or identified\n" -"the wrong directory with the invocation option -L.\n" -msgstr "" -"%s: \"%s\" கோப்பு இல்லை\n" -" அதாவது தாங்கள் பழுதடைந்த நிறுவலை கொண்டிருக்கிறீர்கள் அல்லது\n" -" துவக்கத் தேர்வு -L ஆக உள்ள தவறான அடைவினை இனங்கண்டுள்ளீர்கள். \n" - -#: initdb.c:1144 -#, c-format -msgid "" -"%s: could not access file \"%s\": %s\n" -"This might mean you have a corrupted installation or identified\n" -"the wrong directory with the invocation option -L.\n" -msgstr "" -"%s: \"%s\": %s கோப்பினை அணுக இயலவில்லை\n" -" தாங்கள் பழுதடைந்த நிறுவலை கொண்டிருக்கவேண்டும் அல்லது\n" -" துவக்கத் தேர்வு -L ஆக உள்ள தவறான அடைவினை இனங்கண்டிருக்க வேண்டும்.\n" - -#: initdb.c:1153 -#, c-format -msgid "" -"%s: file \"%s\" is not a regular file\n" -"This means you have a corrupted installation or identified\n" -"the wrong directory with the invocation option -L.\n" -msgstr "" -"%s: \"%s\" கோப்பு வழக்கதில் உள்ளது அல்ல. தாங்கள் பழுதடைந்த நிறுவலை கொண்டிருக்கவேண்டும் அல்லது\n" -" துவக்கத் தேர்வு -L ஆக உள்ள தவறான அடைவினை இனங்கண்டிருக்க வேண்டும்.\n" - -#: initdb.c:1265 -#, c-format -msgid "selecting default max_connections ... " -msgstr "இயல்பிருப்பாக இருக்க வேண்டிய max_connections தேர்வு செய்யப் படுகின்றது ..." - -#: initdb.c:1296 -#, c-format -msgid "selecting default shared_buffers/max_fsm_pages ... " -msgstr "இயல்பிருப்பு shared_buffers/max_fsm_pages தேர்வு செய்யப் படுகின்றது ..." - -#: initdb.c:1342 -msgid "creating configuration files ... " -msgstr "வடிவமைப்புக் கோப்புகள் உருவாக்கப் படுகின்றன ..." - -#: initdb.c:1511 -#, c-format -msgid "creating template1 database in %s/base/1 ... " -msgstr "%s/base/1 ல் வார்ப்பு1 தரவுக் களன் உருவாக்கப் படுகிறது ..." - -#: initdb.c:1527 -#, c-format -msgid "" -"%s: input file \"%s\" does not belong to PostgreSQL %s\n" -"Check your installation or specify the correct path using the option -L.\n" -msgstr "" -"%s: \"%s\" உள்ளீட்டுக் கோப்பு போஸ்ட்கிரெஸுக்கு சொந்தமானது அல்ல %s\n" -" தங்கள் நிறுவலை சரி பார்க்கவும் அல்லது -L தேர்வினைப் பயன்படுத்தி சரியானப் பாதையினைத் தரவும். \n" - -#: initdb.c:1605 -msgid "initializing pg_authid ... " -msgstr "pg_authid துவக்கப் படுகின்றது ..." - -#: initdb.c:1641 -msgid "Enter new superuser password: " -msgstr "புதிய முதன்மைப் பயனர் கடவுச் சொல்லை பதியவும்:" - -#: initdb.c:1642 -msgid "Enter it again: " -msgstr "மீண்டும் பதியவும்:" - -#: initdb.c:1645 -#, c-format -msgid "Passwords didn't match.\n" -msgstr "கடவுச் சொற்கள் பொருந்தவில்லை.\n" - -#: initdb.c:1672 -#, c-format -msgid "%s: could not read password from file \"%s\": %s\n" -msgstr "%s: கோப்பிலிருந்து கடவுச் சொல்லினை வாசிக்க இயலவில்லை \"%s\": %s\n" - -#: initdb.c:1685 -#, c-format -msgid "setting password ... " -msgstr "கடவுச் சொல் அமைக்கப்படுகின்றது..." - -#: initdb.c:1709 -#, c-format -msgid "%s: The password file was not generated. Please report this problem.\n" -msgstr "%s: கடவுச் சொல்லுக்கான கோப்பை உருவாக்க இயலவில்லை. இவ்வழுவினை தெரிவிக்கவும்.\n" - -#: initdb.c:1793 -msgid "initializing dependencies ... " -msgstr "சார்புடைமைகள் துவக்கப்படுகின்றன ..." - -#: initdb.c:1821 -msgid "creating system views ... " -msgstr "அமைப்பு பார்வைகள் உருவாக்கப் படுகின்றன ..." - -#: initdb.c:1857 -msgid "loading system objects' descriptions ... " -msgstr "வன் பொருட்களின் விவரங்கள் ஏற்றப்படுகின்றன..." - -#: initdb.c:1909 -msgid "creating conversions ... " -msgstr "மாற்றங்கள் உருவாக்கப் படுகின்றன..." - -#: initdb.c:1944 -msgid "creating dictionaries ... " -msgstr "அகராதிகள் உருவாக்கப் படுகின்றன..." - -#: initdb.c:1997 -msgid "setting privileges on built-in objects ... " -msgstr "உருவாக்கப் பட்டிருக்கும் பொருட்களுக்கு சலுகைகள் அமைக்கப் படுகின்றன ..." - -#: initdb.c:2055 -msgid "creating information schema ... " -msgstr "தகவல் ஸ்கீமா உருவாக்கப் படுகின்றாது ..." - -#: initdb.c:2111 -msgid "vacuuming database template1 ... " -msgstr "தரவுக் களத்தின் வார்ப்பு காலியாக்கப் படுகின்றது ..." - -#: initdb.c:2165 -msgid "copying template1 to template0 ... " -msgstr "வார்ப்பு1 வார்ப்பு0 க்கு நகலெடுக்கப் படுகின்றது ..." - -#: initdb.c:2196 -msgid "copying template1 to postgres ... " -msgstr "வார்ப்பு1 போஸ்ட்க்ரெஸுக்கு நகலெடுக்கப் படுகின்றது" - -#: initdb.c:2253 -#, c-format -msgid "caught signal\n" -msgstr "சமிக்ஞை பெறப் பட்டுள்ளது\n" - -#: initdb.c:2259 -#, c-format -msgid "could not write to child process: %s\n" -msgstr "துணைப் பணிக்குள் இயற்ற இயலவில்லை: %s\n" - -#: initdb.c:2267 -#, c-format -msgid "ok\n" -msgstr "சரி\n" - -#: initdb.c:2385 -#, c-format -msgid "%s: invalid locale name \"%s\"\n" -msgstr "%s: செல்லாத அகப் பெயர் \"%s\"\n" - -#: initdb.c:2536 -#, c-format -msgid "" -"%s initializes a PostgreSQL database cluster.\n" -"\n" -msgstr "" -"%s போஸ்ட்க்ரெஸிச் தரவு கள கூட்டத்தை துவக்கும். \n" -" \n" - -#: initdb.c:2537 -#, c-format -msgid "Usage:\n" -msgstr "பயன்பாடு:\n" - -#: initdb.c:2538 -#, c-format -msgid " %s [OPTION]... [DATADIR]\n" -msgstr " %s [OPTION]... [DATADIR]\n" - -#: initdb.c:2539 -#, c-format -msgid "" -"\n" -"Options:\n" -msgstr "" -"\n" -"தேர்வு:\n" - -#: initdb.c:2540 -#, c-format -msgid " [-D, --pgdata=]DATADIR location for this database cluster\n" -msgstr " [-D, --pgdata=]DATADIR தரவுக் கள கூட்டமைப்பிற்கான இருப்பு\n" - -#: initdb.c:2541 -#, c-format -msgid " -E, --encoding=ENCODING set default encoding for new databases\n" -msgstr " -E, --encoding=ENCODING புதிய தரவுக் களன்களுக்கு இயல்பான என்கோடிங்களை அமைக்கவும்\n" - -#: initdb.c:2542 -#, c-format -msgid " --locale=LOCALE initialize database cluster with given locale\n" -msgstr " --locale=LOCALE கொடுக்கப் பட்ட அகத்தினைக் கொண்டு தரவுக் கள கூட்டமைப்பை துவக்கவும்\n" - -#: initdb.c:2543 -#, c-format -msgid "" -" --lc-collate, --lc-ctype, --lc-messages=LOCALE\n" -" --lc-monetary, --lc-numeric, --lc-time=LOCALE\n" -" initialize database cluster with given locale\n" -" in the respective category (default taken from\n" -" environment)\n" -msgstr "" -" --lc-collate, --lc-ctype, --lc-messages=LOCALE\n" -" --lc-monetary, --lc-numeric, --lc-time=LOCALE\n" -" கொடுக்கப் பட்ட அகத்தினைக் கொண்டு தரவுக் கள கூட்டமைப்பை அததற்கான வகையிலிருந்து (இயல்பிருப்பு \n" -" பணிச்சூழலிலிருந்து எடுக்கப்படும்) துவக்கவும்\n" - -#: initdb.c:2548 -#, c-format -msgid " --no-locale equivalent to --locale=C\n" -msgstr " --no-locale equivalent to --locale=C\n" - -#: initdb.c:2549 -#, c-format -msgid " -T, --text-search-config=CFG\n" -msgstr " -T, --text-search-config=CFG\n" - -#: initdb.c:2550 -#, c-format -msgid " set default text search configuration\n" -msgstr " இயல்பிருப்பு உரைத் தேடல் வடிவமைப்பினை அமைக்கவும்.\n" - -#: initdb.c:2551 -#, c-format -msgid " -X, --xlogdir=XLOGDIR location for the transaction log directory\n" -msgstr " -X, --xlogdir=XLOGDIR பரிமாற்றப் பதிவுக்கான அடைவின் இருப்பு\n" - -#: initdb.c:2552 -#, c-format -msgid " -A, --auth=METHOD default authentication method for local connections\n" -msgstr " -A, --auth=METHOD உள்ளூர இணைப்புகளுக்கான அனுமதி முறை\n" - -#: initdb.c:2553 -#, c-format -msgid " -U, --username=NAME database superuser name\n" -msgstr " -U, --username=NAME தரவுக் கள முதன்மைப் பயனரின் பெயர்\n" - -#: initdb.c:2554 -#, c-format -msgid " -W, --pwprompt prompt for a password for the new superuser\n" -msgstr " -W, --pwprompt புதிய முதன்மைப் பயனருக்கான கடவுச் சொல்லைக் கோரவும்\n" - -#: initdb.c:2555 -#, c-format -msgid " --pwfile=FILE read password for the new superuser from file\n" -msgstr " --pwfile=FILE கோப்பிலிருந்து முதன்மைப் பயனருக்கான கடவுச் சொல்லை வாசிக்கவும்\n" - -#: initdb.c:2556 -#, c-format -msgid " -?, --help show this help, then exit\n" -msgstr " -?, --help இவ்வுதவியைக் காட்டிய பின் வெளிவருக\n" - -#: initdb.c:2557 -#, c-format -msgid " -V, --version output version information, then exit\n" -msgstr " -V, --version வெளியீட்டுத் தகவலைக் காட்டியப் பின் வெளிவருக\n" - -#: initdb.c:2558 -#, c-format -msgid "" -"\n" -"Less commonly used options:\n" -msgstr "" -"\n" -"அரிதாகப் பயன்படுத்தப் படும் தேர்வுகள்:\n" - -#: initdb.c:2559 -#, c-format -msgid " -d, --debug generate lots of debugging output\n" -msgstr " -d, --debug வழு ஆய்வறிக்கைகளை அதிகமாக கொணரவும்.\n" - -#: initdb.c:2560 -#, c-format -msgid " -s, --show show internal settings\n" -msgstr " -s, --show உள் அமைப்புகளைக் காட்டுக\n" - -#: initdb.c:2561 -#, c-format -msgid " -L DIRECTORY where to find the input files\n" -msgstr " -L DIRECTORY உள்ளீட்டு கோப்புகளை எங்கே கண்டெடுப்பது\n" - -#: initdb.c:2562 -#, c-format -msgid " -n, --noclean do not clean up after errors\n" -msgstr " -n, --noclean வழுக்களுக்குப் பிறகு துடைக்க வேண்டாம்.\n" - -#: initdb.c:2563 -#, c-format -msgid "" -"\n" -"If the data directory is not specified, the environment variable PGDATA\n" -"is used.\n" -msgstr "" -"\n" -" தரவின் அடைவு கொடுக்கப் படவில்லையெனின், பணிச்சுழல் மாறி PGDATA\n" -" பயன் படுத்தப் படும்.\n" - -#: initdb.c:2565 -#, c-format -msgid "" -"\n" -"Report bugs to .\n" -msgstr "" -"\n" -" வழுக்களை ற்குத் தெரியப் படுத்தவும். \n" - -#: initdb.c:2668 -#, c-format -msgid "Running in debug mode.\n" -msgstr "வழுஆய்வு முறையில் இயங்கிக் கொண்டிருக்கின்றது. \n" - -#: initdb.c:2672 -#, c-format -msgid "Running in noclean mode. Mistakes will not be cleaned up.\n" -msgstr "துடை தவிர் முறையில் இயங்கிக் கொண்டிருக்கின்றது. வழுக்கள் களையப் படாது.\n" - -#: initdb.c:2715 -#: initdb.c:2733 -#: initdb.c:3003 -#, c-format -msgid "Try \"%s --help\" for more information.\n" -msgstr "மேலும் விவரங்களுக்கு \"%s --help\" முயற்சிக்கவும்\n" - -#: initdb.c:2731 -#, c-format -msgid "%s: too many command-line arguments (first is \"%s\")\n" -msgstr "%s: முனைய-வரி மதிப்புகள் மிக அதிகமாக உள்ளன (முதலாவது \"%s\")\n" - -#: initdb.c:2740 -#, c-format -msgid "%s: password prompt and password file cannot be specified together\n" -msgstr "%s: மேலெழும்பு கடவுச்சொல்லும் கடவுச் சொல்லுக்கான கோப்பையும் ஒரு சேர வழங்க இயலாது\n" - -#: initdb.c:2746 -msgid "" -"\n" -"WARNING: enabling \"trust\" authentication for local connections\n" -"You can change this by editing pg_hba.conf or using the -A option the\n" -"next time you run initdb.\n" -msgstr "" -"\n" -"எச்சரிக்கை: உள் இணைப்புகளுக்கு\"trust\" அங்கீகாரம் வழங்கப்படுகிறது.\n" -"இதனை அடுத்த முறை initidb இயக்கும் போது \n" -" pg_hba.conf கோப்பினை தொகுப்பதன் மூலமாகவோ அல்லது -A தேர்வினை பயன்படுத்தியோ மாற்றிக் கொள்ளலாம்.\n" - -#: initdb.c:2769 -#, c-format -msgid "%s: unrecognized authentication method \"%s\"\n" -msgstr "%s: இனங்காண இயலாத சோதனை முறை \"%s\"\n" - -#: initdb.c:2779 -#, c-format -msgid "%s: must specify a password for the superuser to enable %s authentication\n" -msgstr "%s அனுமதியினை செயல்படுத்த முதன்மைப் பயனருக்கானக் கடவுச் சொல்லொன்றை %s: தருவது அவசியம்.\n" - -#: initdb.c:2794 -#, c-format -msgid "" -"%s: no data directory specified\n" -"You must identify the directory where the data for this database system\n" -"will reside. Do this with either the invocation option -D or the\n" -"environment variable PGDATA.\n" -msgstr "" -"%s: எந்தவொரு தரவு அடைவும் கொடுக்கப் படவில்லை\n" -" இத் தரவுக் கள அமைப்பின்\n" -"தரவுகள் உறையும் இடத்தினைத் தாங்கள் இனங்காண வேண்டும். துவக்கத் தேர்வு -D யின் துணைக் கொண்டோ அல்லது\n" -" பணிச்சூழலின் மாறி PGDATA வினைக் கொண்டோ இதனைச் செய்யவும்.\n" - -#: initdb.c:2870 -#, c-format -msgid "" -"The program \"postgres\" is needed by %s but was not found in the\n" -"same directory as \"%s\".\n" -"Check your installation.\n" -msgstr "" -"%s லுக்கு \"postgres\" நிரல் தேவைப்படுகிறது. \n" -"ஆனால் அதே அடைவில \"%s\" காணக்கிடைக்கவில்லை.\n" -"தங்களின் நிறுவலைச் சரிபார்க்கவும்.\n" - -#: initdb.c:2877 -#, c-format -msgid "" -"The program \"postgres\" was found by \"%s\"\n" -"but was not the same version as %s.\n" -"Check your installation.\n" -msgstr "" -"\"postgres\" நிரல் \"%s\"\n" -" ஆல் கண்டுபிடிக்கப்பட்டது. ஆனால் %s னை ஒத்த வெளியீடு அல்ல.\n" -" தங்கள் நிறுவலைச் சரி பார்க்கவும். \n" - -#: initdb.c:2896 -#, c-format -msgid "%s: input file location must be an absolute path\n" -msgstr "%s: உள்ளீட்டுக் கோப்பின் இருப்பு முழுமையான பாதையினைக் கொண்டிருத்தல் வேண்டும்\n" - -#: initdb.c:2904 -#, c-format -msgid "%s: could not determine valid short version string\n" -msgstr "%s: ஏற்க உகந்த சிறிய வகை சரத்தை கண்டெடுக்க இயலவில்லை\n" - -#: initdb.c:2963 -#, c-format -msgid "" -"The files belonging to this database system will be owned by user \"%s\".\n" -"This user must also own the server process.\n" -"\n" -msgstr "" -"இத் தரவுக் கள அமைப்பின் கோப்புகளின் உரிமையாளர் \"%s\".\n" -" வழங்கியின் பணிகளுக்கும் இவரே உரிமையாளராக இருத்தல் வேண்டும்.\n" -"\n" - -#: initdb.c:2973 -#, c-format -msgid "The database cluster will be initialized with locale %s.\n" -msgstr "தரவுக் கள கூட்டம் %s அகத்துடன் துவக்கப் படும். \n" - -#: initdb.c:2976 -#, c-format -msgid "" -"The database cluster will be initialized with locales\n" -" COLLATE: %s\n" -" CTYPE: %s\n" -" MESSAGES: %s\n" -" MONETARY: %s\n" -" NUMERIC: %s\n" -" TIME: %s\n" -msgstr "" -"தரவுக் கள கூட்டமைப்பு கீழ்காணும் அகங்களைக் கொண்டு துவக்கப் படும்\n" -"COLLATE: %s\n" -" CTYPE: %s\n" -" MESSAGES: %s\n" -" MONETARY: %s\n" -" NUMERIC: %s\n" -" TIME: %s\n" - -#: initdb.c:3001 -#, c-format -msgid "%s: could not find suitable encoding for locale \"%s\"\n" -msgstr "%s: அகத்திற்கு தகுந்த என்கோடிங் வகையை கண்டுபிடிக்க இயலவில்லை \"%s\"\n" - -#: initdb.c:3002 -#, c-format -msgid "Rerun %s with the -E option.\n" -msgstr "%s னை -E தேர்வுடன் மீண்டும் இயக்குக\n" - -#: initdb.c:3009 -#, c-format -msgid "The default database encoding has accordingly been set to %s.\n" -msgstr "தரவுக் களத்தின் இயல்பிருப்பு என்கோடிங் %s ஆக அமைக்கப் பட்டுள்ளது. \n" - -#: initdb.c:3023 -#, c-format -msgid "%s: could not find suitable text search configuration for locale \"%s\"\n" -msgstr "%s: தக்கதொரு உரை தேடல் வடிவமைப்பினை அகத்திற்காக கண்டெடுக்க இயலவில்லை \"%s\"\n" - -#: initdb.c:3034 -#, c-format -msgid "%s: warning: suitable text search configuration for locale \"%s\" is unknown\n" -msgstr "%s: எச்சரிக்கை: அகத்தின் உரைத் தேடலுக்குத் தகுந்த வடிவமைப்பு \"%s\" தெரியவில்லை\n" - -#: initdb.c:3039 -#, c-format -msgid "%s: warning: specified text search configuration \"%s\" may not match locale \"%s\"\n" -msgstr "%s: எச்சரிக்கை: கொடுக்கப் பட்ட உரைத் தேடல் வடிவமைப்பு \"%s\" அகத்தோடு பொருந்தாது போகலாம்\"%s\"\n" - -#: initdb.c:3044 -#, c-format -msgid "The default text search configuration will be set to \"%s\".\n" -msgstr "இயல்பாக அமையும் உரைத் தேடல் வடிவமைப்பு \"%s\" ஆக அமைக்கப் படும்.\n" - -#: initdb.c:3078 -#: initdb.c:3138 -#, c-format -msgid "creating directory %s ... " -msgstr "%s அடைவு உருவாக்கப் படுகிறது..." - -#: initdb.c:3092 -#: initdb.c:3157 -#, c-format -msgid "fixing permissions on existing directory %s ... " -msgstr "இருக்கக் கூடிய அடைவுகளில் உரிமங்கள் சரிசெய்யப் படுகின்றன %s ..." - -#: initdb.c:3098 -#: initdb.c:3163 -#, c-format -msgid "%s: could not change permissions of directory \"%s\": %s\n" -msgstr "%s: \"%s\": %sஅடைவிற்கான அனுமதிகளை மாற்ற இயலவில்லை\n" - -#: initdb.c:3111 -#, c-format -msgid "" -"%s: directory \"%s\" exists but is not empty\n" -"If you want to create a new database system, either remove or empty\n" -"the directory \"%s\" or run %s\n" -"with an argument other than \"%s\".\n" -msgstr "" -"%s: அடைவு \"%s\" இருந்தாலும் காலியாக இல்லை\n" -" தாங்கள் புதிய தரவுக் கள அமைப்பினை உருவாக்க நினைத்தால், ஒன்று அடைவினை அகற்றவோ அல்லது காலியோ\n" -" செய்யவும் \"%s\" அல்லது %s\n" -" னை \"%s\" மதிப்பினைத் தவிர வேறேதாவது கொடுத்து இயக்கவும்.\n" - -#: initdb.c:3120 -#: initdb.c:3183 -#, c-format -msgid "%s: could not access directory \"%s\": %s\n" -msgstr "%s: \"%s\": அடைவினை அணுக இயலவில்லை %s\n" - -#: initdb.c:3175 -#, c-format -msgid "" -"%s: directory \"%s\" exists but is not empty\n" -"If you want to store the transaction log there, either\n" -"remove or empty the directory \"%s\".\n" -msgstr "" -"%s: அடைவு \"%s\" உள்ளது ஆனால் காலியாக இல்லை\n" -" பரிமாற்றப் பதிவினை அவ்விடத்தே காக்க விரும்பிடின் ஒன்று\n" -" அடைவினை அகற்றவும் அல்லது காலி செய்யவும் \"%s\".\n" - -#: initdb.c:3191 -#, c-format -msgid "%s: could not create symbolic link \"%s\": %s\n" -msgstr "%s: இணைப்பு மாதிரிகளை உருவாக்க இயலவில்லை %s\": %s\n" - -#: initdb.c:3196 -#, c-format -msgid "%s: symlinks are not supported on this platform" -msgstr "இத் தளத்தில் இணைப்பு மாதிரிகள் ஆதரிக்கப் படுவதில்லை %s:" - -#: initdb.c:3202 -#, c-format -msgid "creating subdirectories ... " -msgstr "துணையடைவுகள் உருவாக்கப் படுகின்றன ..." - -#: initdb.c:3264 -#, c-format -msgid "" -"\n" -"Success. You can now start the database server using:\n" -"\n" -" %s%s%spostgres%s -D %s%s%s\n" -"or\n" -" %s%s%spg_ctl%s -D %s%s%s -l logfile start\n" -"\n" -msgstr "" -"\n" -"வெற்றி. கீழ்காணும் தகவல்களைப் பயன் படுத்தி தாங்கள் தரவுக் கள வழங்கியைத் துவக்கலாம்:\n" -"\n" -" %s%s%spostgres%s -D %s%s%s\n" -"or\n" -" %s%s%spg_ctl%s -D %s%s%s -l logfile start\n" -"\n" - -#: ../../port/dirmod.c:75 -#: ../../port/dirmod.c:88 -#: ../../port/dirmod.c:101 -#, c-format -msgid "out of memory\n" -msgstr "நினைவை மீறி\n" - -#: ../../port/dirmod.c:272 -#, c-format -msgid "could not set junction for \"%s\": %s\n" -msgstr "\"%s\": %s க்கான இணைப்பினை அமைக்க இயலவில்லை\n" - -#: ../../port/dirmod.c:312 -#, c-format -msgid "could not open directory \"%s\": %s\n" -msgstr "\"%s\": %s அடைவைத் திறக்க இயலவில்லை\n" - -#: ../../port/dirmod.c:349 -#, c-format -msgid "could not read directory \"%s\": %s\n" -msgstr "\"%s\": %s அடைவை வாசிக்க இயலவில்லை\n" - -#: ../../port/dirmod.c:447 -#, c-format -msgid "could not remove file or directory \"%s\": %s\n" -msgstr "\"%s\": %s அடைவையோக் கோப்பினையோ அகற்ற இயலவில்லை\n" - -#: ../../port/exec.c:192 -#: ../../port/exec.c:306 -#: ../../port/exec.c:349 -#, c-format -msgid "could not identify current directory: %s" -msgstr "தற்போதைய அடைவினை இனங்காண இயலவில்லை: %s" - -#: ../../port/exec.c:211 -#, c-format -msgid "invalid binary \"%s\"" -msgstr "செல்லாத இருமம் \"%s\"" - -#: ../../port/exec.c:260 -#, c-format -msgid "could not read binary \"%s\"" -msgstr "\"%s\" இருமத்தை வாசிக்க இயலவில்லை" - -#: ../../port/exec.c:267 -#, c-format -msgid "could not find a \"%s\" to execute" -msgstr "செயற்படுத்த \"%s\" னை கண்டுபிடிக்க இயலவில்லை" - -#: ../../port/exec.c:322 -#: ../../port/exec.c:358 -#, c-format -msgid "could not change directory to \"%s\"" -msgstr "அடைவை \"%s\" ஆக மாற்ற இயலவில்லை" - -#: ../../port/exec.c:337 -#, c-format -msgid "could not read symbolic link \"%s\"" -msgstr "\"%s\" இணைப்பு மாதிரிகளை வாசிக்க இயலவில்லை" - -#: ../../port/exec.c:583 -#, c-format -msgid "child process exited with exit code %d" -msgstr "துணைப் பணி வெளியேற்றக் குறியீடு %d யுடன் வெளிவந்தது" - -#: ../../port/exec.c:587 -#, c-format -msgid "child process was terminated by exception 0x%X" -msgstr "0x%X விதிவிலக்கால் துணைப் பணி தடைப் பட்டது" - -#: ../../port/exec.c:596 -#, c-format -msgid "child process was terminated by signal %s" -msgstr "சமிக்ஞை %s ஆல் துணைப் பணி தடைப் பட்டது" - -#: ../../port/exec.c:599 -#, c-format -msgid "child process was terminated by signal %d" -msgstr "சமிக்ஞை %d ஆல் துணைப் பணி தடைப்பட்டது" - -#: ../../port/exec.c:603 -#, c-format -msgid "child process exited with unrecognized status %d" -msgstr "அடையாளங்காண இயலாத நிலை %d யால் துணைப் பணி வெளிவந்தது" - diff --git a/src/bin/initdb/po/tr.po b/src/bin/initdb/po/tr.po index 3f162f28eb..9aa20bdbe9 100644 --- a/src/bin/initdb/po/tr.po +++ b/src/bin/initdb/po/tr.po @@ -6,10 +6,11 @@ msgid "" msgstr "" "Project-Id-Version: initdb-tr\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-08-31 20:02+0000\n" -"PO-Revision-Date: 2010-09-25 00:54+0300\n" +"POT-Creation-Date: 2011-08-29 20:39+0000\n" +"PO-Revision-Date: 2011-08-30 01:22+0200\n" "Last-Translator: Devrim GÜNDÜZ \n" "Language-Team: Turkish \n" +"Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -18,89 +19,89 @@ msgstr "" "X-Poedit-Country: TURKEY\n" "X-Poedit-Basepath: ../postgresql-8.0.3/src\n" -#: initdb.c:254 -#: initdb.c:268 +#: initdb.c:260 +#: initdb.c:274 #, c-format msgid "%s: out of memory\n" msgstr "%s: yetersiz bellek\n" -#: initdb.c:377 -#: initdb.c:1432 +#: initdb.c:383 +#: initdb.c:1289 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: \"%s\" dosyası, okunmak için açılamadı: %s\n" -#: initdb.c:433 -#: initdb.c:956 -#: initdb.c:985 +#: initdb.c:439 +#: initdb.c:805 +#: initdb.c:834 #, c-format msgid "%s: could not open file \"%s\" for writing: %s\n" msgstr "%s: \"%s\" dosyası, yazılmak için açılamadı: %s\n" -#: initdb.c:441 -#: initdb.c:449 -#: initdb.c:963 -#: initdb.c:991 +#: initdb.c:447 +#: initdb.c:455 +#: initdb.c:812 +#: initdb.c:840 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s: \"%s\" dosyasına yazılamadı: %s\n" -#: initdb.c:468 +#: initdb.c:474 #, c-format msgid "%s: could not execute command \"%s\": %s\n" msgstr "%s: \"%s\" komutu yürütme başlatma hatası: %s\n" -#: initdb.c:588 +#: initdb.c:490 #, c-format msgid "%s: removing data directory \"%s\"\n" msgstr "%s: veri dizini siliniyor \"%s\"\n" -#: initdb.c:591 +#: initdb.c:493 #, c-format msgid "%s: failed to remove data directory\n" msgstr "%s: veri dizini silme başarısız\n" -#: initdb.c:597 +#: initdb.c:499 #, c-format msgid "%s: removing contents of data directory \"%s\"\n" msgstr "%s: veri dizininin içindekiler siliniyor \"%s\"\n" -#: initdb.c:600 +#: initdb.c:502 #, c-format msgid "%s: failed to remove contents of data directory\n" msgstr "%s: veri dizininin içindekilerinin silme işlemini başarısız\n" -#: initdb.c:606 +#: initdb.c:508 #, c-format msgid "%s: removing transaction log directory \"%s\"\n" msgstr "%s: transaction log dizini siliniyor \"%s\"\n" -#: initdb.c:609 +#: initdb.c:511 #, c-format msgid "%s: failed to remove transaction log directory\n" msgstr "%s: transaction log dizini silme başarısız\n" -#: initdb.c:615 +#: initdb.c:517 #, c-format msgid "%s: removing contents of transaction log directory \"%s\"\n" msgstr "%s: transaction log dizininin içindekileri siliniyor \"%s\"\n" -#: initdb.c:618 +#: initdb.c:520 #, c-format msgid "%s: failed to remove contents of transaction log directory\n" msgstr "%s: transaction log dizininin içindekilerinin silme işlemini başarısız\n" -#: initdb.c:627 +#: initdb.c:529 #, c-format msgid "%s: data directory \"%s\" not removed at user's request\n" msgstr "%s: \"%s\" veri dizini kullanıcının isteği üzerine silinmedi\n" -#: initdb.c:632 +#: initdb.c:534 #, c-format msgid "%s: transaction log directory \"%s\" not removed at user's request\n" msgstr "%s: \"%s\" transaction log dizini kullanıcının isteği üzerine silinmedi\n" -#: initdb.c:654 +#: initdb.c:556 #, c-format msgid "" "%s: cannot be run as root\n" @@ -110,35 +111,35 @@ msgstr "" "%s: root olarak çalıştırılamaz.\n" "(Örneğin \"su\" kullanarak ) sunucu sürecinin sahibi olacak şekilde sisteme yetkisiz bir kullanıcı olarak giriş yapın.\n" -#: initdb.c:666 +#: initdb.c:568 #, c-format msgid "%s: could not obtain information about current user: %s\n" msgstr "%s: geçerli kullanıcı hakkında bilgi alınamadı: %s\n" -#: initdb.c:683 +#: initdb.c:585 #, c-format msgid "%s: could not get current user name: %s\n" msgstr "%s: geçerli kullanıcı adı alınamadı: %s\n" -#: initdb.c:714 +#: initdb.c:616 #, c-format msgid "%s: \"%s\" is not a valid server encoding name\n" msgstr "%s: \"%s\" geçerli bir dil kodlaması adı değil\n" -#: initdb.c:876 -#: initdb.c:3009 +#: initdb.c:725 +#: initdb.c:3173 #, c-format msgid "%s: could not create directory \"%s\": %s\n" msgstr "%s: \"%s\" dizini oluşturma başarısız: %s\n" -#: initdb.c:906 +#: initdb.c:755 #, c-format msgid "%s: file \"%s\" does not exist\n" msgstr "%s: \"%s\" dosyası mevcut değil\n" -#: initdb.c:908 -#: initdb.c:917 -#: initdb.c:927 +#: initdb.c:757 +#: initdb.c:766 +#: initdb.c:776 #, c-format msgid "" "This might mean you have a corrupted installation or identified\n" @@ -147,36 +148,36 @@ msgstr "" "Bu durum, bozulmus bir kurulumunuz olduğu ya da\n" "-L parametresi ile yanlış dizin belirttiğiniz anlamına gelir.\n" -#: initdb.c:914 +#: initdb.c:763 #, c-format msgid "%s: could not access file \"%s\": %s\n" msgstr "%s: \"%s\" dosyasına erişim hatası: %s\n" -#: initdb.c:925 +#: initdb.c:774 #, c-format msgid "%s: file \"%s\" is not a regular file\n" msgstr "%s: \"%s\" düzgün bir dosya değildir.\n" -#: initdb.c:1033 +#: initdb.c:882 #, c-format msgid "selecting default max_connections ... " msgstr "ön tanımlı max_connections seçiliyor ... " -#: initdb.c:1062 +#: initdb.c:911 #, c-format msgid "selecting default shared_buffers ... " msgstr "öntanımlı shared_buffers değeri seçiliyor ... " -#: initdb.c:1105 +#: initdb.c:954 msgid "creating configuration files ... " msgstr "yapılandırma dosyaları yaratılıyor ... " -#: initdb.c:1272 +#: initdb.c:1129 #, c-format msgid "creating template1 database in %s/base/1 ... " msgstr "%s/base/1 içinde template1 veritabanı yaratılıyor." -#: initdb.c:1288 +#: initdb.c:1145 #, c-format msgid "" "%s: input file \"%s\" does not belong to PostgreSQL %s\n" @@ -185,103 +186,132 @@ msgstr "" "%s: \"%s\" girdi dosyası PostgreSQL'e ait değil %s\n" "Kurulumunuzu kontrol edin ya da -L seçeneği ile doğru dizini belirtin.\n" -#: initdb.c:1373 +#: initdb.c:1230 msgid "initializing pg_authid ... " msgstr "pg_authid ilklendiriliyor ... " -#: initdb.c:1407 +#: initdb.c:1264 msgid "Enter new superuser password: " msgstr "Yeni superuser şifresini giriniz: " -#: initdb.c:1408 +#: initdb.c:1265 msgid "Enter it again: " msgstr "Yeniden giriniz: " -#: initdb.c:1411 +#: initdb.c:1268 #, c-format msgid "Passwords didn't match.\n" msgstr "Şifreler uyuşmadı.\n" -#: initdb.c:1438 +#: initdb.c:1295 #, c-format msgid "%s: could not read password from file \"%s\": %s\n" msgstr "%s: \"%s\" dosyasından şifre okunamadı: %s\n" -#: initdb.c:1451 +#: initdb.c:1308 #, c-format msgid "setting password ... " msgstr "şifre ayarlanıyor ... " -#: initdb.c:1549 +#: initdb.c:1408 msgid "initializing dependencies ... " msgstr "bağlılıklar ilklendiriliyor ... " -#: initdb.c:1577 +#: initdb.c:1436 msgid "creating system views ... " msgstr "sistem viewları yaratılıyor ... " -#: initdb.c:1613 +#: initdb.c:1472 msgid "loading system objects' descriptions ... " msgstr "sistem nesnelerinin açıklamaları yükleniyor ... " -#: initdb.c:1665 +#: initdb.c:1578 +msgid "creating collations ... " +msgstr "dönüşümler yükleniyor ..." + +#: initdb.c:1611 +#, c-format +msgid "%s: locale name too long, skipped: %s\n" +msgstr "%s:yerel adı çok uzun,: %s atlandı\n" + +#: initdb.c:1636 +#, c-format +msgid "%s: locale name has non-ASCII characters, skipped: %s\n" +msgstr "%s:yerel adı ASCII olmayan karakterler içeriyor, atlanan: %s\n" + +#: initdb.c:1699 +#, c-format +msgid "No usable system locales were found.\n" +msgstr "Kullanılabilir sistem yerelleri bulunamadı. \n" + +#: initdb.c:1700 +#, c-format +msgid "Use the option \"--debug\" to see details.\n" +msgstr "Ayrıntıları görmek için \"--debug\" seçeneğini kullanınız. \n" + +#: initdb.c:1703 +#, c-format +msgid "not supported on this platform\n" +msgstr "bu platformda desteklenmiyor\n" + +#: initdb.c:1718 msgid "creating conversions ... " msgstr "dönüşümler yükleniyor ... " -#: initdb.c:1700 +#: initdb.c:1753 msgid "creating dictionaries ... " msgstr "sözlükler oluşturuluyor ... " -#: initdb.c:1754 +#: initdb.c:1807 msgid "setting privileges on built-in objects ... " msgstr "gömülü nesnelerdeki izinler ayarlanıyor ... " -#: initdb.c:1812 +#: initdb.c:1865 msgid "creating information schema ... " msgstr "information schema yaratılıyor ... " -#: initdb.c:1868 +#: initdb.c:1921 msgid "loading PL/pgSQL server-side language ... " msgstr "PL/pgSQL sunucu tarafı dili yükleniyor ... " -#: initdb.c:1893 +#: initdb.c:1946 msgid "vacuuming database template1 ... " msgstr "template1 veritabanı vakumlanıyor ... " -#: initdb.c:1947 +#: initdb.c:2002 msgid "copying template1 to template0 ... " msgstr "template1 template0'a kopyalanıyor ... " -#: initdb.c:1978 +#: initdb.c:2034 msgid "copying template1 to postgres ... " msgstr "template1, postgres'e kopyalanıyor ... " -#: initdb.c:2035 +#: initdb.c:2091 #, c-format msgid "caught signal\n" msgstr "sinyal yakalandı\n" -#: initdb.c:2041 +#: initdb.c:2097 #, c-format msgid "could not write to child process: %s\n" msgstr "çocuk sürece yazılamadı: %s\n" -#: initdb.c:2049 +#: initdb.c:2105 #, c-format msgid "ok\n" msgstr "tamam\n" -#: initdb.c:2169 +#: initdb.c:2225 #, c-format msgid "%s: invalid locale name \"%s\"\n" msgstr "%s: geçersiz yerel adı \"%s\"\n" -#: initdb.c:2195 +#: initdb.c:2251 #, c-format msgid "%s: encoding mismatch\n" msgstr "%s: dil kodlaması uyuşmazlığı\n" -#: initdb.c:2197 +#: initdb.c:2253 #, c-format msgid "" "The encoding you selected (%s) and the encoding that the\n" @@ -296,7 +326,7 @@ msgstr "" " düzeltebilmek için %s komutunu yeniden çalıştırın ve de ya kodlama \n" " belirtmeyin ya da eşleştirilebilir bir kodlama seçin.\n" -#: initdb.c:2378 +#: initdb.c:2514 #, c-format msgid "" "%s initializes a PostgreSQL database cluster.\n" @@ -305,17 +335,17 @@ msgstr "" "%sbir PostgreSQL Veritabanı kümesini ilklendirir.\n" "\n" -#: initdb.c:2379 +#: initdb.c:2515 #, c-format msgid "Usage:\n" msgstr "Kullanımı:\n" -#: initdb.c:2380 +#: initdb.c:2516 #, c-format msgid " %s [OPTION]... [DATADIR]\n" msgstr " %s [SEÇENEK]... [DATADIR]\n" -#: initdb.c:2381 +#: initdb.c:2517 #, c-format msgid "" "\n" @@ -324,27 +354,27 @@ msgstr "" "\n" "Seçenekler:\n" -#: initdb.c:2382 +#: initdb.c:2518 #, c-format msgid " -A, --auth=METHOD default authentication method for local connections\n" msgstr " -A, --auth=METHOD yerel bağlantılar için ön tanımlı yetkilendirme yöntemi\n" -#: initdb.c:2383 +#: initdb.c:2519 #, c-format msgid " [-D, --pgdata=]DATADIR location for this database cluster\n" msgstr "[-D, --pgdata=]DATADIR bu veritabanı kümesi için yer\n" -#: initdb.c:2384 +#: initdb.c:2520 #, c-format msgid " -E, --encoding=ENCODING set default encoding for new databases\n" msgstr " -E, --encoding=ENCODING yeni veritabanları için öntanımlı dil kodlamasını ayarlar\n" -#: initdb.c:2385 +#: initdb.c:2521 #, c-format msgid " --locale=LOCALE set default locale for new databases\n" msgstr " --locale=LOCALE yeni veritabanı için öntanımlı yerel\n" -#: initdb.c:2386 +#: initdb.c:2522 #, c-format msgid "" " --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n" @@ -357,17 +387,17 @@ msgstr "" " yeni veritabanları için ilgili kategorideki öntanımlı yerel bilgisini\n" " çevrede değişkenlerinden al\n" -#: initdb.c:2390 +#: initdb.c:2526 #, c-format msgid " --no-locale equivalent to --locale=C\n" msgstr " --no-locale --locale=C'ye eşdeğer\n" -#: initdb.c:2391 +#: initdb.c:2527 #, c-format msgid " --pwfile=FILE read password for the new superuser from file\n" msgstr " --pwfile=DOSYA yeni superuser için parolayı dosyadan oku\n" -#: initdb.c:2392 +#: initdb.c:2528 #, c-format msgid "" " -T, --text-search-config=CFG\n" @@ -376,22 +406,22 @@ msgstr "" " -T, --text-search-config=CFG\n" " öntanımlı metin arama yapılandırması\n" -#: initdb.c:2394 +#: initdb.c:2530 #, c-format msgid " -U, --username=NAME database superuser name\n" msgstr " -U, --username=NAME veritabanı superuser kullanıcısı adı\n" -#: initdb.c:2395 +#: initdb.c:2531 #, c-format msgid " -W, --pwprompt prompt for a password for the new superuser\n" msgstr " -W, --pwprompt yeni superuser için şifre sorar\n" -#: initdb.c:2396 +#: initdb.c:2532 #, c-format msgid " -X, --xlogdir=XLOGDIR location for the transaction log directory\n" msgstr " -X, --xlogdir=XLOGDIR transaction log dizini\n" -#: initdb.c:2397 +#: initdb.c:2533 #, c-format msgid "" "\n" @@ -400,27 +430,27 @@ msgstr "" "\n" "Daha az kullanılan seçenekler:\n" -#: initdb.c:2398 +#: initdb.c:2534 #, c-format msgid " -d, --debug generate lots of debugging output\n" msgstr " -d, --debug bol miktarda debug çıktısı üretir\n" -#: initdb.c:2399 +#: initdb.c:2535 #, c-format msgid " -L DIRECTORY where to find the input files\n" msgstr " -L DIRECTORY girdi dosyalarının nerede bulunacağını belirtir\n" -#: initdb.c:2400 +#: initdb.c:2536 #, c-format msgid " -n, --noclean do not clean up after errors\n" msgstr " -n, --noclean hatalardan sonra temizlik yapma\n" -#: initdb.c:2401 +#: initdb.c:2537 #, c-format msgid " -s, --show show internal settings\n" msgstr " -s, --show dahili ayarları gösterir\n" -#: initdb.c:2402 +#: initdb.c:2538 #, c-format msgid "" "\n" @@ -429,17 +459,17 @@ msgstr "" "\n" "Diğer seçenekler:\n" -#: initdb.c:2403 +#: initdb.c:2539 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help bu yardımı gösterir ve sonra çıkar\n" -#: initdb.c:2404 +#: initdb.c:2540 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version sürüm bilgisini gösterir ve sonra çıkar\n" -#: initdb.c:2405 +#: initdb.c:2541 #, c-format msgid "" "\n" @@ -449,7 +479,7 @@ msgstr "" "\n" "Eğer veri dizini belirtilmezse, PGDATA çevresel değişkeni kullanılacaktır\n" -#: initdb.c:2407 +#: initdb.c:2543 #, c-format msgid "" "\n" @@ -458,34 +488,34 @@ msgstr "" "\n" "Hataları adresine bildirebilirsiniz.\n" -#: initdb.c:2512 +#: initdb.c:2649 #, c-format msgid "Running in debug mode.\n" msgstr "Debug modunda çalışıyor.\n" -#: initdb.c:2516 +#: initdb.c:2653 #, c-format msgid "Running in noclean mode. Mistakes will not be cleaned up.\n" msgstr "noclean modunda çalışıyor. Hatalar silinmeyecek.\n" -#: initdb.c:2559 -#: initdb.c:2577 -#: initdb.c:2845 +#: initdb.c:2696 +#: initdb.c:2714 +#: initdb.c:2996 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Ayrıntılı bilgi için \"%s --help\" komutunu deneyebilirsiniz.\n" -#: initdb.c:2575 +#: initdb.c:2712 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: Çok fazla komut satırı girdisi var (ilki \"%s\")\n" -#: initdb.c:2584 +#: initdb.c:2721 #, c-format msgid "%s: password prompt and password file cannot be specified together\n" msgstr "%s: şifre promptu ve şifre dosyası birlikte belirtilemez\n" -#: initdb.c:2590 +#: initdb.c:2727 msgid "" "\n" "WARNING: enabling \"trust\" authentication for local connections\n" @@ -497,17 +527,17 @@ msgstr "" "Bunu, pg_hba.conf dosyasını düzenleyerek ya da initdb'yi yeniden \n" " çalıştırdığınızda -A parametresi ile değiştirebilirsiniz..\n" -#: initdb.c:2613 +#: initdb.c:2750 #, c-format msgid "%s: unrecognized authentication method \"%s\"\n" msgstr "%s: bilinmeyen yetkilendirme yöntemi\"%s\".\n" -#: initdb.c:2623 +#: initdb.c:2760 #, c-format msgid "%s: must specify a password for the superuser to enable %s authentication\n" msgstr "%s: %s yetkilendirmesini etkinleştirmek için superuser'a şifre atamanız gerekmektedir.\n" -#: initdb.c:2638 +#: initdb.c:2789 #, c-format msgid "" "%s: no data directory specified\n" @@ -519,7 +549,7 @@ msgstr "" "Bu veritabanı sistemi için verinin hangi dizinde duracağını belirtmeniz gerekmektedir.\n" "Bunu ya -D seçeneği ile ya da PGDATA çevresel değişkeni ile yapabilirsiniz.\n" -#: initdb.c:2722 +#: initdb.c:2873 #, c-format msgid "" "The program \"postgres\" is needed by %s but was not found in the\n" @@ -530,7 +560,7 @@ msgstr "" "ile aynı dizinde bulunamadı.\n" "Kurulumunuzu kontrol ediniz.\n" -#: initdb.c:2729 +#: initdb.c:2880 #, c-format msgid "" "The program \"postgres\" was found by \"%s\"\n" @@ -541,12 +571,12 @@ msgstr "" "ile aynı sürüm numarasına sahip değil.\n" "Kurulumunuzu kontrol ediniz.\n" -#: initdb.c:2748 +#: initdb.c:2899 #, c-format msgid "%s: input file location must be an absolute path\n" msgstr "%s: girdi dosyasının yeri mutlak bir yol olmalıdır\n" -#: initdb.c:2805 +#: initdb.c:2956 #, c-format msgid "" "The files belonging to this database system will be owned by user \"%s\".\n" @@ -557,12 +587,12 @@ msgstr "" "Bu kullanıcı aynı zamanda sunucu sürecinin de sahibi olmalıdır.\n" "\n" -#: initdb.c:2815 +#: initdb.c:2966 #, c-format msgid "The database cluster will be initialized with locale %s.\n" msgstr "Veritabanı kümesi %s yereli ile ilklendirilecek.\n" -#: initdb.c:2818 +#: initdb.c:2969 #, c-format msgid "" "The database cluster will be initialized with locales\n" @@ -581,22 +611,31 @@ msgstr "" " NUMERIC: %s\n" " TIME: %s\n" -#: initdb.c:2842 +#: initdb.c:2993 #, c-format msgid "%s: could not find suitable encoding for locale %s\n" msgstr "%s: %s yereli için uygun dil kodlaması bulunamadı.\n" -#: initdb.c:2844 +#: initdb.c:2995 #, c-format msgid "Rerun %s with the -E option.\n" msgstr "%s komutunu -E seçeneği ile yeniden çalıştırın.\n" -#: initdb.c:2853 +#: initdb.c:3008 +#, 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 "" +"%s dil kodlaması sunucu tarafında izin verilen bir dil kodlaması değildir\n" +"Bunun yerine, öntanımlı veritabanı dil kodlaması %s olacaktır.\n" + +#: initdb.c:3016 #, c-format msgid "%s: locale %s requires unsupported encoding %s\n" msgstr "%s: %s yereli desteklenmeyen %s dil kodlamasını gerektirir\n" -#: initdb.c:2856 +#: initdb.c:3019 #, c-format msgid "" "Encoding %s is not allowed as a server-side encoding.\n" @@ -605,56 +644,56 @@ msgstr "" "%s dil kodlaması sunucu tarafında izin verilen bir dil kodlaması değildir\n" " %s'i değişik bir dil seçimi ile tekrar çalıştırın.\n" -#: initdb.c:2864 +#: initdb.c:3028 #, c-format msgid "The default database encoding has accordingly been set to %s.\n" msgstr "Öntanımlı veritabanı dil kodlaması %s olarak ayarlandı.\n" -#: initdb.c:2881 +#: initdb.c:3045 #, c-format msgid "%s: could not find suitable text search configuration for locale %s\n" msgstr "%s: \"%s\" yereli için uygun metin arama yapılandırması bulunamadı.\n" -#: initdb.c:2892 +#: initdb.c:3056 #, c-format msgid "%s: warning: suitable text search configuration for locale %s is unknown\n" msgstr "%s: uyarı: %s yereli için uygun metin arama yapılandırması bilinmiyor.\n" -#: initdb.c:2897 +#: initdb.c:3061 #, c-format msgid "%s: warning: specified text search configuration \"%s\" might not match locale %s\n" msgstr "%s: uyarı: belirtilen metin arama yapılandırması \"%s\", %s yereli ile eşleşmeyebilir\n" -#: initdb.c:2902 +#: initdb.c:3066 #, c-format msgid "The default text search configuration will be set to \"%s\".\n" msgstr "Öntanımlı metin arama yapılandırması \"%s\" olarak ayarlanacak.\n" -#: initdb.c:2936 -#: initdb.c:3003 +#: initdb.c:3100 +#: initdb.c:3167 #, c-format msgid "creating directory %s ... " msgstr "%s dizini yaratılıyor ... " -#: initdb.c:2950 -#: initdb.c:3020 +#: initdb.c:3114 +#: initdb.c:3185 #, c-format msgid "fixing permissions on existing directory %s ... " msgstr "mevcut %s dizininin izinleri düzeltiliyor ... " -#: initdb.c:2956 -#: initdb.c:3026 +#: initdb.c:3120 +#: initdb.c:3191 #, c-format msgid "%s: could not change permissions of directory \"%s\": %s\n" msgstr "%s: \"%s\" dizininin erişim haklarını değiştirilemiyor: %s\n" -#: initdb.c:2969 -#: initdb.c:3038 +#: initdb.c:3133 +#: initdb.c:3204 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: \"%s\" dizini mevcut, ama boş değil\n" -#: initdb.c:2972 +#: initdb.c:3136 #, c-format msgid "" "If you want to create a new database system, either remove or empty\n" @@ -665,18 +704,18 @@ msgstr "" "kaldırın, ya boşaltın ya da ya da %s 'i \n" "\"%s\" argümanından başka bir argüman ile çalıştırın.\n" -#: initdb.c:2980 -#: initdb.c:3048 +#: initdb.c:3144 +#: initdb.c:3214 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: \"%s\" dizine erişim hatası: %s\n" -#: initdb.c:2994 +#: initdb.c:3158 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" msgstr "%s: transaction log dizini mutlak bir yol olmalıdır\n" -#: initdb.c:3041 +#: initdb.c:3207 #, c-format msgid "" "If you want to store the transaction log there, either\n" @@ -685,22 +724,22 @@ msgstr "" "Eğer transaction kayıt dosyasını saklamak istiyorsanız, \n" "\"%s\" dizinini kaldırın ya da boşaltın\n" -#: initdb.c:3060 +#: initdb.c:3226 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" msgstr "%s: symbolic link \"%s\" oluşturma hatası: %s\n" -#: initdb.c:3065 +#: initdb.c:3231 #, c-format msgid "%s: symlinks are not supported on this platform" msgstr "%s: bu platformda sembolik bağlantı desteklenmemektedir" -#: initdb.c:3071 +#: initdb.c:3237 #, c-format msgid "creating subdirectories ... " msgstr "alt dizinler oluşturuluyor ... " -#: initdb.c:3135 +#: initdb.c:3303 #, c-format msgid "" "\n" @@ -732,23 +771,28 @@ msgstr "bellek yetersiz\n" msgid "could not set junction for \"%s\": %s\n" msgstr "\"%s\" junction ayarlama hatası: %s\n" -#: ../../port/dirmod.c:325 +#: ../../port/dirmod.c:361 +#, c-format +msgid "could not get junction for \"%s\": %s\n" +msgstr "\"%s\" için junction bulunamadıı: %s\n" + +#: ../../port/dirmod.c:443 #, c-format msgid "could not open directory \"%s\": %s\n" msgstr "\"%s\" dizini açma başarısız: %s\n" -#: ../../port/dirmod.c:362 +#: ../../port/dirmod.c:480 #, c-format msgid "could not read directory \"%s\": %s\n" msgstr "\"%s\" dizini okuma başarısız: %s\n" -#: ../../port/dirmod.c:445 +#: ../../port/dirmod.c:563 #, c-format msgid "could not stat file or directory \"%s\": %s\n" msgstr "\"%s\" dosya ya da dizini bulunamadı: %s\n" -#: ../../port/dirmod.c:472 -#: ../../port/dirmod.c:489 +#: ../../port/dirmod.c:590 +#: ../../port/dirmod.c:607 #, c-format msgid "could not remove file or directory \"%s\": %s\n" msgstr "\"%s\" dizini kaldırma başarısız: %s\n" @@ -786,27 +830,28 @@ msgstr "çalışma dizini \"%s\" olarak değiştirilemedi" msgid "could not read symbolic link \"%s\"" msgstr "symbolic link \"%s\" okuma hatası" -#: ../../port/exec.c:516 +#: ../../port/exec.c:517 #, c-format msgid "child process exited with exit code %d" msgstr "alt süreç %d çıkış koduyla sonuçlandırılmıştır" -#: ../../port/exec.c:520 +#: ../../port/exec.c:521 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "alt süreç 0x%X exception tarafından sonlandırılmıştır" -#: ../../port/exec.c:529 +#: ../../port/exec.c:530 #, c-format msgid "child process was terminated by signal %s" msgstr "alt süreç %s sinyali tarafından sonlandırılmıştır" -#: ../../port/exec.c:532 +#: ../../port/exec.c:533 #, c-format msgid "child process was terminated by signal %d" msgstr "alt süreç %d sinyali tarafından sonlandırılmıştır" -#: ../../port/exec.c:536 +#: ../../port/exec.c:537 #, c-format msgid "child process exited with unrecognized status %d" msgstr "alt süreç %d bilinmeyen durumu ile sonlandırılmıştır" + diff --git a/src/bin/initdb/po/zh_CN.po b/src/bin/initdb/po/zh_CN.po index ce60473f9f..376e10c694 100644 --- a/src/bin/initdb/po/zh_CN.po +++ b/src/bin/initdb/po/zh_CN.po @@ -6,90 +6,91 @@ msgid "" msgstr "" "Project-Id-Version: initdb (PostgreSQL 9.0)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-10-01 14:40+0000\n" -"PO-Revision-Date: 2010-09-26 09:05+0800\n" +"POT-Creation-Date: 2013-01-29 13:57+0000\n" +"PO-Revision-Date: 2012-03-11 23:02+0200\n" "Last-Translator: Weibin \n" "Language-Team: Chinese (Simplified)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: initdb.c:254 initdb.c:268 +#: initdb.c:259 initdb.c:273 #, c-format msgid "%s: out of memory\n" msgstr "%s: 内存溢出\n" -#: initdb.c:377 initdb.c:1432 +#: initdb.c:383 initdb.c:1289 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: 为了读取, 无法打开文件 \"%s\": %s\n" -#: initdb.c:433 initdb.c:956 initdb.c:985 +#: initdb.c:439 initdb.c:805 initdb.c:834 #, c-format msgid "%s: could not open file \"%s\" for writing: %s\n" msgstr "%s: 为了写, 无法打开文件 \"%s\": %s\n" -#: initdb.c:441 initdb.c:449 initdb.c:963 initdb.c:991 +#: initdb.c:447 initdb.c:455 initdb.c:812 initdb.c:840 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s: 无法写文件 \"%s\": %s\n" -#: initdb.c:468 +#: initdb.c:474 #, c-format msgid "%s: could not execute command \"%s\": %s\n" msgstr "%s: 无法执行命令 \"%s\": %s\n" -#: initdb.c:588 +#: initdb.c:490 #, c-format msgid "%s: removing data directory \"%s\"\n" msgstr "%s: 删除数据目录 \"%s\"\n" -#: initdb.c:591 +#: initdb.c:493 #, c-format msgid "%s: failed to remove data directory\n" msgstr "%s: 删除数据目录失败\n" -#: initdb.c:597 +#: initdb.c:499 #, c-format msgid "%s: removing contents of data directory \"%s\"\n" msgstr "%s: 删除数据目录 \"%s\" 的内容\n" -#: initdb.c:600 +#: initdb.c:502 #, c-format msgid "%s: failed to remove contents of data directory\n" msgstr "%s: 删除数据目录内容失败\n" -#: initdb.c:606 +#: initdb.c:508 #, c-format msgid "%s: removing transaction log directory \"%s\"\n" msgstr "%s: 正在删除事务日志文件目录 \"%s\"\n" -#: initdb.c:609 +#: initdb.c:511 #, c-format msgid "%s: failed to remove transaction log directory\n" msgstr "%s: 删除数据目录失败\n" -#: initdb.c:615 +#: initdb.c:517 #, c-format msgid "%s: removing contents of transaction log directory \"%s\"\n" msgstr "%s: 删除事务日志目录 \"%s\" 的内容\n" -#: initdb.c:618 +#: initdb.c:520 #, c-format msgid "%s: failed to remove contents of transaction log directory\n" msgstr "%s: 删除事务日志目录的内容失败\n" -#: initdb.c:627 +#: initdb.c:529 #, c-format msgid "%s: data directory \"%s\" not removed at user's request\n" msgstr "%s: 在用户的要求下数据库目录 \"%s\" 不被删除\n" -#: initdb.c:632 +#: initdb.c:534 #, c-format msgid "%s: transaction log directory \"%s\" not removed at user's request\n" msgstr "%s: 在用户的要求下不删除事务日志目录 \"%s\"\n" -#: initdb.c:654 +#: initdb.c:556 #, c-format msgid "" "%s: cannot be run as root\n" @@ -100,32 +101,32 @@ msgstr "" "请以服务器进程所有者的用户 (无特权) 身份\n" "登陆 (使用, e.g., \"su\").\n" -#: initdb.c:666 +#: initdb.c:568 #, c-format msgid "%s: could not obtain information about current user: %s\n" msgstr "%s: 无法获得当前用户的信息: %s\n" -#: initdb.c:683 +#: initdb.c:585 #, c-format msgid "%s: could not get current user name: %s\n" msgstr "%s: 无法获取当前用户名称: %s\n" -#: initdb.c:714 +#: initdb.c:616 #, c-format msgid "%s: \"%s\" is not a valid server encoding name\n" msgstr "%s: \"%s\" 不是一个有效的服务器编码名字\n" -#: initdb.c:876 initdb.c:3009 +#: initdb.c:725 initdb.c:3118 #, c-format msgid "%s: could not create directory \"%s\": %s\n" msgstr "%s: 无法创建目录 \"%s\": %s\n" -#: initdb.c:906 +#: initdb.c:755 #, c-format msgid "%s: file \"%s\" does not exist\n" msgstr "%s: 文件 \"%s\" 不存在\n" -#: initdb.c:908 initdb.c:917 initdb.c:927 +#: initdb.c:757 initdb.c:766 initdb.c:776 #, c-format msgid "" "This might mean you have a corrupted installation or identified\n" @@ -134,36 +135,36 @@ msgstr "" "这意味着您的安装发生了错误或\n" "使用 -L 选项指定了错误的路径.\n" -#: initdb.c:914 +#: initdb.c:763 #, c-format msgid "%s: could not access file \"%s\": %s\n" msgstr "%s: 无法访问文件 \"%s\": %s\n" -#: initdb.c:925 +#: initdb.c:774 #, c-format msgid "%s: file \"%s\" is not a regular file\n" msgstr "%s: 文件 \"%s\" 不是常规文件\n" -#: initdb.c:1033 +#: initdb.c:882 #, c-format msgid "selecting default max_connections ... " msgstr "选择默认最大联接数 (max_connections) ... " -#: initdb.c:1062 +#: initdb.c:911 #, c-format msgid "selecting default shared_buffers ... " msgstr "选择默认共享缓冲区大小 (shared_buffers) ... " -#: initdb.c:1105 +#: initdb.c:954 msgid "creating configuration files ... " msgstr "创建配置文件 ... " -#: initdb.c:1272 +#: initdb.c:1129 #, c-format msgid "creating template1 database in %s/base/1 ... " msgstr "在 %s/base/1 中创建 template1 数据库 ... " -#: initdb.c:1288 +#: initdb.c:1145 #, c-format msgid "" "%s: input file \"%s\" does not belong to PostgreSQL %s\n" @@ -172,103 +173,133 @@ msgstr "" "%s: 输入文件 \"%s\" 不属于 PostgreSQL %s\n" "检查你的安装或使用 -L 选项指定正确的路径.\n" -#: initdb.c:1373 +#: initdb.c:1230 msgid "initializing pg_authid ... " msgstr "初始化 pg_authid ... " -#: initdb.c:1407 +#: initdb.c:1264 msgid "Enter new superuser password: " msgstr "输入新的超级用户口令: " -#: initdb.c:1408 +#: initdb.c:1265 msgid "Enter it again: " msgstr "再输入一遍: " -#: initdb.c:1411 +#: initdb.c:1268 #, c-format msgid "Passwords didn't match.\n" msgstr "口令不匹配.\n" -#: initdb.c:1438 +#: initdb.c:1295 #, c-format msgid "%s: could not read password from file \"%s\": %s\n" msgstr "%s: 无法从文件 \"%s\" 读取口令: %s\n" -#: initdb.c:1451 +#: initdb.c:1308 #, c-format msgid "setting password ... " msgstr "设置口令 ... " -#: initdb.c:1549 +#: initdb.c:1408 msgid "initializing dependencies ... " msgstr "初始化dependencies ... " -#: initdb.c:1577 +#: initdb.c:1436 msgid "creating system views ... " msgstr "创建系统视图 ... " -#: initdb.c:1613 +#: initdb.c:1472 msgid "loading system objects' descriptions ... " msgstr "正在加载系统对象描述 ..." -#: initdb.c:1665 +#: initdb.c:1578 +msgid "creating collations ... " +msgstr "创建(字符集)校对规则 ... " + +#: initdb.c:1611 +#, c-format +msgid "%s: locale name too long, skipped: %s\n" +msgstr "" + +#: initdb.c:1636 +#, c-format +msgid "%s: locale name has non-ASCII characters, skipped: %s\n" +msgstr "" + +# describe.c:1542 +#: initdb.c:1699 +#, c-format +msgid "No usable system locales were found.\n" +msgstr "没有找到可用的系统本地化名称.\n" + +#: initdb.c:1700 +#, c-format +msgid "Use the option \"--debug\" to see details.\n" +msgstr "使用选项 \"--debug\" 获取细节.\n" + +#: initdb.c:1703 +#, c-format +msgid "not supported on this platform\n" +msgstr "在此平台上不支持\n" + +#: initdb.c:1718 msgid "creating conversions ... " msgstr "创建字符集转换 ... " -#: initdb.c:1700 +#: initdb.c:1753 msgid "creating dictionaries ... " msgstr "正在创建字典 ... " -#: initdb.c:1754 +#: initdb.c:1807 msgid "setting privileges on built-in objects ... " msgstr "对内建对象设置权限 ... " -#: initdb.c:1812 +#: initdb.c:1865 msgid "creating information schema ... " msgstr "创建信息模式 ... " -#: initdb.c:1868 +#: initdb.c:1921 msgid "loading PL/pgSQL server-side language ... " msgstr "正在装载PL/pgSQL服务器端编程语言..." -#: initdb.c:1893 +#: initdb.c:1946 msgid "vacuuming database template1 ... " msgstr "清理数据库 template1 ... " -#: initdb.c:1947 +#: initdb.c:2002 msgid "copying template1 to template0 ... " msgstr "拷贝 template1 到 template0 ... " -#: initdb.c:1978 +#: initdb.c:2034 msgid "copying template1 to postgres ... " msgstr "拷贝 template1 到 template0 ... " -#: initdb.c:2035 +#: initdb.c:2091 #, c-format msgid "caught signal\n" msgstr "捕获信号\n" -#: initdb.c:2041 +#: initdb.c:2097 #, c-format msgid "could not write to child process: %s\n" msgstr "无法写到子进程: %s\n" -#: initdb.c:2049 +#: initdb.c:2105 #, c-format msgid "ok\n" msgstr "成功\n" -#: initdb.c:2169 +#: initdb.c:2225 #, c-format msgid "%s: invalid locale name \"%s\"\n" msgstr "%s: 无效的 locale 名字 \"%s\"\n" -#: initdb.c:2195 +#: initdb.c:2251 #, c-format msgid "%s: encoding mismatch\n" msgstr "%s: 警告: 编码不匹配\n" -#: initdb.c:2197 +#: initdb.c:2253 #, c-format msgid "" "The encoding you selected (%s) and the encoding that the\n" @@ -283,7 +314,7 @@ msgstr "" "组合类型.\n" "\n" -#: initdb.c:2378 +#: initdb.c:2459 #, c-format msgid "" "%s initializes a PostgreSQL database cluster.\n" @@ -292,17 +323,17 @@ msgstr "" "%s 初始化一个 PostgreSQL 数据库簇.\n" "\n" -#: initdb.c:2379 +#: initdb.c:2460 #, c-format msgid "Usage:\n" msgstr "使用方法:\n" -#: initdb.c:2380 +#: initdb.c:2461 #, c-format msgid " %s [OPTION]... [DATADIR]\n" msgstr " %s [选项]... [DATADIR]\n" -#: initdb.c:2381 +#: initdb.c:2462 #, c-format msgid "" "\n" @@ -311,29 +342,29 @@ msgstr "" "\n" "选项:\n" -#: initdb.c:2382 +#: initdb.c:2463 #, c-format msgid "" " -A, --auth=METHOD default authentication method for local " "connections\n" msgstr " -A, --auth=METHOD 本地连接的默认认证方法\n" -#: initdb.c:2383 +#: initdb.c:2464 #, c-format msgid " [-D, --pgdata=]DATADIR location for this database cluster\n" msgstr " -D, --pgdata=DATADIR 当前数据库簇的位置\n" -#: initdb.c:2384 +#: initdb.c:2465 #, c-format msgid " -E, --encoding=ENCODING set default encoding for new databases\n" msgstr " -E, --encoding=ENCODING 为新数据库设置默认编码\n" -#: initdb.c:2385 +#: initdb.c:2466 #, c-format msgid " --locale=LOCALE set default locale for new databases\n" msgstr " --locale=LOCALE 为新数据库设置默认语言环境\n" -#: initdb.c:2386 +#: initdb.c:2467 #, c-format msgid "" " --lc-collate=, --lc-ctype=, --lc-messages=LOCALE\n" @@ -348,18 +379,18 @@ msgstr "" " 设定缺省语言环境(默认使用环境变\n" " 量)\n" -#: initdb.c:2390 +#: initdb.c:2471 #, c-format msgid " --no-locale equivalent to --locale=C\n" msgstr " --no-locale 等同于 --locale=C\n" -#: initdb.c:2391 +#: initdb.c:2472 #, c-format msgid "" " --pwfile=FILE read password for the new superuser from file\n" msgstr " --pwfile=文件名 对于新的超级用户从文件读取口令\n" -#: initdb.c:2392 +#: initdb.c:2473 #, c-format msgid "" " -T, --text-search-config=CFG\n" @@ -368,24 +399,24 @@ msgstr "" " -T, --text-search-config=CFG\n" " 缺省的文本搜索配置\n" -#: initdb.c:2394 +#: initdb.c:2475 #, c-format msgid " -U, --username=NAME database superuser name\n" msgstr " -U, --username=NAME 数据库超级用户名\n" -#: initdb.c:2395 +#: initdb.c:2476 #, c-format msgid "" " -W, --pwprompt prompt for a password for the new superuser\n" msgstr " -W, --pwprompt 对于新的超级用户提示输入口令\n" -#: initdb.c:2396 +#: initdb.c:2477 #, c-format msgid "" " -X, --xlogdir=XLOGDIR location for the transaction log directory\n" msgstr " -X, --xlogdir=XLOGDIR 当前事务日志目录的位置\n" -#: initdb.c:2397 +#: initdb.c:2478 #, c-format msgid "" "\n" @@ -394,27 +425,27 @@ msgstr "" "\n" "非普通使用选项:\n" -#: initdb.c:2398 +#: initdb.c:2479 #, c-format msgid " -d, --debug generate lots of debugging output\n" msgstr " -d, --debug 产生大量的除错信息\n" -#: initdb.c:2399 +#: initdb.c:2480 #, c-format msgid " -L DIRECTORY where to find the input files\n" msgstr " -L DIRECTORY 输入文件的位置\n" -#: initdb.c:2400 +#: initdb.c:2481 #, c-format msgid " -n, --noclean do not clean up after errors\n" msgstr " -n, --noclean 出错后不清理\n" -#: initdb.c:2401 +#: initdb.c:2482 #, c-format msgid " -s, --show show internal settings\n" msgstr " -s, --show 显示内部设置\n" -#: initdb.c:2402 +#: initdb.c:2483 #, c-format msgid "" "\n" @@ -423,17 +454,17 @@ msgstr "" "\n" "其它选项:\n" -#: initdb.c:2403 +#: initdb.c:2484 #, c-format msgid " -?, --help show this help, then exit\n" msgstr " -?, --help 显示此帮助, 然后退出\n" -#: initdb.c:2404 +#: initdb.c:2485 #, c-format msgid " -V, --version output version information, then exit\n" msgstr " -V, --version 输出版本信息, 然后退出\n" -#: initdb.c:2405 +#: initdb.c:2486 #, c-format msgid "" "\n" @@ -443,7 +474,7 @@ msgstr "" "\n" "如果没有指定数据目录, 将使用环境变量 PGDATA\n" -#: initdb.c:2407 +#: initdb.c:2488 #, c-format msgid "" "\n" @@ -452,32 +483,32 @@ msgstr "" "\n" "报告错误至 .\n" -#: initdb.c:2512 +#: initdb.c:2594 #, c-format msgid "Running in debug mode.\n" msgstr "运行在除错模式中. \n" -#: initdb.c:2516 +#: initdb.c:2598 #, c-format msgid "Running in noclean mode. Mistakes will not be cleaned up.\n" msgstr "运行在 noclean 模式中. 错误将不被清理.\n" -#: initdb.c:2559 initdb.c:2577 initdb.c:2845 +#: initdb.c:2641 initdb.c:2659 initdb.c:2941 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "请用 \"%s --help\" 获取更多的信息.\n" -#: initdb.c:2575 +#: initdb.c:2657 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: 命令行参数太多 (第一个是 \"%s\")\n" -#: initdb.c:2584 +#: initdb.c:2666 #, c-format msgid "%s: password prompt and password file cannot be specified together\n" msgstr "%s: 口令提示和口令文件不能同时都指定\n" -#: initdb.c:2590 +#: initdb.c:2672 msgid "" "\n" "WARNING: enabling \"trust\" authentication for local connections\n" @@ -489,18 +520,18 @@ msgstr "" "你可以通过编辑 pg_hba.conf 更改或你下\n" "次运行 initdb 时使用 -A 选项.\n" -#: initdb.c:2613 +#: initdb.c:2695 #, c-format msgid "%s: unrecognized authentication method \"%s\"\n" msgstr "%s: 未知认证方法 \"%s\".\n" -#: initdb.c:2623 +#: initdb.c:2705 #, c-format msgid "" "%s: must specify a password for the superuser to enable %s authentication\n" msgstr "%s: 为了启动 %s 认证, 你需要为超级用户指定一个口令\n" -#: initdb.c:2638 +#: initdb.c:2734 #, c-format msgid "" "%s: no data directory specified\n" @@ -513,7 +544,7 @@ msgstr "" "存在. 使用 -D 选项或者\n" "环境变量 PGDATA.\n" -#: initdb.c:2722 +#: initdb.c:2818 #, c-format msgid "" "The program \"postgres\" is needed by %s but was not found in the\n" @@ -524,7 +555,7 @@ msgstr "" "\n" "检查您的安装.\n" -#: initdb.c:2729 +#: initdb.c:2825 #, c-format msgid "" "The program \"postgres\" was found by \"%s\"\n" @@ -535,12 +566,12 @@ msgstr "" "\n" "检查您的安装.\n" -#: initdb.c:2748 +#: initdb.c:2844 #, c-format msgid "%s: input file location must be an absolute path\n" msgstr "%s: 输入文件位置必须为绝对路径\n" -#: initdb.c:2805 +#: initdb.c:2901 #, c-format msgid "" "The files belonging to this database system will be owned by user \"%s\".\n" @@ -550,12 +581,12 @@ msgstr "" "属于此数据库系统的文件宿主为用户 \"%s\".\n" "此用户也必须为服务器进程的宿主.\n" -#: initdb.c:2815 +#: initdb.c:2911 #, c-format msgid "The database cluster will be initialized with locale %s.\n" msgstr "数据库簇将带有 locale %s 初始化.\n" -#: initdb.c:2818 +#: initdb.c:2914 #, c-format msgid "" "The database cluster will be initialized with locales\n" @@ -574,22 +605,31 @@ msgstr "" " NUMERIC: %s\n" " TIME: %s\n" -#: initdb.c:2842 +#: initdb.c:2938 #, c-format msgid "%s: could not find suitable encoding for locale %s\n" msgstr "%s: 无法为 locale \"%s\" 找到合适的编码\n" -#: initdb.c:2844 +#: initdb.c:2940 #, c-format msgid "Rerun %s with the -E option.\n" msgstr "带 -E 选项重新运行 %s.\n" -#: initdb.c:2853 +#: initdb.c:2953 +#, fuzzy, 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 "" +"本地化隐含的编码 \"%s\" 不允许作为服务器端的编码.\n" +"默认的数据库编码将采用 \"%s\" 作为代替.\n" + +#: initdb.c:2961 #, c-format msgid "%s: locale %s requires unsupported encoding %s\n" msgstr "%s: 语言环境 %s要求使用不支持的编码%s\n" -#: initdb.c:2856 +#: initdb.c:2964 #, c-format msgid "" "Encoding %s is not allowed as a server-side encoding.\n" @@ -598,55 +638,55 @@ msgstr "" "不允许将编码%s作为服务器端编码.\n" "使用一个不同的语言环境重新运行%s .\n" -#: initdb.c:2864 +#: initdb.c:2973 #, c-format msgid "The default database encoding has accordingly been set to %s.\n" msgstr "默认的数据库编码已经相应的设置为 %s.\n" -#: initdb.c:2881 +#: initdb.c:2990 #, c-format msgid "%s: could not find suitable text search configuration for locale %s\n" -msgstr "%s: 无法为语言环境\"%s\" 找到合适的编码配置\n" +msgstr "%s: 无法为语言环境\"%s\" 找到合适的文本搜索配置\n" -#: initdb.c:2892 +#: initdb.c:3001 #, c-format msgid "" "%s: warning: suitable text search configuration for locale %s is unknown\n" msgstr "%s: 警告: 对于语言环境%s合适的文本搜索配置未知\n" -#: initdb.c:2897 +#: initdb.c:3006 #, c-format msgid "" "%s: warning: specified text search configuration \"%s\" might not match " "locale %s\n" msgstr "%s: 警告: 所指定的文本搜索配置\"%s\"可能与语言环境%s不匹配\n" -#: initdb.c:2902 +#: initdb.c:3011 #, c-format msgid "The default text search configuration will be set to \"%s\".\n" msgstr "缺省的文本搜索配置将会被设置到\"%s\"\n" -#: initdb.c:2936 initdb.c:3003 +#: initdb.c:3045 initdb.c:3112 #, c-format msgid "creating directory %s ... " msgstr "创建目录 %s ... " -#: initdb.c:2950 initdb.c:3020 +#: initdb.c:3059 initdb.c:3130 #, c-format msgid "fixing permissions on existing directory %s ... " msgstr "修复已存在目录 %s 的权限 ... " -#: initdb.c:2956 initdb.c:3026 +#: initdb.c:3065 initdb.c:3136 #, c-format msgid "%s: could not change permissions of directory \"%s\": %s\n" msgstr "%s: 无法改变目录 \"%s\" 的权限: %s\n" -#: initdb.c:2969 initdb.c:3038 +#: initdb.c:3078 initdb.c:3149 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: 目录\"%s\"已存在,但不是空的\n" -#: initdb.c:2972 +#: initdb.c:3081 #, c-format msgid "" "If you want to create a new database system, either remove or empty\n" @@ -657,39 +697,39 @@ msgstr "" "目录 \"%s\" 或者运行带参数的 %s\n" "而不是 \"%s\".\n" -#: initdb.c:2980 initdb.c:3048 +#: initdb.c:3089 initdb.c:3159 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: 无法访问目录 \"%s\": %s\n" -#: initdb.c:2994 +#: initdb.c:3103 #, c-format msgid "%s: transaction log directory location must be an absolute path\n" msgstr "%s: 事务日志目录的位置必须为绝对路径\n" -#: initdb.c:3041 +#: initdb.c:3152 #, c-format msgid "" "If you want to store the transaction log there, either\n" "remove or empty the directory \"%s\".\n" msgstr "如果您要存储事务日志,需要删除或者清空目录\"%s\".\n" -#: initdb.c:3060 +#: initdb.c:3171 #, c-format msgid "%s: could not create symbolic link \"%s\": %s\n" msgstr "%s: 无法创建符号链接 \"%s\": %s\n" -#: initdb.c:3065 +#: initdb.c:3176 #, c-format msgid "%s: symlinks are not supported on this platform" msgstr "%s: 在这个平台上不支持使用符号链接" -#: initdb.c:3071 +#: initdb.c:3182 #, c-format msgid "creating subdirectories ... " msgstr "正在创建子目录 ... " -#: initdb.c:3135 +#: initdb.c:3248 #, c-format msgid "" "\n" @@ -718,22 +758,27 @@ msgstr "内存溢出\n" msgid "could not set junction for \"%s\": %s\n" msgstr "无法为 \"%s\"设置连接: %s\n" -#: ../../port/dirmod.c:325 +#: ../../port/dirmod.c:361 +#, c-format +msgid "could not get junction for \"%s\": %s\n" +msgstr "无法为\"%s\"得到连接: %s\n" + +#: ../../port/dirmod.c:443 #, c-format msgid "could not open directory \"%s\": %s\n" msgstr "无法打开目录 \"%s\": %s\n" -#: ../../port/dirmod.c:362 +#: ../../port/dirmod.c:480 #, c-format msgid "could not read directory \"%s\": %s\n" msgstr "无法读取目录 \"%s\": %s\n" -#: ../../port/dirmod.c:445 +#: ../../port/dirmod.c:563 #, c-format msgid "could not stat file or directory \"%s\": %s\n" msgstr "无法获取文件或目录 \"%s\"的状态: %s\n" -#: ../../port/dirmod.c:472 ../../port/dirmod.c:489 +#: ../../port/dirmod.c:590 ../../port/dirmod.c:607 #, c-format msgid "could not remove file or directory \"%s\": %s\n" msgstr "无法删除文件或目录 \"%s\": %s\n" @@ -770,27 +815,27 @@ msgstr "无法进入目录 \"%s\"" msgid "could not read symbolic link \"%s\"" msgstr "无法读取符号链结 \"%s\"" -#: ../../port/exec.c:516 +#: ../../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" msgstr "子进程已退出, 退出码为 %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "子进程被例外(exception) 0x%X 终止" -#: ../../port/exec.c:529 +#: ../../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "子进程被信号 %s 终止" -#: ../../port/exec.c:532 +#: ../../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "子进程被信号 %d 终止" -#: ../../port/exec.c:536 +#: ../../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "子进程已退出, 未知状态 %d" diff --git a/src/bin/initdb/po/zh_TW.po b/src/bin/initdb/po/zh_TW.po index f1df8ef2f2..37d1535c98 100644 --- a/src/bin/initdb/po/zh_TW.po +++ b/src/bin/initdb/po/zh_TW.po @@ -12,7 +12,7 @@ msgstr "" "Last-Translator: Zhenbang Wei \n" "Language-Team: EnterpriseDB translation team \n" -"Language: \n" +"Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/initgtm/.gitignore b/src/bin/initgtm/.gitignore new file mode 100644 index 0000000000..7409ca35c6 --- /dev/null +++ b/src/bin/initgtm/.gitignore @@ -0,0 +1,3 @@ +/pqsignal.c + +/initgtm diff --git a/src/bin/initgtm/initgtm.c b/src/bin/initgtm/initgtm.c index 784a2ab37c..b0a0e11ee1 100644 --- a/src/bin/initgtm/initgtm.c +++ b/src/bin/initgtm/initgtm.c @@ -11,8 +11,8 @@ * This code is released under the terms of the PostgreSQL License. * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation * Portions Copyright (c) 1994, Regents of the University of California + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/bin/initgtm/initgtm.c * @@ -69,6 +69,7 @@ static char *gtm_host = "localhost"; /* path to 'initgtm' binary directory */ static char bin_path[MAXPGPATH]; +static char backend_exec[MAXPGPATH]; static void *pg_malloc(size_t size); static char *xstrdup(const char *s); @@ -803,11 +804,10 @@ main(int argc, char *argv[]) {NULL, 0, NULL, 0} }; - int c; + int c, ret; int option_index; char *effective_user; char bin_dir[MAXPGPATH]; - char full_path[MAXPGPATH]; char *pg_data_native; bool node_type_specified = false; @@ -955,19 +955,40 @@ main(int argc, char *argv[]) } #endif - /* Find full path name */ - if (find_my_exec(argv[0], full_path) < 0) - strlcpy(full_path, progname, sizeof(full_path)); + /* Like for initdb, check if a valid version of Postgres is running */ + if ((ret = find_other_exec(argv[0], "postgres", PG_BACKEND_VERSIONSTR, + backend_exec)) < 0) + { + char full_path[MAXPGPATH]; + + if (find_my_exec(argv[0], full_path) < 0) + strlcpy(full_path, progname, sizeof(full_path)); + + if (ret == -1) + fprintf(stderr, + _("The program \"postgres\" is needed by %s " + "but was not found in the\n" + "same directory as \"%s\".\n" + "Check your installation.\n"), + progname, full_path); + else + fprintf(stderr, + _("The program \"postgres\" was found by \"%s\"\n" + "but was not the same version as %s.\n" + "Check your installation.\n"), + full_path, progname); + exit(1); + } /* store binary directory */ - strcpy(bin_path, full_path); + strcpy(bin_path, backend_exec); *last_dir_separator(bin_path) = '\0'; canonicalize_path(bin_path); if (!share_path) { share_path = pg_malloc(MAXPGPATH); - get_share_path(bin_path, share_path); + get_share_path(backend_exec, share_path); } else if (!is_absolute_path(share_path)) { @@ -978,7 +999,8 @@ main(int argc, char *argv[]) canonicalize_path(share_path); effective_user = get_id(); - /* TODO: separate the case of GTM and GTM-Proxy depending on options specified */ + + /* Take into account GTM and GTM-proxy cases */ if (is_gtm) set_input(&conf_file, "gtm.conf.sample"); else diff --git a/src/bin/pg_basebackup/nls.mk b/src/bin/pg_basebackup/nls.mk index 8a479d72cd..7be1c401e1 100644 --- a/src/bin/pg_basebackup/nls.mk +++ b/src/bin/pg_basebackup/nls.mk @@ -1,5 +1,5 @@ # src/bin/pg_basebackup/nls.mk CATALOG_NAME := pg_basebackup -AVAIL_LANGUAGES := de es +AVAIL_LANGUAGES := cs de es fr it ja pl pt_BR ro ru GETTEXT_FILES := pg_basebackup.c GETTEXT_TRIGGERS:= _ diff --git a/src/bin/pg_basebackup/pg_basebackup.c b/src/bin/pg_basebackup/pg_basebackup.c index 9bf1fcdc4b..6eb4e1b8da 100644 --- a/src/bin/pg_basebackup/pg_basebackup.c +++ b/src/bin/pg_basebackup/pg_basebackup.c @@ -59,7 +59,7 @@ static char *xstrdup(const char *s); static void *xmalloc0(int size); static void usage(void); static void verify_dir_is_empty_or_create(char *dirname); -static void progress_report(int tablespacenum, char *fn); +static void progress_report(int tablespacenum, const char *filename); static PGconn *GetConnection(void); static void ReceiveTarFile(PGconn *conn, PGresult *res, int rownum); @@ -201,37 +201,60 @@ verify_dir_is_empty_or_create(char *dirname) * is enabled, also print the current file name. */ static void -progress_report(int tablespacenum, char *fn) +progress_report(int tablespacenum, const char *filename) { int percent = (int) ((totaldone / 1024) * 100 / totalsize); + char totaldone_str[32]; + char totalsize_str[32]; + /* + * Avoid overflowing past 100% or the full size. This may make the + * total size number change as we approach the end of the backup + * (the estimate will always be wrong if WAL is included), but + * that's better than having the done column be bigger than the + * total. + */ if (percent > 100) percent = 100; + if (totaldone / 1024 > totalsize) + totalsize = totaldone / 1024; + + /* + * Separate step to keep platform-dependent format code out of translatable + * strings. And we only test for INT64_FORMAT availability in snprintf, + * not fprintf. + */ + snprintf(totaldone_str, sizeof(totaldone_str), INT64_FORMAT, totaldone / 1024); + snprintf(totalsize_str, sizeof(totalsize_str), INT64_FORMAT, totalsize); if (verbose) { - if (!fn) + if (!filename) /* * No filename given, so clear the status line (used for last * call) */ fprintf(stderr, - INT64_FORMAT "/" INT64_FORMAT " kB (100%%) %i/%i tablespaces %35s\r", - totaldone / 1024, totalsize, - tablespacenum, tablespacecount, ""); + ngettext("%s/%s kB (100%%), %d/%d tablespace %35s", + "%s/%s kB (100%%), %d/%d tablespaces %35s", + tablespacecount), + totaldone_str, totalsize_str, tablespacenum, tablespacecount, ""); else fprintf(stderr, - INT64_FORMAT "/" INT64_FORMAT " kB (%i%%) %i/%i tablespaces (%-30.30s)\r", - totaldone / 1024, totalsize, - percent, - tablespacenum, tablespacecount, fn); + ngettext("%s/%s kB (%d%%), %d/%d tablespace (%-30.30s)", + "%s/%s kB (%d%%), %d/%d tablespaces (%-30.30s)", + tablespacecount), + totaldone_str, totalsize_str, percent, tablespacenum, tablespacecount, filename); } else - fprintf(stderr, INT64_FORMAT "/" INT64_FORMAT " kB (%i%%) %i/%i tablespaces\r", - totaldone / 1024, totalsize, - percent, - tablespacenum, tablespacecount); + fprintf(stderr, + ngettext("%s/%s kB (%d%%), %d/%d tablespace", + "%s/%s kB (%d%%), %d/%d tablespaces", + tablespacecount), + totaldone_str, totalsize_str, percent, tablespacenum, tablespacecount); + + fprintf(stderr, "\r"); } @@ -248,7 +271,7 @@ progress_report(int tablespacenum, char *fn) static void ReceiveTarFile(PGconn *conn, PGresult *res, int rownum) { - char fn[MAXPGPATH]; + char filename[MAXPGPATH]; char *copybuf = NULL; FILE *tarfile = NULL; @@ -264,7 +287,7 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum) if (strcmp(basedir, "-") == 0) { #ifdef HAVE_LIBZ - if (compresslevel > 0) + if (compresslevel != 0) { ztarfile = gzdopen(dup(fileno(stdout)), "wb"); if (gzsetparams(ztarfile, compresslevel, Z_DEFAULT_STRATEGY) != Z_OK) @@ -277,14 +300,15 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum) else #endif tarfile = stdout; + strcpy(filename, "-"); } else { #ifdef HAVE_LIBZ - if (compresslevel > 0) + if (compresslevel != 0) { - snprintf(fn, sizeof(fn), "%s/base.tar.gz", basedir); - ztarfile = gzopen(fn, "wb"); + snprintf(filename, sizeof(filename), "%s/base.tar.gz", basedir); + ztarfile = gzopen(filename, "wb"); if (gzsetparams(ztarfile, compresslevel, Z_DEFAULT_STRATEGY) != Z_OK) { fprintf(stderr, _("%s: could not set compression level %i: %s\n"), @@ -295,8 +319,8 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum) else #endif { - snprintf(fn, sizeof(fn), "%s/base.tar", basedir); - tarfile = fopen(fn, "wb"); + snprintf(filename, sizeof(filename), "%s/base.tar", basedir); + tarfile = fopen(filename, "wb"); } } else @@ -305,10 +329,10 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum) * Specific tablespace */ #ifdef HAVE_LIBZ - if (compresslevel > 0) + if (compresslevel != 0) { - snprintf(fn, sizeof(fn), "%s/%s.tar.gz", basedir, PQgetvalue(res, rownum, 0)); - ztarfile = gzopen(fn, "wb"); + snprintf(filename, sizeof(filename), "%s/%s.tar.gz", basedir, PQgetvalue(res, rownum, 0)); + ztarfile = gzopen(filename, "wb"); if (gzsetparams(ztarfile, compresslevel, Z_DEFAULT_STRATEGY) != Z_OK) { fprintf(stderr, _("%s: could not set compression level %i: %s\n"), @@ -319,19 +343,19 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum) else #endif { - snprintf(fn, sizeof(fn), "%s/%s.tar", basedir, PQgetvalue(res, rownum, 0)); - tarfile = fopen(fn, "wb"); + snprintf(filename, sizeof(filename), "%s/%s.tar", basedir, PQgetvalue(res, rownum, 0)); + tarfile = fopen(filename, "wb"); } } #ifdef HAVE_LIBZ - if (compresslevel > 0) + if (compresslevel != 0) { if (!ztarfile) { /* Compression is in use */ fprintf(stderr, _("%s: could not create compressed file \"%s\": %s\n"), - progname, fn, get_gz_error(ztarfile)); + progname, filename, get_gz_error(ztarfile)); disconnect_and_exit(1); } } @@ -342,7 +366,7 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum) if (!tarfile) { fprintf(stderr, _("%s: could not create file \"%s\": %s\n"), - progname, fn, strerror(errno)); + progname, filename, strerror(errno)); disconnect_and_exit(1); } } @@ -386,7 +410,8 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum) if (gzwrite(ztarfile, zerobuf, sizeof(zerobuf)) != sizeof(zerobuf)) { fprintf(stderr, _("%s: could not write to compressed file \"%s\": %s\n"), - progname, fn, get_gz_error(ztarfile)); + progname, filename, get_gz_error(ztarfile)); + disconnect_and_exit(1); } } else @@ -395,26 +420,33 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum) if (fwrite(zerobuf, sizeof(zerobuf), 1, tarfile) != 1) { fprintf(stderr, _("%s: could not write to file \"%s\": %s\n"), - progname, fn, strerror(errno)); + progname, filename, strerror(errno)); disconnect_and_exit(1); } } - if (strcmp(basedir, "-") == 0) - { #ifdef HAVE_LIBZ - if (ztarfile) - gzclose(ztarfile); -#endif + if (ztarfile != NULL) + { + if (gzclose(ztarfile) != 0) + { + fprintf(stderr, _("%s: could not close compressed file \"%s\": %s\n"), + progname, filename, get_gz_error(ztarfile)); + disconnect_and_exit(1); + } } else - { -#ifdef HAVE_LIBZ - if (ztarfile != NULL) - gzclose(ztarfile); #endif - if (tarfile != NULL) - fclose(tarfile); + { + if (strcmp(basedir, "-") != 0) + { + if (fclose(tarfile) != 0) + { + fprintf(stderr, _("%s: could not close file \"%s\": %s\n"), + progname, filename, strerror(errno)); + disconnect_and_exit(1); + } + } } break; @@ -432,7 +464,8 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum) if (gzwrite(ztarfile, copybuf, r) != r) { fprintf(stderr, _("%s: could not write to compressed file \"%s\": %s\n"), - progname, fn, get_gz_error(ztarfile)); + progname, filename, get_gz_error(ztarfile)); + disconnect_and_exit(1); } } else @@ -441,13 +474,13 @@ ReceiveTarFile(PGconn *conn, PGresult *res, int rownum) if (fwrite(copybuf, r, 1, tarfile) != 1) { fprintf(stderr, _("%s: could not write to file \"%s\": %s\n"), - progname, fn, strerror(errno)); + progname, filename, strerror(errno)); disconnect_and_exit(1); } } totaldone += r; if (showprogress) - progress_report(rownum, fn); + progress_report(rownum, filename); } /* while (1) */ if (copybuf != NULL) @@ -468,16 +501,24 @@ static void ReceiveAndUnpackTarFile(PGconn *conn, PGresult *res, int rownum) { char current_path[MAXPGPATH]; - char fn[MAXPGPATH]; + char filename[MAXPGPATH]; int current_len_left; int current_padding = 0; char *copybuf = NULL; FILE *file = NULL; if (PQgetisnull(res, rownum, 0)) - strcpy(current_path, basedir); + strlcpy(current_path, basedir, sizeof(current_path)); else - strcpy(current_path, PQgetvalue(res, rownum, 1)); + { + if (PQgetlength(res, rownum, 1) >= MAXPGPATH) + { + fprintf(stderr, _("%s: received invalid directory (too long): %s\n"), + progname, PQgetvalue(res, rownum, 1)); + disconnect_and_exit(1); + } + strlcpy(current_path, PQgetvalue(res, rownum, 1), sizeof(current_path)); + } /* * Make sure we're unpacking into an empty directory @@ -563,8 +604,8 @@ ReceiveAndUnpackTarFile(PGconn *conn, PGresult *res, int rownum) /* * First part of header is zero terminated filename */ - snprintf(fn, sizeof(fn), "%s/%s", current_path, copybuf); - if (fn[strlen(fn) - 1] == '/') + snprintf(filename, sizeof(filename), "%s/%s", current_path, copybuf); + if (filename[strlen(filename) - 1] == '/') { /* * Ends in a slash means directory or symlink to directory @@ -574,18 +615,18 @@ ReceiveAndUnpackTarFile(PGconn *conn, PGresult *res, int rownum) /* * Directory */ - fn[strlen(fn) - 1] = '\0'; /* Remove trailing slash */ - if (mkdir(fn, S_IRWXU) != 0) + filename[strlen(filename) - 1] = '\0'; /* Remove trailing slash */ + if (mkdir(filename, S_IRWXU) != 0) { fprintf(stderr, _("%s: could not create directory \"%s\": %s\n"), - progname, fn, strerror(errno)); + progname, filename, strerror(errno)); disconnect_and_exit(1); } #ifndef WIN32 - if (chmod(fn, (mode_t) filemode)) + if (chmod(filename, (mode_t) filemode)) fprintf(stderr, _("%s: could not set permissions on directory \"%s\": %s\n"), - progname, fn, strerror(errno)); + progname, filename, strerror(errno)); #endif } else if (copybuf[156] == '2') @@ -593,12 +634,12 @@ ReceiveAndUnpackTarFile(PGconn *conn, PGresult *res, int rownum) /* * Symbolic link */ - fn[strlen(fn) - 1] = '\0'; /* Remove trailing slash */ - if (symlink(©buf[157], fn) != 0) + filename[strlen(filename) - 1] = '\0'; /* Remove trailing slash */ + if (symlink(©buf[157], filename) != 0) { fprintf(stderr, _("%s: could not create symbolic link from \"%s\" to \"%s\": %s\n"), - progname, fn, ©buf[157], strerror(errno)); + progname, filename, ©buf[157], strerror(errno)); disconnect_and_exit(1); } } @@ -614,18 +655,18 @@ ReceiveAndUnpackTarFile(PGconn *conn, PGresult *res, int rownum) /* * regular file */ - file = fopen(fn, "wb"); + file = fopen(filename, "wb"); if (!file) { fprintf(stderr, _("%s: could not create file \"%s\": %s\n"), - progname, fn, strerror(errno)); + progname, filename, strerror(errno)); disconnect_and_exit(1); } #ifndef WIN32 - if (chmod(fn, (mode_t) filemode)) + if (chmod(filename, (mode_t) filemode)) fprintf(stderr, _("%s: could not set permissions on file \"%s\": %s\n"), - progname, fn, strerror(errno)); + progname, filename, strerror(errno)); #endif if (current_len_left == 0) @@ -658,12 +699,12 @@ ReceiveAndUnpackTarFile(PGconn *conn, PGresult *res, int rownum) if (fwrite(copybuf, r, 1, file) != 1) { fprintf(stderr, _("%s: could not write to file \"%s\": %s\n"), - progname, fn, strerror(errno)); + progname, filename, strerror(errno)); disconnect_and_exit(1); } totaldone += r; if (showprogress) - progress_report(rownum, fn); + progress_report(rownum, filename); current_len_left -= r; if (current_len_left == 0 && current_padding == 0) @@ -782,14 +823,33 @@ BaseBackup(void) char current_path[MAXPGPATH]; char escaped_label[MAXPGPATH]; int i; - char xlogstart[64]; - char xlogend[64]; + int minServerMajor, + maxServerMajor; + int serverMajor; /* * Connect in replication mode to the server */ conn = GetConnection(); + /* + * Check server version. BASE_BACKUP command was introduced in 9.1, so + * we can't work with servers older than 9.1. We don't officially support + * servers newer than the client, but the 9.1 version happens to work with + * a 9.2 server. This version check was added to 9.1 branch in a minor + * release, so allow connecting to a 9.2 server, to avoid breaking + * environments that worked before this version check was added. + */ + minServerMajor = 901; + maxServerMajor = 902; + serverMajor = PQserverVersion(conn) / 100; + if (serverMajor < minServerMajor || serverMajor > maxServerMajor) + { + fprintf(stderr, _("%s: unsupported server version %s\n"), + progname, PQparameterStatus(conn, "server_version")); + disconnect_and_exit(1); + } + /* * Start the actual backup */ @@ -824,11 +884,9 @@ BaseBackup(void) progname); disconnect_and_exit(1); } - strcpy(xlogstart, PQgetvalue(res, 0, 0)); if (verbose && includewal) - fprintf(stderr, "xlog start point: %s\n", xlogstart); + fprintf(stderr, "xlog start point: %s\n", PQgetvalue(res, 0, 0)); PQclear(res); - MemSet(xlogend, 0, sizeof(xlogend)); /* * Get the header @@ -899,8 +957,8 @@ BaseBackup(void) res = PQgetResult(conn); if (PQresultStatus(res) != PGRES_TUPLES_OK) { - fprintf(stderr, _("%s: could not get WAL end position from server\n"), - progname); + fprintf(stderr, _("%s: could not get WAL end position from server: %s"), + progname, PQerrorMessage(conn)); disconnect_and_exit(1); } if (PQntuples(res) != 1) @@ -909,9 +967,8 @@ BaseBackup(void) progname); disconnect_and_exit(1); } - strcpy(xlogend, PQgetvalue(res, 0, 0)); if (verbose && includewal) - fprintf(stderr, "xlog end point: %s\n", xlogend); + fprintf(stderr, "xlog end point: %s\n", PQgetvalue(res, 0, 0)); PQclear(res); res = PQgetResult(conn); @@ -976,7 +1033,7 @@ main(int argc, char **argv) } } - while ((c = getopt_long(argc, argv, "D:F:l:Z:c:h:p:U:xwWvP", + while ((c = getopt_long(argc, argv, "D:F:xl:zZ:c:h:p:U:wWvP", long_options, &option_index)) != -1) { switch (c) @@ -1089,7 +1146,7 @@ main(int argc, char **argv) /* * Mutually exclusive arguments */ - if (format == 'p' && compresslevel > 0) + if (format == 'p' && compresslevel != 0) { fprintf(stderr, _("%s: only tar mode backups can be compressed\n"), @@ -1100,7 +1157,7 @@ main(int argc, char **argv) } #ifndef HAVE_LIBZ - if (compresslevel > 0) + if (compresslevel != 0) { fprintf(stderr, _("%s: this build does not support compression\n"), diff --git a/src/bin/pg_basebackup/po/cs.po b/src/bin/pg_basebackup/po/cs.po new file mode 100644 index 0000000000..112f18293f --- /dev/null +++ b/src/bin/pg_basebackup/po/cs.po @@ -0,0 +1,405 @@ +# Czech message translation file for pg_basebackup +# +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# +# Tomas Vondra , 2011, 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: pg_basebackup-cs (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2013-10-09 13:44+0000\n" +"PO-Revision-Date: 2013-10-12 00:41+0200\n" +"Last-Translator: \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 1.5\n" + +#: pg_basebackup.c:96 pg_basebackup.c:110 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: nedostatek pamětí\n" + +#: pg_basebackup.c:121 +#, c-format +msgid "" +"%s takes a base backup of a running PostgreSQL server.\n" +"\n" +msgstr "" +"%s vytvoří base backup běžícího PostgreSQL serveru.\n" +"\n" + +#: pg_basebackup.c:123 +#, c-format +msgid "Usage:\n" +msgstr "Použití:\n" + +#: pg_basebackup.c:124 +#, c-format +msgid " %s [OPTION]...\n" +msgstr " %s [VOLBA]...\n" + +#: pg_basebackup.c:125 +#, c-format +msgid "" +"\n" +"Options controlling the output:\n" +msgstr "" +"\n" +"Volby ovlivňující výstup:\n" + +#: pg_basebackup.c:126 +#, c-format +msgid " -D, --pgdata=DIRECTORY receive base backup into directory\n" +msgstr " -D, --pgdata=ADRESÁŘ ulož base backup do adresáře\n" + +#: pg_basebackup.c:127 +#, c-format +msgid " -F, --format=p|t output format (plain, tar)\n" +msgstr " -F, --format=p|t výstupní formát (plain, tar)\n" + +#: pg_basebackup.c:128 +#, c-format +msgid " -x, --xlog include required WAL files in backup\n" +msgstr " -x, --xlog zahrň do zálohy potřebné WAL soubory\n" + +#: pg_basebackup.c:129 +#, c-format +msgid " -z, --gzip compress tar output\n" +msgstr " -z, --gzip komprimuj výstup taru\n" + +#: pg_basebackup.c:130 +#, c-format +msgid "" +" -Z, --compress=0-9 compress tar output with given compression level\n" +msgstr "" +" -Z, --compress=0-9 komprimuj výstup taru zvolenou úrovní komprese\n" + +#: pg_basebackup.c:131 +#, c-format +msgid "" +"\n" +"General options:\n" +msgstr "" +"\n" +"Obecné volby:\n" + +#: pg_basebackup.c:132 +#, c-format +msgid "" +" -c, --checkpoint=fast|spread\n" +" set fast or spread checkpointing\n" +msgstr "" +" -c, --checkpoint=fast|spread\n" +" nastavte fast nebo spread checkpointing\n" + +#: pg_basebackup.c:134 +#, c-format +msgid " -l, --label=LABEL set backup label\n" +msgstr " -l, --label=NÁZEV nastavte jmenovku zálohy\n" + +#: pg_basebackup.c:135 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress zobrazuj informace o průběhu\n" + +#: pg_basebackup.c:136 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose zobrazuj podrobnější zprávy\n" + +#: pg_basebackup.c:137 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help zobraz tuto nápovědu, poté skonči\n" + +#: pg_basebackup.c:138 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version zobraz informaci o verzi, poté skonči\n" + +#: pg_basebackup.c:139 +#, c-format +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Volby spojení:\n" + +#: pg_basebackup.c:140 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory\n" +msgstr "" +" -h, --host=HOSTNAME host databázového serveru nebo adresář se " +"sockety\n" + +#: pg_basebackup.c:141 +#, c-format +msgid " -p, --port=PORT database server port number\n" +msgstr " -p, --port=PORT port databázového serveru\n" + +#: pg_basebackup.c:142 +#, c-format +msgid " -U, --username=NAME connect as specified database user\n" +msgstr " -U, --username=JMÉNO připoj se jako uvedený uživatel\n" + +#: pg_basebackup.c:143 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password nikdy se neptej na heslo\n" + +#: pg_basebackup.c:144 +#, c-format +msgid "" +" -W, --password force password prompt (should happen " +"automatically)\n" +msgstr "" +" -W, --password zeptej se na heslo (mělo by se dít automaticky)\n" + +#: pg_basebackup.c:145 +#, c-format +msgid "" +"\n" +"Report bugs to .\n" +msgstr "" +"\n" +"Chyby hlaste na .\n" + +#: pg_basebackup.c:167 pg_basebackup.c:621 +#, c-format +msgid "%s: could not create directory \"%s\": %s\n" +msgstr "%s: nelze vytvořit adresář \"%s\": %s\n" + +#: pg_basebackup.c:184 +#, c-format +msgid "%s: directory \"%s\" exists but is not empty\n" +msgstr "%s: adresář \"%s\" existuje ale není prázdný\n" + +#: pg_basebackup.c:192 +#, c-format +msgid "%s: could not access directory \"%s\": %s\n" +msgstr "%s: nelze přistoupit k adresáři \"%s\": %s\n" + +#: pg_basebackup.c:239 +#, c-format +msgid "%s/%s kB (100%%), %d/%d tablespace %35s" +msgid_plural "%s/%s kB (100%%), %d/%d tablespaces %35s" +msgstr[0] "%s/%s kB (100%%), %d/%d tablespace %35s" +msgstr[1] "%s/%s kB (100%%), %d/%d tablespaces %35s" +msgstr[2] "%s/%s kB (100%%), %d/%d tablespaces %35s" + +#: pg_basebackup.c:245 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace (%-30.30s)" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces (%-30.30s)" +msgstr[0] "%s/%s kB (%d%%), %d/%d tablespace (%-30.30s)" +msgstr[1] "%s/%s kB (%d%%), %d/%d tablespaces (%-30.30s)" +msgstr[2] "%s/%s kB (%d%%), %d/%d tablespaces (%-30.30s)" + +#: pg_basebackup.c:252 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces" +msgstr[0] "%s/%s kB (%d%%), %d/%d tablespace" +msgstr[1] "%s/%s kB (%d%%), %d/%d tablespaces" +msgstr[2] "%s/%s kB (%d%%), %d/%d tablespaces" + +#: pg_basebackup.c:295 pg_basebackup.c:313 pg_basebackup.c:337 +#, c-format +msgid "%s: could not set compression level %i: %s\n" +msgstr "%s: nelze nastavit úroveň komprese %i: %s\n" + +#: pg_basebackup.c:356 +#, c-format +msgid "%s: could not create compressed file \"%s\": %s\n" +msgstr "%s: nelze vytvořit komprimovaný soubor \"%s\": %s\n" + +#: pg_basebackup.c:367 pg_basebackup.c:660 +#, c-format +msgid "%s: could not create file \"%s\": %s\n" +msgstr "%s: nelze vytvořit soubor \"%s\": %s\n" + +#: pg_basebackup.c:379 pg_basebackup.c:533 +#, c-format +msgid "%s: could not get COPY data stream: %s" +msgstr "%s: nelze získat COPY data stream: %s" + +#: pg_basebackup.c:411 pg_basebackup.c:465 +#, c-format +msgid "%s: could not write to compressed file \"%s\": %s\n" +msgstr "%s: nelze zapsat do komprimovaného souboru \"%s\": %s\n" + +#: pg_basebackup.c:421 pg_basebackup.c:475 pg_basebackup.c:700 +#, c-format +msgid "%s: could not write to file \"%s\": %s\n" +msgstr "%s: nelze zapsat do souboru \"%s\": %s\n" + +#: pg_basebackup.c:432 +#, c-format +msgid "%s: could not close compressed file \"%s\": %s\n" +msgstr "%s: nelze uzavřít komprimovaný soubor \"%s\": %s\n" + +#: pg_basebackup.c:444 +#, c-format +msgid "%s: could not close file \"%s\": %s\n" +msgstr "%s: nelze uzavřít soubor \"%s\": %s\n" + +#: pg_basebackup.c:455 pg_basebackup.c:562 +#, c-format +msgid "%s: could not read COPY data: %s" +msgstr "%s: nelze číst COPY data: %s" + +#: pg_basebackup.c:515 +#, c-format +msgid "%s: received invalid directory (too long): %s\n" +msgstr "%s: získán neplatný adresář (příliš dlouhý): %s\n" + +#: pg_basebackup.c:576 +#, c-format +msgid "%s: invalid tar block header size: %i\n" +msgstr "%s: neplatná velikost hlavičky tar bloku: %i\n" + +#: pg_basebackup.c:584 +#, c-format +msgid "%s: could not parse file size\n" +msgstr "%s: nelze načíst velikost souboru\n" + +#: pg_basebackup.c:592 +#, c-format +msgid "%s: could not parse file mode\n" +msgstr "%s: nelze načíst mód souboru\n" + +#: pg_basebackup.c:627 +#, c-format +msgid "%s: could not set permissions on directory \"%s\": %s\n" +msgstr "%s: nelze nastavit přístupová práva na adresáři \"%s\": %s\n" + +#: pg_basebackup.c:640 +#, c-format +msgid "%s: could not create symbolic link from \"%s\" to \"%s\": %s\n" +msgstr "%s: nelze vytvořit symbolický odkaz z \"%s\" na \"%s\": %s\n" + +#: pg_basebackup.c:647 +#, c-format +msgid "%s: unrecognized link indicator \"%c\"\n" +msgstr "%s: nerozpoznaný indikátor odkazu \"%c\"\n" + +#: pg_basebackup.c:667 +#, c-format +msgid "%s: could not set permissions on file \"%s\": %s\n" +msgstr "%s: nelze nastavit přístupová práva na souboru \"%s\": %s\n" + +#: pg_basebackup.c:725 +#, c-format +msgid "%s: COPY stream ended before last file was finished\n" +msgstr "%s: COPY stream skončil před dokončením posledního souboru\n" + +#: pg_basebackup.c:786 +msgid "Password: " +msgstr "Heslo: " + +#: pg_basebackup.c:806 +#, c-format +msgid "%s: could not connect to server: %s" +msgstr "%s: nelze se připojit k serveru: %s" + +#: pg_basebackup.c:847 +#, c-format +msgid "%s: unsupported server version %s\n" +msgstr "%s: nepodporovaná verze serveru %s\n" + +#: pg_basebackup.c:865 +#, c-format +msgid "%s: could not send base backup command: %s" +msgstr "%s: nelze poslat base backup příkaz: %s" + +#: pg_basebackup.c:876 +#, c-format +msgid "%s: could not initiate base backup: %s" +msgstr "%s: nelze inicializovat base backup: %s" + +#: pg_basebackup.c:882 +#, c-format +msgid "%s: no start point returned from server\n" +msgstr "%s: server nevráti žádný počáteční bod (start point)\n" + +#: pg_basebackup.c:896 +#, c-format +msgid "%s: could not get backup header: %s" +msgstr "%s: nelze získat hlavičku zálohy: %s" + +#: pg_basebackup.c:902 +#, c-format +msgid "%s: no data returned from server\n" +msgstr "%s: ze serveru nebyla vrácena žádná data\n" + +#: pg_basebackup.c:930 +#, c-format +msgid "%s: can only write single tablespace to stdout, database has %i\n" +msgstr "" +"%s: na standardní výstup lze vypsat jen jeden tablespace, databáze jich má " +"%i\n" + +#: pg_basebackup.c:959 +#, c-format +msgid "%s: could not get WAL end position from server: %s" +msgstr "%s: ze serveru nelze získat koncovou WAL pozici: %s" + +#: pg_basebackup.c:965 +#, c-format +msgid "%s: no WAL end position returned from server\n" +msgstr "%s: ze serveru nebyla vrácena žádná koncová WAL pozice\n" + +#: pg_basebackup.c:976 +#, c-format +msgid "%s: final receive failed: %s" +msgstr "%s: závěrečný receive selhal: %s" + +#: pg_basebackup.c:1050 +#, c-format +msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" +msgstr "%s: chybný formát výstupu \"%s\", musí být \"plain\" nebo \"tar\"\n" + +#: pg_basebackup.c:1072 +#, c-format +msgid "%s: invalid compression level \"%s\"\n" +msgstr "%s: chybná úroveň komprese \"%s\"\n" + +#: pg_basebackup.c:1084 +#, c-format +msgid "" +"%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" +msgstr "" +"%s: chybný checkpoint argument \"%s\", musí být \"fast\" nebo \"spread\"\n" + +#: pg_basebackup.c:1115 pg_basebackup.c:1129 pg_basebackup.c:1140 +#: pg_basebackup.c:1153 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Zadejte \"%s --help\" pro více informací.\n" + +#: pg_basebackup.c:1127 +#, c-format +msgid "%s: too many command-line arguments (first is \"%s\")\n" +msgstr "%s: příliš mnoho parametrů na příkazové řádce (první je \"%s\")\n" + +#: pg_basebackup.c:1139 +#, c-format +msgid "%s: no target directory specified\n" +msgstr "%s: nebyl zadán cílový adresář\n" + +#: pg_basebackup.c:1151 +#, c-format +msgid "%s: only tar mode backups can be compressed\n" +msgstr "%s: pouze tar zálohy mohou být komprimované\n" + +#: pg_basebackup.c:1162 +#, c-format +msgid "%s: this build does not support compression\n" +msgstr "%s: tento build nepodporuje kompresi\n" + diff --git a/src/bin/pg_basebackup/po/de.po b/src/bin/pg_basebackup/po/de.po index b375824008..387df55044 100644 --- a/src/bin/pg_basebackup/po/de.po +++ b/src/bin/pg_basebackup/po/de.po @@ -1,7 +1,7 @@ # German message translation file for pg_basebackup -# Copyright (C) 2011 PostgreSQL Global Development Group +# Copyright (C) 2011 - 2013 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Peter Eisentraut , 2011. +# Peter Eisentraut , 2011 - 2013. # # Use these quotes: »%s« # @@ -9,14 +9,15 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2011-05-31 18:39+0000\n" -"PO-Revision-Date: 2011-05-31 23:12+0300\n" +"POT-Creation-Date: 2013-10-07 03:44+0000\n" +"PO-Revision-Date: 2013-10-07 12:25-0400\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: Peter Eisentraut \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: pg_basebackup.c:96 pg_basebackup.c:110 #, c-format @@ -60,7 +61,7 @@ msgstr "" #: pg_basebackup.c:127 #, c-format msgid " -F, --format=p|t output format (plain, tar)\n" -msgstr " -F, --format=c|t|p Ausgabeformat (plain, tar)\n" +msgstr " -F, --format=p|t Ausgabeformat (plain, tar)\n" #: pg_basebackup.c:128 #, c-format @@ -174,7 +175,7 @@ msgstr "" "\n" "Berichten Sie Fehler an .\n" -#: pg_basebackup.c:167 pg_basebackup.c:581 +#: pg_basebackup.c:167 pg_basebackup.c:621 #, c-format msgid "%s: could not create directory \"%s\": %s\n" msgstr "%s: konnte Verzeichnis »%s« nicht erzeugen: %s\n" @@ -189,177 +190,218 @@ msgstr "%s: Verzeichnis »%s« existiert aber ist nicht leer\n" msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: konnte nicht auf Verzeichnis »%s« zugreifen: %s\n" -#: pg_basebackup.c:272 pg_basebackup.c:290 pg_basebackup.c:314 +#: pg_basebackup.c:239 +#, c-format +msgid "%s/%s kB (100%%), %d/%d tablespace %35s" +msgid_plural "%s/%s kB (100%%), %d/%d tablespaces %35s" +msgstr[0] "%s/%s kB (100%%), %d/%d Tablespace %35s" +msgstr[1] "%s/%s kB (100%%), %d/%d Tablespaces %35s" + +#: pg_basebackup.c:245 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace (%-30.30s)" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces (%-30.30s)" +msgstr[0] "%s/%s kB (%d%%), %d/%d Tablespace (%-30.30s)" +msgstr[1] "%s/%s kB (%d%%), %d/%d Tablespaces (%-30.30s)" + +#: pg_basebackup.c:252 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces" +msgstr[0] "%s/%s kB (%d%%), %d/%d Tablespace" +msgstr[1] "%s/%s kB (%d%%), %d/%d Tablespaces" + +#: pg_basebackup.c:295 pg_basebackup.c:313 pg_basebackup.c:337 #, c-format msgid "%s: could not set compression level %i: %s\n" msgstr "%s: konnte Komprimierungsniveau %i nicht setzen: %s\n" -#: pg_basebackup.c:333 +#: pg_basebackup.c:356 #, c-format msgid "%s: could not create compressed file \"%s\": %s\n" msgstr "%s: konnte komprimierte Datei »%s« nicht erzeugen: %s\n" -#: pg_basebackup.c:344 pg_basebackup.c:620 +#: pg_basebackup.c:367 pg_basebackup.c:660 #, c-format msgid "%s: could not create file \"%s\": %s\n" msgstr "%s: konnte Datei »%s« nicht erzeugen: %s\n" -#: pg_basebackup.c:356 pg_basebackup.c:493 +#: pg_basebackup.c:379 pg_basebackup.c:533 #, c-format msgid "%s: could not get COPY data stream: %s" msgstr "%s: konnte COPY-Datenstrom nicht empfangen: %s" -#: pg_basebackup.c:388 pg_basebackup.c:434 +#: pg_basebackup.c:411 pg_basebackup.c:465 #, c-format msgid "%s: could not write to compressed file \"%s\": %s\n" msgstr "%s: konnte nicht in komprimierte Datei »%s« schreiben: %s\n" -#: pg_basebackup.c:397 pg_basebackup.c:443 pg_basebackup.c:660 +#: pg_basebackup.c:421 pg_basebackup.c:475 pg_basebackup.c:700 #, c-format msgid "%s: could not write to file \"%s\": %s\n" msgstr "%s: konnte nicht in Datei »%s« schreiben: %s\n" -#: pg_basebackup.c:424 pg_basebackup.c:522 +#: pg_basebackup.c:432 +#, c-format +msgid "%s: could not close compressed file \"%s\": %s\n" +msgstr "%s: konnte komprimierte Datei »%s« nicht schließen: %s\n" + +#: pg_basebackup.c:444 +#, c-format +msgid "%s: could not close file \"%s\": %s\n" +msgstr "%s: konnte Datei »%s« nicht schließen: %s\n" + +#: pg_basebackup.c:455 pg_basebackup.c:562 #, c-format msgid "%s: could not read COPY data: %s" msgstr "%s: konnte COPY-Daten nicht lesen: %s" -#: pg_basebackup.c:536 +#: pg_basebackup.c:515 +#, c-format +msgid "%s: received invalid directory (too long): %s\n" +msgstr "%s: ungültiges Verzeichnis empfangen (zu lang): %s\n" + +#: pg_basebackup.c:576 #, c-format msgid "%s: invalid tar block header size: %i\n" msgstr "%s: ungültige Tar-Block-Kopf-Größe: %i\n" -#: pg_basebackup.c:544 +#: pg_basebackup.c:584 #, c-format msgid "%s: could not parse file size\n" msgstr "%s: konnte Dateigröße nicht entziffern\n" -#: pg_basebackup.c:552 +#: pg_basebackup.c:592 #, c-format msgid "%s: could not parse file mode\n" msgstr "%s: konnte Dateimodus nicht entziffern\n" -#: pg_basebackup.c:587 +#: pg_basebackup.c:627 #, c-format msgid "%s: could not set permissions on directory \"%s\": %s\n" msgstr "%s: konnte Zugriffsrechte des Verzeichnisses »%s« nicht setzen: %s\n" -#: pg_basebackup.c:600 +#: pg_basebackup.c:640 #, c-format msgid "%s: could not create symbolic link from \"%s\" to \"%s\": %s\n" msgstr "" "%s: konnte symbolische Verknüpfung von »%s« nach »%s« nicht erzeugen: %s\n" -#: pg_basebackup.c:607 +#: pg_basebackup.c:647 #, c-format msgid "%s: unrecognized link indicator \"%c\"\n" msgstr "%s: unbekannter Verknüpfungsindikator »%c«\n" -#: pg_basebackup.c:627 +#: pg_basebackup.c:667 #, c-format msgid "%s: could not set permissions on file \"%s\": %s\n" msgstr "%s: konnte Rechte der Datei »%s« nicht setzen: %s\n" -#: pg_basebackup.c:685 +#: pg_basebackup.c:725 #, c-format msgid "%s: COPY stream ended before last file was finished\n" msgstr "%s: COPY-Strom endete vor dem Ende der letzten Datei\n" -#: pg_basebackup.c:746 +#: pg_basebackup.c:786 msgid "Password: " msgstr "Passwort: " -#: pg_basebackup.c:766 +#: pg_basebackup.c:806 #, c-format msgid "%s: could not connect to server: %s" msgstr "%s: konnte nicht mit Server verbinden: %s" -#: pg_basebackup.c:806 +#: pg_basebackup.c:847 +#, c-format +msgid "%s: unsupported server version %s\n" +msgstr "%s: nicht unterstützte Serverversion %s\n" + +#: pg_basebackup.c:865 #, c-format msgid "%s: could not send base backup command: %s" msgstr "%s: konnte Basissicherungsbefehl nicht senden: %s" -#: pg_basebackup.c:817 +#: pg_basebackup.c:876 #, c-format msgid "%s: could not initiate base backup: %s" msgstr "%s: konnte Basissicherung nicht starten: %s" -#: pg_basebackup.c:823 +#: pg_basebackup.c:882 #, c-format msgid "%s: no start point returned from server\n" msgstr "%s: kein Startpunkt vom Server zurückgegeben\n" -#: pg_basebackup.c:839 +#: pg_basebackup.c:896 #, c-format msgid "%s: could not get backup header: %s" msgstr "%s: konnte Kopf der Sicherung nicht empfangen: %s" -#: pg_basebackup.c:845 +#: pg_basebackup.c:902 #, c-format msgid "%s: no data returned from server\n" msgstr "%s: keine Daten vom Server zurückgegeben\n" -#: pg_basebackup.c:873 +#: pg_basebackup.c:930 #, c-format msgid "%s: can only write single tablespace to stdout, database has %i\n" msgstr "" "%s: kann nur einen einzelnen Tablespace auf die Standardausgabe schreiben, " "Datenbank hat %i\n" -#: pg_basebackup.c:902 +#: pg_basebackup.c:959 #, c-format -msgid "%s: could not get WAL end position from server\n" -msgstr "%s: konnte WAL-Endposition nicht vom Server empfangen\n" +msgid "%s: could not get WAL end position from server: %s" +msgstr "%s: konnte WAL-Endposition nicht vom Server empfangen: %s" -#: pg_basebackup.c:908 +#: pg_basebackup.c:965 #, c-format msgid "%s: no WAL end position returned from server\n" msgstr "%s: kein WAL-Endpunkt vom Server zurückgegeben\n" -#: pg_basebackup.c:920 +#: pg_basebackup.c:976 #, c-format msgid "%s: final receive failed: %s" msgstr "%s: letztes Empfangen fehlgeschlagen: %s" -#: pg_basebackup.c:994 +#: pg_basebackup.c:1050 #, c-format msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" msgstr "%s: ungültiges Ausgabeformat »%s«, muss »plain« oder »tar« sein\n" -#: pg_basebackup.c:1016 +#: pg_basebackup.c:1072 #, c-format msgid "%s: invalid compression level \"%s\"\n" msgstr "%s: ungültiges Komprimierungsniveau »%s«\n" -#: pg_basebackup.c:1028 +#: pg_basebackup.c:1084 #, c-format msgid "" "%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" msgstr "" "%s: ungültiges Checkpoint-Argument »%s«, muss »fast« oder »spread« sein\n" -#: pg_basebackup.c:1059 pg_basebackup.c:1073 pg_basebackup.c:1084 -#: pg_basebackup.c:1097 +#: pg_basebackup.c:1115 pg_basebackup.c:1129 pg_basebackup.c:1140 +#: pg_basebackup.c:1153 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n" -#: pg_basebackup.c:1071 +#: pg_basebackup.c:1127 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: zu viele Kommandozeilenargumente (das erste ist »%s«)\n" -#: pg_basebackup.c:1083 +#: pg_basebackup.c:1139 #, c-format msgid "%s: no target directory specified\n" msgstr "%s: kein Zielverzeichnis angegeben\n" -#: pg_basebackup.c:1095 +#: pg_basebackup.c:1151 #, c-format msgid "%s: only tar mode backups can be compressed\n" msgstr "%s: nur Sicherungen im Tar-Modus können komprimiert werden\n" -#: pg_basebackup.c:1106 +#: pg_basebackup.c:1162 #, c-format msgid "%s: this build does not support compression\n" msgstr "%s: diese Installation unterstützt keine Komprimierung\n" diff --git a/src/bin/pg_basebackup/po/es.po b/src/bin/pg_basebackup/po/es.po index d27ce7ffa1..c19df47d07 100644 --- a/src/bin/pg_basebackup/po/es.po +++ b/src/bin/pg_basebackup/po/es.po @@ -1,20 +1,21 @@ # Spanish message translation file for pg_basebackup -# Copyright (C) 2011 PostgreSQL Global Development Group +# Copyright (C) 2011-2012 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Álvaro Herrera , 2011. +# Álvaro Herrera , 2011-2012. # msgid "" msgstr "" "Project-Id-Version: pg_basebackup (PostgreSQL 9.1)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2011-05-22 14:48-0400\n" -"PO-Revision-Date: 2011-05-31 17:42-0400\n" +"POT-Creation-Date: 2013-08-26 19:45+0000\n" +"PO-Revision-Date: 2013-08-30 12:28-0400\n" "Last-Translator: Álvaro Herrera \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: pg_basebackup.c:96 pg_basebackup.c:110 #, c-format @@ -27,7 +28,8 @@ msgid "" "%s takes a base backup of a running PostgreSQL server.\n" "\n" msgstr "" -"%s obtiene un respaldo base a partir de un servidor PostgreSQL en ejecución.\n" +"%s obtiene un respaldo base a partir de un servidor PostgreSQL en " +"ejecución.\n" "\n" #: pg_basebackup.c:123 @@ -38,7 +40,7 @@ msgstr "Empleo:\n" #: pg_basebackup.c:124 #, c-format msgid " %s [OPTION]...\n" -msgstr " %s [OPCIÓN]...\n" +msgstr " %s [OPCIÓN]...\n" #: pg_basebackup.c:125 #, c-format @@ -62,24 +64,34 @@ msgstr " -F, --format=p|t formato de salida (plano, tar)\n" #: pg_basebackup.c:128 #, c-format msgid " -x, --xlog include required WAL files in backup\n" -msgstr " -x, --xlog incluye los archivos WAL necesarios en el respaldo\n" +msgstr "" +" -x, --xlog incluye los archivos WAL necesarios en el " +"respaldo\n" #: pg_basebackup.c:129 #, c-format -msgid " -Z, --compress=0-9 compress tar output\n" -msgstr " -Z, --compress=0-9 comprimir la salida de tar\n" +msgid " -z, --gzip compress tar output\n" +msgstr " -z, --gzip comprimir la salida de tar\n" #: pg_basebackup.c:130 #, c-format msgid "" +" -Z, --compress=0-9 compress tar output with given compression level\n" +msgstr "" +" -Z, --compress=0-9 comprimir salida tar con el nivel de compresión " +"dado\n" + +#: pg_basebackup.c:131 +#, c-format +msgid "" "\n" "General options:\n" msgstr "" "\n" "Opciones generales:\n" -#: pg_basebackup.c:131 -#, c-format, fuzzy +#: pg_basebackup.c:132 +#, c-format msgid "" " -c, --checkpoint=fast|spread\n" " set fast or spread checkpointing\n" @@ -87,32 +99,33 @@ msgstr "" " -c, --checkpoint=fast|spread\n" " utilizar checkpoint rápido o extendido\n" -#: pg_basebackup.c:133 +#: pg_basebackup.c:134 #, c-format msgid " -l, --label=LABEL set backup label\n" msgstr " -l, --label=ETIQUETA establecer etiqueta del respaldo\n" -#: pg_basebackup.c:134 -#, c-format, fuzzy +#: pg_basebackup.c:135 +#, c-format msgid " -P, --progress show progress information\n" msgstr " -P, --progress mostrar información de progreso\n" -#: pg_basebackup.c:135 +#: pg_basebackup.c:136 #, c-format msgid " -v, --verbose output verbose messages\n" msgstr " -v, --verbose desplegar mensajes verbosos\n" -#: pg_basebackup.c:136 +#: pg_basebackup.c:137 #, c-format msgid " --help show this help, then exit\n" msgstr " --help mostrar esta ayuda, luego salir\n" -#: pg_basebackup.c:137 +#: pg_basebackup.c:138 #, c-format msgid " --version output version information, then exit\n" -msgstr " --version desplegar información de versión, luego salir\n" +msgstr "" +" --version desplegar información de versión, luego salir\n" -#: pg_basebackup.c:138 +#: pg_basebackup.c:139 #, c-format msgid "" "\n" @@ -121,27 +134,28 @@ msgstr "" "\n" "Opciones de conexión:\n" -#: pg_basebackup.c:139 +#: pg_basebackup.c:140 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" -msgstr " -h, --host=ANFITRIÓN dirección del servidor o directorio del socket\n" +msgstr "" +" -h, --host=ANFITRIÓN dirección del servidor o directorio del socket\n" -#: pg_basebackup.c:140 +#: pg_basebackup.c:141 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=PORT número de port del servidor\n" -#: pg_basebackup.c:141 +#: pg_basebackup.c:142 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=NOMBRE conectarse con el usuario especificado\n" -#: pg_basebackup.c:142 +#: pg_basebackup.c:143 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password no pedir contraseña\n" -#: pg_basebackup.c:143 +#: pg_basebackup.c:144 #, c-format msgid "" " -W, --password force password prompt (should happen " @@ -150,7 +164,7 @@ msgstr "" " -W, --password forzar un prompt para la contraseña\n" " (debería ser automático)\n" -#: pg_basebackup.c:144 +#: pg_basebackup.c:145 #, c-format msgid "" "\n" @@ -159,195 +173,236 @@ msgstr "" "\n" "Reporte errores a .\n" -#: pg_basebackup.c:166 pg_basebackup.c:558 +#: pg_basebackup.c:167 pg_basebackup.c:621 #, c-format msgid "%s: could not create directory \"%s\": %s\n" msgstr "%s: no se pudo crear el directorio «%s»: %s\n" -#: pg_basebackup.c:183 +#: pg_basebackup.c:184 #, c-format msgid "%s: directory \"%s\" exists but is not empty\n" msgstr "%s: el directorio «%s» existe pero no está vacío\n" -#: pg_basebackup.c:191 +#: pg_basebackup.c:192 #, c-format msgid "%s: could not access directory \"%s\": %s\n" msgstr "%s: no se pudo acceder al directorio «%s»: %s\n" -#: pg_basebackup.c:274 pg_basebackup.c:298 +#: pg_basebackup.c:239 +#, c-format +msgid "%s/%s kB (100%%), %d/%d tablespace %35s" +msgid_plural "%s/%s kB (100%%), %d/%d tablespaces %35s" +msgstr[0] "%s/%s kB (100%%), %d/%d tablespace %35s" +msgstr[1] "%s/%s kB (100%%), %d/%d tablespaces %35s" + +#: pg_basebackup.c:245 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace (%-30.30s)" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces (%-30.30s)" +msgstr[0] "%s/%s kB (%d%%), %d/%d tablespace (%-30.30s)" +msgstr[1] "%s/%s kB (%d%%), %d/%d tablespaces (%-30.30s)" + +#: pg_basebackup.c:252 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces" +msgstr[0] "%s/%s kB (%d%%), %d/%d tablespace" +msgstr[1] "%s/%s kB (%d%%), %d/%d tablespaces" + +#: pg_basebackup.c:295 pg_basebackup.c:313 pg_basebackup.c:337 #, c-format msgid "%s: could not set compression level %i: %s\n" msgstr "%s: no se pudo definir el nivel de compresión %i: %s\n" -#: pg_basebackup.c:317 +#: pg_basebackup.c:356 #, c-format msgid "%s: could not create compressed file \"%s\": %s\n" msgstr "%s: no se pudo crear el archivo comprimido «%s»: %s\n" -#: pg_basebackup.c:328 pg_basebackup.c:597 +#: pg_basebackup.c:367 pg_basebackup.c:660 #, c-format msgid "%s: could not create file \"%s\": %s\n" msgstr "%s: no se pudo crear el archivo «%s»: %s\n" -#: pg_basebackup.c:340 pg_basebackup.c:470 +#: pg_basebackup.c:379 pg_basebackup.c:533 #, c-format msgid "%s: could not get COPY data stream: %s" msgstr "%s: no se pudo obtener un flujo de datos COPY: %s" -#: pg_basebackup.c:372 pg_basebackup.c:411 +#: pg_basebackup.c:411 pg_basebackup.c:465 #, c-format msgid "%s: could not write to compressed file \"%s\": %s\n" msgstr "%s: no se pudo escribir al archivo comprimido «%s»: %s\n" -#: pg_basebackup.c:381 pg_basebackup.c:420 pg_basebackup.c:637 +#: pg_basebackup.c:421 pg_basebackup.c:475 pg_basebackup.c:700 #, c-format msgid "%s: could not write to file \"%s\": %s\n" msgstr "%s: no se pudo escribir al archivo «%s»: %s\n" -#: pg_basebackup.c:401 pg_basebackup.c:499 +#: pg_basebackup.c:432 +#, c-format +msgid "%s: could not close compressed file \"%s\": %s\n" +msgstr "%s: no se pudo cerrar el archivo comprimido «%s»: %s\n" + +#: pg_basebackup.c:444 +#, c-format +msgid "%s: could not close file \"%s\": %s\n" +msgstr "%s: no se pudo cerrar el archivo «%s»: %s\n" + +#: pg_basebackup.c:455 pg_basebackup.c:562 #, c-format msgid "%s: could not read COPY data: %s" msgstr "%s: no fue posible leer datos COPY: %s" -#: pg_basebackup.c:513 +#: pg_basebackup.c:515 +#, c-format +msgid "%s: received invalid directory (too long): %s" +msgstr "%s: se recibió directorio no válido (demasiado largo): %s" + +#: pg_basebackup.c:576 #, c-format msgid "%s: invalid tar block header size: %i\n" msgstr "%s: tamaño de bloque de cabecera de tar no válido: %i\n" -#: pg_basebackup.c:521 +#: pg_basebackup.c:584 #, c-format msgid "%s: could not parse file size\n" msgstr "%s: no se pudo interpretar el tamaño del archivo\n" -#: pg_basebackup.c:529 +#: pg_basebackup.c:592 #, c-format msgid "%s: could not parse file mode\n" msgstr "%s: nose pudo interpretar el modo del archivo\n" -#: pg_basebackup.c:564 +#: pg_basebackup.c:627 #, c-format msgid "%s: could not set permissions on directory \"%s\": %s\n" msgstr "%s: no se pudo definir los permisos en el directorio «%s»: %s\n" -#: pg_basebackup.c:577 -# FIXME: Why no quotes? +#: pg_basebackup.c:640 #, c-format -msgid "%s: could not create symbolic link from %s to %s: %s\n" -msgstr "%s: no se pudo crear un enlace simbólico desde %s a %s: %s\n" +msgid "%s: could not create symbolic link from \"%s\" to \"%s\": %s\n" +msgstr "%s: no se pudo crear un enlace simbólico desde «%s» a «%s»: %s\n" -#: pg_basebackup.c:584 +#: pg_basebackup.c:647 #, c-format msgid "%s: unrecognized link indicator \"%c\"\n" msgstr "%s: indicador de enlace «%c» no reconocido\n" -#: pg_basebackup.c:604 +#: pg_basebackup.c:667 #, c-format msgid "%s: could not set permissions on file \"%s\": %s\n" msgstr "%s: no se pudo definir los permisos al archivo «%s»: %s\n" -#: pg_basebackup.c:662 +#: pg_basebackup.c:725 #, c-format -msgid "%s: last file was never finished\n" -msgstr "%s: el último archivo nunca fue completado\n" +msgid "%s: COPY stream ended before last file was finished\n" +msgstr "" +"%s: el flujo COPY terminó antes que el último archivo estuviera completo\n" -#: pg_basebackup.c:723 +#: pg_basebackup.c:786 msgid "Password: " msgstr "Contraseña: " -#: pg_basebackup.c:743 +#: pg_basebackup.c:806 #, c-format msgid "%s: could not connect to server: %s" msgstr "%s: no se pudo conectar al servidor: %s" -#: pg_basebackup.c:783 +#: pg_basebackup.c:847 #, c-format -msgid "%s: could not start base backup: %s" -msgstr "%s: no se pudo comenzar el respaldo base: %s" +msgid "%s: unsupported server version %s\n" +msgstr "%s: versión del servidor %s no soportada\n" -#: pg_basebackup.c:794 +#: pg_basebackup.c:865 +#, c-format +msgid "%s: could not send base backup command: %s" +msgstr "%s: no se pudo enviar la orden de respaldo base: %s" + +#: pg_basebackup.c:876 #, c-format msgid "%s: could not initiate base backup: %s" msgstr "%s: no se pudo iniciar el respaldo base: %s" -#: pg_basebackup.c:800 +#: pg_basebackup.c:882 #, c-format msgid "%s: no start point returned from server\n" msgstr "%s: el servidor no retornó un punto de inicio\n" -#: pg_basebackup.c:816 +#: pg_basebackup.c:896 #, c-format msgid "%s: could not get backup header: %s" msgstr "%s: no se pudo obtener la cabecera de respaldo: %s" -#: pg_basebackup.c:822 +#: pg_basebackup.c:902 #, c-format msgid "%s: no data returned from server\n" msgstr "%s: el servidor no retornó datos\n" -#: pg_basebackup.c:850 +#: pg_basebackup.c:930 #, c-format msgid "%s: can only write single tablespace to stdout, database has %i\n" -msgstr "%s: sólo se puede escribir un tablespace a stdout, la base de datos tiene %i\n" +msgstr "" +"%s: sólo se puede escribir un tablespace a stdout, la base de datos tiene " +"%i\n" -#: pg_basebackup.c:879 +#: pg_basebackup.c:959 #, c-format -msgid "%s: could not get end xlog position from server\n" -msgstr "%s: no se pudo obtener la posición de fin de xlog del servidor\n" +msgid "%s: could not get WAL end position from server: %s" +msgstr "" +"%s: no se pudo obtener la posición del final del registro de transacciones " +"del servidor: %s" -#: pg_basebackup.c:885 +#: pg_basebackup.c:965 #, c-format -msgid "%s: no end point returned from server\n" -msgstr "%s: el servidor no retornó un punto de fin de xlog\n" +msgid "%s: no WAL end position returned from server\n" +msgstr "%s: el servidor no retornó un punto de fin de WAL\n" -#: pg_basebackup.c:897 +#: pg_basebackup.c:976 #, c-format msgid "%s: final receive failed: %s" msgstr "%s: la recepción final falló: %s" -#: pg_basebackup.c:970 +#: pg_basebackup.c:1050 #, c-format msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" msgstr "%s: formato de salida «%s» no válido, debe ser «plain» o «tar»\n" -#: pg_basebackup.c:985 +#: pg_basebackup.c:1072 #, c-format msgid "%s: invalid compression level \"%s\"\n" msgstr "%s: valor de compresión «%s» no válido\n" -#: pg_basebackup.c:997 +#: pg_basebackup.c:1084 #, c-format msgid "" "%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" msgstr "" "%s: argumento de checkpoint «%s» no válido, debe ser «fast» o «spread»\n" -#: pg_basebackup.c:1028 pg_basebackup.c:1042 pg_basebackup.c:1053 -#: pg_basebackup.c:1066 +#: pg_basebackup.c:1115 pg_basebackup.c:1129 pg_basebackup.c:1140 +#: pg_basebackup.c:1153 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Use «%s --help» para obtener más información.\n" -#: pg_basebackup.c:1040 +#: pg_basebackup.c:1127 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" -msgstr "%s: demasiados argumentos en la línea de órdenes (el primero es «%s»)\n" +msgstr "" +"%s: demasiados argumentos en la línea de órdenes (el primero es «%s»)\n" -#: pg_basebackup.c:1052 +#: pg_basebackup.c:1139 #, c-format msgid "%s: no target directory specified\n" msgstr "%s: no se especificó un directorio de salida\n" -#: pg_basebackup.c:1064 +#: pg_basebackup.c:1151 #, c-format msgid "%s: only tar mode backups can be compressed\n" msgstr "%s: sólo los respaldos de modo tar pueden ser comprimidos\n" -#: pg_basebackup.c:1075 +#: pg_basebackup.c:1162 #, c-format msgid "%s: this build does not support compression\n" msgstr "%s: esta instalación no soporta compresión\n" - -#: pg_basebackup.c:1083 -#, c-format -msgid "%s: compression is not supported on standard output\n" -msgstr "%s: la compresión no está soportada en standard output\n" diff --git a/src/bin/pg_basebackup/po/fr.po b/src/bin/pg_basebackup/po/fr.po new file mode 100644 index 0000000000..b6a9cb1b03 --- /dev/null +++ b/src/bin/pg_basebackup/po/fr.po @@ -0,0 +1,418 @@ +# LANGUAGE message translation file for pg_basebackup +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 9.2\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2013-11-27 12:43+0000\n" +"PO-Revision-Date: 2013-11-27 22:03+0100\n" +"Last-Translator: Guillaume Lelarge \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 1.5.4\n" + +#: pg_basebackup.c:96 pg_basebackup.c:110 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s : m�moire �puis�e\n" + +#: pg_basebackup.c:121 +#, c-format +msgid "" +"%s takes a base backup of a running PostgreSQL server.\n" +"\n" +msgstr "" +"%s prend une sauvegarde binaire d'un serveur PostgreSQL en cours " +"d'ex�cution.\n" +"\n" + +#: pg_basebackup.c:123 +#, c-format +msgid "Usage:\n" +msgstr "Usage :\n" + +#: pg_basebackup.c:124 +#, c-format +msgid " %s [OPTION]...\n" +msgstr " %s [OPTION]...\n" + +#: pg_basebackup.c:125 +#, c-format +msgid "" +"\n" +"Options controlling the output:\n" +msgstr "" +"\n" +"Options contr�lant la sortie :\n" + +#: pg_basebackup.c:126 +#, c-format +msgid " -D, --pgdata=DIRECTORY receive base backup into directory\n" +msgstr "" +" -D, --pgdata=R�PERTOIRE enregistre la sauvegarde dans ce r�pertoire\n" + +#: pg_basebackup.c:127 +#, c-format +msgid " -F, --format=p|t output format (plain, tar)\n" +msgstr "" +" -F, --format=p|t format en sortie (plusieurs fichiers, tar)\n" + +#: pg_basebackup.c:128 +#, c-format +msgid " -x, --xlog include required WAL files in backup\n" +msgstr "" +" -x, --xlog inclut les journaux de transactions " +"n�cessaire\n" +" � la restauration de la sauvegarde\n" + +#: pg_basebackup.c:129 +#, c-format +msgid " -z, --gzip compress tar output\n" +msgstr " -z, --gzip compresse la sortie tar\n" + +#: pg_basebackup.c:130 +#, c-format +msgid "" +" -Z, --compress=0-9 compress tar output with given compression level\n" +msgstr "" +" -Z, --compress=0-9 compresse la sortie tar avec le niveau de\n" +" compression indiqu�e\n" + +#: pg_basebackup.c:131 +#, c-format +msgid "" +"\n" +"General options:\n" +msgstr "" +"\n" +"Options g�n�rales :\n" + +#: pg_basebackup.c:132 +#, c-format +msgid "" +" -c, --checkpoint=fast|spread\n" +" set fast or spread checkpointing\n" +msgstr "" +" -c, --checkpoint=fast|spread configure un CHECKPOINT rapide ou r�parti\n" + +#: pg_basebackup.c:134 +#, c-format +msgid " -l, --label=LABEL set backup label\n" +msgstr " -l, --label=LABEL configure le label de sauvegarde\n" + +#: pg_basebackup.c:135 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr "" +" -P, --progress affiche la progression de la sauvegarde\n" + +#: pg_basebackup.c:136 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose affiche des messages verbeux\n" + +#: pg_basebackup.c:137 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help affiche cette aide et quitte\n" + +#: pg_basebackup.c:138 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version affiche la version et quitte\n" + +#: pg_basebackup.c:139 +#, c-format +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Options de connexion :\n" + +#: pg_basebackup.c:140 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory\n" +msgstr "" +" -h, --host=NOMH�TE h�te du serveur de bases de donn�es ou\n" +" r�pertoire des sockets\n" + +#: pg_basebackup.c:141 +#, c-format +msgid " -p, --port=PORT database server port number\n" +msgstr "" +" -p, --port=PORT num�ro de port du serveur de bases de\n" +" donn�es\n" + +#: pg_basebackup.c:142 +#, c-format +msgid " -U, --username=NAME connect as specified database user\n" +msgstr " -U, --username=NOM se connecter avec cet utilisateur\n" + +#: pg_basebackup.c:143 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password ne demande jamais le mot de passe\n" + +#: pg_basebackup.c:144 +#, c-format +msgid "" +" -W, --password force password prompt (should happen " +"automatically)\n" +msgstr "" +" -W, --password force la demande du mot de passe (par\n" +" d�faut)\n" + +#: pg_basebackup.c:145 +#, c-format +msgid "" +"\n" +"Report bugs to .\n" +msgstr "" +"\n" +"Rapporter les bogues � .\n" + +#: pg_basebackup.c:167 pg_basebackup.c:621 +#, c-format +msgid "%s: could not create directory \"%s\": %s\n" +msgstr "%s : n'a pas pu cr�er le r�pertoire � %s � : %s\n" + +#: pg_basebackup.c:184 +#, c-format +msgid "%s: directory \"%s\" exists but is not empty\n" +msgstr "%s : le r�pertoire � %s � existe mais n'est pas vide\n" + +#: pg_basebackup.c:192 +#, c-format +msgid "%s: could not access directory \"%s\": %s\n" +msgstr "%s : n'a pas pu acc�der au r�pertoire � %s � : %s\n" + +#: pg_basebackup.c:239 +#, c-format +msgid "%s/%s kB (100%%), %d/%d tablespace %35s" +msgid_plural "%s/%s kB (100%%), %d/%d tablespaces %35s" +msgstr[0] "%s/%s Ko (100%%), %d/%d tablespace %35s" +msgstr[1] "%s/%s Ko (100%%), %d/%d tablespaces %35s" + +#: pg_basebackup.c:245 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace (%-30.30s)" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces (%-30.30s)" +msgstr[0] "%s/%s Ko (%d%%), %d/%d tablespace (%-30.30s)" +msgstr[1] "%s/%s Ko (%d%%), %d/%d tablespaces (%-30.30s)" + +#: pg_basebackup.c:252 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces" +msgstr[0] "%s/%s Ko (%d%%), %d/%d tablespace" +msgstr[1] "%s/%s Ko (%d%%), %d/%d tablespaces" + +#: pg_basebackup.c:295 pg_basebackup.c:313 pg_basebackup.c:337 +#, c-format +msgid "%s: could not set compression level %i: %s\n" +msgstr "%s : n'a pas pu configurer le niveau de compression %i : %s\n" + +#: pg_basebackup.c:356 +#, c-format +msgid "%s: could not create compressed file \"%s\": %s\n" +msgstr "%s : n'a pas pu cr�er le fichier compress� � %s � : %s\n" + +#: pg_basebackup.c:367 pg_basebackup.c:660 +#, c-format +msgid "%s: could not create file \"%s\": %s\n" +msgstr "%s : n'a pas pu cr�er le fichier � %s � : %s\n" + +#: pg_basebackup.c:379 pg_basebackup.c:533 +#, c-format +msgid "%s: could not get COPY data stream: %s" +msgstr "%s : n'a pas pu obtenir le flux de donn�es de COPY : %s" + +#: pg_basebackup.c:411 pg_basebackup.c:465 +#, c-format +msgid "%s: could not write to compressed file \"%s\": %s\n" +msgstr "%s : n'a pas pu �crire dans le fichier compress� � %s � : %s\n" + +#: pg_basebackup.c:421 pg_basebackup.c:475 pg_basebackup.c:700 +#, c-format +msgid "%s: could not write to file \"%s\": %s\n" +msgstr "%s : n'a pas pu �crire dans le fichier � %s � : %s\n" + +#: pg_basebackup.c:432 +#, c-format +msgid "%s: could not close compressed file \"%s\": %s\n" +msgstr "%s : n'a pas pu fermer le fichier compress� � %s � : %s\n" + +#: pg_basebackup.c:444 +#, c-format +msgid "%s: could not close file \"%s\": %s\n" +msgstr "%s : n'a pas pu fermer le fichier � %s � : %s\n" + +#: pg_basebackup.c:455 pg_basebackup.c:562 +#, c-format +msgid "%s: could not read COPY data: %s" +msgstr "%s : n'a pas pu lire les donn�es du COPY : %s" + +#: pg_basebackup.c:515 +#, c-format +msgid "%s: received invalid directory (too long): %s\n" +msgstr "%s : a re�u un r�pertoire invalide (trop long) : %s\n" + +#: pg_basebackup.c:576 +#, c-format +msgid "%s: invalid tar block header size: %i\n" +msgstr "%s : taille invalide de l'en-t�te de bloc du fichier tar : %i\n" + +#: pg_basebackup.c:584 +#, c-format +msgid "%s: could not parse file size\n" +msgstr "%s : n'a pas pu analyser la taille du fichier\n" + +#: pg_basebackup.c:592 +#, c-format +msgid "%s: could not parse file mode\n" +msgstr "%s : n'a pas pu analyser le mode du fichier\n" + +#: pg_basebackup.c:627 +#, c-format +msgid "%s: could not set permissions on directory \"%s\": %s\n" +msgstr "%s : n'a pas configurer les droits sur le r�pertoire � %s � : %s\n" + +#: pg_basebackup.c:640 +#, c-format +msgid "%s: could not create symbolic link from \"%s\" to \"%s\": %s\n" +msgstr "%s : n'a pas pu cr�er le lien symbolique de � %s � vers � %s � : %s\n" + +#: pg_basebackup.c:647 +#, c-format +msgid "%s: unrecognized link indicator \"%c\"\n" +msgstr "%s : indicateur de lien � %c � non reconnu\n" + +#: pg_basebackup.c:667 +#, c-format +msgid "%s: could not set permissions on file \"%s\": %s\n" +msgstr "%s : n'a pas pu configurer les droits sur le fichier � %s � : %s\n" + +#: pg_basebackup.c:725 +#, c-format +msgid "%s: COPY stream ended before last file was finished\n" +msgstr "" +"%s : le flux COPY s'est termin� avant que le dernier fichier soit termin�\n" + +#: pg_basebackup.c:786 +msgid "Password: " +msgstr "Mot de passe : " + +#: pg_basebackup.c:806 +#, c-format +msgid "%s: could not connect to server: %s" +msgstr "%s : n'a pas pu se connecter au serveur : %s" + +#: pg_basebackup.c:847 +#, c-format +msgid "%s: unsupported server version %s\n" +msgstr "%s : version du serveur � %s � non support�e\n" + +#: pg_basebackup.c:865 +#, c-format +msgid "%s: could not send base backup command: %s" +msgstr "%s : n'a pas pu envoyer la commande de sauvegarde de base : %s" + +#: pg_basebackup.c:876 +#, c-format +msgid "%s: could not initiate base backup: %s" +msgstr "%s : n'a pas pu initier la sauvegarde de base : %s" + +#: pg_basebackup.c:882 +#, c-format +msgid "%s: no start point returned from server\n" +msgstr "%s : aucun point de red�marrage renvoy� du serveur\n" + +#: pg_basebackup.c:896 +#, c-format +msgid "%s: could not get backup header: %s" +msgstr "%s : n'a pas pu obtenir l'en-t�te du serveur : %s" + +#: pg_basebackup.c:902 +#, c-format +msgid "%s: no data returned from server\n" +msgstr "%s : aucune donn�e renvoy�e du serveur\n" + +#: pg_basebackup.c:930 +#, c-format +msgid "%s: can only write single tablespace to stdout, database has %i\n" +msgstr "" +"%s : peut seulement �crire un tablespace sur la sortie standard, la base en " +"a %i\n" + +#: pg_basebackup.c:959 +#, c-format +msgid "%s: could not get WAL end position from server: %s" +msgstr "" +"%s : n'a pas pu obtenir la position finale des journaux de transactions �\n" +"partir du serveur : %s" + +#: pg_basebackup.c:965 +#, c-format +msgid "%s: no WAL end position returned from server\n" +msgstr "" +"%s : aucune position de fin du journal de transaction renvoy�e par le " +"serveur\n" + +#: pg_basebackup.c:976 +#, c-format +msgid "%s: final receive failed: %s" +msgstr "%s : �chec lors de la r�ception finale : %s" + +#: pg_basebackup.c:1050 +#, c-format +msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" +msgstr "" +"%s : format de sortie � %s � invalide, doit �tre soit � plain � soit � tar " +"�\n" + +#: pg_basebackup.c:1072 +#, c-format +msgid "%s: invalid compression level \"%s\"\n" +msgstr "%s : niveau de compression � %s � invalide\n" + +#: pg_basebackup.c:1084 +#, c-format +msgid "" +"%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" +msgstr "" +"%s : argument � %s � invalide pour le CHECKPOINT, doit �tre soit � fast �\n" +"soit � spread �\n" + +#: pg_basebackup.c:1115 pg_basebackup.c:1129 pg_basebackup.c:1140 +#: pg_basebackup.c:1153 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Essayer � %s --help � pour plus d'informations.\n" + +#: pg_basebackup.c:1127 +#, c-format +msgid "%s: too many command-line arguments (first is \"%s\")\n" +msgstr "%s : trop d'arguments en ligne de commande (le premier �tant � %s �)\n" + +#: pg_basebackup.c:1139 +#, c-format +msgid "%s: no target directory specified\n" +msgstr "%s : aucun r�pertoire cible indiqu�\n" + +#: pg_basebackup.c:1151 +#, c-format +msgid "%s: only tar mode backups can be compressed\n" +msgstr "%s : seules les sauvegardes en mode tar peuvent �tre compress�es\n" + +#: pg_basebackup.c:1162 +#, c-format +msgid "%s: this build does not support compression\n" +msgstr "%s : cette construction ne supporte pas la compression\n" diff --git a/src/bin/pg_basebackup/po/it.po b/src/bin/pg_basebackup/po/it.po new file mode 100644 index 0000000000..c43cf01887 --- /dev/null +++ b/src/bin/pg_basebackup/po/it.po @@ -0,0 +1,393 @@ +# Italian message translation file for pg_basebackup +# Copyright (C) 2012 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# Daniele Varrazzo , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: pg_basebackup (PostgreSQL) 9.1\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2013-10-03 02:00+0000\n" +"PO-Revision-Date: 2013-10-04 01:25+0100\n" +"Last-Translator: Daniele Varrazzo \n" +"Language-Team: Gruppo traduzioni ITPUG \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Poedit 1.5.4\n" + +#: pg_basebackup.c:96 pg_basebackup.c:110 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: memoria esaurita\n" + +#: pg_basebackup.c:121 +#, c-format +msgid "" +"%s takes a base backup of a running PostgreSQL server.\n" +"\n" +msgstr "" +"%s crea un backup di base di un server PostgreSQL in esecuzione.\n" +"\n" + +#: pg_basebackup.c:123 +#, c-format +msgid "Usage:\n" +msgstr "Utilizzo:\n" + +#: pg_basebackup.c:124 +#, c-format +msgid " %s [OPTION]...\n" +msgstr " %s [OPZIONE]...\n" + +#: pg_basebackup.c:125 +#, c-format +msgid "" +"\n" +"Options controlling the output:\n" +msgstr "" +"\n" +"Opzioni di controllo del'output:\n" + +#: pg_basebackup.c:126 +#, c-format +msgid " -D, --pgdata=DIRECTORY receive base backup into directory\n" +msgstr " -D, --pgdata=DIRECTORY directory in cui ricevere il backup di base\n" + +#: pg_basebackup.c:127 +#, c-format +msgid " -F, --format=p|t output format (plain, tar)\n" +msgstr " -F, --format=p|t formato di output (plain (default), tar)\n" + +#: pg_basebackup.c:128 +#, c-format +msgid " -x, --xlog include required WAL files in backup\n" +msgstr "" +" -x, --xlog includi i file WAL necessari nel backup\n" +" (modalità fetch)\n" + +#: pg_basebackup.c:129 +#, c-format +msgid " -z, --gzip compress tar output\n" +msgstr " -z, --gzip comprimi l'output tar\n" + +#: pg_basebackup.c:130 +#, c-format +msgid " -Z, --compress=0-9 compress tar output with given compression level\n" +msgstr " -Z, --compress=0-9 comprimi l'output tar a questo livello di compressione\n" + +#: pg_basebackup.c:131 +#, c-format +msgid "" +"\n" +"General options:\n" +msgstr "" +"\n" +"Opzioni generali:\n" + +#: pg_basebackup.c:132 +#, c-format +msgid "" +" -c, --checkpoint=fast|spread\n" +" set fast or spread checkpointing\n" +msgstr "" +" -c, --checkpoint=fast|spread\n" +" imposta punti di controllo più veloci o più radi\n" + +#: pg_basebackup.c:134 +#, c-format +msgid " -l, --label=LABEL set backup label\n" +msgstr " -l, --label=LABEL imposta l'etichetta del backup\n" + +#: pg_basebackup.c:135 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress mostra informazioni sull'esecuzione\n" + +#: pg_basebackup.c:136 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose messaggi di output più numerosi\n" + +#: pg_basebackup.c:137 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help mostra questo aiuto ed esci\n" + +#: pg_basebackup.c:138 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version mostra informazioni sulla versione ed esci\n" + +#: pg_basebackup.c:139 +#, c-format +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Opzioni di connessione:\n" + +#: pg_basebackup.c:140 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory\n" +msgstr " -h, --host=NOMEHOST host server del database o directory socket\n" + +#: pg_basebackup.c:141 +#, c-format +msgid " -p, --port=PORT database server port number\n" +msgstr " -p, --port=PORTA numero porta del server di database\n" + +#: pg_basebackup.c:142 +#, c-format +msgid " -U, --username=NAME connect as specified database user\n" +msgstr " -U, --username=NOME connessione con l'utente di database specificato\n" + +#: pg_basebackup.c:143 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password non chiedere mai le password\n" + +#: pg_basebackup.c:144 +#, c-format +msgid " -W, --password force password prompt (should happen automatically)\n" +msgstr "" +" -W, --password forza la richiesta di una password (dovrebbe essere\n" +" automatico)\n" + +#: pg_basebackup.c:145 +#, c-format +msgid "" +"\n" +"Report bugs to .\n" +msgstr "" +"\n" +"Puoi segnalare eventuali bug a .\n" + +#: pg_basebackup.c:167 pg_basebackup.c:621 +#, c-format +msgid "%s: could not create directory \"%s\": %s\n" +msgstr "%s: creazione della directory \"%s\" fallita: %s\n" + +#: pg_basebackup.c:184 +#, c-format +msgid "%s: directory \"%s\" exists but is not empty\n" +msgstr "%s: la directory \"%s\" esiste ma non è vuota\n" + +#: pg_basebackup.c:192 +#, c-format +msgid "%s: could not access directory \"%s\": %s\n" +msgstr "%s: accesso alla directory \"%s\" fallito: %s\n" + +#: pg_basebackup.c:239 +#, c-format +msgid "%s/%s kB (100%%), %d/%d tablespace %35s" +msgid_plural "%s/%s kB (100%%), %d/%d tablespaces %35s" +msgstr[0] "%s/%s kB (100%%), %d/%d tablespace %35s" +msgstr[1] "%s/%s kB (100%%), %d/%d tablespace %35s" + +#: pg_basebackup.c:245 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace (%-30.30s)" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces (%-30.30s)" +msgstr[0] "%s/%s kB (%d%%), %d/%d tablespace (%-30.30s)" +msgstr[1] "%s/%s kB (%d%%), %d/%d tablespace (%-30.30s)" + +#: pg_basebackup.c:252 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces" +msgstr[0] "%s/%s kB (%d%%), %d/%d tablespace" +msgstr[1] "%s/%s kB (%d%%), %d/%d tablespace" + +#: pg_basebackup.c:295 pg_basebackup.c:313 pg_basebackup.c:337 +#, c-format +msgid "%s: could not set compression level %i: %s\n" +msgstr "%s: non è stato possibile impostare il livello di compressione %i: %s\n" + +#: pg_basebackup.c:356 +#, c-format +msgid "%s: could not create compressed file \"%s\": %s\n" +msgstr "%s: creazione del file compresso \"%s\" fallita: %s\n" + +#: pg_basebackup.c:367 pg_basebackup.c:660 +#, c-format +msgid "%s: could not create file \"%s\": %s\n" +msgstr "%s: creazione del file \"%s\" fallita: %s\n" + +#: pg_basebackup.c:379 pg_basebackup.c:533 +#, c-format +msgid "%s: could not get COPY data stream: %s" +msgstr "%s: non è stato possibile ottenere lo stream di dati COPY: %s" + +#: pg_basebackup.c:411 pg_basebackup.c:465 +#, c-format +msgid "%s: could not write to compressed file \"%s\": %s\n" +msgstr "%s: scrittura nel file compresso \"%s\" fallita: %s\n" + +#: pg_basebackup.c:421 pg_basebackup.c:475 pg_basebackup.c:700 +#, c-format +msgid "%s: could not write to file \"%s\": %s\n" +msgstr "%s: scrittura nel file \"%s\" fallita: %s\n" + +#: pg_basebackup.c:432 +#, c-format +msgid "%s: could not close compressed file \"%s\": %s\n" +msgstr "%s: chiusura del file compresso \"%s\" fallita: %s\n" + +#: pg_basebackup.c:444 +#, c-format +msgid "%s: could not close file \"%s\": %s\n" +msgstr "%s: chiusura del file \"%s\" fallita: %s\n" + +#: pg_basebackup.c:455 pg_basebackup.c:562 +#, c-format +msgid "%s: could not read COPY data: %s" +msgstr "%s: lettura dei dati COPY fallita: %s" + +#: pg_basebackup.c:515 +#, c-format +msgid "%s: received invalid directory (too long): %s\n" +msgstr "%s: ricevuta directory non valida (troppo lunga): %s\n" + +#: pg_basebackup.c:576 +#, c-format +msgid "%s: invalid tar block header size: %i\n" +msgstr "%s: dimensione del blocco di intestazione del file tar non valida: %i\n" + +#: pg_basebackup.c:584 +#, c-format +msgid "%s: could not parse file size\n" +msgstr "%s: interpretazione della dimensione del file fallita\n" + +#: pg_basebackup.c:592 +#, c-format +msgid "%s: could not parse file mode\n" +msgstr "%s: interpretazione della modalità del file fallita\n" + +#: pg_basebackup.c:627 +#, c-format +msgid "%s: could not set permissions on directory \"%s\": %s\n" +msgstr "%s: impostazione dei permessi sulla directory \"%s\" fallita: %s\n" + +#: pg_basebackup.c:640 +#, c-format +msgid "%s: could not create symbolic link from \"%s\" to \"%s\": %s\n" +msgstr "%s: creazione del link simbolico da \"%s\" a \"%s\" fallita: %s\n" + +#: pg_basebackup.c:647 +#, c-format +msgid "%s: unrecognized link indicator \"%c\"\n" +msgstr "%s: indicatore di link sconosciuto \"%c\"\n" + +#: pg_basebackup.c:667 +#, c-format +msgid "%s: could not set permissions on file \"%s\": %s\n" +msgstr "%s: impostazione dei permessi sul file \"%s\" fallita: %s\n" + +#: pg_basebackup.c:725 +#, c-format +msgid "%s: COPY stream ended before last file was finished\n" +msgstr "%s: lo stream COPY è terminato prima che l'ultimo file fosse finito\n" + +#: pg_basebackup.c:786 +msgid "Password: " +msgstr "Password: " + +#: pg_basebackup.c:806 +#, c-format +msgid "%s: could not connect to server: %s" +msgstr "%s: non è stato possibile connettersi al server: %s" + +#: pg_basebackup.c:847 +#, c-format +msgid "%s: unsupported server version %s\n" +msgstr "%s: versione server %s non supportata\n" + +#: pg_basebackup.c:865 +#, c-format +msgid "%s: could not send base backup command: %s" +msgstr "%s: non è stato possibile inviare il comando di backup di base: %s" + +#: pg_basebackup.c:876 +#, c-format +msgid "%s: could not initiate base backup: %s" +msgstr "%s: avvio del backup di base fallito: %s" + +#: pg_basebackup.c:882 +#, c-format +msgid "%s: no start point returned from server\n" +msgstr "%s: nessun punto di avvio restituito dal server\n" + +#: pg_basebackup.c:896 +#, c-format +msgid "%s: could not get backup header: %s" +msgstr "%s: non è stato possibile ottenere l'intestazione del backup: %s" + +#: pg_basebackup.c:902 +#, c-format +msgid "%s: no data returned from server\n" +msgstr "%s: nessun dato restituito dal server\n" + +#: pg_basebackup.c:930 +#, c-format +msgid "%s: can only write single tablespace to stdout, database has %i\n" +msgstr "%s: è possibile scrivere solo un singolo tablespace su stdout, il database ne ha %i\n" + +#: pg_basebackup.c:959 +#, c-format +msgid "%s: could not get WAL end position from server: %s" +msgstr "%s: non è stato possibile ottenere la posizione finale del WAL dal server: %s" + +#: pg_basebackup.c:965 +#, c-format +msgid "%s: no WAL end position returned from server\n" +msgstr "%s: nessuna posizione finale del WAL restituita dal server\n" + +#: pg_basebackup.c:976 +#, c-format +msgid "%s: final receive failed: %s" +msgstr "%s: ricezione finale fallita: %s" + +#: pg_basebackup.c:1050 +#, c-format +msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" +msgstr "%s: formato di output \"%s\" non valido, deve essere \"plain\" oppure \"tar\"\n" + +#: pg_basebackup.c:1072 +#, c-format +msgid "%s: invalid compression level \"%s\"\n" +msgstr "%s: livello di compressione non valido \"%s\"\n" + +#: pg_basebackup.c:1084 +#, c-format +msgid "%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" +msgstr "%s: argomento di checkpoint \"%s\" non valido, deve essere \"fast\" oppure \"spread\"\n" + +#: pg_basebackup.c:1115 pg_basebackup.c:1129 pg_basebackup.c:1140 +#: pg_basebackup.c:1153 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Prova \"%s --help\" per maggiori informazioni.\n" + +#: pg_basebackup.c:1127 +#, c-format +msgid "%s: too many command-line arguments (first is \"%s\")\n" +msgstr "%s: troppi argomenti nella riga di comando (il primo è \"%s\")\n" + +#: pg_basebackup.c:1139 +#, c-format +msgid "%s: no target directory specified\n" +msgstr "%s: nessuna directory di destinazione specificata\n" + +#: pg_basebackup.c:1151 +#, c-format +msgid "%s: only tar mode backups can be compressed\n" +msgstr "%s: solo i backup in modalità tar possono essere compressi\n" + +#: pg_basebackup.c:1162 +#, c-format +msgid "%s: this build does not support compression\n" +msgstr "%s: questo binario compilato non supporta la compressione\n" diff --git a/src/bin/pg_basebackup/po/ja.po b/src/bin/pg_basebackup/po/ja.po new file mode 100644 index 0000000000..b310b1ca48 --- /dev/null +++ b/src/bin/pg_basebackup/po/ja.po @@ -0,0 +1,381 @@ +# LANGUAGE message translation file for pg_basebackup +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 9.1\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-08-27 16:29+0900\n" +"PO-Revision-Date: 2011-08-30 21:26+0900\n" +"Last-Translator: honda@postgresql.jp\n" +"Language-Team: Japan Postgresql User Group\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#: pg_basebackup.c:96 pg_basebackup.c:110 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: メモリ不足です\n" + +#: pg_basebackup.c:121 +#, c-format +msgid "" +"%s takes a base backup of a running PostgreSQL server.\n" +"\n" +msgstr "%sは実行中のPostgreSQLサーバのベースバックアップを取得します。\n" + +#: pg_basebackup.c:123 +#, c-format +msgid "Usage:\n" +msgstr "使用方法:\n" + +#: pg_basebackup.c:124 +#, c-format +msgid " %s [OPTION]...\n" +msgstr " %s [OPTION]...\n" + +#: pg_basebackup.c:125 +#, c-format +msgid "" +"\n" +"Options controlling the output:\n" +msgstr "" +"\n" +"出力を制御するオプション:\n" + +#: pg_basebackup.c:126 +#, c-format +msgid " -D, --pgdata=DIRECTORY receive base backup into directory\n" +msgstr "" +" -D, --pgdata=DIRECTORY ディレクトリ内にベースバックアップを格納します\n" + +#: pg_basebackup.c:127 +#, c-format +msgid " -F, --format=p|t output format (plain, tar)\n" +msgstr " -F, --format=p|t 出力フォーマット(プレインまたはtar)\n" + +#: pg_basebackup.c:128 +#, c-format +msgid " -x, --xlog include required WAL files in backup\n" +msgstr "" +" -x, --xlog 必要なWALファイルをバックアップ内に含めます\n" + +#: pg_basebackup.c:129 +#, c-format +msgid " -z, --gzip compress tar output\n" +msgstr " -z, --gzip tar出力を圧縮します\n" + +#: pg_basebackup.c:130 +#, c-format +msgid "" +" -Z, --compress=0-9 compress tar output with given compression level\n" +msgstr " -Z, --compress=0-9 指定した圧縮レベルでtar出力を圧縮します\n" + +#: pg_basebackup.c:131 +#, c-format +msgid "" +"\n" +"General options:\n" +msgstr "" +"\n" +"汎用のオプション:\n" + +#: pg_basebackup.c:132 +#, c-format +msgid "" +" -c, --checkpoint=fast|spread\n" +" set fast or spread checkpointing\n" +msgstr "" +" -c, --checkpoint=fast|spread\n" +" 高速チェックポイント処理または分散チェックポイント" +"処理\n" + +#: pg_basebackup.c:134 +#, c-format +msgid " -l, --label=LABEL set backup label\n" +msgstr " -l, --label=LABEL バックアップラベルの設定\n" + +#: pg_basebackup.c:135 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress 進行状況の表示\n" + +#: pg_basebackup.c:136 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose 冗長メッセージの出力\n" + +#: pg_basebackup.c:137 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help このヘルプを表示し終了します\n" + +#: pg_basebackup.c:138 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version バージョン情報を出力し終了します\n" + +#: pg_basebackup.c:139 +#, c-format +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"接続オプション:\n" + +#: pg_basebackup.c:140 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory\n" +msgstr "" +" -h, --host=HOSTNAME データベースサーバホストまたはソケットディレクト" +"リ\n" + +#: pg_basebackup.c:141 +#, c-format +msgid " -p, --port=PORT database server port number\n" +msgstr " -p, --port=PORT データベースサーバのポート番号\n" + +#: pg_basebackup.c:142 +#, c-format +msgid " -U, --username=NAME connect as specified database user\n" +msgstr " -U, --username=NAME 指定したデータベースユーザで接続\n" + +#: pg_basebackup.c:143 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password パスワード入力を促さない\n" + +#: pg_basebackup.c:144 +#, c-format +msgid "" +" -W, --password force password prompt (should happen " +"automatically)\n" +msgstr "" +" -W, --password 強制的にパスワード入力を促す(自動的に行われるはず" +"です)\n" + +#: pg_basebackup.c:145 +#, c-format +msgid "" +"\n" +"Report bugs to .\n" +msgstr "" +"\n" +"不具合はまで報告ください\n" + +#: pg_basebackup.c:167 pg_basebackup.c:604 +#, c-format +msgid "%s: could not create directory \"%s\": %s\n" +msgstr "%s: \"%s\"ディレクトリを作成することができませんでした: %s\n" + +#: pg_basebackup.c:184 +#, c-format +msgid "%s: directory \"%s\" exists but is not empty\n" +msgstr "%s: \"%s\"ディレクトリは存在しますが空ではありません\n" + +#: pg_basebackup.c:192 +#, c-format +msgid "%s: could not access directory \"%s\": %s\n" +msgstr "%s: \"%s\"ディレクトリにアクセスできませんでした: %s\n" + +#: pg_basebackup.c:239 +#, c-format +msgid "%s/%s kB (100%%), %d/%d tablespace %35s" +msgid_plural "%s/%s kB (100%%), %d/%d tablespaces %35s" +msgstr[0] "%s/%s kB (100%%), %d/%d テーブル空間 %35s" +msgstr[1] "%s/%s kB (100%%), %d/%d テーブル空間 %35s" + +#: pg_basebackup.c:245 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace (%-30.30s)" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces (%-30.30s)" +msgstr[0] "%s/%s kB (%d%%), %d/%d テーブル空間 (%-30.30s)" +msgstr[1] "%s/%s kB (%d%%), %d/%d テーブル空間 (%-30.30s)" + +#: pg_basebackup.c:252 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces" +msgstr[0] "%s/%s kB (%d%%), %d/%d テーブル空間" +msgstr[1] "%s/%s kB (%d%%), %d/%d テーブル空間" + +#: pg_basebackup.c:295 pg_basebackup.c:313 pg_basebackup.c:337 +#, c-format +msgid "%s: could not set compression level %i: %s\n" +msgstr "%s: 圧縮レベルを%iに設定することができませんでした: %s\n" + +#: pg_basebackup.c:356 +#, c-format +msgid "%s: could not create compressed file \"%s\": %s\n" +msgstr "%s: \"%s\"圧縮ファイルを作成することができませんでした: %s\n" + +#: pg_basebackup.c:367 pg_basebackup.c:643 +#, c-format +msgid "%s: could not create file \"%s\": %s\n" +msgstr "%s: \"%s\"ファイルを作成することができませんでした: %s\n" + +#: pg_basebackup.c:379 pg_basebackup.c:516 +#, c-format +msgid "%s: could not get COPY data stream: %s" +msgstr "%s: COPYデータストリームを入手できませんでした: %s" + +#: pg_basebackup.c:411 pg_basebackup.c:457 +#, c-format +msgid "%s: could not write to compressed file \"%s\": %s\n" +msgstr "%s: \"%s\"圧縮ファイルに書き出すことができませんでした: %s\n" + +#: pg_basebackup.c:420 pg_basebackup.c:466 pg_basebackup.c:683 +#, c-format +msgid "%s: could not write to file \"%s\": %s\n" +msgstr "%s: \"%s\"ファイルに書き出すことができませんでした: %s\n" + +#: pg_basebackup.c:447 pg_basebackup.c:545 +#, c-format +msgid "%s: could not read COPY data: %s" +msgstr "%s: COPYデータを読み取ることができませんでした: %s" + +#: pg_basebackup.c:559 +#, c-format +msgid "%s: invalid tar block header size: %i\n" +msgstr "%s: 無効なtarブロックヘッダサイズ: %i\n" + +#: pg_basebackup.c:567 +#, c-format +msgid "%s: could not parse file size\n" +msgstr "%s: ファイルサイズの解析ができませんでした\n" + +#: pg_basebackup.c:575 +#, c-format +msgid "%s: could not parse file mode\n" +msgstr "%s: ファイルモードの解析ができませんでした\n" + +#: pg_basebackup.c:610 +#, c-format +msgid "%s: could not set permissions on directory \"%s\": %s\n" +msgstr "%s: \"%s\"ディレクトリの権限を設定することができませんでした: %s\n" + +#: pg_basebackup.c:623 +#, c-format +msgid "%s: could not create symbolic link from \"%s\" to \"%s\": %s\n" +msgstr "%s: \"%s\"から\"%s\"へのシンボリックリンクを作成できませんでした: %s\n" + +#: pg_basebackup.c:630 +#, c-format +msgid "%s: unrecognized link indicator \"%c\"\n" +msgstr "%s: 未知のリンク指示子\"%c\"\n" + +#: pg_basebackup.c:650 +#, c-format +msgid "%s: could not set permissions on file \"%s\": %s\n" +msgstr "%s: \"%s\"ファイルの権限を設定できませんでした: %s\n" + +#: pg_basebackup.c:708 +#, c-format +msgid "%s: COPY stream ended before last file was finished\n" +msgstr "%s: 最後のファイルが終わる前にCOPYストリームが完了しました\n" + +#: pg_basebackup.c:769 +msgid "Password: " +msgstr "パスワード: " + +#: pg_basebackup.c:789 +#, c-format +msgid "%s: could not connect to server: %s" +msgstr "%s: サーバに接続できませんでした: %s" + +#: pg_basebackup.c:829 +#, c-format +msgid "%s: could not send base backup command: %s" +msgstr "%s: ベースバックアップコマンドを送信できませんでした: %s" + +#: pg_basebackup.c:840 +#, c-format +msgid "%s: could not initiate base backup: %s" +msgstr "%s: ベースバックアップを初期化できませんでした: %s" + +#: pg_basebackup.c:846 +#, c-format +msgid "%s: no start point returned from server\n" +msgstr "%s: サーバからスタートポイントが返りませんでした\n" + +#: pg_basebackup.c:862 +#, c-format +msgid "%s: could not get backup header: %s" +msgstr "%s: バックアップヘッダを入手できませんでした: %s" + +#: pg_basebackup.c:868 +#, c-format +msgid "%s: no data returned from server\n" +msgstr "%s: サーバから返されるデータがありません\n" + +#: pg_basebackup.c:896 +#, c-format +msgid "%s: can only write single tablespace to stdout, database has %i\n" +msgstr "" +"%s: データベースには%iありましたが、1つのテーブル空間のみ標準出力に書き出さ" +"れました\n" + +#: pg_basebackup.c:925 +#, c-format +msgid "%s: could not get WAL end position from server\n" +msgstr "%s: サーバからWAL終了位置を入手できませんでした\n" + +#: pg_basebackup.c:931 +#, c-format +msgid "%s: no WAL end position returned from server\n" +msgstr "%s: サーバからWAL終了位置が返されませんでした\n" + +#: pg_basebackup.c:943 +#, c-format +msgid "%s: final receive failed: %s" +msgstr "%s: 最終受信に失敗しました: %s" + +#: pg_basebackup.c:1017 +#, c-format +msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" +msgstr "" +"%s: \"%s\"出力フォーマットは無効です。\"plain\"か\"tar\"でなければなりませ" +"ん\n" + +#: pg_basebackup.c:1039 +#, c-format +msgid "%s: invalid compression level \"%s\"\n" +msgstr "%s: \"%s\"圧縮レベルは無効です\n" + +#: pg_basebackup.c:1051 +#, c-format +msgid "" +"%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" +msgstr "%s: \"%s\"チェックポイント引数は無効です。\"fast\"または\"spread\"でなければなりません\n" + +#: pg_basebackup.c:1082 pg_basebackup.c:1096 pg_basebackup.c:1107 +#: pg_basebackup.c:1120 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "詳細については\"%s --help\"を実行してください。\n" + +#: pg_basebackup.c:1094 +#, c-format +msgid "%s: too many command-line arguments (first is \"%s\")\n" +msgstr "%s: コマンドライン引数が多過ぎます(最初は\"%s\"です)\n" + +#: pg_basebackup.c:1106 +#, c-format +msgid "%s: no target directory specified\n" +msgstr "%s: 対象ディレクトリが指定されていません\n" + +#: pg_basebackup.c:1118 +#, c-format +msgid "%s: only tar mode backups can be compressed\n" +msgstr "%s: tarモードのバックアップのみ圧縮することができます\n" + +#: pg_basebackup.c:1129 +#, c-format +msgid "%s: this build does not support compression\n" +msgstr "%s: この構築では圧縮をサポートしていません\n" diff --git a/src/bin/pg_basebackup/po/pl.po b/src/bin/pg_basebackup/po/pl.po new file mode 100644 index 0000000000..5b30ac01b3 --- /dev/null +++ b/src/bin/pg_basebackup/po/pl.po @@ -0,0 +1,388 @@ +# Polish message translation file for pg_basebackup +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# +# Begina Felicysym , 2011. +msgid "" +msgstr "" +"Project-Id-Version: pg_basebackup (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-09-29 22:55+0000\n" +"PO-Revision-Date: 2011-09-30 09:52-0300\n" +"Last-Translator: Begina Felicysym \n" +"Language-Team: Polish TotroiseSvn translation team\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1-beta1\n" + +#: pg_basebackup.c:96 pg_basebackup.c:110 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: brak pamięci\n" + +#: pg_basebackup.c:121 +#, c-format +msgid "" +"%s takes a base backup of a running PostgreSQL server.\n" +"\n" +msgstr "" +"%s bierze podstawową kopię zapasową działającego serwera PostgreSQL.\n" +"\n" + +#: pg_basebackup.c:123 +#, c-format +msgid "Usage:\n" +msgstr "Składnia:\n" + +#: pg_basebackup.c:124 +#, c-format +msgid " %s [OPTION]...\n" +msgstr " %s [OPCJA]...\n" + +#: pg_basebackup.c:125 +#, c-format +msgid "" +"\n" +"Options controlling the output:\n" +msgstr "" +"\n" +"Opcje kontroli wyjścia:\n" + +#: pg_basebackup.c:126 +#, c-format +msgid " -D, --pgdata=DIRECTORY receive base backup into directory\n" +msgstr " -D, --pgdata=FOLDER dostarcza kopię zapasową bazy do katalogu\n" + +#: pg_basebackup.c:127 +#, c-format +msgid " -F, --format=p|t output format (plain, tar)\n" +msgstr " -F, --format=p|t format wyjścia (plain, tar)\n" + +#: pg_basebackup.c:128 +#, c-format +msgid " -x, --xlog include required WAL files in backup\n" +msgstr "" +" -x, --xlog dołącza wymagane pliki WAL do kopii zapasowej\n" + +#: pg_basebackup.c:129 +#, c-format +msgid " -z, --gzip compress tar output\n" +msgstr " -z, --gzip wyjście jako spakowany tar\n" + +#: pg_basebackup.c:130 +#, c-format +msgid "" +" -Z, --compress=0-9 compress tar output with given compression level\n" +msgstr "" +" -Z, --compress=0-9 wyjście jako spakowany tar z określonym poziomem " +"kompresji\n" + +#: pg_basebackup.c:131 +#, c-format +msgid "" +"\n" +"General options:\n" +msgstr "" +"\n" +"Opcje ogólne:\n" + +#: pg_basebackup.c:132 +#, c-format +msgid "" +" -c, --checkpoint=fast|spread\n" +" set fast or spread checkpointing\n" +msgstr "" +" -c, --checkpoint=fast|spread\n" +" ustawia szybkie lub rozszerzone sprawdzenia\n" + +#: pg_basebackup.c:134 +#, c-format +msgid " -l, --label=LABEL set backup label\n" +msgstr " -l, --label=ETYKIETA ustala etykietę kopii zapasowej\n" + +#: pg_basebackup.c:135 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress pokazanie informacji o postępie\n" + +#: pg_basebackup.c:136 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose szczegółowe komunikaty na wyjściu\n" + +#: pg_basebackup.c:137 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help pokazuje ten ekran pomocy i kończy\n" + +#: pg_basebackup.c:138 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version pokazuje informacje o wersji i kończy\n" + +#: pg_basebackup.c:139 +#, c-format +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Opcje połączenia:\n" + +#: pg_basebackup.c:140 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory\n" +msgstr "" +" -h, --host=NAZWAHOSTA host serwera bazy danych lub katalog gniazda\n" + +#: pg_basebackup.c:141 +#, c-format +msgid " -p, --port=PORT database server port number\n" +msgstr " -p, --port=PORT numer portu na serwera bazy dnaych\n" + +#: pg_basebackup.c:142 +#, c-format +msgid " -U, --username=NAME connect as specified database user\n" +msgstr " -U, --username=NAZWA połączenie jako wskazany użytkownik bazy\n" + +#: pg_basebackup.c:143 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password nie pytaj nigdy o hasło\n" + +#: pg_basebackup.c:144 +#, c-format +msgid "" +" -W, --password force password prompt (should happen " +"automatically)\n" +msgstr "" +" -W, --password wymuś pytanie o hasło (powinno nastąpić " +"automatycznie)\n" + +#: pg_basebackup.c:145 +#, c-format +msgid "" +"\n" +"Report bugs to .\n" +msgstr "" +"\n" +"Błędy proszę przesyłać na adres .\n" + +#: pg_basebackup.c:167 pg_basebackup.c:604 +#, c-format +msgid "%s: could not create directory \"%s\": %s\n" +msgstr "%s: nie można utworzyć katalogu \"%s\": %s\n" + +#: pg_basebackup.c:184 +#, c-format +msgid "%s: directory \"%s\" exists but is not empty\n" +msgstr "%s: folder \"%s\" nie jest pusty\n" + +#: pg_basebackup.c:192 +#, c-format +msgid "%s: could not access directory \"%s\": %s\n" +msgstr "%s: brak dostępu do katalogu \"%s\": %s\n" + +#: pg_basebackup.c:239 +#, c-format +msgid "%s/%s kB (100%%), %d/%d tablespace %35s" +msgid_plural "%s/%s kB (100%%), %d/%d tablespaces %35s" +msgstr[0] "%s/%s kB (100%%), %d/%d przestrzeń tabel %35s" +msgstr[1] "%s/%s kB (100%%), %d/%d przestrzenie tabel %35s" +msgstr[2] "%s/%s kB (100%%), %d/%d przestrzeni tabel %35s" + +#: pg_basebackup.c:245 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace (%-30.30s)" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces (%-30.30s)" +msgstr[0] "%s/%s kB (%d%%), %d/%d przestrzeń tabel (%-30.30s)" +msgstr[1] "%s/%s kB (%d%%), %d/%d przestrzenie tabel (%-30.30s)" +msgstr[2] "%s/%s kB (%d%%), %d/%d przestrzeni tabel (%-30.30s)" + +#: pg_basebackup.c:252 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces" +msgstr[0] "%s/%s kB (%d%%), %d/%d przestrzeń tabel" +msgstr[1] "%s/%s kB (%d%%), %d/%d przestrzenie tabel" +msgstr[2] "%s/%s kB (%d%%), %d/%d przestrzeni tabel" + +#: pg_basebackup.c:295 pg_basebackup.c:313 pg_basebackup.c:337 +#, c-format +msgid "%s: could not set compression level %i: %s\n" +msgstr "%s: nie można ustawić poziomu kompresji %i: %s\n" + +#: pg_basebackup.c:356 +#, c-format +msgid "%s: could not create compressed file \"%s\": %s\n" +msgstr "%s: nie można utworzyć spakowanego pliku \"%s\": %s\n" + +#: pg_basebackup.c:367 pg_basebackup.c:643 +#, c-format +msgid "%s: could not create file \"%s\": %s\n" +msgstr "%s: nie można utworzyć pliku \"%s\": %s\n" + +#: pg_basebackup.c:379 pg_basebackup.c:516 +#, c-format +msgid "%s: could not get COPY data stream: %s" +msgstr "%s: nie można pobrać strumienia danych COPY: %s" + +#: pg_basebackup.c:411 pg_basebackup.c:457 +#, c-format +msgid "%s: could not write to compressed file \"%s\": %s\n" +msgstr "%s: nie można pisać do spakowanego pliku \"%s\": %s\n" + +#: pg_basebackup.c:420 pg_basebackup.c:466 pg_basebackup.c:683 +#, c-format +msgid "%s: could not write to file \"%s\": %s\n" +msgstr "%s: nie można pisać do pliku \"%s\": %s\n" + +#: pg_basebackup.c:447 pg_basebackup.c:545 +#, c-format +msgid "%s: could not read COPY data: %s" +msgstr "%s: nie można odczytać danych COPY: %s" + +#: pg_basebackup.c:559 +#, c-format +msgid "%s: invalid tar block header size: %i\n" +msgstr "%s: nieprawidłowy rozmiar nagłówka bloku tar: %i\n" + +#: pg_basebackup.c:567 +#, c-format +msgid "%s: could not parse file size\n" +msgstr "%s: nie można odczytać rozmiaru pliku\n" + +#: pg_basebackup.c:575 +#, c-format +msgid "%s: could not parse file mode\n" +msgstr "%s: nie można odczytać trybu pliku\n" + +#: pg_basebackup.c:610 +#, c-format +msgid "%s: could not set permissions on directory \"%s\": %s\n" +msgstr "%s: nie można ustawić uprawnień do folderu \"%s\": %s\n" + +#: pg_basebackup.c:623 +#, c-format +msgid "%s: could not create symbolic link from \"%s\" to \"%s\": %s\n" +msgstr "%s: nie można utworzyć linku symbolicznego dla \"%s\" na \"%s\": %s\n" + +#: pg_basebackup.c:630 +#, c-format +msgid "%s: unrecognized link indicator \"%c\"\n" +msgstr "%s: nierozpoznany wskaźnik linku \"%c\"\n" + +#: pg_basebackup.c:650 +#, c-format +msgid "%s: could not set permissions on file \"%s\": %s\n" +msgstr "%s: nie można ustawić uprawnień do pliku \"%s\": %s\n" + +#: pg_basebackup.c:708 +#, c-format +msgid "%s: COPY stream ended before last file was finished\n" +msgstr "%s: strumień COPY zakończony zanim skończył się ostatni plik\n" + +#: pg_basebackup.c:769 +msgid "Password: " +msgstr "Hasło: " + +#: pg_basebackup.c:789 +#, c-format +msgid "%s: could not connect to server: %s" +msgstr "%s: nie można połączyć z serwerem: %s" + +#: pg_basebackup.c:829 +#, c-format +msgid "%s: could not send base backup command: %s" +msgstr "%s: nie można wysłać polecenia wykonania kopii zapasowej bazy: %s" + +#: pg_basebackup.c:840 +#, c-format +msgid "%s: could not initiate base backup: %s" +msgstr "%s: nie można zainicjować kopii zapasowej bazy: %s" + +#: pg_basebackup.c:846 +#, c-format +msgid "%s: no start point returned from server\n" +msgstr "%s: nie zwrócono punktu startowego z serwera\n" + +#: pg_basebackup.c:862 +#, c-format +msgid "%s: could not get backup header: %s" +msgstr "%s: nie można pobrać nagłówka kopii zapasowej: %s" + +#: pg_basebackup.c:868 +#, c-format +msgid "%s: no data returned from server\n" +msgstr "%s: nie zwrócono żadnych danych z serwera\n" + +#: pg_basebackup.c:896 +#, c-format +msgid "%s: can only write single tablespace to stdout, database has %i\n" +msgstr "" +"%s: można zapisać tylko pojedynczą przestrzeń tabel do stdout, baza danych " +"ma %i\n" + +#: pg_basebackup.c:925 +#, c-format +msgid "%s: could not get WAL end position from server\n" +msgstr "%s: nie można pobrać pozycji końca WAL z serwera\n" + +#: pg_basebackup.c:931 +#, c-format +msgid "%s: no WAL end position returned from server\n" +msgstr "%s: nie zwrócono pozycji końca WAL z serwera\n" + +#: pg_basebackup.c:943 +#, c-format +msgid "%s: final receive failed: %s" +msgstr "%s: ostateczne pobieranie nie powiodło się: %s" + +#: pg_basebackup.c:1017 +#, c-format +msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" +msgstr "" +"%s: niepoprawny format wyjścia \"%s\", musi być \"plain\" lub \"tar\"\n" + +#: pg_basebackup.c:1039 +#, c-format +msgid "%s: invalid compression level \"%s\"\n" +msgstr "%s: niepoprawny poziom kompresji \"%s\"\n" + +#: pg_basebackup.c:1051 +#, c-format +msgid "" +"%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" +msgstr "" +"%s: niepoprawny argument checkpoint \"%s\", musi być \"fast\" lub \"spread" +"\"\n" + +#: pg_basebackup.c:1082 pg_basebackup.c:1096 pg_basebackup.c:1107 +#: pg_basebackup.c:1120 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Spróbuj \"%s --help\" aby uzyskać więcej informacji.\n" + +#: pg_basebackup.c:1094 +#, 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" + +#: pg_basebackup.c:1106 +#, c-format +msgid "%s: no target directory specified\n" +msgstr "%s: nie wskazano folderu docelowego\n" + +#: pg_basebackup.c:1118 +#, c-format +msgid "%s: only tar mode backups can be compressed\n" +msgstr "%s: tylko kopie zapasowe w trybie tar mogą być spakowane\n" + +#: pg_basebackup.c:1129 +#, c-format +msgid "%s: this build does not support compression\n" +msgstr "%s: ta kompilacja nie obsługuje kompresji\n" diff --git a/src/bin/pg_basebackup/po/pt_BR.po b/src/bin/pg_basebackup/po/pt_BR.po new file mode 100644 index 0000000000..e12dd4407f --- /dev/null +++ b/src/bin/pg_basebackup/po/pt_BR.po @@ -0,0 +1,410 @@ +# Brazilian Portuguese message translation file for pg_basebackup +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# Euler Taveira de Oliveira , 2012-2013. +# +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 9.1\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2013-10-06 10:08-0300\n" +"PO-Revision-Date: 2011-08-20 23:33-0300\n" +"Last-Translator: Euler Taveira de Oliveira \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\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" + +#: pg_basebackup.c:96 pg_basebackup.c:110 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: sem memória\n" + +#: pg_basebackup.c:121 +#, c-format +msgid "" +"%s takes a base backup of a running PostgreSQL server.\n" +"\n" +msgstr "" +"%s faz uma cópia de segurança base de um servidor PostgreSQL em execução.\n" +"\n" + +#: pg_basebackup.c:123 +#, c-format +msgid "Usage:\n" +msgstr "Uso:\n" + +#: pg_basebackup.c:124 +#, c-format +msgid " %s [OPTION]...\n" +msgstr " %s [OPÇÃO]...\n" + +#: pg_basebackup.c:125 +#, c-format +msgid "" +"\n" +"Options controlling the output:\n" +msgstr "" +"\n" +"Opções que controlam a saída:\n" + +#: pg_basebackup.c:126 +#, c-format +msgid " -D, --pgdata=DIRECTORY receive base backup into directory\n" +msgstr "" +" -D, --pgdata=DIRETÓRIO armazena a cópia de segurança base no diretório\n" + +#: pg_basebackup.c:127 +#, c-format +msgid " -F, --format=p|t output format (plain, tar)\n" +msgstr " -F, --format=p|t formato de saída (texto, tar)\n" + +#: pg_basebackup.c:128 +#, c-format +msgid " -x, --xlog include required WAL files in backup\n" +msgstr "" +" -x, --xlog inclui os arquivos do WAL requeridos na cópia de " +"segurança\n" + +#: pg_basebackup.c:129 +#, c-format +msgid " -z, --gzip compress tar output\n" +msgstr " -z, --gzip comprime saída do tar\n" + +#: pg_basebackup.c:130 +#, c-format +msgid "" +" -Z, --compress=0-9 compress tar output with given compression level\n" +msgstr "" +" -Z, --compress=0-9 comprime saída do tar com o nível de compressão " +"informado\n" + +#: pg_basebackup.c:131 +#, c-format +msgid "" +"\n" +"General options:\n" +msgstr "" +"\n" +"Opções gerais:\n" + +#: pg_basebackup.c:132 +#, c-format +msgid "" +" -c, --checkpoint=fast|spread\n" +" set fast or spread checkpointing\n" +msgstr "" +" -c, --checkpoint=fast|spread\n" +" define ponto de controle rápido ou distribuído\n" + +#: pg_basebackup.c:134 +#, c-format +msgid " -l, --label=LABEL set backup label\n" +msgstr " -l, --label=RÓTULO define rótulo da cópia de segurança\n" + +#: pg_basebackup.c:135 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress mostra informação de progresso\n" + +#: pg_basebackup.c:136 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose mostra mensagens de detalhe\n" + +#: pg_basebackup.c:137 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help mostra esta ajuda e termina\n" + +#: pg_basebackup.c:138 +#, c-format +msgid " --version output version information, then exit\n" +msgstr "" +" --version mostra informação sobre a versão e termina\n" + +#: pg_basebackup.c:139 +#, c-format +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Opções de conexão:\n" + +#: pg_basebackup.c:140 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory\n" +msgstr "" +" -h, --host=MÁQUINA máquina do servidor de banco de dados ou " +"diretório do soquete\n" + +#: pg_basebackup.c:141 +#, c-format +msgid " -p, --port=PORT database server port number\n" +msgstr "" +" -p, --port=PORTA número da porta do servidor de banco de dados\n" + +#: pg_basebackup.c:142 +#, c-format +msgid " -U, --username=NAME connect as specified database user\n" +msgstr "" +" -U, --username=NOME conecta como usuário do banco de dados " +"especificado\n" + +#: pg_basebackup.c:143 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password nunca pergunta senha\n" + +#: pg_basebackup.c:144 +#, c-format +msgid "" +" -W, --password force password prompt (should happen " +"automatically)\n" +msgstr "" +" -W, --password pergunta senha (pode ocorrer automaticamente)\n" + +#: pg_basebackup.c:145 +#, c-format +msgid "" +"\n" +"Report bugs to .\n" +msgstr "" +"\n" +"Relate erros a .\n" + +#: pg_basebackup.c:167 pg_basebackup.c:621 +#, c-format +msgid "%s: could not create directory \"%s\": %s\n" +msgstr "%s: não pôde criar diretório \"%s\": %s\n" + +#: pg_basebackup.c:184 +#, c-format +msgid "%s: directory \"%s\" exists but is not empty\n" +msgstr "%s: diretório \"%s\" existe mas não está vazio\n" + +#: pg_basebackup.c:192 +#, c-format +msgid "%s: could not access directory \"%s\": %s\n" +msgstr "%s: não pôde acessar diretório \"%s\": %s\n" + +#: pg_basebackup.c:239 +#, c-format +msgid "%s/%s kB (100%%), %d/%d tablespace %35s" +msgid_plural "%s/%s kB (100%%), %d/%d tablespaces %35s" +msgstr[0] "%s/%s kB (100%%), %d/%d tablespace %35s" +msgstr[1] "%s/%s kB (100%%), %d/%d tablespaces %35s" + +#: pg_basebackup.c:245 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace (%-30.30s)" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces (%-30.30s)" +msgstr[0] "%s/%s kB (%d%%), %d/%d tablespace (%-30.30s)" +msgstr[1] "%s/%s kB (%d%%), %d/%d tablespaces (%-30.30s)" + +#: pg_basebackup.c:252 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces" +msgstr[0] "%s/%s kB (%d%%), %d/%d tablespace" +msgstr[1] "%s/%s kB (%d%%), %d/%d tablespaces" + +#: pg_basebackup.c:295 pg_basebackup.c:313 pg_basebackup.c:337 +#, c-format +msgid "%s: could not set compression level %i: %s\n" +msgstr "%s: não pôde definir nível de compressão %i: %s\n" + +#: pg_basebackup.c:356 +#, c-format +msgid "%s: could not create compressed file \"%s\": %s\n" +msgstr "%s: não pôde criar arquivo comprimido \"%s\": %s\n" + +#: pg_basebackup.c:367 pg_basebackup.c:660 +#, c-format +msgid "%s: could not create file \"%s\": %s\n" +msgstr "%s: não pôde criar arquivo \"%s\": %s\n" + +#: pg_basebackup.c:379 pg_basebackup.c:533 +#, c-format +msgid "%s: could not get COPY data stream: %s" +msgstr "%s: não pôde obter fluxo de dados do COPY: %s" + +#: pg_basebackup.c:411 pg_basebackup.c:465 +#, c-format +msgid "%s: could not write to compressed file \"%s\": %s\n" +msgstr "%s: não pôde escrever no arquivo comprimido \"%s\": %s\n" + +#: pg_basebackup.c:421 pg_basebackup.c:475 pg_basebackup.c:700 +#, c-format +msgid "%s: could not write to file \"%s\": %s\n" +msgstr "%s: não pôde escrever no arquivo \"%s\": %s\n" + +#: pg_basebackup.c:432 +#, c-format +msgid "%s: could not close compressed file \"%s\": %s\n" +msgstr "%s: não pôde fechar arquivo comprimido \"%s\": %s\n" + +#: pg_basebackup.c:444 +#, c-format +msgid "%s: could not close file \"%s\": %s\n" +msgstr "%s: não pôde fechar arquivo \"%s\": %s\n" + +#: pg_basebackup.c:455 pg_basebackup.c:562 +#, c-format +msgid "%s: could not read COPY data: %s" +msgstr "%s: não pôde ler dados do COPY: %s" + +#: pg_basebackup.c:515 +#, c-format +msgid "%s: received invalid directory (too long): %s\n" +msgstr "%s: diretório recebido é inválido (muito longo): %s\n" + +#: pg_basebackup.c:576 +#, c-format +msgid "%s: invalid tar block header size: %i\n" +msgstr "%s: tamanho do cabeçalho do bloco tar é inválido: %i\n" + +#: pg_basebackup.c:584 +#, c-format +msgid "%s: could not parse file size\n" +msgstr "%s: não pôde obter tamanho do arquivo\n" + +#: pg_basebackup.c:592 +#, c-format +msgid "%s: could not parse file mode\n" +msgstr "%s: não pôde obter modo do arquivo\n" + +#: pg_basebackup.c:627 +#, c-format +msgid "%s: could not set permissions on directory \"%s\": %s\n" +msgstr "%s: não pôde definir permissões no diretório \"%s\": %s\n" + +#: pg_basebackup.c:640 +#, c-format +msgid "%s: could not create symbolic link from \"%s\" to \"%s\": %s\n" +msgstr "%s: não pôde criar link simbólico de \"%s\" para \"%s\": %s\n" + +#: pg_basebackup.c:647 +#, c-format +msgid "%s: unrecognized link indicator \"%c\"\n" +msgstr "%s: indicador de link \"%c\" desconhecido\n" + +#: pg_basebackup.c:667 +#, c-format +msgid "%s: could not set permissions on file \"%s\": %s\n" +msgstr "%s: não pôde definir permissões no arquivo \"%s\": %s\n" + +#: pg_basebackup.c:725 +#, c-format +msgid "%s: COPY stream ended before last file was finished\n" +msgstr "" +"%s: fluxo do COPY terminou antes que o último arquivo estivesse completo\n" + +#: pg_basebackup.c:786 +msgid "Password: " +msgstr "Senha: " + +#: pg_basebackup.c:806 +#, c-format +msgid "%s: could not connect to server: %s" +msgstr "%s: não pôde se conectar ao servidor: %s" + +#: pg_basebackup.c:847 +#, c-format +msgid "%s: unsupported server version %s\n" +msgstr "%s: versão do servidor %s não é suportada\n" + +#: pg_basebackup.c:865 +#, c-format +msgid "%s: could not send base backup command: %s" +msgstr "%s: não pôde enviar comando de cópia de segurança base: %s" + +#: pg_basebackup.c:876 +#, c-format +msgid "%s: could not initiate base backup: %s" +msgstr "%s: não pôde inicializar cópia de segurança base: %s" + +#: pg_basebackup.c:882 +#, c-format +msgid "%s: no start point returned from server\n" +msgstr "%s: nenhum ponto de início foi retornado do servidor\n" + +#: pg_basebackup.c:896 +#, c-format +msgid "%s: could not get backup header: %s" +msgstr "%s: não pôde obter cabeçalho da cópia de segurança: %s" + +#: pg_basebackup.c:902 +#, c-format +msgid "%s: no data returned from server\n" +msgstr "%s: nenhum dado foi retornado do servidor\n" + +#: pg_basebackup.c:930 +#, c-format +msgid "%s: can only write single tablespace to stdout, database has %i\n" +msgstr "" +"%s: só pode escrever uma tablespace para saída padrão, banco de dados tem " +"%i\n" + +#: pg_basebackup.c:959 +#, c-format +msgid "%s: could not get WAL end position from server: %s" +msgstr "%s: não pôde obter posição final do WAL do servidor: %s" + +#: pg_basebackup.c:965 +#, c-format +msgid "%s: no WAL end position returned from server\n" +msgstr "%s: nenhuma posição final do WAL foi retornada do servidor\n" + +#: pg_basebackup.c:976 +#, c-format +msgid "%s: final receive failed: %s" +msgstr "%s: recepção final falhou: %s" + +#: pg_basebackup.c:1050 +#, c-format +msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" +msgstr "" +"%s: formato de saída \"%s\" é inválido, deve ser \"plain\" ou \"tar\"\n" + +#: pg_basebackup.c:1072 +#, c-format +msgid "%s: invalid compression level \"%s\"\n" +msgstr "%s: nível de compressão \"%s\" é inválido\n" + +#: pg_basebackup.c:1084 +#, c-format +msgid "" +"%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" +msgstr "" +"%s: argumento de ponto de controle \"%s\" é inválido, deve ser \"fast\" ou " +"\"spread\"\n" + +#: pg_basebackup.c:1115 pg_basebackup.c:1129 pg_basebackup.c:1140 +#: pg_basebackup.c:1153 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Tente \"%s --help\" para obter informações adicionais.\n" + +#: pg_basebackup.c:1127 +#, c-format +msgid "%s: too many command-line arguments (first is \"%s\")\n" +msgstr "%s: muitos argumentos de linha de comando (primeiro é \"%s\")\n" + +#: pg_basebackup.c:1139 +#, c-format +msgid "%s: no target directory specified\n" +msgstr "%s: nenhum diretório de destino foi especificado\n" + +#: pg_basebackup.c:1151 +#, c-format +msgid "%s: only tar mode backups can be compressed\n" +msgstr "%s: somente cópias de segurança com modo tar podem ser comprimidas\n" + +#: pg_basebackup.c:1162 +#, c-format +msgid "%s: this build does not support compression\n" +msgstr "%s: esse programa binário não suporta compressão\n" diff --git a/src/bin/pg_basebackup/po/ro.po b/src/bin/pg_basebackup/po/ro.po new file mode 100644 index 0000000000..8dc85552b9 --- /dev/null +++ b/src/bin/pg_basebackup/po/ro.po @@ -0,0 +1,386 @@ +# LANGUAGE message translation file for pg_basebackup +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# FIRST AUTHOR , 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 9.1\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-12-02 04:41+0000\n" +"PO-Revision-Date: 2011-12-12 11:42-0000\n" +"Last-Translator: Gheorge Rosca Codreanu \n" +"Language-Team: ROMANA \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2;\n" +"X-Poedit-Language: Romanian\n" +"X-Poedit-Country: ROMANIA\n" + +#: pg_basebackup.c:96 +#: pg_basebackup.c:110 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: memorie insuficientă\n" + +#: pg_basebackup.c:121 +#, c-format +msgid "" +"%s takes a base backup of a running PostgreSQL server.\n" +"\n" +msgstr "" +"%s face o copie de rezervă a bazei unui server PostgreSQL care rulează.\n" +"\n" + +#: pg_basebackup.c:123 +#, c-format +msgid "Usage:\n" +msgstr "Utilizare:\n" + +#: pg_basebackup.c:124 +#, c-format +msgid " %s [OPTION]...\n" +msgstr " %s [OPŢIUNE]...\n" + +#: pg_basebackup.c:125 +#, c-format +msgid "" +"\n" +"Options controlling the output:\n" +msgstr "" +"\n" +"Opţiuni care controlează ieşirile:\n" + +#: pg_basebackup.c:126 +#, c-format +msgid " -D, --pgdata=DIRECTORY receive base backup into directory\n" +msgstr " -D, --pgdata=DIRECTOR salvează copia de rezervă a bazei in directorul\n" + +#: pg_basebackup.c:127 +#, c-format +msgid " -F, --format=p|t output format (plain, tar)\n" +msgstr " -F, --format=p|t formatul fişierului (p - text, t - arhivă de tip tar)\n" + +#: pg_basebackup.c:128 +#, c-format +msgid " -x, --xlog include required WAL files in backup\n" +msgstr " -x, --xlog include fişierele WAL necesare în copia de rezervă\n" + +#: pg_basebackup.c:129 +#, c-format +msgid " -z, --gzip compress tar output\n" +msgstr " -z, --gzip comprimă în format tar\n" + +#: pg_basebackup.c:130 +#, c-format +msgid " -Z, --compress=0-9 compress tar output with given compression level\n" +msgstr " -Z, --compress=0-9 comprimă în format tar cu specificarea nivelului de comprimare de la 0 la 9\n" + +#: pg_basebackup.c:131 +#, c-format +msgid "" +"\n" +"General options:\n" +msgstr "" +"\n" +"Opţiuni generale:\n" + +#: pg_basebackup.c:132 +#, c-format +msgid "" +" -c, --checkpoint=fast|spread\n" +" set fast or spread checkpointing\n" +msgstr "" +" -c, --checkpoint=fast|spread\n" +" stabileşte tipul de checkpoint fast(rapid) sau spread(distribuit)\n" + +#: pg_basebackup.c:134 +#, c-format +msgid " -l, --label=LABEL set backup label\n" +msgstr " -l, --label=ETICHETĂ stabileşte eticheta copiei de rezervă\n" + +#: pg_basebackup.c:135 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress arată informaţii despre progres\n" + +#: pg_basebackup.c:136 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose afişează mesaje\n" + +#: pg_basebackup.c:137 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help afişează acest ajutor, apoi iese\n" + +#: pg_basebackup.c:138 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version afişează informaţiile despre versiune, apoi iese\n" + +#: pg_basebackup.c:139 +#, c-format +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Opţiuni de conectare:\n" + +#: pg_basebackup.c:140 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory\n" +msgstr " -h, --host=NUMEGAZDĂ gazda serverului de baze de date sau directorul soclului\n" + +#: pg_basebackup.c:141 +#, c-format +msgid " -p, --port=PORT database server port number\n" +msgstr " -p, --port=PORT numărul portului serverului de baze de date\n" + +#: pg_basebackup.c:142 +#, c-format +msgid " -U, --username=NAME connect as specified database user\n" +msgstr " -U, --username=NUME conectare ca utilizatorul de baze de date specificat\n" + +#: pg_basebackup.c:143 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password nu cere parolă\n" + +#: pg_basebackup.c:144 +#, c-format +msgid " -W, --password force password prompt (should happen automatically)\n" +msgstr " -W, --password forţează solicitarea parolei (în mod normal, se face automat)\n" + +#: pg_basebackup.c:145 +#, c-format +msgid "" +"\n" +"Report bugs to .\n" +msgstr "" +"\n" +"Raportaţi erorile la .\n" + +#: pg_basebackup.c:167 +#: pg_basebackup.c:604 +#, c-format +msgid "%s: could not create directory \"%s\": %s\n" +msgstr "%s: imposibil de creat directorul \"%s\": %s\n" + +#: pg_basebackup.c:184 +#, c-format +msgid "%s: directory \"%s\" exists but is not empty\n" +msgstr "%s: directorul \"%s\" există dar nu este gol\n" + +#: pg_basebackup.c:192 +#, c-format +msgid "%s: could not access directory \"%s\": %s\n" +msgstr "%s: imposibil de accesat directorul \"%s\": %s\n" + +#: pg_basebackup.c:239 +#, c-format +msgid "%s/%s kB (100%%), %d/%d tablespace %35s" +msgid_plural "%s/%s kB (100%%), %d/%d tablespaces %35s" +msgstr[0] "%s/%s kB (100%%), %d/%d spaţiutabelă %35s" +msgstr[1] "%s/%s kB (100%%), %d/%d spaţiutabele %35s" +msgstr[2] "%s/%s kB (100%%), %d/%d spaţiutabele %35s" + +#: pg_basebackup.c:245 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace (%-30.30s)" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces (%-30.30s)" +msgstr[0] "%s/%s kB (%d%%), %d/%d spaţiutabelă (tablespace) (%-30.30s)" +msgstr[1] "%s/%s kB (%d%%), %d/%d spaţiutabele (tablespaces) (%-30.30s)" +msgstr[2] "%s/%s kB (%d%%), %d/%d spaţiutabele (tablespaces) (%-30.30s)" + +#: pg_basebackup.c:252 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces" +msgstr[0] "%s/%s kB (%d%%), %d/%d spaţiutabelă (tablespace)" +msgstr[1] "%s/%s kB (%d%%), %d/%d spaţiutabele (tablespaces)" +msgstr[2] "%s/%s kB (%d%%), %d/%d spaţiutabele (tablespaces)" + +#: pg_basebackup.c:295 +#: pg_basebackup.c:313 +#: pg_basebackup.c:337 +#, c-format +msgid "%s: could not set compression level %i: %s\n" +msgstr "%s: nu pot stabili nivelul de compresie %i: %s\n" + +#: pg_basebackup.c:356 +#, c-format +msgid "%s: could not create compressed file \"%s\": %s\n" +msgstr "%s: nu pot crea fişierul comprimat \"%s\": %s\n" + +#: pg_basebackup.c:367 +#: pg_basebackup.c:643 +#, c-format +msgid "%s: could not create file \"%s\": %s\n" +msgstr "%s: nu pot crea fişierul \"%s\": %s\n" + +#: pg_basebackup.c:379 +#: pg_basebackup.c:516 +#, c-format +msgid "%s: could not get COPY data stream: %s" +msgstr "%s: nu pot obţine COPY flux date: %s" + +#: pg_basebackup.c:411 +#: pg_basebackup.c:457 +#, c-format +msgid "%s: could not write to compressed file \"%s\": %s\n" +msgstr "%s: nu pot scrie în fişierul comprimat \"%s\": %s\n" + +#: pg_basebackup.c:420 +#: pg_basebackup.c:466 +#: pg_basebackup.c:683 +#, c-format +msgid "%s: could not write to file \"%s\": %s\n" +msgstr "%s: nu pot scrie în fişierul \"%s\": %s\n" + +#: pg_basebackup.c:447 +#: pg_basebackup.c:545 +#, c-format +msgid "%s: could not read COPY data: %s" +msgstr "%s: nu pot citi COPY date: %s" + +#: pg_basebackup.c:559 +#, c-format +msgid "%s: invalid tar block header size: %i\n" +msgstr "%s: invalid tar block header size: %i\n" + +#: pg_basebackup.c:567 +#, c-format +msgid "%s: could not parse file size\n" +msgstr "%s: nu pot analiza dimensiunea fişierului\n" + +#: pg_basebackup.c:575 +#, c-format +msgid "%s: could not parse file mode\n" +msgstr "%s: nu pot analiza modul fişierului\n" + +#: pg_basebackup.c:610 +#, c-format +msgid "%s: could not set permissions on directory \"%s\": %s\n" +msgstr "%s: nu pot stabili drepturile de access pentru directorul \"%s\": %s\n" + +#: pg_basebackup.c:623 +#, c-format +msgid "%s: could not create symbolic link from \"%s\" to \"%s\": %s\n" +msgstr "%s: nu pot crea legătura simbolică de la \"%s\" la \"%s\": %s\n" + +#: pg_basebackup.c:630 +#, c-format +msgid "%s: unrecognized link indicator \"%c\"\n" +msgstr "%s: indicator al legaturii necunoscut \"%c\"\n" + +#: pg_basebackup.c:650 +#, c-format +msgid "%s: could not set permissions on file \"%s\": %s\n" +msgstr "%s: nu pot stabili drepturile de access pentru fişierul \"%s\": %s\n" + +#: pg_basebackup.c:708 +#, c-format +msgid "%s: COPY stream ended before last file was finished\n" +msgstr "%s: fluxul COPY s-a întrerupt înainte de terminarea ultimul fişier\n" + +#: pg_basebackup.c:769 +msgid "Password: " +msgstr "Parolă: " + +#: pg_basebackup.c:789 +#, c-format +msgid "%s: could not connect to server: %s" +msgstr "%s: nu pot realiza conexiunea la server: %s" + +#: pg_basebackup.c:829 +#, c-format +msgid "%s: could not send base backup command: %s" +msgstr "%s: nu pot trimite comanda de realizarea copiei de rezervă: %s" + +#: pg_basebackup.c:840 +#, c-format +msgid "%s: could not initiate base backup: %s" +msgstr "%s: nu pot iniţia copia de rezervă a bazei: %s" + +#: pg_basebackup.c:846 +#, c-format +msgid "%s: no start point returned from server\n" +msgstr "%s: serverul nu a returnat nici un punct de start\n" + +#: pg_basebackup.c:862 +#, c-format +msgid "%s: could not get backup header: %s" +msgstr "%s: nu pot obţine începutul de fişier al copiei de rezervă (backup header): %s" + +#: pg_basebackup.c:868 +#, c-format +msgid "%s: no data returned from server\n" +msgstr "%s: serverul nu a returnat date\n" + +#: pg_basebackup.c:896 +#, c-format +msgid "%s: can only write single tablespace to stdout, database has %i\n" +msgstr "%s: pot scrie doar un singur spaţiu tabelă (tablespace) la ieşirea standard (stdout), baza de date are %i\n" + +#: pg_basebackup.c:925 +#, c-format +msgid "%s: could not get WAL end position from server\n" +msgstr "%s: nu pot obţine de la server poziţia de sfârşit pentru WAL\n" + +#: pg_basebackup.c:931 +#, c-format +msgid "%s: no WAL end position returned from server\n" +msgstr "%s: serverul nu a returnat poziţia de sfârşit pentru WAL\n" + +#: pg_basebackup.c:943 +#, c-format +msgid "%s: final receive failed: %s" +msgstr "%s: recepţia finală a eşuat: %s" + +#: pg_basebackup.c:1017 +#, c-format +msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" +msgstr "%s: format de ieşire invalid \"%s\", trebuie să fiel \"plain\" sau \"tar\"\n" + +#: pg_basebackup.c:1039 +#, c-format +msgid "%s: invalid compression level \"%s\"\n" +msgstr "%s: nivel de compresie invalid \"%s\"\n" + +#: pg_basebackup.c:1051 +#, c-format +msgid "%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" +msgstr "%s: argument checkpoint invalid \"%s\", trebuie să fie \"fast\" sau \"spread\"\n" + +#: pg_basebackup.c:1082 +#: pg_basebackup.c:1096 +#: pg_basebackup.c:1107 +#: pg_basebackup.c:1120 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Încercaţi \"%s --help\" pentru mai multe informaţii.\n" + +#: pg_basebackup.c:1094 +#, c-format +msgid "%s: too many command-line arguments (first is \"%s\")\n" +msgstr "%s: prea multe argumente în linia de comandă (primul este \"%s\")\n" + +#: pg_basebackup.c:1106 +#, c-format +msgid "%s: no target directory specified\n" +msgstr "%s: directorul destinaţie nu este specificat\n" + +#: pg_basebackup.c:1118 +#, c-format +msgid "%s: only tar mode backups can be compressed\n" +msgstr "%s: numai copiile de rezervă de tip tar pot fi comprimate\n" + +#: pg_basebackup.c:1129 +#, c-format +msgid "%s: this build does not support compression\n" +msgstr "%s: această versiune de program nu suportă compresie\n" + diff --git a/src/bin/pg_basebackup/po/ru.po b/src/bin/pg_basebackup/po/ru.po new file mode 100644 index 0000000000..ec5793098a --- /dev/null +++ b/src/bin/pg_basebackup/po/ru.po @@ -0,0 +1,409 @@ +# Russian message translation file for pg_basebackup +# Copyright (C) 2012 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# Alexander Lakhin , 2012. +# +# ChangeLog: +# - April 2, 2012: Bug fixes. Alexander Lakhin . +# - February 17, 2012: Complete translation for 9.1, Alexander Lakhin . +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 9.1\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2013-08-03 17:45+0000\n" +"PO-Revision-Date: 2013-08-10 06:47+0400\n" +"Last-Translator: Alexander Lakhin \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 1.5\n" + +#: pg_basebackup.c:96 pg_basebackup.c:110 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: нехватка памяти\n" + +#: pg_basebackup.c:121 +#, c-format +msgid "" +"%s takes a base backup of a running PostgreSQL server.\n" +"\n" +msgstr "" +"%s делает базовую резервную копию работающего сервера PostgreSQL.\n" +"\n" + +#: pg_basebackup.c:123 +#, c-format +msgid "Usage:\n" +msgstr "Использование:\n" + +#: pg_basebackup.c:124 +#, c-format +msgid " %s [OPTION]...\n" +msgstr " %s [ПАРАМЕТР]...\n" + +#: pg_basebackup.c:125 +#, c-format +msgid "" +"\n" +"Options controlling the output:\n" +msgstr "" +"\n" +"Параметры, управляющие выводом:\n" + +#: pg_basebackup.c:126 +#, c-format +msgid " -D, --pgdata=DIRECTORY receive base backup into directory\n" +msgstr "" +" -D, --pgdata=КАТАЛОГ сохранить базовую копию в указанный каталог\n" + +#: pg_basebackup.c:127 +#, c-format +msgid " -F, --format=p|t output format (plain, tar)\n" +msgstr " -F, --format=p|t формат вывода (p - простой, t - tar)\n" + +#: pg_basebackup.c:128 +#, c-format +msgid " -x, --xlog include required WAL files in backup\n" +msgstr " -x, --xlog включить в копию требуемые файлы WAL\n" + +#: pg_basebackup.c:129 +#, c-format +msgid " -z, --gzip compress tar output\n" +msgstr " -z, --gzip сжать выходной tar\n" + +#: pg_basebackup.c:130 +#, c-format +msgid "" +" -Z, --compress=0-9 compress tar output with given compression level\n" +msgstr "" +" -Z, --compress=0-9 установить уровень сжатия выходного архива\n" + +#: pg_basebackup.c:131 +#, c-format +msgid "" +"\n" +"General options:\n" +msgstr "" +"\n" +"Общие параметры:\n" + +#: pg_basebackup.c:132 +#, c-format +msgid "" +" -c, --checkpoint=fast|spread\n" +" set fast or spread checkpointing\n" +msgstr "" +" -c, --checkpoint=fast|spread\n" +" режим быстрых или распределённых контрольных " +"точек\n" + +#: pg_basebackup.c:134 +#, c-format +msgid " -l, --label=LABEL set backup label\n" +msgstr " -l, --label=МЕТКА установить метку резервной копии\n" + +#: pg_basebackup.c:135 +#, c-format +msgid " -P, --progress show progress information\n" +msgstr " -P, --progress показывать прогресс операции\n" + +#: pg_basebackup.c:136 +#, c-format +msgid " -v, --verbose output verbose messages\n" +msgstr " -v, --verbose выводить подробные сообщения\n" + +#: pg_basebackup.c:137 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help показать эту справку и выйти\n" + +#: pg_basebackup.c:138 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version показать версию и выйти\n" + +#: pg_basebackup.c:139 +#, c-format +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Параметры подключения:\n" + +#: pg_basebackup.c:140 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory\n" +msgstr "" +" -h, --host=ИМЯ имя сервера баз данных или каталог сокетов\n" + +#: pg_basebackup.c:141 +#, c-format +msgid " -p, --port=PORT database server port number\n" +msgstr " -p, --port=ПОРТ номер порта сервера БД\n" + +#: pg_basebackup.c:142 +#, c-format +msgid " -U, --username=NAME connect as specified database user\n" +msgstr " -U, --username=ИМЯ имя пользователя баз данных\n" + +#: pg_basebackup.c:143 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password не запрашивать пароль\n" + +#: pg_basebackup.c:144 +#, c-format +msgid "" +" -W, --password force password prompt (should happen " +"automatically)\n" +msgstr "" +" -W, --password запрашивать пароль всегда (обычно не требуется)\n" + +#: pg_basebackup.c:145 +#, c-format +msgid "" +"\n" +"Report bugs to .\n" +msgstr "" +"\n" +"Об ошибках сообщайте по адресу .\n" + +#: pg_basebackup.c:167 pg_basebackup.c:621 +#, c-format +msgid "%s: could not create directory \"%s\": %s\n" +msgstr "%s: не удалось создать каталог \"%s\": %s\n" + +#: pg_basebackup.c:184 +#, c-format +msgid "%s: directory \"%s\" exists but is not empty\n" +msgstr "%s: каталог \"%s\" существует, но он не пуст\n" + +#: pg_basebackup.c:192 +#, c-format +msgid "%s: could not access directory \"%s\": %s\n" +msgstr "%s: нет доступа к каталогу \"%s\": %s\n" + +#: pg_basebackup.c:239 +#, c-format +msgid "%s/%s kB (100%%), %d/%d tablespace %35s" +msgid_plural "%s/%s kB (100%%), %d/%d tablespaces %35s" +msgstr[0] "%s/%s КБ (100%%), табличное пространство %d/%d %35s" +msgstr[1] "%s/%s КБ (100%%), табличное пространство %d/%d %35s" +msgstr[2] "%s/%s КБ (100%%), табличное пространство %d/%d %35s" + +#: pg_basebackup.c:245 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace (%-30.30s)" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces (%-30.30s)" +msgstr[0] "%s/%s КБ (%d%%), табличное пространство %d/%d (%-30.30s)" +msgstr[1] "%s/%s КБ (%d%%), табличное пространство %d/%d (%-30.30s)" +msgstr[2] "%s/%s КБ (%d%%), табличное пространство %d/%d (%-30.30s)" + +#: pg_basebackup.c:252 +#, c-format +msgid "%s/%s kB (%d%%), %d/%d tablespace" +msgid_plural "%s/%s kB (%d%%), %d/%d tablespaces" +msgstr[0] "%s/%s КБ (%d%%), табличное пространство %d/%d" +msgstr[1] "%s/%s КБ (%d%%), табличное пространство %d/%d" +msgstr[2] "%s/%s КБ (%d%%), табличное пространство %d/%d" + +#: pg_basebackup.c:295 pg_basebackup.c:313 pg_basebackup.c:337 +#, c-format +msgid "%s: could not set compression level %i: %s\n" +msgstr "%s: не удалось установить уровень сжатия %i: %s\n" + +#: pg_basebackup.c:356 +#, c-format +msgid "%s: could not create compressed file \"%s\": %s\n" +msgstr "%s: не удалось создать файл сжатого архива \"%s\": %s\n" + +#: pg_basebackup.c:367 pg_basebackup.c:660 +#, c-format +msgid "%s: could not create file \"%s\": %s\n" +msgstr "%s: не удалось создать файл \"%s\": %s\n" + +#: pg_basebackup.c:379 pg_basebackup.c:533 +#, c-format +msgid "%s: could not get COPY data stream: %s" +msgstr "%s: не удалось получить поток данных COPY: %s" + +#: pg_basebackup.c:411 pg_basebackup.c:465 +#, c-format +msgid "%s: could not write to compressed file \"%s\": %s\n" +msgstr "%s: не удалось записать файл сжатого архива \"%s\": %s\n" + +#: pg_basebackup.c:421 pg_basebackup.c:475 pg_basebackup.c:700 +#, c-format +msgid "%s: could not write to file \"%s\": %s\n" +msgstr "%s: не удалось записать файл \"%s\": %s\n" + +#: pg_basebackup.c:432 +#, c-format +msgid "%s: could not close compressed file \"%s\": %s\n" +msgstr "%s: не удалось закрыть сжатый файл \"%s\": %s\n" + +#: pg_basebackup.c:444 +#, c-format +msgid "%s: could not close file \"%s\": %s\n" +msgstr "%s: не удалось закрыть файл \"%s\": %s\n" + +#: pg_basebackup.c:455 pg_basebackup.c:562 +#, c-format +msgid "%s: could not read COPY data: %s" +msgstr "%s: не удалось прочитать данные COPY: %s" + +#: pg_basebackup.c:515 +#, c-format +msgid "%s: received invalid directory (too long): %s" +msgstr "%s: получен недопустимый каталог (слишком длинное имя): %s" + +#: pg_basebackup.c:576 +#, c-format +msgid "%s: invalid tar block header size: %i\n" +msgstr "%s: неверный размер заголовка блока tar: %i\n" + +#: pg_basebackup.c:584 +#, c-format +msgid "%s: could not parse file size\n" +msgstr "%s: не удалось разобрать размер файла\n" + +#: pg_basebackup.c:592 +#, c-format +msgid "%s: could not parse file mode\n" +msgstr "%s: не удалось разобрать режим файла\n" + +#: pg_basebackup.c:627 +#, c-format +msgid "%s: could not set permissions on directory \"%s\": %s\n" +msgstr "%s: не удалось установить права для каталога \"%s\": %s\n" + +#: pg_basebackup.c:640 +#, c-format +msgid "%s: could not create symbolic link from \"%s\" to \"%s\": %s\n" +msgstr "%s: не удалось создать символическую ссылку \"%s\" в \"%s\": %s\n" + +#: pg_basebackup.c:647 +#, c-format +msgid "%s: unrecognized link indicator \"%c\"\n" +msgstr "%s: нераспознанный индикатор связи \"%c\"\n" + +#: pg_basebackup.c:667 +#, c-format +msgid "%s: could not set permissions on file \"%s\": %s\n" +msgstr "%s: не удалось установить права доступа для файла \"%s\": %s\n" + +#: pg_basebackup.c:725 +#, c-format +msgid "%s: COPY stream ended before last file was finished\n" +msgstr "%s: поток COPY закончился до завершения последнего файла\n" + +#: pg_basebackup.c:786 +msgid "Password: " +msgstr "Пароль: " + +#: pg_basebackup.c:806 +#, c-format +msgid "%s: could not connect to server: %s" +msgstr "%s: не удалось подключиться к серверу: %s" + +#: pg_basebackup.c:847 +#, c-format +msgid "%s: unsupported server version %s\n" +msgstr "%s: неподдерживаемая версия сервера (%s)\n" + +#: pg_basebackup.c:865 +#, c-format +msgid "%s: could not send base backup command: %s" +msgstr "%s: не удалось отправить команду базового резервного копирования: %s" + +#: pg_basebackup.c:876 +#, c-format +msgid "%s: could not initiate base backup: %s" +msgstr "%s: не удалось инициализировать базовое резервное копирование: %s" + +#: pg_basebackup.c:882 +#, c-format +msgid "%s: no start point returned from server\n" +msgstr "%s: сервер не вернул стартовую точку\n" + +#: pg_basebackup.c:896 +#, c-format +msgid "%s: could not get backup header: %s" +msgstr "%s: не удалось получить заголовок резервной копии: %s" + +#: pg_basebackup.c:902 +#, c-format +msgid "%s: no data returned from server\n" +msgstr "%s: сервер не вернул данные\n" + +#: pg_basebackup.c:930 +#, c-format +msgid "%s: can only write single tablespace to stdout, database has %i\n" +msgstr "" +"%s: в stdout можно вывести только одно табличное пространство, всего в СУБД " +"их %i\n" + +#: pg_basebackup.c:959 +#, c-format +msgid "%s: could not get WAL end position from server: %s" +msgstr "%s: не удалось получить конечную позицию в WAL с сервера: %s" + +#: pg_basebackup.c:965 +#, c-format +msgid "%s: no WAL end position returned from server\n" +msgstr "%s: сервер не вернул конечную позицию в WAL\n" + +#: pg_basebackup.c:976 +#, c-format +msgid "%s: final receive failed: %s" +msgstr "%s: ошибка в конце передачи: %s" + +#: pg_basebackup.c:1050 +#, c-format +msgid "%s: invalid output format \"%s\", must be \"plain\" or \"tar\"\n" +msgstr "%s: неверный формат вывода \"%s\", должен быть \"plain\" или \"tar\"\n" + +#: pg_basebackup.c:1072 +#, c-format +msgid "%s: invalid compression level \"%s\"\n" +msgstr "%s: неверный уровень сжатия \"%s\"\n" + +#: pg_basebackup.c:1084 +#, c-format +msgid "" +"%s: invalid checkpoint argument \"%s\", must be \"fast\" or \"spread\"\n" +msgstr "" +"%s: неверный аргумент режима контрольных точек \"%s\", должен быть \"fast\" " +"или \"spread\"\n" + +#: pg_basebackup.c:1115 pg_basebackup.c:1129 pg_basebackup.c:1140 +#: pg_basebackup.c:1153 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Для дополнительной информации попробуйте \"%s --help\".\n" + +#: pg_basebackup.c:1127 +#, c-format +msgid "%s: too many command-line arguments (first is \"%s\")\n" +msgstr "%s: слишком много аргументов командной строки (первый: \"%s\")\n" + +#: pg_basebackup.c:1139 +#, c-format +msgid "%s: no target directory specified\n" +msgstr "%s: целевой каталог не указан\n" + +#: pg_basebackup.c:1151 +#, c-format +msgid "%s: only tar mode backups can be compressed\n" +msgstr "%s: сжимать можно только резервные копии в архиве tar\n" + +#: pg_basebackup.c:1162 +#, c-format +msgid "%s: this build does not support compression\n" +msgstr "%s: эта сборка программы не поддерживает сжатие\n" diff --git a/src/bin/pg_config/nls.mk b/src/bin/pg_config/nls.mk index 609c57f93e..ea5586f3fa 100644 --- a/src/bin/pg_config/nls.mk +++ b/src/bin/pg_config/nls.mk @@ -1,5 +1,5 @@ # src/bin/pg_config/nls.mk CATALOG_NAME := pg_config -AVAIL_LANGUAGES := de es fr it ja ko nb pt_BR ro ru sv ta tr zh_CN zh_TW +AVAIL_LANGUAGES := cs de es fr it ja ko nb pl pt_BR ro ru sv ta tr zh_CN zh_TW GETTEXT_FILES := pg_config.c ../../port/exec.c GETTEXT_TRIGGERS:= _ diff --git a/src/bin/pg_config/po/cs.po b/src/bin/pg_config/po/cs.po new file mode 100644 index 0000000000..b7a88b6928 --- /dev/null +++ b/src/bin/pg_config/po/cs.po @@ -0,0 +1,321 @@ +# Czech translation of pg_config +# +# Karel Zak , 2004, 2011. +# Tomáš Vondra , 2011, 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: pg_config-cs (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-08-30 11:34+0200\n" +"PO-Revision-Date: 2011-08-30 13:37+0200\n" +"Last-Translator: Tomas Vondra \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: pg_config.c:243 pg_config.c:259 pg_config.c:275 pg_config.c:291 +#: pg_config.c:307 pg_config.c:323 pg_config.c:339 pg_config.c:355 +#: pg_config.c:371 +#, c-format +msgid "not recorded\n" +msgstr "nezaznamenáno\n" + +#: pg_config.c:428 +#, c-format +msgid "" +"\n" +"%s provides information about the installed version of PostgreSQL.\n" +"\n" +msgstr "" +"\n" +"%s poskytuje informace o nainstalované verzi PostgreSQL.\n" +"\n" + +#: pg_config.c:429 +#, c-format +msgid "Usage:\n" +msgstr "Použití:\n" + +#: pg_config.c:430 +#, c-format +msgid "" +" %s [OPTION]...\n" +"\n" +msgstr " %s [PŘEPÍNAČ]...\n" + +#: pg_config.c:431 +#, c-format +msgid "Options:\n" +msgstr "Přepínače:\n" + +#: pg_config.c:432 +#, c-format +msgid " --bindir show location of user executables\n" +msgstr " --bindir ukáže umístění spustitelných souborů\n" + +#: pg_config.c:433 +#, c-format +msgid " --docdir show location of documentation files\n" +msgstr " --docdir ukáže umístění souborů s dokumentací\n" + +#: pg_config.c:434 +#, c-format +msgid " --htmldir show location of HTML documentation files\n" +msgstr " --htmldir ukáže umístění souborl s HTML dokumentací\n" + +#: pg_config.c:435 +#, c-format +msgid "" +" --includedir show location of C header files of the client\n" +" interfaces\n" +msgstr "" +" --includedir ukáže umístění C hlavičkových souborů klientských\n" +" rozhraní\n" + +#: pg_config.c:437 +#, c-format +msgid " --pkgincludedir show location of other C header files\n" +msgstr "" +" --pkgincludedir ukáže umístění dalších C hlavičkových souborů\n" + +#: pg_config.c:438 +#, c-format +msgid "" +" --includedir-server show location of C header files for the server\n" +msgstr "" +" --includedir-server ukáže umístění C hlavičkových souborů pro server\n" + +#: pg_config.c:439 +#, c-format +msgid " --libdir show location of object code libraries\n" +msgstr " --libdir ukáže umístění knihoven\n" + +#: pg_config.c:440 +#, c-format +msgid " --pkglibdir show location of dynamically loadable modules\n" +msgstr " --pkglibdir ukáže umístění dynamicky zaváděných modulů\n" + +#: pg_config.c:441 +#, c-format +msgid " --localedir show location of locale support files\n" +msgstr " --localedir ukáže umístění souborů pro podporu locale\n" + +#: pg_config.c:442 +#, c-format +msgid " --mandir show location of manual pages\n" +msgstr "" +" --mandir ukáže umístění souborů s manuálovými stránkami\n" + +#: pg_config.c:443 +#, c-format +msgid "" +" --sharedir show location of architecture-independent support " +"files\n" +msgstr "" +" --sharedir ukáže umístění podpůrných souborů nezávislých na " +"architektuře\n" + +#: pg_config.c:444 +#, c-format +msgid "" +" --sysconfdir show location of system-wide configuration files\n" +msgstr "" +" --sysconfdir ukáže umístění konfiguračních souborů platných pro " +"celý systém\n" + +#: pg_config.c:445 +#, c-format +msgid " --pgxs show location of extension makefile\n" +msgstr "" +" --pgxs ukáže umístění makefile souboru pro rozšíření\n" + +#: pg_config.c:446 +#, c-format +msgid "" +" --configure show options given to \"configure\" script when\n" +" PostgreSQL was built\n" +msgstr "" +" --configure ukáže přepínače použité pro \"configure\" skript ke\n" +" kompilaci PostgreSQL\n" + +#: pg_config.c:448 +#, c-format +msgid " --cc show CC value used when PostgreSQL was built\n" +msgstr "" +" --cc ukáže hodnotu CC použitou při buildu PostgreSQL\n" + +#: pg_config.c:449 +#, c-format +msgid "" +" --cppflags show CPPFLAGS value used when PostgreSQL was built\n" +msgstr "" +" --cppflags ukáže hodnotu CPPFLAGS použitou při buildu " +"PostgreSQL\n" + +#: pg_config.c:450 +#, c-format +msgid "" +" --cflags show CFLAGS value used when PostgreSQL was built\n" +msgstr "" +" --cflags ukáže hodnotu CFLAGS použitou při buildu PostgreSQL\n" + +#: pg_config.c:451 +#, c-format +msgid "" +" --cflags_sl show CFLAGS_SL value used when PostgreSQL was built\n" +msgstr "" +" --cflags_sl ukáže hodnotu CFLAGS_SL použitou při buildu " +"PostgreSQL\n" + +#: pg_config.c:452 +#, c-format +msgid "" +" --ldflags show LDFLAGS value used when PostgreSQL was built\n" +msgstr "" +" --ldflags ukáže hodnotu LDFLAGS použitou při buildu " +"PostgreSQL\n" + +#: pg_config.c:453 +#, c-format +msgid "" +" --ldflags_ex show LDFLAGS_EX value used when PostgreSQL was " +"built\n" +msgstr "" +" --ldflags_ex ukáže hodnotu LDFLAGS_EX použitou při buildu " +"PostgreSQL\n" + +#: pg_config.c:454 +#, c-format +msgid "" +" --ldflags_sl show LDFLAGS_SL value used when PostgreSQL was " +"built\n" +msgstr "" +" --ldflags_sl ukáže hodnotu LDFLAGS_SL použitou při buildu " +"PostgreSQL\n" + +#: pg_config.c:455 +#, c-format +msgid "" +" --libs show LIBS value used when PostgreSQL was built\n" +msgstr "" +" --libs ukáže hodnotu LIBS použitou při buildu PostgreSQL\n" + +#: pg_config.c:456 +#, c-format +msgid " --version show the PostgreSQL version\n" +msgstr " --version ukáže verzi PostgreSQL\n" + +#: pg_config.c:457 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help ukáže tuto nápovědu, a skončí\n" + +#: pg_config.c:458 +#, c-format +msgid "" +"\n" +"With no arguments, all known items are shown.\n" +"\n" +msgstr "" +"\n" +"Bez argumentů jsou vypsány všechny známé položky.\n" +"\n" + +#: pg_config.c:459 +#, c-format +msgid "Report bugs to .\n" +msgstr "Oznámení o chybách zasílejte na .\n" + +#: pg_config.c:465 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Pro více informací zkuste \"%s --help\".\n" + +#: pg_config.c:504 +#, c-format +msgid "%s: could not find own program executable\n" +msgstr "%s: nelze najít vlastní spustitelný soubor\n" + +#: pg_config.c:527 +#, c-format +msgid "%s: invalid argument: %s\n" +msgstr "%s: neplatný parametr: %s\n" + +#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 +#, c-format +msgid "could not identify current directory: %s" +msgstr "nelze získat aktuální adresář: %s" + +#: ../../port/exec.c:144 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "neplatný binární soubor\"%s\"" + +#: ../../port/exec.c:193 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "nelze číst binární soubor \"%s\"" + +#: ../../port/exec.c:200 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "nelze najít spustitelný soubor \"%s\"" + +#: ../../port/exec.c:255 ../../port/exec.c:291 +#, c-format +msgid "could not change directory to \"%s\"" +msgstr "nelze změnit adresář na \"%s\"" + +#: ../../port/exec.c:270 +#, c-format +msgid "could not read symbolic link \"%s\"" +msgstr "nelze číst symbolický link \"%s\"" + +#: ../../port/exec.c:517 +#, c-format +msgid "child process exited with exit code %d" +msgstr "potomek skončil s návratovým kódem %d" + +#: ../../port/exec.c:521 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "potomek byl ukončen výjimkou 0x%X" + +#: ../../port/exec.c:530 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "potomek byl ukončen signálem %s" + +#: ../../port/exec.c:533 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "potomek byl ukončen signálem %d" + +#: ../../port/exec.c:537 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "potomek skončil s nerozponaným stavem %d" + +#~ msgid "" +#~ " %s OPTION...\n" +#~ "\n" +#~ msgstr "" +#~ " %s PŘEPÍNAČ...\n" +#~ "\n" + +#~ msgid "" +#~ "\n" +#~ "Try \"%s --help\" for more information\n" +#~ msgstr "" +#~ "\n" +#~ "Zkuste \"%s --help\" pro více informací\n" + +#~ msgid "%s: argument required\n" +#~ msgstr "%s: vyžadován parametr\n" + +#~ msgid "%s: could not find own executable\n" +#~ msgstr "%s: nelze najít spustitelné\n" diff --git a/src/bin/pg_config/po/de.po b/src/bin/pg_config/po/de.po index 5d1729d7cb..62ae95ae37 100644 --- a/src/bin/pg_config/po/de.po +++ b/src/bin/pg_config/po/de.po @@ -1,8 +1,6 @@ # German message translation file for pg_config # Peter Eisentraut , 2004 - 2010. # -# pgtranslation Id: pg_config.po,v 1.13 2010/07/08 21:23:53 petere Exp $ -# # Use these quotes: »%s« # msgid "" @@ -13,6 +11,7 @@ msgstr "" "PO-Revision-Date: 2010-07-09 00:20+0300\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: Peter Eisentraut \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_config/po/es.po b/src/bin/pg_config/po/es.po index 5173aee521..e22908718d 100644 --- a/src/bin/pg_config/po/es.po +++ b/src/bin/pg_config/po/es.po @@ -1,22 +1,21 @@ # pg_config spanish translation # -# Copyright (C) 2004-2010 PostgreSQL Global Development Group +# Copyright (C) 2004-2012 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # -# Alvaro Herrera , 2004-2010 -# -# pgtranslation Id: pg_config.po,v 1.6 2010/08/31 04:57:53 alvherre Exp $ +# Alvaro Herrera , 2004-2012 # msgid "" msgstr "" "Project-Id-Version: pg_config (PostgreSQL 9.0)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-08-30 20:03+0000\n" -"PO-Revision-Date: 2010-08-31 00:57-0400\n" +"POT-Creation-Date: 2013-08-26 19:44+0000\n" +"PO-Revision-Date: 2012-02-21 22:53-0300\n" "Last-Translator: Alvaro Herrera \n" "Language-Team: es \n" +"Language: es\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: pg_config.c:243 pg_config.c:259 pg_config.c:275 pg_config.c:291 @@ -295,27 +294,27 @@ msgstr "no se pudo cambiar el directorio a «%s»" msgid "could not read symbolic link \"%s\"" msgstr "no se pudo leer el enlace simbólico «%s»" -#: ../../port/exec.c:516 +#: ../../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" msgstr "el proceso hijo terminó con código de salida %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "el proceso hijo fue terminado por una excepción 0x%X" -#: ../../port/exec.c:529 +#: ../../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "el proceso hijo fue terminado por una señal %s" -#: ../../port/exec.c:532 +#: ../../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "el proceso hijo fue terminado por una señal %d" -#: ../../port/exec.c:536 +#: ../../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "el proceso hijo terminó con código no reconocido %d" diff --git a/src/bin/pg_config/po/fr.po b/src/bin/pg_config/po/fr.po index feb4f9fbd3..8a30ac7db5 100644 --- a/src/bin/pg_config/po/fr.po +++ b/src/bin/pg_config/po/fr.po @@ -1,8 +1,6 @@ # translation of pg_config.po to fr_fr # french message translation file for pg_config # -# $PostgreSQL$ -# # Use these quotes: � %s � # # Guillaume Lelarge , 2004-2009. @@ -15,6 +13,7 @@ msgstr "" "PO-Revision-Date: 2010-07-11 10:59+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" diff --git a/src/bin/pg_config/po/it.po b/src/bin/pg_config/po/it.po index c973367173..e61485b3f3 100644 --- a/src/bin/pg_config/po/it.po +++ b/src/bin/pg_config/po/it.po @@ -6,8 +6,9 @@ # http://www.itpug.org/ - info@itpug.org # # Traduttori: +# * Daniele Varrazzo # * Cosimo D'Arcangelo -# +# # Revisori: # * Emanuele Zamprogno # @@ -16,33 +17,28 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" +"Project-Id-Version: pg_config (PostgreSQL) 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-03-26 13:17+0000\n" -"PO-Revision-Date: 2010-03-27 12:44:19+0100\n" -"Last-Translator: Gabriele Bartolini \n" +"POT-Creation-Date: 2013-01-29 13:56+0000\n" +"PO-Revision-Date: 2012-11-02 13:39+0100\n" +"Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Poedit-Language: Italian\n" -"X-Poedit-Country: ITALY\n" "X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Poedit 1.5.4\n" -#: pg_config.c:243 -#: pg_config.c:259 -#: pg_config.c:275 -#: pg_config.c:291 -#: pg_config.c:307 -#: pg_config.c:323 -#: pg_config.c:339 -#: pg_config.c:355 +#: pg_config.c:243 pg_config.c:259 pg_config.c:275 pg_config.c:291 +#: pg_config.c:307 pg_config.c:323 pg_config.c:339 pg_config.c:355 +#: pg_config.c:371 #, c-format msgid "not recorded\n" msgstr "non registrato\n" -#: pg_config.c:411 +#: pg_config.c:428 #, c-format msgid "" "\n" @@ -53,12 +49,12 @@ msgstr "" "%s fornisce informazioni circa la versione di PostgreSQL installata.\n" "\n" -#: pg_config.c:412 +#: pg_config.c:429 #, c-format msgid "Usage:\n" msgstr "Utilizzo:\n" -#: pg_config.c:413 +#: pg_config.c:430 #, c-format msgid "" " %s [OPTION]...\n" @@ -67,135 +63,158 @@ msgstr "" " %s [OPZIONE]...\n" "\n" -#: pg_config.c:414 +#: pg_config.c:431 #, c-format msgid "Options:\n" msgstr "Opzioni:\n" -#: pg_config.c:415 +#: pg_config.c:432 #, c-format msgid " --bindir show location of user executables\n" -msgstr " --bindir mostra la locazione degli eseguibili utente\n" +msgstr " --bindir mostra la posizione degli eseguibili utente\n" -#: pg_config.c:416 +#: pg_config.c:433 #, c-format msgid " --docdir show location of documentation files\n" -msgstr " --docdir mostra la locazione dei file di documentazione\n" +msgstr " --docdir mostra la posizione dei file di documentazione\n" -#: pg_config.c:417 +#: pg_config.c:434 #, c-format msgid " --htmldir show location of HTML documentation files\n" -msgstr " --htmldir mostra la locazione dei file di documentazione HTML\n" +msgstr " --htmldir mostra la posizione dei file di documentazione HTML\n" -#: pg_config.c:418 +#: pg_config.c:435 #, c-format msgid "" " --includedir show location of C header files of the client\n" " interfaces\n" msgstr "" -" --includedir mostra la locazione dei file header C delle interfacce\n" +" --includedir mostra la posizione dei file header C delle interfacce\n" " client\n" -#: pg_config.c:420 +#: pg_config.c:437 #, c-format msgid " --pkgincludedir show location of other C header files\n" -msgstr " --pkgincludedir mostra la locazione degli altri file header C\n" +msgstr " --pkgincludedir mostra la posizione degli altri file header C\n" -#: pg_config.c:421 +#: pg_config.c:438 #, c-format msgid " --includedir-server show location of C header files for the server\n" -msgstr " --includedir-server mostra la locazione dei file header C per il server\n" +msgstr " --includedir-server mostra la posizione dei file header C per il server\n" -#: pg_config.c:422 +#: pg_config.c:439 #, c-format msgid " --libdir show location of object code libraries\n" -msgstr " --libdir mostra la locazione delle librerie codice oggetto\n" +msgstr " --libdir mostra la posizione delle librerie codice oggetto\n" -#: pg_config.c:423 +#: pg_config.c:440 #, c-format msgid " --pkglibdir show location of dynamically loadable modules\n" -msgstr " --pkglibdir mostra la locazione dei moduli caricabili dinamicamente\n" +msgstr " --pkglibdir mostra la posizione dei moduli caricabili dinamicamente\n" -#: pg_config.c:424 +#: pg_config.c:441 #, c-format msgid " --localedir show location of locale support files\n" -msgstr " --localedir mostra la locazione dei file di supporto locale\n" +msgstr " --localedir mostra la posizione dei file di supporto locale\n" -#: pg_config.c:425 +#: pg_config.c:442 #, c-format msgid " --mandir show location of manual pages\n" -msgstr " --mandir mostra la locazione delle pagine del manuale\n" +msgstr " --mandir mostra la posizione delle pagine del manuale\n" -#: pg_config.c:426 +#: pg_config.c:443 #, c-format msgid " --sharedir show location of architecture-independent support files\n" -msgstr " --sharedir mostra la locazione dei file di supporto di architettura-indipendente\n" +msgstr " --sharedir mostra la posizione dei file di supporto non dipendenti dall'architettura\n" -#: pg_config.c:427 +#: pg_config.c:444 #, c-format msgid " --sysconfdir show location of system-wide configuration files\n" -msgstr " --sysconfdir mostra la locazione dei file di configurazione system-wide\n" +msgstr "" +" --sysconfdir mostra la posizione dei file di configurazione\n" +" di sistema\n" -#: pg_config.c:428 +#: pg_config.c:445 #, c-format msgid " --pgxs show location of extension makefile\n" -msgstr " --pgxs mostra la locazione delle estensioni makefile\n" +msgstr " --pgxs mostra la posizione delle estensioni makefile\n" -#: pg_config.c:429 +#: pg_config.c:446 #, c-format msgid "" " --configure show options given to \"configure\" script when\n" " PostgreSQL was built\n" msgstr "" " --configure mostra le opzioni fornite allo script \"configure\"\n" -" all' installazione di PostgreSQL\n" +" alla compilazione di PostgreSQL\n" -#: pg_config.c:431 +#: pg_config.c:448 #, c-format msgid " --cc show CC value used when PostgreSQL was built\n" -msgstr " --cc mostra il valore di CC usato all'installazione di PostgreSQL\n" +msgstr "" +" --cc mostra il valore di CC usato alla compilazione di\n" +" PostgreSQL\n" -#: pg_config.c:432 +#: pg_config.c:449 #, c-format msgid " --cppflags show CPPFLAGS value used when PostgreSQL was built\n" -msgstr " --cppflags mostra il valore di CPPFLAGS usato all'installazione di PostgreSQL\n" +msgstr "" +" --cppflags mostra il valore di CPPFLAGS usato alla compilazione\n" +" di PostgreSQL\n" -#: pg_config.c:433 +#: pg_config.c:450 #, c-format msgid " --cflags show CFLAGS value used when PostgreSQL was built\n" -msgstr " --cflags mostra il valore di CFLAGS usato all'installazione di PostgreSQL\n" +msgstr "" +" --cflags mostra il valore di CFLAGS usato alla compilazione\n" +" di PostgreSQL\n" -#: pg_config.c:434 +#: pg_config.c:451 #, c-format msgid " --cflags_sl show CFLAGS_SL value used when PostgreSQL was built\n" -msgstr " --cflags_sl mostra il valore di CFLAGS_SL usato all'installazione di PostgreSQL\n" +msgstr "" +" --cflags_sl mostra il valore di CFLAGS_SL usato alla compilazione\n" +" di PostgreSQL\n" -#: pg_config.c:435 +#: pg_config.c:452 #, c-format msgid " --ldflags show LDFLAGS value used when PostgreSQL was built\n" -msgstr " --ldflags mostra il valore di LDFLAGS usato all'installazione di PostgreSQL\n" +msgstr "" +" --ldflags mostra il valore di LDFLAGS usato alla compilazione\n" +" di PostgreSQL\n" -#: pg_config.c:436 +#: pg_config.c:453 +#, c-format +msgid " --ldflags_ex show LDFLAGS_EX value used when PostgreSQL was built\n" +msgstr "" +" --ldflags_ex mostra il valore di LDFLAGS_EX usato alla compilazione\n" +" di PostgreSQL\n" + +#: pg_config.c:454 #, c-format msgid " --ldflags_sl show LDFLAGS_SL value used when PostgreSQL was built\n" -msgstr " --ldflags_sl mostra il valore di LDFLAGS_SL usato all'installazione di PostgreSQL\n" +msgstr "" +" --ldflags_sl mostra il valore di LDFLAGS_SL usato alla compilazione\n" +" di PostgreSQL\n" -#: pg_config.c:437 +#: pg_config.c:455 #, c-format msgid " --libs show LIBS value used when PostgreSQL was built\n" -msgstr " --libs mostra il valore LIBS usato all'installazione di PostgreSQL\n" +msgstr "" +" --libs mostra il valore LIBS usato alla compilazione di\n" +" PostgreSQL\n" -#: pg_config.c:438 +#: pg_config.c:456 #, c-format msgid " --version show the PostgreSQL version\n" msgstr " --version mostra la versione di PostgreSQL\n" -#: pg_config.c:439 +#: pg_config.c:457 #, c-format msgid " --help show this help, then exit\n" -msgstr " --help mostra questo aiuto ed esce\n" +msgstr " --help mostra questo aiuto ed esci\n" -#: pg_config.c:440 +#: pg_config.c:458 #, c-format msgid "" "\n" @@ -206,81 +225,77 @@ msgstr "" "Senza argomenti, vengono mostrati tutti gli elementi conosciuti.\n" "\n" -#: pg_config.c:441 +#: pg_config.c:459 #, c-format msgid "Report bugs to .\n" -msgstr "Segnala errori a .\n" +msgstr "Puoi segnalare eventuali bug a .\n" -#: pg_config.c:447 +#: pg_config.c:465 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Consultare \"%s --help\" per maggiori informazioni.\n" +msgstr "Prova \"%s --help\" per maggiori informazioni.\n" -#: pg_config.c:486 +#: pg_config.c:504 #, c-format msgid "%s: could not find own program executable\n" -msgstr "%s: programma eseguibile proprio non trovato\n" +msgstr "%s: il proprio programma eseguibile non è stato trovato\n" -#: pg_config.c:509 +#: pg_config.c:527 #, c-format msgid "%s: invalid argument: %s\n" -msgstr "%s: parametro invalido: %s\n" +msgstr "%s: parametro non valido: %s\n" -#: ../../port/exec.c:125 -#: ../../port/exec.c:239 -#: ../../port/exec.c:282 +#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 #, c-format msgid "could not identify current directory: %s" -msgstr "directory corrente non identificata: %s" +msgstr "identificazione della directory corrente fallita: %s" #: ../../port/exec.c:144 #, c-format msgid "invalid binary \"%s\"" -msgstr "binario invalido \"%s\"" +msgstr "binario non valido \"%s\"" #: ../../port/exec.c:193 #, c-format msgid "could not read binary \"%s\"" -msgstr "binario non leggibile \"%s\"" +msgstr "lettura del binario \"%s\" fallita" #: ../../port/exec.c:200 #, c-format msgid "could not find a \"%s\" to execute" -msgstr "non trovato un \"%s\" da eseguire" +msgstr "programma \"%s\" da eseguire non trovato" -#: ../../port/exec.c:255 -#: ../../port/exec.c:291 +#: ../../port/exec.c:255 ../../port/exec.c:291 #, c-format msgid "could not change directory to \"%s\"" -msgstr "directory non modificabile in \"%s\"" +msgstr "spostamento nella directory \"%s\" fallito" #: ../../port/exec.c:270 #, c-format msgid "could not read symbolic link \"%s\"" -msgstr "link simbolico non leggibile \"%s\"" +msgstr "lettura del link simbolico \"%s\" fallita" -#: ../../port/exec.c:516 +#: ../../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" -msgstr "processo figlio uscito con codice d'uscita %d" +msgstr "processo figlio uscito con codice di uscita %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "processo figlio terminato da eccezione 0x%X" -#: ../../port/exec.c:529 +#: ../../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "processo figlio terminato da segnale %s" -#: ../../port/exec.c:532 +#: ../../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "processo figlio terminato da segnale %d" -#: ../../port/exec.c:536 +#: ../../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "processo figlio uscito con stato non riconosciuto %d" - diff --git a/src/bin/pg_config/po/ja.po b/src/bin/pg_config/po/ja.po index b85e72c4dd..0eb45652d1 100644 --- a/src/bin/pg_config/po/ja.po +++ b/src/bin/pg_config/po/ja.po @@ -6,9 +6,10 @@ msgstr "" "Project-Id-Version: PostgreSQL 9.0 beta 3\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" "POT-Creation-Date: 2010-07-20 12:54+0900\n" -"PO-Revision-Date: 2010-07-15 19:00+0900\n" +"PO-Revision-Date: 2011-08-30 21:27+0900\n" "Last-Translator: HOTTA Michihide \n" "Language-Team: jpug-doc \n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -64,7 +65,7 @@ msgstr " --docdir 文書ファイルの場所を表示します\n" #: pg_config.c:434 #, c-format msgid " --htmldir show location of HTML documentation files\n" -msgstr " --docdir html文書ファイルの場所を表示します\n" +msgstr " --htmldir html文書ファイルの場所を表示します\n" #: pg_config.c:435 #, c-format diff --git a/src/bin/pg_config/po/ko.po b/src/bin/pg_config/po/ko.po index 6369661b90..0fe6c6456e 100644 --- a/src/bin/pg_config/po/ko.po +++ b/src/bin/pg_config/po/ko.po @@ -9,6 +9,7 @@ msgstr "" "PO-Revision-Date: 2010-09-24 12:26-0400\n" "Last-Translator: EnterpriseDB translation team \n" "Language-Team: EnterpriseDB translation team \n" +"Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=euc-kr\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_config/po/nb.po b/src/bin/pg_config/po/nb.po index c42b48919c..338130ef88 100644 --- a/src/bin/pg_config/po/nb.po +++ b/src/bin/pg_config/po/nb.po @@ -5,6 +5,7 @@ msgstr "" "PO-Revision-Date: 2006-05-24 18:13+0100\n" "Last-Translator: Erik B. Ottesen \n" "Language-Team: \n" +"Language: nb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_config/po/pl.po b/src/bin/pg_config/po/pl.po new file mode 100644 index 0000000000..6f37c42fc6 --- /dev/null +++ b/src/bin/pg_config/po/pl.po @@ -0,0 +1,312 @@ +# PG_CONFIG Translated Messages into the Polish Language +# Copyright (c) 2005 toczek, xxxtoczekxxx@wp.pl +# Distributed under the same licensing terms as PostgreSQL itself. +# Begina Felicysym , 2011. +msgid "" +msgstr "" +"Project-Id-Version: pg_config (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-09-29 22:54+0000\n" +"PO-Revision-Date: 2011-09-30 09:52-0300\n" +"Last-Translator: Begina Felicysym \n" +"Language-Team: Polish TotroiseSvn translation team\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1-beta1\n" + +#: pg_config.c:243 pg_config.c:259 pg_config.c:275 pg_config.c:291 +#: pg_config.c:307 pg_config.c:323 pg_config.c:339 pg_config.c:355 +#: pg_config.c:371 +#, c-format +msgid "not recorded\n" +msgstr "niezarejestrowane\n" + +#: pg_config.c:428 +#, c-format +msgid "" +"\n" +"%s provides information about the installed version of PostgreSQL.\n" +"\n" +msgstr "" +"\n" +"%s dostarcza informacji na temat zainstalowanej wersji PostgreSQL.\n" +"\n" + +#: pg_config.c:429 +#, c-format +msgid "Usage:\n" +msgstr "Składnia:\n" + +#: pg_config.c:430 +#, c-format +msgid "" +" %s [OPTION]...\n" +"\n" +msgstr "" +" %s [OPCJA]...\n" +"\n" + +#: pg_config.c:431 +#, c-format +msgid "Options:\n" +msgstr "Opcje:\n" + +#: pg_config.c:432 +#, c-format +msgid " --bindir show location of user executables\n" +msgstr " --bindir pokaż lokalizację plików użytkownika\n" + +#: pg_config.c:433 +#, c-format +msgid " --docdir show location of documentation files\n" +msgstr " --docdir pokaż położenie plików dokumentacji\n" + +#: pg_config.c:434 +#, c-format +msgid " --htmldir show location of HTML documentation files\n" +msgstr " --htmldir pokaż lokalizację plików HTML dokumentacji\n" + +#: pg_config.c:435 +#, c-format +msgid "" +" --includedir show location of C header files of the client\n" +" interfaces\n" +msgstr "" +" --includedir pokaż lokalizację nagłówków C interfejsu \n" +" użytkownika\n" + +#: pg_config.c:437 +#, c-format +msgid " --pkgincludedir show location of other C header files\n" +msgstr " --pkgincludedir pokaż położenie innych plików nagłówkowych C\n" + +#: pg_config.c:438 +#, c-format +msgid "" +" --includedir-server show location of C header files for the server\n" +msgstr " --includedir-server pokaż lokalizację nagłówków C dla serwera\n" + +#: pg_config.c:439 +#, c-format +msgid " --libdir show location of object code libraries\n" +msgstr " --libdir pokaż lokalizację bibliotek obiektów\n" + +#: pg_config.c:440 +#, c-format +msgid " --pkglibdir show location of dynamically loadable modules\n" +msgstr " --pkglibdir pokaż lokalizację dynamicznych modułów\n" + +#: pg_config.c:441 +#, c-format +msgid " --localedir show location of locale support files\n" +msgstr " --localedir pokaż położenie plików obsługi lokalizacji\n" + +#: pg_config.c:442 +#, c-format +msgid " --mandir show location of manual pages\n" +msgstr " --mandir pokaż położenie plików podręcznika\n" + +#: pg_config.c:443 +#, c-format +msgid "" +" --sharedir show location of architecture-independent support " +"files\n" +msgstr "" +" --sharedir pokaż położenie niezależnych od architektury\n" +" plików obsługi\n" + +#: pg_config.c:444 +#, c-format +msgid "" +" --sysconfdir show location of system-wide configuration files\n" +msgstr "" +" --sysconfdir pokaż położenie ogólnosystemowych plików " +"konfiguracyjnych\n" + +#: pg_config.c:445 +#, c-format +msgid " --pgxs show location of extension makefile\n" +msgstr " --pgxs pokaż lokalizację makefile rozszerzeń\n" + +#: pg_config.c:446 +#, c-format +msgid "" +" --configure show options given to \"configure\" script when\n" +" PostgreSQL was built\n" +msgstr "" +" --configure pokaż opcje użyte przy skrypcie \"configure\" \n" +" podczas budowania PostgreSQL\n" + +#: pg_config.c:448 +#, c-format +msgid " --cc show CC value used when PostgreSQL was built\n" +msgstr "" +" --cc pokaż wartość CC użytą podczas budowania PostgreSQL\n" + +#: pg_config.c:449 +#, c-format +msgid "" +" --cppflags show CPPFLAGS value used when PostgreSQL was built\n" +msgstr "" +" --cppflags pokaż wartość CPPFLAGS użytą podczas budowania " +"PostgreSQL\n" + +#: pg_config.c:450 +#, c-format +msgid "" +" --cflags show CFLAGS value used when PostgreSQL was built\n" +msgstr "" +" --cflags pokaż wartość CFLAGS użytą podczas budowania " +"PostgreSQL\n" + +#: pg_config.c:451 +#, c-format +msgid "" +" --cflags_sl show CFLAGS_SL value used when PostgreSQL was built\n" +msgstr "" +" --cflags_sl pokaż wartość CFLAGS_SL użytą podczas budowania " +"PostgreSQL\n" + +#: pg_config.c:452 +#, c-format +msgid "" +" --ldflags show LDFLAGS value used when PostgreSQL was built\n" +msgstr "" +" --ldflags pokaż wartość LDFLAGS użytą podczas budowania " +"PostgreSQL\n" + +#: pg_config.c:453 +#, c-format +msgid "" +" --ldflags_ex show LDFLAGS_EX value used when PostgreSQL was " +"built\n" +msgstr "" +" --ldflags_ex pokaż wartość LDFLAGS_EX użytą podczas budowania " +"PostgreSQL\n" + +#: pg_config.c:454 +#, c-format +msgid "" +" --ldflags_sl show LDFLAGS_SL value used when PostgreSQL was " +"built\n" +msgstr "" +" --ldflags_sl pokaż wartość LDFLAGS_SL użytą podczas budowania " +"PostgreSQL\n" + +#: pg_config.c:455 +#, c-format +msgid "" +" --libs show LIBS value used when PostgreSQL was built\n" +msgstr "" +" --libs pokaż wartość LIBS użytą podczas budowania " +"PostgreSQL\n" + +#: pg_config.c:456 +#, c-format +msgid " --version show the PostgreSQL version\n" +msgstr " --version pokaż wersję PostgreSQL\n" + +#: pg_config.c:457 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help pokaż ten ekran pomocy i zakończ\n" + +#: pg_config.c:458 +#, c-format +msgid "" +"\n" +"With no arguments, all known items are shown.\n" +"\n" +msgstr "" +"\n" +"Bez argumentów są pokazane wszystkie znane elementy.\n" +"\n" + +#: pg_config.c:459 +#, c-format +msgid "Report bugs to .\n" +msgstr "Błędy proszę przesyłać na adres .\n" + +#: pg_config.c:465 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Spróbuj \"%s --help\" aby uzyskać więcej informacji.\n" + +#: pg_config.c:504 +#, c-format +msgid "%s: could not find own program executable\n" +msgstr "%s: nie można znaleźć programu wykonywalnego\n" + +#: pg_config.c:527 +#, c-format +msgid "%s: invalid argument: %s\n" +msgstr "%s: niepoprawny parametr: %s\n" + +#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 +#, c-format +msgid "could not identify current directory: %s" +msgstr "nie można zidentyfikować bieżącego katalogu: %s" + +#: ../../port/exec.c:144 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "niepoprawny binarny \"%s\"" + +#: ../../port/exec.c:193 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "nie można odczytać binarnego \"%s\"" + +#: ../../port/exec.c:200 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "nie znaleziono \"%s\" do wykonania" + +#: ../../port/exec.c:255 ../../port/exec.c:291 +#, c-format +msgid "could not change directory to \"%s\"" +msgstr "nie można zmienić katalogu na \"%s\"" + +#: ../../port/exec.c:270 +#, c-format +msgid "could not read symbolic link \"%s\"" +msgstr "nie można odczytać odwołania symbolicznego \"%s\"" + +#: ../../port/exec.c:517 +#, c-format +msgid "child process exited with exit code %d" +msgstr "proces potomny zakończył działanie z kodem %d" + +#: ../../port/exec.c:521 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "proces potomny został zatrzymany przez wyjątek 0x%X" + +#: ../../port/exec.c:530 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "proces potomny został zatrzymany przez sygnał %s" + +#: ../../port/exec.c:533 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "proces potomny został zatrzymany przez sygnał %d" + +#: ../../port/exec.c:537 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "proces potomny zakończył działanie z nieznanym stanem %d" + +#~ msgid "" +#~ "\n" +#~ "Try \"%s --help\" for more information\n" +#~ msgstr "" +#~ "\n" +#~ "Spróbuj \"%s --help\" aby uzykać więcej informacji.\n" + +#~ msgid "%s: argument required\n" +#~ msgstr "%s: parametr wymagany\n" diff --git a/src/bin/pg_config/po/pt_BR.po b/src/bin/pg_config/po/pt_BR.po index d852a2523c..1d7dbf235e 100644 --- a/src/bin/pg_config/po/pt_BR.po +++ b/src/bin/pg_config/po/pt_BR.po @@ -1,11 +1,11 @@ # Brazilian Portuguese message translation file for pg_config # Copyright (C) 2009 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Euler Taveira de Oliveira , 2004-2010. +# Euler Taveira de Oliveira , 2004-2011. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" "POT-Creation-Date: 2010-07-08 21:08-0300\n" "PO-Revision-Date: 2005-10-04 22:15-0300\n" @@ -113,7 +113,7 @@ msgstr "" #: pg_config.c:442 #, c-format msgid " --mandir show location of manual pages\n" -msgstr " --bindir mostra local das páginas de manual\n" +msgstr " --mandir mostra local das páginas de manual\n" #: pg_config.c:443 #, c-format diff --git a/src/bin/pg_config/po/ro.po b/src/bin/pg_config/po/ro.po index 283cc115ec..2e4d12937c 100644 --- a/src/bin/pg_config/po/ro.po +++ b/src/bin/pg_config/po/ro.po @@ -9,6 +9,7 @@ msgstr "" "PO-Revision-Date: 2010-09-04 21:44-0000\n" "Last-Translator: Max \n" "Language-Team: Română \n" +"Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_config/po/ru.po b/src/bin/pg_config/po/ru.po index caaffc8458..6092b5561c 100644 --- a/src/bin/pg_config/po/ru.po +++ b/src/bin/pg_config/po/ru.po @@ -11,36 +11,35 @@ # http://wiki.postgresql.org/wiki/NLS/ru/dict # # ChangeLog: -# - December 1, 2010: translation for 9.1, Andrey Sudnik -# - March 26, 2009: complete translation for 8.3, Sergey Burladyan -# - January 17, 2005: Complete translation for 8.0, Serguei A. Mokhov -# - December, 2004: Corrections and improvements by Oleg Bartunov -# - October 13 - November 24, 2004: Initial Translation, Serguei A. Mokhov # +# - April 2, 2012: Bug fixes. Alexander Lakhin . +# - February 17, 2012: Minor fixes. Alexander Lakhin . +# - December 1, 2010: translation for 9.1, Andrey Sudnik . +# - March 26, 2009: complete translation for 8.3, Sergey Burladyan . +# - January 17, 2005: Complete translation for 8.0, Serguei A. Mokhov . +# - December, 2004: Corrections and improvements by Oleg Bartunov . +# - October 13 - November 24, 2004: Initial Translation, Serguei A. Mokhov . msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-11-29 18:40+0000\n" -"PO-Revision-Date: 2010-12-01 00:56+0700\n" -"Last-Translator: Andrey Sudnik \n" -"Language-Team: pgsql-ru-general \n" -"Language: \n" +"POT-Creation-Date: 2012-07-10 22:27+0000\n" +"PO-Revision-Date: 2012-04-02 19:16+0400\n" +"Last-Translator: Alexander Lakhin \n" +"Language-Team: Russian \n" +"Language: ru\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Russian\n" "X-Poedit-Country: RUSSIAN FEDERATION\n" "X-Poedit-SourceCharset: utf-8\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 1.4\n" -#: pg_config.c:243 -#: pg_config.c:259 -#: pg_config.c:275 -#: pg_config.c:291 -#: pg_config.c:307 -#: pg_config.c:323 -#: pg_config.c:339 -#: pg_config.c:355 +#: pg_config.c:243 pg_config.c:259 pg_config.c:275 pg_config.c:291 +#: pg_config.c:307 pg_config.c:323 pg_config.c:339 pg_config.c:355 #: pg_config.c:371 #, c-format msgid "not recorded\n" @@ -68,18 +67,18 @@ msgid "" " %s [OPTION]...\n" "\n" msgstr "" -" %s [ОПЦИЯ]...\n" +" %s [ПАРАМЕТР]...\n" "\n" #: pg_config.c:431 #, c-format msgid "Options:\n" -msgstr "Опции:\n" +msgstr "Параметры:\n" #: pg_config.c:432 #, c-format msgid " --bindir show location of user executables\n" -msgstr " --bindir показать расположение выполняемых файлов\n" +msgstr " --bindir показать расположение исполняемых файлов\n" #: pg_config.c:433 #, c-format @@ -89,7 +88,8 @@ msgstr " --docdir показать расположение фай #: pg_config.c:434 #, c-format msgid " --htmldir show location of HTML documentation files\n" -msgstr " --htmldir показать расположение HTML файлов документации\n" +msgstr "" +" --htmldir показать расположение HTML-файлов документации\n" #: pg_config.c:435 #, c-format @@ -97,33 +97,41 @@ msgid "" " --includedir show location of C header files of the client\n" " interfaces\n" msgstr "" -" --includedir показать расположение файлов-заголовков C (.h)\n" -" клиентских интерфейсов\n" +" --includedir показать расположение файлов-заголовков (.h) для\n" +" клиентских интерфейсов на языке C\n" #: pg_config.c:437 #, c-format msgid " --pkgincludedir show location of other C header files\n" -msgstr " --pkgincludedir показать расположение других файлов-заголовков C (.h)\n" +msgstr "" +" --pkgincludedir показать расположение других файлов-заголовков (.h)\n" #: pg_config.c:438 #, c-format -msgid " --includedir-server show location of C header files for the server\n" -msgstr " --includedir-server показать расположение файлов-заголовков C (.h) сервера\n" +msgid "" +" --includedir-server show location of C header files for the server\n" +msgstr "" +" --includedir-server показать расположение файлов-заголовков (.h) для " +"сервера\n" #: pg_config.c:439 #, c-format msgid " --libdir show location of object code libraries\n" -msgstr " --libdir показать расположение библиотек объектного кода\n" +msgstr "" +" --libdir показать расположение библиотек объектного кода\n" #: pg_config.c:440 #, c-format msgid " --pkglibdir show location of dynamically loadable modules\n" -msgstr " --pkglibdir показать расположение динамически загружаемых модулей\n" +msgstr "" +" --pkglibdir показать расположение динамически загружаемых " +"модулей\n" #: pg_config.c:441 #, c-format msgid " --localedir show location of locale support files\n" -msgstr " --localedir показать расположение файлов описания локалей\n" +msgstr "" +" --localedir показать расположение файлов описания локалей\n" #: pg_config.c:442 #, c-format @@ -132,18 +140,26 @@ msgstr " --mandir показать расположение спр #: pg_config.c:443 #, c-format -msgid " --sharedir show location of architecture-independent support files\n" -msgstr " --sharedir показать расположение платформенно-независимых файлов\n" +msgid "" +" --sharedir show location of architecture-independent support " +"files\n" +msgstr "" +" --sharedir показать расположение платформенно-независимых " +"файлов\n" #: pg_config.c:444 #, c-format -msgid " --sysconfdir show location of system-wide configuration files\n" -msgstr " --sysconfdir показать расположение общесистемных конфигурационных файлов\n" +msgid "" +" --sysconfdir show location of system-wide configuration files\n" +msgstr "" +" --sysconfdir показать расположение общесистемных файлов " +"конфигурации\n" #: pg_config.c:445 #, c-format msgid " --pgxs show location of extension makefile\n" -msgstr " --pgxs показать расположение makefile для расширений\n" +msgstr "" +" --pgxs показать расположение makefile для расширений\n" #: pg_config.c:446 #, c-format @@ -151,48 +167,71 @@ msgid "" " --configure show options given to \"configure\" script when\n" " PostgreSQL was built\n" msgstr "" -" --configure показать опции, использованные \"configure\"\n" -" при компиляции PostgreSQL\n" +" --configure показать параметры скрипта \"configure\", с " +"которыми\n" +" был собран PostgreSQL\n" #: pg_config.c:448 #, c-format msgid " --cc show CC value used when PostgreSQL was built\n" -msgstr " --cc показать значение CC использованное при компиляции PostgreSQL\n" +msgstr "" +" --cc показать, с каким значением CC собран PostgreSQL\n" #: pg_config.c:449 #, c-format -msgid " --cppflags show CPPFLAGS value used when PostgreSQL was built\n" -msgstr " --cppflags показать значение CPPFLAGS использованное при компиляции PostgreSQL\n" +msgid "" +" --cppflags show CPPFLAGS value used when PostgreSQL was built\n" +msgstr "" +" --cppflags показать, с каким значением CPPFLAGS собран " +"PostgreSQL\n" #: pg_config.c:450 #, c-format -msgid " --cflags show CFLAGS value used when PostgreSQL was built\n" -msgstr " --cflags показать значение CFLAGS использованное при компиляции PostgreSQL\n" +msgid "" +" --cflags show CFLAGS value used when PostgreSQL was built\n" +msgstr "" +" --cflags показать, с какими флагами C собран PostgreSQL\n" #: pg_config.c:451 #, c-format -msgid " --cflags_sl show CFLAGS_SL value used when PostgreSQL was built\n" -msgstr " --cflags_sl показать значение CFLAGS_SL использованное при компиляции PostgreSQL\n" +msgid "" +" --cflags_sl show CFLAGS_SL value used when PostgreSQL was built\n" +msgstr "" +" --cflags_sl показать, с каким значением CFLAGS_SL собран " +"PostgreSQL\n" #: pg_config.c:452 #, c-format -msgid " --ldflags show LDFLAGS value used when PostgreSQL was built\n" -msgstr " --ldflags показать значение LDFLAGS использованное при компиляции PostgreSQL\n" +msgid "" +" --ldflags show LDFLAGS value used when PostgreSQL was built\n" +msgstr "" +" --ldflags показать, с каким значением LDFLAGS собран " +"PostgreSQL\n" #: pg_config.c:453 #, c-format -msgid " --ldflags_ex show LDFLAGS_EX value used when PostgreSQL was built\n" -msgstr " --ldflags_ex показать значение LDFLAGS_EX используемое при компиляции PostgreSQL\n" +msgid "" +" --ldflags_ex show LDFLAGS_EX value used when PostgreSQL was " +"built\n" +msgstr "" +" --ldflags_ex показать, с каким значением LDFLAGS_EX собран " +"PostgreSQL\n" #: pg_config.c:454 #, c-format -msgid " --ldflags_sl show LDFLAGS_SL value used when PostgreSQL was built\n" -msgstr " --ldflags_sl показать значение LDFLAGS_SL использованное при компиляции PostgreSQL\n" +msgid "" +" --ldflags_sl show LDFLAGS_SL value used when PostgreSQL was " +"built\n" +msgstr "" +" --ldflags_sl показать, с каким значение LDFLAGS_SL собран " +"PostgreSQL\n" #: pg_config.c:455 #, c-format -msgid " --libs show LIBS value used when PostgreSQL was built\n" -msgstr " --libs показать значение LIBS использованное при компиляции PostgreSQL\n" +msgid "" +" --libs show LIBS value used when PostgreSQL was built\n" +msgstr "" +" --libs показать, с каким значением LIBS собран PostgreSQL\n" #: pg_config.c:456 #, c-format @@ -202,7 +241,7 @@ msgstr " --version показать версию PostgreSQL\n" #: pg_config.c:457 #, c-format msgid " --help show this help, then exit\n" -msgstr " --help показать эту подсказку и выйти\n" +msgstr " --help показать эту справку и выйти\n" #: pg_config.c:458 #, c-format @@ -212,93 +251,80 @@ msgid "" "\n" msgstr "" "\n" -"При запуске без аргументов, будут показаны все известные значения.\n" +"При запуске без аргументов выводятся все известные значения.\n" "\n" #: pg_config.c:459 #, c-format msgid "Report bugs to .\n" -msgstr "Сообщать об ошибках: .\n" +msgstr "Об ошибках сообщайте по адресу .\n" #: pg_config.c:465 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Наберите \"%s --help\" для более подробной информации\n" +msgstr "Для дополнительной информации попробуйте \"%s --help\".\n" #: pg_config.c:504 #, c-format msgid "%s: could not find own program executable\n" -msgstr "%s: не удалось найти свой собственный выполняемый файл\n" +msgstr "%s: не удалось найти свой исполняемый файл\n" #: pg_config.c:527 #, c-format msgid "%s: invalid argument: %s\n" msgstr "%s: неверный аргумент: %s\n" -#: ../../port/exec.c:125 -#: ../../port/exec.c:239 -#: ../../port/exec.c:282 +#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 #, c-format msgid "could not identify current directory: %s" -msgstr "не удалось идентифицировать текущую директорию: %s" +msgstr "не удалось определить текущий каталог: %s" #: ../../port/exec.c:144 #, c-format msgid "invalid binary \"%s\"" -msgstr "неверный бинарный \"%s\"" +msgstr "неверный исполняемый файл \"%s\"" #: ../../port/exec.c:193 #, c-format msgid "could not read binary \"%s\"" -msgstr "не удалось считать бинарный \"%s\"" +msgstr "не удалось прочитать исполняемый файл \"%s\"" #: ../../port/exec.c:200 #, c-format msgid "could not find a \"%s\" to execute" -msgstr "\"%s\" не найден для выполнения" +msgstr "не удалось найти запускаемый файл \"%s\"" -#: ../../port/exec.c:255 -#: ../../port/exec.c:291 +#: ../../port/exec.c:255 ../../port/exec.c:291 #, c-format msgid "could not change directory to \"%s\"" -msgstr "не удалось поменять директорию на \"%s\"" +msgstr "не удалось перейти в каталог \"%s\"" #: ../../port/exec.c:270 #, c-format msgid "could not read symbolic link \"%s\"" -msgstr "не получилось считать символическую ссылку \"%s\"" +msgstr "не удалось прочитать символическую ссылку \"%s\"" -#: ../../port/exec.c:516 +#: ../../port/exec.c:517 #, c-format msgid "child process exited with exit code %d" msgstr "дочерний процесс завершился с кодом возврата %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:521 #, c-format msgid "child process was terminated by exception 0x%X" -msgstr "дочерний процесс завершён исключением 0x%X" +msgstr "дочерний процесс прерван исключением 0x%X" -#: ../../port/exec.c:529 +#: ../../port/exec.c:530 #, c-format msgid "child process was terminated by signal %s" -msgstr "дочерний процесс завершён сигналом %s" +msgstr "дочерний процесс завершён по сигналу %s" -#: ../../port/exec.c:532 +#: ../../port/exec.c:533 #, c-format msgid "child process was terminated by signal %d" -msgstr "дочерний процесс завершён сигналом %d" +msgstr "дочерний процесс завершён по сигналу %d" -#: ../../port/exec.c:536 +#: ../../port/exec.c:537 #, c-format msgid "child process exited with unrecognized status %d" -msgstr "дочерний процесс завершился с нераспознанным статусом %d" - -#~ msgid "" -#~ " %s [ OPTION ... ]\n" -#~ "\n" -#~ msgstr "" -#~ " %s [ ОПЦИЯ ... ]\n" -#~ "\n" -#~ msgid "%s: argument required\n" -#~ msgstr "%s: требуется аргумент\n" - +msgstr "дочерний процесс завершился с нераспознанным состоянием %d" diff --git a/src/bin/pg_config/po/sv.po b/src/bin/pg_config/po/sv.po index caef9dcada..254cc7c4f2 100644 --- a/src/bin/pg_config/po/sv.po +++ b/src/bin/pg_config/po/sv.po @@ -9,6 +9,7 @@ msgstr "" "PO-Revision-Date: 2010-07-27 22:11+0300\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: Swedish \n" +"Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_config/po/ta.po b/src/bin/pg_config/po/ta.po index 36e94d17b7..965e8f371e 100644 --- a/src/bin/pg_config/po/ta.po +++ b/src/bin/pg_config/po/ta.po @@ -10,6 +10,7 @@ msgstr "" "PO-Revision-Date: 2007-10-19 00:01+0530\n" "Last-Translator: ஆமாச்சு \n" "Language-Team: தமிழ் \n" +"Language: ta\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_config/po/tr.po b/src/bin/pg_config/po/tr.po index 477e33b8f4..fa06112908 100644 --- a/src/bin/pg_config/po/tr.po +++ b/src/bin/pg_config/po/tr.po @@ -10,6 +10,7 @@ msgstr "" "PO-Revision-Date: 2010-09-01 11:05+0200\n" "Last-Translator: Devrim GÜNDÜZ \n" "Language-Team: Turkish \n" +"Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_config/po/zh_CN.po b/src/bin/pg_config/po/zh_CN.po index 30b232ea51..fdcf0db7dc 100644 --- a/src/bin/pg_config/po/zh_CN.po +++ b/src/bin/pg_config/po/zh_CN.po @@ -6,10 +6,11 @@ msgid "" msgstr "" "Project-Id-Version: pg_config (PostgreSQL 9.0)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-10-01 14:40+0000\n" +"POT-Creation-Date: 2013-01-29 13:56+0000\n" "PO-Revision-Date: 2010-10-01 12:43+0800\n" "Last-Translator: Weibin \n" "Language-Team: Chinese (Simplified)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -255,27 +256,27 @@ msgstr "无法进入目录 \"%s\"" msgid "could not read symbolic link \"%s\"" msgstr "无法读取符号链结 \"%s\"" -#: ../../port/exec.c:516 +#: ../../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" msgstr "子进程已退出, 退出码为 %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "子进程被例外(exception) 0x%X 终止" -#: ../../port/exec.c:529 +#: ../../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "子进程被信号 %s 终止" -#: ../../port/exec.c:532 +#: ../../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "子进程被信号 %d 终止" -#: ../../port/exec.c:536 +#: ../../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "子进程已退出, 未知状态 %d" diff --git a/src/bin/pg_config/po/zh_TW.po b/src/bin/pg_config/po/zh_TW.po index 05d685bffb..11f6b977f9 100644 --- a/src/bin/pg_config/po/zh_TW.po +++ b/src/bin/pg_config/po/zh_TW.po @@ -12,7 +12,7 @@ msgstr "" "Last-Translator: Zhenbang Wei \n" "Language-Team: EnterpriseDB translation team \n" -"Language: \n" +"Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_controldata/nls.mk b/src/bin/pg_controldata/nls.mk index 7edaaff7f3..bd5464c7d7 100644 --- a/src/bin/pg_controldata/nls.mk +++ b/src/bin/pg_controldata/nls.mk @@ -1,5 +1,5 @@ # src/bin/pg_controldata/nls.mk CATALOG_NAME := pg_controldata -AVAIL_LANGUAGES := de es fr it ja ko pt_BR ro ru sv ta tr zh_CN zh_TW +AVAIL_LANGUAGES := cs de es fr it ja ko pl pt_BR ro ru tr zh_CN zh_TW GETTEXT_FILES := pg_controldata.c GETTEXT_TRIGGERS:= _ diff --git a/src/bin/pg_controldata/po/cs.po b/src/bin/pg_controldata/po/cs.po new file mode 100644 index 0000000000..ea689b1fa2 --- /dev/null +++ b/src/bin/pg_controldata/po/cs.po @@ -0,0 +1,347 @@ +# Czech translation of pg_controldata messages. +# +# pgtranslation Id: pg_controldata.po,v 1.4 2011/09/08 18:23:05 petere Exp $ +# +# Karel Zak , 2003, 2004, 2011, 2012. +# Tomáš Vondra , 2011, 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: pg_controldata-cs (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2012-04-06 23:47+0000\n" +"PO-Revision-Date: 2012-04-07 02:07+0200\n" +"Last-Translator: Tomas Vondra \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: pg_controldata.c:33 +#, c-format +msgid "" +"%s displays control information of a PostgreSQL database cluster.\n" +"\n" +msgstr "" +"%s ukáže kontrolní informace o PostgreSQL databázi.\n" +"\n" + +#: pg_controldata.c:37 +#, c-format +msgid "" +"Usage:\n" +" %s [OPTION] [DATADIR]\n" +"\n" +"Options:\n" +" --help show this help, then exit\n" +" --version output version information, then exit\n" +msgstr "" +"Použití:\n" +" %s [PŘEPÍNAČ] [ADRESÁŘ]\n" +"\n" +"Přepínače:\n" +" --help ukáže tuto nápovědu a skončí\n" +" --version ukáže verzi tohoto programu a skončí\n" + +#: pg_controldata.c:45 +#, c-format +msgid "" +"\n" +"If no data directory (DATADIR) is specified, the environment variable " +"PGDATA\n" +"is used.\n" +"\n" +msgstr "" +"\n" +"Není-li specifikován datový adresář, je použita proměnná prostředí\n" +"PGDATA.\n" +"\n" + +#: pg_controldata.c:47 +#, c-format +msgid "Report bugs to .\n" +msgstr "Chyby posílejte na adresu .\n" + +#: pg_controldata.c:57 +msgid "starting up" +msgstr "startování" + +#: pg_controldata.c:59 +msgid "shut down" +msgstr "ukončení" + +#: pg_controldata.c:61 +msgid "shut down in recovery" +msgstr "ukončení (shut down) během obnovy" + +#: pg_controldata.c:63 +msgid "shutting down" +msgstr "ukončování" + +#: pg_controldata.c:65 +msgid "in crash recovery" +msgstr "probíhá zotavení z pádu" + +#: pg_controldata.c:67 +msgid "in archive recovery" +msgstr "probíhá obnova z archivu" + +#: pg_controldata.c:69 +msgid "in production" +msgstr "v provozu" + +#: pg_controldata.c:71 +msgid "unrecognized status code" +msgstr "neznámý stavový kód" + +#: pg_controldata.c:86 +msgid "unrecognized wal_level" +msgstr "neznámý wal_level" + +#: pg_controldata.c:129 +#, c-format +msgid "%s: no data directory specified\n" +msgstr "%s: není specifikován datový adresář\n" + +#: pg_controldata.c:130 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Zkuste \"%s --help\" pro více informací.\n" + +#: pg_controldata.c:138 +#, c-format +msgid "%s: could not open file \"%s\" for reading: %s\n" +msgstr "%s: nelze otevřít soubor \"%s\" pro čtení: %s\n" + +#: pg_controldata.c:145 +#, c-format +msgid "%s: could not read file \"%s\": %s\n" +msgstr "%s: nelze číst soubor \"%s\": %s\n" + +#: pg_controldata.c:159 +#, c-format +msgid "" +"WARNING: Calculated CRC checksum does not match value stored in file.\n" +"Either the file is corrupt, or it has a different layout than this program\n" +"is expecting. The results below are untrustworthy.\n" +"\n" +msgstr "" +"UPOZORNĚNÍ: Spočítaný CRC kontrolní součet nesouhlasí s hodnotou uloženou\n" +"v souboru. Buď je soubor poškozen nebo má jinou strukturu než tento program\n" +"očekává. Níže uvedené výsledky jsou nedůvěryhodné.\n" +"\n" + +#: pg_controldata.c:186 +#, c-format +msgid "pg_control version number: %u\n" +msgstr "číslo verze pg_controlu: %u\n" + +#: pg_controldata.c:189 +#, c-format +msgid "" +"WARNING: possible byte ordering mismatch\n" +"The byte ordering used to store the pg_control file might not match the one\n" +"used by this program. In that case the results below would be incorrect, " +"and\n" +"the PostgreSQL installation would be incompatible with this data directory.\n" +msgstr "" +"VAROVÁNÍ: možný nesoulad v pořadí bytů\n" +"Pořadí bytů používané pro uložení pg_control souboru nemusí odpovídat tomu\n" +"používanému tímto programem. V tom případě by výsledky uvedené níže byly " +"chybné, a\n" +"PostgreSQL instalace by byla nekompatibilní s tímto datovým adresářem.\n" + +#: pg_controldata.c:193 +#, c-format +msgid "Catalog version number: %u\n" +msgstr "Číslo verze katalogu: %u\n" + +#: pg_controldata.c:195 +#, c-format +msgid "Database system identifier: %s\n" +msgstr "Identifikátor databázového systému: %s\n" + +#: pg_controldata.c:197 +#, c-format +msgid "Database cluster state: %s\n" +msgstr "Status databázového klastru: %s\n" + +#: pg_controldata.c:199 +#, c-format +msgid "pg_control last modified: %s\n" +msgstr "poslední modifikace pg_control: %s\n" + +#: pg_controldata.c:201 +#, c-format +msgid "Latest checkpoint location: %X/%X\n" +msgstr "Poslední umístění checkpointu: %X/%X\n" + +#: pg_controldata.c:204 +#, c-format +msgid "Prior checkpoint location: %X/%X\n" +msgstr "Předešlé umístění checkpointu: %X/%X\n" + +#: pg_controldata.c:207 +#, c-format +msgid "Latest checkpoint's REDO location: %X/%X\n" +msgstr "Poslední umístění REDO checkpointu: %X/%X\n" + +#: pg_controldata.c:210 +#, c-format +msgid "Latest checkpoint's TimeLineID: %u\n" +msgstr "TimeLineID posledního checkpointu: %u\n" + +#: pg_controldata.c:212 +#, c-format +msgid "Latest checkpoint's NextXID: %u/%u\n" +msgstr "Poslední umístění NextXID checkpointu: %u/%u\n" + +#: pg_controldata.c:215 +#, c-format +msgid "Latest checkpoint's NextOID: %u\n" +msgstr "Poslední umístění NextOID checkpointu: %u\n" + +#: pg_controldata.c:217 +#, c-format +msgid "Latest checkpoint's NextMultiXactId: %u\n" +msgstr "NextMultiXactId posledního checkpointu: %u\n" + +#: pg_controldata.c:219 +#, c-format +msgid "Latest checkpoint's NextMultiOffset: %u\n" +msgstr "NextMultiOffset posledního checkpointu: %u\n" + +#: pg_controldata.c:221 +#, c-format +msgid "Latest checkpoint's oldestXID: %u\n" +msgstr "oldestXID posledního checkpointu: %u\n" + +#: pg_controldata.c:223 +#, c-format +msgid "Latest checkpoint's oldestXID's DB: %u\n" +msgstr "DB k oldestXID posledního checkpointu: %u\n" + +#: pg_controldata.c:225 +#, c-format +msgid "Latest checkpoint's oldestActiveXID: %u\n" +msgstr "oldestActiveXID posledního checkpointu: %u\n" + +#: pg_controldata.c:227 +#, c-format +msgid "Time of latest checkpoint: %s\n" +msgstr "Čas posledního checkpointu: %s\n" + +#: pg_controldata.c:229 +#, c-format +msgid "Minimum recovery ending location: %X/%X\n" +msgstr "Minimální pozice ukončení obnovy: %X/%X\n" + +#: pg_controldata.c:232 +#, c-format +msgid "Backup start location: %X/%X\n" +msgstr "Pozice počátku backupu: %X/%X\n" + +#: pg_controldata.c:235 +#, c-format +msgid "Current wal_level setting: %s\n" +msgstr "Aktuální nastavení wal_level: %s\n" + +#: pg_controldata.c:237 +#, c-format +msgid "Current max_connections setting: %d\n" +msgstr "Aktuální nastavení max_connections: %d\n" + +#: pg_controldata.c:239 +#, c-format +msgid "Current max_prepared_xacts setting: %d\n" +msgstr "Aktuální nastavení max_prepared_xacts: %d\n" + +#: pg_controldata.c:241 +#, c-format +msgid "Current max_locks_per_xact setting: %d\n" +msgstr "Aktuální nastavení max_locks_per_xact: %d\n" + +#: pg_controldata.c:243 +#, c-format +msgid "Maximum data alignment: %u\n" +msgstr "Maximální zarovnání dat: %u\n" + +#: pg_controldata.c:246 +#, c-format +msgid "Database block size: %u\n" +msgstr "Velikost databázového bloku: %u\n" + +#: pg_controldata.c:248 +#, c-format +msgid "Blocks per segment of large relation: %u\n" +msgstr "Bloků v segmentu velké relace: %u\n" + +#: pg_controldata.c:250 +#, c-format +msgid "WAL block size: %u\n" +msgstr "Velikost WAL bloku: %u\n" + +#: pg_controldata.c:252 +#, c-format +msgid "Bytes per WAL segment: %u\n" +msgstr "Bytů ve WAL segmentu: %u\n" + +#: pg_controldata.c:254 +#, c-format +msgid "Maximum length of identifiers: %u\n" +msgstr "Maximální délka identifikátorů: %u\n" + +#: pg_controldata.c:256 +#, c-format +msgid "Maximum columns in an index: %u\n" +msgstr "Maximální počet sloupců v indexu: %u\n" + +#: pg_controldata.c:258 +#, c-format +msgid "Maximum size of a TOAST chunk: %u\n" +msgstr "Maximální velikost úseku TOAST: %u\n" + +#: pg_controldata.c:260 +#, c-format +msgid "Date/time type storage: %s\n" +msgstr "Způsob uložení typu date/time: %s\n" + +#: pg_controldata.c:261 +msgid "64-bit integers" +msgstr "64-bitová čísla" + +#: pg_controldata.c:261 +msgid "floating-point numbers" +msgstr "čísla s plovoucí řádovou čárkou" + +#: pg_controldata.c:262 +#, c-format +msgid "Float4 argument passing: %s\n" +msgstr "Způsob předávání float4 hodnot: %s\n" + +#: pg_controldata.c:263 pg_controldata.c:265 +msgid "by value" +msgstr "hodnotou" + +#: pg_controldata.c:263 pg_controldata.c:265 +msgid "by reference" +msgstr "odkazem" + +#: pg_controldata.c:264 +#, c-format +msgid "Float8 argument passing: %s\n" +msgstr "Způsob předávání float8 hodnot: %s\n" + +#~ msgid "Latest checkpoint's UNDO location: %X/%X\n" +#~ msgstr "Poslední umístění UNDO kontrolního bodu: %X/%X\n" + +#~ msgid "Maximum number of function arguments: %u\n" +#~ msgstr "Maximální počet argumentů funkcí: %u\n" + +#~ msgid "LC_COLLATE: %s\n" +#~ msgstr "LC_COLLATE (porovnávání řetězců): %s\n" + +#~ msgid "LC_CTYPE: %s\n" +#~ msgstr "LC_CTYPE (typy znaků): %s\n" diff --git a/src/bin/pg_controldata/po/de.po b/src/bin/pg_controldata/po/de.po index f4f67f19f2..90b0eb4a7b 100644 --- a/src/bin/pg_controldata/po/de.po +++ b/src/bin/pg_controldata/po/de.po @@ -1,8 +1,6 @@ # German message translation file for pg_controldata # Peter Eisentraut , 2002 - 2010. # -# pgtranslation Id: pg_controldata.po,v 1.13 2010/06/03 20:53:47 petere Exp $ -# # Use these quotes: »%s« # msgid "" @@ -13,6 +11,7 @@ msgstr "" "PO-Revision-Date: 2010-06-03 21:41+0300\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_controldata/po/es.po b/src/bin/pg_controldata/po/es.po index 6e165aa484..032411578f 100644 --- a/src/bin/pg_controldata/po/es.po +++ b/src/bin/pg_controldata/po/es.po @@ -1,21 +1,20 @@ # Spanish message translation file for pg_controldata # -# Copyright (C) 2002-2010 PostgreSQL Global Development Group +# Copyright (C) 2002-2012 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # # Karim Mribti , 2002. -# Alvaro Herrera , 2003-2010 -# -# pgtranslation Id: pg_controldata.po,v 1.11 2010/08/31 17:31:32 alvherre Exp $ +# Alvaro Herrera , 2003-2012 # msgid "" msgstr "" -"Project-Id-Version: pg_controldata (PostgreSQL 9.0)\n" +"Project-Id-Version: pg_controldata (PostgreSQL 9.1)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-08-31 07:16+0000\n" -"PO-Revision-Date: 2010-08-31 13:31-0400\n" +"POT-Creation-Date: 2013-08-26 19:46+0000\n" +"PO-Revision-Date: 2012-02-21 22:53-0300\n" "Last-Translator: Alvaro Herrera \n" "Language-Team: Castellano \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_controldata/po/fr.po b/src/bin/pg_controldata/po/fr.po index aab583e6e4..0da8c99d6a 100644 --- a/src/bin/pg_controldata/po/fr.po +++ b/src/bin/pg_controldata/po/fr.po @@ -1,8 +1,6 @@ # translation of pg_controldata.po to fr_fr # french message translation file for pg_controldata # -# $PostgreSQL$ -# # Use these quotes: � %s � # # Lo�c Hennequin , 2002. @@ -16,6 +14,7 @@ msgstr "" "PO-Revision-Date: 2010-06-17 13:48+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" diff --git a/src/bin/pg_controldata/po/it.po b/src/bin/pg_controldata/po/it.po index 12450a2632..d14eae73fc 100644 --- a/src/bin/pg_controldata/po/it.po +++ b/src/bin/pg_controldata/po/it.po @@ -6,12 +6,13 @@ # http://www.itpug.org/ - info@itpug.org # # Traduttori: +# * Daniele Varrazzo # * Cosimo D'Arcangelo -# +# # Revisori: # * Gabriele Bartolini # * Emanuele Zamprogno -# +# # Traduttori precedenti: # * Mirko Tebaldi , 2004. # @@ -20,29 +21,29 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" +"Project-Id-Version: pg_controldata (PostgreSQL) 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-03-26 13:16+0000\n" -"PO-Revision-Date: 2010-03-27 12:44:19+0100\n" -"Last-Translator: Gabriele Bartolini \n" +"POT-Creation-Date: 2013-03-13 11:46+0000\n" +"PO-Revision-Date: 2012-12-03 18:44+0100\n" +"Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Italian\n" -"X-Poedit-Country: ITALY\n" "X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Poedit 1.5.4\n" -#: pg_controldata.c:24 +#: pg_controldata.c:33 #, c-format msgid "" "%s displays control information of a PostgreSQL database cluster.\n" "\n" msgstr "" -"%s mostra informazioni di controllo su un cluster di database in PostgreSQL.\n" +"%s mostra informazioni di controllo su un cluster di database PostgreSQL.\n" "\n" -#: pg_controldata.c:28 +#: pg_controldata.c:37 #, c-format msgid "" "Usage:\n" @@ -52,14 +53,14 @@ msgid "" " --help show this help, then exit\n" " --version output version information, then exit\n" msgstr "" -"Uso:\n" +"Utilizzo:\n" " %s [OPZIONI] [DATADIR]\n" "\n" "Opzioni:\n" -" --help mostra questo help, poi esci\n" -" --version mostra le informazioni circa la versione, poi esci\n" +" --help mostra questo aiuto ed esci\n" +" --version mostra informazioni sulla versione ed esci\n" -#: pg_controldata.c:36 +#: pg_controldata.c:45 #, c-format msgid "" "\n" @@ -68,64 +69,72 @@ msgid "" "\n" msgstr "" "\n" -"Se non viene specificata un directory per i dati (DATADIR), la variabile d'ambiente PGDATA\n" -"sarà usata come predefinita.\n" +"Se non viene specificata un directory per i dati (DATADIR) verrà usata la\n" +"variabile d'ambiente PGDATA.\n" "\n" -#: pg_controldata.c:38 +#: pg_controldata.c:47 #, c-format msgid "Report bugs to .\n" -msgstr "Segnala errori a .\n" +msgstr "Puoi segnalare eventuali bug a .\n" -#: pg_controldata.c:48 +#: pg_controldata.c:57 msgid "starting up" msgstr "avvio in corso" -#: pg_controldata.c:50 +#: pg_controldata.c:59 msgid "shut down" msgstr "spento" -#: pg_controldata.c:52 +#: pg_controldata.c:61 +msgid "shut down in recovery" +msgstr "arresto durante il ripristino" + +#: pg_controldata.c:63 msgid "shutting down" msgstr "arresto in corso" -#: pg_controldata.c:54 +#: pg_controldata.c:65 msgid "in crash recovery" msgstr "in fase di recupero da un crash" -#: pg_controldata.c:56 +#: pg_controldata.c:67 msgid "in archive recovery" -msgstr "in fase di recupero da un archivio" +msgstr "in fase di recupero di un archivio" -#: pg_controldata.c:58 +#: pg_controldata.c:69 msgid "in production" msgstr "in produzione" -#: pg_controldata.c:60 +#: pg_controldata.c:71 msgid "unrecognized status code" -msgstr "codice di stato non riconosciuto" +msgstr "codice di stato sconosciuto" -#: pg_controldata.c:103 +#: pg_controldata.c:86 +msgid "unrecognized wal_level" +msgstr "wal_level sconosciuto" + +#: pg_controldata.c:129 #, c-format msgid "%s: no data directory specified\n" msgstr "%s: non è stata specificata una directory per i dati\n" -#: pg_controldata.c:104 +#: pg_controldata.c:130 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Prova \"%s --help\" per maggiori informazioni.\n" -#: pg_controldata.c:112 +#: pg_controldata.c:138 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" -msgstr "%s: impossibile aprire il file \"%s\" in lettura: %s\n" +msgstr "%s: errore nell'apertura del file \"%s\" per la lettura: %s\n" -#: pg_controldata.c:119 +#: pg_controldata.c:145 #, c-format msgid "%s: could not read file \"%s\": %s\n" -msgstr "%s: impossibile leggere dal file \"%s\": %s\n" +msgstr "%s: lettura del file \"%s\" fallita: %s\n" -#: pg_controldata.c:133 +#: pg_controldata.c:159 #, c-format msgid "" "WARNING: Calculated CRC checksum does not match value stored in file.\n" @@ -135,15 +144,15 @@ msgid "" msgstr "" "ATTENZIONE: La somma di controllo CRC non corrisponde al valore memorizzato nel file.\n" "O il file è corrotto oppure ha un formato differente da quello previsto.\n" -"I risultati che ne conseguono sono senza garanzie.\n" +"I risultati seguenti non sono affidabili.\n" "\n" -#: pg_controldata.c:160 +#: pg_controldata.c:186 #, c-format msgid "pg_control version number: %u\n" -msgstr "numero di versione di pg_control: %u\n" +msgstr "Numero di versione di pg_control: %u\n" -#: pg_controldata.c:163 +#: pg_controldata.c:189 #, c-format msgid "" "WARNING: possible byte ordering mismatch\n" @@ -151,185 +160,189 @@ msgid "" "used by this program. In that case the results below would be incorrect, and\n" "the PostgreSQL installation would be incompatible with this data directory.\n" msgstr "" -"Attenzione: possibile errore nel byte ordering\n" -"il byte ordering usato per archiviare il file pg_control potrebbe non corrispondere\n" -"a quello usato da questo programma. In questo caso il risultato qui sotto potrebbe essere non corretto, e\n" -"l'installazione di PostgreSQL potrebbe essere incompatibile con questa directory dei dati.\n" +"ATTENZIONE: possibile errore nel byte ordering\n" +"il byte ordering usato per archiviare il file pg_control potrebbe non\n" +"corrispondere a quello usato da questo programma. In questo caso il risultato\n" +"qui sotto potrebbe essere non corretto, e l'installazione di PostgreSQL\n" +"potrebbe essere incompatibile con questa directory dei dati.\n" -#: pg_controldata.c:167 +#: pg_controldata.c:193 #, c-format msgid "Catalog version number: %u\n" -msgstr "Numero di versione del catalogo: %u\n" +msgstr "Numero di versione del catalogo: %u\n" -#: pg_controldata.c:169 +#: pg_controldata.c:195 #, c-format msgid "Database system identifier: %s\n" -msgstr "Identificatore del sistema di database: %s\n" +msgstr "Identificatore di sistema del database: %s\n" -#: pg_controldata.c:171 +#: pg_controldata.c:197 #, c-format msgid "Database cluster state: %s\n" -msgstr "Stato del cluster di database: %s\n" +msgstr "Stato del cluster di database: %s\n" -#: pg_controldata.c:173 +#: pg_controldata.c:199 #, c-format msgid "pg_control last modified: %s\n" -msgstr "Ultima modifica a pg_control: %s\n" +msgstr "Ultima modifica a pg_control: %s\n" -#: pg_controldata.c:175 +#: pg_controldata.c:201 #, c-format msgid "Latest checkpoint location: %X/%X\n" -msgstr "Ultima posizione del checkpoint: %X/%X\n" +msgstr "Ultima posizione del checkpoint: %X/%X\n" -#: pg_controldata.c:178 +#: pg_controldata.c:204 #, c-format msgid "Prior checkpoint location: %X/%X\n" -msgstr "Posizione precedente del checkpoint: %X/%X\n" +msgstr "Posizione precedente del checkpoint: %X/%X\n" -#: pg_controldata.c:181 +#: pg_controldata.c:207 #, c-format msgid "Latest checkpoint's REDO location: %X/%X\n" -msgstr "Ultima posizione REDO checkpoint: %X/%X\n" +msgstr "Locazione di REDO dell'ultimo checkpoint: %X/%X\n" -#: pg_controldata.c:184 +#: pg_controldata.c:210 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" -msgstr "Ultimo TimeLineID del checkpoint : %u\n" +msgstr "TimeLineId dell'ultimo checkpoint: %u\n" -#: pg_controldata.c:186 +#: pg_controldata.c:212 #, c-format msgid "Latest checkpoint's NextXID: %u/%u\n" -msgstr "Ultimo NextXID checkpoint : %u %u\n" +msgstr "NextXID dell'ultimo checkpoint: %u%u\n" -#: pg_controldata.c:189 +#: pg_controldata.c:215 #, c-format msgid "Latest checkpoint's NextOID: %u\n" -msgstr "Ultimo NextOID checkpoint: %u\n" +msgstr "NextOID dell'ultimo checkpoint: %u\n" -#: pg_controldata.c:191 +#: pg_controldata.c:217 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" -msgstr "Ultimo NextMultiXactId checkpoint: %u\n" +msgstr "NextMultiXactId dell'ultimo checkpoint: %u\n" -#: pg_controldata.c:193 +#: pg_controldata.c:219 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" -msgstr "Ultimo NextMultiOffset checkpoint: %u\n" +msgstr "NextMultiOffset dell'ultimo checkpoint: %u\n" -#: pg_controldata.c:195 +#: pg_controldata.c:221 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" -msgstr "oldestXID dell'ultimo checkpoint: %u\n" +msgstr "oldestXID dell'ultimo checkpoint: %u\n" -#: pg_controldata.c:197 +#: pg_controldata.c:223 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" -msgstr "Database di oldestXID dell'ultimo checkpoint: %u\n" +msgstr "DB dell'oldestXID dell'ultimo checkpoint: %u\n" -#: pg_controldata.c:199 +#: pg_controldata.c:225 #, c-format msgid "Latest checkpoint's oldestActiveXID: %u\n" -msgstr "oldestActiveXID dell'ultimo checkpoint: %u\n" +msgstr "oldestActiveXID dell'ultimo checkpoint: %u\n" -#: pg_controldata.c:201 +#: pg_controldata.c:227 #, c-format msgid "Time of latest checkpoint: %s\n" -msgstr "Orario ultimo checkpoint: %s\n" +msgstr "Orario ultimo checkpoint: %s\n" -#: pg_controldata.c:203 +#: pg_controldata.c:229 #, c-format msgid "Minimum recovery ending location: %X/%X\n" -msgstr "locazione del minimum recovery ending: %X/%X\n" +msgstr "Posizione del minimum recovery ending: %X/%X\n" -#: pg_controldata.c:206 +#: pg_controldata.c:232 #, c-format msgid "Backup start location: %X/%X\n" -msgstr "Locazione dell'inizio del backup: %X/%X\n" +msgstr "Posizione dell'inizio del backup: %X/%X\n" + +#: pg_controldata.c:235 +#, c-format +msgid "Current wal_level setting: %s\n" +msgstr "Impostazione attuale wal_level: %s\n" + +#: pg_controldata.c:237 +#, c-format +msgid "Current max_connections setting: %d\n" +msgstr "Impostazione attuale max_connections: %d\n" -#: pg_controldata.c:209 +#: pg_controldata.c:239 +#, c-format +msgid "Current max_prepared_xacts setting: %d\n" +msgstr "Impostazione attuale max_prepared_xacts: %d\n" + +#: pg_controldata.c:241 +#, c-format +msgid "Current max_locks_per_xact setting: %d\n" +msgstr "Impostazione attuale max_locks_per_xact: %d\n" + +#: pg_controldata.c:243 #, c-format msgid "Maximum data alignment: %u\n" -msgstr "Massimo allineamento per i dati: %u\n" +msgstr "Massimo allineamento dei dati: %u\n" -#: pg_controldata.c:212 +#: pg_controldata.c:246 #, c-format msgid "Database block size: %u\n" -msgstr "Dimensione blocco database: %u\n" +msgstr "Dimensione blocco database: %u\n" -#: pg_controldata.c:214 +#: pg_controldata.c:248 #, c-format msgid "Blocks per segment of large relation: %u\n" -msgstr "Blocchi per segmento grandi relaz.: %u\n" +msgstr "Blocchi per ogni segmento grosse tabelle: %u\n" -#: pg_controldata.c:216 +#: pg_controldata.c:250 #, c-format msgid "WAL block size: %u\n" -msgstr "Dimensione blocco WAL: %u\n" +msgstr "Dimensione blocco WAL: %u\n" -#: pg_controldata.c:218 +#: pg_controldata.c:252 #, c-format msgid "Bytes per WAL segment: %u\n" -msgstr "Byte per segmento WAL: %u\n" +msgstr "Byte per segmento WAL: %u\n" -#: pg_controldata.c:220 +#: pg_controldata.c:254 #, c-format msgid "Maximum length of identifiers: %u\n" -msgstr "Massima lunghezza identificatori: %u\n" +msgstr "Lunghezza massima degli identificatori: %u\n" -#: pg_controldata.c:222 +#: pg_controldata.c:256 #, c-format msgid "Maximum columns in an index: %u\n" -msgstr "Massimo numero di colonne in un indice: %u\n" +msgstr "Massimo numero di colonne in un indice: %u\n" -#: pg_controldata.c:224 +#: pg_controldata.c:258 #, c-format msgid "Maximum size of a TOAST chunk: %u\n" -msgstr "Massima dimensione di un segmento TOAST: %u\n" +msgstr "Massima dimensione di un segmento TOAST: %u\n" -#: pg_controldata.c:226 +#: pg_controldata.c:260 #, c-format msgid "Date/time type storage: %s\n" -msgstr "Memorizzazione tipi Data/ora: %s\n" +msgstr "Memorizzazione per tipi data/ora: %s\n" -#: pg_controldata.c:227 +#: pg_controldata.c:261 msgid "64-bit integers" -msgstr "Interi a 64-bit" +msgstr "interi a 64 bit" -#: pg_controldata.c:227 +#: pg_controldata.c:261 msgid "floating-point numbers" msgstr "numeri in virgola mobile" -#: pg_controldata.c:228 +#: pg_controldata.c:262 #, c-format msgid "Float4 argument passing: %s\n" -msgstr "Passaggio di argomento Float4: %s\n" +msgstr "Passaggio di argomenti Float4: %s\n" -#: pg_controldata.c:229 -#: pg_controldata.c:231 +#: pg_controldata.c:263 pg_controldata.c:265 msgid "by value" msgstr "per valore" -#: pg_controldata.c:229 -#: pg_controldata.c:231 +#: pg_controldata.c:263 pg_controldata.c:265 msgid "by reference" msgstr "per riferimento" -#: pg_controldata.c:230 +#: pg_controldata.c:264 #, c-format msgid "Float8 argument passing: %s\n" -msgstr "Passaggio di argomento Float8: %s\n" - -#~ msgid "Current log file ID: %u\n" -#~ msgstr "Id corrente file di log: %u\n" - -#~ msgid "Latest checkpoint's UNDO location: %X/%X\n" -#~ msgstr "Ultima posizione UNDO checkpoint: %X/%X\n" - -#~ msgid "Maximum number of function arguments: %u\n" -#~ msgstr "N° massimo di argomenti per funzione: %u\n" - -#~ msgid "LC_COLLATE: %s\n" -#~ msgstr "LC_COLLATE: %s\n" - -#~ msgid "LC_CTYPE: %s\n" -#~ msgstr "LC_CTYPE: %s\n" +msgstr "passaggio di argomenti Float8: %s\n" diff --git a/src/bin/pg_controldata/po/ja.po b/src/bin/pg_controldata/po/ja.po index 410dfaa762..af776eab0a 100644 --- a/src/bin/pg_controldata/po/ja.po +++ b/src/bin/pg_controldata/po/ja.po @@ -6,9 +6,10 @@ msgstr "" "Project-Id-Version: PostgreSQL 9.0 beta 3\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" "POT-Creation-Date: 2010-07-20 12:55+0900\n" -"PO-Revision-Date: 2010-07-15 19:00+0900\n" +"PO-Revision-Date: 2011-08-30 21:28+0900\n" "Last-Translator: HOTTA Michihide \n" "Language-Team: jpug-doc \n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -19,9 +20,7 @@ msgstr "" msgid "" "%s displays control information of a PostgreSQL database cluster.\n" "\n" -msgstr "" -"\"%s はPostgreSQLデータベースクラスタの制御情報を表示します。\n" -"\n" +msgstr "%s はPostgreSQLデータベースクラスタの制御情報を表示します。\n\n" #: pg_controldata.c:37 #, c-format diff --git a/src/bin/pg_controldata/po/ko.po b/src/bin/pg_controldata/po/ko.po index ffaea791f4..c8eb34d72d 100644 --- a/src/bin/pg_controldata/po/ko.po +++ b/src/bin/pg_controldata/po/ko.po @@ -9,6 +9,7 @@ msgstr "" "PO-Revision-Date: 2010-09-24 12:36-0400\n" "Last-Translator: EnterpriseDB translation team \n" "Language-Team: EnterpriseDB translation team \n" +"Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=euc-kr\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_controldata/po/pl.po b/src/bin/pg_controldata/po/pl.po new file mode 100644 index 0000000000..6ee53fe8f7 --- /dev/null +++ b/src/bin/pg_controldata/po/pl.po @@ -0,0 +1,348 @@ +# PG_CONTROLDATA Translated Messages into the Polish Language +# Copyright (c) 2005 toczek, xxxtoczekxxx@wp.pl +# Distributed under the same licensing terms as PostgreSQL itself. +# Begina Felicysym , 2011. +msgid "" +msgstr "" +"Project-Id-Version: pg_controldata (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-10-08 08:40+0000\n" +"PO-Revision-Date: 2011-10-09 17:59+0200\n" +"Last-Translator: Begina Felicysym \n" +"Language-Team: Begina Felicysym\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1-beta1\n" + +#: pg_controldata.c:33 +#, c-format +msgid "" +"%s displays control information of a PostgreSQL database cluster.\n" +"\n" +msgstr "" +"%s wyświetla informacje kontrolne klastra bazy danych PostgreSQL.\n" +"\n" + +#: pg_controldata.c:37 +#, c-format +msgid "" +"Usage:\n" +" %s [OPTION] [DATADIR]\n" +"\n" +"Options:\n" +" --help show this help, then exit\n" +" --version output version information, then exit\n" +msgstr "" +"Składnia:\n" +" %s [OPCJA] [KATALOG]\n" +"\n" +"Opcje:\n" +" --help pokaż ekran pomocy i zakończ\n" +" --version wyświetl informacje o wersji i zakończ\n" + +#: pg_controldata.c:45 +#, c-format +msgid "" +"\n" +"If no data directory (DATADIR) is specified, the environment variable " +"PGDATA\n" +"is used.\n" +"\n" +msgstr "" +"\n" +"W przypadku gdy katalog danych nie jest podany (DATADIR), zmienna " +"środowiskowa PGDATA\n" +"jest używana.\n" +"\n" + +#: pg_controldata.c:47 +#, c-format +msgid "Report bugs to .\n" +msgstr "Błędy proszę przesyłać na adres .\n" + +#: pg_controldata.c:57 +msgid "starting up" +msgstr "włączanie" + +#: pg_controldata.c:59 +msgid "shut down" +msgstr "wyłącz bazę danych" + +#: pg_controldata.c:61 +msgid "shut down in recovery" +msgstr "baza danych w trybie odzyskiwania" + +#: pg_controldata.c:63 +msgid "shutting down" +msgstr "wyłączanie bazy danych" + +#: pg_controldata.c:65 +msgid "in crash recovery" +msgstr "w trybie odzyskiwania po awarii programu" + +#: pg_controldata.c:67 +msgid "in archive recovery" +msgstr "w trybie odzyskiwania z archiwum" + +#: pg_controldata.c:69 +msgid "in production" +msgstr "baza danych w trybie produkcji" + +#: pg_controldata.c:71 +msgid "unrecognized status code" +msgstr "nieznany kod statusu" + +#: pg_controldata.c:86 +msgid "unrecognized wal_level" +msgstr "nierozpoznany wal_level" + +#: pg_controldata.c:129 +#, c-format +msgid "%s: no data directory specified\n" +msgstr "%s: katalog danych nie został ustawiony\n" + +#: pg_controldata.c:130 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Spróbuj \"%s --help\" aby uzyskać więcej informacji.\n" + +#: pg_controldata.c:138 +#, 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" + +#: pg_controldata.c:145 +#, c-format +msgid "%s: could not read file \"%s\": %s\n" +msgstr "%s: nie można czytać z pliku \"%s\": %s\n" + +#: pg_controldata.c:159 +#, c-format +msgid "" +"WARNING: Calculated CRC checksum does not match value stored in file.\n" +"Either the file is corrupt, or it has a different layout than this program\n" +"is expecting. The results below are untrustworthy.\n" +"\n" +msgstr "" +"UWAGA: obliczona suma kontrolna CRC pliku nie zgadza się.\n" +"Albo plik jest uszkodzony albo posiada inny układ niż program się " +"spodziewał.\n" +"Rezultaty mogą być niepewne.\n" +"\n" + +#: pg_controldata.c:186 +#, c-format +msgid "pg_control version number: %u\n" +msgstr "pg_control w wersji numer: %u\n" + +#: pg_controldata.c:189 +#, c-format +msgid "" +"WARNING: possible byte ordering mismatch\n" +"The byte ordering used to store the pg_control file might not match the one\n" +"used by this program. In that case the results below would be incorrect, " +"and\n" +"the PostgreSQL installation would be incompatible with this data directory.\n" +msgstr "" +"OSTRZEŻENIE: możliwe niepoprawna kolejność bajtów\n" +"Kolejność bajtów używana do przechowywania plików pg_control może nie " +"pasować\n" +"do używanej przez ten program. W tym przypadku wynik poniżej jest błędny,\n" +"a instalacja PostgreSQL byłaby niezgodna z tym folderem danych.\n" + +#: pg_controldata.c:193 +#, c-format +msgid "Catalog version number: %u\n" +msgstr "Katalog w wersji numer: %u\n" + +#: pg_controldata.c:195 +#, c-format +msgid "Database system identifier: %s\n" +msgstr "Identyfikator systemu bazy danych: %s\n" + +#: pg_controldata.c:197 +#, c-format +msgid "Database cluster state: %s\n" +msgstr "Stan klastra bazy danych: %s\n" + +#: pg_controldata.c:199 +#, c-format +msgid "pg_control last modified: %s\n" +msgstr "pg_control ostatnio modyfikowano: %s\n" + +#: pg_controldata.c:201 +#, c-format +msgid "Latest checkpoint location: %X/%X\n" +msgstr "Najnowsza lokalizacja punktu kontrolnego: %X/%X\n" + +#: pg_controldata.c:204 +#, c-format +msgid "Prior checkpoint location: %X/%X\n" +msgstr "Uprzednia lokalizacja punktu kontrolnego: %X/%X\n" + +#: pg_controldata.c:207 +#, c-format +msgid "Latest checkpoint's REDO location: %X/%X\n" +msgstr "Najnowsza lokalizacja punktu kontrolnego REDO: %X/%X\n" + +#: pg_controldata.c:210 +#, c-format +msgid "Latest checkpoint's TimeLineID: %u\n" +msgstr "TimeLineID najnowszego punktu kontrolnego: %u\n" + +#: pg_controldata.c:212 +#, c-format +msgid "Latest checkpoint's NextXID: %u/%u\n" +msgstr "NextXID najnowszego punktu kontrolnego: %u/%u\n" + +#: pg_controldata.c:215 +#, c-format +msgid "Latest checkpoint's NextOID: %u\n" +msgstr "NextOID najnowszego punktu kontrolnego: %u\n" + +#: pg_controldata.c:217 +#, c-format +msgid "Latest checkpoint's NextMultiXactId: %u\n" +msgstr "NextMultiXactId najnowszego punktu kontrolnego: %u\n" + +#: pg_controldata.c:219 +#, c-format +msgid "Latest checkpoint's NextMultiOffset: %u\n" +msgstr "NextMultiOffset najnowszego punktu kontrolnego: %u\n" + +#: pg_controldata.c:221 +#, c-format +msgid "Latest checkpoint's oldestXID: %u\n" +msgstr "NextXID najnowszego punktu kontrolnego: %u\n" + +#: pg_controldata.c:223 +#, c-format +msgid "Latest checkpoint's oldestXID's DB: %u\n" +msgstr "DB oldestXID'u najnowszego punktu kontrolnego: %u\n" + +#: pg_controldata.c:225 +#, c-format +msgid "Latest checkpoint's oldestActiveXID: %u\n" +msgstr "oldestActiveXID najnowszego punktu kontrolnego: %u\n" + +#: pg_controldata.c:227 +#, c-format +msgid "Time of latest checkpoint: %s\n" +msgstr "Czas najnowszego punktu kontrolnego: %s\n" + +#: pg_controldata.c:229 +#, c-format +msgid "Minimum recovery ending location: %X/%X\n" +msgstr "Położenie zakończenia odzyskiwania minimalnego: %X/%X\n" + +#: pg_controldata.c:232 +#, c-format +msgid "Backup start location: %X/%X\n" +msgstr "Położenie początku kopii zapasowej: %X/%X\n" + +#: pg_controldata.c:235 +#, c-format +msgid "Current wal_level setting: %s\n" +msgstr "Aktualne ustawienie wal_level: %s\n" + +#: pg_controldata.c:237 +#, c-format +msgid "Current max_connections setting: %d\n" +msgstr "Aktualne ustawienie max_connections: %d\n" + +#: pg_controldata.c:239 +#, c-format +msgid "Current max_prepared_xacts setting: %d\n" +msgstr "Aktualne ustawienie max_prepared_xacts: %d\n" + +#: pg_controldata.c:241 +#, c-format +msgid "Current max_locks_per_xact setting: %d\n" +msgstr "Aktualne ustawienie max_locks_per_xact: %d\n" + +#: pg_controldata.c:243 +#, c-format +msgid "Maximum data alignment: %u\n" +msgstr "Maksymalne wyrównanie danych: %u\n" + +#: pg_controldata.c:246 +#, c-format +msgid "Database block size: %u\n" +msgstr "Wielkość bloku bazy danych: %u\n" + +#: pg_controldata.c:248 +#, c-format +msgid "Blocks per segment of large relation: %u\n" +msgstr "Bloki na segment są w relacji: %u\n" + +#: pg_controldata.c:250 +#, c-format +msgid "WAL block size: %u\n" +msgstr "Wielkość bloku WAL: %u\n" + +#: pg_controldata.c:252 +#, c-format +msgid "Bytes per WAL segment: %u\n" +msgstr "Bajtów na segment WAL: %u\n" + +#: pg_controldata.c:254 +#, c-format +msgid "Maximum length of identifiers: %u\n" +msgstr "Maksymalna długość identyfikatorów: %u\n" + +#: pg_controldata.c:256 +#, c-format +msgid "Maximum columns in an index: %u\n" +msgstr "Maksymalna liczba kolumn w indeksie: %u\n" + +#: pg_controldata.c:258 +#, c-format +msgid "Maximum size of a TOAST chunk: %u\n" +msgstr "Maksymalny rozmiar fragmentu TOAST: %u\n" + +#: pg_controldata.c:260 +#, c-format +msgid "Date/time type storage: %s\n" +msgstr "Typ przechowywania daty/czasu: %s\n" + +#: pg_controldata.c:261 +msgid "64-bit integers" +msgstr "64-bitowe zmienne integer" + +#: pg_controldata.c:261 +msgid "floating-point numbers" +msgstr "liczby zmiennoprzecinkowe" + +#: pg_controldata.c:262 +#, c-format +msgid "Float4 argument passing: %s\n" +msgstr "Przekazywanie parametru float4: %s\n" + +#: pg_controldata.c:263 pg_controldata.c:265 +msgid "by value" +msgstr "przez wartość" + +#: pg_controldata.c:263 pg_controldata.c:265 +msgid "by reference" +msgstr "przez referencję" + +#: pg_controldata.c:264 +#, c-format +msgid "Float8 argument passing: %s\n" +msgstr "Przekazywanie parametru float8: %s\n" + +#~ msgid "Latest checkpoint's UNDO location: %X/%X\n" +#~ msgstr "Najnowsza lokalizacja punktu kontrolnego UNDO: %X/%X\n" + +#~ msgid "Maximum number of function arguments: %u\n" +#~ msgstr "Maksymalna ilość argumentów funkcji: %u\n" + +#~ msgid "LC_COLLATE: %s\n" +#~ msgstr "LC_COLLATE: %s\n" + +#~ msgid "LC_CTYPE: %s\n" +#~ msgstr "LC_CTYPE: %s\n" diff --git a/src/bin/pg_controldata/po/pt_BR.po b/src/bin/pg_controldata/po/pt_BR.po index d54f4dd69c..9354a311dd 100644 --- a/src/bin/pg_controldata/po/pt_BR.po +++ b/src/bin/pg_controldata/po/pt_BR.po @@ -1,11 +1,13 @@ -# "pg_controldata" translation to Brazilian Portuguese Language. +# Brazilian Portuguese message translation file for pg_controldata +# Copyright (C) 2009 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. # Cesar Suga , 2002. # Roberto Mello , 2002. -# Euler Taveira de Oliveira , 2003-2010. +# Euler Taveira de Oliveira , 2003-2011. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" "POT-Creation-Date: 2010-07-26 15:07-0300\n" "PO-Revision-Date: 2005-10-04 23:00-0300\n" diff --git a/src/bin/pg_controldata/po/ro.po b/src/bin/pg_controldata/po/ro.po index c7c93e1530..dbfdce5d2a 100644 --- a/src/bin/pg_controldata/po/ro.po +++ b/src/bin/pg_controldata/po/ro.po @@ -9,6 +9,7 @@ msgstr "" "PO-Revision-Date: 2010-09-05 15:48-0000\n" "Last-Translator: Max \n" "Language-Team: Română \n" +"Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_controldata/po/ru.po b/src/bin/pg_controldata/po/ru.po index 9d70061825..0c94f51ce4 100644 --- a/src/bin/pg_controldata/po/ru.po +++ b/src/bin/pg_controldata/po/ru.po @@ -4,28 +4,33 @@ # pgtranslation Id: pg_controldata.po,v 1.3 2011/05/14 01:57:42 alvherre Exp $ # # ChangeLog: -# - January 27, 2011: improvments by Andrey Sudnik for 9.x -# - December, 2004: Corrections and improvements by Oleg Bartunov -# - March 27 - September 24, 2004: Updates for 8.0; -# - July 24 - August 23, 2003: Updates for 7.4.*; -# - September 7, 2002: Complete post 7.3beta1 Translation, Serguei A. Mokhov -# - August 31, 2002: Initial Translation, Serguei A. Mokhov # +# - April 2, 2012: Bug fixes. Alexander Lakhin . +# - February 17, 2012: Minor fixes. Alexander Lakhin . +# - January 27, 2011: improvments by Andrey Sudnik for 9.x . +# - December, 2004: Corrections and improvements by Oleg Bartunov . +# - March 27 - September 24, 2004: Updates for 8.0; . +# - July 24 - August 23, 2003: Updates for 7.4.*; . +# - September 7, 2002: Complete post 7.3beta1 Translation, Serguei A. Mokhov . +# - August 31, 2002: Initial Translation, Serguei A. Mokhov . msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.x\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2011-05-13 20:40+0000\n" -"PO-Revision-Date: 2011-01-27 02:40+0700\n" -"Last-Translator: Andrey Sudnik \n" -"Language-Team: pgsql-ru-general \n" -"Language: \n" +"POT-Creation-Date: 2012-07-10 22:28+0000\n" +"PO-Revision-Date: 2012-04-02 19:16+0400\n" +"Last-Translator: Alexander Lakhin \n" +"Language-Team: Russian \n" +"Language: ru\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Russian\n" "X-Poedit-Country: RUSSIAN FEDERATION\n" "X-Poedit-SourceCharset: utf-8\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 1.4\n" #: pg_controldata.c:33 #, c-format @@ -33,7 +38,7 @@ msgid "" "%s displays control information of a PostgreSQL database cluster.\n" "\n" msgstr "" -"%s показывает информацию по управлению кластером баз PostgreSQL.\n" +"%s показывает информацию о работе кластера баз PostgreSQL.\n" "\n" #: pg_controldata.c:37 @@ -47,12 +52,11 @@ msgid "" " --version output version information, then exit\n" msgstr "" "Использование:\n" -" %s [OPTION] [DATADIR]\n" +" %s [ПАРАМЕТР] [КАТАЛОГ_ДАННЫХ]\n" "\n" -"Опции:\n" -" --help показать эту подсказку и выйти\n" +"Параметры:\n" +" --help показать эту справку и выйти\n" " --version показать версию и выйти\n" -"\n" #: pg_controldata.c:45 #, c-format @@ -64,14 +68,14 @@ msgid "" "\n" msgstr "" "\n" -"Если директория данных (DATADIR) не указана, будет использоваться значение\n" -"переменной окружения PGDATA.\n" +"Если каталог данных не задан, используется значение переменной окружения " +"PGDATA.\n" "\n" #: pg_controldata.c:47 #, c-format msgid "Report bugs to .\n" -msgstr "Сообщать об ошибках: .\n" +msgstr "Об ошибках сообщайте по адресу .\n" #: pg_controldata.c:57 msgid "starting up" @@ -79,23 +83,23 @@ msgstr "запускается" #: pg_controldata.c:59 msgid "shut down" -msgstr "остановлен" +msgstr "выключен" #: pg_controldata.c:61 msgid "shut down in recovery" -msgstr "восстановление из-за выключения" +msgstr "выключен при восстановлении" #: pg_controldata.c:63 msgid "shutting down" -msgstr "останавливается" +msgstr "выключение" #: pg_controldata.c:65 msgid "in crash recovery" -msgstr "восстановление из-за падения" +msgstr "восстановление после сбоя" #: pg_controldata.c:67 msgid "in archive recovery" -msgstr "восстановление из-за архивации" +msgstr "восстановление из архива" #: pg_controldata.c:69 msgid "in production" @@ -103,21 +107,21 @@ msgstr "в работе" #: pg_controldata.c:71 msgid "unrecognized status code" -msgstr "не распознанный код статуса" +msgstr "нераспознанный код состояния" #: pg_controldata.c:86 msgid "unrecognized wal_level" -msgstr "не распознанный wal_level" +msgstr "нераспознанный уровень WAL" #: pg_controldata.c:129 #, c-format msgid "%s: no data directory specified\n" -msgstr "%s: директория данных не указана\n" +msgstr "%s: каталог данных не указан\n" #: pg_controldata.c:130 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Наберите \"%s --help\" для более подробной информации.\n" +msgstr "Для дополнительной информации попробуйте \"%s --help\".\n" #: pg_controldata.c:138 #, c-format @@ -127,7 +131,7 @@ msgstr "%s: не удалось открыть файл \"%s\" для чтени #: pg_controldata.c:145 #, c-format msgid "%s: could not read file \"%s\": %s\n" -msgstr "%s: не удалось считать файл \"%s\": %s\n" +msgstr "%s: не удалось прочитать файл \"%s\": %s\n" #: pg_controldata.c:159 #, c-format @@ -137,11 +141,9 @@ msgid "" "is expecting. The results below are untrustworthy.\n" "\n" msgstr "" -"ВНИМАНИЕ: Вычисленная контрольная сумма CRC не совпадает со значением в " -"файле.\n" -"Файл либо повреждён, либо его формат отличается от ожидаемого этой " -"программой.\n" -"Не стоит доверять результатам представленным ниже.\n" +"ВНИМАНИЕ: Вычисленная контрольная сумма не совпадает со значением в файле.\n" +"Либо файл повреждён, либо его формат отличается от ожидаемого.\n" +"Следующая информация может быть недостоверной.\n" "\n" #: pg_controldata.c:186 @@ -158,12 +160,10 @@ msgid "" "and\n" "the PostgreSQL installation would be incompatible with this data directory.\n" msgstr "" -"ВНИМАНИЕ: возможно ошибка порядка следования байт\n" -"Порядок следования байт используемый в файле pg_control может не " -"соответствовать\n" -"тому, который используется этой программой. В этом случае результаты будут " -"неверными и\n" -"установленный PostgreSQL будет несовместим с этой директорией данных.\n" +"ВНИМАНИЕ: возможно несоответствие порядка байт\n" +"Порядок байт в файле pg_control может не соответствовать используемому\n" +"этой программой. В этом случае результаты будут неверными и\n" +"установленный PostgreSQL будет несовместим с этим каталогом данных.\n" #: pg_controldata.c:193 #, c-format @@ -178,7 +178,7 @@ msgstr "Идентификатор системы баз данных: %s\n" #: pg_controldata.c:197 #, c-format msgid "Database cluster state: %s\n" -msgstr "Состояние кластера базы: %s\n" +msgstr "Состояние кластера БД: %s\n" #: pg_controldata.c:199 #, c-format @@ -188,117 +188,117 @@ msgstr "Последнее обновление pg_control: %s\n" #: pg_controldata.c:201 #, c-format msgid "Latest checkpoint location: %X/%X\n" -msgstr "Положение последней checkpoint: %X/%X\n" +msgstr "Положение последней конт. точки: %X/%X\n" #: pg_controldata.c:204 #, c-format msgid "Prior checkpoint location: %X/%X\n" -msgstr "Положение предыдущей checkpoint: %X/%X\n" +msgstr "Положение предыдущей конт. точки: %X/%X\n" #: pg_controldata.c:207 #, c-format msgid "Latest checkpoint's REDO location: %X/%X\n" -msgstr "Положение REDO последнего чекпоинта: %X/%X\n" +msgstr "Положение REDO последней конт. точки: %X/%X\n" #: pg_controldata.c:210 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" -msgstr "TimeLineID последней checkpoint: %u\n" +msgstr "Линия времени последней конт. точки: %u\n" #: pg_controldata.c:212 #, c-format msgid "Latest checkpoint's NextXID: %u/%u\n" -msgstr "NextXID последней контрольной точки: %u/%u\n" +msgstr "NextXID последней конт. точки: %u/%u\n" #: pg_controldata.c:215 #, c-format msgid "Latest checkpoint's NextOID: %u\n" -msgstr "NextOID последней checkpoint: %u\n" +msgstr "NextOID последней конт. точки: %u\n" #: pg_controldata.c:217 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" -msgstr "NextMultiXactId последней контрольной точки: %u\n" +msgstr "NextMultiXactId послед. конт. точки: %u\n" #: pg_controldata.c:219 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" -msgstr "NextMultiOffset последней контрольной точки: %u\n" +msgstr "NextMultiOffset послед. конт. точки: %u\n" #: pg_controldata.c:221 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" -msgstr "Последней oldestXID чекпоинта: %u\n" +msgstr "oldestXID последней конт. точки: %u\n" #: pg_controldata.c:223 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" -msgstr "Последний DB oldestXID-а чекпоинта: %u\n" +msgstr "БД с oldestXID последней конт. точки: %u\n" #: pg_controldata.c:225 #, c-format msgid "Latest checkpoint's oldestActiveXID: %u\n" -msgstr "Последней oldestActiveXID чекпоинта: %u\n" +msgstr "oldestActiveXID последней к.т.: %u\n" #: pg_controldata.c:227 #, c-format msgid "Time of latest checkpoint: %s\n" -msgstr "Время последней checkpoint: %s\n" +msgstr "Время последней контрольной точки: %s\n" #: pg_controldata.c:229 #, c-format msgid "Minimum recovery ending location: %X/%X\n" -msgstr "Минимальное расположение конца восстановления: %X/%X\n" +msgstr "Мин. положение конца восстановления: %X/%X\n" #: pg_controldata.c:232 #, c-format msgid "Backup start location: %X/%X\n" -msgstr "Начало расположения бэкапа: %X/%X\n" +msgstr "Положение начала копии: %X/%X\n" #: pg_controldata.c:235 #, c-format msgid "Current wal_level setting: %s\n" -msgstr "Текущее значение wal_level: %s\n" +msgstr "Текущее значение wal_level: %s\n" #: pg_controldata.c:237 #, c-format msgid "Current max_connections setting: %d\n" -msgstr "Текущее значение max_connections: %d\n" +msgstr "Текущее значение max_connections: %d\n" #: pg_controldata.c:239 #, c-format msgid "Current max_prepared_xacts setting: %d\n" -msgstr "Текущее значение max_prepared_xacts: %d\n" +msgstr "Текущее значение max_prepared_xacts: %d\n" #: pg_controldata.c:241 #, c-format msgid "Current max_locks_per_xact setting: %d\n" -msgstr "Текущее значение max_locks_per_xact: %d\n" +msgstr "Текущее значение max_locks_per_xact: %d\n" #: pg_controldata.c:243 #, c-format msgid "Maximum data alignment: %u\n" -msgstr "Максимальный размер выравнивания данных: %u\n" +msgstr "Макс. предел выравнивания данных: %u\n" #: pg_controldata.c:246 #, c-format msgid "Database block size: %u\n" -msgstr "Размер блока базы: %u\n" +msgstr "Размер блока БД: %u\n" #: pg_controldata.c:248 #, c-format msgid "Blocks per segment of large relation: %u\n" -msgstr "Блоков на сегмент большого отношения: %u\n" +msgstr "Блоков в макс. сегменте отношений: %u\n" #: pg_controldata.c:250 #, c-format msgid "WAL block size: %u\n" -msgstr "Размер блока WAL: %u\n" +msgstr "Размер блока WAL: %u\n" #: pg_controldata.c:252 #, c-format msgid "Bytes per WAL segment: %u\n" -msgstr "Количество байт на сегмент WAL: %u\n" +msgstr "Байт в сегменте WAL: %u\n" #: pg_controldata.c:254 #, c-format @@ -308,12 +308,12 @@ msgstr "Максимальная длина идентификаторов: %u #: pg_controldata.c:256 #, c-format msgid "Maximum columns in an index: %u\n" -msgstr "Максимальное число колонок в индексе: %u\n" +msgstr "Максимальное число колонок в индексе: %u\n" #: pg_controldata.c:258 #, c-format msgid "Maximum size of a TOAST chunk: %u\n" -msgstr "Максимальный размер порции TOAST: %u\n" +msgstr "Максимальный размер порции TOAST: %u\n" #: pg_controldata.c:260 #, c-format @@ -326,12 +326,12 @@ msgstr "64-битные целые" #: pg_controldata.c:261 msgid "floating-point numbers" -msgstr "числа с плавающей запятой" +msgstr "числа с плавающей точкой" #: pg_controldata.c:262 #, c-format msgid "Float4 argument passing: %s\n" -msgstr "Float4 прохождение аргумента: %s\n" +msgstr "Передача аргумента Float4: %s\n" #: pg_controldata.c:263 pg_controldata.c:265 msgid "by value" @@ -344,22 +344,4 @@ msgstr "по ссылке" #: pg_controldata.c:264 #, c-format msgid "Float8 argument passing: %s\n" -msgstr "Float8 прохождение аргумента: %s\n" - -#~ msgid "Next log file segment: %u\n" -#~ msgstr "Следующий сегмент файла журнала: %u\n" - -#~ msgid "Latest checkpoint's UNDO location: %X/%X\n" -#~ msgstr "Положение UNDO последней checkpoint: %X/%X\n" - -#~ msgid "Maximum number of function arguments: %u\n" -#~ msgstr "Максимальное число аргументов функции: %u\n" - -#~ msgid "Maximum length of locale name: %u\n" -#~ msgstr "Максимальная длина имени локали: %u\n" - -#~ msgid "LC_COLLATE: %s\n" -#~ msgstr "LC_COLLATE: %s\n" - -#~ msgid "LC_CTYPE: %s\n" -#~ msgstr "LC_CTYPE: %s\n" +msgstr "Передача аргумента Float8: %s\n" diff --git a/src/bin/pg_controldata/po/sv.po b/src/bin/pg_controldata/po/sv.po deleted file mode 100644 index 467033d1cd..0000000000 --- a/src/bin/pg_controldata/po/sv.po +++ /dev/null @@ -1,279 +0,0 @@ -# Swedish message translation file for pg_controldata -# This file is put in the public domain. -# Dennis Bj�rklund , 2002, 2003, 2004, 2005, 2006. -# -msgid "" -msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" -"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2009-06-13 17:07+0000\n" -"PO-Revision-Date: 2009-06-13 22:37+0300\n" -"Last-Translator: Peter Eisentraut \n" -"Language-Team: Swedish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" - -#: pg_controldata.c:24 -#, c-format -msgid "" -"%s displays control information of a PostgreSQL database cluster.\n" -"\n" -msgstr "" -"%s visar kontrollinformation om ett PostgreSQL-databaskluster.\n" -"\n" - -#: pg_controldata.c:28 -#, c-format -msgid "" -"Usage:\n" -" %s [OPTION] [DATADIR]\n" -"\n" -"Options:\n" -" --help show this help, then exit\n" -" --version output version information, then exit\n" -msgstr "" -"Anv�ndning:\n" -" %s [FLAGGA] [DATAKAT]\n" -"\n" -"Flaggor:\n" -" --help visa denna hj�lp, avsluta sedan\n" -" --version visa versionsinformation, avsluta sedan\n" - -#: pg_controldata.c:36 -#, c-format -msgid "" -"\n" -"If no data directory (DATADIR) is specified, the environment variable " -"PGDATA\n" -"is used.\n" -"\n" -msgstr "" -"\n" -"Om ingen datakatalog (DATAKAT) har angivits s� anv�nds omgivningsvariabeln\n" -"PGDATA f�r detta.\n" -"\n" - -#: pg_controldata.c:38 -#, c-format -msgid "Report bugs to .\n" -msgstr "Rapportera fel till .\n" - -#: pg_controldata.c:48 -msgid "starting up" -msgstr "startar upp" - -#: pg_controldata.c:50 -msgid "shut down" -msgstr "nedst�ngd" - -#: pg_controldata.c:52 -msgid "shutting down" -msgstr "st�nger ner" - -#: pg_controldata.c:54 -msgid "in crash recovery" -msgstr "i �terst�llande efter krash" - -#: pg_controldata.c:56 -msgid "in archive recovery" -msgstr "i arkiv�terst�llning" - -#: pg_controldata.c:58 -msgid "in production" -msgstr "i produktion" - -#: pg_controldata.c:60 -msgid "unrecognized status code" -msgstr "Ej igenk�nd statuskod" - -#: pg_controldata.c:103 -#, c-format -msgid "%s: no data directory specified\n" -msgstr "%s: ingen datakatalog angiven\n" - -#: pg_controldata.c:104 -#, c-format -msgid "Try \"%s --help\" for more information.\n" -msgstr "F�rs�k med '%s --help' f�r mer information.\n" - -#: pg_controldata.c:112 -#, c-format -msgid "%s: could not open file \"%s\" for reading: %s\n" -msgstr "%s: kunde inte �ppna filen \"%s\" f�r l�sning: %s\n" - -#: pg_controldata.c:119 -#, c-format -msgid "%s: could not read file \"%s\": %s\n" -msgstr "%s: kunde inte l�sa filen \"%s\": %s\n" - -#: pg_controldata.c:133 -#, c-format -msgid "" -"WARNING: Calculated CRC checksum does not match value stored in file.\n" -"Either the file is corrupt, or it has a different layout than this program\n" -"is expecting. The results below are untrustworthy.\n" -"\n" -msgstr "" -"VARNING: Ber�knad CRC-kontrollsumma matchar inte v�rdet som sparats i " -"filen.\n" -"Antingen �r filen trasig, eller s� har den en annan uppbyggnad �n vad detta\n" -"program f�rv�ntade sig. Resultatet nedan �r inte helt tillf�rlitligt.\n" -"\n" - -#: pg_controldata.c:160 -#, c-format -msgid "pg_control version number: %u\n" -msgstr "pg_control versionsnummer: %u\n" - -#: pg_controldata.c:163 -#, c-format -msgid "" -"WARNING: possible byte ordering mismatch\n" -"The byte ordering used to store the pg_control file might not match the one\n" -"used by this program. In that case the results below would be incorrect, " -"and\n" -"the PostgreSQL installation would be incompatible with this data directory.\n" -msgstr "" - -#: pg_controldata.c:167 -#, c-format -msgid "Catalog version number: %u\n" -msgstr "Katalogversionsnummer: %u\n" - -#: pg_controldata.c:169 -#, c-format -msgid "Database system identifier: %s\n" -msgstr "Databasens systemidentifierare: %s\n" - -#: pg_controldata.c:171 -#, c-format -msgid "Database cluster state: %s\n" -msgstr "Databasens klustertillst�nd: %s\n" - -#: pg_controldata.c:173 -#, c-format -msgid "pg_control last modified: %s\n" -msgstr "pg_control �ndrades senast: %s\n" - -#: pg_controldata.c:175 -#, c-format -msgid "Latest checkpoint location: %X/%X\n" -msgstr "Senaste kontrollpunktsposition: %X/%X\n" - -#: pg_controldata.c:178 -#, c-format -msgid "Prior checkpoint location: %X/%X\n" -msgstr "Tidigare kontrollpunktsposition: %X/%X\n" - -#: pg_controldata.c:181 -#, c-format -msgid "Latest checkpoint's REDO location: %X/%X\n" -msgstr "Senaste kontrollpunktens REDO-pos: %X/%X\n" - -#: pg_controldata.c:184 -#, c-format -msgid "Latest checkpoint's TimeLineID: %u\n" -msgstr "Senaste kontrollpunktens TimeLineID: %u\n" - -#: pg_controldata.c:186 -#, c-format -msgid "Latest checkpoint's NextXID: %u/%u\n" -msgstr "Senaste kontrollpunktens NextXID: %u/%u\n" - -#: pg_controldata.c:189 -#, c-format -msgid "Latest checkpoint's NextOID: %u\n" -msgstr "Senaste kontrollpunktens NextOID: %u\n" - -# FIXME: Wider then the rest of the items -#: pg_controldata.c:191 -#, c-format -msgid "Latest checkpoint's NextMultiXactId: %u\n" -msgstr "Senaste kontrollpunktens NextMultiXactId: %u\n" - -#: pg_controldata.c:193 -#, c-format -msgid "Latest checkpoint's NextMultiOffset: %u\n" -msgstr "Senaste kontrollpunktens NextMultiOffse: %u\n" - -#: pg_controldata.c:195 -#, c-format -msgid "Time of latest checkpoint: %s\n" -msgstr "Tidpunkt f�r senaste kontrollpunkt: %s\n" - -#: pg_controldata.c:197 -#, c-format -msgid "Minimum recovery ending location: %X/%X\n" -msgstr "Minsta �terst�llningsslutposition: %X/%X\n" - -#: pg_controldata.c:200 -#, c-format -msgid "Maximum data alignment: %u\n" -msgstr "Maximal data-alignment: %u\n" - -#: pg_controldata.c:203 -#, c-format -msgid "Database block size: %u\n" -msgstr "Databasens blockstorlek: %u\n" - -#: pg_controldata.c:205 -#, c-format -msgid "Blocks per segment of large relation: %u\n" -msgstr "Block per segment i en stor relation: %u\n" - -#: pg_controldata.c:207 -#, c-format -msgid "WAL block size: %u\n" -msgstr "WAL-blockstorlek: %u\n" - -#: pg_controldata.c:209 -#, c-format -msgid "Bytes per WAL segment: %u\n" -msgstr "Bytes per WAL-segment: %u\n" - -#: pg_controldata.c:211 -#, c-format -msgid "Maximum length of identifiers: %u\n" -msgstr "Maximal l�ngd f�r identifierare: %u\n" - -#: pg_controldata.c:213 -#, c-format -msgid "Maximum columns in an index: %u\n" -msgstr "Maximalt antal kolumner i index: %u\n" - -#: pg_controldata.c:215 -#, c-format -msgid "Maximum size of a TOAST chunk: %u\n" -msgstr "Maximal storlek av TOAST-bit: %u\n" - -#: pg_controldata.c:217 -#, c-format -msgid "Date/time type storage: %s\n" -msgstr "Datum/tid-representation: %s\n" - -#: pg_controldata.c:218 -msgid "64-bit integers" -msgstr "64-bits heltal" - -#: pg_controldata.c:218 -msgid "floating-point numbers" -msgstr "flyttalsnummer" - -#: pg_controldata.c:219 -#, fuzzy, c-format -msgid "Float4 argument passing: %s\n" -msgstr "Maximal data-alignment: %u\n" - -#: pg_controldata.c:220 pg_controldata.c:222 -msgid "by value" -msgstr "" - -#: pg_controldata.c:220 pg_controldata.c:222 -msgid "by reference" -msgstr "" - -#: pg_controldata.c:221 -#, fuzzy, c-format -msgid "Float8 argument passing: %s\n" -msgstr "Maximal data-alignment: %u\n" diff --git a/src/bin/pg_controldata/po/ta.po b/src/bin/pg_controldata/po/ta.po deleted file mode 100644 index 0b0914d783..0000000000 --- a/src/bin/pg_controldata/po/ta.po +++ /dev/null @@ -1,267 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# This file is put in the public domain. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: போஸ்ட்கிரெஸ் தமிழாக்கக் குழு\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-09-22 03:19-0300\n" -"PO-Revision-Date: 2007-10-18 23:36+0530\n" -"Last-Translator: ஆமாச்சு \n" -"Language-Team: தமிழ் \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Tamil\n" -"X-Poedit-Country: INDIA\n" -"X-Poedit-SourceCharset: utf-8\n" - -#: pg_controldata.c:24 -#, c-format -msgid "" -"%s displays control information of a PostgreSQL database cluster.\n" -"\n" -msgstr "" -"%s போஸ்டகிரெஸ் தரவுக் கள குழுமத்தின் நிர்வாகத் தகவலைக் காட்டும்.\n" -"\n" - -#: pg_controldata.c:28 -#, c-format -msgid "" -"Usage:\n" -" %s [OPTION] [DATADIR]\n" -"\n" -"Options:\n" -" --help show this help, then exit\n" -" --version output version information, then exit\n" -msgstr "" -"பயன்பாடு:\n" -" %s [OPTION] [DATADIR]\n" -"\n" -"தேர்வுகள்:\n" -" --help இவ்வுதவியினைக் காட்டிவிட்டு வெளிவரவும்\n" -" --version வெளியீட்டு தகவலை வெளியிட்டு விட்டு வெளிவரவும்\n" - -#: pg_controldata.c:36 -#, c-format -msgid "" -"\n" -"If no data directory (DATADIR) is specified, the environment variable PGDATA\n" -"is used.\n" -"\n" -msgstr "" -"\n" -" எந்த வொரு அடைவும் (DATADIR) குறிப்பிடாது இருந்தால், சூழல் மாறி PGDATA\n" -" பயன் படுத்தப் படும்.\n" -" \n" - -#: pg_controldata.c:38 -#, c-format -msgid "Report bugs to .\n" -msgstr "வழுக்களை க்குத் தெரியப் படுத்துக.\n" - -#: pg_controldata.c:48 -msgid "starting up" -msgstr "துவக்கப் படுகிறது" - -#: pg_controldata.c:50 -msgid "shut down" -msgstr "நிறுத்துக" - -#: pg_controldata.c:52 -msgid "shutting down" -msgstr "நிறுத்தப் படுகிறது" - -#: pg_controldata.c:54 -msgid "in crash recovery" -msgstr "நிலைகுலைவிலிருந்து மீட்கப் படுகிறது" - -#: pg_controldata.c:56 -msgid "in archive recovery" -msgstr "பெட்டக மீட்பில்" - -#: pg_controldata.c:58 -msgid "in production" -msgstr "நிகழ்வில்" - -#: pg_controldata.c:60 -msgid "unrecognized status code" -msgstr "இனங்காண இயலாத நிலைக் குறியீடு" - -#: pg_controldata.c:102 -#, c-format -msgid "%s: no data directory specified\n" -msgstr "%s: தரவுக்கான அடைவு எதுவும் குறிப்பிடப் படவில்லை\n" - -#: pg_controldata.c:103 -#, c-format -msgid "Try \"%s --help\" for more information.\n" -msgstr "மேலும் விவரங்களுக்கு \"%s --help\" முயற்சி செய்யவும்\n" - -#: pg_controldata.c:111 -#, c-format -msgid "%s: could not open file \"%s\" for reading: %s\n" -msgstr "\"%s\" கோப்பினை வாசிக்கும் %s பொருட்டு திறக்க இயலவில்லை%s\n" - -#: pg_controldata.c:118 -#, c-format -msgid "%s: could not read file \"%s\": %s\n" -msgstr "%s: \"%s\": %s கோப்பினை வாசிக்க இயலவில்லை\n" - -#: pg_controldata.c:132 -#, c-format -msgid "" -"WARNING: Calculated CRC checksum does not match value stored in file.\n" -"Either the file is corrupt, or it has a different layout than this program\n" -"is expecting. The results below are untrustworthy.\n" -"\n" -msgstr "" -"எச்சரிக்கை: CRC சோதனைக்கூட்டலின் மதிப்பு கோப்பில் சேமிக்கப் பட்ட மதிப்புடன் பொருந்தவில்லை.\n" -" ஒன்று கோப்பு கெட்டுப் போயிருக்க வேண்டும், அல்லது இந்நிரல்\n" -" எதிர்பார்ப்பதைக் காட்டிலும் வேறொரு வரைமுறையைக் கொண்டிருத்தல் வேண்டும். கீழ்காணும் முடிவுகளை நம்ப முடியவில்லை.\n" -"\n" - -#: pg_controldata.c:152 -#, c-format -msgid "pg_control version number: %u\n" -msgstr "pg_control வெளியீட்டு எண்: %u\n" - -#: pg_controldata.c:154 -#, c-format -msgid "Catalog version number: %u\n" -msgstr "காடலாக் வெளியீட்டு எண்: %u\n" - -#: pg_controldata.c:156 -#, c-format -msgid "Database system identifier: %s\n" -msgstr "தரவுத் தள அமைப்பின் அடையாளங்காட்டி: %s\n" - -#: pg_controldata.c:158 -#, c-format -msgid "Database cluster state: %s\n" -msgstr "தரவுக் கள கூட்டமைப்பின் நிலை: %s\n" - -#: pg_controldata.c:160 -#, c-format -msgid "pg_control last modified: %s\n" -msgstr "கடைசியாக மாற்றப் பட்ட pg_control: %s\n" - -#: pg_controldata.c:162 -#, c-format -msgid "Latest checkpoint location: %X/%X\n" -msgstr "நவீன சோதனை மையத்தின் இருப்பிடம்: %X/%X\n" - -#: pg_controldata.c:165 -#, c-format -msgid "Prior checkpoint location: %X/%X\n" -msgstr "முந்தைய சோதனை மையத்தின் இருப்பிடம்: %X/%X\n" - -#: pg_controldata.c:168 -#, c-format -msgid "Latest checkpoint's REDO location: %X/%X\n" -msgstr "நவீன மையத்தின் REDO இருப்பிடம்: %X/%X\n" - -#: pg_controldata.c:171 -#, c-format -msgid "Latest checkpoint's TimeLineID: %u\n" -msgstr "நவீன சோதனை மையத்தின் TimeLineID: %u\n" - -#: pg_controldata.c:173 -#, c-format -msgid "Latest checkpoint's NextXID: %u/%u\n" -msgstr "நவீன சோதனை மையத்தின் NextXID: %u/%u\n" - -#: pg_controldata.c:176 -#, c-format -msgid "Latest checkpoint's NextOID: %u\n" -msgstr "நவீன சோதனை மையத்தின் NextOID: %u\n" - -#: pg_controldata.c:178 -#, c-format -msgid "Latest checkpoint's NextMultiXactId: %u\n" -msgstr "நவீன சோதனை மையத்தின் NextMultiXactId: %u\n" - -#: pg_controldata.c:180 -#, c-format -msgid "Latest checkpoint's NextMultiOffset: %u\n" -msgstr "நவீன சோதனை மையத்தின் NextMultiOffset: %u\n" - -#: pg_controldata.c:182 -#, c-format -msgid "Time of latest checkpoint: %s\n" -msgstr "நவீன சோதனை மையத்தின் நேரம்: %s\n" - -#: pg_controldata.c:184 -#, c-format -msgid "Minimum recovery ending location: %X/%X\n" -msgstr "குறைந்த பட்ச மீட்பு முடிவின் இருப்பிடம்: %X/%X\n" - -#: pg_controldata.c:187 -#, c-format -msgid "Maximum data alignment: %u\n" -msgstr "அதிகபட்ச தரவு ஒழுங்கமைப்பு: %u\n" - -#: pg_controldata.c:190 -#, c-format -msgid "Database block size: %u\n" -msgstr "தரவுக் கள கட்டு அளவு: %u\n" - -#: pg_controldata.c:192 -#, c-format -msgid "Blocks per segment of large relation: %u\n" -msgstr "பெரியத் தொடர்புடையக் கட்டு ஒன்றுக்கான கட்டு: %u\n" - -#: pg_controldata.c:194 -#, c-format -msgid "WAL block size: %u\n" -msgstr "WAL கட்டு அளவு: %u\n" - -#: pg_controldata.c:196 -#, c-format -msgid "Bytes per WAL segment: %u\n" -msgstr "WAL பகுதியொன்றிறகானப் பைட்: %u\n" - -#: pg_controldata.c:198 -#, c-format -msgid "Maximum length of identifiers: %u\n" -msgstr "அடையாளங் காட்டிக்கான அதிகபட்ச நீளம்: %u\n" - -#: pg_controldata.c:200 -#, c-format -msgid "Maximum columns in an index: %u\n" -msgstr "அட்டவணைக்கான அதிகபட்ச நெடுவரிசைகள்: %u\n" - -#: pg_controldata.c:202 -#, c-format -msgid "Maximum size of a TOAST chunk: %u\n" -msgstr "TOAST அடர்த்தியின் அதிக பட்ச அளவு: %u\n" - -#: pg_controldata.c:204 -#, c-format -msgid "Date/time type storage: %s\n" -msgstr "தேதி/நேர வகை சேமிப்பு: %s\n" - -#: pg_controldata.c:205 -msgid "64-bit integers" -msgstr "64-இரும எண்கள்" - -#: pg_controldata.c:205 -msgid "floating-point numbers" -msgstr "புள்ளி எண்கள்" - -#: pg_controldata.c:206 -#, c-format -msgid "Maximum length of locale name: %u\n" -msgstr "அகப் பெயரின் அதிகப் படச அளவு:%u\n" - -#: pg_controldata.c:208 -#, c-format -msgid "LC_COLLATE: %s\n" -msgstr "LC_COLLATE: %s\n" - -#: pg_controldata.c:210 -#, c-format -msgid "LC_CTYPE: %s\n" -msgstr "LC_CTYPE: %s\n" - diff --git a/src/bin/pg_controldata/po/tr.po b/src/bin/pg_controldata/po/tr.po index 8e40241a1d..8e32f6fe75 100644 --- a/src/bin/pg_controldata/po/tr.po +++ b/src/bin/pg_controldata/po/tr.po @@ -5,10 +5,11 @@ msgid "" msgstr "" "Project-Id-Version: pg_controldata-tr\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-08-31 20:06+0000\n" -"PO-Revision-Date: 2010-09-01 10:33+0200\n" +"POT-Creation-Date: 2011-08-29 20:40+0000\n" +"PO-Revision-Date: 2011-08-30 01:43+0200\n" "Last-Translator: Devrim GÜNDÜZ \n" "Language-Team: Turkish \n" +"Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -240,93 +241,106 @@ msgstr "Yedek başlama yeri: %X/%X\n" #: pg_controldata.c:235 #, c-format +msgid "End-of-backup record required: %s\n" +msgstr "Yedek sonu kaydı gerekiyor: %s\n" + +#: pg_controldata.c:236 +msgid "yes" +msgstr "evet" + +#: pg_controldata.c:236 +msgid "no" +msgstr "hayır" + +#: pg_controldata.c:237 +#, c-format msgid "Current wal_level setting: %s\n" msgstr "Mevcut wal_level ayarı %s\n" -#: pg_controldata.c:237 +#: pg_controldata.c:239 #, c-format msgid "Current max_connections setting: %d\n" msgstr "Mevcut max_connections ayarı: %d\n" -#: pg_controldata.c:239 +#: pg_controldata.c:241 #, c-format msgid "Current max_prepared_xacts setting: %d\n" msgstr "Mevcut max_prepared_xacts ayarı: %d\n" -#: pg_controldata.c:241 +#: pg_controldata.c:243 #, c-format msgid "Current max_locks_per_xact setting: %d\n" msgstr "Mevcut max_locks_per_xact ayarı: %d\n" -#: pg_controldata.c:243 +#: pg_controldata.c:245 #, c-format msgid "Maximum data alignment: %u\n" msgstr "Azami veri hizalama: %u\n" -#: pg_controldata.c:246 +#: pg_controldata.c:248 #, c-format msgid "Database block size: %u\n" msgstr "Veritabanı blok boyutu: %u\n" -#: pg_controldata.c:248 +#: pg_controldata.c:250 #, c-format msgid "Blocks per segment of large relation: %u\n" msgstr "Büyük ilişkilerin parçası başına blok sayısı: %u\n" -#: pg_controldata.c:250 +#: pg_controldata.c:252 #, c-format msgid "WAL block size: %u\n" msgstr "WAL blok boyutu: %u\n" -#: pg_controldata.c:252 +#: pg_controldata.c:254 #, c-format msgid "Bytes per WAL segment: %u\n" msgstr "Her bir WAL parçası başına byte sayısı: %u\n" -#: pg_controldata.c:254 +#: pg_controldata.c:256 #, c-format msgid "Maximum length of identifiers: %u\n" msgstr "Belirteçlerin en fazla uzunluğu: %u\n" -#: pg_controldata.c:256 +#: pg_controldata.c:258 #, c-format msgid "Maximum columns in an index: %u\n" msgstr "İndekste en fazla kolon sayısı: %u\n" -#: pg_controldata.c:258 +#: pg_controldata.c:260 #, c-format msgid "Maximum size of a TOAST chunk: %u\n" msgstr "TOAST parçasının en yüksek boyutu: %u\n" -#: pg_controldata.c:260 +#: pg_controldata.c:262 #, c-format msgid "Date/time type storage: %s\n" msgstr "Tarih/zaman tipi saklanması: %s\n" -#: pg_controldata.c:261 +#: pg_controldata.c:263 msgid "64-bit integers" msgstr "64-bit tamsayı" -#: pg_controldata.c:261 +#: pg_controldata.c:263 msgid "floating-point numbers" msgstr "kayan noktalı sayılar" -#: pg_controldata.c:262 +#: pg_controldata.c:264 #, c-format msgid "Float4 argument passing: %s\n" msgstr "Float4 argument passing: %s\n" -#: pg_controldata.c:263 #: pg_controldata.c:265 +#: pg_controldata.c:267 msgid "by value" msgstr "değer ile" -#: pg_controldata.c:263 #: pg_controldata.c:265 +#: pg_controldata.c:267 msgid "by reference" msgstr "referans ile" -#: pg_controldata.c:264 +#: pg_controldata.c:266 #, c-format msgid "Float8 argument passing: %s\n" msgstr "Float8 argument passing: %s\n" diff --git a/src/bin/pg_controldata/po/zh_CN.po b/src/bin/pg_controldata/po/zh_CN.po index 9891563523..129fd31169 100644 --- a/src/bin/pg_controldata/po/zh_CN.po +++ b/src/bin/pg_controldata/po/zh_CN.po @@ -5,10 +5,11 @@ msgid "" msgstr "" "Project-Id-Version: pg_controldata (PostgreSQL 9.0)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-10-01 14:40+0000\n" +"POT-Creation-Date: 2013-01-29 13:58+0000\n" "PO-Revision-Date: 2010-10-01 12:45+0800\n" "Last-Translator: Weibin \n" "Language-Team: Chinese (Simplified)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_controldata/po/zh_TW.po b/src/bin/pg_controldata/po/zh_TW.po index e0d868315f..d9ecb4612f 100644 --- a/src/bin/pg_controldata/po/zh_TW.po +++ b/src/bin/pg_controldata/po/zh_TW.po @@ -12,7 +12,7 @@ msgstr "" "Last-Translator: Zhenbang Wei \n" "Language-Team: EnterpriseDB translation team \n" -"Language: \n" +"Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_ctl/nls.mk b/src/bin/pg_ctl/nls.mk index 29f8a59c60..7693d9075c 100644 --- a/src/bin/pg_ctl/nls.mk +++ b/src/bin/pg_ctl/nls.mk @@ -1,5 +1,5 @@ # src/bin/pg_ctl/nls.mk CATALOG_NAME := pg_ctl -AVAIL_LANGUAGES := de es fr it ja ko pt_BR ru sv ta tr zh_CN zh_TW +AVAIL_LANGUAGES := cs de es fr it ja pl pt_BR ru tr zh_CN zh_TW GETTEXT_FILES := pg_ctl.c ../../port/exec.c GETTEXT_TRIGGERS:= _ simple_prompt diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c index 63c6897775..d9ce0b8aeb 100644 --- a/src/bin/pg_ctl/pg_ctl.c +++ b/src/bin/pg_ctl/pg_ctl.c @@ -3,7 +3,7 @@ * pg_ctl --- start/stops/restarts the PostgreSQL server * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/bin/pg_ctl/pg_ctl.c * @@ -19,8 +19,11 @@ #endif #include "postgres_fe.h" + #include "libpq-fe.h" +#include "pqexpbuffer.h" +#include #include #include #include @@ -309,50 +312,84 @@ get_pgpid(void) static char ** readfile(const char *path) { - FILE *infile; - int maxlength = 1, - linelen = 0; - int nlines = 0; + int fd; + int nlines; char **result; char *buffer; - int c; + char *linebegin; + int i; + int n; + int len; + struct stat statbuf; - if ((infile = fopen(path, "r")) == NULL) + /* + * Slurp the file into memory. + * + * The file can change concurrently, so we read the whole file into memory + * with a single read() call. That's not guaranteed to get an atomic + * snapshot, but in practice, for a small file, it's close enough for the + * current use. + */ + fd = open(path, O_RDONLY | PG_BINARY, 0); + if (fd < 0) return NULL; + if (fstat(fd, &statbuf) < 0) + { + close(fd); + return NULL; + } + if (statbuf.st_size == 0) + { + /* empty file */ + close(fd); + result = (char **) pg_malloc(sizeof(char *)); + *result = NULL; + return result; + } + buffer = pg_malloc(statbuf.st_size + 1); - /* pass over the file twice - the first time to size the result */ + len = read(fd, buffer, statbuf.st_size + 1); + close(fd); + if (len != statbuf.st_size) + { + /* oops, the file size changed between fstat and read */ + free(buffer); + return NULL; + } - while ((c = fgetc(infile)) != EOF) + /* + * Count newlines. We expect there to be a newline after each full line, + * including one at the end of file. If there isn't a newline at the end, + * any characters after the last newline will be ignored. + */ + nlines = 0; + for (i = 0; i < len; i++) { - linelen++; - if (c == '\n') - { + if (buffer[i] == '\n') nlines++; - if (linelen > maxlength) - maxlength = linelen; - linelen = 0; - } } - /* handle last line without a terminating newline (yuck) */ - if (linelen) - nlines++; - if (linelen > maxlength) - maxlength = linelen; - - /* set up the result and the line buffer */ + /* set up the result buffer */ result = (char **) pg_malloc((nlines + 1) * sizeof(char *)); - buffer = (char *) pg_malloc(maxlength + 1); - /* now reprocess the file and store the lines */ - rewind(infile); - nlines = 0; - while (fgets(buffer, maxlength + 1, infile) != NULL) - result[nlines++] = xstrdup(buffer); + /* now split the buffer into lines */ + linebegin = buffer; + n = 0; + for (i = 0; i < len; i++) + { + if (buffer[i] == '\n') + { + int slen = &buffer[i] - linebegin + 1; + char *linebuf = pg_malloc(slen + 1); + memcpy(linebuf, linebegin, slen); + linebuf[slen] = '\0'; + result[n++] = linebuf; + linebegin = &buffer[i + 1]; + } + } + result[n] = NULL; - fclose(infile); free(buffer); - result[nlines] = NULL; return result; } @@ -1231,16 +1268,13 @@ pgwin32_IsInstalled(SC_HANDLE hSCM) static char * pgwin32_CommandLine(bool registration) { - static char cmdLine[MAXPGPATH]; + PQExpBuffer cmdLine = createPQExpBuffer(); + char cmdPath[MAXPGPATH]; int ret; -#ifdef __CYGWIN__ - char buf[MAXPGPATH]; -#endif - if (registration) { - ret = find_my_exec(argv0, cmdLine); + ret = find_my_exec(argv0, cmdPath); if (ret != 0) { write_stderr(_("%s: could not find own program executable\n"), progname); @@ -1250,7 +1284,7 @@ pgwin32_CommandLine(bool registration) else { ret = find_other_exec(argv0, "postgres", PG_BACKEND_VERSIONSTR, - cmdLine); + cmdPath); if (ret != 0) { write_stderr(_("%s: could not find postgres program executable\n"), progname); @@ -1260,54 +1294,57 @@ pgwin32_CommandLine(bool registration) #ifdef __CYGWIN__ /* need to convert to windows path */ + { + char buf[MAXPGPATH]; + #if CYGWIN_VERSION_DLL_MAJOR >= 1007 - cygwin_conv_path(CCP_POSIX_TO_WIN_A, cmdLine, buf, sizeof(buf)); + cygwin_conv_path(CCP_POSIX_TO_WIN_A, cmdPath, buf, sizeof(buf)); #else - cygwin_conv_to_full_win32_path(cmdLine, buf); + cygwin_conv_to_full_win32_path(cmdPath, buf); #endif - strcpy(cmdLine, buf); + strcpy(cmdPath, buf); + } #endif + /* if path does not end in .exe, append it */ + if (strlen(cmdPath) < 4 || + pg_strcasecmp(cmdPath + strlen(cmdPath) - 4, ".exe") != 0) + snprintf(cmdPath + strlen(cmdPath), sizeof(cmdPath) - strlen(cmdPath), + ".exe"); + + /* use backslashes in path to avoid problems with some third-party tools */ + make_native_path(cmdPath); + + /* be sure to double-quote the executable's name in the command */ + appendPQExpBuffer(cmdLine, "\"%s\"", cmdPath); + + /* append assorted switches to the command line, as needed */ + if (registration) - { - if (pg_strcasecmp(cmdLine + strlen(cmdLine) - 4, ".exe")) - { - /* If commandline does not end in .exe, append it */ - strcat(cmdLine, ".exe"); - } - strcat(cmdLine, " runservice -N \""); - strcat(cmdLine, register_servicename); - strcat(cmdLine, "\""); - } + appendPQExpBuffer(cmdLine, " runservice -N \"%s\"", + register_servicename); if (pg_data) - { - strcat(cmdLine, " -D \""); - strcat(cmdLine, pg_data); - strcat(cmdLine, "\""); - } + appendPQExpBuffer(cmdLine, " -D \"%s\"", pg_data); if (registration && do_wait) - strcat(cmdLine, " -w"); + appendPQExpBuffer(cmdLine, " -w"); if (registration && wait_seconds != DEFAULT_WAIT) - /* concatenate */ - sprintf(cmdLine + strlen(cmdLine), " -t %d", wait_seconds); + appendPQExpBuffer(cmdLine, " -t %d", wait_seconds); if (registration && silent_mode) - strcat(cmdLine, " -s"); + appendPQExpBuffer(cmdLine, " -s"); if (post_opts) { - strcat(cmdLine, " "); - if (registration) - strcat(cmdLine, " -o \""); - strcat(cmdLine, post_opts); if (registration) - strcat(cmdLine, "\""); + appendPQExpBuffer(cmdLine, " -o \"%s\"", post_opts); + else + appendPQExpBuffer(cmdLine, " %s", post_opts); } - return cmdLine; + return cmdLine->data; } static void @@ -1585,7 +1622,7 @@ CreateRestrictedProcess(char *cmd, PROCESS_INFORMATION *processInfo, bool as_ser * NT4 doesn't have CreateRestrictedToken, so just call ordinary * CreateProcess */ - write_stderr("WARNING: cannot create restricted tokens on this platform\n"); + write_stderr(_("%s: WARNING: cannot create restricted tokens on this platform\n"), progname); if (Advapi32Handle != NULL) FreeLibrary(Advapi32Handle); return CreateProcess(NULL, cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, processInfo); @@ -1594,7 +1631,7 @@ CreateRestrictedProcess(char *cmd, PROCESS_INFORMATION *processInfo, bool as_ser /* Open the current token to use as a base for the restricted one */ if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &origToken)) { - write_stderr("Failed to open process token: %lu\n", GetLastError()); + write_stderr(_("%s: could not open process token: %lu\n"), progname, GetLastError()); return 0; } @@ -1607,7 +1644,7 @@ CreateRestrictedProcess(char *cmd, PROCESS_INFORMATION *processInfo, bool as_ser SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_POWER_USERS, 0, 0, 0, 0, 0, 0, &dropSids[1].Sid)) { - write_stderr("Failed to allocate SIDs: %lu\n", GetLastError()); + write_stderr(_("%s: could not allocate SIDs: %lu\n"), progname, GetLastError()); return 0; } @@ -1626,7 +1663,7 @@ CreateRestrictedProcess(char *cmd, PROCESS_INFORMATION *processInfo, bool as_ser if (!b) { - write_stderr("Failed to create restricted token: %lu\n", GetLastError()); + write_stderr(_("%s: could not create restricted token: %lu\n"), progname, GetLastError()); return 0; } @@ -1664,7 +1701,7 @@ CreateRestrictedProcess(char *cmd, PROCESS_INFORMATION *processInfo, bool as_ser * Log error if we can't get version, or if we're on WinXP/2003 or * newer */ - write_stderr("WARNING: could not locate all job object functions in system API\n"); + write_stderr(_("%s: WARNING: could not locate all job object functions in system API\n"), progname); } else { @@ -1745,7 +1782,7 @@ CreateRestrictedProcess(char *cmd, PROCESS_INFORMATION *processInfo, bool as_ser */ return r; } -#endif +#endif /* defined(WIN32) || defined(__CYGWIN__) */ static void do_advice(void) @@ -1785,11 +1822,11 @@ do_help(void) printf(_(" -D, --pgdata DATADIR location of the database storage area\n")); printf(_(" -s, --silent only print errors, no informational messages\n")); printf(_(" -t SECS seconds to wait when using -w option\n")); + printf(_(" -w wait until operation completes\n")); + printf(_(" -W do not wait until operation completes\n")); #ifdef PGXC printf(_(" -Z NODE-TYPE can be \"coordinator\" or \"datanode\" (Postgres-XC)\n")); #endif - printf(_(" -w wait until operation completes\n")); - printf(_(" -W do not wait until operation completes\n")); printf(_(" --help show this help, then exit\n")); printf(_(" --version output version information, then exit\n")); printf(_("(The default is to wait for shutdown, but not for start or restart.)\n\n")); @@ -1828,7 +1865,11 @@ do_help(void) printf(_(" demand start service on demand\n")); #endif +#ifdef PGXC + printf(_("\nReport bugs to .\n")); +#else printf(_("\nReport bugs to .\n")); +#endif } @@ -2155,11 +2196,11 @@ main(int argc, char **argv) } #ifdef PGXC - /* stop command does not need to have coordinator or datanode options */ + /* stop command does not need to have Coordinator or Datanode options */ if ((ctl_command == START_COMMAND || ctl_command == RESTART_COMMAND) && !pgxcCommand) { - write_stderr(_("%s: coordinator or datanode option not specified (-Z)\n"), + write_stderr(_("%s: Coordinator or Datanode option not specified (-Z)\n"), progname); do_advice(); exit(1); diff --git a/src/bin/pg_ctl/po/cs.po b/src/bin/pg_ctl/po/cs.po new file mode 100644 index 0000000000..4b9ec0b4f7 --- /dev/null +++ b/src/bin/pg_ctl/po/cs.po @@ -0,0 +1,836 @@ +# Czech translation of pg_ctl +# +# Karel Zak , 2004, 2011. +# Tomáš Vondra , 2011, 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: pg_ctl-cs (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-08-30 11:32+0200\n" +"PO-Revision-Date: 2011-09-06 12:21+0200\n" +"Last-Translator: Tomas Vondra \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: pg_ctl.c:237 pg_ctl.c:252 pg_ctl.c:2035 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: nedostatek paměti\n" + +#: pg_ctl.c:286 +#, c-format +msgid "%s: could not open PID file \"%s\": %s\n" +msgstr "%s: nelze otevřít PID soubor \"%s\": %s\n" + +#: pg_ctl.c:293 +#, c-format +msgid "%s: invalid data in PID file \"%s\"\n" +msgstr "%s: neplatná data v PID souboru \"%s\"\n" + +#: pg_ctl.c:470 +#, c-format +msgid "" +"\n" +"%s: -w option is not supported when starting a pre-9.1 server\n" +msgstr "" +"\n" +"%s: -w volba není podporována při startu pre-9.1 serveru\n" + +#: pg_ctl.c:540 +#, c-format +msgid "" +"\n" +"%s: -w option cannot use a relative socket directory specification\n" +msgstr "" +"\n" +"%s: -w volba nemůže používat relativně zadaný adresář socketu\n" + +#: pg_ctl.c:588 +#, c-format +msgid "" +"\n" +"%s: this data directory appears to be running a pre-existing postmaster\n" +msgstr "" +"\n" +"%s: zdá se že v tomto datovém adresáři již běží existující postmaster\n" + +#: pg_ctl.c:638 +#, c-format +msgid "%s: cannot set core file size limit; disallowed by hard limit\n" +msgstr "%s: nelze nastavit limit pro core soubor; zakázáno hard limitem\n" + +#: pg_ctl.c:663 +#, c-format +msgid "%s: could not read file \"%s\"\n" +msgstr "%s: nelze číst soubor \"%s\"\n" + +#: pg_ctl.c:668 +#, c-format +msgid "%s: option file \"%s\" must have exactly one line\n" +msgstr "%s: soubor s volbami \"%s\" musí mít přesně jednu řádku\n" + +#: pg_ctl.c:716 +#, c-format +msgid "" +"The program \"%s\" is needed by %s but was not found in the\n" +"same directory as \"%s\".\n" +"Check your installation.\n" +msgstr "" +"Program \"%s\" je vyžadován aplikací %s, ale nebyl nalezen ve stejném\n" +"adresáři jako \"%s\".\n" +"Zkontrolujte vaši instalaci.\n" + +#: pg_ctl.c:722 +#, c-format +msgid "" +"The program \"%s\" was found by \"%s\"\n" +"but was not the same version as %s.\n" +"Check your installation.\n" +msgstr "" +"Program \"%s\" byl nalezen pomocí \"%s\",\n" +"ale nebyl ve stejné verzi jako %s.\n" +"Zkontrolujte vaši instalaci.\n" + +#: pg_ctl.c:755 +#, c-format +msgid "%s: database system initialization failed\n" +msgstr "%s: inicializace databáze selhala\n" + +#: pg_ctl.c:770 +#, c-format +msgid "%s: another server might be running; trying to start server anyway\n" +msgstr "%s: další server možná běží; i tak zkouším start\n" + +#: pg_ctl.c:807 +#, c-format +msgid "%s: could not start server: exit code was %d\n" +msgstr "%s: nelze nastartovat server: návratový kód byl %d\n" + +#: pg_ctl.c:814 +msgid "waiting for server to start..." +msgstr "čekám na start serveru ..." + +#: pg_ctl.c:819 pg_ctl.c:920 pg_ctl.c:1011 +msgid " done\n" +msgstr " hotovo\n" + +#: pg_ctl.c:820 +msgid "server started\n" +msgstr "server spuštěn\n" + +#: pg_ctl.c:823 pg_ctl.c:827 +msgid " stopped waiting\n" +msgstr " přestávám čekat\n" + +#: pg_ctl.c:824 +msgid "server is still starting up\n" +msgstr "server stále startuje\n" + +#: pg_ctl.c:828 +#, c-format +msgid "" +"%s: could not start server\n" +"Examine the log output.\n" +msgstr "" +"%s: nelze spustit server\n" +"Zkontrolujte záznam v logu.\n" + +#: pg_ctl.c:834 pg_ctl.c:912 pg_ctl.c:1002 +msgid " failed\n" +msgstr " selhalo\n" + +#: pg_ctl.c:835 +#, c-format +msgid "%s: could not wait for server because of misconfiguration\n" +msgstr "%s: nelze čekat na server kvůli chybné konfiguraci\n" + +#: pg_ctl.c:841 +msgid "server starting\n" +msgstr "server startuje\n" + +#: pg_ctl.c:856 pg_ctl.c:942 pg_ctl.c:1032 pg_ctl.c:1072 +#, c-format +msgid "%s: PID file \"%s\" does not exist\n" +msgstr "%s: PID soubor \"%s\" neexistuje\n" + +#: pg_ctl.c:857 pg_ctl.c:944 pg_ctl.c:1033 pg_ctl.c:1073 +msgid "Is server running?\n" +msgstr "Běží server?\n" + +#: pg_ctl.c:863 +#, c-format +msgid "%s: cannot stop server; single-user server is running (PID: %ld)\n" +msgstr "" +"%s: nemohu zastavit server; postgres běží v single-user módu (PID: %ld)\n" + +#: pg_ctl.c:871 pg_ctl.c:966 +#, c-format +msgid "%s: could not send stop signal (PID: %ld): %s\n" +msgstr "%s: nelze poslat stop signál (PID: %ld): %s\n" + +#: pg_ctl.c:878 +msgid "server shutting down\n" +msgstr "server se ukončuje\n" + +#: pg_ctl.c:893 pg_ctl.c:981 +msgid "" +"WARNING: online backup mode is active\n" +"Shutdown will not complete until pg_stop_backup() is called.\n" +"\n" +msgstr "" +"VAROVÁNÍ: online backup mód je aktivní\n" +"Shutdown nebude ukončen dokud nebude zavolán pg_stop_backup().\n" +"\n" + +#: pg_ctl.c:897 pg_ctl.c:985 +msgid "waiting for server to shut down..." +msgstr "čekám na ukončení serveru ..." + +#: pg_ctl.c:914 pg_ctl.c:1004 +#, c-format +msgid "%s: server does not shut down\n" +msgstr "%s: server se neukončuje\n" + +#: pg_ctl.c:916 pg_ctl.c:1006 +msgid "" +"HINT: The \"-m fast\" option immediately disconnects sessions rather than\n" +"waiting for session-initiated disconnection.\n" +msgstr "" +"TIP: Volba \"-m fast\" okamžitě ukončí sezení namísto aby čekala\n" +"na odpojení iniciované přímo session.\n" + +#: pg_ctl.c:922 pg_ctl.c:1012 +msgid "server stopped\n" +msgstr "server zastaven\n" + +#: pg_ctl.c:945 pg_ctl.c:1018 +msgid "starting server anyway\n" +msgstr "přesto server spouštím\n" + +#: pg_ctl.c:954 +#, c-format +msgid "%s: cannot restart server; single-user server is running (PID: %ld)\n" +msgstr "" +"%s: nemohu restartovat server; postgres běží v single-user módu (PID: %ld)\n" + +#: pg_ctl.c:957 pg_ctl.c:1042 +msgid "Please terminate the single-user server and try again.\n" +msgstr "Prosím ukončete single-user postgres a zkuste to znovu.\n" + +#: pg_ctl.c:1016 +#, c-format +msgid "%s: old server process (PID: %ld) seems to be gone\n" +msgstr "%s: starý proces serveru (PID: %ld) zřejmě skončil\n" + +#: pg_ctl.c:1039 +#, c-format +msgid "%s: cannot reload server; single-user server is running (PID: %ld)\n" +msgstr "" +"%s: nemohu znovunačíst server; server běží v single-user módu (PID: %ld)\n" + +#: pg_ctl.c:1048 +#, c-format +msgid "%s: could not send reload signal (PID: %ld): %s\n" +msgstr "%s: nelze poslat signál pro reload (PID: %ld): %s\n" + +#: pg_ctl.c:1053 +msgid "server signaled\n" +msgstr "server obdržel signál\n" + +#: pg_ctl.c:1079 +#, c-format +msgid "%s: cannot promote server; single-user server is running (PID: %ld)\n" +msgstr "" +"%s: nelze povýšit (promote) server; server běží v single-user módu (PID: %" +"ld)\n" + +#: pg_ctl.c:1088 +#, c-format +msgid "%s: cannot promote server; server is not in standby mode\n" +msgstr "%s: nelze povýšit (promote) server; server není ve standby módu\n" + +#: pg_ctl.c:1096 +#, c-format +msgid "%s: could not create promote signal file \"%s\": %s\n" +msgstr "%s: nelze vytvořit signální soubor pro povýšení (promote) \"%s\": %s\n" + +#: pg_ctl.c:1102 +#, c-format +msgid "%s: could not write promote signal file \"%s\": %s\n" +msgstr "" +"%s: nelze zapsat do signálního souboru pro povýšení (promote) \"%s\": %s\n" + +#: pg_ctl.c:1110 +#, c-format +msgid "%s: could not send promote signal (PID: %ld): %s\n" +msgstr "%s: nelze poslat signál pro povýšení (promote, PID: %ld): %s\n" + +#: pg_ctl.c:1113 +#, c-format +msgid "%s: could not remove promote signal file \"%s\": %s\n" +msgstr "" +"%s: nelze odstranit signální soubor pro povýšení (promote) \"%s\": %s\n" + +#: pg_ctl.c:1118 +msgid "server promoting\n" +msgstr "server je povyšován (promote)\n" + +#: pg_ctl.c:1163 +#, c-format +msgid "%s: single-user server is running (PID: %ld)\n" +msgstr "%s: server běží v single-user módu (PID: %ld)\n" + +#: pg_ctl.c:1175 +#, c-format +msgid "%s: server is running (PID: %ld)\n" +msgstr "%s: server běží (PID: %ld)\n" + +#: pg_ctl.c:1186 +#, c-format +msgid "%s: no server running\n" +msgstr "%s: žádný server neběží\n" + +#: pg_ctl.c:1197 +#, c-format +msgid "%s: could not send signal %d (PID: %ld): %s\n" +msgstr "%s: nelze poslat signál pro reload %d (PID: %ld): %s\n" + +#: pg_ctl.c:1231 +#, c-format +msgid "%s: could not find own program executable\n" +msgstr "%s: nemůže najít vlastní spustitelný soubor\n" + +#: pg_ctl.c:1241 +#, c-format +msgid "%s: could not find postgres program executable\n" +msgstr "%s: nelze najít spustitelný program postgres\n" + +#: pg_ctl.c:1306 pg_ctl.c:1338 +#, c-format +msgid "%s: could not open service manager\n" +msgstr "%s: nelze otevřít manažera služeb\n" + +#: pg_ctl.c:1312 +#, c-format +msgid "%s: service \"%s\" already registered\n" +msgstr "%s: služba \"%s\" je již registrována\n" + +#: pg_ctl.c:1323 +#, c-format +msgid "%s: could not register service \"%s\": error code %d\n" +msgstr "%s: nelze zaregistrovat službu \"%s\": chybový kód %d\n" + +#: pg_ctl.c:1344 +#, c-format +msgid "%s: service \"%s\" not registered\n" +msgstr "%s: služba \"%s\" není registrována\n" + +#: pg_ctl.c:1351 +#, c-format +msgid "%s: could not open service \"%s\": error code %d\n" +msgstr "%s: nelze otevřít službu \"%s\": chýbový kód %d\n" + +#: pg_ctl.c:1358 +#, c-format +msgid "%s: could not unregister service \"%s\": error code %d\n" +msgstr "%s: nelze odregistrovat službu \"%s\": chýbový kód %d\n" + +#: pg_ctl.c:1444 +msgid "Waiting for server startup...\n" +msgstr "čekám na start serveru ...\n" + +#: pg_ctl.c:1447 +msgid "Timed out waiting for server startup\n" +msgstr "Časový limit pro čekání na start serveru vypršel\n" + +#: pg_ctl.c:1451 +msgid "Server started and accepting connections\n" +msgstr "Server nastartoval a přijímá spojení\n" + +#: pg_ctl.c:1501 +#, c-format +msgid "%s: could not start service \"%s\": error code %d\n" +msgstr "%s: nelze zaregistrovat službu \"%s\": chybový kód %d\n" + +#: pg_ctl.c:1573 +#, c-format +msgid "%s: WARNING: cannot create restricted tokens on this platform\n" +msgstr "%s: VAROVÁNÍ: na této platformě nelze vytvořit tajné tokeny\n" + +#: pg_ctl.c:1582 +#, c-format +msgid "%s: could not open process token: %lu\n" +msgstr "%s: nelze otevřít token procesu: %lu\n" + +#: pg_ctl.c:1595 +#, c-format +msgid "%s: could not allocate SIDs: %lu\n" +msgstr "%s: nelze alokovat SIDs: %lu\n" + +#: pg_ctl.c:1614 +#, c-format +msgid "%s: could not create restricted token: %lu\n" +msgstr "%s: nelze otevřít tajný token: %lu\n" + +#: pg_ctl.c:1652 +#, c-format +msgid "%s: WARNING: could not locate all job object functions in system API\n" +msgstr "" +"%s: VAROVÁNÍ: v systémovém API nelze najít všechny \"job object\" funkce\n" + +#: pg_ctl.c:1738 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Zkuste \"%s --help\" pro více informací.\n" + +#: pg_ctl.c:1746 +#, c-format +msgid "" +"%s is a utility to initialize, start, stop, or control a PostgreSQL server.\n" +"\n" +msgstr "" +"%s je nástroj pro inicializaci, spuštění, zastavení, nebo ovládání " +"PostgreSQL serveru.\n" +"\n" + +#: pg_ctl.c:1747 +#, c-format +msgid "Usage:\n" +msgstr "Použití:\n" + +#: pg_ctl.c:1748 +#, c-format +msgid " %s init[db] [-D DATADIR] [-s] [-o \"OPTIONS\"]\n" +msgstr " %s init[db] [-D ADRESÁŘ] [-s] [-o \"PŘEPÍNAČE\"]\n" + +#: pg_ctl.c:1749 +#, c-format +msgid "" +" %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS" +"\"]\n" +msgstr "" +" %s start [-w] [-t SECS] [-D ADRESÁŘ] [-s] [-l SOUBOR] [-o \"PŘEPÍNAČE" +"\"]\n" + +#: pg_ctl.c:1750 +#, c-format +msgid " %s stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" +msgstr " %s stop [-W] [-t SECS] [-D ADRESÁŘ] [-s] [-m MÓD-UKONČENÍ]\n" + +#: pg_ctl.c:1751 +#, c-format +msgid "" +" %s restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" +" [-o \"OPTIONS\"]\n" +msgstr "" +" %s restart [-w] [-t SECS] [-D ADRESÁŘ] [-s] [-m MÓD-UKONČENÍ]\n" +" [-o \"PŘEPÍNAČE\"]\n" + +#: pg_ctl.c:1753 +#, c-format +msgid " %s reload [-D DATADIR] [-s]\n" +msgstr " %s reload [-D ADRESÁŘ] [-s]\n" + +#: pg_ctl.c:1754 +#, c-format +msgid " %s status [-D DATADIR]\n" +msgstr " %s status [-D ADRESÁŘ]\n" + +#: pg_ctl.c:1755 +#, c-format +msgid " %s promote [-D DATADIR] [-s]\n" +msgstr " %s promote [-D ADRESÁŘ] [-s]\n" + +#: pg_ctl.c:1756 +#, c-format +msgid " %s kill SIGNALNAME PID\n" +msgstr " %s kill SIGNÁL IDPROCESU\n" + +#: pg_ctl.c:1758 +#, c-format +msgid "" +" %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" +" [-S START-TYPE] [-w] [-t SECS] [-o \"OPTIONS\"]\n" +msgstr "" +" %s register [-N NÁZEVSLUŽBY] [-U UŽIVATEL] [-P HESLO] [-D ADRESÁŘ]\n" +" [-w] [-o \"VOLBY\"]\n" + +#: pg_ctl.c:1760 +#, c-format +msgid " %s unregister [-N SERVICENAME]\n" +msgstr " %s unregister [-N SERVICENAME]\n" + +#: pg_ctl.c:1763 +#, c-format +msgid "" +"\n" +"Common options:\n" +msgstr "" +"\n" +"Společné přepínače:\n" + +#: pg_ctl.c:1764 +#, c-format +msgid " -D, --pgdata DATADIR location of the database storage area\n" +msgstr " -D, --pgdata ADRESÁŘ umístění úložiště databáze\n" + +#: pg_ctl.c:1765 +#, c-format +msgid " -s, --silent only print errors, no informational messages\n" +msgstr "" +" -s, --silent vypisuj jen chyby, žádné informativní zprávy\n" + +#: pg_ctl.c:1766 +#, c-format +msgid " -t SECS seconds to wait when using -w option\n" +msgstr "" +" -t SECS počet vteřin pro čekání při využití volby -w\n" + +#: pg_ctl.c:1767 +#, c-format +msgid " -w wait until operation completes\n" +msgstr " -w čekat na dokončení operace\n" + +#: pg_ctl.c:1768 +#, c-format +msgid " -W do not wait until operation completes\n" +msgstr " -W nečekat na dokončení operace\n" + +#: pg_ctl.c:1769 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help vypsat tuto nápovědu, potom skončit\n" + +#: pg_ctl.c:1770 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version vypsat informace o verzi, potom skončit\n" + +#: pg_ctl.c:1771 +#, c-format +msgid "" +"(The default is to wait for shutdown, but not for start or restart.)\n" +"\n" +msgstr "" +"(Implicitní chování je čekat na ukončení, ale ne při startu nebo restartu.)\n" +"\n" + +#: pg_ctl.c:1772 +#, c-format +msgid "If the -D option is omitted, the environment variable PGDATA is used.\n" +msgstr "Pokud je vynechán parametr -D, použije se proměnná prostředí PGDATA.\n" + +#: pg_ctl.c:1774 +#, c-format +msgid "" +"\n" +"Options for start or restart:\n" +msgstr "" +"\n" +"Přepínače pro start nebo restart:\n" + +#: pg_ctl.c:1776 +#, c-format +msgid " -c, --core-files allow postgres to produce core files\n" +msgstr " -c, --core-files povolit postgresu vytvářet core soubory\n" + +#: pg_ctl.c:1778 +#, c-format +msgid " -c, --core-files not applicable on this platform\n" +msgstr " -c, --core-files nepoužitelné pro tuto platformu\n" + +#: pg_ctl.c:1780 +#, c-format +msgid " -l, --log FILENAME write (or append) server log to FILENAME\n" +msgstr "" +" -l, --log SOUBOR zapisuj (nebo připoj na konec) log serveru do " +"SOUBORU.\n" + +#: pg_ctl.c:1781 +#, c-format +msgid "" +" -o OPTIONS command line options to pass to postgres\n" +" (PostgreSQL server executable) or initdb\n" +msgstr "" +" -o PŘEPÍNAČE přepínače, které budou předány postgresu\n" +" (spustitelnému souboru PostgreSQL) či initdb\n" + +#: pg_ctl.c:1783 +#, c-format +msgid " -p PATH-TO-POSTGRES normally not necessary\n" +msgstr " -p CESTA-K-POSTGRESU za normálních okolností není potřeba\n" + +#: pg_ctl.c:1784 +#, c-format +msgid "" +"\n" +"Options for stop or restart:\n" +msgstr "" +"\n" +"Přepínače pro zastavení nebo restart:\n" + +#: pg_ctl.c:1785 +#, c-format +msgid " -m SHUTDOWN-MODE can be \"smart\", \"fast\", or \"immediate\"\n" +msgstr " -m SHUTDOWN-MODE může být \"smart\", \"fast\", or \"immediate\"\n" + +#: pg_ctl.c:1787 +#, c-format +msgid "" +"\n" +"Shutdown modes are:\n" +msgstr "" +"\n" +"Módy ukončení jsou:\n" + +#: pg_ctl.c:1788 +#, c-format +msgid " smart quit after all clients have disconnected\n" +msgstr " smart skonči potom, co se odpojí všichni klienti\n" + +#: pg_ctl.c:1789 +#, c-format +msgid " fast quit directly, with proper shutdown\n" +msgstr " fast skonči okamžitě, s korektním zastavením serveru\n" + +#: pg_ctl.c:1790 +#, c-format +msgid "" +" immediate quit without complete shutdown; will lead to recovery on " +"restart\n" +msgstr "" +" immediate skonči bez kompletního zastavení; další start provede " +" obnovu po pádu (crash recovery)\n" + +#: pg_ctl.c:1792 +#, c-format +msgid "" +"\n" +"Allowed signal names for kill:\n" +msgstr "" +"\n" +"Povolené signály pro \"kill\":\n" + +#: pg_ctl.c:1796 +#, c-format +msgid "" +"\n" +"Options for register and unregister:\n" +msgstr "" +"\n" +"Přepínače pro register nebo unregister:\n" + +#: pg_ctl.c:1797 +#, c-format +msgid "" +" -N SERVICENAME service name with which to register PostgreSQL server\n" +msgstr "" +" -N SERVICENAME jméno služby, pod kterým registrovat PostgreSQL server\n" + +#: pg_ctl.c:1798 +#, c-format +msgid " -P PASSWORD password of account to register PostgreSQL server\n" +msgstr " -P PASSWORD heslo k účtu pro registraci PostgreSQL serveru\n" + +#: pg_ctl.c:1799 +#, c-format +msgid " -U USERNAME user name of account to register PostgreSQL server\n" +msgstr " -U USERNAME uživatelské jméno pro registraci PostgreSQL server\n" + +#: pg_ctl.c:1800 +#, c-format +msgid " -S START-TYPE service start type to register PostgreSQL server\n" +msgstr "" +" -S TYP-STARTU typ spuštění služby pro registraci PostgreSQL serveru\n" + +#: pg_ctl.c:1802 +#, c-format +msgid "" +"\n" +"Start types are:\n" +msgstr "" +"\n" +"Módy spuštění jsou:\n" + +#: pg_ctl.c:1803 +#, c-format +msgid "" +" auto start service automatically during system startup (default)\n" +msgstr "" +" auto spusť službu automaticky během startu systému (implicitní)\n" + +#: pg_ctl.c:1804 +#, c-format +msgid " demand start service on demand\n" +msgstr " demand spusť službu na vyžádání\n" + +#: pg_ctl.c:1807 +#, c-format +msgid "" +"\n" +"Report bugs to .\n" +msgstr "" +"\n" +"Chyby hlaste na adresu .\n" + +#: pg_ctl.c:1832 +#, c-format +msgid "%s: unrecognized shutdown mode \"%s\"\n" +msgstr "%s: neplatný mód ukončení mode \"%s\"\n" + +#: pg_ctl.c:1865 +#, c-format +msgid "%s: unrecognized signal name \"%s\"\n" +msgstr "%s: neplatné jméno signálu \"%s\"\n" + +#: pg_ctl.c:1882 +#, c-format +msgid "%s: unrecognized start type \"%s\"\n" +msgstr "%s: neplatný typ spuštění \"%s\"\n" + +#: pg_ctl.c:1947 +#, c-format +msgid "" +"%s: cannot be run as root\n" +"Please log in (using, e.g., \"su\") as the (unprivileged) user that will\n" +"own the server process.\n" +msgstr "" +"%s: nelze spustit jako root\n" +"Prosím přihlaste se (například pomocí., \"su\") jako (neprivilegovaný) " +"uživatel,\n" +"který bude vlastníkem serverového procesu.\n" + +#: pg_ctl.c:2018 +#, c-format +msgid "%s: -S option not supported on this platform\n" +msgstr "%s: -S nepoužitelné pro tuto platformu\n" + +#: pg_ctl.c:2065 +#, c-format +msgid "%s: too many command-line arguments (first is \"%s\")\n" +msgstr "%s: příliš mnoho parametrů příkazové řádky (první je \"%s\")\n" + +#: pg_ctl.c:2089 +#, c-format +msgid "%s: missing arguments for kill mode\n" +msgstr "%s: chýbějící parametr pro \"kill\" mód\n" + +#: pg_ctl.c:2107 +#, c-format +msgid "%s: unrecognized operation mode \"%s\"\n" +msgstr "%s: neplatný mód operace \"%s\"\n" + +#: pg_ctl.c:2117 +#, c-format +msgid "%s: no operation specified\n" +msgstr "%s: není specifikována operace\n" + +#: pg_ctl.c:2133 +#, c-format +msgid "" +"%s: no database directory specified and environment variable PGDATA unset\n" +msgstr "" +"%s: není zadán datový adresář a ani není nastavena proměnná prostředí " +"PGDATA\n" + +#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 +#, c-format +msgid "could not identify current directory: %s" +msgstr "nelze získat aktuální adresář: %s" + +#: ../../port/exec.c:144 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "neplatný binární soubor\"%s\"" + +#: ../../port/exec.c:193 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "nelze číst binární soubor \"%s\"" + +#: ../../port/exec.c:200 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "nelze najít spustitelný soubor \"%s\"" + +#: ../../port/exec.c:255 ../../port/exec.c:291 +#, c-format +msgid "could not change directory to \"%s\"" +msgstr "nelze změnit adresář na \"%s\"" + +#: ../../port/exec.c:270 +#, c-format +msgid "could not read symbolic link \"%s\"" +msgstr "nelze číst symbolický link \"%s\"" + +#: ../../port/exec.c:517 +#, c-format +msgid "child process exited with exit code %d" +msgstr "potomek skončil s návratovým kódem %d" + +#: ../../port/exec.c:521 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "potomek byl ukončen vyjímkou 0x%X" + +#: ../../port/exec.c:530 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "potomek byl ukončen signálem %s" + +#: ../../port/exec.c:533 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "potomek byl ukončen signálem %d" + +#: ../../port/exec.c:537 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "potomek skončil s nerozponaným stavem %d" + +#~ msgid "" +#~ "%s is a utility to start, stop, restart, reload configuration files,\n" +#~ "report the status of a PostgreSQL server, or signal a PostgreSQL " +#~ "process.\n" +#~ "\n" +#~ msgstr "" +#~ "%s je pomůcka pro spuštění, zastavení, restart, znovunačtení " +#~ "konfiguračních\n" +#~ "souborů, nahlášení stavu PostgreSQL serveru nebo ukončení PostgreSQL " +#~ "procesu.\n" +#~ "\n" + +#~ msgid "" +#~ "The program \"postmaster\" is needed by %s but was not found in the\n" +#~ "same directory as \"%s\".\n" +#~ "Check your installation.\n" +#~ msgstr "" +#~ "%s potřebuje program \"postmaster\", který ale nebyl nalezen ve stejném\n" +#~ "adresáři jako \"%s\".\n" +#~ "Zkontrolujte vaši instalaci.\n" + +#~ msgid "" +#~ "The program \"postmaster\" was found by \"%s\"\n" +#~ "but was not the same version as %s.\n" +#~ "Check your installation.\n" +#~ msgstr "" +#~ "\"%s\" nalezl program \"postmaster\",\n" +#~ "ten je ale jiné verze než %s.\n" +#~ "Zkontrolujte vaši instalaci.\n" + +#~ msgid "could not start postmaster\n" +#~ msgstr "nebylo možno spustit postmaster\n" + +#~ msgid "%s: neither postmaster nor postgres running\n" +#~ msgstr "%s: postmaster ani postgres neběží\n" + +#~ msgid "%s: a standalone backend \"postgres\" is running (PID: %ld)\n" +#~ msgstr "%s: samostatný \"postgres\" běží (PID: %ld)\n" + +#~ msgid "%s: invalid option %s\n" +#~ msgstr "%s: neplatný přepínač %s\n" diff --git a/src/bin/pg_ctl/po/de.po b/src/bin/pg_ctl/po/de.po index 02e4ad6e78..816e9f1d31 100644 --- a/src/bin/pg_ctl/po/de.po +++ b/src/bin/pg_ctl/po/de.po @@ -1,16 +1,14 @@ # German message translation file for pg_ctl # Peter Eisentraut , 2004 - 2011. # -# pgtranslation Id: pg_ctl.po,v 1.14 2011/06/08 21:26:42 petere Exp $ -# # Use these quotes: »%s« # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2011-06-08 18:40+0000\n" -"PO-Revision-Date: 2011-06-09 00:24+0300\n" +"POT-Creation-Date: 2011-07-15 08:55+0000\n" +"PO-Revision-Date: 2011-07-15 21:35+0300\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: Peter Eisentraut \n" "Language: de\n" @@ -18,60 +16,65 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: pg_ctl.c:234 pg_ctl.c:249 pg_ctl.c:2029 +#: pg_ctl.c:237 pg_ctl.c:252 pg_ctl.c:2035 #, c-format msgid "%s: out of memory\n" msgstr "%s: Speicher aufgebraucht\n" -#: pg_ctl.c:283 +#: pg_ctl.c:286 #, c-format msgid "%s: could not open PID file \"%s\": %s\n" msgstr "%s: konnte PID-Datei »%s« nicht öffnen: %s\n" -#: pg_ctl.c:290 +#: pg_ctl.c:293 #, c-format msgid "%s: invalid data in PID file \"%s\"\n" msgstr "%s: ungültige Daten in PID-Datei »%s«\n" -#: pg_ctl.c:467 +#: pg_ctl.c:470 #, c-format msgid "" "\n" "%s: -w option is not supported when starting a pre-9.1 server\n" -msgstr "\n%s: Option -w wird nicht unterstützt beim Starten eines Servers vor Version 9.1\n" +msgstr "\n%s: Option -w wird beim Starten eines Servers vor Version 9.1 nicht unterstützt\n" -#: pg_ctl.c:537 +#: pg_ctl.c:540 #, c-format msgid "" "\n" "%s: -w option cannot use a relative socket directory specification\n" -msgstr "\n%s: Option -w kann keine relative Angabe des Socket-Verzeichnisses verwenden\n" +msgstr "" +"\n" +"%s: Option -w kann keine relative Angabe des Socket-Verzeichnisses " +"verwenden\n" -#: pg_ctl.c:585 +#: pg_ctl.c:588 #, c-format msgid "" "\n" "%s: this data directory appears to be running a pre-existing postmaster\n" -msgstr "\n%s: in diesem Datenverzeichnis läuft anscheinend bereits in Postmaster\n" +msgstr "" +"\n" +"%s: in diesem Datenverzeichnis läuft anscheinend bereits in Postmaster\n" -#: pg_ctl.c:635 +#: pg_ctl.c:638 #, c-format msgid "%s: cannot set core file size limit; disallowed by hard limit\n" msgstr "" "%s: kann Grenzwert für Core-Datei-Größe nicht setzen; durch harten Grenzwert " "verboten\n" -#: pg_ctl.c:660 +#: pg_ctl.c:663 #, c-format msgid "%s: could not read file \"%s\"\n" msgstr "%s: konnte Datei »%s« nicht lesen\n" -#: pg_ctl.c:665 +#: pg_ctl.c:668 #, c-format msgid "%s: option file \"%s\" must have exactly one line\n" msgstr "%s: Optionsdatei »%s« muss genau eine Zeile haben\n" -#: pg_ctl.c:713 +#: pg_ctl.c:716 #, c-format msgid "" "The program \"%s\" is needed by %s but was not found in the\n" @@ -82,7 +85,7 @@ msgstr "" "selben Verzeichnis wie »%s« gefunden.\n" "Prüfen Sie Ihre Installation.\n" -#: pg_ctl.c:719 +#: pg_ctl.c:722 #, c-format msgid "" "The program \"%s\" was found by \"%s\"\n" @@ -93,43 +96,43 @@ msgstr "" "aber es hatte nicht die gleiche Version wie %s.\n" "Prüfen Sie Ihre Installation.\n" -#: pg_ctl.c:752 +#: pg_ctl.c:755 #, c-format msgid "%s: database system initialization failed\n" msgstr "%s: Initialisierung des Datenbanksystems fehlgeschlagen\n" -#: pg_ctl.c:767 +#: pg_ctl.c:770 #, c-format msgid "%s: another server might be running; trying to start server anyway\n" msgstr "" "%s: ein anderer Server läuft möglicherweise; versuche trotzdem zu starten\n" -#: pg_ctl.c:804 +#: pg_ctl.c:807 #, c-format msgid "%s: could not start server: exit code was %d\n" msgstr "%s: konnte Server nicht starten: Exitcode war %d\n" -#: pg_ctl.c:811 +#: pg_ctl.c:814 msgid "waiting for server to start..." msgstr "warte auf Start des Servers..." -#: pg_ctl.c:816 pg_ctl.c:917 pg_ctl.c:1008 +#: pg_ctl.c:819 pg_ctl.c:920 pg_ctl.c:1011 msgid " done\n" msgstr " fertig\n" -#: pg_ctl.c:817 +#: pg_ctl.c:820 msgid "server started\n" msgstr "Server gestartet\n" -#: pg_ctl.c:820 pg_ctl.c:824 +#: pg_ctl.c:823 pg_ctl.c:827 msgid " stopped waiting\n" msgstr " Warten beendet\n" -#: pg_ctl.c:821 +#: pg_ctl.c:824 msgid "server is still starting up\n" msgstr "Server startet immer noch\n" -#: pg_ctl.c:825 +#: pg_ctl.c:828 #, c-format msgid "" "%s: could not start server\n" @@ -138,44 +141,44 @@ msgstr "" "%s: konnte Server nicht starten\n" "Prüfen Sie die Logausgabe.\n" -#: pg_ctl.c:831 pg_ctl.c:909 pg_ctl.c:999 +#: pg_ctl.c:834 pg_ctl.c:912 pg_ctl.c:1002 msgid " failed\n" msgstr " Fehler\n" -#: pg_ctl.c:832 +#: pg_ctl.c:835 #, c-format msgid "%s: could not wait for server because of misconfiguration\n" msgstr "%s: konnte wegen Fehlkonfiguration nicht auf Server warten\n" -#: pg_ctl.c:838 +#: pg_ctl.c:841 msgid "server starting\n" msgstr "Server startet\n" -#: pg_ctl.c:853 pg_ctl.c:939 pg_ctl.c:1029 pg_ctl.c:1069 +#: pg_ctl.c:856 pg_ctl.c:942 pg_ctl.c:1032 pg_ctl.c:1072 #, c-format msgid "%s: PID file \"%s\" does not exist\n" msgstr "%s: PID-Datei »%s« existiert nicht\n" -#: pg_ctl.c:854 pg_ctl.c:941 pg_ctl.c:1030 pg_ctl.c:1070 +#: pg_ctl.c:857 pg_ctl.c:944 pg_ctl.c:1033 pg_ctl.c:1073 msgid "Is server running?\n" msgstr "Läuft der Server?\n" -#: pg_ctl.c:860 +#: pg_ctl.c:863 #, c-format msgid "%s: cannot stop server; single-user server is running (PID: %ld)\n" msgstr "" "%s: kann Server nicht anhalten; Einzelbenutzerserver läuft (PID: %ld)\n" -#: pg_ctl.c:868 pg_ctl.c:963 +#: pg_ctl.c:871 pg_ctl.c:966 #, c-format msgid "%s: could not send stop signal (PID: %ld): %s\n" msgstr "%s: konnte Stopp-Signal nicht senden (PID: %ld): %s\n" -#: pg_ctl.c:875 +#: pg_ctl.c:878 msgid "server shutting down\n" msgstr "Server fährt herunter\n" -#: pg_ctl.c:890 pg_ctl.c:978 +#: pg_ctl.c:893 pg_ctl.c:981 msgid "" "WARNING: online backup mode is active\n" "Shutdown will not complete until pg_stop_backup() is called.\n" @@ -186,16 +189,16 @@ msgstr "" "aufgerufen wird.\n" "\n" -#: pg_ctl.c:894 pg_ctl.c:982 +#: pg_ctl.c:897 pg_ctl.c:985 msgid "waiting for server to shut down..." msgstr "warte auf Herunterfahren des Servers..." -#: pg_ctl.c:911 pg_ctl.c:1001 +#: pg_ctl.c:914 pg_ctl.c:1004 #, c-format msgid "%s: server does not shut down\n" msgstr "%s: Server fährt nicht herunter\n" -#: pg_ctl.c:913 pg_ctl.c:1003 +#: pg_ctl.c:916 pg_ctl.c:1006 msgid "" "HINT: The \"-m fast\" option immediately disconnects sessions rather than\n" "waiting for session-initiated disconnection.\n" @@ -203,163 +206,193 @@ msgstr "" "TIPP: Die Option »-m fast« beendet Sitzungen sofort, statt auf das Beenden\n" "durch die Sitzungen selbst zu warten.\n" -#: pg_ctl.c:919 pg_ctl.c:1009 +#: pg_ctl.c:922 pg_ctl.c:1012 msgid "server stopped\n" msgstr "Server angehalten\n" -#: pg_ctl.c:942 pg_ctl.c:1015 +#: pg_ctl.c:945 pg_ctl.c:1018 msgid "starting server anyway\n" msgstr "starte Server trotzdem\n" -#: pg_ctl.c:951 +#: pg_ctl.c:954 #, c-format msgid "%s: cannot restart server; single-user server is running (PID: %ld)\n" msgstr "" "%s: kann Server nicht neu starten; Einzelbenutzerserver läuft (PID: %ld)\n" -#: pg_ctl.c:954 pg_ctl.c:1039 +#: pg_ctl.c:957 pg_ctl.c:1042 msgid "Please terminate the single-user server and try again.\n" msgstr "" "Bitte beenden Sie den Einzelbenutzerserver und versuchen Sie es noch " "einmal.\n" -#: pg_ctl.c:1013 +#: pg_ctl.c:1016 #, c-format msgid "%s: old server process (PID: %ld) seems to be gone\n" msgstr "%s: alter Serverprozess (PID: %ld) scheint verschwunden zu sein\n" -#: pg_ctl.c:1036 +#: pg_ctl.c:1039 #, c-format msgid "%s: cannot reload server; single-user server is running (PID: %ld)\n" msgstr "" "%s: kann Server nicht neu laden; Einzelbenutzerserver läuft (PID: %ld)\n" -#: pg_ctl.c:1045 +#: pg_ctl.c:1048 #, c-format msgid "%s: could not send reload signal (PID: %ld): %s\n" msgstr "%s: konnte Signal zum Neuladen nicht senden (PID: %ld): %s\n" -#: pg_ctl.c:1050 +#: pg_ctl.c:1053 msgid "server signaled\n" msgstr "Signal an Server gesendet\n" -#: pg_ctl.c:1076 +#: pg_ctl.c:1079 #, c-format msgid "%s: cannot promote server; single-user server is running (PID: %ld)\n" -msgstr "%s: kann Server nicht befördern; Einzelbenutzerserver läuft (PID: %ld)\n" +msgstr "" +"%s: kann Server nicht befördern; Einzelbenutzerserver läuft (PID: %ld)\n" -#: pg_ctl.c:1085 +#: pg_ctl.c:1088 #, c-format msgid "%s: cannot promote server; server is not in standby mode\n" msgstr "%s: kann Server nicht befördern; Server ist nicht im Standby-Modus\n" -#: pg_ctl.c:1093 +#: pg_ctl.c:1096 #, c-format msgid "%s: could not create promote signal file \"%s\": %s\n" msgstr "%s: konnte Signaldatei zum Befördern »%s« nicht erzeugen: %s\n" -#: pg_ctl.c:1099 +#: pg_ctl.c:1102 #, c-format msgid "%s: could not write promote signal file \"%s\": %s\n" msgstr "%s: konnte Signaldatei zum Befördern »%s« nicht schreiben: %s\n" -#: pg_ctl.c:1107 +#: pg_ctl.c:1110 #, c-format msgid "%s: could not send promote signal (PID: %ld): %s\n" msgstr "%s: konnte Signal zum Befördern nicht senden (PID: %ld): %s\n" -#: pg_ctl.c:1110 +#: pg_ctl.c:1113 #, c-format msgid "%s: could not remove promote signal file \"%s\": %s\n" msgstr "%s: konnte Signaldatei zum Befördern »%s« nicht entfernen: %s\n" -#: pg_ctl.c:1115 +#: pg_ctl.c:1118 msgid "server promoting\n" msgstr "Server wird befördert\n" -#: pg_ctl.c:1160 +#: pg_ctl.c:1163 #, c-format msgid "%s: single-user server is running (PID: %ld)\n" msgstr "%s: Einzelbenutzerserver läuft (PID: %ld)\n" -#: pg_ctl.c:1172 +#: pg_ctl.c:1175 #, c-format msgid "%s: server is running (PID: %ld)\n" msgstr "%s: Server läuft (PID: %ld)\n" -#: pg_ctl.c:1183 +#: pg_ctl.c:1186 #, c-format msgid "%s: no server running\n" msgstr "%s: kein Server läuft\n" -#: pg_ctl.c:1194 +#: pg_ctl.c:1197 #, c-format msgid "%s: could not send signal %d (PID: %ld): %s\n" msgstr "%s: konnte Signal %d nicht senden (PID: %ld): %s\n" -#: pg_ctl.c:1228 +#: pg_ctl.c:1231 #, c-format msgid "%s: could not find own program executable\n" msgstr "%s: konnte eigene Programmdatei nicht finden\n" -#: pg_ctl.c:1238 +#: pg_ctl.c:1241 #, c-format msgid "%s: could not find postgres program executable\n" msgstr "%s: konnte »postgres« Programmdatei nicht finden\n" -#: pg_ctl.c:1300 pg_ctl.c:1332 +#: pg_ctl.c:1306 pg_ctl.c:1338 #, c-format msgid "%s: could not open service manager\n" msgstr "%s: konnte Servicemanager nicht öffnen\n" -#: pg_ctl.c:1306 +#: pg_ctl.c:1312 #, c-format msgid "%s: service \"%s\" already registered\n" msgstr "%s: Systemdienst »%s« ist bereits registriert\n" -#: pg_ctl.c:1317 +#: pg_ctl.c:1323 #, c-format msgid "%s: could not register service \"%s\": error code %d\n" msgstr "%s: konnte Systemdienst »%s« nicht registrieren: Fehlercode %d\n" -#: pg_ctl.c:1338 +#: pg_ctl.c:1344 #, c-format msgid "%s: service \"%s\" not registered\n" msgstr "%s: Systemdienst »%s« ist nicht registriert\n" -#: pg_ctl.c:1345 +#: pg_ctl.c:1351 #, c-format msgid "%s: could not open service \"%s\": error code %d\n" msgstr "%s: konnte Systemdienst »%s« nicht öffnen: Fehlercode %d\n" -#: pg_ctl.c:1352 +#: pg_ctl.c:1358 #, c-format msgid "%s: could not unregister service \"%s\": error code %d\n" msgstr "%s: konnte Systemdienst »%s« nicht deregistrieren: Fehlercode %d\n" -#: pg_ctl.c:1438 +#: pg_ctl.c:1444 msgid "Waiting for server startup...\n" msgstr "Warte auf Start des Servers...\n" -#: pg_ctl.c:1441 +#: pg_ctl.c:1447 msgid "Timed out waiting for server startup\n" msgstr "Zeitüberschreitung beim Warten auf Start des Servers\n" -#: pg_ctl.c:1445 +#: pg_ctl.c:1451 msgid "Server started and accepting connections\n" msgstr "Server wurde gestartet und nimmt Verbindungen an\n" -#: pg_ctl.c:1495 +#: pg_ctl.c:1501 #, c-format msgid "%s: could not start service \"%s\": error code %d\n" msgstr "%s: konnte Systemdienst »%s« nicht starten: Fehlercode %d\n" -#: pg_ctl.c:1732 +#: pg_ctl.c:1573 +#, 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" + +#: pg_ctl.c:1582 +#, c-format +msgid "%s: could not open process token: %lu\n" +msgstr "%s: konnte Prozess-Token nicht öffnen: %lu\n" + +#: pg_ctl.c:1595 +#, c-format +msgid "%s: could not allocate SIDs: %lu\n" +msgstr "%s: konnte SIDs nicht erzeugen: %lu\n" + +#: pg_ctl.c:1614 +#, c-format +msgid "%s: could not create restricted token: %lu\n" +msgstr "%s: konnte beschränktes Token nicht erzeugen: %lu\n" + +#: pg_ctl.c:1652 +#, c-format +msgid "%s: WARNING: could not locate all job object functions in system API\n" +msgstr "" +"%s: WARNUNG: konnte nicht alle Job-Objekt-Funtionen in der System-API " +"finden\n" + +#: pg_ctl.c:1738 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n" -#: pg_ctl.c:1740 +#: pg_ctl.c:1746 #, c-format msgid "" "%s is a utility to initialize, start, stop, or control a PostgreSQL server.\n" @@ -369,17 +402,17 @@ msgstr "" "starten, anzuhalten oder zu steuern.\n" "\n" -#: pg_ctl.c:1741 +#: pg_ctl.c:1747 #, c-format msgid "Usage:\n" msgstr "Aufruf:\n" -#: pg_ctl.c:1742 +#: pg_ctl.c:1748 #, c-format msgid " %s init[db] [-D DATADIR] [-s] [-o \"OPTIONS\"]\n" msgstr " %s init[db] [-D DATENVERZ] [-s] [-o \"OPTIONEN\"]\n" -#: pg_ctl.c:1743 +#: pg_ctl.c:1749 #, c-format msgid "" " %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS" @@ -388,12 +421,12 @@ msgstr "" " %s start [-w] [-t SEK] [-D DATENVERZ] [-s] [-l DATEINAME] [-o \"OPTIONEN" "\"]\n" -#: pg_ctl.c:1744 +#: pg_ctl.c:1750 #, c-format msgid " %s stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" msgstr " %s stop [-W] [-t SEK] [-D DATENVERZ] [-s] [-m SHUTDOWN-MODUS]\n" -#: pg_ctl.c:1745 +#: pg_ctl.c:1751 #, c-format msgid "" " %s restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" @@ -402,27 +435,27 @@ msgstr "" " %s restart [-w] [-t SEK] [-D DATENVERZ] [-s] [-m SHUTDOWN-MODUS]\n" " [-o \"OPTIONEN\"]\n" -#: pg_ctl.c:1747 +#: pg_ctl.c:1753 #, c-format msgid " %s reload [-D DATADIR] [-s]\n" msgstr " %s reload [-D DATENVERZ] [-s]\n" -#: pg_ctl.c:1748 +#: pg_ctl.c:1754 #, c-format msgid " %s status [-D DATADIR]\n" msgstr " %s status [-D DATENVERZ]\n" -#: pg_ctl.c:1749 +#: pg_ctl.c:1755 #, c-format msgid " %s promote [-D DATADIR] [-s]\n" msgstr " %s promote [-D DATENVERZ] [-s]\n" -#: pg_ctl.c:1750 +#: pg_ctl.c:1756 #, c-format msgid " %s kill SIGNALNAME PID\n" msgstr " %s kill SIGNALNAME PID\n" -#: pg_ctl.c:1752 +#: pg_ctl.c:1758 #, c-format msgid "" " %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" @@ -432,12 +465,12 @@ msgstr "" "DATENVERZ]\n" " [-S STARTTYP] [-w] [-t SEK] [-o \"OPTIONEN\"]\n" -#: pg_ctl.c:1754 +#: pg_ctl.c:1760 #, c-format msgid " %s unregister [-N SERVICENAME]\n" msgstr " %s unregister [-N DIENSTNAME]\n" -#: pg_ctl.c:1757 +#: pg_ctl.c:1763 #, c-format msgid "" "\n" @@ -446,44 +479,44 @@ msgstr "" "\n" "Optionen für alle Modi:\n" -#: pg_ctl.c:1758 +#: pg_ctl.c:1764 #, c-format msgid " -D, --pgdata DATADIR location of the database storage area\n" msgstr " -D, --pgdata DATENVERZ Datenbankverzeichnis\n" -#: pg_ctl.c:1759 +#: pg_ctl.c:1765 #, c-format msgid " -s, --silent only print errors, no informational messages\n" msgstr "" " -s, --silent zeige nur Fehler, keine Informationsmeldungen\n" -#: pg_ctl.c:1760 +#: pg_ctl.c:1766 #, c-format msgid " -t SECS seconds to wait when using -w option\n" msgstr " -t SEK Sekunden zu warten bei Option -w\n" -#: pg_ctl.c:1761 +#: pg_ctl.c:1767 #, c-format msgid " -w wait until operation completes\n" msgstr " -w warte bis Operation abgeschlossen ist\n" -#: pg_ctl.c:1762 +#: pg_ctl.c:1768 #, c-format msgid " -W do not wait until operation completes\n" msgstr " -W warte nicht bis Operation abgeschlossen ist\n" -#: pg_ctl.c:1763 +#: pg_ctl.c:1769 #, c-format msgid " --help show this help, then exit\n" msgstr " --help diese Hilfe anzeigen, dann beenden\n" -#: pg_ctl.c:1764 +#: pg_ctl.c:1770 #, c-format msgid " --version output version information, then exit\n" msgstr "" " --version Versionsinformationen anzeigen, dann beenden\n" -#: pg_ctl.c:1765 +#: pg_ctl.c:1771 #, c-format msgid "" "(The default is to wait for shutdown, but not for start or restart.)\n" @@ -493,14 +526,14 @@ msgstr "" "Start oder Neustart.)\n" "\n" -#: pg_ctl.c:1766 +#: pg_ctl.c:1772 #, c-format msgid "If the -D option is omitted, the environment variable PGDATA is used.\n" msgstr "" "Wenn die Option -D weggelassen wird, dann wird die Umgebungsvariable\n" "PGDATA verwendet.\n" -#: pg_ctl.c:1768 +#: pg_ctl.c:1774 #, c-format msgid "" "\n" @@ -509,24 +542,24 @@ msgstr "" "\n" "Optionen für Start oder Neustart:\n" -#: pg_ctl.c:1770 +#: pg_ctl.c:1776 #, c-format msgid " -c, --core-files allow postgres to produce core files\n" msgstr " -c, --core-files erlaubt postgres Core-Dateien zu erzeugen\n" -#: pg_ctl.c:1772 +#: pg_ctl.c:1778 #, c-format msgid " -c, --core-files not applicable on this platform\n" msgstr " -c, --core-files betrifft diese Plattform nicht\n" -#: pg_ctl.c:1774 +#: pg_ctl.c:1780 #, c-format msgid " -l, --log FILENAME write (or append) server log to FILENAME\n" msgstr "" " -l, --log DATEINAME schreibe Serverlog in DATEINAME (wird an\n" " bestehende Datei angehängt)\n" -#: pg_ctl.c:1775 +#: pg_ctl.c:1781 #, c-format msgid "" " -o OPTIONS command line options to pass to postgres\n" @@ -535,12 +568,12 @@ msgstr "" " -o OPTIONEN Kommandozeilenoptionen für postgres (PostgreSQL-\n" " Serverprogramm) oder initdb\n" -#: pg_ctl.c:1777 +#: pg_ctl.c:1783 #, c-format msgid " -p PATH-TO-POSTGRES normally not necessary\n" msgstr " -p PFAD-ZU-POSTGRES normalerweise nicht notwendig\n" -#: pg_ctl.c:1778 +#: pg_ctl.c:1784 #, c-format msgid "" "\n" @@ -549,12 +582,12 @@ msgstr "" "\n" "Optionen für Anhalten oder Neustart:\n" -#: pg_ctl.c:1779 +#: pg_ctl.c:1785 #, c-format msgid " -m SHUTDOWN-MODE can be \"smart\", \"fast\", or \"immediate\"\n" msgstr " -m SHUTDOWN-MODUS kann »smart«, »fast« oder »immediate« sein\n" -#: pg_ctl.c:1781 +#: pg_ctl.c:1787 #, c-format msgid "" "\n" @@ -563,18 +596,18 @@ msgstr "" "\n" "Shutdown-Modi sind:\n" -#: pg_ctl.c:1782 +#: pg_ctl.c:1788 #, c-format msgid " smart quit after all clients have disconnected\n" msgstr "" " smart beende nachdem alle Clientverbindungen geschlossen sind\n" -#: pg_ctl.c:1783 +#: pg_ctl.c:1789 #, c-format msgid " fast quit directly, with proper shutdown\n" msgstr " fast beende direkt, mit richtigem Shutdown\n" -#: pg_ctl.c:1784 +#: pg_ctl.c:1790 #, c-format msgid "" " immediate quit without complete shutdown; will lead to recovery on " @@ -583,7 +616,7 @@ msgstr "" " immediate beende ohne vollständigen Shutdown; führt zu Recovery-Lauf\n" " beim Neustart\n" -#: pg_ctl.c:1786 +#: pg_ctl.c:1792 #, c-format msgid "" "\n" @@ -592,7 +625,7 @@ msgstr "" "\n" "Erlaubte Signalnamen für »kill«:\n" -#: pg_ctl.c:1790 +#: pg_ctl.c:1796 #, c-format msgid "" "\n" @@ -601,32 +634,32 @@ msgstr "" "\n" "Optionen für »register« und »unregister«:\n" -#: pg_ctl.c:1791 +#: pg_ctl.c:1797 #, c-format msgid "" " -N SERVICENAME service name with which to register PostgreSQL server\n" msgstr "" " -N DIENSTNAME Systemdienstname für Registrierung des PostgreSQL-Servers\n" -#: pg_ctl.c:1792 +#: pg_ctl.c:1798 #, c-format msgid " -P PASSWORD password of account to register PostgreSQL server\n" msgstr "" " -P PASSWORD Passwort des Benutzers für Registrierung des PostgreSQL-" "Servers\n" -#: pg_ctl.c:1793 +#: pg_ctl.c:1799 #, c-format msgid " -U USERNAME user name of account to register PostgreSQL server\n" msgstr "" " -U USERNAME Benutzername für Registrierung des PostgreSQL-Servers\n" -#: pg_ctl.c:1794 +#: pg_ctl.c:1800 #, c-format msgid " -S START-TYPE service start type to register PostgreSQL server\n" msgstr " -S STARTTYP Systemdienst-Starttyp für PostgreSQL-Server\n" -#: pg_ctl.c:1796 +#: pg_ctl.c:1802 #, c-format msgid "" "\n" @@ -635,7 +668,7 @@ msgstr "" "\n" "Starttypen sind:\n" -#: pg_ctl.c:1797 +#: pg_ctl.c:1803 #, c-format msgid "" " auto start service automatically during system startup (default)\n" @@ -643,12 +676,12 @@ msgstr "" " auto Dienst automatisch starten beim Start des Betriebssystems\n" " (Voreinstellung)\n" -#: pg_ctl.c:1798 +#: pg_ctl.c:1804 #, c-format msgid " demand start service on demand\n" msgstr " demand Dienst bei Bedarf starten\n" -#: pg_ctl.c:1801 +#: pg_ctl.c:1807 #, c-format msgid "" "\n" @@ -657,22 +690,22 @@ msgstr "" "\n" "Berichten Sie Fehler an .\n" -#: pg_ctl.c:1826 +#: pg_ctl.c:1832 #, c-format msgid "%s: unrecognized shutdown mode \"%s\"\n" msgstr "%s: unbekannter Shutdown-Modus »%s«\n" -#: pg_ctl.c:1859 +#: pg_ctl.c:1865 #, c-format msgid "%s: unrecognized signal name \"%s\"\n" msgstr "%s: unbekannter Signalname »%s«\n" -#: pg_ctl.c:1876 +#: pg_ctl.c:1882 #, c-format msgid "%s: unrecognized start type \"%s\"\n" msgstr "%s: unbekannter Starttyp »%s«\n" -#: pg_ctl.c:1941 +#: pg_ctl.c:1947 #, c-format msgid "" "%s: cannot be run as root\n" @@ -683,32 +716,32 @@ msgstr "" "Bitte loggen Sie sich (z.B. mit »su«) als der (unprivilegierte) Benutzer\n" "ein, der Eigentümer des Serverprozesses sein soll.\n" -#: pg_ctl.c:2012 +#: pg_ctl.c:2018 #, c-format msgid "%s: -S option not supported on this platform\n" msgstr "%s: Option -S wird auf dieser Plattform nicht unterstützt\n" -#: pg_ctl.c:2059 +#: pg_ctl.c:2065 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: zu viele Kommandozeilenargumente (das erste ist »%s«)\n" -#: pg_ctl.c:2083 +#: pg_ctl.c:2089 #, c-format msgid "%s: missing arguments for kill mode\n" msgstr "%s: fehlende Argumente für »kill«-Modus\n" -#: pg_ctl.c:2101 +#: pg_ctl.c:2107 #, c-format msgid "%s: unrecognized operation mode \"%s\"\n" msgstr "%s: unbekannter Operationsmodus »%s«\n" -#: pg_ctl.c:2111 +#: pg_ctl.c:2117 #, c-format msgid "%s: no operation specified\n" msgstr "%s: keine Operation angegeben\n" -#: pg_ctl.c:2127 +#: pg_ctl.c:2133 #, c-format msgid "" "%s: no database directory specified and environment variable PGDATA unset\n" diff --git a/src/bin/pg_ctl/po/es.po b/src/bin/pg_ctl/po/es.po index c69a475834..981bc8ffde 100644 --- a/src/bin/pg_ctl/po/es.po +++ b/src/bin/pg_ctl/po/es.po @@ -1,57 +1,85 @@ # Spanish translation of pg_ctl. # -# Copyright (C) 2004-2010 PostgreSQL Global Development Group +# Copyright (C) 2004-2012 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # -# Alvaro Herrera , 2004-2010 -# -# pgtranslation Id: pg_ctl.po,v 1.8 2010/04/26 22:09:16 alvherre Exp $ +# Alvaro Herrera , 2004-2012 # msgid "" msgstr "" -"Project-Id-Version: pg_ctl (PostgreSQL 9.0)\n" +"Project-Id-Version: pg_ctl (PostgreSQL 9.1)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-04-26 21:21+0000\n" -"PO-Revision-Date: 2010-04-26 18:09-0400\n" +"POT-Creation-Date: 2013-08-26 19:44+0000\n" +"PO-Revision-Date: 2012-02-21 22:53-0300\n" "Last-Translator: Álvaro Herrera \n" "Language-Team: PgSQL Español \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: pg_ctl.c:225 pg_ctl.c:240 pg_ctl.c:1834 +#: pg_ctl.c:238 pg_ctl.c:253 pg_ctl.c:2070 #, c-format msgid "%s: out of memory\n" msgstr "%s: memoria agotada\n" -#: pg_ctl.c:274 +#: pg_ctl.c:287 #, c-format msgid "%s: could not open PID file \"%s\": %s\n" msgstr "%s: no se pudo abrir el archivo de PID «%s»: %s\n" -#: pg_ctl.c:281 +#: pg_ctl.c:294 #, c-format msgid "%s: invalid data in PID file \"%s\"\n" msgstr "%s: datos no válidos en archivo de PID «%s»\n" -#: pg_ctl.c:557 +#: pg_ctl.c:505 +#, c-format +msgid "" +"\n" +"%s: -w option is not supported when starting a pre-9.1 server\n" +msgstr "" +"\n" +"%s: la opción -w no está soportada cuando se inicia un servidor anterior a " +"9.1\n" + +#: pg_ctl.c:575 +#, c-format +msgid "" +"\n" +"%s: -w option cannot use a relative socket directory specification\n" +msgstr "" +"\n" +"%s: la opción -w no puede usar una especificación relativa de directorio\n" + +#: pg_ctl.c:623 +#, c-format +msgid "" +"\n" +"%s: this data directory appears to be running a pre-existing postmaster\n" +msgstr "" +"\n" +"%s: este directorio de datos parece estar ejecutando un postmaster pre-" +"existente\n" + +#: pg_ctl.c:673 #, c-format msgid "%s: cannot set core file size limit; disallowed by hard limit\n" msgstr "" "%s: no se puede establecer el límite de archivos de volcado;\n" "impedido por un límite duro\n" -#: pg_ctl.c:582 +#: pg_ctl.c:698 #, c-format msgid "%s: could not read file \"%s\"\n" msgstr "%s: no se pudo leer el archivo «%s»\n" -#: pg_ctl.c:587 +#: pg_ctl.c:703 #, c-format msgid "%s: option file \"%s\" must have exactly one line\n" msgstr "%s: archivo de opciones «%s» debe tener exactamente una línea\n" -#: pg_ctl.c:635 +#: pg_ctl.c:751 #, c-format msgid "" "The program \"%s\" is needed by %s but was not found in the\n" @@ -62,7 +90,7 @@ msgstr "" "directorio que «%s».\n" "Verifique su instalación.\n" -#: pg_ctl.c:641 +#: pg_ctl.c:757 #, c-format msgid "" "The program \"%s\" was found by \"%s\"\n" @@ -73,24 +101,44 @@ msgstr "" "de la misma versión que «%s».\n" "Verifique su instalación.\n" -#: pg_ctl.c:674 +#: pg_ctl.c:790 #, c-format msgid "%s: database system initialization failed\n" msgstr "%s: falló la creación de la base de datos\n" -#: pg_ctl.c:690 +#: pg_ctl.c:805 #, c-format msgid "%s: another server might be running; trying to start server anyway\n" msgstr "" "%s: otro servidor puede estar en ejecución; tratando de iniciarlo de todas " "formas.\n" -#: pg_ctl.c:727 +#: pg_ctl.c:842 #, c-format msgid "%s: could not start server: exit code was %d\n" msgstr "%s: no se pudo iniciar el servidor: el código de retorno fue %d\n" -#: pg_ctl.c:738 pg_ctl.c:751 +#: pg_ctl.c:849 +msgid "waiting for server to start..." +msgstr "esperando que el servidor se inicie..." + +#: pg_ctl.c:854 pg_ctl.c:955 pg_ctl.c:1046 +msgid " done\n" +msgstr " listo\n" + +#: pg_ctl.c:855 +msgid "server started\n" +msgstr "servidor iniciado\n" + +#: pg_ctl.c:858 pg_ctl.c:862 +msgid " stopped waiting\n" +msgstr " abandonando la espera\n" + +#: pg_ctl.c:859 +msgid "server is still starting up\n" +msgstr "servidor aún iniciándose\n" + +#: pg_ctl.c:863 #, c-format msgid "" "%s: could not start server\n" @@ -99,48 +147,46 @@ msgstr "" "%s: no se pudo iniciar el servidor.\n" "Examine el registro del servidor.\n" -#: pg_ctl.c:747 -msgid "waiting for server to start..." -msgstr "esperando que el servidor se inicie..." - -#: pg_ctl.c:758 pg_ctl.c:831 pg_ctl.c:911 -msgid " done\n" -msgstr " listo\n" +#: pg_ctl.c:869 pg_ctl.c:947 pg_ctl.c:1037 +msgid " failed\n" +msgstr " falló\n" -#: pg_ctl.c:759 -msgid "server started\n" -msgstr "servidor iniciado\n" +#: pg_ctl.c:870 +#, c-format +msgid "%s: could not wait for server because of misconfiguration\n" +msgstr "" +"%s: no se pudo esperar al servidor debido a un error de configuración\n" -#: pg_ctl.c:763 +#: pg_ctl.c:876 msgid "server starting\n" msgstr "servidor iniciándose\n" -#: pg_ctl.c:778 pg_ctl.c:853 pg_ctl.c:933 +#: pg_ctl.c:891 pg_ctl.c:977 pg_ctl.c:1067 pg_ctl.c:1107 #, c-format msgid "%s: PID file \"%s\" does not exist\n" msgstr "%s: el archivo de PID «%s» no existe\n" -#: pg_ctl.c:779 pg_ctl.c:855 pg_ctl.c:934 +#: pg_ctl.c:892 pg_ctl.c:979 pg_ctl.c:1068 pg_ctl.c:1108 msgid "Is server running?\n" msgstr "¿Está el servidor en ejecución?\n" -#: pg_ctl.c:785 +#: pg_ctl.c:898 #, c-format msgid "%s: cannot stop server; single-user server is running (PID: %ld)\n" msgstr "" "%s: no se puede detener el servidor;\n" "un servidor en modo mono-usuario está en ejecución (PID: %ld)\n" -#: pg_ctl.c:793 pg_ctl.c:877 +#: pg_ctl.c:906 pg_ctl.c:1001 #, c-format msgid "%s: could not send stop signal (PID: %ld): %s\n" msgstr "%s: falló la señal de detención (PID: %ld): %s\n" -#: pg_ctl.c:800 +#: pg_ctl.c:913 msgid "server shutting down\n" msgstr "servidor deteniéndose\n" -#: pg_ctl.c:807 pg_ctl.c:884 +#: pg_ctl.c:928 pg_ctl.c:1016 msgid "" "WARNING: online backup mode is active\n" "Shutdown will not complete until pg_stop_backup() is called.\n" @@ -151,166 +197,231 @@ msgstr "" "().\n" "\n" -#: pg_ctl.c:811 pg_ctl.c:888 +#: pg_ctl.c:932 pg_ctl.c:1020 msgid "waiting for server to shut down..." msgstr "esperando que el servidor se detenga..." -#: pg_ctl.c:826 pg_ctl.c:905 -msgid " failed\n" -msgstr " falló\n" - -#: pg_ctl.c:828 pg_ctl.c:907 +#: pg_ctl.c:949 pg_ctl.c:1039 #, c-format msgid "%s: server does not shut down\n" msgstr "%s: el servidor no se detiene\n" -#: pg_ctl.c:833 pg_ctl.c:912 +#: pg_ctl.c:951 pg_ctl.c:1041 +msgid "" +"HINT: The \"-m fast\" option immediately disconnects sessions rather than\n" +"waiting for session-initiated disconnection.\n" +msgstr "" +"SUGERENCIA: La opción «-m fast» desconecta las sesiones inmediatamente\n" +"en lugar de esperar que cada sesión finalice por sí misma.\n" + +#: pg_ctl.c:957 pg_ctl.c:1047 msgid "server stopped\n" msgstr "servidor detenido\n" -#: pg_ctl.c:856 pg_ctl.c:918 +#: pg_ctl.c:980 pg_ctl.c:1053 msgid "starting server anyway\n" msgstr "iniciando el servidor de todas maneras\n" -#: pg_ctl.c:865 +#: pg_ctl.c:989 #, c-format msgid "%s: cannot restart server; single-user server is running (PID: %ld)\n" msgstr "" "%s: no se puede reiniciar el servidor;\n" "un servidor en modo mono-usuario está en ejecución (PID: %ld)\n" -#: pg_ctl.c:868 pg_ctl.c:943 +#: pg_ctl.c:992 pg_ctl.c:1077 msgid "Please terminate the single-user server and try again.\n" msgstr "Por favor termine el servidor mono-usuario e intente nuevamente.\n" -#: pg_ctl.c:916 +#: pg_ctl.c:1051 #, c-format msgid "%s: old server process (PID: %ld) seems to be gone\n" msgstr "%s: el proceso servidor antiguo (PID: %ld) parece no estar\n" -#: pg_ctl.c:940 +#: pg_ctl.c:1074 #, c-format msgid "%s: cannot reload server; single-user server is running (PID: %ld)\n" msgstr "" "%s: no se puede recargar el servidor;\n" "un servidor en modo mono-usuario está en ejecución (PID: %ld)\n" -#: pg_ctl.c:949 +#: pg_ctl.c:1083 #, c-format msgid "%s: could not send reload signal (PID: %ld): %s\n" msgstr "%s: la señal de recarga falló (PID: %ld): %s\n" -#: pg_ctl.c:954 +#: pg_ctl.c:1088 msgid "server signaled\n" msgstr "se ha enviado una señal al servidor\n" -#: pg_ctl.c:998 +#: pg_ctl.c:1114 +#, c-format +msgid "%s: cannot promote server; single-user server is running (PID: %ld)\n" +msgstr "" +"%s: no se puede promover el servidor;\n" +"un servidor en modo mono-usuario está en ejecución (PID: %ld)\n" + +#: pg_ctl.c:1123 +#, c-format +msgid "%s: cannot promote server; server is not in standby mode\n" +msgstr "" +"%s: no se puede promover el servidor;\n" +"el servidor no está en modo «standby»\n" + +#: pg_ctl.c:1131 +#, c-format +msgid "%s: could not create promote signal file \"%s\": %s\n" +msgstr "%s: no se pudo crear el archivo de señal de promoción «%s»: %s\n" + +#: pg_ctl.c:1137 +#, c-format +msgid "%s: could not write promote signal file \"%s\": %s\n" +msgstr "%s: no se pudo escribir al archivo de señal de promoción «%s»: %s\n" + +#: pg_ctl.c:1145 +#, c-format +msgid "%s: could not send promote signal (PID: %ld): %s\n" +msgstr "%s: no se pudo enviar la señal de promoción (PID: %ld): %s\n" + +#: pg_ctl.c:1148 +#, c-format +msgid "%s: could not remove promote signal file \"%s\": %s\n" +msgstr "%s: no se pudo eliminar el archivo de señal de promoción «%s»: %s\n" + +#: pg_ctl.c:1153 +msgid "server promoting\n" +msgstr "servidor promoviendo\n" + +#: pg_ctl.c:1198 #, c-format msgid "%s: single-user server is running (PID: %ld)\n" msgstr "%s: un servidor en modo mono-usuario está en ejecución (PID: %ld)\n" -#: pg_ctl.c:1010 +#: pg_ctl.c:1210 #, c-format msgid "%s: server is running (PID: %ld)\n" msgstr "%s: el servidor está en ejecución (PID: %ld)\n" -#: pg_ctl.c:1021 +#: pg_ctl.c:1221 #, c-format msgid "%s: no server running\n" msgstr "%s: no hay servidor en ejecución\n" -#: pg_ctl.c:1032 +#: pg_ctl.c:1232 #, c-format msgid "%s: could not send signal %d (PID: %ld): %s\n" msgstr "%s: no se pudo enviar la señal %d (PID: %ld): %s\n" -#: pg_ctl.c:1066 +#: pg_ctl.c:1266 #, c-format msgid "%s: could not find own program executable\n" msgstr "%s: no se pudo encontrar el propio ejecutable\n" -#: pg_ctl.c:1076 +#: pg_ctl.c:1276 #, c-format msgid "%s: could not find postgres program executable\n" msgstr "%s: no se pudo encontrar el ejecutable postgres\n" -#: pg_ctl.c:1138 pg_ctl.c:1170 +#: pg_ctl.c:1341 pg_ctl.c:1373 #, c-format msgid "%s: could not open service manager\n" msgstr "%s: no se pudo abrir el gestor de servicios\n" -#: pg_ctl.c:1144 +#: pg_ctl.c:1347 #, c-format msgid "%s: service \"%s\" already registered\n" msgstr "%s: el servicio «%s» ya está registrado\n" -#: pg_ctl.c:1155 +#: pg_ctl.c:1358 #, c-format msgid "%s: could not register service \"%s\": error code %d\n" msgstr "%s: no se pudo registrar el servicio «%s»: código de error %d\n" -#: pg_ctl.c:1176 +#: pg_ctl.c:1379 #, c-format msgid "%s: service \"%s\" not registered\n" msgstr "%s: el servicio «%s» no ha sido registrado\n" -#: pg_ctl.c:1183 +#: pg_ctl.c:1386 #, c-format msgid "%s: could not open service \"%s\": error code %d\n" msgstr "%s: no se pudo abrir el servicio «%s»: código de error %d\n" -#: pg_ctl.c:1190 +#: pg_ctl.c:1393 #, c-format msgid "%s: could not unregister service \"%s\": error code %d\n" msgstr "%s: no se pudo dar de baja el servicio «%s»: código de error %d\n" -#: pg_ctl.c:1276 +#: pg_ctl.c:1479 msgid "Waiting for server startup...\n" msgstr "Esperando que el servidor se inicie...\n" -#: pg_ctl.c:1279 +#: pg_ctl.c:1482 msgid "Timed out waiting for server startup\n" msgstr "Se agotó el tiempo de espera al inicio del servidor\n" -#: pg_ctl.c:1283 +#: pg_ctl.c:1486 msgid "Server started and accepting connections\n" msgstr "Servidor iniciado y aceptando conexiones\n" -#: pg_ctl.c:1333 +#: pg_ctl.c:1536 #, c-format msgid "%s: could not start service \"%s\": error code %d\n" msgstr "%s: no se pudo iniciar el servicio «%s»: código de error %d\n" -#: pg_ctl.c:1568 +#: pg_ctl.c:1608 +#, 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" + +#: pg_ctl.c:1617 +#, c-format +msgid "%s: could not open process token: %lu\n" +msgstr "%s: no se pudo abrir el token de proceso: %lu\n" + +#: pg_ctl.c:1630 +#, c-format +msgid "%s: could not allocate SIDs: %lu\n" +msgstr "%s: no se pudo emplazar los SIDs: %lu\n" + +#: pg_ctl.c:1649 +#, c-format +msgid "%s: could not create restricted token: %lu\n" +msgstr "%s: no se pudo crear el token restringido: %lu\n" + +#: pg_ctl.c:1687 +#, c-format +msgid "%s: WARNING: could not locate all job object functions in system API\n" +msgstr "" +"%s: ATENCIÓN: no fue posible encontrar todas las funciones de gestión de " +"tareas en la API del sistema\n" + +#: pg_ctl.c:1773 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Use «%s --help» para obtener más información.\n" -#: pg_ctl.c:1576 +#: pg_ctl.c:1781 #, c-format msgid "" -"%s is a utility to start, stop, restart, reload configuration files,\n" -"report the status of a PostgreSQL server, or signal a PostgreSQL process.\n" +"%s is a utility to initialize, start, stop, or control a PostgreSQL server.\n" "\n" msgstr "" -"%s es un programa para iniciar, detener, reiniciar, recargar archivos de\n" -"configuración, reportar el estado de un servidor PostgreSQL o enviar una\n" -"señal a un proceso PostgreSQL.\n" -"\n" +"%s es un programa para inicializar, iniciar, detener o controlar un servidor " +"PostgreSQL.\n" -#: pg_ctl.c:1578 +#: pg_ctl.c:1782 #, c-format msgid "Usage:\n" msgstr "Empleo:\n" -#: pg_ctl.c:1579 +#: pg_ctl.c:1783 #, c-format -msgid "" -" %s init[db] [-D DATADIR] [-s] [-o \"OPTIONS\"]\n" -msgstr "" -" %s init[db] [-D DATADIR] [-s] [-o «OPCIONES»]\n" +msgid " %s init[db] [-D DATADIR] [-s] [-o \"OPTIONS\"]\n" +msgstr " %s init[db] [-D DATADIR] [-s] [-o «OPCIONES»]\n" -#: pg_ctl.c:1580 +#: pg_ctl.c:1784 #, c-format msgid "" " %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS" @@ -318,12 +429,12 @@ msgid "" msgstr "" " %s start [-w] [-t SEGS] [-D DATADIR] [-s] [-l ARCHIVO] [-o «OPCIONES»]\n" -#: pg_ctl.c:1581 +#: pg_ctl.c:1785 #, c-format msgid " %s stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" msgstr " %s stop [-W] [-t SEGS] [-D DATADIR] [-s] [-m MODO-DETENCIÓN]\n" -#: pg_ctl.c:1582 +#: pg_ctl.c:1786 #, c-format msgid "" " %s restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" @@ -332,36 +443,41 @@ msgstr "" " %s restart [-w] [-t SEGS] [-D DATADIR] [-s] [-m MODO-DETENCIÓN]\n" " [-o «OPCIONES»]\n" -#: pg_ctl.c:1584 +#: pg_ctl.c:1788 #, c-format msgid " %s reload [-D DATADIR] [-s]\n" msgstr " %s reload [-D DATADIR] [-s]\n" -#: pg_ctl.c:1585 +#: pg_ctl.c:1789 #, c-format msgid " %s status [-D DATADIR]\n" msgstr " %s status [-D DATADIR]\n" -#: pg_ctl.c:1586 +#: pg_ctl.c:1790 +#, c-format +msgid " %s promote [-D DATADIR] [-s]\n" +msgstr " %s promote [-D DATADIR] [-s]\n" + +#: pg_ctl.c:1791 #, c-format msgid " %s kill SIGNALNAME PID\n" msgstr " %s kill NOMBRE-SEÑAL ID-DE-PROCESO\n" -#: pg_ctl.c:1588 +#: pg_ctl.c:1793 #, c-format msgid "" " %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" -" [-w] [-t SECS] [-o \"OPTIONS\"]\n" +" [-S START-TYPE] [-w] [-t SECS] [-o \"OPTIONS\"]\n" msgstr "" " %s register [-N SERVICIO] [-U USUARIO] [-P PASSWORD] [-D DATADIR]\n" -" [-w] [-t SEGS] [-o «OPCIONES»]\n" +" [-S TIPO-INICIO] [-w] [-t SEGS] [-o «OPCIONES»]\n" -#: pg_ctl.c:1590 +#: pg_ctl.c:1795 #, c-format msgid " %s unregister [-N SERVICENAME]\n" msgstr " %s unregister [-N SERVICIO]\n" -#: pg_ctl.c:1593 +#: pg_ctl.c:1798 #, c-format msgid "" "\n" @@ -370,48 +486,48 @@ msgstr "" "\n" "Opciones comunes:\n" -#: pg_ctl.c:1594 +#: pg_ctl.c:1799 #, c-format msgid " -D, --pgdata DATADIR location of the database storage area\n" msgstr "" " -D, --pgdata DATADIR ubicación del área de almacenamiento de datos\n" -#: pg_ctl.c:1595 +#: pg_ctl.c:1800 #, c-format msgid " -s, --silent only print errors, no informational messages\n" msgstr "" " -s, --silent mostrar sólo errores, no mensajes de información\n" -#: pg_ctl.c:1596 +#: pg_ctl.c:1801 #, c-format msgid " -t SECS seconds to wait when using -w option\n" msgstr "" " -t SEGS segundos a esperar cuando se use la opción -w\n" -#: pg_ctl.c:1597 +#: pg_ctl.c:1802 #, c-format msgid " -w wait until operation completes\n" msgstr "" " -w esperar hasta que la operación se haya completado\n" -#: pg_ctl.c:1598 +#: pg_ctl.c:1803 #, c-format msgid " -W do not wait until operation completes\n" msgstr "" " -W no esperar hasta que la operación se haya " "completado\n" -#: pg_ctl.c:1599 +#: pg_ctl.c:1804 #, c-format msgid " --help show this help, then exit\n" msgstr " --help mostrar este texto y salir\n" -#: pg_ctl.c:1600 +#: pg_ctl.c:1805 #, c-format msgid " --version output version information, then exit\n" msgstr " --version mostrar información sobre versión y salir\n" -#: pg_ctl.c:1601 +#: pg_ctl.c:1806 #, c-format msgid "" "(The default is to wait for shutdown, but not for start or restart.)\n" @@ -421,12 +537,12 @@ msgstr "" "reinicios)\n" "\n" -#: pg_ctl.c:1602 +#: pg_ctl.c:1807 #, c-format msgid "If the -D option is omitted, the environment variable PGDATA is used.\n" msgstr "Si la opción -D es omitida, se usa la variable de ambiente PGDATA.\n" -#: pg_ctl.c:1604 +#: pg_ctl.c:1809 #, c-format msgid "" "\n" @@ -435,25 +551,25 @@ msgstr "" "\n" "Opciones para inicio y reinicio:\n" -#: pg_ctl.c:1606 +#: pg_ctl.c:1811 #, c-format msgid " -c, --core-files allow postgres to produce core files\n" msgstr "" " -c, --core-files permite que postgres produzca archivos\n" " de volcado (core)\n" -#: pg_ctl.c:1608 +#: pg_ctl.c:1813 #, c-format msgid " -c, --core-files not applicable on this platform\n" msgstr " -c, --core-files no aplicable en esta plataforma\n" -#: pg_ctl.c:1610 +#: pg_ctl.c:1815 #, c-format msgid " -l, --log FILENAME write (or append) server log to FILENAME\n" msgstr "" " -l --log ARCHIVO guardar el registro del servidor en ARCHIVO.\n" -#: pg_ctl.c:1611 +#: pg_ctl.c:1816 #, c-format msgid "" " -o OPTIONS command line options to pass to postgres\n" @@ -462,12 +578,12 @@ msgstr "" " -o OPCIONES parámetros de línea de órdenes a pasar a postgres\n" " (ejecutable del servidor de PostgreSQL) o initdb\n" -#: pg_ctl.c:1613 +#: pg_ctl.c:1818 #, c-format msgid " -p PATH-TO-POSTGRES normally not necessary\n" msgstr " -p RUTA-A-POSTGRES normalmente no es necesario\n" -#: pg_ctl.c:1614 +#: pg_ctl.c:1819 #, c-format msgid "" "\n" @@ -476,12 +592,12 @@ msgstr "" "\n" "Opciones para detención y reinicio:\n" -#: pg_ctl.c:1615 +#: pg_ctl.c:1820 #, c-format msgid " -m SHUTDOWN-MODE can be \"smart\", \"fast\", or \"immediate\"\n" msgstr " -m MODO-DE-DETENCIÓN puede ser «smart», «fast» o «immediate»\n" -#: pg_ctl.c:1617 +#: pg_ctl.c:1822 #, c-format msgid "" "\n" @@ -490,18 +606,18 @@ msgstr "" "\n" "Modos de detención son:\n" -#: pg_ctl.c:1618 +#: pg_ctl.c:1823 #, c-format msgid " smart quit after all clients have disconnected\n" msgstr "" " smart salir después que todos los clientes se hayan desconectado\n" -#: pg_ctl.c:1619 +#: pg_ctl.c:1824 #, c-format msgid " fast quit directly, with proper shutdown\n" msgstr " fast salir directamente, con apagado apropiado\n" -#: pg_ctl.c:1620 +#: pg_ctl.c:1825 #, c-format msgid "" " immediate quit without complete shutdown; will lead to recovery on " @@ -511,7 +627,7 @@ msgstr "" " en el próximo inicio\n" "\n" -#: pg_ctl.c:1622 +#: pg_ctl.c:1827 #, c-format msgid "" "\n" @@ -520,7 +636,7 @@ msgstr "" "\n" "Nombres de señales permitidos para kill:\n" -#: pg_ctl.c:1626 +#: pg_ctl.c:1831 #, c-format msgid "" "\n" @@ -529,7 +645,7 @@ msgstr "" "\n" "Opciones para registrar y dar de baja:\n" -#: pg_ctl.c:1627 +#: pg_ctl.c:1832 #, c-format msgid "" " -N SERVICENAME service name with which to register PostgreSQL server\n" @@ -537,21 +653,49 @@ msgstr "" " -N SERVICIO nombre de servicio con el cual registrar\n" " el servidor PostgreSQL\n" -#: pg_ctl.c:1628 +#: pg_ctl.c:1833 #, c-format msgid " -P PASSWORD password of account to register PostgreSQL server\n" msgstr "" " -P CONTRASEÑA contraseña de la cuenta con la cual registrar\n" " el servidor PostgreSQL\n" -#: pg_ctl.c:1629 +#: pg_ctl.c:1834 #, c-format msgid " -U USERNAME user name of account to register PostgreSQL server\n" msgstr "" " -U USUARIO nombre de usuario de la cuenta con la cual\n" " registrar el servidor PostgreSQL\n" -#: pg_ctl.c:1632 +#: pg_ctl.c:1835 +#, c-format +msgid " -S START-TYPE service start type to register PostgreSQL server\n" +msgstr "" +" -S TIPO-INICIO tipo de inicio de servicio con que registrar\n" +" el servidor PostgreSQL\n" + +#: pg_ctl.c:1837 +#, c-format +msgid "" +"\n" +"Start types are:\n" +msgstr "" +"\n" +"Tipos de inicio del servicio son:\n" + +#: pg_ctl.c:1838 +#, c-format +msgid "" +" auto start service automatically during system startup (default)\n" +msgstr "" +" auto iniciar automáticamente al inicio del sistema (por omisión)\n" + +#: pg_ctl.c:1839 +#, c-format +msgid " demand start service on demand\n" +msgstr " demand iniciar el servicio en demanda\n" + +#: pg_ctl.c:1842 #, c-format msgid "" "\n" @@ -560,17 +704,22 @@ msgstr "" "\n" "Reporte errores a .\n" -#: pg_ctl.c:1657 +#: pg_ctl.c:1867 #, c-format msgid "%s: unrecognized shutdown mode \"%s\"\n" msgstr "%s: modo de apagado «%s» no reconocido\n" -#: pg_ctl.c:1690 +#: pg_ctl.c:1900 #, c-format msgid "%s: unrecognized signal name \"%s\"\n" msgstr "%s: nombre de señal «%s» no reconocido\n" -#: pg_ctl.c:1755 +#: pg_ctl.c:1917 +#, c-format +msgid "%s: unrecognized start type \"%s\"\n" +msgstr "%s: tipo de inicio «%s» no reconocido\n" + +#: pg_ctl.c:1982 #, c-format msgid "" "%s: cannot be run as root\n" @@ -581,27 +730,32 @@ msgstr "" "Por favor conéctese (por ej. usando «su») con un usuario no privilegiado,\n" "quien ejecutará el proceso servidor.\n" -#: pg_ctl.c:1864 +#: pg_ctl.c:2053 +#, c-format +msgid "%s: -S option not supported on this platform\n" +msgstr "%s: la opción -S no está soportada en esta plataforma\n" + +#: pg_ctl.c:2100 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: demasiados argumentos de línea de órdenes (el primero es «%s»)\n" -#: pg_ctl.c:1886 +#: pg_ctl.c:2124 #, c-format msgid "%s: missing arguments for kill mode\n" msgstr "%s: argumentos faltantes para envío de señal\n" -#: pg_ctl.c:1904 +#: pg_ctl.c:2142 #, c-format msgid "%s: unrecognized operation mode \"%s\"\n" msgstr "%s: modo de operación «%s» no reconocido\n" -#: pg_ctl.c:1914 +#: pg_ctl.c:2152 #, c-format msgid "%s: no operation specified\n" msgstr "%s: no se especificó operación\n" -#: pg_ctl.c:1930 +#: pg_ctl.c:2168 #, c-format msgid "" "%s: no database directory specified and environment variable PGDATA unset\n" @@ -639,27 +793,27 @@ msgstr "no se pudo cambiar el directorio a «%s»" msgid "could not read symbolic link \"%s\"" msgstr "no se pudo leer el enlace simbólico «%s»" -#: ../../port/exec.c:516 +#: ../../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" msgstr "el proceso hijo terminó con código de salida %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "el proceso hijo fue terminado por una excepción 0x%X" -#: ../../port/exec.c:529 +#: ../../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "el proceso hijo fue terminado por una señal %s" -#: ../../port/exec.c:532 +#: ../../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "el proceso hijo fue terminado por una señal %d" -#: ../../port/exec.c:536 +#: ../../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "el proceso hijo terminó con código no reconocido %d" diff --git a/src/bin/pg_ctl/po/fr.po b/src/bin/pg_ctl/po/fr.po index 695ab5d67e..7bba4308fe 100644 --- a/src/bin/pg_ctl/po/fr.po +++ b/src/bin/pg_ctl/po/fr.po @@ -1,8 +1,6 @@ # translation of pg_ctl.po to fr_fr # french message translation file for pg_ctl # -# $PostgreSQL$ -# # Use these quotes: � %s � # # Guillaume Lelarge , 2003-2009. @@ -11,49 +9,78 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 8.4\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2009-12-15 21:17+0000\n" -"PO-Revision-Date: 2009-12-15 22:45+0100\n" +"POT-Creation-Date: 2011-07-08 06:55+0000\n" +"PO-Revision-Date: 2011-07-08 15:18+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" -#: pg_ctl.c:225 -#: pg_ctl.c:240 -#: pg_ctl.c:1828 +#: pg_ctl.c:237 +#: pg_ctl.c:252 +#: pg_ctl.c:2035 #, c-format msgid "%s: out of memory\n" msgstr "%s : m�moire �puis�e\n" -#: pg_ctl.c:274 +#: pg_ctl.c:286 #, c-format msgid "%s: could not open PID file \"%s\": %s\n" msgstr "%s : n'a pas pu ouvrir le fichier de PID � %s � : %s\n" -#: pg_ctl.c:281 +#: pg_ctl.c:293 #, c-format msgid "%s: invalid data in PID file \"%s\"\n" msgstr "%s : donn�es invalides dans le fichier de PID � %s �\n" -#: pg_ctl.c:557 +#: pg_ctl.c:470 +#, c-format +msgid "" +"\n" +"%s: -w option is not supported when starting a pre-9.1 server\n" +msgstr "" +"\n" +"%s : l'option -w n'est pas support�e lors du d�marrage d'un serveur pr�-9.1\n" + +#: pg_ctl.c:540 +#, c-format +msgid "" +"\n" +"%s: -w option cannot use a relative socket directory specification\n" +msgstr "" +"\n" +"%s : l'option -w ne peut pas utiliser un chemin relatif vers le r�pertoire de\n" +"la socket\n" + +#: pg_ctl.c:588 +#, c-format +msgid "" +"\n" +"%s: this data directory appears to be running a pre-existing postmaster\n" +msgstr "" +"\n" +"%s : ce r�pertoire des donn�es semble �tre utilis� par un postmaster d�j� existant\n" + +#: pg_ctl.c:638 #, c-format msgid "%s: cannot set core file size limit; disallowed by hard limit\n" msgstr "" "%s : n'a pas pu initialiser la taille des fichiers core, ceci est interdit\n" "par une limite dure\n" -#: pg_ctl.c:582 +#: pg_ctl.c:663 #, c-format msgid "%s: could not read file \"%s\"\n" msgstr "%s : n'a pas pu lire le fichier � %s �\n" -#: pg_ctl.c:587 +#: pg_ctl.c:668 #, c-format msgid "%s: option file \"%s\" must have exactly one line\n" msgstr "%s : le fichier d'options � %s � ne doit comporter qu'une seule ligne\n" -#: pg_ctl.c:635 +#: pg_ctl.c:716 #, c-format msgid "" "The program \"%s\" is needed by %s but was not found in the\n" @@ -64,7 +91,7 @@ msgstr "" "dans le m�me r�pertoire que � %s �.\n" "V�rifiez votre installation.\n" -#: pg_ctl.c:641 +#: pg_ctl.c:722 #, c-format msgid "" "The program \"%s\" was found by \"%s\"\n" @@ -75,24 +102,47 @@ msgstr "" "que %s.\n" "V�rifiez votre installation.\n" -#: pg_ctl.c:674 +#: pg_ctl.c:755 #, c-format msgid "%s: database system initialization failed\n" msgstr "%s : l'initialisation du syst�me a �chou�\n" -#: pg_ctl.c:690 +#: pg_ctl.c:770 #, c-format msgid "%s: another server might be running; trying to start server anyway\n" msgstr "" "%s : un autre serveur semble en cours d'ex�cution ; le d�marrage du serveur\n" "va toutefois �tre tent�\n" -#: pg_ctl.c:727 +#: pg_ctl.c:807 #, c-format msgid "%s: could not start server: exit code was %d\n" msgstr "%s : n'a pas pu d�marrer le serveur : le code de sortie est %d\n" -#: pg_ctl.c:738 +#: pg_ctl.c:814 +msgid "waiting for server to start..." +msgstr "en attente du d�marrage du serveur..." + +#: pg_ctl.c:819 +#: pg_ctl.c:920 +#: pg_ctl.c:1011 +msgid " done\n" +msgstr " effectu�\n" + +#: pg_ctl.c:820 +msgid "server started\n" +msgstr "serveur d�marr�\n" + +#: pg_ctl.c:823 +#: pg_ctl.c:827 +msgid " stopped waiting\n" +msgstr " attente arr�t�e\n" + +#: pg_ctl.c:824 +msgid "server is still starting up\n" +msgstr "le serveur est toujours en cours de d�marrage\n" + +#: pg_ctl.c:828 #, c-format msgid "" "%s: could not start server\n" @@ -101,61 +151,55 @@ msgstr "" "%s : n'a pas pu d�marrer le serveur\n" "Examinez le journal applicatif.\n" -#: pg_ctl.c:747 -msgid "waiting for server to start..." -msgstr "en attente du d�marrage du serveur..." +#: pg_ctl.c:834 +#: pg_ctl.c:912 +#: pg_ctl.c:1002 +msgid " failed\n" +msgstr " a �chou�\n" -#: pg_ctl.c:751 +#: pg_ctl.c:835 #, c-format -msgid "could not start server\n" -msgstr "n'a pas pu d�marrer le serveur\n" - -#: pg_ctl.c:756 -#: pg_ctl.c:829 -#: pg_ctl.c:909 -msgid " done\n" -msgstr " effectu�\n" +msgid "%s: could not wait for server because of misconfiguration\n" +msgstr "%s : n'a pas pu attendre le serveur � cause d'une mauvaise configuration\n" -#: pg_ctl.c:757 -msgid "server started\n" -msgstr "serveur d�marr�\n" - -#: pg_ctl.c:761 +#: pg_ctl.c:841 msgid "server starting\n" msgstr "serveur en cours de d�marrage\n" -#: pg_ctl.c:776 -#: pg_ctl.c:851 -#: pg_ctl.c:931 +#: pg_ctl.c:856 +#: pg_ctl.c:942 +#: pg_ctl.c:1032 +#: pg_ctl.c:1072 #, c-format msgid "%s: PID file \"%s\" does not exist\n" msgstr "%s : le fichier de PID � %s � n'existe pas\n" -#: pg_ctl.c:777 -#: pg_ctl.c:853 -#: pg_ctl.c:932 +#: pg_ctl.c:857 +#: pg_ctl.c:944 +#: pg_ctl.c:1033 +#: pg_ctl.c:1073 msgid "Is server running?\n" msgstr "Le serveur est-il en cours d'ex�cution ?\n" -#: pg_ctl.c:783 +#: pg_ctl.c:863 #, c-format msgid "%s: cannot stop server; single-user server is running (PID: %ld)\n" msgstr "" "%s : ne peut pas arr�ter le serveur ; le serveur mono-utilisateur est en\n" "cours d'ex�cution (PID : %ld)\n" -#: pg_ctl.c:791 -#: pg_ctl.c:875 +#: pg_ctl.c:871 +#: pg_ctl.c:966 #, c-format msgid "%s: could not send stop signal (PID: %ld): %s\n" msgstr "%s : n'a pas pu envoyer le signal d'arr�t (PID : %ld) : %s\n" -#: pg_ctl.c:798 +#: pg_ctl.c:878 msgid "server shutting down\n" msgstr "serveur en cours d'arr�t\n" -#: pg_ctl.c:805 -#: pg_ctl.c:882 +#: pg_ctl.c:893 +#: pg_ctl.c:981 msgid "" "WARNING: online backup mode is active\n" "Shutdown will not complete until pg_stop_backup() is called.\n" @@ -165,184 +209,246 @@ msgstr "" "L'arr�t ne surviendra qu'au moment o� pg_stop_backup() sera appel�.\n" "\n" -#: pg_ctl.c:809 -#: pg_ctl.c:886 +#: pg_ctl.c:897 +#: pg_ctl.c:985 msgid "waiting for server to shut down..." msgstr "en attente de l'arr�t du serveur..." -#: pg_ctl.c:824 -#: pg_ctl.c:903 -msgid " failed\n" -msgstr " a �chou�\n" - -#: pg_ctl.c:826 -#: pg_ctl.c:905 +#: pg_ctl.c:914 +#: pg_ctl.c:1004 #, c-format msgid "%s: server does not shut down\n" msgstr "%s : le serveur ne s'est pas arr�t�\n" -#: pg_ctl.c:831 -#: pg_ctl.c:910 -#, c-format +#: pg_ctl.c:916 +#: pg_ctl.c:1006 +msgid "" +"HINT: The \"-m fast\" option immediately disconnects sessions rather than\n" +"waiting for session-initiated disconnection.\n" +msgstr "" +"ASTUCE : l'option � -m fast � d�connecte imm�diatement les sessions plut�t que\n" +"d'attendre la d�connexion des sessions d�j� pr�sentes.\n" + +#: pg_ctl.c:922 +#: pg_ctl.c:1012 msgid "server stopped\n" msgstr "serveur arr�t�\n" -#: pg_ctl.c:854 -#: pg_ctl.c:916 +#: pg_ctl.c:945 +#: pg_ctl.c:1018 msgid "starting server anyway\n" msgstr "lancement du serveur malgr� tout\n" -#: pg_ctl.c:863 +#: pg_ctl.c:954 #, c-format msgid "%s: cannot restart server; single-user server is running (PID: %ld)\n" msgstr "" "%s : ne peut pas relancer le serveur ; le serveur mono-utilisateur est en\n" "cours d'ex�cution (PID : %ld)\n" -#: pg_ctl.c:866 -#: pg_ctl.c:941 +#: pg_ctl.c:957 +#: pg_ctl.c:1042 msgid "Please terminate the single-user server and try again.\n" msgstr "Merci d'arr�ter le serveur mono-utilisateur et de r�essayer.\n" -#: pg_ctl.c:914 +#: pg_ctl.c:1016 #, c-format msgid "%s: old server process (PID: %ld) seems to be gone\n" msgstr "%s : l'ancien processus serveur (PID : %ld) semble �tre parti\n" -#: pg_ctl.c:938 +#: pg_ctl.c:1039 #, c-format msgid "%s: cannot reload server; single-user server is running (PID: %ld)\n" msgstr "" "%s : ne peut pas recharger le serveur ; le serveur mono-utilisateur est en\n" "cours d'ex�cution (PID : %ld)\n" -#: pg_ctl.c:947 +#: pg_ctl.c:1048 #, c-format msgid "%s: could not send reload signal (PID: %ld): %s\n" msgstr "%s : n'a pas pu envoyer le signal de rechargement (PID : %ld) : %s\n" -#: pg_ctl.c:952 +#: pg_ctl.c:1053 msgid "server signaled\n" msgstr "envoi d'un signal au serveur\n" -#: pg_ctl.c:996 +#: pg_ctl.c:1079 +#, c-format +msgid "%s: cannot promote server; single-user server is running (PID: %ld)\n" +msgstr "" +"%s : ne peut pas promouvoir le serveur ; le serveur mono-utilisateur est en\n" +"cours d'ex�cution (PID : %ld)\n" + +#: pg_ctl.c:1088 +#, c-format +msgid "%s: cannot promote server; server is not in standby mode\n" +msgstr "%s : ne peut pas promouvoir le serveur ; le serveur n'est pas en standby\n" + +#: pg_ctl.c:1096 +#, c-format +msgid "%s: could not create promote signal file \"%s\": %s\n" +msgstr "%s : n'a pas pu cr�er le fichier � %s � signalant la promotion : %s\n" + +#: pg_ctl.c:1102 +#, c-format +msgid "%s: could not write promote signal file \"%s\": %s\n" +msgstr "%s : n'a pas pu �crire le fichier � %s � signalant la promotion : %s\n" + +#: pg_ctl.c:1110 +#, c-format +msgid "%s: could not send promote signal (PID: %ld): %s\n" +msgstr "%s : n'a pas pu envoyer le signal de promotion (PID : %ld) : %s\n" + +#: pg_ctl.c:1113 +#, c-format +msgid "%s: could not remove promote signal file \"%s\": %s\n" +msgstr "%s : n'a pas pu supprimer le fichier � %s � signalant la promotion : %s\n" + +#: pg_ctl.c:1118 +msgid "server promoting\n" +msgstr "serveur en cours de promotion\n" + +#: pg_ctl.c:1163 #, c-format msgid "%s: single-user server is running (PID: %ld)\n" msgstr "%s : le serveur mono-utilisateur est en cours d'ex�cution (PID : %ld)\n" -#: pg_ctl.c:1008 +#: pg_ctl.c:1175 #, c-format msgid "%s: server is running (PID: %ld)\n" msgstr "%s : le serveur est en cours d'ex�cution (PID : %ld)\n" -#: pg_ctl.c:1019 +#: pg_ctl.c:1186 #, c-format msgid "%s: no server running\n" msgstr "%s : aucun serveur en cours d'ex�cution\n" -#: pg_ctl.c:1030 +#: pg_ctl.c:1197 #, c-format msgid "%s: could not send signal %d (PID: %ld): %s\n" msgstr "%s : n'a pas pu envoyer le signal %d (PID : %ld) : %s\n" -#: pg_ctl.c:1064 +#: pg_ctl.c:1231 #, c-format msgid "%s: could not find own program executable\n" msgstr "%s : n'a pas pu trouver l'ex�cutable du programme\n" -#: pg_ctl.c:1074 +#: pg_ctl.c:1241 #, c-format msgid "%s: could not find postgres program executable\n" msgstr "%s : n'a pas pu trouver l'ex�cutable postgres\n" -#: pg_ctl.c:1132 -#: pg_ctl.c:1164 +#: pg_ctl.c:1306 +#: pg_ctl.c:1338 #, c-format msgid "%s: could not open service manager\n" msgstr "%s : n'a pas pu ouvrir le gestionnaire de services\n" -#: pg_ctl.c:1138 +#: pg_ctl.c:1312 #, c-format msgid "%s: service \"%s\" already registered\n" msgstr "%s : le service � %s � est d�j� enregistr�\n" -#: pg_ctl.c:1149 +#: pg_ctl.c:1323 #, c-format msgid "%s: could not register service \"%s\": error code %d\n" msgstr "%s : n'a pas pu enregistrer le service � %s � : code d'erreur %d\n" -#: pg_ctl.c:1170 +#: pg_ctl.c:1344 #, c-format msgid "%s: service \"%s\" not registered\n" msgstr "%s : le service � %s � n'est pas enregistr�\n" -#: pg_ctl.c:1177 +#: pg_ctl.c:1351 #, c-format msgid "%s: could not open service \"%s\": error code %d\n" msgstr "%s : n'a pas pu ouvrir le service � %s � : code d'erreur %d\n" -#: pg_ctl.c:1184 +#: pg_ctl.c:1358 #, c-format msgid "%s: could not unregister service \"%s\": error code %d\n" msgstr "%s : n'a pas pu supprimer le service � %s � : code d'erreur %d\n" -#: pg_ctl.c:1270 +#: pg_ctl.c:1444 msgid "Waiting for server startup...\n" msgstr "En attente du d�marrage du serveur...\n" -#: pg_ctl.c:1273 +#: pg_ctl.c:1447 msgid "Timed out waiting for server startup\n" msgstr "D�passement du d�lai pour le d�marrage du serveur\n" -#: pg_ctl.c:1277 +#: pg_ctl.c:1451 msgid "Server started and accepting connections\n" msgstr "Serveur lanc� et acceptant les connexions\n" -#: pg_ctl.c:1327 +#: pg_ctl.c:1501 #, c-format msgid "%s: could not start service \"%s\": error code %d\n" msgstr "%s : n'a pas pu d�marrer le service � %s � : code d'erreur %d\n" -#: pg_ctl.c:1562 +#: pg_ctl.c:1573 +#, 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" + +#: pg_ctl.c:1582 +#, c-format +msgid "%s: could not open process token: %lu\n" +msgstr "%s : n'a pas pu ouvrir le jeton du processus : %lu\n" + +#: pg_ctl.c:1595 +#, c-format +msgid "%s: could not allocate SIDs: %lu\n" +msgstr "%s : n'a pas pu allouer les SID : %lu\n" + +#: pg_ctl.c:1614 +#, c-format +msgid "%s: could not create restricted token: %lu\n" +msgstr "%s : n'a pas pu cr�er le jeton restreint : %lu\n" + +#: pg_ctl.c:1652 +#, c-format +msgid "%s: WARNING: could not locate all job object functions in system API\n" +msgstr "%s : ATTENTION : n'a pas pu localiser toutes les fonctions objet de job dans l'API syst�me\n" + +#: pg_ctl.c:1738 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Essayer � %s --help � pour plus d'informations.\n" -#: pg_ctl.c:1570 +#: pg_ctl.c:1746 #, c-format msgid "" -"%s is a utility to start, stop, restart, reload configuration files,\n" -"report the status of a PostgreSQL server, or signal a PostgreSQL process.\n" +"%s is a utility to initialize, start, stop, or control a PostgreSQL server.\n" "\n" msgstr "" -"%s est un outil qui permet de d�marrer, arr�ter, red�marrer, recharger les\n" -"les fichiers de configuration, rapporter le statut d'un serveur PostgreSQL\n" -"ou d'envoyer un signal � un processus PostgreSQL\n" +"%s est un outil pour initialiser, d�marrer, arr�ter et contr�ler un serveur\n" +"PostgreSQL.\n" "\n" -#: pg_ctl.c:1572 +#: pg_ctl.c:1747 #, c-format msgid "Usage:\n" msgstr "Usage :\n" -#: pg_ctl.c:1573 +#: pg_ctl.c:1748 #, c-format msgid " %s init[db] [-D DATADIR] [-s] [-o \"OPTIONS\"]\n" msgstr " %s init[db] [-D R�P_DONN�ES] [-s] [-o \"OPTIONS\"]\n" -#: pg_ctl.c:1574 +#: pg_ctl.c:1749 #, c-format msgid " %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]\n" msgstr "" " %s start [-w] [-t SECS] [-D R�P_DONN�ES] [-s] [-l NOM_FICHIER]\n" " [-o \"OPTIONS\"]\n" -#: pg_ctl.c:1575 +#: pg_ctl.c:1750 #, c-format msgid " %s stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" msgstr " %s stop [-W] [-t SECS] [-D R�P_DONN�ES] [-s] [-m MODE_ARRET]\n" -#: pg_ctl.c:1576 +#: pg_ctl.c:1751 #, c-format msgid "" " %s restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" @@ -351,36 +457,41 @@ msgstr "" " %s restart [-w] [-t SECS] [-D R�P_DONN�ES] [-s] [-m MODE_ARRET]\n" " [-o \"OPTIONS\"]\n" -#: pg_ctl.c:1578 +#: pg_ctl.c:1753 #, c-format msgid " %s reload [-D DATADIR] [-s]\n" msgstr " %s reload [-D R�P_DONN�ES] [-s]\n" -#: pg_ctl.c:1579 +#: pg_ctl.c:1754 #, c-format msgid " %s status [-D DATADIR]\n" msgstr " %s status [-D R�P_DONN�ES]\n" -#: pg_ctl.c:1580 +#: pg_ctl.c:1755 +#, c-format +msgid " %s promote [-D DATADIR] [-s]\n" +msgstr " %s promote [-D R�P_DONN�ES] [-s]\n" + +#: pg_ctl.c:1756 #, c-format msgid " %s kill SIGNALNAME PID\n" msgstr " %s kill SIGNAL ID_PROCESSUS\n" -#: pg_ctl.c:1582 +#: pg_ctl.c:1758 #, c-format msgid "" " %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" -" [-w] [-t SECS] [-o \"OPTIONS\"]\n" +" [-S START-TYPE] [-w] [-t SECS] [-o \"OPTIONS\"]\n" msgstr "" " %s register [-N NOM_SERVICE] [-U NOM_UTILISATEUR] [-P MOTDEPASSE]\n" -" [-D R�P_DONN�ES] [-w] [-t SECS] [-o \"OPTIONS\"]\n" +" [-D R�P_DONN�ES] [-S TYPE_D�MARRAGE] [-w] [-t SECS] [-o \"OPTIONS\"]\n" -#: pg_ctl.c:1584 +#: pg_ctl.c:1760 #, c-format msgid " %s unregister [-N SERVICENAME]\n" msgstr " %s unregister [-N NOM_SERVICE]\n" -#: pg_ctl.c:1587 +#: pg_ctl.c:1763 #, c-format msgid "" "\n" @@ -389,46 +500,46 @@ msgstr "" "\n" "Options g�n�rales :\n" -#: pg_ctl.c:1588 +#: pg_ctl.c:1764 #, c-format msgid " -D, --pgdata DATADIR location of the database storage area\n" msgstr " -D, --pgdata R�P_DONN�ES emplacement de stockage du cluster\n" -#: pg_ctl.c:1589 +#: pg_ctl.c:1765 #, c-format msgid " -s, --silent only print errors, no informational messages\n" msgstr "" " -s, --silent affiche uniquement les erreurs, aucun message\n" " d'informations\n" -#: pg_ctl.c:1590 +#: pg_ctl.c:1766 #, c-format msgid " -t SECS seconds to wait when using -w option\n" msgstr "" " -t SECS dur�e en secondes � attendre lors de\n" " l'utilisation de l'option -w\n" -#: pg_ctl.c:1591 +#: pg_ctl.c:1767 #, c-format msgid " -w wait until operation completes\n" msgstr " -w attend la fin de l'op�ration\n" -#: pg_ctl.c:1592 +#: pg_ctl.c:1768 #, c-format msgid " -W do not wait until operation completes\n" msgstr " -W n'attend pas la fin de l'op�ration\n" -#: pg_ctl.c:1593 +#: pg_ctl.c:1769 #, c-format msgid " --help show this help, then exit\n" msgstr " --help affiche cette aide et quitte\n" -#: pg_ctl.c:1594 +#: pg_ctl.c:1770 #, c-format msgid " --version output version information, then exit\n" msgstr " --version affiche la version et quitte\n" -#: pg_ctl.c:1595 +#: pg_ctl.c:1771 #, c-format msgid "" "(The default is to wait for shutdown, but not for start or restart.)\n" @@ -438,12 +549,12 @@ msgstr "" "red�marrage.)\n" "\n" -#: pg_ctl.c:1596 +#: pg_ctl.c:1772 #, c-format msgid "If the -D option is omitted, the environment variable PGDATA is used.\n" msgstr "Si l'option -D est omise, la variable d'environnement PGDATA est utilis�e.\n" -#: pg_ctl.c:1598 +#: pg_ctl.c:1774 #, c-format msgid "" "\n" @@ -452,24 +563,24 @@ msgstr "" "\n" "Options pour le d�marrage ou le red�marrage :\n" -#: pg_ctl.c:1600 +#: pg_ctl.c:1776 #, c-format msgid " -c, --core-files allow postgres to produce core files\n" msgstr " -c, --core-files autorise postgres � produire des fichiers core\n" -#: pg_ctl.c:1602 +#: pg_ctl.c:1778 #, c-format msgid " -c, --core-files not applicable on this platform\n" msgstr " -c, --core-files non applicable � cette plateforme\n" -#: pg_ctl.c:1604 +#: pg_ctl.c:1780 #, c-format msgid " -l, --log FILENAME write (or append) server log to FILENAME\n" msgstr "" " -l, --log NOM_FICHIER �crit (ou ajoute) le journal du serveur dans\n" " NOM_FICHIER\n" -#: pg_ctl.c:1605 +#: pg_ctl.c:1781 #, c-format msgid "" " -o OPTIONS command line options to pass to postgres\n" @@ -479,12 +590,12 @@ msgstr "" " postgres (ex�cutable du serveur PostgreSQL)\n" " ou � initdb\n" -#: pg_ctl.c:1607 +#: pg_ctl.c:1783 #, c-format msgid " -p PATH-TO-POSTGRES normally not necessary\n" msgstr " -p CHEMIN_POSTGRES normalement pas n�cessaire\n" -#: pg_ctl.c:1608 +#: pg_ctl.c:1784 #, c-format msgid "" "\n" @@ -493,12 +604,12 @@ msgstr "" "\n" "Options pour l'arr�t ou le red�marrage :\n" -#: pg_ctl.c:1609 +#: pg_ctl.c:1785 #, c-format msgid " -m SHUTDOWN-MODE can be \"smart\", \"fast\", or \"immediate\"\n" msgstr " -m MODE_ARRET � smart �, � fast � ou � immediate �\n" -#: pg_ctl.c:1611 +#: pg_ctl.c:1787 #, c-format msgid "" "\n" @@ -507,24 +618,24 @@ msgstr "" "\n" "Les modes d'arr�t sont :\n" -#: pg_ctl.c:1612 +#: pg_ctl.c:1788 #, c-format msgid " smart quit after all clients have disconnected\n" msgstr " smart quitte apr�s d�connexion de tous les clients\n" -#: pg_ctl.c:1613 +#: pg_ctl.c:1789 #, c-format msgid " fast quit directly, with proper shutdown\n" msgstr " fast quitte directement, et arr�te correctement\n" -#: pg_ctl.c:1614 +#: pg_ctl.c:1790 #, c-format msgid " immediate quit without complete shutdown; will lead to recovery on restart\n" msgstr "" " immediate quitte sans arr�t complet ; entra�ne une\n" " restauration au d�marrage suivant\n" -#: pg_ctl.c:1616 +#: pg_ctl.c:1792 #, c-format msgid "" "\n" @@ -533,7 +644,7 @@ msgstr "" "\n" "Signaux autoris�s pour kill :\n" -#: pg_ctl.c:1620 +#: pg_ctl.c:1796 #, c-format msgid "" "\n" @@ -542,28 +653,56 @@ msgstr "" "\n" "Options d'enregistrement ou de d�s-enregistrement :\n" -#: pg_ctl.c:1621 +#: pg_ctl.c:1797 #, c-format msgid " -N SERVICENAME service name with which to register PostgreSQL server\n" msgstr "" " -N NOM_SERVICE nom du service utilis� pour l'enregistrement du\n" " serveur PostgreSQL\n" -#: pg_ctl.c:1622 +#: pg_ctl.c:1798 #, c-format msgid " -P PASSWORD password of account to register PostgreSQL server\n" msgstr "" " -P MOT_DE_PASSE mot de passe du compte utilis� pour\n" " l'enregistrement du serveur PostgreSQL\n" -#: pg_ctl.c:1623 +#: pg_ctl.c:1799 #, c-format msgid " -U USERNAME user name of account to register PostgreSQL server\n" msgstr "" " -U NOM_UTILISATEUR nom de l'utilisateur du compte utilis� pour\n" " l'enregistrement du serveur PostgreSQL\n" -#: pg_ctl.c:1626 +#: pg_ctl.c:1800 +#, c-format +msgid " -S START-TYPE service start type to register PostgreSQL server\n" +msgstr "" +" -S TYPE_D�MARRAGE type de d�marrage du service pour enregistrer le\n" +" serveur PostgreSQL\n" + +#: pg_ctl.c:1802 +#, c-format +msgid "" +"\n" +"Start types are:\n" +msgstr "" +"\n" +"Les types de d�marrage sont :\n" + +#: pg_ctl.c:1803 +#, c-format +msgid " auto start service automatically during system startup (default)\n" +msgstr "" +" auto d�marre le service automatiquement lors du d�marrage du syst�me\n" +" (par d�faut)\n" + +#: pg_ctl.c:1804 +#, c-format +msgid " demand start service on demand\n" +msgstr " demand d�marre le service � la demande\n" + +#: pg_ctl.c:1807 #, c-format msgid "" "\n" @@ -572,17 +711,22 @@ msgstr "" "\n" "Rapporter les bogues � .\n" -#: pg_ctl.c:1651 +#: pg_ctl.c:1832 #, c-format msgid "%s: unrecognized shutdown mode \"%s\"\n" msgstr "%s : mode d'arr�t non reconnu � %s �\n" -#: pg_ctl.c:1684 +#: pg_ctl.c:1865 #, c-format msgid "%s: unrecognized signal name \"%s\"\n" msgstr "%s : signal non reconnu � %s �\n" -#: pg_ctl.c:1749 +#: pg_ctl.c:1882 +#, c-format +msgid "%s: unrecognized start type \"%s\"\n" +msgstr "%s : type de red�marrage � %s � non reconnu\n" + +#: pg_ctl.c:1947 #, c-format msgid "" "%s: cannot be run as root\n" @@ -593,88 +737,108 @@ msgstr "" "Connectez-vous (par exemple en utilisant � su �) sous l'utilisateur (non\n" " privil�gi�) qui sera propri�taire du processus serveur.\n" -#: pg_ctl.c:1858 +#: pg_ctl.c:2018 +#, c-format +msgid "%s: -S option not supported on this platform\n" +msgstr "%s : option -S non support�e sur cette plateforme\n" + +#: pg_ctl.c:2065 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s : trop d'arguments en ligne de commande (le premier �tant � %s �)\n" -#: pg_ctl.c:1880 +#: pg_ctl.c:2089 #, c-format msgid "%s: missing arguments for kill mode\n" msgstr "%s : arguments manquant pour le mode kill\n" -#: pg_ctl.c:1898 +#: pg_ctl.c:2107 #, c-format msgid "%s: unrecognized operation mode \"%s\"\n" msgstr "%s : mode d'op�ration � %s � non reconnu\n" -#: pg_ctl.c:1908 +#: pg_ctl.c:2117 #, c-format msgid "%s: no operation specified\n" msgstr "%s : aucune op�ration indiqu�e\n" -#: pg_ctl.c:1924 +#: pg_ctl.c:2133 #, c-format msgid "%s: no database directory specified and environment variable PGDATA unset\n" msgstr "" "%s : aucun r�pertoire de bases de donn�es indiqu� et variable\n" "d'environnement PGDATA non initialis�e\n" -#: ../../port/exec.c:195 -#: ../../port/exec.c:309 -#: ../../port/exec.c:352 +#: ../../port/exec.c:125 +#: ../../port/exec.c:239 +#: ../../port/exec.c:282 #, c-format msgid "could not identify current directory: %s" msgstr "n'a pas pu identifier le r�pertoire courant : %s" -#: ../../port/exec.c:214 +#: ../../port/exec.c:144 #, c-format msgid "invalid binary \"%s\"" msgstr "binaire � %s � invalide" -#: ../../port/exec.c:263 +#: ../../port/exec.c:193 #, c-format msgid "could not read binary \"%s\"" msgstr "n'a pas pu lire le binaire � %s �" -#: ../../port/exec.c:270 +#: ../../port/exec.c:200 #, c-format msgid "could not find a \"%s\" to execute" msgstr "n'a pas pu trouver un � %s � � ex�cuter" -#: ../../port/exec.c:325 -#: ../../port/exec.c:361 +#: ../../port/exec.c:255 +#: ../../port/exec.c:291 #, c-format msgid "could not change directory to \"%s\"" msgstr "n'a pas pu acc�der au r�pertoire � %s �" -#: ../../port/exec.c:340 +#: ../../port/exec.c:270 #, c-format msgid "could not read symbolic link \"%s\"" msgstr "n'a pas pu lire le lien symbolique � %s �" -#: ../../port/exec.c:586 +#: ../../port/exec.c:517 #, c-format msgid "child process exited with exit code %d" msgstr "le processus fils a quitt� avec le code de sortie %d" -#: ../../port/exec.c:590 +#: ../../port/exec.c:521 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "le processus fils a �t� termin� par l'exception 0x%X" -#: ../../port/exec.c:599 +#: ../../port/exec.c:530 #, c-format msgid "child process was terminated by signal %s" msgstr "le processus fils a �t� termin� par le signal %s" -#: ../../port/exec.c:602 +#: ../../port/exec.c:533 #, c-format msgid "child process was terminated by signal %d" msgstr "le processus fils a �t� termin� par le signal %d" -#: ../../port/exec.c:606 +#: ../../port/exec.c:537 #, c-format msgid "child process exited with unrecognized status %d" msgstr "le processus fils a quitt� avec un statut %d non reconnu" +#~ msgid "could not start server\n" +#~ msgstr "n'a pas pu d�marrer le serveur\n" + +#~ msgid "" +#~ "%s is a utility to start, stop, restart, reload configuration files,\n" +#~ "report the status of a PostgreSQL server, or signal a PostgreSQL " +#~ "process.\n" +#~ "\n" +#~ msgstr "" +#~ "%s est un outil qui permet de d�marrer, arr�ter, red�marrer, recharger " +#~ "les\n" +#~ "les fichiers de configuration, rapporter le statut d'un serveur " +#~ "PostgreSQL\n" +#~ "ou d'envoyer un signal � un processus PostgreSQL\n" +#~ "\n" diff --git a/src/bin/pg_ctl/po/it.po b/src/bin/pg_ctl/po/it.po index 5520a7eb75..e5bcfdf6c6 100644 --- a/src/bin/pg_ctl/po/it.po +++ b/src/bin/pg_ctl/po/it.po @@ -6,340 +6,423 @@ # http://www.itpug.org/ - info@itpug.org # # Traduttori: +# * Daniele Varrazzo # * Emanuele Zamprogno -# +# # Revisori: # * Emanuele Zamprogno # # Copyright (c) 2010, Associazione Culturale ITPUG # Distributed under the same license of the PostgreSQL project # -# LANGUAGE message translation file for pg_ctl -# Copyright (C) 2009 PostgreSQL Global Development Group -# This file is distributed under the same license as the PostgreSQL package. -# FIRST AUTHOR , 2009. -# msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" +"Project-Id-Version: pg_ctl (PostgreSQL) 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-03-26 13:22+0000\n" -"PO-Revision-Date: 2010-03-27 12:44:19+0100\n" -"Last-Translator: Gabriele Bartolini \n" +"POT-Creation-Date: 2013-01-29 13:56+0000\n" +"PO-Revision-Date: 2012-12-03 17:32+0100\n" +"Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Italian\n" -"X-Poedit-Country: ITALY\n" "X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Poedit 1.5.4\n" -#: pg_ctl.c:225 -#: pg_ctl.c:240 -#: pg_ctl.c:1830 +#: pg_ctl.c:238 pg_ctl.c:253 pg_ctl.c:2070 #, c-format msgid "%s: out of memory\n" msgstr "%s: memoria esaurita\n" -#: pg_ctl.c:274 +#: pg_ctl.c:287 #, c-format msgid "%s: could not open PID file \"%s\": %s\n" -msgstr "%s: non è possibile aprire il PID file \"%s\": %s\n" +msgstr "%s: apertura del file PID \"%s\" fallita: %s\n" -#: pg_ctl.c:281 +#: pg_ctl.c:294 #, c-format msgid "%s: invalid data in PID file \"%s\"\n" -msgstr "%s: dati non validi nel PID file \"%s\"\n" +msgstr "%s: dati non validi nel file PID \"%s\"\n" -#: pg_ctl.c:557 +#: pg_ctl.c:505 +#, c-format +msgid "" +"\n" +"%s: -w option is not supported when starting a pre-9.1 server\n" +msgstr "" +"\n" +"%s: l'opzione -w non è supportata per avviare un server pre-9.1\n" + +#: pg_ctl.c:575 +#, c-format +msgid "" +"\n" +"%s: -w option cannot use a relative socket directory specification\n" +msgstr "" +"\n" +"%s: l'opzione -w non può specificare una directory socket relativa\n" + +#: pg_ctl.c:623 +#, c-format +msgid "" +"\n" +"%s: this data directory appears to be running a pre-existing postmaster\n" +msgstr "" +"\n" +"%s: sembra che questa directory dati sia in esecuzione con un postmaster preesistente\n" + +#: pg_ctl.c:673 #, c-format msgid "%s: cannot set core file size limit; disallowed by hard limit\n" -msgstr "%s: non è possibile configurare il limite di grandezza del core file; impedito dall' hard limit\n" +msgstr "%s: non è possibile configurare il limite di grandezza dei core file; impedito dall'hard limit\n" -#: pg_ctl.c:582 +#: pg_ctl.c:698 #, c-format msgid "%s: could not read file \"%s\"\n" -msgstr "%s: non è possibile leggere il file \"%s\"\n" +msgstr "%s: lettura del file \"%s\" fallita\n" -#: pg_ctl.c:587 +#: pg_ctl.c:703 #, c-format msgid "%s: option file \"%s\" must have exactly one line\n" -msgstr "%s: il file opzionale file \"%s\" deve avere esattamente una linea\n" +msgstr "%s: il file di opzione \"%s\" deve avere esattamente una riga\n" -#: pg_ctl.c:635 -#, fuzzy, c-format +#: pg_ctl.c:751 +#, c-format msgid "" "The program \"%s\" is needed by %s but was not found in the\n" "same directory as \"%s\".\n" "Check your installation.\n" msgstr "" -"Il programma \"postgres\" e' richiesto da %s ma non e' stato trovato\n" -"nella stessa directory \"%s\".\n" -"Verificate l'installazione.\n" +"Il programma \"%s\" è richiesto da %s ma non è stato trovato\n" +"nella stessa directory di \"%s\".\n" +"Verifica che l'installazione sia corretta.\n" -#: pg_ctl.c:641 -#, fuzzy, c-format +#: pg_ctl.c:757 +#, c-format msgid "" "The program \"%s\" was found by \"%s\"\n" "but was not the same version as %s.\n" "Check your installation.\n" msgstr "" -"Il programma \"postgres\" e' stato trovato da \"%s\" ma non ha\n" -"la stessa versione \"%s\".\n" -"Verificate l'installazione.\n" +"Il programma \"%s\" è stato trovato da \"%s\" ma non ha\n" +"la stessa versione di %s.\n" +"Verifica che l'installazione sia corretta.\n" -#: pg_ctl.c:674 +#: pg_ctl.c:790 #, c-format msgid "%s: database system initialization failed\n" msgstr "%s: inizializzazione del sistema di database fallita\n" -#: pg_ctl.c:690 +#: pg_ctl.c:805 #, c-format msgid "%s: another server might be running; trying to start server anyway\n" msgstr "%s: un altro server potrebbe essere in esecuzione; si sta provando ad avviare il server ugualmente\n" -#: pg_ctl.c:727 +#: pg_ctl.c:842 #, c-format msgid "%s: could not start server: exit code was %d\n" -msgstr "%s: non è possibile avviare il server: il segnale d'uscita è %d\n" +msgstr "%s: avvio del server fallito: il codice di uscita è %d\n" -#: pg_ctl.c:738 -#: pg_ctl.c:751 +#: pg_ctl.c:849 +msgid "waiting for server to start..." +msgstr "in attesa che il server si avvii..." + +#: pg_ctl.c:854 pg_ctl.c:955 pg_ctl.c:1046 +msgid " done\n" +msgstr " fatto\n" + +#: pg_ctl.c:855 +msgid "server started\n" +msgstr "il server è stato avviato\n" + +#: pg_ctl.c:858 pg_ctl.c:862 +msgid " stopped waiting\n" +msgstr " attesa interrotta\n" + +#: pg_ctl.c:859 +msgid "server is still starting up\n" +msgstr "il server si sta ancora avviando\n" + +#: pg_ctl.c:863 #, c-format msgid "" "%s: could not start server\n" "Examine the log output.\n" msgstr "" -"%s: non è possibile avviareil serverr\n" -"esaminare il log di output.\n" +"%s: l'avvio del server è fallito\n" +"Esamina il log di output.\n" -#: pg_ctl.c:747 -msgid "waiting for server to start..." -msgstr "attendere che il server si avvii..." - -#: pg_ctl.c:758 -#: pg_ctl.c:831 -#: pg_ctl.c:911 -msgid " done\n" -msgstr " fatto\n" +#: pg_ctl.c:869 pg_ctl.c:947 pg_ctl.c:1037 +msgid " failed\n" +msgstr " fallito\n" -#: pg_ctl.c:759 -msgid "server started\n" -msgstr "il server è avviato\n" +#: pg_ctl.c:870 +#, c-format +msgid "%s: could not wait for server because of misconfiguration\n" +msgstr "%s: non è stato possibile attendere il server a causa di configurazione errata\n" -#: pg_ctl.c:763 +#: pg_ctl.c:876 msgid "server starting\n" msgstr "il server si sta avviando\n" -#: pg_ctl.c:778 -#: pg_ctl.c:853 -#: pg_ctl.c:933 +#: pg_ctl.c:891 pg_ctl.c:977 pg_ctl.c:1067 pg_ctl.c:1107 #, c-format msgid "%s: PID file \"%s\" does not exist\n" -msgstr "%s: il PID file \"%s\" non esiste\n" +msgstr "%s: il file PID \"%s\" non esiste\n" -#: pg_ctl.c:779 -#: pg_ctl.c:855 -#: pg_ctl.c:934 +#: pg_ctl.c:892 pg_ctl.c:979 pg_ctl.c:1068 pg_ctl.c:1108 msgid "Is server running?\n" -msgstr "il server è in esecuzione?\n" +msgstr "Il server è in esecuzione?\n" -#: pg_ctl.c:785 +#: pg_ctl.c:898 #, c-format msgid "%s: cannot stop server; single-user server is running (PID: %ld)\n" msgstr "%s: non è possibile fermare il server; il server è in esecuzione in modalità a singolo utente (PID: %ld)\n" -#: pg_ctl.c:793 -#: pg_ctl.c:877 +#: pg_ctl.c:906 pg_ctl.c:1001 #, c-format msgid "%s: could not send stop signal (PID: %ld): %s\n" -msgstr "%s: non è possibile mandare il segnale di stop (PID: %ld): %s\n" +msgstr "%s: invio del segnale di arresto fallito (PID: %ld): %s\n" -#: pg_ctl.c:800 +#: pg_ctl.c:913 msgid "server shutting down\n" -msgstr "il server è in spegnimento\n" +msgstr "il server è in fase di arresto\n" -#: pg_ctl.c:807 -#: pg_ctl.c:884 +#: pg_ctl.c:928 pg_ctl.c:1016 msgid "" "WARNING: online backup mode is active\n" "Shutdown will not complete until pg_stop_backup() is called.\n" "\n" msgstr "" -"ATTENZIONE: è attivo l'online backup mode \n" -"Lo spegnimento non sarà completato finchè non sarà chiamata pg_stop_backup().\n" +"ATTENZIONE: è attiva la modalità di backup online\n" +"L'arresto non sarà completato finché non sarà chiamata pg_stop_backup().\n" "\n" -#: pg_ctl.c:811 -#: pg_ctl.c:888 +#: pg_ctl.c:932 pg_ctl.c:1020 msgid "waiting for server to shut down..." -msgstr "attendere lo spegnimento del server...." - -#: pg_ctl.c:826 -#: pg_ctl.c:905 -msgid " failed\n" -msgstr "fallito\n" +msgstr "in attesa dell'arresto del server...." -#: pg_ctl.c:828 -#: pg_ctl.c:907 +#: pg_ctl.c:949 pg_ctl.c:1039 #, c-format msgid "%s: server does not shut down\n" -msgstr "%s: il server non si sta spegnendo\n" +msgstr "%s: il server non si è arrestato\n" + +#: pg_ctl.c:951 pg_ctl.c:1041 +msgid "" +"HINT: The \"-m fast\" option immediately disconnects sessions rather than\n" +"waiting for session-initiated disconnection.\n" +msgstr "" +"NOTA: L'opzione \"-m fast\" disconnette le sessioni immediatamente invece di\n" +"attendere che siano le sessioni a disconnettersi.\n" -#: pg_ctl.c:833 -#: pg_ctl.c:912 +#: pg_ctl.c:957 pg_ctl.c:1047 msgid "server stopped\n" -msgstr "il server è stato terminato\n" +msgstr "il server è stato arrestato\n" -#: pg_ctl.c:856 -#: pg_ctl.c:918 +#: pg_ctl.c:980 pg_ctl.c:1053 msgid "starting server anyway\n" msgstr "il server si sta avviando comunque\n" -#: pg_ctl.c:865 +#: pg_ctl.c:989 #, c-format msgid "%s: cannot restart server; single-user server is running (PID: %ld)\n" -msgstr "%s: non è possibile riavviare il server; il server è in esecuzione in modalità a singlolo utente (PID: %ld)\n" +msgstr "%s: non è possibile riavviare il server; il server è in esecuzione in modalità a singolo utente (PID: %ld)\n" -#: pg_ctl.c:868 -#: pg_ctl.c:943 +#: pg_ctl.c:992 pg_ctl.c:1077 msgid "Please terminate the single-user server and try again.\n" -msgstr "Si prega di terminare il server in modalità singolo utente e di riprovare\n" +msgstr "Si prega di terminare il server in modalità singolo utente e di riprovare.\n" -#: pg_ctl.c:916 +#: pg_ctl.c:1051 #, c-format msgid "%s: old server process (PID: %ld) seems to be gone\n" msgstr "%s: il vecchio processo del server (PID: %ld) sembra non essere più attivo\n" -#: pg_ctl.c:940 +#: pg_ctl.c:1074 #, c-format msgid "%s: cannot reload server; single-user server is running (PID: %ld)\n" msgstr "%s: non è possibile eseguire il reload del server; il server è in esecuzione in modalità a singolo utente (PID: %ld)\n" -#: pg_ctl.c:949 +#: pg_ctl.c:1083 #, c-format msgid "%s: could not send reload signal (PID: %ld): %s\n" -msgstr "%s: non è possibile mandare il segnale di reload(PID: %ld): %s\n" +msgstr "%s: invio segnale di reload fallito (PID: %ld): %s\n" -#: pg_ctl.c:954 +#: pg_ctl.c:1088 msgid "server signaled\n" -msgstr "il server è segnalato\n" +msgstr "segnale inviato al server\n" + +#: pg_ctl.c:1114 +#, c-format +msgid "%s: cannot promote server; single-user server is running (PID: %ld)\n" +msgstr "%s: non è possibile promuovere il server: il server è in esecuzione in modalità a singolo utente (PID: %ld)\n" -#: pg_ctl.c:998 +#: pg_ctl.c:1123 +#, c-format +msgid "%s: cannot promote server; server is not in standby mode\n" +msgstr "%s: non è possibile promuovere il server: il server non è in modalità standby\n" + +#: pg_ctl.c:1131 +#, c-format +msgid "%s: could not create promote signal file \"%s\": %s\n" +msgstr "%s: creazione del file di segnale di promozione \"%s\" fallito: %s\n" + +#: pg_ctl.c:1137 +#, c-format +msgid "%s: could not write promote signal file \"%s\": %s\n" +msgstr "%s: scrittura del file di segnale di promozione \"%s\" fallita: %s\n" + +#: pg_ctl.c:1145 +#, c-format +msgid "%s: could not send promote signal (PID: %ld): %s\n" +msgstr "%s: invio del segnale di promozione fallito (PID: %ld): %s\n" + +#: pg_ctl.c:1148 +#, c-format +msgid "%s: could not remove promote signal file \"%s\": %s\n" +msgstr "%s: rimozione del file di segnale di promozione \"%s\" fallita: %s\n" + +#: pg_ctl.c:1153 +msgid "server promoting\n" +msgstr "il server sta venendo promosso\n" + +#: pg_ctl.c:1198 #, c-format msgid "%s: single-user server is running (PID: %ld)\n" msgstr "%s: il server è in esecuzione in modalità a singolo utente (PID: %ld)\n" -#: pg_ctl.c:1010 +#: pg_ctl.c:1210 #, c-format msgid "%s: server is running (PID: %ld)\n" msgstr "%s: il server è in esecuzione (PID: %ld)\n" -#: pg_ctl.c:1021 +#: pg_ctl.c:1221 #, c-format msgid "%s: no server running\n" -msgstr "%s: il server non è in esecuzione\n" +msgstr "%s: nessun server in esecuzione\n" -#: pg_ctl.c:1032 +#: pg_ctl.c:1232 #, c-format msgid "%s: could not send signal %d (PID: %ld): %s\n" -msgstr "%s: non è possibile mandare il segnale %d (PID: %ld): %s\n" +msgstr "%s: invio del segnale %d fallito (PID: %ld): %s\n" -#: pg_ctl.c:1066 +#: pg_ctl.c:1266 #, c-format msgid "%s: could not find own program executable\n" -msgstr "%s: non si sta trovando il proprio programma eseguibile\n" +msgstr "%s: il proprio programma eseguibile non è stato trovato\n" -#: pg_ctl.c:1076 +#: pg_ctl.c:1276 #, c-format msgid "%s: could not find postgres program executable\n" -msgstr "%s: non è possibile trovare il programma eseguibile postgres\n" +msgstr "%s: il programma eseguibile postgres non è stato trovato\n" -#: pg_ctl.c:1134 -#: pg_ctl.c:1166 +#: pg_ctl.c:1341 pg_ctl.c:1373 #, c-format msgid "%s: could not open service manager\n" -msgstr "%s: non è possibile aprire il service manager\n" +msgstr "%s: apertura del service manager fallita\n" -#: pg_ctl.c:1140 +#: pg_ctl.c:1347 #, c-format msgid "%s: service \"%s\" already registered\n" msgstr "%s: il servizio \"%s\" è già registrato\n" -#: pg_ctl.c:1151 +#: pg_ctl.c:1358 #, c-format msgid "%s: could not register service \"%s\": error code %d\n" -msgstr "%s: non è possibile registrare il servizio \"%s\": codice errore %d\n" +msgstr "%s: non è stato possibile registrare il servizio \"%s\": codice errore %d\n" -#: pg_ctl.c:1172 +#: pg_ctl.c:1379 #, c-format msgid "%s: service \"%s\" not registered\n" -msgstr "%s: il servizio \"%s\" non è registrato\n" +msgstr "%s: il servizio \"%s\" non è registrato\n" -#: pg_ctl.c:1179 +#: pg_ctl.c:1386 #, c-format msgid "%s: could not open service \"%s\": error code %d\n" -msgstr "%s: non è possibile aprire il servizio \"%s\": codice errore %d\n" +msgstr "%s: non è stato possibile aprire il servizio \"%s\": codice errore %d\n" -#: pg_ctl.c:1186 +#: pg_ctl.c:1393 #, c-format msgid "%s: could not unregister service \"%s\": error code %d\n" -msgstr "%s: non è possibile deregistrare il servizio \"%s\": codice errore %d\n" +msgstr "%s: non è stato possibile rimuovere la registrazione del servizio \"%s\": codice errore %d\n" -#: pg_ctl.c:1272 +#: pg_ctl.c:1479 msgid "Waiting for server startup...\n" -msgstr "Attendere il server si sta avviando...\n" +msgstr "In attesa che il server si avvii...\n" -#: pg_ctl.c:1275 +#: pg_ctl.c:1482 msgid "Timed out waiting for server startup\n" -msgstr "il tempo di attesa per l'avvio del server è scaduto\n" +msgstr "Il tempo di attesa per l'avvio del server è scaduto\n" -#: pg_ctl.c:1279 +#: pg_ctl.c:1486 msgid "Server started and accepting connections\n" msgstr "Il server è avviato e accetta connessioni\n" -#: pg_ctl.c:1329 +#: pg_ctl.c:1536 #, c-format msgid "%s: could not start service \"%s\": error code %d\n" msgstr "%s: non è possibile avviare il servizio \"%s\": codice errore %d\n" -#: pg_ctl.c:1564 +#: pg_ctl.c:1608 +#, 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" + +#: pg_ctl.c:1617 +#, c-format +msgid "%s: could not open process token: %lu\n" +msgstr "%s: non è stato possibile aprire il token di processo: %lu\n" + +#: pg_ctl.c:1630 +#, c-format +msgid "%s: could not allocate SIDs: %lu\n" +msgstr "%s: non è stato possibile allocare i SID: %lu\n" + +#: pg_ctl.c:1649 +#, c-format +msgid "%s: could not create restricted token: %lu\n" +msgstr "%s: non è stato possibile creare il token ristretto: %lu\n" + +#: pg_ctl.c:1687 +#, c-format +msgid "%s: WARNING: could not locate all job object functions in system API\n" +msgstr "%s: ATTENZIONE: non tutte le funzioni di controllo dei job nella API di sistema sono state trovate\n" + +#: pg_ctl.c:1773 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Prova \"%s --help\" per avere più informazioni.\n" +msgstr "Prova \"%s --help\" per maggiori informazioni.\n" -#: pg_ctl.c:1572 +#: pg_ctl.c:1781 #, c-format msgid "" -"%s is a utility to start, stop, restart, reload configuration files,\n" -"report the status of a PostgreSQL server, or signal a PostgreSQL process.\n" +"%s is a utility to initialize, start, stop, or control a PostgreSQL server.\n" "\n" msgstr "" -"%s è un proramma di utilità per avviare, spegnere, riavviare, ricaricare file di configurazione,\n" -"dare un rapporto sullo stato di PostgreSQL server, o segnalare un processo di PostgreSQL.\n" +"%s è un programma per inizializzare, avviare, fermare o controllare un server PostgreSQL.\n" "\n" -#: pg_ctl.c:1574 +#: pg_ctl.c:1782 #, c-format msgid "Usage:\n" msgstr "Utilizzo:\n" -#: pg_ctl.c:1575 -#, fuzzy, c-format +#: pg_ctl.c:1783 +#, c-format msgid " %s init[db] [-D DATADIR] [-s] [-o \"OPTIONS\"]\n" -msgstr " %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]\n" +msgstr " %s init[db] [-D DATADIR] [-s] [-o \"OPZIONI\"]\n" -#: pg_ctl.c:1576 +#: pg_ctl.c:1784 #, c-format msgid " %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]\n" msgstr " %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]\n" -#: pg_ctl.c:1577 +#: pg_ctl.c:1785 #, c-format msgid " %s stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" msgstr " %s stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" -#: pg_ctl.c:1578 +#: pg_ctl.c:1786 #, c-format msgid "" " %s restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" @@ -348,36 +431,41 @@ msgstr "" " %s restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" " [-o \"OPTIONS\"]\n" -#: pg_ctl.c:1580 +#: pg_ctl.c:1788 #, c-format msgid " %s reload [-D DATADIR] [-s]\n" msgstr " %s reload [-D DATADIR] [-s]\n" -#: pg_ctl.c:1581 +#: pg_ctl.c:1789 #, c-format msgid " %s status [-D DATADIR]\n" msgstr " %s status [-D DATADIR]\n" -#: pg_ctl.c:1582 +#: pg_ctl.c:1790 +#, c-format +msgid " %s promote [-D DATADIR] [-s]\n" +msgstr " %s promote [-D DATADIR] [-s]\n" + +#: pg_ctl.c:1791 #, c-format msgid " %s kill SIGNALNAME PID\n" msgstr " %s kill SIGNALNAME PID\n" -#: pg_ctl.c:1584 +#: pg_ctl.c:1793 #, c-format msgid "" " %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" -" [-w] [-t SECS] [-o \"OPTIONS\"]\n" +" [-S START-TYPE] [-w] [-t SECS] [-o \"OPTIONS\"]\n" msgstr "" " %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" -" [-w] [-t SECS] [-o \"OPTIONS\"]\n" +" [-S START-TYPE] [-w] [-t SECS] [-o \"OPZIONI\"]\n" -#: pg_ctl.c:1586 +#: pg_ctl.c:1795 #, c-format msgid " %s unregister [-N SERVICENAME]\n" msgstr " %s unregister [-N SERVICENAME]\n" -#: pg_ctl.c:1589 +#: pg_ctl.c:1798 #, c-format msgid "" "\n" @@ -386,108 +474,109 @@ msgstr "" "\n" "Opzioni comuni:\n" -#: pg_ctl.c:1590 +#: pg_ctl.c:1799 #, c-format msgid " -D, --pgdata DATADIR location of the database storage area\n" -msgstr " -D, --pgdata DATADIR locazione dell' area di archiviazione del database \n" +msgstr " -D, --pgdata DATADIR locazione dell'area di archiviazione del database\n" -#: pg_ctl.c:1591 +#: pg_ctl.c:1800 #, c-format msgid " -s, --silent only print errors, no informational messages\n" msgstr " -s, --silent mostra solo gli errori, non i messaggi di informazione\n" -#: pg_ctl.c:1592 +#: pg_ctl.c:1801 #, c-format msgid " -t SECS seconds to wait when using -w option\n" msgstr " -t SECS secondi da aspettare quando si usa l'opzione -w\n" -#: pg_ctl.c:1593 +#: pg_ctl.c:1802 #, c-format msgid " -w wait until operation completes\n" -msgstr " -w aspetta finchè l'opeazione non sia stata completata\n" +msgstr " -w aspetta finché l'operazione non sia stata completata\n" -#: pg_ctl.c:1594 +#: pg_ctl.c:1803 #, c-format msgid " -W do not wait until operation completes\n" -msgstr " -W non aspettare finchè l'operazione non è terminata\n" +msgstr " -W non aspettare finché l'operazione non è terminata\n" -#: pg_ctl.c:1595 +#: pg_ctl.c:1804 #, c-format msgid " --help show this help, then exit\n" -msgstr " --help mostra l'help e poi esci\n" +msgstr " --help mostra questo aiuto ed esci\n" -#: pg_ctl.c:1596 +#: pg_ctl.c:1805 #, c-format msgid " --version output version information, then exit\n" -msgstr " --version mostra le informazioni della versione, poi esci\n" +msgstr " --version mostra informazioni sulla versione ed esci\n" -#: pg_ctl.c:1597 +#: pg_ctl.c:1806 #, c-format msgid "" "(The default is to wait for shutdown, but not for start or restart.)\n" "\n" msgstr "" -"(Il comportameeto di default è di aspettare lo spegnimento, ma non nel caso di avvio o riavvio.)\n" +"(Il comportamento predefinito è di aspettare lo spegnimento, ma non\n" +"l'avvio o il riavvio.)\n" "\n" -#: pg_ctl.c:1598 +#: pg_ctl.c:1807 #, c-format msgid "If the -D option is omitted, the environment variable PGDATA is used.\n" -msgstr "se l'opzione -D è omessa, la variabile d'ambiente PGDATA viene usata.\n" +msgstr "Se l'opzione -D è omessa, viene usata la variabile d'ambiente PGDATA.\n" -#: pg_ctl.c:1600 +#: pg_ctl.c:1809 #, c-format msgid "" "\n" "Options for start or restart:\n" msgstr "" "\n" -"Opzioni per l'avvio od il riavvio:\n" +"Opzioni per l'avvio o il riavvio:\n" -#: pg_ctl.c:1602 +#: pg_ctl.c:1811 #, c-format msgid " -c, --core-files allow postgres to produce core files\n" -msgstr " -c, --core-files permette a postgres di produrre core files\n" +msgstr " -c, --core-files permette a postgres di produrre core file\n" -#: pg_ctl.c:1604 +#: pg_ctl.c:1813 #, c-format msgid " -c, --core-files not applicable on this platform\n" -msgstr " -c, --core-files non applicabile su questa piattaforma\n" +msgstr " -c, --core-files non disponibile su questa piattaforma\n" -#: pg_ctl.c:1606 +#: pg_ctl.c:1815 #, c-format msgid " -l, --log FILENAME write (or append) server log to FILENAME\n" -msgstr " -l, --log FILENAME scrivi (o aggiungi) il log del server nel FILENAME\n" +msgstr " -l, --log FILENAME scrivi (o accoda) il log del server in FILENAME\n" -#: pg_ctl.c:1607 -#, fuzzy, c-format +#: pg_ctl.c:1816 +#, c-format msgid "" " -o OPTIONS command line options to pass to postgres\n" " (PostgreSQL server executable) or initdb\n" msgstr "" -" -o OPTIONS opzioni da linea di comando da passare a postgres\n" -" (server PostgreSQL eseguibile)\n" +" -o OPTIONS opzioni da riga di comando da passare a postgres\n" +" (programma eseguibile del server PostgreSQL)\n" -#: pg_ctl.c:1609 +#: pg_ctl.c:1818 #, c-format msgid " -p PATH-TO-POSTGRES normally not necessary\n" msgstr " -p PATH-TO-POSTGRES normalmente non necessario\n" -#: pg_ctl.c:1610 +#: pg_ctl.c:1819 #, c-format msgid "" "\n" "Options for stop or restart:\n" msgstr "" "\n" -"Opzioni per lo spegnimento od il riavvio:\n" +"Opzioni per lo spegnimento o il riavvio:\n" -#: pg_ctl.c:1611 +#: pg_ctl.c:1820 #, c-format msgid " -m SHUTDOWN-MODE can be \"smart\", \"fast\", or \"immediate\"\n" -msgstr " -m SHUTDOWN-MODE può essere \"smart\", \"fast\", o \"immediate\"\n" +msgstr " -m SHUTDOWN-MODE può essere \"smart\", \"fast\" o \"immediate\"\n" -#: pg_ctl.c:1613 +#: pg_ctl.c:1822 #, c-format msgid "" "\n" @@ -496,31 +585,33 @@ msgstr "" "\n" "I modi di spegnimento sono:\n" -#: pg_ctl.c:1614 +#: pg_ctl.c:1823 #, c-format msgid " smart quit after all clients have disconnected\n" -msgstr " smart chiudere dopo che tutti i clients si sono disconessi\n" +msgstr " smart termina dopo che tutti i client si sono disconnessi\n" -#: pg_ctl.c:1615 +#: pg_ctl.c:1824 #, c-format msgid " fast quit directly, with proper shutdown\n" -msgstr " fast spegni direttamente, con una corretta procedura di arresto\n" +msgstr " fast termina direttamente, con una corretta procedura di arresto\n" -#: pg_ctl.c:1616 +#: pg_ctl.c:1825 #, c-format msgid " immediate quit without complete shutdown; will lead to recovery on restart\n" -msgstr " immediate chiudere senza terminare il server: ciò porterà ad un recupero dei dati al riavvio\n" +msgstr "" +" immediate termina senza un arresto completo: ciò porterà ad un recupero\n" +" dei dati al riavvio\n" -#: pg_ctl.c:1618 +#: pg_ctl.c:1827 #, c-format msgid "" "\n" "Allowed signal names for kill:\n" msgstr "" "\n" -"Nomi permessi ai segnali per kill:\n" +"Nomi di segnali permessi per kill:\n" -#: pg_ctl.c:1622 +#: pg_ctl.c:1831 #, c-format msgid "" "\n" @@ -529,82 +620,114 @@ msgstr "" "\n" "Opzioni per register e unregister:\n" -#: pg_ctl.c:1623 +#: pg_ctl.c:1832 #, c-format msgid " -N SERVICENAME service name with which to register PostgreSQL server\n" -msgstr " -N SERVICENAME nome del servizio con cui ci si registra sul server PostgreSQL\n" +msgstr " -N SERVICENAME nome del servizio con cui registrare il server PostgreSQL\n" -#: pg_ctl.c:1624 +#: pg_ctl.c:1833 #, c-format msgid " -P PASSWORD password of account to register PostgreSQL server\n" -msgstr " -P PASSWORD password per l'account con cui ci si registra sul server PostgreSQL\n" +msgstr " -P PASSWORD password per l'account con cui registrare il server PostgreSQL\n" -#: pg_ctl.c:1625 +#: pg_ctl.c:1834 #, c-format msgid " -U USERNAME user name of account to register PostgreSQL server\n" -msgstr " -U USERNAME user name dell'account con cui ci si registra sul server PostgreSQL\n" +msgstr " -U USERNAME nome utente dell'account con cui registrare il server PostgreSQL\n" + +#: pg_ctl.c:1835 +#, c-format +msgid " -S START-TYPE service start type to register PostgreSQL server\n" +msgstr " -S START-TYPE tipo di avvio del servizion con cui registrare il server PostgreSQL\n" + +#: pg_ctl.c:1837 +#, c-format +msgid "" +"\n" +"Start types are:\n" +msgstr "" +"\n" +"I tipi di avvio sono:\n" + +#: pg_ctl.c:1838 +#, c-format +msgid " auto start service automatically during system startup (default)\n" +msgstr " auto avvia il servizio automaticamente durante l'avvio del sistema (predefinito)\n" + +#: pg_ctl.c:1839 +#, c-format +msgid " demand start service on demand\n" +msgstr " demand avvia il servizio quando richiesto\n" -#: pg_ctl.c:1628 +#: pg_ctl.c:1842 #, c-format msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" -"Segnalare bachi a .\n" +"Puoi segnalare eventuali bug a .\n" -#: pg_ctl.c:1653 +#: pg_ctl.c:1867 #, c-format msgid "%s: unrecognized shutdown mode \"%s\"\n" -msgstr "%s: modalità di spegnimento non riconosciuta \"%s\"\n" +msgstr "%s: modalità di arresto sconosciuta \"%s\"\n" -#: pg_ctl.c:1686 +#: pg_ctl.c:1900 #, c-format msgid "%s: unrecognized signal name \"%s\"\n" -msgstr "%s: nome del segnale non riconosciuto \"%s\"\n" +msgstr "%s: nome del segnale sconosciuto \"%s\"\n" + +#: pg_ctl.c:1917 +#, c-format +msgid "%s: unrecognized start type \"%s\"\n" +msgstr "%s: tipo di avvio sconosciuto \"%s\"\n" -#: pg_ctl.c:1751 +#: pg_ctl.c:1982 #, c-format msgid "" "%s: cannot be run as root\n" "Please log in (using, e.g., \"su\") as the (unprivileged) user that will\n" "own the server process.\n" msgstr "" -"%s: non puo' essere eseguito da root\n" -"Effettuate il log in (usando per esempio \"su\") con l'utente\n" -"(non privilegiato) che controllera' il processo server.\n" +"%s: non può essere eseguito da root\n" +"Effettua il login (usando per esempio \"su\") con l'utente\n" +"(non privilegiato) che controllerà il processo server.\n" -#: pg_ctl.c:1860 +#: pg_ctl.c:2053 +#, c-format +msgid "%s: -S option not supported on this platform\n" +msgstr "%s: l'opzione -S non è supportata su questa piattaforma\n" + +#: pg_ctl.c:2100 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" -msgstr "%s: troppi parametri dalla riga di comando (il primo è \"%s\")\n" +msgstr "%s: troppi argomenti nella riga di comando (il primo è \"%s\")\n" -#: pg_ctl.c:1882 +#: pg_ctl.c:2124 #, c-format msgid "%s: missing arguments for kill mode\n" -msgstr "%s: mancano argomenti per la modalità di kill\n" +msgstr "%s: mancano gli argomenti per la modalità di kill\n" -#: pg_ctl.c:1900 +#: pg_ctl.c:2142 #, c-format msgid "%s: unrecognized operation mode \"%s\"\n" msgstr "%s: modalità di operazione sconosciuta \"%s\"\n" -#: pg_ctl.c:1910 +#: pg_ctl.c:2152 #, c-format msgid "%s: no operation specified\n" msgstr "%s: nessuna operazione specificata\n" -#: pg_ctl.c:1926 +#: pg_ctl.c:2168 #, c-format msgid "%s: no database directory specified and environment variable PGDATA unset\n" msgstr "%s: nessuna directory del database è stata specificata e la variabile d'ambiente PGDATA non è configurata\n" -#: ../../port/exec.c:125 -#: ../../port/exec.c:239 -#: ../../port/exec.c:282 +#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 #, c-format msgid "could not identify current directory: %s" -msgstr "impossibile identificare la directory corrente: %s" +msgstr "identificazione della directory corrente fallita: %s" #: ../../port/exec.c:144 #, c-format @@ -614,48 +737,44 @@ msgstr "binario non valido \"%s\"" #: ../../port/exec.c:193 #, c-format msgid "could not read binary \"%s\"" -msgstr "impossibile leggere il binario \"%s\"" +msgstr "lettura del binario \"%s\" fallita" #: ../../port/exec.c:200 #, c-format msgid "could not find a \"%s\" to execute" -msgstr "impossibile trovare un \"%s\" da eseguire" +msgstr "programma \"%s\" da eseguire non trovato" -#: ../../port/exec.c:255 -#: ../../port/exec.c:291 +#: ../../port/exec.c:255 ../../port/exec.c:291 #, c-format msgid "could not change directory to \"%s\"" -msgstr "impossibile cambiare directory in \"%s\"" +msgstr "spostamento nella directory \"%s\" fallito" #: ../../port/exec.c:270 #, c-format msgid "could not read symbolic link \"%s\"" -msgstr "impossibile leggere il link simbolico \"%s\"" +msgstr "lettura del link simbolico \"%s\" fallita" -#: ../../port/exec.c:516 +#: ../../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" -msgstr "il processo figlio e' uscito con l'exit code %d" +msgstr "processo figlio uscito con codice di uscita %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" -msgstr "il processo figlio e' stato terminato dall'eccezione 0x%X" +msgstr "processo figlio terminato da eccezione 0x%X" -#: ../../port/exec.c:529 +#: ../../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" -msgstr "il processo figlio terminato dal segnale %s" +msgstr "processo figlio terminato da segnale %s" -#: ../../port/exec.c:532 +#: ../../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" -msgstr "il processo figlio e' stato terminato dal segnale %d" +msgstr "processo figlio terminato da segnale %d" -#: ../../port/exec.c:536 +#: ../../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" -msgstr "il processo figlio e' uscito con uno stato non riconosciuto %d" - -#~ msgid "could not start server\n" -#~ msgstr "non è possibile avviare il server\n" +msgstr "processo figlio uscito con stato non riconosciuto %d" diff --git a/src/bin/pg_ctl/po/ja.po b/src/bin/pg_ctl/po/ja.po index 0ed66da7aa..b1a03f5c5c 100644 --- a/src/bin/pg_ctl/po/ja.po +++ b/src/bin/pg_ctl/po/ja.po @@ -5,48 +5,74 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.0 beta 3\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-07-20 12:55+0900\n" -"PO-Revision-Date: 2010-07-15 19:26+0900\n" +"POT-Creation-Date: 2011-07-12 20:26+0900\n" +"PO-Revision-Date: 2011-08-30 21:28+0900\n" "Last-Translator: HOTTA Michihide \n" "Language-Team: jpug-doc \n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: pg_ctl.c:225 pg_ctl.c:240 pg_ctl.c:1834 +#: pg_ctl.c:237 pg_ctl.c:252 pg_ctl.c:2035 #, c-format msgid "%s: out of memory\n" msgstr "%s: メモリ不足です\n" -#: pg_ctl.c:274 +#: pg_ctl.c:286 #, c-format msgid "%s: could not open PID file \"%s\": %s\n" msgstr "%s: PIDファイル\"%s\"をオープンできませんでした: %s\n" -#: pg_ctl.c:281 +#: pg_ctl.c:293 #, c-format msgid "%s: invalid data in PID file \"%s\"\n" msgstr "%s: PIDファイル\"%s\"内に無効なデータがあります\n" -#: pg_ctl.c:557 +#: pg_ctl.c:470 +#, c-format +msgid "" +"\n" +"%s: -w option is not supported when starting a pre-9.1 server\n" +msgstr "" +"\n" +"%s: 9.1より前のサーバを起動する際に-wオプションはサポートされません\n" + +#: pg_ctl.c:540 +#, c-format +msgid "" +"\n" +"%s: -w option cannot use a relative socket directory specification\n" +msgstr "" +"\n" +"%s: -wオプションでは相対ソケットディレクトリ指定を使用することができません\n" + +#: pg_ctl.c:588 +#, c-format +msgid "" +"\n" +"%s: this data directory appears to be running a pre-existing postmaster\n" +msgstr "\n%s: このデータディレクトリでは既存のpostmasterが実行しているようです。\n" + +#: pg_ctl.c:638 #, c-format msgid "%s: cannot set core file size limit; disallowed by hard limit\n" msgstr "" "%s: コアファイルのサイズ制限を設定できません:固定の制限により許されていませ" "ん\n" -#: pg_ctl.c:582 +#: pg_ctl.c:663 #, c-format msgid "%s: could not read file \"%s\"\n" msgstr "%s: ファイル\"%s\"を読み取ることに失敗しました\n" -#: pg_ctl.c:587 +#: pg_ctl.c:668 #, c-format msgid "%s: option file \"%s\" must have exactly one line\n" msgstr "%s: オプションファイル\"%s\"は1行のみでなければなりません\n" -#: pg_ctl.c:635 +#: pg_ctl.c:716 #, c-format msgid "" "The program \"%s\" is needed by %s but was not found in the\n" @@ -57,7 +83,7 @@ msgstr "" "にありませんでした。\n" "インストール状況を確認してください。\n" -#: pg_ctl.c:641 +#: pg_ctl.c:722 #, c-format msgid "" "The program \"%s\" was found by \"%s\"\n" @@ -68,24 +94,44 @@ msgstr "" "バージョンではありませんでした。\n" "インストレーションを検査してください。\n" -#: pg_ctl.c:674 +#: pg_ctl.c:755 #, c-format msgid "%s: database system initialization failed\n" msgstr "%s: データベースシステムが初期化に失敗しました\n" -#: pg_ctl.c:690 +#: pg_ctl.c:770 #, c-format msgid "%s: another server might be running; trying to start server anyway\n" msgstr "" "%s: 他のサーバが動作中の可能性がありますが、とにかくpostmasterの起動を試みま" "す。\n" -#: pg_ctl.c:727 +#: pg_ctl.c:807 #, c-format msgid "%s: could not start server: exit code was %d\n" msgstr "%s: サーバを起動できませんでした。終了コードは%dでした。\n" -#: pg_ctl.c:738 pg_ctl.c:751 +#: pg_ctl.c:814 +msgid "waiting for server to start..." +msgstr "サーバの起動完了を待っています..." + +#: pg_ctl.c:819 pg_ctl.c:920 pg_ctl.c:1011 +msgid " done\n" +msgstr "完了\n" + +#: pg_ctl.c:820 +msgid "server started\n" +msgstr "サーバ起動完了\n" + +#: pg_ctl.c:823 pg_ctl.c:827 +msgid " stopped waiting\n" +msgstr " 待機処理が停止されました\n" + +#: pg_ctl.c:824 +msgid "server is still starting up\n" +msgstr "サーバは依然起動中です。\n" + +#: pg_ctl.c:828 #, c-format msgid "" "%s: could not start server\n" @@ -94,48 +140,45 @@ msgstr "" "%s: サーバを起動できませんでした。\n" "ログ出力を確認してください。\n" -#: pg_ctl.c:747 -msgid "waiting for server to start..." -msgstr "サーバの起動完了を待っています..." - -#: pg_ctl.c:758 pg_ctl.c:831 pg_ctl.c:911 -msgid " done\n" -msgstr "完了\n" +#: pg_ctl.c:834 pg_ctl.c:912 pg_ctl.c:1002 +msgid " failed\n" +msgstr "失敗しました\n" -#: pg_ctl.c:759 -msgid "server started\n" -msgstr "サーバ起動完了\n" +#: pg_ctl.c:835 +#, c-format +msgid "%s: could not wait for server because of misconfiguration\n" +msgstr "%s: 誤設定のためサーバを待機することができませんでした\n" -#: pg_ctl.c:763 +#: pg_ctl.c:841 msgid "server starting\n" msgstr "サーバは起動中です。\n" -#: pg_ctl.c:778 pg_ctl.c:853 pg_ctl.c:933 +#: pg_ctl.c:856 pg_ctl.c:942 pg_ctl.c:1032 pg_ctl.c:1072 #, c-format msgid "%s: PID file \"%s\" does not exist\n" msgstr "%s: PIDファイル\"%s\"がありません\n" -#: pg_ctl.c:779 pg_ctl.c:855 pg_ctl.c:934 +#: pg_ctl.c:857 pg_ctl.c:944 pg_ctl.c:1033 pg_ctl.c:1073 msgid "Is server running?\n" msgstr "サーバが動作していますか?\n" -#: pg_ctl.c:785 +#: pg_ctl.c:863 #, c-format msgid "%s: cannot stop server; single-user server is running (PID: %ld)\n" msgstr "" "%s: サーバを停止できません。シングルユーザサーバ(PID: %ld)が動作していま" "す。\n" -#: pg_ctl.c:793 pg_ctl.c:877 +#: pg_ctl.c:871 pg_ctl.c:966 #, c-format msgid "%s: could not send stop signal (PID: %ld): %s\n" msgstr "%s: 停止シグナルを送信できませんでした。(PID: %ld): %s\n" -#: pg_ctl.c:800 +#: pg_ctl.c:878 msgid "server shutting down\n" msgstr "サーバの停止中です\n" -#: pg_ctl.c:807 pg_ctl.c:884 +#: pg_ctl.c:893 pg_ctl.c:981 msgid "" "WARNING: online backup mode is active\n" "Shutdown will not complete until pg_stop_backup() is called.\n" @@ -145,161 +188,223 @@ msgstr "" "pg_stop_backup()が呼び出されるまでシャットダウンは完了しません\n" "\n" -#: pg_ctl.c:811 pg_ctl.c:888 +#: pg_ctl.c:897 pg_ctl.c:985 msgid "waiting for server to shut down..." msgstr "サーバ停止処理の完了を待っています..." -#: pg_ctl.c:826 pg_ctl.c:905 -msgid " failed\n" -msgstr "失敗しました\n" - -#: pg_ctl.c:828 pg_ctl.c:907 +#: pg_ctl.c:914 pg_ctl.c:1004 #, c-format msgid "%s: server does not shut down\n" msgstr "%s: サーバは停止していません\n" -#: pg_ctl.c:833 pg_ctl.c:912 +#: pg_ctl.c:916 pg_ctl.c:1006 +msgid "" +"HINT: The \"-m fast\" option immediately disconnects sessions rather than\n" +"waiting for session-initiated disconnection.\n" +msgstr "" +"ヒント: \"-m fast\"オプションは、セッション切断が始まるまで待機するのではな" +"く\n" +"即座にセッションを切断します。\n" + +#: pg_ctl.c:922 pg_ctl.c:1012 msgid "server stopped\n" msgstr "サーバは停止しました\n" -#: pg_ctl.c:856 pg_ctl.c:918 +#: pg_ctl.c:945 pg_ctl.c:1018 msgid "starting server anyway\n" msgstr "とにかくサーバを起動しています\n" -#: pg_ctl.c:865 +#: pg_ctl.c:954 #, c-format msgid "%s: cannot restart server; single-user server is running (PID: %ld)\n" msgstr "" "%s: サーバを再起動できません。シングルユーザサーバ(PID: %ld)が動作中です。\n" -#: pg_ctl.c:868 pg_ctl.c:943 +#: pg_ctl.c:957 pg_ctl.c:1042 msgid "Please terminate the single-user server and try again.\n" msgstr "シングルユーザサーバを終了させてから、再度実行してください\n" -#: pg_ctl.c:916 +#: pg_ctl.c:1016 #, c-format msgid "%s: old server process (PID: %ld) seems to be gone\n" msgstr "%s: 古いサーバプロセス(PID: %ld)が動作していないようです\n" -#: pg_ctl.c:940 +#: pg_ctl.c:1039 #, c-format msgid "%s: cannot reload server; single-user server is running (PID: %ld)\n" msgstr "" "%s: サーバをリロードできません。シングルユーザサーバ(PID: %ld)が動作中です\n" -#: pg_ctl.c:949 +#: pg_ctl.c:1048 #, c-format msgid "%s: could not send reload signal (PID: %ld): %s\n" msgstr "%s: リロードシグナルを送信できませんでした。(PID: %ld): %s\n" -#: pg_ctl.c:954 +#: pg_ctl.c:1053 msgid "server signaled\n" msgstr "サーバにシグナルを送信しました\n" -#: pg_ctl.c:998 +#: pg_ctl.c:1079 +#, c-format +msgid "%s: cannot promote server; single-user server is running (PID: %ld)\n" +msgstr "" +"%s: サーバを昇進できません。シングルユーザサーバ(PID: %ld)が動作中です\n" + +#: pg_ctl.c:1088 +#, c-format +msgid "%s: cannot promote server; server is not in standby mode\n" +msgstr "%s: サーバを昇進できません。サーバはスタンバイモードではありません。\n" + +#: pg_ctl.c:1096 +#, c-format +msgid "%s: could not create promote signal file \"%s\": %s\n" +msgstr "%s: \"%s\"昇進通知ファイルを作成することができませんでした: %s\n" + +#: pg_ctl.c:1102 +#, c-format +msgid "%s: could not write promote signal file \"%s\": %s\n" +msgstr "%s: \"%s\"昇進通知ファイルを書き出すことができませんでした: %s\n" + +#: pg_ctl.c:1110 +#, c-format +msgid "%s: could not send promote signal (PID: %ld): %s\n" +msgstr "%s: 昇進シグナルを送信できませんでした。(PID: %ld): %s\n" + +#: pg_ctl.c:1113 +#, c-format +msgid "%s: could not remove promote signal file \"%s\": %s\n" +msgstr "%s: \"%s\"昇進通知ファイルを削除できませんでした: %s\n" + +#: pg_ctl.c:1118 +msgid "server promoting\n" +msgstr "サーバを昇進中です。\n" + +#: pg_ctl.c:1163 #, c-format msgid "%s: single-user server is running (PID: %ld)\n" msgstr "%s: シングルユーザサーバが動作中です(PID: %ld)\n" -#: pg_ctl.c:1010 +#: pg_ctl.c:1175 #, c-format msgid "%s: server is running (PID: %ld)\n" msgstr "%s: サーバが動作中です(PID: %ld)\n" -#: pg_ctl.c:1021 +#: pg_ctl.c:1186 #, c-format msgid "%s: no server running\n" msgstr "%s: サーバが動作していません\n" -#: pg_ctl.c:1032 +#: pg_ctl.c:1197 #, c-format msgid "%s: could not send signal %d (PID: %ld): %s\n" msgstr "%s: シグナル%dを送信できませんでした(PID: %ld): %s\n" -#: pg_ctl.c:1066 +#: pg_ctl.c:1231 #, c-format msgid "%s: could not find own program executable\n" msgstr "%s: 本プログラムの実行ファイルの検索に失敗しました\n" -#: pg_ctl.c:1076 +#: pg_ctl.c:1241 #, c-format msgid "%s: could not find postgres program executable\n" msgstr "%s: postgres の実行ファイルが見つかりません\n" -#: pg_ctl.c:1138 pg_ctl.c:1170 +#: pg_ctl.c:1306 pg_ctl.c:1338 #, c-format msgid "%s: could not open service manager\n" msgstr "%s: サービスマネージャのオープンに失敗しました\n" -#: pg_ctl.c:1144 +#: pg_ctl.c:1312 #, c-format msgid "%s: service \"%s\" already registered\n" msgstr "%s: サービス\\\"%s\\\"は登録済みです\n" -#: pg_ctl.c:1155 +#: pg_ctl.c:1323 #, c-format msgid "%s: could not register service \"%s\": error code %d\n" msgstr "%s: サービス\"%s\"の登録に失敗しました: エラーコード %d\n" -#: pg_ctl.c:1176 +#: pg_ctl.c:1344 #, c-format msgid "%s: service \"%s\" not registered\n" msgstr "%s: サービス\"%s\"は登録されていません\n" -#: pg_ctl.c:1183 +#: pg_ctl.c:1351 #, c-format msgid "%s: could not open service \"%s\": error code %d\n" msgstr "%s: サービス\"%s\"のオープンに失敗しました: エラーコード %d\n" -#: pg_ctl.c:1190 +#: pg_ctl.c:1358 #, c-format msgid "%s: could not unregister service \"%s\": error code %d\n" msgstr "%s: サービス\"%s\"の登録削除に失敗しました: エラーコード %d\n" -#: pg_ctl.c:1276 +#: pg_ctl.c:1444 msgid "Waiting for server startup...\n" msgstr "サーバの起動完了を待っています...\n" -#: pg_ctl.c:1279 +#: pg_ctl.c:1447 msgid "Timed out waiting for server startup\n" msgstr "サーバの起動待機がタイムアウトしました\n" -#: pg_ctl.c:1283 +#: pg_ctl.c:1451 msgid "Server started and accepting connections\n" msgstr "サーバは起動し、接続を受け付けています\n" -#: pg_ctl.c:1333 +#: pg_ctl.c:1501 #, c-format msgid "%s: could not start service \"%s\": error code %d\n" msgstr "%s: サービス\"%s\"の起動に失敗しました: エラーコード %d\n" -#: pg_ctl.c:1568 +#: pg_ctl.c:1573 +#, c-format +msgid "%s: WARNING: cannot create restricted tokens on this platform\n" +msgstr "%s: 警告: このプラットフォームでは制限付きトークンを作成できません\n" + +#: pg_ctl.c:1582 +#, c-format +msgid "%s: could not open process token: %lu\n" +msgstr "%s: プロセストークンをオープンできませんでした: %lu\n" + +#: pg_ctl.c:1595 +#, c-format +msgid "%s: could not allocate SIDs: %lu\n" +msgstr "%s: SIDを割り当てられませんでした: %lu\n" + +#: pg_ctl.c:1614 +#, c-format +msgid "%s: could not create restricted token: %lu\n" +msgstr "%s: 制限付きトークンを作成できませんでした: %lu\n" + +#: pg_ctl.c:1652 +#, c-format +msgid "%s: WARNING: could not locate all job object functions in system API\n" +msgstr "%s: 警告: システムAPI内にすべてのジョブオブジェクト関数を格納できませんでした\n" + +#: pg_ctl.c:1738 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "詳細は\"%s --help\"を実行してください。\n" -#: pg_ctl.c:1576 +#: pg_ctl.c:1746 #, c-format msgid "" -"%s is a utility to start, stop, restart, reload configuration files,\n" -"report the status of a PostgreSQL server, or signal a PostgreSQL process.\n" +"%s is a utility to initialize, start, stop, or control a PostgreSQL server.\n" "\n" msgstr "" -"%sはPostgreSQLサーバの起動、停止、再起動、設定ファイルのリロード、状況報告\n" -"を行うユーティリティです。また、PostgreSQLプロセスへシグナルも送信します。\n" -"\n" +"%sはPostgreSQLサーバの初期化、起動、停止、制御を行うユーティリティです。\n" -#: pg_ctl.c:1578 +#: pg_ctl.c:1747 #, c-format msgid "Usage:\n" msgstr "使用方法:\n" -#: pg_ctl.c:1579 +#: pg_ctl.c:1748 #, c-format msgid " %s init[db] [-D DATADIR] [-s] [-o \"OPTIONS\"]\n" msgstr " %s init[db] [-D DATADIR] [-s] [-o \"オプション\"]\n" -#: pg_ctl.c:1580 +#: pg_ctl.c:1749 #, c-format msgid "" " %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS" @@ -308,12 +413,12 @@ msgstr "" " %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS" "\"]\n" -#: pg_ctl.c:1581 +#: pg_ctl.c:1750 #, c-format msgid " %s stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" msgstr " %s stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" -#: pg_ctl.c:1582 +#: pg_ctl.c:1751 #, c-format msgid "" " %s restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" @@ -322,36 +427,41 @@ msgstr "" " %s restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" " [-o \"OPTIONS\"]\n" -#: pg_ctl.c:1584 +#: pg_ctl.c:1753 #, c-format msgid " %s reload [-D DATADIR] [-s]\n" msgstr " %s reload [-D DATADIR] [-s]\n" -#: pg_ctl.c:1585 +#: pg_ctl.c:1754 #, c-format msgid " %s status [-D DATADIR]\n" msgstr " %s status [-D DATADIR]\n" -#: pg_ctl.c:1586 +#: pg_ctl.c:1755 +#, c-format +msgid " %s promote [-D DATADIR] [-s]\n" +msgstr " %s promote [-D DATADIR] [-s]\n" + +#: pg_ctl.c:1756 #, c-format msgid " %s kill SIGNALNAME PID\n" msgstr " %s kill SIGNALNAME PID\n" -#: pg_ctl.c:1588 +#: pg_ctl.c:1758 #, c-format msgid "" " %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" -" [-w] [-t SECS] [-o \"OPTIONS\"]\n" +" [-S START-TYPE] [-w] [-t SECS] [-o \"OPTIONS\"]\n" msgstr "" " %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" -" [-w] [-t SECS] [-o \"OPTIONS\"]\n" +" [-S START-TYPE] [-w] [-t SECS] [-o \"OPTIONS\"]\n" -#: pg_ctl.c:1590 +#: pg_ctl.c:1760 #, c-format msgid " %s unregister [-N SERVICENAME]\n" msgstr " %s unregister [-N SERVICENAME]\n" -#: pg_ctl.c:1593 +#: pg_ctl.c:1763 #, c-format msgid "" "\n" @@ -360,44 +470,44 @@ msgstr "" "\n" "一般的なオプション:\n" -#: pg_ctl.c:1594 +#: pg_ctl.c:1764 #, c-format msgid " -D, --pgdata DATADIR location of the database storage area\n" msgstr " -D, --pgdata DATADIR データベース格納領域の場所です\n" -#: pg_ctl.c:1595 +#: pg_ctl.c:1765 #, c-format msgid " -s, --silent only print errors, no informational messages\n" msgstr "" " -s, --silent エラーメッセージのみを表示し、情報メッセージは表示し" "ません\n" -#: pg_ctl.c:1596 +#: pg_ctl.c:1766 #, c-format msgid " -t SECS seconds to wait when using -w option\n" msgstr " -t SECS -wオプションを使用する時の待機秒数です。\n" -#: pg_ctl.c:1597 +#: pg_ctl.c:1767 #, c-format msgid " -w wait until operation completes\n" msgstr " -w 作業が完了するまで待機します\n" -#: pg_ctl.c:1598 +#: pg_ctl.c:1768 #, c-format msgid " -W do not wait until operation completes\n" msgstr " -W 作業の完了まで待機しません\n" -#: pg_ctl.c:1599 +#: pg_ctl.c:1769 #, c-format msgid " --help show this help, then exit\n" msgstr " --help ヘルプを表示し、終了します\n" -#: pg_ctl.c:1600 +#: pg_ctl.c:1770 #, c-format msgid " --version output version information, then exit\n" msgstr " --version バージョン情報を表示し、終了します\n" -#: pg_ctl.c:1601 +#: pg_ctl.c:1771 #, c-format msgid "" "(The default is to wait for shutdown, but not for start or restart.)\n" @@ -407,12 +517,12 @@ msgstr "" "ません。)\n" "\n" -#: pg_ctl.c:1602 +#: pg_ctl.c:1772 #, c-format msgid "If the -D option is omitted, the environment variable PGDATA is used.\n" msgstr "-Dオプションの省略時、PGDATA環境変数が使用されます。\n" -#: pg_ctl.c:1604 +#: pg_ctl.c:1774 #, c-format msgid "" "\n" @@ -421,24 +531,24 @@ msgstr "" "\n" "起動、再起動用のオプション\n" -#: pg_ctl.c:1606 +#: pg_ctl.c:1776 #, c-format msgid " -c, --core-files allow postgres to produce core files\n" msgstr "" " -c, --core-files postgresはコアファイルを生成することができます。\n" -#: pg_ctl.c:1608 +#: pg_ctl.c:1778 #, c-format msgid " -c, --core-files not applicable on this platform\n" msgstr " -c, --core-files このプラットフォームでは実行できません\n" -#: pg_ctl.c:1610 +#: pg_ctl.c:1780 #, c-format msgid " -l, --log FILENAME write (or append) server log to FILENAME\n" msgstr "" " -l, --log FILENAME サーバログをFILENAMEへ出力(あるいは追加)します\n" -#: pg_ctl.c:1611 +#: pg_ctl.c:1781 #, c-format msgid "" " -o OPTIONS command line options to pass to postgres\n" @@ -447,12 +557,12 @@ msgstr "" " -o オプション postgres(PostgreSQLサーバ実行ファイル)または\n" " initdb に渡すコマンドラインオプション\n" -#: pg_ctl.c:1613 +#: pg_ctl.c:1783 #, c-format msgid " -p PATH-TO-POSTGRES normally not necessary\n" msgstr " -p PATH-TO-POSTGRES 通常は不要です\n" -#: pg_ctl.c:1614 +#: pg_ctl.c:1784 #, c-format msgid "" "\n" @@ -461,13 +571,13 @@ msgstr "" "\n" "停止、再起動用のオプション:\n" -#: pg_ctl.c:1615 +#: pg_ctl.c:1785 #, c-format msgid " -m SHUTDOWN-MODE can be \"smart\", \"fast\", or \"immediate\"\n" msgstr "" " -m SHUTDOWN-MODE \"smart\"、\"fast\"、\"immediate\"のいずれかです\n" -#: pg_ctl.c:1617 +#: pg_ctl.c:1787 #, c-format msgid "" "\n" @@ -476,17 +586,17 @@ msgstr "" "\n" "シャットダウンモードは以下の通りです:\n" -#: pg_ctl.c:1618 +#: pg_ctl.c:1788 #, c-format msgid " smart quit after all clients have disconnected\n" msgstr " smart 全クライアントの接続切断後に停止します\n" -#: pg_ctl.c:1619 +#: pg_ctl.c:1789 #, c-format msgid " fast quit directly, with proper shutdown\n" msgstr " fast シャットダウン手続き後に停止します\n" -#: pg_ctl.c:1620 +#: pg_ctl.c:1790 #, c-format msgid "" " immediate quit without complete shutdown; will lead to recovery on " @@ -495,7 +605,7 @@ msgstr "" " immediate シャットダウン手続きを行わずに停止します。再起動時にリカバリ状" "態になる可能性があります\n" -#: pg_ctl.c:1622 +#: pg_ctl.c:1792 #, c-format msgid "" "\n" @@ -504,7 +614,7 @@ msgstr "" "\n" "killモードで利用できるシグナル名:\n" -#: pg_ctl.c:1626 +#: pg_ctl.c:1796 #, c-format msgid "" "\n" @@ -513,24 +623,51 @@ msgstr "" "\n" "登録、登録解除用のオプション:\n" -#: pg_ctl.c:1627 +#: pg_ctl.c:1797 #, c-format msgid "" " -N SERVICENAME service name with which to register PostgreSQL server\n" msgstr " -N SERVICENAME PostgreSQLサーバを登録するためのサービス名です\n" -#: pg_ctl.c:1628 +#: pg_ctl.c:1798 #, c-format msgid " -P PASSWORD password of account to register PostgreSQL server\n" msgstr "" " -P PASSWORD PostgreSQLサーバを登録するアカウントのパスワードです\n" -#: pg_ctl.c:1629 +#: pg_ctl.c:1799 #, c-format msgid " -U USERNAME user name of account to register PostgreSQL server\n" msgstr " -U USERNAME PostgreSQLサーバを登録するアカウントのユーザ名です\n" -#: pg_ctl.c:1632 +#: pg_ctl.c:1800 +#, c-format +msgid " -S START-TYPE service start type to register PostgreSQL server\n" +msgstr "" +" -S START-TYPE PostgreSQLサーバを登録するためのサービス起動種類です\n" + +#: pg_ctl.c:1802 +#, c-format +msgid "" +"\n" +"Start types are:\n" +msgstr "" +"\n" +"起動種類は以下の通りです:\n" + +#: pg_ctl.c:1803 +#, c-format +msgid "" +" auto start service automatically during system startup (default)\n" +msgstr "" +" auto システムの起動時にサービスを自動的に開始します(デフォルト)\n" + +#: pg_ctl.c:1804 +#, c-format +msgid " demand start service on demand\n" +msgstr " demand 必要に応じてサービスを開始します\n" + +#: pg_ctl.c:1807 #, c-format msgid "" "\n" @@ -539,17 +676,22 @@ msgstr "" "\n" "不具合はまで報告してください。\n" -#: pg_ctl.c:1657 +#: pg_ctl.c:1832 #, c-format msgid "%s: unrecognized shutdown mode \"%s\"\n" msgstr "%s: シャットダウンモード\"%s\"は不明です\n" -#: pg_ctl.c:1690 +#: pg_ctl.c:1865 #, c-format msgid "%s: unrecognized signal name \"%s\"\n" msgstr "%s: シグナル名\"%s\"は不明です\n" -#: pg_ctl.c:1755 +#: pg_ctl.c:1882 +#, c-format +msgid "%s: unrecognized start type \"%s\"\n" +msgstr "%s: 起動種類\"%s\"は不明です\n" + +#: pg_ctl.c:1947 #, c-format msgid "" "%s: cannot be run as root\n" @@ -560,27 +702,32 @@ msgstr "" "サーバプロセスの所有者となる(非特権)ユーザとして(例えば\"su\"を使用して)\n" "ログインしてください。\n" -#: pg_ctl.c:1864 +#: pg_ctl.c:2018 +#, c-format +msgid "%s: -S option not supported on this platform\n" +msgstr "%s: -Sオプションはこのプラットフォームでサポートされていません\n" + +#: pg_ctl.c:2065 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: コマンドライン引数が多すぎます(先頭は\"%s\")\n" -#: pg_ctl.c:1886 +#: pg_ctl.c:2089 #, c-format msgid "%s: missing arguments for kill mode\n" msgstr "%s: killモード用の引数がありません\n" -#: pg_ctl.c:1904 +#: pg_ctl.c:2107 #, c-format msgid "%s: unrecognized operation mode \"%s\"\n" msgstr "%s: 操作モード\"%s\"は不明です\n" -#: pg_ctl.c:1914 +#: pg_ctl.c:2117 #, c-format msgid "%s: no operation specified\n" msgstr "%s: 操作モードが指定されていません\n" -#: pg_ctl.c:1930 +#: pg_ctl.c:2133 #, c-format msgid "" "%s: no database directory specified and environment variable PGDATA unset\n" @@ -616,27 +763,39 @@ msgstr "ディレクトリを\"%s\"に変更できませんでした" msgid "could not read symbolic link \"%s\"" msgstr "シンボリックリンク\"%s\"の読み取りに失敗しました" -#: ../../port/exec.c:516 +#: ../../port/exec.c:517 #, c-format msgid "child process exited with exit code %d" msgstr "子プロセスが終了コード%dで終了しました" -#: ../../port/exec.c:520 +#: ../../port/exec.c:521 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "子プロセスが例外0x%Xで終了しました" -#: ../../port/exec.c:529 +#: ../../port/exec.c:530 #, c-format msgid "child process was terminated by signal %s" msgstr "子プロセスがシグナル%sで終了しました" -#: ../../port/exec.c:532 +#: ../../port/exec.c:533 #, c-format msgid "child process was terminated by signal %d" msgstr "子プロセスがシグナル%dで終了しました" -#: ../../port/exec.c:536 +#: ../../port/exec.c:537 #, c-format msgid "child process exited with unrecognized status %d" msgstr "子プロセスが未知のステータス%dで終了しました" + +#~ msgid "" +#~ "%s is a utility to start, stop, restart, reload configuration files,\n" +#~ "report the status of a PostgreSQL server, or signal a PostgreSQL " +#~ "process.\n" +#~ "\n" +#~ msgstr "" +#~ "%sはPostgreSQLサーバの起動、停止、再起動、設定ファイルのリロード、状況報" +#~ "告\n" +#~ "を行うユーティリティです。また、PostgreSQLプロセスへシグナルも送信しま" +#~ "す。\n" +#~ "\n" diff --git a/src/bin/pg_ctl/po/ko.po b/src/bin/pg_ctl/po/ko.po deleted file mode 100644 index e303b87875..0000000000 --- a/src/bin/pg_ctl/po/ko.po +++ /dev/null @@ -1,592 +0,0 @@ -# Korean message translation file for PostgreSQL pg_ctl -# Ioseph Kim , 2004. -# -msgid "" -msgstr "" -"Project-Id-Version: PostgreSQL 8.3dev\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-02-09 01:13-0400\n" -"PO-Revision-Date: 2007-02-10 01:13+0900\n" -"Last-Translator: Ioseph Kim \n" -"Language-Team: KOREAN \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: pg_ctl.c:220 pg_ctl.c:235 pg_ctl.c:1661 -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: 메모리 부족\n" - -#: pg_ctl.c:269 -#, c-format -msgid "%s: could not open PID file \"%s\": %s\n" -msgstr "%s: \"%s\" PID 파일을 열 수 없음: %s\n" - -#: pg_ctl.c:276 -#, c-format -msgid "%s: invalid data in PID file \"%s\"\n" -msgstr "%s: \"%s\" PID 파일에 잘못된 값이 있음\n" - -#: pg_ctl.c:499 -#, c-format -msgid "%s: cannot set core size, disallowed by hard limit.\n" -msgstr "" -"%s: 코어 크기를 지정할 수 없음, 하드디스크 용량 초과로 허용되지 않았음.\n" - -#: pg_ctl.c:525 -#, c-format -msgid "%s: another server might be running; trying to start server anyway\n" -msgstr "%s: 다른 서버가 가동 중인 것 같음; 어째든 서버 가동을 시도함\n" - -#: pg_ctl.c:543 -#, c-format -msgid "%s: could not read file \"%s\"\n" -msgstr "%s: \"%s\" 파일을 읽을 수 없음\n" - -#: pg_ctl.c:549 -#, c-format -msgid "%s: option file \"%s\" must have exactly one line\n" -msgstr "%s: \"%s\" 환경설정파일은 반드시 한 줄을 가져야한다?\n" - -#: pg_ctl.c:600 -#, c-format -msgid "" -"The program \"postgres\" is needed by %s but was not found in the\n" -"same directory as \"%s\".\n" -"Check your installation.\n" -msgstr "" -"%s 프로그램은 \"postgres\" 프로그램을 필요로 합니다. 그런데, 이 파일이\n" -"\"%s\" 파일이 있는 디렉토리 안에 없습니다.\n" -"설치 상태를 확인해 주십시오.\n" - -#: pg_ctl.c:606 -#, c-format -msgid "" -"The program \"postgres\" was found by \"%s\"\n" -"but was not the same version as %s.\n" -"Check your installation.\n" -msgstr "" -"\"%s\" 프로그램은 \"postgres\" 프로그램을 찾았지만 이 파일은\n" -"%s 프로그램의 버전과 틀립니다.\n" -"설치 상태를 확인해 주십시오.\n" - -#: pg_ctl.c:623 -#, c-format -msgid "%s: could not start server: exit code was %d\n" -msgstr "%s: 서버를 시작할 수 없음: 종료 코드 %d\n" - -#: pg_ctl.c:634 -#, c-format -msgid "" -"%s: could not start server\n" -"Examine the log output.\n" -msgstr "" -"%s: 서버를 시작 할 수 없음\n" -"로그 출력을 살펴보십시오.\n" - -#: pg_ctl.c:643 -msgid "waiting for server to start..." -msgstr "서버를 시작하기 위해 기다리는 중..." - -#: pg_ctl.c:647 -#, c-format -msgid "could not start server\n" -msgstr "서버를 시작 할 수 없음\n" - -#: pg_ctl.c:652 pg_ctl.c:718 pg_ctl.c:791 -msgid " done\n" -msgstr " 완료\n" - -#: pg_ctl.c:653 -msgid "server started\n" -msgstr "서버 시작됨\n" - -#: pg_ctl.c:657 -msgid "server starting\n" -msgstr "서버를 시작합니다\n" - -#: pg_ctl.c:671 pg_ctl.c:739 pg_ctl.c:813 -#, c-format -msgid "%s: PID file \"%s\" does not exist\n" -msgstr "%s: \"%s\" PID 파일이 없습니다\n" - -#: pg_ctl.c:672 pg_ctl.c:741 pg_ctl.c:814 -msgid "Is server running?\n" -msgstr "서버가 실행 중입니까?\n" - -#: pg_ctl.c:678 -#, c-format -msgid "%s: cannot stop server; single-user server is running (PID: %ld)\n" -msgstr "%s: 서버 중지 실패; 단일 사용자 서버가 실행 중 (PID: %ld)\n" - -#: pg_ctl.c:686 pg_ctl.c:763 -#, c-format -msgid "%s: could not send stop signal (PID: %ld): %s\n" -msgstr "%s: stop 시그널을 보낼 수 없음 (PID: %ld): %s\n" - -#: pg_ctl.c:693 -msgid "server shutting down\n" -msgstr "서버를 멈춥니다\n" - -#: pg_ctl.c:698 pg_ctl.c:768 -msgid "waiting for server to shut down..." -msgstr "서버를 멈추기 위해 기다리는 중..." - -#: pg_ctl.c:713 pg_ctl.c:785 -msgid " failed\n" -msgstr " 실패\n" - -#: pg_ctl.c:715 pg_ctl.c:787 -#, c-format -msgid "%s: server does not shut down\n" -msgstr "%s: 서버를 멈추지 못했음\n" - -#: pg_ctl.c:720 pg_ctl.c:792 -#, c-format -msgid "server stopped\n" -msgstr "서버 멈추었음\n" - -#: pg_ctl.c:742 pg_ctl.c:798 -msgid "starting server anyway\n" -msgstr "어째든 서버를 시작합니다\n" - -#: pg_ctl.c:751 -#, c-format -msgid "%s: cannot restart server; single-user server is running (PID: %ld)\n" -msgstr "" -"%s: 서버를 다시 시작 할 수 없음; 단일사용자 서버가 실행 중임 (PID: %ld)\n" - -#: pg_ctl.c:754 pg_ctl.c:823 -msgid "Please terminate the single-user server and try again.\n" -msgstr "단일 사용자 서버를 멈추고 다시 시도하십시오.\n" - -#: pg_ctl.c:796 -#, c-format -msgid "%s: old server process (PID: %ld) seems to be gone\n" -msgstr "%s: 이전 서버 프로세스(PID: %ld)가 없어졌습니다\n" - -#: pg_ctl.c:820 -#, c-format -msgid "%s: cannot reload server; single-user server is running (PID: %ld)\n" -msgstr "" -"%s: 서버 환경설정을 다시 불러올 수 없음; 단일 사용자 서버가 실행 중임 (PID: %" -"ld)\n" - -#: pg_ctl.c:829 -#, c-format -msgid "%s: could not send reload signal (PID: %ld): %s\n" -msgstr "%s: reload 시그널을 보낼 수 없음 (PID: %ld): %s\n" - -#: pg_ctl.c:834 -msgid "server signaled\n" -msgstr "서버가 시스템 시그널을 받았음\n" - -#: pg_ctl.c:878 -#, c-format -msgid "%s: single-user server is running (PID: %ld)\n" -msgstr "%s: 단일 사용자 서버가 실행 중임 (PID: %ld)\n" - -#: pg_ctl.c:890 -#, c-format -msgid "%s: server is running (PID: %ld)\n" -msgstr "%s: 서버가 실행 중임 (PID: %ld)\n" - -#: pg_ctl.c:901 -#, c-format -msgid "%s: no server running\n" -msgstr "%s: 가동 중인 서버가 없음\n" - -#: pg_ctl.c:912 -#, c-format -msgid "%s: could not send signal %d (PID: %ld): %s\n" -msgstr "%s: %d 시그널을 보낼 수 없음 (PID: %ld): %s\n" - -#: pg_ctl.c:946 -#, c-format -msgid "%s: could not find own program executable\n" -msgstr "%s: 실행 가능한 프로그램을 찾을 수 없습니다\n" - -#: pg_ctl.c:955 -#, c-format -msgid "%s: could not find postgres program executable\n" -msgstr "%s: 실행 가능한 postgres 프로그램을 찾을 수 없음\n" - -#: pg_ctl.c:1009 pg_ctl.c:1041 -#, c-format -msgid "%s: could not open service manager\n" -msgstr "%s: 서비스 관리자를 열 수 없음\n" - -#: pg_ctl.c:1015 -#, c-format -msgid "%s: service \"%s\" already registered\n" -msgstr "%s: \"%s\" 서비스가 이미 등록 되어 있음\n" - -#: pg_ctl.c:1026 -#, c-format -msgid "%s: could not register service \"%s\": error code %d\n" -msgstr "%s: \"%s\" 서비스를 등록할 수 없음: 오류 코드 %d\n" - -#: pg_ctl.c:1047 -#, c-format -msgid "%s: service \"%s\" not registered\n" -msgstr "%s: \"%s\" 서비스가 등록되어 있지 않음\n" - -#: pg_ctl.c:1054 -#, c-format -msgid "%s: could not open service \"%s\": error code %d\n" -msgstr "%s: \"%s\" 서비스를 열 수 없음: 오류 코드 %d\n" - -#: pg_ctl.c:1061 -#, c-format -msgid "%s: could not unregister service \"%s\": error code %d\n" -msgstr "%s: \"%s\" 서비스를 서비스 목록에서 뺄 수 없음: 오류 코드 %d\n" - -#: pg_ctl.c:1190 -#, c-format -msgid "%s: could not start service \"%s\": error code %d\n" -msgstr "%s: \"%s\" 서비스를 시작할 수 없음: 오류 번호 %d\n" - -#: pg_ctl.c:1402 -#, c-format -msgid "Try \"%s --help\" for more information.\n" -msgstr "보다 자세한 사용법은 \"%s --help\"\n" - -#: pg_ctl.c:1410 -#, c-format -msgid "" -"%s is a utility to start, stop, restart, reload configuration files,\n" -"report the status of a PostgreSQL server, or signal a PostgreSQL process.\n" -"\n" -msgstr "" -"%s 프로그램은 PostgreSQL 서비스를 시작, 중지, 재시작, 환경설정 재적용,\n" -"서버 상태 보기, 또는 PostgreSQL 프로세스에 특정 시그널을 보낼 수 있는\n" -"프로그램입니다.\n" -"\n" - -#: pg_ctl.c:1412 -#, c-format -msgid "Usage:\n" -msgstr "사용법:\n" - -#: pg_ctl.c:1413 -#, c-format -msgid " %s start [-w] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]\n" -msgstr " %s start [-w] [-D DATADIR] [-s] [-l 로그파일] [-o \"서버옵션\"]\n" - -#: pg_ctl.c:1414 -#, c-format -msgid " %s stop [-W] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" -msgstr " %s stop [-W] [-D DATADIR] [-s] [-m 중지방법]\n" - -#: pg_ctl.c:1415 -#, c-format -msgid "" -" %s restart [-w] [-D DATADIR] [-s] [-m SHUTDOWN-MODE] [-o \"OPTIONS\"]\n" -msgstr " %s restart [-w] [-D DATADIR] [-s] [-m 중지방법] [-o \"서버옵션\"]\n" - -#: pg_ctl.c:1416 -#, c-format -msgid " %s reload [-D DATADIR] [-s]\n" -msgstr " %s reload [-D DATADIR] [-s]\n" - -#: pg_ctl.c:1417 -#, c-format -msgid " %s status [-D DATADIR]\n" -msgstr " %s status [-D DATADIR]\n" - -#: pg_ctl.c:1418 -#, c-format -msgid " %s kill SIGNALNAME PID\n" -msgstr " %s kill 시그널이름 PID\n" - -#: pg_ctl.c:1420 -#, c-format -msgid "" -" %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" -" [-w] [-o \"OPTIONS\"]\n" -msgstr "" -" %s register [-N 서비스이름] [-U 사용자] [-P 비밀번호] [-D DATADIR]\n" -" [-w] [-o \"서버옵션\"]\n" - -#: pg_ctl.c:1422 -#, c-format -msgid " %s unregister [-N SERVICENAME]\n" -msgstr " %s unregister [-N 서비스이름]\n" - -#: pg_ctl.c:1425 -#, c-format -msgid "" -"\n" -"Common options:\n" -msgstr "" -"\n" -"일반 옵션들:\n" - -#: pg_ctl.c:1426 -#, c-format -msgid " -D, --pgdata DATADIR location of the database storage area\n" -msgstr " -D, --pgdata DATADIR 데이터베이스 자료가 저장되어있는 디렉토리\n" - -#: pg_ctl.c:1427 -#, c-format -msgid " -s, --silent only print errors, no informational messages\n" -msgstr "" -" -s, --silent 일반적인 메시지는 보이지 않고, 오류만 보여줌\n" - -#: pg_ctl.c:1428 -#, c-format -msgid " -w wait until operation completes\n" -msgstr " -w 작업이 끝날 때까지 기다림\n" - -#: pg_ctl.c:1429 -#, c-format -msgid " -W do not wait until operation completes\n" -msgstr " -W 작업이 끝날 때까지 기다리지 않음\n" - -#: pg_ctl.c:1430 -#, c-format -msgid " --help show this help, then exit\n" -msgstr " --help 도움말을 보여주고 마침\n" - -#: pg_ctl.c:1431 -#, c-format -msgid " --version output version information, then exit\n" -msgstr " --version 버전 정보를 보여주고 마침\n" - -#: pg_ctl.c:1432 -#, c-format -msgid "" -"(The default is to wait for shutdown, but not for start or restart.)\n" -"\n" -msgstr "" -"(기본 설정은 중지 할 때는 기다리고, 시작이나 재시작할 때는 안 기다림.)\n" - -#: pg_ctl.c:1433 -#, c-format -msgid "If the -D option is omitted, the environment variable PGDATA is used.\n" -msgstr "-D 옵션을 사용하지 않으며, PGDATA 환경변수값을 사용함.\n" - -#: pg_ctl.c:1435 -#, c-format -msgid "" -"\n" -"Options for start or restart:\n" -msgstr "" -"\n" -"start, restart 때 사용할 수 있는 옵션들:\n" - -#: pg_ctl.c:1436 -#, c-format -msgid " -l, --log FILENAME write (or append) server log to FILENAME\n" -msgstr " -l, --log 파일이름 서버 로그를 이 파일에 기록함\n" - -#: pg_ctl.c:1437 -#, c-format -msgid "" -" -o OPTIONS command line options to pass to postgres\n" -" (PostgreSQL server executable)\n" -msgstr "" -" -o 옵션들 PostgreSQL 서버프로그램인 postgres 실행할 때\n" -" 사용할 명령행 옵션들\n" - -#: pg_ctl.c:1439 -#, c-format -msgid " -p PATH-TO-POSTGRES normally not necessary\n" -msgstr " -p PATH-TO-POSTGRES 보통은 필요치 않음\n" - -#: pg_ctl.c:1441 -#, c-format -msgid " -c, --core-files allow postgres to produce core files\n" -msgstr " -c, --core-files 코어 덤프 파일을 만듬\n" - -#: pg_ctl.c:1443 -#, c-format -msgid " -c, --core-files not applicable on this platform\n" -msgstr " -c, --core-files 이 플랫폼에서는 사용할 수 없음\n" - -#: pg_ctl.c:1445 -#, c-format -msgid "" -"\n" -"Options for stop or restart:\n" -msgstr "" -"\n" -"stop, restart 때 사용 할 수 있는 옵션들:\n" - -#: pg_ctl.c:1446 -#, c-format -msgid " -m SHUTDOWN-MODE can be \"smart\", \"fast\", or \"immediate\"\n" -msgstr " -m 중지방법 \"smart\", \"fast\", \"immediate\" 중 하나\n" - -#: pg_ctl.c:1448 -#, c-format -msgid "" -"\n" -"Shutdown modes are:\n" -msgstr "" -"\n" -"중지방법 설명:\n" - -#: pg_ctl.c:1449 -#, c-format -msgid " smart quit after all clients have disconnected\n" -msgstr " smart 모든 클라이언트의 연결이 끊기게 되면 중지 됨\n" - -#: pg_ctl.c:1450 -#, c-format -msgid " fast quit directly, with proper shutdown\n" -msgstr " fast 클라이언트의 연결을 강제로 끊고 정상적으로 중지 됨\n" - -#: pg_ctl.c:1451 -#, c-format -msgid "" -" immediate quit without complete shutdown; will lead to recovery on " -"restart\n" -msgstr "" -" immediate 그냥 무조건 중지함; 다시 시작할 때 복구 작업을 할 수도 있음\n" - -#: pg_ctl.c:1453 -#, c-format -msgid "" -"\n" -"Allowed signal names for kill:\n" -msgstr "" -"\n" -"사용할 수 있는 중지용(for kill) 시그널 이름:\n" - -#: pg_ctl.c:1457 -#, c-format -msgid "" -"\n" -"Options for register and unregister:\n" -msgstr "" -"\n" -"서비스 등록/제거용 옵션들:\n" - -#: pg_ctl.c:1458 -#, c-format -msgid "" -" -N SERVICENAME service name with which to register PostgreSQL server\n" -msgstr " -N SERVICENAME 서비스 목록에 등록될 PostgreSQL 서비스 이름\n" - -#: pg_ctl.c:1459 -#, c-format -msgid " -P PASSWORD password of account to register PostgreSQL server\n" -msgstr " -P PASSWORD 이 서비스를 실행할 사용자의 비밀번호\n" - -#: pg_ctl.c:1460 -#, c-format -msgid " -U USERNAME user name of account to register PostgreSQL server\n" -msgstr " -U USERNAME 이 서비스를 실행할 사용자 이름\n" - -#: pg_ctl.c:1463 -#, c-format -msgid "" -"\n" -"Report bugs to .\n" -msgstr "" -"\n" -"오류보고: .\n" - -#: pg_ctl.c:1488 -#, c-format -msgid "%s: unrecognized shutdown mode \"%s\"\n" -msgstr "%s: 잘못된 중지 방법 \"%s\"\n" - -#: pg_ctl.c:1521 -#, c-format -msgid "%s: unrecognized signal name \"%s\"\n" -msgstr "%s: 잘못된 시그널 이름 \"%s\"\n" - -#: pg_ctl.c:1585 -#, c-format -msgid "" -"%s: cannot be run as root\n" -"Please log in (using, e.g., \"su\") as the (unprivileged) user that will\n" -"own the server process.\n" -msgstr "" -"%s: root로 이 프로그램을 실행하지 마십시오\n" -"시스템관리자 권한이 없는, 서버프로세스의 소유주가 될 일반 사용자로\n" -"로그인 해서(\"su\", \"runas\" 같은 명령 이용) 실행하십시오.\n" - -#: pg_ctl.c:1691 -#, c-format -msgid "%s: too many command-line arguments (first is \"%s\")\n" -msgstr "%s: 너무 많은 명령행 인자들 (시작 \"%s\")\n" - -#: pg_ctl.c:1710 -#, c-format -msgid "%s: missing arguments for kill mode\n" -msgstr "%s: kill 작업에 필요한 인자가 빠졌습니다\n" - -#: pg_ctl.c:1728 -#, c-format -msgid "%s: unrecognized operation mode \"%s\"\n" -msgstr "%s: 알 수 없는 작업 모드 \"%s\"\n" - -#: pg_ctl.c:1738 -#, c-format -msgid "%s: no operation specified\n" -msgstr "%s: 수행할 작업을 지정하지 않았습니다\n" - -#: pg_ctl.c:1754 -#, c-format -msgid "" -"%s: no database directory specified and environment variable PGDATA unset\n" -msgstr "%s: -D 옵션도 없고, PGDATA 환경변수값도 지정되어 있지 않습니다.\n" - -#: ../../port/exec.c:192 ../../port/exec.c:306 ../../port/exec.c:349 -#, c-format -msgid "could not identify current directory: %s" -msgstr "현재 디렉토리를 알 수 없음: %s" - -#: ../../port/exec.c:211 -#, c-format -msgid "invalid binary \"%s\"" -msgstr "잘못된 이진 파일 \"%s\"" - -#: ../../port/exec.c:260 -#, c-format -msgid "could not read binary \"%s\"" -msgstr "\"%s\" 이진 파일을 읽을 수 없음" - -#: ../../port/exec.c:267 -#, c-format -msgid "could not find a \"%s\" to execute" -msgstr "실행할 \"%s\" 파일을 찾을 수 없음" - -#: ../../port/exec.c:322 ../../port/exec.c:358 -#, c-format -msgid "could not change directory to \"%s\"" -msgstr "\"%s\" 디렉토리로 이동 할 수 없음" - -#: ../../port/exec.c:337 -#, c-format -msgid "could not read symbolic link \"%s\"" -msgstr "\"%s\" 심벌릭 링크를 읽을 수 없음" - -#: ../../port/exec.c:583 -#, c-format -msgid "child process exited with exit code %d" -msgstr "하위 프로세스가 종료되었음, 종료 코드 %d" - -#: ../../port/exec.c:587 -#, c-format -msgid "child process was terminated by exception 0x%X" -msgstr "0x%X 예외처리로 하위 프로세스가 종료되었음" - -#: ../../port/exec.c:596 -#, c-format -msgid "child process was terminated by signal %s" -msgstr "%s 시그널 감지로 하위 프로세스가 종료되었음" - -#: ../../port/exec.c:599 -#, c-format -msgid "child process was terminated by signal %d" -msgstr "하위 프로세스가 종료되었음, 시그널 %d" - -#: ../../port/exec.c:603 -#, c-format -msgid "child process exited with unrecognized status %d" -msgstr "하위 프로세스가 종료되었음, 알수 없는 상태 %d" diff --git a/src/bin/pg_ctl/po/pl.po b/src/bin/pg_ctl/po/pl.po new file mode 100644 index 0000000000..215966c6c3 --- /dev/null +++ b/src/bin/pg_ctl/po/pl.po @@ -0,0 +1,808 @@ +# Polish message translation file for pg_ctl +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# Begina Felicysym , 2011. +msgid "" +msgstr "" +"Project-Id-Version: pg_ctl (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-10-08 08:41+0000\n" +"PO-Revision-Date: 2011-10-09 17:47+0200\n" +"Last-Translator: Begina Felicysym \n" +"Language-Team: Begina Felicysym\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1-beta1\n" + +#: pg_ctl.c:237 pg_ctl.c:252 pg_ctl.c:2035 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: brak pamięci\n" + +#: pg_ctl.c:286 +#, c-format +msgid "%s: could not open PID file \"%s\": %s\n" +msgstr "%s: nie można otworzyć pliku PID \"%s\": %s\n" + +#: pg_ctl.c:293 +#, c-format +msgid "%s: invalid data in PID file \"%s\"\n" +msgstr "%s: niepoprawne dane w pliku PID \"%s\"\n" + +#: pg_ctl.c:470 +#, c-format +msgid "" +"\n" +"%s: -w option is not supported when starting a pre-9.1 server\n" +msgstr "" +"\n" +"%s: opcja -w nie jest wspierana przy uruchomieniu serwera pre-9.1\n" + +#: pg_ctl.c:540 +#, c-format +msgid "" +"\n" +"%s: -w option cannot use a relative socket directory specification\n" +msgstr "" +"\n" +"%s: opcja -w nie może używać względnego wskazania katalogu gniazd\n" + +#: pg_ctl.c:588 +#, c-format +msgid "" +"\n" +"%s: this data directory appears to be running a pre-existing postmaster\n" +msgstr "" +"\n" +"%s: ten folder danych wydaje się być działać pod wcześniejszym postmasterem\n" + +#: pg_ctl.c:638 +#, c-format +msgid "%s: cannot set core file size limit; disallowed by hard limit\n" +msgstr "" +"%s: nie można ustawić ograniczenia rozmiaru pliku jądra; zablokowane przez " +"twardy limit\n" + +#: pg_ctl.c:663 +#, c-format +msgid "%s: could not read file \"%s\"\n" +msgstr "%s: nie można czytać z pliku \"%s\"\n" + +#: pg_ctl.c:668 +#, c-format +msgid "%s: option file \"%s\" must have exactly one line\n" +msgstr "%s: plik opcji \"%s\" musi mieć dokładnie jedną linię\n" + +#: pg_ctl.c:716 +#, c-format +msgid "" +"The program \"%s\" is needed by %s but was not found in the\n" +"same directory as \"%s\".\n" +"Check your installation.\n" +msgstr "" +"Program \"%s\" jest wymagany przez %s ale nie został znaleziony\n" +"w tym samym folderze co \"%s\".\n" +"Sprawdź instalację.\n" + +#: pg_ctl.c:722 +#, c-format +msgid "" +"The program \"%s\" was found by \"%s\"\n" +"but was not the same version as %s.\n" +"Check your installation.\n" +msgstr "" +"Program \"%s\" został znaleziony przez \"%s\"\n" +"ale nie jest w tej samej wersji co %s.\n" +"Sprawdź instalację.\n" + +#: pg_ctl.c:755 +#, c-format +msgid "%s: database system initialization failed\n" +msgstr "%s: inicjacja systemu bazy danych nie powiodła się\n" + +#: pg_ctl.c:770 +#, c-format +msgid "%s: another server might be running; trying to start server anyway\n" +msgstr "" +"%s: inny serwer może być uruchomiony, próba uruchomienia serwera mimo to\n" + +#: pg_ctl.c:807 +#, c-format +msgid "%s: could not start server: exit code was %d\n" +msgstr "%s: nie można uruchomić serwera: wystąpił kod wyjścia %d\n" + +#: pg_ctl.c:814 +msgid "waiting for server to start..." +msgstr "oczekiwanie na uruchomienie serwera..." + +#: pg_ctl.c:819 pg_ctl.c:920 pg_ctl.c:1011 +msgid " done\n" +msgstr " zakończono\n" + +#: pg_ctl.c:820 +msgid "server started\n" +msgstr "uruchomiono serwer\n" + +#: pg_ctl.c:823 pg_ctl.c:827 +msgid " stopped waiting\n" +msgstr " oczekiwanie zakończone\n" + +#: pg_ctl.c:824 +msgid "server is still starting up\n" +msgstr "serwer ciągle się uruchamia\n" + +#: pg_ctl.c:828 +#, c-format +msgid "" +"%s: could not start server\n" +"Examine the log output.\n" +msgstr "" +"%s: Nie udało się uruchomić serwera\n" +"Sprawdź logi wyjścia.\n" + +#: pg_ctl.c:834 pg_ctl.c:912 pg_ctl.c:1002 +msgid " failed\n" +msgstr " niepowodzenie\n" + +#: pg_ctl.c:835 +#, c-format +msgid "%s: could not wait for server because of misconfiguration\n" +msgstr "%s: nie można czekać na serwer z powodu błędnej konfiguracji\n" + +#: pg_ctl.c:841 +msgid "server starting\n" +msgstr "serwer w trakcie uruchamiania\n" + +#: pg_ctl.c:856 pg_ctl.c:942 pg_ctl.c:1032 pg_ctl.c:1072 +#, c-format +msgid "%s: PID file \"%s\" does not exist\n" +msgstr "%s: plik PID \"%s\" nie istnieje\n" + +#: pg_ctl.c:857 pg_ctl.c:944 pg_ctl.c:1033 pg_ctl.c:1073 +msgid "Is server running?\n" +msgstr "Czy serwer działa?\n" + +#: pg_ctl.c:863 +#, c-format +msgid "%s: cannot stop server; single-user server is running (PID: %ld)\n" +msgstr "" +"%s: Nie można zatrzymać serwera; jest uruchomiony serwer pojedynczego " +"użytkownika (PID: %ld)\n" + +#: pg_ctl.c:871 pg_ctl.c:966 +#, c-format +msgid "%s: could not send stop signal (PID: %ld): %s\n" +msgstr "%s: nie udało się wysłać sygnału zatrzymującego (PID: %ld): %s\n" + +#: pg_ctl.c:878 +msgid "server shutting down\n" +msgstr "zatrzymywanie serwera\n" + +#: pg_ctl.c:893 pg_ctl.c:981 +msgid "" +"WARNING: online backup mode is active\n" +"Shutdown will not complete until pg_stop_backup() is called.\n" +"\n" +msgstr "" +"OSTRZEŻENIE: jest aktywny tryb robienia kopii roboczej online\n" +"Zatrzymanie nie zakończy się póki wywoływana jest pg_stop_backup().\n" +"\n" + +#: pg_ctl.c:897 pg_ctl.c:985 +msgid "waiting for server to shut down..." +msgstr "oczekiwanie na zatrzymanie serwera..." + +#: pg_ctl.c:914 pg_ctl.c:1004 +#, c-format +msgid "%s: server does not shut down\n" +msgstr "%s: serwer nie zatrzymał się\n" + +#: pg_ctl.c:916 pg_ctl.c:1006 +msgid "" +"HINT: The \"-m fast\" option immediately disconnects sessions rather than\n" +"waiting for session-initiated disconnection.\n" +msgstr "" +"PORADA: Opcja \"-m fast\" rozłącza natychmiast sesje zamiast\n" +"czekać na odłączenie sesji przez użytkowników.\n" + +#: pg_ctl.c:922 pg_ctl.c:1012 +msgid "server stopped\n" +msgstr "serwer zatrzymany\n" + +#: pg_ctl.c:945 pg_ctl.c:1018 +msgid "starting server anyway\n" +msgstr "uruchomienie serwera mimo wszystko\n" + +#: pg_ctl.c:954 +#, c-format +msgid "%s: cannot restart server; single-user server is running (PID: %ld)\n" +msgstr "" +"%s: Nie można zrestartować serwera; jest uruchomiony serwer pojedynczego " +"użytkownika (PID: %ld)\n" + +#: pg_ctl.c:957 pg_ctl.c:1042 +msgid "Please terminate the single-user server and try again.\n" +msgstr "" +"Proszę zakończyć działanie serwera pojedynczego użytkownika i spróbować raz " +"jeszcze.\n" + +#: pg_ctl.c:1016 +#, c-format +msgid "%s: old server process (PID: %ld) seems to be gone\n" +msgstr "%s: poprzedni proces serwera (PID: %ld) wydaje się zginął\n" + +#: pg_ctl.c:1039 +#, c-format +msgid "%s: cannot reload server; single-user server is running (PID: %ld)\n" +msgstr "" +"%s: Nie można przeładować serwera; jest uruchomiony serwer pojedynczego " +"użytkownika (PID: %ld)\n" + +#: pg_ctl.c:1048 +#, c-format +msgid "%s: could not send reload signal (PID: %ld): %s\n" +msgstr "%s: nie udało się wysłać sygnału przeładowującego (PID: %ld): %s\n" + +#: pg_ctl.c:1053 +#, fuzzy +msgid "server signaled\n" +msgstr "uruchomiono serwer\n" + +#: pg_ctl.c:1079 +#, c-format +msgid "%s: cannot promote server; single-user server is running (PID: %ld)\n" +msgstr "" +"%s: Nie można rozgłosić serwera; jest uruchomiony serwer pojedynczego " +"użytkownika (PID: %ld)\n" + +#: pg_ctl.c:1088 +#, c-format +msgid "%s: cannot promote server; server is not in standby mode\n" +msgstr "%s: Nie można rozgłosić serwera; nie jest w trybie gotowości\n" + +#: pg_ctl.c:1096 +#, c-format +msgid "%s: could not create promote signal file \"%s\": %s\n" +msgstr "%s: nie można utworzyć pliku sygnału rozgłoszenia \"%s\": %s\n" + +#: pg_ctl.c:1102 +#, c-format +msgid "%s: could not write promote signal file \"%s\": %s\n" +msgstr "%s: nie można zapisać pliku sygnału rozgłoszenia \"%s\": %s\n" + +#: pg_ctl.c:1110 +#, c-format +msgid "%s: could not send promote signal (PID: %ld): %s\n" +msgstr "%s: nie udało się wysłać sygnału rozgłaszającego (PID: %ld): %s\n" + +#: pg_ctl.c:1113 +#, c-format +msgid "%s: could not remove promote signal file \"%s\": %s\n" +msgstr "%s: nie można usunąć pliku sygnału rozgłoszenia \"%s\": %s\n" + +#: pg_ctl.c:1118 +msgid "server promoting\n" +msgstr "serwer w trakcie rozgłaszania\n" + +#: pg_ctl.c:1163 +#, c-format +msgid "%s: single-user server is running (PID: %ld)\n" +msgstr "%s: jest uruchomiony serwer pojedynczego użytkownika (PID: %ld)\n" + +#: pg_ctl.c:1175 +#, c-format +msgid "%s: server is running (PID: %ld)\n" +msgstr "%s: jest uruchomiony serwer (PID: %ld)\n" + +#: pg_ctl.c:1186 +#, c-format +msgid "%s: no server running\n" +msgstr "%s: brak uruchomionego serwera\n" + +#: pg_ctl.c:1197 +#, c-format +msgid "%s: could not send signal %d (PID: %ld): %s\n" +msgstr "%s: nie udało się wysłać sygnału %d (PID: %ld): %s\n" + +#: pg_ctl.c:1231 +#, c-format +msgid "%s: could not find own program executable\n" +msgstr "%s: nie udało się znaleźć własnego programu wykonywalnego\n" + +#: pg_ctl.c:1241 +#, c-format +msgid "%s: could not find postgres program executable\n" +msgstr "%s: nie udało się znaleźć programu wykonywalnego postgresa\n" + +#: pg_ctl.c:1306 pg_ctl.c:1338 +#, c-format +msgid "%s: could not open service manager\n" +msgstr "%s: nie udało się otworzyć menadżera usług\n" + +#: pg_ctl.c:1312 +#, c-format +msgid "%s: service \"%s\" already registered\n" +msgstr "%s: usługa \"%s\" jest już zarejestrowana\n" + +#: pg_ctl.c:1323 +#, c-format +msgid "%s: could not register service \"%s\": error code %d\n" +msgstr "%s: nie udało się zarejestrować usługi \"%s\": kod błędu %d\n" + +#: pg_ctl.c:1344 +#, c-format +msgid "%s: service \"%s\" not registered\n" +msgstr "%s: usługa \"%s\" niezarejestrowana\n" + +#: pg_ctl.c:1351 +#, c-format +msgid "%s: could not open service \"%s\": error code %d\n" +msgstr "%s: nie udało się otworzyć usługi \"%s\": kod błędu %d\n" + +#: pg_ctl.c:1358 +#, c-format +msgid "%s: could not unregister service \"%s\": error code %d\n" +msgstr "%s: nie udało się wyrejestrować usługi \"%s\": kod błędu %d\n" + +#: pg_ctl.c:1444 +msgid "Waiting for server startup...\n" +msgstr "Oczekiwanie na uruchomienie serwera...\n" + +#: pg_ctl.c:1447 +msgid "Timed out waiting for server startup\n" +msgstr "Minął czas oczekiwania na uruchomienie serwera\n" + +#: pg_ctl.c:1451 +msgid "Server started and accepting connections\n" +msgstr "Serwer uruchomiony i akceptuje połączenia\n" + +#: pg_ctl.c:1501 +#, c-format +msgid "%s: could not start service \"%s\": error code %d\n" +msgstr "%s: nie udało się uruchomić usługi \"%s\": kod błędu %d\n" + +#: pg_ctl.c:1573 +#, 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" + +#: pg_ctl.c:1582 +#, c-format +msgid "%s: could not open process token: %lu\n" +msgstr "%s: nie udało się otworzyć tokena procesu: %lu\n" + +#: pg_ctl.c:1595 +#, c-format +msgid "%s: could not allocate SIDs: %lu\n" +msgstr "%s: nie udało się przydzielić SIDów: kod błędu %lu\n" + +#: pg_ctl.c:1614 +#, c-format +msgid "%s: could not create restricted token: %lu\n" +msgstr "%s: nie udało się utworzyć ograniczonego tokena: %lu\n" + +#: pg_ctl.c:1652 +#, c-format +msgid "%s: WARNING: could not locate all job object functions in system API\n" +msgstr "" +"%s: OSTRZEŻENIE: nie może zlokalizować wszystkich funkcji obiektów zadań w " +"systemowym API\n" + +#: pg_ctl.c:1738 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Spróbuj \"%s --help\" aby uzyskać więcej informacji.\n" + +#: pg_ctl.c:1746 +#, c-format +msgid "" +"%s is a utility to initialize, start, stop, or control a PostgreSQL server.\n" +"\n" +msgstr "" +"%s jest narzędziem do inicjacji, uruchamiania, zatrzymywania i kontroli " +"serwera PostgreSQL.\n" +"\n" + +#: pg_ctl.c:1747 +#, c-format +msgid "Usage:\n" +msgstr "Składnia:\n" + +#: pg_ctl.c:1748 +#, c-format +msgid " %s init[db] [-D DATADIR] [-s] [-o \"OPTIONS\"]\n" +msgstr " %s init[db] [-D KATDANE] [-s] [-o \"OPCJE\"]\n" + +#: pg_ctl.c:1749 +#, c-format +msgid "" +" %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS" +"\"]\n" +msgstr "" +" %s start [-w] [-t SEKUNDY] [-D KATDANE] [-s] [-l NAZWAPLIKU] [-o \"OPCJE" +"\"]\n" + +#: pg_ctl.c:1750 +#, c-format +msgid " %s stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" +msgstr "" +" %s stop [-W] [-t SEKUNDY] [-D KATDANE] [-s] [-m TRYB-ZAMKNIECIA]\n" + +#: pg_ctl.c:1751 +#, c-format +msgid "" +" %s restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" +" [-o \"OPTIONS\"]\n" +msgstr "" +" %s restart [-w] [-t SEKUNDY] [-D KATDANE] [-s] [-m TRYB-ZAMKNIECIA]\n" +" [-o \"OPCJE\"]\n" + +#: pg_ctl.c:1753 +#, c-format +msgid " %s reload [-D DATADIR] [-s]\n" +msgstr " %s reload [-D KATDANE] [-s]\n" + +#: pg_ctl.c:1754 +#, c-format +msgid " %s status [-D DATADIR]\n" +msgstr " %s status [-D KATDANE]\n" + +#: pg_ctl.c:1755 +#, c-format +msgid " %s promote [-D DATADIR] [-s]\n" +msgstr " %s promote [-D KATDANE] [-s]\n" + +#: pg_ctl.c:1756 +#, c-format +msgid " %s kill SIGNALNAME PID\n" +msgstr " %s kill NAZWASYGNAŁU PID\n" + +#: pg_ctl.c:1758 +#, c-format +msgid "" +" %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" +" [-S START-TYPE] [-w] [-t SECS] [-o \"OPTIONS\"]\n" +msgstr "" +" %s register [-N NAZWAUSLUGI] [-U USERNAME] [-P PASSWORD] [-D KATDANE]\n" +" [-S TYP-STARTU] [-w] [-t SEKUNDY] [-o \"OPCJE\"]\n" + +#: pg_ctl.c:1760 +#, c-format +msgid " %s unregister [-N SERVICENAME]\n" +msgstr " %s unregister [-N NAZWAUSLUGI]\n" + +#: pg_ctl.c:1763 +#, c-format +msgid "" +"\n" +"Common options:\n" +msgstr "" +"\n" +"Opcje ogólne:\n" + +#: pg_ctl.c:1764 +#, c-format +msgid " -D, --pgdata DATADIR location of the database storage area\n" +msgstr "" +" -D, --pgdata KATDANE położenie miejsca przechowywania bazy danych\n" + +#: pg_ctl.c:1765 +#, c-format +msgid " -s, --silent only print errors, no informational messages\n" +msgstr "" +" -s, --silent wypisz tylko błędy, bez komunikatów informacyjnych\n" + +#: pg_ctl.c:1766 +#, c-format +msgid " -t SECS seconds to wait when using -w option\n" +msgstr " -t SEKUNDY sekundy oczekiwania podczas użycia opcji -w\n" + +#: pg_ctl.c:1767 +#, c-format +msgid " -w wait until operation completes\n" +msgstr " -w czekaj na zakończenie operacji\n" + +#: pg_ctl.c:1768 +#, c-format +msgid " -W do not wait until operation completes\n" +msgstr " -W nie czekaj na zakończenie operacji\n" + +#: pg_ctl.c:1769 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help pokazuje ten ekran pomocy i kończy\n" + +#: pg_ctl.c:1770 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version pokazuje informacje o wersji i kończy\n" + +#: pg_ctl.c:1771 +#, c-format +msgid "" +"(The default is to wait for shutdown, but not for start or restart.)\n" +"\n" +msgstr "" +"(Oczekiwanie jest domyślne dla zamknięcia, ale nie dla uruchomienia i " +"restartu.)\n" +"\n" + +#: pg_ctl.c:1772 +#, c-format +msgid "If the -D option is omitted, the environment variable PGDATA is used.\n" +msgstr "Jeśli nie jest podana -D, używana jest zmienna środowiskowa PGDATA.\n" + +#: pg_ctl.c:1774 +#, c-format +msgid "" +"\n" +"Options for start or restart:\n" +msgstr "" +"\n" +"Opcje uruchomienia lub restartu:\n" + +#: pg_ctl.c:1776 +#, c-format +msgid " -c, --core-files allow postgres to produce core files\n" +msgstr " -c, --core-files zezwól postgresowi utworzyć pliki jądra\n" + +#: pg_ctl.c:1778 +#, c-format +msgid " -c, --core-files not applicable on this platform\n" +msgstr " -c, --core-files niedostępne na tej platformie\n" + +#: pg_ctl.c:1780 +#, c-format +msgid " -l, --log FILENAME write (or append) server log to FILENAME\n" +msgstr "" +" -l, --log NAZWAPLIKU zapisuje (lub dodaje) komunikaty serwera do " +"NAZWAPLIKU\n" + +#: pg_ctl.c:1781 +#, c-format +msgid "" +" -o OPTIONS command line options to pass to postgres\n" +" (PostgreSQL server executable) or initdb\n" +msgstr "" +" -o OPCJE opcje wiersza poleceń przekazywanych postgresowi\n" +" (program wykonywalny PostgreSQL) lub initdb\n" + +#: pg_ctl.c:1783 +#, c-format +msgid " -p PATH-TO-POSTGRES normally not necessary\n" +msgstr " -p ŚCIEŻKA-DO-POSTGRES zwykle niekonieczna\n" + +#: pg_ctl.c:1784 +#, c-format +msgid "" +"\n" +"Options for stop or restart:\n" +msgstr "" +"\n" +"Opcje dla zatrzymania lub restartu:\n" + +#: pg_ctl.c:1785 +#, c-format +msgid " -m SHUTDOWN-MODE can be \"smart\", \"fast\", or \"immediate\"\n" +msgstr "" +" -m TRYB-ZAMKNIECIA \n" +" może być \"smart\", \"fast\" lub \"immediate\"\n" + +#: pg_ctl.c:1787 +#, c-format +msgid "" +"\n" +"Shutdown modes are:\n" +msgstr "" +"\n" +"Tryby zamknięcia to:\n" + +#: pg_ctl.c:1788 +#, c-format +msgid " smart quit after all clients have disconnected\n" +msgstr " smart wyjście po rozłączeniu się wszystkich klientów\n" + +#: pg_ctl.c:1789 +#, c-format +msgid " fast quit directly, with proper shutdown\n" +msgstr " fast bezpośrednie wyjście, z właściwym zamknięciem\n" + +#: pg_ctl.c:1790 +#, c-format +msgid "" +" immediate quit without complete shutdown; will lead to recovery on " +"restart\n" +msgstr "" +" immediate wyjście bez pełnego zamknięcia; doprowadzi do odzyskiwania " +"przy restarcie\n" + +#: pg_ctl.c:1792 +#, c-format +msgid "" +"\n" +"Allowed signal names for kill:\n" +msgstr "" +"\n" +"Dopuszczalne nazwy sygnałów dla zabicia:\n" + +#: pg_ctl.c:1796 +#, c-format +msgid "" +"\n" +"Options for register and unregister:\n" +msgstr "" +"\n" +"Opcje rejestracji i wyrejestrowania:\n" + +#: pg_ctl.c:1797 +#, c-format +msgid "" +" -N SERVICENAME service name with which to register PostgreSQL server\n" +msgstr "" +" -N SERVICENAME nazwa usługi, na której rejestruje się serwer PostgreSQL\n" + +#: pg_ctl.c:1798 +#, c-format +msgid " -P PASSWORD password of account to register PostgreSQL server\n" +msgstr " -P PASSWORD hasło konta rejestracji serwera PostgreSQL\n" + +#: pg_ctl.c:1799 +#, c-format +msgid " -U USERNAME user name of account to register PostgreSQL server\n" +msgstr "" +" -U USERNAME nazwa użytkownika konta rejestracji serwera PostgreSQL\n" + +#: pg_ctl.c:1800 +#, c-format +msgid " -S START-TYPE service start type to register PostgreSQL server\n" +msgstr " -S TYP-STARTU typ startu usługi rejestracji serwera PostgreSQL\n" + +#: pg_ctl.c:1802 +#, c-format +msgid "" +"\n" +"Start types are:\n" +msgstr "" +"\n" +"Rodzaje startu to:\n" + +#: pg_ctl.c:1803 +#, c-format +msgid "" +" auto start service automatically during system startup (default)\n" +msgstr "" +" auto uruchamia usługę automatycznie w czasie startu systemu " +"(domyślnie)\n" + +#: pg_ctl.c:1804 +#, c-format +msgid " demand start service on demand\n" +msgstr " demand uruchamia usługę na żądanie\n" + +#: pg_ctl.c:1807 +#, c-format +msgid "" +"\n" +"Report bugs to .\n" +msgstr "" +"\n" +"Błędy proszę przesyłać na adres .\n" + +#: pg_ctl.c:1832 +#, c-format +msgid "%s: unrecognized shutdown mode \"%s\"\n" +msgstr "%s: nierozpoznany tryb wyłączenia \"%s\"\n" + +#: pg_ctl.c:1865 +#, c-format +msgid "%s: unrecognized signal name \"%s\"\n" +msgstr "%s: nierozpoznana nazwa sygnału \"%s\"\n" + +#: pg_ctl.c:1882 +#, c-format +msgid "%s: unrecognized start type \"%s\"\n" +msgstr "%s: nierozpoznany tryb uruchomienia \"%s\"\n" + +#: pg_ctl.c:1947 +#, c-format +msgid "" +"%s: cannot be run as root\n" +"Please log in (using, e.g., \"su\") as the (unprivileged) user that will\n" +"own the server process.\n" +msgstr "" +"%s: nie można uruchomić jako root\n" +"Proszę zalogować się (używając np: \"su\") na (nieuprzywilejowanego) " +"użytkownika który\n" +"będzie właścicielem procesu.\n" + +#: pg_ctl.c:2018 +#, c-format +msgid "%s: -S option not supported on this platform\n" +msgstr "%s: opcja -S nieobsługiwana na tej platformie\n" + +#: pg_ctl.c:2065 +#, 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" + +#: pg_ctl.c:2089 +#, c-format +msgid "%s: missing arguments for kill mode\n" +msgstr "%s: nie wskazano wszystkich argumentów trybu zabicia\n" + +#: pg_ctl.c:2107 +#, c-format +msgid "%s: unrecognized operation mode \"%s\"\n" +msgstr "%s: nierozpoznany tryb autoryzacji \"%s\"\n" + +#: pg_ctl.c:2117 +#, c-format +msgid "%s: no operation specified\n" +msgstr "%s: nie podano operacji\n" + +#: pg_ctl.c:2133 +#, c-format +msgid "" +"%s: no database directory specified and environment variable PGDATA unset\n" +msgstr "" +"%s: nie wskazano folderu bazy danych ani nie ustawiono zmiennej środowiska " +"PGDATA\n" + +#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 +#, c-format +msgid "could not identify current directory: %s" +msgstr "nie można zidentyfikować aktualnego katalogu: %s" + +#: ../../port/exec.c:144 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "niepoprawny binarny \"%s\"" + +#: ../../port/exec.c:193 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "nie można odczytać binarnego \"%s\"" + +#: ../../port/exec.c:200 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "nie znaleziono \"%s\" do wykonania" + +#: ../../port/exec.c:255 ../../port/exec.c:291 +#, c-format +msgid "could not change directory to \"%s\"" +msgstr "nie można zmienić katalogu na \"%s\"" + +#: ../../port/exec.c:270 +#, c-format +msgid "could not read symbolic link \"%s\"" +msgstr "nie można odczytać linku symbolicznego \"%s\"" + +#: ../../port/exec.c:517 +#, c-format +msgid "child process exited with exit code %d" +msgstr "proces potomny zakończył działanie z kodem %d" + +#: ../../port/exec.c:521 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "proces potomny został zatrzymany przez wyjątek 0x%X" + +#: ../../port/exec.c:530 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "proces potomny został zatrzymany przez sygnał %s" + +#: ../../port/exec.c:533 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "proces potomny został zakończony przez sygnał %d" + +#: ../../port/exec.c:537 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "proces potomny zakończył działanie z nieznanym stanem %d" diff --git a/src/bin/pg_ctl/po/pt_BR.po b/src/bin/pg_ctl/po/pt_BR.po index b574964bef..63c4bedaac 100644 --- a/src/bin/pg_ctl/po/pt_BR.po +++ b/src/bin/pg_ctl/po/pt_BR.po @@ -1,53 +1,81 @@ # Brazilian Portuguese message translation file for pg_ctl # Copyright (C) 2009 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Euler Taveira de Oliveira , 2004-2010. +# Euler Taveira de Oliveira , 2004-2011. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-05-08 21:45-0300\n" +"POT-Creation-Date: 2011-09-06 04:54+0000\n" "PO-Revision-Date: 2005-10-04 22:15-0300\n" "Last-Translator: Euler Taveira de Oliveira \n" "Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: pg_ctl.c:225 pg_ctl.c:240 pg_ctl.c:1834 +#: pg_ctl.c:237 pg_ctl.c:252 pg_ctl.c:2035 #, c-format msgid "%s: out of memory\n" msgstr "%s: sem memória\n" -#: pg_ctl.c:274 +#: pg_ctl.c:286 #, c-format msgid "%s: could not open PID file \"%s\": %s\n" msgstr "%s: não pôde abrir arquivo do PID \"%s\": %s\n" -#: pg_ctl.c:281 +#: pg_ctl.c:293 #, c-format msgid "%s: invalid data in PID file \"%s\"\n" msgstr "%s: dado inválido no arquivo do PID \"%s\"\n" -#: pg_ctl.c:557 +#: pg_ctl.c:470 +#, c-format +msgid "" +"\n" +"%s: -w option is not supported when starting a pre-9.1 server\n" +msgstr "" +"\n" +"%s: opção -w não é suportada ao iniciar um servidor anterior a 9.1\n" + +#: pg_ctl.c:540 +#, c-format +msgid "" +"\n" +"%s: -w option cannot use a relative socket directory specification\n" +msgstr "" +"\n" +"%s: opção -w não pode utilizar uma especificação de diretório de soquete relativa\n" + +#: pg_ctl.c:588 +#, c-format +msgid "" +"\n" +"%s: this data directory appears to be running a pre-existing postmaster\n" +msgstr "" +"\n" +"%s: este diretório de dados parece já estar executando um postmaster\n" + +#: pg_ctl.c:638 #, c-format msgid "%s: cannot set core file size limit; disallowed by hard limit\n" msgstr "" "%s: não pode definir tamanho limite do arquivo core; não é permitido pelo " "limite superior\n" -#: pg_ctl.c:582 +#: pg_ctl.c:663 #, c-format msgid "%s: could not read file \"%s\"\n" msgstr "%s: não pôde ler arquivo \"%s\"\n" -#: pg_ctl.c:587 +#: pg_ctl.c:668 #, c-format msgid "%s: option file \"%s\" must have exactly one line\n" msgstr "%s: arquivo de opções \"%s\" deve ter exatamente uma linha\n" -#: pg_ctl.c:635 +#: pg_ctl.c:716 #, c-format msgid "" "The program \"%s\" is needed by %s but was not found in the\n" @@ -58,7 +86,7 @@ msgstr "" "mesmo diretório que \"%s\".\n" "Verifique sua instalação.\n" -#: pg_ctl.c:641 +#: pg_ctl.c:722 #, c-format msgid "" "The program \"%s\" was found by \"%s\"\n" @@ -69,24 +97,44 @@ msgstr "" "mas não tem a mesma versão que %s.\n" "Verifique sua instalação.\n" -#: pg_ctl.c:674 +#: pg_ctl.c:755 #, c-format msgid "%s: database system initialization failed\n" msgstr "%s: inicialização do sistema de banco de dados falhou\n" -#: pg_ctl.c:690 +#: pg_ctl.c:770 #, c-format msgid "%s: another server might be running; trying to start server anyway\n" msgstr "" "%s: outro servidor pode estar executando; tentando iniciar o servidor assim " "mesmo\n" -#: pg_ctl.c:727 +#: pg_ctl.c:807 #, c-format msgid "%s: could not start server: exit code was %d\n" msgstr "%s: não pôde iniciar o servidor: código de saída foi %d\n" -#: pg_ctl.c:738 pg_ctl.c:751 +#: pg_ctl.c:814 +msgid "waiting for server to start..." +msgstr "esperando o servidor iniciar..." + +#: pg_ctl.c:819 pg_ctl.c:920 pg_ctl.c:1011 +msgid " done\n" +msgstr "feito\n" + +#: pg_ctl.c:820 +msgid "server started\n" +msgstr "servidor iniciado\n" + +#: pg_ctl.c:823 pg_ctl.c:827 +msgid " stopped waiting\n" +msgstr "parou de esperar\n" + +#: pg_ctl.c:824 +msgid "server is still starting up\n" +msgstr "servidor ainda está iniciando\n" + +#: pg_ctl.c:828 #, c-format msgid "" "%s: could not start server\n" @@ -95,48 +143,45 @@ msgstr "" "%s: não pode iniciar o servidor\n" "Examine o arquivo de log.\n" -#: pg_ctl.c:747 -msgid "waiting for server to start..." -msgstr "esperando o servidor iniciar..." - -#: pg_ctl.c:758 pg_ctl.c:831 pg_ctl.c:911 -msgid " done\n" -msgstr "feito\n" +#: pg_ctl.c:834 pg_ctl.c:912 pg_ctl.c:1002 +msgid " failed\n" +msgstr "falhou\n" -#: pg_ctl.c:759 -msgid "server started\n" -msgstr "servidor iniciado\n" +#: pg_ctl.c:835 +#, c-format +msgid "%s: could not wait for server because of misconfiguration\n" +msgstr "%s: não pôde esperar pelo servidor por causa de configuração errada\n" -#: pg_ctl.c:763 +#: pg_ctl.c:841 msgid "server starting\n" msgstr "servidor está iniciando\n" -#: pg_ctl.c:778 pg_ctl.c:853 pg_ctl.c:933 +#: pg_ctl.c:856 pg_ctl.c:942 pg_ctl.c:1032 pg_ctl.c:1072 #, c-format msgid "%s: PID file \"%s\" does not exist\n" msgstr "%s: arquivo do PID \"%s\" não existe\n" -#: pg_ctl.c:779 pg_ctl.c:855 pg_ctl.c:934 +#: pg_ctl.c:857 pg_ctl.c:944 pg_ctl.c:1033 pg_ctl.c:1073 msgid "Is server running?\n" msgstr "O servidor está executando?\n" -#: pg_ctl.c:785 +#: pg_ctl.c:863 #, c-format msgid "%s: cannot stop server; single-user server is running (PID: %ld)\n" msgstr "" -"%s: não pode parar servidor; servidor monousuário está executando (PID: %" -"ld)\n" +"%s: não pode parar servidor; servidor monousuário está executando (PID: " +"%ld)\n" -#: pg_ctl.c:793 pg_ctl.c:877 +#: pg_ctl.c:871 pg_ctl.c:966 #, c-format msgid "%s: could not send stop signal (PID: %ld): %s\n" msgstr "%s: não pôde enviar sinal de parada (PID: %ld): %s\n" -#: pg_ctl.c:800 +#: pg_ctl.c:878 msgid "server shutting down\n" msgstr "servidor está desligando\n" -#: pg_ctl.c:807 pg_ctl.c:884 +#: pg_ctl.c:893 pg_ctl.c:981 msgid "" "WARNING: online backup mode is active\n" "Shutdown will not complete until pg_stop_backup() is called.\n" @@ -144,166 +189,229 @@ msgid "" msgstr "" "AVISO: modo cópia de segurança online está ativo\n" "Desligamento não completará até que pg_stop_backup() seja chamado.\n" +"\n" -#: pg_ctl.c:811 pg_ctl.c:888 +#: pg_ctl.c:897 pg_ctl.c:985 msgid "waiting for server to shut down..." msgstr "esperando o servidor desligar..." -#: pg_ctl.c:826 pg_ctl.c:905 -msgid " failed\n" -msgstr "falhou\n" - -#: pg_ctl.c:828 pg_ctl.c:907 +#: pg_ctl.c:914 pg_ctl.c:1004 #, c-format msgid "%s: server does not shut down\n" msgstr "%s: servidor não desligou\n" -#: pg_ctl.c:833 pg_ctl.c:912 +#: pg_ctl.c:916 pg_ctl.c:1006 +msgid "" +"HINT: The \"-m fast\" option immediately disconnects sessions rather than\n" +"waiting for session-initiated disconnection.\n" +msgstr "" +"DICA: A opção \"-m fast\" desconecta imediatamente sessões ao invés de " +"esperar pela desconexão das sessões iniciadas.\n" + +#: pg_ctl.c:922 pg_ctl.c:1012 msgid "server stopped\n" msgstr "servidor está parado\n" -#: pg_ctl.c:856 pg_ctl.c:918 +#: pg_ctl.c:945 pg_ctl.c:1018 msgid "starting server anyway\n" msgstr "iniciando servidor mesmo assim\n" -#: pg_ctl.c:865 +#: pg_ctl.c:954 #, c-format msgid "%s: cannot restart server; single-user server is running (PID: %ld)\n" msgstr "" -"%s: não pode reiniciar servidor; servidor monousuário está executando (PID: %" -"ld)\n" +"%s: não pode reiniciar servidor; servidor monousuário está executando (PID: " +"%ld)\n" -#: pg_ctl.c:868 pg_ctl.c:943 +#: pg_ctl.c:957 pg_ctl.c:1042 msgid "Please terminate the single-user server and try again.\n" msgstr "Por favor finalize o servidor monousuário e tente novamente.\n" -#: pg_ctl.c:916 +#: pg_ctl.c:1016 #, c-format msgid "%s: old server process (PID: %ld) seems to be gone\n" msgstr "%s: processo servidor antigo (PID: %ld) parece estar terminado\n" -#: pg_ctl.c:940 +#: pg_ctl.c:1039 #, c-format msgid "%s: cannot reload server; single-user server is running (PID: %ld)\n" msgstr "" "%s: não pode recarregar servidor; servidor monousuário está executando (PID: " "%ld)\n" -#: pg_ctl.c:949 +#: pg_ctl.c:1048 #, c-format msgid "%s: could not send reload signal (PID: %ld): %s\n" msgstr "%s: não pôde enviar sinal de recarga (PID: %ld): %s\n" -#: pg_ctl.c:954 +#: pg_ctl.c:1053 msgid "server signaled\n" msgstr "servidor foi sinalizado\n" -#: pg_ctl.c:998 +#: pg_ctl.c:1079 +#, c-format +msgid "%s: cannot promote server; single-user server is running (PID: %ld)\n" +msgstr "" +"%s: não pode promover servidor; servidor monousuário está executando (PID: " +"%ld)\n" + +#: pg_ctl.c:1088 +#, c-format +msgid "%s: cannot promote server; server is not in standby mode\n" +msgstr "%s: não pode promover servidor; servidor não está no modo em espera\n" + +#: pg_ctl.c:1096 +#, c-format +msgid "%s: could not create promote signal file \"%s\": %s\n" +msgstr "%s: não pôde criar arquivo para sinal de promoção \"%s\": %s\n" + +#: pg_ctl.c:1102 +#, c-format +msgid "%s: could not write promote signal file \"%s\": %s\n" +msgstr "%s: não pôde escrever no arquivo para sinal de promoção \"%s\": %s\n" + +#: pg_ctl.c:1110 +#, c-format +msgid "%s: could not send promote signal (PID: %ld): %s\n" +msgstr "%s: não pôde enviar sinal de promoção (PID: %ld): %s\n" + +#: pg_ctl.c:1113 +#, c-format +msgid "%s: could not remove promote signal file \"%s\": %s\n" +msgstr "%s: não pôde remover arquivo para sinal de promoção \"%s\": %s\n" + +#: pg_ctl.c:1118 +msgid "server promoting\n" +msgstr "servidor está sendo promovido\n" + +#: pg_ctl.c:1163 #, c-format msgid "%s: single-user server is running (PID: %ld)\n" msgstr "%s: servidor monousuário está executando (PID: %ld)\n" -#: pg_ctl.c:1010 +#: pg_ctl.c:1175 #, c-format msgid "%s: server is running (PID: %ld)\n" msgstr "%s: servidor está executando (PID: %ld)\n" -#: pg_ctl.c:1021 +#: pg_ctl.c:1186 #, c-format msgid "%s: no server running\n" msgstr "%s: nenhum servidor está executando\n" -#: pg_ctl.c:1032 +#: pg_ctl.c:1197 #, c-format msgid "%s: could not send signal %d (PID: %ld): %s\n" msgstr "%s: não pôde enviar sinal %d (PID: %ld): %s\n" -#: pg_ctl.c:1066 +#: pg_ctl.c:1231 #, c-format msgid "%s: could not find own program executable\n" msgstr "%s: não pôde encontrar executável\n" -#: pg_ctl.c:1076 +#: pg_ctl.c:1241 #, c-format msgid "%s: could not find postgres program executable\n" msgstr "%s: não pôde encontrar o programa executável do postgres\n" -#: pg_ctl.c:1138 pg_ctl.c:1170 +#: pg_ctl.c:1306 pg_ctl.c:1338 #, c-format msgid "%s: could not open service manager\n" msgstr "%s: não pôde abrir gerenciador de serviço\n" -#: pg_ctl.c:1144 +#: pg_ctl.c:1312 #, c-format msgid "%s: service \"%s\" already registered\n" msgstr "%s: serviço \"%s\" já está registrado\n" -#: pg_ctl.c:1155 +#: pg_ctl.c:1323 #, c-format msgid "%s: could not register service \"%s\": error code %d\n" msgstr "%s: não pôde registrar serviço \"%s\": código de erro %d\n" -#: pg_ctl.c:1176 +#: pg_ctl.c:1344 #, c-format msgid "%s: service \"%s\" not registered\n" msgstr "%s: serviço \"%s\" não está registrado\n" -#: pg_ctl.c:1183 +#: pg_ctl.c:1351 #, c-format msgid "%s: could not open service \"%s\": error code %d\n" msgstr "%s: não pôde abrir serviço \"%s\": código de erro %d\n" -#: pg_ctl.c:1190 +#: pg_ctl.c:1358 #, c-format msgid "%s: could not unregister service \"%s\": error code %d\n" msgstr "%s: não pôde remover registro do serviço \"%s\": código de erro %d\n" -#: pg_ctl.c:1276 +#: pg_ctl.c:1444 msgid "Waiting for server startup...\n" msgstr "Esperando o servidor iniciar...\n" -#: pg_ctl.c:1279 +#: pg_ctl.c:1447 msgid "Timed out waiting for server startup\n" msgstr "Tempo de espera esgotado para início do servidor\n" -#: pg_ctl.c:1283 +#: pg_ctl.c:1451 msgid "Server started and accepting connections\n" msgstr "Servidor foi iniciado e está aceitando conexões\n" -#: pg_ctl.c:1333 +#: pg_ctl.c:1501 #, c-format msgid "%s: could not start service \"%s\": error code %d\n" msgstr "%s: não pôde iniciar serviço \"%s\": código de erro %d\n" -#: pg_ctl.c:1568 +#: pg_ctl.c:1573 +#, 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" + +#: pg_ctl.c:1582 +#, c-format +msgid "%s: could not open process token: %lu\n" +msgstr "%s: não pôde abrir informação sobre processo: %lu\n" + +#: pg_ctl.c:1595 +#, c-format +msgid "%s: could not allocate SIDs: %lu\n" +msgstr "%s: não pôde alocar SIDs: %lu\n" + +#: pg_ctl.c:1614 +#, c-format +msgid "%s: could not create restricted token: %lu\n" +msgstr "%s: não pôde criar informação restrita: %lu\n" + +#: pg_ctl.c:1652 +#, c-format +msgid "%s: WARNING: could not locate all job object functions in system API\n" +msgstr "%s: AVISO: não pôde localizar todas funções job object na API do sistema\n" + +#: pg_ctl.c:1738 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Tente \"%s --help\" para obter informações adicionais.\n" -#: pg_ctl.c:1576 +#: pg_ctl.c:1746 #, c-format msgid "" -"%s is a utility to start, stop, restart, reload configuration files,\n" -"report the status of a PostgreSQL server, or signal a PostgreSQL process.\n" +"%s is a utility to initialize, start, stop, or control a PostgreSQL server.\n" "\n" msgstr "" -"%s é um utilitário que inicia, para, reinicia, recarrega arquivos de " -"configuração,\n" -"relata o estado do servidor PostgreSQL ou envia um sinal a um processo do " +"%s é um utilitário para inicializar, iniciar, parar e controlar um servidor " "PostgreSQL.\n" "\n" -#: pg_ctl.c:1578 +#: pg_ctl.c:1747 #, c-format msgid "Usage:\n" msgstr "Uso:\n" -#: pg_ctl.c:1579 +#: pg_ctl.c:1748 #, c-format msgid " %s init[db] [-D DATADIR] [-s] [-o \"OPTIONS\"]\n" msgstr " %s init[db] [-D DIRDADOS] [-s] [-o \"OPÇÕES\"]\n" -#: pg_ctl.c:1580 +#: pg_ctl.c:1749 #, c-format msgid "" " %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS" @@ -311,13 +419,13 @@ msgid "" msgstr "" " %s start [-w] [-t SEGS] [-D DIRDADOS] [-s] [-l ARQUIVO] [-o \"OPÇÕES\"]\n" -#: pg_ctl.c:1581 +#: pg_ctl.c:1750 #, c-format msgid " %s stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" msgstr "" " %s stop [-W] [-t SEGS] [-D DIRDADOS] [-s] [-m MODO-DESLIGAMENTO]\n" -#: pg_ctl.c:1582 +#: pg_ctl.c:1751 #, c-format msgid "" " %s restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" @@ -326,36 +434,41 @@ msgstr "" " %s restart [-w] [-t SEGS] [-D DIRDADOS] [-s] [-m MODO-DESLIGAMENTO]\n" " [-o \"OPÇÕES\"]\n" -#: pg_ctl.c:1584 +#: pg_ctl.c:1753 #, c-format msgid " %s reload [-D DATADIR] [-s]\n" msgstr " %s reload [-D DIRDADOS] [-s]\n" -#: pg_ctl.c:1585 +#: pg_ctl.c:1754 #, c-format msgid " %s status [-D DATADIR]\n" msgstr " %s status [-D DIRDADOS]\n" -#: pg_ctl.c:1586 +#: pg_ctl.c:1755 +#, c-format +msgid " %s promote [-D DATADIR] [-s]\n" +msgstr " %s promote [-D DIRDADOS] [-s]\n" + +#: pg_ctl.c:1756 #, c-format msgid " %s kill SIGNALNAME PID\n" msgstr " %s kill NOME_SINAL PID\n" -#: pg_ctl.c:1588 +#: pg_ctl.c:1758 #, c-format msgid "" " %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" -" [-w] [-t SECS] [-o \"OPTIONS\"]\n" +" [-S START-TYPE] [-w] [-t SECS] [-o \"OPTIONS\"]\n" msgstr "" " %s register [-N NOME_SERVIÇO] [-U USUÁRIO] [-P SENHA] [-D DIRDADOS]\n" -" [-w] [-t SEGS] [-o \"OPÇÕES\"]\n" +" [-S TIPO-INÍCIO] [-w] [-t SEGS] [-o \"OPÇÕES\"]\n" -#: pg_ctl.c:1590 +#: pg_ctl.c:1760 #, c-format msgid " %s unregister [-N SERVICENAME]\n" msgstr " %s unregister [-N NOME_SERVIÇO]\n" -#: pg_ctl.c:1593 +#: pg_ctl.c:1763 #, c-format msgid "" "\n" @@ -364,46 +477,46 @@ msgstr "" "\n" "Opções comuns:\n" -#: pg_ctl.c:1594 +#: pg_ctl.c:1764 #, c-format msgid " -D, --pgdata DATADIR location of the database storage area\n" msgstr "" " -D, --pgdata DIRDADOS local da área de armazenamento dos bancos de dados\n" -#: pg_ctl.c:1595 +#: pg_ctl.c:1765 #, c-format msgid " -s, --silent only print errors, no informational messages\n" msgstr "" " -s, --silent mostra somente erros, nenhuma mensagem informativa\n" -#: pg_ctl.c:1596 +#: pg_ctl.c:1766 #, c-format msgid " -t SECS seconds to wait when using -w option\n" msgstr "" " -t SEGS segundos a esperar quando a opção -w for utilizada\n" -#: pg_ctl.c:1597 +#: pg_ctl.c:1767 #, c-format msgid " -w wait until operation completes\n" msgstr " -w espera até que a operação seja completada\n" -#: pg_ctl.c:1598 +#: pg_ctl.c:1768 #, c-format msgid " -W do not wait until operation completes\n" msgstr "" " -W não espera até que a operação seja completada\n" -#: pg_ctl.c:1599 +#: pg_ctl.c:1769 #, c-format msgid " --help show this help, then exit\n" msgstr " --help mostra esta ajuda e termina\n" -#: pg_ctl.c:1600 +#: pg_ctl.c:1770 #, c-format msgid " --version output version information, then exit\n" msgstr " --version mostra informação sobre a versão e termina\n" -#: pg_ctl.c:1601 +#: pg_ctl.c:1771 #, c-format msgid "" "(The default is to wait for shutdown, but not for start or restart.)\n" @@ -412,13 +525,13 @@ msgstr "" "(O padrão é esperar o desligamento, mas não para início ou reinício).\n" "\n" -#: pg_ctl.c:1602 +#: pg_ctl.c:1772 #, c-format msgid "If the -D option is omitted, the environment variable PGDATA is used.\n" msgstr "" "Se a opção -D for omitida, a variável de ambiente PGDATA é utilizada.\n" -#: pg_ctl.c:1604 +#: pg_ctl.c:1774 #, c-format msgid "" "\n" @@ -427,24 +540,24 @@ msgstr "" "\n" "Opções para início ou reinício:\n" -#: pg_ctl.c:1606 +#: pg_ctl.c:1776 #, c-format msgid " -c, --core-files allow postgres to produce core files\n" msgstr " -c, --core-files permite o postgres produzir arquivos core\n" -#: pg_ctl.c:1608 +#: pg_ctl.c:1778 #, c-format msgid " -c, --core-files not applicable on this platform\n" msgstr " -c, --core-files não é aplicável a esta plataforma\n" -#: pg_ctl.c:1610 +#: pg_ctl.c:1780 #, c-format msgid " -l, --log FILENAME write (or append) server log to FILENAME\n" msgstr "" " -l, --log ARQUIVO escreve (ou concatena) log do servidor para " "ARQUIVO\n" -#: pg_ctl.c:1611 +#: pg_ctl.c:1781 #, c-format msgid "" " -o OPTIONS command line options to pass to postgres\n" @@ -454,12 +567,12 @@ msgstr "" "postgres\n" " (executável do servidor PostgreSQL) ou initdb\n" -#: pg_ctl.c:1613 +#: pg_ctl.c:1783 #, c-format msgid " -p PATH-TO-POSTGRES normally not necessary\n" msgstr " -p CAMINHO-DO-POSTGRES normalmente não é necessário\n" -#: pg_ctl.c:1614 +#: pg_ctl.c:1784 #, c-format msgid "" "\n" @@ -468,13 +581,13 @@ msgstr "" "\n" "Opções para desligar ou reiniciar:\n" -#: pg_ctl.c:1615 +#: pg_ctl.c:1785 #, c-format msgid " -m SHUTDOWN-MODE can be \"smart\", \"fast\", or \"immediate\"\n" msgstr "" " -m MODO-DESLIGAMENTO pode ser \"smart\", \"fast\" ou \"immediate\"\n" -#: pg_ctl.c:1617 +#: pg_ctl.c:1787 #, c-format msgid "" "\n" @@ -483,17 +596,17 @@ msgstr "" "\n" "Modos de desligamento são:\n" -#: pg_ctl.c:1618 +#: pg_ctl.c:1788 #, c-format msgid " smart quit after all clients have disconnected\n" msgstr " smart termina depois que todos os clientes desconectarem\n" -#: pg_ctl.c:1619 +#: pg_ctl.c:1789 #, c-format msgid " fast quit directly, with proper shutdown\n" msgstr " fast termina diretamente, com desligamento apropriado\n" -#: pg_ctl.c:1620 +#: pg_ctl.c:1790 #, c-format msgid "" " immediate quit without complete shutdown; will lead to recovery on " @@ -502,7 +615,7 @@ msgstr "" " immediate termina sem desligamento completo; conduzirá a uma recuperação " "durante o reinício\n" -#: pg_ctl.c:1622 +#: pg_ctl.c:1792 #, c-format msgid "" "\n" @@ -511,7 +624,7 @@ msgstr "" "\n" "Sinais permitidos para sinalização:\n" -#: pg_ctl.c:1626 +#: pg_ctl.c:1796 #, c-format msgid "" "\n" @@ -520,7 +633,7 @@ msgstr "" "\n" "Opções para registrar ou remover registro:\n" -#: pg_ctl.c:1627 +#: pg_ctl.c:1797 #, c-format msgid "" " -N SERVICENAME service name with which to register PostgreSQL server\n" @@ -528,18 +641,47 @@ msgstr "" " -N NOME_SERVIÇO nome do serviço no qual se registrou o servidor " "PostgreSQL\n" -#: pg_ctl.c:1628 +#: pg_ctl.c:1798 #, c-format msgid " -P PASSWORD password of account to register PostgreSQL server\n" msgstr " -P SENHA senha da conta que registrou o servidor PostgreSQL\n" -#: pg_ctl.c:1629 +#: pg_ctl.c:1799 #, c-format msgid " -U USERNAME user name of account to register PostgreSQL server\n" msgstr "" " -U USUÁRIO nome do usuário que registrou o servidor PostgreSQL\n" -#: pg_ctl.c:1632 +#: pg_ctl.c:1800 +#, c-format +msgid " -S START-TYPE service start type to register PostgreSQL server\n" +msgstr "" +" -S TIPO-INÍCIO tipo de início do serviço para registrar o servidor " +"PostgreSQL\n" + +#: pg_ctl.c:1802 +#, c-format +msgid "" +"\n" +"Start types are:\n" +msgstr "" +"\n" +"Tipos de início são:\n" + +#: pg_ctl.c:1803 +#, c-format +msgid "" +" auto start service automatically during system startup (default)\n" +msgstr "" +" auto inicia serviço automaticamente durante a inicialização do " +"sistema (padrão)\n" + +#: pg_ctl.c:1804 +#, c-format +msgid " demand start service on demand\n" +msgstr " demand inicia serviço sob demanda\n" + +#: pg_ctl.c:1807 #, c-format msgid "" "\n" @@ -548,17 +690,22 @@ msgstr "" "\n" "Relate erros a .\n" -#: pg_ctl.c:1657 +#: pg_ctl.c:1832 #, c-format msgid "%s: unrecognized shutdown mode \"%s\"\n" msgstr "%s: modo de desligamento \"%s\" desconhecido\n" -#: pg_ctl.c:1690 +#: pg_ctl.c:1865 #, c-format msgid "%s: unrecognized signal name \"%s\"\n" msgstr "%s: nome de sinal \"%s\" desconhecido\n" -#: pg_ctl.c:1755 +#: pg_ctl.c:1882 +#, c-format +msgid "%s: unrecognized start type \"%s\"\n" +msgstr "%s: tipo de início \"%s\" desconhecido\n" + +#: pg_ctl.c:1947 #, c-format msgid "" "%s: cannot be run as root\n" @@ -569,27 +716,32 @@ msgstr "" "Por favor entre (utilizando \"su\") como um usuário (sem privilégios) que\n" "será o dono do processo do servidor.\n" -#: pg_ctl.c:1864 +#: pg_ctl.c:2018 +#, c-format +msgid "%s: -S option not supported on this platform\n" +msgstr "%s: opção -S não é suportada nessa plataforma\n" + +#: pg_ctl.c:2065 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: muitos argumentos de linha de comando (primeiro é \"%s\")\n" -#: pg_ctl.c:1886 +#: pg_ctl.c:2089 #, c-format msgid "%s: missing arguments for kill mode\n" msgstr "%s: faltando argumento para modo kill\n" -#: pg_ctl.c:1904 +#: pg_ctl.c:2107 #, c-format msgid "%s: unrecognized operation mode \"%s\"\n" msgstr "%s: modo de operação \"%s\" é desconhecido\n" -#: pg_ctl.c:1914 +#: pg_ctl.c:2117 #, c-format msgid "%s: no operation specified\n" msgstr "%s: nenhuma operação especificada\n" -#: pg_ctl.c:1930 +#: pg_ctl.c:2133 #, c-format msgid "" "%s: no database directory specified and environment variable PGDATA unset\n" @@ -627,27 +779,27 @@ msgstr "não pôde mudar diretório para \"%s\"" msgid "could not read symbolic link \"%s\"" msgstr "não pôde ler link simbólico \"%s\"" -#: ../../port/exec.c:516 +#: ../../port/exec.c:517 #, c-format msgid "child process exited with exit code %d" msgstr "processo filho terminou com código de saída %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:521 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "processo filho foi terminado pela exceção 0x%X" -#: ../../port/exec.c:529 +#: ../../port/exec.c:530 #, c-format msgid "child process was terminated by signal %s" msgstr "processo filho foi terminado pelo sinal %s" -#: ../../port/exec.c:532 +#: ../../port/exec.c:533 #, c-format msgid "child process was terminated by signal %d" msgstr "processo filho foi terminado pelo sinal %d" -#: ../../port/exec.c:536 +#: ../../port/exec.c:537 #, c-format msgid "child process exited with unrecognized status %d" msgstr "processo filho terminou com status desconhecido %d" diff --git a/src/bin/pg_ctl/po/ru.po b/src/bin/pg_ctl/po/ru.po index 9fe60e996c..0459a98afa 100644 --- a/src/bin/pg_ctl/po/ru.po +++ b/src/bin/pg_ctl/po/ru.po @@ -2,6 +2,7 @@ # PG_CTL Translated Messages into the Russian Language (UTF-8) # # Copyright (c) 2004-2005 Serguei A. Mokhov, mokhov@cs.concordia.ca +# Copyright (c) 2012 Alexander Lakhin, exclusion@gmail.com # Distributed under the same licensing terms as PostgreSQL itself. # # pgtranslation Id: pg_ctl.po,v 1.4 2010/12/07 21:22:21 petere Exp $ @@ -11,500 +12,606 @@ # http://wiki.postgresql.org/wiki/NLS/ru/dict # # ChangeLog: -# - December 1, 2010: Complete translation for 9.1, Andrey Sudnik -# - March 26, 2009: complete translation for 8.3, Sergey Burladyan -# - January 17, 2005: Complete translation for 8.0, Serguei A. Mokhov -# - December, 2004: New version of translation by Oleg Bartunov -# - May 29 - November 24, 2004: Initial translation for 8.0; Serguei A. Mokhov # +# - April 2, 2012: Bug fixes. Alexander Lakhin . +# - February 21, 2012: Minor fixes. Alexander Lakhin . +# - With corrections from Sergey Burladyan +# - February 17, 2012: Minor fixes. Alexander Lakhin . +# - December 1, 2010: Complete translation for 9.1, Andrey Sudnik . +# - March 26, 2009: complete translation for 8.3, Sergey Burladyan . +# - January 17, 2005: Complete translation for 8.0, Serguei A. Mokhov . +# - December, 2004: New version of translation by Oleg Bartunov . +# - May 29 - November 24, 2004: Initial translation for 8.0; Serguei A. Mokhov . msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-11-29 18:40+0000\n" -"PO-Revision-Date: 2010-12-01 01:17+0700\n" -"Last-Translator: Andrey Sudnik \n" -"Language-Team: pgsql-ru-general \n" -"Language: \n" +"POT-Creation-Date: 2012-07-10 22:27+0000\n" +"PO-Revision-Date: 2012-04-02 19:16+0400\n" +"Last-Translator: Alexander Lakhin \n" +"Language-Team: Russian \n" +"Language: ru\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Russian\n" "X-Poedit-Country: RUSSIAN FEDERATION\n" "X-Poedit-SourceCharset: utf-8\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 1.4\n" -#: pg_ctl.c:227 -#: pg_ctl.c:242 -#: pg_ctl.c:1884 +#: pg_ctl.c:237 pg_ctl.c:252 pg_ctl.c:2035 #, c-format msgid "%s: out of memory\n" -msgstr "%s: не хватает памяти\n" +msgstr "%s: нехватка памяти\n" -#: pg_ctl.c:276 +#: pg_ctl.c:286 #, c-format msgid "%s: could not open PID file \"%s\": %s\n" -msgstr "%s: не удалось открыть PID-файл \"%s\": %s\n" +msgstr "%s: не удалось открыть файл PID \"%s\": %s\n" -#: pg_ctl.c:283 +#: pg_ctl.c:293 #, c-format msgid "%s: invalid data in PID file \"%s\"\n" -msgstr "%s: неверные данные в PID-файле \"%s\"\n" +msgstr "%s: неверные данные в файле PID \"%s\"\n" -#: pg_ctl.c:550 +#: pg_ctl.c:470 +#, c-format +msgid "" +"\n" +"%s: -w option is not supported when starting a pre-9.1 server\n" +msgstr "" +"\n" +"%s: параметр -w не поддерживается при запуске сервера до версии 9.1\n" + +#: pg_ctl.c:540 +#, c-format +msgid "" +"\n" +"%s: -w option cannot use a relative socket directory specification\n" +msgstr "" +"\n" +"%s: в параметре -w нельзя указывать относительный путь к каталогу сокетов\n" + +#: pg_ctl.c:588 +#, c-format +msgid "" +"\n" +"%s: this data directory appears to be running a pre-existing postmaster\n" +msgstr "" +"\n" +"%s: похоже, что с этим каталогом уже работает управляющий процесс " +"postmaster\n" + +#: pg_ctl.c:638 #, c-format msgid "%s: cannot set core file size limit; disallowed by hard limit\n" -msgstr "%s: не удалось установить ограничение на размер core-файла; отвергнуто жёстким ограничением\n" +msgstr "" +"%s: не удалось ограничить размер дампа памяти; запрещено жёстким " +"ограничением\n" -#: pg_ctl.c:575 +#: pg_ctl.c:663 #, c-format msgid "%s: could not read file \"%s\"\n" msgstr "%s: не удалось прочитать файл \"%s\"\n" -#: pg_ctl.c:580 +#: pg_ctl.c:668 #, c-format msgid "%s: option file \"%s\" must have exactly one line\n" -msgstr "%s: файл опций \"%s\" должен иметь ровно одну строку\n" +msgstr "%s: в файле параметров \"%s\" должна быть ровно одна строка\n" -#: pg_ctl.c:628 +#: pg_ctl.c:716 #, c-format msgid "" "The program \"%s\" is needed by %s but was not found in the\n" "same directory as \"%s\".\n" "Check your installation.\n" msgstr "" -"Программа \"%s\" нужна для %s, но не найдена\n" -"в той же директории, что и \"%s\".\n" -"Проверьте вашу установку.\n" +"Программа \"%s\" необходима для %s, но не найдена\n" +"в каталоге \"%s\".\n" +"Проверьте вашу установку PostgreSQL.\n" -#: pg_ctl.c:634 +#: pg_ctl.c:722 #, c-format msgid "" "The program \"%s\" was found by \"%s\"\n" "but was not the same version as %s.\n" "Check your installation.\n" msgstr "" -"Программа \"%s\" найдена рядом с \"%s\",\n" -"но не той же версии, что и %s.\n" -"Проверьте вашу установку.\n" +"Программа \"%s\" найдена в \"%s\",\n" +"но её версия отличается от версии %s.\n" +"Проверьте вашу установку PostgreSQL.\n" -#: pg_ctl.c:667 +#: pg_ctl.c:755 #, c-format msgid "%s: database system initialization failed\n" -msgstr "%s: создание базы данных не удалось\n" +msgstr "%s: сбой при инициализации системы баз данных\n" -#: pg_ctl.c:683 +#: pg_ctl.c:770 #, c-format msgid "%s: another server might be running; trying to start server anyway\n" -msgstr "%s: возможно, другой сервер уже запущен, пробуем запустить сервер всё равно\n" +msgstr "" +"%s: возможно, уже работает другой сервер, всё же пробуем запустить этот " +"сервер\n" -#: pg_ctl.c:720 +#: pg_ctl.c:807 #, c-format msgid "%s: could not start server: exit code was %d\n" msgstr "%s: не удалось запустить сервер, код возврата: %d\n" -#: pg_ctl.c:731 -#: pg_ctl.c:754 -#, c-format -msgid "" -"%s: could not start server\n" -"Examine the log output.\n" -msgstr "" -"%s: не удалось запустить сервер\n" -"Проверьте вывод в протоколе выполнения.\n" - -#: pg_ctl.c:740 +#: pg_ctl.c:814 msgid "waiting for server to start..." msgstr "ожидание запуска сервера..." -#: pg_ctl.c:745 -#: pg_ctl.c:843 -#: pg_ctl.c:931 +#: pg_ctl.c:819 pg_ctl.c:920 pg_ctl.c:1011 msgid " done\n" msgstr " готово\n" -#: pg_ctl.c:746 +#: pg_ctl.c:820 msgid "server started\n" msgstr "сервер запущен\n" -#: pg_ctl.c:749 -#: pg_ctl.c:753 +#: pg_ctl.c:823 pg_ctl.c:827 msgid " stopped waiting\n" -msgstr " остановка ожидания\n" +msgstr " прекращение ожидания\n" -#: pg_ctl.c:750 +#: pg_ctl.c:824 msgid "server is still starting up\n" msgstr "сервер всё ещё запускается\n" -#: pg_ctl.c:760 -#: pg_ctl.c:838 -#: pg_ctl.c:925 +#: pg_ctl.c:828 +#, c-format +msgid "" +"%s: could not start server\n" +"Examine the log output.\n" +msgstr "" +"%s: не удалось запустить сервер\n" +"Изучите протокол выполнения.\n" + +#: pg_ctl.c:834 pg_ctl.c:912 pg_ctl.c:1002 msgid " failed\n" msgstr " ошибка\n" -#: pg_ctl.c:761 +#: pg_ctl.c:835 #, c-format msgid "%s: could not wait for server because of misconfiguration\n" msgstr "%s: не удалось дождаться сервера вследствие ошибки конфигурации\n" -#: pg_ctl.c:767 +#: pg_ctl.c:841 msgid "server starting\n" msgstr "сервер запускается\n" -#: pg_ctl.c:782 -#: pg_ctl.c:865 -#: pg_ctl.c:953 +#: pg_ctl.c:856 pg_ctl.c:942 pg_ctl.c:1032 pg_ctl.c:1072 #, c-format msgid "%s: PID file \"%s\" does not exist\n" -msgstr "%s: PID-файл \"%s\" не существует\n" +msgstr "%s: файл PID \"%s\" не существует\n" -#: pg_ctl.c:783 -#: pg_ctl.c:867 -#: pg_ctl.c:954 +#: pg_ctl.c:857 pg_ctl.c:944 pg_ctl.c:1033 pg_ctl.c:1073 msgid "Is server running?\n" msgstr "Запущен ли сервер?\n" -#: pg_ctl.c:789 +#: pg_ctl.c:863 #, c-format msgid "%s: cannot stop server; single-user server is running (PID: %ld)\n" -msgstr "%s: не удалось остановить сервер; выполняется однопользовательский сервер (PID: %ld)\n" +msgstr "" +"%s: остановить сервер с PID %ld нельзя - он запущен в монопольном режиме\n" -#: pg_ctl.c:797 -#: pg_ctl.c:889 +#: pg_ctl.c:871 pg_ctl.c:966 #, c-format msgid "%s: could not send stop signal (PID: %ld): %s\n" msgstr "%s: не удалось отправить сигнал остановки (PID: %ld): %s\n" -#: pg_ctl.c:804 +#: pg_ctl.c:878 msgid "server shutting down\n" -msgstr "сервер завершает работу\n" +msgstr "сервер останавливается\n" -#: pg_ctl.c:819 -#: pg_ctl.c:904 +#: pg_ctl.c:893 pg_ctl.c:981 msgid "" "WARNING: online backup mode is active\n" "Shutdown will not complete until pg_stop_backup() is called.\n" "\n" msgstr "" -"ВНИМАНИЕ: активен режим онлайн резервирования\n" -"Выключение не завершится пока не вызовут pg_stop_backup().\n" +"ВНИМАНИЕ: активен режим копирования \"на ходу\"\n" +"Выключение произойдёт только при вызове pg_stop_backup().\n" "\n" -#: pg_ctl.c:823 -#: pg_ctl.c:908 +#: pg_ctl.c:897 pg_ctl.c:985 msgid "waiting for server to shut down..." msgstr "ожидание завершения работы сервера..." -#: pg_ctl.c:840 -#: pg_ctl.c:927 +#: pg_ctl.c:914 pg_ctl.c:1004 #, c-format msgid "%s: server does not shut down\n" msgstr "%s: сервер не останавливается\n" -#: pg_ctl.c:845 -#: pg_ctl.c:932 +#: pg_ctl.c:916 pg_ctl.c:1006 +msgid "" +"HINT: The \"-m fast\" option immediately disconnects sessions rather than\n" +"waiting for session-initiated disconnection.\n" +msgstr "" +"ПОДСКАЗКА: Параметр \"-m fast\" может сбросить сеансы принудительно,\n" +"не дожидаясь, пока они завершатся сами.\n" + +#: pg_ctl.c:922 pg_ctl.c:1012 msgid "server stopped\n" msgstr "сервер остановлен\n" -#: pg_ctl.c:868 -#: pg_ctl.c:938 +#: pg_ctl.c:945 pg_ctl.c:1018 msgid "starting server anyway\n" -msgstr "сервер запускается, несмотря ни на что\n" +msgstr "сервер запускается, несмотря на это\n" -#: pg_ctl.c:877 +#: pg_ctl.c:954 #, c-format msgid "%s: cannot restart server; single-user server is running (PID: %ld)\n" -msgstr "%s: невозможно перезапустить сервер; выполняется однопользовательский сервер (PID: %ld)\n" +msgstr "" +"%s: перезапустить сервер с PID %ld нельзя - он запущен в монопольном режиме\n" -#: pg_ctl.c:880 -#: pg_ctl.c:963 +#: pg_ctl.c:957 pg_ctl.c:1042 msgid "Please terminate the single-user server and try again.\n" -msgstr "Пожалуйста, остановите однопользовательский сервер и попытайтесь снова.\n" +msgstr "Пожалуйста, остановите его и повторите попытку.\n" -#: pg_ctl.c:936 +#: pg_ctl.c:1016 #, c-format msgid "%s: old server process (PID: %ld) seems to be gone\n" -msgstr "%s: похоже что старый процесс сервера (PID: %ld) завершился\n" +msgstr "%s: похоже, что старый серверный процесс (PID: %ld) исчез\n" -#: pg_ctl.c:960 +#: pg_ctl.c:1039 #, c-format msgid "%s: cannot reload server; single-user server is running (PID: %ld)\n" -msgstr "%s: невозможно перезагрузить сервер; выполняется однопользовательский сервер (PID: %ld)\n" +msgstr "" +"%s: перезагрузить сервер с PID %ld нельзя - он запущен в монопольном режиме\n" -#: pg_ctl.c:969 +#: pg_ctl.c:1048 #, c-format msgid "%s: could not send reload signal (PID: %ld): %s\n" msgstr "%s: не удалось отправить сигнал перезагрузки (PID: %ld): %s\n" -#: pg_ctl.c:974 +#: pg_ctl.c:1053 msgid "server signaled\n" -msgstr "отправлен сигнал серверу\n" +msgstr "сигнал отправлен серверу\n" + +#: pg_ctl.c:1079 +#, c-format +msgid "%s: cannot promote server; single-user server is running (PID: %ld)\n" +msgstr "" +"%s: повысить сервер с PID %ld нельзя - он выполняется в монопольном режиме\n" + +#: pg_ctl.c:1088 +#, c-format +msgid "%s: cannot promote server; server is not in standby mode\n" +msgstr "%s: повысить сервер нельзя - он работает не в режиме резерва\n" + +#: pg_ctl.c:1096 +#, c-format +msgid "%s: could not create promote signal file \"%s\": %s\n" +msgstr "%s: не удалось создать файл \"%s\" с сигналом к повышению: %s\n" -#: pg_ctl.c:1018 +#: pg_ctl.c:1102 +#, c-format +msgid "%s: could not write promote signal file \"%s\": %s\n" +msgstr "%s: не удалось записать файл \"%s\" с сигналом к повышению: %s\n" + +#: pg_ctl.c:1110 +#, c-format +msgid "%s: could not send promote signal (PID: %ld): %s\n" +msgstr "%s: не удалось отправить сигнал к повышению (PID: %ld): %s\n" + +#: pg_ctl.c:1113 +#, c-format +msgid "%s: could not remove promote signal file \"%s\": %s\n" +msgstr "%s: ошибка при удалении файла \"%s\" с сигналом к повышению: %s\n" + +#: pg_ctl.c:1118 +msgid "server promoting\n" +msgstr "сервер повышается\n" + +#: pg_ctl.c:1163 #, c-format msgid "%s: single-user server is running (PID: %ld)\n" -msgstr "%s: выполняется однопользовательский сервер (PID: %ld)\n" +msgstr "%s: сервер работает в монопольном режиме (PID: %ld)\n" -#: pg_ctl.c:1030 +#: pg_ctl.c:1175 #, c-format msgid "%s: server is running (PID: %ld)\n" -msgstr "%s: выполняется сервер (PID: %ld)\n" +msgstr "%s: сервер работает (PID: %ld)\n" -#: pg_ctl.c:1041 +#: pg_ctl.c:1186 #, c-format msgid "%s: no server running\n" -msgstr "%s: нет запущенного сервера\n" +msgstr "%s: сервер не работает\n" -#: pg_ctl.c:1052 +#: pg_ctl.c:1197 #, c-format msgid "%s: could not send signal %d (PID: %ld): %s\n" msgstr "%s: не удалось отправить сигнал %d (PID: %ld): %s\n" -#: pg_ctl.c:1086 +#: pg_ctl.c:1231 #, c-format msgid "%s: could not find own program executable\n" msgstr "%s: не удалось найти свой исполняемый файл\n" -#: pg_ctl.c:1096 +#: pg_ctl.c:1241 #, c-format msgid "%s: could not find postgres program executable\n" -msgstr "%s: не удалось найти исполняемый файл postgres'а\n" +msgstr "%s: не удалось найти исполняемый файл postgres\n" -#: pg_ctl.c:1158 -#: pg_ctl.c:1190 +#: pg_ctl.c:1306 pg_ctl.c:1338 #, c-format msgid "%s: could not open service manager\n" -msgstr "%s: невозможно открыть менеджер служб\n" +msgstr "%s: не удалось открыть менеджер служб\n" -#: pg_ctl.c:1164 +#: pg_ctl.c:1312 #, c-format msgid "%s: service \"%s\" already registered\n" msgstr "%s: служба \"%s\" уже зарегистрирована\n" -#: pg_ctl.c:1175 +#: pg_ctl.c:1323 #, c-format msgid "%s: could not register service \"%s\": error code %d\n" msgstr "%s: не удалось зарегистрировать службу \"%s\": код ошибки %d\n" -#: pg_ctl.c:1196 +#: pg_ctl.c:1344 #, c-format msgid "%s: service \"%s\" not registered\n" msgstr "%s: служба \"%s\" не зарегистрирована\n" -#: pg_ctl.c:1203 +#: pg_ctl.c:1351 #, c-format msgid "%s: could not open service \"%s\": error code %d\n" msgstr "%s: не удалось открыть службу \"%s\": код ошибки %d\n" -#: pg_ctl.c:1210 +#: pg_ctl.c:1358 #, c-format msgid "%s: could not unregister service \"%s\": error code %d\n" -msgstr "" -"%s: невозможно удалить службу \"%s\": код ошибки %d\n" -"\n" +msgstr "%s: ошибка при удалении службы \"%s\": код ошибки %d\n" -#: pg_ctl.c:1296 +#: pg_ctl.c:1444 msgid "Waiting for server startup...\n" msgstr "Ожидание запуска сервера...\n" -#: pg_ctl.c:1299 +#: pg_ctl.c:1447 msgid "Timed out waiting for server startup\n" msgstr "Превышено время ожидания запуска сервера\n" -#: pg_ctl.c:1303 +#: pg_ctl.c:1451 msgid "Server started and accepting connections\n" msgstr "Сервер запущен и принимает подключения\n" -#: pg_ctl.c:1353 +#: pg_ctl.c:1501 #, c-format msgid "%s: could not start service \"%s\": error code %d\n" msgstr "%s: не удалось запустить службу \"%s\": код ошибки %d\n" -#: pg_ctl.c:1588 +#: pg_ctl.c:1573 +#, c-format +msgid "%s: WARNING: cannot create restricted tokens on this platform\n" +msgstr "%s: ПРЕДУПРЕЖДЕНИЕ: в этой ОС нельзя создавать ограниченные маркеры\n" + +#: pg_ctl.c:1582 +#, c-format +msgid "%s: could not open process token: %lu\n" +msgstr "%s: не удалось открыть маркер процесса: %lu\n" + +#: pg_ctl.c:1595 +#, c-format +msgid "%s: could not allocate SIDs: %lu\n" +msgstr "%s: не удалось подготовить структуры SID: %lu\n" + +#: pg_ctl.c:1614 +#, c-format +msgid "%s: could not create restricted token: %lu\n" +msgstr "%s: не удалось создать ограниченный маркер: %lu\n" + +#: pg_ctl.c:1652 +#, c-format +msgid "%s: WARNING: could not locate all job object functions in system API\n" +msgstr "" +"%s: ПРЕДУПРЕЖДЕНИЕ: не удалось найти все функции для работы с задачами в " +"системном API\n" + +#: pg_ctl.c:1738 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Наберите \"%s --help\" для более подробной информации.\n" +msgstr "Для дополнительной информации попробуйте \"%s --help\".\n" -#: pg_ctl.c:1596 +#: pg_ctl.c:1746 #, c-format msgid "" -"%s is a utility to start, stop, restart, reload configuration files,\n" -"report the status of a PostgreSQL server, or signal a PostgreSQL process.\n" +"%s is a utility to initialize, start, stop, or control a PostgreSQL server.\n" "\n" msgstr "" -"%s является утилитой для запуска, остановки, перезапуска,\n" -"перезагрузки конфигурационных файлов, информирования о состоянии сервера\n" -"PostgreSQL, или отправки сигналов PostgreSQL-процессу.\n" +"%s - это утилита для инициализации, запуска, остановки и управления сервером " +"PostgreSQL.\n" "\n" -#: pg_ctl.c:1598 +#: pg_ctl.c:1747 #, c-format msgid "Usage:\n" msgstr "Использование:\n" -#: pg_ctl.c:1599 +#: pg_ctl.c:1748 #, c-format msgid " %s init[db] [-D DATADIR] [-s] [-o \"OPTIONS\"]\n" -msgstr " %s init[db] [-D ДИРЕКТОРИЯ-ДАННЫХ] [-s] [-o \"ОПЦИИ\"]\n" +msgstr "" +" %s init[db] [-D КАТАЛОГ-ДАННЫХ] [-s] [-o \"ПАРАМЕТРЫ\"]\n" -#: pg_ctl.c:1600 +#: pg_ctl.c:1749 #, c-format -msgid " %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]\n" -msgstr " %s start [-w] [-t СЕКУНДЫ] [-D ДИРЕКТОРИЯ-ДАННЫХ] [-s] [-l ИМЯ-ФАЙЛА] [-o \"ОПЦИИ\"]\n" +msgid "" +" %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS" +"\"]\n" +msgstr "" +" %s start [-w] [-t СЕК] [-D КАТАЛОГ-ДАННЫХ] [-s] [-l ИМЯ-ФАЙЛА]\n" +" [-o \"ПАРАМЕТРЫ\"]\n" -#: pg_ctl.c:1601 +#: pg_ctl.c:1750 #, c-format msgid " %s stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" -msgstr " %s stop [-W] [-t СЕКУНДЫ] [-D ДИРЕКТОРИЯ-ДАННЫХ] [-s] [-m РЕЖИМ-ОСТАНОВКИ]\n" +msgstr "" +" %s stop [-W] [-t СЕК] [-D КАТАЛОГ-ДАННЫХ] [-s] [-m РЕЖИМ-ОСТАНОВКИ]\n" -#: pg_ctl.c:1602 +#: pg_ctl.c:1751 #, c-format msgid "" " %s restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" " [-o \"OPTIONS\"]\n" msgstr "" -" %s restart [-w] [-t СЕКУНДЫ] [-D ДИРЕКТОРИЯ-ДАННЫХ] [-s] [-m РЕЖИМ-ОСТАНОВКИ]\n" -" [-o \"ОПЦИИ\"]\n" +" %s restart [-w] [-t СЕК] [-D КАТАЛОГ-ДАННЫХ] [-s] [-m РЕЖИМ-ОСТАНОВКИ]\n" +" [-o \"ПАРАМЕТРЫ\"]\n" -#: pg_ctl.c:1604 +#: pg_ctl.c:1753 #, c-format msgid " %s reload [-D DATADIR] [-s]\n" -msgstr " %s reload [-D ДИРЕКТОРИЯ-ДАННЫХ] [-s]\n" +msgstr " %s reload [-D КАТАЛОГ-ДАННЫХ] [-s]\n" -#: pg_ctl.c:1605 +#: pg_ctl.c:1754 #, c-format msgid " %s status [-D DATADIR]\n" -msgstr " %s status [-D ДИРЕКТОРИЯ-ДАННЫХ]\n" +msgstr " %s status [-D КАТАЛОГ-ДАННЫХ]\n" + +#: pg_ctl.c:1755 +#, c-format +msgid " %s promote [-D DATADIR] [-s]\n" +msgstr " %s promote [-D КАТАЛОГ-ДАННЫХ] [-s]\n" -#: pg_ctl.c:1606 +#: pg_ctl.c:1756 #, c-format msgid " %s kill SIGNALNAME PID\n" -msgstr " %s kill ИМЯ-СИГНАЛА PID\n" +msgstr " %s kill СИГНАЛ PID\n" -#: pg_ctl.c:1608 +#: pg_ctl.c:1758 #, c-format msgid "" " %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" " [-S START-TYPE] [-w] [-t SECS] [-o \"OPTIONS\"]\n" msgstr "" -" %s register [-N ИМЯ-СЛУЖБЫ] [-U ИМЯ-ПОЛЬЗОВАТЕЛЯ] [-P ПАРОЛЬ] [-D ДИРЕКТОРИЯ-ДАННЫХ]\n" -" [-S ТИП-ЗАПУСКА] [-w] [-t СЕКУНДЫ] [-o \"ОПЦИИ\"]\n" +" %s register [-N ИМЯ-СЛУЖБЫ] [-U ПОЛЬЗОВАТЕЛЬ] [-P ПАРОЛЬ]\n" +" [-D КАТАЛОГ-ДАННЫХ] [-S ТИП-ЗАПУСКА] [-w] [-t СЕК]\n" +" [-o \"ПАРАМЕТРЫ\"]\n" -#: pg_ctl.c:1610 +#: pg_ctl.c:1760 #, c-format msgid " %s unregister [-N SERVICENAME]\n" msgstr " %s unregister [-N ИМЯ-СЛУЖБЫ]\n" -#: pg_ctl.c:1613 +#: pg_ctl.c:1763 #, c-format msgid "" "\n" "Common options:\n" msgstr "" "\n" -"Опции общего характера:\n" +"Общие параметры:\n" -#: pg_ctl.c:1614 +#: pg_ctl.c:1764 #, c-format msgid " -D, --pgdata DATADIR location of the database storage area\n" -msgstr " -D, --pgdata ДИРЕКТОРИЯ-ДАННЫХ местонахождение хранилища баз данных\n" +msgstr " -D, --pgdata КАТАЛОГ расположение хранилища баз данных\n" -#: pg_ctl.c:1615 +#: pg_ctl.c:1765 #, c-format msgid " -s, --silent only print errors, no informational messages\n" -msgstr " -s, --silent сообщать только ошибки, исключая информационные сообщения\n" +msgstr "" +" -s, --silent выводить только ошибки, без информационных " +"сообщений\n" -#: pg_ctl.c:1616 +#: pg_ctl.c:1766 #, c-format msgid " -t SECS seconds to wait when using -w option\n" -msgstr " -t СЕКУНДЫ сколько секунд ждать при использовании опции -w\n" +msgstr "" +" -t СЕК время ожидания при использовании параметра -w\n" -#: pg_ctl.c:1617 +#: pg_ctl.c:1767 #, c-format msgid " -w wait until operation completes\n" -msgstr " -w ждать до завершения операции\n" +msgstr " -w ждать завершения операции\n" -#: pg_ctl.c:1618 +#: pg_ctl.c:1768 #, c-format msgid " -W do not wait until operation completes\n" msgstr " -W не ждать завершения операции\n" -#: pg_ctl.c:1619 +#: pg_ctl.c:1769 #, c-format msgid " --help show this help, then exit\n" -msgstr " --help показать эту подсказку и выйти\n" +msgstr " --help показать эту справку и выйти\n" -#: pg_ctl.c:1620 +#: pg_ctl.c:1770 #, c-format msgid " --version output version information, then exit\n" msgstr " --version показать версию и выйти\n" -#: pg_ctl.c:1621 +#: pg_ctl.c:1771 #, c-format msgid "" "(The default is to wait for shutdown, but not for start or restart.)\n" "\n" msgstr "" -"(По умолчанию, ждать завершения остановки, но не в случае запуска или перезапуска\n" +"(По умолчанию ожидание имеет место при остановке, но не при (пере)запуске.)\n" "\n" -#: pg_ctl.c:1622 +#: pg_ctl.c:1772 #, c-format msgid "If the -D option is omitted, the environment variable PGDATA is used.\n" -msgstr "Если опция -D не задана,то будет использоваться переменная окружения PGDATA.\n" +msgstr "Если параметр -D опущен, используется переменная окружения PGDATA.\n" -#: pg_ctl.c:1624 +#: pg_ctl.c:1774 #, c-format msgid "" "\n" "Options for start or restart:\n" msgstr "" "\n" -"Опции запуска или перезапуска:\n" +"Параметры запуска и перезапуска:\n" -#: pg_ctl.c:1626 +#: pg_ctl.c:1776 #, c-format msgid " -c, --core-files allow postgres to produce core files\n" -msgstr " -c, --core-files разрешить postgres'у генерировать core-файлы\n" +msgstr " -c, --core-files указать postgres создавать дампы памяти\n" -#: pg_ctl.c:1628 +#: pg_ctl.c:1778 #, c-format msgid " -c, --core-files not applicable on this platform\n" msgstr " -c, --core-files неприменимо на этой платформе\n" -#: pg_ctl.c:1630 +#: pg_ctl.c:1780 #, c-format msgid " -l, --log FILENAME write (or append) server log to FILENAME\n" -msgstr " -l, --log ИМЯ-ФАЙЛА записывать (или добавлять) протокол выполнения сервера в ИМЯ-ФАЙЛА.\n" +msgstr "" +" -l, --log ФАЙЛ записывать (или добавлять) протокол сервера в " +"ФАЙЛ.\n" -#: pg_ctl.c:1631 +#: pg_ctl.c:1781 #, c-format msgid "" " -o OPTIONS command line options to pass to postgres\n" " (PostgreSQL server executable) or initdb\n" msgstr "" -" -o OPTIONS опции командной строки для передачи postgres\n" -" (исполнительный файл сервера PostgreSQL) или initdb\n" +" -o ПАРАМЕТРЫ параметры командной строки для postgres\n" +" (исполняемого файла сервера PostgreSQL) или initdb\n" -#: pg_ctl.c:1633 +#: pg_ctl.c:1783 #, c-format msgid " -p PATH-TO-POSTGRES normally not necessary\n" msgstr " -p ПУТЬ-К-POSTGRES обычно не требуется\n" -#: pg_ctl.c:1634 +#: pg_ctl.c:1784 #, c-format msgid "" "\n" "Options for stop or restart:\n" msgstr "" "\n" -"Опции для остановки или перезапуска:\n" +"Параметры остановки и перезапуска:\n" -#: pg_ctl.c:1635 +#: pg_ctl.c:1785 #, c-format msgid " -m SHUTDOWN-MODE can be \"smart\", \"fast\", or \"immediate\"\n" -msgstr " -m РЕЖИМ-ОСТАНОВКИ может быть \"smart\", \"fast\" или \"immediate\"\n" +msgstr "" +" -m РЕЖИМ-ОСТАНОВКИ может быть \"smart\", \"fast\" или \"immediate\"\n" -#: pg_ctl.c:1637 +#: pg_ctl.c:1787 #, c-format msgid "" "\n" @@ -513,62 +620,67 @@ msgstr "" "\n" "Режимы остановки:\n" -#: pg_ctl.c:1638 +#: pg_ctl.c:1788 #, c-format msgid " smart quit after all clients have disconnected\n" msgstr " smart закончить работу после отключения всех клиентов\n" -#: pg_ctl.c:1639 +#: pg_ctl.c:1789 #, c-format msgid " fast quit directly, with proper shutdown\n" -msgstr " fast закончить быстро,но с полноценной остановкой\n" +msgstr " fast закончить сразу, в штатном режиме\n" -#: pg_ctl.c:1640 +#: pg_ctl.c:1790 #, c-format -msgid " immediate quit without complete shutdown; will lead to recovery on restart\n" +msgid "" +" immediate quit without complete shutdown; will lead to recovery on " +"restart\n" msgstr "" -" immediate выйти немедленно без полноценной остановки; приведёт к\n" -" восстановлению при перезапуске\n" +" immediate закончить немедленно, в экстренном режиме; влечёт за собой\n" +" восстановление при перезапуске\n" -#: pg_ctl.c:1642 +#: pg_ctl.c:1792 #, c-format msgid "" "\n" "Allowed signal names for kill:\n" msgstr "" "\n" -"Разрешённые названия сигналов для команды kill:\n" +"Разрешённые сигналы для команды kill:\n" -#: pg_ctl.c:1646 +#: pg_ctl.c:1796 #, c-format msgid "" "\n" "Options for register and unregister:\n" msgstr "" "\n" -"Опции для регистрации и снятия с регистрации:\n" +"Параметры для регистрации и удаления:\n" -#: pg_ctl.c:1647 +#: pg_ctl.c:1797 #, c-format -msgid " -N SERVICENAME service name with which to register PostgreSQL server\n" +msgid "" +" -N SERVICENAME service name with which to register PostgreSQL server\n" msgstr " -N ИМЯ-СЛУЖБЫ имя службы для регистрации сервера PostgreSQL\n" -#: pg_ctl.c:1648 +#: pg_ctl.c:1798 #, c-format msgid " -P PASSWORD password of account to register PostgreSQL server\n" -msgstr " -P ПАРОЛЬ пароль аккаунта для регистрации сервера PostgreSQL\n" +msgstr "" +" -P ПАРОЛЬ пароль учётной записи для регистрации сервера PostgreSQL\n" -#: pg_ctl.c:1649 +#: pg_ctl.c:1799 #, c-format msgid " -U USERNAME user name of account to register PostgreSQL server\n" -msgstr " -U ИМЯ-ПОЛЬЗОВАТЕЛЯ имя пользователя для регистрации сервера PostgreSQL\n" +msgstr "" +" -U ПОЛЬЗОВАТЕЛЬ имя пользователя для регистрации сервера PostgreSQL\n" -#: pg_ctl.c:1650 +#: pg_ctl.c:1800 #, c-format msgid " -S START-TYPE service start type to register PostgreSQL server\n" -msgstr " -S ТИП-ЗАПУСКА тип запуска службы для регистрации сервера PostgreSQL\n" +msgstr " -S ТИП-ЗАПУСКА тип запуска службы сервера PostgreSQL\n" -#: pg_ctl.c:1652 +#: pg_ctl.c:1802 #, c-format msgid "" "\n" @@ -577,145 +689,138 @@ msgstr "" "\n" "Типы запуска:\n" -#: pg_ctl.c:1653 +#: pg_ctl.c:1803 #, c-format -msgid " auto start service automatically during system startup (default)\n" -msgstr " auto запускать сервис автоматически при старте системы (по умолчанию)\n" +msgid "" +" auto start service automatically during system startup (default)\n" +msgstr "" +" auto запускать службу автоматически при старте системы (по " +"умолчанию)\n" -#: pg_ctl.c:1654 +#: pg_ctl.c:1804 #, c-format msgid " demand start service on demand\n" -msgstr " demand запускать сервис по требованию\n" +msgstr " demand запускать службу по требованию\n" -#: pg_ctl.c:1657 +#: pg_ctl.c:1807 #, c-format msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" -"Посылать сообщения об ошибках на адрес .\n" +"Об ошибках сообщайте по адресу .\n" -#: pg_ctl.c:1682 +#: pg_ctl.c:1832 #, c-format msgid "%s: unrecognized shutdown mode \"%s\"\n" msgstr "%s: неизвестный режим остановки \"%s\"\n" -#: pg_ctl.c:1715 +#: pg_ctl.c:1865 #, c-format msgid "%s: unrecognized signal name \"%s\"\n" msgstr "%s: нераспознанное имя сигнала \"%s\"\n" -#: pg_ctl.c:1732 +#: pg_ctl.c:1882 #, c-format msgid "%s: unrecognized start type \"%s\"\n" msgstr "%s: нераспознанный тип запуска \"%s\"\n" -#: pg_ctl.c:1796 +#: pg_ctl.c:1947 #, c-format msgid "" "%s: cannot be run as root\n" "Please log in (using, e.g., \"su\") as the (unprivileged) user that will\n" "own the server process.\n" msgstr "" -"%s: нельзя выполнять под пользователем root\n" -"Пожалуйста, войдите в систему как непривилегированный пользователь (например, используя \"su\"),\n" -"под которым будет выполняться серверный процесс.\n" +"Запускать %s от имени root нельзя.\n" +"Пожалуйста, переключитесь на обычного пользователя (например,\n" +"используя \"su\"), который будет запускать серверный процесс.\n" -#: pg_ctl.c:1867 +#: pg_ctl.c:2018 #, c-format msgid "%s: -S option not supported on this platform\n" -msgstr "%s: опция -S не поддерживается на данной платформе\n" +msgstr "%s: параметр -S не поддерживается в этой ОС\n" -#: pg_ctl.c:1914 +#: pg_ctl.c:2065 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: слишком много аргументов командной строки (первый: \"%s\")\n" -#: pg_ctl.c:1936 +#: pg_ctl.c:2089 #, c-format msgid "%s: missing arguments for kill mode\n" msgstr "%s: отсутствуют аргументы для режима kill\n" -#: pg_ctl.c:1954 +#: pg_ctl.c:2107 #, c-format msgid "%s: unrecognized operation mode \"%s\"\n" msgstr "%s: нераспознанный режим работы \"%s\"\n" -#: pg_ctl.c:1964 +#: pg_ctl.c:2117 #, c-format msgid "%s: no operation specified\n" msgstr "%s: команда не указана\n" -#: pg_ctl.c:1980 +#: pg_ctl.c:2133 #, c-format -msgid "%s: no database directory specified and environment variable PGDATA unset\n" -msgstr "%s: директория баз данных не указана и переменная окружения PGDATA не установлена\n" +msgid "" +"%s: no database directory specified and environment variable PGDATA unset\n" +msgstr "" +"%s: каталог баз данных не указан и переменная окружения PGDATA не " +"установлена\n" -#: ../../port/exec.c:125 -#: ../../port/exec.c:239 -#: ../../port/exec.c:282 +#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 #, c-format msgid "could not identify current directory: %s" -msgstr "не удалось определить текущую директорию: %s" +msgstr "не удалось определить текущий каталог: %s" #: ../../port/exec.c:144 #, c-format msgid "invalid binary \"%s\"" -msgstr "неверный бинарный \"%s\"" +msgstr "неверный исполняемый файл \"%s\"" #: ../../port/exec.c:193 #, c-format msgid "could not read binary \"%s\"" -msgstr "не удалось считать бинарный \"%s\"" +msgstr "не удалось прочитать исполняемый файл \"%s\"" #: ../../port/exec.c:200 #, c-format msgid "could not find a \"%s\" to execute" -msgstr "\"%s\" не найден для выполнения" +msgstr "не удалось найти запускаемый файл \"%s\"" -#: ../../port/exec.c:255 -#: ../../port/exec.c:291 +#: ../../port/exec.c:255 ../../port/exec.c:291 #, c-format msgid "could not change directory to \"%s\"" -msgstr "не удалось поменять директорию на \"%s\"" +msgstr "не удалось перейти в каталог \"%s\"" #: ../../port/exec.c:270 #, c-format msgid "could not read symbolic link \"%s\"" -msgstr "не получилось считать ссылку \"%s\"" +msgstr "не удалось прочитать символическую ссылку \"%s\"" -#: ../../port/exec.c:516 +#: ../../port/exec.c:517 #, c-format msgid "child process exited with exit code %d" msgstr "дочерний процесс завершился с кодом возврата %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:521 #, c-format msgid "child process was terminated by exception 0x%X" -msgstr "дочерний процесс завершён исключением 0x%X" +msgstr "дочерний процесс прерван исключением 0x%X" -#: ../../port/exec.c:529 +#: ../../port/exec.c:530 #, c-format msgid "child process was terminated by signal %s" -msgstr "дочерний процесс завершён сигналом %s" +msgstr "дочерний процесс завершён по сигналу %s" -#: ../../port/exec.c:532 +#: ../../port/exec.c:533 #, c-format msgid "child process was terminated by signal %d" -msgstr "дочерний процесс был завершен сигналом %d" +msgstr "дочерний процесс завершён по сигналу %d" -#: ../../port/exec.c:536 +#: ../../port/exec.c:537 #, c-format msgid "child process exited with unrecognized status %d" -msgstr "дочерний процесс завершился с нераспознанным статусом %d" - -#~ msgid "could not start server\n" -#~ msgstr "не удалось запустить сервер\n" -#~ msgid "%s: neither postmaster nor postgres running\n" -#~ msgstr "%s: не выполняются ни postmaster, ни postgres\n" -#~ msgid "%s: a standalone backend \"postgres\" is running (PID: %ld)\n" -#~ msgstr "%s: выполняется независимый процесс \"postgres\" (PID: %ld)\n" -#~ msgid "%s: invalid option %s\n" -#~ msgstr "%s: неверная опция %s\n" - +msgstr "дочерний процесс завершился с нераспознанным состоянием %d" diff --git a/src/bin/pg_ctl/po/sv.po b/src/bin/pg_ctl/po/sv.po deleted file mode 100644 index 496f142822..0000000000 --- a/src/bin/pg_ctl/po/sv.po +++ /dev/null @@ -1,636 +0,0 @@ -# Swedish message translation file for pg_ctl -# Dennis Bj�rklund , 2004, 2005, 2006. -# -# Use these quotes: "%s" -# -msgid "" -msgstr "" -"Project-Id-Version: PostgreSQL 9.0\n" -"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-07-02 05:22+0000\n" -"PO-Revision-Date: 2010-07-02 13:19-0400\n" -"Last-Translator: Magnus Hagander \n" -"Language-Team: Swedish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" - -#: pg_ctl.c:225 pg_ctl.c:240 pg_ctl.c:1834 -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: slut p� minnet\n" - -#: pg_ctl.c:274 -#, c-format -msgid "%s: could not open PID file \"%s\": %s\n" -msgstr "%s: kunde inte �ppna PID-fil \"%s\": %s\n" - -#: pg_ctl.c:281 -#, c-format -msgid "%s: invalid data in PID file \"%s\"\n" -msgstr "%s: ogiltig data i PID-fil \"%s\"\n" - -#: pg_ctl.c:557 -#, c-format -msgid "%s: cannot set core file size limit; disallowed by hard limit\n" -msgstr "" -"%s: kan inte s�tta storlek p� core-fil; f�rbjudet av h�rd begr�nsning\n" - -#: pg_ctl.c:582 -#, c-format -msgid "%s: could not read file \"%s\"\n" -msgstr "%s: kunde inte l�sa filen \"%s\"\n" - -#: pg_ctl.c:587 -#, c-format -msgid "%s: option file \"%s\" must have exactly one line\n" -msgstr "%s: inst�llningsfilen \"%s\" m�ste ha precis en rad\n" - -#: pg_ctl.c:635 -#, c-format -msgid "" -"The program \"%s\" is needed by %s but was not found in the\n" -"same directory as \"%s\".\n" -"Check your installation.\n" -msgstr "" -"Programmet \"%s\" beh�vs av %s men hittades inte i samma\n" -"katalog som \"%s\".\n" -"Kontrollera din installation.\n" - -#: pg_ctl.c:641 -#, c-format -msgid "" -"The program \"%s\" was found by \"%s\"\n" -"but was not the same version as %s.\n" -"Check your installation.\n" -msgstr "" -"Programmet \"%s\" hittades av \"%s\"\n" -"men �r inte samma version som %s.\n" -"Kontrollera din installation.\n" - -#: pg_ctl.c:674 -#, fuzzy, c-format -msgid "%s: database system initialization failed\n" -msgstr "%s: skapande av databas misslyckades: %s" - -#: pg_ctl.c:690 -#, c-format -msgid "%s: another server might be running; trying to start server anyway\n" -msgstr "%s: en annan server verkar k�ra; f�rs�ker starta servern �nd�\n" - -#: pg_ctl.c:727 -#, c-format -msgid "%s: could not start server: exit code was %d\n" -msgstr "%s: kunde inte starta servern: avslutningskoden var %d\n" - -#: pg_ctl.c:738 pg_ctl.c:751 -#, c-format -msgid "" -"%s: could not start server\n" -"Examine the log output.\n" -msgstr "" -"%s: kunde inte starta servern\n" -"Unders�k log-utskriften.\n" - -#: pg_ctl.c:747 -msgid "waiting for server to start..." -msgstr "v�ntar p� att servern skall starta..." - -#: pg_ctl.c:758 pg_ctl.c:831 pg_ctl.c:911 -msgid " done\n" -msgstr "klar\n" - -#: pg_ctl.c:759 -msgid "server started\n" -msgstr "servern startad\n" - -#: pg_ctl.c:763 -msgid "server starting\n" -msgstr "servern startar\n" - -#: pg_ctl.c:778 pg_ctl.c:853 pg_ctl.c:933 -#, c-format -msgid "%s: PID file \"%s\" does not exist\n" -msgstr "%s: PID-fil \"%s\" finns inte\n" - -#: pg_ctl.c:779 pg_ctl.c:855 pg_ctl.c:934 -msgid "Is server running?\n" -msgstr "K�r servern?\n" - -#: pg_ctl.c:785 -#, c-format -msgid "%s: cannot stop server; single-user server is running (PID: %ld)\n" -msgstr "%s: kan inte stoppa servern; en-anv�ndar-server k�r (PID: %ld)\n" - -#: pg_ctl.c:793 pg_ctl.c:877 -#, c-format -msgid "%s: could not send stop signal (PID: %ld): %s\n" -msgstr "%s: kunde inte skicka stopp-singal (PID: %ld): %s\n" - -#: pg_ctl.c:800 -msgid "server shutting down\n" -msgstr "servern st�nger ner\n" - -#: pg_ctl.c:807 pg_ctl.c:884 -msgid "" -"WARNING: online backup mode is active\n" -"Shutdown will not complete until pg_stop_backup() is called.\n" -"\n" -msgstr "" - -#: pg_ctl.c:811 pg_ctl.c:888 -msgid "waiting for server to shut down..." -msgstr "v�ntar p� att servern skall st�nga ner..." - -#: pg_ctl.c:826 pg_ctl.c:905 -msgid " failed\n" -msgstr " misslyckades\n" - -#: pg_ctl.c:828 pg_ctl.c:907 -#, c-format -msgid "%s: server does not shut down\n" -msgstr "%s: servern st�nger inte ner\n" - -#: pg_ctl.c:833 pg_ctl.c:912 -msgid "server stopped\n" -msgstr "servern stoppad\n" - -#: pg_ctl.c:856 pg_ctl.c:918 -msgid "starting server anyway\n" -msgstr "startar servern �nd�\n" - -#: pg_ctl.c:865 -#, c-format -msgid "%s: cannot restart server; single-user server is running (PID: %ld)\n" -msgstr "%s: kan inte starta om servern; servern k�r (PID: %ld)\n" - -#: pg_ctl.c:868 pg_ctl.c:943 -msgid "Please terminate the single-user server and try again.\n" -msgstr "Var v�nlig och stoppa en--anv�ndar-servern och f�rs�k igen.\n" - -#: pg_ctl.c:916 -#, c-format -msgid "%s: old server process (PID: %ld) seems to be gone\n" -msgstr "%s: gamla serverprocessen (PID: %ld) verkar vara borta\n" - -#: pg_ctl.c:940 -#, c-format -msgid "%s: cannot reload server; single-user server is running (PID: %ld)\n" -msgstr "%s: kan inte ladda om servern; en-anv�ndar-server k�r (PID: %ld)\n" - -#: pg_ctl.c:949 -#, c-format -msgid "%s: could not send reload signal (PID: %ld): %s\n" -msgstr "%s: kunde inte skicka \"reload\"-signalen (PID: %ld): %s\n" - -#: pg_ctl.c:954 -msgid "server signaled\n" -msgstr "servern signalerad\n" - -#: pg_ctl.c:998 -#, c-format -msgid "%s: single-user server is running (PID: %ld)\n" -msgstr "%s: en-anv�ndar-server k�r (PID: %ld)\n" - -#: pg_ctl.c:1010 -#, c-format -msgid "%s: server is running (PID: %ld)\n" -msgstr "%s: servern k�r (PID: %ld)\n" - -#: pg_ctl.c:1021 -#, c-format -msgid "%s: no server running\n" -msgstr "%s: ingen server k�r\n" - -#: pg_ctl.c:1032 -#, c-format -msgid "%s: could not send signal %d (PID: %ld): %s\n" -msgstr "%s: kunde inte skicka signal %d (PID: %ld): %s\n" - -#: pg_ctl.c:1066 -#, c-format -msgid "%s: could not find own program executable\n" -msgstr "%s: kunde inte hitta egna programmets k�rbara fil\n" - -#: pg_ctl.c:1076 -#, c-format -msgid "%s: could not find postgres program executable\n" -msgstr "%s: kunde inte hitta postgres k�rbara fil\n" - -#: pg_ctl.c:1138 pg_ctl.c:1170 -#, c-format -msgid "%s: could not open service manager\n" -msgstr "%s: kunde inte �ppna tj�nsthanteraren\n" - -#: pg_ctl.c:1144 -#, c-format -msgid "%s: service \"%s\" already registered\n" -msgstr "%s: tj�nsten \"%s\" �r redan registrerad\n" - -#: pg_ctl.c:1155 -#, c-format -msgid "%s: could not register service \"%s\": error code %d\n" -msgstr "%s: kunde inte registrera tj�nsten \"%s\": felkod %d\n" - -#: pg_ctl.c:1176 -#, c-format -msgid "%s: service \"%s\" not registered\n" -msgstr "%s: tj�nsten \"%s\" �r inte registrerad\n" - -#: pg_ctl.c:1183 -#, c-format -msgid "%s: could not open service \"%s\": error code %d\n" -msgstr "%s: kunde inte �ppna tj�nsten \"%s\": felkod %d\n" - -#: pg_ctl.c:1190 -#, c-format -msgid "%s: could not unregister service \"%s\": error code %d\n" -msgstr "%s: kunde inte avregistrera tj�nsten \"%s\": felkod %d\n" - -#: pg_ctl.c:1276 -msgid "Waiting for server startup...\n" -msgstr "V�ntar p� serverstart...\n" - -#: pg_ctl.c:1279 -msgid "Timed out waiting for server startup\n" -msgstr "Timeout vid v�ntan p� serverstart\n" - -#: pg_ctl.c:1283 -msgid "Server started and accepting connections\n" -msgstr "Server startad och accepterar anslutningar\n" - -#: pg_ctl.c:1333 -#, c-format -msgid "%s: could not start service \"%s\": error code %d\n" -msgstr "%s: kunde inte starta tj�nsten \"%s\": felkod %d\n" - -#: pg_ctl.c:1568 -#, c-format -msgid "Try \"%s --help\" for more information.\n" -msgstr "F�rs�k med \"%s --help\" f�r mer information.\n" - -#: pg_ctl.c:1576 -#, c-format -msgid "" -"%s is a utility to start, stop, restart, reload configuration files,\n" -"report the status of a PostgreSQL server, or signal a PostgreSQL process.\n" -"\n" -msgstr "" -"%s �r ett verktyg f�r att starta, stoppa, starta om, ladda om\n" -"konfigureringsfiler, raportera statusen f�r en PostgreSQL-server\n" -"eller signalera en PostgreSQL-process.\n" -"\n" - -#: pg_ctl.c:1578 -#, c-format -msgid "Usage:\n" -msgstr "Anv�ndning:\n" - -#: pg_ctl.c:1579 -#, c-format -msgid " %s init[db] [-D DATADIR] [-s] [-o \"OPTIONS\"]\n" -msgstr " %s init[db] [-D DATAKAT] [-s] [-o \"FLAGGOR\"]\n" - -#: pg_ctl.c:1580 -#, c-format -msgid "" -" %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS" -"\"]\n" -msgstr "" -" %s start [-w] [-t SEK] [-D DATAKAT] [-s] [-l FILENAMN] [-o \"FLAGGOR\"]\n" - -#: pg_ctl.c:1581 -#, c-format -msgid " %s stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" -msgstr " %s stop [-W] [-t SEK] [-D DATAKAT] [-s] [-m ST�NGNINGSMETOD]\n" - -#: pg_ctl.c:1582 -#, c-format -msgid "" -" %s restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" -" [-o \"OPTIONS\"]\n" -msgstr "" -" %s restart [-w] [-t SEK] [-D DATAKAT] [-s] [-m ST�NGNINGSMETOD]\n" -" [-o \"FLAGGOR\"]\n" - -#: pg_ctl.c:1584 -#, c-format -msgid " %s reload [-D DATADIR] [-s]\n" -msgstr " %s reload [-D DATAKAT] [-s]\n" - -#: pg_ctl.c:1585 -#, c-format -msgid " %s status [-D DATADIR]\n" -msgstr " %s status [-D DATAKAT]\n" - -#: pg_ctl.c:1586 -#, c-format -msgid " %s kill SIGNALNAME PID\n" -msgstr " %s kill SIGNALNAMN PID\n" - -#: pg_ctl.c:1588 -#, c-format -msgid "" -" %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" -" [-w] [-t SECS] [-o \"OPTIONS\"]\n" -msgstr "" -" %s register [-N TJ�NSTNAMN] [-U ANV�NDARNAMN] [-P L�SENORD] [-D " -"DATAKAT]\n" -" [-w] [-t SEK] [-o \"FLAGGOR\"]\n" - -#: pg_ctl.c:1590 -#, c-format -msgid " %s unregister [-N SERVICENAME]\n" -msgstr " %s unregister [-N TJ�NSTNAMN]\n" - -#: pg_ctl.c:1593 -#, c-format -msgid "" -"\n" -"Common options:\n" -msgstr "" -"\n" -"Generella flaggor:\n" - -#: pg_ctl.c:1594 -#, c-format -msgid " -D, --pgdata DATADIR location of the database storage area\n" -msgstr " -D, --pgdata DATAKAT plats f�r databasens lagringsarea\n" - -#: pg_ctl.c:1595 -#, c-format -msgid " -s, --silent only print errors, no informational messages\n" -msgstr "" -" -s, --silent skriv bara ut fel, inga informationsmeddelanden\n" - -#: pg_ctl.c:1596 -#, c-format -msgid " -t SECS seconds to wait when using -w option\n" -msgstr " -t SEK sekunder att v�nta om flaggan -w anv�nds\n" - -#: pg_ctl.c:1597 -#, c-format -msgid " -w wait until operation completes\n" -msgstr " -w v�nta p� att operationen slutf�rs\n" - -#: pg_ctl.c:1598 -#, c-format -msgid " -W do not wait until operation completes\n" -msgstr " -W v�nta inte p� att operationen slutf�rs\n" - -#: pg_ctl.c:1599 -#, c-format -msgid " --help show this help, then exit\n" -msgstr " --help visa denna hj�lp, avsluta sedan\n" - -#: pg_ctl.c:1600 -#, c-format -msgid " --version output version information, then exit\n" -msgstr " --version visa versionsinformation, avsluta sedan\n" - -#: pg_ctl.c:1601 -#, c-format -msgid "" -"(The default is to wait for shutdown, but not for start or restart.)\n" -"\n" -msgstr "" -"(Standard �r att v�nta p� nedst�ngning men inte v�nta p� start eller " -"omstart.)\n" -"\n" - -#: pg_ctl.c:1602 -#, c-format -msgid "If the -D option is omitted, the environment variable PGDATA is used.\n" -msgstr "Om flaggan -D inte angivits s� anv�nds omgivningsvariabeln PGDATA.\n" - -#: pg_ctl.c:1604 -#, c-format -msgid "" -"\n" -"Options for start or restart:\n" -msgstr "" -"\n" -"Flaggor f�r start eller omstart:\n" - -#: pg_ctl.c:1606 -#, c-format -msgid " -c, --core-files allow postgres to produce core files\n" -msgstr " -c, --core-files till�t postgres att skapa core-filer\n" - -#: pg_ctl.c:1608 -#, c-format -msgid " -c, --core-files not applicable on this platform\n" -msgstr " -c, --core-files inte giltigt p� denna plattform\n" - -#: pg_ctl.c:1610 -#, c-format -msgid " -l, --log FILENAME write (or append) server log to FILENAME\n" -msgstr "" -" -l, --log FILENAMN skriv (eller addera) server-loggen till FILNAMN\n" - -#: pg_ctl.c:1611 -#, c-format -msgid "" -" -o OPTIONS command line options to pass to postgres\n" -" (PostgreSQL server executable) or initdb\n" -msgstr "" -" -o FLAGGOR kommandoradsflaggor som skickas vidare till postgres\n" -" (PostgreSQL-serverns k�rbara fil) eller initdb\n" - -#: pg_ctl.c:1613 -#, c-format -msgid " -p PATH-TO-POSTGRES normally not necessary\n" -msgstr "" -" -p S�KV�G-TILL-POSTGRES\n" -" beh�vs normalt inte\n" - -#: pg_ctl.c:1614 -#, c-format -msgid "" -"\n" -"Options for stop or restart:\n" -msgstr "" -"\n" -"Flaggor f�r stopp eller omstart:\n" - -#: pg_ctl.c:1615 -#, c-format -msgid " -m SHUTDOWN-MODE can be \"smart\", \"fast\", or \"immediate\"\n" -msgstr "" -" -m ST�NGNINGSMETOD kan vara \"smart\", \"fast\", eller \"immediate\"\n" - -#: pg_ctl.c:1617 -#, c-format -msgid "" -"\n" -"Shutdown modes are:\n" -msgstr "" -"\n" -"St�ngningsmetoder �r:\n" - -#: pg_ctl.c:1618 -#, c-format -msgid " smart quit after all clients have disconnected\n" -msgstr " smart st�ng n�r alla klienter kopplat ner\n" - -#: pg_ctl.c:1619 -#, c-format -msgid " fast quit directly, with proper shutdown\n" -msgstr " fast st�ng direkt, en kontrollerad nedst�ngning\n" - -#: pg_ctl.c:1620 -#, c-format -msgid "" -" immediate quit without complete shutdown; will lead to recovery on " -"restart\n" -msgstr " immediate st�ng direkt; vid omstart kommer �terst�llning utf�ras\n" - -#: pg_ctl.c:1622 -#, c-format -msgid "" -"\n" -"Allowed signal names for kill:\n" -msgstr "" -"\n" -"Till�tna signalnamn f�r \"kill\":\n" - -#: pg_ctl.c:1626 -#, c-format -msgid "" -"\n" -"Options for register and unregister:\n" -msgstr "" -"\n" -"Flaggor f�r registrering och avregistrering:\n" - -#: pg_ctl.c:1627 -#, c-format -msgid "" -" -N SERVICENAME service name with which to register PostgreSQL server\n" -msgstr " -N TJ�NSTENAMN tj�nstnamn att registrera PostgreSQL-servern med\n" - -#: pg_ctl.c:1628 -#, c-format -msgid " -P PASSWORD password of account to register PostgreSQL server\n" -msgstr "" -" -P L�SENORD l�senord f�r kontot att registrera PostgreSQL-servern med\n" - -#: pg_ctl.c:1629 -#, c-format -msgid " -U USERNAME user name of account to register PostgreSQL server\n" -msgstr "" -" -U NAMN anv�ndarnamn p� kontot att registrera PostgreSQL-servern " -"med\n" - -#: pg_ctl.c:1632 -#, c-format -msgid "" -"\n" -"Report bugs to .\n" -msgstr "" -"\n" -"Rapportera fel till .\n" - -#: pg_ctl.c:1657 -#, c-format -msgid "%s: unrecognized shutdown mode \"%s\"\n" -msgstr "%s: ogiltigt st�ngningsmetod \"%s\"\n" - -#: pg_ctl.c:1690 -#, c-format -msgid "%s: unrecognized signal name \"%s\"\n" -msgstr "%s: ogiltigt signalnamn \"%s\"\n" - -#: pg_ctl.c:1755 -#, c-format -msgid "" -"%s: cannot be run as root\n" -"Please log in (using, e.g., \"su\") as the (unprivileged) user that will\n" -"own the server process.\n" -msgstr "" -"%s: kan inte k�ras som root\n" -"Logga in (t.ex. med \"su\") som den ickepriviligerade anv�ndare som\n" -"skall �ga serverprocessen.\n" - -#: pg_ctl.c:1864 -#, c-format -msgid "%s: too many command-line arguments (first is \"%s\")\n" -msgstr "%s: f�r m�nga kommandoradsargument (f�rsta �r \"%s\")\n" - -#: pg_ctl.c:1886 -#, c-format -msgid "%s: missing arguments for kill mode\n" -msgstr "%s: saknar argumentet till \"kill\"-l�get\n" - -#: pg_ctl.c:1904 -#, c-format -msgid "%s: unrecognized operation mode \"%s\"\n" -msgstr "%s: ogiltigt operationsl�ge \"%s\"\n" - -#: pg_ctl.c:1914 -#, c-format -msgid "%s: no operation specified\n" -msgstr "%s: ingen operation angiven\n" - -#: pg_ctl.c:1930 -#, c-format -msgid "" -"%s: no database directory specified and environment variable PGDATA unset\n" -msgstr "" -"%s: ingen databaskatalog angiven och omgivningsvariabeln PGDATA �r inte " -"satt\n" - -#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 -#, c-format -msgid "could not identify current directory: %s" -msgstr "kunde inte identifiera aktuella katalogen: %s" - -#: ../../port/exec.c:144 -#, c-format -msgid "invalid binary \"%s\"" -msgstr "ogiltig bin�r \"%s\"" - -#: ../../port/exec.c:193 -#, c-format -msgid "could not read binary \"%s\"" -msgstr "kunde inte l�sa bin�r \"%s\"" - -#: ../../port/exec.c:200 -#, c-format -msgid "could not find a \"%s\" to execute" -msgstr "kunde inte hitta en \"%s\" att k�ra" - -#: ../../port/exec.c:255 ../../port/exec.c:291 -#, c-format -msgid "could not change directory to \"%s\"" -msgstr "kunde inte byta katalog till \"%s\"" - -#: ../../port/exec.c:270 -#, c-format -msgid "could not read symbolic link \"%s\"" -msgstr "kunde inte l�sa symbolisk l�nk \"%s\"" - -#: ../../port/exec.c:516 -#, c-format -msgid "child process exited with exit code %d" -msgstr "barnprocess avslutade med kod %d" - -#: ../../port/exec.c:520 -#, c-format -msgid "child process was terminated by exception 0x%X" -msgstr "barnprocess terminerades av felkod 0x%X" - -#: ../../port/exec.c:529 -#, c-format -msgid "child process was terminated by signal %s" -msgstr "barnprocess terminerades av signal %s" - -#: ../../port/exec.c:532 -#, c-format -msgid "child process was terminated by signal %d" -msgstr "barnprocess terminerades av signal %d" - -#: ../../port/exec.c:536 -#, c-format -msgid "child process exited with unrecognized status %d" -msgstr "barnprocess avslutade med ok�nd statuskod %d" diff --git a/src/bin/pg_ctl/po/ta.po b/src/bin/pg_ctl/po/ta.po deleted file mode 100644 index 9ed378ffa1..0000000000 --- a/src/bin/pg_ctl/po/ta.po +++ /dev/null @@ -1,619 +0,0 @@ -# translation of pg_ctl.po to தமிழ் -# This file is put in the public domain. -# -# ஆமாச்சு , 2007. -# ஸ்ரீராமதாஸ் , 2007. -msgid "" -msgstr "" -"Project-Id-Version: pg_ctl\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-09-22 03:19-0300\n" -"PO-Revision-Date: 2007-11-01 12:53+0530\n" -"Last-Translator: ஸ்ரீராமதாஸ் \n" -"Language-Team: தமிழ் \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" -"X-Poedit-Language: Tamil\n" -"X-Poedit-Country: ITALY\n" -"X-Poedit-SourceCharset: utf-8\n" - -#: pg_ctl.c:231 -#: pg_ctl.c:246 -#: pg_ctl.c:1716 -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: நினைவுக்கு அப்பால்\n" - -#: pg_ctl.c:280 -#, c-format -msgid "%s: could not open PID file \"%s\": %s\n" -msgstr "%s: PID கோப்பினைத் திறக்க இயலவில்லை \"%s\": %s\n" - -#: pg_ctl.c:287 -#, c-format -msgid "%s: invalid data in PID file \"%s\"\n" -msgstr "%s: PID கோப்பிலுள்ளத் தரவு பொருத்தமற்றது \"%s\"\n" - -#: pg_ctl.c:538 -#, c-format -msgid "%s: cannot set core size, disallowed by hard limit.\n" -msgstr "%s: மைய அளவினை அமைக்க இயலவில்லை, வலிய வரையறையால் அனுமதிக்க முடியவில்லை.\n" - -#: pg_ctl.c:568 -#, c-format -msgid "%s: could not read file \"%s\"\n" -msgstr "%s: கோப்பினை வாசிக்க இயலவில்லை \"%s\"\n" - -#: pg_ctl.c:574 -#, c-format -msgid "%s: option file \"%s\" must have exactly one line\n" -msgstr "%s: தேர்வுகள் கோப்பு \"%s\" கட்டாயம் ஒரு வரி மாத்திரமே கொண்டிருக்க வேண்டும்\n" - -#: pg_ctl.c:617 -#, c-format -msgid "%s: another server might be running; trying to start server anyway\n" -msgstr "%s: மற்றொரு வழங்கி இயங்கிக் கொண்டிருக்கலாம்; ஆயினும் வழங்கியினைத் துவக்க முயந்சி மேற்கொள்ளப் படுகிறது\n" - -#: pg_ctl.c:644 -#, c-format -msgid "" -"The program \"postgres\" is needed by %s but was not found in the\n" -"same directory as \"%s\".\n" -"Check your installation.\n" -msgstr "" -"%s க்கு \"postgres\" நிரல் அவசியம் தேவைப் படுகிறது ஆயினும் \"%s\" அடைவினுள் \n" -" அது கிடைக்கவில்லை .\n" -"தங்களின் நிறுவலைச் சரி பாார்க்கவும்.\n" - -#: pg_ctl.c:650 -#, c-format -msgid "" -"The program \"postgres\" was found by \"%s\"\n" -"but was not the same version as %s.\n" -"Check your installation.\n" -msgstr "" -"\"%s\" ஆல் \"postgres\" நிரல் கண்டெடுக்கப் பட்டது \n" -"ஆனால் %s னை ஒத்த வெளியீடு அல்ல.\n" -"தங்களின் நிறுவலைச் சரி பார்க்கவும்.\n" - -#: pg_ctl.c:667 -#, c-format -msgid "%s: could not start server: exit code was %d\n" -msgstr "%s: வழங்கியினைத் துவக்க இயலவில்லை: வெளியேற்றக் குறியீடு %d\n" - -#: pg_ctl.c:678 -#, c-format -msgid "" -"%s: could not start server\n" -"Examine the log output.\n" -msgstr "" -"%s: வழங்கியினை துவங்க இயலவில்லை\n" -"பதிவின் வெளியீட்டை ஆராயவும்.\n" - -#: pg_ctl.c:687 -msgid "waiting for server to start..." -msgstr "வழங்கியின் துவக்கத்திற்காகக் காத்திருக்கப்படுகிறது..." - -#: pg_ctl.c:691 -#, c-format -msgid "could not start server\n" -msgstr "வழங்கியினைத் துவங்க இயலவில்லை\n" - -#: pg_ctl.c:696 -#: pg_ctl.c:762 -#: pg_ctl.c:835 -msgid " done\n" -msgstr " முடிந்தது\n" - -#: pg_ctl.c:697 -msgid "server started\n" -msgstr "வழங்கி துவங்கியது\n" - -#: pg_ctl.c:701 -msgid "server starting\n" -msgstr "வழங்கி துவங்கப் படுகிறது\n" - -#: pg_ctl.c:715 -#: pg_ctl.c:783 -#: pg_ctl.c:857 -#, c-format -msgid "%s: PID file \"%s\" does not exist\n" -msgstr "%s: PID கோப்பு \"%s\" இல்லை\n" - -#: pg_ctl.c:716 -#: pg_ctl.c:785 -#: pg_ctl.c:858 -msgid "Is server running?\n" -msgstr "வழங்கி பணி புரிகிறதா?\n" - -#: pg_ctl.c:722 -#, c-format -msgid "%s: cannot stop server; single-user server is running (PID: %ld)\n" -msgstr "%s: வழங்கியினை நிறுத்த இயலவில்லை; தனிப் பயனருக்கான வழங்கி இயங்குகிறது (PID: %ld)\n" - -#: pg_ctl.c:730 -#: pg_ctl.c:807 -#, c-format -msgid "%s: could not send stop signal (PID: %ld): %s\n" -msgstr "%s: நிறுத்துவதற்கான சமிக்ஞையை அனுப்ப இயலவில்லை (PID: %ld): %s\n" - -#: pg_ctl.c:737 -msgid "server shutting down\n" -msgstr "வழங்கி நிறுத்தப் படுகிறது\n" - -#: pg_ctl.c:742 -#: pg_ctl.c:812 -msgid "waiting for server to shut down..." -msgstr "வழங்கி நிற்கும் பொருட்டு காத்திருக்கப் படுகிறது..." - -#: pg_ctl.c:757 -#: pg_ctl.c:829 -msgid " failed\n" -msgstr " தவறியது\n" - -#: pg_ctl.c:759 -#: pg_ctl.c:831 -#, c-format -msgid "%s: server does not shut down\n" -msgstr "%s: வழங்கி நிற்க வில்லை\n" - -#: pg_ctl.c:764 -#: pg_ctl.c:836 -#, c-format -msgid "server stopped\n" -msgstr "வழங்கி நின்றது\n" - -#: pg_ctl.c:786 -#: pg_ctl.c:842 -msgid "starting server anyway\n" -msgstr "எவ்வழியானும் வழங்கித் துவங்கப் படுகிறது\n" - -#: pg_ctl.c:795 -#, c-format -msgid "%s: cannot restart server; single-user server is running (PID: %ld)\n" -msgstr "%s: வழங்கியை மீளத் துவங்க இயலவில்லை; தனிப் பயனருக்கான வழங்கி இயங்குகிறது (PID: %ld)\n" - -#: pg_ctl.c:798 -#: pg_ctl.c:867 -msgid "Please terminate the single-user server and try again.\n" -msgstr "தனிப் பயனருக்கான வழங்கியினை நிறுத்திவிட்டு மீண்டும் முயற்சிக்கவும்.\n" - -#: pg_ctl.c:840 -#, c-format -msgid "%s: old server process (PID: %ld) seems to be gone\n" -msgstr "%s: வழங்கியின் பழைய செயல் (PID: %ld) பூர்த்தியானது போலத்தெரிகிறது\n" - -#: pg_ctl.c:864 -#, c-format -msgid "%s: cannot reload server; single-user server is running (PID: %ld)\n" -msgstr "%s: வழங்கியை மீளத் துவங்க இயலவில்லை; தனிப் பயனருக்கான வழங்கி இயங்கிக் கொண்டிருக்கிறது(PID: %ld)\n" - -#: pg_ctl.c:873 -#, c-format -msgid "%s: could not send reload signal (PID: %ld): %s\n" -msgstr "%s: மீளேற்ற சமிக்ஞையைத் அனுப்ப இயலவில்லை (PID: %ld): %s\n" - -#: pg_ctl.c:878 -msgid "server signaled\n" -msgstr "வழங்கிக்கு சமிக்ஞைத் தரப் பட்டது\n" - -#: pg_ctl.c:922 -#, c-format -msgid "%s: single-user server is running (PID: %ld)\n" -msgstr "%s: தனிப்பயனருக்கான வழங்கி இயங்கிக் கொண்டிருக்கிறது (PID: %ld)\n" - -#: pg_ctl.c:934 -#, c-format -msgid "%s: server is running (PID: %ld)\n" -msgstr "%s: வழங்கி இயங்கிக்கொண்டிருக்கிறது (PID: %ld)\n" - -#: pg_ctl.c:945 -#, c-format -msgid "%s: no server running\n" -msgstr "%s: எந்த வழங்கியும் இயங்கவில்லை\n" - -#: pg_ctl.c:956 -#, c-format -msgid "%s: could not send signal %d (PID: %ld): %s\n" -msgstr "%s: சமிக்ஞையினை அனுப்ப இயலவில்லை %d (PID: %ld): %s\n" - -#: pg_ctl.c:990 -#, c-format -msgid "%s: could not find own program executable\n" -msgstr "%s: could not find own program executable\n" - -#: pg_ctl.c:999 -#, c-format -msgid "%s: could not find postgres program executable\n" -msgstr "%s: இயக்க வல்ல போஸ்ட்கிரெஸ் நிரல் கிடைக்கவில்லை\n" - -#: pg_ctl.c:1053 -#: pg_ctl.c:1085 -#, c-format -msgid "%s: could not open service manager\n" -msgstr "%s: சேவை மேளாலரைத் திறக்க இயலவில்லை\n" - -#: pg_ctl.c:1059 -#, c-format -msgid "%s: service \"%s\" already registered\n" -msgstr "%s: சேவை \"%s\" ஏறகனவே பதிவுச் செய்யப் பட்டுள்ளது\n" - -#: pg_ctl.c:1070 -#, c-format -msgid "%s: could not register service \"%s\": error code %d\n" -msgstr "%s: \"%s\" சேவையைப் பதிவுச் செய்ய இயலவில்லை. வழுக் குறி %d\n" - -#: pg_ctl.c:1091 -#, c-format -msgid "%s: service \"%s\" not registered\n" -msgstr "%s: \"%s\" சேவைப் பதிவுச் செய்யப் படவில்லை\n" - -#: pg_ctl.c:1098 -#, c-format -msgid "%s: could not open service \"%s\": error code %d\n" -msgstr "%s: \"%s\": சேவையைத் துவக்க இயலவில்லை. வழு குறி %d\n" - -#: pg_ctl.c:1105 -#, c-format -msgid "%s: could not unregister service \"%s\": error code %d\n" -msgstr "%s: சேவையைத் திரும்பப் பெற இயலவில்லை \"%s\": பிழை குறி %d\n" - -#: pg_ctl.c:1191 -msgid "Waiting for server startup...\n" -msgstr "வழங்கித் துவங்குவதற்காகக் காத்திருக்கப் படுகிறது...\n" - -#: pg_ctl.c:1194 -msgid "Timed out waiting for server startup\n" -msgstr "வழங்கி துவங்கக் காத்திருந்து காலாவதியானது\n" - -#: pg_ctl.c:1198 -msgid "Server started and accepting connections\n" -msgstr "வழங்கித் துவங்கிற்று இணைப்புக்களைப் பெற்றுக் கொண்டிருக்கிறது\n" - -#: pg_ctl.c:1245 -#, c-format -msgid "%s: could not start service \"%s\": error code %d\n" -msgstr "%s: \"%s\": சேவையைத் துவக்க இயலவில்லை பிழை குறி %d\n" - -#: pg_ctl.c:1457 -#, c-format -msgid "Try \"%s --help\" for more information.\n" -msgstr "மேலும் தகவலறிய \"%s --help\" முயற்சி செய்யவும்.\n" - -#: pg_ctl.c:1465 -#, c-format -msgid "" -"%s is a utility to start, stop, restart, reload configuration files,\n" -"report the status of a PostgreSQL server, or signal a PostgreSQL process.\n" -"\n" -msgstr "" -"%s வடிவமைப்புக் கோப்புகளை துவக்க, நிறுத்த, மீளத்துவங்க, மீளேற்றுவதற்கானப் பயனபாடு\n" -"போஸ்ட்கிரெஸ் வழங்கியொன்றின் நிலையினை அறியப் படுத்தவும் அல்லது போஸ்டகிரெஸ் பணியொன்றுக்கு சமிக்ஞைத் தரவும்.\n" -"\n" - -#: pg_ctl.c:1467 -#, c-format -msgid "Usage:\n" -msgstr "பயன்பாடு:\n" - -#: pg_ctl.c:1468 -#, c-format -msgid " %s start [-w] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]\n" -msgstr " %s துவக்குக [-w] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]\n" - -#: pg_ctl.c:1469 -#, c-format -msgid " %s stop [-W] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" -msgstr " %s நிறுத்துக [-W] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" - -#: pg_ctl.c:1470 -#, c-format -msgid " %s restart [-w] [-D DATADIR] [-s] [-m SHUTDOWN-MODE] [-o \"OPTIONS\"]\n" -msgstr " %s மீளத்துவக்கு [-w] [-D DATADIR] [-s] [-m SHUTDOWN-MODE] [-o \"OPTIONS\"]\n" - -#: pg_ctl.c:1471 -#, c-format -msgid " %s reload [-D DATADIR] [-s]\n" -msgstr " %s மீளேற்றுக [-D DATADIR] [-s]\n" - -#: pg_ctl.c:1472 -#, c-format -msgid " %s status [-D DATADIR]\n" -msgstr " %s மீளேற்றுக [-D DATADIR]\n" - -#: pg_ctl.c:1473 -#, c-format -msgid " %s kill SIGNALNAME PID\n" -msgstr " %s கொல்க SIGNALNAME PID\n" - -#: pg_ctl.c:1475 -#, c-format -msgid "" -" %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" -" [-w] [-o \"OPTIONS\"]\n" -msgstr "" -" %s பதிவுசெய்க [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" -" [-w] [-o \"OPTIONS\"]\n" - -#: pg_ctl.c:1477 -#, c-format -msgid " %s unregister [-N SERVICENAME]\n" -msgstr " %s பதிவைத் திரும்பப் பெறுக [-N SERVICENAME]\n" - -#: pg_ctl.c:1480 -#, c-format -msgid "" -"\n" -"Common options:\n" -msgstr "" -"\n" -"பொதுவானத் தேர்வுகள்:\n" - -#: pg_ctl.c:1481 -#, c-format -msgid " -D, --pgdata DATADIR location of the database storage area\n" -msgstr " -D, --pgdata DATADIR தரவுக் களன் காக்கப்படும் இடம்\n" - -#: pg_ctl.c:1482 -#, c-format -msgid " -s, --silent only print errors, no informational messages\n" -msgstr " -s, --silent அச்சுசார் பிழைகள் மாத்திரம், தகவல் குறிப்புகள் அல்ல\n" - -#: pg_ctl.c:1483 -#, c-format -msgid " -w wait until operation completes\n" -msgstr " -w செயல் பூரத்தியாகும் வரைக் காத்திரு\n" - -#: pg_ctl.c:1484 -#, c-format -msgid " -W do not wait until operation completes\n" -msgstr " -w செயல் பூரத்தியாகும் வரைக் காத்திருக்காதே\n" - -#: pg_ctl.c:1485 -#, c-format -msgid " --help show this help, then exit\n" -msgstr " --help இவ்வுதவியினைக் காட்டிவிட்டு வெளிவருக\n" - -#: pg_ctl.c:1486 -#, c-format -msgid " --version output version information, then exit\n" -msgstr " --version வெளியீட்டுத் தகவலை வெளியிட்டுவிட்டு வெளிவருக\n" - -#: pg_ctl.c:1487 -#, c-format -msgid "" -"(The default is to wait for shutdown, but not for start or restart.)\n" -"\n" -msgstr "" -"(இயல்பிருப்பு நிறுத்துவதற்காகக் காத்திருப்பது. துவக்க அல்லது மீளத்துவங்க அல்ல)\n" -"\n" - -#: pg_ctl.c:1488 -#, c-format -msgid "If the -D option is omitted, the environment variable PGDATA is used.\n" -msgstr "-D தேர்வினை விட்டுவிட்டால், சூழல் மாறி PGDATA பயன்படுத்தப்படும்.\n" - -#: pg_ctl.c:1490 -#, c-format -msgid "" -"\n" -"Options for start or restart:\n" -msgstr "" -"\n" -"துவங்க அல்லது மீளத் துவங்குவதற்கான தேர்வுகள்:\n" - -#: pg_ctl.c:1491 -#, c-format -msgid " -l, --log FILENAME write (or append) server log to FILENAME\n" -msgstr " -l, --log FILENAME FILENAME ற்கு வழங்கியின் பதிவினை இயற்றவும் (அல்லது சேர்க்கவும்)\n" - -#: pg_ctl.c:1492 -#, c-format -msgid "" -" -o OPTIONS command line options to pass to postgres\n" -" (PostgreSQL server executable)\n" -msgstr "" -" -o OPTIONS போஸ்டகிரெஸுக்கு அனுப்ப உகந்த முனைய தேர்வுகள்\n" -" (வழங்கியில் இயக்க வல்ல)\n" - -#: pg_ctl.c:1494 -#, c-format -msgid " -p PATH-TO-POSTGRES normally not necessary\n" -msgstr " -p PATH-TO-POSTGRES சாதாரணமாகத் தேவையில்லை\n" - -#: pg_ctl.c:1496 -#, c-format -msgid " -c, --core-files allow postgres to produce core files\n" -msgstr " -c, --core-files மூலக் கோப்புகளை உருவாக்க போஸ்டகிரெஸ்ஸினை அனுமதிக்கவும்\n" - -#: pg_ctl.c:1498 -#, c-format -msgid " -c, --core-files not applicable on this platform\n" -msgstr " -c, --core-files இக்கட்டமைப்புக்கு ஒவ்வாத\n" - -#: pg_ctl.c:1500 -#, c-format -msgid "" -"\n" -"Options for stop or restart:\n" -msgstr "" -"\n" -"துவக்க மீளத்துவக்குவதற்கான தேர்வுகள்:\n" - -#: pg_ctl.c:1501 -#, c-format -msgid " -m SHUTDOWN-MODE can be \"smart\", \"fast\", or \"immediate\"\n" -msgstr " -m SHUTDOWN-MODE \"விவேகமாக\", \"வேகமாக\", அல்லது \"உடனடியாக\" இருக்கலாம்\n" - -#: pg_ctl.c:1503 -#, c-format -msgid "" -"\n" -"Shutdown modes are:\n" -msgstr "" -"\n" -"நிறுத்தும் முறைகளாவன:\n" - -#: pg_ctl.c:1504 -#, c-format -msgid " smart quit after all clients have disconnected\n" -msgstr " விவேக வெளிவரவு. அனைத்து வாங்கிகளும் தொடர்பறிந்த பிறகு.\n" - -#: pg_ctl.c:1505 -#, c-format -msgid " fast quit directly, with proper shutdown\n" -msgstr " வேக வெளிவரவு, முறையான நிறுத்தத் துடன்\n" - -#: pg_ctl.c:1506 -#, c-format -msgid " immediate quit without complete shutdown; will lead to recovery on restart\n" -msgstr " உடனடி வெளிவரவு முழுமையான நிறுத்தமில்லாது; மீளத்துவங்கும் போது மீட்பதறகான முயற்சி மேற்கொள்ளப்படும்\n" - -#: pg_ctl.c:1508 -#, c-format -msgid "" -"\n" -"Allowed signal names for kill:\n" -msgstr "" -"\n" -"முடிப்பதற்கு அனுமதிக்கப்படும் சமிக்ஞை பெயர்கள்:\n" - -#: pg_ctl.c:1512 -#, c-format -msgid "" -"\n" -"Options for register and unregister:\n" -msgstr "" -"\n" -"பதிவு செய்ய மற்றும் விலகுவதற்கான தேர்வுகள்:\n" - -#: pg_ctl.c:1513 -#, c-format -msgid " -N SERVICENAME service name with which to register PostgreSQL server\n" -msgstr " -N SERVICENAME போஸ்ட்கிரெஸ் வழங்கியினை பதிவு செய்வதற்கானச் சேவைப் பெயர்\n" - -#: pg_ctl.c:1514 -#, c-format -msgid " -P PASSWORD password of account to register PostgreSQL server\n" -msgstr " -P PASSWORD போஸ்ட்கிரெஸ் வழங்கியினை பதிவு செய்வதற்கான கணக்கின் கடவுச் சொல்\n" - -#: pg_ctl.c:1515 -#, c-format -msgid " -U USERNAME user name of account to register PostgreSQL server\n" -msgstr " -U USERNAME போஸ்ட்கிரெஸ் வழங்கியினை பதிவு செய்வதற்கான கணக்கின் பயனர் பெயர்\n" - -#: pg_ctl.c:1518 -#, c-format -msgid "" -"\n" -"Report bugs to .\n" -msgstr "" -"\n" -"வழுக்களை க்குத் தெரியப் படுத்தவும்.\n" - -#: pg_ctl.c:1543 -#, c-format -msgid "%s: unrecognized shutdown mode \"%s\"\n" -msgstr "%s: இனங்கண்டுகொள்ள இயலாத நிறுத்தற் முறை \"%s\"\n" - -#: pg_ctl.c:1576 -#, c-format -msgid "%s: unrecognized signal name \"%s\"\n" -msgstr "%s: இனங்கண்டுகொள்ள இயலாத சமிக்ஞை பெயர் \"%s\"\n" - -#: pg_ctl.c:1640 -#, c-format -msgid "" -"%s: cannot be run as root\n" -"Please log in (using, e.g., \"su\") as the (unprivileged) user that will\n" -"own the server process.\n" -msgstr "" -"%s: முதன்மைப் பயனராக இயக்க இயலாது\n" -" வழங்கியின் பணிகளுக்கு உரிமையுள்ள (சலுகையற்ற) பயனராக (உ.ம்., \"su\")\n" -"நுழையவும்.\n" - -#: pg_ctl.c:1746 -#, c-format -msgid "%s: too many command-line arguments (first is \"%s\")\n" -msgstr "%s: ஏகப் பட்ட முனையத் துப்புகள் (முதலாவது \"%s\")\n" - -#: pg_ctl.c:1765 -#, c-format -msgid "%s: missing arguments for kill mode\n" -msgstr "%s: முடி முறைக்கானத் துப்புகள் இல்லை\n" - -#: pg_ctl.c:1783 -#, c-format -msgid "%s: unrecognized operation mode \"%s\"\n" -msgstr "%s: இனங்காண இயலாத செயல் முறை \"%s\"\n" - -#: pg_ctl.c:1793 -#, c-format -msgid "%s: no operation specified\n" -msgstr "%s: செயலெதுவும் குறிப்பிடப் படவில்லை\n" - -#: pg_ctl.c:1809 -#, c-format -msgid "%s: no database directory specified and environment variable PGDATA unset\n" -msgstr "%s: அமைவகற்று PGDATA சூழல் மாறியில் தரவுக் கள அடைவுக் குறிப்பிடப் படவில்லை\n" - -#: ../../port/exec.c:192 -#: ../../port/exec.c:306 -#: ../../port/exec.c:349 -#, c-format -msgid "could not identify current directory: %s" -msgstr "தற்போதைய அடைவினைக் இனங்கான இயலவில்லை: %s" - -#: ../../port/exec.c:211 -#, c-format -msgid "invalid binary \"%s\"" -msgstr "செல்லாத இருமம் \"%s\"" - -#: ../../port/exec.c:260 -#, c-format -msgid "could not read binary \"%s\"" -msgstr "இருமத்தினை வாசிக்க இயலவில்லை \"%s\"" - -#: ../../port/exec.c:267 -#, c-format -msgid "could not find a \"%s\" to execute" -msgstr "இயக்கும்பொருட்டு \"%s\" னைக் கண்டெடுக்க இயலவில்லை" - -#: ../../port/exec.c:322 -#: ../../port/exec.c:358 -#, c-format -msgid "could not change directory to \"%s\"" -msgstr "அடைவினை \"%s\" க்கு மாற்ற இயலவில்லை" - -#: ../../port/exec.c:337 -#, c-format -msgid "could not read symbolic link \"%s\"" -msgstr "மாதிரி இணைப்பினை வாசிக்க இயலவில்லை \"%s\"" - -#: ../../port/exec.c:583 -#, c-format -msgid "child process exited with exit code %d" -msgstr "சேய் பணி வெளிவரவுக் குறி %d யுடன் வெளுவந்தது" - -#: ../../port/exec.c:587 -#, c-format -msgid "child process was terminated by exception 0x%X" -msgstr "சேய் பணி விதிவிவக்கு 0x%X ஆல் தடைப்பட்டது" - -#: ../../port/exec.c:596 -#, c-format -msgid "child process was terminated by signal %s" -msgstr "சேய் பணி %s சமிக்ஞையால் தடைப்பட்டது" - -#: ../../port/exec.c:599 -#, c-format -msgid "child process was terminated by signal %d" -msgstr "சேய் பணி %d சமிக்ஞையால் தடைப்பட்டது" - -#: ../../port/exec.c:603 -#, c-format -msgid "child process exited with unrecognized status %d" -msgstr "சேய் பணி இனந்தெரியா %d நிலையால் தடைப்பட்டது" - diff --git a/src/bin/pg_ctl/po/tr.po b/src/bin/pg_ctl/po/tr.po index 74343c3712..ba167e3925 100644 --- a/src/bin/pg_ctl/po/tr.po +++ b/src/bin/pg_ctl/po/tr.po @@ -5,10 +5,11 @@ msgid "" msgstr "" "Project-Id-Version: pg_ctl-tr\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-08-31 20:08+0000\n" -"PO-Revision-Date: 2010-09-01 11:15+0200\n" +"POT-Creation-Date: 2011-08-30 22:40+0000\n" +"PO-Revision-Date: 2011-08-31 13:26+0200\n" "Last-Translator: Devrim GÜNDÜZ \n" "Language-Team: Turkish \n" +"Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -16,39 +17,60 @@ msgstr "" "X-Poedit-Language: Turkish\n" "X-Poedit-Country: TURKEY\n" -#: pg_ctl.c:225 -#: pg_ctl.c:240 -#: pg_ctl.c:1834 +#: pg_ctl.c:237 +#: pg_ctl.c:252 +#: pg_ctl.c:2035 #, c-format msgid "%s: out of memory\n" msgstr "%s: yetersiz bellek\n" -#: pg_ctl.c:274 +#: pg_ctl.c:286 #, c-format msgid "%s: could not open PID file \"%s\": %s\n" msgstr "%s: \"%s\" PID dosyası açılamadı: %s\n" -#: pg_ctl.c:281 +#: pg_ctl.c:293 #, c-format msgid "%s: invalid data in PID file \"%s\"\n" msgstr "%s: \"%s\" PID dosyasında geçersiz veri\n" -#: pg_ctl.c:557 +#: pg_ctl.c:470 +#, c-format +msgid "" +"\n" +"%s: -w option is not supported when starting a pre-9.1 server\n" +msgstr "" + +#: pg_ctl.c:540 +#, c-format +msgid "" +"\n" +"%s: -w option cannot use a relative socket directory specification\n" +msgstr "" + +#: pg_ctl.c:588 +#, c-format +msgid "" +"\n" +"%s: this data directory appears to be running a pre-existing postmaster\n" +msgstr "" + +#: pg_ctl.c:638 #, c-format msgid "%s: cannot set core file size limit; disallowed by hard limit\n" msgstr "%s: core boyutu ayarlanamadı; hard limit tarafından sınırlanmış.\n" -#: pg_ctl.c:582 +#: pg_ctl.c:663 #, c-format msgid "%s: could not read file \"%s\"\n" msgstr "%s: \"%s\" dosyası okunamadı\n" -#: pg_ctl.c:587 +#: pg_ctl.c:668 #, c-format msgid "%s: option file \"%s\" must have exactly one line\n" msgstr "%s: \"%s\" seçenek dosyası sadece 1 satır olmalıdır\n" -#: pg_ctl.c:635 +#: pg_ctl.c:716 #, c-format msgid "" "The program \"%s\" is needed by %s but was not found in the\n" @@ -59,7 +81,7 @@ msgstr "" "\"%s\" ile aynı dizinde bulunamadı.\n" "Kurulumunuzu kontrol ediniz.\n" -#: pg_ctl.c:641 +#: pg_ctl.c:722 #, c-format msgid "" "The program \"%s\" was found by \"%s\"\n" @@ -70,23 +92,45 @@ msgstr "" "bulundu ancak %s ile aynı sürüm numarasına sahip değil.\n" "Kurulumunuzu kontrol ediniz.\n" -#: pg_ctl.c:674 +#: pg_ctl.c:755 #, c-format msgid "%s: database system initialization failed\n" msgstr "%s: veritabanı ilklendirme başarısız oldu\n" -#: pg_ctl.c:690 +#: pg_ctl.c:770 #, c-format msgid "%s: another server might be running; trying to start server anyway\n" msgstr "%s: başka bir sunucu çalışıyor olabilir; yine de başlatmaya çalışılıyor.\n" -#: pg_ctl.c:727 +#: pg_ctl.c:807 #, c-format msgid "%s: could not start server: exit code was %d\n" msgstr "%s: sunucu başlatılamadı: çıkış kodu: %d\n" -#: pg_ctl.c:738 -#: pg_ctl.c:751 +#: pg_ctl.c:814 +msgid "waiting for server to start..." +msgstr "sunucunun başlaması bekleniyor..." + +#: pg_ctl.c:819 +#: pg_ctl.c:920 +#: pg_ctl.c:1011 +msgid " done\n" +msgstr " tamam\n" + +#: pg_ctl.c:820 +msgid "server started\n" +msgstr "sunucu başlatıldı\n" + +#: pg_ctl.c:823 +#: pg_ctl.c:827 +msgid " stopped waiting\n" +msgstr "bekleme durduruldu\n" + +#: pg_ctl.c:824 +msgid "server is still starting up\n" +msgstr "sunucu hala başlıyor\n" + +#: pg_ctl.c:828 #, c-format msgid "" "%s: could not start server\n" @@ -95,54 +139,53 @@ msgstr "" "%s: sunucu başlatılamadı\n" "Kayıt dosyasını inceleyiniz\n" -#: pg_ctl.c:747 -msgid "waiting for server to start..." -msgstr "sunucunun başlaması bekleniyor..." - -#: pg_ctl.c:758 -#: pg_ctl.c:831 -#: pg_ctl.c:911 -msgid " done\n" -msgstr " tamam\n" +#: pg_ctl.c:834 +#: pg_ctl.c:912 +#: pg_ctl.c:1002 +msgid " failed\n" +msgstr " başarısız oldu\n" -#: pg_ctl.c:759 -msgid "server started\n" -msgstr "sunucu başlatıldı\n" +#: pg_ctl.c:835 +#, fuzzy, c-format +msgid "%s: could not wait for server because of misconfiguration\n" +msgstr "geçersiz ayarlarından dolayı autovacuum çalıştırılamadı" -#: pg_ctl.c:763 +#: pg_ctl.c:841 msgid "server starting\n" msgstr "sunucu başlıyor\n" -#: pg_ctl.c:778 -#: pg_ctl.c:853 -#: pg_ctl.c:933 +#: pg_ctl.c:856 +#: pg_ctl.c:942 +#: pg_ctl.c:1032 +#: pg_ctl.c:1072 #, c-format msgid "%s: PID file \"%s\" does not exist\n" msgstr "%s: \"%s\" PID dosyası bulunamadı\n" -#: pg_ctl.c:779 -#: pg_ctl.c:855 -#: pg_ctl.c:934 +#: pg_ctl.c:857 +#: pg_ctl.c:944 +#: pg_ctl.c:1033 +#: pg_ctl.c:1073 msgid "Is server running?\n" msgstr "sunucu çalışıyor mu?\n" -#: pg_ctl.c:785 +#: pg_ctl.c:863 #, c-format msgid "%s: cannot stop server; single-user server is running (PID: %ld)\n" msgstr "%s: sunucu durdurulamadı; tek kullanıcılı sunucu çalışıyor (PID: %ld)\n" -#: pg_ctl.c:793 -#: pg_ctl.c:877 +#: pg_ctl.c:871 +#: pg_ctl.c:966 #, c-format msgid "%s: could not send stop signal (PID: %ld): %s\n" msgstr "%s:durdurma sinyali başarısız oldu (PID: %ld): %s\n" -#: pg_ctl.c:800 +#: pg_ctl.c:878 msgid "server shutting down\n" msgstr "sunucu kapatılıyor\n" -#: pg_ctl.c:807 -#: pg_ctl.c:884 +#: pg_ctl.c:893 +#: pg_ctl.c:981 msgid "" "WARNING: online backup mode is active\n" "Shutdown will not complete until pg_stop_backup() is called.\n" @@ -152,212 +195,277 @@ msgstr "" "pg_stop_backup() çalıştırılmadam sunucu kapatılmayacaktır.\n" "\n" -#: pg_ctl.c:811 -#: pg_ctl.c:888 +#: pg_ctl.c:897 +#: pg_ctl.c:985 msgid "waiting for server to shut down..." msgstr "sunucunun kapanması bekleniyor..." -#: pg_ctl.c:826 -#: pg_ctl.c:905 -msgid " failed\n" -msgstr " başarısız oldu\n" - -#: pg_ctl.c:828 -#: pg_ctl.c:907 +#: pg_ctl.c:914 +#: pg_ctl.c:1004 #, c-format msgid "%s: server does not shut down\n" msgstr "%s: sunucu kapanmıyor\n" -#: pg_ctl.c:833 -#: pg_ctl.c:912 +#: pg_ctl.c:916 +#: pg_ctl.c:1006 +msgid "" +"HINT: The \"-m fast\" option immediately disconnects sessions rather than\n" +"waiting for session-initiated disconnection.\n" +msgstr "" +"İPUCU: \"-m fast\" seçeneği oturumların kendilerinin bitmesini beklemektense\n" +"oturumları aniden keser.\n" + +#: pg_ctl.c:922 +#: pg_ctl.c:1012 msgid "server stopped\n" msgstr "sunucu durduruldu\n" -#: pg_ctl.c:856 -#: pg_ctl.c:918 +#: pg_ctl.c:945 +#: pg_ctl.c:1018 msgid "starting server anyway\n" msgstr "sunucu yine de başlatılıyor\n" -#: pg_ctl.c:865 +#: pg_ctl.c:954 #, c-format msgid "%s: cannot restart server; single-user server is running (PID: %ld)\n" msgstr "%s: sunucu başlatılamadı; tek kullanıcılı sunucu çalışıyor (PID: %ld)\n" -#: pg_ctl.c:868 -#: pg_ctl.c:943 +#: pg_ctl.c:957 +#: pg_ctl.c:1042 msgid "Please terminate the single-user server and try again.\n" msgstr "Lütfen tek kullanıcılı sunucuyu durdurun ve yeniden deneyin.\n" -#: pg_ctl.c:916 +#: pg_ctl.c:1016 #, c-format msgid "%s: old server process (PID: %ld) seems to be gone\n" msgstr "%s: eski sunucu süreci (PID: %ld) kaybolmuştur\n" -#: pg_ctl.c:940 +#: pg_ctl.c:1039 #, c-format msgid "%s: cannot reload server; single-user server is running (PID: %ld)\n" msgstr "%s: sunucu yeniden yüklenemedi, tek kullanıcılı sunucu çalışıyor (PID: %ld)\n" -#: pg_ctl.c:949 +#: pg_ctl.c:1048 #, c-format msgid "%s: could not send reload signal (PID: %ld): %s\n" msgstr "%s: yeniden yükleme sinyali gönderilemedi (PID: %ld): %s\n" -#: pg_ctl.c:954 +#: pg_ctl.c:1053 msgid "server signaled\n" msgstr "sunucuya sinyal gönderildi\n" -#: pg_ctl.c:998 +#: pg_ctl.c:1079 +#, fuzzy, c-format +msgid "%s: cannot promote server; single-user server is running (PID: %ld)\n" +msgstr "%s: sunucu yeniden yüklenemedi, tek kullanıcılı sunucu çalışıyor (PID: %ld)\n" + +#: pg_ctl.c:1088 +#, fuzzy, c-format +msgid "%s: cannot promote server; server is not in standby mode\n" +msgstr "%s: sunucu yeniden yüklenemedi, tek kullanıcılı sunucu çalışıyor (PID: %ld)\n" + +#: pg_ctl.c:1096 +#, fuzzy, c-format +msgid "%s: could not create promote signal file \"%s\": %s\n" +msgstr "%s: \"%s\" sıkıştırılmış dosyası yaratılamadı: %s\n" + +#: pg_ctl.c:1102 +#, fuzzy, c-format +msgid "%s: could not write promote signal file \"%s\": %s\n" +msgstr "%s: \"%s\":dosyasına yazılamadı: %s\n" + +#: pg_ctl.c:1110 +#, fuzzy, c-format +msgid "%s: could not send promote signal (PID: %ld): %s\n" +msgstr "%s: yeniden yükleme sinyali gönderilemedi (PID: %ld): %s\n" + +#: pg_ctl.c:1113 +#, fuzzy, c-format +msgid "%s: could not remove promote signal file \"%s\": %s\n" +msgstr "%s: \"%s\" dosyası açılamadı: %s\n" + +#: pg_ctl.c:1118 +#, fuzzy +msgid "server promoting\n" +msgstr "sunucu başlıyor\n" + +#: pg_ctl.c:1163 #, c-format msgid "%s: single-user server is running (PID: %ld)\n" msgstr "%s: sunucu, tek kullanıcı biçiminde çalışıyor (PID: %ld)\n" -#: pg_ctl.c:1010 +#: pg_ctl.c:1175 #, c-format msgid "%s: server is running (PID: %ld)\n" msgstr "%s: sunucu çalışıyor (PID: %ld)\n" -#: pg_ctl.c:1021 +#: pg_ctl.c:1186 #, c-format msgid "%s: no server running\n" msgstr "%s: çalışan sunucu yok\n" -#: pg_ctl.c:1032 +#: pg_ctl.c:1197 #, c-format msgid "%s: could not send signal %d (PID: %ld): %s\n" msgstr "%s: %d reload sinyali gönderilemedi (PID: %ld): %s\n" -#: pg_ctl.c:1066 +#: pg_ctl.c:1231 #, c-format msgid "%s: could not find own program executable\n" msgstr "%s:Çalıştırılabilir dosya bulunamadı\n" -#: pg_ctl.c:1076 +#: pg_ctl.c:1241 #, c-format msgid "%s: could not find postgres program executable\n" msgstr "%s: çalıştırılabilir postgres programı bulunamadı\n" -#: pg_ctl.c:1138 -#: pg_ctl.c:1170 +#: pg_ctl.c:1306 +#: pg_ctl.c:1338 #, c-format msgid "%s: could not open service manager\n" msgstr "%s: servis yöneticisi açılamadı\n" -#: pg_ctl.c:1144 +#: pg_ctl.c:1312 #, c-format msgid "%s: service \"%s\" already registered\n" msgstr "%s: \"%s\" servisi daha önce kaydedilmiştir\n" -#: pg_ctl.c:1155 +#: pg_ctl.c:1323 #, c-format -msgid "%s: could not register service \"%s\": error code %d\n" -msgstr "%s: \"%s\" servisi kaydedilemedi: Hata kodu %d\n" +msgid "%s: could not register service \"%s\": error code %lu\n" +msgstr "%s: \"%s\" servisi kayıt edilemedi: hata kodu %lu\n" -#: pg_ctl.c:1176 +#: pg_ctl.c:1344 #, c-format msgid "%s: service \"%s\" not registered\n" msgstr "%s: \"%s\" servisi kayıtlı değil\n" -#: pg_ctl.c:1183 +#: pg_ctl.c:1351 #, c-format -msgid "%s: could not open service \"%s\": error code %d\n" -msgstr "%s: \"%s\" servisi açılamadı: Hata kodu %d\n" +msgid "%s: could not open service \"%s\": error code %lu\n" +msgstr "%s: \"%s\" servisi açılamadı: hata kodu %lu\n" -#: pg_ctl.c:1190 +#: pg_ctl.c:1358 #, c-format -msgid "%s: could not unregister service \"%s\": error code %d\n" -msgstr "%s: \"%s\" servisi kaydedilemedi: Hata kodu %d\n" +msgid "%s: could not unregister service \"%s\": error code %lu\n" +msgstr "%s: \"%s\" servisinin kaydı silinemedi: hata kodu %lu\n" -#: pg_ctl.c:1276 +#: pg_ctl.c:1444 msgid "Waiting for server startup...\n" msgstr "Sunucunun başlaması bekleniyor...\n" -#: pg_ctl.c:1279 +#: pg_ctl.c:1447 msgid "Timed out waiting for server startup\n" msgstr "Sunucu başlarken zaman aşımı oldu\n" -#: pg_ctl.c:1283 +#: pg_ctl.c:1451 msgid "Server started and accepting connections\n" msgstr "Sunucu başladı ve bağlantı kabul ediyor\n" -#: pg_ctl.c:1333 -#, c-format -msgid "%s: could not start service \"%s\": error code %d\n" +#: pg_ctl.c:1501 +#, fuzzy, c-format +msgid "%s: could not start service \"%s\": error code %lu\n" msgstr "%s: \"%s\" servisi başlatılamadı: Hata kodu %d\n" -#: pg_ctl.c:1568 +#: pg_ctl.c:1573 +#, c-format +msgid "%s: WARNING: cannot create restricted tokens on this platform\n" +msgstr "" + +#: pg_ctl.c:1582 +#, fuzzy, c-format +msgid "%s: could not open process token: error code %lu\n" +msgstr "open process token açma başarısız: hata kodu %d\n" + +#: pg_ctl.c:1595 +#, fuzzy, c-format +msgid "%s: could not allocate SIDs: error code %lu\n" +msgstr "%s: \"%s\" servisi açılamadı: Hata kodu %d\n" + +#: pg_ctl.c:1614 +#, fuzzy, c-format +msgid "%s: could not create restricted token: error code %lu\n" +msgstr "inherited socket oluşturulamıyor: hata kodu %d\n" + +#: pg_ctl.c:1652 +#, c-format +msgid "%s: WARNING: could not locate all job object functions in system API\n" +msgstr "" + +#: pg_ctl.c:1738 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Daha fazla bilgi için \"%s --help\" komutunu kullanabilirsiniz.\n" -#: pg_ctl.c:1576 +#: pg_ctl.c:1746 #, c-format msgid "" -"%s is a utility to start, stop, restart, reload configuration files,\n" -"report the status of a PostgreSQL server, or signal a PostgreSQL process.\n" +"%s is a utility to initialize, start, stop, or control a PostgreSQL server.\n" "\n" msgstr "" -"%s başlatmak, durdurmak, yeniden başlatmak, yapılandırma dosyalarını yeniden yüklemek\n" -"PostgreSQL sunucusunun durumunu bildirmek, ya da PostgreSQL sürecini öldürmek için bir yardımcı programdır\n" -"\n" -#: pg_ctl.c:1578 +#: pg_ctl.c:1747 #, c-format msgid "Usage:\n" msgstr "Kullanımı:\n" -#: pg_ctl.c:1579 +#: pg_ctl.c:1748 #, c-format msgid " %s init[db] [-D DATADIR] [-s] [-o \"OPTIONS\"]\n" msgstr " %s init[db] [-D VERİ_DİZİNİ] [-s] [-o \"SEÇENEKLER\"]\n" -#: pg_ctl.c:1580 +#: pg_ctl.c:1749 #, c-format msgid " %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"]\n" msgstr " %s start [-w] [-t saniye] [-D VERİ_DİZİNİ] [-s] [-l DOSYA_ADI] [-o \"SEÇENEKLER\"]\n" -#: pg_ctl.c:1581 +#: pg_ctl.c:1750 #, c-format msgid " %s stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" msgstr " %s stop [-W] [-t saniye] [-D veri dizini] [-s] [-m kapatma modu]\n" -#: pg_ctl.c:1582 +#: pg_ctl.c:1751 #, c-format msgid "" " %s restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" " [-o \"OPTIONS\"]\n" msgstr " %s restart [-w] [-t saniye] [-D veri dizini] [-s] [-m kapatma modu] [-o \"seçenekler\"]\n" -#: pg_ctl.c:1584 +#: pg_ctl.c:1753 #, c-format msgid " %s reload [-D DATADIR] [-s]\n" msgstr " %s reload [-D VERİ_DİZİNİ] [-s]\n" -#: pg_ctl.c:1585 +#: pg_ctl.c:1754 #, c-format msgid " %s status [-D DATADIR]\n" msgstr " %s status [-D VERİ_DİZİNİ]\n" -#: pg_ctl.c:1586 +#: pg_ctl.c:1755 +#, fuzzy, c-format +msgid " %s promote [-D DATADIR] [-s]\n" +msgstr " %s reload [-D VERİ_DİZİNİ] [-s]\n" + +#: pg_ctl.c:1756 #, c-format msgid " %s kill SIGNALNAME PID\n" msgstr " %s kill SİNYAL_ADI SÜREÇ_NUMARASI\n" -#: pg_ctl.c:1588 -#, c-format +#: pg_ctl.c:1758 +#, fuzzy, c-format msgid "" " %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" -" [-w] [-t SECS] [-o \"OPTIONS\"]\n" +" [-S START-TYPE] [-w] [-t SECS] [-o \"OPTIONS\"]\n" msgstr "" " %s register [-N servis adı] [-U kullanıcı adı] [-P şifre] [-D veri dizini]\n" " [-w] ]-t saniye] [-o \"seçenekler\"]\n" -#: pg_ctl.c:1590 +#: pg_ctl.c:1760 #, c-format msgid " %s unregister [-N SERVICENAME]\n" msgstr " %s unregister [-N SERVİS_ADI]\n" -#: pg_ctl.c:1593 +#: pg_ctl.c:1763 #, c-format msgid "" "\n" @@ -366,42 +474,42 @@ msgstr "" "\n" "Ortak seçenekler:\n" -#: pg_ctl.c:1594 +#: pg_ctl.c:1764 #, c-format msgid " -D, --pgdata DATADIR location of the database storage area\n" msgstr " -D, --pgdata VERİ_DİZİNİ verinin tutulacağı alan\n" -#: pg_ctl.c:1595 +#: pg_ctl.c:1765 #, c-format msgid " -s, --silent only print errors, no informational messages\n" msgstr " -s, --silent sadece hataları yazar, hiç bir bilgi mesajı yazmaz\n" -#: pg_ctl.c:1596 +#: pg_ctl.c:1766 #, c-format msgid " -t SECS seconds to wait when using -w option\n" msgstr " -t SECS -w seçeneğini kullanırken beklenecek süre\n" -#: pg_ctl.c:1597 +#: pg_ctl.c:1767 #, c-format msgid " -w wait until operation completes\n" msgstr " -w işlem bitene kadar bekle\n" -#: pg_ctl.c:1598 +#: pg_ctl.c:1768 #, c-format msgid " -W do not wait until operation completes\n" msgstr " -W işlem bitene kadar bekleme\n" -#: pg_ctl.c:1599 +#: pg_ctl.c:1769 #, c-format msgid " --help show this help, then exit\n" msgstr " --help Bu yardımı göster ve çık\n" -#: pg_ctl.c:1600 +#: pg_ctl.c:1770 #, c-format msgid " --version output version information, then exit\n" msgstr " --version sürüm numarasını yazar ve çıkar\n" -#: pg_ctl.c:1601 +#: pg_ctl.c:1771 #, c-format msgid "" "(The default is to wait for shutdown, but not for start or restart.)\n" @@ -410,12 +518,12 @@ msgstr "" "(Ön tanımlı işlem kapanmak için beklemektir; başlamak ya da yeniden başlamak değildir.)\n" "\n" -#: pg_ctl.c:1602 +#: pg_ctl.c:1772 #, c-format msgid "If the -D option is omitted, the environment variable PGDATA is used.\n" msgstr "Eğer -D seçeneği gözardı edilirse, PGDATA çevresel değişkeni kullanılacaktır.\n" -#: pg_ctl.c:1604 +#: pg_ctl.c:1774 #, c-format msgid "" "\n" @@ -424,22 +532,22 @@ msgstr "" "\n" "Başlamak ya da yeniden başlamak için seçenekler:\n" -#: pg_ctl.c:1606 +#: pg_ctl.c:1776 #, c-format msgid " -c, --core-files allow postgres to produce core files\n" msgstr " -c, --core-files postgres'in core dosyaları oluşturmasına izin ver\n" -#: pg_ctl.c:1608 +#: pg_ctl.c:1778 #, c-format msgid " -c, --core-files not applicable on this platform\n" msgstr " -c, --core-files bu platformda uygulanmaz\n" -#: pg_ctl.c:1610 +#: pg_ctl.c:1780 #, c-format msgid " -l, --log FILENAME write (or append) server log to FILENAME\n" msgstr " -l, --log DOSYA_ADI Sunucu loglarını DOSYA_ADI dosyasına yaz (ya da dosyanın sonuna ekle).\n" -#: pg_ctl.c:1611 +#: pg_ctl.c:1781 #, c-format msgid "" " -o OPTIONS command line options to pass to postgres\n" @@ -448,12 +556,12 @@ msgstr "" " -o SEÇENEKLER postgres'e (PostgreSQL sunucusu çalıştırılabilir dosyası)\n" " ya da initdb'ye geçilecek komut satırı seçenekleri\n" -#: pg_ctl.c:1613 +#: pg_ctl.c:1783 #, c-format msgid " -p PATH-TO-POSTGRES normally not necessary\n" msgstr " -p PATH-TO-POSTGRES normalde gerekli değildir\n" -#: pg_ctl.c:1614 +#: pg_ctl.c:1784 #, c-format msgid "" "\n" @@ -462,12 +570,12 @@ msgstr "" "\n" "Başlatmak ya da yeniden başlatmak için seçenekler:\n" -#: pg_ctl.c:1615 +#: pg_ctl.c:1785 #, c-format msgid " -m SHUTDOWN-MODE can be \"smart\", \"fast\", or \"immediate\"\n" msgstr " -m KAPANMA-MODU \"smart\", \"fast\", veya \"immediate\" olabilir\n" -#: pg_ctl.c:1617 +#: pg_ctl.c:1787 #, c-format msgid "" "\n" @@ -476,22 +584,22 @@ msgstr "" "\n" "Kapatma modları:\n" -#: pg_ctl.c:1618 +#: pg_ctl.c:1788 #, c-format msgid " smart quit after all clients have disconnected\n" msgstr " smart tüm istemciler bağlantılarını kestikten sonra dur\n" -#: pg_ctl.c:1619 +#: pg_ctl.c:1789 #, c-format msgid " fast quit directly, with proper shutdown\n" msgstr " fast düzgünce kapanmadan direk olarak dur\n" -#: pg_ctl.c:1620 +#: pg_ctl.c:1790 #, c-format msgid " immediate quit without complete shutdown; will lead to recovery on restart\n" msgstr " immediate tam bir kapanma gerçekleşmeden dur; yeniden başladığında kurtarma modunda açılır\n" -#: pg_ctl.c:1622 +#: pg_ctl.c:1792 #, c-format msgid "" "\n" @@ -500,7 +608,7 @@ msgstr "" "\n" "kill için izin verilen sinyal adları:\n" -#: pg_ctl.c:1626 +#: pg_ctl.c:1796 #, c-format msgid "" "\n" @@ -509,22 +617,46 @@ msgstr "" "\n" "Kaydetmek ya da kaydı silmek için seçenekler:\n" -#: pg_ctl.c:1627 +#: pg_ctl.c:1797 #, c-format msgid " -N SERVICENAME service name with which to register PostgreSQL server\n" msgstr " -N SERVICENAME PostgreSQL sunucusunu kaydedeceğiniz servis adı\n" -#: pg_ctl.c:1628 +#: pg_ctl.c:1798 #, c-format msgid " -P PASSWORD password of account to register PostgreSQL server\n" msgstr " -P PASSWORD PostgreSQL sunucusunu kaydetmek için hesabın şifresi\n" -#: pg_ctl.c:1629 +#: pg_ctl.c:1799 #, c-format msgid " -U USERNAME user name of account to register PostgreSQL server\n" msgstr " -U USERNAME PostgreSQL sunucusunu kaydetmek için gerekli kullanıcı adı\n" -#: pg_ctl.c:1632 +#: pg_ctl.c:1800 +#, fuzzy, c-format +msgid " -S START-TYPE service start type to register PostgreSQL server\n" +msgstr " -N SERVICENAME PostgreSQL sunucusunu kaydedeceğiniz servis adı\n" + +#: pg_ctl.c:1802 +#, c-format +msgid "" +"\n" +"Start types are:\n" +msgstr "" +"\n" +"Başlama tipleri: \n" + +#: pg_ctl.c:1803 +#, c-format +msgid " auto start service automatically during system startup (default)\n" +msgstr "" + +#: pg_ctl.c:1804 +#, c-format +msgid " demand start service on demand\n" +msgstr "" + +#: pg_ctl.c:1807 #, c-format msgid "" "\n" @@ -533,17 +665,22 @@ msgstr "" "\n" "Hataları adresine bildiriniz.\n" -#: pg_ctl.c:1657 +#: pg_ctl.c:1832 #, c-format msgid "%s: unrecognized shutdown mode \"%s\"\n" msgstr "%s: geçersiz kapanma modu \"%s\"\n" -#: pg_ctl.c:1690 +#: pg_ctl.c:1865 #, c-format msgid "%s: unrecognized signal name \"%s\"\n" msgstr "%s: geçersiz sinyal adı \"%s\"\n" -#: pg_ctl.c:1755 +#: pg_ctl.c:1882 +#, c-format +msgid "%s: unrecognized start type \"%s\"\n" +msgstr "%s: geçersiz başlama tipi \"%s\"\n" + +#: pg_ctl.c:1947 #, c-format msgid "" "%s: cannot be run as root\n" @@ -554,27 +691,32 @@ msgstr "" "Lütfen (yani \"su\" kullanarak) sunucu sürecine sahip olacak (yetkisiz) kullanıcı\n" "ile sisteme giriş yapınız.\n" -#: pg_ctl.c:1864 +#: pg_ctl.c:2018 +#, c-format +msgid "%s: -S option not supported on this platform\n" +msgstr "%s: -S seçeneği bu platformda desteklenmiyor.\n" + +#: pg_ctl.c:2065 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: çok fazla komut satırı argümanı (ilki : \"%s\")\n" -#: pg_ctl.c:1886 +#: pg_ctl.c:2089 #, c-format msgid "%s: missing arguments for kill mode\n" msgstr "%s: kill modu için eksik argümanlar\n" -#: pg_ctl.c:1904 +#: pg_ctl.c:2107 #, c-format msgid "%s: unrecognized operation mode \"%s\"\n" msgstr "%s: geçersiz işlem modu \"%s\"\n" -#: pg_ctl.c:1914 +#: pg_ctl.c:2117 #, c-format msgid "%s: no operation specified\n" msgstr "%s: hiçbir işlem belirtilmedi\n" -#: pg_ctl.c:1930 +#: pg_ctl.c:2133 #, c-format msgid "%s: no database directory specified and environment variable PGDATA unset\n" msgstr "%s: Hiçbir veritabanı dizini belirtilmemiş ve PGDATA çevresel değişkeni boş\n" @@ -612,30 +754,42 @@ msgstr "çalışma dizini \"%s\" olarak değiştirilemedi" msgid "could not read symbolic link \"%s\"" msgstr "symbolic link \"%s\" okuma hatası" -#: ../../port/exec.c:516 +#: ../../port/exec.c:517 #, c-format msgid "child process exited with exit code %d" msgstr "alt süreç %d çıkış koduyla sonuçlandırılmıştır" -#: ../../port/exec.c:520 +#: ../../port/exec.c:521 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "alt süreç 0x%X exception tarafından sonlandırılmıştır" -#: ../../port/exec.c:529 +#: ../../port/exec.c:530 #, c-format msgid "child process was terminated by signal %s" msgstr "alt süreç %s sinyali tarafından sonlandırılmıştır" -#: ../../port/exec.c:532 +#: ../../port/exec.c:533 #, c-format msgid "child process was terminated by signal %d" msgstr "alt süreç %d sinyali tarafından sonlandırılmıştır" -#: ../../port/exec.c:536 +#: ../../port/exec.c:537 #, c-format msgid "child process exited with unrecognized status %d" msgstr "alt süreç %d bilinmeyen durumu ile sonlandırılmıştır" +#~ msgid "" +#~ "%s is a utility to start, stop, restart, reload configuration files,\n" +#~ "report the status of a PostgreSQL server, or signal a PostgreSQL " +#~ "process.\n" +#~ "\n" +#~ msgstr "" +#~ "%s başlatmak, durdurmak, yeniden başlatmak, yapılandırma dosyalarını " +#~ "yeniden yüklemek\n" +#~ "PostgreSQL sunucusunun durumunu bildirmek, ya da PostgreSQL sürecini " +#~ "öldürmek için bir yardımcı programdır\n" +#~ "\n" + #~ msgid "could not start server\n" #~ msgstr "sunucu başlatılamadı\n" diff --git a/src/bin/pg_ctl/po/zh_CN.po b/src/bin/pg_ctl/po/zh_CN.po index 7cf6bff1aa..39d939416b 100644 --- a/src/bin/pg_ctl/po/zh_CN.po +++ b/src/bin/pg_ctl/po/zh_CN.po @@ -6,45 +6,73 @@ msgid "" msgstr "" "Project-Id-Version: pg_ctl (PostgreSQL 9.0)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-10-01 14:41+0000\n" +"POT-Creation-Date: 2013-01-29 13:56+0000\n" "PO-Revision-Date: 2010-10-01 12:49+0800\n" "Last-Translator: Weibin \n" "Language-Team: Chinese (Simplified)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: pg_ctl.c:226 pg_ctl.c:241 pg_ctl.c:1851 +#: pg_ctl.c:238 pg_ctl.c:253 pg_ctl.c:2070 #, c-format msgid "%s: out of memory\n" msgstr "%s: 内存溢出\n" -#: pg_ctl.c:275 +#: pg_ctl.c:287 #, c-format msgid "%s: could not open PID file \"%s\": %s\n" msgstr "%s: 无法打开 PID 文件 \"%s\": %s\n" -#: pg_ctl.c:282 +#: pg_ctl.c:294 #, c-format msgid "%s: invalid data in PID file \"%s\"\n" msgstr "%s: PID文件 \"%s\" 中存在无效数据\n" -#: pg_ctl.c:558 +#: pg_ctl.c:505 +#, c-format +msgid "" +"\n" +"%s: -w option is not supported when starting a pre-9.1 server\n" +msgstr "" +"\n" +"%s: -w 选项不能用于9.1以前版本的服务器启动\n" + +#: pg_ctl.c:575 +#, c-format +msgid "" +"\n" +"%s: -w option cannot use a relative socket directory specification\n" +msgstr "" +"\n" +"%s: -w 选项不能用于相对套接字目录\n" + +#: pg_ctl.c:623 +#, c-format +msgid "" +"\n" +"%s: this data directory appears to be running a pre-existing postmaster\n" +msgstr "" +"\n" +"%s: 数据目录里可能正在运行着一个已经存在的postmaster进程\n" + +#: pg_ctl.c:673 #, c-format msgid "%s: cannot set core file size limit; disallowed by hard limit\n" msgstr "%s: 不能设置核心文件大小的限制;磁盘限额不允许\n" -#: pg_ctl.c:583 +#: pg_ctl.c:698 #, c-format msgid "%s: could not read file \"%s\"\n" msgstr "%s: 无法读取文件 \"%s\"\n" -#: pg_ctl.c:588 +#: pg_ctl.c:703 #, c-format msgid "%s: option file \"%s\" must have exactly one line\n" msgstr "%s: 选项文件 \"%s\" 只能有一行\n" -#: pg_ctl.c:636 +#: pg_ctl.c:751 #, c-format msgid "" "The program \"%s\" is needed by %s but was not found in the\n" @@ -55,7 +83,7 @@ msgstr "" "\n" "请检查您的安装.\n" -#: pg_ctl.c:642 +#: pg_ctl.c:757 #, c-format msgid "" "The program \"%s\" was found by \"%s\"\n" @@ -66,22 +94,42 @@ msgstr "" "\n" "检查您的安装.\n" -#: pg_ctl.c:675 +#: pg_ctl.c:790 #, c-format msgid "%s: database system initialization failed\n" msgstr "%s: 数据库系统初始化失败\n" -#: pg_ctl.c:691 +#: pg_ctl.c:805 #, c-format msgid "%s: another server might be running; trying to start server anyway\n" msgstr "%s: 其他服务器进程可能正在运行; 尝试启动服务器进程\n" -#: pg_ctl.c:728 +#: pg_ctl.c:842 #, c-format msgid "%s: could not start server: exit code was %d\n" msgstr "%s: 无法启动服务器进程: 退出码为 %d\n" -#: pg_ctl.c:739 pg_ctl.c:752 +#: pg_ctl.c:849 +msgid "waiting for server to start..." +msgstr "等待服务器进程启动 ..." + +#: pg_ctl.c:854 pg_ctl.c:955 pg_ctl.c:1046 +msgid " done\n" +msgstr " 完成\n" + +#: pg_ctl.c:855 +msgid "server started\n" +msgstr "服务器进程已经启动\n" + +#: pg_ctl.c:858 pg_ctl.c:862 +msgid " stopped waiting\n" +msgstr " 已停止等待\n" + +#: pg_ctl.c:859 +msgid "server is still starting up\n" +msgstr "服务器仍在启动过程中\n" + +#: pg_ctl.c:863 #, c-format msgid "" "%s: could not start server\n" @@ -90,46 +138,43 @@ msgstr "" "%s: 无法启动服务器进程\n" "检查日志输出.\n" -#: pg_ctl.c:748 -msgid "waiting for server to start..." -msgstr "等待服务器进程启动 ..." - -#: pg_ctl.c:759 pg_ctl.c:840 pg_ctl.c:928 -msgid " done\n" -msgstr " 完成\n" +#: pg_ctl.c:869 pg_ctl.c:947 pg_ctl.c:1037 +msgid " failed\n" +msgstr " 失败\n" -#: pg_ctl.c:760 -msgid "server started\n" -msgstr "服务器进程已经启动\n" +#: pg_ctl.c:870 +#, c-format +msgid "%s: could not wait for server because of misconfiguration\n" +msgstr "%s: 因为配制错误,而无法等待服务器\n" -#: pg_ctl.c:764 +#: pg_ctl.c:876 msgid "server starting\n" msgstr "正在启动服务器进程\n" -#: pg_ctl.c:779 pg_ctl.c:862 pg_ctl.c:950 +#: pg_ctl.c:891 pg_ctl.c:977 pg_ctl.c:1067 pg_ctl.c:1107 #, c-format msgid "%s: PID file \"%s\" does not exist\n" msgstr "%s: PID 文件 \"%s\" 不存在\n" -#: pg_ctl.c:780 pg_ctl.c:864 pg_ctl.c:951 +#: pg_ctl.c:892 pg_ctl.c:979 pg_ctl.c:1068 pg_ctl.c:1108 msgid "Is server running?\n" msgstr "服务器进程是否正在运行?\n" -#: pg_ctl.c:786 +#: pg_ctl.c:898 #, c-format msgid "%s: cannot stop server; single-user server is running (PID: %ld)\n" msgstr "%s: 无法停止服务器进程; 正在运行 单用户模式服务器进程(PID: %ld)\n" -#: pg_ctl.c:794 pg_ctl.c:886 +#: pg_ctl.c:906 pg_ctl.c:1001 #, c-format msgid "%s: could not send stop signal (PID: %ld): %s\n" msgstr "%s: 无法发送停止信号 (PID: %ld): %s\n" -#: pg_ctl.c:801 +#: pg_ctl.c:913 msgid "server shutting down\n" msgstr "正在关闭服务器进程\n" -#: pg_ctl.c:816 pg_ctl.c:901 +#: pg_ctl.c:928 pg_ctl.c:1016 msgid "" "WARNING: online backup mode is active\n" "Shutdown will not complete until pg_stop_backup() is called.\n" @@ -138,160 +183,222 @@ msgstr "" "警告: 在线备份模式处于激活状态\n" "关闭命令将不会完成,直到调用了pg_stop_backup().\n" -#: pg_ctl.c:820 pg_ctl.c:905 +#: pg_ctl.c:932 pg_ctl.c:1020 msgid "waiting for server to shut down..." msgstr "等待服务器进程关闭 ..." -#: pg_ctl.c:835 pg_ctl.c:922 -msgid " failed\n" -msgstr " 失败\n" - -#: pg_ctl.c:837 pg_ctl.c:924 +#: pg_ctl.c:949 pg_ctl.c:1039 #, c-format msgid "%s: server does not shut down\n" msgstr "%s: server进程没有关闭\n" -#: pg_ctl.c:842 pg_ctl.c:929 +#: pg_ctl.c:951 pg_ctl.c:1041 +msgid "" +"HINT: The \"-m fast\" option immediately disconnects sessions rather than\n" +"waiting for session-initiated disconnection.\n" +msgstr "" +"提示: \"-m fast\" 选项可以立即断开会话, 而不用\n" +"等待会话发起的断连.\n" + +#: pg_ctl.c:957 pg_ctl.c:1047 msgid "server stopped\n" msgstr "服务器进程已经关闭\n" -#: pg_ctl.c:865 pg_ctl.c:935 +#: pg_ctl.c:980 pg_ctl.c:1053 msgid "starting server anyway\n" msgstr "正在启动服务器进程\n" -#: pg_ctl.c:874 +#: pg_ctl.c:989 #, c-format msgid "%s: cannot restart server; single-user server is running (PID: %ld)\n" msgstr "%s: 无法重启服务器进程; 单用户模式服务器进程正在运行 (PID: %ld)\n" -#: pg_ctl.c:877 pg_ctl.c:960 +#: pg_ctl.c:992 pg_ctl.c:1077 msgid "Please terminate the single-user server and try again.\n" msgstr "请终止单用户模式服务器进程,然后再重试.\n" -#: pg_ctl.c:933 +#: pg_ctl.c:1051 #, c-format msgid "%s: old server process (PID: %ld) seems to be gone\n" msgstr "%s: 原有的进程(PID: %ld)可能已经不存在了\n" -#: pg_ctl.c:957 +#: pg_ctl.c:1074 #, c-format msgid "%s: cannot reload server; single-user server is running (PID: %ld)\n" msgstr "" "%s: 无法重新加载服务器进程;正在运行单用户模式的服务器进程 (PID: %ld)\n" -#: pg_ctl.c:966 +#: pg_ctl.c:1083 #, c-format msgid "%s: could not send reload signal (PID: %ld): %s\n" msgstr "%s: 无法发送重载信号 (PID: %ld): %s\n" -#: pg_ctl.c:971 +#: pg_ctl.c:1088 msgid "server signaled\n" msgstr "服务器进程发出信号\n" -#: pg_ctl.c:1015 +#: pg_ctl.c:1114 +#, c-format +msgid "%s: cannot promote server; single-user server is running (PID: %ld)\n" +msgstr "" +"%s: 无法重新加载服务器进程;正在运行单用户模式的服务器进程 (PID: %ld)\n" + +#: pg_ctl.c:1123 +#, c-format +msgid "%s: cannot promote server; server is not in standby mode\n" +msgstr "%s: 无法重新加载服务器进程;服务器没有运行在standby模式下\n" + +#: pg_ctl.c:1131 +#, c-format +msgid "%s: could not create promote signal file \"%s\": %s\n" +msgstr "%s: 无法创建重新加载信号文件 \"%s\": %s\n" + +#: pg_ctl.c:1137 +#, c-format +msgid "%s: could not write promote signal file \"%s\": %s\n" +msgstr "%s: 无法写入重新加载文件 \"%s\": %s\n" + +#: pg_ctl.c:1145 +#, c-format +msgid "%s: could not send promote signal (PID: %ld): %s\n" +msgstr "%s: 无法发送重载信号(PID: %ld): %s\n" + +#: pg_ctl.c:1148 +#, c-format +msgid "%s: could not remove promote signal file \"%s\": %s\n" +msgstr "%s: 无法移动重新加载信号文件 \"%s\": %s\n" + +#: pg_ctl.c:1153 +msgid "server promoting\n" +msgstr "服务器重新加载中\n" + +#: pg_ctl.c:1198 #, c-format msgid "%s: single-user server is running (PID: %ld)\n" msgstr "%s: 正在运行单用户模式服务器进程 (PID: %ld)\n" -#: pg_ctl.c:1027 +#: pg_ctl.c:1210 #, c-format msgid "%s: server is running (PID: %ld)\n" msgstr "%s: 正在运行服务器进程(PID: %ld)\n" -#: pg_ctl.c:1038 +#: pg_ctl.c:1221 #, c-format msgid "%s: no server running\n" msgstr "%s:没有服务器进程正在运行\n" -#: pg_ctl.c:1049 +#: pg_ctl.c:1232 #, c-format msgid "%s: could not send signal %d (PID: %ld): %s\n" msgstr "%s: 无法发送信号 %d (PID: %ld): %s\n" -#: pg_ctl.c:1083 +#: pg_ctl.c:1266 #, c-format msgid "%s: could not find own program executable\n" msgstr "%s: 无法找到执行文件\n" -#: pg_ctl.c:1093 +#: pg_ctl.c:1276 #, c-format msgid "%s: could not find postgres program executable\n" msgstr "%s: 无法找到postgres程序的执行文件\n" -#: pg_ctl.c:1155 pg_ctl.c:1187 +#: pg_ctl.c:1341 pg_ctl.c:1373 #, c-format msgid "%s: could not open service manager\n" msgstr "%s: 无法打开服务管理器\n" -#: pg_ctl.c:1161 +#: pg_ctl.c:1347 #, c-format msgid "%s: service \"%s\" already registered\n" msgstr "%s: 服务 \"%s\" 已经注册了\n" -#: pg_ctl.c:1172 +#: pg_ctl.c:1358 #, c-format msgid "%s: could not register service \"%s\": error code %d\n" msgstr "%s: 无法注册服务 \"%s\": 错误码 %d\n" -#: pg_ctl.c:1193 +#: pg_ctl.c:1379 #, c-format msgid "%s: service \"%s\" not registered\n" msgstr "%s: 服务 \"%s\" 没有注册\n" -#: pg_ctl.c:1200 +#: pg_ctl.c:1386 #, c-format msgid "%s: could not open service \"%s\": error code %d\n" msgstr "%s: 无法打开服务 \"%s\": 错误码 %d\n" -#: pg_ctl.c:1207 +#: pg_ctl.c:1393 #, c-format msgid "%s: could not unregister service \"%s\": error code %d\n" msgstr "%s: 无法注销服务 \"%s\": 错误码 %d\n" -#: pg_ctl.c:1293 +#: pg_ctl.c:1479 msgid "Waiting for server startup...\n" msgstr "等待服务器进程启动 ...\n" -#: pg_ctl.c:1296 +#: pg_ctl.c:1482 msgid "Timed out waiting for server startup\n" msgstr "在等待服务器启动时超时\n" -#: pg_ctl.c:1300 +#: pg_ctl.c:1486 msgid "Server started and accepting connections\n" msgstr "服务器进程已启动并且接受连接\n" -#: pg_ctl.c:1350 +#: pg_ctl.c:1536 #, c-format msgid "%s: could not start service \"%s\": error code %d\n" msgstr "%s: 无法启动服务 \"%s\": 错误码 %d\n" -#: pg_ctl.c:1585 +#: pg_ctl.c:1608 +#, c-format +msgid "%s: WARNING: cannot create restricted tokens on this platform\n" +msgstr "%s: 警告: 该平台上无法创建受限令牌\n" + +#: pg_ctl.c:1617 +#, fuzzy, c-format +msgid "%s: could not open process token: %lu\n" +msgstr "%s: 无法打开进程令牌 (token): 错误码 %lu\n" + +#: pg_ctl.c:1630 +#, fuzzy, c-format +msgid "%s: could not allocate SIDs: %lu\n" +msgstr "%s: 无法分配SID: 错误码 %lu\n" + +#: pg_ctl.c:1649 +#, fuzzy, c-format +msgid "%s: could not create restricted token: %lu\n" +msgstr "%s: 无法创建继承套接字: 错误码为 %lu\n" + +#: pg_ctl.c:1687 +#, c-format +msgid "%s: WARNING: could not locate all job object functions in system API\n" +msgstr "%s: 警告: 系统API中无法定位所有工作对象函数\n" + +#: pg_ctl.c:1773 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "试用 \"%s --help\" 获取更多的信息.\n" -#: pg_ctl.c:1593 +#: pg_ctl.c:1781 #, c-format msgid "" -"%s is a utility to start, stop, restart, reload configuration files,\n" -"report the status of a PostgreSQL server, or signal a PostgreSQL process.\n" +"%s is a utility to initialize, start, stop, or control a PostgreSQL server.\n" "\n" msgstr "" -"%s 是一个启动, 停止, 重启, 重载配置文件, 报告 PostgreSQL 服务器状态,\n" -"或者杀掉 PostgreSQL 进程的工具\n" +"%s 是一个用于初始化、启动、停止或控制PostgreSQL服务器的工具.\n" "\n" -#: pg_ctl.c:1595 +#: pg_ctl.c:1782 #, c-format msgid "Usage:\n" msgstr "使用方法:\n" -#: pg_ctl.c:1596 +#: pg_ctl.c:1783 #, c-format msgid " %s init[db] [-D DATADIR] [-s] [-o \"OPTIONS\"]\n" msgstr " %s init[db] [-D 数据目录] [-s] [-o \"选项\"]\n" -#: pg_ctl.c:1597 +#: pg_ctl.c:1784 #, c-format msgid "" " %s start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS" @@ -299,12 +406,12 @@ msgid "" msgstr "" " %s start [-w] [-t 秒数] [-D 数据目录] [-s] [-l 文件名] [-o \"选项\"]\n" -#: pg_ctl.c:1598 +#: pg_ctl.c:1785 #, c-format msgid " %s stop [-W] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" msgstr " %s stop [-w] [-t 秒数] [-D 数据目录] [-s] [-m 关闭模式]\n" -#: pg_ctl.c:1599 +#: pg_ctl.c:1786 #, c-format msgid "" " %s restart [-w] [-t SECS] [-D DATADIR] [-s] [-m SHUTDOWN-MODE]\n" @@ -313,36 +420,41 @@ msgstr "" " %s restart [-w] [-t 秒数] [-D 数据目录] [-s] [-m 关闭模式]\n" " [-o \"选项\"]\n" -#: pg_ctl.c:1601 +#: pg_ctl.c:1788 #, c-format msgid " %s reload [-D DATADIR] [-s]\n" msgstr " %s reload [-D 数据目录] [-s]\n" -#: pg_ctl.c:1602 +#: pg_ctl.c:1789 #, c-format msgid " %s status [-D DATADIR]\n" msgstr " %s status [-D 数据目录]\n" -#: pg_ctl.c:1603 +#: pg_ctl.c:1790 +#, c-format +msgid " %s promote [-D DATADIR] [-s]\n" +msgstr " %s promote [-D 数据目录] [-s]\n" + +#: pg_ctl.c:1791 #, c-format msgid " %s kill SIGNALNAME PID\n" msgstr " %s kill 信号名称 进程号\n" -#: pg_ctl.c:1605 +#: pg_ctl.c:1793 #, c-format msgid "" " %s register [-N SERVICENAME] [-U USERNAME] [-P PASSWORD] [-D DATADIR]\n" -" [-w] [-t SECS] [-o \"OPTIONS\"]\n" +" [-S START-TYPE] [-w] [-t SECS] [-o \"OPTIONS\"]\n" msgstr "" " %s register [-N 服务名称] [-U 用户名] [-P 口令] [-D 数据目录]\n" -" [-w] [-t 秒数] [-o \"选项\"]\n" +" [-S 启动类型] [-w] [-t 秒数] [-o \"选项\"]\n" -#: pg_ctl.c:1607 +#: pg_ctl.c:1795 #, c-format msgid " %s unregister [-N SERVICENAME]\n" msgstr " %s unregister [-N 服务名称]\n" -#: pg_ctl.c:1610 +#: pg_ctl.c:1798 #, c-format msgid "" "\n" @@ -351,42 +463,42 @@ msgstr "" "\n" "普通选项:\n" -#: pg_ctl.c:1611 +#: pg_ctl.c:1799 #, c-format msgid " -D, --pgdata DATADIR location of the database storage area\n" msgstr " -D, --pgdata 数据目录 数据存储的位置\n" -#: pg_ctl.c:1612 +#: pg_ctl.c:1800 #, c-format msgid " -s, --silent only print errors, no informational messages\n" msgstr " -s, --silent 只打印错误信息, 没有其他信息\n" -#: pg_ctl.c:1613 +#: pg_ctl.c:1801 #, c-format msgid " -t SECS seconds to wait when using -w option\n" msgstr " -t SECS 当使用-w 选项时需要等待的秒数\n" -#: pg_ctl.c:1614 +#: pg_ctl.c:1802 #, c-format msgid " -w wait until operation completes\n" msgstr " -w 等待直到操作完成\n" -#: pg_ctl.c:1615 +#: pg_ctl.c:1803 #, c-format msgid " -W do not wait until operation completes\n" msgstr " -W 不用等待操作完成\n" -#: pg_ctl.c:1616 +#: pg_ctl.c:1804 #, c-format msgid " --help show this help, then exit\n" msgstr " --help 显示此帮助信息, 然后退出\n" -#: pg_ctl.c:1617 +#: pg_ctl.c:1805 #, c-format msgid " --version output version information, then exit\n" msgstr " --version 显示版本信息, 然后退出\n" -#: pg_ctl.c:1618 +#: pg_ctl.c:1806 #, c-format msgid "" "(The default is to wait for shutdown, but not for start or restart.)\n" @@ -395,12 +507,12 @@ msgstr "" "(默认为关闭等待, 但不是启动或重启.)\n" "\n" -#: pg_ctl.c:1619 +#: pg_ctl.c:1807 #, c-format msgid "If the -D option is omitted, the environment variable PGDATA is used.\n" msgstr "如果省略了 -D 选项, 将使用 PGDATA 环境变量.\n" -#: pg_ctl.c:1621 +#: pg_ctl.c:1809 #, c-format msgid "" "\n" @@ -409,22 +521,22 @@ msgstr "" "\n" "启动或重启的选项:\n" -#: pg_ctl.c:1623 +#: pg_ctl.c:1811 #, c-format msgid " -c, --core-files allow postgres to produce core files\n" msgstr " -c, --core-files 允许postgres进程产生核心文件\n" -#: pg_ctl.c:1625 +#: pg_ctl.c:1813 #, c-format msgid " -c, --core-files not applicable on this platform\n" msgstr " -c, --core-files 在这种平台上不可用\n" -#: pg_ctl.c:1627 +#: pg_ctl.c:1815 #, c-format msgid " -l, --log FILENAME write (or append) server log to FILENAME\n" msgstr " -l, --log FILENAME 写入 (或追加) 服务器日志到文件 FILENAME\n" -#: pg_ctl.c:1628 +#: pg_ctl.c:1816 #, c-format msgid "" " -o OPTIONS command line options to pass to postgres\n" @@ -433,12 +545,12 @@ msgstr "" " -o OPTIONS 传递给postgres的命令行选项\n" " (PostgreSQL 服务器执行文件)或initdb\n" -#: pg_ctl.c:1630 +#: pg_ctl.c:1818 #, c-format msgid " -p PATH-TO-POSTGRES normally not necessary\n" msgstr " -p PATH-TO-POSTMASTER 正常情况不必要\n" -#: pg_ctl.c:1631 +#: pg_ctl.c:1819 #, c-format msgid "" "\n" @@ -447,12 +559,12 @@ msgstr "" "\n" "停止或重启的选项:\n" -#: pg_ctl.c:1632 +#: pg_ctl.c:1820 #, c-format msgid " -m SHUTDOWN-MODE can be \"smart\", \"fast\", or \"immediate\"\n" msgstr " -m SHUTDOWN-MODE 可以是 \"smart\", \"fast\", 或者 \"immediate\"\n" -#: pg_ctl.c:1634 +#: pg_ctl.c:1822 #, c-format msgid "" "\n" @@ -461,24 +573,24 @@ msgstr "" "\n" "关闭模式有如下几种:\n" -#: pg_ctl.c:1635 +#: pg_ctl.c:1823 #, c-format msgid " smart quit after all clients have disconnected\n" msgstr " smart 所有客户端断开连接后退出\n" -#: pg_ctl.c:1636 +#: pg_ctl.c:1824 #, c-format msgid " fast quit directly, with proper shutdown\n" msgstr " fast 直接退出, 正确的关闭\n" -#: pg_ctl.c:1637 +#: pg_ctl.c:1825 #, c-format msgid "" " immediate quit without complete shutdown; will lead to recovery on " "restart\n" msgstr " immediate 不完全的关闭退出; 重启后恢复\n" -#: pg_ctl.c:1639 +#: pg_ctl.c:1827 #, c-format msgid "" "\n" @@ -487,7 +599,7 @@ msgstr "" "\n" "允许关闭的信号名称:\n" -#: pg_ctl.c:1643 +#: pg_ctl.c:1831 #, c-format msgid "" "\n" @@ -496,23 +608,48 @@ msgstr "" "\n" "注册或注销的选项:\n" -#: pg_ctl.c:1644 +#: pg_ctl.c:1832 #, c-format msgid "" " -N SERVICENAME service name with which to register PostgreSQL server\n" msgstr " -N 服务名称 注册到 PostgreSQL 服务器的服务名称\n" -#: pg_ctl.c:1645 +#: pg_ctl.c:1833 #, c-format msgid " -P PASSWORD password of account to register PostgreSQL server\n" msgstr " -P 口令 注册到 PostgreSQL 服务器帐户的口令\n" -#: pg_ctl.c:1646 +#: pg_ctl.c:1834 #, c-format msgid " -U USERNAME user name of account to register PostgreSQL server\n" msgstr " -U 用户名 注册到 PostgreSQL 服务器帐户的用户名\n" -#: pg_ctl.c:1649 +#: pg_ctl.c:1835 +#, c-format +msgid " -S START-TYPE service start type to register PostgreSQL server\n" +msgstr " -S START-TYPE 注册到PostgreSQL服务器的服务启动类型\n" + +#: pg_ctl.c:1837 +#, c-format +msgid "" +"\n" +"Start types are:\n" +msgstr "" +"\n" +"启动类型有:\n" + +#: pg_ctl.c:1838 +#, c-format +msgid "" +" auto start service automatically during system startup (default)\n" +msgstr " auto 在系统启动时自动启动服务(默认选项)\n" + +#: pg_ctl.c:1839 +#, c-format +msgid " demand start service on demand\n" +msgstr " demand 按需启动服务\n" + +#: pg_ctl.c:1842 #, c-format msgid "" "\n" @@ -521,17 +658,22 @@ msgstr "" "\n" "臭虫报告至 .\n" -#: pg_ctl.c:1674 +#: pg_ctl.c:1867 #, c-format msgid "%s: unrecognized shutdown mode \"%s\"\n" msgstr "%s: 无效的关闭模式 \"%s\"\n" -#: pg_ctl.c:1707 +#: pg_ctl.c:1900 #, c-format msgid "%s: unrecognized signal name \"%s\"\n" msgstr "%s: 无效信号名称 \"%s\"\n" -#: pg_ctl.c:1772 +#: pg_ctl.c:1917 +#, c-format +msgid "%s: unrecognized start type \"%s\"\n" +msgstr "%s: 无法识别的启动类型 \"%s\"\n" + +#: pg_ctl.c:1982 #, c-format msgid "" "%s: cannot be run as root\n" @@ -542,27 +684,32 @@ msgstr "" "请以服务器进程所属用户 (非特权用户) 登录 (或使用 \"su\")\n" "\n" -#: pg_ctl.c:1881 +#: pg_ctl.c:2053 +#, c-format +msgid "%s: -S option not supported on this platform\n" +msgstr "%s: -S 选项在该平台上不支持\n" + +#: pg_ctl.c:2100 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: 命令行参数太多 (第一个是 \"%s\")\n" -#: pg_ctl.c:1903 +#: pg_ctl.c:2124 #, c-format msgid "%s: missing arguments for kill mode\n" msgstr "%s: 缺少 kill 模式参数\n" -#: pg_ctl.c:1921 +#: pg_ctl.c:2142 #, c-format msgid "%s: unrecognized operation mode \"%s\"\n" msgstr "%s: 无效的操作模式 \"%s\"\n" -#: pg_ctl.c:1931 +#: pg_ctl.c:2152 #, c-format msgid "%s: no operation specified\n" msgstr "%s: 没有指定操作\n" -#: pg_ctl.c:1947 +#: pg_ctl.c:2168 #, c-format msgid "" "%s: no database directory specified and environment variable PGDATA unset\n" @@ -600,31 +747,41 @@ msgstr "无法进入目录 \"%s\"" msgid "could not read symbolic link \"%s\"" msgstr "无法读取符号链结 \"%s\"" -#: ../../port/exec.c:516 +#: ../../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" msgstr "子进程已退出, 退出码为 %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "子进程被例外(exception) 0x%X 终止" -#: ../../port/exec.c:529 +#: ../../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "子进程被信号 %s 终止" -#: ../../port/exec.c:532 +#: ../../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "子进程被信号 %d 终止" -#: ../../port/exec.c:536 +#: ../../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "子进程已退出, 未知状态 %d" +#~ msgid "" +#~ "%s is a utility to start, stop, restart, reload configuration files,\n" +#~ "report the status of a PostgreSQL server, or signal a PostgreSQL " +#~ "process.\n" +#~ "\n" +#~ msgstr "" +#~ "%s 是一个启动, 停止, 重启, 重载配置文件, 报告 PostgreSQL 服务器状态,\n" +#~ "或者杀掉 PostgreSQL 进程的工具\n" +#~ "\n" + #~ msgid "could not start server\n" #~ msgstr "无法启动服务器进程\n" diff --git a/src/bin/pg_ctl/po/zh_TW.po b/src/bin/pg_ctl/po/zh_TW.po index f9bf7ae02a..5b9aea0157 100644 --- a/src/bin/pg_ctl/po/zh_TW.po +++ b/src/bin/pg_ctl/po/zh_TW.po @@ -12,7 +12,7 @@ msgstr "" "Last-Translator: Zhenbang Wei \n" "Language-Team: EnterpriseDB translation team \n" -"Language: \n" +"Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_dump/common.c b/src/bin/pg_dump/common.c index c419c2d180..87207f7d83 100644 --- a/src/bin/pg_dump/common.c +++ b/src/bin/pg_dump/common.c @@ -50,16 +50,19 @@ static TableInfo *tblinfo; static TypeInfo *typinfo; static FuncInfo *funinfo; static OprInfo *oprinfo; +static NamespaceInfo *nspinfo; static int numTables; static int numTypes; static int numFuncs; static int numOperators; static int numCollations; +static int numNamespaces; static DumpableObject **tblinfoindex; static DumpableObject **typinfoindex; static DumpableObject **funinfoindex; static DumpableObject **oprinfoindex; static DumpableObject **collinfoindex; +static DumpableObject **nspinfoindex; static void flagInhTables(TableInfo *tbinfo, int numTables, @@ -83,7 +86,6 @@ getSchemaData(int *numTablesPtr) ExtensionInfo *extinfo; InhInfo *inhinfo; CollInfo *collinfo; - int numNamespaces; int numExtensions; int numAggregates; int numInherits; @@ -103,7 +105,22 @@ getSchemaData(int *numTablesPtr) if (g_verbose) write_msg(NULL, "reading schemas\n"); - getNamespaces(&numNamespaces); + nspinfo = getNamespaces(&numNamespaces); + nspinfoindex = buildIndexArray(nspinfo, numNamespaces, sizeof(NamespaceInfo)); + + /* + * getTables should be done as soon as possible, so as to minimize the + * window between starting our transaction and acquiring per-table locks. + * However, we have to do getNamespaces first because the tables get + * linked to their containing namespaces during getTables. + */ + if (g_verbose) + write_msg(NULL, "reading user-defined tables\n"); + tblinfo = getTables(&numTables); + tblinfoindex = buildIndexArray(tblinfo, numTables, sizeof(TableInfo)); + + /* Do this after we've built tblinfoindex */ + getOwnedSeqs(tblinfo, numTables); if (g_verbose) write_msg(NULL, "reading extensions\n"); @@ -114,7 +131,7 @@ getSchemaData(int *numTablesPtr) funinfo = getFuncs(&numFuncs); funinfoindex = buildIndexArray(funinfo, numFuncs, sizeof(FuncInfo)); - /* this must be after getFuncs */ + /* this must be after getTables and getFuncs */ if (g_verbose) write_msg(NULL, "reading user-defined types\n"); typinfo = getTypes(&numTypes); @@ -183,19 +200,10 @@ getSchemaData(int *numTablesPtr) write_msg(NULL, "reading type casts\n"); getCasts(&numCasts); - if (g_verbose) - write_msg(NULL, "reading user-defined tables\n"); - tblinfo = getTables(&numTables); - tblinfoindex = buildIndexArray(tblinfo, numTables, sizeof(TableInfo)); - if (g_verbose) write_msg(NULL, "reading table inheritance information\n"); inhinfo = getInherits(&numInherits); - if (g_verbose) - write_msg(NULL, "reading rewrite rules\n"); - getRules(&numRules); - /* * Identify extension member objects and mark them as not to be dumped. * This must happen after reading all objects that can be direct members @@ -230,6 +238,10 @@ getSchemaData(int *numTablesPtr) write_msg(NULL, "reading triggers\n"); getTriggers(tblinfo, numTables); + if (g_verbose) + write_msg(NULL, "reading rewrite rules\n"); + getRules(&numRules); + *numTablesPtr = numTables; return tblinfo; } @@ -277,7 +289,13 @@ flagInhTables(TableInfo *tblinfo, int numTables, /* flagInhAttrs - * for each dumpable table in tblinfo, flag its inherited attributes - * so when we dump the table out, we don't dump out the inherited attributes + * + * What we need to do here is detect child columns that inherit NOT NULL + * bits from their parents (so that we needn't specify that again for the + * child) and child columns that have DEFAULT NULL when their parents had + * some non-null default. In the latter case, we make up a dummy AttrDefInfo + * object so that we'll correctly emit the necessary DEFAULT NULL clause; + * otherwise the backend will apply an inherited default to the column. * * modifies tblinfo */ @@ -293,7 +311,6 @@ flagInhAttrs(TableInfo *tblinfo, int numTables) TableInfo *tbinfo = &(tblinfo[i]); int numParents; TableInfo **parents; - TableInfo *parent; /* Sequences and views never have parents */ if (tbinfo->relkind == RELKIND_SEQUENCE || @@ -310,132 +327,70 @@ flagInhAttrs(TableInfo *tblinfo, int numTables) if (numParents == 0) continue; /* nothing to see here, move along */ - /*---------------------------------------------------------------- - * For each attr, check the parent info: if no parent has an attr - * with the same name, then it's not inherited. If there *is* an - * attr with the same name, then only dump it if: - * - * - it is NOT NULL and zero parents are NOT NULL - * OR - * - it has a default value AND the default value does not match - * all parent default values, or no parents specify a default. - * - * See discussion on -hackers around 2-Apr-2001. - *---------------------------------------------------------------- - */ + /* For each column, search for matching column names in parent(s) */ for (j = 0; j < tbinfo->numatts; j++) { - bool foundAttr; /* Attr was found in a parent */ bool foundNotNull; /* Attr was NOT NULL in a parent */ - bool defaultsMatch; /* All non-empty defaults match */ - bool defaultsFound; /* Found a default in a parent */ - AttrDefInfo *attrDef; + bool foundDefault; /* Found a default in a parent */ - foundAttr = false; - foundNotNull = false; - defaultsMatch = true; - defaultsFound = false; - - attrDef = tbinfo->attrdefs[j]; + /* no point in examining dropped columns */ + if (tbinfo->attisdropped[j]) + continue; + foundNotNull = false; + foundDefault = false; for (k = 0; k < numParents; k++) { + TableInfo *parent = parents[k]; int inhAttrInd; - parent = parents[k]; inhAttrInd = strInArray(tbinfo->attnames[j], parent->attnames, parent->numatts); - - if (inhAttrInd != -1) + if (inhAttrInd >= 0) { - AttrDefInfo *inhDef = parent->attrdefs[inhAttrInd]; - - foundAttr = true; foundNotNull |= parent->notnull[inhAttrInd]; - if (inhDef != NULL) - { - defaultsFound = true; - - /* - * If any parent has a default and the child doesn't, - * we have to emit an explicit DEFAULT NULL clause for - * the child, else the parent's default will win. - */ - if (attrDef == NULL) - { - attrDef = (AttrDefInfo *) malloc(sizeof(AttrDefInfo)); - attrDef->dobj.objType = DO_ATTRDEF; - attrDef->dobj.catId.tableoid = 0; - attrDef->dobj.catId.oid = 0; - AssignDumpId(&attrDef->dobj); - attrDef->adtable = tbinfo; - attrDef->adnum = j + 1; - attrDef->adef_expr = strdup("NULL"); - - attrDef->dobj.name = strdup(tbinfo->dobj.name); - attrDef->dobj.namespace = tbinfo->dobj.namespace; - - attrDef->dobj.dump = tbinfo->dobj.dump; - - attrDef->separate = false; - addObjectDependency(&tbinfo->dobj, - attrDef->dobj.dumpId); - - tbinfo->attrdefs[j] = attrDef; - } - if (strcmp(attrDef->adef_expr, inhDef->adef_expr) != 0) - { - defaultsMatch = false; - - /* - * Whenever there is a non-matching parent - * default, add a dependency to force the parent - * default to be dumped first, in case the - * defaults end up being dumped as separate - * commands. Otherwise the parent default will - * override the child's when it is applied. - */ - addObjectDependency(&attrDef->dobj, - inhDef->dobj.dumpId); - } - } + foundDefault |= (parent->attrdefs[inhAttrInd] != NULL); } } - /* - * Based on the scan of the parents, decide if we can rely on the - * inherited attr - */ - if (foundAttr) /* Attr was inherited */ + /* Remember if we found inherited NOT NULL */ + tbinfo->inhNotNull[j] = foundNotNull; + + /* Manufacture a DEFAULT NULL clause if necessary */ + if (foundDefault && tbinfo->attrdefs[j] == NULL) { - /* Set inherited flag by default */ - tbinfo->inhAttrs[j] = true; - tbinfo->inhAttrDef[j] = true; - tbinfo->inhNotNull[j] = true; - - /* - * Clear it if attr had a default, but parents did not, or - * mismatch - */ - if ((attrDef != NULL) && (!defaultsFound || !defaultsMatch)) + AttrDefInfo *attrDef; + + attrDef = (AttrDefInfo *) malloc(sizeof(AttrDefInfo)); + attrDef->dobj.objType = DO_ATTRDEF; + attrDef->dobj.catId.tableoid = 0; + attrDef->dobj.catId.oid = 0; + AssignDumpId(&attrDef->dobj); + attrDef->dobj.name = strdup(tbinfo->dobj.name); + attrDef->dobj.namespace = tbinfo->dobj.namespace; + attrDef->dobj.dump = tbinfo->dobj.dump; + + attrDef->adtable = tbinfo; + attrDef->adnum = j + 1; + attrDef->adef_expr = strdup("NULL"); + + /* Will column be dumped explicitly? */ + if (shouldPrintColumn(tbinfo, j)) { - tbinfo->inhAttrs[j] = false; - tbinfo->inhAttrDef[j] = false; + attrDef->separate = false; + /* No dependency needed: NULL cannot have dependencies */ } - - /* - * Clear it if NOT NULL and none of the parents were NOT NULL - */ - if (tbinfo->notnull[j] && !foundNotNull) + else { - tbinfo->inhAttrs[j] = false; - tbinfo->inhNotNull[j] = false; + /* column will be suppressed, print default separately */ + attrDef->separate = true; + /* ensure it comes out after the table */ + addObjectDependency(&attrDef->dobj, + tbinfo->dobj.dumpId); } - /* Clear it if attr has local definition */ - if (tbinfo->attislocal[j]) - tbinfo->inhAttrs[j] = false; + tbinfo->attrdefs[j] = attrDef; } } } @@ -782,6 +737,17 @@ findCollationByOid(Oid oid) return (CollInfo *) findObjectByOid(oid, collinfoindex, numCollations); } +/* + * findNamespaceByOid + * finds the entry (in nspinfo) of the namespace with the given oid + * returns NULL if not found + */ +NamespaceInfo * +findNamespaceByOid(Oid oid) +{ + return (NamespaceInfo *) findObjectByOid(oid, nspinfoindex, numNamespaces); +} + /* * findParentsByOid diff --git a/src/bin/pg_dump/nls.mk b/src/bin/pg_dump/nls.mk index 1049c6340e..04bd214498 100644 --- a/src/bin/pg_dump/nls.mk +++ b/src/bin/pg_dump/nls.mk @@ -1,6 +1,6 @@ # src/bin/pg_dump/nls.mk CATALOG_NAME := pg_dump -AVAIL_LANGUAGES := de es fr it ja ko pt_BR sv tr zh_CN zh_TW +AVAIL_LANGUAGES := cs de es fr it ja ko pl pt_BR ru sv tr zh_CN zh_TW GETTEXT_FILES := pg_dump.c common.c pg_backup_archiver.c pg_backup_custom.c \ pg_backup_db.c pg_backup_files.c pg_backup_null.c \ pg_backup_tar.c pg_restore.c pg_dumpall.c \ diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c index 0e1037cf00..63e6e859e8 100644 --- a/src/bin/pg_dump/pg_backup_archiver.c +++ b/src/bin/pg_dump/pg_backup_archiver.c @@ -97,6 +97,7 @@ static ArchiveHandle *_allocAH(const char *FileSpec, const ArchiveFormat fmt, static void _getObjectDescription(PQExpBuffer buf, TocEntry *te, ArchiveHandle *AH); static void _printTocEntry(ArchiveHandle *AH, TocEntry *te, RestoreOptions *ropt, bool isData, bool acl_pass); +static char *replace_line_endings(const char *str); static void _doSetFixedOutputState(ArchiveHandle *AH); @@ -117,6 +118,7 @@ static TocEntry *getTocEntryByDumpId(ArchiveHandle *AH, DumpId id); static void _moveBefore(ArchiveHandle *AH, TocEntry *pos, TocEntry *te); static int _discoverArchiveFormat(ArchiveHandle *AH); +static int RestoringToDB(ArchiveHandle *AH); static void dump_lo_buf(ArchiveHandle *AH); static void _write_msg(const char *modulename, const char *fmt, va_list ap); static void _die_horribly(ArchiveHandle *AH, const char *modulename, const char *fmt, va_list ap); @@ -212,6 +214,7 @@ void RestoreArchive(Archive *AHX, RestoreOptions *ropt) { ArchiveHandle *AH = (ArchiveHandle *) AHX; + bool parallel_mode; TocEntry *te; teReqs reqs; OutputContext sav; @@ -237,6 +240,27 @@ RestoreArchive(Archive *AHX, RestoreOptions *ropt) if (ropt->createDB && ropt->single_txn) die_horribly(AH, modulename, "-C and -1 are incompatible options\n"); + /* + * If we're going to do parallel restore, there are some restrictions. + */ + parallel_mode = (ropt->number_of_jobs > 1 && ropt->useDB); + if (parallel_mode) + { + /* We haven't got round to making this work for all archive formats */ + if (AH->ClonePtr == NULL || AH->ReopenPtr == NULL) + die_horribly(AH, modulename, "parallel restore is not supported with this archive file format\n"); + + /* Doesn't work if the archive represents dependencies as OIDs */ + if (AH->version < K_VERS_1_8) + die_horribly(AH, modulename, "parallel restore is not supported with archives made by pre-8.0 pg_dump\n"); + + /* + * It's also not gonna work if we can't reopen the input file, so + * let's try that immediately. + */ + (AH->ReopenPtr) (AH); + } + /* * Make sure we won't need (de)compression we haven't got */ @@ -261,8 +285,12 @@ RestoreArchive(Archive *AHX, RestoreOptions *ropt) if (AH->version < K_VERS_1_3) die_horribly(AH, modulename, "direct database connections are not supported in pre-1.3 archives\n"); - /* XXX Should get this from the archive */ - AHX->minRemoteVersion = 070100; + /* + * We don't want to guess at whether the dump will successfully + * restore; allow the attempt regardless of the version of the restore + * target. + */ + AHX->minRemoteVersion = 0; AHX->maxRemoteVersion = 999999; ConnectDatabase(AHX, ropt->dbname, @@ -384,7 +412,7 @@ RestoreArchive(Archive *AHX, RestoreOptions *ropt) * * In parallel mode, turn control over to the parallel-restore logic. */ - if (ropt->number_of_jobs > 1 && ropt->useDB) + if (parallel_mode) restore_toc_entries_parallel(AH); else { @@ -589,23 +617,25 @@ restore_toc_entry(ArchiveHandle *AH, TocEntry *te, } /* - * If we have a copy statement, use it. As of V1.3, these - * are separate to allow easy import from withing a - * database connection. Pre 1.3 archives can not use DB - * connections and are sent to output only. - * - * For V1.3+, the table data MUST have a copy statement so - * that we can go into appropriate mode with libpq. + * If we have a copy statement, use it. */ if (te->copyStmt && strlen(te->copyStmt) > 0) { ahprintf(AH, "%s", te->copyStmt); - AH->writingCopyData = true; + AH->outputKind = OUTPUT_COPYDATA; } + else + AH->outputKind = OUTPUT_OTHERDATA; (*AH->PrintTocDataPtr) (AH, te, ropt); - AH->writingCopyData = false; + /* + * Terminate COPY if needed. + */ + if (AH->outputKind == OUTPUT_COPYDATA && + RestoringToDB(AH)) + EndDBCopyMode(AH, te); + AH->outputKind = OUTPUT_SQLCMDS; /* close out the transaction started above */ if (is_parallel && te->created) @@ -808,6 +838,9 @@ PrintTOCSummary(Archive *AHX, RestoreOptions *ropt) case archCustom: fmtName = "CUSTOM"; break; + case archDirectory: + fmtName = "DIRECTORY"; + break; case archTar: fmtName = "TAR"; break; @@ -939,7 +972,7 @@ StartRestoreBlob(ArchiveHandle *AH, Oid oid, bool drop) /* Initialize the LO Buffer */ AH->lo_buf_used = 0; - ahlog(AH, 2, "restoring large object with OID %u\n", oid); + ahlog(AH, 1, "restoring large object with OID %u\n", oid); /* With an old archive we must do drop and create logic here */ if (old_blob_style && drop) @@ -1248,17 +1281,13 @@ ahprintf(ArchiveHandle *AH, const char *fmt,...) { char *p = NULL; va_list ap; - int bSize = strlen(fmt) + 256; /* Should be enough */ + int bSize = strlen(fmt) + 256; /* Usually enough */ int cnt = -1; /* * This is paranoid: deal with the possibility that vsnprintf is willing - * to ignore trailing null - */ - - /* - * or returns > 0 even if string does not fit. It may be the case that it - * returns cnt = bufsize + * to ignore trailing null or returns > 0 even if string does not fit. + * It may be the case that it returns cnt = bufsize. */ while (cnt < 0 || cnt >= (bSize - 1)) { @@ -1340,7 +1369,7 @@ dump_lo_buf(ArchiveHandle *AH) /* - * Write buffer to the output file (usually stdout). This is user for + * Write buffer to the output file (usually stdout). This is used for * outputting 'restore' scripts etc. It is even possible for an archive * format to create a custom output routine to 'fake' a restore if it * wants to generate a script (see TAR output). @@ -1392,7 +1421,7 @@ ahwrite(const void *ptr, size_t size, size_t nmemb, ArchiveHandle *AH) * connected then send it to the DB. */ if (RestoringToDB(AH)) - return ExecuteSqlCommandBuf(AH, (void *) ptr, size * nmemb); /* Always 1, currently */ + return ExecuteSqlCommandBuf(AH, (const char *) ptr, size * nmemb); else { res = fwrite((void *) ptr, size, nmemb, AH->OF); @@ -1985,8 +2014,7 @@ _allocAH(const char *FileSpec, const ArchiveFormat fmt, AH->mode = mode; AH->compression = compression; - AH->pgCopyBuf = createPQExpBuffer(); - AH->sqlBuf = createPQExpBuffer(); + memset(&(AH->sqlparse), 0, sizeof(AH->sqlparse)); /* Open stdout with no compression for AH output handle */ AH->gzOut = 0; @@ -2919,6 +2947,9 @@ _printTocEntry(ArchiveHandle *AH, TocEntry *te, RestoreOptions *ropt, bool isDat if (!AH->noTocComments) { const char *pfx; + char *sanitized_name; + char *sanitized_schema; + char *sanitized_owner; if (isData) pfx = "Data for "; @@ -2940,12 +2971,39 @@ _printTocEntry(ArchiveHandle *AH, TocEntry *te, RestoreOptions *ropt, bool isDat ahprintf(AH, "\n"); } } + + /* + * Zap any line endings embedded in user-supplied fields, to prevent + * corruption of the dump (which could, in the worst case, present an + * SQL injection vulnerability if someone were to incautiously load a + * dump containing objects with maliciously crafted names). + */ + sanitized_name = replace_line_endings(te->tag); + if (te->namespace) + sanitized_schema = replace_line_endings(te->namespace); + else + sanitized_schema = strdup("-"); + if (!ropt->noOwner) + sanitized_owner = replace_line_endings(te->owner); + else + sanitized_owner = strdup("-"); + ahprintf(AH, "-- %sName: %s; Type: %s; Schema: %s; Owner: %s", - pfx, te->tag, te->desc, - te->namespace ? te->namespace : "-", - ropt->noOwner ? "-" : te->owner); + pfx, sanitized_name, te->desc, sanitized_schema, + sanitized_owner); + + free(sanitized_name); + free(sanitized_schema); + free(sanitized_owner); + if (te->tablespace && !ropt->noTablespace) - ahprintf(AH, "; Tablespace: %s", te->tablespace); + { + char *sanitized_tablespace; + + sanitized_tablespace = replace_line_endings(te->tablespace); + ahprintf(AH, "; Tablespace: %s", sanitized_tablespace); + free(sanitized_tablespace); + } ahprintf(AH, "\n"); if (AH->PrintExtraTocPtr !=NULL) @@ -3040,6 +3098,27 @@ _printTocEntry(ArchiveHandle *AH, TocEntry *te, RestoreOptions *ropt, bool isDat } } +/* + * Sanitize a string to be included in an SQL comment, by replacing any + * newlines with spaces. + */ +static char * +replace_line_endings(const char *str) +{ + char *result; + char *s; + + result = strdup(str); + + for (s = result; *s != '\0'; s++) + { + if (*s == '\n' || *s == '\r') + *s = ' '; + } + + return result; +} + void WriteHead(ArchiveHandle *AH) { @@ -3261,14 +3340,6 @@ restore_toc_entries_parallel(ArchiveHandle *AH) ahlog(AH, 2, "entering restore_toc_entries_parallel\n"); - /* we haven't got round to making this work for all archive formats */ - if (AH->ClonePtr == NULL || AH->ReopenPtr == NULL) - die_horribly(AH, modulename, "parallel restore is not supported with this archive file format\n"); - - /* doesn't work if the archive represents dependencies as OIDs, either */ - if (AH->version < K_VERS_1_8) - die_horribly(AH, modulename, "parallel restore is not supported with archives made by pre-8.0 pg_dump\n"); - slots = (ParallelSlot *) calloc(sizeof(ParallelSlot), n_slots); /* Adjust dependency information */ @@ -4200,9 +4271,7 @@ CloneArchive(ArchiveHandle *AH) memcpy(clone, AH, sizeof(ArchiveHandle)); /* Handle format-independent fields */ - clone->pgCopyBuf = createPQExpBuffer(); - clone->sqlBuf = createPQExpBuffer(); - clone->sqlparse.tagBuf = NULL; + memset(&(clone->sqlparse), 0, sizeof(clone->sqlparse)); /* The clone will have its own connection, so disregard connection state */ clone->connection = NULL; @@ -4236,10 +4305,8 @@ DeCloneArchive(ArchiveHandle *AH) (AH->DeClonePtr) (AH); /* Clear state allocated by CloneArchive */ - destroyPQExpBuffer(AH->pgCopyBuf); - destroyPQExpBuffer(AH->sqlBuf); - if (AH->sqlparse.tagBuf) - destroyPQExpBuffer(AH->sqlparse.tagBuf); + if (AH->sqlparse.curCmd) + destroyPQExpBuffer(AH->sqlparse.curCmd); /* Clear any connection-local state */ if (AH->currUser) diff --git a/src/bin/pg_dump/pg_backup_archiver.h b/src/bin/pg_dump/pg_backup_archiver.h index f9af8742cc..45c9139bc0 100644 --- a/src/bin/pg_dump/pg_backup_archiver.h +++ b/src/bin/pg_dump/pg_backup_archiver.h @@ -135,23 +135,15 @@ typedef size_t (*CustomOutPtr) (struct _archiveHandle * AH, const void *buf, siz typedef enum { SQL_SCAN = 0, /* normal */ - SQL_IN_SQL_COMMENT, /* -- comment */ - SQL_IN_EXT_COMMENT, /* slash-star comment */ SQL_IN_SINGLE_QUOTE, /* '...' literal */ - SQL_IN_E_QUOTE, /* E'...' literal */ - SQL_IN_DOUBLE_QUOTE, /* "..." identifier */ - SQL_IN_DOLLAR_TAG, /* possible dollar-quote starting tag */ - SQL_IN_DOLLAR_QUOTE /* body of dollar quote */ + SQL_IN_DOUBLE_QUOTE /* "..." identifier */ } sqlparseState; typedef struct { sqlparseState state; /* see above */ - char lastChar; /* preceding char, or '\0' initially */ bool backSlash; /* next char is backslash quoted? */ - int braceDepth; /* parenthesis nesting depth */ - PQExpBuffer tagBuf; /* dollar quote tag (NULL if not created) */ - int minTagEndPos; /* first possible end position of $-quote */ + PQExpBuffer curCmd; /* incomplete line (NULL if not created) */ } sqlparseInfo; typedef enum @@ -162,6 +154,13 @@ typedef enum STAGE_FINALIZING } ArchiverStage; +typedef enum +{ + OUTPUT_SQLCMDS = 0, /* emitting general SQL commands */ + OUTPUT_COPYDATA, /* writing COPY data */ + OUTPUT_OTHERDATA /* writing data as INSERT commands */ +} ArchiverOutput; + typedef enum { REQ_SCHEMA = 1, @@ -189,8 +188,7 @@ typedef struct _archiveHandle * Added V1.7 */ ArchiveFormat format; /* Archive format */ - sqlparseInfo sqlparse; - PQExpBuffer sqlBuf; + sqlparseInfo sqlparse; /* state for parsing INSERT data */ time_t createDate; /* Date archive created */ @@ -242,10 +240,8 @@ typedef struct _archiveHandle PGconn *connection; int connectToDB; /* Flag to indicate if direct DB connection is * required */ - bool writingCopyData; /* True when we are sending COPY data */ + ArchiverOutput outputKind; /* Flag for what we're currently writing */ bool pgCopyIn; /* Currently in libpq 'COPY IN' mode. */ - PQExpBuffer pgCopyBuf; /* Left-over data from incomplete lines in - * COPY IN */ int loFd; /* BLOB fd */ int writingBlob; /* Flag */ diff --git a/src/bin/pg_dump/pg_backup_custom.c b/src/bin/pg_dump/pg_backup_custom.c index 01d5e37999..9224d7bbe2 100644 --- a/src/bin/pg_dump/pg_backup_custom.c +++ b/src/bin/pg_dump/pg_backup_custom.c @@ -735,10 +735,15 @@ _ReopenArchive(ArchiveHandle *AH) if (AH->mode == archModeWrite) die_horribly(AH, modulename, "can only reopen input archives\n"); + + /* + * These two cases are user-facing errors since they represent unsupported + * (but not invalid) use-cases. Word the error messages appropriately. + */ if (AH->fSpec == NULL || strcmp(AH->fSpec, "") == 0) - die_horribly(AH, modulename, "cannot reopen stdin\n"); + die_horribly(AH, modulename, "parallel restore from stdin is not supported\n"); if (!ctx->hasSeek) - die_horribly(AH, modulename, "cannot reopen non-seekable file\n"); + die_horribly(AH, modulename, "parallel restore from non-seekable file is not supported\n"); errno = 0; tpos = ftello(AH->FH); diff --git a/src/bin/pg_dump/pg_backup_db.c b/src/bin/pg_dump/pg_backup_db.c index cc3882c46c..3851398b1d 100644 --- a/src/bin/pg_dump/pg_backup_db.c +++ b/src/bin/pg_dump/pg_backup_db.c @@ -14,26 +14,19 @@ #include "dumputils.h" #include - #include - #ifdef HAVE_TERMIOS_H #include #endif +#define DB_MAX_ERR_STMT 128 + static const char *modulename = gettext_noop("archiver (db)"); static void _check_database_version(ArchiveHandle *AH); static PGconn *_connectDB(ArchiveHandle *AH, const char *newdbname, const char *newUser); static void notice_processor(void *arg, const char *message); -static char *_sendSQLLine(ArchiveHandle *AH, char *qry, char *eos); -static char *_sendCopyLine(ArchiveHandle *AH, char *qry, char *eos); - -static bool _isIdentChar(unsigned char c); -static bool _isDQChar(unsigned char c, bool atStart); - -#define DB_MAX_ERR_STMT 128 static int _parse_version(ArchiveHandle *AH, const char *versionString) @@ -312,7 +305,8 @@ ConnectDatabase(Archive *AHX, /* check to see that the backend connection was successfully made */ if (PQstatus(AH->connection) == CONNECTION_BAD) die_horribly(AH, modulename, "connection to database \"%s\" failed: %s", - PQdb(AH->connection), PQerrorMessage(AH->connection)); + PQdb(AH->connection) ? PQdb(AH->connection) : "", + PQerrorMessage(AH->connection)); /* check for version mismatch */ _check_database_version(AH); @@ -330,8 +324,10 @@ notice_processor(void *arg, const char *message) } -/* Public interface */ -/* Convenience function to send a query. Monitors result to handle COPY statements */ +/* + * Convenience function to send a query. + * Monitors result to detect COPY statements + */ static void ExecuteSqlCommand(ArchiveHandle *AH, const char *qry, const char *desc) { @@ -348,6 +344,7 @@ ExecuteSqlCommand(ArchiveHandle *AH, const char *qry, const char *desc) { case PGRES_COMMAND_OK: case PGRES_TUPLES_OK: + case PGRES_EMPTY_QUERY: /* A-OK */ break; case PGRES_COPY_IN: @@ -372,220 +369,68 @@ ExecuteSqlCommand(ArchiveHandle *AH, const char *qry, const char *desc) PQclear(res); } + /* - * Used by ExecuteSqlCommandBuf to send one buffered line when running a COPY command. + * Process non-COPY table data (that is, INSERT commands). + * + * The commands have been run together as one long string for compressibility, + * and we are receiving them in bufferloads with arbitrary boundaries, so we + * have to locate command boundaries and save partial commands across calls. + * All state must be kept in AH->sqlparse, not in local variables of this + * routine. We assume that AH->sqlparse was filled with zeroes when created. + * + * We have to lex the data to the extent of identifying literals and quoted + * identifiers, so that we can recognize statement-terminating semicolons. + * We assume that INSERT data will not contain SQL comments, E'' literals, + * or dollar-quoted strings, so this is much simpler than a full SQL lexer. */ -static char * -_sendCopyLine(ArchiveHandle *AH, char *qry, char *eos) +static void +ExecuteInsertCommands(ArchiveHandle *AH, const char *buf, size_t bufLen) { - size_t loc; /* Location of next newline */ - int pos = 0; /* Current position */ - int sPos = 0; /* Last pos of a slash char */ - int isEnd = 0; - - /* loop to find unquoted newline ending the line of COPY data */ - for (;;) - { - loc = strcspn(&qry[pos], "\n") + pos; - - /* If no match, then wait */ - if (loc >= (eos - qry)) /* None found */ - { - appendBinaryPQExpBuffer(AH->pgCopyBuf, qry, (eos - qry)); - return eos; - } - - /* - * fprintf(stderr, "Found cr at %d, prev char was %c, next was %c\n", - * loc, qry[loc-1], qry[loc+1]); - */ - - /* Count the number of preceding slashes */ - sPos = loc; - while (sPos > 0 && qry[sPos - 1] == '\\') - sPos--; - - sPos = loc - sPos; - - /* - * If an odd number of preceding slashes, then \n was escaped so set - * the next search pos, and loop (if any left). - */ - if ((sPos & 1) == 1) - { - /* fprintf(stderr, "cr was escaped\n"); */ - pos = loc + 1; - if (pos >= (eos - qry)) - { - appendBinaryPQExpBuffer(AH->pgCopyBuf, qry, (eos - qry)); - return eos; - } - } - else - break; - } - - /* We found an unquoted newline */ - qry[loc] = '\0'; - appendPQExpBuffer(AH->pgCopyBuf, "%s\n", qry); - isEnd = (strcmp(AH->pgCopyBuf->data, "\\.\n") == 0); - - /* - * Note that we drop the data on the floor if libpq has failed to enter - * COPY mode; this allows us to behave reasonably when trying to continue - * after an error in a COPY command. - */ - if (AH->pgCopyIn && - PQputCopyData(AH->connection, AH->pgCopyBuf->data, - AH->pgCopyBuf->len) <= 0) - die_horribly(AH, modulename, "error returned by PQputCopyData: %s", - PQerrorMessage(AH->connection)); + const char *qry = buf; + const char *eos = buf + bufLen; - resetPQExpBuffer(AH->pgCopyBuf); + /* initialize command buffer if first time through */ + if (AH->sqlparse.curCmd == NULL) + AH->sqlparse.curCmd = createPQExpBuffer(); - if (isEnd && AH->pgCopyIn) + for (; qry < eos; qry++) { - PGresult *res; + char ch = *qry; - if (PQputCopyEnd(AH->connection, NULL) <= 0) - die_horribly(AH, modulename, "error returned by PQputCopyEnd: %s", - PQerrorMessage(AH->connection)); + /* For neatness, we skip any newlines between commands */ + if (!(ch == '\n' && AH->sqlparse.curCmd->len == 0)) + appendPQExpBufferChar(AH->sqlparse.curCmd, ch); - /* Check command status and return to normal libpq state */ - res = PQgetResult(AH->connection); - if (PQresultStatus(res) != PGRES_COMMAND_OK) - warn_or_die_horribly(AH, modulename, "COPY failed: %s", - PQerrorMessage(AH->connection)); - PQclear(res); - - AH->pgCopyIn = false; - } - - return qry + loc + 1; -} - -/* - * Used by ExecuteSqlCommandBuf to send one buffered line of SQL - * (not data for the copy command). - */ -static char * -_sendSQLLine(ArchiveHandle *AH, char *qry, char *eos) -{ - /* - * The following is a mini state machine to assess the end of an SQL - * statement. It really only needs to parse good SQL, or at least that's - * the theory... End-of-statement is assumed to be an unquoted, - * un-commented semi-colon that's not within any parentheses. - * - * Note: the input can be split into bufferloads at arbitrary boundaries. - * Therefore all state must be kept in AH->sqlparse, not in local - * variables of this routine. We assume that AH->sqlparse was filled with - * zeroes when created. - */ - for (; qry < eos; qry++) - { switch (AH->sqlparse.state) { case SQL_SCAN: /* Default state == 0, set in _allocAH */ - if (*qry == ';' && AH->sqlparse.braceDepth == 0) + if (ch == ';') { /* * We've found the end of a statement. Send it and reset * the buffer. */ - appendPQExpBufferChar(AH->sqlBuf, ';'); /* inessential */ - ExecuteSqlCommand(AH, AH->sqlBuf->data, + ExecuteSqlCommand(AH, AH->sqlparse.curCmd->data, "could not execute query"); - resetPQExpBuffer(AH->sqlBuf); - AH->sqlparse.lastChar = '\0'; - - /* - * Remove any following newlines - so that embedded COPY - * commands don't get a starting newline. - */ - qry++; - while (qry < eos && *qry == '\n') - qry++; - - /* We've finished one line, so exit */ - return qry; + resetPQExpBuffer(AH->sqlparse.curCmd); } - else if (*qry == '\'') + else if (ch == '\'') { - if (AH->sqlparse.lastChar == 'E') - AH->sqlparse.state = SQL_IN_E_QUOTE; - else - AH->sqlparse.state = SQL_IN_SINGLE_QUOTE; + AH->sqlparse.state = SQL_IN_SINGLE_QUOTE; AH->sqlparse.backSlash = false; } - else if (*qry == '"') + else if (ch == '"') { AH->sqlparse.state = SQL_IN_DOUBLE_QUOTE; } - - /* - * Look for dollar-quotes. We make the assumption that - * $-quotes will not have an ident character just before them - * in pg_dump output. XXX is this good enough? - */ - else if (*qry == '$' && !_isIdentChar(AH->sqlparse.lastChar)) - { - AH->sqlparse.state = SQL_IN_DOLLAR_TAG; - /* initialize separate buffer with possible tag */ - if (AH->sqlparse.tagBuf == NULL) - AH->sqlparse.tagBuf = createPQExpBuffer(); - else - resetPQExpBuffer(AH->sqlparse.tagBuf); - appendPQExpBufferChar(AH->sqlparse.tagBuf, *qry); - } - else if (*qry == '-' && AH->sqlparse.lastChar == '-') - AH->sqlparse.state = SQL_IN_SQL_COMMENT; - else if (*qry == '*' && AH->sqlparse.lastChar == '/') - AH->sqlparse.state = SQL_IN_EXT_COMMENT; - else if (*qry == '(') - AH->sqlparse.braceDepth++; - else if (*qry == ')') - AH->sqlparse.braceDepth--; - break; - - case SQL_IN_SQL_COMMENT: - if (*qry == '\n') - AH->sqlparse.state = SQL_SCAN; - break; - - case SQL_IN_EXT_COMMENT: - - /* - * This isn't fully correct, because we don't account for - * nested slash-stars, but pg_dump never emits such. - */ - if (AH->sqlparse.lastChar == '*' && *qry == '/') - AH->sqlparse.state = SQL_SCAN; break; case SQL_IN_SINGLE_QUOTE: /* We needn't handle '' specially */ - if (*qry == '\'' && !AH->sqlparse.backSlash) - AH->sqlparse.state = SQL_SCAN; - else if (*qry == '\\') - AH->sqlparse.backSlash = !AH->sqlparse.backSlash; - else - AH->sqlparse.backSlash = false; - break; - - case SQL_IN_E_QUOTE: - - /* - * Eventually we will need to handle '' specially, because - * after E'...''... we should still be in E_QUOTE state. - * - * XXX problem: how do we tell whether the dump was made by a - * version that thinks backslashes aren't special in non-E - * literals?? - */ - if (*qry == '\'' && !AH->sqlparse.backSlash) + if (ch == '\'' && !AH->sqlparse.backSlash) AH->sqlparse.state = SQL_SCAN; - else if (*qry == '\\') + else if (ch == '\\' && !AH->public.std_strings) AH->sqlparse.backSlash = !AH->sqlparse.backSlash; else AH->sqlparse.backSlash = false; @@ -593,103 +438,93 @@ _sendSQLLine(ArchiveHandle *AH, char *qry, char *eos) case SQL_IN_DOUBLE_QUOTE: /* We needn't handle "" specially */ - if (*qry == '"') - AH->sqlparse.state = SQL_SCAN; - break; - - case SQL_IN_DOLLAR_TAG: - if (*qry == '$') - { - /* Do not add the closing $ to tagBuf */ - AH->sqlparse.state = SQL_IN_DOLLAR_QUOTE; - AH->sqlparse.minTagEndPos = AH->sqlBuf->len + AH->sqlparse.tagBuf->len + 1; - } - else if (_isDQChar(*qry, (AH->sqlparse.tagBuf->len == 1))) - { - /* Valid, so add to tag */ - appendPQExpBufferChar(AH->sqlparse.tagBuf, *qry); - } - else - { - /* - * Ooops, we're not really in a dollar-tag. Valid tag - * chars do not include the various chars we look for in - * this state machine, so it's safe to just jump from this - * state back to SCAN. We have to back up the qry pointer - * so that the current character gets rescanned in SCAN - * state; and then "continue" so that the bottom-of-loop - * actions aren't done yet. - */ - AH->sqlparse.state = SQL_SCAN; - qry--; - continue; - } - break; - - case SQL_IN_DOLLAR_QUOTE: - - /* - * If we are at a $, see whether what precedes it matches - * tagBuf. (Remember that the trailing $ of the tag was not - * added to tagBuf.) However, don't compare until we have - * enough data to be a possible match --- this is needed to - * avoid false match on '$a$a$...' - */ - if (*qry == '$' && - AH->sqlBuf->len >= AH->sqlparse.minTagEndPos && - strcmp(AH->sqlparse.tagBuf->data, - AH->sqlBuf->data + AH->sqlBuf->len - AH->sqlparse.tagBuf->len) == 0) + if (ch == '"') AH->sqlparse.state = SQL_SCAN; break; } - - appendPQExpBufferChar(AH->sqlBuf, *qry); - AH->sqlparse.lastChar = *qry; } - - /* - * If we get here, we've processed entire bufferload with no complete SQL - * stmt - */ - return eos; } -/* Convenience function to send one or more queries. Monitors result to handle COPY statements */ +/* + * Implement ahwrite() for direct-to-DB restore + */ int -ExecuteSqlCommandBuf(ArchiveHandle *AH, void *qryv, size_t bufLen) +ExecuteSqlCommandBuf(ArchiveHandle *AH, const char *buf, size_t bufLen) { - char *qry = (char *) qryv; - char *eos = qry + bufLen; - - /* - * fprintf(stderr, "\n\n*****\n Buffer:\n\n%s\n*******************\n\n", - * qry); - */ - - /* Could switch between command and COPY IN mode at each line */ - while (qry < eos) + if (AH->outputKind == OUTPUT_COPYDATA) + { + /* + * COPY data. + * + * We drop the data on the floor if libpq has failed to enter COPY + * mode; this allows us to behave reasonably when trying to continue + * after an error in a COPY command. + */ + if (AH->pgCopyIn && + PQputCopyData(AH->connection, buf, bufLen) <= 0) + die_horribly(AH, modulename, "error returned by PQputCopyData: %s", + PQerrorMessage(AH->connection)); + } + else if (AH->outputKind == OUTPUT_OTHERDATA) { /* - * If libpq is in CopyIn mode *or* if the archive structure shows we - * are sending COPY data, treat the data as COPY data. The pgCopyIn - * check is only needed for backwards compatibility with ancient - * archive files that might just issue a COPY command without marking - * it properly. Note that in an archive entry that has a copyStmt, - * all data up to the end of the entry will go to _sendCopyLine, and - * therefore will be dropped if libpq has failed to enter COPY mode. - * Also, if a "\." data terminator is found, anything remaining in the - * archive entry will be dropped. + * Table data expressed as INSERT commands. */ - if (AH->pgCopyIn || AH->writingCopyData) - qry = _sendCopyLine(AH, qry, eos); + ExecuteInsertCommands(AH, buf, bufLen); + } + else + { + /* + * General SQL commands; we assume that commands will not be split + * across calls. + * + * In most cases the data passed to us will be a null-terminated + * string, but if it's not, we have to add a trailing null. + */ + if (buf[bufLen] == '\0') + ExecuteSqlCommand(AH, buf, "could not execute query"); else - qry = _sendSQLLine(AH, qry, eos); + { + char *str = (char *) malloc(bufLen + 1); + + if (!str) + die_horribly(AH, modulename, "out of memory\n"); + memcpy(str, buf, bufLen); + str[bufLen] = '\0'; + ExecuteSqlCommand(AH, str, "could not execute query"); + free(str); + } } return 1; } +/* + * Terminate a COPY operation during direct-to-DB restore + */ +void +EndDBCopyMode(ArchiveHandle *AH, TocEntry *te) +{ + if (AH->pgCopyIn) + { + PGresult *res; + + if (PQputCopyEnd(AH->connection, NULL) <= 0) + die_horribly(AH, modulename, "error returned by PQputCopyEnd: %s", + PQerrorMessage(AH->connection)); + + /* Check command status and return to normal libpq state */ + res = PQgetResult(AH->connection); + if (PQresultStatus(res) != PGRES_COMMAND_OK) + warn_or_die_horribly(AH, modulename, "COPY failed for table \"%s\": %s", + te->tag, PQerrorMessage(AH->connection)); + PQclear(res); + + AH->pgCopyIn = false; + } +} + void StartTransaction(ArchiveHandle *AH) { @@ -728,32 +563,3 @@ DropBlobIfExists(ArchiveHandle *AH, Oid oid) oid, oid); } } - -static bool -_isIdentChar(unsigned char c) -{ - if ((c >= 'a' && c <= 'z') - || (c >= 'A' && c <= 'Z') - || (c >= '0' && c <= '9') - || (c == '_') - || (c == '$') - || (c >= (unsigned char) '\200') /* no need to check <= \377 */ - ) - return true; - else - return false; -} - -static bool -_isDQChar(unsigned char c, bool atStart) -{ - if ((c >= 'a' && c <= 'z') - || (c >= 'A' && c <= 'Z') - || (c == '_') - || (!atStart && c >= '0' && c <= '9') - || (c >= (unsigned char) '\200') /* no need to check <= \377 */ - ) - return true; - else - return false; -} diff --git a/src/bin/pg_dump/pg_backup_db.h b/src/bin/pg_dump/pg_backup_db.h index 93970b5a91..a1a84825e4 100644 --- a/src/bin/pg_dump/pg_backup_db.h +++ b/src/bin/pg_dump/pg_backup_db.h @@ -10,7 +10,9 @@ #include "pg_backup_archiver.h" -extern int ExecuteSqlCommandBuf(ArchiveHandle *AH, void *qry, size_t bufLen); +extern int ExecuteSqlCommandBuf(ArchiveHandle *AH, const char *buf, size_t bufLen); + +extern void EndDBCopyMode(ArchiveHandle *AH, struct _tocEntry * te); extern void StartTransaction(ArchiveHandle *AH); extern void CommitTransaction(ArchiveHandle *AH); diff --git a/src/bin/pg_dump/pg_backup_directory.c b/src/bin/pg_dump/pg_backup_directory.c index 111c3e822a..3936479cda 100644 --- a/src/bin/pg_dump/pg_backup_directory.c +++ b/src/bin/pg_dump/pg_backup_directory.c @@ -365,6 +365,9 @@ _PrintFileData(ArchiveHandle *AH, char *filename, RestoreOptions *ropt) ahwrite(buf, 1, cnt, AH); free(buf); + if (cfclose(cfp) != 0) + die_horribly(AH, modulename, "could not close data file: %s\n", + strerror(errno)); } /* diff --git a/src/bin/pg_dump/pg_backup_tar.c b/src/bin/pg_dump/pg_backup_tar.c index 041f9f9cbb..09fad7e095 100644 --- a/src/bin/pg_dump/pg_backup_tar.c +++ b/src/bin/pg_dump/pg_backup_tar.c @@ -648,56 +648,46 @@ _PrintTocData(ArchiveHandle *AH, TocEntry *te, RestoreOptions *ropt) { lclContext *ctx = (lclContext *) AH->formatData; lclTocEntry *tctx = (lclTocEntry *) te->formatData; - char *tmpCopy; - size_t i, - pos1, - pos2; + int pos1; if (!tctx->filename) return; + /* + * If we're writing the special restore.sql script, emit a suitable + * command to include each table's data from the corresponding file. + * + * In the COPY case this is a bit klugy because the regular COPY command + * was already printed before we get control. + */ if (ctx->isSpecialScript) { - if (!te->copyStmt) - return; - - /* Abort the default COPY */ - ahprintf(AH, "\\.\n"); - - /* Get a copy of the COPY statement and clean it up */ - tmpCopy = strdup(te->copyStmt); - for (i = 0; i < strlen(tmpCopy); i++) - tmpCopy[i] = pg_tolower((unsigned char) tmpCopy[i]); - - /* - * This is very nasty; we don't know if the archive used WITH OIDS, so - * we search the string for it in a paranoid sort of way. - */ - if (strncmp(tmpCopy, "copy ", 5) != 0) - die_horribly(AH, modulename, - "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n", tmpCopy); - - pos1 = 5; - for (pos1 = 5; pos1 < strlen(tmpCopy); pos1++) - if (tmpCopy[pos1] != ' ') - break; - - if (tmpCopy[pos1] == '"') - pos1 += 2; - - pos1 += strlen(te->tag); - - for (pos2 = pos1; pos2 < strlen(tmpCopy); pos2++) - if (strncmp(&tmpCopy[pos2], "from stdin", 10) == 0) - break; + if (te->copyStmt) + { + /* Abort the COPY FROM stdin */ + ahprintf(AH, "\\.\n"); - if (pos2 >= strlen(tmpCopy)) - die_horribly(AH, modulename, - "invalid COPY statement -- could not find \"from stdin\" in string \"%s\" starting at position %lu\n", - tmpCopy, (unsigned long) pos1); + /* + * The COPY statement should look like "COPY ... FROM stdin;\n", + * see dumpTableData(). + */ + pos1 = (int) strlen(te->copyStmt) - 13; + if (pos1 < 6 || strncmp(te->copyStmt, "COPY ", 5) != 0 || + strcmp(te->copyStmt + pos1, " FROM stdin;\n") != 0) + die_horribly(AH, modulename, + "unexpected COPY statement syntax: \"%s\"\n", + te->copyStmt); - ahwrite(tmpCopy, 1, pos2, AH); /* 'copy "table" [with oids]' */ - ahprintf(AH, " from '$$PATH$$/%s' %s", tctx->filename, &tmpCopy[pos2 + 10]); + /* Emit all but the FROM part ... */ + ahwrite(te->copyStmt, 1, pos1, AH); + /* ... and insert modified FROM */ + ahprintf(AH, " FROM '$$PATH$$/%s';\n\n", tctx->filename); + } + else + { + /* --inserts mode, no worries, just include the data file */ + ahprintf(AH, "\\i $$PATH$$/%s\n\n", tctx->filename); + } return; } @@ -730,7 +720,7 @@ _LoadBlobs(ArchiveHandle *AH, RestoreOptions *ropt) oid = atooid(&th->targetFile[5]); if (oid != 0) { - ahlog(AH, 1, "restoring large object OID %u\n", oid); + ahlog(AH, 1, "restoring large object with OID %u\n", oid); StartRestoreBlob(AH, oid, ropt->dropSchema); @@ -843,18 +833,14 @@ _CloseArchive(ArchiveHandle *AH) * if the files have been extracted. */ th = tarOpen(AH, "restore.sql", 'w'); - tarPrintf(AH, th, "create temporary table pgdump_restore_path(p text);\n"); + tarPrintf(AH, th, "--\n" "-- NOTE:\n" "--\n" "-- File paths need to be edited. Search for $$PATH$$ and\n" "-- replace it with the path to the directory containing\n" "-- the extracted data files.\n" - "--\n" - "-- Edit the following to match the path where the\n" - "-- tar archive has been extracted.\n" "--\n"); - tarPrintf(AH, th, "insert into pgdump_restore_path values('/tmp');\n\n"); AH->CustomOutPtr = _scriptOut; @@ -876,8 +862,12 @@ _CloseArchive(ArchiveHandle *AH) tarClose(AH, th); - /* Add a block of NULLs since it's de-rigeur. */ - for (i = 0; i < 512; i++) + ctx->isSpecialScript = 0; + + /* + * EOF marker for tar files is two blocks of NULLs. + */ + for (i = 0; i < 512 * 2; i++) { if (fputc(0, ctx->tarFH) == EOF) die_horribly(AH, modulename, @@ -1028,11 +1018,16 @@ _tarChecksum(char *header) int i, sum; - sum = 0; + /* + * Per POSIX, the checksum is the simple sum of all bytes in the header, + * treating the bytes as unsigned, and treating the checksum field (at + * offset 148) as though it contained 8 spaces. + */ + sum = 8 * ' '; /* presumed value for checksum field */ for (i = 0; i < 512; i++) if (i < 148 || i >= 156) sum += 0xFF & header[i]; - return sum + 256; /* Assume 8 blanks in checksum field */ + return sum; } bool @@ -1046,11 +1041,15 @@ isValidTarHeader(char *header) if (sum != chk) return false; - /* POSIX format */ - if (strncmp(&header[257], "ustar00", 7) == 0) + /* POSIX tar format */ + if (memcmp(&header[257], "ustar\0", 6) == 0 && + memcmp(&header[263], "00", 2) == 0) + return true; + /* GNU tar format */ + if (memcmp(&header[257], "ustar \0", 8) == 0) return true; - /* older format */ - if (strncmp(&header[257], "ustar ", 7) == 0) + /* not-quite-POSIX format written by pre-9.3 pg_dump */ + if (memcmp(&header[257], "ustar00\0", 8) == 0) return true; return false; diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index db7da049e4..9f282ec0ed 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -126,10 +126,6 @@ char g_comment_end[10]; static const CatalogId nilCatalogId = {0, 0}; -/* these are to avoid passing around info for findNamespace() */ -static NamespaceInfo *g_namespaces; -static int g_numNamespaces; - /* flags for various command-line long options */ static int binary_upgrade = 0; static int disable_dollar_quoting = 0; @@ -186,6 +182,7 @@ static void dumpTable(Archive *fout, TableInfo *tbinfo); static void dumpTableSchema(Archive *fout, TableInfo *tbinfo); static void dumpAttrDef(Archive *fout, AttrDefInfo *adinfo); static void dumpSequence(Archive *fout, TableInfo *tbinfo); +static void dumpSequenceData(Archive *fout, TableDataInfo *tdinfo); static void dumpIndex(Archive *fout, IndxInfo *indxinfo); static void dumpConstraint(Archive *fout, ConstraintInfo *coninfo); static void dumpTableConstraintComment(Archive *fout, ConstraintInfo *coninfo); @@ -206,6 +203,11 @@ static void dumpACL(Archive *fout, CatalogId objCatId, DumpId objDumpId, const char *acls); static void getDependencies(void); + +static DumpableObject *createBoundaryObjects(void); +static void addBoundaryDependencies(DumpableObject **dobjs, int numObjs, + DumpableObject *boundaryObjs); + static void getDomainConstraints(TypeInfo *tyinfo); static void getTableData(TableInfo *tblinfo, int numTables, bool oids); static void makeTableDataInfo(TableInfo *tbinfo, bool oids); @@ -264,6 +266,7 @@ main(int argc, char **argv) int numTables; DumpableObject **dobjs; int numObjs; + DumpableObject *boundaryObjs; int i; enum trivalue prompt_password = TRI_DEFAULT; int compressLevel = -1; @@ -528,20 +531,14 @@ main(int argc, char **argv) exit(1); } + /* Identify archive format to emit */ archiveFormat = parseArchiveFormat(format, &archiveMode); /* archiveFormat specific setup */ if (archiveFormat == archNull) plainText = 1; - /* - * Ignore compression level for plain format. XXX: This is a bit - * inconsistent, tar-format throws an error instead. - */ - if (archiveFormat == archNull) - compressLevel = 0; - - /* Custom and directory formats are compressed by default */ + /* Custom and directory formats are compressed by default, others not */ if (compressLevel == -1) { if (archiveFormat == archCustom || archiveFormat == archDirectory) @@ -550,7 +547,7 @@ main(int argc, char **argv) compressLevel = 0; } - /* open the output file */ + /* Open the output file */ g_fout = CreateArchive(filename, archiveFormat, compressLevel, archiveMode); if (g_fout == NULL) @@ -649,11 +646,46 @@ main(int argc, char **argv) do_sql_command(g_conn, "SET quote_all_identifiers = true"); /* - * Disables security label support if server version < v9.1.x + * Disable security label support if server version < v9.1.x (prevents + * access to nonexistent pg_seclabel catalog) */ - if (!no_security_labels && g_fout->remoteVersion < 90100) + if (g_fout->remoteVersion < 90100) no_security_labels = 1; + /* + * When running against 9.0 or later, check if we are in recovery mode, + * which means we are on a hot standby. + */ + if (g_fout->remoteVersion >= 90000) + { + PGresult *res; + const char *query = "SELECT pg_catalog.pg_is_in_recovery()"; + int ntups; + + res = PQexec(g_conn, query); + check_sql_result(res, g_conn, query, PGRES_TUPLES_OK); + ntups = PQntuples(res); + + if (ntups != 1) + { + write_msg(NULL, ngettext("query returned %d row instead of one: %s\n", + "query returned %d rows instead of one: %s\n", + ntups), + ntups, query); + exit_nicely(); + } + + if (strcmp(PQgetvalue(res, 0, 0), "t") == 0) + { + /* + * On hot standby slaves, never try to dump unlogged table data, + * since it will just throw an error. + */ + no_unlogged_table_data = true; + } + PQclear(res); + } + /* * Start transaction-snapshot mode transaction to dump consistent data. */ @@ -751,6 +783,17 @@ main(int argc, char **argv) */ getDependencies(); + /* Lastly, create dummy objects to represent the section boundaries */ + boundaryObjs = createBoundaryObjects(); + + /* Get pointers to all the known DumpableObjects */ + getDumpableObjects(&dobjs, &numObjs); + + /* + * Add dummy dependencies to enforce the dump section ordering. + */ + addBoundaryDependencies(dobjs, numObjs, boundaryObjs); + /* * Sort the objects into a safe dump order (no forward references). * @@ -760,14 +803,13 @@ main(int argc, char **argv) * will dump identically. Before 7.3 we don't have dependencies and we * use OID ordering as an (unreliable) guide to creation order. */ - getDumpableObjects(&dobjs, &numObjs); - if (g_fout->remoteVersion >= 70300) sortDumpableObjectsByTypeName(dobjs, numObjs); else sortDumpableObjectsByTypeOid(dobjs, numObjs); - sortDumpableObjects(dobjs, numObjs); + sortDumpableObjects(dobjs, numObjs, + boundaryObjs[0].dumpId, boundaryObjs[1].dumpId); /* * Create archive TOC entries for all the objects to be dumped, in a safe @@ -1099,8 +1141,11 @@ selectDumpableTable(TableInfo *tbinfo) * If it's a table's rowtype or an autogenerated array type, we also apply a * special type code to facilitate sorting into the desired order. (We don't * want to consider those to be ordinary types because that would bring tables - * up into the datatype part of the dump order.) Those tests should be made - * first to ensure the objType change is applied regardless of namespace etc. + * up into the datatype part of the dump order.) We still set the object's + * dump flag; that's not going to cause the dummy type to be dumped, but we + * need it so that casts involving such types will be dumped correctly -- see + * dumpCast. This means the flag should be set the same as for the underlying + * object (the table or base type). */ static void selectDumpableType(TypeInfo *tyinfo) @@ -1109,19 +1154,30 @@ selectDumpableType(TypeInfo *tyinfo) if (OidIsValid(tyinfo->typrelid) && tyinfo->typrelkind != RELKIND_COMPOSITE_TYPE) { - tyinfo->dobj.dump = false; + TableInfo *tytable = findTableByOid(tyinfo->typrelid); + tyinfo->dobj.objType = DO_DUMMY_TYPE; + if (tytable != NULL) + tyinfo->dobj.dump = tytable->dobj.dump; + else + tyinfo->dobj.dump = false; + return; } /* skip auto-generated array types */ - else if (tyinfo->isArray) + if (tyinfo->isArray) { - tyinfo->dobj.dump = false; tyinfo->dobj.objType = DO_DUMMY_TYPE; + /* + * Fall through to set the dump flag; we assume that the subsequent + * rules will do the same thing as they would for the array's base + * type. (We cannot reliably look up the base type here, since + * getTypes may not have processed it yet.) + */ } /* dump only types in dumpable namespaces */ - else if (!tyinfo->dobj.namespace->dobj.dump) + if (!tyinfo->dobj.namespace->dobj.dump) tyinfo->dobj.dump = false; /* skip undefined placeholder types */ @@ -1343,6 +1399,14 @@ dumpTableData_copy(Archive *fout, void *dcontext) return 1; } +/* + * Dump table data using INSERT commands. + * + * Caution: when we restore from an archive file direct to database, the + * INSERT commands emitted by this function have to be parsed by + * pg_backup_db.c's ExecuteInsertCommands(), which will not handle comments, + * E'' strings, or dollar-quoted strings. So don't emit anything like that. + */ static int dumpTableData_insert(Archive *fout, void *dcontext) { @@ -1548,33 +1612,41 @@ getTableData(TableInfo *tblinfo, int numTables, bool oids) for (i = 0; i < numTables; i++) { - /* Skip VIEWs (no data to dump) */ - if (tblinfo[i].relkind == RELKIND_VIEW) - continue; - /* Skip SEQUENCEs (handled elsewhere) */ - if (tblinfo[i].relkind == RELKIND_SEQUENCE) - continue; - /* Skip FOREIGN TABLEs (no data to dump) */ - if (tblinfo[i].relkind == RELKIND_FOREIGN_TABLE) - continue; - /* Skip unlogged tables if so requested */ - if (tblinfo[i].relpersistence == RELPERSISTENCE_UNLOGGED - && no_unlogged_table_data) - continue; - - if (tblinfo[i].dobj.dump && tblinfo[i].dataObj == NULL) + if (tblinfo[i].dobj.dump) makeTableDataInfo(&(tblinfo[i]), oids); } } /* * Make a dumpable object for the data of this specific table + * + * Note: we make a TableDataInfo if and only if we are going to dump the + * table data; the "dump" flag in such objects isn't used. */ static void makeTableDataInfo(TableInfo *tbinfo, bool oids) { TableDataInfo *tdinfo; + /* + * Nothing to do if we already decided to dump the table. This will + * happen for "config" tables. + */ + if (tbinfo->dataObj != NULL) + return; + + /* Skip VIEWs (no data to dump) */ + if (tbinfo->relkind == RELKIND_VIEW) + return; + /* Skip FOREIGN TABLEs (no data to dump) */ + if (tbinfo->relkind == RELKIND_FOREIGN_TABLE) + return; + /* Skip unlogged tables if so requested */ + if (tbinfo->relpersistence == RELPERSISTENCE_UNLOGGED && + no_unlogged_table_data) + return; + + /* OK, let's dump it */ tdinfo = (TableDataInfo *) malloc(sizeof(TableDataInfo)); tdinfo->dobj.objType = DO_TABLE_DATA; @@ -2602,8 +2674,7 @@ getNamespaces(int *numNamespaces) selectDumpableNamespace(&nsinfo[1]); - g_namespaces = nsinfo; - g_numNamespaces = *numNamespaces = 2; + *numNamespaces = 2; return nsinfo; } @@ -2656,8 +2727,7 @@ getNamespaces(int *numNamespaces) PQclear(res); destroyPQExpBuffer(query); - g_namespaces = nsinfo; - g_numNamespaces = *numNamespaces = ntups; + *numNamespaces = ntups; return nsinfo; } @@ -2668,36 +2738,37 @@ getNamespaces(int *numNamespaces) * getNamespaces * * NB: for pre-7.3 source database, we use object OID to guess whether it's - * a system object or not. In 7.3 and later there is no guessing. + * a system object or not. In 7.3 and later there is no guessing, and we + * don't use objoid at all. */ static NamespaceInfo * findNamespace(Oid nsoid, Oid objoid) { - int i; + NamespaceInfo *nsinfo; if (g_fout->remoteVersion >= 70300) { - for (i = 0; i < g_numNamespaces; i++) - { - NamespaceInfo *nsinfo = &g_namespaces[i]; - - if (nsoid == nsinfo->dobj.catId.oid) - return nsinfo; - } - write_msg(NULL, "schema with OID %u does not exist\n", nsoid); - exit_nicely(); + nsinfo = findNamespaceByOid(nsoid); } else { - /* This code depends on the layout set up by getNamespaces. */ + /* This code depends on the dummy objects set up by getNamespaces. */ + Oid i; + if (objoid > g_last_builtin_oid) i = 0; /* user object */ else i = 1; /* system object */ - return &g_namespaces[i]; + nsinfo = findNamespaceByOid(i); } - return NULL; /* keep compiler quiet */ + if (nsinfo == NULL) + { + write_msg(NULL, "schema with OID %u does not exist\n", nsoid); + exit_nicely(); + } + + return nsinfo; } /* @@ -3970,14 +4041,13 @@ getTables(int *numTables) * owning column, if any (note this dependency is AUTO as of 8.2) */ appendPQExpBuffer(query, - "SELECT c.tableoid, c.oid, relname, " - "relacl, relkind, relnamespace, " - "(%s relowner) AS rolname, " - "relchecks, (reltriggers <> 0) AS relhastriggers, " - "relhasindex, relhasrules, relhasoids, " - "relfrozenxid, " - "0 AS toid, " - "0 AS tfrozenxid, " + "SELECT c.tableoid, c.oid, c.relname, " + "c.relacl, c.relkind, c.relnamespace, " + "(%s c.relowner) AS rolname, " + "c.relchecks, (c.reltriggers <> 0) AS relhastriggers, " + "c.relhasindex, c.relhasrules, c.relhasoids, " + "c.relfrozenxid, tc.oid AS toid, " + "tc.relfrozenxid AS tfrozenxid, " "'p' AS relpersistence, " "NULL AS reloftype, " "d.refobjid AS owning_tab, " @@ -3991,7 +4061,8 @@ getTables(int *numTables) "d.classid = c.tableoid AND d.objid = c.oid AND " "d.objsubid = 0 AND " "d.refclassid = c.tableoid AND d.deptype = 'a') " - "WHERE relkind in ('%c', '%c', '%c', '%c') " + "LEFT JOIN pg_class tc ON (c.reltoastrelid = tc.oid) " + "WHERE c.relkind in ('%c', '%c', '%c', '%c') " "ORDER BY c.oid", username_subquery, RELKIND_SEQUENCE, @@ -4313,38 +4384,43 @@ getTables(int *numTables) PQclear(res); + destroyPQExpBuffer(query); + + return tblinfo; +} + +/* + * getOwnedSeqs + * identify owned sequences and mark them as dumpable if owning table is + * + * We used to do this in getTables(), but it's better to do it after the + * index used by findTableByOid() has been set up. + */ +void +getOwnedSeqs(TableInfo tblinfo[], int numTables) +{ + int i; + /* * Force sequences that are "owned" by table columns to be dumped whenever * their owning table is being dumped. */ - for (i = 0; i < ntups; i++) + for (i = 0; i < numTables; i++) { TableInfo *seqinfo = &tblinfo[i]; - int j; + TableInfo *owning_tab; if (!OidIsValid(seqinfo->owning_tab)) continue; /* not an owned sequence */ if (seqinfo->dobj.dump) continue; /* no need to search */ - - /* can't use findTableByOid yet, unfortunately */ - for (j = 0; j < ntups; j++) + owning_tab = findTableByOid(seqinfo->owning_tab); + if (owning_tab && owning_tab->dobj.dump) { - if (tblinfo[j].dobj.catId.oid == seqinfo->owning_tab) - { - if (tblinfo[j].dobj.dump) - { - seqinfo->interesting = true; - seqinfo->dobj.dump = true; - } - break; - } + seqinfo->interesting = true; + seqinfo->dobj.dump = true; } } - - destroyPQExpBuffer(query); - - return tblinfo; } /* @@ -4485,6 +4561,7 @@ getIndexes(TableInfo tblinfo[], int numTables) "i.indexrelid = c.conindid AND " "c.contype IN ('p','u','x')) " "WHERE i.indrelid = '%u'::pg_catalog.oid " + "AND i.indisvalid " "ORDER BY indexname", tbinfo->dobj.catId.oid); } @@ -4513,6 +4590,7 @@ getIndexes(TableInfo tblinfo[], int numTables) "ON (d.refclassid = c.tableoid " "AND d.refobjid = c.oid) " "WHERE i.indrelid = '%u'::pg_catalog.oid " + "AND i.indisvalid " "ORDER BY indexname", tbinfo->dobj.catId.oid); } @@ -5682,12 +5760,15 @@ getTableAttrs(TableInfo *tblinfo, int numTables) * attstattarget doesn't exist in 7.1. It does exist in 7.2, but * we don't dump it because we can't tell whether it's been * explicitly set or was just a default. + * + * attislocal doesn't exist before 7.3, either; in older databases + * we assume it's TRUE, else we'd fail to dump non-inherited atts. */ appendPQExpBuffer(q, "SELECT a.attnum, a.attname, a.atttypmod, " "-1 AS attstattarget, a.attstorage, " "t.typstorage, a.attnotnull, a.atthasdef, " "false AS attisdropped, a.attlen, " - "a.attalign, false AS attislocal, " + "a.attalign, true AS attislocal, " "format_type(t.oid,a.atttypmod) AS atttypname, " "'' AS attoptions, 0 AS attcollation " "FROM pg_attribute a LEFT JOIN pg_type t " @@ -5705,7 +5786,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables) "attstorage, attstorage AS typstorage, " "attnotnull, atthasdef, false AS attisdropped, " "attlen, attalign, " - "false AS attislocal, " + "true AS attislocal, " "(SELECT typname FROM pg_type WHERE oid = atttypid) AS atttypname, " "'' AS attoptions, 0 AS attcollation " "FROM pg_attribute a " @@ -5747,13 +5828,11 @@ getTableAttrs(TableInfo *tblinfo, int numTables) tbinfo->attlen = (int *) malloc(ntups * sizeof(int)); tbinfo->attalign = (char *) malloc(ntups * sizeof(char)); tbinfo->attislocal = (bool *) malloc(ntups * sizeof(bool)); - tbinfo->notnull = (bool *) malloc(ntups * sizeof(bool)); - tbinfo->attrdefs = (AttrDefInfo **) malloc(ntups * sizeof(AttrDefInfo *)); tbinfo->attoptions = (char **) malloc(ntups * sizeof(char *)); tbinfo->attcollation = (Oid *) malloc(ntups * sizeof(Oid)); - tbinfo->inhAttrs = (bool *) malloc(ntups * sizeof(bool)); - tbinfo->inhAttrDef = (bool *) malloc(ntups * sizeof(bool)); + tbinfo->notnull = (bool *) malloc(ntups * sizeof(bool)); tbinfo->inhNotNull = (bool *) malloc(ntups * sizeof(bool)); + tbinfo->attrdefs = (AttrDefInfo **) malloc(ntups * sizeof(AttrDefInfo *)); hasdefaults = false; for (j = 0; j < ntups; j++) @@ -5781,8 +5860,6 @@ getTableAttrs(TableInfo *tblinfo, int numTables) if (PQgetvalue(res, j, i_atthasdef)[0] == 't') hasdefaults = true; /* these flags will be set in flagInhAttrs() */ - tbinfo->inhAttrs[j] = false; - tbinfo->inhAttrDef[j] = false; tbinfo->inhNotNull[j] = false; } @@ -5846,12 +5923,28 @@ getTableAttrs(TableInfo *tblinfo, int numTables) { int adnum; + adnum = atoi(PQgetvalue(res, j, 2)); + + if (adnum <= 0 || adnum > ntups) + { + write_msg(NULL, "invalid adnum value %d for table \"%s\"\n", + adnum, tbinfo->dobj.name); + exit_nicely(); + } + + /* + * dropped columns shouldn't have defaults, but just in case, + * ignore 'em + */ + if (tbinfo->attisdropped[adnum - 1]) + continue; + attrdefs[j].dobj.objType = DO_ATTRDEF; attrdefs[j].dobj.catId.tableoid = atooid(PQgetvalue(res, j, 0)); attrdefs[j].dobj.catId.oid = atooid(PQgetvalue(res, j, 1)); AssignDumpId(&attrdefs[j].dobj); attrdefs[j].adtable = tbinfo; - attrdefs[j].adnum = adnum = atoi(PQgetvalue(res, j, 2)); + attrdefs[j].adnum = adnum; attrdefs[j].adef_expr = strdup(PQgetvalue(res, j, 3)); attrdefs[j].dobj.name = strdup(tbinfo->dobj.name); @@ -5862,9 +5955,8 @@ getTableAttrs(TableInfo *tblinfo, int numTables) /* * Defaults on a VIEW must always be dumped as separate ALTER * TABLE commands. Defaults on regular tables are dumped as - * part of the CREATE TABLE if possible. To check if it's - * safe, we mark the default as needing to appear before the - * CREATE. + * part of the CREATE TABLE if possible, which it won't be + * if the column is not going to be emitted explicitly. */ if (tbinfo->relkind == RELKIND_VIEW) { @@ -5873,19 +5965,27 @@ getTableAttrs(TableInfo *tblinfo, int numTables) addObjectDependency(&attrdefs[j].dobj, tbinfo->dobj.dumpId); } + else if (!shouldPrintColumn(tbinfo, adnum - 1)) + { + /* column will be suppressed, print default separately */ + attrdefs[j].separate = true; + /* needed in case pre-7.3 DB: */ + addObjectDependency(&attrdefs[j].dobj, + tbinfo->dobj.dumpId); + } else { attrdefs[j].separate = false; + /* + * Mark the default as needing to appear before the table, + * so that any dependencies it has must be emitted before + * the CREATE TABLE. If this is not possible, we'll + * change to "separate" mode while sorting dependencies. + */ addObjectDependency(&tbinfo->dobj, attrdefs[j].dobj.dumpId); } - if (adnum <= 0 || adnum > ntups) - { - write_msg(NULL, "invalid adnum value %d for table \"%s\"\n", - adnum, tbinfo->dobj.name); - exit_nicely(); - } tbinfo->attrdefs[adnum - 1] = &attrdefs[j]; } PQclear(res); @@ -6034,6 +6134,28 @@ getTableAttrs(TableInfo *tblinfo, int numTables) destroyPQExpBuffer(q); } +/* + * Test whether a column should be printed as part of table's CREATE TABLE. + * Column number is zero-based. + * + * Normally this is always true, but it's false for dropped columns, as well + * as those that were inherited without any local definition. (If we print + * such a column it will mistakenly get pg_attribute.attislocal set to true.) + * However, in binary_upgrade mode, we must print all such columns anyway and + * fix the attislocal/attisdropped state later, so as to keep control of the + * physical column order. + * + * This function exists because there are scattered nonobvious places that + * must be kept in sync with this decision. + */ +bool +shouldPrintColumn(TableInfo *tbinfo, int colno) +{ + if (binary_upgrade) + return true; + return (tbinfo->attislocal[colno] && !tbinfo->attisdropped[colno]); +} + /* * getTSParsers: @@ -6396,8 +6518,10 @@ getForeignDataWrappers(int *numForeignDataWrappers) "fdwhandler::pg_catalog.regproc, " "fdwvalidator::pg_catalog.regproc, fdwacl, " "array_to_string(ARRAY(" - " SELECT option_name || ' ' || quote_literal(option_value) " - " FROM pg_options_to_table(fdwoptions)), ', ') AS fdwoptions " + "SELECT quote_ident(option_name) || ' ' || " + "quote_literal(option_value) " + "FROM pg_options_to_table(fdwoptions)" + "), ', ') AS fdwoptions " "FROM pg_foreign_data_wrapper", username_subquery); } @@ -6408,8 +6532,10 @@ getForeignDataWrappers(int *numForeignDataWrappers) "'-' AS fdwhandler, " "fdwvalidator::pg_catalog.regproc, fdwacl, " "array_to_string(ARRAY(" - " SELECT option_name || ' ' || quote_literal(option_value) " - " FROM pg_options_to_table(fdwoptions)), ', ') AS fdwoptions " + "SELECT quote_ident(option_name) || ' ' || " + "quote_literal(option_value) " + "FROM pg_options_to_table(fdwoptions)" + "), ', ') AS fdwoptions " "FROM pg_foreign_data_wrapper", username_subquery); } @@ -6495,8 +6621,10 @@ getForeignServers(int *numForeignServers) "(%s srvowner) AS rolname, " "srvfdw, srvtype, srvversion, srvacl," "array_to_string(ARRAY(" - " SELECT option_name || ' ' || quote_literal(option_value) " - " FROM pg_options_to_table(srvoptions)), ', ') AS srvoptions " + "SELECT quote_ident(option_name) || ' ' || " + "quote_literal(option_value) " + "FROM pg_options_to_table(srvoptions)" + "), ', ') AS srvoptions " "FROM pg_foreign_server", username_subquery); @@ -7036,7 +7164,10 @@ dumpDumpableObject(Archive *fout, DumpableObject *dobj) dumpCast(fout, (CastInfo *) dobj); break; case DO_TABLE_DATA: - dumpTableData(fout, (TableDataInfo *) dobj); + if (((TableDataInfo *) dobj)->tdtable->relkind == RELKIND_SEQUENCE) + dumpSequenceData(fout, (TableDataInfo *) dobj); + else + dumpTableData(fout, (TableDataInfo *) dobj); break; case DO_DUMMY_TYPE: /* table rowtypes and array types are never dumped separately */ @@ -7073,6 +7204,10 @@ dumpDumpableObject(Archive *fout, DumpableObject *dobj) dobj->dependencies, dobj->nDeps, dumpBlobs, NULL); break; + case DO_PRE_DATA_BOUNDARY: + case DO_POST_DATA_BOUNDARY: + /* never dumped, nothing to do */ + break; } } @@ -11422,9 +11557,13 @@ dumpUserMappings(Archive *fout, appendPQExpBuffer(query, "SELECT usename, " - "array_to_string(ARRAY(SELECT option_name || ' ' || quote_literal(option_value) FROM pg_options_to_table(umoptions)), ', ') AS umoptions\n" + "array_to_string(ARRAY(" + "SELECT quote_ident(option_name) || ' ' || " + "quote_literal(option_value) " + "FROM pg_options_to_table(umoptions)" + "), ', ') AS umoptions " "FROM pg_user_mappings " - "WHERE srvid = %u", + "WHERE srvid = '%u'", catalogId.oid); res = PQexec(g_conn, query->data); @@ -11534,7 +11673,7 @@ dumpDefaultACL(Archive *fout, DefaultACLInfo *daclinfo) daclinfo->dobj.namespace ? daclinfo->dobj.namespace->dobj.name : NULL, NULL, daclinfo->defaclrole, - false, "DEFAULT ACL", SECTION_NONE, + false, "DEFAULT ACL", SECTION_POST_DATA, q->data, "", NULL, daclinfo->dobj.dependencies, daclinfo->dobj.nDeps, NULL, NULL); @@ -11777,6 +11916,12 @@ findSecLabels(Archive *fout, Oid classoid, Oid objoid, SecLabelItem **items) if (nlabels < 0) nlabels = collectSecLabels(fout, &labels); + if (nlabels <= 0) /* no labels, so no match is possible */ + { + *items = NULL; + return 0; + } + /* * Do binary search to find some item matching the object. */ @@ -11900,13 +12045,13 @@ collectSecLabels(Archive *fout, SecLabelItem **items) static void dumpTable(Archive *fout, TableInfo *tbinfo) { - if (tbinfo->dobj.dump) + if (tbinfo->dobj.dump && !dataOnly) { char *namecopy; if (tbinfo->relkind == RELKIND_SEQUENCE) dumpSequence(fout, tbinfo); - else if (!dataOnly) + else dumpTableSchema(fout, tbinfo); /* Handle the ACL here */ @@ -11978,12 +12123,12 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo) int numParents; TableInfo **parents; int actual_atts; /* number of attrs in this CREATE statment */ - char *reltypename; + const char *reltypename; char *storage; + char *srvname; + char *ftoptions; int j, k; - char *srvname; - char *ftoptions = NULL; /* Make sure we are in proper schema */ selectSourceSchema(tbinfo->dobj.namespace->dobj.name); @@ -12069,14 +12214,27 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo) /* retrieve name of foreign server and generic options */ appendPQExpBuffer(query, - "SELECT fs.srvname, array_to_string(ARRAY(" - " SELECT option_name || ' ' || quote_literal(option_value)" - " FROM pg_options_to_table(ftoptions)), ', ') AS ftoptions " - "FROM pg_foreign_table ft JOIN pg_foreign_server fs " - " ON (fs.oid = ft.ftserver) " - "WHERE ft.ftrelid = %u", tbinfo->dobj.catId.oid); + "SELECT fs.srvname, " + "pg_catalog.array_to_string(ARRAY(" + "SELECT pg_catalog.quote_ident(option_name) || " + "' ' || pg_catalog.quote_literal(option_value) " + "FROM pg_catalog.pg_options_to_table(ftoptions)" + "), ', ') AS ftoptions " + "FROM pg_catalog.pg_foreign_table ft " + "JOIN pg_catalog.pg_foreign_server fs " + "ON (fs.oid = ft.ftserver) " + "WHERE ft.ftrelid = '%u'", + tbinfo->dobj.catId.oid); res = PQexec(g_conn, query->data); check_sql_result(res, g_conn, query->data, PGRES_TUPLES_OK); + if (PQntuples(res) != 1) + { + write_msg(NULL, ngettext("query returned %d foreign server entry for foreign table \"%s\"\n", + "query returned %d foreign server entries for foreign table \"%s\"\n", + PQntuples(res)), + PQntuples(res), tbinfo->dobj.name); + exit_nicely(); + } i_srvname = PQfnumber(res, "srvname"); i_ftoptions = PQfnumber(res, "ftoptions"); srvname = strdup(PQgetvalue(res, 0, i_srvname)); @@ -12114,38 +12272,40 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo) fmtId(tbinfo->dobj.name)); /* - * In case of a binary upgrade, we dump the table normally and attach - * it to the type afterward. + * Attach to type, if reloftype; except in case of a binary upgrade, + * we dump the table normally and attach it to the type afterward. */ if (tbinfo->reloftype && !binary_upgrade) appendPQExpBuffer(q, " OF %s", tbinfo->reloftype); + + /* Dump the attributes */ actual_atts = 0; for (j = 0; j < tbinfo->numatts; j++) { /* - * Normally, dump if it's one of the table's own attrs, and not - * dropped. But for binary upgrade, dump all the columns. + * Normally, dump if it's locally defined in this table, and not + * dropped. But for binary upgrade, we'll dump all the columns, + * and then fix up the dropped and nonlocal cases below. */ - if ((!tbinfo->inhAttrs[j] && !tbinfo->attisdropped[j]) || - binary_upgrade) + if (shouldPrintColumn(tbinfo, j)) { /* - * Default value --- suppress if inherited (except in - * binary-upgrade case, where we're not doing normal - * inheritance) or if it's to be printed separately. + * Default value --- suppress if to be printed separately. */ - bool has_default = (tbinfo->attrdefs[j] != NULL - && (!tbinfo->inhAttrDef[j] || binary_upgrade) - && !tbinfo->attrdefs[j]->separate); + bool has_default = (tbinfo->attrdefs[j] != NULL && + !tbinfo->attrdefs[j]->separate); /* * Not Null constraint --- suppress if inherited, except in - * binary-upgrade case. + * binary-upgrade case where that won't work. */ - bool has_notnull = (tbinfo->notnull[j] - && (!tbinfo->inhNotNull[j] || binary_upgrade)); + bool has_notnull = (tbinfo->notnull[j] && + (!tbinfo->inhNotNull[j] || + binary_upgrade)); - if (tbinfo->reloftype && !has_default && !has_notnull && !binary_upgrade) + /* Skip column if fully defined by reloftype */ + if (tbinfo->reloftype && + !has_default && !has_notnull && !binary_upgrade) continue; /* Format properly if not first attr */ @@ -12267,7 +12427,7 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo) } if (tbinfo->relkind == RELKIND_FOREIGN_TABLE) - appendPQExpBuffer(q, "\nSERVER %s", srvname); + appendPQExpBuffer(q, "\nSERVER %s", fmtId(srvname)); if ((tbinfo->reloptions && strlen(tbinfo->reloptions) > 0) || (tbinfo->toast_reloptions && strlen(tbinfo->toast_reloptions) > 0)) @@ -12336,7 +12496,8 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo) * attislocal correctly, plus fix up any inherited CHECK constraints. * Analogously, we set up typed tables using ALTER TABLE / OF here. */ - if (binary_upgrade && tbinfo->relkind == RELKIND_RELATION) + if (binary_upgrade && (tbinfo->relkind == RELKIND_RELATION || + tbinfo->relkind == RELKIND_FOREIGN_TABLE) ) { for (j = 0; j < tbinfo->numatts; j++) { @@ -12354,8 +12515,13 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo) appendStringLiteralAH(q, fmtId(tbinfo->dobj.name), fout); appendPQExpBuffer(q, "::pg_catalog.regclass;\n"); - appendPQExpBuffer(q, "ALTER TABLE ONLY %s ", - fmtId(tbinfo->dobj.name)); + if (tbinfo->relkind == RELKIND_RELATION) + appendPQExpBuffer(q, "ALTER TABLE ONLY %s ", + fmtId(tbinfo->dobj.name)); + else + appendPQExpBuffer(q, "ALTER FOREIGN TABLE %s ", + fmtId(tbinfo->dobj.name)); + appendPQExpBuffer(q, "DROP COLUMN %s;\n", fmtId(tbinfo->attnames[j])); } @@ -12438,16 +12604,36 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo) } } - /* Loop dumping statistics and storage statements */ + /* + * Dump additional per-column properties that we can't handle in the + * main CREATE TABLE command. + */ for (j = 0; j < tbinfo->numatts; j++) { + /* None of this applies to dropped columns */ + if (tbinfo->attisdropped[j]) + continue; + + /* + * If we didn't dump the column definition explicitly above, and + * it is NOT NULL and did not inherit that property from a parent, + * we have to mark it separately. + */ + if (!shouldPrintColumn(tbinfo, j) && + tbinfo->notnull[j] && !tbinfo->inhNotNull[j]) + { + appendPQExpBuffer(q, "ALTER TABLE ONLY %s ", + fmtId(tbinfo->dobj.name)); + appendPQExpBuffer(q, "ALTER COLUMN %s SET NOT NULL;\n", + fmtId(tbinfo->attnames[j])); + } + /* * Dump per-column statistics information. We only issue an ALTER * TABLE statement if the attstattarget entry for this column is * non-negative (i.e. it's not the default value) */ - if (tbinfo->attstattarget[j] >= 0 && - !tbinfo->attisdropped[j]) + if (tbinfo->attstattarget[j] >= 0) { appendPQExpBuffer(q, "ALTER TABLE ONLY %s ", fmtId(tbinfo->dobj.name)); @@ -12461,7 +12647,7 @@ dumpTableSchema(Archive *fout, TableInfo *tbinfo) * Dump per-column storage information. The statement is only * dumped if the storage has been changed from the type's default. */ - if (!tbinfo->attisdropped[j] && tbinfo->attstorage[j] != tbinfo->typstorage[j]) + if (tbinfo->attstorage[j] != tbinfo->typstorage[j]) { switch (tbinfo->attstorage[j]) { @@ -12559,18 +12745,18 @@ dumpAttrDef(Archive *fout, AttrDefInfo *adinfo) PQExpBuffer q; PQExpBuffer delq; - /* Only print it if "separate" mode is selected */ - if (!tbinfo->dobj.dump || !adinfo->separate || dataOnly) + /* Skip if table definition not to be dumped */ + if (!tbinfo->dobj.dump || dataOnly) return; - /* Don't print inherited defaults, either, except for binary upgrade */ - if (tbinfo->inhAttrDef[adnum - 1] && !binary_upgrade) + /* Skip if not "separate"; it was dumped in the table's definition */ + if (!adinfo->separate) return; q = createPQExpBuffer(); delq = createPQExpBuffer(); - appendPQExpBuffer(q, "ALTER TABLE %s ", + appendPQExpBuffer(q, "ALTER TABLE ONLY %s ", fmtId(tbinfo->dobj.name)); appendPQExpBuffer(q, "ALTER COLUMN %s SET DEFAULT %s;\n", fmtId(tbinfo->attnames[adnum - 1]), @@ -12647,6 +12833,7 @@ static void dumpIndex(Archive *fout, IndxInfo *indxinfo) { TableInfo *tbinfo = indxinfo->indextable; + bool is_constraint = (indxinfo->indexconstraint != 0); PQExpBuffer q; PQExpBuffer delq; PQExpBuffer labelq; @@ -12664,9 +12851,11 @@ dumpIndex(Archive *fout, IndxInfo *indxinfo) /* * If there's an associated constraint, don't dump the index per se, but * do dump any comment for it. (This is safe because dependency ordering - * will have ensured the constraint is emitted first.) + * will have ensured the constraint is emitted first.) Note that the + * emitted comment has to be shown as depending on the constraint, not + * the index, in such cases. */ - if (indxinfo->indexconstraint == 0) + if (!is_constraint) { if (binary_upgrade) binary_upgrade_set_pg_class_oids(q, indxinfo->dobj.catId.oid, true); @@ -12707,7 +12896,9 @@ dumpIndex(Archive *fout, IndxInfo *indxinfo) dumpComment(fout, labelq->data, tbinfo->dobj.namespace->dobj.name, tbinfo->rolname, - indxinfo->dobj.catId, 0, indxinfo->dobj.dumpId); + indxinfo->dobj.catId, 0, + is_constraint ? indxinfo->indexconstraint : + indxinfo->dobj.dumpId); destroyPQExpBuffer(q); destroyPQExpBuffer(delq); @@ -12749,7 +12940,7 @@ dumpConstraint(Archive *fout, ConstraintInfo *coninfo) exit_nicely(); } - if (binary_upgrade && !coninfo->condef) + if (binary_upgrade) binary_upgrade_set_pg_class_oids(q, indxinfo->dobj.catId.oid, true); appendPQExpBuffer(q, "ALTER TABLE ONLY %s\n", @@ -13045,20 +13236,22 @@ findLastBuiltinOid_V70(void) return last_oid; } +/* + * dumpSequence + * write the declaration (not data) of one user-defined sequence + */ static void dumpSequence(Archive *fout, TableInfo *tbinfo) { PGresult *res; char *startv, - *last, *incby, *maxv = NULL, *minv = NULL, *cache; char bufm[100], bufx[100]; - bool cycled, - called; + bool cycled; PQExpBuffer query = createPQExpBuffer(); PQExpBuffer delqry = createPQExpBuffer(); PQExpBuffer labelq = createPQExpBuffer(); @@ -13069,11 +13262,11 @@ dumpSequence(Archive *fout, TableInfo *tbinfo) snprintf(bufm, sizeof(bufm), INT64_FORMAT, SEQ_MINVALUE); snprintf(bufx, sizeof(bufx), INT64_FORMAT, SEQ_MAXVALUE); - if (g_fout->remoteVersion >= 80400) + if (fout->remoteVersion >= 80400) { appendPQExpBuffer(query, "SELECT sequence_name, " - "start_value, last_value, increment_by, " + "start_value, increment_by, " "CASE WHEN increment_by > 0 AND max_value = %s THEN NULL " " WHEN increment_by < 0 AND max_value = -1 THEN NULL " " ELSE max_value " @@ -13082,7 +13275,7 @@ dumpSequence(Archive *fout, TableInfo *tbinfo) " WHEN increment_by < 0 AND min_value = %s THEN NULL " " ELSE min_value " "END AS min_value, " - "cache_value, is_cycled, is_called from %s", + "cache_value, is_cycled FROM %s", bufx, bufm, fmtId(tbinfo->dobj.name)); } @@ -13090,7 +13283,7 @@ dumpSequence(Archive *fout, TableInfo *tbinfo) { appendPQExpBuffer(query, "SELECT sequence_name, " - "0 AS start_value, last_value, increment_by, " + "0 AS start_value, increment_by, " "CASE WHEN increment_by > 0 AND max_value = %s THEN NULL " " WHEN increment_by < 0 AND max_value = -1 THEN NULL " " ELSE max_value " @@ -13099,7 +13292,7 @@ dumpSequence(Archive *fout, TableInfo *tbinfo) " WHEN increment_by < 0 AND min_value = %s THEN NULL " " ELSE min_value " "END AS min_value, " - "cache_value, is_cycled, is_called from %s", + "cache_value, is_cycled FROM %s", bufx, bufm, fmtId(tbinfo->dobj.name)); } @@ -13127,169 +13320,212 @@ dumpSequence(Archive *fout, TableInfo *tbinfo) #endif startv = PQgetvalue(res, 0, 1); - last = PQgetvalue(res, 0, 2); - incby = PQgetvalue(res, 0, 3); + incby = PQgetvalue(res, 0, 2); + if (!PQgetisnull(res, 0, 3)) + maxv = PQgetvalue(res, 0, 3); if (!PQgetisnull(res, 0, 4)) - maxv = PQgetvalue(res, 0, 4); - if (!PQgetisnull(res, 0, 5)) - minv = PQgetvalue(res, 0, 5); - cache = PQgetvalue(res, 0, 6); - cycled = (strcmp(PQgetvalue(res, 0, 7), "t") == 0); - called = (strcmp(PQgetvalue(res, 0, 8), "t") == 0); + minv = PQgetvalue(res, 0, 4); + cache = PQgetvalue(res, 0, 5); + cycled = (strcmp(PQgetvalue(res, 0, 6), "t") == 0); /* - * The logic we use for restoring sequences is as follows: - * - * Add a CREATE SEQUENCE statement as part of a "schema" dump (use - * last_val for start if called is false, else use min_val for start_val). - * Also, if the sequence is owned by a column, add an ALTER SEQUENCE OWNED - * BY command for it. - * - * Add a 'SETVAL(seq, last_val, iscalled)' as part of a "data" dump. + * DROP must be fully qualified in case same name appears in pg_catalog */ - if (!dataOnly) - { - /* - * DROP must be fully qualified in case same name appears in - * pg_catalog - */ - appendPQExpBuffer(delqry, "DROP SEQUENCE %s.", - fmtId(tbinfo->dobj.namespace->dobj.name)); - appendPQExpBuffer(delqry, "%s;\n", - fmtId(tbinfo->dobj.name)); + appendPQExpBuffer(delqry, "DROP SEQUENCE %s.", + fmtId(tbinfo->dobj.namespace->dobj.name)); + appendPQExpBuffer(delqry, "%s;\n", + fmtId(tbinfo->dobj.name)); - resetPQExpBuffer(query); + resetPQExpBuffer(query); - if (binary_upgrade) - { - binary_upgrade_set_pg_class_oids(query, tbinfo->dobj.catId.oid, false); - binary_upgrade_set_type_oids_by_rel_oid(query, tbinfo->dobj.catId.oid); - } + if (binary_upgrade) + { + binary_upgrade_set_pg_class_oids(query, + tbinfo->dobj.catId.oid, false); + binary_upgrade_set_type_oids_by_rel_oid(query, + tbinfo->dobj.catId.oid); + } - appendPQExpBuffer(query, - "CREATE SEQUENCE %s\n", - fmtId(tbinfo->dobj.name)); + appendPQExpBuffer(query, + "CREATE SEQUENCE %s\n", + fmtId(tbinfo->dobj.name)); - if (g_fout->remoteVersion >= 80400) - appendPQExpBuffer(query, " START WITH %s\n", startv); - else - { - /* - * Versions before 8.4 did not remember the true start value. If - * is_called is false then the sequence has never been incremented - * so we can use last_val. Otherwise punt and let it default. - */ - if (!called) - appendPQExpBuffer(query, " START WITH %s\n", last); - } + if (fout->remoteVersion >= 80400) + appendPQExpBuffer(query, " START WITH %s\n", startv); - appendPQExpBuffer(query, " INCREMENT BY %s\n", incby); + appendPQExpBuffer(query, " INCREMENT BY %s\n", incby); - if (minv) - appendPQExpBuffer(query, " MINVALUE %s\n", minv); - else - appendPQExpBuffer(query, " NO MINVALUE\n"); + if (minv) + appendPQExpBuffer(query, " MINVALUE %s\n", minv); + else + appendPQExpBuffer(query, " NO MINVALUE\n"); - if (maxv) - appendPQExpBuffer(query, " MAXVALUE %s\n", maxv); - else - appendPQExpBuffer(query, " NO MAXVALUE\n"); + if (maxv) + appendPQExpBuffer(query, " MAXVALUE %s\n", maxv); + else + appendPQExpBuffer(query, " NO MAXVALUE\n"); - appendPQExpBuffer(query, - " CACHE %s%s", - cache, (cycled ? "\n CYCLE" : "")); + appendPQExpBuffer(query, + " CACHE %s%s", + cache, (cycled ? "\n CYCLE" : "")); - appendPQExpBuffer(query, ";\n"); + appendPQExpBuffer(query, ";\n"); - appendPQExpBuffer(labelq, "SEQUENCE %s", fmtId(tbinfo->dobj.name)); + appendPQExpBuffer(labelq, "SEQUENCE %s", fmtId(tbinfo->dobj.name)); - /* binary_upgrade: no need to clear TOAST table oid */ + /* binary_upgrade: no need to clear TOAST table oid */ - if (binary_upgrade) - binary_upgrade_extension_member(query, &tbinfo->dobj, - labelq->data); + if (binary_upgrade) + binary_upgrade_extension_member(query, &tbinfo->dobj, + labelq->data); - ArchiveEntry(fout, tbinfo->dobj.catId, tbinfo->dobj.dumpId, - tbinfo->dobj.name, - tbinfo->dobj.namespace->dobj.name, - NULL, - tbinfo->rolname, - false, "SEQUENCE", SECTION_PRE_DATA, - query->data, delqry->data, NULL, - tbinfo->dobj.dependencies, tbinfo->dobj.nDeps, - NULL, NULL); + ArchiveEntry(fout, tbinfo->dobj.catId, tbinfo->dobj.dumpId, + tbinfo->dobj.name, + tbinfo->dobj.namespace->dobj.name, + NULL, + tbinfo->rolname, + false, "SEQUENCE", SECTION_PRE_DATA, + query->data, delqry->data, NULL, + tbinfo->dobj.dependencies, tbinfo->dobj.nDeps, + NULL, NULL); - /* - * If the sequence is owned by a table column, emit the ALTER for it - * as a separate TOC entry immediately following the sequence's own - * entry. It's OK to do this rather than using full sorting logic, - * because the dependency that tells us it's owned will have forced - * the table to be created first. We can't just include the ALTER in - * the TOC entry because it will fail if we haven't reassigned the - * sequence owner to match the table's owner. - * - * We need not schema-qualify the table reference because both - * sequence and table must be in the same schema. - */ - if (OidIsValid(tbinfo->owning_tab)) - { - TableInfo *owning_tab = findTableByOid(tbinfo->owning_tab); + /* + * If the sequence is owned by a table column, emit the ALTER for it as a + * separate TOC entry immediately following the sequence's own entry. + * It's OK to do this rather than using full sorting logic, because the + * dependency that tells us it's owned will have forced the table to be + * created first. We can't just include the ALTER in the TOC entry + * because it will fail if we haven't reassigned the sequence owner to + * match the table's owner. + * + * We need not schema-qualify the table reference because both sequence + * and table must be in the same schema. + */ + if (OidIsValid(tbinfo->owning_tab)) + { + TableInfo *owning_tab = findTableByOid(tbinfo->owning_tab); - if (owning_tab && owning_tab->dobj.dump) - { - resetPQExpBuffer(query); - appendPQExpBuffer(query, "ALTER SEQUENCE %s", - fmtId(tbinfo->dobj.name)); - appendPQExpBuffer(query, " OWNED BY %s", - fmtId(owning_tab->dobj.name)); - appendPQExpBuffer(query, ".%s;\n", + if (owning_tab && owning_tab->dobj.dump) + { + resetPQExpBuffer(query); + appendPQExpBuffer(query, "ALTER SEQUENCE %s", + fmtId(tbinfo->dobj.name)); + appendPQExpBuffer(query, " OWNED BY %s", + fmtId(owning_tab->dobj.name)); + appendPQExpBuffer(query, ".%s;\n", fmtId(owning_tab->attnames[tbinfo->owning_col - 1])); - ArchiveEntry(fout, nilCatalogId, createDumpId(), - tbinfo->dobj.name, - tbinfo->dobj.namespace->dobj.name, - NULL, - tbinfo->rolname, - false, "SEQUENCE OWNED BY", SECTION_PRE_DATA, - query->data, "", NULL, - &(tbinfo->dobj.dumpId), 1, - NULL, NULL); - } + ArchiveEntry(fout, nilCatalogId, createDumpId(), + tbinfo->dobj.name, + tbinfo->dobj.namespace->dobj.name, + NULL, + tbinfo->rolname, + false, "SEQUENCE OWNED BY", SECTION_PRE_DATA, + query->data, "", NULL, + &(tbinfo->dobj.dumpId), 1, + NULL, NULL); } - - /* Dump Sequence Comments and Security Labels */ - dumpComment(fout, labelq->data, - tbinfo->dobj.namespace->dobj.name, tbinfo->rolname, - tbinfo->dobj.catId, 0, tbinfo->dobj.dumpId); - dumpSecLabel(fout, labelq->data, - tbinfo->dobj.namespace->dobj.name, tbinfo->rolname, - tbinfo->dobj.catId, 0, tbinfo->dobj.dumpId); } - if (!schemaOnly) + /* Dump Sequence Comments and Security Labels */ + dumpComment(fout, labelq->data, + tbinfo->dobj.namespace->dobj.name, tbinfo->rolname, + tbinfo->dobj.catId, 0, tbinfo->dobj.dumpId); + dumpSecLabel(fout, labelq->data, + tbinfo->dobj.namespace->dobj.name, tbinfo->rolname, + tbinfo->dobj.catId, 0, tbinfo->dobj.dumpId); + + PQclear(res); + + destroyPQExpBuffer(query); + destroyPQExpBuffer(delqry); + destroyPQExpBuffer(labelq); +} + +/* + * dumpSequenceData + * write the data of one user-defined sequence + */ +static void +dumpSequenceData(Archive *fout, TableDataInfo *tdinfo) +{ + TableInfo *tbinfo = tdinfo->tdtable; + PGresult *res; + char *last; + bool called; + PQExpBuffer query = createPQExpBuffer(); + + /* Make sure we are in proper schema */ + selectSourceSchema(tbinfo->dobj.namespace->dobj.name); + + appendPQExpBuffer(query, + "SELECT last_value, is_called FROM %s", + fmtId(tbinfo->dobj.name)); + + res = PQexec(g_conn, query->data); + check_sql_result(res, g_conn, query->data, PGRES_TUPLES_OK); + + if (PQntuples(res) != 1) { - resetPQExpBuffer(query); - appendPQExpBuffer(query, "SELECT pg_catalog.setval("); - appendStringLiteralAH(query, fmtId(tbinfo->dobj.name), fout); - appendPQExpBuffer(query, ", %s, %s);\n", - last, (called ? "true" : "false")); + write_msg(NULL, ngettext("query to get data of sequence \"%s\" returned %d row (expected 1)\n", + "query to get data of sequence \"%s\" returned %d rows (expected 1)\n", + PQntuples(res)), + tbinfo->dobj.name, PQntuples(res)); + exit_nicely(); + } - ArchiveEntry(fout, nilCatalogId, createDumpId(), - tbinfo->dobj.name, - tbinfo->dobj.namespace->dobj.name, - NULL, - tbinfo->rolname, - false, "SEQUENCE SET", SECTION_PRE_DATA, - query->data, "", NULL, - &(tbinfo->dobj.dumpId), 1, - NULL, NULL); + last = PQgetvalue(res, 0, 0); + called = (strcmp(PQgetvalue(res, 0, 1), "t") == 0); + +#ifdef PGXC + /* + * In Postgres-XC it is possible that the current value of a + * sequence cached on each node is different as several sessions + * might use the sequence on different nodes. So what we do here + * to get a consistent dump is to get the next value of sequence. + * This insures that sequence value is unique as nextval is directly + * obtained from GTM. + */ + resetPQExpBuffer(query); + appendPQExpBuffer(query, "SELECT pg_catalog.nextval("); + appendStringLiteralAH(query, fmtId(tbinfo->dobj.name), fout); + appendPQExpBuffer(query, ");\n"); + + res = PQexec(g_conn, query->data); + check_sql_result(res, g_conn, query->data, PGRES_TUPLES_OK); + + if (PQntuples(res) != 1) + { + write_msg(NULL, ngettext("query to get nextval of sequence \"%s\" " + "returned %d rows (expected 1)\n", + "query to get nextval of sequence \"%s\" " + "returned %d rows (expected 1)\n", + PQntuples(res)), + tbinfo->dobj.name, PQntuples(res)); + exit_nicely(); } + last = PQgetvalue(res, 0, 0); +#endif + resetPQExpBuffer(query); + appendPQExpBuffer(query, "SELECT pg_catalog.setval("); + appendStringLiteralAH(query, fmtId(tbinfo->dobj.name), fout); + appendPQExpBuffer(query, ", %s, %s);\n", + last, (called ? "true" : "false")); + + ArchiveEntry(fout, nilCatalogId, createDumpId(), + tbinfo->dobj.name, + tbinfo->dobj.namespace->dobj.name, + NULL, + tbinfo->rolname, + false, "SEQUENCE SET", SECTION_DATA, + query->data, "", NULL, + &(tbinfo->dobj.dumpId), 1, + NULL, NULL); + PQclear(res); destroyPQExpBuffer(query); - destroyPQExpBuffer(delqry); - destroyPQExpBuffer(labelq); } static void @@ -13742,8 +13978,9 @@ getExtensionMembership(ExtensionInfo extinfo[], int numExtensions) */ for (i = 0; i < numExtensions; i++) { - char *extconfig = extinfo[i].extconfig; - char *extcondition = extinfo[i].extcondition; + ExtensionInfo *curext = &(extinfo[i]); + char *extconfig = curext->extconfig; + char *extcondition = curext->extcondition; char **extconfigarray = NULL; char **extconditionarray = NULL; int nconfigitems; @@ -13758,18 +13995,51 @@ getExtensionMembership(ExtensionInfo extinfo[], int numExtensions) for (j = 0; j < nconfigitems; j++) { TableInfo *configtbl; + Oid configtbloid = atooid(extconfigarray[j]); + bool dumpobj = curext->dobj.dump; - configtbl = findTableByOid(atooid(extconfigarray[j])); + configtbl = findTableByOid(configtbloid); if (configtbl && configtbl->dataObj == NULL) { /* - * Note: config tables are dumped without OIDs regardless - * of the --oids setting. This is because row filtering - * conditions aren't compatible with dumping OIDs. + * Tables of not-to-be-dumped extensions shouldn't be dumped + * unless the table or its schema is explicitly included */ - makeTableDataInfo(configtbl, false); - if (strlen(extconditionarray[j]) > 0) - configtbl->dataObj->filtercond = strdup(extconditionarray[j]); + if (!curext->dobj.dump) + { + /* check table explicitly requested */ + if (table_include_oids.head != NULL && + simple_oid_list_member(&table_include_oids, + configtbloid)) + dumpobj = true; + + /* check table's schema explicitly requested */ + if (configtbl->dobj.namespace->dobj.dump) + dumpobj = true; + } + + /* check table excluded by an exclusion switch */ + if (table_exclude_oids.head != NULL && + simple_oid_list_member(&table_exclude_oids, + configtbloid)) + dumpobj = false; + + /* check schema excluded by an exclusion switch */ + if (simple_oid_list_member(&schema_exclude_oids, + configtbl->dobj.namespace->dobj.catId.oid)) + dumpobj = false; + + if (dumpobj) + { + /* + * Note: config tables are dumped without OIDs regardless + * of the --oids setting. This is because row filtering + * conditions aren't compatible with dumping OIDs. + */ + makeTableDataInfo(configtbl, false); + if (strlen(extconditionarray[j]) > 0) + configtbl->dataObj->filtercond = strdup(extconditionarray[j]); + } } } } @@ -13903,6 +14173,113 @@ getDependencies(void) } +/* + * createBoundaryObjects - create dummy DumpableObjects to represent + * dump section boundaries. + */ +static DumpableObject * +createBoundaryObjects(void) +{ + DumpableObject *dobjs; + + dobjs = (DumpableObject *) pg_malloc(2 * sizeof(DumpableObject)); + + dobjs[0].objType = DO_PRE_DATA_BOUNDARY; + dobjs[0].catId = nilCatalogId; + AssignDumpId(dobjs + 0); + dobjs[0].name = pg_strdup("PRE-DATA BOUNDARY"); + + dobjs[1].objType = DO_POST_DATA_BOUNDARY; + dobjs[1].catId = nilCatalogId; + AssignDumpId(dobjs + 1); + dobjs[1].name = pg_strdup("POST-DATA BOUNDARY"); + + return dobjs; +} + +/* + * addBoundaryDependencies - add dependencies as needed to enforce the dump + * section boundaries. + */ +static void +addBoundaryDependencies(DumpableObject **dobjs, int numObjs, + DumpableObject *boundaryObjs) +{ + DumpableObject *preDataBound = boundaryObjs + 0; + DumpableObject *postDataBound = boundaryObjs + 1; + int i; + + for (i = 0; i < numObjs; i++) + { + DumpableObject *dobj = dobjs[i]; + + /* + * The classification of object types here must match the SECTION_xxx + * values assigned during subsequent ArchiveEntry calls! + */ + switch (dobj->objType) + { + case DO_NAMESPACE: + case DO_EXTENSION: + case DO_TYPE: + case DO_SHELL_TYPE: + case DO_FUNC: + case DO_AGG: + case DO_OPERATOR: + case DO_OPCLASS: + case DO_OPFAMILY: + case DO_COLLATION: + case DO_CONVERSION: + case DO_TABLE: + case DO_ATTRDEF: + case DO_PROCLANG: + case DO_CAST: + case DO_DUMMY_TYPE: + case DO_TSPARSER: + case DO_TSDICT: + case DO_TSTEMPLATE: + case DO_TSCONFIG: + case DO_FDW: + case DO_FOREIGN_SERVER: + case DO_BLOB: + /* Pre-data objects: must come before the pre-data boundary */ + addObjectDependency(preDataBound, dobj->dumpId); + break; + case DO_TABLE_DATA: + case DO_BLOB_DATA: + /* Data objects: must come between the boundaries */ + addObjectDependency(dobj, preDataBound->dumpId); + addObjectDependency(postDataBound, dobj->dumpId); + break; + case DO_INDEX: + case DO_TRIGGER: + case DO_DEFAULT_ACL: + /* Post-data objects: must come after the post-data boundary */ + addObjectDependency(dobj, postDataBound->dumpId); + break; + case DO_RULE: + /* Rules are post-data, but only if dumped separately */ + if (((RuleInfo *) dobj)->separate) + addObjectDependency(dobj, postDataBound->dumpId); + break; + case DO_CONSTRAINT: + case DO_FK_CONSTRAINT: + /* Constraints are post-data, but only if dumped separately */ + if (((ConstraintInfo *) dobj)->separate) + addObjectDependency(dobj, postDataBound->dumpId); + break; + case DO_PRE_DATA_BOUNDARY: + /* nothing to do */ + break; + case DO_POST_DATA_BOUNDARY: + /* must come after the pre-data boundary */ + addObjectDependency(dobj, preDataBound->dumpId); + break; + } + } +} + + /* * selectSourceSchema - make the specified schema the active search path * in the source database. diff --git a/src/bin/pg_dump/pg_dump.h b/src/bin/pg_dump/pg_dump.h index 30bb5e0709..70174c1aac 100644 --- a/src/bin/pg_dump/pg_dump.h +++ b/src/bin/pg_dump/pg_dump.h @@ -97,6 +97,7 @@ typedef enum DO_OPERATOR, DO_OPCLASS, DO_OPFAMILY, + DO_COLLATION, DO_CONVERSION, DO_TABLE, DO_ATTRDEF, @@ -118,7 +119,8 @@ typedef enum DO_DEFAULT_ACL, DO_BLOB, DO_BLOB_DATA, - DO_COLLATION + DO_PRE_DATA_BOUNDARY, + DO_POST_DATA_BOUNDARY } DumpableObjectType; typedef struct _dumpableObject @@ -280,17 +282,9 @@ typedef struct _tableInfo bool *attislocal; /* true if attr has local definition */ char **attoptions; /* per-attribute options */ Oid *attcollation; /* per-attribute collation selection */ - - /* - * Note: we need to store per-attribute notnull, default, and constraint - * stuff for all interesting tables so that we can tell which constraints - * were inherited. - */ - bool *notnull; /* Not null constraints on attributes */ - struct _attrDefInfo **attrdefs; /* DEFAULT expressions */ - bool *inhAttrs; /* true if each attribute is inherited */ - bool *inhAttrDef; /* true if attr's default is inherited */ + bool *notnull; /* NOT NULL constraints on attributes */ bool *inhNotNull; /* true if NOT NULL is inherited */ + struct _attrDefInfo **attrdefs; /* DEFAULT expressions */ struct _constraintInfo *checkexprs; /* CHECK constraints */ /* @@ -303,7 +297,7 @@ typedef struct _tableInfo typedef struct _attrDefInfo { - DumpableObject dobj; + DumpableObject dobj; /* note: dobj.name is name of table */ TableInfo *adtable; /* link to table of attribute */ int adnum; char *adef_expr; /* decompiled DEFAULT expression */ @@ -519,6 +513,7 @@ extern TypeInfo *findTypeByOid(Oid oid); extern FuncInfo *findFuncByOid(Oid oid); extern OprInfo *findOprByOid(Oid oid); extern CollInfo *findCollationByOid(Oid oid); +extern NamespaceInfo *findNamespaceByOid(Oid oid); extern void simple_oid_list_append(SimpleOidList *list, Oid val); extern void simple_string_list_append(SimpleStringList *list, const char *val); @@ -535,7 +530,8 @@ extern void exit_nicely(void); extern void parseOidArray(const char *str, Oid *array, int arraysize); -extern void sortDumpableObjects(DumpableObject **objs, int numObjs); +extern void sortDumpableObjects(DumpableObject **objs, int numObjs, + DumpId preBoundaryId, DumpId postBoundaryId); extern void sortDumpableObjectsByTypeName(DumpableObject **objs, int numObjs); extern void sortDumpableObjectsByTypeOid(DumpableObject **objs, int numObjs); @@ -553,6 +549,7 @@ extern OpfamilyInfo *getOpfamilies(int *numOpfamilies); extern CollInfo *getCollations(int *numCollations); extern ConvInfo *getConversions(int *numConversions); extern TableInfo *getTables(int *numTables); +extern void getOwnedSeqs(TableInfo tblinfo[], int numTables); extern InhInfo *getInherits(int *numInherits); extern void getIndexes(TableInfo tblinfo[], int numTables); extern void getConstraints(TableInfo tblinfo[], int numTables); @@ -561,6 +558,7 @@ extern void getTriggers(TableInfo tblinfo[], int numTables); extern ProcLangInfo *getProcLangs(int *numProcLangs); extern CastInfo *getCasts(int *numCasts); extern void getTableAttrs(TableInfo *tbinfo, int numTables); +extern bool shouldPrintColumn(TableInfo *tbinfo, int colno); extern TSParserInfo *getTSParsers(int *numTSParsers); extern TSDictInfo *getTSDictionaries(int *numTSDicts); extern TSTemplateInfo *getTSTemplates(int *numTSTemplates); diff --git a/src/bin/pg_dump/pg_dump_sort.c b/src/bin/pg_dump/pg_dump_sort.c index 963f734dce..a517523571 100644 --- a/src/bin/pg_dump/pg_dump_sort.c +++ b/src/bin/pg_dump/pg_dump_sort.c @@ -25,6 +25,11 @@ static const char *modulename = gettext_noop("sorter"); * behavior for old databases without full dependency info.) Note: collations, * extensions, text search, foreign-data, and default ACL objects can't really * happen here, so the rather bogus priorities for them don't matter. + * + * NOTE: object-type priorities must match the section assignments made in + * pg_dump.c; that is, PRE_DATA objects must sort before DO_PRE_DATA_BOUNDARY, + * POST_DATA objects must sort after DO_POST_DATA_BOUNDARY, and DATA objects + * must sort between them. */ static const int oldObjectTypePriority[] = { @@ -37,33 +42,40 @@ static const int oldObjectTypePriority[] = 3, /* DO_OPERATOR */ 4, /* DO_OPCLASS */ 4, /* DO_OPFAMILY */ + 4, /* DO_COLLATION */ 5, /* DO_CONVERSION */ 6, /* DO_TABLE */ 8, /* DO_ATTRDEF */ - 13, /* DO_INDEX */ - 14, /* DO_RULE */ - 15, /* DO_TRIGGER */ - 12, /* DO_CONSTRAINT */ - 16, /* DO_FK_CONSTRAINT */ + 15, /* DO_INDEX */ + 16, /* DO_RULE */ + 17, /* DO_TRIGGER */ + 14, /* DO_CONSTRAINT */ + 18, /* DO_FK_CONSTRAINT */ 2, /* DO_PROCLANG */ 2, /* DO_CAST */ - 10, /* DO_TABLE_DATA */ + 11, /* DO_TABLE_DATA */ 7, /* DO_DUMMY_TYPE */ - 3, /* DO_TSPARSER */ + 4, /* DO_TSPARSER */ 4, /* DO_TSDICT */ - 3, /* DO_TSTEMPLATE */ - 5, /* DO_TSCONFIG */ - 3, /* DO_FDW */ + 4, /* DO_TSTEMPLATE */ + 4, /* DO_TSCONFIG */ + 4, /* DO_FDW */ 4, /* DO_FOREIGN_SERVER */ - 17, /* DO_DEFAULT_ACL */ + 19, /* DO_DEFAULT_ACL */ 9, /* DO_BLOB */ - 11, /* DO_BLOB_DATA */ - 2 /* DO_COLLATION */ + 12, /* DO_BLOB_DATA */ + 10, /* DO_PRE_DATA_BOUNDARY */ + 13 /* DO_POST_DATA_BOUNDARY */ }; /* * Sort priority for object types when dumping newer databases. * Objects are sorted by type, and within a type by name. + * + * NOTE: object-type priorities must match the section assignments made in + * pg_dump.c; that is, PRE_DATA objects must sort before DO_PRE_DATA_BOUNDARY, + * POST_DATA objects must sort after DO_POST_DATA_BOUNDARY, and DATA objects + * must sort between them. */ static const int newObjectTypePriority[] = { @@ -76,17 +88,18 @@ static const int newObjectTypePriority[] = 8, /* DO_OPERATOR */ 9, /* DO_OPCLASS */ 9, /* DO_OPFAMILY */ + 3, /* DO_COLLATION */ 11, /* DO_CONVERSION */ 18, /* DO_TABLE */ 20, /* DO_ATTRDEF */ - 25, /* DO_INDEX */ - 26, /* DO_RULE */ - 27, /* DO_TRIGGER */ - 24, /* DO_CONSTRAINT */ - 28, /* DO_FK_CONSTRAINT */ + 27, /* DO_INDEX */ + 28, /* DO_RULE */ + 29, /* DO_TRIGGER */ + 26, /* DO_CONSTRAINT */ + 30, /* DO_FK_CONSTRAINT */ 2, /* DO_PROCLANG */ 10, /* DO_CAST */ - 22, /* DO_TABLE_DATA */ + 23, /* DO_TABLE_DATA */ 19, /* DO_DUMMY_TYPE */ 12, /* DO_TSPARSER */ 14, /* DO_TSDICT */ @@ -94,12 +107,16 @@ static const int newObjectTypePriority[] = 15, /* DO_TSCONFIG */ 16, /* DO_FDW */ 17, /* DO_FOREIGN_SERVER */ - 29, /* DO_DEFAULT_ACL */ + 31, /* DO_DEFAULT_ACL */ 21, /* DO_BLOB */ - 23, /* DO_BLOB_DATA */ - 3 /* DO_COLLATION */ + 24, /* DO_BLOB_DATA */ + 22, /* DO_PRE_DATA_BOUNDARY */ + 25 /* DO_POST_DATA_BOUNDARY */ }; +static DumpId preDataBoundId; +static DumpId postDataBoundId; + static int DOTypeNameCompare(const void *p1, const void *p2); static int DOTypeOidCompare(const void *p1, const void *p2); @@ -110,11 +127,11 @@ static bool TopoSort(DumpableObject **objs, static void addHeapElement(int val, int *heap, int heapLength); static int removeHeapElement(int *heap, int heapLength); static void findDependencyLoops(DumpableObject **objs, int nObjs, int totObjs); -static bool findLoop(DumpableObject *obj, +static int findLoop(DumpableObject *obj, DumpId startPoint, + bool *processed, DumpableObject **workspace, - int depth, - int *newDepth); + int depth); static void repairDependencyLoop(DumpableObject **loop, int nLoop); static void describeDumpableObject(DumpableObject *obj, @@ -177,6 +194,15 @@ DOTypeNameCompare(const void *p1, const void *p2) if (cmpval != 0) return cmpval; } + else if (obj1->objType == DO_ATTRDEF) + { + AttrDefInfo *adobj1 = *(AttrDefInfo * const *) p1; + AttrDefInfo *adobj2 = *(AttrDefInfo * const *) p2; + + cmpval = (adobj1->adnum - adobj2->adnum); + if (cmpval != 0) + return cmpval; + } /* Usually shouldn't get here, but if we do, sort by OID */ return oidcmp(obj1->catId.oid, obj2->catId.oid); @@ -217,16 +243,27 @@ DOTypeOidCompare(const void *p1, const void *p2) /* * Sort the given objects into a safe dump order using dependency * information (to the extent we have it available). + * + * The DumpIds of the PRE_DATA_BOUNDARY and POST_DATA_BOUNDARY objects are + * passed in separately, in case we need them during dependency loop repair. */ void -sortDumpableObjects(DumpableObject **objs, int numObjs) +sortDumpableObjects(DumpableObject **objs, int numObjs, + DumpId preBoundaryId, DumpId postBoundaryId) { DumpableObject **ordering; int nOrdering; - if (numObjs <= 0) + if (numObjs <= 0) /* can't happen anymore ... */ return; + /* + * Saving the boundary IDs in static variables is a bit grotty, but seems + * better than adding them to parameter lists of subsidiary functions. + */ + preDataBoundId = preBoundaryId; + postDataBoundId = postBoundaryId; + ordering = (DumpableObject **) malloc(numObjs * sizeof(DumpableObject *)); if (ordering == NULL) exit_horribly(NULL, modulename, "out of memory\n"); @@ -495,58 +532,52 @@ static void findDependencyLoops(DumpableObject **objs, int nObjs, int totObjs) { /* - * We use a workspace array, the initial part of which stores objects - * already processed, and the rest of which is used as temporary space to - * try to build a loop in. This is convenient because we do not care - * about loops involving already-processed objects (see notes above); we - * can easily reject such loops in findLoop() because of this - * representation. After we identify and process a loop, we can add it to - * the initial part of the workspace just by moving the boundary pointer. - * - * When we determine that an object is not part of any interesting loop, - * we also add it to the initial part of the workspace. This is not - * necessary for correctness, but saves later invocations of findLoop() - * from uselessly chasing references to such an object. - * - * We make the workspace large enough to hold all objects in the original - * universe. This is probably overkill, but it's provably enough space... + * We use two data structures here. One is a bool array processed[], + * which is indexed by dump ID and marks the objects already processed + * during this invocation of findDependencyLoops(). The other is a + * workspace[] array of DumpableObject pointers, in which we try to build + * lists of objects constituting loops. We make workspace[] large enough + * to hold all the objects, which is huge overkill in most cases but could + * theoretically be necessary if there is a single dependency chain + * linking all the objects. */ + bool *processed; DumpableObject **workspace; - int initiallen; bool fixedloop; int i; + processed = (bool *) calloc(getMaxDumpId() + 1, sizeof(bool)); workspace = (DumpableObject **) malloc(totObjs * sizeof(DumpableObject *)); - if (workspace == NULL) + if (processed == NULL || workspace == NULL) exit_horribly(NULL, modulename, "out of memory\n"); - initiallen = 0; fixedloop = false; for (i = 0; i < nObjs; i++) { DumpableObject *obj = objs[i]; - int newlen; + int looplen; + int j; - workspace[initiallen] = NULL; /* see test below */ + looplen = findLoop(obj, obj->dumpId, processed, workspace, 0); - if (findLoop(obj, obj->dumpId, workspace, initiallen, &newlen)) + if (looplen > 0) { - /* Found a loop of length newlen - initiallen */ - repairDependencyLoop(&workspace[initiallen], newlen - initiallen); - /* Add loop members to workspace */ - initiallen = newlen; + /* Found a loop, repair it */ + repairDependencyLoop(workspace, looplen); fixedloop = true; + /* Mark loop members as processed */ + for (j = 0; j < looplen; j++) + processed[workspace[j]->dumpId] = true; } else { /* - * Didn't find a loop, but add this object to workspace anyway, - * unless it's already present. We piggyback on the test that - * findLoop() already did: it won't have tentatively added obj to - * workspace if it's already present. + * There's no loop starting at this object, but mark it processed + * anyway. This is not necessary for correctness, but saves later + * invocations of findLoop() from uselessly chasing references to + * such an object. */ - if (workspace[initiallen] == obj) - initiallen++; + processed[obj->dumpId] = true; } } @@ -555,45 +586,51 @@ findDependencyLoops(DumpableObject **objs, int nObjs, int totObjs) exit_horribly(NULL, modulename, "could not identify dependency loop\n"); free(workspace); + free(processed); } /* * Recursively search for a circular dependency loop that doesn't include - * any existing workspace members. + * any already-processed objects. * * obj: object we are examining now * startPoint: dumpId of starting object for the hoped-for circular loop - * workspace[]: work array for previously processed and current objects + * processed[]: flag array marking already-processed objects + * workspace[]: work array in which we are building list of loop members * depth: number of valid entries in workspace[] at call - * newDepth: if successful, set to new number of workspace[] entries * - * On success, *newDepth is set and workspace[] entries depth..*newDepth-1 - * are filled with pointers to the members of the loop. + * On success, the length of the loop is returned, and workspace[] is filled + * with pointers to the members of the loop. On failure, we return 0. * * Note: it is possible that the given starting object is a member of more * than one cycle; if so, we will find an arbitrary one of the cycles. */ -static bool +static int findLoop(DumpableObject *obj, DumpId startPoint, + bool *processed, DumpableObject **workspace, - int depth, - int *newDepth) + int depth) { int i; /* - * Reject if obj is already present in workspace. This test serves three - * purposes: it prevents us from finding loops that overlap - * previously-processed loops, it prevents us from going into infinite - * recursion if we are given a startPoint object that links to a cycle - * it's not a member of, and it guarantees that we can't overflow the - * allocated size of workspace[]. + * Reject if obj is already processed. This test prevents us from finding + * loops that overlap previously-processed loops. + */ + if (processed[obj->dumpId]) + return 0; + + /* + * Reject if obj is already present in workspace. This test prevents us + * from going into infinite recursion if we are given a startPoint object + * that links to a cycle it's not a member of, and it guarantees that we + * can't overflow the allocated size of workspace[]. */ for (i = 0; i < depth; i++) { if (workspace[i] == obj) - return false; + return 0; } /* @@ -607,10 +644,7 @@ findLoop(DumpableObject *obj, for (i = 0; i < obj->nDeps; i++) { if (obj->dependencies[i] == startPoint) - { - *newDepth = depth; - return true; - } + return depth; } /* @@ -619,18 +653,20 @@ findLoop(DumpableObject *obj, for (i = 0; i < obj->nDeps; i++) { DumpableObject *nextobj = findObjectByDumpId(obj->dependencies[i]); + int newDepth; if (!nextobj) continue; /* ignore dependencies on undumped objects */ - if (findLoop(nextobj, - startPoint, - workspace, - depth, - newDepth)) - return true; + newDepth = findLoop(nextobj, + startPoint, + processed, + workspace, + depth); + if (newDepth > 0) + return newDepth; } - return false; + return 0; } /* @@ -692,6 +728,8 @@ repairViewRuleMultiLoop(DumpableObject *viewobj, ((RuleInfo *) ruleobj)->separate = true; /* put back rule's dependency on view */ addObjectDependency(ruleobj, viewobj->dumpId); + /* now that rule is separate, it must be post-data */ + addObjectDependency(ruleobj, postDataBoundId); } /* @@ -727,6 +765,8 @@ repairTableConstraintMultiLoop(DumpableObject *tableobj, ((ConstraintInfo *) constraintobj)->separate = true; /* put back constraint's dependency on table */ addObjectDependency(constraintobj, tableobj->dumpId); + /* now that constraint is separate, it must be post-data */ + addObjectDependency(constraintobj, postDataBoundId); } /* @@ -773,6 +813,8 @@ repairDomainConstraintMultiLoop(DumpableObject *domainobj, ((ConstraintInfo *) constraintobj)->separate = true; /* put back constraint's dependency on domain */ addObjectDependency(constraintobj, domainobj->dumpId); + /* now that constraint is separate, it must be post-data */ + addObjectDependency(constraintobj, postDataBoundId); } /* @@ -1181,6 +1223,16 @@ describeDumpableObject(DumpableObject *obj, char *buf, int bufsize) "BLOB DATA (ID %d)", obj->dumpId); return; + case DO_PRE_DATA_BOUNDARY: + snprintf(buf, bufsize, + "PRE-DATA BOUNDARY (ID %d)", + obj->dumpId); + return; + case DO_POST_DATA_BOUNDARY: + snprintf(buf, bufsize, + "POST-DATA BOUNDARY (ID %d)", + obj->dumpId); + return; } /* shouldn't get here */ snprintf(buf, bufsize, diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c index b3ad2eac29..d0f53e8cc6 100644 --- a/src/bin/pg_dump/pg_dumpall.c +++ b/src/bin/pg_dump/pg_dumpall.c @@ -50,6 +50,7 @@ static void makeAlterConfigCommand(PGconn *conn, const char *arrayitem, static void dumpDatabases(PGconn *conn); static void dumpTimestamp(char *msg); static void doShellQuoting(PQExpBuffer buf, const char *str); +static void doConnStrQuoting(PQExpBuffer buf, const char *str); static int runPgDump(const char *dbname); static PGconn *connectDatabase(const char *dbname, const char *pghost, const char *pgport, @@ -440,6 +441,9 @@ main(int argc, char *argv[]) fprintf(OPF, "\\connect postgres\n\n"); + /* Restore will need to write to the target cluster */ + fprintf(OPF, "SET default_transaction_read_only = off;\n\n"); + /* Replicate encoding and std_strings in output */ fprintf(OPF, "SET client_encoding = '%s';\n", pg_encoding_to_char(encoding)); @@ -1549,6 +1553,17 @@ dumpDatabases(PGconn *conn) fprintf(OPF, "\\connect %s\n\n", fmtId(dbname)); + /* + * Restore will need to write to the target cluster. This connection + * setting is emitted for pg_dumpall rather than in the code also used + * by pg_dump, so that a cluster with databases or users which have + * this flag turned on can still be replicated through pg_dumpall + * without editing the file or stream. With pg_dump there are many + * other ways to allow the file to be used, and leaving it out allows + * users to protect databases from being accidental restore targets. + */ + fprintf(OPF, "SET default_transaction_read_only = off;\n\n"); + if (filename) fclose(OPF); @@ -1583,6 +1598,7 @@ dumpDatabases(PGconn *conn) static int runPgDump(const char *dbname) { + PQExpBuffer connstr = createPQExpBuffer(); PQExpBuffer cmd = createPQExpBuffer(); int ret; @@ -1598,7 +1614,17 @@ runPgDump(const char *dbname) else appendPQExpBuffer(cmd, " -Fp "); - doShellQuoting(cmd, dbname); + /* + * Construct a connection string from the database name, like + * dbname=''. pg_dump would usually also accept the + * database name as is, but if it contains any = characters, it would + * incorrectly treat it as a connection string. + */ + appendPQExpBuffer(connstr, "dbname='"); + doConnStrQuoting(connstr, dbname); + appendPQExpBuffer(connstr, "'"); + + doShellQuoting(cmd, connstr->data); appendPQExpBuffer(cmd, "%s", SYSTEMQUOTE); @@ -1611,6 +1637,7 @@ runPgDump(const char *dbname) ret = system(cmd->data); destroyPQExpBuffer(cmd); + destroyPQExpBuffer(connstr); return ret; } @@ -1834,6 +1861,25 @@ dumpTimestamp(char *msg) } +/* + * Append the given string to the buffer, with suitable quoting for passing + * the string as a value, in a keyword/pair value in a libpq connection + * string + */ +static void +doConnStrQuoting(PQExpBuffer buf, const char *str) +{ + while (*str) + { + /* ' and \ must be escaped by to \' and \\ */ + if (*str == '\'' || *str == '\\') + appendPQExpBufferChar(buf, '\\'); + + appendPQExpBufferChar(buf, *str); + str++; + } +} + /* * Append the given string to the shell command being built in the buffer, * with suitable shell-style quoting. diff --git a/src/bin/pg_dump/po/cs.po b/src/bin/pg_dump/po/cs.po new file mode 100644 index 0000000000..9a7b0a9ce0 --- /dev/null +++ b/src/bin/pg_dump/po/cs.po @@ -0,0 +1,2512 @@ +# Czech translation of pg_dump messages +# +# pgtranslation Id: pg_dump.po,v 1.4 2011/09/08 18:23:05 petere Exp $ +# +# Karel Zak , 2001-2003, 2004, 2011, 2012, 2013. +# Tomáš Vondra , 2011, 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: pg_dump-cs (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2013-03-17 12:09+0000\n" +"PO-Revision-Date: 2013-04-28 19:08+0200\n" +"Last-Translator: Tomas Vondra \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: pg_dump.c:492 pg_dump.c:506 pg_restore.c:274 pg_restore.c:290 +#: pg_restore.c:302 pg_dumpall.c:297 pg_dumpall.c:307 pg_dumpall.c:317 +#: pg_dumpall.c:326 pg_dumpall.c:335 pg_dumpall.c:393 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Zkuste \"%s --help\" pro více informací.\n" + +#: pg_dump.c:504 pg_restore.c:288 pg_dumpall.c:305 +#, c-format +msgid "%s: too many command-line arguments (first is \"%s\")\n" +msgstr "%s: příliš mnoho argumentů v příkazové řádce (první je \"%s\")\n" + +#: pg_dump.c:517 +msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" +msgstr "volby -s/--schema-only a -a/--data-only nelze používat společně\n" + +#: pg_dump.c:523 +msgid "options -c/--clean and -a/--data-only cannot be used together\n" +msgstr "volby -c/--clean a -a/--data-only nelze používat společně\n" + +#: pg_dump.c:529 +msgid "" +"options --inserts/--column-inserts and -o/--oids cannot be used together\n" +msgstr "volby --inserts/--column-inserts a -o/--oids nelze používat společně\n" + +#: pg_dump.c:530 +msgid "(The INSERT command cannot set OIDs.)\n" +msgstr "(Příkaz INSERT nemůže nastavovat OID.)\n" + +#: pg_dump.c:555 +#, c-format +msgid "could not open output file \"%s\" for writing\n" +msgstr "nelze otevřít výstupní soubor \"%s\" pro zápis\n" + +#: pg_dump.c:565 pg_backup_db.c:38 +#, c-format +msgid "could not parse version string \"%s\"\n" +msgstr "neplatný formát řetězce s verzí \"%s\"\n" + +#: pg_dump.c:588 +#, c-format +msgid "invalid client encoding \"%s\" specified\n" +msgstr "specifikováno neplatné klientské kódování \"%s\"\n" + +#: pg_dump.c:671 pg_dump.c:2433 pg_dump.c:2481 pg_dump.c:2536 pg_dump.c:7725 +#: pg_dump.c:7956 pg_dump.c:8922 pg_dump.c:9474 pg_dump.c:9728 pg_dump.c:9842 +#: pg_dump.c:10298 pg_dump.c:10484 pg_dump.c:10590 pg_dump.c:10790 +#: pg_dump.c:11032 pg_dump.c:11199 pg_dump.c:11420 pg_dump.c:14246 +#, c-format +msgid "query returned %d row instead of one: %s\n" +msgid_plural "query returned %d rows instead of one: %s\n" +msgstr[0] "dotaz vrátil %d řádek místo jednoho: %s\n" +msgstr[1] "dotaz vrátil %d řádky místo jednoho: %s\n" +msgstr[2] "dotaz vrátil %d řádků místo jednoho: %s\n" + +#: pg_dump.c:722 +#, c-format +msgid "last built-in OID is %u\n" +msgstr "poslední vestavěné OID je %u\n" + +#: pg_dump.c:732 +msgid "No matching schemas were found\n" +msgstr "Nebyla nalezena žádná odovídající schémata.\n" + +#: pg_dump.c:747 +msgid "No matching tables were found\n" +msgstr "Nebyla nalezena žádná odpovídající tabulka.\n" + +#: pg_dump.c:869 +#, c-format +msgid "" +"%s dumps a database as a text file or to other formats.\n" +"\n" +msgstr "" +"%s vytvoří dump databáze jako textový soubor nebo v jiném formátu.\n" +"\n" + +#: pg_dump.c:870 pg_restore.c:397 pg_dumpall.c:530 +#, c-format +msgid "Usage:\n" +msgstr "Použití:\n" + +#: pg_dump.c:871 +#, c-format +msgid " %s [OPTION]... [DBNAME]\n" +msgstr " %s [PŘEPÍNAČ]... [DATABÁZE]\n" + +#: pg_dump.c:873 pg_restore.c:400 pg_dumpall.c:533 +#, c-format +msgid "" +"\n" +"General options:\n" +msgstr "" +"\n" +"Základní přepínače:\n" + +#: pg_dump.c:874 +#, c-format +msgid " -f, --file=FILENAME output file or directory name\n" +msgstr " -f, --file=SOUBOR výstupní soubor nebo adresář\n" + +#: pg_dump.c:875 +#, c-format +msgid "" +" -F, --format=c|d|t|p output file format (custom, directory, tar, " +"plain text)\n" +msgstr "" +" -F, --format=c|d|t|p formát výstupního souboru (custom, directory, " +"tar, plain text)\n" + +#: pg_dump.c:876 +#, c-format +msgid " -v, --verbose verbose mode\n" +msgstr " -v, --verbose vypisovat více informací\n" + +#: pg_dump.c:877 +#, c-format +msgid "" +" -Z, --compress=0-9 compression level for compressed formats\n" +msgstr "" +" -Z, --compress=0-9 úroveň komprese při použití komprimovaného " +"formátu\n" + +#: pg_dump.c:878 pg_dumpall.c:535 +#, c-format +msgid "" +" --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" +msgstr "" +" --lock-wait-timeout=TIMEOUT selže po uplynutí TIMEOUT čekáním na zámek " +"tabulky\n" + +#: pg_dump.c:879 pg_dumpall.c:536 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help ukáže tento text a skončí\n" + +#: pg_dump.c:880 pg_dumpall.c:537 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version ukáže informace o verzi a skončí\n" + +#: pg_dump.c:882 pg_dumpall.c:538 +#, c-format +msgid "" +"\n" +"Options controlling the output content:\n" +msgstr "" +"\n" +"Přepínače ovlivňující výstup:\n" + +#: pg_dump.c:883 pg_dumpall.c:539 +#, c-format +msgid " -a, --data-only dump only the data, not the schema\n" +msgstr "" +" -a, --data-only dump pouze dat bez definic databázových objektů\n" + +#: pg_dump.c:884 +#, c-format +msgid " -b, --blobs include large objects in dump\n" +msgstr " -b, --blobs zahrnout \"large objects\" do dumpu\n" + +#: pg_dump.c:885 +#, c-format +msgid "" +" -c, --clean clean (drop) database objects before " +"recreating\n" +msgstr "" +" -c, --clean odstranit (drop) databázi před jejím vytvořením\n" + +#: pg_dump.c:886 +#, c-format +msgid "" +" -C, --create include commands to create database in dump\n" +msgstr "" +" -C, --create zahrnout příkazy pro vytvoření databáze do dumpu\n" + +#: pg_dump.c:887 +#, c-format +msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" +msgstr " -E, --encoding=KÓDOVÁNÍ kódování znaků databáze\n" + +#: pg_dump.c:888 +#, c-format +msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" +msgstr "" +" -n, --schema=SCHEMA vytvořit dump pouze specifikovaného schématu\n" + +#: pg_dump.c:889 +#, c-format +msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n" +msgstr " -N, --exclude-schema=SCHEMA nedumpuj uvedené schéma(ta)\n" + +#: pg_dump.c:890 pg_dumpall.c:542 +#, c-format +msgid " -o, --oids include OIDs in dump\n" +msgstr " -o, --oids zahrnout OID do dumpu\n" + +#: pg_dump.c:891 +#, c-format +msgid "" +" -O, --no-owner skip restoration of object ownership in\n" +" plain-text format\n" +msgstr "" +" -O, --no-owner nevypisovat příkazy pro nastavení vlastníka " +"objektu\n" +" v čistě textovém formátu\n" + +#: pg_dump.c:893 pg_dumpall.c:545 +#, c-format +msgid " -s, --schema-only dump only the schema, no data\n" +msgstr "" +" -s, --schema-only dump pouze definic databázových objektů\n" +" (tabulek apod.) bez dat\n" + +#: pg_dump.c:894 +#, c-format +msgid "" +" -S, --superuser=NAME superuser user name to use in plain-text " +"format\n" +msgstr "" +" -S, --superuser=JMÉNO uživatelské jméno superuživatele použité při " +"dumpu\n" + +#: pg_dump.c:895 +#, c-format +msgid " -t, --table=TABLE dump the named table(s) only\n" +msgstr " -t, --table=TABULKA provést dump pouze uvedené tabulky\n" + +#: pg_dump.c:896 +#, c-format +msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n" +msgstr " -t, --exclude-table=TABLE neprováděj dump uvedených tabulek\n" + +#: pg_dump.c:897 pg_dumpall.c:548 +#, c-format +msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" +msgstr "" +" -x, --no-privileges neprovádět dump přístupových práv (grant/revoke)\n" + +#: pg_dump.c:898 pg_dumpall.c:549 +#, c-format +msgid " --binary-upgrade for use by upgrade utilities only\n" +msgstr "" +" --binary-upgrade pouze pro použití upgradovacími nástroji\n" + +#: pg_dump.c:899 pg_dumpall.c:550 +#, c-format +msgid "" +" --column-inserts dump data as INSERT commands with column " +"names\n" +msgstr "" +" --column-inserts použije pro dump dat příkaz INSERT se jmény " +"sloupců\n" + +#: pg_dump.c:900 pg_dumpall.c:551 +#, c-format +msgid "" +" --disable-dollar-quoting disable dollar quoting, use SQL standard " +"quoting\n" +msgstr "" +" --disable-dollar-quoting nepoužívat znak dolaru místo uvozovek, " +"používat\n" +" standardní SQL uvozování\n" + +#: pg_dump.c:901 pg_dumpall.c:552 +#, c-format +msgid "" +" --disable-triggers disable triggers during data-only restore\n" +msgstr "" +" --disable-triggers zakázat volání triggerů během obnovy dat\n" + +#: pg_dump.c:902 pg_dumpall.c:553 +#, c-format +msgid "" +" --inserts dump data as INSERT commands, rather than " +"COPY\n" +msgstr "" +" --inserts použít pro dump dat příkazy INSERT místo COPY\n" + +#: pg_dump.c:903 pg_dumpall.c:554 +#, c-format +msgid " --no-security-labels do not dump security label assignments\n" +msgstr " --no-security-labels neprovádět dump bezpečnostních štítků\n" + +#: pg_dump.c:904 pg_dumpall.c:555 +#, c-format +msgid " --no-tablespaces do not dump tablespace assignments\n" +msgstr " --no-tablespaces neprovádět dump přiřazení tablespaces\n" + +#: pg_dump.c:905 pg_dumpall.c:556 +#, c-format +msgid " --no-unlogged-table-data do not dump unlogged table data\n" +msgstr " --no-unlogged-table-data nedumpuj data unlogged tabulek\n" + +#: pg_dump.c:906 pg_dumpall.c:557 +#, c-format +msgid "" +" --quote-all-identifiers quote all identifiers, even if not key words\n" +msgstr "" +" --quote-all-identifiers všechny identifikátory uveď v uvozovkách, i " +"když se nejedná o klíčová slova\n" + +#: pg_dump.c:907 +#, c-format +msgid "" +" --serializable-deferrable wait until the dump can run without anomalies\n" +msgstr "" +" --serializable-deferrable počkej než bude možné provést dump bez " +"anomálií\n" + +#: pg_dump.c:908 pg_dumpall.c:558 +#, c-format +msgid "" +" --use-set-session-authorization\n" +" use SET SESSION AUTHORIZATION commands instead " +"of\n" +" ALTER OWNER commands to set ownership\n" +msgstr "" +" --use-set-session-authorization\n" +" používat příkaz SET SESSION AUTHORIZATION " +"namísto\n" +" příkazu ALTER OWNER pro nastavení vlastníka\n" + +#: pg_dump.c:912 pg_restore.c:439 pg_dumpall.c:562 +#, c-format +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Volby spojení:\n" + +#: pg_dump.c:913 pg_restore.c:440 pg_dumpall.c:563 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory\n" +msgstr "" +" -h, --host=HOSTNAME jméno databázového serveru nebo soket adresáře\n" + +#: pg_dump.c:914 pg_restore.c:441 pg_dumpall.c:565 +#, c-format +msgid " -p, --port=PORT database server port number\n" +msgstr " -p, --port=PORT číslo portu databázového serveru\n" + +#: pg_dump.c:915 pg_restore.c:442 pg_dumpall.c:566 +#, c-format +msgid " -U, --username=NAME connect as specified database user\n" +msgstr "" +" -U, --username=JMÉNO navázat spojení jako specifikovaný uživatel\n" + +#: pg_dump.c:916 pg_restore.c:443 pg_dumpall.c:567 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password nikdy se neptej na heslo\n" + +#: pg_dump.c:917 pg_restore.c:444 pg_dumpall.c:568 +#, c-format +msgid "" +" -W, --password force password prompt (should happen " +"automatically)\n" +msgstr "" +" -W, --password vynucený dotaz na heslo (měl by být proveden " +"automaticky)\n" + +#: pg_dump.c:918 pg_dumpall.c:569 +#, c-format +msgid " --role=ROLENAME do SET ROLE before dump\n" +msgstr " --role=ROLENAME před dumpem proveď SET ROLE\n" + +#: pg_dump.c:920 +#, c-format +msgid "" +"\n" +"If no database name is supplied, then the PGDATABASE environment\n" +"variable value is used.\n" +"\n" +msgstr "" +"\n" +"Není-li specifikováno jméno databáze, použije se proměnná prostředí\n" +"PGDATABASE.\n" +"\n" + +#: pg_dump.c:922 pg_restore.c:448 pg_dumpall.c:573 +#, c-format +msgid "Report bugs to .\n" +msgstr "Chyby hlaste na adresu .\n" + +#: pg_dump.c:930 pg_backup_archiver.c:1459 +msgid "*** aborted because of error\n" +msgstr "*** přerušeno z důvodu chyby\n" + +#: pg_dump.c:972 +#, c-format +msgid "invalid output format \"%s\" specified\n" +msgstr "specifikován neplatný formát \"%s\" výstupu\n" + +#: pg_dump.c:995 +msgid "server version must be at least 7.3 to use schema selection switches\n" +msgstr "" +"verze serveru musí být alespoň 7.3 pro použití přepínačů prů výběr schématu\n" + +#: pg_dump.c:1267 +#, c-format +msgid "dumping contents of table %s\n" +msgstr "dumpuji obsah tabulky %s\n" + +#: pg_dump.c:1387 +#, c-format +msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" +msgstr "Dumpování obsahu tabulky \"%s\" selhalo: PQgetCopyData() selhal.\n" + +#: pg_dump.c:1388 pg_dump.c:14440 +#, c-format +msgid "Error message from server: %s" +msgstr "Chybová zpráva ze serveru: %s" + +#: pg_dump.c:1389 pg_dump.c:14441 +#, c-format +msgid "The command was: %s\n" +msgstr "Příkaz byl: %s\n" + +#: pg_dump.c:1828 +msgid "saving database definition\n" +msgstr "ukládám definice databáze\n" + +#: pg_dump.c:1910 +#, c-format +msgid "missing pg_database entry for database \"%s\"\n" +msgstr "pro databázi \"%s\" chybí záznam v katalogu pg_database\n" + +#: pg_dump.c:1917 +#, c-format +msgid "" +"query returned more than one (%d) pg_database entry for database \"%s\"\n" +msgstr "" +"dotaz vrátil více jak jeden (%d) záznam v pg_database pro databázi \"%s\"\n" + +#: pg_dump.c:2021 +msgid "dumpDatabase(): could not find pg_largeobject.relfrozenxid\n" +msgstr "dumpDatabase(): nelze najít pg_largeobject.relfrozenxid\n" + +#: pg_dump.c:2060 +msgid "dumpDatabase(): could not find pg_largeobject_metadata.relfrozenxid\n" +msgstr "dumpDatabase(): nelze najít pg_largeobject_metadata.relfrozenxid\n" + +#: pg_dump.c:2139 +#, c-format +msgid "saving encoding = %s\n" +msgstr "ukládám kódování znaků = %s\n" + +#: pg_dump.c:2166 +#, c-format +msgid "saving standard_conforming_strings = %s\n" +msgstr "ukládám standard_conforming_strings = %s\n" + +#: pg_dump.c:2199 +msgid "reading large objects\n" +msgstr "čtu \"large objects\"\n" + +#: pg_dump.c:2331 +msgid "saving large objects\n" +msgstr "ukládám \"large objects\"\n" + +#: pg_dump.c:2373 pg_backup_archiver.c:985 +#, c-format +msgid "could not open large object %u: %s" +msgstr "nelze otevřít \"large object\" %u:%s" + +#: pg_dump.c:2386 +#, c-format +msgid "error reading large object %u: %s" +msgstr "chyba při čtení large objektu %u: %s" + +#: pg_dump.c:2617 +#, c-format +msgid "could not find parent extension for %s" +msgstr "nelze najít nadřízené rozšíření pro %s" + +#: pg_dump.c:2723 +#, c-format +msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" +msgstr "VAROVÁNÍ: vlastník schématu \"%s\" se zdá být neplatný\n" + +#: pg_dump.c:2767 +#, c-format +msgid "schema with OID %u does not exist\n" +msgstr "schéma s OID %u neexistuje\n" + +#: pg_dump.c:3099 +#, c-format +msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" +msgstr "VAROVÁNÍ: vlastník datového typu \"%s\" se zdá být neplatný\n" + +#: pg_dump.c:3203 +#, c-format +msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" +msgstr "VAROVÁNÍ: vlastník operátoru \"%s\" se zdá být neplatný\n" + +#: pg_dump.c:3455 +#, c-format +msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" +msgstr "VAROVÁNÍ: vlastník třídy operátorů \"%s\" se zdá být neplatný\n" + +#: pg_dump.c:3542 +#, c-format +msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" +msgstr "VAROVÁNÍ: vlastník rodiny operátorů \"%s\" se zdá být neplatný\n" + +#: pg_dump.c:3679 +#, c-format +msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" +msgstr "VAROVÁNÍ: vlastník agregační funkce \"%s\" se zdá být neplatný\n" + +#: pg_dump.c:3849 +#, c-format +msgid "WARNING: owner of function \"%s\" appears to be invalid\n" +msgstr "VAROVÁNÍ: vlastník funkce \"%s\" se zdá být neplatný\n" + +#: pg_dump.c:4349 +#, c-format +msgid "WARNING: owner of table \"%s\" appears to be invalid\n" +msgstr "VAROVÁNÍ: vlastník tabulky \"%s\" se zdá být neplatný\n" + +#: pg_dump.c:4497 +#, c-format +msgid "reading indexes for table \"%s\"\n" +msgstr "čtu indexy pro tabulku \"%s\"\n" + +#: pg_dump.c:4817 +#, c-format +msgid "reading foreign key constraints for table \"%s\"\n" +msgstr "čtu cizí klíče pro tabulku \"%s\"\n" + +#: pg_dump.c:5049 +#, c-format +msgid "" +"failed sanity check, parent table OID %u of pg_rewrite entry OID %u not " +"found\n" +msgstr "" +"selhala kontrola, OID %u rodičovské tabulky u pg_rewrite položky OID %u " +"nelze najít\n" + +#: pg_dump.c:5133 +#, c-format +msgid "reading triggers for table \"%s\"\n" +msgstr "čtu triggery pro tabulku \"%s\"\n" + +#: pg_dump.c:5296 +#, c-format +msgid "" +"query produced null referenced table name for foreign key trigger \"%s\" on " +"table \"%s\" (OID of table: %u)\n" +msgstr "" +"dotaz vrátil prázdné jméno referencované tabulky pro trigger \"%s\" cizího " +"klíče pro tabulku \"%s\" (OID tabulky: %u)\n" + +#: pg_dump.c:5667 +#, c-format +msgid "finding the columns and types of table \"%s\"\n" +msgstr "hledám sloupce a typy pro tabulku \"%s\"\n" + +#: pg_dump.c:5813 +#, c-format +msgid "invalid column numbering in table \"%s\"\n" +msgstr "neplatné číslování sloupců v tabulce \"%s\"\n" + +#: pg_dump.c:5848 +#, c-format +msgid "finding default expressions of table \"%s\"\n" +msgstr "hledám DEFAULT výrazy pro tabulku \"%s\"\n" + +#: pg_dump.c:5901 +#, c-format +msgid "invalid adnum value %d for table \"%s\"\n" +msgstr "neplatná \"adnum\" hodnota %d pro tabulku \"%s\"\n" + +#: pg_dump.c:5974 +#, c-format +msgid "finding check constraints for table \"%s\"\n" +msgstr "hledám CHECK omezení pro tabulku \"%s\"\n" + +#: pg_dump.c:6054 +#, c-format +msgid "expected %d check constraint on table \"%s\" but found %d\n" +msgid_plural "expected %d check constraints on table \"%s\" but found %d\n" +msgstr[0] "očekáváno %d CHECK omezení pro tabulku \"%s\", ale nalezeno %d\n" +msgstr[1] "očekáváno %d CHECK omezení pro tabulku \"%s\", ale nalezeno %d\n" +msgstr[2] "očekáváno %d CHECK omezení pro tabulku \"%s\", ale nalezeno %d\n" + +#: pg_dump.c:6058 +msgid "(The system catalogs might be corrupted.)\n" +msgstr "(Systémové katalogy mohou být poškozeny.)\n" + +#: pg_dump.c:8688 +msgid "WARNING: bogus value in proargmodes array\n" +msgstr "VAROVÁNÍ: nesmyslná hodnota v \"proargmodes\" poli\n" + +#: pg_dump.c:9002 +msgid "WARNING: could not parse proallargtypes array\n" +msgstr "VAROVÁNÍ: nelze naparsovat pole \"proallargtypes\"\n" + +#: pg_dump.c:9018 +msgid "WARNING: could not parse proargmodes array\n" +msgstr "VAROVÁNÍ: nelze naparsovat pole \"proargmodes\"\n" + +#: pg_dump.c:9032 +msgid "WARNING: could not parse proargnames array\n" +msgstr "VAROVÁNÍ: nelze naparsovat pole \"proargnames\"\n" + +#: pg_dump.c:9043 +msgid "WARNING: could not parse proconfig array\n" +msgstr "VAROVÁNÍ: nelze naparsovat pole \"proconfig\"\n" + +#: pg_dump.c:9099 +#, c-format +msgid "unrecognized provolatile value for function \"%s\"\n" +msgstr "nerozpoznaná \"provolatile\" hodnota pro funkci \"%s\"\n" + +#: pg_dump.c:9315 +msgid "WARNING: bogus value in pg_cast.castmethod field\n" +msgstr "VAROVÁNÍ: nesmyslná hodnota v položce \"pg_cast.castmethod\"\n" + +#: pg_dump.c:9697 +#, c-format +msgid "WARNING: could not find operator with OID %s\n" +msgstr "VAROVÁNÍ: nelze najít operátor s OID %s\n" + +#: pg_dump.c:10816 +#, c-format +msgid "" +"WARNING: aggregate function %s could not be dumped correctly for this " +"database version; ignored\n" +msgstr "" +"VAROVÁNÍ: agregační funkce %s nelze dumpovat korektně pro tuto verzi " +"databáze; ignorováno\n" + +#: pg_dump.c:11620 +#, c-format +msgid "unknown object type (%d) in default privileges\n" +msgstr "neznámý typ objektu (%d) ve výchozích privilegiích\n" + +#: pg_dump.c:11637 +#, c-format +msgid "could not parse default ACL list (%s)\n" +msgstr "nelze zpracovat seznam oprávnění ACL (%s)\n" + +#: pg_dump.c:11694 +#, c-format +msgid "could not parse ACL list (%s) for object \"%s\" (%s)\n" +msgstr "nelze zpracovat seznam oprávnění ACL (%s) pro objekt \"%s\" (%s)\n" + +#: pg_dump.c:12140 +#, c-format +msgid "query to obtain definition of view \"%s\" returned no data\n" +msgstr "dotaz na získání definice view \"%s\" nevrátil žádná data\n" + +#: pg_dump.c:12143 +#, c-format +msgid "" +"query to obtain definition of view \"%s\" returned more than one definition\n" +msgstr "dotaz na získání definice view \"%s\" vrátil více jak jednu definici\n" + +#: pg_dump.c:12152 +#, c-format +msgid "definition of view \"%s\" appears to be empty (length zero)\n" +msgstr "definice view \"%s\" se zdá být prázdná (nulová délka)\n" + +#: pg_dump.c:12203 +#, c-format +msgid "query returned %d foreign server entry for foreign table \"%s\"\n" +msgid_plural "" +"query returned %d foreign server entries for foreign table \"%s\"\n" +msgstr[0] "" +"dotaz vrátil %d položku foreign serveru pro foreign tabulku \"%s\"\n" +msgstr[1] "" +"dotaz vrátil %d položky foreign serverů pro foreign tabulku \"%s\"\n" +msgstr[2] "" +"dotaz vrátil %d položek foreign serveru pro foreign tabulku \"%s\"\n" + +#: pg_dump.c:12754 +#, c-format +msgid "invalid column number %d for table \"%s\"\n" +msgstr "neplatné číslo sloupce %d pro tabulku \"%s\"\n" + +#: pg_dump.c:12865 +#, c-format +msgid "missing index for constraint \"%s\"\n" +msgstr "chybí index pro omezení \"%s\"\n" + +#: pg_dump.c:13053 +#, c-format +msgid "unrecognized constraint type: %c\n" +msgstr "neočekávaný typ omezení: %c\n" + +#: pg_dump.c:13116 +msgid "missing pg_database entry for this database\n" +msgstr "chybějící záznam v pg_database pro tuto databázi\n" + +#: pg_dump.c:13121 +msgid "found more than one pg_database entry for this database\n" +msgstr "nalezen více jak jeden záznam v pg_database pro tuto databázi\n" + +#: pg_dump.c:13153 +msgid "could not find entry for pg_indexes in pg_class\n" +msgstr "nemohu najít záznam pg_indexes v pg_class\n" + +#: pg_dump.c:13158 +msgid "found more than one entry for pg_indexes in pg_class\n" +msgstr "" +"nalezen více jak jeden záznam pg_indexes v systémové tabulce pg_class\n" + +#: pg_dump.c:13232 pg_dump.c:13397 +#, c-format +msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" +msgid_plural "" +"query to get data of sequence \"%s\" returned %d rows (expected 1)\n" +msgstr[0] "dotaz na získání dat sekvence \"%s\" vrátil %d řádek (očekáván 1)\n" +msgstr[1] "dotaz na získání dat sekvence \"%s\" vrátil %d řádky (očekáván 1)\n" +msgstr[2] "dotaz na získání dat sekvence \"%s\" vrátil %d řádek (očekáván 1)\n" + +#: pg_dump.c:13243 +#, c-format +msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" +msgstr "dotaz na získání dat sekvence \"%s\" vrátil jméno \"%s\"\n" + +#: pg_dump.c:13484 +#, c-format +msgid "unexpected tgtype value: %d\n" +msgstr "neočekávaná hodnota tgtype: %d\n" + +#: pg_dump.c:13566 +#, c-format +msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" +msgstr "neplatný řetězec argumentů (%s) pro trigger \"%s\" tabulky \"%s\"\n" + +#: pg_dump.c:13684 +#, c-format +msgid "" +"query to get rule \"%s\" for table \"%s\" failed: wrong number of rows " +"returned\n" +msgstr "" +"dotaz k získání pravidla (RULE) \"%s\" pro tabulku \"%s\" selhal: vrácen " +"chybný počet řádků\n" + +#: pg_dump.c:13946 +msgid "reading dependency data\n" +msgstr "čtu data o závislostech\n" + +#: pg_dump.c:14435 +msgid "SQL command failed\n" +msgstr "SQL příkaz selhal\n" + +#: common.c:107 +msgid "reading schemas\n" +msgstr "čtu schémata\n" + +#: common.c:118 +msgid "reading user-defined tables\n" +msgstr "čtu uživatelem definované tabulky\n" + +#: common.c:126 +msgid "reading extensions\n" +msgstr "čtu rozšíření\n" + +#: common.c:130 +msgid "reading user-defined functions\n" +msgstr "čtu uživatelem definované funkce\n" + +#: common.c:136 +msgid "reading user-defined types\n" +msgstr "čtu uživatelem definované typy\n" + +#: common.c:142 +msgid "reading procedural languages\n" +msgstr "čtu procedurální jazyky\n" + +#: common.c:146 +msgid "reading user-defined aggregate functions\n" +msgstr "čtu uživatelem definované agregátní funkce\n" + +#: common.c:150 +msgid "reading user-defined operators\n" +msgstr "čtu uživatelem definované operátory\n" + +#: common.c:155 +msgid "reading user-defined operator classes\n" +msgstr "čtu uživatelem definované třídy operátorů\n" + +#: common.c:159 +msgid "reading user-defined operator families\n" +msgstr "čtu uživatelem definované rodiny operátorů\n" + +#: common.c:163 +msgid "reading user-defined text search parsers\n" +msgstr "čtu uživatelem definované fulltextové parsery\n" + +#: common.c:167 +msgid "reading user-defined text search templates\n" +msgstr "čtu uživatelem definované fulltextové šablony\n" + +#: common.c:171 +msgid "reading user-defined text search dictionaries\n" +msgstr "čtu uživatelem definované fulltextové slovníky\n" + +#: common.c:175 +msgid "reading user-defined text search configurations\n" +msgstr "čtu uživatelské fulltextového konfigurace\n" + +#: common.c:179 +msgid "reading user-defined foreign-data wrappers\n" +msgstr "čtu uživatelem definované foreign-data wrappery\n" + +#: common.c:183 +msgid "reading user-defined foreign servers\n" +msgstr "čtu uživatelem definované foreign servery\n" + +#: common.c:187 +msgid "reading default privileges\n" +msgstr "čtu implicitní přístupová práva\n" + +#: common.c:191 +msgid "reading user-defined collations\n" +msgstr "čtu uživatelem definované collations\n" + +#: common.c:196 +msgid "reading user-defined conversions\n" +msgstr "čtu uživatelem definované konverze\n" + +#: common.c:200 +msgid "reading type casts\n" +msgstr "čtu přetypování\n" + +#: common.c:204 +msgid "reading table inheritance information\n" +msgstr "čtu informace dědičnosti tabulky\n" + +#: common.c:208 +msgid "reading rewrite rules\n" +msgstr "čtu přepisovací pravidla\n" + +#: common.c:217 +msgid "finding extension members\n" +msgstr "hledám složky rozšíření\n" + +#: common.c:222 +msgid "finding inheritance relationships\n" +msgstr "hledám informace o dědičnosti\n" + +#: common.c:226 +msgid "reading column info for interesting tables\n" +msgstr "čtu informace o sloupci pro tabulky\n" + +#: common.c:230 +msgid "flagging inherited columns in subtables\n" +msgstr "označuji zděděné sloupce v pod-tabulkách\n" + +#: common.c:234 +msgid "reading indexes\n" +msgstr "čtu indexy\n" + +#: common.c:238 +msgid "reading constraints\n" +msgstr "čtu omezení\n" + +#: common.c:242 +msgid "reading triggers\n" +msgstr "čtu triggery\n" + +#: common.c:788 +#, c-format +msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n" +msgstr "" +"selhala kontrola, rodičovské OID %u tabulky \"%s\" (OID %u) nelze najít\n" + +#: common.c:830 +#, c-format +msgid "could not parse numeric array \"%s\": too many numbers\n" +msgstr "nemohu zpracovat numerické pole \"%s\": příliš mnoho čísel\n" + +#: common.c:845 +#, c-format +msgid "could not parse numeric array \"%s\": invalid character in number\n" +msgstr "nemohu zpracovat numerické pole \"%s\": neplatný znak v čísle\n" + +#: common.c:958 +msgid "cannot duplicate null pointer\n" +msgstr "nelze duplikovat nulový ukazatel\n" + +#: common.c:961 common.c:972 common.c:983 common.c:994 +#: pg_backup_archiver.c:765 pg_backup_archiver.c:1161 +#: pg_backup_archiver.c:1292 pg_backup_archiver.c:1762 +#: pg_backup_archiver.c:1956 pg_backup_archiver.c:2002 +#: pg_backup_archiver.c:4263 pg_backup_custom.c:132 pg_backup_custom.c:139 +#: pg_backup_custom.c:780 pg_backup_custom.c:907 pg_backup_db.c:147 +#: pg_backup_db.c:157 pg_backup_db.c:205 pg_backup_db.c:249 pg_backup_db.c:264 +#: pg_backup_db.c:298 pg_backup_db.c:492 pg_backup_files.c:114 +#: pg_backup_null.c:72 pg_backup_tar.c:171 pg_backup_tar.c:1005 +msgid "out of memory\n" +msgstr "nedostatek paměti\n" + +#: pg_backup_archiver.c:88 +msgid "archiver" +msgstr "archivář" + +#: pg_backup_archiver.c:208 pg_backup_archiver.c:1260 +#, c-format +msgid "could not close output file: %s\n" +msgstr "nelze zavřít výstupní soubor: %s\n" + +#: pg_backup_archiver.c:234 +msgid "-C and -c are incompatible options\n" +msgstr "-C a -c jsou nekompatibilní přepínače\n" + +#: pg_backup_archiver.c:241 +msgid "-C and -1 are incompatible options\n" +msgstr "-C a -1 jsou nekompatibilní přepínače\n" + +#: pg_backup_archiver.c:251 +msgid "parallel restore is not supported with this archive file format\n" +msgstr "paralelní obnova není pro tento formát archivu podporována\n" + +#: pg_backup_archiver.c:255 +msgid "" +"parallel restore is not supported with archives made by pre-8.0 pg_dump\n" +msgstr "paralelní obnova není podporována s archivy z pre-8.0 verzí pg_dump\n" + +#: pg_backup_archiver.c:274 +msgid "" +"cannot restore from compressed archive (compression not supported in this " +"installation)\n" +msgstr "" +"nelze obnovit z komprimovaného archivu (není nastavena podpora komprese)\n" + +#: pg_backup_archiver.c:284 +msgid "connecting to database for restore\n" +msgstr "navazováno spojení s databází pro obnovu\n" + +#: pg_backup_archiver.c:286 +msgid "direct database connections are not supported in pre-1.3 archives\n" +msgstr "" +"přímé spojení s databází nejsou podporovány v archivech před verzí 1.3\n" + +#: pg_backup_archiver.c:328 +msgid "implied data-only restore\n" +msgstr "předpokládána pouze obnova dat\n" + +#: pg_backup_archiver.c:380 +#, c-format +msgid "dropping %s %s\n" +msgstr "odstraňuji %s %s\n" + +#: pg_backup_archiver.c:432 +#, c-format +msgid "setting owner and privileges for %s %s\n" +msgstr "nastavuji vlastníka a přístupová práva pro %s %s\n" + +#: pg_backup_archiver.c:490 pg_backup_archiver.c:492 +#, c-format +msgid "warning from original dump file: %s\n" +msgstr "varování z originálního dump souboru: %s\n" + +#: pg_backup_archiver.c:499 +#, c-format +msgid "creating %s %s\n" +msgstr "vytvářím %s %s\n" + +#: pg_backup_archiver.c:543 +#, c-format +msgid "connecting to new database \"%s\"\n" +msgstr "připojuji se k nové databázi \"%s\"\n" + +#: pg_backup_archiver.c:571 +#, c-format +msgid "restoring %s\n" +msgstr "obnovuji %s\n" + +#: pg_backup_archiver.c:585 +#, c-format +msgid "restoring data for table \"%s\"\n" +msgstr "obnovuji data pro tabulku \"%s\"\n" + +#: pg_backup_archiver.c:647 +#, c-format +msgid "executing %s %s\n" +msgstr "vykonávám %s %s\n" + +#: pg_backup_archiver.c:680 +#, c-format +msgid "disabling triggers for %s\n" +msgstr "vypínám triggery pro %s\n" + +#: pg_backup_archiver.c:706 +#, c-format +msgid "enabling triggers for %s\n" +msgstr "zapínám triggery pro %s\n" + +#: pg_backup_archiver.c:736 +msgid "" +"internal error -- WriteData cannot be called outside the context of a " +"DataDumper routine\n" +msgstr "" +"interní chyba -- WriteData není možno volat mimo kontext rutiny DataDumper\n" + +#: pg_backup_archiver.c:893 +msgid "large-object output not supported in chosen format\n" +msgstr "\"large object\" výstup není podporován ve vybraném formátu\n" + +#: pg_backup_archiver.c:947 +#, c-format +msgid "restored %d large object\n" +msgid_plural "restored %d large objects\n" +msgstr[0] "obnoven %d \"large object\"\n" +msgstr[1] "obnoveny %d \"large objecty\"\n" +msgstr[2] "obnoveno %d \"large objectů\"\n" + +#: pg_backup_archiver.c:968 pg_backup_tar.c:723 +#, c-format +msgid "restoring large object with OID %u\n" +msgstr "obnovován \"large object\" s OID %u\n" + +#: pg_backup_archiver.c:980 +#, c-format +msgid "could not create large object %u: %s" +msgstr "nelze vytvořit \"large object\" %u: %s" + +#: pg_backup_archiver.c:1042 +#, c-format +msgid "could not open TOC file \"%s\": %s\n" +msgstr "nelze otevřít TOC soubor \"%s\": %s\n" + +#: pg_backup_archiver.c:1083 +#, c-format +msgid "WARNING: line ignored: %s\n" +msgstr "VAROVÁNÍ: řádka ignorována: %s\n" + +#: pg_backup_archiver.c:1090 +#, c-format +msgid "could not find entry for ID %d\n" +msgstr "nelze najít záznam ID %d\n" + +#: pg_backup_archiver.c:1111 pg_backup_files.c:172 pg_backup_files.c:457 +#, c-format +msgid "could not close TOC file: %s\n" +msgstr "nelze zavřít TOC soubor: %s\n" + +#: pg_backup_archiver.c:1230 pg_backup_custom.c:152 pg_backup_files.c:130 +#: pg_backup_files.c:262 +#, c-format +msgid "could not open output file \"%s\": %s\n" +msgstr "nelze otevřít výstupní soubor \"%s\": %s\n" + +#: pg_backup_archiver.c:1233 pg_backup_custom.c:159 pg_backup_files.c:137 +#, c-format +msgid "could not open output file: %s\n" +msgstr "nelze otevřít výstupní soubor: %s\n" + +#: pg_backup_archiver.c:1335 +#, c-format +msgid "wrote %lu byte of large object data (result = %lu)\n" +msgid_plural "wrote %lu bytes of large object data (result = %lu)\n" +msgstr[0] "zapsán %lu byte dat \"large objektu\" (výsledek = %lu)\n" +msgstr[1] "zapsáno %lu byty dat \"large objektu\" (výsledek = %lu)\n" +msgstr[2] "zapsáno %lu bytů dat \"large objektu\" (výsledek = %lu)\n" + +#: pg_backup_archiver.c:1341 +#, c-format +msgid "could not write to large object (result: %lu, expected: %lu)\n" +msgstr "nelze zapsat \"large object\" (výsledek = %lu, očekáváno: %lu)\n" + +#: pg_backup_archiver.c:1399 pg_backup_archiver.c:1422 pg_backup_custom.c:652 +#: pg_backup_files.c:432 pg_backup_tar.c:590 pg_backup_tar.c:1092 +#: pg_backup_tar.c:1385 +#, c-format +msgid "could not write to output file: %s\n" +msgstr "nelze zapsat do výstupního souboru: %s\n" + +#: pg_backup_archiver.c:1407 +msgid "could not write to custom output routine\n" +msgstr "nelze zapsat do vlastní výstupní rutiny\n" + +#: pg_backup_archiver.c:1505 +msgid "Error while INITIALIZING:\n" +msgstr "Chyba během INICIALIZACE:\n" + +#: pg_backup_archiver.c:1510 +msgid "Error while PROCESSING TOC:\n" +msgstr "Chyba během ZPRACOVÁNÍ TOC:\n" + +#: pg_backup_archiver.c:1515 +msgid "Error while FINALIZING:\n" +msgstr "Chyba během FINALIZACE:\n" + +#: pg_backup_archiver.c:1520 +#, c-format +msgid "Error from TOC entry %d; %u %u %s %s %s\n" +msgstr "Chyba v TOC záznamu %d; %u %u %s %s %s\n" + +#: pg_backup_archiver.c:1655 +#, c-format +msgid "unexpected data offset flag %d\n" +msgstr "Neočekávaný příznak datového offsetu %d\n" + +#: pg_backup_archiver.c:1668 +msgid "file offset in dump file is too large\n" +msgstr "offset souboru v dumpu je příliš velký\n" + +#: pg_backup_archiver.c:1765 pg_backup_archiver.c:3167 pg_backup_custom.c:630 +#: pg_backup_files.c:419 pg_backup_tar.c:779 +msgid "unexpected end of file\n" +msgstr "neočekávaný konec souboru\n" + +#: pg_backup_archiver.c:1782 +msgid "attempting to ascertain archive format\n" +msgstr "pokouším se zjistit formát archivu\n" + +#: pg_backup_archiver.c:1808 pg_backup_archiver.c:1818 +#, c-format +msgid "directory name too long: \"%s\"\n" +msgstr "jméno adresáře je příliš dlouhé: \"%s\"\n" + +#: pg_backup_archiver.c:1826 +#, c-format +msgid "" +"directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not " +"exist)\n" +msgstr "adresář \"%s\" zřejmě není platným archivem (\"toc.dat\" neexistuje)\n" + +#: pg_backup_archiver.c:1834 pg_backup_custom.c:171 pg_backup_custom.c:762 +#: pg_backup_files.c:155 pg_backup_files.c:307 +#, c-format +msgid "could not open input file \"%s\": %s\n" +msgstr "nelze otevřít vstupní soubor \"%s\": %s\n" + +#: pg_backup_archiver.c:1842 pg_backup_custom.c:178 pg_backup_files.c:162 +#, c-format +msgid "could not open input file: %s\n" +msgstr "nelze otevřít vstupní soubor: %s\n" + +#: pg_backup_archiver.c:1851 +#, c-format +msgid "could not read input file: %s\n" +msgstr "nelze číst vstupní soubor: %s\n" + +#: pg_backup_archiver.c:1853 +#, c-format +msgid "input file is too short (read %lu, expected 5)\n" +msgstr "vstupní soubor je příliš krátký (čteno %lu, očekáváno 5)\n" + +#: pg_backup_archiver.c:1911 +msgid "input file does not appear to be a valid archive (too short?)\n" +msgstr "vstupní soubor se nezdá být korektním archivem (příliš krátký?)\n" + +#: pg_backup_archiver.c:1914 +msgid "input file does not appear to be a valid archive\n" +msgstr "vstupní soubor se nezdá být korektním archivem\n" + +#: pg_backup_archiver.c:1934 +#, c-format +msgid "could not close input file: %s\n" +msgstr "nelze zavřít výstupní soubor: %s\n" + +#: pg_backup_archiver.c:1951 +#, c-format +msgid "allocating AH for %s, format %d\n" +msgstr "alokován AH pro %s, formát %d\n" + +#: pg_backup_archiver.c:2062 +#, c-format +msgid "unrecognized file format \"%d\"\n" +msgstr "neznámý formát souboru \"%d\"\n" + +#: pg_backup_archiver.c:2184 +#, c-format +msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" +msgstr "ID záznamu %d je mimo rozsah -- možná je poškozena TOC\n" + +#: pg_backup_archiver.c:2300 +#, c-format +msgid "read TOC entry %d (ID %d) for %s %s\n" +msgstr "přečetl jsem TOC záznam %d (ID %d) pro %s %s\n" + +#: pg_backup_archiver.c:2334 +#, c-format +msgid "unrecognized encoding \"%s\"\n" +msgstr "neplatné kódování \"%s\"\n" + +#: pg_backup_archiver.c:2339 +#, c-format +msgid "invalid ENCODING item: %s\n" +msgstr "chybná položka ENCODING: %s\n" + +#: pg_backup_archiver.c:2357 +#, c-format +msgid "invalid STDSTRINGS item: %s\n" +msgstr "chybná položka STDSTRINGS: %s\n" + +#: pg_backup_archiver.c:2555 +#, c-format +msgid "could not set session user to \"%s\": %s" +msgstr "nelze nastavit uživatele session na \"%s\": %s" + +#: pg_backup_archiver.c:2895 pg_backup_archiver.c:3077 +#, c-format +msgid "WARNING: don't know how to set owner for object type %s\n" +msgstr "VAROVÁNÍ: nevím jak nastavit vlastníka pro typ %s\n" + +#: pg_backup_archiver.c:3130 +msgid "" +"WARNING: requested compression not available in this installation -- archive " +"will be uncompressed\n" +msgstr "" +"VAROVÁNÍ: požadovaná komprese není v této instalaci dostupná -- archiv bude " +"nekomprimovaný\n" + +#: pg_backup_archiver.c:3170 +msgid "did not find magic string in file header\n" +msgstr "nelze najít identifikační řetězec v hlavičce souboru\n" + +#: pg_backup_archiver.c:3183 +#, c-format +msgid "unsupported version (%d.%d) in file header\n" +msgstr "nepodporovaná verze (%d.%d) v hlavičce souboru\n" + +#: pg_backup_archiver.c:3188 +#, c-format +msgid "sanity check on integer size (%lu) failed\n" +msgstr "selhala kontrola velikosti integeru (%lu)\n" + +#: pg_backup_archiver.c:3192 +msgid "" +"WARNING: archive was made on a machine with larger integers, some operations " +"might fail\n" +msgstr "" +"VAROVÁNÍ: archiv byl vytvořen na stroji s většími celými čísly (integer), " +"některé operace mohou selhat\n" + +#: pg_backup_archiver.c:3202 +#, c-format +msgid "expected format (%d) differs from format found in file (%d)\n" +msgstr "" +"očekávaný formát (%d) se liší se od formátu nalezeného v souboru (%d)\n" + +#: pg_backup_archiver.c:3218 +msgid "" +"WARNING: archive is compressed, but this installation does not support " +"compression -- no data will be available\n" +msgstr "" +"VAROVÁNÍ: archiv je komprimován, ale tato instalace nepodporuje kompresi -- " +"data nebudou dostupná\n" + +#: pg_backup_archiver.c:3236 +msgid "WARNING: invalid creation date in header\n" +msgstr "VAROVÁNÍ: v hlavičce je neplatné datum vytvoření\n" + +#: pg_backup_archiver.c:3334 +msgid "entering restore_toc_entries_parallel\n" +msgstr "vstupuji do restore_toc_entries_parallel\n" + +#: pg_backup_archiver.c:3375 +#, c-format +msgid "processing item %d %s %s\n" +msgstr "zpracovávám položku %d %s %s\n" + +#: pg_backup_archiver.c:3451 +msgid "entering main parallel loop\n" +msgstr "vstupuji do hlavní paralelní smyčky\n" + +#: pg_backup_archiver.c:3465 +#, c-format +msgid "skipping item %d %s %s\n" +msgstr "přeskakuji položku %d %s %s\n" + +#: pg_backup_archiver.c:3481 +#, c-format +msgid "launching item %d %s %s\n" +msgstr "spouštím položku %d %s %s\n" + +#: pg_backup_archiver.c:3518 +#, c-format +msgid "worker process crashed: status %d\n" +msgstr "worker proces selhal: status %d\n" + +#: pg_backup_archiver.c:3523 +msgid "finished main parallel loop\n" +msgstr "ukončuji hlavní paralelní smyčku\n" + +#: pg_backup_archiver.c:3541 +#, c-format +msgid "processing missed item %d %s %s\n" +msgstr "zpracování vynechalo položku %d %s %s\n" + +#: pg_backup_archiver.c:3567 +msgid "parallel_restore should not return\n" +msgstr "parallel_restore by neměl skončit\n" + +#: pg_backup_archiver.c:3573 +#, c-format +msgid "could not create worker process: %s\n" +msgstr "nelze vytvořit worker proces: %s\n" + +#: pg_backup_archiver.c:3581 +#, c-format +msgid "could not create worker thread: %s\n" +msgstr "nelze vytvořit worker thread: %s\n" + +#: pg_backup_archiver.c:3805 +msgid "no item ready\n" +msgstr "žádná položka není připravena\n" + +#: pg_backup_archiver.c:3900 +msgid "could not find slot of finished worker\n" +msgstr "nelze najít slot ukončeného workera\n" + +#: pg_backup_archiver.c:3902 +#, c-format +msgid "finished item %d %s %s\n" +msgstr "dokončena položka %d %s %s\n" + +#: pg_backup_archiver.c:3915 +#, c-format +msgid "worker process failed: exit code %d\n" +msgstr "worker proces selhal: exit kód %d\n" + +#: pg_backup_archiver.c:4111 +#, c-format +msgid "transferring dependency %d -> %d to %d\n" +msgstr "přenáším závislost %d -> %d to %d\n" + +#: pg_backup_archiver.c:4180 +#, c-format +msgid "reducing dependencies for %d\n" +msgstr "redukuji závislosti pro %d\n" + +#: pg_backup_archiver.c:4229 +#, c-format +msgid "table \"%s\" could not be created, will not restore its data\n" +msgstr "tabulku \"%s\" nelze vytvořit, její data nebudou obnovena\n" + +#: pg_backup_custom.c:87 +msgid "custom archiver" +msgstr "vlastní archivář" + +#: pg_backup_custom.c:373 pg_backup_null.c:153 +msgid "invalid OID for large object\n" +msgstr "neplatné OID pro \"large object\"\n" + +#: pg_backup_custom.c:444 +#, c-format +msgid "unrecognized data block type (%d) while searching archive\n" +msgstr "nepřípustný typ datového bloku (%d) během prohledávání archivu\n" + +#: pg_backup_custom.c:455 +#, c-format +msgid "error during file seek: %s\n" +msgstr "chyba během posunu v souboru: %s\n" + +#: pg_backup_custom.c:465 +#, c-format +msgid "" +"could not find block ID %d in archive -- possibly due to out-of-order " +"restore request, which cannot be handled due to lack of data offsets in " +"archive\n" +msgstr "" +"v archivu nelze najít blok ID %d -- možná kvůli out-of-order restore " +"požadavku, který nemohl být vyřízen kvůli chybějícím datovým offsetům v " +"archivu\n" + +#: pg_backup_custom.c:470 +#, c-format +msgid "" +"could not find block ID %d in archive -- possibly due to out-of-order " +"restore request, which cannot be handled due to non-seekable input file\n" +msgstr "" +"v archivu nelze najít blok ID %d -- možná kvůli out-of-order restore " +"požadavku, který nemohl být vyřízen kvůli non-seekable vstupnímu souboru\n" + +#: pg_backup_custom.c:475 +#, c-format +msgid "could not find block ID %d in archive -- possibly corrupt archive\n" +msgstr "v archivu nelze najít blok %d -- archiv může být poškozen\n" + +#: pg_backup_custom.c:482 +#, c-format +msgid "found unexpected block ID (%d) when reading data -- expected %d\n" +msgstr "nalezeno neočekávané ID bloku (%d) při čtení dat - očekáváno %d\n" + +#: pg_backup_custom.c:496 +#, c-format +msgid "unrecognized data block type %d while restoring archive\n" +msgstr "nepřípustný typ datového bloku %d během obnovení archivu\n" + +#: pg_backup_custom.c:578 pg_backup_custom.c:916 +msgid "could not read from input file: end of file\n" +msgstr "nelze číst vstupní soubor: end of file\n" + +#: pg_backup_custom.c:581 pg_backup_custom.c:919 +#, c-format +msgid "could not read from input file: %s\n" +msgstr "nelze číst vstupní soubor: %s\n" + +#: pg_backup_custom.c:610 +#, c-format +msgid "could not write byte: %s\n" +msgstr "nelze zapsat byte: %s\n" + +#: pg_backup_custom.c:718 pg_backup_custom.c:756 +#, c-format +msgid "could not close archive file: %s\n" +msgstr "nelze uzavřít archivní soubor: %s\n" + +#: pg_backup_custom.c:737 +msgid "can only reopen input archives\n" +msgstr "vstupní archivy lze pouze znovu otevřít\n" + +#: pg_backup_custom.c:744 +msgid "parallel restore from stdin is not supported\n" +msgstr "paralelní obnova ze standardního vstupu není podporována\n" + +#: pg_backup_custom.c:746 +msgid "parallel restore from non-seekable file is not supported\n" +msgstr "paralelní obnova z neseekovatelného souboru není podporována\n" + +#: pg_backup_custom.c:751 +#, c-format +msgid "could not determine seek position in archive file: %s\n" +msgstr "nelze určit seek pozici v archivním souboru: %s\n" + +#: pg_backup_custom.c:766 +#, c-format +msgid "could not set seek position in archive file: %s\n" +msgstr "nelze nastavit seek pozici v archivním souboru: %s\n" + +#: pg_backup_custom.c:786 +msgid "compressor active\n" +msgstr "compressor aktivní\n" + +#: pg_backup_custom.c:822 +msgid "WARNING: ftell mismatch with expected position -- ftell used\n" +msgstr "VAROVÁNÍ: ftell neodpovídá očekávané pozici -- použit ftell\n" + +#: pg_backup_db.c:25 +msgid "archiver (db)" +msgstr "archivář (db)" + +#: pg_backup_db.c:54 +msgid "could not get server_version from libpq\n" +msgstr "nelze získat server_version z libpq\n" + +#: pg_backup_db.c:67 pg_dumpall.c:1754 +#, c-format +msgid "server version: %s; %s version: %s\n" +msgstr "verze serveru: %s; %s verze: %s\n" + +#: pg_backup_db.c:69 pg_dumpall.c:1756 +#, c-format +msgid "aborting because of server version mismatch\n" +msgstr "končím kvůli rozdílnosti verzí serverů\n" + +#: pg_backup_db.c:140 +#, c-format +msgid "connecting to database \"%s\" as user \"%s\"\n" +msgstr "připojuji se k databázi \"%s\" jako uživatel \"%s\"\n" + +#: pg_backup_db.c:145 pg_backup_db.c:200 pg_backup_db.c:247 pg_backup_db.c:296 +#: pg_dumpall.c:1650 pg_dumpall.c:1702 +msgid "Password: " +msgstr "Heslo: " + +#: pg_backup_db.c:181 +msgid "failed to reconnect to database\n" +msgstr "selhalo znovunavázání spojení s databází\n" + +#: pg_backup_db.c:186 +#, c-format +msgid "could not reconnect to database: %s" +msgstr "nelze znovu navázat spojení s databází: %s" + +#: pg_backup_db.c:202 +msgid "connection needs password\n" +msgstr "spojení vyžaduje heslo\n" + +#: pg_backup_db.c:243 +msgid "already connected to a database\n" +msgstr "spojení s databází již existuje\n" + +#: pg_backup_db.c:288 +msgid "failed to connect to database\n" +msgstr "selhalo spojení s databází\n" + +#: pg_backup_db.c:307 +#, c-format +msgid "connection to database \"%s\" failed: %s" +msgstr "spojení s databází \"%s\" selhalo: %s" + +#: pg_backup_db.c:323 +#, c-format +msgid "%s" +msgstr "%s" + +#: pg_backup_db.c:415 pg_backup_db.c:486 pg_backup_db.c:495 +msgid "could not execute query" +msgstr "nelze provést dotaz" + +#: pg_backup_db.c:466 +#, c-format +msgid "error returned by PQputCopyData: %s" +msgstr "PQputCopyData vrátilo chybu: %s" + +#: pg_backup_db.c:514 +#, c-format +msgid "error returned by PQputCopyEnd: %s" +msgstr "PQputCopyEnd vrátilo chybu: %s" + +#: pg_backup_db.c:531 +msgid "could not start database transaction" +msgstr "nelze spustit databázovou transakci" + +#: pg_backup_db.c:537 +msgid "could not commit database transaction" +msgstr "nelze provést commit transakce" + +#: pg_backup_files.c:68 +msgid "file archiver" +msgstr "archivář souborů" + +#: pg_backup_files.c:122 +msgid "" +"WARNING:\n" +" This format is for demonstration purposes; it is not intended for\n" +" normal use. Files will be written in the current working directory.\n" +msgstr "" +"VAROVÁNÍ:\n" +" Tento formát je pro demonstrační účely a není určen k pro běžné\n" +" použití. Soubory budou zapsány do aktuálního adresáře.\n" + +#: pg_backup_files.c:283 +msgid "could not close data file\n" +msgstr "nelze zavřít datový soubor\n" + +#: pg_backup_files.c:317 +msgid "could not close data file after reading\n" +msgstr "nelze zavřít datový soubor po jeho čtení\n" + +#: pg_backup_files.c:379 +#, c-format +msgid "could not open large object TOC for input: %s\n" +msgstr "nelze otevřít \"large object\" TOC pro vstup: %s\n" + +#: pg_backup_files.c:392 pg_backup_files.c:561 +#, c-format +msgid "could not close large object TOC file: %s\n" +msgstr "nelze zavřít \"large object\" TOC soubor: %s\n" + +#: pg_backup_files.c:404 +msgid "could not write byte\n" +msgstr "nelze zapsat byte\n" + +#: pg_backup_files.c:490 +#, c-format +msgid "could not open large object TOC for output: %s\n" +msgstr "nelze otevřít \"large object\" TOC pro výstup: %s\n" + +#: pg_backup_files.c:510 pg_backup_tar.c:929 +#, c-format +msgid "invalid OID for large object (%u)\n" +msgstr "neplatné OID pro \"large object\" (%u)\n" + +#: pg_backup_files.c:529 +#, c-format +msgid "could not open large object file \"%s\" for input: %s\n" +msgstr "nelze otevřít \"large object\" \"%s\" pro vstup: %s\n" + +#: pg_backup_files.c:544 +msgid "could not close large object file\n" +msgstr "nelze zavřít \"large object\" soubor\n" + +#: pg_backup_null.c:78 +msgid "this format cannot be read\n" +msgstr "tento formát nelze číst\n" + +#: pg_backup_tar.c:105 +msgid "tar archiver" +msgstr "tar archivář" + +#: pg_backup_tar.c:183 +#, c-format +msgid "could not open TOC file \"%s\" for output: %s\n" +msgstr "nelze otevřít TOC soubor \"%s\" pro výstup: %s\n" + +#: pg_backup_tar.c:191 +#, c-format +msgid "could not open TOC file for output: %s\n" +msgstr "nelze otevřít TOC soubor pro výstup: %s\n" + +#: pg_backup_tar.c:218 pg_backup_tar.c:374 +msgid "compression is not supported by tar archive format\n" +msgstr "komprese není podporována v \"tar\" výstupním formátu\n" + +#: pg_backup_tar.c:226 +#, c-format +msgid "could not open TOC file \"%s\" for input: %s\n" +msgstr "nelze otevřít TOC soubor \"%s\" pro vstup: %s\n" + +#: pg_backup_tar.c:233 +#, c-format +msgid "could not open TOC file for input: %s\n" +msgstr "nelze otevřít TOC soubor pro vstup: %s\n" + +#: pg_backup_tar.c:360 +#, c-format +msgid "could not find file \"%s\" in archive\n" +msgstr "v archivu nelze najít soubor \"%s\"\n" + +#: pg_backup_tar.c:416 +#, c-format +msgid "could not generate temporary file name: %s\n" +msgstr "nelze vygenerovat jméno dočasného souboru: %s\n" + +#: pg_backup_tar.c:425 +msgid "could not open temporary file\n" +msgstr "nelze otevřít dočasný soubor\n" + +#: pg_backup_tar.c:452 +msgid "could not close tar member\n" +msgstr "nelze zavřít tar položku\n" + +#: pg_backup_tar.c:552 +msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" +msgstr "interní chyba -- ani th ani fh nespecifikován v tarReadRaw()\n" + +#: pg_backup_tar.c:678 +#, c-format +msgid "unexpected COPY statement syntax: \"%s\"\n" +msgstr "neočekávaná syntaxe příkazu COPY: \"%s\"\n" + +#: pg_backup_tar.c:874 +msgid "could not write null block at end of tar archive\n" +msgstr "nelze zapsat null blok na konec tar archivu\n" + +#: pg_backup_tar.c:1083 +msgid "archive member too large for tar format\n" +msgstr "položka archivu je příliš velká pro formát tar\n" + +#: pg_backup_tar.c:1098 +#, c-format +msgid "could not close temporary file: %s\n" +msgstr "nelze otevřít dočasný soubor: %s\n" + +#: pg_backup_tar.c:1108 +#, c-format +msgid "actual file length (%s) does not match expected (%s)\n" +msgstr "skutečná délka souboru (%s) není stejná jako očekávaná (%s)\n" + +#: pg_backup_tar.c:1116 +msgid "could not output padding at end of tar member\n" +msgstr "nelze zapsat vycpávku (padding) na konec položky taru\n" + +#: pg_backup_tar.c:1145 +#, c-format +msgid "moving from position %s to next member at file position %s\n" +msgstr "přecházím z pozice %s na následujícího položky na pozici souboru %s\n" + +#: pg_backup_tar.c:1156 +#, c-format +msgid "now at file position %s\n" +msgstr "nyní na pozici souboru %s\n" + +#: pg_backup_tar.c:1165 pg_backup_tar.c:1195 +#, c-format +msgid "could not find header for file \"%s\" in tar archive\n" +msgstr "nelze najít hlavičku pro soubor %s v tar archivu\n" + +#: pg_backup_tar.c:1179 +#, c-format +msgid "skipping tar member %s\n" +msgstr "přeskakován tar člen %s\n" + +#: pg_backup_tar.c:1183 +#, c-format +msgid "" +"restoring data out of order is not supported in this archive format: \"%s\" " +"is required, but comes before \"%s\" in the archive file.\n" +msgstr "" +"dump dat mimo pořadí není podporováno v tomto formátu archivu: %s je " +"vyžadován, ale předchází %s.\n" + +#: pg_backup_tar.c:1229 +#, c-format +msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n" +msgstr "aktuální a předpokládaná pozice souboru se neshodují (%s vs. %s)\n" + +#: pg_backup_tar.c:1244 +#, c-format +msgid "incomplete tar header found (%lu byte)\n" +msgid_plural "incomplete tar header found (%lu bytes)\n" +msgstr[0] "nalezena nekompletní tar hlavička (%lu byt)\n" +msgstr[1] "nalezena nekompletní tar hlavička (%lu byty)\n" +msgstr[2] "nalezena nekompletní tar hlavička (%lu bytů)\n" + +#: pg_backup_tar.c:1282 +#, c-format +msgid "TOC Entry %s at %s (length %lu, checksum %d)\n" +msgstr "TOC záznam %s na %s (délka %lu, kontrolní součet %d)\n" + +#: pg_backup_tar.c:1292 +#, c-format +msgid "" +"corrupt tar header found in %s (expected %d, computed %d) file position %s\n" +msgstr "" +"nalezena poškozená tar hlavička v %s (předpokládáno %d, vypočteno %d) pozice " +"souboru %s\n" + +#: pg_restore.c:300 +#, c-format +msgid "%s: options -d/--dbname and -f/--file cannot be used together\n" +msgstr "%s: volby -d/--dbname a -f/--file nelze používat společně\n" + +#: pg_restore.c:312 +#, c-format +msgid "%s: cannot specify both --single-transaction and multiple jobs\n" +msgstr "%s: nelze zadat --single-transaction a několik úloh\n" + +#: pg_restore.c:348 +#, c-format +msgid "" +"unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"\n" +msgstr "" +"neznámý formát archivu \"%s\"; zadejte prosím \"c\", \"d\" nebo \"t\"\n" + +#: pg_restore.c:382 +#, c-format +msgid "WARNING: errors ignored on restore: %d\n" +msgstr "VAROVÁNÍ: chyby ignorovány při obnovení: %d\n" + +#: pg_restore.c:396 +#, c-format +msgid "" +"%s restores a PostgreSQL database from an archive created by pg_dump.\n" +"\n" +msgstr "" +"%s obnovuje PostgreSQL databázi z archivu vytvořeného pomocí pg_dump.\n" +"\n" + +#: pg_restore.c:398 +#, c-format +msgid " %s [OPTION]... [FILE]\n" +msgstr " %s [PŘEPÍNAČ]... [SOUBOR]\n" + +#: pg_restore.c:401 +#, c-format +msgid " -d, --dbname=NAME connect to database name\n" +msgstr " -d, --dbname=JMÉNO jméno cílové databáze\n" + +#: pg_restore.c:402 +#, c-format +msgid " -f, --file=FILENAME output file name\n" +msgstr " -f, --file=SOUBOR výstupní soubor\n" + +#: pg_restore.c:403 +#, c-format +msgid " -F, --format=c|d|t backup file format (should be automatic)\n" +msgstr "" +" -F, --format=c|d|t formát záložního souboru (měl by být " +"automatický)\n" + +#: pg_restore.c:404 +#, c-format +msgid " -l, --list print summarized TOC of the archive\n" +msgstr " -l, --list zobrazit sumarizovaný obsah (TOC) archivu\n" + +#: pg_restore.c:405 +#, c-format +msgid " -v, --verbose verbose mode\n" +msgstr " -v, --verbose vypisovat více informací\n" + +#: pg_restore.c:406 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help ukáže tuto nápovědu a skončí\n" + +#: pg_restore.c:407 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version ukáže informace o verzi a skončí\n" + +#: pg_restore.c:409 +#, c-format +msgid "" +"\n" +"Options controlling the restore:\n" +msgstr "" +"\n" +"Přepínače ovlivňující obnovu:\n" + +#: pg_restore.c:410 +#, c-format +msgid " -a, --data-only restore only the data, no schema\n" +msgstr "" +" -a, --data-only obnovit pouze data, ne definice databázových " +"objektů\n" + +#: pg_restore.c:411 +#, c-format +msgid "" +" -c, --clean clean (drop) database objects before recreating\n" +msgstr "" +" -c, --clean odstranit (drop) databázi před jejím vytvořením\n" + +#: pg_restore.c:412 +#, c-format +msgid " -C, --create create the target database\n" +msgstr " -C, --create vypíše příkazy pro vytvoření databáze\n" + +#: pg_restore.c:413 +#, c-format +msgid " -e, --exit-on-error exit on error, default is to continue\n" +msgstr " -e, --exit-on-error ukončit při chybě, implicitně pokračuje\n" + +#: pg_restore.c:414 +#, c-format +msgid " -I, --index=NAME restore named index\n" +msgstr " -I, --index=JMÉNO obnovit jmenovaný index\n" + +#: pg_restore.c:415 +#, c-format +msgid " -j, --jobs=NUM use this many parallel jobs to restore\n" +msgstr "" +" -j, --jobs=NUM použij pro obnovu daný počet paralelních jobů\n" + +#: pg_restore.c:416 +#, c-format +msgid "" +" -L, --use-list=FILENAME use table of contents from this file for\n" +" selecting/ordering output\n" +msgstr "" +" -L, --use-list=SOUBOR použít specifikovaný obsah (TOC) pro řazení\n" +" výstupu z tohoto souboru\n" + +#: pg_restore.c:418 +#, c-format +msgid " -n, --schema=NAME restore only objects in this schema\n" +msgstr " -n, --schema=NAME obnovit pouze objekty v tomto schématu\n" + +#: pg_restore.c:419 +#, c-format +msgid " -O, --no-owner skip restoration of object ownership\n" +msgstr " -O, --no-owner přeskoč nastavení vlastníka objektů\n" + +#: pg_restore.c:420 +#, c-format +msgid "" +" -P, --function=NAME(args)\n" +" restore named function\n" +msgstr "" +" -P, --function=JMÉNO(args)\n" +" obnovit funkci daného jména\n" + +#: pg_restore.c:422 +#, c-format +msgid " -s, --schema-only restore only the schema, no data\n" +msgstr " -s, --schema-only obnovit pouze definice objektů, bez dat\n" + +#: pg_restore.c:423 +#, c-format +msgid "" +" -S, --superuser=NAME superuser user name to use for disabling " +"triggers\n" +msgstr "" +" -S, --superuser=JMÉNO jméno superuživatele použité pro\n" +" zakázaní triggerů\n" + +#: pg_restore.c:424 +#, c-format +msgid " -t, --table=NAME restore named table\n" +msgstr " -t, --table=JMÉNO obnovit pouze jmenovanou tabulku\n" + +#: pg_restore.c:425 +#, c-format +msgid " -T, --trigger=NAME restore named trigger\n" +msgstr " -T, --trigger=JMÉNO obnovit pouze jmenovaný trigger\n" + +#: pg_restore.c:426 +#, c-format +msgid "" +" -x, --no-privileges skip restoration of access privileges (grant/" +"revoke)\n" +msgstr "" +" -x, --no-privileges přeskočit obnovu přístupových práv (grant/" +"revoke)\n" + +#: pg_restore.c:427 +#, c-format +msgid "" +" -1, --single-transaction\n" +" restore as a single transaction\n" +msgstr "" +" -1, --single-transaction\n" +" zpracuj soubor v rámci jedné transakce\n" + +#: pg_restore.c:429 +#, c-format +msgid " --disable-triggers disable triggers during data-only restore\n" +msgstr " --disable-triggers zakázat volání triggerů během obnovy dat\n" + +#: pg_restore.c:430 +#, c-format +msgid "" +" --no-data-for-failed-tables\n" +" do not restore data of tables that could not be\n" +" created\n" +msgstr "" +" --no-data-for-failed-tables\n" +" neobnovuj data tabulek které nemohly být " +"vytvořeny\n" + +#: pg_restore.c:433 +#, c-format +msgid " --no-security-labels do not restore security labels\n" +msgstr " --no-security-labels neobnovuj bezpečnostní štítky\n" + +#: pg_restore.c:434 +#, c-format +msgid " --no-tablespaces do not restore tablespace assignments\n" +msgstr " --no-tablespaces neobnovuj přiřazení tablespaces\n" + +#: pg_restore.c:435 +#, c-format +msgid "" +" --use-set-session-authorization\n" +" use SET SESSION AUTHORIZATION commands instead " +"of\n" +" ALTER OWNER commands to set ownership\n" +msgstr "" +" --use-set-session-authorization\n" +" používat příkaz SET SESSION AUTHORIZATION " +"namísto\n" +" příkazu ALTER OWNER pro nastavení vlastníka\n" + +#: pg_restore.c:445 +#, c-format +msgid " --role=ROLENAME do SET ROLE before restore\n" +msgstr " --role=ROLENAME před obnovou proveď SET ROLE\n" + +#: pg_restore.c:447 +#, c-format +msgid "" +"\n" +"If no input file name is supplied, then standard input is used.\n" +"\n" +msgstr "" +"\n" +"Není-li definován vstupní soubor, je použit standardní vstup.\n" +"\n" + +#: pg_dumpall.c:172 +#, c-format +msgid "" +"The program \"pg_dump\" is needed by %s but was not found in the\n" +"same directory as \"%s\".\n" +"Check your installation.\n" +msgstr "" +"Program \"pg_dump\" je potřebný pro %s, ale nebyl nalezen ve stejném\n" +"adresáři jako \"%s\".\n" +"Zkontrolujte vaši instalaci.\n" + +#: pg_dumpall.c:179 +#, c-format +msgid "" +"The program \"pg_dump\" was found by \"%s\"\n" +"but was not the same version as %s.\n" +"Check your installation.\n" +msgstr "" +"\"%s\" našel program \"pg_dump\",\n" +"který ale není stejné verze jako %s.\n" +"Zkontrolujte vaši instalaci.\n" + +#: pg_dumpall.c:315 +#, c-format +msgid "" +"%s: options -g/--globals-only and -r/--roles-only cannot be used together\n" +msgstr "" +"%s: volby -g/--globals-only a -r/--roles-only nelze používat společně\n" + +#: pg_dumpall.c:324 +#, c-format +msgid "" +"%s: options -g/--globals-only and -t/--tablespaces-only cannot be used " +"together\n" +msgstr "" +"%s: volby -g/--globals-only a -t/--tablespaces-only nelze používat společně\n" + +#: pg_dumpall.c:333 +#, c-format +msgid "" +"%s: options -r/--roles-only and -t/--tablespaces-only cannot be used " +"together\n" +msgstr "" +"%s: volby -r/--roles-only a -t/--tablespaces-only nelze používat společně\n" + +#: pg_dumpall.c:375 pg_dumpall.c:1691 +#, c-format +msgid "%s: could not connect to database \"%s\"\n" +msgstr "%s: nelze navázat spojení s databází \"%s\"\n" + +#: pg_dumpall.c:390 +#, c-format +msgid "" +"%s: could not connect to databases \"postgres\" or \"template1\"\n" +"Please specify an alternative database.\n" +msgstr "" +"%s: nelze navázat spojení s databází \"postgres\" nebo \"template1\"\n" +"Zadejte prosím alternativní databázi.\n" + +#: pg_dumpall.c:407 +#, c-format +msgid "%s: could not open the output file \"%s\": %s\n" +msgstr "%s: nelze otevřít výstupní soubor \"%s\": %s\n" + +#: pg_dumpall.c:529 +#, c-format +msgid "" +"%s extracts a PostgreSQL database cluster into an SQL script file.\n" +"\n" +msgstr "" +"%s extrahuje PostgreSQL databázi do souboru s SQL skriptem.\n" +"\n" + +#: pg_dumpall.c:531 +#, c-format +msgid " %s [OPTION]...\n" +msgstr " %s [PŘEPÍNAČ]...\n" + +#: pg_dumpall.c:534 +#, c-format +msgid " -f, --file=FILENAME output file name\n" +msgstr " -f, --file=SOUBOR výstupní soubor\n" + +#: pg_dumpall.c:540 +#, c-format +msgid "" +" -c, --clean clean (drop) databases before recreating\n" +msgstr "" +" -c, --clean odstranit (drop) databázi před jejím vytvořením\n" + +#: pg_dumpall.c:541 +#, c-format +msgid " -g, --globals-only dump only global objects, no databases\n" +msgstr "" +" -g, --globals-only dump pouze globálních objektů, ne databáze\n" + +#: pg_dumpall.c:543 +#, c-format +msgid " -O, --no-owner skip restoration of object ownership\n" +msgstr "" +" -O, --no-owner nevypisuje příkazy k nastavení vlastníka objektů\n" + +#: pg_dumpall.c:544 +#, c-format +msgid "" +" -r, --roles-only dump only roles, no databases or tablespaces\n" +msgstr "" +" -r, --roles-only dump pouze rolí, ne databází nebo tablespaců\n" + +#: pg_dumpall.c:546 +#, c-format +msgid " -S, --superuser=NAME superuser user name to use in the dump\n" +msgstr "" +" -S, --superuser=JMÉNO uživatelské jméno superuživatele použité při " +"dumpu\n" + +#: pg_dumpall.c:547 +#, c-format +msgid "" +" -t, --tablespaces-only dump only tablespaces, no databases or roles\n" +msgstr "" +" -t, --tablespaces-only dump pouze tablespaců, ne databází nebo rolí\n" + +#: pg_dumpall.c:564 +#, c-format +msgid " -l, --database=DBNAME alternative default database\n" +msgstr " -l, --database=DBNAME alternativní výchozí databáze\n" + +#: pg_dumpall.c:571 +#, c-format +msgid "" +"\n" +"If -f/--file is not used, then the SQL script will be written to the " +"standard\n" +"output.\n" +"\n" +msgstr "" +"\n" +"Pokud není použito -f/--file, potom SQL skript bude vypsán přímo na " +"standardní\n" +"výstup.\n" +"\n" + +#: pg_dumpall.c:1042 +#, c-format +msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n" +msgstr "%s: nelze zpracovat ACL seznam (%s) pro prostor tabulek \"%s\"\n" + +#: pg_dumpall.c:1342 +#, c-format +msgid "%s: could not parse ACL list (%s) for database \"%s\"\n" +msgstr "%s: nelze zpracovat ACL seznam (%s) pro databázi \"%s\"\n" + +#: pg_dumpall.c:1549 +#, c-format +msgid "%s: dumping database \"%s\"...\n" +msgstr "%s: dumpuji databázi \"%s\"...\n" + +#: pg_dumpall.c:1559 +#, c-format +msgid "%s: pg_dump failed on database \"%s\", exiting\n" +msgstr "%s: pg_dump selhal při zpracovávání databáze \"%s\", ukončuji se\n" + +#: pg_dumpall.c:1568 +#, c-format +msgid "%s: could not re-open the output file \"%s\": %s\n" +msgstr "%s: nelze otevřít logovací soubor \"%s\": %s\n" + +#: pg_dumpall.c:1618 +#, c-format +msgid "%s: running \"%s\"\n" +msgstr "%s: běží \"%s\"\n" + +#: pg_dumpall.c:1664 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: nedostatek paměti\n" + +#: pg_dumpall.c:1713 +#, c-format +msgid "%s: could not connect to database \"%s\": %s\n" +msgstr "%s: nelze navázat spojení s databází \"%s\": %s\n" + +#: pg_dumpall.c:1727 +#, c-format +msgid "%s: could not get server version\n" +msgstr "%s: nelze získat verzi serveru\n" + +#: pg_dumpall.c:1733 +#, c-format +msgid "%s: could not parse server version \"%s\"\n" +msgstr "%s: nelze zpracovat verzi serveru \"%s\"\n" + +#: pg_dumpall.c:1741 +#, c-format +msgid "%s: could not parse version \"%s\"\n" +msgstr "%s: nelze zpracovat verzi serveru \"%s\"\n" + +#: pg_dumpall.c:1780 pg_dumpall.c:1806 +#, c-format +msgid "%s: executing %s\n" +msgstr "%s: vykonávám %s\n" + +#: pg_dumpall.c:1786 pg_dumpall.c:1812 +#, c-format +msgid "%s: query failed: %s" +msgstr "%s: dotaz selhal: %s" + +#: pg_dumpall.c:1788 pg_dumpall.c:1814 +#, c-format +msgid "%s: query was: %s\n" +msgstr "%s: dotaz byl: %s\n" + +#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 +#, c-format +msgid "could not identify current directory: %s" +msgstr "nelze získat aktuální adresář: %s" + +#: ../../port/exec.c:144 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "neplatný binární soubor\"%s\"" + +#: ../../port/exec.c:193 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "nelze číst binární soubor \"%s\"" + +#: ../../port/exec.c:200 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "nelze najít spustitelný soubor \"%s\"" + +#: ../../port/exec.c:255 ../../port/exec.c:291 +#, c-format +msgid "could not change directory to \"%s\"" +msgstr "nelze změnit adresář na \"%s\"" + +#: ../../port/exec.c:270 +#, c-format +msgid "could not read symbolic link \"%s\"" +msgstr "nelze číst symbolický link \"%s\"" + +#: ../../port/exec.c:525 +#, c-format +msgid "child process exited with exit code %d" +msgstr "potomek skončil s návratovým kódem %d" + +#: ../../port/exec.c:529 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "potomek byl ukončen vyjímkou 0x%X" + +#: ../../port/exec.c:538 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "potomek byl ukončen signálem %s" + +#: ../../port/exec.c:541 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "potomek byl ukončen signálem %d" + +#: ../../port/exec.c:545 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "potomek skončil s nerozponaným stavem %d" + +#~ msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n" +#~ msgstr "neplatný COPY příkaz -- nelze najít \"copy\" v řetězci \"%s\"\n" + +#~ msgid "" +#~ "invalid COPY statement -- could not find \"from stdin\" in string \"%s\" " +#~ "starting at position %lu\n" +#~ msgstr "" +#~ "neplatný COPY příkaz -- nelze najít \"from stdin\" v řetězci \"%s\" " +#~ "začínající na pozici %lu\n" + +#~ msgid "restoring large object OID %u\n" +#~ msgstr "obnovuji \"large object\" s OID %u\n" + +#~ msgid "%s: invalid -X option -- %s\n" +#~ msgstr "%s: neplatný přepínač -X -- %s\n" + +#~ msgid "query returned no rows: %s\n" +#~ msgstr "dotaz nevrátil žádné řádky: %s\n" + +#~ msgid "could not initialize compression library: %s\n" +#~ msgstr "nelze inicializovat kompresní knihovnu: %s\n" + +#~ msgid "could not uncompress data: %s\n" +#~ msgstr "nelze dekomprimovat data: %s\n" + +#~ msgid "could not close compression library: %s\n" +#~ msgstr "nelze uzavřít kompresní knihovnu: %s\n" + +#~ msgid "cannot reopen stdin\n" +#~ msgstr "nelze znovu otevřít stdin\n" + +#~ msgid "cannot reopen non-seekable file\n" +#~ msgstr "nelze znovu otevřít non-seekable soubor\n" + +#~ msgid "could not compress data: %s\n" +#~ msgstr "nelze komprimovat data: %s\n" + +#~ msgid "could not close compression stream: %s\n" +#~ msgstr "nelze uzavřít kompresní stream: %s\n" + +#~ msgid "User name: " +#~ msgstr "Uživatelské jméno: " + +#~ msgid "large-object output not supported for a single table\n" +#~ msgstr "výstup \"large object\" není podporován pro samotnou tabulku\n" + +#~ msgid "use a full dump instead\n" +#~ msgstr "použijte úplný dump\n" + +#~ msgid "large-object output not supported for a single schema\n" +#~ msgstr "" +#~ "výstup z \"large object\" není podporován pro jedno samotné schéma\n" + +#~ msgid "INSERT (-d, -D) and OID (-o) options cannot be used together\n" +#~ msgstr "přepínače INSERT (-d, -D) a OID (-o) nelze použít dohromady\n" + +#~ msgid "large-object output is not supported for plain-text dump files\n" +#~ msgstr "" +#~ "výstup s \"large object\" není podporován pro textový formát dumpu\n" + +#~ msgid "(Use a different output format.)\n" +#~ msgstr "(Použijte jiný formát dumpu.)\n" + +#~ msgid "" +#~ " -i, --ignore-version proceed even when server version mismatches\n" +#~ " pg_dump version\n" +#~ msgstr "" +#~ " -i, --ignore-version ignorovat rozdíl mezi verzí serveru a\n" +#~ " verzí programu pg_dump\n" + +#~ msgid " -c, --clean clean (drop) schema prior to create\n" +#~ msgstr "" +#~ " -c, --clean odstranit (drop) definice databázových " +#~ "objektů\n" +#~ " před vytvořením\n" + +#~ msgid "" +#~ " -S, --superuser=NAME specify the superuser user name to use in\n" +#~ " plain text format\n" +#~ msgstr "" +#~ " -S, --superuser=JMÉNO jméno super-uživatele použité v\n" +#~ " čistě textovém formátu\n" + +#~ msgid "specified schema \"%s\" does not exist\n" +#~ msgstr "zadané schéma \"%s\" neexistuje\n" + +#~ msgid "specified table \"%s\" does not exist\n" +#~ msgstr "zadaná tabulka \"%s\" neexistuje\n" + +#~ msgid "expected %d triggers on table \"%s\" but found %d\n" +#~ msgstr "očekáváno %d triggerů pro tabulku \"%s\", ale nalezeno %d\n" + +#~ msgid "Got %d rows instead of one from: %s" +#~ msgstr "Obdrženo %d řádek na místo jedné z: %s" + +#~ msgid "inserted invalid OID\n" +#~ msgstr "vloženo neplatné OID\n" + +#~ msgid "maximum system OID is %u\n" +#~ msgstr "nejvyšší systémové OID je %u\n" + +#~ msgid "could not close output archive file\n" +#~ msgstr "nelze uzavřít výstupní archivní soubor\n" + +#~ msgid "WARNING: skipping large-object restoration\n" +#~ msgstr "VAROVÁNÍ: přeskakuji obnovu \"large object\"\n" + +#~ msgid "fixing up large-object cross-reference for \"%s\"\n" +#~ msgstr "opravuji \"large object\" odkaz pro \"%s\"\n" + +#~ msgid "committing large-object transactions\n" +#~ msgstr "provádím COMMIT \"large object\" transakcí\n" + +#~ msgid "cannot restore large objects without a database connection\n" +#~ msgstr "nelze obnovit \"large object\" bez spojení s databází\n" + +#~ msgid "starting large-object transactions\n" +#~ msgstr "zahajuji \"large object\" transakce\n" + +#~ msgid "restoring large object with OID %u as %u\n" +#~ msgstr "obnovuji \"large object\" s OID %u jako %u\n" + +#~ msgid "wrote remaining %lu bytes of large-object data (result = %lu)\n" +#~ msgstr "" +#~ "zapsáno zbývajících %lu bytů z \"large object\" dat (výsledek = %lu)\n" + +#~ msgid "could not open TOC file\n" +#~ msgstr "nelze otevřít TOC soubor\n" + +#~ msgid "could not write to compressed archive\n" +#~ msgstr "nelze zapsat do komprimovaného archivu\n" + +#~ msgid "could not write to output file (%lu != %lu)\n" +#~ msgstr "nelze zapsat do výstupního souboru (%lu != %lu)\n" + +#~ msgid "read %lu bytes into lookahead buffer\n" +#~ msgstr "načteno %lu bytů do bufferu\n" + +#~ msgid "could not close the input file after reading header: %s\n" +#~ msgstr "nelze zavřít vstupní soubor po přečtení hlavičky: %s\n" + +#~ msgid "archive format is %d\n" +#~ msgstr "formát archivu je %d\n" + +#~ msgid "could not open archive file \"%s\": %s\n" +#~ msgstr "nelze otevřít archivní soubor \"%s\": %s\n" + +#~ msgid "" +#~ "Dumping a specific TOC data block out of order is not supported without " +#~ "ID on this input stream (fseek required)\n" +#~ msgstr "" +#~ "Dumpování specifického datového bloku TOC mimo pořadí není podporováno " +#~ "bez ID na tomto vstupním proudu (vyžadován fseek)\n" + +#~ msgid "large objects cannot be loaded without a database connection\n" +#~ msgstr "\"large objects\" nemohou být nataženy bez spojení s databází\n" + +#~ msgid "could not read data block -- expected %lu, got %lu\n" +#~ msgstr "nelze číst datový blok -- očekáváno %lu, obdrženo %lu\n" + +#~ msgid "write error in _WriteBuf (%lu != %lu)\n" +#~ msgstr "chyba zápisu v _WriteBuf (%lu != %lu)\n" + +#~ msgid "could not write compressed chunk\n" +#~ msgstr "nelze zapsat komprimovaný blok\n" + +#~ msgid "could not write uncompressed chunk\n" +#~ msgstr "nelze zapsat nekomprimovaný blok\n" + +#~ msgid "" +#~ "aborting because of version mismatch (Use the -i option to proceed " +#~ "anyway.)\n" +#~ msgstr "" +#~ "ukončeno z důvodu rozdílnosti verzí (Použijte přepínač -i pro pokračování " +#~ "a ignorování verzí.)\n" + +#~ msgid "%s: no result from server\n" +#~ msgstr "%s: není odpověď ze serveru\n" + +#~ msgid "COPY command executed in non-primary connection\n" +#~ msgstr "příkaz COPY prováděn na neprimárním spojení\n" + +#~ msgid "error returned by PQendcopy\n" +#~ msgstr "PQendcopy vrátilo chybu\n" + +#~ msgid "could not find OID columns of table \"%s\": %s" +#~ msgstr "nelze najít OID sloupce tabulky \"%s\": %s" + +#~ msgid "no OID type columns in table %s\n" +#~ msgstr "sloupce typu OID v tabulce %s nejsou\n" + +#~ msgid "fixing large object cross-references for %s.%s\n" +#~ msgstr "opravovány \"large object\" odkazy pro %s.%s\n" + +#~ msgid "SQL: %s\n" +#~ msgstr "SQL: %s\n" + +#~ msgid "could not update column \"%s\" of table \"%s\": %s" +#~ msgstr "nelze provést update sloupce \"%s\" tabulky \"%s\": %s" + +#~ msgid "error while updating column \"%s\" of table \"%s\": %s" +#~ msgstr "chyba během update sloupce \"%s\" tabulky \"%s\": %s" + +#~ msgid "creating table for large object cross-references\n" +#~ msgstr "vytvářena tabulka pro \"large object\" odkazy\n" + +#~ msgid "could not create large object cross-reference table" +#~ msgstr "nelze vytvořit tabulka pro \"large object\" odkazy" + +#~ msgid "creating index for large object cross-references\n" +#~ msgstr "vytvářím index pro křížové odkazy \"large object\"\n" + +#~ msgid "could not create index on large object cross-reference table" +#~ msgstr "nelze vytvořit index pro tabulku s \"large object\" odkazy" + +#~ msgid "could not create large object cross-reference entry" +#~ msgstr "nelze vytvořit záznam pro \"large object\" odkaz" + +#~ msgid "could not start transaction for large object cross-references" +#~ msgstr "nelze nastartovat transakci pro \"large object\" odkazy" + +#~ msgid "could not commit transaction for large object cross-references" +#~ msgstr "nelze provést commit transakce pro \"large object\" odkazy" + +#~ msgid "could not open data file for output\n" +#~ msgstr "nelze otevřít datový soubor pro výstup\n" + +#~ msgid "could not open data file for input\n" +#~ msgstr "nelze otevřít datový soubor pro vstup\n" + +#~ msgid "could not open large object file\n" +#~ msgstr "nelze otevřít \"large object\" soubor\n" + +#~ msgid "compression support is disabled in this format\n" +#~ msgstr "pro tento formát je podpora komprese zablokována\n" + +#~ msgid "requested %d bytes, got %d from lookahead and %d from file\n" +#~ msgstr "požadováno %d bytů, obdrženo %d z \"lookahead\" a %d ze souboru\n" + +#~ msgid "could not write to tar member (wrote %lu, attempted %lu)\n" +#~ msgstr "nelze zapsat do tar položky (zapsáno %lu, požadováno %lu)\n" + +#~ msgid "write error appending to tar archive (wrote %lu, attempted %lu)\n" +#~ msgstr "" +#~ "chyba zápisu při připojování do tar archivu (zapsáno %lu, požadováno " +#~ "%lu)\n" + +#~ msgid "could not close tar member: %s\n" +#~ msgstr "nelze uzavřít tar položku: %s\n" + +#~ msgid "could not write tar header\n" +#~ msgstr "nelze zapsat hlavičku tar archivu\n" + +#~ msgid "" +#~ " -i, --ignore-version proceed even when server version mismatches\n" +#~ msgstr " -i, --ignore-version ignorovat rozdílnou verzi serveru\n" + +#~ msgid "" +#~ " -i, --ignore-version proceed even when server version mismatches\n" +#~ " pg_dumpall version\n" +#~ msgstr "" +#~ " -i, --ignore-version ignoruje rozdílnost verze serveru a\n" +#~ " verzí pg_dumpall\n" + +#~ msgid "" +#~ " -O, --no-owner do not output commands to set object " +#~ "ownership\n" +#~ msgstr "" +#~ " -O, --no-owner nevypisuj příkazy k nastavení vlastníka " +#~ "objektů\n" diff --git a/src/bin/pg_dump/po/de.po b/src/bin/pg_dump/po/de.po index e56c42ffac..963b9f61a1 100644 --- a/src/bin/pg_dump/po/de.po +++ b/src/bin/pg_dump/po/de.po @@ -1,7 +1,5 @@ # German message translation file for pg_dump and friends -# Peter Eisentraut , 2001 - 2011. -# -# pgtranslation Id: pg_dump.po,v 1.30 2011/05/26 19:59:50 petere Exp $ +# Peter Eisentraut , 2001 - 2012. # # Use these quotes: »%s« # @@ -9,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2011-05-25 20:40+0000\n" -"PO-Revision-Date: 2011-05-26 22:50+0300\n" +"POT-Creation-Date: 2012-12-01 22:57+0000\n" +"PO-Revision-Date: 2012-12-02 01:25-0500\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" "Language: de\n" @@ -19,70 +17,70 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: pg_dump.c:489 pg_dump.c:503 pg_restore.c:274 pg_restore.c:290 +#: pg_dump.c:492 pg_dump.c:506 pg_restore.c:274 pg_restore.c:290 #: pg_restore.c:302 pg_dumpall.c:296 pg_dumpall.c:306 pg_dumpall.c:316 #: pg_dumpall.c:325 pg_dumpall.c:334 pg_dumpall.c:392 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n" -#: pg_dump.c:501 pg_restore.c:288 pg_dumpall.c:304 +#: pg_dump.c:504 pg_restore.c:288 pg_dumpall.c:304 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: zu viele Kommandozeilenargumente (das erste ist »%s«)\n" -#: pg_dump.c:514 +#: pg_dump.c:517 msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "" "Optionen -s/--schema-only und -a/--data-only können nicht zusammen verwendet " "werden\n" -#: pg_dump.c:520 +#: pg_dump.c:523 msgid "options -c/--clean and -a/--data-only cannot be used together\n" msgstr "" "Optionen -c/--clean und -a/--data-only können nicht zusammen verwendet " "werden\n" -#: pg_dump.c:526 +#: pg_dump.c:529 msgid "" "options --inserts/--column-inserts and -o/--oids cannot be used together\n" msgstr "" "Optionen --inserts/--column-inserts und -o/--oids können nicht zusammen " "verwendet werden\n" -#: pg_dump.c:527 +#: pg_dump.c:530 msgid "(The INSERT command cannot set OIDs.)\n" msgstr "(Die INSERT-Anweisung kann OIDs nicht setzen.)\n" -#: pg_dump.c:558 +#: pg_dump.c:555 #, c-format msgid "could not open output file \"%s\" for writing\n" msgstr "konnte Ausgabedatei »%s« nicht zum Schreiben öffnen\n" -#: pg_dump.c:568 pg_backup_db.c:45 +#: pg_dump.c:565 pg_backup_db.c:38 #, c-format msgid "could not parse version string \"%s\"\n" msgstr "konnte Versionszeichenkette »%s« nicht entziffern\n" -#: pg_dump.c:591 +#: pg_dump.c:588 #, c-format msgid "invalid client encoding \"%s\" specified\n" msgstr "ungültige Clientkodierung »%s« angegeben\n" -#: pg_dump.c:690 +#: pg_dump.c:688 #, c-format msgid "last built-in OID is %u\n" msgstr "letzte eingebaute OID ist %u\n" -#: pg_dump.c:700 +#: pg_dump.c:698 msgid "No matching schemas were found\n" msgstr "Keine passenden Schemas gefunden\n" -#: pg_dump.c:715 +#: pg_dump.c:713 msgid "No matching tables were found\n" msgstr "Keine passenden Tabellen gefunden\n" -#: pg_dump.c:827 +#: pg_dump.c:835 #, c-format msgid "" "%s dumps a database as a text file or to other formats.\n" @@ -91,17 +89,17 @@ msgstr "" "%s gibt eine Datenbank als Textdatei oder in anderen Formaten aus.\n" "\n" -#: pg_dump.c:828 pg_restore.c:397 pg_dumpall.c:529 +#: pg_dump.c:836 pg_restore.c:397 pg_dumpall.c:529 #, c-format msgid "Usage:\n" msgstr "Aufruf:\n" -#: pg_dump.c:829 +#: pg_dump.c:837 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [OPTION]... [DBNAME]\n" -#: pg_dump.c:831 pg_restore.c:400 pg_dumpall.c:532 +#: pg_dump.c:839 pg_restore.c:400 pg_dumpall.c:532 #, c-format msgid "" "\n" @@ -110,14 +108,14 @@ msgstr "" "\n" "Allgemeine Optionen:\n" -#: pg_dump.c:832 +#: pg_dump.c:840 #, c-format msgid " -f, --file=FILENAME output file or directory name\n" msgstr "" " -f, --file=DATEINAME Name der Ausgabedatei oder des -" "verzeichnisses\n" -#: pg_dump.c:833 +#: pg_dump.c:841 #, c-format msgid "" " -F, --format=c|d|t|p output file format (custom, directory, tar, " @@ -126,37 +124,37 @@ msgstr "" " -F, --format=c|d|t|p Ausgabeformat (custom, d=Verzeichnis, tar,\n" " plain text)\n" -#: pg_dump.c:834 +#: pg_dump.c:842 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose »Verbose«-Modus\n" -#: pg_dump.c:835 +#: pg_dump.c:843 #, c-format msgid "" " -Z, --compress=0-9 compression level for compressed formats\n" msgstr "" " -Z, --compress=0-9 Komprimierungsniveau für komprimierte Formate\n" -#: pg_dump.c:836 pg_dumpall.c:534 +#: pg_dump.c:844 pg_dumpall.c:534 #, c-format msgid "" " --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" msgstr "" " --lock-wait-timeout=ZEIT Abbruch nach ZEIT Warten auf Tabellensperre\n" -#: pg_dump.c:837 pg_dumpall.c:535 +#: pg_dump.c:845 pg_dumpall.c:535 #, c-format msgid " --help show this help, then exit\n" msgstr " --help diese Hilfe anzeigen, dann beenden\n" -#: pg_dump.c:838 pg_dumpall.c:536 +#: pg_dump.c:846 pg_dumpall.c:536 #, c-format msgid " --version output version information, then exit\n" msgstr "" " --version Versionsinformationen anzeigen, dann beenden\n" -#: pg_dump.c:840 pg_dumpall.c:537 +#: pg_dump.c:848 pg_dumpall.c:537 #, c-format msgid "" "\n" @@ -165,17 +163,17 @@ msgstr "" "\n" "Optionen die den Inhalt der Ausgabe kontrollieren:\n" -#: pg_dump.c:841 pg_dumpall.c:538 +#: pg_dump.c:849 pg_dumpall.c:538 #, c-format msgid " -a, --data-only dump only the data, not the schema\n" msgstr " -a, --data-only nur Daten ausgeben, nicht das Schema\n" -#: pg_dump.c:842 +#: pg_dump.c:850 #, c-format msgid " -b, --blobs include large objects in dump\n" msgstr " -b, --blobs Large Objects mit ausgeben\n" -#: pg_dump.c:843 +#: pg_dump.c:851 #, c-format msgid "" " -c, --clean clean (drop) database objects before " @@ -184,7 +182,7 @@ msgstr "" " -c, --clean Datenbankobjekte vor der Wiedererstellung " "löschen\n" -#: pg_dump.c:844 +#: pg_dump.c:852 #, c-format msgid "" " -C, --create include commands to create database in dump\n" @@ -192,30 +190,30 @@ msgstr "" " -C, --create Anweisungen zum Erstellen der Datenbank in\n" " Ausgabe einfügen\n" -#: pg_dump.c:845 +#: pg_dump.c:853 #, c-format msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" msgstr " -E, --encoding=KODIERUNG Daten mit Kodierung KODIERUNG ausgeben\n" -#: pg_dump.c:846 +#: pg_dump.c:854 #, c-format msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" msgstr "" " -n, --schema=SCHEMA nur das/die angegebene(n) Schema(s) ausgeben\n" -#: pg_dump.c:847 +#: pg_dump.c:855 #, c-format msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n" msgstr "" " -N, --exclude-schema=SCHEMA das/die angegebene(n) Schema(s) NICHT " "ausgeben\n" -#: pg_dump.c:848 pg_dumpall.c:541 +#: pg_dump.c:856 pg_dumpall.c:541 #, c-format msgid " -o, --oids include OIDs in dump\n" msgstr " -o, --oids OIDs mit ausgeben\n" -#: pg_dump.c:849 +#: pg_dump.c:857 #, c-format msgid "" " -O, --no-owner skip restoration of object ownership in\n" @@ -225,45 +223,45 @@ msgstr "" "im\n" " »plain text«-Format auslassen\n" -#: pg_dump.c:851 pg_dumpall.c:544 +#: pg_dump.c:859 pg_dumpall.c:544 #, c-format msgid " -s, --schema-only dump only the schema, no data\n" msgstr "" " -s, --schema-only nur das Schema, nicht die Daten, ausgeben\n" -#: pg_dump.c:852 +#: pg_dump.c:860 #, c-format msgid "" " -S, --superuser=NAME superuser user name to use in plain-text " "format\n" msgstr " -S, --superuser=NAME Superusername für »plain text«-Format\n" -#: pg_dump.c:853 +#: pg_dump.c:861 #, c-format msgid " -t, --table=TABLE dump the named table(s) only\n" msgstr "" " -t, --table=TABELLE nur die angegebene(n) Tabelle(n) ausgeben\n" -#: pg_dump.c:854 +#: pg_dump.c:862 #, c-format msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n" msgstr "" " -T, --exclude-table=TABELLE die angegebene(n) Tabelle(n) NICHT ausgeben\n" -#: pg_dump.c:855 pg_dumpall.c:547 +#: pg_dump.c:863 pg_dumpall.c:547 #, c-format msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" msgstr "" " -x, --no-privileges Zugriffsprivilegien (grant/revoke) nicht " "ausgeben\n" -#: pg_dump.c:856 pg_dumpall.c:548 +#: pg_dump.c:864 pg_dumpall.c:548 #, c-format msgid " --binary-upgrade for use by upgrade utilities only\n" msgstr "" " --binary-upgrade wird nur von Upgrade-Programmen verwendet\n" -#: pg_dump.c:857 pg_dumpall.c:549 +#: pg_dump.c:865 pg_dumpall.c:549 #, c-format msgid "" " --column-inserts dump data as INSERT commands with column " @@ -272,7 +270,7 @@ msgstr "" " --column-inserts Daten als INSERT-Anweisungen mit Spaltennamen\n" " ausgeben\n" -#: pg_dump.c:858 pg_dumpall.c:550 +#: pg_dump.c:866 pg_dumpall.c:550 #, c-format msgid "" " --disable-dollar-quoting disable dollar quoting, use SQL standard " @@ -282,7 +280,7 @@ msgstr "" "Quoting\n" " verwenden\n" -#: pg_dump.c:859 pg_dumpall.c:551 +#: pg_dump.c:867 pg_dumpall.c:551 #, c-format msgid "" " --disable-triggers disable triggers during data-only restore\n" @@ -290,7 +288,7 @@ msgstr "" " --disable-triggers Trigger abschalten während der Datenwieder-\n" " herstellung\n" -#: pg_dump.c:860 pg_dumpall.c:552 +#: pg_dump.c:868 pg_dumpall.c:552 #, c-format msgid "" " --inserts dump data as INSERT commands, rather than " @@ -299,25 +297,25 @@ msgstr "" " --inserts Daten als INSERT-Anweisungen statt COPY " "ausgeben\n" -#: pg_dump.c:861 pg_dumpall.c:553 +#: pg_dump.c:869 pg_dumpall.c:553 #, c-format msgid " --no-security-labels do not dump security label assignments\n" msgstr "" " --no-security-labels Security-Label-Zuweisungen nicht ausgeben\n" -#: pg_dump.c:862 pg_dumpall.c:554 +#: pg_dump.c:870 pg_dumpall.c:554 #, c-format msgid " --no-tablespaces do not dump tablespace assignments\n" msgstr " --no-tablespaces Tablespace-Zuordnungen nicht ausgeben\n" -#: pg_dump.c:863 pg_dumpall.c:555 +#: pg_dump.c:871 pg_dumpall.c:555 #, c-format msgid " --no-unlogged-table-data do not dump unlogged table data\n" msgstr "" " --no-unlogged-table-data Daten in nicht geloggten Tabellen nicht " "ausgeben\n" -#: pg_dump.c:864 pg_dumpall.c:556 +#: pg_dump.c:872 pg_dumpall.c:556 #, c-format msgid "" " --quote-all-identifiers quote all identifiers, even if not key words\n" @@ -326,7 +324,7 @@ msgstr "" "wenn\n" " kein Schlüsselwort\n" -#: pg_dump.c:865 +#: pg_dump.c:873 #, c-format msgid "" " --serializable-deferrable wait until the dump can run without anomalies\n" @@ -334,7 +332,7 @@ msgstr "" " --serializable-deferrable warten bis der Dump ohne Anomalien laufen " "kann\n" -#: pg_dump.c:866 pg_dumpall.c:557 +#: pg_dump.c:874 pg_dumpall.c:557 #, c-format msgid "" " --use-set-session-authorization\n" @@ -348,7 +346,7 @@ msgstr "" "zu\n" " setzen\n" -#: pg_dump.c:870 pg_restore.c:439 pg_dumpall.c:561 +#: pg_dump.c:878 pg_restore.c:439 pg_dumpall.c:561 #, c-format msgid "" "\n" @@ -357,29 +355,29 @@ msgstr "" "\n" "Verbindungsoptionen:\n" -#: pg_dump.c:871 pg_restore.c:440 pg_dumpall.c:562 +#: pg_dump.c:879 pg_restore.c:440 pg_dumpall.c:562 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" " -h, --host=HOSTNAME Name des Datenbankservers oder Socket-" "Verzeichnis\n" -#: pg_dump.c:872 pg_restore.c:441 pg_dumpall.c:564 +#: pg_dump.c:880 pg_restore.c:441 pg_dumpall.c:564 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=PORT Portnummer des Datenbankservers\n" -#: pg_dump.c:873 pg_restore.c:442 pg_dumpall.c:565 +#: pg_dump.c:881 pg_restore.c:442 pg_dumpall.c:565 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=NAME Datenbankbenutzername\n" -#: pg_dump.c:874 pg_restore.c:443 pg_dumpall.c:566 +#: pg_dump.c:882 pg_restore.c:443 pg_dumpall.c:566 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password niemals nach Passwort fragen\n" -#: pg_dump.c:875 pg_restore.c:444 pg_dumpall.c:567 +#: pg_dump.c:883 pg_restore.c:444 pg_dumpall.c:567 #, c-format msgid "" " -W, --password force password prompt (should happen " @@ -388,12 +386,12 @@ msgstr "" " -W, --password nach Passwort fragen (sollte automatisch " "geschehen)\n" -#: pg_dump.c:876 pg_dumpall.c:568 +#: pg_dump.c:884 pg_dumpall.c:568 #, c-format msgid " --role=ROLENAME do SET ROLE before dump\n" msgstr " --role=ROLLENNAME vor der Ausgabe SET ROLE ausführen\n" -#: pg_dump.c:878 +#: pg_dump.c:886 #, c-format msgid "" "\n" @@ -406,173 +404,173 @@ msgstr "" "PGDATABASE verwendet.\n" "\n" -#: pg_dump.c:880 pg_restore.c:448 pg_dumpall.c:572 +#: pg_dump.c:888 pg_restore.c:448 pg_dumpall.c:572 #, c-format msgid "Report bugs to .\n" msgstr "Berichten Sie Fehler an .\n" -#: pg_dump.c:888 pg_backup_archiver.c:1437 +#: pg_dump.c:896 pg_backup_archiver.c:1459 msgid "*** aborted because of error\n" msgstr "*** abgebrochen wegen Fehler\n" -#: pg_dump.c:930 +#: pg_dump.c:938 #, c-format msgid "invalid output format \"%s\" specified\n" msgstr "ungültiges Ausgabeformat »%s« angegeben\n" -#: pg_dump.c:953 +#: pg_dump.c:961 msgid "server version must be at least 7.3 to use schema selection switches\n" msgstr "" "Serverversion muss mindestens 7.3 sein um Schemas auswählen zu können\n" -#: pg_dump.c:1211 +#: pg_dump.c:1233 #, c-format msgid "dumping contents of table %s\n" msgstr "gebe Inhalt der Tabelle %s aus\n" -#: pg_dump.c:1331 +#: pg_dump.c:1353 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" msgstr "" -"Ausgabe des Inhalts der Tabelle »%s« fehlgeschlagen: PQendcopy() " +"Ausgabe des Inhalts der Tabelle »%s« fehlgeschlagen: PQgetCopyData() " "fehlgeschlagen.\n" -#: pg_dump.c:1332 pg_dump.c:14126 +#: pg_dump.c:1354 pg_dump.c:14406 #, c-format msgid "Error message from server: %s" msgstr "Fehlermeldung vom Server: %s" -#: pg_dump.c:1333 pg_dump.c:14127 +#: pg_dump.c:1355 pg_dump.c:14407 #, c-format msgid "The command was: %s\n" msgstr "Die Anweisung war: %s\n" -#: pg_dump.c:1756 +#: pg_dump.c:1794 msgid "saving database definition\n" msgstr "sichere Datenbankdefinition\n" -#: pg_dump.c:1838 +#: pg_dump.c:1876 #, c-format msgid "missing pg_database entry for database \"%s\"\n" msgstr "fehlender pg_database-Eintrag für Datenbank »%s«\n" -#: pg_dump.c:1845 +#: pg_dump.c:1883 #, c-format msgid "" "query returned more than one (%d) pg_database entry for database \"%s\"\n" msgstr "" "Anfrage ergab mehr als einen (%d) pg_database-Eintrag für Datenbank »%s«\n" -#: pg_dump.c:1949 +#: pg_dump.c:1987 msgid "dumpDatabase(): could not find pg_largeobject.relfrozenxid\n" msgstr "dumpDatabase(): konnte pg_largeobject.relfrozenxid nicht finden\n" -#: pg_dump.c:1988 +#: pg_dump.c:2026 msgid "dumpDatabase(): could not find pg_largeobject_metadata.relfrozenxid\n" msgstr "" "dumpDatabase(): konnte pg_largeobject_metadata.relfrozenxid nicht finden\n" -#: pg_dump.c:2067 +#: pg_dump.c:2105 #, c-format msgid "saving encoding = %s\n" msgstr "sichere Kodierung = %s\n" -#: pg_dump.c:2094 +#: pg_dump.c:2132 #, c-format msgid "saving standard_conforming_strings = %s\n" msgstr "sichere standard_conforming_strings = %s\n" -#: pg_dump.c:2127 +#: pg_dump.c:2165 msgid "reading large objects\n" msgstr "lese Large Objects\n" -#: pg_dump.c:2259 +#: pg_dump.c:2297 msgid "saving large objects\n" msgstr "sichere Large Objects\n" -#: pg_dump.c:2301 pg_backup_archiver.c:959 +#: pg_dump.c:2339 pg_backup_archiver.c:985 #, c-format msgid "could not open large object %u: %s" msgstr "konnte Large Object %u nicht öffnen: %s" -#: pg_dump.c:2314 +#: pg_dump.c:2352 #, c-format msgid "error reading large object %u: %s" msgstr "Fehler beim Lesen von Large Object %u: %s" -#: pg_dump.c:2361 pg_dump.c:2409 pg_dump.c:2464 pg_dump.c:7592 pg_dump.c:7823 -#: pg_dump.c:8789 pg_dump.c:9341 pg_dump.c:9595 pg_dump.c:9709 pg_dump.c:10165 -#: pg_dump.c:10351 pg_dump.c:10457 pg_dump.c:10657 pg_dump.c:10899 -#: pg_dump.c:11066 pg_dump.c:11279 pg_dump.c:13932 +#: pg_dump.c:2399 pg_dump.c:2447 pg_dump.c:2502 pg_dump.c:7691 pg_dump.c:7922 +#: pg_dump.c:8888 pg_dump.c:9440 pg_dump.c:9694 pg_dump.c:9808 pg_dump.c:10264 +#: pg_dump.c:10450 pg_dump.c:10556 pg_dump.c:10756 pg_dump.c:10998 +#: pg_dump.c:11165 pg_dump.c:11386 pg_dump.c:14212 #, c-format msgid "query returned %d row instead of one: %s\n" msgid_plural "query returned %d rows instead of one: %s\n" msgstr[0] "Anfrage ergab %d Zeile anstatt einer: %s\n" msgstr[1] "Anfrage ergab %d Zeilen anstatt einer: %s\n" -#: pg_dump.c:2545 +#: pg_dump.c:2583 #, c-format msgid "could not find parent extension for %s" msgstr "konnte Erweiterung, zu der %s gehört, nicht finden" -#: pg_dump.c:2652 +#: pg_dump.c:2689 #, c-format msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" msgstr "WARNUNG: Eigentümer des Schemas »%s« scheint ungültig zu sein\n" -#: pg_dump.c:2687 +#: pg_dump.c:2733 #, c-format msgid "schema with OID %u does not exist\n" msgstr "Schema mit OID %u existiert nicht\n" -#: pg_dump.c:3028 +#: pg_dump.c:3065 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" msgstr "WARNUNG: Eigentümer des Datentypen »%s« scheint ungültig zu sein\n" -#: pg_dump.c:3132 +#: pg_dump.c:3169 #, c-format msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" msgstr "WARNUNG: Eigentümer des Operatoren »%s« scheint ungültig zu sein\n" -#: pg_dump.c:3384 +#: pg_dump.c:3421 #, c-format msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" msgstr "WARNUNG: Eigentümer der Operatorklasse »%s« scheint ungültig zu sein\n" -#: pg_dump.c:3471 +#: pg_dump.c:3508 #, c-format msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" msgstr "" "WARNUNG: Eigentümer der Operatorfamilie »%s« scheint ungültig zu sein\n" -#: pg_dump.c:3608 +#: pg_dump.c:3645 #, c-format msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" msgstr "" "WARNUNG: Eigentümer der Aggregatfunktion »%s« scheint ungültig zu sein\n" -#: pg_dump.c:3778 +#: pg_dump.c:3815 #, c-format msgid "WARNING: owner of function \"%s\" appears to be invalid\n" msgstr "WARNUNG: Eigentümer der Funktion »%s« scheint ungültig zu sein\n" -#: pg_dump.c:4278 +#: pg_dump.c:4315 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" msgstr "WARNUNG: Eigentümer der Tabelle »%s« scheint ungültig zu sein\n" -#: pg_dump.c:4421 +#: pg_dump.c:4463 #, c-format msgid "reading indexes for table \"%s\"\n" msgstr "lese Indexe von Tabelle »%s«\n" -#: pg_dump.c:4741 +#: pg_dump.c:4783 #, c-format msgid "reading foreign key constraints for table \"%s\"\n" msgstr "lese Fremdschlüssel-Constraints von Tabelle »%s«\n" -#: pg_dump.c:4973 +#: pg_dump.c:5015 #, c-format msgid "" "failed sanity check, parent table OID %u of pg_rewrite entry OID %u not " @@ -581,12 +579,12 @@ msgstr "" "Sanity-Check fehlgeschlagen, Elterntabelle %u von pg_rewrite-Eintrag OID %u " "nicht gefunden\n" -#: pg_dump.c:5057 +#: pg_dump.c:5099 #, c-format msgid "reading triggers for table \"%s\"\n" msgstr "lese Trigger von Tabelle »%s«\n" -#: pg_dump.c:5220 +#: pg_dump.c:5262 #, c-format msgid "" "query produced null referenced table name for foreign key trigger \"%s\" on " @@ -595,77 +593,77 @@ msgstr "" "Anfrage ergab NULL als Name der Tabelle auf die sich Fremdschlüssel-Trigger " "»%s« von Tabelle »%s« bezieht (OID der Tabelle: %u)\n" -#: pg_dump.c:5591 +#: pg_dump.c:5633 #, c-format msgid "finding the columns and types of table \"%s\"\n" msgstr "finde Spalten und Typen von Tabelle »%s«\n" -#: pg_dump.c:5736 +#: pg_dump.c:5779 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "ungültige Spaltennummerierung in Tabelle »%s«\n" -#: pg_dump.c:5773 +#: pg_dump.c:5814 #, c-format msgid "finding default expressions of table \"%s\"\n" msgstr "finde DEFAULT-Ausdrucke von Tabelle »%s«\n" -#: pg_dump.c:5858 +#: pg_dump.c:5867 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" msgstr "ungültiger adnum-Wert %d für Tabelle »%s«\n" -#: pg_dump.c:5876 +#: pg_dump.c:5940 #, c-format msgid "finding check constraints for table \"%s\"\n" msgstr "finde Check-Constraints für Tabelle »%s«\n" -#: pg_dump.c:5956 +#: pg_dump.c:6020 #, c-format msgid "expected %d check constraint on table \"%s\" but found %d\n" msgid_plural "expected %d check constraints on table \"%s\" but found %d\n" msgstr[0] "%d Check-Constraint für Tabelle %s erwartet, aber %d gefunden\n" msgstr[1] "%d Check-Constraints für Tabelle %s erwartet, aber %d gefunden\n" -#: pg_dump.c:5960 +#: pg_dump.c:6024 msgid "(The system catalogs might be corrupted.)\n" msgstr "(Die Systemkataloge sind wahrscheinlich verfälscht.)\n" -#: pg_dump.c:8555 +#: pg_dump.c:8654 msgid "WARNING: bogus value in proargmodes array\n" msgstr "WARNUNG: unsinniger Wert in proargmodes-Array\n" -#: pg_dump.c:8869 +#: pg_dump.c:8968 msgid "WARNING: could not parse proallargtypes array\n" msgstr "WARNUNG: konnte proallargtypes-Array nicht interpretieren\n" -#: pg_dump.c:8885 +#: pg_dump.c:8984 msgid "WARNING: could not parse proargmodes array\n" msgstr "WARNUNG: konnte proargmodes-Array nicht interpretieren\n" -#: pg_dump.c:8899 +#: pg_dump.c:8998 msgid "WARNING: could not parse proargnames array\n" msgstr "WARNUNG: konnte proargnames-Array nicht interpretieren\n" -#: pg_dump.c:8910 +#: pg_dump.c:9009 msgid "WARNING: could not parse proconfig array\n" msgstr "WARNUNG: konnte proconfig-Array nicht interpretieren\n" -#: pg_dump.c:8966 +#: pg_dump.c:9065 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "ungültiger provolatile-Wert für Funktion »%s«\n" -#: pg_dump.c:9182 +#: pg_dump.c:9281 msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "WARNUNG: unsinniger Wert in Feld pg_cast.castmethod\n" -#: pg_dump.c:9564 +#: pg_dump.c:9663 #, c-format msgid "WARNING: could not find operator with OID %s\n" msgstr "WARNUNG: konnte Operator mit OID %s nicht finden\n" -#: pg_dump.c:10683 +#: pg_dump.c:10782 #, c-format msgid "" "WARNING: aggregate function %s could not be dumped correctly for this " @@ -674,29 +672,29 @@ msgstr "" "WARNUNG: Aggregatfunktion %s konnte für diese Datenbankversion nicht korrekt " "ausgegeben werden - ignoriert\n" -#: pg_dump.c:11475 +#: pg_dump.c:11586 #, c-format msgid "unknown object type (%d) in default privileges\n" msgstr "unbekannter Objekttyp (%d) in Vorgabeprivilegien\n" -#: pg_dump.c:11492 +#: pg_dump.c:11603 #, c-format msgid "could not parse default ACL list (%s)\n" msgstr "konnte Vorgabe-ACL-Liste (%s) nicht interpretieren\n" -#: pg_dump.c:11549 +#: pg_dump.c:11660 #, c-format msgid "could not parse ACL list (%s) for object \"%s\" (%s)\n" msgstr "" "konnte ACL-Zeichenkette (%s) für Objekt »%s« (%s) nicht interpretieren\n" -#: pg_dump.c:11989 +#: pg_dump.c:12106 #, c-format msgid "query to obtain definition of view \"%s\" returned no data\n" msgstr "" "Anfrage um die Definition der Sicht »%s« zu ermitteln lieferte keine Daten\n" -#: pg_dump.c:11992 +#: pg_dump.c:12109 #, c-format msgid "" "query to obtain definition of view \"%s\" returned more than one definition\n" @@ -704,43 +702,51 @@ msgstr "" "Anfrage um die Definition der Sicht »%s« zu ermitteln lieferte mehr als eine " "Definition\n" -#: pg_dump.c:12001 +#: pg_dump.c:12118 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)\n" msgstr "Definition der Sicht »%s« scheint leer zu sein (Länge null)\n" -#: pg_dump.c:12567 +#: pg_dump.c:12169 +#, c-format +msgid "query returned %d foreign server entry for foreign table \"%s\"\n" +msgid_plural "" +"query returned %d foreign server entries for foreign table \"%s\"\n" +msgstr[0] "Anfrage ergab %d Fremdservereintrag für Fremdtabelle »%s«\n" +msgstr[1] "Anfrage ergab %d Fremdservereinträge für Fremdtabelle »%s«\n" + +#: pg_dump.c:12720 #, c-format msgid "invalid column number %d for table \"%s\"\n" msgstr "ungültige Spaltennummer %d in Tabelle »%s«\n" -#: pg_dump.c:12678 +#: pg_dump.c:12831 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "fehlender Index für Constraint »%s«\n" -#: pg_dump.c:12866 +#: pg_dump.c:13019 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "unbekannter Constraint-Typ: %c\n" -#: pg_dump.c:12929 +#: pg_dump.c:13082 msgid "missing pg_database entry for this database\n" msgstr "fehlender pg_database-Eintrag für diese Datenbank\n" -#: pg_dump.c:12934 +#: pg_dump.c:13087 msgid "found more than one pg_database entry for this database\n" msgstr "mehr als einen pg_database-Eintrag für diese Datenbank gefunden\n" -#: pg_dump.c:12966 +#: pg_dump.c:13119 msgid "could not find entry for pg_indexes in pg_class\n" msgstr "konnte Eintrag für pg_indexes in pg_class nicht finden\n" -#: pg_dump.c:12971 +#: pg_dump.c:13124 msgid "found more than one entry for pg_indexes in pg_class\n" msgstr "mehr als ein Eintrag für pg_indexes in pg_class gefunden\n" -#: pg_dump.c:13043 +#: pg_dump.c:13198 pg_dump.c:13363 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" msgid_plural "" @@ -748,23 +754,23 @@ msgid_plural "" msgstr[0] "Anfrage nach Daten der Sequenz %s ergab %d Zeile (erwartete 1)\n" msgstr[1] "Anfrage nach Daten der Sequenz %s ergab %d Zeilen (erwartete 1)\n" -#: pg_dump.c:13054 +#: pg_dump.c:13209 #, c-format msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" msgstr "Anfrage nach Daten der Sequenz %s ergab Name »%s«\n" -#: pg_dump.c:13282 +#: pg_dump.c:13450 #, c-format msgid "unexpected tgtype value: %d\n" msgstr "unerwarteter tgtype-Wert: %d\n" -#: pg_dump.c:13364 +#: pg_dump.c:13532 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" msgstr "" "fehlerhafte Argumentzeichenkette (%s) für Trigger »%s« von Tabelle »%s«\n" -#: pg_dump.c:13482 +#: pg_dump.c:13650 #, c-format msgid "" "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows " @@ -773,161 +779,161 @@ msgstr "" "Anfrage nach Regel »%s« der Tabelle »%s« fehlgeschlagen: falsche Anzahl " "Zeilen zurückgegeben\n" -#: pg_dump.c:13739 +#: pg_dump.c:13912 msgid "reading dependency data\n" msgstr "lese Abhängigkeitsdaten\n" -#: pg_dump.c:14121 +#: pg_dump.c:14401 msgid "SQL command failed\n" msgstr "SQL-Anweisung schlug fehl\n" -#: common.c:105 +#: common.c:107 msgid "reading schemas\n" msgstr "lese Schemas\n" -#: common.c:109 +#: common.c:118 +msgid "reading user-defined tables\n" +msgstr "lese benutzerdefinierte Tabellen\n" + +#: common.c:126 msgid "reading extensions\n" msgstr "lese Erweiterungen\n" -#: common.c:113 +#: common.c:130 msgid "reading user-defined functions\n" msgstr "lese benutzerdefinierte Funktionen\n" -#: common.c:119 +#: common.c:136 msgid "reading user-defined types\n" msgstr "lese benutzerdefinierte Typen\n" -#: common.c:125 +#: common.c:142 msgid "reading procedural languages\n" msgstr "lese prozedurale Sprachen\n" -#: common.c:129 +#: common.c:146 msgid "reading user-defined aggregate functions\n" msgstr "lese benutzerdefinierte Aggregatfunktionen\n" -#: common.c:133 +#: common.c:150 msgid "reading user-defined operators\n" msgstr "lese benutzerdefinierte Operatoren\n" -#: common.c:138 +#: common.c:155 msgid "reading user-defined operator classes\n" msgstr "lese benutzerdefinierte Operatorklassen\n" -#: common.c:142 +#: common.c:159 msgid "reading user-defined operator families\n" msgstr "lese benutzerdefinierte Operatorfamilien\n" -#: common.c:146 +#: common.c:163 msgid "reading user-defined text search parsers\n" msgstr "lese benutzerdefinierte Textsuche-Parser\n" -#: common.c:150 +#: common.c:167 msgid "reading user-defined text search templates\n" msgstr "lese benutzerdefinierte Textsuche-Templates\n" -#: common.c:154 +#: common.c:171 msgid "reading user-defined text search dictionaries\n" msgstr "lese benutzerdefinierte Textsuchewörterbücher\n" -#: common.c:158 +#: common.c:175 msgid "reading user-defined text search configurations\n" msgstr "lese benutzerdefinierte Textsuchekonfigurationen\n" -#: common.c:162 +#: common.c:179 msgid "reading user-defined foreign-data wrappers\n" msgstr "lese benutzerdefinierte Fremddaten-Wrapper\n" -#: common.c:166 +#: common.c:183 msgid "reading user-defined foreign servers\n" msgstr "lese benutzerdefinierte Fremdserver\n" -#: common.c:170 +#: common.c:187 msgid "reading default privileges\n" msgstr "lese Vorgabeprivilegien\n" -#: common.c:174 +#: common.c:191 msgid "reading user-defined collations\n" msgstr "lese benutzerdefinierte Sortierfolgen\n" -#: common.c:179 +#: common.c:196 msgid "reading user-defined conversions\n" msgstr "lese benutzerdefinierte Konversionen\n" -#: common.c:183 +#: common.c:200 msgid "reading type casts\n" msgstr "lese Typumwandlungen\n" -#: common.c:187 -msgid "reading user-defined tables\n" -msgstr "lese benutzerdefinierte Tabellen\n" - -#: common.c:192 +#: common.c:204 msgid "reading table inheritance information\n" msgstr "lese Tabellenvererbungsinformationen\n" -#: common.c:196 +#: common.c:208 msgid "reading rewrite rules\n" msgstr "lese Umschreiberegeln\n" -#: common.c:205 +#: common.c:217 msgid "finding extension members\n" msgstr "finde Erweiterungselemente\n" -#: common.c:210 +#: common.c:222 msgid "finding inheritance relationships\n" msgstr "lese Vererbungsbeziehungen\n" -#: common.c:214 +#: common.c:226 msgid "reading column info for interesting tables\n" msgstr "lese Spalteninfo für interessante Tabellen\n" -#: common.c:218 +#: common.c:230 msgid "flagging inherited columns in subtables\n" msgstr "markiere vererbte Spalten in abgeleiteten Tabellen\n" -#: common.c:222 +#: common.c:234 msgid "reading indexes\n" msgstr "lese Indexe\n" -#: common.c:226 +#: common.c:238 msgid "reading constraints\n" msgstr "lese Constraints\n" -#: common.c:230 +#: common.c:242 msgid "reading triggers\n" msgstr "lese Trigger\n" -#: common.c:822 +#: common.c:788 #, c-format msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n" msgstr "" "Sanity-Check fehlgeschlagen, Eltern-OID %u von Tabelle »%s« (OID %u) nicht " "gefunden\n" -#: common.c:864 +#: common.c:830 #, c-format msgid "could not parse numeric array \"%s\": too many numbers\n" msgstr "konnte numerisches Array »%s« nicht parsen: zu viele Zahlen\n" -#: common.c:879 +#: common.c:845 #, c-format msgid "could not parse numeric array \"%s\": invalid character in number\n" msgstr "" "konnte numerisches Array »%s« nicht parsen: ungültiges Zeichen in Zahl\n" -#: common.c:992 +#: common.c:958 msgid "cannot duplicate null pointer\n" msgstr "kann NULL-Zeiger nicht duplizieren\n" -#: common.c:995 common.c:1006 common.c:1017 common.c:1028 -#: pg_backup_archiver.c:739 pg_backup_archiver.c:1135 -#: pg_backup_archiver.c:1270 pg_backup_archiver.c:1740 -#: pg_backup_archiver.c:1934 pg_backup_archiver.c:1980 -#: pg_backup_archiver.c:4199 pg_backup_custom.c:132 pg_backup_custom.c:139 -#: pg_backup_custom.c:775 pg_backup_custom.c:902 pg_backup_db.c:154 -#: pg_backup_db.c:164 pg_backup_db.c:212 pg_backup_db.c:256 pg_backup_db.c:271 -#: pg_backup_db.c:305 pg_backup_files.c:114 pg_backup_null.c:72 -#: pg_backup_tar.c:171 pg_backup_tar.c:1015 +#: common.c:961 common.c:972 common.c:983 common.c:994 +#: pg_backup_archiver.c:765 pg_backup_archiver.c:1161 +#: pg_backup_archiver.c:1292 pg_backup_archiver.c:1762 +#: pg_backup_archiver.c:1956 pg_backup_archiver.c:2002 +#: pg_backup_archiver.c:4263 pg_backup_custom.c:132 pg_backup_custom.c:139 +#: pg_backup_custom.c:780 pg_backup_custom.c:907 pg_backup_db.c:147 +#: pg_backup_db.c:157 pg_backup_db.c:205 pg_backup_db.c:249 pg_backup_db.c:264 +#: pg_backup_db.c:298 pg_backup_db.c:491 pg_backup_files.c:114 +#: pg_backup_null.c:72 pg_backup_tar.c:171 pg_backup_tar.c:1005 msgid "out of memory\n" msgstr "Speicher aufgebraucht\n" @@ -935,20 +941,33 @@ msgstr "Speicher aufgebraucht\n" msgid "archiver" msgstr "Archivierer" -#: pg_backup_archiver.c:206 pg_backup_archiver.c:1234 +#: pg_backup_archiver.c:208 pg_backup_archiver.c:1260 #, c-format msgid "could not close output file: %s\n" msgstr "konnte Ausgabedatei nicht schließen: %s\n" -#: pg_backup_archiver.c:231 +#: pg_backup_archiver.c:234 msgid "-C and -c are incompatible options\n" msgstr "-C und -c sind inkompatible Optionen\n" -#: pg_backup_archiver.c:238 +#: pg_backup_archiver.c:241 msgid "-C and -1 are incompatible options\n" msgstr "-C und -1 sind inkompatible Optionen\n" -#: pg_backup_archiver.c:250 +#: pg_backup_archiver.c:251 +msgid "parallel restore is not supported with this archive file format\n" +msgstr "" +"parallele Wiederherstellung wird von diesem Archivdateiformat nicht " +"unterstützt\n" + +#: pg_backup_archiver.c:255 +msgid "" +"parallel restore is not supported with archives made by pre-8.0 pg_dump\n" +msgstr "" +"parallele Wiederherstellung wird mit Archiven, die mit pg_dump vor 8.0 " +"erstellt worden sind, nicht unterstützt\n" + +#: pg_backup_archiver.c:274 msgid "" "cannot restore from compressed archive (compression not supported in this " "installation)\n" @@ -956,71 +975,71 @@ msgstr "" "kann komprimiertes Archiv nicht wiederherstellen (Komprimierung in dieser " "Installation nicht unterstützt)\n" -#: pg_backup_archiver.c:260 +#: pg_backup_archiver.c:284 msgid "connecting to database for restore\n" msgstr "verbinde mit der Datenbank zur Wiederherstellung\n" -#: pg_backup_archiver.c:262 +#: pg_backup_archiver.c:286 msgid "direct database connections are not supported in pre-1.3 archives\n" msgstr "" "direkte Datenbankverbindungen sind in Archiven vor Version 1.3 nicht " "unterstützt\n" -#: pg_backup_archiver.c:304 +#: pg_backup_archiver.c:328 msgid "implied data-only restore\n" msgstr "implizit werden nur Daten wiederhergestellt\n" -#: pg_backup_archiver.c:356 +#: pg_backup_archiver.c:380 #, c-format msgid "dropping %s %s\n" msgstr "entferne %s %s\n" -#: pg_backup_archiver.c:408 +#: pg_backup_archiver.c:432 #, c-format msgid "setting owner and privileges for %s %s\n" msgstr "setze Eigentümer und Privilegien für %s %s\n" -#: pg_backup_archiver.c:466 pg_backup_archiver.c:468 +#: pg_backup_archiver.c:490 pg_backup_archiver.c:492 #, c-format msgid "warning from original dump file: %s\n" msgstr "Warnung aus der ursprünglichen Ausgabedatei: %s\n" -#: pg_backup_archiver.c:475 +#: pg_backup_archiver.c:499 #, c-format msgid "creating %s %s\n" msgstr "erstelle %s %s\n" -#: pg_backup_archiver.c:519 +#: pg_backup_archiver.c:543 #, c-format msgid "connecting to new database \"%s\"\n" msgstr "verbinde mit neuer Datenbank »%s«\n" -#: pg_backup_archiver.c:547 +#: pg_backup_archiver.c:571 #, c-format msgid "restoring %s\n" msgstr "Wiederherstellung von %s\n" -#: pg_backup_archiver.c:561 +#: pg_backup_archiver.c:585 #, c-format msgid "restoring data for table \"%s\"\n" msgstr "Wiederherstellung der Daten von Tabelle »%s«\n" -#: pg_backup_archiver.c:621 +#: pg_backup_archiver.c:647 #, c-format msgid "executing %s %s\n" msgstr "führe %s %s aus\n" -#: pg_backup_archiver.c:654 +#: pg_backup_archiver.c:680 #, c-format msgid "disabling triggers for %s\n" msgstr "schalte Trigger für %s aus\n" -#: pg_backup_archiver.c:680 +#: pg_backup_archiver.c:706 #, c-format msgid "enabling triggers for %s\n" msgstr "schalte Trigger für %s ein\n" -#: pg_backup_archiver.c:710 +#: pg_backup_archiver.c:736 msgid "" "internal error -- WriteData cannot be called outside the context of a " "DataDumper routine\n" @@ -1028,122 +1047,122 @@ msgstr "" "interner Fehler -- WriteData kann nicht außerhalb des Kontexts einer " "DataDumper-Routine aufgerufen werden\n" -#: pg_backup_archiver.c:867 +#: pg_backup_archiver.c:893 msgid "large-object output not supported in chosen format\n" msgstr "Large-Object-Ausgabe im gewählten Format nicht unterstützt\n" -#: pg_backup_archiver.c:921 +#: pg_backup_archiver.c:947 #, c-format msgid "restored %d large object\n" msgid_plural "restored %d large objects\n" msgstr[0] "%d Large Object wiederhergestellt\n" msgstr[1] "%d Large Objects wiederhergestellt\n" -#: pg_backup_archiver.c:942 +#: pg_backup_archiver.c:968 pg_backup_tar.c:723 #, c-format msgid "restoring large object with OID %u\n" -msgstr "Wiederherstellung von Large Object mir OID %u\n" +msgstr "Wiederherstellung von Large Object mit OID %u\n" -#: pg_backup_archiver.c:954 +#: pg_backup_archiver.c:980 #, c-format msgid "could not create large object %u: %s" msgstr "konnte Large Object %u nicht erstellen: %s" -#: pg_backup_archiver.c:1016 +#: pg_backup_archiver.c:1042 #, c-format msgid "could not open TOC file \"%s\": %s\n" msgstr "konnte Inhaltsverzeichnisdatei »%s« nicht öffnen: %s\n" -#: pg_backup_archiver.c:1057 +#: pg_backup_archiver.c:1083 #, c-format msgid "WARNING: line ignored: %s\n" msgstr "WARNUNG: Zeile ignoriert: %s\n" -#: pg_backup_archiver.c:1064 +#: pg_backup_archiver.c:1090 #, c-format msgid "could not find entry for ID %d\n" msgstr "konnte Eintrag für ID %d nicht finden\n" -#: pg_backup_archiver.c:1085 pg_backup_files.c:172 pg_backup_files.c:457 +#: pg_backup_archiver.c:1111 pg_backup_files.c:172 pg_backup_files.c:457 #, c-format msgid "could not close TOC file: %s\n" msgstr "konnte Inhaltsverzeichnisdatei nicht finden: %s\n" -#: pg_backup_archiver.c:1204 pg_backup_custom.c:152 pg_backup_files.c:130 +#: pg_backup_archiver.c:1230 pg_backup_custom.c:152 pg_backup_files.c:130 #: pg_backup_files.c:262 #, c-format msgid "could not open output file \"%s\": %s\n" msgstr "konnte Ausgabedatei »%s« nicht öffnen: %s\n" -#: pg_backup_archiver.c:1207 pg_backup_custom.c:159 pg_backup_files.c:137 +#: pg_backup_archiver.c:1233 pg_backup_custom.c:159 pg_backup_files.c:137 #, c-format msgid "could not open output file: %s\n" msgstr "konnte Ausgabedatei nicht öffnen: %s\n" -#: pg_backup_archiver.c:1313 +#: pg_backup_archiver.c:1335 #, c-format msgid "wrote %lu byte of large object data (result = %lu)\n" msgid_plural "wrote %lu bytes of large object data (result = %lu)\n" msgstr[0] "%lu Byte Large-Object-Daten geschrieben (Ergebnis = %lu)\n" msgstr[1] "%lu Bytes Large-Object-Daten geschrieben (Ergebnis = %lu)\n" -#: pg_backup_archiver.c:1319 +#: pg_backup_archiver.c:1341 #, c-format msgid "could not write to large object (result: %lu, expected: %lu)\n" msgstr "konnte Large Object nicht schreiben (Ergebis: %lu, erwartet: %lu)\n" -#: pg_backup_archiver.c:1377 pg_backup_archiver.c:1400 pg_backup_custom.c:652 -#: pg_backup_files.c:432 pg_backup_tar.c:590 pg_backup_tar.c:1093 -#: pg_backup_tar.c:1386 +#: pg_backup_archiver.c:1399 pg_backup_archiver.c:1422 pg_backup_custom.c:652 +#: pg_backup_files.c:432 pg_backup_tar.c:590 pg_backup_tar.c:1092 +#: pg_backup_tar.c:1385 #, c-format msgid "could not write to output file: %s\n" msgstr "konnte nicht in Ausgabedatei schreiben: %s\n" -#: pg_backup_archiver.c:1385 +#: pg_backup_archiver.c:1407 msgid "could not write to custom output routine\n" msgstr "konnte nicht zur Custom-Ausgaberoutine schreiben\n" -#: pg_backup_archiver.c:1483 +#: pg_backup_archiver.c:1505 msgid "Error while INITIALIZING:\n" msgstr "Fehler in Phase INITIALIZING:\n" -#: pg_backup_archiver.c:1488 +#: pg_backup_archiver.c:1510 msgid "Error while PROCESSING TOC:\n" msgstr "Fehler in Phase PROCESSING TOC:\n" -#: pg_backup_archiver.c:1493 +#: pg_backup_archiver.c:1515 msgid "Error while FINALIZING:\n" msgstr "Fehler in Phase FINALIZING:\n" -#: pg_backup_archiver.c:1498 +#: pg_backup_archiver.c:1520 #, c-format msgid "Error from TOC entry %d; %u %u %s %s %s\n" msgstr "Fehler in Inhaltsverzeichniseintrag %d; %u %u %s %s %s\n" -#: pg_backup_archiver.c:1633 +#: pg_backup_archiver.c:1655 #, c-format msgid "unexpected data offset flag %d\n" msgstr "unerwartete Datenoffsetmarkierung %d\n" -#: pg_backup_archiver.c:1646 +#: pg_backup_archiver.c:1668 msgid "file offset in dump file is too large\n" msgstr "Dateioffset in Dumpdatei ist zu groß\n" -#: pg_backup_archiver.c:1743 pg_backup_archiver.c:3095 pg_backup_custom.c:630 -#: pg_backup_files.c:419 pg_backup_tar.c:789 +#: pg_backup_archiver.c:1765 pg_backup_archiver.c:3167 pg_backup_custom.c:630 +#: pg_backup_files.c:419 pg_backup_tar.c:779 msgid "unexpected end of file\n" msgstr "unerwartetes Dateiende\n" -#: pg_backup_archiver.c:1760 +#: pg_backup_archiver.c:1782 msgid "attempting to ascertain archive format\n" msgstr "versuche Archivformat zu ermitteln\n" -#: pg_backup_archiver.c:1786 pg_backup_archiver.c:1796 +#: pg_backup_archiver.c:1808 pg_backup_archiver.c:1818 #, c-format msgid "directory name too long: \"%s\"\n" msgstr "Verzeichnisname zu lang: »%s«\n" -#: pg_backup_archiver.c:1804 +#: pg_backup_archiver.c:1826 #, c-format msgid "" "directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not " @@ -1152,88 +1171,88 @@ msgstr "" "Verzeichnis »%s« scheint kein gültiges Archiv zu sein (»toc.dat« existiert " "nicht)\n" -#: pg_backup_archiver.c:1812 pg_backup_custom.c:171 pg_backup_custom.c:757 +#: pg_backup_archiver.c:1834 pg_backup_custom.c:171 pg_backup_custom.c:762 #: pg_backup_files.c:155 pg_backup_files.c:307 #, c-format msgid "could not open input file \"%s\": %s\n" msgstr "konnte Eingabedatei »%s« nicht öffnen: %s\n" -#: pg_backup_archiver.c:1820 pg_backup_custom.c:178 pg_backup_files.c:162 +#: pg_backup_archiver.c:1842 pg_backup_custom.c:178 pg_backup_files.c:162 #, c-format msgid "could not open input file: %s\n" msgstr "konnte Eingabedatei nicht öffnen: %s\n" -#: pg_backup_archiver.c:1829 +#: pg_backup_archiver.c:1851 #, c-format msgid "could not read input file: %s\n" msgstr "konnte Eingabedatei nicht lesen: %s\n" -#: pg_backup_archiver.c:1831 +#: pg_backup_archiver.c:1853 #, c-format msgid "input file is too short (read %lu, expected 5)\n" msgstr "Eingabedatei ist zu kurz (gelesen: %lu, erwartet: 5)\n" -#: pg_backup_archiver.c:1889 +#: pg_backup_archiver.c:1911 msgid "input file does not appear to be a valid archive (too short?)\n" msgstr "Eingabedatei scheint kein gültiges Archiv zu sein (zu kurz?)\n" -#: pg_backup_archiver.c:1892 +#: pg_backup_archiver.c:1914 msgid "input file does not appear to be a valid archive\n" msgstr "Eingabedatei scheint kein gültiges Archiv zu sein\n" -#: pg_backup_archiver.c:1912 +#: pg_backup_archiver.c:1934 #, c-format msgid "could not close input file: %s\n" msgstr "konnte Eingabedatei nicht schließen: %s\n" -#: pg_backup_archiver.c:1929 +#: pg_backup_archiver.c:1951 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "erstelle AH für %s, Format %d\n" -#: pg_backup_archiver.c:2041 +#: pg_backup_archiver.c:2062 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "nicht erkanntes Dateiformat »%d«\n" -#: pg_backup_archiver.c:2163 +#: pg_backup_archiver.c:2184 #, c-format msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" msgstr "" "ID %d des Eintrags außerhalb des gültigen Bereichs -- vielleicht ein " "verfälschtes Inhaltsverzeichnis\n" -#: pg_backup_archiver.c:2279 +#: pg_backup_archiver.c:2300 #, c-format msgid "read TOC entry %d (ID %d) for %s %s\n" msgstr "Inhaltsverzeichniseintrag %d (ID %d) von %s %s gelesen\n" -#: pg_backup_archiver.c:2313 +#: pg_backup_archiver.c:2334 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "nicht erkannte Kodierung »%s«\n" -#: pg_backup_archiver.c:2318 +#: pg_backup_archiver.c:2339 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "ungültiger ENCODING-Eintrag: %s\n" -#: pg_backup_archiver.c:2336 +#: pg_backup_archiver.c:2357 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "ungültiger STDSTRINGS-Eintrag: %s\n" -#: pg_backup_archiver.c:2534 +#: pg_backup_archiver.c:2555 #, c-format msgid "could not set session user to \"%s\": %s" msgstr "konnte Sitzungsbenutzer nicht auf »%s« setzen: %s" -#: pg_backup_archiver.c:2874 pg_backup_archiver.c:3026 +#: pg_backup_archiver.c:2895 pg_backup_archiver.c:3077 #, c-format msgid "WARNING: don't know how to set owner for object type %s\n" msgstr "WARNUNG: kann Eigentümer für Objekttyp %s nicht setzen\n" -#: pg_backup_archiver.c:3058 +#: pg_backup_archiver.c:3130 msgid "" "WARNING: requested compression not available in this installation -- archive " "will be uncompressed\n" @@ -1241,21 +1260,21 @@ msgstr "" "WARNUNG: Komprimierung ist in dieser Installation nicht verfügbar -- Archiv " "wird nicht komprimiert\n" -#: pg_backup_archiver.c:3098 +#: pg_backup_archiver.c:3170 msgid "did not find magic string in file header\n" msgstr "magische Zeichenkette im Dateikopf nicht gefunden\n" -#: pg_backup_archiver.c:3111 +#: pg_backup_archiver.c:3183 #, c-format msgid "unsupported version (%d.%d) in file header\n" msgstr "nicht unterstützte Version (%d.%d) im Dateikopf\n" -#: pg_backup_archiver.c:3116 +#: pg_backup_archiver.c:3188 #, c-format msgid "sanity check on integer size (%lu) failed\n" msgstr "Prüfung der Integer-Größe (%lu) fehlgeschlagen\n" -#: pg_backup_archiver.c:3120 +#: pg_backup_archiver.c:3192 msgid "" "WARNING: archive was made on a machine with larger integers, some operations " "might fail\n" @@ -1263,14 +1282,14 @@ msgstr "" "WARNUNG: Archiv wurde auf einer Maschine mit größeren Integers erstellt; " "einige Operationen könnten fehlschlagen\n" -#: pg_backup_archiver.c:3130 +#: pg_backup_archiver.c:3202 #, c-format msgid "expected format (%d) differs from format found in file (%d)\n" msgstr "" "erwartetes Format (%d) ist nicht das gleiche wie das in der Datei gefundene " "(%d)\n" -#: pg_backup_archiver.c:3146 +#: pg_backup_archiver.c:3218 msgid "" "WARNING: archive is compressed, but this installation does not support " "compression -- no data will be available\n" @@ -1278,103 +1297,90 @@ msgstr "" "WARNUNG: Archiv ist komprimiert, aber diese Installation unterstützt keine " "Komprimierung -- keine Daten verfügbar\n" -#: pg_backup_archiver.c:3164 +#: pg_backup_archiver.c:3236 msgid "WARNING: invalid creation date in header\n" msgstr "WARNUNG: ungültiges Erstellungsdatum im Kopf\n" -#: pg_backup_archiver.c:3262 +#: pg_backup_archiver.c:3334 msgid "entering restore_toc_entries_parallel\n" msgstr "Eintritt in restore_toc_entries_parallel\n" -#: pg_backup_archiver.c:3266 -msgid "parallel restore is not supported with this archive file format\n" -msgstr "" -"parallele Wiederherstellung wird von diesem Archivdateiformat nicht " -"unterstützt\n" - -#: pg_backup_archiver.c:3270 -msgid "" -"parallel restore is not supported with archives made by pre-8.0 pg_dump\n" -msgstr "" -"parallele Wiederherstellung wird mit Archiven, die mit pg_dump vor 8.0 " -"erstellt worden sind, nicht unterstützt\n" - -#: pg_backup_archiver.c:3311 +#: pg_backup_archiver.c:3375 #, c-format msgid "processing item %d %s %s\n" msgstr "verarbeite Element %d %s %s\n" -#: pg_backup_archiver.c:3387 +#: pg_backup_archiver.c:3451 msgid "entering main parallel loop\n" msgstr "Eintritt in Hauptparallelschleife\n" -#: pg_backup_archiver.c:3401 +#: pg_backup_archiver.c:3465 #, c-format msgid "skipping item %d %s %s\n" msgstr "Element %d %s %s wird übersprungen\n" -#: pg_backup_archiver.c:3417 +#: pg_backup_archiver.c:3481 #, c-format msgid "launching item %d %s %s\n" msgstr "starte Element %d %s %s\n" -#: pg_backup_archiver.c:3454 +#: pg_backup_archiver.c:3518 #, c-format msgid "worker process crashed: status %d\n" msgstr "Arbeitsprozess abgestürzt: Status %d\n" -#: pg_backup_archiver.c:3459 +#: pg_backup_archiver.c:3523 msgid "finished main parallel loop\n" msgstr "Hauptparallelschleife beendet\n" -#: pg_backup_archiver.c:3477 +#: pg_backup_archiver.c:3541 #, c-format msgid "processing missed item %d %s %s\n" msgstr "verarbeite verpasstes Element %d %s %s\n" -#: pg_backup_archiver.c:3503 +#: pg_backup_archiver.c:3567 msgid "parallel_restore should not return\n" msgstr "parallel_restore sollte nicht zurückkehren\n" -#: pg_backup_archiver.c:3509 +#: pg_backup_archiver.c:3573 #, c-format msgid "could not create worker process: %s\n" msgstr "konnte Arbeitsprozess nicht erzeugen: %s\n" -#: pg_backup_archiver.c:3517 +#: pg_backup_archiver.c:3581 #, c-format msgid "could not create worker thread: %s\n" msgstr "konnte Arbeitsthread nicht erzeugen: %s\n" -#: pg_backup_archiver.c:3741 +#: pg_backup_archiver.c:3805 msgid "no item ready\n" msgstr "kein Element bereit\n" -#: pg_backup_archiver.c:3836 +#: pg_backup_archiver.c:3900 msgid "could not find slot of finished worker\n" msgstr "konnte Slot des beendeten Arbeitsprozesses nicht finden\n" -#: pg_backup_archiver.c:3838 +#: pg_backup_archiver.c:3902 #, c-format msgid "finished item %d %s %s\n" msgstr "Element %d %s %s abgeschlossen\n" -#: pg_backup_archiver.c:3851 +#: pg_backup_archiver.c:3915 #, c-format msgid "worker process failed: exit code %d\n" msgstr "Arbeitsprozess fehlgeschlagen: Code %d\n" -#: pg_backup_archiver.c:4047 +#: pg_backup_archiver.c:4111 #, c-format msgid "transferring dependency %d -> %d to %d\n" msgstr "übertrage Abhängigkeit %d -> %d an %d\n" -#: pg_backup_archiver.c:4116 +#: pg_backup_archiver.c:4180 #, c-format msgid "reducing dependencies for %d\n" msgstr "reduziere Abhängigkeiten für %d\n" -#: pg_backup_archiver.c:4165 +#: pg_backup_archiver.c:4229 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "" @@ -1440,11 +1446,11 @@ msgid "unrecognized data block type %d while restoring archive\n" msgstr "" "unerkannter Datenblocktyp %d beim Wiederherstellen des Archivs gefunden\n" -#: pg_backup_custom.c:578 pg_backup_custom.c:911 +#: pg_backup_custom.c:578 pg_backup_custom.c:916 msgid "could not read from input file: end of file\n" msgstr "konnte nicht aus Eingabedatei lesen: Dateiende\n" -#: pg_backup_custom.c:581 pg_backup_custom.c:914 +#: pg_backup_custom.c:581 pg_backup_custom.c:919 #, c-format msgid "could not read from input file: %s\n" msgstr "konnte nicht aus Eingabedatei lesen: %s\n" @@ -1454,7 +1460,7 @@ msgstr "konnte nicht aus Eingabedatei lesen: %s\n" msgid "could not write byte: %s\n" msgstr "konnte Byte nicht schreiben: %s\n" -#: pg_backup_custom.c:718 pg_backup_custom.c:751 +#: pg_backup_custom.c:718 pg_backup_custom.c:756 #, c-format msgid "could not close archive file: %s\n" msgstr "konnte Archivdatei nicht schließen: %s\n" @@ -1463,29 +1469,32 @@ msgstr "konnte Archivdatei nicht schließen: %s\n" msgid "can only reopen input archives\n" msgstr "nur Eingabearchive können neu geöffnet werden\n" -#: pg_backup_custom.c:739 -msgid "cannot reopen stdin\n" -msgstr "kann stdin nicht neu öffnen\n" - -#: pg_backup_custom.c:741 -msgid "cannot reopen non-seekable file\n" -msgstr "kann Datei nicht neu öffnen, weil sie nicht frei positionierbar ist\n" +#: pg_backup_custom.c:744 +msgid "parallel restore from stdin is not supported\n" +msgstr "" +"parallele Wiederherstellung aus der Standardeingabe wird nicht unterstützt\n" #: pg_backup_custom.c:746 +msgid "parallel restore from non-seekable file is not supported\n" +msgstr "" +"parallele Wiederherstellung aus einer Datei, die kein Suchen ermöglicht, " +"wird nicht unterstützt\n" + +#: pg_backup_custom.c:751 #, c-format msgid "could not determine seek position in archive file: %s\n" msgstr "konnte Positionszeiger in Archivdatei nicht ermitteln: %s\n" -#: pg_backup_custom.c:761 +#: pg_backup_custom.c:766 #, c-format msgid "could not set seek position in archive file: %s\n" msgstr "konnte Positionszeiger in Archivdatei nicht setzen: %s\n" -#: pg_backup_custom.c:781 +#: pg_backup_custom.c:786 msgid "compressor active\n" msgstr "Kompressor ist aktiv\n" -#: pg_backup_custom.c:817 +#: pg_backup_custom.c:822 msgid "WARNING: ftell mismatch with expected position -- ftell used\n" msgstr "" "WARNUNG: erwartete Dateiposition stimmt nicht mit ftell überein -- benutze " @@ -1495,80 +1504,80 @@ msgstr "" msgid "archiver (db)" msgstr "Archivierer (DB)" -#: pg_backup_db.c:61 +#: pg_backup_db.c:54 msgid "could not get server_version from libpq\n" msgstr "konnte server_version nicht von libpq ermitteln\n" -#: pg_backup_db.c:74 pg_dumpall.c:1741 +#: pg_backup_db.c:67 pg_dumpall.c:1741 #, c-format msgid "server version: %s; %s version: %s\n" msgstr "Version des Servers: %s; Version von %s: %s\n" -#: pg_backup_db.c:76 pg_dumpall.c:1743 +#: pg_backup_db.c:69 pg_dumpall.c:1743 #, c-format msgid "aborting because of server version mismatch\n" msgstr "Abbruch wegen unpassender Serverversion\n" -#: pg_backup_db.c:147 +#: pg_backup_db.c:140 #, c-format msgid "connecting to database \"%s\" as user \"%s\"\n" msgstr "verbinde mit Datenbank »%s« als Benutzer »%s«\n" -#: pg_backup_db.c:152 pg_backup_db.c:207 pg_backup_db.c:254 pg_backup_db.c:303 +#: pg_backup_db.c:145 pg_backup_db.c:200 pg_backup_db.c:247 pg_backup_db.c:296 #: pg_dumpall.c:1637 pg_dumpall.c:1689 msgid "Password: " msgstr "Passwort: " -#: pg_backup_db.c:188 +#: pg_backup_db.c:181 msgid "failed to reconnect to database\n" msgstr "konnte nicht wieder zur Datenbank verbinden\n" -#: pg_backup_db.c:193 +#: pg_backup_db.c:186 #, c-format msgid "could not reconnect to database: %s" msgstr "konnte nicht wieder zur Datenbank verbinden: %s" -#: pg_backup_db.c:209 +#: pg_backup_db.c:202 msgid "connection needs password\n" msgstr "Verbindung benötigt Passwort\n" -#: pg_backup_db.c:250 +#: pg_backup_db.c:243 msgid "already connected to a database\n" msgstr "bereits mit einer Datenbank verbunden\n" -#: pg_backup_db.c:295 +#: pg_backup_db.c:288 msgid "failed to connect to database\n" msgstr "Verbinden zur Datenbank schlug fehl\n" -#: pg_backup_db.c:314 +#: pg_backup_db.c:307 #, c-format msgid "connection to database \"%s\" failed: %s" msgstr "Verbindung zur Datenbank »%s« fehlgeschlagen: %s" -#: pg_backup_db.c:329 +#: pg_backup_db.c:322 #, c-format msgid "%s" msgstr "%s" -#: pg_backup_db.c:441 +#: pg_backup_db.c:414 pg_backup_db.c:485 pg_backup_db.c:494 +msgid "could not execute query" +msgstr "konnte Anfrage nicht ausführen" + +#: pg_backup_db.c:465 #, c-format msgid "error returned by PQputCopyData: %s" msgstr "Fehler in PQputCopyData: %s" -#: pg_backup_db.c:451 +#: pg_backup_db.c:513 #, c-format msgid "error returned by PQputCopyEnd: %s" msgstr "Fehler in PQputCopyEnd: %s" -#: pg_backup_db.c:498 -msgid "could not execute query" -msgstr "konnte Anfrage nicht ausführen" - -#: pg_backup_db.c:696 +#: pg_backup_db.c:530 msgid "could not start database transaction" msgstr "konnte Datenbanktransaktion nicht starten" -#: pg_backup_db.c:702 +#: pg_backup_db.c:536 msgid "could not commit database transaction" msgstr "konnte Datenbanktransaktion nicht beenden" @@ -1614,7 +1623,7 @@ msgstr "konnte Byte nicht schreiben\n" msgid "could not open large object TOC for output: %s\n" msgstr "konnte Large-Object-Inhaltsverzeichnis nicht zur Ausgabe öffnen: %s\n" -#: pg_backup_files.c:510 pg_backup_tar.c:939 +#: pg_backup_files.c:510 pg_backup_tar.c:929 #, c-format msgid "invalid OID for large object (%u)\n" msgstr "Large Object hat ungültige Oid (%u)\n" @@ -1684,68 +1693,53 @@ msgstr "interner Fehler -- weder th noch fh in tarReadRaw() angegeben\n" #: pg_backup_tar.c:678 #, c-format -msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n" -msgstr "" -"fehlerhafte COPY-Anweisung -- Zeichenkette »copy« in »%s« nicht gefunden\n" - -#: pg_backup_tar.c:696 -#, c-format -msgid "" -"invalid COPY statement -- could not find \"from stdin\" in string \"%s\" " -"starting at position %lu\n" -msgstr "" -"fehlerhafte COPY-Anweisung -- Zeichenkette »from stdin« in »%s« ab Position " -"%lu nicht gefunden\n" +msgid "unexpected COPY statement syntax: \"%s\"\n" +msgstr "unerwartete Syntax der COPY-Anweisung: »%s«\n" -#: pg_backup_tar.c:733 -#, c-format -msgid "restoring large object OID %u\n" -msgstr "Wiederherstellung von Large Object OID %u\n" - -#: pg_backup_tar.c:884 +#: pg_backup_tar.c:874 msgid "could not write null block at end of tar archive\n" msgstr "konnte Nullblock am Ende des Tar-Archivs nicht schreiben\n" -#: pg_backup_tar.c:1084 +#: pg_backup_tar.c:1083 msgid "archive member too large for tar format\n" msgstr "Archivmitglied zu groß für Tar-Format\n" -#: pg_backup_tar.c:1099 +#: pg_backup_tar.c:1098 #, c-format msgid "could not close temporary file: %s\n" msgstr "konnte temporäre Datei nicht schließen: %s\n" -#: pg_backup_tar.c:1109 +#: pg_backup_tar.c:1108 #, c-format msgid "actual file length (%s) does not match expected (%s)\n" msgstr "" "tatsächliche Dateilänge (%s) stimmt nicht mit erwarteter Länge (%s) überein\n" -#: pg_backup_tar.c:1117 +#: pg_backup_tar.c:1116 msgid "could not output padding at end of tar member\n" msgstr "konnte Tar-Mitglied am Ende nicht auffüllen\n" -#: pg_backup_tar.c:1146 +#: pg_backup_tar.c:1145 #, c-format msgid "moving from position %s to next member at file position %s\n" msgstr "bewege Position von %s auf nächstes Mitglied bei Position %s\n" -#: pg_backup_tar.c:1157 +#: pg_backup_tar.c:1156 #, c-format msgid "now at file position %s\n" msgstr "jetzt bei Dateiposition %s\n" -#: pg_backup_tar.c:1166 pg_backup_tar.c:1196 +#: pg_backup_tar.c:1165 pg_backup_tar.c:1195 #, c-format msgid "could not find header for file \"%s\" in tar archive\n" msgstr "konnte Kopf für Datei »%s« im Tar-Archiv nicht finden\n" -#: pg_backup_tar.c:1180 +#: pg_backup_tar.c:1179 #, c-format msgid "skipping tar member %s\n" msgstr "Tar-Mitglied %s übersprungen\n" -#: pg_backup_tar.c:1184 +#: pg_backup_tar.c:1183 #, c-format msgid "" "restoring data out of order is not supported in this archive format: \"%s\" " @@ -1754,25 +1748,25 @@ msgstr "" "Ausgabe der Daten in anderer Reihenfolge wird in diesem Archivformat nicht " "unterstützt: »%s« wird benötigt, aber es kommt vor »%s« in der Archivdatei.\n" -#: pg_backup_tar.c:1230 +#: pg_backup_tar.c:1229 #, c-format msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n" msgstr "" "tatsächliche Dateiposition stimmt nicht mit erwarteter überein (%s und %s)\n" -#: pg_backup_tar.c:1245 +#: pg_backup_tar.c:1244 #, c-format msgid "incomplete tar header found (%lu byte)\n" msgid_plural "incomplete tar header found (%lu bytes)\n" msgstr[0] "unvollständiger Tar-Dateikopf gefunden (%lu Byte)\n" msgstr[1] "unvollständiger Tar-Dateikopf gefunden (%lu Bytes)\n" -#: pg_backup_tar.c:1283 +#: pg_backup_tar.c:1282 #, c-format msgid "TOC Entry %s at %s (length %lu, checksum %d)\n" msgstr "Inhaltsverzeichniseintrag %s bei %s (Länge %lu, Prüfsumme %d)\n" -#: pg_backup_tar.c:1293 +#: pg_backup_tar.c:1292 #, c-format msgid "" "corrupt tar header found in %s (expected %d, computed %d) file position %s\n" @@ -2114,7 +2108,8 @@ msgid "" "%s extracts a PostgreSQL database cluster into an SQL script file.\n" "\n" msgstr "" -"%s gibt eines PostgreSQL-Datenbankcluster in eine SQL-Skriptdatei aus.\n" +"%s gibt einen PostgreSQL-Datenbankcluster in eine SQL-Skriptdatei aus.\n" +"\n" #: pg_dumpall.c:530 #, c-format @@ -2290,27 +2285,27 @@ msgstr "konnte nicht in Verzeichnis »%s« wechseln" msgid "could not read symbolic link \"%s\"" msgstr "konnte symbolische Verknüpfung »%s« nicht lesen" -#: ../../port/exec.c:517 +#: ../../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" msgstr "Kindprozess hat mit Code %d beendet" -#: ../../port/exec.c:521 +#: ../../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "Kindprozess wurde durch Ausnahme 0x%X beendet" -#: ../../port/exec.c:530 +#: ../../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "Kindprozess wurde von Signal %s beendet" -#: ../../port/exec.c:533 +#: ../../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "Kindprozess wurde von Signal %d beendet" -#: ../../port/exec.c:537 +#: ../../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "Kindprozess hat mit unbekanntem Status %d beendet" diff --git a/src/bin/pg_dump/po/es.po b/src/bin/pg_dump/po/es.po index 7fb93d267d..5ee09f5ea2 100644 --- a/src/bin/pg_dump/po/es.po +++ b/src/bin/pg_dump/po/es.po @@ -1,97 +1,96 @@ # Spanish message translation file for pg_dump # -# Copyright (C) 2003-2010 PostgreSQL Global Development Group +# Copyright (C) 2003-2012 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # # Manuel Sugawara , 2003. -# Alvaro Herrera , 2004-2007, 2009-2010 -# -# pgtranslation Id: pg_dump.po,v 1.10 2010/08/31 17:33:46 alvherre Exp $ +# Alvaro Herrera , 2004-2007, 2009-2012 # msgid "" msgstr "" -"Project-Id-Version: pg_dump (PostgreSQL 9.0)\n" +"Project-Id-Version: pg_dump (PostgreSQL 9.1)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-08-31 07:20+0000\n" -"PO-Revision-Date: 2010-08-31 13:32-0400\n" +"POT-Creation-Date: 2013-08-26 19:45+0000\n" +"PO-Revision-Date: 2013-06-05 01:23-0400\n" "Last-Translator: Álvaro Herrera \n" "Language-Team: PgSQL Español \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: pg_dump.c:454 pg_restore.c:268 pg_dumpall.c:292 -#, c-format -msgid "%s: invalid -X option -- %s\n" -msgstr "%s: opción -X no válida -- %s\n" - -#: pg_dump.c:456 pg_dump.c:478 pg_dump.c:492 pg_restore.c:270 pg_restore.c:293 -#: pg_restore.c:309 pg_restore.c:321 pg_dumpall.c:294 pg_dumpall.c:314 -#: pg_dumpall.c:324 pg_dumpall.c:334 pg_dumpall.c:343 pg_dumpall.c:352 -#: pg_dumpall.c:406 +#: pg_dump.c:492 pg_dump.c:506 pg_restore.c:274 pg_restore.c:290 +#: pg_restore.c:302 pg_dumpall.c:297 pg_dumpall.c:307 pg_dumpall.c:317 +#: pg_dumpall.c:326 pg_dumpall.c:335 pg_dumpall.c:393 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Prueba «%s --help» para más información.\n" -#: pg_dump.c:490 pg_restore.c:307 pg_dumpall.c:322 +#: pg_dump.c:504 pg_restore.c:288 pg_dumpall.c:305 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" -msgstr "%s: demasiados argumentos en la línea de órdenes (el primero es «%s»)\n" +msgstr "" +"%s: demasiados argumentos en la línea de órdenes (el primero es «%s»)\n" -#: pg_dump.c:503 +#: pg_dump.c:517 msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "" "las opciones -s/--schema-only y -a/--data-only no pueden usarse juntas\n" -#: pg_dump.c:509 +#: pg_dump.c:523 msgid "options -c/--clean and -a/--data-only cannot be used together\n" msgstr "las opciones -c/--clean y -a/--data-only no pueden usarse juntas\n" -#: pg_dump.c:515 +#: pg_dump.c:529 msgid "" "options --inserts/--column-inserts and -o/--oids cannot be used together\n" msgstr "" "las opciones --inserts/--column-inserts y -o/--oids no pueden usarse juntas\n" -#: pg_dump.c:516 +#: pg_dump.c:530 msgid "(The INSERT command cannot set OIDs.)\n" msgstr "(La orden INSERT no puede establecer los OIDs).\n" -#: pg_dump.c:546 -#, c-format -msgid "invalid output format \"%s\" specified\n" -msgstr "el formato de salida especificado «%s» no es válido\n" - -#: pg_dump.c:552 +#: pg_dump.c:555 #, c-format msgid "could not open output file \"%s\" for writing\n" msgstr "no se pudo abrir el archivo de salida «%s» para escritura\n" -#: pg_dump.c:562 pg_backup_db.c:45 +#: pg_dump.c:565 pg_backup_db.c:38 #, c-format msgid "could not parse version string \"%s\"\n" msgstr "no se pudo interpretar la cadena de versión «%s»\n" -#: pg_dump.c:585 +#: pg_dump.c:588 #, c-format msgid "invalid client encoding \"%s\" specified\n" msgstr "la codificación de cliente especificada «%s» no es válida\n" -#: pg_dump.c:668 +#: pg_dump.c:671 pg_dump.c:2433 pg_dump.c:2481 pg_dump.c:2536 pg_dump.c:7727 +#: pg_dump.c:7958 pg_dump.c:8924 pg_dump.c:9476 pg_dump.c:9730 pg_dump.c:9844 +#: pg_dump.c:10300 pg_dump.c:10486 pg_dump.c:10592 pg_dump.c:10792 +#: pg_dump.c:11034 pg_dump.c:11201 pg_dump.c:11422 pg_dump.c:14288 +#, c-format +msgid "query returned %d row instead of one: %s\n" +msgid_plural "query returned %d rows instead of one: %s\n" +msgstr[0] "la consulta regresó %d fila en lugar de una: %s\n" +msgstr[1] "la consulta regresó %d filas en lugar de una: %s\n" + +#: pg_dump.c:722 #, c-format msgid "last built-in OID is %u\n" msgstr "el último OID interno es %u\n" -#: pg_dump.c:678 +#: pg_dump.c:732 msgid "No matching schemas were found\n" msgstr "No se encontraron esquemas coincidentes\n" -#: pg_dump.c:693 +#: pg_dump.c:747 msgid "No matching tables were found\n" msgstr "No se encontraron tablas coincidentes\n" -#: pg_dump.c:805 +#: pg_dump.c:869 #, c-format msgid "" "%s dumps a database as a text file or to other formats.\n" @@ -100,17 +99,17 @@ msgstr "" "%s extrae una base de datos en formato de texto o en otros formatos.\n" "\n" -#: pg_dump.c:806 pg_restore.c:410 pg_dumpall.c:543 +#: pg_dump.c:870 pg_restore.c:397 pg_dumpall.c:530 #, c-format msgid "Usage:\n" msgstr "Uso:\n" -#: pg_dump.c:807 +#: pg_dump.c:871 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [OPCIÓN]... [NOMBREDB]\n" -#: pg_dump.c:809 pg_restore.c:413 pg_dumpall.c:546 +#: pg_dump.c:873 pg_restore.c:400 pg_dumpall.c:533 #, c-format msgid "" "\n" @@ -119,49 +118,50 @@ msgstr "" "\n" "Opciones generales:\n" -#: pg_dump.c:810 pg_dumpall.c:547 +#: pg_dump.c:874 #, c-format -msgid " -f, --file=FILENAME output file name\n" -msgstr " -f, --file=ARCHIVO nombre del archivo de salida\n" +msgid " -f, --file=FILENAME output file or directory name\n" +msgstr " -f, --file=ARCHIVO nombre del archivo o directorio de salida\n" -#: pg_dump.c:811 +#: pg_dump.c:875 #, c-format msgid "" -" -F, --format=c|t|p output file format (custom, tar, plain text)\n" +" -F, --format=c|d|t|p output file format (custom, directory, tar, " +"plain text)\n" msgstr "" -" -F, --format=c|t|p Formato del archivo de salida\n" -" (c=personalizado, t=tar, p=texto)\n" +" -F, --format=c|d|t|p Formato del archivo de salida\n" +" (c=personalizado, d=directorio, t=tar, p=texto)\n" -#: pg_dump.c:812 +#: pg_dump.c:876 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose modo verboso\n" -#: pg_dump.c:813 +#: pg_dump.c:877 #, c-format msgid "" " -Z, --compress=0-9 compression level for compressed formats\n" msgstr "" " -Z, --compress=0-9 nivel de compresión para formatos comprimidos\n" -#: pg_dump.c:814 pg_dumpall.c:548 +#: pg_dump.c:878 pg_dumpall.c:535 #, c-format msgid "" " --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" msgstr "" " --lock-wait-timeout=SEGS espera a lo más SEGS segundos obtener un lock\n" -#: pg_dump.c:815 pg_dumpall.c:549 +#: pg_dump.c:879 pg_dumpall.c:536 #, c-format msgid " --help show this help, then exit\n" msgstr " --help muestra esta ayuda y termina\n" -#: pg_dump.c:816 pg_dumpall.c:550 +#: pg_dump.c:880 pg_dumpall.c:537 #, c-format msgid " --version output version information, then exit\n" msgstr " --version muestra el número de versión y termina\n" -#: pg_dump.c:818 pg_dumpall.c:551 +#: pg_dump.c:882 pg_dumpall.c:538 #, c-format msgid "" "\n" @@ -170,17 +170,17 @@ msgstr "" "\n" "Opciones que controlan el contenido de la salida:\n" -#: pg_dump.c:819 pg_dumpall.c:552 +#: pg_dump.c:883 pg_dumpall.c:539 #, c-format msgid " -a, --data-only dump only the data, not the schema\n" msgstr " -a, --data-only extrae sólo los datos, no el esquema\n" -#: pg_dump.c:820 +#: pg_dump.c:884 #, c-format msgid " -b, --blobs include large objects in dump\n" msgstr " -b, --blobs incluye objetos grandes en la extracción\n" -#: pg_dump.c:821 +#: pg_dump.c:885 #, c-format msgid "" " -c, --clean clean (drop) database objects before " @@ -188,7 +188,7 @@ msgid "" msgstr "" " -c, --clean tira (drop) la base de datos antes de crearla\n" -#: pg_dump.c:822 +#: pg_dump.c:886 #, c-format msgid "" " -C, --create include commands to create database in dump\n" @@ -196,30 +196,30 @@ msgstr "" " -C, --create incluye órdenes para crear la base de datos\n" " en la extracción\n" -#: pg_dump.c:823 +#: pg_dump.c:887 #, c-format msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" msgstr "" " -E, --encoding=CODIF extrae los datos con la codificación CODIF\n" -#: pg_dump.c:824 +#: pg_dump.c:888 #, c-format msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" msgstr " -n, --schema=ESQUEMA extrae sólo el esquema nombrado\n" -#: pg_dump.c:825 +#: pg_dump.c:889 #, c-format msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n" msgstr "" " -N, --exclude-schema=ESQUEMA\n" " NO extrae el o los esquemas listados\n" -#: pg_dump.c:826 pg_dumpall.c:555 +#: pg_dump.c:890 pg_dumpall.c:542 #, c-format msgid " -o, --oids include OIDs in dump\n" msgstr " -o, --oids incluye OIDs en la extracción\n" -#: pg_dump.c:827 +#: pg_dump.c:891 #, c-format msgid "" " -O, --no-owner skip restoration of object ownership in\n" @@ -228,12 +228,12 @@ msgstr "" " -O, --no-owner en formato de sólo texto, no reestablece\n" " los dueños de los objetos\n" -#: pg_dump.c:829 pg_dumpall.c:558 +#: pg_dump.c:893 pg_dumpall.c:545 #, c-format msgid " -s, --schema-only dump only the schema, no data\n" msgstr " -s, --schema-only extrae sólo el esquema, no los datos\n" -#: pg_dump.c:830 +#: pg_dump.c:894 #, c-format msgid "" " -S, --superuser=NAME superuser user name to use in plain-text " @@ -241,37 +241,29 @@ msgid "" msgstr "" " -S, --superuser=NAME superusuario a utilizar en el volcado de texto\n" -#: pg_dump.c:831 +#: pg_dump.c:895 #, c-format msgid " -t, --table=TABLE dump the named table(s) only\n" msgstr " -t, --table=TABLE extrae sólo la tabla nombrada\n" -#: pg_dump.c:832 +#: pg_dump.c:896 #, c-format msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n" msgstr "" " -T, --exclude-table=TABLA\n" " NO extrae la o las tablas nombradas\n" -#: pg_dump.c:833 pg_dumpall.c:561 +#: pg_dump.c:897 pg_dumpall.c:548 #, c-format msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" msgstr " -x, --no-privileges no extrae los privilegios (grant/revoke)\n" -#: pg_dump.c:834 pg_dumpall.c:562 +#: pg_dump.c:898 pg_dumpall.c:549 #, c-format msgid " --binary-upgrade for use by upgrade utilities only\n" msgstr " --binary-upgrade sólo para uso de utilidades de upgrade\n" -#: pg_dump.c:835 pg_dumpall.c:563 -#, c-format -msgid "" -" --inserts dump data as INSERT commands, rather than " -"COPY\n" -msgstr "" -" --inserts extrae los datos usando INSERT, en vez de COPY\n" - -#: pg_dump.c:836 pg_dumpall.c:564 +#: pg_dump.c:899 pg_dumpall.c:550 #, c-format msgid "" " --column-inserts dump data as INSERT commands with column " @@ -280,7 +272,7 @@ msgstr "" " --column-inserts extrae los datos usando INSERT con nombres\n" " de columnas\n" -#: pg_dump.c:837 pg_dumpall.c:565 +#: pg_dump.c:900 pg_dumpall.c:551 #, c-format msgid "" " --disable-dollar-quoting disable dollar quoting, use SQL standard " @@ -289,7 +281,7 @@ msgstr "" " --disable-dollar-quoting deshabilita el uso de «delimitadores de dólar»,\n" " usa delimitadores de cadena estándares\n" -#: pg_dump.c:838 pg_dumpall.c:566 +#: pg_dump.c:901 pg_dumpall.c:552 #, c-format msgid "" " --disable-triggers disable triggers during data-only restore\n" @@ -298,26 +290,47 @@ msgstr "" "el\n" " restablecimiento de la extracción de sólo-datos\n" -#: pg_dump.c:839 pg_dumpall.c:567 +#: pg_dump.c:902 pg_dumpall.c:553 #, c-format -msgid " --no-tablespaces do not dump tablespace assignments\n" +msgid "" +" --inserts dump data as INSERT commands, rather than " +"COPY\n" msgstr "" -" -no-tablespaces no volcar asignaciones de tablespace\n" +" --inserts extrae los datos usando INSERT, en vez de COPY\n" + +#: pg_dump.c:903 pg_dumpall.c:554 +#, c-format +msgid " --no-security-labels do not dump security label assignments\n" +msgstr "" +" --no-security-labels no volcar asignaciones de etiquetas de seguridad\n" + +#: pg_dump.c:904 pg_dumpall.c:555 +#, c-format +msgid " --no-tablespaces do not dump tablespace assignments\n" +msgstr " --no-tablespaces no volcar asignaciones de tablespace\n" + +#: pg_dump.c:905 pg_dumpall.c:556 +#, c-format +msgid " --no-unlogged-table-data do not dump unlogged table data\n" +msgstr " --no-unlogged-table-data no volcar datos de tablas unlogged\n" -#: pg_dump.c:840 pg_dumpall.c:568 +#: pg_dump.c:906 pg_dumpall.c:557 #, c-format msgid "" -" --quote-all-identifiers quote all identifiers, even if not keywords\n" +" --quote-all-identifiers quote all identifiers, even if not key words\n" msgstr "" " --quote-all-identifiers entrecomilla todos los identificadores, incluso\n" " si no son palabras clave\n" -#: pg_dump.c:841 pg_dumpall.c:569 +#: pg_dump.c:907 #, c-format -msgid " --role=ROLENAME do SET ROLE before dump\n" -msgstr " --role=ROL ejecuta SET ROLE antes del volcado\n" +msgid "" +" --serializable-deferrable wait until the dump can run without anomalies\n" +msgstr "" +" --serializable-deferrable espera hasta que el respaldo pueda completarse\n" +" sin anomalías\n" -#: pg_dump.c:842 pg_dumpall.c:570 +#: pg_dump.c:908 pg_dumpall.c:558 #, c-format msgid "" " --use-set-session-authorization\n" @@ -330,7 +343,7 @@ msgstr "" " ALTER OWNER para cambiar los dueño de los " "objetos\n" -#: pg_dump.c:846 pg_restore.c:452 pg_dumpall.c:574 +#: pg_dump.c:912 pg_restore.c:439 pg_dumpall.c:562 #, c-format msgid "" "\n" @@ -339,29 +352,29 @@ msgstr "" "\n" "Opciones de la conexión:\n" -#: pg_dump.c:847 pg_restore.c:453 pg_dumpall.c:575 +#: pg_dump.c:913 pg_restore.c:440 pg_dumpall.c:563 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" " -h, --host=ANFITRIÓN anfitrión de la base de datos o\n" " directorio del enchufe (socket)\n" -#: pg_dump.c:848 pg_restore.c:454 pg_dumpall.c:577 +#: pg_dump.c:914 pg_restore.c:441 pg_dumpall.c:565 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=PUERTO número del puerto de la base de datos\n" -#: pg_dump.c:849 pg_restore.c:455 pg_dumpall.c:578 +#: pg_dump.c:915 pg_restore.c:442 pg_dumpall.c:566 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=USUARIO nombre de usuario con el cual conectarse\n" -#: pg_dump.c:850 pg_restore.c:456 pg_dumpall.c:579 +#: pg_dump.c:916 pg_restore.c:443 pg_dumpall.c:567 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password nunca pedir una contraseña\n" -#: pg_dump.c:851 pg_restore.c:457 pg_dumpall.c:580 +#: pg_dump.c:917 pg_restore.c:444 pg_dumpall.c:568 #, c-format msgid "" " -W, --password force password prompt (should happen " @@ -370,7 +383,12 @@ msgstr "" " -W, --password fuerza un prompt para la contraseña\n" " (debería ser automático)\n" -#: pg_dump.c:853 +#: pg_dump.c:918 pg_dumpall.c:569 +#, c-format +msgid " --role=ROLENAME do SET ROLE before dump\n" +msgstr " --role=ROL ejecuta SET ROLE antes del volcado\n" + +#: pg_dump.c:920 #, c-format msgid "" "\n" @@ -383,52 +401,57 @@ msgstr "" "de la variable de ambiente PGDATABASE.\n" "\n" -#: pg_dump.c:855 pg_restore.c:460 pg_dumpall.c:584 +#: pg_dump.c:922 pg_restore.c:448 pg_dumpall.c:573 #, c-format msgid "Report bugs to .\n" msgstr "Reporta errores a .\n" -#: pg_dump.c:863 pg_backup_archiver.c:1401 +#: pg_dump.c:930 pg_backup_archiver.c:1462 msgid "*** aborted because of error\n" msgstr "*** se abortó a causa de un error\n" -#: pg_dump.c:884 +#: pg_dump.c:972 +#, c-format +msgid "invalid output format \"%s\" specified\n" +msgstr "el formato de salida especificado «%s» no es válido\n" + +#: pg_dump.c:995 msgid "server version must be at least 7.3 to use schema selection switches\n" msgstr "" "la versión del servidor debe ser al menos 7.3 para usar los parámetros de\n" "selección de esquema\n" -#: pg_dump.c:1122 +#: pg_dump.c:1267 #, c-format msgid "dumping contents of table %s\n" msgstr "extrayendo el contenido de la tabla %s\n" -#: pg_dump.c:1225 +#: pg_dump.c:1387 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" msgstr "" "Falló la extracción del contenido de la tabla «%s»: PQgetCopyData() falló.\n" -#: pg_dump.c:1226 pg_dump.c:12421 +#: pg_dump.c:1388 pg_dump.c:14482 #, c-format msgid "Error message from server: %s" msgstr "Mensaje de error del servidor: %s" -#: pg_dump.c:1227 pg_dump.c:12422 +#: pg_dump.c:1389 pg_dump.c:14483 #, c-format msgid "The command was: %s\n" msgstr "La orden era: %s\n" -#: pg_dump.c:1633 +#: pg_dump.c:1828 msgid "saving database definition\n" msgstr "salvando las definiciones de la base de datos\n" -#: pg_dump.c:1715 +#: pg_dump.c:1910 #, c-format msgid "missing pg_database entry for database \"%s\"\n" msgstr "falta la entrada para la base de datos «%s» en pg_database\n" -#: pg_dump.c:1722 +#: pg_dump.c:1917 #, c-format msgid "" "query returned more than one (%d) pg_database entry for database \"%s\"\n" @@ -436,107 +459,107 @@ msgstr "" "la consulta regresó más de un (%d) registro en pg_database\n" "para la base de datos «%s»\n" -#: pg_dump.c:1823 +#: pg_dump.c:2021 msgid "dumpDatabase(): could not find pg_largeobject.relfrozenxid\n" msgstr "dumpDatabase(): no se pudo encontrar pg_largeobject.relfrozenxid\n" -#: pg_dump.c:1900 +#: pg_dump.c:2060 +msgid "dumpDatabase(): could not find pg_largeobject_metadata.relfrozenxid\n" +msgstr "" +"dumpDatabase(): no se pudo encontrar pg_largeobject_metadata.relfrozenxid\n" + +#: pg_dump.c:2139 #, c-format msgid "saving encoding = %s\n" msgstr "salvando codificaciones = %s\n" -#: pg_dump.c:1927 +#: pg_dump.c:2166 #, c-format msgid "saving standard_conforming_strings = %s\n" msgstr "salvando standard_conforming_strings = %s\n" -#: pg_dump.c:1960 +#: pg_dump.c:2199 msgid "reading large objects\n" msgstr "leyendo objetos grandes\n" -#: pg_dump.c:2087 +#: pg_dump.c:2331 msgid "saving large objects\n" msgstr "salvando objetos grandes\n" -#: pg_dump.c:2129 pg_backup_archiver.c:946 +#: pg_dump.c:2373 pg_backup_archiver.c:988 #, c-format msgid "could not open large object %u: %s" msgstr "no se pudo abrir el objeto grande %u: %s" -#: pg_dump.c:2142 +#: pg_dump.c:2386 #, c-format msgid "error reading large object %u: %s" msgstr "error al leer el objeto grande %u: %s" -#: pg_dump.c:2189 pg_dump.c:2237 pg_dump.c:2299 pg_dump.c:6920 pg_dump.c:7123 -#: pg_dump.c:7939 pg_dump.c:8477 pg_dump.c:8727 pg_dump.c:8833 pg_dump.c:9218 -#: pg_dump.c:9394 pg_dump.c:9591 pg_dump.c:9818 pg_dump.c:9973 pg_dump.c:10160 -#: pg_dump.c:12227 +#: pg_dump.c:2617 #, c-format -msgid "query returned %d row instead of one: %s\n" -msgid_plural "query returned %d rows instead of one: %s\n" -msgstr[0] "la consulta regresó %d fila en lugar de una: %s\n" -msgstr[1] "la consulta regresó %d filas en lugar de una: %s\n" +msgid "could not find parent extension for %s" +msgstr "no se pudo encontrar la extensión padre para %s" -#: pg_dump.c:2444 +#: pg_dump.c:2723 #, c-format msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" msgstr "PRECAUCIÓN: el dueño del esquema «%s» parece no ser válido\n" -#: pg_dump.c:2479 +#: pg_dump.c:2767 #, c-format msgid "schema with OID %u does not exist\n" msgstr "el esquema con OID %u no existe\n" -#: pg_dump.c:2736 +#: pg_dump.c:3099 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" msgstr "PRECAUCIÓN: el dueño del tipo «%s» parece no ser válido\n" -#: pg_dump.c:2840 +#: pg_dump.c:3203 #, c-format msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" msgstr "PRECAUCIÓN: el dueño del operador «%s» parece no ser válido\n" -#: pg_dump.c:3014 +#: pg_dump.c:3455 #, c-format msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" msgstr "" "PRECAUCIÓN: el dueño de la clase de operadores «%s» parece no ser válido\n" -#: pg_dump.c:3101 +#: pg_dump.c:3542 #, c-format msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" msgstr "" "PRECAUCIÓN: el dueño de la familia de operadores «%s» parece no ser válido\n" -#: pg_dump.c:3226 +#: pg_dump.c:3679 #, c-format msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" msgstr "" "PRECAUCIÓN: el dueño de la función de agregación «%s» parece no ser válido\n" -#: pg_dump.c:3381 +#: pg_dump.c:3849 #, c-format msgid "WARNING: owner of function \"%s\" appears to be invalid\n" msgstr "PRECAUCIÓN: el dueño de la función «%s» parece no ser válido\n" -#: pg_dump.c:3814 +#: pg_dump.c:4349 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" msgstr "PRECAUCIÓN: el dueño de la tabla «%s» parece no ser válido\n" -#: pg_dump.c:3957 +#: pg_dump.c:4497 #, c-format msgid "reading indexes for table \"%s\"\n" msgstr "extrayendo los índices para la tabla «%s»\n" -#: pg_dump.c:4277 +#: pg_dump.c:4819 #, c-format msgid "reading foreign key constraints for table \"%s\"\n" msgstr "extrayendo restricciones de llave foránea para la tabla «%s»\n" -#: pg_dump.c:4509 +#: pg_dump.c:5051 #, c-format msgid "" "failed sanity check, parent table OID %u of pg_rewrite entry OID %u not " @@ -545,12 +568,12 @@ msgstr "" "falló la revisión de integridad: no se encontró la tabla padre OID %u del " "elemento con OID %u de pg_rewrite\n" -#: pg_dump.c:4593 +#: pg_dump.c:5135 #, c-format msgid "reading triggers for table \"%s\"\n" msgstr "extrayendo los disparadores (triggers) para la tabla «%s»\n" -#: pg_dump.c:4756 +#: pg_dump.c:5298 #, c-format msgid "" "query produced null referenced table name for foreign key trigger \"%s\" on " @@ -559,32 +582,32 @@ msgstr "" "la consulta produjo un nombre de tabla nulo para la llave foránea del \n" "disparador \"%s\" en la tabla «%s» (OID de la tabla: %u)\n" -#: pg_dump.c:5126 +#: pg_dump.c:5669 #, c-format msgid "finding the columns and types of table \"%s\"\n" msgstr "buscando las columnas y tipos de la tabla «%s»\n" -#: pg_dump.c:5245 +#: pg_dump.c:5815 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "numeración de columnas no válida en la tabla «%s»\n" -#: pg_dump.c:5281 +#: pg_dump.c:5850 #, c-format msgid "finding default expressions of table \"%s\"\n" msgstr "buscando expresiones por omisión de la tabla «%s»\n" -#: pg_dump.c:5366 +#: pg_dump.c:5903 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" msgstr "el valor de adnum %d para la tabla «%s» no es válido\n" -#: pg_dump.c:5384 +#: pg_dump.c:5976 #, c-format msgid "finding check constraints for table \"%s\"\n" msgstr "buscando restricciones de revisión (check) para la tabla «%s»\n" -#: pg_dump.c:5464 +#: pg_dump.c:6056 #, c-format msgid "expected %d check constraint on table \"%s\" but found %d\n" msgid_plural "expected %d check constraints on table \"%s\" but found %d\n" @@ -593,51 +616,46 @@ msgstr[0] "" msgstr[1] "" "se esperaban %d restricciones CHECK en la tabla «%s» pero se encontraron %d\n" -#: pg_dump.c:5468 +#: pg_dump.c:6060 msgid "(The system catalogs might be corrupted.)\n" msgstr "(Los catálogos del sistema podrían estar corruptos)\n" -#: pg_dump.c:7250 pg_dump.c:7357 -#, c-format -msgid "query returned no rows: %s\n" -msgstr "la consulta no regresó renglones: %s\n" - -#: pg_dump.c:7707 +#: pg_dump.c:8690 msgid "WARNING: bogus value in proargmodes array\n" msgstr "PRECAUCIÓN: valor no válido en el arreglo proargmodes\n" -#: pg_dump.c:8019 +#: pg_dump.c:9004 msgid "WARNING: could not parse proallargtypes array\n" msgstr "PRECAUCIÓN: no se pudo interpretar el arreglo proallargtypes\n" -#: pg_dump.c:8035 +#: pg_dump.c:9020 msgid "WARNING: could not parse proargmodes array\n" msgstr "PRECAUCIÓN: no se pudo interpretar el arreglo proargmodes\n" -#: pg_dump.c:8049 +#: pg_dump.c:9034 msgid "WARNING: could not parse proargnames array\n" msgstr "PRECAUCIÓN: no se pudo interpretar el arreglo proargnames\n" -#: pg_dump.c:8060 +#: pg_dump.c:9045 msgid "WARNING: could not parse proconfig array\n" msgstr "PRECAUCIÓN: no se pudo interpretar el arreglo proconfig\n" -#: pg_dump.c:8116 +#: pg_dump.c:9101 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "" "el valor del atributo «provolatile» para la función «%s» es desconocido\n" -#: pg_dump.c:8319 +#: pg_dump.c:9317 msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "PRECAUCIÓN: valor no válido en el campo pg_cast.castmethod\n" -#: pg_dump.c:8696 +#: pg_dump.c:9699 #, c-format msgid "WARNING: could not find operator with OID %s\n" msgstr "PRECAUCIÓN: no se pudo encontrar el operador con OID %s\n" -#: pg_dump.c:9617 +#: pg_dump.c:10818 #, c-format msgid "" "WARNING: aggregate function %s could not be dumped correctly for this " @@ -646,28 +664,28 @@ msgstr "" "PRECAUCIÓN: la función de agregación «%s» no se pudo extraer correctamente\n" "para esta versión de la base de datos; ignorada\n" -#: pg_dump.c:10345 +#: pg_dump.c:11622 #, c-format msgid "unknown object type (%d) in default privileges\n" msgstr "tipo de objeto desconocido (%d) en privilegios por omisión\n" -#: pg_dump.c:10362 +#: pg_dump.c:11639 #, c-format msgid "could not parse default ACL list (%s)\n" msgstr "no se pudo interpretar la lista de ACL (%s)\n" -#: pg_dump.c:10419 +#: pg_dump.c:11696 #, c-format msgid "could not parse ACL list (%s) for object \"%s\" (%s)\n" msgstr "no se pudo interpretar la lista de ACL (%s) para el objeto «%s» (%s)\n" -#: pg_dump.c:10562 +#: pg_dump.c:12142 #, c-format msgid "query to obtain definition of view \"%s\" returned no data\n" msgstr "" "la consulta para obtener la definición de la vista «%s» no regresó datos\n" -#: pg_dump.c:10565 +#: pg_dump.c:12145 #, c-format msgid "" "query to obtain definition of view \"%s\" returned more than one definition\n" @@ -675,44 +693,56 @@ msgstr "" "la consulta para obtener la definición de la vista «%s» regresó más de una " "definición\n" -#: pg_dump.c:10574 +#: pg_dump.c:12154 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)\n" msgstr "la definición de la vista «%s» parece estar vacía (tamaño cero)\n" -#: pg_dump.c:11050 +#: pg_dump.c:12205 +#, c-format +msgid "query returned %d foreign server entry for foreign table \"%s\"\n" +msgid_plural "" +"query returned %d foreign server entries for foreign table \"%s\"\n" +msgstr[0] "" +"la consulta retornó %d elemento de servidor foráneo para la tabla foránea " +"«%s»\n" +msgstr[1] "" +"la consulta retornó %d elementos de servidores foráneos para la tabla " +"foránea «%s»\n" + +#: pg_dump.c:12762 #, c-format msgid "invalid column number %d for table \"%s\"\n" msgstr "el número de columna %d no es válido para la tabla «%s»\n" -#: pg_dump.c:11158 +#: pg_dump.c:12878 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "falta un índice para restricción «%s»\n" -#: pg_dump.c:11346 +#: pg_dump.c:13066 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "tipo de restricción inesperado: %c\n" -#: pg_dump.c:11409 +#: pg_dump.c:13129 msgid "missing pg_database entry for this database\n" msgstr "falta la entrada en pg_database para esta base de datos\n" -#: pg_dump.c:11414 +#: pg_dump.c:13134 msgid "found more than one pg_database entry for this database\n" msgstr "" "se encontró más de una entrada en pg_database para esta base de datos\n" -#: pg_dump.c:11446 +#: pg_dump.c:13166 msgid "could not find entry for pg_indexes in pg_class\n" msgstr "no se pudo encontrar una entrada para pg_indexes en pg_class\n" -#: pg_dump.c:11451 +#: pg_dump.c:13171 msgid "found more than one entry for pg_indexes in pg_class\n" msgstr "se encontro más de una entrada para pg_indexes en la tabla pg_class\n" -#: pg_dump.c:11522 +#: pg_dump.c:13245 pg_dump.c:13410 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" msgid_plural "" @@ -724,21 +754,26 @@ msgstr[1] "" "la consulta para obtener los datos de la secuencia «%s» regresó %d entradas, " "pero se esperaba 1\n" -#: pg_dump.c:11533 +#: pg_dump.c:13256 #, c-format msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" msgstr "" -"la consulta para obtener los datos de la secuencia «%s» regresó el nombre «%" -"s»\n" +"la consulta para obtener los datos de la secuencia «%s» regresó el nombre " +"«%s»\n" + +#: pg_dump.c:13497 +#, c-format +msgid "unexpected tgtype value: %d\n" +msgstr "tgtype no esperado: %d\n" -#: pg_dump.c:11827 +#: pg_dump.c:13579 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" msgstr "" "argumento de cadena (%s) no válido para el disparador (trigger) «%s» en la " "tabla «%s»\n" -#: pg_dump.c:11943 +#: pg_dump.c:13697 #, c-format msgid "" "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows " @@ -747,176 +782,199 @@ msgstr "" "la consulta para obtener la regla «%s» asociada con la tabla «%s» falló: " "retornó un número incorrecto de renglones\n" -#: pg_dump.c:12038 +#: pg_dump.c:13988 msgid "reading dependency data\n" msgstr "obteniendo datos de dependencias\n" -#: pg_dump.c:12416 +#: pg_dump.c:14477 msgid "SQL command failed\n" msgstr "la orden SQL falló\n" -#: common.c:115 +#: common.c:107 msgid "reading schemas\n" msgstr "leyendo esquemas\n" -#: common.c:119 +#: common.c:118 +msgid "reading user-defined tables\n" +msgstr "leyendo las tablas definidas por el usuario\n" + +#: common.c:126 +msgid "reading extensions\n" +msgstr "leyendo las extensiones\n" + +#: common.c:130 msgid "reading user-defined functions\n" msgstr "leyendo las funciones definidas por el usuario\n" -#: common.c:125 +#: common.c:136 msgid "reading user-defined types\n" msgstr "leyendo los tipos definidos por el usuario\n" -#: common.c:131 +#: common.c:142 msgid "reading procedural languages\n" msgstr "leyendo los lenguajes procedurales\n" -#: common.c:135 +#: common.c:146 msgid "reading user-defined aggregate functions\n" msgstr "leyendo las funciones de agregación definidas por el usuario\n" -#: common.c:139 +#: common.c:150 msgid "reading user-defined operators\n" msgstr "leyendo los operadores definidos por el usuario\n" -#: common.c:144 +#: common.c:155 msgid "reading user-defined operator classes\n" msgstr "leyendo las clases de operadores definidos por el usuario\n" -#: common.c:148 +#: common.c:159 +msgid "reading user-defined operator families\n" +msgstr "leyendo las familias de operadores definidas por el usuario\n" + +#: common.c:163 msgid "reading user-defined text search parsers\n" msgstr "" "leyendo los procesadores (parsers) de búsqueda en texto definidos\n" "por el usuario\n" -#: common.c:152 +#: common.c:167 msgid "reading user-defined text search templates\n" msgstr "leyendo las plantillas de búsqueda en texto definidas por el usuario\n" -#: common.c:156 +#: common.c:171 msgid "reading user-defined text search dictionaries\n" msgstr "" "leyendo los diccionarios de búsqueda en texto definidos por el usuario\n" -#: common.c:160 +#: common.c:175 msgid "reading user-defined text search configurations\n" msgstr "" "leyendo las configuraciones de búsqueda en texto definidas por el usuario\n" -#: common.c:164 +#: common.c:179 msgid "reading user-defined foreign-data wrappers\n" msgstr "leyendo los conectores de datos externos definidos por el usuario\n" -#: common.c:168 +#: common.c:183 msgid "reading user-defined foreign servers\n" msgstr "leyendo los servidores foráneos definidas por el usuario\n" -#: common.c:172 +#: common.c:187 msgid "reading default privileges\n" msgstr "leyendo los privilegios por omisión\n" -#: common.c:176 -msgid "reading user-defined operator families\n" -msgstr "leyendo las familias de operadores definidas por el usuario\n" +#: common.c:191 +msgid "reading user-defined collations\n" +msgstr "leyendo los ordenamientos definidos por el usuario\n" -#: common.c:180 +#: common.c:196 msgid "reading user-defined conversions\n" msgstr "leyendo las conversiones definidas por el usuario\n" -#: common.c:184 -msgid "reading user-defined tables\n" -msgstr "leyendo las tablas definidas por el usuario\n" +#: common.c:200 +msgid "reading type casts\n" +msgstr "leyendo conversiones de tipo\n" -#: common.c:189 +#: common.c:204 msgid "reading table inheritance information\n" msgstr "leyendo la información de herencia de las tablas\n" -#: common.c:193 -msgid "reading rewrite rules\n" -msgstr "leyendo las reglas de reescritura\n" - -#: common.c:197 -msgid "reading type casts\n" -msgstr "leyendo conversiones de tipo\n" +#: common.c:213 +msgid "finding extension members\n" +msgstr "buscando miembros de extensión\n" -#: common.c:202 +#: common.c:218 msgid "finding inheritance relationships\n" msgstr "buscando relaciones de herencia\n" -#: common.c:206 +#: common.c:222 msgid "reading column info for interesting tables\n" msgstr "leyendo la información de columnas para las tablas interesantes\n" -#: common.c:210 +#: common.c:226 msgid "flagging inherited columns in subtables\n" msgstr "marcando las columnas heredadas en las subtablas\n" -#: common.c:214 +#: common.c:230 msgid "reading indexes\n" msgstr "leyendo los índices\n" -#: common.c:218 +#: common.c:234 msgid "reading constraints\n" msgstr "leyendo las restricciones\n" -#: common.c:222 +#: common.c:238 msgid "reading triggers\n" msgstr "leyendo los disparadores (triggers)\n" -#: common.c:802 +#: common.c:242 +msgid "reading rewrite rules\n" +msgstr "leyendo las reglas de reescritura\n" + +#: common.c:788 #, c-format msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n" msgstr "" "falló la revisión de integridad, el OID %u del padre de la tabla «%s»\n" "(OID %u) no se encontró\n" -#: common.c:844 +#: common.c:830 #, c-format msgid "could not parse numeric array \"%s\": too many numbers\n" msgstr "no se pudo interpretar el arreglo numérico «%s»: demasiados números\n" -#: common.c:859 +#: common.c:845 #, c-format msgid "could not parse numeric array \"%s\": invalid character in number\n" msgstr "" "no se pudo interpretar el arreglo numérico «%s»: carácter no válido en " "número\n" -#: common.c:972 +#: common.c:958 msgid "cannot duplicate null pointer\n" msgstr "no se puede duplicar un puntero nulo\n" -#: common.c:975 common.c:986 common.c:997 common.c:1008 -#: pg_backup_archiver.c:727 pg_backup_archiver.c:1103 -#: pg_backup_archiver.c:1234 pg_backup_archiver.c:1705 -#: pg_backup_archiver.c:1862 pg_backup_archiver.c:1908 -#: pg_backup_archiver.c:4048 pg_backup_custom.c:144 pg_backup_custom.c:149 -#: pg_backup_custom.c:155 pg_backup_custom.c:170 pg_backup_custom.c:570 -#: pg_backup_custom.c:1113 pg_backup_custom.c:1122 pg_backup_db.c:154 -#: pg_backup_db.c:164 pg_backup_db.c:212 pg_backup_db.c:256 pg_backup_db.c:271 -#: pg_backup_db.c:305 pg_backup_files.c:114 pg_backup_null.c:72 -#: pg_backup_tar.c:167 pg_backup_tar.c:1011 +#: common.c:961 common.c:972 common.c:983 common.c:994 +#: pg_backup_archiver.c:765 pg_backup_archiver.c:1164 +#: pg_backup_archiver.c:1295 pg_backup_archiver.c:1765 +#: pg_backup_archiver.c:1959 pg_backup_archiver.c:2005 +#: pg_backup_archiver.c:4266 pg_backup_custom.c:132 pg_backup_custom.c:139 +#: pg_backup_custom.c:780 pg_backup_custom.c:907 pg_backup_db.c:147 +#: pg_backup_db.c:157 pg_backup_db.c:205 pg_backup_db.c:249 pg_backup_db.c:264 +#: pg_backup_db.c:298 pg_backup_db.c:492 pg_backup_files.c:114 +#: pg_backup_null.c:72 pg_backup_tar.c:171 pg_backup_tar.c:1005 msgid "out of memory\n" msgstr "memoria agotada\n" -#: pg_backup_archiver.c:80 +#: pg_backup_archiver.c:88 msgid "archiver" msgstr "archivador" -#: pg_backup_archiver.c:195 pg_backup_archiver.c:1198 +#: pg_backup_archiver.c:208 pg_backup_archiver.c:1263 #, c-format msgid "could not close output file: %s\n" msgstr "no se pudo cerrar el archivo de salida: %s\n" -#: pg_backup_archiver.c:220 +#: pg_backup_archiver.c:234 msgid "-C and -c are incompatible options\n" msgstr "-C y -c son opciones incompatibles\n" -#: pg_backup_archiver.c:227 +#: pg_backup_archiver.c:241 msgid "-C and -1 are incompatible options\n" msgstr "-C y -1 son opciones incompatibles\n" -#: pg_backup_archiver.c:239 +#: pg_backup_archiver.c:251 +msgid "parallel restore is not supported with this archive file format\n" +msgstr "" +"la restauración en paralelo no está soportada con este formato de archivo\n" + +#: pg_backup_archiver.c:255 +msgid "" +"parallel restore is not supported with archives made by pre-8.0 pg_dump\n" +msgstr "" +"la restauración en paralelo no está soportada con archivos construidos con " +"pg_dump anterior a 8.0\n" + +#: pg_backup_archiver.c:274 msgid "" "cannot restore from compressed archive (compression not supported in this " "installation)\n" @@ -924,71 +982,71 @@ msgstr "" "no se puede reestablecer desde un archivo comprimido (la compresión no está " "soportada en esta instalación)\n" -#: pg_backup_archiver.c:249 +#: pg_backup_archiver.c:284 msgid "connecting to database for restore\n" msgstr "conectando a la base de datos para reestablecimiento\n" -#: pg_backup_archiver.c:251 +#: pg_backup_archiver.c:286 msgid "direct database connections are not supported in pre-1.3 archives\n" msgstr "" "las conexiones directas a la base de datos no están soportadas en\n" "archivadores pre-1.3\n" -#: pg_backup_archiver.c:293 +#: pg_backup_archiver.c:328 msgid "implied data-only restore\n" msgstr "asumiendo reestablecimiento de sólo datos\n" -#: pg_backup_archiver.c:344 +#: pg_backup_archiver.c:380 #, c-format msgid "dropping %s %s\n" msgstr "eliminando %s %s\n" -#: pg_backup_archiver.c:396 +#: pg_backup_archiver.c:432 #, c-format msgid "setting owner and privileges for %s %s\n" msgstr "estableciendo dueño y privilegios para %s %s\n" -#: pg_backup_archiver.c:454 pg_backup_archiver.c:456 +#: pg_backup_archiver.c:490 pg_backup_archiver.c:492 #, c-format msgid "warning from original dump file: %s\n" msgstr "precaución desde el archivo original: %s\n" -#: pg_backup_archiver.c:463 +#: pg_backup_archiver.c:499 #, c-format msgid "creating %s %s\n" msgstr "creando %s %s\n" -#: pg_backup_archiver.c:507 +#: pg_backup_archiver.c:543 #, c-format msgid "connecting to new database \"%s\"\n" msgstr "conectando a nueva base de datos «%s»\n" -#: pg_backup_archiver.c:535 +#: pg_backup_archiver.c:571 #, c-format msgid "restoring %s\n" msgstr "reestableciendo %s\n" -#: pg_backup_archiver.c:549 +#: pg_backup_archiver.c:585 #, c-format msgid "restoring data for table \"%s\"\n" msgstr "reestableciendo datos de la tabla «%s»\n" -#: pg_backup_archiver.c:609 +#: pg_backup_archiver.c:647 #, c-format msgid "executing %s %s\n" msgstr "ejecutando %s %s\n" -#: pg_backup_archiver.c:642 +#: pg_backup_archiver.c:680 #, c-format msgid "disabling triggers for %s\n" msgstr "deshabilitando disparadores (triggers) para %s\n" -#: pg_backup_archiver.c:668 +#: pg_backup_archiver.c:706 #, c-format msgid "enabling triggers for %s\n" msgstr "habilitando disparadores (triggers) para %s\n" -#: pg_backup_archiver.c:698 +#: pg_backup_archiver.c:736 msgid "" "internal error -- WriteData cannot be called outside the context of a " "DataDumper routine\n" @@ -996,61 +1054,61 @@ msgstr "" "error interno -- WriteData no puede ser llamada fuera del contexto\n" "de una rutina DataDumper\n" -#: pg_backup_archiver.c:854 +#: pg_backup_archiver.c:896 msgid "large-object output not supported in chosen format\n" msgstr "" "la extracción de objetos grandes no está soportada en el formato\n" "seleccionado\n" -#: pg_backup_archiver.c:908 +#: pg_backup_archiver.c:950 #, c-format msgid "restored %d large object\n" msgid_plural "restored %d large objects\n" msgstr[0] "se reestableció %d objeto grande\n" msgstr[1] "se reestablecieron %d objetos grandes\n" -#: pg_backup_archiver.c:929 +#: pg_backup_archiver.c:971 pg_backup_tar.c:723 #, c-format msgid "restoring large object with OID %u\n" msgstr "reestableciendo objeto grande con OID %u\n" -#: pg_backup_archiver.c:941 +#: pg_backup_archiver.c:983 #, c-format msgid "could not create large object %u: %s" msgstr "no se pudo crear el objeto grande %u: %s" -#: pg_backup_archiver.c:1006 +#: pg_backup_archiver.c:1045 #, c-format msgid "could not open TOC file \"%s\": %s\n" msgstr "no se pudo abrir el archivo TOC «%s»: %s\n" -#: pg_backup_archiver.c:1025 +#: pg_backup_archiver.c:1086 #, c-format msgid "WARNING: line ignored: %s\n" msgstr "PRECAUCIÓN: línea ignorada: %s\n" -#: pg_backup_archiver.c:1032 +#: pg_backup_archiver.c:1093 #, c-format msgid "could not find entry for ID %d\n" msgstr "no se pudo encontrar una entrada para el ID %d\n" -#: pg_backup_archiver.c:1053 pg_backup_files.c:172 pg_backup_files.c:457 +#: pg_backup_archiver.c:1114 pg_backup_files.c:172 pg_backup_files.c:457 #, c-format msgid "could not close TOC file: %s\n" msgstr "no se pudo cerrar el archivo TOC: %s\n" -#: pg_backup_archiver.c:1177 pg_backup_custom.c:181 pg_backup_files.c:130 +#: pg_backup_archiver.c:1233 pg_backup_custom.c:152 pg_backup_files.c:130 #: pg_backup_files.c:262 #, c-format msgid "could not open output file \"%s\": %s\n" msgstr "no se pudo abrir el archivo de salida «%s»: %s\n" -#: pg_backup_archiver.c:1180 pg_backup_custom.c:188 pg_backup_files.c:137 +#: pg_backup_archiver.c:1236 pg_backup_custom.c:159 pg_backup_files.c:137 #, c-format msgid "could not open output file: %s\n" msgstr "no se pudo abrir el archivo de salida: %s\n" -#: pg_backup_archiver.c:1277 +#: pg_backup_archiver.c:1338 #, c-format msgid "wrote %lu byte of large object data (result = %lu)\n" msgid_plural "wrote %lu bytes of large object data (result = %lu)\n" @@ -1059,143 +1117,156 @@ msgstr[0] "" msgstr[1] "" "se escribieron %lu bytes de los datos del objeto grande (resultado = %lu)\n" -#: pg_backup_archiver.c:1283 +#: pg_backup_archiver.c:1344 #, c-format msgid "could not write to large object (result: %lu, expected: %lu)\n" msgstr "" "no se pudo escribir al objecto grande (resultado: %lu, esperado: %lu)\n" -#: pg_backup_archiver.c:1341 pg_backup_archiver.c:1364 pg_backup_custom.c:781 -#: pg_backup_custom.c:1035 pg_backup_custom.c:1049 pg_backup_files.c:432 -#: pg_backup_tar.c:586 pg_backup_tar.c:1089 pg_backup_tar.c:1382 +#: pg_backup_archiver.c:1402 pg_backup_archiver.c:1425 pg_backup_custom.c:652 +#: pg_backup_files.c:432 pg_backup_tar.c:590 pg_backup_tar.c:1092 +#: pg_backup_tar.c:1385 #, c-format msgid "could not write to output file: %s\n" msgstr "no se pudo escribir al archivo de salida: %s\n" -#: pg_backup_archiver.c:1349 +#: pg_backup_archiver.c:1410 msgid "could not write to custom output routine\n" msgstr "no se pudo escribir a la rutina de salida personalizada\n" -#: pg_backup_archiver.c:1447 +#: pg_backup_archiver.c:1508 msgid "Error while INITIALIZING:\n" msgstr "Error durante INICIALIZACIÓN:\n" -#: pg_backup_archiver.c:1452 +#: pg_backup_archiver.c:1513 msgid "Error while PROCESSING TOC:\n" msgstr "Error durante PROCESAMIENTO DE TABLA DE CONTENIDOS:\n" -#: pg_backup_archiver.c:1457 +#: pg_backup_archiver.c:1518 msgid "Error while FINALIZING:\n" msgstr "Error durante FINALIZACIÓN:\n" -#: pg_backup_archiver.c:1462 +#: pg_backup_archiver.c:1523 #, c-format msgid "Error from TOC entry %d; %u %u %s %s %s\n" msgstr "Error en entrada de la tabla de contenidos %d; %u %u %s %s %s\n" -#: pg_backup_archiver.c:1598 +#: pg_backup_archiver.c:1658 #, c-format msgid "unexpected data offset flag %d\n" msgstr "bandera de posición inesperada %d\n" -#: pg_backup_archiver.c:1611 +#: pg_backup_archiver.c:1671 msgid "file offset in dump file is too large\n" msgstr "el posición en el archivo es demasiado grande\n" -#: pg_backup_archiver.c:1708 pg_backup_archiver.c:3009 pg_backup_custom.c:757 -#: pg_backup_files.c:419 pg_backup_tar.c:785 +#: pg_backup_archiver.c:1768 pg_backup_archiver.c:3170 pg_backup_custom.c:630 +#: pg_backup_files.c:419 pg_backup_tar.c:779 msgid "unexpected end of file\n" msgstr "fin inesperado de la entrada\n" -#: pg_backup_archiver.c:1725 +#: pg_backup_archiver.c:1785 msgid "attempting to ascertain archive format\n" msgstr "intentando comprobar el formato del archivador\n" -#: pg_backup_archiver.c:1741 pg_backup_custom.c:200 pg_backup_custom.c:888 +#: pg_backup_archiver.c:1811 pg_backup_archiver.c:1821 +#, c-format +msgid "directory name too long: \"%s\"\n" +msgstr "nombre de directorio demasiado largo: «%s»\n" + +#: pg_backup_archiver.c:1829 +#, c-format +msgid "" +"directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not " +"exist)\n" +msgstr "" +"el directorio «%s» no parece ser un archivador válido (no existe «toc.dat»)\n" + +#: pg_backup_archiver.c:1837 pg_backup_custom.c:171 pg_backup_custom.c:762 #: pg_backup_files.c:155 pg_backup_files.c:307 #, c-format msgid "could not open input file \"%s\": %s\n" msgstr "no se pudo abrir el archivo de entrada «%s»: %s\n" -#: pg_backup_archiver.c:1748 pg_backup_custom.c:207 pg_backup_files.c:162 +#: pg_backup_archiver.c:1845 pg_backup_custom.c:178 pg_backup_files.c:162 #, c-format msgid "could not open input file: %s\n" msgstr "no se pudo abrir el archivo de entrada: %s\n" -#: pg_backup_archiver.c:1757 +#: pg_backup_archiver.c:1854 #, c-format msgid "could not read input file: %s\n" msgstr "no se pudo leer el archivo de entrada: %s\n" -#: pg_backup_archiver.c:1759 +#: pg_backup_archiver.c:1856 #, c-format msgid "input file is too short (read %lu, expected 5)\n" msgstr "el archivo de entrada es demasiado corto (leidos %lu, esperados 5)\n" -#: pg_backup_archiver.c:1817 +#: pg_backup_archiver.c:1914 msgid "input file does not appear to be a valid archive (too short?)\n" msgstr "" "el archivo de entrada no parece ser un archivador válido (¿demasiado " "corto?)\n" -#: pg_backup_archiver.c:1820 +#: pg_backup_archiver.c:1917 msgid "input file does not appear to be a valid archive\n" msgstr "el archivo de entrada no parece ser un archivador válido\n" -#: pg_backup_archiver.c:1840 +#: pg_backup_archiver.c:1937 #, c-format msgid "could not close input file: %s\n" msgstr "no se pudo cerrar el archivo de entrada: %s\n" -#: pg_backup_archiver.c:1857 +#: pg_backup_archiver.c:1954 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "reservando AH para %s, formato %d\n" -#: pg_backup_archiver.c:1965 +#: pg_backup_archiver.c:2065 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "formato de archivo no reconocido «%d»\n" -#: pg_backup_archiver.c:2087 +#: pg_backup_archiver.c:2187 #, c-format msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" msgstr "" "la entrada con ID %d está fuera de rango -- tal vez\n" "la tabla de contenido está corrupta\n" -#: pg_backup_archiver.c:2203 +#: pg_backup_archiver.c:2303 #, c-format msgid "read TOC entry %d (ID %d) for %s %s\n" msgstr "leyendo entrada de la tabla de contenidos %d (ID %d) para %s %s\n" -#: pg_backup_archiver.c:2237 +#: pg_backup_archiver.c:2337 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "no se reconoce la codificación: «%s»\n" -#: pg_backup_archiver.c:2242 +#: pg_backup_archiver.c:2342 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "elemento ENCODING no válido: %s\n" -#: pg_backup_archiver.c:2260 +#: pg_backup_archiver.c:2360 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "elemento STDSTRINGS no válido: %s\n" -#: pg_backup_archiver.c:2452 +#: pg_backup_archiver.c:2558 #, c-format msgid "could not set session user to \"%s\": %s" msgstr "no se pudo establecer el usuario de sesión a «%s»: %s" -#: pg_backup_archiver.c:2790 pg_backup_archiver.c:2940 +#: pg_backup_archiver.c:2898 pg_backup_archiver.c:3080 #, c-format msgid "WARNING: don't know how to set owner for object type %s\n" msgstr "" "PRECAUCIÓN: no se sabe cómo establecer el dueño para el objeto de tipo %s\n" -#: pg_backup_archiver.c:2972 +#: pg_backup_archiver.c:3133 msgid "" "WARNING: requested compression not available in this installation -- archive " "will be uncompressed\n" @@ -1203,21 +1274,21 @@ msgstr "" "PRECAUCIÓN: la compresión solicitada no está soportada en esta\n" "instalación -- el archivador no será comprimido\n" -#: pg_backup_archiver.c:3012 +#: pg_backup_archiver.c:3173 msgid "did not find magic string in file header\n" msgstr "no se encontró la cadena mágica en el encabezado del archivo\n" -#: pg_backup_archiver.c:3025 +#: pg_backup_archiver.c:3186 #, c-format msgid "unsupported version (%d.%d) in file header\n" msgstr "versión no soportada (%d.%d) en el encabezado del archivo\n" -#: pg_backup_archiver.c:3030 +#: pg_backup_archiver.c:3191 #, c-format msgid "sanity check on integer size (%lu) failed\n" msgstr "revisión de integridad en el tamaño del entero (%lu) falló\n" -#: pg_backup_archiver.c:3034 +#: pg_backup_archiver.c:3195 msgid "" "WARNING: archive was made on a machine with larger integers, some operations " "might fail\n" @@ -1225,13 +1296,13 @@ msgstr "" "PRECAUCIÓN: el archivador fue hecho en una máquina con enteros más \n" "grandes, algunas operaciones podrían fallar\n" -#: pg_backup_archiver.c:3044 +#: pg_backup_archiver.c:3205 #, c-format msgid "expected format (%d) differs from format found in file (%d)\n" msgstr "" "el formato esperado (%d) difiere del formato encontrado en el archivo (%d)\n" -#: pg_backup_archiver.c:3060 +#: pg_backup_archiver.c:3221 msgid "" "WARNING: archive is compressed, but this installation does not support " "compression -- no data will be available\n" @@ -1239,125 +1310,113 @@ msgstr "" "PRECAUCIÓN: el archivador está comprimido, pero esta instalación no soporta\n" "compresión -- no habrá datos disponibles\n" -#: pg_backup_archiver.c:3078 +#: pg_backup_archiver.c:3239 msgid "WARNING: invalid creation date in header\n" msgstr "PRECAUCIÓN: la fecha de creación en el encabezado no es válida\n" -#: pg_backup_archiver.c:3175 +#: pg_backup_archiver.c:3337 msgid "entering restore_toc_entries_parallel\n" msgstr "ingresando restore_toc_entries_parallel\n" -#: pg_backup_archiver.c:3179 -msgid "parallel restore is not supported with this archive file format\n" -msgstr "" -"la restauración en paralelo no está soportada con este formato de archivo\n" - -#: pg_backup_archiver.c:3183 -msgid "" -"parallel restore is not supported with archives made by pre-8.0 pg_dump\n" -msgstr "" -"la restauración en paralelo no está soportada con archivos construidos con " -"pg_dump anterior a 8.0\n" - -#: pg_backup_archiver.c:3205 +#: pg_backup_archiver.c:3378 #, c-format msgid "processing item %d %s %s\n" msgstr "procesando el elemento %d %s %s\n" -#: pg_backup_archiver.c:3266 +#: pg_backup_archiver.c:3454 msgid "entering main parallel loop\n" msgstr "ingresando al bucle paralelo principal\n" -#: pg_backup_archiver.c:3280 +#: pg_backup_archiver.c:3468 #, c-format msgid "skipping item %d %s %s\n" msgstr "saltando el elemento %d %s %s\n" -#: pg_backup_archiver.c:3296 +#: pg_backup_archiver.c:3484 #, c-format msgid "launching item %d %s %s\n" msgstr "lanzando el elemento %d %s %s\n" -#: pg_backup_archiver.c:3333 +#: pg_backup_archiver.c:3521 #, c-format msgid "worker process crashed: status %d\n" msgstr "un proceso hijo murió: estado %d\n" -#: pg_backup_archiver.c:3338 +#: pg_backup_archiver.c:3526 msgid "finished main parallel loop\n" msgstr "terminó el bucle paralelo principal\n" -#: pg_backup_archiver.c:3356 +#: pg_backup_archiver.c:3544 #, c-format msgid "processing missed item %d %s %s\n" msgstr "procesando el elemento saltado %d %s %s\n" -#: pg_backup_archiver.c:3382 +#: pg_backup_archiver.c:3570 msgid "parallel_restore should not return\n" -msgstr "parallel_restore should not return\n" +msgstr "parallel_restore no debería retornar\n" -#: pg_backup_archiver.c:3388 +#: pg_backup_archiver.c:3576 #, c-format msgid "could not create worker process: %s\n" msgstr "no se pudo crear el proceso hijo: %s\n" -#: pg_backup_archiver.c:3396 +#: pg_backup_archiver.c:3584 #, c-format msgid "could not create worker thread: %s\n" msgstr "no se pudo crear el hilo: %s\n" -#: pg_backup_archiver.c:3620 +#: pg_backup_archiver.c:3808 msgid "no item ready\n" msgstr "ningún elemento listo\n" -#: pg_backup_archiver.c:3715 +#: pg_backup_archiver.c:3903 msgid "could not find slot of finished worker\n" msgstr "no se pudo localizar la entrada del proceso o hilo que terminó\n" -#: pg_backup_archiver.c:3717 +#: pg_backup_archiver.c:3905 #, c-format msgid "finished item %d %s %s\n" msgstr "terminó el elemento %d %s %s\n" -#: pg_backup_archiver.c:3730 +#: pg_backup_archiver.c:3918 #, c-format msgid "worker process failed: exit code %d\n" msgstr "el proceso hijo falló: código de salida %d\n" -#: pg_backup_archiver.c:3882 +#: pg_backup_archiver.c:4114 #, c-format msgid "transferring dependency %d -> %d to %d\n" msgstr "transferiendo la dependencia %d -> %d a %d\n" -#: pg_backup_archiver.c:3956 +#: pg_backup_archiver.c:4183 #, c-format msgid "reducing dependencies for %d\n" msgstr "reduciendo las dependencias para %d\n" -#: pg_backup_archiver.c:4014 +#: pg_backup_archiver.c:4232 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "la tabla «%s» no pudo ser creada, no se recuperarán sus datos\n" -#: pg_backup_custom.c:97 +#: pg_backup_custom.c:87 msgid "custom archiver" msgstr "archivador personalizado" -#: pg_backup_custom.c:405 pg_backup_null.c:153 +#: pg_backup_custom.c:373 pg_backup_null.c:153 msgid "invalid OID for large object\n" msgstr "OID no válido para objeto grande\n" -#: pg_backup_custom.c:471 +#: pg_backup_custom.c:444 #, c-format msgid "unrecognized data block type (%d) while searching archive\n" msgstr "tipo de bloque de datos (%d) no conocido al buscar en el archivador\n" -#: pg_backup_custom.c:482 +#: pg_backup_custom.c:455 #, c-format msgid "error during file seek: %s\n" msgstr "error durante el posicionamiento (seek) en el archivo: %s\n" -#: pg_backup_custom.c:492 +#: pg_backup_custom.c:465 #, c-format msgid "" "could not find block ID %d in archive -- possibly due to out-of-order " @@ -1368,7 +1427,7 @@ msgstr "" "una petición de restauración fuera de orden, la que no puede ser satisfecha " "debido a la falta de información de posicionamiento en el archivo\n" -#: pg_backup_custom.c:497 +#: pg_backup_custom.c:470 #, c-format msgid "" "could not find block ID %d in archive -- possibly due to out-of-order " @@ -1378,175 +1437,156 @@ msgstr "" "una petición de restauración fuera de orden, la que no puede ser completada " "debido a que en el archivo de entrada no es reposicionable (seekable)\n" -#: pg_backup_custom.c:502 +#: pg_backup_custom.c:475 #, c-format msgid "could not find block ID %d in archive -- possibly corrupt archive\n" msgstr "" "no se pudo encontrar el bloque con ID %d en archivo -- posiblemente el " "archivo está corrupto\n" -#: pg_backup_custom.c:509 +#: pg_backup_custom.c:482 #, c-format msgid "found unexpected block ID (%d) when reading data -- expected %d\n" msgstr "" "se encontró un bloque no esperado ID (%d) mientras se leían los\n" "datos -- se esperaba %d\n" -#: pg_backup_custom.c:523 +#: pg_backup_custom.c:496 #, c-format msgid "unrecognized data block type %d while restoring archive\n" msgstr "" "se encontró un bloque tipo %d no reconocido al restablecer el archivador\n" -#: pg_backup_custom.c:557 pg_backup_custom.c:985 -#, c-format -msgid "could not initialize compression library: %s\n" -msgstr "no se pudo inicializar la biblioteca de compresión: %s\n" - -#: pg_backup_custom.c:581 pg_backup_custom.c:705 +#: pg_backup_custom.c:578 pg_backup_custom.c:916 msgid "could not read from input file: end of file\n" msgstr "no se pudo leer desde el archivo de entrada: fin de archivo\n" -#: pg_backup_custom.c:584 pg_backup_custom.c:708 +#: pg_backup_custom.c:581 pg_backup_custom.c:919 #, c-format msgid "could not read from input file: %s\n" msgstr "no se pudo leer el archivo de entrada: %s\n" -#: pg_backup_custom.c:601 pg_backup_custom.c:628 -#, c-format -msgid "could not uncompress data: %s\n" -msgstr "no se pudo descomprimir datos: %s\n" - -#: pg_backup_custom.c:634 -#, c-format -msgid "could not close compression library: %s\n" -msgstr "no se pudo cerrar la biblioteca de compresión: %s\n" - -#: pg_backup_custom.c:736 +#: pg_backup_custom.c:610 #, c-format msgid "could not write byte: %s\n" msgstr "no se pudo escribir byte: %s\n" -#: pg_backup_custom.c:849 pg_backup_custom.c:882 +#: pg_backup_custom.c:718 pg_backup_custom.c:756 #, c-format msgid "could not close archive file: %s\n" msgstr "no se pudo cerrar el archivo del archivador: %s\n" -#: pg_backup_custom.c:868 +#: pg_backup_custom.c:737 msgid "can only reopen input archives\n" msgstr "sólo se pueden reabrir archivos de entrada\n" -#: pg_backup_custom.c:870 -msgid "cannot reopen stdin\n" -msgstr "no se puede reabrir stdin\n" +#: pg_backup_custom.c:744 +msgid "parallel restore from stdin is not supported\n" +msgstr "la restauración en paralelo desde stdin no está soportada\n" -#: pg_backup_custom.c:872 -msgid "cannot reopen non-seekable file\n" -msgstr "no se puede reabrir un archivo no posicionable (seekable)\n" +#: pg_backup_custom.c:746 +msgid "parallel restore from non-seekable file is not supported\n" +msgstr "" +"la restauración en paralelo desde un archivo no posicionable no está " +"soportada\n" -#: pg_backup_custom.c:877 +#: pg_backup_custom.c:751 #, c-format msgid "could not determine seek position in archive file: %s\n" msgstr "" "no se pudo determinar la posición (seek) en el archivo del archivador: %s\n" -#: pg_backup_custom.c:892 +#: pg_backup_custom.c:766 #, c-format msgid "could not set seek position in archive file: %s\n" msgstr "no se pudo posicionar (seek) en el archivo del archivador: %s\n" -#: pg_backup_custom.c:914 +#: pg_backup_custom.c:786 +msgid "compressor active\n" +msgstr "compresor activo\n" + +#: pg_backup_custom.c:822 msgid "WARNING: ftell mismatch with expected position -- ftell used\n" msgstr "ATENCIÓN: ftell no coincide con la posición esperada -- se usó ftell\n" -#: pg_backup_custom.c:1016 -#, c-format -msgid "could not compress data: %s\n" -msgstr "no se pudo comprimir los datos: %s\n" - -#: pg_backup_custom.c:1094 -#, c-format -msgid "could not close compression stream: %s\n" -msgstr "no se pudo cerrar el flujo de compresión: %s\n" - #: pg_backup_db.c:25 msgid "archiver (db)" msgstr "archivador (bd)" -#: pg_backup_db.c:61 +#: pg_backup_db.c:54 msgid "could not get server_version from libpq\n" msgstr "no se pudo obtener server_version desde libpq\n" -#: pg_backup_db.c:74 pg_dumpall.c:1726 +#: pg_backup_db.c:67 pg_dumpall.c:1754 #, c-format msgid "server version: %s; %s version: %s\n" msgstr "versión del servidor: %s; versión de %s: %s\n" -#: pg_backup_db.c:76 pg_dumpall.c:1728 +#: pg_backup_db.c:69 pg_dumpall.c:1756 #, c-format msgid "aborting because of server version mismatch\n" msgstr "abortando debido a que no coincide la versión del servidor\n" -#: pg_backup_db.c:147 +#: pg_backup_db.c:140 #, c-format msgid "connecting to database \"%s\" as user \"%s\"\n" msgstr "conectandose a la base de datos \"%s\" como el usuario «%s»\n" -#: pg_backup_db.c:152 pg_backup_db.c:207 pg_backup_db.c:254 pg_backup_db.c:303 -#: pg_dumpall.c:1622 pg_dumpall.c:1674 +#: pg_backup_db.c:145 pg_backup_db.c:200 pg_backup_db.c:247 pg_backup_db.c:296 +#: pg_dumpall.c:1650 pg_dumpall.c:1702 msgid "Password: " msgstr "Contraseña: " -#: pg_backup_db.c:188 +#: pg_backup_db.c:181 msgid "failed to reconnect to database\n" msgstr "falló la reconexión a la base de datos\n" -#: pg_backup_db.c:193 +#: pg_backup_db.c:186 #, c-format msgid "could not reconnect to database: %s" msgstr "no se pudo hacer la reconexión a la base de datos: %s" -#: pg_backup_db.c:209 +#: pg_backup_db.c:202 msgid "connection needs password\n" msgstr "la conexión necesita contraseña\n" -#: pg_backup_db.c:250 +#: pg_backup_db.c:243 msgid "already connected to a database\n" msgstr "ya está conectado a una base de datos\n" -#: pg_backup_db.c:295 +#: pg_backup_db.c:288 msgid "failed to connect to database\n" msgstr "falló la conexión a la base de datos\n" -#: pg_backup_db.c:314 +#: pg_backup_db.c:307 #, c-format msgid "connection to database \"%s\" failed: %s" msgstr "falló la conexión a la base de datos «%s»: %s" -#: pg_backup_db.c:329 +#: pg_backup_db.c:323 #, c-format msgid "%s" msgstr "%s" -#: pg_backup_db.c:441 +#: pg_backup_db.c:415 pg_backup_db.c:486 pg_backup_db.c:495 +msgid "could not execute query" +msgstr "no se pudo ejecutar la consulta" + +#: pg_backup_db.c:466 #, c-format msgid "error returned by PQputCopyData: %s" msgstr "PQputCopyData regresó un error: %s" -#: pg_backup_db.c:451 +#: pg_backup_db.c:514 #, c-format msgid "error returned by PQputCopyEnd: %s" msgstr "PQputCopyEnd regresó un error: %s" -#: pg_backup_db.c:498 -msgid "could not execute query" -msgstr "no se pudo ejecutar la consulta" - -#: pg_backup_db.c:696 +#: pg_backup_db.c:531 msgid "could not start database transaction" msgstr "no se pudo iniciar la transacción en la base de datos" -#: pg_backup_db.c:702 +#: pg_backup_db.c:537 msgid "could not commit database transaction" msgstr "no se pudo terminar la transacción a la base de datos" @@ -1596,7 +1636,7 @@ msgstr "" "no se pudo abrir la tabla de contenido de los objetos grandes\n" "para su escritura: %s\n" -#: pg_backup_files.c:510 pg_backup_tar.c:935 +#: pg_backup_files.c:510 pg_backup_tar.c:929 #, c-format msgid "invalid OID for large object (%u)\n" msgstr "el OID del objeto grande no es válido (%u)\n" @@ -1615,121 +1655,106 @@ msgstr "no se pudo cerrar el archivo del objeto grande\n" msgid "this format cannot be read\n" msgstr "no se puede leer este formato\n" -#: pg_backup_tar.c:101 +#: pg_backup_tar.c:105 msgid "tar archiver" msgstr "archivador tar" -#: pg_backup_tar.c:179 +#: pg_backup_tar.c:183 #, c-format msgid "could not open TOC file \"%s\" for output: %s\n" msgstr "" "no se pudo abrir el archivo de tabla de contenido «%s» para escribir: %s\n" -#: pg_backup_tar.c:187 +#: pg_backup_tar.c:191 #, c-format msgid "could not open TOC file for output: %s\n" msgstr "no se pudo abrir la tabla de contenido para escribir: %s\n" -#: pg_backup_tar.c:214 pg_backup_tar.c:370 +#: pg_backup_tar.c:218 pg_backup_tar.c:374 msgid "compression is not supported by tar archive format\n" msgstr "la compresión no está soportada por el formato de salida tar\n" -#: pg_backup_tar.c:222 +#: pg_backup_tar.c:226 #, c-format msgid "could not open TOC file \"%s\" for input: %s\n" msgstr "no se pudo abrir el archivo de tabla de contenido «%s» para leer: %s\n" -#: pg_backup_tar.c:229 +#: pg_backup_tar.c:233 #, c-format msgid "could not open TOC file for input: %s\n" msgstr "no se pudo abrir la tabla de contenido para leer: %s\n" -#: pg_backup_tar.c:356 +#: pg_backup_tar.c:360 #, c-format msgid "could not find file \"%s\" in archive\n" msgstr "no se pudo encontrar el archivo «%s» en el archivador\n" -#: pg_backup_tar.c:412 +#: pg_backup_tar.c:416 #, c-format msgid "could not generate temporary file name: %s\n" msgstr "no se pudo generar el nombre de archivo temporal: %s\n" -#: pg_backup_tar.c:421 +#: pg_backup_tar.c:425 msgid "could not open temporary file\n" msgstr "no se pudo abrir archivo temporal\n" -#: pg_backup_tar.c:448 +#: pg_backup_tar.c:452 msgid "could not close tar member\n" msgstr "no se pudo cerrar miembro del archivo tar\n" -#: pg_backup_tar.c:548 +#: pg_backup_tar.c:552 msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" msgstr "error interno --- no se especificó th ni fh en tarReadRaw()\n" -#: pg_backup_tar.c:674 -#, c-format -msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n" -msgstr "" -"sentencia COPY no válida -- no se pudo encontrar «copy» en la cadena «%s»\n" - -#: pg_backup_tar.c:692 +#: pg_backup_tar.c:678 #, c-format -msgid "" -"invalid COPY statement -- could not find \"from stdin\" in string \"%s\" " -"starting at position %lu\n" -msgstr "" -"sentencia COPY no válida -- no se pudo encontrar «from stdin» en la cadena «%" -"s» empezando en la posición %lu\n" +msgid "unexpected COPY statement syntax: \"%s\"\n" +msgstr "sintaxis de sentencia COPY inesperada: «%s»\n" -#: pg_backup_tar.c:729 -#, c-format -msgid "restoring large object OID %u\n" -msgstr "reestableciendo objeto grande con OID %u\n" - -#: pg_backup_tar.c:880 +#: pg_backup_tar.c:874 msgid "could not write null block at end of tar archive\n" msgstr "no se pudo escribir un bloque nulo al final del archivo tar\n" -#: pg_backup_tar.c:1080 +#: pg_backup_tar.c:1083 msgid "archive member too large for tar format\n" msgstr "el miembro de archivador es demasiado grande para el formato tar\n" -#: pg_backup_tar.c:1095 +#: pg_backup_tar.c:1098 #, c-format msgid "could not close temporary file: %s\n" msgstr "no se pudo abrir archivo temporal: %s\n" -#: pg_backup_tar.c:1105 +#: pg_backup_tar.c:1108 #, c-format msgid "actual file length (%s) does not match expected (%s)\n" msgstr "el tamaño real del archivo (%s) no coincide con el esperado (%s)\n" -#: pg_backup_tar.c:1113 +#: pg_backup_tar.c:1116 msgid "could not output padding at end of tar member\n" msgstr "no se pudo rellenar la salida al final del miembro del archivo tar\n" -#: pg_backup_tar.c:1142 +#: pg_backup_tar.c:1145 #, c-format msgid "moving from position %s to next member at file position %s\n" msgstr "moviendo desde la posición %s a la posición del siguiente miembro %s\n" -#: pg_backup_tar.c:1153 +#: pg_backup_tar.c:1156 #, c-format msgid "now at file position %s\n" msgstr "ahora en la posición del archivo %s\n" -#: pg_backup_tar.c:1162 pg_backup_tar.c:1192 +#: pg_backup_tar.c:1165 pg_backup_tar.c:1195 #, c-format msgid "could not find header for file \"%s\" in tar archive\n" msgstr "" "no se pudo encontrar el encabezado para el archivo «%s» en el archivo tar\n" -#: pg_backup_tar.c:1176 +#: pg_backup_tar.c:1179 #, c-format msgid "skipping tar member %s\n" msgstr "saltando miembro del archivo tar %s\n" -#: pg_backup_tar.c:1180 +#: pg_backup_tar.c:1183 #, c-format msgid "" "restoring data out of order is not supported in this archive format: \"%s\" " @@ -1738,26 +1763,26 @@ msgstr "" "la extracción de datos fuera de orden no está soportada en este formato:\n" "se requiere «%s», pero viene antes de «%s» en el archivador.\n" -#: pg_backup_tar.c:1226 +#: pg_backup_tar.c:1229 #, c-format msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n" msgstr "" -"no hay coincidencia en la posición real del archivo con la que se predijo (%" -"s vs %s)\n" +"no hay coincidencia en la posición real del archivo con la que se predijo " +"(%s vs %s)\n" -#: pg_backup_tar.c:1241 +#: pg_backup_tar.c:1244 #, c-format msgid "incomplete tar header found (%lu byte)\n" msgid_plural "incomplete tar header found (%lu bytes)\n" msgstr[0] "se encontró un encabezado incompleto (%lu byte)\n" msgstr[1] "se encontró un encabezado incompleto (%lu bytes)\n" -#: pg_backup_tar.c:1279 +#: pg_backup_tar.c:1282 #, c-format msgid "TOC Entry %s at %s (length %lu, checksum %d)\n" msgstr "entrada TOC %s en %s (tamaño %lu, suma de integridad %d)\n" -#: pg_backup_tar.c:1289 +#: pg_backup_tar.c:1292 #, c-format msgid "" "corrupt tar header found in %s (expected %d, computed %d) file position %s\n" @@ -1765,28 +1790,30 @@ msgstr "" "se encontró un encabezado corrupto en %s (esperado %d, calculado %d)\n" "en la posición %s\n" -#: pg_restore.c:319 +#: pg_restore.c:300 #, c-format msgid "%s: options -d/--dbname and -f/--file cannot be used together\n" msgstr "%s: las opciones -d/--dbname y -f/--file no pueden usarse juntas\n" -#: pg_restore.c:331 +#: pg_restore.c:312 #, c-format msgid "%s: cannot specify both --single-transaction and multiple jobs\n" msgstr "" "%s: no se puede especificar --single-transaction junto con múltiples tareas\n" -#: pg_restore.c:361 +#: pg_restore.c:348 #, c-format -msgid "unrecognized archive format \"%s\"; please specify \"c\" or \"t\"\n" -msgstr "formato de archivo «%s» no reconocido; por favor especifique «c» o «t»\n" +msgid "" +"unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"\n" +msgstr "" +"formato de archivo «%s» no reconocido; por favor especifique «c», «d» o «t»\n" -#: pg_restore.c:395 +#: pg_restore.c:382 #, c-format msgid "WARNING: errors ignored on restore: %d\n" msgstr "PRECAUCIÓN: errores ignorados durante la recuperación: %d\n" -#: pg_restore.c:409 +#: pg_restore.c:396 #, c-format msgid "" "%s restores a PostgreSQL database from an archive created by pg_dump.\n" @@ -1795,52 +1822,52 @@ msgstr "" "%s reestablece una base de datos de PostgreSQL usando un archivo\n" "creado por pg_dump.\n" -#: pg_restore.c:411 +#: pg_restore.c:398 #, c-format msgid " %s [OPTION]... [FILE]\n" msgstr " %s [OPCIÓN]... [ARCHIVO]\n" -#: pg_restore.c:414 +#: pg_restore.c:401 #, c-format msgid " -d, --dbname=NAME connect to database name\n" msgstr "" " -d, --dbname=NOMBRE nombre de la base de datos a la que conectarse\n" -#: pg_restore.c:415 +#: pg_restore.c:402 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=ARCHIVO nombre del archivo de salida\n" -#: pg_restore.c:416 +#: pg_restore.c:403 #, c-format -msgid " -F, --format=c|t backup file format (should be automatic)\n" +msgid " -F, --format=c|d|t backup file format (should be automatic)\n" msgstr "" -" -F, --format=c|t formato del volcado (debería ser automático)\n" +" -F, --format=c|d|t formato del volcado (debería ser automático)\n" -#: pg_restore.c:417 +#: pg_restore.c:404 #, c-format msgid " -l, --list print summarized TOC of the archive\n" msgstr "" " -l, --list imprime una tabla resumida de contenidos\n" " del archivador\n" -#: pg_restore.c:418 +#: pg_restore.c:405 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose modo verboso\n" -#: pg_restore.c:419 +#: pg_restore.c:406 #, c-format msgid " --help show this help, then exit\n" msgstr " --help muestra esta ayuda y termina\n" -#: pg_restore.c:420 +#: pg_restore.c:407 #, c-format msgid " --version output version information, then exit\n" msgstr "" " --version muestra información de la versión y termina\n" -#: pg_restore.c:422 +#: pg_restore.c:409 #, c-format msgid "" "\n" @@ -1849,42 +1876,42 @@ msgstr "" "\n" "Opciones que controlan la recuperación:\n" -#: pg_restore.c:423 +#: pg_restore.c:410 #, c-format msgid " -a, --data-only restore only the data, no schema\n" msgstr " -a, --data-only reestablece sólo los datos, no el esquema\n" -#: pg_restore.c:424 +#: pg_restore.c:411 #, c-format msgid "" " -c, --clean clean (drop) database objects before recreating\n" msgstr "" " -c, --clean tira (drop) la base de datos antes de recrearla\n" -#: pg_restore.c:425 +#: pg_restore.c:412 #, c-format msgid " -C, --create create the target database\n" msgstr " -C, --create crea la base de datos de destino\n" -#: pg_restore.c:426 +#: pg_restore.c:413 #, c-format msgid " -e, --exit-on-error exit on error, default is to continue\n" msgstr "" " -e, --exit-on-error abandonar al encontrar un error\n" " por omisión, se continúa la restauración\n" -#: pg_restore.c:427 +#: pg_restore.c:414 #, c-format msgid " -I, --index=NAME restore named index\n" msgstr " -I, --index=NOMBRE reestablece el índice nombrado\n" -#: pg_restore.c:428 +#: pg_restore.c:415 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to restore\n" msgstr "" " -j, --jobs=NUM máximo de procesos paralelos para restaurar\n" -#: pg_restore.c:429 +#: pg_restore.c:416 #, c-format msgid "" " -L, --use-list=FILENAME use table of contents from this file for\n" @@ -1894,18 +1921,18 @@ msgstr "" "ordenar\n" " la salida de este archivo\n" -#: pg_restore.c:431 +#: pg_restore.c:418 #, c-format msgid " -n, --schema=NAME restore only objects in this schema\n" msgstr "" " -n, --schema=NAME reestablece sólo los objetos en este esquema\n" -#: pg_restore.c:432 +#: pg_restore.c:419 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr " -O, --no-owner no reestablece los dueños de los objetos\n" -#: pg_restore.c:433 +#: pg_restore.c:420 #, c-format msgid "" " -P, --function=NAME(args)\n" @@ -1914,13 +1941,13 @@ msgstr "" " -P, --function=NOMBRE(args)\n" " reestablece la función nombrada\n" -#: pg_restore.c:435 +#: pg_restore.c:422 #, c-format msgid " -s, --schema-only restore only the schema, no data\n" msgstr "" " -s, --schema-only reestablece el esquema únicamente, no los datos\n" -#: pg_restore.c:436 +#: pg_restore.c:423 #, c-format msgid "" " -S, --superuser=NAME superuser user name to use for disabling " @@ -1929,18 +1956,18 @@ msgstr "" " -S, --superuser=NOMBRE especifica el nombre del superusuario que se usa\n" " para deshabilitar los disparadores (triggers)\n" -#: pg_restore.c:437 +#: pg_restore.c:424 #, c-format msgid " -t, --table=NAME restore named table\n" msgstr " -t, --table=NOMBRE reestablece la tabla nombrada\n" -#: pg_restore.c:438 +#: pg_restore.c:425 #, c-format msgid " -T, --trigger=NAME restore named trigger\n" msgstr "" " -T, --trigger=NOMBRE reestablece el disparador (trigger) nombrado\n" -#: pg_restore.c:439 +#: pg_restore.c:426 #, c-format msgid "" " -x, --no-privileges skip restoration of access privileges (grant/" @@ -1948,7 +1975,14 @@ msgid "" msgstr "" " -x, --no-privileges no reestablece los privilegios (grant/revoke)\n" -#: pg_restore.c:440 +#: pg_restore.c:427 +#, c-format +msgid "" +" -1, --single-transaction\n" +" restore as a single transaction\n" +msgstr " -1, --single-transaction reestablece en una única transacción\n" + +#: pg_restore.c:429 #, c-format msgid " --disable-triggers disable triggers during data-only restore\n" msgstr "" @@ -1956,7 +1990,7 @@ msgstr "" "el\n" " restablecimiento sólo de datos\n" -#: pg_restore.c:441 +#: pg_restore.c:430 #, c-format msgid "" " --no-data-for-failed-tables\n" @@ -1967,17 +2001,17 @@ msgstr "" " no reestablece datos de tablas que no pudieron\n" " ser creadas\n" -#: pg_restore.c:444 +#: pg_restore.c:433 +#, c-format +msgid " --no-security-labels do not restore security labels\n" +msgstr " --no-security-labels no restaura etiquetas de seguridad\n" + +#: pg_restore.c:434 #, c-format msgid " --no-tablespaces do not restore tablespace assignments\n" msgstr " --no-tablespaces no vuelca asignaciones de tablespace\n" -#: pg_restore.c:445 -#, c-format -msgid " --role=ROLENAME do SET ROLE before restore\n" -msgstr " --role=ROLENAME hace SET ROLE antes de restaurar\n" - -#: pg_restore.c:446 +#: pg_restore.c:435 #, c-format msgid "" " --use-set-session-authorization\n" @@ -1990,14 +2024,12 @@ msgstr "" "de\n" " ALTER OWNER para reestablecer dueños\n" -#: pg_restore.c:449 +#: pg_restore.c:445 #, c-format -msgid "" -" -1, --single-transaction\n" -" restore as a single transaction\n" -msgstr " -1, --single-transaction reestablece en una única transacción\n" +msgid " --role=ROLENAME do SET ROLE before restore\n" +msgstr " --role=ROLENAME hace SET ROLE antes de restaurar\n" -#: pg_restore.c:459 +#: pg_restore.c:447 #, c-format msgid "" "\n" @@ -2008,7 +2040,7 @@ msgstr "" "Si no se especifica un archivo de entrada, se usa la entrada estándar.\n" "\n" -#: pg_dumpall.c:168 +#: pg_dumpall.c:172 #, c-format msgid "" "The program \"pg_dump\" is needed by %s but was not found in the\n" @@ -2019,7 +2051,7 @@ msgstr "" "directorio que «%s».\n" "Verifique su instalación.\n" -#: pg_dumpall.c:175 +#: pg_dumpall.c:179 #, c-format msgid "" "The program \"pg_dump\" was found by \"%s\"\n" @@ -2030,7 +2062,7 @@ msgstr "" "pero no es de la misma versión que %s.\n" "Verifique su instalación.\n" -#: pg_dumpall.c:332 +#: pg_dumpall.c:315 #, c-format msgid "" "%s: options -g/--globals-only and -r/--roles-only cannot be used together\n" @@ -2038,7 +2070,7 @@ msgstr "" "%s: las opciones -g/--globals-only y -r/--roles-only no pueden usarse " "juntas\n" -#: pg_dumpall.c:341 +#: pg_dumpall.c:324 #, c-format msgid "" "%s: options -g/--globals-only and -t/--tablespaces-only cannot be used " @@ -2047,7 +2079,7 @@ msgstr "" "%s: las opciones -g/--globals-only y -t/--tablespaces-only no pueden usarse " "juntas\n" -#: pg_dumpall.c:350 +#: pg_dumpall.c:333 #, c-format msgid "" "%s: options -r/--roles-only and -t/--tablespaces-only cannot be used " @@ -2056,12 +2088,12 @@ msgstr "" "%s: las opciones -r/--roles-only y -t/--tablespaces-only no pueden usarse " "juntas\n" -#: pg_dumpall.c:388 pg_dumpall.c:1663 +#: pg_dumpall.c:375 pg_dumpall.c:1691 #, c-format msgid "%s: could not connect to database \"%s\"\n" msgstr "%s: no se pudo establecer la conexión a la base de datos «%s»\n" -#: pg_dumpall.c:403 +#: pg_dumpall.c:390 #, c-format msgid "" "%s: could not connect to databases \"postgres\" or \"template1\"\n" @@ -2070,12 +2102,12 @@ msgstr "" "%s: no se pudo establecer la conexión a las bases de datos «postgres» o\n" "«template1». Por favor especifique una base de datos para conectarse.\n" -#: pg_dumpall.c:420 +#: pg_dumpall.c:407 #, c-format msgid "%s: could not open the output file \"%s\": %s\n" msgstr "%s: no se pudo abrir el archivo de salida «%s»: %s\n" -#: pg_dumpall.c:542 +#: pg_dumpall.c:529 #, c-format msgid "" "%s extracts a PostgreSQL database cluster into an SQL script file.\n" @@ -2084,31 +2116,36 @@ msgstr "" "%s extrae un cluster de bases de datos de PostgreSQL en un archivo\n" "guión (script) SQL.\n" -#: pg_dumpall.c:544 +#: pg_dumpall.c:531 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [OPCIÓN]...\n" -#: pg_dumpall.c:553 +#: pg_dumpall.c:534 +#, c-format +msgid " -f, --file=FILENAME output file name\n" +msgstr " -f, --file=ARCHIVO nombre del archivo de salida\n" + +#: pg_dumpall.c:540 #, c-format msgid "" " -c, --clean clean (drop) databases before recreating\n" msgstr "" " -c, --clean tira (drop) la base de datos antes de crearla\n" -#: pg_dumpall.c:554 +#: pg_dumpall.c:541 #, c-format msgid " -g, --globals-only dump only global objects, no databases\n" msgstr "" " -g, --globals-only extrae sólo los objetos globales, no bases de " "datos\n" -#: pg_dumpall.c:556 +#: pg_dumpall.c:543 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr " -O, --no-owner no reestablece los dueños de los objetos\n" -#: pg_dumpall.c:557 +#: pg_dumpall.c:544 #, c-format msgid "" " -r, --roles-only dump only roles, no databases or tablespaces\n" @@ -2116,14 +2153,14 @@ msgstr "" " -r, --roles-only extrae sólo los roles, no bases de datos\n" " ni tablespaces\n" -#: pg_dumpall.c:559 +#: pg_dumpall.c:546 #, c-format msgid " -S, --superuser=NAME superuser user name to use in the dump\n" msgstr "" " -S, --superuser=NAME especifica el nombre del superusuario a usar en\n" " el volcado\n" -#: pg_dumpall.c:560 +#: pg_dumpall.c:547 #, c-format msgid "" " -t, --tablespaces-only dump only tablespaces, no databases or roles\n" @@ -2131,13 +2168,13 @@ msgstr "" " -t, --tablespaces-only extrae sólo los tablespaces, no bases de datos\n" " ni roles\n" -#: pg_dumpall.c:576 +#: pg_dumpall.c:564 #, c-format msgid " -l, --database=DBNAME alternative default database\n" msgstr "" " -l, --database=NOMBRE especifica la base de datos a la cual conectarse\n" -#: pg_dumpall.c:582 +#: pg_dumpall.c:571 #, c-format msgid "" "\n" @@ -2151,76 +2188,76 @@ msgstr "" "estándar.\n" "\n" -#: pg_dumpall.c:1026 +#: pg_dumpall.c:1042 #, c-format msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n" msgstr "" "%s: no se pudo interpretar la lista de control de acceso (%s) del tablespace " "«%s»\n" -#: pg_dumpall.c:1326 +#: pg_dumpall.c:1342 #, c-format msgid "%s: could not parse ACL list (%s) for database \"%s\"\n" msgstr "" "%s: no se pudo interpretar la lista de control de acceso (%s) de la base de " "datos «%s»\n" -#: pg_dumpall.c:1533 +#: pg_dumpall.c:1549 #, c-format msgid "%s: dumping database \"%s\"...\n" msgstr "%s: extrayendo base de datos «%s»...\n" -#: pg_dumpall.c:1543 +#: pg_dumpall.c:1559 #, c-format msgid "%s: pg_dump failed on database \"%s\", exiting\n" msgstr "%s: pg_dump falló en la base de datos «%s», saliendo\n" -#: pg_dumpall.c:1552 +#: pg_dumpall.c:1568 #, c-format msgid "%s: could not re-open the output file \"%s\": %s\n" msgstr "%s: no se pudo reabrir el archivo de salida «%s»: %s\n" -#: pg_dumpall.c:1591 +#: pg_dumpall.c:1618 #, c-format msgid "%s: running \"%s\"\n" msgstr "%s: ejecutando «%s»\n" -#: pg_dumpall.c:1636 +#: pg_dumpall.c:1664 #, c-format msgid "%s: out of memory\n" msgstr "%s: memoria agotada\n" -#: pg_dumpall.c:1685 +#: pg_dumpall.c:1713 #, c-format msgid "%s: could not connect to database \"%s\": %s\n" msgstr "%s: no se pudo establecer la conexión a la base de datos «%s»: %s\n" -#: pg_dumpall.c:1699 +#: pg_dumpall.c:1727 #, c-format msgid "%s: could not get server version\n" msgstr "%s: no se pudo obtener la versión del servidor\n" -#: pg_dumpall.c:1705 +#: pg_dumpall.c:1733 #, c-format msgid "%s: could not parse server version \"%s\"\n" msgstr "%s: no se pudo interpretar la versión del servidor «%s»\n" -#: pg_dumpall.c:1713 +#: pg_dumpall.c:1741 #, c-format msgid "%s: could not parse version \"%s\"\n" msgstr "%s: no se pudo interpretar la versión «%s»\n" -#: pg_dumpall.c:1752 pg_dumpall.c:1778 +#: pg_dumpall.c:1780 pg_dumpall.c:1806 #, c-format msgid "%s: executing %s\n" msgstr "%s: ejecutando %s\n" -#: pg_dumpall.c:1758 pg_dumpall.c:1784 +#: pg_dumpall.c:1786 pg_dumpall.c:1812 #, c-format msgid "%s: query failed: %s" msgstr "%s: falló la consulta: %s" -#: pg_dumpall.c:1760 pg_dumpall.c:1786 +#: pg_dumpall.c:1788 pg_dumpall.c:1814 #, c-format msgid "%s: query was: %s\n" msgstr "%s: la consulta fue: %s\n" @@ -2255,48 +2292,42 @@ msgstr "no se pudo cambiar el directorio a «%s»" msgid "could not read symbolic link \"%s\"" msgstr "no se pudo leer el enlace simbólico «%s»" -#: ../../port/exec.c:516 +#: ../../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" msgstr "el proceso hijo terminó con código de salida %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "el proceso hijo fue terminado por una excepción 0x%X" -#: ../../port/exec.c:529 +#: ../../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "el proceso hijo fue terminado por una señal %s" -#: ../../port/exec.c:532 +#: ../../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "el proceso hijo fue terminado por una señal %d" -#: ../../port/exec.c:536 +#: ../../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "el proceso hijo terminó con código no reconocido %d" -#~ msgid "dumpBlobs(): could not open large object: %s" -#~ msgstr "dumpBlobs(): no se pudo abrir el objeto grande: %s" - -#~ msgid "saving large object comments\n" -#~ msgstr "salvando comentarios de objetos grandes\n" - -#~ msgid "no label definitions found for enum ID %u\n" +#~ msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n" #~ msgstr "" -#~ "no se encontraron definiciones de etiquetas para el enum con ID %u\n" +#~ "sentencia COPY no válida -- no se pudo encontrar «copy» en la cadena " +#~ "«%s»\n" #~ msgid "" -#~ "dumping a specific TOC data block out of order is not supported without " -#~ "ID on this input stream (fseek required)\n" +#~ "invalid COPY statement -- could not find \"from stdin\" in string \"%s\" " +#~ "starting at position %lu\n" #~ msgstr "" -#~ "la extracción de un bloque específico de la tabla de contenido fuera de " -#~ "orden no está soportado sin ID en este flujo de entrada (se requiere " -#~ "fseek)\n" +#~ "sentencia COPY no válida -- no se pudo encontrar «from stdin» en la " +#~ "cadena «%s» empezando en la posición %lu\n" -#~ msgid "compression support is disabled in this format\n" -#~ msgstr "el soporte para compresión está deshabilitado en este formato\n" +#~ msgid "restoring large object OID %u\n" +#~ msgstr "reestableciendo objeto grande con OID %u\n" diff --git a/src/bin/pg_dump/po/fr.po b/src/bin/pg_dump/po/fr.po index 1c58a1c2d6..fa6c205fd1 100644 --- a/src/bin/pg_dump/po/fr.po +++ b/src/bin/pg_dump/po/fr.po @@ -1,8 +1,6 @@ # translation of pg_dump.po to fr_fr # french message translation file for pg_dump # -# $PostgreSQL$ -# # Use these quotes: � %s � # # Guillaume Lelarge , 2004-2009. @@ -11,102 +9,90 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 8.4\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-06-29 21:21+0000\n" -"PO-Revision-Date: 2010-06-29 23:36+0100\n" +"POT-Creation-Date: 2012-12-02 13:27+0000\n" +"PO-Revision-Date: 2012-12-02 15:42+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" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: pg_dump.c:453 -#: pg_restore.c:268 -#: pg_dumpall.c:291 -#, c-format -msgid "%s: invalid -X option -- %s\n" -msgstr "%s : option -X invalide -- %s\n" - -#: pg_dump.c:455 -#: pg_dump.c:477 -#: pg_dump.c:486 -#: pg_restore.c:270 -#: pg_restore.c:293 -#: pg_restore.c:310 -#: pg_dumpall.c:293 -#: pg_dumpall.c:313 -#: pg_dumpall.c:338 -#: pg_dumpall.c:348 -#: pg_dumpall.c:357 -#: pg_dumpall.c:366 -#: pg_dumpall.c:402 +#: pg_dump.c:492 +#: pg_dump.c:506 +#: pg_restore.c:274 +#: pg_restore.c:290 +#: pg_restore.c:302 +#: pg_dumpall.c:296 +#: pg_dumpall.c:306 +#: pg_dumpall.c:316 +#: pg_dumpall.c:325 +#: pg_dumpall.c:334 +#: pg_dumpall.c:392 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Essayer � %s --help � pour plus d'informations.\n" -#: pg_dump.c:484 -#: pg_dumpall.c:336 +#: pg_dump.c:504 +#: pg_restore.c:288 +#: pg_dumpall.c:304 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s : trop d'arguments en ligne de commande (le premier �tant � %s �)\n" -#: pg_dump.c:501 +#: pg_dump.c:517 msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "" "les options � -s/--schema-only � et � -a/--data-only � ne peuvent pas �tre\n" "utilis�es conjointement\n" -#: pg_dump.c:507 +#: pg_dump.c:523 msgid "options -c/--clean and -a/--data-only cannot be used together\n" msgstr "" "les options � -c/--clean � et � -a/--data-only � ne peuvent pas �tre\n" "utilis�es conjointement\n" -#: pg_dump.c:513 +#: pg_dump.c:529 msgid "options --inserts/--column-inserts and -o/--oids cannot be used together\n" msgstr "" "les options � --inserts/--column-inserts � et � -o/--oids � ne\n" "peuvent pas �tre utilis�es conjointement\n" -#: pg_dump.c:514 +#: pg_dump.c:530 msgid "(The INSERT command cannot set OIDs.)\n" msgstr "(La commande INSERT ne peut pas positionner les OID.)\n" -#: pg_dump.c:544 -#, c-format -msgid "invalid output format \"%s\" specified\n" -msgstr "format de sortie � %s � invalide\n" - -#: pg_dump.c:550 +#: pg_dump.c:555 #, c-format msgid "could not open output file \"%s\" for writing\n" msgstr "n'a pas pu ouvrir le fichier de sauvegarde � %s � en �criture\n" -#: pg_dump.c:560 -#: pg_backup_db.c:45 +#: pg_dump.c:565 +#: pg_backup_db.c:38 #, c-format msgid "could not parse version string \"%s\"\n" msgstr "n'a pas pu analyser la cha�ne de version � %s �\n" -#: pg_dump.c:583 +#: pg_dump.c:588 #, c-format msgid "invalid client encoding \"%s\" specified\n" msgstr "encodage client indiqu� (� %s �) invalide\n" -#: pg_dump.c:660 +#: pg_dump.c:688 #, c-format msgid "last built-in OID is %u\n" msgstr "le dernier OID interne est %u\n" -#: pg_dump.c:670 +#: pg_dump.c:698 msgid "No matching schemas were found\n" msgstr "Aucun sch�ma correspondant n'a �t� trouv�\n" -#: pg_dump.c:685 +#: pg_dump.c:713 msgid "No matching tables were found\n" msgstr "Aucune table correspondante n'a �t� trouv�e\n" -#: pg_dump.c:797 +#: pg_dump.c:835 #, c-format msgid "" "%s dumps a database as a text file or to other formats.\n" @@ -116,21 +102,21 @@ msgstr "" "formats.\n" "\n" -#: pg_dump.c:798 -#: pg_restore.c:399 -#: pg_dumpall.c:535 +#: pg_dump.c:836 +#: pg_restore.c:397 +#: pg_dumpall.c:529 #, c-format msgid "Usage:\n" msgstr "Usage :\n" -#: pg_dump.c:799 +#: pg_dump.c:837 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [OPTION]... [NOMBASE]\n" -#: pg_dump.c:801 -#: pg_restore.c:402 -#: pg_dumpall.c:538 +#: pg_dump.c:839 +#: pg_restore.c:400 +#: pg_dumpall.c:532 #, c-format msgid "" "\n" @@ -139,53 +125,52 @@ msgstr "" "\n" "Options g�n�rales :\n" -#: pg_dump.c:802 -#: pg_dumpall.c:539 +#: pg_dump.c:840 #, c-format -msgid " -f, --file=FILENAME output file name\n" -msgstr " -f, --file=NOMFICHIER nom du fichier de sortie\n" +msgid " -f, --file=FILENAME output file or directory name\n" +msgstr " -f, --file=NOMFICHIER nom du fichier ou du r�pertoire en sortie\n" -#: pg_dump.c:803 +#: pg_dump.c:841 #, c-format -msgid " -F, --format=c|t|p output file format (custom, tar, plain text)\n" +msgid " -F, --format=c|d|t|p output file format (custom, directory, tar, plain text)\n" msgstr "" -" -F, --format=c|t|p format du fichier de sortie (personnalis�,\n" -" tar, texte)\n" +" -F, --format=c|d|t|p format du fichier de sortie (personnalis�,\n" +" r�pertoire, tar, texte)\n" -#: pg_dump.c:804 +#: pg_dump.c:842 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose mode verbeux\n" -#: pg_dump.c:805 +#: pg_dump.c:843 #, c-format msgid " -Z, --compress=0-9 compression level for compressed formats\n" msgstr "" " -Z, --compress=0-9 niveau de compression pour les formats\n" " compress�s\n" -#: pg_dump.c:806 -#: pg_dumpall.c:540 +#: pg_dump.c:844 +#: pg_dumpall.c:534 #, c-format msgid " --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" msgstr "" " --lock-wait-timeout=D�LAI �chec apr�s l'attente du D�LAI pour un verrou\n" " de table\n" -#: pg_dump.c:807 -#: pg_dumpall.c:541 +#: pg_dump.c:845 +#: pg_dumpall.c:535 #, c-format msgid " --help show this help, then exit\n" msgstr " --help affiche cette aide puis quitte\n" -#: pg_dump.c:808 -#: pg_dumpall.c:542 +#: pg_dump.c:846 +#: pg_dumpall.c:536 #, c-format msgid " --version output version information, then exit\n" msgstr " --version affiche la version puis quitte\n" -#: pg_dump.c:810 -#: pg_dumpall.c:543 +#: pg_dump.c:848 +#: pg_dumpall.c:537 #, c-format msgid "" "\n" @@ -194,59 +179,59 @@ msgstr "" "\n" "Options contr�lant le contenu en sortie :\n" -#: pg_dump.c:811 -#: pg_dumpall.c:544 +#: pg_dump.c:849 +#: pg_dumpall.c:538 #, c-format msgid " -a, --data-only dump only the data, not the schema\n" msgstr "" " -a, --data-only sauvegarde uniquement les donn�es, pas le\n" " sch�ma\n" -#: pg_dump.c:812 +#: pg_dump.c:850 #, c-format msgid " -b, --blobs include large objects in dump\n" msgstr "" " -b, --blobs inclut les � Large Objects � dans la\n" " sauvegarde\n" -#: pg_dump.c:813 +#: pg_dump.c:851 #, c-format msgid " -c, --clean clean (drop) database objects before recreating\n" msgstr "" " -c, --clean nettoie/supprime les bases de donn�es avant de\n" " les cr�er\n" -#: pg_dump.c:814 +#: pg_dump.c:852 #, c-format msgid " -C, --create include commands to create database in dump\n" msgstr "" " -C, --create inclut les commandes de cr�ation de la base\n" " dans la sauvegarde\n" -#: pg_dump.c:815 +#: pg_dump.c:853 #, c-format msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" msgstr "" " -E, --encoding=ENCODAGE sauvegarde les donn�es dans l'encodage\n" " ENCODAGE\n" -#: pg_dump.c:816 +#: pg_dump.c:854 #, c-format msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" msgstr " -n, --schema=SCH�MA sauvegarde uniquement le sch�ma indiqu�\n" -#: pg_dump.c:817 +#: pg_dump.c:855 #, c-format msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n" msgstr " -N, --exclude-schema=SCH�MA ne sauvegarde pas le sch�ma indiqu�\n" -#: pg_dump.c:818 -#: pg_dumpall.c:547 +#: pg_dump.c:856 +#: pg_dumpall.c:541 #, c-format msgid " -o, --oids include OIDs in dump\n" msgstr " -o, --oids inclut les OID dans la sauvegarde\n" -#: pg_dump.c:819 +#: pg_dump.c:857 #, c-format msgid "" " -O, --no-owner skip restoration of object ownership in\n" @@ -255,63 +240,55 @@ msgstr "" " -O, --no-owner ne sauvegarde pas les propri�taires des\n" " objets lors de l'utilisation du format texte\n" -#: pg_dump.c:821 -#: pg_dumpall.c:550 +#: pg_dump.c:859 +#: pg_dumpall.c:544 #, c-format msgid " -s, --schema-only dump only the schema, no data\n" msgstr "" " -s, --schema-only sauvegarde uniquement la structure, pas les\n" " donn�es\n" -#: pg_dump.c:822 +#: pg_dump.c:860 #, c-format msgid " -S, --superuser=NAME superuser user name to use in plain-text format\n" msgstr "" " -S, --superuser=NOM indique le nom du super-utilisateur �\n" " utiliser avec le format texte\n" -#: pg_dump.c:823 +#: pg_dump.c:861 #, c-format msgid " -t, --table=TABLE dump the named table(s) only\n" msgstr " -t, --table=TABLE sauvegarde uniquement la table indiqu�e\n" -#: pg_dump.c:824 +#: pg_dump.c:862 #, c-format msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n" msgstr " -T, --exclude-table=TABLE ne sauvegarde pas la table indiqu�e\n" -#: pg_dump.c:825 -#: pg_dumpall.c:553 +#: pg_dump.c:863 +#: pg_dumpall.c:547 #, c-format msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" msgstr " -x, --no-privileges ne sauvegarde pas les droits sur les objets\n" -#: pg_dump.c:826 -#: pg_dumpall.c:554 +#: pg_dump.c:864 +#: pg_dumpall.c:548 #, c-format msgid " --binary-upgrade for use by upgrade utilities only\n" msgstr "" " --binary-upgrade � n'utiliser que par les outils de mise �\n" " jour seulement\n" -#: pg_dump.c:827 -#: pg_dumpall.c:555 -#, c-format -msgid " --inserts dump data as INSERT commands, rather than COPY\n" -msgstr "" -" -d, --inserts sauvegarde les donn�es avec des instructions\n" -" INSERT plut�t que COPY\n" - -#: pg_dump.c:828 -#: pg_dumpall.c:556 +#: pg_dump.c:865 +#: pg_dumpall.c:549 #, c-format msgid " --column-inserts dump data as INSERT commands with column names\n" msgstr "" " -D, --column-inserts sauvegarde les donn�es avec des commandes\n" " INSERT pr�cisant les noms des colonnes\n" -#: pg_dump.c:829 -#: pg_dumpall.c:557 +#: pg_dump.c:866 +#: pg_dumpall.c:550 #, c-format msgid " --disable-dollar-quoting disable dollar quoting, use SQL standard quoting\n" msgstr "" @@ -319,28 +296,61 @@ msgstr "" " dollar dans le but de respecter le standard\n" " SQL en mati�re de guillemets\n" -#: pg_dump.c:830 -#: pg_dumpall.c:558 +#: pg_dump.c:867 +#: pg_dumpall.c:551 #, c-format msgid " --disable-triggers disable triggers during data-only restore\n" msgstr "" " --disable-triggers d�sactive les triggers en mode de\n" " restauration des donn�es seulement\n" -#: pg_dump.c:831 -#: pg_dumpall.c:559 +#: pg_dump.c:868 +#: pg_dumpall.c:552 +#, c-format +msgid " --inserts dump data as INSERT commands, rather than COPY\n" +msgstr "" +" -d, --inserts sauvegarde les donn�es avec des instructions\n" +" INSERT plut�t que COPY\n" + +#: pg_dump.c:869 +#: pg_dumpall.c:553 +#, c-format +msgid " --no-security-labels do not dump security label assignments\n" +msgstr "" +" --no-security-labels ne sauvegarde pas les affectations de labels de\n" +" s�curit�\n" + +#: pg_dump.c:870 +#: pg_dumpall.c:554 #, c-format msgid " --no-tablespaces do not dump tablespace assignments\n" msgstr " --no-tablespaces ne sauvegarde pas les affectations de tablespaces\n" -#: pg_dump.c:832 -#: pg_dumpall.c:560 +#: pg_dump.c:871 +#: pg_dumpall.c:555 #, c-format -msgid " --role=ROLENAME do SET ROLE before dump\n" -msgstr " --role=NOMROLE ex�cute SET ROLE avant la sauvegarde\n" +msgid " --no-unlogged-table-data do not dump unlogged table data\n" +msgstr "" +" --no-unlogged-table-data ne sauvegarde pas les donn�es des tables non\n" +" trac�es\n" -#: pg_dump.c:833 -#: pg_dumpall.c:561 +#: pg_dump.c:872 +#: pg_dumpall.c:556 +#, c-format +msgid " --quote-all-identifiers quote all identifiers, even if not key words\n" +msgstr "" +" --quote-all-identifiers mettre entre guillemets tous les idendifiants\n" +" m�me s'il ne s'agit pas de mots cl�s\n" + +#: pg_dump.c:873 +#, c-format +msgid " --serializable-deferrable wait until the dump can run without anomalies\n" +msgstr "" +" --serializable-deferrable attendre jusqu'� ce que la sauvegarde puisse\n" +" s'ex�cuter sans anomalies\n" + +#: pg_dump.c:874 +#: pg_dumpall.c:557 #, c-format msgid "" " --use-set-session-authorization\n" @@ -352,9 +362,9 @@ msgstr "" " au lieu des commandes ALTER OWNER pour les\n" " modifier les propri�taires\n" -#: pg_dump.c:837 -#: pg_restore.c:441 -#: pg_dumpall.c:565 +#: pg_dump.c:878 +#: pg_restore.c:439 +#: pg_dumpall.c:561 #, c-format msgid "" "\n" @@ -363,48 +373,54 @@ msgstr "" "\n" "Options de connexion :\n" -#: pg_dump.c:838 -#: pg_restore.c:442 -#: pg_dumpall.c:566 +#: pg_dump.c:879 +#: pg_restore.c:440 +#: pg_dumpall.c:562 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" " -h, --host=NOMH�TE h�te du serveur de bases de donn�es ou\n" " r�pertoire des sockets\n" -#: pg_dump.c:839 -#: pg_restore.c:443 -#: pg_dumpall.c:568 +#: pg_dump.c:880 +#: pg_restore.c:441 +#: pg_dumpall.c:564 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr "" " -p, --port=PORT num�ro de port du serveur de bases de\n" " donn�es\n" -#: pg_dump.c:840 -#: pg_restore.c:444 -#: pg_dumpall.c:569 +#: pg_dump.c:881 +#: pg_restore.c:442 +#: pg_dumpall.c:565 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=NOM se connecter avec cet utilisateur\n" -#: pg_dump.c:841 -#: pg_restore.c:445 -#: pg_dumpall.c:570 +#: pg_dump.c:882 +#: pg_restore.c:443 +#: pg_dumpall.c:566 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password ne demande jamais le mot de passe\n" -#: pg_dump.c:842 -#: pg_restore.c:446 -#: pg_dumpall.c:571 +#: pg_dump.c:883 +#: pg_restore.c:444 +#: pg_dumpall.c:567 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" msgstr "" " -W, --password force la demande du mot de passe (par\n" " d�faut)\n" -#: pg_dump.c:844 +#: pg_dump.c:884 +#: pg_dumpall.c:568 +#, c-format +msgid " --role=ROLENAME do SET ROLE before dump\n" +msgstr " --role=NOMROLE ex�cute SET ROLE avant la sauvegarde\n" + +#: pg_dump.c:886 #, c-format msgid "" "\n" @@ -417,225 +433,240 @@ msgstr "" "d'environnement PGDATABASE est alors utilis�e.\n" "\n" -#: pg_dump.c:846 -#: pg_restore.c:449 -#: pg_dumpall.c:575 +#: pg_dump.c:888 +#: pg_restore.c:448 +#: pg_dumpall.c:572 #, c-format msgid "Report bugs to .\n" msgstr "Rapporter les bogues � .\n" -#: pg_dump.c:854 -#: pg_backup_archiver.c:1394 +#: pg_dump.c:896 +#: pg_backup_archiver.c:1459 msgid "*** aborted because of error\n" msgstr "*** interrompu du fait d'erreurs\n" -#: pg_dump.c:875 +#: pg_dump.c:938 +#, c-format +msgid "invalid output format \"%s\" specified\n" +msgstr "format de sortie � %s � invalide\n" + +#: pg_dump.c:961 msgid "server version must be at least 7.3 to use schema selection switches\n" msgstr "" "le serveur doit �tre de version 7.3 ou sup�rieure pour utiliser les options\n" "de s�lection du sch�ma\n" -#: pg_dump.c:1113 +#: pg_dump.c:1233 #, c-format msgid "dumping contents of table %s\n" msgstr "sauvegarde du contenu de la table %s\n" -#: pg_dump.c:1216 +#: pg_dump.c:1353 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" msgstr "" "La sauvegarde du contenu de la table � %s � a �chou� : �chec de\n" "PQgetCopyData().\n" -#: pg_dump.c:1217 -#: pg_dump.c:12402 +#: pg_dump.c:1354 +#: pg_dump.c:14406 #, c-format msgid "Error message from server: %s" msgstr "Message d'erreur du serveur : %s" -#: pg_dump.c:1218 -#: pg_dump.c:12403 +#: pg_dump.c:1355 +#: pg_dump.c:14407 #, c-format msgid "The command was: %s\n" msgstr "La commande �tait : %s\n" -#: pg_dump.c:1624 +#: pg_dump.c:1794 msgid "saving database definition\n" msgstr "sauvegarde de la d�finition de la base de donn�es\n" -#: pg_dump.c:1706 +#: pg_dump.c:1876 #, c-format msgid "missing pg_database entry for database \"%s\"\n" msgstr "entr�e manquante dans pg_database pour la base de donn�es � %s �\n" -#: pg_dump.c:1713 +#: pg_dump.c:1883 #, c-format msgid "query returned more than one (%d) pg_database entry for database \"%s\"\n" msgstr "" "la requ�te a renvoy� plusieurs (%d) entr�es pg_database pour la base de\n" "donn�es � %s �\n" -#: pg_dump.c:1814 +#: pg_dump.c:1987 msgid "dumpDatabase(): could not find pg_largeobject.relfrozenxid\n" msgstr "dumpDatabase() : n'a pas pu trouver pg_largeobject.relfrozenxid\n" -#: pg_dump.c:1891 +#: pg_dump.c:2026 +msgid "dumpDatabase(): could not find pg_largeobject_metadata.relfrozenxid\n" +msgstr "dumpDatabase() : n'a pas pu trouver pg_largeobject_metadata.relfrozenxid\n" + +#: pg_dump.c:2105 #, c-format msgid "saving encoding = %s\n" msgstr "encodage de la sauvegarde = %s\n" -#: pg_dump.c:1918 +#: pg_dump.c:2132 #, c-format msgid "saving standard_conforming_strings = %s\n" msgstr "standard_conforming_strings de la sauvegarde = %s\n" -#: pg_dump.c:1951 +#: pg_dump.c:2165 msgid "reading large objects\n" msgstr "lecture des � Large Objects �\n" -#: pg_dump.c:2078 +#: pg_dump.c:2297 msgid "saving large objects\n" msgstr "sauvegarde des � Large Objects �\n" -#: pg_dump.c:2120 -#: pg_backup_archiver.c:946 +#: pg_dump.c:2339 +#: pg_backup_archiver.c:985 #, c-format msgid "could not open large object %u: %s" msgstr "n'a pas pu ouvrir le � Large Object � %u : %s" -#: pg_dump.c:2133 +#: pg_dump.c:2352 #, c-format msgid "error reading large object %u: %s" msgstr "erreur lors de la lecture du � Large Object � %u : %s" -#: pg_dump.c:2180 -#: pg_dump.c:2228 -#: pg_dump.c:2290 -#: pg_dump.c:6911 -#: pg_dump.c:7114 -#: pg_dump.c:7930 -#: pg_dump.c:8468 -#: pg_dump.c:8718 -#: pg_dump.c:8824 -#: pg_dump.c:9209 -#: pg_dump.c:9385 -#: pg_dump.c:9582 -#: pg_dump.c:9809 -#: pg_dump.c:9964 -#: pg_dump.c:10150 -#: pg_dump.c:12208 +#: pg_dump.c:2399 +#: pg_dump.c:2447 +#: pg_dump.c:2502 +#: pg_dump.c:7691 +#: pg_dump.c:7922 +#: pg_dump.c:8888 +#: pg_dump.c:9440 +#: pg_dump.c:9694 +#: pg_dump.c:9808 +#: pg_dump.c:10264 +#: pg_dump.c:10450 +#: pg_dump.c:10556 +#: pg_dump.c:10756 +#: pg_dump.c:10998 +#: pg_dump.c:11165 +#: pg_dump.c:11386 +#: pg_dump.c:14212 #, c-format msgid "query returned %d row instead of one: %s\n" msgid_plural "query returned %d rows instead of one: %s\n" msgstr[0] "la requ�te a renvoy� %d ligne au lieu d'une seule : %s\n" msgstr[1] "la requ�te a renvoy� %d lignes au lieu d'une seule : %s\n" -#: pg_dump.c:2435 +#: pg_dump.c:2583 +#, c-format +msgid "could not find parent extension for %s" +msgstr "n'a pas pu trouver l'extension parent pour %s" + +#: pg_dump.c:2689 #, c-format msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" msgstr "ATTENTION : le propri�taire du sch�ma � %s � semble �tre invalide\n" -#: pg_dump.c:2470 +#: pg_dump.c:2733 #, c-format msgid "schema with OID %u does not exist\n" msgstr "le sch�ma d'OID %u n'existe pas\n" -#: pg_dump.c:2727 +#: pg_dump.c:3065 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" msgstr "ATTENTION : le propri�taire du type de donn�es � %s � semble �tre invalide\n" -#: pg_dump.c:2831 +#: pg_dump.c:3169 #, c-format msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" msgstr "ATTENTION : le propri�taire de l'op�rateur � %s � semble �tre invalide\n" -#: pg_dump.c:3005 +#: pg_dump.c:3421 #, c-format msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" msgstr "" "ATTENTION : le propri�taire de la classe d'op�rateur � %s � semble �tre\n" "invalide\n" -#: pg_dump.c:3092 +#: pg_dump.c:3508 #, c-format msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" msgstr "" "ATTENTION : le propri�taire de la famille d'op�rateur � %s � semble �tre\n" "invalide\n" -#: pg_dump.c:3217 +#: pg_dump.c:3645 #, c-format msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" msgstr "" "ATTENTION : le propri�taire de la fonction d'aggr�gat � %s � semble �tre\n" "invalide\n" -#: pg_dump.c:3372 +#: pg_dump.c:3815 #, c-format msgid "WARNING: owner of function \"%s\" appears to be invalid\n" msgstr "ATTENTION : le propri�taire de la fonction � %s � semble �tre invalide\n" -#: pg_dump.c:3805 +#: pg_dump.c:4315 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" msgstr "ATTENTION : le propri�taire de la table � %s � semble �tre invalide\n" -#: pg_dump.c:3948 +#: pg_dump.c:4463 #, c-format msgid "reading indexes for table \"%s\"\n" msgstr "lecture des index de la table � %s �\n" -#: pg_dump.c:4268 +#: pg_dump.c:4783 #, c-format msgid "reading foreign key constraints for table \"%s\"\n" msgstr "lecture des contraintes de cl�s �trang�res pour la table � %s �\n" -#: pg_dump.c:4500 +#: pg_dump.c:5015 #, c-format msgid "failed sanity check, parent table OID %u of pg_rewrite entry OID %u not found\n" msgstr "" "v�rification �chou�e, OID %u de la table parent de l'OID %u de l'entr�e de\n" "pg_rewrite introuvable\n" -#: pg_dump.c:4584 +#: pg_dump.c:5099 #, c-format msgid "reading triggers for table \"%s\"\n" msgstr "lecture des triggers pour la table � %s �\n" -#: pg_dump.c:4747 +#: pg_dump.c:5262 #, c-format msgid "query produced null referenced table name for foreign key trigger \"%s\" on table \"%s\" (OID of table: %u)\n" msgstr "" "la requ�te a produit une r�ference de nom de table null pour le trigger de\n" "cl� �trang�re � %s � sur la table � %s � (OID de la table : %u)\n" -#: pg_dump.c:5117 +#: pg_dump.c:5633 #, c-format msgid "finding the columns and types of table \"%s\"\n" msgstr "recherche des colonnes et types de la table � %s �\n" -#: pg_dump.c:5236 +#: pg_dump.c:5779 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "num�rotation des colonnes invalide pour la table � %s �\n" -#: pg_dump.c:5272 +#: pg_dump.c:5814 #, c-format msgid "finding default expressions of table \"%s\"\n" msgstr "recherche des expressions par d�faut de la table � %s �\n" -#: pg_dump.c:5357 +#: pg_dump.c:5867 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" msgstr "valeur adnum %d invalide pour la table � %s �\n" -#: pg_dump.c:5375 +#: pg_dump.c:5940 #, c-format msgid "finding check constraints for table \"%s\"\n" msgstr "recherche des contraintes de v�rification pour la table � %s �\n" -#: pg_dump.c:5455 +#: pg_dump.c:6020 #, c-format msgid "expected %d check constraint on table \"%s\" but found %d\n" msgid_plural "expected %d check constraints on table \"%s\" but found %d\n" @@ -646,123 +677,125 @@ msgstr[1] "" "%d contraintes de v�rification attendues pour la table � %s � mais %d\n" "trouv�es\n" -#: pg_dump.c:5459 +#: pg_dump.c:6024 msgid "(The system catalogs might be corrupted.)\n" msgstr "(Les catalogues syst�me sont peut-�tre corrompus.)\n" -#: pg_dump.c:7241 -#: pg_dump.c:7348 -#, c-format -msgid "query returned no rows: %s\n" -msgstr "la requ�te n'a renvoy� aucune ligne : %s\n" - -#: pg_dump.c:7698 +#: pg_dump.c:8654 msgid "WARNING: bogus value in proargmodes array\n" msgstr "ATTENTION : valeur erron�e dans le tableau proargmodes\n" -#: pg_dump.c:8010 +#: pg_dump.c:8968 msgid "WARNING: could not parse proallargtypes array\n" msgstr "ATTENTION : n'a pas pu analyser le tableau proallargtypes\n" -#: pg_dump.c:8026 +#: pg_dump.c:8984 msgid "WARNING: could not parse proargmodes array\n" msgstr "ATTENTION : n'a pas pu analyser le tableau proargmodes\n" -#: pg_dump.c:8040 +#: pg_dump.c:8998 msgid "WARNING: could not parse proargnames array\n" msgstr "ATTENTION : n'a pas pu analyser le tableau proargnames\n" -#: pg_dump.c:8051 +#: pg_dump.c:9009 msgid "WARNING: could not parse proconfig array\n" msgstr "ATTENTION : n'a pas pu analyser le tableau proconfig\n" -#: pg_dump.c:8107 +#: pg_dump.c:9065 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "valeur provolatile non reconnue pour la fonction � %s �\n" -#: pg_dump.c:8310 +#: pg_dump.c:9281 msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "ATTENTION : valeur erron�e dans pg_cast.castmethod\n" -#: pg_dump.c:8687 +#: pg_dump.c:9663 #, c-format msgid "WARNING: could not find operator with OID %s\n" msgstr "ATTENTION : n'a pas pu trouver l'op�rateur d'OID %s\n" -#: pg_dump.c:9608 +#: pg_dump.c:10782 #, c-format msgid "WARNING: aggregate function %s could not be dumped correctly for this database version; ignored\n" msgstr "" "ATTENTION : la fonction d'aggr�gat %s n'a pas pu �tre sauvegard�e\n" " correctement avec cette version de la base de donn�es ; ignor�e\n" -#: pg_dump.c:10326 +#: pg_dump.c:11586 #, c-format msgid "unknown object type (%d) in default privileges\n" msgstr "type d'objet inconnu (%d) dans les droits par d�faut\n" -#: pg_dump.c:10343 +#: pg_dump.c:11603 #, c-format msgid "could not parse default ACL list (%s)\n" msgstr "n'a pas pu analyser la liste ACL par d�faut (%s)\n" -#: pg_dump.c:10400 +#: pg_dump.c:11660 #, c-format msgid "could not parse ACL list (%s) for object \"%s\" (%s)\n" msgstr "n'a pas pu analyser la liste ACL (%s) de l'objet � %s � (%s)\n" -#: pg_dump.c:10543 +#: pg_dump.c:12106 #, c-format msgid "query to obtain definition of view \"%s\" returned no data\n" msgstr "" "la requ�te permettant d'obtenir la d�finition de la vue � %s � n'a renvoy�\n" "aucune donn�e\n" -#: pg_dump.c:10546 +#: pg_dump.c:12109 #, c-format msgid "query to obtain definition of view \"%s\" returned more than one definition\n" msgstr "" "la requ�te permettant d'obtenir la d�finition de la vue � %s � a renvoy�\n" " plusieurs d�finitions\n" -#: pg_dump.c:10555 +#: pg_dump.c:12118 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)\n" msgstr "la d�finition de la vue � %s � semble �tre vide (longueur nulle)\n" -#: pg_dump.c:11031 +#: pg_dump.c:12169 +#, c-format +msgid "query returned %d foreign server entry for foreign table \"%s\"\n" +msgid_plural "query returned %d foreign server entries for foreign table \"%s\"\n" +msgstr[0] "la requ�te a renvoy� %d entr�e de serveur distant pour la table distante � %s �\n" +msgstr[1] "la requ�te a renvoy� %d entr�es de serveurs distants pour la table distante � %s �\n" + +#: pg_dump.c:12720 #, c-format msgid "invalid column number %d for table \"%s\"\n" msgstr "num�ro de colonne %d invalide pour la table � %s �\n" -#: pg_dump.c:11139 +#: pg_dump.c:12831 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "index manquant pour la contrainte � %s �\n" -#: pg_dump.c:11327 +#: pg_dump.c:13019 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "type de contrainte inconnu : %c\n" -#: pg_dump.c:11390 +#: pg_dump.c:13082 msgid "missing pg_database entry for this database\n" msgstr "entr�e pg_database manquante pour cette base de donn�es\n" -#: pg_dump.c:11395 +#: pg_dump.c:13087 msgid "found more than one pg_database entry for this database\n" msgstr "a trouv� plusieurs entr�es dans pg_database pour cette base de donn�es\n" -#: pg_dump.c:11427 +#: pg_dump.c:13119 msgid "could not find entry for pg_indexes in pg_class\n" msgstr "n'a pas pu trouver l'entr�e de pg_indexes dans pg_class\n" -#: pg_dump.c:11432 +#: pg_dump.c:13124 msgid "found more than one entry for pg_indexes in pg_class\n" msgstr "a trouv� plusieurs entr�es pour pg_indexes dans la table pg_class\n" -#: pg_dump.c:11503 +#: pg_dump.c:13198 +#: pg_dump.c:13363 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" msgid_plural "query to get data of sequence \"%s\" returned %d rows (expected 1)\n" @@ -773,653 +806,678 @@ msgstr[1] "" "la requ�te permettant d'obtenir les donn�es de la s�quence � %s � a renvoy�\n" "%d lignes (une seule attendue)\n" -#: pg_dump.c:11514 +#: pg_dump.c:13209 #, c-format msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" msgstr "" "la requ�te permettant d'obtenir les donn�es de la s�quence � %s � a renvoy�\n" "le nom � %s �\n" -#: pg_dump.c:11808 +#: pg_dump.c:13450 +#, c-format +msgid "unexpected tgtype value: %d\n" +msgstr "valeur tgtype inattendue : %d\n" + +#: pg_dump.c:13532 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" msgstr "cha�ne argument invalide (%s) pour le trigger � %s � sur la table � %s �\n" -#: pg_dump.c:11924 +#: pg_dump.c:13650 #, c-format msgid "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows returned\n" msgstr "" "la requ�te permettant d'obtenir la r�gle � %s � associ�e � la table � %s �\n" "a �chou� : mauvais nombre de lignes renvoy�es\n" -#: pg_dump.c:12019 +#: pg_dump.c:13912 msgid "reading dependency data\n" msgstr "lecture des donn�es de d�pendance\n" -#: pg_dump.c:12397 +#: pg_dump.c:14401 msgid "SQL command failed\n" msgstr "la commande SQL a �chou�\n" -#: common.c:115 +#: common.c:107 msgid "reading schemas\n" msgstr "lecture des sch�mas\n" -#: common.c:119 +#: common.c:118 +msgid "reading user-defined tables\n" +msgstr "lecture des tables utilisateur\n" + +#: common.c:126 +msgid "reading extensions\n" +msgstr "lecture des extensions\n" + +#: common.c:130 msgid "reading user-defined functions\n" msgstr "lecture des fonctions utilisateur\n" -#: common.c:125 +#: common.c:136 msgid "reading user-defined types\n" msgstr "lecture des types utilisateur\n" -#: common.c:131 +#: common.c:142 msgid "reading procedural languages\n" msgstr "lecture des langages proc�duraux\n" -#: common.c:135 +#: common.c:146 msgid "reading user-defined aggregate functions\n" msgstr "lecture des fonctions d'aggr�gats utilisateur\n" -#: common.c:139 +#: common.c:150 msgid "reading user-defined operators\n" msgstr "lecture des op�rateurs utilisateur\n" -#: common.c:144 +#: common.c:155 msgid "reading user-defined operator classes\n" msgstr "lecture des classes d'op�rateurs utilisateur\n" -#: common.c:148 +#: common.c:159 +msgid "reading user-defined operator families\n" +msgstr "lecture des familles d'op�rateurs utilisateur\n" + +#: common.c:163 msgid "reading user-defined text search parsers\n" msgstr "lecture des analyseurs utilisateur pour la recherche plein texte\n" -#: common.c:152 +#: common.c:167 msgid "reading user-defined text search templates\n" msgstr "lecture des mod�les utilisateur pour la recherche plein texte\n" -#: common.c:156 +#: common.c:171 msgid "reading user-defined text search dictionaries\n" msgstr "lecture des dictionnaires utilisateur pour la recherche plein texte\n" -#: common.c:160 +#: common.c:175 msgid "reading user-defined text search configurations\n" msgstr "lecture des configurations utilisateur pour la recherche plein texte\n" -#: common.c:164 +#: common.c:179 msgid "reading user-defined foreign-data wrappers\n" msgstr "lecture des wrappers de donn�es distantes utilisateur\n" -#: common.c:168 +#: common.c:183 msgid "reading user-defined foreign servers\n" msgstr "lecture des serveurs distants utilisateur\n" -#: common.c:172 +#: common.c:187 msgid "reading default privileges\n" msgstr "lecture des droits par d�faut\n" -#: common.c:176 -msgid "reading user-defined operator families\n" -msgstr "lecture des familles d'op�rateurs utilisateur\n" +#: common.c:191 +msgid "reading user-defined collations\n" +msgstr "lecture des collationnements utilisateurs\n" -#: common.c:180 +#: common.c:196 msgid "reading user-defined conversions\n" msgstr "lecture des conversions utilisateur\n" -#: common.c:184 -msgid "reading user-defined tables\n" -msgstr "lecture des tables utilisateur\n" +#: common.c:200 +msgid "reading type casts\n" +msgstr "lecture des transtypages\n" -#: common.c:189 +#: common.c:204 msgid "reading table inheritance information\n" msgstr "lecture des informations d'h�ritage des tables\n" -#: common.c:193 +#: common.c:208 msgid "reading rewrite rules\n" msgstr "lecture des r�gles de r��criture\n" -#: common.c:197 -msgid "reading type casts\n" -msgstr "lecture des transtypages\n" +#: common.c:217 +msgid "finding extension members\n" +msgstr "recherche des membres d'extension\n" -#: common.c:202 +#: common.c:222 msgid "finding inheritance relationships\n" msgstr "recherche des relations d'h�ritage\n" -#: common.c:206 +#: common.c:226 msgid "reading column info for interesting tables\n" msgstr "lecture des informations de colonnes des tables int�ressantes\n" -#: common.c:210 +#: common.c:230 msgid "flagging inherited columns in subtables\n" msgstr "marquage des colonnes h�rit�es dans les sous-tables\n" -#: common.c:214 +#: common.c:234 msgid "reading indexes\n" msgstr "lecture des index\n" -#: common.c:218 +#: common.c:238 msgid "reading constraints\n" msgstr "lecture des contraintes\n" -#: common.c:222 +#: common.c:242 msgid "reading triggers\n" msgstr "lecture des d�clencheurs\n" -#: common.c:802 +#: common.c:788 #, c-format msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n" msgstr "v�rification �chou�e, OID %u parent de la table � %s � (OID %u) introuvable\n" -#: common.c:844 +#: common.c:830 #, c-format msgid "could not parse numeric array \"%s\": too many numbers\n" msgstr "n'a pas pu analyser le tableau num�rique � %s � : trop de nombres\n" -#: common.c:859 +#: common.c:845 #, c-format msgid "could not parse numeric array \"%s\": invalid character in number\n" msgstr "" "n'a pas pu analyser le tableau num�rique � %s � : caract�re invalide dans\n" "le nombre\n" -#: common.c:972 +#: common.c:958 msgid "cannot duplicate null pointer\n" msgstr "ne peut pas dupliquer un pointeur nul\n" -#: common.c:975 -#: common.c:986 -#: common.c:997 -#: common.c:1008 -#: pg_backup_archiver.c:727 -#: pg_backup_archiver.c:1096 -#: pg_backup_archiver.c:1227 -#: pg_backup_archiver.c:1694 -#: pg_backup_archiver.c:1851 -#: pg_backup_archiver.c:1897 -#: pg_backup_archiver.c:4029 -#: pg_backup_custom.c:144 -#: pg_backup_custom.c:149 -#: pg_backup_custom.c:155 -#: pg_backup_custom.c:170 -#: pg_backup_custom.c:570 -#: pg_backup_custom.c:1113 -#: pg_backup_custom.c:1122 -#: pg_backup_db.c:154 -#: pg_backup_db.c:164 -#: pg_backup_db.c:212 -#: pg_backup_db.c:256 -#: pg_backup_db.c:271 -#: pg_backup_db.c:305 +#: common.c:961 +#: common.c:972 +#: common.c:983 +#: common.c:994 +#: pg_backup_archiver.c:765 +#: pg_backup_archiver.c:1161 +#: pg_backup_archiver.c:1292 +#: pg_backup_archiver.c:1762 +#: pg_backup_archiver.c:1956 +#: pg_backup_archiver.c:2002 +#: pg_backup_archiver.c:4263 +#: pg_backup_custom.c:132 +#: pg_backup_custom.c:139 +#: pg_backup_custom.c:780 +#: pg_backup_custom.c:907 +#: pg_backup_db.c:147 +#: pg_backup_db.c:157 +#: pg_backup_db.c:205 +#: pg_backup_db.c:249 +#: pg_backup_db.c:264 +#: pg_backup_db.c:298 +#: pg_backup_db.c:491 #: pg_backup_files.c:114 #: pg_backup_null.c:72 -#: pg_backup_tar.c:167 -#: pg_backup_tar.c:1011 +#: pg_backup_tar.c:171 +#: pg_backup_tar.c:1005 msgid "out of memory\n" msgstr "m�moire �puis�e\n" -#: pg_backup_archiver.c:80 +#: pg_backup_archiver.c:88 msgid "archiver" msgstr "archiveur" -#: pg_backup_archiver.c:195 -#: pg_backup_archiver.c:1191 +#: pg_backup_archiver.c:208 +#: pg_backup_archiver.c:1260 #, c-format msgid "could not close output file: %s\n" msgstr "n'a pas pu fermer le fichier de sortie : %s\n" -#: pg_backup_archiver.c:220 +#: pg_backup_archiver.c:234 msgid "-C and -c are incompatible options\n" msgstr "-C et -c sont des options incompatibles\n" -#: pg_backup_archiver.c:227 +#: pg_backup_archiver.c:241 msgid "-C and -1 are incompatible options\n" msgstr "-C et -1 sont des options incompatibles\n" -#: pg_backup_archiver.c:239 +#: pg_backup_archiver.c:251 +msgid "parallel restore is not supported with this archive file format\n" +msgstr "" +"la restauration parall�le n'est pas support�e avec ce format de fichier\n" +"d'archive\n" + +#: pg_backup_archiver.c:255 +msgid "parallel restore is not supported with archives made by pre-8.0 pg_dump\n" +msgstr "" +"la restauration parall�le n'est pas support�e avec les archives r�alis�es\n" +"par un pg_dump ant�rieur � la 8.0 d'archive\n" + +#: pg_backup_archiver.c:274 msgid "cannot restore from compressed archive (compression not supported in this installation)\n" msgstr "" "ne peut pas restaurer � partir de l'archive compress�e (compression non\n" "disponible dans cette installation)\n" -#: pg_backup_archiver.c:249 +#: pg_backup_archiver.c:284 msgid "connecting to database for restore\n" msgstr "connexion � la base de donn�es pour la restauration\n" -#: pg_backup_archiver.c:251 +#: pg_backup_archiver.c:286 msgid "direct database connections are not supported in pre-1.3 archives\n" msgstr "" "les connexions directes � la base de donn�es ne sont pas support�es dans\n" "les archives pre-1.3\n" -#: pg_backup_archiver.c:293 +#: pg_backup_archiver.c:328 msgid "implied data-only restore\n" msgstr "a impliqu� une restauration des donn�es uniquement\n" -#: pg_backup_archiver.c:344 +#: pg_backup_archiver.c:380 #, c-format msgid "dropping %s %s\n" msgstr "suppression de %s %s\n" -#: pg_backup_archiver.c:396 +#: pg_backup_archiver.c:432 #, c-format msgid "setting owner and privileges for %s %s\n" msgstr "r�glage du propri�taire et des droits pour %s %s\n" -#: pg_backup_archiver.c:454 -#: pg_backup_archiver.c:456 +#: pg_backup_archiver.c:490 +#: pg_backup_archiver.c:492 #, c-format msgid "warning from original dump file: %s\n" msgstr "message d'avertissement du fichier de sauvegarde original : %s\n" -#: pg_backup_archiver.c:463 +#: pg_backup_archiver.c:499 #, c-format msgid "creating %s %s\n" msgstr "cr�ation de %s %s\n" -#: pg_backup_archiver.c:507 +#: pg_backup_archiver.c:543 #, c-format msgid "connecting to new database \"%s\"\n" msgstr "connexion � la nouvelle base de donn�es � %s �\n" -#: pg_backup_archiver.c:535 +#: pg_backup_archiver.c:571 #, c-format msgid "restoring %s\n" msgstr "restauration de %s\n" -#: pg_backup_archiver.c:549 +#: pg_backup_archiver.c:585 #, c-format msgid "restoring data for table \"%s\"\n" msgstr "restauration des donn�es de la table � %s �\n" -#: pg_backup_archiver.c:609 +#: pg_backup_archiver.c:647 #, c-format msgid "executing %s %s\n" msgstr "ex�cution de %s %s\n" -#: pg_backup_archiver.c:642 +#: pg_backup_archiver.c:680 #, c-format msgid "disabling triggers for %s\n" msgstr "d�sactivation des d�clencheurs pour %s\n" -#: pg_backup_archiver.c:668 +#: pg_backup_archiver.c:706 #, c-format msgid "enabling triggers for %s\n" msgstr "activation des triggers pour %s\n" -#: pg_backup_archiver.c:698 +#: pg_backup_archiver.c:736 msgid "internal error -- WriteData cannot be called outside the context of a DataDumper routine\n" msgstr "" "erreur interne -- WriteData ne peut pas �tre appel� en dehors du contexte\n" "de la routine DataDumper\n" -#: pg_backup_archiver.c:854 +#: pg_backup_archiver.c:893 msgid "large-object output not supported in chosen format\n" msgstr "la sauvegarde des � Large Objects � n'est pas support�e dans le format choisi\n" -#: pg_backup_archiver.c:908 +#: pg_backup_archiver.c:947 #, c-format msgid "restored %d large object\n" msgid_plural "restored %d large objects\n" msgstr[0] "restauration de %d � Large Object �\n" msgstr[1] "restauration de %d � Large Objects �\n" -#: pg_backup_archiver.c:929 +#: pg_backup_archiver.c:968 +#: pg_backup_tar.c:723 #, c-format msgid "restoring large object with OID %u\n" msgstr "restauration du � Large Object � d'OID %u\n" -#: pg_backup_archiver.c:941 +#: pg_backup_archiver.c:980 #, c-format msgid "could not create large object %u: %s" msgstr "n'a pas pu cr�er le � Large Object � %u : %s" -#: pg_backup_archiver.c:1010 +#: pg_backup_archiver.c:1042 #, c-format msgid "could not open TOC file \"%s\": %s\n" msgstr "n'a pas pu ouvrir le fichier TOC � %s � : %s\n" -#: pg_backup_archiver.c:1029 +#: pg_backup_archiver.c:1083 #, c-format msgid "WARNING: line ignored: %s\n" msgstr "ATTENTION : ligne ignor�e : %s\n" -#: pg_backup_archiver.c:1036 +#: pg_backup_archiver.c:1090 #, c-format msgid "could not find entry for ID %d\n" msgstr "n'a pas pu trouver l'entr�e pour l'ID %d\n" -#: pg_backup_archiver.c:1046 +#: pg_backup_archiver.c:1111 #: pg_backup_files.c:172 #: pg_backup_files.c:457 #, c-format msgid "could not close TOC file: %s\n" msgstr "n'a pas pu fermer le fichier TOC : %s\n" -#: pg_backup_archiver.c:1170 -#: pg_backup_custom.c:181 +#: pg_backup_archiver.c:1230 +#: pg_backup_custom.c:152 #: pg_backup_files.c:130 #: pg_backup_files.c:262 #, c-format msgid "could not open output file \"%s\": %s\n" msgstr "n'a pas pu ouvrir le fichier de sauvegarde � %s � : %s\n" -#: pg_backup_archiver.c:1173 -#: pg_backup_custom.c:188 +#: pg_backup_archiver.c:1233 +#: pg_backup_custom.c:159 #: pg_backup_files.c:137 #, c-format msgid "could not open output file: %s\n" msgstr "n'a pas pu ouvrir le fichier de sauvegarde : %s\n" -#: pg_backup_archiver.c:1270 +#: pg_backup_archiver.c:1335 #, c-format msgid "wrote %lu byte of large object data (result = %lu)\n" msgid_plural "wrote %lu bytes of large object data (result = %lu)\n" msgstr[0] "a �crit %lu octet de donn�es d'un � Large Object � (r�sultat = %lu)\n" msgstr[1] "a �crit %lu octets de donn�es d'un � Large Object � (r�sultat = %lu)\n" -#: pg_backup_archiver.c:1276 +#: pg_backup_archiver.c:1341 #, c-format msgid "could not write to large object (result: %lu, expected: %lu)\n" msgstr "n'a pas pu �crire le � Large Object � (r�sultat : %lu, attendu : %lu)\n" -#: pg_backup_archiver.c:1334 -#: pg_backup_archiver.c:1357 -#: pg_backup_custom.c:781 -#: pg_backup_custom.c:1035 -#: pg_backup_custom.c:1049 +#: pg_backup_archiver.c:1399 +#: pg_backup_archiver.c:1422 +#: pg_backup_custom.c:652 #: pg_backup_files.c:432 -#: pg_backup_tar.c:586 -#: pg_backup_tar.c:1089 -#: pg_backup_tar.c:1382 +#: pg_backup_tar.c:590 +#: pg_backup_tar.c:1092 +#: pg_backup_tar.c:1385 #, c-format msgid "could not write to output file: %s\n" msgstr "n'a pas pu �crire dans le fichier de sauvegarde : %s\n" -#: pg_backup_archiver.c:1342 +#: pg_backup_archiver.c:1407 msgid "could not write to custom output routine\n" msgstr "n'a pas pu �crire vers la routine de sauvegarde personnalis�e\n" -#: pg_backup_archiver.c:1440 +#: pg_backup_archiver.c:1505 msgid "Error while INITIALIZING:\n" msgstr "Erreur pendant l'initialisation (� INITIALIZING �) :\n" -#: pg_backup_archiver.c:1445 +#: pg_backup_archiver.c:1510 msgid "Error while PROCESSING TOC:\n" msgstr "Erreur pendant le traitement de la TOC (� PROCESSING TOC �) :\n" -#: pg_backup_archiver.c:1450 +#: pg_backup_archiver.c:1515 msgid "Error while FINALIZING:\n" msgstr "Erreur pendant la finalisation (� FINALIZING �) :\n" -#: pg_backup_archiver.c:1455 +#: pg_backup_archiver.c:1520 #, c-format msgid "Error from TOC entry %d; %u %u %s %s %s\n" msgstr "Erreur � partir de l'entr�e TOC %d ; %u %u %s %s %s\n" -#: pg_backup_archiver.c:1587 +#: pg_backup_archiver.c:1655 #, c-format msgid "unexpected data offset flag %d\n" msgstr "drapeau de d�calage de donn�es inattendu %d\n" -#: pg_backup_archiver.c:1600 +#: pg_backup_archiver.c:1668 msgid "file offset in dump file is too large\n" msgstr "le d�calage dans le fichier de sauvegarde est trop important\n" -#: pg_backup_archiver.c:1697 -#: pg_backup_archiver.c:2998 -#: pg_backup_custom.c:757 +#: pg_backup_archiver.c:1765 +#: pg_backup_archiver.c:3167 +#: pg_backup_custom.c:630 #: pg_backup_files.c:419 -#: pg_backup_tar.c:785 +#: pg_backup_tar.c:779 msgid "unexpected end of file\n" msgstr "fin de fichier inattendu\n" -#: pg_backup_archiver.c:1714 +#: pg_backup_archiver.c:1782 msgid "attempting to ascertain archive format\n" msgstr "tentative d'identification du format de l'archive\n" -#: pg_backup_archiver.c:1730 -#: pg_backup_custom.c:200 -#: pg_backup_custom.c:888 +#: pg_backup_archiver.c:1808 +#: pg_backup_archiver.c:1818 +#, c-format +msgid "directory name too long: \"%s\"\n" +msgstr "nom du r�pertoire trop long : � %s �\n" + +#: pg_backup_archiver.c:1826 +#, c-format +msgid "directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not exist)\n" +msgstr "le r�pertoire � %s � ne semble pas �tre une archive valide (� toc.dat � n'existe pas)\n" + +#: pg_backup_archiver.c:1834 +#: pg_backup_custom.c:171 +#: pg_backup_custom.c:762 #: pg_backup_files.c:155 #: pg_backup_files.c:307 #, c-format msgid "could not open input file \"%s\": %s\n" msgstr "n'a pas pu ouvrir le fichier en entr�e � %s � : %s\n" -#: pg_backup_archiver.c:1737 -#: pg_backup_custom.c:207 +#: pg_backup_archiver.c:1842 +#: pg_backup_custom.c:178 #: pg_backup_files.c:162 #, c-format msgid "could not open input file: %s\n" msgstr "n'a pas pu ouvrir le fichier en entr�e : %s\n" -#: pg_backup_archiver.c:1746 +#: pg_backup_archiver.c:1851 #, c-format msgid "could not read input file: %s\n" msgstr "n'a pas pu lire le fichier en entr�e : %s\n" -#: pg_backup_archiver.c:1748 +#: pg_backup_archiver.c:1853 #, c-format msgid "input file is too short (read %lu, expected 5)\n" msgstr "le fichier en entr�e est trop petit (%lu lus, 5 attendus)\n" -#: pg_backup_archiver.c:1806 +#: pg_backup_archiver.c:1911 msgid "input file does not appear to be a valid archive (too short?)\n" msgstr "le fichier en entr�e ne semble pas �tre une archive valide (trop petit ?)\n" -#: pg_backup_archiver.c:1809 +#: pg_backup_archiver.c:1914 msgid "input file does not appear to be a valid archive\n" msgstr "le fichier en entr�e ne semble pas �tre une archive valide\n" -#: pg_backup_archiver.c:1829 +#: pg_backup_archiver.c:1934 #, c-format msgid "could not close input file: %s\n" msgstr "n'a pas pu fermer le fichier en entr�e : %s\n" -#: pg_backup_archiver.c:1846 +#: pg_backup_archiver.c:1951 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "allocation d'AH pour %s, format %d\n" -#: pg_backup_archiver.c:1954 +#: pg_backup_archiver.c:2062 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "format de fichier � %d � non reconnu\n" -#: pg_backup_archiver.c:2076 +#: pg_backup_archiver.c:2184 #, c-format msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" msgstr "ID %d de l'entr�e en dehors de la plage -- peut-�tre un TOC corrompu\n" -#: pg_backup_archiver.c:2192 +#: pg_backup_archiver.c:2300 #, c-format msgid "read TOC entry %d (ID %d) for %s %s\n" msgstr "lecture de l'entr�e %d de la TOC (ID %d) pour %s %s\n" -#: pg_backup_archiver.c:2226 +#: pg_backup_archiver.c:2334 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "encodage � %s � non reconnu\n" -#: pg_backup_archiver.c:2231 +#: pg_backup_archiver.c:2339 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "�l�ment ENCODING invalide : %s\n" -#: pg_backup_archiver.c:2249 +#: pg_backup_archiver.c:2357 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "�l�ment STDSTRINGS invalide : %s\n" -#: pg_backup_archiver.c:2441 +#: pg_backup_archiver.c:2555 #, c-format msgid "could not set session user to \"%s\": %s" msgstr "n'a pas pu initialiser la session utilisateur � � %s �: %s" -#: pg_backup_archiver.c:2779 -#: pg_backup_archiver.c:2929 +#: pg_backup_archiver.c:2895 +#: pg_backup_archiver.c:3077 #, c-format msgid "WARNING: don't know how to set owner for object type %s\n" msgstr "ATTENTION : ne sait pas comment initialiser le propri�taire du type d'objet %s\n" -#: pg_backup_archiver.c:2961 +#: pg_backup_archiver.c:3130 msgid "WARNING: requested compression not available in this installation -- archive will be uncompressed\n" msgstr "" "ATTENTION : la compression requise n'est pas disponible avec cette\n" "installation -- l'archive ne sera pas compress�e\n" -#: pg_backup_archiver.c:3001 +#: pg_backup_archiver.c:3170 msgid "did not find magic string in file header\n" msgstr "n'a pas trouver la cha�ne magique dans le fichier d'en-t�te\n" -#: pg_backup_archiver.c:3014 +#: pg_backup_archiver.c:3183 #, c-format msgid "unsupported version (%d.%d) in file header\n" msgstr "version non support�e (%d.%d) dans le fichier d'en-t�te\n" -#: pg_backup_archiver.c:3019 +#: pg_backup_archiver.c:3188 #, c-format msgid "sanity check on integer size (%lu) failed\n" msgstr "�chec de la v�rification sur la taille de l'entier (%lu)\n" -#: pg_backup_archiver.c:3023 +#: pg_backup_archiver.c:3192 msgid "WARNING: archive was made on a machine with larger integers, some operations might fail\n" msgstr "" "ATTENTION : l'archive a �t� cr��e sur une machine disposant d'entiers plus\n" "larges, certaines op�rations peuvent �chouer\n" -#: pg_backup_archiver.c:3033 +#: pg_backup_archiver.c:3202 #, c-format msgid "expected format (%d) differs from format found in file (%d)\n" msgstr "le format attendu (%d) diff�re du format du fichier (%d)\n" -#: pg_backup_archiver.c:3049 +#: pg_backup_archiver.c:3218 msgid "WARNING: archive is compressed, but this installation does not support compression -- no data will be available\n" msgstr "" "ATTENTION : l'archive est compress�e mais cette installation ne supporte\n" "pas la compression -- aucune donn�e ne sera disponible\n" -#: pg_backup_archiver.c:3067 +#: pg_backup_archiver.c:3236 msgid "WARNING: invalid creation date in header\n" msgstr "ATTENTION : date de cr�ation invalide dans l'en-t�te\n" -#: pg_backup_archiver.c:3164 +#: pg_backup_archiver.c:3334 msgid "entering restore_toc_entries_parallel\n" msgstr "entr�e dans restore_toc_entries_parallel\n" -#: pg_backup_archiver.c:3168 -msgid "parallel restore is not supported with this archive file format\n" -msgstr "" -"la restauration parall�le n'est pas support�e avec ce format de fichier\n" -"d'archive\n" - -#: pg_backup_archiver.c:3172 -msgid "parallel restore is not supported with archives made by pre-8.0 pg_dump\n" -msgstr "" -"la restauration parall�le n'est pas support�e avec les archives r�alis�es\n" -"par un pg_dump ant�rieur � la 8.0 d'archive\n" - -#: pg_backup_archiver.c:3191 +#: pg_backup_archiver.c:3375 #, c-format msgid "processing item %d %s %s\n" msgstr "traitement de l'�l�ment %d %s %s\n" -#: pg_backup_archiver.c:3247 +#: pg_backup_archiver.c:3451 msgid "entering main parallel loop\n" msgstr "entr�e dans la boucle parall�le principale\n" -#: pg_backup_archiver.c:3261 +#: pg_backup_archiver.c:3465 #, c-format msgid "skipping item %d %s %s\n" msgstr "omission de l'�l�ment %d %s %s\n" -#: pg_backup_archiver.c:3277 +#: pg_backup_archiver.c:3481 #, c-format msgid "launching item %d %s %s\n" msgstr "�l�ment de lancement %d %s %s\n" -#: pg_backup_archiver.c:3314 +#: pg_backup_archiver.c:3518 #, c-format msgid "worker process crashed: status %d\n" msgstr "crash du processus worker : statut %d\n" -#: pg_backup_archiver.c:3319 +#: pg_backup_archiver.c:3523 msgid "finished main parallel loop\n" msgstr "fin de la boucle parall�le principale\n" -#: pg_backup_archiver.c:3337 +#: pg_backup_archiver.c:3541 #, c-format msgid "processing missed item %d %s %s\n" msgstr "traitement de l'�l�ment manquant %d %s %s\n" -#: pg_backup_archiver.c:3363 +#: pg_backup_archiver.c:3567 msgid "parallel_restore should not return\n" msgstr "parallel_restore ne devrait pas retourner\n" -#: pg_backup_archiver.c:3369 +#: pg_backup_archiver.c:3573 #, c-format msgid "could not create worker process: %s\n" msgstr "n'a pas pu cr�er le processus de travail : %s\n" -#: pg_backup_archiver.c:3377 +#: pg_backup_archiver.c:3581 #, c-format msgid "could not create worker thread: %s\n" msgstr "n'a pas pu cr�er le fil de travail: %s\n" -#: pg_backup_archiver.c:3601 +#: pg_backup_archiver.c:3805 msgid "no item ready\n" msgstr "aucun �l�ment pr�t\n" -#: pg_backup_archiver.c:3696 +#: pg_backup_archiver.c:3900 msgid "could not find slot of finished worker\n" msgstr "n'a pas pu trouver l'emplacement du worker qui vient de terminer\n" -#: pg_backup_archiver.c:3698 +#: pg_backup_archiver.c:3902 #, c-format msgid "finished item %d %s %s\n" msgstr "�l�ment termin� %d %s %s\n" -#: pg_backup_archiver.c:3711 +#: pg_backup_archiver.c:3915 #, c-format msgid "worker process failed: exit code %d\n" msgstr "�chec du processus de travail : code de sortie %d\n" -#: pg_backup_archiver.c:3863 +#: pg_backup_archiver.c:4111 #, c-format msgid "transferring dependency %d -> %d to %d\n" msgstr "transfert de la d�pendance %d -> %d vers %d\n" -#: pg_backup_archiver.c:3937 +#: pg_backup_archiver.c:4180 #, c-format msgid "reducing dependencies for %d\n" msgstr "r�duction des d�pendances pour %d\n" -#: pg_backup_archiver.c:3995 +#: pg_backup_archiver.c:4229 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "la table � %s � n'a pas pu �tre cr��e, ses donn�es ne seront pas restaur�es\n" -#: pg_backup_custom.c:97 +#: pg_backup_custom.c:87 msgid "custom archiver" msgstr "programme d'archivage personnalis�" -#: pg_backup_custom.c:405 +#: pg_backup_custom.c:373 #: pg_backup_null.c:153 msgid "invalid OID for large object\n" msgstr "OID invalide pour le � Large Object �\n" -#: pg_backup_custom.c:471 +#: pg_backup_custom.c:444 #, c-format msgid "unrecognized data block type (%d) while searching archive\n" msgstr "" "type de bloc de donn�es non reconnu (%d) lors de la recherche dans\n" "l'archive\n" -#: pg_backup_custom.c:482 +#: pg_backup_custom.c:455 #, c-format msgid "error during file seek: %s\n" msgstr "erreur lors du parcours du fichier : %s\n" -#: pg_backup_custom.c:492 +#: pg_backup_custom.c:465 #, c-format msgid "could not find block ID %d in archive -- possibly due to out-of-order restore request, which cannot be handled due to lack of data offsets in archive\n" msgstr "" @@ -1428,7 +1486,7 @@ msgstr "" "diff�rent, qui n'a pas pu �tre g�r� � cause d'un manque d'information de\n" "position dans l'archive\n" -#: pg_backup_custom.c:497 +#: pg_backup_custom.c:470 #, c-format msgid "could not find block ID %d in archive -- possibly due to out-of-order restore request, which cannot be handled due to non-seekable input file\n" msgstr "" @@ -1437,182 +1495,161 @@ msgstr "" "diff�rent, ce qui ne peut pas �tre g�r� � cause d'un fichier non g�rable en\n" "recherche\n" -#: pg_backup_custom.c:502 +#: pg_backup_custom.c:475 #, c-format msgid "could not find block ID %d in archive -- possibly corrupt archive\n" msgstr "" "n'a pas pu trouver l'identifiant de bloc %d dans l'archive -\n" "possible corruption de l'archive\n" -#: pg_backup_custom.c:509 +#: pg_backup_custom.c:482 #, c-format msgid "found unexpected block ID (%d) when reading data -- expected %d\n" msgstr "ID de bloc inattendu (%d) lors de la lecture des donn�es -- %d attendu\n" -#: pg_backup_custom.c:523 +#: pg_backup_custom.c:496 #, c-format msgid "unrecognized data block type %d while restoring archive\n" msgstr "type de bloc de donn�es %d non reconnu lors de la restauration de l'archive\n" -#: pg_backup_custom.c:557 -#: pg_backup_custom.c:985 -#, c-format -msgid "could not initialize compression library: %s\n" -msgstr "n'a pas pu initialiser la biblioth�que de compression : %s\n" - -#: pg_backup_custom.c:581 -#: pg_backup_custom.c:705 +#: pg_backup_custom.c:578 +#: pg_backup_custom.c:916 msgid "could not read from input file: end of file\n" msgstr "n'a pas pu lire � partir du fichier en entr�e : fin du fichier\n" -#: pg_backup_custom.c:584 -#: pg_backup_custom.c:708 +#: pg_backup_custom.c:581 +#: pg_backup_custom.c:919 #, c-format msgid "could not read from input file: %s\n" msgstr "n'a pas pu lire � partir du fichier en entr�e : %s\n" -#: pg_backup_custom.c:601 -#: pg_backup_custom.c:628 -#, c-format -msgid "could not uncompress data: %s\n" -msgstr "n'a pas pu d�compresser les donn�es : %s\n" - -#: pg_backup_custom.c:634 -#, c-format -msgid "could not close compression library: %s\n" -msgstr "n'a pas pu fermer la biblioth�que de compression : %s\n" - -#: pg_backup_custom.c:736 +#: pg_backup_custom.c:610 #, c-format msgid "could not write byte: %s\n" msgstr "n'a pas pu �crire un octet : %s\n" -#: pg_backup_custom.c:849 -#: pg_backup_custom.c:882 +#: pg_backup_custom.c:718 +#: pg_backup_custom.c:756 #, c-format msgid "could not close archive file: %s\n" msgstr "n'a pas pu fermer le fichier d'archive : %s\n" -#: pg_backup_custom.c:868 +#: pg_backup_custom.c:737 msgid "can only reopen input archives\n" msgstr "peut seulement rouvrir l'archive en entr�e\n" -#: pg_backup_custom.c:870 -msgid "cannot reopen stdin\n" -msgstr "ne peut pas rouvrir stdin\n" +#: pg_backup_custom.c:744 +msgid "parallel restore from stdin is not supported\n" +msgstr "la restauration parall�lis�e n'est pas support�e � partir de stdin\n" -#: pg_backup_custom.c:872 -msgid "cannot reopen non-seekable file\n" -msgstr "ne peut pas rouvrir le fichier non cherchable\n" +#: pg_backup_custom.c:746 +msgid "parallel restore from non-seekable file is not supported\n" +msgstr "la restauration parall�lis�e n'est pas support�e � partir de fichiers sans table de mati�re\n" -#: pg_backup_custom.c:877 +#: pg_backup_custom.c:751 #, c-format msgid "could not determine seek position in archive file: %s\n" msgstr "n'a pas pu d�terminer la position de recherche dans le fichier d'archive : %s\n" -#: pg_backup_custom.c:892 +#: pg_backup_custom.c:766 #, c-format msgid "could not set seek position in archive file: %s\n" msgstr "n'a pas pu initialiser la recherche de position dans le fichier d'archive : %s\n" -#: pg_backup_custom.c:914 +#: pg_backup_custom.c:786 +msgid "compressor active\n" +msgstr "compression activ�e\n" + +#: pg_backup_custom.c:822 msgid "WARNING: ftell mismatch with expected position -- ftell used\n" msgstr "ATTENTION : ftell ne correspond pas � la position attendue -- ftell utilis�\n" -#: pg_backup_custom.c:1016 -#, c-format -msgid "could not compress data: %s\n" -msgstr "n'a pas pu compresser les donn�es : %s\n" - -#: pg_backup_custom.c:1094 -#, c-format -msgid "could not close compression stream: %s\n" -msgstr "n'a pas pu fermer le flux de compression : %s\n" - #: pg_backup_db.c:25 msgid "archiver (db)" msgstr "programme d'archivage (db)" -#: pg_backup_db.c:61 +#: pg_backup_db.c:54 msgid "could not get server_version from libpq\n" msgstr "n'a pas pu obtenir server_version de libpq\n" -#: pg_backup_db.c:74 -#: pg_dumpall.c:1717 +#: pg_backup_db.c:67 +#: pg_dumpall.c:1741 #, c-format msgid "server version: %s; %s version: %s\n" msgstr "version du serveur : %s ; %s version : %s\n" -#: pg_backup_db.c:76 -#: pg_dumpall.c:1719 +#: pg_backup_db.c:69 +#: pg_dumpall.c:1743 #, c-format msgid "aborting because of server version mismatch\n" msgstr "annulation � cause de la diff�rence des versions\n" -#: pg_backup_db.c:147 +#: pg_backup_db.c:140 #, c-format msgid "connecting to database \"%s\" as user \"%s\"\n" msgstr "connexion � la base de donn�es � %s � en tant qu'utilisateur � %s �\n" -#: pg_backup_db.c:152 -#: pg_backup_db.c:207 -#: pg_backup_db.c:254 -#: pg_backup_db.c:303 -#: pg_dumpall.c:1613 -#: pg_dumpall.c:1665 +#: pg_backup_db.c:145 +#: pg_backup_db.c:200 +#: pg_backup_db.c:247 +#: pg_backup_db.c:296 +#: pg_dumpall.c:1637 +#: pg_dumpall.c:1689 msgid "Password: " msgstr "Mot de passe : " -#: pg_backup_db.c:188 +#: pg_backup_db.c:181 msgid "failed to reconnect to database\n" msgstr "la reconnexion � la base de donn�es a �chou�\n" -#: pg_backup_db.c:193 +#: pg_backup_db.c:186 #, c-format msgid "could not reconnect to database: %s" msgstr "n'a pas pu se reconnecter � la base de donn�es : %s" -#: pg_backup_db.c:209 +#: pg_backup_db.c:202 msgid "connection needs password\n" msgstr "la connexion n�cessite un mot de passe\n" -#: pg_backup_db.c:250 +#: pg_backup_db.c:243 msgid "already connected to a database\n" msgstr "d�j� connect� � une base de donn�es\n" -#: pg_backup_db.c:295 +#: pg_backup_db.c:288 msgid "failed to connect to database\n" msgstr "n'a pas pu se connecter � la base de donn�es\n" -#: pg_backup_db.c:314 +#: pg_backup_db.c:307 #, c-format msgid "connection to database \"%s\" failed: %s" msgstr "la connexion � la base de donn�es � %s � a �chou� : %s" -#: pg_backup_db.c:329 +#: pg_backup_db.c:322 #, c-format msgid "%s" msgstr "%s" -#: pg_backup_db.c:441 +#: pg_backup_db.c:414 +#: pg_backup_db.c:485 +#: pg_backup_db.c:494 +msgid "could not execute query" +msgstr "n'a pas pu ex�cuter la requ�te" + +#: pg_backup_db.c:465 #, c-format msgid "error returned by PQputCopyData: %s" msgstr "erreur renvoy�e par PQputCopyData : %s" -#: pg_backup_db.c:451 +#: pg_backup_db.c:513 #, c-format msgid "error returned by PQputCopyEnd: %s" msgstr "erreur renvoy�e par PQputCopyEnd : %s" -#: pg_backup_db.c:498 -msgid "could not execute query" -msgstr "n'a pas pu ex�cuter la requ�te" - -#: pg_backup_db.c:696 +#: pg_backup_db.c:530 msgid "could not start database transaction" msgstr "n'a pas pu d�marrer la transaction de la base de donn�es" -#: pg_backup_db.c:702 +#: pg_backup_db.c:536 msgid "could not commit database transaction" msgstr "n'a pas pu valider la transaction de la base de donn�es" @@ -1660,7 +1697,7 @@ msgid "could not open large object TOC for output: %s\n" msgstr "n'a pas pu ouvrir la TOC du � Large Object � en sortie : %s\n" #: pg_backup_files.c:510 -#: pg_backup_tar.c:935 +#: pg_backup_tar.c:929 #, c-format msgid "invalid OID for large object (%u)\n" msgstr "OID invalide pour le � Large Object � (%u)\n" @@ -1678,120 +1715,108 @@ msgstr "n'a pas pu fermer le fichier du msgid "this format cannot be read\n" msgstr "ce format ne peut pas �tre lu\n" -#: pg_backup_tar.c:101 +#: pg_backup_tar.c:105 msgid "tar archiver" msgstr "archiveur tar" -#: pg_backup_tar.c:179 +#: pg_backup_tar.c:183 #, c-format msgid "could not open TOC file \"%s\" for output: %s\n" msgstr "n'a pas pu ouvrir le fichier TOC � %s � en sortie : %s\n" -#: pg_backup_tar.c:187 +#: pg_backup_tar.c:191 #, c-format msgid "could not open TOC file for output: %s\n" msgstr "n'a pas pu ouvrir le fichier TOC en sortie : %s\n" -#: pg_backup_tar.c:214 -#: pg_backup_tar.c:370 +#: pg_backup_tar.c:218 +#: pg_backup_tar.c:374 msgid "compression is not supported by tar archive format\n" msgstr "compression non support�e par le format des archives tar\n" -#: pg_backup_tar.c:222 +#: pg_backup_tar.c:226 #, c-format msgid "could not open TOC file \"%s\" for input: %s\n" msgstr "n'a pas pu ouvrir le fichier TOC � %s � en entr�e : %s\n" -#: pg_backup_tar.c:229 +#: pg_backup_tar.c:233 #, c-format msgid "could not open TOC file for input: %s\n" msgstr "n'a pas pu ouvrir le fichier TOC en entr�e : %s\n" -#: pg_backup_tar.c:356 +#: pg_backup_tar.c:360 #, c-format msgid "could not find file \"%s\" in archive\n" msgstr "n'a pas pu trouver le fichier � %s � dans l'archive\n" -#: pg_backup_tar.c:412 +#: pg_backup_tar.c:416 #, c-format msgid "could not generate temporary file name: %s\n" msgstr "impossible de cr�er le nom du fichier temporaire : %s\n" -#: pg_backup_tar.c:421 +#: pg_backup_tar.c:425 msgid "could not open temporary file\n" msgstr "n'a pas pu ouvrir le fichier temporaire\n" -#: pg_backup_tar.c:448 +#: pg_backup_tar.c:452 msgid "could not close tar member\n" msgstr "n'a pas pu fermer le membre de tar\n" -#: pg_backup_tar.c:548 +#: pg_backup_tar.c:552 msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" msgstr "erreur interne -- ni th ni fh ne sont pr�cis�s dans tarReadRaw()\n" -#: pg_backup_tar.c:674 -#, c-format -msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n" -msgstr "instruction COPY invalide -- n'a pas pu trouver � copy � dans la cha�ne � %s �\n" - -#: pg_backup_tar.c:692 +#: pg_backup_tar.c:678 #, c-format -msgid "invalid COPY statement -- could not find \"from stdin\" in string \"%s\" starting at position %lu\n" -msgstr "" -"instruction COPY invalide -- n'a pas pu trouver � from stdin � dans la\n" -"cha�ne � %s � � partir de la position %lu\n" - -#: pg_backup_tar.c:729 -#, c-format -msgid "restoring large object OID %u\n" -msgstr "restauration du � Large Object � d'OID %u\n" +msgid "unexpected COPY statement syntax: \"%s\"\n" +msgstr "syntaxe inattendue de l'instruction COPY : � %s �\n" -#: pg_backup_tar.c:880 +#: pg_backup_tar.c:874 msgid "could not write null block at end of tar archive\n" msgstr "n'a pas pu �crire le bloc nul � la fin de l'archive tar\n" -#: pg_backup_tar.c:1080 +#: pg_backup_tar.c:1083 msgid "archive member too large for tar format\n" msgstr "membre de l'archive trop volumineux pour le format tar\n" -#: pg_backup_tar.c:1095 +#: pg_backup_tar.c:1098 #, c-format msgid "could not close temporary file: %s\n" msgstr "n'a pas pu ouvrir le fichier temporaire : %s\n" -#: pg_backup_tar.c:1105 +#: pg_backup_tar.c:1108 #, c-format msgid "actual file length (%s) does not match expected (%s)\n" msgstr "" "la longueur r�elle du fichier (%s) ne correspond pas � ce qui �tait attendu\n" "(%s)\n" -#: pg_backup_tar.c:1113 +#: pg_backup_tar.c:1116 msgid "could not output padding at end of tar member\n" msgstr "n'a pas pu remplir la fin du membre de tar\n" -#: pg_backup_tar.c:1142 +#: pg_backup_tar.c:1145 #, c-format msgid "moving from position %s to next member at file position %s\n" msgstr "d�placement de la position %s vers le prochain membre � la position %s du fichier\n" -#: pg_backup_tar.c:1153 +#: pg_backup_tar.c:1156 #, c-format msgid "now at file position %s\n" msgstr "maintenant en position %s du fichier\n" -#: pg_backup_tar.c:1162 -#: pg_backup_tar.c:1192 +#: pg_backup_tar.c:1165 +#: pg_backup_tar.c:1195 #, c-format msgid "could not find header for file \"%s\" in tar archive\n" msgstr "n'a pas pu trouver l'en-t�te du fichier � %s � dans l'archive tar\n" -#: pg_backup_tar.c:1176 +#: pg_backup_tar.c:1179 #, c-format msgid "skipping tar member %s\n" msgstr "omission du membre %s du tar\n" -#: pg_backup_tar.c:1180 +#: pg_backup_tar.c:1183 #, c-format msgid "restoring data out of order is not supported in this archive format: \"%s\" is required, but comes before \"%s\" in the archive file.\n" msgstr "" @@ -1799,57 +1824,57 @@ msgstr "" "d'archive : � %s � est requis mais vient avant � %s � dans le fichier\n" "d'archive.\n" -#: pg_backup_tar.c:1226 +#: pg_backup_tar.c:1229 #, c-format msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n" msgstr "" "pas de correspondance entre la position r�elle et celle pr�vue du fichier\n" "(%s vs. %s)\n" -#: pg_backup_tar.c:1241 +#: pg_backup_tar.c:1244 #, c-format msgid "incomplete tar header found (%lu byte)\n" msgid_plural "incomplete tar header found (%lu bytes)\n" msgstr[0] "en-t�te incomplet du fichier tar (%lu octet)\n" msgstr[1] "en-t�te incomplet du fichier tar (%lu octets)\n" -#: pg_backup_tar.c:1279 +#: pg_backup_tar.c:1282 #, c-format msgid "TOC Entry %s at %s (length %lu, checksum %d)\n" msgstr "entr�e TOC %s � %s (longueur %lu, somme de contr�le %d)\n" -#: pg_backup_tar.c:1289 +#: pg_backup_tar.c:1292 #, c-format msgid "corrupt tar header found in %s (expected %d, computed %d) file position %s\n" msgstr "" "en-t�te tar corrompu trouv� dans %s (%d attendu, %d calcul� ) � la\n" "position %s du fichier\n" -#: pg_restore.c:308 +#: pg_restore.c:300 #, c-format msgid "%s: options -d/--dbname and -f/--file cannot be used together\n" msgstr "" "%s : les options � -d/--dbname � et � -f/--file � ne peuvent pas �tre\n" "utilis�es conjointement\n" -#: pg_restore.c:320 +#: pg_restore.c:312 #, c-format msgid "%s: cannot specify both --single-transaction and multiple jobs\n" msgstr "" "%s : les options --single-transaction et -j ne peuvent pas �tre indiqu�es\n" "simultan�ment\n" -#: pg_restore.c:350 +#: pg_restore.c:348 #, c-format -msgid "unrecognized archive format \"%s\"; please specify \"c\" or \"t\"\n" -msgstr "format d'archive � %s � non reconnu ; merci d'indiquer � c � ou � t �\n" +msgid "unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"\n" +msgstr "format d'archive � %s � non reconnu ; merci d'indiquer � c �, � d � ou � t �\n" -#: pg_restore.c:384 +#: pg_restore.c:382 #, c-format msgid "WARNING: errors ignored on restore: %d\n" msgstr "ATTENTION : erreurs ignor�es lors de la restauration : %d\n" -#: pg_restore.c:398 +#: pg_restore.c:396 #, c-format msgid "" "%s restores a PostgreSQL database from an archive created by pg_dump.\n" @@ -1859,51 +1884,51 @@ msgstr "" "pg_dump.\n" "\n" -#: pg_restore.c:400 +#: pg_restore.c:398 #, c-format msgid " %s [OPTION]... [FILE]\n" msgstr " %s [OPTION]... [FICHIER]\n" -#: pg_restore.c:403 +#: pg_restore.c:401 #, c-format msgid " -d, --dbname=NAME connect to database name\n" msgstr "" " -d, --dbname=NOM nom de la base de donn�es utilis�e pour la\n" " connexion\n" -#: pg_restore.c:404 +#: pg_restore.c:402 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=NOMFICHIER nom du fichier de sortie\n" -#: pg_restore.c:405 +#: pg_restore.c:403 #, c-format -msgid " -F, --format=c|t backup file format (should be automatic)\n" +msgid " -F, --format=c|d|t backup file format (should be automatic)\n" msgstr "" -" -F, --format=c|t format du fichier de sauvegarde (devrait �tre\n" +" -F, --format=c|d|t format du fichier de sauvegarde (devrait �tre\n" " automatique)\n" -#: pg_restore.c:406 +#: pg_restore.c:404 #, c-format msgid " -l, --list print summarized TOC of the archive\n" msgstr " -l, --list affiche la table des mati�res de l'archive (TOC)\n" -#: pg_restore.c:407 +#: pg_restore.c:405 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose mode verbeux\n" -#: pg_restore.c:408 +#: pg_restore.c:406 #, c-format msgid " --help show this help, then exit\n" msgstr " --help affiche cette aide et quitte\n" -#: pg_restore.c:409 +#: pg_restore.c:407 #, c-format msgid " --version output version information, then exit\n" msgstr " --version affiche la version et quitte\n" -#: pg_restore.c:411 +#: pg_restore.c:409 #, c-format msgid "" "\n" @@ -1912,43 +1937,43 @@ msgstr "" "\n" "Options contr�lant la restauration :\n" -#: pg_restore.c:412 +#: pg_restore.c:410 #, c-format msgid " -a, --data-only restore only the data, no schema\n" msgstr "" " -a, --data-only restaurer uniquement les donn�es, pas le\n" " sch�ma\n" -#: pg_restore.c:413 +#: pg_restore.c:411 #, c-format msgid " -c, --clean clean (drop) database objects before recreating\n" msgstr "" " -c, --clean nettoie/supprime les bases de donn�es avant de\n" " les cr�er\n" -#: pg_restore.c:414 +#: pg_restore.c:412 #, c-format msgid " -C, --create create the target database\n" msgstr " -C, --create cr�er la base de donn�es cible\n" -#: pg_restore.c:415 +#: pg_restore.c:413 #, c-format msgid " -e, --exit-on-error exit on error, default is to continue\n" msgstr " -e, --exit-on-error quitter en cas d'erreur, continue par d�faut\n" -#: pg_restore.c:416 +#: pg_restore.c:414 #, c-format msgid " -I, --index=NAME restore named index\n" msgstr " -I, --index=NOM restaurer l'index indiqu�\n" -#: pg_restore.c:417 +#: pg_restore.c:415 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to restore\n" msgstr "" " -j, --jobs=NUMERO utilise ce nombre de jobs en parall�le pour\n" " la restauration\n" -#: pg_restore.c:418 +#: pg_restore.c:416 #, c-format msgid "" " -L, --use-list=FILENAME use table of contents from this file for\n" @@ -1958,56 +1983,63 @@ msgstr "" " de ce fichier pour s�lectionner/trier\n" " la sortie\n" -#: pg_restore.c:420 +#: pg_restore.c:418 #, c-format msgid " -n, --schema=NAME restore only objects in this schema\n" msgstr " -n, --schema=NOM restaurer uniquement les objets de ce sch�ma\n" -#: pg_restore.c:421 +#: pg_restore.c:419 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr "" " -O, --no-owner omettre la restauration des possessions des\n" " objets\n" -#: pg_restore.c:422 +#: pg_restore.c:420 #, c-format msgid "" " -P, --function=NAME(args)\n" " restore named function\n" msgstr " -P, --function=NOM(args) restaurer la fonction indiqu�e\n" -#: pg_restore.c:424 +#: pg_restore.c:422 #, c-format msgid " -s, --schema-only restore only the schema, no data\n" msgstr "" " -s, --schema-only restaurer uniquement le sch�ma, pas les\n" " donn�es\n" -#: pg_restore.c:425 +#: pg_restore.c:423 #, c-format msgid " -S, --superuser=NAME superuser user name to use for disabling triggers\n" msgstr "" " -S, --superuser=NOM indique le nom du super-utilisateur �\n" " utiliser pour d�sactiver les d�clencheurs\n" -#: pg_restore.c:426 +#: pg_restore.c:424 #, c-format msgid " -t, --table=NAME restore named table\n" msgstr " -t, --table=NOM restaure la table indiqu�e\n" -#: pg_restore.c:427 +#: pg_restore.c:425 #, c-format msgid " -T, --trigger=NAME restore named trigger\n" msgstr " -T, --trigger=NOM restaure le d�clencheur indiqu�\n" -#: pg_restore.c:428 +#: pg_restore.c:426 #, c-format msgid " -x, --no-privileges skip restoration of access privileges (grant/revoke)\n" msgstr "" " -x, --no-privileges omettre la restauration des droits d'acc�s\n" " (grant/revoke)\n" +#: pg_restore.c:427 +#, c-format +msgid "" +" -1, --single-transaction\n" +" restore as a single transaction\n" +msgstr " -1, --single-transaction restaurer dans une seule transaction\n" + #: pg_restore.c:429 #, c-format msgid " --disable-triggers disable triggers during data-only restore\n" @@ -2027,16 +2059,16 @@ msgstr "" #: pg_restore.c:433 #, c-format +msgid " --no-security-labels do not restore security labels\n" +msgstr " --no-security-labels ne restaure pas les labels de s�curit�\n" + +#: pg_restore.c:434 +#, c-format msgid " --no-tablespaces do not restore tablespace assignments\n" msgstr "" " --no-tablespaces ne restaure pas les d�finitions de\n" " tablespaces\n" -#: pg_restore.c:434 -#, c-format -msgid " --role=ROLENAME do SET ROLE before restore\n" -msgstr " --role=NOMROLE ex�cute SET ROLE avant la restauration\n" - #: pg_restore.c:435 #, c-format msgid "" @@ -2049,14 +2081,12 @@ msgstr "" " au lieu des commandes ALTER OWNER pour les\n" " modifier les propri�taires\n" -#: pg_restore.c:438 +#: pg_restore.c:445 #, c-format -msgid "" -" -1, --single-transaction\n" -" restore as a single transaction\n" -msgstr " -1, --single-transaction restaurer dans une seule transaction\n" +msgid " --role=ROLENAME do SET ROLE before restore\n" +msgstr " --role=NOMROLE ex�cute SET ROLE avant la restauration\n" -#: pg_restore.c:448 +#: pg_restore.c:447 #, c-format msgid "" "\n" @@ -2068,7 +2098,7 @@ msgstr "" "utilis�e.\n" "\n" -#: pg_dumpall.c:167 +#: pg_dumpall.c:171 #, c-format msgid "" "The program \"pg_dump\" is needed by %s but was not found in the\n" @@ -2079,7 +2109,7 @@ msgstr "" "m�me r�pertoire que � %s �.\n" "V�rifiez votre installation.\n" -#: pg_dumpall.c:174 +#: pg_dumpall.c:178 #, c-format msgid "" "The program \"pg_dump\" was found by \"%s\"\n" @@ -2090,34 +2120,34 @@ msgstr "" "version que %s.\n" "V�rifiez votre installation.\n" -#: pg_dumpall.c:346 +#: pg_dumpall.c:314 #, c-format msgid "%s: options -g/--globals-only and -r/--roles-only cannot be used together\n" msgstr "" "%s : les options � -g/--globals-only � et � -r/--roles-only � ne peuvent pas\n" "�tre utilis�es conjointement\n" -#: pg_dumpall.c:355 +#: pg_dumpall.c:323 #, c-format msgid "%s: options -g/--globals-only and -t/--tablespaces-only cannot be used together\n" msgstr "" "%s : les options � -g/--globals-only � et � -t/--tablespaces-only � ne\n" "peuvent pas �tre utilis�es conjointement\n" -#: pg_dumpall.c:364 +#: pg_dumpall.c:332 #, c-format msgid "%s: options -r/--roles-only and -t/--tablespaces-only cannot be used together\n" msgstr "" "%s : les options � -r/--roles-only � et � -t/--tablespaces-only � ne peuvent\n" "pas �tre utilis�es conjointement\n" -#: pg_dumpall.c:384 -#: pg_dumpall.c:1654 +#: pg_dumpall.c:374 +#: pg_dumpall.c:1678 #, c-format msgid "%s: could not connect to database \"%s\"\n" msgstr "%s : n'a pas pu se connecter � la base de donn�es � %s �\n" -#: pg_dumpall.c:399 +#: pg_dumpall.c:389 #, c-format msgid "" "%s: could not connect to databases \"postgres\" or \"template1\"\n" @@ -2126,12 +2156,12 @@ msgstr "" "%s : n'a pas pu se connecter aux bases � postgres � et � template1 �.\n" "Merci de pr�ciser une autre base de donn�es.\n" -#: pg_dumpall.c:416 +#: pg_dumpall.c:406 #, c-format msgid "%s: could not open the output file \"%s\": %s\n" msgstr "%s : n'a pas pu ouvrir le fichier de sauvegarde � %s � : %s\n" -#: pg_dumpall.c:534 +#: pg_dumpall.c:528 #, c-format msgid "" "%s extracts a PostgreSQL database cluster into an SQL script file.\n" @@ -2141,59 +2171,64 @@ msgstr "" "commandes SQL.\n" "\n" -#: pg_dumpall.c:536 +#: pg_dumpall.c:530 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [OPTION]...\n" -#: pg_dumpall.c:545 +#: pg_dumpall.c:533 +#, c-format +msgid " -f, --file=FILENAME output file name\n" +msgstr " -f, --file=NOMFICHIER nom du fichier de sortie\n" + +#: pg_dumpall.c:539 #, c-format msgid " -c, --clean clean (drop) databases before recreating\n" msgstr "" " -c, --clean nettoie (supprime) les bases de donn�es avant de\n" " les cr�er\n" -#: pg_dumpall.c:546 +#: pg_dumpall.c:540 #, c-format msgid " -g, --globals-only dump only global objects, no databases\n" msgstr "" " -g, --globals-only sauvegarde uniquement les objets syst�me, pas\n" " les bases de donn�es\n" -#: pg_dumpall.c:548 +#: pg_dumpall.c:542 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr "" " -O, --no-owner omettre la restauration des possessions des\n" " objets\n" -#: pg_dumpall.c:549 +#: pg_dumpall.c:543 #, c-format msgid " -r, --roles-only dump only roles, no databases or tablespaces\n" msgstr "" " -r, --roles-only sauvegarde uniquement les r�les, pas les bases\n" " de donn�es ni les tablespaces\n" -#: pg_dumpall.c:551 +#: pg_dumpall.c:545 #, c-format msgid " -S, --superuser=NAME superuser user name to use in the dump\n" msgstr "" " -S, --superuser=NOM indique le nom du super-utilisateur � utiliser\n" " avec le format texte\n" -#: pg_dumpall.c:552 +#: pg_dumpall.c:546 #, c-format msgid " -t, --tablespaces-only dump only tablespaces, no databases or roles\n" msgstr "" " -t, --tablespaces-only sauvegarde uniquement les tablespaces, pas les\n" " bases de donn�es ni les r�les\n" -#: pg_dumpall.c:567 +#: pg_dumpall.c:563 #, c-format msgid " -l, --database=DBNAME alternative default database\n" msgstr " -l, --database=NOM_BASE indique une autre base par d�faut\n" -#: pg_dumpall.c:573 +#: pg_dumpall.c:570 #, c-format msgid "" "\n" @@ -2206,75 +2241,75 @@ msgstr "" "standard.\n" "\n" -#: pg_dumpall.c:1017 +#: pg_dumpall.c:1041 #, c-format msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n" msgstr "%s : n'a pas pu analyser la liste d'ACL (%s) pour le tablespace � %s �\n" -#: pg_dumpall.c:1317 +#: pg_dumpall.c:1341 #, c-format msgid "%s: could not parse ACL list (%s) for database \"%s\"\n" msgstr "%s : n'a pas pu analyser la liste d'ACL (%s) pour la base de donn�es � %s �\n" -#: pg_dumpall.c:1524 +#: pg_dumpall.c:1548 #, c-format msgid "%s: dumping database \"%s\"...\n" msgstr "%s : sauvegarde de la base de donn�es � %s �...\n" -#: pg_dumpall.c:1534 +#: pg_dumpall.c:1558 #, c-format msgid "%s: pg_dump failed on database \"%s\", exiting\n" msgstr "%s : �chec de pg_dump sur la base de donn�es � %s �, quitte\n" -#: pg_dumpall.c:1543 +#: pg_dumpall.c:1567 #, c-format msgid "%s: could not re-open the output file \"%s\": %s\n" msgstr "%s : n'a pas pu rouvrir le fichier de sortie � %s � : %s\n" -#: pg_dumpall.c:1582 +#: pg_dumpall.c:1606 #, c-format msgid "%s: running \"%s\"\n" msgstr "%s : ex�cute � %s �\n" -#: pg_dumpall.c:1627 +#: pg_dumpall.c:1651 #, c-format msgid "%s: out of memory\n" msgstr "%s : m�moire �puis�e\n" -#: pg_dumpall.c:1676 +#: pg_dumpall.c:1700 #, c-format msgid "%s: could not connect to database \"%s\": %s\n" msgstr "%s : n'a pas pu se connecter � la base de donn�es � %s � : %s\n" -#: pg_dumpall.c:1690 +#: pg_dumpall.c:1714 #, c-format msgid "%s: could not get server version\n" msgstr "%s : n'a pas pu obtenir la version du serveur\n" -#: pg_dumpall.c:1696 +#: pg_dumpall.c:1720 #, c-format msgid "%s: could not parse server version \"%s\"\n" msgstr "%s : n'a pas pu analyser la version du serveur � %s �\n" -#: pg_dumpall.c:1704 +#: pg_dumpall.c:1728 #, c-format msgid "%s: could not parse version \"%s\"\n" msgstr "%s : n'a pas pu analyser la version � %s �\n" -#: pg_dumpall.c:1743 -#: pg_dumpall.c:1769 +#: pg_dumpall.c:1767 +#: pg_dumpall.c:1793 #, c-format msgid "%s: executing %s\n" msgstr "%s : ex�cute %s\n" -#: pg_dumpall.c:1749 -#: pg_dumpall.c:1775 +#: pg_dumpall.c:1773 +#: pg_dumpall.c:1799 #, c-format msgid "%s: query failed: %s" msgstr "%s : �chec de la requ�te : %s" -#: pg_dumpall.c:1751 -#: pg_dumpall.c:1777 +#: pg_dumpall.c:1775 +#: pg_dumpall.c:1801 #, c-format msgid "%s: query was: %s\n" msgstr "%s : la requ�te �tait : %s\n" @@ -2312,31 +2347,73 @@ msgstr "n'a pas pu acc msgid "could not read symbolic link \"%s\"" msgstr "n'a pas pu lire le lien symbolique � %s �" -#: ../../port/exec.c:516 +#: ../../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" msgstr "le processus fils a quitt� avec le code de sortie %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "le processus fils a �t� termin� par l'exception 0x%X" -#: ../../port/exec.c:529 +#: ../../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "le processus fils a �t� termin� par le signal %s" -#: ../../port/exec.c:532 +#: ../../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "le processus fils a �t� termin� par le signal %d" -#: ../../port/exec.c:536 +#: ../../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "le processus fils a quitt� avec un statut %d non reconnu" +#~ msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n" +#~ msgstr "" +#~ "instruction COPY invalide -- n'a pas pu trouver � copy � dans la cha�ne � " +#~ "%s �\n" + +#~ msgid "" +#~ "invalid COPY statement -- could not find \"from stdin\" in string \"%s\" " +#~ "starting at position %lu\n" +#~ msgstr "" +#~ "instruction COPY invalide -- n'a pas pu trouver � from stdin � dans la\n" +#~ "cha�ne � %s � � partir de la position %lu\n" + +#~ msgid "restoring large object OID %u\n" +#~ msgstr "restauration du � Large Object � d'OID %u\n" + +#~ msgid "cannot reopen stdin\n" +#~ msgstr "ne peut pas rouvrir stdin\n" + +#~ msgid "cannot reopen non-seekable file\n" +#~ msgstr "ne peut pas rouvrir le fichier non cherchable\n" + +#~ msgid "%s: invalid -X option -- %s\n" +#~ msgstr "%s : option -X invalide -- %s\n" + +#~ msgid "query returned no rows: %s\n" +#~ msgstr "la requ�te n'a renvoy� aucune ligne : %s\n" + +#~ msgid "could not initialize compression library: %s\n" +#~ msgstr "n'a pas pu initialiser la biblioth�que de compression : %s\n" + +#~ msgid "could not uncompress data: %s\n" +#~ msgstr "n'a pas pu d�compresser les donn�es : %s\n" + +#~ msgid "could not close compression library: %s\n" +#~ msgstr "n'a pas pu fermer la biblioth�que de compression : %s\n" + +#~ msgid "could not compress data: %s\n" +#~ msgstr "n'a pas pu compresser les donn�es : %s\n" + +#~ msgid "could not close compression stream: %s\n" +#~ msgstr "n'a pas pu fermer le flux de compression : %s\n" + #~ msgid "" #~ "dumping a specific TOC data block out of order is not supported without " #~ "ID on this input stream (fseek required)\n" @@ -2344,24 +2421,33 @@ msgstr "le processus fils a quitt #~ "la sauvegarde d'un bloc de donn�es sp�cifique du TOC dans le d�sordre " #~ "n'est\n" #~ "pas support� sans identifiant sur ce flux d'entr�e (fseek requis)\n" + #~ msgid "dumpBlobs(): could not open large object %u: %s" #~ msgstr "dumpBlobs() : n'a pas pu ouvrir le � Large Object � %u : %s" + #~ msgid "saving large object properties\n" #~ msgstr "sauvegarde des propri�t�s des � Large Objects �\n" + #~ msgid "could not parse ACL (%s) for large object %u" #~ msgstr "n'a pas pu analyser la liste ACL (%s) du � Large Object � %u" + #~ msgid "compression support is disabled in this format\n" #~ msgstr "le support de la compression est d�sactiv� avec ce format\n" + #~ msgid "no label definitions found for enum ID %u\n" #~ msgstr "aucune d�finition de label trouv�e pour l'ID enum %u\n" + #~ msgid "query returned %d rows instead of one: %s\n" #~ msgstr "la requ�te a renvoy� %d lignes au lieu d'une seule : %s\n" + #~ msgid "read %lu byte into lookahead buffer\n" + #~ msgid_plural "read %lu bytes into lookahead buffer\n" #~ msgstr[0] "lecture de %lu octet dans le tampon pr�visionnel\n" #~ msgstr[1] "lecture de %lu octets dans le tampon pr�visionnel\n" + #~ msgid "requested %d byte, got %d from lookahead and %d from file\n" + #~ msgid_plural "requested %d bytes, got %d from lookahead and %d from file\n" #~ msgstr[0] "%d octet requis, %d obtenu de � lookahead � et %d du fichier\n" #~ msgstr[1] "%d octets requis, %d obtenus de � lookahead � et %d du fichier\n" - diff --git a/src/bin/pg_dump/po/it.po b/src/bin/pg_dump/po/it.po index bef71e0600..861c38c4dc 100644 --- a/src/bin/pg_dump/po/it.po +++ b/src/bin/pg_dump/po/it.po @@ -7,114 +7,101 @@ # # Traduttori: # * Cosimo D'Arcangelo -# +# * Daniele Varrazzo +# # Revisori: # * Emanuele Zamprogno -# +# # Traduttori precedenti: # * Fabrizio Mazzoni , 2003. # * Mirko Tebaldi , 2004. -# +# # # Copyright (c) 2010, Associazione Culturale ITPUG # Distributed under the same license of the PostgreSQL project # msgid "" msgstr "" -"Project-Id-Version: Postgresql 8.4\n" +"Project-Id-Version: pg_dump (Postgresql) 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-03-26 13:21+0000\n" -"PO-Revision-Date: 2011-01-27 21:32+0200\n" -"Last-Translator: Gabriele Bartolini \n" +"POT-Creation-Date: 2013-01-29 13:57+0000\n" +"PO-Revision-Date: 2013-01-23 11:17+0100\n" +"Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Poedit-Language: Italian\n" -"X-Poedit-Country: ITALY\n" - -#: pg_dump.c:453 -#: pg_restore.c:268 -#: pg_dumpall.c:291 -#, c-format -msgid "%s: invalid -X option -- %s\n" -msgstr "%s: opzione -X errata -- %s\n" - -#: pg_dump.c:455 -#: pg_dump.c:477 -#: pg_dump.c:486 -#: pg_restore.c:270 -#: pg_restore.c:293 -#: pg_restore.c:310 -#: pg_dumpall.c:293 -#: pg_dumpall.c:313 -#: pg_dumpall.c:338 -#: pg_dumpall.c:348 -#: pg_dumpall.c:357 -#: pg_dumpall.c:366 -#: pg_dumpall.c:402 +"X-Generator: Poedit 1.5.4\n" + +#: pg_dump.c:492 pg_dump.c:506 pg_restore.c:274 pg_restore.c:290 +#: pg_restore.c:302 pg_dumpall.c:296 pg_dumpall.c:306 pg_dumpall.c:316 +#: pg_dumpall.c:325 pg_dumpall.c:334 pg_dumpall.c:392 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Consultare \"%s --help\" per maggiori informazioni.\n" +msgstr "Prova \"%s --help\" per maggiori informazioni.\n" -#: pg_dump.c:484 -#: pg_dumpall.c:336 +#: pg_dump.c:504 pg_restore.c:288 pg_dumpall.c:304 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" -msgstr "%s: troppi argomenti nella linea di comando (il primo è \"%s\")\n" +msgstr "%s: troppi argomenti nella riga di comando (il primo è \"%s\")\n" -#: pg_dump.c:501 +#: pg_dump.c:517 msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "le opzioni -s/--schema-only e -a/--data-only non possono essere usate insieme\n" -#: pg_dump.c:507 +#: pg_dump.c:523 msgid "options -c/--clean and -a/--data-only cannot be used together\n" msgstr "le opzioni -c/--clean e -a/--data-only non possono essere usate insieme\n" -#: pg_dump.c:513 +#: pg_dump.c:529 msgid "options --inserts/--column-inserts and -o/--oids cannot be used together\n" msgstr "le opzioni --inserts/--column-inserts e -o/--oids non possono essere usate insieme\n" -#: pg_dump.c:514 +#: pg_dump.c:530 msgid "(The INSERT command cannot set OIDs.)\n" -msgstr "(Il comando INSERT non può essere impostato a OID.)\n" - -#: pg_dump.c:544 -#, c-format -msgid "invalid output format \"%s\" specified\n" -msgstr "invalido formato di output \"%s\" specificato\n" +msgstr "(Il comando INSERT non può impostare OID.)\n" -#: pg_dump.c:550 +#: pg_dump.c:555 #, c-format msgid "could not open output file \"%s\" for writing\n" -msgstr "non è possibile aprire il file di output \"%s\" per la scrittura\n" +msgstr "apertura del file di output \"%s\" per la scrittura fallita\n" -#: pg_dump.c:560 -#: pg_backup_db.c:45 +#: pg_dump.c:565 pg_backup_db.c:38 #, c-format msgid "could not parse version string \"%s\"\n" -msgstr "non è possibile analizzare la stringa di versione \"%s\"\n" +msgstr "interpretazione della stringa di versione \"%s\" non riuscita\n" -#: pg_dump.c:583 +#: pg_dump.c:588 #, c-format msgid "invalid client encoding \"%s\" specified\n" -msgstr "invalida codificazione client \"%s\" specificata\n" +msgstr "codifica client specificata \"%s\" non valida\n" -#: pg_dump.c:660 +#: pg_dump.c:671 pg_dump.c:2433 pg_dump.c:2481 pg_dump.c:2536 pg_dump.c:7725 +#: pg_dump.c:7956 pg_dump.c:8922 pg_dump.c:9474 pg_dump.c:9728 pg_dump.c:9842 +#: pg_dump.c:10298 pg_dump.c:10484 pg_dump.c:10590 pg_dump.c:10790 +#: pg_dump.c:11032 pg_dump.c:11199 pg_dump.c:11420 pg_dump.c:14246 +#, c-format +msgid "query returned %d row instead of one: %s\n" +msgid_plural "query returned %d rows instead of one: %s\n" +msgstr[0] "la query ha restituito %d riga invece di una: %s\n" +msgstr[1] "la query ha restituito %d righe invece di una: %s\n" + +#: pg_dump.c:722 #, c-format msgid "last built-in OID is %u\n" -msgstr "l'ultimo OID incorporato è %u\n" +msgstr "l'ultimo OID predefinito è %u\n" -#: pg_dump.c:670 +#: pg_dump.c:732 msgid "No matching schemas were found\n" msgstr "Non è stato trovato nessuno schema corrispondente\n" -#: pg_dump.c:685 +#: pg_dump.c:747 msgid "No matching tables were found\n" -msgstr "non è stata trovata nessuna tabella\n" +msgstr "Non è stata trovata nessuna tabella corrispondente\n" -#: pg_dump.c:797 +#: pg_dump.c:869 #, c-format msgid "" "%s dumps a database as a text file or to other formats.\n" @@ -123,21 +110,17 @@ msgstr "" "%s scarica un database in formato testo o in altri formati.\n" "\n" -#: pg_dump.c:798 -#: pg_restore.c:399 -#: pg_dumpall.c:535 +#: pg_dump.c:870 pg_restore.c:397 pg_dumpall.c:529 #, c-format msgid "Usage:\n" msgstr "Utilizzo:\n" -#: pg_dump.c:799 +#: pg_dump.c:871 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [OPZIONE]... [NOMEDB]\n" -#: pg_dump.c:801 -#: pg_restore.c:402 -#: pg_dumpall.c:538 +#: pg_dump.c:873 pg_restore.c:400 pg_dumpall.c:532 #, c-format msgid "" "\n" @@ -146,47 +129,46 @@ msgstr "" "\n" "Opzioni generali:\n" -#: pg_dump.c:802 -#: pg_dumpall.c:539 +#: pg_dump.c:874 #, c-format -msgid " -f, --file=FILENAME output file name\n" -msgstr " -f, --file=NOMEFILE nome file di output\n" +msgid " -f, --file=FILENAME output file or directory name\n" +msgstr " -f, --file=FILENAME nome del file o directory di output\n" -#: pg_dump.c:803 +#: pg_dump.c:875 #, c-format -msgid " -F, --format=c|t|p output file format (custom, tar, plain text)\n" -msgstr " -F, --format=c|t|p formato file di output (custom, tar, plain text)\n" +msgid " -F, --format=c|d|t|p output file format (custom, directory, tar, plain text)\n" +msgstr "" +" -F, --format=c|d|t|p formato del file di output (custom, directory,\n" +" tar, testo in chiaro (predefinito))\n" -#: pg_dump.c:804 +#: pg_dump.c:876 #, c-format msgid " -v, --verbose verbose mode\n" -msgstr " -v, --verbose modo verbose\n" +msgstr " -v, --verbose stampa più informazioni\n" -#: pg_dump.c:805 +#: pg_dump.c:877 #, c-format msgid " -Z, --compress=0-9 compression level for compressed formats\n" msgstr " -Z, --compress=0-9 livello di compressione per formati compressi\n" -#: pg_dump.c:806 -#: pg_dumpall.c:540 +#: pg_dump.c:878 pg_dumpall.c:534 #, c-format msgid " --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" -msgstr " --lock-wait-timeout=TIMEOUT errore dopo attesa di TIMEOUT per un lock di tabella\n" +msgstr "" +" --lock-wait-timeout=TIMEOUT termina con errore dopo un'attesa di TIMEOUT\n" +" per un lock di tabella\n" -#: pg_dump.c:807 -#: pg_dumpall.c:541 +#: pg_dump.c:879 pg_dumpall.c:535 #, c-format msgid " --help show this help, then exit\n" -msgstr " --help mostra questo aiuto ed esce\n" +msgstr " --help mostra questo aiuto ed esci\n" -#: pg_dump.c:808 -#: pg_dumpall.c:542 +#: pg_dump.c:880 pg_dumpall.c:536 #, c-format msgid " --version output version information, then exit\n" -msgstr " --version fornisce informazioni sulla versione ed esce\n" +msgstr " --version mostra informazioni sulla versione ed esci\n" -#: pg_dump.c:810 -#: pg_dumpall.c:543 +#: pg_dump.c:882 pg_dumpall.c:537 #, c-format msgid "" "\n" @@ -195,128 +177,147 @@ msgstr "" "\n" "Opzioni per il controllo del contenuto dell'output:\n" -#: pg_dump.c:811 -#: pg_dumpall.c:544 +#: pg_dump.c:883 pg_dumpall.c:538 #, c-format msgid " -a, --data-only dump only the data, not the schema\n" msgstr " -a, --data-only scarica solamente i dati, non lo schema\n" -#: pg_dump.c:812 +#: pg_dump.c:884 #, c-format msgid " -b, --blobs include large objects in dump\n" -msgstr " -b, --blobs include nel dump i large objects\n" +msgstr " -b, --blobs includi nell'archivio i large object\n" -#: pg_dump.c:813 +#: pg_dump.c:885 #, c-format msgid " -c, --clean clean (drop) database objects before recreating\n" -msgstr " -c, --clean svuota (drop) gli oggetti database prima di ricrearli\n" +msgstr "" +" -c, --clean svuota (drop) gli oggetti del database prima di\n" +" ricrearli\n" -#: pg_dump.c:814 +#: pg_dump.c:886 #, c-format msgid " -C, --create include commands to create database in dump\n" -msgstr " -C, --create include nel dump i comandi per creare database\n" +msgstr "" +" -C, --create include nell'archivio i comandi per creare\n" +" i database\n" -#: pg_dump.c:815 +#: pg_dump.c:887 #, c-format msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" -msgstr " -E, --encoding=CODIFICA scarica i dati nella codifica indicata in CODIFICA\n" +msgstr " -E, --encoding=CODIFICA scarica i dati nella CODIFICA indicata\n" -#: pg_dump.c:816 +#: pg_dump.c:888 #, c-format msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" -msgstr " -n, --schema=SCHEMA scarica solo lo schema o gli schemi nominati in SCHEMA\n" +msgstr " -n, --schema=SCHEMA scarica solo lo schema o gli schemi nominati\n" -#: pg_dump.c:817 +#: pg_dump.c:889 #, c-format msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n" -msgstr " -N, --exclude-schema=SCHEMA non scarica lo schema o gli schemi nominati in SCHEMA\n" +msgstr " -N, --exclude-schema=SCHEMA non scaricare lo schema o gli schemi nominati\n" -#: pg_dump.c:818 -#: pg_dumpall.c:547 +#: pg_dump.c:890 pg_dumpall.c:541 #, c-format msgid " -o, --oids include OIDs in dump\n" -msgstr " -o, --oids nel dump include gli OID\n" +msgstr " -o, --oids includi gli OID nel dump\n" -#: pg_dump.c:819 +#: pg_dump.c:891 #, c-format msgid "" " -O, --no-owner skip restoration of object ownership in\n" " plain-text format\n" msgstr "" -" -O, --no-owner salta il ripristino della proprietà dell'oggetto nel\n" -" formato plain-text\n" +" -O, --no-owner salta il ripristino del proprietario degli\n" +" oggetti nel formato testo in chiaro\n" -#: pg_dump.c:821 -#: pg_dumpall.c:550 +#: pg_dump.c:893 pg_dumpall.c:544 #, c-format msgid " -s, --schema-only dump only the schema, no data\n" msgstr " -s, --schema-only scarica solo lo schema, non i dati\n" -#: pg_dump.c:822 +#: pg_dump.c:894 #, c-format msgid " -S, --superuser=NAME superuser user name to use in plain-text format\n" -msgstr " -S, --superuser=NOME nome dell'utente superuser da usare nel formato plain-text\n" +msgstr "" +" -S, --superuser=NOME nome del superutente da usare nel formato testo\n" +" in chiaro\n" -#: pg_dump.c:823 +#: pg_dump.c:895 #, c-format msgid " -t, --table=TABLE dump the named table(s) only\n" -msgstr " -t, --table=TABELLA scarica solo la tabella o le tabelle nominate\n" +msgstr " -t, --table=TABELLA scarica solo la tabella o le tabelle nominate\n" -#: pg_dump.c:824 +#: pg_dump.c:896 #, c-format msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n" -msgstr " -T, --exclude-table=TABELLA non scarica la tabella o le tabelle nominate\n" +msgstr " -T, --exclude-table=TABELLA NON scaricare la tabella o le tabelle nominate\n" -#: pg_dump.c:825 -#: pg_dumpall.c:553 +#: pg_dump.c:897 pg_dumpall.c:547 #, c-format msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" -msgstr " -x, --no-privileges non scarica i privilegi (grant/revoke)\n" +msgstr " -x, --no-privileges non scaricare i privilegi (grant/revoke)\n" -#: pg_dump.c:826 -#: pg_dumpall.c:554 +#: pg_dump.c:898 pg_dumpall.c:548 #, c-format msgid " --binary-upgrade for use by upgrade utilities only\n" -msgstr " --binary-upgrade da utilizzare solo con utilità di aggiornamento\n" - -#: pg_dump.c:827 -#: pg_dumpall.c:555 -#, c-format -msgid " --inserts dump data as INSERT commands, rather than COPY\n" -msgstr " --inserts scarica dati come comandi INSERT, anzichè COPY\n" +msgstr " --binary-upgrade da utilizzare solo dall'utilità di aggiornamento\n" -#: pg_dump.c:828 -#: pg_dumpall.c:556 +#: pg_dump.c:899 pg_dumpall.c:549 #, c-format msgid " --column-inserts dump data as INSERT commands with column names\n" -msgstr " --column-inserts scarica dati come comandi INSERT con nomi di colonna\n" +msgstr "" +" --column-inserts scarica dati come comandi INSERT con nomi\n" +" di colonna\n" -#: pg_dump.c:829 -#: pg_dumpall.c:557 +#: pg_dump.c:900 pg_dumpall.c:550 #, c-format msgid " --disable-dollar-quoting disable dollar quoting, use SQL standard quoting\n" -msgstr " --disable-dollar-quoting disabilita la quotazione con dollaro, utilizzando la quotazione standard SQL\n" +msgstr "" +" --disable-dollar-quoting disabilita la quotazione con dollari, usa la\n" +" quotazione standard SQL\n" -#: pg_dump.c:830 -#: pg_dumpall.c:558 +#: pg_dump.c:901 pg_dumpall.c:551 #, c-format msgid " --disable-triggers disable triggers during data-only restore\n" -msgstr " --disable-triggers disabilita i trigger durante il ripristino dei soli dati\n" +msgstr "" +" --disable-triggers disabilita i trigger durante il ripristino\n" +" dei soli dati\n" -#: pg_dump.c:831 -#: pg_dumpall.c:559 +#: pg_dump.c:902 pg_dumpall.c:552 +#, c-format +msgid " --inserts dump data as INSERT commands, rather than COPY\n" +msgstr " --inserts scarica i dati come comandi INSERT anziché COPY\n" + +#: pg_dump.c:903 pg_dumpall.c:553 +#, c-format +msgid " --no-security-labels do not dump security label assignments\n" +msgstr " --no-security-labels non scaricare le assegnazioni di sicurezza\n" + +#: pg_dump.c:904 pg_dumpall.c:554 #, c-format msgid " --no-tablespaces do not dump tablespace assignments\n" msgstr " --no-tablespaces non scarica le assegnazioni di tablespace\n" -#: pg_dump.c:832 -#: pg_dumpall.c:560 +#: pg_dump.c:905 pg_dumpall.c:555 +#, c-format +msgid " --no-unlogged-table-data do not dump unlogged table data\n" +msgstr " --no-unlogged-table-data non scaricare i dati delle tabelle non loggate\n" + +#: pg_dump.c:906 pg_dumpall.c:556 +#, c-format +msgid " --quote-all-identifiers quote all identifiers, even if not key words\n" +msgstr "" +" --quote-all-identifiers metti tutti gli identificatori tra virgolette,\n" +" anche se non sono parole chiave\n" + +#: pg_dump.c:907 #, c-format -msgid " --role=ROLENAME do SET ROLE before dump\n" -msgstr " --role=NOMERUOLO esegue SET ROLE prima del dump\n" +msgid " --serializable-deferrable wait until the dump can run without anomalies\n" +msgstr "" +" --serializable-deferrable attendi prima che lo scaricamento possa essere\n" +" eseguito senza anomalie\n" -#: pg_dump.c:833 -#: pg_dumpall.c:561 +#: pg_dump.c:908 pg_dumpall.c:557 #, c-format msgid "" " --use-set-session-authorization\n" @@ -324,12 +325,10 @@ msgid "" " ALTER OWNER commands to set ownership\n" msgstr "" " --use-set-session-authorization\n" -" usa i comandi SET SESSION AUTHORIZATION invece dei\n" -" comandi ALTER OWNER per impostare le proprietà\n" +" usa i comandi SET SESSION AUTHORIZATION invece\n" +" di ALTER OWNER per impostare il proprietario\n" -#: pg_dump.c:837 -#: pg_restore.c:441 -#: pg_dumpall.c:565 +#: pg_dump.c:912 pg_restore.c:439 pg_dumpall.c:561 #, c-format msgid "" "\n" @@ -338,42 +337,39 @@ msgstr "" "\n" "Opzioni di connessione:\n" -#: pg_dump.c:838 -#: pg_restore.c:442 -#: pg_dumpall.c:566 +#: pg_dump.c:913 pg_restore.c:440 pg_dumpall.c:562 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" -msgstr " -h, --host=NOMEHOST host server di database o directory socket\n" +msgstr " -h, --host=NOMEHOST host server del database o directory socket\n" -#: pg_dump.c:839 -#: pg_restore.c:443 -#: pg_dumpall.c:568 +#: pg_dump.c:914 pg_restore.c:441 pg_dumpall.c:564 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=PORTA numero porta del server di database\n" -#: pg_dump.c:840 -#: pg_restore.c:444 -#: pg_dumpall.c:569 +#: pg_dump.c:915 pg_restore.c:442 pg_dumpall.c:565 #, c-format msgid " -U, --username=NAME connect as specified database user\n" -msgstr " -U, --username=NOME connessione come utente di database specificato\n" +msgstr " -U, --username=NOME connessione con l'utente di database specificato\n" -#: pg_dump.c:841 -#: pg_restore.c:445 -#: pg_dumpall.c:570 +#: pg_dump.c:916 pg_restore.c:443 pg_dumpall.c:566 #, c-format msgid " -w, --no-password never prompt for password\n" -msgstr " -w, --no-password nessun richiesta di password\n" +msgstr " -w, --no-password non chiedere mai le password\n" -#: pg_dump.c:842 -#: pg_restore.c:446 -#: pg_dumpall.c:571 +#: pg_dump.c:917 pg_restore.c:444 pg_dumpall.c:567 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" -msgstr " -W, --password forza la richiesta della password (dovrebbe avvenire automaticamente)\n" +msgstr "" +" -W, --password forza la richiesta di una password (dovrebbe essere\n" +" automatico)\n" -#: pg_dump.c:844 +#: pg_dump.c:918 pg_dumpall.c:568 +#, c-format +msgid " --role=ROLENAME do SET ROLE before dump\n" +msgstr " --role=NOMERUOLO esegui SET ROLE prima di scaricare\n" + +#: pg_dump.c:920 #, c-format msgid "" "\n" @@ -386,1134 +382,1083 @@ msgstr "" "della variabile di ambiente PGDATABASE.\n" "\n" -#: pg_dump.c:846 -#: pg_restore.c:449 -#: pg_dumpall.c:575 +#: pg_dump.c:922 pg_restore.c:448 pg_dumpall.c:572 #, c-format msgid "Report bugs to .\n" -msgstr "Segnalare errori a .\n" +msgstr "Puoi segnalare eventuali bug a .\n" -#: pg_dump.c:854 -#: pg_backup_archiver.c:1391 +#: pg_dump.c:930 pg_backup_archiver.c:1459 msgid "*** aborted because of error\n" -msgstr "*** abortito a causa di errore\n" +msgstr "*** abortito perché la versione del server non corrisponde\n" -#: pg_dump.c:875 +#: pg_dump.c:972 +#, c-format +msgid "invalid output format \"%s\" specified\n" +msgstr "formato di output specificato \"%s\" non valido\n" + +#: pg_dump.c:995 msgid "server version must be at least 7.3 to use schema selection switches\n" -msgstr "per usare gli switch di selezione schema la versione del server deve essere almeno 7.3\n" +msgstr "per usare le opzioni di selezione schema la versione del server deve essere almeno 7.3\n" -#: pg_dump.c:1113 +#: pg_dump.c:1267 #, c-format msgid "dumping contents of table %s\n" msgstr "scarico dei contenuti della tabella %s\n" -#: pg_dump.c:1216 +#: pg_dump.c:1387 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" msgstr "Lo scarico dei contenuti della tabella \"%s\" è fallito: PQgetCopyData() fallito.\n" -#: pg_dump.c:1217 -#: pg_dump.c:12402 +#: pg_dump.c:1388 pg_dump.c:14440 #, c-format msgid "Error message from server: %s" msgstr "Messaggio di errore dal server: %s" -#: pg_dump.c:1218 -#: pg_dump.c:12403 +#: pg_dump.c:1389 pg_dump.c:14441 #, c-format msgid "The command was: %s\n" -msgstr "Il comando è: %s\n" +msgstr "Il comando era: %s\n" -#: pg_dump.c:1624 +#: pg_dump.c:1828 msgid "saving database definition\n" msgstr "salvataggio definizione del database\n" -#: pg_dump.c:1706 +#: pg_dump.c:1910 #, c-format msgid "missing pg_database entry for database \"%s\"\n" -msgstr "Voci per pg_database mancanti per il database \"%s\"\n" +msgstr "voce pg_database mancante per il database \"%s\"\n" -#: pg_dump.c:1713 +#: pg_dump.c:1917 #, c-format msgid "query returned more than one (%d) pg_database entry for database \"%s\"\n" -msgstr "la query ha restituito più di una voce (%d) per il database \"%s\"\n" +msgstr "la query ha restituito più di una voce pg_database (%d) per il database \"%s\"\n" -#: pg_dump.c:1814 +#: pg_dump.c:2021 msgid "dumpDatabase(): could not find pg_largeobject.relfrozenxid\n" -msgstr "dumpDatabase(): impossibile trovare pg_largeobject.relfrozenxid\n" +msgstr "dumpDatabase(): pg_largeobject.relfrozenxid non trovato\n" -#: pg_dump.c:1891 +#: pg_dump.c:2060 +msgid "dumpDatabase(): could not find pg_largeobject_metadata.relfrozenxid\n" +msgstr "dumpDatabase(): pg_largeobject_metadata.relfrozenxid non trovato\n" + +#: pg_dump.c:2139 #, c-format msgid "saving encoding = %s\n" msgstr "salvataggio codifica = %s\n" -#: pg_dump.c:1918 +#: pg_dump.c:2166 #, c-format msgid "saving standard_conforming_strings = %s\n" msgstr "salvataggio standard_conforming_strings = %s\n" -#: pg_dump.c:1951 +#: pg_dump.c:2199 msgid "reading large objects\n" msgstr "lettura dei large object\n" -#: pg_dump.c:2078 +#: pg_dump.c:2331 msgid "saving large objects\n" msgstr "salvataggio dei large object\n" -#: pg_dump.c:2120 -#: pg_backup_archiver.c:943 -#, fuzzy, c-format +#: pg_dump.c:2373 pg_backup_archiver.c:985 +#, c-format msgid "could not open large object %u: %s" -msgstr "non è possibile aprire large object\n" +msgstr "apertura del large object %u fallita: %s" -#: pg_dump.c:2133 -#, fuzzy, c-format +#: pg_dump.c:2386 +#, c-format msgid "error reading large object %u: %s" -msgstr "dumpBlobs(): errore leggendo il large object: %s" - -#: pg_dump.c:2180 -#: pg_dump.c:2228 -#: pg_dump.c:2290 -#: pg_dump.c:6911 -#: pg_dump.c:7114 -#: pg_dump.c:7930 -#: pg_dump.c:8468 -#: pg_dump.c:8718 -#: pg_dump.c:8824 -#: pg_dump.c:9209 -#: pg_dump.c:9385 -#: pg_dump.c:9582 -#: pg_dump.c:9809 -#: pg_dump.c:9964 -#: pg_dump.c:10150 -#: pg_dump.c:12208 +msgstr "errore di lettura del large object %u: %s" + +#: pg_dump.c:2617 #, c-format -msgid "query returned %d row instead of one: %s\n" -msgid_plural "query returned %d rows instead of one: %s\n" -msgstr[0] "la query restituisce %d riga invece di una: %s\n" -msgstr[1] "la query restituisce %d righe invece di una: %s\n" +msgid "could not find parent extension for %s" +msgstr "non è stato possibile trovare l'estensione genitore di %s" -#: pg_dump.c:2435 +#: pg_dump.c:2723 #, c-format msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" msgstr "ATTENZIONE: il proprietario dello schema \"%s\" sembra non essere valido\n" -#: pg_dump.c:2470 +#: pg_dump.c:2767 #, c-format msgid "schema with OID %u does not exist\n" msgstr "lo schema con OID %u non esiste\n" -#: pg_dump.c:2727 +#: pg_dump.c:3099 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" -msgstr "ATTENZIONE: il proprietario del tipo dato \"%s\" sembra non essere valido\n" +msgstr "ATTENZIONE: il proprietario del tipo dato \"%s\" non sembra essere valido\n" -#: pg_dump.c:2831 +#: pg_dump.c:3203 #, c-format msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" -msgstr "ATTENZIONE: il proprietario dell'operatore \"%s\" sembra non essere valido\n" +msgstr "ATTENZIONE: il proprietario dell'operatore \"%s\" non sembra essere valido\n" -#: pg_dump.c:3005 +#: pg_dump.c:3455 #, c-format msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" -msgstr "ATTENZIONE: il proprietario della classe operatore \"%s\" sembra non essere valido\n" +msgstr "ATTENZIONE: il proprietario della classe operatore \"%s\" non sembra essere valido\n" -#: pg_dump.c:3092 +#: pg_dump.c:3542 #, c-format msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" -msgstr "ATTENZIONE: il proprietario della famiglia di operatori \"%s\" sembra non essere valido\n" +msgstr "ATTENZIONE: il proprietario della famiglia di operatori \"%s\" non sembra essere valido\n" -#: pg_dump.c:3217 +#: pg_dump.c:3679 #, c-format msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" -msgstr "ATTENZIONE: il proprietario della funzione aggregata \"%s\" sembra non essere valido\n" +msgstr "ATTENZIONE: il proprietario della funzione di aggregazione \"%s\" non sembra essere valido\n" -#: pg_dump.c:3372 +#: pg_dump.c:3849 #, c-format msgid "WARNING: owner of function \"%s\" appears to be invalid\n" -msgstr "ATTENZIONE: il proprietario della funzione \"%s\" sembra non essere valido\n" +msgstr "ATTENZIONE: il proprietario della funzione \"%s\" non sembra essere valido\n" -#: pg_dump.c:3805 +#: pg_dump.c:4349 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" -msgstr "ATTENZIONE: il proprietario della tabella \"%s\" sembra non essere valido\n" +msgstr "ATTENZIONE: il proprietario della tabella \"%s\" non sembra essere valido\n" -#: pg_dump.c:3948 +#: pg_dump.c:4497 #, c-format msgid "reading indexes for table \"%s\"\n" msgstr "lettura degli indici per la tabella \"%s\"\n" -#: pg_dump.c:4268 +#: pg_dump.c:4817 #, c-format msgid "reading foreign key constraints for table \"%s\"\n" msgstr "lettura dei vincoli di chiave esterna per la tabella \"%s\"\n" -#: pg_dump.c:4500 +#: pg_dump.c:5049 #, c-format msgid "failed sanity check, parent table OID %u of pg_rewrite entry OID %u not found\n" msgstr "controllo integrità fallito, l'OID %u della tabella padre della voce OID %u di pg_rewrite non è stato trovato\n" -#: pg_dump.c:4584 +#: pg_dump.c:5133 #, c-format msgid "reading triggers for table \"%s\"\n" msgstr "lettura dei trigger per la tabella \"%s\"\n" -#: pg_dump.c:4747 +#: pg_dump.c:5296 #, c-format msgid "query produced null referenced table name for foreign key trigger \"%s\" on table \"%s\" (OID of table: %u)\n" -msgstr "la query non ha prodotto nessun nome di tabella referenziato per il trigger di chiave esterna \"%s\" sulla tabella \"%s\" (OID della tabella: %u)\n" +msgstr "la query non ha prodotto nessun nome di tabella referenziata per il trigger di chiave esterna \"%s\" sulla tabella \"%s\" (OID della tabella: %u)\n" -#: pg_dump.c:5117 +#: pg_dump.c:5667 #, c-format msgid "finding the columns and types of table \"%s\"\n" -msgstr "ricerca le colonne e i tipi della tabella \"%s\"\n" +msgstr "ricerca delle colonne e dei tipi della tabella \"%s\"\n" -#: pg_dump.c:5236 +#: pg_dump.c:5813 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "numerazione delle colonne non valida nella tabella \"%s\"\n" -#: pg_dump.c:5272 +#: pg_dump.c:5848 #, c-format msgid "finding default expressions of table \"%s\"\n" -msgstr "ricerca delle espressioni predefinite della tabella \"%s\"\n" +msgstr "ricerca delle espressioni predefinite della tabella \"%s\"\n" -#: pg_dump.c:5357 +#: pg_dump.c:5901 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" -msgstr "valore adnum %d non valido per la tabella \"%s\"\n" +msgstr "valore adnum %d non valido per la tabella \"%s\"\n" -#: pg_dump.c:5375 +#: pg_dump.c:5974 #, c-format msgid "finding check constraints for table \"%s\"\n" msgstr "ricerca dei vincoli di controllo per la tabella \"%s\"\n" -#: pg_dump.c:5455 +#: pg_dump.c:6054 #, c-format msgid "expected %d check constraint on table \"%s\" but found %d\n" msgid_plural "expected %d check constraints on table \"%s\" but found %d\n" msgstr[0] "previsto %d vincolo di controllo sulla tabella \"%s\" ma trovato %d\n" msgstr[1] "previsti %d vincoli di controllo sulla tabella \"%s\" ma trovati %d\n" -#: pg_dump.c:5459 +#: pg_dump.c:6058 msgid "(The system catalogs might be corrupted.)\n" msgstr "(I cataloghi di sistema potrebbero essere corrotti.)\n" -#: pg_dump.c:7241 -#: pg_dump.c:7348 -#, c-format -msgid "query returned no rows: %s\n" -msgstr "la query non restituisce righe: %s\n" - -#: pg_dump.c:7698 +#: pg_dump.c:8688 msgid "WARNING: bogus value in proargmodes array\n" -msgstr "ATTENZIONE: valore fasullo in array proargmode\n" +msgstr "ATTENZIONE: valore errato nell'array proargmode\n" -#: pg_dump.c:8010 +#: pg_dump.c:9002 msgid "WARNING: could not parse proallargtypes array\n" -msgstr "ATTENZIONE: impossibile analizzare array proallargtype\n" +msgstr "ATTENZIONE: non è stato possibile analizzare l'array proallargtype\n" -#: pg_dump.c:8026 +#: pg_dump.c:9018 msgid "WARNING: could not parse proargmodes array\n" -msgstr "ATTENZIONE: impossibile analizzare array proargmode\n" +msgstr "ATTENZIONE: non è stato possibile analizzare l'array proargmode\n" -#: pg_dump.c:8040 +#: pg_dump.c:9032 msgid "WARNING: could not parse proargnames array\n" -msgstr "ATTENZIONE: impossibile analizzare array proargname\n" +msgstr "ATTENZIONE: non è stato possibile analizzare l'array proargname\n" -#: pg_dump.c:8051 +#: pg_dump.c:9043 msgid "WARNING: could not parse proconfig array\n" -msgstr "ATTENZIONE: impossibile analizzare array preconfig\n" +msgstr "ATTENZIONE: non è stato possibile analizzare l'array preconfig\n" -#: pg_dump.c:8107 +#: pg_dump.c:9099 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" -msgstr "valore provolatile non riconosciuto per la funzione \"%s\"\n" +msgstr "valore provolatile sconosciuto per la funzione \"%s\"\n" -#: pg_dump.c:8310 +#: pg_dump.c:9315 msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "ATTENZIONE: valore fasullo nel campo pg_cast.castmethod\n" -#: pg_dump.c:8687 +#: pg_dump.c:9697 #, c-format msgid "WARNING: could not find operator with OID %s\n" -msgstr "ATTENZIONE: could not find operator with OID %s\n" +msgstr "ATTENZIONE: operatore con OID %s non trovato\n" -#: pg_dump.c:9608 +#: pg_dump.c:10816 #, c-format msgid "WARNING: aggregate function %s could not be dumped correctly for this database version; ignored\n" -msgstr "ATTENZIONE: la funzione aggregata %s non può essere scaricata correttamente per questa versione database; ignorata\n" +msgstr "ATTENZIONE: la funzione di aggregazione %s non può essere scaricata correttamente per questa versione database; ignorata\n" -#: pg_dump.c:10326 +#: pg_dump.c:11620 #, c-format msgid "unknown object type (%d) in default privileges\n" -msgstr "tipo di oggetto (%d) sconosciuto nei privilegi di default\n" +msgstr "tipo di oggetto (%d) sconosciuto nei privilegi predefiniti\n" -#: pg_dump.c:10343 -#, fuzzy, c-format +#: pg_dump.c:11637 +#, c-format msgid "could not parse default ACL list (%s)\n" -msgstr "non è possibile analizzare la lista ACL (%s) per l'oggetto \"%s\" (%s)\n" +msgstr "non è stato possibile interpretare la ACL predefinita (%s)\n" -#: pg_dump.c:10400 +#: pg_dump.c:11694 #, c-format msgid "could not parse ACL list (%s) for object \"%s\" (%s)\n" -msgstr "non è possibile analizzare la lista ACL (%s) per l'oggetto \"%s\" (%s)\n" +msgstr "non è stato possibile analizzare la lista ACL (%s) per l'oggetto \"%s\" (%s)\n" -#: pg_dump.c:10543 +#: pg_dump.c:12140 #, c-format msgid "query to obtain definition of view \"%s\" returned no data\n" -msgstr "la query per ottenere la definizione della vista \"%s\" non restituisce dati\n" +msgstr "la query per ottenere la definizione della vista \"%s\" non ha restituito dati\n" -#: pg_dump.c:10546 +#: pg_dump.c:12143 #, c-format msgid "query to obtain definition of view \"%s\" returned more than one definition\n" -msgstr "la query per ottenere la definizione della vista \"%s\" restituisce più di una definizione\n" +msgstr "la query per ottenere la definizione della vista \"%s\" ha restituito più di una definizione\n" -#: pg_dump.c:10555 +#: pg_dump.c:12152 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)\n" msgstr "la definizione della vista \"%s\" sembra essere vuota (lunghezza zero)\n" -#: pg_dump.c:11031 +#: pg_dump.c:12203 +#, c-format +msgid "query returned %d foreign server entry for foreign table \"%s\"\n" +msgid_plural "query returned %d foreign server entries for foreign table \"%s\"\n" +msgstr[0] "la query ha restituito %d voce di serve esterno per la tabella \"%s\"\n" +msgstr[1] "la query ha restituito %d voci di serve esterni per la tabella \"%s\"\n" + +#: pg_dump.c:12754 #, c-format msgid "invalid column number %d for table \"%s\"\n" msgstr "il numero di colonne %d non è valido per la tabella \"%s\"\n" -#: pg_dump.c:11139 +#: pg_dump.c:12865 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "omesso indice per vincolo \"%s\"\n" -#: pg_dump.c:11327 +#: pg_dump.c:13053 #, c-format msgid "unrecognized constraint type: %c\n" -msgstr "tipo di vincolo non riconosciuto: %c\n" +msgstr "tipo di vincolo sconosciuto: %c\n" -#: pg_dump.c:11390 +#: pg_dump.c:13116 msgid "missing pg_database entry for this database\n" -msgstr "voce relativa a pg_database omessa per questo database\n" +msgstr "voce pg_database mancante per questo database\n" -#: pg_dump.c:11395 +#: pg_dump.c:13121 msgid "found more than one pg_database entry for this database\n" -msgstr "trovata più di una voce relativa a pg_database per questo database\n" +msgstr "la query ha restituito più di una voce pg_database per questo\n" -#: pg_dump.c:11427 +#: pg_dump.c:13153 msgid "could not find entry for pg_indexes in pg_class\n" -msgstr "non trovata voce relativa a pg_indexes in pg_class\n" +msgstr "voce per pg_indexes non trovata in pg_class\n" -#: pg_dump.c:11432 +#: pg_dump.c:13158 msgid "found more than one entry for pg_indexes in pg_class\n" -msgstr "trovata più di una voce relativa a pg_indexes in pg_class\n" +msgstr "trovata più di una voce pg_indexes in pg_class\n" -#: pg_dump.c:11503 +#: pg_dump.c:13232 pg_dump.c:13397 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" msgid_plural "query to get data of sequence \"%s\" returned %d rows (expected 1)\n" -msgstr[0] "la query per ottenere i dati della sequenza \"%s\" restituisce %d riga (prevista 1)\n" -msgstr[1] "la query per ottenere i dati della sequenza \"%s\" restituisce %d righe (prevista 1)\n" +msgstr[0] "la query per ottenere i dati della sequenza \"%s\" ha restituito %d riga (prevista 1)\n" +msgstr[1] "la query per ottenere i dati della sequenza \"%s\" ha restituito %d righe (prevista 1)\n" -#: pg_dump.c:11514 +#: pg_dump.c:13243 #, c-format msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" -msgstr "la query per ottenere dati della sequenza \"%s\" restituisce il nome \"%s\"\n" +msgstr "la query per ottenere dati della sequenza \"%s\" ha restituito il nome \"%s\"\n" + +#: pg_dump.c:13484 +#, c-format +msgid "unexpected tgtype value: %d\n" +msgstr "valore tgtype inatteso: %d\n" -#: pg_dump.c:11808 +#: pg_dump.c:13566 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" -msgstr "la stringa argomento (%s) non è valida per il trigger \"%s\" sulla tabella \"%s\"\n" +msgstr "la stringa argomento (%s) non è valida per il trigger \"%s\" sulla tabella \"%s\"\n" -#: pg_dump.c:11924 +#: pg_dump.c:13684 #, c-format msgid "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows returned\n" msgstr "la query per ottenere regole \"%s\" per la tabella \"%s\" ha fallito: ha restituito un numero errato di righe\n" -#: pg_dump.c:12019 +#: pg_dump.c:13946 msgid "reading dependency data\n" msgstr "lettura dati di dipendenza\n" -#: pg_dump.c:12397 +#: pg_dump.c:14435 msgid "SQL command failed\n" -msgstr "il comando SQL ha fallito\n" +msgstr "comando SQL fallito\n" -#: common.c:115 +#: common.c:107 msgid "reading schemas\n" msgstr "lettura schemi\n" -#: common.c:119 +#: common.c:118 +msgid "reading user-defined tables\n" +msgstr "lettura delle tabelle definite dall'utente\n" + +#: common.c:126 +msgid "reading extensions\n" +msgstr "lettura delle estensioni\n" + +#: common.c:130 msgid "reading user-defined functions\n" msgstr "lettura funzioni definite dall'utente\n" -#: common.c:125 +#: common.c:136 msgid "reading user-defined types\n" msgstr "lettura tipi definiti dall'utente\n" -#: common.c:131 +#: common.c:142 msgid "reading procedural languages\n" msgstr "lettura linguaggi procedurali\n" -#: common.c:135 +#: common.c:146 msgid "reading user-defined aggregate functions\n" -msgstr "lettura funzioni aggregate definite dall'utente\n" +msgstr "lettura funzioni di aggregazione definite dall'utente\n" -#: common.c:139 +#: common.c:150 msgid "reading user-defined operators\n" msgstr "lettura operatori definiti dall'utente\n" -#: common.c:144 +#: common.c:155 msgid "reading user-defined operator classes\n" msgstr "lettura classi operatore definite dall'utente\n" -#: common.c:148 +#: common.c:159 +msgid "reading user-defined operator families\n" +msgstr "lettura delle famiglie di operatori definiti dall'utente\n" + +#: common.c:163 msgid "reading user-defined text search parsers\n" -msgstr "lettura funzioni definite dall'utente\n" +msgstr "lettura dei parser di ricerca testo definiti dall'utente\n" -#: common.c:152 +#: common.c:167 msgid "reading user-defined text search templates\n" -msgstr "lettura delle maschere di ricerca testo definite dall'operatore\n" +msgstr "lettura dei modelli di ricerca testo definiti dall'utente\n" -#: common.c:156 +#: common.c:171 msgid "reading user-defined text search dictionaries\n" -msgstr "lettura dei dizionari di ricerca testo definiti dall'operatore\n" +msgstr "lettura dei dizionari di ricerca testo definiti dall'utente\n" -#: common.c:160 +#: common.c:175 msgid "reading user-defined text search configurations\n" -msgstr "lettura delle configurazioni di ricerca testo definite dall'operatore\n" +msgstr "lettura delle configurazioni di ricerca testo definite dall'utente\n" -#: common.c:164 +#: common.c:179 msgid "reading user-defined foreign-data wrappers\n" -msgstr "lettura dei wrapper(adattatori) per dati esterni definiti dall'utente\n" +msgstr "lettura dei wrapper di dati esterni definiti dall'utente\n" -#: common.c:168 +#: common.c:183 msgid "reading user-defined foreign servers\n" msgstr "lettura dei server esterni definiti dall'utente\n" -#: common.c:172 -#, fuzzy +#: common.c:187 msgid "reading default privileges\n" -msgstr "lettura dei trigger\n" +msgstr "lettura dei privilegi predefiniti\n" -#: common.c:176 -msgid "reading user-defined operator families\n" -msgstr "lettura delle famiglie di operatori definiti dall'utente\n" +#: common.c:191 +msgid "reading user-defined collations\n" +msgstr "lettura degli ordini definiti dall'utente\n" -#: common.c:180 +#: common.c:196 msgid "reading user-defined conversions\n" -msgstr "lettura dele conversioni definite dall'utente\n" +msgstr "lettura delle conversioni definite dall'utente\n" -#: common.c:184 -msgid "reading user-defined tables\n" -msgstr "lettura delle tabelle definite dall'utente\n" +#: common.c:200 +msgid "reading type casts\n" +msgstr "lettura delle conversioni dei tipi\n" -#: common.c:189 +#: common.c:204 msgid "reading table inheritance information\n" -msgstr "lettura informazioni di ereditarietà della tabella\n" +msgstr "lettura informazioni di ereditarietà delle tabelle\n" -#: common.c:193 +#: common.c:208 msgid "reading rewrite rules\n" msgstr "lettura regole di riscrittura\n" -#: common.c:197 -msgid "reading type casts\n" -msgstr "lettura dei tipi cast\n" +#: common.c:217 +msgid "finding extension members\n" +msgstr "ricerca degli elementi delle estensioni\n" -#: common.c:202 +#: common.c:222 msgid "finding inheritance relationships\n" msgstr "ricerca delle relazioni di ereditarietà\n" -#: common.c:206 +#: common.c:226 msgid "reading column info for interesting tables\n" msgstr "lettura informazioni di colonna per le tabelle interessate\n" -#: common.c:210 +#: common.c:230 msgid "flagging inherited columns in subtables\n" msgstr "marcatura colonne ereditate nelle sottotabelle\n" -#: common.c:214 +#: common.c:234 msgid "reading indexes\n" msgstr "lettura degli indici\n" -#: common.c:218 +#: common.c:238 msgid "reading constraints\n" msgstr "lettura dei vincoli\n" -#: common.c:222 +#: common.c:242 msgid "reading triggers\n" msgstr "lettura dei trigger\n" -#: common.c:802 +#: common.c:788 #, c-format msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n" -msgstr "controllo di integrità fallito, l'OID padre %u della tabella \"%s\" (OID %u) non trovato\n" +msgstr "controllo di integrità fallito, OID padre %u della tabella \"%s\" (OID %u) non trovato\n" -#: common.c:844 +#: common.c:830 #, c-format msgid "could not parse numeric array \"%s\": too many numbers\n" -msgstr "non è possibile analizzare l'array numerico \"%s\": troppi numeri\n" +msgstr "non è stato possibile interpretare l'array numerico \"%s\": troppi numeri\n" -#: common.c:859 +#: common.c:845 #, c-format msgid "could not parse numeric array \"%s\": invalid character in number\n" -msgstr "non è possibile analizzare l'array numerico \"%s\": caratteri non validi nel numero\n" +msgstr "non è stato possibile interpretare l'array numerico \"%s\": caratteri non validi nel numero\n" -#: common.c:972 +#: common.c:958 msgid "cannot duplicate null pointer\n" msgstr "puntatore null non duplicabile\n" -#: common.c:975 -#: common.c:986 -#: common.c:997 -#: common.c:1008 -#: pg_backup_archiver.c:727 -#: pg_backup_archiver.c:1093 -#: pg_backup_archiver.c:1224 -#: pg_backup_archiver.c:1691 -#: pg_backup_archiver.c:1843 -#: pg_backup_archiver.c:1889 -#: pg_backup_archiver.c:4007 -#: pg_backup_custom.c:144 -#: pg_backup_custom.c:149 -#: pg_backup_custom.c:155 -#: pg_backup_custom.c:170 -#: pg_backup_custom.c:552 -#: pg_backup_custom.c:1073 -#: pg_backup_custom.c:1082 -#: pg_backup_db.c:154 -#: pg_backup_db.c:164 -#: pg_backup_db.c:212 -#: pg_backup_db.c:256 -#: pg_backup_db.c:271 -#: pg_backup_db.c:305 -#: pg_backup_files.c:114 -#: pg_backup_null.c:72 -#: pg_backup_tar.c:167 -#: pg_backup_tar.c:1011 +#: common.c:961 common.c:972 common.c:983 common.c:994 +#: pg_backup_archiver.c:765 pg_backup_archiver.c:1161 +#: pg_backup_archiver.c:1292 pg_backup_archiver.c:1762 +#: pg_backup_archiver.c:1956 pg_backup_archiver.c:2002 +#: pg_backup_archiver.c:4263 pg_backup_custom.c:132 pg_backup_custom.c:139 +#: pg_backup_custom.c:780 pg_backup_custom.c:907 pg_backup_db.c:147 +#: pg_backup_db.c:157 pg_backup_db.c:205 pg_backup_db.c:249 pg_backup_db.c:264 +#: pg_backup_db.c:298 pg_backup_db.c:491 pg_backup_files.c:114 +#: pg_backup_null.c:72 pg_backup_tar.c:171 pg_backup_tar.c:1005 msgid "out of memory\n" msgstr "memoria esaurita\n" -#: pg_backup_archiver.c:80 +#: pg_backup_archiver.c:88 msgid "archiver" msgstr "archiviatore" -#: pg_backup_archiver.c:195 -#: pg_backup_archiver.c:1188 +#: pg_backup_archiver.c:208 pg_backup_archiver.c:1260 #, c-format msgid "could not close output file: %s\n" -msgstr "non è possibile chiudere il file di output: %s\n" +msgstr "chiusura del file di output fallita: %s\n" -#: pg_backup_archiver.c:220 +#: pg_backup_archiver.c:234 msgid "-C and -c are incompatible options\n" msgstr "-C e -c sono opzioni incompatibili\n" -#: pg_backup_archiver.c:227 +#: pg_backup_archiver.c:241 msgid "-C and -1 are incompatible options\n" msgstr "-C e -1 sono opzioni incompatibili\n" -#: pg_backup_archiver.c:239 +#: pg_backup_archiver.c:251 +msgid "parallel restore is not supported with this archive file format\n" +msgstr "il ripristino parallelo non è supportato con questo formato di archivio\n" + +#: pg_backup_archiver.c:255 +msgid "parallel restore is not supported with archives made by pre-8.0 pg_dump\n" +msgstr "il ripristino parallelo non è supportato con archivi eseguiti da pg_dump precedenti la versione 8.0\n" + +#: pg_backup_archiver.c:274 msgid "cannot restore from compressed archive (compression not supported in this installation)\n" -msgstr "impossibile ripristinare da archivio compresso (compressione non supportata in questa installazione)\n" +msgstr "non è possibile ripristinare da archivio compresso (compressione non supportata in questa installazione)\n" -#: pg_backup_archiver.c:249 +#: pg_backup_archiver.c:284 msgid "connecting to database for restore\n" -msgstr "connessione al database per ripristino\n" +msgstr "connessione al database per il ripristino\n" -#: pg_backup_archiver.c:251 +#: pg_backup_archiver.c:286 msgid "direct database connections are not supported in pre-1.3 archives\n" -msgstr "connessioni dirette al database non sono supportate negli archivi pre-1.3\n" +msgstr "le connessioni dirette al database non sono supportate negli archivi pre-1.3\n" -#: pg_backup_archiver.c:293 +#: pg_backup_archiver.c:328 msgid "implied data-only restore\n" msgstr "ripristino implicito dei soli dati\n" -#: pg_backup_archiver.c:344 +#: pg_backup_archiver.c:380 #, c-format msgid "dropping %s %s\n" msgstr "cancellazione di %s %s\n" -#: pg_backup_archiver.c:396 +#: pg_backup_archiver.c:432 #, c-format msgid "setting owner and privileges for %s %s\n" msgstr "impostazione proprietario e privilegi per %s %s\n" -#: pg_backup_archiver.c:454 -#: pg_backup_archiver.c:456 +#: pg_backup_archiver.c:490 pg_backup_archiver.c:492 #, c-format msgid "warning from original dump file: %s\n" msgstr "avvertimento dal file originale scaricato: %s\n" -#: pg_backup_archiver.c:463 +#: pg_backup_archiver.c:499 #, c-format msgid "creating %s %s\n" msgstr "creazione di %s %s\n" -#: pg_backup_archiver.c:507 +#: pg_backup_archiver.c:543 #, c-format msgid "connecting to new database \"%s\"\n" msgstr "connessione al nuovo database \"%s\"\n" -#: pg_backup_archiver.c:535 +#: pg_backup_archiver.c:571 #, c-format msgid "restoring %s\n" msgstr "ripristino di %s\n" -#: pg_backup_archiver.c:549 +#: pg_backup_archiver.c:585 #, c-format msgid "restoring data for table \"%s\"\n" msgstr "ripristino dati della tabella \"%s\"\n" -#: pg_backup_archiver.c:609 +#: pg_backup_archiver.c:647 #, c-format msgid "executing %s %s\n" -msgstr "execuzione di %s %s\n" +msgstr "esecuzione di %s %s\n" -#: pg_backup_archiver.c:642 +#: pg_backup_archiver.c:680 #, c-format msgid "disabling triggers for %s\n" msgstr "disabilitazione trigger per %s\n" -#: pg_backup_archiver.c:668 +#: pg_backup_archiver.c:706 #, c-format msgid "enabling triggers for %s\n" -msgstr "abilitazione triggers per %s\n" +msgstr "abilitazione trigger per %s\n" -#: pg_backup_archiver.c:698 +#: pg_backup_archiver.c:736 msgid "internal error -- WriteData cannot be called outside the context of a DataDumper routine\n" -msgstr "errore interno -- WriteData non può essere chiamata al di fuori del contesto di una routine DataDumper\n" +msgstr "errore interno -- WriteData non può essere chiamata al di fuori del contesto di una routine DataDumper\n" -#: pg_backup_archiver.c:851 +#: pg_backup_archiver.c:893 msgid "large-object output not supported in chosen format\n" -msgstr "uscita di large-object non supportata nel formato scelto\n" +msgstr "emissione dei large object non supportata nel formato scelto\n" -#: pg_backup_archiver.c:905 +#: pg_backup_archiver.c:947 #, c-format msgid "restored %d large object\n" msgid_plural "restored %d large objects\n" -msgstr[0] "%d large object ripristinato\n" -msgstr[1] "ripristinati %d large objects\n" +msgstr[0] "ripristinato %d large object\n" +msgstr[1] "ripristinati %d large object\n" -#: pg_backup_archiver.c:926 +#: pg_backup_archiver.c:968 pg_backup_tar.c:723 #, c-format msgid "restoring large object with OID %u\n" -msgstr "ripristino large object con OID %u\n" +msgstr "ripristino del large object con OID %u\n" -#: pg_backup_archiver.c:938 -#, fuzzy, c-format +#: pg_backup_archiver.c:980 +#, c-format msgid "could not create large object %u: %s" -msgstr "non è possibile creare il large object %u\n" +msgstr "creazione il large object %u fallita: %s" -#: pg_backup_archiver.c:1007 +#: pg_backup_archiver.c:1042 #, c-format msgid "could not open TOC file \"%s\": %s\n" -msgstr "non è possibile aprire il file TOC \"%s\": %s\n" +msgstr "apertura del file TOC \"%s\" fallita: %s\n" -#: pg_backup_archiver.c:1026 +#: pg_backup_archiver.c:1083 #, c-format msgid "WARNING: line ignored: %s\n" -msgstr "ATTENZIONE: la linea è stata ignorata: %s\n" +msgstr "ATTENZIONE: la riga è stata ignorata: %s\n" -#: pg_backup_archiver.c:1033 +#: pg_backup_archiver.c:1090 #, c-format msgid "could not find entry for ID %d\n" msgstr "non sono state trovate voci per l'ID %d\n" -#: pg_backup_archiver.c:1043 -#: pg_backup_files.c:172 -#: pg_backup_files.c:457 +#: pg_backup_archiver.c:1111 pg_backup_files.c:172 pg_backup_files.c:457 #, c-format msgid "could not close TOC file: %s\n" -msgstr "non è possibile chiudere il file TOC: %s\n" +msgstr "chiusura del file TOC fallita: %s\n" -#: pg_backup_archiver.c:1167 -#: pg_backup_custom.c:181 -#: pg_backup_files.c:130 +#: pg_backup_archiver.c:1230 pg_backup_custom.c:152 pg_backup_files.c:130 #: pg_backup_files.c:262 #, c-format msgid "could not open output file \"%s\": %s\n" -msgstr "non è possibile aprire il file di output \"%s\": %s\n" +msgstr "apertura del file di output \"%s\" fallita: %s\n" -#: pg_backup_archiver.c:1170 -#: pg_backup_custom.c:188 -#: pg_backup_files.c:137 +#: pg_backup_archiver.c:1233 pg_backup_custom.c:159 pg_backup_files.c:137 #, c-format msgid "could not open output file: %s\n" -msgstr "non è possibile aprire il file di output: %s\n" +msgstr "apertura del file di output fallita: %s\n" -#: pg_backup_archiver.c:1267 +#: pg_backup_archiver.c:1335 #, c-format msgid "wrote %lu byte of large object data (result = %lu)\n" msgid_plural "wrote %lu bytes of large object data (result = %lu)\n" msgstr[0] "scritto %lu byte di dati large object (risultato = %lu)\n" msgstr[1] "scritti %lu byte di dati large object (risultato = %lu)\n" -#: pg_backup_archiver.c:1273 +#: pg_backup_archiver.c:1341 #, c-format msgid "could not write to large object (result: %lu, expected: %lu)\n" -msgstr "non è possibile scrivere in oggetti large object (risultato: %lu, previsto: %lu)\n" - -#: pg_backup_archiver.c:1331 -#: pg_backup_archiver.c:1354 -#: pg_backup_custom.c:763 -#: pg_backup_custom.c:995 -#: pg_backup_custom.c:1009 -#: pg_backup_files.c:432 -#: pg_backup_tar.c:586 -#: pg_backup_tar.c:1089 -#: pg_backup_tar.c:1382 +msgstr "scrittura del large object fallita (risultato: %lu, previsto: %lu)\n" + +#: pg_backup_archiver.c:1399 pg_backup_archiver.c:1422 pg_backup_custom.c:652 +#: pg_backup_files.c:432 pg_backup_tar.c:590 pg_backup_tar.c:1092 +#: pg_backup_tar.c:1385 #, c-format msgid "could not write to output file: %s\n" -msgstr "non è possibile scrivere sul file di output: %s\n" +msgstr "scrittura nel file di output fallita: %s\n" -#: pg_backup_archiver.c:1339 +#: pg_backup_archiver.c:1407 msgid "could not write to custom output routine\n" -msgstr "non è possibile scrivere sulla routine di output personalizzata\n" +msgstr "non è stato possibile scrivere sulla routine di output personalizzata\n" -#: pg_backup_archiver.c:1437 +#: pg_backup_archiver.c:1505 msgid "Error while INITIALIZING:\n" -msgstr "Errore durante INITIALIZING:\n" +msgstr "Errore durante INIZIALIZZAZIONE:\n" -#: pg_backup_archiver.c:1442 +#: pg_backup_archiver.c:1510 msgid "Error while PROCESSING TOC:\n" -msgstr "Errore durante PROCESSING TOC:\n" +msgstr "Errore durante ELABORAZIONE TOC:\n" -#: pg_backup_archiver.c:1447 +#: pg_backup_archiver.c:1515 msgid "Error while FINALIZING:\n" -msgstr "Errore durante FINALIZING:\n" +msgstr "Errore durante FINALIZZAZIONE:\n" -#: pg_backup_archiver.c:1452 +#: pg_backup_archiver.c:1520 #, c-format msgid "Error from TOC entry %d; %u %u %s %s %s\n" -msgstr "Errore nalla voce TOC %d; %u %u %s %s %s\n" +msgstr "Errore nella voce TOC %d; %u %u %s %s %s\n" -#: pg_backup_archiver.c:1584 +#: pg_backup_archiver.c:1655 #, c-format msgid "unexpected data offset flag %d\n" msgstr "flag di offset dati non previsto %d\n" -#: pg_backup_archiver.c:1597 +#: pg_backup_archiver.c:1668 msgid "file offset in dump file is too large\n" -msgstr "loffset del file scaricato è troppo grande\n" +msgstr "l'offset del file scaricato è troppo grande\n" -#: pg_backup_archiver.c:1694 -#: pg_backup_archiver.c:2985 -#: pg_backup_custom.c:739 -#: pg_backup_files.c:419 -#: pg_backup_tar.c:785 +#: pg_backup_archiver.c:1765 pg_backup_archiver.c:3167 pg_backup_custom.c:630 +#: pg_backup_files.c:419 pg_backup_tar.c:779 msgid "unexpected end of file\n" msgstr "fine del file non prevista\n" -#: pg_backup_archiver.c:1711 +#: pg_backup_archiver.c:1782 msgid "attempting to ascertain archive format\n" msgstr "tentativo di accertamento del formato dell'archivio\n" -#: pg_backup_archiver.c:1727 -#: pg_backup_custom.c:200 -#: pg_backup_custom.c:869 -#: pg_backup_files.c:155 -#: pg_backup_files.c:307 +#: pg_backup_archiver.c:1808 pg_backup_archiver.c:1818 +#, c-format +msgid "directory name too long: \"%s\"\n" +msgstr "nome della directory troppo lungo: \"%s\"\n" + +#: pg_backup_archiver.c:1826 +#, c-format +msgid "directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not exist)\n" +msgstr "la directory \"%s\" non sembra un archivio valido (\"toc.dat\" non esiste)\n" + +#: pg_backup_archiver.c:1834 pg_backup_custom.c:171 pg_backup_custom.c:762 +#: pg_backup_files.c:155 pg_backup_files.c:307 #, c-format msgid "could not open input file \"%s\": %s\n" -msgstr "non è possibile aprire il file di input \"%s\": %s\n" +msgstr "apertura del file di input \"%s\" fallita: %s\n" -#: pg_backup_archiver.c:1734 -#: pg_backup_custom.c:207 -#: pg_backup_files.c:162 +#: pg_backup_archiver.c:1842 pg_backup_custom.c:178 pg_backup_files.c:162 #, c-format msgid "could not open input file: %s\n" -msgstr "non è possibile aprire il file di input: %s\n" +msgstr "apertura del file di input fallita: %s\n" -#: pg_backup_archiver.c:1743 +#: pg_backup_archiver.c:1851 #, c-format msgid "could not read input file: %s\n" -msgstr "non è possibile leggere il file di input: %s\n" +msgstr "lettura del file di input fallita: %s\n" -#: pg_backup_archiver.c:1745 +#: pg_backup_archiver.c:1853 #, c-format msgid "input file is too short (read %lu, expected 5)\n" msgstr "il file di input è troppo corto (letti %lu, previsti 5)\n" -#: pg_backup_archiver.c:1798 +#: pg_backup_archiver.c:1911 msgid "input file does not appear to be a valid archive (too short?)\n" -msgstr "il file di input non sembre essere un archivio valido (è troppo corto?)\n" +msgstr "il file di input non sembra essere un archivio valido (è troppo corto?)\n" -#: pg_backup_archiver.c:1801 +#: pg_backup_archiver.c:1914 msgid "input file does not appear to be a valid archive\n" msgstr "il file di input non sembra essere un archivio valido\n" -#: pg_backup_archiver.c:1821 +#: pg_backup_archiver.c:1934 #, c-format msgid "could not close input file: %s\n" -msgstr "non è possibile chiudere il file di input: %s\n" +msgstr "chiusura del file di input fallita: %s\n" -#: pg_backup_archiver.c:1838 +#: pg_backup_archiver.c:1951 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "allocazione AH per %s, formato %d\n" -#: pg_backup_archiver.c:1946 +#: pg_backup_archiver.c:2062 #, c-format msgid "unrecognized file format \"%d\"\n" -msgstr "formato del file \"%d\" non riconosciuto\n" +msgstr "formato di file \"%d\" sconosciuto\n" -#: pg_backup_archiver.c:2068 +#: pg_backup_archiver.c:2184 #, c-format msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" -msgstr "la voce ID %d è fuori scala -- possibile corruzione del TOC\n" +msgstr "la voce ID %d è fuori dall'intervallo consentito -- possibile corruzione della TOC\n" -#: pg_backup_archiver.c:2184 +#: pg_backup_archiver.c:2300 #, c-format msgid "read TOC entry %d (ID %d) for %s %s\n" msgstr "letta voce TOC %d (ID %d) per %s %s\n" -#: pg_backup_archiver.c:2218 +#: pg_backup_archiver.c:2334 #, c-format msgid "unrecognized encoding \"%s\"\n" -msgstr "codifica non riconosciuta \"%s\"\n" +msgstr "codifica sconosciuta \"%s\"\n" -#: pg_backup_archiver.c:2223 +#: pg_backup_archiver.c:2339 #, c-format msgid "invalid ENCODING item: %s\n" -msgstr "l'elemento ENCODING: %s è invalido\n" +msgstr "elemento ENCODING non valido: %s\n" -#: pg_backup_archiver.c:2241 +#: pg_backup_archiver.c:2357 #, c-format msgid "invalid STDSTRINGS item: %s\n" -msgstr "l'elemento STDSTRINGS: %s è invalido\n" +msgstr "elemento STDSTRINGS non valido: %s\n" -#: pg_backup_archiver.c:2433 +#: pg_backup_archiver.c:2555 #, c-format msgid "could not set session user to \"%s\": %s" -msgstr "non è possibile impostare la sessione utente a \"%s\": %s" +msgstr "impostazione della sessione utente a \"%s\" fallita: %s" -#: pg_backup_archiver.c:2771 -#: pg_backup_archiver.c:2921 +#: pg_backup_archiver.c:2895 pg_backup_archiver.c:3077 #, c-format msgid "WARNING: don't know how to set owner for object type %s\n" msgstr "ATTENZIONE: non si sa come impostare il proprietario per il tipo di oggetto %s\n" -#: pg_backup_archiver.c:2953 +#: pg_backup_archiver.c:3130 msgid "WARNING: requested compression not available in this installation -- archive will be uncompressed\n" -msgstr "ATTENZIONE: la compressione richiesta non è disponibile in questa installazione -- archive non sarà decompresso\n" +msgstr "ATTENZIONE: la compressione richiesta non è disponibile in questa installazione -- l'archivio non sarà compresso\n" -#: pg_backup_archiver.c:2988 +#: pg_backup_archiver.c:3170 msgid "did not find magic string in file header\n" -msgstr "non trovata la magic string nell'header del file\n" +msgstr "magic string non trovata nell'intestazione del file\n" -#: pg_backup_archiver.c:3002 +#: pg_backup_archiver.c:3183 #, c-format msgid "unsupported version (%d.%d) in file header\n" -msgstr "versione (%d.%d) non supportata nell' header del file\n" +msgstr "versione (%d.%d) non supportata nell'intestazione del file\n" -#: pg_backup_archiver.c:3007 +#: pg_backup_archiver.c:3188 #, c-format msgid "sanity check on integer size (%lu) failed\n" -msgstr "verifica sulla dimensione dell'intero (%lu) fallita\n" +msgstr "verifica sulla dimensione degli interi (%lu) fallita\n" -#: pg_backup_archiver.c:3011 +#: pg_backup_archiver.c:3192 msgid "WARNING: archive was made on a machine with larger integers, some operations might fail\n" -msgstr "ATTENZIONE: L'archivio è stato costruito su una macchina con interi lunghi, alcuni operazioni potrebbero non funzionare\n" +msgstr "ATTENZIONE: L'archivio è stato creato su una macchina con interi lunghi, alcune operazioni potrebbero fallire\n" -#: pg_backup_archiver.c:3021 +#: pg_backup_archiver.c:3202 #, c-format msgid "expected format (%d) differs from format found in file (%d)\n" msgstr "il formato previsto (%d) differisce dal formato trovato nel file (%d)\n" -#: pg_backup_archiver.c:3037 +#: pg_backup_archiver.c:3218 msgid "WARNING: archive is compressed, but this installation does not support compression -- no data will be available\n" -msgstr "ATTENZIONE: l'archivio è compresso, ma questa installazione non supporta la comressione -- nessun dato sarà disponibile\n" +msgstr "ATTENZIONE: l'archivio è compresso, ma questa installazione non supporta la compressione -- nessun dato sarà disponibile\n" -#: pg_backup_archiver.c:3055 +#: pg_backup_archiver.c:3236 msgid "WARNING: invalid creation date in header\n" -msgstr "ATTENZIONE: la data di creazione dell'header non è valida\n" +msgstr "ATTENZIONE: la data di creazione nell'intestazione non è valida\n" -#: pg_backup_archiver.c:3142 +#: pg_backup_archiver.c:3334 msgid "entering restore_toc_entries_parallel\n" -msgstr "ripristino parallelo voci toc in scrittura\n" - -#: pg_backup_archiver.c:3146 -msgid "parallel restore is not supported with this archive file format\n" -msgstr "il ripristino parallelo non è supportato con questo formato di archiviazione file\n" - -#: pg_backup_archiver.c:3150 -msgid "parallel restore is not supported with archives made by pre-8.0 pg_dump\n" -msgstr "il ripristino parallelo non è supportato con archivi eseguiti da pg_dump precedenti la versione 8.0\n" +msgstr "immissione restore_toc_entries_parallel\n" -#: pg_backup_archiver.c:3169 +#: pg_backup_archiver.c:3375 #, c-format msgid "processing item %d %s %s\n" msgstr "elaborazione elemento %d %s %s\n" -#: pg_backup_archiver.c:3225 +#: pg_backup_archiver.c:3451 msgid "entering main parallel loop\n" -msgstr "loop parallelo principale in scrittura\n" +msgstr "inizio del loop principale parallelo\n" -#: pg_backup_archiver.c:3239 +#: pg_backup_archiver.c:3465 #, c-format msgid "skipping item %d %s %s\n" msgstr "saltato l'elemento %d %s %s\n" -#: pg_backup_archiver.c:3255 +#: pg_backup_archiver.c:3481 #, c-format msgid "launching item %d %s %s\n" msgstr "avvio dell'elemento %d %s %s\n" -#: pg_backup_archiver.c:3292 +#: pg_backup_archiver.c:3518 #, c-format msgid "worker process crashed: status %d\n" -msgstr "il worker process si è bloccato: stato %d\n" +msgstr "il processo worker è terminato con errore: stato %d\n" -#: pg_backup_archiver.c:3297 +#: pg_backup_archiver.c:3523 msgid "finished main parallel loop\n" -msgstr "loop parallelo principale terminato\n" +msgstr "loop principale parallelo terminato\n" -#: pg_backup_archiver.c:3315 +#: pg_backup_archiver.c:3541 #, c-format msgid "processing missed item %d %s %s\n" -msgstr "elemento in eleborazione %d %s %s perduto\n" +msgstr "elaborazione dell'elemento perduto %d %s %s\n" -#: pg_backup_archiver.c:3341 +#: pg_backup_archiver.c:3567 msgid "parallel_restore should not return\n" -msgstr "il ripristino parallelo non dovrebbe tornare\n" +msgstr "parallel_restore non dovrebbe uscire\n" -#: pg_backup_archiver.c:3347 +#: pg_backup_archiver.c:3573 #, c-format msgid "could not create worker process: %s\n" -msgstr "non è possibile creare il worker process: %s\n" +msgstr "creazione del processo worker fallita: %s\n" -#: pg_backup_archiver.c:3355 +#: pg_backup_archiver.c:3581 #, c-format msgid "could not create worker thread: %s\n" -msgstr "non è possibile creare il worker thread: %s\n" +msgstr "creazione del thread worker fallita: %s\n" -#: pg_backup_archiver.c:3579 +#: pg_backup_archiver.c:3805 msgid "no item ready\n" msgstr "nessun elemento pronto\n" -#: pg_backup_archiver.c:3674 +#: pg_backup_archiver.c:3900 msgid "could not find slot of finished worker\n" -msgstr "non è possibile trovare slot di worker finiti\n" +msgstr "non è stato trovato alcuno slot di worker terminati\n" -#: pg_backup_archiver.c:3676 +#: pg_backup_archiver.c:3902 #, c-format msgid "finished item %d %s %s\n" -msgstr "elemento %d %s %s terminato \n" +msgstr "elemento %d %s %s terminato\n" -#: pg_backup_archiver.c:3689 +#: pg_backup_archiver.c:3915 #, c-format msgid "worker process failed: exit code %d\n" -msgstr "worker process fallito: codice d'uscita %d\n" +msgstr "processo worker fallito: codice di uscita %d\n" -#: pg_backup_archiver.c:3841 +#: pg_backup_archiver.c:4111 #, c-format msgid "transferring dependency %d -> %d to %d\n" msgstr "trasferimento di dipendenza %d -> %d a %d\n" -#: pg_backup_archiver.c:3915 +#: pg_backup_archiver.c:4180 #, c-format msgid "reducing dependencies for %d\n" -msgstr "reduzione dipendenze per %d\n" +msgstr "riduzione dipendenze per %d\n" -#: pg_backup_archiver.c:3973 +#: pg_backup_archiver.c:4229 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" -msgstr "la tabella \"%s\"non può essere creata, non è possibili ripristinare i suoi dati\n" +msgstr "creazione della tabella \"%s\" fallita, i suoi dati non verranno ripristinati\n" -#: pg_backup_custom.c:97 +#: pg_backup_custom.c:87 msgid "custom archiver" msgstr "archiviatore personalizzato" -#: pg_backup_custom.c:405 -#: pg_backup_null.c:153 +#: pg_backup_custom.c:373 pg_backup_null.c:153 msgid "invalid OID for large object\n" msgstr "OID non valido per large object\n" -#: pg_backup_custom.c:458 -msgid "dumping a specific TOC data block out of order is not supported without ID on this input stream (fseek required)\n" -msgstr "lo scarico di uno specifico blocco di dati TOC fuori ordine non è supportato senza ID in questo flusso di input (è richiesto fseek)\n" - -#: pg_backup_custom.c:473 +#: pg_backup_custom.c:444 #, c-format msgid "unrecognized data block type (%d) while searching archive\n" -msgstr "blocco di tipo dato non riconosciuto (%d) durante la ricerca in archivio\n" +msgstr "tipo di blocco dati sconosciuto (%d) durante la ricerca in archivio\n" -#: pg_backup_custom.c:484 +#: pg_backup_custom.c:455 #, c-format msgid "error during file seek: %s\n" -msgstr "errore durante la ricerca nel file: %s\n" +msgstr "errore durante lo spostamento nel file: %s\n" -#: pg_backup_custom.c:491 +#: pg_backup_custom.c:465 +#, c-format +msgid "could not find block ID %d in archive -- possibly due to out-of-order restore request, which cannot be handled due to lack of data offsets in archive\n" +msgstr "blocco ID %d non trovato nell'archivio -- forse per una richiesta di ripristino fuori ordine, che non può essere eseguita per la mancanza di offset dati nell'archivio\n" + +#: pg_backup_custom.c:470 +#, c-format +msgid "could not find block ID %d in archive -- possibly due to out-of-order restore request, which cannot be handled due to non-seekable input file\n" +msgstr "blocco ID %d non trovato nell'archivio -- forse per una richiesta di ripristino fuori ordine, che non può essere eseguita perché il file di input non supporta il seek\n" + +#: pg_backup_custom.c:475 +#, c-format +msgid "could not find block ID %d in archive -- possibly corrupt archive\n" +msgstr "blocco ID %d non trovato nell'archivio -- forse l'archivio è corrotto\n" + +#: pg_backup_custom.c:482 #, c-format msgid "found unexpected block ID (%d) when reading data -- expected %d\n" msgstr "trovato il blocco ID (%d) inatteso leggendo i dati -- previsto %d\n" -#: pg_backup_custom.c:505 +#: pg_backup_custom.c:496 #, c-format msgid "unrecognized data block type %d while restoring archive\n" -msgstr "blocco di tipo dato non riconosciuto %d durante il ripristino dell'archivio\n" +msgstr "tipo di blocco dati sconosciuto %d durante il ripristino dell'archivio\n" -#: pg_backup_custom.c:539 -#: pg_backup_custom.c:945 -#, c-format -msgid "could not initialize compression library: %s\n" -msgstr "non è possibile inizializzare la libreria di compressione: %s\n" - -#: pg_backup_custom.c:563 -#: pg_backup_custom.c:687 +#: pg_backup_custom.c:578 pg_backup_custom.c:916 msgid "could not read from input file: end of file\n" -msgstr "non è possibile leggere dal file in input: fine del file\n" +msgstr "lettura dal file di input fallita: fine del file\n" -#: pg_backup_custom.c:566 -#: pg_backup_custom.c:690 +#: pg_backup_custom.c:581 pg_backup_custom.c:919 #, c-format msgid "could not read from input file: %s\n" -msgstr "non è possibile leggere dal file di input: %s\n" +msgstr "lettura dal file di input fallita: %s\n" -#: pg_backup_custom.c:583 #: pg_backup_custom.c:610 #, c-format -msgid "could not uncompress data: %s\n" -msgstr "non è possibile decomprimere i dati: %s\n" - -#: pg_backup_custom.c:616 -#, c-format -msgid "could not close compression library: %s\n" -msgstr "non è possibile chiudere la libreria compressa: %s\n" - -#: pg_backup_custom.c:718 -#, c-format msgid "could not write byte: %s\n" -msgstr "non è possibile scrivere il byte: %s\n" +msgstr "scrittura del byte fallita: %s\n" -#: pg_backup_custom.c:830 -#: pg_backup_custom.c:863 +#: pg_backup_custom.c:718 pg_backup_custom.c:756 #, c-format msgid "could not close archive file: %s\n" -msgstr "non è possibile chiudere il file d'archivio: %s\n" +msgstr "chiusura del file di archivio fallita: %s\n" -#: pg_backup_custom.c:849 +#: pg_backup_custom.c:737 msgid "can only reopen input archives\n" -msgstr "gli archivi in input possono solo essere riaperti\n" +msgstr "solo gli archivi in input possono essere riaperti\n" -#: pg_backup_custom.c:851 -msgid "cannot reopen stdin\n" -msgstr "non si può riaprire stdin\n" +#: pg_backup_custom.c:744 +msgid "parallel restore from stdin is not supported\n" +msgstr "il ripristino in parallelo da stdin non è supportato\n" -#: pg_backup_custom.c:853 -msgid "cannot reopen non-seekable file\n" -msgstr "non si può riaprire un file non-seekable\n" +#: pg_backup_custom.c:746 +msgid "parallel restore from non-seekable file is not supported\n" +msgstr "il ripristino in parallelo da un file che non supporta il seek non è supportato\n" -#: pg_backup_custom.c:858 +#: pg_backup_custom.c:751 #, c-format msgid "could not determine seek position in archive file: %s\n" -msgstr "non è possibile determinare la posizione di ricerca nel file d'archivio: %s\n" +msgstr "non è stato possibile determinare la posizione per il seek nel file d'archivio: %s\n" -#: pg_backup_custom.c:873 +#: pg_backup_custom.c:766 #, c-format msgid "could not set seek position in archive file: %s\n" -msgstr "non è possibile impostare la posizione di ricerca nel file d'archivio: %s\n" +msgstr "spostamento nel file di archivio fallita: %s\n" -#: pg_backup_custom.c:895 -msgid "WARNING: ftell mismatch with expected position -- ftell used\n" -msgstr "ATTENZIONE: ftell non corrisponde alla posizione prevista -- si usa ftell\n" +#: pg_backup_custom.c:786 +msgid "compressor active\n" +msgstr "compressione attiva\n" -#: pg_backup_custom.c:976 -#, c-format -msgid "could not compress data: %s\n" -msgstr "non è possibile comprimere i dati: %s\n" - -#: pg_backup_custom.c:1054 -#, c-format -msgid "could not close compression stream: %s\n" -msgstr "non è possibile chiudere il flusso di compressione: %s\n" +#: pg_backup_custom.c:822 +msgid "WARNING: ftell mismatch with expected position -- ftell used\n" +msgstr "ATTENZIONE: ftell non corrisponde alla posizione prevista -- verrà usato il valore restituito da ftell\n" #: pg_backup_db.c:25 msgid "archiver (db)" msgstr "archiviatore (db)" -#: pg_backup_db.c:61 +#: pg_backup_db.c:54 msgid "could not get server_version from libpq\n" -msgstr "non è possibile ottenere la versione del server da libpq\n" +msgstr "non è stato possibile ottenere server_version da libpq\n" -#: pg_backup_db.c:74 -#: pg_dumpall.c:1717 +#: pg_backup_db.c:67 pg_dumpall.c:1741 #, c-format msgid "server version: %s; %s version: %s\n" msgstr "versione del server: %s; %s versione: %s\n" -#: pg_backup_db.c:76 -#: pg_dumpall.c:1719 +#: pg_backup_db.c:69 pg_dumpall.c:1743 #, c-format msgid "aborting because of server version mismatch\n" -msgstr "abortito perchè la versione del server non corrisponde\n" +msgstr "abortito perché la versione del server non corrisponde\n" -#: pg_backup_db.c:147 +#: pg_backup_db.c:140 #, c-format msgid "connecting to database \"%s\" as user \"%s\"\n" msgstr "connessione al database \"%s\" come utente \"%s\"\n" -#: pg_backup_db.c:152 -#: pg_backup_db.c:207 -#: pg_backup_db.c:254 -#: pg_backup_db.c:303 -#: pg_dumpall.c:1613 -#: pg_dumpall.c:1665 +#: pg_backup_db.c:145 pg_backup_db.c:200 pg_backup_db.c:247 pg_backup_db.c:296 +#: pg_dumpall.c:1637 pg_dumpall.c:1689 msgid "Password: " msgstr "Password: " -#: pg_backup_db.c:188 +#: pg_backup_db.c:181 msgid "failed to reconnect to database\n" -msgstr "riconnessione al database fallita\n" +msgstr "riconnessione al database fallita\n" -#: pg_backup_db.c:193 +#: pg_backup_db.c:186 #, c-format msgid "could not reconnect to database: %s" -msgstr "non è possibile riconnettersi al database: %s" +msgstr "riconnessione al database fallita: %s" -#: pg_backup_db.c:209 +#: pg_backup_db.c:202 msgid "connection needs password\n" msgstr "la connessione richiede la password\n" -#: pg_backup_db.c:250 +#: pg_backup_db.c:243 msgid "already connected to a database\n" msgstr "già connesso ad un database\n" -#: pg_backup_db.c:295 +#: pg_backup_db.c:288 msgid "failed to connect to database\n" -msgstr "connessione a database fallita\n" +msgstr "connessione al database fallita\n" -#: pg_backup_db.c:314 +#: pg_backup_db.c:307 #, c-format msgid "connection to database \"%s\" failed: %s" msgstr "connessione al database \"%s\" fallita: %s" -#: pg_backup_db.c:329 +#: pg_backup_db.c:322 #, c-format msgid "%s" msgstr "%s" -#: pg_backup_db.c:441 +#: pg_backup_db.c:414 pg_backup_db.c:485 pg_backup_db.c:494 +msgid "could not execute query" +msgstr "esecuzione della query fallita" + +#: pg_backup_db.c:465 #, c-format msgid "error returned by PQputCopyData: %s" msgstr "errore restituito da PQputCopyData: %s" -#: pg_backup_db.c:451 +#: pg_backup_db.c:513 #, c-format msgid "error returned by PQputCopyEnd: %s" msgstr "errore restituito da PQputCopyEnd: %s" -#: pg_backup_db.c:498 -msgid "could not execute query" -msgstr "non è possibile eseguire la query" - -#: pg_backup_db.c:696 +#: pg_backup_db.c:530 msgid "could not start database transaction" -msgstr "non è possibile avviare la transazione database" +msgstr "avvio della transazione database fallito" -#: pg_backup_db.c:702 +#: pg_backup_db.c:536 msgid "could not commit database transaction" -msgstr "non è possibile effettuare il commit della transazione database" +msgstr "commit della transazione database fallito" #: pg_backup_files.c:68 msgid "file archiver" -msgstr "archiviatore file" +msgstr "archiviatore di file" #: pg_backup_files.c:122 msgid "" @@ -1522,39 +1467,37 @@ msgid "" " normal use. Files will be written in the current working directory.\n" msgstr "" "ATTENZIONE:\n" -" Questo formato è solo per uso dimostrativo; non è destinato ad un\n" -" normale utilizzo. I file saranno scritti nella directory di lavoro corrente.\n" +" Questo formato è per scopo dimostrativo e non è pensato per l'uso normale.\n" +" I file saranno scritti nella directory corrente.\n" #: pg_backup_files.c:283 msgid "could not close data file\n" -msgstr "non è possibile chiudere il file dati\n" +msgstr "non è stato possibile chiudere il file di dati\n" #: pg_backup_files.c:317 msgid "could not close data file after reading\n" -msgstr "non è possibile chiudere il file dati dopo la lettura\n" +msgstr "non è stato possibile chiudere il file di dati dopo la lettura\n" #: pg_backup_files.c:379 #, c-format msgid "could not open large object TOC for input: %s\n" -msgstr "non è possibile aprire la TOC del large object per l'input: %s\n" +msgstr "non è stato possibile aprire il file TOC dei large object per l'input: %s\n" -#: pg_backup_files.c:392 -#: pg_backup_files.c:561 +#: pg_backup_files.c:392 pg_backup_files.c:561 #, c-format msgid "could not close large object TOC file: %s\n" -msgstr "non è possibile chiudere la TOC del file large object: %s\n" +msgstr "non è stato possibile chiudere il file TOC large object: %s\n" #: pg_backup_files.c:404 msgid "could not write byte\n" -msgstr "non è possibile scrivere il byte\n" +msgstr "scrittura del byte fallita\n" #: pg_backup_files.c:490 #, c-format msgid "could not open large object TOC for output: %s\n" -msgstr "non è possibile aprire la TOC del large object per l'output: %s\n" +msgstr "non è stato possibile aprire il file TOC dei large object per l'input: %s\n" -#: pg_backup_files.c:510 -#: pg_backup_tar.c:935 +#: pg_backup_files.c:510 pg_backup_tar.c:929 #, c-format msgid "invalid OID for large object (%u)\n" msgstr "OID non valida per il large object (%u)\n" @@ -1562,174 +1505,161 @@ msgstr "OID non valida per il large object (%u)\n" #: pg_backup_files.c:529 #, c-format msgid "could not open large object file \"%s\" for input: %s\n" -msgstr "non è possibile aprire il file large object \"%s\" per l'input: %s\n" +msgstr "non è stato possibile aprire il file di large object \"%s\" per l'input: %s\n" #: pg_backup_files.c:544 msgid "could not close large object file\n" -msgstr "non è possibile chiudere il file large object\n" +msgstr "non è stato possibile chiudere il file di large object\n" #: pg_backup_null.c:78 msgid "this format cannot be read\n" msgstr "questo formato non può essere letto\n" -#: pg_backup_tar.c:101 +#: pg_backup_tar.c:105 msgid "tar archiver" msgstr "archiviatore tar" -#: pg_backup_tar.c:179 +#: pg_backup_tar.c:183 #, c-format msgid "could not open TOC file \"%s\" for output: %s\n" -msgstr "non è possibile aprire la TOC del file \"%s\" per l'output: %s\n" +msgstr "apertura del file TOC \"%s\" per l'output fallita: %s\n" -#: pg_backup_tar.c:187 +#: pg_backup_tar.c:191 #, c-format msgid "could not open TOC file for output: %s\n" -msgstr "non è possibile aprire la TOC del file per l'output: %s\n" +msgstr "apertura del file TOC per l'output fallita: %s\n" -#: pg_backup_tar.c:214 -#: pg_backup_tar.c:370 -#, fuzzy +#: pg_backup_tar.c:218 pg_backup_tar.c:374 msgid "compression is not supported by tar archive format\n" -msgstr "compressione non supportata dal formato tar di output\n" +msgstr "compressione non supportata dal formato di archivio tar\n" -#: pg_backup_tar.c:222 +#: pg_backup_tar.c:226 #, c-format msgid "could not open TOC file \"%s\" for input: %s\n" -msgstr "non è possibile aprire la TOC del file \"%s\" per l'input: %s\n" +msgstr "apertura del file TOC \"%s\" per l'input fallita: %s\n" -#: pg_backup_tar.c:229 +#: pg_backup_tar.c:233 #, c-format msgid "could not open TOC file for input: %s\n" -msgstr "non è possibile aprire la TOC del file per l'input: %s\n" +msgstr "apertura del file TOC per l'input fallita: %s\n" -#: pg_backup_tar.c:356 -#, fuzzy, c-format +#: pg_backup_tar.c:360 +#, c-format msgid "could not find file \"%s\" in archive\n" -msgstr "non è possibile trovare il file %s in archivio\n" +msgstr "file \"%s\" non trovato nell'archivio\n" -#: pg_backup_tar.c:412 +#: pg_backup_tar.c:416 #, c-format msgid "could not generate temporary file name: %s\n" -msgstr "non è possibile generare il file temporaneo con nome: %s\n" +msgstr "generazione del nome del file temporaneo fallita: %s\n" -#: pg_backup_tar.c:421 +#: pg_backup_tar.c:425 msgid "could not open temporary file\n" -msgstr "non è possibile aprire il file temporaneo\n" +msgstr "apertura del file temporaneo fallita\n" -#: pg_backup_tar.c:448 +#: pg_backup_tar.c:452 msgid "could not close tar member\n" -msgstr "non è possibile chiudere il membro tar\n" +msgstr "chiusura del membro tar fallita\n" -#: pg_backup_tar.c:548 +#: pg_backup_tar.c:552 msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" -msgstr "errore interno -- nessun th o fh specificato in tarReadRaw()\n" - -#: pg_backup_tar.c:674 -#, c-format -msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n" -msgstr "istruzione per la COPY non valida -- non è possibile trovare \"copy\" nella stringa \"%s\"\n" +msgstr "errore interno -- né th né fh specificato in tarReadRaw()\n" -#: pg_backup_tar.c:692 +#: pg_backup_tar.c:678 #, c-format -msgid "invalid COPY statement -- could not find \"from stdin\" in string \"%s\" starting at position %lu\n" -msgstr "istruzione per la COPY non valida -- non è possibile trovare \"from stdin\" nella stringa \"%s\" partendo dalla posizione%lu\n" +msgid "unexpected COPY statement syntax: \"%s\"\n" +msgstr "sintassi dell'istruzione COPY imprevista: \"%s\"\n" -#: pg_backup_tar.c:729 -#, c-format -msgid "restoring large object OID %u\n" -msgstr "ripristino della OID del large object %u\n" - -#: pg_backup_tar.c:880 +#: pg_backup_tar.c:874 msgid "could not write null block at end of tar archive\n" msgstr "non è possibile scrivere un blocco null alla fine dell'archivio tar\n" -#: pg_backup_tar.c:1080 +#: pg_backup_tar.c:1083 msgid "archive member too large for tar format\n" msgstr "membro dell'archivio troppo grande per il formato tar\n" -#: pg_backup_tar.c:1095 +#: pg_backup_tar.c:1098 #, c-format msgid "could not close temporary file: %s\n" -msgstr "non è possibile chiudere il file temporaneo: %s\n" +msgstr "chiusura del file temporaneo fallita: %s\n" -#: pg_backup_tar.c:1105 +#: pg_backup_tar.c:1108 #, c-format msgid "actual file length (%s) does not match expected (%s)\n" msgstr "la lunghezza del file (%s) non corrisponde con quella prevista (%s)\n" -#: pg_backup_tar.c:1113 +#: pg_backup_tar.c:1116 msgid "could not output padding at end of tar member\n" -msgstr "non è possibile effetture il riempimento in output alla fine del membro tar\n" +msgstr "riempimento alla fine del membro tar fallito\n" -#: pg_backup_tar.c:1142 +#: pg_backup_tar.c:1145 #, c-format msgid "moving from position %s to next member at file position %s\n" msgstr "spostamento dalla posizione %s al membro successivo alla posizione nel file %s\n" -#: pg_backup_tar.c:1153 +#: pg_backup_tar.c:1156 #, c-format msgid "now at file position %s\n" msgstr "attuale posizione nel file %s\n" -#: pg_backup_tar.c:1162 -#: pg_backup_tar.c:1192 -#, fuzzy, c-format +#: pg_backup_tar.c:1165 pg_backup_tar.c:1195 +#, c-format msgid "could not find header for file \"%s\" in tar archive\n" -msgstr "non è possibile trovare l'header per il file %s nell'archivio tar\n" +msgstr "intestazione per il file \"%s\" nell'archivio tar non trovata\n" -#: pg_backup_tar.c:1176 +#: pg_backup_tar.c:1179 #, c-format msgid "skipping tar member %s\n" msgstr "salto del membro tar %s\n" -#: pg_backup_tar.c:1180 -#, fuzzy, c-format +#: pg_backup_tar.c:1183 +#, c-format msgid "restoring data out of order is not supported in this archive format: \"%s\" is required, but comes before \"%s\" in the archive file.\n" -msgstr "lo scarico dei dati fuori ordine non è supportato in questo formato d'archivio: è richiesto %s, ma nel file d'archivio viene prima %s.\n" +msgstr "il ripristino dei dati fuori ordine non è supportato in questo formato di archivio: è richiesto \"%s\", ma nel file d'archivio viene prima di \"%s\".\n" -#: pg_backup_tar.c:1226 +#: pg_backup_tar.c:1229 #, c-format msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n" msgstr "disallineamento nel file tra la posizione reale e quella prevista (reale %s prevista %s)\n" -#: pg_backup_tar.c:1241 +#: pg_backup_tar.c:1244 #, c-format msgid "incomplete tar header found (%lu byte)\n" msgid_plural "incomplete tar header found (%lu bytes)\n" -msgstr[0] "trovato l'header del file tar incompleta (%lu byte)\n" -msgstr[1] "trovato l'header del file tar incompleta (%lu byte)\n" +msgstr[0] "intestazione del file tar incompleta (%lu byte)\n" +msgstr[1] "intestazione del file tar incompleta (%lu byte)\n" -#: pg_backup_tar.c:1279 +#: pg_backup_tar.c:1282 #, c-format msgid "TOC Entry %s at %s (length %lu, checksum %d)\n" -msgstr "voce TOC %s in %s (lunghezza %lu, checksum %d)\n" +msgstr "Voce TOC %s a %s (lunghezza %lu, checksum %d)\n" -#: pg_backup_tar.c:1289 +#: pg_backup_tar.c:1292 #, c-format msgid "corrupt tar header found in %s (expected %d, computed %d) file position %s\n" -msgstr "trovata header tar corrotta in %s (previsti %d, calcolati %d) alla posizione file %s\n" +msgstr "intestazione tar corrotta in %s (previsti %d, calcolati %d) alla posizione file %s\n" -#: pg_restore.c:308 +#: pg_restore.c:300 #, c-format msgid "%s: options -d/--dbname and -f/--file cannot be used together\n" msgstr "%s: le opzioni -d/--dbname e -f/--file non possono essere usate insieme\n" -#: pg_restore.c:320 +#: pg_restore.c:312 #, c-format msgid "%s: cannot specify both --single-transaction and multiple jobs\n" -msgstr "%s: non si può specificare insieme --single-transaction e job multipli\n" +msgstr "%s: non si può specificare insieme --single-transaction e job multipli\n" -#: pg_restore.c:350 +#: pg_restore.c:348 #, c-format -msgid "unrecognized archive format \"%s\"; please specify \"c\" or \"t\"\n" -msgstr "formato d'archivio \"%s\" non riconosciuto; specificare \"c\" oppure \"t\"\n" +msgid "unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"\n" +msgstr "formato di archivio sconosciuto \"%s\"; specificare \"c\", \"d\" o \"t\"\n" -#: pg_restore.c:384 +#: pg_restore.c:382 #, c-format msgid "WARNING: errors ignored on restore: %d\n" -msgstr "ATTENZIONE: nel ripristino è stato ignorato l'errore: %d\n" +msgstr "ATTENZIONE: errore ignorato durante il ripristino: %d\n" -#: pg_restore.c:398 +#: pg_restore.c:396 #, c-format msgid "" "%s restores a PostgreSQL database from an archive created by pg_dump.\n" @@ -1738,47 +1668,47 @@ msgstr "" "%s ripristino di un database PostgreSQL da un archivio creato con pg_dump.\n" "\n" -#: pg_restore.c:400 +#: pg_restore.c:398 #, c-format msgid " %s [OPTION]... [FILE]\n" -msgstr " %s [OPTIONE]... [FILE]\n" +msgstr " %s [OPZIONE]... [FILE]\n" -#: pg_restore.c:403 +#: pg_restore.c:401 #, c-format msgid " -d, --dbname=NAME connect to database name\n" -msgstr " -d, --dbname=NOME nome del database da connettere\n" +msgstr " -d, --dbname=NOME nome del database a cui connettersi\n" -#: pg_restore.c:404 +#: pg_restore.c:402 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=NOMEFILE nome del file di output\n" -#: pg_restore.c:405 +#: pg_restore.c:403 #, c-format -msgid " -F, --format=c|t backup file format (should be automatic)\n" -msgstr " -F, --format=c|t formato del file di backup (dovrebbe essere automatico)\n" +msgid " -F, --format=c|d|t backup file format (should be automatic)\n" +msgstr " -F, --format=c|d|t formato del file di backup (dovrebbe essere automatico)\n" -#: pg_restore.c:406 +#: pg_restore.c:404 #, c-format msgid " -l, --list print summarized TOC of the archive\n" msgstr " -l, --list stampa un riassunto della TOC dell'archivio\n" -#: pg_restore.c:407 +#: pg_restore.c:405 #, c-format msgid " -v, --verbose verbose mode\n" -msgstr " -v, --verbose modo verbose\n" +msgstr " -v, --verbose stampa più informazioni\n" -#: pg_restore.c:408 +#: pg_restore.c:406 #, c-format msgid " --help show this help, then exit\n" -msgstr " --help mostra questo aiuto ed esce\n" +msgstr " --help mostra questo aiuto ed esci\n" -#: pg_restore.c:409 +#: pg_restore.c:407 #, c-format msgid " --version output version information, then exit\n" -msgstr " --version fornisce informazioni sulla versione ed esce\n" +msgstr " --version mostra informazioni sulla versione ed esci\n" -#: pg_restore.c:411 +#: pg_restore.c:409 #, c-format msgid "" "\n" @@ -1787,37 +1717,37 @@ msgstr "" "\n" "Opzioni per il controllo del ripristino:\n" -#: pg_restore.c:412 +#: pg_restore.c:410 #, c-format msgid " -a, --data-only restore only the data, no schema\n" -msgstr " -a, --data-only ripristino dei soli dati e non dello schema\n" +msgstr " -a, --data-only ripristina solo i dati, non gli schemi\n" -#: pg_restore.c:413 +#: pg_restore.c:411 #, c-format msgid " -c, --clean clean (drop) database objects before recreating\n" -msgstr " -c, --clean pulisce (drop) gli oggetti database prima di ricrearli\n" +msgstr " -c, --clean svuota (drop) gli oggetti del database prima di ricrearli\n" -#: pg_restore.c:414 +#: pg_restore.c:412 #, c-format msgid " -C, --create create the target database\n" msgstr " -C, --create crea il database in oggetto\n" -#: pg_restore.c:415 +#: pg_restore.c:413 #, c-format msgid " -e, --exit-on-error exit on error, default is to continue\n" -msgstr " -e, --exit-on-error uscita su errore, preimpostato a continua\n" +msgstr " -e, --exit-on-error esci in caso di errore, il comportamento predefinito è continuare\n" -#: pg_restore.c:416 +#: pg_restore.c:414 #, c-format msgid " -I, --index=NAME restore named index\n" -msgstr " -I, --index=NOME nome indice per ripristino\n" +msgstr " -I, --index=NOME nome indice da ripristinare\n" -#: pg_restore.c:417 +#: pg_restore.c:415 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to restore\n" -msgstr " -j, --jobs=NUM per il ripristino utilizza questi job paralleli\n" +msgstr " -j, --jobs=NUM per il ripristino usa questo numero di job paralleli\n" -#: pg_restore.c:418 +#: pg_restore.c:416 #, c-format msgid "" " -L, --use-list=FILENAME use table of contents from this file for\n" @@ -1826,17 +1756,17 @@ msgstr "" " -L, --use-list=NOMEFILE utilizza la tabella dei contenuti di questo file per\n" " selezionare/ordinare l'output\n" -#: pg_restore.c:420 +#: pg_restore.c:418 #, c-format msgid " -n, --schema=NAME restore only objects in this schema\n" msgstr " -n, --schema=NAME ripristina solo gli oggetti in questo schema\n" -#: pg_restore.c:421 +#: pg_restore.c:419 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" -msgstr " -O, --no-owner salta il ripristino della proprietà dell'oggetto\n" +msgstr " -O, --no-owner salta il ripristino del proprietario degli oggetti\n" -#: pg_restore.c:422 +#: pg_restore.c:420 #, c-format msgid "" " -P, --function=NAME(args)\n" @@ -1845,35 +1775,46 @@ msgstr "" " -P, --function=NOME(argomenti)\n" " ripristina la funzione nominata\n" -#: pg_restore.c:424 +#: pg_restore.c:422 #, c-format msgid " -s, --schema-only restore only the schema, no data\n" msgstr " -s, --schema-only ripristina solo lo schema e non i dati\n" -#: pg_restore.c:425 +#: pg_restore.c:423 #, c-format msgid " -S, --superuser=NAME superuser user name to use for disabling triggers\n" -msgstr " -S, --superuser=NOME nome dell'utente superuser da usare per la disabilitazione dei trigger\n" +msgstr " -S, --superuser=NOME nome del superutente da usare per disabilitare i trigger\n" -#: pg_restore.c:426 +#: pg_restore.c:424 #, c-format msgid " -t, --table=NAME restore named table\n" msgstr " -t, --table=NOME ripristina la tabella nominata\n" -#: pg_restore.c:427 +#: pg_restore.c:425 #, c-format msgid " -T, --trigger=NAME restore named trigger\n" msgstr " -T, --trigger=NOME ripristina il trigger nominato\n" -#: pg_restore.c:428 +#: pg_restore.c:426 #, c-format msgid " -x, --no-privileges skip restoration of access privileges (grant/revoke)\n" msgstr " -x, --no-privileges salta il ripristino dei privilegi di accesso (grant/revoke)\n" +#: pg_restore.c:427 +#, c-format +msgid "" +" -1, --single-transaction\n" +" restore as a single transaction\n" +msgstr "" +" -1, --single-transaction\n" +" ripristina in un'unica transazione\n" + #: pg_restore.c:429 #, c-format msgid " --disable-triggers disable triggers during data-only restore\n" -msgstr " --disable-triggers disabilita i trigger durante il ripristino dei soli dati\n" +msgstr "" +" --disable-triggers disabilita i trigger durante il ripristino\n" +" dei soli dati\n" #: pg_restore.c:430 #, c-format @@ -1883,18 +1824,18 @@ msgid "" " created\n" msgstr "" " --no-data-for-failed-tables\n" -" non ripristina i dati delle tabelle che non possono essere\n" -" create\n" +" non ripristinare i dati delle tabelle che non\n" +" è stato possibile creare\n" #: pg_restore.c:433 #, c-format -msgid " --no-tablespaces do not restore tablespace assignments\n" -msgstr " --no-tablespaces non ripristina le assegnazioni dei tablespace\n" +msgid " --no-security-labels do not restore security labels\n" +msgstr " --no-security-labels do ripristinare le etichette di sicurezza\n" #: pg_restore.c:434 #, c-format -msgid " --role=ROLENAME do SET ROLE before restore\n" -msgstr " --role=NOMERUOLO esegue SET ROLE prima del ripristino\n" +msgid " --no-tablespaces do not restore tablespace assignments\n" +msgstr " --no-tablespaces non ripristina le assegnazioni dei tablespace\n" #: pg_restore.c:435 #, c-format @@ -1904,19 +1845,15 @@ msgid "" " ALTER OWNER commands to set ownership\n" msgstr "" " --use-set-session-authorization\n" -" usa i comandi SET SESSION AUTHORIZATION invece dei\n" -" comandi ALTER OWNER per impostare la proprietà\n" +" usa i comandi SET SESSION AUTHORIZATION invece\n" +" di ALTER OWNER per impostare il proprietario\n" -#: pg_restore.c:438 +#: pg_restore.c:445 #, c-format -msgid "" -" -1, --single-transaction\n" -" restore as a single transaction\n" -msgstr "" -" -1, --single-transaction\n" -" ripristina come transazione singola\n" +msgid " --role=ROLENAME do SET ROLE before restore\n" +msgstr " --role=NOMERUOLO esegui SET ROLE prima del ripristino\n" -#: pg_restore.c:448 +#: pg_restore.c:447 #, c-format msgid "" "\n" @@ -1924,21 +1861,21 @@ msgid "" "\n" msgstr "" "\n" -"Ise non è stato fornito un nome in input, viene utilizzato lo standard input.\n" +"Se non è stato fornito un nome in input, viene utilizzato lo standard input.\n" "\n" -#: pg_dumpall.c:167 +#: pg_dumpall.c:171 #, c-format msgid "" "The program \"pg_dump\" is needed by %s but was not found in the\n" "same directory as \"%s\".\n" "Check your installation.\n" msgstr "" -"Il programma \"pg_dump\" ha avuto bisogno di %s ma non l'ha trovato nella\n" -"stessa directory come \"%s\".\n" -"Controllare la vostra installazione.\n" +"Il programma \"pg_dump\" è richiesto da %s ma non è stato trovato nella\n" +"stessa directory di \"%s\".\n" +"Verifica che l'installazione sia corretta.\n" -#: pg_dumpall.c:174 +#: pg_dumpall.c:178 #, c-format msgid "" "The program \"pg_dump\" was found by \"%s\"\n" @@ -1946,45 +1883,44 @@ msgid "" "Check your installation.\n" msgstr "" "Il programma \"pg_dump\" è stato trovato da \"%s\"\n" -"ma non è la stessa versione della %s.\n" +"ma non è la stessa versione di %s.\n" "Controllate la vostra installazione.\n" -#: pg_dumpall.c:346 +#: pg_dumpall.c:314 #, c-format msgid "%s: options -g/--globals-only and -r/--roles-only cannot be used together\n" msgstr "%s: le opzioni -g/--globals-only e -r/--roles-only non possono essere usate insieme\n" -#: pg_dumpall.c:355 +#: pg_dumpall.c:323 #, c-format msgid "%s: options -g/--globals-only and -t/--tablespaces-only cannot be used together\n" msgstr "%s: le opzioni -g/--globals-only e -t/--tablespaces-only non possono essere usate insieme\n" -#: pg_dumpall.c:364 +#: pg_dumpall.c:332 #, c-format msgid "%s: options -r/--roles-only and -t/--tablespaces-only cannot be used together\n" msgstr "%s: la opzioni -r/--roles-only e -t/--tablespaces-only non possono essere usate insieme\n" -#: pg_dumpall.c:384 -#: pg_dumpall.c:1654 +#: pg_dumpall.c:374 pg_dumpall.c:1678 #, c-format msgid "%s: could not connect to database \"%s\"\n" -msgstr "%s: non è possibile connettersi al database \"%s\"\n" +msgstr "%s: connessione al database \"%s\" fallita\n" -#: pg_dumpall.c:399 +#: pg_dumpall.c:389 #, c-format msgid "" "%s: could not connect to databases \"postgres\" or \"template1\"\n" "Please specify an alternative database.\n" msgstr "" -"%s: non è possibile connettersi ai database \"postgres\" o \"template1\"\n" +"%s: non stato è possibile connettersi ai database \"postgres\" o \"template1\"\n" "Specificare un database alternativo.\n" -#: pg_dumpall.c:416 +#: pg_dumpall.c:406 #, c-format msgid "%s: could not open the output file \"%s\": %s\n" -msgstr "%s: non è possibile aprire il file di output \"%s\": %s\n" +msgstr "%s: apertura del file di output \"%s\" fallita: %s\n" -#: pg_dumpall.c:534 +#: pg_dumpall.c:528 #, c-format msgid "" "%s extracts a PostgreSQL database cluster into an SQL script file.\n" @@ -1993,47 +1929,52 @@ msgstr "" "%s estrae un cluster di database PostgreSQL in un file script SQL.\n" "\n" -#: pg_dumpall.c:536 +#: pg_dumpall.c:530 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [OPZIONE]...\n" -#: pg_dumpall.c:545 +#: pg_dumpall.c:533 +#, c-format +msgid " -f, --file=FILENAME output file name\n" +msgstr " -f, --file=NOMEFILE nome file di output\n" + +#: pg_dumpall.c:539 #, c-format msgid " -c, --clean clean (drop) databases before recreating\n" -msgstr " -c, --clean pulisce (drop) i database prima di ricrearli\n" +msgstr " -c, --clean pulisci (drop) i database prima di ricrearli\n" -#: pg_dumpall.c:546 +#: pg_dumpall.c:540 #, c-format msgid " -g, --globals-only dump only global objects, no databases\n" -msgstr " -g, --globals-only scarica solo gli oggetti global e non i database\n" +msgstr " -g, --globals-only scarica solo gli oggetti globali e non i database\n" -#: pg_dumpall.c:548 +#: pg_dumpall.c:542 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" -msgstr " -O, --no-owner salta il ripristino degli oggetti con proprietarioskip restoration of object ownership\n" +msgstr " -O, --no-owner salta il ripristino del proprietario degli oggetti\n" -#: pg_dumpall.c:549 +#: pg_dumpall.c:543 #, c-format msgid " -r, --roles-only dump only roles, no databases or tablespaces\n" -msgstr " -r, --roles-only scarica solo i ruoli e non i database o le tablespaces\n" +msgstr " -r, --roles-only scarica solo i ruoli e non i database o i tablespace\n" -#: pg_dumpall.c:551 +#: pg_dumpall.c:545 #, c-format msgid " -S, --superuser=NAME superuser user name to use in the dump\n" -msgstr " -S, --superuser=NOME nome dell'utente superuser da usare nel dump\n" +msgstr " -S, --superuser=NOME nome del superutente da usare nel dump\n" -#: pg_dumpall.c:552 +#: pg_dumpall.c:546 #, c-format msgid " -t, --tablespaces-only dump only tablespaces, no databases or roles\n" -msgstr " -t, --tablespaces-only scarica solo i tablespaces e non i datatbase o i ruoli\n" +msgstr " -t, --tablespaces-only scarica solo i tablespace e non i database o i ruoli\n" -#: pg_dumpall.c:567 +#: pg_dumpall.c:563 #, c-format msgid " -l, --database=DBNAME alternative default database\n" -msgstr " -l, --database=NOMEDB preimpostazione database alternativo\n" +msgstr " -l, --database=NOMEDB database predefinito alternativo\n" -#: pg_dumpall.c:573 +#: pg_dumpall.c:570 #, c-format msgid "" "\n" @@ -2046,145 +1987,127 @@ msgstr "" "output.\n" "\n" -#: pg_dumpall.c:1017 +#: pg_dumpall.c:1041 #, c-format msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n" -msgstr "%s: non è possibile analizzare la lista ACL (%s) per il tablespace \"%s\"\n" +msgstr "%s: non è stato possibile analizzare la lista ACL (%s) per il tablespace \"%s\"\n" -#: pg_dumpall.c:1317 +#: pg_dumpall.c:1341 #, c-format msgid "%s: could not parse ACL list (%s) for database \"%s\"\n" -msgstr "%s: non è possibile enalizzare la lista ACL (%s) per il database \"%s\"\n" +msgstr "%s: non è stato possibile analizzare la lista ACL (%s) per il database \"%s\"\n" -#: pg_dumpall.c:1524 +#: pg_dumpall.c:1548 #, c-format msgid "%s: dumping database \"%s\"...\n" -msgstr "%s: scarico del database \"%s\"...\n" +msgstr "%s: scaricamento del database \"%s\"...\n" -#: pg_dumpall.c:1534 +#: pg_dumpall.c:1558 #, c-format msgid "%s: pg_dump failed on database \"%s\", exiting\n" -msgstr "%s: pg_dump fallito per il database \"%s\", uscita\n" +msgstr "%s: pg_dump fallito per il database \"%s\", in uscita\n" -#: pg_dumpall.c:1543 +#: pg_dumpall.c:1567 #, c-format msgid "%s: could not re-open the output file \"%s\": %s\n" -msgstr "%s: non è possibile riaprire il file di output \"%s\": %s\n" +msgstr "%s: riapertura del file di output \"%s\" fallita: %s\n" -#: pg_dumpall.c:1582 +#: pg_dumpall.c:1606 #, c-format msgid "%s: running \"%s\"\n" -msgstr "%s: in eleborazione \"%s\"\n" +msgstr "%s: in elaborazione \"%s\"\n" -#: pg_dumpall.c:1627 +#: pg_dumpall.c:1651 #, c-format msgid "%s: out of memory\n" msgstr "%s: memoria esaurita\n" -#: pg_dumpall.c:1676 +#: pg_dumpall.c:1700 #, c-format msgid "%s: could not connect to database \"%s\": %s\n" -msgstr "%s: non è possibile connettersi al database \"%s\": %s\n" +msgstr "%s: connessione al database \"%s\" fallita: %s\n" -#: pg_dumpall.c:1690 +#: pg_dumpall.c:1714 #, c-format msgid "%s: could not get server version\n" -msgstr "%s: non è possibile ottenere la versione del server\n" +msgstr "%s: non è stato possibile ottenere la versione del server\n" -#: pg_dumpall.c:1696 +#: pg_dumpall.c:1720 #, c-format msgid "%s: could not parse server version \"%s\"\n" -msgstr "%s: non è possibile analizzare la versione del server \"%s\"\n" +msgstr "%s: non è stato possibile analizzare la versione del server \"%s\"\n" -#: pg_dumpall.c:1704 +#: pg_dumpall.c:1728 #, c-format msgid "%s: could not parse version \"%s\"\n" -msgstr "%s: non è possibile analizzare la versione \"%s\"\n" +msgstr "%s: non è stato possibile analizzare la versione \"%s\"\n" -#: pg_dumpall.c:1743 -#: pg_dumpall.c:1769 +#: pg_dumpall.c:1767 pg_dumpall.c:1793 #, c-format msgid "%s: executing %s\n" msgstr "%s: esecuzione di %s\n" -#: pg_dumpall.c:1749 -#: pg_dumpall.c:1775 +#: pg_dumpall.c:1773 pg_dumpall.c:1799 #, c-format msgid "%s: query failed: %s" msgstr "%s: query fallita: %s" -#: pg_dumpall.c:1751 -#: pg_dumpall.c:1777 +#: pg_dumpall.c:1775 pg_dumpall.c:1801 #, c-format msgid "%s: query was: %s\n" msgstr "%s: la query era: %s\n" -#: ../../port/exec.c:125 -#: ../../port/exec.c:239 -#: ../../port/exec.c:282 +#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 #, c-format msgid "could not identify current directory: %s" -msgstr "non è possibile identificare la directory corrente: %s" +msgstr "identificazione della directory corrente fallita: %s" #: ../../port/exec.c:144 #, c-format msgid "invalid binary \"%s\"" -msgstr "binario invalido \"%s\"" +msgstr "binario non valido \"%s\"" #: ../../port/exec.c:193 #, c-format msgid "could not read binary \"%s\"" -msgstr "non è possibile leggere il binario \"%s\"" +msgstr "lettura del binario \"%s\" fallita" #: ../../port/exec.c:200 #, c-format msgid "could not find a \"%s\" to execute" -msgstr "non è possibile trovare un \"%s\" da eseguire" +msgstr "programma \"%s\" da eseguire non trovato" -#: ../../port/exec.c:255 -#: ../../port/exec.c:291 +#: ../../port/exec.c:255 ../../port/exec.c:291 #, c-format msgid "could not change directory to \"%s\"" -msgstr "non è possibile cambiare la directory in \"%s\"" +msgstr "spostamento nella directory \"%s\" fallito" #: ../../port/exec.c:270 #, c-format msgid "could not read symbolic link \"%s\"" -msgstr "non è possibile leggere il link simbolico \"%s\"" +msgstr "lettura del link simbolico \"%s\" fallita" -#: ../../port/exec.c:516 +#: ../../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" -msgstr "il processo figlio è uscito con codice d'uscita %d" +msgstr "processo figlio uscito con codice di uscita %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" -msgstr "il processo figlio terminato dall'eccezione 0x%X" +msgstr "processo figlio terminato da eccezione 0x%X" -#: ../../port/exec.c:529 +#: ../../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" -msgstr "il processo figlio terminato dal segnale %s" +msgstr "processo figlio terminato da segnale %s" -#: ../../port/exec.c:532 +#: ../../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" -msgstr "il processo figlio terminato dal segnale %d" +msgstr "processo figlio terminato da segnale %d" -#: ../../port/exec.c:536 +#: ../../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" -msgstr "il processo figlio uscito con stato non riconosciuto %d" - -#~ msgid "dumpBlobs(): could not open large object: %s" -#~ msgstr "dumpBlobs(): impossibile aprire il large object: %s" - -#~ msgid "saving large object comments\n" -#~ msgstr "salvataggio dei commenti del large object\n" - -#~ msgid "no label definitions found for enum ID %u\n" -#~ msgstr "non trovate etichette di definizione per l' enum ID %u\n" - -#~ msgid "compression support is disabled in this format\n" -#~ msgstr "il supporto di compressione è disabilitato in questo formato\n" +msgstr "processo figlio uscito con stato non riconosciuto %d" diff --git a/src/bin/pg_dump/po/ja.po b/src/bin/pg_dump/po/ja.po index 230f09d38d..96143babc1 100644 --- a/src/bin/pg_dump/po/ja.po +++ b/src/bin/pg_dump/po/ja.po @@ -3,85 +3,76 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0 beta 3\n" +"Project-Id-Version: PostgreSQL 9.1 beta 2\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-07-20 12:56+0900\n" -"PO-Revision-Date: 2010-07-21 18:43+0900\n" +"POT-Creation-Date: 2011-06-14 22:01+0900\n" +"PO-Revision-Date: 2011-08-30 21:33+0900\n" "Last-Translator: HOTTA Michihide \n" "Language-Team: jpug-doc \n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: pg_dump.c:453 pg_restore.c:268 pg_dumpall.c:291 -#, c-format -msgid "%s: invalid -X option -- %s\n" -msgstr "%s: 無効な -X オプション -- %s\n" - -#: pg_dump.c:455 pg_dump.c:477 pg_dump.c:486 pg_restore.c:270 pg_restore.c:293 -#: pg_restore.c:310 pg_dumpall.c:293 pg_dumpall.c:313 pg_dumpall.c:338 -#: pg_dumpall.c:348 pg_dumpall.c:357 pg_dumpall.c:366 pg_dumpall.c:402 +#: pg_dump.c:489 pg_dump.c:503 pg_restore.c:274 pg_restore.c:290 +#: pg_restore.c:302 pg_dumpall.c:296 pg_dumpall.c:306 pg_dumpall.c:316 +#: pg_dumpall.c:325 pg_dumpall.c:334 pg_dumpall.c:392 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "詳細は \"%s --help\" を実行してください\n" -#: pg_dump.c:484 pg_dumpall.c:336 +#: pg_dump.c:501 pg_restore.c:288 pg_dumpall.c:304 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: コマンドライン引数が多すぎます(先頭は\"%s\")\n" -#: pg_dump.c:501 +#: pg_dump.c:514 msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "-s/--schema-only と -a/--data-only は同時には使用できません\n" -#: pg_dump.c:507 +#: pg_dump.c:520 msgid "options -c/--clean and -a/--data-only cannot be used together\n" msgstr "-c/--clean と -a/--data-only は同時には使用できません\n" -#: pg_dump.c:513 +#: pg_dump.c:526 msgid "" "options --inserts/--column-inserts and -o/--oids cannot be used together\n" -msgstr "\"--inserts/--column-insertsと-o/--oidsは同時には使用できません\n" +msgstr "--inserts/--column-insertsと-o/--oidsは同時には使用できません\n" -#: pg_dump.c:514 +#: pg_dump.c:527 msgid "(The INSERT command cannot set OIDs.)\n" msgstr "(INSERTコマンドではOIDを設定できません。)\n" -#: pg_dump.c:544 -#, c-format -msgid "invalid output format \"%s\" specified\n" -msgstr "不明な出力書式\"%s\"が指定されました\n" - -#: pg_dump.c:550 +#: pg_dump.c:558 #, c-format msgid "could not open output file \"%s\" for writing\n" msgstr "出力ファイル\"%s\"を書き込み用にオープンできませんでした\n" -#: pg_dump.c:560 pg_backup_db.c:45 +#: pg_dump.c:568 pg_backup_db.c:45 #, c-format msgid "could not parse version string \"%s\"\n" msgstr "バージョン文字列\"%s\"を解析できませんでした\n" -#: pg_dump.c:583 +#: pg_dump.c:591 #, c-format msgid "invalid client encoding \"%s\" specified\n" msgstr "クライアントエンコーディング\"%s\"は無効です\n" -#: pg_dump.c:660 +#: pg_dump.c:690 #, c-format msgid "last built-in OID is %u\n" msgstr "最終の組み込みOIDは%uです\n" -#: pg_dump.c:670 +#: pg_dump.c:700 msgid "No matching schemas were found\n" msgstr "マッチするスキーマが見つかりません\n" -#: pg_dump.c:685 +#: pg_dump.c:715 msgid "No matching tables were found\n" msgstr "マッチするテーブルが見つかりません\n" -#: pg_dump.c:797 +#: pg_dump.c:827 #, c-format msgid "" "%s dumps a database as a text file or to other formats.\n" @@ -90,17 +81,17 @@ msgstr "" "%sはデータベースをテキストファイルまたはその他の書式でダンプします。\n" "\n" -#: pg_dump.c:798 pg_restore.c:399 pg_dumpall.c:535 +#: pg_dump.c:828 pg_restore.c:397 pg_dumpall.c:529 #, c-format msgid "Usage:\n" msgstr "使用方法:\n" -#: pg_dump.c:799 +#: pg_dump.c:829 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [OPTION]... [DBNAME]\n" -#: pg_dump.c:801 pg_restore.c:402 pg_dumpall.c:538 +#: pg_dump.c:831 pg_restore.c:400 pg_dumpall.c:532 #, c-format msgid "" "\n" @@ -109,47 +100,47 @@ msgstr "" "\n" "一般的なオプション;\n" -#: pg_dump.c:802 pg_dumpall.c:539 +#: pg_dump.c:832 #, c-format -msgid " -f, --file=FILENAME output file name\n" -msgstr " -f, --file=ファイル名 出力ファイル名\n" +msgid " -f, --file=FILENAME output file or directory name\n" +msgstr " -f, --file=ファイル名 出力ファイルまたはディレクトリの名前\n" -#: pg_dump.c:803 +#: pg_dump.c:833 #, c-format msgid "" -" -F, --format=c|t|p output file format (custom, tar, plain text)\n" -msgstr "" -" -F, --format=c|t|p 出力ファイルの書式(custom, tar, plain text)\n" +" -F, --format=c|d|t|p output file format (custom, directory, tar, " +"plain text)\n" +msgstr " -F, --format=c|d|t|p 出力ファイルの書式(custom, directory, tar, plain text)\n" -#: pg_dump.c:804 +#: pg_dump.c:834 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose 冗長モード\n" -#: pg_dump.c:805 +#: pg_dump.c:835 #, c-format msgid "" " -Z, --compress=0-9 compression level for compressed formats\n" msgstr " -Z, --compress=0-9 圧縮形式における圧縮レベル\n" -#: pg_dump.c:806 pg_dumpall.c:540 +#: pg_dump.c:836 pg_dumpall.c:534 #, c-format msgid "" " --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" msgstr "" " --lock-wait-timeout=TIMEOUT テーブルロックを TIMEOUT 分待ってから失敗\n" -#: pg_dump.c:807 pg_dumpall.c:541 +#: pg_dump.c:837 pg_dumpall.c:535 #, c-format msgid " --help show this help, then exit\n" msgstr " --help ヘルプを表示して終了\n" -#: pg_dump.c:808 pg_dumpall.c:542 +#: pg_dump.c:838 pg_dumpall.c:536 #, c-format msgid " --version output version information, then exit\n" msgstr " --version バージョン情報を表示して終了\n" -#: pg_dump.c:810 pg_dumpall.c:543 +#: pg_dump.c:840 pg_dumpall.c:537 #, c-format msgid "" "\n" @@ -158,54 +149,54 @@ msgstr "" "\n" "出力内容を制御するためのオプション:\n" -#: pg_dump.c:811 pg_dumpall.c:544 +#: pg_dump.c:841 pg_dumpall.c:538 #, c-format msgid " -a, --data-only dump only the data, not the schema\n" msgstr "" " -a, --data-only データのみをダンプし、スキーマをダンプしません\n" -#: pg_dump.c:812 +#: pg_dump.c:842 #, c-format msgid " -b, --blobs include large objects in dump\n" msgstr " -b, --blobs ラージオブジェクトと共にダンプします\n" -#: pg_dump.c:813 +#: pg_dump.c:843 #, c-format msgid "" " -c, --clean clean (drop) database objects before " "recreating\n" msgstr " -c, --clean 再作成前にデータベースを削除\n" -#: pg_dump.c:814 +#: pg_dump.c:844 #, c-format msgid "" " -C, --create include commands to create database in dump\n" msgstr "" " -C, --create ダンプにデータベース生成用コマンドを含めます\n" -#: pg_dump.c:815 +#: pg_dump.c:845 #, c-format msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" msgstr "" " -E, --encoding=ENCODING ENCODINGで指定されたエンコーディングでダンプしま" "す\n" -#: pg_dump.c:816 +#: pg_dump.c:846 #, c-format msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" msgstr " -n, --schema=SCHEMA 指名したスキーマのみをダンプします\n" -#: pg_dump.c:817 +#: pg_dump.c:847 #, c-format msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n" msgstr " -N, --exclude-schema=SCHEMA 名前付きスキーマをダンプしません\n" -#: pg_dump.c:818 pg_dumpall.c:547 +#: pg_dump.c:848 pg_dumpall.c:541 #, c-format msgid " -o, --oids include OIDs in dump\n" msgstr " -o, --oids ダンプにOIDを含めます\n" -#: pg_dump.c:819 +#: pg_dump.c:849 #, c-format msgid "" " -O, --no-owner skip restoration of object ownership in\n" @@ -214,14 +205,14 @@ msgstr "" " -O, --no-owner プレインテキスト形式で、オブジェクト所有権の\n" " 復元を行いません\n" -#: pg_dump.c:821 pg_dumpall.c:550 +#: pg_dump.c:851 pg_dumpall.c:544 #, c-format msgid " -s, --schema-only dump only the schema, no data\n" msgstr "" " -s, --schema-only スキーマのみをダンプしますし、データはダンプしませ" "ん\n" -#: pg_dump.c:822 +#: pg_dump.c:852 #, c-format msgid "" " -S, --superuser=NAME superuser user name to use in plain-text " @@ -230,35 +221,27 @@ msgstr "" " -S, --superuser=NAME プレインテキスト形式で使用するスーパーユーザの\n" " 名前を指定\n" -#: pg_dump.c:823 +#: pg_dump.c:853 #, c-format msgid " -t, --table=TABLE dump the named table(s) only\n" msgstr " -t, --table=TABLE 指定したテーブルのみをダンプします\n" -#: pg_dump.c:824 +#: pg_dump.c:854 #, c-format msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n" msgstr " -T, --exclude-table=TABLE 指定したテーブルをダンプしません\n" -#: pg_dump.c:825 pg_dumpall.c:553 +#: pg_dump.c:855 pg_dumpall.c:547 #, c-format msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" msgstr " -x, --no-privileges 権限(grant/revoke)をダンプしません\n" -#: pg_dump.c:826 pg_dumpall.c:554 +#: pg_dump.c:856 pg_dumpall.c:548 #, c-format msgid " --binary-upgrade for use by upgrade utilities only\n" msgstr " --binary-upgrade 用途はアップグレードユーティリティのみ\n" -#: pg_dump.c:827 pg_dumpall.c:555 -#, c-format -msgid "" -" --inserts dump data as INSERT commands, rather than " -"COPY\n" -msgstr "" -" --inserts COPYではなくINSERTコマンドでデータをダンプします\n" - -#: pg_dump.c:828 pg_dumpall.c:556 +#: pg_dump.c:857 pg_dumpall.c:549 #, c-format msgid "" " --column-inserts dump data as INSERT commands with column " @@ -266,7 +249,7 @@ msgid "" msgstr "" "--column-inserts カラム名付きのINSERTコマンドでデータをダンプします\n" -#: pg_dump.c:829 pg_dumpall.c:557 +#: pg_dump.c:858 pg_dumpall.c:550 #, c-format msgid "" " --disable-dollar-quoting disable dollar quoting, use SQL standard " @@ -276,7 +259,7 @@ msgstr "" "い\n" " ます\n" -#: pg_dump.c:830 pg_dumpall.c:558 +#: pg_dump.c:859 pg_dumpall.c:551 #, c-format msgid "" " --disable-triggers disable triggers during data-only restore\n" @@ -284,18 +267,43 @@ msgstr "" " --disable-triggers データのみのリストアをする際、トリガを無効にしま" "す\n" -#: pg_dump.c:831 pg_dumpall.c:559 +#: pg_dump.c:860 pg_dumpall.c:552 +#, c-format +msgid "" +" --inserts dump data as INSERT commands, rather than " +"COPY\n" +msgstr "" +" --inserts COPYではなくINSERTコマンドでデータをダンプします\n" + +#: pg_dump.c:861 pg_dumpall.c:553 +#, c-format +msgid " --no-security-labels do not dump security label assignments\n" +msgstr " --no-security-labels セキュリティラベルの割り当てをダンプしません\n" + +#: pg_dump.c:862 pg_dumpall.c:554 #, c-format msgid " --no-tablespaces do not dump tablespace assignments\n" msgstr "" " --no-tablespaces テーブルスペースの割り当てをダンプしません\n" -#: pg_dump.c:832 pg_dumpall.c:560 +#: pg_dump.c:863 pg_dumpall.c:555 #, c-format -msgid " --role=ROLENAME do SET ROLE before dump\n" -msgstr " --role=ROLENAME ダンプの前に SET ROLE を行います\n" +msgid " --no-unlogged-table-data do not dump unlogged table data\n" +msgstr " --no-unlogged-table-data ログを取らないテーブルのデータをダンプしません\n" + +#: pg_dump.c:864 pg_dumpall.c:556 +#, c-format +msgid "" +" --quote-all-identifiers quote all identifiers, even if not key words\n" +msgstr " --quote-all-identifiers すべての識別子をキーワードでなかったとしても引用符でくくります\n" + +#: pg_dump.c:865 +#, c-format +msgid "" +" --serializable-deferrable wait until the dump can run without anomalies\n" +msgstr " --serializable-deferrable 合理的にダンプを実行できるようになるまで待機します\n" -#: pg_dump.c:833 pg_dumpall.c:561 +#: pg_dump.c:866 pg_dumpall.c:557 #, c-format msgid "" " --use-set-session-authorization\n" @@ -307,7 +315,7 @@ msgstr "" " 所有者をセットする際、ALTER OWNER コマンドの代り\n" " に SET SESSION AUTHORIZATION コマンドを使用する\n" -#: pg_dump.c:837 pg_restore.c:441 pg_dumpall.c:565 +#: pg_dump.c:870 pg_restore.c:439 pg_dumpall.c:561 #, c-format msgid "" "\n" @@ -316,29 +324,29 @@ msgstr "" "\n" "接続オプション:\n" -#: pg_dump.c:838 pg_restore.c:442 pg_dumpall.c:566 +#: pg_dump.c:871 pg_restore.c:440 pg_dumpall.c:562 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" " -h, --host=HOSTNAME データベースサーバのホストまたはソケットディレクト" "リです\n" -#: pg_dump.c:839 pg_restore.c:443 pg_dumpall.c:568 +#: pg_dump.c:872 pg_restore.c:441 pg_dumpall.c:564 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=PORT データベースサーバのポート番号です\n" -#: pg_dump.c:840 pg_restore.c:444 pg_dumpall.c:569 +#: pg_dump.c:873 pg_restore.c:442 pg_dumpall.c:565 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=NAME 指定したデータベースユーザで接続します\n" -#: pg_dump.c:841 pg_restore.c:445 pg_dumpall.c:570 +#: pg_dump.c:874 pg_restore.c:443 pg_dumpall.c:566 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password パスワード入力を要求しない\n" -#: pg_dump.c:842 pg_restore.c:446 pg_dumpall.c:571 +#: pg_dump.c:875 pg_restore.c:444 pg_dumpall.c:567 #, c-format msgid "" " -W, --password force password prompt (should happen " @@ -347,7 +355,12 @@ msgstr "" " -W, --password パスワードプロンプトを強制表示します\n" " (自動的に表示されるはずです)\n" -#: pg_dump.c:844 +#: pg_dump.c:876 pg_dumpall.c:568 +#, c-format +msgid " --role=ROLENAME do SET ROLE before dump\n" +msgstr " --role=ROLENAME ダンプの前に SET ROLE を行います\n" + +#: pg_dump.c:878 #, c-format msgid "" "\n" @@ -359,51 +372,56 @@ msgstr "" "データベース名が指定されなかった場合、環境変数PGDATABASEが使用されます\n" "\n" -#: pg_dump.c:846 pg_restore.c:449 pg_dumpall.c:575 +#: pg_dump.c:880 pg_restore.c:448 pg_dumpall.c:572 #, c-format msgid "Report bugs to .\n" msgstr "不具合はまで報告してください。\n" -#: pg_dump.c:854 pg_backup_archiver.c:1394 +#: pg_dump.c:888 pg_backup_archiver.c:1437 msgid "*** aborted because of error\n" msgstr "*** エラーのため中断\n" -#: pg_dump.c:875 +#: pg_dump.c:930 +#, c-format +msgid "invalid output format \"%s\" specified\n" +msgstr "不明な出力書式\"%s\"が指定されました\n" + +#: pg_dump.c:953 msgid "server version must be at least 7.3 to use schema selection switches\n" msgstr "" "スキーマ選択スイッチを使用するには、サーバのバージョンが\n" "少なくとも 7.3 以降である必要があります。\n" -#: pg_dump.c:1113 +#: pg_dump.c:1211 #, c-format msgid "dumping contents of table %s\n" msgstr "テーブル%sの内容をダンプしています\n" -#: pg_dump.c:1216 +#: pg_dump.c:1331 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" msgstr "テーブル\"%s\"の内容のダンプに失敗: PQgetCopyData()が失敗しました。\n" -#: pg_dump.c:1217 pg_dump.c:12402 +#: pg_dump.c:1332 pg_dump.c:14135 #, c-format msgid "Error message from server: %s" msgstr "サーバのエラーメッセージ: %s" -#: pg_dump.c:1218 pg_dump.c:12403 +#: pg_dump.c:1333 pg_dump.c:14136 #, c-format msgid "The command was: %s\n" msgstr "次のコマンドでした: %s\n" -#: pg_dump.c:1624 +#: pg_dump.c:1756 msgid "saving database definition\n" msgstr "データベース定義を保存しています\n" -#: pg_dump.c:1706 +#: pg_dump.c:1838 #, c-format msgid "missing pg_database entry for database \"%s\"\n" msgstr "データベース\"%s\"用のエントリがpg_databaseにありません\n" -#: pg_dump.c:1713 +#: pg_dump.c:1845 #, c-format msgid "" "query returned more than one (%d) pg_database entry for database \"%s\"\n" @@ -411,104 +429,113 @@ msgstr "" "問い合わせにより、データベース\"%2$s\"用のエントリがpg_databaseから複数(%1$d)" "返されました\n" -#: pg_dump.c:1814 +#: pg_dump.c:1949 msgid "dumpDatabase(): could not find pg_largeobject.relfrozenxid\n" msgstr "dumpDatabase(): pg_largeobject.relfrozenxid が見つかりません\n" -#: pg_dump.c:1891 +#: pg_dump.c:1988 +msgid "dumpDatabase(): could not find pg_largeobject_metadata.relfrozenxid\n" +msgstr "dumpDatabase(): pg_largeobject_metadata.relfrozenxidが見つかりません\n" + +#: pg_dump.c:2067 #, c-format msgid "saving encoding = %s\n" msgstr "encoding = %s を保存しています\n" -#: pg_dump.c:1918 +#: pg_dump.c:2094 #, c-format msgid "saving standard_conforming_strings = %s\n" msgstr "standard_conforming_strings = %s を保存しています\n" -#: pg_dump.c:1951 +#: pg_dump.c:2127 msgid "reading large objects\n" msgstr "ラージオブジェクトを読み込んでいます\n" -#: pg_dump.c:2078 +#: pg_dump.c:2259 msgid "saving large objects\n" msgstr "ラージオブジェクトを保存しています\n" -#: pg_dump.c:2120 pg_backup_archiver.c:946 +#: pg_dump.c:2301 pg_backup_archiver.c:959 #, c-format msgid "could not open large object %u: %s" msgstr "ラージオブジェクト %u をオープンできませんでした: %s" -#: pg_dump.c:2133 +#: pg_dump.c:2314 #, c-format msgid "error reading large object %u: %s" msgstr "ラージオブジェクト %u を読み取り中にエラーがありました: %s" -#: pg_dump.c:2180 pg_dump.c:2228 pg_dump.c:2290 pg_dump.c:6911 pg_dump.c:7114 -#: pg_dump.c:7930 pg_dump.c:8468 pg_dump.c:8718 pg_dump.c:8824 pg_dump.c:9209 -#: pg_dump.c:9385 pg_dump.c:9582 pg_dump.c:9809 pg_dump.c:9964 pg_dump.c:10150 -#: pg_dump.c:12208 +#: pg_dump.c:2361 pg_dump.c:2409 pg_dump.c:2464 pg_dump.c:7592 pg_dump.c:7823 +#: pg_dump.c:8789 pg_dump.c:9341 pg_dump.c:9595 pg_dump.c:9709 pg_dump.c:10165 +#: pg_dump.c:10351 pg_dump.c:10457 pg_dump.c:10657 pg_dump.c:10899 +#: pg_dump.c:11066 pg_dump.c:11287 pg_dump.c:13941 #, c-format msgid "query returned %d row instead of one: %s\n" msgid_plural "query returned %d rows instead of one: %s\n" msgstr[0] "問い合わせが1行ではなく%d行返しました: %s\n" msgstr[1] "問い合わせが1行ではなく%d行返しました: %s\n" -#: pg_dump.c:2435 +#: pg_dump.c:2545 +#, c-format +msgid "could not find parent extension for %s" +msgstr "%sの親拡張がありませんでした" + +#: pg_dump.c:2652 #, c-format msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" msgstr "警告: スキーマ\"%s\"の所有者が無効なようです\n" -#: pg_dump.c:2470 +#: pg_dump.c:2687 #, c-format msgid "schema with OID %u does not exist\n" msgstr "OID %uのスキーマが存在しません\n" -#: pg_dump.c:2727 +#: pg_dump.c:3028 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" msgstr "警告: データ型\"%s\"の所有者が無効なようです\n" -#: pg_dump.c:2831 +#: pg_dump.c:3132 #, c-format msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" msgstr "警告: 演算子\"%s\"の所有者が無効なようです\n" -#: pg_dump.c:3005 +#: pg_dump.c:3384 #, c-format msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" msgstr "警告: 演算子クラス\"%s\"の所有者が無効なようです\n" -#: pg_dump.c:3092 +#: pg_dump.c:3471 #, c-format msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" msgstr "警告: 演算子族\"%s\"の所有者が無効なようです\n" -#: pg_dump.c:3217 +#: pg_dump.c:3608 #, c-format msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" msgstr "警告: 集約関数\"%s\"の所有者が無効なようです\n" -#: pg_dump.c:3372 +#: pg_dump.c:3778 #, c-format msgid "WARNING: owner of function \"%s\" appears to be invalid\n" msgstr "警告: 関数\"%s\"の所有者が無効なようです\n" -#: pg_dump.c:3805 +#: pg_dump.c:4278 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" msgstr "警告: テーブル\"%s\"の所有者が無効なようです\n" -#: pg_dump.c:3948 +#: pg_dump.c:4421 #, c-format msgid "reading indexes for table \"%s\"\n" msgstr "テーブル\"%s\"用のインデックスを読み込んでいます\n" -#: pg_dump.c:4268 +#: pg_dump.c:4741 #, c-format msgid "reading foreign key constraints for table \"%s\"\n" msgstr "テーブル\"%s\"用の外部キー制約を読み込んでいます\n" -#: pg_dump.c:4500 +#: pg_dump.c:4973 #, c-format msgid "" "failed sanity check, parent table OID %u of pg_rewrite entry OID %u not " @@ -517,12 +544,12 @@ msgstr "" "健全性検査に失敗しました。pg_rewrite項目OID %1$u の親テーブルOID %2$u があり" "ません\n" -#: pg_dump.c:4584 +#: pg_dump.c:5057 #, c-format msgid "reading triggers for table \"%s\"\n" msgstr "テーブル\"%s\"用のトリガを読み込んでいます\n" -#: pg_dump.c:4747 +#: pg_dump.c:5220 #, c-format msgid "" "query produced null referenced table name for foreign key trigger \"%s\" on " @@ -531,32 +558,32 @@ msgstr "" "テーブル\"%2$s\"上の外部キートリガ\"%1$s\"用の非参照テーブル名の問い合わせが" "NULLを返しました(テーブルのOID: %3$u)\n" -#: pg_dump.c:5117 +#: pg_dump.c:5591 #, c-format msgid "finding the columns and types of table \"%s\"\n" msgstr "テーブル\"%s\"の列と型を検索しています\n" -#: pg_dump.c:5236 +#: pg_dump.c:5736 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "テーブル\"%s\"の列番号が無効です\n" -#: pg_dump.c:5272 +#: pg_dump.c:5773 #, c-format msgid "finding default expressions of table \"%s\"\n" msgstr "テーブル\"%s\"のデフォルト式を検索しています\n" -#: pg_dump.c:5357 +#: pg_dump.c:5858 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" msgstr "テーブル\"%2$s\"用のadnumの値%1$dが無効です\n" -#: pg_dump.c:5375 +#: pg_dump.c:5876 #, c-format msgid "finding check constraints for table \"%s\"\n" msgstr "テーブル\"%s\"の検査制約を検索しています\n" -#: pg_dump.c:5455 +#: pg_dump.c:5956 #, c-format msgid "expected %d check constraint on table \"%s\" but found %d\n" msgid_plural "expected %d check constraints on table \"%s\" but found %d\n" @@ -565,50 +592,45 @@ msgstr[0] "" msgstr[1] "" "テーブル\"%2$s\"の検査制約は%1$dと期待していましましたが、%3$dありました\n" -#: pg_dump.c:5459 +#: pg_dump.c:5960 msgid "(The system catalogs might be corrupted.)\n" msgstr "(システムカタログが破損している可能性があります)\n" -#: pg_dump.c:7241 pg_dump.c:7348 -#, c-format -msgid "query returned no rows: %s\n" -msgstr "問い合わせの結果行がありませんでした: %s\n" - -#: pg_dump.c:7698 +#: pg_dump.c:8555 msgid "WARNING: bogus value in proargmodes array\n" -msgstr "警告: proargnames配列内におかしな値があります\n" +msgstr "警告: proargmodes配列内におかしな値があります\n" -#: pg_dump.c:8010 +#: pg_dump.c:8869 msgid "WARNING: could not parse proallargtypes array\n" msgstr "警告: proallargtypes配列の解析ができませんでした\n" -#: pg_dump.c:8026 +#: pg_dump.c:8885 msgid "WARNING: could not parse proargmodes array\n" msgstr "警告: proargmodes配列の解析ができませんでした\n" -#: pg_dump.c:8040 +#: pg_dump.c:8899 msgid "WARNING: could not parse proargnames array\n" msgstr "警告: proargnames配列の解析ができませんでした\n" -#: pg_dump.c:8051 +#: pg_dump.c:8910 msgid "WARNING: could not parse proconfig array\n" msgstr "警告: proconfig配列の解析ができませんでした\n" -#: pg_dump.c:8107 +#: pg_dump.c:8966 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "関数\"%s\"のprovolatile値が不明です\n" -#: pg_dump.c:8310 +#: pg_dump.c:9182 msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "警告: pg_cast.castmethod フィールドに無効な値があります\n" -#: pg_dump.c:8687 +#: pg_dump.c:9564 #, c-format msgid "WARNING: could not find operator with OID %s\n" msgstr "警告: OID %sの演算子がありませんでした\n" -#: pg_dump.c:9608 +#: pg_dump.c:10683 #, c-format msgid "" "WARNING: aggregate function %s could not be dumped correctly for this " @@ -617,70 +639,70 @@ msgstr "" "警告: このデータベースバージョンの集約関数%sを正確にダンプできませんでした。" "(無視します)\n" -#: pg_dump.c:10326 +#: pg_dump.c:11483 #, c-format msgid "unknown object type (%d) in default privileges\n" msgstr "デフォルト権限の中に未知のオブジェクト型 (%d) があります\n" -#: pg_dump.c:10343 +#: pg_dump.c:11500 #, c-format msgid "could not parse default ACL list (%s)\n" msgstr "デフォルトの ACL リスト(%s)を解析できませんでした\n" -#: pg_dump.c:10400 +#: pg_dump.c:11557 #, c-format msgid "could not parse ACL list (%s) for object \"%s\" (%s)\n" msgstr "オブジェクト\"%2$s\"(%3$s)用のACLリスト(%1$s)を解析できませんでした\n" -#: pg_dump.c:10543 +#: pg_dump.c:11997 #, c-format msgid "query to obtain definition of view \"%s\" returned no data\n" msgstr "ビュー\"%s\"の定義を取り出すための問い合わせが空を返しました\n" -#: pg_dump.c:10546 +#: pg_dump.c:12000 #, c-format msgid "" "query to obtain definition of view \"%s\" returned more than one definition\n" msgstr "" "ビュー\\\"%s\\\"の定義を取り出すための問い合わせが複数の定義を返しました\n" -#: pg_dump.c:10555 +#: pg_dump.c:12009 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)\n" msgstr "ビュー\\\"%s\\\"の定義が空(長さが0)のようです\n" -#: pg_dump.c:11031 +#: pg_dump.c:12576 #, c-format msgid "invalid column number %d for table \"%s\"\n" msgstr "テーブル\"%2$s\"の列番号%1$dは無効です\n" -#: pg_dump.c:11139 +#: pg_dump.c:12687 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "制約\"%s\"用のインデックスが見つかりません\n" -#: pg_dump.c:11327 +#: pg_dump.c:12875 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "制約種類が不明です: %c\n" -#: pg_dump.c:11390 +#: pg_dump.c:12938 msgid "missing pg_database entry for this database\n" msgstr "このデータベース用のpg_databaseエントリが見つかりません\n" -#: pg_dump.c:11395 +#: pg_dump.c:12943 msgid "found more than one pg_database entry for this database\n" msgstr "このデータベース用のpg_databaseエントリが複数ありました\n" -#: pg_dump.c:11427 +#: pg_dump.c:12975 msgid "could not find entry for pg_indexes in pg_class\n" msgstr "pg_class内にpg_indexes用のエントリがありませんでした\n" -#: pg_dump.c:11432 +#: pg_dump.c:12980 msgid "found more than one entry for pg_indexes in pg_class\n" msgstr "pg_class内にpg_indexes用のエントリが複数ありました\n" -#: pg_dump.c:11503 +#: pg_dump.c:13052 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" msgid_plural "" @@ -690,18 +712,23 @@ msgstr[0] "" msgstr[1] "" "シーケンス\"%s\"のデータを得るための問い合わせが%d行返しました(想定行数は1)\n" -#: pg_dump.c:11514 +#: pg_dump.c:13063 #, c-format msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" msgstr "" "シーケンス \"%s\"のデータを得るための問い合わせが名前 \"%s\" を返しました\n" -#: pg_dump.c:11808 +#: pg_dump.c:13291 +#, c-format +msgid "unexpected tgtype value: %d\n" +msgstr "想定外のtgtype値: %d\n" + +#: pg_dump.c:13373 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" msgstr "テーブル\"%3$s\"のトリガ\"%2$s\"用の引数文字列(%1$s)が無効です\n" -#: pg_dump.c:11924 +#: pg_dump.c:13491 #, c-format msgid "" "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows " @@ -711,170 +738,181 @@ msgstr "" "が\n" "間違っています\n" -#: pg_dump.c:12019 +#: pg_dump.c:13748 msgid "reading dependency data\n" msgstr "データの依存性を読み込んでいます\n" -#: pg_dump.c:12397 +#: pg_dump.c:14130 msgid "SQL command failed\n" msgstr "SQLコマンドが失敗しました\n" -#: common.c:115 +#: common.c:105 msgid "reading schemas\n" msgstr "スキーマを読み込んでいます\n" -#: common.c:119 +#: common.c:109 +msgid "reading extensions\n" +msgstr "拡張を読み込んでいます\n" + +#: common.c:113 msgid "reading user-defined functions\n" msgstr "ユーザ定義関数を読み込んでいます\n" -#: common.c:125 +#: common.c:119 msgid "reading user-defined types\n" msgstr "ユーザ定義型を読み込んでいます\n" -#: common.c:131 +#: common.c:125 msgid "reading procedural languages\n" msgstr "手続き言語を読み込んでいます\n" -#: common.c:135 +#: common.c:129 msgid "reading user-defined aggregate functions\n" msgstr "ユーザ定義の集約関数を読み込んでいます\n" -#: common.c:139 +#: common.c:133 msgid "reading user-defined operators\n" msgstr "ユーザ定義演算子を読み込んでいます\n" -#: common.c:144 +#: common.c:138 msgid "reading user-defined operator classes\n" msgstr "ユーザ定義の演算子クラスを読み込んでいます\n" -#: common.c:148 +#: common.c:142 +msgid "reading user-defined operator families\n" +msgstr "ユーザ定義の演算子群を読み込んでいます\n" + +#: common.c:146 msgid "reading user-defined text search parsers\n" msgstr "ユーザ定義テキスト検索パーサを読み込んでいます\n" -#: common.c:152 +#: common.c:150 msgid "reading user-defined text search templates\n" msgstr "ユーザ定義のテキスト検索テンプレートを読み込んでいます\n" -#: common.c:156 +#: common.c:154 msgid "reading user-defined text search dictionaries\n" msgstr "ユーザ定義のテキスト検索辞書を読み込んでいます\n" -#: common.c:160 +#: common.c:158 msgid "reading user-defined text search configurations\n" msgstr "ユーザ定義のテキスト検索設定を読み込んでいます\n" -#: common.c:164 +#: common.c:162 msgid "reading user-defined foreign-data wrappers\n" msgstr "ユーザ定義の外国語データラッパーを読み込んでいます\n" -#: common.c:168 +#: common.c:166 msgid "reading user-defined foreign servers\n" msgstr "ユーザ定義の外国語サーバーを読み込んでいます\n" -#: common.c:172 +#: common.c:170 msgid "reading default privileges\n" msgstr "デフォルトの権限設定を読み込んでいます\n" -#: common.c:176 -msgid "reading user-defined operator families\n" -msgstr "ユーザ定義の演算子群を読み込んでいます\n" +#: common.c:174 +msgid "reading user-defined collations\n" +msgstr "ユーザ定義の照合順序を読み込んでいます\n" -#: common.c:180 +#: common.c:179 msgid "reading user-defined conversions\n" msgstr "ユーザ定義の変換ルーチンを読み込んでいます\n" -#: common.c:184 +#: common.c:183 +msgid "reading type casts\n" +msgstr "型キャストを読み込んでいます\n" + +#: common.c:187 msgid "reading user-defined tables\n" msgstr "ユーザ定義のテーブルを読み込んでいます\n" -#: common.c:189 +#: common.c:192 msgid "reading table inheritance information\n" msgstr "テーブルの継承情報を読み込んでいます\n" -#: common.c:193 +#: common.c:196 msgid "reading rewrite rules\n" msgstr "書き換えルールを読み込んでいます\n" -#: common.c:197 -msgid "reading type casts\n" -msgstr "型キャストを読み込んでいます\n" +#: common.c:205 +msgid "finding extension members\n" +msgstr "拡張のメンバを探しています\n" -#: common.c:202 +#: common.c:210 msgid "finding inheritance relationships\n" msgstr "継承関係を検索しています\n" -#: common.c:206 +#: common.c:214 msgid "reading column info for interesting tables\n" msgstr "継承テーブル用の列情報を読み込んでいます\n" -#: common.c:210 +#: common.c:218 msgid "flagging inherited columns in subtables\n" msgstr "子テーブルの継承列にフラグを設定しています\n" -#: common.c:214 +#: common.c:222 msgid "reading indexes\n" msgstr "インデックスを読み込んでいます\n" -#: common.c:218 +#: common.c:226 msgid "reading constraints\n" msgstr "制約を読み込んでいます\n" -#: common.c:222 +#: common.c:230 msgid "reading triggers\n" msgstr "トリガを読み込んでいます\n" -#: common.c:802 +#: common.c:822 #, c-format msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n" msgstr "" "健全性検査に失敗しました。テーブル\"%2$s\"(OID %3$u)の親のOID %1$uがありませ" "んでした\n" -#: common.c:844 +#: common.c:864 #, c-format msgid "could not parse numeric array \"%s\": too many numbers\n" msgstr "数値配列 \"%s\" の解析に失敗しました:桁数が大きすぎます\n" -#: common.c:859 +#: common.c:879 #, c-format msgid "could not parse numeric array \"%s\": invalid character in number\n" msgstr "数値配列 \"%s\" の解析に失敗しました:数に無効な文字があります\n" -#: common.c:972 +#: common.c:992 msgid "cannot duplicate null pointer\n" msgstr "null ポインタを複製できません\n" -#: common.c:975 common.c:986 common.c:997 common.c:1008 -#: pg_backup_archiver.c:727 pg_backup_archiver.c:1096 -#: pg_backup_archiver.c:1227 pg_backup_archiver.c:1694 -#: pg_backup_archiver.c:1851 pg_backup_archiver.c:1897 -#: pg_backup_archiver.c:4029 pg_backup_custom.c:144 pg_backup_custom.c:149 -#: pg_backup_custom.c:155 pg_backup_custom.c:170 pg_backup_custom.c:570 -#: pg_backup_custom.c:1113 pg_backup_custom.c:1122 pg_backup_db.c:154 +#: common.c:995 common.c:1006 common.c:1017 common.c:1028 +#: pg_backup_archiver.c:739 pg_backup_archiver.c:1135 +#: pg_backup_archiver.c:1270 pg_backup_archiver.c:1740 +#: pg_backup_archiver.c:1934 pg_backup_archiver.c:1980 +#: pg_backup_archiver.c:4199 pg_backup_custom.c:132 pg_backup_custom.c:139 +#: pg_backup_custom.c:775 pg_backup_custom.c:902 pg_backup_db.c:154 #: pg_backup_db.c:164 pg_backup_db.c:212 pg_backup_db.c:256 pg_backup_db.c:271 #: pg_backup_db.c:305 pg_backup_files.c:114 pg_backup_null.c:72 -#: pg_backup_tar.c:167 pg_backup_tar.c:1011 +#: pg_backup_tar.c:171 pg_backup_tar.c:1015 msgid "out of memory\n" msgstr "メモリ不足です\n" -#: pg_backup_archiver.c:80 +#: pg_backup_archiver.c:88 msgid "archiver" msgstr "アーカイバ" -#: pg_backup_archiver.c:195 pg_backup_archiver.c:1191 +#: pg_backup_archiver.c:206 pg_backup_archiver.c:1234 #, c-format msgid "could not close output file: %s\n" msgstr "出力ファイルをクローズできませんでした: %s\n" -#: pg_backup_archiver.c:220 +#: pg_backup_archiver.c:231 msgid "-C and -c are incompatible options\n" msgstr "オプション-Cと-cは互換性がありません\n" -#: pg_backup_archiver.c:227 +#: pg_backup_archiver.c:238 msgid "-C and -1 are incompatible options\n" msgstr "-C と -1 は互換性がありません\n" -#: pg_backup_archiver.c:239 +#: pg_backup_archiver.c:250 msgid "" "cannot restore from compressed archive (compression not supported in this " "installation)\n" @@ -882,70 +920,70 @@ msgstr "" "圧縮されたアーカイブからリストアできません(導入されたバイナリには圧縮機能のサ" "ポートが組み込まれていません)\n" -#: pg_backup_archiver.c:249 +#: pg_backup_archiver.c:260 msgid "connecting to database for restore\n" msgstr "リストアのためにデータベースに接続しています\n" -#: pg_backup_archiver.c:251 +#: pg_backup_archiver.c:262 msgid "direct database connections are not supported in pre-1.3 archives\n" msgstr "" "1.3以前のアーカイブではデータベースへの直接接続はサポートされていません\n" -#: pg_backup_archiver.c:293 +#: pg_backup_archiver.c:304 msgid "implied data-only restore\n" msgstr "データのみのリストアを目的としています\n" -#: pg_backup_archiver.c:344 +#: pg_backup_archiver.c:356 #, c-format msgid "dropping %s %s\n" msgstr "%s %sを削除しています\n" -#: pg_backup_archiver.c:396 +#: pg_backup_archiver.c:408 #, c-format msgid "setting owner and privileges for %s %s\n" msgstr "%s %s用の所有者と権限を設定しています\n" -#: pg_backup_archiver.c:454 pg_backup_archiver.c:456 +#: pg_backup_archiver.c:466 pg_backup_archiver.c:468 #, c-format msgid "warning from original dump file: %s\n" msgstr "オリジナルのダンプファイルの警告: %s\n" -#: pg_backup_archiver.c:463 +#: pg_backup_archiver.c:475 #, c-format msgid "creating %s %s\n" msgstr "%s %sを作成しています\n" -#: pg_backup_archiver.c:507 +#: pg_backup_archiver.c:519 #, c-format msgid "connecting to new database \"%s\"\n" msgstr "新しいデータベース\"%s\"に接続しています\n" -#: pg_backup_archiver.c:535 +#: pg_backup_archiver.c:547 #, c-format msgid "restoring %s\n" msgstr "%sを復元しています\n" -#: pg_backup_archiver.c:549 +#: pg_backup_archiver.c:561 #, c-format msgid "restoring data for table \"%s\"\n" msgstr "テーブル\"%s\"のデータをリストアしています\n" -#: pg_backup_archiver.c:609 +#: pg_backup_archiver.c:621 #, c-format msgid "executing %s %s\n" msgstr "%s %sを実行しています\n" -#: pg_backup_archiver.c:642 +#: pg_backup_archiver.c:654 #, c-format msgid "disabling triggers for %s\n" msgstr "%sのトリガを無効にしています\n" -#: pg_backup_archiver.c:668 +#: pg_backup_archiver.c:680 #, c-format msgid "enabling triggers for %s\n" msgstr "%sのトリガを有効にしています\n" -#: pg_backup_archiver.c:698 +#: pg_backup_archiver.c:710 msgid "" "internal error -- WriteData cannot be called outside the context of a " "DataDumper routine\n" @@ -953,197 +991,209 @@ msgstr "" "内部的エラー -- WriteDataはDataDumper処理のコンテキスト外部では呼び出すことが" "できません\n" -#: pg_backup_archiver.c:854 +#: pg_backup_archiver.c:867 msgid "large-object output not supported in chosen format\n" msgstr "選択した書式ではラージオブジェクト出力をサポートしていません\n" -#: pg_backup_archiver.c:908 +#: pg_backup_archiver.c:921 #, c-format msgid "restored %d large object\n" msgid_plural "restored %d large objects\n" msgstr[0] "%d個のラージオブジェクトをリストアしました\n" msgstr[1] "%d個のラージオブジェクトをリストアしました\n" -#: pg_backup_archiver.c:929 +#: pg_backup_archiver.c:942 #, c-format msgid "restoring large object with OID %u\n" msgstr "OID %uのラージオブジェクトをリストアしています\n" -#: pg_backup_archiver.c:941 +#: pg_backup_archiver.c:954 #, c-format msgid "could not create large object %u: %s" msgstr "ラージオブジェクト %u を作成できませんでした: %s" -#: pg_backup_archiver.c:1010 +#: pg_backup_archiver.c:1016 #, c-format msgid "could not open TOC file \"%s\": %s\n" msgstr "TOCファイル\"%s\"をオープンできませんでした:%s\n" -#: pg_backup_archiver.c:1029 +#: pg_backup_archiver.c:1057 #, c-format msgid "WARNING: line ignored: %s\n" msgstr "警告: 行を無視しました: %s\n" -#: pg_backup_archiver.c:1036 +#: pg_backup_archiver.c:1064 #, c-format msgid "could not find entry for ID %d\n" msgstr "ID %dのエントリがありませんでした\n" -#: pg_backup_archiver.c:1046 pg_backup_files.c:172 pg_backup_files.c:457 +#: pg_backup_archiver.c:1085 pg_backup_files.c:172 pg_backup_files.c:457 #, c-format msgid "could not close TOC file: %s\n" msgstr "TOCファイルをクローズできませんでした: %s\n" -#: pg_backup_archiver.c:1170 pg_backup_custom.c:181 pg_backup_files.c:130 +#: pg_backup_archiver.c:1204 pg_backup_custom.c:152 pg_backup_files.c:130 #: pg_backup_files.c:262 #, c-format msgid "could not open output file \"%s\": %s\n" msgstr "出力ファイル \"%s\" をオープンできませんでした: %s\n" -#: pg_backup_archiver.c:1173 pg_backup_custom.c:188 pg_backup_files.c:137 +#: pg_backup_archiver.c:1207 pg_backup_custom.c:159 pg_backup_files.c:137 #, c-format msgid "could not open output file: %s\n" msgstr "出力ファイルをオープンできませんでした: %s\n" -#: pg_backup_archiver.c:1270 +#: pg_backup_archiver.c:1313 #, c-format msgid "wrote %lu byte of large object data (result = %lu)\n" msgid_plural "wrote %lu bytes of large object data (result = %lu)\n" msgstr[0] "ラージオブジェクトの%luバイトを書き出しました(結果は%lu)\n" msgstr[1] "ラージオブジェクトの%luバイトを書き出しました(結果は%lu)\n" -#: pg_backup_archiver.c:1276 +#: pg_backup_archiver.c:1319 #, c-format msgid "could not write to large object (result: %lu, expected: %lu)\n" msgstr "" "ラージオブジェクトを書き出すことができませんでした(結果は%lu、期待値は%lu)\n" -#: pg_backup_archiver.c:1334 pg_backup_archiver.c:1357 pg_backup_custom.c:781 -#: pg_backup_custom.c:1035 pg_backup_custom.c:1049 pg_backup_files.c:432 -#: pg_backup_tar.c:586 pg_backup_tar.c:1089 pg_backup_tar.c:1382 +#: pg_backup_archiver.c:1377 pg_backup_archiver.c:1400 pg_backup_custom.c:652 +#: pg_backup_files.c:432 pg_backup_tar.c:590 pg_backup_tar.c:1093 +#: pg_backup_tar.c:1386 #, c-format msgid "could not write to output file: %s\n" msgstr "出力ファイルに書き込めませんでした: %s\n" -#: pg_backup_archiver.c:1342 +#: pg_backup_archiver.c:1385 msgid "could not write to custom output routine\n" msgstr "カスタム出力処理に書き出せませんでした\n" -#: pg_backup_archiver.c:1440 +#: pg_backup_archiver.c:1483 msgid "Error while INITIALIZING:\n" msgstr "初期処理中にエラーがありました:\n" -#: pg_backup_archiver.c:1445 +#: pg_backup_archiver.c:1488 msgid "Error while PROCESSING TOC:\n" msgstr "TOC処理中にエラーがありました:\n" -#: pg_backup_archiver.c:1450 +#: pg_backup_archiver.c:1493 msgid "Error while FINALIZING:\n" msgstr "後処理中にエラーがありました:\n" -#: pg_backup_archiver.c:1455 +#: pg_backup_archiver.c:1498 #, c-format msgid "Error from TOC entry %d; %u %u %s %s %s\n" msgstr "TOCエントリ%d; %u %u %s %s %sのエラーです\n" -#: pg_backup_archiver.c:1587 +#: pg_backup_archiver.c:1633 #, c-format msgid "unexpected data offset flag %d\n" msgstr "想定外のデータオフセットフラグ %d です\n" -#: pg_backup_archiver.c:1600 +#: pg_backup_archiver.c:1646 msgid "file offset in dump file is too large\n" msgstr "ダンプファイルのファイルオフセットが大きすぎます\n" -#: pg_backup_archiver.c:1697 pg_backup_archiver.c:2998 pg_backup_custom.c:757 -#: pg_backup_files.c:419 pg_backup_tar.c:785 +#: pg_backup_archiver.c:1743 pg_backup_archiver.c:3095 pg_backup_custom.c:630 +#: pg_backup_files.c:419 pg_backup_tar.c:789 msgid "unexpected end of file\n" msgstr "想定外のファイル終端です\n" -#: pg_backup_archiver.c:1714 +#: pg_backup_archiver.c:1760 msgid "attempting to ascertain archive format\n" msgstr "アーカイブ書式の確認を試んでいます\n" -#: pg_backup_archiver.c:1730 pg_backup_custom.c:200 pg_backup_custom.c:888 +#: pg_backup_archiver.c:1786 pg_backup_archiver.c:1796 +#, c-format +msgid "directory name too long: \"%s\"\n" +msgstr "ディレクトリ名称が長すぎます: \"%s\"\n" + +#: pg_backup_archiver.c:1804 +#, c-format +msgid "" +"directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not " +"exist)\n" +msgstr "\"%s\"ディレクトリは有効なアーカイブではないようです(\"toc.dat\"がありません)\n" + +#: pg_backup_archiver.c:1812 pg_backup_custom.c:171 pg_backup_custom.c:757 #: pg_backup_files.c:155 pg_backup_files.c:307 #, c-format msgid "could not open input file \"%s\": %s\n" msgstr "入力ファイル \"%s\" をオープンできませんでした: %s\n" -#: pg_backup_archiver.c:1737 pg_backup_custom.c:207 pg_backup_files.c:162 +#: pg_backup_archiver.c:1820 pg_backup_custom.c:178 pg_backup_files.c:162 #, c-format msgid "could not open input file: %s\n" msgstr "入力ファイルをオープンできませんでした: %s\n" -#: pg_backup_archiver.c:1746 +#: pg_backup_archiver.c:1829 #, c-format msgid "could not read input file: %s\n" msgstr "入力ファイルを読み込めませんでした: %s\n" -#: pg_backup_archiver.c:1748 +#: pg_backup_archiver.c:1831 #, c-format msgid "input file is too short (read %lu, expected 5)\n" msgstr "入力ファイルが小さすぎます(読み取り%lu、期待値 5)\n" -#: pg_backup_archiver.c:1806 +#: pg_backup_archiver.c:1889 msgid "input file does not appear to be a valid archive (too short?)\n" msgstr "入力ファイルが有効なアーカイブではないようです(小さすぎる?)\n" -#: pg_backup_archiver.c:1809 +#: pg_backup_archiver.c:1892 msgid "input file does not appear to be a valid archive\n" msgstr "入力ファイルが有効なアーカイブではないようです\n" -#: pg_backup_archiver.c:1829 +#: pg_backup_archiver.c:1912 #, c-format msgid "could not close input file: %s\n" msgstr "入力ファイルをクローズできませんでした: %s\n" -#: pg_backup_archiver.c:1846 +#: pg_backup_archiver.c:1929 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "%sにAHを割り当てています。書式は%dです\n" -#: pg_backup_archiver.c:1954 +#: pg_backup_archiver.c:2041 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "ファイル書式\"%d\"は不明です\n" -#: pg_backup_archiver.c:2076 +#: pg_backup_archiver.c:2163 #, c-format msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" msgstr "エントリID %dは範囲外です -- TOCの破損の可能性があります\n" -#: pg_backup_archiver.c:2192 +#: pg_backup_archiver.c:2279 #, c-format msgid "read TOC entry %d (ID %d) for %s %s\n" msgstr "%3$s %4$s用にTOCエントリ%1$d(ID %2$d)を読み込みました\n" -#: pg_backup_archiver.c:2226 +#: pg_backup_archiver.c:2313 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "エンコーディング \"%s\" を認識できません\n" -#: pg_backup_archiver.c:2231 +#: pg_backup_archiver.c:2318 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "無効な ENCODING 項目:%s\n" -#: pg_backup_archiver.c:2249 +#: pg_backup_archiver.c:2336 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "無効なSTDSTRINGS 項目:%s\n" -#: pg_backup_archiver.c:2441 +#: pg_backup_archiver.c:2534 #, c-format msgid "could not set session user to \"%s\": %s" msgstr "セッションユーザを\"%s\"に設定できませんでした: %s" -#: pg_backup_archiver.c:2779 pg_backup_archiver.c:2929 +#: pg_backup_archiver.c:2874 pg_backup_archiver.c:3026 #, c-format msgid "WARNING: don't know how to set owner for object type %s\n" msgstr "WARNING: オブジェクト種類%sに対する所有者の設定方法が不明です。\n" -#: pg_backup_archiver.c:2961 +#: pg_backup_archiver.c:3058 msgid "" "WARNING: requested compression not available in this installation -- archive " "will be uncompressed\n" @@ -1151,21 +1201,21 @@ msgstr "" "警告: 要求された圧縮方法はこのインストレーションで利用できません --アーカイブ" "を圧縮しません\n" -#: pg_backup_archiver.c:3001 +#: pg_backup_archiver.c:3098 msgid "did not find magic string in file header\n" msgstr "ファイルヘッダにマジック番号がありませんでした\n" -#: pg_backup_archiver.c:3014 +#: pg_backup_archiver.c:3111 #, c-format msgid "unsupported version (%d.%d) in file header\n" msgstr "ファイルヘッダ内のバージョン(%d.%d)はサポートされていません\n" -#: pg_backup_archiver.c:3019 +#: pg_backup_archiver.c:3116 #, c-format msgid "sanity check on integer size (%lu) failed\n" msgstr "整数のサイズ(%lu)に関する健全性検査が失敗しました\n" -#: pg_backup_archiver.c:3023 +#: pg_backup_archiver.c:3120 msgid "" "WARNING: archive was made on a machine with larger integers, some operations " "might fail\n" @@ -1173,12 +1223,12 @@ msgstr "" "警告: アーカイブはより大きなサイズの整数を持つマシンで作成されました。一部の" "操作が失敗する可能性があります\n" -#: pg_backup_archiver.c:3033 +#: pg_backup_archiver.c:3130 #, c-format msgid "expected format (%d) differs from format found in file (%d)\n" msgstr "想定した書式(%d)はファイル内の書式(%d)と異なります\n" -#: pg_backup_archiver.c:3049 +#: pg_backup_archiver.c:3146 msgid "" "WARNING: archive is compressed, but this installation does not support " "compression -- no data will be available\n" @@ -1186,125 +1236,125 @@ msgstr "" "警告: アーカイブは圧縮されていますが、このインストレーションでは圧縮機能をサ" "ポートしていません -- 利用できるデータはありません\n" -#: pg_backup_archiver.c:3067 +#: pg_backup_archiver.c:3164 msgid "WARNING: invalid creation date in header\n" msgstr "警告: ヘッダ内の作成日付が無効です\n" -#: pg_backup_archiver.c:3164 +#: pg_backup_archiver.c:3262 msgid "entering restore_toc_entries_parallel\n" msgstr "restore_toc_entries_parallel に入ります\n" -#: pg_backup_archiver.c:3168 +#: pg_backup_archiver.c:3266 msgid "parallel restore is not supported with this archive file format\n" msgstr "" "このアーカイブファイルフォーマットでは並列リストアをサポートしていません\n" -#: pg_backup_archiver.c:3172 +#: pg_backup_archiver.c:3270 msgid "" "parallel restore is not supported with archives made by pre-8.0 pg_dump\n" msgstr "" "8.0 以前の pg_dump で作られたアーカイブでは並列リストアをサポートしていませ" "ん\n" -#: pg_backup_archiver.c:3191 +#: pg_backup_archiver.c:3311 #, c-format msgid "processing item %d %s %s\n" msgstr "%d %s %s を処理しています\n" -#: pg_backup_archiver.c:3247 +#: pg_backup_archiver.c:3387 msgid "entering main parallel loop\n" msgstr "メインの並列ループに入ります\n" -#: pg_backup_archiver.c:3261 +#: pg_backup_archiver.c:3401 #, c-format msgid "skipping item %d %s %s\n" msgstr "項目 %d %s %s をスキップしています\n" -#: pg_backup_archiver.c:3277 +#: pg_backup_archiver.c:3417 #, c-format msgid "launching item %d %s %s\n" msgstr "項目 %d %s %s に着手します\n" -#: pg_backup_archiver.c:3314 +#: pg_backup_archiver.c:3454 #, c-format msgid "worker process crashed: status %d\n" msgstr "ワーカープロセスがクラッシュしました:ステータス %d\n" -#: pg_backup_archiver.c:3319 +#: pg_backup_archiver.c:3459 msgid "finished main parallel loop\n" msgstr "メインの並列ループを終了します\n" -#: pg_backup_archiver.c:3337 +#: pg_backup_archiver.c:3477 #, c-format msgid "processing missed item %d %s %s\n" msgstr "見つからなかった項目 %d %s %s を処理しています\n" -#: pg_backup_archiver.c:3363 +#: pg_backup_archiver.c:3503 msgid "parallel_restore should not return\n" msgstr "parallel_restore は return しません\n" -#: pg_backup_archiver.c:3369 +#: pg_backup_archiver.c:3509 #, c-format msgid "could not create worker process: %s\n" msgstr "ワーカープロセスを作成できませんでした: %s\n" -#: pg_backup_archiver.c:3377 +#: pg_backup_archiver.c:3517 #, c-format msgid "could not create worker thread: %s\n" msgstr "ワーカースレッドを作成できませんでした: %s\n" -#: pg_backup_archiver.c:3601 +#: pg_backup_archiver.c:3741 msgid "no item ready\n" msgstr "準備ができている項目はありません\n" -#: pg_backup_archiver.c:3696 +#: pg_backup_archiver.c:3836 msgid "could not find slot of finished worker\n" msgstr "終了したワーカーのスロットの検索に失敗しました\n" -#: pg_backup_archiver.c:3698 +#: pg_backup_archiver.c:3838 #, c-format msgid "finished item %d %s %s\n" msgstr "項目 %d %s %s を完了しました\n" -#: pg_backup_archiver.c:3711 +#: pg_backup_archiver.c:3851 #, c-format msgid "worker process failed: exit code %d\n" msgstr "ワーカープロセスが終了コード %d で終了しました\n" -#: pg_backup_archiver.c:3863 +#: pg_backup_archiver.c:4047 #, c-format msgid "transferring dependency %d -> %d to %d\n" msgstr "%d -> %d から %d への依存関係を転送しています\n" -#: pg_backup_archiver.c:3937 +#: pg_backup_archiver.c:4116 #, c-format msgid "reducing dependencies for %d\n" msgstr "%d の依存関係を軽減しています\n" -#: pg_backup_archiver.c:3995 +#: pg_backup_archiver.c:4165 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "テーブル \"%s\" を作成できませんでした。そのデータは復元されません\n" -#: pg_backup_custom.c:97 +#: pg_backup_custom.c:87 msgid "custom archiver" msgstr "カスタムアーカイバ" -#: pg_backup_custom.c:405 pg_backup_null.c:153 +#: pg_backup_custom.c:373 pg_backup_null.c:153 msgid "invalid OID for large object\n" msgstr "ラージオブジェクトのOIDが無効です\n" -#: pg_backup_custom.c:471 +#: pg_backup_custom.c:444 #, c-format msgid "unrecognized data block type (%d) while searching archive\n" msgstr "アーカイブの検索中に未知のデータブロック種類(%d)がありました\n" -#: pg_backup_custom.c:482 +#: pg_backup_custom.c:455 #, c-format msgid "error during file seek: %s\n" msgstr "ファイルシーク中にエラーがありました: %s\n" -#: pg_backup_custom.c:492 +#: pg_backup_custom.c:465 #, c-format msgid "" "could not find block ID %d in archive -- possibly due to out-of-order " @@ -1315,7 +1365,7 @@ msgstr "" "ているためです。この場合、アーカイブ中にオフセットの情報がないため処理できま" "せん\n" -#: pg_backup_custom.c:497 +#: pg_backup_custom.c:470 #, c-format msgid "" "could not find block ID %d in archive -- possibly due to out-of-order " @@ -1324,93 +1374,72 @@ msgstr "" "アーカイブ中にブロックID %d がありません -- おそらくリストア要求の順序が誤っ" "ているためです。この場合、入力ファイルがシーク不能となるので処理できません\n" -#: pg_backup_custom.c:502 +#: pg_backup_custom.c:475 #, c-format msgid "could not find block ID %d in archive -- possibly corrupt archive\n" msgstr "" "アーカイブ内にブロック ID %d がありませんでした -- おそらくアーカイブが壊れて" "います\n" -#: pg_backup_custom.c:509 +#: pg_backup_custom.c:482 #, c-format msgid "found unexpected block ID (%d) when reading data -- expected %d\n" msgstr "データ読み込み時に想定外のブロックID(%d)がありました -- 期待値は%d\n" -#: pg_backup_custom.c:523 +#: pg_backup_custom.c:496 #, c-format msgid "unrecognized data block type %d while restoring archive\n" msgstr "アーカイブのりストア中に未知のデータブロック種類%dがありました\n" -#: pg_backup_custom.c:557 pg_backup_custom.c:985 -#, c-format -msgid "could not initialize compression library: %s\n" -msgstr "圧縮ライブラリを初期化できませんでした: %s\n" - -#: pg_backup_custom.c:581 pg_backup_custom.c:705 +#: pg_backup_custom.c:578 pg_backup_custom.c:911 msgid "could not read from input file: end of file\n" msgstr "入力ファイルから読み込めませんでした: ファイルの終了です\n" -#: pg_backup_custom.c:584 pg_backup_custom.c:708 +#: pg_backup_custom.c:581 pg_backup_custom.c:914 #, c-format msgid "could not read from input file: %s\n" msgstr "入力ファイルから読み込めませんでした: %s\n" -#: pg_backup_custom.c:601 pg_backup_custom.c:628 -#, c-format -msgid "could not uncompress data: %s\n" -msgstr "データを伸長できませんでした: %s\n" - -#: pg_backup_custom.c:634 -#, c-format -msgid "could not close compression library: %s\n" -msgstr "圧縮ライブラリをクローズできませんでした: %s\n" - -#: pg_backup_custom.c:736 +#: pg_backup_custom.c:610 #, c-format msgid "could not write byte: %s\n" msgstr "バイトを書き込めませんでした: %s\n" -#: pg_backup_custom.c:849 pg_backup_custom.c:882 +#: pg_backup_custom.c:718 pg_backup_custom.c:751 #, c-format msgid "could not close archive file: %s\n" msgstr "アーカイブファイルをクローズできませんでした: %s\n" -#: pg_backup_custom.c:868 +#: pg_backup_custom.c:737 msgid "can only reopen input archives\n" msgstr "入力アーカイブだけを再オープンできます\n" -#: pg_backup_custom.c:870 +#: pg_backup_custom.c:739 msgid "cannot reopen stdin\n" msgstr "標準入力を再オープンできません\n" -#: pg_backup_custom.c:872 +#: pg_backup_custom.c:741 msgid "cannot reopen non-seekable file\n" msgstr "シークできないファイルを再オープンできません\n" -#: pg_backup_custom.c:877 +#: pg_backup_custom.c:746 #, c-format msgid "could not determine seek position in archive file: %s\n" msgstr "アーカイブファイルのシーク位置を決定できませんでした: %s\n" -#: pg_backup_custom.c:892 +#: pg_backup_custom.c:761 #, c-format msgid "could not set seek position in archive file: %s\n" msgstr "アーカイブファイルのシーク位置をセットできませんでした: %s\n" -#: pg_backup_custom.c:914 +#: pg_backup_custom.c:781 +msgid "compressor active\n" +msgstr "圧縮処理が有効です\n" + +#: pg_backup_custom.c:817 msgid "WARNING: ftell mismatch with expected position -- ftell used\n" msgstr "警告: ftellで想定位置との不整合がありました -- ftellが使用されました\n" -#: pg_backup_custom.c:1016 -#, c-format -msgid "could not compress data: %s\n" -msgstr "データを圧縮できませんでした: %s\n" - -#: pg_backup_custom.c:1094 -#, c-format -msgid "could not close compression stream: %s\n" -msgstr "圧縮用ストリームをクローズできませんでした: %s\n" - #: pg_backup_db.c:25 msgid "archiver (db)" msgstr "アーカイバ(db)" @@ -1419,12 +1448,12 @@ msgstr "アーカイバ(db)" msgid "could not get server_version from libpq\n" msgstr "libpqからserver_versionを取り出せませんでした\n" -#: pg_backup_db.c:74 pg_dumpall.c:1717 +#: pg_backup_db.c:74 pg_dumpall.c:1741 #, c-format msgid "server version: %s; %s version: %s\n" msgstr "サーババージョン: %s、%s バージョン: %s\n" -#: pg_backup_db.c:76 pg_dumpall.c:1719 +#: pg_backup_db.c:76 pg_dumpall.c:1743 #, c-format msgid "aborting because of server version mismatch\n" msgstr "サーババージョンの不整合のため処理を中断しています\n" @@ -1435,7 +1464,7 @@ msgid "connecting to database \"%s\" as user \"%s\"\n" msgstr "データベース\"%s\"にユーザ\"%s\"で接続しています\n" #: pg_backup_db.c:152 pg_backup_db.c:207 pg_backup_db.c:254 pg_backup_db.c:303 -#: pg_dumpall.c:1613 pg_dumpall.c:1665 +#: pg_dumpall.c:1637 pg_dumpall.c:1689 msgid "Password: " msgstr "パスワード: " @@ -1533,7 +1562,7 @@ msgstr "バイトを書き込めませんでした\n" msgid "could not open large object TOC for output: %s\n" msgstr "出力用のラージオブジェクトTOCをオープンできませんでした: %s\n" -#: pg_backup_files.c:510 pg_backup_tar.c:935 +#: pg_backup_files.c:510 pg_backup_tar.c:939 #, c-format msgid "invalid OID for large object (%u)\n" msgstr "ラージオブジェクトのOIDが無効です(%u)\n" @@ -1552,62 +1581,62 @@ msgstr "ラージオブジェクトファイルをクローズできませんで msgid "this format cannot be read\n" msgstr "この書式は読み込めません\n" -#: pg_backup_tar.c:101 +#: pg_backup_tar.c:105 msgid "tar archiver" msgstr "tarアーカイバ" -#: pg_backup_tar.c:179 +#: pg_backup_tar.c:183 #, c-format msgid "could not open TOC file \"%s\" for output: %s\n" msgstr "出力用のTOCファイル\"%s\"をオープンできませんでした: %s\n" -#: pg_backup_tar.c:187 +#: pg_backup_tar.c:191 #, c-format msgid "could not open TOC file for output: %s\n" msgstr "出力用のTOCファイルをオープンできませんでした: %s\n" -#: pg_backup_tar.c:214 pg_backup_tar.c:370 +#: pg_backup_tar.c:218 pg_backup_tar.c:374 msgid "compression is not supported by tar archive format\n" msgstr "tar アーカイブフォーマットでは圧縮をサポートしていません\n" -#: pg_backup_tar.c:222 +#: pg_backup_tar.c:226 #, c-format msgid "could not open TOC file \"%s\" for input: %s\n" msgstr "入力用のTOCファイル\"%s\"をオープンできませんでした: %s\n" -#: pg_backup_tar.c:229 +#: pg_backup_tar.c:233 #, c-format msgid "could not open TOC file for input: %s\n" msgstr "入力用のTOCファイルをオープンできませんでした: %s\n" -#: pg_backup_tar.c:356 +#: pg_backup_tar.c:360 #, c-format msgid "could not find file \"%s\" in archive\n" msgstr "アーカイブ内にファイル\"%s\"がありませんでした\n" -#: pg_backup_tar.c:412 +#: pg_backup_tar.c:416 #, c-format msgid "could not generate temporary file name: %s\n" msgstr "一時ファイル名を生成できませんでした: %s\n" -#: pg_backup_tar.c:421 +#: pg_backup_tar.c:425 msgid "could not open temporary file\n" msgstr "一時ファイルをオープンできませんでした\n" -#: pg_backup_tar.c:448 +#: pg_backup_tar.c:452 msgid "could not close tar member\n" msgstr "tarメンバをクローズできませんでした\n" -#: pg_backup_tar.c:548 +#: pg_backup_tar.c:552 msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" msgstr "内部エラー -- tarReadRaw()にてthもfhも指定されていませんでした\n" -#: pg_backup_tar.c:674 +#: pg_backup_tar.c:678 #, c-format msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n" msgstr "COPY文が無効です -- 文字列\"%s\"に\"copy\"がありませんでした\n" -#: pg_backup_tar.c:692 +#: pg_backup_tar.c:696 #, c-format msgid "" "invalid COPY statement -- could not find \"from stdin\" in string \"%s\" " @@ -1616,54 +1645,54 @@ msgstr "" "COPY文が無効です -- 文字列\"%s\"の%lu位置から\"from stdin\"がありませんでし" "た\n" -#: pg_backup_tar.c:729 +#: pg_backup_tar.c:733 #, c-format msgid "restoring large object OID %u\n" msgstr "OID %uのラージオブジェクトをリストアしています\n" -#: pg_backup_tar.c:880 +#: pg_backup_tar.c:884 msgid "could not write null block at end of tar archive\n" msgstr "tarアーカイブの最後にヌルブロックを書き出せませんでした\n" -#: pg_backup_tar.c:1080 +#: pg_backup_tar.c:1084 msgid "archive member too large for tar format\n" msgstr "tar書式のアーカイブメンバが大きすぎます\n" -#: pg_backup_tar.c:1095 +#: pg_backup_tar.c:1099 #, c-format msgid "could not close temporary file: %s\n" msgstr "一時ファイルを開けませんでした:%s\n" -#: pg_backup_tar.c:1105 +#: pg_backup_tar.c:1109 #, c-format msgid "actual file length (%s) does not match expected (%s)\n" msgstr "実際のファイル長(%s)が期待値(%s)と一致しません\n" -#: pg_backup_tar.c:1113 +#: pg_backup_tar.c:1117 msgid "could not output padding at end of tar member\n" msgstr "tarメンバの最後にパディングを出力できませんでした\n" -#: pg_backup_tar.c:1142 +#: pg_backup_tar.c:1146 #, c-format msgid "moving from position %s to next member at file position %s\n" msgstr "位置%sからファイル位置%sの次のメンバへ移動しています\n" -#: pg_backup_tar.c:1153 +#: pg_backup_tar.c:1157 #, c-format msgid "now at file position %s\n" msgstr "現在のファイル位置は%sです\n" -#: pg_backup_tar.c:1162 pg_backup_tar.c:1192 +#: pg_backup_tar.c:1166 pg_backup_tar.c:1196 #, c-format msgid "could not find header for file \"%s\" in tar archive\n" msgstr "tar アーカイブ内でファイル\"%s\"用のファイルヘッダがありませんでした\n" -#: pg_backup_tar.c:1176 +#: pg_backup_tar.c:1180 #, c-format msgid "skipping tar member %s\n" msgstr "tarメンバ%sを飛ばしています\n" -#: pg_backup_tar.c:1180 +#: pg_backup_tar.c:1184 #, c-format msgid "" "restoring data out of order is not supported in this archive format: \"%s\" " @@ -1672,24 +1701,24 @@ msgstr "" "このアーカイブ書式では、順序外のデータのダンプはサポートされていません:\"%s" "\"を想定していましたが、アーカイブファイル内では\"%s\"の前にありました\n" -#: pg_backup_tar.c:1226 +#: pg_backup_tar.c:1230 #, c-format msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n" msgstr "実際のファイル位置と予測ファイル位置が一致しません(%s vs. %s)\n" -#: pg_backup_tar.c:1241 +#: pg_backup_tar.c:1245 #, c-format msgid "incomplete tar header found (%lu byte)\n" msgid_plural "incomplete tar header found (%lu bytes)\n" msgstr[0] "不完全なtarヘッダがありました(%luバイト)\n" msgstr[1] "不完全なtarヘッダがありました(%luバイト)\n" -#: pg_backup_tar.c:1279 +#: pg_backup_tar.c:1283 #, c-format msgid "TOC Entry %s at %s (length %lu, checksum %d)\n" msgstr "%2$sのTOCエントリ%1$s(長さ %3$lu、チェックサム %4$d)\n" -#: pg_backup_tar.c:1289 +#: pg_backup_tar.c:1293 #, c-format msgid "" "corrupt tar header found in %s (expected %d, computed %d) file position %s\n" @@ -1697,29 +1726,28 @@ msgstr "" "破損したtarヘッダがファイル位置%4$sの%1$sにありました(期待値 %2$d、結果 %3" "$d)\n" -#: pg_restore.c:308 +#: pg_restore.c:300 #, c-format msgid "%s: options -d/--dbname and -f/--file cannot be used together\n" -msgstr "" -"\"%s: -d/--dbnameオプションと-f/--fileオプションは同時に使用できません\n" +msgstr "%s: -d/--dbnameオプションと-f/--fileオプションは同時に使用できません\n" -#: pg_restore.c:320 +#: pg_restore.c:312 #, c-format msgid "%s: cannot specify both --single-transaction and multiple jobs\n" msgstr "%s: --single-transaction と並列ジョブは同時には指定できません\n" -#: pg_restore.c:350 +#: pg_restore.c:348 #, c-format -msgid "unrecognized archive format \"%s\"; please specify \"c\" or \"t\"\n" -msgstr "" -"未知のアーカイブフォーマット\"%s\"; \"c\" または\"t\"を指定してください\n" +msgid "" +"unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"\n" +msgstr "未知のアーカイブフォーマット\"%s\"; \"c\"、\"d\"または\"t\"を指定してください\n" -#: pg_restore.c:384 +#: pg_restore.c:382 #, c-format msgid "WARNING: errors ignored on restore: %d\n" msgstr "警告: リストアにてエラーを無視しました: %d\n" -#: pg_restore.c:398 +#: pg_restore.c:396 #, c-format msgid "" "%s restores a PostgreSQL database from an archive created by pg_dump.\n" @@ -1728,49 +1756,49 @@ msgstr "" "%sはpg_dumpで作成したアーカイブからPostgreSQLデータベースをリストアします。\n" "\n" -#: pg_restore.c:400 +#: pg_restore.c:398 #, c-format msgid " %s [OPTION]... [FILE]\n" msgstr " %s [OPTION]... [FILE]\n" -#: pg_restore.c:403 +#: pg_restore.c:401 #, c-format msgid " -d, --dbname=NAME connect to database name\n" msgstr " -d, --dbname=NAME 接続するデータベース名\n" -#: pg_restore.c:404 +#: pg_restore.c:402 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=FILENAME 出力ファイル名です\n" -#: pg_restore.c:405 +#: pg_restore.c:403 #, c-format -msgid " -F, --format=c|t backup file format (should be automatic)\n" +msgid " -F, --format=c|d|t backup file format (should be automatic)\n" msgstr "" -" -F, --format=c|t バックアップファイルの書式\n" +" -F, --format=c|d|t バックアップファイルの書式\n" " (自動的に設定されるはずです)\n" -#: pg_restore.c:406 +#: pg_restore.c:404 #, c-format msgid " -l, --list print summarized TOC of the archive\n" msgstr " -l, --list アーカイブのTOCの要約を表示\n" -#: pg_restore.c:407 +#: pg_restore.c:405 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose 冗長モードです\n" -#: pg_restore.c:408 +#: pg_restore.c:406 #, c-format msgid " --help show this help, then exit\n" msgstr " --help ヘルプを表示し、終了します\n" -#: pg_restore.c:409 +#: pg_restore.c:407 #, c-format msgid " --version output version information, then exit\n" msgstr " --version バージョン情報を表示し、終了します\n" -#: pg_restore.c:411 +#: pg_restore.c:409 #, c-format msgid "" "\n" @@ -1779,40 +1807,40 @@ msgstr "" "\n" "リストア制御用のオプション:\n" -#: pg_restore.c:412 +#: pg_restore.c:410 #, c-format msgid " -a, --data-only restore only the data, no schema\n" msgstr "" " -a, --data-only データのみをリストア。スキーマをリストアしません\n" -#: pg_restore.c:413 +#: pg_restore.c:411 #, c-format msgid "" " -c, --clean clean (drop) database objects before recreating\n" msgstr " -c, --clean 再作成前にデータベースを削除します\n" -#: pg_restore.c:414 +#: pg_restore.c:412 #, c-format msgid " -C, --create create the target database\n" msgstr " -C, --create 対象のデータベースを作成\n" -#: pg_restore.c:415 +#: pg_restore.c:413 #, c-format msgid " -e, --exit-on-error exit on error, default is to continue\n" msgstr " -e, --exit-on-error エラー時に終了。デフォルトは継続\n" -#: pg_restore.c:416 +#: pg_restore.c:414 #, c-format msgid " -I, --index=NAME restore named index\n" msgstr " -I, --index=NAME 指名したインデックスをリストア\n" -#: pg_restore.c:417 +#: pg_restore.c:415 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to restore\n" msgstr "" " -j, --jobs=NUM リストア時に指定した数の並列ジョブを使います\n" -#: pg_restore.c:418 +#: pg_restore.c:416 #, c-format msgid "" " -L, --use-list=FILENAME use table of contents from this file for\n" @@ -1821,34 +1849,34 @@ msgstr "" " -L, --use-list=FILENAME このファイルの内容に従って SELECT や\n" " 出力のソートを行います\n" -#: pg_restore.c:420 +#: pg_restore.c:418 #, c-format msgid " -n, --schema=NAME restore only objects in this schema\n" msgstr "" " -n, --schema=NAME 指定したスキーマのオブジェクトのみをリストアしま" "す\n" -#: pg_restore.c:421 +#: pg_restore.c:419 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr " -O, --no-owner オブジェクトの所有権の復元を省略\n" -#: pg_restore.c:422 +#: pg_restore.c:420 #, c-format msgid "" " -P, --function=NAME(args)\n" " restore named function\n" msgstr "" -" -P, --function=NAME(args)\\n\"\n" +" -P, --function=NAME(args)\n" " 指名された関数をリストア\n" -#: pg_restore.c:424 +#: pg_restore.c:422 #, c-format msgid " -s, --schema-only restore only the schema, no data\n" msgstr "" " -s, --schema-only スキーマのみをリストア。データをリストアしません\n" -#: pg_restore.c:425 +#: pg_restore.c:423 #, c-format msgid "" " -S, --superuser=NAME superuser user name to use for disabling " @@ -1856,23 +1884,32 @@ msgid "" msgstr "" " -S, --superuser=NAME トリガを無効にするための、スーパーユーザの名前\n" -#: pg_restore.c:426 +#: pg_restore.c:424 #, c-format msgid " -t, --table=NAME restore named table\n" msgstr " -t, --table=NAME 指名したテーブルをリストア\n" -#: pg_restore.c:427 +#: pg_restore.c:425 #, c-format msgid " -T, --trigger=NAME restore named trigger\n" msgstr " -T, --trigger=NAME 指名したトリガをリストア\n" -#: pg_restore.c:428 +#: pg_restore.c:426 #, c-format msgid "" " -x, --no-privileges skip restoration of access privileges (grant/" "revoke)\n" msgstr " -x, --no-privileges アクセス権限(grant/revoke)の復元を省略\n" +#: pg_restore.c:427 +#, c-format +msgid "" +" -1, --single-transaction\n" +" restore as a single transaction\n" +msgstr "" +" -1, --single-transaction\n" +" 単一のトランザクションとして復元します\n" + #: pg_restore.c:429 #, c-format msgid " --disable-triggers disable triggers during data-only restore\n" @@ -1893,14 +1930,14 @@ msgstr "" #: pg_restore.c:433 #, c-format -msgid " --no-tablespaces do not restore tablespace assignments\n" -msgstr "" -" --no-tablespaces テーブルスペースの割り当て情報をリストアしません\n" +msgid " --no-security-labels do not restore security labels\n" +msgstr " --no-security-labels セキュリティラベルをリストアしません\n" #: pg_restore.c:434 #, c-format -msgid " --role=ROLENAME do SET ROLE before restore\n" -msgstr " --role=ROLENAME リストアに先立って SET ROLE します\n" +msgid " --no-tablespaces do not restore tablespace assignments\n" +msgstr "" +" --no-tablespaces テーブルスペースの割り当て情報をリストアしません\n" #: pg_restore.c:435 #, c-format @@ -1914,16 +1951,12 @@ msgstr "" " 所有者をセットする際、ALTER OWNER コマンドの代り\n" " に SET SESSION AUTHORIZATION コマンドを使用する\n" -#: pg_restore.c:438 +#: pg_restore.c:445 #, c-format -msgid "" -" -1, --single-transaction\n" -" restore as a single transaction\n" -msgstr "" -" -1, --single-transaction\n" -" 単一のトランザクションとして復元します\n" +msgid " --role=ROLENAME do SET ROLE before restore\n" +msgstr " --role=ROLENAME リストアに先立って SET ROLE します\n" -#: pg_restore.c:448 +#: pg_restore.c:447 #, c-format msgid "" "\n" @@ -1934,7 +1967,7 @@ msgstr "" "入力ファイル名が指定されない場合、標準入力が使用されます。\n" "\n" -#: pg_dumpall.c:167 +#: pg_dumpall.c:171 #, c-format msgid "" "The program \"pg_dump\" is needed by %s but was not found in the\n" @@ -1945,7 +1978,7 @@ msgstr "" "でした。\n" "インストールの状況を確認してください。\n" -#: pg_dumpall.c:174 +#: pg_dumpall.c:178 #, c-format msgid "" "The program \"pg_dump\" was found by \"%s\"\n" @@ -1956,38 +1989,36 @@ msgstr "" "せんでした。\n" "インストールの状況を確認してください。\n" -#: pg_dumpall.c:346 +#: pg_dumpall.c:314 #, c-format msgid "" "%s: options -g/--globals-only and -r/--roles-only cannot be used together\n" -msgstr "" -"\"%s: -g/--globals-onlyオプションと-r/--roles-onlyオプションは同時に使用でき" -"ません\n" +msgstr "%s: -g/--globals-onlyオプションと-r/--roles-onlyオプションは同時に使用できません\n" -#: pg_dumpall.c:355 +#: pg_dumpall.c:323 #, c-format msgid "" "%s: options -g/--globals-only and -t/--tablespaces-only cannot be used " "together\n" msgstr "" -"\"%s: -g/--globals-onlyオプションと-t/--tablespaces-onlyオプションは同時\n" +"%s: -g/--globals-onlyオプションと-t/--tablespaces-onlyオプションは同時\n" "に使用できません\n" -#: pg_dumpall.c:364 +#: pg_dumpall.c:332 #, c-format msgid "" "%s: options -r/--roles-only and -t/--tablespaces-only cannot be used " "together\n" msgstr "" -"\"%s: -r/--roles-onlyオプションと-t/--tablespaces-onlyオプション)は同時\n" +"%s: -r/--roles-onlyオプションと-t/--tablespaces-onlyオプション)は同時\n" "に使用できません\n" -#: pg_dumpall.c:384 pg_dumpall.c:1654 +#: pg_dumpall.c:374 pg_dumpall.c:1678 #, c-format msgid "%s: could not connect to database \"%s\"\n" msgstr "%s: データベース\"%s\"へ接続できませんでした\n" -#: pg_dumpall.c:399 +#: pg_dumpall.c:389 #, c-format msgid "" "%s: could not connect to databases \"postgres\" or \"template1\"\n" @@ -1996,12 +2027,12 @@ msgstr "" "%s: \"postgres\"または\"template1\"データベースに接続できませんでした\n" "他のデータベースを指定してください。\n" -#: pg_dumpall.c:416 +#: pg_dumpall.c:406 #, c-format msgid "%s: could not open the output file \"%s\": %s\n" msgstr "%s: 出力ファイル \"%s\" をオープンできませんでした: %s\n" -#: pg_dumpall.c:534 +#: pg_dumpall.c:528 #, c-format msgid "" "%s extracts a PostgreSQL database cluster into an SQL script file.\n" @@ -2010,30 +2041,35 @@ msgstr "" "%sはPostgreSQLデータベースクラスタをSQLスクリプトファイルに展開します。\n" "\n" -#: pg_dumpall.c:536 +#: pg_dumpall.c:530 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [OPTION]...\n" -#: pg_dumpall.c:545 +#: pg_dumpall.c:533 +#, c-format +msgid " -f, --file=FILENAME output file name\n" +msgstr " -f, --file=ファイル名 出力ファイル名\n" + +#: pg_dumpall.c:539 #, c-format msgid "" " -c, --clean clean (drop) databases before recreating\n" msgstr " -c, --clean 再作成前にデータベースを削除\n" -#: pg_dumpall.c:546 +#: pg_dumpall.c:540 #, c-format msgid " -g, --globals-only dump only global objects, no databases\n" msgstr "" " -g, --globals-only グローバルオブジェクトのみをダンプし、\n" " データベースをダンプしません\n" -#: pg_dumpall.c:548 +#: pg_dumpall.c:542 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr " -O, --no-owner オブジェクトの所有権の復元を省略\n" -#: pg_dumpall.c:549 +#: pg_dumpall.c:543 #, c-format msgid "" " -r, --roles-only dump only roles, no databases or tablespaces\n" @@ -2041,13 +2077,13 @@ msgstr "" " -r, --roles-only ロールのみをダンプ。\n" " データベースとテーブル空間をダンプしません\n" -#: pg_dumpall.c:551 +#: pg_dumpall.c:545 #, c-format msgid " -S, --superuser=NAME superuser user name to use in the dump\n" msgstr "" " -S, --superuser=NAME ダンプで使用するスーパーユーザのユーザ名を指定\n" -#: pg_dumpall.c:552 +#: pg_dumpall.c:546 #, c-format msgid "" " -t, --tablespaces-only dump only tablespaces, no databases or roles\n" @@ -2055,12 +2091,12 @@ msgstr "" " -t, --tablespaces-only テーブルスペースのみをダンプ。\n" " データベースとロールをダンプしません\n" -#: pg_dumpall.c:567 +#: pg_dumpall.c:563 #, c-format msgid " -l, --database=DBNAME alternative default database\n" msgstr " -l, --database=DBNAME 代替のデフォルトデータベースを指定します\n" -#: pg_dumpall.c:573 +#: pg_dumpall.c:570 #, c-format msgid "" "\n" @@ -2073,72 +2109,72 @@ msgstr "" "-f/--file が指定されない場合、SQLスクリプトは標準出力に書き出されます。\n" "\n" -#: pg_dumpall.c:1017 +#: pg_dumpall.c:1041 #, c-format msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n" msgstr "%1$s: テーブル空間\"%3$s\"のACLリスト(%2$s)を解析できませんでした\n" -#: pg_dumpall.c:1317 +#: pg_dumpall.c:1341 #, c-format msgid "%s: could not parse ACL list (%s) for database \"%s\"\n" msgstr "%1$s: データベース\"%3$s\"のACLリスト(%2$s)を解析できませんでした\n" -#: pg_dumpall.c:1524 +#: pg_dumpall.c:1548 #, c-format msgid "%s: dumping database \"%s\"...\n" msgstr "%s: データベース\"%s\"をダンプしています...\n" -#: pg_dumpall.c:1534 +#: pg_dumpall.c:1558 #, c-format msgid "%s: pg_dump failed on database \"%s\", exiting\n" msgstr "%s: データベース\"%s\"に対するpg_dumpが失敗しました。終了します\n" -#: pg_dumpall.c:1543 +#: pg_dumpall.c:1567 #, c-format msgid "%s: could not re-open the output file \"%s\": %s\n" msgstr "%s: 出力ファイル \"%s\" を再オープンできませんでした: %s\n" -#: pg_dumpall.c:1582 +#: pg_dumpall.c:1606 #, c-format msgid "%s: running \"%s\"\n" msgstr "%s: \"%s\"を実行しています\n" -#: pg_dumpall.c:1627 +#: pg_dumpall.c:1651 #, c-format msgid "%s: out of memory\n" msgstr "%s: メモリ不足です\n" -#: pg_dumpall.c:1676 +#: pg_dumpall.c:1700 #, c-format msgid "%s: could not connect to database \"%s\": %s\n" msgstr "%s: データベース\"%s\"へ接続できませんでした: %s\n" -#: pg_dumpall.c:1690 +#: pg_dumpall.c:1714 #, c-format msgid "%s: could not get server version\n" msgstr "%s: サーババージョンを入手できませんでした\n" -#: pg_dumpall.c:1696 +#: pg_dumpall.c:1720 #, c-format msgid "%s: could not parse server version \"%s\"\n" msgstr "%s: サーババージョン\"%s\"を解析できませんでした\n" -#: pg_dumpall.c:1704 +#: pg_dumpall.c:1728 #, c-format msgid "%s: could not parse version \"%s\"\n" msgstr "%s: バージョン\"%s\"を解析できませんでした\n" -#: pg_dumpall.c:1743 pg_dumpall.c:1769 +#: pg_dumpall.c:1767 pg_dumpall.c:1793 #, c-format msgid "%s: executing %s\n" msgstr "%s: %sを実行しています\n" -#: pg_dumpall.c:1749 pg_dumpall.c:1775 +#: pg_dumpall.c:1773 pg_dumpall.c:1799 #, c-format msgid "%s: query failed: %s" msgstr "%s: 問い合わせが失敗しました: %s" -#: pg_dumpall.c:1751 pg_dumpall.c:1777 +#: pg_dumpall.c:1775 pg_dumpall.c:1801 #, c-format msgid "%s: query was: %s\n" msgstr "%s: 問い合わせ: %s\n" @@ -2173,27 +2209,48 @@ msgstr "ディレクトリを\"%s\"に変更できませんでした" msgid "could not read symbolic link \"%s\"" msgstr "シンボリックリンク\"%s\"の読み取りに失敗しました" -#: ../../port/exec.c:516 +#: ../../port/exec.c:517 #, c-format msgid "child process exited with exit code %d" msgstr "子プロセスが終了コード%dで終了しました" -#: ../../port/exec.c:520 +#: ../../port/exec.c:521 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "子プロセスが例外0x%Xで終了しました" -#: ../../port/exec.c:529 +#: ../../port/exec.c:530 #, c-format msgid "child process was terminated by signal %s" msgstr "子プロセスがシグナル%sで終了しました" -#: ../../port/exec.c:532 +#: ../../port/exec.c:533 #, c-format msgid "child process was terminated by signal %d" msgstr "子プロセスがシグナル%dで終了しました" -#: ../../port/exec.c:536 +#: ../../port/exec.c:537 #, c-format msgid "child process exited with unrecognized status %d" msgstr "子プロセスが未知のステータス%dで終了しました" + +#~ msgid "%s: invalid -X option -- %s\n" +#~ msgstr "%s: 無効な -X オプション -- %s\n" + +#~ msgid "query returned no rows: %s\n" +#~ msgstr "問い合わせの結果行がありませんでした: %s\n" + +#~ msgid "could not initialize compression library: %s\n" +#~ msgstr "圧縮ライブラリを初期化できませんでした: %s\n" + +#~ msgid "could not uncompress data: %s\n" +#~ msgstr "データを伸長できませんでした: %s\n" + +#~ msgid "could not close compression library: %s\n" +#~ msgstr "圧縮ライブラリをクローズできませんでした: %s\n" + +#~ msgid "could not compress data: %s\n" +#~ msgstr "データを圧縮できませんでした: %s\n" + +#~ msgid "could not close compression stream: %s\n" +#~ msgstr "圧縮用ストリームをクローズできませんでした: %s\n" diff --git a/src/bin/pg_dump/po/ko.po b/src/bin/pg_dump/po/ko.po index 9e1e583aab..5b1ace2c6c 100644 --- a/src/bin/pg_dump/po/ko.po +++ b/src/bin/pg_dump/po/ko.po @@ -9,6 +9,7 @@ msgstr "" "PO-Revision-Date: 2010-09-24 12:37-0400\n" "Last-Translator: EnterpriseDB translation team \n" "Language-Team: EnterpriseDB translation team \n" +"Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=euc-kr\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_dump/po/pl.po b/src/bin/pg_dump/po/pl.po new file mode 100644 index 0000000000..37eb15c248 --- /dev/null +++ b/src/bin/pg_dump/po/pl.po @@ -0,0 +1,2292 @@ +# Polish message translation file for pg_dump +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# +# Begina Felicysym , 2011. +msgid "" +msgstr "" +"Project-Id-Version: pg_dump (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-09-29 22:54+0000\n" +"PO-Revision-Date: 2011-09-30 09:48-0300\n" +"Last-Translator: Begina Felicysym \n" +"Language-Team: Begina Felicysym\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1-beta1\n" + +#: pg_dump.c:489 pg_dump.c:503 pg_restore.c:274 pg_restore.c:290 +#: pg_restore.c:302 pg_dumpall.c:296 pg_dumpall.c:306 pg_dumpall.c:316 +#: pg_dumpall.c:325 pg_dumpall.c:334 pg_dumpall.c:392 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Spróbuj \"%s --help\" aby uzyskać więcej informacji.\n" + +#: pg_dump.c:501 pg_restore.c:288 pg_dumpall.c:304 +#, 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" + +#: pg_dump.c:514 +msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" +msgstr "opcje -s/--schema-only i -a/--data-only nie mogą być używane razem\n" + +#: pg_dump.c:520 +msgid "options -c/--clean and -a/--data-only cannot be used together\n" +msgstr "opcje -c/--clean i -a/--data-only nie mogą być używane razem\n" + +#: pg_dump.c:526 +msgid "" +"options --inserts/--column-inserts and -o/--oids cannot be used together\n" +msgstr "" +"opcje --inserts/--column-inserts i -o/--oids nie mogą być używane razem\n" + +#: pg_dump.c:527 +msgid "(The INSERT command cannot set OIDs.)\n" +msgstr "(Polecenie INSERT nie może ustawiać OIDów.)\n" + +#: pg_dump.c:552 +#, c-format +msgid "could not open output file \"%s\" for writing\n" +msgstr "nie można otworzyć pliku wyjścia \"%s\" do zapisu\n" + +#: pg_dump.c:562 pg_backup_db.c:38 +#, c-format +msgid "could not parse version string \"%s\"\n" +msgstr "nie można przetworzyć zapisu wersji \"%s\"\n" + +#: pg_dump.c:585 +#, c-format +msgid "invalid client encoding \"%s\" specified\n" +msgstr "wskazano niepoprawne kodowanie klienta \"%s\"\n" + +#: pg_dump.c:684 +#, c-format +msgid "last built-in OID is %u\n" +msgstr "ostatni wbudowany OID to %u\n" + +#: pg_dump.c:694 +msgid "No matching schemas were found\n" +msgstr "Nie znaleziono pasujących schematów\n" + +#: pg_dump.c:709 +msgid "No matching tables were found\n" +msgstr "Nie znaleziono pasujących tabel\n" + +#: pg_dump.c:821 +#, c-format +msgid "" +"%s dumps a database as a text file or to other formats.\n" +"\n" +msgstr "" +"%s zrzuca bazę danych jako plik tekstowy lub do innych formatów.\n" +"\n" + +#: pg_dump.c:822 pg_restore.c:397 pg_dumpall.c:529 +#, c-format +msgid "Usage:\n" +msgstr "Składnia:\n" + +#: pg_dump.c:823 +#, c-format +msgid " %s [OPTION]... [DBNAME]\n" +msgstr " %s [OPCJA]... [NAZWADB]\n" + +#: pg_dump.c:825 pg_restore.c:400 pg_dumpall.c:532 +#, c-format +msgid "" +"\n" +"General options:\n" +msgstr "" +"\n" +"Opcje ogólne:\n" + +#: pg_dump.c:826 +#, c-format +msgid " -f, --file=FILENAME output file or directory name\n" +msgstr " -f, --file=NAZWAPLIKU nazwa pliku wyjścia\n" + +#: pg_dump.c:827 +#, c-format +msgid "" +" -F, --format=c|d|t|p output file format (custom, directory, tar, " +"plain text)\n" +msgstr "" +" -F, --format=c|d|t|p format pliku wyjścia (c-użytkownika, d-folder, " +"t-tar, p-tekstowy)\n" + +#: pg_dump.c:828 +#, c-format +msgid " -v, --verbose verbose mode\n" +msgstr " -v, --verbose tryb informacji szczegółowych\n" + +#: pg_dump.c:829 +#, c-format +msgid "" +" -Z, --compress=0-9 compression level for compressed formats\n" +msgstr "" +" -Z, --compress=0-9 poziom kompresji dla formatów kompresujących\n" + +#: pg_dump.c:830 pg_dumpall.c:534 +#, c-format +msgid "" +" --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" +msgstr "" +" --lock-wait-timeout=LIMITCZASU\n" +" niepowodzenie blokowania tabeli po LIMITCZASU\n" + +#: pg_dump.c:831 pg_dumpall.c:535 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help pokazuje ten ekran pomocy i kończy\n" + +#: pg_dump.c:832 pg_dumpall.c:536 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version pokazuje informacje o wersji i kończy\n" + +#: pg_dump.c:834 pg_dumpall.c:537 +#, c-format +msgid "" +"\n" +"Options controlling the output content:\n" +msgstr "" +"\n" +"Opcje kontrolujące zawartość wyjścia:\n" + +#: pg_dump.c:835 pg_dumpall.c:538 +#, c-format +msgid " -a, --data-only dump only the data, not the schema\n" +msgstr " -a, --data-only zrzuca tylko dane, bez schematu\n" + +#: pg_dump.c:836 +#, c-format +msgid " -b, --blobs include large objects in dump\n" +msgstr " -b, --blobs dodaje duże obiekty do zrzutu\n" + +#: pg_dump.c:837 +#, c-format +msgid "" +" -c, --clean clean (drop) database objects before " +"recreating\n" +msgstr "" +" -c, --clean czyszczenie (kasowanie) obiektów baz danych " +"przed odtworzeniem\n" + +#: pg_dump.c:838 +#, c-format +msgid "" +" -C, --create include commands to create database in dump\n" +msgstr "" +" -C, --create dodaje polecenia tworzenia bazy danych w " +"zrzucie\n" + +#: pg_dump.c:839 +#, c-format +msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" +msgstr " -E, --encoding=KODOWANIE zrzuca dane w kodowaniu KODOWANIE\n" + +#: pg_dump.c:840 +#, c-format +msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" +msgstr " -n, --schema=SCHEMAT zrzuca tylko nazwany schemat(y)\n" + +#: pg_dump.c:841 +#, c-format +msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n" +msgstr "" +" -N, --exclude-schema=SCHEMAT\n" +" NIE zrzuca nazwanych schematów\n" + +#: pg_dump.c:842 pg_dumpall.c:541 +#, c-format +msgid " -o, --oids include OIDs in dump\n" +msgstr " -o, --oids dodaje OIDy do zrzutu\n" + +#: pg_dump.c:843 +#, c-format +msgid "" +" -O, --no-owner skip restoration of object ownership in\n" +" plain-text format\n" +msgstr "" +" -O, --no-owner pomija odtworzenie wskazania właściciela " +"obiektu\n" +" w formacie tekstowym\n" + +#: pg_dump.c:845 pg_dumpall.c:544 +#, c-format +msgid " -s, --schema-only dump only the schema, no data\n" +msgstr " -s, --schema-only zrzuca tylko schemat, bez danych\n" + +#: pg_dump.c:846 +#, c-format +msgid "" +" -S, --superuser=NAME superuser user name to use in plain-text " +"format\n" +msgstr "" +" -S, --superuser=NAZWA nazwa superużytkownika używana w formacie " +"tekstowym\n" + +#: pg_dump.c:847 +#, c-format +msgid " -t, --table=TABLE dump the named table(s) only\n" +msgstr " -t, --table=TABELA zrzuca tylko tabelę wedle nazwy\n" + +#: pg_dump.c:848 +#, c-format +msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n" +msgstr " -T, --exclude-table=TABELA NIE zrzuca tabeli o tej nazwie\n" + +#: pg_dump.c:849 pg_dumpall.c:547 +#, c-format +msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" +msgstr " -x, --no-privileges nie zrzuca przywilejów (grant/revoke)\n" + +#: pg_dump.c:850 pg_dumpall.c:548 +#, c-format +msgid " --binary-upgrade for use by upgrade utilities only\n" +msgstr "" +" --binary-upgrade używane tylko przez narzędzia aktualizacji\n" + +#: pg_dump.c:851 pg_dumpall.c:549 +#, c-format +msgid "" +" --column-inserts dump data as INSERT commands with column " +"names\n" +msgstr "" +" --column-inserts zrzuca dane jako polecenia INSERT z nazwami " +"kolumn\n" + +#: pg_dump.c:852 pg_dumpall.c:550 +#, c-format +msgid "" +" --disable-dollar-quoting disable dollar quoting, use SQL standard " +"quoting\n" +msgstr "" +" --disable-dollar-quoting blokuje cytowanie dolarem, używa standardowego " +"cytowania SQL\n" + +#: pg_dump.c:853 pg_dumpall.c:551 +#, c-format +msgid "" +" --disable-triggers disable triggers during data-only restore\n" +msgstr "" +" --disable-triggers wyłącza wyzwalacze podczas odtwarzania\n" +" wyłącznie danych\n" + +#: pg_dump.c:854 pg_dumpall.c:552 +#, c-format +msgid "" +" --inserts dump data as INSERT commands, rather than " +"COPY\n" +msgstr "" +" --inserts zrzuca dane jako polecenia INSERT zamiast " +"COPY\n" + +#: pg_dump.c:855 pg_dumpall.c:553 +#, c-format +msgid " --no-security-labels do not dump security label assignments\n" +msgstr "" +" --no-security-labels nie zrzuca przypisań etykiet bezpieczeństwa\n" + +#: pg_dump.c:856 pg_dumpall.c:554 +#, c-format +msgid " --no-tablespaces do not dump tablespace assignments\n" +msgstr "" +" --no-tablespaces nie zrzuca przypisań do przestrzeni tabel\n" + +#: pg_dump.c:857 pg_dumpall.c:555 +#, c-format +msgid " --no-unlogged-table-data do not dump unlogged table data\n" +msgstr "" +" --no-unlogged-table-data nie zrzuca niezalogowanych danych tabeli\n" + +#: pg_dump.c:858 pg_dumpall.c:556 +#, c-format +msgid "" +" --quote-all-identifiers quote all identifiers, even if not key words\n" +msgstr "" +" --quote-all-identifiers cytuje wszystkie identyfikatory, jeśli tylko\n" +" nie są to słowa kluczowe\n" + +#: pg_dump.c:859 +#, c-format +msgid "" +" --serializable-deferrable wait until the dump can run without anomalies\n" +msgstr "" +" --serializable-deferrable czeka póki zrzut wykonuje się \n" +" bez nieprawidłowości\n" + +#: pg_dump.c:860 pg_dumpall.c:557 +#, c-format +msgid "" +" --use-set-session-authorization\n" +" use SET SESSION AUTHORIZATION commands instead " +"of\n" +" ALTER OWNER commands to set ownership\n" +msgstr "" +" --use-set-session-authorization\n" +" używa poleceń SET SESSION AUTHORIZATION " +"zamiast\n" +" poleceń ALTER OWNER by ustawić właściciela\n" + +#: pg_dump.c:864 pg_restore.c:439 pg_dumpall.c:561 +#, c-format +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Opcje połączenia:\n" + +#: pg_dump.c:865 pg_restore.c:440 pg_dumpall.c:562 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory\n" +msgstr "" +" -h, --host=NAZWAHOSTA host serwera bazy danych lub katalog gniazda\n" + +#: pg_dump.c:866 pg_restore.c:441 pg_dumpall.c:564 +#, c-format +msgid " -p, --port=PORT database server port number\n" +msgstr " -p, --port=PORT numer portu na serwera bazy dnaych\n" + +#: pg_dump.c:867 pg_restore.c:442 pg_dumpall.c:565 +#, c-format +msgid " -U, --username=NAME connect as specified database user\n" +msgstr " -U, --username=NAZWA połączenie jako wskazany użytkownik bazy\n" + +#: pg_dump.c:868 pg_restore.c:443 pg_dumpall.c:566 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password nie pytaj nigdy o hasło\n" + +#: pg_dump.c:869 pg_restore.c:444 pg_dumpall.c:567 +#, c-format +msgid "" +" -W, --password force password prompt (should happen " +"automatically)\n" +msgstr "" +" -W, --password wymuś pytanie o hasło (powinno nastąpić " +"automatycznie)\n" + +#: pg_dump.c:870 pg_dumpall.c:568 +#, c-format +msgid " --role=ROLENAME do SET ROLE before dump\n" +msgstr " --role=NAZWAROLI wykonuje SET ROLE przed odtworzeniem\n" + +#: pg_dump.c:872 +#, c-format +msgid "" +"\n" +"If no database name is supplied, then the PGDATABASE environment\n" +"variable value is used.\n" +"\n" +msgstr "" +"\n" +"Jeśli nie dostarczono nazwy bazy danych, używana jest zmienna\n" +"środowiskowa PGDATABASE.\n" +"\n" + +#: pg_dump.c:874 pg_restore.c:448 pg_dumpall.c:572 +#, c-format +msgid "Report bugs to .\n" +msgstr "Błędy proszę przesyłać na adres .\n" + +#: pg_dump.c:882 pg_backup_archiver.c:1458 +msgid "*** aborted because of error\n" +msgstr "*** przerwano z powodu błędu\n" + +#: pg_dump.c:924 +#, c-format +msgid "invalid output format \"%s\" specified\n" +msgstr "wskazano niepoprawny format wyjścia \"%s\"\n" + +#: pg_dump.c:947 +msgid "server version must be at least 7.3 to use schema selection switches\n" +msgstr "" +"serwer musi być w wersji co najmniej 7.3 by użyć przełączników wyboru " +"schematu\n" + +#: pg_dump.c:1205 +#, c-format +msgid "dumping contents of table %s\n" +msgstr "zrzut zawartości tabeli \"%s\"\n" + +#: pg_dump.c:1325 +#, c-format +msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" +msgstr "" +"Nie powiódł się zrzut zawartości tabeli \"%s\": niepowodzenie PQgetCopyData" +"().\n" + +#: pg_dump.c:1326 pg_dump.c:14133 +#, c-format +msgid "Error message from server: %s" +msgstr "Komunikat błędu z serwera: %s" + +#: pg_dump.c:1327 pg_dump.c:14134 +#, c-format +msgid "The command was: %s\n" +msgstr "Treść polecenia: %s\n" + +#: pg_dump.c:1750 +msgid "saving database definition\n" +msgstr "zapis definicji bazy danych\n" + +#: pg_dump.c:1832 +#, c-format +msgid "missing pg_database entry for database \"%s\"\n" +msgstr "brak wpisu pg_database dla bazy danych \"%s\"\n" + +#: pg_dump.c:1839 +#, c-format +msgid "" +"query returned more than one (%d) pg_database entry for database \"%s\"\n" +msgstr "zapytanie zwróciło więcej niż jeden (%d) wpis dla bazy danych \"%s\"\n" + +#: pg_dump.c:1943 +msgid "dumpDatabase(): could not find pg_largeobject.relfrozenxid\n" +msgstr "dumpDatabase(): nie odnaleziono pg_largeobject.relfrozenxid\n" + +#: pg_dump.c:1982 +msgid "dumpDatabase(): could not find pg_largeobject_metadata.relfrozenxid\n" +msgstr "dumpDatabase(): nie odnaleziono pg_largeobject_metadata.relfrozenxid\n" + +#: pg_dump.c:2061 +#, c-format +msgid "saving encoding = %s\n" +msgstr "zapis kodowania = %s\n" + +#: pg_dump.c:2088 +#, c-format +msgid "saving standard_conforming_strings = %s\n" +msgstr "zapis standard_conforming_strings = %s\n" + +#: pg_dump.c:2121 +msgid "reading large objects\n" +msgstr "odczyt dużych obiektów\n" + +#: pg_dump.c:2253 +msgid "saving large objects\n" +msgstr "zapis dużych obiektów\n" + +#: pg_dump.c:2295 pg_backup_archiver.c:984 +#, c-format +msgid "could not open large object %u: %s" +msgstr "nie można otworzyć dużego obiektu %u: %s" + +#: pg_dump.c:2308 +#, c-format +msgid "error reading large object %u: %s" +msgstr "błąd odczytu dużego obiektu %u: %s" + +#: pg_dump.c:2355 pg_dump.c:2403 pg_dump.c:2458 pg_dump.c:7589 pg_dump.c:7820 +#: pg_dump.c:8786 pg_dump.c:9338 pg_dump.c:9592 pg_dump.c:9706 pg_dump.c:10162 +#: pg_dump.c:10348 pg_dump.c:10454 pg_dump.c:10654 pg_dump.c:10896 +#: pg_dump.c:11063 pg_dump.c:11284 pg_dump.c:13939 +#, c-format +msgid "query returned %d row instead of one: %s\n" +msgid_plural "query returned %d rows instead of one: %s\n" +msgstr[0] "zapytanie zwróciło %d wiersz zamiast: %s\n" +msgstr[1] "zapytanie zwróciło %d wiersze zamiast: %s\n" +msgstr[2] "zapytanie zwróciło %d wierszy zamiast: %s\n" + +#: pg_dump.c:2539 +#, c-format +msgid "could not find parent extension for %s" +msgstr "nie można odnaleźć rozszerzenia nadrzędnego dla %s" + +#: pg_dump.c:2646 +#, c-format +msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" +msgstr "OSTRZEŻENIE: właściciel schematu \"%s\" wydaje się być niepoprawny\n" + +#: pg_dump.c:2681 +#, c-format +msgid "schema with OID %u does not exist\n" +msgstr "schemat z OID %u nie istnieje\n" + +#: pg_dump.c:3022 +#, c-format +msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" +msgstr "" +"OSTRZEŻENIE: właściciel typu danych \"%s\" wydaje się być niepoprawny\n" + +#: pg_dump.c:3126 +#, c-format +msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" +msgstr "OSTRZEŻENIE: właściciel operatora \"%s\" wydaje się być niepoprawny\n" + +#: pg_dump.c:3378 +#, c-format +msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" +msgstr "" +"OSTRZEŻENIE: właściciel klasy operatora \"%s\" wydaje się być niepoprawny\n" + +#: pg_dump.c:3465 +#, c-format +msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" +msgstr "" +"OSTRZEŻENIE: właściciel rodziny operatora \"%s\" wydaje się być niepoprawny\n" + +#: pg_dump.c:3602 +#, c-format +msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" +msgstr "" +"OSTRZEŻENIE: właściciel funkcji agregującej \"%s\" wydaje się być " +"niepoprawny\n" + +#: pg_dump.c:3772 +#, c-format +msgid "WARNING: owner of function \"%s\" appears to be invalid\n" +msgstr "OSTRZEŻENIE: właściciel funkcji \"%s\" wydaje się być niepoprawny\n" + +#: pg_dump.c:4272 +#, c-format +msgid "WARNING: owner of table \"%s\" appears to be invalid\n" +msgstr "OSTRZEŻENIE: właściciel tabeli \"%s\" wydaje się być niepoprawny\n" + +#: pg_dump.c:4415 +#, c-format +msgid "reading indexes for table \"%s\"\n" +msgstr "odczyt indeksów dla tabeli \"%s\"\n" + +#: pg_dump.c:4735 +#, c-format +msgid "reading foreign key constraints for table \"%s\"\n" +msgstr "odczyt ograniczeń kluczy obcych dla tabeli \"%s\"\n" + +#: pg_dump.c:4967 +#, c-format +msgid "" +"failed sanity check, parent table OID %u of pg_rewrite entry OID %u not " +"found\n" +msgstr "" +"sprawdzenia nie powiodły się, nie odnaleziono tabeli nadrzędnej o OID %u dla " +"wpisu pg_rewrite o OID %u\n" + +#: pg_dump.c:5051 +#, c-format +msgid "reading triggers for table \"%s\"\n" +msgstr "odczyt wyzwalaczy dla tabeli \"%s\"\n" + +#: pg_dump.c:5214 +#, c-format +msgid "" +"query produced null referenced table name for foreign key trigger \"%s\" on " +"table \"%s\" (OID of table: %u)\n" +msgstr "" +"zapytanie dało w wyniku puste wskazanie nazwy tabeli dla wyzwalacza klucza " +"obcego \"%s\" dla tabeli \"%s\" (UID tabeli: %u)\n" + +#: pg_dump.c:5585 +#, c-format +msgid "finding the columns and types of table \"%s\"\n" +msgstr "wyszukiwanie kolumn i typów dla tabeli \"%s\"\n" + +#: pg_dump.c:5730 +#, c-format +msgid "invalid column numbering in table \"%s\"\n" +msgstr "niepoprawna numeracja kolumn dla tabeli \"%s\"\n" + +#: pg_dump.c:5767 +#, c-format +msgid "finding default expressions of table \"%s\"\n" +msgstr "wyszukiwanie wyrażeń domyślnych dla tabeli \"%s\"\n" + +#: pg_dump.c:5852 +#, c-format +msgid "invalid adnum value %d for table \"%s\"\n" +msgstr "niepoprawna wartość adnum %d dla tabeli \"%s\"\n" + +#: pg_dump.c:5870 +#, c-format +msgid "finding check constraints for table \"%s\"\n" +msgstr "odczyt ograniczeń sprawdzających dla tabeli \"%s\"\n" + +#: pg_dump.c:5950 +#, c-format +msgid "expected %d check constraint on table \"%s\" but found %d\n" +msgid_plural "expected %d check constraints on table \"%s\" but found %d\n" +msgstr[0] "" +"oczekiwano %d-go ograniczenia sprawdzające na tabeli \"%s\" ale znaleziono " +"%d\n" +msgstr[1] "" +"oczekiwano %d-ch ograniczeń sprawdzających na tabeli \"%s\" ale znaleziono " +"%d\n" +msgstr[2] "" +"oczekiwano %d ograniczeń sprawdzających na tabeli \"%s\" ale znaleziono %d\n" + +#: pg_dump.c:5954 +msgid "(The system catalogs might be corrupted.)\n" +msgstr "(Foldery systemowe mogą być uszkodzone.)\n" + +#: pg_dump.c:8552 +msgid "WARNING: bogus value in proargmodes array\n" +msgstr "OSTRZEŻENIE: błędna wartość w tablicy proargmodes\n" + +#: pg_dump.c:8866 +msgid "WARNING: could not parse proallargtypes array\n" +msgstr "OSTRZEŻENIE: nie można przeanalizować tablicy proallargtypes\n" + +#: pg_dump.c:8882 +msgid "WARNING: could not parse proargmodes array\n" +msgstr "OSTRZEŻENIE: nie można przeanalizować tablicy proargmodes\n" + +#: pg_dump.c:8896 +msgid "WARNING: could not parse proargnames array\n" +msgstr "OSTRZEŻENIE: nie można przeanalizować tablicy proargnames\n" + +#: pg_dump.c:8907 +msgid "WARNING: could not parse proconfig array\n" +msgstr "OSTRZEŻENIE: nie można przeanalizować tablicy proconfig\n" + +#: pg_dump.c:8963 +#, c-format +msgid "unrecognized provolatile value for function \"%s\"\n" +msgstr "nierozpoznana wartość provolatile dla funkcji \"%s\"\n" + +#: pg_dump.c:9179 +msgid "WARNING: bogus value in pg_cast.castmethod field\n" +msgstr "OSTRZEŻENIE: błędna wartość pola pg_cast.castmethod\n" + +#: pg_dump.c:9561 +#, c-format +msgid "WARNING: could not find operator with OID %s\n" +msgstr "OSTRZEŻENIE: nie udało się odnaleźć operatora o OID %s\n" + +#: pg_dump.c:10680 +#, c-format +msgid "" +"WARNING: aggregate function %s could not be dumped correctly for this " +"database version; ignored\n" +msgstr "" +"OSTRZEŻENIE: funkcja agregująca %s nie może być poprawnie zrzucona dla tej " +"wersji bazy danych; zignorowano\n" + +#: pg_dump.c:11480 +#, c-format +msgid "unknown object type (%d) in default privileges\n" +msgstr "nieznany typ obiektu (%d) w przywilejach domyślnych\n" + +#: pg_dump.c:11497 +#, c-format +msgid "could not parse default ACL list (%s)\n" +msgstr "nie można przetworzyć domyślnej listy ACL (%s)\n" + +#: pg_dump.c:11554 +#, c-format +msgid "could not parse ACL list (%s) for object \"%s\" (%s)\n" +msgstr "nie udało się przetworzyć listy ACL (%s) dla obiektu \"%s\" (%s)\n" + +#: pg_dump.c:11994 +#, c-format +msgid "query to obtain definition of view \"%s\" returned no data\n" +msgstr "zapytanie o definicję widoku \"%s\" nie zwróciło danych\n" + +#: pg_dump.c:11997 +#, c-format +msgid "" +"query to obtain definition of view \"%s\" returned more than one definition\n" +msgstr "" +"zapytanie o definicję widoku \"%s\" nie zwróciło więcej niż jedna definicję\n" + +#: pg_dump.c:12006 +#, c-format +msgid "definition of view \"%s\" appears to be empty (length zero)\n" +msgstr "definicja widoku \"%s\" wydaje się pusta (długość zero)\n" + +#: pg_dump.c:12574 +#, c-format +msgid "invalid column number %d for table \"%s\"\n" +msgstr "niepoprawny numer kolumny %d dla tabeli \"%s\"\n" + +#: pg_dump.c:12685 +#, c-format +msgid "missing index for constraint \"%s\"\n" +msgstr "brak indeksu dla ograniczenia \"%s\"\n" + +#: pg_dump.c:12873 +#, c-format +msgid "unrecognized constraint type: %c\n" +msgstr "nierozpoznany typ ograniczenia: %c\n" + +#: pg_dump.c:12936 +msgid "missing pg_database entry for this database\n" +msgstr "brak wejścia pg_database dla bieżącej bazy danych\n" + +#: pg_dump.c:12941 +msgid "found more than one pg_database entry for this database\n" +msgstr "znaleziono ponad jeden wpis pg_database dla bieżącej bazy danych\n" + +#: pg_dump.c:12973 +msgid "could not find entry for pg_indexes in pg_class\n" +msgstr "nie odnaleziono wpisu dla pg_indexes w pg_class\n" + +#: pg_dump.c:12978 +msgid "found more than one entry for pg_indexes in pg_class\n" +msgstr "odnaleziono ponad jeden wpis dla pg_indexes w pg_class\n" + +#: pg_dump.c:13050 +#, c-format +msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" +msgid_plural "" +"query to get data of sequence \"%s\" returned %d rows (expected 1)\n" +msgstr[0] "" +"zapytanie o dane sekwencji \"%s\" zwróciło %d wiersz (oczekiwano 1)\n" +msgstr[1] "" +"zapytanie o dane sekwencji \"%s\" zwróciło %d wiersze (oczekiwano 1)\n" +msgstr[2] "" +"zapytanie o dane sekwencji \"%s\" zwróciło %d wierszy (oczekiwano 1)\n" + +#: pg_dump.c:13061 +#, c-format +msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" +msgstr "pytanie o dane sekwencji \"%s\" zwróciło nazwę \"%s\"\n" + +#: pg_dump.c:13289 +#, c-format +msgid "unexpected tgtype value: %d\n" +msgstr "nieoczekiwana wartość tgtype: %d\n" + +#: pg_dump.c:13371 +#, c-format +msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" +msgstr "niepoprawny ciąg argumentu (%s) dla wyzwalacza \"%s\" tabeli \"%s\"\n" + +#: pg_dump.c:13489 +#, c-format +msgid "" +"query to get rule \"%s\" for table \"%s\" failed: wrong number of rows " +"returned\n" +msgstr "" +"zapytanie o regułę \"%s\" dla tabeli \"%s\" nie powiodło się: zwróciło złą " +"liczbę wierszy\n" + +#: pg_dump.c:13746 +msgid "reading dependency data\n" +msgstr "odczyt informacji o zależnościach\n" + +#: pg_dump.c:14128 +msgid "SQL command failed\n" +msgstr "polecenie SQL nie powiodło się\n" + +#: common.c:105 +msgid "reading schemas\n" +msgstr "odczyt schematów\n" + +#: common.c:115 +msgid "reading user-defined tables\n" +msgstr "odczyt tabel użytkownika\n" + +#: common.c:120 +msgid "reading extensions\n" +msgstr "odczyt rozszerzeń\n" + +#: common.c:124 +msgid "reading user-defined functions\n" +msgstr "odczyt funkcji użytkownika\n" + +#: common.c:130 +msgid "reading user-defined types\n" +msgstr "odczyt typów użytkownika\n" + +#: common.c:136 +msgid "reading procedural languages\n" +msgstr "odczyt języków proceduralnych\n" + +#: common.c:140 +msgid "reading user-defined aggregate functions\n" +msgstr "odczyt funkcji agregujących użytkownika\n" + +#: common.c:144 +msgid "reading user-defined operators\n" +msgstr "odczyt operatorów użytkownika\n" + +#: common.c:149 +msgid "reading user-defined operator classes\n" +msgstr "odczyt klas operatorów użytkownika\n" + +#: common.c:153 +msgid "reading user-defined operator families\n" +msgstr "odczyt rodzin operatorów użytkownika\n" + +#: common.c:157 +msgid "reading user-defined text search parsers\n" +msgstr "odczyt analizatorów wyszukiwania tekstowego użytkownika\n" + +#: common.c:161 +msgid "reading user-defined text search templates\n" +msgstr "odczyt szablonów wyszukiwania tekstowego użytkownika\n" + +#: common.c:165 +msgid "reading user-defined text search dictionaries\n" +msgstr "odczyt słowników wyszukiwania tekstowego użytkownika\n" + +#: common.c:169 +msgid "reading user-defined text search configurations\n" +msgstr "odczyt konfiguracji wyszukiwania tekstowego użytkownika\n" + +#: common.c:173 +msgid "reading user-defined foreign-data wrappers\n" +msgstr "odczyt opakowań obcych danych użytkownika\n" + +#: common.c:177 +msgid "reading user-defined foreign servers\n" +msgstr "odczyt serwerów obcych użytkownika\n" + +#: common.c:181 +msgid "reading default privileges\n" +msgstr "odczyt uprawnień domyślnych\n" + +#: common.c:185 +msgid "reading user-defined collations\n" +msgstr "odczyt porównań użytkownika\n" + +#: common.c:190 +msgid "reading user-defined conversions\n" +msgstr "odczyt konwersji użytkownika\n" + +#: common.c:194 +msgid "reading type casts\n" +msgstr "odczyt rzutowań typów\n" + +#: common.c:198 +msgid "reading table inheritance information\n" +msgstr "odczyt informacji o dziedziczeniu tabel\n" + +#: common.c:202 +msgid "reading rewrite rules\n" +msgstr "odczyt reguł przepisywania\n" + +#: common.c:211 +msgid "finding extension members\n" +msgstr "odnajdywanie składników rozszerzeń\n" + +#: common.c:216 +msgid "finding inheritance relationships\n" +msgstr "odnajdywanie relacji dziedziczenia\n" + +#: common.c:220 +msgid "reading column info for interesting tables\n" +msgstr "odczyt notatek kolumn dla ciekawych tabel\n" + +#: common.c:224 +msgid "flagging inherited columns in subtables\n" +msgstr "oznaczanie dziedziczonych kolumn w podtabelach\n" + +#: common.c:228 +msgid "reading indexes\n" +msgstr "odczyt indeksów\n" + +#: common.c:232 +msgid "reading constraints\n" +msgstr "odczyt ograniczeń\n" + +#: common.c:236 +msgid "reading triggers\n" +msgstr "odczyt wyzwalaczy\n" + +#: common.c:828 +#, c-format +msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n" +msgstr "" +"sprawdzenia nie powiodły się, nie odnaleziono nadrzędnego OID %u dla tabeli " +"\"%s\" (OID %u)\n" + +#: common.c:870 +#, c-format +msgid "could not parse numeric array \"%s\": too many numbers\n" +msgstr "nie można przetworzyć tablicy numerycznej \"%s\": zbyt wiele liczb\n" + +#: common.c:885 +#, c-format +msgid "could not parse numeric array \"%s\": invalid character in number\n" +msgstr "" +"nie można przetworzyć tablicy numerycznej \"%s\": niepoprawny znak w " +"liczbie\n" + +#: common.c:998 +msgid "cannot duplicate null pointer\n" +msgstr "nie można powielić pustego wskaźnika\n" + +#: common.c:1001 common.c:1012 common.c:1023 common.c:1034 +#: pg_backup_archiver.c:764 pg_backup_archiver.c:1160 +#: pg_backup_archiver.c:1291 pg_backup_archiver.c:1761 +#: pg_backup_archiver.c:1955 pg_backup_archiver.c:2001 +#: pg_backup_archiver.c:4209 pg_backup_custom.c:132 pg_backup_custom.c:139 +#: pg_backup_custom.c:780 pg_backup_custom.c:907 pg_backup_db.c:147 +#: pg_backup_db.c:157 pg_backup_db.c:205 pg_backup_db.c:249 pg_backup_db.c:264 +#: pg_backup_db.c:298 pg_backup_db.c:403 pg_backup_files.c:114 +#: pg_backup_null.c:72 pg_backup_tar.c:171 pg_backup_tar.c:1015 +msgid "out of memory\n" +msgstr "brak pamięci\n" + +#: pg_backup_archiver.c:88 +msgid "archiver" +msgstr "archiwizator" + +#: pg_backup_archiver.c:207 pg_backup_archiver.c:1259 +#, c-format +msgid "could not close output file: %s\n" +msgstr "nie można zamknąć pliku wyjścia: %s\n" + +#: pg_backup_archiver.c:233 +msgid "-C and -c are incompatible options\n" +msgstr "-C i -c są opcjami niekompatybilnymi\n" + +#: pg_backup_archiver.c:240 +msgid "-C and -1 are incompatible options\n" +msgstr "-C i -1 są opcjami niekompatybilnymi\n" + +#: pg_backup_archiver.c:250 +msgid "parallel restore is not supported with this archive file format\n" +msgstr "odtwarzanie współbieżne nie jest obsługiwane w tym formacie archiwum\n" + +#: pg_backup_archiver.c:254 +msgid "" +"parallel restore is not supported with archives made by pre-8.0 pg_dump\n" +msgstr "" +"odtwarzanie współbieżne nie jest obsługiwane w archiwach utworzonych przez " +"pg_dump sprzed 8.0\n" + +#: pg_backup_archiver.c:273 +msgid "" +"cannot restore from compressed archive (compression not supported in this " +"installation)\n" +msgstr "" +"nie można odtworzyć ze spakowanego archiwum (kompresja nie jest obsługiwana " +"w tej instalacji)\n" + +#: pg_backup_archiver.c:283 +msgid "connecting to database for restore\n" +msgstr "łączenie z bazą danych w celu odtworzenia\n" + +#: pg_backup_archiver.c:285 +msgid "direct database connections are not supported in pre-1.3 archives\n" +msgstr "" +"bezpośrednie połączenia bazy danych nie są obsługiwane w archiwach sprzed " +"1.3\n" + +#: pg_backup_archiver.c:327 +msgid "implied data-only restore\n" +msgstr "domniemane przywrócenie wyłącznie danych\n" + +#: pg_backup_archiver.c:379 +#, c-format +msgid "dropping %s %s\n" +msgstr "kasowanie %s %s\n" + +#: pg_backup_archiver.c:431 +#, c-format +msgid "setting owner and privileges for %s %s\n" +msgstr "ustawienie właściciela i uprawnień dla %s %s\n" + +#: pg_backup_archiver.c:489 pg_backup_archiver.c:491 +#, c-format +msgid "warning from original dump file: %s\n" +msgstr "ostrzeżenie z oryginalnego pliku zrzutu: %s\n" + +#: pg_backup_archiver.c:498 +#, c-format +msgid "creating %s %s\n" +msgstr "tworzenie %s %s\n" + +#: pg_backup_archiver.c:542 +#, c-format +msgid "connecting to new database \"%s\"\n" +msgstr "łączenie do nowej bazy danych \"%s\"\n" + +#: pg_backup_archiver.c:570 +#, c-format +msgid "restoring %s\n" +msgstr "odtwarzanie %s\n" + +#: pg_backup_archiver.c:584 +#, c-format +msgid "restoring data for table \"%s\"\n" +msgstr "odtwarzanie danych tabeli \"%s\"\n" + +#: pg_backup_archiver.c:646 +#, c-format +msgid "executing %s %s\n" +msgstr "wykonywanie %s %s\n" + +#: pg_backup_archiver.c:679 +#, c-format +msgid "disabling triggers for %s\n" +msgstr "wyłączanie wyzwalaczy dla %s\n" + +#: pg_backup_archiver.c:705 +#, c-format +msgid "enabling triggers for %s\n" +msgstr "włączanie wyzwalaczy dla: %s\n" + +#: pg_backup_archiver.c:735 +msgid "" +"internal error -- WriteData cannot be called outside the context of a " +"DataDumper routine\n" +msgstr "" +"błąd wewnętrzny -- WriteData nie może być wywołana poza kontekstem procedury " +"DataDumper\n" + +#: pg_backup_archiver.c:892 +msgid "large-object output not supported in chosen format\n" +msgstr "wyjście dużych obiektów nie jest obsługiwane w wybranym formacie\n" + +#: pg_backup_archiver.c:946 +#, c-format +msgid "restored %d large object\n" +msgid_plural "restored %d large objects\n" +msgstr[0] "odtworzono %d duży obiekt\n" +msgstr[1] "odtworzono %d duże obiekty\n" +msgstr[2] "odtworzono %d dużych obiektów\n" + +#: pg_backup_archiver.c:967 +#, c-format +msgid "restoring large object with OID %u\n" +msgstr "odtwarzanie dużego obiektu z OID %u\n" + +#: pg_backup_archiver.c:979 +#, c-format +msgid "could not create large object %u: %s" +msgstr "nie można utworzyć dużego obiektu %u: %s" + +#: pg_backup_archiver.c:1041 +#, c-format +msgid "could not open TOC file \"%s\": %s\n" +msgstr "nie można otworzyć pliku TOC \"%s\": %s\n" + +#: pg_backup_archiver.c:1082 +#, c-format +msgid "WARNING: line ignored: %s\n" +msgstr "OSTRZEŻENIE: zignorowano linię: %s\n" + +#: pg_backup_archiver.c:1089 +#, c-format +msgid "could not find entry for ID %d\n" +msgstr "nie znaleziono wpisu dla ID %d\n" + +#: pg_backup_archiver.c:1110 pg_backup_files.c:172 pg_backup_files.c:457 +#, c-format +msgid "could not close TOC file: %s\n" +msgstr "nie można zamknąć pliku TOC: %s\n" + +#: pg_backup_archiver.c:1229 pg_backup_custom.c:152 pg_backup_files.c:130 +#: pg_backup_files.c:262 +#, c-format +msgid "could not open output file \"%s\": %s\n" +msgstr "nie można otworzyć pliku wyjścia \"%s\": %s\n" + +#: pg_backup_archiver.c:1232 pg_backup_custom.c:159 pg_backup_files.c:137 +#, c-format +msgid "could not open output file: %s\n" +msgstr "nie można otworzyć pliku wyjścia %s\n" + +#: pg_backup_archiver.c:1334 +#, c-format +msgid "wrote %lu byte of large object data (result = %lu)\n" +msgid_plural "wrote %lu bytes of large object data (result = %lu)\n" +msgstr[0] "zapisano %lu bajt danych dużego obiektu (wynik = %lu)\n" +msgstr[1] "zapisano %lu bajty danych dużego obiektu (wynik = %lu)\n" +msgstr[2] "zapisano %lu bajtów danych dużego obiektu (wynik = %lu)\n" + +#: pg_backup_archiver.c:1340 +#, c-format +msgid "could not write to large object (result: %lu, expected: %lu)\n" +msgstr "nie udało się zapisać dużego obiektu (wynik: %lu, oczekiwano: %lu)\n" + +#: pg_backup_archiver.c:1398 pg_backup_archiver.c:1421 pg_backup_custom.c:652 +#: pg_backup_files.c:432 pg_backup_tar.c:590 pg_backup_tar.c:1093 +#: pg_backup_tar.c:1386 +#, c-format +msgid "could not write to output file: %s\n" +msgstr "nie można pisać do pliku wyjścia: %s\n" + +#: pg_backup_archiver.c:1406 +msgid "could not write to custom output routine\n" +msgstr "nie można pisać do procedury wyjścia użytkownika\n" + +#: pg_backup_archiver.c:1504 +msgid "Error while INITIALIZING:\n" +msgstr "Błąd podczas INICJACJI:\n" + +#: pg_backup_archiver.c:1509 +msgid "Error while PROCESSING TOC:\n" +msgstr "Błąd podczas PRZETWARZANIA TOC:\n" + +#: pg_backup_archiver.c:1514 +msgid "Error while FINALIZING:\n" +msgstr "Błąd podczas ZAKAŃCZANIA:\n" + +#: pg_backup_archiver.c:1519 +#, c-format +msgid "Error from TOC entry %d; %u %u %s %s %s\n" +msgstr "Błąd z wpisu %d TOC; %u %u %s %s %s\n" + +#: pg_backup_archiver.c:1654 +#, c-format +msgid "unexpected data offset flag %d\n" +msgstr "nieoczekiwana dana flagi przesunięcia %d\n" + +#: pg_backup_archiver.c:1667 +msgid "file offset in dump file is too large\n" +msgstr "przesunięcie pliku w pliku zrzutu jest zbyt duże\n" + +#: pg_backup_archiver.c:1764 pg_backup_archiver.c:3113 pg_backup_custom.c:630 +#: pg_backup_files.c:419 pg_backup_tar.c:789 +msgid "unexpected end of file\n" +msgstr "nieoczekiwany koniec pliku\n" + +#: pg_backup_archiver.c:1781 +msgid "attempting to ascertain archive format\n" +msgstr "próba ustalenia formatu archiwum\n" + +#: pg_backup_archiver.c:1807 pg_backup_archiver.c:1817 +#, c-format +msgid "directory name too long: \"%s\"\n" +msgstr "zbyt długa nazwa pliku: \"%s\"\n" + +#: pg_backup_archiver.c:1825 +#, c-format +msgid "" +"directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not " +"exist)\n" +msgstr "" +"folder \"%s\" nie wydaje się być poprawnym archiwum (\"toc.dat\" nie " +"istnieje)\n" + +#: pg_backup_archiver.c:1833 pg_backup_custom.c:171 pg_backup_custom.c:762 +#: pg_backup_files.c:155 pg_backup_files.c:307 +#, c-format +msgid "could not open input file \"%s\": %s\n" +msgstr "nie można otworzyć pliku wejścia \"%s\": %s\n" + +#: pg_backup_archiver.c:1841 pg_backup_custom.c:178 pg_backup_files.c:162 +#, c-format +msgid "could not open input file: %s\n" +msgstr "nie można otworzyć pliku wyjścia %s\n" + +#: pg_backup_archiver.c:1850 +#, c-format +msgid "could not read input file: %s\n" +msgstr "nie można odczytać pliku wejścia %s\n" + +#: pg_backup_archiver.c:1852 +#, c-format +msgid "input file is too short (read %lu, expected 5)\n" +msgstr "plik wejścia jest zbyt krótki (odczytano %lu, oczekiwano 5)\n" + +#: pg_backup_archiver.c:1910 +msgid "input file does not appear to be a valid archive (too short?)\n" +msgstr "plik wejścia nie wydaje się być poprawnym archiwum (zbyt krótki?)\n" + +#: pg_backup_archiver.c:1913 +msgid "input file does not appear to be a valid archive\n" +msgstr "plik wejścia nie wydaje się być poprawnym archiwum\n" + +#: pg_backup_archiver.c:1933 +#, c-format +msgid "could not close input file: %s\n" +msgstr "nie można zamknąć pliku wejścia: %s\n" + +#: pg_backup_archiver.c:1950 +#, c-format +msgid "allocating AH for %s, format %d\n" +msgstr "przydzielenie AH da %s, format %d\n" + +#: pg_backup_archiver.c:2059 +#, c-format +msgid "unrecognized file format \"%d\"\n" +msgstr "nierozpoznany format pliku \"%d\"\n" + +#: pg_backup_archiver.c:2181 +#, c-format +msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" +msgstr "wpis ID %d poza zasięgiem -- być może uszkodzony TOC\n" + +#: pg_backup_archiver.c:2297 +#, c-format +msgid "read TOC entry %d (ID %d) for %s %s\n" +msgstr "odczyt wpisu TOC %d (ID %d) dla %s %s\n" + +#: pg_backup_archiver.c:2331 +#, c-format +msgid "unrecognized encoding \"%s\"\n" +msgstr "niezrozumiały kodowanie \"%s\"\n" + +#: pg_backup_archiver.c:2336 +#, c-format +msgid "invalid ENCODING item: %s\n" +msgstr "niepoprawny element ENCODING: %s\n" + +#: pg_backup_archiver.c:2354 +#, c-format +msgid "invalid STDSTRINGS item: %s\n" +msgstr "niepoprawny element STDSTRINGS: %s\n" + +#: pg_backup_archiver.c:2552 +#, c-format +msgid "could not set session user to \"%s\": %s" +msgstr "nie można ustalić użytkownika sesji na \"%s\": %s" + +#: pg_backup_archiver.c:2892 pg_backup_archiver.c:3044 +#, c-format +msgid "WARNING: don't know how to set owner for object type %s\n" +msgstr "OSTRZEŻENIE: nie wiadomo jak ustalić właściciela dla typu obiektu %s\n" + +#: pg_backup_archiver.c:3076 +msgid "" +"WARNING: requested compression not available in this installation -- archive " +"will be uncompressed\n" +msgstr "" +"OSTRZEŻENIE: żądana kompresja jest niedostępna w tej instalacji -- archiwum " +"nie będzie spakowane\n" + +#: pg_backup_archiver.c:3116 +msgid "did not find magic string in file header\n" +msgstr "nie znaleziono magicznego zdania w nagłówku pliku\n" + +#: pg_backup_archiver.c:3129 +#, c-format +msgid "unsupported version (%d.%d) in file header\n" +msgstr "nieobsługiwana wersja (%d.%d) w nagłówku pliku\n" + +#: pg_backup_archiver.c:3134 +#, c-format +msgid "sanity check on integer size (%lu) failed\n" +msgstr "nie powiodło się sprawdzenie na rozmiarze liczby całkowitej (%lu)\n" + +#: pg_backup_archiver.c:3138 +msgid "" +"WARNING: archive was made on a machine with larger integers, some operations " +"might fail\n" +msgstr "" +"OSTRZEŻENIE: archiwum zostało utworzone na komputerze o dłuższych liczbach " +"całkowitych, niektóre operacje mogą się nie udać\n" + +#: pg_backup_archiver.c:3148 +#, c-format +msgid "expected format (%d) differs from format found in file (%d)\n" +msgstr "" +"oczekiwany format (%d) różni się od formatu znalezionego w pliku (%d)\n" + +#: pg_backup_archiver.c:3164 +msgid "" +"WARNING: archive is compressed, but this installation does not support " +"compression -- no data will be available\n" +msgstr "" +"OSTRZEŻENIE: archiwum jest spakowane, ale ta instalacja nie obsługuje " +"kompresji -- dane nie będą dostępne\n" + +#: pg_backup_archiver.c:3182 +msgid "WARNING: invalid creation date in header\n" +msgstr "OSTRZEŻENIE: niepoprawna data utworzenia w nagłówku\n" + +#: pg_backup_archiver.c:3280 +msgid "entering restore_toc_entries_parallel\n" +msgstr "wprowadzanie restore_toc_entries_parallel\n" + +#: pg_backup_archiver.c:3321 +#, c-format +msgid "processing item %d %s %s\n" +msgstr "przetwarzanie elementu %d %s %s\n" + +#: pg_backup_archiver.c:3397 +msgid "entering main parallel loop\n" +msgstr "wejście w główną pętlę współbieżności\n" + +#: pg_backup_archiver.c:3411 +#, c-format +msgid "skipping item %d %s %s\n" +msgstr "pominięcie elementu %d %s %s\n" + +#: pg_backup_archiver.c:3427 +#, c-format +msgid "launching item %d %s %s\n" +msgstr "uruchomienie elementu %d %s %s\n" + +#: pg_backup_archiver.c:3464 +#, c-format +msgid "worker process crashed: status %d\n" +msgstr "proces roboczy uległ awarii: status %d\n" + +#: pg_backup_archiver.c:3469 +msgid "finished main parallel loop\n" +msgstr "kończenie głównej pętli współbieżności\n" + +#: pg_backup_archiver.c:3487 +#, c-format +msgid "processing missed item %d %s %s\n" +msgstr "przetwarzanie brakującego elementu %d %s %s\n" + +#: pg_backup_archiver.c:3513 +msgid "parallel_restore should not return\n" +msgstr "parallel_restore nie może zwracać wartości\n" + +#: pg_backup_archiver.c:3519 +#, c-format +msgid "could not create worker process: %s\n" +msgstr "nie można utworzyć procesu roboczego: %s\n" + +#: pg_backup_archiver.c:3527 +#, c-format +msgid "could not create worker thread: %s\n" +msgstr "nie można utworzyć wątku roboczego: %s\n" + +#: pg_backup_archiver.c:3751 +msgid "no item ready\n" +msgstr "brak gotowego elementu\n" + +#: pg_backup_archiver.c:3846 +msgid "could not find slot of finished worker\n" +msgstr "nie można znaleźć gniazda zakończonego procesu roboczego\n" + +#: pg_backup_archiver.c:3848 +#, c-format +msgid "finished item %d %s %s\n" +msgstr "ukończono element %d %s %s\n" + +#: pg_backup_archiver.c:3861 +#, c-format +msgid "worker process failed: exit code %d\n" +msgstr "proces roboczy nie powiódł się: kod wyjścia %d\n" + +#: pg_backup_archiver.c:4057 +#, c-format +msgid "transferring dependency %d -> %d to %d\n" +msgstr "przenoszenie zależności %d -> %d do %d\n" + +#: pg_backup_archiver.c:4126 +#, c-format +msgid "reducing dependencies for %d\n" +msgstr "redukcja zależności dla %d\n" + +#: pg_backup_archiver.c:4175 +#, c-format +msgid "table \"%s\" could not be created, will not restore its data\n" +msgstr "" +"tabela \"%s\" nie mogła zostać utworzona, jej dane nie zostaną odtworzone\n" + +#: pg_backup_custom.c:87 +msgid "custom archiver" +msgstr "archiwizer użytkownika" + +#: pg_backup_custom.c:373 pg_backup_null.c:153 +msgid "invalid OID for large object\n" +msgstr "niepoprawny OID dla dużego obiektu\n" + +#: pg_backup_custom.c:444 +#, c-format +msgid "unrecognized data block type (%d) while searching archive\n" +msgstr "nierozpoznany typ bloku danych (%d) podczas przeszukiwania archiwum\n" + +#: pg_backup_custom.c:455 +#, c-format +msgid "error during file seek: %s\n" +msgstr "błąd podczas przeglądania pliku: %s\n" + +#: pg_backup_custom.c:465 +#, c-format +msgid "" +"could not find block ID %d in archive -- possibly due to out-of-order " +"restore request, which cannot be handled due to lack of data offsets in " +"archive\n" +msgstr "" +"nie można znaleźć bloku o ID %d w archiwum -- być może ze względu na żądanie " +"nieuporządkowanego odtwarzania, które nie może być obsłużone przez brak " +"offsetów danych w archiwum\n" + +#: pg_backup_custom.c:470 +#, c-format +msgid "" +"could not find block ID %d in archive -- possibly due to out-of-order " +"restore request, which cannot be handled due to non-seekable input file\n" +msgstr "" +"nie można znaleźć bloku o ID %d w archiwum -- być może ze względu na " +"uszkodzone żądanie odtwarzania, które nie może być obsłużone przez " +"niepozycjonowany plik wejścia\n" + +#: pg_backup_custom.c:475 +#, c-format +msgid "could not find block ID %d in archive -- possibly corrupt archive\n" +msgstr "" +"nie można znaleźć bloku o ID %d w archiwum -- archiwum jest być może " +"uszkodzone\n" + +#: pg_backup_custom.c:482 +#, c-format +msgid "found unexpected block ID (%d) when reading data -- expected %d\n" +msgstr "" +"podczas odczytu danych znaleziono nieoczekiwany blok o ID (%d) -- oczekiwano " +"%d\n" + +#: pg_backup_custom.c:496 +#, c-format +msgid "unrecognized data block type %d while restoring archive\n" +msgstr "nierozpoznany typ bloku danych %d podczas odtwarzania archiwum\n" + +#: pg_backup_custom.c:578 pg_backup_custom.c:916 +msgid "could not read from input file: end of file\n" +msgstr "nie można czytać pliku wejścia: koniec pliku\n" + +#: pg_backup_custom.c:581 pg_backup_custom.c:919 +#, c-format +msgid "could not read from input file: %s\n" +msgstr "nie można czytać z pliku wejścia: %s\n" + +#: pg_backup_custom.c:610 +#, c-format +msgid "could not write byte: %s\n" +msgstr "nie można zapisać bajtu: %s\n" + +#: pg_backup_custom.c:718 pg_backup_custom.c:756 +#, c-format +msgid "could not close archive file: %s\n" +msgstr "nie można zamknąć pliku archiwum: %s\n" + +#: pg_backup_custom.c:737 +msgid "can only reopen input archives\n" +msgstr "można tylko odtworzyć ponownie archiwa wejściowe\n" + +#: pg_backup_custom.c:744 +msgid "parallel restore from stdin is not supported\n" +msgstr "współbieżne odtwarzanie z stdin nie jest obsługiwane\n" + +#: pg_backup_custom.c:746 +msgid "parallel restore from non-seekable file is not supported\n" +msgstr "" +"współbieżne odtwarzanie z nieprzeszukiwalnego pliku nie jest obsługiwane\n" + +#: pg_backup_custom.c:751 +#, c-format +msgid "could not determine seek position in archive file: %s\n" +msgstr "nie można określić pozycji przesunięcia w pliku archiwum: %s\n" + +#: pg_backup_custom.c:766 +#, c-format +msgid "could not set seek position in archive file: %s\n" +msgstr "nie można ustawić pozycji przeszukiwania w pliku archiwum: %s\n" + +#: pg_backup_custom.c:786 +msgid "compressor active\n" +msgstr "aktywny kompresor\n" + +#: pg_backup_custom.c:822 +msgid "WARNING: ftell mismatch with expected position -- ftell used\n" +msgstr "OSTRZEŻENIE: niezgodność ftell z oczekiwaną pozycją -- użyto ftel\n" + +#: pg_backup_db.c:25 +msgid "archiver (db)" +msgstr "archiwizator (db)" + +#: pg_backup_db.c:54 +msgid "could not get server_version from libpq\n" +msgstr "nie można pobrać server_version z libpq\n" + +#: pg_backup_db.c:67 pg_dumpall.c:1741 +#, c-format +msgid "server version: %s; %s version: %s\n" +msgstr "wersja serwera: %s; %s w wersji: %s\n" + +#: pg_backup_db.c:69 pg_dumpall.c:1743 +#, c-format +msgid "aborting because of server version mismatch\n" +msgstr "przerwano z powodu niezgodności wersji serwera\n" + +#: pg_backup_db.c:140 +#, c-format +msgid "connecting to database \"%s\" as user \"%s\"\n" +msgstr "łączenie z bazą danych \"%s\" jako użytkownik \"%s\"\n" + +#: pg_backup_db.c:145 pg_backup_db.c:200 pg_backup_db.c:247 pg_backup_db.c:296 +#: pg_dumpall.c:1637 pg_dumpall.c:1689 +msgid "Password: " +msgstr "Hasło: " + +#: pg_backup_db.c:181 +msgid "failed to reconnect to database\n" +msgstr "nie udało się połączyć ponownie z bazą danych\n" + +#: pg_backup_db.c:186 +#, c-format +msgid "could not reconnect to database: %s" +msgstr "nie można połączyć się ponownie z bazą danych: %s" + +#: pg_backup_db.c:202 +msgid "connection needs password\n" +msgstr "połączenie wymaga hasła\n" + +#: pg_backup_db.c:243 +msgid "already connected to a database\n" +msgstr "już połączono z bazą danych\n" + +#: pg_backup_db.c:288 +msgid "failed to connect to database\n" +msgstr "nie udało się połączyć z bazą danych\n" + +#: pg_backup_db.c:307 +#, c-format +msgid "connection to database \"%s\" failed: %s" +msgstr "połączenie z bazą danych \"%s\" nie powiodło się: %s" + +#: pg_backup_db.c:322 +#, c-format +msgid "%s" +msgstr "%s" + +#: pg_backup_db.c:387 +#, c-format +msgid "error returned by PQputCopyData: %s" +msgstr "błąd zwrócony przez PQputCopyData: %s" + +#: pg_backup_db.c:397 pg_backup_db.c:406 +msgid "could not execute query" +msgstr "nie można wykonać zapytania" + +#: pg_backup_db.c:425 +#, c-format +msgid "error returned by PQputCopyEnd: %s" +msgstr "błąd zwrócony przez PQputCopyEnd: %s" + +#: pg_backup_db.c:442 +msgid "could not start database transaction" +msgstr "nie można uruchomić transakcji na bazie danych" + +#: pg_backup_db.c:448 +msgid "could not commit database transaction" +msgstr "nie można zatwierdzić transakcji na bazie danych" + +#: pg_backup_files.c:68 +msgid "file archiver" +msgstr "archiwizator plików" + +#: pg_backup_files.c:122 +msgid "" +"WARNING:\n" +" This format is for demonstration purposes; it is not intended for\n" +" normal use. Files will be written in the current working directory.\n" +msgstr "" +"OSTRZEŻENIE:\n" +" Ten format służy do celów demonstracyjnych; nie jest przeznaczony do\n" +" zwykłego użytkowania. Pliki będą zapisane w bieżącym folderze roboczym.\n" + +#: pg_backup_files.c:283 +msgid "could not close data file\n" +msgstr "nie można zamknąć pliku danych\n" + +#: pg_backup_files.c:317 +msgid "could not close data file after reading\n" +msgstr "nie można zamknąć pliku danych po odczycie\n" + +#: pg_backup_files.c:379 +#, c-format +msgid "could not open large object TOC for input: %s\n" +msgstr "nie można otworzyć TOC dużych obiektów do odczytu: %s\n" + +#: pg_backup_files.c:392 pg_backup_files.c:561 +#, c-format +msgid "could not close large object TOC file: %s\n" +msgstr "nie można zamknąć TOC dużych obiektów: %s\n" + +#: pg_backup_files.c:404 +msgid "could not write byte\n" +msgstr "nie można zapisać bajtu\n" + +#: pg_backup_files.c:490 +#, c-format +msgid "could not open large object TOC for output: %s\n" +msgstr "nie można otworzyć TOC dużych obiektów do zapisu: %s\n" + +#: pg_backup_files.c:510 pg_backup_tar.c:939 +#, c-format +msgid "invalid OID for large object (%u)\n" +msgstr "niepoprawny OID dla dużego obiektu (%u)\n" + +#: pg_backup_files.c:529 +#, c-format +msgid "could not open large object file \"%s\" for input: %s\n" +msgstr "nie można otworzyć pliku dużych obiektów \"%s\" do odczytu: %s\n" + +#: pg_backup_files.c:544 +msgid "could not close large object file\n" +msgstr "nie można zamknąć pliku dużych obiektów\n" + +#: pg_backup_null.c:78 +msgid "this format cannot be read\n" +msgstr "ten format nie mógł zostać odczytany\n" + +#: pg_backup_tar.c:105 +msgid "tar archiver" +msgstr "archiwizator tar" + +#: pg_backup_tar.c:183 +#, c-format +msgid "could not open TOC file \"%s\" for output: %s\n" +msgstr "nie można otworzyć pliku TOC \"%s\" do zapisu: %s\n" + +#: pg_backup_tar.c:191 +#, c-format +msgid "could not open TOC file for output: %s\n" +msgstr "nie można otworzyć pliku TOC do zapisu: %s\n" + +#: pg_backup_tar.c:218 pg_backup_tar.c:374 +msgid "compression is not supported by tar archive format\n" +msgstr "kompresja nie jest obsługiwana przez format archiwum tar\n" + +#: pg_backup_tar.c:226 +#, c-format +msgid "could not open TOC file \"%s\" for input: %s\n" +msgstr "nie można otworzyć pliku TOC \"%s\" do odczytu: %s\n" + +#: pg_backup_tar.c:233 +#, c-format +msgid "could not open TOC file for input: %s\n" +msgstr "nie można otworzyć pliku TOC do odczytu: %s\n" + +#: pg_backup_tar.c:360 +#, c-format +msgid "could not find file \"%s\" in archive\n" +msgstr "nie można znaleźć pliku \"%s\" w archiwum\n" + +#: pg_backup_tar.c:416 +#, c-format +msgid "could not generate temporary file name: %s\n" +msgstr "nie można utworzyć nazwy pliku tymczasowego: %s\n" + +#: pg_backup_tar.c:425 +msgid "could not open temporary file\n" +msgstr "nie można otworzyć pliku tymczasowego\n" + +#: pg_backup_tar.c:452 +msgid "could not close tar member\n" +msgstr "nie można zamknąć składnika tar\n" + +#: pg_backup_tar.c:552 +msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" +msgstr "błąd wewnętrzny -- nie wskazano ani th ani fh w tarReadRaw()\n" + +#: pg_backup_tar.c:678 +#, c-format +msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n" +msgstr "" +"niepoprawne wyrażenie COPY -- nie można znaleźć \"copy\" w ciągu znaków \"%s" +"\"\n" + +#: pg_backup_tar.c:696 +#, c-format +msgid "" +"invalid COPY statement -- could not find \"from stdin\" in string \"%s\" " +"starting at position %lu\n" +msgstr "" +"niepoprawne wyrażenie COPY -- nie można znaleźć \"from stdin\" w ciągu " +"znaków \"%s\" począwszy od pozycji %lu\n" + +#: pg_backup_tar.c:733 +#, c-format +msgid "restoring large object OID %u\n" +msgstr "odtwarzanie OID dużego obiektu %u\n" + +#: pg_backup_tar.c:884 +msgid "could not write null block at end of tar archive\n" +msgstr "nie można zapisać pustego bloku na końcu archiwum tar\n" + +#: pg_backup_tar.c:1084 +msgid "archive member too large for tar format\n" +msgstr "składnik archiwum za duży dla formatu tar\n" + +#: pg_backup_tar.c:1099 +#, c-format +msgid "could not close temporary file: %s\n" +msgstr "nie można zamknąć pliku tymczasowego: %s\n" + +#: pg_backup_tar.c:1109 +#, c-format +msgid "actual file length (%s) does not match expected (%s)\n" +msgstr "faktyczna długość pliku (%s) nie zgadza z oczekiwaną (%s)\n" + +#: pg_backup_tar.c:1117 +msgid "could not output padding at end of tar member\n" +msgstr "nie udało się wypełnić wyjścia na końcu składnika tar\n" + +#: pg_backup_tar.c:1146 +#, c-format +msgid "moving from position %s to next member at file position %s\n" +msgstr "" +"przeniesienie z pozycji %s do następnego składnika na pozycji pliku %s\n" + +#: pg_backup_tar.c:1157 +#, c-format +msgid "now at file position %s\n" +msgstr "obecnie na pozycji pliku %s\n" + +#: pg_backup_tar.c:1166 pg_backup_tar.c:1196 +#, c-format +msgid "could not find header for file \"%s\" in tar archive\n" +msgstr "nie można znaleźć nagłówka dla pliku \"%s\" w archiwum tar\n" + +#: pg_backup_tar.c:1180 +#, c-format +msgid "skipping tar member %s\n" +msgstr "pominięcie składnika tar %s\n" + +#: pg_backup_tar.c:1184 +#, c-format +msgid "" +"restoring data out of order is not supported in this archive format: \"%s\" " +"is required, but comes before \"%s\" in the archive file.\n" +msgstr "" +"przywrócenie danych w niepoprawnej kolejności nie jest obsługiwane w tym " +"formacie archiwum: wymagane jest \"%s\", ale występuje przed \"%s\" w pliku " +"archiwum.\n" + +#: pg_backup_tar.c:1230 +#, c-format +msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n" +msgstr "niezgodność między rzeczywistą i wyliczoną pozycją pliku (%s i %s)\n" + +#: pg_backup_tar.c:1245 +#, c-format +msgid "incomplete tar header found (%lu byte)\n" +msgid_plural "incomplete tar header found (%lu bytes)\n" +msgstr[0] "znaleziono niepełny nagłówek tar (%lu bajt)\n" +msgstr[1] "znaleziono niepełny nagłówek tar (%lu bajty)\n" +msgstr[2] "znaleziono niepełny nagłówek tar (%lu bajtów)\n" + +#: pg_backup_tar.c:1283 +#, c-format +msgid "TOC Entry %s at %s (length %lu, checksum %d)\n" +msgstr "Wpis TOC %s na %s (długość %lu, suma kontrolna %d)\n" + +#: pg_backup_tar.c:1293 +#, c-format +msgid "" +"corrupt tar header found in %s (expected %d, computed %d) file position %s\n" +msgstr "" +"znaleziono uszkodzony nagłówek tar w %s (oczekiwano %d, wyliczono %d) " +"pozycja pliku %s\n" + +#: pg_restore.c:300 +#, c-format +msgid "%s: options -d/--dbname and -f/--file cannot be used together\n" +msgstr "%s: opcje -d/--dbname i -f/--file nie mogą być użyte razem\n" + +#: pg_restore.c:312 +#, c-format +msgid "%s: cannot specify both --single-transaction and multiple jobs\n" +msgstr "" +"%s: nie można wskazać jednocześnie --single-transaction i wielu zadań\n" + +#: pg_restore.c:348 +#, c-format +msgid "" +"unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"\n" +msgstr "" +"nierozpoznany format archiwum \"%s\"; proszę wskazać \"c\", \"d\", lub \"t" +"\"\n" + +#: pg_restore.c:382 +#, c-format +msgid "WARNING: errors ignored on restore: %d\n" +msgstr "OSTRZEŻENIE: błędy ignorowane przy odtworzeniu: %d\n" + +#: pg_restore.c:396 +#, c-format +msgid "" +"%s restores a PostgreSQL database from an archive created by pg_dump.\n" +"\n" +msgstr "" +"%s odtwarza bazę danych PostgreSQL z archiwum utworzonego przez pg_dump.\n" +"\n" + +#: pg_restore.c:398 +#, c-format +msgid " %s [OPTION]... [FILE]\n" +msgstr " %s [OPCJA]... [PLIK]\n" + +#: pg_restore.c:401 +#, c-format +msgid " -d, --dbname=NAME connect to database name\n" +msgstr " -d, --dbname=NAZWA połączenie do bazy danych o tej nazwie\n" + +#: pg_restore.c:402 +#, c-format +msgid " -f, --file=FILENAME output file name\n" +msgstr " -f, --file=NAZWAPLIKU nazwa pliku wyjścia\n" + +#: pg_restore.c:403 +#, c-format +msgid " -F, --format=c|d|t backup file format (should be automatic)\n" +msgstr "" +" -F, --format=c|d|t format pliku kopii zapasowej (powinien być " +"automatyczny)\n" + +#: pg_restore.c:404 +#, c-format +msgid " -l, --list print summarized TOC of the archive\n" +msgstr " -l, --list drukuje skrótowy spis treści archiwum\n" + +#: pg_restore.c:405 +#, c-format +msgid " -v, --verbose verbose mode\n" +msgstr " -v, --verbose tryb informacji szczegółowych\n" + +#: pg_restore.c:406 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help pokazuje ten ekran pomocy i kończy\n" + +#: pg_restore.c:407 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version pokazuje informacje o wersji i kończy\n" + +#: pg_restore.c:409 +#, c-format +msgid "" +"\n" +"Options controlling the restore:\n" +msgstr "" +"\n" +"Opcje kontroli odtworzenia:\n" + +#: pg_restore.c:410 +#, c-format +msgid " -a, --data-only restore only the data, no schema\n" +msgstr " -a, --data-only odtwarza tylko dane, bez schematu\n" + +#: pg_restore.c:411 +#, c-format +msgid "" +" -c, --clean clean (drop) database objects before recreating\n" +msgstr "" +" -c, --clean czyści (kasuje) obiekty bazy danych przed " +"odtworzeniem\n" + +#: pg_restore.c:412 +#, c-format +msgid " -C, --create create the target database\n" +msgstr " -C, --create utworzenie docelowej bazy danych\n" + +#: pg_restore.c:413 +#, c-format +msgid " -e, --exit-on-error exit on error, default is to continue\n" +msgstr "" +" -e, --exit-on-error wyjście w przypadku błędu, domyślna jest " +"kontynuacja\n" + +#: pg_restore.c:414 +#, c-format +msgid " -I, --index=NAME restore named index\n" +msgstr " -I, --index=NAZWA odtwarza indeks wedle nazwy\n" + +#: pg_restore.c:415 +#, c-format +msgid " -j, --jobs=NUM use this many parallel jobs to restore\n" +msgstr "" +" -j, --jobs=NUM użycie tylu równoległych zadań przy odtwarzaniu\n" + +#: pg_restore.c:416 +#, c-format +msgid "" +" -L, --use-list=FILENAME use table of contents from this file for\n" +" selecting/ordering output\n" +msgstr "" +" -L, --use-list=NAZWAPLIKU\n" +" użycie spisu treści z tego pliku by\n" +" wskazać/uporządkować wyjście\n" + +#: pg_restore.c:418 +#, c-format +msgid " -n, --schema=NAME restore only objects in this schema\n" +msgstr " -n, --schema=NAZWA odtwarza tylko obiekty z tego schematu\n" + +#: pg_restore.c:419 +#, c-format +msgid " -O, --no-owner skip restoration of object ownership\n" +msgstr "" +" -O, --no-owner nie odtwarza ustalenia właściciela obiektu\n" + +#: pg_restore.c:420 +#, c-format +msgid "" +" -P, --function=NAME(args)\n" +" restore named function\n" +msgstr "" +" -P, --function=NAZWA(args)\n" +" odtwarza funkcję wedle nazwy\n" + +#: pg_restore.c:422 +#, c-format +msgid " -s, --schema-only restore only the schema, no data\n" +msgstr " -s, --schema-only odtwarza tylko schemat, bez danych\n" + +#: pg_restore.c:423 +#, c-format +msgid "" +" -S, --superuser=NAME superuser user name to use for disabling " +"triggers\n" +msgstr "" +" -S, --superuser=NAZWA nazwa superużytkownika by użyć lub wyłączyć\n" +" wyzwalacze\n" + +#: pg_restore.c:424 +#, c-format +msgid " -t, --table=NAME restore named table\n" +msgstr " -t, --table=NAZWA odtwarza tabelę wedle nazwy\n" + +#: pg_restore.c:425 +#, c-format +msgid " -T, --trigger=NAME restore named trigger\n" +msgstr " -T, --trigger=NAZWA odtwarza wyzwalacz wedle nazwy\n" + +#: pg_restore.c:426 +#, c-format +msgid "" +" -x, --no-privileges skip restoration of access privileges (grant/" +"revoke)\n" +msgstr "" +" -x, --no-privileges nie wykonuje odtwarzania przywilejów dostępu\n" +" (grant/revoke)\n" + +#: pg_restore.c:427 +#, c-format +msgid "" +" -1, --single-transaction\n" +" restore as a single transaction\n" +msgstr "" +" -1, --single-transaction\n" +" odtworzenie jako pojedyncza transakcja\n" + +#: pg_restore.c:429 +#, c-format +msgid " --disable-triggers disable triggers during data-only restore\n" +msgstr "" +" --disable-triggers wyłącza wyzwalacze podczas odtwarzania wyłącznie\n" +" danych\n" + +#: pg_restore.c:430 +#, c-format +msgid "" +" --no-data-for-failed-tables\n" +" do not restore data of tables that could not be\n" +" created\n" +msgstr "" +" --no-data-for-failed-tables\n" +" nie odtwarza danych z tabel, które nie mogły\n" +" być odtworzone\n" + +#: pg_restore.c:433 +#, c-format +msgid " --no-security-labels do not restore security labels\n" +msgstr " --no-security-labels nie odtwarza etykiet bezpieczeństwa\n" + +#: pg_restore.c:434 +#, c-format +msgid " --no-tablespaces do not restore tablespace assignments\n" +msgstr "" +" --no-tablespaces nie odtwarza przypisań do przestrzeni tabel\n" + +#: pg_restore.c:435 +#, c-format +msgid "" +" --use-set-session-authorization\n" +" use SET SESSION AUTHORIZATION commands instead " +"of\n" +" ALTER OWNER commands to set ownership\n" +msgstr "" +" --use-set-session-authorization\n" +" używa poleceń SET SESSION AUTHORIZATION zamiast\n" +" poleceń ALTER OWNER do ustalenia właściciela\n" + +#: pg_restore.c:445 +#, c-format +msgid " --role=ROLENAME do SET ROLE before restore\n" +msgstr " --role=NAZWAROLI wykonuje SET ROLE przed odtworzeniem\n" + +#: pg_restore.c:447 +#, c-format +msgid "" +"\n" +"If no input file name is supplied, then standard input is used.\n" +"\n" +msgstr "" +"\n" +"Jeśli nie wskazano nazwy pliku, użyty zostanie wejście standardowe.\n" +"\n" + +#: pg_dumpall.c:171 +#, c-format +msgid "" +"The program \"pg_dump\" is needed by %s but was not found in the\n" +"same directory as \"%s\".\n" +"Check your installation.\n" +msgstr "" +"Program \"pg_dump\" jest wymagany przez %s ale nie został znaleziony\n" +"w tym samym folderze co \"%s\".\n" +"Sprawdź instalację.\n" + +#: pg_dumpall.c:178 +#, c-format +msgid "" +"The program \"pg_dump\" was found by \"%s\"\n" +"but was not the same version as %s.\n" +"Check your installation.\n" +msgstr "" +"Program \"pg_dump\" został znaleziony przez \"%s\"\n" +"ale nie jest w tej samej wersji co %s.\n" +"Sprawdź instalację.\n" + +#: pg_dumpall.c:314 +#, c-format +msgid "" +"%s: options -g/--globals-only and -r/--roles-only cannot be used together\n" +msgstr "" +"%s: opcje -g/--globals-only i -r/--roles-only nie mogą być używane razem\n" + +#: pg_dumpall.c:323 +#, c-format +msgid "" +"%s: options -g/--globals-only and -t/--tablespaces-only cannot be used " +"together\n" +msgstr "" +"%s: opcje -g/--globals-only i -t/--tablespaces-only nie mogą być używane " +"razem\n" + +#: pg_dumpall.c:332 +#, c-format +msgid "" +"%s: options -r/--roles-only and -t/--tablespaces-only cannot be used " +"together\n" +msgstr "" +"%s: opcje -r/--roles-only i -t/--tablespaces-only nie mogą być używane " +"razem\n" + +#: pg_dumpall.c:374 pg_dumpall.c:1678 +#, c-format +msgid "%s: could not connect to database \"%s\"\n" +msgstr "%s: nie można połączyć się do bazy danych \"%s\"\n" + +#: pg_dumpall.c:389 +#, c-format +msgid "" +"%s: could not connect to databases \"postgres\" or \"template1\"\n" +"Please specify an alternative database.\n" +msgstr "" +"%s: n ie udało się połączyć do bazy danych \"postgres\" ani \"template1\"\n" +"Proszę wskazać alternatywną bazę danych.\n" + +#: pg_dumpall.c:406 +#, c-format +msgid "%s: could not open the output file \"%s\": %s\n" +msgstr "%s: nie można otworzyć pliku wyjścia \"%s\": %s\n" + +#: pg_dumpall.c:528 +#, c-format +msgid "" +"%s extracts a PostgreSQL database cluster into an SQL script file.\n" +"\n" +msgstr "" +"%s wyciąga klaster bazy danych PostgreSQL do pliku skryptowego SQL.\n" +"\n" + +#: pg_dumpall.c:530 +#, c-format +msgid " %s [OPTION]...\n" +msgstr " %s [OPCJA]...\n" + +#: pg_dumpall.c:533 +#, c-format +msgid " -f, --file=FILENAME output file name\n" +msgstr " -f, --file=NAZWAPLIKU nazwa pliku wyjścia\n" + +#: pg_dumpall.c:539 +#, c-format +msgid "" +" -c, --clean clean (drop) databases before recreating\n" +msgstr "" +" -c, --clean czyszczenie (kasowanie) baz danych przed " +"odtworzeniem\n" + +#: pg_dumpall.c:540 +#, c-format +msgid " -g, --globals-only dump only global objects, no databases\n" +msgstr "" +" -g, --globals-only zrzuca tylko obiekty globalne, bez baz danych\n" + +#: pg_dumpall.c:542 +#, c-format +msgid " -O, --no-owner skip restoration of object ownership\n" +msgstr " -O, --no-owner bez odtwarzania posiadania obiektu\n" + +#: pg_dumpall.c:543 +#, c-format +msgid "" +" -r, --roles-only dump only roles, no databases or tablespaces\n" +msgstr "" +" -r, --roles-only zrzuca tylko role bez baz danych i przestrzeni " +"tabel\n" + +#: pg_dumpall.c:545 +#, c-format +msgid " -S, --superuser=NAME superuser user name to use in the dump\n" +msgstr "" +" -S, --superuser=NAZWA nazwa superużytkownika używana w zrzucie\n" + +#: pg_dumpall.c:546 +#, c-format +msgid "" +" -t, --tablespaces-only dump only tablespaces, no databases or roles\n" +msgstr "" +" -t, --tablespaces-only zrzuca tylko przestrzenie tabel, bez baz " +"danych i ról\n" + +#: pg_dumpall.c:563 +#, c-format +msgid " -l, --database=DBNAME alternative default database\n" +msgstr " -l, --database=NAZWADB alternatywna domyślna baza danych\n" + +#: pg_dumpall.c:570 +#, c-format +msgid "" +"\n" +"If -f/--file is not used, then the SQL script will be written to the " +"standard\n" +"output.\n" +"\n" +msgstr "" +"\n" +"Jeśli nie użyto -f/--file, skrypt SQL zostanie zapisany do standardowego\n" +"wyjścia.\n" +"\n" + +#: pg_dumpall.c:1041 +#, c-format +msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n" +msgstr "" +"%s: nie udało się przeanalizować listy AC (%s) dla przestrzeni tabel \"%s\"\n" + +#: pg_dumpall.c:1341 +#, c-format +msgid "%s: could not parse ACL list (%s) for database \"%s\"\n" +msgstr "" +"%s: nie udało się przeanalizować listy AC (%s) dla bazy danych \"%s\"\n" + +#: pg_dumpall.c:1548 +#, c-format +msgid "%s: dumping database \"%s\"...\n" +msgstr "%s: tworzenie kopii zapasowej bazy danych \"%s\"...\n" + +#: pg_dumpall.c:1558 +#, c-format +msgid "%s: pg_dump failed on database \"%s\", exiting\n" +msgstr "%s: pg_dump nie powiódł się na bazie danych \"%s\", wyjście\n" + +#: pg_dumpall.c:1567 +#, c-format +msgid "%s: could not re-open the output file \"%s\": %s\n" +msgstr "%s: nie można ponownie otworzyć pliku \"%s\": %s\n" + +#: pg_dumpall.c:1606 +#, c-format +msgid "%s: running \"%s\"\n" +msgstr "%s: uruchomiony \"%s\"\n" + +#: pg_dumpall.c:1651 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: brak pamięci\n" + +#: pg_dumpall.c:1700 +#, c-format +msgid "%s: could not connect to database \"%s\": %s\n" +msgstr "%s: nie można połączyć się do bazy danych \"%s\": %s\n" + +#: pg_dumpall.c:1714 +#, c-format +msgid "%s: could not get server version\n" +msgstr "%s: nie można pobrać wersji serwera\n" + +#: pg_dumpall.c:1720 +#, c-format +msgid "%s: could not parse server version \"%s\"\n" +msgstr "%s: nie można odczytać wersji serwera \"%s\"\n" + +#: pg_dumpall.c:1728 +#, c-format +msgid "%s: could not parse version \"%s\"\n" +msgstr "%s: nie można odczytać wersji \"%s\"\n" + +#: pg_dumpall.c:1767 pg_dumpall.c:1793 +#, c-format +msgid "%s: executing %s\n" +msgstr "%s: wykonanie %s\n" + +#: pg_dumpall.c:1773 pg_dumpall.c:1799 +#, c-format +msgid "%s: query failed: %s" +msgstr "%s: zapytanie nie powiodło się: %s" + +#: pg_dumpall.c:1775 pg_dumpall.c:1801 +#, c-format +msgid "%s: query was: %s\n" +msgstr "%s: zapytanie brzmiało: %s\n" + +#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 +#, c-format +msgid "could not identify current directory: %s" +msgstr "nie można zidentyfikować aktualnego katalogu: %s" + +#: ../../port/exec.c:144 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "niepoprawny binarny \"%s\"" + +#: ../../port/exec.c:193 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "nie można odczytać binarnego \"%s\"" + +#: ../../port/exec.c:200 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "nie znaleziono \"%s\" do wykonania" + +#: ../../port/exec.c:255 ../../port/exec.c:291 +#, c-format +msgid "could not change directory to \"%s\"" +msgstr "nie można zmienić katalogu na \"%s\"" + +#: ../../port/exec.c:270 +#, c-format +msgid "could not read symbolic link \"%s\"" +msgstr "nie można odczytać odwołania symbolicznego \"%s\"" + +#: ../../port/exec.c:517 +#, c-format +msgid "child process exited with exit code %d" +msgstr "proces potomny zakończył działanie z kodem %d" + +#: ../../port/exec.c:521 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "proces potomny został zatrzymany przez wyjątek 0x%X" + +#: ../../port/exec.c:530 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "proces potomny został zatrzymany przez sygnał %s" + +#: ../../port/exec.c:533 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "proces potomny został zatrzymany przez sygnał %d" + +#: ../../port/exec.c:537 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "proces potomny zakończył działanie z nieznanym stanem %d" diff --git a/src/bin/pg_dump/po/pt_BR.po b/src/bin/pg_dump/po/pt_BR.po index c48e349da1..075ee5246a 100644 --- a/src/bin/pg_dump/po/pt_BR.po +++ b/src/bin/pg_dump/po/pt_BR.po @@ -2,13 +2,13 @@ # Copyright (C) 2009 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # Roberto Mello , 2002. -# Euler Taveira de Oliveira , 2003-2010. +# Euler Taveira de Oliveira , 2003-2013. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-09-16 11:49-0300\n" +"POT-Creation-Date: 2013-01-29 00:52-0200\n" "PO-Revision-Date: 2005-10-04 23:16-0300\n" "Last-Translator: Euler Taveira de Oliveira \n" "Language-Team: Brazilian Portuguese \n" @@ -18,78 +18,77 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n>1);\n" -#: pg_dump.c:453 pg_restore.c:268 pg_dumpall.c:291 -#, c-format -msgid "%s: invalid -X option -- %s\n" -msgstr "%s: opção -X é inválida -- %s\n" - -#: pg_dump.c:455 pg_dump.c:477 pg_dump.c:491 pg_restore.c:270 pg_restore.c:293 -#: pg_restore.c:309 pg_restore.c:321 pg_dumpall.c:293 pg_dumpall.c:313 -#: pg_dumpall.c:323 pg_dumpall.c:333 pg_dumpall.c:342 pg_dumpall.c:351 -#: pg_dumpall.c:403 +#: pg_dump.c:492 pg_dump.c:506 pg_restore.c:274 pg_restore.c:290 +#: pg_restore.c:302 pg_dumpall.c:296 pg_dumpall.c:306 pg_dumpall.c:316 +#: pg_dumpall.c:325 pg_dumpall.c:334 pg_dumpall.c:392 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Tente \"%s --help\" para obter informações adicionais.\n" -#: pg_dump.c:489 pg_restore.c:307 pg_dumpall.c:321 +#: pg_dump.c:504 pg_restore.c:288 pg_dumpall.c:304 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: muitos argumentos de linha de comando (primeiro é \"%s\")\n" -#: pg_dump.c:502 +#: pg_dump.c:517 msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "" "opções -s/--schema-only e -a/--data-only não podem ser utilizadas juntas\n" -#: pg_dump.c:508 +#: pg_dump.c:523 msgid "options -c/--clean and -a/--data-only cannot be used together\n" msgstr "opções -c/--clean e -a/--data-only não podem ser utilizadas juntas\n" -#: pg_dump.c:514 +#: pg_dump.c:529 msgid "" "options --inserts/--column-inserts and -o/--oids cannot be used together\n" msgstr "" "opções --inserts/--column-inserts e -o/--oids não podem ser utilizadas " "juntas\n" -#: pg_dump.c:515 +#: pg_dump.c:530 msgid "(The INSERT command cannot set OIDs.)\n" msgstr "(O comando INSERT não pode definir OIDs.)\n" -#: pg_dump.c:545 -#, c-format -msgid "invalid output format \"%s\" specified\n" -msgstr "formato de saída especificado \"%s\" é inválido\n" - -#: pg_dump.c:551 +#: pg_dump.c:555 #, c-format msgid "could not open output file \"%s\" for writing\n" msgstr "não pôde abrir arquivo de saída \"%s\" para escrita\n" -#: pg_dump.c:561 pg_backup_db.c:45 +#: pg_dump.c:565 pg_backup_db.c:38 #, c-format msgid "could not parse version string \"%s\"\n" msgstr "não pôde validar a versão \"%s\"\n" -#: pg_dump.c:584 +#: pg_dump.c:588 #, c-format msgid "invalid client encoding \"%s\" specified\n" msgstr "codificação de cliente \"%s\" especificada é inválida\n" -#: pg_dump.c:661 +#: pg_dump.c:671 pg_dump.c:2433 pg_dump.c:2481 pg_dump.c:2536 pg_dump.c:7725 +#: pg_dump.c:7956 pg_dump.c:8922 pg_dump.c:9474 pg_dump.c:9728 pg_dump.c:9842 +#: pg_dump.c:10298 pg_dump.c:10484 pg_dump.c:10590 pg_dump.c:10790 +#: pg_dump.c:11032 pg_dump.c:11199 pg_dump.c:11420 pg_dump.c:14246 +#, c-format +msgid "query returned %d row instead of one: %s\n" +msgid_plural "query returned %d rows instead of one: %s\n" +msgstr[0] "consulta retornou %d registro ao invés de um: %s\n" +msgstr[1] "consulta retornou %d registros ao invés de um: %s\n" + +#: pg_dump.c:722 #, c-format msgid "last built-in OID is %u\n" msgstr "último OID interno é %u\n" -#: pg_dump.c:671 +#: pg_dump.c:732 msgid "No matching schemas were found\n" msgstr "Nenhum esquema correspondente foi encontrado\n" -#: pg_dump.c:686 +#: pg_dump.c:747 msgid "No matching tables were found\n" msgstr "Nenhuma tabela correspondente foi encontrada\n" -#: pg_dump.c:798 +#: pg_dump.c:869 #, c-format msgid "" "%s dumps a database as a text file or to other formats.\n" @@ -98,17 +97,17 @@ msgstr "" "%s salva um banco de dados em um arquivo texto ou em outros formatos.\n" "\n" -#: pg_dump.c:799 pg_restore.c:410 pg_dumpall.c:536 +#: pg_dump.c:870 pg_restore.c:397 pg_dumpall.c:529 #, c-format msgid "Usage:\n" msgstr "Uso:\n" -#: pg_dump.c:800 +#: pg_dump.c:871 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [OPÇÃO]... [NOMEBD]\n" -#: pg_dump.c:802 pg_restore.c:413 pg_dumpall.c:539 +#: pg_dump.c:873 pg_restore.c:400 pg_dumpall.c:532 #, c-format msgid "" "\n" @@ -117,32 +116,33 @@ msgstr "" "\n" "Opções gerais:\n" -#: pg_dump.c:803 pg_dumpall.c:540 +#: pg_dump.c:874 #, c-format -msgid " -f, --file=FILENAME output file name\n" -msgstr " -f, --file=ARQUIVO nome do arquivo de saída\n" +msgid " -f, --file=FILENAME output file or directory name\n" +msgstr " -f, --file=ARQUIVO nome do arquivo ou diretório de saída\n" -#: pg_dump.c:804 +#: pg_dump.c:875 #, c-format msgid "" -" -F, --format=c|t|p output file format (custom, tar, plain text)\n" +" -F, --format=c|d|t|p output file format (custom, directory, tar, " +"plain text)\n" msgstr "" -" -F, --format=c|t|p formato do arquivo de saída (personalizado, tar, " -"texto)\n" +" -F, --format=c|d|t|p formato do arquivo de saída (personalizado, " +"diretório, tar, texto)\n" -#: pg_dump.c:805 +#: pg_dump.c:876 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose modo informações detalhadas\n" -#: pg_dump.c:806 +#: pg_dump.c:877 #, c-format msgid "" " -Z, --compress=0-9 compression level for compressed formats\n" msgstr "" " -Z, --compress=0-9 nível de compressão para formatos comprimidos\n" -#: pg_dump.c:807 pg_dumpall.c:541 +#: pg_dump.c:878 pg_dumpall.c:534 #, c-format msgid "" " --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" @@ -150,18 +150,18 @@ msgstr "" " --lock-wait-timeout=TEMPO falha após esperar TEMPO por um travamento da " "tabela\n" -#: pg_dump.c:808 pg_dumpall.c:542 +#: pg_dump.c:879 pg_dumpall.c:535 #, c-format msgid " --help show this help, then exit\n" msgstr " --help mostra esta ajuda e termina\n" -#: pg_dump.c:809 pg_dumpall.c:543 +#: pg_dump.c:880 pg_dumpall.c:536 #, c-format msgid " --version output version information, then exit\n" msgstr "" " --version mostra informação sobre a versão e termina\n" -#: pg_dump.c:811 pg_dumpall.c:544 +#: pg_dump.c:882 pg_dumpall.c:537 #, c-format msgid "" "\n" @@ -170,18 +170,18 @@ msgstr "" "\n" "Opções que controlam a saída do conteúdo:\n" -#: pg_dump.c:812 pg_dumpall.c:545 +#: pg_dump.c:883 pg_dumpall.c:538 #, c-format msgid " -a, --data-only dump only the data, not the schema\n" msgstr " -a, --data-only copia somente os dados, não o esquema\n" -#: pg_dump.c:813 +#: pg_dump.c:884 #, c-format msgid " -b, --blobs include large objects in dump\n" msgstr "" " -b, --blobs inclui objetos grandes na cópia de segurança\n" -#: pg_dump.c:814 +#: pg_dump.c:885 #, c-format msgid "" " -c, --clean clean (drop) database objects before " @@ -190,7 +190,7 @@ msgstr "" " -c, --clean exclui (remove) bancos de dados antes de criá-" "lo novamente\n" -#: pg_dump.c:815 +#: pg_dump.c:886 #, c-format msgid "" " -C, --create include commands to create database in dump\n" @@ -198,31 +198,31 @@ msgstr "" " -C, --create inclui comandos para criação dos bancos de " "dados na cópia de segurança\n" -#: pg_dump.c:816 +#: pg_dump.c:887 #, c-format msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" msgstr "" " -E, --encoding=CODIFICAÇÃO copia dados na codificação CODIFICAÇÂO\n" -#: pg_dump.c:817 +#: pg_dump.c:888 #, c-format msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" msgstr "" " -n, --schema=ESQUEMA copia somente o(s) esquema(s) especificado" "(s)\n" -#: pg_dump.c:818 +#: pg_dump.c:889 #, c-format msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n" msgstr "" " -N, --exclude-schema=ESQUEMA NÃO copia o(s) esquema(s) especificado(s)\n" -#: pg_dump.c:819 pg_dumpall.c:548 +#: pg_dump.c:890 pg_dumpall.c:541 #, c-format msgid " -o, --oids include OIDs in dump\n" msgstr " -o, --oids inclui OIDs na cópia de segurança\n" -#: pg_dump.c:820 +#: pg_dump.c:891 #, c-format msgid "" " -O, --no-owner skip restoration of object ownership in\n" @@ -231,13 +231,13 @@ msgstr "" " -O, --no-owner ignora restauração do dono dos objetos\n" " no formato texto\n" -#: pg_dump.c:822 pg_dumpall.c:551 +#: pg_dump.c:893 pg_dumpall.c:544 #, c-format msgid " -s, --schema-only dump only the schema, no data\n" msgstr "" " -s, --schema-only copia somente o esquema, e não os dados\n" -#: pg_dump.c:823 +#: pg_dump.c:894 #, c-format msgid "" " -S, --superuser=NAME superuser user name to use in plain-text " @@ -246,40 +246,31 @@ msgstr "" " -S, --superuser=NOME nome de super-usuário a ser usado no formato " "texto\n" -#: pg_dump.c:824 +#: pg_dump.c:895 #, c-format msgid " -t, --table=TABLE dump the named table(s) only\n" msgstr "" " -t, --table=TABELA copia somente a(s) tabela(s) especificada(s)\n" -#: pg_dump.c:825 +#: pg_dump.c:896 #, c-format msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n" msgstr "" " -T, --exclude-table=TABELA NÃO copia a(s) tabela(s) especificada(s)\n" -#: pg_dump.c:826 pg_dumpall.c:554 +#: pg_dump.c:897 pg_dumpall.c:547 #, c-format msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" msgstr "" " -x, --no-privileges não copia os privilégios (grant/revoke)\n" -#: pg_dump.c:827 pg_dumpall.c:555 +#: pg_dump.c:898 pg_dumpall.c:548 #, c-format msgid " --binary-upgrade for use by upgrade utilities only\n" msgstr "" " --binary-upgrade usado somente por utilitários de atualização\n" -#: pg_dump.c:828 pg_dumpall.c:556 -#, c-format -msgid "" -" --inserts dump data as INSERT commands, rather than " -"COPY\n" -msgstr "" -" --inserts copia dados utilizando comandos INSERT, ao " -"invés de comandos COPY\n" - -#: pg_dump.c:829 pg_dumpall.c:557 +#: pg_dump.c:899 pg_dumpall.c:549 #, c-format msgid "" " --column-inserts dump data as INSERT commands with column " @@ -288,7 +279,7 @@ msgstr "" " --column-inserts copia dados utilizando comandos INSERT com " "nomes das colunas\n" -#: pg_dump.c:830 pg_dumpall.c:558 +#: pg_dump.c:900 pg_dumpall.c:550 #, c-format msgid "" " --disable-dollar-quoting disable dollar quoting, use SQL standard " @@ -297,7 +288,7 @@ msgstr "" " --disable-dollar-quoting desabilita delimitação por cifrão, usa " "delimitadores do padrão SQL\n" -#: pg_dump.c:831 pg_dumpall.c:559 +#: pg_dump.c:901 pg_dumpall.c:551 #, c-format msgid "" " --disable-triggers disable triggers during data-only restore\n" @@ -305,18 +296,49 @@ msgstr "" " --disable-triggers desabilita gatilhos durante a restauração do " "tipo somente dados\n" -#: pg_dump.c:832 pg_dumpall.c:560 +#: pg_dump.c:902 pg_dumpall.c:552 +#, c-format +msgid "" +" --inserts dump data as INSERT commands, rather than " +"COPY\n" +msgstr "" +" --inserts copia dados utilizando comandos INSERT, ao " +"invés de comandos COPY\n" + +#: pg_dump.c:903 pg_dumpall.c:553 +#, c-format +msgid " --no-security-labels do not dump security label assignments\n" +msgstr "" +" --no-security-labels não copia atribuições de rótulos de " +"segurança\n" + +#: pg_dump.c:904 pg_dumpall.c:554 #, c-format msgid " --no-tablespaces do not dump tablespace assignments\n" msgstr " --no-tablespaces não copia atribuições a tablespaces\n" -#: pg_dump.c:833 pg_dumpall.c:561 +#: pg_dump.c:905 pg_dumpall.c:555 +#, c-format +msgid " --no-unlogged-table-data do not dump unlogged table data\n" +msgstr " --no-unlogged-table-data não copia dados de tabela unlogged\n" + +#: pg_dump.c:906 pg_dumpall.c:556 #, c-format -msgid " --role=ROLENAME do SET ROLE before dump\n" +msgid "" +" --quote-all-identifiers quote all identifiers, even if not key words\n" msgstr "" -" --role=NOMEROLE executa SET ROLE antes da cópia de segurança\n" +" --quote-all-identifiers todos os identificadores entre aspas, mesmo " +"que não sejam palavras chave\n" -#: pg_dump.c:834 pg_dumpall.c:562 +#: pg_dump.c:907 +#, c-format +msgid "" +" --serializable-deferrable wait until the dump can run without anomalies\n" +msgstr "" +" --serializable-deferrable espera até que a cópia seja executada sem " +"anomalias\n" + +#: pg_dump.c:908 pg_dumpall.c:557 #, c-format msgid "" " --use-set-session-authorization\n" @@ -329,41 +351,41 @@ msgstr "" "invés de\n" " comandos ALTER OWNER para definir o dono\n" -#: pg_dump.c:838 pg_restore.c:452 pg_dumpall.c:566 +#: pg_dump.c:912 pg_restore.c:439 pg_dumpall.c:561 #, c-format msgid "" "\n" "Connection options:\n" msgstr "" "\n" -"Opções de conexão: \n" +"Opções de conexão:\n" -#: pg_dump.c:839 pg_restore.c:453 pg_dumpall.c:567 +#: pg_dump.c:913 pg_restore.c:440 pg_dumpall.c:562 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" " -h, --host=MÁQUINA máquina do servidor de banco de dados ou " "diretório do soquete\n" -#: pg_dump.c:840 pg_restore.c:454 pg_dumpall.c:569 +#: pg_dump.c:914 pg_restore.c:441 pg_dumpall.c:564 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr "" " -p, --port=PORTA número da porta do servidor de banco de dados\n" -#: pg_dump.c:841 pg_restore.c:455 pg_dumpall.c:570 +#: pg_dump.c:915 pg_restore.c:442 pg_dumpall.c:565 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr "" " -U, --username=NOME conecta como usuário do banco de dados " "especificado\n" -#: pg_dump.c:842 pg_restore.c:456 pg_dumpall.c:571 +#: pg_dump.c:916 pg_restore.c:443 pg_dumpall.c:566 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password nunca pergunta senha\n" -#: pg_dump.c:843 pg_restore.c:457 pg_dumpall.c:572 +#: pg_dump.c:917 pg_restore.c:444 pg_dumpall.c:567 #, c-format msgid "" " -W, --password force password prompt (should happen " @@ -371,7 +393,13 @@ msgid "" msgstr "" " -W, --password pergunta senha (pode ocorrer automaticamente)\n" -#: pg_dump.c:845 +#: pg_dump.c:918 pg_dumpall.c:568 +#, c-format +msgid " --role=ROLENAME do SET ROLE before dump\n" +msgstr "" +" --role=NOMEROLE executa SET ROLE antes da cópia de segurança\n" + +#: pg_dump.c:920 #, c-format msgid "" "\n" @@ -384,155 +412,160 @@ msgstr "" "PGDATABASE é utilizada.\n" "\n" -#: pg_dump.c:847 pg_restore.c:460 pg_dumpall.c:576 +#: pg_dump.c:922 pg_restore.c:448 pg_dumpall.c:572 #, c-format msgid "Report bugs to .\n" msgstr "Relate erros a .\n" -#: pg_dump.c:855 pg_backup_archiver.c:1401 +#: pg_dump.c:930 pg_backup_archiver.c:1459 msgid "*** aborted because of error\n" msgstr "*** interrompido por causa de erro\n" -#: pg_dump.c:876 +#: pg_dump.c:972 +#, c-format +msgid "invalid output format \"%s\" specified\n" +msgstr "formato de saída especificado \"%s\" é inválido\n" + +#: pg_dump.c:995 msgid "server version must be at least 7.3 to use schema selection switches\n" msgstr "" "versão do servidor deve ser pelo menos versão 7.3 para utilizar opções com " "esquemas\n" -#: pg_dump.c:1114 +#: pg_dump.c:1267 #, c-format msgid "dumping contents of table %s\n" msgstr "copiando conteúdo da tabela %s\n" -#: pg_dump.c:1217 +#: pg_dump.c:1387 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" msgstr "Cópia do conteúdo da tabela \"%s\" falhou: PQgetCopyData() falhou.\n" -#: pg_dump.c:1218 pg_dump.c:12413 +#: pg_dump.c:1388 pg_dump.c:14440 #, c-format msgid "Error message from server: %s" msgstr "Mensagem de erro do servidor: %s" -#: pg_dump.c:1219 pg_dump.c:12414 +#: pg_dump.c:1389 pg_dump.c:14441 #, c-format msgid "The command was: %s\n" msgstr "O comando foi: %s\n" -#: pg_dump.c:1625 +#: pg_dump.c:1828 msgid "saving database definition\n" msgstr "salvando definição do banco de dados\n" -#: pg_dump.c:1707 +#: pg_dump.c:1910 #, c-format msgid "missing pg_database entry for database \"%s\"\n" msgstr "faltando registro em pg_database para banco de dados \"%s\"\n" -#: pg_dump.c:1714 +#: pg_dump.c:1917 #, c-format msgid "" "query returned more than one (%d) pg_database entry for database \"%s\"\n" msgstr "" "consulta retornou mais de um (%d) registro em pg_database para banco \"%s\"\n" -#: pg_dump.c:1815 +#: pg_dump.c:2021 msgid "dumpDatabase(): could not find pg_largeobject.relfrozenxid\n" msgstr "dumpDatabase(): não pôde encontrar pg_largeobject.relfrozenxid\n" -#: pg_dump.c:1892 +#: pg_dump.c:2060 +msgid "dumpDatabase(): could not find pg_largeobject_metadata.relfrozenxid\n" +msgstr "" +"dumpDatabase(): não pôde encontrar pg_largeobject_metadata.relfrozenxid\n" + +#: pg_dump.c:2139 #, c-format msgid "saving encoding = %s\n" msgstr "salvando codificação = %s\n" -#: pg_dump.c:1919 +#: pg_dump.c:2166 #, c-format msgid "saving standard_conforming_strings = %s\n" msgstr "salvando padrão de escape de cadeia de caracteres = %s\n" -#: pg_dump.c:1952 +#: pg_dump.c:2199 msgid "reading large objects\n" msgstr "lendo objetos grandes\n" -#: pg_dump.c:2079 +#: pg_dump.c:2331 msgid "saving large objects\n" msgstr "salvando objetos grandes\n" -#: pg_dump.c:2121 pg_backup_archiver.c:946 +#: pg_dump.c:2373 pg_backup_archiver.c:985 #, c-format msgid "could not open large object %u: %s" msgstr "não pôde abrir objeto grande %u: %s" -#: pg_dump.c:2134 +#: pg_dump.c:2386 #, c-format msgid "error reading large object %u: %s" msgstr "erro ao ler objeto grande %u: %s" -#: pg_dump.c:2181 pg_dump.c:2229 pg_dump.c:2291 pg_dump.c:6912 pg_dump.c:7115 -#: pg_dump.c:7931 pg_dump.c:8469 pg_dump.c:8719 pg_dump.c:8825 pg_dump.c:9210 -#: pg_dump.c:9386 pg_dump.c:9583 pg_dump.c:9810 pg_dump.c:9965 pg_dump.c:10152 -#: pg_dump.c:12219 +#: pg_dump.c:2617 #, c-format -msgid "query returned %d row instead of one: %s\n" -msgid_plural "query returned %d rows instead of one: %s\n" -msgstr[0] "consulta retornou %d registro ao invés de um: %s\n" -msgstr[1] "consulta retornou %d registros ao invés de um: %s\n" +msgid "could not find parent extension for %s" +msgstr "não pôde encontrar extensão pai para %s" -#: pg_dump.c:2436 +#: pg_dump.c:2723 #, c-format msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" msgstr "AVISO: dono do esquema \"%s\" parece ser inválido\n" -#: pg_dump.c:2471 +#: pg_dump.c:2767 #, c-format msgid "schema with OID %u does not exist\n" msgstr "esquema com OID %u não existe\n" -#: pg_dump.c:2728 +#: pg_dump.c:3099 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" msgstr "AVISO: dono do tipo de dado \"%s\" parece ser inválido\n" -#: pg_dump.c:2832 +#: pg_dump.c:3203 #, c-format msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" msgstr "AVISO: dono do operador \"%s\" parece ser inválido\n" -#: pg_dump.c:3006 +#: pg_dump.c:3455 #, c-format msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" msgstr "AVISO: dono da classe de operadores \"%s\" parece ser inválido\n" -#: pg_dump.c:3093 +#: pg_dump.c:3542 #, c-format msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" msgstr "AVISO: dono da família de operadores \"%s\" parece ser inválido\n" -#: pg_dump.c:3218 +#: pg_dump.c:3679 #, c-format msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" msgstr "AVISO: dono da função de agregação \"%s\" parece ser inválido\n" -#: pg_dump.c:3373 +#: pg_dump.c:3849 #, c-format msgid "WARNING: owner of function \"%s\" appears to be invalid\n" msgstr "AVISO: dono da função \"%s\" parece ser inválido\n" -#: pg_dump.c:3806 +#: pg_dump.c:4349 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" msgstr "AVISO: dono da tabela \"%s\" parece ser inválido\n" -#: pg_dump.c:3949 +#: pg_dump.c:4497 #, c-format msgid "reading indexes for table \"%s\"\n" msgstr "lendo índices da tabela \"%s\"\n" -#: pg_dump.c:4269 +#: pg_dump.c:4817 #, c-format msgid "reading foreign key constraints for table \"%s\"\n" msgstr "lendo restrições de chave estrangeira da tabela \"%s\"\n" -#: pg_dump.c:4501 +#: pg_dump.c:5049 #, c-format msgid "" "failed sanity check, parent table OID %u of pg_rewrite entry OID %u not " @@ -541,12 +574,12 @@ msgstr "" "verificação de sanidade falhou, OID %u da tabela pai de pg_rewrite com OID " "%u não foi encontrado\n" -#: pg_dump.c:4585 +#: pg_dump.c:5133 #, c-format msgid "reading triggers for table \"%s\"\n" msgstr "lendo gatilhos da tabela \"%s\"\n" -#: pg_dump.c:4748 +#: pg_dump.c:5296 #, c-format msgid "" "query produced null referenced table name for foreign key trigger \"%s\" on " @@ -555,32 +588,32 @@ msgstr "" "consulta produziu nome nulo da tabela referenciada pelo gatilho de chave " "estrangeira \"%s\" na tabela \"%s\" (OID da tabela: %u)\n" -#: pg_dump.c:5118 +#: pg_dump.c:5667 #, c-format msgid "finding the columns and types of table \"%s\"\n" msgstr "encontrando as colunas e tipos da tabela \"%s\"\n" -#: pg_dump.c:5237 +#: pg_dump.c:5813 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "númeração de coluna inválida para tabela \"%s\"\n" -#: pg_dump.c:5273 +#: pg_dump.c:5848 #, c-format msgid "finding default expressions of table \"%s\"\n" msgstr "encontrando expressões padrão da tabela \"%s\"\n" -#: pg_dump.c:5358 +#: pg_dump.c:5901 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" msgstr "valor %d do número da coluna é inválido para tabela \"%s\"\n" -#: pg_dump.c:5376 +#: pg_dump.c:5974 #, c-format msgid "finding check constraints for table \"%s\"\n" msgstr "encontrando restrições de verificação para tabela \"%s\"\n" -#: pg_dump.c:5456 +#: pg_dump.c:6054 #, c-format msgid "expected %d check constraint on table \"%s\" but found %d\n" msgid_plural "expected %d check constraints on table \"%s\" but found %d\n" @@ -590,50 +623,45 @@ msgstr[1] "" "esperado %d restrições de verificação na tabela \"%s\" mas foi encontrado " "%d\n" -#: pg_dump.c:5460 +#: pg_dump.c:6058 msgid "(The system catalogs might be corrupted.)\n" msgstr "(O catálogo do sistema pode estar corrompido).\n" -#: pg_dump.c:7242 pg_dump.c:7349 -#, c-format -msgid "query returned no rows: %s\n" -msgstr "consulta não retornou nenhum registro: %s\n" - -#: pg_dump.c:7699 +#: pg_dump.c:8688 msgid "WARNING: bogus value in proargmodes array\n" msgstr "AVISO: valor inválido na matriz proargmodes\n" -#: pg_dump.c:8011 +#: pg_dump.c:9002 msgid "WARNING: could not parse proallargtypes array\n" msgstr "AVISO: não pôde validar matriz proallargtypes\n" -#: pg_dump.c:8027 +#: pg_dump.c:9018 msgid "WARNING: could not parse proargmodes array\n" msgstr "AVISO: não pôde validar matriz proargmodes\n" -#: pg_dump.c:8041 +#: pg_dump.c:9032 msgid "WARNING: could not parse proargnames array\n" msgstr "AVISO: não pôde validar matriz proargnames\n" -#: pg_dump.c:8052 +#: pg_dump.c:9043 msgid "WARNING: could not parse proconfig array\n" msgstr "AVISO: não pôde validar matriz proconfig\n" -#: pg_dump.c:8108 +#: pg_dump.c:9099 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "valor de provolatile desconhecido para função \"%s\"\n" -#: pg_dump.c:8311 +#: pg_dump.c:9315 msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "AVISO: valor inválido no campo pg_cast.castmethod\n" -#: pg_dump.c:8688 +#: pg_dump.c:9697 #, c-format msgid "WARNING: could not find operator with OID %s\n" msgstr "AVISO: não pôde encontrar operador com OID %s\n" -#: pg_dump.c:9609 +#: pg_dump.c:10816 #, c-format msgid "" "WARNING: aggregate function %s could not be dumped correctly for this " @@ -642,27 +670,27 @@ msgstr "" "AVISO: função de agregação %s não pôde ser copiada corretamente para esta " "versão do banco de dados; ignorado\n" -#: pg_dump.c:10337 +#: pg_dump.c:11620 #, c-format msgid "unknown object type (%d) in default privileges\n" msgstr "tipo de objeto desconhecido (%d) em privilégios padrão\n" -#: pg_dump.c:10354 +#: pg_dump.c:11637 #, c-format msgid "could not parse default ACL list (%s)\n" msgstr "não pôde validar a lista ACL (%s)\n" -#: pg_dump.c:10411 +#: pg_dump.c:11694 #, c-format msgid "could not parse ACL list (%s) for object \"%s\" (%s)\n" msgstr "não pôde validar a lista ACL (%s) para objeto \"%s\" (%s)\n" -#: pg_dump.c:10554 +#: pg_dump.c:12140 #, c-format msgid "query to obtain definition of view \"%s\" returned no data\n" msgstr "consulta para obter definição da visão \"%s\" não retornou dados\n" -#: pg_dump.c:10557 +#: pg_dump.c:12143 #, c-format msgid "" "query to obtain definition of view \"%s\" returned more than one definition\n" @@ -670,44 +698,56 @@ msgstr "" "consulta para obter definição da visão \"%s\" retornou mais de uma " "definição\n" -#: pg_dump.c:10566 +#: pg_dump.c:12152 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)\n" msgstr "definição da visão \"%s\" parece estar vazia (tamanho zero)\n" -#: pg_dump.c:11042 +#: pg_dump.c:12203 +#, c-format +msgid "query returned %d foreign server entry for foreign table \"%s\"\n" +msgid_plural "" +"query returned %d foreign server entries for foreign table \"%s\"\n" +msgstr[0] "" +"consulta retornou %d registro de servidor externo para tabela externa \"%s" +"\"\n" +msgstr[1] "" +"consulta retornou %d registros de servidor externo para tabela externa \"%s" +"\"\n" + +#: pg_dump.c:12754 #, c-format msgid "invalid column number %d for table \"%s\"\n" msgstr "número de colunas %d é inválido para tabela \"%s\"\n" -#: pg_dump.c:11150 +#: pg_dump.c:12865 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "faltando índice para restrição \"%s\"\n" -#: pg_dump.c:11338 +#: pg_dump.c:13053 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "tipo de restrição é desconhecido: %c\n" -#: pg_dump.c:11401 +#: pg_dump.c:13116 msgid "missing pg_database entry for this database\n" msgstr "faltando registro em pg_database para este banco de dados\n" -#: pg_dump.c:11406 +#: pg_dump.c:13121 msgid "found more than one pg_database entry for this database\n" msgstr "" "encontrado mais de um registro em pg_database para este banco de dados\n" -#: pg_dump.c:11438 +#: pg_dump.c:13153 msgid "could not find entry for pg_indexes in pg_class\n" msgstr "não pôde encontrar registro para pg_indexes em pg_class\n" -#: pg_dump.c:11443 +#: pg_dump.c:13158 msgid "found more than one entry for pg_indexes in pg_class\n" msgstr "encontrado mais de um registro para pg_indexes em pg_class\n" -#: pg_dump.c:11514 +#: pg_dump.c:13232 pg_dump.c:13397 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" msgid_plural "" @@ -719,18 +759,23 @@ msgstr[1] "" "consulta para obter dados sobre sequência \"%s\" retornou %d registros " "(esperado 1)\n" -#: pg_dump.c:11525 +#: pg_dump.c:13243 #, c-format msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" msgstr "" "consulta para obter dados sobre sequência \"%s\" retornou nome \"%s\"\n" -#: pg_dump.c:11819 +#: pg_dump.c:13484 +#, c-format +msgid "unexpected tgtype value: %d\n" +msgstr "valor de tgtype inesperado: %d\n" + +#: pg_dump.c:13566 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" msgstr "argumento inválido (%s) para gatilho \"%s\" na tabela \"%s\"\n" -#: pg_dump.c:11935 +#: pg_dump.c:13684 #, c-format msgid "" "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows " @@ -739,242 +784,264 @@ msgstr "" "consulta para obter regra \"%s\" para tabela \"%s\" falhou: número incorreto " "de registros foi retornado\n" -#: pg_dump.c:12030 +#: pg_dump.c:13946 msgid "reading dependency data\n" msgstr "lendo dados sobre dependência\n" -#: pg_dump.c:12408 +#: pg_dump.c:14435 msgid "SQL command failed\n" msgstr "comando SQL falhou\n" -#: common.c:115 +#: common.c:107 msgid "reading schemas\n" msgstr "lendo esquemas\n" -#: common.c:119 +#: common.c:118 +msgid "reading user-defined tables\n" +msgstr "lendo tabelas definidas pelo usuário\n" + +#: common.c:126 +msgid "reading extensions\n" +msgstr "lendo extensões\n" + +#: common.c:130 msgid "reading user-defined functions\n" msgstr "lendo funções definidas pelo usuário\n" -#: common.c:125 +#: common.c:136 msgid "reading user-defined types\n" msgstr "lendo tipos definidos pelo usuário\n" -#: common.c:131 +#: common.c:142 msgid "reading procedural languages\n" msgstr "lendo linguagens procedurais\n" -#: common.c:135 +#: common.c:146 msgid "reading user-defined aggregate functions\n" msgstr "lendo funções de agregação definidas pelo usuário\n" -#: common.c:139 +#: common.c:150 msgid "reading user-defined operators\n" msgstr "lendo operadores definidos pelo usuário\n" -#: common.c:144 +#: common.c:155 msgid "reading user-defined operator classes\n" msgstr "lendo classes de operadores definidas pelo usuário\n" -#: common.c:148 +#: common.c:159 +msgid "reading user-defined operator families\n" +msgstr "lendo famílias de operadores definidas pelo usuário\n" + +#: common.c:163 msgid "reading user-defined text search parsers\n" msgstr "lendo analisadores de busca textual definidos pelo usuário\n" -#: common.c:152 +#: common.c:167 msgid "reading user-defined text search templates\n" msgstr "lendo modelos de busca textual definidos pelo usuário\n" -#: common.c:156 +#: common.c:171 msgid "reading user-defined text search dictionaries\n" msgstr "lendo dicionários de busca textual definidos pelo usuário\n" -#: common.c:160 +#: common.c:175 msgid "reading user-defined text search configurations\n" msgstr "lendo configurações de busca textual definidas pelo usuário\n" -#: common.c:164 +#: common.c:179 msgid "reading user-defined foreign-data wrappers\n" msgstr "lendo adaptadores de dados externos definidos pelo usuário\n" -#: common.c:168 +#: common.c:183 msgid "reading user-defined foreign servers\n" msgstr "lendo servidores externos definidos pelo usuário\n" -#: common.c:172 +#: common.c:187 msgid "reading default privileges\n" msgstr "lendo privilégios padrão\n" -#: common.c:176 -msgid "reading user-defined operator families\n" -msgstr "lendo famílias de operadores definidas pelo usuário\n" +#: common.c:191 +msgid "reading user-defined collations\n" +msgstr "lendo ordenações definidas pelo usuário\n" -#: common.c:180 +#: common.c:196 msgid "reading user-defined conversions\n" msgstr "lendo conversões definidas pelo usuário\n" -#: common.c:184 -msgid "reading user-defined tables\n" -msgstr "lendo tabelas definidas pelo usuário\n" +#: common.c:200 +msgid "reading type casts\n" +msgstr "lendo conversões de tipo\n" -#: common.c:189 +#: common.c:204 msgid "reading table inheritance information\n" msgstr "lendo informação de herança das tabelas\n" -#: common.c:193 +#: common.c:208 msgid "reading rewrite rules\n" msgstr "lendo regras de reescrita\n" -#: common.c:197 -msgid "reading type casts\n" -msgstr "lendo conversões de tipo\n" +#: common.c:217 +msgid "finding extension members\n" +msgstr "encontrando membros de extensões\n" -#: common.c:202 +#: common.c:222 msgid "finding inheritance relationships\n" msgstr "encontrando relacionamentos herdados\n" -#: common.c:206 +#: common.c:226 msgid "reading column info for interesting tables\n" msgstr "lendo informações das colunas em tabelas interessantes\n" -#: common.c:210 +#: common.c:230 msgid "flagging inherited columns in subtables\n" msgstr "marcando colunas herdadas nas subtabelas\n" -#: common.c:214 +#: common.c:234 msgid "reading indexes\n" msgstr "lendo índices\n" -#: common.c:218 +#: common.c:238 msgid "reading constraints\n" msgstr "lendo restrições\n" -#: common.c:222 +#: common.c:242 msgid "reading triggers\n" msgstr "lendo gatilhos\n" -#: common.c:802 +#: common.c:788 #, c-format msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n" msgstr "" "verificação de sanidade falhou, OID pai %u da tabela \"%s\" (OID %u) não foi " "encontrado\n" -#: common.c:844 +#: common.c:830 #, c-format msgid "could not parse numeric array \"%s\": too many numbers\n" msgstr "não pôde validar matriz numérica \"%s\": muitos números\n" -#: common.c:859 +#: common.c:845 #, c-format msgid "could not parse numeric array \"%s\": invalid character in number\n" msgstr "não pôde validar matriz numérica \"%s\": caracter inválido no número\n" -#: common.c:972 +#: common.c:958 msgid "cannot duplicate null pointer\n" msgstr "não pode duplicar ponteiro nulo\n" -#: common.c:975 common.c:986 common.c:997 common.c:1008 -#: pg_backup_archiver.c:727 pg_backup_archiver.c:1103 -#: pg_backup_archiver.c:1234 pg_backup_archiver.c:1705 -#: pg_backup_archiver.c:1862 pg_backup_archiver.c:1908 -#: pg_backup_archiver.c:4048 pg_backup_custom.c:144 pg_backup_custom.c:149 -#: pg_backup_custom.c:155 pg_backup_custom.c:170 pg_backup_custom.c:570 -#: pg_backup_custom.c:1113 pg_backup_custom.c:1122 pg_backup_db.c:154 -#: pg_backup_db.c:164 pg_backup_db.c:212 pg_backup_db.c:256 pg_backup_db.c:271 -#: pg_backup_db.c:305 pg_backup_files.c:114 pg_backup_null.c:72 -#: pg_backup_tar.c:167 pg_backup_tar.c:1011 +#: common.c:961 common.c:972 common.c:983 common.c:994 +#: pg_backup_archiver.c:765 pg_backup_archiver.c:1161 +#: pg_backup_archiver.c:1292 pg_backup_archiver.c:1762 +#: pg_backup_archiver.c:1956 pg_backup_archiver.c:2002 +#: pg_backup_archiver.c:4263 pg_backup_custom.c:132 pg_backup_custom.c:139 +#: pg_backup_custom.c:780 pg_backup_custom.c:907 pg_backup_db.c:147 +#: pg_backup_db.c:157 pg_backup_db.c:205 pg_backup_db.c:249 pg_backup_db.c:264 +#: pg_backup_db.c:298 pg_backup_db.c:491 pg_backup_files.c:114 +#: pg_backup_null.c:72 pg_backup_tar.c:171 pg_backup_tar.c:1005 msgid "out of memory\n" msgstr "sem memória\n" -#: pg_backup_archiver.c:80 +#: pg_backup_archiver.c:88 msgid "archiver" msgstr "arquivador" -#: pg_backup_archiver.c:195 pg_backup_archiver.c:1198 +#: pg_backup_archiver.c:208 pg_backup_archiver.c:1260 #, c-format msgid "could not close output file: %s\n" msgstr "não pôde fechar arquivo de saída: %s\n" -#: pg_backup_archiver.c:220 +#: pg_backup_archiver.c:234 msgid "-C and -c are incompatible options\n" msgstr "-C e -c são opções incompatíveis\n" -#: pg_backup_archiver.c:227 +#: pg_backup_archiver.c:241 msgid "-C and -1 are incompatible options\n" msgstr "-C e -1 são opções incompatíveis\n" -#: pg_backup_archiver.c:239 +#: pg_backup_archiver.c:251 +msgid "parallel restore is not supported with this archive file format\n" +msgstr "restauração paralela não é suportada por este formato de archive\n" + +#: pg_backup_archiver.c:255 +msgid "" +"parallel restore is not supported with archives made by pre-8.0 pg_dump\n" +msgstr "" +"restauração paralela não é suportada por archives produzidos por pg_dump " +"anterior a 8.0\n" + +#: pg_backup_archiver.c:274 msgid "" "cannot restore from compressed archive (compression not supported in this " "installation)\n" msgstr "" -"não pode recuperar arquivo comprimido (compressão não é suportada nesta " +"não pode recuperar archive comprimido (compressão não é suportada nesta " "instalação)\n" -#: pg_backup_archiver.c:249 +#: pg_backup_archiver.c:284 msgid "connecting to database for restore\n" msgstr "conectando ao banco de dados para restauração\n" -#: pg_backup_archiver.c:251 +#: pg_backup_archiver.c:286 msgid "direct database connections are not supported in pre-1.3 archives\n" msgstr "" -"conexões diretas ao banco de dados não são suportadas em arquivos anteriores " +"conexões diretas ao banco de dados não são suportadas em archives anteriores " "a versão 1.3\n" -#: pg_backup_archiver.c:293 +#: pg_backup_archiver.c:328 msgid "implied data-only restore\n" msgstr "restauração do tipo somente dados implícita\n" -#: pg_backup_archiver.c:344 +#: pg_backup_archiver.c:380 #, c-format msgid "dropping %s %s\n" msgstr "removendo %s %s\n" -#: pg_backup_archiver.c:396 +#: pg_backup_archiver.c:432 #, c-format msgid "setting owner and privileges for %s %s\n" msgstr "definindo dono e privilégios para %s %s\n" -#: pg_backup_archiver.c:454 pg_backup_archiver.c:456 +#: pg_backup_archiver.c:490 pg_backup_archiver.c:492 #, c-format msgid "warning from original dump file: %s\n" msgstr "aviso do arquivo de cópia de segurança: %s\n" -#: pg_backup_archiver.c:463 +#: pg_backup_archiver.c:499 #, c-format msgid "creating %s %s\n" msgstr "criando %s %s\n" -#: pg_backup_archiver.c:507 +#: pg_backup_archiver.c:543 #, c-format msgid "connecting to new database \"%s\"\n" msgstr "conectando ao novo banco de dados \"%s\"\n" -#: pg_backup_archiver.c:535 +#: pg_backup_archiver.c:571 #, c-format msgid "restoring %s\n" msgstr "restaurando %s\n" -#: pg_backup_archiver.c:549 +#: pg_backup_archiver.c:585 #, c-format msgid "restoring data for table \"%s\"\n" msgstr "restaurando dados da tabela \"%s\"\n" -#: pg_backup_archiver.c:609 +#: pg_backup_archiver.c:647 #, c-format msgid "executing %s %s\n" msgstr "executando %s %s\n" -#: pg_backup_archiver.c:642 +#: pg_backup_archiver.c:680 #, c-format msgid "disabling triggers for %s\n" msgstr "desabilitando gatilhos para %s\n" -#: pg_backup_archiver.c:668 +#: pg_backup_archiver.c:706 #, c-format msgid "enabling triggers for %s\n" msgstr "habilitando gatilhos para %s\n" -#: pg_backup_archiver.c:698 +#: pg_backup_archiver.c:736 msgid "" "internal error -- WriteData cannot be called outside the context of a " "DataDumper routine\n" @@ -982,546 +1049,527 @@ msgstr "" "erro interno -- WriteData não pode ser chamada fora do contexto de uma " "rotina DataDumper\n" -#: pg_backup_archiver.c:854 +#: pg_backup_archiver.c:893 msgid "large-object output not supported in chosen format\n" msgstr "" "cópia de segurança de objetos grandes não é suportada no formato escolhido\n" -#: pg_backup_archiver.c:908 +#: pg_backup_archiver.c:947 #, c-format msgid "restored %d large object\n" msgid_plural "restored %d large objects\n" msgstr[0] "%d objeto grande restaurado\n" msgstr[1] "%d objetos grandes restaurados\n" -#: pg_backup_archiver.c:929 +#: pg_backup_archiver.c:968 pg_backup_tar.c:723 #, c-format msgid "restoring large object with OID %u\n" msgstr "restaurando objeto grande com OID %u\n" -#: pg_backup_archiver.c:941 +#: pg_backup_archiver.c:980 #, c-format msgid "could not create large object %u: %s" msgstr "não pôde criar objeto grande %u: %s" -#: pg_backup_archiver.c:1006 +#: pg_backup_archiver.c:1042 #, c-format msgid "could not open TOC file \"%s\": %s\n" msgstr "não pôde abrir arquivo TOC \"%s\": %s\n" -#: pg_backup_archiver.c:1025 +#: pg_backup_archiver.c:1083 #, c-format msgid "WARNING: line ignored: %s\n" msgstr "AVISO: linha ignorada: %s\n" -#: pg_backup_archiver.c:1032 +#: pg_backup_archiver.c:1090 #, c-format msgid "could not find entry for ID %d\n" msgstr "não pôde encontrar registro para ID %d\n" -#: pg_backup_archiver.c:1053 pg_backup_files.c:172 pg_backup_files.c:457 +#: pg_backup_archiver.c:1111 pg_backup_files.c:172 pg_backup_files.c:457 #, c-format msgid "could not close TOC file: %s\n" msgstr "não pôde fechar arquivo TOC: %s\n" -#: pg_backup_archiver.c:1177 pg_backup_custom.c:181 pg_backup_files.c:130 +#: pg_backup_archiver.c:1230 pg_backup_custom.c:152 pg_backup_files.c:130 #: pg_backup_files.c:262 #, c-format msgid "could not open output file \"%s\": %s\n" msgstr "não pôde abrir arquivo de saída \"%s\": %s\n" -#: pg_backup_archiver.c:1180 pg_backup_custom.c:188 pg_backup_files.c:137 +#: pg_backup_archiver.c:1233 pg_backup_custom.c:159 pg_backup_files.c:137 #, c-format msgid "could not open output file: %s\n" msgstr "não pôde abrir arquivo de saída: %s\n" -#: pg_backup_archiver.c:1277 +#: pg_backup_archiver.c:1335 #, c-format msgid "wrote %lu byte of large object data (result = %lu)\n" msgid_plural "wrote %lu bytes of large object data (result = %lu)\n" msgstr[0] "escreveu %lu byte de dados do objeto grande (resultado = %lu)\n" msgstr[1] "escreveu %lu bytes de dados do objeto grande (resultado = %lu)\n" -#: pg_backup_archiver.c:1283 +#: pg_backup_archiver.c:1341 #, c-format msgid "could not write to large object (result: %lu, expected: %lu)\n" msgstr "não pôde escrever objeto grande (resultado: %lu, esperado %lu)\n" -#: pg_backup_archiver.c:1341 pg_backup_archiver.c:1364 pg_backup_custom.c:781 -#: pg_backup_custom.c:1035 pg_backup_custom.c:1049 pg_backup_files.c:432 -#: pg_backup_tar.c:586 pg_backup_tar.c:1089 pg_backup_tar.c:1382 +#: pg_backup_archiver.c:1399 pg_backup_archiver.c:1422 pg_backup_custom.c:652 +#: pg_backup_files.c:432 pg_backup_tar.c:590 pg_backup_tar.c:1092 +#: pg_backup_tar.c:1385 #, c-format msgid "could not write to output file: %s\n" msgstr "não pôde escrever em arquivo de saída: %s\n" -#: pg_backup_archiver.c:1349 +#: pg_backup_archiver.c:1407 msgid "could not write to custom output routine\n" msgstr "não pôde escrever rotina de saída personalizada\n" -#: pg_backup_archiver.c:1447 +#: pg_backup_archiver.c:1505 msgid "Error while INITIALIZING:\n" msgstr "Erro ao INICIALIZAR:\n" -#: pg_backup_archiver.c:1452 +#: pg_backup_archiver.c:1510 msgid "Error while PROCESSING TOC:\n" msgstr "Erro ao PROCESSAR TOC:\n" -#: pg_backup_archiver.c:1457 +#: pg_backup_archiver.c:1515 msgid "Error while FINALIZING:\n" msgstr "Erro ao FINALIZAR:\n" -#: pg_backup_archiver.c:1462 +#: pg_backup_archiver.c:1520 #, c-format msgid "Error from TOC entry %d; %u %u %s %s %s\n" msgstr "Erro no registro do TOC %d; %u %u %s %s %s\n" -#: pg_backup_archiver.c:1598 +#: pg_backup_archiver.c:1655 #, c-format msgid "unexpected data offset flag %d\n" msgstr "Marcador de deslocamento de dado %d é inesperado\n" -#: pg_backup_archiver.c:1611 +#: pg_backup_archiver.c:1668 msgid "file offset in dump file is too large\n" msgstr "deslocamento no arquivo de cópia de segurança é muito grande\n" -#: pg_backup_archiver.c:1708 pg_backup_archiver.c:3009 pg_backup_custom.c:757 -#: pg_backup_files.c:419 pg_backup_tar.c:785 +#: pg_backup_archiver.c:1765 pg_backup_archiver.c:3167 pg_backup_custom.c:630 +#: pg_backup_files.c:419 pg_backup_tar.c:779 msgid "unexpected end of file\n" msgstr "fim de arquivo inesperado\n" -#: pg_backup_archiver.c:1725 +#: pg_backup_archiver.c:1782 msgid "attempting to ascertain archive format\n" -msgstr "tentando verificar formato de arquivo\n" +msgstr "tentando verificar formato do archive\n" + +#: pg_backup_archiver.c:1808 pg_backup_archiver.c:1818 +#, c-format +msgid "directory name too long: \"%s\"\n" +msgstr "nome de diretório é muito longo: \"%s\"\n" + +#: pg_backup_archiver.c:1826 +#, c-format +msgid "" +"directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not " +"exist)\n" +msgstr "" +"diretório \"%s\" não parece ser um archive válido (\"toc.dat\" não existe)\n" -#: pg_backup_archiver.c:1741 pg_backup_custom.c:200 pg_backup_custom.c:888 +#: pg_backup_archiver.c:1834 pg_backup_custom.c:171 pg_backup_custom.c:762 #: pg_backup_files.c:155 pg_backup_files.c:307 #, c-format msgid "could not open input file \"%s\": %s\n" msgstr "não pôde abrir arquivo de entrada \"%s\": %s\n" -#: pg_backup_archiver.c:1748 pg_backup_custom.c:207 pg_backup_files.c:162 +#: pg_backup_archiver.c:1842 pg_backup_custom.c:178 pg_backup_files.c:162 #, c-format msgid "could not open input file: %s\n" msgstr "não pôde abrir arquivo de entrada: %s\n" -#: pg_backup_archiver.c:1757 +#: pg_backup_archiver.c:1851 #, c-format msgid "could not read input file: %s\n" msgstr "não pôde ler arquivo de entrada: %s\n" -#: pg_backup_archiver.c:1759 +#: pg_backup_archiver.c:1853 #, c-format msgid "input file is too short (read %lu, expected 5)\n" msgstr "arquivo de entrada é muito pequeno (lido %lu, esperado 5)\n" -#: pg_backup_archiver.c:1817 +#: pg_backup_archiver.c:1911 msgid "input file does not appear to be a valid archive (too short?)\n" -msgstr "arquivo de entrada não parece ser um arquivo válido (muito pequeno?)\n" +msgstr "arquivo de entrada não parece ser um archive válido (muito pequeno?)\n" -#: pg_backup_archiver.c:1820 +#: pg_backup_archiver.c:1914 msgid "input file does not appear to be a valid archive\n" -msgstr "arquivo de entrada não parece ser um arquivo válido\n" +msgstr "arquivo de entrada não parece ser um archive válido\n" -#: pg_backup_archiver.c:1840 +#: pg_backup_archiver.c:1934 #, c-format msgid "could not close input file: %s\n" msgstr "não pôde fechar arquivo de entrada: %s\n" -#: pg_backup_archiver.c:1857 +#: pg_backup_archiver.c:1951 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "alocando AH para %s, formato %d\n" -#: pg_backup_archiver.c:1965 +#: pg_backup_archiver.c:2062 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "formato de arquivo \"%d\" é desconhecido\n" -#: pg_backup_archiver.c:2087 +#: pg_backup_archiver.c:2184 #, c-format msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" msgstr "" "ID do registro %d fora do intervalo -- talvez o TOC esteja corrompido\n" -#: pg_backup_archiver.c:2203 +#: pg_backup_archiver.c:2300 #, c-format msgid "read TOC entry %d (ID %d) for %s %s\n" msgstr "lendo registro do TOC %d (ID %d) de %s %s\n" -#: pg_backup_archiver.c:2237 +#: pg_backup_archiver.c:2334 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "codificação \"%s\" é desconhecida\n" -#: pg_backup_archiver.c:2242 +#: pg_backup_archiver.c:2339 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "item ENCODING inválido: %s\n" -#: pg_backup_archiver.c:2260 +#: pg_backup_archiver.c:2357 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "item STDSTRINGS inválido: %s\n" -#: pg_backup_archiver.c:2452 +#: pg_backup_archiver.c:2555 #, c-format msgid "could not set session user to \"%s\": %s" msgstr "não pôde definir \"%s\" como usuário da sessão: %s" -#: pg_backup_archiver.c:2790 pg_backup_archiver.c:2940 +#: pg_backup_archiver.c:2895 pg_backup_archiver.c:3077 #, c-format msgid "WARNING: don't know how to set owner for object type %s\n" msgstr "AVISO: não se sabe como definir o dono para tipo de objeto %s\n" -#: pg_backup_archiver.c:2972 +#: pg_backup_archiver.c:3130 msgid "" "WARNING: requested compression not available in this installation -- archive " "will be uncompressed\n" msgstr "" -"AVISO: compressão requerida não está disponível nesta instalação -- arquivo " +"AVISO: compressão requerida não está disponível nesta instalação -- archive " "será descomprimido\n" -#: pg_backup_archiver.c:3012 +#: pg_backup_archiver.c:3170 msgid "did not find magic string in file header\n" msgstr "não encontrou cadeia de caracteres mágica no cabeçalho do arquivo\n" -#: pg_backup_archiver.c:3025 +#: pg_backup_archiver.c:3183 #, c-format msgid "unsupported version (%d.%d) in file header\n" msgstr "versão não é suportada (%d.%d) no cabeçalho do arquivo\n" -#: pg_backup_archiver.c:3030 +#: pg_backup_archiver.c:3188 #, c-format msgid "sanity check on integer size (%lu) failed\n" msgstr "verificação de sanidade no tamanho do inteiro (%lu) falhou\n" -#: pg_backup_archiver.c:3034 +#: pg_backup_archiver.c:3192 msgid "" "WARNING: archive was made on a machine with larger integers, some operations " "might fail\n" msgstr "" -"AVISO: arquivo foi feito em uma máquina com inteiros longos, algumas " +"AVISO: archive foi feito em uma máquina com inteiros longos, algumas " "operações podem falhar\n" -#: pg_backup_archiver.c:3044 +#: pg_backup_archiver.c:3202 #, c-format msgid "expected format (%d) differs from format found in file (%d)\n" msgstr "formato esperado (%d) difere do formato encontrado no arquivo (%d)\n" -#: pg_backup_archiver.c:3060 +#: pg_backup_archiver.c:3218 msgid "" "WARNING: archive is compressed, but this installation does not support " "compression -- no data will be available\n" msgstr "" -"AVISO: arquivo está comprimido, mas esta instalação não suporta compressão " +"AVISO: archive está comprimido, mas esta instalação não suporta compressão " "-- nenhum dado está disponível\n" -#: pg_backup_archiver.c:3078 +#: pg_backup_archiver.c:3236 msgid "WARNING: invalid creation date in header\n" msgstr "AVISO: data de criação inválida no cabeçalho\n" -#: pg_backup_archiver.c:3175 +#: pg_backup_archiver.c:3334 msgid "entering restore_toc_entries_parallel\n" msgstr "executando restore_toc_entries_parallel\n" -#: pg_backup_archiver.c:3179 -msgid "parallel restore is not supported with this archive file format\n" -msgstr "restauração paralela não é suportada por este formato de arquivo\n" - -#: pg_backup_archiver.c:3183 -msgid "" -"parallel restore is not supported with archives made by pre-8.0 pg_dump\n" -msgstr "" -"restauração paralela não é suportada por arquivos produzidos por pg_dum " -"anterior a 8.0\n" - -#: pg_backup_archiver.c:3205 +#: pg_backup_archiver.c:3375 #, c-format msgid "processing item %d %s %s\n" msgstr "processando item %d %s %s\n" -#: pg_backup_archiver.c:3266 +#: pg_backup_archiver.c:3451 msgid "entering main parallel loop\n" msgstr "executando laço paralelo principal\n" -#: pg_backup_archiver.c:3280 +#: pg_backup_archiver.c:3465 #, c-format msgid "skipping item %d %s %s\n" msgstr "ignorando item %d %s %s\n" -#: pg_backup_archiver.c:3296 +#: pg_backup_archiver.c:3481 #, c-format msgid "launching item %d %s %s\n" msgstr "iniciando item %d %s %s\n" -#: pg_backup_archiver.c:3333 +#: pg_backup_archiver.c:3518 #, c-format msgid "worker process crashed: status %d\n" msgstr "processo worker falhou: status %d\n" -#: pg_backup_archiver.c:3338 +#: pg_backup_archiver.c:3523 msgid "finished main parallel loop\n" msgstr "laço paralelo principal terminado\n" -#: pg_backup_archiver.c:3356 +#: pg_backup_archiver.c:3541 #, c-format msgid "processing missed item %d %s %s\n" msgstr "iniciando item adiado %d %s %s\n" -#: pg_backup_archiver.c:3382 +#: pg_backup_archiver.c:3567 msgid "parallel_restore should not return\n" msgstr "parallel_restore não pode retornar\n" -#: pg_backup_archiver.c:3388 +#: pg_backup_archiver.c:3573 #, c-format msgid "could not create worker process: %s\n" msgstr "não pôde criar processo filho: %s\n" -#: pg_backup_archiver.c:3396 +#: pg_backup_archiver.c:3581 #, c-format msgid "could not create worker thread: %s\n" msgstr "não pôde criar thread filho: %s\n" -#: pg_backup_archiver.c:3620 +#: pg_backup_archiver.c:3805 msgid "no item ready\n" msgstr "nenhum item está pronto\n" -#: pg_backup_archiver.c:3715 +#: pg_backup_archiver.c:3900 msgid "could not find slot of finished worker\n" msgstr "não pôde encontrar slot do processo filho terminado\n" -#: pg_backup_archiver.c:3717 +#: pg_backup_archiver.c:3902 #, c-format msgid "finished item %d %s %s\n" msgstr "item terminado %d %s %s\n" -#: pg_backup_archiver.c:3730 +#: pg_backup_archiver.c:3915 #, c-format msgid "worker process failed: exit code %d\n" msgstr "processo filho falhou: código de saída %d\n" -#: pg_backup_archiver.c:3882 +#: pg_backup_archiver.c:4111 #, c-format msgid "transferring dependency %d -> %d to %d\n" msgstr "tranferindo dependência %d -> %d para %d\n" -#: pg_backup_archiver.c:3956 +#: pg_backup_archiver.c:4180 #, c-format msgid "reducing dependencies for %d\n" msgstr "reduzindo dependências para %d\n" -#: pg_backup_archiver.c:4014 +#: pg_backup_archiver.c:4229 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "tabela \"%s\" não pôde ser criada, não restaurará os seus dados\n" -#: pg_backup_custom.c:97 +#: pg_backup_custom.c:87 msgid "custom archiver" msgstr "arquivador personalizado" -#: pg_backup_custom.c:405 pg_backup_null.c:153 +#: pg_backup_custom.c:373 pg_backup_null.c:153 msgid "invalid OID for large object\n" msgstr "OID inválido para objeto grande\n" -#: pg_backup_custom.c:471 +#: pg_backup_custom.c:444 #, c-format msgid "unrecognized data block type (%d) while searching archive\n" -msgstr "tipo de bloco de dados desconhecido (%d) durante busca no arquivo\n" +msgstr "tipo de bloco de dados desconhecido (%d) durante busca no archive\n" -#: pg_backup_custom.c:482 +#: pg_backup_custom.c:455 #, c-format msgid "error during file seek: %s\n" msgstr "erro durante busca no arquivo: %s\n" -#: pg_backup_custom.c:492 +#: pg_backup_custom.c:465 #, c-format msgid "" "could not find block ID %d in archive -- possibly due to out-of-order " "restore request, which cannot be handled due to lack of data offsets in " "archive\n" msgstr "" -"não pôde encontrar bloco com ID %d no arquivo -- possivelmente por causa de " +"não pôde encontrar bloco com ID %d no archive -- possivelmente por causa de " "pedido de restauração fora de ordem, que não pode ser manipulado pela falta " "de deslocamentos no arquivo\n" -#: pg_backup_custom.c:497 +#: pg_backup_custom.c:470 #, c-format msgid "" "could not find block ID %d in archive -- possibly due to out-of-order " "restore request, which cannot be handled due to non-seekable input file\n" msgstr "" -"não pôde encontrar bloco com ID %d no arquivo -- possivelmente por causa de " -"pedido de restauração fora de ordem, que não pode ser manipulado por arquivo " -"de entrada não posicionável\n" +"não pôde encontrar bloco com ID %d no archive -- possivelmente por causa de " +"pedido de restauração fora de ordem, que não pode ser manipulado porque " +"arquivo de entrada é não posicionável\n" -#: pg_backup_custom.c:502 +#: pg_backup_custom.c:475 #, c-format msgid "could not find block ID %d in archive -- possibly corrupt archive\n" msgstr "" -"não pôde encontrar bloco com ID %d em arquivo -- possivelmente arquivo " +"não pôde encontrar bloco com ID %d em archive -- possivelmente archive " "corrompido\n" -#: pg_backup_custom.c:509 +#: pg_backup_custom.c:482 #, c-format msgid "found unexpected block ID (%d) when reading data -- expected %d\n" msgstr "" "encontrado bloco inesperado com ID (%d) durante leitura de dados -- esperado " "%d\n" -#: pg_backup_custom.c:523 +#: pg_backup_custom.c:496 #, c-format msgid "unrecognized data block type %d while restoring archive\n" msgstr "" -"tipo de bloco de dados desconhecido %d durante restauração do arquivo\n" - -#: pg_backup_custom.c:557 pg_backup_custom.c:985 -#, c-format -msgid "could not initialize compression library: %s\n" -msgstr "não pôde inicializar biblioteca de compressão: %s\n" +"tipo de bloco de dados desconhecido %d durante restauração do archive\n" -#: pg_backup_custom.c:581 pg_backup_custom.c:705 +#: pg_backup_custom.c:578 pg_backup_custom.c:916 msgid "could not read from input file: end of file\n" msgstr "não pôde ler arquivo de entrada: fim do arquivo\n" -#: pg_backup_custom.c:584 pg_backup_custom.c:708 +#: pg_backup_custom.c:581 pg_backup_custom.c:919 #, c-format msgid "could not read from input file: %s\n" msgstr "não pôde ler arquivo de entrada: %s\n" -#: pg_backup_custom.c:601 pg_backup_custom.c:628 -#, c-format -msgid "could not uncompress data: %s\n" -msgstr "não pôde descomprimir dados: %s\n" - -#: pg_backup_custom.c:634 -#, c-format -msgid "could not close compression library: %s\n" -msgstr "não pôde fechar biblioteca de compressão: %s\n" - -#: pg_backup_custom.c:736 +#: pg_backup_custom.c:610 #, c-format msgid "could not write byte: %s\n" msgstr "não pôde escrever byte: %s\n" -#: pg_backup_custom.c:849 pg_backup_custom.c:882 +#: pg_backup_custom.c:718 pg_backup_custom.c:756 #, c-format msgid "could not close archive file: %s\n" -msgstr "não pôde fechar arquivo: %s\n" +msgstr "não pôde fechar archive: %s\n" -#: pg_backup_custom.c:868 +#: pg_backup_custom.c:737 msgid "can only reopen input archives\n" -msgstr "não pôde reabrir arquivos de entrada\n" +msgstr "não pôde reabrir archives de entrada\n" -#: pg_backup_custom.c:870 -msgid "cannot reopen stdin\n" -msgstr "não pôde reabrir entrada padrão\n" +#: pg_backup_custom.c:744 +msgid "parallel restore from stdin is not supported\n" +msgstr "restauração paralela da entrada padrão não é suportada\n" -#: pg_backup_custom.c:872 -msgid "cannot reopen non-seekable file\n" -msgstr "não pode reabrir arquivo não posicionável\n" +#: pg_backup_custom.c:746 +msgid "parallel restore from non-seekable file is not supported\n" +msgstr "restauração paralela de arquivo não posicionável não é suportada\n" -#: pg_backup_custom.c:877 +#: pg_backup_custom.c:751 #, c-format msgid "could not determine seek position in archive file: %s\n" -msgstr "não pôde determinar posição de busca no arquivo: %s\n" +msgstr "não pôde determinar posição de busca no archive: %s\n" -#: pg_backup_custom.c:892 +#: pg_backup_custom.c:766 #, c-format msgid "could not set seek position in archive file: %s\n" -msgstr "não pôde definir posição de busca no arquivo: %s\n" +msgstr "não pôde definir posição de busca no archive: %s\n" + +#: pg_backup_custom.c:786 +msgid "compressor active\n" +msgstr "compressor ativo\n" -#: pg_backup_custom.c:914 +#: pg_backup_custom.c:822 msgid "WARNING: ftell mismatch with expected position -- ftell used\n" msgstr "AVISO: ftell não corresponde com posição esperada -- ftell utilizado\n" -#: pg_backup_custom.c:1016 -#, c-format -msgid "could not compress data: %s\n" -msgstr "não pôde comprimir dados: %s\n" - -#: pg_backup_custom.c:1094 -#, c-format -msgid "could not close compression stream: %s\n" -msgstr "não pôde fechar arquivo comprimido: %s\n" - #: pg_backup_db.c:25 msgid "archiver (db)" msgstr "arquivador (bd)" -#: pg_backup_db.c:61 +#: pg_backup_db.c:54 msgid "could not get server_version from libpq\n" msgstr "não pôde obter versão do servidor a partir da libpq\n" -#: pg_backup_db.c:74 pg_dumpall.c:1718 +#: pg_backup_db.c:67 pg_dumpall.c:1741 #, c-format msgid "server version: %s; %s version: %s\n" msgstr "versão do servidor: %s; versão do %s: %s\n" -#: pg_backup_db.c:76 pg_dumpall.c:1720 +#: pg_backup_db.c:69 pg_dumpall.c:1743 #, c-format msgid "aborting because of server version mismatch\n" msgstr "interrompendo porque a versão do servidor não corresponde\n" -#: pg_backup_db.c:147 +#: pg_backup_db.c:140 #, c-format msgid "connecting to database \"%s\" as user \"%s\"\n" msgstr "conectando ao banco de dados \"%s\" como usuário \"%s\"\n" -#: pg_backup_db.c:152 pg_backup_db.c:207 pg_backup_db.c:254 pg_backup_db.c:303 -#: pg_dumpall.c:1614 pg_dumpall.c:1666 +#: pg_backup_db.c:145 pg_backup_db.c:200 pg_backup_db.c:247 pg_backup_db.c:296 +#: pg_dumpall.c:1637 pg_dumpall.c:1689 msgid "Password: " msgstr "Senha: " -#: pg_backup_db.c:188 +#: pg_backup_db.c:181 msgid "failed to reconnect to database\n" msgstr "falhou ao reconectar ao banco de dados\n" -#: pg_backup_db.c:193 +#: pg_backup_db.c:186 #, c-format msgid "could not reconnect to database: %s" msgstr "não pôde reconectar ao banco de dados: %s" -#: pg_backup_db.c:209 +#: pg_backup_db.c:202 msgid "connection needs password\n" msgstr "conexão precisa de senha\n" -#: pg_backup_db.c:250 +#: pg_backup_db.c:243 msgid "already connected to a database\n" msgstr "já está conectado ao banco de dados\n" -#: pg_backup_db.c:295 +#: pg_backup_db.c:288 msgid "failed to connect to database\n" msgstr "falhou ao conectar ao banco de dados\n" -#: pg_backup_db.c:314 +#: pg_backup_db.c:307 #, c-format msgid "connection to database \"%s\" failed: %s" msgstr "conexão com banco de dados \"%s\" falhou: %s" -#: pg_backup_db.c:329 +#: pg_backup_db.c:322 #, c-format msgid "%s" msgstr "%s" -#: pg_backup_db.c:441 +#: pg_backup_db.c:414 pg_backup_db.c:485 pg_backup_db.c:494 +msgid "could not execute query" +msgstr "não pôde executar consulta" + +#: pg_backup_db.c:465 #, c-format msgid "error returned by PQputCopyData: %s" msgstr "erro retornado pelo PQputCopyData: %s" -#: pg_backup_db.c:451 +#: pg_backup_db.c:513 #, c-format msgid "error returned by PQputCopyEnd: %s" msgstr "erro retornado pelo PQputCopyEnd: %s" -#: pg_backup_db.c:498 -msgid "could not execute query" -msgstr "não pôde executar consulta" - -#: pg_backup_db.c:696 +#: pg_backup_db.c:530 msgid "could not start database transaction" msgstr "não pôde iniciar transação do banco de dados" -#: pg_backup_db.c:702 +#: pg_backup_db.c:536 msgid "could not commit database transaction" msgstr "não pôde efetivar transação do banco de dados" @@ -1566,7 +1614,7 @@ msgstr "não pôde escrever byte\n" msgid "could not open large object TOC for output: %s\n" msgstr "não pôde abrir arquivo TOC de objeto grande para saída: %s\n" -#: pg_backup_files.c:510 pg_backup_tar.c:935 +#: pg_backup_files.c:510 pg_backup_tar.c:929 #, c-format msgid "invalid OID for large object (%u)\n" msgstr "OID inválido para objeto grande (%u)\n" @@ -1584,144 +1632,130 @@ msgstr "não pôde fechar arquivo de objeto grande\n" msgid "this format cannot be read\n" msgstr "este formato não pode ser lido\n" -#: pg_backup_tar.c:101 +#: pg_backup_tar.c:105 msgid "tar archiver" msgstr "arquivador tar" -#: pg_backup_tar.c:179 +#: pg_backup_tar.c:183 #, c-format msgid "could not open TOC file \"%s\" for output: %s\n" msgstr "não pôde abrir arquivo TOC \"%s\" para saída: %s\n" -#: pg_backup_tar.c:187 +#: pg_backup_tar.c:191 #, c-format msgid "could not open TOC file for output: %s\n" msgstr "não pôde abrir arquivo TOC para saída: %s\n" -#: pg_backup_tar.c:214 pg_backup_tar.c:370 +#: pg_backup_tar.c:218 pg_backup_tar.c:374 msgid "compression is not supported by tar archive format\n" -msgstr "compressão não é suportada pelo formato de saída tar\n" +msgstr "compressão não é suportada pelo formato tar\n" -#: pg_backup_tar.c:222 +#: pg_backup_tar.c:226 #, c-format msgid "could not open TOC file \"%s\" for input: %s\n" msgstr "não pôde abrir arquivo TOC \"%s\" para entrada: %s\n" -#: pg_backup_tar.c:229 +#: pg_backup_tar.c:233 #, c-format msgid "could not open TOC file for input: %s\n" msgstr "não pôde abrir arquivo TOC para entrada: %s\n" -#: pg_backup_tar.c:356 +#: pg_backup_tar.c:360 #, c-format msgid "could not find file \"%s\" in archive\n" -msgstr "não pôde encontrar arquivo \"%s\" no arquivo de dados\n" +msgstr "não pôde encontrar arquivo \"%s\" no archive\n" -#: pg_backup_tar.c:412 +#: pg_backup_tar.c:416 #, c-format msgid "could not generate temporary file name: %s\n" msgstr "não pôde gerar arquivo temporário: %s\n" -#: pg_backup_tar.c:421 +#: pg_backup_tar.c:425 msgid "could not open temporary file\n" msgstr "não pôde abrir arquivo temporário\n" -#: pg_backup_tar.c:448 +#: pg_backup_tar.c:452 msgid "could not close tar member\n" msgstr "não pôde fechar membro tar\n" -#: pg_backup_tar.c:548 +#: pg_backup_tar.c:552 msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" msgstr "erro interno -- th e fh não foram especificados em tarReadRaw()\n" -#: pg_backup_tar.c:674 +#: pg_backup_tar.c:678 #, c-format -msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n" -msgstr "comando COPY inválido -- não pôde encontrar \"copy\" em \"%s\"\n" - -#: pg_backup_tar.c:692 -#, c-format -msgid "" -"invalid COPY statement -- could not find \"from stdin\" in string \"%s\" " -"starting at position %lu\n" -msgstr "" -"comando COPY inválido -- não pôde encontrar \"from stdin\" em \"%s\" " -"iniciando da posição %lu\n" +msgid "unexpected COPY statement syntax: \"%s\"\n" +msgstr "sintaxe do comando COPY inesperada: \"%s\"\n" -#: pg_backup_tar.c:729 -#, c-format -msgid "restoring large object OID %u\n" -msgstr "restaurando OID do objeto grande %u\n" - -#: pg_backup_tar.c:880 +#: pg_backup_tar.c:874 msgid "could not write null block at end of tar archive\n" -msgstr "não pôde escrever bloco nulo no fim do arquivo tar\n" +msgstr "não pôde escrever bloco nulo no fim do archive tar\n" -#: pg_backup_tar.c:1080 +#: pg_backup_tar.c:1083 msgid "archive member too large for tar format\n" -msgstr "membro de arquivo muito grande para o formato tar\n" +msgstr "membro de archive muito grande para o formato tar\n" -#: pg_backup_tar.c:1095 +#: pg_backup_tar.c:1098 #, c-format msgid "could not close temporary file: %s\n" msgstr "não pôde fechar arquivo temporário: %s\n" -#: pg_backup_tar.c:1105 +#: pg_backup_tar.c:1108 #, c-format msgid "actual file length (%s) does not match expected (%s)\n" msgstr "tamanho do arquivo atual (%s) não corresponde ao esperado (%s)\n" -#: pg_backup_tar.c:1113 +#: pg_backup_tar.c:1116 msgid "could not output padding at end of tar member\n" msgstr "não pôde escrever preenchimento ao fim do membro tar\n" -#: pg_backup_tar.c:1142 +#: pg_backup_tar.c:1145 #, c-format msgid "moving from position %s to next member at file position %s\n" msgstr "movendo da posição %s para próximo membro na posição %s do arquivo\n" -#: pg_backup_tar.c:1153 +#: pg_backup_tar.c:1156 #, c-format msgid "now at file position %s\n" msgstr "agora na posição %s do arquivo\n" -#: pg_backup_tar.c:1162 pg_backup_tar.c:1192 +#: pg_backup_tar.c:1165 pg_backup_tar.c:1195 #, c-format msgid "could not find header for file \"%s\" in tar archive\n" -msgstr "não pôde encontrar cabeçalho do arquivo \"%s\" no arquivo tar\n" +msgstr "não pôde encontrar cabeçalho do arquivo \"%s\" no archive tar\n" -#: pg_backup_tar.c:1176 +#: pg_backup_tar.c:1179 #, c-format msgid "skipping tar member %s\n" msgstr "ignorando membro tar %s\n" -#: pg_backup_tar.c:1180 +#: pg_backup_tar.c:1183 #, c-format msgid "" "restoring data out of order is not supported in this archive format: \"%s\" " "is required, but comes before \"%s\" in the archive file.\n" msgstr "" -"restaurar dados fora da ordem não é suportado neste formato de arquivo: \"%s" -"\" é requerido, mas vem antes de \"%s\" no arquivo.\n" +"restaurar dados fora da ordem não é suportado neste formato de archive: \"%s" +"\" é requerido, mas vem antes de \"%s\" no archive.\n" -#: pg_backup_tar.c:1226 +#: pg_backup_tar.c:1229 #, c-format msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n" msgstr "posição atual no arquivo vs. previsão não correspondem (%s vs. %s)\n" -#: pg_backup_tar.c:1241 +#: pg_backup_tar.c:1244 #, c-format msgid "incomplete tar header found (%lu byte)\n" msgid_plural "incomplete tar header found (%lu bytes)\n" msgstr[0] "cabeçalho tar incompleto foi encontrado (%lu byte)\n" msgstr[1] "cabeçalho tar incompleto foi encontrado (%lu bytes)\n" -#: pg_backup_tar.c:1279 +#: pg_backup_tar.c:1282 #, c-format msgid "TOC Entry %s at %s (length %lu, checksum %d)\n" msgstr "Registro TOC %s em %s (tamanho %lu, soma de verificação %d)\n" -#: pg_backup_tar.c:1289 +#: pg_backup_tar.c:1292 #, c-format msgid "" "corrupt tar header found in %s (expected %d, computed %d) file position %s\n" @@ -1729,84 +1763,85 @@ msgstr "" "cabeçalho tar corrompido foi encontrado em %s (esperado %d, computado %d) na " "posição %s do arquivo\n" -#: pg_restore.c:319 +#: pg_restore.c:300 #, c-format msgid "%s: options -d/--dbname and -f/--file cannot be used together\n" msgstr "%s: opções -d/--dbname e -f/--file não podem ser utilizadas juntas\n" -#: pg_restore.c:331 +#: pg_restore.c:312 #, c-format msgid "%s: cannot specify both --single-transaction and multiple jobs\n" msgstr "" "%s: não pode especificar ambas opções --single-transaction e múltiplas " "tarefas\n" -#: pg_restore.c:361 +#: pg_restore.c:348 #, c-format -msgid "unrecognized archive format \"%s\"; please specify \"c\" or \"t\"\n" +msgid "" +"unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"\n" msgstr "" -"formato de arquivo desconhecido \"%s\"; por favor especifique \"c\" ou \"t" -"\"\n" +"formato de archive desconhecido \"%s\"; por favor especifique \"c\", \"d\" " +"ou \"t\"\n" -#: pg_restore.c:395 +#: pg_restore.c:382 #, c-format msgid "WARNING: errors ignored on restore: %d\n" msgstr "AVISO: erros ignorados durante restauração: %d\n" -#: pg_restore.c:409 +#: pg_restore.c:396 #, c-format msgid "" "%s restores a PostgreSQL database from an archive created by pg_dump.\n" "\n" msgstr "" -"%s restaura um banco de dados PostgreSQL a partir de um arquivo criado pelo " +"%s restaura um banco de dados PostgreSQL a partir de um archive criado pelo " "pg_dump.\n" "\n" -#: pg_restore.c:411 +#: pg_restore.c:398 #, c-format msgid " %s [OPTION]... [FILE]\n" msgstr " %s [OPÇÃO]... [ARQUIVO]\n" -#: pg_restore.c:414 +#: pg_restore.c:401 #, c-format msgid " -d, --dbname=NAME connect to database name\n" msgstr " -d, --dbname=NOME conecta ao banco de dados informado\n" -#: pg_restore.c:415 +#: pg_restore.c:402 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=ARQUIVO nome do arquivo de saída\n" -#: pg_restore.c:416 +#: pg_restore.c:403 #, c-format -msgid " -F, --format=c|t backup file format (should be automatic)\n" +msgid " -F, --format=c|d|t backup file format (should be automatic)\n" msgstr "" -" -F, --format=c|t formato de arquivo de cópia de segurança (deve " +" -F, --format=c|d|t formato de arquivo de cópia de segurança (deve " "ser automático)\n" -#: pg_restore.c:417 +#: pg_restore.c:404 #, c-format msgid " -l, --list print summarized TOC of the archive\n" -msgstr " -l, --list mostra TOC resumido do arquivo\n" +msgstr " -l, --list mostra TOC resumido do archive\n" -#: pg_restore.c:418 +#: pg_restore.c:405 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose modo de detalhe\n" -#: pg_restore.c:419 +#: pg_restore.c:406 #, c-format msgid " --help show this help, then exit\n" msgstr " --help mostra esta ajuda e termina\n" -#: pg_restore.c:420 +#: pg_restore.c:407 #, c-format msgid " --version output version information, then exit\n" msgstr "" " --version mostra informação sobre a versão e termina\n" -#: pg_restore.c:422 +#: pg_restore.c:409 #, c-format msgid "" "\n" @@ -1815,12 +1850,12 @@ msgstr "" "\n" "Opções que controlam a restauração:\n" -#: pg_restore.c:423 +#: pg_restore.c:410 #, c-format msgid " -a, --data-only restore only the data, no schema\n" msgstr " -a, --data-only restaura somente os dados, não o esquema\n" -#: pg_restore.c:424 +#: pg_restore.c:411 #, c-format msgid "" " -c, --clean clean (drop) database objects before recreating\n" @@ -1828,49 +1863,49 @@ msgstr "" " -c, --clean exclui (remove) bancos de dados antes de criá-los " "novamente\n" -#: pg_restore.c:425 +#: pg_restore.c:412 #, c-format msgid " -C, --create create the target database\n" msgstr " -C, --create cria o banco de dados informado\n" -#: pg_restore.c:426 +#: pg_restore.c:413 #, c-format msgid " -e, --exit-on-error exit on error, default is to continue\n" msgstr "" " -e, --exit-on-error termina se houver erro, padrão é continuar\n" -#: pg_restore.c:427 +#: pg_restore.c:414 #, c-format msgid " -I, --index=NAME restore named index\n" msgstr " -I, --index=NOME restaura o índice especificado\n" -#: pg_restore.c:428 +#: pg_restore.c:415 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to restore\n" msgstr "" " -j, --jobs=NUM use esse número de tarefas paralelas para " "restaurar\n" -#: pg_restore.c:429 +#: pg_restore.c:416 #, c-format msgid "" " -L, --use-list=FILENAME use table of contents from this file for\n" " selecting/ordering output\n" msgstr "" -" -L, --user-list=ARQUIVO usa tabela de conteúdo deste arquivo para\n" +" -L, --use-list=ARQUIVO usa tabela de conteúdo deste arquivo para\n" " selecionar/ordenar saída\n" -#: pg_restore.c:431 +#: pg_restore.c:418 #, c-format msgid " -n, --schema=NAME restore only objects in this schema\n" msgstr " -n, --schema=NOME restaura somente objetos neste esquema\n" -#: pg_restore.c:432 +#: pg_restore.c:419 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr " -O, --no-owner ignora restauração do dono dos objetos\n" -#: pg_restore.c:433 +#: pg_restore.c:420 #, c-format msgid "" " -P, --function=NAME(args)\n" @@ -1879,13 +1914,13 @@ msgstr "" " -P, --function=NOME(args)\n" " restaura função especificada\n" -#: pg_restore.c:435 +#: pg_restore.c:422 #, c-format msgid " -s, --schema-only restore only the schema, no data\n" msgstr "" " -s, --schema-only restaura somente o esquema, e não os dados\n" -#: pg_restore.c:436 +#: pg_restore.c:423 #, c-format msgid "" " -S, --superuser=NAME superuser user name to use for disabling " @@ -1894,17 +1929,17 @@ msgstr "" " -S, --superuser=NOME nome do super-usuário usado para\n" " desabilitar os gatilhos\n" -#: pg_restore.c:437 +#: pg_restore.c:424 #, c-format msgid " -t, --table=NAME restore named table\n" msgstr " -t, --table=NOME restaura a tabela especificada\n" -#: pg_restore.c:438 +#: pg_restore.c:425 #, c-format msgid " -T, --trigger=NAME restore named trigger\n" msgstr " -T, --trigger=NOME restaura o gatilho especificado\n" -#: pg_restore.c:439 +#: pg_restore.c:426 #, c-format msgid "" " -x, --no-privileges skip restoration of access privileges (grant/" @@ -1913,14 +1948,23 @@ msgstr "" " -x, --no-privileges ignora restauração dos privilégios de acesso " "(grant/revoke)\n" -#: pg_restore.c:440 +#: pg_restore.c:427 +#, c-format +msgid "" +" -1, --single-transaction\n" +" restore as a single transaction\n" +msgstr "" +" -1, --single-transaction\n" +" restaura como uma transação única\n" + +#: pg_restore.c:429 #, c-format msgid " --disable-triggers disable triggers during data-only restore\n" msgstr "" " --disable-triggers desabilita gatilhos durante a restauração do tipo " "somente dados\n" -#: pg_restore.c:441 +#: pg_restore.c:430 #, c-format msgid "" " --no-data-for-failed-tables\n" @@ -1932,18 +1976,18 @@ msgstr "" "ser\n" " criadas\n" -#: pg_restore.c:444 +#: pg_restore.c:433 #, c-format -msgid " --no-tablespaces do not restore tablespace assignments\n" +msgid " --no-security-labels do not restore security labels\n" msgstr "" -" --no-tablespaces não restaura as atribuições de tablespaces\n" +" --no-security-labels não restaura atribuições de rótulos de segurança\n" -#: pg_restore.c:445 +#: pg_restore.c:434 #, c-format -msgid " --role=ROLENAME do SET ROLE before restore\n" -msgstr " --role=NOMEROLE executa SET ROLE antes da restauração\n" +msgid " --no-tablespaces do not restore tablespace assignments\n" +msgstr " --no-tablespaces não restaura atribuições de tablespaces\n" -#: pg_restore.c:446 +#: pg_restore.c:435 #, c-format msgid "" " --use-set-session-authorization\n" @@ -1956,16 +2000,12 @@ msgstr "" "de\n" " comandos ALTER OWNER para definir o dono\n" -#: pg_restore.c:449 +#: pg_restore.c:445 #, c-format -msgid "" -" -1, --single-transaction\n" -" restore as a single transaction\n" -msgstr "" -" -1, --single-transaction\n" -" restaura como uma transação única\n" +msgid " --role=ROLENAME do SET ROLE before restore\n" +msgstr " --role=NOMEROLE executa SET ROLE antes da restauração\n" -#: pg_restore.c:459 +#: pg_restore.c:447 #, c-format msgid "" "\n" @@ -1976,7 +2016,7 @@ msgstr "" "Se nenhum arquivo de entrada é fornecido, a entrada padrão é utilizada.\n" "\n" -#: pg_dumpall.c:167 +#: pg_dumpall.c:171 #, c-format msgid "" "The program \"pg_dump\" is needed by %s but was not found in the\n" @@ -1987,7 +2027,7 @@ msgstr "" "mesmo diretório que \"%s\".\n" "Verifique sua instalação.\n" -#: pg_dumpall.c:174 +#: pg_dumpall.c:178 #, c-format msgid "" "The program \"pg_dump\" was found by \"%s\"\n" @@ -1998,7 +2038,7 @@ msgstr "" "mas não tem a mesma versão que %s.\n" "Verifique sua instalação.\n" -#: pg_dumpall.c:331 +#: pg_dumpall.c:314 #, c-format msgid "" "%s: options -g/--globals-only and -r/--roles-only cannot be used together\n" @@ -2006,7 +2046,7 @@ msgstr "" "%s: opções -g/--globals-only e -r/--roles-only não podem ser utilizadas " "juntas\n" -#: pg_dumpall.c:340 +#: pg_dumpall.c:323 #, c-format msgid "" "%s: options -g/--globals-only and -t/--tablespaces-only cannot be used " @@ -2015,7 +2055,7 @@ msgstr "" "%s: opções -g/--globals-only e -t/--tablespaces-only não podem ser " "utilizadas juntas\n" -#: pg_dumpall.c:349 +#: pg_dumpall.c:332 #, c-format msgid "" "%s: options -r/--roles-only and -t/--tablespaces-only cannot be used " @@ -2024,12 +2064,12 @@ msgstr "" "%s: opções -r/--roles-only e -t/--tablespaces-only não podem ser utilizadas " "juntas\n" -#: pg_dumpall.c:385 pg_dumpall.c:1655 +#: pg_dumpall.c:374 pg_dumpall.c:1678 #, c-format msgid "%s: could not connect to database \"%s\"\n" msgstr "%s: não pôde conectar ao banco de dados \"%s\"\n" -#: pg_dumpall.c:400 +#: pg_dumpall.c:389 #, c-format msgid "" "%s: could not connect to databases \"postgres\" or \"template1\"\n" @@ -2038,12 +2078,12 @@ msgstr "" "%s: não pôde se conectar aos bancos de dados \"postgres\" ou \"template1\"\n" "Por favor especifique um banco de dados alternativo.\n" -#: pg_dumpall.c:417 +#: pg_dumpall.c:406 #, c-format msgid "%s: could not open the output file \"%s\": %s\n" msgstr "%s: não pôde abrir o arquivo de saída \"%s\": %s\n" -#: pg_dumpall.c:535 +#: pg_dumpall.c:528 #, c-format msgid "" "%s extracts a PostgreSQL database cluster into an SQL script file.\n" @@ -2053,12 +2093,17 @@ msgstr "" "script.\n" "\n" -#: pg_dumpall.c:537 +#: pg_dumpall.c:530 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [OPÇÃO]...\n" -#: pg_dumpall.c:546 +#: pg_dumpall.c:533 +#, c-format +msgid " -f, --file=FILENAME output file name\n" +msgstr " -f, --file=ARQUIVO nome do arquivo de saída\n" + +#: pg_dumpall.c:539 #, c-format msgid "" " -c, --clean clean (drop) databases before recreating\n" @@ -2066,20 +2111,20 @@ msgstr "" " -c, --clean exclui (remove) bancos de dados antes de criá-" "los novamente\n" -#: pg_dumpall.c:547 +#: pg_dumpall.c:540 #, c-format msgid " -g, --globals-only dump only global objects, no databases\n" msgstr "" " -g, --globals-only copia somente objetos globais, e não bancos " "de dados\n" -#: pg_dumpall.c:549 +#: pg_dumpall.c:542 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr "" " -O, --no-owner ignora restauração dos donos dos objetos\n" -#: pg_dumpall.c:550 +#: pg_dumpall.c:543 #, c-format msgid "" " -r, --roles-only dump only roles, no databases or tablespaces\n" @@ -2087,14 +2132,14 @@ msgstr "" " -r, --roles-only copia somente roles, e não bancos de dados ou " "tablespaces\n" -#: pg_dumpall.c:552 +#: pg_dumpall.c:545 #, c-format msgid " -S, --superuser=NAME superuser user name to use in the dump\n" msgstr "" " -S, --superuser=NOME especifica o nome do super-usuário a ser " "usado na cópia de segurança\n" -#: pg_dumpall.c:553 +#: pg_dumpall.c:546 #, c-format msgid "" " -t, --tablespaces-only dump only tablespaces, no databases or roles\n" @@ -2102,13 +2147,13 @@ msgstr "" " -t, --tablespaces-only copia somente tablespaces, e não bancos de " "dados ou roles\n" -#: pg_dumpall.c:568 +#: pg_dumpall.c:563 #, c-format msgid " -l, --database=DBNAME alternative default database\n" msgstr "" " -l, --database=NOMEBD especifica um banco de dados padrão alternativo\n" -#: pg_dumpall.c:574 +#: pg_dumpall.c:570 #, c-format msgid "" "\n" @@ -2122,72 +2167,72 @@ msgstr "" " padrão.\n" "\n" -#: pg_dumpall.c:1018 +#: pg_dumpall.c:1041 #, c-format msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n" msgstr "%s: não pôde validar lista ACL (%s) da tablespace \"%s\"\n" -#: pg_dumpall.c:1318 +#: pg_dumpall.c:1341 #, c-format msgid "%s: could not parse ACL list (%s) for database \"%s\"\n" msgstr "%s: não pôde validar lista ACL (%s) do banco de dados \"%s\"\n" -#: pg_dumpall.c:1525 +#: pg_dumpall.c:1548 #, c-format msgid "%s: dumping database \"%s\"...\n" msgstr "%s: copiando banco de dados \"%s\"...\n" -#: pg_dumpall.c:1535 +#: pg_dumpall.c:1558 #, c-format msgid "%s: pg_dump failed on database \"%s\", exiting\n" msgstr "%s: pg_dump falhou no banco de dados \"%s\", terminando\n" -#: pg_dumpall.c:1544 +#: pg_dumpall.c:1567 #, c-format msgid "%s: could not re-open the output file \"%s\": %s\n" msgstr "%s: não pôde abrir o arquivo de saída \"%s\" novamente: %s\n" -#: pg_dumpall.c:1583 +#: pg_dumpall.c:1606 #, c-format msgid "%s: running \"%s\"\n" msgstr "%s: executando \"%s\"\n" -#: pg_dumpall.c:1628 +#: pg_dumpall.c:1651 #, c-format msgid "%s: out of memory\n" msgstr "%s: sem memória\n" -#: pg_dumpall.c:1677 +#: pg_dumpall.c:1700 #, c-format msgid "%s: could not connect to database \"%s\": %s\n" msgstr "%s: não pôde conectar ao banco de dados \"%s\": %s\n" -#: pg_dumpall.c:1691 +#: pg_dumpall.c:1714 #, c-format msgid "%s: could not get server version\n" msgstr "%s: não pôde obter a versão do servidor\n" -#: pg_dumpall.c:1697 +#: pg_dumpall.c:1720 #, c-format msgid "%s: could not parse server version \"%s\"\n" msgstr "%s: não pôde validar a versão do servidor \"%s\"\n" -#: pg_dumpall.c:1705 +#: pg_dumpall.c:1728 #, c-format msgid "%s: could not parse version \"%s\"\n" msgstr "%s: não pôde validar versão \"%s\"\n" -#: pg_dumpall.c:1744 pg_dumpall.c:1770 +#: pg_dumpall.c:1767 pg_dumpall.c:1793 #, c-format msgid "%s: executing %s\n" msgstr "%s: executando %s\n" -#: pg_dumpall.c:1750 pg_dumpall.c:1776 +#: pg_dumpall.c:1773 pg_dumpall.c:1799 #, c-format msgid "%s: query failed: %s" msgstr "%s: consulta falhou: %s" -#: pg_dumpall.c:1752 pg_dumpall.c:1778 +#: pg_dumpall.c:1775 pg_dumpall.c:1801 #, c-format msgid "%s: query was: %s\n" msgstr "%s: consulta foi: %s\n" @@ -2222,27 +2267,27 @@ msgstr "não pôde mudar diretório para \"%s\"" msgid "could not read symbolic link \"%s\"" msgstr "não pôde ler link simbólico \"%s\"" -#: ../../port/exec.c:516 +#: ../../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" msgstr "processo filho terminou com código de saída %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "processo filho foi terminado pela exceção 0x%X" -#: ../../port/exec.c:529 +#: ../../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "processo filho foi terminado pelo sinal %s" -#: ../../port/exec.c:532 +#: ../../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "processo filho foi terminado pelo sinal %d" -#: ../../port/exec.c:536 +#: ../../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "processo filho terminou com status desconhecido %d" diff --git a/src/bin/pg_dump/po/ru.po b/src/bin/pg_dump/po/ru.po new file mode 100644 index 0000000000..40c33315eb --- /dev/null +++ b/src/bin/pg_dump/po/ru.po @@ -0,0 +1,2305 @@ +# ru.po +# PG_DUMP Translated Messages into the Russian Language (UTF-8) +# +# Copyright (c) 2001-2005 Serguei A. Mokhov, mokhov@cs.concordia.ca +# Copyright (c) 2012 Alexander Lakhin, exclusion@gmail.com +# Distributed under the same licensing terms as PostgreSQL itself. +# +# pgtranslation Id: pg_dump.po,v 1.2 2009/10/14 21:08:40 petere Exp $ +# +# ChangeLog: +# +# - April 3, 2012: Bug fixes. Alexander Lakhin . +# - February 21, 2012: Minor fixes. Alexander Lakhin . +# - With corrections from Sergey Burladyan +# - February 18, 2012: Complete translation for 9.1. Alexander Lakhin . +# - January 17, 2005: Complete translation for 8.0, Serguei A. Mokhov . +# - December, 2004: New translation by Oleg Bartunov . +# - April 6 - December 10, 2004: Updates for 8.0; . +# - July 24 - October 5, 2003: Updates for 7.4.x; . +# - October 12, 2002: Post-7.3 beta 2, Fixes, Serguei A. Mokhov . +# - September 14, 2002: Post-7.3 beta 1, Take II, Serguei A. Mokhov . +# - September 7, 2002: Post-7.3 beta 1 fuzzy message fixes, Serguei A. Mokhov . +# - September 2001 - August 2002: Initial translation and maintenance, Serguei A. Mokhov +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 9.1\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2012-09-29 22:28+0000\n" +"PO-Revision-Date: 2012-10-02 11:37+0400\n" +"Last-Translator: Alexander Lakhin \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Russian\n" +"X-Poedit-Country: RUSSIAN FEDERATION\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 1.4\n" + +#: pg_dump.c:491 pg_dump.c:505 pg_restore.c:274 pg_restore.c:290 +#: pg_restore.c:302 pg_dumpall.c:296 pg_dumpall.c:306 pg_dumpall.c:316 +#: pg_dumpall.c:325 pg_dumpall.c:334 pg_dumpall.c:392 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Для дополнительной информации попробуйте \"%s --help\".\n" + +#: pg_dump.c:503 pg_restore.c:288 pg_dumpall.c:304 +#, c-format +msgid "%s: too many command-line arguments (first is \"%s\")\n" +msgstr "%s: слишком много аргументов командной строки (первый: \"%s\")\n" + +#: pg_dump.c:516 +msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" +msgstr "параметры -s/--schema-only и -a/--data-only исключают друг друга\n" + +#: pg_dump.c:522 +msgid "options -c/--clean and -a/--data-only cannot be used together\n" +msgstr "параметры -c/--clean и -a/--data-only исключают друг друга\n" + +#: pg_dump.c:528 +msgid "" +"options --inserts/--column-inserts and -o/--oids cannot be used together\n" +msgstr "" +"параметры --inserts/--column-inserts и -o/--oids исключают друг друга\n" + +#: pg_dump.c:529 +msgid "(The INSERT command cannot set OIDs.)\n" +msgstr "(В INSERT нельзя определять OID.)\n" + +#: pg_dump.c:554 +#, c-format +msgid "could not open output file \"%s\" for writing\n" +msgstr "не удалось открыть выходной файл \"%s\" для записи\n" + +#: pg_dump.c:564 pg_backup_db.c:38 +#, c-format +msgid "could not parse version string \"%s\"\n" +msgstr "не удалось разобрать строку версии \"%s\"\n" + +#: pg_dump.c:587 +#, c-format +msgid "invalid client encoding \"%s\" specified\n" +msgstr "указана неверная клиентская кодировка \"%s\"\n" + +#: pg_dump.c:687 +#, c-format +msgid "last built-in OID is %u\n" +msgstr "последний системный OID: %u\n" + +#: pg_dump.c:697 +msgid "No matching schemas were found\n" +msgstr "Соответствующие схемы не найдены\n" + +#: pg_dump.c:712 +msgid "No matching tables were found\n" +msgstr "Соответствующие таблицы не найдены\n" + +#: pg_dump.c:834 +#, c-format +msgid "" +"%s dumps a database as a text file or to other formats.\n" +"\n" +msgstr "" +"%s сохраняет резервную копию БД в текстовом файле или другом виде.\n" +"\n" + +#: pg_dump.c:835 pg_restore.c:397 pg_dumpall.c:529 +#, c-format +msgid "Usage:\n" +msgstr "Использование:\n" + +#: pg_dump.c:836 +#, c-format +msgid " %s [OPTION]... [DBNAME]\n" +msgstr " %s [ПАРАМЕТР]... [ИМЯ_БД]\n" + +#: pg_dump.c:838 pg_restore.c:400 pg_dumpall.c:532 +#, c-format +msgid "" +"\n" +"General options:\n" +msgstr "" +"\n" +"Общие параметры:\n" + +#: pg_dump.c:839 +#, c-format +msgid " -f, --file=FILENAME output file or directory name\n" +msgstr " -f, --file=ИМЯ имя выходного файла или каталога\n" + +#: pg_dump.c:840 +#, c-format +msgid "" +" -F, --format=c|d|t|p output file format (custom, directory, tar, " +"plain text)\n" +msgstr "" +" -F, --format=c|d|t|p формат выводимых данных\n" +" (пользовательский | каталог | tar | " +"текстовый)\n" + +#: pg_dump.c:841 +#, c-format +msgid " -v, --verbose verbose mode\n" +msgstr " -v, --verbose режим подробных сообщений\n" + +#: pg_dump.c:842 +#, c-format +msgid "" +" -Z, --compress=0-9 compression level for compressed formats\n" +msgstr " -Z, --compress=0-9 уровень сжатия при архивации\n" + +#: pg_dump.c:843 pg_dumpall.c:534 +#, c-format +msgid "" +" --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" +msgstr "" +" --lock-wait-timeout=ТАЙМАУТ прервать операцию при таймауте блокировки " +"таблицы\n" + +#: pg_dump.c:844 pg_dumpall.c:535 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help показать эту справку и выйти\n" + +#: pg_dump.c:845 pg_dumpall.c:536 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version показать версию и выйти\n" + +#: pg_dump.c:847 pg_dumpall.c:537 +#, c-format +msgid "" +"\n" +"Options controlling the output content:\n" +msgstr "" +"\n" +"Параметры, управляющие выводом:\n" + +#: pg_dump.c:848 pg_dumpall.c:538 +#, c-format +msgid " -a, --data-only dump only the data, not the schema\n" +msgstr " -a, --data-only выгрузить только данные, без схемы\n" + +#: pg_dump.c:849 +#, c-format +msgid " -b, --blobs include large objects in dump\n" +msgstr " -b, --blobs выгрузить также большие объекты\n" + +#: pg_dump.c:850 +#, c-format +msgid "" +" -c, --clean clean (drop) database objects before " +"recreating\n" +msgstr "" +" -c, --clean очистить (удалить) объекты БД при " +"восстановлении\n" + +#: pg_dump.c:851 +#, c-format +msgid "" +" -C, --create include commands to create database in dump\n" +msgstr "" +" -C, --create добавить в копию команды создания базы данных\n" + +#: pg_dump.c:852 +#, c-format +msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" +msgstr " -E, --encoding=КОДИРОВКА выгружать данные в заданной кодировке\n" + +#: pg_dump.c:853 +#, c-format +msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" +msgstr " -n, --schema=СХЕМА выгрузить только указанную схему(ы)\n" + +#: pg_dump.c:854 +#, c-format +msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n" +msgstr " -N, --exclude-schema=СХЕМА НЕ выгружать указанную схему(ы)\n" + +#: pg_dump.c:855 pg_dumpall.c:541 +#, c-format +msgid " -o, --oids include OIDs in dump\n" +msgstr " -o, --oids выгружать данные с OID\n" + +#: pg_dump.c:856 +#, c-format +msgid "" +" -O, --no-owner skip restoration of object ownership in\n" +" plain-text format\n" +msgstr "" +" -O, --no-owner не восстанавливать владение объектами\n" +" при использовании текстового формата\n" + +#: pg_dump.c:858 pg_dumpall.c:544 +#, c-format +msgid " -s, --schema-only dump only the schema, no data\n" +msgstr " -s, --schema-only выгрузить только схему, без данных\n" + +#: pg_dump.c:859 +#, c-format +msgid "" +" -S, --superuser=NAME superuser user name to use in plain-text " +"format\n" +msgstr "" +" -S, --superuser=ИМЯ имя пользователя, который будет задействован\n" +" при восстановлении из текстового формата\n" + +#: pg_dump.c:860 +#, c-format +msgid " -t, --table=TABLE dump the named table(s) only\n" +msgstr " -t, --table=ТАБЛИЦА выгрузить только указанную таблицу(ы)\n" + +#: pg_dump.c:861 +#, c-format +msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n" +msgstr " -T, --exclude-table=ТАБЛИЦА НЕ выгружать указанную таблицу(ы)\n" + +#: pg_dump.c:862 pg_dumpall.c:547 +#, c-format +msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" +msgstr " -x, --no-privileges не выгружать права (назначение/отзыв)\n" + +#: pg_dump.c:863 pg_dumpall.c:548 +#, c-format +msgid " --binary-upgrade for use by upgrade utilities only\n" +msgstr " --binary-upgrade только для утилит обновления БД\n" + +#: pg_dump.c:864 pg_dumpall.c:549 +#, c-format +msgid "" +" --column-inserts dump data as INSERT commands with column " +"names\n" +msgstr "" +" --column-inserts выгружать данные в виде INSERT с именами " +"колонок\n" + +#: pg_dump.c:865 pg_dumpall.c:550 +#, c-format +msgid "" +" --disable-dollar-quoting disable dollar quoting, use SQL standard " +"quoting\n" +msgstr "" +" --disable-dollar-quoting отключить спецстроки с $, выводить строки\n" +" по стандарту SQL\n" + +#: pg_dump.c:866 pg_dumpall.c:551 +#, c-format +msgid "" +" --disable-triggers disable triggers during data-only restore\n" +msgstr "" +" --disable-triggers отключить триггеры при восстановлении одних " +"данных\n" + +#: pg_dump.c:867 pg_dumpall.c:552 +#, c-format +msgid "" +" --inserts dump data as INSERT commands, rather than " +"COPY\n" +msgstr "" +" --inserts выгрузить данные в виде команд INSERT, вместо " +"COPY\n" + +#: pg_dump.c:868 pg_dumpall.c:553 +#, c-format +msgid " --no-security-labels do not dump security label assignments\n" +msgstr "" +" --no-security-labels не выгружать назначения меток безопасности\n" + +#: pg_dump.c:869 pg_dumpall.c:554 +#, c-format +msgid " --no-tablespaces do not dump tablespace assignments\n" +msgstr "" +" --no-tablespaces не выгружать назначения табличных пространств\n" + +#: pg_dump.c:870 pg_dumpall.c:555 +#, c-format +msgid " --no-unlogged-table-data do not dump unlogged table data\n" +msgstr "" +" --no-unlogged-table-data не выгружать данные нежурналируемых таблиц\n" + +#: pg_dump.c:871 pg_dumpall.c:556 +#, c-format +msgid "" +" --quote-all-identifiers quote all identifiers, even if not key words\n" +msgstr "" +" --quote-all-identifiers заключать в кавычки все идентификаторы,\n" +" а не только ключевые слова\n" + +#: pg_dump.c:872 +#, c-format +msgid "" +" --serializable-deferrable wait until the dump can run without anomalies\n" +msgstr "" +" --serializable-deferrable дождаться момента для выгрузки данных без " +"аномалий\n" + +#: pg_dump.c:873 pg_dumpall.c:557 +#, c-format +msgid "" +" --use-set-session-authorization\n" +" use SET SESSION AUTHORIZATION commands instead " +"of\n" +" ALTER OWNER commands to set ownership\n" +msgstr "" +" --use-set-session-authorization\n" +" устанавливать владельца, используя команды\n" +" SET SESSION AUTHORIZATION вместо ALTER OWNER\n" + +#: pg_dump.c:877 pg_restore.c:439 pg_dumpall.c:561 +#, c-format +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Параметры подключения:\n" + +#: pg_dump.c:878 pg_restore.c:440 pg_dumpall.c:562 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory\n" +msgstr "" +" -h, --host=ИМЯ имя сервера баз данных или каталог сокетов\n" + +#: pg_dump.c:879 pg_restore.c:441 pg_dumpall.c:564 +#, c-format +msgid " -p, --port=PORT database server port number\n" +msgstr " -p, --port=ПОРТ номер порта сервера БД\n" + +#: pg_dump.c:880 pg_restore.c:442 pg_dumpall.c:565 +#, c-format +msgid " -U, --username=NAME connect as specified database user\n" +msgstr " -U, --username=ИМЯ имя пользователя баз данных\n" + +#: pg_dump.c:881 pg_restore.c:443 pg_dumpall.c:566 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password не запрашивать пароль\n" + +#: pg_dump.c:882 pg_restore.c:444 pg_dumpall.c:567 +#, c-format +msgid "" +" -W, --password force password prompt (should happen " +"automatically)\n" +msgstr "" +" -W, --password запрашивать пароль всегда (обычно не требуется)\n" + +#: pg_dump.c:883 pg_dumpall.c:568 +#, c-format +msgid " --role=ROLENAME do SET ROLE before dump\n" +msgstr " --role=ИМЯ_РОЛИ выполнить SET ROLE перед выгрузкой\n" + +#: pg_dump.c:885 +#, c-format +msgid "" +"\n" +"If no database name is supplied, then the PGDATABASE environment\n" +"variable value is used.\n" +"\n" +msgstr "" +"\n" +"Если имя базы данных не указано, используется переменная окружения " +"PGDATABASE.\n" +"\n" + +#: pg_dump.c:887 pg_restore.c:448 pg_dumpall.c:572 +#, c-format +msgid "Report bugs to .\n" +msgstr "Об ошибках сообщайте по адресу .\n" + +#: pg_dump.c:895 pg_backup_archiver.c:1459 +msgid "*** aborted because of error\n" +msgstr "*** аварийное завершение из-за ошибки\n" + +#: pg_dump.c:937 +#, c-format +msgid "invalid output format \"%s\" specified\n" +msgstr "указан неверный формат вывода: \"%s\"\n" + +#: pg_dump.c:960 +msgid "server version must be at least 7.3 to use schema selection switches\n" +msgstr "" +"для использования параметров выбора схемы нужен сервер версии 7.3 или новее\n" + +#: pg_dump.c:1232 +#, c-format +msgid "dumping contents of table %s\n" +msgstr "выгрузка содержимого таблицы %s\n" + +#: pg_dump.c:1352 +#, c-format +msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" +msgstr "Ошибка выгрузки таблицы \"%s\": сбой в PQendcopy().\n" + +#: pg_dump.c:1353 pg_dump.c:14379 +#, c-format +msgid "Error message from server: %s" +msgstr "Сообщение об ошибке с сервера: %s" + +#: pg_dump.c:1354 pg_dump.c:14380 +#, c-format +msgid "The command was: %s\n" +msgstr "Выполнялась команда: %s\n" + +#: pg_dump.c:1785 +msgid "saving database definition\n" +msgstr "сохранение определения базы данных\n" + +#: pg_dump.c:1867 +#, c-format +msgid "missing pg_database entry for database \"%s\"\n" +msgstr "для базы данных \"%s\" отсутствует запись в pg_database\n" + +#: pg_dump.c:1874 +#, c-format +msgid "" +"query returned more than one (%d) pg_database entry for database \"%s\"\n" +msgstr "в pg_database нашлось несколько записей (%d) для базы данных \"%s\"\n" + +#: pg_dump.c:1978 +msgid "dumpDatabase(): could not find pg_largeobject.relfrozenxid\n" +msgstr "dumpDatabase(): не удалось найти pg_largeobject.relfrozenxid\n" + +#: pg_dump.c:2017 +msgid "dumpDatabase(): could not find pg_largeobject_metadata.relfrozenxid\n" +msgstr "" +"dumpDatabase(): не удалось найти pg_largeobject_metadata.relfrozenxid\n" + +#: pg_dump.c:2096 +#, c-format +msgid "saving encoding = %s\n" +msgstr "сохранение кодировки (%s)\n" + +#: pg_dump.c:2123 +#, c-format +msgid "saving standard_conforming_strings = %s\n" +msgstr "сохранение standard_conforming_strings (%s)\n" + +#: pg_dump.c:2156 +msgid "reading large objects\n" +msgstr "чтение больших объектов\n" + +#: pg_dump.c:2288 +msgid "saving large objects\n" +msgstr "сохранение больших объектов\n" + +#: pg_dump.c:2330 pg_backup_archiver.c:985 +#, c-format +msgid "could not open large object %u: %s" +msgstr "не удалось открыть большой объект %u: %s" + +#: pg_dump.c:2343 +#, c-format +msgid "error reading large object %u: %s" +msgstr "ошибка чтения большого объекта %u: %s" + +#: pg_dump.c:2390 pg_dump.c:2438 pg_dump.c:2493 pg_dump.c:7679 pg_dump.c:7910 +#: pg_dump.c:8876 pg_dump.c:9428 pg_dump.c:9682 pg_dump.c:9796 pg_dump.c:10252 +#: pg_dump.c:10438 pg_dump.c:10544 pg_dump.c:10744 pg_dump.c:10986 +#: pg_dump.c:11153 pg_dump.c:11374 pg_dump.c:14185 +#, c-format +msgid "query returned %d row instead of one: %s\n" +msgid_plural "query returned %d rows instead of one: %s\n" +msgstr[0] "запрос вернул %d строку вместо одной: %s\n" +msgstr[1] "запрос вернул %d строки вместо одной: %s\n" +msgstr[2] "запрос вернул %d строк вместо одной: %s\n" + +#: pg_dump.c:2574 +#, c-format +msgid "could not find parent extension for %s" +msgstr "не удалось найти родительское расширение для %s" + +# TO REVIEW +#: pg_dump.c:2680 +#, c-format +msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" +msgstr "ВНИМАНИЕ: у схемы \"%s\" по-видимому неправильный владелец\n" + +#: pg_dump.c:2724 +#, c-format +msgid "schema with OID %u does not exist\n" +msgstr "схема с OID %u не существует\n" + +#: pg_dump.c:3056 +#, c-format +msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" +msgstr "ВНИМАНИЕ: у типа данных \"%s\" по-видимому неправильный владелец\n" + +#: pg_dump.c:3160 +#, c-format +msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" +msgstr "ВНИМАНИЕ: у оператора \"%s\" по-видимому неправильный владелец\n" + +#: pg_dump.c:3412 +#, c-format +msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" +msgstr "" +"ВНИМАНИЕ: у класса операторов \"%s\" по-видимому неправильный владелец\n" + +#: pg_dump.c:3499 +#, c-format +msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" +msgstr "" +"ВНИМАНИЕ: у семейства операторов \"%s\" по-видимому неправильный владелец\n" + +#: pg_dump.c:3636 +#, c-format +msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" +msgstr "" +"ВНИМАНИЕ: у агрегатной функции \"%s\" по-видимому неправильный владелец\n" + +#: pg_dump.c:3806 +#, c-format +msgid "WARNING: owner of function \"%s\" appears to be invalid\n" +msgstr "ВНИМАНИЕ: у функции \"%s\" по-видимому неправильный владелец\n" + +#: pg_dump.c:4306 +#, c-format +msgid "WARNING: owner of table \"%s\" appears to be invalid\n" +msgstr "ВНИМАНИЕ: у таблицы \"%s\" по-видимому неправильный владелец\n" + +#: pg_dump.c:4454 +#, c-format +msgid "reading indexes for table \"%s\"\n" +msgstr "чтение индексов таблицы \"%s\"\n" + +#: pg_dump.c:4774 +#, c-format +msgid "reading foreign key constraints for table \"%s\"\n" +msgstr "чтение ограничений внешних ключей таблицы \"%s\"\n" + +#: pg_dump.c:5006 +#, c-format +msgid "" +"failed sanity check, parent table OID %u of pg_rewrite entry OID %u not " +"found\n" +msgstr "" +"по OID %u не удалось найти родительскую таблицу для записи pg_rewrite с OID " +"%u\n" + +#: pg_dump.c:5090 +#, c-format +msgid "reading triggers for table \"%s\"\n" +msgstr "чтение триггеров таблицы \"%s\"\n" + +#: pg_dump.c:5253 +#, c-format +msgid "" +"query produced null referenced table name for foreign key trigger \"%s\" on " +"table \"%s\" (OID of table: %u)\n" +msgstr "" +"запрос не вернул имя целевой таблицы для триггера внешнего ключа \"%s\" в " +"таблице \"%s\" (OID целевой таблицы: %u)\n" + +#: pg_dump.c:5624 +#, c-format +msgid "finding the columns and types of table \"%s\"\n" +msgstr "поиск колонок и типов таблицы \"%s\"\n" + +#: pg_dump.c:5770 +#, c-format +msgid "invalid column numbering in table \"%s\"\n" +msgstr "неверная нумерация колонок в таблице \"%s\"\n" + +#: pg_dump.c:5805 +#, c-format +msgid "finding default expressions of table \"%s\"\n" +msgstr "поиск выражений по умолчанию для таблицы \"%s\"\n" + +#: pg_dump.c:5858 +#, c-format +msgid "invalid adnum value %d for table \"%s\"\n" +msgstr "неверное значение adnum (%d) в таблице \"%s\"\n" + +#: pg_dump.c:5931 +#, c-format +msgid "finding check constraints for table \"%s\"\n" +msgstr "поиск ограничений-проверок для таблицы \"%s\"\n" + +#: pg_dump.c:6011 +#, c-format +msgid "expected %d check constraint on table \"%s\" but found %d\n" +msgid_plural "expected %d check constraints on table \"%s\" but found %d\n" +msgstr[0] "" +"ожидалось %d ограничение-проверка для таблицы \"%s\", но найдено: %d\n" +msgstr[1] "" +"ожидалось %d ограничения-проверки для таблицы \"%s\", но найдено: %d\n" +msgstr[2] "" +"ожидалось %d ограничений-проверок для таблицы \"%s\", но найдено: %d\n" + +#: pg_dump.c:6015 +msgid "(The system catalogs might be corrupted.)\n" +msgstr "(Возможно повреждены системные каталоги.)\n" + +#: pg_dump.c:8642 +msgid "WARNING: bogus value in proargmodes array\n" +msgstr "ВНИМАНИЕ: неприемлемое значение в массиве proargmodes\n" + +#: pg_dump.c:8956 +msgid "WARNING: could not parse proallargtypes array\n" +msgstr "ВНИМАНИЕ: не удалось разобрать массив proallargtypes\n" + +#: pg_dump.c:8972 +msgid "WARNING: could not parse proargmodes array\n" +msgstr "ВНИМАНИЕ: не удалось разобрать массив proargmodes\n" + +#: pg_dump.c:8986 +msgid "WARNING: could not parse proargnames array\n" +msgstr "ВНИМАНИЕ: не удалось разобрать массив proargnames\n" + +#: pg_dump.c:8997 +msgid "WARNING: could not parse proconfig array\n" +msgstr "ВНИМАНИЕ: не удалось разобрать массив proconfig\n" + +# TO REVEIW +#: pg_dump.c:9053 +#, c-format +msgid "unrecognized provolatile value for function \"%s\"\n" +msgstr "недопустимое значение provolatile для функции \"%s\"\n" + +#: pg_dump.c:9269 +msgid "WARNING: bogus value in pg_cast.castmethod field\n" +msgstr "WARNING: неприемлемое значение в поле pg_cast.castmethod\n" + +#: pg_dump.c:9651 +#, c-format +msgid "WARNING: could not find operator with OID %s\n" +msgstr "ВНИМАНИЕ: оператор с OID %s не найден\n" + +#: pg_dump.c:10770 +#, c-format +msgid "" +"WARNING: aggregate function %s could not be dumped correctly for this " +"database version; ignored\n" +msgstr "" +"ВНИМАНИЕ: агрегатная функция %s не может быть правильно выгружена для этой " +"версии базы данных; функция проигнорирована\n" + +#: pg_dump.c:11574 +#, c-format +msgid "unknown object type (%d) in default privileges\n" +msgstr "неизвестный тип объекта (%d) в определении прав по умолчанию\n" + +#: pg_dump.c:11591 +#, c-format +msgid "could not parse default ACL list (%s)\n" +msgstr "не удалось разобрать список прав по умолчанию (%s)\n" + +#: pg_dump.c:11648 +#, c-format +msgid "could not parse ACL list (%s) for object \"%s\" (%s)\n" +msgstr "не удалось разобрать список прав (%s) для объекта \"%s\" (%s)\n" + +#: pg_dump.c:12094 +#, c-format +msgid "query to obtain definition of view \"%s\" returned no data\n" +msgstr "" +"запрос на получение определения представления \"%s\" не возвратил данные\n" + +#: pg_dump.c:12097 +#, c-format +msgid "" +"query to obtain definition of view \"%s\" returned more than one definition\n" +msgstr "" +"запрос на получения определения представления \"%s\" возвратил несколько " +"определений\n" + +#: pg_dump.c:12106 +#, c-format +msgid "definition of view \"%s\" appears to be empty (length zero)\n" +msgstr "определение представления \"%s\" пустое (длина равна нулю)\n" + +#: pg_dump.c:12157 +#, c-format +msgid "query returned %d foreign server entry for foreign table \"%s\"\n" +msgid_plural "" +"query returned %d foreign server entries for foreign table \"%s\"\n" +msgstr[0] "" +"запрос вернул %d запись о стороннем сервере для сторонней таблицы \"%s\"\n" +msgstr[1] "" +"запрос вернул %d записи о стороннем сервере для сторонней таблицы \"%s\"\n" +msgstr[2] "" +"запрос вернул %d записей о стороннем сервере для сторонней таблицы \"%s\"\n" + +#: pg_dump.c:12708 +#, c-format +msgid "invalid column number %d for table \"%s\"\n" +msgstr "неверный номер колонки %d для таблицы \"%s\"\n" + +#: pg_dump.c:12819 +#, c-format +msgid "missing index for constraint \"%s\"\n" +msgstr "отсутствует индекс для ограничения \"%s\"\n" + +#: pg_dump.c:13007 +#, c-format +msgid "unrecognized constraint type: %c\n" +msgstr "нераспознанный тип ограничения: %c\n" + +#: pg_dump.c:13070 +msgid "missing pg_database entry for this database\n" +msgstr "для этой базы данных отсутствует запись в pg_database\n" + +#: pg_dump.c:13075 +msgid "found more than one pg_database entry for this database\n" +msgstr "для этой базы данных найдено несколько записей в pg_database\n" + +#: pg_dump.c:13107 +msgid "could not find entry for pg_indexes in pg_class\n" +msgstr "для pg_indexes не найдена запись в pg_class\n" + +#: pg_dump.c:13112 +msgid "found more than one entry for pg_indexes in pg_class\n" +msgstr "для pg_indexes найдено несколько записей в pg_class\n" + +#: pg_dump.c:13184 +#, c-format +msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" +msgid_plural "" +"query to get data of sequence \"%s\" returned %d rows (expected 1)\n" +msgstr[0] "" +"запрос на получение данных последовательности \"%s\" вернул %d строку " +"(ожидалась 1)\n" +msgstr[1] "" +"запрос на получение данных последовательности \"%s\" вернул %d строки " +"(ожидалась 1)\n" +msgstr[2] "" +"запрос на получение данных последовательности \"%s\" вернул %d строк " +"(ожидалась 1)\n" + +#: pg_dump.c:13195 +#, c-format +msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" +msgstr "" +"запрос на получение данных последовательности \"%s\" вернул имя \"%s\"\n" + +#: pg_dump.c:13423 +#, c-format +msgid "unexpected tgtype value: %d\n" +msgstr "неожиданное значение tgtype: %d\n" + +#: pg_dump.c:13505 +#, c-format +msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" +msgstr "неверная строка аргументов (%s) для триггера \"%s\" таблицы \"%s\"\n" + +#: pg_dump.c:13623 +#, c-format +msgid "" +"query to get rule \"%s\" for table \"%s\" failed: wrong number of rows " +"returned\n" +msgstr "" +"запрос на получение правила \"%s\" для таблицы \"%s\" возвратил неверное " +"число строк\n" + +#: pg_dump.c:13885 +msgid "reading dependency data\n" +msgstr "чтение данных о зависимостях\n" + +#: pg_dump.c:14374 +msgid "SQL command failed\n" +msgstr "ошибка SQL-команды\n" + +#: common.c:107 +msgid "reading schemas\n" +msgstr "чтение схем\n" + +#: common.c:118 +msgid "reading user-defined tables\n" +msgstr "чтение пользовательских таблиц\n" + +#: common.c:126 +msgid "reading extensions\n" +msgstr "чтение расширений\n" + +#: common.c:130 +msgid "reading user-defined functions\n" +msgstr "чтение пользовательских функций\n" + +#: common.c:136 +msgid "reading user-defined types\n" +msgstr "чтение пользовательских типов\n" + +#: common.c:142 +msgid "reading procedural languages\n" +msgstr "чтение процедурных языков\n" + +#: common.c:146 +msgid "reading user-defined aggregate functions\n" +msgstr "чтение пользовательских агрегатных функций\n" + +#: common.c:150 +msgid "reading user-defined operators\n" +msgstr "чтение пользовательских операторов\n" + +#: common.c:155 +msgid "reading user-defined operator classes\n" +msgstr "чтение пользовательских классов операторов\n" + +#: common.c:159 +msgid "reading user-defined operator families\n" +msgstr "чтение пользовательских семейств операторов\n" + +#: common.c:163 +msgid "reading user-defined text search parsers\n" +msgstr "чтение пользовательских анализаторов текстового поиска\n" + +#: common.c:167 +msgid "reading user-defined text search templates\n" +msgstr "чтение пользовательских шаблонов текстового поиска\n" + +#: common.c:171 +msgid "reading user-defined text search dictionaries\n" +msgstr "чтение пользовательских словарей текстового поиска\n" + +#: common.c:175 +msgid "reading user-defined text search configurations\n" +msgstr "чтение пользовательских конфигураций текстового поиска\n" + +#: common.c:179 +msgid "reading user-defined foreign-data wrappers\n" +msgstr "чтение пользовательских оболочек сторонних данных\n" + +#: common.c:183 +msgid "reading user-defined foreign servers\n" +msgstr "чтение пользовательских сторонних серверов\n" + +#: common.c:187 +msgid "reading default privileges\n" +msgstr "чтение прав по умолчанию\n" + +#: common.c:191 +msgid "reading user-defined collations\n" +msgstr "чтение пользовательских правил сортировки\n" + +#: common.c:196 +msgid "reading user-defined conversions\n" +msgstr "чтение пользовательских преобразований\n" + +#: common.c:200 +msgid "reading type casts\n" +msgstr "чтение приведений типов\n" + +#: common.c:204 +msgid "reading table inheritance information\n" +msgstr "чтение информации о наследовании таблиц\n" + +#: common.c:208 +msgid "reading rewrite rules\n" +msgstr "чтение правил перезаписи\n" + +#: common.c:217 +msgid "finding extension members\n" +msgstr "поиск элементов расширений\n" + +#: common.c:222 +msgid "finding inheritance relationships\n" +msgstr "поиск связей наследования\n" + +#: common.c:226 +msgid "reading column info for interesting tables\n" +msgstr "чтение информации о колонках интересующих таблиц\n" + +#: common.c:230 +msgid "flagging inherited columns in subtables\n" +msgstr "пометка наследованных колонок в подтаблицах\n" + +#: common.c:234 +msgid "reading indexes\n" +msgstr "чтение индексов\n" + +#: common.c:238 +msgid "reading constraints\n" +msgstr "чтение ограничений\n" + +#: common.c:242 +msgid "reading triggers\n" +msgstr "чтение триггеров\n" + +#: common.c:788 +#, c-format +msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n" +msgstr "родительская таблица с OID %u для таблицы \"%s\" (OID %u) не найдена\n" + +#: common.c:830 +#, c-format +msgid "could not parse numeric array \"%s\": too many numbers\n" +msgstr "не удалось разобрать числовой массив \"%s\": слишком много чисел\n" + +#: common.c:845 +#, c-format +msgid "could not parse numeric array \"%s\": invalid character in number\n" +msgstr "не удалось разобрать числовой массив \"%s\": неверный символ в числе\n" + +#: common.c:958 +msgid "cannot duplicate null pointer\n" +msgstr "попытка сделать копию нулевого указателя\n" + +#: common.c:961 common.c:972 common.c:983 common.c:994 +#: pg_backup_archiver.c:765 pg_backup_archiver.c:1161 +#: pg_backup_archiver.c:1292 pg_backup_archiver.c:1762 +#: pg_backup_archiver.c:1956 pg_backup_archiver.c:2002 +#: pg_backup_archiver.c:4263 pg_backup_custom.c:132 pg_backup_custom.c:139 +#: pg_backup_custom.c:780 pg_backup_custom.c:907 pg_backup_db.c:147 +#: pg_backup_db.c:157 pg_backup_db.c:205 pg_backup_db.c:249 pg_backup_db.c:264 +#: pg_backup_db.c:298 pg_backup_db.c:491 pg_backup_files.c:114 +#: pg_backup_null.c:72 pg_backup_tar.c:171 pg_backup_tar.c:1005 +msgid "out of memory\n" +msgstr "нехватка памяти\n" + +#: pg_backup_archiver.c:88 +msgid "archiver" +msgstr "архиватор" + +#: pg_backup_archiver.c:208 pg_backup_archiver.c:1260 +#, c-format +msgid "could not close output file: %s\n" +msgstr "не удалось закрыть выходной файл: %s\n" + +#: pg_backup_archiver.c:234 +msgid "-C and -c are incompatible options\n" +msgstr "Параметры -C и -c несовместимы\n" + +#: pg_backup_archiver.c:241 +msgid "-C and -1 are incompatible options\n" +msgstr "Параметры -C и -1 несовместимы\n" + +#: pg_backup_archiver.c:251 +msgid "parallel restore is not supported with this archive file format\n" +msgstr "" +"параллельное восстановление не поддерживается с выбранным форматом архивного " +"файла\n" + +#: pg_backup_archiver.c:255 +msgid "" +"parallel restore is not supported with archives made by pre-8.0 pg_dump\n" +msgstr "" +"параллельное восстановление возможно только для архивов, созданных pg_dump " +"версии 8.0 и новее\n" + +#: pg_backup_archiver.c:274 +msgid "" +"cannot restore from compressed archive (compression not supported in this " +"installation)\n" +msgstr "" +"восстановить данные из сжатого архива нельзя (установленная версия не " +"поддерживает сжатие)\n" + +#: pg_backup_archiver.c:284 +msgid "connecting to database for restore\n" +msgstr "подключение к базе данных для восстановления\n" + +#: pg_backup_archiver.c:286 +msgid "direct database connections are not supported in pre-1.3 archives\n" +msgstr "" +"прямые подключения к базе данных не поддерживаются в архивах до версии 1.3\n" + +#: pg_backup_archiver.c:328 +msgid "implied data-only restore\n" +msgstr "подразумевается восстановление только данных\n" + +#: pg_backup_archiver.c:380 +#, c-format +msgid "dropping %s %s\n" +msgstr "удаляется %s %s\n" + +#: pg_backup_archiver.c:432 +#, c-format +msgid "setting owner and privileges for %s %s\n" +msgstr "установка владельца и прав: %s %s\n" + +#: pg_backup_archiver.c:490 pg_backup_archiver.c:492 +#, c-format +msgid "warning from original dump file: %s\n" +msgstr "предупреждение из исходного файла: %s\n" + +#: pg_backup_archiver.c:499 +#, c-format +msgid "creating %s %s\n" +msgstr "создаётся %s %s\n" + +#: pg_backup_archiver.c:543 +#, c-format +msgid "connecting to new database \"%s\"\n" +msgstr "подключение к новой базе данных \"%s\"\n" + +#: pg_backup_archiver.c:571 +#, c-format +msgid "restoring %s\n" +msgstr "восстанавливается %s\n" + +#: pg_backup_archiver.c:585 +#, c-format +msgid "restoring data for table \"%s\"\n" +msgstr "восстанавливаются данные таблицы \"%s\"\n" + +#: pg_backup_archiver.c:647 +#, c-format +msgid "executing %s %s\n" +msgstr "выполняется %s %s\n" + +#: pg_backup_archiver.c:680 +#, c-format +msgid "disabling triggers for %s\n" +msgstr "отключаются триггеры таблицы %s\n" + +#: pg_backup_archiver.c:706 +#, c-format +msgid "enabling triggers for %s\n" +msgstr "включаются триггеры таблицы %s\n" + +#: pg_backup_archiver.c:736 +msgid "" +"internal error -- WriteData cannot be called outside the context of a " +"DataDumper routine\n" +msgstr "" +"внутренняя ошибка -- WriteData нельзя вызывать вне контекста процедуры " +"DataDumper\n" + +#: pg_backup_archiver.c:893 +msgid "large-object output not supported in chosen format\n" +msgstr "выбранный формат не поддерживает выгрузку больших объектов\n" + +#: pg_backup_archiver.c:947 +#, c-format +msgid "restored %d large object\n" +msgid_plural "restored %d large objects\n" +msgstr[0] "восстановлен %d большой объект\n" +msgstr[1] "восстановлено %d больших объекта\n" +msgstr[2] "восстановлено %d больших объектов\n" + +#: pg_backup_archiver.c:968 pg_backup_tar.c:723 +#, c-format +msgid "restoring large object with OID %u\n" +msgstr "восстановление большого объекта с OID %u\n" + +#: pg_backup_archiver.c:980 +#, c-format +msgid "could not create large object %u: %s" +msgstr "не удалось создать большой объект %u: %s" + +#: pg_backup_archiver.c:1042 +#, c-format +msgid "could not open TOC file \"%s\": %s\n" +msgstr "не удалось открыть файл оглавления \"%s\": %s\n" + +#: pg_backup_archiver.c:1083 +#, c-format +msgid "WARNING: line ignored: %s\n" +msgstr "ВНИМАНИЕ: строка проигнорирована: %s\n" + +#: pg_backup_archiver.c:1090 +#, c-format +msgid "could not find entry for ID %d\n" +msgstr "не найдена запись для ID %d\n" + +#: pg_backup_archiver.c:1111 pg_backup_files.c:172 pg_backup_files.c:457 +#, c-format +msgid "could not close TOC file: %s\n" +msgstr "не удалось закрыть файл оглавления: %s\n" + +#: pg_backup_archiver.c:1230 pg_backup_custom.c:152 pg_backup_files.c:130 +#: pg_backup_files.c:262 +#, c-format +msgid "could not open output file \"%s\": %s\n" +msgstr "не удалось открыть выходной файл \"%s\": %s\n" + +#: pg_backup_archiver.c:1233 pg_backup_custom.c:159 pg_backup_files.c:137 +#, c-format +msgid "could not open output file: %s\n" +msgstr "не удалось открыть выходной файл: %s\n" + +#: pg_backup_archiver.c:1335 +#, c-format +msgid "wrote %lu byte of large object data (result = %lu)\n" +msgid_plural "wrote %lu bytes of large object data (result = %lu)\n" +msgstr[0] "записан %lu байт данных большого объекта (результат = %lu)\n" +msgstr[1] "записано %lu байта данных большого объекта (результат = %lu)\n" +msgstr[2] "записано %lu байт данных большого объекта (результат = %lu)\n" + +#: pg_backup_archiver.c:1341 +#, c-format +msgid "could not write to large object (result: %lu, expected: %lu)\n" +msgstr "не удалось записать большой объект (результат: %lu, ожидалось: %lu)\n" + +#: pg_backup_archiver.c:1399 pg_backup_archiver.c:1422 pg_backup_custom.c:652 +#: pg_backup_files.c:432 pg_backup_tar.c:590 pg_backup_tar.c:1092 +#: pg_backup_tar.c:1385 +#, c-format +msgid "could not write to output file: %s\n" +msgstr "не удалось записать в выходной файл: %s\n" + +#: pg_backup_archiver.c:1407 +msgid "could not write to custom output routine\n" +msgstr "не удалось вывести данную в пользовательскую процедуру\n" + +#: pg_backup_archiver.c:1505 +msgid "Error while INITIALIZING:\n" +msgstr "Ошибка при инициализации:\n" + +#: pg_backup_archiver.c:1510 +msgid "Error while PROCESSING TOC:\n" +msgstr "Ошибка при обработке оглавления:\n" + +#: pg_backup_archiver.c:1515 +msgid "Error while FINALIZING:\n" +msgstr "Ошибка при завершении:\n" + +#: pg_backup_archiver.c:1520 +#, c-format +msgid "Error from TOC entry %d; %u %u %s %s %s\n" +msgstr "Ошибка из записи оглавления %d; %u %u %s %s %s\n" + +#: pg_backup_archiver.c:1655 +#, c-format +msgid "unexpected data offset flag %d\n" +msgstr "неожиданный флаг смещения данных: %d\n" + +#: pg_backup_archiver.c:1668 +msgid "file offset in dump file is too large\n" +msgstr "слишком большое смещение в файле вывода\n" + +#: pg_backup_archiver.c:1765 pg_backup_archiver.c:3167 pg_backup_custom.c:630 +#: pg_backup_files.c:419 pg_backup_tar.c:779 +msgid "unexpected end of file\n" +msgstr "неожиданный конец файла\n" + +#: pg_backup_archiver.c:1782 +msgid "attempting to ascertain archive format\n" +msgstr "попытка выяснить формат архива\n" + +#: pg_backup_archiver.c:1808 pg_backup_archiver.c:1818 +#, c-format +msgid "directory name too long: \"%s\"\n" +msgstr "слишком длинное имя каталога: \"%s\"\n" + +#: pg_backup_archiver.c:1826 +#, c-format +msgid "" +"directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not " +"exist)\n" +msgstr "каталог \"%s\" не похож на архивный (в нём отсутствует \"toc.dat\")\n" + +#: pg_backup_archiver.c:1834 pg_backup_custom.c:171 pg_backup_custom.c:762 +#: pg_backup_files.c:155 pg_backup_files.c:307 +#, c-format +msgid "could not open input file \"%s\": %s\n" +msgstr "не удалось открыть входной файл \"%s\": %s\n" + +#: pg_backup_archiver.c:1842 pg_backup_custom.c:178 pg_backup_files.c:162 +#, c-format +msgid "could not open input file: %s\n" +msgstr "не удалось открыть входной файл: %s\n" + +#: pg_backup_archiver.c:1851 +#, c-format +msgid "could not read input file: %s\n" +msgstr "не удалось прочитать входной файл: %s\n" + +#: pg_backup_archiver.c:1853 +#, c-format +msgid "input file is too short (read %lu, expected 5)\n" +msgstr "входной файл слишком короткий (прочитано байт: %lu, ожидалось: 5)\n" + +#: pg_backup_archiver.c:1911 +msgid "input file does not appear to be a valid archive (too short?)\n" +msgstr "входной файл не похож на архив (возможно, слишком мал?)\n" + +#: pg_backup_archiver.c:1914 +msgid "input file does not appear to be a valid archive\n" +msgstr "входной файл не похож на архив\n" + +#: pg_backup_archiver.c:1934 +#, c-format +msgid "could not close input file: %s\n" +msgstr "не удалось закрыть входной файл: %s\n" + +#: pg_backup_archiver.c:1951 +#, c-format +msgid "allocating AH for %s, format %d\n" +msgstr "выделение структуры AH для %s, формат %d\n" + +#: pg_backup_archiver.c:2062 +#, c-format +msgid "unrecognized file format \"%d\"\n" +msgstr "неопознанный формат файла: \"%d\"\n" + +#: pg_backup_archiver.c:2184 +#, c-format +msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" +msgstr "ID записи %d вне диапазона - возможно повреждено оглавление\n" + +#: pg_backup_archiver.c:2300 +#, c-format +msgid "read TOC entry %d (ID %d) for %s %s\n" +msgstr "прочитана запись оглавления %d (ID %d): %s %s\n" + +#: pg_backup_archiver.c:2334 +#, c-format +msgid "unrecognized encoding \"%s\"\n" +msgstr "нераспознанная кодировка \"%s\"\n" + +#: pg_backup_archiver.c:2339 +#, c-format +msgid "invalid ENCODING item: %s\n" +msgstr "неверный элемент ENCODING: %s\n" + +#: pg_backup_archiver.c:2357 +#, c-format +msgid "invalid STDSTRINGS item: %s\n" +msgstr "неверный элемент STDSTRINGS: %s\n" + +#: pg_backup_archiver.c:2555 +#, c-format +msgid "could not set session user to \"%s\": %s" +msgstr "не удалось переключить пользователя сессии на \"%s\": %s" + +#: pg_backup_archiver.c:2895 pg_backup_archiver.c:3077 +#, c-format +msgid "WARNING: don't know how to set owner for object type %s\n" +msgstr "ВНИМАНИЕ: неизвестно, как назначить владельца для объекта типа %s\n" + +#: pg_backup_archiver.c:3130 +msgid "" +"WARNING: requested compression not available in this installation -- archive " +"will be uncompressed\n" +msgstr "" +"ВНИМАНИЕ: установленная версия программы не поддерживает сжатие -- архив не " +"будет сжиматься\n" + +#: pg_backup_archiver.c:3170 +msgid "did not find magic string in file header\n" +msgstr "в файле заголовка не найдена магическая строка\n" + +#: pg_backup_archiver.c:3183 +#, c-format +msgid "unsupported version (%d.%d) in file header\n" +msgstr "неподдерживаемая версия (%d.%d) в заголовке файла\n" + +#: pg_backup_archiver.c:3188 +#, c-format +msgid "sanity check on integer size (%lu) failed\n" +msgstr "несоответствие размера integer (%lu)\n" + +#: pg_backup_archiver.c:3192 +msgid "" +"WARNING: archive was made on a machine with larger integers, some operations " +"might fail\n" +msgstr "" +"ВНИМАНИЕ: архив был сделан на компьютере большей разрядности -- возможен " +"сбой некоторых операций\n" + +#: pg_backup_archiver.c:3202 +#, c-format +msgid "expected format (%d) differs from format found in file (%d)\n" +msgstr "ожидаемый формат (%d) отличается от формата, указанного в файле (%d)\n" + +#: pg_backup_archiver.c:3218 +msgid "" +"WARNING: archive is compressed, but this installation does not support " +"compression -- no data will be available\n" +msgstr "" +"ВНИМАНИЕ: архив сжат, но установленная версия не поддерживает сжатие -- " +"данные недоступны\n" + +#: pg_backup_archiver.c:3236 +msgid "WARNING: invalid creation date in header\n" +msgstr "ВНИМАНИЕ: неверная дата создания в заголовке\n" + +#: pg_backup_archiver.c:3334 +msgid "entering restore_toc_entries_parallel\n" +msgstr "вход в restore_toc_entries_parallel\n" + +#: pg_backup_archiver.c:3375 +#, c-format +msgid "processing item %d %s %s\n" +msgstr "обработка объекта %d %s %s\n" + +#: pg_backup_archiver.c:3451 +msgid "entering main parallel loop\n" +msgstr "вход в основной параллельный цикл\n" + +#: pg_backup_archiver.c:3465 +#, c-format +msgid "skipping item %d %s %s\n" +msgstr "объект %d %s %s пропускается\n" + +#: pg_backup_archiver.c:3481 +#, c-format +msgid "launching item %d %s %s\n" +msgstr "объект %d %s %s запускается\n" + +#: pg_backup_archiver.c:3518 +#, c-format +msgid "worker process crashed: status %d\n" +msgstr "крах рабочего процесса: состояние %d\n" + +#: pg_backup_archiver.c:3523 +msgid "finished main parallel loop\n" +msgstr "основной параллельный цикл закончен\n" + +#: pg_backup_archiver.c:3541 +#, c-format +msgid "processing missed item %d %s %s\n" +msgstr "обработка пропущенного объекта %d %s %s\n" + +#: pg_backup_archiver.c:3567 +msgid "parallel_restore should not return\n" +msgstr "неожиданный выход из parallel_restore\n" + +#: pg_backup_archiver.c:3573 +#, c-format +msgid "could not create worker process: %s\n" +msgstr "не удалось создать рабочий процесс: %s\n" + +#: pg_backup_archiver.c:3581 +#, c-format +msgid "could not create worker thread: %s\n" +msgstr "не удалось создать рабочий поток: %s\n" + +#: pg_backup_archiver.c:3805 +msgid "no item ready\n" +msgstr "элемент не готов\n" + +#: pg_backup_archiver.c:3900 +msgid "could not find slot of finished worker\n" +msgstr "не удалось найти слот законченного рабочего объекта\n" + +#: pg_backup_archiver.c:3902 +#, c-format +msgid "finished item %d %s %s\n" +msgstr "закончен объект %d %s %s\n" + +#: pg_backup_archiver.c:3915 +#, c-format +msgid "worker process failed: exit code %d\n" +msgstr "рабочий процесс завершился с кодом возврата %d\n" + +#: pg_backup_archiver.c:4111 +#, c-format +msgid "transferring dependency %d -> %d to %d\n" +msgstr "переключение зависимости %d -> %d на %d\n" + +#: pg_backup_archiver.c:4180 +#, c-format +msgid "reducing dependencies for %d\n" +msgstr "уменьшение зависимостей для %d\n" + +#: pg_backup_archiver.c:4229 +#, c-format +msgid "table \"%s\" could not be created, will not restore its data\n" +msgstr "создать таблицу \"%s\" не удалось, её данные не будут восстановлены\n" + +#: pg_backup_custom.c:87 +msgid "custom archiver" +msgstr "внешний архиватор" + +#: pg_backup_custom.c:373 pg_backup_null.c:153 +msgid "invalid OID for large object\n" +msgstr "неверный OID большого объекта\n" + +#: pg_backup_custom.c:444 +#, c-format +msgid "unrecognized data block type (%d) while searching archive\n" +msgstr "нераспознанный тип блока данных (%d) при поиске архива\n" + +#: pg_backup_custom.c:455 +#, c-format +msgid "error during file seek: %s\n" +msgstr "ошибка при перемещении в файле: %s\n" + +#: pg_backup_custom.c:465 +#, c-format +msgid "" +"could not find block ID %d in archive -- possibly due to out-of-order " +"restore request, which cannot be handled due to lack of data offsets in " +"archive\n" +msgstr "" +"не удалось найти в архиве блок с ID %d -- возможно, по причине не " +"последовательного запроса восстановления, который нельзя обработать из-за " +"отсутствия смещений данных в архиве\n" + +#: pg_backup_custom.c:470 +#, c-format +msgid "" +"could not find block ID %d in archive -- possibly due to out-of-order " +"restore request, which cannot be handled due to non-seekable input file\n" +msgstr "" +"не удалось найти в архиве блок с ID %d -- возможно, по причине не " +"последовательного запроса восстановления, который нельзя обработать с " +"файлом, не допускающим произвольный доступ\n" + +#: pg_backup_custom.c:475 +#, c-format +msgid "could not find block ID %d in archive -- possibly corrupt archive\n" +msgstr "не удалось найти в архиве блок с ID %d -- возможно, архив испорчен\n" + +#: pg_backup_custom.c:482 +#, c-format +msgid "found unexpected block ID (%d) when reading data -- expected %d\n" +msgstr "при чтении данных получен неожиданный ID блока (%d) -- ожидался: %d\n" + +#: pg_backup_custom.c:496 +#, c-format +msgid "unrecognized data block type %d while restoring archive\n" +msgstr "нераспознанный тип блока данных %d при восстановлении архива\n" + +#: pg_backup_custom.c:578 pg_backup_custom.c:916 +msgid "could not read from input file: end of file\n" +msgstr "не удалось прочитать входной файл: конец файла\n" + +#: pg_backup_custom.c:581 pg_backup_custom.c:919 +#, c-format +msgid "could not read from input file: %s\n" +msgstr "не удалось прочитать входной файл: %s\n" + +#: pg_backup_custom.c:610 +#, c-format +msgid "could not write byte: %s\n" +msgstr "не удалось записать байт: %s\n" + +#: pg_backup_custom.c:718 pg_backup_custom.c:756 +#, c-format +msgid "could not close archive file: %s\n" +msgstr "не удалось закрыть файл архива: %s\n" + +#: pg_backup_custom.c:737 +msgid "can only reopen input archives\n" +msgstr "повторно открыть можно только входные файлы\n" + +#: pg_backup_custom.c:744 +msgid "parallel restore from stdin is not supported\n" +msgstr "параллельное восстановление из stdin не поддерживается\n" + +#: pg_backup_custom.c:746 +msgid "parallel restore from non-seekable file is not supported\n" +msgstr "" +"параллельное восстановление возможно только с файлом произвольного доступа\n" + +#: pg_backup_custom.c:751 +#, c-format +msgid "could not determine seek position in archive file: %s\n" +msgstr "не удалось определить позицию в файле архива: %s\n" + +#: pg_backup_custom.c:766 +#, c-format +msgid "could not set seek position in archive file: %s\n" +msgstr "не удалось задать текущую позицию в файле архива: %s\n" + +#: pg_backup_custom.c:786 +msgid "compressor active\n" +msgstr "сжатие активно\n" + +#: pg_backup_custom.c:822 +msgid "WARNING: ftell mismatch with expected position -- ftell used\n" +msgstr "" +"ВНИМАНИЕ: позиция ftell не соответствует ожидаемой -- используется ftell\n" + +#: pg_backup_db.c:25 +msgid "archiver (db)" +msgstr "архиватор (БД)" + +#: pg_backup_db.c:54 +msgid "could not get server_version from libpq\n" +msgstr "не удалось получить версию сервера из libpq\n" + +#: pg_backup_db.c:67 pg_dumpall.c:1741 +#, c-format +msgid "server version: %s; %s version: %s\n" +msgstr "версия сервера: %s; версия %s: %s\n" + +#: pg_backup_db.c:69 pg_dumpall.c:1743 +#, c-format +msgid "aborting because of server version mismatch\n" +msgstr "продолжение работы с другой версией сервера невозможно\n" + +#: pg_backup_db.c:140 +#, c-format +msgid "connecting to database \"%s\" as user \"%s\"\n" +msgstr "подключение к базе \"%s\" с именем пользователя \"%s\"\n" + +#: pg_backup_db.c:145 pg_backup_db.c:200 pg_backup_db.c:247 pg_backup_db.c:296 +#: pg_dumpall.c:1637 pg_dumpall.c:1689 +msgid "Password: " +msgstr "Пароль: " + +#: pg_backup_db.c:181 +msgid "failed to reconnect to database\n" +msgstr "ошибка переподключения к базе данных\n" + +#: pg_backup_db.c:186 +#, c-format +msgid "could not reconnect to database: %s" +msgstr "не удалось переподключиться к базе: %s" + +#: pg_backup_db.c:202 +msgid "connection needs password\n" +msgstr "для подключения необходим пароль\n" + +#: pg_backup_db.c:243 +msgid "already connected to a database\n" +msgstr "подключение к базе данных уже установлено\n" + +#: pg_backup_db.c:288 +msgid "failed to connect to database\n" +msgstr "ошибка подключения к базе данных\n" + +#: pg_backup_db.c:307 +#, c-format +msgid "connection to database \"%s\" failed: %s" +msgstr "не удалось подключиться к базе \"%s\": %s" + +#: pg_backup_db.c:322 +#, c-format +msgid "%s" +msgstr "%s" + +#: pg_backup_db.c:414 pg_backup_db.c:485 pg_backup_db.c:494 +msgid "could not execute query" +msgstr "не удалось выполнить запрос" + +#: pg_backup_db.c:465 +#, c-format +msgid "error returned by PQputCopyData: %s" +msgstr "ошибка в PQputCopyData: %s" + +#: pg_backup_db.c:513 +#, c-format +msgid "error returned by PQputCopyEnd: %s" +msgstr "ошибка в PQputCopyEnd: %s" + +#: pg_backup_db.c:530 +msgid "could not start database transaction" +msgstr "не удаётся начать транзакцию" + +#: pg_backup_db.c:536 +msgid "could not commit database transaction" +msgstr "не удалось зафиксировать транзакцию" + +#: pg_backup_files.c:68 +msgid "file archiver" +msgstr "файловый архиватор" + +#: pg_backup_files.c:122 +msgid "" +"WARNING:\n" +" This format is for demonstration purposes; it is not intended for\n" +" normal use. Files will be written in the current working directory.\n" +msgstr "" +"ПРЕДУПРЖДЕНИЕ:\n" +" Этот формат предназначен только для целей демонстрации, но не для\n" +" повседневного использования. Файлы сохраняются в текущий рабочий каталог.\n" + +#: pg_backup_files.c:283 +msgid "could not close data file\n" +msgstr "не удалось закрыть файл данных\n" + +#: pg_backup_files.c:317 +msgid "could not close data file after reading\n" +msgstr "не удалось закрыть файл данных после чтения\n" + +#: pg_backup_files.c:379 +#, c-format +msgid "could not open large object TOC for input: %s\n" +msgstr "не удалось открыть для чтения файл оглавления больших объектов: %s\n" + +#: pg_backup_files.c:392 pg_backup_files.c:561 +#, c-format +msgid "could not close large object TOC file: %s\n" +msgstr "не удалось закрыть файл оглавления больших объектов: %s\n" + +#: pg_backup_files.c:404 +msgid "could not write byte\n" +msgstr "не удалось записать байт\n" + +#: pg_backup_files.c:490 +#, c-format +msgid "could not open large object TOC for output: %s\n" +msgstr "не удалось открыть для записи файл оглавления больших объектов: %s\n" + +#: pg_backup_files.c:510 pg_backup_tar.c:929 +#, c-format +msgid "invalid OID for large object (%u)\n" +msgstr "неверный OID для большого объекта (%u)\n" + +#: pg_backup_files.c:529 +#, c-format +msgid "could not open large object file \"%s\" for input: %s\n" +msgstr "не удалось открыть для чтения файл большого объекта \"%s\": %s\n" + +#: pg_backup_files.c:544 +msgid "could not close large object file\n" +msgstr "не удалось закрыть файл большого объекта\n" + +#: pg_backup_null.c:78 +msgid "this format cannot be read\n" +msgstr "этот формат нельзя прочитать\n" + +#: pg_backup_tar.c:105 +msgid "tar archiver" +msgstr "архиватор tar" + +#: pg_backup_tar.c:183 +#, c-format +msgid "could not open TOC file \"%s\" for output: %s\n" +msgstr "не удалось открыть для записи файл оглавления \"%s\": %s\n" + +#: pg_backup_tar.c:191 +#, c-format +msgid "could not open TOC file for output: %s\n" +msgstr "не удалось открыть для записи файл оглавления: %s\n" + +#: pg_backup_tar.c:218 pg_backup_tar.c:374 +msgid "compression is not supported by tar archive format\n" +msgstr "формат архива tar не поддерживает сжатие\n" + +#: pg_backup_tar.c:226 +#, c-format +msgid "could not open TOC file \"%s\" for input: %s\n" +msgstr "не удалось открыть для чтения файл оглавления \"%s\": %s\n" + +#: pg_backup_tar.c:233 +#, c-format +msgid "could not open TOC file for input: %s\n" +msgstr "не удалось открыть для чтения файл оглавления: %s\n" + +#: pg_backup_tar.c:360 +#, c-format +msgid "could not find file \"%s\" in archive\n" +msgstr "не удалось найти файл \"%s\" в архиве\n" + +#: pg_backup_tar.c:416 +#, c-format +msgid "could not generate temporary file name: %s\n" +msgstr "не удалось создать временный файл: %s\n" + +#: pg_backup_tar.c:425 +msgid "could not open temporary file\n" +msgstr "не удалось открыть временный файл\n" + +#: pg_backup_tar.c:452 +msgid "could not close tar member\n" +msgstr "не удалось закрыть компонент tar-архива\n" + +#: pg_backup_tar.c:552 +msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" +msgstr "внутренняя ошибка -- в tarReadRaw() не указан ни th, ни fh\n" + +#: pg_backup_tar.c:678 +#, c-format +msgid "unexpected COPY statement syntax: \"%s\"\n" +msgstr "недопустимый синтаксис оператора COPY: \"%s\"\n" + +#: pg_backup_tar.c:874 +msgid "could not write null block at end of tar archive\n" +msgstr "не удалось записать нулевой блок в конец tar-архива\n" + +#: pg_backup_tar.c:1083 +msgid "archive member too large for tar format\n" +msgstr "компонент архива слишком велик для формата tar\n" + +#: pg_backup_tar.c:1098 +#, c-format +msgid "could not close temporary file: %s\n" +msgstr "не удалось закрыть временный файл: %s\n" + +#: pg_backup_tar.c:1108 +#, c-format +msgid "actual file length (%s) does not match expected (%s)\n" +msgstr "действительная длина файла (%s) не равна ожидаемой (%s)\n" + +#: pg_backup_tar.c:1116 +msgid "could not output padding at end of tar member\n" +msgstr "не удалось записать выравнивание для компонента tar\n" + +#: pg_backup_tar.c:1145 +#, c-format +msgid "moving from position %s to next member at file position %s\n" +msgstr "переход от позиции %s к следующему компоненту в позиции %s\n" + +#: pg_backup_tar.c:1156 +#, c-format +msgid "now at file position %s\n" +msgstr "текущая позиция в файле %s\n" + +#: pg_backup_tar.c:1165 pg_backup_tar.c:1195 +#, c-format +msgid "could not find header for file \"%s\" in tar archive\n" +msgstr "в архиве tar не найден заголовок для файла \"%s\"\n" + +#: pg_backup_tar.c:1179 +#, c-format +msgid "skipping tar member %s\n" +msgstr "пропускается компонент tar %s\n" + +#: pg_backup_tar.c:1183 +#, c-format +msgid "" +"restoring data out of order is not supported in this archive format: \"%s\" " +"is required, but comes before \"%s\" in the archive file.\n" +msgstr "" +"непоследовательное восстановление данных для данного формата архива не " +"поддерживается: требуется компонент \"%s\", но в файле архива прежде идёт " +"\"%s\".\n" + +#: pg_backup_tar.c:1229 +#, c-format +msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n" +msgstr "реальная позиция в файле отличается от предсказанной (%s и %s)\n" + +#: pg_backup_tar.c:1244 +#, c-format +msgid "incomplete tar header found (%lu byte)\n" +msgid_plural "incomplete tar header found (%lu bytes)\n" +msgstr[0] "найден неполный tar-заголовок (размер %lu байт)\n" +msgstr[1] "найден неполный tar-заголовок (размер %lu байта)\n" +msgstr[2] "найден неполный tar-заголовок (размер %lu байтов)\n" + +#: pg_backup_tar.c:1282 +#, c-format +msgid "TOC Entry %s at %s (length %lu, checksum %d)\n" +msgstr "Запись оглавления %s в %s (длина: %lu, контр. сумма: %d)\n" + +#: pg_backup_tar.c:1292 +#, c-format +msgid "" +"corrupt tar header found in %s (expected %d, computed %d) file position %s\n" +msgstr "" +"tar-заголовок в %s повреждён (ожидалось: %d, получено: %d), позиция в файле: " +"%s\n" + +# TO REVEIW +#: pg_restore.c:300 +#, c-format +msgid "%s: options -d/--dbname and -f/--file cannot be used together\n" +msgstr "%s: параметры -d/--dbname и -f/--file исключают друг друга\n" + +#: pg_restore.c:312 +#, c-format +msgid "%s: cannot specify both --single-transaction and multiple jobs\n" +msgstr "" +"%s: параметр --single-transaction допускается только с одним заданием\n" + +#: pg_restore.c:348 +#, c-format +msgid "" +"unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"\n" +msgstr "нераспознанный формат архива \"%s\"; укажите \"c\", \"d\" или \"t\"\n" + +#: pg_restore.c:382 +#, c-format +msgid "WARNING: errors ignored on restore: %d\n" +msgstr "ПРЕДУПРЕЖДЕНИЕ: при восстановление проигнорировано ошибок: %d\n" + +#: pg_restore.c:396 +#, c-format +msgid "" +"%s restores a PostgreSQL database from an archive created by pg_dump.\n" +"\n" +msgstr "" +"%s восстанавливает базу данных PostgreSQL из архива, созданного командой " +"pg_dump.\n" +"\n" + +#: pg_restore.c:398 +#, c-format +msgid " %s [OPTION]... [FILE]\n" +msgstr " %s [ПАРАМЕТР]... [ФАЙЛ]\n" + +#: pg_restore.c:401 +#, c-format +msgid " -d, --dbname=NAME connect to database name\n" +msgstr " -d, --dbname=БД подключиться к указанной базе данных\n" + +#: pg_restore.c:402 +#, c-format +msgid " -f, --file=FILENAME output file name\n" +msgstr " -f, --file=ИМЯ_ФАЙЛА имя выходного файла\n" + +#: pg_restore.c:403 +#, c-format +msgid " -F, --format=c|d|t backup file format (should be automatic)\n" +msgstr "" +" -F, --format=c|d|t формат файла (должен определяться автоматически)\n" + +#: pg_restore.c:404 +#, c-format +msgid " -l, --list print summarized TOC of the archive\n" +msgstr " -l, --list вывести краткое оглавление архива\n" + +#: pg_restore.c:405 +#, c-format +msgid " -v, --verbose verbose mode\n" +msgstr " -v, --verbose выводить подробные сообщения\n" + +#: pg_restore.c:406 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help показать эту справку и выйти\n" + +#: pg_restore.c:407 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version показать версию и выйти\n" + +#: pg_restore.c:409 +#, c-format +msgid "" +"\n" +"Options controlling the restore:\n" +msgstr "" +"\n" +"Параметры, управляющие восстановлением:\n" + +#: pg_restore.c:410 +#, c-format +msgid " -a, --data-only restore only the data, no schema\n" +msgstr " -a, --data-only восстановить только данные, без схемы\n" + +#: pg_restore.c:411 +#, c-format +msgid "" +" -c, --clean clean (drop) database objects before recreating\n" +msgstr "" +" -c, --clean очистить (удалить) объекты БД при восстановлении\n" + +#: pg_restore.c:412 +#, c-format +msgid " -C, --create create the target database\n" +msgstr " -C, --create создать целевую базу данных\n" + +#: pg_restore.c:413 +#, c-format +msgid " -e, --exit-on-error exit on error, default is to continue\n" +msgstr "" +" -e, --exit-on-error выйти при ошибке (по умолчанию - продолжать)\n" + +#: pg_restore.c:414 +#, c-format +msgid " -I, --index=NAME restore named index\n" +msgstr " -I, --index=ИМЯ восстановить указанный индекс\n" + +#: pg_restore.c:415 +#, c-format +msgid " -j, --jobs=NUM use this many parallel jobs to restore\n" +msgstr "" +" -j, --jobs=ЧИСЛО распараллелить восстановление на указанное число " +"заданий\n" + +#: pg_restore.c:416 +#, c-format +msgid "" +" -L, --use-list=FILENAME use table of contents from this file for\n" +" selecting/ordering output\n" +msgstr "" +" -L, --use-list=ИМЯ_ФАЙЛА использовать оглавление из этого файла для\n" +" чтения/упорядочивания данных\n" + +#: pg_restore.c:418 +#, c-format +msgid " -n, --schema=NAME restore only objects in this schema\n" +msgstr " -n, --schema=ИМЯ восстановить объекты только в этой схеме\n" + +#: pg_restore.c:419 +#, c-format +msgid " -O, --no-owner skip restoration of object ownership\n" +msgstr " -O, --no-owner не восстанавливать владение объектами\n" + +#: pg_restore.c:420 +#, c-format +msgid "" +" -P, --function=NAME(args)\n" +" restore named function\n" +msgstr "" +" -P, --function=ИМЯ(аргументы)\n" +" восстановить заданную функцию\n" + +#: pg_restore.c:422 +#, c-format +msgid " -s, --schema-only restore only the schema, no data\n" +msgstr " -s, --schema-only восстановить только схему, без данных\n" + +#: pg_restore.c:423 +#, c-format +msgid "" +" -S, --superuser=NAME superuser user name to use for disabling " +"triggers\n" +msgstr "" +" -S, --superuser=ИМЯ имя суперпользователя для отключения триггеров\n" + +#: pg_restore.c:424 +#, c-format +msgid " -t, --table=NAME restore named table\n" +msgstr " -t, --table=ИМЯ восстановить заданную таблицу\n" + +#: pg_restore.c:425 +#, c-format +msgid " -T, --trigger=NAME restore named trigger\n" +msgstr " -T, --trigger=ИМЯ восстановить заданный триггер\n" + +#: pg_restore.c:426 +#, c-format +msgid "" +" -x, --no-privileges skip restoration of access privileges (grant/" +"revoke)\n" +msgstr "" +" -x, --no-privileges не восстанавливать права доступа (назначение/" +"отзыв)\n" + +#: pg_restore.c:427 +#, c-format +msgid "" +" -1, --single-transaction\n" +" restore as a single transaction\n" +msgstr "" +" -1, --single-transaction\n" +" выполнить восстановление в рамках одной " +"транзакции\n" + +#: pg_restore.c:429 +#, c-format +msgid " --disable-triggers disable triggers during data-only restore\n" +msgstr "" +" --disable-triggers отключить триггеры при восстановлении только " +"данных\n" + +#: pg_restore.c:430 +#, c-format +msgid "" +" --no-data-for-failed-tables\n" +" do not restore data of tables that could not be\n" +" created\n" +msgstr "" +" --no-data-for-failed-tables\n" +" не восстанавливать данные таблиц, которые\n" +" не удалось создать\n" + +#: pg_restore.c:433 +#, c-format +msgid " --no-security-labels do not restore security labels\n" +msgstr " --no-security-labels не восстанавливать метки безопасности\n" + +#: pg_restore.c:434 +#, c-format +msgid " --no-tablespaces do not restore tablespace assignments\n" +msgstr "" +" --no-tablespaces не восстанавливать назначения табличных " +"пространств\n" + +#: pg_restore.c:435 +#, c-format +msgid "" +" --use-set-session-authorization\n" +" use SET SESSION AUTHORIZATION commands instead " +"of\n" +" ALTER OWNER commands to set ownership\n" +msgstr "" +" --use-set-session-authorization\n" +" устанавливать владельца, используя команды\n" +" SET SESSION AUTHORIZATION вместо ALTER OWNER\n" + +#: pg_restore.c:445 +#, c-format +msgid " --role=ROLENAME do SET ROLE before restore\n" +msgstr " --role=ИМЯ_РОЛИ выполнить SET ROLE перед восстановлением\n" + +#: pg_restore.c:447 +#, c-format +msgid "" +"\n" +"If no input file name is supplied, then standard input is used.\n" +"\n" +msgstr "" +"\n" +"Если имя входного файла не указано, используется стандартное устройство " +"ввода.\n" +"\n" + +#: pg_dumpall.c:171 +#, c-format +msgid "" +"The program \"pg_dump\" is needed by %s but was not found in the\n" +"same directory as \"%s\".\n" +"Check your installation.\n" +msgstr "" +"Для %s необходима программа \"pg_dump\", но она не найдена\n" +"в каталоге \"%s\".\n" +"Проверьте вашу установку PostgreSQL.\n" + +#: pg_dumpall.c:178 +#, c-format +msgid "" +"The program \"pg_dump\" was found by \"%s\"\n" +"but was not the same version as %s.\n" +"Check your installation.\n" +msgstr "" +"Программа \"pg_dump\" найдена в \"%s\",\n" +"но её версия отличается от версии %s.\n" +"Проверьте вашу установку PostgreSQL.\n" + +#: pg_dumpall.c:314 +#, c-format +msgid "" +"%s: options -g/--globals-only and -r/--roles-only cannot be used together\n" +msgstr "" +"%s: параметры -g/--globals-only и -r/--roles-only исключают друг друга\n" + +#: pg_dumpall.c:323 +#, c-format +msgid "" +"%s: options -g/--globals-only and -t/--tablespaces-only cannot be used " +"together\n" +msgstr "" +"%s: параметры -g/--globals-only и -t/--tablespaces-only исключают друг " +"друга\n" + +#: pg_dumpall.c:332 +#, c-format +msgid "" +"%s: options -r/--roles-only and -t/--tablespaces-only cannot be used " +"together\n" +msgstr "" +"%s: параметры -r/--roles-only и -t/--tablespaces-only исключают друг друга\n" + +#: pg_dumpall.c:374 pg_dumpall.c:1678 +#, c-format +msgid "%s: could not connect to database \"%s\"\n" +msgstr "%s: не удалось подключиться к базе данных: \"%s\"\n" + +#: pg_dumpall.c:389 +#, c-format +msgid "" +"%s: could not connect to databases \"postgres\" or \"template1\"\n" +"Please specify an alternative database.\n" +msgstr "" +"%s: не удалось подключиться к базе данных \"postgres\" или \"template1\"\n" +"Укажите другую базу данных.\n" + +#: pg_dumpall.c:406 +#, c-format +msgid "%s: could not open the output file \"%s\": %s\n" +msgstr "%s: не удалось открыть выходной файл \"%s\": %s\n" + +#: pg_dumpall.c:528 +#, c-format +msgid "" +"%s extracts a PostgreSQL database cluster into an SQL script file.\n" +"\n" +msgstr "" +"%s экспортирует всё содержимое кластера баз данных PostgreSQL в SQL-скрипт.\n" +"\n" + +#: pg_dumpall.c:530 +#, c-format +msgid " %s [OPTION]...\n" +msgstr " %s [ПАРАМЕТР]...\n" + +#: pg_dumpall.c:533 +#, c-format +msgid " -f, --file=FILENAME output file name\n" +msgstr " -f, --file=ИМЯ_ФАЙЛА имя выходного файла\n" + +#: pg_dumpall.c:539 +#, c-format +msgid "" +" -c, --clean clean (drop) databases before recreating\n" +msgstr "" +" -c, --clean очистить (удалить) базы данных при " +"восстановлении\n" + +#: pg_dumpall.c:540 +#, c-format +msgid " -g, --globals-only dump only global objects, no databases\n" +msgstr "" +" -g, --globals-only выгрузить только глобальные объекты, без баз\n" + +#: pg_dumpall.c:542 +#, c-format +msgid " -O, --no-owner skip restoration of object ownership\n" +msgstr " -O, --no-owner не восстанавливать владение объектами\n" + +#: pg_dumpall.c:543 +#, c-format +msgid "" +" -r, --roles-only dump only roles, no databases or tablespaces\n" +msgstr "" +" -r, --roles-only выгрузить только роли, без баз данных\n" +" и табличных пространств\n" + +#: pg_dumpall.c:545 +#, c-format +msgid " -S, --superuser=NAME superuser user name to use in the dump\n" +msgstr "" +" -S, --superuser=ИМЯ имя пользователя для выполнения выгрузки\n" + +#: pg_dumpall.c:546 +#, c-format +msgid "" +" -t, --tablespaces-only dump only tablespaces, no databases or roles\n" +msgstr "" +" -t, --tablespaces-only выгружать только табличные пространства,\n" +" без баз данных и ролей\n" + +#: pg_dumpall.c:563 +#, c-format +msgid " -l, --database=DBNAME alternative default database\n" +msgstr " -l, --database=ИМЯ_БД выбор другой базы данных по умолчанию\n" + +#: pg_dumpall.c:570 +#, c-format +msgid "" +"\n" +"If -f/--file is not used, then the SQL script will be written to the " +"standard\n" +"output.\n" +"\n" +msgstr "" +"\n" +"Если не указан параметр -f/--file, SQL-скрипт записывается в стандартный " +"вывод.\n" +"\n" + +#: pg_dumpall.c:1041 +#, c-format +msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n" +msgstr "" +"%s: не удалось разобрать список управления доступом (%s) для табл. " +"пространства \"%s\"\n" + +#: pg_dumpall.c:1341 +#, c-format +msgid "%s: could not parse ACL list (%s) for database \"%s\"\n" +msgstr "" +"%s: не удалось разобрать список управления доступом (%s) для базы данных \"%s" +"\"\n" + +#: pg_dumpall.c:1548 +#, c-format +msgid "%s: dumping database \"%s\"...\n" +msgstr "%s: выгрузка базы данных \"%s\"...\n" + +#: pg_dumpall.c:1558 +#, c-format +msgid "%s: pg_dump failed on database \"%s\", exiting\n" +msgstr "%s: ошибка pg_dump для базы данных \"%s\", выход...\n" + +#: pg_dumpall.c:1567 +#, c-format +msgid "%s: could not re-open the output file \"%s\": %s\n" +msgstr "%s: не удалось повторно открыть выходной файл \"%s\": %s\n" + +#: pg_dumpall.c:1606 +#, c-format +msgid "%s: running \"%s\"\n" +msgstr "%s: выполняется \"%s\"\n" + +#: pg_dumpall.c:1651 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: нехватка памяти\n" + +#: pg_dumpall.c:1700 +#, c-format +msgid "%s: could not connect to database \"%s\": %s\n" +msgstr "%s: не удалось подключиться к базе \"%s\": %s\n" + +#: pg_dumpall.c:1714 +#, c-format +msgid "%s: could not get server version\n" +msgstr "%s: не удалось узнать версию сервера\n" + +#: pg_dumpall.c:1720 +#, c-format +msgid "%s: could not parse server version \"%s\"\n" +msgstr "%s: не удалось разобрать строку версии сервера \"%s\"\n" + +#: pg_dumpall.c:1728 +#, c-format +msgid "%s: could not parse version \"%s\"\n" +msgstr "%s: не удалось разобрать строку версии \"%s\"\n" + +#: pg_dumpall.c:1767 pg_dumpall.c:1793 +#, c-format +msgid "%s: executing %s\n" +msgstr "%s: выполняется %s\n" + +#: pg_dumpall.c:1773 pg_dumpall.c:1799 +#, c-format +msgid "%s: query failed: %s" +msgstr "%s: ошибка при выполнении запроса: %s" + +#: pg_dumpall.c:1775 pg_dumpall.c:1801 +#, c-format +msgid "%s: query was: %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" + +#: ../../port/exec.c:144 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "неверный исполняемый файл \"%s\"" + +#: ../../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\"" + +#: ../../port/exec.c:255 ../../port/exec.c:291 +#, c-format +msgid "could not change directory to \"%s\"" +msgstr "не удалось перейти в каталог \"%s\"" + +#: ../../port/exec.c:270 +#, c-format +msgid "could not read symbolic link \"%s\"" +msgstr "не удалось прочитать символическую ссылку \"%s\"" + +#: ../../port/exec.c:525 +#, c-format +msgid "child process exited with exit code %d" +msgstr "дочерний процесс завершился с кодом возврата %d" + +#: ../../port/exec.c:529 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "дочерний процесс прерван исключением 0x%X" + +#: ../../port/exec.c:538 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "дочерний процесс завершён по сигналу %s" + +#: ../../port/exec.c:541 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "дочерний процесс завершён по сигналу %d" + +#: ../../port/exec.c:545 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "дочерний процесс завершился с нераспознанным состоянием %d" + +#~ msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n" +#~ msgstr "" +#~ "неверный оператор COPY -- слово \"copy\" не найдено в строке \"%s\"\n" + +#~ msgid "" +#~ "invalid COPY statement -- could not find \"from stdin\" in string \"%s\" " +#~ "starting at position %lu\n" +#~ msgstr "" +#~ "неверный оператор COPY -- указание \"from stdin\" не найдено в строке \"%s" +#~ "\", начиная с позиции %lu\n" + +#~ msgid "restoring large object OID %u\n" +#~ msgstr "восстановление большого объекта с OID %u\n" diff --git a/src/bin/pg_dump/po/sv.po b/src/bin/pg_dump/po/sv.po index a0b4866e16..26e67a0214 100644 --- a/src/bin/pg_dump/po/sv.po +++ b/src/bin/pg_dump/po/sv.po @@ -2,8 +2,6 @@ # Peter Eisentraut , 2001, 2009, 2010. # Dennis Bj�rklund , 2002, 2003, 2004, 2005, 2006. # -# pgtranslation Id: pg_dump.po,v 1.7 2010/07/03 02:01:18 petere Exp $ -# # Use these quotes: "%s" # msgid "" @@ -14,6 +12,7 @@ msgstr "" "PO-Revision-Date: 2010-07-02 22:00-0400\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: Swedish \n" +"Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_dump/po/tr.po b/src/bin/pg_dump/po/tr.po index 3495c85255..9dbb2fb235 100644 --- a/src/bin/pg_dump/po/tr.po +++ b/src/bin/pg_dump/po/tr.po @@ -6,10 +6,11 @@ msgid "" msgstr "" "Project-Id-Version: pg_dump-tr\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-08-31 20:06+0000\n" -"PO-Revision-Date: 2010-09-01 10:50+0200\n" +"POT-Creation-Date: 2011-08-30 22:41+0000\n" +"PO-Revision-Date: 2011-08-31 15:46+0200\n" "Last-Translator: Devrim GÜNDÜZ \n" "Language-Team: Turkish \n" +"Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -22,89 +23,80 @@ msgstr "" "X-Poedit-SearchPath-1: /home/ntufar/pg/pgsql/src/backend\n" "X-Poedit-SearchPath-2: c:\\pgsql\\src\\backend\n" -#: pg_dump.c:453 -#: pg_restore.c:268 -#: pg_dumpall.c:291 -#, c-format -msgid "%s: invalid -X option -- %s\n" -msgstr "%s: geçersiz -X seçeneği -- %s\n" - -#: pg_dump.c:455 -#: pg_dump.c:477 -#: pg_dump.c:491 -#: pg_restore.c:270 -#: pg_restore.c:293 -#: pg_restore.c:309 -#: pg_restore.c:321 -#: pg_dumpall.c:293 -#: pg_dumpall.c:313 -#: pg_dumpall.c:323 -#: pg_dumpall.c:333 -#: pg_dumpall.c:342 -#: pg_dumpall.c:351 -#: pg_dumpall.c:403 +#: pg_dump.c:489 +#: pg_dump.c:503 +#: pg_restore.c:274 +#: pg_restore.c:290 +#: pg_restore.c:302 +#: pg_dumpall.c:299 +#: pg_dumpall.c:309 +#: pg_dumpall.c:319 +#: pg_dumpall.c:328 +#: pg_dumpall.c:337 +#: pg_dumpall.c:395 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Daha fazla bilgi için \"%s --help\" yazabilirsiniz.\n" -#: pg_dump.c:489 -#: pg_restore.c:307 -#: pg_dumpall.c:321 +#: pg_dump.c:501 +#: pg_restore.c:288 +#: pg_dumpall.c:307 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: çok fazla komut satırı argümanı (ilki \"%s\" idi)\n" -#: pg_dump.c:502 +#: pg_dump.c:514 +#, c-format msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "options -s/--schema-only ve -a/--data-only seçenekleri aynı anda kullanılamazlar\n" -#: pg_dump.c:508 +#: pg_dump.c:520 +#, c-format msgid "options -c/--clean and -a/--data-only cannot be used together\n" msgstr "options -c/--clean ve -a/--data-only seçenekleri aynı anda kullanılamazlar\n" -#: pg_dump.c:514 +#: pg_dump.c:526 +#, c-format msgid "options --inserts/--column-inserts and -o/--oids cannot be used together\n" msgstr "--inserts/--column-inserts ve -o/--oids beraber kullanılamazlar\n" -#: pg_dump.c:515 +#: pg_dump.c:527 +#, c-format msgid "(The INSERT command cannot set OIDs.)\n" msgstr "(INSERT komutu OIDleri ayarlayamaz.)\n" -#: pg_dump.c:545 -#, c-format -msgid "invalid output format \"%s\" specified\n" -msgstr "Geçersiz çıktı biçimi belirtildi: \"%s\" \n" - -#: pg_dump.c:551 +#: pg_dump.c:558 #, c-format msgid "could not open output file \"%s\" for writing\n" msgstr "\"%s\" çıktı dosyası yazmak için açılamadı\n" -#: pg_dump.c:561 -#: pg_backup_db.c:45 +#: pg_dump.c:568 +#: pg_backup_db.c:38 #, c-format msgid "could not parse version string \"%s\"\n" msgstr "\"%s\" sürüm bilgisi ayrıştırılamadı\n" -#: pg_dump.c:584 +#: pg_dump.c:591 #, c-format msgid "invalid client encoding \"%s\" specified\n" msgstr "belirtilen \"%s\" istemci dil kodlaması geçersiz\n" -#: pg_dump.c:661 +#: pg_dump.c:690 #, c-format msgid "last built-in OID is %u\n" msgstr "Son gömülü OID : %u\n" -#: pg_dump.c:671 +#: pg_dump.c:700 +#, c-format msgid "No matching schemas were found\n" msgstr "Uygun şema bulunamadı\n" -#: pg_dump.c:686 +#: pg_dump.c:715 +#, c-format msgid "No matching tables were found\n" msgstr "Uygun tablo bulunamadı\n" -#: pg_dump.c:798 +#: pg_dump.c:827 #, c-format msgid "" "%s dumps a database as a text file or to other formats.\n" @@ -113,21 +105,21 @@ msgstr "" "%s veritabanını metin dosyası ya da diğer biçimlerde dump eder.\n" "\n" -#: pg_dump.c:799 -#: pg_restore.c:410 -#: pg_dumpall.c:536 +#: pg_dump.c:828 +#: pg_restore.c:397 +#: pg_dumpall.c:532 #, c-format msgid "Usage:\n" msgstr "Kullanımı:\n" -#: pg_dump.c:800 +#: pg_dump.c:829 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [SEÇENEK]... [VERİTABANI_ADI]\n" -#: pg_dump.c:802 -#: pg_restore.c:413 -#: pg_dumpall.c:539 +#: pg_dump.c:831 +#: pg_restore.c:400 +#: pg_dumpall.c:535 #, c-format msgid "" "\n" @@ -136,47 +128,46 @@ msgstr "" "\n" "Genel seçenekler:\n" -#: pg_dump.c:803 -#: pg_dumpall.c:540 +#: pg_dump.c:832 #, c-format -msgid " -f, --file=FILENAME output file name\n" -msgstr " -f, --file=DOSYA ADI çıktı dosya adı\n" +msgid " -f, --file=FILENAME output file or directory name\n" +msgstr " -f, --file=DOSYA ADI çıktı dosya adı ya da dizin adı\n" -#: pg_dump.c:804 +#: pg_dump.c:833 #, c-format -msgid " -F, --format=c|t|p output file format (custom, tar, plain text)\n" -msgstr " -F, --format=c|t|p çıktı dosya biçimi (özel, tar, düz metin)\n" +msgid " -F, --format=c|d|t|p output file format (custom, directory, tar, plain text)\n" +msgstr " -F, --format=c|d|t|p çıktı dosya biçimi (c : özel, d: dizin, t: tar, p: düz metin)\n" -#: pg_dump.c:805 +#: pg_dump.c:834 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose açık mod\n" -#: pg_dump.c:806 +#: pg_dump.c:835 #, c-format msgid " -Z, --compress=0-9 compression level for compressed formats\n" msgstr " -Z, --compress=0-9 sıkıştırılmış biçimler için sıkıştırma seviyesi\n" -#: pg_dump.c:807 -#: pg_dumpall.c:541 +#: pg_dump.c:836 +#: pg_dumpall.c:537 #, c-format msgid " --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" msgstr " --lock-wait-timeout=ZAMAN AŞIMI Tablo kilitlemesi için belirtilen süreden fazla beklendiğinde hata ver\n" -#: pg_dump.c:808 -#: pg_dumpall.c:542 +#: pg_dump.c:837 +#: pg_dumpall.c:538 #, c-format msgid " --help show this help, then exit\n" msgstr " --help bu yardımı göster ve sonra çık\n" -#: pg_dump.c:809 -#: pg_dumpall.c:543 +#: pg_dump.c:838 +#: pg_dumpall.c:539 #, c-format msgid " --version output version information, then exit\n" msgstr " --version sürüm bilgisini ver ve çık\n" -#: pg_dump.c:811 -#: pg_dumpall.c:544 +#: pg_dump.c:840 +#: pg_dumpall.c:540 #, c-format msgid "" "\n" @@ -185,49 +176,49 @@ msgstr "" "\n" "Çıktı içeriğini kontrol eden seçenekler:\n" -#: pg_dump.c:812 -#: pg_dumpall.c:545 +#: pg_dump.c:841 +#: pg_dumpall.c:541 #, c-format msgid " -a, --data-only dump only the data, not the schema\n" msgstr " -a, --data-only sadece veriyi yedekler; şemayı yedeklemez\n" -#: pg_dump.c:813 +#: pg_dump.c:842 #, c-format msgid " -b, --blobs include large objects in dump\n" msgstr " -b, --blobs yedeğin içine large objectleri de ekle\n" -#: pg_dump.c:814 +#: pg_dump.c:843 #, c-format msgid " -c, --clean clean (drop) database objects before recreating\n" msgstr " -c, --clean veritabanı nesnelerini yeniden yaratmadan önce temizle (kaldır\n" -#: pg_dump.c:815 +#: pg_dump.c:844 #, c-format msgid " -C, --create include commands to create database in dump\n" msgstr " -C, --create dump'ın içinde veritabanını oluşturacak komutları da ekle\n" -#: pg_dump.c:816 +#: pg_dump.c:845 #, c-format msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" msgstr " -E, --encoding=ENCODING veriyi ENCODING dil kodlamasıyla yedekle\n" -#: pg_dump.c:817 +#: pg_dump.c:846 #, c-format msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" msgstr " -n, --schema=SCHEMA sadece belirtilen şema veya şemaları yedekle\n" -#: pg_dump.c:818 +#: pg_dump.c:847 #, c-format msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n" msgstr " -N, --exclude-schema=SCHEMA bu şema veya şemaları yedekten kaldır\n" -#: pg_dump.c:819 -#: pg_dumpall.c:548 +#: pg_dump.c:848 +#: pg_dumpall.c:544 #, c-format msgid " -o, --oids include OIDs in dump\n" msgstr " -o, --oids yedeğin içine OID'leri de ekle\n" -#: pg_dump.c:820 +#: pg_dump.c:849 #, c-format msgid "" " -O, --no-owner skip restoration of object ownership in\n" @@ -236,77 +227,94 @@ msgstr "" " -O, --no-owner düz metin biçiminde nesne \n" " sahipliğinin yüklenmesini atla\n" -#: pg_dump.c:822 -#: pg_dumpall.c:551 +#: pg_dump.c:851 +#: pg_dumpall.c:547 #, c-format msgid " -s, --schema-only dump only the schema, no data\n" msgstr " -s, --schema-only sadece şemayı dump et, veriyi etme\n" -#: pg_dump.c:823 +#: pg_dump.c:852 #, c-format msgid " -S, --superuser=NAME superuser user name to use in plain-text format\n" msgstr " -S, --superuser=NAME düz metin formatında kullanılacak superuser kullanıcı adı\n" -#: pg_dump.c:824 +#: pg_dump.c:853 #, c-format msgid " -t, --table=TABLE dump the named table(s) only\n" msgstr " -t, --table=TABLE sadece bu tablo veya tabloları yedekle\n" -#: pg_dump.c:825 +#: pg_dump.c:854 #, c-format msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n" msgstr " -T, --exclude-table=TABLE bu tablo veya tabloları yedekten kaldır\n" -#: pg_dump.c:826 -#: pg_dumpall.c:554 +#: pg_dump.c:855 +#: pg_dumpall.c:550 #, c-format msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" msgstr " -x, --no-privileges yetkileri yedekleme (grant/revoke)\n" -#: pg_dump.c:827 -#: pg_dumpall.c:555 +#: pg_dump.c:856 +#: pg_dumpall.c:551 #, c-format msgid " --binary-upgrade for use by upgrade utilities only\n" msgstr " --binary-upgrade sadece yükseltme araçlarının kullanımı için\n" -#: pg_dump.c:828 -#: pg_dumpall.c:556 -#, c-format -msgid " --inserts dump data as INSERT commands, rather than COPY\n" -msgstr " --inserts verileri COPY yerine INSERT komutları olarak yedekle\n" - -#: pg_dump.c:829 -#: pg_dumpall.c:557 +#: pg_dump.c:857 +#: pg_dumpall.c:552 #, c-format msgid " --column-inserts dump data as INSERT commands with column names\n" msgstr " --column-inserts veriyi kolon adları ile INSERT komutları olarak yedekle\n" -#: pg_dump.c:830 -#: pg_dumpall.c:558 +#: pg_dump.c:858 +#: pg_dumpall.c:553 #, c-format msgid " --disable-dollar-quoting disable dollar quoting, use SQL standard quoting\n" msgstr " --disable-dollar-quoting dollar quoting kullanmayı engelle, standart SQL quoting kullan\n" -#: pg_dump.c:831 -#: pg_dumpall.c:559 +#: pg_dump.c:859 +#: pg_dumpall.c:554 #, c-format msgid " --disable-triggers disable triggers during data-only restore\n" msgstr " --disable-triggers veri geri yükleme sırasında tetikleyicileri devre dışı bırak\n" -#: pg_dump.c:832 -#: pg_dumpall.c:560 +#: pg_dump.c:860 +#: pg_dumpall.c:555 +#, c-format +msgid " --inserts dump data as INSERT commands, rather than COPY\n" +msgstr " --inserts verileri COPY yerine INSERT komutları olarak yedekle\n" + +#: pg_dump.c:861 +#: pg_dumpall.c:556 +#, c-format +msgid " --no-security-labels do not dump security label assignments\n" +msgstr " --no-security-labels güvenlik etiketi atamalarını yedekleme\n" + +#: pg_dump.c:862 +#: pg_dumpall.c:557 #, c-format msgid " --no-tablespaces do not dump tablespace assignments\n" msgstr " --no-tablespaces tablespace atamalarını yedekleme\n" -#: pg_dump.c:833 -#: pg_dumpall.c:561 +#: pg_dump.c:863 +#: pg_dumpall.c:558 #, c-format -msgid " --role=ROLENAME do SET ROLE before dump\n" -msgstr " --role=ROL ADI dump'dan önce SET ROLE çalıştır\n" +msgid " --no-unlogged-table-data do not dump unlogged table data\n" +msgstr " --no-unlogged-table-data unlogged tablo verisini yedekleme\n" -#: pg_dump.c:834 -#: pg_dumpall.c:562 +#: pg_dump.c:864 +#: pg_dumpall.c:559 +#, c-format +msgid " --quote-all-identifiers quote all identifiers, even if not key words\n" +msgstr " --quote-all-identifiers anahtar sözcükler olmasa bile tüm belirteçleri çift tırnak içine al\n" + +#: pg_dump.c:865 +#, c-format +msgid " --serializable-deferrable wait until the dump can run without anomalies\n" +msgstr " --serializable-deferrable yedeğin bir anormallik olmadan biteceği ana kadar bekle\n" + +#: pg_dump.c:866 +#: pg_dumpall.c:560 #, c-format msgid "" " --use-set-session-authorization\n" @@ -317,9 +325,9 @@ msgstr "" " Sahipliği ayarlamak için ALTER OWNER komutları yerine\n" " SET SESSION AUTHORIZATION komutlarını kullan\n" -#: pg_dump.c:838 -#: pg_restore.c:452 -#: pg_dumpall.c:566 +#: pg_dump.c:870 +#: pg_restore.c:439 +#: pg_dumpall.c:564 #, c-format msgid "" "\n" @@ -328,42 +336,48 @@ msgstr "" "\n" "Bağlantı Seçenekleri:\n" -#: pg_dump.c:839 -#: pg_restore.c:453 -#: pg_dumpall.c:567 +#: pg_dump.c:871 +#: pg_restore.c:440 +#: pg_dumpall.c:565 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=HOSTNAME veritabanı sunucusu adresi ya da soket dizini\n" -#: pg_dump.c:840 -#: pg_restore.c:454 -#: pg_dumpall.c:569 +#: pg_dump.c:872 +#: pg_restore.c:441 +#: pg_dumpall.c:567 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p PORT veritabanı sunucusunun port numarası\n" -#: pg_dump.c:841 -#: pg_restore.c:455 -#: pg_dumpall.c:570 +#: pg_dump.c:873 +#: pg_restore.c:442 +#: pg_dumpall.c:568 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=KULLANICI_ADI bağlanılacak kullanıcı adı\n" -#: pg_dump.c:842 -#: pg_restore.c:456 -#: pg_dumpall.c:571 +#: pg_dump.c:874 +#: pg_restore.c:443 +#: pg_dumpall.c:569 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password bağlanmak için kesinlikle parola sorma\n" -#: pg_dump.c:843 -#: pg_restore.c:457 -#: pg_dumpall.c:572 +#: pg_dump.c:875 +#: pg_restore.c:444 +#: pg_dumpall.c:570 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" msgstr " -W şifre sor (otomatik olarak her zaman açık)\n" -#: pg_dump.c:845 +#: pg_dump.c:876 +#: pg_dumpall.c:571 +#, c-format +msgid " --role=ROLENAME do SET ROLE before dump\n" +msgstr " --role=ROL ADI yedek işleminden önce SET ROLE çalıştır\n" + +#: pg_dump.c:878 #, c-format msgid "" "\n" @@ -376,1138 +390,1242 @@ msgstr "" "kullanılacaktır.\n" "\n" -#: pg_dump.c:847 -#: pg_restore.c:460 -#: pg_dumpall.c:576 +#: pg_dump.c:880 +#: pg_restore.c:448 +#: pg_dumpall.c:575 #, c-format msgid "Report bugs to .\n" msgstr "Hataları adresine bildirin.\n" -#: pg_dump.c:855 -#: pg_backup_archiver.c:1401 +#: pg_dump.c:888 +#: pg_backup_archiver.c:1458 +#, c-format msgid "*** aborted because of error\n" msgstr "*** hata nedeniyle durduruldu\n" -#: pg_dump.c:876 +#: pg_dump.c:930 +#, c-format +msgid "invalid output format \"%s\" specified\n" +msgstr "Geçersiz çıktı biçimi belirtildi: \"%s\" \n" + +#: pg_dump.c:953 +#, c-format msgid "server version must be at least 7.3 to use schema selection switches\n" msgstr "şema seçim anahtarlarını kullanmak için sunucu sürümü 7.3 ya da daha yüksek olmalıdır\n" -#: pg_dump.c:1114 +#: pg_dump.c:1211 #, c-format msgid "dumping contents of table %s\n" msgstr "%s tablosunun içeriği aktarılıyor\n" -#: pg_dump.c:1217 +#: pg_dump.c:1331 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" msgstr "\"%s\" tablosunu içeriğinin aktarımı başarısız: PQgetCopyData() başarısız.\n" -#: pg_dump.c:1218 -#: pg_dump.c:12413 +#: pg_dump.c:1332 +#: pg_dump.c:14206 #, c-format msgid "Error message from server: %s" msgstr "Sunucudan hata mesajı alındı: %s" -#: pg_dump.c:1219 -#: pg_dump.c:12414 +#: pg_dump.c:1333 +#: pg_dump.c:14207 #, c-format msgid "The command was: %s\n" msgstr "O sırada yürütülen komut: %s\n" -#: pg_dump.c:1625 +#: pg_dump.c:1756 +#, c-format msgid "saving database definition\n" msgstr "veritabanın tanımı kaydediliyor\n" -#: pg_dump.c:1707 +#: pg_dump.c:1838 #, c-format msgid "missing pg_database entry for database \"%s\"\n" msgstr "\"%s\" veritabanı için pg_database kaydı bulunamadı\n" -#: pg_dump.c:1714 +#: pg_dump.c:1845 #, c-format msgid "query returned more than one (%d) pg_database entry for database \"%s\"\n" msgstr "Sorgu, birden fazla (%d) sonucu \"%s\" veritabanının pg_database kaydı için döndürdü\n" -#: pg_dump.c:1815 +#: pg_dump.c:1949 +#, c-format msgid "dumpDatabase(): could not find pg_largeobject.relfrozenxid\n" msgstr "dumpDatabase(): pg_largeobject.relfrozenxid bulunamadı\n" -#: pg_dump.c:1892 +#: pg_dump.c:1988 +#, c-format +msgid "dumpDatabase(): could not find pg_largeobject_metadata.relfrozenxid\n" +msgstr "dumpDatabase(): pg_largeobject_metadata.relfrozenxid bulunamadı\n" + +#: pg_dump.c:2085 #, c-format msgid "saving encoding = %s\n" msgstr "dil kodlaması = %s\n" -#: pg_dump.c:1919 +#: pg_dump.c:2112 #, c-format msgid "saving standard_conforming_strings = %s\n" msgstr "kaydedilen: standard_conforming_strings = %s\n" -#: pg_dump.c:1952 +#: pg_dump.c:2145 +#, c-format msgid "reading large objects\n" msgstr "large objectler okunuyor\n" -#: pg_dump.c:2079 +#: pg_dump.c:2277 +#, c-format msgid "saving large objects\n" msgstr "large objectler kaydediliyor\n" -#: pg_dump.c:2121 -#: pg_backup_archiver.c:946 +#: pg_dump.c:2319 +#: pg_backup_archiver.c:984 #, c-format msgid "could not open large object %u: %s" msgstr " %u large object açılamadı: %s" -#: pg_dump.c:2134 +#: pg_dump.c:2332 #, c-format msgid "error reading large object %u: %s" msgstr "%u large object okurken hata oldu: %s" -#: pg_dump.c:2181 -#: pg_dump.c:2229 -#: pg_dump.c:2291 -#: pg_dump.c:6912 -#: pg_dump.c:7115 -#: pg_dump.c:7931 -#: pg_dump.c:8469 -#: pg_dump.c:8719 -#: pg_dump.c:8825 -#: pg_dump.c:9210 -#: pg_dump.c:9386 -#: pg_dump.c:9583 -#: pg_dump.c:9810 -#: pg_dump.c:9965 -#: pg_dump.c:10152 -#: pg_dump.c:12219 +#: pg_dump.c:2379 +#: pg_dump.c:2427 +#: pg_dump.c:2482 +#: pg_dump.c:7647 +#: pg_dump.c:7878 +#: pg_dump.c:8844 +#: pg_dump.c:9396 +#: pg_dump.c:9650 +#: pg_dump.c:9764 +#: pg_dump.c:10220 +#: pg_dump.c:10406 +#: pg_dump.c:10512 +#: pg_dump.c:10712 +#: pg_dump.c:10954 +#: pg_dump.c:11121 +#: pg_dump.c:11342 +#: pg_dump.c:14012 #, c-format msgid "query returned %d row instead of one: %s\n" msgid_plural "query returned %d rows instead of one: %s\n" msgstr[0] "sorgu 1 yerine %d satır döndürdü: %s\n" msgstr[1] "sorgu 1 yerine %d satır döndürdü: %s\n" -#: pg_dump.c:2436 +#: pg_dump.c:2563 +#, c-format +msgid "could not find parent extension for %s" +msgstr "%s için üst uzantı bulunamadı" + +#: pg_dump.c:2670 #, c-format msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" msgstr "UYARI: \"%s\" şemasının sahibi geçersizdir\n" -#: pg_dump.c:2471 +#: pg_dump.c:2705 #, c-format msgid "schema with OID %u does not exist\n" msgstr "OID %u olan şema mevcut değil\n" -#: pg_dump.c:2728 +#: pg_dump.c:3046 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" msgstr "UYARI: \"%s\" veri tipinin sahibi geçersizdir\n" -#: pg_dump.c:2832 +#: pg_dump.c:3150 #, c-format msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" msgstr "UYARI: \"%s\" operatörün sahibi geçersizdir\n" -#: pg_dump.c:3006 +#: pg_dump.c:3402 #, c-format msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" msgstr "UYARI: \"%s\" operator sınıfının sahibi geçersizdir\n" -#: pg_dump.c:3093 +#: pg_dump.c:3489 #, c-format msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" msgstr "UYARI: \"%s\" operatör ailesinin sahibi geçersizdir\n" -#: pg_dump.c:3218 +#: pg_dump.c:3626 #, c-format msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" msgstr "UYARI: \"%s\" aggregate fonksiyonun sahibi geçersizdir\n" -#: pg_dump.c:3373 +#: pg_dump.c:3796 #, c-format msgid "WARNING: owner of function \"%s\" appears to be invalid\n" msgstr "UYARI: \"%s\" fonksiyonunun sahibi geçersizdir\n" -#: pg_dump.c:3806 +#: pg_dump.c:4296 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" msgstr "UYARI: \"%s\" tablosunun sahibi geçersizdir\n" -#: pg_dump.c:3949 +#: pg_dump.c:4439 #, c-format msgid "reading indexes for table \"%s\"\n" msgstr "\"%s\" tablosunun indexleri okunuyor\n" -#: pg_dump.c:4269 +#: pg_dump.c:4759 #, c-format msgid "reading foreign key constraints for table \"%s\"\n" msgstr "\"%s\" tablosunun foreign key bütünlük kısıtlamaları okunuyor\n" -#: pg_dump.c:4501 +#: pg_dump.c:4991 #, c-format msgid "failed sanity check, parent table OID %u of pg_rewrite entry OID %u not found\n" msgstr "tutarlılık kontrolü başarısız, üst tablo OID'inin %u, pg_rewrite girdisi OID'i %u bulunamadı\n" -#: pg_dump.c:4585 +#: pg_dump.c:5075 #, c-format msgid "reading triggers for table \"%s\"\n" msgstr "\"%s\" tablosunun tetikleyicileri okunuyor\n" -#: pg_dump.c:4748 +#: pg_dump.c:5238 #, c-format msgid "query produced null referenced table name for foreign key trigger \"%s\" on table \"%s\" (OID of table: %u)\n" msgstr "\"%2$s\" tablosu üzerindeki \"%1$s\" foreign key tetikleyici için sorgu, null referans edilen tablo sayısı getirdi (tablo OID: %3$u)\n" -#: pg_dump.c:5118 +#: pg_dump.c:5610 #, c-format msgid "finding the columns and types of table \"%s\"\n" msgstr "\"%s\" tablosunun bütünlük kısıtlamaları ve tipleri bulunuyor\n" -#: pg_dump.c:5237 +#: pg_dump.c:5787 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "\"%s\" tablosunda geçersiz kolon numaralandırlması\n" -#: pg_dump.c:5273 +#: pg_dump.c:5825 #, c-format msgid "finding default expressions of table \"%s\"\n" msgstr "\"%s\" tablosu için varsayılan ifadeler aranıyor\n" -#: pg_dump.c:5358 +#: pg_dump.c:5910 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" msgstr "\"%2$s\" tablosu için geçersiz adnum değeri %1$d\n" -#: pg_dump.c:5376 +#: pg_dump.c:5928 #, c-format msgid "finding check constraints for table \"%s\"\n" msgstr "\"%s\" tablosu için bütünlük kısıtlamaları bulunuyor\n" -#: pg_dump.c:5456 +#: pg_dump.c:6008 #, c-format msgid "expected %d check constraint on table \"%s\" but found %d\n" msgid_plural "expected %d check constraints on table \"%s\" but found %d\n" msgstr[0] "%d check kısıtlamasının \"%s\" tablosunda bulunması beklendi; ancak %d bulundu\n" msgstr[1] "%d check kısıtlamasının \"%s\" tablosunda bulunması beklendi; ancak %d bulundu\n" -#: pg_dump.c:5460 +#: pg_dump.c:6012 +#, c-format msgid "(The system catalogs might be corrupted.)\n" msgstr "(Sistem kataloğu bozulmuş olabilir.)\n" -#: pg_dump.c:7242 -#: pg_dump.c:7349 +#: pg_dump.c:8610 #, c-format -msgid "query returned no rows: %s\n" -msgstr "sorgu hiçbir satır döndürmedi: %s\n" - -#: pg_dump.c:7699 msgid "WARNING: bogus value in proargmodes array\n" msgstr "UYARI: proargnames dizisi içinde beklenmeyen değer\n" -#: pg_dump.c:8011 +#: pg_dump.c:8924 +#, c-format msgid "WARNING: could not parse proallargtypes array\n" msgstr "UYARI: proallargtypes dizisi ayrıştırılamadı\n" -#: pg_dump.c:8027 +#: pg_dump.c:8940 +#, c-format msgid "WARNING: could not parse proargmodes array\n" msgstr "UYARI: proargmodes dizisi ayrıştırılamadı\n" -#: pg_dump.c:8041 +#: pg_dump.c:8954 +#, c-format msgid "WARNING: could not parse proargnames array\n" msgstr "UYARI: proargnames dizisi ayrıştırılamadı\n" -#: pg_dump.c:8052 +#: pg_dump.c:8965 +#, c-format msgid "WARNING: could not parse proconfig array\n" msgstr "UYARI: proconfig dizisi ayrıştırılamadı\n" -#: pg_dump.c:8108 +#: pg_dump.c:9021 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "\"%s\" fonksiyonu için bilinmeyen provolatile değeri\n" -#: pg_dump.c:8311 +#: pg_dump.c:9237 +#, c-format msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "UYARI: pg_cast.castmethod field alanı içinde belirsiz değer\n" -#: pg_dump.c:8688 +#: pg_dump.c:9619 #, c-format msgid "WARNING: could not find operator with OID %s\n" msgstr "UYARI: OID %s olan operatör bulunamadı\n" -#: pg_dump.c:9609 +#: pg_dump.c:10738 #, c-format msgid "WARNING: aggregate function %s could not be dumped correctly for this database version; ignored\n" msgstr "UYARI: %s aggregate fonksiyonu veritabanın bu sürümünde düzgün dump edilemiyor; atlanıyor\n" -#: pg_dump.c:10337 +#: pg_dump.c:11538 #, c-format msgid "unknown object type (%d) in default privileges\n" msgstr "öntanımlı yetkilerde bilinmeyen nesne tipi %d\n" -#: pg_dump.c:10354 +#: pg_dump.c:11555 #, c-format msgid "could not parse default ACL list (%s)\n" msgstr "öntanımlı ACL listesi ayrıştırılamıyor (%s)\n" -#: pg_dump.c:10411 +#: pg_dump.c:11612 #, c-format msgid "could not parse ACL list (%s) for object \"%s\" (%s)\n" msgstr "\"%2$s\" nesnesinin ACL listesi (%1$s) ayrıştırılamıyor (%3$s)\n" -#: pg_dump.c:10554 +#: pg_dump.c:12052 #, c-format msgid "query to obtain definition of view \"%s\" returned no data\n" msgstr "\"%s\" vew tanımını getirecek sorgu hiçbir veri getirmedi\n" -#: pg_dump.c:10557 +#: pg_dump.c:12055 #, c-format msgid "query to obtain definition of view \"%s\" returned more than one definition\n" msgstr "\"%s\" vew tanımını getirecek sorgu birden çık tanımı getirdi\n" -#: pg_dump.c:10566 +#: pg_dump.c:12064 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)\n" msgstr "\"%s\" vew tanımı boştur (uzunluk sıfır)\n" -#: pg_dump.c:11042 +#: pg_dump.c:12647 #, c-format msgid "invalid column number %d for table \"%s\"\n" msgstr "\"%2$s\" tablosu için geçersiz sütun numarası %1$d\n" -#: pg_dump.c:11150 +#: pg_dump.c:12758 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "\"%s\" bütünlük kısıtlamasının indexi eksik\n" -#: pg_dump.c:11338 +#: pg_dump.c:12946 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "bilinmeyen bütünlük kısıtlama türü: %c\n" -#: pg_dump.c:11401 +#: pg_dump.c:13009 +#, c-format msgid "missing pg_database entry for this database\n" msgstr "bu veritabanı için pg_database kaydı bulunamadı\n" -#: pg_dump.c:11406 +#: pg_dump.c:13014 +#, c-format msgid "found more than one pg_database entry for this database\n" msgstr "bu veritabanı için birden fazla pg_database kaydı bulundu\n" -#: pg_dump.c:11438 +#: pg_dump.c:13046 +#, c-format msgid "could not find entry for pg_indexes in pg_class\n" msgstr "pg_class içinde pg_indexes için kayıt bulunamadı\n" -#: pg_dump.c:11443 +#: pg_dump.c:13051 +#, c-format msgid "found more than one entry for pg_indexes in pg_class\n" msgstr "pg_class içinde pg_indexes için birden çok kayıt bulundu\n" -#: pg_dump.c:11514 +#: pg_dump.c:13123 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" msgid_plural "query to get data of sequence \"%s\" returned %d rows (expected 1)\n" msgstr[0] "\"%s\" sequence verisini getirecek sorgu %d satır döndürdü (bir satır bekleniyordu)\n" msgstr[1] "\"%s\" sequence verisini getirecek sorgu %d satır döndürdü (bir satır bekleniyordu)\n" -#: pg_dump.c:11525 +#: pg_dump.c:13134 #, c-format msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" msgstr "\"%s\" sequence verisini getirecek sorgu \"%s\" adını getirdi\n" -#: pg_dump.c:11819 +#: pg_dump.c:13362 +#, c-format +msgid "unexpected tgtype value: %d\n" +msgstr "beklenmeyen tgtype değeri: %d\n" + +#: pg_dump.c:13444 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" msgstr "\"%3$s\" tablosunun \"%2$s\" tetikleyicisi için geçersiz satır argümanı (%1$s)\n" -#: pg_dump.c:11935 +#: pg_dump.c:13562 #, c-format msgid "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows returned\n" msgstr "\"%s\" tablosundan \"%s\" rule'unu getiren sorgu başarısız: yanlış satır sayısı döndürüldü\n" -#: pg_dump.c:12030 +#: pg_dump.c:13819 +#, c-format msgid "reading dependency data\n" msgstr "bağımlılık verileri okunuyor\n" -#: pg_dump.c:12408 +#: pg_dump.c:14201 +#, c-format msgid "SQL command failed\n" msgstr "SQL komutu başarısız\n" -#: common.c:115 +#: common.c:105 +#, c-format msgid "reading schemas\n" msgstr "şemalar okunuyor\n" -#: common.c:119 +#: common.c:115 +#, c-format +msgid "reading user-defined tables\n" +msgstr "kullanıcı tanımlı tablolar okunuyor\n" + +#: common.c:120 +#, c-format +msgid "reading extensions\n" +msgstr "uzantılar okunuyor\n" + +#: common.c:124 +#, c-format msgid "reading user-defined functions\n" msgstr "kullanıcı tanımlı fonksiyonlar okunuyor\n" -#: common.c:125 +#: common.c:130 +#, c-format msgid "reading user-defined types\n" msgstr "kullanıcı tanımlı tipler okunuyor\n" -#: common.c:131 +#: common.c:136 +#, c-format msgid "reading procedural languages\n" msgstr "yordamsal diller okunuyor\n" -#: common.c:135 +#: common.c:140 +#, c-format msgid "reading user-defined aggregate functions\n" msgstr "kullanıcı-tanımlı aggregate fonksiyonlar okunuyor\n" -#: common.c:139 +#: common.c:144 +#, c-format msgid "reading user-defined operators\n" msgstr "kullanıcı tanımlı operatörler okunuyor\n" -#: common.c:144 +#: common.c:149 +#, c-format msgid "reading user-defined operator classes\n" msgstr "kullanıcı-tanımlı operatör sınıfları okunuyor\n" -#: common.c:148 +#: common.c:153 +#, c-format +msgid "reading user-defined operator families\n" +msgstr "kullanıcı tanımlı operatör aileleri okunuyor\n" + +#: common.c:157 +#, c-format msgid "reading user-defined text search parsers\n" msgstr "kullanıcı tanımlı metin arama ayrıştırıcıları okunuyor\n" -#: common.c:152 +#: common.c:161 +#, c-format msgid "reading user-defined text search templates\n" msgstr "kullanıcı tanımlı metin arama şablonları okunuyor\n" -#: common.c:156 +#: common.c:165 +#, c-format msgid "reading user-defined text search dictionaries\n" msgstr "kullanıcı-tanımlı metin arama sözlükleri okunuyor\n" -#: common.c:160 +#: common.c:169 +#, c-format msgid "reading user-defined text search configurations\n" msgstr "kullanıcı-tanımlı metin arama yapılandırmaları okunuyor\n" -#: common.c:164 +#: common.c:173 +#, c-format msgid "reading user-defined foreign-data wrappers\n" msgstr "kullanıcı tanımlı foreign-data wrapperlar okunuyor\n" -#: common.c:168 +#: common.c:177 +#, c-format msgid "reading user-defined foreign servers\n" msgstr "kullanıcı tanımlı foreign sunucular okunuyor\n" -#: common.c:172 +#: common.c:181 +#, c-format msgid "reading default privileges\n" msgstr "öntanımlı yetkiler okunuyor\n" -#: common.c:176 -msgid "reading user-defined operator families\n" -msgstr "kullanıcı tanımlı operatör aileleri okunuyor\n" +#: common.c:185 +#, c-format +msgid "reading user-defined collations\n" +msgstr "kullanıcı tanımlı collationlar okunuyor\n" -#: common.c:180 +#: common.c:190 +#, c-format msgid "reading user-defined conversions\n" msgstr "kullanıcı tanımlı dönüşümler okunuyor\n" -#: common.c:184 -msgid "reading user-defined tables\n" -msgstr "kullanıcı tanımlı tablolar okunuyor\n" +#: common.c:194 +#, c-format +msgid "reading type casts\n" +msgstr "type castlar okunuyor\n" -#: common.c:189 +#: common.c:198 +#, c-format msgid "reading table inheritance information\n" msgstr "kullanıcı tanımlı inheritance bilgisi okunuyor\n" -#: common.c:193 +#: common.c:202 +#, c-format msgid "reading rewrite rules\n" msgstr "rewrite ruleler okunuyor\n" -#: common.c:197 -msgid "reading type casts\n" -msgstr "type castlar okunuyor\n" +#: common.c:211 +#, c-format +msgid "finding extension members\n" +msgstr "uzantı üyeleri bulunuyor\n" -#: common.c:202 +#: common.c:216 +#, c-format msgid "finding inheritance relationships\n" msgstr "inheritance ilişkiler bulunuyor\n" -#: common.c:206 +#: common.c:220 +#, c-format msgid "reading column info for interesting tables\n" msgstr "ilgili tabloların sütun bilgisi okunuyor\n" -#: common.c:210 +#: common.c:224 +#, c-format msgid "flagging inherited columns in subtables\n" msgstr "alt tablolarında inherited sütunlar işaretleniyor\n" -#: common.c:214 +#: common.c:228 +#, c-format msgid "reading indexes\n" msgstr "indexler okunuyor\n" -#: common.c:218 +#: common.c:232 +#, c-format msgid "reading constraints\n" msgstr "bütünlük kısıtlamaları okunuyor\n" -#: common.c:222 +#: common.c:236 +#, c-format msgid "reading triggers\n" msgstr "tetikleyiciler okunuyor\n" -#: common.c:802 +#: common.c:828 #, c-format msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n" msgstr "tutarlılık kontrolü başarısız, \"%2$s\" tablosunun (OID %3$u) üst OID %1$u bulunamadı\n" -#: common.c:844 +#: common.c:870 #, c-format msgid "could not parse numeric array \"%s\": too many numbers\n" msgstr "\"%s\" numerik dizisi ayrıştırılamadı: çok fazla sayı\n" -#: common.c:859 +#: common.c:885 #, c-format msgid "could not parse numeric array \"%s\": invalid character in number\n" msgstr "\"%s\" numerik dizisi ayrıştırılamadı: sayıda geçersiz karakter\n" -#: common.c:972 +#: common.c:998 +#, c-format msgid "cannot duplicate null pointer\n" msgstr "null pointer dump edilemez\n" -#: common.c:975 -#: common.c:986 -#: common.c:997 -#: common.c:1008 -#: pg_backup_archiver.c:727 -#: pg_backup_archiver.c:1103 -#: pg_backup_archiver.c:1234 -#: pg_backup_archiver.c:1705 -#: pg_backup_archiver.c:1862 -#: pg_backup_archiver.c:1908 -#: pg_backup_archiver.c:4048 -#: pg_backup_custom.c:144 -#: pg_backup_custom.c:149 -#: pg_backup_custom.c:155 -#: pg_backup_custom.c:170 -#: pg_backup_custom.c:570 -#: pg_backup_custom.c:1113 -#: pg_backup_custom.c:1122 -#: pg_backup_db.c:154 -#: pg_backup_db.c:164 -#: pg_backup_db.c:212 -#: pg_backup_db.c:256 -#: pg_backup_db.c:271 -#: pg_backup_db.c:305 +#: common.c:1001 +#: common.c:1012 +#: common.c:1023 +#: common.c:1034 +#: pg_backup_archiver.c:764 +#: pg_backup_archiver.c:1160 +#: pg_backup_archiver.c:1291 +#: pg_backup_archiver.c:1761 +#: pg_backup_archiver.c:1955 +#: pg_backup_archiver.c:2001 +#: pg_backup_archiver.c:4209 +#: pg_backup_custom.c:132 +#: pg_backup_custom.c:139 +#: pg_backup_custom.c:780 +#: pg_backup_custom.c:907 +#: pg_backup_db.c:147 +#: pg_backup_db.c:157 +#: pg_backup_db.c:205 +#: pg_backup_db.c:249 +#: pg_backup_db.c:264 +#: pg_backup_db.c:298 +#: pg_backup_db.c:403 #: pg_backup_files.c:114 #: pg_backup_null.c:72 -#: pg_backup_tar.c:167 -#: pg_backup_tar.c:1011 +#: pg_backup_tar.c:171 +#: pg_backup_tar.c:1015 +#, c-format msgid "out of memory\n" msgstr "yetersiz bellek\n" -#: pg_backup_archiver.c:80 +#: pg_backup_archiver.c:88 msgid "archiver" msgstr "arşivleyici" -#: pg_backup_archiver.c:195 -#: pg_backup_archiver.c:1198 +#: pg_backup_archiver.c:207 +#: pg_backup_archiver.c:1259 #, c-format msgid "could not close output file: %s\n" msgstr "çıktı dosyası kapatılamadı: %s\n" -#: pg_backup_archiver.c:220 +#: pg_backup_archiver.c:233 +#, c-format msgid "-C and -c are incompatible options\n" msgstr "-C ve -c seçenekler bir arada kullanılamaz\n" -#: pg_backup_archiver.c:227 +#: pg_backup_archiver.c:240 +#, c-format msgid "-C and -1 are incompatible options\n" msgstr "-C and -1 uyumsuz seçeneklerdir\n" -#: pg_backup_archiver.c:239 +#: pg_backup_archiver.c:250 +#, c-format +msgid "parallel restore is not supported with this archive file format\n" +msgstr "paralel geri yükleme bu arşiv biçimini desteklemiyor\n" + +#: pg_backup_archiver.c:254 +#, c-format +msgid "parallel restore is not supported with archives made by pre-8.0 pg_dump\n" +msgstr "paralel geri yükleme özelliği 8.0 öncesi pg_dump ile yapılan arşivleri desteklememektedir\n" + +#: pg_backup_archiver.c:273 +#, c-format msgid "cannot restore from compressed archive (compression not supported in this installation)\n" msgstr "sıkıştırılmış arşivden yükleme başarısız (bu kurulumda sıkıştırma desteklenmiyor)\n" -#: pg_backup_archiver.c:249 +#: pg_backup_archiver.c:283 +#, c-format msgid "connecting to database for restore\n" msgstr "geri yüklemek için veritabana bağlanılıyor\n" -#: pg_backup_archiver.c:251 +#: pg_backup_archiver.c:285 +#, c-format msgid "direct database connections are not supported in pre-1.3 archives\n" msgstr "1.3 sürüm öncesi arşivlerinde doğrudan veritabanı bağlantıları desteklenmemektedir\n" -#: pg_backup_archiver.c:293 +#: pg_backup_archiver.c:327 +#, c-format msgid "implied data-only restore\n" msgstr "örtük salt veri geri yükleme\n" -#: pg_backup_archiver.c:344 +#: pg_backup_archiver.c:379 #, c-format msgid "dropping %s %s\n" msgstr "%s %s kaldırılıyor\n" -#: pg_backup_archiver.c:396 +#: pg_backup_archiver.c:431 #, c-format msgid "setting owner and privileges for %s %s\n" msgstr "%s %s için sahiplik ve izinler ayarlanıyor\n" -#: pg_backup_archiver.c:454 -#: pg_backup_archiver.c:456 +#: pg_backup_archiver.c:489 +#: pg_backup_archiver.c:491 #, c-format msgid "warning from original dump file: %s\n" msgstr "asıl dump dosyasından uyarı: %s\n" -#: pg_backup_archiver.c:463 +#: pg_backup_archiver.c:498 #, c-format msgid "creating %s %s\n" msgstr "%s %s oluşturuluyor\n" -#: pg_backup_archiver.c:507 +#: pg_backup_archiver.c:542 #, c-format msgid "connecting to new database \"%s\"\n" msgstr "\"%s\" veritabanına bağlanılıyor\n" -#: pg_backup_archiver.c:535 +#: pg_backup_archiver.c:570 #, c-format msgid "restoring %s\n" msgstr "%s geri yükleniyor\n" -#: pg_backup_archiver.c:549 +#: pg_backup_archiver.c:584 #, c-format msgid "restoring data for table \"%s\"\n" msgstr "\"%s\" tablosunun verileri geri yükleniyor\n" -#: pg_backup_archiver.c:609 +#: pg_backup_archiver.c:646 #, c-format msgid "executing %s %s\n" msgstr "%s %s yürütülüyor\n" -#: pg_backup_archiver.c:642 +#: pg_backup_archiver.c:679 #, c-format msgid "disabling triggers for %s\n" msgstr "%s nesnesinin tetikleyicileri etkisiz hale getiriliyor\n" -#: pg_backup_archiver.c:668 +#: pg_backup_archiver.c:705 #, c-format msgid "enabling triggers for %s\n" msgstr "%s nesnesinin tetikleyicileri etkineştiriliyor\n" -#: pg_backup_archiver.c:698 +#: pg_backup_archiver.c:735 +#, c-format msgid "internal error -- WriteData cannot be called outside the context of a DataDumper routine\n" msgstr "İç hata - WriteData cannot be called outside the context of a DataDumper routine\n" -#: pg_backup_archiver.c:854 +#: pg_backup_archiver.c:892 +#, c-format msgid "large-object output not supported in chosen format\n" msgstr "seçilen biçimde large-object çıktısı desteklenememektedir\n" -#: pg_backup_archiver.c:908 +#: pg_backup_archiver.c:946 #, c-format msgid "restored %d large object\n" msgid_plural "restored %d large objects\n" msgstr[0] "%d large object geri yüklendi\n" msgstr[1] "%d large object geri yüklendi\n" -#: pg_backup_archiver.c:929 +#: pg_backup_archiver.c:967 #, c-format msgid "restoring large object with OID %u\n" msgstr "large-object OID %u geri yükleniyor\n" -#: pg_backup_archiver.c:941 +#: pg_backup_archiver.c:979 #, c-format msgid "could not create large object %u: %s" msgstr "%u large object oluşturulamadı: %s" -#: pg_backup_archiver.c:1006 +#: pg_backup_archiver.c:1041 #, c-format msgid "could not open TOC file \"%s\": %s\n" msgstr "\"%s\" TOC dosyası açılamadı: %s\n" -#: pg_backup_archiver.c:1025 +#: pg_backup_archiver.c:1082 #, c-format msgid "WARNING: line ignored: %s\n" msgstr "UYARI: satır yoksayıldı: %s\n" -#: pg_backup_archiver.c:1032 +#: pg_backup_archiver.c:1089 #, c-format msgid "could not find entry for ID %d\n" msgstr "ID %d için bir alan girdisi bulunamıyor\n" -#: pg_backup_archiver.c:1053 +#: pg_backup_archiver.c:1110 #: pg_backup_files.c:172 #: pg_backup_files.c:457 #, c-format msgid "could not close TOC file: %s\n" msgstr "TOC dosyası kapatılamıyor: %s\n" -#: pg_backup_archiver.c:1177 -#: pg_backup_custom.c:181 +#: pg_backup_archiver.c:1229 +#: pg_backup_custom.c:152 #: pg_backup_files.c:130 #: pg_backup_files.c:262 #, c-format msgid "could not open output file \"%s\": %s\n" msgstr "\"%s\" çıktı dosyası açılamadı: %s\n" -#: pg_backup_archiver.c:1180 -#: pg_backup_custom.c:188 +#: pg_backup_archiver.c:1232 +#: pg_backup_custom.c:159 #: pg_backup_files.c:137 #, c-format msgid "could not open output file: %s\n" msgstr "çıktı dosyası açılamadı: %s\n" -#: pg_backup_archiver.c:1277 +#: pg_backup_archiver.c:1334 #, c-format msgid "wrote %lu byte of large object data (result = %lu)\n" msgid_plural "wrote %lu bytes of large object data (result = %lu)\n" msgstr[0] "large object verisinin %lu baytı yazıldı (sonuç = %lu)\n" msgstr[1] "large object verisinin %lu baytı yazıldı (sonuç = %lu)\n" -#: pg_backup_archiver.c:1283 +#: pg_backup_archiver.c:1340 #, c-format msgid "could not write to large object (result: %lu, expected: %lu)\n" msgstr "large-object yazılamıyor (sonuç: %lu, beklenen: %lu)\n" -#: pg_backup_archiver.c:1341 -#: pg_backup_archiver.c:1364 -#: pg_backup_custom.c:781 -#: pg_backup_custom.c:1035 -#: pg_backup_custom.c:1049 +#: pg_backup_archiver.c:1398 +#: pg_backup_archiver.c:1421 +#: pg_backup_custom.c:652 #: pg_backup_files.c:432 -#: pg_backup_tar.c:586 -#: pg_backup_tar.c:1089 -#: pg_backup_tar.c:1382 +#: pg_backup_tar.c:590 +#: pg_backup_tar.c:1093 +#: pg_backup_tar.c:1386 #, c-format msgid "could not write to output file: %s\n" msgstr "çıktı dosyasına yazma başarısız: %s\n" -#: pg_backup_archiver.c:1349 +#: pg_backup_archiver.c:1406 +#, c-format msgid "could not write to custom output routine\n" msgstr "kullanıcı tanımlı çıktı yordamına yazma hatası\n" -#: pg_backup_archiver.c:1447 +#: pg_backup_archiver.c:1504 +#, c-format msgid "Error while INITIALIZING:\n" msgstr "INITIALIZING sırasında hata:\n" -#: pg_backup_archiver.c:1452 +#: pg_backup_archiver.c:1509 +#, c-format msgid "Error while PROCESSING TOC:\n" msgstr "PROCESSING TOC sırasında hata:\n" -#: pg_backup_archiver.c:1457 +#: pg_backup_archiver.c:1514 +#, c-format msgid "Error while FINALIZING:\n" msgstr "FINALIZING sırasında hata:\n" -#: pg_backup_archiver.c:1462 +#: pg_backup_archiver.c:1519 #, c-format msgid "Error from TOC entry %d; %u %u %s %s %s\n" msgstr "TOC girişte hata %d; %u %u %s %s %s\n" -#: pg_backup_archiver.c:1598 +#: pg_backup_archiver.c:1654 #, c-format msgid "unexpected data offset flag %d\n" msgstr "beklenmeyen veri konum bayrağı %d\n" -#: pg_backup_archiver.c:1611 +#: pg_backup_archiver.c:1667 +#, c-format msgid "file offset in dump file is too large\n" msgstr "dump dosyasında dosya göstergesi çok büyük\n" -#: pg_backup_archiver.c:1708 -#: pg_backup_archiver.c:3009 -#: pg_backup_custom.c:757 +#: pg_backup_archiver.c:1764 +#: pg_backup_archiver.c:3113 +#: pg_backup_custom.c:630 #: pg_backup_files.c:419 -#: pg_backup_tar.c:785 +#: pg_backup_tar.c:789 +#, c-format msgid "unexpected end of file\n" msgstr "beklenmeyen dosya sonu\n" -#: pg_backup_archiver.c:1725 +#: pg_backup_archiver.c:1781 +#, c-format msgid "attempting to ascertain archive format\n" msgstr "arşiv formatı doğrulanmaya çalışılıyor\n" -#: pg_backup_archiver.c:1741 -#: pg_backup_custom.c:200 -#: pg_backup_custom.c:888 +#: pg_backup_archiver.c:1807 +#: pg_backup_archiver.c:1817 +#, c-format +msgid "directory name too long: \"%s\"\n" +msgstr "dizin adı çok uzun:: \"%s\"\n" + +#: pg_backup_archiver.c:1825 +#, c-format +msgid "directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not exist)\n" +msgstr "\"%s\" dizini geçerli bir arşiv olarak görünmüyor (\"toc.dat\" bulunamadı)\n" + +#: pg_backup_archiver.c:1833 +#: pg_backup_custom.c:171 +#: pg_backup_custom.c:762 #: pg_backup_files.c:155 #: pg_backup_files.c:307 #, c-format msgid "could not open input file \"%s\": %s\n" msgstr "\"%s\" giriş dosyası açılamadı: %s\n" -#: pg_backup_archiver.c:1748 -#: pg_backup_custom.c:207 +#: pg_backup_archiver.c:1841 +#: pg_backup_custom.c:178 #: pg_backup_files.c:162 #, c-format msgid "could not open input file: %s\n" msgstr "giriş dosyası açılamadı: %s\n" -#: pg_backup_archiver.c:1757 +#: pg_backup_archiver.c:1850 #, c-format msgid "could not read input file: %s\n" msgstr "giriş dosyası okuma hatası: %s\n" -#: pg_backup_archiver.c:1759 +#: pg_backup_archiver.c:1852 #, c-format msgid "input file is too short (read %lu, expected 5)\n" msgstr "giriş fazla kısa (okunan: %lu, beklenen: 5)\n" -#: pg_backup_archiver.c:1817 +#: pg_backup_archiver.c:1910 +#, c-format msgid "input file does not appear to be a valid archive (too short?)\n" msgstr "giriş, geçerli bir arşiv değildir (çok kısa?)\n" -#: pg_backup_archiver.c:1820 +#: pg_backup_archiver.c:1913 +#, c-format msgid "input file does not appear to be a valid archive\n" msgstr "girdi geçerli bir arşiv değildir\n" -#: pg_backup_archiver.c:1840 +#: pg_backup_archiver.c:1933 #, c-format msgid "could not close input file: %s\n" msgstr "çıktı dosyası kapatılamadı: %s\n" -#: pg_backup_archiver.c:1857 +#: pg_backup_archiver.c:1950 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "%s için AH ayırılıyor, biçim %d\n" -#: pg_backup_archiver.c:1965 +#: pg_backup_archiver.c:2059 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "tanınmayan dosya biçimi: \"%d\"\n" -#: pg_backup_archiver.c:2087 +#: pg_backup_archiver.c:2181 #, c-format msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" msgstr "ID %d olan giriş kapsam dışıdır -- bozuk TOC olabilir\n" -#: pg_backup_archiver.c:2203 +#: pg_backup_archiver.c:2297 #, c-format msgid "read TOC entry %d (ID %d) for %s %s\n" msgstr "%3$s %4$s için TOC öğe %1$d (ID %2$d) okunuyor\n" -#: pg_backup_archiver.c:2237 +#: pg_backup_archiver.c:2331 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "tanınmayan dil kodlaması: \"%s\"\n" -#: pg_backup_archiver.c:2242 +#: pg_backup_archiver.c:2336 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "geçersiz ENCODING öğesi: %s\n" -#: pg_backup_archiver.c:2260 +#: pg_backup_archiver.c:2354 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "geçersiz STDSTRINGS öğesi: %s\n" -#: pg_backup_archiver.c:2452 +#: pg_backup_archiver.c:2552 #, c-format msgid "could not set session user to \"%s\": %s" msgstr "oturum kullanıcısını \"%s\" olarak değiştirilemedi: %s" -#: pg_backup_archiver.c:2790 -#: pg_backup_archiver.c:2940 +#: pg_backup_archiver.c:2892 +#: pg_backup_archiver.c:3044 #, c-format msgid "WARNING: don't know how to set owner for object type %s\n" msgstr "UAYRI: %s tipinde nesnenin sahib bilgisi ayarlanamıyor\n" -#: pg_backup_archiver.c:2972 +#: pg_backup_archiver.c:3076 +#, c-format msgid "WARNING: requested compression not available in this installation -- archive will be uncompressed\n" msgstr "UYARI: bu kurulumda sıkıştırma desteklenmemektedir -- arşiv sıkıştırılmayacak\n" -#: pg_backup_archiver.c:3012 +#: pg_backup_archiver.c:3116 +#, c-format msgid "did not find magic string in file header\n" msgstr "dosya başlığında kod satırı blunamadı\n" -#: pg_backup_archiver.c:3025 +#: pg_backup_archiver.c:3129 #, c-format msgid "unsupported version (%d.%d) in file header\n" msgstr "dosya başlığında desteklenmeyen sürüm (%d.%d)\n" -#: pg_backup_archiver.c:3030 +#: pg_backup_archiver.c:3134 #, c-format msgid "sanity check on integer size (%lu) failed\n" msgstr "integer boyutu (%lu) turtarlılık kontrolü başarısız\n" -#: pg_backup_archiver.c:3034 +#: pg_backup_archiver.c:3138 +#, c-format msgid "WARNING: archive was made on a machine with larger integers, some operations might fail\n" msgstr "UYARI: arşıv doyası daha büyük integer sayılarına sahip platformda yapılmış, bazı işlemler başarısız olabilir\n" -#: pg_backup_archiver.c:3044 +#: pg_backup_archiver.c:3148 #, c-format msgid "expected format (%d) differs from format found in file (%d)\n" msgstr "dosyada bulunan biçim (%2$d) beklenen biçimden (%1$d) farklıdır\n" -#: pg_backup_archiver.c:3060 +#: pg_backup_archiver.c:3164 +#, c-format msgid "WARNING: archive is compressed, but this installation does not support compression -- no data will be available\n" msgstr "UYARI: arşiv sıkıştırılmıştır, ancak bu kurulum sıkıştırmayı desteklemiyor -- veri kaydedilmeyecek\n" -#: pg_backup_archiver.c:3078 +#: pg_backup_archiver.c:3182 +#, c-format msgid "WARNING: invalid creation date in header\n" msgstr "UTAYI: veri başlığında geçersiz tarih\n" -#: pg_backup_archiver.c:3175 +#: pg_backup_archiver.c:3280 +#, c-format msgid "entering restore_toc_entries_parallel\n" msgstr "restore_toc_entries_parallel'e giriliyor\n" -#: pg_backup_archiver.c:3179 -msgid "parallel restore is not supported with this archive file format\n" -msgstr "paralel geri yükleme bu arşiv biçimini desteklemiyor\n" - -#: pg_backup_archiver.c:3183 -msgid "parallel restore is not supported with archives made by pre-8.0 pg_dump\n" -msgstr "paralel geri yükleme özelliği 8.0 öncesi pg_dump ile yapılan arşivleri desteklememektedir\n" - -#: pg_backup_archiver.c:3205 +#: pg_backup_archiver.c:3321 #, c-format msgid "processing item %d %s %s\n" msgstr "%d %s %s öğesi işleniyor\n" -#: pg_backup_archiver.c:3266 +#: pg_backup_archiver.c:3397 +#, c-format msgid "entering main parallel loop\n" msgstr "ana paralel döngüye giriyor\n" -#: pg_backup_archiver.c:3280 +#: pg_backup_archiver.c:3411 #, c-format msgid "skipping item %d %s %s\n" msgstr "%d %s %s öğesi atlanıyor\n" -#: pg_backup_archiver.c:3296 +#: pg_backup_archiver.c:3427 #, c-format msgid "launching item %d %s %s\n" msgstr "%d %s %s öğesi başlatılıyor\n" -#: pg_backup_archiver.c:3333 +#: pg_backup_archiver.c:3464 #, c-format msgid "worker process crashed: status %d\n" msgstr "worker sürecii çöktü: Durum %d\n" -#: pg_backup_archiver.c:3338 +#: pg_backup_archiver.c:3469 +#, c-format msgid "finished main parallel loop\n" msgstr "ana paralel döngü bitti\n" -#: pg_backup_archiver.c:3356 +#: pg_backup_archiver.c:3487 #, c-format msgid "processing missed item %d %s %s\n" msgstr "atlanan %d %s %s öğesi işleniyor\n" -#: pg_backup_archiver.c:3382 +#: pg_backup_archiver.c:3513 +#, c-format msgid "parallel_restore should not return\n" msgstr "parallel_restore dönmemeli\n" -#: pg_backup_archiver.c:3388 +#: pg_backup_archiver.c:3519 #, c-format msgid "could not create worker process: %s\n" msgstr "işçi süreci yaratılamadı: %s\n" -#: pg_backup_archiver.c:3396 +#: pg_backup_archiver.c:3527 #, c-format msgid "could not create worker thread: %s\n" msgstr "işçi threadi yaratılamadı: %s\n" -#: pg_backup_archiver.c:3620 +#: pg_backup_archiver.c:3751 +#, c-format msgid "no item ready\n" msgstr "hiç bir öğe hazır değil\n" -#: pg_backup_archiver.c:3715 +#: pg_backup_archiver.c:3846 +#, c-format msgid "could not find slot of finished worker\n" msgstr "bitmiş sürecin yuvasu bulunamadı\n" -#: pg_backup_archiver.c:3717 +#: pg_backup_archiver.c:3848 #, c-format msgid "finished item %d %s %s\n" msgstr "%d %s %s öğesi bitirildi\n" -#: pg_backup_archiver.c:3730 +#: pg_backup_archiver.c:3861 #, c-format msgid "worker process failed: exit code %d\n" msgstr "alt süreç başarısız oldu: çıkış kodu %d\n" -#: pg_backup_archiver.c:3882 +#: pg_backup_archiver.c:4057 #, c-format msgid "transferring dependency %d -> %d to %d\n" msgstr "%d -> %d bağımlılığı %d olarak aktarılıyor\n" -#: pg_backup_archiver.c:3956 +#: pg_backup_archiver.c:4126 #, c-format msgid "reducing dependencies for %d\n" msgstr " %d için bağımlılıklar azaltılıyor\n" -#: pg_backup_archiver.c:4014 +#: pg_backup_archiver.c:4175 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "\"%s\" tablosu oluşturulamadı, onun verileri yüklenmeyecektir\n" -#: pg_backup_custom.c:97 +#: pg_backup_custom.c:87 msgid "custom archiver" msgstr "özel arşiv uygulaması" -#: pg_backup_custom.c:405 +#: pg_backup_custom.c:373 #: pg_backup_null.c:153 +#, c-format msgid "invalid OID for large object\n" msgstr "large object için geçersiz OID\n" -#: pg_backup_custom.c:471 +#: pg_backup_custom.c:444 #, c-format msgid "unrecognized data block type (%d) while searching archive\n" msgstr "arşivde ararken tanınmayan veri tipine (%d) rastlandı\n" -#: pg_backup_custom.c:482 +#: pg_backup_custom.c:455 #, c-format msgid "error during file seek: %s\n" msgstr "dosya içerisinde gösterge ilerleme hatası: %s\n" -#: pg_backup_custom.c:492 +#: pg_backup_custom.c:465 #, c-format msgid "could not find block ID %d in archive -- possibly due to out-of-order restore request, which cannot be handled due to lack of data offsets in archive\n" msgstr "arşivde %d block ID'si bulunamadı -- arşivdeki eksik veri konumu nedeniyle işlenemeyen geçersiz yükleme isteği nedeniyle olabilir\n" -#: pg_backup_custom.c:497 +#: pg_backup_custom.c:470 #, c-format msgid "could not find block ID %d in archive -- possibly due to out-of-order restore request, which cannot be handled due to non-seekable input file\n" msgstr "arşivde %d block ID'si bulunamadı -- aranamayan girdi dosyası nedeniyle işlenemeyen geçersiz yükleme isteği nedeniyle olabilir\n" -#: pg_backup_custom.c:502 +#: pg_backup_custom.c:475 #, c-format msgid "could not find block ID %d in archive -- possibly corrupt archive\n" msgstr "%d blok ID'si arşivde bulunamadı -- arşiv bozulmuş olabilir\n" -#: pg_backup_custom.c:509 +#: pg_backup_custom.c:482 #, c-format msgid "found unexpected block ID (%d) when reading data -- expected %d\n" msgstr "veriyi okurken beklenmeyen blok ID (%d) bulundu -- beklenen: %d\n" -#: pg_backup_custom.c:523 +#: pg_backup_custom.c:496 #, c-format msgid "unrecognized data block type %d while restoring archive\n" msgstr "arşivi yüklerken bilinmeyen veri blok tipi %d bulundu\n" -#: pg_backup_custom.c:557 -#: pg_backup_custom.c:985 +#: pg_backup_custom.c:578 +#: pg_backup_custom.c:916 #, c-format -msgid "could not initialize compression library: %s\n" -msgstr "sıkıştırma kütüphanesi ilklendirilemedi: %s\n" - -#: pg_backup_custom.c:581 -#: pg_backup_custom.c:705 msgid "could not read from input file: end of file\n" msgstr "giriş dosyası okuma hatası: dosya sonu\n" -#: pg_backup_custom.c:584 -#: pg_backup_custom.c:708 +#: pg_backup_custom.c:581 +#: pg_backup_custom.c:919 #, c-format msgid "could not read from input file: %s\n" msgstr "giriş dosyası okuma hatası: %s\n" -#: pg_backup_custom.c:601 -#: pg_backup_custom.c:628 -#, c-format -msgid "could not uncompress data: %s\n" -msgstr "sıkıştırılmış veri açılamadı: %s\n" - -#: pg_backup_custom.c:634 -#, c-format -msgid "could not close compression library: %s\n" -msgstr "sıkıştırma kütüphanesi kapatılamadı: %s\n" - -#: pg_backup_custom.c:736 +#: pg_backup_custom.c:610 #, c-format msgid "could not write byte: %s\n" msgstr "bayt yazılamadı: %s\n" -#: pg_backup_custom.c:849 -#: pg_backup_custom.c:882 +#: pg_backup_custom.c:718 +#: pg_backup_custom.c:756 #, c-format msgid "could not close archive file: %s\n" msgstr "arşiv dosyası kapatma hatası: %s\n" -#: pg_backup_custom.c:868 +#: pg_backup_custom.c:737 +#, c-format msgid "can only reopen input archives\n" msgstr "Sadece girdi arşivleri tekrar açılabilir\n" -#: pg_backup_custom.c:870 -msgid "cannot reopen stdin\n" -msgstr "stdin açılamıyor\n" +#: pg_backup_custom.c:744 +#, c-format +msgid "parallel restore from stdin is not supported\n" +msgstr "Standart girdiden parallel_restore desteklenmiyor \n" -#: pg_backup_custom.c:872 -msgid "cannot reopen non-seekable file\n" -msgstr "aranamayan dosya yeniden açılamadı\n" +#: pg_backup_custom.c:746 +#, c-format +msgid "parallel restore from non-seekable file is not supported\n" +msgstr "taranamayan dosyadan paralel geri yükleme desteklenmiyor\n" -#: pg_backup_custom.c:877 +#: pg_backup_custom.c:751 #, c-format msgid "could not determine seek position in archive file: %s\n" msgstr "arşiv dosyasınde arama pozisyonu belirlenemedi: %s\n" -#: pg_backup_custom.c:892 +#: pg_backup_custom.c:766 #, c-format msgid "could not set seek position in archive file: %s\n" msgstr "arşiv dosyasında arama pozisyonu ayarlanamadı: %s\n" -#: pg_backup_custom.c:914 -msgid "WARNING: ftell mismatch with expected position -- ftell used\n" -msgstr "WARNING: ftell fonksiyonun bidirdiği pozisyonu ile beklenen pozisyon uyumsuz -- ftell kullanıldı\n" - -#: pg_backup_custom.c:1016 +#: pg_backup_custom.c:786 #, c-format -msgid "could not compress data: %s\n" -msgstr "veri sıkıştırılamadı: %s\n" +msgid "compressor active\n" +msgstr "sıkıştırma etkin\n" -#: pg_backup_custom.c:1094 +#: pg_backup_custom.c:822 #, c-format -msgid "could not close compression stream: %s\n" -msgstr "sıkıştırma akımı kapatılamadı: %s\n" +msgid "WARNING: ftell mismatch with expected position -- ftell used\n" +msgstr "WARNING: ftell fonksiyonun bidirdiği pozisyonu ile beklenen pozisyon uyumsuz -- ftell kullanıldı\n" #: pg_backup_db.c:25 msgid "archiver (db)" msgstr "arşivlendirici (db)" -#: pg_backup_db.c:61 +#: pg_backup_db.c:54 +#, c-format msgid "could not get server_version from libpq\n" msgstr "libpq kütüphanesinden server_version alınamadı\n" -#: pg_backup_db.c:74 -#: pg_dumpall.c:1718 +#: pg_backup_db.c:67 +#: pg_dumpall.c:1775 #, c-format msgid "server version: %s; %s version: %s\n" msgstr "sunucu sürümü: %s; %s sürümü: %s\n" -#: pg_backup_db.c:76 -#: pg_dumpall.c:1720 +#: pg_backup_db.c:69 +#: pg_dumpall.c:1777 #, c-format msgid "aborting because of server version mismatch\n" msgstr "sunucu sürümü uyuşmazlığına rağmen devam ediliyor\n" -#: pg_backup_db.c:147 +#: pg_backup_db.c:140 #, c-format msgid "connecting to database \"%s\" as user \"%s\"\n" msgstr "\"%2$s\" kullanıcısı olarak \"%1$s\" veritabanına bağlanıldı\n" -#: pg_backup_db.c:152 -#: pg_backup_db.c:207 -#: pg_backup_db.c:254 -#: pg_backup_db.c:303 -#: pg_dumpall.c:1614 -#: pg_dumpall.c:1666 +#: pg_backup_db.c:145 +#: pg_backup_db.c:200 +#: pg_backup_db.c:247 +#: pg_backup_db.c:296 +#: pg_dumpall.c:1671 +#: pg_dumpall.c:1723 msgid "Password: " msgstr "Şifre: " -#: pg_backup_db.c:188 +#: pg_backup_db.c:181 +#, c-format msgid "failed to reconnect to database\n" msgstr "veritabana yeniden bağlanma hatası\n" -#: pg_backup_db.c:193 +#: pg_backup_db.c:186 #, c-format msgid "could not reconnect to database: %s" msgstr "%s veritabanına yeniden bağlanılamadı" -#: pg_backup_db.c:209 +#: pg_backup_db.c:202 +#, c-format msgid "connection needs password\n" msgstr "bağlantı parola gerektiriyor \n" -#: pg_backup_db.c:250 +#: pg_backup_db.c:243 +#, c-format msgid "already connected to a database\n" msgstr "bir veritabanına zaten bağlı\n" -#: pg_backup_db.c:295 +#: pg_backup_db.c:288 +#, c-format msgid "failed to connect to database\n" msgstr "veritabanına bağlantı başarısız oldu\n" -#: pg_backup_db.c:314 +#: pg_backup_db.c:307 #, c-format msgid "connection to database \"%s\" failed: %s" msgstr "\"%s\" veritabanına bağlantı başarısız oldu: %s" -#: pg_backup_db.c:329 +#: pg_backup_db.c:322 #, c-format msgid "%s" msgstr "%s" -#: pg_backup_db.c:441 +#: pg_backup_db.c:387 #, c-format msgid "error returned by PQputCopyData: %s" msgstr "PQputCopyData'nın döndürdüğü hata: %s" -#: pg_backup_db.c:451 +#: pg_backup_db.c:397 +#: pg_backup_db.c:406 +msgid "could not execute query" +msgstr "sorgu çalıştırılamadı" + +#: pg_backup_db.c:425 #, c-format msgid "error returned by PQputCopyEnd: %s" msgstr "PQputCopyEnd'in döndürdüğü hata: %s" -#: pg_backup_db.c:498 -msgid "could not execute query" -msgstr "sorgu çalıştırılamadı" - -#: pg_backup_db.c:696 +#: pg_backup_db.c:442 msgid "could not start database transaction" msgstr ";veritabanı transaction'u başlatılamadı" -#: pg_backup_db.c:702 +#: pg_backup_db.c:448 msgid "could not commit database transaction" msgstr "Veritabanı transaction'u commit edilemedi" @@ -1516,6 +1634,7 @@ msgid "file archiver" msgstr "dosya arşivleyicisi" #: pg_backup_files.c:122 +#, c-format msgid "" "WARNING:\n" " This format is for demonstration purposes; it is not intended for\n" @@ -1526,10 +1645,12 @@ msgstr "" " denenmemelidir. Dosyalar mecvut çalışma dizinine yazılacaktır.\n" #: pg_backup_files.c:283 +#, c-format msgid "could not close data file\n" msgstr "veri dosyası kapatılamadı\n" #: pg_backup_files.c:317 +#, c-format msgid "could not close data file after reading\n" msgstr "veri dosyası okunduktan sonra kapatılamadı\n" @@ -1545,6 +1666,7 @@ msgid "could not close large object TOC file: %s\n" msgstr "large object TOC dosyası kapatılamadı: %s\n" #: pg_backup_files.c:404 +#, c-format msgid "could not write byte\n" msgstr "byte yazılamadı\n" @@ -1554,7 +1676,7 @@ msgid "could not open large object TOC for output: %s\n" msgstr "çıktı için large object TOC açılamadı: %s\n" #: pg_backup_files.c:510 -#: pg_backup_tar.c:935 +#: pg_backup_tar.c:939 #, c-format msgid "invalid OID for large object (%u)\n" msgstr "(%u) large objecti için geçersiz OID\n" @@ -1565,170 +1687,179 @@ msgid "could not open large object file \"%s\" for input: %s\n" msgstr "girdi için \"%s\" large object dosyası açılamadı: %s\n" #: pg_backup_files.c:544 +#, c-format msgid "could not close large object file\n" msgstr "large object dosyası kapatılamadı\n" #: pg_backup_null.c:78 +#, c-format msgid "this format cannot be read\n" msgstr "bu biçim okunamıyor\n" -#: pg_backup_tar.c:101 +#: pg_backup_tar.c:105 msgid "tar archiver" msgstr "tar arşivleyicisi" -#: pg_backup_tar.c:179 +#: pg_backup_tar.c:183 #, c-format msgid "could not open TOC file \"%s\" for output: %s\n" msgstr "çıktı için \"%s\" TOC dosyası açılamadı: %s\n" -#: pg_backup_tar.c:187 +#: pg_backup_tar.c:191 #, c-format msgid "could not open TOC file for output: %s\n" msgstr "çıktı için TOC dosyası açılamadı: %s\n" -#: pg_backup_tar.c:214 -#: pg_backup_tar.c:370 +#: pg_backup_tar.c:218 +#: pg_backup_tar.c:374 +#, c-format msgid "compression is not supported by tar archive format\n" msgstr "sıkıştırma, tar çıktı formatı tarafından desteklenmiyor\n" -#: pg_backup_tar.c:222 +#: pg_backup_tar.c:226 #, c-format msgid "could not open TOC file \"%s\" for input: %s\n" msgstr "\"%s\" TOC dosyası girdi için açılamadı: %s\n" -#: pg_backup_tar.c:229 +#: pg_backup_tar.c:233 #, c-format msgid "could not open TOC file for input: %s\n" msgstr "girdi için TOC dosyası açılamadı: %s\n" -#: pg_backup_tar.c:356 +#: pg_backup_tar.c:360 #, c-format msgid "could not find file \"%s\" in archive\n" msgstr "\"%s\" dosyası arşivde bulunamadı\n" -#: pg_backup_tar.c:412 +#: pg_backup_tar.c:416 #, c-format msgid "could not generate temporary file name: %s\n" msgstr "geçici dosya adı oluşturulamadı: %s\n" -#: pg_backup_tar.c:421 +#: pg_backup_tar.c:425 +#, c-format msgid "could not open temporary file\n" msgstr "geçici dosya açılamadı \n" -#: pg_backup_tar.c:448 +#: pg_backup_tar.c:452 +#, c-format msgid "could not close tar member\n" msgstr "tar öğesi kapatılamadı\n" -#: pg_backup_tar.c:548 +#: pg_backup_tar.c:552 +#, c-format msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" msgstr "iç hata - th ya da fh, tarReadRaw() içinde belirtilmedi\n" -#: pg_backup_tar.c:674 +#: pg_backup_tar.c:678 #, c-format msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n" msgstr "geçersiz COPY komutu -- \"%s\" satırında \"copy\" bulunamadı\n" -#: pg_backup_tar.c:692 +#: pg_backup_tar.c:696 #, c-format msgid "invalid COPY statement -- could not find \"from stdin\" in string \"%s\" starting at position %lu\n" msgstr "geçersiz COPY komutu -- \"%s\" satırında %lu pozisyonunda \"from stdin\" bulunamadı\n" -#: pg_backup_tar.c:729 +#: pg_backup_tar.c:733 #, c-format msgid "restoring large object OID %u\n" msgstr "large-object %u geri yükleniyor\n" -#: pg_backup_tar.c:880 +#: pg_backup_tar.c:884 +#, c-format msgid "could not write null block at end of tar archive\n" msgstr "arşivin sonunda null blok yazılamadı\n" -#: pg_backup_tar.c:1080 +#: pg_backup_tar.c:1084 +#, c-format msgid "archive member too large for tar format\n" msgstr "tar biçimi için arşiv öğesi çok büyük\n" -#: pg_backup_tar.c:1095 +#: pg_backup_tar.c:1099 #, c-format msgid "could not close temporary file: %s\n" msgstr "geçici dosya kapatma hatası: %s\n" -#: pg_backup_tar.c:1105 +#: pg_backup_tar.c:1109 #, c-format msgid "actual file length (%s) does not match expected (%s)\n" msgstr "gerçek dosya uzunluğu (%s) beklenen uzunluğu (%s) ile uyuşmamaktadır\n" -#: pg_backup_tar.c:1113 +#: pg_backup_tar.c:1117 +#, c-format msgid "could not output padding at end of tar member\n" msgstr "tar öğesinin arkasına doldurma alanı eklenemedi\n" -#: pg_backup_tar.c:1142 +#: pg_backup_tar.c:1146 #, c-format msgid "moving from position %s to next member at file position %s\n" msgstr "dosya içerisinde %s yerinden bir sonraki %s yerine geçiş yapılamıyor\n" -#: pg_backup_tar.c:1153 +#: pg_backup_tar.c:1157 #, c-format msgid "now at file position %s\n" msgstr "şu an dosyanın %s yerinde\n" -#: pg_backup_tar.c:1162 -#: pg_backup_tar.c:1192 +#: pg_backup_tar.c:1166 +#: pg_backup_tar.c:1196 #, c-format msgid "could not find header for file \"%s\" in tar archive\n" msgstr "tar arşivinde \"%s\" dosyası için başlık bulunamadı\n" -#: pg_backup_tar.c:1176 +#: pg_backup_tar.c:1180 #, c-format msgid "skipping tar member %s\n" msgstr "%s tar öğesi atlandı\n" -#: pg_backup_tar.c:1180 +#: pg_backup_tar.c:1184 #, c-format msgid "restoring data out of order is not supported in this archive format: \"%s\" is required, but comes before \"%s\" in the archive file.\n" msgstr "bu arşiv biçinide sıra dışı veri geri yüklemesi desteklenmemektedir: \"%s\" bekleniyor ancak arşiv dosyasında %s ondan önce gelmektedir.\n" -#: pg_backup_tar.c:1226 +#: pg_backup_tar.c:1230 #, c-format msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n" msgstr "gerçek ile beklenilen dosya pozisyonunda uyumsuzluk (%s ile %s)\n" -#: pg_backup_tar.c:1241 +#: pg_backup_tar.c:1245 #, c-format msgid "incomplete tar header found (%lu byte)\n" msgid_plural "incomplete tar header found (%lu bytes)\n" msgstr[0] "Eksik tar başlığı bulundu (%lu byte)\n" msgstr[1] "Eksik tar başlığı bulundu (%lu byte)\n" -#: pg_backup_tar.c:1279 +#: pg_backup_tar.c:1283 #, c-format msgid "TOC Entry %s at %s (length %lu, checksum %d)\n" msgstr "%2$s adresinde %1$s TOC Girişi (uzunluk %3$lu, checksum %4$d)\n" -#: pg_backup_tar.c:1289 +#: pg_backup_tar.c:1293 #, c-format msgid "corrupt tar header found in %s (expected %d, computed %d) file position %s\n" msgstr "%s dosyasında bozuk tar başlığı (beklenen: %d, hesaplanan: %d) dosya pozisyonu %s\n" -#: pg_restore.c:319 +#: pg_restore.c:300 #, c-format msgid "%s: options -d/--dbname and -f/--file cannot be used together\n" msgstr "%s: -d/--dbname ve -f/--file seçenekleri birarada kullanılamazlar\n" -#: pg_restore.c:331 +#: pg_restore.c:312 #, c-format msgid "%s: cannot specify both --single-transaction and multiple jobs\n" msgstr "%s: --single-transaction ve çoklu işi aynı anda belirtemezsiniz\n" -#: pg_restore.c:361 +#: pg_restore.c:348 #, c-format -msgid "unrecognized archive format \"%s\"; please specify \"c\" or \"t\"\n" -msgstr "'%s' arşiv biçimi tanınmadı; lütfen \"t\" veya \"c\" belirtin\n" +msgid "unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"\n" +msgstr "tanımlanamayan arşiv formatı \"%s\"; lütfen \"c\", \"d\", ya da \"t\" seçeneklerinden birisini belirtiniz.\n" -#: pg_restore.c:395 +#: pg_restore.c:382 #, c-format msgid "WARNING: errors ignored on restore: %d\n" msgstr "UYARI: yükleme sırasında hata es geçildi: %d\n" -#: pg_restore.c:409 +#: pg_restore.c:396 #, c-format msgid "" "%s restores a PostgreSQL database from an archive created by pg_dump.\n" @@ -1737,47 +1868,47 @@ msgstr "" "%s, pg_dump tarafından oluşturulan PostgreSQL arşivinden veritabanı geri yükleniyor.\n" "\n" -#: pg_restore.c:411 +#: pg_restore.c:398 #, c-format msgid " %s [OPTION]... [FILE]\n" msgstr " %s [SEÇENEK]... [DOSYA]\n" -#: pg_restore.c:414 +#: pg_restore.c:401 #, c-format msgid " -d, --dbname=NAME connect to database name\n" msgstr " -d, --dbname=NAME bağlanacak veritabanının adı\n" -#: pg_restore.c:415 +#: pg_restore.c:402 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=DOSYA_ADI çıktı dosya adı\n" -#: pg_restore.c:416 +#: pg_restore.c:403 #, c-format -msgid " -F, --format=c|t backup file format (should be automatic)\n" -msgstr " -F, --format=c|t yedek dosya biçimi (otomatik olmalı)\n" +msgid " -F, --format=c|d|t backup file format (should be automatic)\n" +msgstr " -F, --format=c|d|t yedek dosya biçimi (otomatik olmalı)\n" -#: pg_restore.c:417 +#: pg_restore.c:404 #, c-format msgid " -l, --list print summarized TOC of the archive\n" msgstr " -l, --list arşivin kısa içeriğini yaz\n" -#: pg_restore.c:418 +#: pg_restore.c:405 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose verbose modu\n" -#: pg_restore.c:419 +#: pg_restore.c:406 #, c-format msgid " --help show this help, then exit\n" msgstr " --help bu yardımı gösterir ve çıkar\n" -#: pg_restore.c:420 +#: pg_restore.c:407 #, c-format msgid " --version output version information, then exit\n" msgstr " --version sürüm bilgisini gösterir ve çıkar\n" -#: pg_restore.c:422 +#: pg_restore.c:409 #, c-format msgid "" "\n" @@ -1786,37 +1917,37 @@ msgstr "" "\n" "Geri güklemeyi kontrol eden seçenekler:\n" -#: pg_restore.c:423 +#: pg_restore.c:410 #, c-format msgid " -a, --data-only restore only the data, no schema\n" msgstr " -s, --schema-only sadece şemayı aktar, veriyi aktarma\n" -#: pg_restore.c:424 +#: pg_restore.c:411 #, c-format msgid " -c, --clean clean (drop) database objects before recreating\n" msgstr " -c, --clean veritabanı nesnelerini yeniden yaratmadan önce onları kaldır (sil)\n" -#: pg_restore.c:425 +#: pg_restore.c:412 #, c-format msgid " -C, --create create the target database\n" msgstr " -C, --create hedef veritabanını oluştur\n" -#: pg_restore.c:426 +#: pg_restore.c:413 #, c-format msgid " -e, --exit-on-error exit on error, default is to continue\n" msgstr " -e, --exit-on-error hata durumunda çık, varsayılan seçenek ise devam et\n" -#: pg_restore.c:427 +#: pg_restore.c:414 #, c-format msgid " -I, --index=NAME restore named index\n" msgstr " -I, --index=NAME adı geçen indexi de yükle\n" -#: pg_restore.c:428 +#: pg_restore.c:415 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to restore\n" msgstr " -j, --jobs=SAYI gerü yükleme için belirtilen sayı kadar paralel süreç kullan\n" -#: pg_restore.c:429 +#: pg_restore.c:416 #, c-format msgid "" " -L, --use-list=FILENAME use table of contents from this file for\n" @@ -1825,17 +1956,17 @@ msgstr "" " -L, --use-list=DOSYA ADI çıktıyı seçmek/sıralamak için\n" " bu dosyadaki içindekiler tablosunu kullan\n" -#: pg_restore.c:431 +#: pg_restore.c:418 #, c-format msgid " -n, --schema=NAME restore only objects in this schema\n" msgstr " -s, --schema=NAME sadece bu şemaya ait nesneleri yükle\n" -#: pg_restore.c:432 +#: pg_restore.c:419 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr " -O, --no-owner nesne sahipliğini ayarlayan komutlarının oluşturmasını engelle\n" -#: pg_restore.c:433 +#: pg_restore.c:420 #, c-format msgid "" " -P, --function=NAME(args)\n" @@ -1844,37 +1975,46 @@ msgstr "" " -P, --function=NAME(args)\n" " adı geçen fonksiyonu geri yükle\n" -#: pg_restore.c:435 +#: pg_restore.c:422 #, c-format msgid " -s, --schema-only restore only the schema, no data\n" msgstr " -s, --schema-only sadece şemayı yükle, veriyi yükleme\n" -#: pg_restore.c:436 +#: pg_restore.c:423 #, c-format msgid " -S, --superuser=NAME superuser user name to use for disabling triggers\n" msgstr " -S, --superuser=NAME Triggerları devre dışı bırakmak için kullanılacak kullanıcı adı\n" -#: pg_restore.c:437 +#: pg_restore.c:424 #, c-format msgid " -t, --table=NAME restore named table\n" msgstr " -t, --table=NAME adı geçen tabloyu yükle\n" -#: pg_restore.c:438 +#: pg_restore.c:425 #, c-format msgid " -T, --trigger=NAME restore named trigger\n" msgstr " -T, --trigger=NAME adı geçen triggeri de yükle\n" -#: pg_restore.c:439 +#: pg_restore.c:426 #, c-format msgid " -x, --no-privileges skip restoration of access privileges (grant/revoke)\n" msgstr " -x, --no-privileges erişim haklarının yüklemesini engelle (grant/revoke)\n" -#: pg_restore.c:440 +#: pg_restore.c:427 +#, c-format +msgid "" +" -1, --single-transaction\n" +" restore as a single transaction\n" +msgstr "" +" -1, --single-transaction\n" +" tek bir transaction olarak geri yükle\n" + +#: pg_restore.c:429 #, c-format msgid " --disable-triggers disable triggers during data-only restore\n" msgstr " --disable-triggers sadece veri geri yüklemede tetikleyicileri devre dışı bırak\n" -#: pg_restore.c:441 +#: pg_restore.c:430 #, c-format msgid "" " --no-data-for-failed-tables\n" @@ -1885,17 +2025,17 @@ msgstr "" " oluşturulamayan tabloların verilerileri yüklemeyi\n" " engelle\n" -#: pg_restore.c:444 +#: pg_restore.c:433 #, c-format -msgid " --no-tablespaces do not restore tablespace assignments\n" -msgstr " --no-tablespaces tablespace atamalarını geri yükleme\n" +msgid " --no-security-labels do not restore security labels\n" +msgstr " --no-security-labels güvenlik etiketleri geri yüklenmesin\n" -#: pg_restore.c:445 +#: pg_restore.c:434 #, c-format -msgid " --role=ROLENAME do SET ROLE before restore\n" -msgstr " --role=ROL ADI geri yüklemeden önce SET ROLE işlemini gerçekleştir\n" +msgid " --no-tablespaces do not restore tablespace assignments\n" +msgstr " --no-tablespaces tablespace atamalarını geri yükleme\n" -#: pg_restore.c:446 +#: pg_restore.c:435 #, c-format msgid "" " --use-set-session-authorization\n" @@ -1906,16 +2046,12 @@ msgstr "" " Sahipliği ayarlamak için ALTER OWNER komutunun yerine\n" " SET SESSION AUTHORIZATION komutunu kullan\n" -#: pg_restore.c:449 +#: pg_restore.c:445 #, c-format -msgid "" -" -1, --single-transaction\n" -" restore as a single transaction\n" -msgstr "" -" -1, --single-transaction\n" -" tek bir transaction olarak geri yükle\n" +msgid " --role=ROLENAME do SET ROLE before restore\n" +msgstr " --role=ROL ADI geri yüklemeden önce SET ROLE işlemini gerçekleştir\n" -#: pg_restore.c:459 +#: pg_restore.c:447 #, c-format msgid "" "\n" @@ -1926,7 +2062,7 @@ msgstr "" "Eğer giriş dosya adı verilmemişse, standart giriş akımı (stdin) kulanılacaktır.\n" "\n" -#: pg_dumpall.c:167 +#: pg_dumpall.c:174 #, c-format msgid "" "The program \"pg_dump\" is needed by %s but was not found in the\n" @@ -1937,7 +2073,7 @@ msgstr "" "\"%s\" ile aynı dizinde bulunamadı.\n" "Kurulumunuzu kontrol edin.\n" -#: pg_dumpall.c:174 +#: pg_dumpall.c:181 #, c-format msgid "" "The program \"pg_dump\" was found by \"%s\"\n" @@ -1948,28 +2084,28 @@ msgstr "" "ancak %s ile aynı sürüm değildir.\n" "Kurulumunuzu kontrol edin.\n" -#: pg_dumpall.c:331 +#: pg_dumpall.c:317 #, c-format msgid "%s: options -g/--globals-only and -r/--roles-only cannot be used together\n" msgstr "%s: -g/--globals-only ve -r/--roles-only seçenekleri beraber kullanılamaz\n" -#: pg_dumpall.c:340 +#: pg_dumpall.c:326 #, c-format msgid "%s: options -g/--globals-only and -t/--tablespaces-only cannot be used together\n" msgstr "%s: -g/--globals-only ve -t/--tablespaces-only seçenejleri beraber kullanılamaz\n" -#: pg_dumpall.c:349 +#: pg_dumpall.c:335 #, c-format msgid "%s: options -r/--roles-only and -t/--tablespaces-only cannot be used together\n" msgstr "%s: -r/--roles-only ve -t/--tablespaces-only seçenekleri birlikte kullanılamaz\n" -#: pg_dumpall.c:385 -#: pg_dumpall.c:1655 +#: pg_dumpall.c:377 +#: pg_dumpall.c:1712 #, c-format msgid "%s: could not connect to database \"%s\"\n" msgstr "%s: \"%s\" veritabanına bağlanılamadı\n" -#: pg_dumpall.c:400 +#: pg_dumpall.c:392 #, c-format msgid "" "%s: could not connect to databases \"postgres\" or \"template1\"\n" @@ -1978,12 +2114,12 @@ msgstr "" "%s: \"postgres\" veya \"template1\" veritabanına bağlanılamadı\n" "Lütfen alternatif bir veritabanı belirtin\n" -#: pg_dumpall.c:417 +#: pg_dumpall.c:409 #, c-format msgid "%s: could not open the output file \"%s\": %s\n" msgstr "%s: \"%s\" çıktı dosyası açılamadı: %s\n" -#: pg_dumpall.c:535 +#: pg_dumpall.c:531 #, c-format msgid "" "%s extracts a PostgreSQL database cluster into an SQL script file.\n" @@ -1992,47 +2128,52 @@ msgstr "" "%s, PostgreSQL veritabanı clusteri SQL betik dosyasına aktarıyor.\n" "\n" -#: pg_dumpall.c:537 +#: pg_dumpall.c:533 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [SEÇENEK]...\n" -#: pg_dumpall.c:546 +#: pg_dumpall.c:536 +#, c-format +msgid " -f, --file=FILENAME output file name\n" +msgstr " -f, --file=DOSYA ADI çıktı dosya adı\n" + +#: pg_dumpall.c:542 #, c-format msgid " -c, --clean clean (drop) databases before recreating\n" msgstr " -c, --clean yeniden yaratmadan önce veritabanını temizle (kaldır)\n" -#: pg_dumpall.c:547 +#: pg_dumpall.c:543 #, c-format msgid " -g, --globals-only dump only global objects, no databases\n" msgstr " -g, --globals-only Sadece global nesneleri yedekle, veritabanlarını yedekleme\n" -#: pg_dumpall.c:549 +#: pg_dumpall.c:545 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr " -O, --no-owner veri sahipliği ile ilgili bilgileri yükleme\n" -#: pg_dumpall.c:550 +#: pg_dumpall.c:546 #, c-format msgid " -r, --roles-only dump only roles, no databases or tablespaces\n" msgstr " -r, --roles-only sadece rolleri yedekle, veritabanlarını ya da tablespaceleri yedekleme\n" -#: pg_dumpall.c:552 +#: pg_dumpall.c:548 #, c-format msgid " -S, --superuser=NAME superuser user name to use in the dump\n" msgstr " -S, --superuser=AD yedeklerde kullanılacak superuser kullanıcı adı\n" -#: pg_dumpall.c:553 +#: pg_dumpall.c:549 #, c-format msgid " -t, --tablespaces-only dump only tablespaces, no databases or roles\n" msgstr " -t, --tablespaces-only sadece tablespaceleri yedekle, veritabanlarını ya da rolleri yedekleme\n" -#: pg_dumpall.c:568 +#: pg_dumpall.c:566 #, c-format msgid " -l, --database=DBNAME alternative default database\n" msgstr " -l, --database=VERİTABANI ADI varsayılan alternatif veritabanı\n" -#: pg_dumpall.c:574 +#: pg_dumpall.c:573 #, c-format msgid "" "\n" @@ -2045,75 +2186,75 @@ msgstr "" "yazılacaktır.\n" "\n" -#: pg_dumpall.c:1018 +#: pg_dumpall.c:1049 #, c-format msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n" msgstr "%1$s: \"%3$s\" tablespace için ACL (%2$s) listesi ayrıştırılamadı\n" -#: pg_dumpall.c:1318 +#: pg_dumpall.c:1353 #, c-format msgid "%s: could not parse ACL list (%s) for database \"%s\"\n" msgstr "%1$s: \"%3$s\" veritabanı için ACL (%2$s) listesi ayrıştırılamadı\n" -#: pg_dumpall.c:1525 +#: pg_dumpall.c:1560 #, c-format msgid "%s: dumping database \"%s\"...\n" msgstr "%s: \"%s\" veritabanı aktarılıyor...\n" -#: pg_dumpall.c:1535 +#: pg_dumpall.c:1570 #, c-format msgid "%s: pg_dump failed on database \"%s\", exiting\n" msgstr "%s: pg_dump \"%s\" veritabanında başarısız oldu, çıkılıyor\n" -#: pg_dumpall.c:1544 +#: pg_dumpall.c:1579 #, c-format msgid "%s: could not re-open the output file \"%s\": %s\n" msgstr "%s: \"%s\" çıktı dosyası yeniden açılamadı: %s\n" -#: pg_dumpall.c:1583 +#: pg_dumpall.c:1618 #, c-format msgid "%s: running \"%s\"\n" msgstr "%s: \"%s\" yürütülüyor\n" -#: pg_dumpall.c:1628 +#: pg_dumpall.c:1685 #, c-format msgid "%s: out of memory\n" msgstr "%s: yetersiz bellek\n" -#: pg_dumpall.c:1677 +#: pg_dumpall.c:1734 #, c-format msgid "%s: could not connect to database \"%s\": %s\n" msgstr "%s: \"%s\" veritabanına bağlanılamadı: %s\n" -#: pg_dumpall.c:1691 +#: pg_dumpall.c:1748 #, c-format msgid "%s: could not get server version\n" msgstr "%s: sunucu sürüm bilgisi alınamadı\n" -#: pg_dumpall.c:1697 +#: pg_dumpall.c:1754 #, c-format msgid "%s: could not parse server version \"%s\"\n" msgstr "%s: \"%s\" sürüm bilgisi ayrıştırılamadı\n" -#: pg_dumpall.c:1705 +#: pg_dumpall.c:1762 #, c-format msgid "%s: could not parse version \"%s\"\n" msgstr "%s: \"%s\" sürüm bilgisi ayrıştırılamadı\n" -#: pg_dumpall.c:1744 -#: pg_dumpall.c:1770 +#: pg_dumpall.c:1801 +#: pg_dumpall.c:1827 #, c-format msgid "%s: executing %s\n" msgstr "%s: %s yürütülüyor\n" -#: pg_dumpall.c:1750 -#: pg_dumpall.c:1776 +#: pg_dumpall.c:1807 +#: pg_dumpall.c:1833 #, c-format msgid "%s: query failed: %s" msgstr "%s: sorgu başarısız oldu: %s" -#: pg_dumpall.c:1752 -#: pg_dumpall.c:1778 +#: pg_dumpall.c:1809 +#: pg_dumpall.c:1835 #, c-format msgid "%s: query was: %s\n" msgstr "%s: sorgu şu idi: %s\n" @@ -2151,31 +2292,58 @@ msgstr "çalışma dizini \"%s\" olarak değiştirilemedi" msgid "could not read symbolic link \"%s\"" msgstr "symbolic link \"%s\" okuma hatası" -#: ../../port/exec.c:516 +#: ../../port/exec.c:517 #, c-format msgid "child process exited with exit code %d" msgstr "alt süreç %d çıkış koduyla sonuçlandırılmıştır" -#: ../../port/exec.c:520 +#: ../../port/exec.c:521 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "alt süreç 0x%X exception tarafından sonlandırılmıştır" -#: ../../port/exec.c:529 +#: ../../port/exec.c:530 #, c-format msgid "child process was terminated by signal %s" msgstr "alt süreç %s sinyali tarafından sonlandırılmıştır" -#: ../../port/exec.c:532 +#: ../../port/exec.c:533 #, c-format msgid "child process was terminated by signal %d" msgstr "alt süreç %d sinyali tarafından sonlandırılmıştır" -#: ../../port/exec.c:536 +#: ../../port/exec.c:537 #, c-format msgid "child process exited with unrecognized status %d" msgstr "alt süreç %d bilinmeyen durumu ile sonlandırılmıştır" +#~ msgid "%s: invalid -X option -- %s\n" +#~ msgstr "%s: geçersiz -X seçeneği -- %s\n" + +#~ msgid "query returned no rows: %s\n" +#~ msgstr "sorgu hiçbir satır döndürmedi: %s\n" + +#~ msgid "could not initialize compression library: %s\n" +#~ msgstr "sıkıştırma kütüphanesi ilklendirilemedi: %s\n" + +#~ msgid "could not uncompress data: %s\n" +#~ msgstr "sıkıştırılmış veri açılamadı: %s\n" + +#~ msgid "could not close compression library: %s\n" +#~ msgstr "sıkıştırma kütüphanesi kapatılamadı: %s\n" + +#~ msgid "cannot reopen stdin\n" +#~ msgstr "stdin açılamıyor\n" + +#~ msgid "cannot reopen non-seekable file\n" +#~ msgstr "aranamayan dosya yeniden açılamadı\n" + +#~ msgid "could not compress data: %s\n" +#~ msgstr "veri sıkıştırılamadı: %s\n" + +#~ msgid "could not close compression stream: %s\n" +#~ msgstr "sıkıştırma akımı kapatılamadı: %s\n" + #~ msgid "dumpBlobs(): could not open large object: %s" #~ msgstr "dumpBlobs(): large object açılamadı: %s" diff --git a/src/bin/pg_dump/po/zh_CN.po b/src/bin/pg_dump/po/zh_CN.po index 119bce3dcf..0b7c2d0ad2 100644 --- a/src/bin/pg_dump/po/zh_CN.po +++ b/src/bin/pg_dump/po/zh_CN.po @@ -1,92 +1,89 @@ # simplified Chinese translation file for pg_dump and friends # Weiping He , 2001. -# $PostgreSQL: pgsql/src/bin/pg_dump/po/zh_CN.po,v 1.8 2005/01/06 09:07:15 petere Exp $ # msgid "" msgstr "" "Project-Id-Version: pg_dump (PostgreSQL 9.0)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-10-06 00:51+0000\n" +"POT-Creation-Date: 2013-01-29 13:57+0000\n" "PO-Revision-Date: 2010-10-03 15:43+0800\n" "Last-Translator: Weibin \n" "Language-Team: Chinese (Simplified)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: \n" "Plural-Forms: nplurals=1; plural=0;\n" -#: pg_dump.c:453 pg_restore.c:268 pg_dumpall.c:291 -#, c-format -msgid "%s: invalid -X option -- %s\n" -msgstr "%s: 无效的 -X 选项 -- %s\n" - -#: pg_dump.c:455 pg_dump.c:477 pg_dump.c:491 pg_restore.c:270 pg_restore.c:293 -#: pg_restore.c:309 pg_restore.c:321 pg_dumpall.c:293 pg_dumpall.c:313 -#: pg_dumpall.c:323 pg_dumpall.c:333 pg_dumpall.c:342 pg_dumpall.c:351 -#: pg_dumpall.c:403 +#: pg_dump.c:492 pg_dump.c:506 pg_restore.c:274 pg_restore.c:290 +#: pg_restore.c:302 pg_dumpall.c:296 pg_dumpall.c:306 pg_dumpall.c:316 +#: pg_dumpall.c:325 pg_dumpall.c:334 pg_dumpall.c:392 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "输入 \"%s --help\" 获取更多的信息.\n" -#: pg_dump.c:489 pg_restore.c:307 pg_dumpall.c:321 +#: pg_dump.c:504 pg_restore.c:288 pg_dumpall.c:304 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: 命令行参数太多 (第一个是 \"%s\")\n" -#: pg_dump.c:502 +#: pg_dump.c:517 msgid "options -s/--schema-only and -a/--data-only cannot be used together\n" msgstr "选项 -s/--schema-only和-a/--data-only 不能同时使用.\n" -#: pg_dump.c:508 +#: pg_dump.c:523 msgid "options -c/--clean and -a/--data-only cannot be used together\n" msgstr "选项 -c/--clean和 -a/--data-only不能同时使用.\n" -#: pg_dump.c:514 +#: pg_dump.c:529 msgid "" "options --inserts/--column-inserts and -o/--oids cannot be used together\n" msgstr "选项--inserts/--column-inserts和-o/--oids不能同时使用.\n" -#: pg_dump.c:515 +#: pg_dump.c:530 msgid "(The INSERT command cannot set OIDs.)\n" msgstr "(INSERT 命令无法设置对象标识(oid).)\n" -#: pg_dump.c:545 -#, c-format -msgid "invalid output format \"%s\" specified\n" -msgstr "声明了非法的输出格式 \"%s\"\n" - -#: pg_dump.c:551 +#: pg_dump.c:555 #, c-format msgid "could not open output file \"%s\" for writing\n" msgstr "无法打开输出文件 \"%s\" 用于写出\n" -#: pg_dump.c:561 pg_backup_db.c:45 +#: pg_dump.c:565 pg_backup_db.c:38 #, c-format msgid "could not parse version string \"%s\"\n" msgstr "无法分析版本字串 \"%s\"\n" -#: pg_dump.c:584 +#: pg_dump.c:588 #, c-format msgid "invalid client encoding \"%s\" specified\n" msgstr "声明了无效的输出格式 \"%s\"\n" -#: pg_dump.c:661 +#: pg_dump.c:671 pg_dump.c:2433 pg_dump.c:2481 pg_dump.c:2536 pg_dump.c:7725 +#: pg_dump.c:7956 pg_dump.c:8922 pg_dump.c:9474 pg_dump.c:9728 pg_dump.c:9842 +#: pg_dump.c:10298 pg_dump.c:10484 pg_dump.c:10590 pg_dump.c:10790 +#: pg_dump.c:11032 pg_dump.c:11199 pg_dump.c:11420 pg_dump.c:14246 +#, c-format +msgid "query returned %d row instead of one: %s\n" +msgid_plural "query returned %d rows instead of one: %s\n" +msgstr[0] "查询返回了%d条记录,而不是一条记录: %s\n" + +#: pg_dump.c:722 #, c-format msgid "last built-in OID is %u\n" msgstr "最后的内置 OID 是 %u\n" # describe.c:1542 -#: pg_dump.c:671 +#: pg_dump.c:732 msgid "No matching schemas were found\n" msgstr "没有找到符合的关联。\n" # describe.c:1542 -#: pg_dump.c:686 +#: pg_dump.c:747 msgid "No matching tables were found\n" msgstr "没有找到符合的关联。\n" -#: pg_dump.c:798 +#: pg_dump.c:869 #, c-format msgid "" "%s dumps a database as a text file or to other formats.\n" @@ -95,17 +92,17 @@ msgstr "" "%s 把一个数据库转储为纯文本文件或者是其它格式.\n" "\n" -#: pg_dump.c:799 pg_restore.c:410 pg_dumpall.c:536 +#: pg_dump.c:870 pg_restore.c:397 pg_dumpall.c:529 #, c-format msgid "Usage:\n" msgstr "用法:\n" -#: pg_dump.c:800 +#: pg_dump.c:871 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [选项]... [数据库名字]\n" -#: pg_dump.c:802 pg_restore.c:413 pg_dumpall.c:539 +#: pg_dump.c:873 pg_restore.c:400 pg_dumpall.c:532 #, c-format msgid "" "\n" @@ -114,45 +111,48 @@ msgstr "" "\n" "一般选项:\n" -#: pg_dump.c:803 pg_dumpall.c:540 -#, c-format -msgid " -f, --file=FILENAME output file name\n" -msgstr " -f, --file=文件名 输出文件名\n" +#: pg_dump.c:874 +#, fuzzy, c-format +msgid " -f, --file=FILENAME output file or directory name\n" +msgstr " -f, --file=FILENAME 输出文件或目录名\n" -#: pg_dump.c:804 -#, c-format +#: pg_dump.c:875 +#, fuzzy, c-format msgid "" -" -F, --format=c|t|p output file format (custom, tar, plain text)\n" -msgstr " -F, --format=c|t|p 输出文件格式 (定制, tar, 明文)\n" +" -F, --format=c|d|t|p output file format (custom, directory, tar, " +"plain text)\n" +msgstr "" +" -F, --format=c|d|t|p 输出文件格式 (定制, 目录, tar)\n" +" 明文 (默认值))\n" -#: pg_dump.c:805 +#: pg_dump.c:876 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose 详细模式\n" -#: pg_dump.c:806 +#: pg_dump.c:877 #, c-format msgid "" " -Z, --compress=0-9 compression level for compressed formats\n" msgstr " -Z, --compress=0-9 被压缩格式的压缩级别\n" -#: pg_dump.c:807 pg_dumpall.c:541 +#: pg_dump.c:878 pg_dumpall.c:534 #, c-format msgid "" " --lock-wait-timeout=TIMEOUT fail after waiting TIMEOUT for a table lock\n" msgstr "--lock-wait-timeout=TIMEOUT 在等待表锁超时后操作失败\n" -#: pg_dump.c:808 pg_dumpall.c:542 +#: pg_dump.c:879 pg_dumpall.c:535 #, c-format msgid " --help show this help, then exit\n" msgstr " --help 显示此帮助信息, 然后退出\n" -#: pg_dump.c:809 pg_dumpall.c:543 +#: pg_dump.c:880 pg_dumpall.c:536 #, c-format msgid " --version output version information, then exit\n" msgstr " --versoin 输出版本信息, 然后退出\n" -#: pg_dump.c:811 pg_dumpall.c:544 +#: pg_dump.c:882 pg_dumpall.c:537 #, c-format msgid "" "\n" @@ -161,50 +161,50 @@ msgstr "" "\n" "控制输出内容选项:\n" -#: pg_dump.c:812 pg_dumpall.c:545 +#: pg_dump.c:883 pg_dumpall.c:538 #, c-format msgid " -a, --data-only dump only the data, not the schema\n" msgstr " -a, --data-only 只转储数据,不包括模式\n" -#: pg_dump.c:813 +#: pg_dump.c:884 #, c-format msgid " -b, --blobs include large objects in dump\n" msgstr " -b, --blobs 在转储中包括大对象\n" -#: pg_dump.c:814 +#: pg_dump.c:885 #, c-format msgid "" " -c, --clean clean (drop) database objects before " "recreating\n" msgstr " -c, --clean 在重新创建之前,先清除(删除)数据库对象\n" -#: pg_dump.c:815 +#: pg_dump.c:886 #, c-format msgid "" " -C, --create include commands to create database in dump\n" msgstr " -C, --create 在转储中包括命令,以便创建数据库\n" -#: pg_dump.c:816 +#: pg_dump.c:887 #, c-format msgid " -E, --encoding=ENCODING dump the data in encoding ENCODING\n" msgstr " -E, --encoding=ENCODING 转储以ENCODING形式编码的数据\n" -#: pg_dump.c:817 +#: pg_dump.c:888 #, c-format msgid " -n, --schema=SCHEMA dump the named schema(s) only\n" msgstr " -n, --schema=SCHEMA 只转储指定名称的模式\n" -#: pg_dump.c:818 +#: pg_dump.c:889 #, c-format msgid " -N, --exclude-schema=SCHEMA do NOT dump the named schema(s)\n" msgstr " -N, --exclude-schema=SCHEMA 不转储已命名的模式\n" -#: pg_dump.c:819 pg_dumpall.c:548 +#: pg_dump.c:890 pg_dumpall.c:541 #, c-format msgid " -o, --oids include OIDs in dump\n" msgstr " -o, --oids 在转储中包括 OID\n" -#: pg_dump.c:820 +#: pg_dump.c:891 #, c-format msgid "" " -O, --no-owner skip restoration of object ownership in\n" @@ -213,54 +213,46 @@ msgstr "" " -O, --no-owner 在明文格式中, 忽略恢复对象所属者\n" "\n" -#: pg_dump.c:822 pg_dumpall.c:551 +#: pg_dump.c:893 pg_dumpall.c:544 #, c-format msgid " -s, --schema-only dump only the schema, no data\n" msgstr " -s, --schema-only 只转储模式, 不包括数据\n" -#: pg_dump.c:823 +#: pg_dump.c:894 #, c-format msgid "" " -S, --superuser=NAME superuser user name to use in plain-text " "format\n" msgstr " -S, --superuser=NAME 在转储中, 指定的超级用户名\n" -#: pg_dump.c:824 +#: pg_dump.c:895 #, c-format msgid " -t, --table=TABLE dump the named table(s) only\n" msgstr " -t, --table=TABLE 只转储指定名称的表\n" -#: pg_dump.c:825 +#: pg_dump.c:896 #, c-format msgid " -T, --exclude-table=TABLE do NOT dump the named table(s)\n" msgstr " -T, --exclude-table=TABLE 只转储指定名称的表\n" -#: pg_dump.c:826 pg_dumpall.c:554 +#: pg_dump.c:897 pg_dumpall.c:547 #, c-format msgid " -x, --no-privileges do not dump privileges (grant/revoke)\n" msgstr " -x, --no-privileges 不要转储权限 (grant/revoke)\n" -#: pg_dump.c:827 pg_dumpall.c:555 +#: pg_dump.c:898 pg_dumpall.c:548 #, c-format msgid " --binary-upgrade for use by upgrade utilities only\n" msgstr " --binary-upgrade 只能由升级工具使用\n" -#: pg_dump.c:828 pg_dumpall.c:556 -#, c-format -msgid "" -" --inserts dump data as INSERT commands, rather than " -"COPY\n" -msgstr "" -" --inserts 以INSERT命令,而不是COPY命令的形式转储数据\n" - -#: pg_dump.c:829 pg_dumpall.c:557 +#: pg_dump.c:899 pg_dumpall.c:549 #, c-format msgid "" " --column-inserts dump data as INSERT commands with column " "names\n" msgstr " --column-inserts 以带有列名的INSERT命令形式转储数据\n" -#: pg_dump.c:830 pg_dumpall.c:558 +#: pg_dump.c:900 pg_dumpall.c:550 #, c-format msgid "" " --disable-dollar-quoting disable dollar quoting, use SQL standard " @@ -268,23 +260,48 @@ msgid "" msgstr "" " --disable-dollar-quoting 取消美元 (符号) 引号, 使用 SQL 标准引号\n" -#: pg_dump.c:831 pg_dumpall.c:559 +#: pg_dump.c:901 pg_dumpall.c:551 #, c-format msgid "" " --disable-triggers disable triggers during data-only restore\n" msgstr " --disable-triggers 在只恢复数据的过程中禁用触发器\n" -#: pg_dump.c:832 pg_dumpall.c:560 +#: pg_dump.c:902 pg_dumpall.c:552 +#, c-format +msgid "" +" --inserts dump data as INSERT commands, rather than " +"COPY\n" +msgstr "" +" --inserts 以INSERT命令,而不是COPY命令的形式转储数据\n" + +#: pg_dump.c:903 pg_dumpall.c:553 +#, fuzzy, c-format +msgid " --no-security-labels do not dump security label assignments\n" +msgstr " --no-security-labels 不转储安全标签的分配\n" + +#: pg_dump.c:904 pg_dumpall.c:554 #, c-format msgid " --no-tablespaces do not dump tablespace assignments\n" msgstr " --no-tablespaces 不转储表空间分配信息\n" -#: pg_dump.c:833 pg_dumpall.c:561 +#: pg_dump.c:905 pg_dumpall.c:555 +#, c-format +msgid " --no-unlogged-table-data do not dump unlogged table data\n" +msgstr "" + +#: pg_dump.c:906 pg_dumpall.c:556 +#, c-format +msgid "" +" --quote-all-identifiers quote all identifiers, even if not key words\n" +msgstr "" + +#: pg_dump.c:907 #, c-format -msgid " --role=ROLENAME do SET ROLE before dump\n" -msgstr " --role=ROLENAME 在转储前运行SET ROLE\n" +msgid "" +" --serializable-deferrable wait until the dump can run without anomalies\n" +msgstr "" -#: pg_dump.c:834 pg_dumpall.c:562 +#: pg_dump.c:908 pg_dumpall.c:557 #, c-format msgid "" " --use-set-session-authorization\n" @@ -296,7 +313,7 @@ msgstr "" " 使用 SESSION AUTHORIZATION 命令代替\n" " ALTER OWNER 命令来设置所有权\n" -#: pg_dump.c:838 pg_restore.c:452 pg_dumpall.c:566 +#: pg_dump.c:912 pg_restore.c:439 pg_dumpall.c:561 #, c-format msgid "" "\n" @@ -305,34 +322,39 @@ msgstr "" "\n" "联接选项:\n" -#: pg_dump.c:839 pg_restore.c:453 pg_dumpall.c:567 +#: pg_dump.c:913 pg_restore.c:440 pg_dumpall.c:562 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=主机名 数据库服务器的主机名或套接字目录\n" -#: pg_dump.c:840 pg_restore.c:454 pg_dumpall.c:569 +#: pg_dump.c:914 pg_restore.c:441 pg_dumpall.c:564 #, c-format msgid " -p, --port=PORT database server port number\n" msgstr " -p, --port=端口号 数据库服务器的端口号\n" -#: pg_dump.c:841 pg_restore.c:455 pg_dumpall.c:570 +#: pg_dump.c:915 pg_restore.c:442 pg_dumpall.c:565 #, c-format msgid " -U, --username=NAME connect as specified database user\n" msgstr " -U, --username=名字 以指定的数据库用户联接\n" -#: pg_dump.c:842 pg_restore.c:456 pg_dumpall.c:571 +#: pg_dump.c:916 pg_restore.c:443 pg_dumpall.c:566 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password 永远不提示输入口令\n" -#: pg_dump.c:843 pg_restore.c:457 pg_dumpall.c:572 +#: pg_dump.c:917 pg_restore.c:444 pg_dumpall.c:567 #, c-format msgid "" " -W, --password force password prompt (should happen " "automatically)\n" msgstr " -W, --password 强制口令提示 (自动)\n" -#: pg_dump.c:845 +#: pg_dump.c:918 pg_dumpall.c:568 +#, c-format +msgid " --role=ROLENAME do SET ROLE before dump\n" +msgstr " --role=ROLENAME 在转储前运行SET ROLE\n" + +#: pg_dump.c:920 #, c-format msgid "" "\n" @@ -345,163 +367,169 @@ msgstr "" "的数值.\n" "\n" -#: pg_dump.c:847 pg_restore.c:460 pg_dumpall.c:576 +#: pg_dump.c:922 pg_restore.c:448 pg_dumpall.c:572 #, c-format msgid "Report bugs to .\n" msgstr "报告错误至 .\n" -#: pg_dump.c:855 pg_backup_archiver.c:1401 +#: pg_dump.c:930 pg_backup_archiver.c:1459 msgid "*** aborted because of error\n" msgstr "*** 因为错误退出\n" -#: pg_dump.c:876 +#: pg_dump.c:972 +#, c-format +msgid "invalid output format \"%s\" specified\n" +msgstr "声明了非法的输出格式 \"%s\"\n" + +#: pg_dump.c:995 msgid "server version must be at least 7.3 to use schema selection switches\n" msgstr "服务器版本必须至少是7.3才能使用模式选择转换\n" -#: pg_dump.c:1114 +#: pg_dump.c:1267 #, c-format msgid "dumping contents of table %s\n" msgstr "正在转储表 %s 的内容\n" -#: pg_dump.c:1217 +#: pg_dump.c:1387 #, c-format msgid "Dumping the contents of table \"%s\" failed: PQgetCopyData() failed.\n" msgstr "转储表 \"%s\" 的内容的 SQL 命令失败: PQendcopy() 失败.\n" -#: pg_dump.c:1218 pg_dump.c:12419 +#: pg_dump.c:1388 pg_dump.c:14440 #, c-format msgid "Error message from server: %s" msgstr "来自服务器的错误信息: %s" -#: pg_dump.c:1219 pg_dump.c:12420 +#: pg_dump.c:1389 pg_dump.c:14441 #, c-format msgid "The command was: %s\n" msgstr "命令是: %s\n" -#: pg_dump.c:1625 +#: pg_dump.c:1828 msgid "saving database definition\n" msgstr "保存数据库定义\n" -#: pg_dump.c:1707 +#: pg_dump.c:1910 #, c-format msgid "missing pg_database entry for database \"%s\"\n" msgstr "缺少用于 \"%s\" 的 pg_database 记录\n" -#: pg_dump.c:1714 +#: pg_dump.c:1917 #, c-format msgid "" "query returned more than one (%d) pg_database entry for database \"%s\"\n" msgstr "查询为数据库 \"%2$s\" 返回了超过一条 (%1$d) pg_database 记录\n" -#: pg_dump.c:1815 +#: pg_dump.c:2021 msgid "dumpDatabase(): could not find pg_largeobject.relfrozenxid\n" msgstr "dumpDatabase(): 无法找到pg_largeobject.relfrozenxid\n" -#: pg_dump.c:1892 +#: pg_dump.c:2060 +#, fuzzy +msgid "dumpDatabase(): could not find pg_largeobject_metadata.relfrozenxid\n" +msgstr "dumpDatabase(): 无法找到pg_largeobject.relfrozenxid\n" + +#: pg_dump.c:2139 #, c-format msgid "saving encoding = %s\n" msgstr "正在保存encoding = %s\n" -#: pg_dump.c:1919 +#: pg_dump.c:2166 #, c-format msgid "saving standard_conforming_strings = %s\n" msgstr "正在保存standard_conforming_strings = %s\n" -#: pg_dump.c:1952 +#: pg_dump.c:2199 msgid "reading large objects\n" msgstr "正在读取大对象\n" -#: pg_dump.c:2079 +#: pg_dump.c:2331 msgid "saving large objects\n" msgstr "保存大对象\n" -#: pg_dump.c:2121 pg_backup_archiver.c:946 +#: pg_dump.c:2373 pg_backup_archiver.c:985 #, c-format msgid "could not open large object %u: %s" msgstr "无法打开大对象%u: %s" -#: pg_dump.c:2134 +#: pg_dump.c:2386 #, c-format msgid "error reading large object %u: %s" msgstr "在读取大对象时发生错误%u: %s" -#: pg_dump.c:2181 pg_dump.c:2229 pg_dump.c:2291 pg_dump.c:6918 pg_dump.c:7121 -#: pg_dump.c:7937 pg_dump.c:8475 pg_dump.c:8725 pg_dump.c:8831 pg_dump.c:9216 -#: pg_dump.c:9392 pg_dump.c:9589 pg_dump.c:9816 pg_dump.c:9971 pg_dump.c:10158 -#: pg_dump.c:12225 -#, c-format -msgid "query returned %d row instead of one: %s\n" -msgid_plural "query returned %d rows instead of one: %s\n" -msgstr[0] "查询返回了%d条记录,而不是一条记录: %s\n" +#: pg_dump.c:2617 +#, fuzzy, c-format +msgid "could not find parent extension for %s" +msgstr "无法找到父扩展%s\n" -#: pg_dump.c:2436 +#: pg_dump.c:2723 #, c-format msgid "WARNING: owner of schema \"%s\" appears to be invalid\n" msgstr "警告: 模式 \"%s\" 的所有者非法\n" -#: pg_dump.c:2471 +#: pg_dump.c:2767 #, c-format msgid "schema with OID %u does not exist\n" msgstr "OID %u 的模式不存在\n" -#: pg_dump.c:2728 +#: pg_dump.c:3099 #, c-format msgid "WARNING: owner of data type \"%s\" appears to be invalid\n" msgstr "警告: 数据类型 \"%s\" 的所有者非法\n" -#: pg_dump.c:2832 +#: pg_dump.c:3203 #, c-format msgid "WARNING: owner of operator \"%s\" appears to be invalid\n" msgstr "警告: 操作符 \"%s\" 的所有者非法\n" -#: pg_dump.c:3006 +#: pg_dump.c:3455 #, c-format msgid "WARNING: owner of operator class \"%s\" appears to be invalid\n" msgstr "警告: 操作符表 \"%s\" 无效\n" -#: pg_dump.c:3093 +#: pg_dump.c:3542 #, c-format msgid "WARNING: owner of operator family \"%s\" appears to be invalid\n" msgstr "警告: 操作符 \"%s\" 的所有者无效\n" -#: pg_dump.c:3218 +#: pg_dump.c:3679 #, c-format msgid "WARNING: owner of aggregate function \"%s\" appears to be invalid\n" msgstr "警告: 聚集函数 \"%s\" 的所有者非法\n" -#: pg_dump.c:3373 +#: pg_dump.c:3849 #, c-format msgid "WARNING: owner of function \"%s\" appears to be invalid\n" msgstr "警告: 函数 \"%s\" 的所有者非法\n" -#: pg_dump.c:3806 +#: pg_dump.c:4349 #, c-format msgid "WARNING: owner of table \"%s\" appears to be invalid\n" msgstr "警告: 数据表 \"%s\" 的所有者非法\n" -#: pg_dump.c:3949 +#: pg_dump.c:4497 #, c-format msgid "reading indexes for table \"%s\"\n" msgstr "为表 \"%s\" 读取索引\n" -#: pg_dump.c:4269 +#: pg_dump.c:4817 #, c-format msgid "reading foreign key constraints for table \"%s\"\n" msgstr "为表 \"%s\" 读取外键约束\n" -#: pg_dump.c:4501 +#: pg_dump.c:5049 #, c-format msgid "" "failed sanity check, parent table OID %u of pg_rewrite entry OID %u not " "found\n" msgstr "健全检查失败,pg_rewrite项OID %2$u 的源表 OID%1$u 未找到\n" -#: pg_dump.c:4585 +#: pg_dump.c:5133 #, c-format msgid "reading triggers for table \"%s\"\n" msgstr "为表 \"%s\" 读取触发器\n" -#: pg_dump.c:4748 +#: pg_dump.c:5296 #, c-format msgid "" "query produced null referenced table name for foreign key trigger \"%s\" on " @@ -510,754 +538,785 @@ msgstr "" "对在表 \"%2$s\" 上的外键触发器 \"%1$s\" 上的查询生成了 NULL 个引用表(表的 " "OID 是: %3$u)\n" -#: pg_dump.c:5118 +#: pg_dump.c:5667 #, c-format msgid "finding the columns and types of table \"%s\"\n" msgstr "正在查找表 \"%s\" 的字段和类型\n" -#: pg_dump.c:5237 +#: pg_dump.c:5813 #, c-format msgid "invalid column numbering in table \"%s\"\n" msgstr "在表 \"%s\" 中的字段个数是无效的\n" -#: pg_dump.c:5273 +#: pg_dump.c:5848 #, c-format msgid "finding default expressions of table \"%s\"\n" msgstr "正在查找表 \"%s\" 的默认表达式\n" -#: pg_dump.c:5358 +#: pg_dump.c:5901 #, c-format msgid "invalid adnum value %d for table \"%s\"\n" msgstr "表 \"%2$s\" 的无效 adnum 值 %1$d\n" -#: pg_dump.c:5376 +#: pg_dump.c:5974 #, c-format msgid "finding check constraints for table \"%s\"\n" msgstr "正在为表 \"%s\" 查找检查约束\n" -#: pg_dump.c:5456 +#: pg_dump.c:6054 #, c-format msgid "expected %d check constraint on table \"%s\" but found %d\n" msgid_plural "expected %d check constraints on table \"%s\" but found %d\n" msgstr[0] "在表\"%2$s\"上期望有%1$d个检查约束,但是找到了%3$d个\n" -#: pg_dump.c:5460 +#: pg_dump.c:6058 msgid "(The system catalogs might be corrupted.)\n" msgstr "(系统表可能损坏了.)\n" -#: pg_dump.c:7248 pg_dump.c:7355 -#, c-format -msgid "query returned no rows: %s\n" -msgstr "查询放弃, 没有记录: %s\n" - -#: pg_dump.c:7705 +#: pg_dump.c:8688 msgid "WARNING: bogus value in proargmodes array\n" msgstr "警告: 无法分析 proargmodes 数组\n" -#: pg_dump.c:8017 +#: pg_dump.c:9002 msgid "WARNING: could not parse proallargtypes array\n" msgstr "警告: 无法分析 proallargtypes 数组\n" -#: pg_dump.c:8033 +#: pg_dump.c:9018 msgid "WARNING: could not parse proargmodes array\n" msgstr "警告: 无法分析 proargmodes 数组\n" -#: pg_dump.c:8047 +#: pg_dump.c:9032 msgid "WARNING: could not parse proargnames array\n" msgstr "警告: 无法分析 proargnames 数组\n" -#: pg_dump.c:8058 +#: pg_dump.c:9043 msgid "WARNING: could not parse proconfig array\n" msgstr "警告: 无法解析 proconfig 数组\n" -#: pg_dump.c:8114 +#: pg_dump.c:9099 #, c-format msgid "unrecognized provolatile value for function \"%s\"\n" msgstr "函数 \"%s\" 的意外正向易失值\n" -#: pg_dump.c:8317 +#: pg_dump.c:9315 msgid "WARNING: bogus value in pg_cast.castmethod field\n" msgstr "警告: 在pg_cast.castmethod字段中的是假值\n" -#: pg_dump.c:8694 +#: pg_dump.c:9697 #, c-format msgid "WARNING: could not find operator with OID %s\n" msgstr "警告: 未找到 OID 为 %s 的操作符\n" -#: pg_dump.c:9615 +#: pg_dump.c:10816 #, c-format msgid "" "WARNING: aggregate function %s could not be dumped correctly for this " "database version; ignored\n" msgstr "警告: 无法为此版本的数据库正确转储聚集函数 \"%s\"; 忽略\n" -#: pg_dump.c:10343 +#: pg_dump.c:11620 #, c-format msgid "unknown object type (%d) in default privileges\n" msgstr "在缺省权限中的未知对象类型(%d)\n" -#: pg_dump.c:10360 +#: pg_dump.c:11637 #, c-format msgid "could not parse default ACL list (%s)\n" msgstr "无法解析缺省ACL列表(%s)\n" -#: pg_dump.c:10417 +#: pg_dump.c:11694 #, c-format msgid "could not parse ACL list (%s) for object \"%s\" (%s)\n" msgstr "无法为对象 \"%2$s\" 分析 ACL 列表 (%1$s) (%3$s)\n" -#: pg_dump.c:10560 +#: pg_dump.c:12140 #, c-format msgid "query to obtain definition of view \"%s\" returned no data\n" msgstr "获取视图 \"%s\" 定义的查询没有返回数据\n" -#: pg_dump.c:10563 +#: pg_dump.c:12143 #, c-format msgid "" "query to obtain definition of view \"%s\" returned more than one definition\n" msgstr "获取视图 \"%s\" 定义的查询返回超过一个定义\n" -#: pg_dump.c:10572 +#: pg_dump.c:12152 #, c-format msgid "definition of view \"%s\" appears to be empty (length zero)\n" msgstr "视图 \"%s\" 的定义是空的(零长)\n" -#: pg_dump.c:11048 +#: pg_dump.c:12203 +#, fuzzy, c-format +msgid "query returned %d foreign server entry for foreign table \"%s\"\n" +msgid_plural "" +"query returned %d foreign server entries for foreign table \"%s\"\n" +msgstr[0] "查询为数据库 \"%2$s\" 返回了超过一条 (%1$d) pg_database 记录\n" + +#: pg_dump.c:12754 #, c-format msgid "invalid column number %d for table \"%s\"\n" msgstr "对于表 \"%2$s\" 字段个数 %1$d 是无效的\n" -#: pg_dump.c:11156 +#: pg_dump.c:12865 #, c-format msgid "missing index for constraint \"%s\"\n" msgstr "对于约束 \"%s\" 缺少索引\n" -#: pg_dump.c:11344 +#: pg_dump.c:13053 #, c-format msgid "unrecognized constraint type: %c\n" msgstr "未知的约束类型: %c\n" -#: pg_dump.c:11407 +#: pg_dump.c:13116 msgid "missing pg_database entry for this database\n" msgstr "缺少此数据库的 pg_database 记录\n" -#: pg_dump.c:11412 +#: pg_dump.c:13121 msgid "found more than one pg_database entry for this database\n" msgstr "找到此数据库的多于一条的 pg_database 记录\n" -#: pg_dump.c:11444 +#: pg_dump.c:13153 msgid "could not find entry for pg_indexes in pg_class\n" msgstr "在 pg_class 中无法为 pg_indexes 找到记录\n" -#: pg_dump.c:11449 +#: pg_dump.c:13158 msgid "found more than one entry for pg_indexes in pg_class\n" msgstr "在 pg_class 表中找到多条 pg_indexes 的记录\n" -#: pg_dump.c:11520 +#: pg_dump.c:13232 pg_dump.c:13397 #, c-format msgid "query to get data of sequence \"%s\" returned %d row (expected 1)\n" msgid_plural "" "query to get data of sequence \"%s\" returned %d rows (expected 1)\n" msgstr[0] "查询得到了序列\"%s\"的数据,返回了%d条记录(期望一条)\n" -#: pg_dump.c:11531 +#: pg_dump.c:13243 #, c-format msgid "query to get data of sequence \"%s\" returned name \"%s\"\n" msgstr "获取序列 \"%s\" 的数据的查询返回了名字 \"%s\"\n" -#: pg_dump.c:11825 +# fe-exec.c:1371 +#: pg_dump.c:13484 +#, c-format +msgid "unexpected tgtype value: %d\n" +msgstr "意外的tgtype值: %d\n" + +#: pg_dump.c:13566 #, c-format msgid "invalid argument string (%s) for trigger \"%s\" on table \"%s\"\n" msgstr "给表 \"%3$s\" 上的触发器 \"%2$s\" 的错误参数 (%1$s)\n" -#: pg_dump.c:11941 +#: pg_dump.c:13684 #, c-format msgid "" "query to get rule \"%s\" for table \"%s\" failed: wrong number of rows " "returned\n" msgstr "获取表 \"%2$s\" 的规则 \"%1$s\" 查询失败: 返回了错误的行数\n" -#: pg_dump.c:12036 +#: pg_dump.c:13946 msgid "reading dependency data\n" msgstr "读取从属数据\n" -#: pg_dump.c:12414 +#: pg_dump.c:14435 msgid "SQL command failed\n" msgstr "SQL 命令失败\n" -#: common.c:115 +#: common.c:107 msgid "reading schemas\n" msgstr "读取模式\n" -#: common.c:119 +#: common.c:118 +msgid "reading user-defined tables\n" +msgstr "读取用户定义表\n" + +#: common.c:126 +msgid "reading extensions\n" +msgstr "读扩展\n" + +#: common.c:130 msgid "reading user-defined functions\n" msgstr "读取用户定义函数\n" -#: common.c:125 +#: common.c:136 msgid "reading user-defined types\n" msgstr "读取用户定义类型\n" -#: common.c:131 +#: common.c:142 msgid "reading procedural languages\n" msgstr "读取过程语言\n" -#: common.c:135 +#: common.c:146 msgid "reading user-defined aggregate functions\n" msgstr "读取用户定义聚集函数\n" -#: common.c:139 +#: common.c:150 msgid "reading user-defined operators\n" msgstr "读取用户定义操作符\n" -#: common.c:144 +#: common.c:155 msgid "reading user-defined operator classes\n" msgstr "读取用户定义操作符集\n" -#: common.c:148 +#: common.c:159 +msgid "reading user-defined operator families\n" +msgstr "读取用户定义操作符\n" + +#: common.c:163 msgid "reading user-defined text search parsers\n" msgstr "读取用户定义的文本搜索解析器\n" -#: common.c:152 +#: common.c:167 msgid "reading user-defined text search templates\n" msgstr "读取用户定义的文本搜索模板\n" -#: common.c:156 +#: common.c:171 msgid "reading user-defined text search dictionaries\n" msgstr "读取用户定义的文本搜索字典\n" # sql_help.h:129 -#: common.c:160 +#: common.c:175 msgid "reading user-defined text search configurations\n" msgstr "读取用户定义的文本搜索配置\n" -#: common.c:164 +#: common.c:179 msgid "reading user-defined foreign-data wrappers\n" msgstr "读取用户定义外部数据封装器\n" -#: common.c:168 +#: common.c:183 msgid "reading user-defined foreign servers\n" msgstr "读取用户定义的外部服务器\n" -#: common.c:172 +#: common.c:187 msgid "reading default privileges\n" msgstr "正在读取缺省权限\n" -#: common.c:176 -msgid "reading user-defined operator families\n" -msgstr "读取用户定义操作符\n" +#: common.c:191 +msgid "reading user-defined collations\n" +msgstr "读取用户定义的校对函数\n" -#: common.c:180 +#: common.c:196 msgid "reading user-defined conversions\n" msgstr "读取用户定义的字符集转换\n" -#: common.c:184 -msgid "reading user-defined tables\n" -msgstr "读取用户定义表\n" +#: common.c:200 +msgid "reading type casts\n" +msgstr "读取类型转换\n" -#: common.c:189 +#: common.c:204 msgid "reading table inheritance information\n" msgstr "读取表继承信息\n" -#: common.c:193 +#: common.c:208 msgid "reading rewrite rules\n" msgstr "读取重写规则\n" -#: common.c:197 -msgid "reading type casts\n" -msgstr "读取类型转换\n" +#: common.c:217 +msgid "finding extension members\n" +msgstr "查找扩展成员\n" -#: common.c:202 +#: common.c:222 msgid "finding inheritance relationships\n" msgstr "正在查找关系继承\n" -#: common.c:206 +#: common.c:226 msgid "reading column info for interesting tables\n" msgstr "正在读取感兴趣表的列信息\n" -#: common.c:210 +#: common.c:230 msgid "flagging inherited columns in subtables\n" msgstr "在子表里标记继承字段\n" -#: common.c:214 +#: common.c:234 msgid "reading indexes\n" msgstr "读取索引\n" -#: common.c:218 +#: common.c:238 msgid "reading constraints\n" msgstr "读取约束\n" -#: common.c:222 +#: common.c:242 msgid "reading triggers\n" msgstr "读取触发器\n" -#: common.c:802 +#: common.c:788 #, c-format msgid "failed sanity check, parent OID %u of table \"%s\" (OID %u) not found\n" msgstr "健全检查失败, 未找到表 \"%2$s\" (OID %3$u) 的 OID 为 %1$u 的父辈\n" -#: common.c:844 +#: common.c:830 #, c-format msgid "could not parse numeric array \"%s\": too many numbers\n" msgstr "无法分析数值数组\"%s\": 数字太多\n" -#: common.c:859 +#: common.c:845 #, c-format msgid "could not parse numeric array \"%s\": invalid character in number\n" msgstr "无法分析数值数组\"%s\": 出现无效字符\n" # fe-exec.c:737 -#: common.c:972 +#: common.c:958 msgid "cannot duplicate null pointer\n" msgstr "无法重复空指针\n" -#: common.c:975 common.c:986 common.c:997 common.c:1008 -#: pg_backup_archiver.c:727 pg_backup_archiver.c:1103 -#: pg_backup_archiver.c:1234 pg_backup_archiver.c:1705 -#: pg_backup_archiver.c:1862 pg_backup_archiver.c:1908 -#: pg_backup_archiver.c:4048 pg_backup_custom.c:144 pg_backup_custom.c:149 -#: pg_backup_custom.c:155 pg_backup_custom.c:170 pg_backup_custom.c:570 -#: pg_backup_custom.c:1113 pg_backup_custom.c:1122 pg_backup_db.c:154 -#: pg_backup_db.c:164 pg_backup_db.c:212 pg_backup_db.c:256 pg_backup_db.c:271 -#: pg_backup_db.c:305 pg_backup_files.c:114 pg_backup_null.c:72 -#: pg_backup_tar.c:167 pg_backup_tar.c:1011 +#: common.c:961 common.c:972 common.c:983 common.c:994 +#: pg_backup_archiver.c:765 pg_backup_archiver.c:1161 +#: pg_backup_archiver.c:1292 pg_backup_archiver.c:1762 +#: pg_backup_archiver.c:1956 pg_backup_archiver.c:2002 +#: pg_backup_archiver.c:4263 pg_backup_custom.c:132 pg_backup_custom.c:139 +#: pg_backup_custom.c:780 pg_backup_custom.c:907 pg_backup_db.c:147 +#: pg_backup_db.c:157 pg_backup_db.c:205 pg_backup_db.c:249 pg_backup_db.c:264 +#: pg_backup_db.c:298 pg_backup_db.c:491 pg_backup_files.c:114 +#: pg_backup_null.c:72 pg_backup_tar.c:171 pg_backup_tar.c:1005 msgid "out of memory\n" msgstr "内存用尽\n" -#: pg_backup_archiver.c:80 +#: pg_backup_archiver.c:88 msgid "archiver" msgstr "归档" -#: pg_backup_archiver.c:195 pg_backup_archiver.c:1198 +#: pg_backup_archiver.c:208 pg_backup_archiver.c:1260 #, c-format msgid "could not close output file: %s\n" msgstr "无法关闭输出文件: %s\n" -#: pg_backup_archiver.c:220 +#: pg_backup_archiver.c:234 msgid "-C and -c are incompatible options\n" msgstr "-C 和 -c 是互不兼容的选项\n" -#: pg_backup_archiver.c:227 +#: pg_backup_archiver.c:241 msgid "-C and -1 are incompatible options\n" msgstr "-C 和 -c 是互不兼容的选项\n" -#: pg_backup_archiver.c:239 +# input.c:213 +#: pg_backup_archiver.c:251 +msgid "parallel restore is not supported with this archive file format\n" +msgstr "不支持以这种归档文件格式进行并行恢复\n" + +#: pg_backup_archiver.c:255 +msgid "" +"parallel restore is not supported with archives made by pre-8.0 pg_dump\n" +msgstr "不支持使用8.0版本以前的pg_dump命令产生的存档文件进行并行恢复\n" + +#: pg_backup_archiver.c:274 msgid "" "cannot restore from compressed archive (compression not supported in this " "installation)\n" msgstr "无法从压缩的归档中恢复 (未配置压缩支持)\n" -#: pg_backup_archiver.c:249 +#: pg_backup_archiver.c:284 msgid "connecting to database for restore\n" msgstr "为恢复数据库与数据库联接\n" -#: pg_backup_archiver.c:251 +#: pg_backup_archiver.c:286 msgid "direct database connections are not supported in pre-1.3 archives\n" msgstr "1.3 以前的归档里不支持直接数据库联接\n" -#: pg_backup_archiver.c:293 +#: pg_backup_archiver.c:328 msgid "implied data-only restore\n" msgstr "隐含的只恢复数据\n" -#: pg_backup_archiver.c:344 +#: pg_backup_archiver.c:380 #, c-format msgid "dropping %s %s\n" msgstr "删除 %s %s\n" -#: pg_backup_archiver.c:396 +#: pg_backup_archiver.c:432 #, c-format msgid "setting owner and privileges for %s %s\n" msgstr "为 %s %s 设置属主和权限\n" -#: pg_backup_archiver.c:454 pg_backup_archiver.c:456 +#: pg_backup_archiver.c:490 pg_backup_archiver.c:492 #, c-format msgid "warning from original dump file: %s\n" msgstr "来自原始转储文件的警告: %s\n" -#: pg_backup_archiver.c:463 +#: pg_backup_archiver.c:499 #, c-format msgid "creating %s %s\n" msgstr "创建 %s %s\n" -#: pg_backup_archiver.c:507 +#: pg_backup_archiver.c:543 #, c-format msgid "connecting to new database \"%s\"\n" msgstr "联接到新数据库 \"%s\"\n" -#: pg_backup_archiver.c:535 +#: pg_backup_archiver.c:571 #, c-format msgid "restoring %s\n" msgstr "正在恢复%s\n" -#: pg_backup_archiver.c:549 +#: pg_backup_archiver.c:585 #, c-format msgid "restoring data for table \"%s\"\n" msgstr "为表 \"%s\" 恢复数据\n" -#: pg_backup_archiver.c:609 +#: pg_backup_archiver.c:647 #, c-format msgid "executing %s %s\n" msgstr "执行 %s %s\n" -#: pg_backup_archiver.c:642 +#: pg_backup_archiver.c:680 #, c-format msgid "disabling triggers for %s\n" msgstr "为%s禁用触发器\n" -#: pg_backup_archiver.c:668 +#: pg_backup_archiver.c:706 #, c-format msgid "enabling triggers for %s\n" msgstr "为%s启用触发器\n" -#: pg_backup_archiver.c:698 +#: pg_backup_archiver.c:736 msgid "" "internal error -- WriteData cannot be called outside the context of a " "DataDumper routine\n" msgstr "内部错误 -- WriteData 不能在 DataDumper 过程的环境之外调用\n" -#: pg_backup_archiver.c:854 +#: pg_backup_archiver.c:893 msgid "large-object output not supported in chosen format\n" msgstr "选定的格式不支持大对象输出\n" -#: pg_backup_archiver.c:908 +#: pg_backup_archiver.c:947 #, c-format msgid "restored %d large object\n" msgid_plural "restored %d large objects\n" msgstr[0] "恢复%d个大对象\n" -#: pg_backup_archiver.c:929 +#: pg_backup_archiver.c:968 pg_backup_tar.c:723 #, c-format msgid "restoring large object with OID %u\n" msgstr "恢复带有OID %u 的大对象\n" -#: pg_backup_archiver.c:941 +#: pg_backup_archiver.c:980 #, c-format msgid "could not create large object %u: %s" msgstr "无法创建大对象%u: %s" # fe-lobj.c:400 fe-lobj.c:483 -#: pg_backup_archiver.c:1006 +#: pg_backup_archiver.c:1042 #, c-format msgid "could not open TOC file \"%s\": %s\n" msgstr "无法打开TOC文件 \"%s\": %s\n" -#: pg_backup_archiver.c:1025 +#: pg_backup_archiver.c:1083 #, c-format msgid "WARNING: line ignored: %s\n" msgstr "警告: 忽略的行: %s\n" -#: pg_backup_archiver.c:1032 +#: pg_backup_archiver.c:1090 #, c-format msgid "could not find entry for ID %d\n" msgstr "无法为 ID %d 找到记录\n" -#: pg_backup_archiver.c:1053 pg_backup_files.c:172 pg_backup_files.c:457 +#: pg_backup_archiver.c:1111 pg_backup_files.c:172 pg_backup_files.c:457 #, c-format msgid "could not close TOC file: %s\n" msgstr "无法关闭 TOC 文件: %s\n" -#: pg_backup_archiver.c:1177 pg_backup_custom.c:181 pg_backup_files.c:130 +#: pg_backup_archiver.c:1230 pg_backup_custom.c:152 pg_backup_files.c:130 #: pg_backup_files.c:262 #, c-format msgid "could not open output file \"%s\": %s\n" msgstr "无法打开输出文件\"%s\": %s\n" -#: pg_backup_archiver.c:1180 pg_backup_custom.c:188 pg_backup_files.c:137 +#: pg_backup_archiver.c:1233 pg_backup_custom.c:159 pg_backup_files.c:137 #, c-format msgid "could not open output file: %s\n" msgstr "无法打开输出文件: %s\n" -#: pg_backup_archiver.c:1277 +#: pg_backup_archiver.c:1335 #, c-format msgid "wrote %lu byte of large object data (result = %lu)\n" msgid_plural "wrote %lu bytes of large object data (result = %lu)\n" msgstr[0] "已经写入了大对象的%lu字节(结果 = %lu)\n" -#: pg_backup_archiver.c:1283 +#: pg_backup_archiver.c:1341 #, c-format msgid "could not write to large object (result: %lu, expected: %lu)\n" msgstr "无法写入大对象 (结果: %lu, 预期: %lu)\n" -#: pg_backup_archiver.c:1341 pg_backup_archiver.c:1364 pg_backup_custom.c:781 -#: pg_backup_custom.c:1035 pg_backup_custom.c:1049 pg_backup_files.c:432 -#: pg_backup_tar.c:586 pg_backup_tar.c:1089 pg_backup_tar.c:1382 +#: pg_backup_archiver.c:1399 pg_backup_archiver.c:1422 pg_backup_custom.c:652 +#: pg_backup_files.c:432 pg_backup_tar.c:590 pg_backup_tar.c:1092 +#: pg_backup_tar.c:1385 #, c-format msgid "could not write to output file: %s\n" msgstr "无法写到输出文件: %s\n" -#: pg_backup_archiver.c:1349 +#: pg_backup_archiver.c:1407 msgid "could not write to custom output routine\n" msgstr "无法写出到客户输出过程\n" -#: pg_backup_archiver.c:1447 +#: pg_backup_archiver.c:1505 msgid "Error while INITIALIZING:\n" msgstr "INITIALIZING 时错误:\n" -#: pg_backup_archiver.c:1452 +#: pg_backup_archiver.c:1510 msgid "Error while PROCESSING TOC:\n" msgstr "PROCESSING TOC 时错误:\n" -#: pg_backup_archiver.c:1457 +#: pg_backup_archiver.c:1515 msgid "Error while FINALIZING:\n" msgstr "FINALIZING 时错误:\n" -#: pg_backup_archiver.c:1462 +#: pg_backup_archiver.c:1520 #, c-format msgid "Error from TOC entry %d; %u %u %s %s %s\n" msgstr "错误来自 TOC 记录 %d; %u %u %s %s %s\n" -#: pg_backup_archiver.c:1598 +#: pg_backup_archiver.c:1655 #, c-format msgid "unexpected data offset flag %d\n" msgstr "意外的数据偏移标志 %d\n" -#: pg_backup_archiver.c:1611 +#: pg_backup_archiver.c:1668 msgid "file offset in dump file is too large\n" msgstr "在转储文件中的文件偏移量太大\n" -#: pg_backup_archiver.c:1708 pg_backup_archiver.c:3009 pg_backup_custom.c:757 -#: pg_backup_files.c:419 pg_backup_tar.c:785 +#: pg_backup_archiver.c:1765 pg_backup_archiver.c:3167 pg_backup_custom.c:630 +#: pg_backup_files.c:419 pg_backup_tar.c:779 msgid "unexpected end of file\n" msgstr "意外的文件结尾\n" -#: pg_backup_archiver.c:1725 +#: pg_backup_archiver.c:1782 msgid "attempting to ascertain archive format\n" msgstr "试图确认归档格式\n" -#: pg_backup_archiver.c:1741 pg_backup_custom.c:200 pg_backup_custom.c:888 +#: pg_backup_archiver.c:1808 pg_backup_archiver.c:1818 +#, c-format +msgid "directory name too long: \"%s\"\n" +msgstr "字典名字太长: \"%s\"\n" + +#: pg_backup_archiver.c:1826 +#, c-format +msgid "" +"directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not " +"exist)\n" +msgstr "目录 \"%s\" 看上去不像一个有效的归档 (\"toc.dat\" 不存在)\n" + +#: pg_backup_archiver.c:1834 pg_backup_custom.c:171 pg_backup_custom.c:762 #: pg_backup_files.c:155 pg_backup_files.c:307 #, c-format msgid "could not open input file \"%s\": %s\n" msgstr "无法打开输入文件 \"%s\": %s\n" -#: pg_backup_archiver.c:1748 pg_backup_custom.c:207 pg_backup_files.c:162 +#: pg_backup_archiver.c:1842 pg_backup_custom.c:178 pg_backup_files.c:162 #, c-format msgid "could not open input file: %s\n" msgstr "无法打开输入文件: %s\n" -#: pg_backup_archiver.c:1757 +#: pg_backup_archiver.c:1851 #, c-format msgid "could not read input file: %s\n" msgstr "无法读取输入文件: %s\n" -#: pg_backup_archiver.c:1759 +#: pg_backup_archiver.c:1853 #, c-format msgid "input file is too short (read %lu, expected 5)\n" msgstr "输入文件太短 (读了 %lu, 预期 5)\n" -#: pg_backup_archiver.c:1817 +#: pg_backup_archiver.c:1911 msgid "input file does not appear to be a valid archive (too short?)\n" msgstr "输入文件看上去不象有效的归档 (太短?)\n" -#: pg_backup_archiver.c:1820 +#: pg_backup_archiver.c:1914 msgid "input file does not appear to be a valid archive\n" msgstr "输入文件看上去不象有效的归档\n" -#: pg_backup_archiver.c:1840 +#: pg_backup_archiver.c:1934 #, c-format msgid "could not close input file: %s\n" msgstr "无法关闭输入文件: %s\n" -#: pg_backup_archiver.c:1857 +#: pg_backup_archiver.c:1951 #, c-format msgid "allocating AH for %s, format %d\n" msgstr "为 %s 分配 AH, 格式 %d\n" -#: pg_backup_archiver.c:1965 +#: pg_backup_archiver.c:2062 #, c-format msgid "unrecognized file format \"%d\"\n" msgstr "不可识别的文件格式 \"%d\"\n" -#: pg_backup_archiver.c:2087 +#: pg_backup_archiver.c:2184 #, c-format msgid "entry ID %d out of range -- perhaps a corrupt TOC\n" msgstr "记录 ID %d 超出范围 - 可能是损坏了的 TOC\n" -#: pg_backup_archiver.c:2203 +#: pg_backup_archiver.c:2300 #, c-format msgid "read TOC entry %d (ID %d) for %s %s\n" msgstr "为 %3$s %4$s 读取 TOC 记录 %1$d (ID %2$d)\n" -#: pg_backup_archiver.c:2237 +#: pg_backup_archiver.c:2334 #, c-format msgid "unrecognized encoding \"%s\"\n" msgstr "未知编码: \"%s\"\n" -#: pg_backup_archiver.c:2242 +#: pg_backup_archiver.c:2339 #, c-format msgid "invalid ENCODING item: %s\n" msgstr "无效的ENCODING成员:%s\n" -#: pg_backup_archiver.c:2260 +#: pg_backup_archiver.c:2357 #, c-format msgid "invalid STDSTRINGS item: %s\n" msgstr "无效的STDSTRINGS成员:%s\n" -#: pg_backup_archiver.c:2452 +#: pg_backup_archiver.c:2555 #, c-format msgid "could not set session user to \"%s\": %s" msgstr "无法设置会话用户为 \"%s\": %s" -#: pg_backup_archiver.c:2790 pg_backup_archiver.c:2940 +#: pg_backup_archiver.c:2895 pg_backup_archiver.c:3077 #, c-format msgid "WARNING: don't know how to set owner for object type %s\n" msgstr "警告: 不知道如何为对象类型%s设置属主\n" -#: pg_backup_archiver.c:2972 +#: pg_backup_archiver.c:3130 msgid "" "WARNING: requested compression not available in this installation -- archive " "will be uncompressed\n" msgstr "警告: 所要求的压缩无法在本次安装中获取 - 归档将不被压缩\n" -#: pg_backup_archiver.c:3012 +#: pg_backup_archiver.c:3170 msgid "did not find magic string in file header\n" msgstr "在文件头中没有找到魔术字串\n" -#: pg_backup_archiver.c:3025 +#: pg_backup_archiver.c:3183 #, c-format msgid "unsupported version (%d.%d) in file header\n" msgstr "在文件头中有不支持的版本 (%d.%d)\n" -#: pg_backup_archiver.c:3030 +#: pg_backup_archiver.c:3188 #, c-format msgid "sanity check on integer size (%lu) failed\n" msgstr "整数尺寸 (%lu) 的健全检查失败\n" -#: pg_backup_archiver.c:3034 +#: pg_backup_archiver.c:3192 msgid "" "WARNING: archive was made on a machine with larger integers, some operations " "might fail\n" msgstr "警告: 归档不是在支持更大范围整数的主机上产生的, 有些操作可能失败\n" -#: pg_backup_archiver.c:3044 +#: pg_backup_archiver.c:3202 #, c-format msgid "expected format (%d) differs from format found in file (%d)\n" msgstr "预期的格式 (%d) 和在文件里找到的格式 (%d) 不同\n" -#: pg_backup_archiver.c:3060 +#: pg_backup_archiver.c:3218 msgid "" "WARNING: archive is compressed, but this installation does not support " "compression -- no data will be available\n" msgstr "警告: 归档是压缩过的, 但是当前安装不支持压缩 - 数据将不可使用\n" -#: pg_backup_archiver.c:3078 +#: pg_backup_archiver.c:3236 msgid "WARNING: invalid creation date in header\n" msgstr "警告: 在头中的创建日期无效\n" -#: pg_backup_archiver.c:3175 +#: pg_backup_archiver.c:3334 msgid "entering restore_toc_entries_parallel\n" msgstr "正在进入restore_toc_entries_parallel\n" -# input.c:213 -#: pg_backup_archiver.c:3179 -msgid "parallel restore is not supported with this archive file format\n" -msgstr "不支持以这种归档文件格式进行并行恢复\n" - -#: pg_backup_archiver.c:3183 -msgid "" -"parallel restore is not supported with archives made by pre-8.0 pg_dump\n" -msgstr "不支持使用8.0版本以前的pg_dump命令产生的存档文件进行并行恢复\n" - -#: pg_backup_archiver.c:3205 +#: pg_backup_archiver.c:3375 #, c-format msgid "processing item %d %s %s\n" msgstr "正在处理成员%d %s %s\n" -#: pg_backup_archiver.c:3266 +#: pg_backup_archiver.c:3451 msgid "entering main parallel loop\n" msgstr "正在进入主并行循环\n" -#: pg_backup_archiver.c:3280 +#: pg_backup_archiver.c:3465 #, c-format msgid "skipping item %d %s %s\n" msgstr "忽略成员%d %s %s\n" -#: pg_backup_archiver.c:3296 +#: pg_backup_archiver.c:3481 #, c-format msgid "launching item %d %s %s\n" msgstr "正在启动成员%d %s %s\n" -#: pg_backup_archiver.c:3333 +#: pg_backup_archiver.c:3518 #, c-format msgid "worker process crashed: status %d\n" msgstr "工作进程崩溃: 状态 %d\n" -#: pg_backup_archiver.c:3338 +#: pg_backup_archiver.c:3523 msgid "finished main parallel loop\n" msgstr "已完成主并行循环\n" -#: pg_backup_archiver.c:3356 +#: pg_backup_archiver.c:3541 #, c-format msgid "processing missed item %d %s %s\n" msgstr "正在处理丢失的成员%d %s %s\n" -#: pg_backup_archiver.c:3382 +#: pg_backup_archiver.c:3567 msgid "parallel_restore should not return\n" msgstr "parallel_restore不应返回\n" # fe-connect.c:891 -#: pg_backup_archiver.c:3388 +#: pg_backup_archiver.c:3573 #, c-format msgid "could not create worker process: %s\n" msgstr "无法创建工作进程: %s\n" # fe-connect.c:891 -#: pg_backup_archiver.c:3396 +#: pg_backup_archiver.c:3581 #, c-format msgid "could not create worker thread: %s\n" msgstr "无法创建工作线程: %s\n" -#: pg_backup_archiver.c:3620 +#: pg_backup_archiver.c:3805 msgid "no item ready\n" msgstr "没有成员准备好\n" -#: pg_backup_archiver.c:3715 +#: pg_backup_archiver.c:3900 msgid "could not find slot of finished worker\n" msgstr "无法找到已完成的工作进程的位置\n" -#: pg_backup_archiver.c:3717 +#: pg_backup_archiver.c:3902 #, c-format msgid "finished item %d %s %s\n" msgstr "已完成的成员%d %s %s\n" -#: pg_backup_archiver.c:3730 +#: pg_backup_archiver.c:3915 #, c-format msgid "worker process failed: exit code %d\n" msgstr "子进程已退出, 退出码为 %d\n" -#: pg_backup_archiver.c:3882 +#: pg_backup_archiver.c:4111 #, c-format msgid "transferring dependency %d -> %d to %d\n" msgstr "传输依赖关系从%d -> %d 到%d\n" -#: pg_backup_archiver.c:3956 +#: pg_backup_archiver.c:4180 #, c-format msgid "reducing dependencies for %d\n" msgstr "为%d减少依赖关系\n" -#: pg_backup_archiver.c:4014 +#: pg_backup_archiver.c:4229 #, c-format msgid "table \"%s\" could not be created, will not restore its data\n" msgstr "无法创建表\"%s\" , 这样无法恢复它的数据\n" -#: pg_backup_custom.c:97 +#: pg_backup_custom.c:87 msgid "custom archiver" msgstr "客户归档" -#: pg_backup_custom.c:405 pg_backup_null.c:153 +#: pg_backup_custom.c:373 pg_backup_null.c:153 msgid "invalid OID for large object\n" msgstr "大对象的无效 OID\n" -#: pg_backup_custom.c:471 +#: pg_backup_custom.c:444 #, c-format msgid "unrecognized data block type (%d) while searching archive\n" msgstr "搜索归档是碰到不识别的数据块类型 (%d)\n" -#: pg_backup_custom.c:482 +#: pg_backup_custom.c:455 #, c-format msgid "error during file seek: %s\n" msgstr "在文件内定位时出错: %s\n" -#: pg_backup_custom.c:492 +#: pg_backup_custom.c:465 #, c-format msgid "" "could not find block ID %d in archive -- possibly due to out-of-order " @@ -1267,7 +1326,7 @@ msgstr "" "在归档中无法找到数据块ID %d -- 这可能是由于不正常的恢复引起的,这种不正常的恢" "复通常因为在归档中缺少数据偏移量而无法处理\n" -#: pg_backup_custom.c:497 +#: pg_backup_custom.c:470 #, c-format msgid "" "could not find block ID %d in archive -- possibly due to out-of-order " @@ -1276,172 +1335,152 @@ msgstr "" "在归档中无法找到数据块ID %d -- 这可能是由于不正常的恢复引起的,这种不正常的恢" "复通常因为缺少的输入文件而无法处理\n" -#: pg_backup_custom.c:502 +#: pg_backup_custom.c:475 #, c-format msgid "could not find block ID %d in archive -- possibly corrupt archive\n" msgstr "无法在归档中找到ID为%d的数据块--这可能是因为归档文件损坏\n" -#: pg_backup_custom.c:509 +#: pg_backup_custom.c:482 #, c-format msgid "found unexpected block ID (%d) when reading data -- expected %d\n" msgstr "读取数据时发现意外块 ID (%d) - 预期是 %d\n" -#: pg_backup_custom.c:523 +#: pg_backup_custom.c:496 #, c-format msgid "unrecognized data block type %d while restoring archive\n" msgstr "恢复归档时碰到不识别的数据块类型 %d\n" -#: pg_backup_custom.c:557 pg_backup_custom.c:985 -#, c-format -msgid "could not initialize compression library: %s\n" -msgstr "无法初始化压缩库: %s\n" - # input.c:210 -#: pg_backup_custom.c:581 pg_backup_custom.c:705 +#: pg_backup_custom.c:578 pg_backup_custom.c:916 msgid "could not read from input file: end of file\n" msgstr "无法从输入文件中读取:文件的结尾\n" # input.c:210 -#: pg_backup_custom.c:584 pg_backup_custom.c:708 +#: pg_backup_custom.c:581 pg_backup_custom.c:919 #, c-format msgid "could not read from input file: %s\n" msgstr "无法从输入档案读取:%s\n" -#: pg_backup_custom.c:601 pg_backup_custom.c:628 -#, c-format -msgid "could not uncompress data: %s\n" -msgstr "无法解压缩数据: %s\n" - -#: pg_backup_custom.c:634 -#, c-format -msgid "could not close compression library: %s\n" -msgstr "无法关闭压缩库: %s\n" - -#: pg_backup_custom.c:736 +#: pg_backup_custom.c:610 #, c-format msgid "could not write byte: %s\n" msgstr "无法写字节: %s\n" -#: pg_backup_custom.c:849 pg_backup_custom.c:882 +#: pg_backup_custom.c:718 pg_backup_custom.c:756 #, c-format msgid "could not close archive file: %s\n" msgstr "无法关闭归档文件: %s\n" -#: pg_backup_custom.c:868 +#: pg_backup_custom.c:737 msgid "can only reopen input archives\n" msgstr "只能重新打开输入归档: %s\n" -#: pg_backup_custom.c:870 -msgid "cannot reopen stdin\n" -msgstr "无法重新打开stdin\n" +#: pg_backup_custom.c:744 +#, fuzzy +msgid "parallel restore from stdin is not supported\n" +msgstr "不支持从标准输入进行并行恢复\n" -#: pg_backup_custom.c:872 -msgid "cannot reopen non-seekable file\n" -msgstr "无法重新打开不可查找的文件\n" +#: pg_backup_custom.c:746 +msgid "parallel restore from non-seekable file is not supported\n" +msgstr "不支持从不可随机寻址的文件里并行恢复\n" -#: pg_backup_custom.c:877 +#: pg_backup_custom.c:751 #, c-format msgid "could not determine seek position in archive file: %s\n" msgstr "无法在归档文件中确定查找位置: %s\n" -#: pg_backup_custom.c:892 +#: pg_backup_custom.c:766 #, c-format msgid "could not set seek position in archive file: %s\n" msgstr "无法在归档文件中设置查找位置: %s\n" -#: pg_backup_custom.c:914 +#: pg_backup_custom.c:786 +msgid "compressor active\n" +msgstr "压缩程序已激活\n" + +#: pg_backup_custom.c:822 msgid "WARNING: ftell mismatch with expected position -- ftell used\n" msgstr "警告: ftell 和预期位置不匹配 -- 使用 ftell\n" -#: pg_backup_custom.c:1016 -#, c-format -msgid "could not compress data: %s\n" -msgstr "无法压缩数据: %s\n" - -#: pg_backup_custom.c:1094 -#, c-format -msgid "could not close compression stream: %s\n" -msgstr "无法关闭压缩流: %s\n" - #: pg_backup_db.c:25 msgid "archiver (db)" msgstr "归档 (db)" -#: pg_backup_db.c:61 +#: pg_backup_db.c:54 msgid "could not get server_version from libpq\n" msgstr "无法从 libpq 获取服务器版本\n" -#: pg_backup_db.c:74 pg_dumpall.c:1718 +#: pg_backup_db.c:67 pg_dumpall.c:1741 #, c-format msgid "server version: %s; %s version: %s\n" msgstr "服务器版本: %s; %s 版本: %s\n" -#: pg_backup_db.c:76 pg_dumpall.c:1720 +#: pg_backup_db.c:69 pg_dumpall.c:1743 #, c-format msgid "aborting because of server version mismatch\n" msgstr "因为服务器版本不匹配而终止\n" -#: pg_backup_db.c:147 +#: pg_backup_db.c:140 #, c-format msgid "connecting to database \"%s\" as user \"%s\"\n" msgstr "以用户 \"%2$s\" 的身份联接到数据库 \"%1$s\"\n" -#: pg_backup_db.c:152 pg_backup_db.c:207 pg_backup_db.c:254 pg_backup_db.c:303 -#: pg_dumpall.c:1614 pg_dumpall.c:1666 +#: pg_backup_db.c:145 pg_backup_db.c:200 pg_backup_db.c:247 pg_backup_db.c:296 +#: pg_dumpall.c:1637 pg_dumpall.c:1689 msgid "Password: " msgstr "口令: " -#: pg_backup_db.c:188 +#: pg_backup_db.c:181 msgid "failed to reconnect to database\n" msgstr "与数据库重新联接失败\n" -#: pg_backup_db.c:193 +#: pg_backup_db.c:186 #, c-format msgid "could not reconnect to database: %s" msgstr "无法与数据库重新联接: %s" # fe-misc.c:450 fe-misc.c:642 fe-misc.c:798 -#: pg_backup_db.c:209 +#: pg_backup_db.c:202 msgid "connection needs password\n" msgstr "在连接时需要输入口令\n" -#: pg_backup_db.c:250 +#: pg_backup_db.c:243 msgid "already connected to a database\n" msgstr "已经与一个数据库联接\n" -#: pg_backup_db.c:295 +#: pg_backup_db.c:288 msgid "failed to connect to database\n" msgstr "与数据库联接失败\n" -#: pg_backup_db.c:314 +#: pg_backup_db.c:307 #, c-format msgid "connection to database \"%s\" failed: %s" msgstr "与数据库 \"%s\" 联接失败: %s" -#: pg_backup_db.c:329 +#: pg_backup_db.c:322 #, c-format msgid "%s" msgstr "%s" -#: pg_backup_db.c:441 +#: pg_backup_db.c:414 pg_backup_db.c:485 pg_backup_db.c:494 +msgid "could not execute query" +msgstr "无法执行查询" + +#: pg_backup_db.c:465 #, c-format msgid "error returned by PQputCopyData: %s" msgstr "PQputCopyData返回错误: %s" -#: pg_backup_db.c:451 +#: pg_backup_db.c:513 #, c-format msgid "error returned by PQputCopyEnd: %s" msgstr "PQputCopyEnd返回错误: %s" -#: pg_backup_db.c:498 -msgid "could not execute query" -msgstr "无法执行查询" - -#: pg_backup_db.c:696 +#: pg_backup_db.c:530 msgid "could not start database transaction" msgstr "无法开始数据库事务" -#: pg_backup_db.c:702 +#: pg_backup_db.c:536 msgid "could not commit database transaction" msgstr "无法提交数据库事务" @@ -1486,7 +1525,7 @@ msgstr "无法写字节\n" msgid "could not open large object TOC for output: %s\n" msgstr "无法打开大对象 TOC 进行输出: %s\n" -#: pg_backup_files.c:510 pg_backup_tar.c:935 +#: pg_backup_files.c:510 pg_backup_tar.c:929 #, c-format msgid "invalid OID for large object (%u)\n" msgstr "用于大对象的非法 OID (%u)\n" @@ -1504,119 +1543,105 @@ msgstr "无法关闭大对象文件\n" msgid "this format cannot be read\n" msgstr "无法读取这个格式\n" -#: pg_backup_tar.c:101 +#: pg_backup_tar.c:105 msgid "tar archiver" msgstr "tar 归档" -#: pg_backup_tar.c:179 +#: pg_backup_tar.c:183 #, c-format msgid "could not open TOC file \"%s\" for output: %s\n" msgstr "无法为输出打开TOC文件\"%s\": %s\n" -#: pg_backup_tar.c:187 +#: pg_backup_tar.c:191 #, c-format msgid "could not open TOC file for output: %s\n" msgstr "无法为输出打开 TOC 文件: %s\n" -#: pg_backup_tar.c:214 pg_backup_tar.c:370 +#: pg_backup_tar.c:218 pg_backup_tar.c:374 msgid "compression is not supported by tar archive format\n" msgstr "不支持tar归档格式的压缩\n" -#: pg_backup_tar.c:222 +#: pg_backup_tar.c:226 #, c-format msgid "could not open TOC file \"%s\" for input: %s\n" msgstr "无法为输入打开TOC文件\"%s\": %s\n" -#: pg_backup_tar.c:229 +#: pg_backup_tar.c:233 #, c-format msgid "could not open TOC file for input: %s\n" msgstr "无法为输入打开 TOC 文件: %s\n" -#: pg_backup_tar.c:356 +#: pg_backup_tar.c:360 #, c-format msgid "could not find file \"%s\" in archive\n" msgstr "无法在归档中找到文件\"%s\"\n" -#: pg_backup_tar.c:412 +#: pg_backup_tar.c:416 #, c-format msgid "could not generate temporary file name: %s\n" msgstr "无法生成临时文件名: %s\n" -#: pg_backup_tar.c:421 +#: pg_backup_tar.c:425 msgid "could not open temporary file\n" msgstr "无法打开临时文件\n" -#: pg_backup_tar.c:448 +#: pg_backup_tar.c:452 msgid "could not close tar member\n" msgstr "无法关闭 tar 成员\n" -#: pg_backup_tar.c:548 +#: pg_backup_tar.c:552 msgid "internal error -- neither th nor fh specified in tarReadRaw()\n" msgstr "内部错误 -- 在 tarReadRaw() 里既未声明 th 也未声明 fh\n" -#: pg_backup_tar.c:674 +#: pg_backup_tar.c:678 #, c-format -msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n" -msgstr "COPY 语句错 -- 无法在字串 \"%s\" 中找到 \"copy\"\n" +msgid "unexpected COPY statement syntax: \"%s\"\n" +msgstr "意外的COPY语句语法: \"%s\"\n" -#: pg_backup_tar.c:692 -#, c-format -msgid "" -"invalid COPY statement -- could not find \"from stdin\" in string \"%s\" " -"starting at position %lu\n" -msgstr "" -"COPY 语句错 -- 无法在从 %2$lu 位置开始的字串 \"%1$s\" 里找到 \"from stdin\" " -"字样\n" - -#: pg_backup_tar.c:729 -#, c-format -msgid "restoring large object OID %u\n" -msgstr "恢复 OID %u 的大对象\n" - -#: pg_backup_tar.c:880 +#: pg_backup_tar.c:874 msgid "could not write null block at end of tar archive\n" msgstr "无法在 tar 归档末尾写 null 块\n" -#: pg_backup_tar.c:1080 +#: pg_backup_tar.c:1083 msgid "archive member too large for tar format\n" msgstr "在 tar 格式中归档成员太大\n" # command.c:1148 -#: pg_backup_tar.c:1095 +#: pg_backup_tar.c:1098 #, c-format msgid "could not close temporary file: %s\n" msgstr "无法关闭临时文件: %s\n" -#: pg_backup_tar.c:1105 +#: pg_backup_tar.c:1108 #, c-format msgid "actual file length (%s) does not match expected (%s)\n" msgstr "实际文件长度 (%s) 不匹配预期的长度 (%s)\n" -#: pg_backup_tar.c:1113 +#: pg_backup_tar.c:1116 msgid "could not output padding at end of tar member\n" msgstr "无法在 tar 成员尾部输出填充内容\n" -#: pg_backup_tar.c:1142 +#: pg_backup_tar.c:1145 #, c-format msgid "moving from position %s to next member at file position %s\n" msgstr "从位置 %s 移动到文件位置 %s 的下一个成员\n" -#: pg_backup_tar.c:1153 +#: pg_backup_tar.c:1156 #, c-format msgid "now at file position %s\n" msgstr "现在在文件的位置 %s\n" -#: pg_backup_tar.c:1162 pg_backup_tar.c:1192 +#: pg_backup_tar.c:1165 pg_backup_tar.c:1195 #, c-format msgid "could not find header for file \"%s\" in tar archive\n" msgstr "无法在tar归档中为文件\"%s\"找到标题头\n" -#: pg_backup_tar.c:1176 +#: pg_backup_tar.c:1179 #, c-format msgid "skipping tar member %s\n" msgstr "忽略 tar 成员 %s\n" -#: pg_backup_tar.c:1180 +#: pg_backup_tar.c:1183 #, c-format msgid "" "restoring data out of order is not supported in this archive format: \"%s\" " @@ -1625,50 +1650,51 @@ msgstr "" "这个归档格式里不支持不按照顺序转储数据: 要求\"%s\" ,但它在归档文件里位于\"%s" "\"前面.\n" -#: pg_backup_tar.c:1226 +#: pg_backup_tar.c:1229 #, c-format msgid "mismatch in actual vs. predicted file position (%s vs. %s)\n" msgstr "实际文件位置和预期文件位置不匹配 (%s 对 %s)\n" -#: pg_backup_tar.c:1241 +#: pg_backup_tar.c:1244 #, c-format msgid "incomplete tar header found (%lu byte)\n" msgid_plural "incomplete tar header found (%lu bytes)\n" msgstr[0] "找到未完成的tar文件头(%lu个字节)\n" -#: pg_backup_tar.c:1279 +#: pg_backup_tar.c:1282 #, c-format msgid "TOC Entry %s at %s (length %lu, checksum %d)\n" msgstr "在 %2$s 的 TOC 记录 %1$s (长度 %3$lu, 校验和 %4$d)\n" -#: pg_backup_tar.c:1289 +#: pg_backup_tar.c:1292 #, c-format msgid "" "corrupt tar header found in %s (expected %d, computed %d) file position %s\n" msgstr "" "在文件 %1$s 的位置 %4$s 发现崩溃的 tar 头(预计在 %2$d, 计算出来在 %3$d)\n" -#: pg_restore.c:319 +#: pg_restore.c:300 #, c-format msgid "%s: options -d/--dbname and -f/--file cannot be used together\n" msgstr "%s: 选项 -d/--dbname和-f/--file不能同时使用.\n" -#: pg_restore.c:331 +#: pg_restore.c:312 #, c-format msgid "%s: cannot specify both --single-transaction and multiple jobs\n" msgstr "%s: 不能同时指定选项--single-transaction和多个任务\n" -#: pg_restore.c:361 +#: pg_restore.c:348 #, c-format -msgid "unrecognized archive format \"%s\"; please specify \"c\" or \"t\"\n" -msgstr "不可识别的存档格式\"%s\"; 请指定 \"c\"或\"t\"\n" +msgid "" +"unrecognized archive format \"%s\"; please specify \"c\", \"d\", or \"t\"\n" +msgstr "不可识别的归档格式\"%s\"; 请指定 \"c\", \"d\", 或 \"t\"\n" -#: pg_restore.c:395 +#: pg_restore.c:382 #, c-format msgid "WARNING: errors ignored on restore: %d\n" msgstr "警告: 恢复中忽略错误: %d\n" -#: pg_restore.c:409 +#: pg_restore.c:396 #, c-format msgid "" "%s restores a PostgreSQL database from an archive created by pg_dump.\n" @@ -1677,47 +1703,47 @@ msgstr "" "%s 从一个归档中恢复一个由 pg_dump 创建的 PostgreSQL 数据库.\n" "\n" -#: pg_restore.c:411 +#: pg_restore.c:398 #, c-format msgid " %s [OPTION]... [FILE]\n" msgstr " %s [选项]... [文件名]\n" -#: pg_restore.c:414 +#: pg_restore.c:401 #, c-format msgid " -d, --dbname=NAME connect to database name\n" msgstr " -d, --dbname=名字 连接数据库名字\n" -#: pg_restore.c:415 +#: pg_restore.c:402 #, c-format msgid " -f, --file=FILENAME output file name\n" msgstr " -f, --file=文件名 输出文件名\n" -#: pg_restore.c:416 +#: pg_restore.c:403 #, c-format -msgid " -F, --format=c|t backup file format (should be automatic)\n" -msgstr " -F, --format=c|t 备份文件格式(应该自动进行)\n" +msgid " -F, --format=c|d|t backup file format (should be automatic)\n" +msgstr " -F, --format=c|d|t 备份文件格式(应该自动进行)\n" -#: pg_restore.c:417 +#: pg_restore.c:404 #, c-format msgid " -l, --list print summarized TOC of the archive\n" msgstr " -l, --list 打印归档文件的 TOC 概述\n" -#: pg_restore.c:418 +#: pg_restore.c:405 #, c-format msgid " -v, --verbose verbose mode\n" msgstr " -v, --verbose 详细模式\n" -#: pg_restore.c:419 +#: pg_restore.c:406 #, c-format msgid " --help show this help, then exit\n" msgstr " --help 显示此帮助信息, 然后退出\n" -#: pg_restore.c:420 +#: pg_restore.c:407 #, c-format msgid " --version output version information, then exit\n" msgstr " --version 输出版本信息, 然后退出\n" -#: pg_restore.c:422 +#: pg_restore.c:409 #, c-format msgid "" "\n" @@ -1726,12 +1752,12 @@ msgstr "" "\n" "恢复控制选项:\n" -#: pg_restore.c:423 +#: pg_restore.c:410 #, c-format msgid " -a, --data-only restore only the data, no schema\n" msgstr " -a, --data-only 只恢复数据, 不包括模式\n" -#: pg_restore.c:424 +#: pg_restore.c:411 #, c-format msgid "" " -c, --clean clean (drop) database objects before recreating\n" @@ -1739,27 +1765,27 @@ msgstr "" " -c, --clean 在重新创建数据库对象之前需要清除(删除)数据库对" "象\n" -#: pg_restore.c:425 +#: pg_restore.c:412 #, c-format msgid " -C, --create create the target database\n" msgstr " -C, --create 创建目标数据库\n" -#: pg_restore.c:426 +#: pg_restore.c:413 #, c-format msgid " -e, --exit-on-error exit on error, default is to continue\n" msgstr " -e, --exit-on-error 发生错误退出, 默认为继续\n" -#: pg_restore.c:427 +#: pg_restore.c:414 #, c-format msgid " -I, --index=NAME restore named index\n" msgstr " -I, --index=名称 恢复指定名称的索引\n" -#: pg_restore.c:428 +#: pg_restore.c:415 #, c-format msgid " -j, --jobs=NUM use this many parallel jobs to restore\n" msgstr " -j, --jobs=NUM 可以执行多个任务并行进行恢复工作\n" -#: pg_restore.c:429 +#: pg_restore.c:416 #, c-format msgid "" " -L, --use-list=FILENAME use table of contents from this file for\n" @@ -1768,17 +1794,17 @@ msgstr "" " -L, --use-list=文件名 从这个文件中使用指定的内容表排序\n" " 输出\n" -#: pg_restore.c:431 +#: pg_restore.c:418 #, c-format msgid " -n, --schema=NAME restore only objects in this schema\n" msgstr " -n, --schema=NAME 在这个模式中只恢复对象\n" -#: pg_restore.c:432 +#: pg_restore.c:419 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr " -O, --no-owner 忽略恢复对象所属者\n" -#: pg_restore.c:433 +#: pg_restore.c:420 #, c-format msgid "" " -P, --function=NAME(args)\n" @@ -1787,12 +1813,12 @@ msgstr "" " -P, --function=名字(参数)\n" " 恢复指定名字的函数\n" -#: pg_restore.c:435 +#: pg_restore.c:422 #, c-format msgid " -s, --schema-only restore only the schema, no data\n" msgstr " -s, --schema-only 只恢复模式, 不包括数据\n" -#: pg_restore.c:436 +#: pg_restore.c:423 #, c-format msgid "" " -S, --superuser=NAME superuser user name to use for disabling " @@ -1801,29 +1827,38 @@ msgstr "" " -S, --superuser=NAME 使用指定的超级用户来禁用\n" " 触发器\n" -#: pg_restore.c:437 +#: pg_restore.c:424 #, c-format msgid " -t, --table=NAME restore named table\n" msgstr " -t, --table=NAME 恢复指定命字的表\n" -#: pg_restore.c:438 +#: pg_restore.c:425 #, c-format msgid " -T, --trigger=NAME restore named trigger\n" msgstr " -T, --trigger=NAME 恢复指定命字的触发器\n" -#: pg_restore.c:439 +#: pg_restore.c:426 #, c-format msgid "" " -x, --no-privileges skip restoration of access privileges (grant/" "revoke)\n" msgstr " -x, --no-privileges 跳过处理权限的恢复 (grant/revoke)\n" -#: pg_restore.c:440 +#: pg_restore.c:427 +#, c-format +msgid "" +" -1, --single-transaction\n" +" restore as a single transaction\n" +msgstr "" +" -1, --single-transaction\n" +" 作为单个事务恢复\n" + +#: pg_restore.c:429 #, c-format msgid " --disable-triggers disable triggers during data-only restore\n" msgstr " --disable-triggers 在只恢复数据的过程中禁用触发器\n" -#: pg_restore.c:441 +#: pg_restore.c:430 #, c-format msgid "" " --no-data-for-failed-tables\n" @@ -1834,17 +1869,17 @@ msgstr "" " 没有恢复无法创建表\n" " 的数据\n" -#: pg_restore.c:444 +#: pg_restore.c:433 +#, fuzzy, c-format +msgid " --no-security-labels do not restore security labels\n" +msgstr " --no-security-labels 不恢复安全标签信息\n" + +#: pg_restore.c:434 #, c-format msgid " --no-tablespaces do not restore tablespace assignments\n" msgstr "--no-tablespaces 不恢复表空间的分配信息\n" -#: pg_restore.c:445 -#, c-format -msgid " --role=ROLENAME do SET ROLE before restore\n" -msgstr " --role=ROLENAME 在恢复前执行SET ROLE操作\n" - -#: pg_restore.c:446 +#: pg_restore.c:435 #, c-format msgid "" " --use-set-session-authorization\n" @@ -1856,16 +1891,12 @@ msgstr "" " 使用 SESSION AUTHORIZATION 命令代替\n" " ALTER OWNER命令来设置对象所有权\n" -#: pg_restore.c:449 +#: pg_restore.c:445 #, c-format -msgid "" -" -1, --single-transaction\n" -" restore as a single transaction\n" -msgstr "" -" -1, --single-transaction\n" -" 作为单个事务恢复\n" +msgid " --role=ROLENAME do SET ROLE before restore\n" +msgstr " --role=ROLENAME 在恢复前执行SET ROLE操作\n" -#: pg_restore.c:459 +#: pg_restore.c:447 #, c-format msgid "" "\n" @@ -1876,7 +1907,7 @@ msgstr "" "如果没有提供输入文件名, 则使用标准输入.\n" "\n" -#: pg_dumpall.c:167 +#: pg_dumpall.c:171 #, c-format msgid "" "The program \"pg_dump\" is needed by %s but was not found in the\n" @@ -1887,7 +1918,7 @@ msgstr "" "\n" "检查您的安装.\n" -#: pg_dumpall.c:174 +#: pg_dumpall.c:178 #, c-format msgid "" "The program \"pg_dump\" was found by \"%s\"\n" @@ -1898,32 +1929,32 @@ msgstr "" "\n" "检查您的安装.\n" -#: pg_dumpall.c:331 +#: pg_dumpall.c:314 #, c-format msgid "" "%s: options -g/--globals-only and -r/--roles-only cannot be used together\n" msgstr "%s: 选项-g/--globals-only和-r/--roles-only不能同时使用.\n" -#: pg_dumpall.c:340 +#: pg_dumpall.c:323 #, c-format msgid "" "%s: options -g/--globals-only and -t/--tablespaces-only cannot be used " "together\n" msgstr "%s: 选项 -g/--globals-only和-t/--tablespaces-only不能同时使用.\n" -#: pg_dumpall.c:349 +#: pg_dumpall.c:332 #, c-format msgid "" "%s: options -r/--roles-only and -t/--tablespaces-only cannot be used " "together\n" msgstr "%s: 选项 -r/--roles-only和 -t/--tablespaces-only不能同时使用.\n" -#: pg_dumpall.c:385 pg_dumpall.c:1655 +#: pg_dumpall.c:374 pg_dumpall.c:1678 #, c-format msgid "%s: could not connect to database \"%s\"\n" msgstr "%s: 无法与数据库 \"%s\" 联接\n" -#: pg_dumpall.c:400 +#: pg_dumpall.c:389 #, c-format msgid "" "%s: could not connect to databases \"postgres\" or \"template1\"\n" @@ -1933,12 +1964,12 @@ msgstr "" "请指定另外一个数据库.\n" # command.c:1148 -#: pg_dumpall.c:417 +#: pg_dumpall.c:406 #, c-format msgid "%s: could not open the output file \"%s\": %s\n" msgstr "%s:无法打开输出文件 \"%s\":%s\n" -#: pg_dumpall.c:535 +#: pg_dumpall.c:528 #, c-format msgid "" "%s extracts a PostgreSQL database cluster into an SQL script file.\n" @@ -1947,50 +1978,55 @@ msgstr "" "%s 抽取一个 PostgreSQL 数据库簇进一个 SQL 脚本文件.\n" "\n" -#: pg_dumpall.c:537 +#: pg_dumpall.c:530 #, c-format msgid " %s [OPTION]...\n" msgstr " %s [选项]...\n" -#: pg_dumpall.c:546 +#: pg_dumpall.c:533 +#, c-format +msgid " -f, --file=FILENAME output file name\n" +msgstr " -f, --file=文件名 输出文件名\n" + +#: pg_dumpall.c:539 #, c-format msgid "" " -c, --clean clean (drop) databases before recreating\n" msgstr " -c, --clean 在重新创建数据库前先清除(删除)数据库\n" -#: pg_dumpall.c:547 +#: pg_dumpall.c:540 #, c-format msgid " -g, --globals-only dump only global objects, no databases\n" msgstr " -g, --globals-only 只转储全局对象, 不包括数据库\n" -#: pg_dumpall.c:549 +#: pg_dumpall.c:542 #, c-format msgid " -O, --no-owner skip restoration of object ownership\n" msgstr " -O, --no-owner 不恢复对象所属者\n" -#: pg_dumpall.c:550 +#: pg_dumpall.c:543 #, c-format msgid "" " -r, --roles-only dump only roles, no databases or tablespaces\n" msgstr " -r, --roles-only 只转储角色,不包括数据库或表空间\n" -#: pg_dumpall.c:552 +#: pg_dumpall.c:545 #, c-format msgid " -S, --superuser=NAME superuser user name to use in the dump\n" msgstr " -S, --superuser=NAME 在转储中, 指定的超级用户名\n" -#: pg_dumpall.c:553 +#: pg_dumpall.c:546 #, c-format msgid "" " -t, --tablespaces-only dump only tablespaces, no databases or roles\n" msgstr " -t, --tablespaces-only 只转储表空间,而不转储数据库或角色\n" -#: pg_dumpall.c:568 +#: pg_dumpall.c:563 #, c-format msgid " -l, --database=DBNAME alternative default database\n" msgstr " -l, --database=DBNAME 另一个缺省数据库\n" -#: pg_dumpall.c:574 +#: pg_dumpall.c:570 #, c-format msgid "" "\n" @@ -2004,73 +2040,73 @@ msgstr "" ".\n" "\n" -#: pg_dumpall.c:1018 +#: pg_dumpall.c:1041 #, c-format msgid "%s: could not parse ACL list (%s) for tablespace \"%s\"\n" msgstr "%1$s: 无法为表空间 \"%3$s\" 分析 ACL 列表 (%2$s)\n" -#: pg_dumpall.c:1318 +#: pg_dumpall.c:1341 #, c-format msgid "%s: could not parse ACL list (%s) for database \"%s\"\n" msgstr "%1$s: 无法为数据库 \"%3$s\" 分析 ACL 列表 (%2$s)\n" -#: pg_dumpall.c:1525 +#: pg_dumpall.c:1548 #, c-format msgid "%s: dumping database \"%s\"...\n" msgstr "%s: 正在转储数据库 \"%s\"...\n" -#: pg_dumpall.c:1535 +#: pg_dumpall.c:1558 #, c-format msgid "%s: pg_dump failed on database \"%s\", exiting\n" msgstr "%s: pg_dump 失败在数据库 \"%s\", 正在退出\n" # command.c:1148 -#: pg_dumpall.c:1544 +#: pg_dumpall.c:1567 #, c-format msgid "%s: could not re-open the output file \"%s\": %s\n" msgstr "%s:无法重新打开输出文件 \"%s\":%s\n" -#: pg_dumpall.c:1583 +#: pg_dumpall.c:1606 #, c-format msgid "%s: running \"%s\"\n" msgstr "%s: 正在运行 \"%s\"\n" -#: pg_dumpall.c:1628 +#: pg_dumpall.c:1651 #, c-format msgid "%s: out of memory\n" msgstr "%s: 内存溢出\n" -#: pg_dumpall.c:1677 +#: pg_dumpall.c:1700 #, c-format msgid "%s: could not connect to database \"%s\": %s\n" msgstr "%s: 无法与数据库 \"%s\" 联接: %s\n" -#: pg_dumpall.c:1691 +#: pg_dumpall.c:1714 #, c-format msgid "%s: could not get server version\n" msgstr "%s: 无法从服务器获取版本\n" -#: pg_dumpall.c:1697 +#: pg_dumpall.c:1720 #, c-format msgid "%s: could not parse server version \"%s\"\n" msgstr "%s: 无法分析版本字串 \"%s\"\n" -#: pg_dumpall.c:1705 +#: pg_dumpall.c:1728 #, c-format msgid "%s: could not parse version \"%s\"\n" msgstr "%s: 无法解析版本 \"%s\"\n" -#: pg_dumpall.c:1744 pg_dumpall.c:1770 +#: pg_dumpall.c:1767 pg_dumpall.c:1793 #, c-format msgid "%s: executing %s\n" msgstr "%s: 执行 %s\n" -#: pg_dumpall.c:1750 pg_dumpall.c:1776 +#: pg_dumpall.c:1773 pg_dumpall.c:1799 #, c-format msgid "%s: query failed: %s" msgstr "%s: 查询失败: %s" -#: pg_dumpall.c:1752 pg_dumpall.c:1778 +#: pg_dumpall.c:1775 pg_dumpall.c:1801 #, c-format msgid "%s: query was: %s\n" msgstr "%s: 查询是: %s\n" @@ -2107,31 +2143,71 @@ msgstr "无法进入目录 \"%s\"" msgid "could not read symbolic link \"%s\"" msgstr "无法读取符号链结 \"%s\"" -#: ../../port/exec.c:516 +#: ../../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" msgstr "子进程已退出, 退出码为 %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "子进程被例外(exception) 0x%X 终止" -#: ../../port/exec.c:529 +#: ../../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "子进程被信号 %s 终止" -#: ../../port/exec.c:532 +#: ../../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "子进程被信号 %d 终止" -#: ../../port/exec.c:536 +#: ../../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "子进程已退出, 未知状态 %d" +#~ msgid "%s: invalid -X option -- %s\n" +#~ msgstr "%s: 无效的 -X 选项 -- %s\n" + +#~ msgid "query returned no rows: %s\n" +#~ msgstr "查询放弃, 没有记录: %s\n" + +#~ msgid "could not initialize compression library: %s\n" +#~ msgstr "无法初始化压缩库: %s\n" + +#~ msgid "could not uncompress data: %s\n" +#~ msgstr "无法解压缩数据: %s\n" + +#~ msgid "could not close compression library: %s\n" +#~ msgstr "无法关闭压缩库: %s\n" + +#~ msgid "cannot reopen stdin\n" +#~ msgstr "无法重新打开stdin\n" + +#~ msgid "cannot reopen non-seekable file\n" +#~ msgstr "无法重新打开不可查找的文件\n" + +#~ msgid "could not compress data: %s\n" +#~ msgstr "无法压缩数据: %s\n" + +#~ msgid "could not close compression stream: %s\n" +#~ msgstr "无法关闭压缩流: %s\n" + +#~ msgid "invalid COPY statement -- could not find \"copy\" in string \"%s\"\n" +#~ msgstr "COPY 语句错 -- 无法在字串 \"%s\" 中找到 \"copy\"\n" + +#~ msgid "" +#~ "invalid COPY statement -- could not find \"from stdin\" in string \"%s\" " +#~ "starting at position %lu\n" +#~ msgstr "" +#~ "COPY 语句错 -- 无法在从 %2$lu 位置开始的字串 \"%1$s\" 里找到 \"from stdin" +#~ "\" 字样\n" + +#~ msgid "restoring large object OID %u\n" +#~ msgstr "恢复 OID %u 的大对象\n" + #~ msgid "dumpBlobs(): could not open large object: %s" #~ msgstr "dumpBlobs(): 无法打开大对象: %s" diff --git a/src/bin/pg_dump/po/zh_TW.po b/src/bin/pg_dump/po/zh_TW.po index 1a73ced0b1..789bbef45c 100644 --- a/src/bin/pg_dump/po/zh_TW.po +++ b/src/bin/pg_dump/po/zh_TW.po @@ -12,7 +12,7 @@ msgstr "" "Last-Translator: Zhenbang Wei \n" "Language-Team: EnterpriseDB translation team \n" -"Language: \n" +"Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_resetxlog/nls.mk b/src/bin/pg_resetxlog/nls.mk index e4c44e1855..7f80e0be1c 100644 --- a/src/bin/pg_resetxlog/nls.mk +++ b/src/bin/pg_resetxlog/nls.mk @@ -1,5 +1,5 @@ # src/bin/pg_resetxlog/nls.mk CATALOG_NAME := pg_resetxlog -AVAIL_LANGUAGES := de es fr it ja ko pt_BR ro ru sv ta tr zh_CN zh_TW +AVAIL_LANGUAGES := cs de es fr it ja ko pl pt_BR ro ru sv ta tr zh_CN zh_TW GETTEXT_FILES := pg_resetxlog.c GETTEXT_TRIGGERS:= _ diff --git a/src/bin/pg_resetxlog/pg_resetxlog.c b/src/bin/pg_resetxlog/pg_resetxlog.c index 1e1412d29d..54cc5b0302 100644 --- a/src/bin/pg_resetxlog/pg_resetxlog.c +++ b/src/bin/pg_resetxlog/pg_resetxlog.c @@ -95,7 +95,6 @@ main(int argc, char *argv[]) char *endptr3; char *DataDir; int fd; - char path[MAXPGPATH]; set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_resetxlog")); @@ -270,13 +269,12 @@ main(int argc, char *argv[]) * Check for a postmaster lock file --- if there is one, refuse to * proceed, on grounds we might be interfering with a live installation. */ - snprintf(path, MAXPGPATH, "%s/postmaster.pid", DataDir); - - if ((fd = open(path, O_RDONLY, 0)) < 0) + if ((fd = open("postmaster.pid", O_RDONLY, 0)) < 0) { if (errno != ENOENT) { - fprintf(stderr, _("%s: could not open file \"%s\" for reading: %s\n"), progname, path, strerror(errno)); + fprintf(stderr, _("%s: could not open file \"%s\" for reading: %s\n"), + progname, "postmaster.pid", strerror(errno)); exit(1); } } @@ -284,7 +282,7 @@ main(int argc, char *argv[]) { fprintf(stderr, _("%s: lock file \"%s\" exists\n" "Is a server running? If not, delete the lock file and try again.\n"), - progname, path); + progname, "postmaster.pid"); exit(1); } diff --git a/src/bin/pg_resetxlog/po/cs.po b/src/bin/pg_resetxlog/po/cs.po new file mode 100644 index 0000000000..1d7969bf38 --- /dev/null +++ b/src/bin/pg_resetxlog/po/cs.po @@ -0,0 +1,481 @@ +# Czech translation of pg_resetxlog messages +# +# pgtranslation Id: pg_resetxlog.po,v 1.3 2011/09/03 14:06:12 petere Exp $ +# +# Karel Zak , 2003, 2004, 2011, 2012, 2013. +# Tomáš Vondra , 2011, 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: pg_resetxlog-cs (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2012-04-06 23:45+0000\n" +"PO-Revision-Date: 2013-04-28 19:22+0200\n" +"Last-Translator: Tomas Vondra \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: pg_resetxlog.c:135 +#, c-format +msgid "%s: invalid argument for option -e\n" +msgstr "%s: neplatný argument pro volbu -e\n" + +#: pg_resetxlog.c:136 pg_resetxlog.c:151 pg_resetxlog.c:166 pg_resetxlog.c:181 +#: pg_resetxlog.c:196 pg_resetxlog.c:211 pg_resetxlog.c:218 pg_resetxlog.c:225 +#: pg_resetxlog.c:231 pg_resetxlog.c:239 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Zkuste \"%s --help\" pro více informací.\n" + +#: pg_resetxlog.c:141 +#, c-format +msgid "%s: transaction ID epoch (-e) must not be -1\n" +msgstr "%s: epocha ID transakce (-e) nesmí být -1\n" + +#: pg_resetxlog.c:150 +#, c-format +msgid "%s: invalid argument for option -x\n" +msgstr "%s: neplatný argument pro volbu -x\n" + +#: pg_resetxlog.c:156 +#, c-format +msgid "%s: transaction ID (-x) must not be 0\n" +msgstr "%s: ID transakce (-x) nesmí být 0\n" + +#: pg_resetxlog.c:165 +#, c-format +msgid "%s: invalid argument for option -o\n" +msgstr "%s: neplatný argument pro volbu -o\n" + +#: pg_resetxlog.c:171 +#, c-format +msgid "%s: OID (-o) must not be 0\n" +msgstr "%s: OID (-o) nesmí být 0\n" + +#: pg_resetxlog.c:180 +#, c-format +msgid "%s: invalid argument for option -m\n" +msgstr "%s: neplatný argument pro volbu -m\n" + +#: pg_resetxlog.c:186 +#, c-format +msgid "%s: multitransaction ID (-m) must not be 0\n" +msgstr "%s: ID multitransakce (-m) nesmí být 0\n" + +#: pg_resetxlog.c:195 +#, c-format +msgid "%s: invalid argument for option -O\n" +msgstr "%s: neplatný argument pro volbu -O\n" + +#: pg_resetxlog.c:201 +#, c-format +msgid "%s: multitransaction offset (-O) must not be -1\n" +msgstr "%s: offset multitransakce (-O) nesmí být -1\n" + +#: pg_resetxlog.c:210 pg_resetxlog.c:217 pg_resetxlog.c:224 +#, c-format +msgid "%s: invalid argument for option -l\n" +msgstr "%s: neplatný argument pro volbu -l\n" + +#: pg_resetxlog.c:238 +#, c-format +msgid "%s: no data directory specified\n" +msgstr "%s: není specifikován datový adresář\n" + +#: pg_resetxlog.c:252 +#, c-format +msgid "%s: cannot be executed by \"root\"\n" +msgstr "%s: nemůže být spuštěn uživatelem \"root\"\n" + +#: pg_resetxlog.c:254 +#, c-format +msgid "You must run %s as the PostgreSQL superuser.\n" +msgstr "Musíte spustit %s jako PostgreSQL superuživatel.\n" + +#: pg_resetxlog.c:264 +#, c-format +msgid "%s: could not change directory to \"%s\": %s\n" +msgstr "%s: nelze změnit adresář na \"%s\": %s\n" + +#: pg_resetxlog.c:279 pg_resetxlog.c:407 +#, c-format +msgid "%s: could not open file \"%s\" for reading: %s\n" +msgstr "%s: nelze otevřít soubor \"%s\" pro čtení: %s\n" + +#: pg_resetxlog.c:285 +#, c-format +msgid "" +"%s: lock file \"%s\" exists\n" +"Is a server running? If not, delete the lock file and try again.\n" +msgstr "" +"%s: soubor se zámkem \"%s\" existuje\n" +"Neběží již server? Jestliže ne, smažte soubor se zámkem a zkuste to znova.\n" + +#: pg_resetxlog.c:355 +#, c-format +msgid "" +"\n" +"If these values seem acceptable, use -f to force reset.\n" +msgstr "" +"\n" +"Jestliže tyto hodnoty vypadají akceptovatelně, použijte -f pro vynucený " +"reset.\n" + +#: pg_resetxlog.c:367 +#, c-format +msgid "" +"The database server was not shut down cleanly.\n" +"Resetting the transaction log might cause data to be lost.\n" +"If you want to proceed anyway, use -f to force reset.\n" +msgstr "" +"Databázový server nebyl ukončen standardně.\n" +"Resetování transakčního logu může způsobit ztrátu dat.\n" +"Jestliže i přesto chcete pokračovat, použijte -f pro vynucený reset.\n" + +#: pg_resetxlog.c:381 +#, c-format +msgid "Transaction log reset\n" +msgstr "Transakční log resetován\n" + +#: pg_resetxlog.c:410 +#, c-format +msgid "" +"If you are sure the data directory path is correct, execute\n" +" touch %s\n" +"and try again.\n" +msgstr "" +"Máte-li jistotu, že je cesta k datovému adresáři správná, proveďte\n" +" touch %s\n" +"a zkuste to znovu.\n" + +#: pg_resetxlog.c:423 +#, c-format +msgid "%s: could not read file \"%s\": %s\n" +msgstr "%s: nelze číst soubor \"%s\": %s\n" + +#: pg_resetxlog.c:446 +#, c-format +msgid "%s: pg_control exists but has invalid CRC; proceed with caution\n" +msgstr "" +"%s: pg_control existuje, ale s neplatným kontrolním součtem CRC; postupujte " +"opatrně\n" + +#: pg_resetxlog.c:455 +#, c-format +msgid "%s: pg_control exists but is broken or unknown version; ignoring it\n" +msgstr "" +"%s: pg_control existuje, ale je poškozen nebo neznámé verze; ignoruji to\n" + +#: pg_resetxlog.c:549 +#, c-format +msgid "" +"Guessed pg_control values:\n" +"\n" +msgstr "" +"Odhadnuté hodnoty pg_controlu:\n" +"\n" + +#: pg_resetxlog.c:551 +#, c-format +msgid "" +"pg_control values:\n" +"\n" +msgstr "" +"Hodnoty pg_controlu:\n" +"\n" + +#: pg_resetxlog.c:560 +#, c-format +msgid "First log file ID after reset: %u\n" +msgstr "První ID log souboru po resetu: %u\n" + +#: pg_resetxlog.c:562 +#, c-format +msgid "First log file segment after reset: %u\n" +msgstr "První segment log souboru po resetu: %u\n" + +#: pg_resetxlog.c:564 +#, c-format +msgid "pg_control version number: %u\n" +msgstr "Číslo verze pg_controlu: %u\n" + +#: pg_resetxlog.c:566 +#, c-format +msgid "Catalog version number: %u\n" +msgstr "Číslo verze katalogu: %u\n" + +#: pg_resetxlog.c:568 +#, c-format +msgid "Database system identifier: %s\n" +msgstr "Identifikátor databázového systému: %s\n" + +#: pg_resetxlog.c:570 +#, c-format +msgid "Latest checkpoint's TimeLineID: %u\n" +msgstr "TimeLineID posledního checkpointu: %u\n" + +#: pg_resetxlog.c:572 +#, c-format +msgid "Latest checkpoint's NextXID: %u/%u\n" +msgstr "NextXID posledního checkpointu: %u/%u\n" + +#: pg_resetxlog.c:575 +#, c-format +msgid "Latest checkpoint's NextOID: %u\n" +msgstr "NextOID posledního checkpointu: %u\n" + +#: pg_resetxlog.c:577 +#, c-format +msgid "Latest checkpoint's NextMultiXactId: %u\n" +msgstr "NextMultiXactId posledního checkpointu: %u\n" + +#: pg_resetxlog.c:579 +#, c-format +msgid "Latest checkpoint's NextMultiOffset: %u\n" +msgstr "NextMultiOffset posledního checkpointu: %u\n" + +#: pg_resetxlog.c:581 +#, c-format +msgid "Latest checkpoint's oldestXID: %u\n" +msgstr "oldestXID posledního checkpointu: %u\n" + +#: pg_resetxlog.c:583 +#, c-format +msgid "Latest checkpoint's oldestXID's DB: %u\n" +msgstr "DB k oldestXID posledního checkpointu: %u\n" + +#: pg_resetxlog.c:585 +#, c-format +msgid "Latest checkpoint's oldestActiveXID: %u\n" +msgstr "oldestActiveXID posledního checkpointu: %u\n" + +#: pg_resetxlog.c:587 +#, c-format +msgid "Maximum data alignment: %u\n" +msgstr "Maximální zarovnání dat: %u\n" + +#: pg_resetxlog.c:590 +#, c-format +msgid "Database block size: %u\n" +msgstr "Velikost databázového bloku: %u\n" + +#: pg_resetxlog.c:592 +#, c-format +msgid "Blocks per segment of large relation: %u\n" +msgstr "Bloků v segmentu velké relace: %u\n" + +#: pg_resetxlog.c:594 +#, c-format +msgid "WAL block size: %u\n" +msgstr "Velikost WAL bloku: %u\n" + +#: pg_resetxlog.c:596 +#, c-format +msgid "Bytes per WAL segment: %u\n" +msgstr "Bytů ve WAL segmentu: %u\n" + +#: pg_resetxlog.c:598 +#, c-format +msgid "Maximum length of identifiers: %u\n" +msgstr "Maximální délka identifikátorů: %u\n" + +#: pg_resetxlog.c:600 +#, c-format +msgid "Maximum columns in an index: %u\n" +msgstr "Maximální počet sloupců v indexu: %u\n" + +#: pg_resetxlog.c:602 +#, c-format +msgid "Maximum size of a TOAST chunk: %u\n" +msgstr "Maximální velikost TOAST úseku: %u\n" + +#: pg_resetxlog.c:604 +#, c-format +msgid "Date/time type storage: %s\n" +msgstr "Způsob uložení typu date/time: %s\n" + +#: pg_resetxlog.c:605 +msgid "64-bit integers" +msgstr "64-bitová celá čísla" + +#: pg_resetxlog.c:605 +msgid "floating-point numbers" +msgstr "čísla s plovoucí čárkou" + +#: pg_resetxlog.c:606 +#, c-format +msgid "Float4 argument passing: %s\n" +msgstr "Způsob předávání float4 hodnot: %s\n" + +#: pg_resetxlog.c:607 pg_resetxlog.c:609 +msgid "by value" +msgstr "hodnotou" + +#: pg_resetxlog.c:607 pg_resetxlog.c:609 +msgid "by reference" +msgstr "odkazem" + +#: pg_resetxlog.c:608 +#, c-format +msgid "Float8 argument passing: %s\n" +msgstr "Způsob předávání float8 hodnot: %s\n" + +#: pg_resetxlog.c:671 +#, c-format +msgid "" +"%s: internal error -- sizeof(ControlFileData) is too large ... fix " +"PG_CONTROL_SIZE\n" +msgstr "" +"%s: interní chyba -- sizeof(ControlFileData) je příliš velký ... opravte " +"PG_CONTROL_SIZE\n" + +#: pg_resetxlog.c:686 +#, c-format +msgid "%s: could not create pg_control file: %s\n" +msgstr "%s: nelze vytvořit pg_control soubor: %s\n" + +#: pg_resetxlog.c:697 +#, c-format +msgid "%s: could not write pg_control file: %s\n" +msgstr "%s: nelze zapsat pg_control soubor: %s\n" + +#: pg_resetxlog.c:704 pg_resetxlog.c:1011 +#, c-format +msgid "%s: fsync error: %s\n" +msgstr "%s: fsync chyba: %s\n" + +#: pg_resetxlog.c:742 pg_resetxlog.c:817 pg_resetxlog.c:873 +#, c-format +msgid "%s: could not open directory \"%s\": %s\n" +msgstr "%s: nelze otevřít adresář \"%s\": %s\n" + +#: pg_resetxlog.c:786 pg_resetxlog.c:850 pg_resetxlog.c:907 +#, c-format +msgid "%s: could not read from directory \"%s\": %s\n" +msgstr "%s: nelze číst z adresáře \"%s\": %s\n" + +#: pg_resetxlog.c:831 pg_resetxlog.c:888 +#, c-format +msgid "%s: could not delete file \"%s\": %s\n" +msgstr "%s: nelze smazat soubor \"%s\": %s\n" + +#: pg_resetxlog.c:978 +#, c-format +msgid "%s: could not open file \"%s\": %s\n" +msgstr "%s: nelze otevřít soubor \"%s\": %s\n" + +#: pg_resetxlog.c:989 pg_resetxlog.c:1003 +#, c-format +msgid "%s: could not write file \"%s\": %s\n" +msgstr "%s: nelze zapsat do souboru \"%s\": %s\n" + +#: pg_resetxlog.c:1022 +#, c-format +msgid "" +"%s resets the PostgreSQL transaction log.\n" +"\n" +msgstr "" +"%s resetuje PostgreSQL transakční log.\n" +"\n" + +#: pg_resetxlog.c:1023 +#, c-format +msgid "" +"Usage:\n" +" %s [OPTION]... DATADIR\n" +"\n" +msgstr "" +"Použití:\n" +" %s [VOLBA]... ADRESÁŘ\n" +"\n" + +#: pg_resetxlog.c:1024 +#, c-format +msgid "Options:\n" +msgstr "Volby:\n" + +#: pg_resetxlog.c:1025 +#, c-format +msgid " -e XIDEPOCH set next transaction ID epoch\n" +msgstr " -e XIDEPOCH nastaví následující ID transakce\n" + +#: pg_resetxlog.c:1026 +#, c-format +msgid " -f force update to be done\n" +msgstr " -f provede vynucený update\n" + +#: pg_resetxlog.c:1027 +#, c-format +msgid "" +" -l TLI,FILE,SEG force minimum WAL starting location for new transaction " +"log\n" +msgstr "" +" -l FILEID,SEG vynutí minimální počáteční WAL pozici pro novou transakční " +"log\n" + +#: pg_resetxlog.c:1028 +#, c-format +msgid " -m XID set next multitransaction ID\n" +msgstr " -m XID nastaví ID následující multitransakce\n" + +#: pg_resetxlog.c:1029 +#, c-format +msgid "" +" -n no update, just show extracted control values (for " +"testing)\n" +msgstr "" +" -n bez změny, jen ukáže získané kontrolní hodnoty (pro " +"testování)\n" + +#: pg_resetxlog.c:1030 +#, c-format +msgid " -o OID set next OID\n" +msgstr " -o OID nastaví následující OID\n" + +#: pg_resetxlog.c:1031 +#, c-format +msgid " -O OFFSET set next multitransaction offset\n" +msgstr " -O OFFSET nastaví offset následující multitransakce\n" + +#: pg_resetxlog.c:1032 +#, c-format +msgid " -x XID set next transaction ID\n" +msgstr " -x XID nastaví následující ID transakce\n" + +#: pg_resetxlog.c:1033 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help ukáže tuto nápovědu a skončí\n" + +#: pg_resetxlog.c:1034 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version ukáže informace o verzi a skončí\n" + +#: pg_resetxlog.c:1035 +#, c-format +msgid "" +"\n" +"Report bugs to .\n" +msgstr "" +"\n" +"Chyby hlaste na adresu .\n" + +#~ msgid "%s: invalid LC_COLLATE setting\n" +#~ msgstr "%s: neplatné nastavení LC_COLLATE\n" + +#~ msgid "%s: invalid LC_CTYPE setting\n" +#~ msgstr "%s: neplatné nastavení LC_CTYPE\n" + +#~ msgid "Maximum number of function arguments: %u\n" +#~ msgstr "Maximální počet argumentů funkcí: %u\n" + +#~ msgid "LC_COLLATE: %s\n" +#~ msgstr "LC_COLLATE (porovnávání řetězců): %s\n" + +#~ msgid "LC_CTYPE: %s\n" +#~ msgstr "LC_CTYPE (typy znaků): %s\n" diff --git a/src/bin/pg_resetxlog/po/de.po b/src/bin/pg_resetxlog/po/de.po index 047938852b..b4d91f8f54 100644 --- a/src/bin/pg_resetxlog/po/de.po +++ b/src/bin/pg_resetxlog/po/de.po @@ -1,8 +1,6 @@ # German message translation file for pg_resetxlog # Peter Eisentraut , 2002 - 2010. # -# pgtranslation Id: pg_resetxlog.po,v 1.10 2010/05/18 19:24:25 petere Exp $ -# # Use these quotes: »%s« # msgid "" @@ -13,6 +11,7 @@ msgstr "" "PO-Revision-Date: 2010-03-17 23:35+0200\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_resetxlog/po/es.po b/src/bin/pg_resetxlog/po/es.po index fb548758b6..49a8077f3b 100644 --- a/src/bin/pg_resetxlog/po/es.po +++ b/src/bin/pg_resetxlog/po/es.po @@ -1,114 +1,113 @@ # Spanish message translation file for pg_resetxlog # -# Copyright (C) 2003-2010 PostgreSQL Global Development Group +# Copyright (C) 2003-2012 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # # Ivan Hernandez , 2003. -# Alvaro Herrera , 2004-2010 +# Alvaro Herrera , 2004-2012 # Jaime Casanova , 2005 # -# pgtranslation Id: pg_resetxlog.po,v 1.8 2010/08/31 18:14:35 alvherre Exp $ -# msgid "" msgstr "" -"Project-Id-Version: pg_resetxlog (PostgreSQL 9.0)\n" +"Project-Id-Version: pg_resetxlog (PostgreSQL 9.1)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-08-31 07:21+0000\n" -"PO-Revision-Date: 2010-08-31 14:14-0400\n" +"POT-Creation-Date: 2013-08-26 19:44+0000\n" +"PO-Revision-Date: 2012-02-21 22:53-0300\n" "Last-Translator: Álvaro Herrera \n" "Language-Team: Español \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: pg_resetxlog.c:135 +#: pg_resetxlog.c:134 #, c-format msgid "%s: invalid argument for option -e\n" msgstr "%s: argumento no válido para la opción -e\n" -#: pg_resetxlog.c:136 pg_resetxlog.c:151 pg_resetxlog.c:166 pg_resetxlog.c:181 -#: pg_resetxlog.c:196 pg_resetxlog.c:211 pg_resetxlog.c:218 pg_resetxlog.c:225 -#: pg_resetxlog.c:231 pg_resetxlog.c:239 +#: pg_resetxlog.c:135 pg_resetxlog.c:150 pg_resetxlog.c:165 pg_resetxlog.c:180 +#: pg_resetxlog.c:195 pg_resetxlog.c:210 pg_resetxlog.c:217 pg_resetxlog.c:224 +#: pg_resetxlog.c:230 pg_resetxlog.c:238 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Prueba con «%s --help» para más información\n" -#: pg_resetxlog.c:141 +#: pg_resetxlog.c:140 #, c-format msgid "%s: transaction ID epoch (-e) must not be -1\n" msgstr "%s: el «epoch» de ID de transacción (-e) no debe ser -1\n" -#: pg_resetxlog.c:150 +#: pg_resetxlog.c:149 #, c-format msgid "%s: invalid argument for option -x\n" msgstr "%s: argumento no válido para la opción -x\n" -#: pg_resetxlog.c:156 +#: pg_resetxlog.c:155 #, c-format msgid "%s: transaction ID (-x) must not be 0\n" msgstr "%s: el ID de transacción (-x) no debe ser cero\n" -#: pg_resetxlog.c:165 +#: pg_resetxlog.c:164 #, c-format msgid "%s: invalid argument for option -o\n" msgstr "%s: argumento no válido para la opción -o\n" -#: pg_resetxlog.c:171 +#: pg_resetxlog.c:170 #, c-format msgid "%s: OID (-o) must not be 0\n" msgstr "%s: OID (-o) no debe ser cero\n" -#: pg_resetxlog.c:180 +#: pg_resetxlog.c:179 #, c-format msgid "%s: invalid argument for option -m\n" msgstr "%s: argumento no válido para la opción -m\n" -#: pg_resetxlog.c:186 +#: pg_resetxlog.c:185 #, c-format msgid "%s: multitransaction ID (-m) must not be 0\n" msgstr "%s: el ID de multitransacción (-m) no debe ser cero\n" -#: pg_resetxlog.c:195 +#: pg_resetxlog.c:194 #, c-format msgid "%s: invalid argument for option -O\n" msgstr "%s: argumento no válido para la opción -O\n" -#: pg_resetxlog.c:201 +#: pg_resetxlog.c:200 #, c-format msgid "%s: multitransaction offset (-O) must not be -1\n" msgstr "%s: la posición de multitransacción (-O) no debe ser -1\n" -#: pg_resetxlog.c:210 pg_resetxlog.c:217 pg_resetxlog.c:224 +#: pg_resetxlog.c:209 pg_resetxlog.c:216 pg_resetxlog.c:223 #, c-format msgid "%s: invalid argument for option -l\n" msgstr "%s: argumento no válido para la opción -l\n" -#: pg_resetxlog.c:238 +#: pg_resetxlog.c:237 #, c-format msgid "%s: no data directory specified\n" msgstr "%s: directorio de datos no especificado\n" -#: pg_resetxlog.c:252 +#: pg_resetxlog.c:251 #, c-format msgid "%s: cannot be executed by \"root\"\n" msgstr "%s: no puede ser ejecutado con el usuario «root»\n" -#: pg_resetxlog.c:254 +#: pg_resetxlog.c:253 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" msgstr "Debe ejecutar %s con el superusuario de PostgreSQL.\n" -#: pg_resetxlog.c:264 +#: pg_resetxlog.c:263 #, c-format msgid "%s: could not change directory to \"%s\": %s\n" msgstr "%s: no se pudo cambiar al directorio «%s»: %s\n" -#: pg_resetxlog.c:279 pg_resetxlog.c:407 +#: pg_resetxlog.c:276 pg_resetxlog.c:405 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: no se pudo abrir el archivo «%s» para lectura: %s\n" -#: pg_resetxlog.c:285 +#: pg_resetxlog.c:283 #, c-format msgid "" "%s: lock file \"%s\" exists\n" @@ -118,7 +117,7 @@ msgstr "" "¿Hay un servidor corriendo? Si no, borre el archivo candado e inténtelo de " "nuevo\n" -#: pg_resetxlog.c:355 +#: pg_resetxlog.c:353 #, c-format msgid "" "\n" @@ -127,7 +126,7 @@ msgstr "" "\n" "Si estos valores parecen aceptables, use -f para forzar reinicio.\n" -#: pg_resetxlog.c:367 +#: pg_resetxlog.c:365 #, c-format msgid "" "The database server was not shut down cleanly.\n" @@ -138,12 +137,12 @@ msgstr "" "Reiniciar la bitácora de transacciones puede causar pérdida de datos.\n" "Si de todas formas quiere proceder, use -f para forzar su reinicio.\n" -#: pg_resetxlog.c:381 +#: pg_resetxlog.c:379 #, c-format msgid "Transaction log reset\n" msgstr "Bitácora de transacciones reiniciada\n" -#: pg_resetxlog.c:410 +#: pg_resetxlog.c:408 #, c-format msgid "" "If you are sure the data directory path is correct, execute\n" @@ -154,24 +153,24 @@ msgstr "" " touch %s\n" "y pruebe de nuevo.\n" -#: pg_resetxlog.c:423 +#: pg_resetxlog.c:421 #, c-format msgid "%s: could not read file \"%s\": %s\n" msgstr "%s: no se pudo leer el archivo «%s»: %s\n" -#: pg_resetxlog.c:446 +#: pg_resetxlog.c:444 #, c-format msgid "%s: pg_control exists but has invalid CRC; proceed with caution\n" msgstr "" "%s: existe pg_control pero tiene un CRC no válido, proceda con precaución\n" -#: pg_resetxlog.c:455 +#: pg_resetxlog.c:453 #, c-format msgid "%s: pg_control exists but is broken or unknown version; ignoring it\n" msgstr "" "%s: existe pg_control pero está roto o se desconoce su versión; ignorándolo\n" -#: pg_resetxlog.c:549 +#: pg_resetxlog.c:547 #, c-format msgid "" "Guessed pg_control values:\n" @@ -180,7 +179,7 @@ msgstr "" "Valores de pg_control asumidos:\n" "\n" -#: pg_resetxlog.c:551 +#: pg_resetxlog.c:549 #, c-format msgid "" "pg_control values:\n" @@ -189,145 +188,143 @@ msgstr "" "Valores de pg_control:\n" "\n" -#: pg_resetxlog.c:560 +#: pg_resetxlog.c:558 #, c-format msgid "First log file ID after reset: %u\n" -msgstr "" -"Primer ID de archivo log después de reset: %u\n" +msgstr "Primer ID de archivo log después de reset: %u\n" -#: pg_resetxlog.c:562 +#: pg_resetxlog.c:560 #, c-format msgid "First log file segment after reset: %u\n" -msgstr "" -"Primer segmento de archivo log después de reset: %u\n" +msgstr "Primer segmento de archivo log después de reset: %u\n" -#: pg_resetxlog.c:564 +#: pg_resetxlog.c:562 #, c-format msgid "pg_control version number: %u\n" msgstr "Número de versión de pg_control: %u\n" -#: pg_resetxlog.c:566 +#: pg_resetxlog.c:564 #, c-format msgid "Catalog version number: %u\n" msgstr "Número de versión de catálogo: %u\n" -#: pg_resetxlog.c:568 +#: pg_resetxlog.c:566 #, c-format msgid "Database system identifier: %s\n" msgstr "Identificador de sistema: %s\n" -#: pg_resetxlog.c:570 +#: pg_resetxlog.c:568 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" msgstr "TimeLineID del checkpoint más reciente: %u\n" -#: pg_resetxlog.c:572 +#: pg_resetxlog.c:570 #, c-format msgid "Latest checkpoint's NextXID: %u/%u\n" msgstr "NextXID del checkpoint más reciente: %u/%u\n" -#: pg_resetxlog.c:575 +#: pg_resetxlog.c:573 #, c-format msgid "Latest checkpoint's NextOID: %u\n" msgstr "NextOID del checkpoint más reciente: %u\n" -#: pg_resetxlog.c:577 +#: pg_resetxlog.c:575 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" msgstr "NextMultiXactId del checkpoint más reciente: %u\n" -#: pg_resetxlog.c:579 +#: pg_resetxlog.c:577 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" msgstr "NextMultiOffset del checkpoint más reciente: %u\n" -#: pg_resetxlog.c:581 +#: pg_resetxlog.c:579 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" msgstr "oldestXID del checkpoint más reciente: %u\n" -#: pg_resetxlog.c:583 +#: pg_resetxlog.c:581 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" msgstr "BD del oldestXID del checkpoint más reciente: %u\n" -#: pg_resetxlog.c:585 +#: pg_resetxlog.c:583 #, c-format msgid "Latest checkpoint's oldestActiveXID: %u\n" msgstr "oldestActiveXID del checkpoint más reciente: %u\n" -#: pg_resetxlog.c:587 +#: pg_resetxlog.c:585 #, c-format msgid "Maximum data alignment: %u\n" msgstr "Máximo alineamiento de datos: %u\n" -#: pg_resetxlog.c:590 +#: pg_resetxlog.c:588 #, c-format msgid "Database block size: %u\n" msgstr "Tamaño del bloque de la base de datos: %u\n" -#: pg_resetxlog.c:592 +#: pg_resetxlog.c:590 #, c-format msgid "Blocks per segment of large relation: %u\n" msgstr "Bloques por segmento de relación grande: %u\n" -#: pg_resetxlog.c:594 +#: pg_resetxlog.c:592 #, c-format msgid "WAL block size: %u\n" msgstr "Tamaño del bloque de WAL: %u\n" -#: pg_resetxlog.c:596 +#: pg_resetxlog.c:594 #, c-format msgid "Bytes per WAL segment: %u\n" msgstr "Bytes por segmento WAL: %u\n" -#: pg_resetxlog.c:598 +#: pg_resetxlog.c:596 #, c-format msgid "Maximum length of identifiers: %u\n" msgstr "Longitud máxima de identificadores: %u\n" -#: pg_resetxlog.c:600 +#: pg_resetxlog.c:598 #, c-format msgid "Maximum columns in an index: %u\n" msgstr "Máximo número de columnas en un índice: %u\n" -#: pg_resetxlog.c:602 +#: pg_resetxlog.c:600 #, c-format msgid "Maximum size of a TOAST chunk: %u\n" msgstr "Longitud máxima de un trozo TOAST: %u\n" -#: pg_resetxlog.c:604 +#: pg_resetxlog.c:602 #, c-format msgid "Date/time type storage: %s\n" msgstr "Tipo de almacenamiento hora/fecha: %s\n" -#: pg_resetxlog.c:605 +#: pg_resetxlog.c:603 msgid "64-bit integers" msgstr "enteros de 64 bits" -#: pg_resetxlog.c:605 +#: pg_resetxlog.c:603 msgid "floating-point numbers" msgstr "números de punto flotante" -#: pg_resetxlog.c:606 +#: pg_resetxlog.c:604 #, c-format msgid "Float4 argument passing: %s\n" msgstr "Paso de parámetros float4: %s\n" -#: pg_resetxlog.c:607 pg_resetxlog.c:609 +#: pg_resetxlog.c:605 pg_resetxlog.c:607 msgid "by value" msgstr "por valor" -#: pg_resetxlog.c:607 pg_resetxlog.c:609 +#: pg_resetxlog.c:605 pg_resetxlog.c:607 msgid "by reference" msgstr "por referencia" -#: pg_resetxlog.c:608 +#: pg_resetxlog.c:606 #, c-format msgid "Float8 argument passing: %s\n" msgstr "Paso de parámetros float8: %s\n" -#: pg_resetxlog.c:671 +#: pg_resetxlog.c:669 #, c-format msgid "" "%s: internal error -- sizeof(ControlFileData) is too large ... fix " @@ -336,47 +333,47 @@ msgstr "" "%s: error interno -- sizeof(ControlFileData) es demasiado grande ... corrija " "PG_CONTROL_SIZE\n" -#: pg_resetxlog.c:686 +#: pg_resetxlog.c:684 #, c-format msgid "%s: could not create pg_control file: %s\n" msgstr "%s: no se pudo crear el archivo pg_control: %s\n" -#: pg_resetxlog.c:697 +#: pg_resetxlog.c:695 #, c-format msgid "%s: could not write pg_control file: %s\n" msgstr "%s: no se pudo escribir el archivo pg_control: %s\n" -#: pg_resetxlog.c:704 pg_resetxlog.c:1011 +#: pg_resetxlog.c:702 pg_resetxlog.c:1009 #, c-format msgid "%s: fsync error: %s\n" msgstr "%s: Error de fsync: %s\n" -#: pg_resetxlog.c:742 pg_resetxlog.c:817 pg_resetxlog.c:873 +#: pg_resetxlog.c:740 pg_resetxlog.c:815 pg_resetxlog.c:871 #, c-format msgid "%s: could not open directory \"%s\": %s\n" msgstr "%s: no se pudo abrir el directorio «%s»: %s\n" -#: pg_resetxlog.c:786 pg_resetxlog.c:850 pg_resetxlog.c:907 +#: pg_resetxlog.c:784 pg_resetxlog.c:848 pg_resetxlog.c:905 #, c-format msgid "%s: could not read from directory \"%s\": %s\n" msgstr "%s: no se pudo leer del directorio «%s»: %s\n" -#: pg_resetxlog.c:831 pg_resetxlog.c:888 +#: pg_resetxlog.c:829 pg_resetxlog.c:886 #, c-format msgid "%s: could not delete file \"%s\": %s\n" msgstr "%s: no se pudo borrar el archivo «%s»: %s\n" -#: pg_resetxlog.c:978 +#: pg_resetxlog.c:976 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: no se pudo abrir el archivo «%s»: %s\n" -#: pg_resetxlog.c:989 pg_resetxlog.c:1003 +#: pg_resetxlog.c:987 pg_resetxlog.c:1001 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s: no se pudo escribir en el archivo «%s»: %s\n" -#: pg_resetxlog.c:1022 +#: pg_resetxlog.c:1020 #, c-format msgid "" "%s resets the PostgreSQL transaction log.\n" @@ -385,7 +382,7 @@ msgstr "" "%s reinicia la bitácora de transacciones de PostgreSQL\n" "\n" -#: pg_resetxlog.c:1023 +#: pg_resetxlog.c:1021 #, c-format msgid "" "Usage:\n" @@ -396,22 +393,22 @@ msgstr "" " %s [OPCION]... DATADIR\n" "\n" -#: pg_resetxlog.c:1024 +#: pg_resetxlog.c:1022 #, c-format msgid "Options:\n" msgstr "Opciones:\n" -#: pg_resetxlog.c:1025 +#: pg_resetxlog.c:1023 #, c-format msgid " -e XIDEPOCH set next transaction ID epoch\n" msgstr " -e XIDEPOCH asigna el siguiente «epoch» de ID de transacción\n" -#: pg_resetxlog.c:1026 +#: pg_resetxlog.c:1024 #, c-format msgid " -f force update to be done\n" msgstr " -f fuerza que la actualización sea hecha\n" -#: pg_resetxlog.c:1027 +#: pg_resetxlog.c:1025 #, c-format msgid "" " -l TLI,FILE,SEG force minimum WAL starting location for new transaction " @@ -420,12 +417,12 @@ msgstr "" " -l TLI,FILE,SEG fuerza una posición mínima de inicio de WAL para una\n" " nueva transacción\n" -#: pg_resetxlog.c:1028 +#: pg_resetxlog.c:1026 #, c-format msgid " -m XID set next multitransaction ID\n" msgstr " -m XID asigna el siguiente ID de multitransacción\n" -#: pg_resetxlog.c:1029 +#: pg_resetxlog.c:1027 #, c-format msgid "" " -n no update, just show extracted control values (for " @@ -435,33 +432,33 @@ msgstr "" "extraídos\n" " (para prueba)\n" -#: pg_resetxlog.c:1030 +#: pg_resetxlog.c:1028 #, c-format msgid " -o OID set next OID\n" msgstr " -o OID asigna el siguiente OID\n" -#: pg_resetxlog.c:1031 +#: pg_resetxlog.c:1029 #, c-format msgid " -O OFFSET set next multitransaction offset\n" msgstr " -O OFFSET asigna la siguiente posición de multitransacción\n" -#: pg_resetxlog.c:1032 +#: pg_resetxlog.c:1030 #, c-format msgid " -x XID set next transaction ID\n" msgstr " -x XID asigna el siguiente ID de transacción\n" -#: pg_resetxlog.c:1033 +#: pg_resetxlog.c:1031 #, c-format msgid " --help show this help, then exit\n" msgstr " --help muestra esta ayuda y sale del programa\n" -#: pg_resetxlog.c:1034 +#: pg_resetxlog.c:1032 #, c-format msgid " --version output version information, then exit\n" msgstr "" " --version despliega la información de versión y sale del programa\n" -#: pg_resetxlog.c:1035 +#: pg_resetxlog.c:1033 #, c-format msgid "" "\n" diff --git a/src/bin/pg_resetxlog/po/fr.po b/src/bin/pg_resetxlog/po/fr.po index 64fbc96a3d..f68027de65 100644 --- a/src/bin/pg_resetxlog/po/fr.po +++ b/src/bin/pg_resetxlog/po/fr.po @@ -1,8 +1,6 @@ # translation of pg_resetxlog.po to fr_fr # french message translation file for pg_resetxlog # -# $PostgreSQL$ -# # Use these quotes: � %s � # # Guillaume Lelarge , 2003-2009. @@ -15,6 +13,7 @@ msgstr "" "PO-Revision-Date: 2009-11-24 23:01+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" diff --git a/src/bin/pg_resetxlog/po/it.po b/src/bin/pg_resetxlog/po/it.po index d6dbce6ef8..9992937a5b 100644 --- a/src/bin/pg_resetxlog/po/it.po +++ b/src/bin/pg_resetxlog/po/it.po @@ -7,10 +7,11 @@ # # Traduttori: # * Diego Cinelli -# +# * Daniele Varrazzo +# # Revisori: # * Emanuele Zamprogno -# +# # Traduttori precedenti: # * Fabrizio Mazzoni # * Mirko Tebaldi @@ -20,177 +21,167 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" +"Project-Id-Version: pg_resetxlog (PostgreSQL) 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-03-26 13:22+0000\n" -"PO-Revision-Date: 2010-03-27 12:44:19+0100\n" -"Last-Translator: Gabriele Bartolini \n" +"POT-Creation-Date: 2013-01-29 13:57+0000\n" +"PO-Revision-Date: 2012-12-03 17:45+0100\n" +"Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Italian\n" -"X-Poedit-Country: ITALY\n" "X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Poedit 1.5.4\n" -#: pg_resetxlog.c:135 +#: pg_resetxlog.c:134 #, c-format msgid "%s: invalid argument for option -e\n" msgstr "%s: parametro errato per l'opzione -e\n" -#: pg_resetxlog.c:136 -#: pg_resetxlog.c:151 -#: pg_resetxlog.c:166 -#: pg_resetxlog.c:181 -#: pg_resetxlog.c:196 -#: pg_resetxlog.c:211 -#: pg_resetxlog.c:218 -#: pg_resetxlog.c:225 -#: pg_resetxlog.c:231 -#: pg_resetxlog.c:239 +#: pg_resetxlog.c:135 pg_resetxlog.c:150 pg_resetxlog.c:165 pg_resetxlog.c:180 +#: pg_resetxlog.c:195 pg_resetxlog.c:210 pg_resetxlog.c:217 pg_resetxlog.c:224 +#: pg_resetxlog.c:230 pg_resetxlog.c:238 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Prova \"%s --help\" per maggiori informazioni.\n" -#: pg_resetxlog.c:141 +#: pg_resetxlog.c:140 #, c-format msgid "%s: transaction ID epoch (-e) must not be -1\n" msgstr "%s: l'ID epoch della transazione (-e) non deve essere -1\n" -#: pg_resetxlog.c:150 +#: pg_resetxlog.c:149 #, c-format msgid "%s: invalid argument for option -x\n" msgstr "%s: parametro errato per l'opzione -x\n" -#: pg_resetxlog.c:156 +#: pg_resetxlog.c:155 #, c-format msgid "%s: transaction ID (-x) must not be 0\n" msgstr "%s: l'ID della transazione (-x) non deve essere 0\n" -#: pg_resetxlog.c:165 +#: pg_resetxlog.c:164 #, c-format msgid "%s: invalid argument for option -o\n" msgstr "%s: parametro errato per l'opzione -o\n" -#: pg_resetxlog.c:171 +#: pg_resetxlog.c:170 #, c-format msgid "%s: OID (-o) must not be 0\n" msgstr "%s: l'OID (-o) non deve essere 0\n" -#: pg_resetxlog.c:180 +#: pg_resetxlog.c:179 #, c-format msgid "%s: invalid argument for option -m\n" msgstr "%s: parametro errato per l'opzione -m\n" -#: pg_resetxlog.c:186 +#: pg_resetxlog.c:185 #, c-format msgid "%s: multitransaction ID (-m) must not be 0\n" msgstr "%s: l'ID della multitransazione (-m) non deve essere 0\n" -#: pg_resetxlog.c:195 +#: pg_resetxlog.c:194 #, c-format msgid "%s: invalid argument for option -O\n" msgstr "%s: parametro errato per l'opzione -O\n" -#: pg_resetxlog.c:201 +#: pg_resetxlog.c:200 #, c-format msgid "%s: multitransaction offset (-O) must not be -1\n" -msgstr "%s: l'offset di una multitransazione (-O) must not be -1\n" +msgstr "%s: l'offset di una multitransazione (-O) non può essere -1\n" -#: pg_resetxlog.c:210 -#: pg_resetxlog.c:217 -#: pg_resetxlog.c:224 +#: pg_resetxlog.c:209 pg_resetxlog.c:216 pg_resetxlog.c:223 #, c-format msgid "%s: invalid argument for option -l\n" msgstr "%s: parametro errato per l'opzione -l\n" -#: pg_resetxlog.c:238 +#: pg_resetxlog.c:237 #, c-format msgid "%s: no data directory specified\n" msgstr "%s: non è stata specificata una directory per i dati\n" -#: pg_resetxlog.c:252 +#: pg_resetxlog.c:251 #, c-format msgid "%s: cannot be executed by \"root\"\n" -msgstr "%s non può esssere eseguita da \"root\"\n" +msgstr "%s non può essere eseguito da \"root\"\n" -#: pg_resetxlog.c:254 +#: pg_resetxlog.c:253 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" -msgstr "Si deve obbligatoriamente eseguire %s come superuser di PostgreSQL.\n" +msgstr "È obbligatorio eseguire %s come superutente di PostgreSQL.\n" -#: pg_resetxlog.c:264 +#: pg_resetxlog.c:263 #, c-format msgid "%s: could not change directory to \"%s\": %s\n" -msgstr "%s: Impossibile modificare la cartella a \"%s\": %s\n" +msgstr "%s: spostamento nella directory \"%s\" fallito: %s\n" -#: pg_resetxlog.c:279 -#: pg_resetxlog.c:407 +#: pg_resetxlog.c:276 pg_resetxlog.c:405 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" -msgstr "%s: impossibile aprire il file \"%s\" per la lettura: %s\n" +msgstr "%s: errore nell'apertura del file \"%s\" per la lettura: %s\n" -#: pg_resetxlog.c:285 +#: pg_resetxlog.c:283 #, c-format msgid "" "%s: lock file \"%s\" exists\n" "Is a server running? If not, delete the lock file and try again.\n" msgstr "" -"%s: il lock file \"%s\" esiste\n" -"Il server è in esecuzione? Se non lo è, eliminate il lock file e riprovate.\n" +"%s: il file di lock \"%s\" esiste\n" +"Il server è in esecuzione? Se non lo è, cancella il file di lock e riprova.\n" -#: pg_resetxlog.c:355 +#: pg_resetxlog.c:353 #, c-format msgid "" "\n" "If these values seem acceptable, use -f to force reset.\n" msgstr "" "\n" -"Se questi parametri sembrano accettabili, utilizzate -f per forzare un reset.\n" +"Se questi parametri sembrano accettabili, utilizza -f per forzare un reset.\n" -#: pg_resetxlog.c:367 +#: pg_resetxlog.c:365 #, c-format msgid "" "The database server was not shut down cleanly.\n" "Resetting the transaction log might cause data to be lost.\n" "If you want to proceed anyway, use -f to force reset.\n" msgstr "" -"Il server database non è stato chiuso correttamente.\n" -"Resettare il registro delle trasazioni può causare una perdita di dati.\n" -"Se volete continuare comunque, utilizzate -f per forzare il reset.\n" +"Il server database non è stato arrestato correttamente.\n" +"Resettare il registro delle transazioni può causare una perdita di dati.\n" +"Se vuoi continuare comunque, utilizza -f per forzare il reset.\n" -#: pg_resetxlog.c:381 +#: pg_resetxlog.c:379 #, c-format msgid "Transaction log reset\n" -msgstr "registro delle transazioni riavviato\n" +msgstr "Registro delle transazioni riavviato\n" -#: pg_resetxlog.c:410 +#: pg_resetxlog.c:408 #, c-format msgid "" "If you are sure the data directory path is correct, execute\n" " touch %s\n" "and try again.\n" msgstr "" -"Se sei sicuro che il percorso della cartella è corretto, esegui\n" +"Se sei sicuro che il percorso della directory dei dati è corretto, esegui\n" " touch %s\n" "e riprova.\n" -#: pg_resetxlog.c:423 +#: pg_resetxlog.c:421 #, c-format msgid "%s: could not read file \"%s\": %s\n" -msgstr "%s: impossibile leggere il file \"%s\": %s\n" +msgstr "%s: lettura del file \"%s\" fallita: %s\n" -#: pg_resetxlog.c:446 +#: pg_resetxlog.c:444 #, c-format msgid "%s: pg_control exists but has invalid CRC; proceed with caution\n" -msgstr "%s: pg_control esiste ma ha un CRC invalido; procedere con cautela\n" +msgstr "%s: pg_control esiste ma ha un CRC non valido; procedere con cautela\n" -#: pg_resetxlog.c:455 +#: pg_resetxlog.c:453 #, c-format msgid "%s: pg_control exists but is broken or unknown version; ignoring it\n" msgstr "%s: pg_control esiste ma è inutilizzabile o è una versione sconosciuta; verrà ignorato\n" -#: pg_resetxlog.c:541 +#: pg_resetxlog.c:547 #, c-format msgid "" "Guessed pg_control values:\n" @@ -199,7 +190,7 @@ msgstr "" "Valori pg_control indovinati:\n" "\n" -#: pg_resetxlog.c:543 +#: pg_resetxlog.c:549 #, c-format msgid "" "pg_control values:\n" @@ -208,192 +199,188 @@ msgstr "" "Valori pg_control:\n" "\n" -#: pg_resetxlog.c:552 +#: pg_resetxlog.c:558 #, c-format msgid "First log file ID after reset: %u\n" -msgstr "primo ID file di registro dopo il reset: %u\n" +msgstr "primo ID del file di log dopo il reset: %u\n" -#: pg_resetxlog.c:554 +#: pg_resetxlog.c:560 #, c-format msgid "First log file segment after reset: %u\n" -msgstr "primo segmento del file di log dopo il reset: %u\n" +msgstr "Primo segmento file di log dopo il reset: %u\n" -#: pg_resetxlog.c:556 +#: pg_resetxlog.c:562 #, c-format msgid "pg_control version number: %u\n" -msgstr "Numero versione pg_control: %u\n" +msgstr "Numero di versione di pg_control: %u\n" -#: pg_resetxlog.c:558 +#: pg_resetxlog.c:564 #, c-format msgid "Catalog version number: %u\n" -msgstr "Numero versione catalogo: %u\n" +msgstr "Numero di versione del catalogo: %u\n" -#: pg_resetxlog.c:560 +#: pg_resetxlog.c:566 #, c-format msgid "Database system identifier: %s\n" -msgstr "Identificatore sistema database: %s\n" +msgstr "Identificatore di sistema del database: %s\n" -#: pg_resetxlog.c:562 +#: pg_resetxlog.c:568 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" -msgstr "Ultimo TimeLineId del checkpoint: %u\n" +msgstr "TimeLineId dell'ultimo checkpoint: %u\n" -#: pg_resetxlog.c:564 +#: pg_resetxlog.c:570 #, c-format msgid "Latest checkpoint's NextXID: %u/%u\n" -msgstr "Ultimo checkpoint NextXID: %u%u\n" +msgstr "NextXID dell'ultimo checkpoint: %u%u\n" -#: pg_resetxlog.c:567 +#: pg_resetxlog.c:573 #, c-format msgid "Latest checkpoint's NextOID: %u\n" -msgstr "Ultimo checkpoint NextOID: %u\n" +msgstr "NextOID dell'ultimo checkpoint: %u\n" -#: pg_resetxlog.c:569 +#: pg_resetxlog.c:575 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" -msgstr "Ultimo checkpoint NextMultiXactId: %u\n" +msgstr "NextMultiXactId dell'ultimo checkpoint: %u\n" -#: pg_resetxlog.c:571 +#: pg_resetxlog.c:577 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" -msgstr "Ultimo checkpoint NextMultiOffset: %u\n" +msgstr "NextMultiOffset dell'ultimo checkpoint: %u\n" -#: pg_resetxlog.c:573 +#: pg_resetxlog.c:579 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" -msgstr "Ultimo checkpoint oldestXID: %u\n" +msgstr "oldestXID dell'ultimo checkpoint: %u\n" -#: pg_resetxlog.c:575 +#: pg_resetxlog.c:581 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" -msgstr "Ultimo checkpoint oldestXID del database: %u\n" +msgstr "DB dell'oldestXID dell'ultimo checkpoint: %u\n" -#: pg_resetxlog.c:577 +#: pg_resetxlog.c:583 +#, c-format +msgid "Latest checkpoint's oldestActiveXID: %u\n" +msgstr "oldestActiveXID dell'ultimo checkpoint: %u\n" + +#: pg_resetxlog.c:585 #, c-format msgid "Maximum data alignment: %u\n" -msgstr "Massimo allineamento dei dati: %u\n" +msgstr "Massimo allineamento dei dati: %u\n" -#: pg_resetxlog.c:580 +#: pg_resetxlog.c:588 #, c-format msgid "Database block size: %u\n" -msgstr "Dimensione blocco database: %u\n" +msgstr "Dimensione blocco database: %u\n" -#: pg_resetxlog.c:582 +#: pg_resetxlog.c:590 #, c-format msgid "Blocks per segment of large relation: %u\n" -msgstr "Blocchi per ogni segmento di una grossa relazione: %u\n" +msgstr "Blocchi per ogni segmento grosse tabelle: %u\n" -#: pg_resetxlog.c:584 +#: pg_resetxlog.c:592 #, c-format msgid "WAL block size: %u\n" -msgstr "Dimensione blocco WAL: %u\n" +msgstr "Dimensione blocco WAL: %u\n" -#: pg_resetxlog.c:586 +#: pg_resetxlog.c:594 #, c-format msgid "Bytes per WAL segment: %u\n" -msgstr "Byte per segmento WAL: %u\n" +msgstr "Byte per segmento WAL: %u\n" -#: pg_resetxlog.c:588 +#: pg_resetxlog.c:596 #, c-format msgid "Maximum length of identifiers: %u\n" -msgstr "Lunghezza massima degli identificatori: %u\n" +msgstr "Lunghezza massima degli identificatori: %u\n" -#: pg_resetxlog.c:590 +#: pg_resetxlog.c:598 #, c-format msgid "Maximum columns in an index: %u\n" -msgstr "Massimo numero di colonne in un indice: %u\n" +msgstr "Massimo numero di colonne in un indice: %u\n" -#: pg_resetxlog.c:592 +#: pg_resetxlog.c:600 #, c-format msgid "Maximum size of a TOAST chunk: %u\n" -msgstr "Massima dimensione di un TOAST chunk: %u\n" +msgstr "Massima dimensione di un segmento TOAST: %u\n" -#: pg_resetxlog.c:594 +#: pg_resetxlog.c:602 #, c-format msgid "Date/time type storage: %s\n" -msgstr "Tipo di immagazzinaggio per dati temporali (date/time): %s\n" +msgstr "Memorizzazione per tipi data/ora: %s\n" -#: pg_resetxlog.c:595 +#: pg_resetxlog.c:603 msgid "64-bit integers" -msgstr "Interi a 64 bit" +msgstr "interi a 64 bit" -#: pg_resetxlog.c:595 +#: pg_resetxlog.c:603 msgid "floating-point numbers" -msgstr "Numeri in virgola mobile" +msgstr "numeri in virgola mobile" -#: pg_resetxlog.c:596 +#: pg_resetxlog.c:604 #, c-format msgid "Float4 argument passing: %s\n" -msgstr "argomento passato di tipo float4: %s\n" +msgstr "Passaggio di argomenti Float4: %s\n" -#: pg_resetxlog.c:597 -#: pg_resetxlog.c:599 +#: pg_resetxlog.c:605 pg_resetxlog.c:607 msgid "by value" msgstr "per valore" -#: pg_resetxlog.c:597 -#: pg_resetxlog.c:599 +#: pg_resetxlog.c:605 pg_resetxlog.c:607 msgid "by reference" -msgstr "per reference" +msgstr "per riferimento" -#: pg_resetxlog.c:598 +#: pg_resetxlog.c:606 #, c-format msgid "Float8 argument passing: %s\n" -msgstr "argomento passato float8: %s\n" +msgstr "passaggio di argomenti Float8: %s\n" -#: pg_resetxlog.c:651 +#: pg_resetxlog.c:669 #, c-format msgid "%s: internal error -- sizeof(ControlFileData) is too large ... fix PG_CONTROL_SIZE\n" -msgstr "%s: errore interno -- sizeof(ControlFileData) è troppo grande ... sistemare PG_CONTROL_SIZE\n" +msgstr "%s: errore interno -- sizeof(ControlFileData) è troppo grande ... correggere PG_CONTROL_SIZE\n" -#: pg_resetxlog.c:666 +#: pg_resetxlog.c:684 #, c-format msgid "%s: could not create pg_control file: %s\n" -msgstr "%s: impossibile creare il file pg_control: %s\n" +msgstr "%s: creazione del file pg_control fallita: %s\n" -#: pg_resetxlog.c:677 +#: pg_resetxlog.c:695 #, c-format msgid "%s: could not write pg_control file: %s\n" -msgstr "%s: impossibile scrivere il file pg_control: %s\n" +msgstr "%s: scrittura del file pg_control fallita: %s\n" -#: pg_resetxlog.c:684 -#: pg_resetxlog.c:991 +#: pg_resetxlog.c:702 pg_resetxlog.c:1009 #, c-format msgid "%s: fsync error: %s\n" msgstr "%s: errore fsync: %s\n" -#: pg_resetxlog.c:722 -#: pg_resetxlog.c:797 -#: pg_resetxlog.c:853 +#: pg_resetxlog.c:740 pg_resetxlog.c:815 pg_resetxlog.c:871 #, c-format msgid "%s: could not open directory \"%s\": %s\n" -msgstr "%s: impossibile aprire la cartella \"%s\": %s\n" +msgstr "%s: apertura della directory \"%s\" fallita: %s\n" -#: pg_resetxlog.c:766 -#: pg_resetxlog.c:830 -#: pg_resetxlog.c:887 +#: pg_resetxlog.c:784 pg_resetxlog.c:848 pg_resetxlog.c:905 #, c-format msgid "%s: could not read from directory \"%s\": %s\n" -msgstr "%s: impossibile leggere dalla cartella \"%s\": %s\n" +msgstr "%s: lettura dalla directory \"%s\" fallita: %s\n" -#: pg_resetxlog.c:811 -#: pg_resetxlog.c:868 +#: pg_resetxlog.c:829 pg_resetxlog.c:886 #, c-format msgid "%s: could not delete file \"%s\": %s\n" -msgstr "%s: impossibile eliminare il file \"%s\": %s\n" +msgstr "%s: cancellazione del file \"%s\" fallita: %s\n" -#: pg_resetxlog.c:958 +#: pg_resetxlog.c:976 #, c-format msgid "%s: could not open file \"%s\": %s\n" -msgstr "%s: impossibile aprire il file \"%s\": %s\n" +msgstr "%s: apertura del file \"%s\" fallita: %s\n" -#: pg_resetxlog.c:969 -#: pg_resetxlog.c:983 +#: pg_resetxlog.c:987 pg_resetxlog.c:1001 #, c-format msgid "%s: could not write file \"%s\": %s\n" -msgstr "%s: impossibile scrivere sul file \"%s\": %s\n" +msgstr "%s: errore nella scrittura del file \"%s\": %s\n" -#: pg_resetxlog.c:1002 +#: pg_resetxlog.c:1020 #, c-format msgid "" "%s resets the PostgreSQL transaction log.\n" @@ -402,7 +389,7 @@ msgstr "" "%s riavvia il registro delle transazioni di PostgreSQL.\n" "\n" -#: pg_resetxlog.c:1003 +#: pg_resetxlog.c:1021 #, c-format msgid "" "Usage:\n" @@ -413,81 +400,70 @@ msgstr "" " %s [OPZIONI]... DATADIR\n" "\n" -#: pg_resetxlog.c:1004 +#: pg_resetxlog.c:1022 #, c-format msgid "Options:\n" msgstr "Opzioni:\n" -#: pg_resetxlog.c:1005 +#: pg_resetxlog.c:1023 #, c-format msgid " -e XIDEPOCH set next transaction ID epoch\n" -msgstr " -x XIDEPOCH imposta il prossimo ID di epoch\n" +msgstr " -e XIDEPOCH imposta il prossimo ID epoch transazione\n" -#: pg_resetxlog.c:1006 +#: pg_resetxlog.c:1024 #, c-format msgid " -f force update to be done\n" -msgstr " -f forza lesecuzione dell'aggiornamento\n" +msgstr " -f forza l'esecuzione dell'aggiornamento\n" -#: pg_resetxlog.c:1007 +#: pg_resetxlog.c:1025 #, c-format msgid " -l TLI,FILE,SEG force minimum WAL starting location for new transaction log\n" -msgstr " -l TLI,FILE,SEG forza il minimo punto d'inizio WAL per il nuovo log della transazione\n" +msgstr "" +" -l TLI,FILE,SEG forza il minimo punto d'inizio WAL per il nuovo log\n" +" delle transazione\n" -#: pg_resetxlog.c:1008 +#: pg_resetxlog.c:1026 #, c-format msgid " -m XID set next multitransaction ID\n" -msgstr " -m XID imposta il prossimo ID di multitransaction\n" +msgstr " -m XID imposta il prossimo ID multitransazione\n" -#: pg_resetxlog.c:1009 +#: pg_resetxlog.c:1027 #, c-format msgid " -n no update, just show extracted control values (for testing)\n" -msgstr " -n nessun aggiornamento, mostra solo i valori di controllo estrati (solo per prove)\n" +msgstr "" +" -n nessun aggiornamento, mostra solo i valori di controllo\n" +" estratti (solo per prova)\n" -#: pg_resetxlog.c:1010 +#: pg_resetxlog.c:1028 #, c-format msgid " -o OID set next OID\n" msgstr " -o OID imposta il prossimo OID\n" -#: pg_resetxlog.c:1011 +#: pg_resetxlog.c:1029 #, c-format msgid " -O OFFSET set next multitransaction offset\n" -msgstr " -O OFFSET imposta il prossimo multitransactio ID di transazione\n" +msgstr " -O OFFSET imposta il prossimo offset multitransazione\n" -#: pg_resetxlog.c:1012 +#: pg_resetxlog.c:1030 #, c-format msgid " -x XID set next transaction ID\n" msgstr " -x XID imposta il prossimo ID di transazione\n" -#: pg_resetxlog.c:1013 +#: pg_resetxlog.c:1031 #, c-format msgid " --help show this help, then exit\n" -msgstr " --help mostra questo aiuto, poi esci\n" +msgstr " --help mostra questo aiuto ed esci\n" -#: pg_resetxlog.c:1014 +#: pg_resetxlog.c:1032 #, c-format msgid " --version output version information, then exit\n" -msgstr " --version mostra informazioni sulla versione, poi esci\n" +msgstr " --version mostra informazioni sulla versione ed esci\n" -#: pg_resetxlog.c:1015 +#: pg_resetxlog.c:1033 #, c-format msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" -"Segnalare bachi a .\n" - -#~ msgid "%s: invalid LC_COLLATE setting\n" -#~ msgstr "%s: settaggio errato per LC_COLLATE\n" - -#~ msgid "%s: invalid LC_CTYPE setting\n" -#~ msgstr "%s: settaggio errato per LC_CTYPE\n" - -#~ msgid "Maximum number of function arguments: %u\n" -#~ msgstr "Numero massimo di parametri per una funzione: %u\n" - -#~ msgid "LC_COLLATE: %s\n" -#~ msgstr "LC_COLLATE: %s\n" - -#~ msgid "LC_CTYPE: %s\n" -#~ msgstr "LC_CTYPE: %s\n" +"Puoi segnalare eventuali bug a .\n" diff --git a/src/bin/pg_resetxlog/po/ja.po b/src/bin/pg_resetxlog/po/ja.po index 3b2e7e4fe5..817d06bd68 100644 --- a/src/bin/pg_resetxlog/po/ja.po +++ b/src/bin/pg_resetxlog/po/ja.po @@ -6,9 +6,10 @@ msgstr "" "Project-Id-Version: PostgreSQL 9.0 beta 3\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" "POT-Creation-Date: 2010-07-20 12:56+0900\n" -"PO-Revision-Date: 2010-07-17 18:07+0900\n" +"PO-Revision-Date: 2011-08-30 21:34+0900\n" "Last-Translator: HOTTA Michihide \n" "Language-Team: jpug-doc \n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -295,7 +296,7 @@ msgstr "日付/時刻型の格納方式 %s\n" #: pg_resetxlog.c:605 msgid "64-bit integers" -msgstr "64ビット整数\"" +msgstr "64ビット整数" #: pg_resetxlog.c:605 msgid "floating-point numbers" @@ -351,7 +352,7 @@ msgstr "%s: ディレクトリ\"%s\"をオープンできませんでした: %s\ #: pg_resetxlog.c:786 pg_resetxlog.c:850 pg_resetxlog.c:907 #, c-format msgid "%s: could not read from directory \"%s\": %s\n" -msgstr "%s: ディレクトリ%s\"から読み込めませんでした: %s\n" +msgstr "%s: ディレクトリ\"%s\"から読み込めませんでした: %s\n" #: pg_resetxlog.c:831 pg_resetxlog.c:888 #, c-format diff --git a/src/bin/pg_resetxlog/po/ko.po b/src/bin/pg_resetxlog/po/ko.po index 535f5e4f7c..7f7efb4166 100644 --- a/src/bin/pg_resetxlog/po/ko.po +++ b/src/bin/pg_resetxlog/po/ko.po @@ -9,6 +9,7 @@ msgstr "" "PO-Revision-Date: 2010-09-24 12:37-0400\n" "Last-Translator: EnterpriseDB translation team \n" "Language-Team: EnterpriseDB translation team \n" +"Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=euc-kr\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_resetxlog/po/pl.po b/src/bin/pg_resetxlog/po/pl.po new file mode 100644 index 0000000000..38f99c5697 --- /dev/null +++ b/src/bin/pg_resetxlog/po/pl.po @@ -0,0 +1,464 @@ +# pg_resetxlog message translation file for pg_resetxlog +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# +# Begina Felicysym , 2011. +msgid "" +msgstr "" +"Project-Id-Version: pg_resetxlog (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-09-29 22:55+0000\n" +"PO-Revision-Date: 2011-09-30 09:49-0300\n" +"Last-Translator: Begina Felicysym \n" +"Language-Team: Begina Felicysym\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1-beta1\n" + +#: pg_resetxlog.c:135 +#, c-format +msgid "%s: invalid argument for option -e\n" +msgstr "%s: niepoprawny argument dla opcji -e\n" + +#: pg_resetxlog.c:136 pg_resetxlog.c:151 pg_resetxlog.c:166 pg_resetxlog.c:181 +#: pg_resetxlog.c:196 pg_resetxlog.c:211 pg_resetxlog.c:218 pg_resetxlog.c:225 +#: pg_resetxlog.c:231 pg_resetxlog.c:239 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Spróbuj \"%s --help\" aby uzyskać więcej informacji.\n" + +#: pg_resetxlog.c:141 +#, c-format +msgid "%s: transaction ID epoch (-e) must not be -1\n" +msgstr "%s: epoka ID transakcji (-e) nie może być -1\n" + +#: pg_resetxlog.c:150 +#, c-format +msgid "%s: invalid argument for option -x\n" +msgstr "%s: niepoprawny argument dla opcji -x\n" + +#: pg_resetxlog.c:156 +#, c-format +msgid "%s: transaction ID (-x) must not be 0\n" +msgstr "%s: ID transakcji (-x) nie może być 0\n" + +#: pg_resetxlog.c:165 +#, c-format +msgid "%s: invalid argument for option -o\n" +msgstr "%s: niepoprawny argument dla opcji -o\n" + +#: pg_resetxlog.c:171 +#, c-format +msgid "%s: OID (-o) must not be 0\n" +msgstr "%s: OID (-o) nie może być 0\n" + +#: pg_resetxlog.c:180 +#, c-format +msgid "%s: invalid argument for option -m\n" +msgstr "%s: niepoprawny argument dla opcji -m\n" + +#: pg_resetxlog.c:186 +#, c-format +msgid "%s: multitransaction ID (-m) must not be 0\n" +msgstr "%s: ID multitransakcji (-m) nie może być 0\n" + +#: pg_resetxlog.c:195 +#, c-format +msgid "%s: invalid argument for option -O\n" +msgstr "%s: niepoprawny argument dla opcji -O\n" + +#: pg_resetxlog.c:201 +#, c-format +msgid "%s: multitransaction offset (-O) must not be -1\n" +msgstr "%s: offset multitransakcji (-O) nie może być -1\n" + +#: pg_resetxlog.c:210 pg_resetxlog.c:217 pg_resetxlog.c:224 +#, c-format +msgid "%s: invalid argument for option -l\n" +msgstr "%s: niepoprawny argument dla opcji -l\n" + +#: pg_resetxlog.c:238 +#, c-format +msgid "%s: no data directory specified\n" +msgstr "%s: katalog danych nie został ustawiony\n" + +#: pg_resetxlog.c:252 +#, c-format +msgid "%s: cannot be executed by \"root\"\n" +msgstr "%s: nie może być wykonywane pod \"rootem\"\n" + +#: pg_resetxlog.c:254 +#, c-format +msgid "You must run %s as the PostgreSQL superuser.\n" +msgstr "Musisz uruchomić %s jako superużytkownik PostgreSQL.\n" + +#: pg_resetxlog.c:264 +#, c-format +msgid "%s: could not change directory to \"%s\": %s\n" +msgstr "%s: nie można zmienić katalogu na \"%s\": %s\n" + +#: pg_resetxlog.c:279 pg_resetxlog.c:407 +#, 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" + +#: pg_resetxlog.c:285 +#, c-format +msgid "" +"%s: lock file \"%s\" exists\n" +"Is a server running? If not, delete the lock file and try again.\n" +msgstr "" +"%s: plik blokady \"%s\" istnieje\n" +"Czy serwer działa? Jeśli nie, usuń plik blokady i spróbuj ponownie.\n" + +#: pg_resetxlog.c:355 +#, c-format +msgid "" +"\n" +"If these values seem acceptable, use -f to force reset.\n" +msgstr "" +"\n" +"Jeśli te wartości wydają się do przyjęcia, użyj -f by wymusić reset.\n" + +#: pg_resetxlog.c:367 +#, c-format +msgid "" +"The database server was not shut down cleanly.\n" +"Resetting the transaction log might cause data to be lost.\n" +"If you want to proceed anyway, use -f to force reset.\n" +msgstr "" +"Serwer bazy danych nie został poprawnie zamknięty.\n" +"Zresetowanie dziennika transakcji może spowodować utratę danych.\n" +"Jeśli chcesz kontynuować, użyj -f, aby wymusić reset.\n" + +#: pg_resetxlog.c:381 +#, c-format +msgid "Transaction log reset\n" +msgstr "Reset dziennika transakcji\n" + +#: pg_resetxlog.c:410 +#, c-format +msgid "" +"If you are sure the data directory path is correct, execute\n" +" touch %s\n" +"and try again.\n" +msgstr "" +"Jeśli jesteś pewien, że ścieżka folder u jest poprawna, wykonaj\n" +" touch %s\n" +"i spróbuj ponownie.\n" + +#: pg_resetxlog.c:423 +#, c-format +msgid "%s: could not read file \"%s\": %s\n" +msgstr "%s: nie można odczytać z pliku \"%s\": %s\n" + +#: pg_resetxlog.c:446 +#, c-format +msgid "%s: pg_control exists but has invalid CRC; proceed with caution\n" +msgstr "%s: pg_control istnieje ale ma niepoprawne CRC; postępuj ostrożnie\n" + +#: pg_resetxlog.c:455 +#, c-format +msgid "%s: pg_control exists but is broken or unknown version; ignoring it\n" +msgstr "" +"%s: pg_control istnieje ale jest uszkodzony lub ma nieznaną wersję, " +"zignorowano\n" + +#: pg_resetxlog.c:549 +#, c-format +msgid "" +"Guessed pg_control values:\n" +"\n" +msgstr "" +"Odgadnięte wartości pg_control:\n" +"\n" + +#: pg_resetxlog.c:551 +#, c-format +msgid "" +"pg_control values:\n" +"\n" +msgstr "" +"wartości pg_control:\n" +"\n" + +#: pg_resetxlog.c:560 +#, c-format +msgid "First log file ID after reset: %u\n" +msgstr "Pierwszy plik dziennika po resecie: %u\n" + +#: pg_resetxlog.c:562 +#, c-format +msgid "First log file segment after reset: %u\n" +msgstr "Pierwszy segment pliku dziennika po resecie: %u\n" + +#: pg_resetxlog.c:564 +#, c-format +msgid "pg_control version number: %u\n" +msgstr "pg_control w wersji numer: %u\n" + +#: pg_resetxlog.c:566 +#, c-format +msgid "Catalog version number: %u\n" +msgstr "Katalog w wersji numer: %u\n" + +#: pg_resetxlog.c:568 +#, c-format +msgid "Database system identifier: %s\n" +msgstr "Identyfikator systemu bazy danych: %s\n" + +#: pg_resetxlog.c:570 +#, c-format +msgid "Latest checkpoint's TimeLineID: %u\n" +msgstr "TimeLineID najnowszego punktu kontrolnego: %u\n" + +#: pg_resetxlog.c:572 +#, c-format +msgid "Latest checkpoint's NextXID: %u/%u\n" +msgstr "NextXID najnowszego punktu kontrolnego: %u/%u\n" + +#: pg_resetxlog.c:575 +#, c-format +msgid "Latest checkpoint's NextOID: %u\n" +msgstr "NextOID najnowszego punktu kontrolnego: %u\n" + +#: pg_resetxlog.c:577 +#, c-format +msgid "Latest checkpoint's NextMultiXactId: %u\n" +msgstr "NextMultiXactId najnowszego punktu kontrolnego: %u\n" + +#: pg_resetxlog.c:579 +#, c-format +msgid "Latest checkpoint's NextMultiOffset: %u\n" +msgstr "NextMultiOffset najnowszego punktu kontrolnego: %u\n" + +#: pg_resetxlog.c:581 +#, c-format +msgid "Latest checkpoint's oldestXID: %u\n" +msgstr "oldestXID najnowszego punktu kontrolnego: %u\n" + +#: pg_resetxlog.c:583 +#, c-format +msgid "Latest checkpoint's oldestXID's DB: %u\n" +msgstr "DB oldestXID'u najnowszego punktu kontrolnego: %u\n" + +#: pg_resetxlog.c:585 +#, c-format +msgid "Latest checkpoint's oldestActiveXID: %u\n" +msgstr "NextXID najnowszego punktu kontrolnego: %u\n" + +#: pg_resetxlog.c:587 +#, c-format +msgid "Maximum data alignment: %u\n" +msgstr "Maksymalne wyrównanie danych: %u\n" + +#: pg_resetxlog.c:590 +#, c-format +msgid "Database block size: %u\n" +msgstr "Wielkość bloku bazy danych: %u\n" + +#: pg_resetxlog.c:592 +#, c-format +msgid "Blocks per segment of large relation: %u\n" +msgstr "Bloki na segment są w relacji: %u\n" + +#: pg_resetxlog.c:594 +#, c-format +msgid "WAL block size: %u\n" +msgstr "Wielkość bloku WAL: %u\n" + +#: pg_resetxlog.c:596 +#, c-format +msgid "Bytes per WAL segment: %u\n" +msgstr "Bajtów na segment WAL: %u\n" + +#: pg_resetxlog.c:598 +#, c-format +msgid "Maximum length of identifiers: %u\n" +msgstr "Maksymalna długość identyfikatorów: %u\n" + +#: pg_resetxlog.c:600 +#, c-format +msgid "Maximum columns in an index: %u\n" +msgstr "Maksymalna liczba kolumn w indeksie: %u\n" + +#: pg_resetxlog.c:602 +#, c-format +msgid "Maximum size of a TOAST chunk: %u\n" +msgstr "Maksymalny rozmiar fragmentu TOAST: %u\n" + +#: pg_resetxlog.c:604 +#, c-format +msgid "Date/time type storage: %s\n" +msgstr "Typ przechowywania daty/czasu: %s\n" + +#: pg_resetxlog.c:605 +msgid "64-bit integers" +msgstr "64-bit'owe zmienne integer" + +#: pg_resetxlog.c:605 +msgid "floating-point numbers" +msgstr "liczby zmiennoprzecinkowe" + +#: pg_resetxlog.c:606 +#, c-format +msgid "Float4 argument passing: %s\n" +msgstr "Przekazywanie parametru float4: %s\n" + +#: pg_resetxlog.c:607 pg_resetxlog.c:609 +msgid "by value" +msgstr "przez wartość" + +#: pg_resetxlog.c:607 pg_resetxlog.c:609 +msgid "by reference" +msgstr "przez referencję" + +#: pg_resetxlog.c:608 +#, c-format +msgid "Float8 argument passing: %s\n" +msgstr "Przekazywanie parametru float8: %s\n" + +#: pg_resetxlog.c:671 +#, c-format +msgid "" +"%s: internal error -- sizeof(ControlFileData) is too large ... fix " +"PG_CONTROL_SIZE\n" +msgstr "" +"%s: błąd wewnętrzny -- sizeof(ControlFileData) jest zbyt duża ... popraw " +"PG_CONTROL_SIZE\n" + +#: pg_resetxlog.c:686 +#, c-format +msgid "%s: could not create pg_control file: %s\n" +msgstr "%s: nie można utworzyć pliku pg_control: %s\n" + +#: pg_resetxlog.c:697 +#, c-format +msgid "%s: could not write pg_control file: %s\n" +msgstr "%s: nie można pisać do pliku pg_control: %s\n" + +#: pg_resetxlog.c:704 pg_resetxlog.c:1011 +#, c-format +msgid "%s: fsync error: %s\n" +msgstr "%s: błąd fsync: %s\n" + +#: pg_resetxlog.c:742 pg_resetxlog.c:817 pg_resetxlog.c:873 +#, c-format +msgid "%s: could not open directory \"%s\": %s\n" +msgstr "%s: nie można otworzyć katalogu \"%s\": %s\n" + +#: pg_resetxlog.c:786 pg_resetxlog.c:850 pg_resetxlog.c:907 +#, c-format +msgid "%s: could not read from directory \"%s\": %s\n" +msgstr "%s: nie można odczytać katalogu \"%s\": %s\n" + +#: pg_resetxlog.c:831 pg_resetxlog.c:888 +#, c-format +msgid "%s: could not delete file \"%s\": %s\n" +msgstr "%s: nie można usunąć pliku \"%s\": %s\n" + +#: pg_resetxlog.c:978 +#, c-format +msgid "%s: could not open file \"%s\": %s\n" +msgstr "%s: nie można otworzyć pliku \"%s\": %s\n" + +#: pg_resetxlog.c:989 pg_resetxlog.c:1003 +#, c-format +msgid "%s: could not write file \"%s\": %s\n" +msgstr "%s: nie można zapisać pliku \"%s\": %s\n" + +#: pg_resetxlog.c:1022 +#, c-format +msgid "" +"%s resets the PostgreSQL transaction log.\n" +"\n" +msgstr "" +"%s resetuje log transakcji PostgreSQL.\n" +"\n" + +#: pg_resetxlog.c:1023 +#, c-format +msgid "" +"Usage:\n" +" %s [OPTION]... DATADIR\n" +"\n" +msgstr "" +"Sposób użycia:\n" +" %s [OPCJA]... FOLDERDANYCH\n" +"\n" + +#: pg_resetxlog.c:1024 +#, c-format +msgid "Options:\n" +msgstr "Opcje:\n" + +#: pg_resetxlog.c:1025 +#, c-format +msgid " -e XIDEPOCH set next transaction ID epoch\n" +msgstr " -e XIDEPOCH ustawia epokę ID następnej transakcji ID\n" + +#: pg_resetxlog.c:1026 +#, c-format +msgid " -f force update to be done\n" +msgstr " -f wymusza wykonanie modyfikacji\n" + +#: pg_resetxlog.c:1027 +#, c-format +msgid "" +" -l TLI,FILE,SEG force minimum WAL starting location for new transaction " +"log\n" +msgstr "" +" -l TLI,FILE,SEG wymusza minimalne położenie początkowe WAL dla nowego " +"komunikatu transakcji\n" + +#: pg_resetxlog.c:1028 +#, c-format +msgid " -m XID set next multitransaction ID\n" +msgstr " -m XID ustawia ID następnej multitransakcji\n" + +#: pg_resetxlog.c:1029 +#, c-format +msgid "" +" -n no update, just show extracted control values (for " +"testing)\n" +msgstr "" +" -n bez modyfikacji, po prostu wyświetl wyodrębnione wartości " +"kontrolne (do testowania)\n" + +#: pg_resetxlog.c:1030 +#, c-format +msgid " -o OID set next OID\n" +msgstr " -o OID ustawia następny OID\n" + +#: pg_resetxlog.c:1031 +#, c-format +msgid " -O OFFSET set next multitransaction offset\n" +msgstr " -O OFFSET ustawia następny offset multitransakcji\n" + +#: pg_resetxlog.c:1032 +#, c-format +msgid " -x XID set next transaction ID\n" +msgstr " -x XID ustawia ID następnej transakcji\n" + +#: pg_resetxlog.c:1033 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help pokazuje ten ekran pomocy i kończy\n" + +#: pg_resetxlog.c:1034 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version pokazuje informacje o wersji i kończy\n" + +#: pg_resetxlog.c:1035 +#, c-format +msgid "" +"\n" +"Report bugs to .\n" +msgstr "" +"\n" +"Błędy proszę przesyłać na adres .\n" diff --git a/src/bin/pg_resetxlog/po/pt_BR.po b/src/bin/pg_resetxlog/po/pt_BR.po index 2c1122927f..556498191d 100644 --- a/src/bin/pg_resetxlog/po/pt_BR.po +++ b/src/bin/pg_resetxlog/po/pt_BR.po @@ -3,11 +3,11 @@ # This file is distributed under the same license as the PostgreSQL package. # Cesar Suga , 2002. # Roberto Mello , 2002. -# Euler Taveira de Oliveira , 2003-2010. +# Euler Taveira de Oliveira , 2003-2011. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" "POT-Creation-Date: 2010-07-08 21:12-0300\n" "PO-Revision-Date: 2005-10-04 22:55-0300\n" diff --git a/src/bin/pg_resetxlog/po/ro.po b/src/bin/pg_resetxlog/po/ro.po index 3e860915b7..1cba2f362f 100644 --- a/src/bin/pg_resetxlog/po/ro.po +++ b/src/bin/pg_resetxlog/po/ro.po @@ -9,6 +9,7 @@ msgstr "" "PO-Revision-Date: 2010-09-05 16:06-0000\n" "Last-Translator: Max \n" "Language-Team: Română \n" +"Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_resetxlog/po/ru.po b/src/bin/pg_resetxlog/po/ru.po index 2620f1ca6e..3ecc57bf77 100644 --- a/src/bin/pg_resetxlog/po/ru.po +++ b/src/bin/pg_resetxlog/po/ru.po @@ -1,469 +1,487 @@ # ru.po -# PG_RESETXLOG Translated Messages into the Russian Language (KOI8-R) +# PG_RESETXLOG Translated Messages into the Russian Language (UTF-8) # # Copyright (c) 2002-2005 Serguei A. Mokhov, mokhov@cs.concordia.ca +# Copyright (c) 2012 Alexander Lakhin, exclusion@gmail.com # Distributed under the same licensing terms as PostgreSQL itself. # # pgtranslation Id: pg_resetxlog.po,v 1.3 2009/10/14 21:08:40 petere Exp $ # # translation of subject-specific terminology, see: -# ������� ��������� ����������� ��������: +# перевод некоторых специфичных терминов: # http://wiki.postgresql.org/wiki/NLS/ru/dict # # ChangeLog: -# - March 27, 2009: complete translation for 8.3, Sergey Burladyan -# - January 17, 2005: Complete translation for 8.0, Serguei A. Mokhov -# - December, 2004: Corrections and improvements by Oleg Bartunov -# - April 6 - August 11, 2004: Updates for 8.0; -# - July 24 - August 23, 2003: Updates for 7.4.*; -# - October 12, 2002: Complete post-7.3beta2 Translation, Serguei A. Mokhov -# - September 7, 2002: Complete post-7.3beta1 Translation, Serguei A. Mokhov -# - August 31, 2002: Initial Translation, Serguei A. Mokhov # +# - April 2, 2012: Bug fixes. Alexander Lakhin . +# - February 18, 2012: Complete translation for 9.1. Alexander Lakhin . +# - March 27, 2009: complete translation for 8.3, Sergey Burladyan . +# - January 17, 2005: Complete translation for 8.0, Serguei A. Mokhov . +# - December, 2004: Corrections and improvements by Oleg Bartunov . +# - April 6 - August 11, 2004: Updates for 8.0; . +# - July 24 - August 23, 2003: Updates for 7.4.*; . +# - October 12, 2002: Complete post-7.3beta2 Translation, Serguei A. Mokhov . +# - September 7, 2002: Complete post-7.3beta1 Translation, Serguei A. Mokhov . +# - August 31, 2002: Initial Translation, Serguei A. Mokhov . msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 8.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-01-16 09:17+0000\n" -"PO-Revision-Date: 2009-03-29 09:46+0400\n" -"Last-Translator: Serguei A. Mokhov \n" -"Language-Team: pgsql-rus \n" +"Project-Id-Version: PostgreSQL 9.1\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2012-07-10 22:27+0000\n" +"PO-Revision-Date: 2012-04-02 19:16+0400\n" +"Last-Translator: Alexander Lakhin \n" +"Language-Team: Russian \n" +"Language: ru\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=koi8-r\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Lokalize 1.4\n" -#: pg_resetxlog.c:126 +#: pg_resetxlog.c:135 #, c-format msgid "%s: invalid argument for option -e\n" -msgstr "%s: ������������ �������� ��� ����� -e\n" +msgstr "%s: недопустимый аргумент параметра -e\n" -#: pg_resetxlog.c:127 pg_resetxlog.c:142 pg_resetxlog.c:157 pg_resetxlog.c:172 -#: pg_resetxlog.c:187 pg_resetxlog.c:202 pg_resetxlog.c:209 pg_resetxlog.c:216 -#: pg_resetxlog.c:222 pg_resetxlog.c:230 +#: pg_resetxlog.c:136 pg_resetxlog.c:151 pg_resetxlog.c:166 pg_resetxlog.c:181 +#: pg_resetxlog.c:196 pg_resetxlog.c:211 pg_resetxlog.c:218 pg_resetxlog.c:225 +#: pg_resetxlog.c:231 pg_resetxlog.c:239 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "�������� \"%s --help\" ��� ����� ��������� ����������.\n" +msgstr "Для дополнительной информации попробуйте \"%s --help\".\n" -#: pg_resetxlog.c:132 +#: pg_resetxlog.c:141 #, c-format msgid "%s: transaction ID epoch (-e) must not be -1\n" -msgstr "%s: ����� ID ���������� (-e) �� ������ ���� -1\n" +msgstr "%s: эпоха ID транзакции (-e) не должна быть равна -1\n" -#: pg_resetxlog.c:141 +#: pg_resetxlog.c:150 #, c-format msgid "%s: invalid argument for option -x\n" -msgstr "%s: ������������ �������� ��� ����� -x\n" +msgstr "%s: недопустимый аргумент параметра -x\n" -#: pg_resetxlog.c:147 +#: pg_resetxlog.c:156 #, c-format msgid "%s: transaction ID (-x) must not be 0\n" -msgstr "%s: ID ���������� (-x) �� ������ ���� 0\n" +msgstr "%s: ID транзакции (-x) не должен быть равен 0\n" -#: pg_resetxlog.c:156 +#: pg_resetxlog.c:165 #, c-format msgid "%s: invalid argument for option -o\n" -msgstr "%s: ��������� �������� ��� ����� -o\n" +msgstr "%s: недопустимый аргумент параметра -o\n" -#: pg_resetxlog.c:162 +#: pg_resetxlog.c:171 #, c-format msgid "%s: OID (-o) must not be 0\n" -msgstr "%s: OID (-o) �� ������ ���� 0\n" +msgstr "%s: OID (-o) не должен быть равен 0\n" -#: pg_resetxlog.c:171 +#: pg_resetxlog.c:180 #, c-format msgid "%s: invalid argument for option -m\n" -msgstr "%s: ������������ �������� ��� ����� -m\n" +msgstr "%s: недопустимый аргумент параметра -m\n" -#: pg_resetxlog.c:177 +#: pg_resetxlog.c:186 #, c-format msgid "%s: multitransaction ID (-m) must not be 0\n" -msgstr "%s: ID ���������������� (-m) �� ������ ���� 0\n" +msgstr "%s: ID мультитранзакции (-m) не должен быть равен 0\n" -#: pg_resetxlog.c:186 +#: pg_resetxlog.c:195 #, c-format msgid "%s: invalid argument for option -O\n" -msgstr "%s: ������������ �������� ��� ����� -O\n" +msgstr "%s: недопустимый аргумент параметра -O\n" -#: pg_resetxlog.c:192 +#: pg_resetxlog.c:201 #, c-format msgid "%s: multitransaction offset (-O) must not be -1\n" -msgstr "%s: �������� ���������������� (-O) �� ������ ���� -1\n" +msgstr "%s: смещение мультитранзакции (-O) не должно быть равно -1\n" -#: pg_resetxlog.c:201 pg_resetxlog.c:208 pg_resetxlog.c:215 +#: pg_resetxlog.c:210 pg_resetxlog.c:217 pg_resetxlog.c:224 #, c-format msgid "%s: invalid argument for option -l\n" -msgstr "%s: ��������� �������� ��� ����� -l\n" +msgstr "%s: недопустимый аргумента параметра -l\n" -#: pg_resetxlog.c:229 +#: pg_resetxlog.c:238 #, c-format msgid "%s: no data directory specified\n" -msgstr "%s: �� ������� ���������� ������\n" +msgstr "%s: каталог данных не указан\n" -#: pg_resetxlog.c:243 +#: pg_resetxlog.c:252 #, c-format msgid "%s: cannot be executed by \"root\"\n" -msgstr "%s: �� ����� ����������� \"root\"��\n" +msgstr "%s: программу не должен запускать root\n" -#: pg_resetxlog.c:245 +#: pg_resetxlog.c:254 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" -msgstr "�� ������ ��������� %s ��� ������������� PostgreSQL.\n" +msgstr "Запускать %s нужно от имени суперпользователя PostgreSQL.\n" -#: pg_resetxlog.c:255 +#: pg_resetxlog.c:264 #, c-format msgid "%s: could not change directory to \"%s\": %s\n" -msgstr "%s: �� ������� ������� ���������� \"%s\": %s\n" +msgstr "%s: не удалось перейти в каталог \"%s\": %s\n" -#: pg_resetxlog.c:270 pg_resetxlog.c:383 +#: pg_resetxlog.c:279 pg_resetxlog.c:407 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" -msgstr "%s: �� ������� ������� ���� \"%s\" ��� ������: %s\n" +msgstr "%s: не удалось открыть файл \"%s\" для чтения: %s\n" -#: pg_resetxlog.c:276 +#: pg_resetxlog.c:285 #, c-format msgid "" "%s: lock file \"%s\" exists\n" "Is a server running? If not, delete the lock file and try again.\n" msgstr "" -"%s: ��������� lock-���� \"%s\"\n" -"������� �� ������? ���� ���, ������� ���� ���� � ���������� �����.\n" +"%s: обнаружен файл блокировки \"%s\"\n" +"Возможно, сервер запущен? Если нет, удалите этот файл и попробуйте снова.\n" -#: pg_resetxlog.c:332 +#: pg_resetxlog.c:355 #, c-format msgid "" "\n" "If these values seem acceptable, use -f to force reset.\n" msgstr "" "\n" -"���� ��� �������� �������� �����������, ����������� -f ��� ��������������� " -"������.\n" +"Если эти значения приемлемы, выполните сброс принудительно, добавив ключ -" +"f.\n" -#: pg_resetxlog.c:344 +#: pg_resetxlog.c:367 #, c-format msgid "" "The database server was not shut down cleanly.\n" "Resetting the transaction log might cause data to be lost.\n" "If you want to proceed anyway, use -f to force reset.\n" msgstr "" -"������ ��� ������ �� ��� ��������� ����������.\n" -"����� ������� ���������� ����� �������� � ������ ������.\n" -"���� �� �ӣ �� ������ ���������� �� ������ �� ���, ����������� -f ��� ��������������� ������.\n" +"Сервер баз данных был остановлен некорректно.\n" +"Сброс журнала транзакций может привести к потере данных.\n" +"Если вы хотите сбросить его, несмотря на это, добавьте ключ -f.\n" -#: pg_resetxlog.c:357 +#: pg_resetxlog.c:381 #, c-format msgid "Transaction log reset\n" -msgstr "������ ���������� �������\n" +msgstr "Журнал транзакций сброшен\n" -#: pg_resetxlog.c:386 +#: pg_resetxlog.c:410 #, c-format msgid "" "If you are sure the data directory path is correct, execute\n" " touch %s\n" "and try again.\n" msgstr "" -"���� �� �������, ��� ���� � ���������� ������ ����������, ��������\n" +"Если вы уверены, что путь к каталогу данных правильный, выполните\n" " touch %s\n" -"� ���������� �����.\n" +"и повторите попытку.\n" -#: pg_resetxlog.c:399 +#: pg_resetxlog.c:423 #, c-format msgid "%s: could not read file \"%s\": %s\n" -msgstr "%s: �� ������� ������� ���� \"%s\": %s\n" +msgstr "%s: не удалось прочитать файл \"%s\": %s\n" -#: pg_resetxlog.c:422 +#: pg_resetxlog.c:446 #, c-format msgid "%s: pg_control exists but has invalid CRC; proceed with caution\n" msgstr "" -"%s: pg_control ����������, �� ��� ����������� ����� CRC �������; ����������� " -"� �������������\n" +"%s: pg_control существует, но его контрольная сумма неверна; продолжайте с " +"осторожностью\n" -#: pg_resetxlog.c:431 +#: pg_resetxlog.c:455 #, c-format msgid "%s: pg_control exists but is broken or unknown version; ignoring it\n" msgstr "" -"%s: pg_control ����������, �� ������ģ� ��� ����������� ������; " -"������������...\n" - -#: pg_resetxlog.c:499 -#, c-format -msgid "%s: invalid LC_COLLATE setting\n" -msgstr "%s: ��������� �������� LC_COLLATE\n" +"%s: pg_control испорчен или имеет неизвестную версию; игнорируется...\n" -#: pg_resetxlog.c:506 -#, c-format -msgid "%s: invalid LC_CTYPE setting\n" -msgstr "%s: ��������� �������� LC_CTYPE\n" - -#: pg_resetxlog.c:530 +#: pg_resetxlog.c:549 #, c-format msgid "" "Guessed pg_control values:\n" "\n" msgstr "" -"��������� �������� pg_control:\n" +"Предлагаемые значения pg_control:\n" "\n" -#: pg_resetxlog.c:532 +#: pg_resetxlog.c:551 #, c-format msgid "" "pg_control values:\n" "\n" msgstr "" -"�������� pg_control:\n" +"значения pg_control:\n" "\n" -#: pg_resetxlog.c:541 +#: pg_resetxlog.c:560 #, c-format msgid "First log file ID after reset: %u\n" -msgstr "������ ID ����� ������� ����� ������: %u\n" +msgstr "ID первого журнала после сброса: %u\n" -#: pg_resetxlog.c:543 +#: pg_resetxlog.c:562 #, c-format msgid "First log file segment after reset: %u\n" -msgstr "������ ������� ����� ������� ����� ������: %u\n" +msgstr "Сегмент первого журнала после сброса: %u\n" -#: pg_resetxlog.c:545 +#: pg_resetxlog.c:564 #, c-format msgid "pg_control version number: %u\n" -msgstr "����� ������ pg_control: %u\n" +msgstr "Номер версии pg_control: %u\n" -#: pg_resetxlog.c:547 +#: pg_resetxlog.c:566 #, c-format msgid "Catalog version number: %u\n" -msgstr "����� ������ ��������: %u\n" +msgstr "Номер версии каталога: %u\n" -#: pg_resetxlog.c:549 +#: pg_resetxlog.c:568 #, c-format msgid "Database system identifier: %s\n" -msgstr "������������� ������� ��� ������: %s\n" +msgstr "Идентификатор системы баз данных: %s\n" -#: pg_resetxlog.c:551 +#: pg_resetxlog.c:570 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" -msgstr "TimeLineID ��������� ����������� �����: %u\n" +msgstr "Линия времени последней конт. точки: %u\n" -#: pg_resetxlog.c:553 +#: pg_resetxlog.c:572 #, c-format msgid "Latest checkpoint's NextXID: %u/%u\n" -msgstr "NextXID ��������� ����������� �����: %u/%u\n" +msgstr "NextXID последней конт. точки: %u/%u\n" -#: pg_resetxlog.c:556 +#: pg_resetxlog.c:575 #, c-format msgid "Latest checkpoint's NextOID: %u\n" -msgstr "NextOID ��������� ����������� �����: %u\n" +msgstr "NextOID последней конт. точки: %u\n" -#: pg_resetxlog.c:558 +#: pg_resetxlog.c:577 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" -msgstr "NextMultiXactId ��������� ����������� �����: %u\n" +msgstr "NextMultiXactId послед. конт. точки: %u\n" -#: pg_resetxlog.c:560 +#: pg_resetxlog.c:579 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" -msgstr "NextMultiOffset ��������� ����������� �����: %u\n" +msgstr "NextMultiOffset послед. конт. точки: %u\n" -#: pg_resetxlog.c:562 +#: pg_resetxlog.c:581 +#, c-format +msgid "Latest checkpoint's oldestXID: %u\n" +msgstr "oldestXID последней конт. точки: %u\n" + +#: pg_resetxlog.c:583 +#, c-format +msgid "Latest checkpoint's oldestXID's DB: %u\n" +msgstr "БД с oldestXID последней конт. точки: %u\n" + +#: pg_resetxlog.c:585 +#, c-format +msgid "Latest checkpoint's oldestActiveXID: %u\n" +msgstr "oldestActiveXID последней к.т.: %u\n" + +#: pg_resetxlog.c:587 #, c-format msgid "Maximum data alignment: %u\n" -msgstr "������������ ������ ������������ ������: %u\n" +msgstr "Макс. предел выравнивания данных: %u\n" -#: pg_resetxlog.c:565 +#: pg_resetxlog.c:590 #, c-format msgid "Database block size: %u\n" -msgstr "������ ����� ����: %u\n" +msgstr "Размер блока БД: %u\n" -#: pg_resetxlog.c:567 +#: pg_resetxlog.c:592 #, c-format msgid "Blocks per segment of large relation: %u\n" -msgstr "������ �� ������� �������� ���������: %u\n" +msgstr "Блоков в макс. сегменте отношений: %u\n" -#: pg_resetxlog.c:569 +#: pg_resetxlog.c:594 #, c-format msgid "WAL block size: %u\n" -msgstr "������ ����� WAL: %u\n" +msgstr "Размер блока WAL: %u\n" -#: pg_resetxlog.c:571 +#: pg_resetxlog.c:596 #, c-format msgid "Bytes per WAL segment: %u\n" -msgstr "���� �� ������� WAL: %u\n" +msgstr "Байт в сегменте WAL: %u\n" -#: pg_resetxlog.c:573 +#: pg_resetxlog.c:598 #, c-format msgid "Maximum length of identifiers: %u\n" -msgstr "������������ ����� ���������������: %u\n" +msgstr "Максимальная длина идентификаторов: %u\n" -#: pg_resetxlog.c:575 +#: pg_resetxlog.c:600 #, c-format msgid "Maximum columns in an index: %u\n" -msgstr "������������ ����� ������� � �������: %u\n" +msgstr "Максимальное число колонок в индексе: %u\n" -#: pg_resetxlog.c:577 +#: pg_resetxlog.c:602 #, c-format msgid "Maximum size of a TOAST chunk: %u\n" -msgstr "������������ ������ ������ TOAST: %u\n" +msgstr "Максимальный размер порции TOAST: %u\n" -#: pg_resetxlog.c:579 +#: pg_resetxlog.c:604 #, c-format msgid "Date/time type storage: %s\n" -msgstr "��� �������� ����/�������: %s\n" +msgstr "Формат хранения даты/времени: %s\n" -#: pg_resetxlog.c:580 +#: pg_resetxlog.c:605 msgid "64-bit integers" -msgstr "64-������ �����" +msgstr "64-битные целые" -#: pg_resetxlog.c:580 +#: pg_resetxlog.c:605 msgid "floating-point numbers" -msgstr "��������� �������" +msgstr "числа с плавающей точкой" -#: pg_resetxlog.c:581 +#: pg_resetxlog.c:606 #, c-format -msgid "Maximum length of locale name: %u\n" -msgstr "������������ ����� ����� ������: %u\n" +msgid "Float4 argument passing: %s\n" +msgstr "Передача аргумента Float4: %s\n" -#: pg_resetxlog.c:583 -#, c-format -msgid "LC_COLLATE: %s\n" -msgstr "LC_COLLATE: %s\n" +#: pg_resetxlog.c:607 pg_resetxlog.c:609 +msgid "by value" +msgstr "по значению" -#: pg_resetxlog.c:585 +#: pg_resetxlog.c:607 pg_resetxlog.c:609 +msgid "by reference" +msgstr "по ссылке" + +#: pg_resetxlog.c:608 #, c-format -msgid "LC_CTYPE: %s\n" -msgstr "LC_CTYPE: %s\n" +msgid "Float8 argument passing: %s\n" +msgstr "Передача аргумента Float8: %s\n" -#: pg_resetxlog.c:636 +#: pg_resetxlog.c:671 #, c-format msgid "" "%s: internal error -- sizeof(ControlFileData) is too large ... fix " "PG_CONTROL_SIZE\n" -msgstr "%s: ���������� ������ -- sizeof(ControlFileData) ������� ����� ... ��������� PG_CONTROL_SIZE\n" +msgstr "" +"%s: внутренняя ошибка -- размер ControlFileData слишком велик -- исправьте " +"PG_CONTROL_SIZE\n" -#: pg_resetxlog.c:651 +#: pg_resetxlog.c:686 #, c-format msgid "%s: could not create pg_control file: %s\n" -msgstr "%s: �� ������� ������� ���� pg_control: %s\n" +msgstr "%s: не удалось создать файл pg_control: %s\n" -#: pg_resetxlog.c:662 +#: pg_resetxlog.c:697 #, c-format msgid "%s: could not write pg_control file: %s\n" -msgstr "%s: �� ������� �������� � ���� pg_control: %s\n" +msgstr "%s: не удалось записать файл pg_control: %s\n" -#: pg_resetxlog.c:669 pg_resetxlog.c:919 +#: pg_resetxlog.c:704 pg_resetxlog.c:1011 #, c-format msgid "%s: fsync error: %s\n" -msgstr "%s: ������ fsync: %s\n" +msgstr "%s: ошибка синхронизации с ФС: %s\n" -#: pg_resetxlog.c:707 pg_resetxlog.c:782 +#: pg_resetxlog.c:742 pg_resetxlog.c:817 pg_resetxlog.c:873 #, c-format msgid "%s: could not open directory \"%s\": %s\n" -msgstr "%s: �� ������� ������� ���������� \"%s\": %s\n" +msgstr "%s: не удалось открыть каталог \"%s\": %s\n" -#: pg_resetxlog.c:751 pg_resetxlog.c:815 +#: pg_resetxlog.c:786 pg_resetxlog.c:850 pg_resetxlog.c:907 #, c-format msgid "%s: could not read from directory \"%s\": %s\n" -msgstr "%s: �� ������� ������� �� ���������� \"%s\": %s\n" +msgstr "%s: не удалось прочитать каталог \"%s\": %s\n" -#: pg_resetxlog.c:796 +#: pg_resetxlog.c:831 pg_resetxlog.c:888 #, c-format msgid "%s: could not delete file \"%s\": %s\n" -msgstr "%s: �� ������� ������� ���� \"%s\": %s\n" +msgstr "%s: ошибка при удалении файла \"%s\": %s\n" -#: pg_resetxlog.c:886 +#: pg_resetxlog.c:978 #, c-format msgid "%s: could not open file \"%s\": %s\n" -msgstr "%s: �� ������� ������� ���� \"%s\": %s\n" +msgstr "%s: не удалось открыть файл \"%s\": %s\n" -#: pg_resetxlog.c:897 pg_resetxlog.c:911 +#: pg_resetxlog.c:989 pg_resetxlog.c:1003 #, c-format msgid "%s: could not write file \"%s\": %s\n" -msgstr "%s: �� ������� �������� ���� \"%s\": %s\n" +msgstr "%s: не удалось записать файл \"%s\": %s\n" -#: pg_resetxlog.c:930 +#: pg_resetxlog.c:1022 #, c-format msgid "" "%s resets the PostgreSQL transaction log.\n" "\n" -msgstr "%s ���������� ������ ���������� PostgreSQL.\n\n" +msgstr "" +"%s сбрасывает журнал транзакций PostgreSQL.\n" +"\n" -#: pg_resetxlog.c:931 +#: pg_resetxlog.c:1023 #, c-format msgid "" "Usage:\n" " %s [OPTION]... DATADIR\n" "\n" msgstr "" -"�������������:\n" -" %s [�����]... ����������-������\n" +"Использование:\n" +" %s [ПАРАМЕТР]... КАТАЛОГ_ДАННЫХ\n" "\n" -#: pg_resetxlog.c:932 +#: pg_resetxlog.c:1024 #, c-format msgid "Options:\n" -msgstr "�����:\n" +msgstr "Параметры:\n" -#: pg_resetxlog.c:933 +#: pg_resetxlog.c:1025 +#, c-format +msgid " -e XIDEPOCH set next transaction ID epoch\n" +msgstr " -e XIDEPOCH задать эпоху в ID следующей транзакции\n" + +#: pg_resetxlog.c:1026 #, c-format msgid " -f force update to be done\n" -msgstr " -f �������������� ���������� ����������\n" +msgstr " -f принудительное выполнение операции\n" -#: pg_resetxlog.c:934 +#: pg_resetxlog.c:1027 #, c-format msgid "" " -l TLI,FILE,SEG force minimum WAL starting location for new transaction " "log\n" -msgstr " -l TLI,����,��� ��������� ����������� ��������� ��������� �������� WAL ��� ������ ������� ����������\n" +msgstr "" +" -l TLI,ФАЙЛ,СЕГ задать минимальное начальное положение WAL для нового " +"журнала\n" +" транзакций\n" -#: pg_resetxlog.c:935 +#: pg_resetxlog.c:1028 #, c-format msgid " -m XID set next multitransaction ID\n" -msgstr " -m XID ������ ID ��������� ����������������\n" +msgstr " -m XID задать ID следующей мультитранзакции\n" -#: pg_resetxlog.c:936 +#: pg_resetxlog.c:1029 #, c-format msgid "" " -n no update, just show extracted control values (for " "testing)\n" msgstr "" -" -n ��� ����������, ������ �������� ����������� ����������� " -"�������� (��� ������������)\n" +" -n ничего не делать, только показать извлечённые значения\n" +" параметров (для проверки)\n" -#: pg_resetxlog.c:937 +#: pg_resetxlog.c:1030 #, c-format msgid " -o OID set next OID\n" -msgstr " -o OID ������ ����������� OID\n" +msgstr " -o OID задать следующий OID\n" -#: pg_resetxlog.c:938 +#: pg_resetxlog.c:1031 #, c-format msgid " -O OFFSET set next multitransaction offset\n" -msgstr " -O OFFSET ������ �������� ��������� ����������������\n" +msgstr " -O OFFSET задать смещение следующей мультитранзакции\n" -#: pg_resetxlog.c:939 +#: pg_resetxlog.c:1032 #, c-format msgid " -x XID set next transaction ID\n" -msgstr " -x XID ������ ID ��������� ����������\n" - -#: pg_resetxlog.c:940 -#, c-format -msgid " -e XIDEPOCH set next transaction ID epoch\n" -msgstr " -e XIDEPOCH ������ �����/������� ���� ID ����������\n" +msgstr " -x XID задать ID следующей транзакции\n" -#: pg_resetxlog.c:941 +#: pg_resetxlog.c:1033 #, c-format msgid " --help show this help, then exit\n" -msgstr " --help �������� ��� ��������� � �����\n" +msgstr " --help показать эту справку и выйти\n" -#: pg_resetxlog.c:942 +#: pg_resetxlog.c:1034 #, c-format msgid " --version output version information, then exit\n" -msgstr " --version �������� ������ � �����\n" +msgstr " --version показать версию и выйти\n" -#: pg_resetxlog.c:943 +#: pg_resetxlog.c:1035 #, c-format msgid "" "\n" "Report bugs to .\n" msgstr "" "\n" -"��������� �� �������: .\n" - -#~ msgid "Maximum number of function arguments: %u\n" -#~ msgstr "������������ ����� ���������� �������: %u\n" +"Об ошибках сообщайте по адресу .\n" diff --git a/src/bin/pg_resetxlog/po/sv.po b/src/bin/pg_resetxlog/po/sv.po index 16e6e051c8..4270104958 100644 --- a/src/bin/pg_resetxlog/po/sv.po +++ b/src/bin/pg_resetxlog/po/sv.po @@ -10,6 +10,7 @@ msgstr "" "PO-Revision-Date: 2010-07-02 20:32-0400\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: Swedish \n" +"Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_resetxlog/po/ta.po b/src/bin/pg_resetxlog/po/ta.po index 5ed65ba1ea..90ac207845 100644 --- a/src/bin/pg_resetxlog/po/ta.po +++ b/src/bin/pg_resetxlog/po/ta.po @@ -11,6 +11,7 @@ msgstr "" "PO-Revision-Date: 2007-11-11 09:38+0530\n" "Last-Translator: ஆமாச்சு \n" "Language-Team: தமிழ் \n" +"Language: ta\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_resetxlog/po/tr.po b/src/bin/pg_resetxlog/po/tr.po index 982f26d412..d3aab43873 100644 --- a/src/bin/pg_resetxlog/po/tr.po +++ b/src/bin/pg_resetxlog/po/tr.po @@ -9,6 +9,7 @@ msgstr "" "PO-Revision-Date: 2010-09-01 10:15+0200\n" "Last-Translator: Devrim GÜNDÜZ \n" "Language-Team: Turkish \n" +"Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/pg_resetxlog/po/zh_CN.po b/src/bin/pg_resetxlog/po/zh_CN.po index 978c108e02..423010b1c0 100644 --- a/src/bin/pg_resetxlog/po/zh_CN.po +++ b/src/bin/pg_resetxlog/po/zh_CN.po @@ -5,103 +5,104 @@ msgid "" msgstr "" "Project-Id-Version: pg_resetxlog (PostgreSQL 9.0)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-10-01 14:41+0000\n" +"POT-Creation-Date: 2013-01-29 13:57+0000\n" "PO-Revision-Date: 2010-10-01 12:52+0800\n" "Last-Translator: Weibin \n" "Language-Team: Chinese (Simplified)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: pg_resetxlog.c:135 +#: pg_resetxlog.c:134 #, c-format msgid "%s: invalid argument for option -e\n" msgstr "%s: 对于选项-e 参数无效\n" -#: pg_resetxlog.c:136 pg_resetxlog.c:151 pg_resetxlog.c:166 pg_resetxlog.c:181 -#: pg_resetxlog.c:196 pg_resetxlog.c:211 pg_resetxlog.c:218 pg_resetxlog.c:225 -#: pg_resetxlog.c:231 pg_resetxlog.c:239 +#: pg_resetxlog.c:135 pg_resetxlog.c:150 pg_resetxlog.c:165 pg_resetxlog.c:180 +#: pg_resetxlog.c:195 pg_resetxlog.c:210 pg_resetxlog.c:217 pg_resetxlog.c:224 +#: pg_resetxlog.c:230 pg_resetxlog.c:238 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "输入 \"%s --help\" 获取更多的信息.\n" -#: pg_resetxlog.c:141 +#: pg_resetxlog.c:140 #, c-format msgid "%s: transaction ID epoch (-e) must not be -1\n" msgstr "%s: 事务ID epoch(-e) 不能为 -1\n" -#: pg_resetxlog.c:150 +#: pg_resetxlog.c:149 #, c-format msgid "%s: invalid argument for option -x\n" msgstr "%s: 为 -x 选项的无效参数\n" -#: pg_resetxlog.c:156 +#: pg_resetxlog.c:155 #, c-format msgid "%s: transaction ID (-x) must not be 0\n" msgstr "%s: 事务 ID (-x) 不能为 0\n" -#: pg_resetxlog.c:165 +#: pg_resetxlog.c:164 #, c-format msgid "%s: invalid argument for option -o\n" msgstr "%s: 为 -o 选项的无效参数\n" -#: pg_resetxlog.c:171 +#: pg_resetxlog.c:170 #, c-format msgid "%s: OID (-o) must not be 0\n" msgstr "%s: OID (-o) 不能为 0\n" -#: pg_resetxlog.c:180 +#: pg_resetxlog.c:179 #, c-format msgid "%s: invalid argument for option -m\n" msgstr "%s: 对于选项-m 参数无效\n" -#: pg_resetxlog.c:186 +#: pg_resetxlog.c:185 #, c-format msgid "%s: multitransaction ID (-m) must not be 0\n" msgstr "%s: 多事务 ID (-m) 不能为 0\n" -#: pg_resetxlog.c:195 +#: pg_resetxlog.c:194 #, c-format msgid "%s: invalid argument for option -O\n" msgstr "%s: 对于选项-O 参数无效\n" -#: pg_resetxlog.c:201 +#: pg_resetxlog.c:200 #, c-format msgid "%s: multitransaction offset (-O) must not be -1\n" msgstr "%s: 多事务 偏移 (-O) 不能为-1\n" -#: pg_resetxlog.c:210 pg_resetxlog.c:217 pg_resetxlog.c:224 +#: pg_resetxlog.c:209 pg_resetxlog.c:216 pg_resetxlog.c:223 #, c-format msgid "%s: invalid argument for option -l\n" msgstr "%s: 为 -l 选项的无效参数\n" -#: pg_resetxlog.c:238 +#: pg_resetxlog.c:237 #, c-format msgid "%s: no data directory specified\n" msgstr "%s: 没有指定数据目录\n" -#: pg_resetxlog.c:252 +#: pg_resetxlog.c:251 #, c-format msgid "%s: cannot be executed by \"root\"\n" msgstr "%s:不能由\"root\"执行\n" -#: pg_resetxlog.c:254 +#: pg_resetxlog.c:253 #, c-format msgid "You must run %s as the PostgreSQL superuser.\n" msgstr "您现在作为PostgreSQL超级用户运行%s.\n" # command.c:256 -#: pg_resetxlog.c:264 +#: pg_resetxlog.c:263 #, c-format msgid "%s: could not change directory to \"%s\": %s\n" msgstr "%s: 无法切换目录至 \"%s\": %s\n" -#: pg_resetxlog.c:279 pg_resetxlog.c:407 +#: pg_resetxlog.c:276 pg_resetxlog.c:405 #, c-format msgid "%s: could not open file \"%s\" for reading: %s\n" msgstr "%s: 无法打开文件 \"%s\" 读取信息: %s\n" -#: pg_resetxlog.c:285 +#: pg_resetxlog.c:283 #, c-format msgid "" "%s: lock file \"%s\" exists\n" @@ -110,7 +111,7 @@ msgstr "" "%s: 锁文件 \"%s\" 已经存在\n" "是否有一个服务正在运行? 如果没有, 删除那个锁文件然后再试一次.\n" -#: pg_resetxlog.c:355 +#: pg_resetxlog.c:353 #, c-format msgid "" "\n" @@ -119,7 +120,7 @@ msgstr "" "\n" "如果这些值可接受, 用 -f 强制重置.\n" -#: pg_resetxlog.c:367 +#: pg_resetxlog.c:365 #, c-format msgid "" "The database server was not shut down cleanly.\n" @@ -130,12 +131,12 @@ msgstr "" "重置事务日志有可能会引起丢失数据.\n" "如果你仍想继续, 用 -f 强制重置.\n" -#: pg_resetxlog.c:381 +#: pg_resetxlog.c:379 #, c-format msgid "Transaction log reset\n" msgstr "事务日志重置\n" -#: pg_resetxlog.c:410 +#: pg_resetxlog.c:408 #, c-format msgid "" "If you are sure the data directory path is correct, execute\n" @@ -146,22 +147,22 @@ msgstr "" " touch %s\n" "然后再试一次.\n" -#: pg_resetxlog.c:423 +#: pg_resetxlog.c:421 #, c-format msgid "%s: could not read file \"%s\": %s\n" msgstr "%s: 无法读取文件 \"%s\": %s\n" -#: pg_resetxlog.c:446 +#: pg_resetxlog.c:444 #, c-format msgid "%s: pg_control exists but has invalid CRC; proceed with caution\n" msgstr "%s: pg_control 已经存在, 但有无效的CRC; 带有警告的继续运行\n" -#: pg_resetxlog.c:455 +#: pg_resetxlog.c:453 #, c-format msgid "%s: pg_control exists but is broken or unknown version; ignoring it\n" msgstr "%s: pg_control 已经存在, 但已破坏或无效版本; 忽略它\n" -#: pg_resetxlog.c:549 +#: pg_resetxlog.c:547 #, c-format msgid "" "Guessed pg_control values:\n" @@ -170,7 +171,7 @@ msgstr "" "猜测的 pg_control 值:\n" "\n" -#: pg_resetxlog.c:551 +#: pg_resetxlog.c:549 #, c-format msgid "" "pg_control values:\n" @@ -179,190 +180,190 @@ msgstr "" "pg_control 值:\n" "\n" -#: pg_resetxlog.c:560 +#: pg_resetxlog.c:558 #, c-format msgid "First log file ID after reset: %u\n" msgstr "重置后的第一个日志文件ID: %u\n" -#: pg_resetxlog.c:562 +#: pg_resetxlog.c:560 #, c-format msgid "First log file segment after reset: %u\n" msgstr "重置后的第一个日志文件段: %u\n" -#: pg_resetxlog.c:564 +#: pg_resetxlog.c:562 #, c-format msgid "pg_control version number: %u\n" msgstr "pg_control 版本: %u\n" -#: pg_resetxlog.c:566 +#: pg_resetxlog.c:564 #, c-format msgid "Catalog version number: %u\n" msgstr "Catalog 版本: %u\n" -#: pg_resetxlog.c:568 +#: pg_resetxlog.c:566 #, c-format msgid "Database system identifier: %s\n" msgstr "数据库系统标识符: %s\n" -#: pg_resetxlog.c:570 +#: pg_resetxlog.c:568 #, c-format msgid "Latest checkpoint's TimeLineID: %u\n" msgstr "最新检查点的 TimeLineID: %u\n" -#: pg_resetxlog.c:572 +#: pg_resetxlog.c:570 #, c-format msgid "Latest checkpoint's NextXID: %u/%u\n" msgstr "最新检查点的 NextXID: %u/%u\n" -#: pg_resetxlog.c:575 +#: pg_resetxlog.c:573 #, c-format msgid "Latest checkpoint's NextOID: %u\n" msgstr "最新检查点的 NextOID: %u\n" -#: pg_resetxlog.c:577 +#: pg_resetxlog.c:575 #, c-format msgid "Latest checkpoint's NextMultiXactId: %u\n" msgstr "最新检查点的 NextMultiXactId: %u\n" -#: pg_resetxlog.c:579 +#: pg_resetxlog.c:577 #, c-format msgid "Latest checkpoint's NextMultiOffset: %u\n" msgstr "最新检查点的 NextMultiOffset: %u\n" -#: pg_resetxlog.c:581 +#: pg_resetxlog.c:579 #, c-format msgid "Latest checkpoint's oldestXID: %u\n" msgstr "最新检查点的oldestXID: %u\n" -#: pg_resetxlog.c:583 +#: pg_resetxlog.c:581 #, c-format msgid "Latest checkpoint's oldestXID's DB: %u\n" msgstr "最新检查点的oldestXID所在的数据库: %u\n" -#: pg_resetxlog.c:585 +#: pg_resetxlog.c:583 #, c-format msgid "Latest checkpoint's oldestActiveXID: %u\n" msgstr "最新检查点的oldestActiveXID: %u\n" -#: pg_resetxlog.c:587 +#: pg_resetxlog.c:585 #, c-format msgid "Maximum data alignment: %u\n" msgstr "最大的数据校准: %u\n" -#: pg_resetxlog.c:590 +#: pg_resetxlog.c:588 #, c-format msgid "Database block size: %u\n" msgstr "数据库块大小: %u\n" -#: pg_resetxlog.c:592 +#: pg_resetxlog.c:590 #, c-format msgid "Blocks per segment of large relation: %u\n" msgstr "大关系的每段块数: %u\n" -#: pg_resetxlog.c:594 +#: pg_resetxlog.c:592 #, c-format msgid "WAL block size: %u\n" msgstr "WAL块大小: %u\n" -#: pg_resetxlog.c:596 +#: pg_resetxlog.c:594 #, c-format msgid "Bytes per WAL segment: %u\n" msgstr "每一个 WAL 段字节数: %u\n" -#: pg_resetxlog.c:598 +#: pg_resetxlog.c:596 #, c-format msgid "Maximum length of identifiers: %u\n" msgstr "标示符的最大长度: %u\n" -#: pg_resetxlog.c:600 +#: pg_resetxlog.c:598 #, c-format msgid "Maximum columns in an index: %u\n" msgstr "在索引中最多可用的列数: %u\n" -#: pg_resetxlog.c:602 +#: pg_resetxlog.c:600 #, c-format msgid "Maximum size of a TOAST chunk: %u\n" msgstr "一个TOAST区块的最大空间: %u\n" -#: pg_resetxlog.c:604 +#: pg_resetxlog.c:602 #, c-format msgid "Date/time type storage: %s\n" msgstr "日期/时间类型存储: %s\n" -#: pg_resetxlog.c:605 +#: pg_resetxlog.c:603 msgid "64-bit integers" msgstr "64位整型" -#: pg_resetxlog.c:605 +#: pg_resetxlog.c:603 msgid "floating-point numbers" msgstr "浮点数" -#: pg_resetxlog.c:606 +#: pg_resetxlog.c:604 #, c-format msgid "Float4 argument passing: %s\n" msgstr "正在传递Float4类型的参数: %s\n" -#: pg_resetxlog.c:607 pg_resetxlog.c:609 +#: pg_resetxlog.c:605 pg_resetxlog.c:607 msgid "by value" msgstr "由值" -#: pg_resetxlog.c:607 pg_resetxlog.c:609 +#: pg_resetxlog.c:605 pg_resetxlog.c:607 msgid "by reference" msgstr "由引用" -#: pg_resetxlog.c:608 +#: pg_resetxlog.c:606 #, c-format msgid "Float8 argument passing: %s\n" msgstr "正在传递Float8类型的参数: %s\n" -#: pg_resetxlog.c:671 +#: pg_resetxlog.c:669 #, c-format msgid "" "%s: internal error -- sizeof(ControlFileData) is too large ... fix " "PG_CONTROL_SIZE\n" msgstr "%s: 内部错误 -- sizeof(ControlFileData) 太大 ... 修复 xlog.c\n" -#: pg_resetxlog.c:686 +#: pg_resetxlog.c:684 #, c-format msgid "%s: could not create pg_control file: %s\n" msgstr "%s: 无法创建 pg_control 文件: %s\n" -#: pg_resetxlog.c:697 +#: pg_resetxlog.c:695 #, c-format msgid "%s: could not write pg_control file: %s\n" msgstr "%s: 无法写 pg_control 文件: %s\n" -#: pg_resetxlog.c:704 pg_resetxlog.c:1011 +#: pg_resetxlog.c:702 pg_resetxlog.c:1009 #, c-format msgid "%s: fsync error: %s\n" msgstr "%s: fsync 错误: %s\n" -#: pg_resetxlog.c:742 pg_resetxlog.c:817 pg_resetxlog.c:873 +#: pg_resetxlog.c:740 pg_resetxlog.c:815 pg_resetxlog.c:871 #, c-format msgid "%s: could not open directory \"%s\": %s\n" msgstr "%s: 无法打开目录 \"%s\": %s\n" -#: pg_resetxlog.c:786 pg_resetxlog.c:850 pg_resetxlog.c:907 +#: pg_resetxlog.c:784 pg_resetxlog.c:848 pg_resetxlog.c:905 #, c-format msgid "%s: could not read from directory \"%s\": %s\n" msgstr "%s: 无法从目录 \"%s\" 中读取: %s\n" -#: pg_resetxlog.c:831 pg_resetxlog.c:888 +#: pg_resetxlog.c:829 pg_resetxlog.c:886 #, c-format msgid "%s: could not delete file \"%s\": %s\n" msgstr "%s: 无法删除文件 \"%s\": %s\n" -#: pg_resetxlog.c:978 +#: pg_resetxlog.c:976 #, c-format msgid "%s: could not open file \"%s\": %s\n" msgstr "%s: 无法打开文件 \"%s\": %s\n" -#: pg_resetxlog.c:989 pg_resetxlog.c:1003 +#: pg_resetxlog.c:987 pg_resetxlog.c:1001 #, c-format msgid "%s: could not write file \"%s\": %s\n" msgstr "%s: 无法写文件 \"%s\": %s\n" -#: pg_resetxlog.c:1022 +#: pg_resetxlog.c:1020 #, c-format msgid "" "%s resets the PostgreSQL transaction log.\n" @@ -371,7 +372,7 @@ msgstr "" "%s 重置 PostgreSQL 事务日志.\n" "\n" -#: pg_resetxlog.c:1023 +#: pg_resetxlog.c:1021 #, c-format msgid "" "Usage:\n" @@ -382,66 +383,66 @@ msgstr "" " %s [选项]... 数据目录\n" "\n" -#: pg_resetxlog.c:1024 +#: pg_resetxlog.c:1022 #, c-format msgid "Options:\n" msgstr "选项:\n" -#: pg_resetxlog.c:1025 +#: pg_resetxlog.c:1023 #, c-format msgid " -e XIDEPOCH set next transaction ID epoch\n" msgstr " -e XIDEPOCH 设置下一个事务ID时间单元(epoch)\n" -#: pg_resetxlog.c:1026 +#: pg_resetxlog.c:1024 #, c-format msgid " -f force update to be done\n" msgstr " -f 强制更新\n" -#: pg_resetxlog.c:1027 +#: pg_resetxlog.c:1025 #, c-format msgid "" " -l TLI,FILE,SEG force minimum WAL starting location for new transaction " "log\n" msgstr " -l TLI, FILEID,SEG 在新的事务日志中强制最小 WAL 起始位置\n" -#: pg_resetxlog.c:1028 +#: pg_resetxlog.c:1026 #, c-format msgid " -m XID set next multitransaction ID\n" msgstr " -m XID 设置下一个多事务(multitransaction)ID\n" -#: pg_resetxlog.c:1029 +#: pg_resetxlog.c:1027 #, c-format msgid "" " -n no update, just show extracted control values (for " "testing)\n" msgstr " -n 未更新, 只显示抽取的控制值 (测试用途)\n" -#: pg_resetxlog.c:1030 +#: pg_resetxlog.c:1028 #, c-format msgid " -o OID set next OID\n" msgstr " -o OID 设置下一个 OID\n" -#: pg_resetxlog.c:1031 +#: pg_resetxlog.c:1029 #, c-format msgid " -O OFFSET set next multitransaction offset\n" msgstr " -O OFFSET 设置下一个多事务(multitransaction)偏移\n" -#: pg_resetxlog.c:1032 +#: pg_resetxlog.c:1030 #, c-format msgid " -x XID set next transaction ID\n" msgstr " -x XID 设置下一个事务 ID\n" -#: pg_resetxlog.c:1033 +#: pg_resetxlog.c:1031 #, c-format msgid " --help show this help, then exit\n" msgstr " --help 显示此帮助信息, 然后退出\n" -#: pg_resetxlog.c:1034 +#: pg_resetxlog.c:1032 #, c-format msgid " --version output version information, then exit\n" msgstr " --version 输出版本信息, 然后退出\n" -#: pg_resetxlog.c:1035 +#: pg_resetxlog.c:1033 #, c-format msgid "" "\n" diff --git a/src/bin/pg_resetxlog/po/zh_TW.po b/src/bin/pg_resetxlog/po/zh_TW.po index 681af8449c..ab10377dd2 100644 --- a/src/bin/pg_resetxlog/po/zh_TW.po +++ b/src/bin/pg_resetxlog/po/zh_TW.po @@ -12,7 +12,7 @@ msgstr "" "Last-Translator: Zhenbang Wei \n" "Language-Team: EnterpriseDB translation team \n" -"Language: \n" +"Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/psql/Makefile b/src/bin/psql/Makefile index 23f3cafd20..7c4220aa41 100644 --- a/src/bin/psql/Makefile +++ b/src/bin/psql/Makefile @@ -18,8 +18,8 @@ include $(top_builddir)/src/Makefile.global REFDOCDIR= $(top_srcdir)/doc-xc/src/sgml/ref -MAKESGMLDIR = $(top_srcdir)/doc-xc/tools/makesgml -SGMLDIR= $(top_srcdir)/doc-xc/src/sgml +MAKESGMLDIR = $(top_builddir)/src/pgxc/tools/makesgml +SGMLDIR= $(top_builddir)/doc-xc/src/sgml override CPPFLAGS := -I. -I$(srcdir) -I$(libpq_srcdir) -I$(top_srcdir)/src/bin/pg_dump $(CPPFLAGS) @@ -68,7 +68,7 @@ install: all installdirs $(INSTALL_DATA) $(srcdir)/psqlrc.sample '$(DESTDIR)$(datadir)/psqlrc.sample' installdirs: - $(MKDIR_P) '$(DESTDIR)$(bindir)' + $(MKDIR_P) '$(DESTDIR)$(bindir)' '$(DESTDIR)$(datadir)' uninstall: rm -f '$(DESTDIR)$(bindir)/psql$(X)' '$(DESTDIR)$(datadir)/psqlrc.sample' diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 378330b96a..6c3a488f7e 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -583,7 +583,13 @@ exec_command(const char *cmd, { int lineno = -1; - if (!query_buf) + if (pset.sversion < 80400) + { + psql_error("The server (version %d.%d) does not support editing function source.\n", + pset.sversion / 10000, (pset.sversion / 100) % 100); + status = PSQL_CMD_ERROR; + } + else if (!query_buf) { psql_error("no query buffer\n"); status = PSQL_CMD_ERROR; @@ -1040,6 +1046,17 @@ exec_command(const char *cmd, char *fname = psql_scan_slash_option(scan_state, OT_NORMAL, NULL, true); +#if defined(WIN32) && !defined(__CYGWIN__) + + /* + * XXX This does not work for all terminal environments or for output + * containing non-ASCII characters; see comments in simple_prompt(). + */ +#define DEVTTY "con" +#else +#define DEVTTY "/dev/tty" +#endif + expand_tilde(&fname); /* This scrolls off the screen when using /dev/tty */ success = saveHistory(fname ? fname : DEVTTY, -1, false, false); @@ -1110,7 +1127,13 @@ exec_command(const char *cmd, func_buf = createPQExpBuffer(); func = psql_scan_slash_option(scan_state, OT_WHOLE_LINE, NULL, true); - if (!func) + if (pset.sversion < 80400) + { + psql_error("The server (version %d.%d) does not support showing function source.\n", + pset.sversion / 10000, (pset.sversion / 100) % 100); + status = PSQL_CMD_ERROR; + } + else if (!func) { psql_error("function name is required\n"); status = PSQL_CMD_ERROR; @@ -1625,7 +1648,11 @@ connection_warnings(bool in_startup) } /* For version match, only print psql banner on startup. */ else if (in_startup) +#ifdef PGXC + printf("%s (PGXC %s, based on PG %s)\n", pset.progname, PGXC_VERSION, PG_VERSION); +#else printf("%s (%s)\n", pset.progname, PG_VERSION); +#endif if (pset.sversion / 100 != client_ver / 100) printf(_("WARNING: %s version %d.%d, server version %d.%d.\n" @@ -1748,7 +1775,7 @@ static bool editFile(const char *fname, int lineno) { const char *editorName; - const char *editor_lineno_switch = NULL; + const char *editor_lineno_arg = NULL; char *sys; int result; @@ -1763,14 +1790,17 @@ editFile(const char *fname, int lineno) if (!editorName) editorName = DEFAULT_EDITOR; - /* Get line number switch, if we need it. */ + /* Get line number argument, if we need it. */ if (lineno > 0) { - editor_lineno_switch = GetVariable(pset.vars, - "EDITOR_LINENUMBER_SWITCH"); - if (editor_lineno_switch == NULL) + editor_lineno_arg = getenv("PSQL_EDITOR_LINENUMBER_ARG"); +#ifdef DEFAULT_EDITOR_LINENUMBER_ARG + if (!editor_lineno_arg) + editor_lineno_arg = DEFAULT_EDITOR_LINENUMBER_ARG; +#endif + if (!editor_lineno_arg) { - psql_error("EDITOR_LINENUMBER_SWITCH variable must be set to specify a line number\n"); + psql_error("environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number\n"); return false; } } @@ -1778,7 +1808,7 @@ editFile(const char *fname, int lineno) /* Allocate sufficient memory for command line. */ if (lineno > 0) sys = pg_malloc(strlen(editorName) - + strlen(editor_lineno_switch) + 10 /* for integer */ + + strlen(editor_lineno_arg) + 10 /* for integer */ + 1 + strlen(fname) + 10 + 1); else sys = pg_malloc(strlen(editorName) + strlen(fname) + 10 + 1); @@ -1793,14 +1823,14 @@ editFile(const char *fname, int lineno) #ifndef WIN32 if (lineno > 0) sprintf(sys, "exec %s %s%d '%s'", - editorName, editor_lineno_switch, lineno, fname); + editorName, editor_lineno_arg, lineno, fname); else sprintf(sys, "exec %s '%s'", editorName, fname); #else if (lineno > 0) sprintf(sys, SYSTEMQUOTE "\"%s\" %s%d \"%s\"" SYSTEMQUOTE, - editorName, editor_lineno_switch, lineno, fname); + editorName, editor_lineno_arg, lineno, fname); else sprintf(sys, SYSTEMQUOTE "\"%s\" \"%s\"" SYSTEMQUOTE, editorName, fname); @@ -1847,7 +1877,7 @@ do_edit(const char *filename_arg, PQExpBuffer query_buf, ret = GetTempPath(MAXPGPATH, tmpdir); if (ret == 0 || ret > MAXPGPATH) { - psql_error("cannot locate temporary directory: %s", + psql_error("could not locate temporary directory: %s\n", !ret ? strerror(errno) : ""); return false; } diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c index b57da05345..101544800d 100644 --- a/src/bin/psql/common.c +++ b/src/bin/psql/common.c @@ -87,7 +87,7 @@ pg_calloc(size_t nmemb, size_t size) tmp = calloc(nmemb, size); if (!tmp) { - psql_error("out of memory"); + psql_error("out of memory\n"); exit(EXIT_FAILURE); } return tmp; @@ -194,7 +194,7 @@ NoticeProcessor(void *arg, const char *message) * so. We use write() to report to stderr because it's better to use simple * facilities in a signal handler. * - * On win32, the signal cancelling happens on a separate thread, because + * On win32, the signal canceling happens on a separate thread, because * that's how SetConsoleCtrlHandler works. The PQcancel function is safe * for this (unlike PQrequestCancel). However, a CRITICAL_SECTION is required * to protect the PGcancel structure against being changed while the signal diff --git a/src/bin/psql/copy.c b/src/bin/psql/copy.c index 5e69d29b6c..2e1dff7f48 100644 --- a/src/bin/psql/copy.c +++ b/src/bin/psql/copy.c @@ -350,7 +350,9 @@ do_copy(const char *args) PQresultStatus(result)); /* if still in COPY IN state, try to get out of it */ if (PQresultStatus(result) == PGRES_COPY_IN) - PQputCopyEnd(pset.db, _("trying to exit copy mode")); + PQputCopyEnd(pset.db, + (PQprotocolVersion(pset.db) < 3) ? NULL : + _("trying to exit copy mode")); PQclear(result); } @@ -397,15 +399,15 @@ handleCopyOut(PGconn *conn, FILE *copystream) ret = PQgetCopyData(conn, &buf, 0); if (ret < 0) - break; /* done or error */ + break; /* done or server/connection error */ if (buf) { - if (fwrite(buf, 1, ret, copystream) != ret) + if (OK && fwrite(buf, 1, ret, copystream) != ret) { - if (OK) /* complain only once, keep reading data */ - psql_error("could not write COPY data: %s\n", - strerror(errno)); + psql_error("could not write COPY data: %s\n", + strerror(errno)); + /* complain only once, keep reading data from server */ OK = false; } PQfreemem(buf); @@ -469,7 +471,9 @@ handleCopyIn(PGconn *conn, FILE *copystream, bool isbinary) /* got here with longjmp */ /* Terminate data transfer */ - PQputCopyEnd(conn, _("canceled by user")); + PQputCopyEnd(conn, + (PQprotocolVersion(conn) < 3) ? NULL : + _("canceled by user")); /* Check command status and return to normal libpq state */ res = PQgetResult(conn); @@ -586,7 +590,8 @@ handleCopyIn(PGconn *conn, FILE *copystream, bool isbinary) } } - pset.lineno++; + if (copystream == pset.cur_cmd_source) + pset.lineno++; } } @@ -596,7 +601,8 @@ handleCopyIn(PGconn *conn, FILE *copystream, bool isbinary) /* Terminate data transfer */ if (PQputCopyEnd(conn, - OK ? NULL : _("aborted because of read failure")) <= 0) + (OK || PQprotocolVersion(conn) < 3) ? NULL : + _("aborted because of read failure")) <= 0) OK = false; /* Check command status and return to normal libpq state */ diff --git a/src/bin/psql/describe.c b/src/bin/psql/describe.c index b2c54b5f92..6df42fb957 100644 --- a/src/bin/psql/describe.c +++ b/src/bin/psql/describe.c @@ -2893,6 +2893,13 @@ listCollations(const char *pattern, bool verbose, bool showSystem) printQueryOpt myopt = pset.popt; static const bool translate_columns[] = {false, false, false, false, false}; + if (pset.sversion < 90100) + { + fprintf(stderr, _("The server (version %d.%d) does not support collations.\n"), + pset.sversion / 10000, (pset.sversion / 100) % 100); + return true; + } + initPQExpBuffer(&buf); printfPQExpBuffer(&buf, diff --git a/src/bin/psql/help.c b/src/bin/psql/help.c index ac5edca65d..64bf407374 100644 --- a/src/bin/psql/help.c +++ b/src/bin/psql/help.c @@ -157,6 +157,11 @@ void slashUsage(unsigned short int pager) { FILE *output; + char *currdb; + + currdb = PQdb(pset.db); + if (currdb == NULL) + currdb = ""; output = PageOutput(92, pager); @@ -248,7 +253,7 @@ slashUsage(unsigned short int pager) fprintf(output, _("Connection\n")); fprintf(output, _(" \\c[onnect] [DBNAME|- USER|- HOST|- PORT|-]\n" " connect to new database (currently \"%s\")\n"), - PQdb(pset.db)); + currdb); fprintf(output, _(" \\encoding [ENCODING] show or set client encoding\n")); fprintf(output, _(" \\password [USERNAME] securely change the password for a user\n")); fprintf(output, _(" \\conninfo display information about current connection\n")); diff --git a/src/bin/psql/input.c b/src/bin/psql/input.c index 6628c0c30c..ec0e6e1d49 100644 --- a/src/bin/psql/input.c +++ b/src/bin/psql/input.c @@ -95,10 +95,10 @@ void pg_append_history(const char *s, PQExpBuffer history_buf) { #ifdef USE_READLINE - if (useHistory && s && s[0]) + if (useHistory && s) { appendPQExpBufferStr(history_buf, s); - if (s[strlen(s) - 1] != '\n') + if (!s[0] || s[strlen(s) - 1] != '\n') appendPQExpBufferChar(history_buf, '\n'); } #endif diff --git a/src/bin/psql/nls.mk b/src/bin/psql/nls.mk index d47c3b2ec7..d12e12026a 100644 --- a/src/bin/psql/nls.mk +++ b/src/bin/psql/nls.mk @@ -1,6 +1,6 @@ # src/bin/psql/nls.mk CATALOG_NAME := psql -AVAIL_LANGUAGES := cs de es fr ja pt_BR sv tr zh_CN zh_TW +AVAIL_LANGUAGES := cs de es fr it ja pl pt_BR ru tr zh_CN zh_TW GETTEXT_FILES := command.c common.c copy.c help.c input.c large_obj.c \ mainloop.c print.c startup.c describe.c sql_help.h sql_help.c \ ../../port/exec.c diff --git a/src/bin/psql/po/cs.po b/src/bin/psql/po/cs.po index 2b647e5378..e405afe764 100644 --- a/src/bin/psql/po/cs.po +++ b/src/bin/psql/po/cs.po @@ -1,179 +1,225 @@ -# translation of psql-cs.po to Czech # Czech message translation file for psql # -# src/bin/psql/po/cs.po +# pgtranslation Id: psql.po,v 1.6 2011/09/08 18:23:06 petere Exp $ # Karel Žák, 2001-2003, 2004. -# Zdeněk Kotala, 2009. - +# Zdeněk Kotala, 2009, 2011, 2012, 2013. +# Tomáš Vondra , 2011, 2012, 2013. msgid "" msgstr "" -"Project-Id-Version: postgresql 8.4\n" +"Project-Id-Version: psql-cs (PostgreSQL 9.1)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2009-05-21 21:08+0000\n" -"PO-Revision-Date: 2009-05-24 15:46+0200\n" -"Last-Translator: Zdeněk Kotala\n" -"Language-Team: Czech \n" +"POT-Creation-Date: 2013-03-17 12:07+0000\n" +"PO-Revision-Date: 2013-04-28 19:14+0200\n" +"Last-Translator: Tomas Vondra \n" +"Language-Team: Czech \n" +"Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 1.5\n" -#: command.c:112 +#: command.c:113 #, c-format msgid "Invalid command \\%s. Try \\? for help.\n" msgstr "Neplatný příkaz \\%s. Použijte \\? pro nápovědu.\n" -#: command.c:114 +#: command.c:115 #, c-format msgid "invalid command \\%s\n" msgstr "neplatný příkaz \\%s\n" -#: command.c:125 +#: command.c:126 #, c-format msgid "\\%s: extra argument \"%s\" ignored\n" -msgstr "\\%s: vedlejší argument \"%s\" ignorován\n" +msgstr "\\%s: nadbytečný argument \"%s\" ignorován\n" -#: command.c:267 +#: command.c:268 #, c-format msgid "could not get home directory: %s\n" msgstr "nelze získat domácí adresář: %s\n" -#: command.c:283 +#: command.c:284 #, c-format msgid "\\%s: could not change directory to \"%s\": %s\n" msgstr "\\%s: nelze změnit adresář na \"%s\": %s\n" -#: command.c:316 common.c:935 +#: command.c:305 common.c:493 common.c:773 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "Aktuálně nejste připojeni k databázi.\n" + +#: command.c:312 +#, c-format +msgid "" +"You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at " +"port \"%s\".\n" +msgstr "" +"Jste připojeni k databázi \"%s\" jako uživatel \"%s\" přes socket v \"%s\" " +"naportu \"%s\".\n" + +#: command.c:315 +#, c-format +msgid "" +"You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port " +"\"%s\".\n" +msgstr "" +"Nyní jste připojeni k databázi \"%s\" jako uživatel \"%s\" na serveru \"%s\" " +"na portu\"%s\".\n" + +#: command.c:339 common.c:940 #, c-format msgid "Time: %.3f ms\n" msgstr "Čas: %.3f ms\n" -#: command.c:468 command.c:496 command.c:1035 +#: command.c:524 command.c:594 command.c:1308 msgid "no query buffer\n" -msgstr "v paměti není žádný dotaz\n" +msgstr "v historii není žádný dotaz\n" + +#: command.c:557 command.c:2530 +#, c-format +msgid "invalid line number: %s\n" +msgstr "neplatné číslo řádky: %s\n" + +#: command.c:588 +#, c-format +msgid "The server (version %d.%d) does not support editing function source.\n" +msgstr "Server (verze %d.%d) nepodporuje editaci zdrojového kódu funkce.\n" -#: command.c:538 +#: command.c:668 msgid "No changes" msgstr "Žádné změny" -#: command.c:592 +#: command.c:722 #, c-format msgid "%s: invalid encoding name or conversion procedure not found\n" msgstr "%s: neplatné jméno kódování nebo nenalezena konverzní funkce\n" -#: command.c:660 command.c:694 command.c:708 command.c:725 command.c:829 -#: command.c:879 command.c:1015 command.c:1046 +#: command.c:801 command.c:835 command.c:849 command.c:866 command.c:970 +#: command.c:1020 command.c:1288 command.c:1319 #, c-format msgid "\\%s: missing required argument\n" msgstr "\\%s: chybí požadovaný argument\n" -#: command.c:757 +#: command.c:898 msgid "Query buffer is empty." msgstr "Buffer dotazů je prázdný." -#: command.c:767 +#: command.c:908 msgid "Enter new password: " msgstr "Zadejte nové heslo: " -#: command.c:768 +#: command.c:909 msgid "Enter it again: " msgstr "Zadejte znova: " -#: command.c:772 +#: command.c:913 #, c-format msgid "Passwords didn't match.\n" msgstr "Hesla se neshodují.\n" -#: command.c:790 +#: command.c:931 #, c-format msgid "Password encryption failed.\n" msgstr "Zašifrování hesla selhalo.\n" -#: command.c:858 command.c:959 command.c:1020 +#: command.c:999 command.c:1111 command.c:1293 #, c-format msgid "\\%s: error\n" msgstr "\\%s: chyba\n" -#: command.c:899 +#: command.c:1040 msgid "Query buffer reset (cleared)." msgstr "Buffer dotazů vyprázdněn." -#: command.c:912 +#: command.c:1064 #, c-format msgid "Wrote history to file \"%s/%s\".\n" -msgstr "Historie zapsána do soubor: \"%s/%s\".\n" +msgstr "Historie zapsána do souboru: \"%s/%s\".\n" -#: command.c:950 common.c:52 common.c:66 input.c:198 mainloop.c:69 -#: mainloop.c:227 print.c:61 print.c:75 +#: command.c:1102 common.c:52 common.c:66 common.c:90 input.c:209 +#: mainloop.c:72 mainloop.c:234 print.c:137 print.c:151 #, c-format msgid "out of memory\n" -msgstr "paměť vyčerpána\n" +msgstr "nedostatek paměti\n" -#: command.c:1000 +#: command.c:1132 +#, c-format +msgid "The server (version %d.%d) does not support showing function source.\n" +msgstr "Server (verze %d.%d) nepodporuje zobrazování zdrojového kódu funkce.\n" + +#: command.c:1138 +msgid "function name is required\n" +msgstr "je vyžadováno jméno funkce\n" + +#: command.c:1273 msgid "Timing is on." msgstr "Sledování času je zapnuto." -#: command.c:1002 +#: command.c:1275 msgid "Timing is off." msgstr "Sledování času je vypnuto." -#: command.c:1063 command.c:1083 command.c:1581 command.c:1588 command.c:1597 -#: command.c:1607 command.c:1616 command.c:1630 command.c:1647 command.c:1680 -#: common.c:137 copy.c:517 copy.c:581 +#: command.c:1336 command.c:1356 command.c:1918 command.c:1925 command.c:1934 +#: command.c:1944 command.c:1953 command.c:1967 command.c:1984 command.c:2022 +#: common.c:137 copy.c:283 copy.c:361 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" -#: command.c:1165 startup.c:159 +#: command.c:1438 startup.c:159 msgid "Password: " msgstr "Heslo: " -#: command.c:1172 startup.c:162 startup.c:164 +#: command.c:1445 startup.c:162 startup.c:164 #, c-format msgid "Password for user %s: " -msgstr "Vložte heslo uživatele %s: " +msgstr "Heslo pro uživatele %s: " -#: command.c:1268 command.c:2110 common.c:183 common.c:460 common.c:525 -#: common.c:811 common.c:836 common.c:920 copy.c:652 copy.c:697 copy.c:826 +#: command.c:1564 command.c:2564 common.c:183 common.c:460 common.c:525 +#: common.c:816 common.c:841 common.c:925 copy.c:432 copy.c:477 copy.c:607 #, c-format msgid "%s" msgstr "%s" -#: command.c:1272 +#: command.c:1568 msgid "Previous connection kept\n" msgstr "Předchozí spojení zachováno\n" -#: command.c:1276 +#: command.c:1572 #, c-format msgid "\\connect: %s" msgstr "\\connect: %s" -#: command.c:1300 -#, c-format -msgid "You are now connected to database \"%s\"" -msgstr "Nyní jste připojeni do databáze \"%s\"" - -#: command.c:1303 +#: command.c:1605 #, c-format -msgid " on host \"%s\"" -msgstr " na počítač \"%s\"" +msgid "" +"You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" " +"at port \"%s\".\n" +msgstr "" +"You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" " +"at port \"%s\".\n" -#: command.c:1306 +#: command.c:1608 #, c-format -msgid " at port \"%s\"" -msgstr " na port \"%s\"" +msgid "" +"You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at " +"port \"%s\".\n" +msgstr "" +"Nyní jste připojeni k databázi \"%s\" jako uživatel \"%s\" na serveru \"%s\" " +"na portu\"%s\".\n" -#: command.c:1309 +#: command.c:1612 #, c-format -msgid " as user \"%s\"" -msgstr " jako uživatel \"%s\"" +msgid "You are now connected to database \"%s\" as user \"%s\".\n" +msgstr "Nyní jste připojeni k databázi \"%s\" jako uživatel \"%s\".\n" -#: command.c:1344 +#: command.c:1646 #, c-format msgid "%s (%s, server %s)\n" msgstr "%s (%s, server %s)\n" -#: command.c:1351 +#: command.c:1654 #, c-format msgid "" "WARNING: %s version %d.%d, server version %d.%d.\n" @@ -182,158 +228,179 @@ msgstr "" "VAROVÁNÍ: %s verze %d.%d, verze serveru %d.%d.\n" " Některé vlastnosti psql nemusí fungovat.\n" -#: command.c:1381 +#: command.c:1684 #, c-format msgid "SSL connection (cipher: %s, bits: %i)\n" msgstr "SSL spojení (šifra: %s, bitů: %i)\n" -#: command.c:1390 +#: command.c:1694 #, c-format msgid "SSL connection (unknown cipher)\n" msgstr "SSL spojení (neznámá šifra)\n" -#: command.c:1411 +#: command.c:1715 #, c-format msgid "" "WARNING: Console code page (%u) differs from Windows code page (%u)\n" " 8-bit characters might not work correctly. See psql reference\n" " page \"Notes for Windows users\" for details.\n" msgstr "" +"VAROVÁNÍ: Kódová stránka konzole (%u) není shodná s kódovou stránkou\n" +" Windows (%u) 8-bitové znaky nemusí fungovat správně. Další\n" +" informace najdete v manuálu k psql na stránce \"Poznámky pro\n" +" uživatele Windows.\"\n" + +#: command.c:1799 +msgid "" +"environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a " +"line number\n" +msgstr "" +"proměnná prostředí PSQL_EDITOR_LINENUMBER_ARG musí být nastavena pro " +"zadáníčísla řádky\n" -#: command.c:1500 +#: command.c:1836 #, c-format msgid "could not start editor \"%s\"\n" msgstr "nelze spustit editor \"%s\"\n" -#: command.c:1502 +#: command.c:1838 msgid "could not start /bin/sh\n" msgstr "nelze spustit /bin/sh\n" -#: command.c:1539 +#: command.c:1876 #, c-format -msgid "cannot locate temporary directory: %s" -msgstr "nelze otevřít dočasný soubor: %s" +msgid "could not locate temporary directory: %s\n" +msgstr "nelze najít dočasný adresář: %s\n" -#: command.c:1566 +#: command.c:1903 #, c-format msgid "could not open temporary file \"%s\": %s\n" msgstr "nelze otevřít dočasný soubor \"%s\": %s\n" -#: command.c:1764 +#: command.c:2133 msgid "" "\\pset: allowed formats are unaligned, aligned, wrapped, html, latex, troff-" "ms\n" -msgstr "" -"\\pset: dovolené formáty jsou: unaligned, aligned, wrapped, html, latex, troff-" -"ms\n" +msgstr "" +"\\pset: dovolené formáty jsou: unaligned, aligned, wrapped, html, latex, " +"troff-ms\n" -#: command.c:1769 +#: command.c:2138 #, c-format msgid "Output format is %s.\n" msgstr "Výstupní formát je %s.\n" -#: command.c:1779 +#: command.c:2154 +msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" +msgstr "\\pset: povolené styly řádek jsou ascii, old-ascii, unicode\n" + +#: command.c:2159 +#, c-format +msgid "Line style is %s.\n" +msgstr "Styl čar je %s.\n" + +#: command.c:2170 #, c-format msgid "Border style is %d.\n" msgstr "Styl rámečků je %d.\n" -#: command.c:1791 +#: command.c:2182 #, c-format msgid "Expanded display is on.\n" msgstr "Rozšířené zobrazení zapnuto.\n" -#: command.c:1792 +#: command.c:2183 #, c-format msgid "Expanded display is off.\n" msgstr "Rozšířené zobrazení vypnuto.\n" -#: command.c:1805 +#: command.c:2196 msgid "Showing locale-adjusted numeric output." msgstr "Zobrazí číselný výstup dle národního nastavení." -#: command.c:1807 +#: command.c:2198 msgid "Locale-adjusted numeric output is off." msgstr "Zobrazení číselného výstupu dle národního nastavení je vypnuto." -#: command.c:1820 +#: command.c:2211 #, c-format msgid "Null display is \"%s\".\n" msgstr "Null je zobrazován jako '\"%s\"'.\n" -#: command.c:1832 +#: command.c:2223 #, c-format msgid "Field separator is \"%s\".\n" msgstr "Oddělovač polí je '\"%s\"'.\n" -#: command.c:1846 +#: command.c:2237 #, c-format msgid "Record separator is ." msgstr "Oddělovač záznamů je ." -#: command.c:1848 +#: command.c:2239 #, c-format msgid "Record separator is \"%s\".\n" msgstr "Oddělovač záznamů je '\"%s\"'.\n" -#: command.c:1862 +#: command.c:2253 msgid "Showing only tuples." msgstr "Zobrazovány jsou pouze záznamy." -#: command.c:1864 +#: command.c:2255 msgid "Tuples only is off." msgstr "Zobrazování pouze záznamů je vypnuto." -#: command.c:1880 +#: command.c:2271 #, c-format msgid "Title is \"%s\".\n" msgstr "Nadpis je \"%s\".\n" -#: command.c:1882 +#: command.c:2273 #, c-format msgid "Title is unset.\n" msgstr "Nadpis není nastaven.\n" -#: command.c:1898 +#: command.c:2289 #, c-format msgid "Table attribute is \"%s\".\n" msgstr "Atribut tabulky je \"%s\".\n" -#: command.c:1900 +#: command.c:2291 #, c-format msgid "Table attributes unset.\n" msgstr "Atributy tabulky nejsou nastaveny.\n" -#: command.c:1921 +#: command.c:2312 msgid "Pager is used for long output." msgstr "Stránkování je zapnuto pro dlouhé výstupy." -#: command.c:1923 +#: command.c:2314 msgid "Pager is always used." msgstr "Stránkování je vždy použito." -#: command.c:1925 +#: command.c:2316 msgid "Pager usage is off." msgstr "Stránkování je vypnuto." -#: command.c:1939 +#: command.c:2330 msgid "Default footer is on." -msgstr "Implicitní záhlaví je zapnuto." +msgstr "Implicitní zápatí je zapnuto." -#: command.c:1941 +#: command.c:2332 msgid "Default footer is off." -msgstr "Implicitní záhlaví je vypnuto." +msgstr "Implicitní zápatí je vypnuto." -#: command.c:1952 +#: command.c:2343 #, c-format msgid "Target width for \"wrapped\" format is %d.\n" -msgstr "" +msgstr "Cílová šířka pro \"wrapped\" formát je %d.\n" -#: command.c:1957 +#: command.c:2348 #, c-format msgid "\\pset: unknown option: %s\n" msgstr "\\pset: neznámá volba: %s\n" -#: command.c:2011 +#: command.c:2402 msgid "\\!: failed\n" msgstr "\\!: selhal\n" @@ -342,10 +409,6 @@ msgstr "\\!: selhal\n" msgid "%s: pg_strdup: cannot duplicate null pointer (internal error)\n" msgstr "%s: pg_strdup: nelze duplikovat nulový ukazatel (interní chyba)\n" -#: common.c:90 -msgid "out of memory" -msgstr "paměť vyčerpána" - #: common.c:343 msgid "connection to server was lost\n" msgstr "spojení na server bylo ztraceno\n" @@ -362,11 +425,7 @@ msgstr "Nepodařilo se.\n" msgid "Succeeded.\n" msgstr "Podařilo se.\n" -#: common.c:493 common.c:768 -msgid "You are currently not connected to a database.\n" -msgstr "Neexistuje spojeni s databází.\n" - -#: common.c:499 common.c:506 common.c:794 +#: common.c:499 common.c:506 common.c:799 #, c-format msgid "" "********* QUERY **********\n" @@ -379,13 +438,22 @@ msgstr "" "**************************\n" "\n" -#: common.c:558 +#: common.c:560 +#, c-format +msgid "" +"Asynchronous notification \"%s\" with payload \"%s\" received from server " +"process with PID %d.\n" +msgstr "" +"Asynchronní upozornění \"%s\" s obsahem \"%s\" obdrženo ze serverového " +"procesu s PID %d.\n" + +#: common.c:563 #, c-format msgid "" "Asynchronous notification \"%s\" received from server process with PID %d.\n" msgstr "Asynchronní upozornění \"%s\" obdrženo z procesu serveru s PID %d.\n" -#: common.c:776 +#: common.c:781 #, c-format msgid "" "***(Single step mode: verify command)" @@ -397,84 +465,89 @@ msgstr "" "***(Krokovací mód: potvrďte příkaz)" "*******************************************\n" "%s\n" -"***(stiskněte return pro zpracování nebo x pro zrušení)********************\n" +"***(stiskněte return pro zpracování nebo x a return pro zrušení)" +"********************\n" -#: common.c:827 +#: common.c:832 #, c-format msgid "" "The server (version %d.%d) does not support savepoints for " "ON_ERROR_ROLLBACK.\n" -msgstr "Serveru (verze %d.%d) nepodporuje savepoints pro ON_ERROR_ROLLBACK.\n" +msgstr "Server (verze %d.%d) nepodporuje savepoints pro ON_ERROR_ROLLBACK.\n" -#: copy.c:120 +#: copy.c:96 msgid "\\copy: arguments required\n" msgstr "\\copy: argumenty jsou povinné\n" -#: copy.c:399 +#: copy.c:228 #, c-format msgid "\\copy: parse error at \"%s\"\n" msgstr "\\copy: chyba na \"%s\"\n" -#: copy.c:401 +#: copy.c:230 msgid "\\copy: parse error at end of line\n" msgstr "\\copy: chyba na konci řádku\n" -#: copy.c:528 +#: copy.c:294 #, c-format msgid "%s: cannot copy from/to a directory\n" msgstr "%s: nelze kopírovat z/do adresáře\n" -#: copy.c:554 +#: copy.c:331 #, c-format msgid "\\copy: %s" msgstr "\\copy: %s" -#: copy.c:558 copy.c:572 +#: copy.c:335 copy.c:349 #, c-format msgid "\\copy: unexpected response (%d)\n" msgstr "\\copy: neočekávaná odezva (%d)\n" -#: copy.c:627 copy.c:637 +#: copy.c:353 +msgid "trying to exit copy mode" +msgstr "pokouším se opustit copy mód" + +#: copy.c:407 copy.c:417 #, c-format msgid "could not write COPY data: %s\n" msgstr "nelze zapsat data příkazu COPY: %s\n" -#: copy.c:644 +#: copy.c:424 #, c-format msgid "COPY data transfer failed: %s" msgstr "přenos dat příkazem COPY selhal: %s" -#: copy.c:692 +#: copy.c:472 msgid "canceled by user" msgstr "zrušeno na žádost uživatele" # common.c:485 -#: copy.c:707 +#: copy.c:487 msgid "" "Enter data to be copied followed by a newline.\n" "End with a backslash and a period on a line by itself." msgstr "" -"Vstupní data budu kopírována od následující řádky.\n" -"Ukončení kopírování pomocí samostatné řádky s lomítkem (backslash) a tečkou." +"Zadejte data pro kopírování následovaná novým řádkem.\n" +"Ukončete zpětným lomítkem a tečkou na samostatném řádku." -#: copy.c:819 +#: copy.c:600 msgid "aborted because of read failure" msgstr "přerušeno z důvodu chyby čtení" -#: help.c:52 +#: help.c:48 msgid "on" msgstr "zapnuto" -#: help.c:52 +#: help.c:48 msgid "off" msgstr "vypnuto" -#: help.c:74 +#: help.c:70 #, c-format msgid "could not get current user name: %s\n" -msgstr "nelze získat uživatelské jméno: %s\n" +msgstr "nelze získat aktuální uživatelské jméno: %s\n" -#: help.c:86 +#: help.c:82 #, c-format msgid "" "psql is the PostgreSQL interactive terminal.\n" @@ -483,12 +556,12 @@ msgstr "" "psql je PostgreSQL interaktivní terminál.\n" "\n" -#: help.c:87 +#: help.c:83 #, c-format msgid "Usage:\n" msgstr "Použití:\n" -#: help.c:88 +#: help.c:84 #, c-format msgid "" " psql [OPTION]... [DBNAME [USERNAME]]\n" @@ -497,51 +570,53 @@ msgstr "" " psql [PŘEPÍNAČE]... [DATABÁZE [UŽIVATEL]]\n" "\n" -#: help.c:90 +#: help.c:86 #, c-format msgid "General options:\n" -msgstr "Základní přepínače:\n" +msgstr "Základní volby:\n" -#: help.c:95 +#: help.c:91 #, c-format msgid "" " -c, --command=COMMAND run only single command (SQL or internal) and " "exit\n" msgstr "" -" -c, --command=PŘÍKAZ provede pouze jeden příkaz (SQL nebo interní) a skončí\n" +" -c, --command=PŘÍKAZ provede pouze jeden příkaz (SQL nebo interní) a " +"skončí\n" -#: help.c:96 +#: help.c:92 #, c-format msgid "" " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" msgstr "" " -d, --dbname=DATABÁZE jméno databáze pro spojení (implicitně: \"%s\")\n" -#: help.c:97 +#: help.c:93 #, c-format msgid " -f, --file=FILENAME execute commands from file, then exit\n" msgstr " -f, --file=SOUBOR provede příkazy ze souboru a skončí\n" -#: help.c:98 +#: help.c:94 #, c-format msgid " -l, --list list available databases, then exit\n" -msgstr " -l, --list vypíše seznam dostupných databází a skončí\n" +msgstr "" +" -l, --list vypíše seznam dostupných databází a skončí\n" -#: help.c:99 +#: help.c:95 #, c-format msgid "" " -v, --set=, --variable=NAME=VALUE\n" " set psql variable NAME to VALUE\n" msgstr "" -" -v, ..set=, --variable=JMÉNO=HODNOTA\n" +" -v, --set=, --variable=JMÉNO=HODNOTA\n" " nastaví psql proměnnou 'JMÉNO' na 'HODNOTA'\n" -#: help.c:101 +#: help.c:97 #, c-format msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" msgstr " -X, --no-psqlrc nečíst inicializační soubor (~/.psqlrc)\n" -#: help.c:102 +#: help.c:98 #, c-format msgid "" " -1 (\"one\"), --single-transaction\n" @@ -550,17 +625,17 @@ msgstr "" " -1 (\"jedna\"), --single-transaction\n" " zpracuj soubor v rámci jedné transakce\n" -#: help.c:104 +#: help.c:100 #, c-format msgid " --help show this help, then exit\n" msgstr " --help ukáže tuto nápovědu a skončí\n" -#: help.c:105 +#: help.c:101 #, c-format msgid " --version output version information, then exit\n" msgstr " --version ukáže informace o verzi a skončí\n" -#: help.c:107 +#: help.c:103 #, c-format msgid "" "\n" @@ -569,61 +644,64 @@ msgstr "" "\n" "Vstupní a výstupní přepínače:\n" -#: help.c:108 +#: help.c:104 #, c-format msgid " -a, --echo-all echo all input from script\n" msgstr " -a, --echo-all ukáže všechny vstupy ze skriptu\n" -#: help.c:109 +#: help.c:105 #, c-format msgid " -e, --echo-queries echo commands sent to server\n" msgstr " -e --echo-queries ukáže všechny příkazy poslané na server\n" -#: help.c:110 +#: help.c:106 #, c-format msgid "" " -E, --echo-hidden display queries that internal commands generate\n" -msgstr "" -" -E, --echo-hidden ukáže dotazy, které generují interní příkazy\n" +msgstr " -E, --echo-hidden ukáže dotazy generované interními příkazy\n" -#: help.c:111 +#: help.c:107 #, c-format msgid " -L, --log-file=FILENAME send session log to file\n" msgstr " -L, --log-file=FILENAME uloží záznam sezení do souboru\n" -#: help.c:112 +#: help.c:108 #, c-format msgid "" " -n, --no-readline disable enhanced command line editing (readline)\n" msgstr "" -" -n, --no-readline vypne editační možnosti příkazové řádky (podpora readline)\n" +" -n, --no-readline vypne pokročilé editační možnosti příkazové řádky " +"(podpora readline)\n" -#: help.c:113 +#: help.c:109 #, c-format msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" -msgstr " -o, --output=SOUBOR zapíše výsledek dotazu do souboru (nebo |roury)\n" +msgstr "" +" -o, --output=SOUBOR zapíše výsledek dotazu do souboru (nebo |roury)\n" -#: help.c:114 +#: help.c:110 #, c-format msgid "" " -q, --quiet run quietly (no messages, only query output)\n" msgstr "" " -q, --quiet tichý chod (bez hlášek, pouze výstupy dotazů)\n" -#: help.c:115 +#: help.c:111 #, c-format msgid " -s, --single-step single-step mode (confirm each query)\n" -msgstr " -s, --single-step krokovací mód (nutné potvrzení každého dotazu)\n" +msgstr "" +" -s, --single-step krokovací mód (nutné potvrzení každého dotazu)\n" -#: help.c:116 +#: help.c:112 #, c-format msgid "" " -S, --single-line single-line mode (end of line terminates SQL " "command)\n" msgstr "" -" -S, --single-line jednořádkový mód (konec řádky ukončuje SQL příkaz)\n" +" -S, --single-line jednořádkový mód (konec řádky ukončuje SQL " +"příkaz)\n" -#: help.c:118 +#: help.c:114 #, c-format msgid "" "\n" @@ -632,12 +710,12 @@ msgstr "" "\n" "Výstupní formát je:\n" -#: help.c:119 +#: help.c:115 #, c-format msgid " -A, --no-align unaligned table output mode\n" msgstr " -A, --no-align mód nezarovnaného formátu tabulky\n" -#: help.c:120 +#: help.c:116 #, c-format msgid "" " -F, --field-separator=STRING\n" @@ -646,21 +724,21 @@ msgstr "" " -F, --field-separator=ŘETĚZEC\n" " oddělovač polí (implicitně: \"%s\")\n" -#: help.c:123 +#: help.c:119 #, c-format msgid " -H, --html HTML table output mode\n" msgstr " -H, --html Mód HTML formátu tabulky\n" -#: help.c:124 +#: help.c:120 #, c-format msgid "" " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset " "command)\n" msgstr "" -" -P, --pset=VAR[=ARG] nastaví zobrazovací parametr 'VAR' na hodnotu 'ARG' (viz. příkaz " -"\\pset)\n" +" -P, --pset=VAR[=ARG] nastaví zobrazovací parametr 'VAR' na hodnotu " +"'ARG' (viz. příkaz \\pset)\n" -#: help.c:125 +#: help.c:121 #, c-format msgid "" " -R, --record-separator=STRING\n" @@ -669,25 +747,26 @@ msgstr "" " -R, --record-separator=ŘETĚZEC\n" " oddělovač záznamů (implicitně: newline)\n" -#: help.c:127 +#: help.c:123 #, c-format msgid " -t, --tuples-only print rows only\n" msgstr " -t, --tuples-only tiskne pouze řádky\n" -#: help.c:128 +#: help.c:124 #, c-format msgid "" " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, " "border)\n" msgstr "" -" -T, --table-attr=TEXT nastavení atributů HTML tabulky (např. width, border)\n" +" -T, --table-attr=TEXT nastavení atributů HTML tabulky (např. width, " +"border)\n" -#: help.c:129 +#: help.c:125 #, c-format msgid " -x, --expanded turn on expanded table output\n" msgstr " -x, --expanded výstupu v rozšířené tabulce\n" -#: help.c:131 +#: help.c:127 #, c-format msgid "" "\n" @@ -696,41 +775,39 @@ msgstr "" "\n" "Parametry spojení:\n" -#: help.c:134 +#: help.c:130 #, c-format msgid "" " -h, --host=HOSTNAME database server host or socket directory " "(default: \"%s\")\n" msgstr "" -" -h, --host=HOSTNAME jméno databázového serveru nebo adresář se soketem " -"(implicitně: \"%s\")\n" +" -h, --host=HOSTNAME jméno databázového serveru nebo adresář se " +"soketem (implicitně: \"%s\")\n" -#: help.c:135 +#: help.c:131 msgid "local socket" msgstr "lokální soket" -#: help.c:138 +#: help.c:134 #, c-format -msgid "" -" -p, --port=PORT database server port (default: \"%s\")\n" +msgid " -p, --port=PORT database server port (default: \"%s\")\n" msgstr "" -" -p, --port=PORT specifikuje port databázového serveru (implicitně: \"%s" -"\")\n" +" -p, --port=PORT specifikuje port databázového serveru " +"(implicitně: \"%s\")\n" -#: help.c:144 +#: help.c:140 #, c-format -msgid "" -" -U, --username=USERNAME database user name (default: \"%s\")\n" +msgid " -U, --username=USERNAME database user name (default: \"%s\")\n" msgstr "" -" -U, --username=JMÉNO specifikuje jméno databázového uživatele (implicitně: \"%s" -"\")\n" +" -U, --username=JMÉNO specifikuje jméno databázového uživatele " +"(implicitně: \"%s\")\n" -#: help.c:145 -#, fu c-format +#: help.c:141 +#, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password neptá se na heslo\n" -#: help.c:146 +#: help.c:142 #, c-format msgid "" " -W, --password force password prompt (should happen " @@ -739,7 +816,7 @@ msgstr "" " -W, --password vynucený dotaz na heslo (měl by být proveden " "automaticky)\n" -#: help.c:148 +#: help.c:144 #, c-format msgid "" "\n" @@ -755,315 +832,361 @@ msgstr "" "části věnované psql.\n" "\n" -#: help.c:151 +#: help.c:147 #, c-format msgid "Report bugs to .\n" msgstr "Chyby posílejte na adresu .\n" -#: help.c:169 +#: help.c:170 #, c-format msgid "General\n" msgstr "Hlavní\n" -#: help.c:170 +#: help.c:171 #, c-format msgid "" " \\copyright show PostgreSQL usage and distribution terms\n" msgstr "" " \\copyright zobrazí podmínky použití a distribuce PostgreSQL\n" -#: help.c:171 +#: help.c:172 #, c-format msgid "" " \\g [FILE] or ; execute query (and send results to file or |pipe)\n" msgstr "" -" \\g [SOUBOR] nebo ; pošle SQL dotaz na server (a zapíše výsledek do souboru" -" nebo |roury)\n" +" \\g [SOUBOR] nebo ; pošle SQL dotaz na server (a zapíše výsledek do " +"souboru nebo |roury)\n" -#: help.c:172 +#: help.c:173 #, c-format msgid "" " \\h [NAME] help on syntax of SQL commands, * for all " "commands\n" msgstr "" -" \\h [JMÉNO] nápověda syntaxe SQL příkazů, * pro všechny příkazy\n" +" \\h [JMÉNO] nápověda syntaxe SQL příkazů, * pro všechny " +"příkazy\n" -#: help.c:173 +#: help.c:174 #, c-format msgid " \\q quit psql\n" msgstr " \\q ukončení psql\n" -#: help.c:176 +#: help.c:177 #, c-format msgid "Query Buffer\n" msgstr "Paměť dotazu\n" -#: help.c:177 +#: help.c:178 #, c-format msgid "" -" \\e [FILE] edit the query buffer (or file) with external " +" \\e [FILE] [LINE] edit the query buffer (or file) with external " "editor\n" msgstr "" -" \\e [SOUBOR] editace aktuálního dotazu (nebo souboru) v externím " -"editoru\n" +" \\e [SOUBOR] [ŘÁDEK] editace aktuálního dotazu (nebo souboru) v " +"externím editoru\n" -#: help.c:178 +#: help.c:179 #, c-format msgid "" -" \\ef [FUNCNAME] edit function definition with external editor\n" +" \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" msgstr "" -" \\ef [JMENOFUNKCE] editace definice funkce v externím editoru\n" +" \\ef [JMENOFUNKCE [ŘÁDEK]] editace definice funkce v externím " +"editoru\n" -#: help.c:179 +#: help.c:180 #, c-format msgid " \\p show the contents of the query buffer\n" msgstr " \\p ukázat současný obsah paměti s dotazem\n" -#: help.c:180 +#: help.c:181 #, c-format msgid " \\r reset (clear) the query buffer\n" msgstr " \\r vyprázdnění paměti s dotazy\n" -#: help.c:182 +#: help.c:183 #, c-format msgid " \\s [FILE] display history or save it to file\n" msgstr " \\s [SOUBOR] vytiskne historii nebo ji uloží do souboru\n" -#: help.c:184 +#: help.c:185 #, c-format msgid " \\w FILE write query buffer to file\n" msgstr " \\w SOUBOR zapsání paměti s dotazem do souboru\n" -#: help.c:187 +#: help.c:188 #, c-format msgid "Input/Output\n" msgstr "Vstup/Výstup\n" -#: help.c:188 +#: help.c:189 #, c-format msgid "" " \\copy ... perform SQL COPY with data stream to the client " "host\n" -msgstr "" -" \\copy ... provede SQL COPY s tokem dat na klienta\n" +msgstr " \\copy ... provede SQL COPY s tokem dat na klienta\n" -#: help.c:189 +#: help.c:190 #, c-format msgid " \\echo [STRING] write string to standard output\n" msgstr " \\echo [TEXT] vypsání textu na standardní výstup\n" -#: help.c:190 +#: help.c:191 #, c-format msgid " \\i FILE execute commands from file\n" msgstr " \\i SOUBOR provedení příkazů ze souboru\n" -#: help.c:191 +#: help.c:192 #, c-format -msgid "" -" \\o [FILE] send all query results to file or |pipe\n" +msgid " \\o [FILE] send all query results to file or |pipe\n" msgstr "" -" \\o [SOUBOR] přesměrování výsledků dotazu do souboru nebo |roury\n" +" \\o [SOUBOR] přesměrování výsledků dotazu do souboru nebo |" +"roury\n" -#: help.c:192 +#: help.c:193 #, c-format msgid "" " \\qecho [STRING] write string to query output stream (see \\o)\n" -msgstr "" -" \\qecho [ŘETĚZEC] vypsání textu na výstup dotazů (viz. \\o)\n" +msgstr " \\qecho [ŘETĚZEC] vypsání textu na výstup dotazů (viz. \\o)\n" -#: help.c:195 +#: help.c:196 #, c-format msgid "Informational\n" msgstr "Informační\n" -#: help.c:196 +#: help.c:197 #, c-format msgid " (options: S = show system objects, + = additional detail)\n" msgstr " (volby: S = zobraz systémové objekty, + = další detaily)\n" -#: help.c:197 +#: help.c:198 #, c-format msgid " \\d[S+] list tables, views, and sequences\n" -msgstr " \\dp[S+] seznam tabulek, pohledů a sekvencí\n" +msgstr " \\d[S+] seznam tabulek, pohledů a sekvencí\n" -#: help.c:198 +#: help.c:199 #, c-format msgid " \\d[S+] NAME describe table, view, sequence, or index\n" -msgstr " \\d[S+] JMÉNO popis tabulky, pohledů, sekvence nebo indexu\n" +msgstr "" +" \\d[S+] JMÉNO popis tabulky, pohledů, sekvence nebo indexu\n" -#: help.c:199 +#: help.c:200 #, c-format -msgid " \\da[+] [PATTERN] list aggregates\n" -msgstr " \\da[+] [VZOR] seznam agregátních funkcí\n" +msgid " \\da[S] [PATTERN] list aggregates\n" +msgstr " \\da[S] [VZOR] seznam agregačních funkcí\n" -#: help.c:200 +#: help.c:201 #, c-format msgid " \\db[+] [PATTERN] list tablespaces\n" -msgstr " \\db[+] [VZOR] seznam tablespaců\n" +msgstr " \\db[+] [VZOR] seznam tablespaces\n" -#: help.c:201 +#: help.c:202 #, c-format msgid " \\dc[S] [PATTERN] list conversions\n" msgstr " \\dc[S] [VZOR] seznam konverzí\n" -#: help.c:202 +#: help.c:203 #, c-format msgid " \\dC [PATTERN] list casts\n" msgstr " \\dC [VZOR] seznam přetypování\n" -#: help.c:203 +#: help.c:204 #, c-format msgid " \\dd[S] [PATTERN] show comments on objects\n" -msgstr " \\dd[S] [VZOR] ukázat komentář k objektu\n" +msgstr " \\dd[S] [VZOR] ukázat komentáře k objektům\n" -#: help.c:204 +#: help.c:205 +#, c-format +msgid " \\ddp [PATTERN] list default privileges\n" +msgstr " \\ddp [VZOR] seznam implicitních privilegií\n" + +#: help.c:206 #, c-format msgid " \\dD[S] [PATTERN] list domains\n" msgstr " \\dD[S] [VZOR] seznam domén (domain)\n" -#: help.c:205 +#: help.c:207 +#, c-format +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [VZOR] seznam foreign tabulek\n" + +#: help.c:208 #, c-format msgid " \\des[+] [PATTERN] list foreign servers\n" msgstr " \\des[+] [VZOR] seznam foreign serverů\n" -#: help.c:206 +#: help.c:209 #, c-format msgid " \\deu[+] [PATTERN] list user mappings\n" msgstr " \\deu[+] [VZOR] seznam mapování uživatelů\n" -#: help.c:207 +#: help.c:210 #, c-format msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" -msgstr " \\dew[+] [VZOR] seznam foreign-data wrappers\n" +msgstr " \\dew[+] [VZOR] seznam foreign-data wrapperů\n" -#: help.c:208 +#: help.c:211 #, c-format msgid "" " \\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions\n" msgstr "" " \\df[antw][S+] [VZOR] seznam [pouze agg/normal/trigger/window] funkcí\n" -#: help.c:209 +#: help.c:212 #, c-format msgid " \\dF[+] [PATTERN] list text search configurations\n" -msgstr " \\dF[+] [VZOR] seznam konfigurací fulltextového vyhledávání\n" +msgstr "" +" \\dF[+] [VZOR] seznam konfigurací fulltextového vyhledávání\n" -#: help.c:210 +#: help.c:213 #, c-format msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" msgstr " \\dFd[+] [VZOR] seznam slovníků fulltextového vyhledávání\n" -#: help.c:211 +#: help.c:214 #, c-format msgid " \\dFp[+] [PATTERN] list text search parsers\n" msgstr " \\dFp[+] [VZOR] seznam parserů fulltextového vyhledávání\n" -#: help.c:212 +#: help.c:215 #, c-format msgid " \\dFt[+] [PATTERN] list text search templates\n" msgstr " \\dFt[+] [VZOR] seznam šablon fulltextového vyhledávání\n" -#: help.c:213 +#: help.c:216 #, c-format -msgid " \\dg [PATTERN] list roles (groups)\n" -msgstr " \\dg [VZOR] seznam rolí (skupin)\n" +msgid " \\dg[+] [PATTERN] list roles\n" +msgstr " \\dg[+] [VZOR] seznam rolí\n" -#: help.c:214 +#: help.c:217 #, c-format msgid " \\di[S+] [PATTERN] list indexes\n" msgstr " \\di[S+] [VZOR] seznam indexů\n" -#: help.c:215 +#: help.c:218 #, c-format msgid " \\dl list large objects, same as \\lo_list\n" -msgstr " \\dl seznam \"large object\" stejné jako \\lo_list\n" +msgstr "" +" \\dl seznam \"large object\" stejné jako \\lo_list\n" -#: help.c:216 +#: help.c:219 #, c-format -msgid " \\dn[+] [PATTERN] list schemas\n" -msgstr " \\dn[+] [VZOR] seznam schémat\n" +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [VZOR] seznam procedurálních jazyků\n" -#: help.c:217 +#: help.c:220 +#, c-format +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [VZOR] seznam schémat\n" + +#: help.c:221 #, c-format msgid " \\do[S] [PATTERN] list operators\n" msgstr " \\do[S] [VZOR] seznam operátorů\n" -#: help.c:218 +#: help.c:222 +#, c-format +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [VZOR] seznam collations\n" + +#: help.c:223 #, c-format msgid "" " \\dp [PATTERN] list table, view, and sequence access privileges\n" msgstr "" -" \\dp [VZOR] seznam přístupových práv tabulek, pohledů a sekvencí\n" +" \\dp [VZOR] seznam přístupových práv tabulek, pohledů a " +"sekvencí\n" -#: help.c:219 +#: help.c:224 +#, c-format +msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n" +msgstr "" +" \\drds [VZOR1 [VZOR2]] seznam nastavení rolí pro jednotlivé databáze\n" + +#: help.c:225 #, c-format msgid " \\ds[S+] [PATTERN] list sequences\n" msgstr " \\ds[S+] [VZOR] seznam sekvencí\n" -#: help.c:220 +#: help.c:226 #, c-format msgid " \\dt[S+] [PATTERN] list tables\n" msgstr " \\dt[S+] [VZOR] seznam tabulek\n" -#: help.c:221 +#: help.c:227 #, c-format msgid " \\dT[S+] [PATTERN] list data types\n" msgstr " \\dT[S+] [VZOR] seznam datových typů\n" -#: help.c:222 +#: help.c:228 #, c-format -msgid " \\du [PATTERN] list roles (users)\n" -msgstr " \\du [VZOR] seznam rolí (uživatelů)\n" +msgid " \\du[+] [PATTERN] list roles\n" +msgstr " \\du[+] [VZOR] seznam rolí (uživatelů)\n" -#: help.c:223 +#: help.c:229 #, c-format msgid " \\dv[S+] [PATTERN] list views\n" msgstr " \\dv[S+] [VZOR] seznam pohledů\n" -#: help.c:224 +#: help.c:230 +#, c-format +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [VZOR] seznam foreign tabulek\n" + +#: help.c:231 +#, c-format +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [VZOR] seznam rozšíření\n" + +#: help.c:232 #, c-format msgid " \\l[+] list all databases\n" -msgstr " \\l[+] seznam databázích \n" +msgstr " \\l[+] seznam databází\n" -#: help.c:225 +#: help.c:233 +#, c-format +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] [JMENOFUNKCE] zobrazí definici funkce\n" + +#: help.c:234 #, c-format msgid " \\z [PATTERN] same as \\dp\n" msgstr " \\z [VZOR] stejné jako \\dp\n" -#: help.c:228 +#: help.c:237 #, c-format msgid "Formatting\n" msgstr "Formátování\n" -#: help.c:229 +#: help.c:238 #, c-format msgid "" " \\a toggle between unaligned and aligned output mode\n" -msgstr "" -" \\a přepíná mezi 'unaligned' a 'aligned' modem výstupu\n" +msgstr "" +" \\a přepíná mezi 'unaligned' a 'aligned' modem " +"výstupu\n" -#: help.c:230 +#: help.c:239 #, c-format msgid " \\C [STRING] set table title, or unset if none\n" msgstr "" " \\C [ŘETĚZEC] nastaví titulek tabulky nebo odnastaví pokud není " "definován řetězec\n" -#: help.c:231 +#: help.c:240 #, c-format msgid "" " \\f [STRING] show or set field separator for unaligned query " "output\n" msgstr "" -" \\f [ŘETĚZEC] nastaví nebo zobrazí oddělovače polí pro nezarovnaný " -"výstup dotazů\n" +" \\f [ŘETĚZEC] nastaví nebo zobrazí oddělovače polí pro " +"nezarovnaný výstup dotazů\n" -#: help.c:232 +#: help.c:241 #, c-format msgid " \\H toggle HTML output mode (currently %s)\n" msgstr " \\H zapne HTML mód výstupu (nyní %s)\n" -#: help.c:234 +#: help.c:243 #, c-format msgid "" " \\pset NAME [VALUE] set table output option\n" @@ -1073,32 +1196,32 @@ msgid "" "pager})\n" msgstr "" " \\pset JMÉNO [HODNOTA] nastaví parametry výstupní tabulky\n" -" (JMÉNO := {format|border|expanded|fieldsep|footer|null|\n" +" (JMÉNO := {format|border|expanded|fieldsep|footer|" +"null|\n" " recordsep|tuples_only|title|tableattr|pager})\n" -#: help.c:237 +#: help.c:246 #, c-format msgid " \\t [on|off] show only rows (currently %s)\n" msgstr " \\t [on|off] ukazovat pouze řádky (nyní %s)\n" -#: help.c:239 +#: help.c:248 #, c-format msgid "" " \\T [STRING] set HTML
tag attributes, or unset if none\n" -msgstr "" -" \\T [ŘETĚZEC] nastavení atributů HTML tagu
\n" +msgstr " \\T [ŘETĚZEC] nastavení atributů HTML tagu
\n" -#: help.c:240 +#: help.c:249 #, c-format msgid " \\x [on|off] toggle expanded output (currently %s)\n" msgstr " \\x [on|off] zapne rozšířený mód výstupu (nyní %s)\n" -#: help.c:244 +#: help.c:253 #, c-format msgid "Connection\n" msgstr "Spojení\n" -#: help.c:245 +#: help.c:254 #, c-format msgid "" " \\c[onnect] [DBNAME|- USER|- HOST|- PORT|-]\n" @@ -1107,71 +1230,79 @@ msgstr "" " \\c[onnect] [DATABÁZE|- UŽIVATEL|- HOST|- PORT|-]]\n" " vytvoří spojení do nové databáze (současná \"%s\")\n" -#: help.c:248 +#: help.c:257 #, c-format msgid " \\encoding [ENCODING] show or set client encoding\n" msgstr " \\encoding [KÓDOVÁNÍ] zobrazení nebo nastavení kódování klienta\n" -#: help.c:249 +#: help.c:258 #, c-format msgid " \\password [USERNAME] securely change the password for a user\n" msgstr " \\password [UŽIVATEL] bezpečná změna hesla uživatele\n" -#: help.c:252 +#: help.c:259 +#, c-format +msgid "" +" \\conninfo display information about current connection\n" +msgstr " \\conninfo zobrazí informace o aktuálním spojení\n" + +#: help.c:262 #, c-format msgid "Operating System\n" msgstr "Operační systém\n" -#: help.c:253 +#: help.c:263 #, c-format msgid " \\cd [DIR] change the current working directory\n" msgstr " \\cd [ADRESÁŘ] změna aktuálního pracovního adresář\n" -#: help.c:254 +#: help.c:264 #, c-format msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" msgstr " \\timing [on|off] použít sledování času u příkazů (nyní %s)\n" -#: help.c:256 +#: help.c:266 #, c-format msgid "" " \\! [COMMAND] execute command in shell or start interactive " "shell\n" msgstr "" -" \\! [PŘÍKAZ] provedení příkazu v shellu nebo nastartuje interaktivní " -"shell\n" +" \\! [PŘÍKAZ] provedení příkazu v shellu nebo nastartuje " +"interaktivní shell\n" -#: help.c:259 +#: help.c:269 #, c-format msgid "Variables\n" msgstr "Proměnné\n" -#: help.c:260 +#: help.c:270 #, c-format msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" -msgstr " \\prompt [TEXT] PROMĚNÁ vyzve uživatele, aby zadal hodnotu proměnné\n" +msgstr "" +" \\prompt [TEXT] PROMĚNÁ vyzve uživatele, aby zadal hodnotu proměnné\n" -#: help.c:261 +#: help.c:271 #, c-format msgid "" " \\set [NAME [VALUE]] set internal variable, or list all if no " "parameters\n" msgstr "" " \\set [PROMĚNÁ [HODNOTA]]\n" -" nastavení interní proměnné nebo bez parametrů zobrazí\n" +" nastavení interní proměnné nebo bez parametrů " +"zobrazí\n" " seznam všech proměnných\n" -#: help.c:262 +#: help.c:272 #, c-format msgid " \\unset NAME unset (delete) internal variable\n" msgstr " \\unset JMÉNO zrušení interní proměnné\n" -#: help.c:265 +#: help.c:275 #, c-format msgid "Large Objects\n" -msgstr "Velké objekty\n" +msgstr "Velké objekty (LO)\n" -#: help.c:266 +#: help.c:276 #, c-format msgid "" " \\lo_export LOBOID FILE\n" @@ -1184,7 +1315,7 @@ msgstr "" " \\lo_list\n" " \\lo_unlink LOBOID operace s \"large\" objekty\n" -#: help.c:318 +#: help.c:323 msgid "Available help:\n" msgstr "Dostupná nápověda:\n" @@ -1206,23 +1337,23 @@ msgstr "" #: help.c:423 #, c-format msgid "" -"No help available for \"%-.*s\".\n" +"No help available for \"%s\".\n" "Try \\h with no arguments to see available help.\n" msgstr "" -"Nápověda pro \"%-.*s\" je nedostupná.\n" +"Nápověda pro \"%s\" je nedostupná.\n" "Pomocí \\h bez parametrů lze získat seznam dostupných nápověd.\n" -#: input.c:187 +#: input.c:198 #, c-format msgid "could not read from input file: %s\n" msgstr "nelze číst vstupní soubor: %s\n" -#: input.c:347 +#: input.c:406 #, c-format msgid "could not save history to file \"%s\": %s\n" msgstr "nelze uložit historii do souboru \"%s\": %s\n" -#: input.c:352 +#: input.c:411 msgid "history is not supported by this installation\n" msgstr "historie není podporována pro tuto instalaci\n" @@ -1234,39 +1365,45 @@ msgstr "%s: není spojení s databází\n" #: large_obj.c:85 #, c-format msgid "%s: current transaction is aborted\n" -msgstr "%s: současná transakce je jen nestandardně ukončena (abort)\n" +msgstr "%s: současná transakce je nestandardně ukončena (abort)\n" #: large_obj.c:88 #, c-format msgid "%s: unknown transaction status\n" msgstr "%s: neznámý status transakce\n" -#: large_obj.c:286 +#: large_obj.c:289 large_obj.c:300 msgid "ID" -msgstr "" +msgstr "ID" -#: large_obj.c:287 describe.c:95 describe.c:158 describe.c:337 describe.c:490 -#: describe.c:565 describe.c:636 describe.c:759 describe.c:1237 -#: describe.c:2008 describe.c:2136 describe.c:2428 describe.c:2490 -#: describe.c:2626 describe.c:2665 describe.c:2732 describe.c:2791 -#: describe.c:2800 describe.c:2859 -msgid "Description" +#: large_obj.c:290 describe.c:147 describe.c:335 describe.c:637 describe.c:787 +#: describe.c:2513 describe.c:2631 describe.c:2975 describe.c:3606 +#: describe.c:3671 +msgid "Owner" +msgstr "Vlastník" + +#: large_obj.c:291 large_obj.c:301 describe.c:96 describe.c:159 describe.c:338 +#: describe.c:501 describe.c:590 describe.c:661 describe.c:852 describe.c:1382 +#: describe.c:2330 describe.c:2537 describe.c:2918 describe.c:2983 +#: describe.c:3048 describe.c:3184 describe.c:3223 describe.c:3290 +#: describe.c:3349 describe.c:3358 describe.c:3417 describe.c:3856 +msgid "Description" msgstr "Popis" -#: large_obj.c:295 +#: large_obj.c:310 msgid "Large objects" msgstr "Velké objekty (LO)" -#: mainloop.c:156 +#: mainloop.c:159 #, c-format msgid "Use \"\\q\" to leave %s.\n" msgstr "Použijte \"\\q\" pro odchod z %s.\n" -#: mainloop.c:182 +#: mainloop.c:189 msgid "You are using psql, the command-line interface to PostgreSQL." msgstr "Používáte psql, řádkový nástroj pro připojení k PostgreSQL." -#: mainloop.c:183 +#: mainloop.c:190 #, c-format msgid "" "Type: \\copyright for distribution terms\n" @@ -1277,49 +1414,50 @@ msgid "" msgstr "" "Pište: \\copyright pro podmínky distribuce\n" " \\h pro nápovědu k SQL příkazům\n" -" \\? pro nápovědu k pgsql příkazům\n" +" \\? pro nápovědu k psql příkazům\n" " \\g nebo středník pro ukončení SQL příkazů\n" " \\q pro ukončení programu\n" -#: print.c:973 +#: print.c:1138 #, c-format msgid "(No rows)\n" msgstr "(Žádné řádky)\n" -#: print.c:1960 +#: print.c:2028 #, c-format msgid "Interrupted\n" -msgstr "" +msgstr "Přerušeno\n" -#: print.c:2027 +#: print.c:2097 #, c-format msgid "Cannot add header to table content: column count of %d exceeded.\n" -msgstr "" +msgstr "Nelze přidat hlavičku k obsahu tabulky: překročen počet sloupců %d.\n" -#: print.c:2064 +#: print.c:2137 #, c-format msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" msgstr "" +"Nelze přidat buňku do obsahu tabulky: překročen celkový počet buněk %d.\n" -#: print.c:2263 +#: print.c:2358 #, c-format msgid "invalid output format (internal error): %d" msgstr "specifikován neplatný formát výstupu (interní chyba): %d" -#: print.c:2351 +#: print.c:2455 #, c-format -msgid "(1 row)" +msgid "(%lu row)" msgid_plural "(%lu rows)" msgstr[0] "(%lu řádka)" msgstr[1] "(%lu řádky)" msgstr[2] "(%lu řádek)" -#: startup.c:217 +#: startup.c:243 #, c-format msgid "%s: could not open log file \"%s\": %s\n" msgstr "%s: nelze otevřít logovací soubor \"%s\": %s\n" -#: startup.c:279 +#: startup.c:305 #, c-format msgid "" "Type \"help\" for help.\n" @@ -1328,677 +1466,783 @@ msgstr "" "Pro získání nápovědy napište \"help\".\n" "\n" -#: startup.c:425 +#: startup.c:451 #, c-format msgid "%s: could not set printing parameter \"%s\"\n" msgstr "%s: nelze nastavit parametr zobrazení \"%s\"\n" -#: startup.c:464 +#: startup.c:490 #, c-format msgid "%s: could not delete variable \"%s\"\n" -msgstr "%s: nelze smazat proměnná \"%s\"\n" +msgstr "%s: nelze smazat proměnnou \"%s\"\n" -#: startup.c:474 +#: startup.c:500 #, c-format msgid "%s: could not set variable \"%s\"\n" -msgstr "%s: nelze nastavit proměnná \"%s\"\n" +msgstr "%s: nelze nastavit proměnnou \"%s\"\n" -#: startup.c:511 startup.c:517 +#: startup.c:537 startup.c:543 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Zkuste \"%s --help\" pro více informací.\n" -#: startup.c:534 +#: startup.c:560 #, c-format msgid "%s: warning: extra command-line argument \"%s\" ignored\n" -msgstr "%s: varování: zvláštní parametr příkazové řádky \"%s\" ignorován\n" +msgstr "%s: varování: nadbytečný parametr příkazové řádky \"%s\" ignorován\n" -#: startup.c:599 +#: startup.c:625 msgid "contains support for command-line editing" -msgstr "obsahuje podporu editaci příkazové řádky " +msgstr "obsahuje podporu pro editaci příkazové řádky " -#: describe.c:68 describe.c:235 describe.c:462 describe.c:560 describe.c:681 -#: describe.c:756 describe.c:2114 describe.c:2234 describe.c:2289 -#: describe.c:2488 describe.c:2715 describe.c:2787 describe.c:2798 -#: describe.c:2857 +#: describe.c:69 describe.c:236 describe.c:463 describe.c:585 describe.c:706 +#: describe.c:788 describe.c:849 describe.c:2504 describe.c:2698 +#: describe.c:2768 describe.c:2910 describe.c:3046 describe.c:3273 +#: describe.c:3345 describe.c:3356 describe.c:3415 describe.c:3789 +#: describe.c:3855 msgid "Schema" msgstr "Schéma" -#: describe.c:69 describe.c:145 describe.c:236 describe.c:463 describe.c:561 -#: describe.c:611 describe.c:682 describe.c:757 describe.c:2115 -#: describe.c:2235 describe.c:2290 describe.c:2419 describe.c:2489 -#: describe.c:2716 describe.c:2788 describe.c:2799 describe.c:2858 -#: describe.c:3048 describe.c:3107 +#: describe.c:70 describe.c:146 describe.c:237 describe.c:464 describe.c:586 +#: describe.c:636 describe.c:707 describe.c:850 describe.c:2505 +#: describe.c:2627 describe.c:2699 describe.c:2769 describe.c:2911 +#: describe.c:2974 describe.c:3047 describe.c:3274 describe.c:3346 +#: describe.c:3357 describe.c:3416 describe.c:3605 describe.c:3670 +#: describe.c:3853 msgid "Name" msgstr "Jméno" -#: describe.c:70 describe.c:248 describe.c:294 describe.c:311 +#: describe.c:71 describe.c:249 describe.c:295 describe.c:312 msgid "Result data type" msgstr "Datový typ výsledku" -#: describe.c:84 describe.c:88 describe.c:249 describe.c:295 describe.c:312 +#: describe.c:85 describe.c:89 describe.c:250 describe.c:296 describe.c:313 msgid "Argument data types" msgstr "Datový typ parametru" -#: describe.c:113 +#: describe.c:114 msgid "List of aggregate functions" -msgstr "Seznam agregátních funkcí" +msgstr "Seznam agregačních funkcí" -#: describe.c:134 +#: describe.c:135 #, c-format msgid "The server (version %d.%d) does not support tablespaces.\n" -msgstr "Server (verze %d.%d) nepodporuje tablespace.\n" - -#: describe.c:146 describe.c:334 describe.c:612 describe.c:2122 -#: describe.c:2420 describe.c:3049 describe.c:3108 -msgid "Owner" -msgstr "Vlastník" +msgstr "Server (verze %d.%d) nepodporuje tablespaces.\n" -#: describe.c:147 +#: describe.c:148 msgid "Location" msgstr "Umístění" -#: describe.c:175 +#: describe.c:176 msgid "List of tablespaces" msgstr "Seznam tablespaces" -#: describe.c:212 +#: describe.c:213 #, c-format msgid "\\df only takes [antwS+] as options\n" -msgstr "pro \\df můžete použít pouze tyto přepínače [antwS+]\n" +msgstr "pro \\df můžete použít pouze přepínače [antwS+]\n" -#: describe.c:218 +#: describe.c:219 #, c-format -msgid "\\df does not take a \"w\" option in %d.%d.\n" -msgstr "pro \\df nelze použít \"w\" ve verzi %d.%d.\n" +msgid "\\df does not take a \"w\" option with server version %d.%d\n" +msgstr "pro \\df nelze použít volbu \"w\" ve verzi serveru %d.%d.\n" #. translator: "agg" is short for "aggregate" -#: describe.c:251 describe.c:297 describe.c:314 +#: describe.c:252 describe.c:298 describe.c:315 msgid "agg" -msgstr "" +msgstr "agg" -#: describe.c:252 +#: describe.c:253 msgid "window" -msgstr "" +msgstr "window" -#: describe.c:253 describe.c:298 describe.c:315 describe.c:896 +#: describe.c:254 describe.c:299 describe.c:316 describe.c:990 msgid "trigger" msgstr "trigger" -#: describe.c:254 describe.c:299 describe.c:316 +#: describe.c:255 describe.c:300 describe.c:317 msgid "normal" -msgstr "normální" +msgstr "normal" -#: describe.c:255 describe.c:300 describe.c:317 describe.c:684 describe.c:1222 -#: describe.c:2121 describe.c:2236 describe.c:3120 +#: describe.c:256 describe.c:301 describe.c:318 describe.c:710 describe.c:792 +#: describe.c:1362 describe.c:2512 describe.c:2700 describe.c:3683 msgid "Type" msgstr "Typ" -#: describe.c:330 -#, fuzzy +#: describe.c:331 msgid "immutable" -msgstr "tabulka" +msgstr "immutable" -#: describe.c:331 +#: describe.c:332 msgid "stable" -msgstr "stabilní" +msgstr "stable" -#: describe.c:332 +#: describe.c:333 msgid "volatile" -msgstr "" +msgstr "volatile" -#: describe.c:333 +#: describe.c:334 msgid "Volatility" -msgstr "" +msgstr "Volatilita" -#: describe.c:335 +#: describe.c:336 msgid "Language" msgstr "Jazyk" -#: describe.c:336 +#: describe.c:337 msgid "Source code" msgstr "Zdrojový kód" -#: describe.c:434 +#: describe.c:435 msgid "List of functions" msgstr "Seznam funkcí" -#: describe.c:473 +#: describe.c:474 msgid "Internal name" msgstr "Interní jméno" -#: describe.c:474 describe.c:628 describe.c:2132 +#: describe.c:475 describe.c:653 describe.c:2529 describe.c:2533 msgid "Size" msgstr "Velikost" -#: describe.c:486 +#: describe.c:496 msgid "Elements" -msgstr "Prvky" +msgstr "Složky" -#: describe.c:529 +#: describe.c:541 msgid "List of data types" msgstr "Seznam datových typů" -#: describe.c:562 +#: describe.c:587 msgid "Left arg type" msgstr "Typ levého arg." -#: describe.c:563 +#: describe.c:588 msgid "Right arg type" msgstr "Typ pravého arg." -#: describe.c:564 +#: describe.c:589 msgid "Result type" msgstr "Typ výsledku" -#: describe.c:583 +#: describe.c:608 msgid "List of operators" msgstr "Seznam operátorů" -#: describe.c:613 +#: describe.c:638 msgid "Encoding" msgstr "Kódování" -#: describe.c:618 -msgid "Collation" -msgstr "" +#: describe.c:643 describe.c:2912 +msgid "Collate" +msgstr "Collation" -#: describe.c:619 -#, fuzzy +#: describe.c:644 describe.c:2913 msgid "Ctype" -msgstr "Typ" +msgstr "CType" -#: describe.c:632 +#: describe.c:657 msgid "Tablespace" msgstr "Tablespace" -#: describe.c:649 +#: describe.c:674 msgid "List of databases" msgstr "Seznam databází" -#: describe.c:683 describe.c:851 describe.c:2116 +#: describe.c:708 describe.c:789 describe.c:944 describe.c:2506 sql_help.c:595 +#: sql_help.c:842 sql_help.c:969 sql_help.c:1432 sql_help.c:1562 +#: sql_help.c:1596 sql_help.c:1842 sql_help.c:2000 sql_help.c:2185 +#: sql_help.c:2266 sql_help.c:2472 sql_help.c:3103 sql_help.c:3123 +#: sql_help.c:3125 sql_help.c:3126 msgid "table" msgstr "tabulka" -#: describe.c:683 describe.c:852 describe.c:2117 +#: describe.c:708 describe.c:945 describe.c:2507 msgid "view" msgstr "pohled" -#: describe.c:683 describe.c:854 describe.c:2119 +#: describe.c:708 describe.c:790 describe.c:947 describe.c:2509 msgid "sequence" msgstr "sekvence" -#: describe.c:695 +#: describe.c:709 describe.c:948 describe.c:2511 +msgid "foreign table" +msgstr "foreign_tabulka" + # +#: describe.c:721 msgid "Column access privileges" -msgstr "Přístupová práva k attributům" +msgstr "Přístupová práva k atributům" -#: describe.c:721 describe.c:3215 describe.c:3219 +#: describe.c:747 describe.c:4000 describe.c:4004 msgid "Access privileges" msgstr "Přístupová práva" -#: describe.c:758 +#: describe.c:775 +#, c-format +msgid "" +"The server (version %d.%d) does not support altering default privileges.\n" +msgstr "Server (verze %d.%d) nepodporuje foreign servery.\n" + +#: describe.c:791 describe.c:883 +msgid "function" +msgstr "funkce" + +#: describe.c:815 +msgid "Default access privileges" +msgstr "Implicitní přístupová práva" + +#: describe.c:851 msgid "Object" msgstr "Objekt" -#: describe.c:770 +#: describe.c:863 msgid "aggregate" -msgstr "agregát" - -#: describe.c:790 -msgid "function" -msgstr "funkce" +msgstr "agregace" -#: describe.c:809 +#: describe.c:902 sql_help.c:1715 sql_help.c:2833 sql_help.c:2903 +#: sql_help.c:3036 sql_help.c:3141 sql_help.c:3192 msgid "operator" msgstr "operátor" -#: describe.c:828 +#: describe.c:921 msgid "data type" msgstr "datový typ" -#: describe.c:853 describe.c:2118 +#: describe.c:946 describe.c:2508 msgid "index" msgstr "index" -#: describe.c:875 +#: describe.c:969 msgid "rule" msgstr "rule" -#: describe.c:919 +#: describe.c:1013 msgid "Object descriptions" msgstr "Popis objektu" -#: describe.c:972 +#: describe.c:1066 #, c-format msgid "Did not find any relation named \"%s\".\n" msgstr "Nelze nalézt relaci se jménem \"%s\".\n" -#: describe.c:1109 +#: describe.c:1238 #, c-format msgid "Did not find any relation with OID %s.\n" msgstr "Nelze nalézt relaci se OID \"%s\".\n" -#: describe.c:1184 +#: describe.c:1314 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "Unlogged tabulka \"%s.%s\"" + +#: describe.c:1317 #, c-format msgid "Table \"%s.%s\"" msgstr "Tabulka \"%s.%s\"" -#: describe.c:1188 +#: describe.c:1321 #, c-format msgid "View \"%s.%s\"" -msgstr "Náhled \"%s.%s\"" +msgstr "Pohled \"%s.%s\"" -#: describe.c:1192 +#: describe.c:1325 #, c-format msgid "Sequence \"%s.%s\"" msgstr "Sekvence \"%s.%s\"" -#: describe.c:1196 +#: describe.c:1330 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "Unlogged index \"%s.%s\"" + +#: describe.c:1333 #, c-format msgid "Index \"%s.%s\"" msgstr "Index \"%s.%s\"" -#: describe.c:1201 +#: describe.c:1338 #, c-format msgid "Special relation \"%s.%s\"" msgstr "Speciální relace \"%s.%s\"" -#: describe.c:1205 +#: describe.c:1342 #, c-format msgid "TOAST table \"%s.%s\"" msgstr "TOAST tabulka \"%s.%s\"" -#: describe.c:1209 +#: describe.c:1346 #, c-format msgid "Composite type \"%s.%s\"" msgstr "Složený typ \"%s.%s\"" -#: describe.c:1221 +#: describe.c:1350 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "Foreign tabulka \"%s.%s\"" + +#: describe.c:1361 msgid "Column" msgstr "Sloupec" -#: describe.c:1227 +#: describe.c:1369 msgid "Modifiers" msgstr "Modifikátory" -#: describe.c:1232 +#: describe.c:1374 msgid "Value" msgstr "Hodnota" -#: describe.c:1236 +#: describe.c:1377 +msgid "Definition" +msgstr "Definice" + +#: describe.c:1381 msgid "Storage" -msgstr "Úložiště" +msgstr "Uložení" -#: describe.c:1278 +#: describe.c:1427 +#, c-format +msgid "collate %s" +msgstr "collate %s" + +#: describe.c:1435 msgid "not null" msgstr "not null" #. translator: default values of column definitions -#: describe.c:1287 +#: describe.c:1445 #, c-format msgid "default %s" msgstr "implicitně %s" -#: describe.c:1353 +#: describe.c:1536 msgid "primary key, " msgstr "primární klíč," -#: describe.c:1355 +#: describe.c:1538 msgid "unique, " msgstr "unikátní," -#: describe.c:1361 +#: describe.c:1544 #, c-format msgid "for table \"%s.%s\"" msgstr "pro tabulku \"%s.%s\"" -#: describe.c:1365 +#: describe.c:1548 #, c-format msgid ", predicate (%s)" msgstr ", predikát (%s)" -#: describe.c:1368 +#: describe.c:1551 msgid ", clustered" -msgstr ", klastrován" +msgstr ", clusterován" -#: describe.c:1371 +#: describe.c:1554 msgid ", invalid" msgstr ", neplatný" -#: describe.c:1385 +#: describe.c:1557 +msgid ", deferrable" +msgstr ", odložitelný" + +#: describe.c:1560 +msgid ", initially deferred" +msgstr ", iniciálně odložený" + +#: describe.c:1574 msgid "View definition:" msgstr "Definice pohledu:" -#: describe.c:1402 describe.c:1655 +#: describe.c:1591 describe.c:1874 msgid "Rules:" -msgstr "Rule:" +msgstr "Rules:" -#: describe.c:1449 +#: describe.c:1650 msgid "Indexes:" msgstr "Indexy:" -#: describe.c:1509 +#: describe.c:1730 msgid "Check constraints:" msgstr "Kontrolní pravidla:" -#: describe.c:1540 +#: describe.c:1761 msgid "Foreign-key constraints:" msgstr "Podmínky cizího klíče:" -#: describe.c:1571 +#: describe.c:1792 msgid "Referenced by:" -msgstr "" - -#. translator: the first %s is a FK name, the following are -#. * a table name and the FK definition -#: describe.c:1576 -#, c-format -msgid " \"%s\" IN %s %s" -msgstr " \"%s\" IN %s %s" +msgstr "Odkazovaný:" -#: describe.c:1658 +#: describe.c:1877 msgid "Disabled rules:" -msgstr "Vypnutá pravidla:" +msgstr "Vypnutá pravidla (rules):" -#: describe.c:1661 +#: describe.c:1880 msgid "Rules firing always:" -msgstr "Vždy vykonávaná pravidla:" +msgstr "Vždy spouštěná pravidla:" -#: describe.c:1664 +#: describe.c:1883 msgid "Rules firing on replica only:" -msgstr "Pravidla vykonaná jen na replice:" +msgstr "Pravidla spouštěná jen na replice:" -#: describe.c:1760 +#: describe.c:1991 msgid "Triggers:" msgstr "Triggery:" -#: describe.c:1763 +#: describe.c:1994 msgid "Disabled triggers:" msgstr "Vypnuté triggery:" -#: describe.c:1766 +#: describe.c:1997 msgid "Triggers firing always:" -msgstr "Vždy vykonávané triggery:" +msgstr "Vždy spouštěné triggery:" -#: describe.c:1769 +#: describe.c:2000 msgid "Triggers firing on replica only:" -msgstr "Triggery vykonávané jen na replice:" +msgstr "Triggery spouštěné jen na replice:" -#: describe.c:1802 +#: describe.c:2066 msgid "Inherits" msgstr "Dědí" -#: describe.c:1817 +#: describe.c:2096 +#, c-format +msgid "Number of child tables: %d (Use \\d+ to list them.)" +msgstr "Počet podřízených tabulek: %d (Použijte \\d+ pro jejich seznam.)" + +#: describe.c:2103 +msgid "Child tables" +msgstr "Podřízené tabulky" + +#: describe.c:2125 +#, c-format +msgid "Typed table of type: %s" +msgstr "Typovaná tabulka typu: %s" + +#: describe.c:2132 msgid "Has OIDs" msgstr "Má OID" -#: describe.c:1820 describe.c:2293 describe.c:2366 +#: describe.c:2135 describe.c:2772 describe.c:2846 msgid "yes" msgstr "ano" -#: describe.c:1820 describe.c:2293 describe.c:2366 +#: describe.c:2135 describe.c:2772 describe.c:2846 msgid "no" msgstr "ne" -#: describe.c:1828 describe.c:3058 describe.c:3122 describe.c:3178 +#: describe.c:2143 describe.c:3621 describe.c:3685 describe.c:3741 +#: describe.c:3796 msgid "Options" -msgstr "Přepínače" +msgstr "Volby" -#: describe.c:1913 +#: describe.c:2228 #, c-format msgid "Tablespace: \"%s\"" msgstr "Tablespace: \"%s\"" -#. translator: before this string there's an index -#. * description like '"foo_pkey" PRIMARY KEY, btree (a)' -#: describe.c:1923 +#: describe.c:2241 #, c-format msgid ", tablespace \"%s\"" msgstr ", tablespace: \"%s\"" -#: describe.c:2001 +#: describe.c:2323 msgid "List of roles" msgstr "Seznam rolí" -#: describe.c:2003 +#: describe.c:2325 msgid "Role name" msgstr "Jméno role" -#: describe.c:2004 +#: describe.c:2326 msgid "Attributes" msgstr "Atributy" -#: describe.c:2005 +#: describe.c:2327 msgid "Member of" -msgstr "" +msgstr "Je členem" -#: describe.c:2016 +#: describe.c:2338 msgid "Superuser" msgstr "Super-uživatel" -#: describe.c:2019 +#: describe.c:2341 msgid "No inheritance" -msgstr "" +msgstr "Bez dědičnosti" -#: describe.c:2022 +#: describe.c:2344 msgid "Create role" -msgstr "Vytvoř roly" +msgstr "Vytvoř roli" -#: describe.c:2025 +#: describe.c:2347 msgid "Create DB" msgstr "Vytvoř DB" -#: describe.c:2028 +#: describe.c:2350 msgid "Cannot login" msgstr "Nemohu se přihlásit" -#: describe.c:2037 +#: describe.c:2354 +msgid "Replication" +msgstr "Replikace" + +#: describe.c:2363 msgid "No connections" msgstr "Není spojení" -#: describe.c:2039 +#: describe.c:2365 #, c-format -msgid "1 connection" +msgid "%d connection" msgid_plural "%d connections" msgstr[0] "%d spojení" msgstr[1] "%d spojení" msgstr[2] "%d spojení" -#: describe.c:2120 +#: describe.c:2432 +#, c-format +msgid "No per-database role settings support in this server version.\n" +msgstr "Tato verze serveru nepodporuje nastavení rolí dle databáze.\n" + +#: describe.c:2443 +#, c-format +msgid "No matching settings found.\n" +msgstr "Odpovídající relace nebyla nalezena.\n" + +#: describe.c:2445 +#, c-format +msgid "No settings found.\n" +msgstr "Žádné nastavení nenalezeno.\n" + +#: describe.c:2450 +msgid "List of settings" +msgstr "Seznam nastavení" + +#: describe.c:2510 msgid "special" msgstr "speciální" -#: describe.c:2127 +#: describe.c:2518 describe.c:3790 msgid "Table" msgstr "Tabulka" -#: describe.c:2186 +#: describe.c:2592 #, c-format msgid "No matching relations found.\n" -msgstr "Srovnatelná relace nebyla nalezena.\n" +msgstr "Odpovídající relace nebyla nalezena.\n" -#: describe.c:2188 +#: describe.c:2594 #, c-format msgid "No relations found.\n" -msgstr "Relace nebyla nalezena.\n" +msgstr "Žádné relace nenalezeny.\n" -#: describe.c:2193 +#: describe.c:2599 msgid "List of relations" msgstr "Seznam relací" -#: describe.c:2237 +#: describe.c:2635 +msgid "Trusted" +msgstr "Důvěryhodný" + +#: describe.c:2643 +msgid "Internal Language" +msgstr "Interní Jazyk" + +#: describe.c:2644 +msgid "Call Handler" +msgstr "Call Handler" + +#: describe.c:2645 describe.c:3613 +msgid "Validator" +msgstr "Validátor" + +#: describe.c:2648 +msgid "Inline Handler" +msgstr "Inline Handler" + +#: describe.c:2669 +msgid "List of languages" +msgstr "Seznam jazyků" + +#: describe.c:2709 msgid "Modifier" msgstr "Modifikátor" -#: describe.c:2238 +#: describe.c:2717 msgid "Check" -msgstr "" +msgstr "Kontrola" -#: describe.c:2256 +#: describe.c:2735 msgid "List of domains" msgstr "Seznam domén" -#: describe.c:2291 +#: describe.c:2770 msgid "Source" -msgstr "Zdrojový kód" +msgstr "Zdroj" -#: describe.c:2292 +#: describe.c:2771 msgid "Destination" msgstr "Cíl" -#: describe.c:2294 +#: describe.c:2773 msgid "Default?" msgstr "Implicitně?" -#: describe.c:2312 +#: describe.c:2791 msgid "List of conversions" msgstr "Seznam konverzí" -#: describe.c:2363 +#: describe.c:2843 msgid "Source type" msgstr "Zdrojový typ" -#: describe.c:2364 +#: describe.c:2844 msgid "Target type" msgstr "Cílový typ" -#: describe.c:2365 describe.c:2625 +#: describe.c:2845 describe.c:3183 msgid "Function" msgstr "Funkce" -#: describe.c:2366 +#: describe.c:2846 msgid "in assignment" -msgstr "v zadání" +msgstr "v přiřazení" -#: describe.c:2367 +#: describe.c:2847 msgid "Implicit?" msgstr "Implicitně?" -#: describe.c:2393 +#: describe.c:2873 msgid "List of casts" msgstr "Seznam přetypování" -#: describe.c:2448 +#: describe.c:2898 +#, c-format +msgid "The server (version %d.%d) does not support collations.\n" +msgstr "Server (verze %d.%d) nepodporuje collations.\n" + +#: describe.c:2948 +msgid "List of collations" +msgstr "Seznam collations" + +#: describe.c:3006 msgid "List of schemas" msgstr "Seznam schémat" -#: describe.c:2471 describe.c:2704 describe.c:2772 describe.c:2840 +#: describe.c:3029 describe.c:3262 describe.c:3330 describe.c:3398 #, c-format msgid "The server (version %d.%d) does not support full text search.\n" msgstr "Server (verze %d.%d) nepodporuje fulltextové vyhledávání.\n" -#: describe.c:2505 +#: describe.c:3063 msgid "List of text search parsers" msgstr "Seznam fulltextových parserů" -#: describe.c:2548 +#: describe.c:3106 #, c-format msgid "Did not find any text search parser named \"%s\".\n" msgstr "Nelze nalézt fulltextový parser se jménem \"%s\".\n" -#: describe.c:2623 +#: describe.c:3181 msgid "Start parse" msgstr "Začátek parsování" -#: describe.c:2624 +#: describe.c:3182 msgid "Method" msgstr "Metoda" -#: describe.c:2628 +#: describe.c:3186 msgid "Get next token" msgstr "Získej další token" -#: describe.c:2630 +#: describe.c:3188 msgid "End parse" msgstr "Konec parsování" -#: describe.c:2632 +#: describe.c:3190 msgid "Get headline" msgstr "Získej záhlaví" -#: describe.c:2634 +#: describe.c:3192 msgid "Get token types" -msgstr "Získej typ tokenu" +msgstr "Získej typy tokenu" -#: describe.c:2644 +#: describe.c:3202 #, c-format msgid "Text search parser \"%s.%s\"" msgstr "Fulltextový parser \"%s.%s\"" -#: describe.c:2646 +#: describe.c:3204 #, c-format msgid "Text search parser \"%s\"" msgstr "Fulltextový parser \"%s\"" -#: describe.c:2664 +#: describe.c:3222 msgid "Token name" msgstr "Jméno tokenu" -#: describe.c:2675 +#: describe.c:3233 #, c-format msgid "Token types for parser \"%s.%s\"" msgstr "Jméno tokenu pro parser \"%s.%s\"" -#: describe.c:2677 +#: describe.c:3235 #, c-format msgid "Token types for parser \"%s\"" msgstr "Typ tokenu pro parser \"%s\"" -#: describe.c:2726 +#: describe.c:3284 msgid "Template" msgstr "Šablona" -#: describe.c:2727 +#: describe.c:3285 msgid "Init options" -msgstr "Počáteční nastavení" +msgstr "Init options" -#: describe.c:2749 +#: describe.c:3307 msgid "List of text search dictionaries" msgstr "Seznam fulltextových slovníků" -#: describe.c:2789 -#, fuzzy +#: describe.c:3347 msgid "Init" -msgstr "???" +msgstr "Init" -#: describe.c:2790 -#, fuzzy +#: describe.c:3348 msgid "Lexize" -msgstr "???" +msgstr "Lexize" -#: describe.c:2817 +#: describe.c:3375 msgid "List of text search templates" msgstr "Seznam fulltextových šablon" -#: describe.c:2874 +#: describe.c:3432 msgid "List of text search configurations" msgstr "Seznam fulltextových konfigurací" -#: describe.c:2918 +#: describe.c:3476 #, c-format msgid "Did not find any text search configuration named \"%s\".\n" msgstr "Nelze nalézt fulltextovou konfiguraci se jménem \"%s\".\n" -#: describe.c:2984 +#: describe.c:3542 msgid "Token" msgstr "Token" -#: describe.c:2985 +#: describe.c:3543 msgid "Dictionaries" msgstr "Slovníky" -#: describe.c:2996 +#: describe.c:3554 #, c-format msgid "Text search configuration \"%s.%s\"" msgstr "Fulltextová konfigurace \"%s.%s\"" -#: describe.c:2999 +#: describe.c:3557 #, c-format msgid "Text search configuration \"%s\"" msgstr "Fulltextová konfigurace \"%s\"" -#: describe.c:3003 +#: describe.c:3561 #, c-format msgid "" "\n" @@ -2007,7 +2251,7 @@ msgstr "" "\n" "Parser: \"%s.%s\"" -#: describe.c:3006 +#: describe.c:3564 #, c-format msgid "" "\n" @@ -2016,1977 +2260,1856 @@ msgstr "" "\n" "Parser: \"%s\"" -#: describe.c:3038 +#: describe.c:3596 #, c-format msgid "The server (version %d.%d) does not support foreign-data wrappers.\n" msgstr "Server (verze %d.%d) nepodporuje foreign-data wrappery.\n" -#: describe.c:3050 -msgid "Validator" -msgstr "Validátor" +#: describe.c:3610 +msgid "Handler" +msgstr "Handler" -#: describe.c:3074 +#: describe.c:3637 msgid "List of foreign-data wrappers" msgstr "Seznam foreign-data wrapperů" -#: describe.c:3097 +#: describe.c:3660 #, c-format msgid "The server (version %d.%d) does not support foreign servers.\n" msgstr "Server (verze %d.%d) nepodporuje foreign servery.\n" -#: describe.c:3109 +#: describe.c:3672 msgid "Foreign-data wrapper" msgstr "Foreign-data wrapper" -#: describe.c:3121 +#: describe.c:3684 describe.c:3854 msgid "Version" msgstr "Verze" -#: describe.c:3140 +#: describe.c:3703 msgid "List of foreign servers" msgstr "Seznam foreign serverů" -#: describe.c:3163 +#: describe.c:3726 #, c-format msgid "The server (version %d.%d) does not support user mappings.\n" msgstr "Server (verze %d.%d) nepodporuje mapování uživatelů.\n" -#: describe.c:3172 +#: describe.c:3735 describe.c:3791 msgid "Server" msgstr "Server" -#: describe.c:3173 +#: describe.c:3736 msgid "User name" msgstr "Uživatelské jméno" -#: describe.c:3193 +#: describe.c:3756 msgid "List of user mappings" msgstr "Seznam mapování uživatelů" -#: sql_help.h:25 sql_help.h:505 +#: describe.c:3779 +#, c-format +msgid "The server (version %d.%d) does not support foreign tables.\n" +msgstr "Server (verze %d.%d) nepodporuje foreign tabulky.\n" + +#: describe.c:3817 +msgid "List of foreign tables" +msgstr "Seznam foreign tabulek" + +#: describe.c:3840 describe.c:3894 +#, c-format +msgid "The server (version %d.%d) does not support extensions.\n" +msgstr "Server (verze %d.%d) nepodporuje extensions.\n" + +#: describe.c:3871 +msgid "List of installed extensions" +msgstr "Seznam instalovaných extensions" + +#: describe.c:3921 +#, c-format +msgid "Did not find any extension named \"%s\".\n" +msgstr "Nelze nalézt extension se jménem \"%s\".\n" + +#: describe.c:3924 +#, c-format +msgid "Did not find any extensions.\n" +msgstr "Nelze nalézt žádnou extension.\n" + +#: describe.c:3968 +msgid "Object Description" +msgstr "Popis objektu" + +#: describe.c:3977 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "Objekty v rozšíření \"%s\"" + +#: sql_help.h:182 sql_help.h:837 msgid "abort the current transaction" msgstr "nestandardní ukončení (abort) současné transakce" -#: sql_help.h:26 -msgid "ABORT [ WORK | TRANSACTION ]" -msgstr "ABORT [ WORK | TRANSACTION ]" - -#: sql_help.h:29 +#: sql_help.h:187 msgid "change the definition of an aggregate function" msgstr "změna definice agregátní funkce" -#: sql_help.h:30 -msgid "" -"ALTER AGGREGATE name ( type [ , ... ] ) RENAME TO new_name\n" -"ALTER AGGREGATE name ( type [ , ... ] ) OWNER TO new_owner\n" -"ALTER AGGREGATE name ( type [ , ... ] ) SET SCHEMA new_schema" -msgstr "" +#: sql_help.h:192 +msgid "change the definition of a collation" +msgstr "změní definici collation" -#: sql_help.h:33 +#: sql_help.h:197 msgid "change the definition of a conversion" msgstr "změna definice konverze" -#: sql_help.h:34 -msgid "" -"ALTER CONVERSION name RENAME TO newname\n" -"ALTER CONVERSION name OWNER TO newowner" -msgstr "" - -#: sql_help.h:37 +#: sql_help.h:202 msgid "change a database" msgstr "změní databázi" -#: sql_help.h:38 -msgid "" -"ALTER DATABASE name [ [ WITH ] option [ ... ] ]\n" -"\n" -"where option can be:\n" -"\n" -" CONNECTION LIMIT connlimit\n" -"\n" -"ALTER DATABASE name RENAME TO newname\n" -"\n" -"ALTER DATABASE name OWNER TO new_owner\n" -"\n" -"ALTER DATABASE name SET TABLESPACE new_tablespace\n" -"\n" -"ALTER DATABASE name SET configuration_parameter { TO | = } { value | " -"DEFAULT }\n" -"ALTER DATABASE name SET configuration_parameter FROM CURRENT\n" -"ALTER DATABASE name RESET configuration_parameter\n" -"ALTER DATABASE name RESET ALL" -msgstr "" +#: sql_help.h:207 +msgid "define default access privileges" +msgstr "definuje výchozí přístupová práva" -#: sql_help.h:41 +#: sql_help.h:212 msgid "change the definition of a domain" msgstr "změní definici domény" -#: sql_help.h:42 -msgid "" -"ALTER DOMAIN name\n" -" { SET DEFAULT expression | DROP DEFAULT }\n" -"ALTER DOMAIN name\n" -" { SET | DROP } NOT NULL\n" -"ALTER DOMAIN name\n" -" ADD domain_constraint\n" -"ALTER DOMAIN name\n" -" DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n" -"ALTER DOMAIN name\n" -" OWNER TO new_owner \n" -"ALTER DOMAIN name\n" -" SET SCHEMA new_schema" -msgstr "" - -#: sql_help.h:45 +#: sql_help.h:217 +msgid "change the definition of an extension" +msgstr "změna definice extension" + +#: sql_help.h:222 msgid "change the definition of a foreign-data wrapper" msgstr "změní definici foreign-data wrapperu" -#: sql_help.h:46 -msgid "" -"ALTER FOREIGN DATA WRAPPER name\n" -" [ VALIDATOR valfunction | NO VALIDATOR ]\n" -" [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ]) ]\n" -"ALTER FOREIGN DATA WRAPPER name OWNER TO new_owner" -msgstr "" +#: sql_help.h:227 +msgid "change the definition of a foreign table" +msgstr "změní definici foreign tabulky" -#: sql_help.h:49 +#: sql_help.h:232 msgid "change the definition of a function" msgstr "změní definici funkce" -#: sql_help.h:50 -msgid "" -"ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -" action [ ... ] [ RESTRICT ]\n" -"ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -" RENAME TO new_name\n" -"ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -" OWNER TO new_owner\n" -"ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -" SET SCHEMA new_schema\n" -"\n" -"where action is one of:\n" -"\n" -" CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" -" IMMUTABLE | STABLE | VOLATILE\n" -" [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" -" COST execution_cost\n" -" ROWS result_rows\n" -" SET configuration_parameter { TO | = } { value | DEFAULT }\n" -" SET configuration_parameter FROM CURRENT\n" -" RESET configuration_parameter\n" -" RESET ALL" -msgstr "" - -#: sql_help.h:53 +#: sql_help.h:237 msgid "change role name or membership" -msgstr "" - -#: sql_help.h:54 -msgid "" -"ALTER GROUP groupname ADD USER username [, ... ]\n" -"ALTER GROUP groupname DROP USER username [, ... ]\n" -"\n" -"ALTER GROUP groupname RENAME TO newname" -msgstr "" +msgstr "změní jméno role nebo členství" -#: sql_help.h:57 +#: sql_help.h:242 msgid "change the definition of an index" msgstr "změní definici indexu" -#: sql_help.h:58 -msgid "" -"ALTER INDEX name RENAME TO new_name\n" -"ALTER INDEX name SET TABLESPACE tablespace_name\n" -"ALTER INDEX name SET ( storage_parameter = value [, ... ] )\n" -"ALTER INDEX name RESET ( storage_parameter [, ... ] )" -msgstr "" - -#: sql_help.h:61 +#: sql_help.h:247 msgid "change the definition of a procedural language" msgstr "změní definici procedurálního jazyka" -#: sql_help.h:62 -msgid "" -"ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO newname\n" -"ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO new_owner" -msgstr "" +#: sql_help.h:252 +msgid "change the definition of a large object" +msgstr "změní definici large objektu" -#: sql_help.h:65 +#: sql_help.h:257 msgid "change the definition of an operator" msgstr "změní definici operátoru" -#: sql_help.h:66 -msgid "" -"ALTER OPERATOR name ( { lefttype | NONE } , { righttype | NONE } ) OWNER TO " -"newowner" -msgstr "" - -#: sql_help.h:69 +#: sql_help.h:262 msgid "change the definition of an operator class" -msgstr "změní definici třídy operátoru" +msgstr "změní definici třídy operátorů" -#: sql_help.h:70 -msgid "" -"ALTER OPERATOR CLASS name USING index_method RENAME TO newname\n" -"ALTER OPERATOR CLASS name USING index_method OWNER TO newowner" -msgstr "" - -#: sql_help.h:73 +#: sql_help.h:267 msgid "change the definition of an operator family" -msgstr "změní definici rodiny operátoru" +msgstr "změní definici rodiny operátorů" -#: sql_help.h:74 -msgid "" -"ALTER OPERATOR FAMILY name USING index_method ADD\n" -" { OPERATOR strategy_number operator_name ( op_type, op_type )\n" -" | FUNCTION support_number [ ( op_type [ , op_type ] ) ] funcname " -"( argument_type [, ...] )\n" -" } [, ... ]\n" -"ALTER OPERATOR FAMILY name USING index_method DROP\n" -" { OPERATOR strategy_number ( op_type [ , op_type ] )\n" -" | FUNCTION support_number ( op_type [ , op_type ] )\n" -" } [, ... ]\n" -"ALTER OPERATOR FAMILY name USING index_method RENAME TO newname\n" -"ALTER OPERATOR FAMILY name USING index_method OWNER TO newowner" -msgstr "" - -#: sql_help.h:77 sql_help.h:125 +#: sql_help.h:272 sql_help.h:332 msgid "change a database role" -msgstr "změní roli databáze" - -#: sql_help.h:78 -msgid "" -"ALTER ROLE name [ [ WITH ] option [ ... ] ]\n" -"\n" -"where option can be:\n" -" \n" -" SUPERUSER | NOSUPERUSER\n" -" | CREATEDB | NOCREATEDB\n" -" | CREATEROLE | NOCREATEROLE\n" -" | CREATEUSER | NOCREATEUSER\n" -" | INHERIT | NOINHERIT\n" -" | LOGIN | NOLOGIN\n" -" | CONNECTION LIMIT connlimit\n" -" | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -" | VALID UNTIL 'timestamp' \n" -"\n" -"ALTER ROLE name RENAME TO newname\n" -"\n" -"ALTER ROLE name SET configuration_parameter { TO | = } { value | DEFAULT }\n" -"ALTER ROLE name SET configuration_parameter FROM CURRENT\n" -"ALTER ROLE name RESET configuration_parameter\n" -"ALTER ROLE name RESET ALL" -msgstr "" +msgstr "změní databázovou roli" -#: sql_help.h:81 +#: sql_help.h:277 msgid "change the definition of a schema" msgstr "změní definici schématu" -#: sql_help.h:82 -msgid "" -"ALTER SCHEMA name RENAME TO newname\n" -"ALTER SCHEMA name OWNER TO newowner" -msgstr "" - -#: sql_help.h:85 +#: sql_help.h:282 msgid "change the definition of a sequence generator" msgstr "změní definici generátoru sekvencí" -#: sql_help.h:86 -msgid "" -"ALTER SEQUENCE name [ INCREMENT [ BY ] increment ]\n" -" [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]\n" -" [ START [ WITH ] start ]\n" -" [ RESTART [ [ WITH ] restart ] ]\n" -" [ CACHE cache ] [ [ NO ] CYCLE ]\n" -" [ OWNED BY { table.column | NONE } ]\n" -"ALTER SEQUENCE name OWNER TO new_owner\n" -"ALTER SEQUENCE name RENAME TO new_name\n" -"ALTER SEQUENCE name SET SCHEMA new_schema" -msgstr "" - -#: sql_help.h:89 +#: sql_help.h:287 msgid "change the definition of a foreign server" msgstr "změní definici foreign serveru" -#: sql_help.h:90 -msgid "" -"ALTER SERVER servername [ VERSION 'newversion' ]\n" -" [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] ) ]\n" -"ALTER SERVER servername OWNER TO new_owner" -msgstr "" - -#: sql_help.h:93 +#: sql_help.h:292 msgid "change the definition of a table" msgstr "změní definici tabulky" -#: sql_help.h:94 -msgid "" -"ALTER TABLE [ ONLY ] name [ * ]\n" -" action [, ... ]\n" -"ALTER TABLE [ ONLY ] name [ * ]\n" -" RENAME [ COLUMN ] column TO new_column\n" -"ALTER TABLE name\n" -" RENAME TO new_name\n" -"ALTER TABLE name\n" -" SET SCHEMA new_schema\n" -"\n" -"where action is one of:\n" -"\n" -" ADD [ COLUMN ] column type [ column_constraint [ ... ] ]\n" -" DROP [ COLUMN ] column [ RESTRICT | CASCADE ]\n" -" ALTER [ COLUMN ] column [ SET DATA ] TYPE type [ USING expression ]\n" -" ALTER [ COLUMN ] column SET DEFAULT expression\n" -" ALTER [ COLUMN ] column DROP DEFAULT\n" -" ALTER [ COLUMN ] column { SET | DROP } NOT NULL\n" -" ALTER [ COLUMN ] column SET STATISTICS integer\n" -" ALTER [ COLUMN ] column SET STORAGE { PLAIN | EXTERNAL | EXTENDED | " -"MAIN }\n" -" ADD table_constraint\n" -" DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n" -" DISABLE TRIGGER [ trigger_name | ALL | USER ]\n" -" ENABLE TRIGGER [ trigger_name | ALL | USER ]\n" -" ENABLE REPLICA TRIGGER trigger_name\n" -" ENABLE ALWAYS TRIGGER trigger_name\n" -" DISABLE RULE rewrite_rule_name\n" -" ENABLE RULE rewrite_rule_name\n" -" ENABLE REPLICA RULE rewrite_rule_name\n" -" ENABLE ALWAYS RULE rewrite_rule_name\n" -" CLUSTER ON index_name\n" -" SET WITHOUT CLUSTER\n" -" SET WITH OIDS\n" -" SET WITHOUT OIDS\n" -" SET ( storage_parameter = value [, ... ] )\n" -" RESET ( storage_parameter [, ... ] )\n" -" INHERIT parent_table\n" -" NO INHERIT parent_table\n" -" OWNER TO new_owner\n" -" SET TABLESPACE new_tablespace" -msgstr "" - -#: sql_help.h:97 +#: sql_help.h:297 msgid "change the definition of a tablespace" msgstr "změní definici tablespace" -#: sql_help.h:98 -msgid "" -"ALTER TABLESPACE name RENAME TO newname\n" -"ALTER TABLESPACE name OWNER TO newowner" -msgstr "" - -#: sql_help.h:101 +#: sql_help.h:302 msgid "change the definition of a text search configuration" msgstr "změní definici konfigurace fulltextového vyhledávání" -#: sql_help.h:102 -msgid "" -"ALTER TEXT SEARCH CONFIGURATION name\n" -" ADD MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]\n" -"ALTER TEXT SEARCH CONFIGURATION name\n" -" ALTER MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]\n" -"ALTER TEXT SEARCH CONFIGURATION name\n" -" ALTER MAPPING REPLACE old_dictionary WITH new_dictionary\n" -"ALTER TEXT SEARCH CONFIGURATION name\n" -" ALTER MAPPING FOR token_type [, ... ] REPLACE old_dictionary WITH " -"new_dictionary\n" -"ALTER TEXT SEARCH CONFIGURATION name\n" -" DROP MAPPING [ IF EXISTS ] FOR token_type [, ... ]\n" -"ALTER TEXT SEARCH CONFIGURATION name RENAME TO newname\n" -"ALTER TEXT SEARCH CONFIGURATION name OWNER TO newowner" -msgstr "" - -#: sql_help.h:105 +#: sql_help.h:307 msgid "change the definition of a text search dictionary" msgstr "změní definici slovníku pro fulltextové vyhledávání" -#: sql_help.h:106 -msgid "" -"ALTER TEXT SEARCH DICTIONARY name (\n" -" option [ = value ] [, ... ]\n" -")\n" -"ALTER TEXT SEARCH DICTIONARY name RENAME TO newname\n" -"ALTER TEXT SEARCH DICTIONARY name OWNER TO newowner" -msgstr "" - -#: sql_help.h:109 +#: sql_help.h:312 msgid "change the definition of a text search parser" msgstr "změní definici parseru pro fulltextové vyhledávání" -#: sql_help.h:110 -msgid "ALTER TEXT SEARCH PARSER name RENAME TO newname" -msgstr "" - -#: sql_help.h:113 +#: sql_help.h:317 msgid "change the definition of a text search template" msgstr "změní definici šablony pro fulltextové vyhledávání" -#: sql_help.h:114 -msgid "ALTER TEXT SEARCH TEMPLATE name RENAME TO newname" -msgstr "" - -#: sql_help.h:117 +#: sql_help.h:322 msgid "change the definition of a trigger" msgstr "změní definici triggeru" -#: sql_help.h:118 -msgid "ALTER TRIGGER name ON table RENAME TO newname" -msgstr "" - -#: sql_help.h:121 +#: sql_help.h:327 msgid "change the definition of a type" msgstr "změní definici datového typu" -#: sql_help.h:122 -msgid "" -"ALTER TYPE name RENAME TO new_name\n" -"ALTER TYPE name OWNER TO new_owner \n" -"ALTER TYPE name SET SCHEMA new_schema" -msgstr "" - -#: sql_help.h:126 -msgid "" -"ALTER USER name [ [ WITH ] option [ ... ] ]\n" -"\n" -"where option can be:\n" -" \n" -" SUPERUSER | NOSUPERUSER\n" -" | CREATEDB | NOCREATEDB\n" -" | CREATEROLE | NOCREATEROLE\n" -" | CREATEUSER | NOCREATEUSER\n" -" | INHERIT | NOINHERIT\n" -" | LOGIN | NOLOGIN\n" -" | CONNECTION LIMIT connlimit\n" -" | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -" | VALID UNTIL 'timestamp' \n" -"\n" -"ALTER USER name RENAME TO newname\n" -"\n" -"ALTER USER name SET configuration_parameter { TO | = } { value | DEFAULT }\n" -"ALTER USER name SET configuration_parameter FROM CURRENT\n" -"ALTER USER name RESET configuration_parameter\n" -"ALTER USER name RESET ALL" -msgstr "" - -#: sql_help.h:129 +#: sql_help.h:337 msgid "change the definition of a user mapping" msgstr "změní definici mapování uživatelů" -#: sql_help.h:130 -msgid "" -"ALTER USER MAPPING FOR { username | USER | CURRENT_USER | PUBLIC }\n" -" SERVER servername\n" -" OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] )" -msgstr "" - -#: sql_help.h:133 +#: sql_help.h:342 msgid "change the definition of a view" msgstr "změní definici pohledu" -#: sql_help.h:134 -msgid "" -"ALTER VIEW name ALTER [ COLUMN ] column SET DEFAULT expression\n" -"ALTER VIEW name ALTER [ COLUMN ] column DROP DEFAULT\n" -"ALTER VIEW name OWNER TO new_owner\n" -"ALTER VIEW name RENAME TO new_name\n" -"ALTER VIEW name SET SCHEMA new_schema" -msgstr "" - -#: sql_help.h:137 +#: sql_help.h:347 msgid "collect statistics about a database" msgstr "shromáždí statistické informace o databázi" -#: sql_help.h:138 -msgid "ANALYZE [ VERBOSE ] [ table [ ( column [, ...] ) ] ]" -msgstr "" - -#: sql_help.h:141 sql_help.h:553 +#: sql_help.h:352 sql_help.h:902 msgid "start a transaction block" msgstr "nastartuje nový transakční blok" -#: sql_help.h:142 -msgid "" -"BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]\n" -"\n" -"where transaction_mode is one of:\n" -"\n" -" ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ " -"UNCOMMITTED }\n" -" READ WRITE | READ ONLY" -msgstr "" - -#: sql_help.h:145 +#: sql_help.h:357 msgid "force a transaction log checkpoint" msgstr "vynutí checkpoint transakčního logu" -#: sql_help.h:146 -msgid "CHECKPOINT" -msgstr "" - -#: sql_help.h:149 +#: sql_help.h:362 msgid "close a cursor" msgstr "uzavře kursor" -#: sql_help.h:150 -msgid "CLOSE { name | ALL }" -msgstr "" - -#: sql_help.h:153 +#: sql_help.h:367 msgid "cluster a table according to an index" msgstr "přerovná obsah tabulky dle indexu" -#: sql_help.h:154 -msgid "" -"CLUSTER [VERBOSE] tablename [ USING indexname ]\n" -"CLUSTER [VERBOSE]" -msgstr "" - -#: sql_help.h:157 +#: sql_help.h:372 msgid "define or change the comment of an object" msgstr "definuje nebo změní komentář objektu" -#: sql_help.h:158 -msgid "" -"COMMENT ON\n" -"{\n" -" TABLE object_name |\n" -" COLUMN table_name.column_name |\n" -" AGGREGATE agg_name (agg_type [, ...] ) |\n" -" CAST (sourcetype AS targettype) |\n" -" CONSTRAINT constraint_name ON table_name |\n" -" CONVERSION object_name |\n" -" DATABASE object_name |\n" -" DOMAIN object_name |\n" -" FUNCTION func_name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) |\n" -" INDEX object_name |\n" -" LARGE OBJECT large_object_oid |\n" -" OPERATOR op (leftoperand_type, rightoperand_type) |\n" -" OPERATOR CLASS object_name USING index_method |\n" -" OPERATOR FAMILY object_name USING index_method |\n" -" [ PROCEDURAL ] LANGUAGE object_name |\n" -" ROLE object_name |\n" -" RULE rule_name ON table_name |\n" -" SCHEMA object_name |\n" -" SEQUENCE object_name |\n" -" TABLESPACE object_name |\n" -" TEXT SEARCH CONFIGURATION object_name |\n" -" TEXT SEARCH DICTIONARY object_name |\n" -" TEXT SEARCH PARSER object_name |\n" -" TEXT SEARCH TEMPLATE object_name |\n" -" TRIGGER trigger_name ON table_name |\n" -" TYPE object_name |\n" -" VIEW object_name\n" -"} IS 'text'" -msgstr "" - -#: sql_help.h:161 sql_help.h:433 +#: sql_help.h:377 sql_help.h:747 msgid "commit the current transaction" msgstr "potvrzení aktuální transakce" -#: sql_help.h:162 -msgid "COMMIT [ WORK | TRANSACTION ]" -msgstr "" - -#: sql_help.h:165 +#: sql_help.h:382 msgid "commit a transaction that was earlier prepared for two-phase commit" -msgstr "potvrzení aktuáln?i transakce, která byla již dříve připravena pro dvojfázový commit" - -#: sql_help.h:166 -msgid "COMMIT PREPARED transaction_id" msgstr "" +"potvrzení aktuální transakce, která byla již dříve připravena pro dvoufázový " +"commit" -#: sql_help.h:169 +#: sql_help.h:387 msgid "copy data between a file and a table" msgstr "kopíruje data mezi souborem a tabulkou" -#: sql_help.h:170 -msgid "" -"COPY tablename [ ( column [, ...] ) ]\n" -" FROM { 'filename' | STDIN }\n" -" [ [ WITH ] \n" -" [ BINARY ]\n" -" [ OIDS ]\n" -" [ DELIMITER [ AS ] 'delimiter' ]\n" -" [ NULL [ AS ] 'null string' ]\n" -" [ CSV [ HEADER ]\n" -" [ QUOTE [ AS ] 'quote' ] \n" -" [ ESCAPE [ AS ] 'escape' ]\n" -" [ FORCE NOT NULL column [, ...] ]\n" -"\n" -"COPY { tablename [ ( column [, ...] ) ] | ( query ) }\n" -" TO { 'filename' | STDOUT }\n" -" [ [ WITH ] \n" -" [ BINARY ]\n" -" [ OIDS ]\n" -" [ DELIMITER [ AS ] 'delimiter' ]\n" -" [ NULL [ AS ] 'null string' ]\n" -" [ CSV [ HEADER ]\n" -" [ QUOTE [ AS ] 'quote' ] \n" -" [ ESCAPE [ AS ] 'escape' ]\n" -" [ FORCE QUOTE column [, ...] ]" -msgstr "" - -#: sql_help.h:173 +#: sql_help.h:392 msgid "define a new aggregate function" -msgstr "definuje novou agregátní funkci" - -#: sql_help.h:174 -msgid "" -"CREATE AGGREGATE name ( input_data_type [ , ... ] ) (\n" -" SFUNC = sfunc,\n" -" STYPE = state_data_type\n" -" [ , FINALFUNC = ffunc ]\n" -" [ , INITCOND = initial_condition ]\n" -" [ , SORTOP = sort_operator ]\n" -")\n" -"\n" -"or the old syntax\n" -"\n" -"CREATE AGGREGATE name (\n" -" BASETYPE = base_type,\n" -" SFUNC = sfunc,\n" -" STYPE = state_data_type\n" -" [ , FINALFUNC = ffunc ]\n" -" [ , INITCOND = initial_condition ]\n" -" [ , SORTOP = sort_operator ]\n" -")" -msgstr "" +msgstr "definuje novou agrefunkci" -#: sql_help.h:177 +#: sql_help.h:397 msgid "define a new cast" msgstr "definuje nové přetypování" -#: sql_help.h:178 -msgid "" -"CREATE CAST (sourcetype AS targettype)\n" -" WITH FUNCTION funcname (argtypes)\n" -" [ AS ASSIGNMENT | AS IMPLICIT ]\n" -"\n" -"CREATE CAST (sourcetype AS targettype)\n" -" WITHOUT FUNCTION\n" -" [ AS ASSIGNMENT | AS IMPLICIT ]\n" -"\n" -"CREATE CAST (sourcetype AS targettype)\n" -" WITH INOUT\n" -" [ AS ASSIGNMENT | AS IMPLICIT ]" -msgstr "" - -#: sql_help.h:181 -msgid "define a new constraint trigger" -msgstr "defunuje nový constraint trigger" - -#: sql_help.h:182 -msgid "" -"CREATE CONSTRAINT TRIGGER name\n" -" AFTER event [ OR ... ]\n" -" ON table_name\n" -" [ FROM referenced_table_name ]\n" -" { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY " -"DEFERRED } }\n" -" FOR EACH ROW\n" -" EXECUTE PROCEDURE funcname ( arguments )" -msgstr "" +#: sql_help.h:402 +msgid "define a new collation" +msgstr "definuje novou collation" -#: sql_help.h:185 +#: sql_help.h:407 msgid "define a new encoding conversion" msgstr "definuje novou konverzi kódování" -#: sql_help.h:186 -msgid "" -"CREATE [ DEFAULT ] CONVERSION name\n" -" FOR source_encoding TO dest_encoding FROM funcname" -msgstr "" - -#: sql_help.h:189 +#: sql_help.h:412 msgid "create a new database" msgstr "vytvoří novou databázi" -#: sql_help.h:190 -msgid "" -"CREATE DATABASE name\n" -" [ [ WITH ] [ OWNER [=] dbowner ]\n" -" [ TEMPLATE [=] template ]\n" -" [ ENCODING [=] encoding ]\n" -" [ LC_COLLATE [=] lc_collate ]\n" -" [ LC_CTYPE [=] lc_ctype ]\n" -" [ TABLESPACE [=] tablespace ]\n" -" [ CONNECTION LIMIT [=] connlimit ] ]" -msgstr "" - -#: sql_help.h:193 +#: sql_help.h:417 msgid "define a new domain" msgstr "definuje novou atributovou doménu" -#: sql_help.h:194 -msgid "" -"CREATE DOMAIN name [ AS ] data_type\n" -" [ DEFAULT expression ]\n" -" [ constraint [ ... ] ]\n" -"\n" -"where constraint is:\n" -"\n" -"[ CONSTRAINT constraint_name ]\n" -"{ NOT NULL | NULL | CHECK (expression) }" -msgstr "" +#: sql_help.h:422 +msgid "install an extension" +msgstr "instaluje rozšíření" -#: sql_help.h:197 +#: sql_help.h:427 msgid "define a new foreign-data wrapper" msgstr "definuje nový foreign-data wrapper" -#: sql_help.h:198 -msgid "" -"CREATE FOREIGN DATA WRAPPER name\n" -" [ VALIDATOR valfunction | NO VALIDATOR ]\n" -" [ OPTIONS ( option 'value' [, ... ] ) ]" -msgstr "" +#: sql_help.h:432 +msgid "define a new foreign table" +msgstr "definuje nový foreign tabulku" -#: sql_help.h:201 +#: sql_help.h:437 msgid "define a new function" msgstr "definuje novou funkci" -#: sql_help.h:202 -msgid "" -"CREATE [ OR REPLACE ] FUNCTION\n" -" name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } defexpr ] " -"[, ...] ] )\n" -" [ RETURNS rettype\n" -" | RETURNS TABLE ( colname coltype [, ...] ) ]\n" -" { LANGUAGE langname\n" -" | WINDOW\n" -" | IMMUTABLE | STABLE | VOLATILE\n" -" | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" -" | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" -" | COST execution_cost\n" -" | ROWS result_rows\n" -" | SET configuration_parameter { TO value | = value | FROM CURRENT }\n" -" | AS 'definition'\n" -" | AS 'obj_file', 'link_symbol'\n" -" } ...\n" -" [ WITH ( attribute [, ...] ) ]" -msgstr "" - -#: sql_help.h:205 sql_help.h:229 sql_help.h:285 +#: sql_help.h:442 sql_help.h:472 sql_help.h:542 msgid "define a new database role" msgstr "definuje novou databázovou roli" -#: sql_help.h:206 -msgid "" -"CREATE GROUP name [ [ WITH ] option [ ... ] ]\n" -"\n" -"where option can be:\n" -" \n" -" SUPERUSER | NOSUPERUSER\n" -" | CREATEDB | NOCREATEDB\n" -" | CREATEROLE | NOCREATEROLE\n" -" | CREATEUSER | NOCREATEUSER\n" -" | INHERIT | NOINHERIT\n" -" | LOGIN | NOLOGIN\n" -" | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -" | VALID UNTIL 'timestamp' \n" -" | IN ROLE rolename [, ...]\n" -" | IN GROUP rolename [, ...]\n" -" | ROLE rolename [, ...]\n" -" | ADMIN rolename [, ...]\n" -" | USER rolename [, ...]\n" -" | SYSID uid" -msgstr "" - -#: sql_help.h:209 +#: sql_help.h:447 msgid "define a new index" msgstr "definuje nový index" -#: sql_help.h:210 -msgid "" -"CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] name ON table [ USING method ]\n" -" ( { column | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS { FIRST " -"| LAST } ] [, ...] )\n" -" [ WITH ( storage_parameter = value [, ... ] ) ]\n" -" [ TABLESPACE tablespace ]\n" -" [ WHERE predicate ]" -msgstr "" - -#: sql_help.h:213 +#: sql_help.h:452 msgid "define a new procedural language" msgstr "definuje nový procedurální jazyk" -#: sql_help.h:214 -msgid "" -"CREATE [ PROCEDURAL ] LANGUAGE name\n" -"CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name\n" -" HANDLER call_handler [ VALIDATOR valfunction ]" -msgstr "" - -#: sql_help.h:217 +#: sql_help.h:457 msgid "define a new operator" msgstr "definuje nový operátor" -#: sql_help.h:218 -msgid "" -"CREATE OPERATOR name (\n" -" PROCEDURE = funcname\n" -" [, LEFTARG = lefttype ] [, RIGHTARG = righttype ]\n" -" [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]\n" -" [, RESTRICT = res_proc ] [, JOIN = join_proc ]\n" -" [, HASHES ] [, MERGES ]\n" -")" -msgstr "" - -#: sql_help.h:221 +#: sql_help.h:462 msgid "define a new operator class" -msgstr "definuje novou operátorovou třídu" - -#: sql_help.h:222 -msgid "" -"CREATE OPERATOR CLASS name [ DEFAULT ] FOR TYPE data_type\n" -" USING index_method [ FAMILY family_name ] AS\n" -" { OPERATOR strategy_number operator_name [ ( op_type, op_type ) ]\n" -" | FUNCTION support_number [ ( op_type [ , op_type ] ) ] funcname " -"( argument_type [, ...] )\n" -" | STORAGE storage_type\n" -" } [, ... ]" -msgstr "" +msgstr "definuje novou třídu operátorů" -#: sql_help.h:225 +#: sql_help.h:467 msgid "define a new operator family" msgstr "definuje novou rodinu operátorů" -#: sql_help.h:226 -msgid "CREATE OPERATOR FAMILY name USING index_method" -msgstr "" - -#: sql_help.h:230 -msgid "" -"CREATE ROLE name [ [ WITH ] option [ ... ] ]\n" -"\n" -"where option can be:\n" -" \n" -" SUPERUSER | NOSUPERUSER\n" -" | CREATEDB | NOCREATEDB\n" -" | CREATEROLE | NOCREATEROLE\n" -" | CREATEUSER | NOCREATEUSER\n" -" | INHERIT | NOINHERIT\n" -" | LOGIN | NOLOGIN\n" -" | CONNECTION LIMIT connlimit\n" -" | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -" | VALID UNTIL 'timestamp' \n" -" | IN ROLE rolename [, ...]\n" -" | IN GROUP rolename [, ...]\n" -" | ROLE rolename [, ...]\n" -" | ADMIN rolename [, ...]\n" -" | USER rolename [, ...]\n" -" | SYSID uid" -msgstr "" - -#: sql_help.h:233 +#: sql_help.h:477 msgid "define a new rewrite rule" -msgstr "definuje nové pravidlo pro rewrite systém" - -#: sql_help.h:234 -msgid "" -"CREATE [ OR REPLACE ] RULE name AS ON event\n" -" TO table [ WHERE condition ]\n" -" DO [ ALSO | INSTEAD ] { NOTHING | command | ( command ; command ... ) }" -msgstr "" +msgstr "definuje nové přepisovací pravidlo (rule)" -#: sql_help.h:237 +#: sql_help.h:482 msgid "define a new schema" msgstr "definuje nové schéma" -#: sql_help.h:238 -msgid "" -"CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element " -"[ ... ] ]\n" -"CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ]" -msgstr "" - -#: sql_help.h:241 +#: sql_help.h:487 msgid "define a new sequence generator" msgstr "definuje nový generátor sekvencí" -#: sql_help.h:242 -msgid "" -"CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ]\n" -" [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]\n" -" [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]\n" -" [ OWNED BY { table.column | NONE } ]" -msgstr "" - -#: sql_help.h:245 +#: sql_help.h:492 msgid "define a new foreign server" msgstr "definuje nový foreign server" -#: sql_help.h:246 -msgid "" -"CREATE SERVER servername [ TYPE 'servertype' ] [ VERSION 'serverversion' ]\n" -" FOREIGN DATA WRAPPER fdwname\n" -" [ OPTIONS ( option 'value' [, ... ] ) ]" -msgstr "" - -#: sql_help.h:249 +#: sql_help.h:497 msgid "define a new table" msgstr "definuje novou tabulku" -#: sql_help.h:250 -msgid "" -"CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name ( [\n" -" { column_name data_type [ DEFAULT default_expr ] [ column_constraint " -"[ ... ] ]\n" -" | table_constraint\n" -" | LIKE parent_table [ { INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS " -"| INDEXES } ] ... }\n" -" [, ... ]\n" -"] )\n" -"[ INHERITS ( parent_table [, ... ] ) ]\n" -"[ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT " -"OIDS ]\n" -"[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" -"[ TABLESPACE tablespace ]\n" -"\n" -"where column_constraint is:\n" -"\n" -"[ CONSTRAINT constraint_name ]\n" -"{ NOT NULL | \n" -" NULL | \n" -" UNIQUE index_parameters |\n" -" PRIMARY KEY index_parameters |\n" -" CHECK ( expression ) |\n" -" REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH " -"SIMPLE ]\n" -" [ ON DELETE action ] [ ON UPDATE action ] }\n" -"[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY " -"IMMEDIATE ]\n" -"\n" -"and table_constraint is:\n" -"\n" -"[ CONSTRAINT constraint_name ]\n" -"{ UNIQUE ( column_name [, ... ] ) index_parameters |\n" -" PRIMARY KEY ( column_name [, ... ] ) index_parameters |\n" -" CHECK ( expression ) |\n" -" FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn " -"[, ... ] ) ]\n" -" [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON " -"UPDATE action ] }\n" -"[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY " -"IMMEDIATE ]\n" -"\n" -"index_parameters in UNIQUE and PRIMARY KEY constraints are:\n" -"\n" -"[ WITH ( storage_parameter [= value] [, ... ] ) ]\n" -"[ USING INDEX TABLESPACE tablespace ]" -msgstr "" - -#: sql_help.h:253 sql_help.h:525 +#: sql_help.h:502 sql_help.h:867 msgid "define a new table from the results of a query" msgstr "definuje novou tabulku dle výsledku dotazu" -#: sql_help.h:254 -msgid "" -"CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name\n" -" [ (column_name [, ...] ) ]\n" -" [ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT " -"OIDS ]\n" -" [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" -" [ TABLESPACE tablespace ]\n" -" AS query\n" -" [ WITH [ NO ] DATA ]" -msgstr "" - -#: sql_help.h:257 +#: sql_help.h:507 msgid "define a new tablespace" msgstr "definuje nový tablespace" -#: sql_help.h:258 -msgid "" -"CREATE TABLESPACE tablespacename [ OWNER username ] LOCATION 'directory'" -msgstr "" - -#: sql_help.h:261 +#: sql_help.h:512 msgid "define a new text search configuration" msgstr "definuje novou konfiguraci fulltextového vyhledávání" -#: sql_help.h:262 -msgid "" -"CREATE TEXT SEARCH CONFIGURATION name (\n" -" PARSER = parser_name |\n" -" COPY = source_config\n" -")" -msgstr "" - -#: sql_help.h:265 +#: sql_help.h:517 msgid "define a new text search dictionary" msgstr "definuje nový slovník pro fulltextové vyhledávání" -#: sql_help.h:266 -msgid "" -"CREATE TEXT SEARCH DICTIONARY name (\n" -" TEMPLATE = template\n" -" [, option = value [, ... ]]\n" -")" -msgstr "" - -#: sql_help.h:269 +#: sql_help.h:522 msgid "define a new text search parser" msgstr "definuje nový parser pro fulltextové vyhledávání" -#: sql_help.h:270 -msgid "" -"CREATE TEXT SEARCH PARSER name (\n" -" START = start_function ,\n" -" GETTOKEN = gettoken_function ,\n" -" END = end_function ,\n" -" LEXTYPES = lextypes_function\n" -" [, HEADLINE = headline_function ]\n" -")" -msgstr "" - -#: sql_help.h:273 +#: sql_help.h:527 msgid "define a new text search template" msgstr "definuje novou šablonu pro fulltextové vyhledávání" -#: sql_help.h:274 -msgid "" -"CREATE TEXT SEARCH TEMPLATE name (\n" -" [ INIT = init_function , ]\n" -" LEXIZE = lexize_function\n" -")" -msgstr "" - -#: sql_help.h:277 +#: sql_help.h:532 msgid "define a new trigger" msgstr "definuje nový trigger" -#: sql_help.h:278 -msgid "" -"CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }\n" -" ON table [ FOR [ EACH ] { ROW | STATEMENT } ]\n" -" EXECUTE PROCEDURE funcname ( arguments )" -msgstr "" - -#: sql_help.h:281 +#: sql_help.h:537 msgid "define a new data type" msgstr "definuje nový datový typ" -#: sql_help.h:282 -msgid "" -"CREATE TYPE name AS\n" -" ( attribute_name data_type [, ... ] )\n" -"\n" -"CREATE TYPE name AS ENUM\n" -" ( 'label' [, ... ] )\n" -"\n" -"CREATE TYPE name (\n" -" INPUT = input_function,\n" -" OUTPUT = output_function\n" -" [ , RECEIVE = receive_function ]\n" -" [ , SEND = send_function ]\n" -" [ , TYPMOD_IN = type_modifier_input_function ]\n" -" [ , TYPMOD_OUT = type_modifier_output_function ]\n" -" [ , ANALYZE = analyze_function ]\n" -" [ , INTERNALLENGTH = { internallength | VARIABLE } ]\n" -" [ , PASSEDBYVALUE ]\n" -" [ , ALIGNMENT = alignment ]\n" -" [ , STORAGE = storage ]\n" -" [ , LIKE = like_type ]\n" -" [ , CATEGORY = category ]\n" -" [ , PREFERRED = preferred ]\n" -" [ , DEFAULT = default ]\n" -" [ , ELEMENT = element ]\n" -" [ , DELIMITER = delimiter ]\n" -")\n" -"\n" -"CREATE TYPE name" -msgstr "" - -#: sql_help.h:286 -msgid "" -"CREATE USER name [ [ WITH ] option [ ... ] ]\n" -"\n" -"where option can be:\n" -" \n" -" SUPERUSER | NOSUPERUSER\n" -" | CREATEDB | NOCREATEDB\n" -" | CREATEROLE | NOCREATEROLE\n" -" | CREATEUSER | NOCREATEUSER\n" -" | INHERIT | NOINHERIT\n" -" | LOGIN | NOLOGIN\n" -" | CONNECTION LIMIT connlimit\n" -" | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -" | VALID UNTIL 'timestamp' \n" -" | IN ROLE rolename [, ...]\n" -" | IN GROUP rolename [, ...]\n" -" | ROLE rolename [, ...]\n" -" | ADMIN rolename [, ...]\n" -" | USER rolename [, ...]\n" -" | SYSID uid" -msgstr "" - -#: sql_help.h:289 +#: sql_help.h:547 msgid "define a new mapping of a user to a foreign server" -msgstr "" +msgstr "definuje nové mapování uživatele na vzdálený server" -#: sql_help.h:290 -msgid "" -"CREATE USER MAPPING FOR { username | USER | CURRENT_USER | PUBLIC }\n" -" SERVER servername\n" -" [ OPTIONS ( option 'value' [ , ... ] ) ]" -msgstr "" - -#: sql_help.h:293 +#: sql_help.h:552 msgid "define a new view" -msgstr "definuje nový náhled" - -#: sql_help.h:294 -msgid "" -"CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name " -"[, ...] ) ]\n" -" AS query" -msgstr "" +msgstr "definuje nový pohled" -#: sql_help.h:297 +#: sql_help.h:557 msgid "deallocate a prepared statement" -msgstr "dealokuje uložený příkaz" - -#: sql_help.h:298 -msgid "DEALLOCATE [ PREPARE ] { name | ALL }" -msgstr "" +msgstr "dealokuje připravený dotaz (prepared statement)" -#: sql_help.h:301 +#: sql_help.h:562 msgid "define a cursor" msgstr "definuje kursor" -#: sql_help.h:302 -msgid "" -"DECLARE name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]\n" -" CURSOR [ { WITH | WITHOUT } HOLD ] FOR query" -msgstr "" - -#: sql_help.h:305 +#: sql_help.h:567 msgid "delete rows of a table" msgstr "smaže řádky z takulky" -#: sql_help.h:306 -msgid "" -"DELETE FROM [ ONLY ] table [ [ AS ] alias ]\n" -" [ USING usinglist ]\n" -" [ WHERE condition | WHERE CURRENT OF cursor_name ]\n" -" [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" -msgstr "" - -#: sql_help.h:309 +#: sql_help.h:572 msgid "discard session state" -msgstr "" +msgstr "zahodí stav session" -#: sql_help.h:310 -msgid "DISCARD { ALL | PLANS | TEMPORARY | TEMP }" -msgstr "" +#: sql_help.h:577 +msgid "execute an anonymous code block" +msgstr "spustí anonymní blok kódu" -#: sql_help.h:313 +#: sql_help.h:582 msgid "remove an aggregate function" -msgstr "odstraní agregátní funkci" - -#: sql_help.h:314 -msgid "" -"DROP AGGREGATE [ IF EXISTS ] name ( type [ , ... ] ) [ CASCADE | RESTRICT ]" -msgstr "" +msgstr "odstraní agregační funkci" -#: sql_help.h:317 +#: sql_help.h:587 msgid "remove a cast" msgstr "odstraní definici přetypování" -#: sql_help.h:318 -msgid "" -"DROP CAST [ IF EXISTS ] (sourcetype AS targettype) [ CASCADE | RESTRICT ]" -msgstr "" +#: sql_help.h:592 +msgid "remove a collation" +msgstr "odstraní collation" -#: sql_help.h:321 +#: sql_help.h:597 msgid "remove a conversion" msgstr "odstraní konverzi" -#: sql_help.h:322 -msgid "DROP CONVERSION [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -msgstr "" - -#: sql_help.h:325 +#: sql_help.h:602 msgid "remove a database" msgstr "odstraní databázi" -#: sql_help.h:326 -msgid "DROP DATABASE [ IF EXISTS ] name" -msgstr "" - -#: sql_help.h:329 +#: sql_help.h:607 msgid "remove a domain" -msgstr "odstraní atributovou doménu" +msgstr "odstraní doménu" -#: sql_help.h:330 -msgid "DROP DOMAIN [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -msgstr "" +#: sql_help.h:612 +msgid "remove an extension" +msgstr "odstraní extension" -#: sql_help.h:333 +#: sql_help.h:617 msgid "remove a foreign-data wrapper" msgstr "odstraní foreign-data wrapper" -#: sql_help.h:334 -msgid "DROP FOREIGN DATA WRAPPER [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -msgstr "" +#: sql_help.h:622 +msgid "remove a foreign table" +msgstr "odstraní foreign tabulku" -#: sql_help.h:337 +#: sql_help.h:627 msgid "remove a function" msgstr "odstraní funkci" -#: sql_help.h:338 -msgid "" -"DROP FUNCTION [ IF EXISTS ] name ( [ [ argmode ] [ argname ] argtype " -"[, ...] ] )\n" -" [ CASCADE | RESTRICT ]" -msgstr "" - -#: sql_help.h:341 sql_help.h:369 sql_help.h:421 +#: sql_help.h:632 sql_help.h:667 sql_help.h:732 msgid "remove a database role" msgstr "odstraní databázovou roli" -#: sql_help.h:342 -msgid "DROP GROUP [ IF EXISTS ] name [, ...]" -msgstr "" - -#: sql_help.h:345 +#: sql_help.h:637 msgid "remove an index" msgstr "odstraní index" -#: sql_help.h:346 -msgid "DROP INDEX [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -msgstr "" - -#: sql_help.h:349 +#: sql_help.h:642 msgid "remove a procedural language" msgstr "odstraní procedurální jazyk" -#: sql_help.h:350 -msgid "DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -msgstr "" - -#: sql_help.h:353 +#: sql_help.h:647 msgid "remove an operator" msgstr "odstraní operátor" -#: sql_help.h:354 -msgid "" -"DROP OPERATOR [ IF EXISTS ] name ( { lefttype | NONE } , { righttype | " -"NONE } ) [ CASCADE | RESTRICT ]" -msgstr "" - -#: sql_help.h:357 +#: sql_help.h:652 msgid "remove an operator class" -msgstr "odstraní operátorovou třídu" +msgstr "odstraní třídu operátorů" -#: sql_help.h:358 -msgid "" -"DROP OPERATOR CLASS [ IF EXISTS ] name USING index_method [ CASCADE | " -"RESTRICT ]" -msgstr "" - -#: sql_help.h:361 +#: sql_help.h:657 msgid "remove an operator family" msgstr "odstraní rodinu operátorů" -#: sql_help.h:362 -msgid "" -"DROP OPERATOR FAMILY [ IF EXISTS ] name USING index_method [ CASCADE | " -"RESTRICT ]" -msgstr "" - -#: sql_help.h:365 +#: sql_help.h:662 msgid "remove database objects owned by a database role" msgstr "odstraní objekty vlastněné databázovou rolí" -#: sql_help.h:366 -msgid "DROP OWNED BY name [, ...] [ CASCADE | RESTRICT ]" -msgstr "" - -#: sql_help.h:370 -msgid "DROP ROLE [ IF EXISTS ] name [, ...]" -msgstr "" - -#: sql_help.h:373 +#: sql_help.h:672 msgid "remove a rewrite rule" -msgstr "odstraní pravidlo pro rewrite systém" - -#: sql_help.h:374 -msgid "DROP RULE [ IF EXISTS ] name ON relation [ CASCADE | RESTRICT ]" -msgstr "" +msgstr "odstraní přepisovací pravidlo (rule)" -#: sql_help.h:377 +#: sql_help.h:677 msgid "remove a schema" msgstr "odstraní schéma" -#: sql_help.h:378 -msgid "DROP SCHEMA [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -msgstr "" - -#: sql_help.h:381 +#: sql_help.h:682 msgid "remove a sequence" -msgstr "odstraní sekvencí" +msgstr "odstraní sekvenci" -#: sql_help.h:382 -msgid "DROP SEQUENCE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -msgstr "" - -#: sql_help.h:385 +#: sql_help.h:687 msgid "remove a foreign server descriptor" msgstr "odstraní deskriptor foreign serveru" -#: sql_help.h:386 -msgid "DROP SERVER [ IF EXISTS ] servername [ CASCADE | RESTRICT ]" -msgstr "" - -#: sql_help.h:389 +#: sql_help.h:692 msgid "remove a table" msgstr "odstraní tabulku" -#: sql_help.h:390 -msgid "DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -msgstr "" - -#: sql_help.h:393 +#: sql_help.h:697 msgid "remove a tablespace" msgstr "odstraní tablespace" -#: sql_help.h:394 -msgid "DROP TABLESPACE [ IF EXISTS ] tablespacename" -msgstr "" - -#: sql_help.h:397 +#: sql_help.h:702 msgid "remove a text search configuration" msgstr "odstraní konfiguraci fulltextového vyhledávání" -#: sql_help.h:398 -msgid "" -"DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -msgstr "" - -#: sql_help.h:401 +#: sql_help.h:707 msgid "remove a text search dictionary" msgstr "odstraní slovn?ik pro fulltextové vyhledávání" -#: sql_help.h:402 -msgid "DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -msgstr "" - -#: sql_help.h:405 +#: sql_help.h:712 msgid "remove a text search parser" msgstr "odstraní parser pro fulltextové vyhledávání" -#: sql_help.h:406 -msgid "DROP TEXT SEARCH PARSER [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -msgstr "" - -#: sql_help.h:409 +#: sql_help.h:717 msgid "remove a text search template" msgstr "odstraní Šablonu fulltextového vyhledávání" -#: sql_help.h:410 -msgid "DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -msgstr "" - -#: sql_help.h:413 +#: sql_help.h:722 msgid "remove a trigger" msgstr "odstraní trigger" -#: sql_help.h:414 -msgid "DROP TRIGGER [ IF EXISTS ] name ON table [ CASCADE | RESTRICT ]" -msgstr "" - -#: sql_help.h:417 +#: sql_help.h:727 msgid "remove a data type" msgstr "odstraní datový typ" -#: sql_help.h:418 -msgid "DROP TYPE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -msgstr "" - -#: sql_help.h:422 -msgid "DROP USER [ IF EXISTS ] name [, ...]" -msgstr "" - -#: sql_help.h:425 +#: sql_help.h:737 msgid "remove a user mapping for a foreign server" msgstr "odstraní mapování uživatele z foreign serveru" -#: sql_help.h:426 -msgid "" -"DROP USER MAPPING [ IF EXISTS ] FOR { username | USER | CURRENT_USER | " -"PUBLIC } SERVER servername" -msgstr "" - -#: sql_help.h:429 +#: sql_help.h:742 msgid "remove a view" msgstr "odstraní náhled" -#: sql_help.h:430 -msgid "DROP VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -msgstr "" - -#: sql_help.h:434 -msgid "END [ WORK | TRANSACTION ]" -msgstr "" - -#: sql_help.h:437 +#: sql_help.h:752 msgid "execute a prepared statement" -msgstr "provede uložený příkaz" - -#: sql_help.h:438 -msgid "EXECUTE name [ ( parameter [, ...] ) ]" -msgstr "" +msgstr "provede připravený dotaz (prepared statement)" -#: sql_help.h:441 +#: sql_help.h:757 msgid "show the execution plan of a statement" msgstr "ukáže prováděcí plán dotazu" -#: sql_help.h:442 -msgid "EXPLAIN [ ANALYZE ] [ VERBOSE ] statement" -msgstr "" - -#: sql_help.h:445 +#: sql_help.h:762 msgid "retrieve rows from a query using a cursor" -msgstr "zašle řádky výsledku z dotazu kursoru" +msgstr "načte řádky z výsledku dotazu pomocí kursoru" -#: sql_help.h:446 -msgid "" -"FETCH [ direction { FROM | IN } ] cursorname\n" -"\n" -"where direction can be empty or one of:\n" -"\n" -" NEXT\n" -" PRIOR\n" -" FIRST\n" -" LAST\n" -" ABSOLUTE count\n" -" RELATIVE count\n" -" count\n" -" ALL\n" -" FORWARD\n" -" FORWARD count\n" -" FORWARD ALL\n" -" BACKWARD\n" -" BACKWARD count\n" -" BACKWARD ALL" -msgstr "" - -#: sql_help.h:449 +#: sql_help.h:767 msgid "define access privileges" msgstr "definuje přístupová práva" -#: sql_help.h:450 -msgid "" -"GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | " -"TRIGGER }\n" -" [,...] | ALL [ PRIVILEGES ] }\n" -" ON [ TABLE ] tablename [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column [, ...] )\n" -" [,...] | ALL [ PRIVILEGES ] ( column [, ...] ) }\n" -" ON [ TABLE ] tablename [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { { USAGE | SELECT | UPDATE }\n" -" [,...] | ALL [ PRIVILEGES ] }\n" -" ON SEQUENCE sequencename [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL " -"[ PRIVILEGES ] }\n" -" ON DATABASE dbname [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -" ON FOREIGN DATA WRAPPER fdwname [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -" ON FOREIGN SERVER servername [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n" -" ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) " -"[, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -" ON LANGUAGE langname [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" -" ON SCHEMA schemaname [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { CREATE | ALL [ PRIVILEGES ] }\n" -" ON TABLESPACE tablespacename [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT role [, ...] TO rolename [, ...] [ WITH ADMIN OPTION ]" -msgstr "" - -#: sql_help.h:453 +#: sql_help.h:772 msgid "create new rows in a table" msgstr "přidá nové řádky do tabulky" -#: sql_help.h:454 -msgid "" -"INSERT INTO table [ ( column [, ...] ) ]\n" -" { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | " -"query }\n" -" [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" -msgstr "" - -#: sql_help.h:457 +#: sql_help.h:777 msgid "listen for a notification" msgstr "naslouchá upozorněním" -#: sql_help.h:458 -msgid "LISTEN name" -msgstr "" - -#: sql_help.h:461 -msgid "load or reload a shared library file" -msgstr "načte nebo opětovně načte sdílenou knihovnu" - -#: sql_help.h:462 -msgid "LOAD 'filename'" -msgstr "" +#: sql_help.h:782 +msgid "load a shared library file" +msgstr "načte sdílenou knihovnu" -#: sql_help.h:465 +#: sql_help.h:787 msgid "lock a table" msgstr "uzamkne tabulku" -#: sql_help.h:466 -msgid "" -"LOCK [ TABLE ] [ ONLY ] name [, ...] [ IN lockmode MODE ] [ NOWAIT ]\n" -"\n" -"where lockmode is one of:\n" -"\n" -" ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n" -" | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE" -msgstr "" - -#: sql_help.h:469 +#: sql_help.h:792 msgid "position a cursor" msgstr "přemístí kursor" -#: sql_help.h:470 -msgid "MOVE [ direction { FROM | IN } ] cursorname" -msgstr "" - -#: sql_help.h:473 +#: sql_help.h:797 msgid "generate a notification" msgstr "generuje upozornění" -#: sql_help.h:474 -msgid "NOTIFY name" -msgstr "" - -#: sql_help.h:477 +#: sql_help.h:802 msgid "prepare a statement for execution" -msgstr "připraví a uloží příkaz pro provedení" - -#: sql_help.h:478 -msgid "PREPARE name [ ( datatype [, ...] ) ] AS statement" -msgstr "" +msgstr "připraví a uloží dotaz pro provedení" -#: sql_help.h:481 +#: sql_help.h:807 msgid "prepare the current transaction for two-phase commit" msgstr "přípraví aktuální transakci pro dvoufázoví commit" -#: sql_help.h:482 -msgid "PREPARE TRANSACTION transaction_id" -msgstr "" - -#: sql_help.h:485 +#: sql_help.h:812 msgid "change the ownership of database objects owned by a database role" msgstr "změní vlastníka databázových objektů vlastněných databázovou rolí" -#: sql_help.h:486 -msgid "REASSIGN OWNED BY old_role [, ...] TO new_role" -msgstr "" - -#: sql_help.h:489 +#: sql_help.h:817 msgid "rebuild indexes" msgstr "znovuvytvoří indexy" -#: sql_help.h:490 -msgid "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } name [ FORCE ]" -msgstr "" - -#: sql_help.h:493 +#: sql_help.h:822 msgid "destroy a previously defined savepoint" msgstr "odstraní dříve vytvořený savepoint" -#: sql_help.h:494 -msgid "RELEASE [ SAVEPOINT ] savepoint_name" -msgstr "" - -#: sql_help.h:497 +#: sql_help.h:827 msgid "restore the value of a run-time parameter to the default value" msgstr "přenastaví parametr běhu na implicitní hodnotu" -#: sql_help.h:498 -msgid "" -"RESET configuration_parameter\n" -"RESET ALL" -msgstr "" - -#: sql_help.h:501 +#: sql_help.h:832 msgid "remove access privileges" msgstr "odstraní přístupová práva" -#: sql_help.h:502 -msgid "" -"REVOKE [ GRANT OPTION FOR ]\n" -" { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | " -"TRIGGER }\n" -" [,...] | ALL [ PRIVILEGES ] }\n" -" ON [ TABLE ] tablename [, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { { SELECT | INSERT | UPDATE | REFERENCES } ( column [, ...] )\n" -" [,...] | ALL [ PRIVILEGES ] ( column [, ...] ) }\n" -" ON [ TABLE ] tablename [, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { { USAGE | SELECT | UPDATE }\n" -" [,...] | ALL [ PRIVILEGES ] }\n" -" ON SEQUENCE sequencename [, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }\n" -" ON DATABASE dbname [, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { USAGE | ALL [ PRIVILEGES ] }\n" -" ON FOREIGN DATA WRAPPER fdwname [, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { USAGE | ALL [ PRIVILEGES ] }\n" -" ON FOREIGN SERVER servername [, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { EXECUTE | ALL [ PRIVILEGES ] }\n" -" ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) " -"[, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { USAGE | ALL [ PRIVILEGES ] }\n" -" ON LANGUAGE langname [, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" -" ON SCHEMA schemaname [, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { CREATE | ALL [ PRIVILEGES ] }\n" -" ON TABLESPACE tablespacename [, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ ADMIN OPTION FOR ]\n" -" role [, ...] FROM rolename [, ...]\n" -" [ CASCADE | RESTRICT ]" -msgstr "" - -#: sql_help.h:506 -msgid "ROLLBACK [ WORK | TRANSACTION ]" -msgstr "" - -#: sql_help.h:509 +#: sql_help.h:842 msgid "cancel a transaction that was earlier prepared for two-phase commit" msgstr "zruší transakci, která byla připravena pro dvoufázový commit" -#: sql_help.h:510 -msgid "ROLLBACK PREPARED transaction_id" -msgstr "" - -#: sql_help.h:513 +#: sql_help.h:847 msgid "roll back to a savepoint" msgstr "vrátí se na savepoint" -#: sql_help.h:514 -msgid "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_name" -msgstr "" - -#: sql_help.h:517 +#: sql_help.h:852 msgid "define a new savepoint within the current transaction" msgstr "definuje nový savepoint uvnitř aktuální transakce" -#: sql_help.h:518 -msgid "SAVEPOINT savepoint_name" -msgstr "" +#: sql_help.h:857 +msgid "define or change a security label applied to an object" +msgstr "definuje nebo změní bezpečnostní štítek aplikovaný na objekt" -#: sql_help.h:521 sql_help.h:557 sql_help.h:581 +#: sql_help.h:862 sql_help.h:907 sql_help.h:937 msgid "retrieve rows from a table or view" msgstr "vybere řádky z tabulky nebo náhledu" -#: sql_help.h:522 sql_help.h:558 sql_help.h:582 -msgid "" -"[ WITH [ RECURSIVE ] with_query [, ...] ]\n" -"SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" -" * | expression [ [ AS ] output_name ] [, ...]\n" -" [ FROM from_item [, ...] ]\n" -" [ WHERE condition ]\n" -" [ GROUP BY expression [, ...] ]\n" -" [ HAVING condition [, ...] ]\n" -" [ WINDOW window_name AS ( window_definition ) [, ...] ]\n" -" [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" -" [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | " -"LAST } ] [, ...] ]\n" -" [ LIMIT { count | ALL } ]\n" -" [ OFFSET start [ ROW | ROWS ] ]\n" -" [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n" -" [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]\n" -"\n" -"where from_item can be one of:\n" -"\n" -" [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]\n" -" ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]\n" -" with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]\n" -" function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias " -"[, ...] | column_definition [, ...] ) ]\n" -" function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] )\n" -" from_item [ NATURAL ] join_type from_item [ ON join_condition | USING " -"( join_column [, ...] ) ]\n" -"\n" -"and with_query is:\n" -"\n" -" with_query_name [ ( column_name [, ...] ) ] AS ( select )\n" -"\n" -"TABLE { [ ONLY ] table_name [ * ] | with_query_name }" -msgstr "" - -#: sql_help.h:526 -msgid "" -"[ WITH [ RECURSIVE ] with_query [, ...] ]\n" -"SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" -" * | expression [ [ AS ] output_name ] [, ...]\n" -" INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table\n" -" [ FROM from_item [, ...] ]\n" -" [ WHERE condition ]\n" -" [ GROUP BY expression [, ...] ]\n" -" [ HAVING condition [, ...] ]\n" -" [ WINDOW window_name AS ( window_definition ) [, ...] ]\n" -" [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" -" [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | " -"LAST } ] [, ...] ]\n" -" [ LIMIT { count | ALL } ]\n" -" [ OFFSET start [ ROW | ROWS ] ]\n" -" [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n" -" [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]" -msgstr "" - -#: sql_help.h:529 +#: sql_help.h:872 msgid "change a run-time parameter" msgstr "změní parametry běhu" -#: sql_help.h:530 -msgid "" -"SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | 'value' " -"| DEFAULT }\n" -"SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }" -msgstr "" - -#: sql_help.h:533 -msgid "set constraint checking modes for the current transaction" -msgstr "nastaví constraint checking mód pro aktuální transakci" +#: sql_help.h:877 +msgid "set constraint check timing for the current transaction" +msgstr "nastaví mód kontroly omezení (constraints) pro aktuální transakci" -#: sql_help.h:534 -msgid "SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }" -msgstr "" - -#: sql_help.h:537 +#: sql_help.h:882 msgid "set the current user identifier of the current session" -msgstr "" - -#: sql_help.h:538 -msgid "" -"SET [ SESSION | LOCAL ] ROLE rolename\n" -"SET [ SESSION | LOCAL ] ROLE NONE\n" -"RESET ROLE" -msgstr "" +msgstr "nastaví uživatelský identifikátor aktuální session" -#: sql_help.h:541 +#: sql_help.h:887 msgid "" "set the session user identifier and the current user identifier of the " "current session" -msgstr "" - -#: sql_help.h:542 -msgid "" -"SET [ SESSION | LOCAL ] SESSION AUTHORIZATION username\n" -"SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n" -"RESET SESSION AUTHORIZATION" msgstr "" +"nastaví uživatelský identifikátor session a identifikátor " +"aktuálníhouživatele pro aktuální session" -#: sql_help.h:545 +#: sql_help.h:892 msgid "set the characteristics of the current transaction" msgstr "nastaví charakteristiku pro aktualní trasakci" -#: sql_help.h:546 -msgid "" -"SET TRANSACTION transaction_mode [, ...]\n" -"SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [, ...]\n" -"\n" -"where transaction_mode is one of:\n" -"\n" -" ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ " -"UNCOMMITTED }\n" -" READ WRITE | READ ONLY" -msgstr "" - -#: sql_help.h:549 +#: sql_help.h:897 msgid "show the value of a run-time parameter" msgstr "zobrazí hodnoty run-time parametrů" -#: sql_help.h:550 -msgid "" -"SHOW name\n" -"SHOW ALL" -msgstr "" - -#: sql_help.h:554 -msgid "" -"START TRANSACTION [ transaction_mode [, ...] ]\n" -"\n" -"where transaction_mode is one of:\n" -"\n" -" ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ " -"UNCOMMITTED }\n" -" READ WRITE | READ ONLY" -msgstr "" - -#: sql_help.h:561 +#: sql_help.h:912 msgid "empty a table or set of tables" msgstr "zruší obsah tabulky nebo skupiny tabulek" -#: sql_help.h:562 -msgid "" -"TRUNCATE [ TABLE ] [ ONLY ] name [, ... ]\n" -" [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]" -msgstr "" - -#: sql_help.h:565 +#: sql_help.h:917 msgid "stop listening for a notification" msgstr "ukončí naslouchání připomínkám" -#: sql_help.h:566 -msgid "UNLISTEN { name | * }" -msgstr "" - -#: sql_help.h:569 +#: sql_help.h:922 msgid "update rows of a table" msgstr "aktualizuje řádky tabulky" -#: sql_help.h:570 -msgid "" -"UPDATE [ ONLY ] table [ [ AS ] alias ]\n" -" SET { column = { expression | DEFAULT } |\n" -" ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } " -"[, ...]\n" -" [ FROM fromlist ]\n" -" [ WHERE condition | WHERE CURRENT OF cursor_name ]\n" -" [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" -msgstr "" - -#: sql_help.h:573 +#: sql_help.h:927 msgid "garbage-collect and optionally analyze a database" msgstr "provede úklid a případně analýzu databáze" -#: sql_help.h:574 -msgid "" -"VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]\n" -"VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column " -"[, ...] ) ] ]" -msgstr "" - -#: sql_help.h:577 +#: sql_help.h:932 msgid "compute a set of rows" msgstr "spočítá množinu řádek" -#: sql_help.h:578 -msgid "" -"VALUES ( expression [, ...] ) [, ...]\n" -" [ ORDER BY sort_expression [ ASC | DESC | USING operator ] [, ...] ]\n" -" [ LIMIT { count | ALL } ]\n" -" [ OFFSET start [ ROW | ROWS ] ]\n" -" [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]" -msgstr "" +#: sql_help.c:26 sql_help.c:29 sql_help.c:32 sql_help.c:44 sql_help.c:46 +#: sql_help.c:48 sql_help.c:59 sql_help.c:61 sql_help.c:63 sql_help.c:87 +#: sql_help.c:91 sql_help.c:93 sql_help.c:95 sql_help.c:97 sql_help.c:100 +#: sql_help.c:102 sql_help.c:104 sql_help.c:179 sql_help.c:181 sql_help.c:182 +#: sql_help.c:184 sql_help.c:186 sql_help.c:188 sql_help.c:276 sql_help.c:281 +#: sql_help.c:306 sql_help.c:308 sql_help.c:311 sql_help.c:313 sql_help.c:351 +#: sql_help.c:356 sql_help.c:361 sql_help.c:366 sql_help.c:404 sql_help.c:406 +#: sql_help.c:408 sql_help.c:411 sql_help.c:421 sql_help.c:423 sql_help.c:442 +#: sql_help.c:446 sql_help.c:459 sql_help.c:462 sql_help.c:465 sql_help.c:485 +#: sql_help.c:497 sql_help.c:505 sql_help.c:508 sql_help.c:511 sql_help.c:541 +#: sql_help.c:547 sql_help.c:549 sql_help.c:553 sql_help.c:556 sql_help.c:559 +#: sql_help.c:569 sql_help.c:571 sql_help.c:588 sql_help.c:597 sql_help.c:599 +#: sql_help.c:601 sql_help.c:675 sql_help.c:677 sql_help.c:680 sql_help.c:682 +#: sql_help.c:740 sql_help.c:742 sql_help.c:744 sql_help.c:747 sql_help.c:768 +#: sql_help.c:771 sql_help.c:774 sql_help.c:777 sql_help.c:781 sql_help.c:783 +#: sql_help.c:785 sql_help.c:787 sql_help.c:801 sql_help.c:804 sql_help.c:806 +#: sql_help.c:808 sql_help.c:818 sql_help.c:820 sql_help.c:830 sql_help.c:832 +#: sql_help.c:841 sql_help.c:862 sql_help.c:864 sql_help.c:866 sql_help.c:869 +#: sql_help.c:871 sql_help.c:873 sql_help.c:911 sql_help.c:917 sql_help.c:919 +#: sql_help.c:922 sql_help.c:924 sql_help.c:926 sql_help.c:951 sql_help.c:954 +#: sql_help.c:956 sql_help.c:958 sql_help.c:960 sql_help.c:1000 +#: sql_help.c:1183 sql_help.c:1191 sql_help.c:1235 sql_help.c:1239 +#: sql_help.c:1249 sql_help.c:1267 sql_help.c:1290 sql_help.c:1322 +#: sql_help.c:1367 sql_help.c:1409 sql_help.c:1431 sql_help.c:1451 +#: sql_help.c:1452 sql_help.c:1469 sql_help.c:1489 sql_help.c:1511 +#: sql_help.c:1539 sql_help.c:1560 sql_help.c:1590 sql_help.c:1771 +#: sql_help.c:1784 sql_help.c:1801 sql_help.c:1817 sql_help.c:1840 +#: sql_help.c:1883 sql_help.c:1887 sql_help.c:1889 sql_help.c:1907 +#: sql_help.c:1934 sql_help.c:1967 sql_help.c:1977 sql_help.c:1986 +#: sql_help.c:2030 sql_help.c:2048 sql_help.c:2056 sql_help.c:2064 +#: sql_help.c:2072 sql_help.c:2088 sql_help.c:2096 sql_help.c:2105 +#: sql_help.c:2116 sql_help.c:2124 sql_help.c:2132 sql_help.c:2140 +#: sql_help.c:2150 sql_help.c:2159 sql_help.c:2168 sql_help.c:2176 +#: sql_help.c:2184 sql_help.c:2193 sql_help.c:2201 sql_help.c:2217 +#: sql_help.c:2233 sql_help.c:2241 sql_help.c:2249 sql_help.c:2257 +#: sql_help.c:2265 sql_help.c:2274 sql_help.c:2282 sql_help.c:2299 +#: sql_help.c:2314 sql_help.c:2506 sql_help.c:2557 sql_help.c:2584 +#: sql_help.c:2927 sql_help.c:2973 sql_help.c:3080 +msgid "name" +msgstr "jméno" + +#: sql_help.c:27 sql_help.c:30 sql_help.c:33 sql_help.c:317 sql_help.c:320 +#: sql_help.c:2031 +msgid "type" +msgstr "typ" + +#: sql_help.c:28 sql_help.c:45 sql_help.c:60 sql_help.c:92 sql_help.c:312 +#: sql_help.c:360 sql_help.c:393 sql_help.c:405 sql_help.c:422 sql_help.c:461 +#: sql_help.c:507 sql_help.c:548 sql_help.c:570 sql_help.c:600 sql_help.c:681 +#: sql_help.c:741 sql_help.c:784 sql_help.c:805 sql_help.c:819 sql_help.c:831 +#: sql_help.c:843 sql_help.c:870 sql_help.c:918 sql_help.c:959 +msgid "new_name" +msgstr "nové_jméno" + +#: sql_help.c:31 sql_help.c:47 sql_help.c:62 sql_help.c:94 sql_help.c:187 +#: sql_help.c:282 sql_help.c:322 sql_help.c:365 sql_help.c:424 sql_help.c:433 +#: sql_help.c:445 sql_help.c:464 sql_help.c:510 sql_help.c:572 sql_help.c:598 +#: sql_help.c:617 sql_help.c:725 sql_help.c:743 sql_help.c:786 sql_help.c:807 +#: sql_help.c:865 sql_help.c:957 +msgid "new_owner" +msgstr "nový_vlastník" + +#: sql_help.c:34 sql_help.c:49 sql_help.c:64 sql_help.c:189 sql_help.c:228 +#: sql_help.c:314 sql_help.c:370 sql_help.c:449 sql_help.c:467 sql_help.c:513 +#: sql_help.c:602 sql_help.c:683 sql_help.c:788 sql_help.c:809 sql_help.c:821 +#: sql_help.c:833 sql_help.c:872 sql_help.c:961 +msgid "new_schema" +msgstr "nové_schéma" + +#: sql_help.c:88 sql_help.c:279 sql_help.c:323 sql_help.c:542 sql_help.c:614 +#: sql_help.c:802 sql_help.c:912 sql_help.c:938 sql_help.c:1142 +#: sql_help.c:1147 sql_help.c:1325 sql_help.c:1343 sql_help.c:1410 +#: sql_help.c:1540 sql_help.c:1611 sql_help.c:1786 sql_help.c:1935 +#: sql_help.c:1957 sql_help.c:2332 +msgid "option" +msgstr "volba" + +#: sql_help.c:89 sql_help.c:543 sql_help.c:913 sql_help.c:1411 sql_help.c:1541 +#: sql_help.c:1936 +msgid "where option can be:" +msgstr "kde volba může být:" + +#: sql_help.c:90 sql_help.c:544 sql_help.c:914 sql_help.c:1274 sql_help.c:1542 +#: sql_help.c:1937 +msgid "connlimit" +msgstr "connlimit" + +#: sql_help.c:96 sql_help.c:726 +msgid "new_tablespace" +msgstr "nový_tablespace" + +#: sql_help.c:98 sql_help.c:101 sql_help.c:103 sql_help.c:374 sql_help.c:376 +#: sql_help.c:377 sql_help.c:551 sql_help.c:555 sql_help.c:558 sql_help.c:920 +#: sql_help.c:923 sql_help.c:925 sql_help.c:1378 sql_help.c:2601 +#: sql_help.c:2916 +msgid "configuration_parameter" +msgstr "konfigurační_parametr" + +#: sql_help.c:99 sql_help.c:280 sql_help.c:324 sql_help.c:375 sql_help.c:410 +#: sql_help.c:552 sql_help.c:615 sql_help.c:702 sql_help.c:720 sql_help.c:746 +#: sql_help.c:803 sql_help.c:921 sql_help.c:939 sql_help.c:1326 +#: sql_help.c:1344 sql_help.c:1379 sql_help.c:1380 sql_help.c:1439 +#: sql_help.c:1612 sql_help.c:1686 sql_help.c:1694 sql_help.c:1726 +#: sql_help.c:1748 sql_help.c:1787 sql_help.c:1958 sql_help.c:2917 +#: sql_help.c:2918 +msgid "value" +msgstr "hodnota" + +#: sql_help.c:151 +msgid "target_role" +msgstr "cílová_role" + +#: sql_help.c:152 sql_help.c:1575 sql_help.c:2430 sql_help.c:2437 +#: sql_help.c:2449 sql_help.c:2455 sql_help.c:2684 sql_help.c:2691 +#: sql_help.c:2703 sql_help.c:2709 +msgid "schema_name" +msgstr "jméno_schématu" + +#: sql_help.c:153 +msgid "abbreviated_grant_or_revoke" +msgstr "zkrácený_grant_nebo_revoke" + +#: sql_help.c:154 +msgid "where abbreviated_grant_or_revoke is one of:" +msgstr "kde zkrácený_grant_nebo_revoke je jedno z:" + +#: sql_help.c:155 sql_help.c:156 sql_help.c:157 sql_help.c:158 sql_help.c:159 +#: sql_help.c:160 sql_help.c:1414 sql_help.c:1415 sql_help.c:1416 +#: sql_help.c:1417 sql_help.c:1418 sql_help.c:1545 sql_help.c:1546 +#: sql_help.c:1547 sql_help.c:1548 sql_help.c:1549 sql_help.c:1940 +#: sql_help.c:1941 sql_help.c:1942 sql_help.c:1943 sql_help.c:1944 +#: sql_help.c:2431 sql_help.c:2435 sql_help.c:2438 sql_help.c:2440 +#: sql_help.c:2442 sql_help.c:2444 sql_help.c:2450 sql_help.c:2452 +#: sql_help.c:2454 sql_help.c:2456 sql_help.c:2458 sql_help.c:2459 +#: sql_help.c:2460 sql_help.c:2685 sql_help.c:2689 sql_help.c:2692 +#: sql_help.c:2694 sql_help.c:2696 sql_help.c:2698 sql_help.c:2704 +#: sql_help.c:2706 sql_help.c:2708 sql_help.c:2710 sql_help.c:2712 +#: sql_help.c:2713 sql_help.c:2714 sql_help.c:2937 +msgid "role_name" +msgstr "jméno_role" + +#: sql_help.c:180 sql_help.c:693 sql_help.c:695 sql_help.c:953 sql_help.c:1293 +#: sql_help.c:1297 sql_help.c:1435 sql_help.c:1698 sql_help.c:1708 +#: sql_help.c:1730 sql_help.c:2474 sql_help.c:2822 sql_help.c:2823 +#: sql_help.c:2827 sql_help.c:2832 sql_help.c:2891 sql_help.c:2892 +#: sql_help.c:2897 sql_help.c:2902 sql_help.c:3025 sql_help.c:3026 +#: sql_help.c:3030 sql_help.c:3035 sql_help.c:3106 sql_help.c:3108 +#: sql_help.c:3139 sql_help.c:3181 sql_help.c:3182 sql_help.c:3186 +#: sql_help.c:3191 +msgid "expression" +msgstr "výraz" + +#: sql_help.c:183 +msgid "domain_constraint" +msgstr "omezení_domény" + +#: sql_help.c:185 sql_help.c:708 sql_help.c:709 sql_help.c:728 sql_help.c:1059 +#: sql_help.c:1296 sql_help.c:1697 sql_help.c:1707 +msgid "constraint_name" +msgstr "jméno_omezení" + +#: sql_help.c:225 sql_help.c:227 sql_help.c:229 sql_help.c:231 sql_help.c:1308 +#: sql_help.c:2080 +msgid "extension_name" +msgstr "název_extension" + +#: sql_help.c:226 sql_help.c:613 +msgid "new_version" +msgstr "nová_verze" + +#: sql_help.c:230 sql_help.c:232 +msgid "member_object" +msgstr "členský_objekt" + +#: sql_help.c:233 +msgid "where member_object is:" +msgstr "kde členský_objekt je:" + +#: sql_help.c:234 sql_help.c:1052 sql_help.c:2771 +msgid "agg_name" +msgstr "jméno_agregace" + +#: sql_help.c:235 sql_help.c:1053 sql_help.c:2772 +msgid "agg_type" +msgstr "typ_agregace" + +#: sql_help.c:236 sql_help.c:1054 sql_help.c:1215 sql_help.c:1219 +#: sql_help.c:1221 sql_help.c:2039 +msgid "source_type" +msgstr "zdrojový_typ" + +#: sql_help.c:237 sql_help.c:1055 sql_help.c:1216 sql_help.c:1220 +#: sql_help.c:1222 sql_help.c:2040 +msgid "target_type" +msgstr "cílový_typ" + +#: sql_help.c:238 sql_help.c:239 sql_help.c:240 sql_help.c:241 sql_help.c:242 +#: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:255 sql_help.c:256 +#: sql_help.c:257 sql_help.c:258 sql_help.c:259 sql_help.c:260 sql_help.c:261 +#: sql_help.c:262 sql_help.c:263 sql_help.c:264 sql_help.c:1056 +#: sql_help.c:1061 sql_help.c:1062 sql_help.c:1063 sql_help.c:1064 +#: sql_help.c:1065 sql_help.c:1066 sql_help.c:1071 sql_help.c:1076 +#: sql_help.c:1078 sql_help.c:1080 sql_help.c:1081 sql_help.c:1084 +#: sql_help.c:1085 sql_help.c:1086 sql_help.c:1087 sql_help.c:1088 +#: sql_help.c:1089 sql_help.c:1090 sql_help.c:1091 sql_help.c:1092 +#: sql_help.c:1095 sql_help.c:1096 sql_help.c:2768 sql_help.c:2773 +#: sql_help.c:2774 sql_help.c:2780 sql_help.c:2781 sql_help.c:2782 +#: sql_help.c:2783 sql_help.c:2784 +msgid "object_name" +msgstr "jméno_objektu" + +#: sql_help.c:243 sql_help.c:495 sql_help.c:1067 sql_help.c:1217 +#: sql_help.c:1252 sql_help.c:1470 sql_help.c:1501 sql_help.c:1845 +#: sql_help.c:2445 sql_help.c:2699 sql_help.c:2775 sql_help.c:2848 +#: sql_help.c:2853 sql_help.c:3051 sql_help.c:3056 sql_help.c:3207 +#: sql_help.c:3212 +msgid "function_name" +msgstr "jméno_funkce" + +#: sql_help.c:244 sql_help.c:352 sql_help.c:357 sql_help.c:362 sql_help.c:367 +#: sql_help.c:1068 sql_help.c:1368 sql_help.c:2106 sql_help.c:2446 +#: sql_help.c:2700 sql_help.c:2776 +msgid "argmode" +msgstr "mód_argumentu" + +#: sql_help.c:245 sql_help.c:353 sql_help.c:358 sql_help.c:363 sql_help.c:368 +#: sql_help.c:1069 sql_help.c:1369 sql_help.c:2107 sql_help.c:2777 +msgid "argname" +msgstr "jméno_argumentu" + +#: sql_help.c:246 sql_help.c:354 sql_help.c:359 sql_help.c:364 sql_help.c:369 +#: sql_help.c:1070 sql_help.c:1370 sql_help.c:2108 sql_help.c:2778 +msgid "argtype" +msgstr "typ_argumentu" + +#: sql_help.c:247 sql_help.c:488 sql_help.c:1073 sql_help.c:1494 +msgid "operator_name" +msgstr "jméno_operátoru" + +#: sql_help.c:248 sql_help.c:443 sql_help.c:447 sql_help.c:1074 +#: sql_help.c:1471 sql_help.c:2141 +msgid "left_type" +msgstr "levý_typ" + +#: sql_help.c:249 sql_help.c:444 sql_help.c:448 sql_help.c:1075 +#: sql_help.c:1472 sql_help.c:2142 +msgid "right_type" +msgstr "pravý_typ" + +#: sql_help.c:251 sql_help.c:253 sql_help.c:460 sql_help.c:463 sql_help.c:466 +#: sql_help.c:486 sql_help.c:498 sql_help.c:506 sql_help.c:509 sql_help.c:512 +#: sql_help.c:1077 sql_help.c:1079 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1713 sql_help.c:2151 sql_help.c:2160 +msgid "index_method" +msgstr "metoda_indexování" + +#: sql_help.c:277 sql_help.c:1323 +msgid "handler_function" +msgstr "handler_function" + +#: sql_help.c:278 sql_help.c:1324 +msgid "validator_function" +msgstr "validator_function" + +#: sql_help.c:307 sql_help.c:355 sql_help.c:676 sql_help.c:863 sql_help.c:1704 +#: sql_help.c:1705 sql_help.c:1721 sql_help.c:1722 +msgid "action" +msgstr "akce" + +#: sql_help.c:309 sql_help.c:316 sql_help.c:318 sql_help.c:319 sql_help.c:321 +#: sql_help.c:596 sql_help.c:678 sql_help.c:685 sql_help.c:689 sql_help.c:690 +#: sql_help.c:694 sql_help.c:696 sql_help.c:697 sql_help.c:698 sql_help.c:700 +#: sql_help.c:703 sql_help.c:705 sql_help.c:952 sql_help.c:955 sql_help.c:970 +#: sql_help.c:1140 sql_help.c:1144 sql_help.c:1156 sql_help.c:1157 +#: sql_help.c:1434 sql_help.c:1597 sql_help.c:1729 sql_help.c:2432 +#: sql_help.c:2433 sql_help.c:2473 sql_help.c:2686 sql_help.c:2687 +#: sql_help.c:3105 sql_help.c:3107 sql_help.c:3124 sql_help.c:3127 +msgid "column" +msgstr "sloupec" + +#: sql_help.c:310 sql_help.c:679 +msgid "new_column" +msgstr "nový_sloupec" + +#: sql_help.c:315 sql_help.c:371 sql_help.c:684 sql_help.c:876 +msgid "where action is one of:" +msgstr "kde akce je jedno z:" + +#: sql_help.c:372 sql_help.c:1376 +msgid "execution_cost" +msgstr "execution_cost" + +#: sql_help.c:373 sql_help.c:1377 +msgid "result_rows" +msgstr "výsledné_řádky" + +#: sql_help.c:388 sql_help.c:390 sql_help.c:392 +msgid "group_name" +msgstr "group_name" + +#: sql_help.c:389 sql_help.c:391 sql_help.c:936 sql_help.c:1268 +#: sql_help.c:1576 sql_help.c:1578 sql_help.c:1759 sql_help.c:1955 +#: sql_help.c:2290 sql_help.c:2947 +msgid "user_name" +msgstr "uživatel" + +#: sql_help.c:407 sql_help.c:1758 sql_help.c:2225 sql_help.c:2457 +#: sql_help.c:2711 +msgid "tablespace_name" +msgstr "jméno_tablespace" + +#: sql_help.c:409 sql_help.c:412 sql_help.c:719 sql_help.c:721 sql_help.c:1438 +#: sql_help.c:1685 sql_help.c:1693 sql_help.c:1725 sql_help.c:1747 +msgid "storage_parameter" +msgstr "parametr_uložení" + +#: sql_help.c:432 sql_help.c:1072 sql_help.c:2779 +msgid "large_object_oid" +msgstr "oid_large_objektu" + +#: sql_help.c:487 sql_help.c:499 sql_help.c:1493 +msgid "strategy_number" +msgstr "číslo_strategie" + +#: sql_help.c:489 sql_help.c:490 sql_help.c:493 sql_help.c:494 sql_help.c:500 +#: sql_help.c:501 sql_help.c:503 sql_help.c:504 sql_help.c:1495 +#: sql_help.c:1496 sql_help.c:1499 sql_help.c:1500 +msgid "op_type" +msgstr "typ_operátoru" + +#: sql_help.c:491 sql_help.c:1497 +msgid "sort_family_name" +msgstr "sort_family_name" + +#: sql_help.c:492 sql_help.c:502 sql_help.c:1498 +msgid "support_number" +msgstr "support_number" + +#: sql_help.c:496 sql_help.c:1218 sql_help.c:1502 +msgid "argument_type" +msgstr "typ_argumentu" + +#: sql_help.c:545 sql_help.c:915 sql_help.c:1412 sql_help.c:1543 +#: sql_help.c:1938 +msgid "password" +msgstr "heslo" + +#: sql_help.c:546 sql_help.c:916 sql_help.c:1413 sql_help.c:1544 +#: sql_help.c:1939 +msgid "timestamp" +msgstr "timestamp" + +#: sql_help.c:550 sql_help.c:554 sql_help.c:557 sql_help.c:560 sql_help.c:2439 +#: sql_help.c:2693 +msgid "database_name" +msgstr "jméno_databáze" + +#: sql_help.c:589 sql_help.c:1591 +msgid "increment" +msgstr "inkrement" + +#: sql_help.c:590 sql_help.c:1592 +msgid "minvalue" +msgstr "min_hodnota" + +#: sql_help.c:591 sql_help.c:1593 +msgid "maxvalue" +msgstr "max_hodnota" + +#: sql_help.c:592 sql_help.c:1594 sql_help.c:2835 sql_help.c:2905 +#: sql_help.c:3038 sql_help.c:3143 sql_help.c:3194 +msgid "start" +msgstr "start" + +#: sql_help.c:593 +msgid "restart" +msgstr "restart" + +#: sql_help.c:594 sql_help.c:1595 +msgid "cache" +msgstr "cache" + +#: sql_help.c:612 sql_help.c:616 sql_help.c:937 sql_help.c:1342 +#: sql_help.c:1607 sql_help.c:1956 sql_help.c:2209 sql_help.c:2291 +#: sql_help.c:2443 sql_help.c:2697 +msgid "server_name" +msgstr "jméno_serveru" + +#: sql_help.c:686 sql_help.c:691 sql_help.c:878 sql_help.c:882 sql_help.c:1291 +#: sql_help.c:1341 sql_help.c:1490 sql_help.c:1678 sql_help.c:1885 +#: sql_help.c:2558 +msgid "data_type" +msgstr "datový_typ" + +#: sql_help.c:687 sql_help.c:692 sql_help.c:879 sql_help.c:883 sql_help.c:1292 +#: sql_help.c:1436 sql_help.c:1679 sql_help.c:1886 +msgid "collation" +msgstr "collation" + +#: sql_help.c:688 sql_help.c:1680 sql_help.c:1691 +msgid "column_constraint" +msgstr "omezení_sloupce" + +#: sql_help.c:699 +msgid "integer" +msgstr "integer" + +#: sql_help.c:701 sql_help.c:704 +msgid "attribute_option" +msgstr "volba_atributu" + +#: sql_help.c:706 sql_help.c:1681 sql_help.c:1692 +msgid "table_constraint" +msgstr "omezení_tabulky" + +#: sql_help.c:707 +msgid "table_constraint_using_index" +msgstr "omezení_tabulky_s_využitím_indexu" + +#: sql_help.c:710 sql_help.c:711 sql_help.c:712 sql_help.c:713 sql_help.c:1093 +msgid "trigger_name" +msgstr "jméno_triggeru" + +#: sql_help.c:714 sql_help.c:715 sql_help.c:716 sql_help.c:717 +msgid "rewrite_rule_name" +msgstr "přepisovací_pravidlo" + +#: sql_help.c:718 sql_help.c:729 sql_help.c:1010 +msgid "index_name" +msgstr "jméno_indexu" + +#: sql_help.c:722 sql_help.c:723 sql_help.c:1682 sql_help.c:1684 +msgid "parent_table" +msgstr "nadřízená_tabulka" + +#: sql_help.c:724 sql_help.c:1689 +msgid "type_name" +msgstr "jméno_typu" + +#: sql_help.c:727 +msgid "and table_constraint_using_index is:" +msgstr "a omezení_tabulky_s_využitím_indexu je:" + +#: sql_help.c:745 sql_help.c:748 +msgid "tablespace_option" +msgstr "volba_tablespace" + +#: sql_help.c:769 sql_help.c:772 sql_help.c:778 sql_help.c:782 +msgid "token_type" +msgstr "typ_tokenu" + +#: sql_help.c:770 sql_help.c:773 +msgid "dictionary_name" +msgstr "jméno_slovníku" + +#: sql_help.c:775 sql_help.c:779 +msgid "old_dictionary" +msgstr "starý_slovník" + +#: sql_help.c:776 sql_help.c:780 +msgid "new_dictionary" +msgstr "nový_slovník" + +#: sql_help.c:867 sql_help.c:877 sql_help.c:880 sql_help.c:881 sql_help.c:1884 +msgid "attribute_name" +msgstr "jméno_atributu" + +#: sql_help.c:868 +msgid "new_attribute_name" +msgstr "nové_jméno_atributu" + +#: sql_help.c:874 +msgid "new_enum_value" +msgstr "nová_enum_hodnota" + +#: sql_help.c:875 +msgid "existing_enum_value" +msgstr "existing_enum_value" + +#: sql_help.c:984 sql_help.c:2962 sql_help.c:2963 sql_help.c:2987 +msgid "transaction_mode" +msgstr "transakční_mód" + +#: sql_help.c:985 sql_help.c:2964 sql_help.c:2988 +msgid "where transaction_mode is one of:" +msgstr "kde transakční_mód je jedno z:" + +#: sql_help.c:1009 sql_help.c:1060 sql_help.c:1083 sql_help.c:1094 +#: sql_help.c:1139 sql_help.c:1143 sql_help.c:1339 sql_help.c:1676 +#: sql_help.c:1688 sql_help.c:1745 sql_help.c:2429 sql_help.c:2434 +#: sql_help.c:2683 sql_help.c:2688 sql_help.c:2769 sql_help.c:2837 +#: sql_help.c:2839 sql_help.c:2868 sql_help.c:2907 sql_help.c:3040 +#: sql_help.c:3042 sql_help.c:3071 sql_help.c:3196 sql_help.c:3198 +#: sql_help.c:3227 +msgid "table_name" +msgstr "jméno_tabulky" + +#: sql_help.c:1057 +msgid "relation_name" +msgstr "název_relace" + +#: sql_help.c:1058 sql_help.c:1340 sql_help.c:1373 sql_help.c:1677 +#: sql_help.c:1690 sql_help.c:1709 sql_help.c:1711 sql_help.c:1718 +#: sql_help.c:1746 sql_help.c:1848 sql_help.c:1968 sql_help.c:2770 +#: sql_help.c:2863 sql_help.c:3066 sql_help.c:3222 +msgid "column_name" +msgstr "jméno_sloupce" + +#: sql_help.c:1082 +msgid "rule_name" +msgstr "jméno_pravidla" + +#: sql_help.c:1097 +msgid "text" +msgstr "text" + +#: sql_help.c:1112 sql_help.c:2567 sql_help.c:2729 +msgid "transaction_id" +msgstr "id_transakce" + +#: sql_help.c:1141 sql_help.c:1146 sql_help.c:2493 +msgid "filename" +msgstr "jméno_souboru" + +#: sql_help.c:1145 sql_help.c:1750 sql_help.c:1969 sql_help.c:1987 +#: sql_help.c:2475 +msgid "query" +msgstr "dotaz" + +#: sql_help.c:1148 sql_help.c:2335 +msgid "where option can be one of:" +msgstr "kde volba je jedno z:" + +#: sql_help.c:1149 +msgid "format_name" +msgstr "jméno_formátu" + +#: sql_help.c:1150 sql_help.c:1153 sql_help.c:2336 sql_help.c:2337 +#: sql_help.c:2338 sql_help.c:2339 +msgid "boolean" +msgstr "boolean" + +#: sql_help.c:1151 +msgid "delimiter_character" +msgstr "oddělovací_znak" + +#: sql_help.c:1152 +msgid "null_string" +msgstr "null_string" + +#: sql_help.c:1154 +msgid "quote_character" +msgstr "quote_character" + +#: sql_help.c:1155 +msgid "escape_character" +msgstr "escape_character" + +#: sql_help.c:1158 +msgid "encoding_name" +msgstr "název_kódování" + +#: sql_help.c:1184 +msgid "input_data_type" +msgstr "vstupní_datový_typ" + +#: sql_help.c:1185 sql_help.c:1193 +msgid "sfunc" +msgstr "sfunc" + +#: sql_help.c:1186 sql_help.c:1194 +msgid "state_data_type" +msgstr "datový_typ_stavu" + +#: sql_help.c:1187 sql_help.c:1195 +msgid "ffunc" +msgstr "ffunc" + +#: sql_help.c:1188 sql_help.c:1196 +msgid "initial_condition" +msgstr "výchozí_podmínka" + +#: sql_help.c:1189 sql_help.c:1197 +msgid "sort_operator" +msgstr "operátor_třídění" + +#: sql_help.c:1190 +msgid "or the old syntax" +msgstr "nebo stará syntaxe" + +#: sql_help.c:1192 +msgid "base_type" +msgstr "základní_typ" + +#: sql_help.c:1236 +msgid "locale" +msgstr "locale" + +#: sql_help.c:1237 sql_help.c:1271 +msgid "lc_collate" +msgstr "lc_collate" + +#: sql_help.c:1238 sql_help.c:1272 +msgid "lc_ctype" +msgstr "lc_ctype" + +#: sql_help.c:1240 +msgid "existing_collation" +msgstr "existující_collation" + +#: sql_help.c:1250 +msgid "source_encoding" +msgstr "kódování_zdroje" + +#: sql_help.c:1251 +msgid "dest_encoding" +msgstr "kódování_cíle" + +#: sql_help.c:1269 sql_help.c:1785 +msgid "template" +msgstr "šablona" + +#: sql_help.c:1270 +msgid "encoding" +msgstr "kódování" + +#: sql_help.c:1273 sql_help.c:1440 sql_help.c:1687 sql_help.c:1695 +#: sql_help.c:1727 sql_help.c:1749 +msgid "tablespace" +msgstr "tablespace" + +#: sql_help.c:1294 +msgid "constraint" +msgstr "omezení" + +#: sql_help.c:1295 +msgid "where constraint is:" +msgstr "kde omezení je:" + +#: sql_help.c:1309 +msgid "schema" +msgstr "schéma" + +#: sql_help.c:1310 +msgid "version" +msgstr "verze" + +#: sql_help.c:1311 +msgid "old_version" +msgstr "stará_verze" + +#: sql_help.c:1371 sql_help.c:1699 +msgid "default_expr" +msgstr "implicitní_výraz" + +#: sql_help.c:1372 +msgid "rettype" +msgstr "návratový_typ" + +#: sql_help.c:1374 +msgid "column_type" +msgstr "typ_sloupce" + +#: sql_help.c:1375 sql_help.c:2021 sql_help.c:2451 sql_help.c:2705 +msgid "lang_name" +msgstr "jméno_jazyka" + +#: sql_help.c:1381 +msgid "definition" +msgstr "definice" + +#: sql_help.c:1382 +msgid "obj_file" +msgstr "obj_file" + +#: sql_help.c:1383 +msgid "link_symbol" +msgstr "link_symbol" + +#: sql_help.c:1384 +msgid "attribute" +msgstr "atribut" + +#: sql_help.c:1419 sql_help.c:1550 sql_help.c:1945 +msgid "uid" +msgstr "uid" + +#: sql_help.c:1433 +msgid "method" +msgstr "metoda" + +#: sql_help.c:1437 sql_help.c:1731 +msgid "opclass" +msgstr "třída_operátoru" + +#: sql_help.c:1441 sql_help.c:1717 +msgid "predicate" +msgstr "predikát" + +#: sql_help.c:1453 +msgid "call_handler" +msgstr "call_handler" + +#: sql_help.c:1454 +msgid "inline_handler" +msgstr "inline_handler" + +#: sql_help.c:1455 +msgid "valfunction" +msgstr "valfunction" + +#: sql_help.c:1473 +msgid "com_op" +msgstr "com_op" + +#: sql_help.c:1474 +msgid "neg_op" +msgstr "neg_op" + +#: sql_help.c:1475 +msgid "res_proc" +msgstr "res_proc" + +#: sql_help.c:1476 +msgid "join_proc" +msgstr "join_proc" + +#: sql_help.c:1492 +msgid "family_name" +msgstr "family_name" + +#: sql_help.c:1503 +msgid "storage_type" +msgstr "typ_uložení" + +#: sql_help.c:1561 sql_help.c:1841 +msgid "event" +msgstr "událost" + +#: sql_help.c:1563 sql_help.c:1844 sql_help.c:2003 sql_help.c:2826 +#: sql_help.c:2828 sql_help.c:2896 sql_help.c:2898 sql_help.c:3029 +#: sql_help.c:3031 sql_help.c:3110 sql_help.c:3185 sql_help.c:3187 +msgid "condition" +msgstr "podmínka" + +#: sql_help.c:1564 sql_help.c:1565 sql_help.c:1566 +msgid "command" +msgstr "příkaz" + +#: sql_help.c:1577 sql_help.c:1579 +msgid "schema_element" +msgstr "prvek_schématu" + +#: sql_help.c:1608 +msgid "server_type" +msgstr "typ_serveru" + +#: sql_help.c:1609 +msgid "server_version" +msgstr "verze_serveru" + +#: sql_help.c:1610 sql_help.c:2441 sql_help.c:2695 +msgid "fdw_name" +msgstr "fdw_jméno" + +#: sql_help.c:1683 +msgid "like_option" +msgstr "like_volba" + +#: sql_help.c:1696 +msgid "where column_constraint is:" +msgstr "kde omezení_sloupce je:" + +#: sql_help.c:1700 sql_help.c:1701 sql_help.c:1710 sql_help.c:1712 +#: sql_help.c:1716 +msgid "index_parameters" +msgstr "parametry_indexu" + +#: sql_help.c:1702 sql_help.c:1719 +msgid "reftable" +msgstr "odkazovaná_tabulka" + +#: sql_help.c:1703 sql_help.c:1720 +msgid "refcolumn" +msgstr "odkazovaný_sloupec" -#: ../../port/exec.c:195 ../../port/exec.c:309 ../../port/exec.c:352 +#: sql_help.c:1706 +msgid "and table_constraint is:" +msgstr "a omezení_tabulky je:" + +#: sql_help.c:1714 +msgid "exclude_element" +msgstr "exclude_element" + +#: sql_help.c:1723 +msgid "and like_option is:" +msgstr "a like_volba je:" + +#: sql_help.c:1724 +msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" +msgstr "parametry_indexu v UNIQUE, PRIMARY KEY, a EXCLUDE omezeních jsou:" + +#: sql_help.c:1728 +msgid "exclude_element in an EXCLUDE constraint is:" +msgstr "exclude_element v EXCLUDE omezení je:" + +#: sql_help.c:1760 +msgid "directory" +msgstr "adresář" + +#: sql_help.c:1772 +msgid "parser_name" +msgstr "jméno_parseru" + +#: sql_help.c:1773 +msgid "source_config" +msgstr "source_config" + +#: sql_help.c:1802 +msgid "start_function" +msgstr "start_funkce" + +#: sql_help.c:1803 +msgid "gettoken_function" +msgstr "gettoken_funkce" + +#: sql_help.c:1804 +msgid "end_function" +msgstr "end_function" + +#: sql_help.c:1805 +msgid "lextypes_function" +msgstr "lextypes_funkce" + +#: sql_help.c:1806 +msgid "headline_function" +msgstr "headline_funkce" + +#: sql_help.c:1818 +msgid "init_function" +msgstr "init_funkce" + +#: sql_help.c:1819 +msgid "lexize_function" +msgstr "lexize_funkce" + +#: sql_help.c:1843 +msgid "referenced_table_name" +msgstr "jméno_odkazované_tabulky" + +#: sql_help.c:1846 +msgid "arguments" +msgstr "argumenty" + +#: sql_help.c:1847 +msgid "where event can be one of:" +msgstr "kde událost může být jedno z:" + +#: sql_help.c:1888 sql_help.c:2785 +msgid "label" +msgstr "popisek" + +#: sql_help.c:1890 +msgid "input_function" +msgstr "vstupní_funkce" + +#: sql_help.c:1891 +msgid "output_function" +msgstr "výstupní_funkce" + +#: sql_help.c:1892 +msgid "receive_function" +msgstr "receive_funkce" + +#: sql_help.c:1893 +msgid "send_function" +msgstr "send_funkce" + +#: sql_help.c:1894 +msgid "type_modifier_input_function" +msgstr "type_modifier_input_function" + +#: sql_help.c:1895 +msgid "type_modifier_output_function" +msgstr "type_modifier_output_function" + +#: sql_help.c:1896 +msgid "analyze_function" +msgstr "analyze_funkce" + +#: sql_help.c:1897 +msgid "internallength" +msgstr "interní_délka" + +#: sql_help.c:1898 +msgid "alignment" +msgstr "zarovnání" + +#: sql_help.c:1899 +msgid "storage" +msgstr "uložení" + +#: sql_help.c:1900 +msgid "like_type" +msgstr "like_typ" + +#: sql_help.c:1901 +msgid "category" +msgstr "kategorie" + +#: sql_help.c:1902 +msgid "preferred" +msgstr "preferovaný" + +#: sql_help.c:1903 +msgid "default" +msgstr "implicitní" + +#: sql_help.c:1904 +msgid "element" +msgstr "prvek" + +#: sql_help.c:1905 +msgid "delimiter" +msgstr "oddělovač" + +#: sql_help.c:1906 +msgid "collatable" +msgstr "collatable" + +#: sql_help.c:1999 sql_help.c:2471 sql_help.c:2821 sql_help.c:2890 +#: sql_help.c:3024 sql_help.c:3102 sql_help.c:3180 +msgid "with_query" +msgstr "with_dotaz" + +#: sql_help.c:2001 sql_help.c:2840 sql_help.c:2843 sql_help.c:2846 +#: sql_help.c:2850 sql_help.c:3043 sql_help.c:3046 sql_help.c:3049 +#: sql_help.c:3053 sql_help.c:3104 sql_help.c:3199 sql_help.c:3202 +#: sql_help.c:3205 sql_help.c:3209 +msgid "alias" +msgstr "alias" + +#: sql_help.c:2002 +msgid "using_list" +msgstr "using_seznam" + +#: sql_help.c:2004 sql_help.c:2365 sql_help.c:2534 sql_help.c:3111 +msgid "cursor_name" +msgstr "jméno_kurzoru" + +#: sql_help.c:2005 sql_help.c:2476 sql_help.c:3112 +msgid "output_expression" +msgstr "výstupní_výraz" + +#: sql_help.c:2006 sql_help.c:2477 sql_help.c:2824 sql_help.c:2893 +#: sql_help.c:3027 sql_help.c:3113 sql_help.c:3183 +msgid "output_name" +msgstr "výstupní_jméno" + +#: sql_help.c:2022 +msgid "code" +msgstr "kód" + +#: sql_help.c:2315 +msgid "parameter" +msgstr "parametr" + +#: sql_help.c:2333 sql_help.c:2334 sql_help.c:2559 +msgid "statement" +msgstr "příkaz" + +#: sql_help.c:2364 sql_help.c:2533 +msgid "direction" +msgstr "směr" + +#: sql_help.c:2366 sql_help.c:2535 +msgid "where direction can be empty or one of:" +msgstr "kde směr může být prázdný nebo jedno z:" + +#: sql_help.c:2367 sql_help.c:2368 sql_help.c:2369 sql_help.c:2370 +#: sql_help.c:2371 sql_help.c:2536 sql_help.c:2537 sql_help.c:2538 +#: sql_help.c:2539 sql_help.c:2540 sql_help.c:2834 sql_help.c:2836 +#: sql_help.c:2904 sql_help.c:2906 sql_help.c:3037 sql_help.c:3039 +#: sql_help.c:3142 sql_help.c:3144 sql_help.c:3193 sql_help.c:3195 +msgid "count" +msgstr "počet" + +#: sql_help.c:2436 sql_help.c:2690 +msgid "sequence_name" +msgstr "sekvence" + +#: sql_help.c:2447 sql_help.c:2701 +msgid "arg_name" +msgstr "jméno_argumentu" + +#: sql_help.c:2448 sql_help.c:2702 +msgid "arg_type" +msgstr "typ_argumentu" + +#: sql_help.c:2453 sql_help.c:2707 +msgid "loid" +msgstr "loid" + +#: sql_help.c:2485 sql_help.c:2548 sql_help.c:3088 +msgid "channel" +msgstr "kanál" + +#: sql_help.c:2507 +msgid "lockmode" +msgstr "mód_zámku" + +#: sql_help.c:2508 +msgid "where lockmode is one of:" +msgstr "kde mód_zámku je jedno z:" + +#: sql_help.c:2549 +msgid "payload" +msgstr "náklad" + +#: sql_help.c:2575 +msgid "old_role" +msgstr "stará_role" + +#: sql_help.c:2576 +msgid "new_role" +msgstr "nová_role" + +#: sql_help.c:2592 sql_help.c:2737 sql_help.c:2745 +msgid "savepoint_name" +msgstr "jméno_savepointu" + +#: sql_help.c:2767 +msgid "provider" +msgstr "provider" + +#: sql_help.c:2825 sql_help.c:2856 sql_help.c:2858 sql_help.c:2895 +#: sql_help.c:3028 sql_help.c:3059 sql_help.c:3061 sql_help.c:3184 +#: sql_help.c:3215 sql_help.c:3217 +msgid "from_item" +msgstr "z_položky" + +#: sql_help.c:2829 sql_help.c:2899 sql_help.c:3032 sql_help.c:3188 +msgid "window_name" +msgstr "jméno_okna" + +#: sql_help.c:2830 sql_help.c:2900 sql_help.c:3033 sql_help.c:3189 +msgid "window_definition" +msgstr "definice_okna" + +#: sql_help.c:2831 sql_help.c:2842 sql_help.c:2864 sql_help.c:2901 +#: sql_help.c:3034 sql_help.c:3045 sql_help.c:3067 sql_help.c:3190 +#: sql_help.c:3201 sql_help.c:3223 +msgid "select" +msgstr "select" + +#: sql_help.c:2838 sql_help.c:3041 sql_help.c:3197 +msgid "where from_item can be one of:" +msgstr "kde z_položky může být jedno z:" + +#: sql_help.c:2841 sql_help.c:2844 sql_help.c:2847 sql_help.c:2851 +#: sql_help.c:3044 sql_help.c:3047 sql_help.c:3050 sql_help.c:3054 +#: sql_help.c:3200 sql_help.c:3203 sql_help.c:3206 sql_help.c:3210 +msgid "column_alias" +msgstr "alias_sloupce" + +#: sql_help.c:2845 sql_help.c:2862 sql_help.c:3048 sql_help.c:3065 +#: sql_help.c:3204 sql_help.c:3221 +msgid "with_query_name" +msgstr "jméno_with_dotazu" + +#: sql_help.c:2849 sql_help.c:2854 sql_help.c:3052 sql_help.c:3057 +#: sql_help.c:3208 sql_help.c:3213 +msgid "argument" +msgstr "argument" + +#: sql_help.c:2852 sql_help.c:2855 sql_help.c:3055 sql_help.c:3058 +#: sql_help.c:3211 sql_help.c:3214 +msgid "column_definition" +msgstr "definice_sloupce" + +#: sql_help.c:2857 sql_help.c:3060 sql_help.c:3216 +msgid "join_type" +msgstr "typ_joinu" + +#: sql_help.c:2859 sql_help.c:3062 sql_help.c:3218 +msgid "join_condition" +msgstr "joinovací_podmínka" + +#: sql_help.c:2860 sql_help.c:3063 sql_help.c:3219 +msgid "join_column" +msgstr "joinovací_sloupec" + +#: sql_help.c:2861 sql_help.c:3064 sql_help.c:3220 +msgid "and with_query is:" +msgstr "a with_dotaz je:" + +#: sql_help.c:2865 sql_help.c:3068 sql_help.c:3224 +msgid "insert" +msgstr "insert " + +#: sql_help.c:2866 sql_help.c:3069 sql_help.c:3225 +msgid "update" +msgstr "update" + +#: sql_help.c:2867 sql_help.c:3070 sql_help.c:3226 +msgid "delete" +msgstr "delete" + +#: sql_help.c:2894 +msgid "new_table" +msgstr "nová_tabulka" + +#: sql_help.c:2919 +msgid "timezone" +msgstr "časová_zóna" + +#: sql_help.c:3109 +msgid "from_list" +msgstr "from_seznam" + +#: sql_help.c:3140 +msgid "sort_expression" +msgstr "sort_expression" + +#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 #, c-format msgid "could not identify current directory: %s" msgstr "nelze získat aktuální adresář: %s" -#: ../../port/exec.c:214 +#: ../../port/exec.c:144 #, c-format msgid "invalid binary \"%s\"" msgstr "neplatný binární soubor\"%s\"" -#: ../../port/exec.c:263 +#: ../../port/exec.c:193 #, c-format msgid "could not read binary \"%s\"" msgstr "nelze číst binární soubor \"%s\"" -#: ../../port/exec.c:270 +#: ../../port/exec.c:200 #, c-format msgid "could not find a \"%s\" to execute" msgstr "nelze najít spustitelný soubor \"%s\"" -#: ../../port/exec.c:325 ../../port/exec.c:361 +#: ../../port/exec.c:255 ../../port/exec.c:291 #, c-format msgid "could not change directory to \"%s\"" msgstr "nelze změnit adresář na \"%s\"" -#: ../../port/exec.c:340 +#: ../../port/exec.c:270 #, c-format msgid "could not read symbolic link \"%s\"" msgstr "nelze číst symbolický link \"%s\"" -#: ../../port/exec.c:586 +#: ../../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" msgstr "potomek skončil s návratovým kódem %d" -#: ../../port/exec.c:590 +#: ../../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" -msgstr "potomek byl ukončen vyjímkou 0x%X" +msgstr "potomek byl ukončen výjimkou 0x%X" -#: ../../port/exec.c:599 +#: ../../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "potomek byl ukončen signálem %s" -#: ../../port/exec.c:602 +#: ../../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "potomek byl ukončen signálem %d" -#: ../../port/exec.c:606 +#: ../../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "potomek skončil s nerozponaným stavem %d" +#~ msgid " on host \"%s\"" +#~ msgstr " na počítač \"%s\"" + +#~ msgid " at port \"%s\"" +#~ msgstr " na port \"%s\"" + +#~ msgid " as user \"%s\"" +#~ msgstr " jako uživatel \"%s\"" + +#~ msgid "out of memory" +#~ msgstr "nedostatek paměti" + +#~ msgid "define a new constraint trigger" +#~ msgstr "defunuje nový constraint trigger" + +#~ msgid " \"%s\" IN %s %s" +#~ msgstr " \"%s\" IN %s %s" + +#~ msgid "ABORT [ WORK | TRANSACTION ]" +#~ msgstr "ABORT [ WORK | TRANSACTION ]" diff --git a/src/bin/psql/po/de.po b/src/bin/psql/po/de.po index b2c9732dde..4af1b6a075 100644 --- a/src/bin/psql/po/de.po +++ b/src/bin/psql/po/de.po @@ -1,7 +1,5 @@ # German message translation file for psql -# Peter Eisentraut , 2001 - 2011. -# -# pgtranslation Id: psql.po,v 1.46 2011/05/21 21:37:56 petere Exp $ +# Peter Eisentraut , 2001 - 2012. # # Use these quotes: »%s« # @@ -9,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2011-05-21 10:41+0000\n" -"PO-Revision-Date: 2011-05-22 00:36+0300\n" +"POT-Creation-Date: 2012-05-29 04:15+0000\n" +"PO-Revision-Date: 2013-03-31 00:07-0400\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" "Language: de\n" @@ -44,9 +42,9 @@ msgstr "konnte Home-Verzeichnis nicht ermitteln: %s\n" msgid "\\%s: could not change directory to \"%s\": %s\n" msgstr "\\%s: konnte nicht in das Verzeichnis »%s« wechseln: %s\n" -#: command.c:305 -#, fuzzy, c-format -msgid "You are not connected.\n" +#: command.c:305 common.c:493 common.c:773 +#, c-format +msgid "You are currently not connected to a database.\n" msgstr "Sie sind gegenwärtig nicht mit einer Datenbank verbunden.\n" #: command.c:312 @@ -72,117 +70,131 @@ msgstr "" msgid "Time: %.3f ms\n" msgstr "Zeit: %.3f ms\n" -#: command.c:524 command.c:588 command.c:1285 +#: command.c:524 command.c:594 command.c:1297 msgid "no query buffer\n" msgstr "kein Anfragepuffer\n" -#: command.c:557 command.c:2504 +#: command.c:557 command.c:2519 #, c-format msgid "invalid line number: %s\n" msgstr "ungültige Zeilennummer: %s\n" -#: command.c:662 +#: command.c:588 +#, c-format +msgid "The server (version %d.%d) does not support editing function source.\n" +msgstr "" +"Der Server (Version %d.%d) unterstützt das Bearbeiten des " +"Funktionsquelltextes nicht.\n" + +#: command.c:668 msgid "No changes" msgstr "keine Änderungen" -#: command.c:716 +#: command.c:722 #, c-format msgid "%s: invalid encoding name or conversion procedure not found\n" msgstr "" "%s: ungültiger Kodierungsname oder Umwandlungsprozedur nicht gefunden\n" -#: command.c:795 command.c:829 command.c:843 command.c:860 command.c:964 -#: command.c:1014 command.c:1265 command.c:1296 +#: command.c:801 command.c:835 command.c:849 command.c:866 command.c:970 +#: command.c:1020 command.c:1277 command.c:1308 #, c-format msgid "\\%s: missing required argument\n" msgstr "\\%s: notwendiges Argument fehlt\n" -#: command.c:892 +#: command.c:898 msgid "Query buffer is empty." msgstr "Anfragepuffer ist leer." -#: command.c:902 +#: command.c:908 msgid "Enter new password: " msgstr "Neues Passwort eingeben: " -#: command.c:903 +#: command.c:909 msgid "Enter it again: " msgstr "Geben Sie es noch einmal ein: " -#: command.c:907 +#: command.c:913 #, c-format msgid "Passwords didn't match.\n" msgstr "Passwörter stimmten nicht überein.\n" -#: command.c:925 +#: command.c:931 #, c-format msgid "Password encryption failed.\n" msgstr "Passwortverschlüsselung ist fehlgeschlagen.\n" -#: command.c:993 command.c:1094 command.c:1270 +#: command.c:999 command.c:1100 command.c:1282 #, c-format msgid "\\%s: error\n" msgstr "\\%s: Fehler\n" -#: command.c:1034 +#: command.c:1040 msgid "Query buffer reset (cleared)." msgstr "Anfragepuffer wurde gelöscht." -#: command.c:1047 +#: command.c:1053 #, c-format msgid "Wrote history to file \"%s/%s\".\n" msgstr "Befehlsgeschichte in Datei »%s/%s« geschrieben.\n" -#: command.c:1085 common.c:52 common.c:66 input.c:209 mainloop.c:72 -#: mainloop.c:234 print.c:137 print.c:151 +#: command.c:1091 common.c:52 common.c:66 common.c:90 input.c:209 +#: mainloop.c:72 mainloop.c:234 print.c:137 print.c:151 #, c-format msgid "out of memory\n" msgstr "Speicher aufgebraucht\n" -#: command.c:1115 +#: command.c:1121 +#, c-format +msgid "The server (version %d.%d) does not support showing function source.\n" +msgstr "" +"Der Server (Version %d.%d) unterstützt das Anzeigen des Funktionsquelltextes " +"nicht.\n" + +#: command.c:1127 msgid "function name is required\n" msgstr "Funktionsname wird benötigt\n" -#: command.c:1250 +#: command.c:1262 msgid "Timing is on." msgstr "Zeitmessung ist an." -#: command.c:1252 +#: command.c:1264 msgid "Timing is off." msgstr "Zeitmessung ist aus." -#: command.c:1313 command.c:1333 command.c:1892 command.c:1899 command.c:1908 -#: command.c:1918 command.c:1927 command.c:1941 command.c:1958 command.c:1996 +#: command.c:1325 command.c:1345 command.c:1907 command.c:1914 command.c:1923 +#: command.c:1933 command.c:1942 command.c:1956 command.c:1973 command.c:2011 #: common.c:137 copy.c:283 copy.c:361 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" -#: command.c:1415 startup.c:159 +#: command.c:1427 startup.c:159 msgid "Password: " msgstr "Passwort: " -#: command.c:1422 startup.c:162 startup.c:164 +#: command.c:1434 startup.c:162 startup.c:164 #, c-format msgid "Password for user %s: " msgstr "Passwort für Benutzer %s: " -#: command.c:1541 command.c:2538 common.c:183 common.c:460 common.c:525 -#: common.c:816 common.c:841 common.c:925 copy.c:432 copy.c:477 copy.c:606 +#: command.c:1553 command.c:2553 common.c:183 common.c:460 common.c:525 +#: common.c:816 common.c:841 common.c:925 copy.c:432 copy.c:477 copy.c:607 #, c-format msgid "%s" msgstr "%s" -#: command.c:1545 +#: command.c:1557 msgid "Previous connection kept\n" msgstr "Vorherige Verbindung wurde behalten\n" -#: command.c:1549 +#: command.c:1561 #, c-format msgid "\\connect: %s" msgstr "\\connect: %s" -#: command.c:1582 +#: command.c:1594 #, c-format msgid "" "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" " @@ -191,7 +203,7 @@ msgstr "" "Sie sind jetzt verbunden mit der Datenbank »%s« als Benutzer »%s« via Socket " "in »%s« auf Port »%s«.\n" -#: command.c:1585 +#: command.c:1597 #, c-format msgid "" "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at " @@ -200,17 +212,17 @@ msgstr "" "Sie sind jetzt verbunden mit der Datenbank »%s« als Benutzer »%s« auf Host " "»%s« auf Port »%s«.\n" -#: command.c:1589 +#: command.c:1601 #, c-format msgid "You are now connected to database \"%s\" as user \"%s\".\n" msgstr "Sie sind jetzt verbunden mit der Datenbank »%s« als Benutzer »%s«.\n" -#: command.c:1623 +#: command.c:1635 #, c-format msgid "%s (%s, server %s)\n" msgstr "%s (%s, Server %s)\n" -#: command.c:1631 +#: command.c:1643 #, c-format msgid "" "WARNING: %s version %d.%d, server version %d.%d.\n" @@ -219,17 +231,17 @@ msgstr "" "WARNUNG: %s-Version %d.%d, Serverversion %d.%d.\n" " Einige Features von psql werden eventuell nicht funktionieren.\n" -#: command.c:1661 +#: command.c:1673 #, c-format msgid "SSL connection (cipher: %s, bits: %i)\n" msgstr "SSL-Verbindung (Verschlüsselungsmethode: %s, Bits: %i)\n" -#: command.c:1671 +#: command.c:1683 #, c-format msgid "SSL connection (unknown cipher)\n" msgstr "SSL-Verbindung (unbekannte Verschlüsselungsmethode)\n" -#: command.c:1692 +#: command.c:1704 #, c-format msgid "" "WARNING: Console code page (%u) differs from Windows code page (%u)\n" @@ -241,31 +253,34 @@ msgstr "" " richtig. Einzelheiten finden Sie auf der psql-Handbuchseite unter\n" " »Notes for Windows users«.\n" -#: command.c:1773 +#: command.c:1788 msgid "" -"EDITOR_LINENUMBER_SWITCH variable must be set to specify a line number\n" +"environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a " +"line number\n" msgstr "" +"Umgebungsvariable PSQL_EDITOR_LINENUMBER_ARG muss gesetzt werden, um eine " +"Zeilennummer angeben zu können\n" -#: command.c:1810 +#: command.c:1825 #, c-format msgid "could not start editor \"%s\"\n" msgstr "konnte Editor »%s« nicht starten\n" -#: command.c:1812 +#: command.c:1827 msgid "could not start /bin/sh\n" msgstr "konnte /bin/sh nicht starten\n" -#: command.c:1850 +#: command.c:1865 #, c-format -msgid "cannot locate temporary directory: %s" -msgstr "konnte temporäres Verzeichnis nicht finden: %s" +msgid "could not locate temporary directory: %s\n" +msgstr "konnte temporäres Verzeichnis nicht finden: %s\n" -#: command.c:1877 +#: command.c:1892 #, c-format msgid "could not open temporary file \"%s\": %s\n" msgstr "konnte temporäre Datei »%s« nicht öffnen: %s\n" -#: command.c:2107 +#: command.c:2122 msgid "" "\\pset: allowed formats are unaligned, aligned, wrapped, html, latex, troff-" "ms\n" @@ -273,122 +288,122 @@ msgstr "" "\\pset: zulässige Formate sind unaligned, aligned, wrapped, html, latex, " "troff-ms\n" -#: command.c:2112 +#: command.c:2127 #, c-format msgid "Output format is %s.\n" msgstr "Ausgabeformat ist »%s«.\n" -#: command.c:2128 +#: command.c:2143 msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" msgstr "\\pset: zulässige Linienstile sind ascii, old-ascii, unicode\n" -#: command.c:2133 +#: command.c:2148 #, c-format msgid "Line style is %s.\n" msgstr "Linienstil ist %s.\n" -#: command.c:2144 +#: command.c:2159 #, c-format msgid "Border style is %d.\n" msgstr "Rahmenstil ist %d.\n" -#: command.c:2156 +#: command.c:2171 #, c-format msgid "Expanded display is on.\n" msgstr "Erweiterte Anzeige ist an.\n" -#: command.c:2157 +#: command.c:2172 #, c-format msgid "Expanded display is off.\n" msgstr "Erweiterte Anzeige ist aus.\n" -#: command.c:2170 +#: command.c:2185 msgid "Showing locale-adjusted numeric output." msgstr "Zeige numerische Daten in lokalisiertem Format." -#: command.c:2172 +#: command.c:2187 msgid "Locale-adjusted numeric output is off." msgstr "Lokalisiertes Format für numerische Daten ist aus." -#: command.c:2185 +#: command.c:2200 #, c-format msgid "Null display is \"%s\".\n" msgstr "Null-Anzeige ist »%s«.\n" -#: command.c:2197 +#: command.c:2212 #, c-format msgid "Field separator is \"%s\".\n" msgstr "Feldtrennzeichen ist »%s«.\n" -#: command.c:2211 +#: command.c:2226 #, c-format msgid "Record separator is ." msgstr "Satztrennzeichen ist ." -#: command.c:2213 +#: command.c:2228 #, c-format msgid "Record separator is \"%s\".\n" msgstr "Satztrennzeichen ist »%s«.\n" -#: command.c:2227 +#: command.c:2242 msgid "Showing only tuples." msgstr "Zeige nur Datenzeilen." -#: command.c:2229 +#: command.c:2244 msgid "Tuples only is off." msgstr "Nur Datenzeilen ist aus." -#: command.c:2245 +#: command.c:2260 #, c-format msgid "Title is \"%s\".\n" msgstr "Titel ist »%s«.\n" -#: command.c:2247 +#: command.c:2262 #, c-format msgid "Title is unset.\n" msgstr "Titel ist nicht gesetzt.\n" -#: command.c:2263 +#: command.c:2278 #, c-format msgid "Table attribute is \"%s\".\n" msgstr "Tabellenattribut ist »%s«.\n" -#: command.c:2265 +#: command.c:2280 #, c-format msgid "Table attributes unset.\n" msgstr "Tabellenattribute sind nicht gesetzt.\n" -#: command.c:2286 +#: command.c:2301 msgid "Pager is used for long output." msgstr "Pager wird für lange Ausgaben verwendet." -#: command.c:2288 +#: command.c:2303 msgid "Pager is always used." msgstr "Pager wird immer verwendet." -#: command.c:2290 +#: command.c:2305 msgid "Pager usage is off." msgstr "Pager-Verwendung ist aus." -#: command.c:2304 +#: command.c:2319 msgid "Default footer is on." msgstr "Standardfußzeile ist an." -#: command.c:2306 +#: command.c:2321 msgid "Default footer is off." msgstr "Standardfußzeile ist aus." -#: command.c:2317 +#: command.c:2332 #, c-format msgid "Target width for \"wrapped\" format is %d.\n" msgstr "Zielbreite für Format »wrapped« ist %d.\n" -#: command.c:2322 +#: command.c:2337 #, c-format msgid "\\pset: unknown option: %s\n" msgstr "\\pset: unbekannte Option: %s\n" -#: command.c:2376 +#: command.c:2391 msgid "\\!: failed\n" msgstr "\\!: fehlgeschlagen\n" @@ -397,10 +412,6 @@ msgstr "\\!: fehlgeschlagen\n" msgid "%s: pg_strdup: cannot duplicate null pointer (internal error)\n" msgstr "%s: pg_strdup: kann NULL-Zeiger nicht kopieren (interner Fehler)\n" -#: common.c:90 -msgid "out of memory" -msgstr "Speicher aufgebraucht" - #: common.c:343 msgid "connection to server was lost\n" msgstr "Verbindung zum Server wurde verloren\n" @@ -417,10 +428,6 @@ msgstr "Fehlgeschlagen.\n" msgid "Succeeded.\n" msgstr "Erfolgreich.\n" -#: common.c:493 common.c:773 -msgid "You are currently not connected to a database.\n" -msgstr "Sie sind gegenwärtig nicht mit einer Datenbank verbunden.\n" - #: common.c:499 common.c:506 common.c:799 #, c-format msgid "" @@ -528,7 +535,7 @@ msgstr "" "Geben Sie die zu kopierenden Daten ein, gefolgt von einem Zeilenende.\n" "Beenden Sie mit einem Backslash und einem Punkt alleine auf einer Zeile." -#: copy.c:599 +#: copy.c:600 msgid "aborted because of read failure" msgstr "abgebrochen wegen Lesenfehlers" @@ -550,9 +557,7 @@ msgstr "konnte aktuellen Benutzernamen nicht ermitteln: %s\n" msgid "" "psql is the PostgreSQL interactive terminal.\n" "\n" -msgstr "" -"psql ist das interaktive PostgreSQL-Terminal.\n" -"\n" +msgstr "psql ist das interaktive PostgreSQL-Terminal.\n\n" #: help.c:83 #, c-format @@ -945,9 +950,7 @@ msgstr " \\i DATEI Befehle aus Datei ausführen\n" #: help.c:187 #, c-format msgid " \\o [FILE] send all query results to file or |pipe\n" -msgstr "" -" \\o DATEI alle Anfrageergebnisse in Datei oder |Pipe " -"schreiben\n" +msgstr " \\o [DATEI] alle Anfrageergebnisse in Datei oder |Pipe schreiben\n" #: help.c:188 #, c-format @@ -1161,7 +1164,7 @@ msgstr " \\sf[+] [FUNKNAME] Funktionsdefinition zeigen\n" #: help.c:229 #, c-format msgid " \\z [PATTERN] same as \\dp\n" -msgstr " \\z [MUSTER] äquivalent zu \\dp \n" +msgstr " \\z [MUSTER] äquivalent zu \\dp\n" #: help.c:232 #, c-format @@ -1388,16 +1391,16 @@ msgid "ID" msgstr "ID" #: large_obj.c:290 describe.c:147 describe.c:335 describe.c:637 describe.c:787 -#: describe.c:2518 describe.c:2636 describe.c:2973 describe.c:3604 -#: describe.c:3669 +#: describe.c:2513 describe.c:2631 describe.c:2975 describe.c:3606 +#: describe.c:3671 msgid "Owner" msgstr "Eigentümer" #: large_obj.c:291 large_obj.c:301 describe.c:96 describe.c:159 describe.c:338 #: describe.c:501 describe.c:590 describe.c:661 describe.c:852 describe.c:1382 -#: describe.c:2335 describe.c:2542 describe.c:2916 describe.c:2981 -#: describe.c:3046 describe.c:3182 describe.c:3221 describe.c:3288 -#: describe.c:3347 describe.c:3356 describe.c:3415 describe.c:3854 +#: describe.c:2330 describe.c:2537 describe.c:2918 describe.c:2983 +#: describe.c:3048 describe.c:3184 describe.c:3223 describe.c:3290 +#: describe.c:3349 describe.c:3358 describe.c:3417 describe.c:3856 msgid "Description" msgstr "Beschreibung" @@ -1509,19 +1512,19 @@ msgid "contains support for command-line editing" msgstr "enthält Unterstützung für Kommandozeilenbearbeitung" #: describe.c:69 describe.c:236 describe.c:463 describe.c:585 describe.c:706 -#: describe.c:788 describe.c:849 describe.c:2509 describe.c:2703 -#: describe.c:2773 describe.c:2908 describe.c:3044 describe.c:3271 -#: describe.c:3343 describe.c:3354 describe.c:3413 describe.c:3787 -#: describe.c:3853 +#: describe.c:788 describe.c:849 describe.c:2504 describe.c:2698 +#: describe.c:2768 describe.c:2910 describe.c:3046 describe.c:3273 +#: describe.c:3345 describe.c:3356 describe.c:3415 describe.c:3789 +#: describe.c:3855 msgid "Schema" msgstr "Schema" #: describe.c:70 describe.c:146 describe.c:237 describe.c:464 describe.c:586 -#: describe.c:636 describe.c:707 describe.c:850 describe.c:2510 -#: describe.c:2632 describe.c:2704 describe.c:2774 describe.c:2909 -#: describe.c:2972 describe.c:3045 describe.c:3272 describe.c:3344 -#: describe.c:3355 describe.c:3414 describe.c:3603 describe.c:3668 -#: describe.c:3851 +#: describe.c:636 describe.c:707 describe.c:850 describe.c:2505 +#: describe.c:2627 describe.c:2699 describe.c:2769 describe.c:2911 +#: describe.c:2974 describe.c:3047 describe.c:3274 describe.c:3346 +#: describe.c:3357 describe.c:3416 describe.c:3605 describe.c:3670 +#: describe.c:3853 msgid "Name" msgstr "Name" @@ -1578,7 +1581,7 @@ msgid "normal" msgstr "normal" #: describe.c:256 describe.c:301 describe.c:318 describe.c:710 describe.c:792 -#: describe.c:1362 describe.c:2517 describe.c:2705 describe.c:3681 +#: describe.c:1362 describe.c:2512 describe.c:2700 describe.c:3683 msgid "Type" msgstr "Typ" @@ -1614,7 +1617,7 @@ msgstr "Liste der Funktionen" msgid "Internal name" msgstr "Interner Name" -#: describe.c:475 describe.c:653 describe.c:2534 describe.c:2538 +#: describe.c:475 describe.c:653 describe.c:2529 describe.c:2533 msgid "Size" msgstr "Größe" @@ -1646,11 +1649,11 @@ msgstr "Liste der Operatoren" msgid "Encoding" msgstr "Kodierung" -#: describe.c:643 describe.c:2910 +#: describe.c:643 describe.c:2912 msgid "Collate" msgstr "Sortierfolge" -#: describe.c:644 describe.c:2911 +#: describe.c:644 describe.c:2913 msgid "Ctype" msgstr "Zeichentyp" @@ -1662,23 +1665,23 @@ msgstr "Tablespace" msgid "List of databases" msgstr "Liste der Datenbanken" -#: describe.c:708 describe.c:789 describe.c:944 describe.c:2511 sql_help.c:595 -#: sql_help.c:844 sql_help.c:971 sql_help.c:1434 sql_help.c:1564 -#: sql_help.c:1598 sql_help.c:1844 sql_help.c:2002 sql_help.c:2187 -#: sql_help.c:2268 sql_help.c:2474 sql_help.c:3105 sql_help.c:3125 -#: sql_help.c:3127 sql_help.c:3128 +#: describe.c:708 describe.c:789 describe.c:944 describe.c:2506 sql_help.c:595 +#: sql_help.c:842 sql_help.c:969 sql_help.c:1432 sql_help.c:1562 +#: sql_help.c:1596 sql_help.c:1842 sql_help.c:2000 sql_help.c:2185 +#: sql_help.c:2266 sql_help.c:2472 sql_help.c:3103 sql_help.c:3123 +#: sql_help.c:3125 sql_help.c:3126 msgid "table" msgstr "Tabelle" -#: describe.c:708 describe.c:945 describe.c:2512 +#: describe.c:708 describe.c:945 describe.c:2507 msgid "view" msgstr "Sicht" -#: describe.c:708 describe.c:790 describe.c:947 describe.c:2514 +#: describe.c:708 describe.c:790 describe.c:947 describe.c:2509 msgid "sequence" msgstr "Sequenz" -#: describe.c:709 describe.c:948 describe.c:2516 +#: describe.c:709 describe.c:948 describe.c:2511 msgid "foreign table" msgstr "Fremdtabelle" @@ -1686,7 +1689,7 @@ msgstr "Fremdtabelle" msgid "Column access privileges" msgstr "Spalten-Zugriffsprivilegien" -#: describe.c:747 describe.c:3998 describe.c:4002 +#: describe.c:747 describe.c:4000 describe.c:4004 msgid "Access privileges" msgstr "Zugriffsprivilegien" @@ -1695,8 +1698,7 @@ msgstr "Zugriffsprivilegien" msgid "" "The server (version %d.%d) does not support altering default privileges.\n" msgstr "" -"Der Server (Version %d.%d) unterstützt nicht das Ändern der " -"Vorgabeprivilegien.\n" +"Der Server (Version %d.%d) unterstützt kein Ändern der Vorgabeprivilegien.\n" #: describe.c:791 describe.c:883 msgid "function" @@ -1714,8 +1716,8 @@ msgstr "Objekt" msgid "aggregate" msgstr "Aggregat" -#: describe.c:902 sql_help.c:1717 sql_help.c:2835 sql_help.c:2905 -#: sql_help.c:3038 sql_help.c:3143 sql_help.c:3194 +#: describe.c:902 sql_help.c:1715 sql_help.c:2833 sql_help.c:2903 +#: sql_help.c:3036 sql_help.c:3141 sql_help.c:3192 msgid "operator" msgstr "Operator" @@ -1723,7 +1725,7 @@ msgstr "Operator" msgid "data type" msgstr "Datentyp" -#: describe.c:946 describe.c:2513 +#: describe.c:946 describe.c:2508 msgid "index" msgstr "Index" @@ -1868,7 +1870,7 @@ msgstr ", INITIALLY DEFERRED" msgid "View definition:" msgstr "Sichtdefinition:" -#: describe.c:1591 describe.c:1879 +#: describe.c:1591 describe.c:1874 msgid "Rules:" msgstr "Regeln:" @@ -1880,379 +1882,384 @@ msgstr "Indexe:" msgid "Check constraints:" msgstr "Check-Constraints:" -#: describe.c:1763 +#: describe.c:1761 msgid "Foreign-key constraints:" msgstr "Fremdschlüssel-Constraints:" -#: describe.c:1797 +#: describe.c:1792 msgid "Referenced by:" msgstr "Fremdschlüsselverweise von:" -#: describe.c:1882 +#: describe.c:1877 msgid "Disabled rules:" msgstr "Abgeschaltete Regeln:" -#: describe.c:1885 +#: describe.c:1880 msgid "Rules firing always:" msgstr "Regeln, die immer aktiv werden:" -#: describe.c:1888 +#: describe.c:1883 msgid "Rules firing on replica only:" msgstr "Regeln, die nur im Replikat aktiv werden:" -#: describe.c:1996 +#: describe.c:1991 msgid "Triggers:" msgstr "Trigger:" -#: describe.c:1999 +#: describe.c:1994 msgid "Disabled triggers:" msgstr "Abgeschaltete Trigger:" -#: describe.c:2002 +#: describe.c:1997 msgid "Triggers firing always:" msgstr "Trigger, die immer aktiv werden:" -#: describe.c:2005 +#: describe.c:2000 msgid "Triggers firing on replica only:" msgstr "Trigger, die nur im Replikat aktiv werden:" -#: describe.c:2071 +#: describe.c:2066 msgid "Inherits" msgstr "Erbt von" -#: describe.c:2101 +#: describe.c:2096 #, c-format msgid "Number of child tables: %d (Use \\d+ to list them.)" -msgstr "Anzahl Kindtabellen: %d (Mit \\\\d+ alle anzeigen.)" +msgstr "Anzahl Kindtabellen: %d (Mit \\d+ alle anzeigen.)" -#: describe.c:2108 +#: describe.c:2103 msgid "Child tables" msgstr "Kindtabellen" -#: describe.c:2130 +#: describe.c:2125 #, c-format msgid "Typed table of type: %s" msgstr "Getypte Tabelle vom Typ: %s" -#: describe.c:2137 +#: describe.c:2132 msgid "Has OIDs" msgstr "Hat OIDs" -#: describe.c:2140 describe.c:2777 describe.c:2851 +#: describe.c:2135 describe.c:2772 describe.c:2846 msgid "yes" msgstr "ja" -#: describe.c:2140 describe.c:2777 describe.c:2851 +#: describe.c:2135 describe.c:2772 describe.c:2846 msgid "no" msgstr "nein" -#: describe.c:2148 describe.c:3619 describe.c:3683 describe.c:3739 -#: describe.c:3794 +#: describe.c:2143 describe.c:3621 describe.c:3685 describe.c:3741 +#: describe.c:3796 msgid "Options" msgstr "Optionen" -#: describe.c:2233 +#: describe.c:2228 #, c-format msgid "Tablespace: \"%s\"" msgstr "Tablespace: »%s«" -#: describe.c:2246 +#: describe.c:2241 #, c-format msgid ", tablespace \"%s\"" msgstr ", Tablespace »%s«" -#: describe.c:2328 +#: describe.c:2323 msgid "List of roles" msgstr "Liste der Rollen" -#: describe.c:2330 +#: describe.c:2325 msgid "Role name" msgstr "Rollenname" -#: describe.c:2331 +#: describe.c:2326 msgid "Attributes" msgstr "Attribute" -#: describe.c:2332 +#: describe.c:2327 msgid "Member of" msgstr "Mitglied von" -#: describe.c:2343 +#: describe.c:2338 msgid "Superuser" msgstr "Superuser" -#: describe.c:2346 +#: describe.c:2341 msgid "No inheritance" msgstr "keine Vererbung" -#: describe.c:2349 +#: describe.c:2344 msgid "Create role" msgstr "Rolle erzeugen" -#: describe.c:2352 +#: describe.c:2347 msgid "Create DB" msgstr "DB erzeugen" -#: describe.c:2355 +#: describe.c:2350 msgid "Cannot login" msgstr "kann nicht einloggen" -#: describe.c:2359 +#: describe.c:2354 msgid "Replication" msgstr "Replikation" -#: describe.c:2368 +#: describe.c:2363 msgid "No connections" msgstr "keine Verbindungen" -#: describe.c:2370 +#: describe.c:2365 #, c-format msgid "%d connection" msgid_plural "%d connections" msgstr[0] "%d Verbindung" msgstr[1] "%d Verbindungen" -#: describe.c:2437 +#: describe.c:2432 #, c-format msgid "No per-database role settings support in this server version.\n" msgstr "" "Keine Unterstützung für Rolleneinstellungen pro Datenbank in dieser " "Serverversion.\n" -#: describe.c:2448 +#: describe.c:2443 #, c-format msgid "No matching settings found.\n" msgstr "Keine passenden Einstellungen gefunden.\n" -#: describe.c:2450 +#: describe.c:2445 #, c-format msgid "No settings found.\n" msgstr "Keine Einstellungen gefunden.\n" -#: describe.c:2455 +#: describe.c:2450 msgid "List of settings" msgstr "Liste der Einstellungen" -#: describe.c:2515 +#: describe.c:2510 msgid "special" msgstr "speziell" -#: describe.c:2523 describe.c:3788 +#: describe.c:2518 describe.c:3790 msgid "Table" msgstr "Tabelle" -#: describe.c:2597 +#: describe.c:2592 #, c-format msgid "No matching relations found.\n" msgstr "Keine passenden Relationen gefunden.\n" -#: describe.c:2599 +#: describe.c:2594 #, c-format msgid "No relations found.\n" msgstr "Keine Relationen gefunden.\n" -#: describe.c:2604 +#: describe.c:2599 msgid "List of relations" msgstr "Liste der Relationen" -#: describe.c:2640 +#: describe.c:2635 msgid "Trusted" msgstr "Vertraut" -#: describe.c:2648 +#: describe.c:2643 msgid "Internal Language" msgstr "Interne Sprache" -#: describe.c:2649 +#: describe.c:2644 msgid "Call Handler" msgstr "Call-Handler" -#: describe.c:2650 describe.c:3611 +#: describe.c:2645 describe.c:3613 msgid "Validator" msgstr "Validator" -#: describe.c:2653 +#: describe.c:2648 msgid "Inline Handler" msgstr "Inline-Handler" -#: describe.c:2674 +#: describe.c:2669 msgid "List of languages" msgstr "Liste der Sprachen" -#: describe.c:2714 +#: describe.c:2709 msgid "Modifier" msgstr "Attribut" -#: describe.c:2722 +#: describe.c:2717 msgid "Check" msgstr "Check" -#: describe.c:2740 +#: describe.c:2735 msgid "List of domains" msgstr "Liste der Domänen" -#: describe.c:2775 +#: describe.c:2770 msgid "Source" msgstr "Quelle" -#: describe.c:2776 +#: describe.c:2771 msgid "Destination" msgstr "Ziel" -#: describe.c:2778 +#: describe.c:2773 msgid "Default?" msgstr "Standard?" -#: describe.c:2796 +#: describe.c:2791 msgid "List of conversions" msgstr "Liste der Konversionen" -#: describe.c:2848 +#: describe.c:2843 msgid "Source type" msgstr "Quelltyp" -#: describe.c:2849 +#: describe.c:2844 msgid "Target type" msgstr "Zieltyp" -#: describe.c:2850 describe.c:3181 +#: describe.c:2845 describe.c:3183 msgid "Function" msgstr "Funktion" -#: describe.c:2851 +#: describe.c:2846 msgid "in assignment" msgstr "in Zuweisung" -#: describe.c:2852 +#: describe.c:2847 msgid "Implicit?" msgstr "Implizit?" -#: describe.c:2878 +#: describe.c:2873 msgid "List of casts" msgstr "Liste der Typumwandlungen" -#: describe.c:2946 +#: describe.c:2898 +#, c-format +msgid "The server (version %d.%d) does not support collations.\n" +msgstr "Der Server (Version %d.%d) unterstützt keine Sortierfolgen.\n" + +#: describe.c:2948 msgid "List of collations" msgstr "Liste der Sortierfolgen" -#: describe.c:3004 +#: describe.c:3006 msgid "List of schemas" msgstr "Liste der Schemas" -#: describe.c:3027 describe.c:3260 describe.c:3328 describe.c:3396 +#: describe.c:3029 describe.c:3262 describe.c:3330 describe.c:3398 #, c-format msgid "The server (version %d.%d) does not support full text search.\n" msgstr "Der Server (Version %d.%d) unterstützt keine Volltextsuche.\n" -#: describe.c:3061 +#: describe.c:3063 msgid "List of text search parsers" msgstr "Liste der Textsucheparser" -#: describe.c:3104 +#: describe.c:3106 #, c-format msgid "Did not find any text search parser named \"%s\".\n" msgstr "Kein Textsucheparser namens »%s« gefunden\n" -#: describe.c:3179 +#: describe.c:3181 msgid "Start parse" msgstr "Parsen starten" -#: describe.c:3180 +#: describe.c:3182 msgid "Method" msgstr "Methode" -#: describe.c:3184 +#: describe.c:3186 msgid "Get next token" msgstr "Nächstes Token lesen" -#: describe.c:3186 +#: describe.c:3188 msgid "End parse" msgstr "Parsen beenden" -#: describe.c:3188 +#: describe.c:3190 msgid "Get headline" msgstr "Überschrift ermitteln" -#: describe.c:3190 +#: describe.c:3192 msgid "Get token types" msgstr "Tokentypen ermitteln" -#: describe.c:3200 +#: describe.c:3202 #, c-format msgid "Text search parser \"%s.%s\"" msgstr "Textsucheparser »%s.%s«" -#: describe.c:3202 +#: describe.c:3204 #, c-format msgid "Text search parser \"%s\"" msgstr "Textsucheparser »%s«" -#: describe.c:3220 +#: describe.c:3222 msgid "Token name" msgstr "Tokenname" -#: describe.c:3231 +#: describe.c:3233 #, c-format msgid "Token types for parser \"%s.%s\"" msgstr "Tokentypen für Parser »%s.%s«" -#: describe.c:3233 +#: describe.c:3235 #, c-format msgid "Token types for parser \"%s\"" msgstr "Tokentypen für Parser »%s«" -#: describe.c:3282 +#: describe.c:3284 msgid "Template" msgstr "Vorlage" -#: describe.c:3283 +#: describe.c:3285 msgid "Init options" -msgstr "Initialisierungsoptionen:" +msgstr "Initialisierungsoptionen" -#: describe.c:3305 +#: describe.c:3307 msgid "List of text search dictionaries" msgstr "Liste der Textsuchewörterbücher" -#: describe.c:3345 +#: describe.c:3347 msgid "Init" msgstr "Init" -#: describe.c:3346 +#: describe.c:3348 msgid "Lexize" msgstr "Lexize" -#: describe.c:3373 +#: describe.c:3375 msgid "List of text search templates" msgstr "Liste der Textsuchevorlagen" -#: describe.c:3430 +#: describe.c:3432 msgid "List of text search configurations" msgstr "Liste der Textsuchekonfigurationen" -#: describe.c:3474 +#: describe.c:3476 #, c-format msgid "Did not find any text search configuration named \"%s\".\n" msgstr "Keine Textsuchekonfiguration namens »%s« gefunden\n" -#: describe.c:3540 +#: describe.c:3542 msgid "Token" msgstr "Token" -#: describe.c:3541 +#: describe.c:3543 msgid "Dictionaries" msgstr "Wörterbücher" -#: describe.c:3552 +#: describe.c:3554 #, c-format msgid "Text search configuration \"%s.%s\"" msgstr "Textsuchekonfiguration »%s.%s«" -#: describe.c:3555 +#: describe.c:3557 #, c-format msgid "Text search configuration \"%s\"" msgstr "Textsuchekonfiguration »%s«" -#: describe.c:3559 +#: describe.c:3561 #, c-format msgid "" "\n" @@ -2261,7 +2268,7 @@ msgstr "" "\n" "Parser: »%s.%s«" -#: describe.c:3562 +#: describe.c:3564 #, c-format msgid "" "\n" @@ -2270,86 +2277,86 @@ msgstr "" "\n" "Parser: »%s«" -#: describe.c:3594 +#: describe.c:3596 #, c-format msgid "The server (version %d.%d) does not support foreign-data wrappers.\n" msgstr "Der Server (Version %d.%d) unterstützt keine Fremddaten-Wrapper.\n" -#: describe.c:3608 +#: describe.c:3610 msgid "Handler" msgstr "Handler" -#: describe.c:3635 +#: describe.c:3637 msgid "List of foreign-data wrappers" msgstr "Liste der Fremddaten-Wrapper" -#: describe.c:3658 +#: describe.c:3660 #, c-format msgid "The server (version %d.%d) does not support foreign servers.\n" msgstr "Der Server (Version %d.%d) unterstützt keine Fremdserver.\n" -#: describe.c:3670 +#: describe.c:3672 msgid "Foreign-data wrapper" msgstr "Fremddaten-Wrapper" -#: describe.c:3682 describe.c:3852 +#: describe.c:3684 describe.c:3854 msgid "Version" msgstr "Version" -#: describe.c:3701 +#: describe.c:3703 msgid "List of foreign servers" msgstr "Liste der Fremdserver" -#: describe.c:3724 +#: describe.c:3726 #, c-format msgid "The server (version %d.%d) does not support user mappings.\n" msgstr "Der Server (Version %d.%d) unterstützt keine Benutzerabbildungen.\n" -#: describe.c:3733 describe.c:3789 +#: describe.c:3735 describe.c:3791 msgid "Server" msgstr "Server" -#: describe.c:3734 +#: describe.c:3736 msgid "User name" msgstr "Benutzername" -#: describe.c:3754 +#: describe.c:3756 msgid "List of user mappings" msgstr "Liste der Benutzerabbildungen" -#: describe.c:3777 +#: describe.c:3779 #, c-format msgid "The server (version %d.%d) does not support foreign tables.\n" msgstr "Der Server (Version %d.%d) unterstützt keine Fremdtabellen.\n" -#: describe.c:3815 +#: describe.c:3817 msgid "List of foreign tables" msgstr "Liste der Fremdtabellen" -#: describe.c:3838 describe.c:3892 +#: describe.c:3840 describe.c:3894 #, c-format msgid "The server (version %d.%d) does not support extensions.\n" msgstr "Der Server (Version %d.%d) unterstützt keine Erweiterungen.\n" -#: describe.c:3869 +#: describe.c:3871 msgid "List of installed extensions" msgstr "Liste der installierten Erweiterungen" -#: describe.c:3919 +#: describe.c:3921 #, c-format msgid "Did not find any extension named \"%s\".\n" msgstr "Keine Erweiterungen namens »%s« gefunden\n" -#: describe.c:3922 +#: describe.c:3924 #, c-format msgid "Did not find any extensions.\n" msgstr "Keine Erweiterungen gefunden\n" -#: describe.c:3966 +#: describe.c:3968 msgid "Object Description" msgstr "Objektbeschreibung" -#: describe.c:3975 +#: describe.c:3977 #, c-format msgid "Objects in extension \"%s\"" msgstr "Objekte in Erweiterung »%s«" @@ -2939,99 +2946,99 @@ msgstr "berechnet eine Zeilenmenge" #: sql_help.c:497 sql_help.c:505 sql_help.c:508 sql_help.c:511 sql_help.c:541 #: sql_help.c:547 sql_help.c:549 sql_help.c:553 sql_help.c:556 sql_help.c:559 #: sql_help.c:569 sql_help.c:571 sql_help.c:588 sql_help.c:597 sql_help.c:599 -#: sql_help.c:601 sql_help.c:676 sql_help.c:678 sql_help.c:681 sql_help.c:683 -#: sql_help.c:742 sql_help.c:744 sql_help.c:746 sql_help.c:749 sql_help.c:770 -#: sql_help.c:773 sql_help.c:776 sql_help.c:779 sql_help.c:783 sql_help.c:785 -#: sql_help.c:787 sql_help.c:789 sql_help.c:803 sql_help.c:806 sql_help.c:808 -#: sql_help.c:810 sql_help.c:820 sql_help.c:822 sql_help.c:832 sql_help.c:834 -#: sql_help.c:843 sql_help.c:864 sql_help.c:866 sql_help.c:868 sql_help.c:871 -#: sql_help.c:873 sql_help.c:875 sql_help.c:913 sql_help.c:919 sql_help.c:921 -#: sql_help.c:924 sql_help.c:926 sql_help.c:928 sql_help.c:953 sql_help.c:956 -#: sql_help.c:958 sql_help.c:960 sql_help.c:962 sql_help.c:1002 -#: sql_help.c:1185 sql_help.c:1193 sql_help.c:1237 sql_help.c:1241 -#: sql_help.c:1251 sql_help.c:1269 sql_help.c:1292 sql_help.c:1324 -#: sql_help.c:1369 sql_help.c:1411 sql_help.c:1433 sql_help.c:1453 -#: sql_help.c:1454 sql_help.c:1471 sql_help.c:1491 sql_help.c:1513 -#: sql_help.c:1541 sql_help.c:1562 sql_help.c:1592 sql_help.c:1773 -#: sql_help.c:1786 sql_help.c:1803 sql_help.c:1819 sql_help.c:1842 -#: sql_help.c:1885 sql_help.c:1889 sql_help.c:1891 sql_help.c:1909 -#: sql_help.c:1936 sql_help.c:1969 sql_help.c:1979 sql_help.c:1988 -#: sql_help.c:2032 sql_help.c:2050 sql_help.c:2058 sql_help.c:2066 -#: sql_help.c:2074 sql_help.c:2090 sql_help.c:2098 sql_help.c:2107 -#: sql_help.c:2118 sql_help.c:2126 sql_help.c:2134 sql_help.c:2142 -#: sql_help.c:2152 sql_help.c:2161 sql_help.c:2170 sql_help.c:2178 -#: sql_help.c:2186 sql_help.c:2195 sql_help.c:2203 sql_help.c:2219 -#: sql_help.c:2235 sql_help.c:2243 sql_help.c:2251 sql_help.c:2259 -#: sql_help.c:2267 sql_help.c:2276 sql_help.c:2284 sql_help.c:2301 -#: sql_help.c:2316 sql_help.c:2508 sql_help.c:2559 sql_help.c:2586 -#: sql_help.c:2929 sql_help.c:2975 sql_help.c:3082 +#: sql_help.c:601 sql_help.c:675 sql_help.c:677 sql_help.c:680 sql_help.c:682 +#: sql_help.c:740 sql_help.c:742 sql_help.c:744 sql_help.c:747 sql_help.c:768 +#: sql_help.c:771 sql_help.c:774 sql_help.c:777 sql_help.c:781 sql_help.c:783 +#: sql_help.c:785 sql_help.c:787 sql_help.c:801 sql_help.c:804 sql_help.c:806 +#: sql_help.c:808 sql_help.c:818 sql_help.c:820 sql_help.c:830 sql_help.c:832 +#: sql_help.c:841 sql_help.c:862 sql_help.c:864 sql_help.c:866 sql_help.c:869 +#: sql_help.c:871 sql_help.c:873 sql_help.c:911 sql_help.c:917 sql_help.c:919 +#: sql_help.c:922 sql_help.c:924 sql_help.c:926 sql_help.c:951 sql_help.c:954 +#: sql_help.c:956 sql_help.c:958 sql_help.c:960 sql_help.c:1000 +#: sql_help.c:1183 sql_help.c:1191 sql_help.c:1235 sql_help.c:1239 +#: sql_help.c:1249 sql_help.c:1267 sql_help.c:1290 sql_help.c:1322 +#: sql_help.c:1367 sql_help.c:1409 sql_help.c:1431 sql_help.c:1451 +#: sql_help.c:1452 sql_help.c:1469 sql_help.c:1489 sql_help.c:1511 +#: sql_help.c:1539 sql_help.c:1560 sql_help.c:1590 sql_help.c:1771 +#: sql_help.c:1784 sql_help.c:1801 sql_help.c:1817 sql_help.c:1840 +#: sql_help.c:1883 sql_help.c:1887 sql_help.c:1889 sql_help.c:1907 +#: sql_help.c:1934 sql_help.c:1967 sql_help.c:1977 sql_help.c:1986 +#: sql_help.c:2030 sql_help.c:2048 sql_help.c:2056 sql_help.c:2064 +#: sql_help.c:2072 sql_help.c:2088 sql_help.c:2096 sql_help.c:2105 +#: sql_help.c:2116 sql_help.c:2124 sql_help.c:2132 sql_help.c:2140 +#: sql_help.c:2150 sql_help.c:2159 sql_help.c:2168 sql_help.c:2176 +#: sql_help.c:2184 sql_help.c:2193 sql_help.c:2201 sql_help.c:2217 +#: sql_help.c:2233 sql_help.c:2241 sql_help.c:2249 sql_help.c:2257 +#: sql_help.c:2265 sql_help.c:2274 sql_help.c:2282 sql_help.c:2299 +#: sql_help.c:2314 sql_help.c:2506 sql_help.c:2557 sql_help.c:2584 +#: sql_help.c:2927 sql_help.c:2973 sql_help.c:3080 msgid "name" msgstr "Name" #: sql_help.c:27 sql_help.c:30 sql_help.c:33 sql_help.c:317 sql_help.c:320 -#: sql_help.c:2033 +#: sql_help.c:2031 msgid "type" msgstr "Typ" #: sql_help.c:28 sql_help.c:45 sql_help.c:60 sql_help.c:92 sql_help.c:312 #: sql_help.c:360 sql_help.c:393 sql_help.c:405 sql_help.c:422 sql_help.c:461 -#: sql_help.c:507 sql_help.c:548 sql_help.c:570 sql_help.c:600 sql_help.c:682 -#: sql_help.c:743 sql_help.c:786 sql_help.c:807 sql_help.c:821 sql_help.c:833 -#: sql_help.c:845 sql_help.c:872 sql_help.c:920 sql_help.c:961 +#: sql_help.c:507 sql_help.c:548 sql_help.c:570 sql_help.c:600 sql_help.c:681 +#: sql_help.c:741 sql_help.c:784 sql_help.c:805 sql_help.c:819 sql_help.c:831 +#: sql_help.c:843 sql_help.c:870 sql_help.c:918 sql_help.c:959 msgid "new_name" msgstr "neuer_Name" #: sql_help.c:31 sql_help.c:47 sql_help.c:62 sql_help.c:94 sql_help.c:187 #: sql_help.c:282 sql_help.c:322 sql_help.c:365 sql_help.c:424 sql_help.c:433 #: sql_help.c:445 sql_help.c:464 sql_help.c:510 sql_help.c:572 sql_help.c:598 -#: sql_help.c:617 sql_help.c:727 sql_help.c:745 sql_help.c:788 sql_help.c:809 -#: sql_help.c:867 sql_help.c:959 +#: sql_help.c:617 sql_help.c:725 sql_help.c:743 sql_help.c:786 sql_help.c:807 +#: sql_help.c:865 sql_help.c:957 msgid "new_owner" msgstr "neuer_Eigentümer" #: sql_help.c:34 sql_help.c:49 sql_help.c:64 sql_help.c:189 sql_help.c:228 #: sql_help.c:314 sql_help.c:370 sql_help.c:449 sql_help.c:467 sql_help.c:513 -#: sql_help.c:602 sql_help.c:684 sql_help.c:790 sql_help.c:811 sql_help.c:823 -#: sql_help.c:835 sql_help.c:874 sql_help.c:963 +#: sql_help.c:602 sql_help.c:683 sql_help.c:788 sql_help.c:809 sql_help.c:821 +#: sql_help.c:833 sql_help.c:872 sql_help.c:961 msgid "new_schema" msgstr "neues_Schema" #: sql_help.c:88 sql_help.c:279 sql_help.c:323 sql_help.c:542 sql_help.c:614 -#: sql_help.c:804 sql_help.c:914 sql_help.c:940 sql_help.c:1144 -#: sql_help.c:1149 sql_help.c:1327 sql_help.c:1345 sql_help.c:1412 -#: sql_help.c:1542 sql_help.c:1613 sql_help.c:1788 sql_help.c:1937 -#: sql_help.c:1959 sql_help.c:2334 +#: sql_help.c:802 sql_help.c:912 sql_help.c:938 sql_help.c:1142 +#: sql_help.c:1147 sql_help.c:1325 sql_help.c:1343 sql_help.c:1410 +#: sql_help.c:1540 sql_help.c:1611 sql_help.c:1786 sql_help.c:1935 +#: sql_help.c:1957 sql_help.c:2332 msgid "option" msgstr "Option" -#: sql_help.c:89 sql_help.c:543 sql_help.c:915 sql_help.c:1413 sql_help.c:1543 -#: sql_help.c:1938 +#: sql_help.c:89 sql_help.c:543 sql_help.c:913 sql_help.c:1411 sql_help.c:1541 +#: sql_help.c:1936 msgid "where option can be:" msgstr "wobei Option Folgendes sein kann:" -#: sql_help.c:90 sql_help.c:544 sql_help.c:916 sql_help.c:1276 sql_help.c:1544 -#: sql_help.c:1939 +#: sql_help.c:90 sql_help.c:544 sql_help.c:914 sql_help.c:1274 sql_help.c:1542 +#: sql_help.c:1937 msgid "connlimit" msgstr "Verbindungslimit" -#: sql_help.c:96 sql_help.c:728 +#: sql_help.c:96 sql_help.c:726 msgid "new_tablespace" msgstr "neuer_Tablespace" #: sql_help.c:98 sql_help.c:101 sql_help.c:103 sql_help.c:374 sql_help.c:376 -#: sql_help.c:377 sql_help.c:551 sql_help.c:555 sql_help.c:558 sql_help.c:922 -#: sql_help.c:925 sql_help.c:927 sql_help.c:1380 sql_help.c:2603 -#: sql_help.c:2918 +#: sql_help.c:377 sql_help.c:551 sql_help.c:555 sql_help.c:558 sql_help.c:920 +#: sql_help.c:923 sql_help.c:925 sql_help.c:1378 sql_help.c:2601 +#: sql_help.c:2916 msgid "configuration_parameter" msgstr "Konfigurationsparameter" #: sql_help.c:99 sql_help.c:280 sql_help.c:324 sql_help.c:375 sql_help.c:410 -#: sql_help.c:552 sql_help.c:615 sql_help.c:703 sql_help.c:722 sql_help.c:748 -#: sql_help.c:805 sql_help.c:923 sql_help.c:941 sql_help.c:1328 -#: sql_help.c:1346 sql_help.c:1381 sql_help.c:1382 sql_help.c:1441 -#: sql_help.c:1614 sql_help.c:1688 sql_help.c:1696 sql_help.c:1728 -#: sql_help.c:1750 sql_help.c:1789 sql_help.c:1960 sql_help.c:2919 -#: sql_help.c:2920 +#: sql_help.c:552 sql_help.c:615 sql_help.c:702 sql_help.c:720 sql_help.c:746 +#: sql_help.c:803 sql_help.c:921 sql_help.c:939 sql_help.c:1326 +#: sql_help.c:1344 sql_help.c:1379 sql_help.c:1380 sql_help.c:1439 +#: sql_help.c:1612 sql_help.c:1686 sql_help.c:1694 sql_help.c:1726 +#: sql_help.c:1748 sql_help.c:1787 sql_help.c:1958 sql_help.c:2917 +#: sql_help.c:2918 msgid "value" msgstr "Wert" @@ -3039,9 +3046,9 @@ msgstr "Wert" msgid "target_role" msgstr "Zielrolle" -#: sql_help.c:152 sql_help.c:1577 sql_help.c:2432 sql_help.c:2439 -#: sql_help.c:2451 sql_help.c:2457 sql_help.c:2686 sql_help.c:2693 -#: sql_help.c:2705 sql_help.c:2711 +#: sql_help.c:152 sql_help.c:1575 sql_help.c:2430 sql_help.c:2437 +#: sql_help.c:2449 sql_help.c:2455 sql_help.c:2684 sql_help.c:2691 +#: sql_help.c:2703 sql_help.c:2709 msgid "schema_name" msgstr "Schemaname" @@ -3054,42 +3061,42 @@ msgid "where abbreviated_grant_or_revoke is one of:" msgstr "wobei abgekürztes_Grant_oder_Revoke Folgendes sein kann:" #: sql_help.c:155 sql_help.c:156 sql_help.c:157 sql_help.c:158 sql_help.c:159 -#: sql_help.c:160 sql_help.c:1416 sql_help.c:1417 sql_help.c:1418 -#: sql_help.c:1419 sql_help.c:1420 sql_help.c:1547 sql_help.c:1548 -#: sql_help.c:1549 sql_help.c:1550 sql_help.c:1551 sql_help.c:1942 -#: sql_help.c:1943 sql_help.c:1944 sql_help.c:1945 sql_help.c:1946 -#: sql_help.c:2433 sql_help.c:2437 sql_help.c:2440 sql_help.c:2442 -#: sql_help.c:2444 sql_help.c:2446 sql_help.c:2452 sql_help.c:2454 -#: sql_help.c:2456 sql_help.c:2458 sql_help.c:2460 sql_help.c:2461 -#: sql_help.c:2462 sql_help.c:2687 sql_help.c:2691 sql_help.c:2694 -#: sql_help.c:2696 sql_help.c:2698 sql_help.c:2700 sql_help.c:2706 -#: sql_help.c:2708 sql_help.c:2710 sql_help.c:2712 sql_help.c:2714 -#: sql_help.c:2715 sql_help.c:2716 sql_help.c:2939 +#: sql_help.c:160 sql_help.c:1414 sql_help.c:1415 sql_help.c:1416 +#: sql_help.c:1417 sql_help.c:1418 sql_help.c:1545 sql_help.c:1546 +#: sql_help.c:1547 sql_help.c:1548 sql_help.c:1549 sql_help.c:1940 +#: sql_help.c:1941 sql_help.c:1942 sql_help.c:1943 sql_help.c:1944 +#: sql_help.c:2431 sql_help.c:2435 sql_help.c:2438 sql_help.c:2440 +#: sql_help.c:2442 sql_help.c:2444 sql_help.c:2450 sql_help.c:2452 +#: sql_help.c:2454 sql_help.c:2456 sql_help.c:2458 sql_help.c:2459 +#: sql_help.c:2460 sql_help.c:2685 sql_help.c:2689 sql_help.c:2692 +#: sql_help.c:2694 sql_help.c:2696 sql_help.c:2698 sql_help.c:2704 +#: sql_help.c:2706 sql_help.c:2708 sql_help.c:2710 sql_help.c:2712 +#: sql_help.c:2713 sql_help.c:2714 sql_help.c:2937 msgid "role_name" msgstr "Rollenname" -#: sql_help.c:180 sql_help.c:694 sql_help.c:696 sql_help.c:955 sql_help.c:1295 -#: sql_help.c:1299 sql_help.c:1437 sql_help.c:1700 sql_help.c:1710 -#: sql_help.c:1732 sql_help.c:2476 sql_help.c:2824 sql_help.c:2825 -#: sql_help.c:2829 sql_help.c:2834 sql_help.c:2893 sql_help.c:2894 -#: sql_help.c:2899 sql_help.c:2904 sql_help.c:3027 sql_help.c:3028 -#: sql_help.c:3032 sql_help.c:3037 sql_help.c:3108 sql_help.c:3110 -#: sql_help.c:3141 sql_help.c:3183 sql_help.c:3184 sql_help.c:3188 -#: sql_help.c:3193 +#: sql_help.c:180 sql_help.c:693 sql_help.c:695 sql_help.c:953 sql_help.c:1293 +#: sql_help.c:1297 sql_help.c:1435 sql_help.c:1698 sql_help.c:1708 +#: sql_help.c:1730 sql_help.c:2474 sql_help.c:2822 sql_help.c:2823 +#: sql_help.c:2827 sql_help.c:2832 sql_help.c:2891 sql_help.c:2892 +#: sql_help.c:2897 sql_help.c:2902 sql_help.c:3025 sql_help.c:3026 +#: sql_help.c:3030 sql_help.c:3035 sql_help.c:3106 sql_help.c:3108 +#: sql_help.c:3139 sql_help.c:3181 sql_help.c:3182 sql_help.c:3186 +#: sql_help.c:3191 msgid "expression" msgstr "Ausdruck" #: sql_help.c:183 msgid "domain_constraint" -msgstr "Domanen-Constraint" +msgstr "Domänen-Constraint" -#: sql_help.c:185 sql_help.c:710 sql_help.c:711 sql_help.c:730 sql_help.c:1062 -#: sql_help.c:1298 sql_help.c:1699 sql_help.c:1709 +#: sql_help.c:185 sql_help.c:708 sql_help.c:709 sql_help.c:728 sql_help.c:1059 +#: sql_help.c:1296 sql_help.c:1697 sql_help.c:1707 msgid "constraint_name" msgstr "Constraint-Name" -#: sql_help.c:225 sql_help.c:227 sql_help.c:229 sql_help.c:231 sql_help.c:1310 -#: sql_help.c:2082 +#: sql_help.c:225 sql_help.c:227 sql_help.c:229 sql_help.c:231 sql_help.c:1308 +#: sql_help.c:2080 msgid "extension_name" msgstr "Erweiterungsname" @@ -3105,121 +3112,121 @@ msgstr "Elementobjekt" msgid "where member_object is:" msgstr "wobei Elementobjekt Folgendes ist:" -#: sql_help.c:234 sql_help.c:1057 sql_help.c:2773 +#: sql_help.c:234 sql_help.c:1052 sql_help.c:2771 msgid "agg_name" msgstr "Aggname" -#: sql_help.c:235 sql_help.c:1058 sql_help.c:2774 +#: sql_help.c:235 sql_help.c:1053 sql_help.c:2772 msgid "agg_type" msgstr "Aggtyp" -#: sql_help.c:236 sql_help.c:1059 sql_help.c:1217 sql_help.c:1221 -#: sql_help.c:1223 sql_help.c:2041 +#: sql_help.c:236 sql_help.c:1054 sql_help.c:1215 sql_help.c:1219 +#: sql_help.c:1221 sql_help.c:2039 msgid "source_type" msgstr "Quelltyp" -#: sql_help.c:237 sql_help.c:1060 sql_help.c:1218 sql_help.c:1222 -#: sql_help.c:1224 sql_help.c:2042 +#: sql_help.c:237 sql_help.c:1055 sql_help.c:1216 sql_help.c:1220 +#: sql_help.c:1222 sql_help.c:2040 msgid "target_type" msgstr "Zieltyp" #: sql_help.c:238 sql_help.c:239 sql_help.c:240 sql_help.c:241 sql_help.c:242 #: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:255 sql_help.c:256 #: sql_help.c:257 sql_help.c:258 sql_help.c:259 sql_help.c:260 sql_help.c:261 -#: sql_help.c:262 sql_help.c:263 sql_help.c:264 sql_help.c:1054 -#: sql_help.c:1061 sql_help.c:1064 sql_help.c:1065 sql_help.c:1066 -#: sql_help.c:1067 sql_help.c:1068 sql_help.c:1069 sql_help.c:1074 -#: sql_help.c:1079 sql_help.c:1081 sql_help.c:1083 sql_help.c:1084 -#: sql_help.c:1087 sql_help.c:1088 sql_help.c:1089 sql_help.c:1090 -#: sql_help.c:1091 sql_help.c:1092 sql_help.c:1093 sql_help.c:1094 -#: sql_help.c:1097 sql_help.c:1098 sql_help.c:2770 sql_help.c:2775 -#: sql_help.c:2776 sql_help.c:2782 sql_help.c:2783 sql_help.c:2784 -#: sql_help.c:2785 sql_help.c:2786 +#: sql_help.c:262 sql_help.c:263 sql_help.c:264 sql_help.c:1056 +#: sql_help.c:1061 sql_help.c:1062 sql_help.c:1063 sql_help.c:1064 +#: sql_help.c:1065 sql_help.c:1066 sql_help.c:1071 sql_help.c:1076 +#: sql_help.c:1078 sql_help.c:1080 sql_help.c:1081 sql_help.c:1084 +#: sql_help.c:1085 sql_help.c:1086 sql_help.c:1087 sql_help.c:1088 +#: sql_help.c:1089 sql_help.c:1090 sql_help.c:1091 sql_help.c:1092 +#: sql_help.c:1095 sql_help.c:1096 sql_help.c:2768 sql_help.c:2773 +#: sql_help.c:2774 sql_help.c:2780 sql_help.c:2781 sql_help.c:2782 +#: sql_help.c:2783 sql_help.c:2784 msgid "object_name" msgstr "Objektname" -#: sql_help.c:243 sql_help.c:495 sql_help.c:1070 sql_help.c:1219 -#: sql_help.c:1254 sql_help.c:1472 sql_help.c:1503 sql_help.c:1847 -#: sql_help.c:2447 sql_help.c:2701 sql_help.c:2777 sql_help.c:2850 -#: sql_help.c:2855 sql_help.c:3053 sql_help.c:3058 sql_help.c:3209 -#: sql_help.c:3214 +#: sql_help.c:243 sql_help.c:495 sql_help.c:1067 sql_help.c:1217 +#: sql_help.c:1252 sql_help.c:1470 sql_help.c:1501 sql_help.c:1845 +#: sql_help.c:2445 sql_help.c:2699 sql_help.c:2775 sql_help.c:2848 +#: sql_help.c:2853 sql_help.c:3051 sql_help.c:3056 sql_help.c:3207 +#: sql_help.c:3212 msgid "function_name" msgstr "Funktionsname" #: sql_help.c:244 sql_help.c:352 sql_help.c:357 sql_help.c:362 sql_help.c:367 -#: sql_help.c:1071 sql_help.c:1370 sql_help.c:2108 sql_help.c:2448 -#: sql_help.c:2702 sql_help.c:2778 +#: sql_help.c:1068 sql_help.c:1368 sql_help.c:2106 sql_help.c:2446 +#: sql_help.c:2700 sql_help.c:2776 msgid "argmode" msgstr "Argmodus" #: sql_help.c:245 sql_help.c:353 sql_help.c:358 sql_help.c:363 sql_help.c:368 -#: sql_help.c:1072 sql_help.c:1371 sql_help.c:2109 sql_help.c:2779 +#: sql_help.c:1069 sql_help.c:1369 sql_help.c:2107 sql_help.c:2777 msgid "argname" msgstr "Argname" #: sql_help.c:246 sql_help.c:354 sql_help.c:359 sql_help.c:364 sql_help.c:369 -#: sql_help.c:1073 sql_help.c:1372 sql_help.c:2110 sql_help.c:2780 +#: sql_help.c:1070 sql_help.c:1370 sql_help.c:2108 sql_help.c:2778 msgid "argtype" msgstr "Argtyp" -#: sql_help.c:247 sql_help.c:488 sql_help.c:1076 sql_help.c:1496 +#: sql_help.c:247 sql_help.c:488 sql_help.c:1073 sql_help.c:1494 msgid "operator_name" msgstr "Operatorname" -#: sql_help.c:248 sql_help.c:443 sql_help.c:447 sql_help.c:1077 -#: sql_help.c:1473 sql_help.c:2143 +#: sql_help.c:248 sql_help.c:443 sql_help.c:447 sql_help.c:1074 +#: sql_help.c:1471 sql_help.c:2141 msgid "left_type" msgstr "linker_Typ" -#: sql_help.c:249 sql_help.c:444 sql_help.c:448 sql_help.c:1078 -#: sql_help.c:1474 sql_help.c:2144 +#: sql_help.c:249 sql_help.c:444 sql_help.c:448 sql_help.c:1075 +#: sql_help.c:1472 sql_help.c:2142 msgid "right_type" msgstr "rechter_Typ" #: sql_help.c:251 sql_help.c:253 sql_help.c:460 sql_help.c:463 sql_help.c:466 #: sql_help.c:486 sql_help.c:498 sql_help.c:506 sql_help.c:509 sql_help.c:512 -#: sql_help.c:1080 sql_help.c:1082 sql_help.c:1493 sql_help.c:1514 -#: sql_help.c:1715 sql_help.c:2153 sql_help.c:2162 +#: sql_help.c:1077 sql_help.c:1079 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1713 sql_help.c:2151 sql_help.c:2160 msgid "index_method" msgstr "Indexmethode" -#: sql_help.c:277 sql_help.c:1325 +#: sql_help.c:277 sql_help.c:1323 msgid "handler_function" msgstr "Handler-Funktion" -#: sql_help.c:278 sql_help.c:1326 +#: sql_help.c:278 sql_help.c:1324 msgid "validator_function" msgstr "Validator-Funktion" -#: sql_help.c:307 sql_help.c:355 sql_help.c:677 sql_help.c:865 sql_help.c:1706 -#: sql_help.c:1707 sql_help.c:1723 sql_help.c:1724 +#: sql_help.c:307 sql_help.c:355 sql_help.c:676 sql_help.c:863 sql_help.c:1704 +#: sql_help.c:1705 sql_help.c:1721 sql_help.c:1722 msgid "action" msgstr "Aktion" #: sql_help.c:309 sql_help.c:316 sql_help.c:318 sql_help.c:319 sql_help.c:321 -#: sql_help.c:596 sql_help.c:679 sql_help.c:686 sql_help.c:690 sql_help.c:691 -#: sql_help.c:695 sql_help.c:697 sql_help.c:698 sql_help.c:699 sql_help.c:701 -#: sql_help.c:704 sql_help.c:706 sql_help.c:954 sql_help.c:957 sql_help.c:972 -#: sql_help.c:1142 sql_help.c:1146 sql_help.c:1158 sql_help.c:1159 -#: sql_help.c:1436 sql_help.c:1599 sql_help.c:1731 sql_help.c:2434 -#: sql_help.c:2435 sql_help.c:2475 sql_help.c:2688 sql_help.c:2689 -#: sql_help.c:3107 sql_help.c:3109 sql_help.c:3126 sql_help.c:3129 +#: sql_help.c:596 sql_help.c:678 sql_help.c:685 sql_help.c:689 sql_help.c:690 +#: sql_help.c:694 sql_help.c:696 sql_help.c:697 sql_help.c:698 sql_help.c:700 +#: sql_help.c:703 sql_help.c:705 sql_help.c:952 sql_help.c:955 sql_help.c:970 +#: sql_help.c:1140 sql_help.c:1144 sql_help.c:1156 sql_help.c:1157 +#: sql_help.c:1434 sql_help.c:1597 sql_help.c:1729 sql_help.c:2432 +#: sql_help.c:2433 sql_help.c:2473 sql_help.c:2686 sql_help.c:2687 +#: sql_help.c:3105 sql_help.c:3107 sql_help.c:3124 sql_help.c:3127 msgid "column" msgstr "Spalte" -#: sql_help.c:310 sql_help.c:680 +#: sql_help.c:310 sql_help.c:679 msgid "new_column" msgstr "neue_Spalte" -#: sql_help.c:315 sql_help.c:371 sql_help.c:685 sql_help.c:878 +#: sql_help.c:315 sql_help.c:371 sql_help.c:684 sql_help.c:876 msgid "where action is one of:" msgstr "wobei Aktion Folgendes sein kann:" -#: sql_help.c:372 sql_help.c:1378 +#: sql_help.c:372 sql_help.c:1376 msgid "execution_cost" msgstr "Ausführungskosten" -#: sql_help.c:373 sql_help.c:1379 +#: sql_help.c:373 sql_help.c:1377 msgid "result_rows" msgstr "Ergebniszeilen" @@ -3227,77 +3234,77 @@ msgstr "Ergebniszeilen" msgid "group_name" msgstr "Gruppenname" -#: sql_help.c:389 sql_help.c:391 sql_help.c:938 sql_help.c:1270 -#: sql_help.c:1578 sql_help.c:1580 sql_help.c:1761 sql_help.c:1957 -#: sql_help.c:2292 sql_help.c:2949 +#: sql_help.c:389 sql_help.c:391 sql_help.c:936 sql_help.c:1268 +#: sql_help.c:1576 sql_help.c:1578 sql_help.c:1759 sql_help.c:1955 +#: sql_help.c:2290 sql_help.c:2947 msgid "user_name" msgstr "Benutzername" -#: sql_help.c:407 sql_help.c:1760 sql_help.c:2227 sql_help.c:2459 -#: sql_help.c:2713 +#: sql_help.c:407 sql_help.c:1758 sql_help.c:2225 sql_help.c:2457 +#: sql_help.c:2711 msgid "tablespace_name" msgstr "Tablespace-Name" -#: sql_help.c:409 sql_help.c:412 sql_help.c:721 sql_help.c:723 sql_help.c:1440 -#: sql_help.c:1687 sql_help.c:1695 sql_help.c:1727 sql_help.c:1749 +#: sql_help.c:409 sql_help.c:412 sql_help.c:719 sql_help.c:721 sql_help.c:1438 +#: sql_help.c:1685 sql_help.c:1693 sql_help.c:1725 sql_help.c:1747 msgid "storage_parameter" msgstr "Storage-Parameter" -#: sql_help.c:432 sql_help.c:1075 sql_help.c:2781 +#: sql_help.c:432 sql_help.c:1072 sql_help.c:2779 msgid "large_object_oid" msgstr "Large-Object-OID" -#: sql_help.c:487 sql_help.c:499 sql_help.c:1495 +#: sql_help.c:487 sql_help.c:499 sql_help.c:1493 msgid "strategy_number" msgstr "Strategienummer" #: sql_help.c:489 sql_help.c:490 sql_help.c:493 sql_help.c:494 sql_help.c:500 -#: sql_help.c:501 sql_help.c:503 sql_help.c:504 sql_help.c:1497 -#: sql_help.c:1498 sql_help.c:1501 sql_help.c:1502 +#: sql_help.c:501 sql_help.c:503 sql_help.c:504 sql_help.c:1495 +#: sql_help.c:1496 sql_help.c:1499 sql_help.c:1500 msgid "op_type" msgstr "Optyp" -#: sql_help.c:491 sql_help.c:1499 +#: sql_help.c:491 sql_help.c:1497 msgid "sort_family_name" msgstr "Sortierfamilienname" -#: sql_help.c:492 sql_help.c:502 sql_help.c:1500 +#: sql_help.c:492 sql_help.c:502 sql_help.c:1498 msgid "support_number" msgstr "Unterst-Nummer" -#: sql_help.c:496 sql_help.c:1220 sql_help.c:1504 +#: sql_help.c:496 sql_help.c:1218 sql_help.c:1502 msgid "argument_type" msgstr "Argumenttyp" -#: sql_help.c:545 sql_help.c:917 sql_help.c:1414 sql_help.c:1545 -#: sql_help.c:1940 +#: sql_help.c:545 sql_help.c:915 sql_help.c:1412 sql_help.c:1543 +#: sql_help.c:1938 msgid "password" msgstr "Passwort" -#: sql_help.c:546 sql_help.c:918 sql_help.c:1415 sql_help.c:1546 -#: sql_help.c:1941 +#: sql_help.c:546 sql_help.c:916 sql_help.c:1413 sql_help.c:1544 +#: sql_help.c:1939 msgid "timestamp" msgstr "Zeit" -#: sql_help.c:550 sql_help.c:554 sql_help.c:557 sql_help.c:560 sql_help.c:2441 -#: sql_help.c:2695 +#: sql_help.c:550 sql_help.c:554 sql_help.c:557 sql_help.c:560 sql_help.c:2439 +#: sql_help.c:2693 msgid "database_name" msgstr "Datenbankname" -#: sql_help.c:589 sql_help.c:1593 +#: sql_help.c:589 sql_help.c:1591 msgid "increment" msgstr "Inkrement" -#: sql_help.c:590 sql_help.c:1594 +#: sql_help.c:590 sql_help.c:1592 msgid "minvalue" msgstr "Minwert" -#: sql_help.c:591 sql_help.c:1595 +#: sql_help.c:591 sql_help.c:1593 msgid "maxvalue" msgstr "Maxwert" -#: sql_help.c:592 sql_help.c:1596 sql_help.c:2837 sql_help.c:2907 -#: sql_help.c:3040 sql_help.c:3145 sql_help.c:3196 +#: sql_help.c:592 sql_help.c:1594 sql_help.c:2835 sql_help.c:2905 +#: sql_help.c:3038 sql_help.c:3143 sql_help.c:3194 msgid "start" msgstr "Start" @@ -3305,745 +3312,749 @@ msgstr "Start" msgid "restart" msgstr "Restart" -#: sql_help.c:594 sql_help.c:1597 +#: sql_help.c:594 sql_help.c:1595 msgid "cache" msgstr "Cache" -#: sql_help.c:612 sql_help.c:616 sql_help.c:939 sql_help.c:1344 -#: sql_help.c:1609 sql_help.c:1958 sql_help.c:2211 sql_help.c:2293 -#: sql_help.c:2445 sql_help.c:2699 +#: sql_help.c:612 sql_help.c:616 sql_help.c:937 sql_help.c:1342 +#: sql_help.c:1607 sql_help.c:1956 sql_help.c:2209 sql_help.c:2291 +#: sql_help.c:2443 sql_help.c:2697 msgid "server_name" msgstr "Servername" -#: sql_help.c:687 sql_help.c:692 sql_help.c:880 sql_help.c:884 sql_help.c:1293 -#: sql_help.c:1343 sql_help.c:1492 sql_help.c:1680 sql_help.c:1887 -#: sql_help.c:2560 +#: sql_help.c:686 sql_help.c:691 sql_help.c:878 sql_help.c:882 sql_help.c:1291 +#: sql_help.c:1341 sql_help.c:1490 sql_help.c:1678 sql_help.c:1885 +#: sql_help.c:2558 msgid "data_type" msgstr "Datentyp" -#: sql_help.c:688 sql_help.c:693 sql_help.c:881 sql_help.c:885 sql_help.c:1294 -#: sql_help.c:1438 sql_help.c:1681 sql_help.c:1888 +#: sql_help.c:687 sql_help.c:692 sql_help.c:879 sql_help.c:883 sql_help.c:1292 +#: sql_help.c:1436 sql_help.c:1679 sql_help.c:1886 msgid "collation" msgstr "Sortierfolge" -#: sql_help.c:689 sql_help.c:1682 sql_help.c:1693 +#: sql_help.c:688 sql_help.c:1680 sql_help.c:1691 msgid "column_constraint" msgstr "Spalten-Constraint" -#: sql_help.c:700 +#: sql_help.c:699 msgid "integer" msgstr "ganze_Zahl" -#: sql_help.c:702 sql_help.c:705 +#: sql_help.c:701 sql_help.c:704 msgid "attribute_option" msgstr "Attributoption" -#: sql_help.c:707 sql_help.c:709 sql_help.c:1683 sql_help.c:1694 +#: sql_help.c:706 sql_help.c:1681 sql_help.c:1692 msgid "table_constraint" msgstr "Tabellen-Constraint" -#: sql_help.c:708 +#: sql_help.c:707 msgid "table_constraint_using_index" msgstr "Tabellen-Constraint-für-Index" -#: sql_help.c:712 sql_help.c:713 sql_help.c:714 sql_help.c:715 sql_help.c:1095 +#: sql_help.c:710 sql_help.c:711 sql_help.c:712 sql_help.c:713 sql_help.c:1093 msgid "trigger_name" msgstr "Triggername" -#: sql_help.c:716 sql_help.c:717 sql_help.c:718 sql_help.c:719 +#: sql_help.c:714 sql_help.c:715 sql_help.c:716 sql_help.c:717 msgid "rewrite_rule_name" msgstr "Regelname" -#: sql_help.c:720 sql_help.c:731 sql_help.c:1012 +#: sql_help.c:718 sql_help.c:729 sql_help.c:1010 msgid "index_name" msgstr "Indexname" -#: sql_help.c:724 sql_help.c:725 sql_help.c:1684 sql_help.c:1686 +#: sql_help.c:722 sql_help.c:723 sql_help.c:1682 sql_help.c:1684 msgid "parent_table" msgstr "Elterntabelle" -#: sql_help.c:726 sql_help.c:1691 +#: sql_help.c:724 sql_help.c:1689 msgid "type_name" msgstr "Typname" -#: sql_help.c:729 +#: sql_help.c:727 msgid "and table_constraint_using_index is:" msgstr "und Tabellen-Constraint-für-Index Folgendes ist:" -#: sql_help.c:747 sql_help.c:750 +#: sql_help.c:745 sql_help.c:748 msgid "tablespace_option" msgstr "Tablespace-Option" -#: sql_help.c:771 sql_help.c:774 sql_help.c:780 sql_help.c:784 +#: sql_help.c:769 sql_help.c:772 sql_help.c:778 sql_help.c:782 msgid "token_type" msgstr "Tokentyp" -#: sql_help.c:772 sql_help.c:775 +#: sql_help.c:770 sql_help.c:773 msgid "dictionary_name" msgstr "Wörterbuchname" -#: sql_help.c:777 sql_help.c:781 +#: sql_help.c:775 sql_help.c:779 msgid "old_dictionary" msgstr "altes_Wörterbuch" -#: sql_help.c:778 sql_help.c:782 +#: sql_help.c:776 sql_help.c:780 msgid "new_dictionary" msgstr "neues_Wörterbuch" -#: sql_help.c:869 sql_help.c:879 sql_help.c:882 sql_help.c:883 sql_help.c:1886 +#: sql_help.c:867 sql_help.c:877 sql_help.c:880 sql_help.c:881 sql_help.c:1884 msgid "attribute_name" msgstr "Attributname" -#: sql_help.c:870 +#: sql_help.c:868 msgid "new_attribute_name" msgstr "neuer_Attributname" -#: sql_help.c:876 +#: sql_help.c:874 msgid "new_enum_value" msgstr "neuer_Enum-Wert" -#: sql_help.c:877 +#: sql_help.c:875 msgid "existing_enum_value" msgstr "existierender_Enum-Wert" -#: sql_help.c:986 sql_help.c:2964 sql_help.c:2965 sql_help.c:2989 +#: sql_help.c:984 sql_help.c:2962 sql_help.c:2963 sql_help.c:2987 msgid "transaction_mode" msgstr "Transaktionsmodus" -#: sql_help.c:987 sql_help.c:2966 sql_help.c:2990 +#: sql_help.c:985 sql_help.c:2964 sql_help.c:2988 msgid "where transaction_mode is one of:" msgstr "wobei Transaktionsmodus Folgendes sein kann:" -#: sql_help.c:1011 sql_help.c:1055 sql_help.c:1063 sql_help.c:1086 -#: sql_help.c:1096 sql_help.c:1141 sql_help.c:1145 sql_help.c:1341 -#: sql_help.c:1678 sql_help.c:1690 sql_help.c:1747 sql_help.c:2431 -#: sql_help.c:2436 sql_help.c:2685 sql_help.c:2690 sql_help.c:2771 -#: sql_help.c:2839 sql_help.c:2841 sql_help.c:2870 sql_help.c:2909 -#: sql_help.c:3042 sql_help.c:3044 sql_help.c:3073 sql_help.c:3198 -#: sql_help.c:3200 sql_help.c:3229 +#: sql_help.c:1009 sql_help.c:1060 sql_help.c:1083 sql_help.c:1094 +#: sql_help.c:1139 sql_help.c:1143 sql_help.c:1339 sql_help.c:1676 +#: sql_help.c:1688 sql_help.c:1745 sql_help.c:2429 sql_help.c:2434 +#: sql_help.c:2683 sql_help.c:2688 sql_help.c:2769 sql_help.c:2837 +#: sql_help.c:2839 sql_help.c:2868 sql_help.c:2907 sql_help.c:3040 +#: sql_help.c:3042 sql_help.c:3071 sql_help.c:3196 sql_help.c:3198 +#: sql_help.c:3227 msgid "table_name" msgstr "Tabellenname" -#: sql_help.c:1056 sql_help.c:1342 sql_help.c:1375 sql_help.c:1679 -#: sql_help.c:1692 sql_help.c:1711 sql_help.c:1713 sql_help.c:1720 -#: sql_help.c:1748 sql_help.c:1850 sql_help.c:1970 sql_help.c:2772 -#: sql_help.c:2865 sql_help.c:3068 sql_help.c:3224 +#: sql_help.c:1057 +msgid "relation_name" +msgstr "Relationsname" + +#: sql_help.c:1058 sql_help.c:1340 sql_help.c:1373 sql_help.c:1677 +#: sql_help.c:1690 sql_help.c:1709 sql_help.c:1711 sql_help.c:1718 +#: sql_help.c:1746 sql_help.c:1848 sql_help.c:1968 sql_help.c:2770 +#: sql_help.c:2863 sql_help.c:3066 sql_help.c:3222 msgid "column_name" msgstr "Spaltenname" -#: sql_help.c:1085 +#: sql_help.c:1082 msgid "rule_name" msgstr "Regelname" -#: sql_help.c:1099 +#: sql_help.c:1097 msgid "text" msgstr "Text" -#: sql_help.c:1114 sql_help.c:2569 sql_help.c:2731 +#: sql_help.c:1112 sql_help.c:2567 sql_help.c:2729 msgid "transaction_id" msgstr "Transaktions-ID" -#: sql_help.c:1143 sql_help.c:1148 sql_help.c:2495 +#: sql_help.c:1141 sql_help.c:1146 sql_help.c:2493 msgid "filename" msgstr "Dateiname" -#: sql_help.c:1147 sql_help.c:1752 sql_help.c:1971 sql_help.c:1989 -#: sql_help.c:2477 +#: sql_help.c:1145 sql_help.c:1750 sql_help.c:1969 sql_help.c:1987 +#: sql_help.c:2475 msgid "query" msgstr "Anfrage" -#: sql_help.c:1150 sql_help.c:2337 +#: sql_help.c:1148 sql_help.c:2335 msgid "where option can be one of:" msgstr "wobei Option eins der folgenden sein kann:" -#: sql_help.c:1151 +#: sql_help.c:1149 msgid "format_name" msgstr "Formatname" -#: sql_help.c:1152 sql_help.c:1155 sql_help.c:2338 sql_help.c:2339 -#: sql_help.c:2340 sql_help.c:2341 +#: sql_help.c:1150 sql_help.c:1153 sql_help.c:2336 sql_help.c:2337 +#: sql_help.c:2338 sql_help.c:2339 msgid "boolean" msgstr "boolean" -#: sql_help.c:1153 +#: sql_help.c:1151 msgid "delimiter_character" msgstr "Trennzeichen" -#: sql_help.c:1154 +#: sql_help.c:1152 msgid "null_string" msgstr "Null-Zeichenkette" -#: sql_help.c:1156 +#: sql_help.c:1154 msgid "quote_character" msgstr "Quote-Zeichen" -#: sql_help.c:1157 +#: sql_help.c:1155 msgid "escape_character" msgstr "Escape-Zeichen" -#: sql_help.c:1160 +#: sql_help.c:1158 msgid "encoding_name" msgstr "Kodierungsname" -#: sql_help.c:1186 +#: sql_help.c:1184 msgid "input_data_type" msgstr "Eingabedatentyp" -#: sql_help.c:1187 sql_help.c:1195 +#: sql_help.c:1185 sql_help.c:1193 msgid "sfunc" msgstr "Übergangsfunktion" -#: sql_help.c:1188 sql_help.c:1196 +#: sql_help.c:1186 sql_help.c:1194 msgid "state_data_type" msgstr "Zustandsdatentyp" -#: sql_help.c:1189 sql_help.c:1197 +#: sql_help.c:1187 sql_help.c:1195 msgid "ffunc" msgstr "Abschlussfunktion" -#: sql_help.c:1190 sql_help.c:1198 +#: sql_help.c:1188 sql_help.c:1196 msgid "initial_condition" msgstr "Anfangswert" -#: sql_help.c:1191 sql_help.c:1199 +#: sql_help.c:1189 sql_help.c:1197 msgid "sort_operator" msgstr "Sortieroperator" -#: sql_help.c:1192 +#: sql_help.c:1190 msgid "or the old syntax" msgstr "oder die alte Syntax" -#: sql_help.c:1194 +#: sql_help.c:1192 msgid "base_type" msgstr "Basistyp" -#: sql_help.c:1238 +#: sql_help.c:1236 msgid "locale" msgstr "Locale" -#: sql_help.c:1239 sql_help.c:1273 +#: sql_help.c:1237 sql_help.c:1271 msgid "lc_collate" msgstr "lc_collate" -#: sql_help.c:1240 sql_help.c:1274 +#: sql_help.c:1238 sql_help.c:1272 msgid "lc_ctype" msgstr "lc_ctype" -#: sql_help.c:1242 +#: sql_help.c:1240 msgid "existing_collation" msgstr "existierende_Sortierfolge" -#: sql_help.c:1252 +#: sql_help.c:1250 msgid "source_encoding" msgstr "Quellkodierung" -#: sql_help.c:1253 +#: sql_help.c:1251 msgid "dest_encoding" msgstr "Zielkodierung" -#: sql_help.c:1271 sql_help.c:1787 +#: sql_help.c:1269 sql_help.c:1785 msgid "template" msgstr "Vorlage" -#: sql_help.c:1272 +#: sql_help.c:1270 msgid "encoding" msgstr "Kodierung" -#: sql_help.c:1275 sql_help.c:1442 sql_help.c:1689 sql_help.c:1697 -#: sql_help.c:1729 sql_help.c:1751 +#: sql_help.c:1273 sql_help.c:1440 sql_help.c:1687 sql_help.c:1695 +#: sql_help.c:1727 sql_help.c:1749 msgid "tablespace" msgstr "Tablespace" -#: sql_help.c:1296 +#: sql_help.c:1294 msgid "constraint" msgstr "Constraint" -#: sql_help.c:1297 +#: sql_help.c:1295 msgid "where constraint is:" msgstr "wobei Constraint Folgendes ist:" -#: sql_help.c:1311 +#: sql_help.c:1309 msgid "schema" msgstr "Schema" -#: sql_help.c:1312 +#: sql_help.c:1310 msgid "version" msgstr "Version" -#: sql_help.c:1313 +#: sql_help.c:1311 msgid "old_version" -msgstr "neue_Version" +msgstr "alte_Version" -#: sql_help.c:1373 sql_help.c:1701 +#: sql_help.c:1371 sql_help.c:1699 msgid "default_expr" msgstr "Vorgabeausdruck" -#: sql_help.c:1374 +#: sql_help.c:1372 msgid "rettype" msgstr "Rückgabetyp" -#: sql_help.c:1376 +#: sql_help.c:1374 msgid "column_type" msgstr "Spaltentyp" -#: sql_help.c:1377 sql_help.c:2023 sql_help.c:2453 sql_help.c:2707 +#: sql_help.c:1375 sql_help.c:2021 sql_help.c:2451 sql_help.c:2705 msgid "lang_name" msgstr "Sprachname" -#: sql_help.c:1383 +#: sql_help.c:1381 msgid "definition" msgstr "Definition" -#: sql_help.c:1384 +#: sql_help.c:1382 msgid "obj_file" msgstr "Objektdatei" -#: sql_help.c:1385 +#: sql_help.c:1383 msgid "link_symbol" msgstr "Linksymbol" -#: sql_help.c:1386 +#: sql_help.c:1384 msgid "attribute" msgstr "Attribut" -#: sql_help.c:1421 sql_help.c:1552 sql_help.c:1947 +#: sql_help.c:1419 sql_help.c:1550 sql_help.c:1945 msgid "uid" msgstr "Uid" -#: sql_help.c:1435 +#: sql_help.c:1433 msgid "method" msgstr "Methode" -#: sql_help.c:1439 sql_help.c:1733 +#: sql_help.c:1437 sql_help.c:1731 msgid "opclass" msgstr "Opklasse" -#: sql_help.c:1443 sql_help.c:1719 +#: sql_help.c:1441 sql_help.c:1717 msgid "predicate" msgstr "Prädikat" -#: sql_help.c:1455 +#: sql_help.c:1453 msgid "call_handler" msgstr "Handler" -#: sql_help.c:1456 +#: sql_help.c:1454 msgid "inline_handler" msgstr "Inline-Handler" -#: sql_help.c:1457 +#: sql_help.c:1455 msgid "valfunction" msgstr "Valfunktion" -#: sql_help.c:1475 +#: sql_help.c:1473 msgid "com_op" msgstr "Kommutator-Op" -#: sql_help.c:1476 +#: sql_help.c:1474 msgid "neg_op" msgstr "Umkehrungs-Op" -#: sql_help.c:1477 +#: sql_help.c:1475 msgid "res_proc" msgstr "Res-Funktion" -#: sql_help.c:1478 +#: sql_help.c:1476 msgid "join_proc" msgstr "Join-Funktion" -#: sql_help.c:1494 +#: sql_help.c:1492 msgid "family_name" msgstr "Familienname" -#: sql_help.c:1505 +#: sql_help.c:1503 msgid "storage_type" msgstr "Storage-Typ" -#: sql_help.c:1563 sql_help.c:1843 +#: sql_help.c:1561 sql_help.c:1841 msgid "event" msgstr "Ereignis" -#: sql_help.c:1565 sql_help.c:1846 sql_help.c:2005 sql_help.c:2828 -#: sql_help.c:2830 sql_help.c:2898 sql_help.c:2900 sql_help.c:3031 -#: sql_help.c:3033 sql_help.c:3112 sql_help.c:3187 sql_help.c:3189 +#: sql_help.c:1563 sql_help.c:1844 sql_help.c:2003 sql_help.c:2826 +#: sql_help.c:2828 sql_help.c:2896 sql_help.c:2898 sql_help.c:3029 +#: sql_help.c:3031 sql_help.c:3110 sql_help.c:3185 sql_help.c:3187 msgid "condition" msgstr "Bedingung" -#: sql_help.c:1566 sql_help.c:1567 sql_help.c:1568 +#: sql_help.c:1564 sql_help.c:1565 sql_help.c:1566 msgid "command" msgstr "Befehl" -#: sql_help.c:1579 sql_help.c:1581 +#: sql_help.c:1577 sql_help.c:1579 msgid "schema_element" msgstr "Schemaelement" -#: sql_help.c:1610 +#: sql_help.c:1608 msgid "server_type" msgstr "Servertyp" -#: sql_help.c:1611 +#: sql_help.c:1609 msgid "server_version" msgstr "Serverversion" -#: sql_help.c:1612 sql_help.c:2443 sql_help.c:2697 +#: sql_help.c:1610 sql_help.c:2441 sql_help.c:2695 msgid "fdw_name" msgstr "FDW-Name" -#: sql_help.c:1685 +#: sql_help.c:1683 msgid "like_option" msgstr "Like-Option" -#: sql_help.c:1698 +#: sql_help.c:1696 msgid "where column_constraint is:" msgstr "wobei Spalten-Constraint Folgendes ist:" -#: sql_help.c:1702 sql_help.c:1703 sql_help.c:1712 sql_help.c:1714 -#: sql_help.c:1718 +#: sql_help.c:1700 sql_help.c:1701 sql_help.c:1710 sql_help.c:1712 +#: sql_help.c:1716 msgid "index_parameters" msgstr "Indexparameter" -#: sql_help.c:1704 sql_help.c:1721 +#: sql_help.c:1702 sql_help.c:1719 msgid "reftable" msgstr "Reftabelle" -#: sql_help.c:1705 sql_help.c:1722 +#: sql_help.c:1703 sql_help.c:1720 msgid "refcolumn" msgstr "Refspalte" -#: sql_help.c:1708 +#: sql_help.c:1706 msgid "and table_constraint is:" msgstr "und Tabellen-Constraint Folgendes ist:" -#: sql_help.c:1716 +#: sql_help.c:1714 msgid "exclude_element" msgstr "Exclude-Element" -#: sql_help.c:1725 +#: sql_help.c:1723 msgid "and like_option is:" msgstr "und Like-Option Folgendes ist:" -#: sql_help.c:1726 +#: sql_help.c:1724 msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" msgstr "Indexparameter bei UNIQUE-, PRIMARY KEY- und EXCLUDE-Constraints sind:" -#: sql_help.c:1730 +#: sql_help.c:1728 msgid "exclude_element in an EXCLUDE constraint is:" msgstr "Exclude-Element in einem EXCLUDE-Constraint ist:" -#: sql_help.c:1762 +#: sql_help.c:1760 msgid "directory" msgstr "Verzeichnis" -#: sql_help.c:1774 +#: sql_help.c:1772 msgid "parser_name" msgstr "Parser-Name" -#: sql_help.c:1775 +#: sql_help.c:1773 msgid "source_config" msgstr "Quellkonfig" -#: sql_help.c:1804 +#: sql_help.c:1802 msgid "start_function" msgstr "Startfunktion" -#: sql_help.c:1805 +#: sql_help.c:1803 msgid "gettoken_function" msgstr "Gettext-Funktion" -#: sql_help.c:1806 +#: sql_help.c:1804 msgid "end_function" msgstr "Endfunktion" -#: sql_help.c:1807 +#: sql_help.c:1805 msgid "lextypes_function" msgstr "Lextypenfunktion" -#: sql_help.c:1808 +#: sql_help.c:1806 msgid "headline_function" msgstr "Headline-Funktion" -#: sql_help.c:1820 +#: sql_help.c:1818 msgid "init_function" msgstr "Init-Funktion" -#: sql_help.c:1821 +#: sql_help.c:1819 msgid "lexize_function" msgstr "Lexize-Funktion" -#: sql_help.c:1845 +#: sql_help.c:1843 msgid "referenced_table_name" msgstr "verwiesener_Tabellenname" -#: sql_help.c:1848 +#: sql_help.c:1846 msgid "arguments" msgstr "Argumente" -#: sql_help.c:1849 +#: sql_help.c:1847 msgid "where event can be one of:" msgstr "wobei Ereignis eins der folgenden sein kann:" -#: sql_help.c:1890 sql_help.c:2787 +#: sql_help.c:1888 sql_help.c:2785 msgid "label" msgstr "Label" -#: sql_help.c:1892 +#: sql_help.c:1890 msgid "input_function" msgstr "Eingabefunktion" -#: sql_help.c:1893 +#: sql_help.c:1891 msgid "output_function" msgstr "Ausgabefunktion" -#: sql_help.c:1894 +#: sql_help.c:1892 msgid "receive_function" msgstr "Empfangsfunktion" -#: sql_help.c:1895 +#: sql_help.c:1893 msgid "send_function" msgstr "Sendefunktion" -#: sql_help.c:1896 +#: sql_help.c:1894 msgid "type_modifier_input_function" msgstr "Typmod-Eingabefunktion" -#: sql_help.c:1897 +#: sql_help.c:1895 msgid "type_modifier_output_function" msgstr "Typmod-Ausgabefunktion" -#: sql_help.c:1898 +#: sql_help.c:1896 msgid "analyze_function" msgstr "Analyze-Funktion" -#: sql_help.c:1899 +#: sql_help.c:1897 msgid "internallength" msgstr "interne_Länge" -#: sql_help.c:1900 +#: sql_help.c:1898 msgid "alignment" msgstr "Ausrichtung" -#: sql_help.c:1901 +#: sql_help.c:1899 msgid "storage" msgstr "Speicherung" -#: sql_help.c:1902 +#: sql_help.c:1900 msgid "like_type" msgstr "wie_Typ" -#: sql_help.c:1903 +#: sql_help.c:1901 msgid "category" msgstr "Kategorie" -#: sql_help.c:1904 +#: sql_help.c:1902 msgid "preferred" msgstr "bevorzugt" -#: sql_help.c:1905 +#: sql_help.c:1903 msgid "default" msgstr "Vorgabewert" -#: sql_help.c:1906 +#: sql_help.c:1904 msgid "element" msgstr "Element" -#: sql_help.c:1907 +#: sql_help.c:1905 msgid "delimiter" msgstr "Trennzeichen" -#: sql_help.c:1908 +#: sql_help.c:1906 msgid "collatable" msgstr "sortierbar" -#: sql_help.c:2001 sql_help.c:2473 sql_help.c:2823 sql_help.c:2892 -#: sql_help.c:3026 sql_help.c:3104 sql_help.c:3182 +#: sql_help.c:1999 sql_help.c:2471 sql_help.c:2821 sql_help.c:2890 +#: sql_help.c:3024 sql_help.c:3102 sql_help.c:3180 msgid "with_query" msgstr "With-Anfrage" -#: sql_help.c:2003 sql_help.c:2842 sql_help.c:2845 sql_help.c:2848 -#: sql_help.c:2852 sql_help.c:3045 sql_help.c:3048 sql_help.c:3051 -#: sql_help.c:3055 sql_help.c:3106 sql_help.c:3201 sql_help.c:3204 -#: sql_help.c:3207 sql_help.c:3211 +#: sql_help.c:2001 sql_help.c:2840 sql_help.c:2843 sql_help.c:2846 +#: sql_help.c:2850 sql_help.c:3043 sql_help.c:3046 sql_help.c:3049 +#: sql_help.c:3053 sql_help.c:3104 sql_help.c:3199 sql_help.c:3202 +#: sql_help.c:3205 sql_help.c:3209 msgid "alias" msgstr "Alias" -#: sql_help.c:2004 +#: sql_help.c:2002 msgid "using_list" msgstr "Using-Liste" -#: sql_help.c:2006 sql_help.c:2367 sql_help.c:2536 sql_help.c:3113 +#: sql_help.c:2004 sql_help.c:2365 sql_help.c:2534 sql_help.c:3111 msgid "cursor_name" msgstr "Cursor-Name" -#: sql_help.c:2007 sql_help.c:2478 sql_help.c:3114 +#: sql_help.c:2005 sql_help.c:2476 sql_help.c:3112 msgid "output_expression" msgstr "Ausgabeausdruck" -#: sql_help.c:2008 sql_help.c:2479 sql_help.c:2826 sql_help.c:2895 -#: sql_help.c:3029 sql_help.c:3115 sql_help.c:3185 +#: sql_help.c:2006 sql_help.c:2477 sql_help.c:2824 sql_help.c:2893 +#: sql_help.c:3027 sql_help.c:3113 sql_help.c:3183 msgid "output_name" msgstr "Ausgabename" -#: sql_help.c:2024 +#: sql_help.c:2022 msgid "code" msgstr "Code" -#: sql_help.c:2317 +#: sql_help.c:2315 msgid "parameter" msgstr "Parameter" -#: sql_help.c:2335 sql_help.c:2336 sql_help.c:2561 +#: sql_help.c:2333 sql_help.c:2334 sql_help.c:2559 msgid "statement" msgstr "Anweisung" -#: sql_help.c:2366 sql_help.c:2535 +#: sql_help.c:2364 sql_help.c:2533 msgid "direction" msgstr "Richtung" -#: sql_help.c:2368 sql_help.c:2537 +#: sql_help.c:2366 sql_help.c:2535 msgid "where direction can be empty or one of:" msgstr "wobei Richtung leer sein kann oder Folgendes:" -#: sql_help.c:2369 sql_help.c:2370 sql_help.c:2371 sql_help.c:2372 -#: sql_help.c:2373 sql_help.c:2538 sql_help.c:2539 sql_help.c:2540 -#: sql_help.c:2541 sql_help.c:2542 sql_help.c:2836 sql_help.c:2838 -#: sql_help.c:2906 sql_help.c:2908 sql_help.c:3039 sql_help.c:3041 -#: sql_help.c:3144 sql_help.c:3146 sql_help.c:3195 sql_help.c:3197 +#: sql_help.c:2367 sql_help.c:2368 sql_help.c:2369 sql_help.c:2370 +#: sql_help.c:2371 sql_help.c:2536 sql_help.c:2537 sql_help.c:2538 +#: sql_help.c:2539 sql_help.c:2540 sql_help.c:2834 sql_help.c:2836 +#: sql_help.c:2904 sql_help.c:2906 sql_help.c:3037 sql_help.c:3039 +#: sql_help.c:3142 sql_help.c:3144 sql_help.c:3193 sql_help.c:3195 msgid "count" msgstr "Anzahl" -#: sql_help.c:2438 sql_help.c:2692 +#: sql_help.c:2436 sql_help.c:2690 msgid "sequence_name" msgstr "Sequenzname" -#: sql_help.c:2449 sql_help.c:2703 +#: sql_help.c:2447 sql_help.c:2701 msgid "arg_name" msgstr "Argname" -#: sql_help.c:2450 sql_help.c:2704 +#: sql_help.c:2448 sql_help.c:2702 msgid "arg_type" msgstr "Argtyp" -#: sql_help.c:2455 sql_help.c:2709 +#: sql_help.c:2453 sql_help.c:2707 msgid "loid" msgstr "Large-Object-OID" -#: sql_help.c:2487 sql_help.c:2550 sql_help.c:3090 +#: sql_help.c:2485 sql_help.c:2548 sql_help.c:3088 msgid "channel" msgstr "Kanal" -#: sql_help.c:2509 +#: sql_help.c:2507 msgid "lockmode" msgstr "Sperrmodus" -#: sql_help.c:2510 +#: sql_help.c:2508 msgid "where lockmode is one of:" msgstr "wobei Sperrmodus Folgendes sein kann:" -#: sql_help.c:2551 +#: sql_help.c:2549 msgid "payload" msgstr "Payload" -#: sql_help.c:2577 +#: sql_help.c:2575 msgid "old_role" msgstr "alte_Rolle" -#: sql_help.c:2578 +#: sql_help.c:2576 msgid "new_role" msgstr "neue_Rolle" -#: sql_help.c:2594 sql_help.c:2739 sql_help.c:2747 +#: sql_help.c:2592 sql_help.c:2737 sql_help.c:2745 msgid "savepoint_name" msgstr "Savepoint-Name" -#: sql_help.c:2769 +#: sql_help.c:2767 msgid "provider" msgstr "Provider" -#: sql_help.c:2827 sql_help.c:2858 sql_help.c:2860 sql_help.c:2897 -#: sql_help.c:3030 sql_help.c:3061 sql_help.c:3063 sql_help.c:3186 -#: sql_help.c:3217 sql_help.c:3219 +#: sql_help.c:2825 sql_help.c:2856 sql_help.c:2858 sql_help.c:2895 +#: sql_help.c:3028 sql_help.c:3059 sql_help.c:3061 sql_help.c:3184 +#: sql_help.c:3215 sql_help.c:3217 msgid "from_item" msgstr "From-Element" -#: sql_help.c:2831 sql_help.c:2901 sql_help.c:3034 sql_help.c:3190 +#: sql_help.c:2829 sql_help.c:2899 sql_help.c:3032 sql_help.c:3188 msgid "window_name" msgstr "Fenstername" -#: sql_help.c:2832 sql_help.c:2902 sql_help.c:3035 sql_help.c:3191 +#: sql_help.c:2830 sql_help.c:2900 sql_help.c:3033 sql_help.c:3189 msgid "window_definition" msgstr "Fensterdefinition" -#: sql_help.c:2833 sql_help.c:2844 sql_help.c:2866 sql_help.c:2903 -#: sql_help.c:3036 sql_help.c:3047 sql_help.c:3069 sql_help.c:3192 -#: sql_help.c:3203 sql_help.c:3225 +#: sql_help.c:2831 sql_help.c:2842 sql_help.c:2864 sql_help.c:2901 +#: sql_help.c:3034 sql_help.c:3045 sql_help.c:3067 sql_help.c:3190 +#: sql_help.c:3201 sql_help.c:3223 msgid "select" msgstr "Select" -#: sql_help.c:2840 sql_help.c:3043 sql_help.c:3199 +#: sql_help.c:2838 sql_help.c:3041 sql_help.c:3197 msgid "where from_item can be one of:" msgstr "wobei From-Element Folgendes sein kann:" -#: sql_help.c:2843 sql_help.c:2846 sql_help.c:2849 sql_help.c:2853 -#: sql_help.c:3046 sql_help.c:3049 sql_help.c:3052 sql_help.c:3056 -#: sql_help.c:3202 sql_help.c:3205 sql_help.c:3208 sql_help.c:3212 +#: sql_help.c:2841 sql_help.c:2844 sql_help.c:2847 sql_help.c:2851 +#: sql_help.c:3044 sql_help.c:3047 sql_help.c:3050 sql_help.c:3054 +#: sql_help.c:3200 sql_help.c:3203 sql_help.c:3206 sql_help.c:3210 msgid "column_alias" -msgstr " Spaltenalias" +msgstr "Spaltenalias" -#: sql_help.c:2847 sql_help.c:2864 sql_help.c:3050 sql_help.c:3067 -#: sql_help.c:3206 sql_help.c:3223 +#: sql_help.c:2845 sql_help.c:2862 sql_help.c:3048 sql_help.c:3065 +#: sql_help.c:3204 sql_help.c:3221 msgid "with_query_name" msgstr "With-Anfragename" -#: sql_help.c:2851 sql_help.c:2856 sql_help.c:3054 sql_help.c:3059 -#: sql_help.c:3210 sql_help.c:3215 +#: sql_help.c:2849 sql_help.c:2854 sql_help.c:3052 sql_help.c:3057 +#: sql_help.c:3208 sql_help.c:3213 msgid "argument" msgstr "Argument" -#: sql_help.c:2854 sql_help.c:2857 sql_help.c:3057 sql_help.c:3060 -#: sql_help.c:3213 sql_help.c:3216 +#: sql_help.c:2852 sql_help.c:2855 sql_help.c:3055 sql_help.c:3058 +#: sql_help.c:3211 sql_help.c:3214 msgid "column_definition" msgstr "Spaltendefinition" -#: sql_help.c:2859 sql_help.c:3062 sql_help.c:3218 +#: sql_help.c:2857 sql_help.c:3060 sql_help.c:3216 msgid "join_type" msgstr "Verbundtyp" -#: sql_help.c:2861 sql_help.c:3064 sql_help.c:3220 +#: sql_help.c:2859 sql_help.c:3062 sql_help.c:3218 msgid "join_condition" msgstr "Verbundbedingung" -#: sql_help.c:2862 sql_help.c:3065 sql_help.c:3221 +#: sql_help.c:2860 sql_help.c:3063 sql_help.c:3219 msgid "join_column" msgstr "Verbundspalte" -#: sql_help.c:2863 sql_help.c:3066 sql_help.c:3222 +#: sql_help.c:2861 sql_help.c:3064 sql_help.c:3220 msgid "and with_query is:" msgstr "und With-Anfrage ist:" -#: sql_help.c:2867 sql_help.c:3070 sql_help.c:3226 +#: sql_help.c:2865 sql_help.c:3068 sql_help.c:3224 msgid "insert" msgstr "insert" -#: sql_help.c:2868 sql_help.c:3071 sql_help.c:3227 +#: sql_help.c:2866 sql_help.c:3069 sql_help.c:3225 msgid "update" msgstr "update" -#: sql_help.c:2869 sql_help.c:3072 sql_help.c:3228 +#: sql_help.c:2867 sql_help.c:3070 sql_help.c:3226 msgid "delete" msgstr "delete" -#: sql_help.c:2896 +#: sql_help.c:2894 msgid "new_table" msgstr "neue_Tabelle" -#: sql_help.c:2921 +#: sql_help.c:2919 msgid "timezone" msgstr "Zeitzone" -#: sql_help.c:3111 +#: sql_help.c:3109 msgid "from_list" msgstr "From-Liste" -#: sql_help.c:3142 +#: sql_help.c:3140 msgid "sort_expression" msgstr "Sortierausdruck" diff --git a/src/bin/psql/po/es.po b/src/bin/psql/po/es.po index e9ec8a8d7e..7d7c953a8c 100644 --- a/src/bin/psql/po/es.po +++ b/src/bin/psql/po/es.po @@ -1,184 +1,232 @@ # spanish translation of psql. # -# Copyright (C) 2003-2010 PostgreSQL Global Development Group +# Copyright (C) 2003-2012 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # -# Alvaro Herrera, , 2003-2010 +# Alvaro Herrera, , 2003-2012 # Diego A. Gil , 2005 # -# pgtranslation Id: psql.po,v 1.22 2010/09/01 21:52:03 alvherre Exp $ -# msgid "" msgstr "" -"Project-Id-Version: psql (PostgreSQL 9.0)\n" +"Project-Id-Version: psql (PostgreSQL 9.1)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-09-01 18:03+0000\n" -"PO-Revision-Date: 2010-09-01 17:17-0400\n" +"POT-Creation-Date: 2013-08-26 19:44+0000\n" +"PO-Revision-Date: 2013-06-05 01:24-0400\n" "Last-Translator: Álvaro Herrera \n" "Language-Team: PgSQL Español \n" +"Language: es\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: command.c:112 +#: command.c:113 #, c-format msgid "Invalid command \\%s. Try \\? for help.\n" msgstr "Orden \\%s no válida. Use \\? para obtener ayuda.\n" -#: command.c:114 +#: command.c:115 #, c-format msgid "invalid command \\%s\n" msgstr "orden \\%s no válida\n" -#: command.c:125 +#: command.c:126 #, c-format msgid "\\%s: extra argument \"%s\" ignored\n" msgstr "\\%s: argumento extra «%s» ignorado\n" -#: command.c:267 +#: command.c:268 #, c-format msgid "could not get home directory: %s\n" msgstr "No se ha podido obtener directorio home: %s\n" -#: command.c:283 +#: command.c:284 #, c-format msgid "\\%s: could not change directory to \"%s\": %s\n" msgstr "\\%s: no se pudo cambiar directorio a «%s»: %s\n" -#: command.c:316 common.c:940 +#: command.c:305 common.c:493 common.c:773 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "No está conectado a una base de datos.\n" + +#: command.c:312 +#, c-format +msgid "" +"You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at " +"port \"%s\".\n" +msgstr "" +"Está conectado a la base de datos «%s» como el usuario «%s» a través del " +"socket en «%s» port «%s».\n" + +#: command.c:315 +#, c-format +msgid "" +"You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port " +"\"%s\".\n" +msgstr "" +"Está conectado a la base de datos «%s» como el usuario «%s» en el servidor " +"«%s» port «%s».\n" + +#: command.c:339 common.c:940 #, c-format msgid "Time: %.3f ms\n" msgstr "Duración: %.3f ms\n" -#: command.c:485 command.c:513 command.c:1064 +#: command.c:524 command.c:594 command.c:1308 msgid "no query buffer\n" msgstr "no hay búfer de consulta\n" -#: command.c:555 +#: command.c:557 command.c:2530 +#, c-format +msgid "invalid line number: %s\n" +msgstr "número de línea no válido: %s\n" + +#: command.c:588 +#, c-format +msgid "The server (version %d.%d) does not support editing function source.\n" +msgstr "" +"El servidor (versión %d.%d) no soporta la edición del código fuente de " +"funciones.\n" + +#: command.c:668 msgid "No changes" msgstr "Sin cambios" -#: command.c:609 +#: command.c:722 #, c-format msgid "%s: invalid encoding name or conversion procedure not found\n" msgstr "" "%s: nombre de codificación no válido o procedimiento de conversión\n" "no encontrado\n" -#: command.c:688 command.c:722 command.c:736 command.c:753 command.c:857 -#: command.c:907 command.c:1044 command.c:1075 +#: command.c:801 command.c:835 command.c:849 command.c:866 command.c:970 +#: command.c:1020 command.c:1288 command.c:1319 #, c-format msgid "\\%s: missing required argument\n" msgstr "\\%s: falta argumento requerido\n" -#: command.c:785 +#: command.c:898 msgid "Query buffer is empty." msgstr "El búfer de consulta está vacío." -#: command.c:795 +#: command.c:908 msgid "Enter new password: " msgstr "Ingrese la nueva contraseña: " -#: command.c:796 +#: command.c:909 msgid "Enter it again: " msgstr "Ingrésela nuevamente: " -#: command.c:800 +#: command.c:913 #, c-format msgid "Passwords didn't match.\n" msgstr "Las constraseñas no coinciden.\n" -#: command.c:818 +#: command.c:931 #, c-format msgid "Password encryption failed.\n" msgstr "El cifrado de la contraseña falló.\n" -#: command.c:886 command.c:987 command.c:1049 +#: command.c:999 command.c:1111 command.c:1293 #, c-format msgid "\\%s: error\n" msgstr "\\%s: error\n" -#: command.c:927 +#: command.c:1040 msgid "Query buffer reset (cleared)." msgstr "El búfer de consulta ha sido reiniciado (limpiado)." -#: command.c:940 +#: command.c:1064 #, c-format msgid "Wrote history to file \"%s/%s\".\n" msgstr "Se escribió la historia en el archivo «%s/%s».\n" -#: command.c:978 common.c:52 common.c:66 input.c:209 mainloop.c:72 -#: mainloop.c:234 print.c:137 print.c:151 +#: command.c:1102 common.c:52 common.c:66 common.c:90 input.c:209 +#: mainloop.c:72 mainloop.c:234 print.c:137 print.c:151 #, c-format msgid "out of memory\n" msgstr "memoria agotada\n" -#: command.c:1029 +#: command.c:1132 +#, c-format +msgid "The server (version %d.%d) does not support showing function source.\n" +msgstr "" +"El servidor (versión %d.%d) no soporta el despliegue del código fuente de " +"funciones.\n" + +#: command.c:1138 +msgid "function name is required\n" +msgstr "el nombre de la función es requerido\n" + +#: command.c:1273 msgid "Timing is on." msgstr "El despliegue de duración está activado." -#: command.c:1031 +#: command.c:1275 msgid "Timing is off." msgstr "El despliegue de duración está desactivado." -#: command.c:1092 command.c:1112 command.c:1633 command.c:1640 command.c:1649 -#: command.c:1659 command.c:1668 command.c:1682 command.c:1699 command.c:1737 +#: command.c:1336 command.c:1356 command.c:1918 command.c:1925 command.c:1934 +#: command.c:1944 command.c:1953 command.c:1967 command.c:1984 command.c:2022 #: common.c:137 copy.c:283 copy.c:361 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" -#: command.c:1194 startup.c:159 +#: command.c:1438 startup.c:159 msgid "Password: " msgstr "Contraseña: " -#: command.c:1201 startup.c:162 startup.c:164 +#: command.c:1445 startup.c:162 startup.c:164 #, c-format msgid "Password for user %s: " msgstr "Contraseña para usuario %s: " -#: command.c:1318 command.c:2207 common.c:183 common.c:460 common.c:525 -#: common.c:816 common.c:841 common.c:925 copy.c:432 copy.c:477 copy.c:606 +#: command.c:1564 command.c:2564 common.c:183 common.c:460 common.c:525 +#: common.c:816 common.c:841 common.c:925 copy.c:432 copy.c:477 copy.c:607 #, c-format msgid "%s" msgstr "%s" -#: command.c:1322 +#: command.c:1568 msgid "Previous connection kept\n" msgstr "Se ha mantenido la conexión anterior\n" -#: command.c:1326 +#: command.c:1572 #, c-format msgid "\\connect: %s" msgstr "\\connect: %s" -#: command.c:1350 -#, c-format -msgid "You are now connected to database \"%s\"" -msgstr "Ahora está conectado a la base de datos «%s»" - -#: command.c:1353 +#: command.c:1605 #, c-format -msgid " on host \"%s\"" -msgstr " en el servidor «%s»" +msgid "" +"You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" " +"at port \"%s\".\n" +msgstr "" +"Ahora está conectado a la base de datos «%s» como el usuario «%s» a través " +"del socket en «%s» port «%s».\n" -#: command.c:1356 +#: command.c:1608 #, c-format -msgid " at port \"%s\"" -msgstr " en el puerto «%s»" +msgid "" +"You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at " +"port \"%s\".\n" +msgstr "" +"Ahora está conectado a la base de datos «%s» como el usuario «%s» en el " +"servidor «%s» port «%s».\n" -#: command.c:1359 +#: command.c:1612 #, c-format -msgid " as user \"%s\"" -msgstr " como el usuario «%s»" +msgid "You are now connected to database \"%s\" as user \"%s\".\n" +msgstr "Ahora está conectado a la base de datos «%s» con el usuario «%s».\n" -#: command.c:1394 +#: command.c:1646 #, c-format msgid "%s (%s, server %s)\n" msgstr "%s (%s, servidor %s)\n" -#: command.c:1402 +#: command.c:1654 #, c-format msgid "" "WARNING: %s version %d.%d, server version %d.%d.\n" @@ -187,17 +235,17 @@ msgstr "" "ADVERTENCIA: %s versión %d.%d, servidor versión %d.%d.\n" " Algunas características de psql pueden no funcionar.\n" -#: command.c:1432 +#: command.c:1684 #, c-format msgid "SSL connection (cipher: %s, bits: %i)\n" msgstr "conexión SSL (cifrado: %s, bits: %i)\n" -#: command.c:1442 +#: command.c:1694 #, c-format msgid "SSL connection (unknown cipher)\n" msgstr "conexión SSL (cifrado desconocido)\n" -#: command.c:1463 +#: command.c:1715 #, c-format msgid "" "WARNING: Console code page (%u) differs from Windows code page (%u)\n" @@ -210,26 +258,34 @@ msgstr "" " Vea la página de referencia de psql «Notes for Windows users»\n" " para obtener más detalles.\n" -#: command.c:1552 +#: command.c:1799 +msgid "" +"environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a " +"line number\n" +msgstr "" +"la variable de ambiente PSQL_EDITOR_LINENUMBER_SWITCH debe estar definida " +"para poder especificar un número de línea\n" + +#: command.c:1836 #, c-format msgid "could not start editor \"%s\"\n" msgstr "no se pudo iniciar el editor «%s»\n" -#: command.c:1554 +#: command.c:1838 msgid "could not start /bin/sh\n" msgstr "no se pudo iniciar /bin/sh\n" -#: command.c:1591 +#: command.c:1876 #, c-format -msgid "cannot locate temporary directory: %s" -msgstr "no se encontró el directorio temporal: %s" +msgid "could not locate temporary directory: %s\n" +msgstr "no se pudo ubicar el directorio temporal: %s\n" -#: command.c:1618 +#: command.c:1903 #, c-format msgid "could not open temporary file \"%s\": %s\n" msgstr "no se pudo abrir archivo temporal «%s»: %s\n" -#: command.c:1839 +#: command.c:2133 msgid "" "\\pset: allowed formats are unaligned, aligned, wrapped, html, latex, troff-" "ms\n" @@ -237,122 +293,122 @@ msgstr "" "\\pset: formatos permitidos son unaligned, aligned, wrapped, html, latex, " "troff-ms\n" -#: command.c:1844 +#: command.c:2138 #, c-format msgid "Output format is %s.\n" msgstr "El formato de salida es %s.\n" -#: command.c:1860 +#: command.c:2154 msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" msgstr "\\pset: estilos de línea permitidos son ascii, old-ascii, unicode\n" -#: command.c:1865 +#: command.c:2159 #, c-format msgid "Line style is %s.\n" msgstr "El estilo de línea es %s.\n" -#: command.c:1876 +#: command.c:2170 #, c-format msgid "Border style is %d.\n" msgstr "El estilo de borde es %d.\n" -#: command.c:1888 +#: command.c:2182 #, c-format msgid "Expanded display is on.\n" msgstr "Se ha activado el despliegue expandido.\n" -#: command.c:1889 +#: command.c:2183 #, c-format msgid "Expanded display is off.\n" msgstr "Se ha desactivado el despliegue expandido.\n" -#: command.c:1902 +#: command.c:2196 msgid "Showing locale-adjusted numeric output." msgstr "Mostrando salida numérica ajustada localmente" -#: command.c:1904 +#: command.c:2198 msgid "Locale-adjusted numeric output is off." msgstr "La salida numérica ajustada localmente está deshabilitada. " -#: command.c:1917 +#: command.c:2211 #, c-format msgid "Null display is \"%s\".\n" msgstr "Despliegue de nulos es «%s».\n" -#: command.c:1929 +#: command.c:2223 #, c-format msgid "Field separator is \"%s\".\n" msgstr "El separador de campos es «%s».\n" -#: command.c:1943 +#: command.c:2237 #, c-format msgid "Record separator is ." msgstr "El separador de filas es ." -#: command.c:1945 +#: command.c:2239 #, c-format msgid "Record separator is \"%s\".\n" msgstr "El separador de filas es «%s».\n" -#: command.c:1959 +#: command.c:2253 msgid "Showing only tuples." msgstr "Mostrando sólo filas." -#: command.c:1961 +#: command.c:2255 msgid "Tuples only is off." msgstr "Mostrar sólo filas está desactivado." -#: command.c:1977 +#: command.c:2271 #, c-format msgid "Title is \"%s\".\n" msgstr "El título es «%s».\n" -#: command.c:1979 +#: command.c:2273 #, c-format msgid "Title is unset.\n" msgstr "El título ha sido indefinido.\n" -#: command.c:1995 +#: command.c:2289 #, c-format msgid "Table attribute is \"%s\".\n" msgstr "Los atributos de tabla son «%s».\n" -#: command.c:1997 +#: command.c:2291 #, c-format msgid "Table attributes unset.\n" msgstr "Los atributos de tabla han sido indefinidos.\n" -#: command.c:2018 +#: command.c:2312 msgid "Pager is used for long output." msgstr "El paginador se usará para salida larga." -#: command.c:2020 +#: command.c:2314 msgid "Pager is always used." msgstr "El paginador se usará siempre." -#: command.c:2022 +#: command.c:2316 msgid "Pager usage is off." msgstr "El paginador no se usará." -#: command.c:2036 +#: command.c:2330 msgid "Default footer is on." msgstr "El pie por omisión está activo." -#: command.c:2038 +#: command.c:2332 msgid "Default footer is off." msgstr "El pie de página por omisión está desactivado." -#: command.c:2049 +#: command.c:2343 #, c-format msgid "Target width for \"wrapped\" format is %d.\n" msgstr "El ancho para el formato «wrapped» es %d.\n" -#: command.c:2054 +#: command.c:2348 #, c-format msgid "\\pset: unknown option: %s\n" msgstr "\\pset: opción desconocida: %s\n" -#: command.c:2108 +#: command.c:2402 msgid "\\!: failed\n" msgstr "\\!: falló\n" @@ -361,10 +417,6 @@ msgstr "\\!: falló\n" msgid "%s: pg_strdup: cannot duplicate null pointer (internal error)\n" msgstr "%s: pg_strdup: no se puede duplicar puntero nulo (error interno)\n" -#: common.c:90 -msgid "out of memory" -msgstr "memoria agotada" - #: common.c:343 msgid "connection to server was lost\n" msgstr "se ha perdido la conexión al servidor\n" @@ -381,10 +433,6 @@ msgstr "falló.\n" msgid "Succeeded.\n" msgstr "con éxito.\n" -#: common.c:493 common.c:773 -msgid "You are currently not connected to a database.\n" -msgstr "No está conectado a una base de datos.\n" - #: common.c:499 common.c:506 common.c:799 #, c-format msgid "" @@ -491,36 +539,36 @@ msgstr "" "Ingrese los datos a ser copiados seguidos de un fin de línea.\n" "Termine con un backslash y un punto." -#: copy.c:599 +#: copy.c:600 msgid "aborted because of read failure" msgstr "se abortó por un error de lectura" -#: help.c:52 +#: help.c:48 msgid "on" msgstr "activado" -#: help.c:52 +#: help.c:48 msgid "off" msgstr "desactivado" -#: help.c:74 +#: help.c:70 #, c-format msgid "could not get current user name: %s\n" msgstr "no se pudo obtener el nombre de usuario actual: %s\n" -#: help.c:86 +#: help.c:82 #, c-format msgid "" "psql is the PostgreSQL interactive terminal.\n" "\n" msgstr "psql es el terminal interactivo de PostgreSQL.\n" -#: help.c:87 +#: help.c:83 #, c-format msgid "Usage:\n" msgstr "Empleo:\n" -#: help.c:88 +#: help.c:84 #, c-format msgid "" " psql [OPTION]... [DBNAME [USERNAME]]\n" @@ -529,12 +577,12 @@ msgstr "" " psql [OPCIONES]... [BASE-DE-DATOS [USUARIO]]\n" "\n" -#: help.c:90 +#: help.c:86 #, c-format msgid "General options:\n" msgstr "Opciones generales:\n" -#: help.c:95 +#: help.c:91 #, c-format msgid "" " -c, --command=COMMAND run only single command (SQL or internal) and " @@ -542,7 +590,7 @@ msgid "" msgstr "" " -c, --command=ORDEN ejecutar sólo una orden (SQL o interna) y salir\n" -#: help.c:96 +#: help.c:92 #, c-format msgid "" " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" @@ -550,17 +598,17 @@ msgstr "" " -d, --dbname=NOMBRE nombre de base de datos a conectarse\n" " (por omisión: «%s»)\n" -#: help.c:97 +#: help.c:93 #, c-format msgid " -f, --file=FILENAME execute commands from file, then exit\n" msgstr " -f, --file=ARCHIVO ejecutar órdenes desde archivo, luego salir\n" -#: help.c:98 +#: help.c:94 #, c-format msgid " -l, --list list available databases, then exit\n" msgstr " -l, --list listar bases de datos, luego salir\n" -#: help.c:99 +#: help.c:95 #, c-format msgid "" " -v, --set=, --variable=NAME=VALUE\n" @@ -569,12 +617,12 @@ msgstr "" " -v, --set=, --variable=NOMBRE=VALOR\n" " definir variable de psql NOMBRE a VALOR\n" -#: help.c:101 +#: help.c:97 #, c-format msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" msgstr " -X, --no-psqlrc no leer archivo de configuración (~/.psqlrc)\n" -#: help.c:102 +#: help.c:98 #, c-format msgid "" " -1 (\"one\"), --single-transaction\n" @@ -583,17 +631,17 @@ msgstr "" " -1 («uno»), --single-transaction\n" " ejecuta archivo de órdenes en una única transacción\n" -#: help.c:104 +#: help.c:100 #, c-format msgid " --help show this help, then exit\n" msgstr " --help muestra esta ayuda y termina\n" -#: help.c:105 +#: help.c:101 #, c-format msgid " --version output version information, then exit\n" msgstr " --version muestra información de la versión y termina\n" -#: help.c:107 +#: help.c:103 #, c-format msgid "" "\n" @@ -602,54 +650,54 @@ msgstr "" "\n" "Opciones de entrada y salida:\n" -#: help.c:108 +#: help.c:104 #, c-format msgid " -a, --echo-all echo all input from script\n" msgstr " -a, --echo-all mostrar las órdenes del script\n" -#: help.c:109 +#: help.c:105 #, c-format msgid " -e, --echo-queries echo commands sent to server\n" msgstr " -e, --echo-queries mostrar órdenes enviadas al servidor\n" -#: help.c:110 +#: help.c:106 #, c-format msgid "" " -E, --echo-hidden display queries that internal commands generate\n" msgstr "" " -E, --echo-hidden mostrar consultas generadas por órdenes internas\n" -#: help.c:111 +#: help.c:107 #, c-format msgid " -L, --log-file=FILENAME send session log to file\n" msgstr " -L, --log-file=ARCH envía el registro de la sesión a un archivo\n" -#: help.c:112 +#: help.c:108 #, c-format msgid "" " -n, --no-readline disable enhanced command line editing (readline)\n" msgstr "" " -n, --no-readline deshabilitar edición de línea de órdenes (readline)\n" -#: help.c:113 +#: help.c:109 #, c-format msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" msgstr "" " -o, --output=ARCHIVO enviar resultados de consultas a archivo (u |orden)\n" -#: help.c:114 +#: help.c:110 #, c-format msgid "" " -q, --quiet run quietly (no messages, only query output)\n" msgstr "" " -q, --quiet modo silencioso (sin mensajes, sólo resultados)\n" -#: help.c:115 +#: help.c:111 #, c-format msgid " -s, --single-step single-step mode (confirm each query)\n" msgstr " -s, --single-step modo paso a paso (confirmar cada consulta)\n" -#: help.c:116 +#: help.c:112 #, c-format msgid "" " -S, --single-line single-line mode (end of line terminates SQL " @@ -657,7 +705,7 @@ msgid "" msgstr "" " -S, --single-line modo de líneas (fin de línea termina la orden SQL)\n" -#: help.c:118 +#: help.c:114 #, c-format msgid "" "\n" @@ -666,12 +714,12 @@ msgstr "" "\n" "Opciones de formato de salida:\n" -#: help.c:119 +#: help.c:115 #, c-format msgid " -A, --no-align unaligned table output mode\n" msgstr " -A, --no-align modo de salida desalineado\n" -#: help.c:120 +#: help.c:116 #, c-format msgid "" " -F, --field-separator=STRING\n" @@ -680,12 +728,12 @@ msgstr "" " -F, --field-separator=CADENA\n" " definir separador de columnas (por omisión: «%s»)\n" -#: help.c:123 +#: help.c:119 #, c-format msgid " -H, --html HTML table output mode\n" msgstr " -H, --html modo de salida en tablas HTML\n" -#: help.c:124 +#: help.c:120 #, c-format msgid "" " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset " @@ -694,7 +742,7 @@ msgstr "" " -P, --pset=VAR[=ARG] definir opción de impresión VAR en ARG (ver orden " "\\pset)\n" -#: help.c:125 +#: help.c:121 #, c-format msgid "" " -R, --record-separator=STRING\n" @@ -704,12 +752,12 @@ msgstr "" " definir separador de filas (por omisión: salto de " "línea)\n" -#: help.c:127 +#: help.c:123 #, c-format msgid " -t, --tuples-only print rows only\n" msgstr " -t, --tuples-only sólo muestra registros\n" -#: help.c:128 +#: help.c:124 #, c-format msgid "" " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, " @@ -719,12 +767,12 @@ msgstr "" " definir atributos de marcas de tabla HTML (ancho, " "borde)\n" -#: help.c:129 +#: help.c:125 #, c-format msgid " -x, --expanded turn on expanded table output\n" msgstr " -x, --expanded activar modo expandido de salida de tablas\n" -#: help.c:131 +#: help.c:127 #, c-format msgid "" "\n" @@ -733,7 +781,7 @@ msgstr "" "\n" "Opciones de la conexión:\n" -#: help.c:134 +#: help.c:130 #, c-format msgid "" " -h, --host=HOSTNAME database server host or socket directory " @@ -742,28 +790,28 @@ msgstr "" " -h, --host=NOMBRE nombre del anfitrión o directorio de socket\n" " (por omisión: «%s»)\n" -#: help.c:135 +#: help.c:131 msgid "local socket" msgstr "socket local" -#: help.c:138 +#: help.c:134 #, c-format msgid " -p, --port=PORT database server port (default: \"%s\")\n" msgstr " -p, --port=PUERTO puerto del servidor (por omisión: «%s»)\n" -#: help.c:144 +#: help.c:140 #, c-format msgid " -U, --username=USERNAME database user name (default: \"%s\")\n" msgstr "" " -U, --username=NOMBRE\n" " nombre de usuario (por omisión: «%s»)\n" -#: help.c:145 +#: help.c:141 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password nunca pedir contraseña\n" -#: help.c:146 +#: help.c:142 #, c-format msgid "" " -W, --password force password prompt (should happen " @@ -772,7 +820,7 @@ msgstr "" " -W, --password forzar petición de contraseña\n" " (debería ser automático)\n" -#: help.c:148 +#: help.c:144 #, c-format msgid "" "\n" @@ -788,24 +836,24 @@ msgstr "" "en la documentación de PostgreSQL.\n" "\n" -#: help.c:151 +#: help.c:147 #, c-format msgid "Report bugs to .\n" msgstr "Reporte errores a .\n" -#: help.c:169 +#: help.c:170 #, c-format msgid "General\n" msgstr "General\n" -#: help.c:170 +#: help.c:171 #, c-format msgid "" " \\copyright show PostgreSQL usage and distribution terms\n" msgstr "" " \\copyright mostrar términos de uso y distribución de PostgreSQL\n" -#: help.c:171 +#: help.c:172 #, c-format msgid "" " \\g [FILE] or ; execute query (and send results to file or |pipe)\n" @@ -813,7 +861,7 @@ msgstr "" " \\g [ARCH] o ; enviar búfer de consulta al servidor\n" " (y resultados a archivo u |orden)\n" -#: help.c:172 +#: help.c:173 #, c-format msgid "" " \\h [NAME] help on syntax of SQL commands, * for all " @@ -822,59 +870,61 @@ msgstr "" " \\h [NOMBRE] mostrar ayuda de sintaxis de órdenes SQL;\n" " use «*» para todas las órdenes\n" -#: help.c:173 +#: help.c:174 #, c-format msgid " \\q quit psql\n" msgstr " \\q salir de psql\n" -#: help.c:176 +#: help.c:177 #, c-format msgid "Query Buffer\n" msgstr "Búfer de consulta\n" -#: help.c:177 +#: help.c:178 #, c-format msgid "" -" \\e [FILE] edit the query buffer (or file) with external " +" \\e [FILE] [LINE] edit the query buffer (or file) with external " "editor\n" msgstr "" -" \\e [ARCHIVO] editar el búfer de consulta (o archivo) con editor " +" \\e [ARCHIVO] [LÍNEA]\n" +" editar el búfer de consulta (o archivo) con editor " "externo\n" -#: help.c:178 +#: help.c:179 #, c-format msgid "" -" \\ef [FUNCNAME] edit function definition with external editor\n" +" \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" msgstr "" -" \\ef [FUNCIÓN] editar una función con editor externo\n" +" \\ef [NOMBRE-FUNCIÓN [LÍNEA]]\n" +" editar una función con editor externo\n" -#: help.c:179 +#: help.c:180 #, c-format msgid " \\p show the contents of the query buffer\n" msgstr " \\p mostrar el contenido del búfer de consulta\n" -#: help.c:180 +#: help.c:181 #, c-format msgid " \\r reset (clear) the query buffer\n" msgstr " \\r reiniciar (limpiar) el búfer de consulta\n" -#: help.c:182 +#: help.c:183 #, c-format msgid " \\s [FILE] display history or save it to file\n" msgstr "" " \\s [ARCHIVO] mostrar historial de órdenes o guardarlo en archivo\n" -#: help.c:184 +#: help.c:185 #, c-format msgid " \\w FILE write query buffer to file\n" msgstr " \\w ARCHIVO escribir búfer de consulta a archivo\n" -#: help.c:187 +#: help.c:188 #, c-format msgid "Input/Output\n" msgstr "Entrada/Salida\n" -#: help.c:188 +#: help.c:189 #, c-format msgid "" " \\copy ... perform SQL COPY with data stream to the client " @@ -882,150 +932,167 @@ msgid "" msgstr "" " \\copy ... ejecutar orden SQL COPY con flujo de datos al cliente\n" -#: help.c:189 +#: help.c:190 #, c-format msgid " \\echo [STRING] write string to standard output\n" msgstr " \\echo [CADENA] escribir cadena a salida estándar\n" -#: help.c:190 +#: help.c:191 #, c-format msgid " \\i FILE execute commands from file\n" msgstr " \\i ARCHIVO ejecutar órdenes desde archivo\n" -#: help.c:191 +#: help.c:192 #, c-format msgid " \\o [FILE] send all query results to file or |pipe\n" msgstr " \\o [ARCHIVO] enviar resultados de consultas a archivo u |orden\n" -#: help.c:192 +#: help.c:193 #, c-format msgid "" " \\qecho [STRING] write string to query output stream (see \\o)\n" msgstr " \\qecho [CADENA] escribir cadena a salida de consultas (ver \\o)\n" -#: help.c:195 +#: help.c:196 #, c-format msgid "Informational\n" msgstr "Informativo\n" -#: help.c:196 +#: help.c:197 #, c-format msgid " (options: S = show system objects, + = additional detail)\n" msgstr "" " (opciones: S = desplegar objectos de sistema, + = agregar más detalle)\n" -#: help.c:197 +#: help.c:198 #, c-format msgid " \\d[S+] list tables, views, and sequences\n" msgstr " \\d[S+] listar tablas, vistas y secuencias\n" -#: help.c:198 +#: help.c:199 #, c-format msgid " \\d[S+] NAME describe table, view, sequence, or index\n" msgstr " \\d[S+] NOMBRE describir tabla, índice, secuencia o vista\n" -#: help.c:199 +#: help.c:200 #, c-format msgid " \\da[S] [PATTERN] list aggregates\n" msgstr " \\da[S] [PATRÓN] listar funciones de agregación\n" -#: help.c:200 +#: help.c:201 #, c-format msgid " \\db[+] [PATTERN] list tablespaces\n" msgstr " \\db[+] [PATRÓN] listar tablespaces\n" -#: help.c:201 +#: help.c:202 #, c-format msgid " \\dc[S] [PATTERN] list conversions\n" msgstr " \\dc[S] [PATRÓN] listar conversiones\n" -#: help.c:202 +#: help.c:203 #, c-format msgid " \\dC [PATTERN] list casts\n" msgstr " \\dC [PATRÓN] listar conversiones de tipo (casts)\n" -#: help.c:203 +#: help.c:204 #, c-format msgid " \\dd[S] [PATTERN] show comments on objects\n" msgstr " \\dd[S] [PATRÓN] listar comentarios de objetos\n" -#: help.c:204 +#: help.c:205 #, c-format msgid " \\ddp [PATTERN] list default privileges\n" msgstr " \\ddp [PATRÓN] listar privilegios por omisión\n" -#: help.c:205 +#: help.c:206 #, c-format msgid " \\dD[S] [PATTERN] list domains\n" msgstr " \\dD[S] [PATRÓN] listar dominios\n" -#: help.c:206 +#: help.c:207 +#, c-format +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [PATRÓN] listar tablas foráneas\n" + +#: help.c:208 #, c-format msgid " \\des[+] [PATTERN] list foreign servers\n" msgstr " \\des[+] [PATRÓN] listar servidores foráneos\n" -#: help.c:207 +#: help.c:209 #, c-format msgid " \\deu[+] [PATTERN] list user mappings\n" msgstr " \\deu[+] [PATRÓN] listar mapeos de usuario\n" -#: help.c:208 +#: help.c:210 #, c-format msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" msgstr " \\dew[+] [PATRÓN] listar conectores de datos externos\n" -#: help.c:209 +#: help.c:211 #, c-format msgid "" " \\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions\n" -msgstr " \\df[antw][S+] [PATRÓN] listar funciones [sólo ag./normal/trigger/ventana]\n" +msgstr "" +" \\df[antw][S+] [PATRÓN] listar funciones [sólo ag./normal/trigger/" +"ventana]\n" -#: help.c:210 +#: help.c:212 #, c-format msgid " \\dF[+] [PATTERN] list text search configurations\n" msgstr " \\dF[+] [PATRÓN] listar configuraciones de búsqueda en texto\n" -#: help.c:211 +#: help.c:213 #, c-format msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" msgstr " \\dFd[+] [PATRÓN] listar diccionarios de búsqueda en texto\n" -#: help.c:212 +#: help.c:214 #, c-format msgid " \\dFp[+] [PATTERN] list text search parsers\n" msgstr " \\dFp[+] [PATRÓN] listar analizadores (parsers) de búsq. en texto\n" -#: help.c:213 +#: help.c:215 #, c-format msgid " \\dFt[+] [PATTERN] list text search templates\n" msgstr " \\dFt[+] [PATRÓN] listar plantillas de búsqueda en texto\n" -#: help.c:214 +#: help.c:216 #, c-format -msgid " \\dg[+] [PATTERN] list roles (groups)\n" -msgstr " \\dg[+] [PATRÓN] listar roles (grupos)\n" +msgid " \\dg[+] [PATTERN] list roles\n" +msgstr " \\dg[+] [PATRÓN] listar roles\n" -#: help.c:215 +#: help.c:217 #, c-format msgid " \\di[S+] [PATTERN] list indexes\n" msgstr " \\di[S+] [PATRÓN] listar índices\n" -#: help.c:216 +#: help.c:218 #, c-format msgid " \\dl list large objects, same as \\lo_list\n" msgstr " \\dl listar objetos grandes, lo mismo que \\lo_list\n" -#: help.c:217 +#: help.c:219 #, c-format -msgid " \\dn[+] [PATTERN] list schemas\n" -msgstr " \\dn[+] [PATRÓN] listar esquemas\n" +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [PATRÓN] listar lenguajes procedurales\n" -#: help.c:218 +#: help.c:220 +#, c-format +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [PATRÓN] listar esquemas\n" + +#: help.c:221 #, c-format msgid " \\do[S] [PATTERN] list operators\n" msgstr " \\do[S] [PATRÓN] listar operadores\n" -#: help.c:219 +#: help.c:222 +#, c-format +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S] [PATRÓN] listar ordenamientos (collations)\n" + +#: help.c:223 #, c-format msgid "" " \\dp [PATTERN] list table, view, and sequence access privileges\n" @@ -1033,64 +1100,79 @@ msgstr "" " \\dp [PATRÓN] listar privilegios de acceso a tablas, vistas y " "secuencias\n" -#: help.c:220 +#: help.c:224 #, c-format msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n" msgstr " \\drds [PAT1 [PAT2]] listar parámetros de rol por base de datos\n" -#: help.c:221 +#: help.c:225 #, c-format msgid " \\ds[S+] [PATTERN] list sequences\n" msgstr " \\ds[S+] [PATRÓN] listar secuencias\n" -#: help.c:222 +#: help.c:226 #, c-format msgid " \\dt[S+] [PATTERN] list tables\n" msgstr " \\dt[S+] [PATRÓN] listar tablas\n" -#: help.c:223 +#: help.c:227 #, c-format msgid " \\dT[S+] [PATTERN] list data types\n" msgstr " \\dT[S+] [PATRÓN] listar tipos de dato\n" -#: help.c:224 +#: help.c:228 #, c-format -msgid " \\du[+] [PATTERN] list roles (users)\n" -msgstr " \\du[+] [PATRÓN] listar roles (usuarios)\n" +msgid " \\du[+] [PATTERN] list roles\n" +msgstr " \\du[+] [PATRÓN] listar roles\n" -#: help.c:225 +#: help.c:229 #, c-format msgid " \\dv[S+] [PATTERN] list views\n" msgstr " \\dv[S+] [PATRÓN] listar vistas\n" -#: help.c:226 +#: help.c:230 +#, c-format +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [PATRÓN] listar tablas foráneas\n" + +#: help.c:231 +#, c-format +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [PATRÓN] listar extensiones\n" + +#: help.c:232 #, c-format msgid " \\l[+] list all databases\n" msgstr " \\l[+] listar bases de datos\n" -#: help.c:227 +#: help.c:233 +#, c-format +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] FUNCIÓN mostrar la definición de una función\n" + +#: help.c:234 #, c-format msgid " \\z [PATTERN] same as \\dp\n" msgstr " \\z [PATRÓN] lo mismo que \\dp\n" -#: help.c:230 +#: help.c:237 #, c-format msgid "Formatting\n" msgstr "Formato\n" -#: help.c:231 +#: help.c:238 #, c-format msgid "" " \\a toggle between unaligned and aligned output mode\n" msgstr "" " \\a cambiar entre modo de salida alineado y sin alinear\n" -#: help.c:232 +#: help.c:239 #, c-format msgid " \\C [STRING] set table title, or unset if none\n" msgstr " \\C [CADENA] definir título de tabla, o indefinir si es vacío\n" -#: help.c:233 +#: help.c:240 #, c-format msgid "" " \\f [STRING] show or set field separator for unaligned query " @@ -1099,12 +1181,12 @@ msgstr "" " \\f [CADENA] mostrar o definir separador de campos para\n" " modo de salida sin alinear\n" -#: help.c:234 +#: help.c:241 #, c-format msgid " \\H toggle HTML output mode (currently %s)\n" msgstr " \\H cambiar modo de salida HTML (actualmente %s)\n" -#: help.c:236 +#: help.c:243 #, c-format msgid "" " \\pset NAME [VALUE] set table output option\n" @@ -1119,12 +1201,12 @@ msgstr "" " numericlocale,recordsep,tuples_only,title,tableattr," "pager})\n" -#: help.c:239 +#: help.c:246 #, c-format msgid " \\t [on|off] show only rows (currently %s)\n" msgstr " \\t [on|off] mostrar sólo filas (actualmente %s)\n" -#: help.c:241 +#: help.c:248 #, c-format msgid "" " \\T [STRING] set HTML
tag attributes, or unset if none\n" @@ -1132,17 +1214,17 @@ msgstr "" " \\T [CADENA] definir atributos HTML de
, o indefinir si es " "vacío\n" -#: help.c:242 +#: help.c:249 #, c-format msgid " \\x [on|off] toggle expanded output (currently %s)\n" msgstr " \\x [on|off] cambiar modo expandido (actualmente %s)\n" -#: help.c:246 +#: help.c:253 #, c-format msgid "Connection\n" msgstr "Conexiones\n" -#: help.c:247 +#: help.c:254 #, c-format msgid "" " \\c[onnect] [DBNAME|- USER|- HOST|- PORT|-]\n" @@ -1151,38 +1233,44 @@ msgstr "" " \\c[onnect] [BASE-DE-DATOS|- USUARIO|- ANFITRIÓN|- PUERTO|-]\n" " conectar a una nueva base de datos (actual: «%s»)\n" -#: help.c:250 +#: help.c:257 #, c-format msgid " \\encoding [ENCODING] show or set client encoding\n" msgstr "" " \\encoding [CODIFICACIÓN]\n" " mostrar o definir codificación del cliente\n" -#: help.c:251 +#: help.c:258 #, c-format msgid " \\password [USERNAME] securely change the password for a user\n" msgstr "" " \\password [USUARIO]\n" " cambiar la contraseña para un usuario en forma segura\n" -#: help.c:254 +#: help.c:259 +#, c-format +msgid "" +" \\conninfo display information about current connection\n" +msgstr " \\conninfo despliega la información sobre la conexión actual\n" + +#: help.c:262 #, c-format msgid "Operating System\n" msgstr "Sistema Operativo\n" -#: help.c:255 +#: help.c:263 #, c-format msgid " \\cd [DIR] change the current working directory\n" msgstr " \\cd [DIR] cambiar el directorio de trabajo actual\n" -#: help.c:256 +#: help.c:264 #, c-format msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" msgstr "" " \\timing [on|off] mostrar tiempo de ejecución de órdenes\n" " (actualmente %s)\n" -#: help.c:258 +#: help.c:266 #, c-format msgid "" " \\! [COMMAND] execute command in shell or start interactive " @@ -1191,18 +1279,18 @@ msgstr "" " \\! [ORDEN] ejecutar orden en intérprete de órdenes (shell),\n" " o iniciar intérprete interactivo\n" -#: help.c:261 +#: help.c:269 #, c-format msgid "Variables\n" msgstr "Variables\n" -#: help.c:262 +#: help.c:270 #, c-format msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" msgstr "" " \\prompt [TEXTO] NOMBRE preguntar al usuario el valor de la variable\n" -#: help.c:263 +#: help.c:271 #, c-format msgid "" " \\set [NAME [VALUE]] set internal variable, or list all if no " @@ -1211,17 +1299,17 @@ msgstr "" " \\set [NOMBRE [VALOR]] definir variables internas,\n" " listar todas si no se dan parámetros\n" -#: help.c:264 +#: help.c:272 #, c-format msgid " \\unset NAME unset (delete) internal variable\n" msgstr " \\unset NOMBRE indefinir (eliminar) variable interna\n" -#: help.c:267 +#: help.c:275 #, c-format msgid "Large Objects\n" msgstr "Objetos Grandes\n" -#: help.c:268 +#: help.c:276 #, c-format msgid "" " \\lo_export LOBOID FILE\n" @@ -1234,11 +1322,11 @@ msgstr "" " \\lo_list\n" " \\lo_unlink LOBOID operaciones con objetos grandes\n" -#: help.c:321 +#: help.c:323 msgid "Available help:\n" msgstr "Ayuda disponible:\n" -#: help.c:410 +#: help.c:407 #, c-format msgid "" "Command: %s\n" @@ -1252,7 +1340,7 @@ msgstr "" "Sintaxis:\n" "%s\n" -#: help.c:426 +#: help.c:423 #, c-format msgid "" "No help available for \"%s\".\n" @@ -1294,16 +1382,17 @@ msgstr "%s: estado de transacción desconocido\n" msgid "ID" msgstr "ID" -#: large_obj.c:290 describe.c:146 describe.c:334 describe.c:613 describe.c:762 -#: describe.c:2381 describe.c:2681 describe.c:3310 describe.c:3369 +#: large_obj.c:290 describe.c:147 describe.c:335 describe.c:637 describe.c:787 +#: describe.c:2513 describe.c:2631 describe.c:2975 describe.c:3606 +#: describe.c:3671 msgid "Owner" msgstr "Dueño" -#: large_obj.c:291 large_obj.c:301 describe.c:95 describe.c:158 describe.c:337 -#: describe.c:490 describe.c:566 describe.c:637 describe.c:827 describe.c:1318 -#: describe.c:2205 describe.c:2395 describe.c:2689 describe.c:2751 -#: describe.c:2887 describe.c:2926 describe.c:2993 describe.c:3052 -#: describe.c:3061 describe.c:3120 +#: large_obj.c:291 large_obj.c:301 describe.c:96 describe.c:159 describe.c:338 +#: describe.c:501 describe.c:590 describe.c:661 describe.c:852 describe.c:1382 +#: describe.c:2330 describe.c:2537 describe.c:2918 describe.c:2983 +#: describe.c:3048 describe.c:3184 describe.c:3223 describe.c:3290 +#: describe.c:3349 describe.c:3358 describe.c:3417 describe.c:3856 msgid "Description" msgstr "Descripción" @@ -1371,12 +1460,12 @@ msgid_plural "(%lu rows)" msgstr[0] "(%lu fila)" msgstr[1] "(%lu filas)" -#: startup.c:237 +#: startup.c:243 #, c-format msgid "%s: could not open log file \"%s\": %s\n" msgstr "%s: no se pudo abrir archivo de log «%s»: %s\n" -#: startup.c:299 +#: startup.c:305 #, c-format msgid "" "Type \"help\" for help.\n" @@ -1385,212 +1474,218 @@ msgstr "" "Digite «help» para obtener ayuda.\n" "\n" -#: startup.c:445 +#: startup.c:451 #, c-format msgid "%s: could not set printing parameter \"%s\"\n" msgstr "%s: no se pudo definir parámetro de impresión «%s»\n" -#: startup.c:484 +#: startup.c:490 #, c-format msgid "%s: could not delete variable \"%s\"\n" msgstr "%s: no se pudo eliminar la variable «%s»\n" -#: startup.c:494 +#: startup.c:500 #, c-format msgid "%s: could not set variable \"%s\"\n" msgstr "%s: no se pudo definir la variable «%s»\n" -#: startup.c:531 startup.c:537 +#: startup.c:537 startup.c:543 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Use «%s --help» para obtener más información.\n" -#: startup.c:554 +#: startup.c:560 #, c-format msgid "%s: warning: extra command-line argument \"%s\" ignored\n" msgstr "%s: atención: se ignoró argumento extra «%s» en línea de órdenes\n" -#: startup.c:619 +#: startup.c:625 msgid "contains support for command-line editing" msgstr "incluye soporte para edición de línea de órdenes" -#: describe.c:68 describe.c:235 describe.c:462 describe.c:561 describe.c:682 -#: describe.c:763 describe.c:824 describe.c:2373 describe.c:2494 -#: describe.c:2549 describe.c:2749 describe.c:2976 describe.c:3048 -#: describe.c:3059 describe.c:3118 +#: describe.c:69 describe.c:236 describe.c:463 describe.c:585 describe.c:706 +#: describe.c:788 describe.c:849 describe.c:2504 describe.c:2698 +#: describe.c:2768 describe.c:2910 describe.c:3046 describe.c:3273 +#: describe.c:3345 describe.c:3356 describe.c:3415 describe.c:3789 +#: describe.c:3855 msgid "Schema" msgstr "Esquema" -#: describe.c:69 describe.c:145 describe.c:236 describe.c:463 describe.c:562 -#: describe.c:612 describe.c:683 describe.c:825 describe.c:2374 -#: describe.c:2495 describe.c:2550 describe.c:2680 describe.c:2750 -#: describe.c:2977 describe.c:3049 describe.c:3060 describe.c:3119 -#: describe.c:3309 describe.c:3368 +#: describe.c:70 describe.c:146 describe.c:237 describe.c:464 describe.c:586 +#: describe.c:636 describe.c:707 describe.c:850 describe.c:2505 +#: describe.c:2627 describe.c:2699 describe.c:2769 describe.c:2911 +#: describe.c:2974 describe.c:3047 describe.c:3274 describe.c:3346 +#: describe.c:3357 describe.c:3416 describe.c:3605 describe.c:3670 +#: describe.c:3853 msgid "Name" msgstr "Nombre" -#: describe.c:70 describe.c:248 describe.c:294 describe.c:311 +#: describe.c:71 describe.c:249 describe.c:295 describe.c:312 msgid "Result data type" msgstr "Tipo de dato de salida" -#: describe.c:84 describe.c:88 describe.c:249 describe.c:295 describe.c:312 +#: describe.c:85 describe.c:89 describe.c:250 describe.c:296 describe.c:313 msgid "Argument data types" msgstr "Tipos de datos de argumentos" -#: describe.c:113 +#: describe.c:114 msgid "List of aggregate functions" msgstr "Listado de funciones de agregación" -#: describe.c:134 +#: describe.c:135 #, c-format msgid "The server (version %d.%d) does not support tablespaces.\n" msgstr "El servidor (versión %d.%d) no soporta tablespaces.\n" -#: describe.c:147 +#: describe.c:148 msgid "Location" msgstr "Ubicación" -#: describe.c:175 +#: describe.c:176 msgid "List of tablespaces" msgstr "Listado de tablespaces" -#: describe.c:212 +#: describe.c:213 #, c-format msgid "\\df only takes [antwS+] as options\n" msgstr "\\df sólo acepta las opciones [antwS+]\n" -#: describe.c:218 +#: describe.c:219 #, c-format msgid "\\df does not take a \"w\" option with server version %d.%d\n" msgstr "\\df no acepta la opción «w» en un servidor versión %d.%d\n" #. translator: "agg" is short for "aggregate" -#: describe.c:251 describe.c:297 describe.c:314 +#: describe.c:252 describe.c:298 describe.c:315 msgid "agg" msgstr "agg" -#: describe.c:252 +#: describe.c:253 msgid "window" msgstr "ventana" -#: describe.c:253 describe.c:298 describe.c:315 describe.c:964 +#: describe.c:254 describe.c:299 describe.c:316 describe.c:990 msgid "trigger" msgstr "disparador" -#: describe.c:254 describe.c:299 describe.c:316 +#: describe.c:255 describe.c:300 describe.c:317 msgid "normal" msgstr "normal" -#: describe.c:255 describe.c:300 describe.c:317 describe.c:685 describe.c:767 -#: describe.c:1299 describe.c:2380 describe.c:2496 describe.c:3381 +#: describe.c:256 describe.c:301 describe.c:318 describe.c:710 describe.c:792 +#: describe.c:1362 describe.c:2512 describe.c:2700 describe.c:3683 msgid "Type" msgstr "Tipo" -#: describe.c:330 +#: describe.c:331 msgid "immutable" msgstr "inmutable" -#: describe.c:331 +#: describe.c:332 msgid "stable" msgstr "estable" -#: describe.c:332 +#: describe.c:333 msgid "volatile" msgstr "volátil" -#: describe.c:333 +#: describe.c:334 msgid "Volatility" msgstr "Volatilidad" -#: describe.c:335 +#: describe.c:336 msgid "Language" msgstr "Lenguaje" -#: describe.c:336 +#: describe.c:337 msgid "Source code" msgstr "Código fuente" -#: describe.c:434 +#: describe.c:435 msgid "List of functions" msgstr "Listado de funciones" -#: describe.c:473 +#: describe.c:474 msgid "Internal name" msgstr "Nombre interno" -#: describe.c:474 describe.c:629 describe.c:2391 +#: describe.c:475 describe.c:653 describe.c:2529 describe.c:2533 msgid "Size" msgstr "Tamaño" -#: describe.c:486 +#: describe.c:496 msgid "Elements" msgstr "Elementos" -#: describe.c:530 +#: describe.c:541 msgid "List of data types" msgstr "Listado de tipos de dato" -#: describe.c:563 +#: describe.c:587 msgid "Left arg type" msgstr "Tipo arg izq" -#: describe.c:564 +#: describe.c:588 msgid "Right arg type" msgstr "Tipo arg der" -#: describe.c:565 +#: describe.c:589 msgid "Result type" msgstr "Tipo resultado" -#: describe.c:584 +#: describe.c:608 msgid "List of operators" msgstr "Listado de operadores" -#: describe.c:614 +#: describe.c:638 msgid "Encoding" msgstr "Codificación" -#: describe.c:619 -msgid "Collation" -msgstr "Collation" +#: describe.c:643 describe.c:2912 +msgid "Collate" +msgstr "Collate" -#: describe.c:620 +#: describe.c:644 describe.c:2913 msgid "Ctype" msgstr "Ctype" -#: describe.c:633 +#: describe.c:657 msgid "Tablespace" msgstr "Tablespace" -#: describe.c:650 +#: describe.c:674 msgid "List of databases" msgstr "Listado de base de datos" -#: describe.c:684 describe.c:764 describe.c:919 describe.c:2375 sql_help.c:443 -#: sql_help.c:660 sql_help.c:761 sql_help.c:1178 sql_help.c:1305 -#: sql_help.c:1339 sql_help.c:1574 sql_help.c:1723 sql_help.c:1884 -#: sql_help.c:1965 sql_help.c:2159 sql_help.c:2719 sql_help.c:2739 -#: sql_help.c:2741 sql_help.c:2742 +#: describe.c:708 describe.c:789 describe.c:944 describe.c:2506 sql_help.c:595 +#: sql_help.c:842 sql_help.c:969 sql_help.c:1432 sql_help.c:1562 +#: sql_help.c:1596 sql_help.c:1842 sql_help.c:2000 sql_help.c:2185 +#: sql_help.c:2266 sql_help.c:2472 sql_help.c:3103 sql_help.c:3123 +#: sql_help.c:3125 sql_help.c:3126 msgid "table" msgstr "tabla" -#: describe.c:684 describe.c:920 describe.c:2376 +#: describe.c:708 describe.c:945 describe.c:2507 msgid "view" msgstr "vista" -#: describe.c:684 describe.c:765 describe.c:922 describe.c:2378 +#: describe.c:708 describe.c:790 describe.c:947 describe.c:2509 msgid "sequence" msgstr "secuencia" -#: describe.c:696 +#: describe.c:709 describe.c:948 describe.c:2511 +msgid "foreign table" +msgstr "tabla foránea" + +#: describe.c:721 msgid "Column access privileges" msgstr "Privilegios de acceso a columnas" -#: describe.c:722 describe.c:3476 describe.c:3480 +#: describe.c:747 describe.c:4000 describe.c:4004 msgid "Access privileges" msgstr "Privilegios" -#: describe.c:750 +#: describe.c:775 #, c-format msgid "" "The server (version %d.%d) does not support altering default privileges.\n" @@ -1598,506 +1693,564 @@ msgstr "" "El servidor (versión %d.%d) no soporta la alteración de privilegios por " "omisión.\n" -#: describe.c:766 describe.c:858 +#: describe.c:791 describe.c:883 msgid "function" msgstr "función" -#: describe.c:790 +#: describe.c:815 msgid "Default access privileges" msgstr "Privilegios de acceso por omisión" -#: describe.c:826 +#: describe.c:851 msgid "Object" msgstr "Objeto" -#: describe.c:838 +#: describe.c:863 msgid "aggregate" msgstr "función de agregación" -#: describe.c:877 sql_help.c:1457 sql_help.c:2457 sql_help.c:2525 -#: sql_help.c:2656 sql_help.c:2757 sql_help.c:2808 +#: describe.c:902 sql_help.c:1715 sql_help.c:2833 sql_help.c:2903 +#: sql_help.c:3036 sql_help.c:3141 sql_help.c:3192 msgid "operator" msgstr "operador" -#: describe.c:896 +#: describe.c:921 msgid "data type" msgstr "tipo de dato" -#: describe.c:921 describe.c:2377 +#: describe.c:946 describe.c:2508 msgid "index" msgstr "índice" -#: describe.c:943 +#: describe.c:969 msgid "rule" msgstr "regla" -#: describe.c:987 +#: describe.c:1013 msgid "Object descriptions" msgstr "Descripciones de objetos" -#: describe.c:1040 +#: describe.c:1066 #, c-format msgid "Did not find any relation named \"%s\".\n" msgstr "No se encontró relación llamada «%s».\n" -#: describe.c:1194 +#: describe.c:1238 #, c-format msgid "Did not find any relation with OID %s.\n" msgstr "No se encontró relación con OID %s.\n" -#: describe.c:1262 +#: describe.c:1314 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "Tabla unlogged «%s.%s»" + +#: describe.c:1317 #, c-format msgid "Table \"%s.%s\"" msgstr "Tabla «%s.%s»" -#: describe.c:1266 +#: describe.c:1321 #, c-format msgid "View \"%s.%s\"" msgstr "Vista «%s.%s»" -#: describe.c:1270 +#: describe.c:1325 #, c-format msgid "Sequence \"%s.%s\"" msgstr "Secuencia «%s.%s»" -#: describe.c:1274 +#: describe.c:1330 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "Índice unlogged «%s.%s»" + +#: describe.c:1333 #, c-format msgid "Index \"%s.%s\"" msgstr "Índice «%s.%s»" -#: describe.c:1279 +#: describe.c:1338 #, c-format msgid "Special relation \"%s.%s\"" msgstr "Relación especial «%s.%s»" -#: describe.c:1283 +#: describe.c:1342 #, c-format msgid "TOAST table \"%s.%s\"" msgstr "Tabla TOAST «%s.%s»" -#: describe.c:1287 +#: describe.c:1346 #, c-format msgid "Composite type \"%s.%s\"" msgstr "Tipo compuesto «%s.%s»" -#: describe.c:1298 +#: describe.c:1350 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "Tabla foránea «%s.%s»" + +#: describe.c:1361 msgid "Column" msgstr "Columna" -#: describe.c:1305 +#: describe.c:1369 msgid "Modifiers" msgstr "Modificadores" -#: describe.c:1310 +#: describe.c:1374 msgid "Value" msgstr "Valor" -#: describe.c:1313 +#: describe.c:1377 msgid "Definition" msgstr "Definición" -#: describe.c:1317 +#: describe.c:1381 msgid "Storage" msgstr "Almacenamiento" -#: describe.c:1359 +#: describe.c:1427 +#, c-format +msgid "collate %s" +msgstr "collate %s" + +#: describe.c:1435 msgid "not null" msgstr "not null" #. translator: default values of column definitions -#: describe.c:1368 +#: describe.c:1445 #, c-format msgid "default %s" msgstr "valor por omisión %s" -#: describe.c:1459 +#: describe.c:1536 msgid "primary key, " msgstr "llave primaria, " -#: describe.c:1461 +#: describe.c:1538 msgid "unique, " msgstr "único, " -#: describe.c:1467 +#: describe.c:1544 #, c-format msgid "for table \"%s.%s\"" msgstr "de tabla «%s.%s»" -#: describe.c:1471 +#: describe.c:1548 #, c-format msgid ", predicate (%s)" msgstr ", predicado (%s)" -#: describe.c:1474 +#: describe.c:1551 msgid ", clustered" msgstr ", clustered" -#: describe.c:1477 +#: describe.c:1554 msgid ", invalid" msgstr ", no válido" -#: describe.c:1480 +#: describe.c:1557 msgid ", deferrable" msgstr ", postergable" -#: describe.c:1483 +#: describe.c:1560 msgid ", initially deferred" msgstr ", inicialmente postergada" -#: describe.c:1497 +#: describe.c:1574 msgid "View definition:" msgstr "Definición de vista:" -#: describe.c:1514 describe.c:1792 +#: describe.c:1591 describe.c:1874 msgid "Rules:" msgstr "Reglas:" -#: describe.c:1573 +#: describe.c:1650 msgid "Indexes:" msgstr "Índices:" -#: describe.c:1648 +#: describe.c:1730 msgid "Check constraints:" msgstr "Restricciones CHECK:" -#: describe.c:1679 +#: describe.c:1761 msgid "Foreign-key constraints:" msgstr "Restricciones de llave foránea:" -#: describe.c:1710 +#: describe.c:1792 msgid "Referenced by:" msgstr "Referenciada por:" -#: describe.c:1795 +#: describe.c:1877 msgid "Disabled rules:" msgstr "Reglas deshabilitadas:" -#: describe.c:1798 +#: describe.c:1880 msgid "Rules firing always:" msgstr "Reglas que se activan siempre:" -#: describe.c:1801 +#: describe.c:1883 msgid "Rules firing on replica only:" msgstr "Reglas que se activan sólo en las réplicas:" -#: describe.c:1903 +#: describe.c:1991 msgid "Triggers:" msgstr "Triggers:" -#: describe.c:1906 +#: describe.c:1994 msgid "Disabled triggers:" msgstr "Disparadores deshabilitados:" -#: describe.c:1909 +#: describe.c:1997 msgid "Triggers firing always:" msgstr "Disparadores que siempre se ejecutan:" -#: describe.c:1912 +#: describe.c:2000 msgid "Triggers firing on replica only:" msgstr "Disparadores que se ejecutan sólo en las réplicas:" -#: describe.c:1945 +#: describe.c:2066 msgid "Inherits" msgstr "Hereda" -#: describe.c:1975 +#: describe.c:2096 #, c-format msgid "Number of child tables: %d (Use \\d+ to list them.)" msgstr "Número de tablas hijas: %d (Use \\d+ para listarlas.)" -#: describe.c:1982 +#: describe.c:2103 msgid "Child tables" msgstr "Tablas hijas" -#: describe.c:2004 +#: describe.c:2125 #, c-format msgid "Typed table of type: %s" msgstr "Tabla tipada de tipo: %s" -#: describe.c:2011 +#: describe.c:2132 msgid "Has OIDs" msgstr "Tiene OIDs" -#: describe.c:2014 describe.c:2553 describe.c:2627 +#: describe.c:2135 describe.c:2772 describe.c:2846 msgid "yes" msgstr "sí" -#: describe.c:2014 describe.c:2553 describe.c:2627 +#: describe.c:2135 describe.c:2772 describe.c:2846 msgid "no" msgstr "no" -#: describe.c:2022 describe.c:3319 describe.c:3383 describe.c:3439 +#: describe.c:2143 describe.c:3621 describe.c:3685 describe.c:3741 +#: describe.c:3796 msgid "Options" msgstr "Opciones" -#: describe.c:2107 +#: describe.c:2228 #, c-format msgid "Tablespace: \"%s\"" msgstr "Tablespace: «%s»" -#: describe.c:2120 +#: describe.c:2241 #, c-format msgid ", tablespace \"%s\"" msgstr ", tablespace «%s»" -#: describe.c:2198 +#: describe.c:2323 msgid "List of roles" msgstr "Lista de roles" -#: describe.c:2200 +#: describe.c:2325 msgid "Role name" msgstr "Nombre de rol" -#: describe.c:2201 +#: describe.c:2326 msgid "Attributes" msgstr "Atributos" -#: describe.c:2202 +#: describe.c:2327 msgid "Member of" msgstr "Miembro de" -#: describe.c:2213 +#: describe.c:2338 msgid "Superuser" msgstr "Superusuario" -#: describe.c:2216 +#: describe.c:2341 msgid "No inheritance" msgstr "Sin herencia" -#: describe.c:2219 +#: describe.c:2344 msgid "Create role" msgstr "Crear rol" -#: describe.c:2222 +#: describe.c:2347 msgid "Create DB" msgstr "Crear BD" -#: describe.c:2225 +#: describe.c:2350 msgid "Cannot login" msgstr "No puede conectarse" -#: describe.c:2234 +#: describe.c:2354 +msgid "Replication" +msgstr "Replicación" + +#: describe.c:2363 msgid "No connections" msgstr "Ninguna conexión" -#: describe.c:2236 +#: describe.c:2365 #, c-format msgid "%d connection" msgid_plural "%d connections" msgstr[0] "%d conexión" msgstr[1] "%d conexiones" -#: describe.c:2303 +#: describe.c:2432 #, c-format msgid "No per-database role settings support in this server version.\n" msgstr "Este servidor no permite parámetros por usuario por base de datos.\n" -#: describe.c:2314 +#: describe.c:2443 #, c-format msgid "No matching settings found.\n" msgstr "No se encontraron parámetros coincidentes.\n" -#: describe.c:2316 +#: describe.c:2445 #, c-format msgid "No settings found.\n" msgstr "No se encontraron parámetros.\n" -#: describe.c:2321 +#: describe.c:2450 msgid "List of settings" msgstr "Listado de parámetros" -#: describe.c:2379 +#: describe.c:2510 msgid "special" msgstr "especial" -#: describe.c:2386 +#: describe.c:2518 describe.c:3790 msgid "Table" msgstr "Tabla" -#: describe.c:2446 +#: describe.c:2592 #, c-format msgid "No matching relations found.\n" msgstr "No se encontraron relaciones coincidentes.\n" -#: describe.c:2448 +#: describe.c:2594 #, c-format msgid "No relations found.\n" msgstr "No se encontraron relaciones.\n" -#: describe.c:2453 +#: describe.c:2599 msgid "List of relations" msgstr "Listado de relaciones" -#: describe.c:2497 +#: describe.c:2635 +msgid "Trusted" +msgstr "Confiable" + +#: describe.c:2643 +msgid "Internal Language" +msgstr "Lenguaje interno" + +#: describe.c:2644 +msgid "Call Handler" +msgstr "Manejador de llamada" + +#: describe.c:2645 describe.c:3613 +msgid "Validator" +msgstr "Validador" + +#: describe.c:2648 +msgid "Inline Handler" +msgstr "Manejador en línea" + +#: describe.c:2669 +msgid "List of languages" +msgstr "Lista de lenguajes" + +#: describe.c:2709 msgid "Modifier" msgstr "Modificador" -#: describe.c:2498 +#: describe.c:2717 msgid "Check" msgstr "Check" -#: describe.c:2516 +#: describe.c:2735 msgid "List of domains" msgstr "Listado de dominios" -#: describe.c:2551 +#: describe.c:2770 msgid "Source" msgstr "Fuente" -#: describe.c:2552 +#: describe.c:2771 msgid "Destination" msgstr "Destino" -#: describe.c:2554 +#: describe.c:2773 msgid "Default?" msgstr "Por omisión?" -#: describe.c:2572 +#: describe.c:2791 msgid "List of conversions" msgstr "Listado de conversiones" -#: describe.c:2624 +#: describe.c:2843 msgid "Source type" msgstr "Tipo fuente" -#: describe.c:2625 +#: describe.c:2844 msgid "Target type" msgstr "Tipo destino" -#: describe.c:2626 describe.c:2886 +#: describe.c:2845 describe.c:3183 msgid "Function" msgstr "Función" -#: describe.c:2627 +#: describe.c:2846 msgid "in assignment" msgstr "en asignación" -#: describe.c:2628 +#: describe.c:2847 msgid "Implicit?" msgstr "Implícito?" -#: describe.c:2654 +#: describe.c:2873 msgid "List of casts" msgstr "Listado de conversiones de tipo (casts)" -#: describe.c:2709 +#: describe.c:2898 +#, c-format +msgid "The server (version %d.%d) does not support collations.\n" +msgstr "El servidor (versión %d.%d) no soporta «collations».\n" + +#: describe.c:2948 +msgid "List of collations" +msgstr "Listado de ordenamientos" + +#: describe.c:3006 msgid "List of schemas" msgstr "Listado de esquemas" -#: describe.c:2732 describe.c:2965 describe.c:3033 describe.c:3101 +#: describe.c:3029 describe.c:3262 describe.c:3330 describe.c:3398 #, c-format msgid "The server (version %d.%d) does not support full text search.\n" msgstr "El servidor (versión %d.%d) no soporta búsqueda en texto.\n" -#: describe.c:2766 +#: describe.c:3063 msgid "List of text search parsers" msgstr "Listado de analizadores de búsqueda en texto" -#: describe.c:2809 +#: describe.c:3106 #, c-format msgid "Did not find any text search parser named \"%s\".\n" msgstr "No se encontró ningún analizador de búsqueda en texto llamado «%s».\n" -#: describe.c:2884 +#: describe.c:3181 msgid "Start parse" msgstr "Inicio de parse" -#: describe.c:2885 +#: describe.c:3182 msgid "Method" msgstr "Método" -#: describe.c:2889 +#: describe.c:3186 msgid "Get next token" msgstr "Obtener siguiente elemento" -#: describe.c:2891 +#: describe.c:3188 msgid "End parse" msgstr "Fin de parse" -#: describe.c:2893 +#: describe.c:3190 msgid "Get headline" msgstr "Obtener encabezado" -#: describe.c:2895 +#: describe.c:3192 msgid "Get token types" msgstr "Obtener tipos de elemento" -#: describe.c:2905 +#: describe.c:3202 #, c-format msgid "Text search parser \"%s.%s\"" msgstr "Analizador de búsqueda en texto «%s.%s»" -#: describe.c:2907 +#: describe.c:3204 #, c-format msgid "Text search parser \"%s\"" msgstr "Analizador de búsqueda en texto «%s»" -#: describe.c:2925 +#: describe.c:3222 msgid "Token name" msgstr "Nombre de elemento" -#: describe.c:2936 +#: describe.c:3233 #, c-format msgid "Token types for parser \"%s.%s\"" msgstr "Tipos de elemento para el analizador «%s.%s»" -#: describe.c:2938 +#: describe.c:3235 #, c-format msgid "Token types for parser \"%s\"" msgstr "Tipos de elemento para el analizador «%s»" -#: describe.c:2987 +#: describe.c:3284 msgid "Template" msgstr "Plantilla" -#: describe.c:2988 +#: describe.c:3285 msgid "Init options" msgstr "Opciones de inicialización" -#: describe.c:3010 +#: describe.c:3307 msgid "List of text search dictionaries" msgstr "Listado de diccionarios de búsqueda en texto" -#: describe.c:3050 +#: describe.c:3347 msgid "Init" msgstr "Inicializador" -#: describe.c:3051 +#: describe.c:3348 msgid "Lexize" msgstr "Fn. análisis léx." -#: describe.c:3078 +#: describe.c:3375 msgid "List of text search templates" msgstr "Listado de plantillas de búsqueda en texto" -#: describe.c:3135 +#: describe.c:3432 msgid "List of text search configurations" msgstr "Listado de configuraciones de búsqueda en texto" -#: describe.c:3179 +#: describe.c:3476 #, c-format msgid "Did not find any text search configuration named \"%s\".\n" msgstr "No se encontró una configuración de búsqueda en texto llamada «%s».\n" -#: describe.c:3245 +#: describe.c:3542 msgid "Token" msgstr "Elemento" -#: describe.c:3246 +#: describe.c:3543 msgid "Dictionaries" msgstr "Diccionarios" -#: describe.c:3257 +#: describe.c:3554 #, c-format msgid "Text search configuration \"%s.%s\"" msgstr "Configuración de búsqueda en texto «%s.%s»" -#: describe.c:3260 +#: describe.c:3557 #, c-format msgid "Text search configuration \"%s\"" msgstr "Configuración de búsqueda en texto «%s»" -#: describe.c:3264 +#: describe.c:3561 #, c-format msgid "" "\n" @@ -2106,7 +2259,7 @@ msgstr "" "\n" "Analizador: «%s.%s»" -#: describe.c:3267 +#: describe.c:3564 #, c-format msgid "" "\n" @@ -2115,554 +2268,627 @@ msgstr "" "\n" "Analizador: «%s»" -#: describe.c:3299 +#: describe.c:3596 #, c-format msgid "The server (version %d.%d) does not support foreign-data wrappers.\n" msgstr "El servidor (versión %d.%d) no soporta conectores de datos externos.\n" -#: describe.c:3311 -msgid "Validator" -msgstr "Validador" +#: describe.c:3610 +msgid "Handler" +msgstr "Manejador" -#: describe.c:3335 +#: describe.c:3637 msgid "List of foreign-data wrappers" msgstr "Listado de conectores de datos externos" -#: describe.c:3358 +#: describe.c:3660 #, c-format msgid "The server (version %d.%d) does not support foreign servers.\n" msgstr "El servidor (versión %d.%d) no soporta servidores foráneos.\n" -#: describe.c:3370 +#: describe.c:3672 msgid "Foreign-data wrapper" msgstr "Conectores de datos externos" -#: describe.c:3382 +#: describe.c:3684 describe.c:3854 msgid "Version" msgstr "Versión" -#: describe.c:3401 +#: describe.c:3703 msgid "List of foreign servers" msgstr "Listado de servidores foráneos" -#: describe.c:3424 +#: describe.c:3726 #, c-format msgid "The server (version %d.%d) does not support user mappings.\n" msgstr "El servidor (versión %d.%d) no soporta mapeos de usuario.\n" -#: describe.c:3433 +#: describe.c:3735 describe.c:3791 msgid "Server" msgstr "Servidor" -#: describe.c:3434 +#: describe.c:3736 msgid "User name" msgstr "Nombre de usuario" -#: describe.c:3454 +#: describe.c:3756 msgid "List of user mappings" msgstr "Listado de mapeos de usuario" -#: sql_help.h:173 sql_help.h:788 +#: describe.c:3779 +#, c-format +msgid "The server (version %d.%d) does not support foreign tables.\n" +msgstr "El servidor (versión %d.%d) no soporta tablas foráneas.\n" + +#: describe.c:3817 +msgid "List of foreign tables" +msgstr "Listado de tablas foráneas" + +#: describe.c:3840 describe.c:3894 +#, c-format +msgid "The server (version %d.%d) does not support extensions.\n" +msgstr "El servidor (versión %d.%d) no soporta extensiones.\n" + +#: describe.c:3871 +msgid "List of installed extensions" +msgstr "Listado de extensiones instaladas" + +#: describe.c:3921 +#, c-format +msgid "Did not find any extension named \"%s\".\n" +msgstr "No se encontró extensión llamada «%s».\n" + +#: describe.c:3924 +#, c-format +msgid "Did not find any extensions.\n" +msgstr "No se encontró ninguna extensión.\n" + +#: describe.c:3968 +msgid "Object Description" +msgstr "Descripciones de objetos" + +#: describe.c:3977 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "Objetos en extensión «%s»" + +#: sql_help.h:182 sql_help.h:837 msgid "abort the current transaction" msgstr "aborta la transacción en curso" -#: sql_help.h:178 +#: sql_help.h:187 msgid "change the definition of an aggregate function" msgstr "cambia la definición de una función de agregación" -#: sql_help.h:183 +#: sql_help.h:192 +msgid "change the definition of a collation" +msgstr "cambia la definición de un ordenamiento" + +#: sql_help.h:197 msgid "change the definition of a conversion" msgstr "cambia la definición de una conversión" -#: sql_help.h:188 +#: sql_help.h:202 msgid "change a database" msgstr "cambia una base de datos" -#: sql_help.h:193 +#: sql_help.h:207 msgid "define default access privileges" msgstr "define privilegios de acceso por omisión" -#: sql_help.h:198 +#: sql_help.h:212 msgid "change the definition of a domain" msgstr "cambia la definición de un dominio" -#: sql_help.h:203 +#: sql_help.h:217 +msgid "change the definition of an extension" +msgstr "cambia la definición de una extensión" + +#: sql_help.h:222 msgid "change the definition of a foreign-data wrapper" msgstr "cambia la definición de un conector de datos externos" -#: sql_help.h:208 +#: sql_help.h:227 +msgid "change the definition of a foreign table" +msgstr "cambia la definición de una tabla foránea" + +#: sql_help.h:232 msgid "change the definition of a function" msgstr "cambia la definición de una función" -#: sql_help.h:213 +#: sql_help.h:237 msgid "change role name or membership" msgstr "cambiar nombre del rol o membresía" -#: sql_help.h:218 +#: sql_help.h:242 msgid "change the definition of an index" msgstr "cambia la definición de un índice" -#: sql_help.h:223 +#: sql_help.h:247 msgid "change the definition of a procedural language" msgstr "cambia la definición de un lenguaje procedural" -#: sql_help.h:228 +#: sql_help.h:252 msgid "change the definition of a large object" msgstr "cambia la definición de un objeto grande" -#: sql_help.h:233 +#: sql_help.h:257 msgid "change the definition of an operator" msgstr "cambia la definición de un operador" -#: sql_help.h:238 +#: sql_help.h:262 msgid "change the definition of an operator class" msgstr "cambia la definición de una clase de operadores" -#: sql_help.h:243 +#: sql_help.h:267 msgid "change the definition of an operator family" msgstr "cambia la definición de una familia de operadores" -#: sql_help.h:248 sql_help.h:308 +#: sql_help.h:272 sql_help.h:332 msgid "change a database role" msgstr "cambia un rol de la base de datos" -#: sql_help.h:253 +#: sql_help.h:277 msgid "change the definition of a schema" msgstr "cambia la definición de un esquema" -#: sql_help.h:258 +#: sql_help.h:282 msgid "change the definition of a sequence generator" msgstr "cambia la definición de un generador secuencial" -#: sql_help.h:263 +#: sql_help.h:287 msgid "change the definition of a foreign server" msgstr "cambia la definición de un servidor foráneo" -#: sql_help.h:268 +#: sql_help.h:292 msgid "change the definition of a table" msgstr "cambia la definición de una tabla" -#: sql_help.h:273 +#: sql_help.h:297 msgid "change the definition of a tablespace" msgstr "cambia la definición de un tablespace" -#: sql_help.h:278 +#: sql_help.h:302 msgid "change the definition of a text search configuration" msgstr "cambia la definición de una configuración de búsqueda en texto" -#: sql_help.h:283 +#: sql_help.h:307 msgid "change the definition of a text search dictionary" msgstr "cambia la definición de un diccionario de búsqueda en texto" -#: sql_help.h:288 +#: sql_help.h:312 msgid "change the definition of a text search parser" msgstr "cambia la definición de un analizador de búsqueda en texto" -#: sql_help.h:293 +#: sql_help.h:317 msgid "change the definition of a text search template" msgstr "cambia la definición de una plantilla de búsqueda en texto" -#: sql_help.h:298 +#: sql_help.h:322 msgid "change the definition of a trigger" msgstr "cambia la definición de un disparador" -#: sql_help.h:303 +#: sql_help.h:327 msgid "change the definition of a type" msgstr "cambia la definición de un tipo" -#: sql_help.h:313 +#: sql_help.h:337 msgid "change the definition of a user mapping" msgstr "cambia la definición de un mapeo de usuario" -#: sql_help.h:318 +#: sql_help.h:342 msgid "change the definition of a view" msgstr "cambia la definición de una vista" -#: sql_help.h:323 +#: sql_help.h:347 msgid "collect statistics about a database" msgstr "recolecta estadísticas sobre una base de datos" -#: sql_help.h:328 sql_help.h:848 +#: sql_help.h:352 sql_help.h:902 msgid "start a transaction block" msgstr "inicia un bloque de transacción" -#: sql_help.h:333 +#: sql_help.h:357 msgid "force a transaction log checkpoint" msgstr "fuerza un checkpoint del registro de transacciones" -#: sql_help.h:338 +#: sql_help.h:362 msgid "close a cursor" msgstr "cierra un cursor" -#: sql_help.h:343 +#: sql_help.h:367 msgid "cluster a table according to an index" msgstr "reordena una tabla siguiendo un índice" -#: sql_help.h:348 +#: sql_help.h:372 msgid "define or change the comment of an object" msgstr "define o cambia un comentario sobre un objeto" -#: sql_help.h:353 sql_help.h:698 +#: sql_help.h:377 sql_help.h:747 msgid "commit the current transaction" msgstr "compromete la transacción en curso" -#: sql_help.h:358 +#: sql_help.h:382 msgid "commit a transaction that was earlier prepared for two-phase commit" msgstr "confirma una transacción que fue preparada para two-phase commit" -#: sql_help.h:363 +#: sql_help.h:387 msgid "copy data between a file and a table" msgstr "copia datos entre un archivo y una tabla" -#: sql_help.h:368 +#: sql_help.h:392 msgid "define a new aggregate function" msgstr "define una nueva función de agregación" -#: sql_help.h:373 +#: sql_help.h:397 msgid "define a new cast" msgstr "define una nueva conversión de tipo" -#: sql_help.h:378 -msgid "define a new constraint trigger" -msgstr "define un nuevo disparador de restricción" +#: sql_help.h:402 +msgid "define a new collation" +msgstr "define un nuevo ordenamiento" -#: sql_help.h:383 +#: sql_help.h:407 msgid "define a new encoding conversion" msgstr "define una nueva conversión de codificación" -#: sql_help.h:388 +#: sql_help.h:412 msgid "create a new database" msgstr "crea una nueva base de datos" -#: sql_help.h:393 +#: sql_help.h:417 msgid "define a new domain" msgstr "define un nuevo dominio" -#: sql_help.h:398 +#: sql_help.h:422 +msgid "install an extension" +msgstr "instala una extensión" + +#: sql_help.h:427 msgid "define a new foreign-data wrapper" msgstr "define un nuevo conector de datos externos" -#: sql_help.h:403 +#: sql_help.h:432 +msgid "define a new foreign table" +msgstr "define una nueva tabla foránea" + +#: sql_help.h:437 msgid "define a new function" msgstr "define una nueva función" -#: sql_help.h:408 sql_help.h:438 sql_help.h:508 +#: sql_help.h:442 sql_help.h:472 sql_help.h:542 msgid "define a new database role" msgstr "define un nuevo rol de la base de datos" -#: sql_help.h:413 +#: sql_help.h:447 msgid "define a new index" msgstr "define un nuevo índice" -#: sql_help.h:418 +#: sql_help.h:452 msgid "define a new procedural language" msgstr "define un nuevo lenguaje procedural" -#: sql_help.h:423 +#: sql_help.h:457 msgid "define a new operator" msgstr "define un nuevo operador" -#: sql_help.h:428 +#: sql_help.h:462 msgid "define a new operator class" msgstr "define una nueva clase de operadores" -#: sql_help.h:433 +#: sql_help.h:467 msgid "define a new operator family" msgstr "define una nueva familia de operadores" -#: sql_help.h:443 +#: sql_help.h:477 msgid "define a new rewrite rule" msgstr "define una nueva regla de reescritura" -#: sql_help.h:448 +#: sql_help.h:482 msgid "define a new schema" msgstr "define un nuevo schema" -#: sql_help.h:453 +#: sql_help.h:487 msgid "define a new sequence generator" msgstr "define un nuevo generador secuencial" -#: sql_help.h:458 +#: sql_help.h:492 msgid "define a new foreign server" msgstr "define un nuevo servidor foráneo" -#: sql_help.h:463 +#: sql_help.h:497 msgid "define a new table" msgstr "define una nueva tabla" -#: sql_help.h:468 sql_help.h:813 +#: sql_help.h:502 sql_help.h:867 msgid "define a new table from the results of a query" msgstr "crea una nueva tabla usando los resultados de una consulta" -#: sql_help.h:473 +#: sql_help.h:507 msgid "define a new tablespace" msgstr "define un nuevo tablespace" -#: sql_help.h:478 +#: sql_help.h:512 msgid "define a new text search configuration" msgstr "define una nueva configuración de búsqueda en texto" -#: sql_help.h:483 +#: sql_help.h:517 msgid "define a new text search dictionary" msgstr "define un nuevo diccionario de búsqueda en texto" -#: sql_help.h:488 +#: sql_help.h:522 msgid "define a new text search parser" msgstr "define un nuevo analizador de búsqueda en texto" -#: sql_help.h:493 +#: sql_help.h:527 msgid "define a new text search template" msgstr "define una nueva plantilla de búsqueda en texto" -#: sql_help.h:498 +#: sql_help.h:532 msgid "define a new trigger" msgstr "define un nuevo disparador" -#: sql_help.h:503 +#: sql_help.h:537 msgid "define a new data type" msgstr "define un nuevo tipo de datos" -#: sql_help.h:513 +#: sql_help.h:547 msgid "define a new mapping of a user to a foreign server" msgstr "define un nuevo mapa de usuario a servidor foráneo" -#: sql_help.h:518 +#: sql_help.h:552 msgid "define a new view" msgstr "define una nueva vista" -#: sql_help.h:523 +#: sql_help.h:557 msgid "deallocate a prepared statement" msgstr "elimina una sentencia preparada" -#: sql_help.h:528 +#: sql_help.h:562 msgid "define a cursor" msgstr "define un nuevo cursor" -#: sql_help.h:533 +#: sql_help.h:567 msgid "delete rows of a table" msgstr "elimina filas de una tabla" -#: sql_help.h:538 +#: sql_help.h:572 msgid "discard session state" msgstr "descartar datos de la sesión" -#: sql_help.h:543 +#: sql_help.h:577 msgid "execute an anonymous code block" msgstr "ejecutar un bloque anónimo de código" -#: sql_help.h:548 +#: sql_help.h:582 msgid "remove an aggregate function" msgstr "elimina una función de agregación" -#: sql_help.h:553 +#: sql_help.h:587 msgid "remove a cast" msgstr "elimina una conversión de tipo" -#: sql_help.h:558 +#: sql_help.h:592 +msgid "remove a collation" +msgstr "elimina un ordenamiento" + +#: sql_help.h:597 msgid "remove a conversion" msgstr "elimina una conversión de codificación" -#: sql_help.h:563 +#: sql_help.h:602 msgid "remove a database" msgstr "elimina una base de datos" -#: sql_help.h:568 +#: sql_help.h:607 msgid "remove a domain" msgstr "elimina un dominio" -#: sql_help.h:573 +#: sql_help.h:612 +msgid "remove an extension" +msgstr "elimina una extensión" + +#: sql_help.h:617 msgid "remove a foreign-data wrapper" msgstr "elimina un conector de datos externos" -#: sql_help.h:578 +#: sql_help.h:622 +msgid "remove a foreign table" +msgstr "elimina una tabla foránea" + +#: sql_help.h:627 msgid "remove a function" msgstr "elimina una función" -#: sql_help.h:583 sql_help.h:618 sql_help.h:683 +#: sql_help.h:632 sql_help.h:667 sql_help.h:732 msgid "remove a database role" msgstr "elimina un rol de base de datos" -#: sql_help.h:588 +#: sql_help.h:637 msgid "remove an index" msgstr "elimina un índice" -#: sql_help.h:593 +#: sql_help.h:642 msgid "remove a procedural language" msgstr "elimina un lenguaje procedural" -#: sql_help.h:598 +#: sql_help.h:647 msgid "remove an operator" msgstr "elimina un operador" -#: sql_help.h:603 +#: sql_help.h:652 msgid "remove an operator class" msgstr "elimina una clase de operadores" -#: sql_help.h:608 +#: sql_help.h:657 msgid "remove an operator family" msgstr "elimina una familia de operadores" -#: sql_help.h:613 +#: sql_help.h:662 msgid "remove database objects owned by a database role" msgstr "elimina objetos de propiedad de un rol de la base de datos" -#: sql_help.h:623 +#: sql_help.h:672 msgid "remove a rewrite rule" msgstr "elimina una regla de reescritura" -#: sql_help.h:628 +#: sql_help.h:677 msgid "remove a schema" msgstr "elimina un schema" -#: sql_help.h:633 +#: sql_help.h:682 msgid "remove a sequence" msgstr "elimina un generador secuencial" -#: sql_help.h:638 +#: sql_help.h:687 msgid "remove a foreign server descriptor" msgstr "elimina un descriptor de servidor foráneo" -#: sql_help.h:643 +#: sql_help.h:692 msgid "remove a table" msgstr "elimina una tabla" -#: sql_help.h:648 +#: sql_help.h:697 msgid "remove a tablespace" msgstr "elimina un tablespace" -#: sql_help.h:653 +#: sql_help.h:702 msgid "remove a text search configuration" msgstr "elimina una configuración de búsqueda en texto" -#: sql_help.h:658 +#: sql_help.h:707 msgid "remove a text search dictionary" msgstr "elimina un diccionario de búsqueda en texto" -#: sql_help.h:663 +#: sql_help.h:712 msgid "remove a text search parser" msgstr "elimina un analizador de búsqueda en texto" -#: sql_help.h:668 +#: sql_help.h:717 msgid "remove a text search template" msgstr "elimina una plantilla de búsqueda en texto" -#: sql_help.h:673 +#: sql_help.h:722 msgid "remove a trigger" msgstr "elimina un disparador" -#: sql_help.h:678 +#: sql_help.h:727 msgid "remove a data type" msgstr "elimina un tipo de datos" -#: sql_help.h:688 +#: sql_help.h:737 msgid "remove a user mapping for a foreign server" msgstr "elimina un mapeo de usuario para un servidor remoto" -#: sql_help.h:693 +#: sql_help.h:742 msgid "remove a view" msgstr "elimina una vista" -#: sql_help.h:703 +#: sql_help.h:752 msgid "execute a prepared statement" msgstr "ejecuta una sentencia preparada" -#: sql_help.h:708 +#: sql_help.h:757 msgid "show the execution plan of a statement" msgstr "muestra el plan de ejecución de una sentencia" -#: sql_help.h:713 +#: sql_help.h:762 msgid "retrieve rows from a query using a cursor" msgstr "recupera filas de una consulta usando un cursor" -#: sql_help.h:718 +#: sql_help.h:767 msgid "define access privileges" msgstr "define privilegios de acceso" -#: sql_help.h:723 +#: sql_help.h:772 msgid "create new rows in a table" msgstr "crea nuevas filas en una tabla" -#: sql_help.h:728 +#: sql_help.h:777 msgid "listen for a notification" msgstr "escucha notificaciones" -#: sql_help.h:733 +#: sql_help.h:782 msgid "load a shared library file" msgstr "carga un archivo de biblioteca compartida" -#: sql_help.h:738 +#: sql_help.h:787 msgid "lock a table" msgstr "bloquea una tabla" -#: sql_help.h:743 +#: sql_help.h:792 msgid "position a cursor" msgstr "reposiciona un cursor" -#: sql_help.h:748 +#: sql_help.h:797 msgid "generate a notification" msgstr "genera una notificación" -#: sql_help.h:753 +#: sql_help.h:802 msgid "prepare a statement for execution" msgstr "prepara una sentencia para ejecución" -#: sql_help.h:758 +#: sql_help.h:807 msgid "prepare the current transaction for two-phase commit" msgstr "prepara la transacción actual para two-phase commit" -#: sql_help.h:763 +#: sql_help.h:812 msgid "change the ownership of database objects owned by a database role" msgstr "" "cambia de dueño a los objetos de propiedad de un rol de la base de datos" -#: sql_help.h:768 +#: sql_help.h:817 msgid "rebuild indexes" msgstr "reconstruye índices" -#: sql_help.h:773 +#: sql_help.h:822 msgid "destroy a previously defined savepoint" msgstr "destruye un savepoint previamente definido" -#: sql_help.h:778 +#: sql_help.h:827 msgid "restore the value of a run-time parameter to the default value" msgstr "restaura el valor de un parámetro de configuración al valor inicial" -#: sql_help.h:783 +#: sql_help.h:832 msgid "remove access privileges" msgstr "revoca privilegios de acceso" -#: sql_help.h:793 +#: sql_help.h:842 msgid "cancel a transaction that was earlier prepared for two-phase commit" msgstr "" "cancela una transacción que fue previamente preparada para two-phase commit." -#: sql_help.h:798 +#: sql_help.h:847 msgid "roll back to a savepoint" msgstr "descartar hacia un savepoint" -#: sql_help.h:803 +#: sql_help.h:852 msgid "define a new savepoint within the current transaction" msgstr "define un nuevo savepoint en la transacción en curso" -#: sql_help.h:808 sql_help.h:853 sql_help.h:883 +#: sql_help.h:857 +msgid "define or change a security label applied to an object" +msgstr "define o cambia una etiqueta de seguridad sobre un objeto" + +#: sql_help.h:862 sql_help.h:907 sql_help.h:937 msgid "retrieve rows from a table or view" msgstr "recupera filas desde una tabla o vista" -#: sql_help.h:818 +#: sql_help.h:872 msgid "change a run-time parameter" msgstr "cambia un parámetro de configuración" -#: sql_help.h:823 +#: sql_help.h:877 msgid "set constraint check timing for the current transaction" msgstr "" "define el modo de verificación de las restricciones de la transacción en " "curso" -#: sql_help.h:828 +#: sql_help.h:882 msgid "set the current user identifier of the current session" msgstr "define el identificador de usuario actual de la sesión actual" -#: sql_help.h:833 +#: sql_help.h:887 msgid "" "set the session user identifier and the current user identifier of the " "current session" @@ -2670,1027 +2896,1151 @@ msgstr "" "define el identificador del usuario de sesión y el identificador\n" "del usuario actual de la sesión en curso" -#: sql_help.h:838 +#: sql_help.h:892 msgid "set the characteristics of the current transaction" msgstr "define las características de la transacción en curso" -#: sql_help.h:843 +#: sql_help.h:897 msgid "show the value of a run-time parameter" msgstr "muestra el valor de un parámetro de configuración" -#: sql_help.h:858 +#: sql_help.h:912 msgid "empty a table or set of tables" msgstr "vacía una tabla o conjunto de tablas" -#: sql_help.h:863 +#: sql_help.h:917 msgid "stop listening for a notification" msgstr "deja de escuchar una notificación" -#: sql_help.h:868 +#: sql_help.h:922 msgid "update rows of a table" msgstr "actualiza filas de una tabla" -#: sql_help.h:873 +#: sql_help.h:927 msgid "garbage-collect and optionally analyze a database" msgstr "recolecta basura y opcionalmente estadísticas sobre una base de datos" -#: sql_help.h:878 +#: sql_help.h:932 msgid "compute a set of rows" msgstr "calcula un conjunto de registros" -#: sql_help.c:26 sql_help.c:29 sql_help.c:32 sql_help.c:43 sql_help.c:45 -#: sql_help.c:69 sql_help.c:73 sql_help.c:75 sql_help.c:77 sql_help.c:79 -#: sql_help.c:82 sql_help.c:84 sql_help.c:86 sql_help.c:161 sql_help.c:163 -#: sql_help.c:164 sql_help.c:166 sql_help.c:168 sql_help.c:170 sql_help.c:182 -#: sql_help.c:186 sql_help.c:214 sql_help.c:219 sql_help.c:224 sql_help.c:229 -#: sql_help.c:267 sql_help.c:269 sql_help.c:271 sql_help.c:274 sql_help.c:284 -#: sql_help.c:286 sql_help.c:304 sql_help.c:316 sql_help.c:319 sql_help.c:338 -#: sql_help.c:349 sql_help.c:357 sql_help.c:360 sql_help.c:389 sql_help.c:395 -#: sql_help.c:397 sql_help.c:401 sql_help.c:404 sql_help.c:407 sql_help.c:417 -#: sql_help.c:419 sql_help.c:436 sql_help.c:445 sql_help.c:447 sql_help.c:449 -#: sql_help.c:513 sql_help.c:515 sql_help.c:518 sql_help.c:520 sql_help.c:570 -#: sql_help.c:572 sql_help.c:574 sql_help.c:577 sql_help.c:597 sql_help.c:600 -#: sql_help.c:603 sql_help.c:606 sql_help.c:610 sql_help.c:612 sql_help.c:614 -#: sql_help.c:627 sql_help.c:630 sql_help.c:632 sql_help.c:641 sql_help.c:650 -#: sql_help.c:659 sql_help.c:671 sql_help.c:673 sql_help.c:675 sql_help.c:703 -#: sql_help.c:709 sql_help.c:711 sql_help.c:714 sql_help.c:716 sql_help.c:718 -#: sql_help.c:743 sql_help.c:746 sql_help.c:748 sql_help.c:750 sql_help.c:752 -#: sql_help.c:791 sql_help.c:962 sql_help.c:970 sql_help.c:1016 -#: sql_help.c:1031 sql_help.c:1049 sql_help.c:1071 sql_help.c:1087 -#: sql_help.c:1113 sql_help.c:1155 sql_help.c:1177 sql_help.c:1196 -#: sql_help.c:1197 sql_help.c:1214 sql_help.c:1234 sql_help.c:1255 -#: sql_help.c:1282 sql_help.c:1303 sql_help.c:1333 sql_help.c:1513 -#: sql_help.c:1526 sql_help.c:1543 sql_help.c:1559 sql_help.c:1572 -#: sql_help.c:1611 sql_help.c:1614 sql_help.c:1616 sql_help.c:1633 -#: sql_help.c:1659 sql_help.c:1692 sql_help.c:1702 sql_help.c:1711 -#: sql_help.c:1753 sql_help.c:1771 sql_help.c:1779 sql_help.c:1787 -#: sql_help.c:1795 sql_help.c:1804 sql_help.c:1815 sql_help.c:1823 -#: sql_help.c:1831 sql_help.c:1839 sql_help.c:1849 sql_help.c:1858 -#: sql_help.c:1867 sql_help.c:1875 sql_help.c:1883 sql_help.c:1892 -#: sql_help.c:1900 sql_help.c:1916 sql_help.c:1932 sql_help.c:1940 -#: sql_help.c:1948 sql_help.c:1956 sql_help.c:1964 sql_help.c:1973 -#: sql_help.c:1981 sql_help.c:1998 sql_help.c:2013 sql_help.c:2193 -#: sql_help.c:2221 sql_help.c:2248 sql_help.c:2549 sql_help.c:2594 -#: sql_help.c:2698 +#: sql_help.c:26 sql_help.c:29 sql_help.c:32 sql_help.c:44 sql_help.c:46 +#: sql_help.c:48 sql_help.c:59 sql_help.c:61 sql_help.c:63 sql_help.c:87 +#: sql_help.c:91 sql_help.c:93 sql_help.c:95 sql_help.c:97 sql_help.c:100 +#: sql_help.c:102 sql_help.c:104 sql_help.c:179 sql_help.c:181 sql_help.c:182 +#: sql_help.c:184 sql_help.c:186 sql_help.c:188 sql_help.c:276 sql_help.c:281 +#: sql_help.c:306 sql_help.c:308 sql_help.c:311 sql_help.c:313 sql_help.c:351 +#: sql_help.c:356 sql_help.c:361 sql_help.c:366 sql_help.c:404 sql_help.c:406 +#: sql_help.c:408 sql_help.c:411 sql_help.c:421 sql_help.c:423 sql_help.c:442 +#: sql_help.c:446 sql_help.c:459 sql_help.c:462 sql_help.c:465 sql_help.c:485 +#: sql_help.c:497 sql_help.c:505 sql_help.c:508 sql_help.c:511 sql_help.c:541 +#: sql_help.c:547 sql_help.c:549 sql_help.c:553 sql_help.c:556 sql_help.c:559 +#: sql_help.c:569 sql_help.c:571 sql_help.c:588 sql_help.c:597 sql_help.c:599 +#: sql_help.c:601 sql_help.c:675 sql_help.c:677 sql_help.c:680 sql_help.c:682 +#: sql_help.c:740 sql_help.c:742 sql_help.c:744 sql_help.c:747 sql_help.c:768 +#: sql_help.c:771 sql_help.c:774 sql_help.c:777 sql_help.c:781 sql_help.c:783 +#: sql_help.c:785 sql_help.c:787 sql_help.c:801 sql_help.c:804 sql_help.c:806 +#: sql_help.c:808 sql_help.c:818 sql_help.c:820 sql_help.c:830 sql_help.c:832 +#: sql_help.c:841 sql_help.c:862 sql_help.c:864 sql_help.c:866 sql_help.c:869 +#: sql_help.c:871 sql_help.c:873 sql_help.c:911 sql_help.c:917 sql_help.c:919 +#: sql_help.c:922 sql_help.c:924 sql_help.c:926 sql_help.c:951 sql_help.c:954 +#: sql_help.c:956 sql_help.c:958 sql_help.c:960 sql_help.c:1000 +#: sql_help.c:1183 sql_help.c:1191 sql_help.c:1235 sql_help.c:1239 +#: sql_help.c:1249 sql_help.c:1267 sql_help.c:1290 sql_help.c:1322 +#: sql_help.c:1367 sql_help.c:1409 sql_help.c:1431 sql_help.c:1451 +#: sql_help.c:1452 sql_help.c:1469 sql_help.c:1489 sql_help.c:1511 +#: sql_help.c:1539 sql_help.c:1560 sql_help.c:1590 sql_help.c:1771 +#: sql_help.c:1784 sql_help.c:1801 sql_help.c:1817 sql_help.c:1840 +#: sql_help.c:1883 sql_help.c:1887 sql_help.c:1889 sql_help.c:1907 +#: sql_help.c:1934 sql_help.c:1967 sql_help.c:1977 sql_help.c:1986 +#: sql_help.c:2030 sql_help.c:2048 sql_help.c:2056 sql_help.c:2064 +#: sql_help.c:2072 sql_help.c:2088 sql_help.c:2096 sql_help.c:2105 +#: sql_help.c:2116 sql_help.c:2124 sql_help.c:2132 sql_help.c:2140 +#: sql_help.c:2150 sql_help.c:2159 sql_help.c:2168 sql_help.c:2176 +#: sql_help.c:2184 sql_help.c:2193 sql_help.c:2201 sql_help.c:2217 +#: sql_help.c:2233 sql_help.c:2241 sql_help.c:2249 sql_help.c:2257 +#: sql_help.c:2265 sql_help.c:2274 sql_help.c:2282 sql_help.c:2299 +#: sql_help.c:2314 sql_help.c:2506 sql_help.c:2557 sql_help.c:2584 +#: sql_help.c:2927 sql_help.c:2973 sql_help.c:3080 msgid "name" msgstr "nombre" -#: sql_help.c:27 sql_help.c:30 sql_help.c:33 sql_help.c:524 sql_help.c:528 -#: sql_help.c:1754 +#: sql_help.c:27 sql_help.c:30 sql_help.c:33 sql_help.c:317 sql_help.c:320 +#: sql_help.c:2031 msgid "type" msgstr "tipo" -#: sql_help.c:28 sql_help.c:44 sql_help.c:74 sql_help.c:223 sql_help.c:256 -#: sql_help.c:268 sql_help.c:285 sql_help.c:318 sql_help.c:359 sql_help.c:396 -#: sql_help.c:418 sql_help.c:448 sql_help.c:519 sql_help.c:571 sql_help.c:613 -#: sql_help.c:631 sql_help.c:642 sql_help.c:651 sql_help.c:661 sql_help.c:672 -#: sql_help.c:710 sql_help.c:751 +#: sql_help.c:28 sql_help.c:45 sql_help.c:60 sql_help.c:92 sql_help.c:312 +#: sql_help.c:360 sql_help.c:393 sql_help.c:405 sql_help.c:422 sql_help.c:461 +#: sql_help.c:507 sql_help.c:548 sql_help.c:570 sql_help.c:600 sql_help.c:681 +#: sql_help.c:741 sql_help.c:784 sql_help.c:805 sql_help.c:819 sql_help.c:831 +#: sql_help.c:843 sql_help.c:870 sql_help.c:918 sql_help.c:959 msgid "new_name" msgstr "nuevo_nombre" -#: sql_help.c:31 sql_help.c:46 sql_help.c:76 sql_help.c:169 sql_help.c:187 -#: sql_help.c:228 sql_help.c:287 sql_help.c:296 sql_help.c:307 sql_help.c:321 -#: sql_help.c:362 sql_help.c:420 sql_help.c:446 sql_help.c:465 sql_help.c:558 -#: sql_help.c:573 sql_help.c:615 sql_help.c:633 sql_help.c:674 sql_help.c:749 +#: sql_help.c:31 sql_help.c:47 sql_help.c:62 sql_help.c:94 sql_help.c:187 +#: sql_help.c:282 sql_help.c:322 sql_help.c:365 sql_help.c:424 sql_help.c:433 +#: sql_help.c:445 sql_help.c:464 sql_help.c:510 sql_help.c:572 sql_help.c:598 +#: sql_help.c:617 sql_help.c:725 sql_help.c:743 sql_help.c:786 sql_help.c:807 +#: sql_help.c:865 sql_help.c:957 msgid "new_owner" msgstr "nuevo_dueño" -#: sql_help.c:34 sql_help.c:171 sql_help.c:233 sql_help.c:450 sql_help.c:521 -#: sql_help.c:676 sql_help.c:753 +#: sql_help.c:34 sql_help.c:49 sql_help.c:64 sql_help.c:189 sql_help.c:228 +#: sql_help.c:314 sql_help.c:370 sql_help.c:449 sql_help.c:467 sql_help.c:513 +#: sql_help.c:602 sql_help.c:683 sql_help.c:788 sql_help.c:809 sql_help.c:821 +#: sql_help.c:833 sql_help.c:872 sql_help.c:961 msgid "new_schema" msgstr "nuevo_esquema" -#: sql_help.c:70 sql_help.c:184 sql_help.c:390 sql_help.c:462 sql_help.c:628 -#: sql_help.c:704 sql_help.c:730 sql_help.c:922 sql_help.c:927 sql_help.c:1089 -#: sql_help.c:1156 sql_help.c:1283 sql_help.c:1354 sql_help.c:1528 -#: sql_help.c:1660 sql_help.c:1682 +#: sql_help.c:88 sql_help.c:279 sql_help.c:323 sql_help.c:542 sql_help.c:614 +#: sql_help.c:802 sql_help.c:912 sql_help.c:938 sql_help.c:1142 +#: sql_help.c:1147 sql_help.c:1325 sql_help.c:1343 sql_help.c:1410 +#: sql_help.c:1540 sql_help.c:1611 sql_help.c:1786 sql_help.c:1935 +#: sql_help.c:1957 sql_help.c:2332 msgid "option" msgstr "opción" -#: sql_help.c:71 sql_help.c:391 sql_help.c:705 sql_help.c:1157 sql_help.c:1284 -#: sql_help.c:1661 +#: sql_help.c:89 sql_help.c:543 sql_help.c:913 sql_help.c:1411 sql_help.c:1541 +#: sql_help.c:1936 msgid "where option can be:" msgstr "donde opción puede ser:" -#: sql_help.c:72 sql_help.c:392 sql_help.c:706 sql_help.c:1056 sql_help.c:1285 -#: sql_help.c:1662 +#: sql_help.c:90 sql_help.c:544 sql_help.c:914 sql_help.c:1274 sql_help.c:1542 +#: sql_help.c:1937 msgid "connlimit" msgstr "límite_conexiones" -#: sql_help.c:78 sql_help.c:559 +#: sql_help.c:96 sql_help.c:726 msgid "new_tablespace" msgstr "nuevo_tablespace" -#: sql_help.c:80 sql_help.c:83 sql_help.c:85 sql_help.c:237 sql_help.c:239 -#: sql_help.c:240 sql_help.c:399 sql_help.c:403 sql_help.c:406 sql_help.c:712 -#: sql_help.c:715 sql_help.c:717 sql_help.c:1124 sql_help.c:2265 -#: sql_help.c:2538 +#: sql_help.c:98 sql_help.c:101 sql_help.c:103 sql_help.c:374 sql_help.c:376 +#: sql_help.c:377 sql_help.c:551 sql_help.c:555 sql_help.c:558 sql_help.c:920 +#: sql_help.c:923 sql_help.c:925 sql_help.c:1378 sql_help.c:2601 +#: sql_help.c:2916 msgid "configuration_parameter" msgstr "parámetro_de_configuración" -#: sql_help.c:81 sql_help.c:185 sql_help.c:238 sql_help.c:273 sql_help.c:400 -#: sql_help.c:463 sql_help.c:538 sql_help.c:554 sql_help.c:576 sql_help.c:629 -#: sql_help.c:713 sql_help.c:731 sql_help.c:1090 sql_help.c:1125 -#: sql_help.c:1126 sql_help.c:1184 sql_help.c:1355 sql_help.c:1428 -#: sql_help.c:1437 sql_help.c:1468 sql_help.c:1490 sql_help.c:1529 -#: sql_help.c:1683 sql_help.c:2539 sql_help.c:2540 +#: sql_help.c:99 sql_help.c:280 sql_help.c:324 sql_help.c:375 sql_help.c:410 +#: sql_help.c:552 sql_help.c:615 sql_help.c:702 sql_help.c:720 sql_help.c:746 +#: sql_help.c:803 sql_help.c:921 sql_help.c:939 sql_help.c:1326 +#: sql_help.c:1344 sql_help.c:1379 sql_help.c:1380 sql_help.c:1439 +#: sql_help.c:1612 sql_help.c:1686 sql_help.c:1694 sql_help.c:1726 +#: sql_help.c:1748 sql_help.c:1787 sql_help.c:1958 sql_help.c:2917 +#: sql_help.c:2918 msgid "value" msgstr "valor" -#: sql_help.c:133 +#: sql_help.c:151 msgid "target_role" msgstr "rol_destino" -#: sql_help.c:134 sql_help.c:1318 sql_help.c:2119 sql_help.c:2126 -#: sql_help.c:2138 sql_help.c:2144 sql_help.c:2348 sql_help.c:2355 -#: sql_help.c:2367 sql_help.c:2373 +#: sql_help.c:152 sql_help.c:1309 sql_help.c:1575 sql_help.c:2430 +#: sql_help.c:2437 sql_help.c:2449 sql_help.c:2455 sql_help.c:2684 +#: sql_help.c:2691 sql_help.c:2703 sql_help.c:2709 msgid "schema_name" msgstr "nombre_de_esquema" -#: sql_help.c:135 +#: sql_help.c:153 msgid "abbreviated_grant_or_revoke" msgstr "grant_o_revoke_abreviado" -#: sql_help.c:136 +#: sql_help.c:154 msgid "where abbreviated_grant_or_revoke is one of:" msgstr "donde grant_o_revoke_abreviado es uno de:" -#: sql_help.c:137 sql_help.c:138 sql_help.c:139 sql_help.c:140 sql_help.c:141 -#: sql_help.c:142 sql_help.c:1160 sql_help.c:1161 sql_help.c:1162 -#: sql_help.c:1163 sql_help.c:1164 sql_help.c:1288 sql_help.c:1289 -#: sql_help.c:1290 sql_help.c:1291 sql_help.c:1292 sql_help.c:1665 -#: sql_help.c:1666 sql_help.c:1667 sql_help.c:1668 sql_help.c:1669 -#: sql_help.c:2120 sql_help.c:2124 sql_help.c:2127 sql_help.c:2129 -#: sql_help.c:2131 sql_help.c:2133 sql_help.c:2139 sql_help.c:2141 -#: sql_help.c:2143 sql_help.c:2145 sql_help.c:2147 sql_help.c:2148 -#: sql_help.c:2149 sql_help.c:2349 sql_help.c:2353 sql_help.c:2356 -#: sql_help.c:2358 sql_help.c:2360 sql_help.c:2362 sql_help.c:2368 -#: sql_help.c:2370 sql_help.c:2372 sql_help.c:2374 sql_help.c:2376 -#: sql_help.c:2377 sql_help.c:2378 sql_help.c:2559 +#: sql_help.c:155 sql_help.c:156 sql_help.c:157 sql_help.c:158 sql_help.c:159 +#: sql_help.c:160 sql_help.c:1414 sql_help.c:1415 sql_help.c:1416 +#: sql_help.c:1417 sql_help.c:1418 sql_help.c:1545 sql_help.c:1546 +#: sql_help.c:1547 sql_help.c:1548 sql_help.c:1549 sql_help.c:1940 +#: sql_help.c:1941 sql_help.c:1942 sql_help.c:1943 sql_help.c:1944 +#: sql_help.c:2431 sql_help.c:2435 sql_help.c:2438 sql_help.c:2440 +#: sql_help.c:2442 sql_help.c:2444 sql_help.c:2450 sql_help.c:2452 +#: sql_help.c:2454 sql_help.c:2456 sql_help.c:2458 sql_help.c:2459 +#: sql_help.c:2460 sql_help.c:2685 sql_help.c:2689 sql_help.c:2692 +#: sql_help.c:2694 sql_help.c:2696 sql_help.c:2698 sql_help.c:2704 +#: sql_help.c:2706 sql_help.c:2708 sql_help.c:2710 sql_help.c:2712 +#: sql_help.c:2713 sql_help.c:2714 sql_help.c:2937 msgid "role_name" msgstr "nombre_de_rol" -#: sql_help.c:162 sql_help.c:529 sql_help.c:531 sql_help.c:745 sql_help.c:1073 -#: sql_help.c:1077 sql_help.c:1181 sql_help.c:1441 sql_help.c:1450 -#: sql_help.c:1472 sql_help.c:2161 sql_help.c:2446 sql_help.c:2447 -#: sql_help.c:2451 sql_help.c:2456 sql_help.c:2513 sql_help.c:2514 -#: sql_help.c:2519 sql_help.c:2524 sql_help.c:2645 sql_help.c:2646 -#: sql_help.c:2650 sql_help.c:2655 sql_help.c:2722 sql_help.c:2724 -#: sql_help.c:2755 sql_help.c:2797 sql_help.c:2798 sql_help.c:2802 -#: sql_help.c:2807 +#: sql_help.c:180 sql_help.c:693 sql_help.c:695 sql_help.c:953 sql_help.c:1293 +#: sql_help.c:1297 sql_help.c:1435 sql_help.c:1698 sql_help.c:1708 +#: sql_help.c:1730 sql_help.c:2474 sql_help.c:2822 sql_help.c:2823 +#: sql_help.c:2827 sql_help.c:2832 sql_help.c:2891 sql_help.c:2892 +#: sql_help.c:2897 sql_help.c:2902 sql_help.c:3025 sql_help.c:3026 +#: sql_help.c:3030 sql_help.c:3035 sql_help.c:3106 sql_help.c:3108 +#: sql_help.c:3139 sql_help.c:3181 sql_help.c:3182 sql_help.c:3186 +#: sql_help.c:3191 msgid "expression" msgstr "expresión" -#: sql_help.c:165 +#: sql_help.c:183 msgid "domain_constraint" msgstr "restricción_de_dominio" -#: sql_help.c:167 sql_help.c:543 sql_help.c:845 sql_help.c:1076 -#: sql_help.c:1440 sql_help.c:1449 +#: sql_help.c:185 sql_help.c:708 sql_help.c:709 sql_help.c:728 sql_help.c:1059 +#: sql_help.c:1296 sql_help.c:1697 sql_help.c:1707 msgid "constraint_name" msgstr "nombre_restricción" -#: sql_help.c:183 sql_help.c:1088 sql_help.c:1200 -msgid "valfunction" -msgstr "función_val" +#: sql_help.c:225 sql_help.c:227 sql_help.c:229 sql_help.c:231 sql_help.c:1308 +#: sql_help.c:2080 +msgid "extension_name" +msgstr "nombre_de_extensión" + +#: sql_help.c:226 sql_help.c:613 +msgid "new_version" +msgstr "nueva_versión" -#: sql_help.c:215 sql_help.c:220 sql_help.c:225 sql_help.c:230 sql_help.c:851 -#: sql_help.c:1114 sql_help.c:1805 sql_help.c:2135 sql_help.c:2364 +#: sql_help.c:230 sql_help.c:232 +msgid "member_object" +msgstr "objeto_miembro" + +#: sql_help.c:233 +msgid "where member_object is:" +msgstr "dondo objeto_miembro es:" + +#: sql_help.c:234 sql_help.c:1052 sql_help.c:2771 +msgid "agg_name" +msgstr "nombre_agg" + +#: sql_help.c:235 sql_help.c:1053 sql_help.c:2772 +msgid "agg_type" +msgstr "tipo_agg" + +#: sql_help.c:236 sql_help.c:1054 sql_help.c:1215 sql_help.c:1219 +#: sql_help.c:1221 sql_help.c:2039 +msgid "source_type" +msgstr "tipo_fuente" + +#: sql_help.c:237 sql_help.c:1055 sql_help.c:1216 sql_help.c:1220 +#: sql_help.c:1222 sql_help.c:2040 +msgid "target_type" +msgstr "tipo_destino" + +#: sql_help.c:238 sql_help.c:239 sql_help.c:240 sql_help.c:241 sql_help.c:242 +#: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:255 sql_help.c:256 +#: sql_help.c:257 sql_help.c:258 sql_help.c:259 sql_help.c:260 sql_help.c:261 +#: sql_help.c:262 sql_help.c:263 sql_help.c:264 sql_help.c:1056 +#: sql_help.c:1061 sql_help.c:1062 sql_help.c:1063 sql_help.c:1064 +#: sql_help.c:1065 sql_help.c:1066 sql_help.c:1071 sql_help.c:1076 +#: sql_help.c:1078 sql_help.c:1080 sql_help.c:1081 sql_help.c:1084 +#: sql_help.c:1085 sql_help.c:1086 sql_help.c:1087 sql_help.c:1088 +#: sql_help.c:1089 sql_help.c:1090 sql_help.c:1091 sql_help.c:1092 +#: sql_help.c:1095 sql_help.c:1096 sql_help.c:2768 sql_help.c:2773 +#: sql_help.c:2774 sql_help.c:2780 sql_help.c:2781 sql_help.c:2782 +#: sql_help.c:2783 sql_help.c:2784 +msgid "object_name" +msgstr "nombre_de_objeto" + +#: sql_help.c:243 sql_help.c:495 sql_help.c:1067 sql_help.c:1217 +#: sql_help.c:1252 sql_help.c:1470 sql_help.c:1501 sql_help.c:1845 +#: sql_help.c:2445 sql_help.c:2699 sql_help.c:2775 sql_help.c:2848 +#: sql_help.c:2853 sql_help.c:3051 sql_help.c:3056 sql_help.c:3207 +#: sql_help.c:3212 +msgid "function_name" +msgstr "nombre_de_función" + +#: sql_help.c:244 sql_help.c:352 sql_help.c:357 sql_help.c:362 sql_help.c:367 +#: sql_help.c:1068 sql_help.c:1368 sql_help.c:2106 sql_help.c:2446 +#: sql_help.c:2700 sql_help.c:2776 msgid "argmode" msgstr "modo_arg" -#: sql_help.c:216 sql_help.c:221 sql_help.c:226 sql_help.c:231 sql_help.c:852 -#: sql_help.c:1115 sql_help.c:1806 +#: sql_help.c:245 sql_help.c:353 sql_help.c:358 sql_help.c:363 sql_help.c:368 +#: sql_help.c:1069 sql_help.c:1369 sql_help.c:2107 sql_help.c:2777 msgid "argname" msgstr "nombre_arg" -#: sql_help.c:217 sql_help.c:222 sql_help.c:227 sql_help.c:232 sql_help.c:853 -#: sql_help.c:1116 sql_help.c:1807 +#: sql_help.c:246 sql_help.c:354 sql_help.c:359 sql_help.c:364 sql_help.c:369 +#: sql_help.c:1070 sql_help.c:1370 sql_help.c:2108 sql_help.c:2778 msgid "argtype" msgstr "tipo_arg" -#: sql_help.c:218 sql_help.c:514 sql_help.c:1446 sql_help.c:1447 -#: sql_help.c:1463 sql_help.c:1464 +#: sql_help.c:247 sql_help.c:488 sql_help.c:1073 sql_help.c:1494 +msgid "operator_name" +msgstr "nombre_operador" + +#: sql_help.c:248 sql_help.c:443 sql_help.c:447 sql_help.c:1074 +#: sql_help.c:1471 sql_help.c:2141 +msgid "left_type" +msgstr "tipo_izq" + +#: sql_help.c:249 sql_help.c:444 sql_help.c:448 sql_help.c:1075 +#: sql_help.c:1472 sql_help.c:2142 +msgid "right_type" +msgstr "tipo_der" + +#: sql_help.c:251 sql_help.c:253 sql_help.c:460 sql_help.c:463 sql_help.c:466 +#: sql_help.c:486 sql_help.c:498 sql_help.c:506 sql_help.c:509 sql_help.c:512 +#: sql_help.c:1077 sql_help.c:1079 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1713 sql_help.c:2151 sql_help.c:2160 +msgid "index_method" +msgstr "método_de_índice" + +#: sql_help.c:277 sql_help.c:1323 +msgid "handler_function" +msgstr "función_manejadora" + +#: sql_help.c:278 sql_help.c:1324 +msgid "validator_function" +msgstr "función_validadora" + +#: sql_help.c:307 sql_help.c:355 sql_help.c:676 sql_help.c:863 sql_help.c:1704 +#: sql_help.c:1705 sql_help.c:1721 sql_help.c:1722 msgid "action" msgstr "acción" -#: sql_help.c:234 sql_help.c:522 +#: sql_help.c:309 sql_help.c:316 sql_help.c:318 sql_help.c:319 sql_help.c:321 +#: sql_help.c:596 sql_help.c:678 sql_help.c:685 sql_help.c:689 sql_help.c:690 +#: sql_help.c:694 sql_help.c:696 sql_help.c:697 sql_help.c:698 sql_help.c:700 +#: sql_help.c:703 sql_help.c:705 sql_help.c:952 sql_help.c:955 sql_help.c:970 +#: sql_help.c:1140 sql_help.c:1144 sql_help.c:1156 sql_help.c:1157 +#: sql_help.c:1434 sql_help.c:1597 sql_help.c:1729 sql_help.c:2432 +#: sql_help.c:2433 sql_help.c:2473 sql_help.c:2686 sql_help.c:2687 +#: sql_help.c:3105 sql_help.c:3107 sql_help.c:3124 sql_help.c:3127 +msgid "column" +msgstr "columna" + +#: sql_help.c:310 sql_help.c:679 +msgid "new_column" +msgstr "nueva_columna" + +#: sql_help.c:315 sql_help.c:371 sql_help.c:684 sql_help.c:876 msgid "where action is one of:" msgstr "donde acción es una de:" -#: sql_help.c:235 sql_help.c:1122 +#: sql_help.c:372 sql_help.c:1376 msgid "execution_cost" msgstr "costo_de_ejecución" -#: sql_help.c:236 sql_help.c:1123 +#: sql_help.c:373 sql_help.c:1377 msgid "result_rows" msgstr "núm_de_filas" -#: sql_help.c:251 sql_help.c:253 sql_help.c:255 +#: sql_help.c:388 sql_help.c:390 sql_help.c:392 msgid "group_name" msgstr "nombre_de_grupo" -#: sql_help.c:252 sql_help.c:254 sql_help.c:728 sql_help.c:1050 -#: sql_help.c:1319 sql_help.c:1321 sql_help.c:1501 sql_help.c:1680 -#: sql_help.c:1989 sql_help.c:2569 +#: sql_help.c:389 sql_help.c:391 sql_help.c:936 sql_help.c:1268 +#: sql_help.c:1576 sql_help.c:1578 sql_help.c:1759 sql_help.c:1955 +#: sql_help.c:2290 sql_help.c:2947 msgid "user_name" msgstr "nombre_de_usuario" -#: sql_help.c:270 sql_help.c:1500 sql_help.c:1924 sql_help.c:2146 -#: sql_help.c:2375 +#: sql_help.c:407 sql_help.c:1758 sql_help.c:2225 sql_help.c:2457 +#: sql_help.c:2711 msgid "tablespace_name" msgstr "nombre_de_tablespace" -#: sql_help.c:272 sql_help.c:275 sql_help.c:553 sql_help.c:555 sql_help.c:1183 -#: sql_help.c:1427 sql_help.c:1436 sql_help.c:1467 sql_help.c:1489 +#: sql_help.c:409 sql_help.c:412 sql_help.c:719 sql_help.c:721 sql_help.c:1438 +#: sql_help.c:1685 sql_help.c:1693 sql_help.c:1725 sql_help.c:1747 msgid "storage_parameter" msgstr "parámetro_de_almacenamiento" -#: sql_help.c:295 sql_help.c:855 +#: sql_help.c:432 sql_help.c:1072 sql_help.c:2779 msgid "large_object_oid" msgstr "oid_de_objeto_grande" -#: sql_help.c:305 sql_help.c:857 sql_help.c:1216 sql_help.c:1840 -msgid "left_type" -msgstr "tipo_izq" - -#: sql_help.c:306 sql_help.c:858 sql_help.c:1217 sql_help.c:1841 -msgid "right_type" -msgstr "tipo_der" - -#: sql_help.c:317 sql_help.c:320 sql_help.c:339 sql_help.c:350 sql_help.c:358 -#: sql_help.c:361 sql_help.c:860 sql_help.c:862 sql_help.c:1236 -#: sql_help.c:1256 sql_help.c:1455 sql_help.c:1850 sql_help.c:1859 -msgid "index_method" -msgstr "método_de_índice" - -#: sql_help.c:340 sql_help.c:351 sql_help.c:1238 +#: sql_help.c:487 sql_help.c:499 sql_help.c:1493 msgid "strategy_number" msgstr "número_de_estrategia" -#: sql_help.c:341 sql_help.c:856 sql_help.c:1239 -msgid "operator_name" -msgstr "nombre_operador" - -#: sql_help.c:342 sql_help.c:343 sql_help.c:345 sql_help.c:346 sql_help.c:352 -#: sql_help.c:353 sql_help.c:355 sql_help.c:356 sql_help.c:1240 -#: sql_help.c:1241 sql_help.c:1243 sql_help.c:1244 +#: sql_help.c:489 sql_help.c:490 sql_help.c:493 sql_help.c:494 sql_help.c:500 +#: sql_help.c:501 sql_help.c:503 sql_help.c:504 sql_help.c:1495 +#: sql_help.c:1496 sql_help.c:1499 sql_help.c:1500 msgid "op_type" msgstr "tipo_op" -#: sql_help.c:344 sql_help.c:354 sql_help.c:1242 +#: sql_help.c:491 sql_help.c:1497 +msgid "sort_family_name" +msgstr "nombre_familia_ordenamiento" + +#: sql_help.c:492 sql_help.c:502 sql_help.c:1498 msgid "support_number" msgstr "número_de_soporte" -#: sql_help.c:347 sql_help.c:850 sql_help.c:996 sql_help.c:1021 -#: sql_help.c:1034 sql_help.c:1215 sql_help.c:1245 sql_help.c:1576 -#: sql_help.c:2134 sql_help.c:2363 sql_help.c:2472 sql_help.c:2477 -#: sql_help.c:2671 sql_help.c:2676 sql_help.c:2823 sql_help.c:2828 -msgid "function_name" -msgstr "nombre_de_función" - -#: sql_help.c:348 sql_help.c:997 sql_help.c:1246 +#: sql_help.c:496 sql_help.c:1218 sql_help.c:1502 msgid "argument_type" msgstr "tipo_argumento" -#: sql_help.c:393 sql_help.c:707 sql_help.c:1158 sql_help.c:1286 -#: sql_help.c:1663 +#: sql_help.c:545 sql_help.c:915 sql_help.c:1412 sql_help.c:1543 +#: sql_help.c:1938 msgid "password" msgstr "contraseña" -#: sql_help.c:394 sql_help.c:708 sql_help.c:1159 sql_help.c:1287 -#: sql_help.c:1664 +#: sql_help.c:546 sql_help.c:916 sql_help.c:1413 sql_help.c:1544 +#: sql_help.c:1939 msgid "timestamp" msgstr "fecha_hora" -#: sql_help.c:398 sql_help.c:402 sql_help.c:405 sql_help.c:408 sql_help.c:2128 -#: sql_help.c:2357 +#: sql_help.c:550 sql_help.c:554 sql_help.c:557 sql_help.c:560 sql_help.c:2439 +#: sql_help.c:2693 msgid "database_name" msgstr "nombre_de_base_de_datos" -#: sql_help.c:437 sql_help.c:1334 +#: sql_help.c:589 sql_help.c:1591 msgid "increment" msgstr "incremento" -#: sql_help.c:438 sql_help.c:1335 +#: sql_help.c:590 sql_help.c:1592 msgid "minvalue" msgstr "valormin" -#: sql_help.c:439 sql_help.c:1336 +#: sql_help.c:591 sql_help.c:1593 msgid "maxvalue" msgstr "valormax" -#: sql_help.c:440 sql_help.c:1337 sql_help.c:2459 sql_help.c:2527 -#: sql_help.c:2658 sql_help.c:2759 sql_help.c:2810 +#: sql_help.c:592 sql_help.c:1594 sql_help.c:2835 sql_help.c:2905 +#: sql_help.c:3038 sql_help.c:3143 sql_help.c:3194 msgid "start" msgstr "inicio" -#: sql_help.c:441 +#: sql_help.c:593 msgid "restart" msgstr "reinicio" -#: sql_help.c:442 sql_help.c:1338 +#: sql_help.c:594 sql_help.c:1595 msgid "cache" msgstr "cache" -#: sql_help.c:444 sql_help.c:516 sql_help.c:523 sql_help.c:526 sql_help.c:527 -#: sql_help.c:530 sql_help.c:532 sql_help.c:533 sql_help.c:534 sql_help.c:536 -#: sql_help.c:539 sql_help.c:541 sql_help.c:744 sql_help.c:747 sql_help.c:762 -#: sql_help.c:920 sql_help.c:924 sql_help.c:936 sql_help.c:937 sql_help.c:1180 -#: sql_help.c:1340 sql_help.c:1471 sql_help.c:2121 sql_help.c:2122 -#: sql_help.c:2160 sql_help.c:2350 sql_help.c:2351 sql_help.c:2721 -#: sql_help.c:2723 sql_help.c:2740 sql_help.c:2743 -msgid "column" -msgstr "columna" - -#: sql_help.c:460 sql_help.c:464 sql_help.c:729 sql_help.c:1350 -#: sql_help.c:1681 sql_help.c:1908 sql_help.c:1990 sql_help.c:2132 -#: sql_help.c:2361 +#: sql_help.c:612 sql_help.c:616 sql_help.c:937 sql_help.c:1342 +#: sql_help.c:1607 sql_help.c:1956 sql_help.c:2209 sql_help.c:2291 +#: sql_help.c:2443 sql_help.c:2697 msgid "server_name" msgstr "nombre_de_servidor" -#: sql_help.c:461 -msgid "new_version" -msgstr "nueva_versión" +#: sql_help.c:686 sql_help.c:691 sql_help.c:878 sql_help.c:882 sql_help.c:1291 +#: sql_help.c:1341 sql_help.c:1490 sql_help.c:1678 sql_help.c:1885 +#: sql_help.c:2558 +msgid "data_type" +msgstr "tipo_de_dato" -#: sql_help.c:517 -msgid "new_column" -msgstr "nueva_columna" +#: sql_help.c:687 sql_help.c:692 sql_help.c:879 sql_help.c:883 sql_help.c:1292 +#: sql_help.c:1436 sql_help.c:1679 sql_help.c:1886 +msgid "collation" +msgstr "ordenamiento" -#: sql_help.c:525 sql_help.c:1422 sql_help.c:1434 +#: sql_help.c:688 sql_help.c:1680 sql_help.c:1691 msgid "column_constraint" msgstr "restricción_de_columna" -#: sql_help.c:535 +#: sql_help.c:699 msgid "integer" msgstr "entero" -#: sql_help.c:537 sql_help.c:540 +#: sql_help.c:701 sql_help.c:704 msgid "attribute_option" msgstr "opción_de_atributo" -#: sql_help.c:542 sql_help.c:1423 sql_help.c:1435 +#: sql_help.c:706 sql_help.c:1681 sql_help.c:1692 msgid "table_constraint" msgstr "restricción_de_tabla" -#: sql_help.c:544 sql_help.c:545 sql_help.c:546 sql_help.c:547 sql_help.c:874 +#: sql_help.c:707 +msgid "table_constraint_using_index" +msgstr "restricción_de_tabla_con_índice" + +#: sql_help.c:710 sql_help.c:711 sql_help.c:712 sql_help.c:713 sql_help.c:1093 msgid "trigger_name" msgstr "nombre_disparador" -#: sql_help.c:548 sql_help.c:549 sql_help.c:550 sql_help.c:551 +#: sql_help.c:714 sql_help.c:715 sql_help.c:716 sql_help.c:717 msgid "rewrite_rule_name" msgstr "nombre_regla_de_reescritura" -#: sql_help.c:552 sql_help.c:801 +#: sql_help.c:718 sql_help.c:729 sql_help.c:1010 msgid "index_name" msgstr "nombre_índice" -#: sql_help.c:556 sql_help.c:557 sql_help.c:1424 sql_help.c:1426 +#: sql_help.c:722 sql_help.c:723 sql_help.c:1682 sql_help.c:1684 msgid "parent_table" msgstr "tabla_padre" -#: sql_help.c:575 sql_help.c:578 +#: sql_help.c:724 sql_help.c:1689 +msgid "type_name" +msgstr "nombre_de_tipo" + +#: sql_help.c:727 +msgid "and table_constraint_using_index is:" +msgstr "y restricción_de_tabla_con_índice es:" + +#: sql_help.c:745 sql_help.c:748 msgid "tablespace_option" msgstr "opción_de_tablespace" -#: sql_help.c:598 sql_help.c:601 sql_help.c:607 sql_help.c:611 +#: sql_help.c:769 sql_help.c:772 sql_help.c:778 sql_help.c:782 msgid "token_type" msgstr "tipo_de_token" -#: sql_help.c:599 sql_help.c:602 +#: sql_help.c:770 sql_help.c:773 msgid "dictionary_name" msgstr "nombre_diccionario" -#: sql_help.c:604 sql_help.c:608 +#: sql_help.c:775 sql_help.c:779 msgid "old_dictionary" msgstr "diccionario_antiguo" -#: sql_help.c:605 sql_help.c:609 +#: sql_help.c:776 sql_help.c:780 msgid "new_dictionary" msgstr "diccionario_nuevo" -#: sql_help.c:775 sql_help.c:2583 sql_help.c:2584 sql_help.c:2607 +#: sql_help.c:867 sql_help.c:877 sql_help.c:880 sql_help.c:881 sql_help.c:1884 +msgid "attribute_name" +msgstr "nombre_atributo" + +#: sql_help.c:868 +msgid "new_attribute_name" +msgstr "nuevo_nombre_atributo" + +#: sql_help.c:874 +msgid "new_enum_value" +msgstr "nuevo_valor_enum" + +#: sql_help.c:875 +msgid "existing_enum_value" +msgstr "valor_enum_existente" + +#: sql_help.c:984 sql_help.c:2962 sql_help.c:2963 sql_help.c:2987 msgid "transaction_mode" msgstr "modo_de_transacción" -#: sql_help.c:776 sql_help.c:2585 sql_help.c:2608 +#: sql_help.c:985 sql_help.c:2964 sql_help.c:2988 msgid "where transaction_mode is one of:" msgstr "donde modo_de_transacción es uno de:" -#: sql_help.c:800 sql_help.c:839 sql_help.c:846 sql_help.c:866 sql_help.c:875 -#: sql_help.c:919 sql_help.c:923 sql_help.c:1018 sql_help.c:1418 -#: sql_help.c:1430 sql_help.c:1487 sql_help.c:2118 sql_help.c:2123 -#: sql_help.c:2347 sql_help.c:2352 sql_help.c:2461 sql_help.c:2463 -#: sql_help.c:2489 sql_help.c:2529 sql_help.c:2660 sql_help.c:2662 -#: sql_help.c:2688 sql_help.c:2812 sql_help.c:2814 sql_help.c:2840 +#: sql_help.c:1009 sql_help.c:1060 sql_help.c:1083 sql_help.c:1094 +#: sql_help.c:1139 sql_help.c:1143 sql_help.c:1339 sql_help.c:1676 +#: sql_help.c:1688 sql_help.c:1745 sql_help.c:2429 sql_help.c:2434 +#: sql_help.c:2683 sql_help.c:2688 sql_help.c:2769 sql_help.c:2837 +#: sql_help.c:2839 sql_help.c:2868 sql_help.c:2907 sql_help.c:3040 +#: sql_help.c:3042 sql_help.c:3071 sql_help.c:3196 sql_help.c:3198 +#: sql_help.c:3227 msgid "table_name" msgstr "nombre_de_tabla" -#: sql_help.c:838 sql_help.c:847 sql_help.c:848 sql_help.c:849 sql_help.c:854 -#: sql_help.c:859 sql_help.c:861 sql_help.c:863 sql_help.c:864 sql_help.c:867 -#: sql_help.c:868 sql_help.c:869 sql_help.c:870 sql_help.c:871 sql_help.c:872 -#: sql_help.c:873 sql_help.c:876 sql_help.c:877 -msgid "object_name" -msgstr "nombre_de_objeto" +#: sql_help.c:1057 +msgid "relation_name" +msgstr "nombre_relación" -#: sql_help.c:840 sql_help.c:1119 sql_help.c:1419 sql_help.c:1432 -#: sql_help.c:1451 sql_help.c:1453 sql_help.c:1460 sql_help.c:1488 -#: sql_help.c:1693 sql_help.c:2487 sql_help.c:2686 sql_help.c:2838 +#: sql_help.c:1058 sql_help.c:1340 sql_help.c:1373 sql_help.c:1677 +#: sql_help.c:1690 sql_help.c:1709 sql_help.c:1711 sql_help.c:1718 +#: sql_help.c:1746 sql_help.c:1848 sql_help.c:1968 sql_help.c:2770 +#: sql_help.c:2863 sql_help.c:3066 sql_help.c:3222 msgid "column_name" msgstr "nombre_de_columna" -#: sql_help.c:841 -msgid "agg_name" -msgstr "nombre_agg" - -#: sql_help.c:842 -msgid "agg_type" -msgstr "tipo_agg" - -#: sql_help.c:843 sql_help.c:994 sql_help.c:998 sql_help.c:1000 -#: sql_help.c:1762 -msgid "source_type" -msgstr "tipo_fuente" - -#: sql_help.c:844 sql_help.c:995 sql_help.c:999 sql_help.c:1001 -#: sql_help.c:1763 -msgid "target_type" -msgstr "tipo_destino" - -#: sql_help.c:865 +#: sql_help.c:1082 msgid "rule_name" msgstr "nombre_regla" -#: sql_help.c:878 +#: sql_help.c:1097 msgid "text" msgstr "texto" -#: sql_help.c:893 sql_help.c:2231 sql_help.c:2393 +#: sql_help.c:1112 sql_help.c:2567 sql_help.c:2729 msgid "transaction_id" msgstr "id_de_transacción" -#: sql_help.c:921 sql_help.c:926 sql_help.c:2180 +#: sql_help.c:1141 sql_help.c:1146 sql_help.c:2493 msgid "filename" msgstr "nombre_de_archivo" -#: sql_help.c:925 sql_help.c:1492 sql_help.c:1694 sql_help.c:1712 -#: sql_help.c:2162 +#: sql_help.c:1145 sql_help.c:1750 sql_help.c:1969 sql_help.c:1987 +#: sql_help.c:2475 msgid "query" msgstr "consulta" -#: sql_help.c:928 +#: sql_help.c:1148 sql_help.c:2335 msgid "where option can be one of:" msgstr "donde opción puede ser una de:" -#: sql_help.c:929 +#: sql_help.c:1149 msgid "format_name" msgstr "nombre_de_formato" -#: sql_help.c:930 sql_help.c:933 sql_help.c:2023 sql_help.c:2024 -#: sql_help.c:2025 sql_help.c:2026 +#: sql_help.c:1150 sql_help.c:1153 sql_help.c:2336 sql_help.c:2337 +#: sql_help.c:2338 sql_help.c:2339 msgid "boolean" msgstr "booleano" -#: sql_help.c:931 +#: sql_help.c:1151 msgid "delimiter_character" msgstr "carácter_delimitador" -#: sql_help.c:932 +#: sql_help.c:1152 msgid "null_string" msgstr "cadena_null" -#: sql_help.c:934 +#: sql_help.c:1154 msgid "quote_character" msgstr " carácter_de_comilla" -#: sql_help.c:935 +#: sql_help.c:1155 msgid "escape_character" msgstr "carácter_de_escape" -#: sql_help.c:963 +#: sql_help.c:1158 +msgid "encoding_name" +msgstr "nombre_codificación" + +#: sql_help.c:1184 msgid "input_data_type" msgstr "tipo_de_dato_entrada" -#: sql_help.c:964 sql_help.c:972 +#: sql_help.c:1185 sql_help.c:1193 msgid "sfunc" msgstr "ftransición" -#: sql_help.c:965 sql_help.c:973 +#: sql_help.c:1186 sql_help.c:1194 msgid "state_data_type" msgstr "tipo_de_dato_de_estado" -#: sql_help.c:966 sql_help.c:974 +#: sql_help.c:1187 sql_help.c:1195 msgid "ffunc" msgstr "ffinal" -#: sql_help.c:967 sql_help.c:975 +#: sql_help.c:1188 sql_help.c:1196 msgid "initial_condition" msgstr "condición_inicial" -#: sql_help.c:968 sql_help.c:976 +#: sql_help.c:1189 sql_help.c:1197 msgid "sort_operator" msgstr "operador_de_ordenamiento" -#: sql_help.c:969 +#: sql_help.c:1190 msgid "or the old syntax" msgstr "o la sintaxis antigua" -#: sql_help.c:971 +#: sql_help.c:1192 msgid "base_type" msgstr "tipo_base" -#: sql_help.c:1017 sql_help.c:1304 sql_help.c:1573 -msgid "event" -msgstr "evento" +#: sql_help.c:1236 +msgid "locale" +msgstr "configuración regional" -#: sql_help.c:1019 -msgid "referenced_table_name" -msgstr "nombre_tabla_referenciada" +#: sql_help.c:1237 sql_help.c:1271 +msgid "lc_collate" +msgstr "lc_collate" -#: sql_help.c:1020 sql_help.c:1306 sql_help.c:1575 sql_help.c:1726 -#: sql_help.c:2450 sql_help.c:2452 sql_help.c:2518 sql_help.c:2520 -#: sql_help.c:2649 sql_help.c:2651 sql_help.c:2726 sql_help.c:2801 -#: sql_help.c:2803 -msgid "condition" -msgstr "condición" +#: sql_help.c:1238 sql_help.c:1272 +msgid "lc_ctype" +msgstr "lc_ctype" -#: sql_help.c:1022 sql_help.c:1577 -msgid "arguments" -msgstr "argumentos" +#: sql_help.c:1240 +msgid "existing_collation" +msgstr "ordenamiento_existente" -#: sql_help.c:1032 +#: sql_help.c:1250 msgid "source_encoding" msgstr "codificación_origen" -#: sql_help.c:1033 +#: sql_help.c:1251 msgid "dest_encoding" msgstr "codificación_destino" -#: sql_help.c:1051 sql_help.c:1527 +#: sql_help.c:1269 sql_help.c:1785 msgid "template" msgstr "plantilla" -#: sql_help.c:1052 +#: sql_help.c:1270 msgid "encoding" msgstr "codificación" -#: sql_help.c:1053 -msgid "lc_collate" -msgstr "lc_collate" - -#: sql_help.c:1054 -msgid "lc_ctype" -msgstr "lc_ctype" - -#: sql_help.c:1055 sql_help.c:1185 sql_help.c:1429 sql_help.c:1438 -#: sql_help.c:1469 sql_help.c:1491 +#: sql_help.c:1273 sql_help.c:1440 sql_help.c:1687 sql_help.c:1695 +#: sql_help.c:1727 sql_help.c:1749 msgid "tablespace" msgstr "tablespace" -#: sql_help.c:1072 sql_help.c:1235 sql_help.c:1420 sql_help.c:1613 -#: sql_help.c:2222 -msgid "data_type" -msgstr "tipo_de_dato" - -#: sql_help.c:1074 +#: sql_help.c:1294 msgid "constraint" msgstr "restricción" -#: sql_help.c:1075 +#: sql_help.c:1295 msgid "where constraint is:" msgstr "donde restricción es:" -#: sql_help.c:1117 sql_help.c:1421 sql_help.c:1433 +#: sql_help.c:1310 +msgid "version" +msgstr "versión" + +#: sql_help.c:1311 +msgid "old_version" +msgstr "versión_antigua" + +#: sql_help.c:1371 sql_help.c:1699 msgid "default_expr" msgstr "expr_por_omisión" -#: sql_help.c:1118 +#: sql_help.c:1372 msgid "rettype" msgstr "tipo_ret" -#: sql_help.c:1120 +#: sql_help.c:1374 msgid "column_type" msgstr "tipo_columna" -#: sql_help.c:1121 sql_help.c:1744 sql_help.c:2140 sql_help.c:2369 +#: sql_help.c:1375 sql_help.c:2021 sql_help.c:2451 sql_help.c:2705 msgid "lang_name" msgstr "nombre_lenguaje" -#: sql_help.c:1127 +#: sql_help.c:1381 msgid "definition" msgstr "definición" -#: sql_help.c:1128 +#: sql_help.c:1382 msgid "obj_file" msgstr "archivo_obj" -#: sql_help.c:1129 +#: sql_help.c:1383 msgid "link_symbol" msgstr "símbolo_enlace" -#: sql_help.c:1130 +#: sql_help.c:1384 msgid "attribute" msgstr "atributo" -#: sql_help.c:1165 sql_help.c:1293 sql_help.c:1670 +#: sql_help.c:1419 sql_help.c:1550 sql_help.c:1945 msgid "uid" msgstr "uid" -#: sql_help.c:1179 +#: sql_help.c:1433 msgid "method" msgstr "método" -#: sql_help.c:1182 sql_help.c:1473 +#: sql_help.c:1437 sql_help.c:1731 msgid "opclass" msgstr "clase_de_ops" -#: sql_help.c:1186 sql_help.c:1459 +#: sql_help.c:1441 sql_help.c:1717 msgid "predicate" msgstr "predicado" -#: sql_help.c:1198 +#: sql_help.c:1453 msgid "call_handler" msgstr "manejador_de_llamada" -#: sql_help.c:1199 +#: sql_help.c:1454 msgid "inline_handler" msgstr "manejador_en_línea" -#: sql_help.c:1218 +#: sql_help.c:1455 +msgid "valfunction" +msgstr "función_val" + +#: sql_help.c:1473 msgid "com_op" msgstr "op_conm" -#: sql_help.c:1219 +#: sql_help.c:1474 msgid "neg_op" msgstr "op_neg" -#: sql_help.c:1220 +#: sql_help.c:1475 msgid "res_proc" msgstr "proc_res" -#: sql_help.c:1221 +#: sql_help.c:1476 msgid "join_proc" msgstr "proc_join" -#: sql_help.c:1237 +#: sql_help.c:1492 msgid "family_name" msgstr "nombre_familia" -#: sql_help.c:1247 +#: sql_help.c:1503 msgid "storage_type" msgstr "tipo_almacenamiento" -#: sql_help.c:1307 sql_help.c:1308 sql_help.c:1309 +#: sql_help.c:1561 sql_help.c:1841 +msgid "event" +msgstr "evento" + +#: sql_help.c:1563 sql_help.c:1844 sql_help.c:2003 sql_help.c:2826 +#: sql_help.c:2828 sql_help.c:2896 sql_help.c:2898 sql_help.c:3029 +#: sql_help.c:3031 sql_help.c:3110 sql_help.c:3185 sql_help.c:3187 +msgid "condition" +msgstr "condición" + +#: sql_help.c:1564 sql_help.c:1565 sql_help.c:1566 msgid "command" msgstr "orden" -#: sql_help.c:1320 sql_help.c:1322 +#: sql_help.c:1577 sql_help.c:1579 msgid "schema_element" msgstr "elemento_de_esquema" -#: sql_help.c:1351 +#: sql_help.c:1608 msgid "server_type" msgstr "tipo_de_servidor" -#: sql_help.c:1352 +#: sql_help.c:1609 msgid "server_version" msgstr "versión_de_servidor" -#: sql_help.c:1353 sql_help.c:2130 sql_help.c:2359 +#: sql_help.c:1610 sql_help.c:2441 sql_help.c:2695 msgid "fdw_name" msgstr "nombre_fdw" -#: sql_help.c:1425 +#: sql_help.c:1683 msgid "like_option" msgstr "opción_de_like" -#: sql_help.c:1431 -msgid "type_name" -msgstr "nombre_de_tipo" - -#: sql_help.c:1439 +#: sql_help.c:1696 msgid "where column_constraint is:" msgstr "donde restricción_de_columna es:" -#: sql_help.c:1442 sql_help.c:1443 sql_help.c:1452 sql_help.c:1454 -#: sql_help.c:1458 +#: sql_help.c:1700 sql_help.c:1701 sql_help.c:1710 sql_help.c:1712 +#: sql_help.c:1716 msgid "index_parameters" msgstr "parámetros_de_índice" -#: sql_help.c:1444 sql_help.c:1461 +#: sql_help.c:1702 sql_help.c:1719 msgid "reftable" msgstr "tabla_ref" -#: sql_help.c:1445 sql_help.c:1462 +#: sql_help.c:1703 sql_help.c:1720 msgid "refcolumn" msgstr "columna_ref" -#: sql_help.c:1448 +#: sql_help.c:1706 msgid "and table_constraint is:" msgstr "y restricción_de_tabla es:" -#: sql_help.c:1456 +#: sql_help.c:1714 msgid "exclude_element" msgstr "elemento_de_exclusión" -#: sql_help.c:1465 +#: sql_help.c:1723 msgid "and like_option is:" msgstr "y opción_de_like es:" -#: sql_help.c:1466 +#: sql_help.c:1724 msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" msgstr "parámetros_de_índice en UNIQUE, PRIMARY KEY y EXCLUDE son:" -#: sql_help.c:1470 +#: sql_help.c:1728 msgid "exclude_element in an EXCLUDE constraint is:" msgstr "element_de_exclusión en una restricción EXCLUDE es:" -#: sql_help.c:1502 +#: sql_help.c:1760 msgid "directory" msgstr "directorio" -#: sql_help.c:1514 +#: sql_help.c:1772 msgid "parser_name" msgstr "nombre_de_parser" -#: sql_help.c:1515 +#: sql_help.c:1773 msgid "source_config" msgstr "config_origen" -#: sql_help.c:1544 +#: sql_help.c:1802 msgid "start_function" msgstr "función_inicio" -#: sql_help.c:1545 +#: sql_help.c:1803 msgid "gettoken_function" msgstr "función_gettoken" -#: sql_help.c:1546 +#: sql_help.c:1804 msgid "end_function" msgstr "función_fin" -#: sql_help.c:1547 +#: sql_help.c:1805 msgid "lextypes_function" msgstr "función_lextypes" -#: sql_help.c:1548 +#: sql_help.c:1806 msgid "headline_function" msgstr "función_headline" -#: sql_help.c:1560 +#: sql_help.c:1818 msgid "init_function" msgstr "función_init" -#: sql_help.c:1561 +#: sql_help.c:1819 msgid "lexize_function" msgstr "función_lexize" -#: sql_help.c:1612 -msgid "attribute_name" -msgstr "nombre_atributo" +#: sql_help.c:1843 +msgid "referenced_table_name" +msgstr "nombre_tabla_referenciada" + +#: sql_help.c:1846 +msgid "arguments" +msgstr "argumentos" + +#: sql_help.c:1847 +msgid "where event can be one of:" +msgstr "donde evento puede ser una de:" -#: sql_help.c:1615 +#: sql_help.c:1888 sql_help.c:2785 msgid "label" msgstr "etiqueta" -#: sql_help.c:1617 +#: sql_help.c:1890 msgid "input_function" msgstr "función_entrada" -#: sql_help.c:1618 +#: sql_help.c:1891 msgid "output_function" msgstr "función_salida" -#: sql_help.c:1619 +#: sql_help.c:1892 msgid "receive_function" msgstr "función_receive" -#: sql_help.c:1620 +#: sql_help.c:1893 msgid "send_function" msgstr "función_send" -#: sql_help.c:1621 +#: sql_help.c:1894 msgid "type_modifier_input_function" msgstr "función_entrada_del_modificador_de_tipo" -#: sql_help.c:1622 +#: sql_help.c:1895 msgid "type_modifier_output_function" msgstr "función_salida_del_modificador_de_tipo" -#: sql_help.c:1623 +#: sql_help.c:1896 msgid "analyze_function" msgstr "función_analyze" -#: sql_help.c:1624 +#: sql_help.c:1897 msgid "internallength" msgstr "largo_interno" -#: sql_help.c:1625 +#: sql_help.c:1898 msgid "alignment" msgstr "alineamiento" -#: sql_help.c:1626 +#: sql_help.c:1899 msgid "storage" msgstr "almacenamiento" -#: sql_help.c:1627 +#: sql_help.c:1900 msgid "like_type" msgstr "como_tipo" -#: sql_help.c:1628 +#: sql_help.c:1901 msgid "category" msgstr "categoría" -#: sql_help.c:1629 +#: sql_help.c:1902 msgid "preferred" msgstr "preferido" -#: sql_help.c:1630 +#: sql_help.c:1903 msgid "default" msgstr "valor_por_omisión" -#: sql_help.c:1631 +#: sql_help.c:1904 msgid "element" msgstr "elemento" -#: sql_help.c:1632 +#: sql_help.c:1905 msgid "delimiter" msgstr "delimitador" -#: sql_help.c:1724 sql_help.c:2464 sql_help.c:2467 sql_help.c:2470 -#: sql_help.c:2474 sql_help.c:2663 sql_help.c:2666 sql_help.c:2669 -#: sql_help.c:2673 sql_help.c:2720 sql_help.c:2815 sql_help.c:2818 -#: sql_help.c:2821 sql_help.c:2825 +#: sql_help.c:1906 +msgid "collatable" +msgstr "ordenable" + +#: sql_help.c:1999 sql_help.c:2471 sql_help.c:2821 sql_help.c:2890 +#: sql_help.c:3024 sql_help.c:3102 sql_help.c:3180 +msgid "with_query" +msgstr "consulta_with" + +#: sql_help.c:2001 sql_help.c:2840 sql_help.c:2843 sql_help.c:2846 +#: sql_help.c:2850 sql_help.c:3043 sql_help.c:3046 sql_help.c:3049 +#: sql_help.c:3053 sql_help.c:3104 sql_help.c:3199 sql_help.c:3202 +#: sql_help.c:3205 sql_help.c:3209 msgid "alias" msgstr "alias" -#: sql_help.c:1725 +#: sql_help.c:2002 msgid "using_list" msgstr "lista_using" -#: sql_help.c:1727 sql_help.c:2054 sql_help.c:2204 sql_help.c:2727 +#: sql_help.c:2004 sql_help.c:2365 sql_help.c:2534 sql_help.c:3111 msgid "cursor_name" msgstr "nombre_de_cursor" -#: sql_help.c:1728 sql_help.c:2163 sql_help.c:2728 +#: sql_help.c:2005 sql_help.c:2476 sql_help.c:3112 msgid "output_expression" msgstr "expresión_de_salida" -#: sql_help.c:1729 sql_help.c:2164 sql_help.c:2448 sql_help.c:2515 -#: sql_help.c:2647 sql_help.c:2729 sql_help.c:2799 +#: sql_help.c:2006 sql_help.c:2477 sql_help.c:2824 sql_help.c:2893 +#: sql_help.c:3027 sql_help.c:3113 sql_help.c:3183 msgid "output_name" msgstr "nombre_de_salida" -#: sql_help.c:1745 +#: sql_help.c:2022 msgid "code" msgstr "código" -#: sql_help.c:2014 +#: sql_help.c:2315 msgid "parameter" msgstr "parámetro" -#: sql_help.c:2027 sql_help.c:2028 sql_help.c:2223 +#: sql_help.c:2333 sql_help.c:2334 sql_help.c:2559 msgid "statement" msgstr "sentencia" -#: sql_help.c:2053 sql_help.c:2203 +#: sql_help.c:2364 sql_help.c:2533 msgid "direction" msgstr "dirección" -#: sql_help.c:2055 +#: sql_help.c:2366 sql_help.c:2535 msgid "where direction can be empty or one of:" msgstr "donde dirección puede ser vacío o uno de:" -#: sql_help.c:2056 sql_help.c:2057 sql_help.c:2058 sql_help.c:2059 -#: sql_help.c:2060 sql_help.c:2458 sql_help.c:2460 sql_help.c:2526 -#: sql_help.c:2528 sql_help.c:2657 sql_help.c:2659 sql_help.c:2758 -#: sql_help.c:2760 sql_help.c:2809 sql_help.c:2811 +#: sql_help.c:2367 sql_help.c:2368 sql_help.c:2369 sql_help.c:2370 +#: sql_help.c:2371 sql_help.c:2536 sql_help.c:2537 sql_help.c:2538 +#: sql_help.c:2539 sql_help.c:2540 sql_help.c:2834 sql_help.c:2836 +#: sql_help.c:2904 sql_help.c:2906 sql_help.c:3037 sql_help.c:3039 +#: sql_help.c:3142 sql_help.c:3144 sql_help.c:3193 sql_help.c:3195 msgid "count" msgstr "cantidad" -#: sql_help.c:2125 sql_help.c:2354 +#: sql_help.c:2436 sql_help.c:2690 msgid "sequence_name" msgstr "nombre_secuencia" -#: sql_help.c:2136 sql_help.c:2365 +#: sql_help.c:2447 sql_help.c:2701 msgid "arg_name" msgstr "nombre_arg" -#: sql_help.c:2137 sql_help.c:2366 +#: sql_help.c:2448 sql_help.c:2702 msgid "arg_type" msgstr "tipo_arg" -#: sql_help.c:2142 sql_help.c:2371 +#: sql_help.c:2453 sql_help.c:2707 msgid "loid" msgstr "loid" -#: sql_help.c:2172 sql_help.c:2212 sql_help.c:2706 +#: sql_help.c:2485 sql_help.c:2548 sql_help.c:3088 msgid "channel" msgstr "canal" -#: sql_help.c:2194 +#: sql_help.c:2507 msgid "lockmode" msgstr "modo_bloqueo" -#: sql_help.c:2195 +#: sql_help.c:2508 msgid "where lockmode is one of:" msgstr "donde modo_bloqueo es uno de:" -#: sql_help.c:2213 +#: sql_help.c:2549 msgid "payload" msgstr "carga" -#: sql_help.c:2239 +#: sql_help.c:2575 msgid "old_role" msgstr "rol_antiguo" -#: sql_help.c:2240 +#: sql_help.c:2576 msgid "new_role" msgstr "rol_nuevo" -#: sql_help.c:2256 sql_help.c:2401 sql_help.c:2409 +#: sql_help.c:2592 sql_help.c:2737 sql_help.c:2745 msgid "savepoint_name" msgstr "nombre_de_savepoint" -#: sql_help.c:2445 sql_help.c:2512 sql_help.c:2644 sql_help.c:2796 -msgid "with_query" -msgstr "consulta_with" +#: sql_help.c:2767 +msgid "provider" +msgstr "proveedor" -#: sql_help.c:2449 sql_help.c:2480 sql_help.c:2482 sql_help.c:2517 -#: sql_help.c:2648 sql_help.c:2679 sql_help.c:2681 sql_help.c:2800 -#: sql_help.c:2831 sql_help.c:2833 +#: sql_help.c:2825 sql_help.c:2856 sql_help.c:2858 sql_help.c:2895 +#: sql_help.c:3028 sql_help.c:3059 sql_help.c:3061 sql_help.c:3184 +#: sql_help.c:3215 sql_help.c:3217 msgid "from_item" msgstr "item_de_from" -#: sql_help.c:2453 sql_help.c:2521 sql_help.c:2652 sql_help.c:2804 +#: sql_help.c:2829 sql_help.c:2899 sql_help.c:3032 sql_help.c:3188 msgid "window_name" msgstr "nombre_de_ventana" -#: sql_help.c:2454 sql_help.c:2522 sql_help.c:2653 sql_help.c:2805 +#: sql_help.c:2830 sql_help.c:2900 sql_help.c:3033 sql_help.c:3189 msgid "window_definition" msgstr "definición_de_ventana" -#: sql_help.c:2455 sql_help.c:2466 sql_help.c:2488 sql_help.c:2523 -#: sql_help.c:2654 sql_help.c:2665 sql_help.c:2687 sql_help.c:2806 -#: sql_help.c:2817 sql_help.c:2839 +#: sql_help.c:2831 sql_help.c:2842 sql_help.c:2864 sql_help.c:2901 +#: sql_help.c:3034 sql_help.c:3045 sql_help.c:3067 sql_help.c:3190 +#: sql_help.c:3201 sql_help.c:3223 msgid "select" msgstr "select" -#: sql_help.c:2462 sql_help.c:2661 sql_help.c:2813 +#: sql_help.c:2838 sql_help.c:3041 sql_help.c:3197 msgid "where from_item can be one of:" msgstr "donde item_de_from puede ser uno de:" -#: sql_help.c:2465 sql_help.c:2468 sql_help.c:2471 sql_help.c:2475 -#: sql_help.c:2664 sql_help.c:2667 sql_help.c:2670 sql_help.c:2674 -#: sql_help.c:2816 sql_help.c:2819 sql_help.c:2822 sql_help.c:2826 +#: sql_help.c:2841 sql_help.c:2844 sql_help.c:2847 sql_help.c:2851 +#: sql_help.c:3044 sql_help.c:3047 sql_help.c:3050 sql_help.c:3054 +#: sql_help.c:3200 sql_help.c:3203 sql_help.c:3206 sql_help.c:3210 msgid "column_alias" msgstr "alias_de_columna" -#: sql_help.c:2469 sql_help.c:2486 sql_help.c:2490 sql_help.c:2668 -#: sql_help.c:2685 sql_help.c:2689 sql_help.c:2820 sql_help.c:2837 -#: sql_help.c:2841 +#: sql_help.c:2845 sql_help.c:2862 sql_help.c:3048 sql_help.c:3065 +#: sql_help.c:3204 sql_help.c:3221 msgid "with_query_name" msgstr "nombre_consulta_with" -#: sql_help.c:2473 sql_help.c:2478 sql_help.c:2672 sql_help.c:2677 -#: sql_help.c:2824 sql_help.c:2829 +#: sql_help.c:2849 sql_help.c:2854 sql_help.c:3052 sql_help.c:3057 +#: sql_help.c:3208 sql_help.c:3213 msgid "argument" msgstr "argumento" -#: sql_help.c:2476 sql_help.c:2479 sql_help.c:2675 sql_help.c:2678 -#: sql_help.c:2827 sql_help.c:2830 +#: sql_help.c:2852 sql_help.c:2855 sql_help.c:3055 sql_help.c:3058 +#: sql_help.c:3211 sql_help.c:3214 msgid "column_definition" msgstr "definición_de_columna" -#: sql_help.c:2481 sql_help.c:2680 sql_help.c:2832 +#: sql_help.c:2857 sql_help.c:3060 sql_help.c:3216 msgid "join_type" msgstr "tipo_de_join" -#: sql_help.c:2483 sql_help.c:2682 sql_help.c:2834 +#: sql_help.c:2859 sql_help.c:3062 sql_help.c:3218 msgid "join_condition" msgstr "condición_de_join" -#: sql_help.c:2484 sql_help.c:2683 sql_help.c:2835 +#: sql_help.c:2860 sql_help.c:3063 sql_help.c:3219 msgid "join_column" msgstr "columna_de_join" -#: sql_help.c:2485 sql_help.c:2684 sql_help.c:2836 +#: sql_help.c:2861 sql_help.c:3064 sql_help.c:3220 msgid "and with_query is:" msgstr "y consulta_with es:" -#: sql_help.c:2516 +#: sql_help.c:2865 sql_help.c:3068 sql_help.c:3224 +msgid "insert" +msgstr "insert" + +#: sql_help.c:2866 sql_help.c:3069 sql_help.c:3225 +msgid "update" +msgstr "update" + +#: sql_help.c:2867 sql_help.c:3070 sql_help.c:3226 +msgid "delete" +msgstr "delete" + +#: sql_help.c:2894 msgid "new_table" msgstr "nueva_tabla" -#: sql_help.c:2541 +#: sql_help.c:2919 msgid "timezone" msgstr "huso_horario" -#: sql_help.c:2725 +#: sql_help.c:3109 msgid "from_list" msgstr "lista_from" -#: sql_help.c:2756 +#: sql_help.c:3140 msgid "sort_expression" msgstr "expresión_orden" @@ -3724,78 +4074,30 @@ msgstr "no se pudo cambiar el directorio a «%s»" msgid "could not read symbolic link \"%s\"" msgstr "no se pudo leer el enlace simbólico «%s»" -#: ../../port/exec.c:516 +#: ../../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" msgstr "el proceso hijo terminó con código de salida %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "el proceso hijo fue terminado por una excepción 0x%X" -#: ../../port/exec.c:529 +#: ../../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "el proceso hijo fue terminado por una señal %s" -#: ../../port/exec.c:532 +#: ../../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "el proceso hijo fue terminado por una señal %d" -#: ../../port/exec.c:536 +#: ../../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "el proceso hijo terminó con código no reconocido %d" -#~ msgid "You are not connected.\n" -#~ msgstr "No está conectado.\n" - -#~ msgid "" -#~ "You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" " -#~ "at port \"%s\".\n" -#~ msgstr "" -#~ "Está conectado a la base de datos «%s» como el usuario «%s» a través del " -#~ "socket en «%s» port «%s».\n" - -#~ msgid "" -#~ "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at " -#~ "port \"%s\".\n" -#~ msgstr "" -#~ "Está conectado a la base de datos «%s» como el usuario «%s» en el servidor «%" -#~ "s» port «%s».\n" - -#~ msgid "invalid line number: %s\n" -#~ msgstr "número de línea no válido: %s\n" - -#~ msgid "function name is required\n" -#~ msgstr "el nombre de la función es requerido\n" - -#~ msgid "" -#~ "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s" -#~ "\" at port \"%s\".\n" -#~ msgstr "" -#~ "Ahora está conectado a la base de datos «%s» como el usuario «%s» a través " -#~ "del socket en «%s» port «%s».\n" - -#~ msgid "" -#~ "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at " -#~ "port \"%s\".\n" -#~ msgstr "" -#~ "Ahora está conectado a la base de datos «%s» como el usuario «%s» en el " -#~ "servidor «%s» port «%s».\n" - -#~ msgid "" -#~ "EDITOR_LINENUMBER_SWITCH variable must be set to specify a line number\n" -#~ msgstr "" -#~ "la variable EDITOR_LINENUMBER_SWITCH debe estar definida para poder " -#~ "especificar un número de línea\n" - -#~ msgid " \\sf[+] FUNCNAME show a function's definition\n" -#~ msgstr " \\sf[+] FUNCIÓN mostrar la definición de una función\n" - -#~ msgid "" -#~ " \\conninfo display information about current connection\n" -#~ msgstr "" -#~ " \\conninfo despliega la información sobre la conexión actual\n" +#~ msgid "schema" +#~ msgstr "esquema" diff --git a/src/bin/psql/po/fr.po b/src/bin/psql/po/fr.po index 0d72a6448d..73541a0a6c 100644 --- a/src/bin/psql/po/fr.po +++ b/src/bin/psql/po/fr.po @@ -1,8 +1,6 @@ # translation of psql.po to fr_fr # french message translation file for psql # -# $PostgreSQL$ -# # Use these quotes: � %s � # Peter Eisentraut , 2001. # Guillaume Lelarge , 2003-2009. @@ -11,114 +9,144 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 8.4\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-09-09 15:59+0000\n" -"PO-Revision-Date: 2010-09-09 18:24+0100\n" +"POT-Creation-Date: 2012-05-29 10:45+0000\n" +"PO-Revision-Date: 2012-05-29 20:06+0100\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: French \n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: command.c:112 +#: command.c:113 #, c-format msgid "Invalid command \\%s. Try \\? for help.\n" msgstr "Commande \\%s invalide. Essayez \\? pour l'aide-m�moire.\n" -#: command.c:114 +#: command.c:115 #, c-format msgid "invalid command \\%s\n" msgstr "commande \\%s invalide\n" -#: command.c:125 +#: command.c:126 #, c-format msgid "\\%s: extra argument \"%s\" ignored\n" msgstr "\\%s : argument � %s � suppl�mentaire ignor�\n" -#: command.c:267 +#: command.c:268 #, c-format msgid "could not get home directory: %s\n" msgstr "n'a pas pu obtenir le r�pertoire de l'utilisateur : %s\n" -#: command.c:283 +#: command.c:284 #, c-format msgid "\\%s: could not change directory to \"%s\": %s\n" msgstr "\\%s : n'a pas pu acc�der au r�pertoire � %s � : %s\n" -#: command.c:316 +#: command.c:305 +#: common.c:493 +#: common.c:773 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "Vous n'�tes pas connect� � une base de donn�es.\n" + +#: command.c:312 +#, c-format +msgid "You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n" +msgstr "Vous �tes connect� � la base de donn�es � %s � en tant qu'utilisateur � %s � via le socket dans � %s � via le port � %s �.\n" + +#: command.c:315 +#, c-format +msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n" +msgstr "Vous �tes connect� � la base de donn�es � %s � en tant qu'utilisateur � %s � sur l'h�te � %s � via le port � %s �.\n" + +#: command.c:339 #: common.c:940 #, c-format msgid "Time: %.3f ms\n" msgstr "Temps : %.3f ms\n" -#: command.c:485 -#: command.c:513 -#: command.c:1064 +#: command.c:524 +#: command.c:594 +#: command.c:1297 msgid "no query buffer\n" msgstr "aucun tampon de requ�te\n" -#: command.c:555 +#: command.c:557 +#: command.c:2519 +#, c-format +msgid "invalid line number: %s\n" +msgstr "num�ro de ligne invalide : %s\n" + +#: command.c:588 +#, c-format +msgid "The server (version %d.%d) does not support editing function source.\n" +msgstr "Le serveur (version %d.%d) ne supporte pas l'�dition du code de la fonction.\n" + +#: command.c:668 msgid "No changes" msgstr "Aucun changement" -#: command.c:609 +#: command.c:722 #, c-format msgid "%s: invalid encoding name or conversion procedure not found\n" msgstr "%s : nom d'encodage invalide ou proc�dure de conversion introuvable\n" -#: command.c:688 -#: command.c:722 -#: command.c:736 -#: command.c:753 -#: command.c:857 -#: command.c:907 -#: command.c:1044 -#: command.c:1075 +#: command.c:801 +#: command.c:835 +#: command.c:849 +#: command.c:866 +#: command.c:970 +#: command.c:1020 +#: command.c:1277 +#: command.c:1308 #, c-format msgid "\\%s: missing required argument\n" msgstr "\\%s : argument requis manquant\n" -#: command.c:785 +#: command.c:898 msgid "Query buffer is empty." msgstr "Le tampon de requ�te est vide." -#: command.c:795 +#: command.c:908 msgid "Enter new password: " msgstr "Saisissez le nouveau mot de passe :" -#: command.c:796 +#: command.c:909 msgid "Enter it again: " msgstr "Saisissez-le � nouveau :" -#: command.c:800 +#: command.c:913 #, c-format msgid "Passwords didn't match.\n" msgstr "Les mots de passe ne sont pas identiques.\n" -#: command.c:818 +#: command.c:931 #, c-format msgid "Password encryption failed.\n" msgstr "�chec du chiffrement du mot de passe.\n" -#: command.c:886 -#: command.c:987 -#: command.c:1049 +#: command.c:999 +#: command.c:1100 +#: command.c:1282 #, c-format msgid "\\%s: error\n" msgstr "\\%s : erreur\n" -#: command.c:927 +#: command.c:1040 msgid "Query buffer reset (cleared)." msgstr "Le tampon de requ�te a �t� effac�." -#: command.c:940 +#: command.c:1053 #, c-format msgid "Wrote history to file \"%s/%s\".\n" msgstr "Historique sauvegard� dans le fichier � %s/%s �.\n" -#: command.c:978 +#: command.c:1091 #: common.c:52 #: common.c:66 +#: common.c:90 #: input.c:209 #: mainloop.c:72 #: mainloop.c:234 @@ -128,24 +156,33 @@ msgstr "Historique sauvegard msgid "out of memory\n" msgstr "m�moire �puis�e\n" -#: command.c:1029 +#: command.c:1121 +#, c-format +msgid "The server (version %d.%d) does not support showing function source.\n" +msgstr "Le serveur (version %d.%d) ne supporte pas l'affichage du code de la fonction.\n" + +#: command.c:1127 +msgid "function name is required\n" +msgstr "le nom de la fonction est requis\n" + +#: command.c:1262 msgid "Timing is on." msgstr "Chronom�trage activ�." -#: command.c:1031 +#: command.c:1264 msgid "Timing is off." msgstr "Chronom�trage d�sactiv�." -#: command.c:1092 -#: command.c:1112 -#: command.c:1633 -#: command.c:1640 -#: command.c:1649 -#: command.c:1659 -#: command.c:1668 -#: command.c:1682 -#: command.c:1699 -#: command.c:1737 +#: command.c:1325 +#: command.c:1345 +#: command.c:1907 +#: command.c:1914 +#: command.c:1923 +#: command.c:1933 +#: command.c:1942 +#: command.c:1956 +#: command.c:1973 +#: command.c:2011 #: common.c:137 #: copy.c:283 #: copy.c:361 @@ -153,20 +190,20 @@ msgstr "Chronom msgid "%s: %s\n" msgstr "%s : %s\n" -#: command.c:1194 +#: command.c:1427 #: startup.c:159 msgid "Password: " msgstr "Mot de passe : " -#: command.c:1201 +#: command.c:1434 #: startup.c:162 #: startup.c:164 #, c-format msgid "Password for user %s: " msgstr "Mot de passe pour l'utilisateur %s : " -#: command.c:1318 -#: command.c:2207 +#: command.c:1553 +#: command.c:2553 #: common.c:183 #: common.c:460 #: common.c:525 @@ -175,46 +212,41 @@ msgstr "Mot de passe pour l'utilisateur %s : " #: common.c:925 #: copy.c:432 #: copy.c:477 -#: copy.c:606 +#: copy.c:607 #, c-format msgid "%s" msgstr "%s" -#: command.c:1322 +#: command.c:1557 msgid "Previous connection kept\n" msgstr "Connexion pr�c�dente conserv�e\n" -#: command.c:1326 +#: command.c:1561 #, c-format msgid "\\connect: %s" msgstr "\\connect : %s" -#: command.c:1350 -#, c-format -msgid "You are now connected to database \"%s\"" -msgstr "Vous �tes maintenant connect� � la base de donn�es � %s �" - -#: command.c:1353 +#: command.c:1594 #, c-format -msgid " on host \"%s\"" -msgstr " sur l'h�te � %s �" +msgid "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n" +msgstr "Vous �tes maintenant connect� � la base de donn�es � %s � en tant qu'utilisateur � %s � via le socket dans � %s � via le port � %s �.\n" -#: command.c:1356 +#: command.c:1597 #, c-format -msgid " at port \"%s\"" -msgstr " sur le port � %s �" +msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n" +msgstr "Vous �tes maintenant connect� � la base de donn�es � %s � en tant qu'utilisateur � %s � sur l'h�te � %s � via le port � %s �.\n" -#: command.c:1359 +#: command.c:1601 #, c-format -msgid " as user \"%s\"" -msgstr " comme utilisateur � %s �" +msgid "You are now connected to database \"%s\" as user \"%s\".\n" +msgstr "Vous �tes maintenant connect� � la base de donn�es � %s � en tant qu'utilisateur � %s �.\n" -#: command.c:1394 +#: command.c:1635 #, c-format msgid "%s (%s, server %s)\n" msgstr "%s (%s, serveur %s)\n" -#: command.c:1402 +#: command.c:1643 #, c-format msgid "" "WARNING: %s version %d.%d, server version %d.%d.\n" @@ -223,17 +255,17 @@ msgstr "" "ATTENTION : %s version %d.%d, version du serveur %d.%d.\n" " Certaines fonctionnalit�s de psql pourraient ne pas fonctionner.\n" -#: command.c:1432 +#: command.c:1673 #, c-format msgid "SSL connection (cipher: %s, bits: %i)\n" msgstr "Connexion SSL (chiffrement : %s, bits : %i)\n" -#: command.c:1442 +#: command.c:1683 #, c-format msgid "SSL connection (unknown cipher)\n" msgstr "Connexion SSL (chiffrement inconnu)\n" -#: command.c:1463 +#: command.c:1704 #, c-format msgid "" "WARNING: Console code page (%u) differs from Windows code page (%u)\n" @@ -245,147 +277,153 @@ msgstr "" " Voir la section � Notes aux utilisateurs de Windows � de la page\n" " r�f�rence de psql pour les d�tails.\n" -#: command.c:1552 +#: command.c:1788 +msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number\n" +msgstr "" +"la variable d'environnement EDITOR_LINENUMBER_SWITCH doit �tre configur�e\n" +"pour sp�cifier un num�ro de ligne\n" + +#: command.c:1825 #, c-format msgid "could not start editor \"%s\"\n" msgstr "n'a pas pu ex�cuter l'�diteur � %s �\n" -#: command.c:1554 +#: command.c:1827 msgid "could not start /bin/sh\n" msgstr "n'a pas pu ex�cuter /bin/sh\n" -#: command.c:1591 +#: command.c:1865 #, c-format -msgid "cannot locate temporary directory: %s" -msgstr "n'a pas pu localiser le r�pertoire temporaire : %s" +msgid "could not locate temporary directory: %s\n" +msgstr "n'a pas pu localiser le r�pertoire temporaire : %s\n" -#: command.c:1618 +#: command.c:1892 #, c-format msgid "could not open temporary file \"%s\": %s\n" msgstr "n'a pas pu ouvrir le fichier temporaire � %s � : %s\n" -#: command.c:1839 +#: command.c:2122 msgid "\\pset: allowed formats are unaligned, aligned, wrapped, html, latex, troff-ms\n" msgstr "" "\\pset : les formats autoris�s sont unaligned, aligned, wrapped, html, latex,\n" "troff-ms\n" -#: command.c:1844 +#: command.c:2127 #, c-format msgid "Output format is %s.\n" msgstr "Le format de sortie est %s.\n" -#: command.c:1860 +#: command.c:2143 msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" msgstr "\\pset: les styles de lignes autoris�s sont ascii, old-ascii, unicode\n" -#: command.c:1865 +#: command.c:2148 #, c-format msgid "Line style is %s.\n" msgstr "Le style de ligne est %s.\n" -#: command.c:1876 +#: command.c:2159 #, c-format msgid "Border style is %d.\n" msgstr "Le style de bordure est %d.\n" -#: command.c:1888 +#: command.c:2171 #, c-format msgid "Expanded display is on.\n" msgstr "Affichage �tendu activ�.\n" -#: command.c:1889 +#: command.c:2172 #, c-format msgid "Expanded display is off.\n" msgstr "Affichage �tendu d�sactiv�.\n" -#: command.c:1902 +#: command.c:2185 msgid "Showing locale-adjusted numeric output." msgstr "Affichage de la sortie num�rique adapt�e � la locale." -#: command.c:1904 +#: command.c:2187 msgid "Locale-adjusted numeric output is off." msgstr "L'affichage de la sortie num�rique adapt�e � la locale est d�sactiv�." -#: command.c:1917 +#: command.c:2200 #, c-format msgid "Null display is \"%s\".\n" msgstr "L'affichage de null est � %s �.\n" -#: command.c:1929 +#: command.c:2212 #, c-format msgid "Field separator is \"%s\".\n" msgstr "Le s�parateur de champs est � %s �.\n" -#: command.c:1943 +#: command.c:2226 #, c-format msgid "Record separator is ." msgstr "Le s�parateur d'enregistrements est ." -#: command.c:1945 +#: command.c:2228 #, c-format msgid "Record separator is \"%s\".\n" msgstr "Le s�parateur d'enregistrements est � %s �.\n" -#: command.c:1959 +#: command.c:2242 msgid "Showing only tuples." msgstr "Affichage des tuples seuls." -#: command.c:1961 +#: command.c:2244 msgid "Tuples only is off." msgstr "L'affichage des tuples seuls est d�sactiv�." -#: command.c:1977 +#: command.c:2260 #, c-format msgid "Title is \"%s\".\n" msgstr "Le titre est � %s �.\n" -#: command.c:1979 +#: command.c:2262 #, c-format msgid "Title is unset.\n" msgstr "Le titre n'est pas d�fini.\n" -#: command.c:1995 +#: command.c:2278 #, c-format msgid "Table attribute is \"%s\".\n" msgstr "L'attribut de la table est � %s �.\n" -#: command.c:1997 +#: command.c:2280 #, c-format msgid "Table attributes unset.\n" msgstr "Les attributs de la table ne sont pas d�finis.\n" -#: command.c:2018 +#: command.c:2301 msgid "Pager is used for long output." msgstr "Le pagineur est utilis� pour les affichages importants." -#: command.c:2020 +#: command.c:2303 msgid "Pager is always used." msgstr "Le pagineur est toujours utilis�." -#: command.c:2022 +#: command.c:2305 msgid "Pager usage is off." msgstr "Le pagineur n'est pas utilis�." -#: command.c:2036 +#: command.c:2319 msgid "Default footer is on." msgstr "Le bas de page pas d�faut est activ�." -#: command.c:2038 +#: command.c:2321 msgid "Default footer is off." msgstr "Le bas de page par d�faut est d�sactiv�." -#: command.c:2049 +#: command.c:2332 #, c-format msgid "Target width for \"wrapped\" format is %d.\n" msgstr "La largeur cible pour le format � wrapped � est %d.\n" -#: command.c:2054 +#: command.c:2337 #, c-format msgid "\\pset: unknown option: %s\n" msgstr "\\pset : option inconnue : %s\n" -#: command.c:2108 +#: command.c:2391 msgid "\\!: failed\n" msgstr "\\! : �chec\n" @@ -394,10 +432,6 @@ msgstr "\\! : msgid "%s: pg_strdup: cannot duplicate null pointer (internal error)\n" msgstr "%s : pg_strdup : ne peut pas dupliquer le pointeur null (erreur interne)\n" -#: common.c:90 -msgid "out of memory" -msgstr "m�moire �puis�e" - #: common.c:343 msgid "connection to server was lost\n" msgstr "la connexion au serveur a �t� perdue\n" @@ -414,11 +448,6 @@ msgstr " msgid "Succeeded.\n" msgstr "Succ�s.\n" -#: common.c:493 -#: common.c:773 -msgid "You are currently not connected to a database.\n" -msgstr "Vous n'�tes pas connect� � une base de donn�es.\n" - #: common.c:499 #: common.c:506 #: common.c:799 @@ -522,24 +551,24 @@ msgstr "" "Saisissez les donn�es � copier suivies d'un saut de ligne.\n" "Terminez avec un antislash et un point seuls sur une ligne." -#: copy.c:599 +#: copy.c:600 msgid "aborted because of read failure" msgstr "annul� du fait d'une erreur de lecture" -#: help.c:52 +#: help.c:48 msgid "on" msgstr "activ�" -#: help.c:52 +#: help.c:48 msgid "off" msgstr "d�sactiv�" -#: help.c:74 +#: help.c:70 #, c-format msgid "could not get current user name: %s\n" msgstr "n'a pas pu obtenir le nom d'utilisateur courant : %s\n" -#: help.c:86 +#: help.c:82 #, c-format msgid "" "psql is the PostgreSQL interactive terminal.\n" @@ -548,12 +577,12 @@ msgstr "" "psql est l'interface interactive de PostgreSQL.\n" "\n" -#: help.c:87 +#: help.c:83 #, c-format msgid "Usage:\n" msgstr "Usage :\n" -#: help.c:88 +#: help.c:84 #, c-format msgid "" " psql [OPTION]... [DBNAME [USERNAME]]\n" @@ -562,19 +591,19 @@ msgstr "" " psql [OPTIONS]... [NOM_BASE [NOM_UTILISATEUR]]\n" "\n" -#: help.c:90 +#: help.c:86 #, c-format msgid "General options:\n" msgstr "Options g�n�rales :\n" -#: help.c:95 +#: help.c:91 #, c-format msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n" msgstr "" " -c, --command=COMMANDE\n" " ex�cute une commande unique (SQL ou interne), puis quitte\n" -#: help.c:96 +#: help.c:92 #, c-format msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" msgstr "" @@ -582,19 +611,19 @@ msgstr "" " indique le nom de la base de donn�es � laquelle se\n" " connecter (par d�faut : � %s �)\n" -#: help.c:97 +#: help.c:93 #, c-format msgid " -f, --file=FILENAME execute commands from file, then exit\n" msgstr "" " -f, --file=FICHIER\n" " ex�cute les commandes du fichier, puis quitte\n" -#: help.c:98 +#: help.c:94 #, c-format msgid " -l, --list list available databases, then exit\n" msgstr " -l, --list affiche les bases de donn�es disponibles, puis quitte\n" -#: help.c:99 +#: help.c:95 #, c-format msgid "" " -v, --set=, --variable=NAME=VALUE\n" @@ -603,12 +632,12 @@ msgstr "" " -v, --set, --variable NOM=VALEUR\n" " initialise la variable psql NOM � VALEUR\n" -#: help.c:101 +#: help.c:97 #, c-format msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" msgstr " -X, --no-psqlrc ne lit pas le fichier de d�marrage (~/.psqlrc)\n" -#: help.c:102 +#: help.c:98 #, c-format msgid "" " -1 (\"one\"), --single-transaction\n" @@ -617,17 +646,17 @@ msgstr "" " -1 (� un �), --single-transaction\n" " ex�cute un fichier de commande dans une transaction unique\n" -#: help.c:104 +#: help.c:100 #, c-format msgid " --help show this help, then exit\n" msgstr " --help affiche cette aide, puis quitte\n" -#: help.c:105 +#: help.c:101 #, c-format msgid " --version output version information, then exit\n" msgstr " --version affiche la version, puis quitte\n" -#: help.c:107 +#: help.c:103 #, c-format msgid "" "\n" @@ -636,33 +665,33 @@ msgstr "" "\n" "Options d'entr�e/sortie :\n" -#: help.c:108 +#: help.c:104 #, c-format msgid " -a, --echo-all echo all input from script\n" msgstr " -a, --echo-all affiche les lignes du script\n" -#: help.c:109 +#: help.c:105 #, c-format msgid " -e, --echo-queries echo commands sent to server\n" msgstr "" " -e, --echo-queries\n" " affiche les commandes envoy�es au serveur\n" -#: help.c:110 +#: help.c:106 #, c-format msgid " -E, --echo-hidden display queries that internal commands generate\n" msgstr "" " -E, --echo-hidden\n" " affiche les requ�tes engendr�es par les commandes internes\n" -#: help.c:111 +#: help.c:107 #, c-format msgid " -L, --log-file=FILENAME send session log to file\n" msgstr "" " -L, --log-file=FICHIER\n" " envoie les traces dans le fichier\n" -#: help.c:112 +#: help.c:108 #, c-format msgid " -n, --no-readline disable enhanced command line editing (readline)\n" msgstr "" @@ -670,7 +699,7 @@ msgstr "" " d�sactive l'�dition avanc�e de la ligne de commande\n" " (readline)\n" -#: help.c:113 +#: help.c:109 #, c-format msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" msgstr "" @@ -678,14 +707,14 @@ msgstr "" " �crit les r�sultats des requ�tes dans un fichier (ou\n" " |tube)\n" -#: help.c:114 +#: help.c:110 #, c-format msgid " -q, --quiet run quietly (no messages, only query output)\n" msgstr "" " -q, --quiet s'ex�cute silencieusement (pas de messages, uniquement le\n" " r�sultat des requ�tes)\n" -#: help.c:115 +#: help.c:111 #, c-format msgid " -s, --single-step single-step mode (confirm each query)\n" msgstr "" @@ -693,7 +722,7 @@ msgstr "" " active le mode �tape par �tape (confirmation pour chaque\n" " requ�te)\n" -#: help.c:116 +#: help.c:112 #, c-format msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n" msgstr "" @@ -701,7 +730,7 @@ msgstr "" " active le mode ligne par ligne (EOL termine la commande\n" " SQL)\n" -#: help.c:118 +#: help.c:114 #, c-format msgid "" "\n" @@ -710,14 +739,14 @@ msgstr "" "\n" "Options de formattage de la sortie :\n" -#: help.c:119 +#: help.c:115 #, c-format msgid " -A, --no-align unaligned table output mode\n" msgstr "" " -A, --no-align active le mode d'affichage non align� des tables (-P\n" " format=unaligned)\n" -#: help.c:120 +#: help.c:116 #, c-format msgid "" " -F, --field-separator=STRING\n" @@ -727,12 +756,12 @@ msgstr "" " initialise le s�parateur de champs (par d�faut : � %s �)\n" " (-P fieldsep=)\n" -#: help.c:123 +#: help.c:119 #, c-format msgid " -H, --html HTML table output mode\n" msgstr " -H, --html active le mode d'affichage HTML des tables (-P format=html)\n" -#: help.c:124 +#: help.c:120 #, c-format msgid " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n" msgstr "" @@ -740,7 +769,7 @@ msgstr "" " initialise l'option d'impression VAR � ARG (voir la\n" " commande \\pset)\n" -#: help.c:125 +#: help.c:121 #, c-format msgid "" " -R, --record-separator=STRING\n" @@ -750,14 +779,14 @@ msgstr "" " initialise le s�parateur d'enregistrements (par d�faut :\n" " saut de ligne) (-P recordsep=)\n" -#: help.c:127 +#: help.c:123 #, c-format msgid " -t, --tuples-only print rows only\n" msgstr "" " -t, --tuples-only\n" " affiche seulement les lignes (-P tuples_only)\n" -#: help.c:128 +#: help.c:124 #, c-format msgid " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n" msgstr "" @@ -765,12 +794,12 @@ msgstr "" " initialise les attributs des balises HTML de tableau\n" " (largeur, bordure) (-P tableattr=)\n" -#: help.c:129 +#: help.c:125 #, c-format msgid " -x, --expanded turn on expanded table output\n" msgstr " -x, --expanded active l'affichage �tendu des tables (-P expanded)\n" -#: help.c:131 +#: help.c:127 #, c-format msgid "" "\n" @@ -779,25 +808,25 @@ msgstr "" "\n" "Options de connexion :\n" -#: help.c:134 +#: help.c:130 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n" msgstr "" " -h, --host=HOTE nom d'h�te du serveur de la base de donn�es ou r�pertoire\n" " de la socket (par d�faut : %s)\n" -#: help.c:135 +#: help.c:131 msgid "local socket" msgstr "socket locale" -#: help.c:138 +#: help.c:134 #, c-format msgid " -p, --port=PORT database server port (default: \"%s\")\n" msgstr "" " -p, --port=PORT port du serveur de la base de donn�es (par d�faut :\n" " � %s �)\n" -#: help.c:144 +#: help.c:140 #, c-format msgid " -U, --username=USERNAME database user name (default: \"%s\")\n" msgstr "" @@ -805,21 +834,21 @@ msgstr "" " nom d'utilisateur de la base de donn�es (par d�faut :\n" " � %s �)\n" -#: help.c:145 +#: help.c:141 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr "" " -w, --no-password\n" " ne demande jamais un mot de passe\n" -#: help.c:146 +#: help.c:142 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" msgstr "" " -W, --password force la demande du mot de passe (devrait survenir\n" " automatiquement)\n" -#: help.c:148 +#: help.c:144 #, c-format msgid "" "\n" @@ -834,334 +863,364 @@ msgstr "" "de la documentation de PostgreSQL.\n" "\n" -#: help.c:151 +#: help.c:147 #, c-format msgid "Report bugs to .\n" msgstr "Rapportez les bogues � .\n" -#: help.c:169 +#: help.c:165 #, c-format msgid "General\n" msgstr "G�n�ral\n" -#: help.c:170 +#: help.c:166 #, c-format msgid " \\copyright show PostgreSQL usage and distribution terms\n" msgstr "" " \\copyright affiche les conditions d'utilisation et de\n" " distribution de PostgreSQL\n" -#: help.c:171 +#: help.c:167 #, c-format msgid " \\g [FILE] or ; execute query (and send results to file or |pipe)\n" msgstr "" " \\g [FICHIER] ou ; envoie le tampon de requ�tes au serveur (et les\n" " r�sultats au fichier ou |tube)\n" -#: help.c:172 +#: help.c:168 #, c-format msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n" msgstr "" " \\h [NOM] aide-m�moire pour les commandes SQL, * pour toutes\n" " les commandes\n" -#: help.c:173 +#: help.c:169 #, c-format msgid " \\q quit psql\n" msgstr " \\q quitte psql\n" -#: help.c:176 +#: help.c:172 #, c-format msgid "Query Buffer\n" msgstr "Tampon de requ�te\n" -#: help.c:177 +#: help.c:173 #, c-format -msgid " \\e [FILE] edit the query buffer (or file) with external editor\n" +msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n" msgstr "" -" \\e [FICHIER] �dite le tampon de requ�te ou le fichier avec un\n" +" \\e [FICHIER] [LIGNE] �dite le tampon de requ�te ou le fichier avec un\n" " �diteur externe\n" -#: help.c:178 +#: help.c:174 #, c-format -msgid " \\ef [FUNCNAME] edit function definition with external editor\n" +msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" msgstr "" -" \\ef [FONCTION] �dite la d�finition de fonction avec un �diteur\n" +" \\ef [FONCTION [LIGNE]] �dite la d�finition de fonction avec un �diteur\n" " externe\n" -#: help.c:179 +#: help.c:175 #, c-format msgid " \\p show the contents of the query buffer\n" msgstr " \\p affiche le contenu du tampon de requ�te\n" -#: help.c:180 +#: help.c:176 #, c-format msgid " \\r reset (clear) the query buffer\n" msgstr " \\r efface le tampon de requ�tes\n" -#: help.c:182 +#: help.c:178 #, c-format msgid " \\s [FILE] display history or save it to file\n" msgstr "" " \\s [FICHIER] affiche l'historique ou le sauvegarde dans un\n" " fichier\n" -#: help.c:184 +#: help.c:180 #, c-format msgid " \\w FILE write query buffer to file\n" msgstr "" " \\w [FICHIER] �crit le contenu du tampon de requ�tes dans un\n" " fichier\n" -#: help.c:187 +#: help.c:183 #, c-format msgid "Input/Output\n" msgstr "Entr�e/Sortie\n" -#: help.c:188 +#: help.c:184 #, c-format msgid " \\copy ... perform SQL COPY with data stream to the client host\n" msgstr "" " \\copy ... ex�cute SQL COPY avec le flux de donn�es dirig� vers\n" " l'h�te client\n" -#: help.c:189 +#: help.c:185 #, c-format msgid " \\echo [STRING] write string to standard output\n" msgstr " \\echo [TEXTE] �crit un texte sur la sortie standard\n" -#: help.c:190 +#: help.c:186 #, c-format msgid " \\i FILE execute commands from file\n" msgstr " \\i FICHIER ex�cute les commandes du fichier\n" -#: help.c:191 +#: help.c:187 #, c-format msgid " \\o [FILE] send all query results to file or |pipe\n" msgstr "" " \\o [FICHIER] envoie les r�sultats de la requ�te vers un fichier\n" " ou un |tube\n" -#: help.c:192 +#: help.c:188 #, c-format msgid " \\qecho [STRING] write string to query output stream (see \\o)\n" msgstr "" " \\qecho [TEXTE] �crit un texte sur la sortie des r�sultats des\n" " requ�tes (voir \\o)\n" -#: help.c:195 +#: help.c:191 #, c-format msgid "Informational\n" msgstr "Informations\n" -#: help.c:196 +#: help.c:192 #, c-format msgid " (options: S = show system objects, + = additional detail)\n" msgstr " (options : S = affiche les objets syst�mes, + = informations suppl�mentaires)\n" -#: help.c:197 +#: help.c:193 #, c-format msgid " \\d[S+] list tables, views, and sequences\n" msgstr " \\d[S+] affiche la liste des tables, vues et s�quences\n" -#: help.c:198 +#: help.c:194 #, c-format msgid " \\d[S+] NAME describe table, view, sequence, or index\n" msgstr "" " \\d[S+] NOM affiche la description de la table, de la vue,\n" " de la s�quence ou de l'index\n" -#: help.c:199 +#: help.c:195 #, c-format msgid " \\da[S] [PATTERN] list aggregates\n" -msgstr " \\da[+] [MOD�LE] affiche les aggr�gats\n" +msgstr " \\da[S] [MOD�LE] affiche les aggr�gats\n" -#: help.c:200 +#: help.c:196 #, c-format msgid " \\db[+] [PATTERN] list tablespaces\n" msgstr " \\db[+] [MOD�LE] affiche la liste des tablespaces\n" -#: help.c:201 +#: help.c:197 #, c-format msgid " \\dc[S] [PATTERN] list conversions\n" msgstr " \\dc[S] [MOD�LE] affiche la liste des conversions\n" -#: help.c:202 +#: help.c:198 #, c-format msgid " \\dC [PATTERN] list casts\n" msgstr " \\dC [MOD�LE] affiche la liste des transtypages\n" -#: help.c:203 +#: help.c:199 #, c-format msgid " \\dd[S] [PATTERN] show comments on objects\n" msgstr " \\dd[S] [MOD�LE] affiche les commentaires de l'objet\n" -#: help.c:204 +#: help.c:200 #, c-format msgid " \\ddp [PATTERN] list default privileges\n" msgstr " \\ddp [MOD�LE] affiche les droits par d�faut\n" -#: help.c:205 +#: help.c:201 #, c-format msgid " \\dD[S] [PATTERN] list domains\n" msgstr " \\dD[S] [MOD�LE] affiche la liste des domaines\n" -#: help.c:206 +#: help.c:202 +#, c-format +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [MOD�LE] affiche la liste des tables distantes\n" + +#: help.c:203 #, c-format msgid " \\des[+] [PATTERN] list foreign servers\n" msgstr " \\des[+] [MOD�LE] affiche la liste des serveurs distants\n" -#: help.c:207 +#: help.c:204 #, c-format msgid " \\deu[+] [PATTERN] list user mappings\n" msgstr " \\deu[+] [MOD�LE] affiche la liste des correspondances utilisateurs\n" -#: help.c:208 +#: help.c:205 #, c-format msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" msgstr " \\dew[+] [MOD�LE] affiche la liste des wrappers de donn�es distantes\n" -#: help.c:209 +#: help.c:206 #, c-format msgid " \\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions\n" msgstr "" " \\df[antw][S+] [PATRN] affiche la liste des fonctions\n" " [seulement agg/normal/trigger/window]\n" -#: help.c:210 +#: help.c:207 #, c-format msgid " \\dF[+] [PATTERN] list text search configurations\n" msgstr "" " \\dF[+] [MOD�LE] affiche la liste des configurations de la recherche\n" " plein texte\n" -#: help.c:211 +#: help.c:208 #, c-format msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" msgstr "" " \\dFd[+] [MOD�LE] affiche la liste des dictionnaires de la recherche de\n" " texte\n" -#: help.c:212 +#: help.c:209 #, c-format msgid " \\dFp[+] [PATTERN] list text search parsers\n" msgstr "" " \\dFp[+] [MOD�LE] affiche la liste des analyseurs de la recherche de\n" " texte\n" -#: help.c:213 +#: help.c:210 #, c-format msgid " \\dFt[+] [PATTERN] list text search templates\n" msgstr "" " \\dFt[+] [MOD�LE] affiche la liste des mod�les de la recherche de\n" " texte\n" -#: help.c:214 +#: help.c:211 #, c-format -msgid " \\dg[+] [PATTERN] list roles (groups)\n" -msgstr " \\dg[+] [MOD�LE] affiche la liste des groupes\n" +msgid " \\dg[+] [PATTERN] list roles\n" +msgstr " \\dg[+] [MOD�LE] affiche la liste des r�les\n" -#: help.c:215 +#: help.c:212 #, c-format msgid " \\di[S+] [PATTERN] list indexes\n" msgstr " \\di[S+] [MOD�LE] affiche la liste des index\n" -#: help.c:216 +#: help.c:213 #, c-format msgid " \\dl list large objects, same as \\lo_list\n" msgstr "" " \\dl affiche la liste des � Large Objects �, identique �\n" " \\lo_list\n" -#: help.c:217 +#: help.c:214 #, c-format -msgid " \\dn[+] [PATTERN] list schemas\n" -msgstr " \\dn[+] [MOD�LE] affiche la liste des sch�mas\n" +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [MOD�LE] affiche la liste des langages proc�duraux\n" -#: help.c:218 +#: help.c:215 +#, c-format +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [MOD�LE] affiche la liste des sch�mas\n" + +#: help.c:216 #, c-format msgid " \\do[S] [PATTERN] list operators\n" msgstr " \\do[S] [MOD�LE] affiche la liste des op�rateurs\n" -#: help.c:219 +#: help.c:217 +#, c-format +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [MOD�LE] affiche la liste des collationnements\n" + +#: help.c:218 #, c-format msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n" msgstr "" " \\dp [MOD�LE] affiche la liste des droits d'acc�s aux tables,\n" " vues, s�quences\n" -#: help.c:220 +#: help.c:219 #, c-format msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n" msgstr " \\drds [MODEL1 [MODEL2]] liste la configuration utilisateur par base de donn�es\n" -#: help.c:221 +#: help.c:220 #, c-format msgid " \\ds[S+] [PATTERN] list sequences\n" msgstr " \\ds[S+] [MOD�LE] affiche la liste des s�quences\n" -#: help.c:222 +#: help.c:221 #, c-format msgid " \\dt[S+] [PATTERN] list tables\n" msgstr " \\dt[S+] [MOD�LE] affiche la liste des tables\n" -#: help.c:223 +#: help.c:222 #, c-format msgid " \\dT[S+] [PATTERN] list data types\n" msgstr " \\dT[S+] [MOD�LE] affiche la liste des types de donn�es\n" -#: help.c:224 +#: help.c:223 #, c-format -msgid " \\du[+] [PATTERN] list roles (users)\n" +msgid " \\du[+] [PATTERN] list roles\n" msgstr " \\du[+] [MOD�LE] affiche la liste des r�les (utilisateurs)\n" -#: help.c:225 +#: help.c:224 #, c-format msgid " \\dv[S+] [PATTERN] list views\n" msgstr " \\dv[S+] [MOD�LE] affiche la liste des vues\n" +#: help.c:225 +#, c-format +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [MOD�LE] affiche la liste des tables distantes\n" + #: help.c:226 #, c-format +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [MOD�LE] affiche la liste des extensions\n" + +#: help.c:227 +#, c-format msgid " \\l[+] list all databases\n" msgstr " \\l[+] affiche la liste des bases de donn�es\n" -#: help.c:227 +#: help.c:228 +#, c-format +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf [FONCTION] �dite la d�finition d'une fonction\n" + +#: help.c:229 #, c-format msgid " \\z [PATTERN] same as \\dp\n" msgstr " \\z [MOD�LE] identique � \\dp\n" -#: help.c:230 +#: help.c:232 #, c-format msgid "Formatting\n" msgstr "Formatage\n" -#: help.c:231 +#: help.c:233 #, c-format msgid " \\a toggle between unaligned and aligned output mode\n" msgstr "" " \\a bascule entre les modes de sortie align�e et non\n" " align�e\n" -#: help.c:232 +#: help.c:234 #, c-format msgid " \\C [STRING] set table title, or unset if none\n" msgstr "" " \\C [CHA�NE] initialise le titre d'une table, ou le d�sactive en\n" " l'absence d'argument\n" -#: help.c:233 +#: help.c:235 #, c-format msgid " \\f [STRING] show or set field separator for unaligned query output\n" msgstr "" " \\f [CHA�NE] affiche ou initialise le s�parateur de champ pour\n" " une sortie non align�e des requ�tes\n" -#: help.c:234 +#: help.c:236 #, c-format msgid " \\H toggle HTML output mode (currently %s)\n" msgstr " \\H bascule le mode de sortie HTML (actuellement %s)\n" -#: help.c:236 +#: help.c:238 #, c-format msgid "" " \\pset NAME [VALUE] set table output option\n" @@ -1173,29 +1232,29 @@ msgstr "" " null|numericlocale|recordsep|tuples_only|\n" " title|tableattr|pager})\n" -#: help.c:239 +#: help.c:241 #, c-format msgid " \\t [on|off] show only rows (currently %s)\n" msgstr " \\t affiche uniquement les lignes (actuellement %s)\n" -#: help.c:241 +#: help.c:243 #, c-format msgid " \\T [STRING] set HTML
tag attributes, or unset if none\n" msgstr "" " \\T [CHA�NE] initialise les attributs HTML de la balise
,\n" " ou l'annule en l'absence d'argument\n" -#: help.c:242 +#: help.c:244 #, c-format msgid " \\x [on|off] toggle expanded output (currently %s)\n" msgstr " \\x bascule l'affichage �tendu (actuellement %s)\n" -#: help.c:246 +#: help.c:248 #, c-format msgid "Connection\n" msgstr "Connexions\n" -#: help.c:247 +#: help.c:249 #, c-format msgid "" " \\c[onnect] [DBNAME|- USER|- HOST|- PORT|-]\n" @@ -1205,12 +1264,12 @@ msgstr "" " se connecte � une autre base de donn�es\n" " (actuellement � %s �)\n" -#: help.c:250 +#: help.c:252 #, c-format msgid " \\encoding [ENCODING] show or set client encoding\n" msgstr " \\encoding [ENCODAGE] affiche ou initialise l'encodage du client\n" -#: help.c:251 +#: help.c:253 #, c-format msgid " \\password [USERNAME] securely change the password for a user\n" msgstr "" @@ -1220,58 +1279,63 @@ msgstr "" #: help.c:254 #, c-format +msgid " \\conninfo display information about current connection\n" +msgstr " \\conninfo affiche des informations sur la connexion en cours\n" + +#: help.c:257 +#, c-format msgid "Operating System\n" msgstr "Syst�me d'exploitation\n" -#: help.c:255 +#: help.c:258 #, c-format msgid " \\cd [DIR] change the current working directory\n" msgstr " \\cd [R�PERTOIRE] change de r�pertoire de travail\n" -#: help.c:256 +#: help.c:259 #, c-format msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" msgstr "" " \\timing [on|off] bascule l'activation du chronom�trage des commandes\n" " (actuellement %s)\n" -#: help.c:258 +#: help.c:261 #, c-format msgid " \\! [COMMAND] execute command in shell or start interactive shell\n" msgstr "" " \\! [COMMANDE] ex�cute la commande dans un shell ou ex�cute un\n" " shell interactif\n" -#: help.c:261 +#: help.c:264 #, c-format msgid "Variables\n" msgstr "Variables\n" -#: help.c:262 +#: help.c:265 #, c-format msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" msgstr "" " \\prompt [TEXTE] NOM demande � l'utilisateur de configurer la variable\n" " interne\n" -#: help.c:263 +#: help.c:266 #, c-format msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n" msgstr "" " \\set [NOM [VALEUR]] initialise une variable interne ou les affiche\n" " toutes en l'absence de param�tre\n" -#: help.c:264 +#: help.c:267 #, c-format msgid " \\unset NAME unset (delete) internal variable\n" msgstr " \\unset NOM d�sactive (supprime) la variable interne\n" -#: help.c:267 +#: help.c:270 #, c-format msgid "Large Objects\n" msgstr "� Large objects �\n" -#: help.c:268 +#: help.c:271 #, c-format msgid "" " \\lo_export LOBOID FILE\n" @@ -1285,11 +1349,11 @@ msgstr "" " \\lo_unlink OIDLOB\n" " op�rations sur les � Large Objects �\n" -#: help.c:321 +#: help.c:318 msgid "Available help:\n" msgstr "Aide-m�moire disponible :\n" -#: help.c:410 +#: help.c:402 #, c-format msgid "" "Command: %s\n" @@ -1304,7 +1368,7 @@ msgstr "" "%s\n" "\n" -#: help.c:426 +#: help.c:418 #, c-format msgid "" "No help available for \"%s\".\n" @@ -1348,37 +1412,40 @@ msgid "ID" msgstr "ID" #: large_obj.c:290 -#: describe.c:146 -#: describe.c:334 -#: describe.c:613 -#: describe.c:762 -#: describe.c:2381 -#: describe.c:2681 -#: describe.c:3310 -#: describe.c:3369 +#: describe.c:147 +#: describe.c:335 +#: describe.c:637 +#: describe.c:787 +#: describe.c:2513 +#: describe.c:2631 +#: describe.c:2975 +#: describe.c:3606 +#: describe.c:3671 msgid "Owner" msgstr "Propri�taire" #: large_obj.c:291 #: large_obj.c:301 -#: describe.c:95 -#: describe.c:158 -#: describe.c:337 -#: describe.c:490 -#: describe.c:566 -#: describe.c:637 -#: describe.c:827 -#: describe.c:1318 -#: describe.c:2205 -#: describe.c:2395 -#: describe.c:2689 -#: describe.c:2751 -#: describe.c:2887 -#: describe.c:2926 -#: describe.c:2993 -#: describe.c:3052 -#: describe.c:3061 -#: describe.c:3120 +#: describe.c:96 +#: describe.c:159 +#: describe.c:338 +#: describe.c:501 +#: describe.c:590 +#: describe.c:661 +#: describe.c:852 +#: describe.c:1382 +#: describe.c:2330 +#: describe.c:2537 +#: describe.c:2918 +#: describe.c:2983 +#: describe.c:3048 +#: describe.c:3184 +#: describe.c:3223 +#: describe.c:3290 +#: describe.c:3349 +#: describe.c:3358 +#: describe.c:3417 +#: describe.c:3856 msgid "Description" msgstr "Description" @@ -1447,12 +1514,12 @@ msgid_plural "(%lu rows)" msgstr[0] "(%lu ligne)" msgstr[1] "(%lu lignes)" -#: startup.c:237 +#: startup.c:243 #, c-format msgid "%s: could not open log file \"%s\": %s\n" msgstr "%s : n'a pas pu ouvrir le journal applicatif � %s � : %s\n" -#: startup.c:299 +#: startup.c:305 #, c-format msgid "" "Type \"help\" for help.\n" @@ -1461,805 +1528,880 @@ msgstr "" "Saisissez � help � pour l'aide.\n" "\n" -#: startup.c:445 +#: startup.c:451 #, c-format msgid "%s: could not set printing parameter \"%s\"\n" msgstr "%s : n'a pas pu configurer le param�tre d'impression � %s �\n" -#: startup.c:484 +#: startup.c:490 #, c-format msgid "%s: could not delete variable \"%s\"\n" msgstr "%s : n'a pas pu effacer la variable � %s �\n" -#: startup.c:494 +#: startup.c:500 #, c-format msgid "%s: could not set variable \"%s\"\n" msgstr "%s : n'a pas pu initialiser la variable � %s �\n" -#: startup.c:531 #: startup.c:537 +#: startup.c:543 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Essayez � %s --help � pour plus d'informations.\n" -#: startup.c:554 +#: startup.c:560 #, c-format msgid "%s: warning: extra command-line argument \"%s\" ignored\n" msgstr "%s : attention : option suppl�mentaire � %s � ignor�e\n" -#: startup.c:619 +#: startup.c:625 msgid "contains support for command-line editing" msgstr "contient une gestion avanc�e de la ligne de commande" -#: describe.c:68 -#: describe.c:235 -#: describe.c:462 -#: describe.c:561 -#: describe.c:682 -#: describe.c:763 -#: describe.c:824 -#: describe.c:2373 -#: describe.c:2494 -#: describe.c:2549 -#: describe.c:2749 -#: describe.c:2976 -#: describe.c:3048 -#: describe.c:3059 -#: describe.c:3118 -msgid "Schema" -msgstr "Sch�ma" - #: describe.c:69 -#: describe.c:145 #: describe.c:236 #: describe.c:463 -#: describe.c:562 -#: describe.c:612 -#: describe.c:683 -#: describe.c:825 -#: describe.c:2374 -#: describe.c:2495 -#: describe.c:2550 -#: describe.c:2680 -#: describe.c:2750 -#: describe.c:2977 -#: describe.c:3049 -#: describe.c:3060 -#: describe.c:3119 -#: describe.c:3309 -#: describe.c:3368 -msgid "Name" -msgstr "Nom" +#: describe.c:585 +#: describe.c:706 +#: describe.c:788 +#: describe.c:849 +#: describe.c:2504 +#: describe.c:2698 +#: describe.c:2768 +#: describe.c:2910 +#: describe.c:3046 +#: describe.c:3273 +#: describe.c:3345 +#: describe.c:3356 +#: describe.c:3415 +#: describe.c:3789 +#: describe.c:3855 +msgid "Schema" +msgstr "Sch�ma" #: describe.c:70 -#: describe.c:248 -#: describe.c:294 -#: describe.c:311 -msgid "Result data type" -msgstr "Type de donn�es du r�sultat" +#: describe.c:146 +#: describe.c:237 +#: describe.c:464 +#: describe.c:586 +#: describe.c:636 +#: describe.c:707 +#: describe.c:850 +#: describe.c:2505 +#: describe.c:2627 +#: describe.c:2699 +#: describe.c:2769 +#: describe.c:2911 +#: describe.c:2974 +#: describe.c:3047 +#: describe.c:3274 +#: describe.c:3346 +#: describe.c:3357 +#: describe.c:3416 +#: describe.c:3605 +#: describe.c:3670 +#: describe.c:3853 +msgid "Name" +msgstr "Nom" -#: describe.c:84 -#: describe.c:88 +#: describe.c:71 #: describe.c:249 #: describe.c:295 #: describe.c:312 +msgid "Result data type" +msgstr "Type de donn�es du r�sultat" + +#: describe.c:85 +#: describe.c:89 +#: describe.c:250 +#: describe.c:296 +#: describe.c:313 msgid "Argument data types" msgstr "Type de donn�es des param�tres" -#: describe.c:113 +#: describe.c:114 msgid "List of aggregate functions" msgstr "Liste des fonctions d'agr�gation" -#: describe.c:134 +#: describe.c:135 #, c-format msgid "The server (version %d.%d) does not support tablespaces.\n" msgstr "Le serveur (version %d.%d) ne supporte pas les tablespaces.\n" -#: describe.c:147 +#: describe.c:148 msgid "Location" msgstr "Emplacement" -#: describe.c:175 +#: describe.c:176 msgid "List of tablespaces" msgstr "Liste des tablespaces" -#: describe.c:212 +#: describe.c:213 #, c-format msgid "\\df only takes [antwS+] as options\n" msgstr "\\df prends seulement [antwS+] comme options\n" -#: describe.c:218 +#: describe.c:219 #, c-format msgid "\\df does not take a \"w\" option with server version %d.%d\n" msgstr "\\df ne prend pas l'option � w � pour un serveur en version %d.%d.\n" #. translator: "agg" is short for "aggregate" -#: describe.c:251 -#: describe.c:297 -#: describe.c:314 +#: describe.c:252 +#: describe.c:298 +#: describe.c:315 msgid "agg" msgstr "agg" -#: describe.c:252 +#: describe.c:253 msgid "window" msgstr "window" -#: describe.c:253 -#: describe.c:298 -#: describe.c:315 -#: describe.c:964 -msgid "trigger" -msgstr "trigger" - #: describe.c:254 #: describe.c:299 #: describe.c:316 -msgid "normal" -msgstr "normal" +#: describe.c:990 +msgid "trigger" +msgstr "trigger" #: describe.c:255 #: describe.c:300 #: describe.c:317 -#: describe.c:685 -#: describe.c:767 -#: describe.c:1299 -#: describe.c:2380 -#: describe.c:2496 -#: describe.c:3381 +msgid "normal" +msgstr "normal" + +#: describe.c:256 +#: describe.c:301 +#: describe.c:318 +#: describe.c:710 +#: describe.c:792 +#: describe.c:1362 +#: describe.c:2512 +#: describe.c:2700 +#: describe.c:3683 msgid "Type" msgstr "Type" -#: describe.c:330 +#: describe.c:331 msgid "immutable" msgstr "immutable" -#: describe.c:331 +#: describe.c:332 msgid "stable" msgstr "stable" -#: describe.c:332 +#: describe.c:333 msgid "volatile" msgstr "volatile" -#: describe.c:333 +#: describe.c:334 msgid "Volatility" msgstr "Volatibilit�" -#: describe.c:335 +#: describe.c:336 msgid "Language" msgstr "Langage" -#: describe.c:336 +#: describe.c:337 msgid "Source code" msgstr "Code source" -#: describe.c:434 +#: describe.c:435 msgid "List of functions" msgstr "Liste des fonctions" -#: describe.c:473 +#: describe.c:474 msgid "Internal name" msgstr "Nom interne" -#: describe.c:474 -#: describe.c:629 -#: describe.c:2391 +#: describe.c:475 +#: describe.c:653 +#: describe.c:2529 +#: describe.c:2533 msgid "Size" msgstr "Taille" -#: describe.c:486 +#: describe.c:496 msgid "Elements" msgstr "�l�ments" -#: describe.c:530 +#: describe.c:541 msgid "List of data types" msgstr "Liste des types de donn�es" -#: describe.c:563 +#: describe.c:587 msgid "Left arg type" msgstr "Type de l'arg. gauche" -#: describe.c:564 +#: describe.c:588 msgid "Right arg type" msgstr "Type de l'arg. droit" -#: describe.c:565 +#: describe.c:589 msgid "Result type" msgstr "Type du r�sultat" -#: describe.c:584 +#: describe.c:608 msgid "List of operators" msgstr "Liste des op�rateurs" -#: describe.c:614 +#: describe.c:638 msgid "Encoding" msgstr "Encodage" -#: describe.c:619 -msgid "Collation" -msgstr "Tri" +#: describe.c:643 +#: describe.c:2912 +msgid "Collate" +msgstr "Collationnement" -#: describe.c:620 +#: describe.c:644 +#: describe.c:2913 msgid "Ctype" msgstr "Type caract." -#: describe.c:633 +#: describe.c:657 msgid "Tablespace" msgstr "Tablespace" -#: describe.c:650 +#: describe.c:674 msgid "List of databases" msgstr "Liste des bases de donn�es" -#: describe.c:684 -#: describe.c:764 -#: describe.c:919 -#: describe.c:2375 -#: sql_help.c:443 -#: sql_help.c:660 -#: sql_help.c:761 -#: sql_help.c:1178 -#: sql_help.c:1305 -#: sql_help.c:1339 -#: sql_help.c:1574 -#: sql_help.c:1723 -#: sql_help.c:1884 -#: sql_help.c:1965 -#: sql_help.c:2159 -#: sql_help.c:2719 -#: sql_help.c:2739 -#: sql_help.c:2741 -#: sql_help.c:2742 +#: describe.c:708 +#: describe.c:789 +#: describe.c:944 +#: describe.c:2506 +#: sql_help.c:595 +#: sql_help.c:842 +#: sql_help.c:969 +#: sql_help.c:1432 +#: sql_help.c:1562 +#: sql_help.c:1596 +#: sql_help.c:1842 +#: sql_help.c:2000 +#: sql_help.c:2185 +#: sql_help.c:2266 +#: sql_help.c:2472 +#: sql_help.c:3103 +#: sql_help.c:3123 +#: sql_help.c:3125 +#: sql_help.c:3126 msgid "table" msgstr "table" -#: describe.c:684 -#: describe.c:920 -#: describe.c:2376 +#: describe.c:708 +#: describe.c:945 +#: describe.c:2507 msgid "view" msgstr "vue" -#: describe.c:684 -#: describe.c:765 -#: describe.c:922 -#: describe.c:2378 +#: describe.c:708 +#: describe.c:790 +#: describe.c:947 +#: describe.c:2509 msgid "sequence" msgstr "s�quence" -#: describe.c:696 +#: describe.c:709 +#: describe.c:948 +#: describe.c:2511 +msgid "foreign table" +msgstr "table distante" + +#: describe.c:721 msgid "Column access privileges" msgstr "Droits d'acc�s � la colonne" -#: describe.c:722 -#: describe.c:3476 -#: describe.c:3480 +#: describe.c:747 +#: describe.c:4000 +#: describe.c:4004 msgid "Access privileges" msgstr "Droits d'acc�s" -#: describe.c:750 +#: describe.c:775 #, c-format msgid "The server (version %d.%d) does not support altering default privileges.\n" msgstr "Le serveur (version %d.%d) ne supporte pas la modification des droits par d�faut.\n" -#: describe.c:766 -#: describe.c:858 +#: describe.c:791 +#: describe.c:883 msgid "function" msgstr "fonction" -#: describe.c:790 +#: describe.c:815 msgid "Default access privileges" msgstr "Droits d'acc�s par d�faut" -#: describe.c:826 +#: describe.c:851 msgid "Object" msgstr "Objet" -#: describe.c:838 +#: describe.c:863 msgid "aggregate" msgstr "agr�gation" -#: describe.c:877 -#: sql_help.c:1457 -#: sql_help.c:2457 -#: sql_help.c:2525 -#: sql_help.c:2656 -#: sql_help.c:2757 -#: sql_help.c:2808 +#: describe.c:902 +#: sql_help.c:1715 +#: sql_help.c:2833 +#: sql_help.c:2903 +#: sql_help.c:3036 +#: sql_help.c:3141 +#: sql_help.c:3192 msgid "operator" msgstr "op�rateur" -#: describe.c:896 +#: describe.c:921 msgid "data type" msgstr "type de donn�es" -#: describe.c:921 -#: describe.c:2377 +#: describe.c:946 +#: describe.c:2508 msgid "index" msgstr "index" -#: describe.c:943 +#: describe.c:969 msgid "rule" msgstr "r�gle" -#: describe.c:987 +#: describe.c:1013 msgid "Object descriptions" msgstr "Descriptions des objets" -#: describe.c:1040 +#: describe.c:1066 #, c-format msgid "Did not find any relation named \"%s\".\n" msgstr "Aucune relation nomm�e � %s � n'a �t� trouv�e.\n" -#: describe.c:1194 +#: describe.c:1238 #, c-format msgid "Did not find any relation with OID %s.\n" msgstr "Aucune relation avec l'OID � %s � n'a �t� trouv�e.\n" -#: describe.c:1262 +#: describe.c:1314 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "Table non trac�e � %s.%s �" + +#: describe.c:1317 #, c-format msgid "Table \"%s.%s\"" msgstr "Table � %s.%s �" -#: describe.c:1266 +#: describe.c:1321 #, c-format msgid "View \"%s.%s\"" msgstr "Vue � %s.%s �" -#: describe.c:1270 +#: describe.c:1325 #, c-format msgid "Sequence \"%s.%s\"" msgstr "S�quence � %s.%s �" -#: describe.c:1274 +#: describe.c:1330 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "Index non trac� � %s.%s �" + +#: describe.c:1333 #, c-format msgid "Index \"%s.%s\"" msgstr "Index � %s.%s �" -#: describe.c:1279 +#: describe.c:1338 #, c-format msgid "Special relation \"%s.%s\"" msgstr "Relation sp�ciale � %s.%s �" -#: describe.c:1283 +#: describe.c:1342 #, c-format msgid "TOAST table \"%s.%s\"" msgstr "Table TOAST � %s.%s �" -#: describe.c:1287 +#: describe.c:1346 #, c-format msgid "Composite type \"%s.%s\"" msgstr "Type compos� � %s.%s �" -#: describe.c:1298 +#: describe.c:1350 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "Table distante � %s.%s �" + +#: describe.c:1361 msgid "Column" msgstr "Colonne" -#: describe.c:1305 +#: describe.c:1369 msgid "Modifiers" msgstr "Modificateurs" -#: describe.c:1310 +#: describe.c:1374 msgid "Value" msgstr "Valeur" -#: describe.c:1313 +#: describe.c:1377 msgid "Definition" msgstr "D�finition" -#: describe.c:1317 +#: describe.c:1381 msgid "Storage" msgstr "Stockage" -#: describe.c:1359 +#: describe.c:1427 +#, c-format +msgid "collate %s" +msgstr "collationnement %s" + +#: describe.c:1435 msgid "not null" msgstr "non NULL" #. translator: default values of column definitions -#: describe.c:1368 +#: describe.c:1445 #, c-format msgid "default %s" msgstr "Par d�faut, %s" -#: describe.c:1459 +#: describe.c:1536 msgid "primary key, " msgstr "cl� primaire, " -#: describe.c:1461 +#: describe.c:1538 msgid "unique, " msgstr "unique, " -#: describe.c:1467 +#: describe.c:1544 #, c-format msgid "for table \"%s.%s\"" msgstr "pour la table � %s.%s �" -#: describe.c:1471 +#: describe.c:1548 #, c-format msgid ", predicate (%s)" msgstr ", pr�dicat (%s)" -#: describe.c:1474 +#: describe.c:1551 msgid ", clustered" msgstr ", en cluster" -#: describe.c:1477 +#: describe.c:1554 msgid ", invalid" msgstr ", invalide" -#: describe.c:1480 +#: describe.c:1557 msgid ", deferrable" msgstr ", d�ferrable" -#: describe.c:1483 +#: describe.c:1560 msgid ", initially deferred" msgstr ", initialement d�ferr�" -#: describe.c:1497 +#: describe.c:1574 msgid "View definition:" msgstr "D�finition de la vue :" -#: describe.c:1514 -#: describe.c:1792 +#: describe.c:1591 +#: describe.c:1874 msgid "Rules:" msgstr "R�gles :" -#: describe.c:1573 +#: describe.c:1650 msgid "Indexes:" msgstr "Index :" -#: describe.c:1648 +#: describe.c:1730 msgid "Check constraints:" msgstr "Contraintes de v�rification :" -#: describe.c:1679 +#: describe.c:1761 msgid "Foreign-key constraints:" msgstr "Contraintes de cl�s �trang�res :" -#: describe.c:1710 +#: describe.c:1792 msgid "Referenced by:" msgstr "R�f�renc� par :" -#: describe.c:1795 +#: describe.c:1877 msgid "Disabled rules:" msgstr "R�gles d�sactiv�es :" -#: describe.c:1798 +#: describe.c:1880 msgid "Rules firing always:" msgstr "R�gles toujous activ�es :" -#: describe.c:1801 +#: describe.c:1883 msgid "Rules firing on replica only:" msgstr "R�gles activ�es uniquement sur le r�plica :" -#: describe.c:1903 +#: describe.c:1991 msgid "Triggers:" msgstr "Triggers :" -#: describe.c:1906 +#: describe.c:1994 msgid "Disabled triggers:" msgstr "Triggers d�sactiv�s :" -#: describe.c:1909 +#: describe.c:1997 msgid "Triggers firing always:" msgstr "Triggers toujours activ�s :" -#: describe.c:1912 +#: describe.c:2000 msgid "Triggers firing on replica only:" msgstr "Triggers activ�s uniquement sur le r�plica :" -#: describe.c:1945 +#: describe.c:2066 msgid "Inherits" msgstr "H�rite de" -#: describe.c:1975 +#: describe.c:2096 #, c-format msgid "Number of child tables: %d (Use \\d+ to list them.)" msgstr "Nombre de tables enfants : %d (utilisez \\d+ pour les lister)" -#: describe.c:1982 +#: describe.c:2103 msgid "Child tables" msgstr "Tables enfant :" -#: describe.c:2004 +#: describe.c:2125 #, c-format msgid "Typed table of type: %s" msgstr "Table de type : %s" -#: describe.c:2011 +#: describe.c:2132 msgid "Has OIDs" msgstr "Contient des OID" -#: describe.c:2014 -#: describe.c:2553 -#: describe.c:2627 +#: describe.c:2135 +#: describe.c:2772 +#: describe.c:2846 msgid "yes" msgstr "oui" -#: describe.c:2014 -#: describe.c:2553 -#: describe.c:2627 +#: describe.c:2135 +#: describe.c:2772 +#: describe.c:2846 msgid "no" msgstr "non" -#: describe.c:2022 -#: describe.c:3319 -#: describe.c:3383 -#: describe.c:3439 +#: describe.c:2143 +#: describe.c:3621 +#: describe.c:3685 +#: describe.c:3741 +#: describe.c:3796 msgid "Options" msgstr "Options" -#: describe.c:2107 +#: describe.c:2228 #, c-format msgid "Tablespace: \"%s\"" msgstr "Tablespace : � %s �" -#: describe.c:2120 +#: describe.c:2241 #, c-format msgid ", tablespace \"%s\"" msgstr ", tablespace � %s �" -#: describe.c:2198 +#: describe.c:2323 msgid "List of roles" msgstr "Liste des r�les" -#: describe.c:2200 +#: describe.c:2325 msgid "Role name" msgstr "Nom du r�le" -#: describe.c:2201 +#: describe.c:2326 msgid "Attributes" msgstr "Attributs" -#: describe.c:2202 +#: describe.c:2327 msgid "Member of" msgstr "Membre de" -#: describe.c:2213 +#: describe.c:2338 msgid "Superuser" msgstr "Superutilisateur" -#: describe.c:2216 +#: describe.c:2341 msgid "No inheritance" msgstr "Pas d'h�ritage" -#: describe.c:2219 +#: describe.c:2344 msgid "Create role" msgstr "Cr�er un r�le" -#: describe.c:2222 +#: describe.c:2347 msgid "Create DB" msgstr "Cr�er une base" -#: describe.c:2225 +#: describe.c:2350 msgid "Cannot login" msgstr "Ne peut pas se connecter" -#: describe.c:2234 +#: describe.c:2354 +msgid "Replication" +msgstr "R�plication" + +#: describe.c:2363 msgid "No connections" msgstr "Sans connexions" -#: describe.c:2236 +#: describe.c:2365 #, c-format msgid "%d connection" msgid_plural "%d connections" msgstr[0] "%d connexion" msgstr[1] "%d connexions" -#: describe.c:2303 +#: describe.c:2432 #, c-format msgid "No per-database role settings support in this server version.\n" msgstr "Pas de supprot des param�tres r�le par base de donn�es pour la version de ce serveur.\n" -#: describe.c:2314 +#: describe.c:2443 #, c-format msgid "No matching settings found.\n" msgstr "Aucun param�tre correspondant trouv�.\n" -#: describe.c:2316 +#: describe.c:2445 #, c-format msgid "No settings found.\n" msgstr "Aucun param�tre trouv�.\n" -#: describe.c:2321 +#: describe.c:2450 msgid "List of settings" msgstr "Liste des param�tres" -#: describe.c:2379 +#: describe.c:2510 msgid "special" msgstr "sp�cial" -#: describe.c:2386 +#: describe.c:2518 +#: describe.c:3790 msgid "Table" msgstr "Table" -#: describe.c:2446 +#: describe.c:2592 #, c-format msgid "No matching relations found.\n" msgstr "Aucune relation correspondante trouv�e.\n" -#: describe.c:2448 +#: describe.c:2594 #, c-format msgid "No relations found.\n" msgstr "Aucune relation trouv�e.\n" -#: describe.c:2453 +#: describe.c:2599 msgid "List of relations" msgstr "Liste des relations" -#: describe.c:2497 +#: describe.c:2635 +msgid "Trusted" +msgstr "De confiance" + +#: describe.c:2643 +msgid "Internal Language" +msgstr "Langage interne" + +#: describe.c:2644 +msgid "Call Handler" +msgstr "Gestionnaire d'appel" + +#: describe.c:2645 +#: describe.c:3613 +msgid "Validator" +msgstr "Validateur" + +#: describe.c:2648 +msgid "Inline Handler" +msgstr "Gestionnaire en ligne" + +#: describe.c:2669 +msgid "List of languages" +msgstr "Liste des langages" + +#: describe.c:2709 msgid "Modifier" msgstr "Modificateur" -#: describe.c:2498 +#: describe.c:2717 msgid "Check" msgstr "V�rification" -#: describe.c:2516 +#: describe.c:2735 msgid "List of domains" msgstr "Liste des domaines" -#: describe.c:2551 +#: describe.c:2770 msgid "Source" msgstr "Source" -#: describe.c:2552 +#: describe.c:2771 msgid "Destination" msgstr "Destination" -#: describe.c:2554 +#: describe.c:2773 msgid "Default?" msgstr "Par d�faut ?" -#: describe.c:2572 +#: describe.c:2791 msgid "List of conversions" msgstr "Liste des conversions" -#: describe.c:2624 +#: describe.c:2843 msgid "Source type" msgstr "Type source" -#: describe.c:2625 +#: describe.c:2844 msgid "Target type" msgstr "Type cible" -#: describe.c:2626 -#: describe.c:2886 +#: describe.c:2845 +#: describe.c:3183 msgid "Function" msgstr "Fonction" -#: describe.c:2627 +#: describe.c:2846 msgid "in assignment" msgstr "assign�" -#: describe.c:2628 +#: describe.c:2847 msgid "Implicit?" msgstr "Implicite ?" -#: describe.c:2654 +#: describe.c:2873 msgid "List of casts" msgstr "Liste des conversions explicites" -#: describe.c:2709 +#: describe.c:2898 +#, c-format +msgid "The server (version %d.%d) does not support collations.\n" +msgstr "Le serveur (version %d.%d) ne supporte pas les collationnements.\n" + +#: describe.c:2948 +msgid "List of collations" +msgstr "Liste des collationnements" + +#: describe.c:3006 msgid "List of schemas" msgstr "Liste des sch�mas" -#: describe.c:2732 -#: describe.c:2965 -#: describe.c:3033 -#: describe.c:3101 +#: describe.c:3029 +#: describe.c:3262 +#: describe.c:3330 +#: describe.c:3398 #, c-format msgid "The server (version %d.%d) does not support full text search.\n" msgstr "Le serveur (version %d.%d) ne supporte pas la recherche plein texte.\n" -#: describe.c:2766 +#: describe.c:3063 msgid "List of text search parsers" msgstr "Liste des analyseurs de la recherche de texte" -#: describe.c:2809 +#: describe.c:3106 #, c-format msgid "Did not find any text search parser named \"%s\".\n" msgstr "Aucun analyseur de la recherche de texte nomm� � %s � n'a �t� trouv�.\n" -#: describe.c:2884 +#: describe.c:3181 msgid "Start parse" msgstr "D�but de l'analyse" -#: describe.c:2885 +#: describe.c:3182 msgid "Method" msgstr "M�thode" -#: describe.c:2889 +#: describe.c:3186 msgid "Get next token" msgstr "Obtenir le prochain jeton" -#: describe.c:2891 +#: describe.c:3188 msgid "End parse" msgstr "Fin de l'analyse" -#: describe.c:2893 +#: describe.c:3190 msgid "Get headline" msgstr "Obtenir l'en-t�te" -#: describe.c:2895 +#: describe.c:3192 msgid "Get token types" msgstr "Obtenir les types de jeton" -#: describe.c:2905 +#: describe.c:3202 #, c-format msgid "Text search parser \"%s.%s\"" msgstr "Analyseur � %s.%s � de la recherche de texte" -#: describe.c:2907 +#: describe.c:3204 #, c-format msgid "Text search parser \"%s\"" msgstr "Analyseur � %s � de la recherche de texte" -#: describe.c:2925 +#: describe.c:3222 msgid "Token name" msgstr "Nom du jeton" -#: describe.c:2936 +#: describe.c:3233 #, c-format msgid "Token types for parser \"%s.%s\"" msgstr "Types de jeton pour l'analyseur � %s.%s �" -#: describe.c:2938 +#: describe.c:3235 #, c-format msgid "Token types for parser \"%s\"" msgstr "Types de jeton pour l'analyseur � %s �" -#: describe.c:2987 +#: describe.c:3284 msgid "Template" msgstr "Mod�le" -#: describe.c:2988 +#: describe.c:3285 msgid "Init options" msgstr "Options d'initialisation :" -#: describe.c:3010 +#: describe.c:3307 msgid "List of text search dictionaries" msgstr "Liste des dictionnaires de la recherche de texte" -#: describe.c:3050 +#: describe.c:3347 msgid "Init" msgstr "Initialisation" -#: describe.c:3051 +#: describe.c:3348 msgid "Lexize" msgstr "Lexize" -#: describe.c:3078 +#: describe.c:3375 msgid "List of text search templates" msgstr "Liste des mod�les de la recherche de texte" -#: describe.c:3135 +#: describe.c:3432 msgid "List of text search configurations" msgstr "Liste des configurations de la recherche de texte" -#: describe.c:3179 +#: describe.c:3476 #, c-format msgid "Did not find any text search configuration named \"%s\".\n" msgstr "Aucune configuration de la recherche de texte nomm�e � %s � n'a �t� trouv�e.\n" -#: describe.c:3245 +#: describe.c:3542 msgid "Token" msgstr "Jeton" -#: describe.c:3246 +#: describe.c:3543 msgid "Dictionaries" msgstr "Dictionnaires" -#: describe.c:3257 +#: describe.c:3554 #, c-format msgid "Text search configuration \"%s.%s\"" msgstr "Configuration � %s.%s � de la recherche de texte" -#: describe.c:3260 +#: describe.c:3557 #, c-format msgid "Text search configuration \"%s\"" msgstr "Configuration � %s � de la recherche de texte" -#: describe.c:3264 +#: describe.c:3561 #, c-format msgid "" "\n" @@ -2268,7 +2410,7 @@ msgstr "" "\n" "Analyseur : � %s.%s �" -#: describe.c:3267 +#: describe.c:3564 #, c-format msgid "" "\n" @@ -2277,2238 +2419,2563 @@ msgstr "" "\n" "Analyseur : � %s �" -#: describe.c:3299 +#: describe.c:3596 #, c-format msgid "The server (version %d.%d) does not support foreign-data wrappers.\n" msgstr "Le serveur (version %d.%d) ne supporte pas les wrappers de donn�es distantes.\n" -#: describe.c:3311 -msgid "Validator" -msgstr "Validateur" +#: describe.c:3610 +msgid "Handler" +msgstr "Gestionnaire" -#: describe.c:3335 +#: describe.c:3637 msgid "List of foreign-data wrappers" msgstr "Liste des wrappers de donn�es distantes" -#: describe.c:3358 +#: describe.c:3660 #, c-format msgid "The server (version %d.%d) does not support foreign servers.\n" msgstr "Le serveur (version %d.%d) ne supporte pas les serveurs distants.\n" -#: describe.c:3370 +#: describe.c:3672 msgid "Foreign-data wrapper" msgstr "Wrapper des donn�es distantes" -#: describe.c:3382 +#: describe.c:3684 +#: describe.c:3854 msgid "Version" msgstr "Version" -#: describe.c:3401 +#: describe.c:3703 msgid "List of foreign servers" msgstr "Liste des serveurs distants" -#: describe.c:3424 +#: describe.c:3726 #, c-format msgid "The server (version %d.%d) does not support user mappings.\n" msgstr "Le serveur (version %d.%d) ne supporte pas les correspondances d'utilisateurs.\n" -#: describe.c:3433 +#: describe.c:3735 +#: describe.c:3791 msgid "Server" msgstr "Serveur" -#: describe.c:3434 +#: describe.c:3736 msgid "User name" msgstr "Nom de l'utilisateur" -#: describe.c:3454 +#: describe.c:3756 msgid "List of user mappings" msgstr "Liste des correspondances utilisateurs" -#: sql_help.h:173 -#: sql_help.h:788 +#: describe.c:3779 +#, c-format +msgid "The server (version %d.%d) does not support foreign tables.\n" +msgstr "Le serveur (version %d.%d) ne supporte pas les tables distantes.\n" + +#: describe.c:3817 +msgid "List of foreign tables" +msgstr "Liste des tables distantes" + +#: describe.c:3840 +#: describe.c:3894 +#, c-format +msgid "The server (version %d.%d) does not support extensions.\n" +msgstr "Le serveur (version %d.%d) ne supporte pas les extensions.\n" + +#: describe.c:3871 +msgid "List of installed extensions" +msgstr "Liste des extensions install�es" + +#: describe.c:3921 +#, c-format +msgid "Did not find any extension named \"%s\".\n" +msgstr "N'a trouv� aucune extension nomm�e � %s �.\n" + +#: describe.c:3924 +#, c-format +msgid "Did not find any extensions.\n" +msgstr "N'a trouv� aucune extension.\n" + +#: describe.c:3968 +msgid "Object Description" +msgstr "Description d'un objet" + +#: describe.c:3977 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "Objets dans l'extension � %s �" + +#: sql_help.h:182 +#: sql_help.h:837 msgid "abort the current transaction" msgstr "abandonner la transaction en cours" -#: sql_help.h:178 +#: sql_help.h:187 msgid "change the definition of an aggregate function" msgstr "modifier la d�finition d'une fonction d'agr�gation" -#: sql_help.h:183 +#: sql_help.h:192 +msgid "change the definition of a collation" +msgstr "modifier la d�finition d'un collationnement" + +#: sql_help.h:197 msgid "change the definition of a conversion" msgstr "modifier la d�finition d'une conversion" -#: sql_help.h:188 +#: sql_help.h:202 msgid "change a database" msgstr "modifier une base de donn�es" -#: sql_help.h:193 +#: sql_help.h:207 msgid "define default access privileges" msgstr "d�finir les droits d'acc�s par d�faut" -#: sql_help.h:198 +#: sql_help.h:212 msgid "change the definition of a domain" msgstr "modifier la d�finition d'un domaine" -#: sql_help.h:203 +#: sql_help.h:217 +msgid "change the definition of an extension" +msgstr "modifier la d�finition d'une extension" + +#: sql_help.h:222 msgid "change the definition of a foreign-data wrapper" msgstr "modifier la d�finition d'un wrapper de donn�es distantes" -#: sql_help.h:208 +#: sql_help.h:227 +msgid "change the definition of a foreign table" +msgstr "modifier la d�finition d'une table distante" + +#: sql_help.h:232 msgid "change the definition of a function" msgstr "modifier la d�finition d'une fonction" -#: sql_help.h:213 +#: sql_help.h:237 msgid "change role name or membership" msgstr "modifier le nom d'un groupe ou la liste des ses membres" -#: sql_help.h:218 +#: sql_help.h:242 msgid "change the definition of an index" msgstr "modifier la d�finition d'un index" -#: sql_help.h:223 +#: sql_help.h:247 msgid "change the definition of a procedural language" msgstr "modifier la d�finition d'un langage proc�dural" -#: sql_help.h:228 +#: sql_help.h:252 msgid "change the definition of a large object" msgstr "modifier la d�finition d'un � Large Object �" -#: sql_help.h:233 +#: sql_help.h:257 msgid "change the definition of an operator" msgstr "modifier la d�finition d'un op�rateur" -#: sql_help.h:238 +#: sql_help.h:262 msgid "change the definition of an operator class" msgstr "modifier la d�finition d'une classe d'op�rateurs" -#: sql_help.h:243 +#: sql_help.h:267 msgid "change the definition of an operator family" msgstr "modifier la d�finition d'une famille d'op�rateur" -#: sql_help.h:248 -#: sql_help.h:308 +#: sql_help.h:272 +#: sql_help.h:332 msgid "change a database role" msgstr "modifier un r�le" -#: sql_help.h:253 +#: sql_help.h:277 msgid "change the definition of a schema" msgstr "modifier la d�finition d'un sch�ma" -#: sql_help.h:258 +#: sql_help.h:282 msgid "change the definition of a sequence generator" msgstr "modifier la d�finition d'un g�n�rateur de s�quence" -#: sql_help.h:263 +#: sql_help.h:287 msgid "change the definition of a foreign server" msgstr "modifier la d�finition d'un serveur distant" -#: sql_help.h:268 +#: sql_help.h:292 msgid "change the definition of a table" msgstr "modifier la d�finition d'une table" -#: sql_help.h:273 +#: sql_help.h:297 msgid "change the definition of a tablespace" msgstr "modifier la d�finition d'un tablespace" -#: sql_help.h:278 +#: sql_help.h:302 msgid "change the definition of a text search configuration" msgstr "modifier la d�finition d'une configuration de la recherche de texte" -#: sql_help.h:283 +#: sql_help.h:307 msgid "change the definition of a text search dictionary" msgstr "modifier la d�finition d'un dictionnaire de la recherche de texte" -#: sql_help.h:288 +#: sql_help.h:312 msgid "change the definition of a text search parser" msgstr "modifier la d�finition d'un analyseur de la recherche de texte" -#: sql_help.h:293 +#: sql_help.h:317 msgid "change the definition of a text search template" msgstr "modifier la d�finition d'un mod�le de la recherche de texte" -#: sql_help.h:298 +#: sql_help.h:322 msgid "change the definition of a trigger" msgstr "modifier la d�finition d'un trigger" -#: sql_help.h:303 +#: sql_help.h:327 msgid "change the definition of a type" msgstr "modifier la d�finition d'un type" -#: sql_help.h:313 +#: sql_help.h:337 msgid "change the definition of a user mapping" msgstr "modifier la d�finition d'une correspondance d'utilisateur" -#: sql_help.h:318 +#: sql_help.h:342 msgid "change the definition of a view" msgstr "modifier la d�finition d'une vue" -#: sql_help.h:323 +#: sql_help.h:347 msgid "collect statistics about a database" msgstr "acqu�rir des statistiques concernant la base de donn�es" -#: sql_help.h:328 -#: sql_help.h:848 +#: sql_help.h:352 +#: sql_help.h:902 msgid "start a transaction block" msgstr "d�buter un bloc de transaction" -#: sql_help.h:333 +#: sql_help.h:357 msgid "force a transaction log checkpoint" msgstr "forcer un point de v�rification des journaux de transaction" -#: sql_help.h:338 +#: sql_help.h:362 msgid "close a cursor" msgstr "fermer un curseur" -#: sql_help.h:343 +#: sql_help.h:367 msgid "cluster a table according to an index" msgstr "r�organiser (cluster) une table en fonction d'un index" -#: sql_help.h:348 +#: sql_help.h:372 msgid "define or change the comment of an object" msgstr "d�finir ou modifier les commentaires d'un objet" -#: sql_help.h:353 -#: sql_help.h:698 +#: sql_help.h:377 +#: sql_help.h:747 msgid "commit the current transaction" msgstr "valider la transaction en cours" -#: sql_help.h:358 +#: sql_help.h:382 msgid "commit a transaction that was earlier prepared for two-phase commit" msgstr "" "valider une transaction pr�c�demment pr�par�e pour une validation en deux\n" "phases" -#: sql_help.h:363 +#: sql_help.h:387 msgid "copy data between a file and a table" msgstr "copier des donn�es entre un fichier et une table" -#: sql_help.h:368 +#: sql_help.h:392 msgid "define a new aggregate function" msgstr "d�finir une nouvelle fonction d'agr�gation" -#: sql_help.h:373 +#: sql_help.h:397 msgid "define a new cast" msgstr "d�finir un nouveau transtypage" -#: sql_help.h:378 -msgid "define a new constraint trigger" -msgstr "d�finir une nouvelle contrainte de d�clenchement" +#: sql_help.h:402 +msgid "define a new collation" +msgstr "d�finir un nouveau collationnement" -#: sql_help.h:383 +#: sql_help.h:407 msgid "define a new encoding conversion" msgstr "d�finir une nouvelle conversion d'encodage" -#: sql_help.h:388 +#: sql_help.h:412 msgid "create a new database" msgstr "cr�er une nouvelle base de donn�es" -#: sql_help.h:393 +#: sql_help.h:417 msgid "define a new domain" msgstr "d�finir un nouveau domaine" -#: sql_help.h:398 +#: sql_help.h:422 +msgid "install an extension" +msgstr "installer une extension" + +#: sql_help.h:427 msgid "define a new foreign-data wrapper" msgstr "d�finir un nouveau wrapper de donn�es distantes" -#: sql_help.h:403 +#: sql_help.h:432 +msgid "define a new foreign table" +msgstr "d�finir une nouvelle table distante" + +#: sql_help.h:437 msgid "define a new function" msgstr "d�finir une nouvelle fonction" -#: sql_help.h:408 -#: sql_help.h:438 -#: sql_help.h:508 +#: sql_help.h:442 +#: sql_help.h:472 +#: sql_help.h:542 msgid "define a new database role" msgstr "d�finir un nouveau r�le" -#: sql_help.h:413 +#: sql_help.h:447 msgid "define a new index" msgstr "d�finir un nouvel index" -#: sql_help.h:418 +#: sql_help.h:452 msgid "define a new procedural language" msgstr "d�finir un nouveau langage de proc�dures" -#: sql_help.h:423 +#: sql_help.h:457 msgid "define a new operator" msgstr "d�finir un nouvel op�rateur" -#: sql_help.h:428 +#: sql_help.h:462 msgid "define a new operator class" msgstr "d�finir une nouvelle classe d'op�rateur" -#: sql_help.h:433 +#: sql_help.h:467 msgid "define a new operator family" msgstr "d�finir une nouvelle famille d'op�rateur" -#: sql_help.h:443 +#: sql_help.h:477 msgid "define a new rewrite rule" msgstr "d�finir une nouvelle r�gle de r��criture" -#: sql_help.h:448 +#: sql_help.h:482 msgid "define a new schema" msgstr "d�finir un nouveau sch�ma" -#: sql_help.h:453 +#: sql_help.h:487 msgid "define a new sequence generator" msgstr "d�finir un nouveau g�n�rateur de s�quence" -#: sql_help.h:458 +#: sql_help.h:492 msgid "define a new foreign server" msgstr "d�finir un nouveau serveur distant" -#: sql_help.h:463 +#: sql_help.h:497 msgid "define a new table" msgstr "d�finir une nouvelle table" -#: sql_help.h:468 -#: sql_help.h:813 +#: sql_help.h:502 +#: sql_help.h:867 msgid "define a new table from the results of a query" msgstr "d�finir une nouvelle table � partir des r�sultats d'une requ�te" -#: sql_help.h:473 +#: sql_help.h:507 msgid "define a new tablespace" msgstr "d�finir un nouveau tablespace" -#: sql_help.h:478 +#: sql_help.h:512 msgid "define a new text search configuration" msgstr "d�finir une nouvelle configuration de la recherche de texte" -#: sql_help.h:483 +#: sql_help.h:517 msgid "define a new text search dictionary" msgstr "d�finir un nouveau dictionnaire de la recherche de texte" -#: sql_help.h:488 +#: sql_help.h:522 msgid "define a new text search parser" msgstr "d�finir un nouvel analyseur de la recherche de texte" -#: sql_help.h:493 +#: sql_help.h:527 msgid "define a new text search template" msgstr "d�finir un nouveau mod�le de la recherche de texte" -#: sql_help.h:498 +#: sql_help.h:532 msgid "define a new trigger" msgstr "d�finir un nouveau trigger" -#: sql_help.h:503 +#: sql_help.h:537 msgid "define a new data type" msgstr "d�finir un nouveau type de donn�es" -#: sql_help.h:513 +#: sql_help.h:547 msgid "define a new mapping of a user to a foreign server" msgstr "d�finit une nouvelle correspondance d'un utilisateur vers un serveur distant" -#: sql_help.h:518 +#: sql_help.h:552 msgid "define a new view" msgstr "d�finir une nouvelle vue" -#: sql_help.h:523 +#: sql_help.h:557 msgid "deallocate a prepared statement" msgstr "d�sallouer une instruction pr�par�e" -#: sql_help.h:528 +#: sql_help.h:562 msgid "define a cursor" msgstr "d�finir un curseur" -#: sql_help.h:533 +#: sql_help.h:567 msgid "delete rows of a table" msgstr "supprimer des lignes d'une table" -#: sql_help.h:538 +#: sql_help.h:572 msgid "discard session state" msgstr "annuler l'�tat de la session" -#: sql_help.h:543 +#: sql_help.h:577 msgid "execute an anonymous code block" msgstr "ex�cute un bloc de code anonyme" -#: sql_help.h:548 +#: sql_help.h:582 msgid "remove an aggregate function" msgstr "supprimer une fonction d'agr�gation" -#: sql_help.h:553 +#: sql_help.h:587 msgid "remove a cast" msgstr "supprimer un transtypage" -#: sql_help.h:558 +#: sql_help.h:592 +msgid "remove a collation" +msgstr "supprimer un collationnement" + +#: sql_help.h:597 msgid "remove a conversion" msgstr "supprimer une conversion" -#: sql_help.h:563 +#: sql_help.h:602 msgid "remove a database" msgstr "supprimer une base de donn�es" -#: sql_help.h:568 +#: sql_help.h:607 msgid "remove a domain" msgstr "supprimer un domaine" -#: sql_help.h:573 +#: sql_help.h:612 +msgid "remove an extension" +msgstr "supprimer une extension" + +#: sql_help.h:617 msgid "remove a foreign-data wrapper" msgstr "supprimer un wrapper de donn�es distantes" -#: sql_help.h:578 +#: sql_help.h:622 +msgid "remove a foreign table" +msgstr "supprimer une table distante" + +#: sql_help.h:627 msgid "remove a function" msgstr "supprimer une fonction" -#: sql_help.h:583 -#: sql_help.h:618 -#: sql_help.h:683 +#: sql_help.h:632 +#: sql_help.h:667 +#: sql_help.h:732 msgid "remove a database role" msgstr "supprimer un r�le de la base de donn�es" -#: sql_help.h:588 +#: sql_help.h:637 msgid "remove an index" msgstr "supprimer un index" -#: sql_help.h:593 +#: sql_help.h:642 msgid "remove a procedural language" msgstr "supprimer un langage proc�dural" -#: sql_help.h:598 +#: sql_help.h:647 msgid "remove an operator" msgstr "supprimer un op�rateur" -#: sql_help.h:603 +#: sql_help.h:652 msgid "remove an operator class" msgstr "supprimer une classe d'op�rateur" -#: sql_help.h:608 +#: sql_help.h:657 msgid "remove an operator family" msgstr "supprimer une famille d'op�rateur" -#: sql_help.h:613 +#: sql_help.h:662 msgid "remove database objects owned by a database role" msgstr "supprimer les objets appartenant � un r�le" -#: sql_help.h:623 +#: sql_help.h:672 msgid "remove a rewrite rule" msgstr "supprimer une r�gle de r��criture" -#: sql_help.h:628 +#: sql_help.h:677 msgid "remove a schema" msgstr "supprimer un sch�ma" -#: sql_help.h:633 +#: sql_help.h:682 msgid "remove a sequence" msgstr "supprimer une s�quence" -#: sql_help.h:638 +#: sql_help.h:687 msgid "remove a foreign server descriptor" msgstr "supprimer un descripteur de serveur distant" -#: sql_help.h:643 +#: sql_help.h:692 msgid "remove a table" msgstr "supprimer une table" -#: sql_help.h:648 +#: sql_help.h:697 msgid "remove a tablespace" msgstr "supprimer un tablespace" -#: sql_help.h:653 +#: sql_help.h:702 msgid "remove a text search configuration" msgstr "supprimer une configuration de la recherche de texte" -#: sql_help.h:658 +#: sql_help.h:707 msgid "remove a text search dictionary" msgstr "supprimer un dictionnaire de la recherche de texte" -#: sql_help.h:663 +#: sql_help.h:712 msgid "remove a text search parser" msgstr "supprimer un analyseur de la recherche de texte" -#: sql_help.h:668 +#: sql_help.h:717 msgid "remove a text search template" msgstr "supprimer un mod�le de la recherche de texte" -#: sql_help.h:673 +#: sql_help.h:722 msgid "remove a trigger" msgstr "supprimer un trigger" -#: sql_help.h:678 +#: sql_help.h:727 msgid "remove a data type" msgstr "supprimer un type de donn�es" -#: sql_help.h:688 +#: sql_help.h:737 msgid "remove a user mapping for a foreign server" msgstr "supprime une correspondance utilisateur pour un serveur distant" -#: sql_help.h:693 +#: sql_help.h:742 msgid "remove a view" msgstr "supprimer une vue" -#: sql_help.h:703 +#: sql_help.h:752 msgid "execute a prepared statement" msgstr "ex�cuter une instruction pr�par�e" -#: sql_help.h:708 +#: sql_help.h:757 msgid "show the execution plan of a statement" msgstr "afficher le plan d'ex�cution d'une instruction" -#: sql_help.h:713 +#: sql_help.h:762 msgid "retrieve rows from a query using a cursor" msgstr "extraire certaines lignes d'une requ�te � l'aide d'un curseur" -#: sql_help.h:718 +#: sql_help.h:767 msgid "define access privileges" msgstr "d�finir des privil�ges d'acc�s" -#: sql_help.h:723 +#: sql_help.h:772 msgid "create new rows in a table" msgstr "cr�er de nouvelles lignes dans une table" -#: sql_help.h:728 +#: sql_help.h:777 msgid "listen for a notification" msgstr "se mettre � l'�coute d'une notification" -#: sql_help.h:733 +#: sql_help.h:782 msgid "load a shared library file" msgstr "charger un fichier de biblioth�que partag�e" -#: sql_help.h:738 +#: sql_help.h:787 msgid "lock a table" msgstr "verrouiller une table" -#: sql_help.h:743 +#: sql_help.h:792 msgid "position a cursor" msgstr "positionner un curseur" -#: sql_help.h:748 +#: sql_help.h:797 msgid "generate a notification" msgstr "engendrer une notification" -#: sql_help.h:753 +#: sql_help.h:802 msgid "prepare a statement for execution" msgstr "pr�parer une instruction pour ex�cution" -#: sql_help.h:758 +#: sql_help.h:807 msgid "prepare the current transaction for two-phase commit" msgstr "pr�parer la transaction en cours pour une validation en deux phases" -#: sql_help.h:763 +#: sql_help.h:812 msgid "change the ownership of database objects owned by a database role" msgstr "changer le propri�taire des objets d'un r�le" -#: sql_help.h:768 +#: sql_help.h:817 msgid "rebuild indexes" msgstr "reconstruire des index" -#: sql_help.h:773 +#: sql_help.h:822 msgid "destroy a previously defined savepoint" msgstr "d�truire un point de retournement pr�c�demment d�fini" -#: sql_help.h:778 +#: sql_help.h:827 msgid "restore the value of a run-time parameter to the default value" msgstr "r�initialiser un param�tre d'ex�cution � sa valeur par d�faut" -#: sql_help.h:783 +#: sql_help.h:832 msgid "remove access privileges" msgstr "supprimer des privil�ges d'acc�s" -#: sql_help.h:793 +#: sql_help.h:842 msgid "cancel a transaction that was earlier prepared for two-phase commit" msgstr "" "annuler une transaction pr�c�demment pr�par�e pour une validation en deux\n" "phases" -#: sql_help.h:798 +#: sql_help.h:847 msgid "roll back to a savepoint" msgstr "annuler jusqu'au point de retournement" -#: sql_help.h:803 +#: sql_help.h:852 msgid "define a new savepoint within the current transaction" msgstr "d�finir un nouveau point de retournement pour la transaction en cours" -#: sql_help.h:808 -#: sql_help.h:853 -#: sql_help.h:883 +#: sql_help.h:857 +msgid "define or change a security label applied to an object" +msgstr "d�finir ou modifier un label de s�curit� � un objet" + +#: sql_help.h:862 +#: sql_help.h:907 +#: sql_help.h:937 msgid "retrieve rows from a table or view" msgstr "extraire des lignes d'une table ou d'une vue" -#: sql_help.h:818 +#: sql_help.h:872 msgid "change a run-time parameter" msgstr "modifier un param�tre d'ex�cution" -#: sql_help.h:823 +#: sql_help.h:877 msgid "set constraint check timing for the current transaction" msgstr "d�finir le moment de la v�rification des contraintes pour la transaction en cours" -#: sql_help.h:828 +#: sql_help.h:882 msgid "set the current user identifier of the current session" msgstr "d�finir l'identifiant actuel de l'utilisateur de la session courante" -#: sql_help.h:833 +#: sql_help.h:887 msgid "set the session user identifier and the current user identifier of the current session" msgstr "" "d�finir l'identifiant de l'utilisateur de session et l'identifiant actuel de\n" "l'utilisateur de la session courante" -#: sql_help.h:838 +#: sql_help.h:892 msgid "set the characteristics of the current transaction" msgstr "d�finir les caract�ristiques de la transaction en cours" -#: sql_help.h:843 +#: sql_help.h:897 msgid "show the value of a run-time parameter" msgstr "afficher la valeur d'un param�tre d'ex�cution" -#: sql_help.h:858 +#: sql_help.h:912 msgid "empty a table or set of tables" msgstr "vider une table ou un ensemble de tables" -#: sql_help.h:863 +#: sql_help.h:917 msgid "stop listening for a notification" msgstr "arr�ter l'�coute d'une notification" -#: sql_help.h:868 +#: sql_help.h:922 msgid "update rows of a table" msgstr "actualiser les lignes d'une table" -#: sql_help.h:873 +#: sql_help.h:927 msgid "garbage-collect and optionally analyze a database" msgstr "compacter et optionnellement analyser une base de donn�es" -#: sql_help.h:878 +#: sql_help.h:932 msgid "compute a set of rows" msgstr "calculer un ensemble de lignes" #: sql_help.c:26 #: sql_help.c:29 #: sql_help.c:32 -#: sql_help.c:43 -#: sql_help.c:45 -#: sql_help.c:69 -#: sql_help.c:73 -#: sql_help.c:75 -#: sql_help.c:77 -#: sql_help.c:79 -#: sql_help.c:82 -#: sql_help.c:84 -#: sql_help.c:86 -#: sql_help.c:161 -#: sql_help.c:163 -#: sql_help.c:164 -#: sql_help.c:166 -#: sql_help.c:168 -#: sql_help.c:170 +#: sql_help.c:44 +#: sql_help.c:46 +#: sql_help.c:48 +#: sql_help.c:59 +#: sql_help.c:61 +#: sql_help.c:63 +#: sql_help.c:87 +#: sql_help.c:91 +#: sql_help.c:93 +#: sql_help.c:95 +#: sql_help.c:97 +#: sql_help.c:100 +#: sql_help.c:102 +#: sql_help.c:104 +#: sql_help.c:179 +#: sql_help.c:181 #: sql_help.c:182 +#: sql_help.c:184 #: sql_help.c:186 -#: sql_help.c:214 -#: sql_help.c:219 -#: sql_help.c:224 -#: sql_help.c:229 -#: sql_help.c:267 -#: sql_help.c:269 -#: sql_help.c:271 -#: sql_help.c:274 -#: sql_help.c:284 -#: sql_help.c:286 -#: sql_help.c:304 -#: sql_help.c:316 -#: sql_help.c:319 -#: sql_help.c:338 -#: sql_help.c:349 -#: sql_help.c:357 -#: sql_help.c:360 -#: sql_help.c:389 -#: sql_help.c:395 -#: sql_help.c:397 -#: sql_help.c:401 +#: sql_help.c:188 +#: sql_help.c:276 +#: sql_help.c:281 +#: sql_help.c:306 +#: sql_help.c:308 +#: sql_help.c:311 +#: sql_help.c:313 +#: sql_help.c:351 +#: sql_help.c:356 +#: sql_help.c:361 +#: sql_help.c:366 #: sql_help.c:404 -#: sql_help.c:407 -#: sql_help.c:417 -#: sql_help.c:419 -#: sql_help.c:436 -#: sql_help.c:445 -#: sql_help.c:447 -#: sql_help.c:449 -#: sql_help.c:513 -#: sql_help.c:515 -#: sql_help.c:518 -#: sql_help.c:520 -#: sql_help.c:570 -#: sql_help.c:572 -#: sql_help.c:574 -#: sql_help.c:577 +#: sql_help.c:406 +#: sql_help.c:408 +#: sql_help.c:411 +#: sql_help.c:421 +#: sql_help.c:423 +#: sql_help.c:442 +#: sql_help.c:446 +#: sql_help.c:459 +#: sql_help.c:462 +#: sql_help.c:465 +#: sql_help.c:485 +#: sql_help.c:497 +#: sql_help.c:505 +#: sql_help.c:508 +#: sql_help.c:511 +#: sql_help.c:541 +#: sql_help.c:547 +#: sql_help.c:549 +#: sql_help.c:553 +#: sql_help.c:556 +#: sql_help.c:559 +#: sql_help.c:569 +#: sql_help.c:571 +#: sql_help.c:588 #: sql_help.c:597 -#: sql_help.c:600 -#: sql_help.c:603 -#: sql_help.c:606 -#: sql_help.c:610 -#: sql_help.c:612 -#: sql_help.c:614 -#: sql_help.c:627 -#: sql_help.c:630 -#: sql_help.c:632 -#: sql_help.c:641 -#: sql_help.c:650 -#: sql_help.c:659 -#: sql_help.c:671 -#: sql_help.c:673 +#: sql_help.c:599 +#: sql_help.c:601 #: sql_help.c:675 -#: sql_help.c:703 -#: sql_help.c:709 -#: sql_help.c:711 -#: sql_help.c:714 -#: sql_help.c:716 -#: sql_help.c:718 -#: sql_help.c:743 -#: sql_help.c:746 -#: sql_help.c:748 -#: sql_help.c:750 -#: sql_help.c:752 -#: sql_help.c:791 -#: sql_help.c:962 -#: sql_help.c:970 -#: sql_help.c:1016 -#: sql_help.c:1031 -#: sql_help.c:1049 -#: sql_help.c:1071 -#: sql_help.c:1087 -#: sql_help.c:1113 -#: sql_help.c:1155 -#: sql_help.c:1177 -#: sql_help.c:1196 -#: sql_help.c:1197 -#: sql_help.c:1214 -#: sql_help.c:1234 -#: sql_help.c:1255 -#: sql_help.c:1282 -#: sql_help.c:1303 -#: sql_help.c:1333 -#: sql_help.c:1513 -#: sql_help.c:1526 -#: sql_help.c:1543 -#: sql_help.c:1559 -#: sql_help.c:1572 -#: sql_help.c:1611 -#: sql_help.c:1614 -#: sql_help.c:1616 -#: sql_help.c:1633 -#: sql_help.c:1659 -#: sql_help.c:1692 -#: sql_help.c:1702 -#: sql_help.c:1711 -#: sql_help.c:1753 +#: sql_help.c:677 +#: sql_help.c:680 +#: sql_help.c:682 +#: sql_help.c:740 +#: sql_help.c:742 +#: sql_help.c:744 +#: sql_help.c:747 +#: sql_help.c:768 +#: sql_help.c:771 +#: sql_help.c:774 +#: sql_help.c:777 +#: sql_help.c:781 +#: sql_help.c:783 +#: sql_help.c:785 +#: sql_help.c:787 +#: sql_help.c:801 +#: sql_help.c:804 +#: sql_help.c:806 +#: sql_help.c:808 +#: sql_help.c:818 +#: sql_help.c:820 +#: sql_help.c:830 +#: sql_help.c:832 +#: sql_help.c:841 +#: sql_help.c:862 +#: sql_help.c:864 +#: sql_help.c:866 +#: sql_help.c:869 +#: sql_help.c:871 +#: sql_help.c:873 +#: sql_help.c:911 +#: sql_help.c:917 +#: sql_help.c:919 +#: sql_help.c:922 +#: sql_help.c:924 +#: sql_help.c:926 +#: sql_help.c:951 +#: sql_help.c:954 +#: sql_help.c:956 +#: sql_help.c:958 +#: sql_help.c:960 +#: sql_help.c:1000 +#: sql_help.c:1183 +#: sql_help.c:1191 +#: sql_help.c:1235 +#: sql_help.c:1239 +#: sql_help.c:1249 +#: sql_help.c:1267 +#: sql_help.c:1290 +#: sql_help.c:1322 +#: sql_help.c:1367 +#: sql_help.c:1409 +#: sql_help.c:1431 +#: sql_help.c:1451 +#: sql_help.c:1452 +#: sql_help.c:1469 +#: sql_help.c:1489 +#: sql_help.c:1511 +#: sql_help.c:1539 +#: sql_help.c:1560 +#: sql_help.c:1590 #: sql_help.c:1771 -#: sql_help.c:1779 -#: sql_help.c:1787 -#: sql_help.c:1795 -#: sql_help.c:1804 -#: sql_help.c:1815 -#: sql_help.c:1823 -#: sql_help.c:1831 -#: sql_help.c:1839 -#: sql_help.c:1849 -#: sql_help.c:1858 -#: sql_help.c:1867 -#: sql_help.c:1875 +#: sql_help.c:1784 +#: sql_help.c:1801 +#: sql_help.c:1817 +#: sql_help.c:1840 #: sql_help.c:1883 -#: sql_help.c:1892 -#: sql_help.c:1900 -#: sql_help.c:1916 -#: sql_help.c:1932 -#: sql_help.c:1940 -#: sql_help.c:1948 -#: sql_help.c:1956 -#: sql_help.c:1964 -#: sql_help.c:1973 -#: sql_help.c:1981 -#: sql_help.c:1998 -#: sql_help.c:2013 +#: sql_help.c:1887 +#: sql_help.c:1889 +#: sql_help.c:1907 +#: sql_help.c:1934 +#: sql_help.c:1967 +#: sql_help.c:1977 +#: sql_help.c:1986 +#: sql_help.c:2030 +#: sql_help.c:2048 +#: sql_help.c:2056 +#: sql_help.c:2064 +#: sql_help.c:2072 +#: sql_help.c:2088 +#: sql_help.c:2096 +#: sql_help.c:2105 +#: sql_help.c:2116 +#: sql_help.c:2124 +#: sql_help.c:2132 +#: sql_help.c:2140 +#: sql_help.c:2150 +#: sql_help.c:2159 +#: sql_help.c:2168 +#: sql_help.c:2176 +#: sql_help.c:2184 #: sql_help.c:2193 -#: sql_help.c:2221 -#: sql_help.c:2248 -#: sql_help.c:2549 -#: sql_help.c:2594 -#: sql_help.c:2698 +#: sql_help.c:2201 +#: sql_help.c:2217 +#: sql_help.c:2233 +#: sql_help.c:2241 +#: sql_help.c:2249 +#: sql_help.c:2257 +#: sql_help.c:2265 +#: sql_help.c:2274 +#: sql_help.c:2282 +#: sql_help.c:2299 +#: sql_help.c:2314 +#: sql_help.c:2506 +#: sql_help.c:2557 +#: sql_help.c:2584 +#: sql_help.c:2927 +#: sql_help.c:2973 +#: sql_help.c:3080 msgid "name" msgstr "nom" #: sql_help.c:27 #: sql_help.c:30 #: sql_help.c:33 -#: sql_help.c:524 -#: sql_help.c:528 -#: sql_help.c:1754 +#: sql_help.c:317 +#: sql_help.c:320 +#: sql_help.c:2031 msgid "type" msgstr "type" #: sql_help.c:28 -#: sql_help.c:44 -#: sql_help.c:74 -#: sql_help.c:223 -#: sql_help.c:256 -#: sql_help.c:268 -#: sql_help.c:285 -#: sql_help.c:318 -#: sql_help.c:359 -#: sql_help.c:396 -#: sql_help.c:418 -#: sql_help.c:448 -#: sql_help.c:519 -#: sql_help.c:571 -#: sql_help.c:613 -#: sql_help.c:631 -#: sql_help.c:642 -#: sql_help.c:651 -#: sql_help.c:661 -#: sql_help.c:672 -#: sql_help.c:710 -#: sql_help.c:751 +#: sql_help.c:45 +#: sql_help.c:60 +#: sql_help.c:92 +#: sql_help.c:312 +#: sql_help.c:360 +#: sql_help.c:393 +#: sql_help.c:405 +#: sql_help.c:422 +#: sql_help.c:461 +#: sql_help.c:507 +#: sql_help.c:548 +#: sql_help.c:570 +#: sql_help.c:600 +#: sql_help.c:681 +#: sql_help.c:741 +#: sql_help.c:784 +#: sql_help.c:805 +#: sql_help.c:819 +#: sql_help.c:831 +#: sql_help.c:843 +#: sql_help.c:870 +#: sql_help.c:918 +#: sql_help.c:959 msgid "new_name" msgstr "nouveau_nom" #: sql_help.c:31 -#: sql_help.c:46 -#: sql_help.c:76 -#: sql_help.c:169 +#: sql_help.c:47 +#: sql_help.c:62 +#: sql_help.c:94 #: sql_help.c:187 -#: sql_help.c:228 -#: sql_help.c:287 -#: sql_help.c:296 -#: sql_help.c:307 -#: sql_help.c:321 -#: sql_help.c:362 -#: sql_help.c:420 -#: sql_help.c:446 -#: sql_help.c:465 -#: sql_help.c:558 -#: sql_help.c:573 -#: sql_help.c:615 -#: sql_help.c:633 -#: sql_help.c:674 -#: sql_help.c:749 +#: sql_help.c:282 +#: sql_help.c:322 +#: sql_help.c:365 +#: sql_help.c:424 +#: sql_help.c:433 +#: sql_help.c:445 +#: sql_help.c:464 +#: sql_help.c:510 +#: sql_help.c:572 +#: sql_help.c:598 +#: sql_help.c:617 +#: sql_help.c:725 +#: sql_help.c:743 +#: sql_help.c:786 +#: sql_help.c:807 +#: sql_help.c:865 +#: sql_help.c:957 msgid "new_owner" msgstr "nouveau_propri�taire" #: sql_help.c:34 -#: sql_help.c:171 -#: sql_help.c:233 -#: sql_help.c:450 -#: sql_help.c:521 -#: sql_help.c:676 -#: sql_help.c:753 +#: sql_help.c:49 +#: sql_help.c:64 +#: sql_help.c:189 +#: sql_help.c:228 +#: sql_help.c:314 +#: sql_help.c:370 +#: sql_help.c:449 +#: sql_help.c:467 +#: sql_help.c:513 +#: sql_help.c:602 +#: sql_help.c:683 +#: sql_help.c:788 +#: sql_help.c:809 +#: sql_help.c:821 +#: sql_help.c:833 +#: sql_help.c:872 +#: sql_help.c:961 msgid "new_schema" msgstr "nouveau_sch�ma" -#: sql_help.c:70 -#: sql_help.c:184 -#: sql_help.c:390 -#: sql_help.c:462 -#: sql_help.c:628 -#: sql_help.c:704 -#: sql_help.c:730 -#: sql_help.c:922 -#: sql_help.c:927 -#: sql_help.c:1089 -#: sql_help.c:1156 -#: sql_help.c:1283 -#: sql_help.c:1354 -#: sql_help.c:1528 -#: sql_help.c:1660 -#: sql_help.c:1682 +#: sql_help.c:88 +#: sql_help.c:279 +#: sql_help.c:323 +#: sql_help.c:542 +#: sql_help.c:614 +#: sql_help.c:802 +#: sql_help.c:912 +#: sql_help.c:938 +#: sql_help.c:1142 +#: sql_help.c:1147 +#: sql_help.c:1325 +#: sql_help.c:1343 +#: sql_help.c:1410 +#: sql_help.c:1540 +#: sql_help.c:1611 +#: sql_help.c:1786 +#: sql_help.c:1935 +#: sql_help.c:1957 +#: sql_help.c:2332 msgid "option" msgstr "option" -#: sql_help.c:71 -#: sql_help.c:391 -#: sql_help.c:705 -#: sql_help.c:1157 -#: sql_help.c:1284 -#: sql_help.c:1661 +#: sql_help.c:89 +#: sql_help.c:543 +#: sql_help.c:913 +#: sql_help.c:1411 +#: sql_help.c:1541 +#: sql_help.c:1936 msgid "where option can be:" msgstr "o� option peut �tre :" -#: sql_help.c:72 -#: sql_help.c:392 -#: sql_help.c:706 -#: sql_help.c:1056 -#: sql_help.c:1285 -#: sql_help.c:1662 +#: sql_help.c:90 +#: sql_help.c:544 +#: sql_help.c:914 +#: sql_help.c:1274 +#: sql_help.c:1542 +#: sql_help.c:1937 msgid "connlimit" msgstr "limite_de_connexion" -#: sql_help.c:78 -#: sql_help.c:559 +#: sql_help.c:96 +#: sql_help.c:726 msgid "new_tablespace" msgstr "nouveau_tablespace" -#: sql_help.c:80 -#: sql_help.c:83 -#: sql_help.c:85 -#: sql_help.c:237 -#: sql_help.c:239 -#: sql_help.c:240 -#: sql_help.c:399 -#: sql_help.c:403 -#: sql_help.c:406 -#: sql_help.c:712 -#: sql_help.c:715 -#: sql_help.c:717 -#: sql_help.c:1124 -#: sql_help.c:2265 -#: sql_help.c:2538 +#: sql_help.c:98 +#: sql_help.c:101 +#: sql_help.c:103 +#: sql_help.c:374 +#: sql_help.c:376 +#: sql_help.c:377 +#: sql_help.c:551 +#: sql_help.c:555 +#: sql_help.c:558 +#: sql_help.c:920 +#: sql_help.c:923 +#: sql_help.c:925 +#: sql_help.c:1378 +#: sql_help.c:2601 +#: sql_help.c:2916 msgid "configuration_parameter" msgstr "param�tre_configuration" -#: sql_help.c:81 -#: sql_help.c:185 -#: sql_help.c:238 -#: sql_help.c:273 -#: sql_help.c:400 -#: sql_help.c:463 -#: sql_help.c:538 -#: sql_help.c:554 -#: sql_help.c:576 -#: sql_help.c:629 -#: sql_help.c:713 -#: sql_help.c:731 -#: sql_help.c:1090 -#: sql_help.c:1125 -#: sql_help.c:1126 -#: sql_help.c:1184 -#: sql_help.c:1355 -#: sql_help.c:1428 -#: sql_help.c:1437 -#: sql_help.c:1468 -#: sql_help.c:1490 -#: sql_help.c:1529 -#: sql_help.c:1683 -#: sql_help.c:2539 -#: sql_help.c:2540 +#: sql_help.c:99 +#: sql_help.c:280 +#: sql_help.c:324 +#: sql_help.c:375 +#: sql_help.c:410 +#: sql_help.c:552 +#: sql_help.c:615 +#: sql_help.c:702 +#: sql_help.c:720 +#: sql_help.c:746 +#: sql_help.c:803 +#: sql_help.c:921 +#: sql_help.c:939 +#: sql_help.c:1326 +#: sql_help.c:1344 +#: sql_help.c:1379 +#: sql_help.c:1380 +#: sql_help.c:1439 +#: sql_help.c:1612 +#: sql_help.c:1686 +#: sql_help.c:1694 +#: sql_help.c:1726 +#: sql_help.c:1748 +#: sql_help.c:1787 +#: sql_help.c:1958 +#: sql_help.c:2917 +#: sql_help.c:2918 msgid "value" msgstr "valeur" -#: sql_help.c:133 +#: sql_help.c:151 msgid "target_role" msgstr "r�le_cible" -#: sql_help.c:134 -#: sql_help.c:1318 -#: sql_help.c:2119 -#: sql_help.c:2126 -#: sql_help.c:2138 -#: sql_help.c:2144 -#: sql_help.c:2348 -#: sql_help.c:2355 -#: sql_help.c:2367 -#: sql_help.c:2373 +#: sql_help.c:152 +#: sql_help.c:1575 +#: sql_help.c:2430 +#: sql_help.c:2437 +#: sql_help.c:2449 +#: sql_help.c:2455 +#: sql_help.c:2684 +#: sql_help.c:2691 +#: sql_help.c:2703 +#: sql_help.c:2709 msgid "schema_name" msgstr "nom_sch�ma" -#: sql_help.c:135 +#: sql_help.c:153 msgid "abbreviated_grant_or_revoke" msgstr "grant_ou_revoke_raccourci" -#: sql_help.c:136 +#: sql_help.c:154 msgid "where abbreviated_grant_or_revoke is one of:" msgstr "o� abbreviated_grant_or_revoke fait partie de :" -#: sql_help.c:137 -#: sql_help.c:138 -#: sql_help.c:139 -#: sql_help.c:140 -#: sql_help.c:141 -#: sql_help.c:142 -#: sql_help.c:1160 -#: sql_help.c:1161 -#: sql_help.c:1162 -#: sql_help.c:1163 -#: sql_help.c:1164 -#: sql_help.c:1288 -#: sql_help.c:1289 -#: sql_help.c:1290 -#: sql_help.c:1291 -#: sql_help.c:1292 -#: sql_help.c:1665 -#: sql_help.c:1666 -#: sql_help.c:1667 -#: sql_help.c:1668 -#: sql_help.c:1669 -#: sql_help.c:2120 -#: sql_help.c:2124 -#: sql_help.c:2127 -#: sql_help.c:2129 -#: sql_help.c:2131 -#: sql_help.c:2133 -#: sql_help.c:2139 -#: sql_help.c:2141 -#: sql_help.c:2143 -#: sql_help.c:2145 -#: sql_help.c:2147 -#: sql_help.c:2148 -#: sql_help.c:2149 -#: sql_help.c:2349 -#: sql_help.c:2353 -#: sql_help.c:2356 -#: sql_help.c:2358 -#: sql_help.c:2360 -#: sql_help.c:2362 -#: sql_help.c:2368 -#: sql_help.c:2370 -#: sql_help.c:2372 -#: sql_help.c:2374 -#: sql_help.c:2376 -#: sql_help.c:2377 -#: sql_help.c:2378 -#: sql_help.c:2559 +#: sql_help.c:155 +#: sql_help.c:156 +#: sql_help.c:157 +#: sql_help.c:158 +#: sql_help.c:159 +#: sql_help.c:160 +#: sql_help.c:1414 +#: sql_help.c:1415 +#: sql_help.c:1416 +#: sql_help.c:1417 +#: sql_help.c:1418 +#: sql_help.c:1545 +#: sql_help.c:1546 +#: sql_help.c:1547 +#: sql_help.c:1548 +#: sql_help.c:1549 +#: sql_help.c:1940 +#: sql_help.c:1941 +#: sql_help.c:1942 +#: sql_help.c:1943 +#: sql_help.c:1944 +#: sql_help.c:2431 +#: sql_help.c:2435 +#: sql_help.c:2438 +#: sql_help.c:2440 +#: sql_help.c:2442 +#: sql_help.c:2444 +#: sql_help.c:2450 +#: sql_help.c:2452 +#: sql_help.c:2454 +#: sql_help.c:2456 +#: sql_help.c:2458 +#: sql_help.c:2459 +#: sql_help.c:2460 +#: sql_help.c:2685 +#: sql_help.c:2689 +#: sql_help.c:2692 +#: sql_help.c:2694 +#: sql_help.c:2696 +#: sql_help.c:2698 +#: sql_help.c:2704 +#: sql_help.c:2706 +#: sql_help.c:2708 +#: sql_help.c:2710 +#: sql_help.c:2712 +#: sql_help.c:2713 +#: sql_help.c:2714 +#: sql_help.c:2937 msgid "role_name" msgstr "nom_r�le" -#: sql_help.c:162 -#: sql_help.c:529 -#: sql_help.c:531 -#: sql_help.c:745 -#: sql_help.c:1073 -#: sql_help.c:1077 -#: sql_help.c:1181 -#: sql_help.c:1441 -#: sql_help.c:1450 -#: sql_help.c:1472 -#: sql_help.c:2161 -#: sql_help.c:2446 -#: sql_help.c:2447 -#: sql_help.c:2451 -#: sql_help.c:2456 -#: sql_help.c:2513 -#: sql_help.c:2514 -#: sql_help.c:2519 -#: sql_help.c:2524 -#: sql_help.c:2645 -#: sql_help.c:2646 -#: sql_help.c:2650 -#: sql_help.c:2655 -#: sql_help.c:2722 -#: sql_help.c:2724 -#: sql_help.c:2755 -#: sql_help.c:2797 -#: sql_help.c:2798 -#: sql_help.c:2802 -#: sql_help.c:2807 +#: sql_help.c:180 +#: sql_help.c:693 +#: sql_help.c:695 +#: sql_help.c:953 +#: sql_help.c:1293 +#: sql_help.c:1297 +#: sql_help.c:1435 +#: sql_help.c:1698 +#: sql_help.c:1708 +#: sql_help.c:1730 +#: sql_help.c:2474 +#: sql_help.c:2822 +#: sql_help.c:2823 +#: sql_help.c:2827 +#: sql_help.c:2832 +#: sql_help.c:2891 +#: sql_help.c:2892 +#: sql_help.c:2897 +#: sql_help.c:2902 +#: sql_help.c:3025 +#: sql_help.c:3026 +#: sql_help.c:3030 +#: sql_help.c:3035 +#: sql_help.c:3106 +#: sql_help.c:3108 +#: sql_help.c:3139 +#: sql_help.c:3181 +#: sql_help.c:3182 +#: sql_help.c:3186 +#: sql_help.c:3191 msgid "expression" msgstr "expression" -#: sql_help.c:165 +#: sql_help.c:183 msgid "domain_constraint" msgstr "contrainte_domaine" -#: sql_help.c:167 -#: sql_help.c:543 -#: sql_help.c:845 -#: sql_help.c:1076 -#: sql_help.c:1440 -#: sql_help.c:1449 +#: sql_help.c:185 +#: sql_help.c:708 +#: sql_help.c:709 +#: sql_help.c:728 +#: sql_help.c:1059 +#: sql_help.c:1296 +#: sql_help.c:1697 +#: sql_help.c:1707 msgid "constraint_name" msgstr "nom_contrainte" -#: sql_help.c:183 -#: sql_help.c:1088 -#: sql_help.c:1200 -msgid "valfunction" -msgstr "fonction_val" - -#: sql_help.c:215 -#: sql_help.c:220 #: sql_help.c:225 +#: sql_help.c:227 +#: sql_help.c:229 +#: sql_help.c:231 +#: sql_help.c:1308 +#: sql_help.c:2080 +msgid "extension_name" +msgstr "nom_extension" + +#: sql_help.c:226 +#: sql_help.c:613 +msgid "new_version" +msgstr "nouvelle_version" + #: sql_help.c:230 -#: sql_help.c:851 -#: sql_help.c:1114 -#: sql_help.c:1805 -#: sql_help.c:2135 -#: sql_help.c:2364 +#: sql_help.c:232 +msgid "member_object" +msgstr "objet_membre" + +#: sql_help.c:233 +msgid "where member_object is:" +msgstr "o� objet_membre fait partie de :" + +#: sql_help.c:234 +#: sql_help.c:1052 +#: sql_help.c:2771 +msgid "agg_name" +msgstr "nom_d_agr�gat" + +#: sql_help.c:235 +#: sql_help.c:1053 +#: sql_help.c:2772 +msgid "agg_type" +msgstr "type_aggr�gat" + +#: sql_help.c:236 +#: sql_help.c:1054 +#: sql_help.c:1215 +#: sql_help.c:1219 +#: sql_help.c:1221 +#: sql_help.c:2039 +msgid "source_type" +msgstr "type_source" + +#: sql_help.c:237 +#: sql_help.c:1055 +#: sql_help.c:1216 +#: sql_help.c:1220 +#: sql_help.c:1222 +#: sql_help.c:2040 +msgid "target_type" +msgstr "type_cible" + +#: sql_help.c:238 +#: sql_help.c:239 +#: sql_help.c:240 +#: sql_help.c:241 +#: sql_help.c:242 +#: sql_help.c:250 +#: sql_help.c:252 +#: sql_help.c:254 +#: sql_help.c:255 +#: sql_help.c:256 +#: sql_help.c:257 +#: sql_help.c:258 +#: sql_help.c:259 +#: sql_help.c:260 +#: sql_help.c:261 +#: sql_help.c:262 +#: sql_help.c:263 +#: sql_help.c:264 +#: sql_help.c:1056 +#: sql_help.c:1061 +#: sql_help.c:1062 +#: sql_help.c:1063 +#: sql_help.c:1064 +#: sql_help.c:1065 +#: sql_help.c:1066 +#: sql_help.c:1071 +#: sql_help.c:1076 +#: sql_help.c:1078 +#: sql_help.c:1080 +#: sql_help.c:1081 +#: sql_help.c:1084 +#: sql_help.c:1085 +#: sql_help.c:1086 +#: sql_help.c:1087 +#: sql_help.c:1088 +#: sql_help.c:1089 +#: sql_help.c:1090 +#: sql_help.c:1091 +#: sql_help.c:1092 +#: sql_help.c:1095 +#: sql_help.c:1096 +#: sql_help.c:2768 +#: sql_help.c:2773 +#: sql_help.c:2774 +#: sql_help.c:2780 +#: sql_help.c:2781 +#: sql_help.c:2782 +#: sql_help.c:2783 +#: sql_help.c:2784 +msgid "object_name" +msgstr "nom_objet" + +#: sql_help.c:243 +#: sql_help.c:495 +#: sql_help.c:1067 +#: sql_help.c:1217 +#: sql_help.c:1252 +#: sql_help.c:1470 +#: sql_help.c:1501 +#: sql_help.c:1845 +#: sql_help.c:2445 +#: sql_help.c:2699 +#: sql_help.c:2775 +#: sql_help.c:2848 +#: sql_help.c:2853 +#: sql_help.c:3051 +#: sql_help.c:3056 +#: sql_help.c:3207 +#: sql_help.c:3212 +msgid "function_name" +msgstr "nom_fonction" + +#: sql_help.c:244 +#: sql_help.c:352 +#: sql_help.c:357 +#: sql_help.c:362 +#: sql_help.c:367 +#: sql_help.c:1068 +#: sql_help.c:1368 +#: sql_help.c:2106 +#: sql_help.c:2446 +#: sql_help.c:2700 +#: sql_help.c:2776 msgid "argmode" msgstr "mode_argument" -#: sql_help.c:216 -#: sql_help.c:221 -#: sql_help.c:226 -#: sql_help.c:231 -#: sql_help.c:852 -#: sql_help.c:1115 -#: sql_help.c:1806 +#: sql_help.c:245 +#: sql_help.c:353 +#: sql_help.c:358 +#: sql_help.c:363 +#: sql_help.c:368 +#: sql_help.c:1069 +#: sql_help.c:1369 +#: sql_help.c:2107 +#: sql_help.c:2777 msgid "argname" msgstr "nom_agr�gat" -#: sql_help.c:217 -#: sql_help.c:222 -#: sql_help.c:227 -#: sql_help.c:232 -#: sql_help.c:853 -#: sql_help.c:1116 -#: sql_help.c:1807 +#: sql_help.c:246 +#: sql_help.c:354 +#: sql_help.c:359 +#: sql_help.c:364 +#: sql_help.c:369 +#: sql_help.c:1070 +#: sql_help.c:1370 +#: sql_help.c:2108 +#: sql_help.c:2778 msgid "argtype" msgstr "type_argument" -#: sql_help.c:218 -#: sql_help.c:514 -#: sql_help.c:1446 -#: sql_help.c:1447 -#: sql_help.c:1463 -#: sql_help.c:1464 +#: sql_help.c:247 +#: sql_help.c:488 +#: sql_help.c:1073 +#: sql_help.c:1494 +msgid "operator_name" +msgstr "nom_op�rateur" + +#: sql_help.c:248 +#: sql_help.c:443 +#: sql_help.c:447 +#: sql_help.c:1074 +#: sql_help.c:1471 +#: sql_help.c:2141 +msgid "left_type" +msgstr "type_argument_gauche" + +#: sql_help.c:249 +#: sql_help.c:444 +#: sql_help.c:448 +#: sql_help.c:1075 +#: sql_help.c:1472 +#: sql_help.c:2142 +msgid "right_type" +msgstr "type_argument_droit" + +#: sql_help.c:251 +#: sql_help.c:253 +#: sql_help.c:460 +#: sql_help.c:463 +#: sql_help.c:466 +#: sql_help.c:486 +#: sql_help.c:498 +#: sql_help.c:506 +#: sql_help.c:509 +#: sql_help.c:512 +#: sql_help.c:1077 +#: sql_help.c:1079 +#: sql_help.c:1491 +#: sql_help.c:1512 +#: sql_help.c:1713 +#: sql_help.c:2151 +#: sql_help.c:2160 +msgid "index_method" +msgstr "m�thode_indexage" + +#: sql_help.c:277 +#: sql_help.c:1323 +msgid "handler_function" +msgstr "fonction_gestionnaire" + +#: sql_help.c:278 +#: sql_help.c:1324 +msgid "validator_function" +msgstr "fonction_validateur" + +#: sql_help.c:307 +#: sql_help.c:355 +#: sql_help.c:676 +#: sql_help.c:863 +#: sql_help.c:1704 +#: sql_help.c:1705 +#: sql_help.c:1721 +#: sql_help.c:1722 msgid "action" msgstr "action" -#: sql_help.c:234 -#: sql_help.c:522 +#: sql_help.c:309 +#: sql_help.c:316 +#: sql_help.c:318 +#: sql_help.c:319 +#: sql_help.c:321 +#: sql_help.c:596 +#: sql_help.c:678 +#: sql_help.c:685 +#: sql_help.c:689 +#: sql_help.c:690 +#: sql_help.c:694 +#: sql_help.c:696 +#: sql_help.c:697 +#: sql_help.c:698 +#: sql_help.c:700 +#: sql_help.c:703 +#: sql_help.c:705 +#: sql_help.c:952 +#: sql_help.c:955 +#: sql_help.c:970 +#: sql_help.c:1140 +#: sql_help.c:1144 +#: sql_help.c:1156 +#: sql_help.c:1157 +#: sql_help.c:1434 +#: sql_help.c:1597 +#: sql_help.c:1729 +#: sql_help.c:2432 +#: sql_help.c:2433 +#: sql_help.c:2473 +#: sql_help.c:2686 +#: sql_help.c:2687 +#: sql_help.c:3105 +#: sql_help.c:3107 +#: sql_help.c:3124 +#: sql_help.c:3127 +msgid "column" +msgstr "colonne" + +#: sql_help.c:310 +#: sql_help.c:679 +msgid "new_column" +msgstr "nouvelle_colonne" + +#: sql_help.c:315 +#: sql_help.c:371 +#: sql_help.c:684 +#: sql_help.c:876 msgid "where action is one of:" msgstr "o� action fait partie de :" -#: sql_help.c:235 -#: sql_help.c:1122 +#: sql_help.c:372 +#: sql_help.c:1376 msgid "execution_cost" msgstr "co�t_ex�cution" -#: sql_help.c:236 -#: sql_help.c:1123 +#: sql_help.c:373 +#: sql_help.c:1377 msgid "result_rows" msgstr "lignes_de_r�sultat" -#: sql_help.c:251 -#: sql_help.c:253 -#: sql_help.c:255 +#: sql_help.c:388 +#: sql_help.c:390 +#: sql_help.c:392 msgid "group_name" msgstr "nom_groupe" -#: sql_help.c:252 -#: sql_help.c:254 -#: sql_help.c:728 -#: sql_help.c:1050 -#: sql_help.c:1319 -#: sql_help.c:1321 -#: sql_help.c:1501 -#: sql_help.c:1680 -#: sql_help.c:1989 -#: sql_help.c:2569 +#: sql_help.c:389 +#: sql_help.c:391 +#: sql_help.c:936 +#: sql_help.c:1268 +#: sql_help.c:1576 +#: sql_help.c:1578 +#: sql_help.c:1759 +#: sql_help.c:1955 +#: sql_help.c:2290 +#: sql_help.c:2947 msgid "user_name" msgstr "nom_utilisateur" -#: sql_help.c:270 -#: sql_help.c:1500 -#: sql_help.c:1924 -#: sql_help.c:2146 -#: sql_help.c:2375 +#: sql_help.c:407 +#: sql_help.c:1758 +#: sql_help.c:2225 +#: sql_help.c:2457 +#: sql_help.c:2711 msgid "tablespace_name" msgstr "nom_tablespace" -#: sql_help.c:272 -#: sql_help.c:275 -#: sql_help.c:553 -#: sql_help.c:555 -#: sql_help.c:1183 -#: sql_help.c:1427 -#: sql_help.c:1436 -#: sql_help.c:1467 -#: sql_help.c:1489 +#: sql_help.c:409 +#: sql_help.c:412 +#: sql_help.c:719 +#: sql_help.c:721 +#: sql_help.c:1438 +#: sql_help.c:1685 +#: sql_help.c:1693 +#: sql_help.c:1725 +#: sql_help.c:1747 msgid "storage_parameter" msgstr "param�tre_stockage" -#: sql_help.c:295 -#: sql_help.c:855 +#: sql_help.c:432 +#: sql_help.c:1072 +#: sql_help.c:2779 msgid "large_object_oid" msgstr "oid_large_object" -#: sql_help.c:305 -#: sql_help.c:857 -#: sql_help.c:1216 -#: sql_help.c:1840 -msgid "left_type" -msgstr "type_argument_gauche" - -#: sql_help.c:306 -#: sql_help.c:858 -#: sql_help.c:1217 -#: sql_help.c:1841 -msgid "right_type" -msgstr "type_argument_droit" - -#: sql_help.c:317 -#: sql_help.c:320 -#: sql_help.c:339 -#: sql_help.c:350 -#: sql_help.c:358 -#: sql_help.c:361 -#: sql_help.c:860 -#: sql_help.c:862 -#: sql_help.c:1236 -#: sql_help.c:1256 -#: sql_help.c:1455 -#: sql_help.c:1850 -#: sql_help.c:1859 -msgid "index_method" -msgstr "m�thode_indexage" - -#: sql_help.c:340 -#: sql_help.c:351 -#: sql_help.c:1238 +#: sql_help.c:487 +#: sql_help.c:499 +#: sql_help.c:1493 msgid "strategy_number" msgstr "num�ro_de_strat�gie" -#: sql_help.c:341 -#: sql_help.c:856 -#: sql_help.c:1239 -msgid "operator_name" -msgstr "nom_op�rateur" - -#: sql_help.c:342 -#: sql_help.c:343 -#: sql_help.c:345 -#: sql_help.c:346 -#: sql_help.c:352 -#: sql_help.c:353 -#: sql_help.c:355 -#: sql_help.c:356 -#: sql_help.c:1240 -#: sql_help.c:1241 -#: sql_help.c:1243 -#: sql_help.c:1244 +#: sql_help.c:489 +#: sql_help.c:490 +#: sql_help.c:493 +#: sql_help.c:494 +#: sql_help.c:500 +#: sql_help.c:501 +#: sql_help.c:503 +#: sql_help.c:504 +#: sql_help.c:1495 +#: sql_help.c:1496 +#: sql_help.c:1499 +#: sql_help.c:1500 msgid "op_type" msgstr "type_op" -#: sql_help.c:344 -#: sql_help.c:354 -#: sql_help.c:1242 +#: sql_help.c:491 +#: sql_help.c:1497 +msgid "sort_family_name" +msgstr "nom_famille_tri" + +#: sql_help.c:492 +#: sql_help.c:502 +#: sql_help.c:1498 msgid "support_number" msgstr "num�ro_de_support" -#: sql_help.c:347 -#: sql_help.c:850 -#: sql_help.c:996 -#: sql_help.c:1021 -#: sql_help.c:1034 -#: sql_help.c:1215 -#: sql_help.c:1245 -#: sql_help.c:1576 -#: sql_help.c:2134 -#: sql_help.c:2363 -#: sql_help.c:2472 -#: sql_help.c:2477 -#: sql_help.c:2671 -#: sql_help.c:2676 -#: sql_help.c:2823 -#: sql_help.c:2828 -msgid "function_name" -msgstr "nom_fonction" - -#: sql_help.c:348 -#: sql_help.c:997 -#: sql_help.c:1246 +#: sql_help.c:496 +#: sql_help.c:1218 +#: sql_help.c:1502 msgid "argument_type" msgstr "type_argument" -#: sql_help.c:393 -#: sql_help.c:707 -#: sql_help.c:1158 -#: sql_help.c:1286 -#: sql_help.c:1663 +#: sql_help.c:545 +#: sql_help.c:915 +#: sql_help.c:1412 +#: sql_help.c:1543 +#: sql_help.c:1938 msgid "password" msgstr "mot_de_passe" -#: sql_help.c:394 -#: sql_help.c:708 -#: sql_help.c:1159 -#: sql_help.c:1287 -#: sql_help.c:1664 +#: sql_help.c:546 +#: sql_help.c:916 +#: sql_help.c:1413 +#: sql_help.c:1544 +#: sql_help.c:1939 msgid "timestamp" msgstr "horodatage" -#: sql_help.c:398 -#: sql_help.c:402 -#: sql_help.c:405 -#: sql_help.c:408 -#: sql_help.c:2128 -#: sql_help.c:2357 +#: sql_help.c:550 +#: sql_help.c:554 +#: sql_help.c:557 +#: sql_help.c:560 +#: sql_help.c:2439 +#: sql_help.c:2693 msgid "database_name" msgstr "nom_base_de_donn�e" -#: sql_help.c:437 -#: sql_help.c:1334 +#: sql_help.c:589 +#: sql_help.c:1591 msgid "increment" msgstr "incr�ment" -#: sql_help.c:438 -#: sql_help.c:1335 +#: sql_help.c:590 +#: sql_help.c:1592 msgid "minvalue" msgstr "valeur_min" -#: sql_help.c:439 -#: sql_help.c:1336 +#: sql_help.c:591 +#: sql_help.c:1593 msgid "maxvalue" msgstr "valeur_max" -#: sql_help.c:440 -#: sql_help.c:1337 -#: sql_help.c:2459 -#: sql_help.c:2527 -#: sql_help.c:2658 -#: sql_help.c:2759 -#: sql_help.c:2810 +#: sql_help.c:592 +#: sql_help.c:1594 +#: sql_help.c:2835 +#: sql_help.c:2905 +#: sql_help.c:3038 +#: sql_help.c:3143 +#: sql_help.c:3194 msgid "start" msgstr "d�but" -#: sql_help.c:441 +#: sql_help.c:593 msgid "restart" msgstr "nouveau_d�but" -#: sql_help.c:442 -#: sql_help.c:1338 +#: sql_help.c:594 +#: sql_help.c:1595 msgid "cache" msgstr "cache" -#: sql_help.c:444 -#: sql_help.c:516 -#: sql_help.c:523 -#: sql_help.c:526 -#: sql_help.c:527 -#: sql_help.c:530 -#: sql_help.c:532 -#: sql_help.c:533 -#: sql_help.c:534 -#: sql_help.c:536 -#: sql_help.c:539 -#: sql_help.c:541 -#: sql_help.c:744 -#: sql_help.c:747 -#: sql_help.c:762 -#: sql_help.c:920 -#: sql_help.c:924 -#: sql_help.c:936 +#: sql_help.c:612 +#: sql_help.c:616 #: sql_help.c:937 -#: sql_help.c:1180 -#: sql_help.c:1340 -#: sql_help.c:1471 -#: sql_help.c:2121 -#: sql_help.c:2122 -#: sql_help.c:2160 -#: sql_help.c:2350 -#: sql_help.c:2351 -#: sql_help.c:2721 -#: sql_help.c:2723 -#: sql_help.c:2740 -#: sql_help.c:2743 -msgid "column" -msgstr "colonne" - -#: sql_help.c:460 -#: sql_help.c:464 -#: sql_help.c:729 -#: sql_help.c:1350 -#: sql_help.c:1681 -#: sql_help.c:1908 -#: sql_help.c:1990 -#: sql_help.c:2132 -#: sql_help.c:2361 +#: sql_help.c:1342 +#: sql_help.c:1607 +#: sql_help.c:1956 +#: sql_help.c:2209 +#: sql_help.c:2291 +#: sql_help.c:2443 +#: sql_help.c:2697 msgid "server_name" msgstr "nom_serveur" -#: sql_help.c:461 -msgid "new_version" -msgstr "nouvelle_version" +#: sql_help.c:686 +#: sql_help.c:691 +#: sql_help.c:878 +#: sql_help.c:882 +#: sql_help.c:1291 +#: sql_help.c:1341 +#: sql_help.c:1490 +#: sql_help.c:1678 +#: sql_help.c:1885 +#: sql_help.c:2558 +msgid "data_type" +msgstr "type_donn�es" -#: sql_help.c:517 -msgid "new_column" -msgstr "nouvelle_colonne" +#: sql_help.c:687 +#: sql_help.c:692 +#: sql_help.c:879 +#: sql_help.c:883 +#: sql_help.c:1292 +#: sql_help.c:1436 +#: sql_help.c:1679 +#: sql_help.c:1886 +msgid "collation" +msgstr "collationnement" -#: sql_help.c:525 -#: sql_help.c:1422 -#: sql_help.c:1434 +#: sql_help.c:688 +#: sql_help.c:1680 +#: sql_help.c:1691 msgid "column_constraint" msgstr "contrainte_colonne" -#: sql_help.c:535 +#: sql_help.c:699 msgid "integer" msgstr "entier" -#: sql_help.c:537 -#: sql_help.c:540 +#: sql_help.c:701 +#: sql_help.c:704 msgid "attribute_option" msgstr "option_attribut" -#: sql_help.c:542 -#: sql_help.c:1423 -#: sql_help.c:1435 +#: sql_help.c:706 +#: sql_help.c:1681 +#: sql_help.c:1692 msgid "table_constraint" msgstr "contrainte_table" -#: sql_help.c:544 -#: sql_help.c:545 -#: sql_help.c:546 -#: sql_help.c:547 -#: sql_help.c:874 +#: sql_help.c:707 +msgid "table_constraint_using_index" +msgstr "contrainte_table_utilisant_index" + +#: sql_help.c:710 +#: sql_help.c:711 +#: sql_help.c:712 +#: sql_help.c:713 +#: sql_help.c:1093 msgid "trigger_name" msgstr "nom_trigger" -#: sql_help.c:548 -#: sql_help.c:549 -#: sql_help.c:550 -#: sql_help.c:551 +#: sql_help.c:714 +#: sql_help.c:715 +#: sql_help.c:716 +#: sql_help.c:717 msgid "rewrite_rule_name" msgstr "nom_r�gle_r��criture" -#: sql_help.c:552 -#: sql_help.c:801 +#: sql_help.c:718 +#: sql_help.c:729 +#: sql_help.c:1010 msgid "index_name" msgstr "nom_index" -#: sql_help.c:556 -#: sql_help.c:557 -#: sql_help.c:1424 -#: sql_help.c:1426 +#: sql_help.c:722 +#: sql_help.c:723 +#: sql_help.c:1682 +#: sql_help.c:1684 msgid "parent_table" msgstr "table_parent" -#: sql_help.c:575 -#: sql_help.c:578 +#: sql_help.c:724 +#: sql_help.c:1689 +msgid "type_name" +msgstr "nom_type" + +#: sql_help.c:727 +msgid "and table_constraint_using_index is:" +msgstr "et contrainte_table_utilisant_index est :" + +#: sql_help.c:745 +#: sql_help.c:748 msgid "tablespace_option" msgstr "option_tablespace" -#: sql_help.c:598 -#: sql_help.c:601 -#: sql_help.c:607 -#: sql_help.c:611 +#: sql_help.c:769 +#: sql_help.c:772 +#: sql_help.c:778 +#: sql_help.c:782 msgid "token_type" msgstr "type_jeton" -#: sql_help.c:599 -#: sql_help.c:602 +#: sql_help.c:770 +#: sql_help.c:773 msgid "dictionary_name" msgstr "nom_dictionnaire" -#: sql_help.c:604 -#: sql_help.c:608 +#: sql_help.c:775 +#: sql_help.c:779 msgid "old_dictionary" msgstr "ancien_dictionnaire" -#: sql_help.c:605 -#: sql_help.c:609 +#: sql_help.c:776 +#: sql_help.c:780 msgid "new_dictionary" msgstr "nouveau_dictionnaire" -#: sql_help.c:775 -#: sql_help.c:2583 -#: sql_help.c:2584 -#: sql_help.c:2607 +#: sql_help.c:867 +#: sql_help.c:877 +#: sql_help.c:880 +#: sql_help.c:881 +#: sql_help.c:1884 +msgid "attribute_name" +msgstr "nom_attribut" + +#: sql_help.c:868 +msgid "new_attribute_name" +msgstr "nouveau_nom_attribut" + +#: sql_help.c:874 +msgid "new_enum_value" +msgstr "nouvelle_valeur_enum" + +#: sql_help.c:875 +msgid "existing_enum_value" +msgstr "valeur_enum_existante" + +#: sql_help.c:984 +#: sql_help.c:2962 +#: sql_help.c:2963 +#: sql_help.c:2987 msgid "transaction_mode" msgstr "mode_transaction" -#: sql_help.c:776 -#: sql_help.c:2585 -#: sql_help.c:2608 +#: sql_help.c:985 +#: sql_help.c:2964 +#: sql_help.c:2988 msgid "where transaction_mode is one of:" msgstr "o� mode_transaction fait partie de :" -#: sql_help.c:800 -#: sql_help.c:839 -#: sql_help.c:846 -#: sql_help.c:866 -#: sql_help.c:875 -#: sql_help.c:919 -#: sql_help.c:923 -#: sql_help.c:1018 -#: sql_help.c:1418 -#: sql_help.c:1430 -#: sql_help.c:1487 -#: sql_help.c:2118 -#: sql_help.c:2123 -#: sql_help.c:2347 -#: sql_help.c:2352 -#: sql_help.c:2461 -#: sql_help.c:2463 -#: sql_help.c:2489 -#: sql_help.c:2529 -#: sql_help.c:2660 -#: sql_help.c:2662 +#: sql_help.c:1009 +#: sql_help.c:1060 +#: sql_help.c:1083 +#: sql_help.c:1094 +#: sql_help.c:1139 +#: sql_help.c:1143 +#: sql_help.c:1339 +#: sql_help.c:1676 +#: sql_help.c:1688 +#: sql_help.c:1745 +#: sql_help.c:2429 +#: sql_help.c:2434 +#: sql_help.c:2683 #: sql_help.c:2688 -#: sql_help.c:2812 -#: sql_help.c:2814 -#: sql_help.c:2840 +#: sql_help.c:2769 +#: sql_help.c:2837 +#: sql_help.c:2839 +#: sql_help.c:2868 +#: sql_help.c:2907 +#: sql_help.c:3040 +#: sql_help.c:3042 +#: sql_help.c:3071 +#: sql_help.c:3196 +#: sql_help.c:3198 +#: sql_help.c:3227 msgid "table_name" msgstr "nom_table" -#: sql_help.c:838 -#: sql_help.c:847 -#: sql_help.c:848 -#: sql_help.c:849 -#: sql_help.c:854 -#: sql_help.c:859 -#: sql_help.c:861 -#: sql_help.c:863 -#: sql_help.c:864 -#: sql_help.c:867 -#: sql_help.c:868 -#: sql_help.c:869 -#: sql_help.c:870 -#: sql_help.c:871 -#: sql_help.c:872 -#: sql_help.c:873 -#: sql_help.c:876 -#: sql_help.c:877 -msgid "object_name" -msgstr "nom_objet" +#: sql_help.c:1057 +msgid "relation_name" +msgstr "nom_relation" -#: sql_help.c:840 -#: sql_help.c:1119 -#: sql_help.c:1419 -#: sql_help.c:1432 -#: sql_help.c:1451 -#: sql_help.c:1453 -#: sql_help.c:1460 -#: sql_help.c:1488 -#: sql_help.c:1693 -#: sql_help.c:2487 -#: sql_help.c:2686 -#: sql_help.c:2838 +#: sql_help.c:1058 +#: sql_help.c:1340 +#: sql_help.c:1373 +#: sql_help.c:1677 +#: sql_help.c:1690 +#: sql_help.c:1709 +#: sql_help.c:1711 +#: sql_help.c:1718 +#: sql_help.c:1746 +#: sql_help.c:1848 +#: sql_help.c:1968 +#: sql_help.c:2770 +#: sql_help.c:2863 +#: sql_help.c:3066 +#: sql_help.c:3222 msgid "column_name" msgstr "nom_colonne" -#: sql_help.c:841 -msgid "agg_name" -msgstr "nom_d_agr�gat" - -#: sql_help.c:842 -msgid "agg_type" -msgstr "type_aggr�gat" - -#: sql_help.c:843 -#: sql_help.c:994 -#: sql_help.c:998 -#: sql_help.c:1000 -#: sql_help.c:1762 -msgid "source_type" -msgstr "type_source" - -#: sql_help.c:844 -#: sql_help.c:995 -#: sql_help.c:999 -#: sql_help.c:1001 -#: sql_help.c:1763 -msgid "target_type" -msgstr "type_cible" - -#: sql_help.c:865 +#: sql_help.c:1082 msgid "rule_name" msgstr "nom_r�gle" -#: sql_help.c:878 +#: sql_help.c:1097 msgid "text" msgstr "texte" -#: sql_help.c:893 -#: sql_help.c:2231 -#: sql_help.c:2393 +#: sql_help.c:1112 +#: sql_help.c:2567 +#: sql_help.c:2729 msgid "transaction_id" msgstr "id_transaction" -#: sql_help.c:921 -#: sql_help.c:926 -#: sql_help.c:2180 +#: sql_help.c:1141 +#: sql_help.c:1146 +#: sql_help.c:2493 msgid "filename" msgstr "nom_fichier" -#: sql_help.c:925 -#: sql_help.c:1492 -#: sql_help.c:1694 -#: sql_help.c:1712 -#: sql_help.c:2162 +#: sql_help.c:1145 +#: sql_help.c:1750 +#: sql_help.c:1969 +#: sql_help.c:1987 +#: sql_help.c:2475 msgid "query" msgstr "requ�te" -#: sql_help.c:928 +#: sql_help.c:1148 +#: sql_help.c:2335 msgid "where option can be one of:" msgstr "o� option fait partie de :" -#: sql_help.c:929 +#: sql_help.c:1149 msgid "format_name" msgstr "nom_format" -#: sql_help.c:930 -#: sql_help.c:933 -#: sql_help.c:2023 -#: sql_help.c:2024 -#: sql_help.c:2025 -#: sql_help.c:2026 +#: sql_help.c:1150 +#: sql_help.c:1153 +#: sql_help.c:2336 +#: sql_help.c:2337 +#: sql_help.c:2338 +#: sql_help.c:2339 msgid "boolean" msgstr "boolean" -#: sql_help.c:931 +#: sql_help.c:1151 msgid "delimiter_character" msgstr "caract�re_d�limiteur" -#: sql_help.c:932 +#: sql_help.c:1152 msgid "null_string" msgstr "cha�ne_null" -#: sql_help.c:934 +#: sql_help.c:1154 msgid "quote_character" msgstr "caract�re_guillemet" -#: sql_help.c:935 +#: sql_help.c:1155 msgid "escape_character" msgstr "cha�ne_d_�chappement" -#: sql_help.c:963 +#: sql_help.c:1158 +msgid "encoding_name" +msgstr "nom_encodage" + +#: sql_help.c:1184 msgid "input_data_type" msgstr "type_de_donn�es_en_entr�e" -#: sql_help.c:964 -#: sql_help.c:972 +#: sql_help.c:1185 +#: sql_help.c:1193 msgid "sfunc" msgstr "sfunc" -#: sql_help.c:965 -#: sql_help.c:973 +#: sql_help.c:1186 +#: sql_help.c:1194 msgid "state_data_type" msgstr "type_de_donn�es_statut" -#: sql_help.c:966 -#: sql_help.c:974 +#: sql_help.c:1187 +#: sql_help.c:1195 msgid "ffunc" msgstr "ffunc" -#: sql_help.c:967 -#: sql_help.c:975 +#: sql_help.c:1188 +#: sql_help.c:1196 msgid "initial_condition" msgstr "condition_initiale" -#: sql_help.c:968 -#: sql_help.c:976 +#: sql_help.c:1189 +#: sql_help.c:1197 msgid "sort_operator" msgstr "op�rateur_de_tri" -#: sql_help.c:969 +#: sql_help.c:1190 msgid "or the old syntax" msgstr "ou l'ancienne syntaxe" -#: sql_help.c:971 +#: sql_help.c:1192 msgid "base_type" msgstr "type_base" -#: sql_help.c:1017 -#: sql_help.c:1304 -#: sql_help.c:1573 -msgid "event" -msgstr "�v�nement" +#: sql_help.c:1236 +msgid "locale" +msgstr "locale" -#: sql_help.c:1019 -msgid "referenced_table_name" -msgstr "nom_table_r�f�renc�e" +#: sql_help.c:1237 +#: sql_help.c:1271 +msgid "lc_collate" +msgstr "lc_collate" -#: sql_help.c:1020 -#: sql_help.c:1306 -#: sql_help.c:1575 -#: sql_help.c:1726 -#: sql_help.c:2450 -#: sql_help.c:2452 -#: sql_help.c:2518 -#: sql_help.c:2520 -#: sql_help.c:2649 -#: sql_help.c:2651 -#: sql_help.c:2726 -#: sql_help.c:2801 -#: sql_help.c:2803 -msgid "condition" -msgstr "condition" +#: sql_help.c:1238 +#: sql_help.c:1272 +msgid "lc_ctype" +msgstr "lc_ctype" -#: sql_help.c:1022 -#: sql_help.c:1577 -msgid "arguments" -msgstr "arguments" +#: sql_help.c:1240 +msgid "existing_collation" +msgstr "collationnement_existant" -#: sql_help.c:1032 +#: sql_help.c:1250 msgid "source_encoding" msgstr "encodage_source" -#: sql_help.c:1033 +#: sql_help.c:1251 msgid "dest_encoding" msgstr "encodage_destination" -#: sql_help.c:1051 -#: sql_help.c:1527 +#: sql_help.c:1269 +#: sql_help.c:1785 msgid "template" msgstr "mod�le" -#: sql_help.c:1052 +#: sql_help.c:1270 msgid "encoding" msgstr "encodage" -#: sql_help.c:1053 -msgid "lc_collate" -msgstr "lc_collate" - -#: sql_help.c:1054 -msgid "lc_ctype" -msgstr "lc_ctype" - -#: sql_help.c:1055 -#: sql_help.c:1185 -#: sql_help.c:1429 -#: sql_help.c:1438 -#: sql_help.c:1469 -#: sql_help.c:1491 +#: sql_help.c:1273 +#: sql_help.c:1440 +#: sql_help.c:1687 +#: sql_help.c:1695 +#: sql_help.c:1727 +#: sql_help.c:1749 msgid "tablespace" msgstr "tablespace" -#: sql_help.c:1072 -#: sql_help.c:1235 -#: sql_help.c:1420 -#: sql_help.c:1613 -#: sql_help.c:2222 -msgid "data_type" -msgstr "type_donn�es" - -#: sql_help.c:1074 +#: sql_help.c:1294 msgid "constraint" msgstr "contrainte" -#: sql_help.c:1075 +#: sql_help.c:1295 msgid "where constraint is:" msgstr "o� la contrainte est :" -#: sql_help.c:1117 -#: sql_help.c:1421 -#: sql_help.c:1433 +#: sql_help.c:1309 +msgid "schema" +msgstr "sch�ma" + +#: sql_help.c:1310 +msgid "version" +msgstr "version" + +#: sql_help.c:1311 +msgid "old_version" +msgstr "ancienne_version" + +#: sql_help.c:1371 +#: sql_help.c:1699 msgid "default_expr" msgstr "expression_par_d�faut" -#: sql_help.c:1118 +#: sql_help.c:1372 msgid "rettype" msgstr "type_en_retour" -#: sql_help.c:1120 +#: sql_help.c:1374 msgid "column_type" msgstr "type_colonne" -#: sql_help.c:1121 -#: sql_help.c:1744 -#: sql_help.c:2140 -#: sql_help.c:2369 +#: sql_help.c:1375 +#: sql_help.c:2021 +#: sql_help.c:2451 +#: sql_help.c:2705 msgid "lang_name" msgstr "nom_langage" -#: sql_help.c:1127 +#: sql_help.c:1381 msgid "definition" msgstr "d�finition" -#: sql_help.c:1128 +#: sql_help.c:1382 msgid "obj_file" msgstr "fichier_objet" -#: sql_help.c:1129 +#: sql_help.c:1383 msgid "link_symbol" msgstr "symbole_link" -#: sql_help.c:1130 +#: sql_help.c:1384 msgid "attribute" msgstr "attribut" -#: sql_help.c:1165 -#: sql_help.c:1293 -#: sql_help.c:1670 +#: sql_help.c:1419 +#: sql_help.c:1550 +#: sql_help.c:1945 msgid "uid" msgstr "uid" -#: sql_help.c:1179 +#: sql_help.c:1433 msgid "method" msgstr "m�thode" -#: sql_help.c:1182 -#: sql_help.c:1473 +#: sql_help.c:1437 +#: sql_help.c:1731 msgid "opclass" msgstr "classe_d_op�rateur" -#: sql_help.c:1186 -#: sql_help.c:1459 +#: sql_help.c:1441 +#: sql_help.c:1717 msgid "predicate" msgstr "pr�dicat" -#: sql_help.c:1198 +#: sql_help.c:1453 msgid "call_handler" msgstr "gestionnaire_d_appel" -#: sql_help.c:1199 +#: sql_help.c:1454 msgid "inline_handler" msgstr "gestionnaire_en_ligne" -#: sql_help.c:1218 +#: sql_help.c:1455 +msgid "valfunction" +msgstr "fonction_val" + +#: sql_help.c:1473 msgid "com_op" msgstr "com_op" -#: sql_help.c:1219 +#: sql_help.c:1474 msgid "neg_op" msgstr "neg_op" -#: sql_help.c:1220 +#: sql_help.c:1475 msgid "res_proc" msgstr "res_proc" -#: sql_help.c:1221 +#: sql_help.c:1476 msgid "join_proc" msgstr "join_proc" -#: sql_help.c:1237 +#: sql_help.c:1492 msgid "family_name" msgstr "nom_famille" -#: sql_help.c:1247 +#: sql_help.c:1503 msgid "storage_type" msgstr "type_stockage" -#: sql_help.c:1307 -#: sql_help.c:1308 -#: sql_help.c:1309 +#: sql_help.c:1561 +#: sql_help.c:1841 +msgid "event" +msgstr "�v�nement" + +#: sql_help.c:1563 +#: sql_help.c:1844 +#: sql_help.c:2003 +#: sql_help.c:2826 +#: sql_help.c:2828 +#: sql_help.c:2896 +#: sql_help.c:2898 +#: sql_help.c:3029 +#: sql_help.c:3031 +#: sql_help.c:3110 +#: sql_help.c:3185 +#: sql_help.c:3187 +msgid "condition" +msgstr "condition" + +#: sql_help.c:1564 +#: sql_help.c:1565 +#: sql_help.c:1566 msgid "command" msgstr "commande" -#: sql_help.c:1320 -#: sql_help.c:1322 +#: sql_help.c:1577 +#: sql_help.c:1579 msgid "schema_element" msgstr "�l�ment_sch�ma" -#: sql_help.c:1351 +#: sql_help.c:1608 msgid "server_type" msgstr "type_serveur" -#: sql_help.c:1352 +#: sql_help.c:1609 msgid "server_version" msgstr "version_serveur" -#: sql_help.c:1353 -#: sql_help.c:2130 -#: sql_help.c:2359 +#: sql_help.c:1610 +#: sql_help.c:2441 +#: sql_help.c:2695 msgid "fdw_name" msgstr "nom_fdw" -#: sql_help.c:1425 +#: sql_help.c:1683 msgid "like_option" msgstr "option_like" -#: sql_help.c:1431 -msgid "type_name" -msgstr "nom_type" - -#: sql_help.c:1439 +#: sql_help.c:1696 msgid "where column_constraint is:" msgstr "o� contrainte_colonne est :" -#: sql_help.c:1442 -#: sql_help.c:1443 -#: sql_help.c:1452 -#: sql_help.c:1454 -#: sql_help.c:1458 +#: sql_help.c:1700 +#: sql_help.c:1701 +#: sql_help.c:1710 +#: sql_help.c:1712 +#: sql_help.c:1716 msgid "index_parameters" msgstr "param�tres_index" -#: sql_help.c:1444 -#: sql_help.c:1461 +#: sql_help.c:1702 +#: sql_help.c:1719 msgid "reftable" msgstr "table_r�f�rence" -#: sql_help.c:1445 -#: sql_help.c:1462 +#: sql_help.c:1703 +#: sql_help.c:1720 msgid "refcolumn" msgstr "colonne_r�f�rence" -#: sql_help.c:1448 +#: sql_help.c:1706 msgid "and table_constraint is:" msgstr "et contrainte_table est :" -#: sql_help.c:1456 +#: sql_help.c:1714 msgid "exclude_element" msgstr "�l�ment_exclusion" -#: sql_help.c:1465 +#: sql_help.c:1723 msgid "and like_option is:" msgstr "et option_like est :" -#: sql_help.c:1466 +#: sql_help.c:1724 msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" msgstr "dans les contraintes UNIQUE, PRIMARY KEY et EXCLUDE, les param�tres_index sont :" -#: sql_help.c:1470 +#: sql_help.c:1728 msgid "exclude_element in an EXCLUDE constraint is:" msgstr "�l�ment_exclusion dans une contrainte EXCLUDE est :" -#: sql_help.c:1502 +#: sql_help.c:1760 msgid "directory" msgstr "r�pertoire" -#: sql_help.c:1514 +#: sql_help.c:1772 msgid "parser_name" msgstr "nom_analyseur" -#: sql_help.c:1515 +#: sql_help.c:1773 msgid "source_config" msgstr "configuration_source" -#: sql_help.c:1544 +#: sql_help.c:1802 msgid "start_function" msgstr "fonction_start" -#: sql_help.c:1545 +#: sql_help.c:1803 msgid "gettoken_function" msgstr "fonction_gettoken" -#: sql_help.c:1546 +#: sql_help.c:1804 msgid "end_function" msgstr "fonction_end" -#: sql_help.c:1547 +#: sql_help.c:1805 msgid "lextypes_function" msgstr "fonction_lextypes" -#: sql_help.c:1548 +#: sql_help.c:1806 msgid "headline_function" msgstr "fonction_headline" -#: sql_help.c:1560 +#: sql_help.c:1818 msgid "init_function" msgstr "fonction_init" -#: sql_help.c:1561 +#: sql_help.c:1819 msgid "lexize_function" msgstr "fonction_lexize" -#: sql_help.c:1612 -msgid "attribute_name" -msgstr "nom_attribut" +#: sql_help.c:1843 +msgid "referenced_table_name" +msgstr "nom_table_r�f�renc�e" + +#: sql_help.c:1846 +msgid "arguments" +msgstr "arguments" + +#: sql_help.c:1847 +msgid "where event can be one of:" +msgstr "o� �v�nement fait partie de :" -#: sql_help.c:1615 +#: sql_help.c:1888 +#: sql_help.c:2785 msgid "label" msgstr "label" -#: sql_help.c:1617 +#: sql_help.c:1890 msgid "input_function" msgstr "fonction_en_sortie" -#: sql_help.c:1618 +#: sql_help.c:1891 msgid "output_function" msgstr "fonction_en_sortie" -#: sql_help.c:1619 +#: sql_help.c:1892 msgid "receive_function" msgstr "fonction_receive" -#: sql_help.c:1620 +#: sql_help.c:1893 msgid "send_function" msgstr "fonction_send" -#: sql_help.c:1621 +#: sql_help.c:1894 msgid "type_modifier_input_function" msgstr "fonction_en_entr�e_modificateur_type" -#: sql_help.c:1622 +#: sql_help.c:1895 msgid "type_modifier_output_function" msgstr "fonction_en_sortie_modificateur_type" -#: sql_help.c:1623 +#: sql_help.c:1896 msgid "analyze_function" msgstr "fonction_analyze" -#: sql_help.c:1624 +#: sql_help.c:1897 msgid "internallength" msgstr "longueur_interne" -#: sql_help.c:1625 +#: sql_help.c:1898 msgid "alignment" msgstr "alignement" -#: sql_help.c:1626 +#: sql_help.c:1899 msgid "storage" msgstr "stockage" -#: sql_help.c:1627 +#: sql_help.c:1900 msgid "like_type" msgstr "type_like" -#: sql_help.c:1628 +#: sql_help.c:1901 msgid "category" msgstr "cat�gorie" -#: sql_help.c:1629 +#: sql_help.c:1902 msgid "preferred" msgstr "pr�f�r�" -#: sql_help.c:1630 +#: sql_help.c:1903 msgid "default" msgstr "par d�faut" -#: sql_help.c:1631 +#: sql_help.c:1904 msgid "element" msgstr "�l�ment" -#: sql_help.c:1632 +#: sql_help.c:1905 msgid "delimiter" msgstr "d�limiteur" -#: sql_help.c:1724 -#: sql_help.c:2464 -#: sql_help.c:2467 -#: sql_help.c:2470 -#: sql_help.c:2474 -#: sql_help.c:2663 -#: sql_help.c:2666 -#: sql_help.c:2669 -#: sql_help.c:2673 -#: sql_help.c:2720 -#: sql_help.c:2815 -#: sql_help.c:2818 +#: sql_help.c:1906 +msgid "collatable" +msgstr "collationnable" + +#: sql_help.c:1999 +#: sql_help.c:2471 #: sql_help.c:2821 -#: sql_help.c:2825 +#: sql_help.c:2890 +#: sql_help.c:3024 +#: sql_help.c:3102 +#: sql_help.c:3180 +msgid "with_query" +msgstr "requ�te_with" + +#: sql_help.c:2001 +#: sql_help.c:2840 +#: sql_help.c:2843 +#: sql_help.c:2846 +#: sql_help.c:2850 +#: sql_help.c:3043 +#: sql_help.c:3046 +#: sql_help.c:3049 +#: sql_help.c:3053 +#: sql_help.c:3104 +#: sql_help.c:3199 +#: sql_help.c:3202 +#: sql_help.c:3205 +#: sql_help.c:3209 msgid "alias" msgstr "alias" -#: sql_help.c:1725 +#: sql_help.c:2002 msgid "using_list" msgstr "liste_using" -#: sql_help.c:1727 -#: sql_help.c:2054 -#: sql_help.c:2204 -#: sql_help.c:2727 +#: sql_help.c:2004 +#: sql_help.c:2365 +#: sql_help.c:2534 +#: sql_help.c:3111 msgid "cursor_name" msgstr "nom_curseur" -#: sql_help.c:1728 -#: sql_help.c:2163 -#: sql_help.c:2728 +#: sql_help.c:2005 +#: sql_help.c:2476 +#: sql_help.c:3112 msgid "output_expression" msgstr "expression_en_sortie" -#: sql_help.c:1729 -#: sql_help.c:2164 -#: sql_help.c:2448 -#: sql_help.c:2515 -#: sql_help.c:2647 -#: sql_help.c:2729 -#: sql_help.c:2799 +#: sql_help.c:2006 +#: sql_help.c:2477 +#: sql_help.c:2824 +#: sql_help.c:2893 +#: sql_help.c:3027 +#: sql_help.c:3113 +#: sql_help.c:3183 msgid "output_name" msgstr "nom_en_sortie" -#: sql_help.c:1745 +#: sql_help.c:2022 msgid "code" msgstr "code" -#: sql_help.c:2014 +#: sql_help.c:2315 msgid "parameter" msgstr "param�tre" -#: sql_help.c:2027 -#: sql_help.c:2028 -#: sql_help.c:2223 +#: sql_help.c:2333 +#: sql_help.c:2334 +#: sql_help.c:2559 msgid "statement" msgstr "instruction" -#: sql_help.c:2053 -#: sql_help.c:2203 +#: sql_help.c:2364 +#: sql_help.c:2533 msgid "direction" msgstr "direction" -#: sql_help.c:2055 +#: sql_help.c:2366 +#: sql_help.c:2535 msgid "where direction can be empty or one of:" msgstr "o� direction peut �tre vide ou faire partie de :" -#: sql_help.c:2056 -#: sql_help.c:2057 -#: sql_help.c:2058 -#: sql_help.c:2059 -#: sql_help.c:2060 -#: sql_help.c:2458 -#: sql_help.c:2460 -#: sql_help.c:2526 -#: sql_help.c:2528 -#: sql_help.c:2657 -#: sql_help.c:2659 -#: sql_help.c:2758 -#: sql_help.c:2760 -#: sql_help.c:2809 -#: sql_help.c:2811 +#: sql_help.c:2367 +#: sql_help.c:2368 +#: sql_help.c:2369 +#: sql_help.c:2370 +#: sql_help.c:2371 +#: sql_help.c:2536 +#: sql_help.c:2537 +#: sql_help.c:2538 +#: sql_help.c:2539 +#: sql_help.c:2540 +#: sql_help.c:2834 +#: sql_help.c:2836 +#: sql_help.c:2904 +#: sql_help.c:2906 +#: sql_help.c:3037 +#: sql_help.c:3039 +#: sql_help.c:3142 +#: sql_help.c:3144 +#: sql_help.c:3193 +#: sql_help.c:3195 msgid "count" msgstr "nombre" -#: sql_help.c:2125 -#: sql_help.c:2354 +#: sql_help.c:2436 +#: sql_help.c:2690 msgid "sequence_name" msgstr "nom_s�quence" -#: sql_help.c:2136 -#: sql_help.c:2365 +#: sql_help.c:2447 +#: sql_help.c:2701 msgid "arg_name" msgstr "nom_argument" -#: sql_help.c:2137 -#: sql_help.c:2366 +#: sql_help.c:2448 +#: sql_help.c:2702 msgid "arg_type" msgstr "type_arg" -#: sql_help.c:2142 -#: sql_help.c:2371 +#: sql_help.c:2453 +#: sql_help.c:2707 msgid "loid" msgstr "loid" -#: sql_help.c:2172 -#: sql_help.c:2212 -#: sql_help.c:2706 +#: sql_help.c:2485 +#: sql_help.c:2548 +#: sql_help.c:3088 msgid "channel" msgstr "canal" -#: sql_help.c:2194 +#: sql_help.c:2507 msgid "lockmode" msgstr "mode_de_verrou" -#: sql_help.c:2195 +#: sql_help.c:2508 msgid "where lockmode is one of:" msgstr "o� mode_de_verrou fait partie de :" -#: sql_help.c:2213 +#: sql_help.c:2549 msgid "payload" msgstr "contenu" -#: sql_help.c:2239 +#: sql_help.c:2575 msgid "old_role" msgstr "ancien_r�le" -#: sql_help.c:2240 +#: sql_help.c:2576 msgid "new_role" msgstr "nouveau_r�le" -#: sql_help.c:2256 -#: sql_help.c:2401 -#: sql_help.c:2409 +#: sql_help.c:2592 +#: sql_help.c:2737 +#: sql_help.c:2745 msgid "savepoint_name" msgstr "nom_savepoint" -#: sql_help.c:2445 -#: sql_help.c:2512 -#: sql_help.c:2644 -#: sql_help.c:2796 -msgid "with_query" -msgstr "requ�te_with" +#: sql_help.c:2767 +msgid "provider" +msgstr "fournisseur" -#: sql_help.c:2449 -#: sql_help.c:2480 -#: sql_help.c:2482 -#: sql_help.c:2517 -#: sql_help.c:2648 -#: sql_help.c:2679 -#: sql_help.c:2681 -#: sql_help.c:2800 -#: sql_help.c:2831 -#: sql_help.c:2833 +#: sql_help.c:2825 +#: sql_help.c:2856 +#: sql_help.c:2858 +#: sql_help.c:2895 +#: sql_help.c:3028 +#: sql_help.c:3059 +#: sql_help.c:3061 +#: sql_help.c:3184 +#: sql_help.c:3215 +#: sql_help.c:3217 msgid "from_item" msgstr "�l�ment_from" -#: sql_help.c:2453 -#: sql_help.c:2521 -#: sql_help.c:2652 -#: sql_help.c:2804 +#: sql_help.c:2829 +#: sql_help.c:2899 +#: sql_help.c:3032 +#: sql_help.c:3188 msgid "window_name" msgstr "nom_window" -#: sql_help.c:2454 -#: sql_help.c:2522 -#: sql_help.c:2653 -#: sql_help.c:2805 +#: sql_help.c:2830 +#: sql_help.c:2900 +#: sql_help.c:3033 +#: sql_help.c:3189 msgid "window_definition" msgstr "d�finition_window" -#: sql_help.c:2455 -#: sql_help.c:2466 -#: sql_help.c:2488 -#: sql_help.c:2523 -#: sql_help.c:2654 -#: sql_help.c:2665 -#: sql_help.c:2687 -#: sql_help.c:2806 -#: sql_help.c:2817 -#: sql_help.c:2839 +#: sql_help.c:2831 +#: sql_help.c:2842 +#: sql_help.c:2864 +#: sql_help.c:2901 +#: sql_help.c:3034 +#: sql_help.c:3045 +#: sql_help.c:3067 +#: sql_help.c:3190 +#: sql_help.c:3201 +#: sql_help.c:3223 msgid "select" msgstr "s�lection" -#: sql_help.c:2462 -#: sql_help.c:2661 -#: sql_help.c:2813 +#: sql_help.c:2838 +#: sql_help.c:3041 +#: sql_help.c:3197 msgid "where from_item can be one of:" msgstr "o� �l�ment_from fait partie de :" -#: sql_help.c:2465 -#: sql_help.c:2468 -#: sql_help.c:2471 -#: sql_help.c:2475 -#: sql_help.c:2664 -#: sql_help.c:2667 -#: sql_help.c:2670 -#: sql_help.c:2674 -#: sql_help.c:2816 -#: sql_help.c:2819 -#: sql_help.c:2822 -#: sql_help.c:2826 +#: sql_help.c:2841 +#: sql_help.c:2844 +#: sql_help.c:2847 +#: sql_help.c:2851 +#: sql_help.c:3044 +#: sql_help.c:3047 +#: sql_help.c:3050 +#: sql_help.c:3054 +#: sql_help.c:3200 +#: sql_help.c:3203 +#: sql_help.c:3206 +#: sql_help.c:3210 msgid "column_alias" msgstr "alias_colonne" -#: sql_help.c:2469 -#: sql_help.c:2486 -#: sql_help.c:2490 -#: sql_help.c:2668 -#: sql_help.c:2685 -#: sql_help.c:2689 -#: sql_help.c:2820 -#: sql_help.c:2837 -#: sql_help.c:2841 +#: sql_help.c:2845 +#: sql_help.c:2862 +#: sql_help.c:3048 +#: sql_help.c:3065 +#: sql_help.c:3204 +#: sql_help.c:3221 msgid "with_query_name" msgstr "nom_requ�te_with" -#: sql_help.c:2473 -#: sql_help.c:2478 -#: sql_help.c:2672 -#: sql_help.c:2677 -#: sql_help.c:2824 -#: sql_help.c:2829 +#: sql_help.c:2849 +#: sql_help.c:2854 +#: sql_help.c:3052 +#: sql_help.c:3057 +#: sql_help.c:3208 +#: sql_help.c:3213 msgid "argument" msgstr "argument" -#: sql_help.c:2476 -#: sql_help.c:2479 -#: sql_help.c:2675 -#: sql_help.c:2678 -#: sql_help.c:2827 -#: sql_help.c:2830 +#: sql_help.c:2852 +#: sql_help.c:2855 +#: sql_help.c:3055 +#: sql_help.c:3058 +#: sql_help.c:3211 +#: sql_help.c:3214 msgid "column_definition" msgstr "d�finition_colonne" -#: sql_help.c:2481 -#: sql_help.c:2680 -#: sql_help.c:2832 +#: sql_help.c:2857 +#: sql_help.c:3060 +#: sql_help.c:3216 msgid "join_type" msgstr "type_de_jointure" -#: sql_help.c:2483 -#: sql_help.c:2682 -#: sql_help.c:2834 +#: sql_help.c:2859 +#: sql_help.c:3062 +#: sql_help.c:3218 msgid "join_condition" msgstr "condition_de_jointure" -#: sql_help.c:2484 -#: sql_help.c:2683 -#: sql_help.c:2835 +#: sql_help.c:2860 +#: sql_help.c:3063 +#: sql_help.c:3219 msgid "join_column" msgstr "colonne_de_jointure" -#: sql_help.c:2485 -#: sql_help.c:2684 -#: sql_help.c:2836 +#: sql_help.c:2861 +#: sql_help.c:3064 +#: sql_help.c:3220 msgid "and with_query is:" msgstr "et requ�te_with est :" -#: sql_help.c:2516 +#: sql_help.c:2865 +#: sql_help.c:3068 +#: sql_help.c:3224 +msgid "insert" +msgstr "insert" + +#: sql_help.c:2866 +#: sql_help.c:3069 +#: sql_help.c:3225 +msgid "update" +msgstr "update" + +#: sql_help.c:2867 +#: sql_help.c:3070 +#: sql_help.c:3226 +msgid "delete" +msgstr "delete" + +#: sql_help.c:2894 msgid "new_table" msgstr "nouvelle_table" -#: sql_help.c:2541 +#: sql_help.c:2919 msgid "timezone" msgstr "fuseau_horaire" -#: sql_help.c:2725 +#: sql_help.c:3109 msgid "from_list" msgstr "liste_from" -#: sql_help.c:2756 +#: sql_help.c:3140 msgid "sort_expression" msgstr "expression_de_tri" @@ -4545,39 +5012,58 @@ msgstr "n'a pas pu acc msgid "could not read symbolic link \"%s\"" msgstr "n'a pas pu lire le lien symbolique � %s �" -#: ../../port/exec.c:516 +#: ../../port/exec.c:517 #, c-format msgid "child process exited with exit code %d" msgstr "le processus fils a quitt� avec le code de sortie %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:521 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "le processus fils a �t� termin� par l'exception 0x%X" -#: ../../port/exec.c:529 +#: ../../port/exec.c:530 #, c-format msgid "child process was terminated by signal %s" msgstr "le processus fils a �t� termin� par le signal %s" -#: ../../port/exec.c:532 +#: ../../port/exec.c:533 #, c-format msgid "child process was terminated by signal %d" msgstr "le processus fils a �t� termin� par le signal %d" -#: ../../port/exec.c:536 +#: ../../port/exec.c:537 #, c-format msgid "child process exited with unrecognized status %d" msgstr "le processus fils a quitt� avec un statut %d non reconnu" +#~ msgid "out of memory" +#~ msgstr "m�moire �puis�e" + +#~ msgid " on host \"%s\"" +#~ msgstr " sur l'h�te � %s �" + +#~ msgid " at port \"%s\"" +#~ msgstr " sur le port � %s �" + +#~ msgid " as user \"%s\"" +#~ msgstr " comme utilisateur � %s �" + +#~ msgid "define a new constraint trigger" +#~ msgstr "d�finir une nouvelle contrainte de d�clenchement" + #~ msgid "Exclusion constraints:" #~ msgstr "Contraintes d'exclusion :" + #~ msgid "rolename" #~ msgstr "nom_r�le" + #~ msgid "number" #~ msgstr "num�ro" + #~ msgid "ABORT [ WORK | TRANSACTION ]" #~ msgstr "ABORT [ WORK | TRANSACTION ]" + #~ msgid "" #~ "ALTER AGGREGATE name ( type [ , ... ] ) RENAME TO new_name\n" #~ "ALTER AGGREGATE name ( type [ , ... ] ) OWNER TO new_owner\n" @@ -4586,12 +5072,14 @@ msgstr "le processus fils a quitt #~ "ALTER AGGREGATE nom ( type [ , ... ] ) RENAME TO nouveau_nom\n" #~ "ALTER AGGREGATE nom ( type [ , ... ] ) OWNER TO nouveau_propri�taire\n" #~ "ALTER AGGREGATE nom ( type [ , ... ] ) SET SCHEMA nouveau_sch�ma" + #~ msgid "" #~ "ALTER CONVERSION name RENAME TO newname\n" #~ "ALTER CONVERSION name OWNER TO newowner" #~ msgstr "" #~ "ALTER CONVERSION nom RENAME TO nouveau_nom\n" #~ "ALTER CONVERSION nom OWNER TO nouveau_propri�taire" + #~ msgid "" #~ "ALTER DATABASE name [ [ WITH ] option [ ... ] ]\n" #~ "\n" @@ -4628,6 +5116,7 @@ msgstr "le processus fils a quitt #~ "ALTER DATABASE nom SET param�tre_configuration FROM CURRENT\n" #~ "ALTER DATABASE nom RESET param�tre_configuration\n" #~ "ALTER DATABASE nom RESET ALL" + #~ msgid "" #~ "ALTER DOMAIN name\n" #~ " { SET DEFAULT expression | DROP DEFAULT }\n" @@ -4654,6 +5143,7 @@ msgstr "le processus fils a quitt #~ " OWNER TO nouveau_propri�taire \n" #~ "ALTER DOMAIN nom\n" #~ " SET SCHEMA nouveau_sch�ma" + #~ msgid "" #~ "ALTER FOREIGN DATA WRAPPER name\n" #~ " [ VALIDATOR valfunction | NO VALIDATOR ]\n" @@ -4664,6 +5154,7 @@ msgstr "le processus fils a quitt #~ " [ VALIDATOR fonction_validation | NO VALIDATOR ]\n" #~ " [ OPTIONS ( [ ADD | SET | DROP ] option ['valeur'] [, ... ]) ]\n" #~ "ALTER FOREIGN DATA WRAPPER nom OWNER TO nouveau_propri�taire" + #~ msgid "" #~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" #~ " action [ ... ] [ RESTRICT ]\n" @@ -4706,6 +5197,7 @@ msgstr "le processus fils a quitt #~ " SET param�tre FROM CURRENT\n" #~ " RESET param�tre\n" #~ " RESET ALL" + #~ msgid "" #~ "ALTER GROUP groupname ADD USER username [, ... ]\n" #~ "ALTER GROUP groupname DROP USER username [, ... ]\n" @@ -4716,6 +5208,7 @@ msgstr "le processus fils a quitt #~ "ALTER GROUP nom_groupe DROP USER nom_utilisateur [, ... ]\n" #~ "\n" #~ "ALTER GROUP nom_groupe RENAME TO nouveau_nom" + #~ msgid "" #~ "ALTER INDEX name RENAME TO new_name\n" #~ "ALTER INDEX name SET TABLESPACE tablespace_name\n" @@ -4726,18 +5219,21 @@ msgstr "le processus fils a quitt #~ "ALTER INDEX nom SET TABLESPACE nom_tablespace\n" #~ "ALTER INDEX nom SET ( param�tre_stockage = valeur [, ... ] )\n" #~ "ALTER INDEX nom RESET ( param�tre_stockage [, ... ] )" + #~ msgid "" #~ "ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO newname\n" #~ "ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO new_owner" #~ msgstr "" #~ "ALTER [ PROCEDURAL ] LANGUAGE nom RENAME TO nouveau_nom\n" #~ "ALTER [ PROCEDURAL ] LANGUAGE nom OWNER TO nouveau_propri�taire" + #~ msgid "" #~ "ALTER OPERATOR name ( { lefttype | NONE } , { righttype | NONE } ) OWNER " #~ "TO newowner" #~ msgstr "" #~ "ALTER OPERATOR nom ( { lefttype | NONE } , { righttype | NONE } )\n" #~ " OWNER TO nouveau_propri�taire" + #~ msgid "" #~ "ALTER OPERATOR CLASS name USING index_method RENAME TO newname\n" #~ "ALTER OPERATOR CLASS name USING index_method OWNER TO newowner" @@ -4746,6 +5242,7 @@ msgstr "le processus fils a quitt #~ " RENAME TO nouveau_nom\n" #~ "ALTER OPERATOR CLASS nom USING m�thode_indexation\n" #~ " OWNER TO nouveau_propri�taire" + #~ msgid "" #~ "ALTER OPERATOR FAMILY name USING index_method ADD\n" #~ " { OPERATOR strategy_number operator_name ( op_type, op_type )\n" @@ -4772,6 +5269,7 @@ msgstr "le processus fils a quitt #~ " RENAME TO nouveau_nom\n" #~ "ALTER OPERATOR FAMILY nom USING m�thode_indexage\n" #~ " OWNER TO nouveau_propri�taire" + #~ msgid "" #~ "ALTER ROLE name [ [ WITH ] option [ ... ] ]\n" #~ "\n" @@ -4815,12 +5313,14 @@ msgstr "le processus fils a quitt #~ "ALTER ROLE name SET param�tre FROM CURRENT\n" #~ "ALTER ROLE nom RESET param�tre\n" #~ "ALTER ROLE name RESET ALL" + #~ msgid "" #~ "ALTER SCHEMA name RENAME TO newname\n" #~ "ALTER SCHEMA name OWNER TO newowner" #~ msgstr "" #~ "ALTER SCHEMA nom RENAME TO nouveau_nom\n" #~ "ALTER SCHEMA nom OWNER TO nouveau_propri�taire" + #~ msgid "" #~ "ALTER SEQUENCE name [ INCREMENT [ BY ] increment ]\n" #~ " [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO " @@ -4843,6 +5343,7 @@ msgstr "le processus fils a quitt #~ "ALTER SEQUENCE nom OWNER TO new_propri�taire\n" #~ "ALTER SEQUENCE nom RENAME TO new_nom\n" #~ "ALTER SEQUENCE nom SET SCHEMA new_sch�ma" + #~ msgid "" #~ "ALTER SERVER servername [ VERSION 'newversion' ]\n" #~ " [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] ) ]\n" @@ -4851,6 +5352,7 @@ msgstr "le processus fils a quitt #~ "ALTER SERVER nom [ VERSION 'nouvelleversion' ]\n" #~ " [ OPTIONS ( [ ADD | SET | DROP ] option ['valeur'] [, ... ] ) ]\n" #~ "ALTER SERVER nom OWNER TO nouveau_propri�taire" + #~ msgid "" #~ "ALTER TABLE [ ONLY ] name [ * ]\n" #~ " action [, ... ]\n" @@ -4933,12 +5435,14 @@ msgstr "le processus fils a quitt #~ " NO INHERIT table_parent\n" #~ " OWNER TO nouveau_propri�taire\n" #~ " SET TABLESPACE nouveau_tablespace" + #~ msgid "" #~ "ALTER TABLESPACE name RENAME TO newname\n" #~ "ALTER TABLESPACE name OWNER TO newowner" #~ msgstr "" #~ "ALTER TABLESPACE nom RENAME TO nouveau_nom\n" #~ "ALTER TABLESPACE nom OWNER TO nouveau_propri�taire" + #~ msgid "" #~ "ALTER TEXT SEARCH CONFIGURATION name\n" #~ " ADD MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]\n" @@ -4967,6 +5471,7 @@ msgstr "le processus fils a quitt #~ " DROP MAPPING [ IF EXISTS ] FOR type_jeton [, ... ]\n" #~ "ALTER TEXT SEARCH CONFIGURATION nom RENAME TO nouveau_nom\n" #~ "ALTER TEXT SEARCH CONFIGURATION nom OWNER TO nouveau_propri�taire" + #~ msgid "" #~ "ALTER TEXT SEARCH DICTIONARY name (\n" #~ " option [ = value ] [, ... ]\n" @@ -4979,12 +5484,16 @@ msgstr "le processus fils a quitt #~ ")\n" #~ "ALTER TEXT SEARCH DICTIONARY nom RENAME TO nouveau_nom\n" #~ "ALTER TEXT SEARCH DICTIONARY nom OWNER TO nouveau_propri�taire" + #~ msgid "ALTER TEXT SEARCH PARSER name RENAME TO newname" #~ msgstr "ALTER TEXT SEARCH PARSER nom RENAME TO nouveau_nom" + #~ msgid "ALTER TEXT SEARCH TEMPLATE name RENAME TO newname" #~ msgstr "ALTER TEXT SEARCH TEMPLATE nom RENAME TO nouveau_nom" + #~ msgid "ALTER TRIGGER name ON table RENAME TO newname" #~ msgstr "ALTER TRIGGER nom ON table RENAME TO nouveau_nom" + #~ msgid "" #~ "ALTER TYPE name RENAME TO new_name\n" #~ "ALTER TYPE name OWNER TO new_owner \n" @@ -4993,6 +5502,7 @@ msgstr "le processus fils a quitt #~ "ALTER TYPE nom RENAME TO nouveau_nom\n" #~ "ALTER TYPE nom OWNER TO nouveau_propri�taire\n" #~ "ALTER TYPE nom SET SCHEMA nouveau_sch�ma" + #~ msgid "" #~ "ALTER USER name [ [ WITH ] option [ ... ] ]\n" #~ "\n" @@ -5036,6 +5546,7 @@ msgstr "le processus fils a quitt #~ "ALTER USER name SET param�tre FROM CURRENT\n" #~ "ALTER USER nom RESET param�tre\n" #~ "ALTER USER name RESET ALL" + #~ msgid "" #~ "ALTER USER MAPPING FOR { username | USER | CURRENT_USER | PUBLIC }\n" #~ " SERVER servername\n" @@ -5045,6 +5556,7 @@ msgstr "le processus fils a quitt #~ "PUBLIC }\n" #~ " SERVER nom_serveur\n" #~ " OPTIONS ( [ ADD | SET | DROP ] option ['valeur'] [, ... ] )" + #~ msgid "" #~ "ALTER VIEW name ALTER [ COLUMN ] column SET DEFAULT expression\n" #~ "ALTER VIEW name ALTER [ COLUMN ] column DROP DEFAULT\n" @@ -5057,8 +5569,10 @@ msgstr "le processus fils a quitt #~ "ALTER VIEW nom OWNER TO nouveau_propri�taire\n" #~ "ALTER VIEW nom RENAME TO nouveau_nom\n" #~ "ALTER VIEW nom SET SCHEMA nouveau_sch�ma" + #~ msgid "ANALYZE [ VERBOSE ] [ table [ ( column [, ...] ) ] ]" #~ msgstr "ANALYZE [ VERBOSE ] [ table [ ( colonne [, ...] ) ] ]" + #~ msgid "" #~ "BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]\n" #~ "\n" @@ -5075,16 +5589,20 @@ msgstr "le processus fils a quitt #~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ |\n" #~ " READ COMMITTED | READ UNCOMMITTED }\n" #~ " READ WRITE | READ ONLY" + #~ msgid "CHECKPOINT" #~ msgstr "CHECKPOINT" + #~ msgid "CLOSE { name | ALL }" #~ msgstr "CLOSE { nom | ALL }" + #~ msgid "" #~ "CLUSTER [VERBOSE] tablename [ USING indexname ]\n" #~ "CLUSTER [VERBOSE]" #~ msgstr "" #~ "CLUSTER [VERBOSE] nom_table [ USING nom_index ]\n" #~ "CLUSTER [VERBOSE]" + #~ msgid "" #~ "COMMENT ON\n" #~ "{\n" @@ -5148,10 +5666,13 @@ msgstr "le processus fils a quitt #~ " TYPE nom_objet |\n" #~ " VIEW nom_objet\n" #~ "} IS 'text'" + #~ msgid "COMMIT [ WORK | TRANSACTION ]" #~ msgstr "COMMIT [ WORK | TRANSACTION ]" + #~ msgid "COMMIT PREPARED transaction_id" #~ msgstr "COMMIT PREPARED id_transaction" + #~ msgid "" #~ "COPY tablename [ ( column [, ...] ) ]\n" #~ " FROM { 'filename' | STDIN }\n" @@ -5200,6 +5721,7 @@ msgstr "le processus fils a quitt #~ " [ QUOTE [ AS ] 'guillemet' ] \n" #~ " [ ESCAPE [ AS ] '�chappement' ]\n" #~ " [ FORCE QUOTE colonne [, ...] ]" + #~ msgid "" #~ "CREATE AGGREGATE name ( input_data_type [ , ... ] ) (\n" #~ " SFUNC = sfunc,\n" @@ -5238,6 +5760,7 @@ msgstr "le processus fils a quitt #~ " [ , INITCOND = condition_initiale ]\n" #~ " [ , SORTOP = op�rateur_tri ]\n" #~ ")" + #~ msgid "" #~ "CREATE CAST (sourcetype AS targettype)\n" #~ " WITH FUNCTION funcname (argtypes)\n" @@ -5262,6 +5785,7 @@ msgstr "le processus fils a quitt #~ "CREATE CAST (type_source AS type_cible)\n" #~ " WITH INOUT\n" #~ " [ AS ASSIGNMENT | AS IMPLICIT ]" + #~ msgid "" #~ "CREATE CONSTRAINT TRIGGER name\n" #~ " AFTER event [ OR ... ]\n" @@ -5280,12 +5804,14 @@ msgstr "le processus fils a quitt #~ "INITIALLY DEFERRED } }\n" #~ " FOR EACH ROW\n" #~ " EXECUTE PROCEDURE nom_fonction ( arguments )" + #~ msgid "" #~ "CREATE [ DEFAULT ] CONVERSION name\n" #~ " FOR source_encoding TO dest_encoding FROM funcname" #~ msgstr "" #~ "CREATE [DEFAULT] CONVERSION nom\n" #~ " FOR codage_source TO codage_cible FROM nom_fonction" + #~ msgid "" #~ "CREATE DATABASE name\n" #~ " [ [ WITH ] [ OWNER [=] dbowner ]\n" @@ -5304,6 +5830,7 @@ msgstr "le processus fils a quitt #~ " [ LC_CTYPE [=] type_caract ]\n" #~ " [ TABLESPACE [=] tablespace ]\n" #~ " [ CONNECTION LIMIT [=] limite_connexion ] ]" + #~ msgid "" #~ "CREATE DOMAIN name [ AS ] data_type\n" #~ " [ DEFAULT expression ]\n" @@ -5322,6 +5849,7 @@ msgstr "le processus fils a quitt #~ "\n" #~ "[ CONSTRAINT nom_contrainte ]\n" #~ "{ NOT NULL | NULL | CHECK (expression) }" + #~ msgid "" #~ "CREATE FOREIGN DATA WRAPPER name\n" #~ " [ VALIDATOR valfunction | NO VALIDATOR ]\n" @@ -5330,6 +5858,7 @@ msgstr "le processus fils a quitt #~ "CREATE FOREIGN DATA WRAPPER nom\n" #~ " [ VALIDATOR fonction_validation | NO VALIDATOR ]\n" #~ " [ OPTIONS ( option 'valeur' [, ... ] ) ]" + #~ msgid "" #~ "CREATE [ OR REPLACE ] FUNCTION\n" #~ " name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } defexpr ] " @@ -5367,6 +5896,7 @@ msgstr "le processus fils a quitt #~ " | AS 'fichier_obj', 'symb�le_lien'\n" #~ " } ...\n" #~ " [ WITH ( attribut [, ...] ) ]" + #~ msgid "" #~ "CREATE GROUP name [ [ WITH ] option [ ... ] ]\n" #~ "\n" @@ -5405,6 +5935,7 @@ msgstr "le processus fils a quitt #~ " | ADMIN nom_r�le [, ...]\n" #~ " | USER nom_r�le [, ...]\n" #~ " | SYSID uid" + #~ msgid "" #~ "CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] name ON table [ USING method ]\n" #~ " ( { column | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS " @@ -5420,6 +5951,7 @@ msgstr "le processus fils a quitt #~ " [ WITH ( parametre_stockage = valeur [, ... ] ) ]\n" #~ " [ TABLESPACE tablespace ]\n" #~ " [ WHERE predicat ]" + #~ msgid "" #~ "CREATE [ PROCEDURAL ] LANGUAGE name\n" #~ "CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name\n" @@ -5428,6 +5960,7 @@ msgstr "le processus fils a quitt #~ "CREATE [ PROCEDURAL ] LANGUAGE nom\n" #~ "CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE nom\n" #~ " HANDLER gestionnaire_appels [ VALIDATOR fonction_val ]" + #~ msgid "" #~ "CREATE OPERATOR name (\n" #~ " PROCEDURE = funcname\n" @@ -5444,6 +5977,7 @@ msgstr "le processus fils a quitt #~ " [, RESTRICT = proc_res ] [, JOIN = proc_join ]\n" #~ " [, HASHES ] [, MERGES ]\n" #~ ")" + #~ msgid "" #~ "CREATE OPERATOR CLASS name [ DEFAULT ] FOR TYPE data_type\n" #~ " USING index_method [ FAMILY family_name ] AS\n" @@ -5460,8 +5994,10 @@ msgstr "le processus fils a quitt #~ " nom_fonction ( type_argument [, ...] )\n" #~ " | STORAGE type_stockage\n" #~ " } [, ... ]" + #~ msgid "CREATE OPERATOR FAMILY name USING index_method" #~ msgstr "CREATE OPERATOR FAMILY nom USING methode_indexage" + #~ msgid "" #~ "CREATE ROLE name [ [ WITH ] option [ ... ] ]\n" #~ "\n" @@ -5502,6 +6038,7 @@ msgstr "le processus fils a quitt #~ " | ADMIN nom_r�le [, ...]\n" #~ " | USER nom_r�le [, ...]\n" #~ " | SYSID uid" + #~ msgid "" #~ "CREATE [ OR REPLACE ] RULE name AS ON event\n" #~ " TO table [ WHERE condition ]\n" @@ -5512,6 +6049,7 @@ msgstr "le processus fils a quitt #~ " TO table [ WHERE condition ]\n" #~ " DO [ ALSO | INSTEAD ] { NOTHING | commande | ( commande ; " #~ "commande ... ) }" + #~ msgid "" #~ "CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element " #~ "[ ... ] ]\n" @@ -5520,6 +6058,7 @@ msgstr "le processus fils a quitt #~ "CREATE SCHEMA nom_schema [ AUTHORIZATION nom_utilisateur ]\n" #~ " [ element_schema [ ... ] ]\n" #~ "CREATE SCHEMA AUTHORIZATION nom_utilisateur [ element_schema [ ... ] ]" + #~ msgid "" #~ "CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ]\n" #~ " [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO " @@ -5535,6 +6074,7 @@ msgstr "le processus fils a quitt #~ " [ CACHE en_cache ]\n" #~ " [ [ NO ] CYCLE ]\n" #~ " [ OWNED BY { table.colonne | NONE } ]" + #~ msgid "" #~ "CREATE SERVER servername [ TYPE 'servertype' ] [ VERSION " #~ "'serverversion' ]\n" @@ -5544,6 +6084,7 @@ msgstr "le processus fils a quitt #~ "CREATE SERVER nom [ TYPE 'typeserveur' ] [ VERSION 'versionserveur' ]\n" #~ " FOREIGN DATA WRAPPER nomfdw\n" #~ " [ OPTIONS ( option 'valeur' [, ... ] ) ]" + #~ msgid "" #~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name ( [\n" #~ " { column_name data_type [ DEFAULT default_expr ] [ column_constraint " @@ -5636,6 +6177,7 @@ msgstr "le processus fils a quitt #~ "\n" #~ "[ WITH ( param�tre_stockage [= valeur] [, ... ] ) ]\n" #~ "[ USING INDEX TABLESPACE espace_logique ]" + #~ msgid "" #~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name\n" #~ " [ (column_name [, ...] ) ]\n" @@ -5653,11 +6195,13 @@ msgstr "le processus fils a quitt #~ " [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" #~ " [ TABLESPACE tablespace ]\n" #~ " AS requ�te [ WITH [ NO ] DATA ]" + #~ msgid "" #~ "CREATE TABLESPACE tablespacename [ OWNER username ] LOCATION 'directory'" #~ msgstr "" #~ "CREATE TABLESPACE nom_tablespace [ OWNER nom_utilisateur ]\n" #~ " LOCATION 'r�pertoire'" + #~ msgid "" #~ "CREATE TEXT SEARCH CONFIGURATION name (\n" #~ " PARSER = parser_name |\n" @@ -5668,6 +6212,7 @@ msgstr "le processus fils a quitt #~ " PARSER = nom_analyseur |\n" #~ " COPY = config_source\n" #~ ")" + #~ msgid "" #~ "CREATE TEXT SEARCH DICTIONARY name (\n" #~ " TEMPLATE = template\n" @@ -5678,6 +6223,7 @@ msgstr "le processus fils a quitt #~ " TEMPLATE = mod�le\n" #~ " [, option = valeur [, ... ]]\n" #~ ")" + #~ msgid "" #~ "CREATE TEXT SEARCH PARSER name (\n" #~ " START = start_function ,\n" @@ -5694,6 +6240,7 @@ msgstr "le processus fils a quitt #~ " LEXTYPES = fonction_typeslexem\n" #~ " [, HEADLINE = fonction_entete ]\n" #~ ")" + #~ msgid "" #~ "CREATE TEXT SEARCH TEMPLATE name (\n" #~ " [ INIT = init_function , ]\n" @@ -5704,6 +6251,7 @@ msgstr "le processus fils a quitt #~ " [ INIT = fonction_init , ]\n" #~ " LEXIZE = fonction_lexize\n" #~ ")" + #~ msgid "" #~ "CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }\n" #~ " ON table [ FOR [ EACH ] { ROW | STATEMENT } ]\n" @@ -5712,6 +6260,7 @@ msgstr "le processus fils a quitt #~ "CREATE TRIGGER nom { BEFORE | AFTER } { �v�nement [ OR ... ] }\n" #~ " ON table [ FOR [ EACH ] { ROW | STATEMENT } ]\n" #~ " EXECUTE PROCEDURE nom_fonction ( arguments )" + #~ msgid "" #~ "CREATE TYPE name AS\n" #~ " ( attribute_name data_type [, ... ] )\n" @@ -5768,6 +6317,7 @@ msgstr "le processus fils a quitt #~ ")\n" #~ "\n" #~ "CREATE TYPE nom" + #~ msgid "" #~ "CREATE USER name [ [ WITH ] option [ ... ] ]\n" #~ "\n" @@ -5808,6 +6358,7 @@ msgstr "le processus fils a quitt #~ " | ADMIN nom_r�le [, ...]\n" #~ " | USER nom_r�le [, ...]\n" #~ " | SYSID uid" + #~ msgid "" #~ "CREATE USER MAPPING FOR { username | USER | CURRENT_USER | PUBLIC }\n" #~ " SERVER servername\n" @@ -5817,6 +6368,7 @@ msgstr "le processus fils a quitt #~ "PUBLIC }\n" #~ " SERVER nomserveur\n" #~ " [ OPTIONS ( option 'valeur' [ , ... ] ) ]" + #~ msgid "" #~ "CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name " #~ "[, ...] ) ]\n" @@ -5825,14 +6377,17 @@ msgstr "le processus fils a quitt #~ "CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW nom\n" #~ " [ ( nom_colonne [, ...] ) ]\n" #~ " AS requ�te" + #~ msgid "DEALLOCATE [ PREPARE ] { name | ALL }" #~ msgstr "DEALLOCATE [ PREPARE ] { nom_plan | ALL }" + #~ msgid "" #~ "DECLARE name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]\n" #~ " CURSOR [ { WITH | WITHOUT } HOLD ] FOR query" #~ msgstr "" #~ "DECLARE nom [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]\n" #~ " CURSOR [ { WITH | WITHOUT } HOLD ] FOR requ�te" + #~ msgid "" #~ "DELETE FROM [ ONLY ] table [ [ AS ] alias ]\n" #~ " [ USING usinglist ]\n" @@ -5843,25 +6398,33 @@ msgstr "le processus fils a quitt #~ " [ USING liste_using ]\n" #~ " [ WHERE condition | WHERE CURRENT OF nom_curseur ]\n" #~ " [ RETURNING * | expression_sortie [ [ AS ] nom_sortie ] [, ...] ]" + #~ msgid "DISCARD { ALL | PLANS | TEMPORARY | TEMP }" #~ msgstr "DISCARD { ALL | PLANS | TEMPORARY | TEMP }" + #~ msgid "" #~ "DROP AGGREGATE [ IF EXISTS ] name ( type [ , ... ] ) [ CASCADE | " #~ "RESTRICT ]" #~ msgstr "" #~ "DROP AGGREGATE [ IF EXISTS ] nom ( type [ , ... ] ) [ CASCADE | RESTRICT ]" + #~ msgid "" #~ "DROP CAST [ IF EXISTS ] (sourcetype AS targettype) [ CASCADE | RESTRICT ]" #~ msgstr "" #~ "DROP CAST [ IF EXISTS ] (type_source AS type_cible) [ CASCADE | RESTRICT ]" + #~ msgid "DROP CONVERSION [ IF EXISTS ] name [ CASCADE | RESTRICT ]" #~ msgstr "DROP CONVERSION [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" + #~ msgid "DROP DATABASE [ IF EXISTS ] name" #~ msgstr "DROP DATABASE [ IF EXISTS ] nom" + #~ msgid "DROP DOMAIN [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" #~ msgstr "DROP DOMAIN [ IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" + #~ msgid "DROP FOREIGN DATA WRAPPER [ IF EXISTS ] name [ CASCADE | RESTRICT ]" #~ msgstr "DROP FOREIGN DATA WRAPPER [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" + #~ msgid "" #~ "DROP FUNCTION [ IF EXISTS ] name ( [ [ argmode ] [ argname ] argtype " #~ "[, ...] ] )\n" @@ -5870,14 +6433,18 @@ msgstr "le processus fils a quitt #~ "DROP FUNCTION [IF EXISTS ] nom\n" #~ " ( [ [ mode_arg ] [ nom_arg ] type_arg [, ...] ] )\n" #~ " [ CASCADE | RESTRICT ]" + #~ msgid "DROP GROUP [ IF EXISTS ] name [, ...]" #~ msgstr "DROP GROUP [IF EXISTS ] nom [, ...]" + #~ msgid "DROP INDEX [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" #~ msgstr "DROP INDEX [IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" + #~ msgid "" #~ "DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] name [ CASCADE | RESTRICT ]" #~ msgstr "" #~ "DROP [ PROCEDURAL ] LANGUAGE [IF EXISTS ] nom [ CASCADE | RESTRICT ]" + #~ msgid "" #~ "DROP OPERATOR [ IF EXISTS ] name ( { lefttype | NONE } , { righttype | " #~ "NONE } ) [ CASCADE | RESTRICT ]" @@ -5885,66 +6452,89 @@ msgstr "le processus fils a quitt #~ "DROP OPERATOR [IF EXISTS ] nom\n" #~ " ( { type_gauche | NONE } , { type_droit | NONE } )\n" #~ " [ CASCADE | RESTRICT ]" + #~ msgid "" #~ "DROP OPERATOR CLASS [ IF EXISTS ] name USING index_method [ CASCADE | " #~ "RESTRICT ]" #~ msgstr "" #~ "DROP OPERATOR CLASS [IF EXISTS ] nom\n" #~ " USING m�thode_indexage [ CASCADE | RESTRICT ]" + #~ msgid "" #~ "DROP OPERATOR FAMILY [ IF EXISTS ] name USING index_method [ CASCADE | " #~ "RESTRICT ]" #~ msgstr "" #~ "DROP OPERATOR FAMILY [IF EXISTS ] nom\n" #~ " USING m�thode_indexage [ CASCADE | RESTRICT ]" + #~ msgid "DROP OWNED BY name [, ...] [ CASCADE | RESTRICT ]" #~ msgstr "DROP OWNED BY nom [, ...] [ CASCADE | RESTRICT ]" + #~ msgid "DROP ROLE [ IF EXISTS ] name [, ...]" #~ msgstr "DROP ROLE [IF EXISTS ] nom [, ...]" + #~ msgid "DROP RULE [ IF EXISTS ] name ON relation [ CASCADE | RESTRICT ]" #~ msgstr "DROP RULE [IF EXISTS ] nom ON relation [ CASCADE | RESTRICT ]" + #~ msgid "DROP SCHEMA [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" #~ msgstr "DROP SCHEMA [IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" + #~ msgid "DROP SEQUENCE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" #~ msgstr "DROP SEQUENCE [IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" + #~ msgid "DROP SERVER [ IF EXISTS ] servername [ CASCADE | RESTRICT ]" #~ msgstr "DROP SERVER [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" + #~ msgid "DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" #~ msgstr "DROP TABLE [IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" + #~ msgid "DROP TABLESPACE [ IF EXISTS ] tablespacename" #~ msgstr "DROP TABLESPACE [IF EXISTS ] nom_tablespace" + #~ msgid "" #~ "DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] name [ CASCADE | RESTRICT ]" #~ msgstr "" #~ "DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" + #~ msgid "" #~ "DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] name [ CASCADE | RESTRICT ]" #~ msgstr "" #~ "DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" + #~ msgid "DROP TEXT SEARCH PARSER [ IF EXISTS ] name [ CASCADE | RESTRICT ]" #~ msgstr "DROP TEXT SEARCH PARSER [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" + #~ msgid "DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] name [ CASCADE | RESTRICT ]" #~ msgstr "DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] nom [ CASCADE | RESTRICT ]" + #~ msgid "DROP TRIGGER [ IF EXISTS ] name ON table [ CASCADE | RESTRICT ]" #~ msgstr "DROP TRIGGER [IF EXISTS ] nom ON table [ CASCADE | RESTRICT ]" + #~ msgid "DROP TYPE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" #~ msgstr "DROP TYPE [IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" + #~ msgid "DROP USER [ IF EXISTS ] name [, ...]" #~ msgstr "DROP USER [IF EXISTS ] nom [, ...]" + #~ msgid "" #~ "DROP USER MAPPING [ IF EXISTS ] FOR { username | USER | CURRENT_USER | " #~ "PUBLIC } SERVER servername" #~ msgstr "" #~ "DROP USER MAPPING [ IF EXISTS ] FOR { nomutilisateur | USER | " #~ "CURRENT_USER | PUBLIC } SERVER nomserveur" + #~ msgid "DROP VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" #~ msgstr "DROP VIEW [IF EXISTS ] nom [, ...] [ CASCADE | RESTRICT ]" + #~ msgid "END [ WORK | TRANSACTION ]" #~ msgstr "END [ WORK | TRANSACTION ]" + #~ msgid "EXECUTE name [ ( parameter [, ...] ) ]" #~ msgstr "EXECUTE nom_plan [ ( param�tre [, ...] ) ]" + #~ msgid "EXPLAIN [ ANALYZE ] [ VERBOSE ] statement" #~ msgstr "EXPLAIN [ ANALYZE ] [ VERBOSE ] instruction" + #~ msgid "" #~ "FETCH [ direction { FROM | IN } ] cursorname\n" #~ "\n" @@ -5984,6 +6574,7 @@ msgstr "le processus fils a quitt #~ " BACKWARD\n" #~ " BACKWARD nombre\n" #~ " BACKWARD ALL" + #~ msgid "" #~ "GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | " #~ "TRIGGER }\n" @@ -6080,6 +6671,7 @@ msgstr "le processus fils a quitt #~ " TO { [ GROUP ] nom_r�le | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" #~ "\n" #~ "GRANT r�le [, ...] TO nom_r�le [, ...] [ WITH ADMIN OPTION ]" + #~ msgid "" #~ "INSERT INTO table [ ( column [, ...] ) ]\n" #~ " { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) " @@ -6090,10 +6682,13 @@ msgstr "le processus fils a quitt #~ " { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) " #~ "[, ...] | requ�te }\n" #~ " [ RETURNING * | expression_sortie [ [ AS ] nom_sortie ] [, ...] ]" + #~ msgid "LISTEN name" #~ msgstr "LISTEN nom" + #~ msgid "LOAD 'filename'" #~ msgstr "LOAD 'nom_de_fichier'" + #~ msgid "" #~ "LOCK [ TABLE ] [ ONLY ] name [, ...] [ IN lockmode MODE ] [ NOWAIT ]\n" #~ "\n" @@ -6109,20 +6704,28 @@ msgstr "le processus fils a quitt #~ "\n" #~ " ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n" #~ " | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE" + #~ msgid "MOVE [ direction { FROM | IN } ] cursorname" #~ msgstr "MOVE [ direction { FROM | IN } ] nom_de_curseur" + #~ msgid "NOTIFY name" #~ msgstr "NOTIFY nom" + #~ msgid "PREPARE name [ ( datatype [, ...] ) ] AS statement" #~ msgstr "PREPARE nom_plan [ ( type_donn�es [, ...] ) ] AS instruction" + #~ msgid "PREPARE TRANSACTION transaction_id" #~ msgstr "PREPARE TRANSACTION id_transaction" + #~ msgid "REASSIGN OWNED BY old_role [, ...] TO new_role" #~ msgstr "REASSIGN OWNED BY ancien_role [, ...] TO nouveau_role" + #~ msgid "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } name [ FORCE ]" #~ msgstr "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } nom [ FORCE ]" + #~ msgid "RELEASE [ SAVEPOINT ] savepoint_name" #~ msgstr "RELEASE [ SAVEPOINT ] nom_retour" + #~ msgid "" #~ "REVOKE [ GRANT OPTION FOR ]\n" #~ " { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | " @@ -6263,12 +6866,16 @@ msgstr "le processus fils a quitt #~ "REVOKE [ ADMIN OPTION FOR ]\n" #~ " role [, ...] FROM nom_r�le [, ...]\n" #~ " [ CASCADE | RESTRICT ]" + #~ msgid "ROLLBACK [ WORK | TRANSACTION ]" #~ msgstr "ROLLBACK [ WORK | TRANSACTION ]" + #~ msgid "ROLLBACK PREPARED transaction_id" #~ msgstr "ROLLBACK PREPARED id_transaction" + #~ msgid "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_name" #~ msgstr "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] nom_retour" + #~ msgid "" #~ "[ WITH [ RECURSIVE ] with_query [, ...] ]\n" #~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" @@ -6340,6 +6947,7 @@ msgstr "le processus fils a quitt #~ " nom_requ�te_with [ ( nom_colonne [, ...] ) ] AS ( select )\n" #~ "\n" #~ "TABLE { [ ONLY ] nom_table [ * ] | nom_requ�te_with }" + #~ msgid "" #~ "[ WITH [ RECURSIVE ] with_query [, ...] ]\n" #~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" @@ -6374,6 +6982,7 @@ msgstr "le processus fils a quitt #~ " [ OFFSET d�but [ ROW | ROWS ] ]\n" #~ " [ FETCH { FIRST | NEXT } [ total ] { ROW | ROWS } ONLY ]\n" #~ " [ FOR { UPDATE | SHARE } [ OF nom_table [, ...] ] [ NOWAIT ] [...] ]" + #~ msgid "" #~ "SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | " #~ "'value' | DEFAULT }\n" @@ -6382,8 +6991,10 @@ msgstr "le processus fils a quitt #~ "SET [ SESSION | LOCAL ] param�tre { TO | = } { valeur | 'valeur' | " #~ "DEFAULT }\n" #~ "SET [ SESSION | LOCAL ] TIME ZONE { zone_horaire | LOCAL | DEFAULT }" + #~ msgid "SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }" #~ msgstr "SET CONSTRAINTS { ALL | nom [, ...] } { DEFERRED | IMMEDIATE }" + #~ msgid "" #~ "SET [ SESSION | LOCAL ] ROLE rolename\n" #~ "SET [ SESSION | LOCAL ] ROLE NONE\n" @@ -6392,6 +7003,7 @@ msgstr "le processus fils a quitt #~ "SET [ SESSION | LOCAL ] ROLE nom_r�le\n" #~ "SET [ SESSION | LOCAL ] ROLE NONE\n" #~ "RESET ROLE" + #~ msgid "" #~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION username\n" #~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n" @@ -6400,6 +7012,7 @@ msgstr "le processus fils a quitt #~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION nom_utilisateur\n" #~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n" #~ "RESET SESSION AUTHORIZATION" + #~ msgid "" #~ "SET TRANSACTION transaction_mode [, ...]\n" #~ "SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [, ...]\n" @@ -6418,12 +7031,14 @@ msgstr "le processus fils a quitt #~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ |\n" #~ " READ COMMITTED | READ UNCOMMITTED }\n" #~ " READ WRITE | READ ONLY" + #~ msgid "" #~ "SHOW name\n" #~ "SHOW ALL" #~ msgstr "" #~ "SHOW nom\n" #~ "SHOW ALL" + #~ msgid "" #~ "START TRANSACTION [ transaction_mode [, ...] ]\n" #~ "\n" @@ -6440,14 +7055,17 @@ msgstr "le processus fils a quitt #~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ |\n" #~ " READ COMMITTED | READ UNCOMMITTED }\n" #~ " READ WRITE | READ ONLY" + #~ msgid "" #~ "TRUNCATE [ TABLE ] [ ONLY ] name [, ... ]\n" #~ " [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]" #~ msgstr "" #~ "TRUNCATE [ TABLE ] [ ONLY ] nom [, ... ]\n" #~ " [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]" + #~ msgid "UNLISTEN { name | * }" #~ msgstr "UNLISTEN { nom | * }" + #~ msgid "" #~ "UPDATE [ ONLY ] table [ [ AS ] alias ]\n" #~ " SET { column = { expression | DEFAULT } |\n" @@ -6464,6 +7082,7 @@ msgstr "le processus fils a quitt #~ " [ FROM liste_from ]\n" #~ " [ WHERE condition | WHERE CURRENT OF nom_curseur ]\n" #~ " [ RETURNING * | expression_sortie [ [ AS ] nom_sortie ] [, ...] ]" + #~ msgid "" #~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]\n" #~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column " @@ -6472,6 +7091,7 @@ msgstr "le processus fils a quitt #~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]\n" #~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table [ (colonne " #~ "[, ...] ) ] ]" + #~ msgid "" #~ "VALUES ( expression [, ...] ) [, ...]\n" #~ " [ ORDER BY sort_expression [ ASC | DESC | USING operator ] [, ...] ]\n" @@ -6484,14 +7104,16 @@ msgstr "le processus fils a quitt #~ " [ LIMIT { total | ALL } ]\n" #~ " [ OFFSET d�but [ ROW | ROWS ] ]\n" #~ " [ FETCH { FIRST | NEXT } [ total ] { ROW | ROWS } ONLY ]" + #~ msgid " \"%s\" IN %s %s" #~ msgstr " \"%s\" DANS %s %s" + #~ msgid "(1 row)" + #~ msgid_plural "(%lu rows)" #~ msgstr[0] "(1 ligne)" #~ msgstr[1] "(%lu lignes)" -#~ msgid " \\df[S+] [PATTERN] list functions\n" -#~ msgstr " \\df[S+] [MOD�LE] affiche la liste des fonctions\n" + #~ msgid "" #~ " \\d{t|i|s|v|S} [PATTERN] (add \"+\" for more detail)\n" #~ " list tables/indexes/sequences/views/system tables\n" @@ -6499,16 +7121,19 @@ msgstr "le processus fils a quitt #~ " \\d{t|i|s|v|S} [MOD�LE] (ajouter � + � pour plus de d�tails)\n" #~ " affiche la liste des\n" #~ " tables/index/s�quences/vues/tables syst�me\n" + #~ msgid " \\db [PATTERN] list tablespaces (add \"+\" for more detail)\n" #~ msgstr "" #~ " \\db [MOD�LE] affiche la liste des tablespaces (ajouter � + � " #~ "pour\n" #~ " plus de d�tails)\n" + #~ msgid " \\df [PATTERN] list functions (add \"+\" for more detail)\n" #~ msgstr "" #~ " \\df [MOD�LE] affiche la liste des fonctions (ajouter � + � " #~ "pour\n" #~ " plus de d�tails)\n" + #~ msgid "" #~ " \\dFd [PATTERN] list text search dictionaries (add \"+\" for more " #~ "detail)\n" @@ -6516,26 +7141,31 @@ msgstr "le processus fils a quitt #~ " \\dFd [MOD�LE] affiche la liste des dictionnaires de la " #~ "recherche\n" #~ " de texte (ajouter � + � pour plus de d�tails)\n" + #~ msgid "" #~ " \\dFp [PATTERN] list text search parsers (add \"+\" for more detail)\n" #~ msgstr "" #~ " \\dFp [MOD�LE] affiche la liste des analyseurs de la recherche " #~ "de\n" #~ " texte (ajouter � + � pour plus de d�tails)\n" + #~ msgid " \\dn [PATTERN] list schemas (add \"+\" for more detail)\n" #~ msgstr "" #~ " \\dn [MOD�LE] affiche la liste des sch�mas (ajouter � + � pour\n" #~ " plus de d�tails)\n" + #~ msgid " \\dT [PATTERN] list data types (add \"+\" for more detail)\n" #~ msgstr "" -#~ " \\dT [MOD�LE] affiche la liste des types de donn�es (ajouter � + " -#~ "�\n" +#~ " \\dT [MOD�LE] affiche la liste des types de donn�es (ajouter � " +#~ "+ �\n" #~ " pour plus de d�tails)\n" + #~ msgid " \\l list all databases (add \"+\" for more detail)\n" #~ msgstr "" -#~ " \\l affiche la liste des bases de donn�es (ajouter � + " -#~ "�\n" +#~ " \\l affiche la liste des bases de donn�es (ajouter � " +#~ "+ �\n" #~ " pour plus de d�tails)\n" + #~ msgid "" #~ " \\z [PATTERN] list table, view, and sequence access privileges (same " #~ "as \\dp)\n" @@ -6543,8 +7173,10 @@ msgstr "le processus fils a quitt #~ " \\z [MOD�LE] affiche la liste des privil�ges d'acc�s aux " #~ "tables,\n" #~ " vues et s�quences (identique � \\dp)\n" + #~ msgid "Copy, Large Object\n" #~ msgstr "Copie, � Large Object �\n" + #~ msgid "" #~ "Welcome to %s %s (server %s), the PostgreSQL interactive terminal.\n" #~ "\n" @@ -6552,12 +7184,14 @@ msgstr "le processus fils a quitt #~ "Bienvenue dans %s %s (serveur %s), l'interface interactive de " #~ "PostgreSQL.\n" #~ "\n" + #~ msgid "" #~ "Welcome to %s %s, the PostgreSQL interactive terminal.\n" #~ "\n" #~ msgstr "" #~ "Bienvenue dans %s %s, l'interface interactive de PostgreSQL.\n" #~ "\n" + #~ msgid "" #~ "WARNING: You are connected to a server with major version %d.%d,\n" #~ "but your %s client is major version %d.%d. Some backslash commands,\n" @@ -6570,12 +7204,15 @@ msgstr "le processus fils a quitt #~ "commandes avec antislashs, comme \\d, peuvent ne pas fonctionner\n" #~ "correctement.\n" #~ "\n" + #~ msgid "Access privileges for database \"%s\"" #~ msgstr "Droits d'acc�s pour la base de donn�es � %s �" + #~ msgid "?%c? \"%s.%s\"" #~ msgstr "?%c? � %s.%s �" + #~ msgid " \"%s\"" #~ msgstr " � %s �" + #~ msgid "ALTER VIEW name RENAME TO newname" #~ msgstr "ALTER VIEW nom RENAME TO nouveau_nom" - diff --git a/src/bin/psql/po/it.po b/src/bin/psql/po/it.po new file mode 100644 index 0000000000..f3cfaa919a --- /dev/null +++ b/src/bin/psql/po/it.po @@ -0,0 +1,4017 @@ +# +# Translation of psql to Italian +# PostgreSQL Project +# +# Associazione Culturale ITPUG - Italian PostgreSQL Users Group +# http://www.itpug.org/ - info@itpug.org +# +# Traduttori: +# * Cosimo D'Arcangelo +# * Massimo Mangoni +# * Daniele Varrazzo +# +# Revisori +# * Emanuele Zamprogno +# +# Traduttori precedenti: +# * Mirko Tebaldi +# * Gabriele Bartolini +# +# Copyright (c) 2010, Associazione Culturale ITPUG +# Distributed under the same license of the PostgreSQL project +# +msgid "" +msgstr "" +"Project-Id-Version: psql (PostgreSQL) 9.1\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2013-01-29 13:56+0000\n" +"PO-Revision-Date: 2013-01-23 11:20+0100\n" +"Last-Translator: Daniele Varrazzo \n" +"Language-Team: Gruppo traduzioni ITPUG \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-SourceCharset: utf-8\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Poedit 1.5.4\n" + +#: command.c:113 +#, c-format +msgid "Invalid command \\%s. Try \\? for help.\n" +msgstr "Comando errato \\%s. Prova \\? per la guida.\n" + +#: command.c:115 +#, c-format +msgid "invalid command \\%s\n" +msgstr "comando errato \\%s\n" + +#: command.c:126 +#, c-format +msgid "\\%s: extra argument \"%s\" ignored\n" +msgstr "\\%s: parametro in eccesso \"%s\" ignorato\n" + +#: command.c:268 +#, c-format +msgid "could not get home directory: %s\n" +msgstr "directory home non trovata: %s\n" + +#: command.c:284 +#, c-format +msgid "\\%s: could not change directory to \"%s\": %s\n" +msgstr "\\%s: spostamento della directory a \"%s\" fallito: %s\n" + +#: command.c:305 common.c:493 common.c:773 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "Al momento non sei connesso ad un database.\n" + +#: command.c:312 +#, c-format +msgid "You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n" +msgstr "Sei collegato al database \"%s\" con nome utente \"%s\" tramite il socket in \"%s\" porta \"%s\".\n" + +#: command.c:315 +#, c-format +msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n" +msgstr "Sei collegato al database \"%s\" con nome utente \"%s\" sull'host \"%s\" porta \"%s\".\n" + +#: command.c:339 common.c:940 +#, c-format +msgid "Time: %.3f ms\n" +msgstr "Tempo: %.3f ms\n" + +#: command.c:524 command.c:594 command.c:1308 +msgid "no query buffer\n" +msgstr "Nessun buffer query\n" + +#: command.c:557 command.c:2530 +#, c-format +msgid "invalid line number: %s\n" +msgstr "numero di riga non valido: \"%s\"\n" + +#: command.c:588 +#, c-format +msgid "The server (version %d.%d) does not support editing function source.\n" +msgstr "Il server (versione %d.%d) non supporta la modifica dei sorgenti delle funzioni.\n" + +#: command.c:668 +msgid "No changes" +msgstr "Nessuna modifica" + +#: command.c:722 +#, c-format +msgid "%s: invalid encoding name or conversion procedure not found\n" +msgstr "%s: nome codifica errato oppure non esiste una procedura di conversione\n" + +#: command.c:801 command.c:835 command.c:849 command.c:866 command.c:970 +#: command.c:1020 command.c:1288 command.c:1319 +#, c-format +msgid "\\%s: missing required argument\n" +msgstr "\\%s: parametro richiesto mancante\n" + +#: command.c:898 +msgid "Query buffer is empty." +msgstr "Il buffer query è vuoto." + +#: command.c:908 +msgid "Enter new password: " +msgstr "Inserire la nuova password: " + +#: command.c:909 +msgid "Enter it again: " +msgstr "Conferma password: " + +#: command.c:913 +#, c-format +msgid "Passwords didn't match.\n" +msgstr "Le password non corrispondono.\n" + +#: command.c:931 +#, c-format +msgid "Password encryption failed.\n" +msgstr "Criptazione password fallita.\n" + +#: command.c:999 command.c:1111 command.c:1293 +#, c-format +msgid "\\%s: error\n" +msgstr "\\%s: errore\n" + +#: command.c:1040 +msgid "Query buffer reset (cleared)." +msgstr "Buffer query resettato (svuotato)." + +#: command.c:1064 +#, c-format +msgid "Wrote history to file \"%s/%s\".\n" +msgstr "Salvata cronologia nel file \"%s/%s\".\n" + +#: command.c:1102 common.c:52 common.c:66 common.c:90 input.c:209 +#: mainloop.c:72 mainloop.c:234 print.c:137 print.c:151 +#, c-format +msgid "out of memory\n" +msgstr "memoria esaurita\n" + +#: command.c:1132 +#, c-format +msgid "The server (version %d.%d) does not support showing function source.\n" +msgstr "Il server (versione %d.%d) non supporta mostrare i sorgenti delle funzioni.\n" + +#: command.c:1138 +msgid "function name is required\n" +msgstr "il nome della funzione è richiesto\n" + +#: command.c:1273 +msgid "Timing is on." +msgstr "Controllo tempo attivato" + +#: command.c:1275 +msgid "Timing is off." +msgstr "Controllo tempo disattivato." + +#: command.c:1336 command.c:1356 command.c:1918 command.c:1925 command.c:1934 +#: command.c:1944 command.c:1953 command.c:1967 command.c:1984 command.c:2022 +#: common.c:137 copy.c:283 copy.c:361 +#, c-format +msgid "%s: %s\n" +msgstr "%s: %s\n" + +#: command.c:1438 startup.c:159 +msgid "Password: " +msgstr "Password: " + +#: command.c:1445 startup.c:162 startup.c:164 +#, c-format +msgid "Password for user %s: " +msgstr "Inserisci la password per l'utente %s: " + +#: command.c:1564 command.c:2564 common.c:183 common.c:460 common.c:525 +#: common.c:816 common.c:841 common.c:925 copy.c:432 copy.c:477 copy.c:607 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.c:1568 +msgid "Previous connection kept\n" +msgstr "Connessione precedente mantenuta\n" + +#: command.c:1572 +#, c-format +msgid "\\connect: %s" +msgstr "\\connect: %s" + +#: command.c:1605 +#, c-format +msgid "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n" +msgstr "Adesso sei collegato al database \"%s\" con nome utente \"%s\" tramite socket \"%s\" porta \"%s\".\n" + +#: command.c:1608 +#, c-format +msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n" +msgstr "Adesso sei collegato al database \"%s\" con nome utente \"%s\" sull'host \"%s\" porta \"%s\".\n" + +#: command.c:1612 +#, c-format +msgid "You are now connected to database \"%s\" as user \"%s\".\n" +msgstr "Sei collegato al database \"%s\" con nome utente \"%s\".\n" + +#: command.c:1646 +#, c-format +msgid "%s (%s, server %s)\n" +msgstr "%s (%s, server %s)\n" + +#: command.c:1654 +#, c-format +msgid "" +"WARNING: %s version %d.%d, server version %d.%d.\n" +" Some psql features might not work.\n" +msgstr "" +"ATTENZIONE: versione %s %d.%d, versione server %d.%d.\n" +" Alcune caratteristiche di psql potrebbero non funzionare.\n" + +#: command.c:1684 +#, c-format +msgid "SSL connection (cipher: %s, bits: %i)\n" +msgstr "connessione SSL (cifratura: %s, bit: %i)\n" + +#: command.c:1694 +#, c-format +msgid "SSL connection (unknown cipher)\n" +msgstr "connessione SSL (codice sconosciuto)\n" + +#: command.c:1715 +#, c-format +msgid "" +"WARNING: Console code page (%u) differs from Windows code page (%u)\n" +" 8-bit characters might not work correctly. See psql reference\n" +" page \"Notes for Windows users\" for details.\n" +msgstr "" +"ATTENZIONE: Il code page della console (%u) differisce dal code page\n" +" di Windows (%u). I caratteri a 8-bit potrebbero non\n" +" funzionare correttamente. Vedi le pagine di riferimento\n" +" psql \"Note per utenti Windows\" per i dettagli.\n" + +#: command.c:1799 +msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number\n" +msgstr "la variabile di ambiente PSQL_EDITOR_LINENUMBER_ARG deve specificare un numero di riga\n" + +#: command.c:1836 +#, c-format +msgid "could not start editor \"%s\"\n" +msgstr "avvio dell'editor \"%s\" fallito\n" + +#: command.c:1838 +msgid "could not start /bin/sh\n" +msgstr "avvio di /bin/sh fallito\n" + +#: command.c:1876 +#, c-format +msgid "could not locate temporary directory: %s\n" +msgstr "directory temporanea non trovata: %s\n" + +#: command.c:1903 +#, c-format +msgid "could not open temporary file \"%s\": %s\n" +msgstr "apertura del file temporaneo \"%s\" fallita: %s\n" + +#: command.c:2133 +msgid "\\pset: allowed formats are unaligned, aligned, wrapped, html, latex, troff-ms\n" +msgstr "\\pset: i formati disponibili sono unaligned, aligned, wrapped, html, latex, troff-ms\n" + +#: command.c:2138 +#, c-format +msgid "Output format is %s.\n" +msgstr "Il formato output è %s.\n" + +#: command.c:2154 +msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" +msgstr "\\pset: gli stili di linea permessi sono ascii, old-ascii, unicode\n" + +#: command.c:2159 +#, c-format +msgid "Line style is %s.\n" +msgstr "Lo stile del bordo è %s.\n" + +#: command.c:2170 +#, c-format +msgid "Border style is %d.\n" +msgstr "Lo stile del bordo è %d.\n" + +#: command.c:2182 +#, c-format +msgid "Expanded display is on.\n" +msgstr "Visualizzazione espansa attivata.\n" + +#: command.c:2183 +#, c-format +msgid "Expanded display is off.\n" +msgstr "Visualizzazione espansa disattivata.\n" + +#: command.c:2196 +msgid "Showing locale-adjusted numeric output." +msgstr "L'output numerico visualizzato è corretto secondo il locale." + +#: command.c:2198 +msgid "Locale-adjusted numeric output is off." +msgstr "Correzione dell'output numerico secondo il locale disattivata." + +#: command.c:2211 +#, c-format +msgid "Null display is \"%s\".\n" +msgstr "La visualizzazione dei Null è \"%s\".\n" + +#: command.c:2223 +#, c-format +msgid "Field separator is \"%s\".\n" +msgstr "Il separatore di campi è \"%s\".\n" + +#: command.c:2237 +#, c-format +msgid "Record separator is ." +msgstr "Il separatore di record è ." + +#: command.c:2239 +#, c-format +msgid "Record separator is \"%s\".\n" +msgstr "Il separatore di record è \"%s\".\n" + +#: command.c:2253 +msgid "Showing only tuples." +msgstr "Visualizzazione esclusiva dati attivata." + +#: command.c:2255 +msgid "Tuples only is off." +msgstr "Visualizzazione esclusiva dati disattivata." + +#: command.c:2271 +#, c-format +msgid "Title is \"%s\".\n" +msgstr "Il titolo è \"%s\".\n" + +#: command.c:2273 +#, c-format +msgid "Title is unset.\n" +msgstr "Titolo non assegnato.\n" + +#: command.c:2289 +#, c-format +msgid "Table attribute is \"%s\".\n" +msgstr "L'attributo tabella è \"%s\".\n" + +#: command.c:2291 +#, c-format +msgid "Table attributes unset.\n" +msgstr "Attributi tabelle non specificati.\n" + +#: command.c:2312 +msgid "Pager is used for long output." +msgstr "Usa la paginazione per risultati estesi." + +#: command.c:2314 +msgid "Pager is always used." +msgstr "Paginazione sempre attiva." + +#: command.c:2316 +msgid "Pager usage is off." +msgstr "Paginazione disattivata." + +#: command.c:2330 +msgid "Default footer is on." +msgstr "Piè di pagina attivato." + +#: command.c:2332 +msgid "Default footer is off." +msgstr "Piè di pagina disattivato." + +#: command.c:2343 +#, c-format +msgid "Target width for \"wrapped\" format is %d.\n" +msgstr "La larghezza di destinazione per il formato \"wrapped\" è %d.\n" + +#: command.c:2348 +#, c-format +msgid "\\pset: unknown option: %s\n" +msgstr "\\pset: opzione sconosciuta: %s\n" + +#: command.c:2402 +msgid "\\!: failed\n" +msgstr "\\!: fallita\n" + +#: common.c:45 +#, c-format +msgid "%s: pg_strdup: cannot duplicate null pointer (internal error)\n" +msgstr "%s: pg_strdup: non è possibile duplicare un puntatore nullo (errore interno)\n" + +#: common.c:343 +msgid "connection to server was lost\n" +msgstr "connessione al server persa\n" + +#: common.c:347 +msgid "The connection to the server was lost. Attempting reset: " +msgstr "Connessione al server persa. Tentativo di reset: " + +#: common.c:352 +msgid "Failed.\n" +msgstr "Fallito.\n" + +#: common.c:359 +msgid "Succeeded.\n" +msgstr "Riuscito.\n" + +#: common.c:499 common.c:506 common.c:799 +#, c-format +msgid "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" +msgstr "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" + +#: common.c:560 +#, c-format +msgid "Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n" +msgstr "Notifica asincrona \"%s\" con payload \"%s\" ricevuta dal processo server con PID %d.\n" + +#: common.c:563 +#, c-format +msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n" +msgstr "Notifica asincrona \"%s\" ricevuta dal processo server con PID %d.\n" + +#: common.c:781 +#, c-format +msgid "" +"***(Single step mode: verify command)*******************************************\n" +"%s\n" +"***(press return to proceed or enter x and return to cancel)********************\n" +msgstr "" +"***(Modalità passo singolo: verifica comando)***********************************\n" +"%s\n" +"***(premi invio per procedere oppure digita x ed invio per annullare)***********\n" + +#: common.c:832 +#, c-format +msgid "The server (version %d.%d) does not support savepoints for ON_ERROR_ROLLBACK.\n" +msgstr "Questa versione (%d.%d) del server non supporta savepoint per ON_ERROR_ROLLBACK..\n" + +#: copy.c:96 +msgid "\\copy: arguments required\n" +msgstr "\\copy: parametri richiesti\n" + +#: copy.c:228 +#, c-format +msgid "\\copy: parse error at \"%s\"\n" +msgstr "\\copy: errore di sintassi a \"%s\"\n" + +#: copy.c:230 +msgid "\\copy: parse error at end of line\n" +msgstr "\\copy: errore di sintassi a fine riga\n" + +#: copy.c:294 +#, c-format +msgid "%s: cannot copy from/to a directory\n" +msgstr "%s: non è possibile copiare da/a una directory\n" + +#: copy.c:331 +#, c-format +msgid "\\copy: %s" +msgstr "\\copy: %s" + +#: copy.c:335 copy.c:349 +#, c-format +msgid "\\copy: unexpected response (%d)\n" +msgstr "\\copy: risposta imprevista (%d)\n" + +#: copy.c:353 +msgid "trying to exit copy mode" +msgstr "tentativo di uscita dalla modalità copy" + +#: copy.c:407 copy.c:417 +#, c-format +msgid "could not write COPY data: %s\n" +msgstr "scrittura dei dati COPY fallita: %s\n" + +#: copy.c:424 +#, c-format +msgid "COPY data transfer failed: %s" +msgstr "trasferimento dei dati COPY fallito: %s" + +#: copy.c:472 +msgid "canceled by user" +msgstr "annullata dall'utente" + +#: copy.c:487 +msgid "" +"Enter data to be copied followed by a newline.\n" +"End with a backslash and a period on a line by itself." +msgstr "" +"Inserire i dati da copiare seguiti da un \"a capo\".\n" +"Terminare con un backslash ed un punto su una singola riga." + +#: copy.c:600 +msgid "aborted because of read failure" +msgstr "interrotto a causa di lettura non riuscita" + +#: help.c:48 +msgid "on" +msgstr "attivato" + +#: help.c:48 +msgid "off" +msgstr "disattivato" + +#: help.c:70 +#, c-format +msgid "could not get current user name: %s\n" +msgstr "non è stato possibile determinare il nome utente: %s\n" + +#: help.c:82 +#, c-format +msgid "" +"psql is the PostgreSQL interactive terminal.\n" +"\n" +msgstr "" +"psql è il terminale interattivo per PostgreSQL.\n" +"\n" + +#: help.c:83 +#, c-format +msgid "Usage:\n" +msgstr "Utilizzo:\n" + +#: help.c:84 +#, c-format +msgid "" +" psql [OPTION]... [DBNAME [USERNAME]]\n" +"\n" +msgstr "" +" psql [OPZIONI]... [NOME DB [NOME UTENTE]]\n" +"\n" + +#: help.c:86 +#, c-format +msgid "General options:\n" +msgstr "Opzioni generali:\n" + +#: help.c:91 +#, c-format +msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n" +msgstr "" +" -c, --command=COMANDO esegue solamente un comando singolo (SQL o interno)\n" +" e termina\n" + +#: help.c:92 +#, c-format +msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" +msgstr "" +" -d, --dbname=NOMEDB specifica il nome del database a cui connettersi\n" +" (default: \"%s\")\n" + +#: help.c:93 +#, c-format +msgid " -f, --file=FILENAME execute commands from file, then exit\n" +msgstr " -f, --file=NOME FILE esegui i comandi da un file ed esci\n" + +#: help.c:94 +#, c-format +msgid " -l, --list list available databases, then exit\n" +msgstr " -l --list elenca i database disponibili ed esci\n" + +#: help.c:95 +#, c-format +msgid "" +" -v, --set=, --variable=NAME=VALUE\n" +" set psql variable NAME to VALUE\n" +msgstr "" +" -v, --set=, --veariable=NOME=VALORE\n" +" imposta la variabile psql NOME a VALORE\n" + +#: help.c:97 +#, c-format +msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" +msgstr " -X, --no-psqlrc non leggere il file di avvio (~/.psqlrc)\n" + +#: help.c:98 +#, c-format +msgid "" +" -1 (\"one\"), --single-transaction\n" +" execute command file as a single transaction\n" +msgstr "" +" -1 (\"uno\"), --single-transaction\n" +" esegui il file di comandi in un'unica transazione\n" + +#: help.c:100 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help mostra questo aiuto ed esci\n" + +#: help.c:101 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version mostra informazioni sulla versione ed esci\n" + +#: help.c:103 +#, c-format +msgid "" +"\n" +"Input and output options:\n" +msgstr "" +"\n" +"Opzioni di input e output:\n" + +#: help.c:104 +#, c-format +msgid " -a, --echo-all echo all input from script\n" +msgstr " -a, --echo-all mostra tutti gli input dallo script\n" + +#: help.c:105 +#, c-format +msgid " -e, --echo-queries echo commands sent to server\n" +msgstr " -e, --echo-queries mostra i comandi inviati al server\n" + +#: help.c:106 +#, c-format +msgid " -E, --echo-hidden display queries that internal commands generate\n" +msgstr " -E, --echo-hidden mostra le query generate dai comandi interni\n" + +#: help.c:107 +#, c-format +msgid " -L, --log-file=FILENAME send session log to file\n" +msgstr " -L, --log-file=NOME_FILE invia log di sessione al file\n" + +#: help.c:108 +#, c-format +msgid " -n, --no-readline disable enhanced command line editing (readline)\n" +msgstr "" +" -n, --no-readline disabilita la modifica avanzata della riga\n" +" di comando (readline)\n" + +#: help.c:109 +#, c-format +msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" +msgstr "" +" -o, --output=NOME_FILE reindirizza i risultati al file specificato\n" +" (oppure |pipe)\n" + +#: help.c:110 +#, c-format +msgid " -q, --quiet run quietly (no messages, only query output)\n" +msgstr "" +" -q, --quiet esegui in modo silenzioso (nessun messaggio, solo\n" +" risultati query)\n" + +#: help.c:111 +#, c-format +msgid " -s, --single-step single-step mode (confirm each query)\n" +msgstr " -s, --single-step modalità passo singolo (conferma ogni query)\n" + +#: help.c:112 +#, c-format +msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n" +msgstr "" +" -S, --single-line modalità riga singola (la fine riga termina\n" +" il comando SQL)\n" + +#: help.c:114 +#, c-format +msgid "" +"\n" +"Output format options:\n" +msgstr "" +"\n" +"Opzioni formato output:\n" + +#: help.c:115 +#, c-format +msgid " -A, --no-align unaligned table output mode\n" +msgstr " -A, --no-align modo output tabelle disallineato\n" + +#: help.c:116 +#, c-format +msgid "" +" -F, --field-separator=STRING\n" +" set field separator (default: \"%s\")\n" +msgstr "" +" -F, --field-separator=STRINGA\n" +" imposta il separatore di campo (default: \"%s\")\n" + +#: help.c:119 +#, c-format +msgid " -H, --html HTML table output mode\n" +msgstr " -H, --html modo output tabelle in HTML\n" + +#: help.c:120 +#, c-format +msgid " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n" +msgstr "" +" -P, --pset=VAR[=ARG] imposta l'opzione di stampa VAR ad ARG (vedi anche\n" +" il comando \\pset)\n" + +#: help.c:121 +#, c-format +msgid "" +" -R, --record-separator=STRING\n" +" set record separator (default: newline)\n" +msgstr "" +" -R, --record-separator=STRINGA\n" +" imposta il separatore di record (default: nuova riga)\n" + +#: help.c:123 +#, c-format +msgid " -t, --tuples-only print rows only\n" +msgstr " -t, --tuples-only mostra solo le righe\n" + +#: help.c:124 +#, c-format +msgid " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n" +msgstr "" +" -T, --table-attr=TESTO imposta gli attributi delle tabelle HTML\n" +" (es: larghezza, bordo)\n" + +#: help.c:125 +#, c-format +msgid " -x, --expanded turn on expanded table output\n" +msgstr " -x, --expanded attiva output tabelle espanso\n" + +#: help.c:127 +#, c-format +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Opzioni di connessione:\n" + +#: help.c:130 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n" +msgstr "" +" -h, --host=HOSTNAME host server del database o directory socket\n" +" (default: \"%s\")\n" + +#: help.c:131 +msgid "local socket" +msgstr "sockect locale" + +#: help.c:134 +#, c-format +msgid " -p, --port=PORT database server port (default: \"%s\")\n" +msgstr " -p, --port=PORTA porta di ascolto del database (default: \"%s\")\n" + +#: help.c:140 +#, c-format +msgid " -U, --username=USERNAME database user name (default: \"%s\")\n" +msgstr " -U, --username=UTENTE nome utente del database (default: \"%s\")\n" + +#: help.c:141 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password non chiedere mai le password\n" + +#: help.c:142 +#, c-format +msgid " -W, --password force password prompt (should happen automatically)\n" +msgstr "" +" -W, --password forza la richiesta di una password (dovrebbe essere\n" +" automatico)\n" + +#: help.c:144 +#, c-format +msgid "" +"\n" +"For more information, type \"\\?\" (for internal commands) or \"\\help\" (for SQL\n" +"commands) from within psql, or consult the psql section in the PostgreSQL\n" +"documentation.\n" +"\n" +msgstr "" +"\n" +"Per maggiori informazioni digita \"\\?\" (per comandi interni) oppure \"\\help\"\n" +"per comandi SQL) da psql, oppure consultare la sezione psql nella\n" +"documentazione PostgreSQL.\n" +"\n" + +#: help.c:147 +#, c-format +msgid "Report bugs to .\n" +msgstr "Puoi segnalare eventuali bug a .\n" + +#: help.c:170 +#, c-format +msgid "General\n" +msgstr "Generali\n" + +#: help.c:171 +#, c-format +msgid " \\copyright show PostgreSQL usage and distribution terms\n" +msgstr " \\copyright mostra i termini di uso e distribuzione di PostgreSQL\n" + +#: help.c:172 +#, c-format +msgid " \\g [FILE] or ; execute query (and send results to file or |pipe)\n" +msgstr "" +" \\g [FILE] o ; esegui la query (ed invia i risultati ad un file o\n" +" ad una |pipe)\n" + +#: help.c:173 +#, c-format +msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n" +msgstr "" +" \\h [NOME] mostra aiuto sulla sintassi dei comandi SQL, * mostra\n" +" tutti i comandi\n" + +#: help.c:174 +#, c-format +msgid " \\q quit psql\n" +msgstr " \\q esci da psql\n" + +#: help.c:177 +#, c-format +msgid "Query Buffer\n" +msgstr "Buffer Query\n" + +#: help.c:178 +#, c-format +msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n" +msgstr "" +" \\e [FILE] [RIGA] modifica il buffer della query (o il file) con\n" +" l'editor esterno\n" + +#: help.c:179 +#, c-format +msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" +msgstr "" +" \\ef [NOME_FUN [RIGA]] modifica la definizione della funzione con l'editor\n" +" esterno\n" + +#: help.c:180 +#, c-format +msgid " \\p show the contents of the query buffer\n" +msgstr " \\p mostra i contenuti del buffer query\n" + +#: help.c:181 +#, c-format +msgid " \\r reset (clear) the query buffer\n" +msgstr " \\r reimposta (cancella) il buffer query\n" + +#: help.c:183 +#, c-format +msgid " \\s [FILE] display history or save it to file\n" +msgstr " \\s [FILE] mostra la cronologia salvala in un file\n" + +#: help.c:185 +#, c-format +msgid " \\w FILE write query buffer to file\n" +msgstr " \\w FILE scrivi il buffer query su file\n" + +#: help.c:188 +#, c-format +msgid "Input/Output\n" +msgstr "Input/Output\n" + +#: help.c:189 +#, c-format +msgid " \\copy ... perform SQL COPY with data stream to the client host\n" +msgstr " \\copy ... esegui una SQL COPY con flusso di dati dal client\n" + +#: help.c:190 +#, c-format +msgid " \\echo [STRING] write string to standard output\n" +msgstr " \\echo [STRINGA] stampa la stringa su standard output\n" + +#: help.c:191 +#, c-format +msgid " \\i FILE execute commands from file\n" +msgstr " \\i FILE esegui i comandi dal file\n" + +#: help.c:192 +#, c-format +msgid " \\o [FILE] send all query results to file or |pipe\n" +msgstr "" +" \\o [FILE] invia i risultati della query ad un file oppure\n" +" una |pipe\n" + +#: help.c:193 +#, c-format +msgid " \\qecho [STRING] write string to query output stream (see \\o)\n" +msgstr "" +" \\qecho [STRINGA] scrivi la stringa nello stream di output della query\n" +" (vedi \\o)\n" + +#: help.c:196 +#, c-format +msgid "Informational\n" +msgstr "Informativi\n" + +#: help.c:197 +#, c-format +msgid " (options: S = show system objects, + = additional detail)\n" +msgstr " (opzioni: S = mostra gli oggetti di sistema, + = dettagli addizionali)\n" + +#: help.c:198 +#, c-format +msgid " \\d[S+] list tables, views, and sequences\n" +msgstr " \\d[S+] elenca le tabelle, le viste e le sequenze\n" + +#: help.c:199 +#, c-format +msgid " \\d[S+] NAME describe table, view, sequence, or index\n" +msgstr " \\d[S+] NOME descrive la tabella, vista, sequenza o indice\n" + +#: help.c:200 +#, c-format +msgid " \\da[S] [PATTERN] list aggregates\n" +msgstr " \\da[S] [MODELLO] elenca le funzioni di aggregazione\n" + +#: help.c:201 +#, c-format +msgid " \\db[+] [PATTERN] list tablespaces\n" +msgstr " \\db[+] [MODELLO] elenca i tablespace\n" + +#: help.c:202 +#, c-format +msgid " \\dc[S] [PATTERN] list conversions\n" +msgstr " \\dc[S] [MODELLO] elenca le conversioni di codifica\n" + +#: help.c:203 +#, c-format +msgid " \\dC [PATTERN] list casts\n" +msgstr " \\dC [MODELLO] elenca le conversioni di tipo\n" + +#: help.c:204 +#, c-format +msgid " \\dd[S] [PATTERN] show comments on objects\n" +msgstr " \\dd[S] [MODELLO] mostra i commenti sugli oggetti\n" + +#: help.c:205 +#, c-format +msgid " \\ddp [PATTERN] list default privileges\n" +msgstr " \\ddp [MODELLO] elenca i privilegi predefiniti\n" + +#: help.c:206 +#, c-format +msgid " \\dD[S] [PATTERN] list domains\n" +msgstr " \\dD[S] [MODELLO] elenca i domini\n" + +#: help.c:207 +#, c-format +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [MODELLO] elenca le tabelle esterne\n" + +#: help.c:208 +#, c-format +msgid " \\des[+] [PATTERN] list foreign servers\n" +msgstr " \\des[+] [MODELLO] elenca i server esterni\n" + +#: help.c:209 +#, c-format +msgid " \\deu[+] [PATTERN] list user mappings\n" +msgstr " \\deu[+] [MODELLO] elenca le mappature degli utenti\n" + +#: help.c:210 +#, c-format +msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" +msgstr " \\dew[+] [MODELLO] elenca i wrapper di dati esterni\n" + +#: help.c:211 +#, c-format +msgid " \\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions\n" +msgstr " \\df[antw][S+] [MOD] elenca le funzioni [solo aggr/normali/trigger/finestra]\n" + +#: help.c:212 +#, c-format +msgid " \\dF[+] [PATTERN] list text search configurations\n" +msgstr " \\dF[+] [MODELLO] elenca le configurazioni di ricerca testo\n" + +#: help.c:213 +#, c-format +msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" +msgstr " \\dFd[+] [MODELLO] elenca i dizionari di ricerca testo\n" + +#: help.c:214 +#, c-format +msgid " \\dFp[+] [PATTERN] list text search parsers\n" +msgstr " \\dFp[+] [MODELLO] elenca gli analizzatori di ricerca testo\n" + +#: help.c:215 +#, c-format +msgid " \\dFt[+] [PATTERN] list text search templates\n" +msgstr " \\dFt[+] [MODELLO] elenca i modelli di ricerca di testo\n" + +#: help.c:216 +#, c-format +msgid " \\dg[+] [PATTERN] list roles\n" +msgstr " \\dg[+] [MODELLO] elenca i ruoli\n" + +#: help.c:217 +#, c-format +msgid " \\di[S+] [PATTERN] list indexes\n" +msgstr " \\di[S+] [MODELLO] elenca gli indici\n" + +#: help.c:218 +#, c-format +msgid " \\dl list large objects, same as \\lo_list\n" +msgstr " \\dl elenca i large object, stesso risultato di \\lo_list\n" + +#: help.c:219 +#, c-format +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [MODELLO] elenca i linguaggi procedurali\n" + +#: help.c:220 +#, c-format +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [MODELLO] elenca gli schemi\n" + +#: help.c:221 +#, c-format +msgid " \\do[S] [PATTERN] list operators\n" +msgstr " \\do[S] [MODELLO] elenca gli operatori\n" + +#: help.c:222 +#, c-format +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [MODELLO] elenca gli ordinamenti\n" + +#: help.c:223 +#, c-format +msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n" +msgstr "" +" \\dp [MODELLO] elenca i permessi di accesso alla tabella, vista\n" +" o sequenza\n" + +#: help.c:224 +#, c-format +msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n" +msgstr " \\drds [MOD1 [MOD2]] elenca le impostazioni dei ruoli per database\n" + +#: help.c:225 +#, c-format +msgid " \\ds[S+] [PATTERN] list sequences\n" +msgstr " \\ds[S+] [MODELLO] elenca le sequenze\n" + +#: help.c:226 +#, c-format +msgid " \\dt[S+] [PATTERN] list tables\n" +msgstr " \\dt[S+] [MODELLO] elenca le tabelle\n" + +#: help.c:227 +#, c-format +msgid " \\dT[S+] [PATTERN] list data types\n" +msgstr " \\dT[S+] [MODELLO] elenca i tipi di dato\n" + +#: help.c:228 +#, c-format +msgid " \\du[+] [PATTERN] list roles\n" +msgstr " \\du[+] [MODELLO] elenca i ruoli\n" + +#: help.c:229 +#, c-format +msgid " \\dv[S+] [PATTERN] list views\n" +msgstr " \\dv[S+] [MODELLO] elenca le viste\n" + +#: help.c:230 +#, c-format +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [MODELLO] elenca le tabelle esterne\n" + +#: help.c:231 +#, c-format +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [MODELLO] elenca le estensioni\n" + +#: help.c:232 +#, c-format +msgid " \\l[+] list all databases\n" +msgstr " \\l[+] elenca tutti i database\n" + +#: help.c:233 +#, c-format +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] NOME_FUNZ elenca la definizione della funzione\n" + +#: help.c:234 +#, c-format +msgid " \\z [PATTERN] same as \\dp\n" +msgstr " \\z [MODELLO] uguale a \\dp\n" + +#: help.c:237 +#, c-format +msgid "Formatting\n" +msgstr "Formattazione\n" + +#: help.c:238 +#, c-format +msgid " \\a toggle between unaligned and aligned output mode\n" +msgstr " \\a alterna tra modalità di output allineata e disallineata\n" + +#: help.c:239 +#, c-format +msgid " \\C [STRING] set table title, or unset if none\n" +msgstr "" +" \\C [STRINGA] imposta nome tabella oppure elimina se la stringa\n" +" non è specificata\n" + +#: help.c:240 +#, c-format +msgid " \\f [STRING] show or set field separator for unaligned query output\n" +msgstr "" +" \\f [STRINGA] mostra o imposta il separatore di campo per l'output\n" +" query disallineato\n" + +#: help.c:241 +#, c-format +msgid " \\H toggle HTML output mode (currently %s)\n" +msgstr " \\H cambia modalità HTML (attualmente %s)\n" + +#: help.c:243 +#, c-format +msgid "" +" \\pset NAME [VALUE] set table output option\n" +" (NAME := {format|border|expanded|fieldsep|footer|null|\n" +" numericlocale|recordsep|tuples_only|title|tableattr|pager})\n" +msgstr "" +" \\pset NOME [VALORE] imposta opzioni di output tabella\n" +" (NOME := {format|border|expanded|fieldsep|footer|null|\n" +" numericlocale|recordsep|tuples_only|title|tableattr|pager})\n" + +#: help.c:246 +#, c-format +msgid " \\t [on|off] show only rows (currently %s)\n" +msgstr " \\t [on|off] mostra solo le righe (attualmente %s)\n" + +#: help.c:248 +#, c-format +msgid " \\T [STRING] set HTML
tag attributes, or unset if none\n" +msgstr "" +" \\T [STRINGA] imposta gli attributi HTML di
, se non\n" +" specificato allora annullali\n" + +#: help.c:249 +#, c-format +msgid " \\x [on|off] toggle expanded output (currently %s)\n" +msgstr "" +" \\x [on|off] cambia modalità output espansa\n" +" (attualmente %s)\n" + +#: help.c:253 +#, c-format +msgid "Connection\n" +msgstr "Connessione\n" + +#: help.c:254 +#, c-format +msgid "" +" \\c[onnect] [DBNAME|- USER|- HOST|- PORT|-]\n" +" connect to new database (currently \"%s\")\n" +msgstr "" +" \\c[onnect] [NOMEDB|- UTENTE|- HOST|- PORTA|-]\n" +" connetti ad un nuovo database (attualmente \"%s\")\n" + +#: help.c:257 +#, c-format +msgid " \\encoding [ENCODING] show or set client encoding\n" +msgstr " \\encoding [CODIFICA] mostra o imposta la codifica del client\n" + +#: help.c:258 +#, c-format +msgid " \\password [USERNAME] securely change the password for a user\n" +msgstr " \\password [UTENTE] cambia la password per un utente in sicurezza\n" + +#: help.c:259 +#, c-format +msgid " \\conninfo display information about current connection\n" +msgstr " \\conninfo mostra le informazioni su la connessione corrente\n" + +#: help.c:262 +#, c-format +msgid "Operating System\n" +msgstr "Sistema operativo\n" + +#: help.c:263 +#, c-format +msgid " \\cd [DIR] change the current working directory\n" +msgstr " \\cd [DIRECTORY] cambia la directory di lavoro\n" + +#: help.c:264 +#, c-format +msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" +msgstr "" +" \\timing [on|off] imposta cronometro dei comandi\n" +" (attualmente %s)\n" + +#: help.c:266 +#, c-format +msgid " \\! [COMMAND] execute command in shell or start interactive shell\n" +msgstr "" +" \\! [COMANDO] esegui un comando in una shell oppure avvia una shell\n" +" interattiva\n" + +#: help.c:269 +#, c-format +msgid "Variables\n" +msgstr "Variabili\n" + +#: help.c:270 +#, c-format +msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" +msgstr " \\prompt [TESTO] NOME richiedi all'utente di impostare una variabile interna\n" + +#: help.c:271 +#, c-format +msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n" +msgstr "" +" \\set [NOME [VALORE]] imposta una variabile interna, oppure mostrale tutte\n" +" se non sono specificati parametri\n" + +#: help.c:272 +#, c-format +msgid " \\unset NAME unset (delete) internal variable\n" +msgstr " \\unset NOME cancella una variabile interna\n" + +#: help.c:275 +#, c-format +msgid "Large Objects\n" +msgstr "Large Object\n" + +#: help.c:276 +#, c-format +msgid "" +" \\lo_export LOBOID FILE\n" +" \\lo_import FILE [COMMENT]\n" +" \\lo_list\n" +" \\lo_unlink LOBOID large object operations\n" +msgstr "" +" \\lo_export LOBOID FILE\n" +" \\lo_import FILE [COMMENTO] \n" +" \\lo_list\n" +" \\lo_unlink LOBOID operazioni sui large object\n" + +#: help.c:323 +msgid "Available help:\n" +msgstr "Aiuti disponibili:\n" + +#: help.c:407 +#, c-format +msgid "" +"Command: %s\n" +"Description: %s\n" +"Syntax:\n" +"%s\n" +"\n" +msgstr "" +"Comando: %s\n" +"Descrizione: %s\n" +"Sintassi:\n" +"%s\n" +"\n" + +#: help.c:423 +#, c-format +msgid "" +"No help available for \"%s\".\n" +"Try \\h with no arguments to see available help.\n" +msgstr "" +"Nessun aiuto disponibile per \"%s\".\n" +"Prova a digitare \\h senza parametri per vedere gli aiuti disponibili.\n" + +#: input.c:198 +#, c-format +msgid "could not read from input file: %s\n" +msgstr "lettura dal file di input fallita: %s\n" + +#: input.c:406 +#, c-format +msgid "could not save history to file \"%s\": %s\n" +msgstr "salvataggio della cronologia nel file \"%s\" fallita: %s\n" + +#: input.c:411 +msgid "history is not supported by this installation\n" +msgstr "history non è supportata da questa installazione\n" + +#: large_obj.c:66 +#, c-format +msgid "%s: not connected to a database\n" +msgstr "%s: non connesso ad un database\n" + +#: large_obj.c:85 +#, c-format +msgid "%s: current transaction is aborted\n" +msgstr "%s: questa transazione è stata interrotta\n" + +#: large_obj.c:88 +#, c-format +msgid "%s: unknown transaction status\n" +msgstr "%s: stato della transazione sconosciuto\n" + +#: large_obj.c:289 large_obj.c:300 +msgid "ID" +msgstr "ID" + +#: large_obj.c:290 describe.c:147 describe.c:335 describe.c:637 describe.c:787 +#: describe.c:2513 describe.c:2631 describe.c:2975 describe.c:3606 +#: describe.c:3671 +msgid "Owner" +msgstr "Proprietario" + +#: large_obj.c:291 large_obj.c:301 describe.c:96 describe.c:159 describe.c:338 +#: describe.c:501 describe.c:590 describe.c:661 describe.c:852 describe.c:1382 +#: describe.c:2330 describe.c:2537 describe.c:2918 describe.c:2983 +#: describe.c:3048 describe.c:3184 describe.c:3223 describe.c:3290 +#: describe.c:3349 describe.c:3358 describe.c:3417 describe.c:3856 +msgid "Description" +msgstr "Descrizione" + +#: large_obj.c:310 +msgid "Large objects" +msgstr "Large object" + +#: mainloop.c:159 +#, c-format +msgid "Use \"\\q\" to leave %s.\n" +msgstr "Utilizza \"\\q\" per uscire %s.\n" + +#: mainloop.c:189 +msgid "You are using psql, the command-line interface to PostgreSQL." +msgstr "Stai utilizzando psql, l'interfaccia a riga di comando di PostgreSQL." + +#: mainloop.c:190 +#, c-format +msgid "" +"Type: \\copyright for distribution terms\n" +" \\h for help with SQL commands\n" +" \\? for help with psql commands\n" +" \\g or terminate with semicolon to execute query\n" +" \\q to quit\n" +msgstr "" +"Digita: \\copyright per le condizioni di distribuzione\n" +" \\h per la guida sui comandi SQL\n" +" \\? per la guida sui comandi psql\n" +" \\g o termina con punto e virgola per eseguire la query\n" +" \\q per uscire\n" + +#: print.c:1138 +#, c-format +msgid "(No rows)\n" +msgstr "(Nessuna riga)\n" + +#: print.c:2028 +#, c-format +msgid "Interrupted\n" +msgstr "Interrotto\n" + +#: print.c:2097 +#, c-format +msgid "Cannot add header to table content: column count of %d exceeded.\n" +msgstr "Non è possibile aggiungere l'intestazione al contenuto della tabella: il numero di colonne %d è stato superato.\n" + +#: print.c:2137 +#, c-format +msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" +msgstr "Non è possibile aggiungere celle al contenuto della tabella: il numero totale di celle %d è stato superato.\n" + +#: print.c:2358 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "il formato di output non è valido (errore interno): %d" + +#: print.c:2455 +#, c-format +msgid "(%lu row)" +msgid_plural "(%lu rows)" +msgstr[0] "(%lu riga)" +msgstr[1] "(%lu righe)" + +#: startup.c:243 +#, c-format +msgid "%s: could not open log file \"%s\": %s\n" +msgstr "%s: apertura del file di log \"%s\" fallita: %s\n" + +#: startup.c:305 +#, c-format +msgid "" +"Type \"help\" for help.\n" +"\n" +msgstr "" +"Digita \"help\" per avere un aiuto.\n" +"\n" + +#: startup.c:451 +#, c-format +msgid "%s: could not set printing parameter \"%s\"\n" +msgstr "%s: impostazione del parametro di stampa \"%s\" fallito\n" + +#: startup.c:490 +#, c-format +msgid "%s: could not delete variable \"%s\"\n" +msgstr "%s: cancellazione della variabile \"%s\" fallita\n" + +#: startup.c:500 +#, c-format +msgid "%s: could not set variable \"%s\"\n" +msgstr "%s: impostazione della variabile \"%s\" fallita\n" + +#: startup.c:537 startup.c:543 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Prova \"%s --help\" per maggiori informazioni.\n" + +#: startup.c:560 +#, c-format +msgid "%s: warning: extra command-line argument \"%s\" ignored\n" +msgstr "%s: attenzione: parametro in eccesso \"%s\" nella riga di comando ignorato\n" + +#: startup.c:625 +msgid "contains support for command-line editing" +msgstr "include il supporto per l'editing della riga di comando" + +#: describe.c:69 describe.c:236 describe.c:463 describe.c:585 describe.c:706 +#: describe.c:788 describe.c:849 describe.c:2504 describe.c:2698 +#: describe.c:2768 describe.c:2910 describe.c:3046 describe.c:3273 +#: describe.c:3345 describe.c:3356 describe.c:3415 describe.c:3789 +#: describe.c:3855 +msgid "Schema" +msgstr "Schema" + +#: describe.c:70 describe.c:146 describe.c:237 describe.c:464 describe.c:586 +#: describe.c:636 describe.c:707 describe.c:850 describe.c:2505 +#: describe.c:2627 describe.c:2699 describe.c:2769 describe.c:2911 +#: describe.c:2974 describe.c:3047 describe.c:3274 describe.c:3346 +#: describe.c:3357 describe.c:3416 describe.c:3605 describe.c:3670 +#: describe.c:3853 +msgid "Name" +msgstr "Nome" + +#: describe.c:71 describe.c:249 describe.c:295 describe.c:312 +msgid "Result data type" +msgstr "Tipo dato del risultato" + +#: describe.c:85 describe.c:89 describe.c:250 describe.c:296 describe.c:313 +msgid "Argument data types" +msgstr "Tipo dato dei parametri" + +#: describe.c:114 +msgid "List of aggregate functions" +msgstr "Lista delle funzione aggregate" + +#: describe.c:135 +#, c-format +msgid "The server (version %d.%d) does not support tablespaces.\n" +msgstr "Il server (versione %d.%d) non supporta i tablespace.\n" + +#: describe.c:148 +msgid "Location" +msgstr "Posizione" + +#: describe.c:176 +msgid "List of tablespaces" +msgstr "Lista dei tablespace" + +#: describe.c:213 +#, c-format +msgid "\\df only takes [antwS+] as options\n" +msgstr "\\df accetta come opzione solo [antwS+]\n" + +#: describe.c:219 +#, c-format +msgid "\\df does not take a \"w\" option with server version %d.%d\n" +msgstr "\\df non accetta un'opzione \"w\" con la versione del server %d.%d\n" + +#. translator: "agg" is short for "aggregate" +#: describe.c:252 describe.c:298 describe.c:315 +msgid "agg" +msgstr "aggr" + +#: describe.c:253 +msgid "window" +msgstr "finestra" + +#: describe.c:254 describe.c:299 describe.c:316 describe.c:990 +msgid "trigger" +msgstr "trigger" + +#: describe.c:255 describe.c:300 describe.c:317 +msgid "normal" +msgstr "normale" + +#: describe.c:256 describe.c:301 describe.c:318 describe.c:710 describe.c:792 +#: describe.c:1362 describe.c:2512 describe.c:2700 describe.c:3683 +msgid "Type" +msgstr "Tipo" + +#: describe.c:331 +msgid "immutable" +msgstr "immutabile" + +#: describe.c:332 +msgid "stable" +msgstr "stabile" + +#: describe.c:333 +msgid "volatile" +msgstr "volatile" + +#: describe.c:334 +msgid "Volatility" +msgstr "Volatilità" + +#: describe.c:336 +msgid "Language" +msgstr "Linguaggio" + +#: describe.c:337 +msgid "Source code" +msgstr "Codice sorgente" + +#: describe.c:435 +msgid "List of functions" +msgstr "Lista delle funzioni" + +#: describe.c:474 +msgid "Internal name" +msgstr "Nome interno" + +#: describe.c:475 describe.c:653 describe.c:2529 describe.c:2533 +msgid "Size" +msgstr "Dimensione" + +#: describe.c:496 +msgid "Elements" +msgstr "Elementi" + +#: describe.c:541 +msgid "List of data types" +msgstr "Lista dei tipi di dati" + +#: describe.c:587 +msgid "Left arg type" +msgstr "Argomento sinistro" + +#: describe.c:588 +msgid "Right arg type" +msgstr "Argomento destro" + +#: describe.c:589 +msgid "Result type" +msgstr "Tipo di risultato" + +#: describe.c:608 +msgid "List of operators" +msgstr "Lista degli operatori" + +#: describe.c:638 +msgid "Encoding" +msgstr "Codifica" + +#: describe.c:643 describe.c:2912 +msgid "Collate" +msgstr "Ordinamento" + +#: describe.c:644 describe.c:2913 +msgid "Ctype" +msgstr "Ctype" + +#: describe.c:657 +msgid "Tablespace" +msgstr "Tablespace" + +#: describe.c:674 +msgid "List of databases" +msgstr "Lista dei database" + +#: describe.c:708 describe.c:789 describe.c:944 describe.c:2506 sql_help.c:595 +#: sql_help.c:842 sql_help.c:969 sql_help.c:1432 sql_help.c:1562 +#: sql_help.c:1596 sql_help.c:1842 sql_help.c:2000 sql_help.c:2185 +#: sql_help.c:2266 sql_help.c:2472 sql_help.c:3103 sql_help.c:3123 +#: sql_help.c:3125 sql_help.c:3126 +msgid "table" +msgstr "tabella" + +#: describe.c:708 describe.c:945 describe.c:2507 +msgid "view" +msgstr "vista" + +#: describe.c:708 describe.c:790 describe.c:947 describe.c:2509 +msgid "sequence" +msgstr "sequenza" + +#: describe.c:709 describe.c:948 describe.c:2511 +msgid "foreign table" +msgstr "tabella esterna" + +#: describe.c:721 +msgid "Column access privileges" +msgstr "Privilegi di accesso colonna" + +#: describe.c:747 describe.c:4000 describe.c:4004 +msgid "Access privileges" +msgstr "Privilegi di accesso" + +#: describe.c:775 +#, c-format +msgid "The server (version %d.%d) does not support altering default privileges.\n" +msgstr "Il server (versione %d.%d) non supporta la modifica dei privilegi di default.\n" + +#: describe.c:791 describe.c:883 +msgid "function" +msgstr "funzione" + +#: describe.c:815 +msgid "Default access privileges" +msgstr "Privilegi di accesso di default" + +#: describe.c:851 +msgid "Object" +msgstr "Oggetto" + +#: describe.c:863 +msgid "aggregate" +msgstr "aggregato" + +#: describe.c:902 sql_help.c:1715 sql_help.c:2833 sql_help.c:2903 +#: sql_help.c:3036 sql_help.c:3141 sql_help.c:3192 +msgid "operator" +msgstr "operatore" + +#: describe.c:921 +msgid "data type" +msgstr "tipo_di_dato" + +#: describe.c:946 describe.c:2508 +msgid "index" +msgstr "indice" + +#: describe.c:969 +msgid "rule" +msgstr "regola" + +#: describe.c:1013 +msgid "Object descriptions" +msgstr "Descrizioni oggetti" + +#: describe.c:1066 +#, c-format +msgid "Did not find any relation named \"%s\".\n" +msgstr "Non ho trovato alcuna relazione di nome \"%s\".\n" + +#: describe.c:1238 +#, c-format +msgid "Did not find any relation with OID %s.\n" +msgstr "Non ho trovato nessuna relazione con OID %s.\n" + +#: describe.c:1314 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "Tabella non loggata \"%s.%s\"" + +#: describe.c:1317 +#, c-format +msgid "Table \"%s.%s\"" +msgstr "Tabella \"%s.%s\"" + +#: describe.c:1321 +#, c-format +msgid "View \"%s.%s\"" +msgstr "Vista \"%s.%s\"" + +#: describe.c:1325 +#, c-format +msgid "Sequence \"%s.%s\"" +msgstr "Sequenza \"%s.%s\"" + +#: describe.c:1330 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "Indice non loggato \"%s.%s\"" + +#: describe.c:1333 +#, c-format +msgid "Index \"%s.%s\"" +msgstr "Indice \"%s.%s\"" + +#: describe.c:1338 +#, c-format +msgid "Special relation \"%s.%s\"" +msgstr "relazione speciale \"%s.%s\"" + +#: describe.c:1342 +#, c-format +msgid "TOAST table \"%s.%s\"" +msgstr "Tabella TOAST \"%s.%s\"" + +#: describe.c:1346 +#, c-format +msgid "Composite type \"%s.%s\"" +msgstr "Tipo composito \"%s.%s\"" + +#: describe.c:1350 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "Tabella esterna \"%s.%s\"" + +#: describe.c:1361 +msgid "Column" +msgstr "Colonna" + +#: describe.c:1369 +msgid "Modifiers" +msgstr "Modificatori" + +#: describe.c:1374 +msgid "Value" +msgstr "Valore" + +#: describe.c:1377 +msgid "Definition" +msgstr "Definizione" + +#: describe.c:1381 +msgid "Storage" +msgstr "Memorizzazione" + +#: describe.c:1427 +#, c-format +msgid "collate %s" +msgstr "ordinamento %s" + +#: describe.c:1435 +msgid "not null" +msgstr "not null" + +#. translator: default values of column definitions +#: describe.c:1445 +#, c-format +msgid "default %s" +msgstr "preimpostato %s" + +#: describe.c:1536 +msgid "primary key, " +msgstr "chiave primaria, " + +#: describe.c:1538 +msgid "unique, " +msgstr "univoco, " + +#: describe.c:1544 +#, c-format +msgid "for table \"%s.%s\"" +msgstr "per la tabella \"%s.%s\"" + +#: describe.c:1548 +#, c-format +msgid ", predicate (%s)" +msgstr ", predicato (%s)" + +#: describe.c:1551 +msgid ", clustered" +msgstr ", raggruppato" + +#: describe.c:1554 +msgid ", invalid" +msgstr ", non valido" + +#: describe.c:1557 +msgid ", deferrable" +msgstr ", deferibile" + +#: describe.c:1560 +msgid ", initially deferred" +msgstr ", inizialmente deferito" + +#: describe.c:1574 +msgid "View definition:" +msgstr "Definizione vista:" + +#: describe.c:1591 describe.c:1874 +msgid "Rules:" +msgstr "Regole:" + +#: describe.c:1650 +msgid "Indexes:" +msgstr "Indici:" + +#: describe.c:1730 +msgid "Check constraints:" +msgstr "Vincoli di controllo:" + +#: describe.c:1761 +msgid "Foreign-key constraints:" +msgstr "Vincoli di integrità referenziale" + +#: describe.c:1792 +msgid "Referenced by:" +msgstr "Referenziato da:" + +#: describe.c:1877 +msgid "Disabled rules:" +msgstr "Regole disabilitate:" + +#: describe.c:1880 +msgid "Rules firing always:" +msgstr "Regole sempre abilitate:" + +#: describe.c:1883 +msgid "Rules firing on replica only:" +msgstr "Regole abilitate solo su replica:" + +#: describe.c:1991 +msgid "Triggers:" +msgstr "Trigger:" + +#: describe.c:1994 +msgid "Disabled triggers:" +msgstr "Trigger disabilitati:" + +#: describe.c:1997 +msgid "Triggers firing always:" +msgstr "Trigger sempre abilitati:" + +#: describe.c:2000 +msgid "Triggers firing on replica only:" +msgstr "Trigger abilitati solo su replica." + +#: describe.c:2066 +msgid "Inherits" +msgstr "Eredita" + +#: describe.c:2096 +#, c-format +msgid "Number of child tables: %d (Use \\d+ to list them.)" +msgstr "Numero di tabelle figlio: %d (Usa \\d+ per elencarle.)" + +#: describe.c:2103 +msgid "Child tables" +msgstr "Tabelle figlio" + +#: describe.c:2125 +#, c-format +msgid "Typed table of type: %s" +msgstr "Tabella di tipo: %s" + +#: describe.c:2132 +msgid "Has OIDs" +msgstr "Ha gli OID" + +#: describe.c:2135 describe.c:2772 describe.c:2846 +msgid "yes" +msgstr "sì" + +#: describe.c:2135 describe.c:2772 describe.c:2846 +msgid "no" +msgstr "no" + +#: describe.c:2143 describe.c:3621 describe.c:3685 describe.c:3741 +#: describe.c:3796 +msgid "Options" +msgstr "Opzioni" + +#: describe.c:2228 +#, c-format +msgid "Tablespace: \"%s\"" +msgstr "Tablespace: \"%s\"" + +#: describe.c:2241 +#, c-format +msgid ", tablespace \"%s\"" +msgstr ", tablespace \"%s\"" + +#: describe.c:2323 +msgid "List of roles" +msgstr "Lista dei ruoli" + +#: describe.c:2325 +msgid "Role name" +msgstr "Nome ruolo" + +#: describe.c:2326 +msgid "Attributes" +msgstr "Attributi" + +#: describe.c:2327 +msgid "Member of" +msgstr "Membro di" + +#: describe.c:2338 +msgid "Superuser" +msgstr "Superutente" + +#: describe.c:2341 +msgid "No inheritance" +msgstr "Nessuna ereditarietà" + +#: describe.c:2344 +msgid "Create role" +msgstr "Crea ruoli" + +#: describe.c:2347 +msgid "Create DB" +msgstr "Crea DB" + +#: describe.c:2350 +msgid "Cannot login" +msgstr "Login non possibile" + +#: describe.c:2354 +msgid "Replication" +msgstr "Replica" + +#: describe.c:2363 +msgid "No connections" +msgstr "Niente connessioni" + +#: describe.c:2365 +#, c-format +msgid "%d connection" +msgid_plural "%d connections" +msgstr[0] "%d connessione" +msgstr[1] "%d connessioni" + +#: describe.c:2432 +#, c-format +msgid "No per-database role settings support in this server version.\n" +msgstr "Questa versione del server non supporta l'impostazione dei ruoli per database.\n" + +#: describe.c:2443 +#, c-format +msgid "No matching settings found.\n" +msgstr "Nessuna impostazione corrispondente trovata.\n" + +#: describe.c:2445 +#, c-format +msgid "No settings found.\n" +msgstr "Nessuna impostazione trovata.\n" + +#: describe.c:2450 +msgid "List of settings" +msgstr "Lista delle impostazioni" + +#: describe.c:2510 +msgid "special" +msgstr "speciale" + +#: describe.c:2518 describe.c:3790 +msgid "Table" +msgstr "Tabella" + +#: describe.c:2592 +#, c-format +msgid "No matching relations found.\n" +msgstr "Nessuna relazione corrispondente trovata.\n" + +#: describe.c:2594 +#, c-format +msgid "No relations found.\n" +msgstr "Nessuna relazione trovata.\n" + +#: describe.c:2599 +msgid "List of relations" +msgstr "Lista delle relazioni" + +#: describe.c:2635 +msgid "Trusted" +msgstr "Fidato" + +#: describe.c:2643 +msgid "Internal Language" +msgstr "Linguaggio interno" + +#: describe.c:2644 +msgid "Call Handler" +msgstr "Gestore Chiamate" + +#: describe.c:2645 describe.c:3613 +msgid "Validator" +msgstr "Validatore" + +#: describe.c:2648 +msgid "Inline Handler" +msgstr "Handler Inline" + +#: describe.c:2669 +msgid "List of languages" +msgstr "Lista dei linguaggi" + +#: describe.c:2709 +msgid "Modifier" +msgstr "Modificatore" + +#: describe.c:2717 +msgid "Check" +msgstr "Controllo" + +#: describe.c:2735 +msgid "List of domains" +msgstr "Lista dei domini" + +#: describe.c:2770 +msgid "Source" +msgstr "Sorgente" + +#: describe.c:2771 +msgid "Destination" +msgstr "Destinazione" + +#: describe.c:2773 +msgid "Default?" +msgstr "Predefinito?" + +#: describe.c:2791 +msgid "List of conversions" +msgstr "Lista delle conversioni" + +#: describe.c:2843 +msgid "Source type" +msgstr "Tipo di partenza" + +#: describe.c:2844 +msgid "Target type" +msgstr "Tipo di arrivo" + +#: describe.c:2845 describe.c:3183 +msgid "Function" +msgstr "Funzione" + +#: describe.c:2846 +msgid "in assignment" +msgstr "in assegnazione" + +#: describe.c:2847 +msgid "Implicit?" +msgstr "Implicito?" + +#: describe.c:2873 +msgid "List of casts" +msgstr "Lista delle conversioni di tipo" + +#: describe.c:2898 +#, c-format +msgid "The server (version %d.%d) does not support collations.\n" +msgstr "Il server (versione %d.%d) non supporta gli ordinamenti.\n" + +#: describe.c:2948 +msgid "List of collations" +msgstr "Lista degli ordinamenti" + +#: describe.c:3006 +msgid "List of schemas" +msgstr "Lista degli schemi" + +#: describe.c:3029 describe.c:3262 describe.c:3330 describe.c:3398 +#, c-format +msgid "The server (version %d.%d) does not support full text search.\n" +msgstr "Il server (versione %d.%d) non supporta la ricerca full text.\n" + +#: describe.c:3063 +msgid "List of text search parsers" +msgstr "Lista degli analizzatori di ricerca resto" + +#: describe.c:3106 +#, c-format +msgid "Did not find any text search parser named \"%s\".\n" +msgstr "Non ho trovato alcun analizzatore di ricerca testo chiamato \"%s\".\n" + +#: describe.c:3181 +msgid "Start parse" +msgstr "Inizio analisi" + +#: describe.c:3182 +msgid "Method" +msgstr "Metodo" + +#: describe.c:3186 +msgid "Get next token" +msgstr "Ottiene il token successivo" + +#: describe.c:3188 +msgid "End parse" +msgstr "Fine analisi" + +#: describe.c:3190 +msgid "Get headline" +msgstr "Ottiene intestazione" + +#: describe.c:3192 +msgid "Get token types" +msgstr "Ottieni i tipi token" + +#: describe.c:3202 +#, c-format +msgid "Text search parser \"%s.%s\"" +msgstr "Analizzatore di ricerca teso \"%s.%s\"" + +#: describe.c:3204 +#, c-format +msgid "Text search parser \"%s\"" +msgstr "Analizzatore di ricerca testo \"%s\"" + +#: describe.c:3222 +msgid "Token name" +msgstr "Nome token" + +#: describe.c:3233 +#, c-format +msgid "Token types for parser \"%s.%s\"" +msgstr "Tipi token per l'analizzatore \"%s.%s\"" + +#: describe.c:3235 +#, c-format +msgid "Token types for parser \"%s\"" +msgstr "Tipi token per l'analizzatore \"%s\"" + +#: describe.c:3284 +msgid "Template" +msgstr "Modello" + +#: describe.c:3285 +msgid "Init options" +msgstr "Opzioni iniziali:" + +#: describe.c:3307 +msgid "List of text search dictionaries" +msgstr "Lista dei dizionari di ricerca testo" + +#: describe.c:3347 +msgid "Init" +msgstr "Init" + +#: describe.c:3348 +msgid "Lexize" +msgstr "Lexize" + +#: describe.c:3375 +msgid "List of text search templates" +msgstr "Lista dei modelli di ricerca testo" + +#: describe.c:3432 +msgid "List of text search configurations" +msgstr "Lista delle configurazioni di ricerca testo" + +#: describe.c:3476 +#, c-format +msgid "Did not find any text search configuration named \"%s\".\n" +msgstr "Non trovata alcuna configurazione di ricerca testo chiamata \"%s\".\n" + +#: describe.c:3542 +msgid "Token" +msgstr "Token" + +#: describe.c:3543 +msgid "Dictionaries" +msgstr "Dizionari" + +#: describe.c:3554 +#, c-format +msgid "Text search configuration \"%s.%s\"" +msgstr "Configurazione di ricerca testo \"%s.%s\"" + +#: describe.c:3557 +#, c-format +msgid "Text search configuration \"%s\"" +msgstr "Configurazione di ricerca testo \"%s\"" + +#: describe.c:3561 +#, c-format +msgid "" +"\n" +"Parser: \"%s.%s\"" +msgstr "" +"\n" +"Analizzatore \"%s.%s\"" + +#: describe.c:3564 +#, c-format +msgid "" +"\n" +"Parser: \"%s\"" +msgstr "" +"\n" +"Analizzatore: \"%s\"" + +#: describe.c:3596 +#, c-format +msgid "The server (version %d.%d) does not support foreign-data wrappers.\n" +msgstr "Il server (versione %d.%d) non supporta i wrapper di dati esterni.\n" + +#: describe.c:3610 +msgid "Handler" +msgstr "Handler" + +#: describe.c:3637 +msgid "List of foreign-data wrappers" +msgstr "Lista dei wrapper di dati esterni" + +#: describe.c:3660 +#, c-format +msgid "The server (version %d.%d) does not support foreign servers.\n" +msgstr "Il server (versione %d.%d) non supporta server esterni.\n" + +#: describe.c:3672 +msgid "Foreign-data wrapper" +msgstr "Wrapper per dati esterni" + +#: describe.c:3684 describe.c:3854 +msgid "Version" +msgstr "Versione" + +#: describe.c:3703 +msgid "List of foreign servers" +msgstr "Lista dei server esterni" + +#: describe.c:3726 +#, c-format +msgid "The server (version %d.%d) does not support user mappings.\n" +msgstr "IL server (versione %d.%d) non supporta la mappatura di utenti.\n" + +#: describe.c:3735 describe.c:3791 +msgid "Server" +msgstr "Server" + +#: describe.c:3736 +msgid "User name" +msgstr "Nome utente" + +#: describe.c:3756 +msgid "List of user mappings" +msgstr "Lista delle mappature degli utenti" + +#: describe.c:3779 +#, c-format +msgid "The server (version %d.%d) does not support foreign tables.\n" +msgstr "Il server (versione %d.%d) non supporta tabelle esterne.\n" + +#: describe.c:3817 +msgid "List of foreign tables" +msgstr "Lista delle tabelle esterne" + +#: describe.c:3840 describe.c:3894 +#, c-format +msgid "The server (version %d.%d) does not support extensions.\n" +msgstr "Il server (versione %d.%d) non supporta le estensioni.\n" + +#: describe.c:3871 +msgid "List of installed extensions" +msgstr "Lista delle estensioni installate" + +#: describe.c:3921 +#, c-format +msgid "Did not find any extension named \"%s\".\n" +msgstr "Non ho trovato alcuna estensione nominata \"%s\".\n" + +#: describe.c:3924 +#, c-format +msgid "Did not find any extensions.\n" +msgstr "Non ho trovato alcuna estensione.\n" + +#: describe.c:3968 +msgid "Object Description" +msgstr "Descrizione Oggetto" + +#: describe.c:3977 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "Oggetti nell'estensione \"%s\"" + +#: sql_help.h:182 sql_help.h:837 +msgid "abort the current transaction" +msgstr "annulla la transazione corrente" + +#: sql_help.h:187 +msgid "change the definition of an aggregate function" +msgstr "cambia la definizione di una funzione di aggregazione" + +#: sql_help.h:192 +msgid "change the definition of a collation" +msgstr "cambia la definizione di un ordinamento" + +#: sql_help.h:197 +msgid "change the definition of a conversion" +msgstr "cambia la definizione di una conversione" + +#: sql_help.h:202 +msgid "change a database" +msgstr "cambia un database" + +#: sql_help.h:207 +msgid "define default access privileges" +msgstr "definisci i privilegi di accesso di default" + +#: sql_help.h:212 +msgid "change the definition of a domain" +msgstr "cambia la definizione di un dominio" + +#: sql_help.h:217 +msgid "change the definition of an extension" +msgstr "cambia la definizione di una estensione" + +#: sql_help.h:222 +msgid "change the definition of a foreign-data wrapper" +msgstr "cambia la definizione di un wrapper di dati esterni" + +#: sql_help.h:227 +msgid "change the definition of a foreign table" +msgstr "cambia la definizione di una tabella esterna" + +#: sql_help.h:232 +msgid "change the definition of a function" +msgstr "cambia la definizione di una funzione" + +#: sql_help.h:237 +msgid "change role name or membership" +msgstr "cambia il nome del ruolo o l'appartenenza" + +#: sql_help.h:242 +msgid "change the definition of an index" +msgstr "cambia la definizione di un indice" + +#: sql_help.h:247 +msgid "change the definition of a procedural language" +msgstr "cambia la definizione di un linguaggio procedurale" + +#: sql_help.h:252 +msgid "change the definition of a large object" +msgstr "cambia la definizione di un large object" + +#: sql_help.h:257 +msgid "change the definition of an operator" +msgstr "cambia la definizione di un operatore" + +#: sql_help.h:262 +msgid "change the definition of an operator class" +msgstr "cambia la definizione di una classe di operatori" + +#: sql_help.h:267 +msgid "change the definition of an operator family" +msgstr "cambia la definizione di una famiglia di operatori" + +#: sql_help.h:272 sql_help.h:332 +msgid "change a database role" +msgstr "cambia un ruolo di database" + +#: sql_help.h:277 +msgid "change the definition of a schema" +msgstr "cambia la definizione di uno schema" + +#: sql_help.h:282 +msgid "change the definition of a sequence generator" +msgstr "cambia la definizione di un generatore di sequenza" + +#: sql_help.h:287 +msgid "change the definition of a foreign server" +msgstr "cambia la definizione di un server esterno" + +#: sql_help.h:292 +msgid "change the definition of a table" +msgstr "cambia la definizione di una tabella" + +#: sql_help.h:297 +msgid "change the definition of a tablespace" +msgstr "cambia la definizione di un tablespace" + +#: sql_help.h:302 +msgid "change the definition of a text search configuration" +msgstr "cambia la definizione di una configurazione di ricerca testo" + +#: sql_help.h:307 +msgid "change the definition of a text search dictionary" +msgstr "cambia la definizione di un dizionario di ricerca testo" + +#: sql_help.h:312 +msgid "change the definition of a text search parser" +msgstr "cambia la definizione di un analizzatore di ricerca testo" + +#: sql_help.h:317 +msgid "change the definition of a text search template" +msgstr "cambia la definizione di un modello di ricerca testo" + +#: sql_help.h:322 +msgid "change the definition of a trigger" +msgstr "cambia la definizione di un trigger" + +#: sql_help.h:327 +msgid "change the definition of a type" +msgstr "cambia la definizione di un tipo di dato" + +#: sql_help.h:337 +msgid "change the definition of a user mapping" +msgstr "cambia la definizione di una mappatura degli" + +#: sql_help.h:342 +msgid "change the definition of a view" +msgstr "cambia la definizione di una vista" + +#: sql_help.h:347 +msgid "collect statistics about a database" +msgstr "raccogli statistiche sul database" + +#: sql_help.h:352 sql_help.h:902 +msgid "start a transaction block" +msgstr "avvia un blocco di transazione" + +#: sql_help.h:357 +msgid "force a transaction log checkpoint" +msgstr "forza un punto di controllo nel log delle transazioni" + +#: sql_help.h:362 +msgid "close a cursor" +msgstr "chiudi un cursore" + +#: sql_help.h:367 +msgid "cluster a table according to an index" +msgstr "raggruppa una tabella in base ad un indice" + +#: sql_help.h:372 +msgid "define or change the comment of an object" +msgstr "definisci o modifica il commento di un oggetto" + +#: sql_help.h:377 sql_help.h:747 +msgid "commit the current transaction" +msgstr "rendi persistente la transazione corrente" + +#: sql_help.h:382 +msgid "commit a transaction that was earlier prepared for two-phase commit" +msgstr "concludi transazione che è stata precedentemente preparata per un commit a due fasi" + +#: sql_help.h:387 +msgid "copy data between a file and a table" +msgstr "copia i dati tra un file ed una tabella" + +#: sql_help.h:392 +msgid "define a new aggregate function" +msgstr "definisci una nuova funzione aggregata" + +#: sql_help.h:397 +msgid "define a new cast" +msgstr "definisci una nuova conversione di tipi" + +#: sql_help.h:402 +msgid "define a new collation" +msgstr "definisci un nuovo ordinamento" + +#: sql_help.h:407 +msgid "define a new encoding conversion" +msgstr "definisci una nuova conversione di codifica" + +#: sql_help.h:412 +msgid "create a new database" +msgstr "crea un nuovo database" + +#: sql_help.h:417 +msgid "define a new domain" +msgstr "definisci un nuovo dominio" + +#: sql_help.h:422 +msgid "install an extension" +msgstr "installa un'estensione" + +#: sql_help.h:427 +msgid "define a new foreign-data wrapper" +msgstr "definisci un nuovo wrapper di dati esterni" + +#: sql_help.h:432 +msgid "define a new foreign table" +msgstr "definisci una nuova tabella esterna" + +#: sql_help.h:437 +msgid "define a new function" +msgstr "definisci una nuova funzione" + +#: sql_help.h:442 sql_help.h:472 sql_help.h:542 +msgid "define a new database role" +msgstr "definisci un nuovo ruolo database" + +#: sql_help.h:447 +msgid "define a new index" +msgstr "crea un nuovo indice" + +#: sql_help.h:452 +msgid "define a new procedural language" +msgstr "definisci un nuovo linguaggio procedurale" + +#: sql_help.h:457 +msgid "define a new operator" +msgstr "definisci un nuovo operatore" + +#: sql_help.h:462 +msgid "define a new operator class" +msgstr "definisci una nuova classe di operatori" + +#: sql_help.h:467 +msgid "define a new operator family" +msgstr "definisci una nuova famiglia operatore" + +#: sql_help.h:477 +msgid "define a new rewrite rule" +msgstr "definisci una nuova regola di riscrittura" + +#: sql_help.h:482 +msgid "define a new schema" +msgstr "crea un nuovo schema" + +#: sql_help.h:487 +msgid "define a new sequence generator" +msgstr "definisci un nuovo generatore di sequenze" + +#: sql_help.h:492 +msgid "define a new foreign server" +msgstr "definisci un nuovo server esterno" + +#: sql_help.h:497 +msgid "define a new table" +msgstr "crea una nuova tabella" + +#: sql_help.h:502 sql_help.h:867 +msgid "define a new table from the results of a query" +msgstr "crea una nuova tabella dai risultati di una query" + +#: sql_help.h:507 +msgid "define a new tablespace" +msgstr "crea un nuovo tablespace" + +#: sql_help.h:512 +msgid "define a new text search configuration" +msgstr "definisci una nuova configurazione di ricerca testo" + +#: sql_help.h:517 +msgid "define a new text search dictionary" +msgstr "definisci un nuovo dizionario di ricerca testo" + +#: sql_help.h:522 +msgid "define a new text search parser" +msgstr "definisci un nuovo analizzatore di ricerca testo" + +#: sql_help.h:527 +msgid "define a new text search template" +msgstr "definisci un nuovo modello di ricerca testo" + +#: sql_help.h:532 +msgid "define a new trigger" +msgstr "definisci un nuovo trigger" + +#: sql_help.h:537 +msgid "define a new data type" +msgstr "definisci un nuovo tipo di dato" + +#: sql_help.h:547 +msgid "define a new mapping of a user to a foreign server" +msgstr "definisci una nuova mappatura di un utente ad un server esterno" + +#: sql_help.h:552 +msgid "define a new view" +msgstr "definisci una nuova vista" + +#: sql_help.h:557 +msgid "deallocate a prepared statement" +msgstr "dealloca una istruzione preparata" + +#: sql_help.h:562 +msgid "define a cursor" +msgstr "definisci un cursore" + +#: sql_help.h:567 +msgid "delete rows of a table" +msgstr "elimina le righe di una tabella" + +#: sql_help.h:572 +msgid "discard session state" +msgstr "cancella lo stato della sessione" + +#: sql_help.h:577 +msgid "execute an anonymous code block" +msgstr "esegui un blocco di codice anonimo" + +#: sql_help.h:582 +msgid "remove an aggregate function" +msgstr "elimina una funzione aggregata" + +#: sql_help.h:587 +msgid "remove a cast" +msgstr "elimina una conversione di tipi" + +#: sql_help.h:592 +msgid "remove a collation" +msgstr "elimina un ordinamento" + +#: sql_help.h:597 +msgid "remove a conversion" +msgstr "elimina una conversione" + +#: sql_help.h:602 +msgid "remove a database" +msgstr "elimina un database" + +#: sql_help.h:607 +msgid "remove a domain" +msgstr "elimina un dominio" + +#: sql_help.h:612 +msgid "remove an extension" +msgstr "elimina una estensione" + +#: sql_help.h:617 +msgid "remove a foreign-data wrapper" +msgstr "elimina un wrapper di dati esterni" + +#: sql_help.h:622 +msgid "remove a foreign table" +msgstr "elimina una tabella esterna" + +#: sql_help.h:627 +msgid "remove a function" +msgstr "elimina una funzione" + +#: sql_help.h:632 sql_help.h:667 sql_help.h:732 +msgid "remove a database role" +msgstr "elimina un ruolo di database" + +#: sql_help.h:637 +msgid "remove an index" +msgstr "elimina un indice" + +#: sql_help.h:642 +msgid "remove a procedural language" +msgstr "elimina un linguaggio procedurale" + +#: sql_help.h:647 +msgid "remove an operator" +msgstr "elimina un operatore" + +#: sql_help.h:652 +msgid "remove an operator class" +msgstr "elimina una classe di operatori" + +#: sql_help.h:657 +msgid "remove an operator family" +msgstr "elimina una famiglia operatore" + +#: sql_help.h:662 +msgid "remove database objects owned by a database role" +msgstr "elimina gli oggetti database di proprietà di un ruolo di database" + +#: sql_help.h:672 +msgid "remove a rewrite rule" +msgstr "elimina una regola di riscrittura" + +#: sql_help.h:677 +msgid "remove a schema" +msgstr "elimina uno schema" + +#: sql_help.h:682 +msgid "remove a sequence" +msgstr "elimina una sequenza" + +#: sql_help.h:687 +msgid "remove a foreign server descriptor" +msgstr "elimina una descrizione server esterno" + +#: sql_help.h:692 +msgid "remove a table" +msgstr "elimina una tabella" + +#: sql_help.h:697 +msgid "remove a tablespace" +msgstr "elimina un tablespace" + +#: sql_help.h:702 +msgid "remove a text search configuration" +msgstr "elimina una configurazione di ricerca testo" + +#: sql_help.h:707 +msgid "remove a text search dictionary" +msgstr "elimina un dizionario di ricerca testo" + +#: sql_help.h:712 +msgid "remove a text search parser" +msgstr "elimina un analizzatore di ricerca testo" + +#: sql_help.h:717 +msgid "remove a text search template" +msgstr "elimina un modello di ricerca testo" + +#: sql_help.h:722 +msgid "remove a trigger" +msgstr "elimina un trigger" + +#: sql_help.h:727 +msgid "remove a data type" +msgstr "elimina un tipo di dato" + +#: sql_help.h:737 +msgid "remove a user mapping for a foreign server" +msgstr "elimina la mappatura degli utenti per un server esterno" + +#: sql_help.h:742 +msgid "remove a view" +msgstr "elimina una vista" + +#: sql_help.h:752 +msgid "execute a prepared statement" +msgstr "esegui una istruzione preparata" + +#: sql_help.h:757 +msgid "show the execution plan of a statement" +msgstr "mostra il piano di esecuzione di una istruzione" + +#: sql_help.h:762 +msgid "retrieve rows from a query using a cursor" +msgstr "estrai delle righe da una query utilizzando un cursore" + +#: sql_help.h:767 +msgid "define access privileges" +msgstr "definisci i privilegi di accesso" + +#: sql_help.h:772 +msgid "create new rows in a table" +msgstr "crea nuove righe in una tabella" + +#: sql_help.h:777 +msgid "listen for a notification" +msgstr "attendi l'arrivo di notifiche" + +#: sql_help.h:782 +msgid "load a shared library file" +msgstr "carica un file di libreria condivisa" + +#: sql_help.h:787 +msgid "lock a table" +msgstr "blocca una tabella" + +#: sql_help.h:792 +msgid "position a cursor" +msgstr "posiziona un cursore" + +#: sql_help.h:797 +msgid "generate a notification" +msgstr "genera una notifica" + +#: sql_help.h:802 +msgid "prepare a statement for execution" +msgstr "prepara una istruzione per l'esecuzione" + +#: sql_help.h:807 +msgid "prepare the current transaction for two-phase commit" +msgstr "prepara la transazione corrente per un commit a due fasi" + +#: sql_help.h:812 +msgid "change the ownership of database objects owned by a database role" +msgstr "cambia il proprietario degli oggetti del database posseduti da un ruolo" + +#: sql_help.h:817 +msgid "rebuild indexes" +msgstr "ricostruisci indici" + +#: sql_help.h:822 +msgid "destroy a previously defined savepoint" +msgstr "distruggi un punto di salvataggio precedentemente definito" + +#: sql_help.h:827 +msgid "restore the value of a run-time parameter to the default value" +msgstr "ripristina un parametro di esecuzione al suo valore di predefinito" + +#: sql_help.h:832 +msgid "remove access privileges" +msgstr "elimina i privilegi di accesso" + +#: sql_help.h:842 +msgid "cancel a transaction that was earlier prepared for two-phase commit" +msgstr "annulla una transazione che era stata preparata per un commit a due fasi" + +#: sql_help.h:847 +msgid "roll back to a savepoint" +msgstr "annulla le modifiche fino a un punto di salvataggio" + +#: sql_help.h:852 +msgid "define a new savepoint within the current transaction" +msgstr "definisci un nuovo punto di salvataggio per la transazione corrente" + +#: sql_help.h:857 +msgid "define or change a security label applied to an object" +msgstr "definisci o modifica un'etichetta di sicurezza applicata a un oggetto" + +#: sql_help.h:862 sql_help.h:907 sql_help.h:937 +msgid "retrieve rows from a table or view" +msgstr "estrai righe da una tabella o una vista" + +#: sql_help.h:872 +msgid "change a run-time parameter" +msgstr "modifica un parametro di esecuzione" + +#: sql_help.h:877 +msgid "set constraint check timing for the current transaction" +msgstr "imposta il momento del controllo dei vincoli per la transazione corrente" + +#: sql_help.h:882 +msgid "set the current user identifier of the current session" +msgstr "imposta l'identificativo utente della sessione corrente" + +#: sql_help.h:887 +msgid "set the session user identifier and the current user identifier of the current session" +msgstr "imposta l'identificazione utente della sessione e l'identificazione utente corrente della sessione corrente" + +#: sql_help.h:892 +msgid "set the characteristics of the current transaction" +msgstr "imposta le caratteristiche della transazione corrente" + +#: sql_help.h:897 +msgid "show the value of a run-time parameter" +msgstr "mostra il valore di un parametro di esecuzione" + +#: sql_help.h:912 +msgid "empty a table or set of tables" +msgstr "svuota una tabella o una lista di tabelle" + +#: sql_help.h:917 +msgid "stop listening for a notification" +msgstr "termina l'attesa di notifiche" + +#: sql_help.h:922 +msgid "update rows of a table" +msgstr "modifica le righe di una tabella" + +#: sql_help.h:927 +msgid "garbage-collect and optionally analyze a database" +msgstr "pulisci ed eventualmente analizza il database" + +#: sql_help.h:932 +msgid "compute a set of rows" +msgstr "genera una sequenza di righe" + +#: sql_help.c:26 sql_help.c:29 sql_help.c:32 sql_help.c:44 sql_help.c:46 +#: sql_help.c:48 sql_help.c:59 sql_help.c:61 sql_help.c:63 sql_help.c:87 +#: sql_help.c:91 sql_help.c:93 sql_help.c:95 sql_help.c:97 sql_help.c:100 +#: sql_help.c:102 sql_help.c:104 sql_help.c:179 sql_help.c:181 sql_help.c:182 +#: sql_help.c:184 sql_help.c:186 sql_help.c:188 sql_help.c:276 sql_help.c:281 +#: sql_help.c:306 sql_help.c:308 sql_help.c:311 sql_help.c:313 sql_help.c:351 +#: sql_help.c:356 sql_help.c:361 sql_help.c:366 sql_help.c:404 sql_help.c:406 +#: sql_help.c:408 sql_help.c:411 sql_help.c:421 sql_help.c:423 sql_help.c:442 +#: sql_help.c:446 sql_help.c:459 sql_help.c:462 sql_help.c:465 sql_help.c:485 +#: sql_help.c:497 sql_help.c:505 sql_help.c:508 sql_help.c:511 sql_help.c:541 +#: sql_help.c:547 sql_help.c:549 sql_help.c:553 sql_help.c:556 sql_help.c:559 +#: sql_help.c:569 sql_help.c:571 sql_help.c:588 sql_help.c:597 sql_help.c:599 +#: sql_help.c:601 sql_help.c:675 sql_help.c:677 sql_help.c:680 sql_help.c:682 +#: sql_help.c:740 sql_help.c:742 sql_help.c:744 sql_help.c:747 sql_help.c:768 +#: sql_help.c:771 sql_help.c:774 sql_help.c:777 sql_help.c:781 sql_help.c:783 +#: sql_help.c:785 sql_help.c:787 sql_help.c:801 sql_help.c:804 sql_help.c:806 +#: sql_help.c:808 sql_help.c:818 sql_help.c:820 sql_help.c:830 sql_help.c:832 +#: sql_help.c:841 sql_help.c:862 sql_help.c:864 sql_help.c:866 sql_help.c:869 +#: sql_help.c:871 sql_help.c:873 sql_help.c:911 sql_help.c:917 sql_help.c:919 +#: sql_help.c:922 sql_help.c:924 sql_help.c:926 sql_help.c:951 sql_help.c:954 +#: sql_help.c:956 sql_help.c:958 sql_help.c:960 sql_help.c:1000 +#: sql_help.c:1183 sql_help.c:1191 sql_help.c:1235 sql_help.c:1239 +#: sql_help.c:1249 sql_help.c:1267 sql_help.c:1290 sql_help.c:1322 +#: sql_help.c:1367 sql_help.c:1409 sql_help.c:1431 sql_help.c:1451 +#: sql_help.c:1452 sql_help.c:1469 sql_help.c:1489 sql_help.c:1511 +#: sql_help.c:1539 sql_help.c:1560 sql_help.c:1590 sql_help.c:1771 +#: sql_help.c:1784 sql_help.c:1801 sql_help.c:1817 sql_help.c:1840 +#: sql_help.c:1883 sql_help.c:1887 sql_help.c:1889 sql_help.c:1907 +#: sql_help.c:1934 sql_help.c:1967 sql_help.c:1977 sql_help.c:1986 +#: sql_help.c:2030 sql_help.c:2048 sql_help.c:2056 sql_help.c:2064 +#: sql_help.c:2072 sql_help.c:2088 sql_help.c:2096 sql_help.c:2105 +#: sql_help.c:2116 sql_help.c:2124 sql_help.c:2132 sql_help.c:2140 +#: sql_help.c:2150 sql_help.c:2159 sql_help.c:2168 sql_help.c:2176 +#: sql_help.c:2184 sql_help.c:2193 sql_help.c:2201 sql_help.c:2217 +#: sql_help.c:2233 sql_help.c:2241 sql_help.c:2249 sql_help.c:2257 +#: sql_help.c:2265 sql_help.c:2274 sql_help.c:2282 sql_help.c:2299 +#: sql_help.c:2314 sql_help.c:2506 sql_help.c:2557 sql_help.c:2584 +#: sql_help.c:2927 sql_help.c:2973 sql_help.c:3080 +msgid "name" +msgstr "nome" + +#: sql_help.c:27 sql_help.c:30 sql_help.c:33 sql_help.c:317 sql_help.c:320 +#: sql_help.c:2031 +msgid "type" +msgstr "tipo" + +#: sql_help.c:28 sql_help.c:45 sql_help.c:60 sql_help.c:92 sql_help.c:312 +#: sql_help.c:360 sql_help.c:393 sql_help.c:405 sql_help.c:422 sql_help.c:461 +#: sql_help.c:507 sql_help.c:548 sql_help.c:570 sql_help.c:600 sql_help.c:681 +#: sql_help.c:741 sql_help.c:784 sql_help.c:805 sql_help.c:819 sql_help.c:831 +#: sql_help.c:843 sql_help.c:870 sql_help.c:918 sql_help.c:959 +msgid "new_name" +msgstr "nuovo_nome" + +#: sql_help.c:31 sql_help.c:47 sql_help.c:62 sql_help.c:94 sql_help.c:187 +#: sql_help.c:282 sql_help.c:322 sql_help.c:365 sql_help.c:424 sql_help.c:433 +#: sql_help.c:445 sql_help.c:464 sql_help.c:510 sql_help.c:572 sql_help.c:598 +#: sql_help.c:617 sql_help.c:725 sql_help.c:743 sql_help.c:786 sql_help.c:807 +#: sql_help.c:865 sql_help.c:957 +msgid "new_owner" +msgstr "nuovo_proprietario" + +#: sql_help.c:34 sql_help.c:49 sql_help.c:64 sql_help.c:189 sql_help.c:228 +#: sql_help.c:314 sql_help.c:370 sql_help.c:449 sql_help.c:467 sql_help.c:513 +#: sql_help.c:602 sql_help.c:683 sql_help.c:788 sql_help.c:809 sql_help.c:821 +#: sql_help.c:833 sql_help.c:872 sql_help.c:961 +msgid "new_schema" +msgstr "nuovo_schema" + +#: sql_help.c:88 sql_help.c:279 sql_help.c:323 sql_help.c:542 sql_help.c:614 +#: sql_help.c:802 sql_help.c:912 sql_help.c:938 sql_help.c:1142 +#: sql_help.c:1147 sql_help.c:1325 sql_help.c:1343 sql_help.c:1410 +#: sql_help.c:1540 sql_help.c:1611 sql_help.c:1786 sql_help.c:1935 +#: sql_help.c:1957 sql_help.c:2332 +msgid "option" +msgstr "opzione" + +#: sql_help.c:89 sql_help.c:543 sql_help.c:913 sql_help.c:1411 sql_help.c:1541 +#: sql_help.c:1936 +msgid "where option can be:" +msgstr "dove opzione può essere:" + +#: sql_help.c:90 sql_help.c:544 sql_help.c:914 sql_help.c:1274 sql_help.c:1542 +#: sql_help.c:1937 +msgid "connlimit" +msgstr "limite_conn" + +#: sql_help.c:96 sql_help.c:726 +msgid "new_tablespace" +msgstr "nuovo_tablespace" + +#: sql_help.c:98 sql_help.c:101 sql_help.c:103 sql_help.c:374 sql_help.c:376 +#: sql_help.c:377 sql_help.c:551 sql_help.c:555 sql_help.c:558 sql_help.c:920 +#: sql_help.c:923 sql_help.c:925 sql_help.c:1378 sql_help.c:2601 +#: sql_help.c:2916 +msgid "configuration_parameter" +msgstr "parametro_config" + +#: sql_help.c:99 sql_help.c:280 sql_help.c:324 sql_help.c:375 sql_help.c:410 +#: sql_help.c:552 sql_help.c:615 sql_help.c:702 sql_help.c:720 sql_help.c:746 +#: sql_help.c:803 sql_help.c:921 sql_help.c:939 sql_help.c:1326 +#: sql_help.c:1344 sql_help.c:1379 sql_help.c:1380 sql_help.c:1439 +#: sql_help.c:1612 sql_help.c:1686 sql_help.c:1694 sql_help.c:1726 +#: sql_help.c:1748 sql_help.c:1787 sql_help.c:1958 sql_help.c:2917 +#: sql_help.c:2918 +msgid "value" +msgstr "valore" + +#: sql_help.c:151 +msgid "target_role" +msgstr "ruolo_destinazione" + +#: sql_help.c:152 sql_help.c:1575 sql_help.c:2430 sql_help.c:2437 +#: sql_help.c:2449 sql_help.c:2455 sql_help.c:2684 sql_help.c:2691 +#: sql_help.c:2703 sql_help.c:2709 +msgid "schema_name" +msgstr "nome_schema" + +#: sql_help.c:153 +msgid "abbreviated_grant_or_revoke" +msgstr "grant_o_revoke_abbreviato" + +#: sql_help.c:154 +msgid "where abbreviated_grant_or_revoke is one of:" +msgstr "dove grant_o_revoke_abbreviato è uno di:" + +#: sql_help.c:155 sql_help.c:156 sql_help.c:157 sql_help.c:158 sql_help.c:159 +#: sql_help.c:160 sql_help.c:1414 sql_help.c:1415 sql_help.c:1416 +#: sql_help.c:1417 sql_help.c:1418 sql_help.c:1545 sql_help.c:1546 +#: sql_help.c:1547 sql_help.c:1548 sql_help.c:1549 sql_help.c:1940 +#: sql_help.c:1941 sql_help.c:1942 sql_help.c:1943 sql_help.c:1944 +#: sql_help.c:2431 sql_help.c:2435 sql_help.c:2438 sql_help.c:2440 +#: sql_help.c:2442 sql_help.c:2444 sql_help.c:2450 sql_help.c:2452 +#: sql_help.c:2454 sql_help.c:2456 sql_help.c:2458 sql_help.c:2459 +#: sql_help.c:2460 sql_help.c:2685 sql_help.c:2689 sql_help.c:2692 +#: sql_help.c:2694 sql_help.c:2696 sql_help.c:2698 sql_help.c:2704 +#: sql_help.c:2706 sql_help.c:2708 sql_help.c:2710 sql_help.c:2712 +#: sql_help.c:2713 sql_help.c:2714 sql_help.c:2937 +msgid "role_name" +msgstr "nome_ruolo" + +#: sql_help.c:180 sql_help.c:693 sql_help.c:695 sql_help.c:953 sql_help.c:1293 +#: sql_help.c:1297 sql_help.c:1435 sql_help.c:1698 sql_help.c:1708 +#: sql_help.c:1730 sql_help.c:2474 sql_help.c:2822 sql_help.c:2823 +#: sql_help.c:2827 sql_help.c:2832 sql_help.c:2891 sql_help.c:2892 +#: sql_help.c:2897 sql_help.c:2902 sql_help.c:3025 sql_help.c:3026 +#: sql_help.c:3030 sql_help.c:3035 sql_help.c:3106 sql_help.c:3108 +#: sql_help.c:3139 sql_help.c:3181 sql_help.c:3182 sql_help.c:3186 +#: sql_help.c:3191 +msgid "expression" +msgstr "espressione" + +#: sql_help.c:183 +msgid "domain_constraint" +msgstr "vincolo_di_dominio" + +#: sql_help.c:185 sql_help.c:708 sql_help.c:709 sql_help.c:728 sql_help.c:1059 +#: sql_help.c:1296 sql_help.c:1697 sql_help.c:1707 +msgid "constraint_name" +msgstr "nome_vincolo" + +#: sql_help.c:225 sql_help.c:227 sql_help.c:229 sql_help.c:231 sql_help.c:1308 +#: sql_help.c:2080 +msgid "extension_name" +msgstr "nome_estensione" + +#: sql_help.c:226 sql_help.c:613 +msgid "new_version" +msgstr "nuova_versione" + +#: sql_help.c:230 sql_help.c:232 +msgid "member_object" +msgstr "oggetto_membro" + +#: sql_help.c:233 +msgid "where member_object is:" +msgstr "dove oggetto_membro è:" + +#: sql_help.c:234 sql_help.c:1052 sql_help.c:2771 +msgid "agg_name" +msgstr "nome_agg" + +#: sql_help.c:235 sql_help.c:1053 sql_help.c:2772 +msgid "agg_type" +msgstr "tipo_agg" + +#: sql_help.c:236 sql_help.c:1054 sql_help.c:1215 sql_help.c:1219 +#: sql_help.c:1221 sql_help.c:2039 +msgid "source_type" +msgstr "tipo_sorgente" + +#: sql_help.c:237 sql_help.c:1055 sql_help.c:1216 sql_help.c:1220 +#: sql_help.c:1222 sql_help.c:2040 +msgid "target_type" +msgstr "tipo_destinazione" + +#: sql_help.c:238 sql_help.c:239 sql_help.c:240 sql_help.c:241 sql_help.c:242 +#: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:255 sql_help.c:256 +#: sql_help.c:257 sql_help.c:258 sql_help.c:259 sql_help.c:260 sql_help.c:261 +#: sql_help.c:262 sql_help.c:263 sql_help.c:264 sql_help.c:1056 +#: sql_help.c:1061 sql_help.c:1062 sql_help.c:1063 sql_help.c:1064 +#: sql_help.c:1065 sql_help.c:1066 sql_help.c:1071 sql_help.c:1076 +#: sql_help.c:1078 sql_help.c:1080 sql_help.c:1081 sql_help.c:1084 +#: sql_help.c:1085 sql_help.c:1086 sql_help.c:1087 sql_help.c:1088 +#: sql_help.c:1089 sql_help.c:1090 sql_help.c:1091 sql_help.c:1092 +#: sql_help.c:1095 sql_help.c:1096 sql_help.c:2768 sql_help.c:2773 +#: sql_help.c:2774 sql_help.c:2780 sql_help.c:2781 sql_help.c:2782 +#: sql_help.c:2783 sql_help.c:2784 +msgid "object_name" +msgstr "nome_oggetto" + +#: sql_help.c:243 sql_help.c:495 sql_help.c:1067 sql_help.c:1217 +#: sql_help.c:1252 sql_help.c:1470 sql_help.c:1501 sql_help.c:1845 +#: sql_help.c:2445 sql_help.c:2699 sql_help.c:2775 sql_help.c:2848 +#: sql_help.c:2853 sql_help.c:3051 sql_help.c:3056 sql_help.c:3207 +#: sql_help.c:3212 +msgid "function_name" +msgstr "nome_funzione" + +#: sql_help.c:244 sql_help.c:352 sql_help.c:357 sql_help.c:362 sql_help.c:367 +#: sql_help.c:1068 sql_help.c:1368 sql_help.c:2106 sql_help.c:2446 +#: sql_help.c:2700 sql_help.c:2776 +msgid "argmode" +msgstr "modo_arg" + +#: sql_help.c:245 sql_help.c:353 sql_help.c:358 sql_help.c:363 sql_help.c:368 +#: sql_help.c:1069 sql_help.c:1369 sql_help.c:2107 sql_help.c:2777 +msgid "argname" +msgstr "nome_arg" + +#: sql_help.c:246 sql_help.c:354 sql_help.c:359 sql_help.c:364 sql_help.c:369 +#: sql_help.c:1070 sql_help.c:1370 sql_help.c:2108 sql_help.c:2778 +msgid "argtype" +msgstr "tipo_arg" + +#: sql_help.c:247 sql_help.c:488 sql_help.c:1073 sql_help.c:1494 +msgid "operator_name" +msgstr "nome_operatore" + +#: sql_help.c:248 sql_help.c:443 sql_help.c:447 sql_help.c:1074 +#: sql_help.c:1471 sql_help.c:2141 +msgid "left_type" +msgstr "tipo_sx" + +#: sql_help.c:249 sql_help.c:444 sql_help.c:448 sql_help.c:1075 +#: sql_help.c:1472 sql_help.c:2142 +msgid "right_type" +msgstr "tipo_dx" + +#: sql_help.c:251 sql_help.c:253 sql_help.c:460 sql_help.c:463 sql_help.c:466 +#: sql_help.c:486 sql_help.c:498 sql_help.c:506 sql_help.c:509 sql_help.c:512 +#: sql_help.c:1077 sql_help.c:1079 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1713 sql_help.c:2151 sql_help.c:2160 +msgid "index_method" +msgstr "metodo_indice" + +#: sql_help.c:277 sql_help.c:1323 +msgid "handler_function" +msgstr "funzione_handler" + +#: sql_help.c:278 sql_help.c:1324 +msgid "validator_function" +msgstr "funzione_validazione" + +#: sql_help.c:307 sql_help.c:355 sql_help.c:676 sql_help.c:863 sql_help.c:1704 +#: sql_help.c:1705 sql_help.c:1721 sql_help.c:1722 +msgid "action" +msgstr "azione" + +#: sql_help.c:309 sql_help.c:316 sql_help.c:318 sql_help.c:319 sql_help.c:321 +#: sql_help.c:596 sql_help.c:678 sql_help.c:685 sql_help.c:689 sql_help.c:690 +#: sql_help.c:694 sql_help.c:696 sql_help.c:697 sql_help.c:698 sql_help.c:700 +#: sql_help.c:703 sql_help.c:705 sql_help.c:952 sql_help.c:955 sql_help.c:970 +#: sql_help.c:1140 sql_help.c:1144 sql_help.c:1156 sql_help.c:1157 +#: sql_help.c:1434 sql_help.c:1597 sql_help.c:1729 sql_help.c:2432 +#: sql_help.c:2433 sql_help.c:2473 sql_help.c:2686 sql_help.c:2687 +#: sql_help.c:3105 sql_help.c:3107 sql_help.c:3124 sql_help.c:3127 +msgid "column" +msgstr "colonna" + +#: sql_help.c:310 sql_help.c:679 +msgid "new_column" +msgstr "nuova_colonna" + +#: sql_help.c:315 sql_help.c:371 sql_help.c:684 sql_help.c:876 +msgid "where action is one of:" +msgstr "dove azione è una di:" + +#: sql_help.c:372 sql_help.c:1376 +msgid "execution_cost" +msgstr "costo_di_esecuzione" + +#: sql_help.c:373 sql_help.c:1377 +msgid "result_rows" +msgstr "righe_risultato" + +#: sql_help.c:388 sql_help.c:390 sql_help.c:392 +msgid "group_name" +msgstr "nome_gruppo" + +#: sql_help.c:389 sql_help.c:391 sql_help.c:936 sql_help.c:1268 +#: sql_help.c:1576 sql_help.c:1578 sql_help.c:1759 sql_help.c:1955 +#: sql_help.c:2290 sql_help.c:2947 +msgid "user_name" +msgstr "nome_utente" + +#: sql_help.c:407 sql_help.c:1758 sql_help.c:2225 sql_help.c:2457 +#: sql_help.c:2711 +msgid "tablespace_name" +msgstr "nome_tablespace" + +#: sql_help.c:409 sql_help.c:412 sql_help.c:719 sql_help.c:721 sql_help.c:1438 +#: sql_help.c:1685 sql_help.c:1693 sql_help.c:1725 sql_help.c:1747 +msgid "storage_parameter" +msgstr "parametro_di_memorizzazione" + +#: sql_help.c:432 sql_help.c:1072 sql_help.c:2779 +msgid "large_object_oid" +msgstr "oid_large_object" + +#: sql_help.c:487 sql_help.c:499 sql_help.c:1493 +msgid "strategy_number" +msgstr "strategia_num" + +#: sql_help.c:489 sql_help.c:490 sql_help.c:493 sql_help.c:494 sql_help.c:500 +#: sql_help.c:501 sql_help.c:503 sql_help.c:504 sql_help.c:1495 +#: sql_help.c:1496 sql_help.c:1499 sql_help.c:1500 +msgid "op_type" +msgstr "tipo_op" + +#: sql_help.c:491 sql_help.c:1497 +msgid "sort_family_name" +msgstr "nome_famiglia_sort" + +#: sql_help.c:492 sql_help.c:502 sql_help.c:1498 +msgid "support_number" +msgstr "num_supporto" + +#: sql_help.c:496 sql_help.c:1218 sql_help.c:1502 +msgid "argument_type" +msgstr "tipo_argomento" + +#: sql_help.c:545 sql_help.c:915 sql_help.c:1412 sql_help.c:1543 +#: sql_help.c:1938 +msgid "password" +msgstr "password" + +#: sql_help.c:546 sql_help.c:916 sql_help.c:1413 sql_help.c:1544 +#: sql_help.c:1939 +msgid "timestamp" +msgstr "timestamp" + +#: sql_help.c:550 sql_help.c:554 sql_help.c:557 sql_help.c:560 sql_help.c:2439 +#: sql_help.c:2693 +msgid "database_name" +msgstr "nome_database" + +#: sql_help.c:589 sql_help.c:1591 +msgid "increment" +msgstr "incremento" + +#: sql_help.c:590 sql_help.c:1592 +msgid "minvalue" +msgstr "valoremin" + +#: sql_help.c:591 sql_help.c:1593 +msgid "maxvalue" +msgstr "valoremax" + +#: sql_help.c:592 sql_help.c:1594 sql_help.c:2835 sql_help.c:2905 +#: sql_help.c:3038 sql_help.c:3143 sql_help.c:3194 +msgid "start" +msgstr "inizio" + +#: sql_help.c:593 +msgid "restart" +msgstr "riavvio" + +#: sql_help.c:594 sql_help.c:1595 +msgid "cache" +msgstr "cache" + +#: sql_help.c:612 sql_help.c:616 sql_help.c:937 sql_help.c:1342 +#: sql_help.c:1607 sql_help.c:1956 sql_help.c:2209 sql_help.c:2291 +#: sql_help.c:2443 sql_help.c:2697 +msgid "server_name" +msgstr "nome_server" + +#: sql_help.c:686 sql_help.c:691 sql_help.c:878 sql_help.c:882 sql_help.c:1291 +#: sql_help.c:1341 sql_help.c:1490 sql_help.c:1678 sql_help.c:1885 +#: sql_help.c:2558 +msgid "data_type" +msgstr "tipo_di_dato" + +#: sql_help.c:687 sql_help.c:692 sql_help.c:879 sql_help.c:883 sql_help.c:1292 +#: sql_help.c:1436 sql_help.c:1679 sql_help.c:1886 +msgid "collation" +msgstr "ordinamento" + +#: sql_help.c:688 sql_help.c:1680 sql_help.c:1691 +msgid "column_constraint" +msgstr "vincolo_di_colonna" + +#: sql_help.c:699 +msgid "integer" +msgstr "intero" + +#: sql_help.c:701 sql_help.c:704 +msgid "attribute_option" +msgstr "opzione_attributo" + +#: sql_help.c:706 sql_help.c:1681 sql_help.c:1692 +msgid "table_constraint" +msgstr "vincoli_di_tabella" + +#: sql_help.c:707 +msgid "table_constraint_using_index" +msgstr "vincoli_di_tabella_con_indice" + +#: sql_help.c:710 sql_help.c:711 sql_help.c:712 sql_help.c:713 sql_help.c:1093 +msgid "trigger_name" +msgstr "nome_trigger" + +#: sql_help.c:714 sql_help.c:715 sql_help.c:716 sql_help.c:717 +msgid "rewrite_rule_name" +msgstr "nome_regola_di_riscrittura" + +#: sql_help.c:718 sql_help.c:729 sql_help.c:1010 +msgid "index_name" +msgstr "nome_indice" + +#: sql_help.c:722 sql_help.c:723 sql_help.c:1682 sql_help.c:1684 +msgid "parent_table" +msgstr "tabella_padre" + +#: sql_help.c:724 sql_help.c:1689 +msgid "type_name" +msgstr "nome_di_tipo" + +#: sql_help.c:727 +msgid "and table_constraint_using_index is:" +msgstr "e vincolo_di_tabella_con_indice è:" + +#: sql_help.c:745 sql_help.c:748 +msgid "tablespace_option" +msgstr "opzione_tablespace" + +#: sql_help.c:769 sql_help.c:772 sql_help.c:778 sql_help.c:782 +msgid "token_type" +msgstr "tipo_di_token" + +#: sql_help.c:770 sql_help.c:773 +msgid "dictionary_name" +msgstr "nome_dizionario" + +#: sql_help.c:775 sql_help.c:779 +msgid "old_dictionary" +msgstr "vecchio_dizionario" + +#: sql_help.c:776 sql_help.c:780 +msgid "new_dictionary" +msgstr "nuovo_dizionario" + +#: sql_help.c:867 sql_help.c:877 sql_help.c:880 sql_help.c:881 sql_help.c:1884 +msgid "attribute_name" +msgstr "nome_attributo" + +#: sql_help.c:868 +msgid "new_attribute_name" +msgstr "nuovo_nome_attributo" + +#: sql_help.c:874 +msgid "new_enum_value" +msgstr "nuovo_valore_enum" + +#: sql_help.c:875 +msgid "existing_enum_value" +msgstr "valore_enum_esistente" + +#: sql_help.c:984 sql_help.c:2962 sql_help.c:2963 sql_help.c:2987 +msgid "transaction_mode" +msgstr "modalità_transazione" + +#: sql_help.c:985 sql_help.c:2964 sql_help.c:2988 +msgid "where transaction_mode is one of:" +msgstr "dove modalità_transazione è una di:" + +#: sql_help.c:1009 sql_help.c:1060 sql_help.c:1083 sql_help.c:1094 +#: sql_help.c:1139 sql_help.c:1143 sql_help.c:1339 sql_help.c:1676 +#: sql_help.c:1688 sql_help.c:1745 sql_help.c:2429 sql_help.c:2434 +#: sql_help.c:2683 sql_help.c:2688 sql_help.c:2769 sql_help.c:2837 +#: sql_help.c:2839 sql_help.c:2868 sql_help.c:2907 sql_help.c:3040 +#: sql_help.c:3042 sql_help.c:3071 sql_help.c:3196 sql_help.c:3198 +#: sql_help.c:3227 +msgid "table_name" +msgstr "nome_tabella" + +#: sql_help.c:1057 +msgid "relation_name" +msgstr "nome_relazione" + +#: sql_help.c:1058 sql_help.c:1340 sql_help.c:1373 sql_help.c:1677 +#: sql_help.c:1690 sql_help.c:1709 sql_help.c:1711 sql_help.c:1718 +#: sql_help.c:1746 sql_help.c:1848 sql_help.c:1968 sql_help.c:2770 +#: sql_help.c:2863 sql_help.c:3066 sql_help.c:3222 +msgid "column_name" +msgstr "nome_colonna" + +#: sql_help.c:1082 +msgid "rule_name" +msgstr "nome_ruolo" + +#: sql_help.c:1097 +msgid "text" +msgstr "testo" + +#: sql_help.c:1112 sql_help.c:2567 sql_help.c:2729 +msgid "transaction_id" +msgstr "id_transazione" + +#: sql_help.c:1141 sql_help.c:1146 sql_help.c:2493 +msgid "filename" +msgstr "nome_file" + +#: sql_help.c:1145 sql_help.c:1750 sql_help.c:1969 sql_help.c:1987 +#: sql_help.c:2475 +msgid "query" +msgstr "query" + +#: sql_help.c:1148 sql_help.c:2335 +msgid "where option can be one of:" +msgstr "dove opzione può essere una di:" + +#: sql_help.c:1149 +msgid "format_name" +msgstr "nome_formato" + +#: sql_help.c:1150 sql_help.c:1153 sql_help.c:2336 sql_help.c:2337 +#: sql_help.c:2338 sql_help.c:2339 +msgid "boolean" +msgstr "booleano" + +#: sql_help.c:1151 +msgid "delimiter_character" +msgstr "carattere_delimitatore" + +#: sql_help.c:1152 +msgid "null_string" +msgstr "stringa_nulla" + +#: sql_help.c:1154 +msgid "quote_character" +msgstr "carattere_virgolette" + +#: sql_help.c:1155 +msgid "escape_character" +msgstr "carattere_di_escape" + +#: sql_help.c:1158 +msgid "encoding_name" +msgstr "nome_codifica" + +#: sql_help.c:1184 +msgid "input_data_type" +msgstr "tipo_di_dato_ingresso" + +#: sql_help.c:1185 sql_help.c:1193 +msgid "sfunc" +msgstr "sfunz" + +#: sql_help.c:1186 sql_help.c:1194 +msgid "state_data_type" +msgstr "tipo_dato_stato" + +#: sql_help.c:1187 sql_help.c:1195 +msgid "ffunc" +msgstr "ffunz" + +#: sql_help.c:1188 sql_help.c:1196 +msgid "initial_condition" +msgstr "condizione_iniziale" + +#: sql_help.c:1189 sql_help.c:1197 +msgid "sort_operator" +msgstr "operatore_di_ordinamento" + +#: sql_help.c:1190 +msgid "or the old syntax" +msgstr "o la vecchia sintassi" + +#: sql_help.c:1192 +msgid "base_type" +msgstr "tipo_base" + +#: sql_help.c:1236 +msgid "locale" +msgstr "locale" + +#: sql_help.c:1237 sql_help.c:1271 +msgid "lc_collate" +msgstr "lc_collate" + +#: sql_help.c:1238 sql_help.c:1272 +msgid "lc_ctype" +msgstr "lc_ctype" + +#: sql_help.c:1240 +msgid "existing_collation" +msgstr "ordinamento_esistente" + +#: sql_help.c:1250 +msgid "source_encoding" +msgstr "codifica_origine" + +#: sql_help.c:1251 +msgid "dest_encoding" +msgstr "codifica_destinazione" + +#: sql_help.c:1269 sql_help.c:1785 +msgid "template" +msgstr "template" + +#: sql_help.c:1270 +msgid "encoding" +msgstr "codifica" + +#: sql_help.c:1273 sql_help.c:1440 sql_help.c:1687 sql_help.c:1695 +#: sql_help.c:1727 sql_help.c:1749 +msgid "tablespace" +msgstr "tablespace" + +#: sql_help.c:1294 +msgid "constraint" +msgstr "vincolo" + +#: sql_help.c:1295 +msgid "where constraint is:" +msgstr "dove vincolo di è:" + +#: sql_help.c:1309 +msgid "schema" +msgstr "schema" + +#: sql_help.c:1310 +msgid "version" +msgstr "versione" + +#: sql_help.c:1311 +msgid "old_version" +msgstr "vecchia_versione" + +#: sql_help.c:1371 sql_help.c:1699 +msgid "default_expr" +msgstr "expr_default" + +#: sql_help.c:1372 +msgid "rettype" +msgstr "tipo_ritorno" + +#: sql_help.c:1374 +msgid "column_type" +msgstr "tipo_colonna" + +#: sql_help.c:1375 sql_help.c:2021 sql_help.c:2451 sql_help.c:2705 +msgid "lang_name" +msgstr "nome_linguaggio" + +#: sql_help.c:1381 +msgid "definition" +msgstr "definizione" + +#: sql_help.c:1382 +msgid "obj_file" +msgstr "file_obj" + +#: sql_help.c:1383 +msgid "link_symbol" +msgstr "simbolo_link" + +#: sql_help.c:1384 +msgid "attribute" +msgstr "attributo" + +#: sql_help.c:1419 sql_help.c:1550 sql_help.c:1945 +msgid "uid" +msgstr "uid" + +#: sql_help.c:1433 +msgid "method" +msgstr "metodo" + +#: sql_help.c:1437 sql_help.c:1731 +msgid "opclass" +msgstr "classe_op" + +#: sql_help.c:1441 sql_help.c:1717 +msgid "predicate" +msgstr "predicato" + +#: sql_help.c:1453 +msgid "call_handler" +msgstr "handler_chiamata" + +#: sql_help.c:1454 +msgid "inline_handler" +msgstr "handler_inline" + +#: sql_help.c:1455 +msgid "valfunction" +msgstr "funzione_valid" + +#: sql_help.c:1473 +msgid "com_op" +msgstr "com_op" + +#: sql_help.c:1474 +msgid "neg_op" +msgstr "neg_op" + +#: sql_help.c:1475 +msgid "res_proc" +msgstr "res_proc" + +#: sql_help.c:1476 +msgid "join_proc" +msgstr "proc_join" + +#: sql_help.c:1492 +msgid "family_name" +msgstr "nome_famiglia" + +#: sql_help.c:1503 +msgid "storage_type" +msgstr "tipo_memorizzazione" + +#: sql_help.c:1561 sql_help.c:1841 +msgid "event" +msgstr "evento" + +#: sql_help.c:1563 sql_help.c:1844 sql_help.c:2003 sql_help.c:2826 +#: sql_help.c:2828 sql_help.c:2896 sql_help.c:2898 sql_help.c:3029 +#: sql_help.c:3031 sql_help.c:3110 sql_help.c:3185 sql_help.c:3187 +msgid "condition" +msgstr "condizione" + +#: sql_help.c:1564 sql_help.c:1565 sql_help.c:1566 +msgid "command" +msgstr "comando" + +#: sql_help.c:1577 sql_help.c:1579 +msgid "schema_element" +msgstr "elemento_di_schema" + +#: sql_help.c:1608 +msgid "server_type" +msgstr "tipo_di_server" + +#: sql_help.c:1609 +msgid "server_version" +msgstr "versione_server" + +#: sql_help.c:1610 sql_help.c:2441 sql_help.c:2695 +msgid "fdw_name" +msgstr "nome_fdw" + +#: sql_help.c:1683 +msgid "like_option" +msgstr "opzioni_di_like" + +#: sql_help.c:1696 +msgid "where column_constraint is:" +msgstr "dove vincolo_di_colonna è:" + +#: sql_help.c:1700 sql_help.c:1701 sql_help.c:1710 sql_help.c:1712 +#: sql_help.c:1716 +msgid "index_parameters" +msgstr "parametri_di_indice" + +#: sql_help.c:1702 sql_help.c:1719 +msgid "reftable" +msgstr "tabella_ref" + +#: sql_help.c:1703 sql_help.c:1720 +msgid "refcolumn" +msgstr "colonna_ref" + +#: sql_help.c:1706 +msgid "and table_constraint is:" +msgstr "e vincolo_di_tabella è:" + +#: sql_help.c:1714 +msgid "exclude_element" +msgstr "elemento_di_esclusione" + +#: sql_help.c:1723 +msgid "and like_option is:" +msgstr "e opzione_like è:" + +#: sql_help.c:1724 +msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" +msgstr "parametri_di_indice nei vincoli UNIQUE, PRIMARY KEY e EXCLUDE sono:" + +#: sql_help.c:1728 +msgid "exclude_element in an EXCLUDE constraint is:" +msgstr "elemento_di_esclusione in un vincolo EXCLUDE è:" + +#: sql_help.c:1760 +msgid "directory" +msgstr "directory" + +#: sql_help.c:1772 +msgid "parser_name" +msgstr "nome_parser" + +#: sql_help.c:1773 +msgid "source_config" +msgstr "config_origine" + +#: sql_help.c:1802 +msgid "start_function" +msgstr "funzione_inizio" + +#: sql_help.c:1803 +msgid "gettoken_function" +msgstr "funzione_gettoken" + +#: sql_help.c:1804 +msgid "end_function" +msgstr "funzione_fine" + +#: sql_help.c:1805 +msgid "lextypes_function" +msgstr "funzione_lextypes" + +#: sql_help.c:1806 +msgid "headline_function" +msgstr "funzione_headline" + +#: sql_help.c:1818 +msgid "init_function" +msgstr "funzione_init" + +#: sql_help.c:1819 +msgid "lexize_function" +msgstr "funzione_lexize" + +#: sql_help.c:1843 +msgid "referenced_table_name" +msgstr "nome_tabella_referenziata" + +#: sql_help.c:1846 +msgid "arguments" +msgstr "argomenti" + +#: sql_help.c:1847 +msgid "where event can be one of:" +msgstr "dove evento può essere uno di:" + +#: sql_help.c:1888 sql_help.c:2785 +msgid "label" +msgstr "etichetta" + +#: sql_help.c:1890 +msgid "input_function" +msgstr "funzione_input" + +#: sql_help.c:1891 +msgid "output_function" +msgstr "funzione_output" + +#: sql_help.c:1892 +msgid "receive_function" +msgstr "funzione_receive" + +#: sql_help.c:1893 +msgid "send_function" +msgstr "funzione_send" + +#: sql_help.c:1894 +msgid "type_modifier_input_function" +msgstr "funzione_input_modificatore_tipo" + +#: sql_help.c:1895 +msgid "type_modifier_output_function" +msgstr "funzione_output_modificatore_tipo" + +#: sql_help.c:1896 +msgid "analyze_function" +msgstr "funzione_analyze" + +#: sql_help.c:1897 +msgid "internallength" +msgstr "lunghezza_interna" + +#: sql_help.c:1898 +msgid "alignment" +msgstr "allineamento" + +#: sql_help.c:1899 +msgid "storage" +msgstr "memorizzazione" + +#: sql_help.c:1900 +msgid "like_type" +msgstr "tipo_like" + +#: sql_help.c:1901 +msgid "category" +msgstr "categoria" + +#: sql_help.c:1902 +msgid "preferred" +msgstr "preferito" + +#: sql_help.c:1903 +msgid "default" +msgstr "predefinito" + +#: sql_help.c:1904 +msgid "element" +msgstr "elemento" + +#: sql_help.c:1905 +msgid "delimiter" +msgstr "delimitatore" + +#: sql_help.c:1906 +msgid "collatable" +msgstr "ordinabile" + +#: sql_help.c:1999 sql_help.c:2471 sql_help.c:2821 sql_help.c:2890 +#: sql_help.c:3024 sql_help.c:3102 sql_help.c:3180 +msgid "with_query" +msgstr "query_with" + +#: sql_help.c:2001 sql_help.c:2840 sql_help.c:2843 sql_help.c:2846 +#: sql_help.c:2850 sql_help.c:3043 sql_help.c:3046 sql_help.c:3049 +#: sql_help.c:3053 sql_help.c:3104 sql_help.c:3199 sql_help.c:3202 +#: sql_help.c:3205 sql_help.c:3209 +msgid "alias" +msgstr "alias" + +#: sql_help.c:2002 +msgid "using_list" +msgstr "lista_using" + +#: sql_help.c:2004 sql_help.c:2365 sql_help.c:2534 sql_help.c:3111 +msgid "cursor_name" +msgstr "nome_cursore" + +#: sql_help.c:2005 sql_help.c:2476 sql_help.c:3112 +msgid "output_expression" +msgstr "espressione_output" + +#: sql_help.c:2006 sql_help.c:2477 sql_help.c:2824 sql_help.c:2893 +#: sql_help.c:3027 sql_help.c:3113 sql_help.c:3183 +msgid "output_name" +msgstr "nome_output" + +#: sql_help.c:2022 +msgid "code" +msgstr "codice" + +#: sql_help.c:2315 +msgid "parameter" +msgstr "parametro" + +#: sql_help.c:2333 sql_help.c:2334 sql_help.c:2559 +msgid "statement" +msgstr "istruzione" + +#: sql_help.c:2364 sql_help.c:2533 +msgid "direction" +msgstr "direzione" + +#: sql_help.c:2366 sql_help.c:2535 +msgid "where direction can be empty or one of:" +msgstr "dove direzione può essere vuota o una di:" + +#: sql_help.c:2367 sql_help.c:2368 sql_help.c:2369 sql_help.c:2370 +#: sql_help.c:2371 sql_help.c:2536 sql_help.c:2537 sql_help.c:2538 +#: sql_help.c:2539 sql_help.c:2540 sql_help.c:2834 sql_help.c:2836 +#: sql_help.c:2904 sql_help.c:2906 sql_help.c:3037 sql_help.c:3039 +#: sql_help.c:3142 sql_help.c:3144 sql_help.c:3193 sql_help.c:3195 +msgid "count" +msgstr "conteggio" + +#: sql_help.c:2436 sql_help.c:2690 +msgid "sequence_name" +msgstr "nome_sequenza" + +#: sql_help.c:2447 sql_help.c:2701 +msgid "arg_name" +msgstr "nome_arg" + +#: sql_help.c:2448 sql_help.c:2702 +msgid "arg_type" +msgstr "tipo_arg" + +#: sql_help.c:2453 sql_help.c:2707 +msgid "loid" +msgstr "loid" + +#: sql_help.c:2485 sql_help.c:2548 sql_help.c:3088 +msgid "channel" +msgstr "canale" + +#: sql_help.c:2507 +msgid "lockmode" +msgstr "modalità_lock" + +#: sql_help.c:2508 +msgid "where lockmode is one of:" +msgstr "dove modalità_lock è una di:" + +#: sql_help.c:2549 +msgid "payload" +msgstr "payload" + +#: sql_help.c:2575 +msgid "old_role" +msgstr "vecchio_ruolo" + +#: sql_help.c:2576 +msgid "new_role" +msgstr "nuovo_ruolo" + +#: sql_help.c:2592 sql_help.c:2737 sql_help.c:2745 +msgid "savepoint_name" +msgstr "nome_punto_salvataggio" + +#: sql_help.c:2767 +msgid "provider" +msgstr "provider" + +#: sql_help.c:2825 sql_help.c:2856 sql_help.c:2858 sql_help.c:2895 +#: sql_help.c:3028 sql_help.c:3059 sql_help.c:3061 sql_help.c:3184 +#: sql_help.c:3215 sql_help.c:3217 +msgid "from_item" +msgstr "elemento_from" + +#: sql_help.c:2829 sql_help.c:2899 sql_help.c:3032 sql_help.c:3188 +msgid "window_name" +msgstr "nome_finestra" + +#: sql_help.c:2830 sql_help.c:2900 sql_help.c:3033 sql_help.c:3189 +msgid "window_definition" +msgstr "definizione_finestra" + +#: sql_help.c:2831 sql_help.c:2842 sql_help.c:2864 sql_help.c:2901 +#: sql_help.c:3034 sql_help.c:3045 sql_help.c:3067 sql_help.c:3190 +#: sql_help.c:3201 sql_help.c:3223 +msgid "select" +msgstr "select" + +#: sql_help.c:2838 sql_help.c:3041 sql_help.c:3197 +msgid "where from_item can be one of:" +msgstr "dove from_item può essere uno di:" + +#: sql_help.c:2841 sql_help.c:2844 sql_help.c:2847 sql_help.c:2851 +#: sql_help.c:3044 sql_help.c:3047 sql_help.c:3050 sql_help.c:3054 +#: sql_help.c:3200 sql_help.c:3203 sql_help.c:3206 sql_help.c:3210 +msgid "column_alias" +msgstr "alias_colonna" + +#: sql_help.c:2845 sql_help.c:2862 sql_help.c:3048 sql_help.c:3065 +#: sql_help.c:3204 sql_help.c:3221 +msgid "with_query_name" +msgstr "nome_query_with" + +#: sql_help.c:2849 sql_help.c:2854 sql_help.c:3052 sql_help.c:3057 +#: sql_help.c:3208 sql_help.c:3213 +msgid "argument" +msgstr "argomento" + +#: sql_help.c:2852 sql_help.c:2855 sql_help.c:3055 sql_help.c:3058 +#: sql_help.c:3211 sql_help.c:3214 +msgid "column_definition" +msgstr "definizione_colonna" + +#: sql_help.c:2857 sql_help.c:3060 sql_help.c:3216 +msgid "join_type" +msgstr "tipo_join" + +#: sql_help.c:2859 sql_help.c:3062 sql_help.c:3218 +msgid "join_condition" +msgstr "condizione_join" + +#: sql_help.c:2860 sql_help.c:3063 sql_help.c:3219 +msgid "join_column" +msgstr "colonna_join" + +#: sql_help.c:2861 sql_help.c:3064 sql_help.c:3220 +msgid "and with_query is:" +msgstr "e with_query è:" + +#: sql_help.c:2865 sql_help.c:3068 sql_help.c:3224 +msgid "insert" +msgstr "insert" + +#: sql_help.c:2866 sql_help.c:3069 sql_help.c:3225 +msgid "update" +msgstr "update" + +#: sql_help.c:2867 sql_help.c:3070 sql_help.c:3226 +msgid "delete" +msgstr "delete" + +#: sql_help.c:2894 +msgid "new_table" +msgstr "nuova_tabella" + +#: sql_help.c:2919 +msgid "timezone" +msgstr "timezone" + +#: sql_help.c:3109 +msgid "from_list" +msgstr "lista_from" + +#: sql_help.c:3140 +msgid "sort_expression" +msgstr "espressione_ordinamento" + +#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 +#, c-format +msgid "could not identify current directory: %s" +msgstr "identificazione della directory corrente fallita: %s" + +#: ../../port/exec.c:144 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "binario non valido \"%s\"" + +#: ../../port/exec.c:193 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "lettura del binario \"%s\" fallita" + +#: ../../port/exec.c:200 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "programma \"%s\" da eseguire non trovato" + +#: ../../port/exec.c:255 ../../port/exec.c:291 +#, c-format +msgid "could not change directory to \"%s\"" +msgstr "spostamento nella directory \"%s\" fallito" + +#: ../../port/exec.c:270 +#, c-format +msgid "could not read symbolic link \"%s\"" +msgstr "lettura del link simbolico \"%s\" fallita" + +#: ../../port/exec.c:525 +#, c-format +msgid "child process exited with exit code %d" +msgstr "processo figlio uscito con codice di uscita %d" + +#: ../../port/exec.c:529 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "processo figlio terminato da eccezione 0x%X" + +#: ../../port/exec.c:538 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "processo figlio terminato da segnale %s" + +#: ../../port/exec.c:541 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "processo figlio terminato da segnale %d" + +#: ../../port/exec.c:545 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "processo figlio uscito con stato non riconosciuto %d" diff --git a/src/bin/psql/po/ja.po b/src/bin/psql/po/ja.po index b0a0eb71aa..b9d664ea6b 100644 --- a/src/bin/psql/po/ja.po +++ b/src/bin/psql/po/ja.po @@ -3,175 +3,211 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0.0\n" +"Project-Id-Version: PostgreSQL 9.1 beta2\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-07-19 21:46+0900\n" -"PO-Revision-Date: 2011-01-15 22:30+0900\n" +"POT-Creation-Date: 2011-08-27 16:47+0900\n" +"PO-Revision-Date: 2011-08-27 16:51+0900\n" "Last-Translator: HOTTA Michihide \n" "Language-Team: jpug-doc \n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: command.c:112 +#: command.c:113 #, c-format msgid "Invalid command \\%s. Try \\? for help.\n" msgstr "不正なコマンドです:\\%s。\\? でヘルプを参照してください。\n" -#: command.c:114 +#: command.c:115 #, c-format msgid "invalid command \\%s\n" msgstr "不正なコマンドです:\\%s:\n" -#: command.c:125 +#: command.c:126 #, c-format msgid "\\%s: extra argument \"%s\" ignored\n" msgstr "\\%s: 余分な引数 \"%s\" は無視されました。\n" -#: command.c:267 +#: command.c:268 #, c-format msgid "could not get home directory: %s\n" msgstr "ホームディレクトリ \"%s\" の位置を特定できません。\n" -#: command.c:283 +#: command.c:284 #, c-format msgid "\\%s: could not change directory to \"%s\": %s\n" msgstr "\\%s: ディレクトリを \"%s\" に変更できません:%s\n" -#: command.c:316 common.c:940 +#: command.c:305 common.c:493 common.c:773 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "現在データベースには接続していません。\n" + +#: command.c:312 +#, c-format +msgid "" +"You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at " +"port \"%s\".\n" +msgstr "" +"データベース\"%s\"にユーザ\"%s\"でソケット\"%s\"経由のポート\"%s\"で接続して" +"います。\n" + +#: command.c:315 +#, c-format +msgid "" +"You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port " +"\"%s\".\n" +msgstr "" +"ホスト\"%3$s\"上のポート\"%4$s\"のデータベース\"%1$s\"にユーザ\"%2$s\"で接続" +"しています\n" + +#: command.c:339 common.c:940 #, c-format msgid "Time: %.3f ms\n" msgstr "時間: %.3f ms\n" -#: command.c:485 command.c:513 command.c:1064 +#: command.c:524 command.c:588 command.c:1285 msgid "no query buffer\n" msgstr "クエリーバッファがありません。\n" -#: command.c:555 +#: command.c:557 command.c:2507 +#, c-format +msgid "invalid line number: %s\n" +msgstr "無効な行番号です: %s\n" + +#: command.c:662 msgid "No changes" msgstr "変更なし" -#: command.c:609 +#: command.c:716 #, c-format msgid "%s: invalid encoding name or conversion procedure not found\n" msgstr "" "%s: 正しいエンコーディング名でないか、または変換用プロシージャが見つかりませ" "ん。\n" -#: command.c:688 command.c:722 command.c:736 command.c:753 command.c:857 -#: command.c:907 command.c:1044 command.c:1075 +#: command.c:795 command.c:829 command.c:843 command.c:860 command.c:964 +#: command.c:1014 command.c:1265 command.c:1296 #, c-format msgid "\\%s: missing required argument\n" msgstr "\\%s: 引数が不足しています。\n" -#: command.c:785 +#: command.c:892 msgid "Query buffer is empty." msgstr "クエリーバッファは空です。" -#: command.c:795 +#: command.c:902 msgid "Enter new password: " msgstr "新しいパスワード: " -#: command.c:796 +#: command.c:903 msgid "Enter it again: " msgstr "もう一度入力してください:" -#: command.c:800 +#: command.c:907 #, c-format msgid "Passwords didn't match.\n" msgstr "パスワードがマッチしません。\n" -#: command.c:818 +#: command.c:925 #, c-format msgid "Password encryption failed.\n" msgstr "パスワードの暗号化に失敗しました。\n" -#: command.c:886 command.c:987 command.c:1049 +#: command.c:993 command.c:1094 command.c:1270 #, c-format msgid "\\%s: error\n" msgstr "\\%s: エラー\n" -#: command.c:927 +#: command.c:1034 msgid "Query buffer reset (cleared)." msgstr "クエリーバッファがリセット(クリア)されました。" -#: command.c:940 +#: command.c:1047 #, c-format msgid "Wrote history to file \"%s/%s\".\n" msgstr "ファイル \"%s/%s\" にヒストリを出力しました。\n" -#: command.c:978 common.c:52 common.c:66 input.c:209 mainloop.c:72 -#: mainloop.c:234 print.c:137 print.c:151 +#: command.c:1085 common.c:52 common.c:66 common.c:90 input.c:209 +#: mainloop.c:72 mainloop.c:234 print.c:137 print.c:151 #, c-format msgid "out of memory\n" msgstr "メモリ不足です\n" -#: command.c:1029 +#: command.c:1115 +msgid "function name is required\n" +msgstr "関数名が必要です\n" + +#: command.c:1250 msgid "Timing is on." msgstr "タイミングは on です。" -#: command.c:1031 +#: command.c:1252 msgid "Timing is off." msgstr "タイミングは off です。" -#: command.c:1092 command.c:1112 command.c:1633 command.c:1640 command.c:1649 -#: command.c:1659 command.c:1668 command.c:1682 command.c:1699 command.c:1737 +#: command.c:1313 command.c:1333 command.c:1895 command.c:1902 command.c:1911 +#: command.c:1921 command.c:1930 command.c:1944 command.c:1961 command.c:1999 #: common.c:137 copy.c:283 copy.c:361 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" -#: command.c:1194 startup.c:159 +#: command.c:1415 startup.c:159 msgid "Password: " msgstr "パスワード: " -#: command.c:1201 startup.c:162 startup.c:164 +#: command.c:1422 startup.c:162 startup.c:164 #, c-format msgid "Password for user %s: " msgstr "ユーザ %s のパスワード: " -#: command.c:1318 command.c:2207 common.c:183 common.c:460 common.c:525 -#: common.c:816 common.c:841 common.c:925 copy.c:432 copy.c:477 copy.c:606 +#: command.c:1541 command.c:2541 common.c:183 common.c:460 common.c:525 +#: common.c:816 common.c:841 common.c:925 copy.c:432 copy.c:477 copy.c:607 #, c-format msgid "%s" msgstr "%s" -#: command.c:1322 +#: command.c:1545 msgid "Previous connection kept\n" msgstr "以前の接続は保持されています。\n" -#: command.c:1326 +#: command.c:1549 #, c-format msgid "\\connect: %s" msgstr "\\connect: %s" -#: command.c:1350 -#, c-format -msgid "You are now connected to database \"%s\"" -msgstr "データベース \"%s\" に接続しました。" - -#: command.c:1353 +#: command.c:1582 #, c-format -msgid " on host \"%s\"" -msgstr "ホスト:\"%s\"" +msgid "" +"You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" " +"at port \"%s\".\n" +msgstr "" +"ポート\"%4$s\"のソケット\"%3$s\"経由でデータベース\"%1$s\"にユーザ\"%2$s\"と" +"して接続しました。\n" -#: command.c:1356 +#: command.c:1585 #, c-format -msgid " at port \"%s\"" -msgstr "ポート番号:\"%s\"" +msgid "" +"You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at " +"port \"%s\".\n" +msgstr "" +"ホスト\"%3$s\"上のポート\"%4$s\"でデータベース\"%1$s\"にユーザ\"%2$s\"として" +"接続しました。\n" -#: command.c:1359 +#: command.c:1589 #, c-format -msgid " as user \"%s\"" -msgstr "ユーザ名:\"%s\"" +msgid "You are now connected to database \"%s\" as user \"%s\".\n" +msgstr "データベース \"%s\" にユーザ\"%s\"として接続しました。\n" -#: command.c:1394 +#: command.c:1623 #, c-format msgid "%s (%s, server %s)\n" msgstr "%s (%s, サーバー %s)\n" -#: command.c:1402 +#: command.c:1631 #, c-format msgid "" "WARNING: %s version %d.%d, server version %d.%d.\n" @@ -180,17 +216,17 @@ msgstr "" "注意: %s バージョン %d.%d, サーバーバージョン %d.%d.\n" " psql の機能の中で、動作しないものがあるかもしれません。\n" -#: command.c:1432 +#: command.c:1661 #, c-format msgid "SSL connection (cipher: %s, bits: %i)\n" msgstr "SSL 接続 (暗号化方式: %s, ビット長: %i)\n" -#: command.c:1442 +#: command.c:1671 #, c-format msgid "SSL connection (unknown cipher)\n" msgstr "SSL 接続 (未定義の暗号化方式)\n" -#: command.c:1463 +#: command.c:1692 #, c-format msgid "" "WARNING: Console code page (%u) differs from Windows code page (%u)\n" @@ -203,26 +239,32 @@ msgstr "" " (ウィンドウズユーザのために)を参照してください。\n" "\n" -#: command.c:1552 +#: command.c:1776 +msgid "" +"environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a " +"line number\n" +msgstr "行番号を指定するためにはPSQL_EDITOR_LINENUMBER_ARG変数を設定しなければなりません\n" + +#: command.c:1813 #, c-format msgid "could not start editor \"%s\"\n" msgstr "エディタ \"%s\" を起動できませんでした。\n" -#: command.c:1554 +#: command.c:1815 msgid "could not start /bin/sh\n" msgstr "/bin/sh を起動できませんでした。\n" -#: command.c:1591 +#: command.c:1853 #, c-format -msgid "cannot locate temporary directory: %s" -msgstr "一時ディレクトリ \"%s\" が見つかりません。" +msgid "could not locate temporary directory: %s\n" +msgstr "一時ディレクトリに移動できません: %s\n" -#: command.c:1618 +#: command.c:1880 #, c-format msgid "could not open temporary file \"%s\": %s\n" msgstr "一時ファイル \"%s\" を開けません: %s\n" -#: command.c:1839 +#: command.c:2110 msgid "" "\\pset: allowed formats are unaligned, aligned, wrapped, html, latex, troff-" "ms\n" @@ -230,122 +272,122 @@ msgstr "" "\\pset: 有効なフォーマットは unaligned, aligned, wrapped, html, latex, troff-" "ms です。\n" -#: command.c:1844 +#: command.c:2115 #, c-format msgid "Output format is %s.\n" msgstr "出力フォーマットは %s です。\n" -#: command.c:1860 +#: command.c:2131 msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" msgstr "\\pset: 有効な行スタイルは ascii, old-ascii, unicode です。\n" -#: command.c:1865 +#: command.c:2136 #, c-format msgid "Line style is %s.\n" msgstr "境界線のスタイルは %s です。\n" -#: command.c:1876 +#: command.c:2147 #, c-format msgid "Border style is %d.\n" msgstr "境界線のスタイルは %d です。\n" -#: command.c:1888 +#: command.c:2159 #, c-format msgid "Expanded display is on.\n" msgstr "拡張表示は on です。\n" -#: command.c:1889 +#: command.c:2160 #, c-format msgid "Expanded display is off.\n" msgstr "拡張表示は off です。\n" -#: command.c:1902 +#: command.c:2173 msgid "Showing locale-adjusted numeric output." msgstr "ロケールで調整された数値出力を表示しています。" -#: command.c:1904 +#: command.c:2175 msgid "Locale-adjusted numeric output is off." msgstr "「数値出力のロケール調整」は off です。" -#: command.c:1917 +#: command.c:2188 #, c-format msgid "Null display is \"%s\".\n" msgstr "Null 表示は \"%s\" です。\n" -#: command.c:1929 +#: command.c:2200 #, c-format msgid "Field separator is \"%s\".\n" msgstr "フィールド区切り文字は \"%s\" です。\n" -#: command.c:1943 +#: command.c:2214 #, c-format msgid "Record separator is ." msgstr "レコード区切り文字は です。" -#: command.c:1945 +#: command.c:2216 #, c-format msgid "Record separator is \"%s\".\n" msgstr "レコード区切り文字は \"%s\" です。\n" -#: command.c:1959 +#: command.c:2230 msgid "Showing only tuples." msgstr "タプルのみを表示しています。" -#: command.c:1961 +#: command.c:2232 msgid "Tuples only is off." msgstr "「タプルのみ表示」は off です。" -#: command.c:1977 +#: command.c:2248 #, c-format msgid "Title is \"%s\".\n" msgstr "タイトルは \"%s\" です。\n" -#: command.c:1979 +#: command.c:2250 #, c-format msgid "Title is unset.\n" msgstr "タイトルはセットされていません。\n" -#: command.c:1995 +#: command.c:2266 #, c-format msgid "Table attribute is \"%s\".\n" msgstr "テーブル属性は \"%s\" です。\n" -#: command.c:1997 +#: command.c:2268 #, c-format msgid "Table attributes unset.\n" msgstr "テーブル属性はセットされていません。\n" -#: command.c:2018 +#: command.c:2289 msgid "Pager is used for long output." msgstr "出力が長い場合はページャが使われます。" -#: command.c:2020 +#: command.c:2291 msgid "Pager is always used." msgstr "常にページャが使われます。" -#: command.c:2022 +#: command.c:2293 msgid "Pager usage is off." msgstr "「ページャを使う」は off です。" -#: command.c:2036 +#: command.c:2307 msgid "Default footer is on." msgstr "デフォルトのフッタは on です。" -#: command.c:2038 +#: command.c:2309 msgid "Default footer is off." msgstr "デフォルトのフッタは off です。" -#: command.c:2049 +#: command.c:2320 #, c-format msgid "Target width for \"wrapped\" format is %d.\n" msgstr "\"wrapped\" フォーマットの対象幅は %d です。\n" -#: command.c:2054 +#: command.c:2325 #, c-format msgid "\\pset: unknown option: %s\n" msgstr "\\pset: 未定義のオプション:%s\n" -#: command.c:2108 +#: command.c:2379 msgid "\\!: failed\n" msgstr "\\!: 失敗\n" @@ -354,10 +396,6 @@ msgstr "\\!: 失敗\n" msgid "%s: pg_strdup: cannot duplicate null pointer (internal error)\n" msgstr "%s: pg_strdup: null ポインタを複製できません(内部エラー)。\n" -#: common.c:90 -msgid "out of memory" -msgstr "メモリ不足です" - #: common.c:343 msgid "connection to server was lost\n" msgstr "サーバーへの接続が切れました。\n" @@ -374,10 +412,6 @@ msgstr "失敗。\n" msgid "Succeeded.\n" msgstr "成功。\n" -#: common.c:493 common.c:773 -msgid "You are currently not connected to a database.\n" -msgstr "現在データベースには接続していません。\n" - #: common.c:499 common.c:506 common.c:799 #, c-format msgid "" @@ -485,24 +519,24 @@ msgstr "" "コピーするデータに続いて改行を入力します。\n" "バックスラッシュ(\\)とピリオドだけの行で終了します。" -#: copy.c:599 +#: copy.c:600 msgid "aborted because of read failure" msgstr "読み込みに失敗したため異常終了しました" -#: help.c:52 +#: help.c:48 msgid "on" msgstr "オン" -#: help.c:52 +#: help.c:48 msgid "off" msgstr "オフ" -#: help.c:74 +#: help.c:70 #, c-format msgid "could not get current user name: %s\n" msgstr "現在のユーザ名を取得できませんした: %s\n" -#: help.c:86 +#: help.c:82 #, c-format msgid "" "psql is the PostgreSQL interactive terminal.\n" @@ -511,12 +545,12 @@ msgstr "" "psql は PostgreSQL の会話型ターミナルです。\n" "\n" -#: help.c:87 +#: help.c:83 #, c-format msgid "Usage:\n" msgstr "使用方法:\n" -#: help.c:88 +#: help.c:84 #, c-format msgid "" " psql [OPTION]... [DBNAME [USERNAME]]\n" @@ -525,12 +559,12 @@ msgstr "" " psql [オプション]... [データベース名 [ユーザ名]]\n" "\n" -#: help.c:90 +#: help.c:86 #, c-format msgid "General options:\n" msgstr "一般的なオプション:\n" -#: help.c:95 +#: help.c:91 #, c-format msgid "" " -c, --command=COMMAND run only single command (SQL or internal) and " @@ -539,25 +573,25 @@ msgstr "" " -c, --command=コマンド (SQLまたは内部の)単一コマンドを一つだけ実行して終" "了\n" -#: help.c:96 +#: help.c:92 #, c-format msgid "" " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" msgstr "" " -d, --dbname=DB名 接続するデータベース名を指定(デフォルト: \"%s\")\n" -#: help.c:97 +#: help.c:93 #, c-format msgid " -f, --file=FILENAME execute commands from file, then exit\n" msgstr "" " -f, --file=ファイル名 ファイルからコマンドを読み込んで実行後、終了\n" -#: help.c:98 +#: help.c:94 #, c-format msgid " -l, --list list available databases, then exit\n" msgstr " -l(エル), --list 使用可能なデータベース一覧を表示して終了\n" -#: help.c:99 +#: help.c:95 #, c-format msgid "" " -v, --set=, --variable=NAME=VALUE\n" @@ -566,12 +600,12 @@ msgstr "" " -v, --set=, --variable=名前=値\n" " psql 変数 '名前' に '値' をセット\n" -#: help.c:101 +#: help.c:97 #, c-format msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" msgstr " -X, --no-psqlrc 初期化ファイル (~/.psqlrc) を読みこまない\n" -#: help.c:102 +#: help.c:98 #, c-format msgid "" " -1 (\"one\"), --single-transaction\n" @@ -581,17 +615,17 @@ msgstr "" " 単一のトランザクションとしてコマンドファイルを実" "行\n" -#: help.c:104 +#: help.c:100 #, c-format msgid " --help show this help, then exit\n" msgstr " --help ヘルプを表示して終了\n" -#: help.c:105 +#: help.c:101 #, c-format msgid " --version output version information, then exit\n" msgstr " --version バージョン情報を表示して終了\n" -#: help.c:107 +#: help.c:103 #, c-format msgid "" "\n" @@ -600,54 +634,54 @@ msgstr "" "\n" "入出力オプション:\n" -#: help.c:108 +#: help.c:104 #, c-format msgid " -a, --echo-all echo all input from script\n" msgstr " -a, --echo-all スクリプトからのすべての入力を表示\n" -#: help.c:109 +#: help.c:105 #, c-format msgid " -e, --echo-queries echo commands sent to server\n" msgstr " -e, --echo-queries サーバーへ送信したコマンドを表示\n" -#: help.c:110 +#: help.c:106 #, c-format msgid "" " -E, --echo-hidden display queries that internal commands generate\n" msgstr " -E, --echo-hidden 内部コマンドが生成したクエリーを表示\n" -#: help.c:111 +#: help.c:107 #, c-format msgid " -L, --log-file=FILENAME send session log to file\n" msgstr " -L, --log-file=ファイル名 セッションログをファイルに書き込む\n" -#: help.c:112 +#: help.c:108 #, c-format msgid "" " -n, --no-readline disable enhanced command line editing (readline)\n" msgstr "" " -n, --no-readline 拡張コマンドライン編集機能(readline)を無効にする\n" -#: help.c:113 +#: help.c:109 #, c-format msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" msgstr "" " -o, --output=ファイル名 クエリーの結果をファイル(または |パイプ)に送る\n" -#: help.c:114 +#: help.c:110 #, c-format msgid "" " -q, --quiet run quietly (no messages, only query output)\n" msgstr "" " -q, --quiet 静かに実行(メッセージなしで、クエリー出力のみ)\n" -#: help.c:115 +#: help.c:111 #, c-format msgid " -s, --single-step single-step mode (confirm each query)\n" msgstr "" " -s, --single-step シングルステップモード(各クエリーごとに確認)\n" -#: help.c:116 +#: help.c:112 #, c-format msgid "" " -S, --single-line single-line mode (end of line terminates SQL " @@ -655,7 +689,7 @@ msgid "" msgstr "" " -S, --single-line 単一行モード(行末を SQL コマンドの終了とみなす)\n" -#: help.c:118 +#: help.c:114 #, c-format msgid "" "\n" @@ -664,12 +698,12 @@ msgstr "" "\n" "出力フォーマットオプション:\n" -#: help.c:119 +#: help.c:115 #, c-format msgid " -A, --no-align unaligned table output mode\n" msgstr " -A, --no-align 桁揃えなしのテーブル出力モード\n" -#: help.c:120 +#: help.c:116 #, c-format msgid "" " -F, --field-separator=STRING\n" @@ -678,12 +712,12 @@ msgstr "" " -F, --field-separator=文字列\n" " フィールド区切り文字を設定(デフォルト: \"%s\")\n" -#: help.c:123 +#: help.c:119 #, c-format msgid " -H, --html HTML table output mode\n" msgstr " -H, --html HTML テーブル出力モード\n" -#: help.c:124 +#: help.c:120 #, c-format msgid "" " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset " @@ -692,7 +726,7 @@ msgstr "" " -P, --pset=変数[=値] 表示オプション '変数' を '値' にセット (\\pset コ" "マンドを参照)\n" -#: help.c:125 +#: help.c:121 #, c-format msgid "" " -R, --record-separator=STRING\n" @@ -701,12 +735,12 @@ msgstr "" " -R, --record-separator=文字列\n" " レコード区切り文字を設定(デフォルト:改行)\n" -#: help.c:127 +#: help.c:123 #, c-format msgid " -t, --tuples-only print rows only\n" msgstr " -t, --tuples-only 行のみを表示\n" -#: help.c:128 +#: help.c:124 #, c-format msgid "" " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, " @@ -714,12 +748,12 @@ msgid "" msgstr "" " -T, --table-attr=TEXT HTMLテーブルのタグ属性をセット(width, border等)\n" -#: help.c:129 +#: help.c:125 #, c-format msgid " -x, --expanded turn on expanded table output\n" msgstr " -x, --expanded 拡張テーブル出力を有効にする\n" -#: help.c:131 +#: help.c:127 #, c-format msgid "" "\n" @@ -728,7 +762,7 @@ msgstr "" "\n" "接続オプション:\n" -#: help.c:134 +#: help.c:130 #, c-format msgid "" " -h, --host=HOSTNAME database server host or socket directory " @@ -737,29 +771,29 @@ msgstr "" " -h, --host=ホスト名 データベースサーバーのホストまたはソケットのディレ" "クトリ(デフォルト: \"%s\")\n" -#: help.c:135 +#: help.c:131 msgid "local socket" msgstr "ローカルソケット" -#: help.c:138 +#: help.c:134 #, c-format msgid " -p, --port=PORT database server port (default: \"%s\")\n" msgstr "" " -p, --port=ポート番号 データベースサーバーのポート番号(デフォルト: \"%s" "\")\n" -#: help.c:144 +#: help.c:140 #, c-format msgid " -U, --username=USERNAME database user name (default: \"%s\")\n" msgstr "" " -U, --username=ユーザー名 データベースのユーザ名(デフォルト: \"%s\")\n" -#: help.c:145 +#: help.c:141 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password パスワード入力を要求しない\n" -#: help.c:146 +#: help.c:142 #, c-format msgid "" " -W, --password force password prompt (should happen " @@ -768,7 +802,7 @@ msgstr "" " -W, --password パスワードプロンプトを強制表示する\n" " (本来は自動的に表示されるはずです)\n" -#: help.c:148 +#: help.c:144 #, c-format msgid "" "\n" @@ -784,23 +818,23 @@ msgstr "" "セクションを参照のこと。\n" "\n" -#: help.c:151 +#: help.c:147 #, c-format msgid "Report bugs to .\n" msgstr "不具合はまで報告してください。\n" -#: help.c:169 +#: help.c:165 #, c-format msgid "General\n" msgstr "一般\n" -#: help.c:170 +#: help.c:166 #, c-format msgid "" " \\copyright show PostgreSQL usage and distribution terms\n" msgstr " \\copyright PostgreSQL の使い方と配布条件を表示\n" -#: help.c:171 +#: help.c:167 #, c-format msgid "" " \\g [FILE] or ; execute query (and send results to file or |pipe)\n" @@ -808,64 +842,64 @@ msgstr "" " \\g [ファイル] または ';' クエリー実行(し、結果をファイルまたは |パイプ " "へ書き出す)\n" -#: help.c:172 +#: help.c:168 #, c-format msgid "" " \\h [NAME] help on syntax of SQL commands, * for all " "commands\n" msgstr " \\h [名前] SQL コマンドの文法ヘルプ、* で全コマンド\n" -#: help.c:173 +#: help.c:169 #, c-format msgid " \\q quit psql\n" msgstr " \\q psql を終了する\n" -#: help.c:176 +#: help.c:172 #, c-format msgid "Query Buffer\n" msgstr "クエリーバッファ\n" -#: help.c:177 +#: help.c:173 #, c-format msgid "" -" \\e [FILE] edit the query buffer (or file) with external " +" \\e [FILE] [LINE] edit the query buffer (or file) with external " "editor\n" msgstr "" -" \\e [ファイル] 現在のクエリーバッファ(やファイル)を外部エディタで" +" \\e [ファイル] [行番号] 現在のクエリーバッファ(やファイル)を外部エディタで" "編集する\n" -#: help.c:178 +#: help.c:174 #, c-format msgid "" -" \\ef [FUNCNAME] edit function definition with external editor\n" -msgstr " \\e [関数名] 関数定義を外部エディタで編集\n" +" \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" +msgstr " \\e [関数名 [行番号]] 関数定義を外部エディタで編集する\n" -#: help.c:179 +#: help.c:175 #, c-format msgid " \\p show the contents of the query buffer\n" msgstr " \\p クエリーバッファの内容を表示する\n" -#: help.c:180 +#: help.c:176 #, c-format msgid " \\r reset (clear) the query buffer\n" msgstr " \\r クエリーバッファをリセット(クリア)する\n" -#: help.c:182 +#: help.c:178 #, c-format msgid " \\s [FILE] display history or save it to file\n" msgstr " \\s [ファイル] ヒストリを表示またはファイルに保存する\n" -#: help.c:184 +#: help.c:180 #, c-format msgid " \\w FILE write query buffer to file\n" msgstr " \\w ファイル クエリーバッファの内容をファイルに書き出す\n" -#: help.c:187 +#: help.c:183 #, c-format msgid "Input/Output\n" msgstr "入出力\n" -#: help.c:188 +#: help.c:184 #, c-format msgid "" " \\copy ... perform SQL COPY with data stream to the client " @@ -874,104 +908,109 @@ msgstr "" " \\copy ... クライアントホストに対し、データストリーム\n" " を使って SQL コピーを行う\n" -#: help.c:189 +#: help.c:185 #, c-format msgid " \\echo [STRING] write string to standard output\n" msgstr " \\echo [文字列] 文字列を標準出力に書き出す\n" -#: help.c:190 +#: help.c:186 #, c-format msgid " \\i FILE execute commands from file\n" msgstr " \\i ファイル ファイルからコマンドを読み込んで実行する\n" -#: help.c:191 +#: help.c:187 #, c-format msgid " \\o [FILE] send all query results to file or |pipe\n" msgstr "" " \\o [ファイル] すべてのクエリーの結果をファイルまたは |パイプ へ送" "る\n" -#: help.c:192 +#: help.c:188 #, c-format msgid "" " \\qecho [STRING] write string to query output stream (see \\o)\n" msgstr "" " \\qecho [文字列] 文字列をクエリー出力ストリームに出力(\\o を参照)\n" -#: help.c:195 +#: help.c:191 #, c-format msgid "Informational\n" msgstr "情報\n" -#: help.c:196 +#: help.c:192 #, c-format msgid " (options: S = show system objects, + = additional detail)\n" msgstr " (修飾子: S = システムオブジェクトを表示 + = 付加情報)\n" -#: help.c:197 +#: help.c:193 #, c-format msgid " \\d[S+] list tables, views, and sequences\n" msgstr "" " \\d[S+] テーブル、ビュー、シーケンスの一覧を表示する\n" -#: help.c:198 +#: help.c:194 #, c-format msgid " \\d[S+] NAME describe table, view, sequence, or index\n" msgstr "" " \\d[S+] 名前 テーブル、ビュー、シーケンス、インデックスの説明を" "表示する\n" -#: help.c:199 +#: help.c:195 #, c-format msgid " \\da[S] [PATTERN] list aggregates\n" msgstr " \\da[S] [パターン] 集約関数の一覧を表示する\n" -#: help.c:200 +#: help.c:196 #, c-format msgid " \\db[+] [PATTERN] list tablespaces\n" msgstr " \\db[+] [パターン] テーブルスペースの一覧を表示する\n" -#: help.c:201 +#: help.c:197 #, c-format msgid " \\dc[S] [PATTERN] list conversions\n" msgstr " \\dc[S] [パターン] 変換ルールの一覧を表示する\n" -#: help.c:202 +#: help.c:198 #, c-format msgid " \\dC [PATTERN] list casts\n" msgstr " \\dC [パターン] キャストの一覧を表示する\n" -#: help.c:203 +#: help.c:199 #, c-format msgid " \\dd[S] [PATTERN] show comments on objects\n" msgstr " \\dd[S] [パターン] オブジェクトのコメントを表示する\n" -#: help.c:204 +#: help.c:200 #, c-format msgid " \\ddp [PATTERN] list default privileges\n" msgstr " \\ddp [パターン] デフォルト権限の一覧を表示する\n" -#: help.c:205 +#: help.c:201 #, c-format msgid " \\dD[S] [PATTERN] list domains\n" msgstr " \\dD[S] [パターン] ドメインの一覧を表示する\n" -#: help.c:206 +#: help.c:202 +#, c-format +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [パターン] 外部テーブルの一覧を表示する\n" + +#: help.c:203 #, c-format msgid " \\des[+] [PATTERN] list foreign servers\n" msgstr " \\des[+] [パターン] 外部サーバーの一覧を表示する\n" -#: help.c:207 +#: help.c:204 #, c-format msgid " \\deu[+] [PATTERN] list user mappings\n" msgstr " \\deu[+] [パターン] ユーザマッピングの一覧を表示する\n" -#: help.c:208 +#: help.c:205 #, c-format msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" msgstr " \\dew[+] [パターン] 外部データラッパーの一覧を表示する\n" -#: help.c:209 +#: help.c:206 #, c-format msgid "" " \\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions\n" @@ -979,54 +1018,64 @@ msgstr "" " \\df[antw][S+] [パターン] 関数(集約/通常/トリガー/ウィンドウのみ)の" "一覧を表示する\n" -#: help.c:210 +#: help.c:207 #, c-format msgid " \\dF[+] [PATTERN] list text search configurations\n" msgstr " \\dF[+] [パターン] テキスト検索設定の一覧を表示する\n" -#: help.c:211 +#: help.c:208 #, c-format msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" msgstr " \\dFd[+] [パターン] テキスト検索用辞書の一覧を表示する\n" -#: help.c:212 +#: help.c:209 #, c-format msgid " \\dFp[+] [PATTERN] list text search parsers\n" msgstr " \\dFp[+] [パターン] テキスト検索用パーサーの一覧を表示する\n" -#: help.c:213 +#: help.c:210 #, c-format msgid " \\dFt[+] [PATTERN] list text search templates\n" msgstr " \\dFt[+] [パターン] テキスト検索用テンプレートの一覧を表示する\n" -#: help.c:214 +#: help.c:211 #, c-format -msgid " \\dg[+] [PATTERN] list roles (groups)\n" -msgstr " \\dg[+] [パターン] ロール(グループ)の一覧を表示する\n" +msgid " \\dg[+] [PATTERN] list roles\n" +msgstr " \\dg[+] [パターン] ロールの一覧を表示する\n" -#: help.c:215 +#: help.c:212 #, c-format msgid " \\di[S+] [PATTERN] list indexes\n" msgstr " \\di[S+] [パターン] インデックスの一覧を表示する\n" -#: help.c:216 +#: help.c:213 #, c-format msgid " \\dl list large objects, same as \\lo_list\n" msgstr "" " \\dl ラージオブジェクトの一覧を表示する。\\lo_list と同" "じ。\n" -#: help.c:217 +#: help.c:214 #, c-format -msgid " \\dn[+] [PATTERN] list schemas\n" -msgstr " \\dn[+] [パターン] スキーマの一覧を表示する\n" +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [パターン] 手続き言語の一覧を表示する\n" -#: help.c:218 +#: help.c:215 +#, c-format +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [パターン] スキーマの一覧を表示する\n" + +#: help.c:216 #, c-format msgid " \\do[S] [PATTERN] list operators\n" msgstr " \\do[S] [名前] 演算子の一覧を表示する\n" -#: help.c:219 +#: help.c:217 +#, c-format +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dD[S+] [パターン] 照合順序の一覧を表示する\n" + +#: help.c:218 #, c-format msgid "" " \\dp [PATTERN] list table, view, and sequence access privileges\n" @@ -1034,68 +1083,83 @@ msgstr "" " \\dp [パターン] テーブル、ビュー、シーケンスのアクセス権一覧を表示" "する\n" -#: help.c:220 +#: help.c:219 #, c-format msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n" msgstr "" " \\drds [パターン1 [パターン2]] データベース毎のロール(ユーザー)設定の一覧" "を表示する\n" -#: help.c:221 +#: help.c:220 #, c-format msgid " \\ds[S+] [PATTERN] list sequences\n" msgstr " \\ds[S+] [パターン] シーケンスの一覧を表示する\n" -#: help.c:222 +#: help.c:221 #, c-format msgid " \\dt[S+] [PATTERN] list tables\n" msgstr " \\dt[S+] [パターン] テーブルの一覧を表示する\n" -#: help.c:223 +#: help.c:222 #, c-format msgid " \\dT[S+] [PATTERN] list data types\n" msgstr " \\dT[S+] [パターン] データ型の一覧を表示する\n" -#: help.c:224 +#: help.c:223 #, c-format -msgid " \\du[+] [PATTERN] list roles (users)\n" -msgstr " \\du[+] [パターン] ロール(ユーザー)の一覧を表示する\n" +msgid " \\du[+] [PATTERN] list roles\n" +msgstr " \\du[+] [パターン] ロールの一覧を表示する\n" -#: help.c:225 +#: help.c:224 #, c-format msgid " \\dv[S+] [PATTERN] list views\n" msgstr " \\dv[S+] [パターン] ビューの一覧を表示する\n" +#: help.c:225 +#, c-format +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [パターン] 外部テーブルの一覧を表示する\n" + #: help.c:226 #, c-format +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [パターン] 拡張の一覧を表示する\n" + +#: help.c:227 +#, c-format msgid " \\l[+] list all databases\n" msgstr " \\l[+] データベースの一覧を表示する\n" -#: help.c:227 +#: help.c:228 +#, c-format +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] 関数名 関数定義を表示する\n" + +#: help.c:229 #, c-format msgid " \\z [PATTERN] same as \\dp\n" msgstr " \\z [パターン] \\dp と同じ\n" -#: help.c:230 +#: help.c:232 #, c-format msgid "Formatting\n" msgstr "書式設定\n" -#: help.c:231 +#: help.c:233 #, c-format msgid "" " \\a toggle between unaligned and aligned output mode\n" msgstr "" " \\a 出力モードの 'unaligned' / 'aligned' を切り替える\n" -#: help.c:232 +#: help.c:234 #, c-format msgid " \\C [STRING] set table title, or unset if none\n" msgstr "" " \\C タイトル テーブルのタイトルをセットする。指定がなければ解" "除\n" -#: help.c:233 +#: help.c:235 #, c-format msgid "" " \\f [STRING] show or set field separator for unaligned query " @@ -1105,12 +1169,12 @@ msgstr "" "に\n" " 使用するフィールド区切り文字を表示または設定する\n" -#: help.c:234 +#: help.c:236 #, c-format msgid " \\H toggle HTML output mode (currently %s)\n" msgstr " \\H HTML の出力モードを切り替える(現在: %s)\n" -#: help.c:236 +#: help.c:238 #, c-format msgid "" " \\pset NAME [VALUE] set table output option\n" @@ -1125,12 +1189,12 @@ msgstr "" " numericlocale|recordsep|tuples_only|title|tableattr|" "pager})\n" -#: help.c:239 +#: help.c:241 #, c-format msgid " \\t [on|off] show only rows (currently %s)\n" msgstr " \\t [on|off] 行のみを表示するか? (現在: %s)\n" -#: help.c:241 +#: help.c:243 #, c-format msgid "" " \\T [STRING] set HTML
tag attributes, or unset if none\n" @@ -1138,17 +1202,17 @@ msgstr "" " \\T [文字列] HTML の
タグの属性をセット。引数がなければ" "解除\n" -#: help.c:242 +#: help.c:244 #, c-format msgid " \\x [on|off] toggle expanded output (currently %s)\n" msgstr " \\x [on|off] 拡張出力の切り替え(現在: %s)\n" -#: help.c:246 +#: help.c:248 #, c-format msgid "Connection\n" msgstr "接続\n" -#: help.c:247 +#: help.c:249 #, c-format msgid "" " \\c[onnect] [DBNAME|- USER|- HOST|- PORT|-]\n" @@ -1157,34 +1221,40 @@ msgstr "" " \\c[onnect] [DB名|- ユーザ名|- ホスト名|- ポート番号|-]\n" " 新しいデータベースに接続する (現在: \"%s\")\n" -#: help.c:250 +#: help.c:252 #, c-format msgid " \\encoding [ENCODING] show or set client encoding\n" msgstr "" " \\encoding [エンコーディング]\n" " クライアントのエンコーディングを表示またはセット\n" -#: help.c:251 +#: help.c:253 #, c-format msgid " \\password [USERNAME] securely change the password for a user\n" msgstr " \\password [ユーザ名] ユーザのパスワードを安全に変更する\n" #: help.c:254 #, c-format +msgid "" +" \\conninfo display information about current connection\n" +msgstr " \\conninfo 現在の接続に関する情報を表示する\n" + +#: help.c:257 +#, c-format msgid "Operating System\n" msgstr "オペレーティングシステム\n" -#: help.c:255 +#: help.c:258 #, c-format msgid " \\cd [DIR] change the current working directory\n" msgstr " \\cd [DIR] カレントディレクトリを変更\n" -#: help.c:256 +#: help.c:259 #, c-format msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" msgstr " \\timing [on|off] コマンドのタイミングを切り替える(現在: %s)\n" -#: help.c:258 +#: help.c:261 #, c-format msgid "" " \\! [COMMAND] execute command in shell or start interactive " @@ -1193,17 +1263,17 @@ msgstr "" " \\! [コマンド] シェルでコマンドを実行、もしくは会話型シェルを起" "動\n" -#: help.c:261 +#: help.c:264 #, c-format msgid "Variables\n" msgstr "変数\n" -#: help.c:262 +#: help.c:265 #, c-format msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" msgstr " \\prompt [テキスト] 変数名 ユーザに内部変数をセットするよう促す\n" -#: help.c:263 +#: help.c:266 #, c-format msgid "" " \\set [NAME [VALUE]] set internal variable, or list all if no " @@ -1212,17 +1282,17 @@ msgstr "" " \\set [変数名 [値]]\n" " 内部変数の値をセット。引数がない場合は一覧表示。\n" -#: help.c:264 +#: help.c:267 #, c-format msgid " \\unset NAME unset (delete) internal variable\n" msgstr " \\unset 変数名 内部変数を削除する\n" -#: help.c:267 +#: help.c:270 #, c-format msgid "Large Objects\n" msgstr "ラージオブジェクト\n" -#: help.c:268 +#: help.c:271 #, c-format msgid "" " \\lo_export LOBOID FILE\n" @@ -1235,11 +1305,11 @@ msgstr "" " \\lo_list\n" " \\lo_unlink LOBOID ラージオブジェクトの操作\n" -#: help.c:321 +#: help.c:318 msgid "Available help:\n" msgstr "利用可能なヘルプ:\n" -#: help.c:410 +#: help.c:402 #, c-format msgid "" "Command: %s\n" @@ -1254,7 +1324,7 @@ msgstr "" "%s\n" "\n" -#: help.c:426 +#: help.c:418 #, c-format msgid "" "No help available for \"%s\".\n" @@ -1296,16 +1366,17 @@ msgstr "%s: トランザクションの状態が不明です。\n" msgid "ID" msgstr "ID" -#: large_obj.c:290 describe.c:146 describe.c:334 describe.c:613 describe.c:762 -#: describe.c:2381 describe.c:2681 describe.c:3310 describe.c:3369 +#: large_obj.c:290 describe.c:147 describe.c:335 describe.c:637 describe.c:787 +#: describe.c:2513 describe.c:2631 describe.c:2968 describe.c:3599 +#: describe.c:3664 msgid "Owner" msgstr "所有者" -#: large_obj.c:291 large_obj.c:301 describe.c:95 describe.c:158 describe.c:337 -#: describe.c:490 describe.c:566 describe.c:637 describe.c:827 describe.c:1318 -#: describe.c:2205 describe.c:2395 describe.c:2689 describe.c:2751 -#: describe.c:2887 describe.c:2926 describe.c:2993 describe.c:3052 -#: describe.c:3061 describe.c:3120 +#: large_obj.c:291 large_obj.c:301 describe.c:96 describe.c:159 describe.c:338 +#: describe.c:501 describe.c:590 describe.c:661 describe.c:852 describe.c:1382 +#: describe.c:2330 describe.c:2537 describe.c:2911 describe.c:2976 +#: describe.c:3041 describe.c:3177 describe.c:3216 describe.c:3283 +#: describe.c:3342 describe.c:3351 describe.c:3410 describe.c:3849 msgid "Description" msgstr "説明" @@ -1373,12 +1444,12 @@ msgid_plural "(%lu rows)" msgstr[0] "(%lu 行)" msgstr[1] "(%lu 行)" -#: startup.c:237 +#: startup.c:243 #, c-format msgid "%s: could not open log file \"%s\": %s\n" msgstr "%s: ログファイル \"%s\" をオープンできません: %s\n" -#: startup.c:299 +#: startup.c:305 #, c-format msgid "" "Type \"help\" for help.\n" @@ -1387,721 +1458,780 @@ msgstr "" "\"help\" でヘルプを表示します.\n" "\n" -#: startup.c:445 +#: startup.c:451 #, c-format msgid "%s: could not set printing parameter \"%s\"\n" msgstr "%s: 表示用パラメータ \"%s\" をセットできませんでした\n" -#: startup.c:484 +#: startup.c:490 #, c-format msgid "%s: could not delete variable \"%s\"\n" msgstr "%s: 変数 \"%s\" を削除できませんでした\n" -#: startup.c:494 +#: startup.c:500 #, c-format msgid "%s: could not set variable \"%s\"\n" msgstr "%s: 変数 \"%s\" をセットできませんでした\n" -#: startup.c:531 startup.c:537 +#: startup.c:537 startup.c:543 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "詳細は '%s --help' をごらんください\n" -#: startup.c:554 +#: startup.c:560 #, c-format msgid "%s: warning: extra command-line argument \"%s\" ignored\n" msgstr "%s: 警告:余分なコマンドラインオプション \"%s\" は無視されます\n" -#: startup.c:619 +#: startup.c:625 msgid "contains support for command-line editing" msgstr "コマンドライン編集機能のサポートが組み込まれています。" -#: describe.c:68 describe.c:235 describe.c:462 describe.c:561 describe.c:682 -#: describe.c:763 describe.c:824 describe.c:2373 describe.c:2494 -#: describe.c:2549 describe.c:2749 describe.c:2976 describe.c:3048 -#: describe.c:3059 describe.c:3118 +#: describe.c:69 describe.c:236 describe.c:463 describe.c:585 describe.c:706 +#: describe.c:788 describe.c:849 describe.c:2504 describe.c:2698 +#: describe.c:2768 describe.c:2903 describe.c:3039 describe.c:3266 +#: describe.c:3338 describe.c:3349 describe.c:3408 describe.c:3782 +#: describe.c:3848 msgid "Schema" msgstr "スキーマ" -#: describe.c:69 describe.c:145 describe.c:236 describe.c:463 describe.c:562 -#: describe.c:612 describe.c:683 describe.c:825 describe.c:2374 -#: describe.c:2495 describe.c:2550 describe.c:2680 describe.c:2750 -#: describe.c:2977 describe.c:3049 describe.c:3060 describe.c:3119 -#: describe.c:3309 describe.c:3368 +#: describe.c:70 describe.c:146 describe.c:237 describe.c:464 describe.c:586 +#: describe.c:636 describe.c:707 describe.c:850 describe.c:2505 +#: describe.c:2627 describe.c:2699 describe.c:2769 describe.c:2904 +#: describe.c:2967 describe.c:3040 describe.c:3267 describe.c:3339 +#: describe.c:3350 describe.c:3409 describe.c:3598 describe.c:3663 +#: describe.c:3846 msgid "Name" msgstr "名前" -#: describe.c:70 describe.c:248 describe.c:294 describe.c:311 +#: describe.c:71 describe.c:249 describe.c:295 describe.c:312 msgid "Result data type" msgstr "結果のデータ型" -#: describe.c:84 describe.c:88 describe.c:249 describe.c:295 describe.c:312 +#: describe.c:85 describe.c:89 describe.c:250 describe.c:296 describe.c:313 msgid "Argument data types" msgstr "引数のデータ型" -#: describe.c:113 +#: describe.c:114 msgid "List of aggregate functions" msgstr "集約関数一覧" -#: describe.c:134 +#: describe.c:135 #, c-format msgid "The server (version %d.%d) does not support tablespaces.\n" msgstr "" "このサーバーのバージョン (%d.%d) はテーブルスペースをサポートしていません。\n" -#: describe.c:147 +#: describe.c:148 msgid "Location" msgstr "場所" -#: describe.c:175 +#: describe.c:176 msgid "List of tablespaces" msgstr "テーブルスペース一覧" -#: describe.c:212 +#: describe.c:213 #, c-format msgid "\\df only takes [antwS+] as options\n" msgstr "\\dfはオプションとして[antwS+]のみを取ることができます\n" -#: describe.c:218 +#: describe.c:219 #, c-format msgid "\\df does not take a \"w\" option with server version %d.%d\n" msgstr "サーバーバージョン%d.%dでは\\dfは\"w\"オプションを受け付けません\n" #. translator: "agg" is short for "aggregate" -#: describe.c:251 describe.c:297 describe.c:314 +#: describe.c:252 describe.c:298 describe.c:315 msgid "agg" msgstr "agg(集約)" -#: describe.c:252 +#: describe.c:253 msgid "window" msgstr "window(ウィンドウ)" -#: describe.c:253 describe.c:298 describe.c:315 describe.c:964 +#: describe.c:254 describe.c:299 describe.c:316 describe.c:990 msgid "trigger" msgstr "trigger(トリガ)" -#: describe.c:254 describe.c:299 describe.c:316 +#: describe.c:255 describe.c:300 describe.c:317 msgid "normal" msgstr "normal(通常)" -#: describe.c:255 describe.c:300 describe.c:317 describe.c:685 describe.c:767 -#: describe.c:1299 describe.c:2380 describe.c:2496 describe.c:3381 +#: describe.c:256 describe.c:301 describe.c:318 describe.c:710 describe.c:792 +#: describe.c:1362 describe.c:2512 describe.c:2700 describe.c:3676 msgid "Type" msgstr "型" -#: describe.c:330 +#: describe.c:331 msgid "immutable" msgstr "不変" -#: describe.c:331 +#: describe.c:332 msgid "stable" msgstr "安定" -#: describe.c:332 +#: describe.c:333 msgid "volatile" msgstr "揮発性" -#: describe.c:333 +#: describe.c:334 msgid "Volatility" msgstr "揮発性" -#: describe.c:335 +#: describe.c:336 msgid "Language" msgstr "言語" -#: describe.c:336 +#: describe.c:337 msgid "Source code" msgstr "ソースコード" -#: describe.c:434 +#: describe.c:435 msgid "List of functions" msgstr "関数一覧" -#: describe.c:473 +#: describe.c:474 msgid "Internal name" msgstr "内部名" -#: describe.c:474 describe.c:629 describe.c:2391 +#: describe.c:475 describe.c:653 describe.c:2529 describe.c:2533 msgid "Size" msgstr "サイズ" -#: describe.c:486 +#: describe.c:496 msgid "Elements" msgstr "要素" -#: describe.c:530 +#: describe.c:541 msgid "List of data types" msgstr "データ型一覧" -#: describe.c:563 +#: describe.c:587 msgid "Left arg type" msgstr "左辺の型" -#: describe.c:564 +#: describe.c:588 msgid "Right arg type" msgstr "右辺の型" -#: describe.c:565 +#: describe.c:589 msgid "Result type" msgstr "結果の型" -#: describe.c:584 +#: describe.c:608 msgid "List of operators" msgstr "演算子一覧" -#: describe.c:614 +#: describe.c:638 msgid "Encoding" msgstr "エンコーディング" -#: describe.c:619 -msgid "Collation" +#: describe.c:643 describe.c:2905 +msgid "Collate" msgstr "照合順序" -#: describe.c:620 +#: describe.c:644 describe.c:2906 msgid "Ctype" msgstr "Ctype(変換演算子)" -#: describe.c:633 +#: describe.c:657 msgid "Tablespace" msgstr "テーブルスペース" -#: describe.c:650 +#: describe.c:674 msgid "List of databases" msgstr "データベース一覧" -#: describe.c:684 describe.c:764 describe.c:919 describe.c:2375 sql_help.c:443 -#: sql_help.c:660 sql_help.c:761 sql_help.c:1177 sql_help.c:1304 -#: sql_help.c:1338 sql_help.c:1573 sql_help.c:1722 sql_help.c:1883 -#: sql_help.c:1964 sql_help.c:2158 sql_help.c:2718 sql_help.c:2738 -#: sql_help.c:2740 sql_help.c:2741 +#: describe.c:708 describe.c:789 describe.c:944 describe.c:2506 sql_help.c:595 +#: sql_help.c:842 sql_help.c:969 sql_help.c:1432 sql_help.c:1562 +#: sql_help.c:1596 sql_help.c:1842 sql_help.c:2000 sql_help.c:2185 +#: sql_help.c:2266 sql_help.c:2472 sql_help.c:3103 sql_help.c:3123 +#: sql_help.c:3125 sql_help.c:3126 msgid "table" msgstr "テーブル" -#: describe.c:684 describe.c:920 describe.c:2376 +#: describe.c:708 describe.c:945 describe.c:2507 msgid "view" msgstr "ビュー" -#: describe.c:684 describe.c:765 describe.c:922 describe.c:2378 +#: describe.c:708 describe.c:790 describe.c:947 describe.c:2509 msgid "sequence" msgstr "シーケンス" -#: describe.c:696 +#: describe.c:709 describe.c:948 describe.c:2511 +msgid "foreign table" +msgstr "外部テーブル" + +#: describe.c:721 msgid "Column access privileges" -msgstr "アクセス権限を剥奪する" +msgstr "カラムのアクセス権限" -#: describe.c:722 describe.c:3476 describe.c:3480 +#: describe.c:747 describe.c:3993 describe.c:3997 msgid "Access privileges" msgstr "アクセス権" -#: describe.c:750 +#: describe.c:775 #, c-format msgid "" "The server (version %d.%d) does not support altering default privileges.\n" msgstr "" "このサーバー(バージョン%d.%d)は代替のデフォルト権限をサポートしていません。\n" -#: describe.c:766 describe.c:858 +#: describe.c:791 describe.c:883 msgid "function" msgstr "関数" -#: describe.c:790 +#: describe.c:815 msgid "Default access privileges" msgstr "デフォルトのアクセス権限" -#: describe.c:826 +#: describe.c:851 msgid "Object" msgstr "オブジェクト" -#: describe.c:838 +#: describe.c:863 msgid "aggregate" msgstr "集約関数" -#: describe.c:877 sql_help.c:1456 sql_help.c:2456 sql_help.c:2524 -#: sql_help.c:2655 sql_help.c:2756 sql_help.c:2807 +#: describe.c:902 sql_help.c:1715 sql_help.c:2833 sql_help.c:2903 +#: sql_help.c:3036 sql_help.c:3141 sql_help.c:3192 msgid "operator" msgstr "演算子" -#: describe.c:896 +#: describe.c:921 msgid "data type" msgstr "データ型" -#: describe.c:921 describe.c:2377 +#: describe.c:946 describe.c:2508 msgid "index" msgstr "インデックス" -#: describe.c:943 +#: describe.c:969 msgid "rule" msgstr "ルール" -#: describe.c:987 +#: describe.c:1013 msgid "Object descriptions" msgstr "オブジェクトの説明" -#: describe.c:1040 +#: describe.c:1066 #, c-format msgid "Did not find any relation named \"%s\".\n" msgstr "\"%s\" という名前のリレーションが見つかりません。\n" -#: describe.c:1194 +#: describe.c:1238 #, c-format msgid "Did not find any relation with OID %s.\n" msgstr "OID %s を持つリレーションが見つかりません。\n" -#: describe.c:1262 +#: describe.c:1314 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "ログを取らないテーブル \"%s.%s\"" + +#: describe.c:1317 #, c-format msgid "Table \"%s.%s\"" msgstr "テーブル \"%s.%s\"" -#: describe.c:1266 +#: describe.c:1321 #, c-format msgid "View \"%s.%s\"" msgstr "ビュー \"%s.%s\"" -#: describe.c:1270 +#: describe.c:1325 #, c-format msgid "Sequence \"%s.%s\"" msgstr "シーケンス \"%s.%s\"" -#: describe.c:1274 +#: describe.c:1330 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "ログを取らないインデックス \"%s.%s\"" + +#: describe.c:1333 #, c-format msgid "Index \"%s.%s\"" msgstr "インデックス \"%s.%s\"" -#: describe.c:1279 +#: describe.c:1338 #, c-format msgid "Special relation \"%s.%s\"" msgstr "特殊なリレーション \"%s.%s\"" -#: describe.c:1283 +#: describe.c:1342 #, c-format msgid "TOAST table \"%s.%s\"" msgstr "TOAST テーブル \"%s.%s\"" -#: describe.c:1287 +#: describe.c:1346 #, c-format msgid "Composite type \"%s.%s\"" msgstr "複合型 \"%s.%s\"" -#: describe.c:1298 +#: describe.c:1350 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "外部テーブル \"%s.%s\"" + +#: describe.c:1361 msgid "Column" msgstr "カラム" -#: describe.c:1305 +#: describe.c:1369 msgid "Modifiers" msgstr "修飾語" -#: describe.c:1310 +#: describe.c:1374 msgid "Value" msgstr "値" -#: describe.c:1313 +#: describe.c:1377 msgid "Definition" msgstr "定義" -#: describe.c:1317 +#: describe.c:1381 msgid "Storage" msgstr "ストレージ" -#: describe.c:1359 +#: describe.c:1427 +#, c-format +msgid "collate %s" +msgstr "照合順序 %s" + +#: describe.c:1435 msgid "not null" msgstr "not null" #. translator: default values of column definitions -#: describe.c:1368 +#: describe.c:1445 #, c-format msgid "default %s" msgstr "default %s" -#: describe.c:1459 +#: describe.c:1536 msgid "primary key, " msgstr "プライマリキー, " -#: describe.c:1461 +#: describe.c:1538 msgid "unique, " msgstr "ユニーク, " -#: describe.c:1467 +#: describe.c:1544 #, c-format msgid "for table \"%s.%s\"" msgstr "テーブル \"%s.%s\" 用" -#: describe.c:1471 +#: describe.c:1548 #, c-format msgid ", predicate (%s)" msgstr ", 述語 (%s)" -#: describe.c:1474 +#: describe.c:1551 msgid ", clustered" msgstr ", クラスタ化済み" -#: describe.c:1477 +#: describe.c:1554 msgid ", invalid" msgstr ", 無効" -#: describe.c:1480 +#: describe.c:1557 msgid ", deferrable" msgstr ", 遅延可能" -#: describe.c:1483 +#: describe.c:1560 msgid ", initially deferred" msgstr ", 最初から遅延されている" -#: describe.c:1497 +#: describe.c:1574 msgid "View definition:" msgstr "ビュー定義:" -#: describe.c:1514 describe.c:1792 +#: describe.c:1591 describe.c:1874 msgid "Rules:" msgstr "ルール:" -#: describe.c:1573 +#: describe.c:1650 msgid "Indexes:" msgstr "インデックス:" -#: describe.c:1648 +#: describe.c:1730 msgid "Check constraints:" msgstr "CHECK 制約:" -#: describe.c:1679 +#: describe.c:1761 msgid "Foreign-key constraints:" msgstr "外部キー制約:" -#: describe.c:1710 +#: describe.c:1792 msgid "Referenced by:" msgstr "参照元:" -#: describe.c:1795 +#: describe.c:1877 msgid "Disabled rules:" msgstr "無効にされたルール:" -#: describe.c:1798 +#: describe.c:1880 msgid "Rules firing always:" msgstr "常に無視されるルール" -#: describe.c:1801 +#: describe.c:1883 msgid "Rules firing on replica only:" msgstr "レプリカでのみ無視されるルール" -#: describe.c:1903 +#: describe.c:1991 msgid "Triggers:" msgstr "トリガ:" -#: describe.c:1906 +#: describe.c:1994 msgid "Disabled triggers:" msgstr "無効にされたトリガ:" -#: describe.c:1909 +#: describe.c:1997 msgid "Triggers firing always:" msgstr "常に無視されるトリガ" -#: describe.c:1912 +#: describe.c:2000 msgid "Triggers firing on replica only:" msgstr "レプリカでのみ無視されるトリガ" -#: describe.c:1945 +#: describe.c:2066 msgid "Inherits" msgstr "継承" -#: describe.c:1975 +#: describe.c:2096 #, c-format msgid "Number of child tables: %d (Use \\d+ to list them.)" msgstr "子テーブルの数:%d(\\d で一覧表示)" -#: describe.c:1982 +#: describe.c:2103 msgid "Child tables" msgstr "子テーブル" -#: describe.c:2004 +#: describe.c:2125 #, c-format msgid "Typed table of type: %s" msgstr "型付けされたテーブルの型:%s" -#: describe.c:2011 +#: describe.c:2132 msgid "Has OIDs" msgstr "OID を持つ" -#: describe.c:2014 describe.c:2553 describe.c:2627 +#: describe.c:2135 describe.c:2772 describe.c:2846 msgid "yes" msgstr "yes" -#: describe.c:2014 describe.c:2553 describe.c:2627 +#: describe.c:2135 describe.c:2772 describe.c:2846 msgid "no" msgstr "no" -#: describe.c:2022 describe.c:3319 describe.c:3383 describe.c:3439 +#: describe.c:2143 describe.c:3614 describe.c:3678 describe.c:3734 +#: describe.c:3789 msgid "Options" msgstr "オプション" -#: describe.c:2107 +#: describe.c:2228 #, c-format msgid "Tablespace: \"%s\"" msgstr "テーブルスペース \"%s\"" -#: describe.c:2120 +#: describe.c:2241 #, c-format msgid ", tablespace \"%s\"" msgstr "テーブルスペース \"%s\"" -#: describe.c:2198 +#: describe.c:2323 msgid "List of roles" msgstr "ロール一覧" -#: describe.c:2200 +#: describe.c:2325 msgid "Role name" msgstr "ロール名" -#: describe.c:2201 +#: describe.c:2326 msgid "Attributes" msgstr "属性" -#: describe.c:2202 +#: describe.c:2327 msgid "Member of" msgstr "メンバー" -#: describe.c:2213 +#: describe.c:2338 msgid "Superuser" msgstr "スーパーユーザ" -#: describe.c:2216 +#: describe.c:2341 msgid "No inheritance" msgstr "継承なし" -#: describe.c:2219 +#: describe.c:2344 msgid "Create role" msgstr "ロールを作成できる" -#: describe.c:2222 +#: describe.c:2347 msgid "Create DB" msgstr "DBを作成できる" -#: describe.c:2225 +#: describe.c:2350 msgid "Cannot login" msgstr "ログインできない" -#: describe.c:2234 +#: describe.c:2354 +msgid "Replication" +msgstr "レプリケーション" + +#: describe.c:2363 msgid "No connections" msgstr "接続なし" -#: describe.c:2236 +#: describe.c:2365 #, c-format msgid "%d connection" msgid_plural "%d connections" msgstr[0] "%d 個の接続" msgstr[1] "%d 個の接続" -#: describe.c:2303 +#: describe.c:2432 #, c-format msgid "No per-database role settings support in this server version.\n" msgstr "" "このバージョンのサーバーでは、データベース毎のロール設定をサポートしていませ" "ん。\n" -#: describe.c:2314 +#: describe.c:2443 #, c-format msgid "No matching settings found.\n" msgstr "マッチする設定が見つかりません\n" -#: describe.c:2316 +#: describe.c:2445 #, c-format msgid "No settings found.\n" msgstr "設定がありません。\n" -#: describe.c:2321 +#: describe.c:2450 msgid "List of settings" msgstr "設定の一覧" -#: describe.c:2379 +#: describe.c:2510 msgid "special" msgstr "特殊" -#: describe.c:2386 +#: describe.c:2518 describe.c:3783 msgid "Table" msgstr "テーブル" -#: describe.c:2446 +#: describe.c:2592 #, c-format msgid "No matching relations found.\n" msgstr "マッチするリレーションが見つかりません\n" -#: describe.c:2448 +#: describe.c:2594 #, c-format msgid "No relations found.\n" msgstr "リレーションがありません。\n" -#: describe.c:2453 +#: describe.c:2599 msgid "List of relations" msgstr "リレーションの一覧" -#: describe.c:2497 +#: describe.c:2635 +msgid "Trusted" +msgstr "信頼?" + +#: describe.c:2643 +msgid "Internal Language" +msgstr "内部言語" + +#: describe.c:2644 +msgid "Call Handler" +msgstr "呼び出しハンドラー" + +#: describe.c:2645 describe.c:3606 +msgid "Validator" +msgstr "バリデータ" + +#: describe.c:2648 +msgid "Inline Handler" +msgstr "インラインハンドラー" + +#: describe.c:2669 +msgid "List of languages" +msgstr "言語一覧" + +#: describe.c:2709 msgid "Modifier" msgstr "修飾語" -#: describe.c:2498 +#: describe.c:2717 msgid "Check" msgstr "チェック" -#: describe.c:2516 +#: describe.c:2735 msgid "List of domains" msgstr "ドメイン一覧" -#: describe.c:2551 +#: describe.c:2770 msgid "Source" msgstr "ソース" -#: describe.c:2552 +#: describe.c:2771 msgid "Destination" msgstr "宛先" -#: describe.c:2554 +#: describe.c:2773 msgid "Default?" msgstr "デフォルト?" -#: describe.c:2572 +#: describe.c:2791 msgid "List of conversions" msgstr "変換ルール一覧" -#: describe.c:2624 +#: describe.c:2843 msgid "Source type" msgstr "ソースの型" -#: describe.c:2625 +#: describe.c:2844 msgid "Target type" msgstr "ターゲットの型" -#: describe.c:2626 describe.c:2886 +#: describe.c:2845 describe.c:3176 msgid "Function" msgstr "関数" -#: describe.c:2627 +#: describe.c:2846 msgid "in assignment" msgstr "代入" -#: describe.c:2628 +#: describe.c:2847 msgid "Implicit?" msgstr "暗黙?" -#: describe.c:2654 +#: describe.c:2873 msgid "List of casts" msgstr "キャスト一覧" -#: describe.c:2709 +#: describe.c:2941 +msgid "List of collations" +msgstr "照合順序一覧" + +#: describe.c:2999 msgid "List of schemas" msgstr "スキーマ一覧" -#: describe.c:2732 describe.c:2965 describe.c:3033 describe.c:3101 +#: describe.c:3022 describe.c:3255 describe.c:3323 describe.c:3391 #, c-format msgid "The server (version %d.%d) does not support full text search.\n" msgstr "このバージョン (%d.%d) のサーバーは全文検索をサポートしていません。\n" -#: describe.c:2766 +#: describe.c:3056 msgid "List of text search parsers" msgstr "テキスト検索用パーサ一覧" -#: describe.c:2809 +#: describe.c:3099 #, c-format msgid "Did not find any text search parser named \"%s\".\n" msgstr "テキスト検索用パーサ \"%s\" が見つかりません。\n" -#: describe.c:2884 +#: describe.c:3174 msgid "Start parse" msgstr "パース起動" -#: describe.c:2885 +#: describe.c:3175 msgid "Method" msgstr "メソッド" -#: describe.c:2889 +#: describe.c:3179 msgid "Get next token" msgstr "次のトークンを取得" -#: describe.c:2891 +#: describe.c:3181 msgid "End parse" msgstr "パース終了" -#: describe.c:2893 +#: describe.c:3183 msgid "Get headline" msgstr "見出しの取得" -#: describe.c:2895 +#: describe.c:3185 msgid "Get token types" msgstr "トークンタイプの取得" -#: describe.c:2905 +#: describe.c:3195 #, c-format msgid "Text search parser \"%s.%s\"" msgstr "テキスト検索用パーサ \"%s.%s\"" -#: describe.c:2907 +#: describe.c:3197 #, c-format msgid "Text search parser \"%s\"" msgstr "テキスト検索用パーサ \"%s\"" -#: describe.c:2925 +#: describe.c:3215 msgid "Token name" msgstr "トークン名" -#: describe.c:2936 +#: describe.c:3226 #, c-format msgid "Token types for parser \"%s.%s\"" msgstr "パーサ \"%s.%s\" のトークンタイプ" -#: describe.c:2938 +#: describe.c:3228 #, c-format msgid "Token types for parser \"%s\"" msgstr "パーサ \"%s\" のトークンタイプ" -#: describe.c:2987 +#: describe.c:3277 msgid "Template" msgstr "テンプレート" -#: describe.c:2988 +#: describe.c:3278 msgid "Init options" msgstr "初期化オプション:" -#: describe.c:3010 +#: describe.c:3300 msgid "List of text search dictionaries" msgstr "テキスト検索用辞書の一覧" -#: describe.c:3050 +#: describe.c:3340 msgid "Init" msgstr "初期化" -#: describe.c:3051 +#: describe.c:3341 msgid "Lexize" msgstr "Lex 処理" -#: describe.c:3078 +#: describe.c:3368 msgid "List of text search templates" msgstr "テキスト検索用テンプレート一覧" -#: describe.c:3135 +#: describe.c:3425 msgid "List of text search configurations" msgstr "テキスト検索用設定一覧" -#: describe.c:3179 +#: describe.c:3469 #, c-format msgid "Did not find any text search configuration named \"%s\".\n" msgstr "テキスト検索用設定 \"%s\" が見つかりません。\n" -#: describe.c:3245 +#: describe.c:3535 msgid "Token" msgstr "トークン" -#: describe.c:3246 +#: describe.c:3536 msgid "Dictionaries" msgstr "辞書" -#: describe.c:3257 +#: describe.c:3547 #, c-format msgid "Text search configuration \"%s.%s\"" msgstr "テキスト検索用設定 \"%s.%s\"" -#: describe.c:3260 +#: describe.c:3550 #, c-format msgid "Text search configuration \"%s\"" msgstr "テキスト検索用設定 \"%s\"" -#: describe.c:3264 +#: describe.c:3554 #, c-format msgid "" "\n" @@ -2110,7 +2240,7 @@ msgstr "" "\n" "パーサ: \"%s.%s\"" -#: describe.c:3267 +#: describe.c:3557 #, c-format msgid "" "\n" @@ -2119,555 +2249,627 @@ msgstr "" "\n" "パーサ:\"%s\"" -#: describe.c:3299 +#: describe.c:3589 #, c-format msgid "The server (version %d.%d) does not support foreign-data wrappers.\n" msgstr "" "このバージョン (%d.%d) のサーバーは外部データラッパーをサポートしていませ" "ん。\n" -#: describe.c:3311 -msgid "Validator" -msgstr "バリデータ" +#: describe.c:3603 +msgid "Handler" +msgstr "ハンドラー" -#: describe.c:3335 +#: describe.c:3630 msgid "List of foreign-data wrappers" msgstr "外部データラッパーの一覧" -#: describe.c:3358 +#: describe.c:3653 #, c-format msgid "The server (version %d.%d) does not support foreign servers.\n" msgstr "このサーバー(バージョン%d.%d)は外部サーバーをサポートしていません。\n" -#: describe.c:3370 +#: describe.c:3665 msgid "Foreign-data wrapper" msgstr "外部データラッパー" -#: describe.c:3382 +#: describe.c:3677 describe.c:3847 msgid "Version" msgstr "バージョン" -#: describe.c:3401 +#: describe.c:3696 msgid "List of foreign servers" msgstr "外部サーバー一覧" -#: describe.c:3424 +#: describe.c:3719 #, c-format msgid "The server (version %d.%d) does not support user mappings.\n" msgstr "このサーバー(バージョン%d.%d)はユーザマップをサポートしていません。\n" -#: describe.c:3433 +#: describe.c:3728 describe.c:3784 msgid "Server" msgstr "サーバー" -#: describe.c:3434 +#: describe.c:3729 msgid "User name" msgstr "ユーザ名" -#: describe.c:3454 +#: describe.c:3749 msgid "List of user mappings" msgstr "ユーザマッピングの一覧" -#: sql_help.h:173 sql_help.h:788 +#: describe.c:3772 +#, c-format +msgid "The server (version %d.%d) does not support foreign tables.\n" +msgstr "このサーバー(バージョン%d.%d)は外部テーブルをサポートしていません。\n" + +#: describe.c:3810 +msgid "List of foreign tables" +msgstr "外部テーブル一覧" + +#: describe.c:3833 describe.c:3887 +#, c-format +msgid "The server (version %d.%d) does not support extensions.\n" +msgstr "このサーバーのバージョン (%d.%d) は拡張をサポートしていません。\n" + +#: describe.c:3864 +msgid "List of installed extensions" +msgstr "インストール済みの拡張の一覧" + +#: describe.c:3914 +#, c-format +msgid "Did not find any extension named \"%s\".\n" +msgstr "\"%s\" という名前の拡張が見つかりません。\n" + +#: describe.c:3917 +#, c-format +msgid "Did not find any extensions.\n" +msgstr "拡張がまったく見つかりません。\n" + +#: describe.c:3961 +msgid "Object Description" +msgstr "オブジェクトの説明" + +#: describe.c:3970 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "拡張\"%s\"内のオブジェクト" + +#: sql_help.h:182 sql_help.h:837 msgid "abort the current transaction" msgstr "現在のトランザクションを中断する" -#: sql_help.h:178 +#: sql_help.h:187 msgid "change the definition of an aggregate function" msgstr "集約関数の定義を変更する" -#: sql_help.h:183 +#: sql_help.h:192 +msgid "change the definition of a collation" +msgstr "照合順序の定義を変更する" + +#: sql_help.h:197 msgid "change the definition of a conversion" msgstr "エンコーディング変換ルールの定義を変更する" -#: sql_help.h:188 +#: sql_help.h:202 msgid "change a database" msgstr "データベースを変更する" -#: sql_help.h:193 +#: sql_help.h:207 msgid "define default access privileges" msgstr "デフォルトのアクセス権限を定義する" -#: sql_help.h:198 +#: sql_help.h:212 msgid "change the definition of a domain" msgstr "ドメインの定義を変更する" -#: sql_help.h:203 +#: sql_help.h:217 +msgid "change the definition of an extension" +msgstr "拡張の定義を変更する" + +#: sql_help.h:222 msgid "change the definition of a foreign-data wrapper" msgstr "外部データラッパーの定義を変更する" -#: sql_help.h:208 +#: sql_help.h:227 +msgid "change the definition of a foreign table" +msgstr "外部テーブルの定義を変更する" + +#: sql_help.h:232 msgid "change the definition of a function" msgstr "関数の定義を変更する" -#: sql_help.h:213 +#: sql_help.h:237 msgid "change role name or membership" msgstr "ロールの名前またはメンバーシップを変更する" -#: sql_help.h:218 +#: sql_help.h:242 msgid "change the definition of an index" msgstr "インデックスの定義を変更する" -#: sql_help.h:223 +#: sql_help.h:247 msgid "change the definition of a procedural language" msgstr "手続き言語の定義を変更する" -#: sql_help.h:228 +#: sql_help.h:252 msgid "change the definition of a large object" msgstr "ラージオブジェクトの定義を変更する" -#: sql_help.h:233 +#: sql_help.h:257 msgid "change the definition of an operator" msgstr "演算子の定義を変更する" -#: sql_help.h:238 +#: sql_help.h:262 msgid "change the definition of an operator class" msgstr "演算子クラスの定義を変更する" -#: sql_help.h:243 +#: sql_help.h:267 msgid "change the definition of an operator family" msgstr "演算子ファミリの定義を変更する" -#: sql_help.h:248 sql_help.h:308 +#: sql_help.h:272 sql_help.h:332 msgid "change a database role" msgstr "データベースのロールを変更する" -#: sql_help.h:253 +#: sql_help.h:277 msgid "change the definition of a schema" msgstr "スキーマの定義を変更する" -#: sql_help.h:258 +#: sql_help.h:282 msgid "change the definition of a sequence generator" -msgstr "シーケンス生成器の定義を変更する" +msgstr "シーケンスジェネレーターの定義を変更する" -#: sql_help.h:263 +#: sql_help.h:287 msgid "change the definition of a foreign server" msgstr "外部サーバーの定義を変更する" -#: sql_help.h:268 +#: sql_help.h:292 msgid "change the definition of a table" msgstr "テーブルの定義を変更する" -#: sql_help.h:273 +#: sql_help.h:297 msgid "change the definition of a tablespace" msgstr "テーブルスペースの定義を変更する" -#: sql_help.h:278 +#: sql_help.h:302 msgid "change the definition of a text search configuration" msgstr "テキスト検索設定の定義を変更する" -#: sql_help.h:283 +#: sql_help.h:307 msgid "change the definition of a text search dictionary" msgstr "テキスト検索辞書の定義を変更する" -#: sql_help.h:288 +#: sql_help.h:312 msgid "change the definition of a text search parser" msgstr "テキスト検索パーサの定義を変更する" -#: sql_help.h:293 +#: sql_help.h:317 msgid "change the definition of a text search template" msgstr "テキスト検索テンプレートの定義を変更する" -#: sql_help.h:298 +#: sql_help.h:322 msgid "change the definition of a trigger" msgstr "トリガの定義を変更する" -#: sql_help.h:303 +#: sql_help.h:327 msgid "change the definition of a type" msgstr "型の定義を変更する" -#: sql_help.h:313 +#: sql_help.h:337 msgid "change the definition of a user mapping" msgstr "ユーザマッピングの定義を変更する" -#: sql_help.h:318 +#: sql_help.h:342 msgid "change the definition of a view" msgstr "ビューの定義を変更する" -#: sql_help.h:323 +#: sql_help.h:347 msgid "collect statistics about a database" msgstr "データベースの統計情報を収集する" -#: sql_help.h:328 sql_help.h:848 +#: sql_help.h:352 sql_help.h:902 msgid "start a transaction block" msgstr "トランザクションブロックを開始する" -#: sql_help.h:333 +#: sql_help.h:357 msgid "force a transaction log checkpoint" msgstr "トランザクションログのチェックポイントを強制設定する" -#: sql_help.h:338 +#: sql_help.h:362 msgid "close a cursor" msgstr "カーソルを閉じる" -#: sql_help.h:343 +#: sql_help.h:367 msgid "cluster a table according to an index" msgstr "インデックスに従ってテーブルをクラスタ化する" -#: sql_help.h:348 +#: sql_help.h:372 msgid "define or change the comment of an object" msgstr "オブジェクトのコメントを定義または変更する" -#: sql_help.h:353 sql_help.h:698 +#: sql_help.h:377 sql_help.h:747 msgid "commit the current transaction" -msgstr "現在のトランザクションをコミット(確定)する" +msgstr "現在のトランザクションをコミットする" -#: sql_help.h:358 +#: sql_help.h:382 msgid "commit a transaction that was earlier prepared for two-phase commit" msgstr "" -"2フェーズコミットのために事前に準備されたトランザクションを\n" -"コミットする" +"2フェーズコミットのために事前に準備されたトランザクションをコミットする" -#: sql_help.h:363 +#: sql_help.h:387 msgid "copy data between a file and a table" msgstr "ファイルとテーブル間でデータをコピーする" -#: sql_help.h:368 +#: sql_help.h:392 msgid "define a new aggregate function" msgstr "新しい集約関数を定義する" -#: sql_help.h:373 +#: sql_help.h:397 msgid "define a new cast" msgstr "新しいキャストを定義する" -#: sql_help.h:378 -msgid "define a new constraint trigger" -msgstr "新しい制約トリガを定義する" +#: sql_help.h:402 +msgid "define a new collation" +msgstr "新しい照合順序を定義する" -#: sql_help.h:383 +#: sql_help.h:407 msgid "define a new encoding conversion" msgstr "新しいエンコーディングの変換ルールを定義する" -#: sql_help.h:388 +#: sql_help.h:412 msgid "create a new database" msgstr "新しいデータベースを作成する" -#: sql_help.h:393 +#: sql_help.h:417 msgid "define a new domain" msgstr "新しいドメインを定義する" -#: sql_help.h:398 +#: sql_help.h:422 +msgid "install an extension" +msgstr "拡張をインストールする" + +#: sql_help.h:427 msgid "define a new foreign-data wrapper" msgstr "新しい外部データラッパーを定義する" -#: sql_help.h:403 +#: sql_help.h:432 +msgid "define a new foreign table" +msgstr "新しい外部テーブルを定義する" + +#: sql_help.h:437 msgid "define a new function" msgstr "新しい関数を定義する" -#: sql_help.h:408 sql_help.h:438 sql_help.h:508 +#: sql_help.h:442 sql_help.h:472 sql_help.h:542 msgid "define a new database role" msgstr "データベースの新しいロールを定義する" -#: sql_help.h:413 +#: sql_help.h:447 msgid "define a new index" msgstr "新しいインデックスを定義する" -#: sql_help.h:418 +#: sql_help.h:452 msgid "define a new procedural language" msgstr "新しい手続き言語を定義する" -#: sql_help.h:423 +#: sql_help.h:457 msgid "define a new operator" msgstr "新しい演算子を定義する" -#: sql_help.h:428 +#: sql_help.h:462 msgid "define a new operator class" msgstr "新しい演算子クラスを定義する" -#: sql_help.h:433 +#: sql_help.h:467 msgid "define a new operator family" msgstr "新しい演算子ファミリを定義する" -#: sql_help.h:443 +#: sql_help.h:477 msgid "define a new rewrite rule" msgstr "新しい書き換えルールを定義する" -#: sql_help.h:448 +#: sql_help.h:482 msgid "define a new schema" msgstr "新しいスキーマを定義する" -#: sql_help.h:453 +#: sql_help.h:487 msgid "define a new sequence generator" -msgstr "新しいシーケンス発生器を定義する" +msgstr "新しいシーケンスジェネレーターを定義する" -#: sql_help.h:458 +#: sql_help.h:492 msgid "define a new foreign server" msgstr "新しい外部サーバーを定義する" -#: sql_help.h:463 +#: sql_help.h:497 msgid "define a new table" msgstr "新しいテーブルを定義する" -#: sql_help.h:468 sql_help.h:813 +#: sql_help.h:502 sql_help.h:867 msgid "define a new table from the results of a query" msgstr "クエリーの結果から新しいテーブルを生成する" -#: sql_help.h:473 +#: sql_help.h:507 msgid "define a new tablespace" msgstr "新しいテーブルスペースを定義する" -#: sql_help.h:478 +#: sql_help.h:512 msgid "define a new text search configuration" msgstr "新しいテキスト検索設定を定義する" -#: sql_help.h:483 +#: sql_help.h:517 msgid "define a new text search dictionary" msgstr "新しいテキスト検索用辞書を定義する" -#: sql_help.h:488 +#: sql_help.h:522 msgid "define a new text search parser" msgstr "新しいテキスト検索用パーサを定義する" -#: sql_help.h:493 +#: sql_help.h:527 msgid "define a new text search template" msgstr "新しいテキスト検索テンプレートを定義する" -#: sql_help.h:498 +#: sql_help.h:532 msgid "define a new trigger" msgstr "新しいトリガを定義する" -#: sql_help.h:503 +#: sql_help.h:537 msgid "define a new data type" msgstr "新しいデータ型を定義する" -#: sql_help.h:513 +#: sql_help.h:547 msgid "define a new mapping of a user to a foreign server" msgstr "外部サーバーに対してユーザの新しいマッピングを定義する" -#: sql_help.h:518 +#: sql_help.h:552 msgid "define a new view" msgstr "新しいビューを定義する" -#: sql_help.h:523 +#: sql_help.h:557 msgid "deallocate a prepared statement" -msgstr "準備済みステートメントを開放する" +msgstr "プリペアドステートメントを開放する" -#: sql_help.h:528 +#: sql_help.h:562 msgid "define a cursor" msgstr "カーソルを定義する" -#: sql_help.h:533 +#: sql_help.h:567 msgid "delete rows of a table" msgstr "テーブルの行を削除する" -#: sql_help.h:538 +#: sql_help.h:572 msgid "discard session state" msgstr "セッションの状態を破棄する" -#: sql_help.h:543 +#: sql_help.h:577 msgid "execute an anonymous code block" msgstr "無名コードブロックを実行する" -#: sql_help.h:548 +#: sql_help.h:582 msgid "remove an aggregate function" msgstr "集約関数を削除する" -#: sql_help.h:553 +#: sql_help.h:587 msgid "remove a cast" msgstr "キャストを削除する" -#: sql_help.h:558 +#: sql_help.h:592 +msgid "remove a collation" +msgstr "照合順序を削除する" + +#: sql_help.h:597 msgid "remove a conversion" msgstr "エンコーディング変換ルールを削除する" -#: sql_help.h:563 +#: sql_help.h:602 msgid "remove a database" msgstr "データベースを削除する" -#: sql_help.h:568 +#: sql_help.h:607 msgid "remove a domain" msgstr "ドメインを削除する" -#: sql_help.h:573 +#: sql_help.h:612 +msgid "remove an extension" +msgstr "拡張を削除する" + +#: sql_help.h:617 msgid "remove a foreign-data wrapper" msgstr "外部データラッパーを削除する" -#: sql_help.h:578 +#: sql_help.h:622 +msgid "remove a foreign table" +msgstr "外部テーブルを削除する" + +#: sql_help.h:627 msgid "remove a function" msgstr "関数を削除する" -#: sql_help.h:583 sql_help.h:618 sql_help.h:683 +#: sql_help.h:632 sql_help.h:667 sql_help.h:732 msgid "remove a database role" msgstr "データベースのロールを削除する" -#: sql_help.h:588 +#: sql_help.h:637 msgid "remove an index" msgstr "インデックスを削除する" -#: sql_help.h:593 +#: sql_help.h:642 msgid "remove a procedural language" msgstr "手続き言語を削除する" -#: sql_help.h:598 +#: sql_help.h:647 msgid "remove an operator" msgstr "演算子を削除する" -#: sql_help.h:603 +#: sql_help.h:652 msgid "remove an operator class" msgstr "演算子クラスを削除する" -#: sql_help.h:608 +#: sql_help.h:657 msgid "remove an operator family" msgstr "演算子ファミリを削除する" -#: sql_help.h:613 +#: sql_help.h:662 msgid "remove database objects owned by a database role" msgstr "特定のデータベースロールが所有するデータベースオブジェクトを削除する" -#: sql_help.h:623 +#: sql_help.h:672 msgid "remove a rewrite rule" msgstr "書き換えルールを削除する" -#: sql_help.h:628 +#: sql_help.h:677 msgid "remove a schema" msgstr "スキーマを削除する" -#: sql_help.h:633 +#: sql_help.h:682 msgid "remove a sequence" msgstr "シーケンスを削除する" -#: sql_help.h:638 +#: sql_help.h:687 msgid "remove a foreign server descriptor" msgstr "外部サーバー識別子を削除する" -#: sql_help.h:643 +#: sql_help.h:692 msgid "remove a table" msgstr "テーブルを削除する" -#: sql_help.h:648 +#: sql_help.h:697 msgid "remove a tablespace" msgstr "テーブルスペースを削除する" -#: sql_help.h:653 +#: sql_help.h:702 msgid "remove a text search configuration" msgstr "テキスト検索設定を削除する" -#: sql_help.h:658 +#: sql_help.h:707 msgid "remove a text search dictionary" msgstr "テキスト検索用辞書を削除する" -#: sql_help.h:663 +#: sql_help.h:712 msgid "remove a text search parser" msgstr "テキスト検索用パーサを削除する" -#: sql_help.h:668 +#: sql_help.h:717 msgid "remove a text search template" msgstr "テキスト検索用テンプレートを削除する" -#: sql_help.h:673 +#: sql_help.h:722 msgid "remove a trigger" msgstr "トリガを削除する" -#: sql_help.h:678 +#: sql_help.h:727 msgid "remove a data type" msgstr "データ型を削除する" -#: sql_help.h:688 +#: sql_help.h:737 msgid "remove a user mapping for a foreign server" -msgstr "外部サーバーーのユーザ定義マッピングを削除" +msgstr "外部サーバーのユーザマッピングを削除" -#: sql_help.h:693 +#: sql_help.h:742 msgid "remove a view" msgstr "ビューを削除する" -#: sql_help.h:703 +#: sql_help.h:752 msgid "execute a prepared statement" -msgstr "準備済みステートメントを実行する" +msgstr "プリペアドステートメントを実行する" -#: sql_help.h:708 +#: sql_help.h:757 msgid "show the execution plan of a statement" msgstr "ステートメントの実行プランを表示する" -#: sql_help.h:713 +#: sql_help.h:762 msgid "retrieve rows from a query using a cursor" msgstr "カーソルを使ってクエリーから行を取り出す" -#: sql_help.h:718 +#: sql_help.h:767 msgid "define access privileges" msgstr "アクセス権限を定義する" -#: sql_help.h:723 +#: sql_help.h:772 msgid "create new rows in a table" msgstr "テーブルに新しい行を作成する" -#: sql_help.h:728 +#: sql_help.h:777 msgid "listen for a notification" msgstr "通知メッセージを監視する" -#: sql_help.h:733 +#: sql_help.h:782 msgid "load a shared library file" msgstr "共有ライブラリファイルをロードする" -#: sql_help.h:738 +#: sql_help.h:787 msgid "lock a table" msgstr "テーブルをロックする" -#: sql_help.h:743 +#: sql_help.h:792 msgid "position a cursor" msgstr "カーソルを位置付ける" -#: sql_help.h:748 +#: sql_help.h:797 msgid "generate a notification" msgstr "通知メッセージを生成する" -#: sql_help.h:753 +#: sql_help.h:802 msgid "prepare a statement for execution" msgstr "実行に先立ってステートメントを準備する" -#: sql_help.h:758 +#: sql_help.h:807 msgid "prepare the current transaction for two-phase commit" msgstr "2フェーズコミット用に現在のトランザクションを準備する" -#: sql_help.h:763 +#: sql_help.h:812 msgid "change the ownership of database objects owned by a database role" msgstr "" "あるデータベースロールが所有するデータベースオブジェクトの所有者を変更する" -#: sql_help.h:768 +#: sql_help.h:817 msgid "rebuild indexes" msgstr "インデックスを再構築する" -#: sql_help.h:773 +#: sql_help.h:822 msgid "destroy a previously defined savepoint" msgstr "前回定義したセーブポイントを削除する" -#: sql_help.h:778 +#: sql_help.h:827 msgid "restore the value of a run-time parameter to the default value" msgstr "実行時パラメータの値をデフォルト値に戻す" -#: sql_help.h:783 +#: sql_help.h:832 msgid "remove access privileges" msgstr "アクセス権限を剥奪する" -#: sql_help.h:793 +#: sql_help.h:842 msgid "cancel a transaction that was earlier prepared for two-phase commit" msgstr "2フェーズコミット用に事前準備されたトランザクションをキャンセルする" -#: sql_help.h:798 +#: sql_help.h:847 msgid "roll back to a savepoint" msgstr "セーブポイントまでロールバックする" -#: sql_help.h:803 +#: sql_help.h:852 msgid "define a new savepoint within the current transaction" msgstr "現在のトランザクションに対して新しいセーブポイントを定義する" -#: sql_help.h:808 sql_help.h:853 sql_help.h:883 +#: sql_help.h:857 +msgid "define or change a security label applied to an object" +msgstr "オブジェクトに適用されるセキュリティラベルを定義または変更する" + +#: sql_help.h:862 sql_help.h:907 sql_help.h:937 msgid "retrieve rows from a table or view" msgstr "テーブルもしくはビューから行を取り出す" -#: sql_help.h:818 +#: sql_help.h:872 msgid "change a run-time parameter" msgstr "実行時パラメータを変更する" -#: sql_help.h:823 +#: sql_help.h:877 msgid "set constraint check timing for the current transaction" msgstr "現在のトランザクションに対して制約検査のタイミングを設定する" -#: sql_help.h:828 +#: sql_help.h:882 msgid "set the current user identifier of the current session" msgstr "現在のセッションにおける現在のユーザ識別を設定する" -#: sql_help.h:833 +#: sql_help.h:887 msgid "" "set the session user identifier and the current user identifier of the " "current session" @@ -2675,1023 +2877,1156 @@ msgstr "" "セッションのユーザ識別、および現在のセッションにおける現在のユーザ識別を設定" "する" -#: sql_help.h:838 +#: sql_help.h:892 msgid "set the characteristics of the current transaction" msgstr "現在のトランザクションの特性を設定します" -#: sql_help.h:843 +#: sql_help.h:897 msgid "show the value of a run-time parameter" msgstr "実行時パラメータの値を表示する" -#: sql_help.h:858 +#: sql_help.h:912 msgid "empty a table or set of tables" msgstr "テーブルもしくはテーブルのセットを 0 件に切り詰める" -#: sql_help.h:863 +#: sql_help.h:917 msgid "stop listening for a notification" msgstr "通知メッセージの監視を中止する" -#: sql_help.h:868 +#: sql_help.h:922 msgid "update rows of a table" msgstr "テーブルの行を更新する" -#: sql_help.h:873 +#: sql_help.h:927 msgid "garbage-collect and optionally analyze a database" msgstr "ガーベジコレクションを行い、オプションでデータベースの分析をします" -#: sql_help.h:878 +#: sql_help.h:932 msgid "compute a set of rows" -msgstr "ロールのセットを計算します" - -#: sql_help.c:26 sql_help.c:29 sql_help.c:32 sql_help.c:43 sql_help.c:45 -#: sql_help.c:69 sql_help.c:73 sql_help.c:75 sql_help.c:77 sql_help.c:79 -#: sql_help.c:82 sql_help.c:84 sql_help.c:86 sql_help.c:161 sql_help.c:163 -#: sql_help.c:164 sql_help.c:166 sql_help.c:168 sql_help.c:170 sql_help.c:182 -#: sql_help.c:186 sql_help.c:214 sql_help.c:219 sql_help.c:224 sql_help.c:229 -#: sql_help.c:267 sql_help.c:269 sql_help.c:271 sql_help.c:274 sql_help.c:284 -#: sql_help.c:286 sql_help.c:304 sql_help.c:316 sql_help.c:319 sql_help.c:338 -#: sql_help.c:349 sql_help.c:357 sql_help.c:360 sql_help.c:389 sql_help.c:395 -#: sql_help.c:397 sql_help.c:401 sql_help.c:404 sql_help.c:407 sql_help.c:417 -#: sql_help.c:419 sql_help.c:436 sql_help.c:445 sql_help.c:447 sql_help.c:449 -#: sql_help.c:513 sql_help.c:515 sql_help.c:518 sql_help.c:520 sql_help.c:570 -#: sql_help.c:572 sql_help.c:574 sql_help.c:577 sql_help.c:597 sql_help.c:600 -#: sql_help.c:603 sql_help.c:606 sql_help.c:610 sql_help.c:612 sql_help.c:614 -#: sql_help.c:627 sql_help.c:630 sql_help.c:632 sql_help.c:641 sql_help.c:650 -#: sql_help.c:659 sql_help.c:671 sql_help.c:673 sql_help.c:675 sql_help.c:703 -#: sql_help.c:709 sql_help.c:711 sql_help.c:714 sql_help.c:716 sql_help.c:718 -#: sql_help.c:743 sql_help.c:746 sql_help.c:748 sql_help.c:750 sql_help.c:752 -#: sql_help.c:791 sql_help.c:962 sql_help.c:969 sql_help.c:1015 -#: sql_help.c:1030 sql_help.c:1048 sql_help.c:1070 sql_help.c:1086 -#: sql_help.c:1112 sql_help.c:1154 sql_help.c:1176 sql_help.c:1195 -#: sql_help.c:1196 sql_help.c:1213 sql_help.c:1233 sql_help.c:1254 -#: sql_help.c:1281 sql_help.c:1302 sql_help.c:1332 sql_help.c:1512 -#: sql_help.c:1525 sql_help.c:1542 sql_help.c:1558 sql_help.c:1571 -#: sql_help.c:1610 sql_help.c:1613 sql_help.c:1615 sql_help.c:1632 -#: sql_help.c:1658 sql_help.c:1691 sql_help.c:1701 sql_help.c:1710 -#: sql_help.c:1752 sql_help.c:1770 sql_help.c:1778 sql_help.c:1786 -#: sql_help.c:1794 sql_help.c:1803 sql_help.c:1814 sql_help.c:1822 -#: sql_help.c:1830 sql_help.c:1838 sql_help.c:1848 sql_help.c:1857 -#: sql_help.c:1866 sql_help.c:1874 sql_help.c:1882 sql_help.c:1891 -#: sql_help.c:1899 sql_help.c:1915 sql_help.c:1931 sql_help.c:1939 -#: sql_help.c:1947 sql_help.c:1955 sql_help.c:1963 sql_help.c:1972 -#: sql_help.c:1980 sql_help.c:1997 sql_help.c:2012 sql_help.c:2192 -#: sql_help.c:2220 sql_help.c:2247 sql_help.c:2548 sql_help.c:2593 -#: sql_help.c:2697 +msgstr "行セットを計算します" + +#: sql_help.c:26 sql_help.c:29 sql_help.c:32 sql_help.c:44 sql_help.c:46 +#: sql_help.c:48 sql_help.c:59 sql_help.c:61 sql_help.c:63 sql_help.c:87 +#: sql_help.c:91 sql_help.c:93 sql_help.c:95 sql_help.c:97 sql_help.c:100 +#: sql_help.c:102 sql_help.c:104 sql_help.c:179 sql_help.c:181 sql_help.c:182 +#: sql_help.c:184 sql_help.c:186 sql_help.c:188 sql_help.c:276 sql_help.c:281 +#: sql_help.c:306 sql_help.c:308 sql_help.c:311 sql_help.c:313 sql_help.c:351 +#: sql_help.c:356 sql_help.c:361 sql_help.c:366 sql_help.c:404 sql_help.c:406 +#: sql_help.c:408 sql_help.c:411 sql_help.c:421 sql_help.c:423 sql_help.c:442 +#: sql_help.c:446 sql_help.c:459 sql_help.c:462 sql_help.c:465 sql_help.c:485 +#: sql_help.c:497 sql_help.c:505 sql_help.c:508 sql_help.c:511 sql_help.c:541 +#: sql_help.c:547 sql_help.c:549 sql_help.c:553 sql_help.c:556 sql_help.c:559 +#: sql_help.c:569 sql_help.c:571 sql_help.c:588 sql_help.c:597 sql_help.c:599 +#: sql_help.c:601 sql_help.c:675 sql_help.c:677 sql_help.c:680 sql_help.c:682 +#: sql_help.c:740 sql_help.c:742 sql_help.c:744 sql_help.c:747 sql_help.c:768 +#: sql_help.c:771 sql_help.c:774 sql_help.c:777 sql_help.c:781 sql_help.c:783 +#: sql_help.c:785 sql_help.c:787 sql_help.c:801 sql_help.c:804 sql_help.c:806 +#: sql_help.c:808 sql_help.c:818 sql_help.c:820 sql_help.c:830 sql_help.c:832 +#: sql_help.c:841 sql_help.c:862 sql_help.c:864 sql_help.c:866 sql_help.c:869 +#: sql_help.c:871 sql_help.c:873 sql_help.c:911 sql_help.c:917 sql_help.c:919 +#: sql_help.c:922 sql_help.c:924 sql_help.c:926 sql_help.c:951 sql_help.c:954 +#: sql_help.c:956 sql_help.c:958 sql_help.c:960 sql_help.c:1000 +#: sql_help.c:1183 sql_help.c:1191 sql_help.c:1235 sql_help.c:1239 +#: sql_help.c:1249 sql_help.c:1267 sql_help.c:1290 sql_help.c:1322 +#: sql_help.c:1367 sql_help.c:1409 sql_help.c:1431 sql_help.c:1451 +#: sql_help.c:1452 sql_help.c:1469 sql_help.c:1489 sql_help.c:1511 +#: sql_help.c:1539 sql_help.c:1560 sql_help.c:1590 sql_help.c:1771 +#: sql_help.c:1784 sql_help.c:1801 sql_help.c:1817 sql_help.c:1840 +#: sql_help.c:1883 sql_help.c:1887 sql_help.c:1889 sql_help.c:1907 +#: sql_help.c:1934 sql_help.c:1967 sql_help.c:1977 sql_help.c:1986 +#: sql_help.c:2030 sql_help.c:2048 sql_help.c:2056 sql_help.c:2064 +#: sql_help.c:2072 sql_help.c:2088 sql_help.c:2096 sql_help.c:2105 +#: sql_help.c:2116 sql_help.c:2124 sql_help.c:2132 sql_help.c:2140 +#: sql_help.c:2150 sql_help.c:2159 sql_help.c:2168 sql_help.c:2176 +#: sql_help.c:2184 sql_help.c:2193 sql_help.c:2201 sql_help.c:2217 +#: sql_help.c:2233 sql_help.c:2241 sql_help.c:2249 sql_help.c:2257 +#: sql_help.c:2265 sql_help.c:2274 sql_help.c:2282 sql_help.c:2299 +#: sql_help.c:2314 sql_help.c:2506 sql_help.c:2557 sql_help.c:2584 +#: sql_help.c:2927 sql_help.c:2973 sql_help.c:3080 msgid "name" msgstr "名前" -#: sql_help.c:27 sql_help.c:30 sql_help.c:33 sql_help.c:524 sql_help.c:528 -#: sql_help.c:1753 +#: sql_help.c:27 sql_help.c:30 sql_help.c:33 sql_help.c:317 sql_help.c:320 +#: sql_help.c:2031 msgid "type" msgstr "型" -#: sql_help.c:28 sql_help.c:44 sql_help.c:74 sql_help.c:223 sql_help.c:256 -#: sql_help.c:268 sql_help.c:285 sql_help.c:318 sql_help.c:359 sql_help.c:396 -#: sql_help.c:418 sql_help.c:448 sql_help.c:519 sql_help.c:571 sql_help.c:613 -#: sql_help.c:631 sql_help.c:642 sql_help.c:651 sql_help.c:661 sql_help.c:672 -#: sql_help.c:710 sql_help.c:751 +#: sql_help.c:28 sql_help.c:45 sql_help.c:60 sql_help.c:92 sql_help.c:312 +#: sql_help.c:360 sql_help.c:393 sql_help.c:405 sql_help.c:422 sql_help.c:461 +#: sql_help.c:507 sql_help.c:548 sql_help.c:570 sql_help.c:600 sql_help.c:681 +#: sql_help.c:741 sql_help.c:784 sql_help.c:805 sql_help.c:819 sql_help.c:831 +#: sql_help.c:843 sql_help.c:870 sql_help.c:918 sql_help.c:959 msgid "new_name" msgstr "新しい名前" -#: sql_help.c:31 sql_help.c:46 sql_help.c:76 sql_help.c:169 sql_help.c:187 -#: sql_help.c:228 sql_help.c:287 sql_help.c:296 sql_help.c:307 sql_help.c:321 -#: sql_help.c:362 sql_help.c:420 sql_help.c:446 sql_help.c:465 sql_help.c:558 -#: sql_help.c:573 sql_help.c:615 sql_help.c:633 sql_help.c:674 sql_help.c:749 +#: sql_help.c:31 sql_help.c:47 sql_help.c:62 sql_help.c:94 sql_help.c:187 +#: sql_help.c:282 sql_help.c:322 sql_help.c:365 sql_help.c:424 sql_help.c:433 +#: sql_help.c:445 sql_help.c:464 sql_help.c:510 sql_help.c:572 sql_help.c:598 +#: sql_help.c:617 sql_help.c:725 sql_help.c:743 sql_help.c:786 sql_help.c:807 +#: sql_help.c:865 sql_help.c:957 msgid "new_owner" msgstr "新しい所有者" -#: sql_help.c:34 sql_help.c:171 sql_help.c:233 sql_help.c:450 sql_help.c:521 -#: sql_help.c:676 sql_help.c:753 +#: sql_help.c:34 sql_help.c:49 sql_help.c:64 sql_help.c:189 sql_help.c:228 +#: sql_help.c:314 sql_help.c:370 sql_help.c:449 sql_help.c:467 sql_help.c:513 +#: sql_help.c:602 sql_help.c:683 sql_help.c:788 sql_help.c:809 sql_help.c:821 +#: sql_help.c:833 sql_help.c:872 sql_help.c:961 msgid "new_schema" -msgstr "新しいスキーマ %s" +msgstr "新しいスキーマ" -#: sql_help.c:70 sql_help.c:184 sql_help.c:390 sql_help.c:462 sql_help.c:628 -#: sql_help.c:704 sql_help.c:730 sql_help.c:922 sql_help.c:927 sql_help.c:1088 -#: sql_help.c:1155 sql_help.c:1282 sql_help.c:1353 sql_help.c:1527 -#: sql_help.c:1659 sql_help.c:1681 +#: sql_help.c:88 sql_help.c:279 sql_help.c:323 sql_help.c:542 sql_help.c:614 +#: sql_help.c:802 sql_help.c:912 sql_help.c:938 sql_help.c:1142 +#: sql_help.c:1147 sql_help.c:1325 sql_help.c:1343 sql_help.c:1410 +#: sql_help.c:1540 sql_help.c:1611 sql_help.c:1786 sql_help.c:1935 +#: sql_help.c:1957 sql_help.c:2332 msgid "option" msgstr "オプション" -#: sql_help.c:71 sql_help.c:391 sql_help.c:705 sql_help.c:1156 sql_help.c:1283 -#: sql_help.c:1660 +#: sql_help.c:89 sql_help.c:543 sql_help.c:913 sql_help.c:1411 sql_help.c:1541 +#: sql_help.c:1936 msgid "where option can be:" msgstr "オプションは以下の通り:" -#: sql_help.c:72 sql_help.c:392 sql_help.c:706 sql_help.c:1055 sql_help.c:1284 -#: sql_help.c:1661 +#: sql_help.c:90 sql_help.c:544 sql_help.c:914 sql_help.c:1274 sql_help.c:1542 +#: sql_help.c:1937 msgid "connlimit" msgstr "最大接続数" -#: sql_help.c:78 sql_help.c:559 +#: sql_help.c:96 sql_help.c:726 msgid "new_tablespace" msgstr "テーブルスペース" -#: sql_help.c:80 sql_help.c:83 sql_help.c:85 sql_help.c:237 sql_help.c:239 -#: sql_help.c:240 sql_help.c:399 sql_help.c:403 sql_help.c:406 sql_help.c:712 -#: sql_help.c:715 sql_help.c:717 sql_help.c:1123 sql_help.c:2264 -#: sql_help.c:2537 +#: sql_help.c:98 sql_help.c:101 sql_help.c:103 sql_help.c:374 sql_help.c:376 +#: sql_help.c:377 sql_help.c:551 sql_help.c:555 sql_help.c:558 sql_help.c:920 +#: sql_help.c:923 sql_help.c:925 sql_help.c:1378 sql_help.c:2601 +#: sql_help.c:2916 msgid "configuration_parameter" msgstr "設定パラメータ" -#: sql_help.c:81 sql_help.c:185 sql_help.c:238 sql_help.c:273 sql_help.c:400 -#: sql_help.c:463 sql_help.c:538 sql_help.c:554 sql_help.c:576 sql_help.c:629 -#: sql_help.c:713 sql_help.c:731 sql_help.c:1089 sql_help.c:1124 -#: sql_help.c:1125 sql_help.c:1183 sql_help.c:1354 sql_help.c:1427 -#: sql_help.c:1436 sql_help.c:1467 sql_help.c:1489 sql_help.c:1528 -#: sql_help.c:1682 sql_help.c:2538 sql_help.c:2539 +#: sql_help.c:99 sql_help.c:280 sql_help.c:324 sql_help.c:375 sql_help.c:410 +#: sql_help.c:552 sql_help.c:615 sql_help.c:702 sql_help.c:720 sql_help.c:746 +#: sql_help.c:803 sql_help.c:921 sql_help.c:939 sql_help.c:1326 +#: sql_help.c:1344 sql_help.c:1379 sql_help.c:1380 sql_help.c:1439 +#: sql_help.c:1612 sql_help.c:1686 sql_help.c:1694 sql_help.c:1726 +#: sql_help.c:1748 sql_help.c:1787 sql_help.c:1958 sql_help.c:2917 +#: sql_help.c:2918 msgid "value" msgstr "値" -#: sql_help.c:133 +#: sql_help.c:151 msgid "target_role" msgstr "対象のロール" -#: sql_help.c:134 sql_help.c:1317 sql_help.c:2118 sql_help.c:2125 -#: sql_help.c:2137 sql_help.c:2143 sql_help.c:2347 sql_help.c:2354 -#: sql_help.c:2366 sql_help.c:2372 +#: sql_help.c:152 sql_help.c:1575 sql_help.c:2430 sql_help.c:2437 +#: sql_help.c:2449 sql_help.c:2455 sql_help.c:2684 sql_help.c:2691 +#: sql_help.c:2703 sql_help.c:2709 msgid "schema_name" msgstr "スキーマ名" -#: sql_help.c:135 +#: sql_help.c:153 msgid "abbreviated_grant_or_revoke" msgstr "権限付与/剥奪の省略形" -#: sql_help.c:136 +#: sql_help.c:154 msgid "where abbreviated_grant_or_revoke is one of:" msgstr "権限付与/剥奪の省略形は以下のいずれか:" -#: sql_help.c:137 sql_help.c:138 sql_help.c:139 sql_help.c:140 sql_help.c:141 -#: sql_help.c:142 sql_help.c:1159 sql_help.c:1160 sql_help.c:1161 -#: sql_help.c:1162 sql_help.c:1163 sql_help.c:1287 sql_help.c:1288 -#: sql_help.c:1289 sql_help.c:1290 sql_help.c:1291 sql_help.c:1664 -#: sql_help.c:1665 sql_help.c:1666 sql_help.c:1667 sql_help.c:1668 -#: sql_help.c:2119 sql_help.c:2123 sql_help.c:2126 sql_help.c:2128 -#: sql_help.c:2130 sql_help.c:2132 sql_help.c:2138 sql_help.c:2140 -#: sql_help.c:2142 sql_help.c:2144 sql_help.c:2146 sql_help.c:2147 -#: sql_help.c:2148 sql_help.c:2348 sql_help.c:2352 sql_help.c:2355 -#: sql_help.c:2357 sql_help.c:2359 sql_help.c:2361 sql_help.c:2367 -#: sql_help.c:2369 sql_help.c:2371 sql_help.c:2373 sql_help.c:2375 -#: sql_help.c:2376 sql_help.c:2377 sql_help.c:2558 +#: sql_help.c:155 sql_help.c:156 sql_help.c:157 sql_help.c:158 sql_help.c:159 +#: sql_help.c:160 sql_help.c:1414 sql_help.c:1415 sql_help.c:1416 +#: sql_help.c:1417 sql_help.c:1418 sql_help.c:1545 sql_help.c:1546 +#: sql_help.c:1547 sql_help.c:1548 sql_help.c:1549 sql_help.c:1940 +#: sql_help.c:1941 sql_help.c:1942 sql_help.c:1943 sql_help.c:1944 +#: sql_help.c:2431 sql_help.c:2435 sql_help.c:2438 sql_help.c:2440 +#: sql_help.c:2442 sql_help.c:2444 sql_help.c:2450 sql_help.c:2452 +#: sql_help.c:2454 sql_help.c:2456 sql_help.c:2458 sql_help.c:2459 +#: sql_help.c:2460 sql_help.c:2685 sql_help.c:2689 sql_help.c:2692 +#: sql_help.c:2694 sql_help.c:2696 sql_help.c:2698 sql_help.c:2704 +#: sql_help.c:2706 sql_help.c:2708 sql_help.c:2710 sql_help.c:2712 +#: sql_help.c:2713 sql_help.c:2714 sql_help.c:2937 msgid "role_name" msgstr "ロール名" -#: sql_help.c:162 sql_help.c:529 sql_help.c:531 sql_help.c:745 sql_help.c:1072 -#: sql_help.c:1076 sql_help.c:1180 sql_help.c:1440 sql_help.c:1449 -#: sql_help.c:1471 sql_help.c:2160 sql_help.c:2445 sql_help.c:2446 -#: sql_help.c:2450 sql_help.c:2455 sql_help.c:2512 sql_help.c:2513 -#: sql_help.c:2518 sql_help.c:2523 sql_help.c:2644 sql_help.c:2645 -#: sql_help.c:2649 sql_help.c:2654 sql_help.c:2721 sql_help.c:2723 -#: sql_help.c:2754 sql_help.c:2796 sql_help.c:2797 sql_help.c:2801 -#: sql_help.c:2806 +#: sql_help.c:180 sql_help.c:693 sql_help.c:695 sql_help.c:953 sql_help.c:1293 +#: sql_help.c:1297 sql_help.c:1435 sql_help.c:1698 sql_help.c:1708 +#: sql_help.c:1730 sql_help.c:2474 sql_help.c:2822 sql_help.c:2823 +#: sql_help.c:2827 sql_help.c:2832 sql_help.c:2891 sql_help.c:2892 +#: sql_help.c:2897 sql_help.c:2902 sql_help.c:3025 sql_help.c:3026 +#: sql_help.c:3030 sql_help.c:3035 sql_help.c:3106 sql_help.c:3108 +#: sql_help.c:3139 sql_help.c:3181 sql_help.c:3182 sql_help.c:3186 +#: sql_help.c:3191 msgid "expression" msgstr "評価式" -#: sql_help.c:165 +#: sql_help.c:183 msgid "domain_constraint" msgstr "ドメイン制約" -#: sql_help.c:167 sql_help.c:543 sql_help.c:845 sql_help.c:1075 -#: sql_help.c:1439 sql_help.c:1448 +#: sql_help.c:185 sql_help.c:708 sql_help.c:709 sql_help.c:728 sql_help.c:1059 +#: sql_help.c:1296 sql_help.c:1697 sql_help.c:1707 msgid "constraint_name" msgstr "制約名" -#: sql_help.c:183 sql_help.c:1087 sql_help.c:1199 -msgid "valfunction" -msgstr "バリデータ関数" +#: sql_help.c:225 sql_help.c:227 sql_help.c:229 sql_help.c:231 sql_help.c:1308 +#: sql_help.c:2080 +msgid "extension_name" +msgstr "拡張名" + +#: sql_help.c:226 sql_help.c:613 +msgid "new_version" +msgstr "新しいバージョン" + +#: sql_help.c:230 sql_help.c:232 +msgid "member_object" +msgstr "メンバオブジェクト" + +#: sql_help.c:233 +msgid "where member_object is:" +msgstr "メンバオブジェクトは以下の通り:" + +#: sql_help.c:234 sql_help.c:1052 sql_help.c:2771 +msgid "agg_name" +msgstr "集約関数名" + +#: sql_help.c:235 sql_help.c:1053 sql_help.c:2772 +msgid "agg_type" +msgstr "集約関数の型" + +#: sql_help.c:236 sql_help.c:1054 sql_help.c:1215 sql_help.c:1219 +#: sql_help.c:1221 sql_help.c:2039 +msgid "source_type" +msgstr "ソースの型" + +#: sql_help.c:237 sql_help.c:1055 sql_help.c:1216 sql_help.c:1220 +#: sql_help.c:1222 sql_help.c:2040 +msgid "target_type" +msgstr "ターゲットの型" + +#: sql_help.c:238 sql_help.c:239 sql_help.c:240 sql_help.c:241 sql_help.c:242 +#: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:255 sql_help.c:256 +#: sql_help.c:257 sql_help.c:258 sql_help.c:259 sql_help.c:260 sql_help.c:261 +#: sql_help.c:262 sql_help.c:263 sql_help.c:264 sql_help.c:1056 +#: sql_help.c:1061 sql_help.c:1062 sql_help.c:1063 sql_help.c:1064 +#: sql_help.c:1065 sql_help.c:1066 sql_help.c:1071 sql_help.c:1076 +#: sql_help.c:1078 sql_help.c:1080 sql_help.c:1081 sql_help.c:1084 +#: sql_help.c:1085 sql_help.c:1086 sql_help.c:1087 sql_help.c:1088 +#: sql_help.c:1089 sql_help.c:1090 sql_help.c:1091 sql_help.c:1092 +#: sql_help.c:1095 sql_help.c:1096 sql_help.c:2768 sql_help.c:2773 +#: sql_help.c:2774 sql_help.c:2780 sql_help.c:2781 sql_help.c:2782 +#: sql_help.c:2783 sql_help.c:2784 +msgid "object_name" +msgstr "オブジェクト名" -#: sql_help.c:215 sql_help.c:220 sql_help.c:225 sql_help.c:230 sql_help.c:851 -#: sql_help.c:1113 sql_help.c:1804 sql_help.c:2134 sql_help.c:2363 +#: sql_help.c:243 sql_help.c:495 sql_help.c:1067 sql_help.c:1217 +#: sql_help.c:1252 sql_help.c:1470 sql_help.c:1501 sql_help.c:1845 +#: sql_help.c:2445 sql_help.c:2699 sql_help.c:2775 sql_help.c:2848 +#: sql_help.c:2853 sql_help.c:3051 sql_help.c:3056 sql_help.c:3207 +#: sql_help.c:3212 +msgid "function_name" +msgstr "関数名" + +#: sql_help.c:244 sql_help.c:352 sql_help.c:357 sql_help.c:362 sql_help.c:367 +#: sql_help.c:1068 sql_help.c:1368 sql_help.c:2106 sql_help.c:2446 +#: sql_help.c:2700 sql_help.c:2776 msgid "argmode" msgstr "引数のモード" -#: sql_help.c:216 sql_help.c:221 sql_help.c:226 sql_help.c:231 sql_help.c:852 -#: sql_help.c:1114 sql_help.c:1805 +#: sql_help.c:245 sql_help.c:353 sql_help.c:358 sql_help.c:363 sql_help.c:368 +#: sql_help.c:1069 sql_help.c:1369 sql_help.c:2107 sql_help.c:2777 msgid "argname" msgstr "引数名" -#: sql_help.c:217 sql_help.c:222 sql_help.c:227 sql_help.c:232 sql_help.c:853 -#: sql_help.c:1115 sql_help.c:1806 +#: sql_help.c:246 sql_help.c:354 sql_help.c:359 sql_help.c:364 sql_help.c:369 +#: sql_help.c:1070 sql_help.c:1370 sql_help.c:2108 sql_help.c:2778 msgid "argtype" msgstr "引数の型" -#: sql_help.c:218 sql_help.c:514 sql_help.c:1445 sql_help.c:1446 -#: sql_help.c:1462 sql_help.c:1463 +#: sql_help.c:247 sql_help.c:488 sql_help.c:1073 sql_help.c:1494 +msgid "operator_name" +msgstr "演算子名" + +#: sql_help.c:248 sql_help.c:443 sql_help.c:447 sql_help.c:1074 +#: sql_help.c:1471 sql_help.c:2141 +msgid "left_type" +msgstr "左辺の型" + +#: sql_help.c:249 sql_help.c:444 sql_help.c:448 sql_help.c:1075 +#: sql_help.c:1472 sql_help.c:2142 +msgid "right_type" +msgstr "右辺の型" + +#: sql_help.c:251 sql_help.c:253 sql_help.c:460 sql_help.c:463 sql_help.c:466 +#: sql_help.c:486 sql_help.c:498 sql_help.c:506 sql_help.c:509 sql_help.c:512 +#: sql_help.c:1077 sql_help.c:1079 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1713 sql_help.c:2151 sql_help.c:2160 +msgid "index_method" +msgstr "インデックスメソッド" + +#: sql_help.c:277 sql_help.c:1323 +msgid "handler_function" +msgstr "ハンドラ関数" + +#: sql_help.c:278 sql_help.c:1324 +msgid "validator_function" +msgstr "バリデータ関数" + +#: sql_help.c:307 sql_help.c:355 sql_help.c:676 sql_help.c:863 sql_help.c:1704 +#: sql_help.c:1705 sql_help.c:1721 sql_help.c:1722 msgid "action" msgstr "アクション" -#: sql_help.c:234 sql_help.c:522 +#: sql_help.c:309 sql_help.c:316 sql_help.c:318 sql_help.c:319 sql_help.c:321 +#: sql_help.c:596 sql_help.c:678 sql_help.c:685 sql_help.c:689 sql_help.c:690 +#: sql_help.c:694 sql_help.c:696 sql_help.c:697 sql_help.c:698 sql_help.c:700 +#: sql_help.c:703 sql_help.c:705 sql_help.c:952 sql_help.c:955 sql_help.c:970 +#: sql_help.c:1140 sql_help.c:1144 sql_help.c:1156 sql_help.c:1157 +#: sql_help.c:1434 sql_help.c:1597 sql_help.c:1729 sql_help.c:2432 +#: sql_help.c:2433 sql_help.c:2473 sql_help.c:2686 sql_help.c:2687 +#: sql_help.c:3105 sql_help.c:3107 sql_help.c:3124 sql_help.c:3127 +msgid "column" +msgstr "カラム" + +#: sql_help.c:310 sql_help.c:679 +msgid "new_column" +msgstr "新しいカラム" + +#: sql_help.c:315 sql_help.c:371 sql_help.c:684 sql_help.c:876 msgid "where action is one of:" msgstr "アクションは以下のいずれか:" -#: sql_help.c:235 sql_help.c:1121 +#: sql_help.c:372 sql_help.c:1376 msgid "execution_cost" msgstr "実行コスト" -#: sql_help.c:236 sql_help.c:1122 +#: sql_help.c:373 sql_help.c:1377 msgid "result_rows" msgstr "結果の行数" -#: sql_help.c:251 sql_help.c:253 sql_help.c:255 +#: sql_help.c:388 sql_help.c:390 sql_help.c:392 msgid "group_name" msgstr "グループ名" -#: sql_help.c:252 sql_help.c:254 sql_help.c:728 sql_help.c:1049 -#: sql_help.c:1318 sql_help.c:1320 sql_help.c:1500 sql_help.c:1679 -#: sql_help.c:1988 sql_help.c:2568 +#: sql_help.c:389 sql_help.c:391 sql_help.c:936 sql_help.c:1268 +#: sql_help.c:1576 sql_help.c:1578 sql_help.c:1759 sql_help.c:1955 +#: sql_help.c:2290 sql_help.c:2947 msgid "user_name" msgstr "ユーザ名" -#: sql_help.c:270 sql_help.c:1499 sql_help.c:1923 sql_help.c:2145 -#: sql_help.c:2374 +#: sql_help.c:407 sql_help.c:1758 sql_help.c:2225 sql_help.c:2457 +#: sql_help.c:2711 msgid "tablespace_name" msgstr "テーブルスペース名" -#: sql_help.c:272 sql_help.c:275 sql_help.c:553 sql_help.c:555 sql_help.c:1182 -#: sql_help.c:1426 sql_help.c:1435 sql_help.c:1466 sql_help.c:1488 +#: sql_help.c:409 sql_help.c:412 sql_help.c:719 sql_help.c:721 sql_help.c:1438 +#: sql_help.c:1685 sql_help.c:1693 sql_help.c:1725 sql_help.c:1747 msgid "storage_parameter" msgstr "ストレージパラメーター" -#: sql_help.c:295 sql_help.c:855 +#: sql_help.c:432 sql_help.c:1072 sql_help.c:2779 msgid "large_object_oid" -msgstr "ラージオブジェクトの oid" - -#: sql_help.c:305 sql_help.c:857 sql_help.c:1215 sql_help.c:1839 -msgid "left_type" -msgstr "左辺の型" - -#: sql_help.c:306 sql_help.c:858 sql_help.c:1216 sql_help.c:1840 -msgid "right_type" -msgstr "右辺の型" - -#: sql_help.c:317 sql_help.c:320 sql_help.c:339 sql_help.c:350 sql_help.c:358 -#: sql_help.c:361 sql_help.c:860 sql_help.c:862 sql_help.c:1235 -#: sql_help.c:1255 sql_help.c:1454 sql_help.c:1849 sql_help.c:1858 -msgid "index_method" -msgstr "インデックスメソッド" +msgstr "ラージオブジェクトのoid" -#: sql_help.c:340 sql_help.c:351 sql_help.c:1237 +#: sql_help.c:487 sql_help.c:499 sql_help.c:1493 msgid "strategy_number" msgstr "ストラテジー番号" -#: sql_help.c:341 sql_help.c:856 sql_help.c:1238 -msgid "operator_name" -msgstr "演算子名" - -#: sql_help.c:342 sql_help.c:343 sql_help.c:345 sql_help.c:346 sql_help.c:352 -#: sql_help.c:353 sql_help.c:355 sql_help.c:356 sql_help.c:1239 -#: sql_help.c:1240 sql_help.c:1242 sql_help.c:1243 +#: sql_help.c:489 sql_help.c:490 sql_help.c:493 sql_help.c:494 sql_help.c:500 +#: sql_help.c:501 sql_help.c:503 sql_help.c:504 sql_help.c:1495 +#: sql_help.c:1496 sql_help.c:1499 sql_help.c:1500 msgid "op_type" msgstr "演算子の型" -#: sql_help.c:344 sql_help.c:354 sql_help.c:1241 +#: sql_help.c:491 sql_help.c:1497 +msgid "sort_family_name" +msgstr "ソートファミリー名" + +#: sql_help.c:492 sql_help.c:502 sql_help.c:1498 msgid "support_number" msgstr "サポート番号" -#: sql_help.c:347 sql_help.c:850 sql_help.c:995 sql_help.c:1020 -#: sql_help.c:1033 sql_help.c:1214 sql_help.c:1244 sql_help.c:1575 -#: sql_help.c:2133 sql_help.c:2362 sql_help.c:2471 sql_help.c:2476 -#: sql_help.c:2670 sql_help.c:2675 sql_help.c:2822 sql_help.c:2827 -msgid "function_name" -msgstr "関数名" - -#: sql_help.c:348 sql_help.c:996 sql_help.c:1245 +#: sql_help.c:496 sql_help.c:1218 sql_help.c:1502 msgid "argument_type" msgstr "引数の型" -#: sql_help.c:393 sql_help.c:707 sql_help.c:1157 sql_help.c:1285 -#: sql_help.c:1662 +#: sql_help.c:545 sql_help.c:915 sql_help.c:1412 sql_help.c:1543 +#: sql_help.c:1938 msgid "password" msgstr "パスワード" -#: sql_help.c:394 sql_help.c:708 sql_help.c:1158 sql_help.c:1286 -#: sql_help.c:1663 +#: sql_help.c:546 sql_help.c:916 sql_help.c:1413 sql_help.c:1544 +#: sql_help.c:1939 msgid "timestamp" msgstr "タイムスタンプ" -#: sql_help.c:398 sql_help.c:402 sql_help.c:405 sql_help.c:408 sql_help.c:2127 -#: sql_help.c:2356 +#: sql_help.c:550 sql_help.c:554 sql_help.c:557 sql_help.c:560 sql_help.c:2439 +#: sql_help.c:2693 msgid "database_name" msgstr "データベース名" -#: sql_help.c:437 sql_help.c:1333 +#: sql_help.c:589 sql_help.c:1591 msgid "increment" msgstr "増分" -#: sql_help.c:438 sql_help.c:1334 +#: sql_help.c:590 sql_help.c:1592 msgid "minvalue" msgstr "最小値" -#: sql_help.c:439 sql_help.c:1335 +#: sql_help.c:591 sql_help.c:1593 msgid "maxvalue" msgstr "最大値" -#: sql_help.c:440 sql_help.c:1336 sql_help.c:2458 sql_help.c:2526 -#: sql_help.c:2657 sql_help.c:2758 sql_help.c:2809 +#: sql_help.c:592 sql_help.c:1594 sql_help.c:2835 sql_help.c:2905 +#: sql_help.c:3038 sql_help.c:3143 sql_help.c:3194 msgid "start" -msgstr "開始" +msgstr "開始値" -#: sql_help.c:441 +#: sql_help.c:593 msgid "restart" -msgstr "再起動" +msgstr "再開始値" -#: sql_help.c:442 sql_help.c:1337 +#: sql_help.c:594 sql_help.c:1595 msgid "cache" msgstr "キャッシュ" -#: sql_help.c:444 sql_help.c:516 sql_help.c:523 sql_help.c:526 sql_help.c:527 -#: sql_help.c:530 sql_help.c:532 sql_help.c:533 sql_help.c:534 sql_help.c:536 -#: sql_help.c:539 sql_help.c:541 sql_help.c:744 sql_help.c:747 sql_help.c:762 -#: sql_help.c:920 sql_help.c:924 sql_help.c:936 sql_help.c:937 sql_help.c:1179 -#: sql_help.c:1339 sql_help.c:1470 sql_help.c:2120 sql_help.c:2121 -#: sql_help.c:2159 sql_help.c:2349 sql_help.c:2350 sql_help.c:2720 -#: sql_help.c:2722 sql_help.c:2739 sql_help.c:2742 -msgid "column" -msgstr "カラム" - -#: sql_help.c:460 sql_help.c:464 sql_help.c:729 sql_help.c:1349 -#: sql_help.c:1680 sql_help.c:1907 sql_help.c:1989 sql_help.c:2131 -#: sql_help.c:2360 +#: sql_help.c:612 sql_help.c:616 sql_help.c:937 sql_help.c:1342 +#: sql_help.c:1607 sql_help.c:1956 sql_help.c:2209 sql_help.c:2291 +#: sql_help.c:2443 sql_help.c:2697 msgid "server_name" msgstr "サーバー名" -#: sql_help.c:461 -msgid "new_version" -msgstr "新しいバージョン" +#: sql_help.c:686 sql_help.c:691 sql_help.c:878 sql_help.c:882 sql_help.c:1291 +#: sql_help.c:1341 sql_help.c:1490 sql_help.c:1678 sql_help.c:1885 +#: sql_help.c:2558 +msgid "data_type" +msgstr "データ型" -#: sql_help.c:517 -msgid "new_column" -msgstr "新しいカラム" +#: sql_help.c:687 sql_help.c:692 sql_help.c:879 sql_help.c:883 sql_help.c:1292 +#: sql_help.c:1436 sql_help.c:1679 sql_help.c:1886 +msgid "collation" +msgstr "照合順序" -#: sql_help.c:525 sql_help.c:1421 sql_help.c:1433 +#: sql_help.c:688 sql_help.c:1680 sql_help.c:1691 msgid "column_constraint" msgstr "カラム制約" -#: sql_help.c:535 +#: sql_help.c:699 msgid "integer" msgstr "整数" -#: sql_help.c:537 sql_help.c:540 +#: sql_help.c:701 sql_help.c:704 msgid "attribute_option" msgstr "属性オプション" -#: sql_help.c:542 sql_help.c:1422 sql_help.c:1434 +#: sql_help.c:706 sql_help.c:1681 sql_help.c:1692 msgid "table_constraint" msgstr "テーブル制約" -#: sql_help.c:544 sql_help.c:545 sql_help.c:546 sql_help.c:547 sql_help.c:874 +#: sql_help.c:707 +msgid "table_constraint_using_index" +msgstr "インデックスを使用するテーブル制約" + +#: sql_help.c:710 sql_help.c:711 sql_help.c:712 sql_help.c:713 sql_help.c:1093 msgid "trigger_name" msgstr "トリガー名" -#: sql_help.c:548 sql_help.c:549 sql_help.c:550 sql_help.c:551 +#: sql_help.c:714 sql_help.c:715 sql_help.c:716 sql_help.c:717 msgid "rewrite_rule_name" msgstr "書き換えルール名" -#: sql_help.c:552 sql_help.c:801 +#: sql_help.c:718 sql_help.c:729 sql_help.c:1010 msgid "index_name" msgstr "インデックス名" -#: sql_help.c:556 sql_help.c:557 sql_help.c:1423 sql_help.c:1425 +#: sql_help.c:722 sql_help.c:723 sql_help.c:1682 sql_help.c:1684 msgid "parent_table" msgstr "親テーブル" -#: sql_help.c:575 sql_help.c:578 +#: sql_help.c:724 sql_help.c:1689 +msgid "type_name" +msgstr "型名" + +#: sql_help.c:727 +msgid "and table_constraint_using_index is:" +msgstr "またインデックスを使用するテーブルの制約条件は以下の通り:" + +#: sql_help.c:745 sql_help.c:748 msgid "tablespace_option" msgstr "テーブルスペース・オプション" -#: sql_help.c:598 sql_help.c:601 sql_help.c:607 sql_help.c:611 +#: sql_help.c:769 sql_help.c:772 sql_help.c:778 sql_help.c:782 msgid "token_type" msgstr "トークンの型" -#: sql_help.c:599 sql_help.c:602 +#: sql_help.c:770 sql_help.c:773 msgid "dictionary_name" msgstr "辞書名" -#: sql_help.c:604 sql_help.c:608 +#: sql_help.c:775 sql_help.c:779 msgid "old_dictionary" msgstr "元の辞書" -#: sql_help.c:605 sql_help.c:609 +#: sql_help.c:776 sql_help.c:780 msgid "new_dictionary" msgstr "新しい辞書" -#: sql_help.c:775 sql_help.c:2582 sql_help.c:2583 sql_help.c:2606 +#: sql_help.c:867 sql_help.c:877 sql_help.c:880 sql_help.c:881 sql_help.c:1884 +msgid "attribute_name" +msgstr "属性名" + +#: sql_help.c:868 +msgid "new_attribute_name" +msgstr "新しい属性名" + +#: sql_help.c:874 +msgid "new_enum_value" +msgstr "新しい列挙値" + +#: sql_help.c:875 +msgid "existing_enum_value" +msgstr "既存の列挙値" + +#: sql_help.c:984 sql_help.c:2962 sql_help.c:2963 sql_help.c:2987 msgid "transaction_mode" msgstr "トランザクションのモード" -#: sql_help.c:776 sql_help.c:2584 sql_help.c:2607 +#: sql_help.c:985 sql_help.c:2964 sql_help.c:2988 msgid "where transaction_mode is one of:" msgstr "トランザクションのモードは以下のいずれか:" -#: sql_help.c:800 sql_help.c:839 sql_help.c:846 sql_help.c:866 sql_help.c:875 -#: sql_help.c:919 sql_help.c:923 sql_help.c:1017 sql_help.c:1417 -#: sql_help.c:1429 sql_help.c:1486 sql_help.c:2117 sql_help.c:2122 -#: sql_help.c:2346 sql_help.c:2351 sql_help.c:2460 sql_help.c:2462 -#: sql_help.c:2488 sql_help.c:2528 sql_help.c:2659 sql_help.c:2661 -#: sql_help.c:2687 sql_help.c:2811 sql_help.c:2813 sql_help.c:2839 +#: sql_help.c:1009 sql_help.c:1060 sql_help.c:1083 sql_help.c:1094 +#: sql_help.c:1139 sql_help.c:1143 sql_help.c:1339 sql_help.c:1676 +#: sql_help.c:1688 sql_help.c:1745 sql_help.c:2429 sql_help.c:2434 +#: sql_help.c:2683 sql_help.c:2688 sql_help.c:2769 sql_help.c:2837 +#: sql_help.c:2839 sql_help.c:2868 sql_help.c:2907 sql_help.c:3040 +#: sql_help.c:3042 sql_help.c:3071 sql_help.c:3196 sql_help.c:3198 +#: sql_help.c:3227 msgid "table_name" msgstr "テーブル名" -#: sql_help.c:838 sql_help.c:847 sql_help.c:848 sql_help.c:849 sql_help.c:854 -#: sql_help.c:859 sql_help.c:861 sql_help.c:863 sql_help.c:864 sql_help.c:867 -#: sql_help.c:868 sql_help.c:869 sql_help.c:870 sql_help.c:871 sql_help.c:872 -#: sql_help.c:873 sql_help.c:876 sql_help.c:877 -msgid "object_name" -msgstr "オブジェクト名" +#: sql_help.c:1057 +msgid "relation_name" +msgstr "拡張名" -#: sql_help.c:840 sql_help.c:1118 sql_help.c:1418 sql_help.c:1431 -#: sql_help.c:1450 sql_help.c:1452 sql_help.c:1459 sql_help.c:1487 -#: sql_help.c:1692 sql_help.c:2486 sql_help.c:2685 sql_help.c:2837 +#: sql_help.c:1058 sql_help.c:1340 sql_help.c:1373 sql_help.c:1677 +#: sql_help.c:1690 sql_help.c:1709 sql_help.c:1711 sql_help.c:1718 +#: sql_help.c:1746 sql_help.c:1848 sql_help.c:1968 sql_help.c:2770 +#: sql_help.c:2863 sql_help.c:3066 sql_help.c:3222 msgid "column_name" msgstr "カラム名" -#: sql_help.c:841 -msgid "agg_name" -msgstr "集約関数名" - -#: sql_help.c:842 -msgid "agg_type" -msgstr "集約関数の型" - -#: sql_help.c:843 sql_help.c:993 sql_help.c:997 sql_help.c:999 sql_help.c:1761 -msgid "source_type" -msgstr "ソースの型" - -#: sql_help.c:844 sql_help.c:994 sql_help.c:998 sql_help.c:1000 -#: sql_help.c:1762 -msgid "target_type" -msgstr "ターゲットの型" - -#: sql_help.c:865 +#: sql_help.c:1082 msgid "rule_name" msgstr "ロール名" -#: sql_help.c:878 +#: sql_help.c:1097 msgid "text" msgstr "テキスト" -#: sql_help.c:893 sql_help.c:2230 sql_help.c:2392 +#: sql_help.c:1112 sql_help.c:2567 sql_help.c:2729 msgid "transaction_id" msgstr "トランザクション ID" -#: sql_help.c:921 sql_help.c:926 sql_help.c:2179 +#: sql_help.c:1141 sql_help.c:1146 sql_help.c:2493 msgid "filename" msgstr "ファイル名" -#: sql_help.c:925 sql_help.c:1491 sql_help.c:1693 sql_help.c:1711 -#: sql_help.c:2161 +#: sql_help.c:1145 sql_help.c:1750 sql_help.c:1969 sql_help.c:1987 +#: sql_help.c:2475 msgid "query" msgstr "クエリー" -#: sql_help.c:928 +#: sql_help.c:1148 sql_help.c:2335 msgid "where option can be one of:" msgstr "オプションは以下のいずれか:" -#: sql_help.c:929 +#: sql_help.c:1149 msgid "format_name" msgstr "フォーマット名" -#: sql_help.c:930 sql_help.c:933 sql_help.c:2022 sql_help.c:2023 -#: sql_help.c:2024 sql_help.c:2025 +#: sql_help.c:1150 sql_help.c:1153 sql_help.c:2336 sql_help.c:2337 +#: sql_help.c:2338 sql_help.c:2339 msgid "boolean" msgstr "ブール値" -#: sql_help.c:931 +#: sql_help.c:1151 msgid "delimiter_character" msgstr "区切り文字" -#: sql_help.c:932 +#: sql_help.c:1152 msgid "null_string" msgstr "null文字列" -#: sql_help.c:934 +#: sql_help.c:1154 msgid "quote_character" msgstr "引用符文字" -#: sql_help.c:935 +#: sql_help.c:1155 msgid "escape_character" msgstr "エスケープ文字" -#: sql_help.c:963 +#: sql_help.c:1158 +msgid "encoding_name" +msgstr "エンコーディング名" + +#: sql_help.c:1184 msgid "input_data_type" msgstr "入力データの型" -#: sql_help.c:964 sql_help.c:971 +#: sql_help.c:1185 sql_help.c:1193 msgid "sfunc" msgstr "状態遷移関数" -#: sql_help.c:965 sql_help.c:972 +#: sql_help.c:1186 sql_help.c:1194 msgid "state_data_type" msgstr "状態データの型" -#: sql_help.c:966 sql_help.c:973 +#: sql_help.c:1187 sql_help.c:1195 msgid "ffunc" msgstr "終了関数" -#: sql_help.c:967 sql_help.c:974 +#: sql_help.c:1188 sql_help.c:1196 msgid "initial_condition" msgstr "初期条件" -#: sql_help.c:968 sql_help.c:975 +#: sql_help.c:1189 sql_help.c:1197 msgid "sort_operator" msgstr "ソート演算子" -#: sql_help.c:970 +#: sql_help.c:1190 +msgid "or the old syntax" +msgstr "または古い構文" + +#: sql_help.c:1192 msgid "base_type" msgstr "基本の型" -#: sql_help.c:1016 sql_help.c:1303 sql_help.c:1572 -msgid "event" -msgstr "イベント" +#: sql_help.c:1236 +msgid "locale" +msgstr "ロケール" -#: sql_help.c:1018 -msgid "referenced_table_name" -msgstr "非参照テーブル名" +#: sql_help.c:1237 sql_help.c:1271 +msgid "lc_collate" +msgstr "照合順序" -#: sql_help.c:1019 sql_help.c:1305 sql_help.c:1574 sql_help.c:1725 -#: sql_help.c:2449 sql_help.c:2451 sql_help.c:2517 sql_help.c:2519 -#: sql_help.c:2648 sql_help.c:2650 sql_help.c:2725 sql_help.c:2800 -#: sql_help.c:2802 -msgid "condition" -msgstr "条件" +#: sql_help.c:1238 sql_help.c:1272 +msgid "lc_ctype" +msgstr "Ctype(変換演算子)" -#: sql_help.c:1021 sql_help.c:1576 -msgid "arguments" -msgstr "引数" +#: sql_help.c:1240 +msgid "existing_collation" +msgstr "既存の照合順序" -#: sql_help.c:1031 +#: sql_help.c:1250 msgid "source_encoding" msgstr "変換元のエンコーディング" -#: sql_help.c:1032 +#: sql_help.c:1251 msgid "dest_encoding" msgstr "変換先のエンコーディング" -#: sql_help.c:1050 sql_help.c:1526 +#: sql_help.c:1269 sql_help.c:1785 msgid "template" msgstr "テンプレート" -#: sql_help.c:1051 +#: sql_help.c:1270 msgid "encoding" msgstr "エンコーディング" -#: sql_help.c:1052 -msgid "lc_collate" -msgstr "照合順序" - -#: sql_help.c:1053 -msgid "lc_ctype" -msgstr "Ctype(変換演算子)" - -#: sql_help.c:1054 sql_help.c:1184 sql_help.c:1428 sql_help.c:1437 -#: sql_help.c:1468 sql_help.c:1490 +#: sql_help.c:1273 sql_help.c:1440 sql_help.c:1687 sql_help.c:1695 +#: sql_help.c:1727 sql_help.c:1749 msgid "tablespace" msgstr "テーブルスペース" -#: sql_help.c:1071 sql_help.c:1234 sql_help.c:1419 sql_help.c:1612 -#: sql_help.c:2221 -msgid "data_type" -msgstr "データ型" - -#: sql_help.c:1073 +#: sql_help.c:1294 msgid "constraint" msgstr "制約" -#: sql_help.c:1074 +#: sql_help.c:1295 msgid "where constraint is:" msgstr "制約条件:" -#: sql_help.c:1116 sql_help.c:1420 sql_help.c:1432 +#: sql_help.c:1309 +msgid "schema" +msgstr "スキーマ" + +#: sql_help.c:1310 +msgid "version" +msgstr "バージョン" + +#: sql_help.c:1311 +msgid "old_version" +msgstr "古いバージョン" + +#: sql_help.c:1371 sql_help.c:1699 msgid "default_expr" msgstr "デフォルトの評価式" -#: sql_help.c:1117 +#: sql_help.c:1372 msgid "rettype" msgstr "戻り値の型" -#: sql_help.c:1119 +#: sql_help.c:1374 msgid "column_type" msgstr "カラムの型" -#: sql_help.c:1120 sql_help.c:1743 sql_help.c:2139 sql_help.c:2368 +#: sql_help.c:1375 sql_help.c:2021 sql_help.c:2451 sql_help.c:2705 msgid "lang_name" msgstr "言語" -#: sql_help.c:1126 +#: sql_help.c:1381 msgid "definition" msgstr "定義" -#: sql_help.c:1127 +#: sql_help.c:1382 msgid "obj_file" msgstr "オブジェクトファイル名" -#: sql_help.c:1128 +#: sql_help.c:1383 msgid "link_symbol" msgstr "リンクシンボル" -#: sql_help.c:1129 +#: sql_help.c:1384 msgid "attribute" msgstr "属性" -#: sql_help.c:1164 sql_help.c:1292 sql_help.c:1669 +#: sql_help.c:1419 sql_help.c:1550 sql_help.c:1945 msgid "uid" msgstr "ユーザーID" -#: sql_help.c:1178 +#: sql_help.c:1433 msgid "method" msgstr "メソッド" -#: sql_help.c:1181 sql_help.c:1472 +#: sql_help.c:1437 sql_help.c:1731 msgid "opclass" msgstr "演算子クラス" -#: sql_help.c:1185 sql_help.c:1458 +#: sql_help.c:1441 sql_help.c:1717 msgid "predicate" msgstr "述語" -#: sql_help.c:1197 +#: sql_help.c:1453 msgid "call_handler" msgstr "呼び出しハンドラー" -#: sql_help.c:1198 +#: sql_help.c:1454 msgid "inline_handler" msgstr "インラインハンドラー" -#: sql_help.c:1217 +#: sql_help.c:1455 +msgid "valfunction" +msgstr "バリデータ関数" + +#: sql_help.c:1473 msgid "com_op" msgstr "交換用演算子" -#: sql_help.c:1218 +#: sql_help.c:1474 msgid "neg_op" msgstr "否定用演算子" -#: sql_help.c:1219 +#: sql_help.c:1475 msgid "res_proc" msgstr "制約手続き" -#: sql_help.c:1220 +#: sql_help.c:1476 msgid "join_proc" msgstr "JOIN手続き" -#: sql_help.c:1236 +#: sql_help.c:1492 msgid "family_name" msgstr "ファミリー名" -#: sql_help.c:1246 +#: sql_help.c:1503 msgid "storage_type" msgstr "ストレージの型" -#: sql_help.c:1306 sql_help.c:1307 sql_help.c:1308 +#: sql_help.c:1561 sql_help.c:1841 +msgid "event" +msgstr "イベント" + +#: sql_help.c:1563 sql_help.c:1844 sql_help.c:2003 sql_help.c:2826 +#: sql_help.c:2828 sql_help.c:2896 sql_help.c:2898 sql_help.c:3029 +#: sql_help.c:3031 sql_help.c:3110 sql_help.c:3185 sql_help.c:3187 +msgid "condition" +msgstr "条件" + +#: sql_help.c:1564 sql_help.c:1565 sql_help.c:1566 msgid "command" msgstr "コマンド" -#: sql_help.c:1319 sql_help.c:1321 +#: sql_help.c:1577 sql_help.c:1579 msgid "schema_element" msgstr "スキーマ要素" -#: sql_help.c:1350 +#: sql_help.c:1608 msgid "server_type" msgstr "サーバーのタイプ" -#: sql_help.c:1351 +#: sql_help.c:1609 msgid "server_version" msgstr "サーバーのバージョン" -#: sql_help.c:1352 sql_help.c:2129 sql_help.c:2358 +#: sql_help.c:1610 sql_help.c:2441 sql_help.c:2695 msgid "fdw_name" msgstr "外部データラッパー" -#: sql_help.c:1424 +#: sql_help.c:1683 msgid "like_option" msgstr "LIKE オプション:" -#: sql_help.c:1430 -msgid "type_name" -msgstr "型名" - -#: sql_help.c:1438 +#: sql_help.c:1696 msgid "where column_constraint is:" -msgstr "カラムの制約条件:" +msgstr "カラム制約:" -#: sql_help.c:1441 sql_help.c:1442 sql_help.c:1451 sql_help.c:1453 -#: sql_help.c:1457 +#: sql_help.c:1700 sql_help.c:1701 sql_help.c:1710 sql_help.c:1712 +#: sql_help.c:1716 msgid "index_parameters" msgstr "インデックスのパラメーター" -#: sql_help.c:1443 sql_help.c:1460 +#: sql_help.c:1702 sql_help.c:1719 msgid "reftable" msgstr "参照テーブル" -#: sql_help.c:1444 sql_help.c:1461 +#: sql_help.c:1703 sql_help.c:1720 msgid "refcolumn" msgstr "参照カラム" -#: sql_help.c:1447 +#: sql_help.c:1706 msgid "and table_constraint is:" -msgstr "テーブルの制約条件" +msgstr "テーブル制約:" -#: sql_help.c:1455 +#: sql_help.c:1714 msgid "exclude_element" msgstr "排他要素" -#: sql_help.c:1464 +#: sql_help.c:1723 msgid "and like_option is:" -msgstr "LIKE オプションは:" +msgstr "LIKE オプション:" -#: sql_help.c:1465 +#: sql_help.c:1724 msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" msgstr "" "UNIQUE, PRIMARY KEY, EXCLUDE におけるインデックスパラメーターの制約条件:" -#: sql_help.c:1469 +#: sql_help.c:1728 msgid "exclude_element in an EXCLUDE constraint is:" msgstr "EXCLUDE における排他要素の制約条件:" -#: sql_help.c:1501 +#: sql_help.c:1760 msgid "directory" msgstr "ディレクトリー" -#: sql_help.c:1513 +#: sql_help.c:1772 msgid "parser_name" msgstr "パーサー名" -#: sql_help.c:1514 +#: sql_help.c:1773 msgid "source_config" msgstr "ソース設定" -#: sql_help.c:1543 +#: sql_help.c:1802 msgid "start_function" msgstr "開始関数" -#: sql_help.c:1544 +#: sql_help.c:1803 msgid "gettoken_function" msgstr "トークン取得用関数" -#: sql_help.c:1545 +#: sql_help.c:1804 msgid "end_function" msgstr "終了関数" -#: sql_help.c:1546 +#: sql_help.c:1805 msgid "lextypes_function" msgstr "LEX 型の関数" -#: sql_help.c:1547 +#: sql_help.c:1806 msgid "headline_function" msgstr "見出し関数" -#: sql_help.c:1559 +#: sql_help.c:1818 msgid "init_function" msgstr "初期処理関数" -#: sql_help.c:1560 +#: sql_help.c:1819 msgid "lexize_function" msgstr "LEX 処理関数" -#: sql_help.c:1611 -msgid "attribute_name" -msgstr "属性名" +#: sql_help.c:1843 +msgid "referenced_table_name" +msgstr "非参照テーブル名" -#: sql_help.c:1614 +#: sql_help.c:1846 +msgid "arguments" +msgstr "引数" + +#: sql_help.c:1847 +msgid "where event can be one of:" +msgstr "イベントは以下のいずれか:" + +#: sql_help.c:1888 sql_help.c:2785 msgid "label" msgstr "ラベル" -#: sql_help.c:1616 +#: sql_help.c:1890 msgid "input_function" msgstr "入力関数" -#: sql_help.c:1617 +#: sql_help.c:1891 msgid "output_function" msgstr "出力関数" -#: sql_help.c:1618 +#: sql_help.c:1892 msgid "receive_function" msgstr "受信関数" -#: sql_help.c:1619 +#: sql_help.c:1893 msgid "send_function" msgstr "送信関数" -#: sql_help.c:1620 +#: sql_help.c:1894 msgid "type_modifier_input_function" msgstr "型修飾子の入力関数" -#: sql_help.c:1621 +#: sql_help.c:1895 msgid "type_modifier_output_function" msgstr "型修飾子の出力関数" -#: sql_help.c:1622 +#: sql_help.c:1896 msgid "analyze_function" msgstr "分析関数" -#: sql_help.c:1623 +#: sql_help.c:1897 msgid "internallength" msgstr "内部長" -#: sql_help.c:1624 +#: sql_help.c:1898 msgid "alignment" msgstr "アラインメント" -#: sql_help.c:1625 +#: sql_help.c:1899 msgid "storage" msgstr "ストレージ" -#: sql_help.c:1626 +#: sql_help.c:1900 msgid "like_type" msgstr "LIKEの型" -#: sql_help.c:1627 +#: sql_help.c:1901 msgid "category" msgstr "カテゴリー" -#: sql_help.c:1628 +#: sql_help.c:1902 msgid "preferred" msgstr "推奨" -#: sql_help.c:1629 +#: sql_help.c:1903 msgid "default" msgstr "デフォルト" -#: sql_help.c:1630 +#: sql_help.c:1904 msgid "element" msgstr "要素" -#: sql_help.c:1631 +#: sql_help.c:1905 msgid "delimiter" msgstr "デリミタ" -#: sql_help.c:1723 sql_help.c:2463 sql_help.c:2466 sql_help.c:2469 -#: sql_help.c:2473 sql_help.c:2662 sql_help.c:2665 sql_help.c:2668 -#: sql_help.c:2672 sql_help.c:2719 sql_help.c:2814 sql_help.c:2817 -#: sql_help.c:2820 sql_help.c:2824 +#: sql_help.c:1906 +msgid "collatable" +msgstr "照合順序" + +#: sql_help.c:1999 sql_help.c:2471 sql_help.c:2821 sql_help.c:2890 +#: sql_help.c:3024 sql_help.c:3102 sql_help.c:3180 +msgid "with_query" +msgstr "WITH クエリー" + +#: sql_help.c:2001 sql_help.c:2840 sql_help.c:2843 sql_help.c:2846 +#: sql_help.c:2850 sql_help.c:3043 sql_help.c:3046 sql_help.c:3049 +#: sql_help.c:3053 sql_help.c:3104 sql_help.c:3199 sql_help.c:3202 +#: sql_help.c:3205 sql_help.c:3209 msgid "alias" msgstr "別名" -#: sql_help.c:1724 +#: sql_help.c:2002 msgid "using_list" msgstr "USING リスト" -#: sql_help.c:1726 sql_help.c:2053 sql_help.c:2203 sql_help.c:2726 +#: sql_help.c:2004 sql_help.c:2365 sql_help.c:2534 sql_help.c:3111 msgid "cursor_name" msgstr "カーソル名" -#: sql_help.c:1727 sql_help.c:2162 sql_help.c:2727 +#: sql_help.c:2005 sql_help.c:2476 sql_help.c:3112 msgid "output_expression" msgstr "出力表現" -#: sql_help.c:1728 sql_help.c:2163 sql_help.c:2447 sql_help.c:2514 -#: sql_help.c:2646 sql_help.c:2728 sql_help.c:2798 +#: sql_help.c:2006 sql_help.c:2477 sql_help.c:2824 sql_help.c:2893 +#: sql_help.c:3027 sql_help.c:3113 sql_help.c:3183 msgid "output_name" msgstr "出力名" -#: sql_help.c:1744 +#: sql_help.c:2022 msgid "code" msgstr "コード" -#: sql_help.c:2013 +#: sql_help.c:2315 msgid "parameter" msgstr "パラメータ" -#: sql_help.c:2026 sql_help.c:2027 sql_help.c:2222 +#: sql_help.c:2333 sql_help.c:2334 sql_help.c:2559 msgid "statement" msgstr "ステートメント" -#: sql_help.c:2052 sql_help.c:2202 +#: sql_help.c:2364 sql_help.c:2533 msgid "direction" msgstr "方向" -#: sql_help.c:2054 +#: sql_help.c:2366 sql_help.c:2535 msgid "where direction can be empty or one of:" msgstr "方向は無指定もしくは以下のいずれか:" -#: sql_help.c:2055 sql_help.c:2056 sql_help.c:2057 sql_help.c:2058 -#: sql_help.c:2059 sql_help.c:2457 sql_help.c:2459 sql_help.c:2525 -#: sql_help.c:2527 sql_help.c:2656 sql_help.c:2658 sql_help.c:2757 -#: sql_help.c:2759 sql_help.c:2808 sql_help.c:2810 +#: sql_help.c:2367 sql_help.c:2368 sql_help.c:2369 sql_help.c:2370 +#: sql_help.c:2371 sql_help.c:2536 sql_help.c:2537 sql_help.c:2538 +#: sql_help.c:2539 sql_help.c:2540 sql_help.c:2834 sql_help.c:2836 +#: sql_help.c:2904 sql_help.c:2906 sql_help.c:3037 sql_help.c:3039 +#: sql_help.c:3142 sql_help.c:3144 sql_help.c:3193 sql_help.c:3195 msgid "count" msgstr "カウント" -#: sql_help.c:2124 sql_help.c:2353 +#: sql_help.c:2436 sql_help.c:2690 msgid "sequence_name" msgstr "シーケンス名" -#: sql_help.c:2135 sql_help.c:2364 +#: sql_help.c:2447 sql_help.c:2701 msgid "arg_name" msgstr "引数名" -#: sql_help.c:2136 sql_help.c:2365 +#: sql_help.c:2448 sql_help.c:2702 msgid "arg_type" msgstr "引数の型" -#: sql_help.c:2141 sql_help.c:2370 +#: sql_help.c:2453 sql_help.c:2707 msgid "loid" msgstr "ラージオブジェクトid" -#: sql_help.c:2171 sql_help.c:2211 sql_help.c:2705 +#: sql_help.c:2485 sql_help.c:2548 sql_help.c:3088 msgid "channel" msgstr "チャネル" -#: sql_help.c:2193 +#: sql_help.c:2507 msgid "lockmode" msgstr "ロックモード" -#: sql_help.c:2194 +#: sql_help.c:2508 msgid "where lockmode is one of:" msgstr "ロックモードは以下のいずれか:" -#: sql_help.c:2212 +#: sql_help.c:2549 msgid "payload" msgstr "ペイロード" -#: sql_help.c:2238 +#: sql_help.c:2575 msgid "old_role" msgstr "元のロール" -#: sql_help.c:2239 +#: sql_help.c:2576 msgid "new_role" msgstr "新しいロール" -#: sql_help.c:2255 sql_help.c:2400 sql_help.c:2408 +#: sql_help.c:2592 sql_help.c:2737 sql_help.c:2745 msgid "savepoint_name" msgstr "セーブポイント名" -#: sql_help.c:2444 sql_help.c:2511 sql_help.c:2643 sql_help.c:2795 -msgid "with_query" -msgstr "WITH クエリー" +#: sql_help.c:2767 +msgid "provider" +msgstr "プロバイダ" -#: sql_help.c:2448 sql_help.c:2479 sql_help.c:2481 sql_help.c:2516 -#: sql_help.c:2647 sql_help.c:2678 sql_help.c:2680 sql_help.c:2799 -#: sql_help.c:2830 sql_help.c:2832 +#: sql_help.c:2825 sql_help.c:2856 sql_help.c:2858 sql_help.c:2895 +#: sql_help.c:3028 sql_help.c:3059 sql_help.c:3061 sql_help.c:3184 +#: sql_help.c:3215 sql_help.c:3217 msgid "from_item" msgstr "FROM 項目" -#: sql_help.c:2452 sql_help.c:2520 sql_help.c:2651 sql_help.c:2803 +#: sql_help.c:2829 sql_help.c:2899 sql_help.c:3032 sql_help.c:3188 msgid "window_name" msgstr "ウィンドウ名" -#: sql_help.c:2453 sql_help.c:2521 sql_help.c:2652 sql_help.c:2804 +#: sql_help.c:2830 sql_help.c:2900 sql_help.c:3033 sql_help.c:3189 msgid "window_definition" msgstr "ウィンドウ定義" -#: sql_help.c:2454 sql_help.c:2465 sql_help.c:2487 sql_help.c:2522 -#: sql_help.c:2653 sql_help.c:2664 sql_help.c:2686 sql_help.c:2805 -#: sql_help.c:2816 sql_help.c:2838 +#: sql_help.c:2831 sql_help.c:2842 sql_help.c:2864 sql_help.c:2901 +#: sql_help.c:3034 sql_help.c:3045 sql_help.c:3067 sql_help.c:3190 +#: sql_help.c:3201 sql_help.c:3223 msgid "select" msgstr "SELECT 句" -#: sql_help.c:2461 sql_help.c:2660 sql_help.c:2812 +#: sql_help.c:2838 sql_help.c:3041 sql_help.c:3197 msgid "where from_item can be one of:" msgstr "FROM 項目は以下のいずれか:" -#: sql_help.c:2464 sql_help.c:2467 sql_help.c:2470 sql_help.c:2474 -#: sql_help.c:2663 sql_help.c:2666 sql_help.c:2669 sql_help.c:2673 -#: sql_help.c:2815 sql_help.c:2818 sql_help.c:2821 sql_help.c:2825 +#: sql_help.c:2841 sql_help.c:2844 sql_help.c:2847 sql_help.c:2851 +#: sql_help.c:3044 sql_help.c:3047 sql_help.c:3050 sql_help.c:3054 +#: sql_help.c:3200 sql_help.c:3203 sql_help.c:3206 sql_help.c:3210 msgid "column_alias" msgstr "カラムの別名" -#: sql_help.c:2468 sql_help.c:2485 sql_help.c:2489 sql_help.c:2667 -#: sql_help.c:2684 sql_help.c:2688 sql_help.c:2819 sql_help.c:2836 -#: sql_help.c:2840 +#: sql_help.c:2845 sql_help.c:2862 sql_help.c:3048 sql_help.c:3065 +#: sql_help.c:3204 sql_help.c:3221 msgid "with_query_name" msgstr "WITH クエリー名" -#: sql_help.c:2472 sql_help.c:2477 sql_help.c:2671 sql_help.c:2676 -#: sql_help.c:2823 sql_help.c:2828 +#: sql_help.c:2849 sql_help.c:2854 sql_help.c:3052 sql_help.c:3057 +#: sql_help.c:3208 sql_help.c:3213 msgid "argument" msgstr "引数" -#: sql_help.c:2475 sql_help.c:2478 sql_help.c:2674 sql_help.c:2677 -#: sql_help.c:2826 sql_help.c:2829 +#: sql_help.c:2852 sql_help.c:2855 sql_help.c:3055 sql_help.c:3058 +#: sql_help.c:3211 sql_help.c:3214 msgid "column_definition" msgstr "カラム定義" -#: sql_help.c:2480 sql_help.c:2679 sql_help.c:2831 +#: sql_help.c:2857 sql_help.c:3060 sql_help.c:3216 msgid "join_type" msgstr "JOIN タイプ" -#: sql_help.c:2482 sql_help.c:2681 sql_help.c:2833 +#: sql_help.c:2859 sql_help.c:3062 sql_help.c:3218 msgid "join_condition" msgstr "JOIN 条件" -#: sql_help.c:2483 sql_help.c:2682 sql_help.c:2834 +#: sql_help.c:2860 sql_help.c:3063 sql_help.c:3219 msgid "join_column" msgstr "JOIN カラム" -#: sql_help.c:2484 sql_help.c:2683 sql_help.c:2835 +#: sql_help.c:2861 sql_help.c:3064 sql_help.c:3220 msgid "and with_query is:" msgstr "WITH クエリー:" -#: sql_help.c:2515 +#: sql_help.c:2865 sql_help.c:3068 sql_help.c:3224 +msgid "insert" +msgstr "INSERT句" + +#: sql_help.c:2866 sql_help.c:3069 sql_help.c:3225 +msgid "update" +msgstr "UPDATE句" + +#: sql_help.c:2867 sql_help.c:3070 sql_help.c:3226 +msgid "delete" +msgstr "DELETE句" + +#: sql_help.c:2894 msgid "new_table" msgstr "新しいテーブル" -#: sql_help.c:2540 +#: sql_help.c:2919 msgid "timezone" msgstr "タイムゾーン" -#: sql_help.c:2724 +#: sql_help.c:3109 msgid "from_list" msgstr "FROM リスト" -#: sql_help.c:2755 +#: sql_help.c:3140 msgid "sort_expression" msgstr "ソート表現" @@ -3725,27 +4060,42 @@ msgstr "ディレクトリを \"%s\" に変更できませんでした。" msgid "could not read symbolic link \"%s\"" msgstr "シンボリックリンク \"%s\" を読み込めませんでした。" -#: ../../port/exec.c:516 +#: ../../port/exec.c:517 #, c-format msgid "child process exited with exit code %d" msgstr "子プロセスが終了コード %d で終了しました。" -#: ../../port/exec.c:520 +#: ../../port/exec.c:521 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "子プロセスが例外 0x%X で終了させられました。" -#: ../../port/exec.c:529 +#: ../../port/exec.c:530 #, c-format msgid "child process was terminated by signal %s" msgstr "子プロセスがシグナル %s で終了させられました。" -#: ../../port/exec.c:532 +#: ../../port/exec.c:533 #, c-format msgid "child process was terminated by signal %d" msgstr "子プロセスがシグナル %d で終了させられました。" -#: ../../port/exec.c:536 +#: ../../port/exec.c:537 #, c-format msgid "child process exited with unrecognized status %d" msgstr "子プロセスが認識できないステータス %d により終了しました。" + +#~ msgid "out of memory" +#~ msgstr "メモリ不足です" + +#~ msgid " on host \"%s\"" +#~ msgstr "ホスト:\"%s\"" + +#~ msgid " at port \"%s\"" +#~ msgstr "ポート番号:\"%s\"" + +#~ msgid " as user \"%s\"" +#~ msgstr "ユーザ名:\"%s\"" + +#~ msgid "define a new constraint trigger" +#~ msgstr "新しい制約トリガを定義する" diff --git a/src/bin/psql/po/pl.po b/src/bin/psql/po/pl.po new file mode 100644 index 0000000000..a1f6cdf901 --- /dev/null +++ b/src/bin/psql/po/pl.po @@ -0,0 +1,4114 @@ +# Polish message translation file for psql +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# Begina Felicysym , 2011. +msgid "" +msgstr "" +"Project-Id-Version: psql (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-10-08 08:42+0000\n" +"PO-Revision-Date: 2011-10-09 17:42+0200\n" +"Last-Translator: Begina Felicysym \n" +"Language-Team: Begina Felicysym\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1-beta1\n" + +#: command.c:113 +#, c-format +msgid "Invalid command \\%s. Try \\? for help.\n" +msgstr "Niepoprawne polecenie \\%s. Spróbuj \\? by uzyskać pomoc.\n" + +#: command.c:115 +#, c-format +msgid "invalid command \\%s\n" +msgstr "niepoprawne polecenie \\%s\n" + +#: command.c:126 +#, c-format +msgid "\\%s: extra argument \"%s\" ignored\n" +msgstr "\\%s: nadmiarowy argument \"%s\" zignorowany\n" + +#: command.c:268 +#, c-format +msgid "could not get home directory: %s\n" +msgstr "nie można pobrać folderu domowego: %s\n" + +#: command.c:284 +#, c-format +msgid "\\%s: could not change directory to \"%s\": %s\n" +msgstr "\\%s: nie można zmienić katalogu na \"%s\": %s\n" + +#: command.c:305 common.c:493 common.c:773 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "Nie jesteś obecnie połączony do bazy danych.\n" + +#: command.c:312 +#, c-format +msgid "" +"You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at " +"port \"%s\".\n" +msgstr "" +"Jesteś obecnie połączony do bazy danych \"%s\" jako użytkownik \"%s\" przez " +"gniazdo w \"%s\" port \"%s\".\n" + +#: command.c:315 +#, c-format +msgid "" +"You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port " +"\"%s\".\n" +msgstr "" +"Jesteś obecnie połączony do bazy danych \"%s\" jako użytkownik \"%s\" na " +"serwerze \"%s\" port \"%s\".\n" + +#: command.c:339 common.c:940 +#, c-format +msgid "Time: %.3f ms\n" +msgstr "Czas: %.3f ms\n" + +#: command.c:524 command.c:588 command.c:1285 +msgid "no query buffer\n" +msgstr "brak bufora zapytania\n" + +#: command.c:557 command.c:2507 +#, c-format +msgid "invalid line number: %s\n" +msgstr "nieprawidłowy numer linii: %s\n" + +#: command.c:662 +msgid "No changes" +msgstr "Bez zmian" + +#: command.c:716 +#, c-format +msgid "%s: invalid encoding name or conversion procedure not found\n" +msgstr "" +"%s: nieprawidłowa nazwa kodowania lub nie znaleziono procedury konwersji\n" + +#: command.c:795 command.c:829 command.c:843 command.c:860 command.c:964 +#: command.c:1014 command.c:1265 command.c:1296 +#, c-format +msgid "\\%s: missing required argument\n" +msgstr "\\%s: brakujący wymagany argument\n" + +#: command.c:892 +msgid "Query buffer is empty." +msgstr "Bufor zapytania jest pusty." + +#: command.c:902 +msgid "Enter new password: " +msgstr "Wprowadź nowe hasło: " + +#: command.c:903 +msgid "Enter it again: " +msgstr "Powtórz podane hasło: " + +#: command.c:907 +#, c-format +msgid "Passwords didn't match.\n" +msgstr "Podane hasła różnią się.\n" + +#: command.c:925 +#, c-format +msgid "Password encryption failed.\n" +msgstr "Nie udało się zaszyfrować hasła.\n" + +#: command.c:993 command.c:1094 command.c:1270 +#, c-format +msgid "\\%s: error\n" +msgstr "\\%s: błąd\n" + +#: command.c:1034 +msgid "Query buffer reset (cleared)." +msgstr "Reset bufora zapytania (wyczyszczony)." + +#: command.c:1047 +#, c-format +msgid "Wrote history to file \"%s/%s\".\n" +msgstr "Zapisano historię do pliku \"%s/%s\".\n" + +#: command.c:1085 common.c:52 common.c:66 common.c:90 input.c:209 +#: mainloop.c:72 mainloop.c:234 print.c:137 print.c:151 +#, c-format +msgid "out of memory\n" +msgstr "brak pamięci\n" + +#: command.c:1115 +msgid "function name is required\n" +msgstr "wymagana jest nazwa funkcji\n" + +#: command.c:1250 +msgid "Timing is on." +msgstr "Pomiar czasu włączony." + +#: command.c:1252 +msgid "Timing is off." +msgstr "Pomiar czasu wyłączony." + +#: command.c:1313 command.c:1333 command.c:1895 command.c:1902 command.c:1911 +#: command.c:1921 command.c:1930 command.c:1944 command.c:1961 command.c:1999 +#: common.c:137 copy.c:283 copy.c:361 +#, c-format +msgid "%s: %s\n" +msgstr "%s: %s\n" + +#: command.c:1415 startup.c:159 +msgid "Password: " +msgstr "Hasło: " + +#: command.c:1422 startup.c:162 startup.c:164 +#, c-format +msgid "Password for user %s: " +msgstr "Hasło użytkownika %s: " + +#: command.c:1541 command.c:2541 common.c:183 common.c:460 common.c:525 +#: common.c:816 common.c:841 common.c:925 copy.c:432 copy.c:477 copy.c:607 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.c:1545 +msgid "Previous connection kept\n" +msgstr "Poprzednie połączenie zachowane\n" + +#: command.c:1549 +#, c-format +msgid "\\connect: %s" +msgstr "\\connect: %s" + +#: command.c:1582 +#, c-format +msgid "" +"You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" " +"at port \"%s\".\n" +msgstr "" +"Jesteś obecnie połączony do bazy danych \"%s\" jako użytkownik \"%s\" przez " +"gniazdo na \"%s\" port \"%s\".\n" + +#: command.c:1585 +#, c-format +msgid "" +"You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at " +"port \"%s\".\n" +msgstr "" +"Jesteś obecnie połączony do bazy danych \"%s\" jako użytkownik \"%s\" na " +"serwerze \"%s\" port \"%s\".\n" + +#: command.c:1589 +#, c-format +msgid "You are now connected to database \"%s\" as user \"%s\".\n" +msgstr "" +"Jesteś obecnie połączony do bazy danych \"%s\" jako użytkownik \"%s\".\n" + +#: command.c:1623 +#, c-format +msgid "%s (%s, server %s)\n" +msgstr "%s (%s, serwer %s)\n" + +#: command.c:1631 +#, c-format +msgid "" +"WARNING: %s version %d.%d, server version %d.%d.\n" +" Some psql features might not work.\n" +msgstr "" +"OSTRZEŻENIE: %s wersja %d.%d, wersja serwera %d.%d.\n" +" Niektóre cechy psql mogą nie działać.\n" + +#: command.c:1661 +#, c-format +msgid "SSL connection (cipher: %s, bits: %i)\n" +msgstr "Połączenie SSL (szyfr: %s, bity: %i)\n" + +#: command.c:1671 +#, c-format +msgid "SSL connection (unknown cipher)\n" +msgstr "Połączenie SSL (nieznany szyfr)\n" + +#: command.c:1692 +#, c-format +msgid "" +"WARNING: Console code page (%u) differs from Windows code page (%u)\n" +" 8-bit characters might not work correctly. See psql reference\n" +" page \"Notes for Windows users\" for details.\n" +msgstr "" +"OSTRZEŻENIE: strona kodowa konsoli (%u) jest różna od kodowania Windows " +"(%u)\n" +" 8-bitowe znaki mogą nie wyglądać poprawnie. Przejrzyj odnośną\n" +" stronę \"Notes for Windows users\" by poznać szczegóły.\n" + +#: command.c:1776 +msgid "" +"environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a " +"line number\n" +msgstr "" +"musi być ustawiona zmienna środowiskowa PSQL_EDITOR_LINENUMBER_ARG by " +"wskazać numer linii\n" + +#: command.c:1813 +#, c-format +msgid "could not start editor \"%s\"\n" +msgstr "nie można uruchomić edytora \"%s\"\n" + +#: command.c:1815 +msgid "could not start /bin/sh\n" +msgstr "nie można uruchomić /bin/sh\n" + +#: command.c:1853 +#, c-format +msgid "could not locate temporary directory: %s\n" +msgstr "nie można utworzyć katalogu tymczasowego: %s\n" + +#: command.c:1880 +#, c-format +msgid "could not open temporary file \"%s\": %s\n" +msgstr "nie można otworzyć pliku tymczasowego \"%s\": %s\n" + +#: command.c:2110 +msgid "" +"\\pset: allowed formats are unaligned, aligned, wrapped, html, latex, troff-" +"ms\n" +msgstr "" +"\\pset: dostępnymi formatami są unaligned, aligned, wrapped, html, latex, " +"troff-ms\n" + +#: command.c:2115 +#, c-format +msgid "Output format is %s.\n" +msgstr "Format wyjścia to %s.\n" + +#: command.c:2131 +msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" +msgstr "\\pset: dostępne style linii to ascii, old-ascii, unicode\n" + +#: command.c:2136 +#, c-format +msgid "Line style is %s.\n" +msgstr "Styl linii to %s.\n" + +#: command.c:2147 +#, c-format +msgid "Border style is %d.\n" +msgstr "Styl obramowania to %d.\n" + +#: command.c:2159 +#, c-format +msgid "Expanded display is on.\n" +msgstr "Rozszerzone wyświetlanie jest włączone.\n" + +#: command.c:2160 +#, c-format +msgid "Expanded display is off.\n" +msgstr "Rozszerzone wyświetlanie jest wyłączone.\n" + +#: command.c:2173 +msgid "Showing locale-adjusted numeric output." +msgstr "Wyświetlanie dostosowanego do lokalizacji wyjścia numerycznego." + +#: command.c:2175 +msgid "Locale-adjusted numeric output is off." +msgstr "Dostosowane do lokalizacji wyświetlanie liczb jest wyłączone." + +#: command.c:2188 +#, c-format +msgid "Null display is \"%s\".\n" +msgstr "Wyświetlanie Null jako \"%s\".\n" + +#: command.c:2200 +#, c-format +msgid "Field separator is \"%s\".\n" +msgstr "Separatorem pól jest \"%s\".\n" + +#: command.c:2214 +#, c-format +msgid "Record separator is ." +msgstr "Separatorem rekordów jest ." + +#: command.c:2216 +#, c-format +msgid "Record separator is \"%s\".\n" +msgstr "Separatorem rekordów jest \"%s\".\n" + +#: command.c:2230 +msgid "Showing only tuples." +msgstr "Pokazywanie tylko krotek." + +#: command.c:2232 +msgid "Tuples only is off." +msgstr "Tylko krotki wyłączone." + +#: command.c:2248 +#, c-format +msgid "Title is \"%s\".\n" +msgstr "Tytuł to \"%s\".\n" + +#: command.c:2250 +#, c-format +msgid "Title is unset.\n" +msgstr "Tytuł nie jest ustawiony.\n" + +#: command.c:2266 +#, c-format +msgid "Table attribute is \"%s\".\n" +msgstr "Atrybut tabeli to \"%s\".\n" + +#: command.c:2268 +#, c-format +msgid "Table attributes unset.\n" +msgstr "Atrybuty tabeli nie są ustawione.\n" + +#: command.c:2289 +msgid "Pager is used for long output." +msgstr "Stronicowanie jest używane dla długiego wyjścia." + +#: command.c:2291 +msgid "Pager is always used." +msgstr "Stronicowanie zawsze używane." + +#: command.c:2293 +msgid "Pager usage is off." +msgstr "Stronicowanie nigdy nie używane." + +#: command.c:2307 +msgid "Default footer is on." +msgstr "Domyślna stopka jest włączona." + +#: command.c:2309 +msgid "Default footer is off." +msgstr "Domyślna stopka jest wyłączona." + +#: command.c:2320 +#, c-format +msgid "Target width for \"wrapped\" format is %d.\n" +msgstr "Docelowa szerokość \"zawijanego\" formatu to %d.\n" + +#: command.c:2325 +#, c-format +msgid "\\pset: unknown option: %s\n" +msgstr "\\pset: nieznana opcja: %s\n" + +#: command.c:2379 +msgid "\\!: failed\n" +msgstr "\\!: niepowodzenie\n" + +#: common.c:45 +#, c-format +msgid "%s: pg_strdup: cannot duplicate null pointer (internal error)\n" +msgstr "" +"%s: pg_strdup: nie można powielić pustego wskazania (błąd wewnętrzny)\n" + +#: common.c:343 +msgid "connection to server was lost\n" +msgstr "utracono połączenie z serwerem\n" + +#: common.c:347 +msgid "The connection to the server was lost. Attempting reset: " +msgstr "Połączenie z serwerem zostało przerwane. Próba resetu: " + +#: common.c:352 +msgid "Failed.\n" +msgstr "Nieudane.\n" + +#: common.c:359 +msgid "Succeeded.\n" +msgstr "Udane.\n" + +#: common.c:499 common.c:506 common.c:799 +#, c-format +msgid "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" +msgstr "" +"********* ZAPYTANIE **********\n" +"%s\n" +"******************************\n" +"\n" + +#: common.c:560 +#, c-format +msgid "" +"Asynchronous notification \"%s\" with payload \"%s\" received from server " +"process with PID %d.\n" +msgstr "" +"Asynchroniczne powiadomienie \"%s\" o ładunku \"%s\" otrzymano z procesu " +"serwera PID %d.\n" + +#: common.c:563 +#, c-format +msgid "" +"Asynchronous notification \"%s\" received from server process with PID %d.\n" +msgstr "" +"Asynchroniczne powiadomienie \"%s\" otrzymano z procesu serwera PID %d.\n" + +#: common.c:781 +#, c-format +msgid "" +"***(Single step mode: verify command)" +"*******************************************\n" +"%s\n" +"***(press return to proceed or enter x and return to cancel)" +"********************\n" +msgstr "" +"***(Tryb jednokrokowy: sprawdzenie polecenia)" +"***********************************\n" +"%s\n" +"***(wciśnij enter by iść dalej lub x i enter by anulować)" +"***********************\n" + +#: common.c:832 +#, c-format +msgid "" +"The server (version %d.%d) does not support savepoints for " +"ON_ERROR_ROLLBACK.\n" +msgstr "" +"Serwer (wersja %d.%d) nie obsługuje punktów zapisu dla ON_ERROR_ROLLBACK.\n" + +#: copy.c:96 +msgid "\\copy: arguments required\n" +msgstr "\\copy: wymagane są argumenty\n" + +#: copy.c:228 +#, c-format +msgid "\\copy: parse error at \"%s\"\n" +msgstr "\\copy: błąd analizy przy \"%s\"\n" + +#: copy.c:230 +msgid "\\copy: parse error at end of line\n" +msgstr "\\copy: błąd analizy na końcu linii\n" + +#: copy.c:294 +#, c-format +msgid "%s: cannot copy from/to a directory\n" +msgstr "%s: nie można kopiować z/do folderu\n" + +#: copy.c:331 +#, c-format +msgid "\\copy: %s" +msgstr "\\copy: %s" + +#: copy.c:335 copy.c:349 +#, c-format +msgid "\\copy: unexpected response (%d)\n" +msgstr "\\copy: nieoczekiwana odpowiedź (%d)\n" + +#: copy.c:353 +msgid "trying to exit copy mode" +msgstr "próba wyjścia z trybu kopiowanie" + +#: copy.c:407 copy.c:417 +#, c-format +msgid "could not write COPY data: %s\n" +msgstr "nie można zapisać danych COPY: %s\n" + +#: copy.c:424 +#, c-format +msgid "COPY data transfer failed: %s" +msgstr "transfer danych COPY nie powiódł się: %s" + +#: copy.c:472 +msgid "canceled by user" +msgstr "anulowane przez użytkownika" + +#: copy.c:487 +msgid "" +"Enter data to be copied followed by a newline.\n" +"End with a backslash and a period on a line by itself." +msgstr "" +"Wprowadź dane do skopiowania poprzedzone nową linią.\n" +"Zakończ linią zawierająca tylko odwróconym ukośnikiem i spację." + +#: copy.c:600 +msgid "aborted because of read failure" +msgstr "przerwane na skutek nieudanego odczytu" + +#: help.c:48 +msgid "on" +msgstr "włączone" + +#: help.c:48 +msgid "off" +msgstr "wyłączone" + +#: help.c:70 +#, c-format +msgid "could not get current user name: %s\n" +msgstr "nie udało się uzyskać nazwy bieżącego użytkownika: %s\n" + +#: help.c:82 +#, c-format +msgid "" +"psql is the PostgreSQL interactive terminal.\n" +"\n" +msgstr "" +"psql jest interaktywnym terminalem PostgreSQL.\n" +"\n" + +#: help.c:83 +#, c-format +msgid "Usage:\n" +msgstr "Składnia:\n" + +#: help.c:84 +#, c-format +msgid "" +" psql [OPTION]... [DBNAME [USERNAME]]\n" +"\n" +msgstr "" +" psql [OPCJA]... [NAZWADB [NAZWAUŻYTKOWNIKA]]\n" +"\n" + +#: help.c:86 +#, c-format +msgid "General options:\n" +msgstr "Opcje ogólne:\n" + +#: help.c:91 +#, c-format +msgid "" +" -c, --command=COMMAND run only single command (SQL or internal) and " +"exit\n" +msgstr "" +" -c, --command=POLECENIE wykonuje jedno polecenie (SQL lub wewnętrzne) i " +"kończy\n" + +#: help.c:92 +#, c-format +msgid "" +" -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" +msgstr "" +" -d, --dbname=NAZWADB nazwa bazy danych do połączenia (domyślnie: \"%s" +"\")\n" + +#: help.c:93 +#, c-format +msgid " -f, --file=FILENAME execute commands from file, then exit\n" +msgstr " -f, --file=NAZWAPLIKU wykonuje polecenia z pliku i kończy\n" + +#: help.c:94 +#, c-format +msgid " -l, --list list available databases, then exit\n" +msgstr " -l, --list listuje dostępne bazy danych i kończy\n" + +#: help.c:95 +#, c-format +msgid "" +" -v, --set=, --variable=NAME=VALUE\n" +" set psql variable NAME to VALUE\n" +msgstr "" +" -v, --set=, --variable=NAZWA=WARTOŚĆ\n" +" ustala wartość zmiennej psql NAZWA na WARTOŚĆ\n" + +#: help.c:97 +#, c-format +msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" +msgstr " -X, --no-psqlrc nie czyta pliku startowego (~/.psqlrc)\n" + +#: help.c:98 +#, c-format +msgid "" +" -1 (\"one\"), --single-transaction\n" +" execute command file as a single transaction\n" +msgstr "" +" -1 (\"one\"), --single-transaction\n" +" wykonuje plik poleceń w jednej transakcji\n" + +#: help.c:100 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help pokazuje ten ekran pomocy i kończy\n" + +#: help.c:101 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version pokazuje informacje o wersji i kończy\n" + +#: help.c:103 +#, c-format +msgid "" +"\n" +"Input and output options:\n" +msgstr "" +"\n" +"Opcje wejścia i wyjścia:\n" + +#: help.c:104 +#, c-format +msgid " -a, --echo-all echo all input from script\n" +msgstr " -a, --echo-all echo wejścia ze skryptu\n" + +#: help.c:105 +#, c-format +msgid " -e, --echo-queries echo commands sent to server\n" +msgstr " -e, --echo-queries polecenia echo wysyłane na serwer\n" + +#: help.c:106 +#, c-format +msgid "" +" -E, --echo-hidden display queries that internal commands generate\n" +msgstr "" +" -E, --echo-hidden wyświetlenie zapytań tworzonych przez polecenia " +"wewnętrzne\n" + +#: help.c:107 +#, c-format +msgid " -L, --log-file=FILENAME send session log to file\n" +msgstr "" +" -L, --log-file=NAZWAPLIKU\n" +" wysyła komunikaty sesji do pliku\n" + +#: help.c:108 +#, c-format +msgid "" +" -n, --no-readline disable enhanced command line editing (readline)\n" +msgstr "" +" -n, --no-readline wyłącza rozszerzoną edycje linii poleceń " +"(readline)\n" + +#: help.c:109 +#, c-format +msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" +msgstr "" +" -o, --output=NAZWAPLIKU wysyła wyniki zapytania do pliku (lub |przewodu)\n" + +#: help.c:110 +#, c-format +msgid "" +" -q, --quiet run quietly (no messages, only query output)\n" +msgstr "" +" -q, --quiet ciche wykonanie (bez komunikatów, tylko wyniki " +"zapytań)\n" + +#: help.c:111 +#, c-format +msgid " -s, --single-step single-step mode (confirm each query)\n" +msgstr "" +" -s, --single-step tryb jednokrokowy (potwierdzenie każdego " +"zapytania)\n" + +#: help.c:112 +#, c-format +msgid "" +" -S, --single-line single-line mode (end of line terminates SQL " +"command)\n" +msgstr "" +" -S, --single-line tryb jednoliniowy (koniec linii kończy polecenie " +"SQL)\n" + +#: help.c:114 +#, c-format +msgid "" +"\n" +"Output format options:\n" +msgstr "" +"\n" +"Opcje formatowania wyjścia:\n" + +#: help.c:115 +#, c-format +msgid " -A, --no-align unaligned table output mode\n" +msgstr " -A, --no-align tryb braku wyrównania tabeli na wyjściu\n" + +#: help.c:116 +#, c-format +msgid "" +" -F, --field-separator=STRING\n" +" set field separator (default: \"%s\")\n" +msgstr "" +" -F, --field-separator=CIĄGZNAKÓW\n" +" ustala separator pól (domyślnie: \"%s\")\n" + +#: help.c:119 +#, c-format +msgid " -H, --html HTML table output mode\n" +msgstr " -H, --html tryb wyjścia tabeli HTML\n" + +#: help.c:120 +#, c-format +msgid "" +" -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset " +"command)\n" +msgstr "" +" -P, --pset=ZMI[=ARG] ustawia opcję drukowania ZMI na ARG (patrz " +"polecenie \\pset)\n" + +#: help.c:121 +#, c-format +msgid "" +" -R, --record-separator=STRING\n" +" set record separator (default: newline)\n" +msgstr "" +" -R, --record-separator=CIĄGZNAKÓW\n" +" ustawia separator rekordów (domyślnie: " +"nowalinia)\n" + +#: help.c:123 +#, c-format +msgid " -t, --tuples-only print rows only\n" +msgstr " -t, --tuples-only drukuje tylko wiersze\n" + +#: help.c:124 +#, c-format +msgid "" +" -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, " +"border)\n" +msgstr "" +" -T, --table-attr=TEKST ustawia atrybuty znaczników tabeli HTML (np., " +"szerokość, ramkę)\n" + +#: help.c:125 +#, c-format +msgid " -x, --expanded turn on expanded table output\n" +msgstr " -x, --expanded włącza wyjście rozciągniętej tabeli\n" + +#: help.c:127 +#, c-format +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Opcje połączenia:\n" + +#: help.c:130 +#, c-format +msgid "" +" -h, --host=HOSTNAME database server host or socket directory " +"(default: \"%s\")\n" +msgstr "" +" -h, --host=NAZWAHOSTA host serwera bazy danych lub katalog gniazda " +"(domyślnie: \"%s\")\n" + +#: help.c:131 +msgid "local socket" +msgstr "lokalne gniazdo sieciowe" + +#: help.c:134 +#, c-format +msgid " -p, --port=PORT database server port (default: \"%s\")\n" +msgstr "" +" -p, --port=PORT port na serwerze bazy danych (domyślnie: \"%s\")\n" + +#: help.c:140 +#, c-format +msgid " -U, --username=USERNAME database user name (default: \"%s\")\n" +msgstr "" +" -U, --username=NZAWAUZYTKOWNIKA\n" +" nazwa użytkownika bazy danych (domyślnie: \"%s\")\n" + +#: help.c:141 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password nie pytaj nigdy o hasło\n" + +#: help.c:142 +#, c-format +msgid "" +" -W, --password force password prompt (should happen " +"automatically)\n" +msgstr "" +" -W, --password wymuś pytanie o hasło (powinno nastąpić " +"automatycznie)\n" + +#: help.c:144 +#, c-format +msgid "" +"\n" +"For more information, type \"\\?\" (for internal commands) or \"\\help" +"\" (for SQL\n" +"commands) from within psql, or consult the psql section in the PostgreSQL\n" +"documentation.\n" +"\n" +msgstr "" +"\n" +"By uzyskać więcej informacji wpisz \"\\?\" (dla poleceń wewnętrznych) lub " +"\"\\help\" \n" +"(dal poleceń SQL) w psql, lub sprawdź w rozdziale dotyczącym psql\n" +"dokumentacji PostgreSQL.\n" +"\n" + +#: help.c:147 +#, c-format +msgid "Report bugs to .\n" +msgstr "Błędy proszę przesyłać na adres .\n" + +#: help.c:165 +#, c-format +msgid "General\n" +msgstr "Informacje ogólne\n" + +#: help.c:166 +#, c-format +msgid "" +" \\copyright show PostgreSQL usage and distribution terms\n" +msgstr "" +" \\copyright pokazuje warunku użytkowania i dystrybucji " +"PostgreSQL\n" + +#: help.c:167 +#, c-format +msgid "" +" \\g [FILE] or ; execute query (and send results to file or |pipe)\n" +msgstr "" +" \\g [PLIK] or ; wykonuje polecenie (i wysyła wyniki do pliku lub |" +"przewodu)\n" + +#: help.c:168 +#, c-format +msgid "" +" \\h [NAME] help on syntax of SQL commands, * for all " +"commands\n" +msgstr "" +" \\h [NAZWA] pomoc odnośnie składni poleceń SQL, * dla " +"wszystkich poleceń\n" + +#: help.c:169 +#, c-format +msgid " \\q quit psql\n" +msgstr " \\q wychodzi z psql\n" + +#: help.c:172 +#, c-format +msgid "Query Buffer\n" +msgstr "Bufor Zapytania\n" + +#: help.c:173 +#, c-format +msgid "" +" \\e [FILE] [LINE] edit the query buffer (or file) with external " +"editor\n" +msgstr "" +" \\e [PLIK] [LINIA] edytuje bufor zapytania (lub plik) edytorem " +"zewnętrznym\n" + +#: help.c:174 +#, c-format +msgid "" +" \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" +msgstr "" +" \\ef [NAZWAFUNK [LINIA]]\n" +" edytuje definicję funkcji edytorem zewnętrznym\n" + +#: help.c:175 +#, c-format +msgid " \\p show the contents of the query buffer\n" +msgstr " \\p pokazuje zawartość bufora zapytania\n" + +#: help.c:176 +#, c-format +msgid " \\r reset (clear) the query buffer\n" +msgstr "" +" \\p resetuje (czyści) zawartość bufora zapytania\n" + +#: help.c:178 +#, c-format +msgid " \\s [FILE] display history or save it to file\n" +msgstr "" +" \\s [PLIK] wyświetla historię lub zapisuje ja do pliku\n" + +#: help.c:180 +#, c-format +msgid " \\w FILE write query buffer to file\n" +msgstr " \\w PLIK zapisuje bufor zapytania do pliku\n" + +#: help.c:183 +#, c-format +msgid "Input/Output\n" +msgstr "Wejście/Wyjście\n" + +#: help.c:184 +#, c-format +msgid "" +" \\copy ... perform SQL COPY with data stream to the client " +"host\n" +msgstr "" +" \\copy ... wykonuje SQL COPY strumienia danych na host " +"klienta\n" + +#: help.c:185 +#, c-format +msgid " \\echo [STRING] write string to standard output\n" +msgstr "" +" \\echo [STRING] zapisuje ciąg znaków do standardowego wyjścia\n" + +#: help.c:186 +#, c-format +msgid " \\i FILE execute commands from file\n" +msgstr " \\i PLIK wykonuje polecenia z pliku\n" + +#: help.c:187 +#, c-format +msgid " \\o [FILE] send all query results to file or |pipe\n" +msgstr "" +" \\o [PLIK] lub ; wysyła wszystkie wyniki zapytania do pliku lub |" +"przewodu\n" + +#: help.c:188 +#, c-format +msgid "" +" \\qecho [STRING] write string to query output stream (see \\o)\n" +msgstr "" +" \\qecho [STRING] zapisuje ciąg znaków do strumienia wyjściowego \n" +" zapytania (patrz \\o)\n" + +#: help.c:191 +#, c-format +msgid "Informational\n" +msgstr "Informacyjne\n" + +#: help.c:192 +#, c-format +msgid " (options: S = show system objects, + = additional detail)\n" +msgstr " (opcje: S = pokaż obiekty systemowe, + = dodatkowe szczegóły)\n" + +#: help.c:193 +#, c-format +msgid " \\d[S+] list tables, views, and sequences\n" +msgstr " \\d[S+] listuje tabele, widoku i dekwencje\n" + +#: help.c:194 +#, c-format +msgid " \\d[S+] NAME describe table, view, sequence, or index\n" +msgstr "" +" \\d[S+] NAZWA opisuje tabelę, widok, sekwencję lub indeks\n" + +#: help.c:195 +#, c-format +msgid " \\da[S] [PATTERN] list aggregates\n" +msgstr " \\da[S] [WZORZEC] listuje agregaty\n" + +#: help.c:196 +#, c-format +msgid " \\db[+] [PATTERN] list tablespaces\n" +msgstr " \\db[+] [WZORZEC] listuje przestrzenie tabel\n" + +#: help.c:197 +#, c-format +msgid " \\dc[S] [PATTERN] list conversions\n" +msgstr " \\dc[S] [WZORZEC] listuje konwersje\n" + +#: help.c:198 +#, c-format +msgid " \\dC [PATTERN] list casts\n" +msgstr " \\dC [WZORZEC] listuje rzutowania\n" + +#: help.c:199 +#, c-format +msgid " \\dd[S] [PATTERN] show comments on objects\n" +msgstr " \\dd[S] [WZORZEC] pokazuje komentarze obiektów\n" + +#: help.c:200 +#, c-format +msgid " \\ddp [PATTERN] list default privileges\n" +msgstr " \\ddp [WZORZEC] listuje domyślne uprawnienia\n" + +#: help.c:201 +#, c-format +msgid " \\dD[S] [PATTERN] list domains\n" +msgstr " \\dD[S] [WZORZEC] listuje domeny\n" + +#: help.c:202 +#, c-format +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [WZORZEC] listuje tabele zewnętrzne\n" + +#: help.c:203 +#, c-format +msgid " \\des[+] [PATTERN] list foreign servers\n" +msgstr " \\des[+] [WZORZEC] listuje serwery obce\n" + +#: help.c:204 +#, c-format +msgid " \\deu[+] [PATTERN] list user mappings\n" +msgstr " \\deu[+] [WZORZEC] listuje mapowania użytkownika\n" + +#: help.c:205 +#, c-format +msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" +msgstr " \\dew[+] [WZORZEC] listuje opakowania obcych danych\n" + +#: help.c:206 +#, c-format +msgid "" +" \\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions\n" +msgstr "" +" \\df[antw][S+] [WZORC] listuje funkcje [tylko agreg/zwykły/wyzwalacz/" +"okno]\n" + +#: help.c:207 +#, c-format +msgid " \\dF[+] [PATTERN] list text search configurations\n" +msgstr "" +" \\dF[+] [WZORZEC] listuje konfiguracje wyszukiwania tekstowego\n" + +#: help.c:208 +#, c-format +msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" +msgstr " \\dFd[+] [WZORZEC] listuje słowniki wyszukiwania tekstowego\n" + +#: help.c:209 +#, c-format +msgid " \\dFp[+] [PATTERN] list text search parsers\n" +msgstr "" +" \\dFp[+] [WZORZEC] listuje analizatory wyszukiwania tekstowego\n" + +#: help.c:210 +#, c-format +msgid " \\dFt[+] [PATTERN] list text search templates\n" +msgstr " \\dFt[+] [WZORZEC] listuje wzorce wyszukiwania tekstowego\n" + +#: help.c:211 +#, c-format +msgid " \\dg[+] [PATTERN] list roles\n" +msgstr " \\dg[+] [WZORZEC] listuje role\n" + +#: help.c:212 +#, c-format +msgid " \\di[S+] [PATTERN] list indexes\n" +msgstr " \\di[S+] [WZORZEC] listuje indeksy\n" + +#: help.c:213 +#, c-format +msgid " \\dl list large objects, same as \\lo_list\n" +msgstr "" +" \\dl listuje duże obiekty, to samo, co \\lo_list\n" + +#: help.c:214 +#, c-format +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [WZORZEC] listuje języki proceduralne\n" + +#: help.c:215 +#, c-format +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [WZORZEC] listuje schematy\n" + +#: help.c:216 +#, c-format +msgid " \\do[S] [PATTERN] list operators\n" +msgstr " \\do[S] [WZORZEC] listuje operatory\n" + +#: help.c:217 +#, c-format +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [WZORZEC] listuje porównania\n" + +#: help.c:218 +#, c-format +msgid "" +" \\dp [PATTERN] list table, view, and sequence access privileges\n" +msgstr "" +" \\dp [WZORZEC] listuje uprawnienia dostępu do tabeli, widoku \n" +" lub sekwencji\n" + +#: help.c:219 +#, c-format +msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n" +msgstr " \\drds [WZORC1 [WZORC2]] listuje ustawienia ról wedle baz danych\n" + +#: help.c:220 +#, c-format +msgid " \\ds[S+] [PATTERN] list sequences\n" +msgstr " \\ds[S+] [WZORZEC] listuje sekwencje\n" + +#: help.c:221 +#, c-format +msgid " \\dt[S+] [PATTERN] list tables\n" +msgstr " \\dt[S+] [WZORZEC] listuje tabele\n" + +#: help.c:222 +#, c-format +msgid " \\dT[S+] [PATTERN] list data types\n" +msgstr " \\dT[S+] [WZORZEC] listuje typy danych\n" + +#: help.c:223 +#, c-format +msgid " \\du[+] [PATTERN] list roles\n" +msgstr " \\du[+] [WZORZEC] listuje role\n" + +#: help.c:224 +#, c-format +msgid " \\dv[S+] [PATTERN] list views\n" +msgstr " \\dv[S+] [WZORZEC] listuje widoki\n" + +#: help.c:225 +#, c-format +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [WZORZEC] listuje tabele obce\n" + +#: help.c:226 +#, c-format +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [WZORZEC] listuje rozszerzenia\n" + +#: help.c:227 +#, c-format +msgid " \\l[+] list all databases\n" +msgstr " \\l[+] listuje wszystkie bazy danych\n" + +#: help.c:228 +#, c-format +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] NAZWAFUNK pokazuje definicję funkcji\n" + +#: help.c:229 +#, c-format +msgid " \\z [PATTERN] same as \\dp\n" +msgstr " \\z [WZORZEC] to samo co \\dp\n" + +#: help.c:232 +#, c-format +msgid "Formatting\n" +msgstr "Formatowanie\n" + +#: help.c:233 +#, c-format +msgid "" +" \\a toggle between unaligned and aligned output mode\n" +msgstr "" +" \\a przełącza między trybem wyjścia wyrównanym i " +"niewyrównwnym\n" + +#: help.c:234 +#, c-format +msgid " \\C [STRING] set table title, or unset if none\n" +msgstr "" +" \\C [STRING] ustawia tytuł tabeli lub czyści jeśli brak " +"parametru\n" + +#: help.c:235 +#, c-format +msgid "" +" \\f [STRING] show or set field separator for unaligned query " +"output\n" +msgstr "" +" \\f [STRING] pokazuje lub ustawia separator pól dla " +"niewyrównanego\n" +" wyjścia zapytania\n" + +#: help.c:236 +#, c-format +msgid " \\H toggle HTML output mode (currently %s)\n" +msgstr " \\H przełącza tryb wyjścia HTML (obecnie %s)\n" + +#: help.c:238 +#, c-format +msgid "" +" \\pset NAME [VALUE] set table output option\n" +" (NAME := {format|border|expanded|fieldsep|footer|" +"null|\n" +" numericlocale|recordsep|tuples_only|title|tableattr|" +"pager})\n" +msgstr "" +" \\pset NAZWA [VARTOSC] ustawia opcje wyjścia tabeli\n" +" (NAZWA := {format|border|expanded|fieldsep|footer|" +"null|\n" +" numericlocale|recordsep|tuples_only|title|tableattr|" +"pager})\n" + +#: help.c:241 +#, c-format +msgid " \\t [on|off] show only rows (currently %s)\n" +msgstr " \\t [on|off] pokazywanie tylko wierszy (obecnie %s)\n" + +#: help.c:243 +#, c-format +msgid "" +" \\T [STRING] set HTML
tag attributes, or unset if none\n" +msgstr "" +" \\T [STRING] ustawia atrybuty znacznika HTML
, lub " +"czyści jeśli pusty\n" + +#: help.c:244 +#, c-format +msgid " \\x [on|off] toggle expanded output (currently %s)\n" +msgstr "" +" \\x [on|off] przełącza rozciągnięte wyjście (obecnie %s)\n" + +#: help.c:248 +#, c-format +msgid "Connection\n" +msgstr "Połączenie\n" + +#: help.c:249 +#, c-format +msgid "" +" \\c[onnect] [DBNAME|- USER|- HOST|- PORT|-]\n" +" connect to new database (currently \"%s\")\n" +msgstr "" +" \\c[onnect] [NAZWADB|- UŻYTK|- HOST|- PORT|-]\n" +" łączy do nowej bazy danych (obecnie \"%s\")\n" + +#: help.c:252 +#, c-format +msgid " \\encoding [ENCODING] show or set client encoding\n" +msgstr " \\encoding [KODOWANIE] pokazuje lub ustawia kodowanie klienta\n" + +#: help.c:253 +#, c-format +msgid " \\password [USERNAME] securely change the password for a user\n" +msgstr "" +" \\password [NAZWAUZYT] zmienia w sposób bezpieczny hasło użytkownika\n" + +#: help.c:254 +#, c-format +msgid "" +" \\conninfo display information about current connection\n" +msgstr " \\conninfo wyświetla informację o bieżącym połączeniu\n" + +#: help.c:257 +#, c-format +msgid "Operating System\n" +msgstr "System Operacyjny\n" + +#: help.c:258 +#, c-format +msgid " \\cd [DIR] change the current working directory\n" +msgstr " \\cd [FDR] zmienia bieżący folder roboczy\n" + +#: help.c:259 +#, c-format +msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" +msgstr "" +" \\timing [on|off] przełącza pomiar czasu poleceń (obecnie %s)\n" + +#: help.c:261 +#, c-format +msgid "" +" \\! [COMMAND] execute command in shell or start interactive " +"shell\n" +msgstr "" +" \\! [POLECENIE] wykonuje polecenie powłoki lub uruchamia " +"interaktywną powłokę\n" + +#: help.c:264 +#, c-format +msgid "Variables\n" +msgstr "Zmienne\n" + +#: help.c:265 +#, c-format +msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" +msgstr "" +" \\prompt [TEKST] NAZWA prosi użytkownika o ustawienie zmiennej " +"wewnętrznej\n" + +#: help.c:266 +#, c-format +msgid "" +" \\set [NAME [VALUE]] set internal variable, or list all if no " +"parameters\n" +msgstr "" +" \\set [NAZWA [WARTOŚĆ]] ustawia zmienną wewnętrzną lub listuje wszystkie,\n" +" jeśli brak parametrów\n" + +#: help.c:267 +#, c-format +msgid " \\unset NAME unset (delete) internal variable\n" +msgstr "" +" \\unset NAZWA ustawia jako pustą (usuwa) zmienną wewnętrzną\n" + +#: help.c:270 +#, c-format +msgid "Large Objects\n" +msgstr "Duże Obiekty\n" + +#: help.c:271 +#, c-format +msgid "" +" \\lo_export LOBOID FILE\n" +" \\lo_import FILE [COMMENT]\n" +" \\lo_list\n" +" \\lo_unlink LOBOID large object operations\n" +msgstr "" +" \\lo_export LOBOID PLIK\n" +" \\lo_import PLIK [KOMENTARZ]\n" +" \\lo_list\n" +" \\lo_unlink LOBOID operacje na dużych obiektach\n" + +#: help.c:318 +msgid "Available help:\n" +msgstr "Dostępna pomoc:\n" + +#: help.c:402 +#, c-format +msgid "" +"Command: %s\n" +"Description: %s\n" +"Syntax:\n" +"%s\n" +"\n" +msgstr "" +"Polecenie: %s\n" +"Opis: %s\n" +"Składnia:\n" +"%s\n" +"\n" + +#: help.c:418 +#, c-format +msgid "" +"No help available for \"%s\".\n" +"Try \\h with no arguments to see available help.\n" +msgstr "" +"Brak dostępnej pomocy dla \"%s\".\n" +"Spróbuj \\h bez argumentów by zobaczyć dostępną pomoc.\n" + +#: input.c:198 +#, c-format +msgid "could not read from input file: %s\n" +msgstr "nie można czytać z pliku wejścia: %s\n" + +#: input.c:406 +#, c-format +msgid "could not save history to file \"%s\": %s\n" +msgstr "nie można zapisać historii do pliku \"%s\": %s\n" + +#: input.c:411 +msgid "history is not supported by this installation\n" +msgstr "historia nie jest obsługiwana przez tą instalację\n" + +#: large_obj.c:66 +#, c-format +msgid "%s: not connected to a database\n" +msgstr "%s: nie połączono z bazą danych\n" + +#: large_obj.c:85 +#, c-format +msgid "%s: current transaction is aborted\n" +msgstr "%s: bieżąca transakcja została przerwana\n" + +#: large_obj.c:88 +#, c-format +msgid "%s: unknown transaction status\n" +msgstr "%s: nieznany status transakcji\n" + +#: large_obj.c:289 large_obj.c:300 +msgid "ID" +msgstr "Identyfikator" + +#: large_obj.c:290 describe.c:147 describe.c:335 describe.c:637 describe.c:787 +#: describe.c:2513 describe.c:2631 describe.c:2968 describe.c:3599 +#: describe.c:3664 +msgid "Owner" +msgstr "Właściciel" + +#: large_obj.c:291 large_obj.c:301 describe.c:96 describe.c:159 describe.c:338 +#: describe.c:501 describe.c:590 describe.c:661 describe.c:852 describe.c:1382 +#: describe.c:2330 describe.c:2537 describe.c:2911 describe.c:2976 +#: describe.c:3041 describe.c:3177 describe.c:3216 describe.c:3283 +#: describe.c:3342 describe.c:3351 describe.c:3410 describe.c:3849 +msgid "Description" +msgstr "Opis" + +#: large_obj.c:310 +msgid "Large objects" +msgstr "Duże obiekty" + +#: mainloop.c:159 +#, c-format +msgid "Use \"\\q\" to leave %s.\n" +msgstr "Użyj \"\\q\" by opuścić %s.\n" + +#: mainloop.c:189 +msgid "You are using psql, the command-line interface to PostgreSQL." +msgstr "Używasz psql, interfejsu wiersza poleceń PostgreSQL." + +#: mainloop.c:190 +#, c-format +msgid "" +"Type: \\copyright for distribution terms\n" +" \\h for help with SQL commands\n" +" \\? for help with psql commands\n" +" \\g or terminate with semicolon to execute query\n" +" \\q to quit\n" +msgstr "" +"Wpisz: \\copyright by poznać warunki rozpowszechniania\n" +" \\h by uzyskać pomoc dla poleceń SQL\n" +" \\? by uzyskać pomoc poleceń psql\n" +" \\g lub zakończ średnikiem by wykonać zapytanie\n" +" \\q by wyjść\n" + +#: print.c:1138 +#, c-format +msgid "(No rows)\n" +msgstr "(Brak wierszy)\n" + +#: print.c:2028 +#, c-format +msgid "Interrupted\n" +msgstr "Przerwane\n" + +#: print.c:2097 +#, c-format +msgid "Cannot add header to table content: column count of %d exceeded.\n" +msgstr "" +"Nie można dodać nagłówka do zawartości tabeli: przekroczona liczba kolumn " +"%d.\n" + +#: print.c:2137 +#, c-format +msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" +msgstr "" +"Nie można dodać komórki do zawartości tabeli: przekroczona liczba komórek " +"%d.\n" + +#: print.c:2358 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "niepoprawny format wyjścia (błąd wewnętrzny): %d" + +#: print.c:2455 +#, c-format +msgid "(%lu row)" +msgid_plural "(%lu rows)" +msgstr[0] "(%lu wiersz)" +msgstr[1] "(%lu wiersze)" +msgstr[2] "(%lu wierszy)" + +#: startup.c:243 +#, c-format +msgid "%s: could not open log file \"%s\": %s\n" +msgstr "%s: nie można otworzyć pliku logów \"%s\": %s\n" + +#: startup.c:305 +#, c-format +msgid "" +"Type \"help\" for help.\n" +"\n" +msgstr "" +"Wpisz \"help\" by uzyskać pomoc.\n" +"\n" + +#: startup.c:451 +#, c-format +msgid "%s: could not set printing parameter \"%s\"\n" +msgstr "%s: nie można ustawić parametru wydruku \"%s\"\n" + +#: startup.c:490 +#, c-format +msgid "%s: could not delete variable \"%s\"\n" +msgstr "%s: nie można usunąć zmiennej \"%s\"\n" + +#: startup.c:500 +#, c-format +msgid "%s: could not set variable \"%s\"\n" +msgstr "%s: nie można ustawić zmiennej \"%s\"\n" + +#: startup.c:537 startup.c:543 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Spróbuj \"%s --help\" aby uzyskać więcej informacji.\n" + +#: startup.c:560 +#, c-format +msgid "%s: warning: extra command-line argument \"%s\" ignored\n" +msgstr "" +"%s: ostrzeżenie: nadmiarowy argument wiersza poleceń \"%s\" zignorowany\n" + +#: startup.c:625 +msgid "contains support for command-line editing" +msgstr "zawiera wsparcie dla edycji wiersza poleceń" + +#: describe.c:69 describe.c:236 describe.c:463 describe.c:585 describe.c:706 +#: describe.c:788 describe.c:849 describe.c:2504 describe.c:2698 +#: describe.c:2768 describe.c:2903 describe.c:3039 describe.c:3266 +#: describe.c:3338 describe.c:3349 describe.c:3408 describe.c:3782 +#: describe.c:3848 +msgid "Schema" +msgstr "Schemat" + +#: describe.c:70 describe.c:146 describe.c:237 describe.c:464 describe.c:586 +#: describe.c:636 describe.c:707 describe.c:850 describe.c:2505 +#: describe.c:2627 describe.c:2699 describe.c:2769 describe.c:2904 +#: describe.c:2967 describe.c:3040 describe.c:3267 describe.c:3339 +#: describe.c:3350 describe.c:3409 describe.c:3598 describe.c:3663 +#: describe.c:3846 +msgid "Name" +msgstr "Nazwa" + +#: describe.c:71 describe.c:249 describe.c:295 describe.c:312 +msgid "Result data type" +msgstr "Typ danych wyniku" + +#: describe.c:85 describe.c:89 describe.c:250 describe.c:296 describe.c:313 +msgid "Argument data types" +msgstr "Typy danych argumentów" + +#: describe.c:114 +msgid "List of aggregate functions" +msgstr "Lista funkcji agregujących" + +#: describe.c:135 +#, c-format +msgid "The server (version %d.%d) does not support tablespaces.\n" +msgstr "Serwer (wersja %d.%d) nie obsługuje przestrzeni tabel.\n" + +#: describe.c:148 +msgid "Location" +msgstr "Położenie" + +#: describe.c:176 +msgid "List of tablespaces" +msgstr "Lista przestrzeni tabel" + +#: describe.c:213 +#, c-format +msgid "\\df only takes [antwS+] as options\n" +msgstr "\\df przyjmuje tylko opcje [antwS+]\n" + +#: describe.c:219 +#, c-format +msgid "\\df does not take a \"w\" option with server version %d.%d\n" +msgstr "\\df nie przyjmuje opcji \"w\" w wersji serwera %d.%d\n" + +#. translator: "agg" is short for "aggregate" +#: describe.c:252 describe.c:298 describe.c:315 +msgid "agg" +msgstr "agreg" + +#: describe.c:253 +msgid "window" +msgstr "okno" + +#: describe.c:254 describe.c:299 describe.c:316 describe.c:990 +msgid "trigger" +msgstr "wyzwalacz" + +#: describe.c:255 describe.c:300 describe.c:317 +msgid "normal" +msgstr "zwykły" + +#: describe.c:256 describe.c:301 describe.c:318 describe.c:710 describe.c:792 +#: describe.c:1362 describe.c:2512 describe.c:2700 describe.c:3676 +msgid "Type" +msgstr "Typ" + +#: describe.c:331 +msgid "immutable" +msgstr "niezmienny" + +#: describe.c:332 +msgid "stable" +msgstr "stabilny" + +#: describe.c:333 +msgid "volatile" +msgstr "zmienny" + +#: describe.c:334 +msgid "Volatility" +msgstr "Zmienność" + +#: describe.c:336 +msgid "Language" +msgstr "Język" + +#: describe.c:337 +msgid "Source code" +msgstr "Kod źródłowy" + +#: describe.c:435 +msgid "List of functions" +msgstr "Lista funkcji" + +#: describe.c:474 +msgid "Internal name" +msgstr "Nazwa wewnętrzna" + +#: describe.c:475 describe.c:653 describe.c:2529 describe.c:2533 +msgid "Size" +msgstr "Rozmiar" + +#: describe.c:496 +msgid "Elements" +msgstr "Elementy" + +#: describe.c:541 +msgid "List of data types" +msgstr "Lista typów danych" + +#: describe.c:587 +msgid "Left arg type" +msgstr "Typ lewego arg" + +#: describe.c:588 +msgid "Right arg type" +msgstr "Typ prawego arg" + +#: describe.c:589 +msgid "Result type" +msgstr "Typ wyniku" + +#: describe.c:608 +msgid "List of operators" +msgstr "Lista operatorów" + +#: describe.c:638 +msgid "Encoding" +msgstr "Kodowanie" + +#: describe.c:643 describe.c:2905 +msgid "Collate" +msgstr "Porównanie" + +#: describe.c:644 describe.c:2906 +msgid "Ctype" +msgstr "Ctype" + +#: describe.c:657 +msgid "Tablespace" +msgstr "Przestrzeń Tabel" + +#: describe.c:674 +msgid "List of databases" +msgstr "Lista baz danych" + +#: describe.c:708 describe.c:789 describe.c:944 describe.c:2506 sql_help.c:595 +#: sql_help.c:842 sql_help.c:969 sql_help.c:1432 sql_help.c:1562 +#: sql_help.c:1596 sql_help.c:1842 sql_help.c:2000 sql_help.c:2185 +#: sql_help.c:2266 sql_help.c:2472 sql_help.c:3103 sql_help.c:3123 +#: sql_help.c:3125 sql_help.c:3126 +msgid "table" +msgstr "tabela" + +#: describe.c:708 describe.c:945 describe.c:2507 +msgid "view" +msgstr "widok" + +#: describe.c:708 describe.c:790 describe.c:947 describe.c:2509 +msgid "sequence" +msgstr "sekwencja" + +#: describe.c:709 describe.c:948 describe.c:2511 +msgid "foreign table" +msgstr "tabela obca" + +#: describe.c:721 +msgid "Column access privileges" +msgstr "Uprawnienia dostępu do kolumn" + +#: describe.c:747 describe.c:3993 describe.c:3997 +msgid "Access privileges" +msgstr "Uprawnienia dostępu" + +#: describe.c:775 +#, c-format +msgid "" +"The server (version %d.%d) does not support altering default privileges.\n" +msgstr "Serwer (wersja %d.%d) nie obsługuje zmiany domyślnych uprawnień.\n" + +#: describe.c:791 describe.c:883 +msgid "function" +msgstr "funkcja" + +#: describe.c:815 +msgid "Default access privileges" +msgstr "Domyślne uprawnienia dostępu" + +#: describe.c:851 +msgid "Object" +msgstr "Obiekt" + +#: describe.c:863 +msgid "aggregate" +msgstr "agregat" + +#: describe.c:902 sql_help.c:1715 sql_help.c:2833 sql_help.c:2903 +#: sql_help.c:3036 sql_help.c:3141 sql_help.c:3192 +msgid "operator" +msgstr "operator" + +#: describe.c:921 +msgid "data type" +msgstr "typ danych" + +#: describe.c:946 describe.c:2508 +msgid "index" +msgstr "indeks" + +#: describe.c:969 +msgid "rule" +msgstr "reguła" + +#: describe.c:1013 +msgid "Object descriptions" +msgstr "Opisy obiektów" + +#: describe.c:1066 +#, c-format +msgid "Did not find any relation named \"%s\".\n" +msgstr "Nie znaleziono żadnej relacji o nazwie \"%s\".\n" + +#: describe.c:1238 +#, c-format +msgid "Did not find any relation with OID %s.\n" +msgstr "Nie znaleziono żadnej relacji o OID %s.\n" + +#: describe.c:1314 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "Niezalogowany indeks \"%s.%s\"" + +#: describe.c:1317 +#, c-format +msgid "Table \"%s.%s\"" +msgstr "Tabela \"%s.%s\"" + +#: describe.c:1321 +#, c-format +msgid "View \"%s.%s\"" +msgstr "Widok \"%s.%s\"" + +#: describe.c:1325 +#, c-format +msgid "Sequence \"%s.%s\"" +msgstr "Sekwencja \"%s.%s\"" + +#: describe.c:1330 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "Niezalogowany indeks \"%s.%s\"" + +#: describe.c:1333 +#, c-format +msgid "Index \"%s.%s\"" +msgstr "Indeks \"%s.%s\"" + +#: describe.c:1338 +#, c-format +msgid "Special relation \"%s.%s\"" +msgstr "Relacja specjalna \"%s.%s\"" + +#: describe.c:1342 +#, c-format +msgid "TOAST table \"%s.%s\"" +msgstr "Tabela TOAST \"%s.%s\"" + +#: describe.c:1346 +#, c-format +msgid "Composite type \"%s.%s\"" +msgstr "Typ złożony \"%s.%s\"" + +#: describe.c:1350 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "Tabela obca \"%s.%s\"" + +#: describe.c:1361 +msgid "Column" +msgstr "Kolumna" + +#: describe.c:1369 +msgid "Modifiers" +msgstr "Modyfikatory" + +#: describe.c:1374 +msgid "Value" +msgstr "Wartość" + +#: describe.c:1377 +msgid "Definition" +msgstr "Definicja" + +#: describe.c:1381 +msgid "Storage" +msgstr "Przechowywanie" + +#: describe.c:1427 +#, c-format +msgid "collate %s" +msgstr "porównanie %s" + +#: describe.c:1435 +msgid "not null" +msgstr "niepusty" + +#. translator: default values of column definitions +#: describe.c:1445 +#, c-format +msgid "default %s" +msgstr "domyślnie %s" + +#: describe.c:1536 +msgid "primary key, " +msgstr "klucz główny, " + +#: describe.c:1538 +msgid "unique, " +msgstr "klucz unikalny, " + +#: describe.c:1544 +#, c-format +msgid "for table \"%s.%s\"" +msgstr "dla tabeli \"%s.%s\"" + +#: describe.c:1548 +#, c-format +msgid ", predicate (%s)" +msgstr ", orzeczenie (%s)" + +#: describe.c:1551 +msgid ", clustered" +msgstr ", klastrowany" + +#: describe.c:1554 +msgid ", invalid" +msgstr ", niepoprawny" + +#: describe.c:1557 +msgid ", deferrable" +msgstr ", odraczalny" + +#: describe.c:1560 +msgid ", initially deferred" +msgstr ", początkowo odroczony" + +#: describe.c:1574 +msgid "View definition:" +msgstr "Definicja widoku:" + +#: describe.c:1591 describe.c:1874 +msgid "Rules:" +msgstr "Reguły:" + +#: describe.c:1650 +msgid "Indexes:" +msgstr "Indeksy:" + +#: describe.c:1730 +msgid "Check constraints:" +msgstr "Ograniczenie kontrolne:" + +#: describe.c:1761 +msgid "Foreign-key constraints:" +msgstr "Ograniczenia kluczy obcych:" + +#: describe.c:1792 +msgid "Referenced by:" +msgstr "Wskazywany przez:" + +#: describe.c:1877 +msgid "Disabled rules:" +msgstr "Wyłączone reguły:" + +#: describe.c:1880 +msgid "Rules firing always:" +msgstr "Reguły odpalane zawsze:" + +#: describe.c:1883 +msgid "Rules firing on replica only:" +msgstr "Reguły odpalane tylko przy replikacji:" + +#: describe.c:1991 +msgid "Triggers:" +msgstr "Wyzwalacze:" + +#: describe.c:1994 +msgid "Disabled triggers:" +msgstr "Wyłączone wyzwalacze:" + +#: describe.c:1997 +msgid "Triggers firing always:" +msgstr "Wyzwalacze odpalane zawsze:" + +#: describe.c:2000 +msgid "Triggers firing on replica only:" +msgstr "Wyzwalacze odpalane tylko przy replikacji:" + +#: describe.c:2066 +msgid "Inherits" +msgstr "Dziedziczenia" + +#: describe.c:2096 +#, c-format +msgid "Number of child tables: %d (Use \\d+ to list them.)" +msgstr "Liczba tabel podrzędnych: %d (Użyj \\d+ by je wylistować.)" + +#: describe.c:2103 +msgid "Child tables" +msgstr "Tabele podrzędne" + +#: describe.c:2125 +#, c-format +msgid "Typed table of type: %s" +msgstr "Tabela typizowana typu: %s" + +#: describe.c:2132 +msgid "Has OIDs" +msgstr "Zawiera OIDy" + +#: describe.c:2135 describe.c:2772 describe.c:2846 +msgid "yes" +msgstr "tak" + +#: describe.c:2135 describe.c:2772 describe.c:2846 +msgid "no" +msgstr "nie" + +#: describe.c:2143 describe.c:3614 describe.c:3678 describe.c:3734 +#: describe.c:3789 +msgid "Options" +msgstr "Opcje" + +#: describe.c:2228 +#, c-format +msgid "Tablespace: \"%s\"" +msgstr "Przestrzeń tabel: \"%s\"" + +#: describe.c:2241 +#, c-format +msgid ", tablespace \"%s\"" +msgstr ", przestrzeń tabel \"%s\"" + +#: describe.c:2323 +msgid "List of roles" +msgstr "Lista ról" + +#: describe.c:2325 +msgid "Role name" +msgstr "Nazwa roli" + +#: describe.c:2326 +msgid "Attributes" +msgstr "Atrybuty" + +#: describe.c:2327 +msgid "Member of" +msgstr "Element" + +#: describe.c:2338 +msgid "Superuser" +msgstr "Superużytkownik" + +#: describe.c:2341 +msgid "No inheritance" +msgstr "Bez dziedziczenia" + +#: describe.c:2344 +msgid "Create role" +msgstr "Utwórz rolę" + +#: describe.c:2347 +msgid "Create DB" +msgstr "Utwórz DB" + +#: describe.c:2350 +msgid "Cannot login" +msgstr "Nie można zalogować" + +#: describe.c:2354 +msgid "Replication" +msgstr "Replikacja" + +#: describe.c:2363 +msgid "No connections" +msgstr "Brak połączeń" + +#: describe.c:2365 +#, c-format +msgid "%d connection" +msgid_plural "%d connections" +msgstr[0] "%d połączenie" +msgstr[1] "%d połączenia" +msgstr[2] "%d połączeń" + +#: describe.c:2432 +#, c-format +msgid "No per-database role settings support in this server version.\n" +msgstr "" +"Brak obsługi oddzielnych ustawień ról dla baz danych w tej wersji serwera.\n" + +#: describe.c:2443 +#, c-format +msgid "No matching settings found.\n" +msgstr "Nie znaleziono pasujących ustawień.\n" + +#: describe.c:2445 +#, c-format +msgid "No settings found.\n" +msgstr "Nie znaleziono ustawień.\n" + +#: describe.c:2450 +msgid "List of settings" +msgstr "Lista ustawień" + +#: describe.c:2510 +msgid "special" +msgstr "specjalny" + +#: describe.c:2518 describe.c:3783 +msgid "Table" +msgstr "Tabela" + +#: describe.c:2592 +#, c-format +msgid "No matching relations found.\n" +msgstr "Nie znaleziono pasujących relacji.\n" + +#: describe.c:2594 +#, c-format +msgid "No relations found.\n" +msgstr "Nie znaleziono relacji.\n" + +#: describe.c:2599 +msgid "List of relations" +msgstr "Lista relacji" + +#: describe.c:2635 +msgid "Trusted" +msgstr "Zaufany" + +#: describe.c:2643 +msgid "Internal Language" +msgstr "Język wewnętrzny" + +#: describe.c:2644 +msgid "Call Handler" +msgstr "Uchwyt Wywołania" + +#: describe.c:2645 describe.c:3606 +msgid "Validator" +msgstr "Walidator" + +#: describe.c:2648 +msgid "Inline Handler" +msgstr "Uchwyt Wbudowany" + +#: describe.c:2669 +msgid "List of languages" +msgstr "Lista języków" + +#: describe.c:2709 +msgid "Modifier" +msgstr "Modyfikator" + +#: describe.c:2717 +msgid "Check" +msgstr "Sprawdzenie" + +#: describe.c:2735 +msgid "List of domains" +msgstr "Lista domen" + +#: describe.c:2770 +msgid "Source" +msgstr "Źródło" + +#: describe.c:2771 +msgid "Destination" +msgstr "Cel" + +#: describe.c:2773 +msgid "Default?" +msgstr "Domyślnie?" + +#: describe.c:2791 +msgid "List of conversions" +msgstr "Lista przekształceń" + +#: describe.c:2843 +msgid "Source type" +msgstr "Typ źródłowy" + +#: describe.c:2844 +msgid "Target type" +msgstr "Typ docelowy" + +#: describe.c:2845 describe.c:3176 +msgid "Function" +msgstr "Funkcja" + +#: describe.c:2846 +msgid "in assignment" +msgstr "przypisanie" + +#: describe.c:2847 +msgid "Implicit?" +msgstr "Bezwarunkowy?" + +#: describe.c:2873 +msgid "List of casts" +msgstr "Lista rzutowań" + +#: describe.c:2941 +msgid "List of collations" +msgstr "Spis porównań" + +#: describe.c:2999 +msgid "List of schemas" +msgstr "Lista schematów" + +#: describe.c:3022 describe.c:3255 describe.c:3323 describe.c:3391 +#, c-format +msgid "The server (version %d.%d) does not support full text search.\n" +msgstr "Serwer (wersja %d.%d) nie obsługuje pełnego wyszukiwania tekstowego.\n" + +#: describe.c:3056 +msgid "List of text search parsers" +msgstr "Lista parserów wyszukiwania tekstowego" + +#: describe.c:3099 +#, c-format +msgid "Did not find any text search parser named \"%s\".\n" +msgstr "Nie znaleziono parsera wyszukiwania tekstowego o nazwie \"%s\".\n" + +#: describe.c:3174 +msgid "Start parse" +msgstr "Początek parsowania" + +#: describe.c:3175 +msgid "Method" +msgstr "Metoda" + +#: describe.c:3179 +msgid "Get next token" +msgstr "Pobierz następny token" + +#: describe.c:3181 +msgid "End parse" +msgstr "Koniec parsowania" + +#: describe.c:3183 +msgid "Get headline" +msgstr "Pobierz nagłówek" + +#: describe.c:3185 +msgid "Get token types" +msgstr "Pobierz typy tokenów" + +#: describe.c:3195 +#, c-format +msgid "Text search parser \"%s.%s\"" +msgstr "Parser wyszukiwania tekstowego \"%s.%s\"" + +#: describe.c:3197 +#, c-format +msgid "Text search parser \"%s\"" +msgstr "Parser wyszukiwania tekstowego \"%s\"" + +#: describe.c:3215 +msgid "Token name" +msgstr "Nazwa tokenu" + +#: describe.c:3226 +#, c-format +msgid "Token types for parser \"%s.%s\"" +msgstr "Typy tokenów dla analizatora \"%s.%s\"" + +#: describe.c:3228 +#, c-format +msgid "Token types for parser \"%s\"" +msgstr "Typy tokenów dla parsera \"%s\"" + +#: describe.c:3277 +msgid "Template" +msgstr "Szablon" + +#: describe.c:3278 +msgid "Init options" +msgstr "Opcje inicjacji" + +#: describe.c:3300 +msgid "List of text search dictionaries" +msgstr "Lista słowników wyszukiwania tekstowego" + +#: describe.c:3340 +msgid "Init" +msgstr "Init" + +#: describe.c:3341 +msgid "Lexize" +msgstr "Lexize" + +#: describe.c:3368 +msgid "List of text search templates" +msgstr "Lista szablonów wyszukiwania tekstowego" + +#: describe.c:3425 +msgid "List of text search configurations" +msgstr "Lista konfiguracji wyszukiwania tekstowego" + +#: describe.c:3469 +#, c-format +msgid "Did not find any text search configuration named \"%s\".\n" +msgstr "Nie znaleziono konfiguracji wyszukiwania tekstowego o nazwie \"%s\".\n" + +#: describe.c:3535 +msgid "Token" +msgstr "Token" + +#: describe.c:3536 +msgid "Dictionaries" +msgstr "Słowniki" + +#: describe.c:3547 +#, c-format +msgid "Text search configuration \"%s.%s\"" +msgstr "Konfiguracja wyszukiwania tekstowego \"%s.%s\"" + +#: describe.c:3550 +#, c-format +msgid "Text search configuration \"%s\"" +msgstr "Konfiguracja wyszukiwania tekstowego \"%s\"" + +#: describe.c:3554 +#, c-format +msgid "" +"\n" +"Parser: \"%s.%s\"" +msgstr "" +"\n" +"Analizator: \"%s.%s\"" + +#: describe.c:3557 +#, c-format +msgid "" +"\n" +"Parser: \"%s\"" +msgstr "" +"\n" +"Parser: \"%s\"" + +#: describe.c:3589 +#, c-format +msgid "The server (version %d.%d) does not support foreign-data wrappers.\n" +msgstr "Serwer (wersja %d.%d) nie obsługuje opakowań danych obcych.\n" + +#: describe.c:3603 +msgid "Handler" +msgstr "Uchwyt" + +#: describe.c:3630 +msgid "List of foreign-data wrappers" +msgstr "Lista opakowań danych obcych" + +#: describe.c:3653 +#, c-format +msgid "The server (version %d.%d) does not support foreign servers.\n" +msgstr "Serwer (wersja %d.%d) nie obsługuje serwerów obcych.\n" + +#: describe.c:3665 +msgid "Foreign-data wrapper" +msgstr "Opakowanie obcych danych" + +#: describe.c:3677 describe.c:3847 +msgid "Version" +msgstr "Wersja" + +#: describe.c:3696 +msgid "List of foreign servers" +msgstr "Lista serwerów obcych" + +#: describe.c:3719 +#, c-format +msgid "The server (version %d.%d) does not support user mappings.\n" +msgstr "Serwer (wersja %d.%d) nie obsługuje przestrzeni mapowań użytkownika.\n" + +#: describe.c:3728 describe.c:3784 +msgid "Server" +msgstr "Serwer" + +#: describe.c:3729 +msgid "User name" +msgstr "Nazwa użytkownika" + +#: describe.c:3749 +msgid "List of user mappings" +msgstr "Lista mapowań użytkownika" + +#: describe.c:3772 +#, c-format +msgid "The server (version %d.%d) does not support foreign tables.\n" +msgstr "Serwer (wersja %d.%d) nie obsługuje tabel obcych.\n" + +#: describe.c:3810 +msgid "List of foreign tables" +msgstr "Lista tabel obcych" + +#: describe.c:3833 describe.c:3887 +#, c-format +msgid "The server (version %d.%d) does not support extensions.\n" +msgstr "Serwer (wersja %d.%d) nie obsługuje rozszerzeń.\n" + +#: describe.c:3864 +msgid "List of installed extensions" +msgstr "Lista zainstalowanych rozszerzeń" + +#: describe.c:3914 +#, c-format +msgid "Did not find any extension named \"%s\".\n" +msgstr "Nie znaleziono żadnego rozszerzenia o nazwie \"%s\".\n" + +#: describe.c:3917 +#, c-format +msgid "Did not find any extensions.\n" +msgstr "Nie znaleziono żadnego rozszerzenia.\n" + +#: describe.c:3961 +msgid "Object Description" +msgstr "Opis Obiektu" + +#: describe.c:3970 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "Obiekty w rozszerzeniu \"%s\"" + +#: sql_help.h:182 sql_help.h:837 +msgid "abort the current transaction" +msgstr "przerywa bieżącą transakcję" + +#: sql_help.h:187 +msgid "change the definition of an aggregate function" +msgstr "zmienia definicję funkcji agregującej" + +#: sql_help.h:192 +msgid "change the definition of a collation" +msgstr "zmienia definicję porównania" + +#: sql_help.h:197 +msgid "change the definition of a conversion" +msgstr "zmienia definicję konwersji" + +#: sql_help.h:202 +msgid "change a database" +msgstr "zmienia bazę danych" + +#: sql_help.h:207 +msgid "define default access privileges" +msgstr "definiuje domyślne uprawnienia dostępu" + +#: sql_help.h:212 +msgid "change the definition of a domain" +msgstr "zmienia definicję domeny" + +#: sql_help.h:217 +msgid "change the definition of an extension" +msgstr "zmienia definicję rozszerzenia" + +#: sql_help.h:222 +msgid "change the definition of a foreign-data wrapper" +msgstr "zmienia definicję opakowania obcych danych" + +#: sql_help.h:227 +msgid "change the definition of a foreign table" +msgstr "zmienia definicję tabeli obcej" + +#: sql_help.h:232 +msgid "change the definition of a function" +msgstr "zmienia definicję funkcji" + +#: sql_help.h:237 +msgid "change role name or membership" +msgstr "zmienia nazwę roli lub przynależność" + +#: sql_help.h:242 +msgid "change the definition of an index" +msgstr "zmienia definicję indeksu" + +#: sql_help.h:247 +msgid "change the definition of a procedural language" +msgstr "zmienia definicję języka proceduralnego`" + +#: sql_help.h:252 +msgid "change the definition of a large object" +msgstr "zmienia definicję dużego obiektu" + +#: sql_help.h:257 +msgid "change the definition of an operator" +msgstr "zmienia definicję operatora" + +#: sql_help.h:262 +msgid "change the definition of an operator class" +msgstr "zmienia definicję klasy operatora" + +#: sql_help.h:267 +msgid "change the definition of an operator family" +msgstr "zmienia definicję rodziny operatora" + +#: sql_help.h:272 sql_help.h:332 +msgid "change a database role" +msgstr "zmienia rolę bazy danych" + +#: sql_help.h:277 +msgid "change the definition of a schema" +msgstr "zmienia definicję schematu" + +#: sql_help.h:282 +msgid "change the definition of a sequence generator" +msgstr "zmienia definicję generatora sekwencji" + +#: sql_help.h:287 +msgid "change the definition of a foreign server" +msgstr "zmienia definicję serwera obcego" + +#: sql_help.h:292 +msgid "change the definition of a table" +msgstr "zmienia definicję tabeli" + +#: sql_help.h:297 +msgid "change the definition of a tablespace" +msgstr "zmienia definicję przestrzeni tabel" + +#: sql_help.h:302 +msgid "change the definition of a text search configuration" +msgstr "zmienia definicję konfiguracji wyszukiwania tekstowego" + +#: sql_help.h:307 +msgid "change the definition of a text search dictionary" +msgstr "zmienia definicję słownika wyszukiwania tekstowego" + +#: sql_help.h:312 +msgid "change the definition of a text search parser" +msgstr "zmienia definicję analizatora wyszukiwania tekstowego" + +#: sql_help.h:317 +msgid "change the definition of a text search template" +msgstr "zmienia definicję szablonu wyszukiwania tekstowego" + +#: sql_help.h:322 +msgid "change the definition of a trigger" +msgstr "zmienia definicję wyzwalacza" + +#: sql_help.h:327 +msgid "change the definition of a type" +msgstr "zmienia definicję typu" + +#: sql_help.h:337 +msgid "change the definition of a user mapping" +msgstr "zmienia definicję mapowania użytkownika" + +#: sql_help.h:342 +msgid "change the definition of a view" +msgstr "zmienia definicję widoku" + +#: sql_help.h:347 +msgid "collect statistics about a database" +msgstr "zbiera statystyki na temat bazy danych" + +#: sql_help.h:352 sql_help.h:902 +msgid "start a transaction block" +msgstr "początek bloku transakcji" + +#: sql_help.h:357 +msgid "force a transaction log checkpoint" +msgstr "wymuszenie punkty kontrolne logów transakcji" + +#: sql_help.h:362 +msgid "close a cursor" +msgstr "zamyka kursor" + +#: sql_help.h:367 +msgid "cluster a table according to an index" +msgstr "klaster lub tabela zgodna z indeksem" + +#: sql_help.h:372 +msgid "define or change the comment of an object" +msgstr "definiuje lub zmienia komentarz obiektu" + +#: sql_help.h:377 sql_help.h:747 +msgid "commit the current transaction" +msgstr "zatwierdzenie bieżącej transakcji" + +#: sql_help.h:382 +msgid "commit a transaction that was earlier prepared for two-phase commit" +msgstr "" +"zatwierdzenie transakcji uprzednio przygotowanej do zatwierdzenia dwufazowego" + +#: sql_help.h:387 +msgid "copy data between a file and a table" +msgstr "kopiuje dane między plikiem i tabelą" + +#: sql_help.h:392 +msgid "define a new aggregate function" +msgstr "definiuje nową funkcję agregującą" + +#: sql_help.h:397 +msgid "define a new cast" +msgstr "definiuje nowe rzutowanie" + +#: sql_help.h:402 +msgid "define a new collation" +msgstr "definiuje nowe porównanie" + +#: sql_help.h:407 +msgid "define a new encoding conversion" +msgstr "definiuje nowe przekształcenie kodowania" + +#: sql_help.h:412 +msgid "create a new database" +msgstr "tworzy nową bazę danych" + +#: sql_help.h:417 +msgid "define a new domain" +msgstr "definiuje nową domenę" + +#: sql_help.h:422 +msgid "install an extension" +msgstr "instaluje nowe rozszerzenie" + +#: sql_help.h:427 +msgid "define a new foreign-data wrapper" +msgstr "definiuje nowe opakowania obcych danych" + +#: sql_help.h:432 +msgid "define a new foreign table" +msgstr "definiuje nową tabelę obcą" + +#: sql_help.h:437 +msgid "define a new function" +msgstr "definiuje nową funkcję" + +#: sql_help.h:442 sql_help.h:472 sql_help.h:542 +msgid "define a new database role" +msgstr "definiuje nową rolę bazy danych" + +#: sql_help.h:447 +msgid "define a new index" +msgstr "definiuje nowy indeks" + +#: sql_help.h:452 +msgid "define a new procedural language" +msgstr "definiuje nowy język proceduralny" + +#: sql_help.h:457 +msgid "define a new operator" +msgstr "definiuje nowy operator" + +#: sql_help.h:462 +msgid "define a new operator class" +msgstr "definiuje nową klasę operatora" + +#: sql_help.h:467 +msgid "define a new operator family" +msgstr "definiuje nową rodzinę operatora" + +#: sql_help.h:477 +#, fuzzy +msgid "define a new rewrite rule" +msgstr "definiuje nową regułę przepisania" + +#: sql_help.h:482 +msgid "define a new schema" +msgstr "definiuje nowy schemat" + +#: sql_help.h:487 +msgid "define a new sequence generator" +msgstr "definiuje nowy generator sekwencji" + +#: sql_help.h:492 +msgid "define a new foreign server" +msgstr "definiuje nowy serwer obcy" + +#: sql_help.h:497 +msgid "define a new table" +msgstr "definiuje nową tabelę" + +#: sql_help.h:502 sql_help.h:867 +msgid "define a new table from the results of a query" +msgstr "definiuje nową tabelę z wyników zapytania" + +#: sql_help.h:507 +msgid "define a new tablespace" +msgstr "definiuje nową przestrzeń tabel" + +#: sql_help.h:512 +msgid "define a new text search configuration" +msgstr "definiuje nową konfigurację wyszukiwania tekstowego" + +#: sql_help.h:517 +msgid "define a new text search dictionary" +msgstr "definiuje nowy słownik wyszukiwania tekstowego" + +#: sql_help.h:522 +msgid "define a new text search parser" +msgstr "definiuje nowy analizator wyszukiwania tekstowego" + +#: sql_help.h:527 +msgid "define a new text search template" +msgstr "definiuje nowy szablon wyszukiwania tekstowego" + +#: sql_help.h:532 +msgid "define a new trigger" +msgstr "definiuje nowy wyzwalacz" + +#: sql_help.h:537 +msgid "define a new data type" +msgstr "definiuje nowy typ danych" + +#: sql_help.h:547 +msgid "define a new mapping of a user to a foreign server" +msgstr "definiuje nowe mapowanie użytkownika do serwera obcego" + +#: sql_help.h:552 +msgid "define a new view" +msgstr "definiuje nowy widok" + +#: sql_help.h:557 +#, fuzzy +msgid "deallocate a prepared statement" +msgstr "przemieszcza przygotowane wyrażenie" + +#: sql_help.h:562 +msgid "define a cursor" +msgstr "definiuje kursor" + +#: sql_help.h:567 +msgid "delete rows of a table" +msgstr "usuwa wiersze z tabeli" + +#: sql_help.h:572 +msgid "discard session state" +msgstr "odrzuca stan sesji" + +#: sql_help.h:577 +msgid "execute an anonymous code block" +msgstr "wykonuje anonimowy blok kodu" + +#: sql_help.h:582 +msgid "remove an aggregate function" +msgstr "definiuje funkcję agregującą" + +#: sql_help.h:587 +msgid "remove a cast" +msgstr "usuwa rzutowanie" + +#: sql_help.h:592 +msgid "remove a collation" +msgstr "usuwa porównanie" + +#: sql_help.h:597 +msgid "remove a conversion" +msgstr "usuwa konwersję" + +#: sql_help.h:602 +msgid "remove a database" +msgstr "usuwa bazę danych" + +#: sql_help.h:607 +msgid "remove a domain" +msgstr "usuwa domenę" + +#: sql_help.h:612 +msgid "remove an extension" +msgstr "usuwa rozszerzenie" + +#: sql_help.h:617 +msgid "remove a foreign-data wrapper" +msgstr "usuwa opakowanie obcych danych" + +#: sql_help.h:622 +msgid "remove a foreign table" +msgstr "usuwa tabelę obcą" + +#: sql_help.h:627 +msgid "remove a function" +msgstr "usuwa funkcję" + +#: sql_help.h:632 sql_help.h:667 sql_help.h:732 +msgid "remove a database role" +msgstr "usuwa rolę bazy danych" + +#: sql_help.h:637 +msgid "remove an index" +msgstr "usuwa indeks" + +#: sql_help.h:642 +msgid "remove a procedural language" +msgstr "usuwa język proceduralny" + +#: sql_help.h:647 +msgid "remove an operator" +msgstr "usuwa operator" + +#: sql_help.h:652 +msgid "remove an operator class" +msgstr "usuwa klasę operatora" + +#: sql_help.h:657 +msgid "remove an operator family" +msgstr "usuwa rodzinę operatora" + +#: sql_help.h:662 +msgid "remove database objects owned by a database role" +msgstr "usuwa obiekty bazy danych których właścicielem jest rola bazy danych" + +#: sql_help.h:672 +#, fuzzy +msgid "remove a rewrite rule" +msgstr "usuwa regułę przepisywania" + +#: sql_help.h:677 +msgid "remove a schema" +msgstr "usuwa schemat" + +#: sql_help.h:682 +msgid "remove a sequence" +msgstr "usuwa sekwencję" + +#: sql_help.h:687 +msgid "remove a foreign server descriptor" +msgstr "usuwa deskryptor serwera obcego" + +#: sql_help.h:692 +msgid "remove a table" +msgstr "usuwa tabelę" + +#: sql_help.h:697 +msgid "remove a tablespace" +msgstr "usuwa przestrzeń tabel" + +#: sql_help.h:702 +msgid "remove a text search configuration" +msgstr "usuwa konfigurację wyszukiwania tekstowego" + +#: sql_help.h:707 +msgid "remove a text search dictionary" +msgstr "usuwa słownik wyszukiwania tekstowego" + +#: sql_help.h:712 +msgid "remove a text search parser" +msgstr "usuwa analizator wyszukiwania tekstowego" + +#: sql_help.h:717 +msgid "remove a text search template" +msgstr "usuwa szablon wyszukiwania tekstowego" + +#: sql_help.h:722 +msgid "remove a trigger" +msgstr "usuwa wyzwalacz" + +#: sql_help.h:727 +msgid "remove a data type" +msgstr "usuwa typ danych" + +#: sql_help.h:737 +msgid "remove a user mapping for a foreign server" +msgstr "usuwa mapowanie użytkownika dla serwera obcego" + +#: sql_help.h:742 +msgid "remove a view" +msgstr "usuwa widok" + +#: sql_help.h:752 +msgid "execute a prepared statement" +msgstr "wykonuje przygotowane wyrażenie" + +#: sql_help.h:757 +msgid "show the execution plan of a statement" +msgstr "pokazuje plan wykonania wyrażenia" + +#: sql_help.h:762 +msgid "retrieve rows from a query using a cursor" +msgstr "pobiera wiersze z zapytania przy użyciu kursora" + +#: sql_help.h:767 +msgid "define access privileges" +msgstr "definiuje uprawnienia dostępu" + +#: sql_help.h:772 +msgid "create new rows in a table" +msgstr "tworzy nowe wiersze w tabeli" + +#: sql_help.h:777 +msgid "listen for a notification" +msgstr "nasłuchuje powiadomień" + +#: sql_help.h:782 +msgid "load a shared library file" +msgstr "wczytuje współdzieloną bibliotekę plików" + +#: sql_help.h:787 +msgid "lock a table" +msgstr "blokuje tabelę" + +#: sql_help.h:792 +msgid "position a cursor" +msgstr "pozycjonuje kursor" + +#: sql_help.h:797 +msgid "generate a notification" +msgstr "generuje powiadomienie" + +#: sql_help.h:802 +msgid "prepare a statement for execution" +msgstr "przygotowuje wyrażenie do wykonania" + +#: sql_help.h:807 +msgid "prepare the current transaction for two-phase commit" +msgstr "przygotowane bieżącej transakcji do zatwierdzenia dwufazowego" + +#: sql_help.h:812 +msgid "change the ownership of database objects owned by a database role" +msgstr "" +"zmienia posiadacza obiektów bazy danych, których właścicielem jest rola bazy " +"danych" + +#: sql_help.h:817 +msgid "rebuild indexes" +msgstr "przebudowuje indeksy" + +#: sql_help.h:822 +msgid "destroy a previously defined savepoint" +msgstr "usuwa zdefiniowany poprzednio punkt zapisu" + +#: sql_help.h:827 +msgid "restore the value of a run-time parameter to the default value" +msgstr "przywraca wartość domyślną parametru czasu wykonania" + +#: sql_help.h:832 +msgid "remove access privileges" +msgstr "usuwa uprawnienia dostępu" + +#: sql_help.h:842 +msgid "cancel a transaction that was earlier prepared for two-phase commit" +msgstr "anuluje transakcję uprzednio przygotowaną do zatwierdzenia dwufazowego" + +#: sql_help.h:847 +msgid "roll back to a savepoint" +msgstr "wycofanie do punktu zapisu" + +#: sql_help.h:852 +msgid "define a new savepoint within the current transaction" +msgstr "definiuje punkt zapisu w bieżącej transakcji" + +#: sql_help.h:857 +msgid "define or change a security label applied to an object" +msgstr "definiuje zmianę etykiety bezpieczeństwa zastosowanych do obiektu" + +#: sql_help.h:862 sql_help.h:907 sql_help.h:937 +msgid "retrieve rows from a table or view" +msgstr "odczytuje wiersza z tabeli lub widoku" + +#: sql_help.h:872 +msgid "change a run-time parameter" +msgstr "zmienia parametr czasu wykonania" + +#: sql_help.h:877 +msgid "set constraint check timing for the current transaction" +msgstr "ustawia pomiar czasu ograniczeń sprawdzających dla bieżącej transakcji" + +#: sql_help.h:882 +msgid "set the current user identifier of the current session" +msgstr "ustawia identyfikator bieżącego użytkownika z bieżącej sesji" + +#: sql_help.h:887 +msgid "" +"set the session user identifier and the current user identifier of the " +"current session" +msgstr "" +"ustawia identyfikator użytkownika sesji i identyfikator bieżącego " +"użytkownika z bieżącej sesji" + +#: sql_help.h:892 +msgid "set the characteristics of the current transaction" +msgstr "ustawia charakterystyki bieżącej transakcji" + +#: sql_help.h:897 +msgid "show the value of a run-time parameter" +msgstr "pokazuje wartość parametru czasu wykonania" + +#: sql_help.h:912 +msgid "empty a table or set of tables" +msgstr "opróżnia tabelę lub grupę tabel" + +#: sql_help.h:917 +msgid "stop listening for a notification" +msgstr "zatrzymuje nasłuchiwania powiadomień" + +#: sql_help.h:922 +msgid "update rows of a table" +msgstr "modyfikuje wiersze w tabeli" + +#: sql_help.h:927 +msgid "garbage-collect and optionally analyze a database" +msgstr "porządkuje śmieci i opcjonalnie analizuje bazy danych" + +#: sql_help.h:932 +msgid "compute a set of rows" +msgstr "oblicza zbiór wierszy" + +#: sql_help.c:26 sql_help.c:29 sql_help.c:32 sql_help.c:44 sql_help.c:46 +#: sql_help.c:48 sql_help.c:59 sql_help.c:61 sql_help.c:63 sql_help.c:87 +#: sql_help.c:91 sql_help.c:93 sql_help.c:95 sql_help.c:97 sql_help.c:100 +#: sql_help.c:102 sql_help.c:104 sql_help.c:179 sql_help.c:181 sql_help.c:182 +#: sql_help.c:184 sql_help.c:186 sql_help.c:188 sql_help.c:276 sql_help.c:281 +#: sql_help.c:306 sql_help.c:308 sql_help.c:311 sql_help.c:313 sql_help.c:351 +#: sql_help.c:356 sql_help.c:361 sql_help.c:366 sql_help.c:404 sql_help.c:406 +#: sql_help.c:408 sql_help.c:411 sql_help.c:421 sql_help.c:423 sql_help.c:442 +#: sql_help.c:446 sql_help.c:459 sql_help.c:462 sql_help.c:465 sql_help.c:485 +#: sql_help.c:497 sql_help.c:505 sql_help.c:508 sql_help.c:511 sql_help.c:541 +#: sql_help.c:547 sql_help.c:549 sql_help.c:553 sql_help.c:556 sql_help.c:559 +#: sql_help.c:569 sql_help.c:571 sql_help.c:588 sql_help.c:597 sql_help.c:599 +#: sql_help.c:601 sql_help.c:675 sql_help.c:677 sql_help.c:680 sql_help.c:682 +#: sql_help.c:740 sql_help.c:742 sql_help.c:744 sql_help.c:747 sql_help.c:768 +#: sql_help.c:771 sql_help.c:774 sql_help.c:777 sql_help.c:781 sql_help.c:783 +#: sql_help.c:785 sql_help.c:787 sql_help.c:801 sql_help.c:804 sql_help.c:806 +#: sql_help.c:808 sql_help.c:818 sql_help.c:820 sql_help.c:830 sql_help.c:832 +#: sql_help.c:841 sql_help.c:862 sql_help.c:864 sql_help.c:866 sql_help.c:869 +#: sql_help.c:871 sql_help.c:873 sql_help.c:911 sql_help.c:917 sql_help.c:919 +#: sql_help.c:922 sql_help.c:924 sql_help.c:926 sql_help.c:951 sql_help.c:954 +#: sql_help.c:956 sql_help.c:958 sql_help.c:960 sql_help.c:1000 +#: sql_help.c:1183 sql_help.c:1191 sql_help.c:1235 sql_help.c:1239 +#: sql_help.c:1249 sql_help.c:1267 sql_help.c:1290 sql_help.c:1322 +#: sql_help.c:1367 sql_help.c:1409 sql_help.c:1431 sql_help.c:1451 +#: sql_help.c:1452 sql_help.c:1469 sql_help.c:1489 sql_help.c:1511 +#: sql_help.c:1539 sql_help.c:1560 sql_help.c:1590 sql_help.c:1771 +#: sql_help.c:1784 sql_help.c:1801 sql_help.c:1817 sql_help.c:1840 +#: sql_help.c:1883 sql_help.c:1887 sql_help.c:1889 sql_help.c:1907 +#: sql_help.c:1934 sql_help.c:1967 sql_help.c:1977 sql_help.c:1986 +#: sql_help.c:2030 sql_help.c:2048 sql_help.c:2056 sql_help.c:2064 +#: sql_help.c:2072 sql_help.c:2088 sql_help.c:2096 sql_help.c:2105 +#: sql_help.c:2116 sql_help.c:2124 sql_help.c:2132 sql_help.c:2140 +#: sql_help.c:2150 sql_help.c:2159 sql_help.c:2168 sql_help.c:2176 +#: sql_help.c:2184 sql_help.c:2193 sql_help.c:2201 sql_help.c:2217 +#: sql_help.c:2233 sql_help.c:2241 sql_help.c:2249 sql_help.c:2257 +#: sql_help.c:2265 sql_help.c:2274 sql_help.c:2282 sql_help.c:2299 +#: sql_help.c:2314 sql_help.c:2506 sql_help.c:2557 sql_help.c:2584 +#: sql_help.c:2927 sql_help.c:2973 sql_help.c:3080 +msgid "name" +msgstr "nazwa" + +#: sql_help.c:27 sql_help.c:30 sql_help.c:33 sql_help.c:317 sql_help.c:320 +#: sql_help.c:2031 +msgid "type" +msgstr "typ" + +#: sql_help.c:28 sql_help.c:45 sql_help.c:60 sql_help.c:92 sql_help.c:312 +#: sql_help.c:360 sql_help.c:393 sql_help.c:405 sql_help.c:422 sql_help.c:461 +#: sql_help.c:507 sql_help.c:548 sql_help.c:570 sql_help.c:600 sql_help.c:681 +#: sql_help.c:741 sql_help.c:784 sql_help.c:805 sql_help.c:819 sql_help.c:831 +#: sql_help.c:843 sql_help.c:870 sql_help.c:918 sql_help.c:959 +msgid "new_name" +msgstr "nowa_nazwa" + +#: sql_help.c:31 sql_help.c:47 sql_help.c:62 sql_help.c:94 sql_help.c:187 +#: sql_help.c:282 sql_help.c:322 sql_help.c:365 sql_help.c:424 sql_help.c:433 +#: sql_help.c:445 sql_help.c:464 sql_help.c:510 sql_help.c:572 sql_help.c:598 +#: sql_help.c:617 sql_help.c:725 sql_help.c:743 sql_help.c:786 sql_help.c:807 +#: sql_help.c:865 sql_help.c:957 +msgid "new_owner" +msgstr "nowy_właściciel" + +#: sql_help.c:34 sql_help.c:49 sql_help.c:64 sql_help.c:189 sql_help.c:228 +#: sql_help.c:314 sql_help.c:370 sql_help.c:449 sql_help.c:467 sql_help.c:513 +#: sql_help.c:602 sql_help.c:683 sql_help.c:788 sql_help.c:809 sql_help.c:821 +#: sql_help.c:833 sql_help.c:872 sql_help.c:961 +msgid "new_schema" +msgstr "nowy_schemat" + +#: sql_help.c:88 sql_help.c:279 sql_help.c:323 sql_help.c:542 sql_help.c:614 +#: sql_help.c:802 sql_help.c:912 sql_help.c:938 sql_help.c:1142 +#: sql_help.c:1147 sql_help.c:1325 sql_help.c:1343 sql_help.c:1410 +#: sql_help.c:1540 sql_help.c:1611 sql_help.c:1786 sql_help.c:1935 +#: sql_help.c:1957 sql_help.c:2332 +msgid "option" +msgstr "opcja" + +#: sql_help.c:89 sql_help.c:543 sql_help.c:913 sql_help.c:1411 sql_help.c:1541 +#: sql_help.c:1936 +msgid "where option can be:" +msgstr "gdzie opcja może przyjmować:" + +#: sql_help.c:90 sql_help.c:544 sql_help.c:914 sql_help.c:1274 sql_help.c:1542 +#: sql_help.c:1937 +msgid "connlimit" +msgstr "limitpołączeń" + +#: sql_help.c:96 sql_help.c:726 +msgid "new_tablespace" +msgstr "nowa_przestrzeńtabel" + +#: sql_help.c:98 sql_help.c:101 sql_help.c:103 sql_help.c:374 sql_help.c:376 +#: sql_help.c:377 sql_help.c:551 sql_help.c:555 sql_help.c:558 sql_help.c:920 +#: sql_help.c:923 sql_help.c:925 sql_help.c:1378 sql_help.c:2601 +#: sql_help.c:2916 +msgid "configuration_parameter" +msgstr "parametr_konfiguracji" + +#: sql_help.c:99 sql_help.c:280 sql_help.c:324 sql_help.c:375 sql_help.c:410 +#: sql_help.c:552 sql_help.c:615 sql_help.c:702 sql_help.c:720 sql_help.c:746 +#: sql_help.c:803 sql_help.c:921 sql_help.c:939 sql_help.c:1326 +#: sql_help.c:1344 sql_help.c:1379 sql_help.c:1380 sql_help.c:1439 +#: sql_help.c:1612 sql_help.c:1686 sql_help.c:1694 sql_help.c:1726 +#: sql_help.c:1748 sql_help.c:1787 sql_help.c:1958 sql_help.c:2917 +#: sql_help.c:2918 +msgid "value" +msgstr "wartość" + +#: sql_help.c:151 +msgid "target_role" +msgstr "rola_docelowa" + +#: sql_help.c:152 sql_help.c:1575 sql_help.c:2430 sql_help.c:2437 +#: sql_help.c:2449 sql_help.c:2455 sql_help.c:2684 sql_help.c:2691 +#: sql_help.c:2703 sql_help.c:2709 +msgid "schema_name" +msgstr "nazwa_schematu" + +#: sql_help.c:153 +msgid "abbreviated_grant_or_revoke" +msgstr "skrót_przyznania_lub_odebrania_uprawnień" + +#: sql_help.c:154 +msgid "where abbreviated_grant_or_revoke is one of:" +msgstr "gdzie skrót_przyznania_lub_odebrania_uprawnień to jedno z:" + +#: sql_help.c:155 sql_help.c:156 sql_help.c:157 sql_help.c:158 sql_help.c:159 +#: sql_help.c:160 sql_help.c:1414 sql_help.c:1415 sql_help.c:1416 +#: sql_help.c:1417 sql_help.c:1418 sql_help.c:1545 sql_help.c:1546 +#: sql_help.c:1547 sql_help.c:1548 sql_help.c:1549 sql_help.c:1940 +#: sql_help.c:1941 sql_help.c:1942 sql_help.c:1943 sql_help.c:1944 +#: sql_help.c:2431 sql_help.c:2435 sql_help.c:2438 sql_help.c:2440 +#: sql_help.c:2442 sql_help.c:2444 sql_help.c:2450 sql_help.c:2452 +#: sql_help.c:2454 sql_help.c:2456 sql_help.c:2458 sql_help.c:2459 +#: sql_help.c:2460 sql_help.c:2685 sql_help.c:2689 sql_help.c:2692 +#: sql_help.c:2694 sql_help.c:2696 sql_help.c:2698 sql_help.c:2704 +#: sql_help.c:2706 sql_help.c:2708 sql_help.c:2710 sql_help.c:2712 +#: sql_help.c:2713 sql_help.c:2714 sql_help.c:2937 +msgid "role_name" +msgstr "nazwa_roli" + +#: sql_help.c:180 sql_help.c:693 sql_help.c:695 sql_help.c:953 sql_help.c:1293 +#: sql_help.c:1297 sql_help.c:1435 sql_help.c:1698 sql_help.c:1708 +#: sql_help.c:1730 sql_help.c:2474 sql_help.c:2822 sql_help.c:2823 +#: sql_help.c:2827 sql_help.c:2832 sql_help.c:2891 sql_help.c:2892 +#: sql_help.c:2897 sql_help.c:2902 sql_help.c:3025 sql_help.c:3026 +#: sql_help.c:3030 sql_help.c:3035 sql_help.c:3106 sql_help.c:3108 +#: sql_help.c:3139 sql_help.c:3181 sql_help.c:3182 sql_help.c:3186 +#: sql_help.c:3191 +msgid "expression" +msgstr "wyrażenie" + +#: sql_help.c:183 +msgid "domain_constraint" +msgstr "ograniczenie_domeny" + +#: sql_help.c:185 sql_help.c:708 sql_help.c:709 sql_help.c:728 sql_help.c:1059 +#: sql_help.c:1296 sql_help.c:1697 sql_help.c:1707 +msgid "constraint_name" +msgstr "nazwa_ograniczenia" + +#: sql_help.c:225 sql_help.c:227 sql_help.c:229 sql_help.c:231 sql_help.c:1308 +#: sql_help.c:2080 +msgid "extension_name" +msgstr "nazwa_rozszerzenia" + +#: sql_help.c:226 sql_help.c:613 +msgid "new_version" +msgstr "nowa_wersja" + +#: sql_help.c:230 sql_help.c:232 +msgid "member_object" +msgstr "obiekt_składowy" + +#: sql_help.c:233 +msgid "where member_object is:" +msgstr "gdzie obiekt_składowy to:" + +#: sql_help.c:234 sql_help.c:1052 sql_help.c:2771 +msgid "agg_name" +msgstr "nazwa_agreg" + +#: sql_help.c:235 sql_help.c:1053 sql_help.c:2772 +msgid "agg_type" +msgstr "typ_agreg" + +#: sql_help.c:236 sql_help.c:1054 sql_help.c:1215 sql_help.c:1219 +#: sql_help.c:1221 sql_help.c:2039 +msgid "source_type" +msgstr "typ_źródłowy" + +#: sql_help.c:237 sql_help.c:1055 sql_help.c:1216 sql_help.c:1220 +#: sql_help.c:1222 sql_help.c:2040 +msgid "target_type" +msgstr "typ_docelowy" + +#: sql_help.c:238 sql_help.c:239 sql_help.c:240 sql_help.c:241 sql_help.c:242 +#: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:255 sql_help.c:256 +#: sql_help.c:257 sql_help.c:258 sql_help.c:259 sql_help.c:260 sql_help.c:261 +#: sql_help.c:262 sql_help.c:263 sql_help.c:264 sql_help.c:1056 +#: sql_help.c:1061 sql_help.c:1062 sql_help.c:1063 sql_help.c:1064 +#: sql_help.c:1065 sql_help.c:1066 sql_help.c:1071 sql_help.c:1076 +#: sql_help.c:1078 sql_help.c:1080 sql_help.c:1081 sql_help.c:1084 +#: sql_help.c:1085 sql_help.c:1086 sql_help.c:1087 sql_help.c:1088 +#: sql_help.c:1089 sql_help.c:1090 sql_help.c:1091 sql_help.c:1092 +#: sql_help.c:1095 sql_help.c:1096 sql_help.c:2768 sql_help.c:2773 +#: sql_help.c:2774 sql_help.c:2780 sql_help.c:2781 sql_help.c:2782 +#: sql_help.c:2783 sql_help.c:2784 +msgid "object_name" +msgstr "nazwa_obiektu" + +#: sql_help.c:243 sql_help.c:495 sql_help.c:1067 sql_help.c:1217 +#: sql_help.c:1252 sql_help.c:1470 sql_help.c:1501 sql_help.c:1845 +#: sql_help.c:2445 sql_help.c:2699 sql_help.c:2775 sql_help.c:2848 +#: sql_help.c:2853 sql_help.c:3051 sql_help.c:3056 sql_help.c:3207 +#: sql_help.c:3212 +msgid "function_name" +msgstr "nazwa_funkcji" + +#: sql_help.c:244 sql_help.c:352 sql_help.c:357 sql_help.c:362 sql_help.c:367 +#: sql_help.c:1068 sql_help.c:1368 sql_help.c:2106 sql_help.c:2446 +#: sql_help.c:2700 sql_help.c:2776 +msgid "argmode" +msgstr "trybarg" + +#: sql_help.c:245 sql_help.c:353 sql_help.c:358 sql_help.c:363 sql_help.c:368 +#: sql_help.c:1069 sql_help.c:1369 sql_help.c:2107 sql_help.c:2777 +msgid "argname" +msgstr "nazwaarg" + +#: sql_help.c:246 sql_help.c:354 sql_help.c:359 sql_help.c:364 sql_help.c:369 +#: sql_help.c:1070 sql_help.c:1370 sql_help.c:2108 sql_help.c:2778 +msgid "argtype" +msgstr "typarg" + +#: sql_help.c:247 sql_help.c:488 sql_help.c:1073 sql_help.c:1494 +msgid "operator_name" +msgstr "nazwa_operatora" + +#: sql_help.c:248 sql_help.c:443 sql_help.c:447 sql_help.c:1074 +#: sql_help.c:1471 sql_help.c:2141 +msgid "left_type" +msgstr "typ_lewy" + +#: sql_help.c:249 sql_help.c:444 sql_help.c:448 sql_help.c:1075 +#: sql_help.c:1472 sql_help.c:2142 +msgid "right_type" +msgstr "typ_prawy" + +#: sql_help.c:251 sql_help.c:253 sql_help.c:460 sql_help.c:463 sql_help.c:466 +#: sql_help.c:486 sql_help.c:498 sql_help.c:506 sql_help.c:509 sql_help.c:512 +#: sql_help.c:1077 sql_help.c:1079 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1713 sql_help.c:2151 sql_help.c:2160 +msgid "index_method" +msgstr "metoda_indeksowania" + +#: sql_help.c:277 sql_help.c:1323 +msgid "handler_function" +msgstr "funkcja_uchwytu" + +#: sql_help.c:278 sql_help.c:1324 +msgid "validator_function" +msgstr "funkcja_walidatora" + +#: sql_help.c:307 sql_help.c:355 sql_help.c:676 sql_help.c:863 sql_help.c:1704 +#: sql_help.c:1705 sql_help.c:1721 sql_help.c:1722 +msgid "action" +msgstr "akcja" + +#: sql_help.c:309 sql_help.c:316 sql_help.c:318 sql_help.c:319 sql_help.c:321 +#: sql_help.c:596 sql_help.c:678 sql_help.c:685 sql_help.c:689 sql_help.c:690 +#: sql_help.c:694 sql_help.c:696 sql_help.c:697 sql_help.c:698 sql_help.c:700 +#: sql_help.c:703 sql_help.c:705 sql_help.c:952 sql_help.c:955 sql_help.c:970 +#: sql_help.c:1140 sql_help.c:1144 sql_help.c:1156 sql_help.c:1157 +#: sql_help.c:1434 sql_help.c:1597 sql_help.c:1729 sql_help.c:2432 +#: sql_help.c:2433 sql_help.c:2473 sql_help.c:2686 sql_help.c:2687 +#: sql_help.c:3105 sql_help.c:3107 sql_help.c:3124 sql_help.c:3127 +msgid "column" +msgstr "kolumna" + +#: sql_help.c:310 sql_help.c:679 +msgid "new_column" +msgstr "nowa_kolumna" + +#: sql_help.c:315 sql_help.c:371 sql_help.c:684 sql_help.c:876 +msgid "where action is one of:" +msgstr "gdzie akcja to jedna z:" + +#: sql_help.c:372 sql_help.c:1376 +msgid "execution_cost" +msgstr "koszt_wykonania" + +#: sql_help.c:373 sql_help.c:1377 +msgid "result_rows" +msgstr "wiersze_wynikowe" + +#: sql_help.c:388 sql_help.c:390 sql_help.c:392 +msgid "group_name" +msgstr "nazwa_grupy" + +#: sql_help.c:389 sql_help.c:391 sql_help.c:936 sql_help.c:1268 +#: sql_help.c:1576 sql_help.c:1578 sql_help.c:1759 sql_help.c:1955 +#: sql_help.c:2290 sql_help.c:2947 +msgid "user_name" +msgstr "nazwa_użytkownika" + +#: sql_help.c:407 sql_help.c:1758 sql_help.c:2225 sql_help.c:2457 +#: sql_help.c:2711 +msgid "tablespace_name" +msgstr "nazwa_przestrzenitabel" + +#: sql_help.c:409 sql_help.c:412 sql_help.c:719 sql_help.c:721 sql_help.c:1438 +#: sql_help.c:1685 sql_help.c:1693 sql_help.c:1725 sql_help.c:1747 +msgid "storage_parameter" +msgstr "parametr_przechowywania" + +#: sql_help.c:432 sql_help.c:1072 sql_help.c:2779 +msgid "large_object_oid" +msgstr "oid_dużego_obiektu" + +#: sql_help.c:487 sql_help.c:499 sql_help.c:1493 +msgid "strategy_number" +msgstr "numer_strategii" + +#: sql_help.c:489 sql_help.c:490 sql_help.c:493 sql_help.c:494 sql_help.c:500 +#: sql_help.c:501 sql_help.c:503 sql_help.c:504 sql_help.c:1495 +#: sql_help.c:1496 sql_help.c:1499 sql_help.c:1500 +msgid "op_type" +msgstr "typ_op" + +#: sql_help.c:491 sql_help.c:1497 +msgid "sort_family_name" +msgstr "nazwa_rodziny_sortowania" + +#: sql_help.c:492 sql_help.c:502 sql_help.c:1498 +msgid "support_number" +msgstr "numer_obsługi" + +#: sql_help.c:496 sql_help.c:1218 sql_help.c:1502 +msgid "argument_type" +msgstr "typ_argumentu" + +#: sql_help.c:545 sql_help.c:915 sql_help.c:1412 sql_help.c:1543 +#: sql_help.c:1938 +msgid "password" +msgstr "hasło" + +#: sql_help.c:546 sql_help.c:916 sql_help.c:1413 sql_help.c:1544 +#: sql_help.c:1939 +msgid "timestamp" +msgstr "znacznik_czasu" + +#: sql_help.c:550 sql_help.c:554 sql_help.c:557 sql_help.c:560 sql_help.c:2439 +#: sql_help.c:2693 +msgid "database_name" +msgstr "nazwa_bazydanych" + +#: sql_help.c:589 sql_help.c:1591 +msgid "increment" +msgstr "przyrost" + +#: sql_help.c:590 sql_help.c:1592 +msgid "minvalue" +msgstr "wartośćmin" + +#: sql_help.c:591 sql_help.c:1593 +msgid "maxvalue" +msgstr "wartośćmaks" + +#: sql_help.c:592 sql_help.c:1594 sql_help.c:2835 sql_help.c:2905 +#: sql_help.c:3038 sql_help.c:3143 sql_help.c:3194 +msgid "start" +msgstr "początek" + +#: sql_help.c:593 +msgid "restart" +msgstr "restart" + +#: sql_help.c:594 sql_help.c:1595 +msgid "cache" +msgstr "pamięć_podręczna" + +#: sql_help.c:612 sql_help.c:616 sql_help.c:937 sql_help.c:1342 +#: sql_help.c:1607 sql_help.c:1956 sql_help.c:2209 sql_help.c:2291 +#: sql_help.c:2443 sql_help.c:2697 +msgid "server_name" +msgstr "nazwa_serwera" + +#: sql_help.c:686 sql_help.c:691 sql_help.c:878 sql_help.c:882 sql_help.c:1291 +#: sql_help.c:1341 sql_help.c:1490 sql_help.c:1678 sql_help.c:1885 +#: sql_help.c:2558 +msgid "data_type" +msgstr "typ_danych" + +#: sql_help.c:687 sql_help.c:692 sql_help.c:879 sql_help.c:883 sql_help.c:1292 +#: sql_help.c:1436 sql_help.c:1679 sql_help.c:1886 +msgid "collation" +msgstr "porównanie" + +#: sql_help.c:688 sql_help.c:1680 sql_help.c:1691 +msgid "column_constraint" +msgstr "ograniczenie_kolumny" + +#: sql_help.c:699 +msgid "integer" +msgstr "liczba_całkowita" + +#: sql_help.c:701 sql_help.c:704 +msgid "attribute_option" +msgstr "opcja_atrybutu" + +#: sql_help.c:706 sql_help.c:1681 sql_help.c:1692 +msgid "table_constraint" +msgstr "ograniczenie_tabeli" + +#: sql_help.c:707 +msgid "table_constraint_using_index" +msgstr "ograniczenie_tabeli_używające_indeksu" + +#: sql_help.c:710 sql_help.c:711 sql_help.c:712 sql_help.c:713 sql_help.c:1093 +msgid "trigger_name" +msgstr "nazwa_wyzwalacza" + +#: sql_help.c:714 sql_help.c:715 sql_help.c:716 sql_help.c:717 +#, fuzzy +msgid "rewrite_rule_name" +msgstr "nazwa_reguły" + +#: sql_help.c:718 sql_help.c:729 sql_help.c:1010 +msgid "index_name" +msgstr "nazwa_indeksu" + +#: sql_help.c:722 sql_help.c:723 sql_help.c:1682 sql_help.c:1684 +msgid "parent_table" +msgstr "tabela_nadrzędna" + +#: sql_help.c:724 sql_help.c:1689 +msgid "type_name" +msgstr "nazwa_typu" + +#: sql_help.c:727 +msgid "and table_constraint_using_index is:" +msgstr "a ograniczenie_tabeli_używające_indeksu to:" + +#: sql_help.c:745 sql_help.c:748 +msgid "tablespace_option" +msgstr "opcja_przestrzeni_tabel" + +#: sql_help.c:769 sql_help.c:772 sql_help.c:778 sql_help.c:782 +msgid "token_type" +msgstr "typ_tokenu" + +#: sql_help.c:770 sql_help.c:773 +msgid "dictionary_name" +msgstr "nazwa_słownika" + +#: sql_help.c:775 sql_help.c:779 +msgid "old_dictionary" +msgstr "stary_słownik" + +#: sql_help.c:776 sql_help.c:780 +msgid "new_dictionary" +msgstr "nowy_słownik" + +#: sql_help.c:867 sql_help.c:877 sql_help.c:880 sql_help.c:881 sql_help.c:1884 +msgid "attribute_name" +msgstr "nazwa_atrybutu" + +#: sql_help.c:868 +msgid "new_attribute_name" +msgstr "nowa_nazwa_atrybutu" + +#: sql_help.c:874 +msgid "new_enum_value" +msgstr "nowa_nazwa_wylicz" + +#: sql_help.c:875 +msgid "existing_enum_value" +msgstr "istniejąca_wartość_wylicz" + +#: sql_help.c:984 sql_help.c:2962 sql_help.c:2963 sql_help.c:2987 +msgid "transaction_mode" +msgstr "tryb_transakcji" + +#: sql_help.c:985 sql_help.c:2964 sql_help.c:2988 +msgid "where transaction_mode is one of:" +msgstr "gdzie tryb_transakcji to jeden z:" + +#: sql_help.c:1009 sql_help.c:1060 sql_help.c:1083 sql_help.c:1094 +#: sql_help.c:1139 sql_help.c:1143 sql_help.c:1339 sql_help.c:1676 +#: sql_help.c:1688 sql_help.c:1745 sql_help.c:2429 sql_help.c:2434 +#: sql_help.c:2683 sql_help.c:2688 sql_help.c:2769 sql_help.c:2837 +#: sql_help.c:2839 sql_help.c:2868 sql_help.c:2907 sql_help.c:3040 +#: sql_help.c:3042 sql_help.c:3071 sql_help.c:3196 sql_help.c:3198 +#: sql_help.c:3227 +msgid "table_name" +msgstr "nazwa_tabeli" + +#: sql_help.c:1057 +msgid "relation_name" +msgstr "nazwa_relacji" + +#: sql_help.c:1058 sql_help.c:1340 sql_help.c:1373 sql_help.c:1677 +#: sql_help.c:1690 sql_help.c:1709 sql_help.c:1711 sql_help.c:1718 +#: sql_help.c:1746 sql_help.c:1848 sql_help.c:1968 sql_help.c:2770 +#: sql_help.c:2863 sql_help.c:3066 sql_help.c:3222 +msgid "column_name" +msgstr "nazwa_kolumny" + +#: sql_help.c:1082 +msgid "rule_name" +msgstr "nazwa_reguły" + +#: sql_help.c:1097 +msgid "text" +msgstr "tekst" + +#: sql_help.c:1112 sql_help.c:2567 sql_help.c:2729 +msgid "transaction_id" +msgstr "id_transakcji" + +#: sql_help.c:1141 sql_help.c:1146 sql_help.c:2493 +msgid "filename" +msgstr "nazwa_pliku" + +#: sql_help.c:1145 sql_help.c:1750 sql_help.c:1969 sql_help.c:1987 +#: sql_help.c:2475 +msgid "query" +msgstr "zapytanie" + +#: sql_help.c:1148 sql_help.c:2335 +msgid "where option can be one of:" +msgstr "gdzie opcja może być jedną z:" + +#: sql_help.c:1149 +msgid "format_name" +msgstr "nazwa_formatu" + +#: sql_help.c:1150 sql_help.c:1153 sql_help.c:2336 sql_help.c:2337 +#: sql_help.c:2338 sql_help.c:2339 +msgid "boolean" +msgstr "boolean" + +#: sql_help.c:1151 +msgid "delimiter_character" +msgstr "znak_ogranicznika" + +#: sql_help.c:1152 +msgid "null_string" +msgstr "pusty_ciąg_znaków" + +#: sql_help.c:1154 +msgid "quote_character" +msgstr "znak_cytatu" + +#: sql_help.c:1155 +msgid "escape_character" +msgstr "znak_ucieczki" + +#: sql_help.c:1158 +msgid "encoding_name" +msgstr "nazwa_kodowania" + +#: sql_help.c:1184 +msgid "input_data_type" +msgstr "typ_danych_wejściowych" + +#: sql_help.c:1185 sql_help.c:1193 +msgid "sfunc" +msgstr "sfunk" + +#: sql_help.c:1186 sql_help.c:1194 +msgid "state_data_type" +msgstr "typ_danych_stanu" + +#: sql_help.c:1187 sql_help.c:1195 +msgid "ffunc" +msgstr "ffunk" + +#: sql_help.c:1188 sql_help.c:1196 +msgid "initial_condition" +msgstr "warunek_początkowy" + +#: sql_help.c:1189 sql_help.c:1197 +msgid "sort_operator" +msgstr "operator_sortowania" + +#: sql_help.c:1190 +msgid "or the old syntax" +msgstr "albo stara składnia" + +#: sql_help.c:1192 +msgid "base_type" +msgstr "typ_bazowy" + +#: sql_help.c:1236 +msgid "locale" +msgstr "lokalizacja" + +#: sql_help.c:1237 sql_help.c:1271 +msgid "lc_collate" +msgstr "lc_collate" + +#: sql_help.c:1238 sql_help.c:1272 +msgid "lc_ctype" +msgstr "lc_ctype" + +#: sql_help.c:1240 +msgid "existing_collation" +msgstr "istniejące_porównanie" + +#: sql_help.c:1250 +msgid "source_encoding" +msgstr "kodowanie_źródła" + +#: sql_help.c:1251 +msgid "dest_encoding" +msgstr "kodowanie_celu" + +#: sql_help.c:1269 sql_help.c:1785 +msgid "template" +msgstr "szablon" + +#: sql_help.c:1270 +msgid "encoding" +msgstr "kodowanie" + +#: sql_help.c:1273 sql_help.c:1440 sql_help.c:1687 sql_help.c:1695 +#: sql_help.c:1727 sql_help.c:1749 +msgid "tablespace" +msgstr "przestrzeń_tabel" + +#: sql_help.c:1294 +msgid "constraint" +msgstr "ograniczenie" + +#: sql_help.c:1295 +msgid "where constraint is:" +msgstr "gdzie ograniczenie to:" + +#: sql_help.c:1309 +msgid "schema" +msgstr "schemat" + +#: sql_help.c:1310 +msgid "version" +msgstr "wersja" + +#: sql_help.c:1311 +msgid "old_version" +msgstr "stara_wersja" + +#: sql_help.c:1371 sql_help.c:1699 +msgid "default_expr" +msgstr "wyrażenie_domyślne" + +#: sql_help.c:1372 +msgid "rettype" +msgstr "typ_zwracany" + +#: sql_help.c:1374 +msgid "column_type" +msgstr "typ_kolumny" + +#: sql_help.c:1375 sql_help.c:2021 sql_help.c:2451 sql_help.c:2705 +msgid "lang_name" +msgstr "nazwa_jęz" + +#: sql_help.c:1381 +msgid "definition" +msgstr "definicja" + +#: sql_help.c:1382 +msgid "obj_file" +msgstr "plik_obj" + +#: sql_help.c:1383 +msgid "link_symbol" +msgstr "link_symbolicz" + +#: sql_help.c:1384 +msgid "attribute" +msgstr "atrybut" + +#: sql_help.c:1419 sql_help.c:1550 sql_help.c:1945 +msgid "uid" +msgstr "uid" + +#: sql_help.c:1433 +msgid "method" +msgstr "metoda" + +#: sql_help.c:1437 sql_help.c:1731 +msgid "opclass" +msgstr "klasa_op" + +#: sql_help.c:1441 sql_help.c:1717 +msgid "predicate" +msgstr "orzeczenie" + +#: sql_help.c:1453 +msgid "call_handler" +msgstr "uchwyt_wywołania" + +#: sql_help.c:1454 +msgid "inline_handler" +msgstr "uchwyt_wbudowany" + +#: sql_help.c:1455 +msgid "valfunction" +msgstr "funkcja_walid" + +#: sql_help.c:1473 +msgid "com_op" +msgstr "op_kom" + +#: sql_help.c:1474 +msgid "neg_op" +msgstr "op_neg" + +#: sql_help.c:1475 +msgid "res_proc" +msgstr "proc_res" + +#: sql_help.c:1476 +msgid "join_proc" +msgstr "procedura_złączenia" + +#: sql_help.c:1492 +msgid "family_name" +msgstr "nazwa_rodziny" + +#: sql_help.c:1503 +msgid "storage_type" +msgstr "typ_przechowywania" + +#: sql_help.c:1561 sql_help.c:1841 +msgid "event" +msgstr "zdarzenie" + +#: sql_help.c:1563 sql_help.c:1844 sql_help.c:2003 sql_help.c:2826 +#: sql_help.c:2828 sql_help.c:2896 sql_help.c:2898 sql_help.c:3029 +#: sql_help.c:3031 sql_help.c:3110 sql_help.c:3185 sql_help.c:3187 +msgid "condition" +msgstr "warunek" + +#: sql_help.c:1564 sql_help.c:1565 sql_help.c:1566 +msgid "command" +msgstr "polecenie" + +#: sql_help.c:1577 sql_help.c:1579 +msgid "schema_element" +msgstr "element_schematu" + +#: sql_help.c:1608 +msgid "server_type" +msgstr "typ_serwera" + +#: sql_help.c:1609 +msgid "server_version" +msgstr "wersja_serwera" + +#: sql_help.c:1610 sql_help.c:2441 sql_help.c:2695 +msgid "fdw_name" +msgstr "nazwa_fdw" + +#: sql_help.c:1683 +msgid "like_option" +msgstr "opcja_podobne" + +#: sql_help.c:1696 +msgid "where column_constraint is:" +msgstr "gdzie ograniczenie_kolumny to:" + +#: sql_help.c:1700 sql_help.c:1701 sql_help.c:1710 sql_help.c:1712 +#: sql_help.c:1716 +msgid "index_parameters" +msgstr "parametry_indeksu" + +#: sql_help.c:1702 sql_help.c:1719 +msgid "reftable" +msgstr "tabelaref" + +#: sql_help.c:1703 sql_help.c:1720 +msgid "refcolumn" +msgstr "kolumnaref" + +#: sql_help.c:1706 +msgid "and table_constraint is:" +msgstr "a ograniczenie_tabeli to:" + +#: sql_help.c:1714 +msgid "exclude_element" +msgstr "element_wyłączany" + +#: sql_help.c:1723 +msgid "and like_option is:" +msgstr "a opcja_podobne to:" + +#: sql_help.c:1724 +msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" +msgstr "parametry_indeksu w ograniczeniach UNIQUE, PRIMARY KEY i EXCLUDE to:" + +#: sql_help.c:1728 +msgid "exclude_element in an EXCLUDE constraint is:" +msgstr "element_wyłączany w ograniczeniu EXCLUDE to:" + +#: sql_help.c:1760 +msgid "directory" +msgstr "folder" + +#: sql_help.c:1772 +msgid "parser_name" +msgstr "nazwa_analizatora" + +#: sql_help.c:1773 +msgid "source_config" +msgstr "konfiguracja_źródła" + +#: sql_help.c:1802 +msgid "start_function" +msgstr "funkcja_startowa" + +#: sql_help.c:1803 +msgid "gettoken_function" +msgstr "funkcja_gettoken" + +#: sql_help.c:1804 +msgid "end_function" +msgstr "funkcja_kończąca" + +#: sql_help.c:1805 +msgid "lextypes_function" +msgstr "funkcja_lextypes" + +#: sql_help.c:1806 +msgid "headline_function" +msgstr "funkcja_nagłówkowa" + +#: sql_help.c:1818 +msgid "init_function" +msgstr "funkcja_inicjująca" + +#: sql_help.c:1819 +msgid "lexize_function" +msgstr "funkcja_lexize" + +#: sql_help.c:1843 +msgid "referenced_table_name" +msgstr "nazwa_tabeli_odwołania" + +#: sql_help.c:1846 +msgid "arguments" +msgstr "argumenty" + +#: sql_help.c:1847 +msgid "where event can be one of:" +msgstr "gdzie zdarzenie może być jednym z:" + +#: sql_help.c:1888 sql_help.c:2785 +msgid "label" +msgstr "etykieta" + +#: sql_help.c:1890 +msgid "input_function" +msgstr "funkcja_wejścia" + +#: sql_help.c:1891 +msgid "output_function" +msgstr "funkcja_wyjścia" + +#: sql_help.c:1892 +msgid "receive_function" +msgstr "funkcja_odbierająca" + +#: sql_help.c:1893 +msgid "send_function" +msgstr "funkcja_wysyłająca" + +#: sql_help.c:1894 +msgid "type_modifier_input_function" +msgstr "funkcja_przyjmująca_modyfikator_typu" + +#: sql_help.c:1895 +msgid "type_modifier_output_function" +msgstr "funkcja_zwracająca_modyfikator_typu" + +#: sql_help.c:1896 +msgid "analyze_function" +msgstr "funkcja_analizy" + +#: sql_help.c:1897 +msgid "internallength" +msgstr "wewnętrzna_długość" + +#: sql_help.c:1898 +msgid "alignment" +msgstr "wyrównanie" + +#: sql_help.c:1899 +msgid "storage" +msgstr "nośnik" + +#: sql_help.c:1900 +msgid "like_type" +msgstr "typ_podobne" + +#: sql_help.c:1901 +msgid "category" +msgstr "kategoria" + +#: sql_help.c:1902 +msgid "preferred" +msgstr "preferowane" + +#: sql_help.c:1903 +msgid "default" +msgstr "domyślnie" + +#: sql_help.c:1904 +msgid "element" +msgstr "element" + +#: sql_help.c:1905 +msgid "delimiter" +msgstr "ogranicznik" + +#: sql_help.c:1906 +msgid "collatable" +msgstr "porównywalne" + +#: sql_help.c:1999 sql_help.c:2471 sql_help.c:2821 sql_help.c:2890 +#: sql_help.c:3024 sql_help.c:3102 sql_help.c:3180 +msgid "with_query" +msgstr "z_kwerendy" + +#: sql_help.c:2001 sql_help.c:2840 sql_help.c:2843 sql_help.c:2846 +#: sql_help.c:2850 sql_help.c:3043 sql_help.c:3046 sql_help.c:3049 +#: sql_help.c:3053 sql_help.c:3104 sql_help.c:3199 sql_help.c:3202 +#: sql_help.c:3205 sql_help.c:3209 +msgid "alias" +msgstr "alias" + +#: sql_help.c:2002 +msgid "using_list" +msgstr "lista_użycia" + +#: sql_help.c:2004 sql_help.c:2365 sql_help.c:2534 sql_help.c:3111 +msgid "cursor_name" +msgstr "nazwa_kursora" + +#: sql_help.c:2005 sql_help.c:2476 sql_help.c:3112 +msgid "output_expression" +msgstr "wyrażenie_wyjścia" + +#: sql_help.c:2006 sql_help.c:2477 sql_help.c:2824 sql_help.c:2893 +#: sql_help.c:3027 sql_help.c:3113 sql_help.c:3183 +msgid "output_name" +msgstr "nazwa_wyjścia" + +#: sql_help.c:2022 +msgid "code" +msgstr "kod" + +#: sql_help.c:2315 +msgid "parameter" +msgstr "parametr" + +#: sql_help.c:2333 sql_help.c:2334 sql_help.c:2559 +msgid "statement" +msgstr "wyrażenie" + +#: sql_help.c:2364 sql_help.c:2533 +msgid "direction" +msgstr "kierunek" + +#: sql_help.c:2366 sql_help.c:2535 +msgid "where direction can be empty or one of:" +msgstr "gdzie kierunek może być pusty lub jednym z:" + +#: sql_help.c:2367 sql_help.c:2368 sql_help.c:2369 sql_help.c:2370 +#: sql_help.c:2371 sql_help.c:2536 sql_help.c:2537 sql_help.c:2538 +#: sql_help.c:2539 sql_help.c:2540 sql_help.c:2834 sql_help.c:2836 +#: sql_help.c:2904 sql_help.c:2906 sql_help.c:3037 sql_help.c:3039 +#: sql_help.c:3142 sql_help.c:3144 sql_help.c:3193 sql_help.c:3195 +msgid "count" +msgstr "ilość" + +#: sql_help.c:2436 sql_help.c:2690 +msgid "sequence_name" +msgstr "nazwa_sekwencji" + +#: sql_help.c:2447 sql_help.c:2701 +msgid "arg_name" +msgstr "nazwa_arg" + +#: sql_help.c:2448 sql_help.c:2702 +msgid "arg_type" +msgstr "typ_arg" + +#: sql_help.c:2453 sql_help.c:2707 +msgid "loid" +msgstr "loid" + +#: sql_help.c:2485 sql_help.c:2548 sql_help.c:3088 +msgid "channel" +msgstr "kanał" + +#: sql_help.c:2507 +msgid "lockmode" +msgstr "tryb_blokady" + +#: sql_help.c:2508 +msgid "where lockmode is one of:" +msgstr "gdzie tryb_blokady jest jednym z:" + +#: sql_help.c:2549 +msgid "payload" +msgstr "ładunek" + +#: sql_help.c:2575 +msgid "old_role" +msgstr "stara_rola" + +#: sql_help.c:2576 +msgid "new_role" +msgstr "nowa_rola" + +#: sql_help.c:2592 sql_help.c:2737 sql_help.c:2745 +msgid "savepoint_name" +msgstr "nazwa_punktu_zapisu" + +#: sql_help.c:2767 +msgid "provider" +msgstr "dostawca" + +#: sql_help.c:2825 sql_help.c:2856 sql_help.c:2858 sql_help.c:2895 +#: sql_help.c:3028 sql_help.c:3059 sql_help.c:3061 sql_help.c:3184 +#: sql_help.c:3215 sql_help.c:3217 +msgid "from_item" +msgstr "element_z" + +#: sql_help.c:2829 sql_help.c:2899 sql_help.c:3032 sql_help.c:3188 +msgid "window_name" +msgstr "nazwa_okna" + +#: sql_help.c:2830 sql_help.c:2900 sql_help.c:3033 sql_help.c:3189 +msgid "window_definition" +msgstr "definicja_okna" + +#: sql_help.c:2831 sql_help.c:2842 sql_help.c:2864 sql_help.c:2901 +#: sql_help.c:3034 sql_help.c:3045 sql_help.c:3067 sql_help.c:3190 +#: sql_help.c:3201 sql_help.c:3223 +msgid "select" +msgstr "wybierz" + +#: sql_help.c:2838 sql_help.c:3041 sql_help.c:3197 +msgid "where from_item can be one of:" +msgstr "gdzie element_z może być jednym z:" + +#: sql_help.c:2841 sql_help.c:2844 sql_help.c:2847 sql_help.c:2851 +#: sql_help.c:3044 sql_help.c:3047 sql_help.c:3050 sql_help.c:3054 +#: sql_help.c:3200 sql_help.c:3203 sql_help.c:3206 sql_help.c:3210 +msgid "column_alias" +msgstr "alias_kolumny" + +#: sql_help.c:2845 sql_help.c:2862 sql_help.c:3048 sql_help.c:3065 +#: sql_help.c:3204 sql_help.c:3221 +msgid "with_query_name" +msgstr "nazwa_kwerendy_z" + +#: sql_help.c:2849 sql_help.c:2854 sql_help.c:3052 sql_help.c:3057 +#: sql_help.c:3208 sql_help.c:3213 +msgid "argument" +msgstr "argument" + +#: sql_help.c:2852 sql_help.c:2855 sql_help.c:3055 sql_help.c:3058 +#: sql_help.c:3211 sql_help.c:3214 +msgid "column_definition" +msgstr "definicja_kolumny" + +#: sql_help.c:2857 sql_help.c:3060 sql_help.c:3216 +msgid "join_type" +msgstr "typ_złączenia" + +#: sql_help.c:2859 sql_help.c:3062 sql_help.c:3218 +msgid "join_condition" +msgstr "warunek_złączenia" + +#: sql_help.c:2860 sql_help.c:3063 sql_help.c:3219 +msgid "join_column" +msgstr "kolumna_złączana" + +#: sql_help.c:2861 sql_help.c:3064 sql_help.c:3220 +msgid "and with_query is:" +msgstr "a z_kwerendą to:" + +#: sql_help.c:2865 sql_help.c:3068 sql_help.c:3224 +msgid "insert" +msgstr "wstaw" + +#: sql_help.c:2866 sql_help.c:3069 sql_help.c:3225 +msgid "update" +msgstr "modyfikuj" + +#: sql_help.c:2867 sql_help.c:3070 sql_help.c:3226 +msgid "delete" +msgstr "usuń" + +#: sql_help.c:2894 +msgid "new_table" +msgstr "nowa_tabela" + +#: sql_help.c:2919 +msgid "timezone" +msgstr "strefa_czasowa" + +#: sql_help.c:3109 +msgid "from_list" +msgstr "z_listy" + +#: sql_help.c:3140 +msgid "sort_expression" +msgstr "wyrażenie_sortowania" + +#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 +#, c-format +msgid "could not identify current directory: %s" +msgstr "nie można zidentyfikować aktualnego katalogu: %s" + +#: ../../port/exec.c:144 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "niepoprawny binarny \"%s\"" + +#: ../../port/exec.c:193 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "nie można odczytać binarnego \"%s\"" + +#: ../../port/exec.c:200 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "nie znaleziono \"%s\" do wykonania" + +#: ../../port/exec.c:255 ../../port/exec.c:291 +#, c-format +msgid "could not change directory to \"%s\"" +msgstr "nie można zmienić katalogu na \"%s\"" + +#: ../../port/exec.c:270 +#, c-format +msgid "could not read symbolic link \"%s\"" +msgstr "nie można odczytać odwołania symbolicznego \"%s\"" + +#: ../../port/exec.c:517 +#, c-format +msgid "child process exited with exit code %d" +msgstr "proces potomny zakończył działanie z kodem %d" + +#: ../../port/exec.c:521 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "proces potomny został zatrzymany przez wyjątek 0x%X" + +#: ../../port/exec.c:530 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "proces potomny został zatrzymany przez sygnał %s" + +#: ../../port/exec.c:533 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "proces potomny został zakończony przez sygnał %d" + +#: ../../port/exec.c:537 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "proces potomny zakończył działanie z nieznanym stanem %d" diff --git a/src/bin/psql/po/pt_BR.po b/src/bin/psql/po/pt_BR.po index 1182e7738b..1d971a74df 100644 --- a/src/bin/psql/po/pt_BR.po +++ b/src/bin/psql/po/pt_BR.po @@ -1,13 +1,13 @@ # Brazilian Portuguese message translation file for psql # Copyright (C) 2009 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Euler Taveira de Oliveira , 2003-2010. +# Euler Taveira de Oliveira , 2003-2012. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-09-08 23:58-0300\n" +"POT-Creation-Date: 2012-08-06 16:44-0300\n" "PO-Revision-Date: 2005-11-02 10:30-0300\n" "Last-Translator: Euler Taveira de Oliveira \n" "Language-Team: Brazilian Portuguese \n" @@ -17,164 +17,210 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n>1);\n" -#: command.c:112 +#: command.c:113 #, c-format msgid "Invalid command \\%s. Try \\? for help.\n" msgstr "Comando inválido \\%s. Tente \\? para ajuda.\n" -#: command.c:114 +#: command.c:115 #, c-format msgid "invalid command \\%s\n" msgstr "comando inválido \\%s\n" -#: command.c:125 +#: command.c:126 #, c-format msgid "\\%s: extra argument \"%s\" ignored\n" msgstr "\\%s: argumento extra \"%s\" ignorado\n" -#: command.c:267 +#: command.c:268 #, c-format msgid "could not get home directory: %s\n" msgstr "não pôde alternar para diretório base do usuário: %s\n" -#: command.c:283 +#: command.c:284 #, c-format msgid "\\%s: could not change directory to \"%s\": %s\n" msgstr "\\%s: não pôde mudar diretório para \"%s\": %s\n" -#: command.c:316 common.c:940 +#: command.c:305 common.c:493 common.c:773 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "Você não está conectado ao banco de dados.\n" + +#: command.c:312 +#, c-format +msgid "" +"You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at " +"port \"%s\".\n" +msgstr "" +"Você está conectado ao banco de dados \"%s\" como usuário \"%s\" via soquete " +"em \"%s\" na porta \"%s\".\n" + +#: command.c:315 +#, c-format +msgid "" +"You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port " +"\"%s\".\n" +msgstr "" +"Você está conectado ao banco de dados \"%s\" como usuário \"%s\" na máquina " +"\"%s\" na porta \"%s\".\n" + +#: command.c:339 common.c:940 #, c-format msgid "Time: %.3f ms\n" msgstr "Tempo: %.3f ms\n" -#: command.c:485 command.c:513 command.c:1064 +#: command.c:524 command.c:594 command.c:1297 msgid "no query buffer\n" msgstr "nenhum buffer de consulta\n" -#: command.c:555 +#: command.c:557 command.c:2519 +#, c-format +msgid "invalid line number: %s\n" +msgstr "número de linha inválido: %s\n" + +#: command.c:588 +#, c-format +msgid "The server (version %d.%d) does not support editing function source.\n" +msgstr "O servidor (versão %d.%d) não suporta edição do código da função.\n" + +#: command.c:668 msgid "No changes" msgstr "Nenhuma alteração" -#: command.c:609 +#: command.c:722 #, c-format msgid "%s: invalid encoding name or conversion procedure not found\n" msgstr "" "%s: nome da codificação é inválido ou procedimento de conversão não foi " "encontrado\n" -#: command.c:688 command.c:722 command.c:736 command.c:753 command.c:857 -#: command.c:907 command.c:1044 command.c:1075 +#: command.c:801 command.c:835 command.c:849 command.c:866 command.c:970 +#: command.c:1020 command.c:1277 command.c:1308 #, c-format msgid "\\%s: missing required argument\n" msgstr "\\%s: faltando argumento requerido\n" -#: command.c:785 +#: command.c:898 msgid "Query buffer is empty." msgstr "Buffer de consulta está vazio." -#: command.c:795 +#: command.c:908 msgid "Enter new password: " msgstr "Digite nova senha: " -#: command.c:796 +#: command.c:909 msgid "Enter it again: " msgstr "Digite-a novamente: " -#: command.c:800 +#: command.c:913 #, c-format msgid "Passwords didn't match.\n" msgstr "Senhas não correspondem.\n" -#: command.c:818 +#: command.c:931 #, c-format msgid "Password encryption failed.\n" msgstr "Criptografia de senha falhou.\n" -#: command.c:886 command.c:987 command.c:1049 +#: command.c:999 command.c:1100 command.c:1282 #, c-format msgid "\\%s: error\n" msgstr "\\%s: erro\n" -#: command.c:927 +#: command.c:1040 msgid "Query buffer reset (cleared)." msgstr "Buffer de consulta reiniciado (limpo)." -#: command.c:940 +#: command.c:1053 #, c-format msgid "Wrote history to file \"%s/%s\".\n" msgstr "Histórico escrito para arquivo \"%s/%s\".\n" -#: command.c:978 common.c:52 common.c:66 input.c:209 mainloop.c:72 -#: mainloop.c:234 print.c:137 print.c:151 +#: command.c:1091 common.c:52 common.c:66 common.c:90 input.c:209 +#: mainloop.c:72 mainloop.c:234 print.c:137 print.c:151 #, c-format msgid "out of memory\n" msgstr "sem memória\n" -#: command.c:1029 +#: command.c:1121 +#, c-format +msgid "The server (version %d.%d) does not support showing function source.\n" +msgstr "O servidor (versão %d.%d) não suporta exibição do código da função.\n" + +#: command.c:1127 +msgid "function name is required\n" +msgstr "nome de função é requerido\n" + +#: command.c:1262 msgid "Timing is on." msgstr "Tempo de execução está habilitado." -#: command.c:1031 +#: command.c:1264 msgid "Timing is off." msgstr "Tempo de execução está desabilitado." -#: command.c:1092 command.c:1112 command.c:1633 command.c:1640 command.c:1649 -#: command.c:1659 command.c:1668 command.c:1682 command.c:1699 command.c:1737 +#: command.c:1325 command.c:1345 command.c:1907 command.c:1914 command.c:1923 +#: command.c:1933 command.c:1942 command.c:1956 command.c:1973 command.c:2011 #: common.c:137 copy.c:283 copy.c:361 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" -#: command.c:1194 startup.c:159 +#: command.c:1427 startup.c:159 msgid "Password: " msgstr "Senha: " -#: command.c:1201 startup.c:162 startup.c:164 +#: command.c:1434 startup.c:162 startup.c:164 #, c-format msgid "Password for user %s: " msgstr "Senha para usuário %s: " -#: command.c:1318 command.c:2207 common.c:183 common.c:460 common.c:525 -#: common.c:816 common.c:841 common.c:925 copy.c:432 copy.c:477 copy.c:606 +#: command.c:1553 command.c:2553 common.c:183 common.c:460 common.c:525 +#: common.c:816 common.c:841 common.c:925 copy.c:432 copy.c:477 copy.c:607 #, c-format msgid "%s" msgstr "%s" -#: command.c:1322 +#: command.c:1557 msgid "Previous connection kept\n" msgstr "Conexão anterior mantida\n" -#: command.c:1326 +#: command.c:1561 #, c-format msgid "\\connect: %s" msgstr "\\connect: %s" -#: command.c:1350 +#: command.c:1594 #, c-format -msgid "You are now connected to database \"%s\"" -msgstr "Você está conectado ao banco de dados \"%s\" agora" - -#: command.c:1353 -#, c-format -msgid " on host \"%s\"" -msgstr " na máquina \"%s\"" +msgid "" +"You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" " +"at port \"%s\".\n" +msgstr "" +"Você está conectado agora ao banco de dados \"%s\" como usuário \"%s\" via " +"soquete em \"%s\" na porta \"%s\".\n" -#: command.c:1356 +#: command.c:1597 #, c-format -msgid " at port \"%s\"" -msgstr " na porta \"%s\"" +msgid "" +"You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at " +"port \"%s\".\n" +msgstr "" +"Você está conectado agora ao banco de dados \"%s\" como usuário \"%s\" na " +"máquina \"%s\" na porta \"%s\".\n" -#: command.c:1359 +#: command.c:1601 #, c-format -msgid " as user \"%s\"" -msgstr " como usuário \"%s\"" +msgid "You are now connected to database \"%s\" as user \"%s\".\n" +msgstr "" +"Você está conectado agora ao banco de dados \"%s\" como usuário \"%s\".\n" -#: command.c:1394 +#: command.c:1635 #, c-format msgid "%s (%s, server %s)\n" msgstr "%s (%s, servidor %s)\n" -#: command.c:1402 +#: command.c:1643 #, c-format msgid "" "WARNING: %s version %d.%d, server version %d.%d.\n" @@ -183,19 +229,17 @@ msgstr "" "AVISO: %s versão %d.%d, servidor versão %d.%d.\n" " Algumas funcionalidades do psql podem não funcionar.\n" -#: command.c:1432 +#: command.c:1673 #, c-format msgid "SSL connection (cipher: %s, bits: %i)\n" msgstr "conexão SSL (cifra: %s, bits: %i)\n" -#: command.c:1442 +#: command.c:1683 #, c-format msgid "SSL connection (unknown cipher)\n" -msgstr "" -"conexão SSL (cifra desconhecida)\n" -"\n" +msgstr "conexão SSL (cifra desconhecida)\n" -#: command.c:1463 +#: command.c:1704 #, c-format msgid "" "WARNING: Console code page (%u) differs from Windows code page (%u)\n" @@ -209,26 +253,34 @@ msgstr "" " referência do psql \"Notes for Windows users\" para obter " "detalhes.\n" -#: command.c:1552 +#: command.c:1788 +msgid "" +"environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a " +"line number\n" +msgstr "" +"variável de ambiente PSQL_EDITOR_LINENUMBER_ARG deve ser definida para " +"especificar um número de linha\n" + +#: command.c:1825 #, c-format msgid "could not start editor \"%s\"\n" msgstr "não pôde iniciar o editor \"%s\"\n" -#: command.c:1554 +#: command.c:1827 msgid "could not start /bin/sh\n" msgstr "não pôde iniciar /bin/sh\n" -#: command.c:1591 +#: command.c:1865 #, c-format -msgid "cannot locate temporary directory: %s" -msgstr "não pôde localizar diretório temporário: %s" +msgid "could not locate temporary directory: %s\n" +msgstr "não pôde localizar diretório temporário: %s\n" -#: command.c:1618 +#: command.c:1892 #, c-format msgid "could not open temporary file \"%s\": %s\n" msgstr "não pôde abrir arquivo temporário \"%s\": %s\n" -#: command.c:1839 +#: command.c:2122 msgid "" "\\pset: allowed formats are unaligned, aligned, wrapped, html, latex, troff-" "ms\n" @@ -236,122 +288,122 @@ msgstr "" "\\pset: formatos permitidos são unaligned, aligned, wrapped, html, latex, " "troff-ms\n" -#: command.c:1844 +#: command.c:2127 #, c-format msgid "Output format is %s.\n" msgstr "Formato de saída é %s.\n" -#: command.c:1860 +#: command.c:2143 msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" msgstr "\\pset: estilos de linha permitidos são ascii, old-ascii, unicode\n" -#: command.c:1865 +#: command.c:2148 #, c-format msgid "Line style is %s.\n" msgstr "Estilo de linha é %s.\n" -#: command.c:1876 +#: command.c:2159 #, c-format msgid "Border style is %d.\n" msgstr "Estilo de borda é %d.\n" -#: command.c:1888 +#: command.c:2171 #, c-format msgid "Expanded display is on.\n" msgstr "Exibição expandida está habilitada.\n" -#: command.c:1889 +#: command.c:2172 #, c-format msgid "Expanded display is off.\n" msgstr "Exibição expandida está desabilitada.\n" -#: command.c:1902 +#: command.c:2185 msgid "Showing locale-adjusted numeric output." msgstr "Exibindo formato numérico baseado na configuração regional." -#: command.c:1904 +#: command.c:2187 msgid "Locale-adjusted numeric output is off." msgstr "Formato numérico baseado no idioma está desabilitado." -#: command.c:1917 +#: command.c:2200 #, c-format msgid "Null display is \"%s\".\n" msgstr "Exibição nula é \"%s\".\n" -#: command.c:1929 +#: command.c:2212 #, c-format msgid "Field separator is \"%s\".\n" msgstr "Separador de campos é \"%s\".\n" -#: command.c:1943 +#: command.c:2226 #, c-format msgid "Record separator is ." msgstr "Separador de registros é ." -#: command.c:1945 +#: command.c:2228 #, c-format msgid "Record separator is \"%s\".\n" msgstr "Separador de registros é \"%s\".\n" -#: command.c:1959 +#: command.c:2242 msgid "Showing only tuples." msgstr "Mostrando apenas tuplas." -#: command.c:1961 +#: command.c:2244 msgid "Tuples only is off." msgstr "Somente tuplas está desabilitado." -#: command.c:1977 +#: command.c:2260 #, c-format msgid "Title is \"%s\".\n" msgstr "Título é \"%s\".\n" -#: command.c:1979 +#: command.c:2262 #, c-format msgid "Title is unset.\n" msgstr "Título não está definido.\n" -#: command.c:1995 +#: command.c:2278 #, c-format msgid "Table attribute is \"%s\".\n" msgstr "Atributo de tabela é \"%s\".\n" -#: command.c:1997 +#: command.c:2280 #, c-format msgid "Table attributes unset.\n" msgstr "Atributos de tabela não estão definidos.\n" -#: command.c:2018 +#: command.c:2301 msgid "Pager is used for long output." msgstr "Paginação é usada para saída longa." -#: command.c:2020 +#: command.c:2303 msgid "Pager is always used." msgstr "Paginação é sempre utilizada." -#: command.c:2022 +#: command.c:2305 msgid "Pager usage is off." msgstr "Uso de paginação está desabilitado." -#: command.c:2036 +#: command.c:2319 msgid "Default footer is on." msgstr "Rodapé padrão está habilitado." -#: command.c:2038 +#: command.c:2321 msgid "Default footer is off." msgstr "Rodapé padrão está desabilitado." -#: command.c:2049 +#: command.c:2332 #, c-format msgid "Target width for \"wrapped\" format is %d.\n" msgstr "largura para formato \"wrapped\" é %d.\n" -#: command.c:2054 +#: command.c:2337 #, c-format msgid "\\pset: unknown option: %s\n" msgstr "\\pset: opção desconhecida: %s\n" -#: command.c:2108 +#: command.c:2391 msgid "\\!: failed\n" msgstr "\\!: falhou\n" @@ -360,10 +412,6 @@ msgstr "\\!: falhou\n" msgid "%s: pg_strdup: cannot duplicate null pointer (internal error)\n" msgstr "%s: pg_strdup: não pode duplicar ponteiro nulo (erro interno)\n" -#: common.c:90 -msgid "out of memory" -msgstr "sem memória" - #: common.c:343 msgid "connection to server was lost\n" msgstr "conexão com servidor foi perdida\n" @@ -380,10 +428,6 @@ msgstr "Falhou.\n" msgid "Succeeded.\n" msgstr "Sucedido.\n" -#: common.c:493 common.c:773 -msgid "You are currently not connected to a database.\n" -msgstr "Você não está conectado ao banco de dados.\n" - #: common.c:499 common.c:506 common.c:799 #, c-format msgid "" @@ -491,24 +535,24 @@ msgstr "" "Informe os dados a serem copiados seguido pelo caracter de nova linha.\n" "Finalize com uma barra invertida e um ponto na linha." -#: copy.c:599 +#: copy.c:600 msgid "aborted because of read failure" msgstr "interrompido devido a falha de leitura" -#: help.c:52 +#: help.c:48 msgid "on" msgstr "habilitado" -#: help.c:52 +#: help.c:48 msgid "off" msgstr "desabilitado" -#: help.c:74 +#: help.c:70 #, c-format msgid "could not get current user name: %s\n" msgstr "não pôde obter nome de usuário atual: %s\n" -#: help.c:86 +#: help.c:82 #, c-format msgid "" "psql is the PostgreSQL interactive terminal.\n" @@ -517,12 +561,12 @@ msgstr "" "psql é o terminal iterativo do PostgreSQL.\n" "\n" -#: help.c:87 +#: help.c:83 #, c-format msgid "Usage:\n" msgstr "Uso:\n" -#: help.c:88 +#: help.c:84 #, c-format msgid "" " psql [OPTION]... [DBNAME [USERNAME]]\n" @@ -531,12 +575,12 @@ msgstr "" " psql [OPÇÃO]... [NOMEBD [USUÁRIO]]\n" "\n" -#: help.c:90 +#: help.c:86 #, c-format msgid "General options:\n" msgstr "Opções gerais:\n" -#: help.c:95 +#: help.c:91 #, c-format msgid "" " -c, --command=COMMAND run only single command (SQL or internal) and " @@ -545,7 +589,7 @@ msgstr "" " -c, --command=COMANDO executa somente um comando (SQL ou interno) e " "termina\n" -#: help.c:96 +#: help.c:92 #, c-format msgid "" " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" @@ -553,18 +597,18 @@ msgstr "" " -d, --dbname=NOMEBD especifica o nome do banco de dados ao qual quer " "se conectar (padrão: \"%s\")\n" -#: help.c:97 +#: help.c:93 #, c-format msgid " -f, --file=FILENAME execute commands from file, then exit\n" msgstr " -f, --file=ARQUIVO executa comandos de um arquivo e termina\n" -#: help.c:98 +#: help.c:94 #, c-format msgid " -l, --list list available databases, then exit\n" msgstr "" " -l, --list lista os bancos de dados disponíveis e termina\n" -#: help.c:99 +#: help.c:95 #, c-format msgid "" " -v, --set=, --variable=NAME=VALUE\n" @@ -573,13 +617,13 @@ msgstr "" " -v, --set=, --variable=NOME=VALOR\n" " define variável do psql NOME como VALOR\n" -#: help.c:101 +#: help.c:97 #, c-format msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" msgstr "" " -X, --no-psqlrc não lê o arquivo de inicialização (~/.psqlrc)\n" -#: help.c:102 +#: help.c:98 #, c-format msgid "" " -1 (\"one\"), --single-transaction\n" @@ -589,18 +633,18 @@ msgstr "" " executa comandos do arquivo como uma transação " "única\n" -#: help.c:104 +#: help.c:100 #, c-format msgid " --help show this help, then exit\n" msgstr " --help mostra esta ajuda e termina\n" -#: help.c:105 +#: help.c:101 #, c-format msgid " --version output version information, then exit\n" msgstr "" " --version mostra informação sobre a versão e termina\n" -#: help.c:107 +#: help.c:103 #, c-format msgid "" "\n" @@ -609,29 +653,29 @@ msgstr "" "\n" "Opções de entrada e saída:\n" -#: help.c:108 +#: help.c:104 #, c-format msgid " -a, --echo-all echo all input from script\n" msgstr " -a, --echo-all mostra toda entrada do script\n" -#: help.c:109 +#: help.c:105 #, c-format msgid " -e, --echo-queries echo commands sent to server\n" msgstr " -e, --echo-queries mostra comandos enviados ao servidor\n" -#: help.c:110 +#: help.c:106 #, c-format msgid "" " -E, --echo-hidden display queries that internal commands generate\n" msgstr "" " -E, --echo-hidden mostra consultas que os comandos internos geram\n" -#: help.c:111 +#: help.c:107 #, c-format msgid " -L, --log-file=FILENAME send session log to file\n" msgstr " -L, --log-file=ARQUIVO envia log da sessão para arquivo\n" -#: help.c:112 +#: help.c:108 #, c-format msgid "" " -n, --no-readline disable enhanced command line editing (readline)\n" @@ -639,14 +683,14 @@ msgstr "" " -n, --no-readline desabilita edição de linha de comando melhorada " "(readline)\n" -#: help.c:113 +#: help.c:109 #, c-format msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" msgstr "" " -o, --output=ARQUIVO envia resultados da consulta para um arquivo (ou |" "pipe)\n" -#: help.c:114 +#: help.c:110 #, c-format msgid "" " -q, --quiet run quietly (no messages, only query output)\n" @@ -654,13 +698,13 @@ msgstr "" " -q, --quiet executa silenciosamente (sem mensagens, somente " "saída da consulta)\n" -#: help.c:115 +#: help.c:111 #, c-format msgid " -s, --single-step single-step mode (confirm each query)\n" msgstr "" " -s, --single-step modo passo-a-passo (confirma cada consulta)\n" -#: help.c:116 +#: help.c:112 #, c-format msgid "" " -S, --single-line single-line mode (end of line terminates SQL " @@ -669,7 +713,7 @@ msgstr "" " -S, --single-line modo linha única (fim da linha termina o comando " "SQL)\n" -#: help.c:118 +#: help.c:114 #, c-format msgid "" "\n" @@ -678,12 +722,12 @@ msgstr "" "\n" "Opções para formato de saída:\n" -#: help.c:119 +#: help.c:115 #, c-format msgid " -A, --no-align unaligned table output mode\n" msgstr " -A, --no-align modo de saída em tabela desalinhada\n" -#: help.c:120 +#: help.c:116 #, c-format msgid "" " -F, --field-separator=STRING\n" @@ -692,12 +736,12 @@ msgstr "" " -F, --field-separator=SEPARADOR\n" " define separador de campos (padrão: \"%s\")\n" -#: help.c:123 +#: help.c:119 #, c-format msgid " -H, --html HTML table output mode\n" msgstr " -H, --html modo de saída em tabela HTML\n" -#: help.c:124 +#: help.c:120 #, c-format msgid "" " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset " @@ -706,7 +750,7 @@ msgstr "" " -P, --pset=VAR[=ARG] define opção de exibição VAR para ARG (veja " "comando \\pset)\n" -#: help.c:125 +#: help.c:121 #, c-format msgid "" " -R, --record-separator=STRING\n" @@ -716,12 +760,12 @@ msgstr "" " define separador de registros (padrão: nova " "linha)\n" -#: help.c:127 +#: help.c:123 #, c-format msgid " -t, --tuples-only print rows only\n" msgstr " -t, --tuples-only exibe somente registros\n" -#: help.c:128 +#: help.c:124 #, c-format msgid "" " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, " @@ -730,12 +774,12 @@ msgstr "" " -T, --table-attr=TEXTO define atributos do marcador table do HTML (i.e. " "width, border)\n" -#: help.c:129 +#: help.c:125 #, c-format msgid " -x, --expanded turn on expanded table output\n" msgstr " -x, --expanded habilita saída em tabela expandida\n" -#: help.c:131 +#: help.c:127 #, c-format msgid "" "\n" @@ -744,7 +788,7 @@ msgstr "" "\n" "Opções de conexão:\n" -#: help.c:134 +#: help.c:130 #, c-format msgid "" " -h, --host=HOSTNAME database server host or socket directory " @@ -753,30 +797,30 @@ msgstr "" " -h, --host=MÁQUINA máquina do servidor de banco de dados ou " "diretório do soquete (padrão: \"%s\")\n" -#: help.c:135 +#: help.c:131 msgid "local socket" msgstr "soquete local" -#: help.c:138 +#: help.c:134 #, c-format msgid " -p, --port=PORT database server port (default: \"%s\")\n" msgstr "" " -p, --port=PORTA porta do servidor de banco de dados (padrão: \"%s" "\")\n" -#: help.c:144 +#: help.c:140 #, c-format msgid " -U, --username=USERNAME database user name (default: \"%s\")\n" msgstr "" " -U, --username=USUÁRIO nome de usuário do banco de dados (padrão: \"%s" "\")\n" -#: help.c:145 +#: help.c:141 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password nunca pergunta senha\n" -#: help.c:146 +#: help.c:142 #, c-format msgid "" " -W, --password force password prompt (should happen " @@ -784,7 +828,7 @@ msgid "" msgstr "" " -W, --password pergunta senha (pode ocorrer automaticamente)\n" -#: help.c:148 +#: help.c:144 #, c-format msgid "" "\n" @@ -801,24 +845,24 @@ msgstr "" "documentação do PostgreSQL.\n" "\n" -#: help.c:151 +#: help.c:147 #, c-format msgid "Report bugs to .\n" msgstr "Relate erros a .\n" -#: help.c:169 +#: help.c:165 #, c-format msgid "General\n" msgstr "Geral\n" -#: help.c:170 +#: help.c:166 #, c-format msgid "" " \\copyright show PostgreSQL usage and distribution terms\n" msgstr "" " \\copyright mostra termos de uso e distribuição do PostgreSQL\n" -#: help.c:171 +#: help.c:167 #, c-format msgid "" " \\g [FILE] or ; execute query (and send results to file or |pipe)\n" @@ -826,7 +870,7 @@ msgstr "" " \\g [ARQUIVO] ou ; executa consulta (e envia os resultados para " "arquivo ou |pipe)\n" -#: help.c:172 +#: help.c:168 #, c-format msgid "" " \\h [NAME] help on syntax of SQL commands, * for all " @@ -835,58 +879,59 @@ msgstr "" " \\h [NOME] mostra sintaxe dos comandos SQL, * para todos os " "comandos\n" -#: help.c:173 +#: help.c:169 #, c-format msgid " \\q quit psql\n" msgstr " \\q sair do psql\n" -#: help.c:176 +#: help.c:172 #, c-format msgid "Query Buffer\n" msgstr "Buffer de consulta\n" -#: help.c:177 +#: help.c:173 #, c-format msgid "" -" \\e [FILE] edit the query buffer (or file) with external " +" \\e [FILE] [LINE] edit the query buffer (or file) with external " "editor\n" msgstr "" -" \\e [ARQUIVO] edita o buffer de consulta (ou arquivo) com um " +" \\e [ARQUIVO] [LINHA] edita o buffer de consulta (ou arquivo) com um " "editor externo\n" -#: help.c:178 +#: help.c:174 #, c-format msgid "" -" \\ef [FUNCNAME] edit function definition with external editor\n" +" \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" msgstr "" -" \\ef [NOMEFUNÇÃO] edita a definição de função com um editor externo\n" +" \\ef [NOMEFUNÇÃO [LINHA]] edita a definição de função com um editor " +"externo\n" -#: help.c:179 +#: help.c:175 #, c-format msgid " \\p show the contents of the query buffer\n" msgstr " \\p mostra o conteúdo do buffer de consulta\n" -#: help.c:180 +#: help.c:176 #, c-format msgid " \\r reset (clear) the query buffer\n" msgstr " \\r reinicia (apaga) o buffer de consulta\n" -#: help.c:182 +#: help.c:178 #, c-format msgid " \\s [FILE] display history or save it to file\n" msgstr " \\s [ARQUIVO] mostra histórico ou grava-o em um arquivo\n" -#: help.c:184 +#: help.c:180 #, c-format msgid " \\w FILE write query buffer to file\n" msgstr " \\w [ARQUIVO] escreve o buffer de consulta para arquivo\n" -#: help.c:187 +#: help.c:183 #, c-format msgid "Input/Output\n" msgstr "Entrada/Saída\n" -#: help.c:188 +#: help.c:184 #, c-format msgid "" " \\copy ... perform SQL COPY with data stream to the client " @@ -895,25 +940,25 @@ msgstr "" " \\copy ... realiza comando SQL COPY dos dados para máquina " "cliente\n" -#: help.c:189 +#: help.c:185 #, c-format msgid " \\echo [STRING] write string to standard output\n" msgstr "" " \\echo [TEXTO] escreve cadeia de caracteres na saída padrão\n" -#: help.c:190 +#: help.c:186 #, c-format msgid " \\i FILE execute commands from file\n" msgstr " \\i ARQUIVO executa comandos de um arquivo\n" -#: help.c:191 +#: help.c:187 #, c-format msgid " \\o [FILE] send all query results to file or |pipe\n" msgstr "" " \\o [ARQUIVO] envia todos os resultados da consulta para arquivo " "ou |pipe\n" -#: help.c:192 +#: help.c:188 #, c-format msgid "" " \\qecho [STRING] write string to query output stream (see \\o)\n" @@ -921,78 +966,83 @@ msgstr "" " \\qecho [TEXTO] escreve cadeia de caracteres para saída da " "consulta (veja \\o)\n" -#: help.c:195 +#: help.c:191 #, c-format msgid "Informational\n" msgstr "Informativo\n" -#: help.c:196 +#: help.c:192 #, c-format msgid " (options: S = show system objects, + = additional detail)\n" msgstr " (opções: S = mostra objetos do sistema, + = detalhes)\n" -#: help.c:197 +#: help.c:193 #, c-format msgid " \\d[S+] list tables, views, and sequences\n" msgstr " \\d[S+] lista tabelas, visões e sequências\n" -#: help.c:198 +#: help.c:194 #, c-format msgid " \\d[S+] NAME describe table, view, sequence, or index\n" msgstr "" " \\d[S+] NOME descreve tabela, visão, sequência ou índice\n" -#: help.c:199 +#: help.c:195 #, c-format msgid " \\da[S] [PATTERN] list aggregates\n" msgstr " \\da[S] [MODELO] lista funções de agregação\n" -#: help.c:200 +#: help.c:196 #, c-format msgid " \\db[+] [PATTERN] list tablespaces\n" msgstr " \\db[+] [MODELO] lista tablespaces\n" -#: help.c:201 +#: help.c:197 #, c-format msgid " \\dc[S] [PATTERN] list conversions\n" msgstr " \\dc[S] [MODELO] lista conversões\n" -#: help.c:202 +#: help.c:198 #, c-format msgid " \\dC [PATTERN] list casts\n" msgstr " \\dC [MODELO] lista conversões de tipos\n" -#: help.c:203 +#: help.c:199 #, c-format msgid " \\dd[S] [PATTERN] show comments on objects\n" msgstr " \\dd[S] [MODELO] mostra comentário do objeto\n" -#: help.c:204 +#: help.c:200 #, c-format msgid " \\ddp [PATTERN] list default privileges\n" msgstr " \\ddp [MODELO] lista privilégios padrão\n" -#: help.c:205 +#: help.c:201 #, c-format msgid " \\dD[S] [PATTERN] list domains\n" msgstr " \\dD[S] [MODELO] lista domínios\n" -#: help.c:206 +#: help.c:202 +#, c-format +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [MODELO] lista tabelas externas\n" + +#: help.c:203 #, c-format msgid " \\des[+] [PATTERN] list foreign servers\n" msgstr " \\des[+] [MODELO] lista servidores externos\n" -#: help.c:207 +#: help.c:204 #, c-format msgid " \\deu[+] [PATTERN] list user mappings\n" msgstr " \\deu[+] [MODELO] lista mapeamento de usuários\n" -#: help.c:208 +#: help.c:205 #, c-format msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" msgstr " \\dew[+] [MODELO] lista adaptadores de dados externos\n" -#: help.c:209 +#: help.c:206 #, c-format msgid "" " \\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions\n" @@ -1000,52 +1050,62 @@ msgstr "" " \\df[antw][S+] [MODELO] lista funções [somente agr/normal/gatilho/" "deslizante]\n" -#: help.c:210 +#: help.c:207 #, c-format msgid " \\dF[+] [PATTERN] list text search configurations\n" msgstr " \\dF[+] [MODELO] lista configurações de busca textual\n" -#: help.c:211 +#: help.c:208 #, c-format msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" msgstr " \\dFd[+] [MODELO] lista dicionários de busca textual\n" -#: help.c:212 +#: help.c:209 #, c-format msgid " \\dFp[+] [PATTERN] list text search parsers\n" msgstr " \\dFp[+] [MODELO] lista analisadores de busca textual\n" -#: help.c:213 +#: help.c:210 #, c-format msgid " \\dFt[+] [PATTERN] list text search templates\n" msgstr " \\dFt[+] [MODELO] lista modelos de busca textual\n" -#: help.c:214 +#: help.c:211 #, c-format -msgid " \\dg[+] [PATTERN] list roles (groups)\n" -msgstr " \\dg [MODELO] lista roles (grupos)\n" +msgid " \\dg[+] [PATTERN] list roles\n" +msgstr " \\dg[+] [MODELO] lista roles\n" -#: help.c:215 +#: help.c:212 #, c-format msgid " \\di[S+] [PATTERN] list indexes\n" msgstr " \\di[S+] [MODELO] lista índices\n" -#: help.c:216 +#: help.c:213 #, c-format msgid " \\dl list large objects, same as \\lo_list\n" msgstr " \\dl lista objetos grandes, mesmo que \\lo_list\n" -#: help.c:217 +#: help.c:214 #, c-format -msgid " \\dn[+] [PATTERN] list schemas\n" -msgstr " \\dn[+] [MODELO] lista esquemas\n" +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [MODELO] lista linguagens procedurais\n" -#: help.c:218 +#: help.c:215 +#, c-format +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [MODELO] lista esquemas\n" + +#: help.c:216 #, c-format msgid " \\do[S] [PATTERN] list operators\n" msgstr " \\do[S] [MODELO] lista operadores\n" -#: help.c:219 +#: help.c:217 +#, c-format +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [MODELO] lista ordenações\n" + +#: help.c:218 #, c-format msgid "" " \\dp [PATTERN] list table, view, and sequence access privileges\n" @@ -1053,53 +1113,68 @@ msgstr "" " \\dp [MODELO] lista privilégios de acesso de tabelas, visões e " "sequências\n" -#: help.c:220 +#: help.c:219 #, c-format msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n" msgstr "" " \\drds [MOD1 [MOD2]] lista configurações de roles por banco de dados\n" -#: help.c:221 +#: help.c:220 #, c-format msgid " \\ds[S+] [PATTERN] list sequences\n" msgstr " \\ds[S+] [MODELO] lista sequências\n" -#: help.c:222 +#: help.c:221 #, c-format msgid " \\dt[S+] [PATTERN] list tables\n" msgstr " \\dt[S+] [MODELO] lista tabelas\n" -#: help.c:223 +#: help.c:222 #, c-format msgid " \\dT[S+] [PATTERN] list data types\n" msgstr " \\dT[S+] [MODELO] lista tipos de dados\n" -#: help.c:224 +#: help.c:223 #, c-format -msgid " \\du[+] [PATTERN] list roles (users)\n" -msgstr " \\du [MODELO] lista roles (usuários)\n" +msgid " \\du[+] [PATTERN] list roles\n" +msgstr " \\du[+] [MODELO] lista roles\n" -#: help.c:225 +#: help.c:224 #, c-format msgid " \\dv[S+] [PATTERN] list views\n" msgstr " \\dv[S+] [MODELO] lista visões\n" +#: help.c:225 +#, c-format +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [MODELO] lista tabelas externas\n" + #: help.c:226 #, c-format +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [MODELO] lista extensões\n" + +#: help.c:227 +#, c-format msgid " \\l[+] list all databases\n" msgstr " \\l[+] lista todos os bancos de dados\n" -#: help.c:227 +#: help.c:228 +#, c-format +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] NOMEFUNÇÃO edita a definição da função\n" + +#: help.c:229 #, c-format msgid " \\z [PATTERN] same as \\dp\n" msgstr " \\z [MODELO] mesmo que \\dp\n" -#: help.c:230 +#: help.c:232 #, c-format msgid "Formatting\n" msgstr "Formatação\n" -#: help.c:231 +#: help.c:233 #, c-format msgid "" " \\a toggle between unaligned and aligned output mode\n" @@ -1107,14 +1182,14 @@ msgstr "" " \\a alterna entre modo de saída desalinhado e " "alinhado\n" -#: help.c:232 +#: help.c:234 #, c-format msgid " \\C [STRING] set table title, or unset if none\n" msgstr "" " \\C [TEXTO] define o título da tabela, ou apaga caso nada seja " "especificado\n" -#: help.c:233 +#: help.c:235 #, c-format msgid "" " \\f [STRING] show or set field separator for unaligned query " @@ -1123,13 +1198,13 @@ msgstr "" " \\f [TEXTO] mostra ou define separador de campos para saída de " "consulta desalinhada\n" -#: help.c:234 +#: help.c:236 #, c-format msgid " \\H toggle HTML output mode (currently %s)\n" msgstr "" " \\H alterna para modo de saída em HTML (atual %s)\n" -#: help.c:236 +#: help.c:238 #, c-format msgid "" " \\pset NAME [VALUE] set table output option\n" @@ -1144,12 +1219,12 @@ msgstr "" " numericlocale|recordsep|tuples_only|title|tableattr|" "pager})\n" -#: help.c:239 +#: help.c:241 #, c-format msgid " \\t [on|off] show only rows (currently %s)\n" msgstr " \\t [on|off] mostra somente registros (atual %s)\n" -#: help.c:241 +#: help.c:243 #, c-format msgid "" " \\T [STRING] set HTML
tag attributes, or unset if none\n" @@ -1157,17 +1232,17 @@ msgstr "" " \\T [TEXTO] define atributos do marcador HTML
ou apaga " "caso nada seja especificado\n" -#: help.c:242 +#: help.c:244 #, c-format msgid " \\x [on|off] toggle expanded output (currently %s)\n" msgstr " \\x [on|off] alterna para saída expandida (atual %s)\n" -#: help.c:246 +#: help.c:248 #, c-format msgid "Connection\n" msgstr "Conexão\n" -#: help.c:247 +#: help.c:249 #, c-format msgid "" " \\c[onnect] [DBNAME|- USER|- HOST|- PORT|-]\n" @@ -1176,34 +1251,40 @@ msgstr "" " \\c[onnect] [NOMEBD|- USUÁRIO|- MÁQUINA|- PORTA|-]\n" " conecta a um outro banco de dados (atual \"%s\")\n" -#: help.c:250 +#: help.c:252 #, c-format msgid " \\encoding [ENCODING] show or set client encoding\n" msgstr " \\encoding [CODIFICAÇÃO] mostra ou define codificação do cliente\n" -#: help.c:251 +#: help.c:253 #, c-format msgid " \\password [USERNAME] securely change the password for a user\n" msgstr " \\password [USUÁRIO] altera a senha de um usuário com segurança\n" #: help.c:254 #, c-format +msgid "" +" \\conninfo display information about current connection\n" +msgstr " \\conninfo mostra informação sobre conexão atual\n" + +#: help.c:257 +#, c-format msgid "Operating System\n" msgstr "Sistema Operacional\n" -#: help.c:255 +#: help.c:258 #, c-format msgid " \\cd [DIR] change the current working directory\n" msgstr " \\cd [DIRETÓRIO] muda o diretório de trabalho atual\n" -#: help.c:256 +#: help.c:259 #, c-format msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" msgstr "" " \\timing [on|off] alterna para duração da execução de comandos " "(atualmente %s)\n" -#: help.c:258 +#: help.c:261 #, c-format msgid "" " \\! [COMMAND] execute command in shell or start interactive " @@ -1212,19 +1293,19 @@ msgstr "" " \\! [COMANDO] executa comando na shell ou inicia shell " "iterativa\n" -#: help.c:261 +#: help.c:264 #, c-format msgid "Variables\n" msgstr "Variáveis\n" -#: help.c:262 +#: help.c:265 #, c-format msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" msgstr "" " \\prompt [TEXTO] NOME pergunta o usuário ao definir uma variável " "interna\n" -#: help.c:263 +#: help.c:266 #, c-format msgid "" " \\set [NAME [VALUE]] set internal variable, or list all if no " @@ -1233,17 +1314,17 @@ msgstr "" " \\set [NOME [VALOR]] define variável interna ou lista todos caso não " "tenha parâmetros\n" -#: help.c:264 +#: help.c:267 #, c-format msgid " \\unset NAME unset (delete) internal variable\n" msgstr " \\unset NOME apaga (exclui) variável interna\n" -#: help.c:267 +#: help.c:270 #, c-format msgid "Large Objects\n" msgstr "Objetos Grandes\n" -#: help.c:268 +#: help.c:271 #, c-format msgid "" " \\lo_export LOBOID FILE\n" @@ -1256,11 +1337,11 @@ msgstr "" " \\lo_list\n" " \\lo_unlink OIDLOB operações com objetos grandes\n" -#: help.c:321 +#: help.c:318 msgid "Available help:\n" msgstr "Ajuda disponível:\n" -#: help.c:410 +#: help.c:402 #, c-format msgid "" "Command: %s\n" @@ -1275,7 +1356,7 @@ msgstr "" "%s\n" "\n" -#: help.c:426 +#: help.c:418 #, c-format msgid "" "No help available for \"%s\".\n" @@ -1317,16 +1398,17 @@ msgstr "%s: status da transação é desconhecido\n" msgid "ID" msgstr "ID" -#: large_obj.c:290 describe.c:146 describe.c:334 describe.c:613 describe.c:762 -#: describe.c:2381 describe.c:2681 describe.c:3310 describe.c:3369 +#: large_obj.c:290 describe.c:147 describe.c:335 describe.c:637 describe.c:787 +#: describe.c:2513 describe.c:2631 describe.c:2975 describe.c:3606 +#: describe.c:3671 msgid "Owner" msgstr "Dono" -#: large_obj.c:291 large_obj.c:301 describe.c:95 describe.c:158 describe.c:337 -#: describe.c:490 describe.c:566 describe.c:637 describe.c:827 describe.c:1318 -#: describe.c:2205 describe.c:2395 describe.c:2689 describe.c:2751 -#: describe.c:2887 describe.c:2926 describe.c:2993 describe.c:3052 -#: describe.c:3061 describe.c:3120 +#: large_obj.c:291 large_obj.c:301 describe.c:96 describe.c:159 describe.c:338 +#: describe.c:501 describe.c:590 describe.c:661 describe.c:852 describe.c:1382 +#: describe.c:2330 describe.c:2537 describe.c:2918 describe.c:2983 +#: describe.c:3048 describe.c:3184 describe.c:3223 describe.c:3290 +#: describe.c:3349 describe.c:3358 describe.c:3417 describe.c:3856 msgid "Description" msgstr "Descrição" @@ -1395,12 +1477,12 @@ msgid_plural "(%lu rows)" msgstr[0] "(%lu registro)" msgstr[1] "(%lu registros)" -#: startup.c:237 +#: startup.c:243 #, c-format msgid "%s: could not open log file \"%s\": %s\n" msgstr "%s: não pôde abrir arquivo de log \"%s\": %s\n" -#: startup.c:299 +#: startup.c:305 #, c-format msgid "" "Type \"help\" for help.\n" @@ -1409,720 +1491,784 @@ msgstr "" "Digite \"help\" para ajuda.\n" "\n" -#: startup.c:445 +#: startup.c:451 #, c-format msgid "%s: could not set printing parameter \"%s\"\n" msgstr "%s: não pôde definir parâmetro de exibição \"%s\"\n" -#: startup.c:484 +#: startup.c:490 #, c-format msgid "%s: could not delete variable \"%s\"\n" msgstr "%s: não pôde apagar variável \"%s\"\n" -#: startup.c:494 +#: startup.c:500 #, c-format msgid "%s: could not set variable \"%s\"\n" msgstr "%s: não pôde definir variável \"%s\"\n" -#: startup.c:531 startup.c:537 +#: startup.c:537 startup.c:543 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Tente \"%s --help\" para obter informações adicionais.\n" -#: startup.c:554 +#: startup.c:560 #, c-format msgid "%s: warning: extra command-line argument \"%s\" ignored\n" msgstr "%s: aviso: argumento extra de linha de comando \"%s\" ignorado\n" -#: startup.c:619 +#: startup.c:625 msgid "contains support for command-line editing" msgstr "contém suporte a edição em linha de comando" -#: describe.c:68 describe.c:235 describe.c:462 describe.c:561 describe.c:682 -#: describe.c:763 describe.c:824 describe.c:2373 describe.c:2494 -#: describe.c:2549 describe.c:2749 describe.c:2976 describe.c:3048 -#: describe.c:3059 describe.c:3118 +#: describe.c:69 describe.c:236 describe.c:463 describe.c:585 describe.c:706 +#: describe.c:788 describe.c:849 describe.c:2504 describe.c:2698 +#: describe.c:2768 describe.c:2910 describe.c:3046 describe.c:3273 +#: describe.c:3345 describe.c:3356 describe.c:3415 describe.c:3789 +#: describe.c:3855 msgid "Schema" msgstr "Esquema" -#: describe.c:69 describe.c:145 describe.c:236 describe.c:463 describe.c:562 -#: describe.c:612 describe.c:683 describe.c:825 describe.c:2374 -#: describe.c:2495 describe.c:2550 describe.c:2680 describe.c:2750 -#: describe.c:2977 describe.c:3049 describe.c:3060 describe.c:3119 -#: describe.c:3309 describe.c:3368 +#: describe.c:70 describe.c:146 describe.c:237 describe.c:464 describe.c:586 +#: describe.c:636 describe.c:707 describe.c:850 describe.c:2505 +#: describe.c:2627 describe.c:2699 describe.c:2769 describe.c:2911 +#: describe.c:2974 describe.c:3047 describe.c:3274 describe.c:3346 +#: describe.c:3357 describe.c:3416 describe.c:3605 describe.c:3670 +#: describe.c:3853 msgid "Name" msgstr "Nome" -#: describe.c:70 describe.c:248 describe.c:294 describe.c:311 +#: describe.c:71 describe.c:249 describe.c:295 describe.c:312 msgid "Result data type" msgstr "Tipo de dado do resultado" -#: describe.c:84 describe.c:88 describe.c:249 describe.c:295 describe.c:312 +#: describe.c:85 describe.c:89 describe.c:250 describe.c:296 describe.c:313 msgid "Argument data types" msgstr "Tipos de dado do argumento" -#: describe.c:113 +#: describe.c:114 msgid "List of aggregate functions" msgstr "Lista das funções de agregação" -#: describe.c:134 +#: describe.c:135 #, c-format msgid "The server (version %d.%d) does not support tablespaces.\n" msgstr "O servidor (versão %d.%d) não suporta tablespaces.\n" -#: describe.c:147 +#: describe.c:148 msgid "Location" msgstr "Local" -#: describe.c:175 +#: describe.c:176 msgid "List of tablespaces" msgstr "Lista das tablespaces" -#: describe.c:212 +#: describe.c:213 #, c-format msgid "\\df only takes [antwS+] as options\n" msgstr "\\df só possui as opções [antwS+]\n" -#: describe.c:218 +#: describe.c:219 #, c-format msgid "\\df does not take a \"w\" option with server version %d.%d\n" msgstr "\\df não possui a opção \"w\" em um servidor na versão %d.%d.\n" #. translator: "agg" is short for "aggregate" -#: describe.c:251 describe.c:297 describe.c:314 +#: describe.c:252 describe.c:298 describe.c:315 msgid "agg" msgstr "agr" -#: describe.c:252 +#: describe.c:253 msgid "window" msgstr "deslizante" -#: describe.c:253 describe.c:298 describe.c:315 describe.c:964 +#: describe.c:254 describe.c:299 describe.c:316 describe.c:990 msgid "trigger" msgstr "gatilho" -#: describe.c:254 describe.c:299 describe.c:316 +#: describe.c:255 describe.c:300 describe.c:317 msgid "normal" msgstr "normal" -#: describe.c:255 describe.c:300 describe.c:317 describe.c:685 describe.c:767 -#: describe.c:1299 describe.c:2380 describe.c:2496 describe.c:3381 +#: describe.c:256 describe.c:301 describe.c:318 describe.c:710 describe.c:792 +#: describe.c:1362 describe.c:2512 describe.c:2700 describe.c:3683 msgid "Type" msgstr "Tipo" -#: describe.c:330 +#: describe.c:331 msgid "immutable" msgstr "imutável" -#: describe.c:331 +#: describe.c:332 msgid "stable" msgstr "estável" -#: describe.c:332 +#: describe.c:333 msgid "volatile" msgstr "volátil" -#: describe.c:333 +#: describe.c:334 msgid "Volatility" msgstr "Volatilidade" -#: describe.c:335 +#: describe.c:336 msgid "Language" msgstr "Linguagem" -#: describe.c:336 +#: describe.c:337 msgid "Source code" msgstr "Código fonte" -#: describe.c:434 +#: describe.c:435 msgid "List of functions" msgstr "Lista de funções" -#: describe.c:473 +#: describe.c:474 msgid "Internal name" msgstr "Nome interno" -#: describe.c:474 describe.c:629 describe.c:2391 +#: describe.c:475 describe.c:653 describe.c:2529 describe.c:2533 msgid "Size" msgstr "Tamanho" -#: describe.c:486 +#: describe.c:496 msgid "Elements" msgstr "Elementos" -#: describe.c:530 +#: describe.c:541 msgid "List of data types" msgstr "Lista de tipos de dado" -#: describe.c:563 +#: describe.c:587 msgid "Left arg type" msgstr "Tipo de argumento à esquerda" -#: describe.c:564 +#: describe.c:588 msgid "Right arg type" msgstr "Tipo de argumento à direita" -#: describe.c:565 +#: describe.c:589 msgid "Result type" msgstr "Tipo resultante" -#: describe.c:584 +#: describe.c:608 msgid "List of operators" msgstr "Lista de operadores" -#: describe.c:614 +#: describe.c:638 msgid "Encoding" msgstr "Codificação" -#: describe.c:619 -msgid "Collation" -msgstr "Collation" +#: describe.c:643 describe.c:2912 +msgid "Collate" +msgstr "Collate" -#: describe.c:620 +#: describe.c:644 describe.c:2913 msgid "Ctype" msgstr "Ctype" -#: describe.c:633 +#: describe.c:657 msgid "Tablespace" msgstr "Tablespace" -#: describe.c:650 +#: describe.c:674 msgid "List of databases" msgstr "Lista dos bancos de dados" -#: describe.c:684 describe.c:764 describe.c:919 describe.c:2375 sql_help.c:443 -#: sql_help.c:660 sql_help.c:761 sql_help.c:1178 sql_help.c:1305 -#: sql_help.c:1339 sql_help.c:1574 sql_help.c:1723 sql_help.c:1884 -#: sql_help.c:1965 sql_help.c:2159 sql_help.c:2719 sql_help.c:2739 -#: sql_help.c:2741 sql_help.c:2742 +#: describe.c:708 describe.c:789 describe.c:944 describe.c:2506 sql_help.c:595 +#: sql_help.c:842 sql_help.c:969 sql_help.c:1432 sql_help.c:1562 +#: sql_help.c:1596 sql_help.c:1842 sql_help.c:2000 sql_help.c:2185 +#: sql_help.c:2266 sql_help.c:2472 sql_help.c:3103 sql_help.c:3123 +#: sql_help.c:3125 sql_help.c:3126 msgid "table" msgstr "tabela" -#: describe.c:684 describe.c:920 describe.c:2376 +#: describe.c:708 describe.c:945 describe.c:2507 msgid "view" msgstr "visão" -#: describe.c:684 describe.c:765 describe.c:922 describe.c:2378 +#: describe.c:708 describe.c:790 describe.c:947 describe.c:2509 msgid "sequence" msgstr "sequência" -#: describe.c:696 +#: describe.c:709 describe.c:948 describe.c:2511 +msgid "foreign table" +msgstr "tabela externa" + +#: describe.c:721 msgid "Column access privileges" msgstr "Privilégios de acesso à coluna" -#: describe.c:722 describe.c:3476 describe.c:3480 +#: describe.c:747 describe.c:4000 describe.c:4004 msgid "Access privileges" msgstr "Privilégios de acesso" -#: describe.c:750 +#: describe.c:775 #, c-format msgid "" "The server (version %d.%d) does not support altering default privileges.\n" msgstr "" "O servidor (versão %d.%d) não suporta alteração de privilégios padrão.\n" -#: describe.c:766 describe.c:858 +#: describe.c:791 describe.c:883 msgid "function" msgstr "função" -#: describe.c:790 +#: describe.c:815 msgid "Default access privileges" msgstr "Privilégios de acesso padrão" -#: describe.c:826 +#: describe.c:851 msgid "Object" msgstr "Objeto" -#: describe.c:838 +#: describe.c:863 msgid "aggregate" msgstr "agregação" -#: describe.c:877 sql_help.c:1457 sql_help.c:2457 sql_help.c:2525 -#: sql_help.c:2656 sql_help.c:2757 sql_help.c:2808 +#: describe.c:902 sql_help.c:1715 sql_help.c:2833 sql_help.c:2903 +#: sql_help.c:3036 sql_help.c:3141 sql_help.c:3192 msgid "operator" msgstr "operador" -#: describe.c:896 +#: describe.c:921 msgid "data type" msgstr "tipo de dado" -#: describe.c:921 describe.c:2377 +#: describe.c:946 describe.c:2508 msgid "index" msgstr "índice" -#: describe.c:943 +#: describe.c:969 msgid "rule" msgstr "regra" -#: describe.c:987 +#: describe.c:1013 msgid "Object descriptions" msgstr "Descrições dos Objetos" -#: describe.c:1040 +#: describe.c:1066 #, c-format msgid "Did not find any relation named \"%s\".\n" msgstr "Não encontrou nenhuma relação chamada \"%s\".\n" -#: describe.c:1194 +#: describe.c:1238 #, c-format msgid "Did not find any relation with OID %s.\n" msgstr "Não encontrou nenhuma relação com OID %s.\n" -#: describe.c:1262 +#: describe.c:1314 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "Tabela unlogged \"%s.%s\"" + +#: describe.c:1317 #, c-format msgid "Table \"%s.%s\"" msgstr "Tabela \"%s.%s\"" -#: describe.c:1266 +#: describe.c:1321 #, c-format msgid "View \"%s.%s\"" msgstr "Visão \"%s.%s\"" -#: describe.c:1270 +#: describe.c:1325 #, c-format msgid "Sequence \"%s.%s\"" msgstr "Sequência \"%s.%s\"" -#: describe.c:1274 +#: describe.c:1330 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "Índice unlogged \"%s.%s\"" + +#: describe.c:1333 #, c-format msgid "Index \"%s.%s\"" msgstr "Índice \"%s.%s\"" -#: describe.c:1279 +#: describe.c:1338 #, c-format msgid "Special relation \"%s.%s\"" msgstr "Relação especial \"%s.%s\"" -#: describe.c:1283 +#: describe.c:1342 #, c-format msgid "TOAST table \"%s.%s\"" msgstr "tabela TOAST \"%s.%s\"" -#: describe.c:1287 +#: describe.c:1346 #, c-format msgid "Composite type \"%s.%s\"" msgstr "Tipo composto \"%s.%s\"" -#: describe.c:1298 +#: describe.c:1350 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "Tabela externa \"%s.%s\"" + +#: describe.c:1361 msgid "Column" msgstr "Coluna" -#: describe.c:1305 +#: describe.c:1369 msgid "Modifiers" msgstr "Modificadores" -#: describe.c:1310 +#: describe.c:1374 msgid "Value" msgstr "Valor" -#: describe.c:1313 +#: describe.c:1377 msgid "Definition" msgstr "Definição" -#: describe.c:1317 +#: describe.c:1381 msgid "Storage" msgstr "Armazenamento" -#: describe.c:1359 +#: describe.c:1427 +#, c-format +msgid "collate %s" +msgstr "collate %s" + +#: describe.c:1435 msgid "not null" msgstr "não nulo" #. translator: default values of column definitions -#: describe.c:1368 +#: describe.c:1445 #, c-format msgid "default %s" msgstr "valor padrão de %s" -#: describe.c:1459 +#: describe.c:1536 msgid "primary key, " msgstr "chave primária, " -#: describe.c:1461 +#: describe.c:1538 msgid "unique, " msgstr "unicidade, " -#: describe.c:1467 +#: describe.c:1544 #, c-format msgid "for table \"%s.%s\"" msgstr "para tabela \"%s.%s\"" -#: describe.c:1471 +#: describe.c:1548 #, c-format msgid ", predicate (%s)" msgstr ", predicado (%s)" -#: describe.c:1474 +#: describe.c:1551 msgid ", clustered" msgstr ", agrupada" -#: describe.c:1477 +#: describe.c:1554 msgid ", invalid" msgstr ", inválido" -#: describe.c:1480 +#: describe.c:1557 msgid ", deferrable" msgstr ", postergável" -#: describe.c:1483 +#: describe.c:1560 msgid ", initially deferred" msgstr ", inicialmente postergada" -#: describe.c:1497 +#: describe.c:1574 msgid "View definition:" msgstr "Definição da visão:" -#: describe.c:1514 describe.c:1792 +#: describe.c:1591 describe.c:1874 msgid "Rules:" msgstr "Regras:" -#: describe.c:1573 +#: describe.c:1650 msgid "Indexes:" msgstr "Índices:" -#: describe.c:1648 +#: describe.c:1730 msgid "Check constraints:" msgstr "Restrições de verificação:" -#: describe.c:1679 +#: describe.c:1761 msgid "Foreign-key constraints:" msgstr "Restrições de chave estrangeira:" -#: describe.c:1710 +#: describe.c:1792 msgid "Referenced by:" msgstr "Referenciada por:" -#: describe.c:1795 +#: describe.c:1877 msgid "Disabled rules:" msgstr "Regras desabilitadas:" -#: describe.c:1798 +#: describe.c:1880 msgid "Rules firing always:" msgstr "Regras sempre disparadas:" -#: describe.c:1801 +#: describe.c:1883 msgid "Rules firing on replica only:" msgstr "Regras somente disparadas na réplica:" -#: describe.c:1903 +#: describe.c:1991 msgid "Triggers:" msgstr "Gatilhos:" -#: describe.c:1906 +#: describe.c:1994 msgid "Disabled triggers:" msgstr "Gatilhos desabilitados:" -#: describe.c:1909 +#: describe.c:1997 msgid "Triggers firing always:" msgstr "Gatilhos sempre disparados:" -#: describe.c:1912 +#: describe.c:2000 msgid "Triggers firing on replica only:" msgstr "Gatilhos somente disparados na réplica:" -#: describe.c:1945 +#: describe.c:2066 msgid "Inherits" msgstr "Heranças" -#: describe.c:1975 +#: describe.c:2096 #, c-format msgid "Number of child tables: %d (Use \\d+ to list them.)" msgstr "Número de tabelas descendentes: %d (Utilize \\d+ para listá-las.)" -#: describe.c:1982 +#: describe.c:2103 msgid "Child tables" msgstr "Tabelas descendentes" -#: describe.c:2004 +#: describe.c:2125 #, c-format msgid "Typed table of type: %s" msgstr "Tabela protótipo de tipo: %s" -#: describe.c:2011 +#: describe.c:2132 msgid "Has OIDs" msgstr "Têm OIDs" -#: describe.c:2014 describe.c:2553 describe.c:2627 +#: describe.c:2135 describe.c:2772 describe.c:2846 msgid "yes" msgstr "sim" -#: describe.c:2014 describe.c:2553 describe.c:2627 +#: describe.c:2135 describe.c:2772 describe.c:2846 msgid "no" msgstr "não" -#: describe.c:2022 describe.c:3319 describe.c:3383 describe.c:3439 +#: describe.c:2143 describe.c:3621 describe.c:3685 describe.c:3741 +#: describe.c:3796 msgid "Options" msgstr "Opções" -#: describe.c:2107 +#: describe.c:2228 #, c-format msgid "Tablespace: \"%s\"" msgstr "Tablespace: \"%s\"" -#: describe.c:2120 +#: describe.c:2241 #, c-format msgid ", tablespace \"%s\"" msgstr ", tablespace \"%s\"" -#: describe.c:2198 +#: describe.c:2323 msgid "List of roles" msgstr "Lista de roles" -#: describe.c:2200 +#: describe.c:2325 msgid "Role name" msgstr "Nome da role" -#: describe.c:2201 +#: describe.c:2326 msgid "Attributes" msgstr "Atributos" -#: describe.c:2202 +#: describe.c:2327 msgid "Member of" msgstr "Membro de" -#: describe.c:2213 +#: describe.c:2338 msgid "Superuser" msgstr "Super-usuário" -#: describe.c:2216 +#: describe.c:2341 msgid "No inheritance" msgstr "Nenhuma herança" -#: describe.c:2219 +#: describe.c:2344 msgid "Create role" msgstr "Cria role" -#: describe.c:2222 +#: describe.c:2347 msgid "Create DB" msgstr "Cria BD" -#: describe.c:2225 +#: describe.c:2350 msgid "Cannot login" msgstr "Não pode efetuar login" -#: describe.c:2234 +#: describe.c:2354 +msgid "Replication" +msgstr "Replicação" + +#: describe.c:2363 msgid "No connections" msgstr "Nenhuma conexão" -#: describe.c:2236 +#: describe.c:2365 #, c-format msgid "%d connection" msgid_plural "%d connections" msgstr[0] "%d conexão" msgstr[1] "%d conexões" -#: describe.c:2303 +#: describe.c:2432 #, c-format msgid "No per-database role settings support in this server version.\n" msgstr "" "Nenhum suporte a configurações de roles por banco de dados nesta versão do " "servidor.\n" -#: describe.c:2314 +#: describe.c:2443 #, c-format msgid "No matching settings found.\n" msgstr "Nenhuma configuração correspondente foi encontrada.\n" -#: describe.c:2316 +#: describe.c:2445 #, c-format msgid "No settings found.\n" msgstr "Nenhuma configuração foi encontrada.\n" -#: describe.c:2321 +#: describe.c:2450 msgid "List of settings" msgstr "Lista de configurações" -#: describe.c:2379 +#: describe.c:2510 msgid "special" msgstr "especial" -#: describe.c:2386 +#: describe.c:2518 describe.c:3790 msgid "Table" msgstr "Tabela" -#: describe.c:2446 +#: describe.c:2592 #, c-format msgid "No matching relations found.\n" msgstr "Nenhuma relação correspondente foi encontrada.\n" -#: describe.c:2448 +#: describe.c:2594 #, c-format msgid "No relations found.\n" msgstr "Nenhuma relação foi encontrada.\n" -#: describe.c:2453 +#: describe.c:2599 msgid "List of relations" msgstr "Lista de relações" -#: describe.c:2497 +#: describe.c:2635 +msgid "Trusted" +msgstr "Confiável" + +#: describe.c:2643 +msgid "Internal Language" +msgstr "Linguagem Interna" + +#: describe.c:2644 +msgid "Call Handler" +msgstr "Manipulador de Chamada" + +#: describe.c:2645 describe.c:3613 +msgid "Validator" +msgstr "Validador" + +#: describe.c:2648 +msgid "Inline Handler" +msgstr "Manipulador de Código Embutido" + +#: describe.c:2669 +msgid "List of languages" +msgstr "Lista de linguagens" + +#: describe.c:2709 msgid "Modifier" msgstr "Modificador" -#: describe.c:2498 +#: describe.c:2717 msgid "Check" msgstr "Verificação" -#: describe.c:2516 +#: describe.c:2735 msgid "List of domains" msgstr "Lista de domínios" -#: describe.c:2551 +#: describe.c:2770 msgid "Source" msgstr "Fonte" -#: describe.c:2552 +#: describe.c:2771 msgid "Destination" msgstr "Destino" -#: describe.c:2554 +#: describe.c:2773 msgid "Default?" msgstr "Padrão?" -#: describe.c:2572 +#: describe.c:2791 msgid "List of conversions" msgstr "Lista de conversões" -#: describe.c:2624 +#: describe.c:2843 msgid "Source type" msgstr "Tipo fonte" -#: describe.c:2625 +#: describe.c:2844 msgid "Target type" msgstr "Tipo alvo" -#: describe.c:2626 describe.c:2886 +#: describe.c:2845 describe.c:3183 msgid "Function" msgstr "Função" -#: describe.c:2627 +#: describe.c:2846 msgid "in assignment" msgstr "em atribuição" -#: describe.c:2628 +#: describe.c:2847 msgid "Implicit?" msgstr "Implícito?" -#: describe.c:2654 +#: describe.c:2873 msgid "List of casts" msgstr "Lista de conversões de tipos" -#: describe.c:2709 +#: describe.c:2898 +#, c-format +msgid "The server (version %d.%d) does not support collations.\n" +msgstr "O servidor (versão %d.%d) não suporta ordenações.\n" + +#: describe.c:2948 +msgid "List of collations" +msgstr "Lista de ordenações" + +#: describe.c:3006 msgid "List of schemas" msgstr "Lista de esquemas" -#: describe.c:2732 describe.c:2965 describe.c:3033 describe.c:3101 +#: describe.c:3029 describe.c:3262 describe.c:3330 describe.c:3398 #, c-format msgid "The server (version %d.%d) does not support full text search.\n" msgstr "O servidor (versão %d.%d) não suporta busca textual.\n" -#: describe.c:2766 +#: describe.c:3063 msgid "List of text search parsers" msgstr "Lista de analisadores de busca textual" -#: describe.c:2809 +#: describe.c:3106 #, c-format msgid "Did not find any text search parser named \"%s\".\n" msgstr "Não encontrou nenhum analisador de busca textual chamado \"%s\".\n" -#: describe.c:2884 +#: describe.c:3181 msgid "Start parse" msgstr "Iniciar análise" -#: describe.c:2885 +#: describe.c:3182 msgid "Method" msgstr "Método" -#: describe.c:2889 +#: describe.c:3186 msgid "Get next token" msgstr "Obter próximo elemento" -#: describe.c:2891 +#: describe.c:3188 msgid "End parse" msgstr "Terminar análise" -#: describe.c:2893 +#: describe.c:3190 msgid "Get headline" msgstr "Obter destaque" -#: describe.c:2895 +#: describe.c:3192 msgid "Get token types" msgstr "Obter tipos de elemento" -#: describe.c:2905 +#: describe.c:3202 #, c-format msgid "Text search parser \"%s.%s\"" msgstr "Analisador de busca textual \"%s.%s\"" -#: describe.c:2907 +#: describe.c:3204 #, c-format msgid "Text search parser \"%s\"" msgstr "Analisador de busca textual \"%s\"" -#: describe.c:2925 +#: describe.c:3222 msgid "Token name" msgstr "Nome do elemento" -#: describe.c:2936 +#: describe.c:3233 #, c-format msgid "Token types for parser \"%s.%s\"" msgstr "Tipos de elemento para analisador \"%s.%s\"" -#: describe.c:2938 +#: describe.c:3235 #, c-format msgid "Token types for parser \"%s\"" msgstr "Tipos de elemento para analisador \"%s\"" -#: describe.c:2987 +#: describe.c:3284 msgid "Template" msgstr "Modelo" -#: describe.c:2988 +#: describe.c:3285 msgid "Init options" msgstr "Opções de inicialização" -#: describe.c:3010 +#: describe.c:3307 msgid "List of text search dictionaries" msgstr "Lista de dicionários de busca textual" -#: describe.c:3050 +#: describe.c:3347 msgid "Init" msgstr "Inicializador" -#: describe.c:3051 +#: describe.c:3348 msgid "Lexize" msgstr "Lexize" -#: describe.c:3078 +#: describe.c:3375 msgid "List of text search templates" msgstr "Lista de modelos de busca textual" -#: describe.c:3135 +#: describe.c:3432 msgid "List of text search configurations" msgstr "Lista de configurações de busca textual" -#: describe.c:3179 +#: describe.c:3476 #, c-format msgid "Did not find any text search configuration named \"%s\".\n" msgstr "Não encontrou nenhuma configuração de busca textual chamada \"%s\".\n" -#: describe.c:3245 +#: describe.c:3542 msgid "Token" msgstr "Elemento" -#: describe.c:3246 +#: describe.c:3543 msgid "Dictionaries" msgstr "Dicionários" -#: describe.c:3257 +#: describe.c:3554 #, c-format msgid "Text search configuration \"%s.%s\"" msgstr "Configuração de busca textual \"%s.%s\"" -#: describe.c:3260 +#: describe.c:3557 #, c-format msgid "Text search configuration \"%s\"" msgstr "Configuração de busca textual \"%s\"" -#: describe.c:3264 +#: describe.c:3561 #, c-format msgid "" "\n" @@ -2131,7 +2277,7 @@ msgstr "" "\n" "Analisador: \"%s.%s\"" -#: describe.c:3267 +#: describe.c:3564 #, c-format msgid "" "\n" @@ -2140,557 +2286,630 @@ msgstr "" "\n" "Analisador: \"%s\"" -#: describe.c:3299 +#: describe.c:3596 #, c-format msgid "The server (version %d.%d) does not support foreign-data wrappers.\n" msgstr "O servidor (versão %d.%d) não suporta adaptadores de dados externos.\n" -#: describe.c:3311 -msgid "Validator" -msgstr "Validador" +#: describe.c:3610 +msgid "Handler" +msgstr "Manipulador" -#: describe.c:3335 +#: describe.c:3637 msgid "List of foreign-data wrappers" msgstr "Lista de adaptadores de dados externos" -#: describe.c:3358 +#: describe.c:3660 #, c-format msgid "The server (version %d.%d) does not support foreign servers.\n" msgstr "O servidor (versão %d.%d) não suporta servidores externos.\n" -#: describe.c:3370 +#: describe.c:3672 msgid "Foreign-data wrapper" msgstr "Adaptador de dados externos" -#: describe.c:3382 +#: describe.c:3684 describe.c:3854 msgid "Version" msgstr "Versão" -#: describe.c:3401 +#: describe.c:3703 msgid "List of foreign servers" msgstr "Lista de servidores externos" -#: describe.c:3424 +#: describe.c:3726 #, c-format msgid "The server (version %d.%d) does not support user mappings.\n" msgstr "O servidor (versão %d.%d) não suporta mapeamentos de usuários.\n" -#: describe.c:3433 +#: describe.c:3735 describe.c:3791 msgid "Server" msgstr "Servidor" -#: describe.c:3434 +#: describe.c:3736 msgid "User name" msgstr "Nome de usuário" -#: describe.c:3454 +#: describe.c:3756 msgid "List of user mappings" msgstr "Lista de mapeamentos de usuários" -#: sql_help.h:173 sql_help.h:788 +#: describe.c:3779 +#, c-format +msgid "The server (version %d.%d) does not support foreign tables.\n" +msgstr "O servidor (versão %d.%d) não suporta tabelas externas.\n" + +#: describe.c:3817 +msgid "List of foreign tables" +msgstr "Lista de tabelas externas" + +#: describe.c:3840 describe.c:3894 +#, c-format +msgid "The server (version %d.%d) does not support extensions.\n" +msgstr "O servidor (versão %d.%d) não suporta extensões.\n" + +#: describe.c:3871 +msgid "List of installed extensions" +msgstr "Lista de extensões instaladas" + +#: describe.c:3921 +#, c-format +msgid "Did not find any extension named \"%s\".\n" +msgstr "Não encontrou nenhuma extensão chamada \"%s\".\n" + +#: describe.c:3924 +#, c-format +msgid "Did not find any extensions.\n" +msgstr "Não encontrou nenhuma extensão.\n" + +#: describe.c:3968 +msgid "Object Description" +msgstr "Descrição do Objeto" + +#: describe.c:3977 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "Objetos na extensão \"%s\"" + +#: sql_help.h:182 sql_help.h:837 msgid "abort the current transaction" msgstr "transação atual foi interrompida" -#: sql_help.h:178 +#: sql_help.h:187 msgid "change the definition of an aggregate function" msgstr "muda a definição de uma função de agregação" -#: sql_help.h:183 +#: sql_help.h:192 +msgid "change the definition of a collation" +msgstr "muda a definição de uma ordenação" + +#: sql_help.h:197 msgid "change the definition of a conversion" msgstr "muda a definição de uma conversão" -#: sql_help.h:188 +#: sql_help.h:202 msgid "change a database" msgstr "muda o banco de dados" -#: sql_help.h:193 +#: sql_help.h:207 msgid "define default access privileges" msgstr "define privilégios de acesso padrão" -#: sql_help.h:198 +#: sql_help.h:212 msgid "change the definition of a domain" msgstr "muda a definição de um domínio" -#: sql_help.h:203 +#: sql_help.h:217 +msgid "change the definition of an extension" +msgstr "muda a definição de uma extensão" + +#: sql_help.h:222 msgid "change the definition of a foreign-data wrapper" msgstr "muda a definição de um adaptador de dados externos" -#: sql_help.h:208 +#: sql_help.h:227 +msgid "change the definition of a foreign table" +msgstr "muda a definição de uma tabela externa" + +#: sql_help.h:232 msgid "change the definition of a function" msgstr "muda a definição de uma função" -#: sql_help.h:213 +#: sql_help.h:237 msgid "change role name or membership" msgstr "muda nome da role ou membro" -#: sql_help.h:218 +#: sql_help.h:242 msgid "change the definition of an index" msgstr "muda a definição de um índice" -#: sql_help.h:223 +#: sql_help.h:247 msgid "change the definition of a procedural language" msgstr "muda a definição de uma linguagem procedural" -#: sql_help.h:228 +#: sql_help.h:252 msgid "change the definition of a large object" msgstr "muda a definição de um objeto grande" -#: sql_help.h:233 +#: sql_help.h:257 msgid "change the definition of an operator" msgstr "muda a definição de um operador" -#: sql_help.h:238 +#: sql_help.h:262 msgid "change the definition of an operator class" msgstr "muda a definição de uma classe de operadores" -#: sql_help.h:243 +#: sql_help.h:267 msgid "change the definition of an operator family" msgstr "muda a definição de uma família de operadores" -#: sql_help.h:248 sql_help.h:308 +#: sql_help.h:272 sql_help.h:332 msgid "change a database role" msgstr "muda uma role do banco de dados" -#: sql_help.h:253 +#: sql_help.h:277 msgid "change the definition of a schema" msgstr "muda a definição de um esquema" -#: sql_help.h:258 +#: sql_help.h:282 msgid "change the definition of a sequence generator" msgstr "muda a definição de um gerador de sequência" -#: sql_help.h:263 +#: sql_help.h:287 msgid "change the definition of a foreign server" msgstr "muda a definição de um servidor externo" -#: sql_help.h:268 +#: sql_help.h:292 msgid "change the definition of a table" msgstr "muda a definição de uma tabela" -#: sql_help.h:273 +#: sql_help.h:297 msgid "change the definition of a tablespace" msgstr "muda a definição de uma tablespace" -#: sql_help.h:278 +#: sql_help.h:302 msgid "change the definition of a text search configuration" msgstr "muda a definição de uma configuração de busca textual" -#: sql_help.h:283 +#: sql_help.h:307 msgid "change the definition of a text search dictionary" msgstr "muda a definição de um dicionário de busca textual" -#: sql_help.h:288 +#: sql_help.h:312 msgid "change the definition of a text search parser" msgstr "muda a definição de um analisador de busca textual" -#: sql_help.h:293 +#: sql_help.h:317 msgid "change the definition of a text search template" msgstr "muda a definição de um modelo de busca textual" -#: sql_help.h:298 +#: sql_help.h:322 msgid "change the definition of a trigger" msgstr "muda a definição de um gatilho" -#: sql_help.h:303 +#: sql_help.h:327 msgid "change the definition of a type" msgstr "muda a definição de um tipo" -#: sql_help.h:313 +#: sql_help.h:337 msgid "change the definition of a user mapping" msgstr "muda a definição de um mapeamento de usuários" -#: sql_help.h:318 +#: sql_help.h:342 msgid "change the definition of a view" msgstr "muda a definição de uma visão" -#: sql_help.h:323 +#: sql_help.h:347 msgid "collect statistics about a database" msgstr "coleta estatísticas sobre o banco de dados" -#: sql_help.h:328 sql_help.h:848 +#: sql_help.h:352 sql_help.h:902 msgid "start a transaction block" msgstr "inicia um bloco de transação" -#: sql_help.h:333 +#: sql_help.h:357 msgid "force a transaction log checkpoint" msgstr "força ponto de controle no log de transação" -#: sql_help.h:338 +#: sql_help.h:362 msgid "close a cursor" msgstr "fecha um cursor" -#: sql_help.h:343 +#: sql_help.h:367 msgid "cluster a table according to an index" msgstr "agrupa uma tabela de acordo com um índice" -#: sql_help.h:348 +#: sql_help.h:372 msgid "define or change the comment of an object" msgstr "define ou muda um comentário de um objeto" -#: sql_help.h:353 sql_help.h:698 +#: sql_help.h:377 sql_help.h:747 msgid "commit the current transaction" msgstr "efetiva a transação atual" -#: sql_help.h:358 +#: sql_help.h:382 msgid "commit a transaction that was earlier prepared for two-phase commit" msgstr "" "efetiva uma transação que foi anteriormente preparada para efetivação em " "duas fases" -#: sql_help.h:363 +#: sql_help.h:387 msgid "copy data between a file and a table" msgstr "copia dados de um arquivo para uma tabela" -#: sql_help.h:368 +#: sql_help.h:392 msgid "define a new aggregate function" msgstr "define um nova função de agregação" -#: sql_help.h:373 +#: sql_help.h:397 msgid "define a new cast" msgstr "define uma nova conversão de tipo" -#: sql_help.h:378 -msgid "define a new constraint trigger" -msgstr "define um novo gatilho de restrição" +#: sql_help.h:402 +msgid "define a new collation" +msgstr "define uma nova ordenação" -#: sql_help.h:383 +#: sql_help.h:407 msgid "define a new encoding conversion" msgstr "define uma nova conversão de codificação" -#: sql_help.h:388 +#: sql_help.h:412 msgid "create a new database" msgstr "cria um novo banco de dados" -#: sql_help.h:393 +#: sql_help.h:417 msgid "define a new domain" msgstr "define um novo domínio" -#: sql_help.h:398 +#: sql_help.h:422 +msgid "install an extension" +msgstr "instala uma extensão" + +#: sql_help.h:427 msgid "define a new foreign-data wrapper" msgstr "define um novo adaptador de dados externos" -#: sql_help.h:403 +#: sql_help.h:432 +msgid "define a new foreign table" +msgstr "define uma nova tabela externa" + +#: sql_help.h:437 msgid "define a new function" msgstr "define uma nova função" -#: sql_help.h:408 sql_help.h:438 sql_help.h:508 +#: sql_help.h:442 sql_help.h:472 sql_help.h:542 msgid "define a new database role" msgstr "define uma nova role do banco de dados" -#: sql_help.h:413 +#: sql_help.h:447 msgid "define a new index" msgstr "define um novo índice" -#: sql_help.h:418 +#: sql_help.h:452 msgid "define a new procedural language" msgstr "define uma nova linguagem procedural" -#: sql_help.h:423 +#: sql_help.h:457 msgid "define a new operator" msgstr "define um novo operador" -#: sql_help.h:428 +#: sql_help.h:462 msgid "define a new operator class" msgstr "define uma nova classe de operadores" -#: sql_help.h:433 +#: sql_help.h:467 msgid "define a new operator family" msgstr "define uma nova família de operadores" -#: sql_help.h:443 +#: sql_help.h:477 msgid "define a new rewrite rule" msgstr "define uma nova regra de reescrita" -#: sql_help.h:448 +#: sql_help.h:482 msgid "define a new schema" msgstr "define um novo esquema" -#: sql_help.h:453 +#: sql_help.h:487 msgid "define a new sequence generator" msgstr "define um novo gerador de sequência" -#: sql_help.h:458 +#: sql_help.h:492 msgid "define a new foreign server" msgstr "define um novo servidor externo" -#: sql_help.h:463 +#: sql_help.h:497 msgid "define a new table" msgstr "define uma nova tabela" -#: sql_help.h:468 sql_help.h:813 +#: sql_help.h:502 sql_help.h:867 msgid "define a new table from the results of a query" msgstr "cria uma nova tabela a partir dos resultados de uma consulta" -#: sql_help.h:473 +#: sql_help.h:507 msgid "define a new tablespace" msgstr "define uma nova tablespace" -#: sql_help.h:478 +#: sql_help.h:512 msgid "define a new text search configuration" msgstr "define uma nova configuração de busca textual" -#: sql_help.h:483 +#: sql_help.h:517 msgid "define a new text search dictionary" msgstr "define um novo dicionário de busca textual" -#: sql_help.h:488 +#: sql_help.h:522 msgid "define a new text search parser" msgstr "define um novo analisador de busca textual" -#: sql_help.h:493 +#: sql_help.h:527 msgid "define a new text search template" msgstr "define um novo modelo de busca textual" -#: sql_help.h:498 +#: sql_help.h:532 msgid "define a new trigger" msgstr "define um novo gatilho" -#: sql_help.h:503 +#: sql_help.h:537 msgid "define a new data type" msgstr "define um novo tipo de dado" -#: sql_help.h:513 +#: sql_help.h:547 msgid "define a new mapping of a user to a foreign server" msgstr "define um novo mapeamento de um usuário para um servidor externo" -#: sql_help.h:518 +#: sql_help.h:552 msgid "define a new view" msgstr "define uma nova visão" -#: sql_help.h:523 +#: sql_help.h:557 msgid "deallocate a prepared statement" msgstr "remove um comando preparado" -#: sql_help.h:528 +#: sql_help.h:562 msgid "define a cursor" msgstr "define um cursor" -#: sql_help.h:533 +#: sql_help.h:567 msgid "delete rows of a table" msgstr "apaga registros de uma tabela" -#: sql_help.h:538 +#: sql_help.h:572 msgid "discard session state" msgstr "descarta estado da sessão" -#: sql_help.h:543 +#: sql_help.h:577 msgid "execute an anonymous code block" msgstr "executa um bloco de código anônimo" -#: sql_help.h:548 +#: sql_help.h:582 msgid "remove an aggregate function" msgstr "remove uma função de agregação" -#: sql_help.h:553 +#: sql_help.h:587 msgid "remove a cast" msgstr "remove uma conversão de tipo" -#: sql_help.h:558 +#: sql_help.h:592 +msgid "remove a collation" +msgstr "remove uma ordenação" + +#: sql_help.h:597 msgid "remove a conversion" msgstr "remove uma conversão" -#: sql_help.h:563 +#: sql_help.h:602 msgid "remove a database" msgstr "remove um banco de dados" -#: sql_help.h:568 +#: sql_help.h:607 msgid "remove a domain" msgstr "remove um domínio" -#: sql_help.h:573 +#: sql_help.h:612 +msgid "remove an extension" +msgstr "remove uma extensão" + +#: sql_help.h:617 msgid "remove a foreign-data wrapper" msgstr "remove um adaptador de dados externos" -#: sql_help.h:578 +#: sql_help.h:622 +msgid "remove a foreign table" +msgstr "remove uma tabela externa" + +#: sql_help.h:627 msgid "remove a function" msgstr "remove uma função" -#: sql_help.h:583 sql_help.h:618 sql_help.h:683 +#: sql_help.h:632 sql_help.h:667 sql_help.h:732 msgid "remove a database role" msgstr "remove uma role do banco de dados" -#: sql_help.h:588 +#: sql_help.h:637 msgid "remove an index" msgstr "remove um índice" -#: sql_help.h:593 +#: sql_help.h:642 msgid "remove a procedural language" msgstr "remove uma linguagem procedural" -#: sql_help.h:598 +#: sql_help.h:647 msgid "remove an operator" msgstr "remove um operador" -#: sql_help.h:603 +#: sql_help.h:652 msgid "remove an operator class" msgstr "remove uma classe de operadores" -#: sql_help.h:608 +#: sql_help.h:657 msgid "remove an operator family" msgstr "remove uma família de operadores" -#: sql_help.h:613 +#: sql_help.h:662 msgid "remove database objects owned by a database role" msgstr "" "remove objetos do banco de dados cujo dono é uma role do banco de dados" -#: sql_help.h:623 +#: sql_help.h:672 msgid "remove a rewrite rule" msgstr "remove uma regra de reescrita" -#: sql_help.h:628 +#: sql_help.h:677 msgid "remove a schema" msgstr "remove um esquema" -#: sql_help.h:633 +#: sql_help.h:682 msgid "remove a sequence" msgstr "remove uma sequência" -#: sql_help.h:638 +#: sql_help.h:687 msgid "remove a foreign server descriptor" msgstr "remove um descritor de servidor externo" -#: sql_help.h:643 +#: sql_help.h:692 msgid "remove a table" msgstr "remove uma tabela" -#: sql_help.h:648 +#: sql_help.h:697 msgid "remove a tablespace" msgstr "remove uma tablespace" -#: sql_help.h:653 +#: sql_help.h:702 msgid "remove a text search configuration" msgstr "remove uma configuração de busca textual" -#: sql_help.h:658 +#: sql_help.h:707 msgid "remove a text search dictionary" msgstr "remove um dicionário de busca textual" -#: sql_help.h:663 +#: sql_help.h:712 msgid "remove a text search parser" msgstr "remove um analisador de busca textual" -#: sql_help.h:668 +#: sql_help.h:717 msgid "remove a text search template" msgstr "remove um modelo de busca textual" -#: sql_help.h:673 +#: sql_help.h:722 msgid "remove a trigger" msgstr "remove um gatilho" -#: sql_help.h:678 +#: sql_help.h:727 msgid "remove a data type" msgstr "remove um tipo de dado" -#: sql_help.h:688 +#: sql_help.h:737 msgid "remove a user mapping for a foreign server" msgstr "remove um mapeamento de usuários para um servidor externo" -#: sql_help.h:693 +#: sql_help.h:742 msgid "remove a view" msgstr "remove uma visão" -#: sql_help.h:703 +#: sql_help.h:752 msgid "execute a prepared statement" msgstr "executa um comando preparado" -#: sql_help.h:708 +#: sql_help.h:757 msgid "show the execution plan of a statement" msgstr "mostra o plano de execução de um comando" -#: sql_help.h:713 +#: sql_help.h:762 msgid "retrieve rows from a query using a cursor" msgstr "recupera registros de uma consulta utilizando um cursor" -#: sql_help.h:718 +#: sql_help.h:767 msgid "define access privileges" msgstr "define privilégios de acesso" -#: sql_help.h:723 +#: sql_help.h:772 msgid "create new rows in a table" msgstr "cria novos registros em uma tabela" -#: sql_help.h:728 +#: sql_help.h:777 msgid "listen for a notification" msgstr "espera por uma notificação" -#: sql_help.h:733 +#: sql_help.h:782 msgid "load a shared library file" msgstr "carrega um arquivo de biblioteca compartilhada" -#: sql_help.h:738 +#: sql_help.h:787 msgid "lock a table" msgstr "bloqueia uma tabela" -#: sql_help.h:743 +#: sql_help.h:792 msgid "position a cursor" msgstr "posiciona um cursor" -#: sql_help.h:748 +#: sql_help.h:797 msgid "generate a notification" msgstr "gera uma notificação" -#: sql_help.h:753 +#: sql_help.h:802 msgid "prepare a statement for execution" msgstr "prepara um comando para execução" -#: sql_help.h:758 +#: sql_help.h:807 msgid "prepare the current transaction for two-phase commit" msgstr "prepara a transação atual para efetivação em duas fases" -#: sql_help.h:763 +#: sql_help.h:812 msgid "change the ownership of database objects owned by a database role" msgstr "" "muda o dono dos objetos do banco de dados cujo dono é uma role do banco de " "dados" -#: sql_help.h:768 +#: sql_help.h:817 msgid "rebuild indexes" msgstr "reconstrói índices" -#: sql_help.h:773 +#: sql_help.h:822 msgid "destroy a previously defined savepoint" msgstr "destrói um ponto de salvamento definido anteriormente" -#: sql_help.h:778 +#: sql_help.h:827 msgid "restore the value of a run-time parameter to the default value" msgstr "restaura o valor do parâmetro em tempo de execução para o valor padrão" -#: sql_help.h:783 +#: sql_help.h:832 msgid "remove access privileges" msgstr "remove privilégios de acesso" -#: sql_help.h:793 +#: sql_help.h:842 msgid "cancel a transaction that was earlier prepared for two-phase commit" msgstr "" "cancela uma transação que foi anteriormente preparada para efetivação em " "duas fases" -#: sql_help.h:798 +#: sql_help.h:847 msgid "roll back to a savepoint" msgstr "desfaz modificações de um ponto de salvamento" -#: sql_help.h:803 +#: sql_help.h:852 msgid "define a new savepoint within the current transaction" msgstr "define um novo ponto de salvamento na transação atual" -#: sql_help.h:808 sql_help.h:853 sql_help.h:883 +#: sql_help.h:857 +msgid "define or change a security label applied to an object" +msgstr "define ou muda um rótulo de segurança aplicado a um objeto" + +#: sql_help.h:862 sql_help.h:907 sql_help.h:937 msgid "retrieve rows from a table or view" msgstr "recupera registros de uma tabela ou visão" -#: sql_help.h:818 +#: sql_help.h:872 msgid "change a run-time parameter" msgstr "muda um parâmetro em tempo de execução" -#: sql_help.h:823 +#: sql_help.h:877 msgid "set constraint check timing for the current transaction" msgstr "define o momento de verificação da restrição na transação atual" -#: sql_help.h:828 +#: sql_help.h:882 msgid "set the current user identifier of the current session" msgstr "define o identificador do usuário atual nesta sessão" -#: sql_help.h:833 +#: sql_help.h:887 msgid "" "set the session user identifier and the current user identifier of the " "current session" @@ -2698,1027 +2917,1155 @@ msgstr "" "define o identificador da sessão do usuário e o identificador do usuário na " "sessão atual" -#: sql_help.h:838 +#: sql_help.h:892 msgid "set the characteristics of the current transaction" msgstr "define as características da transação atual" -#: sql_help.h:843 +#: sql_help.h:897 msgid "show the value of a run-time parameter" msgstr "mostra o valor de um parâmetro em tempo de execução" -#: sql_help.h:858 +#: sql_help.h:912 msgid "empty a table or set of tables" msgstr "esvazia uma tabela ou um conjunto de tabelas" -#: sql_help.h:863 +#: sql_help.h:917 msgid "stop listening for a notification" msgstr "para de esperar por notificação" -#: sql_help.h:868 +#: sql_help.h:922 msgid "update rows of a table" msgstr "atualiza registros de uma tabela" -#: sql_help.h:873 +#: sql_help.h:927 msgid "garbage-collect and optionally analyze a database" msgstr "coleta lixo e opcionalmente analisa um banco de dados" -#: sql_help.h:878 +#: sql_help.h:932 msgid "compute a set of rows" msgstr "computa um conjunto de registros" -#: sql_help.c:26 sql_help.c:29 sql_help.c:32 sql_help.c:43 sql_help.c:45 -#: sql_help.c:69 sql_help.c:73 sql_help.c:75 sql_help.c:77 sql_help.c:79 -#: sql_help.c:82 sql_help.c:84 sql_help.c:86 sql_help.c:161 sql_help.c:163 -#: sql_help.c:164 sql_help.c:166 sql_help.c:168 sql_help.c:170 sql_help.c:182 -#: sql_help.c:186 sql_help.c:214 sql_help.c:219 sql_help.c:224 sql_help.c:229 -#: sql_help.c:267 sql_help.c:269 sql_help.c:271 sql_help.c:274 sql_help.c:284 -#: sql_help.c:286 sql_help.c:304 sql_help.c:316 sql_help.c:319 sql_help.c:338 -#: sql_help.c:349 sql_help.c:357 sql_help.c:360 sql_help.c:389 sql_help.c:395 -#: sql_help.c:397 sql_help.c:401 sql_help.c:404 sql_help.c:407 sql_help.c:417 -#: sql_help.c:419 sql_help.c:436 sql_help.c:445 sql_help.c:447 sql_help.c:449 -#: sql_help.c:513 sql_help.c:515 sql_help.c:518 sql_help.c:520 sql_help.c:570 -#: sql_help.c:572 sql_help.c:574 sql_help.c:577 sql_help.c:597 sql_help.c:600 -#: sql_help.c:603 sql_help.c:606 sql_help.c:610 sql_help.c:612 sql_help.c:614 -#: sql_help.c:627 sql_help.c:630 sql_help.c:632 sql_help.c:641 sql_help.c:650 -#: sql_help.c:659 sql_help.c:671 sql_help.c:673 sql_help.c:675 sql_help.c:703 -#: sql_help.c:709 sql_help.c:711 sql_help.c:714 sql_help.c:716 sql_help.c:718 -#: sql_help.c:743 sql_help.c:746 sql_help.c:748 sql_help.c:750 sql_help.c:752 -#: sql_help.c:791 sql_help.c:962 sql_help.c:970 sql_help.c:1016 -#: sql_help.c:1031 sql_help.c:1049 sql_help.c:1071 sql_help.c:1087 -#: sql_help.c:1113 sql_help.c:1155 sql_help.c:1177 sql_help.c:1196 -#: sql_help.c:1197 sql_help.c:1214 sql_help.c:1234 sql_help.c:1255 -#: sql_help.c:1282 sql_help.c:1303 sql_help.c:1333 sql_help.c:1513 -#: sql_help.c:1526 sql_help.c:1543 sql_help.c:1559 sql_help.c:1572 -#: sql_help.c:1611 sql_help.c:1614 sql_help.c:1616 sql_help.c:1633 -#: sql_help.c:1659 sql_help.c:1692 sql_help.c:1702 sql_help.c:1711 -#: sql_help.c:1753 sql_help.c:1771 sql_help.c:1779 sql_help.c:1787 -#: sql_help.c:1795 sql_help.c:1804 sql_help.c:1815 sql_help.c:1823 -#: sql_help.c:1831 sql_help.c:1839 sql_help.c:1849 sql_help.c:1858 -#: sql_help.c:1867 sql_help.c:1875 sql_help.c:1883 sql_help.c:1892 -#: sql_help.c:1900 sql_help.c:1916 sql_help.c:1932 sql_help.c:1940 -#: sql_help.c:1948 sql_help.c:1956 sql_help.c:1964 sql_help.c:1973 -#: sql_help.c:1981 sql_help.c:1998 sql_help.c:2013 sql_help.c:2193 -#: sql_help.c:2221 sql_help.c:2248 sql_help.c:2549 sql_help.c:2594 -#: sql_help.c:2698 +#: sql_help.c:26 sql_help.c:29 sql_help.c:32 sql_help.c:44 sql_help.c:46 +#: sql_help.c:48 sql_help.c:59 sql_help.c:61 sql_help.c:63 sql_help.c:87 +#: sql_help.c:91 sql_help.c:93 sql_help.c:95 sql_help.c:97 sql_help.c:100 +#: sql_help.c:102 sql_help.c:104 sql_help.c:179 sql_help.c:181 sql_help.c:182 +#: sql_help.c:184 sql_help.c:186 sql_help.c:188 sql_help.c:276 sql_help.c:281 +#: sql_help.c:306 sql_help.c:308 sql_help.c:311 sql_help.c:313 sql_help.c:351 +#: sql_help.c:356 sql_help.c:361 sql_help.c:366 sql_help.c:404 sql_help.c:406 +#: sql_help.c:408 sql_help.c:411 sql_help.c:421 sql_help.c:423 sql_help.c:442 +#: sql_help.c:446 sql_help.c:459 sql_help.c:462 sql_help.c:465 sql_help.c:485 +#: sql_help.c:497 sql_help.c:505 sql_help.c:508 sql_help.c:511 sql_help.c:541 +#: sql_help.c:547 sql_help.c:549 sql_help.c:553 sql_help.c:556 sql_help.c:559 +#: sql_help.c:569 sql_help.c:571 sql_help.c:588 sql_help.c:597 sql_help.c:599 +#: sql_help.c:601 sql_help.c:675 sql_help.c:677 sql_help.c:680 sql_help.c:682 +#: sql_help.c:740 sql_help.c:742 sql_help.c:744 sql_help.c:747 sql_help.c:768 +#: sql_help.c:771 sql_help.c:774 sql_help.c:777 sql_help.c:781 sql_help.c:783 +#: sql_help.c:785 sql_help.c:787 sql_help.c:801 sql_help.c:804 sql_help.c:806 +#: sql_help.c:808 sql_help.c:818 sql_help.c:820 sql_help.c:830 sql_help.c:832 +#: sql_help.c:841 sql_help.c:862 sql_help.c:864 sql_help.c:866 sql_help.c:869 +#: sql_help.c:871 sql_help.c:873 sql_help.c:911 sql_help.c:917 sql_help.c:919 +#: sql_help.c:922 sql_help.c:924 sql_help.c:926 sql_help.c:951 sql_help.c:954 +#: sql_help.c:956 sql_help.c:958 sql_help.c:960 sql_help.c:1000 +#: sql_help.c:1183 sql_help.c:1191 sql_help.c:1235 sql_help.c:1239 +#: sql_help.c:1249 sql_help.c:1267 sql_help.c:1290 sql_help.c:1322 +#: sql_help.c:1367 sql_help.c:1409 sql_help.c:1431 sql_help.c:1451 +#: sql_help.c:1452 sql_help.c:1469 sql_help.c:1489 sql_help.c:1511 +#: sql_help.c:1539 sql_help.c:1560 sql_help.c:1590 sql_help.c:1771 +#: sql_help.c:1784 sql_help.c:1801 sql_help.c:1817 sql_help.c:1840 +#: sql_help.c:1883 sql_help.c:1887 sql_help.c:1889 sql_help.c:1907 +#: sql_help.c:1934 sql_help.c:1967 sql_help.c:1977 sql_help.c:1986 +#: sql_help.c:2030 sql_help.c:2048 sql_help.c:2056 sql_help.c:2064 +#: sql_help.c:2072 sql_help.c:2088 sql_help.c:2096 sql_help.c:2105 +#: sql_help.c:2116 sql_help.c:2124 sql_help.c:2132 sql_help.c:2140 +#: sql_help.c:2150 sql_help.c:2159 sql_help.c:2168 sql_help.c:2176 +#: sql_help.c:2184 sql_help.c:2193 sql_help.c:2201 sql_help.c:2217 +#: sql_help.c:2233 sql_help.c:2241 sql_help.c:2249 sql_help.c:2257 +#: sql_help.c:2265 sql_help.c:2274 sql_help.c:2282 sql_help.c:2299 +#: sql_help.c:2314 sql_help.c:2506 sql_help.c:2557 sql_help.c:2584 +#: sql_help.c:2927 sql_help.c:2973 sql_help.c:3080 msgid "name" msgstr "nome" -#: sql_help.c:27 sql_help.c:30 sql_help.c:33 sql_help.c:524 sql_help.c:528 -#: sql_help.c:1754 +#: sql_help.c:27 sql_help.c:30 sql_help.c:33 sql_help.c:317 sql_help.c:320 +#: sql_help.c:2031 msgid "type" msgstr "tipo" -#: sql_help.c:28 sql_help.c:44 sql_help.c:74 sql_help.c:223 sql_help.c:256 -#: sql_help.c:268 sql_help.c:285 sql_help.c:318 sql_help.c:359 sql_help.c:396 -#: sql_help.c:418 sql_help.c:448 sql_help.c:519 sql_help.c:571 sql_help.c:613 -#: sql_help.c:631 sql_help.c:642 sql_help.c:651 sql_help.c:661 sql_help.c:672 -#: sql_help.c:710 sql_help.c:751 +#: sql_help.c:28 sql_help.c:45 sql_help.c:60 sql_help.c:92 sql_help.c:312 +#: sql_help.c:360 sql_help.c:393 sql_help.c:405 sql_help.c:422 sql_help.c:461 +#: sql_help.c:507 sql_help.c:548 sql_help.c:570 sql_help.c:600 sql_help.c:681 +#: sql_help.c:741 sql_help.c:784 sql_help.c:805 sql_help.c:819 sql_help.c:831 +#: sql_help.c:843 sql_help.c:870 sql_help.c:918 sql_help.c:959 msgid "new_name" msgstr "novo_nome" -#: sql_help.c:31 sql_help.c:46 sql_help.c:76 sql_help.c:169 sql_help.c:187 -#: sql_help.c:228 sql_help.c:287 sql_help.c:296 sql_help.c:307 sql_help.c:321 -#: sql_help.c:362 sql_help.c:420 sql_help.c:446 sql_help.c:465 sql_help.c:558 -#: sql_help.c:573 sql_help.c:615 sql_help.c:633 sql_help.c:674 sql_help.c:749 +#: sql_help.c:31 sql_help.c:47 sql_help.c:62 sql_help.c:94 sql_help.c:187 +#: sql_help.c:282 sql_help.c:322 sql_help.c:365 sql_help.c:424 sql_help.c:433 +#: sql_help.c:445 sql_help.c:464 sql_help.c:510 sql_help.c:572 sql_help.c:598 +#: sql_help.c:617 sql_help.c:725 sql_help.c:743 sql_help.c:786 sql_help.c:807 +#: sql_help.c:865 sql_help.c:957 msgid "new_owner" msgstr "novo_dono" -#: sql_help.c:34 sql_help.c:171 sql_help.c:233 sql_help.c:450 sql_help.c:521 -#: sql_help.c:676 sql_help.c:753 +#: sql_help.c:34 sql_help.c:49 sql_help.c:64 sql_help.c:189 sql_help.c:228 +#: sql_help.c:314 sql_help.c:370 sql_help.c:449 sql_help.c:467 sql_help.c:513 +#: sql_help.c:602 sql_help.c:683 sql_help.c:788 sql_help.c:809 sql_help.c:821 +#: sql_help.c:833 sql_help.c:872 sql_help.c:961 msgid "new_schema" msgstr "novo_esquema" -#: sql_help.c:70 sql_help.c:184 sql_help.c:390 sql_help.c:462 sql_help.c:628 -#: sql_help.c:704 sql_help.c:730 sql_help.c:922 sql_help.c:927 sql_help.c:1089 -#: sql_help.c:1156 sql_help.c:1283 sql_help.c:1354 sql_help.c:1528 -#: sql_help.c:1660 sql_help.c:1682 +#: sql_help.c:88 sql_help.c:279 sql_help.c:323 sql_help.c:542 sql_help.c:614 +#: sql_help.c:802 sql_help.c:912 sql_help.c:938 sql_help.c:1142 +#: sql_help.c:1147 sql_help.c:1325 sql_help.c:1343 sql_help.c:1410 +#: sql_help.c:1540 sql_help.c:1611 sql_help.c:1786 sql_help.c:1935 +#: sql_help.c:1957 sql_help.c:2332 msgid "option" msgstr "opção" -#: sql_help.c:71 sql_help.c:391 sql_help.c:705 sql_help.c:1157 sql_help.c:1284 -#: sql_help.c:1661 +#: sql_help.c:89 sql_help.c:543 sql_help.c:913 sql_help.c:1411 sql_help.c:1541 +#: sql_help.c:1936 msgid "where option can be:" msgstr "onde opção pode ser:" -#: sql_help.c:72 sql_help.c:392 sql_help.c:706 sql_help.c:1056 sql_help.c:1285 -#: sql_help.c:1662 +#: sql_help.c:90 sql_help.c:544 sql_help.c:914 sql_help.c:1274 sql_help.c:1542 +#: sql_help.c:1937 msgid "connlimit" msgstr "limite_conexão" -#: sql_help.c:78 sql_help.c:559 +#: sql_help.c:96 sql_help.c:726 msgid "new_tablespace" msgstr "nova_tablespace" -#: sql_help.c:80 sql_help.c:83 sql_help.c:85 sql_help.c:237 sql_help.c:239 -#: sql_help.c:240 sql_help.c:399 sql_help.c:403 sql_help.c:406 sql_help.c:712 -#: sql_help.c:715 sql_help.c:717 sql_help.c:1124 sql_help.c:2265 -#: sql_help.c:2538 +#: sql_help.c:98 sql_help.c:101 sql_help.c:103 sql_help.c:374 sql_help.c:376 +#: sql_help.c:377 sql_help.c:551 sql_help.c:555 sql_help.c:558 sql_help.c:920 +#: sql_help.c:923 sql_help.c:925 sql_help.c:1378 sql_help.c:2601 +#: sql_help.c:2916 msgid "configuration_parameter" msgstr "parâmetro_de_configuração" -#: sql_help.c:81 sql_help.c:185 sql_help.c:238 sql_help.c:273 sql_help.c:400 -#: sql_help.c:463 sql_help.c:538 sql_help.c:554 sql_help.c:576 sql_help.c:629 -#: sql_help.c:713 sql_help.c:731 sql_help.c:1090 sql_help.c:1125 -#: sql_help.c:1126 sql_help.c:1184 sql_help.c:1355 sql_help.c:1428 -#: sql_help.c:1437 sql_help.c:1468 sql_help.c:1490 sql_help.c:1529 -#: sql_help.c:1683 sql_help.c:2539 sql_help.c:2540 +#: sql_help.c:99 sql_help.c:280 sql_help.c:324 sql_help.c:375 sql_help.c:410 +#: sql_help.c:552 sql_help.c:615 sql_help.c:702 sql_help.c:720 sql_help.c:746 +#: sql_help.c:803 sql_help.c:921 sql_help.c:939 sql_help.c:1326 +#: sql_help.c:1344 sql_help.c:1379 sql_help.c:1380 sql_help.c:1439 +#: sql_help.c:1612 sql_help.c:1686 sql_help.c:1694 sql_help.c:1726 +#: sql_help.c:1748 sql_help.c:1787 sql_help.c:1958 sql_help.c:2917 +#: sql_help.c:2918 msgid "value" msgstr "valor" -#: sql_help.c:133 +#: sql_help.c:151 msgid "target_role" msgstr "role_alvo" -#: sql_help.c:134 sql_help.c:1318 sql_help.c:2119 sql_help.c:2126 -#: sql_help.c:2138 sql_help.c:2144 sql_help.c:2348 sql_help.c:2355 -#: sql_help.c:2367 sql_help.c:2373 +#: sql_help.c:152 sql_help.c:1575 sql_help.c:2430 sql_help.c:2437 +#: sql_help.c:2449 sql_help.c:2455 sql_help.c:2684 sql_help.c:2691 +#: sql_help.c:2703 sql_help.c:2709 msgid "schema_name" msgstr "nome_esquema" -#: sql_help.c:135 +#: sql_help.c:153 msgid "abbreviated_grant_or_revoke" msgstr "comando_grant_ou_revoke" -#: sql_help.c:136 +#: sql_help.c:154 msgid "where abbreviated_grant_or_revoke is one of:" msgstr "onde comando_grant_ou_revoke é um dos:" -#: sql_help.c:137 sql_help.c:138 sql_help.c:139 sql_help.c:140 sql_help.c:141 -#: sql_help.c:142 sql_help.c:1160 sql_help.c:1161 sql_help.c:1162 -#: sql_help.c:1163 sql_help.c:1164 sql_help.c:1288 sql_help.c:1289 -#: sql_help.c:1290 sql_help.c:1291 sql_help.c:1292 sql_help.c:1665 -#: sql_help.c:1666 sql_help.c:1667 sql_help.c:1668 sql_help.c:1669 -#: sql_help.c:2120 sql_help.c:2124 sql_help.c:2127 sql_help.c:2129 -#: sql_help.c:2131 sql_help.c:2133 sql_help.c:2139 sql_help.c:2141 -#: sql_help.c:2143 sql_help.c:2145 sql_help.c:2147 sql_help.c:2148 -#: sql_help.c:2149 sql_help.c:2349 sql_help.c:2353 sql_help.c:2356 -#: sql_help.c:2358 sql_help.c:2360 sql_help.c:2362 sql_help.c:2368 -#: sql_help.c:2370 sql_help.c:2372 sql_help.c:2374 sql_help.c:2376 -#: sql_help.c:2377 sql_help.c:2378 sql_help.c:2559 +#: sql_help.c:155 sql_help.c:156 sql_help.c:157 sql_help.c:158 sql_help.c:159 +#: sql_help.c:160 sql_help.c:1414 sql_help.c:1415 sql_help.c:1416 +#: sql_help.c:1417 sql_help.c:1418 sql_help.c:1545 sql_help.c:1546 +#: sql_help.c:1547 sql_help.c:1548 sql_help.c:1549 sql_help.c:1940 +#: sql_help.c:1941 sql_help.c:1942 sql_help.c:1943 sql_help.c:1944 +#: sql_help.c:2431 sql_help.c:2435 sql_help.c:2438 sql_help.c:2440 +#: sql_help.c:2442 sql_help.c:2444 sql_help.c:2450 sql_help.c:2452 +#: sql_help.c:2454 sql_help.c:2456 sql_help.c:2458 sql_help.c:2459 +#: sql_help.c:2460 sql_help.c:2685 sql_help.c:2689 sql_help.c:2692 +#: sql_help.c:2694 sql_help.c:2696 sql_help.c:2698 sql_help.c:2704 +#: sql_help.c:2706 sql_help.c:2708 sql_help.c:2710 sql_help.c:2712 +#: sql_help.c:2713 sql_help.c:2714 sql_help.c:2937 msgid "role_name" msgstr "nome_role" -#: sql_help.c:162 sql_help.c:529 sql_help.c:531 sql_help.c:745 sql_help.c:1073 -#: sql_help.c:1077 sql_help.c:1181 sql_help.c:1441 sql_help.c:1450 -#: sql_help.c:1472 sql_help.c:2161 sql_help.c:2446 sql_help.c:2447 -#: sql_help.c:2451 sql_help.c:2456 sql_help.c:2513 sql_help.c:2514 -#: sql_help.c:2519 sql_help.c:2524 sql_help.c:2645 sql_help.c:2646 -#: sql_help.c:2650 sql_help.c:2655 sql_help.c:2722 sql_help.c:2724 -#: sql_help.c:2755 sql_help.c:2797 sql_help.c:2798 sql_help.c:2802 -#: sql_help.c:2807 +#: sql_help.c:180 sql_help.c:693 sql_help.c:695 sql_help.c:953 sql_help.c:1293 +#: sql_help.c:1297 sql_help.c:1435 sql_help.c:1698 sql_help.c:1708 +#: sql_help.c:1730 sql_help.c:2474 sql_help.c:2822 sql_help.c:2823 +#: sql_help.c:2827 sql_help.c:2832 sql_help.c:2891 sql_help.c:2892 +#: sql_help.c:2897 sql_help.c:2902 sql_help.c:3025 sql_help.c:3026 +#: sql_help.c:3030 sql_help.c:3035 sql_help.c:3106 sql_help.c:3108 +#: sql_help.c:3139 sql_help.c:3181 sql_help.c:3182 sql_help.c:3186 +#: sql_help.c:3191 msgid "expression" msgstr "expressão" -#: sql_help.c:165 +#: sql_help.c:183 msgid "domain_constraint" msgstr "restrição_domínio" -#: sql_help.c:167 sql_help.c:543 sql_help.c:845 sql_help.c:1076 -#: sql_help.c:1440 sql_help.c:1449 +#: sql_help.c:185 sql_help.c:708 sql_help.c:709 sql_help.c:728 sql_help.c:1059 +#: sql_help.c:1296 sql_help.c:1697 sql_help.c:1707 msgid "constraint_name" msgstr "nome_restrição" -#: sql_help.c:183 sql_help.c:1088 sql_help.c:1200 -msgid "valfunction" -msgstr "função_validação" +#: sql_help.c:225 sql_help.c:227 sql_help.c:229 sql_help.c:231 sql_help.c:1308 +#: sql_help.c:2080 +msgid "extension_name" +msgstr "nome_extensão" + +#: sql_help.c:226 sql_help.c:613 +msgid "new_version" +msgstr "nova_versão" + +#: sql_help.c:230 sql_help.c:232 +msgid "member_object" +msgstr "objeto_membro" + +#: sql_help.c:233 +msgid "where member_object is:" +msgstr "onde objeto_membro é:" + +#: sql_help.c:234 sql_help.c:1052 sql_help.c:2771 +msgid "agg_name" +msgstr "nome_agregação" + +#: sql_help.c:235 sql_help.c:1053 sql_help.c:2772 +msgid "agg_type" +msgstr "tipo_agregação" + +#: sql_help.c:236 sql_help.c:1054 sql_help.c:1215 sql_help.c:1219 +#: sql_help.c:1221 sql_help.c:2039 +msgid "source_type" +msgstr "tipo_origem" + +#: sql_help.c:237 sql_help.c:1055 sql_help.c:1216 sql_help.c:1220 +#: sql_help.c:1222 sql_help.c:2040 +msgid "target_type" +msgstr "tipo_destino" + +#: sql_help.c:238 sql_help.c:239 sql_help.c:240 sql_help.c:241 sql_help.c:242 +#: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:255 sql_help.c:256 +#: sql_help.c:257 sql_help.c:258 sql_help.c:259 sql_help.c:260 sql_help.c:261 +#: sql_help.c:262 sql_help.c:263 sql_help.c:264 sql_help.c:1056 +#: sql_help.c:1061 sql_help.c:1062 sql_help.c:1063 sql_help.c:1064 +#: sql_help.c:1065 sql_help.c:1066 sql_help.c:1071 sql_help.c:1076 +#: sql_help.c:1078 sql_help.c:1080 sql_help.c:1081 sql_help.c:1084 +#: sql_help.c:1085 sql_help.c:1086 sql_help.c:1087 sql_help.c:1088 +#: sql_help.c:1089 sql_help.c:1090 sql_help.c:1091 sql_help.c:1092 +#: sql_help.c:1095 sql_help.c:1096 sql_help.c:2768 sql_help.c:2773 +#: sql_help.c:2774 sql_help.c:2780 sql_help.c:2781 sql_help.c:2782 +#: sql_help.c:2783 sql_help.c:2784 +msgid "object_name" +msgstr "nome_objeto" + +#: sql_help.c:243 sql_help.c:495 sql_help.c:1067 sql_help.c:1217 +#: sql_help.c:1252 sql_help.c:1470 sql_help.c:1501 sql_help.c:1845 +#: sql_help.c:2445 sql_help.c:2699 sql_help.c:2775 sql_help.c:2848 +#: sql_help.c:2853 sql_help.c:3051 sql_help.c:3056 sql_help.c:3207 +#: sql_help.c:3212 +msgid "function_name" +msgstr "nome_função" -#: sql_help.c:215 sql_help.c:220 sql_help.c:225 sql_help.c:230 sql_help.c:851 -#: sql_help.c:1114 sql_help.c:1805 sql_help.c:2135 sql_help.c:2364 +#: sql_help.c:244 sql_help.c:352 sql_help.c:357 sql_help.c:362 sql_help.c:367 +#: sql_help.c:1068 sql_help.c:1368 sql_help.c:2106 sql_help.c:2446 +#: sql_help.c:2700 sql_help.c:2776 msgid "argmode" msgstr "modo_argumento" -#: sql_help.c:216 sql_help.c:221 sql_help.c:226 sql_help.c:231 sql_help.c:852 -#: sql_help.c:1115 sql_help.c:1806 +#: sql_help.c:245 sql_help.c:353 sql_help.c:358 sql_help.c:363 sql_help.c:368 +#: sql_help.c:1069 sql_help.c:1369 sql_help.c:2107 sql_help.c:2777 msgid "argname" msgstr "nome_argumento" -#: sql_help.c:217 sql_help.c:222 sql_help.c:227 sql_help.c:232 sql_help.c:853 -#: sql_help.c:1116 sql_help.c:1807 +#: sql_help.c:246 sql_help.c:354 sql_help.c:359 sql_help.c:364 sql_help.c:369 +#: sql_help.c:1070 sql_help.c:1370 sql_help.c:2108 sql_help.c:2778 msgid "argtype" msgstr "tipo_argumento" -#: sql_help.c:218 sql_help.c:514 sql_help.c:1446 sql_help.c:1447 -#: sql_help.c:1463 sql_help.c:1464 +#: sql_help.c:247 sql_help.c:488 sql_help.c:1073 sql_help.c:1494 +msgid "operator_name" +msgstr "nome_operador" + +#: sql_help.c:248 sql_help.c:443 sql_help.c:447 sql_help.c:1074 +#: sql_help.c:1471 sql_help.c:2141 +msgid "left_type" +msgstr "tipo_esquerda" + +#: sql_help.c:249 sql_help.c:444 sql_help.c:448 sql_help.c:1075 +#: sql_help.c:1472 sql_help.c:2142 +msgid "right_type" +msgstr "tipo_direita" + +#: sql_help.c:251 sql_help.c:253 sql_help.c:460 sql_help.c:463 sql_help.c:466 +#: sql_help.c:486 sql_help.c:498 sql_help.c:506 sql_help.c:509 sql_help.c:512 +#: sql_help.c:1077 sql_help.c:1079 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1713 sql_help.c:2151 sql_help.c:2160 +msgid "index_method" +msgstr "método_índice" + +#: sql_help.c:277 sql_help.c:1323 +msgid "handler_function" +msgstr "função_manipulação" + +#: sql_help.c:278 sql_help.c:1324 +msgid "validator_function" +msgstr "função_validação" + +#: sql_help.c:307 sql_help.c:355 sql_help.c:676 sql_help.c:863 sql_help.c:1704 +#: sql_help.c:1705 sql_help.c:1721 sql_help.c:1722 msgid "action" msgstr "ação" -#: sql_help.c:234 sql_help.c:522 +#: sql_help.c:309 sql_help.c:316 sql_help.c:318 sql_help.c:319 sql_help.c:321 +#: sql_help.c:596 sql_help.c:678 sql_help.c:685 sql_help.c:689 sql_help.c:690 +#: sql_help.c:694 sql_help.c:696 sql_help.c:697 sql_help.c:698 sql_help.c:700 +#: sql_help.c:703 sql_help.c:705 sql_help.c:952 sql_help.c:955 sql_help.c:970 +#: sql_help.c:1140 sql_help.c:1144 sql_help.c:1156 sql_help.c:1157 +#: sql_help.c:1434 sql_help.c:1597 sql_help.c:1729 sql_help.c:2432 +#: sql_help.c:2433 sql_help.c:2473 sql_help.c:2686 sql_help.c:2687 +#: sql_help.c:3105 sql_help.c:3107 sql_help.c:3124 sql_help.c:3127 +msgid "column" +msgstr "coluna" + +#: sql_help.c:310 sql_help.c:679 +msgid "new_column" +msgstr "nova_coluna" + +#: sql_help.c:315 sql_help.c:371 sql_help.c:684 sql_help.c:876 msgid "where action is one of:" msgstr "onde ação é uma das:" -#: sql_help.c:235 sql_help.c:1122 +#: sql_help.c:372 sql_help.c:1376 msgid "execution_cost" msgstr "custo_execução" -#: sql_help.c:236 sql_help.c:1123 +#: sql_help.c:373 sql_help.c:1377 msgid "result_rows" msgstr "registros_retornados" -#: sql_help.c:251 sql_help.c:253 sql_help.c:255 +#: sql_help.c:388 sql_help.c:390 sql_help.c:392 msgid "group_name" msgstr "nome_grupo" -#: sql_help.c:252 sql_help.c:254 sql_help.c:728 sql_help.c:1050 -#: sql_help.c:1319 sql_help.c:1321 sql_help.c:1501 sql_help.c:1680 -#: sql_help.c:1989 sql_help.c:2569 +#: sql_help.c:389 sql_help.c:391 sql_help.c:936 sql_help.c:1268 +#: sql_help.c:1576 sql_help.c:1578 sql_help.c:1759 sql_help.c:1955 +#: sql_help.c:2290 sql_help.c:2947 msgid "user_name" msgstr "nome_usuário" -#: sql_help.c:270 sql_help.c:1500 sql_help.c:1924 sql_help.c:2146 -#: sql_help.c:2375 +#: sql_help.c:407 sql_help.c:1758 sql_help.c:2225 sql_help.c:2457 +#: sql_help.c:2711 msgid "tablespace_name" msgstr "nome_tablespace" -#: sql_help.c:272 sql_help.c:275 sql_help.c:553 sql_help.c:555 sql_help.c:1183 -#: sql_help.c:1427 sql_help.c:1436 sql_help.c:1467 sql_help.c:1489 +#: sql_help.c:409 sql_help.c:412 sql_help.c:719 sql_help.c:721 sql_help.c:1438 +#: sql_help.c:1685 sql_help.c:1693 sql_help.c:1725 sql_help.c:1747 msgid "storage_parameter" msgstr "parâmetro_armazenamento" -#: sql_help.c:295 sql_help.c:855 +#: sql_help.c:432 sql_help.c:1072 sql_help.c:2779 msgid "large_object_oid" msgstr "oid_objeto_grande" -#: sql_help.c:305 sql_help.c:857 sql_help.c:1216 sql_help.c:1840 -msgid "left_type" -msgstr "tipo_esquerda" - -#: sql_help.c:306 sql_help.c:858 sql_help.c:1217 sql_help.c:1841 -msgid "right_type" -msgstr "tipo_direita" - -#: sql_help.c:317 sql_help.c:320 sql_help.c:339 sql_help.c:350 sql_help.c:358 -#: sql_help.c:361 sql_help.c:860 sql_help.c:862 sql_help.c:1236 -#: sql_help.c:1256 sql_help.c:1455 sql_help.c:1850 sql_help.c:1859 -msgid "index_method" -msgstr "método_índice" - -#: sql_help.c:340 sql_help.c:351 sql_help.c:1238 +#: sql_help.c:487 sql_help.c:499 sql_help.c:1493 msgid "strategy_number" msgstr "número_estratégia" -#: sql_help.c:341 sql_help.c:856 sql_help.c:1239 -msgid "operator_name" -msgstr "nome_operador" - -#: sql_help.c:342 sql_help.c:343 sql_help.c:345 sql_help.c:346 sql_help.c:352 -#: sql_help.c:353 sql_help.c:355 sql_help.c:356 sql_help.c:1240 -#: sql_help.c:1241 sql_help.c:1243 sql_help.c:1244 +#: sql_help.c:489 sql_help.c:490 sql_help.c:493 sql_help.c:494 sql_help.c:500 +#: sql_help.c:501 sql_help.c:503 sql_help.c:504 sql_help.c:1495 +#: sql_help.c:1496 sql_help.c:1499 sql_help.c:1500 msgid "op_type" msgstr "tipo_operador" -#: sql_help.c:344 sql_help.c:354 sql_help.c:1242 +#: sql_help.c:491 sql_help.c:1497 +msgid "sort_family_name" +msgstr "nome_família_ordenação" + +#: sql_help.c:492 sql_help.c:502 sql_help.c:1498 msgid "support_number" msgstr "número_suporte" -#: sql_help.c:347 sql_help.c:850 sql_help.c:996 sql_help.c:1021 -#: sql_help.c:1034 sql_help.c:1215 sql_help.c:1245 sql_help.c:1576 -#: sql_help.c:2134 sql_help.c:2363 sql_help.c:2472 sql_help.c:2477 -#: sql_help.c:2671 sql_help.c:2676 sql_help.c:2823 sql_help.c:2828 -msgid "function_name" -msgstr "nome_função" - -#: sql_help.c:348 sql_help.c:997 sql_help.c:1246 +#: sql_help.c:496 sql_help.c:1218 sql_help.c:1502 msgid "argument_type" msgstr "tipo_argumento" -#: sql_help.c:393 sql_help.c:707 sql_help.c:1158 sql_help.c:1286 -#: sql_help.c:1663 +#: sql_help.c:545 sql_help.c:915 sql_help.c:1412 sql_help.c:1543 +#: sql_help.c:1938 msgid "password" msgstr "senha" -#: sql_help.c:394 sql_help.c:708 sql_help.c:1159 sql_help.c:1287 -#: sql_help.c:1664 +#: sql_help.c:546 sql_help.c:916 sql_help.c:1413 sql_help.c:1544 +#: sql_help.c:1939 msgid "timestamp" msgstr "tempo_absoluto" -#: sql_help.c:398 sql_help.c:402 sql_help.c:405 sql_help.c:408 sql_help.c:2128 -#: sql_help.c:2357 +#: sql_help.c:550 sql_help.c:554 sql_help.c:557 sql_help.c:560 sql_help.c:2439 +#: sql_help.c:2693 msgid "database_name" msgstr "nome_banco_de_dados" -#: sql_help.c:437 sql_help.c:1334 +#: sql_help.c:589 sql_help.c:1591 msgid "increment" msgstr "incremento" -#: sql_help.c:438 sql_help.c:1335 +#: sql_help.c:590 sql_help.c:1592 msgid "minvalue" msgstr "valor_mínimo" -#: sql_help.c:439 sql_help.c:1336 +#: sql_help.c:591 sql_help.c:1593 msgid "maxvalue" msgstr "valor_máximo" -#: sql_help.c:440 sql_help.c:1337 sql_help.c:2459 sql_help.c:2527 -#: sql_help.c:2658 sql_help.c:2759 sql_help.c:2810 +#: sql_help.c:592 sql_help.c:1594 sql_help.c:2835 sql_help.c:2905 +#: sql_help.c:3038 sql_help.c:3143 sql_help.c:3194 msgid "start" msgstr "início" -#: sql_help.c:441 +#: sql_help.c:593 msgid "restart" msgstr "reinício" -#: sql_help.c:442 sql_help.c:1338 +#: sql_help.c:594 sql_help.c:1595 msgid "cache" msgstr "cache" -#: sql_help.c:444 sql_help.c:516 sql_help.c:523 sql_help.c:526 sql_help.c:527 -#: sql_help.c:530 sql_help.c:532 sql_help.c:533 sql_help.c:534 sql_help.c:536 -#: sql_help.c:539 sql_help.c:541 sql_help.c:744 sql_help.c:747 sql_help.c:762 -#: sql_help.c:920 sql_help.c:924 sql_help.c:936 sql_help.c:937 sql_help.c:1180 -#: sql_help.c:1340 sql_help.c:1471 sql_help.c:2121 sql_help.c:2122 -#: sql_help.c:2160 sql_help.c:2350 sql_help.c:2351 sql_help.c:2721 -#: sql_help.c:2723 sql_help.c:2740 sql_help.c:2743 -msgid "column" -msgstr "coluna" - -#: sql_help.c:460 sql_help.c:464 sql_help.c:729 sql_help.c:1350 -#: sql_help.c:1681 sql_help.c:1908 sql_help.c:1990 sql_help.c:2132 -#: sql_help.c:2361 +#: sql_help.c:612 sql_help.c:616 sql_help.c:937 sql_help.c:1342 +#: sql_help.c:1607 sql_help.c:1956 sql_help.c:2209 sql_help.c:2291 +#: sql_help.c:2443 sql_help.c:2697 msgid "server_name" msgstr "nome_servidor" -#: sql_help.c:461 -msgid "new_version" -msgstr "nova_versão" +#: sql_help.c:686 sql_help.c:691 sql_help.c:878 sql_help.c:882 sql_help.c:1291 +#: sql_help.c:1341 sql_help.c:1490 sql_help.c:1678 sql_help.c:1885 +#: sql_help.c:2558 +msgid "data_type" +msgstr "tipo_de_dado" -#: sql_help.c:517 -msgid "new_column" -msgstr "nova_coluna" +#: sql_help.c:687 sql_help.c:692 sql_help.c:879 sql_help.c:883 sql_help.c:1292 +#: sql_help.c:1436 sql_help.c:1679 sql_help.c:1886 +msgid "collation" +msgstr "ordenação" -#: sql_help.c:525 sql_help.c:1422 sql_help.c:1434 +#: sql_help.c:688 sql_help.c:1680 sql_help.c:1691 msgid "column_constraint" msgstr "restrição_coluna" -#: sql_help.c:535 +#: sql_help.c:699 msgid "integer" msgstr "inteiro" -#: sql_help.c:537 sql_help.c:540 +#: sql_help.c:701 sql_help.c:704 msgid "attribute_option" msgstr "opção_atributo" -#: sql_help.c:542 sql_help.c:1423 sql_help.c:1435 +#: sql_help.c:706 sql_help.c:1681 sql_help.c:1692 msgid "table_constraint" msgstr "restrição_tabela" -#: sql_help.c:544 sql_help.c:545 sql_help.c:546 sql_help.c:547 sql_help.c:874 +#: sql_help.c:707 +msgid "table_constraint_using_index" +msgstr "restrição_tabela_utilizando_índice" + +#: sql_help.c:710 sql_help.c:711 sql_help.c:712 sql_help.c:713 sql_help.c:1093 msgid "trigger_name" msgstr "nome_gatilho" -#: sql_help.c:548 sql_help.c:549 sql_help.c:550 sql_help.c:551 +#: sql_help.c:714 sql_help.c:715 sql_help.c:716 sql_help.c:717 msgid "rewrite_rule_name" msgstr "nome_regra_reescrita" -#: sql_help.c:552 sql_help.c:801 +#: sql_help.c:718 sql_help.c:729 sql_help.c:1010 msgid "index_name" msgstr "nome_índice" -#: sql_help.c:556 sql_help.c:557 sql_help.c:1424 sql_help.c:1426 +#: sql_help.c:722 sql_help.c:723 sql_help.c:1682 sql_help.c:1684 msgid "parent_table" msgstr "tabela_ancestral" -#: sql_help.c:575 sql_help.c:578 +#: sql_help.c:724 sql_help.c:1689 +msgid "type_name" +msgstr "nome_tipo" + +#: sql_help.c:727 +msgid "and table_constraint_using_index is:" +msgstr "e restrição_tabela_utilizando_índice é:" + +#: sql_help.c:745 sql_help.c:748 msgid "tablespace_option" msgstr "opção_tablespace" -#: sql_help.c:598 sql_help.c:601 sql_help.c:607 sql_help.c:611 +#: sql_help.c:769 sql_help.c:772 sql_help.c:778 sql_help.c:782 msgid "token_type" msgstr "tipo_elemento" -#: sql_help.c:599 sql_help.c:602 +#: sql_help.c:770 sql_help.c:773 msgid "dictionary_name" msgstr "nome_dicionário" -#: sql_help.c:604 sql_help.c:608 +#: sql_help.c:775 sql_help.c:779 msgid "old_dictionary" msgstr "dicionário_antigo" -#: sql_help.c:605 sql_help.c:609 +#: sql_help.c:776 sql_help.c:780 msgid "new_dictionary" msgstr "novo_dicionário" -#: sql_help.c:775 sql_help.c:2583 sql_help.c:2584 sql_help.c:2607 +#: sql_help.c:867 sql_help.c:877 sql_help.c:880 sql_help.c:881 sql_help.c:1884 +msgid "attribute_name" +msgstr "nome_atributo" + +#: sql_help.c:868 +msgid "new_attribute_name" +msgstr "novo_nome_atributo" + +#: sql_help.c:874 +msgid "new_enum_value" +msgstr "novo_valor_enum" + +#: sql_help.c:875 +msgid "existing_enum_value" +msgstr "valor_enum_existente" + +#: sql_help.c:984 sql_help.c:2962 sql_help.c:2963 sql_help.c:2987 msgid "transaction_mode" msgstr "modo_transação" -#: sql_help.c:776 sql_help.c:2585 sql_help.c:2608 +#: sql_help.c:985 sql_help.c:2964 sql_help.c:2988 msgid "where transaction_mode is one of:" msgstr "onde modo_transação é um dos:" -#: sql_help.c:800 sql_help.c:839 sql_help.c:846 sql_help.c:866 sql_help.c:875 -#: sql_help.c:919 sql_help.c:923 sql_help.c:1018 sql_help.c:1418 -#: sql_help.c:1430 sql_help.c:1487 sql_help.c:2118 sql_help.c:2123 -#: sql_help.c:2347 sql_help.c:2352 sql_help.c:2461 sql_help.c:2463 -#: sql_help.c:2489 sql_help.c:2529 sql_help.c:2660 sql_help.c:2662 -#: sql_help.c:2688 sql_help.c:2812 sql_help.c:2814 sql_help.c:2840 +#: sql_help.c:1009 sql_help.c:1060 sql_help.c:1083 sql_help.c:1094 +#: sql_help.c:1139 sql_help.c:1143 sql_help.c:1339 sql_help.c:1676 +#: sql_help.c:1688 sql_help.c:1745 sql_help.c:2429 sql_help.c:2434 +#: sql_help.c:2683 sql_help.c:2688 sql_help.c:2769 sql_help.c:2837 +#: sql_help.c:2839 sql_help.c:2868 sql_help.c:2907 sql_help.c:3040 +#: sql_help.c:3042 sql_help.c:3071 sql_help.c:3196 sql_help.c:3198 +#: sql_help.c:3227 msgid "table_name" msgstr "nome_tabela" -#: sql_help.c:838 sql_help.c:847 sql_help.c:848 sql_help.c:849 sql_help.c:854 -#: sql_help.c:859 sql_help.c:861 sql_help.c:863 sql_help.c:864 sql_help.c:867 -#: sql_help.c:868 sql_help.c:869 sql_help.c:870 sql_help.c:871 sql_help.c:872 -#: sql_help.c:873 sql_help.c:876 sql_help.c:877 -msgid "object_name" -msgstr "nome_objeto" +#: sql_help.c:1057 +msgid "relation_name" +msgstr "nome_relação" -#: sql_help.c:840 sql_help.c:1119 sql_help.c:1419 sql_help.c:1432 -#: sql_help.c:1451 sql_help.c:1453 sql_help.c:1460 sql_help.c:1488 -#: sql_help.c:1693 sql_help.c:2487 sql_help.c:2686 sql_help.c:2838 +#: sql_help.c:1058 sql_help.c:1340 sql_help.c:1373 sql_help.c:1677 +#: sql_help.c:1690 sql_help.c:1709 sql_help.c:1711 sql_help.c:1718 +#: sql_help.c:1746 sql_help.c:1848 sql_help.c:1968 sql_help.c:2770 +#: sql_help.c:2863 sql_help.c:3066 sql_help.c:3222 msgid "column_name" msgstr "nome_coluna" -#: sql_help.c:841 -msgid "agg_name" -msgstr "nome_agregação" - -#: sql_help.c:842 -msgid "agg_type" -msgstr "tipo_agregação" - -#: sql_help.c:843 sql_help.c:994 sql_help.c:998 sql_help.c:1000 -#: sql_help.c:1762 -msgid "source_type" -msgstr "tipo_origem" - -#: sql_help.c:844 sql_help.c:995 sql_help.c:999 sql_help.c:1001 -#: sql_help.c:1763 -msgid "target_type" -msgstr "tipo_destino" - -#: sql_help.c:865 +#: sql_help.c:1082 msgid "rule_name" msgstr "nome_regra" -#: sql_help.c:878 +#: sql_help.c:1097 msgid "text" msgstr "texto" -#: sql_help.c:893 sql_help.c:2231 sql_help.c:2393 +#: sql_help.c:1112 sql_help.c:2567 sql_help.c:2729 msgid "transaction_id" msgstr "id_transação" -#: sql_help.c:921 sql_help.c:926 sql_help.c:2180 +#: sql_help.c:1141 sql_help.c:1146 sql_help.c:2493 msgid "filename" msgstr "arquivo" -#: sql_help.c:925 sql_help.c:1492 sql_help.c:1694 sql_help.c:1712 -#: sql_help.c:2162 +#: sql_help.c:1145 sql_help.c:1750 sql_help.c:1969 sql_help.c:1987 +#: sql_help.c:2475 msgid "query" msgstr "consulta" -#: sql_help.c:928 +#: sql_help.c:1148 sql_help.c:2335 msgid "where option can be one of:" msgstr "onde opção pod ser um das:" -#: sql_help.c:929 +#: sql_help.c:1149 msgid "format_name" msgstr "nome_formato" -#: sql_help.c:930 sql_help.c:933 sql_help.c:2023 sql_help.c:2024 -#: sql_help.c:2025 sql_help.c:2026 +#: sql_help.c:1150 sql_help.c:1153 sql_help.c:2336 sql_help.c:2337 +#: sql_help.c:2338 sql_help.c:2339 msgid "boolean" msgstr "booleano" -#: sql_help.c:931 +#: sql_help.c:1151 msgid "delimiter_character" msgstr "caracter_delimitador" -#: sql_help.c:932 +#: sql_help.c:1152 msgid "null_string" msgstr "cadeia_nula" -#: sql_help.c:934 +#: sql_help.c:1154 msgid "quote_character" msgstr "caracter_separador" -#: sql_help.c:935 +#: sql_help.c:1155 msgid "escape_character" msgstr "caracter_escape" -#: sql_help.c:963 +#: sql_help.c:1158 +msgid "encoding_name" +msgstr "nome_codificação" + +#: sql_help.c:1184 msgid "input_data_type" msgstr "tipo_de_dado_entrada" -#: sql_help.c:964 sql_help.c:972 +#: sql_help.c:1185 sql_help.c:1193 msgid "sfunc" msgstr "função_trans_estado" -#: sql_help.c:965 sql_help.c:973 +#: sql_help.c:1186 sql_help.c:1194 msgid "state_data_type" msgstr "tipo_de_dado_estado" -#: sql_help.c:966 sql_help.c:974 +#: sql_help.c:1187 sql_help.c:1195 msgid "ffunc" msgstr "função_final" -#: sql_help.c:967 sql_help.c:975 +#: sql_help.c:1188 sql_help.c:1196 msgid "initial_condition" msgstr "condição_inicial" -#: sql_help.c:968 sql_help.c:976 +#: sql_help.c:1189 sql_help.c:1197 msgid "sort_operator" msgstr "operador_ordenação" -#: sql_help.c:969 +#: sql_help.c:1190 msgid "or the old syntax" msgstr "ou a sintaxe antiga" -#: sql_help.c:971 +#: sql_help.c:1192 msgid "base_type" msgstr "tipo_base" -#: sql_help.c:1017 sql_help.c:1304 sql_help.c:1573 -msgid "event" -msgstr "evento" +#: sql_help.c:1236 +msgid "locale" +msgstr "configuração regional" -#: sql_help.c:1019 -msgid "referenced_table_name" -msgstr "nome_tabela_referenciada" +#: sql_help.c:1237 sql_help.c:1271 +msgid "lc_collate" +msgstr "lc_collate" -#: sql_help.c:1020 sql_help.c:1306 sql_help.c:1575 sql_help.c:1726 -#: sql_help.c:2450 sql_help.c:2452 sql_help.c:2518 sql_help.c:2520 -#: sql_help.c:2649 sql_help.c:2651 sql_help.c:2726 sql_help.c:2801 -#: sql_help.c:2803 -msgid "condition" -msgstr "condição" +#: sql_help.c:1238 sql_help.c:1272 +msgid "lc_ctype" +msgstr "lc_ctype" -#: sql_help.c:1022 sql_help.c:1577 -msgid "arguments" -msgstr "argumentos" +#: sql_help.c:1240 +msgid "existing_collation" +msgstr "ordenação_existente" -#: sql_help.c:1032 +#: sql_help.c:1250 msgid "source_encoding" msgstr "codificação_origem" -#: sql_help.c:1033 +#: sql_help.c:1251 msgid "dest_encoding" msgstr "codificação_destino" -#: sql_help.c:1051 sql_help.c:1527 +#: sql_help.c:1269 sql_help.c:1785 msgid "template" msgstr "modelo" -#: sql_help.c:1052 +#: sql_help.c:1270 msgid "encoding" msgstr "codificação" -#: sql_help.c:1053 -msgid "lc_collate" -msgstr "lc_collate" - -#: sql_help.c:1054 -msgid "lc_ctype" -msgstr "lc_ctype" - -#: sql_help.c:1055 sql_help.c:1185 sql_help.c:1429 sql_help.c:1438 -#: sql_help.c:1469 sql_help.c:1491 +#: sql_help.c:1273 sql_help.c:1440 sql_help.c:1687 sql_help.c:1695 +#: sql_help.c:1727 sql_help.c:1749 msgid "tablespace" msgstr "tablespace" -#: sql_help.c:1072 sql_help.c:1235 sql_help.c:1420 sql_help.c:1613 -#: sql_help.c:2222 -msgid "data_type" -msgstr "tipo_de_dado" - -#: sql_help.c:1074 +#: sql_help.c:1294 msgid "constraint" msgstr "restrição" -#: sql_help.c:1075 +#: sql_help.c:1295 msgid "where constraint is:" msgstr "onde restrição é:" -#: sql_help.c:1117 sql_help.c:1421 sql_help.c:1433 +#: sql_help.c:1309 +msgid "schema" +msgstr "esquema" + +#: sql_help.c:1310 +msgid "version" +msgstr "versão" + +#: sql_help.c:1311 +msgid "old_version" +msgstr "versão_antiga" + +#: sql_help.c:1371 sql_help.c:1699 msgid "default_expr" msgstr "expressão_padrão" -#: sql_help.c:1118 +#: sql_help.c:1372 msgid "rettype" msgstr "tipo_retorno" -#: sql_help.c:1120 +#: sql_help.c:1374 msgid "column_type" msgstr "tipo_coluna" -#: sql_help.c:1121 sql_help.c:1744 sql_help.c:2140 sql_help.c:2369 +#: sql_help.c:1375 sql_help.c:2021 sql_help.c:2451 sql_help.c:2705 msgid "lang_name" msgstr "nome_linguagem" -#: sql_help.c:1127 +#: sql_help.c:1381 msgid "definition" msgstr "definição" -#: sql_help.c:1128 +#: sql_help.c:1382 msgid "obj_file" msgstr "arquivo_objeto" -#: sql_help.c:1129 +#: sql_help.c:1383 msgid "link_symbol" msgstr "símbolo_ligação" -#: sql_help.c:1130 +#: sql_help.c:1384 msgid "attribute" msgstr "atributo" -#: sql_help.c:1165 sql_help.c:1293 sql_help.c:1670 +#: sql_help.c:1419 sql_help.c:1550 sql_help.c:1945 msgid "uid" msgstr "uid" -#: sql_help.c:1179 +#: sql_help.c:1433 msgid "method" msgstr "método" -#: sql_help.c:1182 sql_help.c:1473 +#: sql_help.c:1437 sql_help.c:1731 msgid "opclass" msgstr "classe_operadores" -#: sql_help.c:1186 sql_help.c:1459 +#: sql_help.c:1441 sql_help.c:1717 msgid "predicate" msgstr "predicado" -#: sql_help.c:1198 +#: sql_help.c:1453 msgid "call_handler" msgstr "manipulador_chamada" -#: sql_help.c:1199 +#: sql_help.c:1454 msgid "inline_handler" msgstr "manipulador_em_linha" -#: sql_help.c:1218 +#: sql_help.c:1455 +msgid "valfunction" +msgstr "função_validação" + +#: sql_help.c:1473 msgid "com_op" msgstr "operador_comutação" -#: sql_help.c:1219 +#: sql_help.c:1474 msgid "neg_op" msgstr "operador_negação" -#: sql_help.c:1220 +#: sql_help.c:1475 msgid "res_proc" msgstr "proc_restrição" -#: sql_help.c:1221 +#: sql_help.c:1476 msgid "join_proc" msgstr "proc_junção" -#: sql_help.c:1237 +#: sql_help.c:1492 msgid "family_name" msgstr "nome_família" -#: sql_help.c:1247 +#: sql_help.c:1503 msgid "storage_type" msgstr "tipo_armazenamento" -#: sql_help.c:1307 sql_help.c:1308 sql_help.c:1309 +#: sql_help.c:1561 sql_help.c:1841 +msgid "event" +msgstr "evento" + +#: sql_help.c:1563 sql_help.c:1844 sql_help.c:2003 sql_help.c:2826 +#: sql_help.c:2828 sql_help.c:2896 sql_help.c:2898 sql_help.c:3029 +#: sql_help.c:3031 sql_help.c:3110 sql_help.c:3185 sql_help.c:3187 +msgid "condition" +msgstr "condição" + +#: sql_help.c:1564 sql_help.c:1565 sql_help.c:1566 msgid "command" msgstr "comando" -#: sql_help.c:1320 sql_help.c:1322 +#: sql_help.c:1577 sql_help.c:1579 msgid "schema_element" msgstr "elemento_esquema" -#: sql_help.c:1351 +#: sql_help.c:1608 msgid "server_type" msgstr "tipo_servidor" -#: sql_help.c:1352 +#: sql_help.c:1609 msgid "server_version" msgstr "versão_servidor" -#: sql_help.c:1353 sql_help.c:2130 sql_help.c:2359 +#: sql_help.c:1610 sql_help.c:2441 sql_help.c:2695 msgid "fdw_name" msgstr "nome_ade" -#: sql_help.c:1425 +#: sql_help.c:1683 msgid "like_option" msgstr "opção_like" -#: sql_help.c:1431 -msgid "type_name" -msgstr "nome_tipo" - -#: sql_help.c:1439 +#: sql_help.c:1696 msgid "where column_constraint is:" msgstr "onde restrição_coluna é:" -#: sql_help.c:1442 sql_help.c:1443 sql_help.c:1452 sql_help.c:1454 -#: sql_help.c:1458 +#: sql_help.c:1700 sql_help.c:1701 sql_help.c:1710 sql_help.c:1712 +#: sql_help.c:1716 msgid "index_parameters" msgstr "parâmetros_índice" -#: sql_help.c:1444 sql_help.c:1461 +#: sql_help.c:1702 sql_help.c:1719 msgid "reftable" msgstr "tabela_ref" -#: sql_help.c:1445 sql_help.c:1462 +#: sql_help.c:1703 sql_help.c:1720 msgid "refcolumn" msgstr "coluna_ref" -#: sql_help.c:1448 +#: sql_help.c:1706 msgid "and table_constraint is:" msgstr "e restrição_tabela é:" -#: sql_help.c:1456 +#: sql_help.c:1714 msgid "exclude_element" msgstr "elemento_exclusão" -#: sql_help.c:1465 +#: sql_help.c:1723 msgid "and like_option is:" msgstr "e opção_like é:" -#: sql_help.c:1466 +#: sql_help.c:1724 msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" msgstr "parâmetros_índice em restrições UNIQUE, PRIMARY KEY e EXCLUDE são:" -#: sql_help.c:1470 +#: sql_help.c:1728 msgid "exclude_element in an EXCLUDE constraint is:" msgstr "elemento_exclusão em uma restrição EXCLUDE é:" -#: sql_help.c:1502 +#: sql_help.c:1760 msgid "directory" msgstr "diretório" -#: sql_help.c:1514 +#: sql_help.c:1772 msgid "parser_name" msgstr "nome_analisador" -#: sql_help.c:1515 +#: sql_help.c:1773 msgid "source_config" msgstr "configuração_origem" -#: sql_help.c:1544 +#: sql_help.c:1802 msgid "start_function" msgstr "função_início" -#: sql_help.c:1545 +#: sql_help.c:1803 msgid "gettoken_function" msgstr "função_gettoken" -#: sql_help.c:1546 +#: sql_help.c:1804 msgid "end_function" msgstr "função_fim" -#: sql_help.c:1547 +#: sql_help.c:1805 msgid "lextypes_function" msgstr "função_lextypes" -#: sql_help.c:1548 +#: sql_help.c:1806 msgid "headline_function" msgstr "função_headline" -#: sql_help.c:1560 +#: sql_help.c:1818 msgid "init_function" msgstr "função_init" -#: sql_help.c:1561 +#: sql_help.c:1819 msgid "lexize_function" msgstr "função_lexize" -#: sql_help.c:1612 -msgid "attribute_name" -msgstr "nome_atributo" +#: sql_help.c:1843 +msgid "referenced_table_name" +msgstr "nome_tabela_referenciada" + +#: sql_help.c:1846 +msgid "arguments" +msgstr "argumentos" -#: sql_help.c:1615 +#: sql_help.c:1847 +msgid "where event can be one of:" +msgstr "onde evento pod ser um dos:" + +#: sql_help.c:1888 sql_help.c:2785 msgid "label" msgstr "rótulo" -#: sql_help.c:1617 +#: sql_help.c:1890 msgid "input_function" msgstr "função_entrada" -#: sql_help.c:1618 +#: sql_help.c:1891 msgid "output_function" msgstr "função_saída" -#: sql_help.c:1619 +#: sql_help.c:1892 msgid "receive_function" msgstr "função_recepção" -#: sql_help.c:1620 +#: sql_help.c:1893 msgid "send_function" msgstr "função_envio" -#: sql_help.c:1621 +#: sql_help.c:1894 msgid "type_modifier_input_function" msgstr "função_entrada_modificador_tipo" -#: sql_help.c:1622 +#: sql_help.c:1895 msgid "type_modifier_output_function" msgstr "função_saída_modificador_tipo" -#: sql_help.c:1623 +#: sql_help.c:1896 msgid "analyze_function" msgstr "função_análise" -#: sql_help.c:1624 +#: sql_help.c:1897 msgid "internallength" msgstr "tamanho_interno" -#: sql_help.c:1625 +#: sql_help.c:1898 msgid "alignment" msgstr "alinhamento" -#: sql_help.c:1626 +#: sql_help.c:1899 msgid "storage" msgstr "armazenamento" -#: sql_help.c:1627 +#: sql_help.c:1900 msgid "like_type" msgstr "tipo_like" -#: sql_help.c:1628 +#: sql_help.c:1901 msgid "category" msgstr "categoria" -#: sql_help.c:1629 +#: sql_help.c:1902 msgid "preferred" msgstr "tipo_preferido" -#: sql_help.c:1630 +#: sql_help.c:1903 msgid "default" msgstr "valor_padrão" -#: sql_help.c:1631 +#: sql_help.c:1904 msgid "element" msgstr "elemento" -#: sql_help.c:1632 +#: sql_help.c:1905 msgid "delimiter" msgstr "delimitador" -#: sql_help.c:1724 sql_help.c:2464 sql_help.c:2467 sql_help.c:2470 -#: sql_help.c:2474 sql_help.c:2663 sql_help.c:2666 sql_help.c:2669 -#: sql_help.c:2673 sql_help.c:2720 sql_help.c:2815 sql_help.c:2818 -#: sql_help.c:2821 sql_help.c:2825 +#: sql_help.c:1906 +msgid "collatable" +msgstr "collatable" + +#: sql_help.c:1999 sql_help.c:2471 sql_help.c:2821 sql_help.c:2890 +#: sql_help.c:3024 sql_help.c:3102 sql_help.c:3180 +msgid "with_query" +msgstr "consulta_with" + +#: sql_help.c:2001 sql_help.c:2840 sql_help.c:2843 sql_help.c:2846 +#: sql_help.c:2850 sql_help.c:3043 sql_help.c:3046 sql_help.c:3049 +#: sql_help.c:3053 sql_help.c:3104 sql_help.c:3199 sql_help.c:3202 +#: sql_help.c:3205 sql_help.c:3209 msgid "alias" msgstr "aliás" -#: sql_help.c:1725 +#: sql_help.c:2002 msgid "using_list" msgstr "lista_using" -#: sql_help.c:1727 sql_help.c:2054 sql_help.c:2204 sql_help.c:2727 +#: sql_help.c:2004 sql_help.c:2365 sql_help.c:2534 sql_help.c:3111 msgid "cursor_name" msgstr "nome_cursor" -#: sql_help.c:1728 sql_help.c:2163 sql_help.c:2728 +#: sql_help.c:2005 sql_help.c:2476 sql_help.c:3112 msgid "output_expression" msgstr "expressão_saída" -#: sql_help.c:1729 sql_help.c:2164 sql_help.c:2448 sql_help.c:2515 -#: sql_help.c:2647 sql_help.c:2729 sql_help.c:2799 +#: sql_help.c:2006 sql_help.c:2477 sql_help.c:2824 sql_help.c:2893 +#: sql_help.c:3027 sql_help.c:3113 sql_help.c:3183 msgid "output_name" msgstr "nome_saída" -#: sql_help.c:1745 +#: sql_help.c:2022 msgid "code" msgstr "código" -#: sql_help.c:2014 +#: sql_help.c:2315 msgid "parameter" msgstr "parâmetro" -#: sql_help.c:2027 sql_help.c:2028 sql_help.c:2223 +#: sql_help.c:2333 sql_help.c:2334 sql_help.c:2559 msgid "statement" msgstr "comando" -#: sql_help.c:2053 sql_help.c:2203 +#: sql_help.c:2364 sql_help.c:2533 msgid "direction" msgstr "direção" -#: sql_help.c:2055 +#: sql_help.c:2366 sql_help.c:2535 msgid "where direction can be empty or one of:" msgstr "onde direção pode ser vazio ou um dos:" -#: sql_help.c:2056 sql_help.c:2057 sql_help.c:2058 sql_help.c:2059 -#: sql_help.c:2060 sql_help.c:2458 sql_help.c:2460 sql_help.c:2526 -#: sql_help.c:2528 sql_help.c:2657 sql_help.c:2659 sql_help.c:2758 -#: sql_help.c:2760 sql_help.c:2809 sql_help.c:2811 +#: sql_help.c:2367 sql_help.c:2368 sql_help.c:2369 sql_help.c:2370 +#: sql_help.c:2371 sql_help.c:2536 sql_help.c:2537 sql_help.c:2538 +#: sql_help.c:2539 sql_help.c:2540 sql_help.c:2834 sql_help.c:2836 +#: sql_help.c:2904 sql_help.c:2906 sql_help.c:3037 sql_help.c:3039 +#: sql_help.c:3142 sql_help.c:3144 sql_help.c:3193 sql_help.c:3195 msgid "count" msgstr "contador" -#: sql_help.c:2125 sql_help.c:2354 +#: sql_help.c:2436 sql_help.c:2690 msgid "sequence_name" msgstr "nome_sequência" -#: sql_help.c:2136 sql_help.c:2365 +#: sql_help.c:2447 sql_help.c:2701 msgid "arg_name" msgstr "nome_argumento" -#: sql_help.c:2137 sql_help.c:2366 +#: sql_help.c:2448 sql_help.c:2702 msgid "arg_type" msgstr "tipo_argumento" -#: sql_help.c:2142 sql_help.c:2371 +#: sql_help.c:2453 sql_help.c:2707 msgid "loid" msgstr "loid" -#: sql_help.c:2172 sql_help.c:2212 sql_help.c:2706 +#: sql_help.c:2485 sql_help.c:2548 sql_help.c:3088 msgid "channel" msgstr "canal" -#: sql_help.c:2194 +#: sql_help.c:2507 msgid "lockmode" msgstr "modo_bloqueio" -#: sql_help.c:2195 +#: sql_help.c:2508 msgid "where lockmode is one of:" msgstr "onde modo_bloqueio é um dos:" -#: sql_help.c:2213 +#: sql_help.c:2549 msgid "payload" msgstr "informação" -#: sql_help.c:2239 +#: sql_help.c:2575 msgid "old_role" msgstr "role_antiga" -#: sql_help.c:2240 +#: sql_help.c:2576 msgid "new_role" msgstr "nova_role" -#: sql_help.c:2256 sql_help.c:2401 sql_help.c:2409 +#: sql_help.c:2592 sql_help.c:2737 sql_help.c:2745 msgid "savepoint_name" msgstr "nome_ponto_de_salvamento" -#: sql_help.c:2445 sql_help.c:2512 sql_help.c:2644 sql_help.c:2796 -msgid "with_query" -msgstr "consulta_with" +#: sql_help.c:2767 +msgid "provider" +msgstr "fornecedor" -#: sql_help.c:2449 sql_help.c:2480 sql_help.c:2482 sql_help.c:2517 -#: sql_help.c:2648 sql_help.c:2679 sql_help.c:2681 sql_help.c:2800 -#: sql_help.c:2831 sql_help.c:2833 +#: sql_help.c:2825 sql_help.c:2856 sql_help.c:2858 sql_help.c:2895 +#: sql_help.c:3028 sql_help.c:3059 sql_help.c:3061 sql_help.c:3184 +#: sql_help.c:3215 sql_help.c:3217 msgid "from_item" msgstr "item_from" -#: sql_help.c:2453 sql_help.c:2521 sql_help.c:2652 sql_help.c:2804 +#: sql_help.c:2829 sql_help.c:2899 sql_help.c:3032 sql_help.c:3188 msgid "window_name" msgstr "nome_deslizante" -#: sql_help.c:2454 sql_help.c:2522 sql_help.c:2653 sql_help.c:2805 +#: sql_help.c:2830 sql_help.c:2900 sql_help.c:3033 sql_help.c:3189 msgid "window_definition" msgstr "definição_deslizante" -#: sql_help.c:2455 sql_help.c:2466 sql_help.c:2488 sql_help.c:2523 -#: sql_help.c:2654 sql_help.c:2665 sql_help.c:2687 sql_help.c:2806 -#: sql_help.c:2817 sql_help.c:2839 +#: sql_help.c:2831 sql_help.c:2842 sql_help.c:2864 sql_help.c:2901 +#: sql_help.c:3034 sql_help.c:3045 sql_help.c:3067 sql_help.c:3190 +#: sql_help.c:3201 sql_help.c:3223 msgid "select" msgstr "seleção" -#: sql_help.c:2462 sql_help.c:2661 sql_help.c:2813 +#: sql_help.c:2838 sql_help.c:3041 sql_help.c:3197 msgid "where from_item can be one of:" msgstr "onde item_from pode ser um dos:" -#: sql_help.c:2465 sql_help.c:2468 sql_help.c:2471 sql_help.c:2475 -#: sql_help.c:2664 sql_help.c:2667 sql_help.c:2670 sql_help.c:2674 -#: sql_help.c:2816 sql_help.c:2819 sql_help.c:2822 sql_help.c:2826 +#: sql_help.c:2841 sql_help.c:2844 sql_help.c:2847 sql_help.c:2851 +#: sql_help.c:3044 sql_help.c:3047 sql_help.c:3050 sql_help.c:3054 +#: sql_help.c:3200 sql_help.c:3203 sql_help.c:3206 sql_help.c:3210 msgid "column_alias" msgstr "aliás_coluna" -#: sql_help.c:2469 sql_help.c:2486 sql_help.c:2490 sql_help.c:2668 -#: sql_help.c:2685 sql_help.c:2689 sql_help.c:2820 sql_help.c:2837 -#: sql_help.c:2841 +#: sql_help.c:2845 sql_help.c:2862 sql_help.c:3048 sql_help.c:3065 +#: sql_help.c:3204 sql_help.c:3221 msgid "with_query_name" msgstr "nome_consulta_with" -#: sql_help.c:2473 sql_help.c:2478 sql_help.c:2672 sql_help.c:2677 -#: sql_help.c:2824 sql_help.c:2829 +#: sql_help.c:2849 sql_help.c:2854 sql_help.c:3052 sql_help.c:3057 +#: sql_help.c:3208 sql_help.c:3213 msgid "argument" msgstr "argumento" -#: sql_help.c:2476 sql_help.c:2479 sql_help.c:2675 sql_help.c:2678 -#: sql_help.c:2827 sql_help.c:2830 +#: sql_help.c:2852 sql_help.c:2855 sql_help.c:3055 sql_help.c:3058 +#: sql_help.c:3211 sql_help.c:3214 msgid "column_definition" msgstr "definição_coluna" -#: sql_help.c:2481 sql_help.c:2680 sql_help.c:2832 +#: sql_help.c:2857 sql_help.c:3060 sql_help.c:3216 msgid "join_type" msgstr "tipo_junção" -#: sql_help.c:2483 sql_help.c:2682 sql_help.c:2834 +#: sql_help.c:2859 sql_help.c:3062 sql_help.c:3218 msgid "join_condition" msgstr "condição_junção" -#: sql_help.c:2484 sql_help.c:2683 sql_help.c:2835 +#: sql_help.c:2860 sql_help.c:3063 sql_help.c:3219 msgid "join_column" msgstr "coluna_junção" -#: sql_help.c:2485 sql_help.c:2684 sql_help.c:2836 +#: sql_help.c:2861 sql_help.c:3064 sql_help.c:3220 msgid "and with_query is:" msgstr "e consulta_with é:" -#: sql_help.c:2516 +#: sql_help.c:2865 sql_help.c:3068 sql_help.c:3224 +msgid "insert" +msgstr "inserção" + +#: sql_help.c:2866 sql_help.c:3069 sql_help.c:3225 +msgid "update" +msgstr "atualização" + +#: sql_help.c:2867 sql_help.c:3070 sql_help.c:3226 +msgid "delete" +msgstr "exclusão" + +#: sql_help.c:2894 msgid "new_table" msgstr "nova_tabela" -#: sql_help.c:2541 +#: sql_help.c:2919 msgid "timezone" msgstr "zona_horária" -#: sql_help.c:2725 +#: sql_help.c:3109 msgid "from_list" msgstr "lista_from" -#: sql_help.c:2756 +#: sql_help.c:3140 msgid "sort_expression" msgstr "expressão_ordenação" @@ -3752,27 +4099,27 @@ msgstr "não pôde mudar diretório para \"%s\"" msgid "could not read symbolic link \"%s\"" msgstr "não pôde ler link simbólico \"%s\"" -#: ../../port/exec.c:516 +#: ../../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" msgstr "processo filho terminou com código de saída %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "processo filho foi terminado pela exceção 0x%X" -#: ../../port/exec.c:529 +#: ../../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "processo filho foi terminado pelo sinal %s" -#: ../../port/exec.c:532 +#: ../../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "processo filho foi terminado pelo sinal %d" -#: ../../port/exec.c:536 +#: ../../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "processo filho terminou com status desconhecido %d" diff --git a/src/bin/psql/po/ru.po b/src/bin/psql/po/ru.po new file mode 100644 index 0000000000..2b017bc10e --- /dev/null +++ b/src/bin/psql/po/ru.po @@ -0,0 +1,4131 @@ +# Russian message translation file for psql +# Copyright (C) 2012 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# Serguei A. Mokhov , 2001-2005. +# Alexander Lakhin , 2012. +# +# ChangeLog: +# - April 2, 2012: Bug fixes. Alexander Lakhin . +# - February 22, 2012: Minor fixes: Alexander Lakhin +# - With corrections from Sergey Burladyan +# - January 29 - February 13, 2012: Fixes, completion, and updates for 9.1: Alexander Lakhin +# - January 17, 2005: Complete translation for 8.0, Serguei A. Mokhov . +# - December, 2004 - January, 2005: New translation by Oleg Bartunov . +# - March 27 - December 10, 2004: Updates for 8.0; . +# - July 26 - October 12, 2003: Updates for 7.4.x; . +# - October 12, 2002: Complete post-7.3beta2 Translation, Serguei A. Mokhov . +# - September 7, 2002: Complete post-7.3beta1 Translation, Serguei A. Mokhov . +# - August 2001 - August 2002: Initial translation and maintenance, Serguei A. Mokhov +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 9.1\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2012-09-29 22:26+0000\n" +"PO-Revision-Date: 2012-10-02 11:48+0400\n" +"Last-Translator: Alexander Lakhin \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Russian\n" +"X-Poedit-Country: RUSSIAN FEDERATION\n" +"X-Generator: Lokalize 1.4\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" + +#: command.c:113 +#, c-format +msgid "Invalid command \\%s. Try \\? for help.\n" +msgstr "Неверная команда \\%s. Справка по командам: \\?\n" + +#: command.c:115 +#, c-format +msgid "invalid command \\%s\n" +msgstr "неверная команда \\%s\n" + +#: command.c:126 +#, c-format +msgid "\\%s: extra argument \"%s\" ignored\n" +msgstr "\\%s: лишний аргумент \"%s\" пропущен\n" + +#: command.c:268 +#, c-format +msgid "could not get home directory: %s\n" +msgstr "не удалось получить путь к домашнему каталогу: %s\n" + +#: command.c:284 +#, c-format +msgid "\\%s: could not change directory to \"%s\": %s\n" +msgstr "\\%s: не удалось перейти в каталог \"%s\": %s\n" + +#: command.c:305 common.c:493 common.c:773 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "В данный момент вы не подключены к базе данных.\n" + +#: command.c:312 +#, c-format +msgid "" +"You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at " +"port \"%s\".\n" +msgstr "" +"Вы подключены к базе данных \"%s\" как пользователь \"%s\" через сокет в \"%s" +"\", порт \"%s\".\n" + +#: command.c:315 +#, c-format +msgid "" +"You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port " +"\"%s\".\n" +msgstr "" +"Вы подключены к базе данных \"%s\" как пользователь \"%s\" (сервер \"%s\", " +"порт \"%s\").\n" + +#: command.c:339 common.c:940 +#, c-format +msgid "Time: %.3f ms\n" +msgstr "Время: %.3f мс\n" + +#: command.c:524 command.c:594 command.c:1297 +msgid "no query buffer\n" +msgstr "нет буфера запросов\n" + +#: command.c:557 command.c:2519 +#, c-format +msgid "invalid line number: %s\n" +msgstr "неверный номер строки: %s\n" + +#: command.c:588 +#, c-format +msgid "The server (version %d.%d) does not support editing function source.\n" +msgstr "" +"Сервер (версия %d.%d) не поддерживает редактирование исходного кода " +"функции.\n" + +#: command.c:668 +msgid "No changes" +msgstr "Изменений нет" + +#: command.c:722 +#, c-format +msgid "%s: invalid encoding name or conversion procedure not found\n" +msgstr "" +"%s: неверное название кодировки символов или не найдена процедура " +"перекодировки\n" + +#: command.c:801 command.c:835 command.c:849 command.c:866 command.c:970 +#: command.c:1020 command.c:1277 command.c:1308 +#, c-format +msgid "\\%s: missing required argument\n" +msgstr "отсутствует необходимый аргумент \\%s\n" + +#: command.c:898 +msgid "Query buffer is empty." +msgstr "Буфер запроса пуст." + +#: command.c:908 +msgid "Enter new password: " +msgstr "Введите новый пароль: " + +#: command.c:909 +msgid "Enter it again: " +msgstr "Повторите его: " + +#: command.c:913 +#, c-format +msgid "Passwords didn't match.\n" +msgstr "Пароли не совпадают.\n" + +#: command.c:931 +#, c-format +msgid "Password encryption failed.\n" +msgstr "Ошибка при шифровании пароля.\n" + +#: command.c:999 command.c:1100 command.c:1282 +#, c-format +msgid "\\%s: error\n" +msgstr "ошибка \\%s\n" + +#: command.c:1040 +msgid "Query buffer reset (cleared)." +msgstr "Буфер запроса сброшен (очищен)." + +#: command.c:1053 +#, c-format +msgid "Wrote history to file \"%s/%s\".\n" +msgstr "История записана в файл \"%s/%s\".\n" + +#: command.c:1091 common.c:52 common.c:66 common.c:90 input.c:209 +#: mainloop.c:72 mainloop.c:234 print.c:137 print.c:151 +#, c-format +msgid "out of memory\n" +msgstr "нехватка памяти\n" + +#: command.c:1121 +#, c-format +msgid "The server (version %d.%d) does not support showing function source.\n" +msgstr "Сервер (версия %d.%d) не поддерживает вывод исходного кода функции.\n" + +#: command.c:1127 +msgid "function name is required\n" +msgstr "требуется имя функции\n" + +#: command.c:1262 +msgid "Timing is on." +msgstr "Секундомер включен." + +#: command.c:1264 +msgid "Timing is off." +msgstr "Секундомер выключен." + +#: command.c:1325 command.c:1345 command.c:1907 command.c:1914 command.c:1923 +#: command.c:1933 command.c:1942 command.c:1956 command.c:1973 command.c:2011 +#: common.c:137 copy.c:283 copy.c:361 +#, c-format +msgid "%s: %s\n" +msgstr "%s: %s\n" + +#: command.c:1427 startup.c:159 +msgid "Password: " +msgstr "Пароль: " + +#: command.c:1434 startup.c:162 startup.c:164 +#, c-format +msgid "Password for user %s: " +msgstr "Пароль пользователя %s: " + +#: command.c:1553 command.c:2553 common.c:183 common.c:460 common.c:525 +#: common.c:816 common.c:841 common.c:925 copy.c:432 copy.c:477 copy.c:607 +#, c-format +msgid "%s" +msgstr "%s" + +#: command.c:1557 +msgid "Previous connection kept\n" +msgstr "Сохранено предыдущее подключение\n" + +#: command.c:1561 +#, c-format +msgid "\\connect: %s" +msgstr "\\connect: %s" + +#: command.c:1594 +#, c-format +msgid "" +"You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" " +"at port \"%s\".\n" +msgstr "" +"Вы подключены к базе данных \"%s\" как пользователь \"%s\" через сокет в \"%s" +"\", порт \"%s\".\n" + +#: command.c:1597 +#, c-format +msgid "" +"You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at " +"port \"%s\".\n" +msgstr "" +"Вы подключены к базе данных \"%s\" как пользователь \"%s\" (сервер \"%s\", " +"порт \"%s\") .\n" + +#: command.c:1601 +#, c-format +msgid "You are now connected to database \"%s\" as user \"%s\".\n" +msgstr "Вы подключены к базе данных \"%s\" как пользователь \"%s\".\n" + +#: command.c:1635 +#, c-format +msgid "%s (%s, server %s)\n" +msgstr "%s (%s, сервер %s)\n" + +#: command.c:1643 +#, c-format +msgid "" +"WARNING: %s version %d.%d, server version %d.%d.\n" +" Some psql features might not work.\n" +msgstr "" +"ПРЕДУПРЕЖДЕНИЕ: %s имеет версию %d.%d, а сервер - %d.%d.\n" +" Часть функций psql может не работать.\n" + +#: command.c:1673 +#, c-format +msgid "SSL connection (cipher: %s, bits: %i)\n" +msgstr "SSL-соединение (шифр: %s, бит: %i)\n" + +#: command.c:1683 +#, c-format +msgid "SSL connection (unknown cipher)\n" +msgstr "SSL-соединение (шифр неизвестен)\n" + +#: command.c:1704 +#, c-format +msgid "" +"WARNING: Console code page (%u) differs from Windows code page (%u)\n" +" 8-bit characters might not work correctly. See psql reference\n" +" page \"Notes for Windows users\" for details.\n" +msgstr "" +"ПРЕДУПРЕЖДЕНИЕ: Кодовая страница консоли (%u) отличается от основной\n" +" страницы Windows (%u).\n" +" 8-битовые (русские) символы могут отображаться некорректно.\n" +" Подробнее об этом смотрите документацию psql, раздел\n" +" \"Notes for Windows users\".\n" + +#: command.c:1788 +msgid "" +"environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a " +"line number\n" +msgstr "" +"в переменной окружения PSQL_EDITOR_LINENUMBER_ARG должен быть указан номер " +"строки\n" + +#: command.c:1825 +#, c-format +msgid "could not start editor \"%s\"\n" +msgstr "не удалось запустить редактор \"%s\"\n" + +#: command.c:1827 +msgid "could not start /bin/sh\n" +msgstr "не удалось запустить /bin/sh\n" + +#: command.c:1865 +#, c-format +msgid "could not locate temporary directory: %s\n" +msgstr "не удалось найти временный каталог: %s\n" + +#: command.c:1892 +#, c-format +msgid "could not open temporary file \"%s\": %s\n" +msgstr "не удалось открыть временный файл \"%s\": %s\n" + +#: command.c:2122 +msgid "" +"\\pset: allowed formats are unaligned, aligned, wrapped, html, latex, troff-" +"ms\n" +msgstr "" +"допустимые форматы \\pset: unaligned, aligned, wrapped, html, latex, troff-" +"ms\n" + +#: command.c:2127 +#, c-format +msgid "Output format is %s.\n" +msgstr "Формат вывода: %s.\n" + +#: command.c:2143 +msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" +msgstr "допустимые стили линий для \\pset: ascii, old-ascii, unicode\n" + +#: command.c:2148 +#, c-format +msgid "Line style is %s.\n" +msgstr "Установлен стиль линий: %s.\n" + +#: command.c:2159 +#, c-format +msgid "Border style is %d.\n" +msgstr "Установлен стиль границ: %d.\n" + +#: command.c:2171 +#, c-format +msgid "Expanded display is on.\n" +msgstr "Расширенный вывод включен.\n" + +#: command.c:2172 +#, c-format +msgid "Expanded display is off.\n" +msgstr "Расширенный вывод выключен.\n" + +#: command.c:2185 +msgid "Showing locale-adjusted numeric output." +msgstr "Числа выводятся в локализованном формате." + +#: command.c:2187 +msgid "Locale-adjusted numeric output is off." +msgstr "Локализованный вывод чисел выключен." + +#: command.c:2200 +#, c-format +msgid "Null display is \"%s\".\n" +msgstr "Null выводится как: \"%s\".\n" + +#: command.c:2212 +#, c-format +msgid "Field separator is \"%s\".\n" +msgstr "Разделитель полей: \"%s\".\n" + +#: command.c:2226 +#, c-format +msgid "Record separator is ." +msgstr "Разделитель записей: <новая строка>." + +#: command.c:2228 +#, c-format +msgid "Record separator is \"%s\".\n" +msgstr "Разделитель записей: \"%s\".\n" + +#: command.c:2242 +msgid "Showing only tuples." +msgstr "Выводятся только кортежи." + +#: command.c:2244 +msgid "Tuples only is off." +msgstr "Режим вывода только кортежей выключен." + +#: command.c:2260 +#, c-format +msgid "Title is \"%s\".\n" +msgstr "Заголовок: \"%s\".\n" + +#: command.c:2262 +#, c-format +msgid "Title is unset.\n" +msgstr "Заголовок не задан.\n" + +#: command.c:2278 +#, c-format +msgid "Table attribute is \"%s\".\n" +msgstr "Атрибут HTML-таблицы: \"%s\".\n" + +#: command.c:2280 +#, c-format +msgid "Table attributes unset.\n" +msgstr "Атрибуты HTML-таблицы не заданы.\n" + +#: command.c:2301 +msgid "Pager is used for long output." +msgstr "Вывод длинного текста через постраничник." + +#: command.c:2303 +msgid "Pager is always used." +msgstr "Вывод всего текста через постраничник." + +#: command.c:2305 +msgid "Pager usage is off." +msgstr "Вывод без постраничника." + +#: command.c:2319 +msgid "Default footer is on." +msgstr "Строка итогов включена." + +#: command.c:2321 +msgid "Default footer is off." +msgstr "Строка итогов выключена." + +#: command.c:2332 +#, c-format +msgid "Target width for \"wrapped\" format is %d.\n" +msgstr "Ширина вывода для формата \"wrapped\": %d.\n" + +#: command.c:2337 +#, c-format +msgid "\\pset: unknown option: %s\n" +msgstr "неизвестный параметр \\pset: %s\n" + +#: command.c:2391 +msgid "\\!: failed\n" +msgstr "\\!: ошибка\n" + +#: common.c:45 +#, c-format +msgid "%s: pg_strdup: cannot duplicate null pointer (internal error)\n" +msgstr "" +"%s: pg_strdup: попытка сделать копию нулевого указателя (внутренняя ошибка)\n" + +#: common.c:343 +msgid "connection to server was lost\n" +msgstr "подключение к серверу было потеряно\n" + +#: common.c:347 +msgid "The connection to the server was lost. Attempting reset: " +msgstr "Подключение к серверу потеряно. Попытка восстановления " + +#: common.c:352 +msgid "Failed.\n" +msgstr "неудачна.\n" + +#: common.c:359 +msgid "Succeeded.\n" +msgstr "удачна.\n" + +#: common.c:499 common.c:506 common.c:799 +#, c-format +msgid "" +"********* QUERY **********\n" +"%s\n" +"**************************\n" +"\n" +msgstr "" +"********* ЗАПРОС *********\n" +"%s\n" +"**************************\n" +"\n" + +#: common.c:560 +#, c-format +msgid "" +"Asynchronous notification \"%s\" with payload \"%s\" received from server " +"process with PID %d.\n" +msgstr "" +"Получено асинхронное уведомление \"%s\" с сообщением-нагрузкой \"%s\" от " +"серверного процесса с PID %d.\n" + +#: common.c:563 +#, c-format +msgid "" +"Asynchronous notification \"%s\" received from server process with PID %d.\n" +msgstr "" +"Получено асинхронное уведомление \"%s\" от серверного процесса с PID %d.\n" + +#: common.c:781 +#, c-format +msgid "" +"***(Single step mode: verify command)" +"*******************************************\n" +"%s\n" +"***(press return to proceed or enter x and return to cancel)" +"********************\n" +msgstr "" +"***(Пошаговый режим: проверка команды)" +"******************************************\n" +"%s\n" +"***(Enter - выполнение; x и Enter - отмена)**************\n" + +#: common.c:832 +#, c-format +msgid "" +"The server (version %d.%d) does not support savepoints for " +"ON_ERROR_ROLLBACK.\n" +msgstr "" +"Сервер (версия %d.%d) не поддерживает точки сохранения для " +"ON_ERROR_ROLLBACK.\n" + +#: copy.c:96 +msgid "\\copy: arguments required\n" +msgstr "укажите аргументы \\copy\n" + +#: copy.c:228 +#, c-format +msgid "\\copy: parse error at \"%s\"\n" +msgstr "\\copy: ошибка разбора аргумента \"%s\"\n" + +#: copy.c:230 +msgid "\\copy: parse error at end of line\n" +msgstr "\\copy: ошибка разбора в конце строки\n" + +#: copy.c:294 +#, c-format +msgid "%s: cannot copy from/to a directory\n" +msgstr "COPY FROM/TO не может работать с каталогом (%s)\n" + +#: copy.c:331 +#, c-format +msgid "\\copy: %s" +msgstr "\\copy: %s" + +#: copy.c:335 copy.c:349 +#, c-format +msgid "\\copy: unexpected response (%d)\n" +msgstr "неожиданный ответ \\copy: (%d)\n" + +#: copy.c:353 +msgid "trying to exit copy mode" +msgstr "попытка выйти из режима копирования" + +#: copy.c:407 copy.c:417 +#, c-format +msgid "could not write COPY data: %s\n" +msgstr "не удалось записать данные COPY: %s\n" + +#: copy.c:424 +#, c-format +msgid "COPY data transfer failed: %s" +msgstr "ошибка передачи данных COPY: %s" + +#: copy.c:472 +msgid "canceled by user" +msgstr "отменено пользователем" + +#: copy.c:487 +msgid "" +"Enter data to be copied followed by a newline.\n" +"End with a backslash and a period on a line by itself." +msgstr "" +"Вводите данные для копирования, разделяя строки переводом строки.\n" +"Закончите ввод строкой '\\.'." + +#: copy.c:600 +msgid "aborted because of read failure" +msgstr "прерывание из-за ошибки чтения" + +#: help.c:48 +msgid "on" +msgstr "вкл." + +#: help.c:48 +msgid "off" +msgstr "выкл." + +#: help.c:70 +#, c-format +msgid "could not get current user name: %s\n" +msgstr "не удалось узнать имя текущего пользователя: %s\n" + +#: help.c:82 +#, c-format +msgid "" +"psql is the PostgreSQL interactive terminal.\n" +"\n" +msgstr "" +"psql - это интерактивный терминал PostgreSQL.\n" +"\n" + +#: help.c:83 +#, c-format +msgid "Usage:\n" +msgstr "Использование:\n" + +#: help.c:84 +#, c-format +msgid "" +" psql [OPTION]... [DBNAME [USERNAME]]\n" +"\n" +msgstr "" +" psql [ПАРАМЕТР]... [БД [ПОЛЬЗОВАТЕЛЬ]]\n" +"\n" + +#: help.c:86 +#, c-format +msgid "General options:\n" +msgstr "Общие параметры:\n" + +#: help.c:91 +#, c-format +msgid "" +" -c, --command=COMMAND run only single command (SQL or internal) and " +"exit\n" +msgstr "" +" -c, --command=КОМАНДА выполнить одну команду (SQL или внутреннюю) и " +"выйти\n" + +#: help.c:92 +#, c-format +msgid "" +" -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" +msgstr "" +" -d, --dbname=БД имя подключаемой базы данных (по умолчанию \"%s" +"\")\n" + +#: help.c:93 +#, c-format +msgid " -f, --file=FILENAME execute commands from file, then exit\n" +msgstr " -f, --file=ИМЯ_ФАЙЛА выполнить команды из файла и выйти\n" + +#: help.c:94 +#, c-format +msgid " -l, --list list available databases, then exit\n" +msgstr " -l, --list вывести список баз данных и выйти\n" + +#: help.c:95 +#, c-format +msgid "" +" -v, --set=, --variable=NAME=VALUE\n" +" set psql variable NAME to VALUE\n" +msgstr "" +" -v, --set=, --variable=ИМЯ=ЗНАЧЕНИЕ\n" +" присвоить переменной psql 'ИМЯ' заданное " +"ЗНАЧЕНИЕ\n" + +#: help.c:97 +#, c-format +msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" +msgstr "" +" -X, --no-psqlrc игнорировать файл параметров запуска (~/.psqlrc)\n" + +#: help.c:98 +#, c-format +msgid "" +" -1 (\"one\"), --single-transaction\n" +" execute command file as a single transaction\n" +msgstr "" +" -1 (\"один\"), --single-transaction\n" +" выполнить команды из файла как одну транзакцию\n" + +#: help.c:100 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help показать эту справку и выйти\n" + +#: help.c:101 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version показать версию и выйти\n" + +#: help.c:103 +#, c-format +msgid "" +"\n" +"Input and output options:\n" +msgstr "" +"\n" +"Параметры ввода/вывода:\n" + +#: help.c:104 +#, c-format +msgid " -a, --echo-all echo all input from script\n" +msgstr " -a, --echo-all отображать все команды из скрипта\n" + +#: help.c:105 +#, c-format +msgid " -e, --echo-queries echo commands sent to server\n" +msgstr " -e, --echo-queries отображать команды, отправляемые серверу\n" + +#: help.c:106 +#, c-format +msgid "" +" -E, --echo-hidden display queries that internal commands generate\n" +msgstr "" +" -E, --echo-hidden выводить запросы, порождённые внутренними " +"командами\n" + +#: help.c:107 +#, c-format +msgid " -L, --log-file=FILENAME send session log to file\n" +msgstr " -L, --log-file=ИМЯ_ФАЙЛА сохранять протокол работы в файл\n" + +#: help.c:108 +#, c-format +msgid "" +" -n, --no-readline disable enhanced command line editing (readline)\n" +msgstr "" +" -n, --no-readline отключить редактор командной строки readline\n" + +#: help.c:109 +#, c-format +msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" +msgstr "" +" -o, --output=ИМЯ_ФАЙЛА направить результаты запроса в файл (или канал " +"|)\n" + +#: help.c:110 +#, c-format +msgid "" +" -q, --quiet run quietly (no messages, only query output)\n" +msgstr "" +" -q, --quiet показывать только результаты запросов, без " +"сообщений\n" + +#: help.c:111 +#, c-format +msgid " -s, --single-step single-step mode (confirm each query)\n" +msgstr "" +" -s, --single-step пошаговый режим (подтверждение каждого запроса)\n" + +#: help.c:112 +#, c-format +msgid "" +" -S, --single-line single-line mode (end of line terminates SQL " +"command)\n" +msgstr "" +" -S, --single-line однострочный режим (конец строки завершает " +"команду)\n" + +#: help.c:114 +#, c-format +msgid "" +"\n" +"Output format options:\n" +msgstr "" +"\n" +"Параметры вывода:\n" + +#: help.c:115 +#, c-format +msgid " -A, --no-align unaligned table output mode\n" +msgstr " -A, --no-align режим вывода невыравненной таблицы\n" + +#: help.c:116 +#, c-format +msgid "" +" -F, --field-separator=STRING\n" +" set field separator (default: \"%s\")\n" +msgstr "" +" -F, --field-separator=СТРОКА\n" +" задать разделитель полей (по умолчанию: \"%s\")\n" + +#: help.c:119 +#, c-format +msgid " -H, --html HTML table output mode\n" +msgstr " -H, --html вывод таблицы в формате HTML\n" + +#: help.c:120 +#, c-format +msgid "" +" -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset " +"command)\n" +msgstr "" +" -P, --pset=ПАР[=ЗНАЧ] определить параметр печати ПАР (с заданным " +"ЗНАЧЕНИЕМ)\n" +" (см. описание \\pset)\n" + +#: help.c:121 +#, c-format +msgid "" +" -R, --record-separator=STRING\n" +" set record separator (default: newline)\n" +msgstr "" +" -R, --record-separator=СТРОКА\n" +" задать разделитель записей\n" +" (по умолчанию: новая строка)\n" + +#: help.c:123 +#, c-format +msgid " -t, --tuples-only print rows only\n" +msgstr " -t, --tuples-only выводить только кортежи\n" + +#: help.c:124 +#, c-format +msgid "" +" -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, " +"border)\n" +msgstr "" +" -T, --table-attr=ТЕКСТ установить атрибуты HTML-таблицы (width, border)\n" + +#: help.c:125 +#, c-format +msgid " -x, --expanded turn on expanded table output\n" +msgstr " -x, --expanded включить развёрнутый вывод таблицы\n" + +#: help.c:127 +#, c-format +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Параметры подключения:\n" + +#: help.c:130 +#, c-format +msgid "" +" -h, --host=HOSTNAME database server host or socket directory " +"(default: \"%s\")\n" +msgstr "" +" -h, --host=ИМЯ имя сервера баз данных или каталог сокетов\n" +" (по умолчанию: \"%s\")\n" + +#: help.c:131 +msgid "local socket" +msgstr "локальный сокет" + +#: help.c:134 +#, c-format +msgid " -p, --port=PORT database server port (default: \"%s\")\n" +msgstr "" +" -p, --port=ПОРТ порт сервера баз данных (по умолчанию: \"%s\")\n" + +#: help.c:140 +#, c-format +msgid " -U, --username=USERNAME database user name (default: \"%s\")\n" +msgstr " -U, --username=ИМЯ имя пользователя (по умолчанию: \"%s\")\n" + +#: help.c:141 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password не запрашивать пароль\n" + +#: help.c:142 +#, c-format +msgid "" +" -W, --password force password prompt (should happen " +"automatically)\n" +msgstr "" +" -W, --password запрашивать пароль всегда (обычно не требуется)\n" + +#: help.c:144 +#, c-format +msgid "" +"\n" +"For more information, type \"\\?\" (for internal commands) or \"\\help" +"\" (for SQL\n" +"commands) from within psql, or consult the psql section in the PostgreSQL\n" +"documentation.\n" +"\n" +msgstr "" +"\n" +"Чтобы узнать больше, введите \"\\?\" (список внутренних команд) или \"\\help" +"\"\n" +"(справка по операторам SQL) в psql, либо обратитесь к разделу psql в\n" +"документации PostgreSQL.\n" +"\n" + +#: help.c:147 +#, c-format +msgid "Report bugs to .\n" +msgstr "Об ошибках сообщайте по адресу .\n" + +#: help.c:165 +#, c-format +msgid "General\n" +msgstr "Общие\n" + +#: help.c:166 +#, c-format +msgid "" +" \\copyright show PostgreSQL usage and distribution terms\n" +msgstr "" +" \\copyright условия использования и распространения " +"PostgreSQL\n" + +#: help.c:167 +#, c-format +msgid "" +" \\g [FILE] or ; execute query (and send results to file or |pipe)\n" +msgstr "" +" \\g [ФАЙЛ] или ; выполнить запрос\n" +" (и направить результаты в файл или канал |)\n" + +#: help.c:168 +#, c-format +msgid "" +" \\h [NAME] help on syntax of SQL commands, * for all " +"commands\n" +msgstr "" +" \\h [ИМЯ] справка по заданному SQL-оператору; * - по всем\n" + +#: help.c:169 +#, c-format +msgid " \\q quit psql\n" +msgstr " \\q выйти из psql\n" + +#: help.c:172 +#, c-format +msgid "Query Buffer\n" +msgstr "Буфер запроса\n" + +#: help.c:173 +#, c-format +msgid "" +" \\e [FILE] [LINE] edit the query buffer (or file) with external " +"editor\n" +msgstr "" +" \\e [ФАЙЛ] [СТРОКА] править буфер запроса (или файл) во внешнем " +"редакторе\n" + +#: help.c:174 +#, c-format +msgid "" +" \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" +msgstr "" +" \\ef [ФУНКЦИЯ [СТРОКА]] править определение функции во внешнем редакторе\n" + +#: help.c:175 +#, c-format +msgid " \\p show the contents of the query buffer\n" +msgstr " \\p вывести содержимое буфера запросов\n" + +#: help.c:176 +#, c-format +msgid " \\r reset (clear) the query buffer\n" +msgstr " \\r очистить буфер запроса\n" + +#: help.c:178 +#, c-format +msgid " \\s [FILE] display history or save it to file\n" +msgstr " \\s [ФАЙЛ] вывести историю или сохранить её в файл\n" + +#: help.c:180 +#, c-format +msgid " \\w FILE write query buffer to file\n" +msgstr " \\w ФАЙЛ записать буфер запроса в файл\n" + +#: help.c:183 +#, c-format +msgid "Input/Output\n" +msgstr "Ввод/Вывод\n" + +#: help.c:184 +#, c-format +msgid "" +" \\copy ... perform SQL COPY with data stream to the client " +"host\n" +msgstr " \\copy ... выполнить SQL COPY на стороне клиента\n" + +#: help.c:185 +#, c-format +msgid " \\echo [STRING] write string to standard output\n" +msgstr " \\echo [СТРОКА] записать строку в стандартный вывод\n" + +#: help.c:186 +#, c-format +msgid " \\i FILE execute commands from file\n" +msgstr " \\i ФАЙЛ выполнить команды из файла\n" + +#: help.c:187 +#, c-format +msgid " \\o [FILE] send all query results to file or |pipe\n" +msgstr "" +" \\o [ФАЙЛ] выводить все результаты запросов в файл или канал " +"|\n" + +#: help.c:188 +#, c-format +msgid "" +" \\qecho [STRING] write string to query output stream (see \\o)\n" +msgstr "" +" \\qecho [СТРОКА] записать строку в поток результатов запроса (см. " +"\\o)\n" + +#: help.c:191 +#, c-format +msgid "Informational\n" +msgstr "Информационные\n" + +#: help.c:192 +#, c-format +msgid " (options: S = show system objects, + = additional detail)\n" +msgstr "" +" (опции: S = показывать системные объекты, + = дополнительные подробности)\n" + +#: help.c:193 +#, c-format +msgid " \\d[S+] list tables, views, and sequences\n" +msgstr "" +" \\d[S+] список таблиц, представлений и " +"последовательностей\n" + +#: help.c:194 +#, c-format +msgid " \\d[S+] NAME describe table, view, sequence, or index\n" +msgstr "" +" \\d[S+] ИМЯ описание таблицы, представления, " +"последовательности\n" +" или индекса\n" + +#: help.c:195 +#, c-format +msgid " \\da[S] [PATTERN] list aggregates\n" +msgstr " \\da[S] [МАСКА] список агрегатных функций\n" + +#: help.c:196 +#, c-format +msgid " \\db[+] [PATTERN] list tablespaces\n" +msgstr " \\db[+] [МАСКА] список табличных пространств\n" + +#: help.c:197 +#, c-format +msgid " \\dc[S] [PATTERN] list conversions\n" +msgstr " \\dc[S] [МАСКА] список преобразований\n" + +#: help.c:198 +#, c-format +msgid " \\dC [PATTERN] list casts\n" +msgstr " \\dC [МАСКА] список приведений типов\n" + +#: help.c:199 +#, c-format +msgid " \\dd[S] [PATTERN] show comments on objects\n" +msgstr " \\dd[S] [МАСКА] комментарии к объектам\n" + +#: help.c:200 +#, c-format +msgid " \\ddp [PATTERN] list default privileges\n" +msgstr " \\ddp [МАСКА] список прав по умолчанию\n" + +#: help.c:201 +#, c-format +msgid " \\dD[S] [PATTERN] list domains\n" +msgstr " \\dD[S] [МАСКА] список доменов\n" + +#: help.c:202 +#, c-format +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [МАСКА] список сторонних таблиц\n" + +#: help.c:203 +#, c-format +msgid " \\des[+] [PATTERN] list foreign servers\n" +msgstr " \\des[+] [МАСКА] список сторонних серверов\n" + +#: help.c:204 +#, c-format +msgid " \\deu[+] [PATTERN] list user mappings\n" +msgstr " \\deu[+] [МАСКА] список сопоставлений пользователей\n" + +#: help.c:205 +#, c-format +msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" +msgstr " \\dew[+] [МАСКА] список обёрток сторонних данных\n" + +#: help.c:206 +#, c-format +msgid "" +" \\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions\n" +msgstr "" +" \\df[antw][S+] [МАСКА] список [агрегатных/нормальных/триггерных/оконных]\n" +" функций соответственно\n" + +#: help.c:207 +#, c-format +msgid " \\dF[+] [PATTERN] list text search configurations\n" +msgstr " \\dF[+] [МАСКА] список конфигураций текстового поиска\n" + +#: help.c:208 +#, c-format +msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" +msgstr " \\dFd[+] [МАСКА] список словарей текстового поиска\n" + +#: help.c:209 +#, c-format +msgid " \\dFp[+] [PATTERN] list text search parsers\n" +msgstr " \\dFp[+] [МАСКА] список анализаторов текстового поиска\n" + +#: help.c:210 +#, c-format +msgid " \\dFt[+] [PATTERN] list text search templates\n" +msgstr " \\dFt[+] [МАСКА] список шаблонов текстового поиска\n" + +#: help.c:211 +#, c-format +msgid " \\dg[+] [PATTERN] list roles\n" +msgstr " \\dg[+] [МАСКА] список ролей\n" + +#: help.c:212 +#, c-format +msgid " \\di[S+] [PATTERN] list indexes\n" +msgstr " \\di[S+] [МАСКА] список индексов\n" + +#: help.c:213 +#, c-format +msgid " \\dl list large objects, same as \\lo_list\n" +msgstr "" +" \\dl список больших объектов (то же, что и \\lo_list)\n" + +#: help.c:214 +#, c-format +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [МАСКА] список языков процедур\n" + +#: help.c:215 +#, c-format +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [МАСКА] список схем\n" + +#: help.c:216 +#, c-format +msgid " \\do[S] [PATTERN] list operators\n" +msgstr " \\do[S] [МАСКА] список операторов\n" + +#: help.c:217 +#, c-format +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [МАСКА] список правил сортировки\n" + +#: help.c:218 +#, c-format +msgid "" +" \\dp [PATTERN] list table, view, and sequence access privileges\n" +msgstr "" +" \\dp [МАСКА] список прав доступа к таблицам, представлениям и\n" +" последовательностям\n" + +#: help.c:219 +#, c-format +msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n" +msgstr " \\drds [МAСК1 [МАСК2]] список параметров роли на уровне БД\n" + +#: help.c:220 +#, c-format +msgid " \\ds[S+] [PATTERN] list sequences\n" +msgstr " \\ds[S+] [МАСКА] список последовательностей\n" + +#: help.c:221 +#, c-format +msgid " \\dt[S+] [PATTERN] list tables\n" +msgstr " \\dt[S+] [МАСКА] список таблиц\n" + +#: help.c:222 +#, c-format +msgid " \\dT[S+] [PATTERN] list data types\n" +msgstr " \\dT[S+] [МАСКА] список типов данных\n" + +#: help.c:223 +#, c-format +msgid " \\du[+] [PATTERN] list roles\n" +msgstr " \\du[+] [МАСКА] список ролей\n" + +#: help.c:224 +#, c-format +msgid " \\dv[S+] [PATTERN] list views\n" +msgstr " \\dv[S+] [МАСКА] список представлений\n" + +#: help.c:225 +#, c-format +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [МАСКА] список сторонних таблиц\n" + +#: help.c:226 +#, c-format +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [МАСКА] список расширений\n" + +#: help.c:227 +#, c-format +msgid " \\l[+] list all databases\n" +msgstr " \\l[+] список всех баз данных\n" + +#: help.c:228 +#, c-format +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] ИМЯ_ФУНКЦИИ показать определение функции\n" + +#: help.c:229 +#, c-format +msgid " \\z [PATTERN] same as \\dp\n" +msgstr " \\z [МАСКА] то же, что и \\dp\n" + +#: help.c:232 +#, c-format +msgid "Formatting\n" +msgstr "Форматирование\n" + +#: help.c:233 +#, c-format +msgid "" +" \\a toggle between unaligned and aligned output mode\n" +msgstr "" +" \\a переключение режимов вывода:\n" +" неформатированный/выравненный\n" + +#: help.c:234 +#, c-format +msgid " \\C [STRING] set table title, or unset if none\n" +msgstr "" +" \\C [СТРОКА] задать заголовок таблицы или убрать, если не " +"задан\n" + +#: help.c:235 +#, c-format +msgid "" +" \\f [STRING] show or set field separator for unaligned query " +"output\n" +msgstr "" +" \\f [СТРОКА] показать или установить разделитель полей для\n" +" неформатированного вывода\n" + +#: help.c:236 +#, c-format +msgid " \\H toggle HTML output mode (currently %s)\n" +msgstr "" +" \\H переключить режим вывода в HTML (текущий: %s)\n" + +#: help.c:238 +#, c-format +msgid "" +" \\pset NAME [VALUE] set table output option\n" +" (NAME := {format|border|expanded|fieldsep|footer|" +"null|\n" +" numericlocale|recordsep|tuples_only|title|tableattr|" +"pager})\n" +msgstr "" +" \\pset ИМЯ [ЗНАЧЕНИЕ] установить параметр вывода таблицы, где \n" +" ИМЯ := {format|border|expanded|fieldsep|footer|" +"null|\n" +" numericlocale|recordsep|tuples_only|title|" +"tableattr|\n" +" pager}\n" + +#: help.c:241 +#, c-format +msgid " \\t [on|off] show only rows (currently %s)\n" +msgstr " \\t [on|off] режим вывода только строк (сейчас: %s)\n" + +#: help.c:243 +#, c-format +msgid "" +" \\T [STRING] set HTML
tag attributes, or unset if none\n" +msgstr "" +" \\T [СТРОКА] задать атрибуты для
или убрать, если не " +"заданы\n" + +#: help.c:244 +#, c-format +msgid " \\x [on|off] toggle expanded output (currently %s)\n" +msgstr "" +" \\x [on|off] переключить режим расширенного вывода (сейчас: " +"%s)\n" + +#: help.c:248 +#, c-format +msgid "Connection\n" +msgstr "Соединение\n" + +#: help.c:249 +#, c-format +msgid "" +" \\c[onnect] [DBNAME|- USER|- HOST|- PORT|-]\n" +" connect to new database (currently \"%s\")\n" +msgstr "" +" \\c[onnect] [БД|- ПОЛЬЗОВАТЕЛЬ|- СЕРВЕР|- ПОРТ|-]\n" +" подключиться к другой базе данных\n" +" (текущая: \"%s\")\n" + +#: help.c:252 +#, c-format +msgid " \\encoding [ENCODING] show or set client encoding\n" +msgstr " \\encoding [КОДИРОВКА] показать/установить клиентскую кодировку\n" + +#: help.c:253 +#, c-format +msgid " \\password [USERNAME] securely change the password for a user\n" +msgstr " \\password [ИМЯ] безопасно сменить пароль пользователя\n" + +#: help.c:254 +#, c-format +msgid "" +" \\conninfo display information about current connection\n" +msgstr " \\conninfo информация о текущем соединении\n" + +#: help.c:257 +#, c-format +msgid "Operating System\n" +msgstr "Операционная система\n" + +#: help.c:258 +#, c-format +msgid " \\cd [DIR] change the current working directory\n" +msgstr " \\cd [ПУТЬ] сменить текущий каталог\n" + +#: help.c:259 +#, c-format +msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" +msgstr " \\timing [on|off] включить/выключить секундомер (сейчас: %s)\n" + +#: help.c:261 +#, c-format +msgid "" +" \\! [COMMAND] execute command in shell or start interactive " +"shell\n" +msgstr "" +" \\! [КОМАНДА] выполнить команду в командной оболочке\n" +" или запустить интерактивную оболочку\n" + +#: help.c:264 +#, c-format +msgid "Variables\n" +msgstr "Переменные\n" + +#: help.c:265 +#, c-format +msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" +msgstr "" +" \\prompt [ТЕКСТ] ИМЯ предложить пользователю задать внутреннюю " +"переменную\n" + +#: help.c:266 +#, c-format +msgid "" +" \\set [NAME [VALUE]] set internal variable, or list all if no " +"parameters\n" +msgstr "" +" \\set [ИМЯ [ЗНАЧЕНИЕ]] установить внутреннюю переменную или вывести все,\n" +" если имя не задано\n" + +#: help.c:267 +#, c-format +msgid " \\unset NAME unset (delete) internal variable\n" +msgstr " \\unset ИМЯ сбросить (удалить) внутреннюю переменную\n" + +#: help.c:270 +#, c-format +msgid "Large Objects\n" +msgstr "Большие объекты\n" + +#: help.c:271 +#, c-format +msgid "" +" \\lo_export LOBOID FILE\n" +" \\lo_import FILE [COMMENT]\n" +" \\lo_list\n" +" \\lo_unlink LOBOID large object operations\n" +msgstr "" +" \\lo_export LOBOID ФАЙЛ\n" +" \\lo_import ФАЙЛ [КОММЕНТАРИЙ]\n" +" \\lo_list\n" +" \\lo_unlink LOBOID операции с большими объектами\n" + +#: help.c:318 +msgid "Available help:\n" +msgstr "Имеющаяся справка:\n" + +#: help.c:402 +#, c-format +msgid "" +"Command: %s\n" +"Description: %s\n" +"Syntax:\n" +"%s\n" +"\n" +msgstr "" +"Команда: %s\n" +"Описание: %s\n" +"Синтаксис:\n" +"%s\n" +"\n" + +#: help.c:418 +#, c-format +msgid "" +"No help available for \"%s\".\n" +"Try \\h with no arguments to see available help.\n" +msgstr "" +"Нет справки по команде \"%s\".\n" +"Попробуйте \\h без аргументов и посмотрите, что есть.\n" + +#: input.c:198 +#, c-format +msgid "could not read from input file: %s\n" +msgstr "не удалось прочитать входной файл: %s\n" + +#: input.c:406 +#, c-format +msgid "could not save history to file \"%s\": %s\n" +msgstr "не удалось сохранить историю в файле \"%s\": %s\n" + +#: input.c:411 +msgid "history is not supported by this installation\n" +msgstr "в данной среде история не поддерживается\n" + +#: large_obj.c:66 +#, c-format +msgid "%s: not connected to a database\n" +msgstr "%s: нет соединения с базой данных\n" + +#: large_obj.c:85 +#, c-format +msgid "%s: current transaction is aborted\n" +msgstr "%s: текущая транзакция прервана\n" + +#: large_obj.c:88 +#, c-format +msgid "%s: unknown transaction status\n" +msgstr "%s: неизвестное состояние транзакции\n" + +#: large_obj.c:289 large_obj.c:300 +msgid "ID" +msgstr "ID" + +#: large_obj.c:290 describe.c:147 describe.c:335 describe.c:637 describe.c:787 +#: describe.c:2513 describe.c:2631 describe.c:2975 describe.c:3606 +#: describe.c:3671 +msgid "Owner" +msgstr "Владелец" + +#: large_obj.c:291 large_obj.c:301 describe.c:96 describe.c:159 describe.c:338 +#: describe.c:501 describe.c:590 describe.c:661 describe.c:852 describe.c:1382 +#: describe.c:2330 describe.c:2537 describe.c:2918 describe.c:2983 +#: describe.c:3048 describe.c:3184 describe.c:3223 describe.c:3290 +#: describe.c:3349 describe.c:3358 describe.c:3417 describe.c:3856 +msgid "Description" +msgstr "Описание" + +#: large_obj.c:310 +msgid "Large objects" +msgstr "Большие объекты" + +#: mainloop.c:159 +#, c-format +msgid "Use \"\\q\" to leave %s.\n" +msgstr "Чтобы выйти из %s, введите \"\\q\".\n" + +#: mainloop.c:189 +msgid "You are using psql, the command-line interface to PostgreSQL." +msgstr "Вы используете psql - интерфейс командной строки к PostgreSQL." + +#: mainloop.c:190 +#, c-format +msgid "" +"Type: \\copyright for distribution terms\n" +" \\h for help with SQL commands\n" +" \\? for help with psql commands\n" +" \\g or terminate with semicolon to execute query\n" +" \\q to quit\n" +msgstr "" +"Азы: \\copyright - условия распространения\n" +" \\h - справка по операторам SQL\n" +" \\? - справка по командам psql\n" +" \\g или ; в конце строки - выполнение запроса\n" +" \\q - выход\n" + +#: print.c:1138 +#, c-format +msgid "(No rows)\n" +msgstr "(Нет записей)\n" + +#: print.c:2028 +#, c-format +msgid "Interrupted\n" +msgstr "Прервано\n" + +#: print.c:2097 +#, c-format +msgid "Cannot add header to table content: column count of %d exceeded.\n" +msgstr "" +"Ошибка добавления заголовка таблицы: превышен предел числа колонок (%d).\n" + +#: print.c:2137 +#, c-format +msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" +msgstr "" +"Ошибка добавления ячейки в таблицу: превышен предел числа ячеек (%d).\n" + +#: print.c:2358 +#, c-format +msgid "invalid output format (internal error): %d" +msgstr "неверный формат вывода (внутренняя ошибка): %d" + +#: print.c:2455 +#, c-format +msgid "(%lu row)" +msgid_plural "(%lu rows)" +msgstr[0] "(%lu строка)" +msgstr[1] "(%lu строки)" +msgstr[2] "(%lu строк)" + +#: startup.c:243 +#, c-format +msgid "%s: could not open log file \"%s\": %s\n" +msgstr "%s: не удалось открыть файл протокола \"%s\": %s\n" + +#: startup.c:305 +#, c-format +msgid "" +"Type \"help\" for help.\n" +"\n" +msgstr "" +"Введите \"help\", чтобы получить справку.\n" +"\n" + +#: startup.c:451 +#, c-format +msgid "%s: could not set printing parameter \"%s\"\n" +msgstr "%s: не удалось установить параметр печати \"%s\"\n" + +#: startup.c:490 +#, c-format +msgid "%s: could not delete variable \"%s\"\n" +msgstr "%s: удалить переменную \"%s\" нельзя\n" + +#: startup.c:500 +#, c-format +msgid "%s: could not set variable \"%s\"\n" +msgstr "%s: не удалось установить переменную \"%s\"\n" + +#: startup.c:537 startup.c:543 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Для дополнительной информации попробуйте \"%s --help\".\n" + +#: startup.c:560 +#, c-format +msgid "%s: warning: extra command-line argument \"%s\" ignored\n" +msgstr "%s: предупреждение: лишний аргумент \"%s\" проигнорирован\n" + +#: startup.c:625 +msgid "contains support for command-line editing" +msgstr "включает поддержку редактирования командной строки" + +#: describe.c:69 describe.c:236 describe.c:463 describe.c:585 describe.c:706 +#: describe.c:788 describe.c:849 describe.c:2504 describe.c:2698 +#: describe.c:2768 describe.c:2910 describe.c:3046 describe.c:3273 +#: describe.c:3345 describe.c:3356 describe.c:3415 describe.c:3789 +#: describe.c:3855 +msgid "Schema" +msgstr "Схема" + +#: describe.c:70 describe.c:146 describe.c:237 describe.c:464 describe.c:586 +#: describe.c:636 describe.c:707 describe.c:850 describe.c:2505 +#: describe.c:2627 describe.c:2699 describe.c:2769 describe.c:2911 +#: describe.c:2974 describe.c:3047 describe.c:3274 describe.c:3346 +#: describe.c:3357 describe.c:3416 describe.c:3605 describe.c:3670 +#: describe.c:3853 +msgid "Name" +msgstr "Имя" + +#: describe.c:71 describe.c:249 describe.c:295 describe.c:312 +msgid "Result data type" +msgstr "Тип данных результата" + +#: describe.c:85 describe.c:89 describe.c:250 describe.c:296 describe.c:313 +msgid "Argument data types" +msgstr "Типы данных аргументов" + +#: describe.c:114 +msgid "List of aggregate functions" +msgstr "Список агрегатных функций" + +#: describe.c:135 +#, c-format +msgid "The server (version %d.%d) does not support tablespaces.\n" +msgstr "Сервер (версия %d.%d) не поддерживает табличные пространства.\n" + +#: describe.c:148 +msgid "Location" +msgstr "Расположение" + +#: describe.c:176 +msgid "List of tablespaces" +msgstr "Список табличных пространств" + +#: describe.c:213 +#, c-format +msgid "\\df only takes [antwS+] as options\n" +msgstr "\\df принимает в качестве параметров только [antwS+]\n" + +#: describe.c:219 +#, c-format +msgid "\\df does not take a \"w\" option with server version %d.%d\n" +msgstr "\\df не поддерживает параметр \"w\" с сервером версии %d.%d\n" + +#. translator: "agg" is short for "aggregate" +#: describe.c:252 describe.c:298 describe.c:315 +msgid "agg" +msgstr "агр." + +#: describe.c:253 +msgid "window" +msgstr "оконная" + +#: describe.c:254 describe.c:299 describe.c:316 describe.c:990 +msgid "trigger" +msgstr "триггерная" + +#: describe.c:255 describe.c:300 describe.c:317 +msgid "normal" +msgstr "обычная" + +#: describe.c:256 describe.c:301 describe.c:318 describe.c:710 describe.c:792 +#: describe.c:1362 describe.c:2512 describe.c:2700 describe.c:3683 +msgid "Type" +msgstr "Тип" + +#: describe.c:331 +msgid "immutable" +msgstr "постоянная " + +#: describe.c:332 +msgid "stable" +msgstr "стабильная" + +#: describe.c:333 +msgid "volatile" +msgstr "изменчивая" + +#: describe.c:334 +msgid "Volatility" +msgstr "Изменчивость" + +#: describe.c:336 +msgid "Language" +msgstr "Язык" + +#: describe.c:337 +msgid "Source code" +msgstr "Исходный код" + +#: describe.c:435 +msgid "List of functions" +msgstr "Список функций" + +#: describe.c:474 +msgid "Internal name" +msgstr "Внутреннее имя" + +#: describe.c:475 describe.c:653 describe.c:2529 describe.c:2533 +msgid "Size" +msgstr "Размер" + +#: describe.c:496 +msgid "Elements" +msgstr "Элементы" + +#: describe.c:541 +msgid "List of data types" +msgstr "Список типов данных" + +#: describe.c:587 +msgid "Left arg type" +msgstr "Тип левого аргумента" + +#: describe.c:588 +msgid "Right arg type" +msgstr "Тип правого аргумента" + +#: describe.c:589 +msgid "Result type" +msgstr "Результирующий тип" + +#: describe.c:608 +msgid "List of operators" +msgstr "Список операторов" + +#: describe.c:638 +msgid "Encoding" +msgstr "Кодировка" + +#: describe.c:643 describe.c:2912 +msgid "Collate" +msgstr "LC_COLLATE" + +#: describe.c:644 describe.c:2913 +msgid "Ctype" +msgstr "LC_CTYPE" + +#: describe.c:657 +msgid "Tablespace" +msgstr "Табл. пространство" + +#: describe.c:674 +msgid "List of databases" +msgstr "Список баз данных" + +#: describe.c:708 describe.c:789 describe.c:944 describe.c:2506 sql_help.c:595 +#: sql_help.c:842 sql_help.c:969 sql_help.c:1432 sql_help.c:1562 +#: sql_help.c:1596 sql_help.c:1842 sql_help.c:2000 sql_help.c:2185 +#: sql_help.c:2266 sql_help.c:2472 sql_help.c:3103 sql_help.c:3123 +#: sql_help.c:3125 sql_help.c:3126 +msgid "table" +msgstr "таблица" + +#: describe.c:708 describe.c:945 describe.c:2507 +msgid "view" +msgstr "представление" + +#: describe.c:708 describe.c:790 describe.c:947 describe.c:2509 +msgid "sequence" +msgstr "последовательность" + +#: describe.c:709 describe.c:948 describe.c:2511 +msgid "foreign table" +msgstr "сторонняя таблица" + +#: describe.c:721 +msgid "Column access privileges" +msgstr "Права доступа к колонкам" + +#: describe.c:747 describe.c:4000 describe.c:4004 +msgid "Access privileges" +msgstr "Права доступа" + +#: describe.c:775 +#, c-format +msgid "" +"The server (version %d.%d) does not support altering default privileges.\n" +msgstr "Сервер (версия %d.%d) не поддерживает изменение прав по умолчанию.\n" + +#: describe.c:791 describe.c:883 +msgid "function" +msgstr "функция" + +#: describe.c:815 +msgid "Default access privileges" +msgstr "Права доступа по умолчанию" + +#: describe.c:851 +msgid "Object" +msgstr "Объект" + +#: describe.c:863 +msgid "aggregate" +msgstr "агр. функция" + +#: describe.c:902 sql_help.c:1715 sql_help.c:2833 sql_help.c:2903 +#: sql_help.c:3036 sql_help.c:3141 sql_help.c:3192 +msgid "operator" +msgstr "оператор" + +#: describe.c:921 +msgid "data type" +msgstr "тип данных" + +#: describe.c:946 describe.c:2508 +msgid "index" +msgstr "индекс" + +#: describe.c:969 +msgid "rule" +msgstr "правило" + +#: describe.c:1013 +msgid "Object descriptions" +msgstr "Описание объекта" + +#: describe.c:1066 +#, c-format +msgid "Did not find any relation named \"%s\".\n" +msgstr "Отношение \"%s\" не найдено.\n" + +#: describe.c:1238 +#, c-format +msgid "Did not find any relation with OID %s.\n" +msgstr "Отношение с OID %s не найдено.\n" + +#: describe.c:1314 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "Нежурналируемая таблица \"%s.%s\"" + +#: describe.c:1317 +#, c-format +msgid "Table \"%s.%s\"" +msgstr "Таблица \"%s.%s\"" + +#: describe.c:1321 +#, c-format +msgid "View \"%s.%s\"" +msgstr "Представление \"%s.%s\"" + +#: describe.c:1325 +#, c-format +msgid "Sequence \"%s.%s\"" +msgstr "Последовательность \"%s.%s\"" + +#: describe.c:1330 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "Нежурналируемый индекс \"%s.%s\"" + +#: describe.c:1333 +#, c-format +msgid "Index \"%s.%s\"" +msgstr "Индекс \"%s.%s\"" + +#: describe.c:1338 +#, c-format +msgid "Special relation \"%s.%s\"" +msgstr "Специальное отношение \"%s.%s\"" + +#: describe.c:1342 +#, c-format +msgid "TOAST table \"%s.%s\"" +msgstr "TOAST-таблица \"%s.%s\"" + +#: describe.c:1346 +#, c-format +msgid "Composite type \"%s.%s\"" +msgstr "Составной тип \"%s.%s\"" + +#: describe.c:1350 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "Сторонняя таблица \"%s.%s\"" + +#: describe.c:1361 +msgid "Column" +msgstr "Колонка" + +#: describe.c:1369 +msgid "Modifiers" +msgstr "Модификаторы" + +#: describe.c:1374 +msgid "Value" +msgstr "Значение" + +#: describe.c:1377 +msgid "Definition" +msgstr "Определение" + +#: describe.c:1381 +msgid "Storage" +msgstr "Хранилище" + +#: describe.c:1427 +#, c-format +msgid "collate %s" +msgstr "правило сортировки %s" + +#: describe.c:1435 +msgid "not null" +msgstr "NOT NULL" + +#. translator: default values of column definitions +#: describe.c:1445 +#, c-format +msgid "default %s" +msgstr "DEFAULT %s" + +#: describe.c:1536 +msgid "primary key, " +msgstr "первичный ключ, " + +#: describe.c:1538 +msgid "unique, " +msgstr "уникальный, " + +#: describe.c:1544 +#, c-format +msgid "for table \"%s.%s\"" +msgstr "для таблицы \"%s.%s\"" + +#: describe.c:1548 +#, c-format +msgid ", predicate (%s)" +msgstr ", предикат (%s)" + +#: describe.c:1551 +msgid ", clustered" +msgstr ", кластеризованный" + +#: describe.c:1554 +msgid ", invalid" +msgstr ", не рабочий" + +#: describe.c:1557 +msgid ", deferrable" +msgstr ", откладываемый" + +#: describe.c:1560 +msgid ", initially deferred" +msgstr ", изначально отложенный" + +#: describe.c:1574 +msgid "View definition:" +msgstr "Определение представления:" + +#: describe.c:1591 describe.c:1874 +msgid "Rules:" +msgstr "Правила:" + +#: describe.c:1650 +msgid "Indexes:" +msgstr "Индексы:" + +#: describe.c:1730 +msgid "Check constraints:" +msgstr "Ограничения-проверки:" + +# TO REWVIEW +#: describe.c:1761 +msgid "Foreign-key constraints:" +msgstr "Ограничения внешнего ключа:" + +#: describe.c:1792 +msgid "Referenced by:" +msgstr "Ссылки извне:" + +#: describe.c:1877 +msgid "Disabled rules:" +msgstr "Отключенные правила:" + +#: describe.c:1880 +msgid "Rules firing always:" +msgstr "Правила, срабатывающие всегда:" + +#: describe.c:1883 +msgid "Rules firing on replica only:" +msgstr "Правила, срабатывающие только в реплике:" + +#: describe.c:1991 +msgid "Triggers:" +msgstr "Триггеры:" + +#: describe.c:1994 +msgid "Disabled triggers:" +msgstr "Отключенные триггеры:" + +#: describe.c:1997 +msgid "Triggers firing always:" +msgstr "Триггеры, срабатывающие всегда:" + +#: describe.c:2000 +msgid "Triggers firing on replica only:" +msgstr "Триггеры, срабатывающие только в реплике:" + +#: describe.c:2066 +msgid "Inherits" +msgstr "Наследует" + +#: describe.c:2096 +#, c-format +msgid "Number of child tables: %d (Use \\d+ to list them.)" +msgstr "Дочерних таблиц: %d (чтобы просмотреть и их, воспользуйтесь \\d+)" + +#: describe.c:2103 +msgid "Child tables" +msgstr "Дочерние таблицы" + +#: describe.c:2125 +#, c-format +msgid "Typed table of type: %s" +msgstr "Типизированная таблица типа: %s" + +#: describe.c:2132 +msgid "Has OIDs" +msgstr "Содержит OID" + +#: describe.c:2135 describe.c:2772 describe.c:2846 +msgid "yes" +msgstr "да" + +#: describe.c:2135 describe.c:2772 describe.c:2846 +msgid "no" +msgstr "нет" + +#: describe.c:2143 describe.c:3621 describe.c:3685 describe.c:3741 +#: describe.c:3796 +msgid "Options" +msgstr "Параметры" + +#: describe.c:2228 +#, c-format +msgid "Tablespace: \"%s\"" +msgstr "Табличное пространство: \"%s\"" + +#: describe.c:2241 +#, c-format +msgid ", tablespace \"%s\"" +msgstr ", табл. пространство \"%s\"" + +#: describe.c:2323 +msgid "List of roles" +msgstr "Список ролей" + +#: describe.c:2325 +msgid "Role name" +msgstr "Имя роли" + +#: describe.c:2326 +msgid "Attributes" +msgstr "Атрибуты" + +#: describe.c:2327 +msgid "Member of" +msgstr "Член ролей" + +#: describe.c:2338 +msgid "Superuser" +msgstr "Суперпользователь" + +#: describe.c:2341 +msgid "No inheritance" +msgstr "Не наследуется" + +#: describe.c:2344 +msgid "Create role" +msgstr "Создаёт роли" + +#: describe.c:2347 +msgid "Create DB" +msgstr "Создаёт БД" + +#: describe.c:2350 +msgid "Cannot login" +msgstr "Вход запрещён" + +#: describe.c:2354 +msgid "Replication" +msgstr "Репликация" + +#: describe.c:2363 +msgid "No connections" +msgstr "Нет подключений" + +#: describe.c:2365 +#, c-format +msgid "%d connection" +msgid_plural "%d connections" +msgstr[0] "%d подключение" +msgstr[1] "%d подключения" +msgstr[2] "%d подключений" + +#: describe.c:2432 +#, c-format +msgid "No per-database role settings support in this server version.\n" +msgstr "" +"Это версия сервера не поддерживает параметры ролей на уровне базы данных.\n" + +#: describe.c:2443 +#, c-format +msgid "No matching settings found.\n" +msgstr "Соответствующие параметры не найдены.\n" + +#: describe.c:2445 +#, c-format +msgid "No settings found.\n" +msgstr "Параметры не найдены.\n" + +#: describe.c:2450 +msgid "List of settings" +msgstr "Список параметров" + +#: describe.c:2510 +msgid "special" +msgstr "спец. отношение" + +#: describe.c:2518 describe.c:3790 +msgid "Table" +msgstr "Таблица" + +#: describe.c:2592 +#, c-format +msgid "No matching relations found.\n" +msgstr "Соответствующие отношения не найдены.\n" + +#: describe.c:2594 +#, c-format +msgid "No relations found.\n" +msgstr "Отношения не найдены.\n" + +#: describe.c:2599 +msgid "List of relations" +msgstr "Список отношений" + +#: describe.c:2635 +msgid "Trusted" +msgstr "Доверенный" + +#: describe.c:2643 +msgid "Internal Language" +msgstr "Внутренний язык" + +#: describe.c:2644 +msgid "Call Handler" +msgstr "Обработчик вызова" + +#: describe.c:2645 describe.c:3613 +msgid "Validator" +msgstr "Функция проверки" + +#: describe.c:2648 +msgid "Inline Handler" +msgstr "Обработчик внедрённого кода" + +#: describe.c:2669 +msgid "List of languages" +msgstr "Список языков" + +#: describe.c:2709 +msgid "Modifier" +msgstr "Модификатор" + +#: describe.c:2717 +msgid "Check" +msgstr "Проверка" + +#: describe.c:2735 +msgid "List of domains" +msgstr "Список доменов" + +#: describe.c:2770 +msgid "Source" +msgstr "Источник" + +#: describe.c:2771 +msgid "Destination" +msgstr "Назначение" + +#: describe.c:2773 +msgid "Default?" +msgstr "По умолчанию?" + +#: describe.c:2791 +msgid "List of conversions" +msgstr "Список преобразований" + +#: describe.c:2843 +msgid "Source type" +msgstr "Исходный тип" + +#: describe.c:2844 +msgid "Target type" +msgstr "Целевой тип" + +#: describe.c:2845 describe.c:3183 +msgid "Function" +msgstr "Функция" + +#: describe.c:2846 +msgid "in assignment" +msgstr "в присваивании" + +#: describe.c:2847 +msgid "Implicit?" +msgstr "Неявное?" + +#: describe.c:2873 +msgid "List of casts" +msgstr "Список преобразований типов" + +#: describe.c:2898 +#, c-format +msgid "The server (version %d.%d) does not support collations.\n" +msgstr "Сервер (версия %d.%d) не поддерживает правила сравнения.\n" + +#: describe.c:2948 +msgid "List of collations" +msgstr "Список правил сортировки" + +#: describe.c:3006 +msgid "List of schemas" +msgstr "Список схем" + +#: describe.c:3029 describe.c:3262 describe.c:3330 describe.c:3398 +#, c-format +msgid "The server (version %d.%d) does not support full text search.\n" +msgstr "Сервер (версия %d.%d) не поддерживает полнотекстовый поиск.\n" + +#: describe.c:3063 +msgid "List of text search parsers" +msgstr "Список анализаторов текстового поиска" + +#: describe.c:3106 +#, c-format +msgid "Did not find any text search parser named \"%s\".\n" +msgstr "Анализатор текстового поиска \"%s\" не найден.\n" + +#: describe.c:3181 +msgid "Start parse" +msgstr "Начало разбора" + +#: describe.c:3182 +msgid "Method" +msgstr "Метод" + +#: describe.c:3186 +msgid "Get next token" +msgstr "Получение следующего фрагмента" + +#: describe.c:3188 +msgid "End parse" +msgstr "Окончание разбора" + +#: describe.c:3190 +msgid "Get headline" +msgstr "Получение выдержки" + +#: describe.c:3192 +msgid "Get token types" +msgstr "Получение типов фрагментов" + +#: describe.c:3202 +#, c-format +msgid "Text search parser \"%s.%s\"" +msgstr "Анализатор текстового поиска \"%s.%s\"" + +#: describe.c:3204 +#, c-format +msgid "Text search parser \"%s\"" +msgstr "Анализатор текстового поиска \"%s\"" + +#: describe.c:3222 +msgid "Token name" +msgstr "Имя фрагмента" + +#: describe.c:3233 +#, c-format +msgid "Token types for parser \"%s.%s\"" +msgstr "Типы фрагментов для анализатора \"%s.%s\"" + +#: describe.c:3235 +#, c-format +msgid "Token types for parser \"%s\"" +msgstr "Типы фрагментов для анализатора \"%s\"" + +#: describe.c:3284 +msgid "Template" +msgstr "Шаблон" + +#: describe.c:3285 +msgid "Init options" +msgstr "Параметры инициализации" + +#: describe.c:3307 +msgid "List of text search dictionaries" +msgstr "Список словарей текстового поиска" + +#: describe.c:3347 +msgid "Init" +msgstr "Инициализация" + +#: describe.c:3348 +msgid "Lexize" +msgstr "Выделение лексем" + +#: describe.c:3375 +msgid "List of text search templates" +msgstr "Список шаблонов текстового поиска" + +#: describe.c:3432 +msgid "List of text search configurations" +msgstr "Список конфигураций текстового поиска" + +#: describe.c:3476 +#, c-format +msgid "Did not find any text search configuration named \"%s\".\n" +msgstr "Конфигурация текстового поиска \"%s\" не найдена.\n" + +#: describe.c:3542 +msgid "Token" +msgstr "Фрагмент" + +#: describe.c:3543 +msgid "Dictionaries" +msgstr "Словари" + +#: describe.c:3554 +#, c-format +msgid "Text search configuration \"%s.%s\"" +msgstr "Конфигурация текстового поиска \"%s.%s\"" + +#: describe.c:3557 +#, c-format +msgid "Text search configuration \"%s\"" +msgstr "Конфигурация текстового поиска \"%s\"" + +#: describe.c:3561 +#, c-format +msgid "" +"\n" +"Parser: \"%s.%s\"" +msgstr "" +"\n" +"Анализатор: \"%s.%s\"" + +#: describe.c:3564 +#, c-format +msgid "" +"\n" +"Parser: \"%s\"" +msgstr "" +"\n" +"Анализатор: \"%s\"" + +#: describe.c:3596 +#, c-format +msgid "The server (version %d.%d) does not support foreign-data wrappers.\n" +msgstr "Сервер (версия %d.%d) не поддерживает обёртки сторонних данных.\n" + +#: describe.c:3610 +msgid "Handler" +msgstr "Обработчик" + +#: describe.c:3637 +msgid "List of foreign-data wrappers" +msgstr "Список обёрток сторонних данных" + +#: describe.c:3660 +#, c-format +msgid "The server (version %d.%d) does not support foreign servers.\n" +msgstr "Сервер (версия %d.%d) не поддерживает сторонние серверы.\n" + +#: describe.c:3672 +msgid "Foreign-data wrapper" +msgstr "Обёртка сторонних данных" + +#: describe.c:3684 describe.c:3854 +msgid "Version" +msgstr "Версия" + +#: describe.c:3703 +msgid "List of foreign servers" +msgstr "Список сторонних серверов" + +#: describe.c:3726 +#, c-format +msgid "The server (version %d.%d) does not support user mappings.\n" +msgstr "Сервер (версия %d.%d) не поддерживает сопоставления пользователей.\n" + +#: describe.c:3735 describe.c:3791 +msgid "Server" +msgstr "Сервер" + +#: describe.c:3736 +msgid "User name" +msgstr "Имя пользователя" + +#: describe.c:3756 +msgid "List of user mappings" +msgstr "Список сопоставлений пользователей" + +#: describe.c:3779 +#, c-format +msgid "The server (version %d.%d) does not support foreign tables.\n" +msgstr "Сервер (версия %d.%d) не поддерживает сторонние таблицы.\n" + +#: describe.c:3817 +msgid "List of foreign tables" +msgstr "Список сторонних таблиц" + +#: describe.c:3840 describe.c:3894 +#, c-format +msgid "The server (version %d.%d) does not support extensions.\n" +msgstr "Сервер (версия %d.%d) не поддерживает расширения.\n" + +#: describe.c:3871 +msgid "List of installed extensions" +msgstr "Список установленных расширений" + +#: describe.c:3921 +#, c-format +msgid "Did not find any extension named \"%s\".\n" +msgstr "Расширение \"%s\" не найдено.\n" + +#: describe.c:3924 +#, c-format +msgid "Did not find any extensions.\n" +msgstr "Расширения не найдены.\n" + +#: describe.c:3968 +msgid "Object Description" +msgstr "Описание объекта" + +#: describe.c:3977 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "Объекты в расширении \"%s\"" + +#: sql_help.h:182 sql_help.h:837 +msgid "abort the current transaction" +msgstr "прервать текущую транзакцию" + +#: sql_help.h:187 +msgid "change the definition of an aggregate function" +msgstr "изменить определение агрегатной функции" + +#: sql_help.h:192 +msgid "change the definition of a collation" +msgstr "изменить определение правила сортировки" + +#: sql_help.h:197 +msgid "change the definition of a conversion" +msgstr "изменить определение преобразования" + +#: sql_help.h:202 +msgid "change a database" +msgstr "изменить атрибуты базы данных" + +#: sql_help.h:207 +msgid "define default access privileges" +msgstr "определить права доступа по умолчанию" + +#: sql_help.h:212 +msgid "change the definition of a domain" +msgstr "изменить определение домена" + +#: sql_help.h:217 +msgid "change the definition of an extension" +msgstr "изменить определение расширения" + +#: sql_help.h:222 +msgid "change the definition of a foreign-data wrapper" +msgstr "изменить определение обёртки сторонних данных" + +#: sql_help.h:227 +msgid "change the definition of a foreign table" +msgstr "изменить определение сторонней таблицы" + +#: sql_help.h:232 +msgid "change the definition of a function" +msgstr "изменить определение функции" + +#: sql_help.h:237 +msgid "change role name or membership" +msgstr "изменить имя роли или членство" + +#: sql_help.h:242 +msgid "change the definition of an index" +msgstr "изменить определение индекса" + +#: sql_help.h:247 +msgid "change the definition of a procedural language" +msgstr "изменить определение процедурного языка" + +#: sql_help.h:252 +msgid "change the definition of a large object" +msgstr "изменить определение большого объекта" + +#: sql_help.h:257 +msgid "change the definition of an operator" +msgstr "изменить определение оператора" + +#: sql_help.h:262 +msgid "change the definition of an operator class" +msgstr "изменить определение класса операторов" + +#: sql_help.h:267 +msgid "change the definition of an operator family" +msgstr "изменить определение семейства операторов" + +#: sql_help.h:272 sql_help.h:332 +msgid "change a database role" +msgstr "изменить роль пользователя БД" + +#: sql_help.h:277 +msgid "change the definition of a schema" +msgstr "изменить определение схемы" + +#: sql_help.h:282 +msgid "change the definition of a sequence generator" +msgstr "изменить определение генератора последовательности" + +#: sql_help.h:287 +msgid "change the definition of a foreign server" +msgstr "изменить определение стороннего сервера" + +#: sql_help.h:292 +msgid "change the definition of a table" +msgstr "изменить определение таблицы" + +#: sql_help.h:297 +msgid "change the definition of a tablespace" +msgstr "изменить определение табличного пространства" + +#: sql_help.h:302 +msgid "change the definition of a text search configuration" +msgstr "изменить определение конфигурации текстового поиска" + +#: sql_help.h:307 +msgid "change the definition of a text search dictionary" +msgstr "изменить определение словаря текстового поиска" + +#: sql_help.h:312 +msgid "change the definition of a text search parser" +msgstr "изменить определение анализатора текстового поиска" + +#: sql_help.h:317 +msgid "change the definition of a text search template" +msgstr "изменить определение шаблона текстового поиска" + +#: sql_help.h:322 +msgid "change the definition of a trigger" +msgstr "изменить определение триггера" + +#: sql_help.h:327 +msgid "change the definition of a type" +msgstr "изменить определение типа" + +#: sql_help.h:337 +msgid "change the definition of a user mapping" +msgstr "изменить сопоставление пользователей" + +#: sql_help.h:342 +msgid "change the definition of a view" +msgstr "изменить определение представления" + +#: sql_help.h:347 +msgid "collect statistics about a database" +msgstr "собрать статистику о базе данных" + +#: sql_help.h:352 sql_help.h:902 +msgid "start a transaction block" +msgstr "начать транзакцию" + +#: sql_help.h:357 +msgid "force a transaction log checkpoint" +msgstr "отметить контрольную точку в журнале транзакций" + +#: sql_help.h:362 +msgid "close a cursor" +msgstr "закрыть курсор" + +#: sql_help.h:367 +msgid "cluster a table according to an index" +msgstr "перегруппировать таблицу по индексу" + +#: sql_help.h:372 +msgid "define or change the comment of an object" +msgstr "задать или изменить комментарий объекта" + +#: sql_help.h:377 sql_help.h:747 +msgid "commit the current transaction" +msgstr "зафиксировать текущую транзакцию" + +#: sql_help.h:382 +msgid "commit a transaction that was earlier prepared for two-phase commit" +msgstr "зафиксировать транзакцию, ранее подготовленную для двухфазной фиксации" + +#: sql_help.h:387 +msgid "copy data between a file and a table" +msgstr "импорт/экспорт данных в файл" + +#: sql_help.h:392 +msgid "define a new aggregate function" +msgstr "создать агрегатную функцию" + +#: sql_help.h:397 +msgid "define a new cast" +msgstr "создать приведение типов" + +#: sql_help.h:402 +msgid "define a new collation" +msgstr "создать правило сортировки" + +#: sql_help.h:407 +msgid "define a new encoding conversion" +msgstr "создать преобразование кодировки" + +#: sql_help.h:412 +msgid "create a new database" +msgstr "создать базу данных" + +#: sql_help.h:417 +msgid "define a new domain" +msgstr "создать домен" + +#: sql_help.h:422 +msgid "install an extension" +msgstr "установить расширение" + +#: sql_help.h:427 +msgid "define a new foreign-data wrapper" +msgstr "создать обёртку сторонних данных" + +#: sql_help.h:432 +msgid "define a new foreign table" +msgstr "создать стороннюю таблицу" + +#: sql_help.h:437 +msgid "define a new function" +msgstr "создать функцию" + +#: sql_help.h:442 sql_help.h:472 sql_help.h:542 +msgid "define a new database role" +msgstr "создать роль пользователя БД" + +#: sql_help.h:447 +msgid "define a new index" +msgstr "создать индекс" + +#: sql_help.h:452 +msgid "define a new procedural language" +msgstr "создать процедурный язык" + +#: sql_help.h:457 +msgid "define a new operator" +msgstr "создать оператор" + +#: sql_help.h:462 +msgid "define a new operator class" +msgstr "создать класс операторов" + +#: sql_help.h:467 +msgid "define a new operator family" +msgstr "создать семейство операторов" + +#: sql_help.h:477 +msgid "define a new rewrite rule" +msgstr "создать правило перезаписи" + +#: sql_help.h:482 +msgid "define a new schema" +msgstr "создать схему" + +#: sql_help.h:487 +msgid "define a new sequence generator" +msgstr "создать генератор последовательностей" + +#: sql_help.h:492 +msgid "define a new foreign server" +msgstr "создать сторонний сервер" + +#: sql_help.h:497 +msgid "define a new table" +msgstr "создать таблицу" + +#: sql_help.h:502 sql_help.h:867 +msgid "define a new table from the results of a query" +msgstr "создать таблицу из результатов запроса" + +#: sql_help.h:507 +msgid "define a new tablespace" +msgstr "создать табличное пространство" + +#: sql_help.h:512 +msgid "define a new text search configuration" +msgstr "создать конфигурацию текстового поиска" + +#: sql_help.h:517 +msgid "define a new text search dictionary" +msgstr "создать словарь текстового поиска" + +#: sql_help.h:522 +msgid "define a new text search parser" +msgstr "создать анализатор текстового поиска" + +#: sql_help.h:527 +msgid "define a new text search template" +msgstr "создать шаблон текстового поиска" + +#: sql_help.h:532 +msgid "define a new trigger" +msgstr "создать триггер" + +#: sql_help.h:537 +msgid "define a new data type" +msgstr "создать тип данных" + +#: sql_help.h:547 +msgid "define a new mapping of a user to a foreign server" +msgstr "создать сопоставление пользователя для стороннего сервера" + +#: sql_help.h:552 +msgid "define a new view" +msgstr "создать представление" + +#: sql_help.h:557 +msgid "deallocate a prepared statement" +msgstr "освободить подготовленный оператор" + +#: sql_help.h:562 +msgid "define a cursor" +msgstr "создать курсор" + +#: sql_help.h:567 +msgid "delete rows of a table" +msgstr "удалить записи таблицы" + +#: sql_help.h:572 +msgid "discard session state" +msgstr "очистить состояние сеанса" + +#: sql_help.h:577 +msgid "execute an anonymous code block" +msgstr "выполнить анонимный блок кода" + +#: sql_help.h:582 +msgid "remove an aggregate function" +msgstr "удалить агрегатную функцию" + +#: sql_help.h:587 +msgid "remove a cast" +msgstr "удалить приведение типа" + +#: sql_help.h:592 +msgid "remove a collation" +msgstr "удалить правило сортировки" + +#: sql_help.h:597 +msgid "remove a conversion" +msgstr "удалить преобразование" + +#: sql_help.h:602 +msgid "remove a database" +msgstr "удалить базу данных" + +#: sql_help.h:607 +msgid "remove a domain" +msgstr "удалить домен" + +#: sql_help.h:612 +msgid "remove an extension" +msgstr "удалить расширение" + +#: sql_help.h:617 +msgid "remove a foreign-data wrapper" +msgstr "удалить обёртку сторонних данных" + +#: sql_help.h:622 +msgid "remove a foreign table" +msgstr "удалить стороннюю таблицу" + +#: sql_help.h:627 +msgid "remove a function" +msgstr "удалить функцию" + +#: sql_help.h:632 sql_help.h:667 sql_help.h:732 +msgid "remove a database role" +msgstr "удалить роль пользователя БД" + +#: sql_help.h:637 +msgid "remove an index" +msgstr "удалить индекс" + +#: sql_help.h:642 +msgid "remove a procedural language" +msgstr "удалить процедурный язык" + +#: sql_help.h:647 +msgid "remove an operator" +msgstr "удалить оператор" + +#: sql_help.h:652 +msgid "remove an operator class" +msgstr "удалить класс операторов" + +#: sql_help.h:657 +msgid "remove an operator family" +msgstr "удалить семейство операторов" + +#: sql_help.h:662 +msgid "remove database objects owned by a database role" +msgstr "удалить объекты базы данных, принадлежащие роли" + +#: sql_help.h:672 +msgid "remove a rewrite rule" +msgstr "удалить правило перезаписи" + +#: sql_help.h:677 +msgid "remove a schema" +msgstr "удалить схему" + +#: sql_help.h:682 +msgid "remove a sequence" +msgstr "удалить последовательность" + +#: sql_help.h:687 +msgid "remove a foreign server descriptor" +msgstr "удалить описание стороннего сервера" + +#: sql_help.h:692 +msgid "remove a table" +msgstr "удалить таблицу" + +#: sql_help.h:697 +msgid "remove a tablespace" +msgstr "удалить табличное пространство" + +#: sql_help.h:702 +msgid "remove a text search configuration" +msgstr "удалить конфигурацию текстового поиска" + +#: sql_help.h:707 +msgid "remove a text search dictionary" +msgstr "удалить словарь текстового поиска" + +#: sql_help.h:712 +msgid "remove a text search parser" +msgstr "удалить анализатор текстового поиска" + +#: sql_help.h:717 +msgid "remove a text search template" +msgstr "удалить шаблон текстового поиска" + +#: sql_help.h:722 +msgid "remove a trigger" +msgstr "удалить триггер" + +#: sql_help.h:727 +msgid "remove a data type" +msgstr "удалить тип данных" + +#: sql_help.h:737 +msgid "remove a user mapping for a foreign server" +msgstr "удалить сопоставление пользователя для стороннего сервера" + +#: sql_help.h:742 +msgid "remove a view" +msgstr "удалить представление" + +#: sql_help.h:752 +msgid "execute a prepared statement" +msgstr "выполнить подготовленный оператор" + +#: sql_help.h:757 +msgid "show the execution plan of a statement" +msgstr "показать план выполнения оператора" + +#: sql_help.h:762 +msgid "retrieve rows from a query using a cursor" +msgstr "получить результат запроса через курсор" + +#: sql_help.h:767 +msgid "define access privileges" +msgstr "определить права доступа" + +#: sql_help.h:772 +msgid "create new rows in a table" +msgstr "добавить строки в таблицу" + +#: sql_help.h:777 +msgid "listen for a notification" +msgstr "ожидать уведомления" + +#: sql_help.h:782 +msgid "load a shared library file" +msgstr "загрузить файл разделяемой библиотеки" + +#: sql_help.h:787 +msgid "lock a table" +msgstr "заблокировать таблицу" + +#: sql_help.h:792 +msgid "position a cursor" +msgstr "установить курсор" + +#: sql_help.h:797 +msgid "generate a notification" +msgstr "сгенерировать уведомление" + +#: sql_help.h:802 +msgid "prepare a statement for execution" +msgstr "подготовить оператор для выполнения" + +#: sql_help.h:807 +msgid "prepare the current transaction for two-phase commit" +msgstr "подготовить текущую транзакцию для двухфазной фиксации" + +#: sql_help.h:812 +msgid "change the ownership of database objects owned by a database role" +msgstr "изменить владельца объектов БД, принадлежащих заданной роли" + +#: sql_help.h:817 +msgid "rebuild indexes" +msgstr "перестроить индексы" + +#: sql_help.h:822 +msgid "destroy a previously defined savepoint" +msgstr "удалить ранее определённую точку сохранения" + +#: sql_help.h:827 +msgid "restore the value of a run-time parameter to the default value" +msgstr "восстановить исходное значение параметра выполнения" + +#: sql_help.h:832 +msgid "remove access privileges" +msgstr "удалить права доступа" + +#: sql_help.h:842 +msgid "cancel a transaction that was earlier prepared for two-phase commit" +msgstr "отменить транзакцию, подготовленную ранее для двухфазной фиксации" + +#: sql_help.h:847 +msgid "roll back to a savepoint" +msgstr "откатиться к точке сохранения" + +#: sql_help.h:852 +msgid "define a new savepoint within the current transaction" +msgstr "определить новую точку сохранения в текущей транзакции" + +#: sql_help.h:857 +msgid "define or change a security label applied to an object" +msgstr "задать или изменить метку безопасности, применённую к объекту" + +#: sql_help.h:862 sql_help.h:907 sql_help.h:937 +msgid "retrieve rows from a table or view" +msgstr "выбрать строки из таблицы или представления" + +#: sql_help.h:872 +msgid "change a run-time parameter" +msgstr "изменить параметр выполнения" + +#: sql_help.h:877 +msgid "set constraint check timing for the current transaction" +msgstr "установить время проверки ограничений для текущей транзакции" + +#: sql_help.h:882 +msgid "set the current user identifier of the current session" +msgstr "задать идентификатор текущего пользователя в текущем сеансе" + +#: sql_help.h:887 +msgid "" +"set the session user identifier and the current user identifier of the " +"current session" +msgstr "" +"задать идентификатор пользователя сеанса и идентификатор текущего " +"пользователя в текущем сеансе" + +#: sql_help.h:892 +msgid "set the characteristics of the current transaction" +msgstr "задать свойства текущей транзакции" + +#: sql_help.h:897 +msgid "show the value of a run-time parameter" +msgstr "показать значение параметра выполнения" + +#: sql_help.h:912 +msgid "empty a table or set of tables" +msgstr "опустошить таблицу или набор таблиц" + +#: sql_help.h:917 +msgid "stop listening for a notification" +msgstr "прекратить ожидание уведомлений" + +#: sql_help.h:922 +msgid "update rows of a table" +msgstr "изменить строки таблицы" + +#: sql_help.h:927 +msgid "garbage-collect and optionally analyze a database" +msgstr "произвести сборку мусора и проанализировать базу данных" + +#: sql_help.h:932 +msgid "compute a set of rows" +msgstr "получить набор строк" + +#: sql_help.c:26 sql_help.c:29 sql_help.c:32 sql_help.c:44 sql_help.c:46 +#: sql_help.c:48 sql_help.c:59 sql_help.c:61 sql_help.c:63 sql_help.c:87 +#: sql_help.c:91 sql_help.c:93 sql_help.c:95 sql_help.c:97 sql_help.c:100 +#: sql_help.c:102 sql_help.c:104 sql_help.c:179 sql_help.c:181 sql_help.c:182 +#: sql_help.c:184 sql_help.c:186 sql_help.c:188 sql_help.c:276 sql_help.c:281 +#: sql_help.c:306 sql_help.c:308 sql_help.c:311 sql_help.c:313 sql_help.c:351 +#: sql_help.c:356 sql_help.c:361 sql_help.c:366 sql_help.c:404 sql_help.c:406 +#: sql_help.c:408 sql_help.c:411 sql_help.c:421 sql_help.c:423 sql_help.c:442 +#: sql_help.c:446 sql_help.c:459 sql_help.c:462 sql_help.c:465 sql_help.c:485 +#: sql_help.c:497 sql_help.c:505 sql_help.c:508 sql_help.c:511 sql_help.c:541 +#: sql_help.c:547 sql_help.c:549 sql_help.c:553 sql_help.c:556 sql_help.c:559 +#: sql_help.c:569 sql_help.c:571 sql_help.c:588 sql_help.c:597 sql_help.c:599 +#: sql_help.c:601 sql_help.c:675 sql_help.c:677 sql_help.c:680 sql_help.c:682 +#: sql_help.c:740 sql_help.c:742 sql_help.c:744 sql_help.c:747 sql_help.c:768 +#: sql_help.c:771 sql_help.c:774 sql_help.c:777 sql_help.c:781 sql_help.c:783 +#: sql_help.c:785 sql_help.c:787 sql_help.c:801 sql_help.c:804 sql_help.c:806 +#: sql_help.c:808 sql_help.c:818 sql_help.c:820 sql_help.c:830 sql_help.c:832 +#: sql_help.c:841 sql_help.c:862 sql_help.c:864 sql_help.c:866 sql_help.c:869 +#: sql_help.c:871 sql_help.c:873 sql_help.c:911 sql_help.c:917 sql_help.c:919 +#: sql_help.c:922 sql_help.c:924 sql_help.c:926 sql_help.c:951 sql_help.c:954 +#: sql_help.c:956 sql_help.c:958 sql_help.c:960 sql_help.c:1000 +#: sql_help.c:1183 sql_help.c:1191 sql_help.c:1235 sql_help.c:1239 +#: sql_help.c:1249 sql_help.c:1267 sql_help.c:1290 sql_help.c:1322 +#: sql_help.c:1367 sql_help.c:1409 sql_help.c:1431 sql_help.c:1451 +#: sql_help.c:1452 sql_help.c:1469 sql_help.c:1489 sql_help.c:1511 +#: sql_help.c:1539 sql_help.c:1560 sql_help.c:1590 sql_help.c:1771 +#: sql_help.c:1784 sql_help.c:1801 sql_help.c:1817 sql_help.c:1840 +#: sql_help.c:1883 sql_help.c:1887 sql_help.c:1889 sql_help.c:1907 +#: sql_help.c:1934 sql_help.c:1967 sql_help.c:1977 sql_help.c:1986 +#: sql_help.c:2030 sql_help.c:2048 sql_help.c:2056 sql_help.c:2064 +#: sql_help.c:2072 sql_help.c:2088 sql_help.c:2096 sql_help.c:2105 +#: sql_help.c:2116 sql_help.c:2124 sql_help.c:2132 sql_help.c:2140 +#: sql_help.c:2150 sql_help.c:2159 sql_help.c:2168 sql_help.c:2176 +#: sql_help.c:2184 sql_help.c:2193 sql_help.c:2201 sql_help.c:2217 +#: sql_help.c:2233 sql_help.c:2241 sql_help.c:2249 sql_help.c:2257 +#: sql_help.c:2265 sql_help.c:2274 sql_help.c:2282 sql_help.c:2299 +#: sql_help.c:2314 sql_help.c:2506 sql_help.c:2557 sql_help.c:2584 +#: sql_help.c:2927 sql_help.c:2973 sql_help.c:3080 +msgid "name" +msgstr "имя" + +#: sql_help.c:27 sql_help.c:30 sql_help.c:33 sql_help.c:317 sql_help.c:320 +#: sql_help.c:2031 +msgid "type" +msgstr "тип" + +#: sql_help.c:28 sql_help.c:45 sql_help.c:60 sql_help.c:92 sql_help.c:312 +#: sql_help.c:360 sql_help.c:393 sql_help.c:405 sql_help.c:422 sql_help.c:461 +#: sql_help.c:507 sql_help.c:548 sql_help.c:570 sql_help.c:600 sql_help.c:681 +#: sql_help.c:741 sql_help.c:784 sql_help.c:805 sql_help.c:819 sql_help.c:831 +#: sql_help.c:843 sql_help.c:870 sql_help.c:918 sql_help.c:959 +msgid "new_name" +msgstr "новое_имя" + +#: sql_help.c:31 sql_help.c:47 sql_help.c:62 sql_help.c:94 sql_help.c:187 +#: sql_help.c:282 sql_help.c:322 sql_help.c:365 sql_help.c:424 sql_help.c:433 +#: sql_help.c:445 sql_help.c:464 sql_help.c:510 sql_help.c:572 sql_help.c:598 +#: sql_help.c:617 sql_help.c:725 sql_help.c:743 sql_help.c:786 sql_help.c:807 +#: sql_help.c:865 sql_help.c:957 +msgid "new_owner" +msgstr "новый_владелец" + +#: sql_help.c:34 sql_help.c:49 sql_help.c:64 sql_help.c:189 sql_help.c:228 +#: sql_help.c:314 sql_help.c:370 sql_help.c:449 sql_help.c:467 sql_help.c:513 +#: sql_help.c:602 sql_help.c:683 sql_help.c:788 sql_help.c:809 sql_help.c:821 +#: sql_help.c:833 sql_help.c:872 sql_help.c:961 +msgid "new_schema" +msgstr "новая_схема" + +#: sql_help.c:88 sql_help.c:279 sql_help.c:323 sql_help.c:542 sql_help.c:614 +#: sql_help.c:802 sql_help.c:912 sql_help.c:938 sql_help.c:1142 +#: sql_help.c:1147 sql_help.c:1325 sql_help.c:1343 sql_help.c:1410 +#: sql_help.c:1540 sql_help.c:1611 sql_help.c:1786 sql_help.c:1935 +#: sql_help.c:1957 sql_help.c:2332 +msgid "option" +msgstr "параметр" + +#: sql_help.c:89 sql_help.c:543 sql_help.c:913 sql_help.c:1411 sql_help.c:1541 +#: sql_help.c:1936 +msgid "where option can be:" +msgstr "где допустимые параметры:" + +#: sql_help.c:90 sql_help.c:544 sql_help.c:914 sql_help.c:1274 sql_help.c:1542 +#: sql_help.c:1937 +msgid "connlimit" +msgstr "предел_подключений" + +#: sql_help.c:96 sql_help.c:726 +msgid "new_tablespace" +msgstr "новое_табл_пространство" + +#: sql_help.c:98 sql_help.c:101 sql_help.c:103 sql_help.c:374 sql_help.c:376 +#: sql_help.c:377 sql_help.c:551 sql_help.c:555 sql_help.c:558 sql_help.c:920 +#: sql_help.c:923 sql_help.c:925 sql_help.c:1378 sql_help.c:2601 +#: sql_help.c:2916 +msgid "configuration_parameter" +msgstr "параметр_конфигурации" + +#: sql_help.c:99 sql_help.c:280 sql_help.c:324 sql_help.c:375 sql_help.c:410 +#: sql_help.c:552 sql_help.c:615 sql_help.c:702 sql_help.c:720 sql_help.c:746 +#: sql_help.c:803 sql_help.c:921 sql_help.c:939 sql_help.c:1326 +#: sql_help.c:1344 sql_help.c:1379 sql_help.c:1380 sql_help.c:1439 +#: sql_help.c:1612 sql_help.c:1686 sql_help.c:1694 sql_help.c:1726 +#: sql_help.c:1748 sql_help.c:1787 sql_help.c:1958 sql_help.c:2917 +#: sql_help.c:2918 +msgid "value" +msgstr "значение" + +#: sql_help.c:151 +msgid "target_role" +msgstr "целевая_роль" + +#: sql_help.c:152 sql_help.c:1575 sql_help.c:2430 sql_help.c:2437 +#: sql_help.c:2449 sql_help.c:2455 sql_help.c:2684 sql_help.c:2691 +#: sql_help.c:2703 sql_help.c:2709 +msgid "schema_name" +msgstr "имя_схемы" + +#: sql_help.c:153 +msgid "abbreviated_grant_or_revoke" +msgstr "предложение_GRANT_или_REVOKE" + +#: sql_help.c:154 +msgid "where abbreviated_grant_or_revoke is one of:" +msgstr "где допустимое предложение_GRANT_или_REVOKE:" + +#: sql_help.c:155 sql_help.c:156 sql_help.c:157 sql_help.c:158 sql_help.c:159 +#: sql_help.c:160 sql_help.c:1414 sql_help.c:1415 sql_help.c:1416 +#: sql_help.c:1417 sql_help.c:1418 sql_help.c:1545 sql_help.c:1546 +#: sql_help.c:1547 sql_help.c:1548 sql_help.c:1549 sql_help.c:1940 +#: sql_help.c:1941 sql_help.c:1942 sql_help.c:1943 sql_help.c:1944 +#: sql_help.c:2431 sql_help.c:2435 sql_help.c:2438 sql_help.c:2440 +#: sql_help.c:2442 sql_help.c:2444 sql_help.c:2450 sql_help.c:2452 +#: sql_help.c:2454 sql_help.c:2456 sql_help.c:2458 sql_help.c:2459 +#: sql_help.c:2460 sql_help.c:2685 sql_help.c:2689 sql_help.c:2692 +#: sql_help.c:2694 sql_help.c:2696 sql_help.c:2698 sql_help.c:2704 +#: sql_help.c:2706 sql_help.c:2708 sql_help.c:2710 sql_help.c:2712 +#: sql_help.c:2713 sql_help.c:2714 sql_help.c:2937 +msgid "role_name" +msgstr "имя_роли" + +#: sql_help.c:180 sql_help.c:693 sql_help.c:695 sql_help.c:953 sql_help.c:1293 +#: sql_help.c:1297 sql_help.c:1435 sql_help.c:1698 sql_help.c:1708 +#: sql_help.c:1730 sql_help.c:2474 sql_help.c:2822 sql_help.c:2823 +#: sql_help.c:2827 sql_help.c:2832 sql_help.c:2891 sql_help.c:2892 +#: sql_help.c:2897 sql_help.c:2902 sql_help.c:3025 sql_help.c:3026 +#: sql_help.c:3030 sql_help.c:3035 sql_help.c:3106 sql_help.c:3108 +#: sql_help.c:3139 sql_help.c:3181 sql_help.c:3182 sql_help.c:3186 +#: sql_help.c:3191 +msgid "expression" +msgstr "выражение" + +#: sql_help.c:183 +msgid "domain_constraint" +msgstr "ограничение_домена" + +#: sql_help.c:185 sql_help.c:708 sql_help.c:709 sql_help.c:728 sql_help.c:1059 +#: sql_help.c:1296 sql_help.c:1697 sql_help.c:1707 +msgid "constraint_name" +msgstr "имя_ограничения" + +#: sql_help.c:225 sql_help.c:227 sql_help.c:229 sql_help.c:231 sql_help.c:1308 +#: sql_help.c:2080 +msgid "extension_name" +msgstr "имя_расширения" + +#: sql_help.c:226 sql_help.c:613 +msgid "new_version" +msgstr "новая_версия" + +#: sql_help.c:230 sql_help.c:232 +msgid "member_object" +msgstr "элемент_объект" + +#: sql_help.c:233 +msgid "where member_object is:" +msgstr "где элемент_объект:" + +#: sql_help.c:234 sql_help.c:1052 sql_help.c:2771 +msgid "agg_name" +msgstr "агр_функция" + +#: sql_help.c:235 sql_help.c:1053 sql_help.c:2772 +msgid "agg_type" +msgstr "агр_тип" + +#: sql_help.c:236 sql_help.c:1054 sql_help.c:1215 sql_help.c:1219 +#: sql_help.c:1221 sql_help.c:2039 +msgid "source_type" +msgstr "исходный_тип" + +#: sql_help.c:237 sql_help.c:1055 sql_help.c:1216 sql_help.c:1220 +#: sql_help.c:1222 sql_help.c:2040 +msgid "target_type" +msgstr "целевой_тип" + +#: sql_help.c:238 sql_help.c:239 sql_help.c:240 sql_help.c:241 sql_help.c:242 +#: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:255 sql_help.c:256 +#: sql_help.c:257 sql_help.c:258 sql_help.c:259 sql_help.c:260 sql_help.c:261 +#: sql_help.c:262 sql_help.c:263 sql_help.c:264 sql_help.c:1056 +#: sql_help.c:1061 sql_help.c:1062 sql_help.c:1063 sql_help.c:1064 +#: sql_help.c:1065 sql_help.c:1066 sql_help.c:1071 sql_help.c:1076 +#: sql_help.c:1078 sql_help.c:1080 sql_help.c:1081 sql_help.c:1084 +#: sql_help.c:1085 sql_help.c:1086 sql_help.c:1087 sql_help.c:1088 +#: sql_help.c:1089 sql_help.c:1090 sql_help.c:1091 sql_help.c:1092 +#: sql_help.c:1095 sql_help.c:1096 sql_help.c:2768 sql_help.c:2773 +#: sql_help.c:2774 sql_help.c:2780 sql_help.c:2781 sql_help.c:2782 +#: sql_help.c:2783 sql_help.c:2784 +msgid "object_name" +msgstr "имя_объекта" + +#: sql_help.c:243 sql_help.c:495 sql_help.c:1067 sql_help.c:1217 +#: sql_help.c:1252 sql_help.c:1470 sql_help.c:1501 sql_help.c:1845 +#: sql_help.c:2445 sql_help.c:2699 sql_help.c:2775 sql_help.c:2848 +#: sql_help.c:2853 sql_help.c:3051 sql_help.c:3056 sql_help.c:3207 +#: sql_help.c:3212 +msgid "function_name" +msgstr "имя_функции" + +#: sql_help.c:244 sql_help.c:352 sql_help.c:357 sql_help.c:362 sql_help.c:367 +#: sql_help.c:1068 sql_help.c:1368 sql_help.c:2106 sql_help.c:2446 +#: sql_help.c:2700 sql_help.c:2776 +msgid "argmode" +msgstr "режим_аргумента" + +#: sql_help.c:245 sql_help.c:353 sql_help.c:358 sql_help.c:363 sql_help.c:368 +#: sql_help.c:1069 sql_help.c:1369 sql_help.c:2107 sql_help.c:2777 +msgid "argname" +msgstr "имя_аргумента" + +#: sql_help.c:246 sql_help.c:354 sql_help.c:359 sql_help.c:364 sql_help.c:369 +#: sql_help.c:1070 sql_help.c:1370 sql_help.c:2108 sql_help.c:2778 +msgid "argtype" +msgstr "тип_аргумента" + +#: sql_help.c:247 sql_help.c:488 sql_help.c:1073 sql_help.c:1494 +msgid "operator_name" +msgstr "имя_оператора" + +#: sql_help.c:248 sql_help.c:443 sql_help.c:447 sql_help.c:1074 +#: sql_help.c:1471 sql_help.c:2141 +msgid "left_type" +msgstr "тип_слева" + +#: sql_help.c:249 sql_help.c:444 sql_help.c:448 sql_help.c:1075 +#: sql_help.c:1472 sql_help.c:2142 +msgid "right_type" +msgstr "тип_справа" + +#: sql_help.c:251 sql_help.c:253 sql_help.c:460 sql_help.c:463 sql_help.c:466 +#: sql_help.c:486 sql_help.c:498 sql_help.c:506 sql_help.c:509 sql_help.c:512 +#: sql_help.c:1077 sql_help.c:1079 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1713 sql_help.c:2151 sql_help.c:2160 +msgid "index_method" +msgstr "метод_индекса" + +#: sql_help.c:277 sql_help.c:1323 +msgid "handler_function" +msgstr "функция_обработчик" + +#: sql_help.c:278 sql_help.c:1324 +msgid "validator_function" +msgstr "функция_проверки" + +#: sql_help.c:307 sql_help.c:355 sql_help.c:676 sql_help.c:863 sql_help.c:1704 +#: sql_help.c:1705 sql_help.c:1721 sql_help.c:1722 +msgid "action" +msgstr "действие" + +#: sql_help.c:309 sql_help.c:316 sql_help.c:318 sql_help.c:319 sql_help.c:321 +#: sql_help.c:596 sql_help.c:678 sql_help.c:685 sql_help.c:689 sql_help.c:690 +#: sql_help.c:694 sql_help.c:696 sql_help.c:697 sql_help.c:698 sql_help.c:700 +#: sql_help.c:703 sql_help.c:705 sql_help.c:952 sql_help.c:955 sql_help.c:970 +#: sql_help.c:1140 sql_help.c:1144 sql_help.c:1156 sql_help.c:1157 +#: sql_help.c:1434 sql_help.c:1597 sql_help.c:1729 sql_help.c:2432 +#: sql_help.c:2433 sql_help.c:2473 sql_help.c:2686 sql_help.c:2687 +#: sql_help.c:3105 sql_help.c:3107 sql_help.c:3124 sql_help.c:3127 +msgid "column" +msgstr "колонка" + +#: sql_help.c:310 sql_help.c:679 +msgid "new_column" +msgstr "новая_колонка" + +#: sql_help.c:315 sql_help.c:371 sql_help.c:684 sql_help.c:876 +msgid "where action is one of:" +msgstr "где допустимое действие:" + +#: sql_help.c:372 sql_help.c:1376 +msgid "execution_cost" +msgstr "стоимость_выполнения" + +#: sql_help.c:373 sql_help.c:1377 +msgid "result_rows" +msgstr "строк_в_результате" + +#: sql_help.c:388 sql_help.c:390 sql_help.c:392 +msgid "group_name" +msgstr "имя_группы" + +#: sql_help.c:389 sql_help.c:391 sql_help.c:936 sql_help.c:1268 +#: sql_help.c:1576 sql_help.c:1578 sql_help.c:1759 sql_help.c:1955 +#: sql_help.c:2290 sql_help.c:2947 +msgid "user_name" +msgstr "имя_пользователя" + +#: sql_help.c:407 sql_help.c:1758 sql_help.c:2225 sql_help.c:2457 +#: sql_help.c:2711 +msgid "tablespace_name" +msgstr "табл_пространство" + +#: sql_help.c:409 sql_help.c:412 sql_help.c:719 sql_help.c:721 sql_help.c:1438 +#: sql_help.c:1685 sql_help.c:1693 sql_help.c:1725 sql_help.c:1747 +msgid "storage_parameter" +msgstr "параметр_хранения" + +#: sql_help.c:432 sql_help.c:1072 sql_help.c:2779 +msgid "large_object_oid" +msgstr "oid_большого_объекта" + +#: sql_help.c:487 sql_help.c:499 sql_help.c:1493 +msgid "strategy_number" +msgstr "номер_стратегии" + +#: sql_help.c:489 sql_help.c:490 sql_help.c:493 sql_help.c:494 sql_help.c:500 +#: sql_help.c:501 sql_help.c:503 sql_help.c:504 sql_help.c:1495 +#: sql_help.c:1496 sql_help.c:1499 sql_help.c:1500 +msgid "op_type" +msgstr "тип_операции" + +#: sql_help.c:491 sql_help.c:1497 +msgid "sort_family_name" +msgstr "семейство_сортировки" + +#: sql_help.c:492 sql_help.c:502 sql_help.c:1498 +msgid "support_number" +msgstr "номер_опорной_процедуры" + +#: sql_help.c:496 sql_help.c:1218 sql_help.c:1502 +msgid "argument_type" +msgstr "тип_аргумента" + +#: sql_help.c:545 sql_help.c:915 sql_help.c:1412 sql_help.c:1543 +#: sql_help.c:1938 +msgid "password" +msgstr "пароль" + +#: sql_help.c:546 sql_help.c:916 sql_help.c:1413 sql_help.c:1544 +#: sql_help.c:1939 +msgid "timestamp" +msgstr "timestamp" + +#: sql_help.c:550 sql_help.c:554 sql_help.c:557 sql_help.c:560 sql_help.c:2439 +#: sql_help.c:2693 +msgid "database_name" +msgstr "имя_БД" + +#: sql_help.c:589 sql_help.c:1591 +msgid "increment" +msgstr "шаг" + +#: sql_help.c:590 sql_help.c:1592 +msgid "minvalue" +msgstr "мин_значение" + +#: sql_help.c:591 sql_help.c:1593 +msgid "maxvalue" +msgstr "макс_значение" + +#: sql_help.c:592 sql_help.c:1594 sql_help.c:2835 sql_help.c:2905 +#: sql_help.c:3038 sql_help.c:3143 sql_help.c:3194 +msgid "start" +msgstr "начальное_значение" + +#: sql_help.c:593 +msgid "restart" +msgstr "значение_перезапуска" + +#: sql_help.c:594 sql_help.c:1595 +msgid "cache" +msgstr "кэш" + +#: sql_help.c:612 sql_help.c:616 sql_help.c:937 sql_help.c:1342 +#: sql_help.c:1607 sql_help.c:1956 sql_help.c:2209 sql_help.c:2291 +#: sql_help.c:2443 sql_help.c:2697 +msgid "server_name" +msgstr "имя_сервера" + +#: sql_help.c:686 sql_help.c:691 sql_help.c:878 sql_help.c:882 sql_help.c:1291 +#: sql_help.c:1341 sql_help.c:1490 sql_help.c:1678 sql_help.c:1885 +#: sql_help.c:2558 +msgid "data_type" +msgstr "тип_данных" + +#: sql_help.c:687 sql_help.c:692 sql_help.c:879 sql_help.c:883 sql_help.c:1292 +#: sql_help.c:1436 sql_help.c:1679 sql_help.c:1886 +msgid "collation" +msgstr "правило_сортировки" + +#: sql_help.c:688 sql_help.c:1680 sql_help.c:1691 +msgid "column_constraint" +msgstr "ограничение_колонки" + +#: sql_help.c:699 +msgid "integer" +msgstr "целое" + +#: sql_help.c:701 sql_help.c:704 +msgid "attribute_option" +msgstr "атрибут" + +#: sql_help.c:706 sql_help.c:1681 sql_help.c:1692 +msgid "table_constraint" +msgstr "ограничение_таблицы" + +#: sql_help.c:707 +msgid "table_constraint_using_index" +msgstr "ограничение_таблицы_с_индексом" + +#: sql_help.c:710 sql_help.c:711 sql_help.c:712 sql_help.c:713 sql_help.c:1093 +msgid "trigger_name" +msgstr "имя_триггера" + +#: sql_help.c:714 sql_help.c:715 sql_help.c:716 sql_help.c:717 +msgid "rewrite_rule_name" +msgstr "имя_правила_перезаписи" + +#: sql_help.c:718 sql_help.c:729 sql_help.c:1010 +msgid "index_name" +msgstr "имя_индекса" + +#: sql_help.c:722 sql_help.c:723 sql_help.c:1682 sql_help.c:1684 +msgid "parent_table" +msgstr "таблица_родитель" + +#: sql_help.c:724 sql_help.c:1689 +msgid "type_name" +msgstr "имя_типа" + +#: sql_help.c:727 +msgid "and table_constraint_using_index is:" +msgstr "и ограничение_таблицы_с_индексом:" + +#: sql_help.c:745 sql_help.c:748 +msgid "tablespace_option" +msgstr "параметр_табл_пространства" + +#: sql_help.c:769 sql_help.c:772 sql_help.c:778 sql_help.c:782 +msgid "token_type" +msgstr "тип_фрагмента" + +#: sql_help.c:770 sql_help.c:773 +msgid "dictionary_name" +msgstr "имя_словаря" + +#: sql_help.c:775 sql_help.c:779 +msgid "old_dictionary" +msgstr "старый_словарь" + +#: sql_help.c:776 sql_help.c:780 +msgid "new_dictionary" +msgstr "новый_словарь" + +#: sql_help.c:867 sql_help.c:877 sql_help.c:880 sql_help.c:881 sql_help.c:1884 +msgid "attribute_name" +msgstr "имя_атрибута" + +#: sql_help.c:868 +msgid "new_attribute_name" +msgstr "новое_имя_атрибута" + +#: sql_help.c:874 +msgid "new_enum_value" +msgstr "новое_значение_перечисления" + +#: sql_help.c:875 +msgid "existing_enum_value" +msgstr "существующее_значение_перечисления" + +#: sql_help.c:984 sql_help.c:2962 sql_help.c:2963 sql_help.c:2987 +msgid "transaction_mode" +msgstr "режим_транзакции" + +#: sql_help.c:985 sql_help.c:2964 sql_help.c:2988 +msgid "where transaction_mode is one of:" +msgstr "где допустимый режим_транзакции:" + +#: sql_help.c:1009 sql_help.c:1060 sql_help.c:1083 sql_help.c:1094 +#: sql_help.c:1139 sql_help.c:1143 sql_help.c:1339 sql_help.c:1676 +#: sql_help.c:1688 sql_help.c:1745 sql_help.c:2429 sql_help.c:2434 +#: sql_help.c:2683 sql_help.c:2688 sql_help.c:2769 sql_help.c:2837 +#: sql_help.c:2839 sql_help.c:2868 sql_help.c:2907 sql_help.c:3040 +#: sql_help.c:3042 sql_help.c:3071 sql_help.c:3196 sql_help.c:3198 +#: sql_help.c:3227 +msgid "table_name" +msgstr "имя_таблицы" + +#: sql_help.c:1057 +msgid "relation_name" +msgstr "имя_отношения" + +#: sql_help.c:1058 sql_help.c:1340 sql_help.c:1373 sql_help.c:1677 +#: sql_help.c:1690 sql_help.c:1709 sql_help.c:1711 sql_help.c:1718 +#: sql_help.c:1746 sql_help.c:1848 sql_help.c:1968 sql_help.c:2770 +#: sql_help.c:2863 sql_help.c:3066 sql_help.c:3222 +msgid "column_name" +msgstr "имя_колонки" + +#: sql_help.c:1082 +msgid "rule_name" +msgstr "имя_правила" + +#: sql_help.c:1097 +msgid "text" +msgstr "текст" + +#: sql_help.c:1112 sql_help.c:2567 sql_help.c:2729 +msgid "transaction_id" +msgstr "код_транзакции" + +#: sql_help.c:1141 sql_help.c:1146 sql_help.c:2493 +msgid "filename" +msgstr "имя_файла" + +#: sql_help.c:1145 sql_help.c:1750 sql_help.c:1969 sql_help.c:1987 +#: sql_help.c:2475 +msgid "query" +msgstr "запрос" + +#: sql_help.c:1148 sql_help.c:2335 +msgid "where option can be one of:" +msgstr "где допустимый параметр:" + +#: sql_help.c:1149 +msgid "format_name" +msgstr "имя_формата" + +#: sql_help.c:1150 sql_help.c:1153 sql_help.c:2336 sql_help.c:2337 +#: sql_help.c:2338 sql_help.c:2339 +msgid "boolean" +msgstr "логическое_значение" + +#: sql_help.c:1151 +msgid "delimiter_character" +msgstr "символ_разделитель" + +#: sql_help.c:1152 +msgid "null_string" +msgstr "представление_NULL" + +#: sql_help.c:1154 +msgid "quote_character" +msgstr "символ_кавычек" + +#: sql_help.c:1155 +msgid "escape_character" +msgstr "спецсимвол" + +#: sql_help.c:1158 +msgid "encoding_name" +msgstr "имя_кодировки" + +#: sql_help.c:1184 +msgid "input_data_type" +msgstr "тип_входных_данных" + +#: sql_help.c:1185 sql_help.c:1193 +msgid "sfunc" +msgstr "функция_состояния" + +#: sql_help.c:1186 sql_help.c:1194 +msgid "state_data_type" +msgstr "тип_данных_состояния" + +#: sql_help.c:1187 sql_help.c:1195 +msgid "ffunc" +msgstr "функция_завершения" + +#: sql_help.c:1188 sql_help.c:1196 +msgid "initial_condition" +msgstr "начальное_условие" + +#: sql_help.c:1189 sql_help.c:1197 +msgid "sort_operator" +msgstr "оператор_сортировки" + +#: sql_help.c:1190 +msgid "or the old syntax" +msgstr "или старый синтаксис" + +#: sql_help.c:1192 +msgid "base_type" +msgstr "базовый_тип" + +#: sql_help.c:1236 +msgid "locale" +msgstr "код_локали" + +#: sql_help.c:1237 sql_help.c:1271 +msgid "lc_collate" +msgstr "код_правила_сортировки" + +#: sql_help.c:1238 sql_help.c:1272 +msgid "lc_ctype" +msgstr "код_классификации_символов" + +#: sql_help.c:1240 +msgid "existing_collation" +msgstr "существующее_правило_сортировки" + +#: sql_help.c:1250 +msgid "source_encoding" +msgstr "исходная_кодировка" + +#: sql_help.c:1251 +msgid "dest_encoding" +msgstr "целевая_кодировка" + +#: sql_help.c:1269 sql_help.c:1785 +msgid "template" +msgstr "шаблон" + +#: sql_help.c:1270 +msgid "encoding" +msgstr "кодировка" + +#: sql_help.c:1273 sql_help.c:1440 sql_help.c:1687 sql_help.c:1695 +#: sql_help.c:1727 sql_help.c:1749 +msgid "tablespace" +msgstr "табл_пространство" + +#: sql_help.c:1294 +msgid "constraint" +msgstr "ограничение" + +#: sql_help.c:1295 +msgid "where constraint is:" +msgstr "где ограничение:" + +#: sql_help.c:1309 +msgid "schema" +msgstr "схема" + +#: sql_help.c:1310 +msgid "version" +msgstr "версия" + +#: sql_help.c:1311 +msgid "old_version" +msgstr "старая_версия" + +#: sql_help.c:1371 sql_help.c:1699 +msgid "default_expr" +msgstr "выражение_по_умолчанию" + +#: sql_help.c:1372 +msgid "rettype" +msgstr "тип_возврата" + +#: sql_help.c:1374 +msgid "column_type" +msgstr "тип_колонки" + +#: sql_help.c:1375 sql_help.c:2021 sql_help.c:2451 sql_help.c:2705 +msgid "lang_name" +msgstr "имя_языка" + +#: sql_help.c:1381 +msgid "definition" +msgstr "определение" + +#: sql_help.c:1382 +msgid "obj_file" +msgstr "объектный_файл" + +#: sql_help.c:1383 +msgid "link_symbol" +msgstr "символ_в_экспорте" + +#: sql_help.c:1384 +msgid "attribute" +msgstr "атрибут" + +#: sql_help.c:1419 sql_help.c:1550 sql_help.c:1945 +msgid "uid" +msgstr "uid" + +#: sql_help.c:1433 +msgid "method" +msgstr "метод" + +#: sql_help.c:1437 sql_help.c:1731 +msgid "opclass" +msgstr "класс_оператора" + +#: sql_help.c:1441 sql_help.c:1717 +msgid "predicate" +msgstr "предикат" + +#: sql_help.c:1453 +msgid "call_handler" +msgstr "обработчик_вызова" + +#: sql_help.c:1454 +msgid "inline_handler" +msgstr "обработчик_внедрённого_кода" + +#: sql_help.c:1455 +msgid "valfunction" +msgstr "функция_проверки" + +#: sql_help.c:1473 +msgid "com_op" +msgstr "коммут_оператор" + +#: sql_help.c:1474 +msgid "neg_op" +msgstr "обратный_оператор" + +#: sql_help.c:1475 +msgid "res_proc" +msgstr "процедура_ограничения" + +#: sql_help.c:1476 +msgid "join_proc" +msgstr "процедура_соединения" + +#: sql_help.c:1492 +msgid "family_name" +msgstr "имя_семейства" + +#: sql_help.c:1503 +msgid "storage_type" +msgstr "тип_хранения" + +#: sql_help.c:1561 sql_help.c:1841 +msgid "event" +msgstr "событие" + +#: sql_help.c:1563 sql_help.c:1844 sql_help.c:2003 sql_help.c:2826 +#: sql_help.c:2828 sql_help.c:2896 sql_help.c:2898 sql_help.c:3029 +#: sql_help.c:3031 sql_help.c:3110 sql_help.c:3185 sql_help.c:3187 +msgid "condition" +msgstr "условие" + +#: sql_help.c:1564 sql_help.c:1565 sql_help.c:1566 +msgid "command" +msgstr "команда" + +#: sql_help.c:1577 sql_help.c:1579 +msgid "schema_element" +msgstr "элемент_схемы" + +#: sql_help.c:1608 +msgid "server_type" +msgstr "тип_сервера" + +#: sql_help.c:1609 +msgid "server_version" +msgstr "версия_сервера" + +#: sql_help.c:1610 sql_help.c:2441 sql_help.c:2695 +msgid "fdw_name" +msgstr "имя_обёртки_сторонних_данных" + +#: sql_help.c:1683 +msgid "like_option" +msgstr "параметр_порождения" + +#: sql_help.c:1696 +msgid "where column_constraint is:" +msgstr "где ограничение_колонки:" + +#: sql_help.c:1700 sql_help.c:1701 sql_help.c:1710 sql_help.c:1712 +#: sql_help.c:1716 +msgid "index_parameters" +msgstr "параметры_индекса" + +#: sql_help.c:1702 sql_help.c:1719 +msgid "reftable" +msgstr "целевая_таблица" + +#: sql_help.c:1703 sql_help.c:1720 +msgid "refcolumn" +msgstr "целевая_колонка" + +#: sql_help.c:1706 +msgid "and table_constraint is:" +msgstr "и ограничение_таблицы:" + +#: sql_help.c:1714 +msgid "exclude_element" +msgstr "объект_исключения" + +#: sql_help.c:1723 +msgid "and like_option is:" +msgstr "и параметр_порождения:" + +#: sql_help.c:1724 +msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" +msgstr "параметры_индекса в ограничениях UNIQUE, PRIMARY KEY и EXCLUDE:" + +#: sql_help.c:1728 +msgid "exclude_element in an EXCLUDE constraint is:" +msgstr "объект_исключения в ограничении EXCLUDE:" + +#: sql_help.c:1760 +msgid "directory" +msgstr "каталог" + +#: sql_help.c:1772 +msgid "parser_name" +msgstr "имя_анализатора" + +#: sql_help.c:1773 +msgid "source_config" +msgstr "исходная_конфигурация" + +#: sql_help.c:1802 +msgid "start_function" +msgstr "функция_начала" + +#: sql_help.c:1803 +msgid "gettoken_function" +msgstr "функция_выдачи_фрагмента" + +#: sql_help.c:1804 +msgid "end_function" +msgstr "функция_окончания" + +#: sql_help.c:1805 +msgid "lextypes_function" +msgstr "функция_лекс_типов" + +#: sql_help.c:1806 +msgid "headline_function" +msgstr "функция_создания_выдержек" + +#: sql_help.c:1818 +msgid "init_function" +msgstr "функция_инициализации" + +#: sql_help.c:1819 +msgid "lexize_function" +msgstr "функция_выделения_лексем" + +#: sql_help.c:1843 +msgid "referenced_table_name" +msgstr "ссылающаяся_таблица" + +#: sql_help.c:1846 +msgid "arguments" +msgstr "аргументы" + +#: sql_help.c:1847 +msgid "where event can be one of:" +msgstr "где допустимое событие:" + +#: sql_help.c:1888 sql_help.c:2785 +msgid "label" +msgstr "метка" + +#: sql_help.c:1890 +msgid "input_function" +msgstr "функция_ввода" + +#: sql_help.c:1891 +msgid "output_function" +msgstr "функция_вывода" + +#: sql_help.c:1892 +msgid "receive_function" +msgstr "функция_получения" + +#: sql_help.c:1893 +msgid "send_function" +msgstr "функция_отправки" + +#: sql_help.c:1894 +msgid "type_modifier_input_function" +msgstr "функция_ввода_модификатора_типа" + +#: sql_help.c:1895 +msgid "type_modifier_output_function" +msgstr "функция_вывода_модификатора_типа" + +#: sql_help.c:1896 +msgid "analyze_function" +msgstr "функция_анализа" + +#: sql_help.c:1897 +msgid "internallength" +msgstr "внутр_длина" + +#: sql_help.c:1898 +msgid "alignment" +msgstr "выравнивание" + +#: sql_help.c:1899 +msgid "storage" +msgstr "хранение" + +#: sql_help.c:1900 +msgid "like_type" +msgstr "тип_образец" + +#: sql_help.c:1901 +msgid "category" +msgstr "категория" + +#: sql_help.c:1902 +msgid "preferred" +msgstr "предпочитаемый" + +#: sql_help.c:1903 +msgid "default" +msgstr "по_умолчанию" + +#: sql_help.c:1904 +msgid "element" +msgstr "элемент" + +#: sql_help.c:1905 +msgid "delimiter" +msgstr "разделитель" + +#: sql_help.c:1906 +msgid "collatable" +msgstr "сортируемый" + +#: sql_help.c:1999 sql_help.c:2471 sql_help.c:2821 sql_help.c:2890 +#: sql_help.c:3024 sql_help.c:3102 sql_help.c:3180 +msgid "with_query" +msgstr "запрос_WITH" + +#: sql_help.c:2001 sql_help.c:2840 sql_help.c:2843 sql_help.c:2846 +#: sql_help.c:2850 sql_help.c:3043 sql_help.c:3046 sql_help.c:3049 +#: sql_help.c:3053 sql_help.c:3104 sql_help.c:3199 sql_help.c:3202 +#: sql_help.c:3205 sql_help.c:3209 +msgid "alias" +msgstr "псевдоним" + +#: sql_help.c:2002 +msgid "using_list" +msgstr "список_USING" + +#: sql_help.c:2004 sql_help.c:2365 sql_help.c:2534 sql_help.c:3111 +msgid "cursor_name" +msgstr "имя_курсора" + +#: sql_help.c:2005 sql_help.c:2476 sql_help.c:3112 +msgid "output_expression" +msgstr "выражение_результата" + +#: sql_help.c:2006 sql_help.c:2477 sql_help.c:2824 sql_help.c:2893 +#: sql_help.c:3027 sql_help.c:3113 sql_help.c:3183 +msgid "output_name" +msgstr "имя_результата" + +#: sql_help.c:2022 +msgid "code" +msgstr "внедрённый_код" + +#: sql_help.c:2315 +msgid "parameter" +msgstr "параметр" + +#: sql_help.c:2333 sql_help.c:2334 sql_help.c:2559 +msgid "statement" +msgstr "оператор" + +#: sql_help.c:2364 sql_help.c:2533 +msgid "direction" +msgstr "направление" + +#: sql_help.c:2366 sql_help.c:2535 +msgid "where direction can be empty or one of:" +msgstr "где допустимое направление пустое или:" + +#: sql_help.c:2367 sql_help.c:2368 sql_help.c:2369 sql_help.c:2370 +#: sql_help.c:2371 sql_help.c:2536 sql_help.c:2537 sql_help.c:2538 +#: sql_help.c:2539 sql_help.c:2540 sql_help.c:2834 sql_help.c:2836 +#: sql_help.c:2904 sql_help.c:2906 sql_help.c:3037 sql_help.c:3039 +#: sql_help.c:3142 sql_help.c:3144 sql_help.c:3193 sql_help.c:3195 +msgid "count" +msgstr "число" + +#: sql_help.c:2436 sql_help.c:2690 +msgid "sequence_name" +msgstr "имя_последовательности" + +#: sql_help.c:2447 sql_help.c:2701 +msgid "arg_name" +msgstr "имя_аргумента" + +#: sql_help.c:2448 sql_help.c:2702 +msgid "arg_type" +msgstr "тип_аргумента" + +#: sql_help.c:2453 sql_help.c:2707 +msgid "loid" +msgstr "код_БО" + +#: sql_help.c:2485 sql_help.c:2548 sql_help.c:3088 +msgid "channel" +msgstr "канал" + +#: sql_help.c:2507 +msgid "lockmode" +msgstr "режим_блокировки" + +#: sql_help.c:2508 +msgid "where lockmode is one of:" +msgstr "где допустимый режим_блокировки:" + +#: sql_help.c:2549 +msgid "payload" +msgstr "сообщение_нагрузка" + +#: sql_help.c:2575 +msgid "old_role" +msgstr "старая_роль" + +#: sql_help.c:2576 +msgid "new_role" +msgstr "новая_роль" + +#: sql_help.c:2592 sql_help.c:2737 sql_help.c:2745 +msgid "savepoint_name" +msgstr "имя_точки_сохранения" + +#: sql_help.c:2767 +msgid "provider" +msgstr "поставщик" + +#: sql_help.c:2825 sql_help.c:2856 sql_help.c:2858 sql_help.c:2895 +#: sql_help.c:3028 sql_help.c:3059 sql_help.c:3061 sql_help.c:3184 +#: sql_help.c:3215 sql_help.c:3217 +msgid "from_item" +msgstr "источник_данных" + +#: sql_help.c:2829 sql_help.c:2899 sql_help.c:3032 sql_help.c:3188 +msgid "window_name" +msgstr "имя_окна" + +#: sql_help.c:2830 sql_help.c:2900 sql_help.c:3033 sql_help.c:3189 +msgid "window_definition" +msgstr "определение_окна" + +#: sql_help.c:2831 sql_help.c:2842 sql_help.c:2864 sql_help.c:2901 +#: sql_help.c:3034 sql_help.c:3045 sql_help.c:3067 sql_help.c:3190 +#: sql_help.c:3201 sql_help.c:3223 +msgid "select" +msgstr "select" + +#: sql_help.c:2838 sql_help.c:3041 sql_help.c:3197 +msgid "where from_item can be one of:" +msgstr "где допустимый источник_данных:" + +#: sql_help.c:2841 sql_help.c:2844 sql_help.c:2847 sql_help.c:2851 +#: sql_help.c:3044 sql_help.c:3047 sql_help.c:3050 sql_help.c:3054 +#: sql_help.c:3200 sql_help.c:3203 sql_help.c:3206 sql_help.c:3210 +msgid "column_alias" +msgstr "псевдоним_колонки" + +#: sql_help.c:2845 sql_help.c:2862 sql_help.c:3048 sql_help.c:3065 +#: sql_help.c:3204 sql_help.c:3221 +msgid "with_query_name" +msgstr "имя_запроса_WITH" + +#: sql_help.c:2849 sql_help.c:2854 sql_help.c:3052 sql_help.c:3057 +#: sql_help.c:3208 sql_help.c:3213 +msgid "argument" +msgstr "аргумент" + +#: sql_help.c:2852 sql_help.c:2855 sql_help.c:3055 sql_help.c:3058 +#: sql_help.c:3211 sql_help.c:3214 +msgid "column_definition" +msgstr "определение_колонки" + +#: sql_help.c:2857 sql_help.c:3060 sql_help.c:3216 +msgid "join_type" +msgstr "тип_соединения" + +#: sql_help.c:2859 sql_help.c:3062 sql_help.c:3218 +msgid "join_condition" +msgstr "условие_соединения" + +#: sql_help.c:2860 sql_help.c:3063 sql_help.c:3219 +msgid "join_column" +msgstr "колонка_соединения" + +#: sql_help.c:2861 sql_help.c:3064 sql_help.c:3220 +msgid "and with_query is:" +msgstr "и запрос_WITH:" + +#: sql_help.c:2865 sql_help.c:3068 sql_help.c:3224 +msgid "insert" +msgstr "insert" + +#: sql_help.c:2866 sql_help.c:3069 sql_help.c:3225 +msgid "update" +msgstr "update" + +#: sql_help.c:2867 sql_help.c:3070 sql_help.c:3226 +msgid "delete" +msgstr "delete" + +#: sql_help.c:2894 +msgid "new_table" +msgstr "новая_таблица" + +#: sql_help.c:2919 +msgid "timezone" +msgstr "часовой_пояс" + +#: sql_help.c:3109 +msgid "from_list" +msgstr "список_FROM" + +#: sql_help.c:3140 +msgid "sort_expression" +msgstr "выражение_сортировки" + +#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 +#, c-format +msgid "could not identify current directory: %s" +msgstr "не удалось определить текущий каталог: %s" + +#: ../../port/exec.c:144 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "неверный исполняемый файл \"%s\"" + +#: ../../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\"" + +#: ../../port/exec.c:255 ../../port/exec.c:291 +#, c-format +msgid "could not change directory to \"%s\"" +msgstr "не удалось перейти в каталог \"%s\"" + +#: ../../port/exec.c:270 +#, c-format +msgid "could not read symbolic link \"%s\"" +msgstr "не удалось прочитать символическую ссылку \"%s\"" + +#: ../../port/exec.c:525 +#, c-format +msgid "child process exited with exit code %d" +msgstr "дочерний процесс завершился с кодом возврата %d" + +#: ../../port/exec.c:529 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "дочерний процесс прерван исключением 0x%X" + +#: ../../port/exec.c:538 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "дочерний процесс завершён по сигналу %s" + +#: ../../port/exec.c:541 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "дочерний процесс завершён по сигналу %d" + +#: ../../port/exec.c:545 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "дочерний процесс завершился с нераспознанным состоянием %d" diff --git a/src/bin/psql/po/sv.po b/src/bin/psql/po/sv.po deleted file mode 100644 index f0db905c52..0000000000 --- a/src/bin/psql/po/sv.po +++ /dev/null @@ -1,5567 +0,0 @@ -# Swedish message translation file for psql -# Peter Eisentraut , 2001, 2009, 2010. -# Dennis Bj�rklund , 2002, 2003, 2004, 2005, 2006. -# -# pgtranslation Id: psql.po,v 1.7 2010/07/03 01:48:43 petere Exp $ -# -# Use these quotes: "%s" -# -msgid "" -msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" -"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-07-01 15:17+0000\n" -"PO-Revision-Date: 2010-07-02 21:48-0400\n" -"Last-Translator: Peter Eisentraut \n" -"Language-Team: Swedish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: command.c:112 -#, c-format -msgid "Invalid command \\%s. Try \\? for help.\n" -msgstr "Ogiltigt kommando \\%s. F�rs�k med \\? f�r hj�lp.\n" - -#: command.c:114 -#, c-format -msgid "invalid command \\%s\n" -msgstr "ogiltigt kommando \\%s\n" - -#: command.c:125 -#, c-format -msgid "\\%s: extra argument \"%s\" ignored\n" -msgstr "\\%s: extra argument \"%s\" ignorerat\n" - -#: command.c:267 -#, c-format -msgid "could not get home directory: %s\n" -msgstr "kunde inte h�mta hemkatalogen: %s\n" - -#: command.c:283 -#, c-format -msgid "\\%s: could not change directory to \"%s\": %s\n" -msgstr "\\%s: kunde inte byta katalog till \"%s\": %s\n" - -#: command.c:316 common.c:940 -#, c-format -msgid "Time: %.3f ms\n" -msgstr "Tid: %.3f ms\n" - -#: command.c:485 command.c:513 command.c:1064 -msgid "no query buffer\n" -msgstr "ingen fr�gebuffert\n" - -#: command.c:555 -msgid "No changes" -msgstr "" - -#: command.c:609 -#, c-format -msgid "%s: invalid encoding name or conversion procedure not found\n" -msgstr "%s: ogiltigt kodningsnamn eller konverteringsprocedur hittades inte\n" - -#: command.c:688 command.c:722 command.c:736 command.c:753 command.c:857 -#: command.c:907 command.c:1044 command.c:1075 -#, c-format -msgid "\\%s: missing required argument\n" -msgstr "\\%s: obligatoriskt argument saknas\n" - -#: command.c:785 -msgid "Query buffer is empty." -msgstr "Fr�gebufferten �r tom." - -#: command.c:795 -msgid "Enter new password: " -msgstr "Mata in nytt l�senord: " - -#: command.c:796 -msgid "Enter it again: " -msgstr "Mata in det igen: " - -#: command.c:800 -#, c-format -msgid "Passwords didn't match.\n" -msgstr "L�senorden matchade inte varandra.\n" - -#: command.c:818 -#, c-format -msgid "Password encryption failed.\n" -msgstr "L�senordskryptering misslyckades.\n" - -#: command.c:886 command.c:987 command.c:1049 -#, c-format -msgid "\\%s: error\n" -msgstr "\\%s: fel\n" - -#: command.c:927 -msgid "Query buffer reset (cleared)." -msgstr "Fr�gebufferten har blivit borttagen." - -#: command.c:940 -#, c-format -msgid "Wrote history to file \"%s/%s\".\n" -msgstr "Kommandohistorien har skrivits till \"%s/%s\".\n" - -#: command.c:978 common.c:52 common.c:66 input.c:209 mainloop.c:72 -#: mainloop.c:234 print.c:137 print.c:151 -#, c-format -msgid "out of memory\n" -msgstr "minnet slut\n" - -#: command.c:1029 -msgid "Timing is on." -msgstr "Tidtagning �r p�." - -#: command.c:1031 -msgid "Timing is off." -msgstr "Tidtagning �r av." - -#: command.c:1092 command.c:1112 command.c:1633 command.c:1640 command.c:1649 -#: command.c:1659 command.c:1668 command.c:1682 command.c:1699 command.c:1737 -#: common.c:137 copy.c:283 copy.c:361 -#, c-format -msgid "%s: %s\n" -msgstr "%s: %s\n" - -#: command.c:1194 startup.c:159 -msgid "Password: " -msgstr "L�senord: " - -#: command.c:1201 startup.c:162 startup.c:164 -#, c-format -msgid "Password for user %s: " -msgstr "L�senord f�r anv�ndare %s: " - -#: command.c:1318 command.c:2207 common.c:183 common.c:460 common.c:525 -#: common.c:816 common.c:841 common.c:925 copy.c:432 copy.c:477 copy.c:606 -#, c-format -msgid "%s" -msgstr "%s" - -#: command.c:1322 -msgid "Previous connection kept\n" -msgstr "F�reg�ende f�rbindelse bevarad\n" - -#: command.c:1326 -#, c-format -msgid "\\connect: %s" -msgstr "\\connect: %s" - -#: command.c:1350 -#, c-format -msgid "You are now connected to database \"%s\"" -msgstr "Du �r nu uppkopplad mot databasen \"%s\"" - -#: command.c:1353 -#, c-format -msgid " on host \"%s\"" -msgstr " p� v�rd \"%s\"" - -#: command.c:1356 -#, c-format -msgid " at port \"%s\"" -msgstr " port \"%s\"" - -#: command.c:1359 -#, c-format -msgid " as user \"%s\"" -msgstr " som anv�ndare \"%s\"" - -#: command.c:1394 -#, c-format -msgid "%s (%s, server %s)\n" -msgstr "%s (%s, server %s)\n" - -#: command.c:1402 -#, c-format -msgid "" -"WARNING: %s version %d.%d, server version %d.%d.\n" -" Some psql features might not work.\n" -msgstr "" - -#: command.c:1432 -#, c-format -msgid "SSL connection (cipher: %s, bits: %i)\n" -msgstr "SSL-f�rbindelse (krypto: %s, bitar: %i)\n" - -#: command.c:1442 -#, fuzzy, c-format -msgid "SSL connection (unknown cipher)\n" -msgstr "" -"SSL-f�rbindelse (krypto: %s, bitar: %i)\n" -"\n" - -#: command.c:1463 -#, c-format -msgid "" -"WARNING: Console code page (%u) differs from Windows code page (%u)\n" -" 8-bit characters might not work correctly. See psql reference\n" -" page \"Notes for Windows users\" for details.\n" -msgstr "" -"VARNING: Konsollens \"code page\" (%u) skiljer sig f�n Windows \"code page\" (%u)\n" -" 8-bitars tecken kommer troligen inte fungera korrekt. Se psql:s\n" -" referensmanual i sektionen \"Notes for Windows users\" f�r mer detaljer.\n" - -#: command.c:1552 -#, c-format -msgid "could not start editor \"%s\"\n" -msgstr "kunde inte starta editorn \"%s\"\n" - -#: command.c:1554 -msgid "could not start /bin/sh\n" -msgstr "kunde inte starta /bin/sh\n" - -#: command.c:1591 -#, c-format -msgid "cannot locate temporary directory: %s" -msgstr "kunde inte hitta temp-katalogen: %s" - -#: command.c:1618 -#, c-format -msgid "could not open temporary file \"%s\": %s\n" -msgstr "kunde inte �ppna tempor�r fil \"%s\": %s\n" - -#: command.c:1839 -msgid "" -"\\pset: allowed formats are unaligned, aligned, wrapped, html, latex, troff-" -"ms\n" -msgstr "" -"\\pset: till�tna format �r unaligned, aligned, wrapped, html, latex, troff-" -"ms\n" - -#: command.c:1844 -#, c-format -msgid "Output format is %s.\n" -msgstr "Utdataformatet �r \"%s\".\n" - -#: command.c:1860 -msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" -msgstr "" - -#: command.c:1865 -#, fuzzy, c-format -msgid "Line style is %s.\n" -msgstr "Ramstil �r %d.\n" - -#: command.c:1876 -#, c-format -msgid "Border style is %d.\n" -msgstr "Ramstil �r %d.\n" - -#: command.c:1888 -#, c-format -msgid "Expanded display is on.\n" -msgstr "Ut�kad visning �r p�.\n" - -#: command.c:1889 -#, c-format -msgid "Expanded display is off.\n" -msgstr "Ut�kad visning �r av.\n" - -#: command.c:1902 -msgid "Showing locale-adjusted numeric output." -msgstr "Visar lokal-anpassad numerisk utdata." - -#: command.c:1904 -msgid "Locale-adjusted numeric output is off." -msgstr "Lokal-anpassad numerisk utdata �r av." - -#: command.c:1917 -#, c-format -msgid "Null display is \"%s\".\n" -msgstr "Null-visare �r \"%s\".\n" - -#: command.c:1929 -#, c-format -msgid "Field separator is \"%s\".\n" -msgstr "F�ltseparatorn �r \"%s\".\n" - -#: command.c:1943 -#, c-format -msgid "Record separator is ." -msgstr "Postseparatorn �r ." - -#: command.c:1945 -#, c-format -msgid "Record separator is \"%s\".\n" -msgstr "Postseparatorn �r \"%s\".\n" - -#: command.c:1959 -msgid "Showing only tuples." -msgstr "Visar bara tupler." - -#: command.c:1961 -msgid "Tuples only is off." -msgstr "Visa bara tupler �r av." - -#: command.c:1977 -#, c-format -msgid "Title is \"%s\".\n" -msgstr "Titeln �r \"%s\".\n" - -#: command.c:1979 -#, c-format -msgid "Title is unset.\n" -msgstr "Titeln �r inte satt.\n" - -#: command.c:1995 -#, c-format -msgid "Table attribute is \"%s\".\n" -msgstr "Tabellattribut �r \"%s\".\n" - -#: command.c:1997 -#, c-format -msgid "Table attributes unset.\n" -msgstr "Tabellattribut �r ej satt.\n" - -#: command.c:2018 -msgid "Pager is used for long output." -msgstr "Siduppdelare �r p� f�r l�ng utdata." - -#: command.c:2020 -msgid "Pager is always used." -msgstr "Siduppdelare anv�nds alltid." - -#: command.c:2022 -msgid "Pager usage is off." -msgstr "Siduppdelare �r av." - -#: command.c:2036 -msgid "Default footer is on." -msgstr "Standard sidfot �r p�." - -#: command.c:2038 -msgid "Default footer is off." -msgstr "Standard sidfot �r av." - -#: command.c:2049 -#, c-format -msgid "Target width for \"wrapped\" format is %d.\n" -msgstr "" - -#: command.c:2054 -#, c-format -msgid "\\pset: unknown option: %s\n" -msgstr "\\pset: ok�nd parameter: %s\n" - -#: command.c:2108 -msgid "\\!: failed\n" -msgstr "\\!: misslyckades\n" - -#: common.c:45 -#, c-format -msgid "%s: pg_strdup: cannot duplicate null pointer (internal error)\n" -msgstr "%s: pg_strdup: kan inte duplicera null-pekare (internt fel)\n" - -#: common.c:90 -msgid "out of memory" -msgstr "minnet slut" - -#: common.c:343 -msgid "connection to server was lost\n" -msgstr "f�rbindelsen till servern har brutits\n" - -#: common.c:347 -msgid "The connection to the server was lost. Attempting reset: " -msgstr "F�rbindelsen till servern har brutits. F�rs�ker starta om: " - -#: common.c:352 -msgid "Failed.\n" -msgstr "Misslyckades.\n" - -#: common.c:359 -msgid "Succeeded.\n" -msgstr "Lyckades.\n" - -#: common.c:493 common.c:773 -msgid "You are currently not connected to a database.\n" -msgstr "Du �r f�r n�rvarande inte uppkopplad mot en databas.\n" - -#: common.c:499 common.c:506 common.c:799 -#, c-format -msgid "" -"********* QUERY **********\n" -"%s\n" -"**************************\n" -"\n" -msgstr "" -"********* FR�GA **********\n" -"%s\n" -"**************************\n" -"\n" - -#: common.c:560 -#, fuzzy, c-format -msgid "" -"Asynchronous notification \"%s\" with payload \"%s\" received from server " -"process with PID %d.\n" -msgstr "Asynkron notificering \"%s\" mottagen fr�n serverprocess med PID %d.\n" - -#: common.c:563 -#, c-format -msgid "" -"Asynchronous notification \"%s\" received from server process with PID %d.\n" -msgstr "Asynkron notificering \"%s\" mottagen fr�n serverprocess med PID %d.\n" - -#: common.c:781 -#, c-format -msgid "" -"***(Single step mode: verify command)" -"*******************************************\n" -"%s\n" -"***(press return to proceed or enter x and return to cancel)" -"********************\n" -msgstr "" -"***(Stegningsl�ge: Verifiera kommando)" -"*******************************************\n" -"%s\n" -"***(tryck return f�r att forts�tta eller skriv x och return f�r att avbryta)" -"*****\n" - -#: common.c:832 -#, c-format -msgid "" -"The server (version %d.%d) does not support savepoints for " -"ON_ERROR_ROLLBACK.\n" -msgstr "" -"Servern (version %d.%d) st�der inte sparpunkter f�r ON_ERROR_ROLLBACK.\n" - -#: copy.c:96 -msgid "\\copy: arguments required\n" -msgstr "\\copy: argument kr�vs\n" - -#: copy.c:228 -#, c-format -msgid "\\copy: parse error at \"%s\"\n" -msgstr "\\copy: parsfel vid \"%s\"\n" - -#: copy.c:230 -msgid "\\copy: parse error at end of line\n" -msgstr "\\copy: parsfel vid radslutet\n" - -#: copy.c:294 -#, c-format -msgid "%s: cannot copy from/to a directory\n" -msgstr "%s: kan inte kopiera fr�n/till en katalog\n" - -#: copy.c:331 -#, c-format -msgid "\\copy: %s" -msgstr "\\copy: %s" - -#: copy.c:335 copy.c:349 -#, c-format -msgid "\\copy: unexpected response (%d)\n" -msgstr "\\copy: ov�ntat svar (%d)\n" - -#: copy.c:353 -msgid "trying to exit copy mode" -msgstr "" - -#: copy.c:407 copy.c:417 -#, c-format -msgid "could not write COPY data: %s\n" -msgstr "kunde inte skriva COPY-data: %s\n" - -#: copy.c:424 -#, c-format -msgid "COPY data transfer failed: %s" -msgstr "COPY-�verf�ring av data misslyckades: %s" - -#: copy.c:472 -msgid "canceled by user" -msgstr "avbruten av anv�ndaren" - -#: copy.c:487 -msgid "" -"Enter data to be copied followed by a newline.\n" -"End with a backslash and a period on a line by itself." -msgstr "" -"Mata in data som skall kopieras f�ljt av en nyrad.\n" -"Avsluta med bakstreck och en punkt ensamma p� en rad." - -#: copy.c:599 -msgid "aborted because of read failure" -msgstr "avbruten p� grund av l�sfel" - -#: help.c:52 -msgid "on" -msgstr "p�" - -#: help.c:52 -msgid "off" -msgstr "av" - -#: help.c:74 -#, c-format -msgid "could not get current user name: %s\n" -msgstr "kunde inte h�mta det aktuella anv�ndarnamnet: %s\n" - -#: help.c:86 -#, c-format -msgid "" -"psql is the PostgreSQL interactive terminal.\n" -"\n" -msgstr "" -"psql �r den interaktiva PostgreSQL-terminalen.\n" -"\n" - -#: help.c:87 -#, c-format -msgid "Usage:\n" -msgstr "Anv�ndning:\n" - -#: help.c:88 -#, c-format -msgid "" -" psql [OPTION]... [DBNAME [USERNAME]]\n" -"\n" -msgstr "" -" psql [FLAGGA]... [DBNAMN [ANV�NDARNAMN]]\n" -"\n" - -#: help.c:90 -#, c-format -msgid "General options:\n" -msgstr "Allm�nna flaggor:\n" - -#: help.c:95 -#, c-format -msgid "" -" -c, --command=COMMAND run only single command (SQL or internal) and " -"exit\n" -msgstr "" -" -c, --command=KOMMANDO k�r ett kommando (SQL eller internt) och avsluta " -"sedan\n" - -#: help.c:96 -#, c-format -msgid "" -" -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" -msgstr "" -" -d, --dbname=DBNAMN databasnamn att koppla upp mot (standard: \"%s" -"\")\n" - -#: help.c:97 -#, c-format -msgid " -f, --file=FILENAME execute commands from file, then exit\n" -msgstr " -f, --file=FILNAMN k�r kommandon fr�n fil och avsluta sedan\n" - -#: help.c:98 -#, c-format -msgid " -l, --list list available databases, then exit\n" -msgstr "" -" -l, --list lista befintliga databaser och avsluta sedan\n" - -#: help.c:99 -#, c-format -msgid "" -" -v, --set=, --variable=NAME=VALUE\n" -" set psql variable NAME to VALUE\n" -msgstr "" -" -v, --set=, --variale=NAMN=V�RDE\n" -" s�tt psql-variabel NAMN till V�RDE\n" - -#: help.c:101 -#, c-format -msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" -msgstr " -X, --no-psqlrc l�s inte startfilen (~/.psqlrc)\n" - -#: help.c:102 -#, c-format -msgid "" -" -1 (\"one\"), --single-transaction\n" -" execute command file as a single transaction\n" -msgstr "" -" -1 (\"ett\"), --single-transaction\n" -" k�r kommandofilen som en transaktion\n" - -#: help.c:104 -#, c-format -msgid " --help show this help, then exit\n" -msgstr " --help visa denna hj�lp och avsluta sedan\n" - -#: help.c:105 -#, c-format -msgid " --version output version information, then exit\n" -msgstr "" -" --version visa versionsinformation och avsluta sedan\n" - -#: help.c:107 -#, c-format -msgid "" -"\n" -"Input and output options:\n" -msgstr "" -"\n" -"Flaggor f�r in-/utmatning:\n" - -#: help.c:108 -#, c-format -msgid " -a, --echo-all echo all input from script\n" -msgstr " -a, --echo-all visa all indata fr�n skript\n" - -#: help.c:109 -#, c-format -msgid " -e, --echo-queries echo commands sent to server\n" -msgstr " -e, --echo-queries visa kommandon som skickas till servern\n" - -#: help.c:110 -#, c-format -msgid "" -" -E, --echo-hidden display queries that internal commands generate\n" -msgstr " -E, --echo-hidden visa fr�gor som interna kommandon skapar\n" - -#: help.c:111 -#, c-format -msgid " -L, --log-file=FILENAME send session log to file\n" -msgstr " -L, --log-file=FILENAME skicka sessions-logg till fil\n" - -#: help.c:112 -#, c-format -msgid "" -" -n, --no-readline disable enhanced command line editing (readline)\n" -msgstr "" -" -n, --no-readline sl� av f�rb�ttrad kommandoradsredigering " -"(readline)\n" - -#: help.c:113 -#, c-format -msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" -msgstr " -o, --output=FILNAMN skriv fr�geresultat till fil (eller |r�r)\n" - -#: help.c:114 -#, c-format -msgid "" -" -q, --quiet run quietly (no messages, only query output)\n" -msgstr "" -" -q, --quiet k�r tyst (inga meddelanden, endast fr�geutdata)\n" - -#: help.c:115 -#, c-format -msgid " -s, --single-step single-step mode (confirm each query)\n" -msgstr " -s, --single-step stegningsl�ge (bekr�fta varje fr�ga)\n" - -#: help.c:116 -#, c-format -msgid "" -" -S, --single-line single-line mode (end of line terminates SQL " -"command)\n" -msgstr "" -" -S, --single-line enradsl�ge (slutet p� raden avslutar SQL-" -"kommando)\n" - -#: help.c:118 -#, c-format -msgid "" -"\n" -"Output format options:\n" -msgstr "" -"\n" -"Flaggor f�r utdataformat:\n" - -#: help.c:119 -#, c-format -msgid " -A, --no-align unaligned table output mode\n" -msgstr " -A, --no-align ojusterad utskrift av tabeller\n" - -#: help.c:120 -#, c-format -msgid "" -" -F, --field-separator=STRING\n" -" set field separator (default: \"%s\")\n" -msgstr "" -" -F, --field-separator=STR�NG\n" -" s�tt f�ltseparator (standard: \"%s\")\n" - -#: help.c:123 -#, c-format -msgid " -H, --html HTML table output mode\n" -msgstr " -H, --html HTML-utskrift av tabeller\n" - -#: help.c:124 -#, c-format -msgid "" -" -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset " -"command)\n" -msgstr "" -" -P, --pset=VAR[=ARG] s�tt utskriftsvariabel VAR till ARG (se kommando " -"\\pset)\n" - -#: help.c:125 -#, c-format -msgid "" -" -R, --record-separator=STRING\n" -" set record separator (default: newline)\n" -msgstr "" -" -R, --record-separator=STR�NG\n" -" s�tt postseparator (standard: newline)\n" - -#: help.c:127 -#, c-format -msgid " -t, --tuples-only print rows only\n" -msgstr " -t, --tuples-only visa endast rader\n" - -#: help.c:128 -#, c-format -msgid "" -" -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, " -"border)\n" -msgstr "" -" -T, --table-attr=TEXT s�tt HTML-tabellers flaggor (t.ex. width, " -"border)\n" - -#: help.c:129 -#, c-format -msgid " -x, --expanded turn on expanded table output\n" -msgstr " -x, --expanded sl� p� ut�kad utsrift av tabeller\n" - -#: help.c:131 -#, c-format -msgid "" -"\n" -"Connection options:\n" -msgstr "" -"\n" -"Anslutningsflaggor:\n" - -#: help.c:134 -#, c-format -msgid "" -" -h, --host=HOSTNAME database server host or socket directory " -"(default: \"%s\")\n" -msgstr "" -" -h, --host=V�RDNAMN databasens v�rdnamn eller uttagkatalog (socket)\n" -" (standard: \"%s\")\n" - -#: help.c:135 -msgid "local socket" -msgstr "lokalt uttag (socket)" - -#: help.c:138 -#, c-format -msgid " -p, --port=PORT database server port (default: \"%s\")\n" -msgstr " -p, --port=PORT databasens serverport (standard: \"%s\")\n" - -#: help.c:144 -#, c-format -msgid " -U, --username=USERNAME database user name (default: \"%s\")\n" -msgstr "" -" -U, --username=ANVNAMN anv�ndarnamn f�r databasen (standard: \"%s\")\n" - -#: help.c:145 -#, fuzzy, c-format -msgid " -w, --no-password never prompt for password\n" -msgstr " -W, --password fr�ga efter l�senord\n" - -#: help.c:146 -#, c-format -msgid "" -" -W, --password force password prompt (should happen " -"automatically)\n" -msgstr " -W, --password fr�ga om l�senord (borde ske automatiskt)\n" - -#: help.c:148 -#, c-format -msgid "" -"\n" -"For more information, type \"\\?\" (for internal commands) or \"\\help" -"\" (for SQL\n" -"commands) from within psql, or consult the psql section in the PostgreSQL\n" -"documentation.\n" -"\n" -msgstr "" -"\n" -"F�r mer information, skriv \"\\?\" (f�r interna kommandon) eller\n" -"\"\\help\" (f�r SQL-kommandon) i psql, eller l�s avsnittet om psql\n" -"i PostgreSQL-dokumentationen.\n" - -#: help.c:151 -#, c-format -msgid "Report bugs to .\n" -msgstr "Rapportera fel till .\n" - -#: help.c:169 -#, c-format -msgid "General\n" -msgstr "Allm�nna\n" - -#: help.c:170 -#, c-format -msgid "" -" \\copyright show PostgreSQL usage and distribution terms\n" -msgstr " \\copyright visa PostgreSQL-upphovsr�ttsinformation\n" - -#: help.c:171 -#, c-format -msgid "" -" \\g [FILE] or ; execute query (and send results to file or |pipe)\n" -msgstr "" -" \\g [FILNAMN] eller ; k�r fr�gan (och skriv resultatet till fil eller |" -"r�r)\n" - -#: help.c:172 -#, c-format -msgid "" -" \\h [NAME] help on syntax of SQL commands, * for all " -"commands\n" -msgstr "" -" \\h [NAMN] hj�lp med syntaxen f�r SQL-kommandon, * f�r alla " -"kommandon\n" - -#: help.c:173 -#, c-format -msgid " \\q quit psql\n" -msgstr " \\q avsluta psql\n" - -#: help.c:176 -#, c-format -msgid "Query Buffer\n" -msgstr "Fr�gebuffert\n" - -#: help.c:177 -#, c-format -msgid "" -" \\e [FILE] edit the query buffer (or file) with external " -"editor\n" -msgstr "" -" \\e [FILNAMN] redigera fr�gebufferten (eller filen) med extern " -"redigerare\n" - -#: help.c:178 -#, fuzzy, c-format -msgid "" -" \\ef [FUNCNAME] edit function definition with external editor\n" -msgstr "" -" \\e [FILNAMN] redigera fr�gebufferten (eller filen) med extern " -"redigerare\n" - -#: help.c:179 -#, c-format -msgid " \\p show the contents of the query buffer\n" -msgstr " \\p visa inneh�llet i fr�gebufferten\n" - -#: help.c:180 -#, c-format -msgid " \\r reset (clear) the query buffer\n" -msgstr " \\r nollst�ll (radera) fr�gebufferten\n" - -#: help.c:182 -#, c-format -msgid " \\s [FILE] display history or save it to file\n" -msgstr "" -" \\s [FILNAMN] visa kommandohistorien eller spara den i fil\n" - -#: help.c:184 -#, c-format -msgid " \\w FILE write query buffer to file\n" -msgstr " \\w FILNAMN skriv fr�gebuffert till fil\n" - -#: help.c:187 -#, c-format -msgid "Input/Output\n" -msgstr "In-/Utmatning\n" - -#: help.c:188 -#, c-format -msgid "" -" \\copy ... perform SQL COPY with data stream to the client " -"host\n" -msgstr "" -" \\copy ... utf�r SQL COPY med datastr�m till klientv�rden\n" - -#: help.c:189 -#, c-format -msgid " \\echo [STRING] write string to standard output\n" -msgstr " \\echo [TEXT] skriv text till standard ut\n" - -#: help.c:190 -#, c-format -msgid " \\i FILE execute commands from file\n" -msgstr " \\i FILNAMN k�r kommandon fr�n fil\n" - -#: help.c:191 -#, c-format -msgid " \\o [FILE] send all query results to file or |pipe\n" -msgstr " \\o [FILNAMN] skicka fr�geresultat till fil eller |r�r\n" - -#: help.c:192 -#, c-format -msgid "" -" \\qecho [STRING] write string to query output stream (see \\o)\n" -msgstr "" -" \\qecho [TEXT] skriv text till fr�geutdatastr�mmen (se \\o)\n" - -#: help.c:195 -#, c-format -msgid "Informational\n" -msgstr "Informationer\n" - -#: help.c:196 -#, c-format -msgid " (options: S = show system objects, + = additional detail)\n" -msgstr " (flaggor: S = lista systemobjekt, + = mer detaljer)\n" - -#: help.c:197 -#, c-format -msgid " \\d[S+] list tables, views, and sequences\n" -msgstr " \\d[S+] lista tabeller, vyer och sekvenser\n" - -#: help.c:198 -#, c-format -msgid " \\d[S+] NAME describe table, view, sequence, or index\n" -msgstr " \\d[S+] NAMN beskriv tabell, vy, sekvens eller index\n" - -#: help.c:199 -#, c-format -msgid " \\da[S] [PATTERN] list aggregates\n" -msgstr " \\da[S] [MALL] lista aggregatfunktioner\n" - -#: help.c:200 -#, c-format -msgid " \\db[+] [PATTERN] list tablespaces\n" -msgstr " \\db[+] [MALL] lista tabellutrymmen\n" - -#: help.c:201 -#, c-format -msgid " \\dc[S] [PATTERN] list conversions\n" -msgstr " \\dc[S] [MALL] lista konverteringar\n" - -#: help.c:202 -#, c-format -msgid " \\dC [PATTERN] list casts\n" -msgstr " \\dC [MALL] lista typomvandlingar\n" - -#: help.c:203 -#, c-format -msgid " \\dd[S] [PATTERN] show comments on objects\n" -msgstr " \\dd[S] [MALL] visa kommentar f�r objekt\n" - -#: help.c:204 -#, fuzzy, c-format -msgid " \\ddp [PATTERN] list default privileges\n" -msgstr " \\dC [MALL] lista typomvandlingar\n" - -#: help.c:205 -#, c-format -msgid " \\dD[S] [PATTERN] list domains\n" -msgstr " \\dD[S] [MALL] lista dom�ner\n" - -#: help.c:206 -#, fuzzy, c-format -msgid " \\des[+] [PATTERN] list foreign servers\n" -msgstr " \\du [MALL] lista anv�ndare\n" - -#: help.c:207 -#, fuzzy, c-format -msgid " \\deu[+] [PATTERN] list user mappings\n" -msgstr " \\du [MALL] lista anv�ndare\n" - -#: help.c:208 -#, fuzzy, c-format -msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" -msgstr " \\dg [MALL] lista grupper\n" - -#: help.c:209 -#, c-format -msgid "" -" \\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions\n" -msgstr "" -" \\df[antw][S+] [MALL] lista [endast agg/normala/utl�sar/window] " -"funktioner\n" - -#: help.c:210 -#, c-format -msgid " \\dF[+] [PATTERN] list text search configurations\n" -msgstr " \\dF[+] [MALL] lista texts�kkonfigurationer\n" - -#: help.c:211 -#, c-format -msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" -msgstr " \\dFd[+] [MALL] lista texts�kordlistor\n" - -#: help.c:212 -#, c-format -msgid " \\dFp[+] [PATTERN] list text search parsers\n" -msgstr " \\dFp[+] [MALL] lista texts�ktolkare\n" - -#: help.c:213 -#, c-format -msgid " \\dFt[+] [PATTERN] list text search templates\n" -msgstr " \\dFt[+] [MALL] lista texts�kmallar\n" - -#: help.c:214 -#, c-format -msgid " \\dg[+] [PATTERN] list roles (groups)\n" -msgstr " \\dg[+] [MALL] lista roller (grupper)\n" - -#: help.c:215 -#, c-format -msgid " \\di[S+] [PATTERN] list indexes\n" -msgstr " \\di[S+] [MALL] lista index\n" - -#: help.c:216 -#, c-format -msgid " \\dl list large objects, same as \\lo_list\n" -msgstr " \\dl lista stora objekt, samma som \\lo_list\n" - -#: help.c:217 -#, c-format -msgid " \\dn[+] [PATTERN] list schemas\n" -msgstr " \\dn[+] [MALL] lista scheman\n" - -#: help.c:218 -#, c-format -msgid " \\do[S] [PATTERN] list operators\n" -msgstr " \\do[S] [MALL] lista operatorer\n" - -#: help.c:219 -#, c-format -msgid "" -" \\dp [PATTERN] list table, view, and sequence access privileges\n" -msgstr "" -" \\dp [MALL] lista �tkomstr�ttigheter f�r tabeller, vyer och " -"sekvenser\n" - -#: help.c:220 -#, c-format -msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n" -msgstr "" - -#: help.c:221 -#, c-format -msgid " \\ds[S+] [PATTERN] list sequences\n" -msgstr " \\ds[S+] [MALL] lista sekvenser\n" - -#: help.c:222 -#, c-format -msgid " \\dt[S+] [PATTERN] list tables\n" -msgstr " \\dt[S+] [MALL] lista tabeller\n" - -#: help.c:223 -#, c-format -msgid " \\dT[S+] [PATTERN] list data types\n" -msgstr " \\dT[S+] [MALL] lista datatyper\n" - -#: help.c:224 -#, c-format -msgid " \\du[+] [PATTERN] list roles (users)\n" -msgstr " \\du[+] [MALL] lista roller (anv�ndare)\n" - -#: help.c:225 -#, c-format -msgid " \\dv[S+] [PATTERN] list views\n" -msgstr " \\dv[S+] [MALL] lista vyer\n" - -#: help.c:226 -#, c-format -msgid " \\l[+] list all databases\n" -msgstr " \\l[+] lista alla databaser\n" - -#: help.c:227 -#, c-format -msgid " \\z [PATTERN] same as \\dp\n" -msgstr " \\z [MALL] samma som \\dp\n" - -#: help.c:230 -#, c-format -msgid "Formatting\n" -msgstr "Formatering\n" - -#: help.c:231 -#, c-format -msgid "" -" \\a toggle between unaligned and aligned output mode\n" -msgstr "" -" \\a byt mellan ojusterat och justerat utdataformat\n" - -#: help.c:232 -#, c-format -msgid " \\C [STRING] set table title, or unset if none\n" -msgstr " \\C [TEXT] s�tt tabelltitel, eller nollst�ll\n" - -#: help.c:233 -#, c-format -msgid "" -" \\f [STRING] show or set field separator for unaligned query " -"output\n" -msgstr "" -" \\f [TEXT] visa eller s�tt f�ltseparatorn f�r ojusterad " -"utmatning\n" - -#: help.c:234 -#, c-format -msgid " \\H toggle HTML output mode (currently %s)\n" -msgstr "" -" \\H sl� p�/av HTML-utskriftsl�ge (f�r n�rvarande: %s)\n" - -#: help.c:236 -#, c-format -msgid "" -" \\pset NAME [VALUE] set table output option\n" -" (NAME := {format|border|expanded|fieldsep|footer|" -"null|\n" -" numericlocale|recordsep|tuples_only|title|tableattr|" -"pager})\n" -msgstr "" -" \\pset NAMN [V�RDE] s�tt tabellutskriftsval\n" -" (NAMN := {format|border|expanded|fieldsep|footer|" -"null|\n" -" numericlocale|recordsep|tuples_only|title|tableattr|" -"pager})\n" - -#: help.c:239 -#, c-format -msgid " \\t [on|off] show only rows (currently %s)\n" -msgstr " \\t [on|off] visa endast rader (f�r n�rvarande: %s)\n" - -#: help.c:241 -#, c-format -msgid "" -" \\T [STRING] set HTML
tag attributes, or unset if none\n" -msgstr "" -" \\T [TEXT] s�tt HTML-tabellens
-attribut, eller " -"nollst�ll\n" - -#: help.c:242 -#, c-format -msgid " \\x [on|off] toggle expanded output (currently %s)\n" -msgstr "" -" \\x [on|off] sl� p�/av ut�kad utskrift (f�r n�rvarande: %s)\n" - -#: help.c:246 -#, c-format -msgid "Connection\n" -msgstr "F�rbindelse\n" - -#: help.c:247 -#, c-format -msgid "" -" \\c[onnect] [DBNAME|- USER|- HOST|- PORT|-]\n" -" connect to new database (currently \"%s\")\n" -msgstr "" -" \\c[onnect] [DBNAMN|- ANV�NDARE|- V�RD|- PORT|-]\n" -" koppla upp mot ny databas (f�r n�rvarande \"%s\")\n" - -#: help.c:250 -#, c-format -msgid " \\encoding [ENCODING] show or set client encoding\n" -msgstr " \\encoding [KODNING] visa eller s�tt klientens teckenkodning\n" - -#: help.c:251 -#, c-format -msgid " \\password [USERNAME] securely change the password for a user\n" -msgstr "" - -#: help.c:254 -#, c-format -msgid "Operating System\n" -msgstr "Operativsystem\n" - -#: help.c:255 -#, c-format -msgid " \\cd [DIR] change the current working directory\n" -msgstr " \\cd [KATALOG] byt den aktuella katalogen\n" - -#: help.c:256 -#, c-format -msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" -msgstr "" -" \\timing [on|off] sl� p�/av tidstagning av kommandon (f�r " -"n�rvarande: %s)\n" - -#: help.c:258 -#, c-format -msgid "" -" \\! [COMMAND] execute command in shell or start interactive " -"shell\n" -msgstr "" -" \\! [KOMMANDO] k�r kommando i skal eller starta interaktivt skal\n" - -#: help.c:261 -#, c-format -msgid "Variables\n" -msgstr "Variabler\n" - -#: help.c:262 -#, fuzzy, c-format -msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" -msgstr " \\unset NAME ta bort intern variabel\n" - -#: help.c:263 -#, c-format -msgid "" -" \\set [NAME [VALUE]] set internal variable, or list all if no " -"parameters\n" -msgstr "" -" \\set [NAMN [V�RDE]] s�tt intern variabel, eller lista alla om ingen " -"param\n" - -#: help.c:264 -#, c-format -msgid " \\unset NAME unset (delete) internal variable\n" -msgstr " \\unset NAME ta bort intern variabel\n" - -#: help.c:267 -#, c-format -msgid "Large Objects\n" -msgstr "Stora objekt\n" - -#: help.c:268 -#, c-format -msgid "" -" \\lo_export LOBOID FILE\n" -" \\lo_import FILE [COMMENT]\n" -" \\lo_list\n" -" \\lo_unlink LOBOID large object operations\n" -msgstr "" -" \\lo_export LOBOID FIL\n" -" \\lo_import FIL [KOMMENTAR]\n" -" \\lo_list\n" -" \\lo_unlink LOBOID operationer p� stora objekt\n" - -#: help.c:321 -msgid "Available help:\n" -msgstr "Tillg�nglig hj�lp:\n" - -#: help.c:410 -#, c-format -msgid "" -"Command: %s\n" -"Description: %s\n" -"Syntax:\n" -"%s\n" -"\n" -msgstr "" -"Kommando: %s\n" -"Beskrivning: %s\n" -"Syntax:\n" -"%s\n" -"\n" - -#: help.c:426 -#, c-format -msgid "" -"No help available for \"%s\".\n" -"Try \\h with no arguments to see available help.\n" -msgstr "" -"Ingen hj�lp tillg�nglig f�r \"%s\".\n" -"F�rs�k med \\h utan argument f�r att se den tillg�ngliga hj�lpen.\n" - -#: input.c:198 -#, c-format -msgid "could not read from input file: %s\n" -msgstr "kunde inte l�sa fr�n infilen: %s\n" - -#: input.c:406 -#, c-format -msgid "could not save history to file \"%s\": %s\n" -msgstr "kunde inte skriva kommandohistorien till \"%s\": %s\n" - -#: input.c:411 -msgid "history is not supported by this installation\n" -msgstr "historia st�ds inte av denna installationen\n" - -#: large_obj.c:66 -#, c-format -msgid "%s: not connected to a database\n" -msgstr "%s: ej uppkopplad mot en databas\n" - -#: large_obj.c:85 -#, c-format -msgid "%s: current transaction is aborted\n" -msgstr "%s: aktuell transaktion �r avbruten\n" - -#: large_obj.c:88 -#, c-format -msgid "%s: unknown transaction status\n" -msgstr "%s: ok�nd transaktionsstatus\n" - -#: large_obj.c:289 large_obj.c:300 -msgid "ID" -msgstr "ID" - -#: large_obj.c:290 describe.c:146 describe.c:334 describe.c:613 describe.c:762 -#: describe.c:2381 describe.c:2681 describe.c:3310 describe.c:3369 -msgid "Owner" -msgstr "�gare" - -#: large_obj.c:291 large_obj.c:301 describe.c:95 describe.c:158 describe.c:337 -#: describe.c:490 describe.c:566 describe.c:637 describe.c:827 describe.c:1318 -#: describe.c:2205 describe.c:2395 describe.c:2689 describe.c:2751 -#: describe.c:2887 describe.c:2926 describe.c:2993 describe.c:3052 -#: describe.c:3061 describe.c:3120 -msgid "Description" -msgstr "Beskrivning" - -#: large_obj.c:310 -msgid "Large objects" -msgstr "Stora objekt" - -#: mainloop.c:159 -#, c-format -msgid "Use \"\\q\" to leave %s.\n" -msgstr "Anv�nd \"\\q\" f�r att l�mna %s.\n" - -#: mainloop.c:189 -msgid "You are using psql, the command-line interface to PostgreSQL." -msgstr "Du anv�nder psql, den interaktiva PostgreSQL-terminalen." - -#: mainloop.c:190 -#, c-format -msgid "" -"Type: \\copyright for distribution terms\n" -" \\h for help with SQL commands\n" -" \\? for help with psql commands\n" -" \\g or terminate with semicolon to execute query\n" -" \\q to quit\n" -msgstr "" -"Skriv: \\copyright f�r upphovsr�ttsinformation\n" -" \\h f�r hj�lp om SQL-kommandon\n" -" \\? f�r hj�lp om psql-kommandon\n" -" \\g eller avsluta med semikolon f�r att k�ra en fr�ga\n" -" \\q f�r att avsluta\n" - -#: print.c:1138 -#, c-format -msgid "(No rows)\n" -msgstr "(Inga rader)\n" - -#: print.c:2028 -#, c-format -msgid "Interrupted\n" -msgstr "Avbruten\n" - -#: print.c:2097 -#, c-format -msgid "Cannot add header to table content: column count of %d exceeded.\n" -msgstr "" - -#: print.c:2137 -#, c-format -msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" -msgstr "" - -#: print.c:2357 -#, c-format -msgid "invalid output format (internal error): %d" -msgstr "ogiltigt utdataformat (internt fel): %d" - -#: print.c:2454 -#, c-format -msgid "(%lu row)" -msgid_plural "(%lu rows)" -msgstr[0] "(%lu rad)" -msgstr[1] "(%lu rader)" - -#: startup.c:237 -#, c-format -msgid "%s: could not open log file \"%s\": %s\n" -msgstr "%s: kunde inte �ppna logg-fil \"%s\": %s\n" - -#: startup.c:299 -#, c-format -msgid "" -"Type \"help\" for help.\n" -"\n" -msgstr "" -"Skriv \"help\" f�r hj�lp.\n" -"\n" - -#: startup.c:445 -#, c-format -msgid "%s: could not set printing parameter \"%s\"\n" -msgstr "%s: kunde inte s�tta utskriftsparameter \"%s\"\n" - -#: startup.c:484 -#, c-format -msgid "%s: could not delete variable \"%s\"\n" -msgstr "%s: kunde inte ta bort variabeln \"%s\"\n" - -#: startup.c:494 -#, c-format -msgid "%s: could not set variable \"%s\"\n" -msgstr "%s: kunde inte s�tta variabeln \"%s\"\n" - -#: startup.c:531 startup.c:537 -#, c-format -msgid "Try \"%s --help\" for more information.\n" -msgstr "F�rs�k med \"%s --help\" f�r mer information.\n" - -#: startup.c:554 -#, c-format -msgid "%s: warning: extra command-line argument \"%s\" ignored\n" -msgstr "%s: varning: extra kommandoradsargument \"%s\" ignorerad\n" - -#: startup.c:619 -msgid "contains support for command-line editing" -msgstr "inneh�ller st�d f�r kommandoradsredigering" - -#: describe.c:68 describe.c:235 describe.c:462 describe.c:561 describe.c:682 -#: describe.c:763 describe.c:824 describe.c:2373 describe.c:2494 -#: describe.c:2549 describe.c:2749 describe.c:2976 describe.c:3048 -#: describe.c:3059 describe.c:3118 -msgid "Schema" -msgstr "Schema" - -#: describe.c:69 describe.c:145 describe.c:236 describe.c:463 describe.c:562 -#: describe.c:612 describe.c:683 describe.c:825 describe.c:2374 -#: describe.c:2495 describe.c:2550 describe.c:2680 describe.c:2750 -#: describe.c:2977 describe.c:3049 describe.c:3060 describe.c:3119 -#: describe.c:3309 describe.c:3368 -msgid "Name" -msgstr "Namn" - -#: describe.c:70 describe.c:248 describe.c:294 describe.c:311 -msgid "Result data type" -msgstr "Resultatdatatyp" - -#: describe.c:84 describe.c:88 describe.c:249 describe.c:295 describe.c:312 -msgid "Argument data types" -msgstr "Argumentdatatyp" - -#: describe.c:113 -msgid "List of aggregate functions" -msgstr "Lista med aggregatfunktioner" - -#: describe.c:134 -#, c-format -msgid "The server (version %d.%d) does not support tablespaces.\n" -msgstr "Servern (version %d.%d) st�der inte tabellutrymmen.\n" - -#: describe.c:147 -msgid "Location" -msgstr "Plats" - -#: describe.c:175 -msgid "List of tablespaces" -msgstr "Lista med tabellutrymmen" - -#: describe.c:212 -#, c-format -msgid "\\df only takes [antwS+] as options\n" -msgstr "" - -#: describe.c:218 -#, c-format -msgid "\\df does not take a \"w\" option with server version %d.%d\n" -msgstr "" - -#. translator: "agg" is short for "aggregate" -#: describe.c:251 describe.c:297 describe.c:314 -msgid "agg" -msgstr "agg" - -#: describe.c:252 -msgid "window" -msgstr "" - -#: describe.c:253 describe.c:298 describe.c:315 describe.c:964 -msgid "trigger" -msgstr "utl�sare" - -#: describe.c:254 describe.c:299 describe.c:316 -#, fuzzy -msgid "normal" -msgstr "Information\n" - -#: describe.c:255 describe.c:300 describe.c:317 describe.c:685 describe.c:767 -#: describe.c:1299 describe.c:2380 describe.c:2496 describe.c:3381 -msgid "Type" -msgstr "Typ" - -#: describe.c:330 -#, fuzzy -msgid "immutable" -msgstr "tabell" - -#: describe.c:331 -#, fuzzy -msgid "stable" -msgstr "tabell" - -#: describe.c:332 -msgid "volatile" -msgstr "" - -#: describe.c:333 -msgid "Volatility" -msgstr "" - -#: describe.c:335 -msgid "Language" -msgstr "Spr�k" - -#: describe.c:336 -msgid "Source code" -msgstr "K�llkod" - -#: describe.c:434 -msgid "List of functions" -msgstr "Lista med funktioner" - -#: describe.c:473 -msgid "Internal name" -msgstr "Internt namn" - -#: describe.c:474 describe.c:629 describe.c:2391 -msgid "Size" -msgstr "Storlek" - -#: describe.c:486 -msgid "Elements" -msgstr "Element" - -#: describe.c:530 -msgid "List of data types" -msgstr "Lista med datatyper" - -#: describe.c:563 -msgid "Left arg type" -msgstr "V�nster argumenttyp" - -#: describe.c:564 -msgid "Right arg type" -msgstr "H�ger argumenttyp" - -#: describe.c:565 -msgid "Result type" -msgstr "Resultattyp" - -#: describe.c:584 -msgid "List of operators" -msgstr "Lista med operatorer" - -#: describe.c:614 -msgid "Encoding" -msgstr "Kodning" - -#: describe.c:619 -msgid "Collation" -msgstr "Collation" - -#: describe.c:620 -msgid "Ctype" -msgstr "Ctype" - -#: describe.c:633 -msgid "Tablespace" -msgstr "Tabellutrymme" - -#: describe.c:650 -msgid "List of databases" -msgstr "Lista med databaser" - -#: describe.c:684 describe.c:764 describe.c:919 describe.c:2375 sql_help.c:443 -#: sql_help.c:660 sql_help.c:761 sql_help.c:1177 sql_help.c:1304 -#: sql_help.c:1338 sql_help.c:1573 sql_help.c:1722 sql_help.c:1883 -#: sql_help.c:1964 sql_help.c:2158 sql_help.c:2718 sql_help.c:2738 -#: sql_help.c:2740 sql_help.c:2741 -msgid "table" -msgstr "tabell" - -#: describe.c:684 describe.c:920 describe.c:2376 -msgid "view" -msgstr "vy" - -#: describe.c:684 describe.c:765 describe.c:922 describe.c:2378 -msgid "sequence" -msgstr "sekvens" - -#: describe.c:696 -msgid "Column access privileges" -msgstr "Kolumn�tkomstr�ttigheter" - -#: describe.c:722 describe.c:3476 describe.c:3480 -msgid "Access privileges" -msgstr "�tkomstr�ttigheter" - -#: describe.c:750 -#, fuzzy, c-format -msgid "" -"The server (version %d.%d) does not support altering default privileges.\n" -msgstr "Denna serverversion (%d) st�der inte tabellutrymmen.\n" - -#: describe.c:766 describe.c:858 -msgid "function" -msgstr "funktion" - -#: describe.c:790 -msgid "Default access privileges" -msgstr "" - -#: describe.c:826 -msgid "Object" -msgstr "Objekt" - -#: describe.c:838 -msgid "aggregate" -msgstr "aggregat" - -#: describe.c:877 sql_help.c:1456 sql_help.c:2456 sql_help.c:2524 -#: sql_help.c:2655 sql_help.c:2756 sql_help.c:2807 -msgid "operator" -msgstr "operator" - -#: describe.c:896 -msgid "data type" -msgstr "datatyp" - -#: describe.c:921 describe.c:2377 -msgid "index" -msgstr "index" - -#: describe.c:943 -msgid "rule" -msgstr "rule" - -#: describe.c:987 -msgid "Object descriptions" -msgstr "Objektbeskrivningar" - -#: describe.c:1040 -#, c-format -msgid "Did not find any relation named \"%s\".\n" -msgstr "Kunde inte hitta en relation med namn \"%s\".\n" - -#: describe.c:1194 -#, c-format -msgid "Did not find any relation with OID %s.\n" -msgstr "Kunde inte hitta en relation med OID %s.\n" - -#: describe.c:1262 -#, c-format -msgid "Table \"%s.%s\"" -msgstr "Tabell \"%s.%s\"" - -#: describe.c:1266 -#, c-format -msgid "View \"%s.%s\"" -msgstr "Vy \"%s.%s\"" - -#: describe.c:1270 -#, c-format -msgid "Sequence \"%s.%s\"" -msgstr "Sekvens \"%s.%s\"" - -#: describe.c:1274 -#, c-format -msgid "Index \"%s.%s\"" -msgstr "Index \"%s.%s\"" - -#: describe.c:1279 -#, c-format -msgid "Special relation \"%s.%s\"" -msgstr "S�rskild relation \"%s.%s\"" - -#: describe.c:1283 -#, c-format -msgid "TOAST table \"%s.%s\"" -msgstr "TOAST-tabell \"%s.%s\"" - -#: describe.c:1287 -#, c-format -msgid "Composite type \"%s.%s\"" -msgstr "Sammansatt typ \"%s.%s\"" - -#: describe.c:1298 -msgid "Column" -msgstr "Kolumn" - -#: describe.c:1305 -msgid "Modifiers" -msgstr "Modifierare" - -#: describe.c:1310 -msgid "Value" -msgstr "V�rde" - -#: describe.c:1313 -msgid "Definition" -msgstr "Definition" - -#: describe.c:1317 -msgid "Storage" -msgstr "Lagring" - -#: describe.c:1359 -msgid "not null" -msgstr "" - -#. translator: default values of column definitions -#: describe.c:1368 -#, c-format -msgid "default %s" -msgstr "default %s" - -#: describe.c:1459 -msgid "primary key, " -msgstr "prim�rnyckel, " - -#: describe.c:1461 -msgid "unique, " -msgstr "unik, " - -#: describe.c:1467 -#, c-format -msgid "for table \"%s.%s\"" -msgstr "f�r tabell \"%s.%s\"" - -#: describe.c:1471 -#, c-format -msgid ", predicate (%s)" -msgstr ", predikat (%s)" - -#: describe.c:1474 -msgid ", clustered" -msgstr ", klustrad" - -#: describe.c:1477 -msgid ", invalid" -msgstr ", ogiltig" - -#: describe.c:1480 -msgid ", deferrable" -msgstr "" - -#: describe.c:1483 -msgid ", initially deferred" -msgstr "" - -#: describe.c:1497 -msgid "View definition:" -msgstr "Vydefinition:" - -#: describe.c:1514 describe.c:1792 -msgid "Rules:" -msgstr "Regler:" - -#: describe.c:1573 -msgid "Indexes:" -msgstr "Index:" - -#: describe.c:1648 -msgid "Check constraints:" -msgstr "Kontrollvillkor:" - -#: describe.c:1679 -msgid "Foreign-key constraints:" -msgstr "Fr�mmande nyckel-villkor:" - -#: describe.c:1710 -msgid "Referenced by:" -msgstr "" - -#: describe.c:1795 -msgid "Disabled rules:" -msgstr "" - -#: describe.c:1798 -msgid "Rules firing always:" -msgstr "" - -#: describe.c:1801 -msgid "Rules firing on replica only:" -msgstr "" - -#: describe.c:1903 -msgid "Triggers:" -msgstr "Utl�sare:" - -#: describe.c:1906 -#, fuzzy -msgid "Disabled triggers:" -msgstr "st�nger av utl�sare f�r %s\n" - -#: describe.c:1909 -msgid "Triggers firing always:" -msgstr "" - -#: describe.c:1912 -msgid "Triggers firing on replica only:" -msgstr "" - -#: describe.c:1945 -msgid "Inherits" -msgstr "�rver" - -#: describe.c:1975 -#, c-format -msgid "Number of child tables: %d (Use \\d+ to list them.)" -msgstr "" - -#: describe.c:1982 -msgid "Child tables" -msgstr "Barntabeller" - -#: describe.c:2004 -#, c-format -msgid "Typed table of type: %s" -msgstr "" - -#: describe.c:2011 -msgid "Has OIDs" -msgstr "Har OID:er" - -#: describe.c:2014 describe.c:2553 describe.c:2627 -msgid "yes" -msgstr "ja" - -#: describe.c:2014 describe.c:2553 describe.c:2627 -msgid "no" -msgstr "nej" - -#: describe.c:2022 describe.c:3319 describe.c:3383 describe.c:3439 -msgid "Options" -msgstr "Options" - -#: describe.c:2107 -#, c-format -msgid "Tablespace: \"%s\"" -msgstr "Tabellutrymme: \"%s\"" - -#: describe.c:2120 -#, c-format -msgid ", tablespace \"%s\"" -msgstr ", tabellutrymme: \"%s\"" - -#: describe.c:2198 -msgid "List of roles" -msgstr "Lista med roller" - -#: describe.c:2200 -msgid "Role name" -msgstr "Rollnamn" - -#: describe.c:2201 -msgid "Attributes" -msgstr "Attribut" - -#: describe.c:2202 -msgid "Member of" -msgstr "Medlem av" - -#: describe.c:2213 -msgid "Superuser" -msgstr "Superanv�ndare" - -#: describe.c:2216 -msgid "No inheritance" -msgstr "" - -#: describe.c:2219 -msgid "Create role" -msgstr "Skapa roll" - -#: describe.c:2222 -msgid "Create DB" -msgstr "Skapa DB" - -#: describe.c:2225 -msgid "Cannot login" -msgstr "" - -#: describe.c:2234 -msgid "No connections" -msgstr "Inga uppkopplingar" - -#: describe.c:2236 -#, c-format -msgid "%d connection" -msgid_plural "%d connections" -msgstr[0] "%d uppkoppling" -msgstr[1] "%d uppkopplingar" - -#: describe.c:2303 -#, c-format -msgid "No per-database role settings support in this server version.\n" -msgstr "" - -#: describe.c:2314 -#, fuzzy, c-format -msgid "No matching settings found.\n" -msgstr "Inga matchande relationer funna.\n" - -#: describe.c:2316 -#, fuzzy, c-format -msgid "No settings found.\n" -msgstr "Inga relationer funna.\n" - -#: describe.c:2321 -#, fuzzy -msgid "List of settings" -msgstr "Lista med relationer" - -#: describe.c:2379 -msgid "special" -msgstr "s�rskild" - -#: describe.c:2386 -msgid "Table" -msgstr "Tabell" - -#: describe.c:2446 -#, c-format -msgid "No matching relations found.\n" -msgstr "Inga matchande relationer funna.\n" - -#: describe.c:2448 -#, c-format -msgid "No relations found.\n" -msgstr "Inga relationer funna.\n" - -#: describe.c:2453 -msgid "List of relations" -msgstr "Lista med relationer" - -#: describe.c:2497 -msgid "Modifier" -msgstr "Modifierare" - -#: describe.c:2498 -msgid "Check" -msgstr "Check" - -#: describe.c:2516 -msgid "List of domains" -msgstr "Lista med dom�ner" - -#: describe.c:2551 -msgid "Source" -msgstr "K�lla" - -#: describe.c:2552 -msgid "Destination" -msgstr "M�l" - -#: describe.c:2554 -msgid "Default?" -msgstr "Standard?" - -#: describe.c:2572 -msgid "List of conversions" -msgstr "Lista med konverteringar" - -#: describe.c:2624 -msgid "Source type" -msgstr "K�lltyp" - -#: describe.c:2625 -msgid "Target type" -msgstr "M�ltyp" - -#: describe.c:2626 describe.c:2886 -msgid "Function" -msgstr "Funktion" - -#: describe.c:2627 -msgid "in assignment" -msgstr "i tilldelning" - -#: describe.c:2628 -msgid "Implicit?" -msgstr "Implicit?" - -#: describe.c:2654 -msgid "List of casts" -msgstr "Lista med typomvandlingar" - -#: describe.c:2709 -msgid "List of schemas" -msgstr "Lista med scheman" - -#: describe.c:2732 describe.c:2965 describe.c:3033 describe.c:3101 -#, c-format -msgid "The server (version %d.%d) does not support full text search.\n" -msgstr "Servern (version %d.%d) st�der inte fulltexts�kning.\n" - -#: describe.c:2766 -msgid "List of text search parsers" -msgstr "Lista med texts�ktolkare" - -#: describe.c:2809 -#, c-format -msgid "Did not find any text search parser named \"%s\".\n" -msgstr "Kunde inte hitta en texts�ktolkare med namn \"%s\".\n" - -#: describe.c:2884 -msgid "Start parse" -msgstr "" - -#: describe.c:2885 -msgid "Method" -msgstr "" - -#: describe.c:2889 -msgid "Get next token" -msgstr "" - -#: describe.c:2891 -msgid "End parse" -msgstr "" - -#: describe.c:2893 -msgid "Get headline" -msgstr "" - -#: describe.c:2895 -msgid "Get token types" -msgstr "" - -#: describe.c:2905 -#, c-format -msgid "Text search parser \"%s.%s\"" -msgstr "Texts�ktolkare \"%s.%s\"" - -#: describe.c:2907 -#, c-format -msgid "Text search parser \"%s\"" -msgstr "Texts�ktolkare \"%s\"" - -#: describe.c:2925 -#, fuzzy -msgid "Token name" -msgstr "Rollnamn" - -#: describe.c:2936 -#, c-format -msgid "Token types for parser \"%s.%s\"" -msgstr "" - -#: describe.c:2938 -#, fuzzy, c-format -msgid "Token types for parser \"%s\"" -msgstr "kunde inte tolka inst�llningen f�r parameter \"%s\"" - -#: describe.c:2987 -msgid "Template" -msgstr "Mall" - -#: describe.c:2988 -#, fuzzy -msgid "Init options" -msgstr "Generella flaggor:" - -#: describe.c:3010 -msgid "List of text search dictionaries" -msgstr "Lista med texts�kordlistor" - -#: describe.c:3050 -msgid "Init" -msgstr "Init" - -#: describe.c:3051 -#, fuzzy -msgid "Lexize" -msgstr "Storlek" - -#: describe.c:3078 -msgid "List of text search templates" -msgstr "Lista med texts�kmallar" - -#: describe.c:3135 -msgid "List of text search configurations" -msgstr "Lista med texts�kkonfigurationer" - -#: describe.c:3179 -#, c-format -msgid "Did not find any text search configuration named \"%s\".\n" -msgstr "Kunde inte hitta en texts�kkonfiguration med namn \"%s\".\n" - -#: describe.c:3245 -msgid "Token" -msgstr "" - -#: describe.c:3246 -msgid "Dictionaries" -msgstr "Ordlistor" - -#: describe.c:3257 -#, c-format -msgid "Text search configuration \"%s.%s\"" -msgstr "Texts�kkonfiguration \"%s.%s\"" - -#: describe.c:3260 -#, c-format -msgid "Text search configuration \"%s\"" -msgstr "Texts�kkonfiguration \"%s\"" - -#: describe.c:3264 -#, c-format -msgid "" -"\n" -"Parser: \"%s.%s\"" -msgstr "" -"\n" -"Tolkare: \"%s.%s\"" - -#: describe.c:3267 -#, c-format -msgid "" -"\n" -"Parser: \"%s\"" -msgstr "" -"\n" -"Tolkare: \"%s\"" - -#: describe.c:3299 -#, fuzzy, c-format -msgid "The server (version %d.%d) does not support foreign-data wrappers.\n" -msgstr "Denna serverversion (%d) st�der inte tabellutrymmen.\n" - -#: describe.c:3311 -msgid "Validator" -msgstr "" - -#: describe.c:3335 -#, fuzzy -msgid "List of foreign-data wrappers" -msgstr "Lista med datatyper" - -#: describe.c:3358 -#, fuzzy, c-format -msgid "The server (version %d.%d) does not support foreign servers.\n" -msgstr "Denna serverversion (%d) st�der inte tabellutrymmen.\n" - -#: describe.c:3370 -msgid "Foreign-data wrapper" -msgstr "" - -#: describe.c:3382 -msgid "Version" -msgstr "Version" - -#: describe.c:3401 -#, fuzzy -msgid "List of foreign servers" -msgstr "Lista med konverteringar" - -#: describe.c:3424 -#, fuzzy, c-format -msgid "The server (version %d.%d) does not support user mappings.\n" -msgstr "Denna serverversion (%d) st�der inte tabellutrymmen.\n" - -#: describe.c:3433 -msgid "Server" -msgstr "Server" - -#: describe.c:3434 -msgid "User name" -msgstr "Anv�ndarnamn" - -#: describe.c:3454 -#, fuzzy -msgid "List of user mappings" -msgstr "Lista av dom�ner" - -#: sql_help.h:173 sql_help.h:788 -msgid "abort the current transaction" -msgstr "avbryt aktuell transaktion" - -#: sql_help.h:178 -msgid "change the definition of an aggregate function" -msgstr "�ndra definitionen av en aggregatfunktion" - -#: sql_help.h:183 -msgid "change the definition of a conversion" -msgstr "�ndra definitionen av en konvertering" - -#: sql_help.h:188 -msgid "change a database" -msgstr "�ndra en databas" - -#: sql_help.h:193 -msgid "define default access privileges" -msgstr "" - -#: sql_help.h:198 -msgid "change the definition of a domain" -msgstr "�ndra definitionen av en dom�n" - -#: sql_help.h:203 -#, fuzzy -msgid "change the definition of a foreign-data wrapper" -msgstr "�ndra definitionen av en utl�sare" - -#: sql_help.h:208 -msgid "change the definition of a function" -msgstr "�ndra definitionen av en funktion" - -#: sql_help.h:213 -msgid "change role name or membership" -msgstr "�ndra rollnamn eller medlemskap" - -#: sql_help.h:218 -msgid "change the definition of an index" -msgstr "�ndra definitionen av ett index" - -#: sql_help.h:223 -msgid "change the definition of a procedural language" -msgstr "�ndra definitionen av ett procedur-spr�k" - -#: sql_help.h:228 -#, fuzzy -msgid "change the definition of a large object" -msgstr "�ndra definitionen av en tabell" - -#: sql_help.h:233 -msgid "change the definition of an operator" -msgstr "�ndra definitionen av en operator" - -#: sql_help.h:238 -msgid "change the definition of an operator class" -msgstr "�ndra definitionen av en operatorklass" - -#: sql_help.h:243 -msgid "change the definition of an operator family" -msgstr "�ndra definitionen av en operatorfamilj" - -#: sql_help.h:248 sql_help.h:308 -msgid "change a database role" -msgstr "�ndra databasroll" - -#: sql_help.h:253 -msgid "change the definition of a schema" -msgstr "�ndra definitionen av ett schema" - -#: sql_help.h:258 -msgid "change the definition of a sequence generator" -msgstr "�ndra definitionen av en sekvensgenerator" - -#: sql_help.h:263 -#, fuzzy -msgid "change the definition of a foreign server" -msgstr "�ndra definitionen av en utl�sare" - -#: sql_help.h:268 -msgid "change the definition of a table" -msgstr "�ndra definitionen av en tabell" - -#: sql_help.h:273 -msgid "change the definition of a tablespace" -msgstr "�ndra definitionen av ett tabellutrymme" - -#: sql_help.h:278 -msgid "change the definition of a text search configuration" -msgstr "�ndra definitionen av en texts�kkonfiguration" - -#: sql_help.h:283 -msgid "change the definition of a text search dictionary" -msgstr "�ndra definitionen av en texts�kordlista" - -#: sql_help.h:288 -msgid "change the definition of a text search parser" -msgstr "�ndra definitionen av en texts�ktolkare" - -#: sql_help.h:293 -msgid "change the definition of a text search template" -msgstr "�ndra definitionen av en texts�kmall" - -#: sql_help.h:298 -msgid "change the definition of a trigger" -msgstr "�ndra definitionen av en utl�sare" - -#: sql_help.h:303 -msgid "change the definition of a type" -msgstr "�ndra definitionen av en typ" - -#: sql_help.h:313 -#, fuzzy -msgid "change the definition of a user mapping" -msgstr "�ndra definitionen av en dom�n" - -#: sql_help.h:318 -msgid "change the definition of a view" -msgstr "�ndra definitionen av en vy" - -#: sql_help.h:323 -msgid "collect statistics about a database" -msgstr "samla in statistik om en databas" - -#: sql_help.h:328 sql_help.h:848 -msgid "start a transaction block" -msgstr "starta ett transaktionsblock" - -#: sql_help.h:333 -msgid "force a transaction log checkpoint" -msgstr "tvinga transaktionsloggen att g�ra en checkpoint" - -#: sql_help.h:338 -msgid "close a cursor" -msgstr "st�ng en mark�r" - -#: sql_help.h:343 -msgid "cluster a table according to an index" -msgstr "klustra en tabell efter ett index" - -#: sql_help.h:348 -msgid "define or change the comment of an object" -msgstr "definiera eller �ndra en kommentar p� ett objekt" - -#: sql_help.h:353 sql_help.h:698 -msgid "commit the current transaction" -msgstr "utf�r den aktuella transaktionen" - -#: sql_help.h:358 -msgid "commit a transaction that was earlier prepared for two-phase commit" -msgstr "" -"utf�r commit p� en transaktion som tidigare f�rberetts f�r tv�-fas-commit" - -#: sql_help.h:363 -msgid "copy data between a file and a table" -msgstr "kopiera data mellan en fil och en tabell" - -#: sql_help.h:368 -msgid "define a new aggregate function" -msgstr "definiera en ny aggregatfunktion" - -#: sql_help.h:373 -msgid "define a new cast" -msgstr "definiera en ny typomvandling" - -#: sql_help.h:378 -msgid "define a new constraint trigger" -msgstr "definiera en ny villkorsutl�sare" - -#: sql_help.h:383 -msgid "define a new encoding conversion" -msgstr "definiera en ny teckenkodningskonvertering" - -#: sql_help.h:388 -msgid "create a new database" -msgstr "skapa en ny databas" - -#: sql_help.h:393 -msgid "define a new domain" -msgstr "definiera en ny dom�n" - -#: sql_help.h:398 -#, fuzzy -msgid "define a new foreign-data wrapper" -msgstr "definiera en ny datatyp" - -#: sql_help.h:403 -msgid "define a new function" -msgstr "definiera en ny funktion" - -#: sql_help.h:408 sql_help.h:438 sql_help.h:508 -msgid "define a new database role" -msgstr "definiera en ny databasroll" - -#: sql_help.h:413 -msgid "define a new index" -msgstr "skapa ett nytt index" - -#: sql_help.h:418 -msgid "define a new procedural language" -msgstr "definiera ett nytt procedur-spr�k" - -#: sql_help.h:423 -msgid "define a new operator" -msgstr "definiera en ny operator" - -#: sql_help.h:428 -msgid "define a new operator class" -msgstr "definiera en ny operatorklass" - -#: sql_help.h:433 -msgid "define a new operator family" -msgstr "definiera en ny operatorfamilj" - -#: sql_help.h:443 -msgid "define a new rewrite rule" -msgstr "definiera en ny omskrivningsregel" - -#: sql_help.h:448 -msgid "define a new schema" -msgstr "definiera ett nytt schema" - -#: sql_help.h:453 -msgid "define a new sequence generator" -msgstr "definiera en ny sekvensgenerator" - -#: sql_help.h:458 -#, fuzzy -msgid "define a new foreign server" -msgstr "definiera en ny utl�sare" - -#: sql_help.h:463 -msgid "define a new table" -msgstr "definiera en ny tabell" - -#: sql_help.h:468 sql_help.h:813 -msgid "define a new table from the results of a query" -msgstr "definiera en ny tabell utifr�n resultatet av en fr�ga" - -#: sql_help.h:473 -msgid "define a new tablespace" -msgstr "definiera ett nytt tabellutrymme" - -#: sql_help.h:478 -msgid "define a new text search configuration" -msgstr "definiera en ny texts�kkonfiguration" - -#: sql_help.h:483 -msgid "define a new text search dictionary" -msgstr "definiera en ny texts�kordlista" - -#: sql_help.h:488 -msgid "define a new text search parser" -msgstr "definiera en ny texts�ktolkare" - -#: sql_help.h:493 -msgid "define a new text search template" -msgstr "definiera en ny texts�kmall" - -#: sql_help.h:498 -msgid "define a new trigger" -msgstr "definiera en ny utl�sare" - -#: sql_help.h:503 -msgid "define a new data type" -msgstr "definiera en ny datatyp" - -#: sql_help.h:513 -msgid "define a new mapping of a user to a foreign server" -msgstr "" - -#: sql_help.h:518 -msgid "define a new view" -msgstr "definiera en ny vy" - -#: sql_help.h:523 -msgid "deallocate a prepared statement" -msgstr "deallokera en f�rberedd sats" - -#: sql_help.h:528 -msgid "define a cursor" -msgstr "definiera en mark�r" - -#: sql_help.h:533 -msgid "delete rows of a table" -msgstr "radera rader i en tabell" - -#: sql_help.h:538 -msgid "discard session state" -msgstr "" - -#: sql_help.h:543 -msgid "execute an anonymous code block" -msgstr "" - -#: sql_help.h:548 -msgid "remove an aggregate function" -msgstr "ta bort en aggregatfunktioner" - -#: sql_help.h:553 -msgid "remove a cast" -msgstr "ta bort en typomvandling" - -#: sql_help.h:558 -msgid "remove a conversion" -msgstr "ta bort en konvertering" - -#: sql_help.h:563 -msgid "remove a database" -msgstr "ta bort en databas" - -#: sql_help.h:568 -msgid "remove a domain" -msgstr "ta bort en dom�n" - -#: sql_help.h:573 -#, fuzzy -msgid "remove a foreign-data wrapper" -msgstr "ta bort en datatyp" - -#: sql_help.h:578 -msgid "remove a function" -msgstr "ta bort en funktion" - -#: sql_help.h:583 sql_help.h:618 sql_help.h:683 -msgid "remove a database role" -msgstr "ta bort en databasroll" - -#: sql_help.h:588 -msgid "remove an index" -msgstr "ta bort ett index" - -#: sql_help.h:593 -msgid "remove a procedural language" -msgstr "ta bort ett procedur-spr�k" - -#: sql_help.h:598 -msgid "remove an operator" -msgstr "ta bort en operator" - -#: sql_help.h:603 -msgid "remove an operator class" -msgstr "ta bort en operatorklass" - -#: sql_help.h:608 -msgid "remove an operator family" -msgstr "ta bort en operatorfamilj" - -#: sql_help.h:613 -msgid "remove database objects owned by a database role" -msgstr "ta bort databasobjekt som �gs av databasroll" - -#: sql_help.h:623 -msgid "remove a rewrite rule" -msgstr "ta bort en omskrivningsregel" - -#: sql_help.h:628 -msgid "remove a schema" -msgstr "ta bort ett schema" - -#: sql_help.h:633 -msgid "remove a sequence" -msgstr "ta bort en sekvens" - -#: sql_help.h:638 -#, fuzzy -msgid "remove a foreign server descriptor" -msgstr "ta bort en konvertering" - -#: sql_help.h:643 -msgid "remove a table" -msgstr "ta bort en tabell" - -#: sql_help.h:648 -msgid "remove a tablespace" -msgstr "ta bort ett tabellutrymme" - -#: sql_help.h:653 -msgid "remove a text search configuration" -msgstr "ta bort en texts�kkonfiguration" - -#: sql_help.h:658 -msgid "remove a text search dictionary" -msgstr "ta bort en texts�kordlista" - -#: sql_help.h:663 -msgid "remove a text search parser" -msgstr "ta bort en texts�ktolkare" - -#: sql_help.h:668 -msgid "remove a text search template" -msgstr "ta bort en texts�kmall" - -#: sql_help.h:673 -msgid "remove a trigger" -msgstr "ta bort en utl�sare" - -#: sql_help.h:678 -msgid "remove a data type" -msgstr "ta bort en datatyp" - -#: sql_help.h:688 -msgid "remove a user mapping for a foreign server" -msgstr "" - -#: sql_help.h:693 -msgid "remove a view" -msgstr "ta bort en vy" - -#: sql_help.h:703 -msgid "execute a prepared statement" -msgstr "utf�r en f�rberedd sats" - -#: sql_help.h:708 -msgid "show the execution plan of a statement" -msgstr "visa k�rningsplanen f�r en sats" - -#: sql_help.h:713 -msgid "retrieve rows from a query using a cursor" -msgstr "h�mta rader fr�n en fr�ga med hj�lp av en mark�r" - -#: sql_help.h:718 -msgid "define access privileges" -msgstr "definera �tkomstr�ttigheter" - -#: sql_help.h:723 -msgid "create new rows in a table" -msgstr "skapa nya rader i en tabell" - -#: sql_help.h:728 -msgid "listen for a notification" -msgstr "lyssna efter notifiering" - -#: sql_help.h:733 -msgid "load a shared library file" -msgstr "ladda en delad biblioteksfil (shared library)" - -#: sql_help.h:738 -msgid "lock a table" -msgstr "l�s en tabell" - -#: sql_help.h:743 -msgid "position a cursor" -msgstr "flytta en mark�r" - -#: sql_help.h:748 -msgid "generate a notification" -msgstr "generera en notifiering" - -#: sql_help.h:753 -msgid "prepare a statement for execution" -msgstr "f�rbered en sats f�r k�rning" - -#: sql_help.h:758 -msgid "prepare the current transaction for two-phase commit" -msgstr "avbryt aktuell transaktion f�r tv�-fas-commit" - -#: sql_help.h:763 -msgid "change the ownership of database objects owned by a database role" -msgstr "byt �gare p� databasobjekt som �gs av en databasroll" - -#: sql_help.h:768 -msgid "rebuild indexes" -msgstr "�terskapa index" - -#: sql_help.h:773 -msgid "destroy a previously defined savepoint" -msgstr "ta bort en tidigare definierad sparpunkt" - -#: sql_help.h:778 -msgid "restore the value of a run-time parameter to the default value" -msgstr "�terst�ll v�rde av k�rningsparameter till standardv�rdet" - -#: sql_help.h:783 -msgid "remove access privileges" -msgstr "ta bort �tkomstr�ttigheter" - -#: sql_help.h:793 -msgid "cancel a transaction that was earlier prepared for two-phase commit" -msgstr "avbryt en transaktion som tidigare f�rberetts f�r tv�-fas-commit" - -#: sql_help.h:798 -msgid "roll back to a savepoint" -msgstr "rulla tillbaka till sparpunkt" - -#: sql_help.h:803 -msgid "define a new savepoint within the current transaction" -msgstr "definera en ny sparpunkt i den aktuella transaktionen" - -#: sql_help.h:808 sql_help.h:853 sql_help.h:883 -msgid "retrieve rows from a table or view" -msgstr "h�mta rader fr�n en tabell eller vy" - -#: sql_help.h:818 -msgid "change a run-time parameter" -msgstr "�ndra en k�rningsparamter" - -#: sql_help.h:823 -#, fuzzy -msgid "set constraint check timing for the current transaction" -msgstr "s�tt integritetsvillkorsl�ge f�r nuvarande transaktion" - -#: sql_help.h:828 -msgid "set the current user identifier of the current session" -msgstr "s�tt anv�ndare f�r den aktiva sessionen" - -#: sql_help.h:833 -msgid "" -"set the session user identifier and the current user identifier of the " -"current session" -msgstr "" -"s�tt sessionsanv�ndaridentifierare och nuvarande anv�ndaridentifierare f�r " -"den aktiva sessionen" - -#: sql_help.h:838 -msgid "set the characteristics of the current transaction" -msgstr "s�tt inst�llningar f�r nuvarande transaktionen" - -#: sql_help.h:843 -msgid "show the value of a run-time parameter" -msgstr "visa v�rde p� en k�rningsparameter" - -#: sql_help.h:858 -msgid "empty a table or set of tables" -msgstr "t�m en eller flera tabeller" - -#: sql_help.h:863 -msgid "stop listening for a notification" -msgstr "sluta att lyssna efter notifiering" - -#: sql_help.h:868 -msgid "update rows of a table" -msgstr "uppdatera rader i en tabell" - -#: sql_help.h:873 -msgid "garbage-collect and optionally analyze a database" -msgstr "skr�psamla och eventuellt analysera en databas" - -#: sql_help.h:878 -msgid "compute a set of rows" -msgstr "ber�kna en m�ngd rader" - -#: sql_help.c:26 sql_help.c:29 sql_help.c:32 sql_help.c:43 sql_help.c:45 -#: sql_help.c:69 sql_help.c:73 sql_help.c:75 sql_help.c:77 sql_help.c:79 -#: sql_help.c:82 sql_help.c:84 sql_help.c:86 sql_help.c:161 sql_help.c:163 -#: sql_help.c:164 sql_help.c:166 sql_help.c:168 sql_help.c:170 sql_help.c:182 -#: sql_help.c:186 sql_help.c:214 sql_help.c:219 sql_help.c:224 sql_help.c:229 -#: sql_help.c:267 sql_help.c:269 sql_help.c:271 sql_help.c:274 sql_help.c:284 -#: sql_help.c:286 sql_help.c:304 sql_help.c:316 sql_help.c:319 sql_help.c:338 -#: sql_help.c:349 sql_help.c:357 sql_help.c:360 sql_help.c:389 sql_help.c:395 -#: sql_help.c:397 sql_help.c:401 sql_help.c:404 sql_help.c:407 sql_help.c:417 -#: sql_help.c:419 sql_help.c:436 sql_help.c:445 sql_help.c:447 sql_help.c:449 -#: sql_help.c:513 sql_help.c:515 sql_help.c:518 sql_help.c:520 sql_help.c:570 -#: sql_help.c:572 sql_help.c:574 sql_help.c:577 sql_help.c:597 sql_help.c:600 -#: sql_help.c:603 sql_help.c:606 sql_help.c:610 sql_help.c:612 sql_help.c:614 -#: sql_help.c:627 sql_help.c:630 sql_help.c:632 sql_help.c:641 sql_help.c:650 -#: sql_help.c:659 sql_help.c:671 sql_help.c:673 sql_help.c:675 sql_help.c:703 -#: sql_help.c:709 sql_help.c:711 sql_help.c:714 sql_help.c:716 sql_help.c:718 -#: sql_help.c:743 sql_help.c:746 sql_help.c:748 sql_help.c:750 sql_help.c:752 -#: sql_help.c:791 sql_help.c:962 sql_help.c:969 sql_help.c:1015 -#: sql_help.c:1030 sql_help.c:1048 sql_help.c:1070 sql_help.c:1086 -#: sql_help.c:1112 sql_help.c:1154 sql_help.c:1176 sql_help.c:1195 -#: sql_help.c:1196 sql_help.c:1213 sql_help.c:1233 sql_help.c:1254 -#: sql_help.c:1281 sql_help.c:1302 sql_help.c:1332 sql_help.c:1512 -#: sql_help.c:1525 sql_help.c:1542 sql_help.c:1558 sql_help.c:1571 -#: sql_help.c:1610 sql_help.c:1613 sql_help.c:1615 sql_help.c:1632 -#: sql_help.c:1658 sql_help.c:1691 sql_help.c:1701 sql_help.c:1710 -#: sql_help.c:1752 sql_help.c:1770 sql_help.c:1778 sql_help.c:1786 -#: sql_help.c:1794 sql_help.c:1803 sql_help.c:1814 sql_help.c:1822 -#: sql_help.c:1830 sql_help.c:1838 sql_help.c:1848 sql_help.c:1857 -#: sql_help.c:1866 sql_help.c:1874 sql_help.c:1882 sql_help.c:1891 -#: sql_help.c:1899 sql_help.c:1915 sql_help.c:1931 sql_help.c:1939 -#: sql_help.c:1947 sql_help.c:1955 sql_help.c:1963 sql_help.c:1972 -#: sql_help.c:1980 sql_help.c:1997 sql_help.c:2012 sql_help.c:2192 -#: sql_help.c:2220 sql_help.c:2247 sql_help.c:2548 sql_help.c:2593 -#: sql_help.c:2697 -msgid "name" -msgstr "namn" - -#: sql_help.c:27 sql_help.c:30 sql_help.c:33 sql_help.c:524 sql_help.c:528 -#: sql_help.c:1753 -msgid "type" -msgstr "typ" - -#: sql_help.c:28 sql_help.c:44 sql_help.c:74 sql_help.c:223 sql_help.c:256 -#: sql_help.c:268 sql_help.c:285 sql_help.c:318 sql_help.c:359 sql_help.c:396 -#: sql_help.c:418 sql_help.c:448 sql_help.c:519 sql_help.c:571 sql_help.c:613 -#: sql_help.c:631 sql_help.c:642 sql_help.c:651 sql_help.c:661 sql_help.c:672 -#: sql_help.c:710 sql_help.c:751 -msgid "new_name" -msgstr "nytt_namn" - -#: sql_help.c:31 sql_help.c:46 sql_help.c:76 sql_help.c:169 sql_help.c:187 -#: sql_help.c:228 sql_help.c:287 sql_help.c:296 sql_help.c:307 sql_help.c:321 -#: sql_help.c:362 sql_help.c:420 sql_help.c:446 sql_help.c:465 sql_help.c:558 -#: sql_help.c:573 sql_help.c:615 sql_help.c:633 sql_help.c:674 sql_help.c:749 -msgid "new_owner" -msgstr "ny_�gare" - -#: sql_help.c:34 sql_help.c:171 sql_help.c:233 sql_help.c:450 sql_help.c:521 -#: sql_help.c:676 sql_help.c:753 -msgid "new_schema" -msgstr "nytt_schema" - -#: sql_help.c:70 sql_help.c:184 sql_help.c:390 sql_help.c:462 sql_help.c:628 -#: sql_help.c:704 sql_help.c:730 sql_help.c:922 sql_help.c:927 sql_help.c:1088 -#: sql_help.c:1155 sql_help.c:1282 sql_help.c:1353 sql_help.c:1527 -#: sql_help.c:1659 sql_help.c:1681 -#, fuzzy -msgid "option" -msgstr "Options" - -#: sql_help.c:71 sql_help.c:391 sql_help.c:705 sql_help.c:1156 sql_help.c:1283 -#: sql_help.c:1660 -#, fuzzy -msgid "where option can be:" -msgstr "" -"\n" -"Andra flaggor:\n" - -#: sql_help.c:72 sql_help.c:392 sql_help.c:706 sql_help.c:1055 sql_help.c:1284 -#: sql_help.c:1661 -msgid "connlimit" -msgstr "anslutningstak" - -#: sql_help.c:78 sql_help.c:559 -msgid "new_tablespace" -msgstr "nytt_tabellutrymme" - -#: sql_help.c:80 sql_help.c:83 sql_help.c:85 sql_help.c:237 sql_help.c:239 -#: sql_help.c:240 sql_help.c:399 sql_help.c:403 sql_help.c:406 sql_help.c:712 -#: sql_help.c:715 sql_help.c:717 sql_help.c:1123 sql_help.c:2264 -#: sql_help.c:2537 -msgid "configuration_parameter" -msgstr "konfigurationsparameter" - -#: sql_help.c:81 sql_help.c:185 sql_help.c:238 sql_help.c:273 sql_help.c:400 -#: sql_help.c:463 sql_help.c:538 sql_help.c:554 sql_help.c:576 sql_help.c:629 -#: sql_help.c:713 sql_help.c:731 sql_help.c:1089 sql_help.c:1124 -#: sql_help.c:1125 sql_help.c:1183 sql_help.c:1354 sql_help.c:1427 -#: sql_help.c:1436 sql_help.c:1467 sql_help.c:1489 sql_help.c:1528 -#: sql_help.c:1682 sql_help.c:2538 sql_help.c:2539 -msgid "value" -msgstr "v�rde" - -#: sql_help.c:133 -#, fuzzy -msgid "target_role" -msgstr "Skapa roll" - -#: sql_help.c:134 sql_help.c:1317 sql_help.c:2118 sql_help.c:2125 -#: sql_help.c:2137 sql_help.c:2143 sql_help.c:2347 sql_help.c:2354 -#: sql_help.c:2366 sql_help.c:2372 -msgid "schema_name" -msgstr "schemanamn" - -#: sql_help.c:135 -msgid "abbreviated_grant_or_revoke" -msgstr "" - -#: sql_help.c:136 -msgid "where abbreviated_grant_or_revoke is one of:" -msgstr "" - -#: sql_help.c:137 sql_help.c:138 sql_help.c:139 sql_help.c:140 sql_help.c:141 -#: sql_help.c:142 sql_help.c:1159 sql_help.c:1160 sql_help.c:1161 -#: sql_help.c:1162 sql_help.c:1163 sql_help.c:1287 sql_help.c:1288 -#: sql_help.c:1289 sql_help.c:1290 sql_help.c:1291 sql_help.c:1664 -#: sql_help.c:1665 sql_help.c:1666 sql_help.c:1667 sql_help.c:1668 -#: sql_help.c:2119 sql_help.c:2123 sql_help.c:2126 sql_help.c:2128 -#: sql_help.c:2130 sql_help.c:2132 sql_help.c:2138 sql_help.c:2140 -#: sql_help.c:2142 sql_help.c:2144 sql_help.c:2146 sql_help.c:2147 -#: sql_help.c:2148 sql_help.c:2348 sql_help.c:2352 sql_help.c:2355 -#: sql_help.c:2357 sql_help.c:2359 sql_help.c:2361 sql_help.c:2367 -#: sql_help.c:2369 sql_help.c:2371 sql_help.c:2373 sql_help.c:2375 -#: sql_help.c:2376 sql_help.c:2377 sql_help.c:2558 -msgid "role_name" -msgstr "rollnamn" - -#: sql_help.c:162 sql_help.c:529 sql_help.c:531 sql_help.c:745 sql_help.c:1072 -#: sql_help.c:1076 sql_help.c:1180 sql_help.c:1440 sql_help.c:1449 -#: sql_help.c:1471 sql_help.c:2160 sql_help.c:2445 sql_help.c:2446 -#: sql_help.c:2450 sql_help.c:2455 sql_help.c:2512 sql_help.c:2513 -#: sql_help.c:2518 sql_help.c:2523 sql_help.c:2644 sql_help.c:2645 -#: sql_help.c:2649 sql_help.c:2654 sql_help.c:2721 sql_help.c:2723 -#: sql_help.c:2754 sql_help.c:2796 sql_help.c:2797 sql_help.c:2801 -#: sql_help.c:2806 -msgid "expression" -msgstr "uttryck" - -#: sql_help.c:165 -msgid "domain_constraint" -msgstr "domain_villkor" - -#: sql_help.c:167 sql_help.c:543 sql_help.c:845 sql_help.c:1075 -#: sql_help.c:1439 sql_help.c:1448 -msgid "constraint_name" -msgstr "villkorsnamn" - -#: sql_help.c:183 sql_help.c:1087 sql_help.c:1199 -msgid "valfunction" -msgstr "val-funktion" - -#: sql_help.c:215 sql_help.c:220 sql_help.c:225 sql_help.c:230 sql_help.c:851 -#: sql_help.c:1113 sql_help.c:1804 sql_help.c:2134 sql_help.c:2363 -msgid "argmode" -msgstr "arg_l�ge" - -#: sql_help.c:216 sql_help.c:221 sql_help.c:226 sql_help.c:231 sql_help.c:852 -#: sql_help.c:1114 sql_help.c:1805 -msgid "argname" -msgstr "arg_namn" - -#: sql_help.c:217 sql_help.c:222 sql_help.c:227 sql_help.c:232 sql_help.c:853 -#: sql_help.c:1115 sql_help.c:1806 -msgid "argtype" -msgstr "arg_typ" - -#: sql_help.c:218 sql_help.c:514 sql_help.c:1445 sql_help.c:1446 -#: sql_help.c:1462 sql_help.c:1463 -msgid "action" -msgstr "aktion" - -#: sql_help.c:234 sql_help.c:522 -msgid "where action is one of:" -msgstr "d�r aktion �r en av:" - -#: sql_help.c:235 sql_help.c:1121 -#, fuzzy -msgid "execution_cost" -msgstr "k�r %s %s\n" - -#: sql_help.c:236 sql_help.c:1122 -msgid "result_rows" -msgstr "" - -#: sql_help.c:251 sql_help.c:253 sql_help.c:255 -msgid "group_name" -msgstr "gruppnamn" - -#: sql_help.c:252 sql_help.c:254 sql_help.c:728 sql_help.c:1049 -#: sql_help.c:1318 sql_help.c:1320 sql_help.c:1500 sql_help.c:1679 -#: sql_help.c:1988 sql_help.c:2568 -msgid "user_name" -msgstr "anv�ndarnamn" - -#: sql_help.c:270 sql_help.c:1499 sql_help.c:1923 sql_help.c:2145 -#: sql_help.c:2374 -msgid "tablespace_name" -msgstr "tabellutrymmesnamn" - -#: sql_help.c:272 sql_help.c:275 sql_help.c:553 sql_help.c:555 sql_help.c:1182 -#: sql_help.c:1426 sql_help.c:1435 sql_help.c:1466 sql_help.c:1488 -msgid "storage_parameter" -msgstr "lagringsparameter" - -#: sql_help.c:295 sql_help.c:855 -msgid "large_object_oid" -msgstr "stort_objekt_oid" - -#: sql_help.c:305 sql_help.c:857 sql_help.c:1215 sql_help.c:1839 -msgid "left_type" -msgstr "v�nster_typ" - -#: sql_help.c:306 sql_help.c:858 sql_help.c:1216 sql_help.c:1840 -msgid "right_type" -msgstr "h�ger_typ" - -#: sql_help.c:317 sql_help.c:320 sql_help.c:339 sql_help.c:350 sql_help.c:358 -#: sql_help.c:361 sql_help.c:860 sql_help.c:862 sql_help.c:1235 -#: sql_help.c:1255 sql_help.c:1454 sql_help.c:1849 sql_help.c:1858 -msgid "index_method" -msgstr "indexmetod" - -#: sql_help.c:340 sql_help.c:351 sql_help.c:1237 -msgid "strategy_number" -msgstr "strateginummer" - -#: sql_help.c:341 sql_help.c:856 sql_help.c:1238 -msgid "operator_name" -msgstr "operatornamn" - -#: sql_help.c:342 sql_help.c:343 sql_help.c:345 sql_help.c:346 sql_help.c:352 -#: sql_help.c:353 sql_help.c:355 sql_help.c:356 sql_help.c:1239 -#: sql_help.c:1240 sql_help.c:1242 sql_help.c:1243 -msgid "op_type" -msgstr "op_typ" - -#: sql_help.c:344 sql_help.c:354 sql_help.c:1241 -msgid "support_number" -msgstr "supportnummer" - -#: sql_help.c:347 sql_help.c:850 sql_help.c:995 sql_help.c:1020 -#: sql_help.c:1033 sql_help.c:1214 sql_help.c:1244 sql_help.c:1575 -#: sql_help.c:2133 sql_help.c:2362 sql_help.c:2471 sql_help.c:2476 -#: sql_help.c:2670 sql_help.c:2675 sql_help.c:2822 sql_help.c:2827 -msgid "function_name" -msgstr "funktionsnamn" - -#: sql_help.c:348 sql_help.c:996 sql_help.c:1245 -msgid "argument_type" -msgstr "argumenttyp" - -#: sql_help.c:393 sql_help.c:707 sql_help.c:1157 sql_help.c:1285 -#: sql_help.c:1662 -msgid "password" -msgstr "l�senord" - -#: sql_help.c:394 sql_help.c:708 sql_help.c:1158 sql_help.c:1286 -#: sql_help.c:1663 -msgid "timestamp" -msgstr "tidsst�mpel" - -#: sql_help.c:398 sql_help.c:402 sql_help.c:405 sql_help.c:408 sql_help.c:2127 -#: sql_help.c:2356 -msgid "database_name" -msgstr "databasnamn" - -#: sql_help.c:437 sql_help.c:1333 -msgid "increment" -msgstr "�kningsv�rde" - -#: sql_help.c:438 sql_help.c:1334 -msgid "minvalue" -msgstr "minv�rde" - -#: sql_help.c:439 sql_help.c:1335 -msgid "maxvalue" -msgstr "maxv�rde" - -#: sql_help.c:440 sql_help.c:1336 sql_help.c:2458 sql_help.c:2526 -#: sql_help.c:2657 sql_help.c:2758 sql_help.c:2809 -msgid "start" -msgstr "start" - -#: sql_help.c:441 -msgid "restart" -msgstr "" - -#: sql_help.c:442 sql_help.c:1337 -msgid "cache" -msgstr "cache" - -#: sql_help.c:444 sql_help.c:516 sql_help.c:523 sql_help.c:526 sql_help.c:527 -#: sql_help.c:530 sql_help.c:532 sql_help.c:533 sql_help.c:534 sql_help.c:536 -#: sql_help.c:539 sql_help.c:541 sql_help.c:744 sql_help.c:747 sql_help.c:762 -#: sql_help.c:920 sql_help.c:924 sql_help.c:936 sql_help.c:937 sql_help.c:1179 -#: sql_help.c:1339 sql_help.c:1470 sql_help.c:2120 sql_help.c:2121 -#: sql_help.c:2159 sql_help.c:2349 sql_help.c:2350 sql_help.c:2720 -#: sql_help.c:2722 sql_help.c:2739 sql_help.c:2742 -msgid "column" -msgstr "kolumn" - -#: sql_help.c:460 sql_help.c:464 sql_help.c:729 sql_help.c:1349 -#: sql_help.c:1680 sql_help.c:1907 sql_help.c:1989 sql_help.c:2131 -#: sql_help.c:2360 -#, fuzzy -msgid "server_name" -msgstr "Anv�ndarnamn" - -#: sql_help.c:461 -msgid "new_version" -msgstr "ny_version" - -#: sql_help.c:517 -msgid "new_column" -msgstr "ny_kolumn" - -#: sql_help.c:525 sql_help.c:1421 sql_help.c:1433 -msgid "column_constraint" -msgstr "kolumnvillkor" - -#: sql_help.c:535 -msgid "integer" -msgstr "heltal" - -#: sql_help.c:537 sql_help.c:540 -#, fuzzy -msgid "attribute_option" -msgstr "Attribut" - -#: sql_help.c:542 sql_help.c:1422 sql_help.c:1434 -msgid "table_constraint" -msgstr "tabellvillkor" - -#: sql_help.c:544 sql_help.c:545 sql_help.c:546 sql_help.c:547 sql_help.c:874 -msgid "trigger_name" -msgstr "utl�sarnamn" - -#: sql_help.c:548 sql_help.c:549 sql_help.c:550 sql_help.c:551 -msgid "rewrite_rule_name" -msgstr "" - -#: sql_help.c:552 sql_help.c:801 -msgid "index_name" -msgstr "indexnamn" - -#: sql_help.c:556 sql_help.c:557 sql_help.c:1423 sql_help.c:1425 -msgid "parent_table" -msgstr "f�r�ldertabell" - -#: sql_help.c:575 sql_help.c:578 -#, fuzzy -msgid "tablespace_option" -msgstr "Tabellutrymme" - -#: sql_help.c:598 sql_help.c:601 sql_help.c:607 sql_help.c:611 -msgid "token_type" -msgstr "" - -#: sql_help.c:599 sql_help.c:602 -#, fuzzy -msgid "dictionary_name" -msgstr "Ordlistor" - -#: sql_help.c:604 sql_help.c:608 -#, fuzzy -msgid "old_dictionary" -msgstr "Ordlistor" - -#: sql_help.c:605 sql_help.c:609 -#, fuzzy -msgid "new_dictionary" -msgstr "Ordlistor" - -#: sql_help.c:775 sql_help.c:2582 sql_help.c:2583 sql_help.c:2606 -msgid "transaction_mode" -msgstr "transaktionsl�ge" - -#: sql_help.c:776 sql_help.c:2584 sql_help.c:2607 -msgid "where transaction_mode is one of:" -msgstr "d�r transaktionsl�ge �r en av:" - -#: sql_help.c:800 sql_help.c:839 sql_help.c:846 sql_help.c:866 sql_help.c:875 -#: sql_help.c:919 sql_help.c:923 sql_help.c:1017 sql_help.c:1417 -#: sql_help.c:1429 sql_help.c:1486 sql_help.c:2117 sql_help.c:2122 -#: sql_help.c:2346 sql_help.c:2351 sql_help.c:2460 sql_help.c:2462 -#: sql_help.c:2488 sql_help.c:2528 sql_help.c:2659 sql_help.c:2661 -#: sql_help.c:2687 sql_help.c:2811 sql_help.c:2813 sql_help.c:2839 -msgid "table_name" -msgstr "tabellnamn" - -#: sql_help.c:838 sql_help.c:847 sql_help.c:848 sql_help.c:849 sql_help.c:854 -#: sql_help.c:859 sql_help.c:861 sql_help.c:863 sql_help.c:864 sql_help.c:867 -#: sql_help.c:868 sql_help.c:869 sql_help.c:870 sql_help.c:871 sql_help.c:872 -#: sql_help.c:873 sql_help.c:876 sql_help.c:877 -msgid "object_name" -msgstr "objektnamn" - -#: sql_help.c:840 sql_help.c:1118 sql_help.c:1418 sql_help.c:1431 -#: sql_help.c:1450 sql_help.c:1452 sql_help.c:1459 sql_help.c:1487 -#: sql_help.c:1692 sql_help.c:2486 sql_help.c:2685 sql_help.c:2837 -msgid "column_name" -msgstr "kolumnnamn" - -#: sql_help.c:841 -msgid "agg_name" -msgstr "agg_namn" - -#: sql_help.c:842 -msgid "agg_type" -msgstr "agg_typ" - -#: sql_help.c:843 sql_help.c:993 sql_help.c:997 sql_help.c:999 sql_help.c:1761 -msgid "source_type" -msgstr "k�lltyp" - -#: sql_help.c:844 sql_help.c:994 sql_help.c:998 sql_help.c:1000 -#: sql_help.c:1762 -msgid "target_type" -msgstr "m�ltyp" - -#: sql_help.c:865 -msgid "rule_name" -msgstr "regelnamn" - -#: sql_help.c:878 -msgid "text" -msgstr "text" - -#: sql_help.c:893 sql_help.c:2230 sql_help.c:2392 -msgid "transaction_id" -msgstr "transaktions-id" - -#: sql_help.c:921 sql_help.c:926 sql_help.c:2179 -msgid "filename" -msgstr "filnamn" - -#: sql_help.c:925 sql_help.c:1491 sql_help.c:1693 sql_help.c:1711 -#: sql_help.c:2161 -msgid "query" -msgstr "fr�ga" - -#: sql_help.c:928 -msgid "where option can be one of:" -msgstr "" - -#: sql_help.c:929 -#, fuzzy -msgid "format_name" -msgstr "Informationer\n" - -#: sql_help.c:930 sql_help.c:933 sql_help.c:2022 sql_help.c:2023 -#: sql_help.c:2024 sql_help.c:2025 -msgid "boolean" -msgstr "" - -#: sql_help.c:931 -#, fuzzy -msgid "delimiter_character" -msgstr "COPY-avdelaren m�ste vara exakt ett tecken" - -#: sql_help.c:932 -msgid "null_string" -msgstr "null-str�ng" - -#: sql_help.c:934 -#, fuzzy -msgid "quote_character" -msgstr " vid tecken %d" - -#: sql_help.c:935 -#, fuzzy -msgid "escape_character" -msgstr " vid tecken %d" - -#: sql_help.c:963 -msgid "input_data_type" -msgstr "indatatyp" - -#: sql_help.c:964 sql_help.c:971 -msgid "sfunc" -msgstr "sfunc" - -#: sql_help.c:965 sql_help.c:972 -msgid "state_data_type" -msgstr "tillst�ndsdatatyp" - -#: sql_help.c:966 sql_help.c:973 -msgid "ffunc" -msgstr "ffunc" - -#: sql_help.c:967 sql_help.c:974 -msgid "initial_condition" -msgstr "startv�rde" - -#: sql_help.c:968 sql_help.c:975 -msgid "sort_operator" -msgstr "sorteringsoperator" - -#: sql_help.c:970 -#, fuzzy -msgid "base_type" -msgstr "M�ltyp" - -#: sql_help.c:1016 sql_help.c:1303 sql_help.c:1572 -msgid "event" -msgstr "h�ndelse" - -#: sql_help.c:1018 -msgid "referenced_table_name" -msgstr "refererat_tabellnamn" - -#: sql_help.c:1019 sql_help.c:1305 sql_help.c:1574 sql_help.c:1725 -#: sql_help.c:2449 sql_help.c:2451 sql_help.c:2517 sql_help.c:2519 -#: sql_help.c:2648 sql_help.c:2650 sql_help.c:2725 sql_help.c:2800 -#: sql_help.c:2802 -msgid "condition" -msgstr "villkor" - -#: sql_help.c:1021 sql_help.c:1576 -msgid "arguments" -msgstr "argument" - -#: sql_help.c:1031 -msgid "source_encoding" -msgstr "k�llkodning" - -#: sql_help.c:1032 -msgid "dest_encoding" -msgstr "m�lkodning" - -#: sql_help.c:1050 sql_help.c:1526 -msgid "template" -msgstr "mall" - -#: sql_help.c:1051 -msgid "encoding" -msgstr "kodning" - -#: sql_help.c:1052 -msgid "lc_collate" -msgstr "lc_collate" - -#: sql_help.c:1053 -msgid "lc_ctype" -msgstr "lc_ctype" - -#: sql_help.c:1054 sql_help.c:1184 sql_help.c:1428 sql_help.c:1437 -#: sql_help.c:1468 sql_help.c:1490 -msgid "tablespace" -msgstr "tabellutrymme" - -#: sql_help.c:1071 sql_help.c:1234 sql_help.c:1419 sql_help.c:1612 -#: sql_help.c:2221 -msgid "data_type" -msgstr "datatyp" - -#: sql_help.c:1073 -msgid "constraint" -msgstr "villkor" - -#: sql_help.c:1074 -msgid "where constraint is:" -msgstr "d�r villkor �r:" - -#: sql_help.c:1116 sql_help.c:1420 sql_help.c:1432 -msgid "default_expr" -msgstr "default_uttryck" - -#: sql_help.c:1117 -msgid "rettype" -msgstr "rettyp" - -#: sql_help.c:1119 -msgid "column_type" -msgstr "kolumntyp" - -#: sql_help.c:1120 sql_help.c:1743 sql_help.c:2139 sql_help.c:2368 -msgid "lang_name" -msgstr "spr�knamn" - -#: sql_help.c:1126 -msgid "definition" -msgstr "definition" - -#: sql_help.c:1127 -msgid "obj_file" -msgstr "obj-fil" - -#: sql_help.c:1128 -msgid "link_symbol" -msgstr "linksymbol" - -#: sql_help.c:1129 -msgid "attribute" -msgstr "attribut" - -#: sql_help.c:1164 sql_help.c:1292 sql_help.c:1669 -msgid "uid" -msgstr "uid" - -#: sql_help.c:1178 -msgid "method" -msgstr "metod" - -#: sql_help.c:1181 sql_help.c:1472 -msgid "opclass" -msgstr "op-klass" - -#: sql_help.c:1185 sql_help.c:1458 -msgid "predicate" -msgstr "predikat" - -#: sql_help.c:1197 -msgid "call_handler" -msgstr "anropshanterare" - -#: sql_help.c:1198 -msgid "inline_handler" -msgstr "inline-hanterare" - -#: sql_help.c:1217 -msgid "com_op" -msgstr "com_op" - -#: sql_help.c:1218 -msgid "neg_op" -msgstr "neg_op" - -#: sql_help.c:1219 -msgid "res_proc" -msgstr "res_proc" - -#: sql_help.c:1220 -msgid "join_proc" -msgstr "join_proc" - -#: sql_help.c:1236 -msgid "family_name" -msgstr "" - -#: sql_help.c:1246 -msgid "storage_type" -msgstr "lagringstyp" - -#: sql_help.c:1306 sql_help.c:1307 sql_help.c:1308 -msgid "command" -msgstr "kommando" - -#: sql_help.c:1319 sql_help.c:1321 -msgid "schema_element" -msgstr "schema-element" - -#: sql_help.c:1350 -msgid "server_type" -msgstr "servertyp" - -#: sql_help.c:1351 -msgid "server_version" -msgstr "serverversion" - -#: sql_help.c:1352 sql_help.c:2129 sql_help.c:2358 -msgid "fdw_name" -msgstr "fdw-namn" - -#: sql_help.c:1424 -#, fuzzy -msgid "like_option" -msgstr "Generella flaggor:" - -#: sql_help.c:1430 -msgid "type_name" -msgstr "typnamn" - -#: sql_help.c:1438 -msgid "where column_constraint is:" -msgstr "d�r kolumnvillkor �r:" - -#: sql_help.c:1441 sql_help.c:1442 sql_help.c:1451 sql_help.c:1453 -#: sql_help.c:1457 -msgid "index_parameters" -msgstr "indexparametrar" - -#: sql_help.c:1443 sql_help.c:1460 -msgid "reftable" -msgstr "reftabell" - -#: sql_help.c:1444 sql_help.c:1461 -msgid "refcolumn" -msgstr "refkolumn" - -#: sql_help.c:1447 -msgid "and table_constraint is:" -msgstr "och tabellvillkor �r:" - -#: sql_help.c:1455 -msgid "exclude_element" -msgstr "" - -#: sql_help.c:1464 -msgid "and like_option is:" -msgstr "" - -#: sql_help.c:1465 -msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" -msgstr "" - -#: sql_help.c:1469 -msgid "exclude_element in an EXCLUDE constraint is:" -msgstr "" - -#: sql_help.c:1501 -msgid "directory" -msgstr "katalog" - -#: sql_help.c:1513 -#, fuzzy -msgid "parser_name" -msgstr "Anv�ndarnamn" - -#: sql_help.c:1514 -msgid "source_config" -msgstr "" - -#: sql_help.c:1543 -#, fuzzy -msgid "start_function" -msgstr "funktion" - -#: sql_help.c:1544 -#, fuzzy -msgid "gettoken_function" -msgstr "ta bort en funktion" - -#: sql_help.c:1545 -#, fuzzy -msgid "end_function" -msgstr "funktion" - -#: sql_help.c:1546 -#, fuzzy -msgid "lextypes_function" -msgstr "funktion" - -#: sql_help.c:1547 -#, fuzzy -msgid "headline_function" -msgstr "funktion" - -#: sql_help.c:1559 -#, fuzzy -msgid "init_function" -msgstr "funktion" - -#: sql_help.c:1560 -#, fuzzy -msgid "lexize_function" -msgstr "funktion" - -#: sql_help.c:1611 -msgid "attribute_name" -msgstr "attributnamn" - -#: sql_help.c:1614 -#, fuzzy -msgid "label" -msgstr "tabell" - -#: sql_help.c:1616 -msgid "input_function" -msgstr "inmatningsfunktion" - -#: sql_help.c:1617 -msgid "output_function" -msgstr "utmatningsfunktion" - -#: sql_help.c:1618 -msgid "receive_function" -msgstr "mottagarfunktion" - -#: sql_help.c:1619 -msgid "send_function" -msgstr "s�ndfunktion" - -#: sql_help.c:1620 -msgid "type_modifier_input_function" -msgstr "" - -#: sql_help.c:1621 -msgid "type_modifier_output_function" -msgstr "" - -#: sql_help.c:1622 -#, fuzzy -msgid "analyze_function" -msgstr "funktion" - -#: sql_help.c:1623 -msgid "internallength" -msgstr "internl�ngd" - -#: sql_help.c:1624 -msgid "alignment" -msgstr "justering" - -#: sql_help.c:1625 -msgid "storage" -msgstr "lagring" - -#: sql_help.c:1626 -msgid "like_type" -msgstr "" - -#: sql_help.c:1627 -msgid "category" -msgstr "" - -#: sql_help.c:1628 -msgid "preferred" -msgstr "" - -#: sql_help.c:1629 -msgid "default" -msgstr "standard" - -#: sql_help.c:1630 -msgid "element" -msgstr "element" - -#: sql_help.c:1631 -msgid "delimiter" -msgstr "avskiljare" - -#: sql_help.c:1723 sql_help.c:2463 sql_help.c:2466 sql_help.c:2469 -#: sql_help.c:2473 sql_help.c:2662 sql_help.c:2665 sql_help.c:2668 -#: sql_help.c:2672 sql_help.c:2719 sql_help.c:2814 sql_help.c:2817 -#: sql_help.c:2820 sql_help.c:2824 -msgid "alias" -msgstr "alias" - -#: sql_help.c:1724 -msgid "using_list" -msgstr "using-lista" - -#: sql_help.c:1726 sql_help.c:2053 sql_help.c:2203 sql_help.c:2726 -msgid "cursor_name" -msgstr "mark�rnamn" - -#: sql_help.c:1727 sql_help.c:2162 sql_help.c:2727 -msgid "output_expression" -msgstr "utdatauttryck" - -#: sql_help.c:1728 sql_help.c:2163 sql_help.c:2447 sql_help.c:2514 -#: sql_help.c:2646 sql_help.c:2728 sql_help.c:2798 -msgid "output_name" -msgstr "utdatanamn" - -#: sql_help.c:1744 -msgid "code" -msgstr "kod" - -#: sql_help.c:2013 -msgid "parameter" -msgstr "parameter" - -#: sql_help.c:2026 sql_help.c:2027 sql_help.c:2222 -msgid "statement" -msgstr "sats" - -#: sql_help.c:2052 sql_help.c:2202 -msgid "direction" -msgstr "riktning" - -#: sql_help.c:2054 -msgid "where direction can be empty or one of:" -msgstr "d�r riktning kan vara tom eller en av:" - -#: sql_help.c:2055 sql_help.c:2056 sql_help.c:2057 sql_help.c:2058 -#: sql_help.c:2059 sql_help.c:2457 sql_help.c:2459 sql_help.c:2525 -#: sql_help.c:2527 sql_help.c:2656 sql_help.c:2658 sql_help.c:2757 -#: sql_help.c:2759 sql_help.c:2808 sql_help.c:2810 -msgid "count" -msgstr "antal" - -#: sql_help.c:2124 sql_help.c:2353 -msgid "sequence_name" -msgstr "sekvensnamn" - -#: sql_help.c:2135 sql_help.c:2364 -msgid "arg_name" -msgstr "arg_namn" - -#: sql_help.c:2136 sql_help.c:2365 -msgid "arg_type" -msgstr "arg_typ" - -#: sql_help.c:2141 sql_help.c:2370 -msgid "loid" -msgstr "" - -#: sql_help.c:2171 sql_help.c:2211 sql_help.c:2705 -msgid "channel" -msgstr "" - -#: sql_help.c:2193 -msgid "lockmode" -msgstr "l�sl�ge" - -#: sql_help.c:2194 -msgid "where lockmode is one of:" -msgstr "d�r l�sl�ge �r en av:" - -#: sql_help.c:2212 -msgid "payload" -msgstr "" - -#: sql_help.c:2238 -msgid "old_role" -msgstr "gammal_roll" - -#: sql_help.c:2239 -msgid "new_role" -msgstr "ny_roll" - -#: sql_help.c:2255 sql_help.c:2400 sql_help.c:2408 -msgid "savepoint_name" -msgstr "sparpunktnamn" - -#: sql_help.c:2444 sql_help.c:2511 sql_help.c:2643 sql_help.c:2795 -msgid "with_query" -msgstr "" - -#: sql_help.c:2448 sql_help.c:2479 sql_help.c:2481 sql_help.c:2516 -#: sql_help.c:2647 sql_help.c:2678 sql_help.c:2680 sql_help.c:2799 -#: sql_help.c:2830 sql_help.c:2832 -msgid "from_item" -msgstr "fr�nval" - -#: sql_help.c:2452 sql_help.c:2520 sql_help.c:2651 sql_help.c:2803 -msgid "window_name" -msgstr "" - -#: sql_help.c:2453 sql_help.c:2521 sql_help.c:2652 sql_help.c:2804 -msgid "window_definition" -msgstr "" - -#: sql_help.c:2454 sql_help.c:2465 sql_help.c:2487 sql_help.c:2522 -#: sql_help.c:2653 sql_help.c:2664 sql_help.c:2686 sql_help.c:2805 -#: sql_help.c:2816 sql_help.c:2838 -msgid "select" -msgstr "select" - -#: sql_help.c:2461 sql_help.c:2660 sql_help.c:2812 -msgid "where from_item can be one of:" -msgstr "d�r fr�nval kan vara en av:" - -#: sql_help.c:2464 sql_help.c:2467 sql_help.c:2470 sql_help.c:2474 -#: sql_help.c:2663 sql_help.c:2666 sql_help.c:2669 sql_help.c:2673 -#: sql_help.c:2815 sql_help.c:2818 sql_help.c:2821 sql_help.c:2825 -msgid "column_alias" -msgstr "kolumnalias" - -#: sql_help.c:2468 sql_help.c:2485 sql_help.c:2489 sql_help.c:2667 -#: sql_help.c:2684 sql_help.c:2688 sql_help.c:2819 sql_help.c:2836 -#: sql_help.c:2840 -msgid "with_query_name" -msgstr "" - -#: sql_help.c:2472 sql_help.c:2477 sql_help.c:2671 sql_help.c:2676 -#: sql_help.c:2823 sql_help.c:2828 -msgid "argument" -msgstr "argument" - -#: sql_help.c:2475 sql_help.c:2478 sql_help.c:2674 sql_help.c:2677 -#: sql_help.c:2826 sql_help.c:2829 -msgid "column_definition" -msgstr "kolumndefinition" - -#: sql_help.c:2480 sql_help.c:2679 sql_help.c:2831 -msgid "join_type" -msgstr "join-typ" - -#: sql_help.c:2482 sql_help.c:2681 sql_help.c:2833 -msgid "join_condition" -msgstr "join-villkor" - -#: sql_help.c:2483 sql_help.c:2682 sql_help.c:2834 -msgid "join_column" -msgstr "join-kolumn" - -#: sql_help.c:2484 sql_help.c:2683 sql_help.c:2835 -msgid "and with_query is:" -msgstr "" - -#: sql_help.c:2515 -msgid "new_table" -msgstr "ny_tabell" - -#: sql_help.c:2540 -msgid "timezone" -msgstr "tidszon" - -#: sql_help.c:2724 -msgid "from_list" -msgstr "" - -#: sql_help.c:2755 -msgid "sort_expression" -msgstr "sorteringsuttryck" - -#: ../../port/exec.c:125 ../../port/exec.c:239 ../../port/exec.c:282 -#, c-format -msgid "could not identify current directory: %s" -msgstr "kunde inte identifiera aktuell katalog: %s" - -#: ../../port/exec.c:144 -#, c-format -msgid "invalid binary \"%s\"" -msgstr "ogiltigt bin�r \"%s\"" - -#: ../../port/exec.c:193 -#, c-format -msgid "could not read binary \"%s\"" -msgstr "kunde inte l�sa bin�ren \"%s\"" - -#: ../../port/exec.c:200 -#, c-format -msgid "could not find a \"%s\" to execute" -msgstr "kunde inte hitta en \"%s\" att k�ra" - -#: ../../port/exec.c:255 ../../port/exec.c:291 -#, c-format -msgid "could not change directory to \"%s\"" -msgstr "kunde inte byta katalog till \"%s\"" - -#: ../../port/exec.c:270 -#, c-format -msgid "could not read symbolic link \"%s\"" -msgstr "kunde inte l�sa symbolisk l�nk \"%s\"" - -#: ../../port/exec.c:516 -#, c-format -msgid "child process exited with exit code %d" -msgstr "barnprocess avslutade med kod %d" - -#: ../../port/exec.c:520 -#, c-format -msgid "child process was terminated by exception 0x%X" -msgstr "barnprocess terminerades av fel 0x%X" - -#: ../../port/exec.c:529 -#, c-format -msgid "child process was terminated by signal %s" -msgstr "barnprocess terminerades av signal %s" - -#: ../../port/exec.c:532 -#, c-format -msgid "child process was terminated by signal %d" -msgstr "barnprocess terminerades av signal %d" - -#: ../../port/exec.c:536 -#, c-format -msgid "child process exited with unrecognized status %d" -msgstr "barnprocess avslutade med ok�nd statuskod %d" - -#~ msgid "ABORT [ WORK | TRANSACTION ]" -#~ msgstr "ABORT [ WORK | TRANSACTION ]" - -#~ msgid "" -#~ "ALTER AGGREGATE name ( type [ , ... ] ) RENAME TO new_name\n" -#~ "ALTER AGGREGATE name ( type [ , ... ] ) OWNER TO new_owner\n" -#~ "ALTER AGGREGATE name ( type [ , ... ] ) SET SCHEMA new_schema" -#~ msgstr "" -#~ "ALTER AGGREGATE namn ( typ [ , ... ] ) RENAME TO nytt_namn\n" -#~ "ALTER AGGREGATE name ( typ [ , ... ] ) OWNER TO ny_�gare\n" -#~ "ALTER AGGREGATE namn ( typ [ , ... ] ) SET SCHEMA nytt_schema" - -#~ msgid "" -#~ "ALTER CONVERSION name RENAME TO newname\n" -#~ "ALTER CONVERSION name OWNER TO newowner" -#~ msgstr "" -#~ "ALTER CONVERSION namn RENAME TO nytt_namn\n" -#~ "ALTER CONVERSION namn OWNER TO ny_�gare" - -#, fuzzy -#~ msgid "" -#~ "ALTER DATABASE name [ [ WITH ] option [ ... ] ]\n" -#~ "\n" -#~ "where option can be:\n" -#~ "\n" -#~ " CONNECTION LIMIT connlimit\n" -#~ "\n" -#~ "ALTER DATABASE name RENAME TO newname\n" -#~ "\n" -#~ "ALTER DATABASE name OWNER TO new_owner\n" -#~ "\n" -#~ "ALTER DATABASE name SET TABLESPACE new_tablespace\n" -#~ "\n" -#~ "ALTER DATABASE name SET configuration_parameter { TO | = } { value | " -#~ "DEFAULT }\n" -#~ "ALTER DATABASE name SET configuration_parameter FROM CURRENT\n" -#~ "ALTER DATABASE name RESET configuration_parameter\n" -#~ "ALTER DATABASE name RESET ALL" -#~ msgstr "" -#~ "ALTER DATABASE namn [ [ WITH ] alternativ [ ... ] ]\n" -#~ "\n" -#~ "d�r alternativ kan vara:\n" -#~ "\n" -#~ " CONNECTION LIMIT anslutningstak\n" -#~ "\n" -#~ "ALTER DATABASE namn SET parameter { TO | = } { v�rde | DEFAULT }\n" -#~ "ALTER DATABASE namn RESET parameter\n" -#~ "\n" -#~ "ALTER DATABASE namn RENAME TO nyttnamn\n" -#~ "\n" -#~ "ALTER DATABASE namn OWNER TO ny_�gare" - -#~ msgid "" -#~ "ALTER DOMAIN name\n" -#~ " { SET DEFAULT expression | DROP DEFAULT }\n" -#~ "ALTER DOMAIN name\n" -#~ " { SET | DROP } NOT NULL\n" -#~ "ALTER DOMAIN name\n" -#~ " ADD domain_constraint\n" -#~ "ALTER DOMAIN name\n" -#~ " DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n" -#~ "ALTER DOMAIN name\n" -#~ " OWNER TO new_owner \n" -#~ "ALTER DOMAIN name\n" -#~ " SET SCHEMA new_schema" -#~ msgstr "" -#~ "ALTER DOMAIN namn\n" -#~ " { SET DEFAULT uttryck | DROP DEFAULT }\n" -#~ "ALTER DOMAIN namn\n" -#~ " { SET | DROP } NOT NULL\n" -#~ "ALTER DOMAIN namn\n" -#~ " ADD domain_villkor (constraint)\n" -#~ "ALTER DOMAIN namn\n" -#~ " DROP CONSTRAINT villkorsnamn [ RESTRICT | CASCADE ]\n" -#~ "ALTER DOMAIN namn\n" -#~ " OWNER TO ny_�gare\n" -#~ "ALTER DOMAIN namn\n" -#~ " SET SCHEMA nytt_schema" - -#, fuzzy -#~ msgid "" -#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -#~ " action [ ... ] [ RESTRICT ]\n" -#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -#~ " RENAME TO new_name\n" -#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -#~ " OWNER TO new_owner\n" -#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -#~ " SET SCHEMA new_schema\n" -#~ "\n" -#~ "where action is one of:\n" -#~ "\n" -#~ " CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" -#~ " IMMUTABLE | STABLE | VOLATILE\n" -#~ " [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" -#~ " COST execution_cost\n" -#~ " ROWS result_rows\n" -#~ " SET configuration_parameter { TO | = } { value | DEFAULT }\n" -#~ " SET configuration_parameter FROM CURRENT\n" -#~ " RESET configuration_parameter\n" -#~ " RESET ALL" -#~ msgstr "" -#~ "ALTER FUNCTION namn ( [ [ arg_l�ge ] [ arg_namn ] arg_typ [, ...] ] )\n" -#~ " aktion [, ... ] [ RESTRICT ]\n" -#~ "ALTER FUNCTION namn ( [ [ arg_l�ge ] [ arg_namn ] arg_typ [, ...] ] )\n" -#~ " RENAME TO nytt_namn\n" -#~ "ALTER FUNCTION namn ( [ [ arg_l�ge ] [ arg_namn ] arg_typ [, ...] ] )\n" -#~ " OWNER TO ny_�gare\n" -#~ "ALTER FUNCTION namn ( [ [ arg_l�ge ] [ arg_namn ] arg_typ [, ...] ] )\n" -#~ " SET SCHEMA nytt_schema\n" -#~ "\n" -#~ "d�r aktion �r en av:\n" -#~ "\n" -#~ " CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" -#~ " IMMUTABLE | STABLE | VOLATILE\n" -#~ " [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER" - -#~ msgid "" -#~ "ALTER GROUP groupname ADD USER username [, ... ]\n" -#~ "ALTER GROUP groupname DROP USER username [, ... ]\n" -#~ "\n" -#~ "ALTER GROUP groupname RENAME TO newname" -#~ msgstr "" -#~ "ALTER GROUP gruppnamn ADD USER anv�ndarnamn [, ... ]\n" -#~ "ALTER GROUP gruppnamn DROP USER anv�ndarnamn [, ... ]\n" -#~ "\n" -#~ "ALTER GROUP gruppnamn RENAME TO nyttnamn" - -#~ msgid "" -#~ "ALTER INDEX name RENAME TO new_name\n" -#~ "ALTER INDEX name SET TABLESPACE tablespace_name\n" -#~ "ALTER INDEX name SET ( storage_parameter = value [, ... ] )\n" -#~ "ALTER INDEX name RESET ( storage_parameter [, ... ] )" -#~ msgstr "" -#~ "ALTER INDEX namn RENAME TO nytt_namn\n" -#~ "ALTER INDEX namn SET TABLESPACE tabellutrymmesnamn\n" -#~ "ALTER INDEX namn SET ( lagringsparameter = v�rde [, ... ] )\n" -#~ "ALTER INDEX namn RESET ( lagringsparameter [, ... ] )" - -#, fuzzy -#~ msgid "" -#~ "ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO newname\n" -#~ "ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO new_owner" -#~ msgstr "" -#~ "ALTER SCHEMA namn RENAME TO nytt_namn\n" -#~ "ALTER SCHEMA namn OWNER TO ny_�gare" - -#~ msgid "" -#~ "ALTER OPERATOR name ( { lefttype | NONE } , { righttype | NONE } ) OWNER " -#~ "TO newowner" -#~ msgstr "" -#~ "ALTER OPERATOR namn ( { v�nster_typ | NONE }, { h�ger_typ | NONE } ) " -#~ "OWNER TO ny_�gare" - -#~ msgid "" -#~ "ALTER OPERATOR CLASS name USING index_method RENAME TO newname\n" -#~ "ALTER OPERATOR CLASS name USING index_method OWNER TO newowner" -#~ msgstr "" -#~ "ALTER OPERATOR CLASS namn USING indexmetod RENAME TO nytt_namn\n" -#~ "ALTER OPERATOR CLASS namn USING indexmetod OWNER TO ny_�gare" - -#, fuzzy -#~ msgid "" -#~ "ALTER ROLE name [ [ WITH ] option [ ... ] ]\n" -#~ "\n" -#~ "where option can be:\n" -#~ " \n" -#~ " SUPERUSER | NOSUPERUSER\n" -#~ " | CREATEDB | NOCREATEDB\n" -#~ " | CREATEROLE | NOCREATEROLE\n" -#~ " | CREATEUSER | NOCREATEUSER\n" -#~ " | INHERIT | NOINHERIT\n" -#~ " | LOGIN | NOLOGIN\n" -#~ " | CONNECTION LIMIT connlimit\n" -#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -#~ " | VALID UNTIL 'timestamp' \n" -#~ "\n" -#~ "ALTER ROLE name RENAME TO newname\n" -#~ "\n" -#~ "ALTER ROLE name SET configuration_parameter { TO | = } { value | " -#~ "DEFAULT }\n" -#~ "ALTER ROLE name SET configuration_parameter FROM CURRENT\n" -#~ "ALTER ROLE name RESET configuration_parameter\n" -#~ "ALTER ROLE name RESET ALL" -#~ msgstr "" -#~ "ALTER ROLE namn [ [ WITH ] alternativ [ ... ] ]\n" -#~ "\n" -#~ "d�r alternativ kan vara:\n" -#~ " \n" -#~ " SUPERUSER | NOSUPERUSER\n" -#~ " | CREATEDB | NOCREATEDB\n" -#~ " | CREATEROLE | NOCREATEROLE\n" -#~ " | CREATEUSER | NOCREATEUSER\n" -#~ " | INHERIT | NOINHERIT\n" -#~ " | LOGIN | NOLOGIN\n" -#~ " | CONNECTION LIMIT anslutningstak\n" -#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'l�senord'\n" -#~ " | VALID UNTIL 'tidsst�mpel' \n" -#~ "\n" -#~ "ALTER ROLE namn RENAME TO nytt_namn\n" -#~ "\n" -#~ "ALTER ROLE namn SET konfigurationsparameter { TO | = } { v�rde | " -#~ "DEFAULT }\n" -#~ "ALTER ROLE namn RESET konfigurationsparameter" - -#~ msgid "" -#~ "ALTER SCHEMA name RENAME TO newname\n" -#~ "ALTER SCHEMA name OWNER TO newowner" -#~ msgstr "" -#~ "ALTER SCHEMA namn RENAME TO nytt_namn\n" -#~ "ALTER SCHEMA namn OWNER TO ny_�gare" - -#, fuzzy -#~ msgid "" -#~ "ALTER SEQUENCE name [ INCREMENT [ BY ] increment ]\n" -#~ " [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO " -#~ "MAXVALUE ]\n" -#~ " [ START [ WITH ] start ]\n" -#~ " [ RESTART [ [ WITH ] restart ] ]\n" -#~ " [ CACHE cache ] [ [ NO ] CYCLE ]\n" -#~ " [ OWNED BY { table.column | NONE } ]\n" -#~ "ALTER SEQUENCE name OWNER TO new_owner\n" -#~ "ALTER SEQUENCE name RENAME TO new_name\n" -#~ "ALTER SEQUENCE name SET SCHEMA new_schema" -#~ msgstr "" -#~ "ALTER SEQUENCE namn [ INCREMENT [ BY ] �kningsv�rde ]\n" -#~ " [ MINVALUE minv�rde | NO MINVALUE ] [ MAXVALUE maxv�rde | NO " -#~ "MAXVALUE ]\n" -#~ " [ RESTART [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]\n" -#~ " [ OWNED BY { tabell.kolumn | NONE } ]\n" -#~ "ALTER SEQUENCE namn SET SCHEMA nytt_schema" - -#, fuzzy -#~ msgid "" -#~ "ALTER TABLE [ ONLY ] name [ * ]\n" -#~ " action [, ... ]\n" -#~ "ALTER TABLE [ ONLY ] name [ * ]\n" -#~ " RENAME [ COLUMN ] column TO new_column\n" -#~ "ALTER TABLE name\n" -#~ " RENAME TO new_name\n" -#~ "ALTER TABLE name\n" -#~ " SET SCHEMA new_schema\n" -#~ "\n" -#~ "where action is one of:\n" -#~ "\n" -#~ " ADD [ COLUMN ] column type [ column_constraint [ ... ] ]\n" -#~ " DROP [ COLUMN ] column [ RESTRICT | CASCADE ]\n" -#~ " ALTER [ COLUMN ] column [ SET DATA ] TYPE type [ USING expression ]\n" -#~ " ALTER [ COLUMN ] column SET DEFAULT expression\n" -#~ " ALTER [ COLUMN ] column DROP DEFAULT\n" -#~ " ALTER [ COLUMN ] column { SET | DROP } NOT NULL\n" -#~ " ALTER [ COLUMN ] column SET STATISTICS integer\n" -#~ " ALTER [ COLUMN ] column SET STORAGE { PLAIN | EXTERNAL | EXTENDED | " -#~ "MAIN }\n" -#~ " ADD table_constraint\n" -#~ " DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n" -#~ " DISABLE TRIGGER [ trigger_name | ALL | USER ]\n" -#~ " ENABLE TRIGGER [ trigger_name | ALL | USER ]\n" -#~ " ENABLE REPLICA TRIGGER trigger_name\n" -#~ " ENABLE ALWAYS TRIGGER trigger_name\n" -#~ " DISABLE RULE rewrite_rule_name\n" -#~ " ENABLE RULE rewrite_rule_name\n" -#~ " ENABLE REPLICA RULE rewrite_rule_name\n" -#~ " ENABLE ALWAYS RULE rewrite_rule_name\n" -#~ " CLUSTER ON index_name\n" -#~ " SET WITHOUT CLUSTER\n" -#~ " SET WITH OIDS\n" -#~ " SET WITHOUT OIDS\n" -#~ " SET ( storage_parameter = value [, ... ] )\n" -#~ " RESET ( storage_parameter [, ... ] )\n" -#~ " INHERIT parent_table\n" -#~ " NO INHERIT parent_table\n" -#~ " OWNER TO new_owner\n" -#~ " SET TABLESPACE new_tablespace" -#~ msgstr "" -#~ "ALTER TABLE [ ONLY ] namn [ * ]\n" -#~ " aktion [, ... ]\n" -#~ "ALTER TABLE [ ONLY ] namn [ * ]\n" -#~ " RENAME [ COLUMN ] kolumn TO ny_kolumn\n" -#~ "ALTER TABLE namn\n" -#~ " RENAME TO nytt_namn\n" -#~ "ALTER TABLE namn\n" -#~ " SET SCHEMA nytt_schema\n" -#~ "\n" -#~ "d�r aktion �r en av:\n" -#~ "\n" -#~ " ADD [ COLUMN ] kolumn type [ kolumnvillkor [ ... ] ]\n" -#~ " DROP [ COLUMN ] kolumn [ RESTRICT | CASCADE ]\n" -#~ " ALTER [ COLUMN ] kolumn TYPE type [ USING uttryck ]\n" -#~ " ALTER [ COLUMN ] kolumn SET DEFAULT uttryck\n" -#~ " ALTER [ COLUMN ] kolumn DROP DEFAULT\n" -#~ " ALTER [ COLUMN ] kolumn { SET | DROP } NOT NULL\n" -#~ " ALTER [ COLUMN ] kolumn SET STATISTICS heltal\n" -#~ " ALTER [ COLUMN ] kolumn SET STORAGE { PLAIN | EXTERNAL | EXTENDED | " -#~ "MAIN }\n" -#~ " ADD tabellvillkor\n" -#~ " DROP CONSTRAINT villkorsnamn [ RESTRICT | CASCADE ]\n" -#~ " DISABLE TRIGGER [ utl�sarnamn | ALL | USER ]\n" -#~ " ENABLE TRIGGER [ utl�sarnamn | ALL | USER ]\n" -#~ " CLUSTER ON indexnamn\n" -#~ " SET WITHOUT CLUSTER\n" -#~ " SET WITHOUT OIDS\n" -#~ " SET ( lagringsparameter = v�rde [, ... ] )\n" -#~ " RESET ( lagringsparameter [, ... ] )\n" -#~ " INHERIT f�r�ldertabell\n" -#~ " NO INHERIT f�r�ldertabell\n" -#~ " OWNER TO ny_�gare\n" -#~ " SET TABLESPACE tabellutrymme" - -#~ msgid "" -#~ "ALTER TABLESPACE name RENAME TO newname\n" -#~ "ALTER TABLESPACE name OWNER TO newowner" -#~ msgstr "" -#~ "ALTER TABLESPACE namn RENAME TO nytt_namn\n" -#~ "ALTER TABLESPACE namn OWNER TO ny_�gare" - -#~ msgid "ALTER TEXT SEARCH PARSER name RENAME TO newname" -#~ msgstr "ALTER TEXT SEARCH PARSER namn RENAME TO nyttnamn" - -#~ msgid "ALTER TEXT SEARCH TEMPLATE name RENAME TO newname" -#~ msgstr "ALTER TEXT SEARCH TEMPLATE namn RENAME TO nyttnamn" - -#~ msgid "ALTER TRIGGER name ON table RENAME TO newname" -#~ msgstr "ALTER TRIGGER namb ON tabell RENAME TO nyttnamn" - -#~ msgid "" -#~ "ALTER TYPE name RENAME TO new_name\n" -#~ "ALTER TYPE name OWNER TO new_owner \n" -#~ "ALTER TYPE name SET SCHEMA new_schema" -#~ msgstr "" -#~ "ALTER TYPE namn RENAME TO nytt_namn\n" -#~ "ALTER TYPE namn OWNER TO ny_�gare \n" -#~ "ALTER TYPE namn SET SCHEMA nytt_schema" - -#, fuzzy -#~ msgid "" -#~ "ALTER USER name [ [ WITH ] option [ ... ] ]\n" -#~ "\n" -#~ "where option can be:\n" -#~ " \n" -#~ " SUPERUSER | NOSUPERUSER\n" -#~ " | CREATEDB | NOCREATEDB\n" -#~ " | CREATEROLE | NOCREATEROLE\n" -#~ " | CREATEUSER | NOCREATEUSER\n" -#~ " | INHERIT | NOINHERIT\n" -#~ " | LOGIN | NOLOGIN\n" -#~ " | CONNECTION LIMIT connlimit\n" -#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -#~ " | VALID UNTIL 'timestamp' \n" -#~ "\n" -#~ "ALTER USER name RENAME TO newname\n" -#~ "\n" -#~ "ALTER USER name SET configuration_parameter { TO | = } { value | " -#~ "DEFAULT }\n" -#~ "ALTER USER name SET configuration_parameter FROM CURRENT\n" -#~ "ALTER USER name RESET configuration_parameter\n" -#~ "ALTER USER name RESET ALL" -#~ msgstr "" -#~ "ALTER USER namn [ [ WITH ] alternativ [ ... ] ]\n" -#~ "\n" -#~ "d�r alternativ kan vara:\n" -#~ "\n" -#~ " SUPERUSER | NOSUPERUSER\n" -#~ " | CREATEDB | NOCREATEDB\n" -#~ " | CREATEROLE | NOCREATEROLE\n" -#~ " | CREATEUSER | NOCREATEUSER\n" -#~ " | INHERIT | NOINHERIT\n" -#~ " | LOGIN | NOLOGIN\n" -#~ " | CONNECTION LIMIT anslutningstak\n" -#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'l�senord' \n" -#~ " | VALID UNTIL 'tidsst�mpel'\n" -#~ "\n" -#~ "ALTER USER namn RENAME TO nytt_namn\n" -#~ "\n" -#~ "ALTER USER namn SET konfigurationsparameter { TO | = } { v�rde | " -#~ "DEFAULT }\n" -#~ "ALTER USER namn RESET konfigurationsparameter" - -#~ msgid "" -#~ "ALTER VIEW name ALTER [ COLUMN ] column SET DEFAULT expression\n" -#~ "ALTER VIEW name ALTER [ COLUMN ] column DROP DEFAULT\n" -#~ "ALTER VIEW name OWNER TO new_owner\n" -#~ "ALTER VIEW name RENAME TO new_name\n" -#~ "ALTER VIEW name SET SCHEMA new_schema" -#~ msgstr "" -#~ "ALTER VIEW namn ALTER [ COLUMN ] kolumn SET DEFAULT uttryck\n" -#~ "ALTER VIEW namn ALTER [ COLUMN ] kolumn DROP DEFAULT\n" -#~ "ALTER VIEW namn OWNER TO ny_�gare\n" -#~ "ALTER VIEW namn RENAME TO nytt_namn\n" -#~ "ALTER VIEW namn SET SCHEMA nytt_schema" - -#~ msgid "ANALYZE [ VERBOSE ] [ table [ ( column [, ...] ) ] ]" -#~ msgstr "ANALYZE [ VERBOSE ] [ tabell [ ( kolumn [, ...] ) ] ]" - -#~ msgid "" -#~ "BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]\n" -#~ "\n" -#~ "where transaction_mode is one of:\n" -#~ "\n" -#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | " -#~ "READ UNCOMMITTED }\n" -#~ " READ WRITE | READ ONLY" -#~ msgstr "" -#~ "BEGIN [ WORK | TRANSACTION ] [ transaktionsl�ge [, ...] ]\n" -#~ "\n" -#~ "d�r transaktionsl�ge �r en av:\n" -#~ "\n" -#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | " -#~ "READ UNCOMMITTED }\n" -#~ " READ WRITE | READ ONLY" - -#~ msgid "CHECKPOINT" -#~ msgstr "CHECKPOINT" - -#~ msgid "CLOSE { name | ALL }" -#~ msgstr "CLOSE { namn | ALL }" - -#~ msgid "" -#~ "CLUSTER [VERBOSE] tablename [ USING indexname ]\n" -#~ "CLUSTER [VERBOSE]" -#~ msgstr "" -#~ "CLUSTER [VERBOSE] tabellnamn [ USING indexnamn ]\n" -#~ "CLUSTER [VERBOSE]" - -#, fuzzy -#~ msgid "" -#~ "COMMENT ON\n" -#~ "{\n" -#~ " TABLE object_name |\n" -#~ " COLUMN table_name.column_name |\n" -#~ " AGGREGATE agg_name (agg_type [, ...] ) |\n" -#~ " CAST (sourcetype AS targettype) |\n" -#~ " CONSTRAINT constraint_name ON table_name |\n" -#~ " CONVERSION object_name |\n" -#~ " DATABASE object_name |\n" -#~ " DOMAIN object_name |\n" -#~ " FUNCTION func_name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) |\n" -#~ " INDEX object_name |\n" -#~ " LARGE OBJECT large_object_oid |\n" -#~ " OPERATOR op (leftoperand_type, rightoperand_type) |\n" -#~ " OPERATOR CLASS object_name USING index_method |\n" -#~ " OPERATOR FAMILY object_name USING index_method |\n" -#~ " [ PROCEDURAL ] LANGUAGE object_name |\n" -#~ " ROLE object_name |\n" -#~ " RULE rule_name ON table_name |\n" -#~ " SCHEMA object_name |\n" -#~ " SEQUENCE object_name |\n" -#~ " TABLESPACE object_name |\n" -#~ " TEXT SEARCH CONFIGURATION object_name |\n" -#~ " TEXT SEARCH DICTIONARY object_name |\n" -#~ " TEXT SEARCH PARSER object_name |\n" -#~ " TEXT SEARCH TEMPLATE object_name |\n" -#~ " TRIGGER trigger_name ON table_name |\n" -#~ " TYPE object_name |\n" -#~ " VIEW object_name\n" -#~ "} IS 'text'" -#~ msgstr "" -#~ "COMMENT ON\n" -#~ "{\n" -#~ " TABLE objektname |\n" -#~ " COLUMN tabellnamn.kolumnnamn |\n" -#~ " AGGREGATE agg_namn (agg_typ) |\n" -#~ " CAST (k�lltyp AS m�ltyp) |\n" -#~ " CONSTRAINT villkorsnamn ON tabellnamn |\n" -#~ " CONVERSION objektnamn |\n" -#~ " DATABASE objektnamn |\n" -#~ " DOMAIN objektnamn |\n" -#~ " FUNCTION funk_namn ( [ [ arg_l�ge ] [ arg_namn ] arg_typ [, ...] ] ) |\n" -#~ " INDEX objektnamn |\n" -#~ " LARGE OBJECT stort_objekt_oid |\n" -#~ " OPERATOR op (v�nster operandstyp, h�ger operandstyp) |\n" -#~ " OPERATOR CLASS objektnamn USING indexmetod |\n" -#~ " [ PROCEDURAL ] LANGUAGE objektnamn |\n" -#~ " ROLE objektnamn |\n" -#~ " RULE regelnamn ON tabellnamn |\n" -#~ " SCHEMA objektnamn |\n" -#~ " SEQUENCE objektnamn |\n" -#~ " TRIGGER utl�sarnamn ON tabellnamn |\n" -#~ " TYPE objektnamn |\n" -#~ " VIEW objektnamn\n" -#~ "} IS 'text'" - -#~ msgid "COMMIT [ WORK | TRANSACTION ]" -#~ msgstr "COMMIT [ WORK | TRANSACTION ]" - -#~ msgid "COMMIT PREPARED transaction_id" -#~ msgstr "COMMIT PREPARED transaktions-id" - -#, fuzzy -#~ msgid "" -#~ "COPY tablename [ ( column [, ...] ) ]\n" -#~ " FROM { 'filename' | STDIN }\n" -#~ " [ [ WITH ] \n" -#~ " [ BINARY ]\n" -#~ " [ OIDS ]\n" -#~ " [ DELIMITER [ AS ] 'delimiter' ]\n" -#~ " [ NULL [ AS ] 'null string' ]\n" -#~ " [ CSV [ HEADER ]\n" -#~ " [ QUOTE [ AS ] 'quote' ] \n" -#~ " [ ESCAPE [ AS ] 'escape' ]\n" -#~ " [ FORCE NOT NULL column [, ...] ]\n" -#~ "\n" -#~ "COPY { tablename [ ( column [, ...] ) ] | ( query ) }\n" -#~ " TO { 'filename' | STDOUT }\n" -#~ " [ [ WITH ] \n" -#~ " [ BINARY ]\n" -#~ " [ OIDS ]\n" -#~ " [ DELIMITER [ AS ] 'delimiter' ]\n" -#~ " [ NULL [ AS ] 'null string' ]\n" -#~ " [ CSV [ HEADER ]\n" -#~ " [ QUOTE [ AS ] 'quote' ] \n" -#~ " [ ESCAPE [ AS ] 'escape' ]\n" -#~ " [ FORCE QUOTE column [, ...] ]" -#~ msgstr "" -#~ "COPY tabellnamn [ ( kolumn [, ...] ) ]\n" -#~ " FROM { 'filnamn' | STDIN }\n" -#~ " [ [ WITH ] \n" -#~ " [ BINARY ] \n" -#~ " [ OIDS ]\n" -#~ " [ DELIMITER [ AS ] 'avdelare' ]\n" -#~ " [ NULL [ AS ] 'null-str�ng' ] ]\n" -#~ " [ CSV [ HEADER ]\n" -#~ " [ QUOTE [ AS ] 'citat' ]\n" -#~ " [ ESCAPE [ AS ] 'escape' ]\n" -#~ " [ FORCE NOT NULL kolumn [, ...] ]\n" -#~ "\n" -#~ "COPY { tabellnamn [ ( kolumn [, ...] ) ] | ( fr�ga ) }\n" -#~ " TO { 'filnamn' | STDOUT }\n" -#~ " [ [ WITH ] \n" -#~ " [ BINARY ]\n" -#~ " [ HEADER ]\n" -#~ " [ OIDS ]\n" -#~ " [ DELIMITER [ AS ] 'avdelare' ]\n" -#~ " [ NULL [ AS ] 'null-str�ng' ] ]\n" -#~ " [ CSV [ HEADER ]\n" -#~ " [ QUOTE [ AS ] 'citat' ]\n" -#~ " [ ESCAPE [ AS ] 'escape' ]\n" -#~ " [ FORCE QUOTE kolumn [, ...] ]" - -#~ msgid "" -#~ "CREATE AGGREGATE name ( input_data_type [ , ... ] ) (\n" -#~ " SFUNC = sfunc,\n" -#~ " STYPE = state_data_type\n" -#~ " [ , FINALFUNC = ffunc ]\n" -#~ " [ , INITCOND = initial_condition ]\n" -#~ " [ , SORTOP = sort_operator ]\n" -#~ ")\n" -#~ "\n" -#~ "or the old syntax\n" -#~ "\n" -#~ "CREATE AGGREGATE name (\n" -#~ " BASETYPE = base_type,\n" -#~ " SFUNC = sfunc,\n" -#~ " STYPE = state_data_type\n" -#~ " [ , FINALFUNC = ffunc ]\n" -#~ " [ , INITCOND = initial_condition ]\n" -#~ " [ , SORTOP = sort_operator ]\n" -#~ ")" -#~ msgstr "" -#~ "CREATE AGGREGATE namn ( indatatyp [ , ... ] ) (\n" -#~ " SFUNC = sfunc,\n" -#~ " STYPE = tillst�ndsdatatyp\n" -#~ " [ , FINALFUNC = ffunc ]\n" -#~ " [ , INITCOND = startv�rde ]\n" -#~ " [ , SORTOP = sorteringsoperator ]\n" -#~ ")\n" -#~ "\n" -#~ "eller den gamla syntaxen\n" -#~ "\n" -#~ "CREATE AGGREGATE namn (\n" -#~ " BASETYPE = indatatyp\n" -#~ " SFUNC = sfunc,\n" -#~ " STYPE = tillst�ndsdatatyp\n" -#~ " [ , FINALFUNC = ffunc ]\n" -#~ " [ , INITCOND = startv�rde ]\n" -#~ " [ , SORTOP = sorteringsoperator ]\n" -#~ ")" - -#~ msgid "" -#~ "CREATE CAST (sourcetype AS targettype)\n" -#~ " WITH FUNCTION funcname (argtypes)\n" -#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n" -#~ "\n" -#~ "CREATE CAST (sourcetype AS targettype)\n" -#~ " WITHOUT FUNCTION\n" -#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n" -#~ "\n" -#~ "CREATE CAST (sourcetype AS targettype)\n" -#~ " WITH INOUT\n" -#~ " [ AS ASSIGNMENT | AS IMPLICIT ]" -#~ msgstr "" -#~ "CREATE CAST (k�lltyp AS m�ltyp)\n" -#~ " WITH FUNCTION funknamn (argtyper)\n" -#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n" -#~ "\n" -#~ "CREATE CAST (k�lltyp AS m�ltyp)\n" -#~ " WITHOUT FUNCTION\n" -#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n" -#~ "\n" -#~ "CREATE CAST (k�lltyp AS m�ltyp)\n" -#~ " WITH INOUT\n" -#~ " [ AS ASSIGNMENT | AS IMPLICIT ]" - -#~ msgid "" -#~ "CREATE CONSTRAINT TRIGGER name\n" -#~ " AFTER event [ OR ... ]\n" -#~ " ON table_name\n" -#~ " [ FROM referenced_table_name ]\n" -#~ " { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY " -#~ "DEFERRED } }\n" -#~ " FOR EACH ROW\n" -#~ " EXECUTE PROCEDURE funcname ( arguments )" -#~ msgstr "" -#~ "CREATE CONSTRAINT TRIGGER namn \n" -#~ " AFTER h�ndelse [ OR ... ]\n" -#~ " ON tabellnamn\n" -#~ " [ FROM refererat_tabellnamn ]\n" -#~ " { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY " -#~ "DEFERRED } }\n" -#~ " FOR EACH ROW\n" -#~ " EXECUTE PROCEDURE funktionsnamn ( argument )" - -#~ msgid "" -#~ "CREATE [ DEFAULT ] CONVERSION name\n" -#~ " FOR source_encoding TO dest_encoding FROM funcname" -#~ msgstr "" -#~ "CREATE [ DEFAULT ] CONVERSION namn\n" -#~ " FOR k�llkodning TO m�lkodning FROM funknamn" - -#, fuzzy -#~ msgid "" -#~ "CREATE DATABASE name\n" -#~ " [ [ WITH ] [ OWNER [=] dbowner ]\n" -#~ " [ TEMPLATE [=] template ]\n" -#~ " [ ENCODING [=] encoding ]\n" -#~ " [ LC_COLLATE [=] lc_collate ]\n" -#~ " [ LC_CTYPE [=] lc_ctype ]\n" -#~ " [ TABLESPACE [=] tablespace ]\n" -#~ " [ CONNECTION LIMIT [=] connlimit ] ]" -#~ msgstr "" -#~ "CREATE DATABASE namn\n" -#~ " [ [ WITH ] [ OWNER [=] db-�gare ]\n" -#~ " [ TEMPLATE [=] mall ]\n" -#~ " [ ENCODING [=] kodning ]\n" -#~ " [ TABLESPACE [=] tabellutrymme ] ]\n" -#~ " [ CONNECTION LIMIT [=] anslutningstak ] ]" - -#~ msgid "" -#~ "CREATE DOMAIN name [ AS ] data_type\n" -#~ " [ DEFAULT expression ]\n" -#~ " [ constraint [ ... ] ]\n" -#~ "\n" -#~ "where constraint is:\n" -#~ "\n" -#~ "[ CONSTRAINT constraint_name ]\n" -#~ "{ NOT NULL | NULL | CHECK (expression) }" -#~ msgstr "" -#~ "CREATE DOMAIN namn [ AS ] datatyp\n" -#~ " [ DEFAULT uttryck ]\n" -#~ " [ villkor [ ... ] ]\n" -#~ "\n" -#~ "d�r villkor �r:\n" -#~ "\n" -#~ "[ CONSTRAINT villkorsnamn ]\n" -#~ "{ NOT NULL | NULL | CHECK (uttryck) }" - -#, fuzzy -#~ msgid "" -#~ "CREATE [ OR REPLACE ] FUNCTION\n" -#~ " name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } defexpr ] " -#~ "[, ...] ] )\n" -#~ " [ RETURNS rettype\n" -#~ " | RETURNS TABLE ( colname coltype [, ...] ) ]\n" -#~ " { LANGUAGE langname\n" -#~ " | WINDOW\n" -#~ " | IMMUTABLE | STABLE | VOLATILE\n" -#~ " | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" -#~ " | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" -#~ " | COST execution_cost\n" -#~ " | ROWS result_rows\n" -#~ " | SET configuration_parameter { TO value | = value | FROM CURRENT }\n" -#~ " | AS 'definition'\n" -#~ " | AS 'obj_file', 'link_symbol'\n" -#~ " } ...\n" -#~ " [ WITH ( attribute [, ...] ) ]" -#~ msgstr "" -#~ "CREATE [ OR REPLACE ] FUNCTION\n" -#~ " namn ( [ [ arg_l�ge ] [ arg_namn ] arg_typ [, ...] ] )\n" -#~ " [ RETURNS rettyp ]\n" -#~ " { LANGUAGE spr�knamn\n" -#~ " | IMMUTABLE | STABLE | VOLATILE\n" -#~ " | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" -#~ " | [EXTERNAL] SECURITY INVOKER | [EXTERNAL] SECURITY DEFINER\n" -#~ " | AS 'definition'\n" -#~ " | AS 'obj-fil', 'l�nksymbol'\n" -#~ " } ...\n" -#~ " [ WITH ( attribut [, ...] ) ]" - -#~ msgid "" -#~ "CREATE GROUP name [ [ WITH ] option [ ... ] ]\n" -#~ "\n" -#~ "where option can be:\n" -#~ " \n" -#~ " SUPERUSER | NOSUPERUSER\n" -#~ " | CREATEDB | NOCREATEDB\n" -#~ " | CREATEROLE | NOCREATEROLE\n" -#~ " | CREATEUSER | NOCREATEUSER\n" -#~ " | INHERIT | NOINHERIT\n" -#~ " | LOGIN | NOLOGIN\n" -#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -#~ " | VALID UNTIL 'timestamp' \n" -#~ " | IN ROLE rolename [, ...]\n" -#~ " | IN GROUP rolename [, ...]\n" -#~ " | ROLE rolename [, ...]\n" -#~ " | ADMIN rolename [, ...]\n" -#~ " | USER rolename [, ...]\n" -#~ " | SYSID uid" -#~ msgstr "" -#~ "CREATE GROUP namn [ [ WITH ] alternativ [ ... ] ]\n" -#~ "\n" -#~ "d�r alternativ kan vara:\n" -#~ " \n" -#~ " SUPERUSER | NOSUPERUSER\n" -#~ " | CREATEDB | NOCREATEDB\n" -#~ " | CREATEROLE | NOCREATEROLE\n" -#~ " | CREATEUSER | NOCREATEUSER\n" -#~ " | INHERIT | NOINHERIT\n" -#~ " | LOGIN | NOLOGIN\n" -#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'l�senord'\n" -#~ " | VALID UNTIL 'tidsst�mpel' \n" -#~ " | IN ROLE rollnamn [, ...]\n" -#~ " | IN GROUP rollnamn [, ...]\n" -#~ " | ROLE rollnamn [, ...]\n" -#~ " | ADMIN rollnamn [, ...]\n" -#~ " | USER rollnamn [, ...]\n" -#~ " | SYSID uid" - -#~ msgid "" -#~ "CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] name ON table [ USING method ]\n" -#~ " ( { column | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS " -#~ "{ FIRST | LAST } ] [, ...] )\n" -#~ " [ WITH ( storage_parameter = value [, ... ] ) ]\n" -#~ " [ TABLESPACE tablespace ]\n" -#~ " [ WHERE predicate ]" -#~ msgstr "" -#~ "CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] namn ON tabell [ USING metod ]\n" -#~ " ( { kolumn | ( uttryck ) } [ op-klass ] [ ASC | DESC ] [ NULLS " -#~ "{ FIRST | LAST } ] [, ...] )\n" -#~ " [ WITH ( lagringsparameter = v�rde [, ... ] ) ]\n" -#~ " [ TABLESPACE tabellutrymme ]\n" -#~ " [ WHERE predikat ]" - -#~ msgid "" -#~ "CREATE [ PROCEDURAL ] LANGUAGE name\n" -#~ "CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name\n" -#~ " HANDLER call_handler [ VALIDATOR valfunction ]" -#~ msgstr "" -#~ "CREATE [ PROCEDURAL ] LANGUAGE namn\n" -#~ "CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE namn\n" -#~ " HANDLER anropshanterare [ VALIDATOR val-funktion ]" - -#~ msgid "" -#~ "CREATE OPERATOR name (\n" -#~ " PROCEDURE = funcname\n" -#~ " [, LEFTARG = lefttype ] [, RIGHTARG = righttype ]\n" -#~ " [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]\n" -#~ " [, RESTRICT = res_proc ] [, JOIN = join_proc ]\n" -#~ " [, HASHES ] [, MERGES ]\n" -#~ ")" -#~ msgstr "" -#~ "CREATE OPERATOR namn (\n" -#~ " PROCEDURE = funknamn\n" -#~ " [, LEFTARG = v�nster-typ ] [, RIGHTARG = h�ger-typ ]\n" -#~ " [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]\n" -#~ " [, RESTRICT = res_proc ] [, JOIN = join_proc ]\n" -#~ " [, HASHES ] [, MERGES ]\n" -#~ ")" - -#, fuzzy -#~ msgid "" -#~ "CREATE OPERATOR CLASS name [ DEFAULT ] FOR TYPE data_type\n" -#~ " USING index_method [ FAMILY family_name ] AS\n" -#~ " { OPERATOR strategy_number operator_name [ ( op_type, op_type ) ]\n" -#~ " | FUNCTION support_number [ ( op_type [ , op_type ] ) ] funcname " -#~ "( argument_type [, ...] )\n" -#~ " | STORAGE storage_type\n" -#~ " } [, ... ]" -#~ msgstr "" -#~ "CREATE OPERATOR CLASS namn [ DEFAULT ] FOR TYPE datatyp USING indexmetod " -#~ "AS\n" -#~ " { OPERATOR strateginummer operatornamn [ ( op_typ, op_typ ) ] " -#~ "[ RECHECK ]\n" -#~ " | FUNCTION supportnummer funknamn ( argumenttyp [, ...] )\n" -#~ " | STORAGE lagringstyp\n" -#~ " } [, ... ]" - -#~ msgid "CREATE OPERATOR FAMILY name USING index_method" -#~ msgstr "CREATE OPERATOR FAMILY namn USING indexmetod" - -#~ msgid "" -#~ "CREATE ROLE name [ [ WITH ] option [ ... ] ]\n" -#~ "\n" -#~ "where option can be:\n" -#~ " \n" -#~ " SUPERUSER | NOSUPERUSER\n" -#~ " | CREATEDB | NOCREATEDB\n" -#~ " | CREATEROLE | NOCREATEROLE\n" -#~ " | CREATEUSER | NOCREATEUSER\n" -#~ " | INHERIT | NOINHERIT\n" -#~ " | LOGIN | NOLOGIN\n" -#~ " | CONNECTION LIMIT connlimit\n" -#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -#~ " | VALID UNTIL 'timestamp' \n" -#~ " | IN ROLE rolename [, ...]\n" -#~ " | IN GROUP rolename [, ...]\n" -#~ " | ROLE rolename [, ...]\n" -#~ " | ADMIN rolename [, ...]\n" -#~ " | USER rolename [, ...]\n" -#~ " | SYSID uid" -#~ msgstr "" -#~ "CREATE ROLE namn [ [ WITH ] alternativ [ ... ] ]\n" -#~ "\n" -#~ "d�r alternativ kan vara:\n" -#~ " \n" -#~ " SUPERUSER | NOSUPERUSER\n" -#~ " | CREATEDB | NOCREATEDB\n" -#~ " | CREATEROLE | NOCREATEROLE\n" -#~ " | CREATEUSER | NOCREATEUSER\n" -#~ " | INHERIT | NOINHERIT\n" -#~ " | LOGIN | NOLOGIN\n" -#~ " | CONNECTION LIMIT anslutningstak\n" -#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'l�senord'\n" -#~ " | VALID UNTIL 'tidsst�mpel' \n" -#~ " | IN ROLE rollnamn [, ...]\n" -#~ " | IN GROUP rollnamn [, ...]\n" -#~ " | ROLE rollnamn [, ...]\n" -#~ " | ADMIN rollnamn [, ...]\n" -#~ " | USER rollnamn [, ...]\n" -#~ " | SYSID uid" - -#~ msgid "" -#~ "CREATE [ OR REPLACE ] RULE name AS ON event\n" -#~ " TO table [ WHERE condition ]\n" -#~ " DO [ ALSO | INSTEAD ] { NOTHING | command | ( command ; " -#~ "command ... ) }" -#~ msgstr "" -#~ "CREATE [ OR REPLACE ] RULE namn AS ON h�ndelse\n" -#~ " TO tabell [ WHERE villkor ]\n" -#~ " DO [ ALSO | INSTEAD ] { NOTHING | kommando | ( kommando ; " -#~ "kommando ... ) }" - -#~ msgid "" -#~ "CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element " -#~ "[ ... ] ]\n" -#~ "CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ]" -#~ msgstr "" -#~ "CREATE SCHEMA schema-namn [ AUTHORIZATION anv�ndarnamn ] [ schema-element " -#~ "[ ... ] ]\n" -#~ "CREATE SCHEMA AUTHORIZATION anv�ndarnamn [ schema-element [ ... ] ]" - -#~ msgid "" -#~ "CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ]\n" -#~ " [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO " -#~ "MAXVALUE ]\n" -#~ " [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]\n" -#~ " [ OWNED BY { table.column | NONE } ]" -#~ msgstr "" -#~ "CREATE [ TEMPORARY | TEMP ] SEQUENCE namn [ INCREMENT [ BY ] " -#~ "�kningsv�rde ]\n" -#~ " [ MINVALUE minv�rde | NO MINVALUE ] [ MAXVALUE maxv�rde | NO " -#~ "MAXVALUE ]\n" -#~ " [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]\n" -#~ " [ OWNED BY { tabell.kolumn | NONE } ]" - -#, fuzzy -#~ msgid "" -#~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name ( [\n" -#~ " { column_name data_type [ DEFAULT default_expr ] [ column_constraint " -#~ "[ ... ] ]\n" -#~ " | table_constraint\n" -#~ " | LIKE parent_table [ { INCLUDING | EXCLUDING } { DEFAULTS | " -#~ "CONSTRAINTS | INDEXES } ] ... }\n" -#~ " [, ... ]\n" -#~ "] )\n" -#~ "[ INHERITS ( parent_table [, ... ] ) ]\n" -#~ "[ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT " -#~ "OIDS ]\n" -#~ "[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" -#~ "[ TABLESPACE tablespace ]\n" -#~ "\n" -#~ "where column_constraint is:\n" -#~ "\n" -#~ "[ CONSTRAINT constraint_name ]\n" -#~ "{ NOT NULL | \n" -#~ " NULL | \n" -#~ " UNIQUE index_parameters |\n" -#~ " PRIMARY KEY index_parameters |\n" -#~ " CHECK ( expression ) |\n" -#~ " REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | " -#~ "MATCH SIMPLE ]\n" -#~ " [ ON DELETE action ] [ ON UPDATE action ] }\n" -#~ "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY " -#~ "IMMEDIATE ]\n" -#~ "\n" -#~ "and table_constraint is:\n" -#~ "\n" -#~ "[ CONSTRAINT constraint_name ]\n" -#~ "{ UNIQUE ( column_name [, ... ] ) index_parameters |\n" -#~ " PRIMARY KEY ( column_name [, ... ] ) index_parameters |\n" -#~ " CHECK ( expression ) |\n" -#~ " FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn " -#~ "[, ... ] ) ]\n" -#~ " [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] " -#~ "[ ON UPDATE action ] }\n" -#~ "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY " -#~ "IMMEDIATE ]\n" -#~ "\n" -#~ "index_parameters in UNIQUE and PRIMARY KEY constraints are:\n" -#~ "\n" -#~ "[ WITH ( storage_parameter [= value] [, ... ] ) ]\n" -#~ "[ USING INDEX TABLESPACE tablespace ]" -#~ msgstr "" -#~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE tabellnamn ( [\n" -#~ " { kolumnname datatyp [ DEFAULT default_uttryck ] [ kolumnvillkor " -#~ "[ ... ] ]\n" -#~ " | tabellvillkor\n" -#~ " | LIKE f�r�ldratabell [ { INCLUDING | EXCLUDING } { DEFAULTS | " -#~ "CONSTRAINTS } ] ... } \n" -#~ " [, ... ]\n" -#~ "] )\n" -#~ "[ INHERITS ( f�r�ldratabell [, ... ] ) ]\n" -#~ "[ WITH ( lagringsparameter [= v�rde] [, ... ] ) | WITH OIDS | WITHOUT \"\n" -#~ "[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" -#~ "[ TABLESPACE tabellutrymme ]\n" -#~ "\n" -#~ "d�r kolumnvillkor �r:\n" -#~ "\n" -#~ "[ CONSTRAINT villkorsnamn ]\n" -#~ "{ NOT NULL |\n" -#~ " NULL |\n" -#~ " UNIQUE index_parameter |\n" -#~ " PRIMARY KEY index_parameter |\n" -#~ " CHECK (uttryck) |\n" -#~ " REFERENCES reftabell [ ( refkolumn ) ] [ MATCH FULL | MATCH PARTIAL | " -#~ "MATCH SIMPLE ]\n" -#~ " [ ON DELETE aktion ] [ ON UPDATE aktion ] }\n" -#~ "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY " -#~ "IMMEDIATE ]\n" -#~ "\n" -#~ "och tabellvillkor �r:\n" -#~ "\n" -#~ "[ CONSTRAINT villkorsnamn ]\n" -#~ "{ UNIQUE ( kolumnnamn [, ... ] ) index_parameter |\n" -#~ " PRIMARY KEY ( kolumnnamn [, ... ] ) index_parameter |\n" -#~ " CHECK ( uttryck ) |\n" -#~ " FOREIGN KEY ( kolumnnamn [, ... ] ) REFERENCES reftabell [ ( refkolumn " -#~ "[, ... ] ) ]\n" -#~ " [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE aktion ] " -#~ "[ ON UPDATE aktion ] }\n" -#~ "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY " -#~ "IMMEDIATE ]\n" -#~ "\n" -#~ "index_parameter i UNIQUE och PRIMARY KEY villkoren �r:\\n\"\n" -#~ "\n" -#~ "[ WITH ( lagringsparameter [= v�rde] [, ... ] ) ]\n" -#~ "[ USING INDEX TABLESPACE tabellutrymme ]" - -#~ msgid "" -#~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name\n" -#~ " [ (column_name [, ...] ) ]\n" -#~ " [ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT " -#~ "OIDS ]\n" -#~ " [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" -#~ " [ TABLESPACE tablespace ]\n" -#~ " AS query\n" -#~ " [ WITH [ NO ] DATA ]" -#~ msgstr "" -#~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE tabellnamn\n" -#~ " [ (kolumnnamn [, ...] ) ]\n" -#~ " [ WITH ( lagringsparameter [= v�rde] [, ... ] ) | WITH OIDS | WITHOUT " -#~ "OIDS ]\n" -#~ " [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" -#~ " [ TABLESPACE tabellutrymme ]\n" -#~ " AS fr�ga\n" -#~ " [ WITH [ NO ] DATA ]" - -#~ msgid "" -#~ "CREATE TABLESPACE tablespacename [ OWNER username ] LOCATION 'directory'" -#~ msgstr "" -#~ "CREATE TABLESPACE tabellutrymmesnamn [ OWNER anv�ndarnamn ] LOCATION " -#~ "'katalog'" - -#~ msgid "" -#~ "CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }\n" -#~ " ON table [ FOR [ EACH ] { ROW | STATEMENT } ]\n" -#~ " EXECUTE PROCEDURE funcname ( arguments )" -#~ msgstr "" -#~ "CREATE TRIGGER namn { BEFORE | AFTER } { h�ndelse [ OR ... ] }\n" -#~ " ON tabell [ FOR [ EACH ] { ROW | STATEMENT } ]\n" -#~ " EXECUTE PROCEDURE funknamn ( argument )" - -#, fuzzy -#~ msgid "" -#~ "CREATE TYPE name AS\n" -#~ " ( attribute_name data_type [, ... ] )\n" -#~ "\n" -#~ "CREATE TYPE name AS ENUM\n" -#~ " ( 'label' [, ... ] )\n" -#~ "\n" -#~ "CREATE TYPE name (\n" -#~ " INPUT = input_function,\n" -#~ " OUTPUT = output_function\n" -#~ " [ , RECEIVE = receive_function ]\n" -#~ " [ , SEND = send_function ]\n" -#~ " [ , TYPMOD_IN = type_modifier_input_function ]\n" -#~ " [ , TYPMOD_OUT = type_modifier_output_function ]\n" -#~ " [ , ANALYZE = analyze_function ]\n" -#~ " [ , INTERNALLENGTH = { internallength | VARIABLE } ]\n" -#~ " [ , PASSEDBYVALUE ]\n" -#~ " [ , ALIGNMENT = alignment ]\n" -#~ " [ , STORAGE = storage ]\n" -#~ " [ , LIKE = like_type ]\n" -#~ " [ , CATEGORY = category ]\n" -#~ " [ , PREFERRED = preferred ]\n" -#~ " [ , DEFAULT = default ]\n" -#~ " [ , ELEMENT = element ]\n" -#~ " [ , DELIMITER = delimiter ]\n" -#~ ")\n" -#~ "\n" -#~ "CREATE TYPE name" -#~ msgstr "" -#~ "CREATE TYPE namn AS\n" -#~ " ( attributnamn datatyp [, ... ] )\n" -#~ "\n" -#~ "CREATE TYPE namn (\n" -#~ " INPUT = inmatningsfunktion,\n" -#~ " OUTPUT = utmatningsfunktion\n" -#~ " [ , RECEIVE = mottagarfunktion ]\n" -#~ " [ , SEND = s�ndfunktion ]\n" -#~ " [ , ANALYZE = analysfunktion ]\n" -#~ " [ , INTERNALLENGTH = { internl�ngd | VARIABLE } ]\n" -#~ " [ , PASSEDBYVALUE ]\n" -#~ " [ , ALIGNMENT = justering ]\n" -#~ " [ , STORAGE = lagring ]\n" -#~ " [ , DEFAULT = standard ]\n" -#~ " [ , ELEMENT = element ]\n" -#~ " [ , DELIMITER = avskiljare ]\n" -#~ ")\n" -#~ "\n" -#~ "CREATE TYPE namn" - -#~ msgid "" -#~ "CREATE USER name [ [ WITH ] option [ ... ] ]\n" -#~ "\n" -#~ "where option can be:\n" -#~ " \n" -#~ " SUPERUSER | NOSUPERUSER\n" -#~ " | CREATEDB | NOCREATEDB\n" -#~ " | CREATEROLE | NOCREATEROLE\n" -#~ " | CREATEUSER | NOCREATEUSER\n" -#~ " | INHERIT | NOINHERIT\n" -#~ " | LOGIN | NOLOGIN\n" -#~ " | CONNECTION LIMIT connlimit\n" -#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -#~ " | VALID UNTIL 'timestamp' \n" -#~ " | IN ROLE rolename [, ...]\n" -#~ " | IN GROUP rolename [, ...]\n" -#~ " | ROLE rolename [, ...]\n" -#~ " | ADMIN rolename [, ...]\n" -#~ " | USER rolename [, ...]\n" -#~ " | SYSID uid" -#~ msgstr "" -#~ "CREATE USER namn [ [ WITH ] alternativ [ ... ] ]\n" -#~ "\n" -#~ "d�r alternativ kan vara:\n" -#~ " \n" -#~ " SUPERUSER | NOSUPERUSER\n" -#~ " | CREATEDB | NOCREATEDB\n" -#~ " | CREATEROLE | NOCREATEROLE\n" -#~ " | CREATEUSER | NOCREATEUSER\n" -#~ " | INHERIT | NOINHERIT\n" -#~ " | LOGIN | NOLOGIN\n" -#~ " | CONNECTION LIMIT anslutningstak\n" -#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'l�senord'\n" -#~ " | VALID UNTIL 'tidsst�mpel' \n" -#~ " | IN ROLE rollnamn [, ...]\n" -#~ " | IN GROUP rollnamn [, ...]\n" -#~ " | ROLE rollnamn [, ...]\n" -#~ " | ADMIN rollnamn [, ...]\n" -#~ " | USER rollnamn [, ...]\n" -#~ " | SYSID uid" - -#~ msgid "" -#~ "CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name " -#~ "[, ...] ) ]\n" -#~ " AS query" -#~ msgstr "" -#~ "CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW namn [ ( kolumnnamn " -#~ "[, ...] ) ]\n" -#~ " AS fr�ga" - -#~ msgid "DEALLOCATE [ PREPARE ] { name | ALL }" -#~ msgstr "DEALLOCATE [ PREPARE ] { namn | ALL }" - -#~ msgid "" -#~ "DECLARE name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]\n" -#~ " CURSOR [ { WITH | WITHOUT } HOLD ] FOR query" -#~ msgstr "" -#~ "DECLARE namn [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]\n" -#~ " CURSOR [ { WITH | WITHOUT } HOLD ] FOR fr�ga" - -#~ msgid "" -#~ "DELETE FROM [ ONLY ] table [ [ AS ] alias ]\n" -#~ " [ USING usinglist ]\n" -#~ " [ WHERE condition | WHERE CURRENT OF cursor_name ]\n" -#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" -#~ msgstr "" -#~ "DELETE FROM [ ONLY ] tabell [ [ AS ] alias ]\n" -#~ " [ USING using-lista ]\n" -#~ " [ WHERE villkor | WHERE CURRENT OF m�rk�rnamn ]\n" -#~ " [ RETURNING * | utdatauttryck [ [ AS ] utdatanamn ] [, ...] ]" - -#~ msgid "DISCARD { ALL | PLANS | TEMPORARY | TEMP }" -#~ msgstr "DISCARD { ALL | PLANS | TEMPORARY | TEMP }" - -#~ msgid "" -#~ "DROP AGGREGATE [ IF EXISTS ] name ( type [ , ... ] ) [ CASCADE | " -#~ "RESTRICT ]" -#~ msgstr "" -#~ "DROP AGGREGATE [ IF EXISTS ] namn ( typ [ , ... ] ) [ CASCADE | RESTRICT ]" - -#~ msgid "" -#~ "DROP CAST [ IF EXISTS ] (sourcetype AS targettype) [ CASCADE | RESTRICT ]" -#~ msgstr "DROP CAST [ IF EXISTS ] (k�lltyp AS m�ltyp) [ CASCADE | RESTRICT ]" - -#~ msgid "DROP CONVERSION [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -#~ msgstr "DROP CONVERSION [ IF EXISTS ] namn [ CASCADE | RESTRICT ]" - -#~ msgid "DROP DATABASE [ IF EXISTS ] name" -#~ msgstr "DROP DATABASE [ IF EXISTS ] namn" - -#~ msgid "DROP DOMAIN [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -#~ msgstr "DROP DOMAIN [ IF EXISTS ] namn [, ...] [ CASCADE | RESTRICT ]" - -#, fuzzy -#~ msgid "DROP FOREIGN DATA WRAPPER [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -#~ msgstr "DROP CONVERSION [ IF EXISTS ] namn [ CASCADE | RESTRICT ]" - -#~ msgid "" -#~ "DROP FUNCTION [ IF EXISTS ] name ( [ [ argmode ] [ argname ] argtype " -#~ "[, ...] ] )\n" -#~ " [ CASCADE | RESTRICT ]" -#~ msgstr "" -#~ "DROP FUNCTION [ IF EXISTS ] namn ( [ [ arg_l�ge ] [ arg_namn ] arg_typ " -#~ "[, ...] ] )\n" -#~ " [ CASCADE | RESTRICT ]" - -#~ msgid "DROP GROUP [ IF EXISTS ] name [, ...]" -#~ msgstr "DROP GROUP [ IF EXISTS ] namn [, ...]" - -#~ msgid "DROP INDEX [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -#~ msgstr "DROP INDEX [ IF EXISTS ] namn [, ...] [ CASCADE | RESTRICT ]" - -#~ msgid "" -#~ "DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -#~ msgstr "" -#~ "DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] namn [ CASCADE | RESTRICT ]" - -#~ msgid "" -#~ "DROP OPERATOR [ IF EXISTS ] name ( { lefttype | NONE } , { righttype | " -#~ "NONE } ) [ CASCADE | RESTRICT ]" -#~ msgstr "" -#~ "DROP OPERATOR [ IF EXISTS ] namn ( { v�nster_typ | NONE } , { h�ger_typ | " -#~ "NONE } ) [ CASCADE | RESTRICT ]" - -#~ msgid "" -#~ "DROP OPERATOR CLASS [ IF EXISTS ] name USING index_method [ CASCADE | " -#~ "RESTRICT ]" -#~ msgstr "" -#~ "DROP OPERATOR CLASS [ IF EXISTS ] namn USING indexmetod [ CASCADE | " -#~ "RESTRICT ]" - -#~ msgid "" -#~ "DROP OPERATOR FAMILY [ IF EXISTS ] name USING index_method [ CASCADE | " -#~ "RESTRICT ]" -#~ msgstr "" -#~ "DROP OPERATOR FAMILY [ IF EXISTS ] namn USING indexmetod [ CASCADE | " -#~ "RESTRICT ]" - -#~ msgid "DROP OWNED BY name [, ...] [ CASCADE | RESTRICT ]" -#~ msgstr "DROP OWNED BY namn [, ...] [ CASCADE | RESTRICT ]" - -#~ msgid "DROP ROLE [ IF EXISTS ] name [, ...]" -#~ msgstr "DROP ROLE [ IF EXISTS ] namn [, ...]" - -#~ msgid "DROP RULE [ IF EXISTS ] name ON relation [ CASCADE | RESTRICT ]" -#~ msgstr "DROP RULE [ IF EXISTS ] namn ON relation [ CASCADE | RESTRICT ]" - -#~ msgid "DROP SCHEMA [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -#~ msgstr "DROP SCHEMA [ IF EXISTS ] namn [, ...] [ CASCADE | RESTRICT ]" - -#~ msgid "DROP SEQUENCE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -#~ msgstr "DROP SEQUENCE [ IF EXISTS ] namn [, ...] [ CASCADE | RESTRICT ]" - -#, fuzzy -#~ msgid "DROP SERVER [ IF EXISTS ] servername [ CASCADE | RESTRICT ]" -#~ msgstr "DROP CONVERSION [ IF EXISTS ] namn [ CASCADE | RESTRICT ]" - -#~ msgid "DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -#~ msgstr "DROP TABLE [ IF EXISTS ] namn [, ...] [ CASCADE | RESTRICT ]" - -#~ msgid "DROP TABLESPACE [ IF EXISTS ] tablespacename" -#~ msgstr "DROP TABLESPACE [ IF EXISTS ] tabellutrymmesnamn" - -#~ msgid "" -#~ "DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -#~ msgstr "" -#~ "DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] namn [ CASCADE | RESTRICT ]" - -#~ msgid "" -#~ "DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -#~ msgstr "" -#~ "DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] namn [ CASCADE | RESTRICT ]" - -#~ msgid "DROP TEXT SEARCH PARSER [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -#~ msgstr "DROP TEXT SEARCH PARSER [ IF EXISTS ] namn [ CASCADE | RESTRICT ]" - -#~ msgid "DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -#~ msgstr "DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] namn [ CASCADE | RESTRICT ]" - -#~ msgid "DROP TRIGGER [ IF EXISTS ] name ON table [ CASCADE | RESTRICT ]" -#~ msgstr "DROP TRIGGER [ IF EXISTS ] namn ON tabell [ CASCADE | RESTRICT ]" - -#~ msgid "DROP TYPE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -#~ msgstr "DROP TYPE [ IF EXISTS ] namn [, ...] [ CASCADE | RESTRICT ]" - -#~ msgid "DROP USER [ IF EXISTS ] name [, ...]" -#~ msgstr "DROP USER [ IF EXISTS ] namn [, ...]" - -#~ msgid "DROP VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -#~ msgstr "DROP VIEW [ IF EXISTS ] namn [, ...] [ CASCADE | RESTRICT ]" - -#~ msgid "END [ WORK | TRANSACTION ]" -#~ msgstr "END [ WORK | TRANSACTION ]" - -#~ msgid "EXECUTE name [ ( parameter [, ...] ) ]" -#~ msgstr "EXECUTE namn [ ( parameter [, ...] ) ]" - -#~ msgid "EXPLAIN [ ANALYZE ] [ VERBOSE ] statement" -#~ msgstr "EXPLAIN [ ANALYZE ] [ VERBOSE ] sats" - -#~ msgid "" -#~ "FETCH [ direction { FROM | IN } ] cursorname\n" -#~ "\n" -#~ "where direction can be empty or one of:\n" -#~ "\n" -#~ " NEXT\n" -#~ " PRIOR\n" -#~ " FIRST\n" -#~ " LAST\n" -#~ " ABSOLUTE count\n" -#~ " RELATIVE count\n" -#~ " count\n" -#~ " ALL\n" -#~ " FORWARD\n" -#~ " FORWARD count\n" -#~ " FORWARD ALL\n" -#~ " BACKWARD\n" -#~ " BACKWARD count\n" -#~ " BACKWARD ALL" -#~ msgstr "" -#~ "FETCH [ riktning { FROM | IN } ] mark�rsnamn\n" -#~ "\n" -#~ "d�r riktning kan vara tom eller en av:\n" -#~ "\n" -#~ " NEXT\n" -#~ " PRIOR\n" -#~ " FIRST\n" -#~ " LAST\n" -#~ " ABSOLUTE antal\n" -#~ " RELATIVE antal\n" -#~ " antal\n" -#~ " ALL\n" -#~ " FORWARD\n" -#~ " FORWARD antal\n" -#~ " FORWARD ALL\n" -#~ " BACKWARD\n" -#~ " BACKWARD antal\n" -#~ " BACKWARD ALL" - -#, fuzzy -#~ msgid "" -#~ "GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | " -#~ "TRIGGER }\n" -#~ " [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON [ TABLE ] tablename [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column [, ...] )\n" -#~ " [,...] | ALL [ PRIVILEGES ] ( column [, ...] ) }\n" -#~ " ON [ TABLE ] tablename [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { { USAGE | SELECT | UPDATE }\n" -#~ " [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SEQUENCE sequencename [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL " -#~ "[ PRIVILEGES ] }\n" -#~ " ON DATABASE dbname [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON FOREIGN DATA WRAPPER fdwname [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON FOREIGN SERVER servername [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n" -#~ " ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) " -#~ "[, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON LANGUAGE langname [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SCHEMA schemaname [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT { CREATE | ALL [ PRIVILEGES ] }\n" -#~ " ON TABLESPACE tablespacename [, ...]\n" -#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -#~ "\n" -#~ "GRANT role [, ...] TO rolename [, ...] [ WITH ADMIN OPTION ]" -#~ msgstr "" -#~ "GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRIGGER }\n" -#~ " [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON [ TABLE ] tabellnamn [, ...]\n" -#~ " TO { anv�ndarnamn | GROUP gruppnamn | PUBLIC } [, ...] [ WITH GRANT " -#~ "OPTION ]\n" -#~ "\n" -#~ "GRANT { { USAGE | SELECT | UPDATE }\n" -#~ " [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SEQUENCE sekvensnamn [, ...]\n" -#~ " TO { anv�ndarnamn | GROUP gruppnamn | PUBLIC } [, ...] [ WITH GRANT " -#~ "OPTION ]\n" -#~ "\n" -#~ "GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL " -#~ "[ PRIVILEGES ] }\n" -#~ " ON DATABASE dbnamn [, ...]\n" -#~ " TO { anv�ndarnamn | GROUP gruppnamn | PUBLIC } [, ...] [ WITH GRANT " -#~ "OPTION ]\n" -#~ "\n" -#~ "GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n" -#~ " ON FUNCTION funkname ( [ [ arg_l�ge ] [ arg_namn ] arg_typ " -#~ "[, ...] ] ) [, ...]\n" -#~ " TO { anv�ndarnamn | GROUP gruppnamn | PUBLIC } [, ...] [ WITH GRANT " -#~ "OPTION ]\n" -#~ "\n" -#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON LANGUAGE spr�knamn [, ...]\n" -#~ " TO { anv�ndarnamn | GROUP gruppnamn | PUBLIC } [, ...] [ WITH GRANT " -#~ "OPTION ]\n" -#~ "\n" -#~ "GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SCHEMA schemanamn [, ...]\n" -#~ " TO { anv�ndarnamn | GROUP gruppnamn | PUBLIC } [, ...] [ WITH GRANT " -#~ "OPTION ]\n" -#~ "\n" -#~ "GRANT { CREATE | ALL [ PRIVILEGES ] }\n" -#~ " ON TABLESPACE tabellutrymmesnamn [, ...]\n" -#~ " TO { anv�ndarnamn | GROUP gruppnamn | PUBLIC } [, ...] [ WITH GRANT " -#~ "OPTION ]\n" -#~ "\n" -#~ "GRANT roll [, ...] TO anv�ndarnamn [, ...] [ WITH ADMIN OPTION ]" - -#~ msgid "" -#~ "INSERT INTO table [ ( column [, ...] ) ]\n" -#~ " { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) " -#~ "[, ...] | query }\n" -#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" -#~ msgstr "" -#~ "INSERT INTO tabell [ ( kolumn [, ...] ) ]\n" -#~ " { DEFAULT VALUES | VALUES ( { uttryck | DEFAULT } [, ...] ) [, ...] | " -#~ "fr�ga }\n" -#~ " [ RETURNING * | utdatauttryck [ [ AS ] utdatanamn ] [, ...] ]" - -#~ msgid "LISTEN name" -#~ msgstr "LISTEN namn" - -#~ msgid "LOAD 'filename'" -#~ msgstr "LOAD 'filnamn'" - -#~ msgid "" -#~ "LOCK [ TABLE ] [ ONLY ] name [, ...] [ IN lockmode MODE ] [ NOWAIT ]\n" -#~ "\n" -#~ "where lockmode is one of:\n" -#~ "\n" -#~ " ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n" -#~ " | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE" -#~ msgstr "" -#~ "LOCK [ TABLE ] [ ONLY ] namn [, ...] [ IN l�sl�ge MODE ] [ NOWAIT ]\n" -#~ "\n" -#~ "d�r l�sl�ge �r en av:\n" -#~ "\n" -#~ " ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n" -#~ " | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE" - -#~ msgid "MOVE [ direction { FROM | IN } ] cursorname" -#~ msgstr "MOVE [ riktning { FROM | IN } ] mark�rnamn" - -#~ msgid "NOTIFY name" -#~ msgstr "NOTIFY namn" - -#~ msgid "PREPARE name [ ( datatype [, ...] ) ] AS statement" -#~ msgstr "PREPARE namn [ ( datatyp [, ...] ) ] AS sats" - -#~ msgid "PREPARE TRANSACTION transaction_id" -#~ msgstr "PREPARE TRANSACTION transaktions_id" - -#~ msgid "REASSIGN OWNED BY old_role [, ...] TO new_role" -#~ msgstr "REASSIGN OWNED BY gammal_roll [, ...] TO ny_roll" - -#~ msgid "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } name [ FORCE ]" -#~ msgstr "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } namn [ FORCE ]" - -#~ msgid "RELEASE [ SAVEPOINT ] savepoint_name" -#~ msgstr "RELEASE [ SAVEPOINT ] sparpunktsnamn" - -#, fuzzy -#~ msgid "" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | " -#~ "TRIGGER }\n" -#~ " [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON [ TABLE ] tablename [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { SELECT | INSERT | UPDATE | REFERENCES } ( column [, ...] )\n" -#~ " [,...] | ALL [ PRIVILEGES ] ( column [, ...] ) }\n" -#~ " ON [ TABLE ] tablename [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { USAGE | SELECT | UPDATE }\n" -#~ " [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SEQUENCE sequencename [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL " -#~ "[ PRIVILEGES ] }\n" -#~ " ON DATABASE dbname [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON FOREIGN DATA WRAPPER fdwname [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON FOREIGN SERVER servername [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { EXECUTE | ALL [ PRIVILEGES ] }\n" -#~ " ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) " -#~ "[, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON LANGUAGE langname [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SCHEMA schemaname [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { CREATE | ALL [ PRIVILEGES ] }\n" -#~ " ON TABLESPACE tablespacename [, ...]\n" -#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ ADMIN OPTION FOR ]\n" -#~ " role [, ...] FROM rolename [, ...]\n" -#~ " [ CASCADE | RESTRICT ]" -#~ msgstr "" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRIGGER }\n" -#~ " [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON [ TABLE ] tabellnamn [, ...]\n" -#~ " FROM { anv�ndarnamn | GROUP gruppnamn | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { USAGE | SELECT | UPDATE }\n" -#~ " [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SEQUENCE sekvensnamn [, ...]\n" -#~ " FROM { anv�ndarnamn | GROUP gruppnamn | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON DATABASE dbnamn [, ...]\n" -#~ " FROM { anv�ndarnamn | GROUP gruppnamn | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { EXECUTE | ALL [ PRIVILEGES ] }\n" -#~ " ON FUNCTION funknamn ( [ [ arg_l�ge ] [ arg_namn ] arg_typ " -#~ "[, ...] ] ) [, ...]\n" -#~ " FROM { anv�ndarnamn | GROUP gruppnamn | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { USAGE | ALL [ PRIVILEGES ] }\n" -#~ " ON LANGUAGE spr�knamn [, ...]\n" -#~ " FROM { anv�ndarnamn | GROUP gruppnamn | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" -#~ " ON SCHEMA schemanamn [, ...]\n" -#~ " FROM { anv�ndarnamn | GROUP gruppnamn | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ GRANT OPTION FOR ]\n" -#~ " { CREATE | ALL [ PRIVILEGES ] }\n" -#~ " ON TABLESPACE tabellutrymmesnamn [, ...]\n" -#~ " FROM { anv�ndarnamn | GROUP gruppnamn | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]\n" -#~ "\n" -#~ "REVOKE [ ADMIN OPTION FOR ]\n" -#~ " rolk [, ...]\n" -#~ " FROM { anv�ndarnamn | GROUP gruppnamn | PUBLIC } [, ...]\n" -#~ " [ CASCADE | RESTRICT ]" - -#~ msgid "ROLLBACK [ WORK | TRANSACTION ]" -#~ msgstr "ROLLBACK [ WORK | TRANSACTION ]" - -#~ msgid "ROLLBACK PREPARED transaction_id" -#~ msgstr "ROLLBACK PREPARED transaktions_id" - -#~ msgid "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_name" -#~ msgstr "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] sparpunktsnamn" - -#, fuzzy -#~ msgid "" -#~ "[ WITH [ RECURSIVE ] with_query [, ...] ]\n" -#~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" -#~ " * | expression [ [ AS ] output_name ] [, ...]\n" -#~ " [ FROM from_item [, ...] ]\n" -#~ " [ WHERE condition ]\n" -#~ " [ GROUP BY expression [, ...] ]\n" -#~ " [ HAVING condition [, ...] ]\n" -#~ " [ WINDOW window_name AS ( window_definition ) [, ...] ]\n" -#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" -#~ " [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST " -#~ "| LAST } ] [, ...] ]\n" -#~ " [ LIMIT { count | ALL } ]\n" -#~ " [ OFFSET start [ ROW | ROWS ] ]\n" -#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n" -#~ " [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] " -#~ "[...] ]\n" -#~ "\n" -#~ "where from_item can be one of:\n" -#~ "\n" -#~ " [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias " -#~ "[, ...] ) ] ]\n" -#~ " ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]\n" -#~ " with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]\n" -#~ " function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias " -#~ "[, ...] | column_definition [, ...] ) ]\n" -#~ " function_name ( [ argument [, ...] ] ) AS ( column_definition " -#~ "[, ...] )\n" -#~ " from_item [ NATURAL ] join_type from_item [ ON join_condition | USING " -#~ "( join_column [, ...] ) ]\n" -#~ "\n" -#~ "and with_query is:\n" -#~ "\n" -#~ " with_query_name [ ( column_name [, ...] ) ] AS ( select )\n" -#~ "\n" -#~ "TABLE { [ ONLY ] table_name [ * ] | with_query_name }" -#~ msgstr "" -#~ "SELECT [ ALL | DISTINCT [ ON ( uttryck [, ...] ) ] ]\n" -#~ " * | uttryck [ AS utnamn ] [, ...]\n" -#~ " [ FROM fr�nval [, ...] ]\n" -#~ " [ WHERE villkor ]\n" -#~ " [ GROUP BY uttryck [, ...] ]\n" -#~ " [ HAVING villkor [, ...] ]\n" -#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" -#~ " [ ORDER BY uttryck [ ASC | DESC | USING operator ] [, ...] ]\n" -#~ " [ LIMIT { antal | ALL } ]\n" -#~ " [ OFFSET start ]\n" -#~ " [ FOR { UPDATE | SHARE } [ OF tabellnamn [, ...] ] [ NOWAIT ] " -#~ "[...] ]\n" -#~ "\n" -#~ "d�r fr�nval kan vara en av:\n" -#~ "\n" -#~ " [ ONLY ] tabellnamn [ * ] [ [ AS ] alias [ ( kolumnalias " -#~ "[, ...] ) ] ]\n" -#~ " ( select ) [ AS ] alias [ ( kolumnalias [, ...] ) ]\n" -#~ " funktionsnamn ( [ argument [, ...] ] ) [ AS ] alias [ ( kolumnalias " -#~ "[, ...] | kolumndefinition [, ...] ) ]\n" -#~ " funktionsnamn ( [ argument [, ...] ] ) AS ( kolumndefinition " -#~ "[, ...] )\n" -#~ " fr�nval [ NATURAL ] join-typ fr�nval [ ON join-villkor | USING ( join-" -#~ "kolumn [, ...] ) ]" - -#, fuzzy -#~ msgid "" -#~ "[ WITH [ RECURSIVE ] with_query [, ...] ]\n" -#~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" -#~ " * | expression [ [ AS ] output_name ] [, ...]\n" -#~ " INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table\n" -#~ " [ FROM from_item [, ...] ]\n" -#~ " [ WHERE condition ]\n" -#~ " [ GROUP BY expression [, ...] ]\n" -#~ " [ HAVING condition [, ...] ]\n" -#~ " [ WINDOW window_name AS ( window_definition ) [, ...] ]\n" -#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" -#~ " [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST " -#~ "| LAST } ] [, ...] ]\n" -#~ " [ LIMIT { count | ALL } ]\n" -#~ " [ OFFSET start [ ROW | ROWS ] ]\n" -#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n" -#~ " [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]" -#~ msgstr "" -#~ "SELECT [ ALL | DISTINCT [ ON ( uttryck [, ...] ) ] ]\n" -#~ " * | uttryck [ AS utnamn ] [, ...]\n" -#~ " INTO [ TEMPORARY | TEMP ] [ TABLE ] ny_tabell\n" -#~ " [ FROM fr�nval [, ...] ]\n" -#~ " [ WHERE villkor ]\n" -#~ " [ GROUP BY uttryck [, ...] ]\n" -#~ " [ HAVING villkor [, ...] ]\n" -#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" -#~ " [ ORDER BY uttryck [ ASC | DESC | USING operator ] [, ...] ]\n" -#~ " [ LIMIT { antal | ALL } ]\n" -#~ " [ OFFSET start ]\n" -#~ " [ FOR { UPDATE | SHARE } [ OF tabellnamn [, ...] ] [ NOWAIT ] [...] ]" - -#~ msgid "" -#~ "SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | " -#~ "'value' | DEFAULT }\n" -#~ "SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }" -#~ msgstr "" -#~ "SET [ SESSION | LOCAL ] konfigurationsparameter { TO | = } { v�rde | " -#~ "'v�rde' | DEFAULT }\n" -#~ "SET [ SESSION | LOCAL ] TIME ZONE { tidszon | LOCAL | DEFAULT }" - -#~ msgid "SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }" -#~ msgstr "SET CONSTRAINTS { ALL | namn [, ...] } { DEFERRED | IMMEDIATE }" - -#~ msgid "" -#~ "SET [ SESSION | LOCAL ] ROLE rolename\n" -#~ "SET [ SESSION | LOCAL ] ROLE NONE\n" -#~ "RESET ROLE" -#~ msgstr "" -#~ "SET [ SESSION | LOCAL ] ROLE rollnamn\n" -#~ "SET [ SESSION | LOCAL ] ROLE NONE\n" -#~ "RESET ROLE" - -#~ msgid "" -#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION username\n" -#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n" -#~ "RESET SESSION AUTHORIZATION" -#~ msgstr "" -#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION anv�ndarnamn\n" -#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n" -#~ "RESET SESSION AUTHORIZATION" - -#~ msgid "" -#~ "SET TRANSACTION transaction_mode [, ...]\n" -#~ "SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [, ...]\n" -#~ "\n" -#~ "where transaction_mode is one of:\n" -#~ "\n" -#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | " -#~ "READ UNCOMMITTED }\n" -#~ " READ WRITE | READ ONLY" -#~ msgstr "" -#~ "SET TRANSACTION transaktionsl�ge [, ...]\n" -#~ "SET SESSION CHARACTERISTICS AS TRANSACTION transaktionsl�ge [, ...]\n" -#~ "\n" -#~ "d�r transaktionsl�ge �r en av:\n" -#~ "\n" -#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | " -#~ "READ UNCOMMITTED }\n" -#~ " READ WRITE | READ ONLY" - -#~ msgid "" -#~ "SHOW name\n" -#~ "SHOW ALL" -#~ msgstr "" -#~ "SHOW namn\n" -#~ "SHOW ALL" - -#~ msgid "" -#~ "START TRANSACTION [ transaction_mode [, ...] ]\n" -#~ "\n" -#~ "where transaction_mode is one of:\n" -#~ "\n" -#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | " -#~ "READ UNCOMMITTED }\n" -#~ " READ WRITE | READ ONLY" -#~ msgstr "" -#~ "START TRANSACTION [ transaktionsl�ge [, ...] ]\n" -#~ "\n" -#~ "d�r transaktionsl�ge �r en av:\n" -#~ "\n" -#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | " -#~ "READ UNCOMMITTED }\n" -#~ " READ WRITE | READ ONLY" - -#~ msgid "" -#~ "TRUNCATE [ TABLE ] [ ONLY ] name [, ... ]\n" -#~ " [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]" -#~ msgstr "" -#~ "TRUNCATE [ TABLE ] [ ONLY ] namn [, ... ]\n" -#~ " [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]" - -#~ msgid "UNLISTEN { name | * }" -#~ msgstr "UNLISTEN { namn | * }" - -#~ msgid "" -#~ "UPDATE [ ONLY ] table [ [ AS ] alias ]\n" -#~ " SET { column = { expression | DEFAULT } |\n" -#~ " ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } " -#~ "[, ...]\n" -#~ " [ FROM fromlist ]\n" -#~ " [ WHERE condition | WHERE CURRENT OF cursor_name ]\n" -#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" -#~ msgstr "" -#~ "UPDATE [ ONLY ] tabell [ [ AS ] alias ]\n" -#~ " SET { kolumn = { uttryck | DEFAULT } |\n" -#~ " ( kolumn [, ...] ) = ( { uttryck | DEFAULT } [, ...] ) } " -#~ "[, ...]\n" -#~ " [ FROM fr�nlista ]\n" -#~ " [ WHERE villkor | WHERE CURRENT OF mark�rnamn ]\n" -#~ " [ RETURNING * | utdatauttryck [ [ AS ] utdatanamn ] [, ...] ]" - -#~ msgid "" -#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]\n" -#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column " -#~ "[, ...] ) ] ]" -#~ msgstr "" -#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ tabell ]\n" -#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ tabell [ (kolumn " -#~ "[, ...] ) ] ]" - -#~ msgid "" -#~ "VALUES ( expression [, ...] ) [, ...]\n" -#~ " [ ORDER BY sort_expression [ ASC | DESC | USING operator ] [, ...] ]\n" -#~ " [ LIMIT { count | ALL } ]\n" -#~ " [ OFFSET start [ ROW | ROWS ] ]\n" -#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]" -#~ msgstr "" -#~ "VALUES ( uttryck [, ...] ) [, ...]\n" -#~ " [ ORDER BY sorteringsuttryck [ ASC | DESC | USING operator ] " -#~ "[, ...] ]\n" -#~ " [ LIMIT { antal | ALL } ]\n" -#~ " [ OFFSET start [ ROW | ROWS ] ]\n" -#~ " [ FETCH { FIRST | NEXT } [ antal ] { ROW | ROWS } ONLY ]" - -#~ msgid "" -#~ "WARNING: You are connected to a server with major version %d.%d,\n" -#~ "but your %s client is major version %d.%d. Some backslash commands,\n" -#~ "such as \\d, might not work properly.\n" -#~ "\n" -#~ msgstr "" -#~ "VARNING: Du �r uppkopplad mot en server med version %d.%d,\n" -#~ "men din klient %s �r version %d.%d. En del snedstreckkommandon\n" -#~ "s� som \\d kommer eventuellt inte att fungera som de skall.\n" -#~ "\n" diff --git a/src/bin/psql/po/tr.po b/src/bin/psql/po/tr.po index f5159159a7..3d974cf8c7 100644 --- a/src/bin/psql/po/tr.po +++ b/src/bin/psql/po/tr.po @@ -5,10 +5,11 @@ msgid "" msgstr "" "Project-Id-Version: psql-tr\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2009-06-11 05:09+0000\n" -"PO-Revision-Date: 2009-06-11 10:57+0200\n" +"POT-Creation-Date: 2011-08-29 20:41+0000\n" +"PO-Revision-Date: 2011-09-01 03:44+0200\n" "Last-Translator: Devrim GÜNDÜZ \n" "Language-Team: Turkish \n" +"Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -17,204 +18,229 @@ msgstr "" "X-Poedit-Country: TURKEY\n" "X-Poedit-SourceCharset: utf-8\n" "X-Generator: KBabel 1.3.1\n" -"X-Poedit-Basepath: /home/ntufar/pg/pgsql/src/bin/psql/\n" +"X-Poedit-Basepath: /home/devrim/PostgreSQL/pgsql-cvs/pgsql\n" "X-Poedit-Bookmarks: -1,-1,333,-1,-1,-1,-1,-1,-1,-1\n" -#: command.c:112 +#: command.c:113 #, c-format msgid "Invalid command \\%s. Try \\? for help.\n" msgstr "Geçersiz komut \\%s. Yardım için \\? yazınız.\n" -#: command.c:114 +#: command.c:115 #, c-format msgid "invalid command \\%s\n" msgstr "geçersiz komut \\%s\n" -#: command.c:125 +#: command.c:126 #, c-format msgid "\\%s: extra argument \"%s\" ignored\n" msgstr "\\%s: \"%s\" fazla parametresi atlandı\n" -#: command.c:267 +#: command.c:268 #, c-format msgid "could not get home directory: %s\n" msgstr "home dizinine ulaşılamamıştır: %s\n" -#: command.c:283 +#: command.c:284 #, c-format msgid "\\%s: could not change directory to \"%s\": %s\n" msgstr "\\%s: \"%s\" dizinine geçiş yapılamamıştır: %s\n" -#: command.c:316 -#: common.c:935 +#: command.c:305 +#: common.c:493 +#: common.c:773 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "Şu anda bir veritabanına bağlı değilsiniz.\n" + +#: command.c:312 +#, fuzzy, c-format +msgid "You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n" +msgstr "\"%2$s\" kullanıcısı olarak \"%1$s\" veritabanına bağlanıldı\n" + +#: command.c:315 +#, fuzzy, c-format +msgid "You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n" +msgstr "\"%2$s\" kullanıcısı olarak \"%1$s\" veritabanına bağlanıldı\n" + +#: command.c:339 +#: common.c:940 #, c-format msgid "Time: %.3f ms\n" msgstr "Süre: %.3f milisaniye\n" -#: command.c:468 -#: command.c:496 -#: command.c:1035 +#: command.c:524 +#: command.c:588 +#: command.c:1290 +#, c-format msgid "no query buffer\n" msgstr "sorgu tamponu mevcut değil\n" -#: command.c:538 +#: command.c:557 +#: command.c:2534 +#, c-format +msgid "invalid line number: %s\n" +msgstr "Geçersiz satır numarası: %s\n" + +#: command.c:662 msgid "No changes" msgstr "Değişiklik yok" -#: command.c:592 +#: command.c:716 #, c-format msgid "%s: invalid encoding name or conversion procedure not found\n" msgstr "%s: dil kodlama adı geçersiz ya da dönüştürme fonksiyonu bulunamadı\n" -#: command.c:660 -#: command.c:694 -#: command.c:708 -#: command.c:725 -#: command.c:829 -#: command.c:879 -#: command.c:1015 -#: command.c:1046 +#: command.c:796 +#: command.c:834 +#: command.c:848 +#: command.c:865 +#: command.c:969 +#: command.c:1019 +#: command.c:1270 +#: command.c:1301 #, c-format msgid "\\%s: missing required argument\n" msgstr "\\%s: zorunlu argüman eksik\n" -#: command.c:757 +#: command.c:897 msgid "Query buffer is empty." msgstr "Sorgu tamponu boş." -#: command.c:767 +#: command.c:907 msgid "Enter new password: " msgstr "Yeni şifre girin:" -#: command.c:768 +#: command.c:908 msgid "Enter it again: " msgstr "Yıneden girin:" -#: command.c:772 +#: command.c:912 #, c-format msgid "Passwords didn't match.\n" msgstr "Şifreler uyuşmıyor.\n" -#: command.c:790 +#: command.c:930 #, c-format msgid "Password encryption failed.\n" msgstr "Parola şifrleme hatası.\n" -#: command.c:858 -#: command.c:959 -#: command.c:1020 -#, c-format -msgid "\\%s: error\n" -msgstr "\\%s: hata\n" +#: command.c:998 +#: command.c:1099 +#: command.c:1275 +#, fuzzy, c-format +msgid "\\%s: error while setting variable\n" +msgstr "%s: \"%s\" değişkeni atanamıyor\n" -#: command.c:899 +#: command.c:1039 msgid "Query buffer reset (cleared)." msgstr "Sorgu tamponu sıfırlanmış." -#: command.c:912 +#: command.c:1052 #, c-format msgid "Wrote history to file \"%s/%s\".\n" msgstr "Geçmiş, \"%s/%s\" dosyasına yazılmış.\n" -#: command.c:950 +#: command.c:1090 #: common.c:52 #: common.c:66 -#: input.c:198 -#: mainloop.c:69 -#: mainloop.c:227 -#: print.c:61 -#: print.c:75 +#: common.c:90 +#: input.c:209 +#: mainloop.c:72 +#: mainloop.c:234 +#: print.c:137 +#: print.c:151 #, c-format msgid "out of memory\n" msgstr "yetersiz bellek\n" -#: command.c:1000 +#: command.c:1120 +#, c-format +msgid "function name is required\n" +msgstr "fonksiyon adı gerekli\n" + +#: command.c:1255 msgid "Timing is on." msgstr "Zamanlama açık." -#: command.c:1002 +#: command.c:1257 msgid "Timing is off." msgstr "Zamanlama kapalı." -#: command.c:1063 -#: command.c:1083 -#: command.c:1581 -#: command.c:1588 -#: command.c:1597 -#: command.c:1607 -#: command.c:1616 -#: command.c:1630 -#: command.c:1647 -#: command.c:1680 +#: command.c:1318 +#: command.c:1338 +#: command.c:1900 +#: command.c:1907 +#: command.c:1916 +#: command.c:1926 +#: command.c:1935 +#: command.c:1949 +#: command.c:1966 +#: command.c:2026 #: common.c:137 -#: copy.c:517 -#: copy.c:581 +#: copy.c:283 +#: copy.c:361 #, c-format msgid "%s: %s\n" msgstr "%s: %s\n" -#: command.c:1165 +#: command.c:1420 #: startup.c:159 msgid "Password: " msgstr "Şifre: " -#: command.c:1172 +#: command.c:1427 #: startup.c:162 #: startup.c:164 #, c-format msgid "Password for user %s: " msgstr "%s kulalnıcısının şifresi: " -#: command.c:1268 -#: command.c:2110 +#: command.c:1546 +#: command.c:2568 #: common.c:183 #: common.c:460 #: common.c:525 -#: common.c:811 -#: common.c:836 -#: common.c:920 -#: copy.c:652 -#: copy.c:697 -#: copy.c:826 +#: common.c:816 +#: common.c:841 +#: common.c:925 +#: copy.c:432 +#: copy.c:477 +#: copy.c:607 #, c-format msgid "%s" msgstr "%s" -#: command.c:1272 +#: command.c:1550 msgid "Previous connection kept\n" msgstr "Önceki bağlantı kullanılacaktır\n" -#: command.c:1276 +#: command.c:1554 #, c-format msgid "\\connect: %s" msgstr "\\connect: %s" -#: command.c:1300 -#, c-format -msgid "You are now connected to database \"%s\"" +#: command.c:1587 +#, fuzzy, c-format +msgid "You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n" msgstr "Şu an \"%s\" veritabanına bağlısınız" -#: command.c:1303 +#: command.c:1590 #, c-format -msgid " on host \"%s\"" -msgstr " \"%s\" sistemi" +msgid "You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n" +msgstr "Şu anda \"%s\" veritabanına \"%s\" kullanıcısı ile \"%s\" sunucusunda \"%s\". porttan bağlısınız.\n" -#: command.c:1306 +#: command.c:1594 #, c-format -msgid " at port \"%s\"" -msgstr " \"%s\" portunda" +msgid "You are now connected to database \"%s\" as user \"%s\".\n" +msgstr "Şu an \"%s\" veritabanına \"%s\" kullanıcısı ile bağlısınız.\n" -#: command.c:1309 -#, c-format -msgid " as user \"%s\"" -msgstr " \"%s\" kullanıcısı" - -#: command.c:1344 +#: command.c:1628 #, c-format msgid "%s (%s, server %s)\n" msgstr "%s (%s, sunucu %s)\n" -#: command.c:1351 +#: command.c:1636 #, c-format msgid "" "WARNING: %s version %d.%d, server version %d.%d.\n" @@ -223,17 +249,17 @@ msgstr "" "UYARI: %s sürümü %d.%d, sunucu sürümü %d.%d.\n" " Bazı psql özellikleri çalışmayabilir.\n" -#: command.c:1381 +#: command.c:1666 #, c-format -msgid "SSL connection (cipher: %s, bits: %i)\n" -msgstr "SSL bağlantısı (cipher: %s, bit sayısı: %i)\n" +msgid "SSL connection (cipher: %s, bits: %d)\n" +msgstr "SSL bağlantısı (cipher: %s, bit sayısı: %d)\n" -#: command.c:1390 +#: command.c:1676 #, c-format msgid "SSL connection (unknown cipher)\n" msgstr "SSL bağlantısı (bilinmeyen cipher)\n" -#: command.c:1411 +#: command.c:1697 #, c-format msgid "" "WARNING: Console code page (%u) differs from Windows code page (%u)\n" @@ -244,136 +270,154 @@ msgstr "" " 8-bitlik karakterler doğru çalışmayabilir. Ayrıntılar için psql referans\n" " belgelerinde \"Windows kullanıcılarına notlar\" bölümüne bakın.\n" -#: command.c:1500 +#: command.c:1781 +#, c-format +msgid "environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a line number\n" +msgstr "bir satır numarası belirtmek için PSQL_EDITOR_LINENUMBER_ARG çevresel değişkenini ayarlamanız gereklidir\n" + +#: command.c:1818 #, c-format msgid "could not start editor \"%s\"\n" msgstr "\"%s\" metin düzenleyicisi çalıştırılamadı\n" -#: command.c:1502 +#: command.c:1820 +#, c-format msgid "could not start /bin/sh\n" msgstr "/bin/sh başlatılamıyor\n" -#: command.c:1539 +#: command.c:1858 #, c-format -msgid "cannot locate temporary directory: %s" -msgstr "geçici dizin bulunamıyor: %s" +msgid "could not locate temporary directory: %s\n" +msgstr "geçici dizin bulunamıyor: %s\n" -#: command.c:1566 +#: command.c:1885 #, c-format msgid "could not open temporary file \"%s\": %s\n" msgstr "\"%s\" geçici dosya açılamıyor: %s\n" -#: command.c:1764 +#: command.c:2137 +#, c-format msgid "\\pset: allowed formats are unaligned, aligned, wrapped, html, latex, troff-ms\n" msgstr "\\pset: izin verilen biçimler: unaligned, aligned, wrapped, html, latex, troff-ms\n" -#: command.c:1769 +#: command.c:2142 #, c-format msgid "Output format is %s.\n" msgstr "Çıktı formatı: %s.\n" -#: command.c:1779 +#: command.c:2158 +#, c-format +msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" +msgstr "" + +#: command.c:2163 +#, c-format +msgid "Line style is %s.\n" +msgstr "Satır stili: %s.\n" + +#: command.c:2174 #, c-format msgid "Border style is %d.\n" msgstr "Kenar stili: %d.\n" -#: command.c:1791 +#: command.c:2186 #, c-format msgid "Expanded display is on.\n" msgstr "Geniş gösterme açık.\n" -#: command.c:1792 +#: command.c:2187 #, c-format msgid "Expanded display is off.\n" msgstr "Geniş gösterme kapalı.\n" -#: command.c:1805 +#: command.c:2200 msgid "Showing locale-adjusted numeric output." msgstr "Yerel duyarlı sayısal çıktı gösteriliyor." -#: command.c:1807 +#: command.c:2202 msgid "Locale-adjusted numeric output is off." msgstr "Yerel duyarlı sayısıal çıktı biçimlendirme kapalı." -#: command.c:1820 +#: command.c:2215 #, c-format msgid "Null display is \"%s\".\n" msgstr "Null display is \"%s\".\n" -#: command.c:1832 +#: command.c:2227 #, c-format msgid "Field separator is \"%s\".\n" msgstr "Alan ayracı: \"%s\".\n" -#: command.c:1846 +#: command.c:2241 #, c-format msgid "Record separator is ." msgstr "Kayıt ayracı ." -#: command.c:1848 +#: command.c:2243 #, c-format msgid "Record separator is \"%s\".\n" msgstr "Kayıt ayracı \"%s\".\n" -#: command.c:1862 +#: command.c:2257 msgid "Showing only tuples." msgstr "Sadece kayıtlar gösteriliyor." -#: command.c:1864 +#: command.c:2259 msgid "Tuples only is off." msgstr "Sadece kayıtları gösterme kapalı." -#: command.c:1880 +#: command.c:2275 #, c-format msgid "Title is \"%s\".\n" msgstr "Başlık \"%s\".\n" -#: command.c:1882 +#: command.c:2277 #, c-format msgid "Title is unset.\n" msgstr "Başlık kaldırıldı\n" -#: command.c:1898 +#: command.c:2293 #, c-format msgid "Table attribute is \"%s\".\n" msgstr "Tablo özelliği: \"%s\".\n" -#: command.c:1900 +#: command.c:2295 #, c-format msgid "Table attributes unset.\n" msgstr "Tablo özellikleri kaldırıldı.\n" -#: command.c:1921 +#: command.c:2316 msgid "Pager is used for long output." msgstr "Uzun çıktı için sayfalama kullanıacaktır." -#: command.c:1923 +#: command.c:2318 msgid "Pager is always used." msgstr "Sayfalama her zaman kullanılacak." -#: command.c:1925 +#: command.c:2320 msgid "Pager usage is off." msgstr "Sayfalama kullanımı kapalı." -#: command.c:1939 +#: command.c:2334 msgid "Default footer is on." msgstr "Varsayılan alt başlık açık." -#: command.c:1941 +#: command.c:2336 msgid "Default footer is off." msgstr "Varsayılan alt başlık kapalı." -#: command.c:1952 +#: command.c:2347 #, c-format msgid "Target width for \"wrapped\" format is %d.\n" msgstr " \"wrapped\" biçimi için hedef genişlik %d.\n" -#: command.c:1957 +#: command.c:2352 #, c-format msgid "\\pset: unknown option: %s\n" msgstr "\\pset: bilinmeyen seçenek: %s\n" -#: command.c:2011 +#: command.c:2406 +#, c-format msgid "\\!: failed\n" msgstr "\\!: başarısız\n" @@ -382,11 +426,8 @@ msgstr "\\!: başarısız\n" msgid "%s: pg_strdup: cannot duplicate null pointer (internal error)\n" msgstr "%s: pg_strdup: null pointer duplicate edilemiyor (iç hata)\n" -#: common.c:90 -msgid "out of memory" -msgstr "yetersiz bellek" - #: common.c:343 +#, c-format msgid "connection to server was lost\n" msgstr "sunucuya bağlantı kesildi\n" @@ -402,14 +443,9 @@ msgstr "Başarısız.\n" msgid "Succeeded.\n" msgstr "Başarılı.\n" -#: common.c:493 -#: common.c:768 -msgid "You are currently not connected to a database.\n" -msgstr "Şu anda bir veritabanına bağlı değilsiniz.\n" - #: common.c:499 #: common.c:506 -#: common.c:794 +#: common.c:799 #, c-format msgid "" "********* QUERY **********\n" @@ -422,12 +458,17 @@ msgstr "" "**************************\n" "\n" -#: common.c:558 +#: common.c:560 +#, fuzzy, c-format +msgid "Asynchronous notification \"%s\" with payload \"%s\" received from server process with PID %d.\n" +msgstr "PID %2$d olan sunucu sürecinden \"%1$s\" asenkon bildiri alınmış.\n" + +#: common.c:563 #, c-format msgid "Asynchronous notification \"%s\" received from server process with PID %d.\n" msgstr "PID %2$d olan sunucu sürecinden \"%1$s\" asenkon bildiri alınmış.\n" -#: common.c:776 +#: common.c:781 #, c-format msgid "" "***(Single step mode: verify command)*******************************************\n" @@ -438,56 +479,62 @@ msgstr "" "%s\n" "***(devam etmek için return, durdurmak için x ve return'e basınız)********************\n" -#: common.c:827 +#: common.c:832 #, c-format msgid "The server (version %d.%d) does not support savepoints for ON_ERROR_ROLLBACK.\n" msgstr "Sunucu (%d.%d sürümü) ON_ERROR_ROLLBACK için savepointleri desteklememektedir.\n" -#: copy.c:120 +#: copy.c:96 +#, c-format msgid "\\copy: arguments required\n" msgstr "\\copy: parametre eksik\n" -#: copy.c:399 +#: copy.c:228 #, c-format msgid "\\copy: parse error at \"%s\"\n" msgstr "\\copy: \"%s\" ifadesinde ayrıştırma hatası\n" -#: copy.c:401 +#: copy.c:230 +#, c-format msgid "\\copy: parse error at end of line\n" msgstr "\\copy: satır sonunda ayrıştırma hatası\n" -#: copy.c:528 +#: copy.c:294 #, c-format msgid "%s: cannot copy from/to a directory\n" msgstr "%s: dizinden ya da dizine kopyalanamıyor\n" -#: copy.c:554 +#: copy.c:331 #, c-format msgid "\\copy: %s" msgstr "\\copy: %s" -#: copy.c:558 -#: copy.c:572 +#: copy.c:335 +#: copy.c:349 #, c-format msgid "\\copy: unexpected response (%d)\n" msgstr "\\copy: beklenmeyen yanıt (%d)\n" -#: copy.c:627 -#: copy.c:637 +#: copy.c:353 +msgid "trying to exit copy mode" +msgstr "copy modundan çıkmaya çalışıyor" + +#: copy.c:407 +#: copy.c:417 #, c-format msgid "could not write COPY data: %s\n" msgstr "COPY verisi yazılamadı: %s\n" -#: copy.c:644 +#: copy.c:424 #, c-format msgid "COPY data transfer failed: %s" msgstr "COPY veri aktarımı başarısız: %s" -#: copy.c:692 +#: copy.c:472 msgid "canceled by user" msgstr "kullanıcı tarafından iptal edildi" -#: copy.c:707 +#: copy.c:487 msgid "" "Enter data to be copied followed by a newline.\n" "End with a backslash and a period on a line by itself." @@ -495,24 +542,24 @@ msgstr "" "Kopyalanacak veriyi girin ve ardından entera basın.\n" "Sonuçlandırmak için yeni satırda ters taksim işareti ve nokta girin." -#: copy.c:819 +#: copy.c:600 msgid "aborted because of read failure" msgstr "okuma hatası nedeniyle kesildi" -#: help.c:52 +#: help.c:48 msgid "on" msgstr "açık" -#: help.c:52 +#: help.c:48 msgid "off" msgstr "kapalı" -#: help.c:74 +#: help.c:70 #, c-format msgid "could not get current user name: %s\n" msgstr "geçerli kullanıcı adı alınamadı: %s\n" -#: help.c:86 +#: help.c:82 #, c-format msgid "" "psql is the PostgreSQL interactive terminal.\n" @@ -521,12 +568,12 @@ msgstr "" "psql PostgreSQL'in etkilişimli arayüzüdür.\n" "\n" -#: help.c:87 +#: help.c:83 #, c-format msgid "Usage:\n" msgstr "Kullanımı:\n" -#: help.c:88 +#: help.c:84 #, c-format msgid "" " psql [OPTION]... [DBNAME [USERNAME]]\n" @@ -535,32 +582,32 @@ msgstr "" " psql [SEÇENEK]... [VERİTABANI ADI [KULLANICI ADI]]\n" "\n" -#: help.c:90 +#: help.c:86 #, c-format msgid "General options:\n" msgstr "Genel seçenekler:\n" -#: help.c:95 +#: help.c:91 #, c-format msgid " -c, --command=COMMAND run only single command (SQL or internal) and exit\n" msgstr " -c, --command=KOMUT tek bir komut çalıştır (SQL ya da dahili) ve çık\n" -#: help.c:96 +#: help.c:92 #, c-format msgid " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" msgstr " -d, --dbname=DBNAME bağlanılacak veritabanının adı (öntanımlı: \"%s\")\n" -#: help.c:97 +#: help.c:93 #, c-format msgid " -f, --file=FILENAME execute commands from file, then exit\n" msgstr " -f, --file=DOSYA ADI dosyadan komutları çalıştır ve çık\n" -#: help.c:98 +#: help.c:94 #, c-format msgid " -l, --list list available databases, then exit\n" msgstr " -l, --list veritabanlarını listele ve çık\n" -#: help.c:99 +#: help.c:95 #, c-format msgid "" " -v, --set=, --variable=NAME=VALUE\n" @@ -569,12 +616,12 @@ msgstr "" " -v, --set=, --variable=ADI=DEĞER\n" " ADI kısmında belirtilen psql değişkeninin değerini DEĞER ile belirtilen değer olarak ata\n" -#: help.c:101 +#: help.c:97 #, c-format msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" msgstr " -X , --no-psqlrc başlangıç dosyasını (~/.psqlrc) okuma\n" -#: help.c:102 +#: help.c:98 #, c-format msgid "" " -1 (\"one\"), --single-transaction\n" @@ -583,17 +630,17 @@ msgstr "" " -1 (\"one\"), --single-transaction\n" " komut dosyasını tek bir transaction olarak çalıştır\n" -#: help.c:104 +#: help.c:100 #, c-format msgid " --help show this help, then exit\n" msgstr " --help bu yardımı gösterir ve çıkar\n" -#: help.c:105 +#: help.c:101 #, c-format msgid " --version output version information, then exit\n" msgstr " --version sürüm bilgisini gösterir ve çıkar\n" -#: help.c:107 +#: help.c:103 #, c-format msgid "" "\n" @@ -602,52 +649,52 @@ msgstr "" "\n" "Giriş ve çıkış tercihleri:\n" -#: help.c:108 +#: help.c:104 #, c-format msgid " -a, --echo-all echo all input from script\n" msgstr " -a, --echo-all betik dosyasının içeriğini yansıt\n" -#: help.c:109 +#: help.c:105 #, c-format msgid " -e, --echo-queries echo commands sent to server\n" msgstr " -e, --echo-queries sunucuya gönderilen komutları yansıt\n" -#: help.c:110 +#: help.c:106 #, c-format msgid " -E, --echo-hidden display queries that internal commands generate\n" msgstr " -E, --echo-hidden dahili komutların ürettiği sorguları göster\n" -#: help.c:111 +#: help.c:107 #, c-format msgid " -L, --log-file=FILENAME send session log to file\n" msgstr " -L, --log-file=DOSYA ADI oturum kaydını dosyaya kaydet\n" -#: help.c:112 +#: help.c:108 #, c-format msgid " -n, --no-readline disable enhanced command line editing (readline)\n" msgstr " -n, --no-readline gelişmiş komut satırı düzenleyicisini devre dışı bırak (readline)\n" -#: help.c:113 +#: help.c:109 #, c-format msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" msgstr " -o, --output=DOSYA ADI sorgu sonuçlarını dosyaya aktar (ya da |pipe)\n" -#: help.c:114 +#: help.c:110 #, c-format msgid " -q, --quiet run quietly (no messages, only query output)\n" msgstr " -q, --quiet sessiz biçim (mesajlar kapalı, sadece sorgu sonuçları açık)\n" -#: help.c:115 +#: help.c:111 #, c-format msgid " -s, --single-step single-step mode (confirm each query)\n" msgstr " -s, --single-step tek adım biçimi (her sorguyu onaylama)\n" -#: help.c:116 +#: help.c:112 #, c-format msgid " -S, --single-line single-line mode (end of line terminates SQL command)\n" msgstr " -S, --single-line tek satır modu (satır sonu SQL komutunu sonlandırır)\n" -#: help.c:118 +#: help.c:114 #, c-format msgid "" "\n" @@ -656,12 +703,12 @@ msgstr "" "\n" "Çıktı biçimi seçenekleri:\n" -#: help.c:119 +#: help.c:115 #, c-format msgid " -A, --no-align unaligned table output mode\n" msgstr " -A, --no-align dizilmemiş tablo çıktı modu\n" -#: help.c:120 +#: help.c:116 #, c-format msgid "" " -F, --field-separator=STRING\n" @@ -670,17 +717,17 @@ msgstr "" " -F, --field-separator=DİZGİ\n" " alan ayırıcısını ayarla (default: \"%s\")\n" -#: help.c:123 +#: help.c:119 #, c-format msgid " -H, --html HTML table output mode\n" msgstr " -H, --html HTML tablosu çıktı modu\n" -#: help.c:124 +#: help.c:120 #, c-format msgid " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset command)\n" msgstr " -P, --pset=VAR[=ARG] VAR yazma ayarınına ARG değerini ata (\\pset komutuna bak)\n" -#: help.c:125 +#: help.c:121 #, c-format msgid "" " -R, --record-separator=STRING\n" @@ -689,22 +736,22 @@ msgstr "" " -R, --record-separator=DİZGİ\n" " kayıt ayracını ayarla (varsayılan: newline)\n" -#: help.c:127 +#: help.c:123 #, c-format msgid " -t, --tuples-only print rows only\n" msgstr " -t, --tuples-only sadece satırları yaz\n" -#: help.c:128 +#: help.c:124 #, c-format msgid " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, border)\n" msgstr " -T, --table-attr=TEXT HTML tablo tag parametrelerini ayarla (genişlik, kenarlık)\n" -#: help.c:129 +#: help.c:125 #, c-format msgid " -x, --expanded turn on expanded table output\n" msgstr " -x, --expanded gelişmiş tablo çıktısını atkinleştir\n" -#: help.c:131 +#: help.c:127 #, c-format msgid "" "\n" @@ -713,36 +760,36 @@ msgstr "" "\n" "Bağlantı seçenekleri:\n" -#: help.c:134 +#: help.c:130 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory (default: \"%s\")\n" msgstr " -h, --host= HOST ADI veritabanı sunucu adresi ya da soket dizini (varsayılan: \"%s\")\n" -#: help.c:135 +#: help.c:131 msgid "local socket" msgstr "yerel soket" -#: help.c:138 +#: help.c:134 #, c-format msgid " -p, --port=PORT database server port (default: \"%s\")\n" msgstr " -p, --port=PORT veritabanı sunucusu port numarası (varsayılan: \"%s\")\n" -#: help.c:144 +#: help.c:140 #, c-format msgid " -U, --username=USERNAME database user name (default: \"%s\")\n" msgstr " -U, --username=KULLANICI ADI veritabanı kullanıcı adı (varsayılan: \"%s\")\n" -#: help.c:145 +#: help.c:141 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -W, --no-password bağlanmak için kesinlikle parola sorma\n" -#: help.c:146 +#: help.c:142 #, c-format msgid " -W, --password force password prompt (should happen automatically)\n" msgstr " -W şifre sor (otomatik olarak her zaman açık)\n" -#: help.c:148 +#: help.c:144 #, c-format msgid "" "\n" @@ -757,210 +804,230 @@ msgstr "" "bakın.\n" "\n" -#: help.c:151 +#: help.c:147 #, c-format msgid "Report bugs to .\n" msgstr "Hataları adresine bildirebilirsiniz.\n" -#: help.c:169 +#: help.c:165 #, c-format msgid "General\n" msgstr "Genel\n" -#: help.c:170 +#: help.c:166 #, c-format msgid " \\copyright show PostgreSQL usage and distribution terms\n" msgstr " \\copyright PostgreSQL kullanım ve dağıtım şartlarını göster\n" -#: help.c:171 +#: help.c:167 #, c-format msgid " \\g [FILE] or ; execute query (and send results to file or |pipe)\n" msgstr " \\g [DOSYA] or ; sorguyu çalıştır (anve sonucu dosyaya ya da |pipe'a gönder)\n" -#: help.c:172 +#: help.c:168 #, c-format msgid " \\h [NAME] help on syntax of SQL commands, * for all commands\n" msgstr " \\h [NAME] SQL komutları için sözdizimi yardımı, tüm komutlar için * ekleyin\n" -#: help.c:173 +#: help.c:169 #, c-format msgid " \\q quit psql\n" msgstr " \\q psql'den çık\n" -#: help.c:176 +#: help.c:172 #, c-format msgid "Query Buffer\n" msgstr "Sorgu tamponu\n" -#: help.c:177 -#, c-format -msgid " \\e [FILE] edit the query buffer (or file) with external editor\n" +#: help.c:173 +#, fuzzy, c-format +msgid " \\e [FILE] [LINE] edit the query buffer (or file) with external editor\n" msgstr " \\e [FILE] sorgu tamponunu (ya da dosyasını) harici bir metin düzenleyici ile düzenle\n" -#: help.c:178 -#, c-format -msgid " \\ef [FUNCNAME] edit function definition with external editor\n" +#: help.c:174 +#, fuzzy, c-format +msgid " \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" msgstr " \\ef [FUNCNAME] fonksiyon tanımını harici bir metin düzenleyici ile düzenle\n" -#: help.c:179 +#: help.c:175 #, c-format msgid " \\p show the contents of the query buffer\n" msgstr " \\p sorgu tamponunun içeriğini göster\n" -#: help.c:180 +#: help.c:176 #, c-format msgid " \\r reset (clear) the query buffer\n" msgstr " \\r sorgu tamponunu sıfırla (temizle)\n" -#: help.c:182 +#: help.c:178 #, c-format msgid " \\s [FILE] display history or save it to file\n" msgstr " \\s [DOSYA] geçmişi göster ya da dosyaya kaydet\n" -#: help.c:184 +#: help.c:180 #, c-format msgid " \\w FILE write query buffer to file\n" msgstr " \\w DOSYA sorgu tamponunu dosyaya kaydet\n" -#: help.c:187 +#: help.c:183 #, c-format msgid "Input/Output\n" msgstr "Giriş/Çıkış\n" -#: help.c:188 +#: help.c:184 #, c-format msgid " \\copy ... perform SQL COPY with data stream to the client host\n" msgstr " \\copy ... istemci sisteminden veri akımı ile SQL COPY komutunu çalıştır\n" -#: help.c:189 +#: help.c:185 #, c-format msgid " \\echo [STRING] write string to standard output\n" msgstr " \\echo [METIN] standart çıktıya bir satır gönder\n" -#: help.c:190 +#: help.c:186 #, c-format msgid " \\i FILE execute commands from file\n" msgstr " \\i DOSYA dosyadaki komutları çalıştıre\n" -#: help.c:191 +#: help.c:187 +#, fuzzy, c-format +msgid " \\ir FILE as \\i, but relative to location of current script\n" +msgstr " \\o [DOSYA] tüm sorgu sonuçlarını dosyaya ya da |pipe'e gönder\n" + +#: help.c:188 #, c-format msgid " \\o [FILE] send all query results to file or |pipe\n" msgstr " \\o [DOSYA] tüm sorgu sonuçlarını dosyaya ya da |pipe'e gönder\n" -#: help.c:192 +#: help.c:189 #, c-format msgid " \\qecho [STRING] write string to query output stream (see \\o)\n" msgstr " \\qecho [STRING] sorgu çıktı akımına dizgi yaz (\\o seçeneğine bakınız)\n" -#: help.c:195 +#: help.c:192 #, c-format msgid "Informational\n" msgstr "Bilgi edinme\n" -#: help.c:196 +#: help.c:193 #, c-format msgid " (options: S = show system objects, + = additional detail)\n" msgstr " (seçenekler: S = sistem nesnelerini göster, + = ek ayrıntılar)\n" -#: help.c:197 +#: help.c:194 #, c-format msgid " \\d[S+] list tables, views, and sequences\n" msgstr " \\d[S+] tablo, views, ve sequenceleri listele\n" -#: help.c:198 +#: help.c:195 #, c-format msgid " \\d[S+] NAME describe table, view, sequence, or index\n" msgstr " \\d[S+} AD tablo, indeks, sequence, ya da view tanımlarını göster\n" -#: help.c:199 +#: help.c:196 #, c-format -msgid " \\da[+] [PATTERN] list aggregates\n" -msgstr " \\da[+] [PATTERN] aggregateleri listele\n" +msgid " \\da[S] [PATTERN] list aggregates\n" +msgstr " \\da[S] [PATTERN] aggregateleri listele\n" -#: help.c:200 +#: help.c:197 #, c-format msgid " \\db[+] [PATTERN] list tablespaces\n" msgstr " \\db[+] [PATTERN] tablespaceleri listele\n" +#: help.c:198 +#, c-format +msgid " \\dc[S+] [PATTERN] list conversions\n" +msgstr " \\dc[S+] [PATTERN] dönüşümleri listele\n" + +#: help.c:199 +#, c-format +msgid " \\dC[+] [PATTERN] list casts\n" +msgstr " \\dC[+] [PATTERN] castleri listele\n" + +#: help.c:200 +#, fuzzy, c-format +msgid " \\dd[S] [PATTERN] show object descriptions not displayed elsewhere\n" +msgstr " \\dd[S] [PATTERN] nesnelerin yorumlarını göster\n" + #: help.c:201 #, c-format -msgid " \\dc[S] [PATTERN] list conversions\n" -msgstr " \\dc[S] [PATTERN] dönüşümleri listele\n" +msgid " \\ddp [PATTERN] list default privileges\n" +msgstr " \\ddp [PATTERN] öntanımlı izinleri listele\n" #: help.c:202 #, c-format -msgid " \\dC [PATTERN] list casts\n" -msgstr " \\dC [PATTERN] castleri listele\n" +msgid " \\dD[S+] [PATTERN] list domains\n" +msgstr " \\dD[S+] [PATTERN] domainleri listele\n" #: help.c:203 #, c-format -msgid " \\dd[S] [PATTERN] show comments on objects\n" -msgstr " \\dd[S] [PATTERN] nesnelerin yorumlarını göster\n" +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [PATTERN] foreign tabloları listele\n" #: help.c:204 #, c-format -msgid " \\dD[S] [PATTERN] list domains\n" -msgstr " \\dD[S] [PATTERN] domainleri listele\n" - -#: help.c:205 -#, c-format msgid " \\des[+] [PATTERN] list foreign servers\n" msgstr " \\des[+] [PATTERN] foreign sunucuları listele\n" -#: help.c:206 +#: help.c:205 #, c-format msgid " \\deu[+] [PATTERN] list user mappings\n" msgstr " \\deu[+] [PATTERN] kullanıcı haritalamasını listele\n" -#: help.c:207 +#: help.c:206 #, c-format msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" msgstr " \\dew[+] [PATTERN] foreign-data wrapperlarını listele\n" -#: help.c:208 +#: help.c:207 #, c-format msgid " \\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions\n" msgstr " \\df[antw][S+] [PATRN] [sadece agg/normal/trigger/window] fonksiyonlarını listele\n" -#: help.c:209 +#: help.c:208 #, c-format msgid " \\dF[+] [PATTERN] list text search configurations\n" msgstr " \\dF[+] [PATTERN] metin arama yapılandırmalarını listele\n" -#: help.c:210 +#: help.c:209 #, c-format msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" msgstr " \\dFd[+] [PATTERN] metin arama sözlüklerini listele\n" -#: help.c:211 +#: help.c:210 #, c-format msgid " \\dFp[+] [PATTERN] list text search parsers\n" msgstr " \\dFp[+] [PATTERN] metin arama ayrıştırıcılarını listele\n" -#: help.c:212 +#: help.c:211 #, c-format msgid " \\dFt[+] [PATTERN] list text search templates\n" msgstr " \\dFt[+] [PATTERN] metin arama şablonlarını listele\n" -#: help.c:213 +#: help.c:212 #, c-format -msgid " \\dg [PATTERN] list roles (groups)\n" -msgstr " \\dg [PATTERN] rolleri (grupları) listele\n" +msgid " \\dg[+] [PATTERN] list roles\n" +msgstr " \\dg[+] [PATTERN] rolleri listele\n" -#: help.c:214 +#: help.c:213 #, c-format msgid " \\di[S+] [PATTERN] list indexes\n" msgstr " \\di[S+] [PATTERN] indexleri göster\n" -#: help.c:215 +#: help.c:214 #, c-format msgid " \\dl list large objects, same as \\lo_list\n" msgstr " \\dl large objectleri göster; \\lo_list ile aynıdır\n" +#: help.c:215 +#, c-format +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [PATTERN] yordamsal dilleri listele\n" + #: help.c:216 #, c-format -msgid " \\dn[+] [PATTERN] list schemas\n" -msgstr " \\dn[+] [PATTERN] şemaları listele\n" +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [PATTERN] şemaları listele\n" #: help.c:217 #, c-format @@ -969,70 +1036,95 @@ msgstr " \\do[S] [PATTERN] operatörleri listele\n" #: help.c:218 #, c-format +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [PATTERN] collationları listele\n" + +#: help.c:219 +#, c-format msgid " \\dp [PATTERN] list table, view, and sequence access privileges\n" msgstr " \\dp [PATTERN] tablo, view, ve sequence erişim izinlerini listele\n" -#: help.c:219 +#: help.c:220 +#, c-format +msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n" +msgstr " \\drds [PATRN1 [PATRN2]] veritabanı başına rol ayarlarını listele\n" + +#: help.c:221 #, c-format msgid " \\ds[S+] [PATTERN] list sequences\n" msgstr " \\ds[S+] [PATTERN] sequenceları listele\n" -#: help.c:220 +#: help.c:222 #, c-format msgid " \\dt[S+] [PATTERN] list tables\n" msgstr " \\dt[S+] [PATTERN] tabloları listele\n" -#: help.c:221 +#: help.c:223 #, c-format msgid " \\dT[S+] [PATTERN] list data types\n" msgstr " \\dT[S+] [PATTERN] veri tiplerini listele\n" -#: help.c:222 +#: help.c:224 #, c-format -msgid " \\du [PATTERN] list roles (users)\n" -msgstr " \\du [PATTERN] rolleri (kullanıcıları) listele\n" +msgid " \\du[+] [PATTERN] list roles\n" +msgstr " \\du[+] [PATTERN] rolleri listele\n" -#: help.c:223 +#: help.c:225 #, c-format msgid " \\dv[S+] [PATTERN] list views\n" msgstr " \\dv[S+] [PATTERN] viewları listele\n" -#: help.c:224 +#: help.c:226 +#, fuzzy, c-format +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dt[S+] [PATTERN] tabloları listele\n" + +#: help.c:227 +#, c-format +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [PATTERN] uzantıları listele\n" + +#: help.c:228 #, c-format msgid " \\l[+] list all databases\n" msgstr " \\l[+] tüm tablespaceleri listele\n" -#: help.c:225 +#: help.c:229 +#, fuzzy, c-format +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\ef [FUNCNAME] fonksiyon tanımını harici bir metin düzenleyici ile düzenle\n" + +#: help.c:230 #, c-format msgid " \\z [PATTERN] same as \\dp\n" msgstr " \\z [PATTERN] \\dp ile aynı\n" -#: help.c:228 +#: help.c:233 #, c-format msgid "Formatting\n" msgstr "Biçimlendirme:\n" -#: help.c:229 +#: help.c:234 #, c-format msgid " \\a toggle between unaligned and aligned output mode\n" msgstr " \\a düzenli ve düzensiz çıktı modu arasında geçiş yap\n" -#: help.c:230 +#: help.c:235 #, c-format msgid " \\C [STRING] set table title, or unset if none\n" msgstr " \\C [DİZİ] tablo başlığını ayarla, ya da boş bırakılırsa kaldır\n" -#: help.c:231 +#: help.c:236 #, c-format msgid " \\f [STRING] show or set field separator for unaligned query output\n" msgstr " \\f [DİZİ] düzensiz sorgu çıktısı için alan ayracını göster ya da tanımla\n" -#: help.c:232 +#: help.c:237 #, c-format msgid " \\H toggle HTML output mode (currently %s)\n" msgstr " \\H HTML çıktı modunu değiştir (şu anda %s)\n" -#: help.c:234 +#: help.c:239 #, c-format msgid "" " \\pset NAME [VALUE] set table output option\n" @@ -1043,27 +1135,27 @@ msgstr "" " (AD := {format|border|expanded|fieldsep|footer|null|\n" " numericlocale|recordsep|tuples_only|title|tableattr|pager})\n" -#: help.c:237 +#: help.c:242 #, c-format msgid " \\t [on|off] show only rows (currently %s)\n" msgstr " \\t [on|off] sadece satırları göster (şu an %s)\n" -#: help.c:239 +#: help.c:244 #, c-format msgid " \\T [STRING] set HTML
tag attributes, or unset if none\n" msgstr " \\T [DİZGİ] HTML
parametrelerini tanımla, boş ise tüm parametrelerini kaldır\n" -#: help.c:240 +#: help.c:245 #, c-format msgid " \\x [on|off] toggle expanded output (currently %s)\n" msgstr " \\x [on|off] geniş çıktı ayarla (şu an %s)\n" -#: help.c:244 +#: help.c:249 #, c-format msgid "Connection\n" msgstr "Bağlantı\n" -#: help.c:245 +#: help.c:250 #, c-format msgid "" " \\c[onnect] [DBNAME|- USER|- HOST|- PORT|-]\n" @@ -1072,62 +1164,67 @@ msgstr "" " \\c[onnect] [VERİTABANI ADI|- KULLANICI ADI|- KARŞI SUNUCU|- PORT|-]\n" " yeni veritabanına bağlan (geçerli veritabanı \"%s\")\n" -#: help.c:248 +#: help.c:253 #, c-format msgid " \\encoding [ENCODING] show or set client encoding\n" msgstr " \\encoding [KODLAMA] istemci dil kodlamasını göster\n" -#: help.c:249 +#: help.c:254 #, c-format msgid " \\password [USERNAME] securely change the password for a user\n" msgstr " \\password [KULLANICI ADI] kullanıcının parolasını güvenli şekilde değiştir\n" -#: help.c:252 +#: help.c:255 +#, c-format +msgid " \\conninfo display information about current connection\n" +msgstr "" + +#: help.c:258 #, c-format msgid "Operating System\n" msgstr "işletim Sistemi\n" -#: help.c:253 +#: help.c:259 #, c-format msgid " \\cd [DIR] change the current working directory\n" msgstr " \\cd [DIR] geçerli çalışma dizinini değiştir\n" -#: help.c:254 +#: help.c:260 #, c-format msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" msgstr " \\timing [on|off] komutların çalışma zamanlamasının gösterilmesini değiştir (şu anda %s)\n" -#: help.c:256 +#: help.c:262 #, c-format msgid " \\! [COMMAND] execute command in shell or start interactive shell\n" msgstr " \\! [KOMUT] komutu kabukta çalıştır ya da etkileşimli kabuğu başlat\n" -#: help.c:259 +#: help.c:265 #, c-format msgid "Variables\n" msgstr "Değişkenler\n" -#: help.c:260 +#: help.c:266 #, c-format msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" msgstr " \\prompt [METİN] AD kullanıcıdan dahili değişkeni değiştirmesini iste\n" -#: help.c:261 +#: help.c:267 #, c-format msgid " \\set [NAME [VALUE]] set internal variable, or list all if no parameters\n" msgstr " \\set [AD [DEĞER]] dahili değişkene değer ata, DEĞER boş ise tüm değişkenlerin listesini göster\n" -#: help.c:262 +#: help.c:268 #, c-format msgid " \\unset NAME unset (delete) internal variable\n" msgstr " \\unset AD dahili değişkenleri sıfırla(sil)\n" -#: help.c:265 +#: help.c:271 #, c-format msgid "Large Objects\n" msgstr "Large Objectler\n" -#: help.c:266 +#: help.c:272 #, c-format msgid "" " \\lo_export LOBOID FILE\n" @@ -1140,11 +1237,11 @@ msgstr "" " \\lo_list\n" " \\lo_unlink LOBOID large object operasyonları\n" -#: help.c:318 +#: help.c:319 msgid "Available help:\n" msgstr "Yardım:\n" -#: help.c:407 +#: help.c:403 #, c-format msgid "" "Command: %s\n" @@ -1159,26 +1256,27 @@ msgstr "" "%s\n" "\n" -#: help.c:423 -#, c-format +#: help.c:419 +#, fuzzy, c-format msgid "" -"No help available for \"%-.*s\".\n" +"No help available for \"%s\".\n" "Try \\h with no arguments to see available help.\n" msgstr "" "\"%-.*s\" için yardım bulunmamaktadır.\n" "\\h yazarak yardım konularının listesini görüntüleyin.\n" -#: input.c:187 +#: input.c:198 #, c-format msgid "could not read from input file: %s\n" msgstr "girdi dosyasından okunamadı: %s\n" -#: input.c:347 +#: input.c:406 #, c-format msgid "could not save history to file \"%s\": %s\n" msgstr "İşlem geçmişi \"%s\" dosyasına kaydedilemiyor: %s\n" -#: input.c:352 +#: input.c:411 +#, c-format msgid "history is not supported by this installation\n" msgstr "bu kurulum işlem geçmişini desteklemiyor\n" @@ -1197,46 +1295,70 @@ msgstr "%s: geçerli transaction iptal edildi\n" msgid "%s: unknown transaction status\n" msgstr "%s: bilinmeyen transaction durumu\n" -#: large_obj.c:286 +#: large_obj.c:289 +#: large_obj.c:300 msgid "ID" msgstr "ID" -#: large_obj.c:287 -#: describe.c:95 -#: describe.c:158 -#: describe.c:337 -#: describe.c:490 -#: describe.c:565 -#: describe.c:636 -#: describe.c:759 -#: describe.c:1237 -#: describe.c:2008 -#: describe.c:2139 -#: describe.c:2431 -#: describe.c:2493 -#: describe.c:2629 -#: describe.c:2668 -#: describe.c:2735 -#: describe.c:2794 -#: describe.c:2803 -#: describe.c:2862 +#: large_obj.c:290 +#: describe.c:147 +#: describe.c:335 +#: describe.c:637 +#: describe.c:787 +#: describe.c:2533 +#: describe.c:2651 +#: describe.c:3042 +#: describe.c:3673 +#: describe.c:3754 +msgid "Owner" +msgstr "Sahibi" + +#: large_obj.c:291 +#: large_obj.c:301 +#: describe.c:96 +#: describe.c:159 +#: describe.c:338 +#: describe.c:501 +#: describe.c:590 +#: describe.c:661 +#: describe.c:855 +#: describe.c:1380 +#: describe.c:2350 +#: describe.c:2557 +#: describe.c:2678 +#: describe.c:2746 +#: describe.c:2817 +#: describe.c:2901 +#: describe.c:2985 +#: describe.c:3050 +#: describe.c:3115 +#: describe.c:3251 +#: describe.c:3290 +#: describe.c:3357 +#: describe.c:3416 +#: describe.c:3425 +#: describe.c:3484 +#: describe.c:3698 +#: describe.c:3775 +#: describe.c:3904 +#: describe.c:3970 msgid "Description" msgstr "Açıklama" -#: large_obj.c:295 +#: large_obj.c:310 msgid "Large objects" msgstr "Large objectler" -#: mainloop.c:156 +#: mainloop.c:159 #, c-format msgid "Use \"\\q\" to leave %s.\n" msgstr "%s'den çıkmak için \"\\q\" kullanın.\n" -#: mainloop.c:182 +#: mainloop.c:189 msgid "You are using psql, the command-line interface to PostgreSQL." msgstr "PostgreSQL'in komut satırı arabirimi olan psql'i kullanıyorsunuz." -#: mainloop.c:183 +#: mainloop.c:190 #, c-format msgid "" "Type: \\copyright for distribution terms\n" @@ -1251,44 +1373,44 @@ msgstr "" " \\g ya da noktalı virgül: sorguyu çalıştırmak için\n" " \\q çıkmak için\n" -#: print.c:973 +#: print.c:1138 #, c-format msgid "(No rows)\n" msgstr "(Satır yok)\n" -#: print.c:1960 +#: print.c:2028 #, c-format msgid "Interrupted\n" msgstr "kesildi\n" -#: print.c:2027 +#: print.c:2097 #, c-format msgid "Cannot add header to table content: column count of %d exceeded.\n" msgstr "B aşlık tablo içeriğine eklenemedi: %d kolon sayısı aşıldı.\n" -#: print.c:2064 +#: print.c:2137 #, c-format msgid "Cannot add cell to table content: total cell count of %d exceeded.\n" msgstr "Hücre tablo içeriğine eklenemedi: %d olan toplan hücre sayısı açıldı.\n" -#: print.c:2263 +#: print.c:2358 #, c-format msgid "invalid output format (internal error): %d" msgstr "geçersiz çıktı biçimi (iç hata): %d" -#: print.c:2352 +#: print.c:2455 #, c-format msgid "(%lu row)" msgid_plural "(%lu rows)" msgstr[0] "(%lu satır)" msgstr[1] "(%lu satır)" -#: startup.c:217 +#: startup.c:243 #, c-format msgid "%s: could not open log file \"%s\": %s\n" msgstr "%s: \"%s\" kayıti dosyası açılamıyor: %s\n" -#: startup.c:279 +#: startup.c:305 #, c-format msgid "" "Type \"help\" for help.\n" @@ -1297,744 +1419,881 @@ msgstr "" "Yardım için \"help\" yazınız.\n" "\n" -#: startup.c:425 +#: startup.c:451 #, c-format msgid "%s: could not set printing parameter \"%s\"\n" msgstr "%s: \"%s\" yazdırma parametrlesi ayarlanamıyor\n" -#: startup.c:464 +#: startup.c:490 #, c-format msgid "%s: could not delete variable \"%s\"\n" msgstr "%s: \"%s\" değişkeni silinemiyor\n" -#: startup.c:474 +#: startup.c:500 #, c-format msgid "%s: could not set variable \"%s\"\n" msgstr "%s: \"%s\" değişkeni atanamıyor\n" -#: startup.c:511 -#: startup.c:517 +#: startup.c:537 +#: startup.c:543 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Daha fazla bilgi için \"%s --help\" yazın.\n" -#: startup.c:534 +#: startup.c:560 #, c-format msgid "%s: warning: extra command-line argument \"%s\" ignored\n" msgstr "%s: uyarı: \"%s\" fazla argümanı atlanmıştır\n" -#: startup.c:599 +#: startup.c:625 msgid "contains support for command-line editing" msgstr "komut satırı düzenleme desteği mevcuttur" -#: describe.c:68 -#: describe.c:235 -#: describe.c:462 -#: describe.c:560 -#: describe.c:681 -#: describe.c:756 -#: describe.c:2117 -#: describe.c:2237 -#: describe.c:2292 -#: describe.c:2491 -#: describe.c:2718 -#: describe.c:2790 -#: describe.c:2801 -#: describe.c:2860 -msgid "Schema" -msgstr "Şema" - #: describe.c:69 -#: describe.c:145 #: describe.c:236 #: describe.c:463 -#: describe.c:561 -#: describe.c:611 -#: describe.c:682 -#: describe.c:757 -#: describe.c:2118 -#: describe.c:2238 -#: describe.c:2293 -#: describe.c:2422 -#: describe.c:2492 -#: describe.c:2719 -#: describe.c:2791 -#: describe.c:2802 -#: describe.c:2861 -#: describe.c:3051 -#: describe.c:3110 -msgid "Name" -msgstr "Adı" +#: describe.c:585 +#: describe.c:706 +#: describe.c:788 +#: describe.c:852 +#: describe.c:2524 +#: describe.c:2725 +#: describe.c:2807 +#: describe.c:2977 +#: describe.c:3113 +#: describe.c:3340 +#: describe.c:3412 +#: describe.c:3423 +#: describe.c:3482 +#: describe.c:3890 +#: describe.c:3969 +msgid "Schema" +msgstr "Şema" #: describe.c:70 -#: describe.c:248 -#: describe.c:294 -#: describe.c:311 -msgid "Result data type" -msgstr "Sonuç veri tipi" +#: describe.c:146 +#: describe.c:237 +#: describe.c:464 +#: describe.c:586 +#: describe.c:636 +#: describe.c:707 +#: describe.c:853 +#: describe.c:2525 +#: describe.c:2647 +#: describe.c:2726 +#: describe.c:2808 +#: describe.c:2978 +#: describe.c:3041 +#: describe.c:3114 +#: describe.c:3341 +#: describe.c:3413 +#: describe.c:3424 +#: describe.c:3483 +#: describe.c:3672 +#: describe.c:3753 +#: describe.c:3967 +msgid "Name" +msgstr "Adı" -#: describe.c:84 -#: describe.c:88 +#: describe.c:71 #: describe.c:249 #: describe.c:295 #: describe.c:312 +msgid "Result data type" +msgstr "Sonuç veri tipi" + +#: describe.c:85 +#: describe.c:89 +#: describe.c:250 +#: describe.c:296 +#: describe.c:313 msgid "Argument data types" msgstr "Argüman veri tipi" -#: describe.c:113 +#: describe.c:114 msgid "List of aggregate functions" msgstr "Aggregate fonksiyonların listesi" -#: describe.c:134 +#: describe.c:135 #, c-format msgid "The server (version %d.%d) does not support tablespaces.\n" msgstr "Bu sunucu (%d.%d sürümü) tablespace desteklememektedir.\n" -#: describe.c:146 -#: describe.c:334 -#: describe.c:612 -#: describe.c:2125 -#: describe.c:2423 -#: describe.c:3052 -#: describe.c:3111 -msgid "Owner" -msgstr "Sahibi" - -#: describe.c:147 +#: describe.c:148 msgid "Location" msgstr "Yer" -#: describe.c:175 +#: describe.c:176 msgid "List of tablespaces" msgstr "Tablespace listesi" -#: describe.c:212 +#: describe.c:213 #, c-format msgid "\\df only takes [antwS+] as options\n" msgstr "\\df sadece [antwS+] seçeneklerini alır\n" -#: describe.c:218 +#: describe.c:219 #, c-format msgid "\\df does not take a \"w\" option with server version %d.%d\n" msgstr "\\df \"w\" seçeneğini %d.%d sunucu sürümünde almaz\n" #. translator: "agg" is short for "aggregate" -#: describe.c:251 -#: describe.c:297 -#: describe.c:314 +#: describe.c:252 +#: describe.c:298 +#: describe.c:315 msgid "agg" msgstr "agg" -#: describe.c:252 +#: describe.c:253 msgid "window" msgstr "pencere" -#: describe.c:253 -#: describe.c:298 -#: describe.c:315 -#: describe.c:896 -msgid "trigger" -msgstr "tetikleyici (trigger)" - #: describe.c:254 #: describe.c:299 #: describe.c:316 -msgid "normal" -msgstr "normal" +#: describe.c:960 +msgid "trigger" +msgstr "tetikleyici (trigger)" #: describe.c:255 #: describe.c:300 #: describe.c:317 -#: describe.c:684 -#: describe.c:1222 -#: describe.c:2124 -#: describe.c:2239 -#: describe.c:3123 +msgid "normal" +msgstr "normal" + +#: describe.c:256 +#: describe.c:301 +#: describe.c:318 +#: describe.c:710 +#: describe.c:792 +#: describe.c:1354 +#: describe.c:2532 +#: describe.c:2727 +#: describe.c:3772 msgid "Type" msgstr "Veri tipi" -#: describe.c:330 +#: describe.c:331 msgid "immutable" msgstr "durağan" -#: describe.c:331 +#: describe.c:332 msgid "stable" msgstr "kararlı" -#: describe.c:332 +#: describe.c:333 msgid "volatile" msgstr "oynaklık" -#: describe.c:333 +#: describe.c:334 msgid "Volatility" msgstr "Oynaklık" -#: describe.c:335 +#: describe.c:336 msgid "Language" msgstr "Dil" -#: describe.c:336 +#: describe.c:337 msgid "Source code" msgstr "Kaynak kodu" -#: describe.c:434 +#: describe.c:435 msgid "List of functions" msgstr "Fonksiyonların listesi" -#: describe.c:473 +#: describe.c:474 msgid "Internal name" msgstr "Dahili adı" -#: describe.c:474 -#: describe.c:628 -#: describe.c:2135 +#: describe.c:475 +#: describe.c:653 +#: describe.c:2549 +#: describe.c:2553 msgid "Size" msgstr "Boyut" -#: describe.c:486 +#: describe.c:496 msgid "Elements" msgstr "Elemanlar" -#: describe.c:529 +#: describe.c:541 msgid "List of data types" msgstr "Veri tiplerinin listesi" -#: describe.c:562 +#: describe.c:587 msgid "Left arg type" msgstr "Sol argüman veri tipi" -#: describe.c:563 +#: describe.c:588 msgid "Right arg type" msgstr "Sağ argüman veri tipi" -#: describe.c:564 +#: describe.c:589 msgid "Result type" msgstr "Sonuç veri tipi" -#: describe.c:583 +#: describe.c:608 msgid "List of operators" msgstr "Operatörlerin listesi" -#: describe.c:613 +#: describe.c:638 msgid "Encoding" msgstr "Dil Kodlaması" -#: describe.c:618 -msgid "Collation" +#: describe.c:643 +#: describe.c:2979 +#, fuzzy +msgid "Collate" msgstr "Sıralama" -#: describe.c:619 +#: describe.c:644 +#: describe.c:2980 msgid "Ctype" msgstr "Ctype" -#: describe.c:632 +#: describe.c:657 msgid "Tablespace" msgstr "Tablespace" -#: describe.c:649 +#: describe.c:674 msgid "List of databases" msgstr "Veritabanlarının listesi" -#: describe.c:683 -#: describe.c:851 -#: describe.c:2119 +#: describe.c:708 +#: describe.c:789 +#: describe.c:2526 +#: sql_help.c:603 +#: sql_help.c:850 +#: sql_help.c:977 +#: sql_help.c:1442 +#: sql_help.c:1572 +#: sql_help.c:1606 +#: sql_help.c:1852 +#: sql_help.c:2010 +#: sql_help.c:2195 +#: sql_help.c:2276 +#: sql_help.c:2482 +#: sql_help.c:3119 +#: sql_help.c:3139 +#: sql_help.c:3141 +#: sql_help.c:3142 msgid "table" msgstr "tablo" -#: describe.c:683 -#: describe.c:852 -#: describe.c:2120 +#: describe.c:708 +#: describe.c:2527 msgid "view" msgstr "view" -#: describe.c:683 -#: describe.c:854 -#: describe.c:2122 +#: describe.c:708 +#: describe.c:790 +#: describe.c:2529 msgid "sequence" msgstr "sequence" -#: describe.c:695 +#: describe.c:709 +#: describe.c:2531 +#, fuzzy +msgid "foreign table" +msgstr "referans tablosu" + +#: describe.c:721 msgid "Column access privileges" msgstr "Kolon erişim hakları" -#: describe.c:721 -#: describe.c:3218 -#: describe.c:3222 +#: describe.c:747 +#: describe.c:4114 +#: describe.c:4118 msgid "Access privileges" msgstr "Erişim hakları" -#: describe.c:758 -msgid "Object" -msgstr "Nesne" - -#: describe.c:770 -msgid "aggregate" -msgstr "aggregate" +#: describe.c:775 +#, fuzzy, c-format +msgid "The server (version %d.%d) does not support altering default privileges.\n" +msgstr "Bu sunucu (%d.%d sürümü) foreign sunucularını desteklemiyor.\n" -#: describe.c:790 +#: describe.c:791 msgid "function" msgstr "fonksiyon" -#: describe.c:809 -msgid "operator" -msgstr "operatör" +#: describe.c:815 +#, fuzzy +msgid "Default access privileges" +msgstr "erişim haklarını tanımla" -#: describe.c:828 -msgid "data type" -msgstr "veri tipi" +#: describe.c:854 +msgid "Object" +msgstr "Nesne" -#: describe.c:853 -#: describe.c:2121 -msgid "index" -msgstr "indeks" +#: describe.c:868 +#: sql_help.c:1302 +msgid "constraint" +msgstr "kısıtlama" + +#: describe.c:896 +#, fuzzy +msgid "operator class" +msgstr "%s operatoru" -#: describe.c:875 +#: describe.c:918 +#, fuzzy +msgid "operator family" +msgstr "opeartör ailesini kaldır" + +#: describe.c:940 msgid "rule" msgstr "rule" -#: describe.c:919 +#: describe.c:982 msgid "Object descriptions" msgstr "Nesne açıklamaları" -#: describe.c:972 +#: describe.c:1035 #, c-format msgid "Did not find any relation named \"%s\".\n" msgstr "\"%s\" adında nesne bulunamadı.\n" -#: describe.c:1109 +#: describe.c:1207 #, c-format msgid "Did not find any relation with OID %s.\n" msgstr "OID %s olan nesne bulunamadı.\n" -#: describe.c:1184 +#: describe.c:1306 +#, fuzzy, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "\"%s.%s\" tablosu için " + +#: describe.c:1309 #, c-format msgid "Table \"%s.%s\"" msgstr "Tablo \"%s.%s\"" -#: describe.c:1188 +#: describe.c:1313 #, c-format msgid "View \"%s.%s\"" msgstr "View \"%s.%s\"" -#: describe.c:1192 +#: describe.c:1317 #, c-format msgid "Sequence \"%s.%s\"" msgstr "Sequence \"%s.%s\"" -#: describe.c:1196 +#: describe.c:1322 +#, fuzzy, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "İndex \"%s.%s\"" + +#: describe.c:1325 #, c-format msgid "Index \"%s.%s\"" msgstr "İndex \"%s.%s\"" -#: describe.c:1201 +#: describe.c:1330 #, c-format msgid "Special relation \"%s.%s\"" msgstr "Özel nesne \"%s.%s\"" -#: describe.c:1205 +#: describe.c:1334 #, c-format msgid "TOAST table \"%s.%s\"" msgstr "TOAST tablosu \"%s.%s\"" -#: describe.c:1209 +#: describe.c:1338 #, c-format msgid "Composite type \"%s.%s\"" msgstr "Birleşik veri tipi \"%s.%s\"" -#: describe.c:1221 +#: describe.c:1342 +#, fuzzy, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "\"%s.%s\" tablosu için " + +#: describe.c:1353 msgid "Column" msgstr "Kolon" -#: describe.c:1227 +#: describe.c:1361 msgid "Modifiers" msgstr "Modifiers" -#: describe.c:1232 +#: describe.c:1366 msgid "Value" msgstr "Değer" -#: describe.c:1236 +#: describe.c:1369 +msgid "Definition" +msgstr "Tanım" + +#: describe.c:1372 +#: describe.c:3693 +#: describe.c:3774 +#: describe.c:3842 +#: describe.c:3903 +#, fuzzy +msgid "FDW Options" +msgstr "Seçenekler" + +#: describe.c:1376 msgid "Storage" msgstr "Saklama" -#: describe.c:1278 +#: describe.c:1425 +#, c-format +msgid "collate %s" +msgstr "" + +#: describe.c:1433 msgid "not null" msgstr "Null değil" #. translator: default values of column definitions -#: describe.c:1287 +#: describe.c:1443 #, c-format msgid "default %s" msgstr "öntanımlı %s" -#: describe.c:1353 +#: describe.c:1541 msgid "primary key, " msgstr "birincil anahtar, " -#: describe.c:1355 +#: describe.c:1543 msgid "unique, " msgstr "tekil, " -#: describe.c:1361 +#: describe.c:1549 #, c-format msgid "for table \"%s.%s\"" msgstr "\"%s.%s\" tablosu için " -#: describe.c:1365 +#: describe.c:1553 #, c-format msgid ", predicate (%s)" msgstr ", belirli (%s)" -#: describe.c:1368 +#: describe.c:1556 msgid ", clustered" msgstr ", clustered" -#: describe.c:1371 +#: describe.c:1559 msgid ", invalid" msgstr ", geçersiz" -#: describe.c:1385 +#: describe.c:1562 +msgid ", deferrable" +msgstr "" + +#: describe.c:1565 +msgid ", initially deferred" +msgstr "" + +#: describe.c:1579 msgid "View definition:" msgstr "View tanımı:" -#: describe.c:1402 -#: describe.c:1655 +#: describe.c:1596 +#: describe.c:1879 msgid "Rules:" msgstr "Rulelar:" -#: describe.c:1449 +#: describe.c:1655 msgid "Indexes:" msgstr "İndeksler:" -#: describe.c:1509 +#: describe.c:1735 msgid "Check constraints:" msgstr "Check constraints:" -#: describe.c:1540 +#: describe.c:1766 msgid "Foreign-key constraints:" msgstr "İkincil anahtar sınırlamaları:" -#: describe.c:1571 +#: describe.c:1797 msgid "Referenced by:" msgstr "Referans veren:" -#. translator: the first %s is a FK name, the following are -#. * a table name and the FK definition -#: describe.c:1576 -#, c-format -msgid " \"%s\" IN %s %s" -msgstr " \"%s\", %s %s içinde" - -#: describe.c:1658 +#: describe.c:1882 msgid "Disabled rules:" msgstr "Devre dışı bırakılmış rule'lar:" -#: describe.c:1661 +#: describe.c:1885 msgid "Rules firing always:" msgstr "Her zaman çalıştırılan rule'ler:" -#: describe.c:1664 +#: describe.c:1888 msgid "Rules firing on replica only:" msgstr "Sadece kopyada çalıştırılan rule'ler:" -#: describe.c:1760 +#: describe.c:1996 msgid "Triggers:" msgstr "Tetikleyiciler(Triggers):" -#: describe.c:1763 +#: describe.c:1999 msgid "Disabled triggers:" msgstr "Devre dışı bırakılmış tetikleyiciler:" -#: describe.c:1766 +#: describe.c:2002 msgid "Triggers firing always:" msgstr "Her zaman çalıştırılan tetikleyiciler:" -#: describe.c:1769 +#: describe.c:2005 msgid "Triggers firing on replica only:" msgstr "Sadece kopyada çalıştırılan tetikleyiciler:" -#: describe.c:1802 +#: describe.c:2086 msgid "Inherits" msgstr "Inherits" -#: describe.c:1817 +#: describe.c:2116 +#, c-format +msgid "Number of child tables: %d (Use \\d+ to list them.)" +msgstr "alt tabloların sayısı: %d (Listelemek için \\d+ kullanabilirsiniz.)" + +#: describe.c:2123 +msgid "Child tables" +msgstr "alt tablolar" + +#: describe.c:2145 +#, c-format +msgid "Typed table of type: %s" +msgstr "" + +#: describe.c:2152 msgid "Has OIDs" msgstr " OIDleri var" -#: describe.c:1820 -#: describe.c:2296 -#: describe.c:2369 +#: describe.c:2155 +#: describe.c:2811 +#: describe.c:2895 msgid "yes" msgstr "evet" -#: describe.c:1820 -#: describe.c:2296 -#: describe.c:2369 +#: describe.c:2155 +#: describe.c:2811 +#: describe.c:2893 msgid "no" msgstr "hayır" -#: describe.c:1828 -#: describe.c:3061 -#: describe.c:3125 -#: describe.c:3181 +#: describe.c:2163 msgid "Options" msgstr "Seçenekler" -#: describe.c:1913 +#: describe.c:2248 #, c-format msgid "Tablespace: \"%s\"" msgstr "Tablespace: \"%s\"" -#. translator: before this string there's an index -#. * description like '"foo_pkey" PRIMARY KEY, btree (a)' -#: describe.c:1923 +#: describe.c:2261 #, c-format msgid ", tablespace \"%s\"" msgstr ", tablespace \"%s\"" -#: describe.c:2001 +#: describe.c:2343 msgid "List of roles" msgstr "Veritabanı rolleri listesi" -#: describe.c:2003 +#: describe.c:2345 msgid "Role name" msgstr "Rol adı" -#: describe.c:2004 +#: describe.c:2346 msgid "Attributes" msgstr "Özellikler" -#: describe.c:2005 +#: describe.c:2347 msgid "Member of" msgstr "Üyesidir" -#: describe.c:2016 +#: describe.c:2358 msgid "Superuser" msgstr "Superuser" -#: describe.c:2019 +#: describe.c:2361 msgid "No inheritance" msgstr "Miras yok" -#: describe.c:2022 +#: describe.c:2364 msgid "Create role" msgstr "Rol oluştur" -#: describe.c:2025 +#: describe.c:2367 msgid "Create DB" msgstr "Veritabanı Oluştur" -#: describe.c:2028 +#: describe.c:2370 msgid "Cannot login" msgstr "Giriş yapılamıyor" -#: describe.c:2037 +#: describe.c:2374 +#, fuzzy +msgid "Replication" +msgstr "Hedef" + +#: describe.c:2383 msgid "No connections" msgstr "Bağlantı yok" -#: describe.c:2039 +#: describe.c:2385 #, c-format msgid "%d connection" msgid_plural "%d connections" msgstr[0] "%d bağlantı" msgstr[1] "1 bağlantı" -#: describe.c:2123 +#: describe.c:2452 +#, c-format +msgid "No per-database role settings support in this server version.\n" +msgstr "" + +#: describe.c:2463 +#, fuzzy, c-format +msgid "No matching settings found.\n" +msgstr "Eşleşen nesne bulunamadı.\n" + +#: describe.c:2465 +#, fuzzy, c-format +msgid "No settings found.\n" +msgstr "Nesne bulunamadı.\n" + +#: describe.c:2470 +msgid "List of settings" +msgstr "Seçeneklerin lsitesi" + +#: describe.c:2528 +msgid "index" +msgstr "indeks" + +#: describe.c:2530 msgid "special" msgstr "özel" -#: describe.c:2130 +#: describe.c:2538 +#: describe.c:3891 msgid "Table" msgstr "Tablo" -#: describe.c:2189 +#: describe.c:2612 #, c-format msgid "No matching relations found.\n" msgstr "Eşleşen nesne bulunamadı.\n" -#: describe.c:2191 +#: describe.c:2614 #, c-format msgid "No relations found.\n" msgstr "Nesne bulunamadı.\n" -#: describe.c:2196 +#: describe.c:2619 msgid "List of relations" msgstr "Nesnelerin listesi" -#: describe.c:2240 +#: describe.c:2655 +#, fuzzy +msgid "Trusted" +msgstr "Güvenilir mi?" + +#: describe.c:2663 +#, fuzzy +msgid "Internal Language" +msgstr "Dahili adı" + +#: describe.c:2664 +#, fuzzy +msgid "Call Handler" +msgstr "call_handler" + +#: describe.c:2665 +#: describe.c:3680 +msgid "Validator" +msgstr "Onaylayan" + +#: describe.c:2668 +#, fuzzy +msgid "Inline Handler" +msgstr "inline_handler" + +#: describe.c:2696 +#, fuzzy +msgid "List of languages" +msgstr "Veritabanı rolleri listesi" + +#: describe.c:2740 msgid "Modifier" msgstr "Düzenleyici" -#: describe.c:2241 +#: describe.c:2741 msgid "Check" msgstr "Check" -#: describe.c:2259 +#: describe.c:2776 msgid "List of domains" msgstr "Domainlerin listesi" -#: describe.c:2294 +#: describe.c:2809 msgid "Source" msgstr "Kaynak" -#: describe.c:2295 +#: describe.c:2810 msgid "Destination" msgstr "Hedef" -#: describe.c:2297 +#: describe.c:2812 msgid "Default?" msgstr "Varsayılan?" -#: describe.c:2315 +#: describe.c:2849 msgid "List of conversions" msgstr "Dönüşümlerin listesi" -#: describe.c:2366 +#: describe.c:2890 msgid "Source type" msgstr "Kaynak tipi" -#: describe.c:2367 +#: describe.c:2891 msgid "Target type" msgstr "Hedef tipi" -#: describe.c:2368 -#: describe.c:2628 +#: describe.c:2892 +#: describe.c:3250 msgid "Function" msgstr "Fonksiyon" -#: describe.c:2369 +#: describe.c:2894 msgid "in assignment" msgstr "in assignment" -#: describe.c:2370 +#: describe.c:2896 msgid "Implicit?" msgstr "Örtülü mü?" -#: describe.c:2396 +#: describe.c:2947 msgid "List of casts" msgstr "Castlerin listesi" -#: describe.c:2451 +#: describe.c:3015 +#, fuzzy +msgid "List of collations" +msgstr "Nesnelerin listesi" + +#: describe.c:3073 msgid "List of schemas" msgstr "Şemaların listesi" -#: describe.c:2474 -#: describe.c:2707 -#: describe.c:2775 -#: describe.c:2843 +#: describe.c:3096 +#: describe.c:3329 +#: describe.c:3397 +#: describe.c:3465 #, c-format msgid "The server (version %d.%d) does not support full text search.\n" msgstr "Bu sunucu (%d.%d sürümü) tam metin aramayı desteklememektedir.\n" -#: describe.c:2508 +#: describe.c:3130 msgid "List of text search parsers" msgstr "Metin arama ayrıştıcılarının listesi" -#: describe.c:2551 +#: describe.c:3173 #, c-format msgid "Did not find any text search parser named \"%s\".\n" msgstr "\"%s\" adında metin arama ayrıştırıcısı bulunamadı.\n" -#: describe.c:2626 +#: describe.c:3248 msgid "Start parse" msgstr "Ayrıştırmayı başlat" -#: describe.c:2627 +#: describe.c:3249 msgid "Method" msgstr "Yöntem" -#: describe.c:2631 +#: describe.c:3253 msgid "Get next token" msgstr "Sıradaki tokeni al" -#: describe.c:2633 +#: describe.c:3255 msgid "End parse" msgstr "Ayrıştırmayı bitir" -#: describe.c:2635 +#: describe.c:3257 msgid "Get headline" msgstr "Başlığı al" -#: describe.c:2637 +#: describe.c:3259 msgid "Get token types" msgstr "Token tiplerini al" -#: describe.c:2647 +#: describe.c:3269 #, c-format msgid "Text search parser \"%s.%s\"" msgstr "Metin arama ayrıştırıcısı \"%s.%s\"" -#: describe.c:2649 +#: describe.c:3271 #, c-format msgid "Text search parser \"%s\"" msgstr "\"%s\" metin arama ayrıştırıcısı" -#: describe.c:2667 +#: describe.c:3289 msgid "Token name" msgstr "Token adı" -#: describe.c:2678 +#: describe.c:3300 #, c-format msgid "Token types for parser \"%s.%s\"" msgstr "\"%s.%s\" ayrıştırıcısı için token tipleri" -#: describe.c:2680 +#: describe.c:3302 #, c-format msgid "Token types for parser \"%s\"" msgstr "\"%s\" ayrıştırıcısı için token tipleri" -#: describe.c:2729 +#: describe.c:3351 msgid "Template" msgstr "Şablon" -#: describe.c:2730 +#: describe.c:3352 msgid "Init options" msgstr "İnit seçenekleri" -#: describe.c:2752 +#: describe.c:3374 msgid "List of text search dictionaries" msgstr "Metin arama sözlüklerinin listesi" -#: describe.c:2792 +#: describe.c:3414 msgid "Init" msgstr "Init" -#: describe.c:2793 +#: describe.c:3415 msgid "Lexize" msgstr "Lexize" -#: describe.c:2820 +#: describe.c:3442 msgid "List of text search templates" msgstr "Metin arama şablonlarının listesi" -#: describe.c:2877 +#: describe.c:3499 msgid "List of text search configurations" msgstr "Metin arama yapılandırmalarının listesi" -#: describe.c:2921 +#: describe.c:3543 #, c-format msgid "Did not find any text search configuration named \"%s\".\n" msgstr "\"%s\" adında metin arama yapılandırması bulunamadı.\n" -#: describe.c:2987 +#: describe.c:3609 msgid "Token" msgstr "Token" -#: describe.c:2988 +#: describe.c:3610 msgid "Dictionaries" msgstr "Sözlükler" -#: describe.c:2999 +#: describe.c:3621 #, c-format msgid "Text search configuration \"%s.%s\"" msgstr "Metin arama yapılandırması \"%s.%s\"" -#: describe.c:3002 +#: describe.c:3624 #, c-format msgid "Text search configuration \"%s\"" msgstr "Metin arama yapılandırması \"%s\"" -#: describe.c:3006 +#: describe.c:3628 #, c-format msgid "" "\n" @@ -2043,7 +2302,7 @@ msgstr "" "\n" "Ayrıştırıcı \"%s.%s\"" -#: describe.c:3009 +#: describe.c:3631 #, c-format msgid "" "\n" @@ -2052,2719 +2311,4815 @@ msgstr "" "\n" "Ayrıştırıcı: \"%s\"" -#: describe.c:3041 +#: describe.c:3663 #, c-format msgid "The server (version %d.%d) does not support foreign-data wrappers.\n" msgstr "Sunucu (%d.%d sürümü) foreign-data wrapperlarını desteklememektedir.\n" -#: describe.c:3053 -msgid "Validator" -msgstr "Onaylayan" +#: describe.c:3677 +#, fuzzy +msgid "Handler" +msgstr "call_handler" -#: describe.c:3077 +#: describe.c:3720 msgid "List of foreign-data wrappers" msgstr "Foreign-data wrapperlarının listesi" -#: describe.c:3100 +#: describe.c:3743 #, c-format msgid "The server (version %d.%d) does not support foreign servers.\n" msgstr "Bu sunucu (%d.%d sürümü) foreign sunucularını desteklemiyor.\n" -#: describe.c:3112 +#: describe.c:3755 msgid "Foreign-data wrapper" msgstr "Foreign-data wrapper" -#: describe.c:3124 +#: describe.c:3773 +#: describe.c:3968 msgid "Version" msgstr "Sürüm" -#: describe.c:3143 +#: describe.c:3799 msgid "List of foreign servers" msgstr "Foreign sunucuların listesi" -#: describe.c:3166 +#: describe.c:3822 #, c-format msgid "The server (version %d.%d) does not support user mappings.\n" msgstr "Sunucu (%d.%d sürümü) kullanıcı haritalamasını desteklememektedir.\n" -#: describe.c:3175 +#: describe.c:3831 +#: describe.c:3892 msgid "Server" msgstr "Sunucu" -#: describe.c:3176 +#: describe.c:3832 msgid "User name" msgstr "Kullanıcı adı" -#: describe.c:3196 +#: describe.c:3857 msgid "List of user mappings" msgstr "Kullanıcı eşlemelerinin listesi" -#: sql_help.h:25 -#: sql_help.h:505 +#: describe.c:3880 +#, fuzzy, c-format +msgid "The server (version %d.%d) does not support foreign tables.\n" +msgstr "Bu sunucu (%d.%d sürümü) foreign sunucularını desteklemiyor.\n" + +#: describe.c:3931 +#, fuzzy +msgid "List of foreign tables" +msgstr "Foreign sunucuların listesi" + +#: describe.c:3954 +#: describe.c:4008 +#, fuzzy, c-format +msgid "The server (version %d.%d) does not support extensions.\n" +msgstr "Bu sunucu (%d.%d sürümü) tablespace desteklememektedir.\n" + +#: describe.c:3985 +#, fuzzy +msgid "List of installed extensions" +msgstr "Dönüşümlerin listesi" + +#: describe.c:4035 +#, fuzzy, c-format +msgid "Did not find any extension named \"%s\".\n" +msgstr "\"%s\" adında nesne bulunamadı.\n" + +#: describe.c:4038 +#, fuzzy, c-format +msgid "Did not find any extensions.\n" +msgstr "\"%s\" adında nesne bulunamadı.\n" + +#: describe.c:4082 +#, fuzzy +msgid "Object Description" +msgstr "Nesne açıklamaları" + +#: describe.c:4091 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "" + +#: sql_help.h:182 +#: sql_help.h:837 msgid "abort the current transaction" msgstr "aktif transcation'ı iptal et" -#: sql_help.h:26 -msgid "ABORT [ WORK | TRANSACTION ]" -msgstr "ABORT [ WORK | TRANSACTION ]" - -#: sql_help.h:29 +#: sql_help.h:187 msgid "change the definition of an aggregate function" msgstr "aggregate fonksiyonunun tanımını değiştir" -#: sql_help.h:30 -msgid "" -"ALTER AGGREGATE name ( type [ , ... ] ) RENAME TO new_name\n" -"ALTER AGGREGATE name ( type [ , ... ] ) OWNER TO new_owner\n" -"ALTER AGGREGATE name ( type [ , ... ] ) SET SCHEMA new_schema" -msgstr "" -"ALTER AGGREGATE name ( type [ , ... ] ) RENAME TO new_name\n" -"ALTER AGGREGATE name ( type [ , ... ] ) OWNER TO new_owner\n" -"ALTER AGGREGATE name ( type [ , ... ] ) SET SCHEMA new_schema" +#: sql_help.h:192 +#, fuzzy +msgid "change the definition of a collation" +msgstr "fonksiyon tanımını değiştir" -#: sql_help.h:33 +#: sql_help.h:197 msgid "change the definition of a conversion" msgstr "bir dönüşümün tanımını değiştir" -#: sql_help.h:34 -msgid "" -"ALTER CONVERSION name RENAME TO newname\n" -"ALTER CONVERSION name OWNER TO newowner" -msgstr "" -"ALTER CONVERSION dönüşüm_adı RENAME TO yeni_ad\n" -"ALTER CONVERSION dönüşüm_adı OWNER TO yeni_sahip" - -#: sql_help.h:37 +#: sql_help.h:202 msgid "change a database" msgstr "veritabanını değiştir" -#: sql_help.h:38 -msgid "" -"ALTER DATABASE name [ [ WITH ] option [ ... ] ]\n" -"\n" -"where option can be:\n" -"\n" -" CONNECTION LIMIT connlimit\n" -"\n" -"ALTER DATABASE name RENAME TO newname\n" -"\n" -"ALTER DATABASE name OWNER TO new_owner\n" -"\n" -"ALTER DATABASE name SET TABLESPACE new_tablespace\n" -"\n" -"ALTER DATABASE name SET configuration_parameter { TO | = } { value | DEFAULT }\n" -"ALTER DATABASE name SET configuration_parameter FROM CURRENT\n" -"ALTER DATABASE name RESET configuration_parameter\n" -"ALTER DATABASE name RESET ALL" -msgstr "" -"ALTER DATABASE veritabanı_adı [ [ WITH ] seçenek [ ... ] ]\n" -"\n" -"seçenek aşağıdakilerden birisi olabilir:\n" -"\n" -" CONNECTION LIMIT bağlantı limiti\n" -"\n" -"ALTER DATABASE veritabanı_adı RENAME TO yeni_adı\n" -"\n" -"ALTER DATABASE veritabanı_adı OWNER TO yeni_sahibi\n" -"\n" -"ALTER DATABASE veritabanı_adı SET yapılandırma_parametresi { TO | = } { değer | DEFAULT }\n" -"ALTER DATABASE veritabanı_adı SET yapılandırma_parametresi FROM CURRENT\n" -"ALTER DATABASE veritabanı_adı RESET yapılandırma_parametresi\n" -"ALTER DATABASE veritabanı_adı RESET ALL" +#: sql_help.h:207 +#, fuzzy +msgid "define default access privileges" +msgstr "erişim haklarını tanımla" -#: sql_help.h:41 +#: sql_help.h:212 msgid "change the definition of a domain" msgstr "domain tanımını değiştir" -#: sql_help.h:42 -msgid "" -"ALTER DOMAIN name\n" -" { SET DEFAULT expression | DROP DEFAULT }\n" -"ALTER DOMAIN name\n" -" { SET | DROP } NOT NULL\n" -"ALTER DOMAIN name\n" -" ADD domain_constraint\n" -"ALTER DOMAIN name\n" -" DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n" -"ALTER DOMAIN name\n" -" OWNER TO new_owner \n" -"ALTER DOMAIN name\n" -" SET SCHEMA new_schema" -msgstr "" -"ALTER DOMAIN name\n" -" { SET DEFAULT expression | DROP DEFAULT }\n" -"ALTER DOMAIN name\n" -" { SET | DROP } NOT NULL\n" -"ALTER DOMAIN name\n" -" ADD domain_constraint\n" -"ALTER DOMAIN name\n" -" DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n" -"ALTER DOMAIN name\n" -" OWNER TO new_owner \n" -"ALTER DOMAIN name\n" -" SET SCHEMA new_schema" - -#: sql_help.h:45 +#: sql_help.h:217 +#, fuzzy +msgid "change the definition of an extension" +msgstr "bir dönüşümün tanımını değiştir" + +#: sql_help.h:222 msgid "change the definition of a foreign-data wrapper" msgstr "foreign-data wrapper tanımını değiştir" -#: sql_help.h:46 -msgid "" -"ALTER FOREIGN DATA WRAPPER name\n" -" [ VALIDATOR valfunction | NO VALIDATOR ]\n" -" [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ]) ]\n" -"ALTER FOREIGN DATA WRAPPER name OWNER TO new_owner" -msgstr "" -"ALTER FOREIGN DATA WRAPPER ad\n" -" [ VALIDATOR valfunction | NO VALIDATOR ]\n" -" [ SEÇENEKLER ( [ ADD | SET | DROP ] seçenek ['değer'] [, ... ]) ]\n" -"ALTER FOREIGN DATA WRAPPER ad OWNER TO yeni sahibi" +#: sql_help.h:227 +#, fuzzy +msgid "change the definition of a foreign table" +msgstr "foreign server tanımını değiştir" -#: sql_help.h:49 +#: sql_help.h:232 msgid "change the definition of a function" msgstr "fonksiyon tanımını değiştir" -#: sql_help.h:50 -msgid "" -"ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -" action [ ... ] [ RESTRICT ]\n" -"ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -" RENAME TO new_name\n" -"ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -" OWNER TO new_owner\n" -"ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -" SET SCHEMA new_schema\n" -"\n" -"where action is one of:\n" -"\n" -" CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" -" IMMUTABLE | STABLE | VOLATILE\n" -" [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" -" COST execution_cost\n" -" ROWS result_rows\n" -" SET configuration_parameter { TO | = } { value | DEFAULT }\n" -" SET configuration_parameter FROM CURRENT\n" -" RESET configuration_parameter\n" -" RESET ALL" -msgstr "" -"ALTER FUNCTION fonksiyon_adı ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -" işlem [ ... ] [ RESTRICT ]\n" -"ALTER FUNCTION fonksiyon_adı ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -" RENAME TO yeni_adı\n" -"ALTER FUNCTION fonksiyon_adı ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -" OWNER TO yeni_sahibi\n" -"ALTER FUNCTION fonksiyon_adı ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -" SET SCHEMA yeni_şema\n" -"\n" -"işlem aşağıdakilerden birisi olabilir:\n" -"\n" -" CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" -" IMMUTABLE | STABLE | VOLATILE\n" -" [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" -" COST çalıştırma_maliyeti(execution cost)\n" -" ROWS result_rows\n" -" SET yapılandırma_parametresi { TO | = } { value | DEFAULT }\n" -" SET yapılandırma_parametresi FROM CURRENT\n" -" RESET yapılandırma_parametresi\n" -" RESET ALL" - -#: sql_help.h:53 +#: sql_help.h:237 msgid "change role name or membership" msgstr "üyeliği veya rol adını değiştir" -#: sql_help.h:54 -msgid "" -"ALTER GROUP groupname ADD USER username [, ... ]\n" -"ALTER GROUP groupname DROP USER username [, ... ]\n" -"\n" -"ALTER GROUP groupname RENAME TO newname" -msgstr "" -"ALTER GROUP grup_adı ADD USER kullanıcı_adı [, ... ]\n" -"ALTER GROUP grup_adı DROP USER kullanıcı_adı [, ... ]\n" -"\n" -"ALTER GROUP grup_adı RENAME TO yeni_ad" - -#: sql_help.h:57 +#: sql_help.h:242 msgid "change the definition of an index" msgstr "index tanımını değiştir" -#: sql_help.h:58 -msgid "" -"ALTER INDEX name RENAME TO new_name\n" -"ALTER INDEX name SET TABLESPACE tablespace_name\n" -"ALTER INDEX name SET ( storage_parameter = value [, ... ] )\n" -"ALTER INDEX name RESET ( storage_parameter [, ... ] )" -msgstr "" -"ALTER INDEX name RENAME TO new_name\n" -"ALTER INDEX name SET TABLESPACE tablespace_name\n" -"ALTER INDEX name SET ( storage_parameter = value [, ... ] )\n" -"ALTER INDEX name RESET ( storage_parameter [, ... ] )" - -#: sql_help.h:61 +#: sql_help.h:247 msgid "change the definition of a procedural language" msgstr "yordamsal dilinin tanımını değiştir" -#: sql_help.h:62 -msgid "" -"ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO newname\n" -"ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO new_owner" -msgstr "" -"ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO newname\n" -"ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO new_owner" +#: sql_help.h:252 +#, fuzzy +msgid "change the definition of a large object" +msgstr "tablonun tanımını değiştir" -#: sql_help.h:65 +#: sql_help.h:257 msgid "change the definition of an operator" msgstr "operatör tanımını değiştir" -#: sql_help.h:66 -msgid "ALTER OPERATOR name ( { lefttype | NONE } , { righttype | NONE } ) OWNER TO newowner" -msgstr "ALTER OPERATOR name ( { lefttype | NONE } , { righttype | NONE } ) OWNER TO yeni_sahip" - -#: sql_help.h:69 +#: sql_help.h:262 msgid "change the definition of an operator class" msgstr "operatör sınıfının tanımını değiştir" -#: sql_help.h:70 -msgid "" -"ALTER OPERATOR CLASS name USING index_method RENAME TO newname\n" -"ALTER OPERATOR CLASS name USING index_method OWNER TO newowner" -msgstr "" -"ALTER OPERATOR CLASS ad USING index_method RENAME TO yeni_ad\n" -"ALTER OPERATOR CLASS ad USING index_method OWNER TO yeni_sahip" - -#: sql_help.h:73 +#: sql_help.h:267 msgid "change the definition of an operator family" msgstr "operatör ailesinin tanımını değiştir" -#: sql_help.h:74 -msgid "" -"ALTER OPERATOR FAMILY name USING index_method ADD\n" -" { OPERATOR strategy_number operator_name ( op_type, op_type )\n" -" | FUNCTION support_number [ ( op_type [ , op_type ] ) ] funcname ( argument_type [, ...] )\n" -" } [, ... ]\n" -"ALTER OPERATOR FAMILY name USING index_method DROP\n" -" { OPERATOR strategy_number ( op_type [ , op_type ] )\n" -" | FUNCTION support_number ( op_type [ , op_type ] )\n" -" } [, ... ]\n" -"ALTER OPERATOR FAMILY name USING index_method RENAME TO newname\n" -"ALTER OPERATOR FAMILY name USING index_method OWNER TO newowner" -msgstr "" -"ALTER OPERATOR FAMILY adı USING index_methodu ADD\n" -" { OPERATOR strategy_number operator_name ( op_type, op_type )\n" -" | FUNCTION support_number [ ( op_type [ , op_type ] ) ] funcname ( argument_type [, ...] )\n" -" } [, ... ]\n" -"ALTER OPERATOR FAMILY ad USING index_methodu DROP\n" -" { OPERATOR strategy_number ( op_type [ , op_type ] )\n" -" | FUNCTION support_number ( op_type [ , op_type ] )\n" -" } [, ... ]\n" -"ALTER OPERATOR FAMILY ad USING index_methodu RENAME TO yeni ad\n" -"ALTER OPERATOR FAMILY ad USING index_methodu OWNER TO yeni sahibi" - -#: sql_help.h:77 -#: sql_help.h:125 +#: sql_help.h:272 +#: sql_help.h:332 msgid "change a database role" msgstr "veritabanı dolünü değiştir" -#: sql_help.h:78 -msgid "" -"ALTER ROLE name [ [ WITH ] option [ ... ] ]\n" -"\n" -"where option can be:\n" -" \n" -" SUPERUSER | NOSUPERUSER\n" -" | CREATEDB | NOCREATEDB\n" -" | CREATEROLE | NOCREATEROLE\n" -" | CREATEUSER | NOCREATEUSER\n" -" | INHERIT | NOINHERIT\n" -" | LOGIN | NOLOGIN\n" -" | CONNECTION LIMIT connlimit\n" -" | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -" | VALID UNTIL 'timestamp' \n" -"\n" -"ALTER ROLE name RENAME TO newname\n" -"\n" -"ALTER ROLE name SET configuration_parameter { TO | = } { value | DEFAULT }\n" -"ALTER ROLE name SET configuration_parameter FROM CURRENT\n" -"ALTER ROLE name RESET configuration_parameter\n" -"ALTER ROLE name RESET ALL" -msgstr "" -"ALTER ROLE rol_adı [ [ WITH ] seçenek [ ... ] ]\n" -"\n" -"seçenek aşağıdakilerden birisi olabilir:\n" -" \n" -" SUPERUSER | NOSUPERUSER\n" -" | CREATEDB | NOCREATEDB\n" -" | CREATEROLE | NOCREATEROLE\n" -" | CREATEUSER | NOCREATEUSER\n" -" | INHERIT | NOINHERIT\n" -" | LOGIN | NOLOGIN\n" -" | CONNECTION LIMIT bağlantı_sayısı_sınırı\n" -" | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -" | VALID UNTIL 'timestamp' \n" -"\n" -"ALTER ROLE rol_adı RENAME TO yeni_adı\n" -"\n" -"ALTER ROLE rol_adı SET yapılandırma_parametresi { TO | = } { value | DEFAULT }\n" -"ALTER ROLE rol_adı SET yapılandırma_parametresi FROM CURRENT\n" -"ALTER ROLE rol_adı RESET yapılandırma_parametresi\n" -"ALTER ROLE rol_adı RESET ALL" - -#: sql_help.h:81 +#: sql_help.h:277 msgid "change the definition of a schema" msgstr "şema tanımını değiştir" -#: sql_help.h:82 -msgid "" -"ALTER SCHEMA name RENAME TO newname\n" -"ALTER SCHEMA name OWNER TO newowner" -msgstr "" -"ALTER SCHEMA şema_adı RENAME TO yeni_ad\n" -"ALTER SCHEMA şema_adı OWNER TO yeni_sahip" - -#: sql_help.h:85 +#: sql_help.h:282 msgid "change the definition of a sequence generator" msgstr "sequence üretecinin tanımını değiştir" -#: sql_help.h:86 -msgid "" -"ALTER SEQUENCE name [ INCREMENT [ BY ] increment ]\n" -" [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]\n" -" [ START [ WITH ] start ]\n" -" [ RESTART [ [ WITH ] restart ] ]\n" -" [ CACHE cache ] [ [ NO ] CYCLE ]\n" -" [ OWNED BY { table.column | NONE } ]\n" -"ALTER SEQUENCE name OWNER TO new_owner\n" -"ALTER SEQUENCE name RENAME TO new_name\n" -"ALTER SEQUENCE name SET SCHEMA new_schema" -msgstr "" -"ALTER SEQUENCE ad [ INCREMENT [ BY ] arttırma miktarı ]\n" -" [ MINVALUE en az değer | NO MINVALUE ] [ MAXVALUE üst değer | NO MAXVALUE ]\n" -" [ START [ WITH ] başlama sayısı ]\n" -" [ RESTART [ [ WITH ] yeniden başlama sayısı ] ]\n" -" [ CACHE önbellek ] [ [ NO ] CYCLE ]\n" -" [ OWNED BY { tablo.kolon | NONE } ]\n" -"ALTER SEQUENCE ad OWNER TO yeni sahibir\n" -"ALTER SEQUENCE ad RENAME TO yeni adı\n" -"ALTER SEQUENCE namade SET SCHEMA yeni şeması" - -#: sql_help.h:89 +#: sql_help.h:287 msgid "change the definition of a foreign server" msgstr "foreign server tanımını değiştir" -#: sql_help.h:90 -msgid "" -"ALTER SERVER servername [ VERSION 'newversion' ]\n" -" [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] ) ]\n" -"ALTER SERVER servername OWNER TO new_owner" -msgstr "" -"ALTER SERVER sunucu adı [ VERSION 'yeni sürüm' ]\n" -" [ OPTIONS ( [ ADD | SET | DROP ] seçenek ['değer'] [, ... ] ) ]\n" -"ALTER SERVER sunucu adı OWNER TO yeni sahibi" - -#: sql_help.h:93 +#: sql_help.h:292 msgid "change the definition of a table" msgstr "tablonun tanımını değiştir" -#: sql_help.h:94 -msgid "" -"ALTER TABLE [ ONLY ] name [ * ]\n" -" action [, ... ]\n" -"ALTER TABLE [ ONLY ] name [ * ]\n" -" RENAME [ COLUMN ] column TO new_column\n" -"ALTER TABLE name\n" -" RENAME TO new_name\n" -"ALTER TABLE name\n" -" SET SCHEMA new_schema\n" -"\n" -"where action is one of:\n" -"\n" -" ADD [ COLUMN ] column type [ column_constraint [ ... ] ]\n" -" DROP [ COLUMN ] column [ RESTRICT | CASCADE ]\n" -" ALTER [ COLUMN ] column [ SET DATA ] TYPE type [ USING expression ]\n" -" ALTER [ COLUMN ] column SET DEFAULT expression\n" -" ALTER [ COLUMN ] column DROP DEFAULT\n" -" ALTER [ COLUMN ] column { SET | DROP } NOT NULL\n" -" ALTER [ COLUMN ] column SET STATISTICS integer\n" -" ALTER [ COLUMN ] column SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }\n" -" ADD table_constraint\n" -" DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n" -" DISABLE TRIGGER [ trigger_name | ALL | USER ]\n" -" ENABLE TRIGGER [ trigger_name | ALL | USER ]\n" -" ENABLE REPLICA TRIGGER trigger_name\n" -" ENABLE ALWAYS TRIGGER trigger_name\n" -" DISABLE RULE rewrite_rule_name\n" -" ENABLE RULE rewrite_rule_name\n" -" ENABLE REPLICA RULE rewrite_rule_name\n" -" ENABLE ALWAYS RULE rewrite_rule_name\n" -" CLUSTER ON index_name\n" -" SET WITHOUT CLUSTER\n" -" SET WITH OIDS\n" -" SET WITHOUT OIDS\n" -" SET ( storage_parameter = value [, ... ] )\n" -" RESET ( storage_parameter [, ... ] )\n" -" INHERIT parent_table\n" -" NO INHERIT parent_table\n" -" OWNER TO new_owner\n" -" SET TABLESPACE new_tablespace" -msgstr "" -"ALTER TABLE [ ONLY ] ad [ * ]\n" -" action [, ... ]\n" -"ALTER TABLE [ ONLY ] ad [ * ]\n" -" RENAME [ COLUMN ] kolon TO yeni kolon\n" -"ALTER TABLE ad\n" -" RENAME TO yeni ad\n" -"ALTER TABLE ad\n" -" SET SCHEMA yeni şema\n" -"\n" -"action aşağıdakilerden birisi olabilir:\n" -"\n" -" ADD [ COLUMN ] kolon kolon_tipi [ kolon kısıtlaması [ ... ] ]\n" -" DROP [ COLUMN ] kolon [ RESTRICT | CASCADE ]\n" -" ALTER [ COLUMN ] kolon [ SET DATA ] TYPE type [ USING ifade ]\n" -" ALTER [ COLUMN ] kolon SET DEFAULT ifade\n" -" ALTER [ COLUMN ] kolon DROP DEFAULT\n" -" ALTER [ COLUMN ] kolon { SET | DROP } NOT NULL\n" -" ALTER [ COLUMN ] kolon SET STATISTICS tamsayı\n" -" ALTER [ COLUMN ] kolon SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }\n" -" ADD tablo kısıtlaması\n" -" DROP CONSTRAINT kısıtlama adı [ RESTRICT | CASCADE ]\n" -" DISABLE TRIGGER [ trigger adı | ALL | USER ]\n" -" ENABLE TRIGGER[ trigger adı | ALL | USER ]\n" -" ENABLE REPLICA TRIGGER trigger adı\n" -" ENABLE ALWAYS TRIGGER trigger adı\n" -" DISABLE RULE rewrite_rule_name\n" -" ENABLE RULE rewrite_rule_name\n" -" ENABLE REPLICA RULE rewrite_rule_name\n" -" ENABLE ALWAYS RULE rewrite_rule_name\n" -" CLUSTER ON index adı\n" -" SET WITHOUT CLUSTER\n" -" SET WITH OIDS\n" -" SET WITHOUT OIDS\n" -" SET ( storage_parameter = value [, ... ] )\n" -" RESET ( storage_parameter [, ... ] )\n" -" INHERIT üst tablo\n" -" NO INHERIT üst tablo\n" -" OWNER TO yeni sahibi\n" -" SET TABLESPACE yeni tablespace" - -#: sql_help.h:97 +#: sql_help.h:297 msgid "change the definition of a tablespace" msgstr "tablespace tanımını değiştir" -#: sql_help.h:98 -msgid "" -"ALTER TABLESPACE name RENAME TO newname\n" -"ALTER TABLESPACE name OWNER TO newowner" -msgstr "" -"ALTER TABLESPACE tablespace_adı RENAME TO yeni_ad\n" -"ALTER TABLESPACE tablespace_adı OWNER TO yeni_sahip" - -#: sql_help.h:101 +#: sql_help.h:302 msgid "change the definition of a text search configuration" msgstr "metin arama yapılandırmasının tanımını değiştir" -#: sql_help.h:102 -msgid "" -"ALTER TEXT SEARCH CONFIGURATION name\n" -" ADD MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]\n" -"ALTER TEXT SEARCH CONFIGURATION name\n" -" ALTER MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]\n" -"ALTER TEXT SEARCH CONFIGURATION name\n" -" ALTER MAPPING REPLACE old_dictionary WITH new_dictionary\n" -"ALTER TEXT SEARCH CONFIGURATION name\n" -" ALTER MAPPING FOR token_type [, ... ] REPLACE old_dictionary WITH new_dictionary\n" -"ALTER TEXT SEARCH CONFIGURATION name\n" -" DROP MAPPING [ IF EXISTS ] FOR token_type [, ... ]\n" -"ALTER TEXT SEARCH CONFIGURATION name RENAME TO newname\n" -"ALTER TEXT SEARCH CONFIGURATION name OWNER TO newowner" -msgstr "" -"ALTER TEXT SEARCH CONFIGURATION name\n" -" ADD MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]\n" -"ALTER TEXT SEARCH CONFIGURATION name\n" -" ALTER MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]\n" -"ALTER TEXT SEARCH CONFIGURATION name\n" -" ALTER MAPPING REPLACE old_dictionary WITH new_dictionary\n" -"ALTER TEXT SEARCH CONFIGURATION name\n" -" ALTER MAPPING FOR token_type [, ... ] REPLACE old_dictionary WITH new_dictionary\n" -"ALTER TEXT SEARCH CONFIGURATION name\n" -" DROP MAPPING [ IF EXISTS ] FOR token_type [, ... ]\n" -"ALTER TEXT SEARCH CONFIGURATION name RENAME TO newname\n" -"ALTER TEXT SEARCH CONFIGURATION name OWNER TO newowner" - -#: sql_help.h:105 +#: sql_help.h:307 msgid "change the definition of a text search dictionary" msgstr "metin arama sözlüğünün tanımını değiştir" -#: sql_help.h:106 -msgid "" -"ALTER TEXT SEARCH DICTIONARY name (\n" -" option [ = value ] [, ... ]\n" -")\n" -"ALTER TEXT SEARCH DICTIONARY name RENAME TO newname\n" -"ALTER TEXT SEARCH DICTIONARY name OWNER TO newowner" -msgstr "" -"ALTER TEXT SEARCH DICTIONARY ad (\n" -" option [ = value ] [, ... ]\n" -")\n" -"ALTER TEXT SEARCH DICTIONARY ad RENAME TO yeni adı\n" -"ALTER TEXT SEARCH DICTIONARY ad OWNER TO yeni sahibi" - -#: sql_help.h:109 +#: sql_help.h:312 msgid "change the definition of a text search parser" msgstr "metin arama ayrıştırıcısının tanımını değiştir" -#: sql_help.h:110 -msgid "ALTER TEXT SEARCH PARSER name RENAME TO newname" -msgstr "ALTER TEXT SEARCH PARSER ayrıştırıcı_adı RENAME TO yeni_adı" - -#: sql_help.h:113 +#: sql_help.h:317 msgid "change the definition of a text search template" msgstr "metin arama şablonunun tanımını değiştir" -#: sql_help.h:114 -msgid "ALTER TEXT SEARCH TEMPLATE name RENAME TO newname" -msgstr "ALTER TEXT SEARCH TEMPLATE şablon_adı RENAME TO yeni_adı" - -#: sql_help.h:117 +#: sql_help.h:322 msgid "change the definition of a trigger" msgstr "trigger tanımını değiştir" -#: sql_help.h:118 -msgid "ALTER TRIGGER name ON table RENAME TO newname" -msgstr "ALTER TRIGGER trigger_adı ON tablo_adı RENAME TO yeni_ad" - -#: sql_help.h:121 +#: sql_help.h:327 msgid "change the definition of a type" msgstr "type tanımını değiştir" -#: sql_help.h:122 -msgid "" -"ALTER TYPE name RENAME TO new_name\n" -"ALTER TYPE name OWNER TO new_owner \n" -"ALTER TYPE name SET SCHEMA new_schema" -msgstr "" -"ALTER TYPE ad RENAME TO yeni adı\n" -"ALTER TYPE ad OWNER TO yeni sahibi \n" -"ALTER TYPE ad SET SCHEMA yeni şema" - -#: sql_help.h:126 -msgid "" -"ALTER USER name [ [ WITH ] option [ ... ] ]\n" -"\n" -"where option can be:\n" -" \n" -" SUPERUSER | NOSUPERUSER\n" -" | CREATEDB | NOCREATEDB\n" -" | CREATEROLE | NOCREATEROLE\n" -" | CREATEUSER | NOCREATEUSER\n" -" | INHERIT | NOINHERIT\n" -" | LOGIN | NOLOGIN\n" -" | CONNECTION LIMIT connlimit\n" -" | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -" | VALID UNTIL 'timestamp' \n" -"\n" -"ALTER USER name RENAME TO newname\n" -"\n" -"ALTER USER name SET configuration_parameter { TO | = } { value | DEFAULT }\n" -"ALTER USER name SET configuration_parameter FROM CURRENT\n" -"ALTER USER name RESET configuration_parameter\n" -"ALTER USER name RESET ALL" -msgstr "" -"ALTER USER kullanıcı_adı [ [ WITH ] seçenek [ ... ] ]\n" -"\n" -"seçenek aşağıdakilerden birisi olabilir:\n" -" \n" -" SUPERUSER | NOSUPERUSER\n" -" | CREATEDB | NOCREATEDB\n" -" | CREATEROLE | NOCREATEROLE\n" -" | CREATEUSER | NOCREATEUSER\n" -" | INHERIT | NOINHERIT\n" -" | LOGIN | NOLOGIN\n" -" | CONNECTION LIMIT bağlantı_sayısı_sınırı\n" -" | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -" | VALID UNTIL 'timestamp' \n" -"\n" -"ALTER USER kullanıcı_adı RENAME TO yeni_adı\n" -"\n" -"ALTER USER kullanıcı_adı SET yapılandırma_parametresi { TO | = } { value | DEFAULT }\n" -"ALTER USER kullanıcı_adı SET yapılandırma_parametresi FROM CURRENT\n" -"ALTER USER kullanıcı_adı RESET yapılandırma_parametresi\n" -"ALTER USER kullanıcı_adı RESET ALL" - -#: sql_help.h:129 +#: sql_help.h:337 msgid "change the definition of a user mapping" msgstr "kullanıcı haritalama tanımını değiştir" -#: sql_help.h:130 -msgid "" -"ALTER USER MAPPING FOR { username | USER | CURRENT_USER | PUBLIC }\n" -" SERVER servername\n" -" OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] )" -msgstr "" -"ALTER USER MAPPING FOR { kullanıcı adı | USER | CURRENT_USER | PUBLIC }\n" -" SERVER sunucu adı\n" -" OPTIONS ( [ ADD | SET | DROP ] seçenek ['değer'] [, ... ] )" - -#: sql_help.h:133 +#: sql_help.h:342 msgid "change the definition of a view" msgstr "view tanımını değiştir" -#: sql_help.h:134 -msgid "" -"ALTER VIEW name ALTER [ COLUMN ] column SET DEFAULT expression\n" -"ALTER VIEW name ALTER [ COLUMN ] column DROP DEFAULT\n" -"ALTER VIEW name OWNER TO new_owner\n" -"ALTER VIEW name RENAME TO new_name\n" -"ALTER VIEW name SET SCHEMA new_schema" -msgstr "" -"ALTER VIEW ad ALTER [ COLUMN ] kolon SET DEFAULT ifade\n" -"ALTER VIEW ad ALTER [ COLUMN ] kolon DROP DEFAULT\n" -"ALTER VIEW ad OWNER TO yeni sahibi\n" -"ALTER VIEW ad RENAME TO yeni adı\n" -"ALTER VIEW ad SET SCHEMA yeni şema" - -#: sql_help.h:137 +#: sql_help.h:347 msgid "collect statistics about a database" msgstr "database hakkında istatistikleri topla" -#: sql_help.h:138 -msgid "ANALYZE [ VERBOSE ] [ table [ ( column [, ...] ) ] ]" -msgstr "ANALYZE [ VERBOSE ] [ tablo [ ( kolon [, ...] ) ] ]" - -#: sql_help.h:141 -#: sql_help.h:553 +#: sql_help.h:352 +#: sql_help.h:902 msgid "start a transaction block" msgstr "transaction bloğunu başlat" -#: sql_help.h:142 -msgid "" -"BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]\n" -"\n" -"where transaction_mode is one of:\n" -"\n" -" ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n" -" READ WRITE | READ ONLY" -msgstr "" -"BEGIN [ WORK | TRANSACTION ] [ transaction_modu [, ...] ]\n" -"\n" -"transaction_modu aşağıdakilerden birisi olabilir:\n" -"\n" -" ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n" -" READ WRITE | READ ONLY" - -#: sql_help.h:145 +#: sql_help.h:357 msgid "force a transaction log checkpoint" msgstr "transaction checkpoint'i gerçekleştir" -#: sql_help.h:146 -msgid "CHECKPOINT" -msgstr "CHECKPOINT" - -#: sql_help.h:149 +#: sql_help.h:362 msgid "close a cursor" msgstr "cursor'u kapat" -#: sql_help.h:150 -msgid "CLOSE { name | ALL }" -msgstr "CLOSE { name | ALL }" - -#: sql_help.h:153 +#: sql_help.h:367 msgid "cluster a table according to an index" msgstr "indexe dayanarak tabloyu cluster işlemine tabi tut" -#: sql_help.h:154 -msgid "" -"CLUSTER [VERBOSE] tablename [ USING indexname ]\n" -"CLUSTER [VERBOSE]" -msgstr "" -"CLUSTER [VERBOSE] tablo adı [ USING index adı ]\n" -"CLUSTER [VERBOSE]" - -#: sql_help.h:157 +#: sql_help.h:372 msgid "define or change the comment of an object" msgstr "Nesne yorumunu tanımla ya da değiştir" -#: sql_help.h:158 -msgid "" -"COMMENT ON\n" -"{\n" -" TABLE object_name |\n" -" COLUMN table_name.column_name |\n" -" AGGREGATE agg_name (agg_type [, ...] ) |\n" -" CAST (sourcetype AS targettype) |\n" -" CONSTRAINT constraint_name ON table_name |\n" -" CONVERSION object_name |\n" -" DATABASE object_name |\n" -" DOMAIN object_name |\n" -" FUNCTION func_name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) |\n" -" INDEX object_name |\n" -" LARGE OBJECT large_object_oid |\n" -" OPERATOR op (leftoperand_type, rightoperand_type) |\n" -" OPERATOR CLASS object_name USING index_method |\n" -" OPERATOR FAMILY object_name USING index_method |\n" -" [ PROCEDURAL ] LANGUAGE object_name |\n" -" ROLE object_name |\n" -" RULE rule_name ON table_name |\n" -" SCHEMA object_name |\n" -" SEQUENCE object_name |\n" -" TABLESPACE object_name |\n" -" TEXT SEARCH CONFIGURATION object_name |\n" -" TEXT SEARCH DICTIONARY object_name |\n" -" TEXT SEARCH PARSER object_name |\n" -" TEXT SEARCH TEMPLATE object_name |\n" -" TRIGGER trigger_name ON table_name |\n" -" TYPE object_name |\n" -" VIEW object_name\n" -"} IS 'text'" -msgstr "" -"COMMENT ON\n" -"{\n" -" TABLE nesne_ado |\n" -" COLUMN tablo_adı.kolon_adı |\n" -" AGGREGATE agg_name (agg_type [, ...] ) |\n" -" CAST (sourcetype AS targettype) |\n" -" CONSTRAINT constraint_name ON table_name |\n" -" CONVERSION nesne_adı |\n" -" DATABASE nesne_adı |\n" -" DOMAIN nesne_adı |\n" -" FUNCTION fonksiyon_adı ( [ [ argmode ] [ argname ] argtype [, ...] ] ) |\n" -" INDEX nesne_adı |\n" -" LARGE OBJECT large_object_oid |\n" -" OPERATOR op (leftoperand_type, rightoperand_type) |\n" -" OPERATOR CLASS nesne_adı USING index_yöntemi |\n" -" OPERATOR FAMILY nesne_adı USING index_yöntemi |\n" -" [ PROCEDURAL ] LANGUAGE nesne_adı |\n" -" ROLE nesne_adı |\n" -" RULE kural_adı ON tablo_adı |\n" -" SCHEMA nesne_adı |\n" -" SEQUENCE nesne_adı |\n" -" TABLESPACE nesne_adı |\n" -" TEXT SEARCH CONFIGURATION nesne_adı |\n" -" TEXT SEARCH DICTIONARY nesne_adı |\n" -" TEXT SEARCH PARSER nesne_adı |\n" -" TEXT SEARCH TEMPLATE nesne_adı |\n" -" TRIGGER tetikleyici_adı ON table_name |\n" -" TYPE nesne_adı |\n" -" VIEW nesne_adı\n" -"} IS 'text'" - -#: sql_help.h:161 -#: sql_help.h:433 +#: sql_help.h:377 +#: sql_help.h:747 msgid "commit the current transaction" msgstr "geçerli transaction'u commit et" -#: sql_help.h:162 -msgid "COMMIT [ WORK | TRANSACTION ]" -msgstr "COMMIT [ WORK | TRANSACTION ]" - -#: sql_help.h:165 +#: sql_help.h:382 msgid "commit a transaction that was earlier prepared for two-phase commit" msgstr "daha önce two-phase commit için hazırlanmış transaction'u commit et" -#: sql_help.h:166 -msgid "COMMIT PREPARED transaction_id" -msgstr "COMMIT PREPARED transaction_id" - -#: sql_help.h:169 +#: sql_help.h:387 msgid "copy data between a file and a table" msgstr "dosya ile veritabanı tablosu arasında veriyi transfer et" -#: sql_help.h:170 -msgid "" -"COPY tablename [ ( column [, ...] ) ]\n" -" FROM { 'filename' | STDIN }\n" -" [ [ WITH ] \n" -" [ BINARY ]\n" -" [ OIDS ]\n" -" [ DELIMITER [ AS ] 'delimiter' ]\n" -" [ NULL [ AS ] 'null string' ]\n" -" [ CSV [ HEADER ]\n" -" [ QUOTE [ AS ] 'quote' ] \n" -" [ ESCAPE [ AS ] 'escape' ]\n" -" [ FORCE NOT NULL column [, ...] ]\n" -"\n" -"COPY { tablename [ ( column [, ...] ) ] | ( query ) }\n" -" TO { 'filename' | STDOUT }\n" -" [ [ WITH ] \n" -" [ BINARY ]\n" -" [ OIDS ]\n" -" [ DELIMITER [ AS ] 'delimiter' ]\n" -" [ NULL [ AS ] 'null string' ]\n" -" [ CSV [ HEADER ]\n" -" [ QUOTE [ AS ] 'quote' ] \n" -" [ ESCAPE [ AS ] 'escape' ]\n" -" [ FORCE QUOTE column [, ...] ]" -msgstr "" -"COPY tablo adı [ ( kolon [, ...] ) ]\n" -" FROM { 'dosya adı' | STDIN }\n" -" [ [ WITH ] \n" -" [ BINARY ]\n" -" [ OIDS ]\n" -" [ DELIMITER [ AS ] 'delimiter' ]\n" -" [ NULL [ AS ] 'null string' ]\n" -" [ CSV [ HEADER ]\n" -" [ QUOTE [ AS ] 'quote' ] \n" -" [ ESCAPE [ AS ] 'escape' ]\n" -" [ FORCE NOT NULL column [, ...] ]\n" -"\n" -"COPY { tablo adı [ ( kolon [, ...] ) ] | ( sorgu ) }\n" -" TO { 'dosya adı' | STDOUT }\n" -" [ [ WITH ] \n" -" [ BINARY ]\n" -" [ OIDS ]\n" -" [ DELIMITER [ AS ] 'delimiter' ]\n" -" [ NULL [ AS ] 'null string' ]\n" -" [ CSV [ HEADER ]\n" -" [ QUOTE [ AS ] 'quote' ] \n" -" [ ESCAPE [ AS ] 'escape' ]\n" -" [ FORCE QUOTE column [, ...] ]" - -#: sql_help.h:173 +#: sql_help.h:392 msgid "define a new aggregate function" msgstr "yeni aggregate fonksiyonunu tanımla" -#: sql_help.h:174 -msgid "" -"CREATE AGGREGATE name ( input_data_type [ , ... ] ) (\n" -" SFUNC = sfunc,\n" -" STYPE = state_data_type\n" -" [ , FINALFUNC = ffunc ]\n" -" [ , INITCOND = initial_condition ]\n" -" [ , SORTOP = sort_operator ]\n" -")\n" -"\n" -"or the old syntax\n" -"\n" -"CREATE AGGREGATE name (\n" -" BASETYPE = base_type,\n" -" SFUNC = sfunc,\n" -" STYPE = state_data_type\n" -" [ , FINALFUNC = ffunc ]\n" -" [ , INITCOND = initial_condition ]\n" -" [ , SORTOP = sort_operator ]\n" -")" -msgstr "" -"CREATE AGGREGATE name ( input_data_type [ , ... ] ) (\n" -" SFUNC = sfunc,\n" -" STYPE = state_data_type\n" -" [ , FINALFUNC = ffunc ]\n" -" [ , INITCOND = initial_condition ]\n" -" [ , SORTOP = sort_operator ]\n" -")\n" -"\n" -"or the old syntax\n" -"\n" -"CREATE AGGREGATE name (\n" -" BASETYPE = base_type,\n" -" SFUNC = sfunc,\n" -" STYPE = state_data_type\n" -" [ , FINALFUNC = ffunc ]\n" -" [ , INITCOND = initial_condition ]\n" -" [ , SORTOP = sort_operator ]\n" -")" - -#: sql_help.h:177 +#: sql_help.h:397 msgid "define a new cast" msgstr "yeni cast tanımla" -#: sql_help.h:178 -msgid "" -"CREATE CAST (sourcetype AS targettype)\n" -" WITH FUNCTION funcname (argtypes)\n" -" [ AS ASSIGNMENT | AS IMPLICIT ]\n" -"\n" -"CREATE CAST (sourcetype AS targettype)\n" -" WITHOUT FUNCTION\n" -" [ AS ASSIGNMENT | AS IMPLICIT ]\n" -"\n" -"CREATE CAST (sourcetype AS targettype)\n" -" WITH INOUT\n" -" [ AS ASSIGNMENT | AS IMPLICIT ]" -msgstr "" -"CREATE CAST (sourcetype AS targettype)\n" -" WITH FUNCTION funcname (argtypes)\n" -" [ AS ASSIGNMENT | AS IMPLICIT ]\n" -"\n" -"CREATE CAST (sourcetype AS targettype)\n" -" WITHOUT FUNCTION\n" -" [ AS ASSIGNMENT | AS IMPLICIT ]\n" -"\n" -"CREATE CAST (sourcetype AS targettype)\n" -" WITH INOUT\n" -" [ AS ASSIGNMENT | AS IMPLICIT ]" - -#: sql_help.h:181 -msgid "define a new constraint trigger" -msgstr "yeni constraint trigger tanımla" +#: sql_help.h:402 +#, fuzzy +msgid "define a new collation" +msgstr "yeni fonksiyonu tanımla" -#: sql_help.h:182 -msgid "" -"CREATE CONSTRAINT TRIGGER name\n" -" AFTER event [ OR ... ]\n" -" ON table_name\n" -" [ FROM referenced_table_name ]\n" -" { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } }\n" -" FOR EACH ROW\n" -" EXECUTE PROCEDURE funcname ( arguments )" -msgstr "" -"CREATE CONSTRAINT TRIGGER name\n" -" AFTER event [ OR ... ]\n" -" ON table_name\n" -" [ FROM referenced_table_name ]\n" -" { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } }\n" -" FOR EACH ROW\n" -" EXECUTE PROCEDURE funcname ( arguments )" - -#: sql_help.h:185 +#: sql_help.h:407 msgid "define a new encoding conversion" msgstr "yeni kodlama dönüşümü tanımla" -#: sql_help.h:186 -msgid "" -"CREATE [ DEFAULT ] CONVERSION name\n" -" FOR source_encoding TO dest_encoding FROM funcname" -msgstr "" -"CREATE [ DEFAULT ] CONVERSION name\n" -" FOR source_encoding TO dest_encoding FROM funcname" - -#: sql_help.h:189 +#: sql_help.h:412 msgid "create a new database" msgstr "yeni veritabanı oluştur" -#: sql_help.h:190 -msgid "" -"CREATE DATABASE name\n" -" [ [ WITH ] [ OWNER [=] dbowner ]\n" -" [ TEMPLATE [=] template ]\n" -" [ ENCODING [=] encoding ]\n" -" [ LC_COLLATE [=] lc_collate ]\n" -" [ LC_CTYPE [=] lc_ctype ]\n" -" [ TABLESPACE [=] tablespace ]\n" -" [ CONNECTION LIMIT [=] connlimit ] ]" -msgstr "" -"CREATE DATABASE ad\n" -" [ [ WITH ] [ OWNER [=] veritabanı sahibi ]\n" -" [ TEMPLATE [=] şablon ]\n" -" [ ENCODING [=] dil kodlaması ]\n" -" [ LC_COLLATE [=] lc_collate ]\n" -" [ LC_CTYPE [=] lc_ctype ]\n" -" [ TABLESPACE [=] tablespace ]\n" -" [ CONNECTION LIMIT [=] bağlantı sınırı ] ]" - -#: sql_help.h:193 +#: sql_help.h:417 msgid "define a new domain" msgstr "yeni domaın tanımla" -#: sql_help.h:194 -msgid "" -"CREATE DOMAIN name [ AS ] data_type\n" -" [ DEFAULT expression ]\n" -" [ constraint [ ... ] ]\n" -"\n" -"where constraint is:\n" -"\n" -"[ CONSTRAINT constraint_name ]\n" -"{ NOT NULL | NULL | CHECK (expression) }" -msgstr "" -"CREATE DOMAIN name [ AS ] data_type\n" -" [ DEFAULT expression ]\n" -" [ constraint [ ... ] ]\n" -"\n" -"constraint aşağıdakilerden birisi olabilir:\n" -"\n" -"[ CONSTRAINT constraint_name ]\n" -"{ NOT NULL | NULL | CHECK (expression) }" +#: sql_help.h:422 +msgid "install an extension" +msgstr "bir uzantı kur" -#: sql_help.h:197 +#: sql_help.h:427 msgid "define a new foreign-data wrapper" msgstr "yeni foreign-data wrapper tanımla" -#: sql_help.h:198 -msgid "" -"CREATE FOREIGN DATA WRAPPER name\n" -" [ VALIDATOR valfunction | NO VALIDATOR ]\n" -" [ OPTIONS ( option 'value' [, ... ] ) ]" -msgstr "" -"CREATE FOREIGN DATA WRAPPER ad\n" -" [ VALIDATOR valfunction | NO VALIDATOR ]\n" -" [ OPTIONS ( option 'value' [, ... ] ) ]" +#: sql_help.h:432 +#, fuzzy +msgid "define a new foreign table" +msgstr "yeni foreign sunucu tanımla" -#: sql_help.h:201 +#: sql_help.h:437 msgid "define a new function" msgstr "yeni fonksiyonu tanımla" -#: sql_help.h:202 -msgid "" -"CREATE [ OR REPLACE ] FUNCTION\n" -" name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } defexpr ] [, ...] ] )\n" -" [ RETURNS rettype\n" -" | RETURNS TABLE ( colname coltype [, ...] ) ]\n" -" { LANGUAGE langname\n" -" | WINDOW\n" -" | IMMUTABLE | STABLE | VOLATILE\n" -" | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" -" | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" -" | COST execution_cost\n" -" | ROWS result_rows\n" -" | SET configuration_parameter { TO value | = value | FROM CURRENT }\n" -" | AS 'definition'\n" -" | AS 'obj_file', 'link_symbol'\n" -" } ...\n" -" [ WITH ( attribute [, ...] ) ]" -msgstr "" -"CREATE [ OR REPLACE ] FUNCTION\n" -" ad ( [ [ argüman modu ] [ argüman adı ] argüman tipi [ { DEFAULT | = } defexpr ] [, ...] ] )\n" -" [ RETURNS rettype\n" -" | RETURNS TABLE ( kolon_adı kolon_tipi [, ...] ) ]\n" -" { LANGUAGE dil adı\n" -" | WINDOW\n" -" | IMMUTABLE | STABLE | VOLATILE\n" -" | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" -" | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" -" | COST execution_cost\n" -" | ROWS result_rows\n" -" | SET yapılandırma parametresi { TO değer | = değer | FROM CURRENT }\n" -" | AS 'tanım'\n" -" | AS 'obj_file', 'link_symbol'\n" -" } ...\n" -" [ WITH ( attribute [, ...] ) ]" - -#: sql_help.h:205 -#: sql_help.h:229 -#: sql_help.h:285 +#: sql_help.h:442 +#: sql_help.h:472 +#: sql_help.h:542 msgid "define a new database role" msgstr "yeni veritabanı rolü tanımla" -#: sql_help.h:206 -msgid "" -"CREATE GROUP name [ [ WITH ] option [ ... ] ]\n" -"\n" -"where option can be:\n" -" \n" -" SUPERUSER | NOSUPERUSER\n" -" | CREATEDB | NOCREATEDB\n" -" | CREATEROLE | NOCREATEROLE\n" -" | CREATEUSER | NOCREATEUSER\n" -" | INHERIT | NOINHERIT\n" -" | LOGIN | NOLOGIN\n" -" | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -" | VALID UNTIL 'timestamp' \n" -" | IN ROLE rolename [, ...]\n" -" | IN GROUP rolename [, ...]\n" -" | ROLE rolename [, ...]\n" -" | ADMIN rolename [, ...]\n" -" | USER rolename [, ...]\n" -" | SYSID uid" -msgstr "" -"CREATE GROUP name [ [ WITH ] option [ ... ] ]\n" -"\n" -"seçenek aşağıdakilerden birisi olabilir:\n" -" \n" -" SUPERUSER | NOSUPERUSER\n" -" | CREATEDB | NOCREATEDB\n" -" | CREATEROLE | NOCREATEROLE\n" -" | CREATEUSER | NOCREATEUSER\n" -" | INHERIT | NOINHERIT\n" -" | LOGIN | NOLOGIN\n" -" | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'şifre'\n" -" | VALID UNTIL 'timestamp' \n" -" | IN ROLE rolename [, ...]\n" -" | IN GROUP rolename [, ...]\n" -" | ROLE rolename [, ...]\n" -" | ADMIN rolename [, ...]\n" -" | USER rolename [, ...]\n" -" | SYSID uid" - -#: sql_help.h:209 +#: sql_help.h:447 msgid "define a new index" msgstr "yeni indeks tanımla" -#: sql_help.h:210 -msgid "" -"CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] name ON table [ USING method ]\n" -" ( { column | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )\n" -" [ WITH ( storage_parameter = value [, ... ] ) ]\n" -" [ TABLESPACE tablespace ]\n" -" [ WHERE predicate ]" -msgstr "" -"CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] name ON table [ USING method ]\n" -" ( { column | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )\n" -" [ WITH ( storage_parameter = value [, ... ] ) ]\n" -" [ TABLESPACE tablespace ]\n" -" [ WHERE predicate ]" - -#: sql_help.h:213 +#: sql_help.h:452 msgid "define a new procedural language" msgstr "yeni yordamsal dil tanımla" -#: sql_help.h:214 -msgid "" -"CREATE [ PROCEDURAL ] LANGUAGE name\n" -"CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name\n" -" HANDLER call_handler [ VALIDATOR valfunction ]" -msgstr "" -"CREATE [ PROCEDURAL ] LANGUAGE name\n" -"CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name\n" -" HANDLER call_handler [ VALIDATOR valfunction ]" - -#: sql_help.h:217 +#: sql_help.h:457 msgid "define a new operator" msgstr "yeni operator tanımla" -#: sql_help.h:218 -msgid "" -"CREATE OPERATOR name (\n" -" PROCEDURE = funcname\n" -" [, LEFTARG = lefttype ] [, RIGHTARG = righttype ]\n" -" [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]\n" -" [, RESTRICT = res_proc ] [, JOIN = join_proc ]\n" -" [, HASHES ] [, MERGES ]\n" -")" -msgstr "" -"CREATE OPERATOR name (\n" -" PROCEDURE = funcname\n" -" [, LEFTARG = lefttype ] [, RIGHTARG = righttype ]\n" -" [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]\n" -" [, RESTRICT = res_proc ] [, JOIN = join_proc ]\n" -" [, HASHES ] [, MERGES ]\n" -")" - -#: sql_help.h:221 +#: sql_help.h:462 msgid "define a new operator class" msgstr "yeni operator class tanımla" -#: sql_help.h:222 -msgid "" -"CREATE OPERATOR CLASS name [ DEFAULT ] FOR TYPE data_type\n" -" USING index_method [ FAMILY family_name ] AS\n" -" { OPERATOR strategy_number operator_name [ ( op_type, op_type ) ]\n" -" | FUNCTION support_number [ ( op_type [ , op_type ] ) ] funcname ( argument_type [, ...] )\n" -" | STORAGE storage_type\n" -" } [, ... ]" -msgstr "" -"CREATE OPERATOR CLASS ad [ DEFAULT ] FOR TYPE veri tipi\n" -" USING index metodu [ FAMILY family_name ] AS\n" -" { OPERATOR strategy_number operatör adı [ ( op_type, op_type ) ]\n" -" | FUNCTION support_number [ ( op_type [ , op_type ] ) ] fonksiyon adı ( argument_type [, ...] )\n" -" | STORAGE storage_type\n" -" } [, ... ]" - -#: sql_help.h:225 +#: sql_help.h:467 msgid "define a new operator family" msgstr "yeni operatör ailesini tanımla" -#: sql_help.h:226 -msgid "CREATE OPERATOR FAMILY name USING index_method" -msgstr "CREATE OPERATOR FAMILY name USING index_method" - -#: sql_help.h:230 -msgid "" -"CREATE ROLE name [ [ WITH ] option [ ... ] ]\n" -"\n" -"where option can be:\n" -" \n" -" SUPERUSER | NOSUPERUSER\n" -" | CREATEDB | NOCREATEDB\n" -" | CREATEROLE | NOCREATEROLE\n" -" | CREATEUSER | NOCREATEUSER\n" -" | INHERIT | NOINHERIT\n" -" | LOGIN | NOLOGIN\n" -" | CONNECTION LIMIT connlimit\n" -" | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -" | VALID UNTIL 'timestamp' \n" -" | IN ROLE rolename [, ...]\n" -" | IN GROUP rolename [, ...]\n" -" | ROLE rolename [, ...]\n" -" | ADMIN rolename [, ...]\n" -" | USER rolename [, ...]\n" -" | SYSID uid" -msgstr "" -"CREATE ROLE name [ [ WITH ] option [ ... ] ]\n" -"\n" -"seçenek aşağıdakilerden birisi olabilir:\n" -" \n" -" SUPERUSER | NOSUPERUSER\n" -" | CREATEDB | NOCREATEDB\n" -" | CREATEROLE | NOCREATEROLE\n" -" | CREATEUSER | NOCREATEUSER\n" -" | INHERIT | NOINHERIT\n" -" | LOGIN | NOLOGIN\n" -" | CONNECTION LIMIT connlimit\n" -" | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -" | VALID UNTIL 'timestamp' \n" -" | IN ROLE rolename [, ...]\n" -" | IN GROUP rolename [, ...]\n" -" | ROLE rolename [, ...]\n" -" | ADMIN rolename [, ...]\n" -" | USER rolename [, ...]\n" -" | SYSID uid" - -#: sql_help.h:233 +#: sql_help.h:477 msgid "define a new rewrite rule" msgstr "yeni rewriter rule tanımla" -#: sql_help.h:234 -msgid "" -"CREATE [ OR REPLACE ] RULE name AS ON event\n" -" TO table [ WHERE condition ]\n" -" DO [ ALSO | INSTEAD ] { NOTHING | command | ( command ; command ... ) }" -msgstr "" -"CREATE [ OR REPLACE ] RULE name AS ON event\n" -" TO tablo_adı [ WHERE condition ]\n" -" DO [ ALSO | INSTEAD ] { NOTHING | command | ( command ; command ... ) }" - -#: sql_help.h:237 +#: sql_help.h:482 msgid "define a new schema" msgstr "yeni şema tanımla" -#: sql_help.h:238 -msgid "" -"CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ ... ] ]\n" -"CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ]" -msgstr "" -"CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ TABLESPACE tablespace ] [ schema_element [ ... ] ]\n" -"CREATE SCHEMA AUTHORIZATION username [ TABLESPACE tablespace ] [ schema_element [ ... ] ]" - -#: sql_help.h:241 +#: sql_help.h:487 msgid "define a new sequence generator" msgstr "yeni sequence generator tanımla" -#: sql_help.h:242 -msgid "" -"CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ]\n" -" [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]\n" -" [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]\n" -" [ OWNED BY { table.column | NONE } ]" -msgstr "" -"CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ]\n" -" [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]\n" -" [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]\n" -" [ OWNED BY { table.column | NONE } ]" - -#: sql_help.h:245 +#: sql_help.h:492 msgid "define a new foreign server" msgstr "yeni foreign sunucu tanımla" -#: sql_help.h:246 -msgid "" -"CREATE SERVER servername [ TYPE 'servertype' ] [ VERSION 'serverversion' ]\n" -" FOREIGN DATA WRAPPER fdwname\n" -" [ OPTIONS ( option 'value' [, ... ] ) ]" -msgstr "" -"CREATE SERVER sunucu adı [ TYPE 'sunucu tipi' ] [ VERSION 'sunucu sürümü' ]\n" -" FOREIGN DATA WRAPPER fdw adı\n" -" [ OPTIONS ( seçenek 'değer' [, ... ] ) ]" - -#: sql_help.h:249 +#: sql_help.h:497 msgid "define a new table" msgstr "yeni tablo tanımla" -#: sql_help.h:250 -msgid "" -"CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name ( [\n" -" { column_name data_type [ DEFAULT default_expr ] [ column_constraint [ ... ] ]\n" -" | table_constraint\n" -" | LIKE parent_table [ { INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES } ] ... }\n" -" [, ... ]\n" -"] )\n" -"[ INHERITS ( parent_table [, ... ] ) ]\n" -"[ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]\n" -"[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" -"[ TABLESPACE tablespace ]\n" -"\n" -"where column_constraint is:\n" -"\n" -"[ CONSTRAINT constraint_name ]\n" -"{ NOT NULL | \n" -" NULL | \n" -" UNIQUE index_parameters |\n" -" PRIMARY KEY index_parameters |\n" -" CHECK ( expression ) |\n" -" REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]\n" -" [ ON DELETE action ] [ ON UPDATE action ] }\n" -"[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n" -"\n" -"and table_constraint is:\n" -"\n" -"[ CONSTRAINT constraint_name ]\n" -"{ UNIQUE ( column_name [, ... ] ) index_parameters |\n" -" PRIMARY KEY ( column_name [, ... ] ) index_parameters |\n" -" CHECK ( expression ) |\n" -" FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]\n" -" [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] }\n" -"[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n" -"\n" -"index_parameters in UNIQUE and PRIMARY KEY constraints are:\n" -"\n" -"[ WITH ( storage_parameter [= value] [, ... ] ) ]\n" -"[ USING INDEX TABLESPACE tablespace ]" -msgstr "" -"CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE tablo_adı ( [\n" -" { kolon_adı veri_tipi [ DEFAULT default_expr ] [ kolon_kısıtlayıcısı [ ... ] ]\n" -" | tablo_kısıtlayıcısı\n" -" | LIKE parent_table [ { INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES } ] ... }\n" -" [, ... ]\n" -"] )\n" -"[ INHERITS ( parent_table [, ... ] ) ]\n" -"[ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]\n" -"[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" -"[ TABLESPACE tablo_uzayı ]\n" -"\n" -"kolon_kısıtlayıcısı aşağıdakilerden birisi olabilir:\n" -"\n" -"im[ CONSTRAINT constraint_name ]\n" -"{ NOT NULL | \n" -" NULL | \n" -" UNIQUE index_parametreleri |\n" -" PRIMARY KEY index_parametreleri |\n" -" CHECK ( ifade ) |\n" -" REFERENCES referans_tablosu [ ( referans_kolonu ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]\n" -" [ ON DELETE işlem ] [ ON UPDATE işlem ] }\n" -"[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n" -"\n" -"ve tablo_kısıtlayıcısı aşağıdakilerden birisi olabilir:\n" -"\n" -"[ CONSTRAINT constraint_name ]\n" -"{ UNIQUE ( column_name [, ... ] ) index_parameters |\n" -" PRIMARY KEY ( column_name [, ... ] ) index_parameters |\n" -" CHECK ( expression ) |\n" -" FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]\n" -" [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] }\n" -"[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n" -"\n" -"UNIQUE ve PRIMARY KEY kısıtlamalarındaki index parametreleri aşağıdakilerden birisi olabilir:\n" -"\n" -"[ WITH ( storage_parameter [= value] [, ... ] ) ]\n" -"[ USING INDEX TABLESPACE tablo_uzayı ]" - -#: sql_help.h:253 -#: sql_help.h:525 +#: sql_help.h:502 +#: sql_help.h:867 msgid "define a new table from the results of a query" msgstr "sorgu sonuçlarından yeni tablo tanımla" -#: sql_help.h:254 -msgid "" -"CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name\n" -" [ (column_name [, ...] ) ]\n" -" [ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]\n" -" [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" -" [ TABLESPACE tablespace ]\n" -" AS query\n" -" [ WITH [ NO ] DATA ]" -msgstr "" -"CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE tablo adı\n" -" [ (kolon adı [, ...] ) ]\n" -" [ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]\n" -" [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" -" [ TABLESPACE tablespace ]\n" -" AS sorgu\n" -" [ WITH [ NO ] DATA ]" - -#: sql_help.h:257 +#: sql_help.h:507 msgid "define a new tablespace" msgstr "yeni tablespace tanımla" -#: sql_help.h:258 -msgid "CREATE TABLESPACE tablespacename [ OWNER username ] LOCATION 'directory'" -msgstr "CREATE TABLESPACE tablespacename [ OWNER username ] LOCATION 'directory'" - -#: sql_help.h:261 +#: sql_help.h:512 msgid "define a new text search configuration" msgstr "yeni metin arama yapılandırması tanımla" -#: sql_help.h:262 -msgid "" -"CREATE TEXT SEARCH CONFIGURATION name (\n" -" PARSER = parser_name |\n" -" COPY = source_config\n" -")" -msgstr "" -"CREATE TEXT SEARCH CONFIGURATION name (\n" -" PARSER = parser_name |\n" -" COPY = source_config\n" -")" - -#: sql_help.h:265 +#: sql_help.h:517 msgid "define a new text search dictionary" msgstr "yeni metin arama sözlüğü tanımla" -#: sql_help.h:266 -msgid "" -"CREATE TEXT SEARCH DICTIONARY name (\n" -" TEMPLATE = template\n" -" [, option = value [, ... ]]\n" -")" -msgstr "" -"CREATE TEXT SEARCH DICTIONARY ad (\n" -" TEMPLATE = şablon\n" -" [, option = value [, ... ]]\n" -")" - -#: sql_help.h:269 +#: sql_help.h:522 msgid "define a new text search parser" msgstr "yeni metin arama ayrıştırıcısı tanımla" -#: sql_help.h:270 -msgid "" -"CREATE TEXT SEARCH PARSER name (\n" -" START = start_function ,\n" -" GETTOKEN = gettoken_function ,\n" -" END = end_function ,\n" -" LEXTYPES = lextypes_function\n" -" [, HEADLINE = headline_function ]\n" -")" -msgstr "" -"CREATE TEXT SEARCH PARSER name (\n" -" START = start_function ,\n" -" GETTOKEN = gettoken_function ,\n" -" END = end_function ,\n" -" LEXTYPES = lextypes_function\n" -" [, HEADLINE = headline_function ]\n" -")" - -#: sql_help.h:273 +#: sql_help.h:527 msgid "define a new text search template" msgstr "yeni metin arama şablonu tanımla" -#: sql_help.h:274 -msgid "" -"CREATE TEXT SEARCH TEMPLATE name (\n" -" [ INIT = init_function , ]\n" -" LEXIZE = lexize_function\n" -")" -msgstr "" -"CREATE TEXT SEARCH TEMPLATE ad (\n" -" [ INIT = init_function , ]\n" -" LEXIZE = lexize_function\n" -")" - -#: sql_help.h:277 +#: sql_help.h:532 msgid "define a new trigger" msgstr "yeni trigger tanımla" -#: sql_help.h:278 -msgid "" -"CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }\n" -" ON table [ FOR [ EACH ] { ROW | STATEMENT } ]\n" -" EXECUTE PROCEDURE funcname ( arguments )" -msgstr "" -"CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }\n" -" ON table [ FOR [ EACH ] { ROW | STATEMENT } ]\n" -" EXECUTE PROCEDURE funcname ( arguments )" - -#: sql_help.h:281 +#: sql_help.h:537 msgid "define a new data type" msgstr "yeni veri tipi tanımla" -#: sql_help.h:282 -msgid "" -"CREATE TYPE name AS\n" -" ( attribute_name data_type [, ... ] )\n" -"\n" -"CREATE TYPE name AS ENUM\n" -" ( 'label' [, ... ] )\n" -"\n" -"CREATE TYPE name (\n" -" INPUT = input_function,\n" -" OUTPUT = output_function\n" -" [ , RECEIVE = receive_function ]\n" -" [ , SEND = send_function ]\n" -" [ , TYPMOD_IN = type_modifier_input_function ]\n" -" [ , TYPMOD_OUT = type_modifier_output_function ]\n" -" [ , ANALYZE = analyze_function ]\n" -" [ , INTERNALLENGTH = { internallength | VARIABLE } ]\n" -" [ , PASSEDBYVALUE ]\n" -" [ , ALIGNMENT = alignment ]\n" -" [ , STORAGE = storage ]\n" -" [ , LIKE = like_type ]\n" -" [ , CATEGORY = category ]\n" -" [ , PREFERRED = preferred ]\n" -" [ , DEFAULT = default ]\n" -" [ , ELEMENT = element ]\n" -" [ , DELIMITER = delimiter ]\n" -")\n" -"\n" -"CREATE TYPE name" -msgstr "" -"CREATE TYPE ad AS\n" -" ( attribute_name veri tipi [, ... ] )\n" -"\n" -"CREATE TYPE ad AS ENUM\n" -" ( 'label' [, ... ] )\n" -"\n" -"CREATE TYPE ad (\n" -" INPUT = input_function,\n" -" OUTPUT = output_function\n" -" [ , RECEIVE = receive_function ]\n" -" [ , SEND = send_function ]\n" -" [ , TYPMOD_IN = type_modifier_input_function ]\n" -" [ , TYPMOD_OUT = type_modifier_output_function ]\n" -" [ , ANALYZE = analyze_function ]\n" -" [ , INTERNALLENGTH = { internallength | VARIABLE } ]\n" -" [ , PASSEDBYVALUE ]\n" -" [ , ALIGNMENT = alignment ]\n" -" [ , STORAGE = storage ]\n" -" [ , LIKE = like_type ]\n" -" [ , CATEGORY = category ]\n" -" [ , PREFERRED = preferred ]\n" -" [ , DEFAULT = default ]\n" -" [ , ELEMENT = element ]\n" -" [ , DELIMITER = delimiter ]\n" -")\n" -"\n" -"CREATE TYPE name" - -#: sql_help.h:286 -msgid "" -"CREATE USER name [ [ WITH ] option [ ... ] ]\n" -"\n" -"where option can be:\n" -" \n" -" SUPERUSER | NOSUPERUSER\n" -" | CREATEDB | NOCREATEDB\n" -" | CREATEROLE | NOCREATEROLE\n" -" | CREATEUSER | NOCREATEUSER\n" -" | INHERIT | NOINHERIT\n" -" | LOGIN | NOLOGIN\n" -" | CONNECTION LIMIT connlimit\n" -" | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -" | VALID UNTIL 'timestamp' \n" -" | IN ROLE rolename [, ...]\n" -" | IN GROUP rolename [, ...]\n" -" | ROLE rolename [, ...]\n" -" | ADMIN rolename [, ...]\n" -" | USER rolename [, ...]\n" -" | SYSID uid" -msgstr "" -"CREATE USER name [ [ WITH ] option [ ... ] ]\n" -"\n" -"seçenek aşağıdakilerden birisi olabilir:\n" -" \n" -" SUPERUSER | NOSUPERUSER\n" -" | CREATEDB | NOCREATEDB\n" -" | CREATEROLE | NOCREATEROLE\n" -" | CREATEUSER | NOCREATEUSER\n" -" | INHERIT | NOINHERIT\n" -" | LOGIN | NOLOGIN\n" -" | CONNECTION LIMIT connlimit\n" -" | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" -" | VALID UNTIL 'timestamp' \n" -" | IN ROLE rolename [, ...]\n" -" | IN GROUP rolename [, ...]\n" -" | ROLE rolename [, ...]\n" -" | ADMIN rolename [, ...]\n" -" | USER rolename [, ...]\n" -" | SYSID uid" - -#: sql_help.h:289 +#: sql_help.h:547 msgid "define a new mapping of a user to a foreign server" msgstr "bir foreign sunucuya yeni kullanıcı haritalamasını tanımla" -#: sql_help.h:290 -msgid "" -"CREATE USER MAPPING FOR { username | USER | CURRENT_USER | PUBLIC }\n" -" SERVER servername\n" -" [ OPTIONS ( option 'value' [ , ... ] ) ]" -msgstr "" -"CREATE USER MAPPING FOR { kullanıcı adı | USER | CURRENT_USER | PUBLIC }\n" -" SERVER sunucu adı\n" -" [ OPTIONS ( seçenek 'değer' [ , ... ] ) ]" - -#: sql_help.h:293 +#: sql_help.h:552 msgid "define a new view" msgstr "yeni vew tanımla" -#: sql_help.h:294 -msgid "" -"CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name [, ...] ) ]\n" -" AS query" -msgstr "" -"CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name [, ...] ) ]\n" -" AS query" - -#: sql_help.h:297 +#: sql_help.h:557 msgid "deallocate a prepared statement" msgstr "deallocate a prepared statement" -#: sql_help.h:298 -msgid "DEALLOCATE [ PREPARE ] { name | ALL }" -msgstr "DEALLOCATE [ PREPARE ] { name | ALL }" - -#: sql_help.h:301 +#: sql_help.h:562 msgid "define a cursor" msgstr "cursor tanımla" -#: sql_help.h:302 -msgid "" -"DECLARE name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]\n" -" CURSOR [ { WITH | WITHOUT } HOLD ] FOR query" -msgstr "" -"DECLARE ad [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]\n" -" CURSOR [ { WITH | WITHOUT } HOLD ] FOR sorgu" - -#: sql_help.h:305 +#: sql_help.h:567 msgid "delete rows of a table" msgstr "tablodan satırları sil" -#: sql_help.h:306 -msgid "" -"DELETE FROM [ ONLY ] table [ [ AS ] alias ]\n" -" [ USING usinglist ]\n" -" [ WHERE condition | WHERE CURRENT OF cursor_name ]\n" -" [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" -msgstr "" -"DELETE FROM [ ONLY ] tablo [ [ AS ] takma_adı ]\n" -" [ USING usinglist ]\n" -" [ WHERE condition | WHERE CURRENT OF cursor_name ]\n" -" [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" - -#: sql_help.h:309 +#: sql_help.h:572 msgid "discard session state" msgstr "oturum bilgileri unut" -#: sql_help.h:310 -msgid "DISCARD { ALL | PLANS | TEMPORARY | TEMP }" -msgstr "DISCARD { ALL | PLANS | TEMPORARY | TEMP }" +#: sql_help.h:577 +msgid "execute an anonymous code block" +msgstr "bir anonim kod bloğu çalıştır" -#: sql_help.h:313 +#: sql_help.h:582 msgid "remove an aggregate function" msgstr "aggregate function'u kaldır" -#: sql_help.h:314 -msgid "DROP AGGREGATE [ IF EXISTS ] name ( type [ , ... ] ) [ CASCADE | RESTRICT ]" -msgstr "DROP AGGREGATE [ IF EXISTS ] name ( type [ , ... ] ) [ CASCADE | RESTRICT ]" - -#: sql_help.h:317 +#: sql_help.h:587 msgid "remove a cast" msgstr "cast kaldır" -#: sql_help.h:318 -msgid "DROP CAST [ IF EXISTS ] (sourcetype AS targettype) [ CASCADE | RESTRICT ]" -msgstr "DROP CAST [ IF EXISTS ] (sourcetype AS targettype) [ CASCADE | RESTRICT ]" +#: sql_help.h:592 +#, fuzzy +msgid "remove a collation" +msgstr "function kaldır" -#: sql_help.h:321 +#: sql_help.h:597 msgid "remove a conversion" msgstr "conversion kaldır" -#: sql_help.h:322 -msgid "DROP CONVERSION [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -msgstr "DROP CONVERSION [ IF EXISTS ] conversion_adı [ CASCADE | RESTRICT ]" - -#: sql_help.h:325 +#: sql_help.h:602 msgid "remove a database" msgstr "veritabanını kaldır" -#: sql_help.h:326 -msgid "DROP DATABASE [ IF EXISTS ] name" -msgstr "DROP DATABASE [ IF EXISTS ] veritabanı_adı" - -#: sql_help.h:329 +#: sql_help.h:607 msgid "remove a domain" msgstr "domain kaldır" -#: sql_help.h:330 -msgid "DROP DOMAIN [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -msgstr "DROP DOMAIN [ IF EXISTS ] adı [, ...] [ CASCADE | RESTRICT ]" +#: sql_help.h:612 +#, fuzzy +msgid "remove an extension" +msgstr "conversion kaldır" -#: sql_help.h:333 +#: sql_help.h:617 msgid "remove a foreign-data wrapper" msgstr "foreign-data wrapper'ını kaldır" -#: sql_help.h:334 -msgid "DROP FOREIGN DATA WRAPPER [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -msgstr "DROP FOREIGN DATA WRAPPER [ IF EXISTS ] ad [ CASCADE | RESTRICT ]" +#: sql_help.h:622 +#, fuzzy +msgid "remove a foreign table" +msgstr "tablo kaldır" -#: sql_help.h:337 +#: sql_help.h:627 msgid "remove a function" msgstr "function kaldır" -#: sql_help.h:338 -msgid "" -"DROP FUNCTION [ IF EXISTS ] name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -" [ CASCADE | RESTRICT ]" -msgstr "" -"DROP FUNCTION [ IF EXISTS ] fonksiyon_adı ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" -" [ CASCADE | RESTRICT ]" - -#: sql_help.h:341 -#: sql_help.h:369 -#: sql_help.h:421 +#: sql_help.h:632 +#: sql_help.h:667 +#: sql_help.h:732 msgid "remove a database role" msgstr "veritabanı rolünü kaldır" -#: sql_help.h:342 -msgid "DROP GROUP [ IF EXISTS ] name [, ...]" -msgstr "DROP GROUP [ IF EXISTS ] name [, ...]" - -#: sql_help.h:345 +#: sql_help.h:637 msgid "remove an index" msgstr "indeks kaldır" -#: sql_help.h:346 -msgid "DROP INDEX [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -msgstr "DROP INDEX [ IF EXISTS ] index_adı [, ...] [ CASCADE | RESTRICT ]" - -#: sql_help.h:349 +#: sql_help.h:642 msgid "remove a procedural language" msgstr "yordamsal dili kaldır" -#: sql_help.h:350 -msgid "DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -msgstr "DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] dil_adı [ CASCADE | RESTRICT ]" - -#: sql_help.h:353 +#: sql_help.h:647 msgid "remove an operator" msgstr "opeartor kaldır" -#: sql_help.h:354 -msgid "DROP OPERATOR [ IF EXISTS ] name ( { lefttype | NONE } , { righttype | NONE } ) [ CASCADE | RESTRICT ]" -msgstr "DROP OPERATOR [ IF EXISTS ] name ( { lefttype | NONE } , { righttype | NONE } ) [ CASCADE | RESTRICT ]" - -#: sql_help.h:357 +#: sql_help.h:652 msgid "remove an operator class" msgstr "operator class kaldır" -#: sql_help.h:358 -msgid "DROP OPERATOR CLASS [ IF EXISTS ] name USING index_method [ CASCADE | RESTRICT ]" -msgstr "DROP OPERATOR CLASS [ IF EXISTS ] ad USING index_method [ CASCADE | RESTRICT ]" - -#: sql_help.h:361 +#: sql_help.h:657 msgid "remove an operator family" msgstr "opeartör ailesini kaldır" -#: sql_help.h:362 -msgid "DROP OPERATOR FAMILY [ IF EXISTS ] name USING index_method [ CASCADE | RESTRICT ]" -msgstr "DROP OPERATOR FAMILY [ IF EXISTS ] name USING index_method [ CASCADE | RESTRICT ]" - -#: sql_help.h:365 +#: sql_help.h:662 msgid "remove database objects owned by a database role" msgstr "veritabanı rolüne ait veritabanı nesneleri kaldır" -#: sql_help.h:366 -msgid "DROP OWNED BY name [, ...] [ CASCADE | RESTRICT ]" -msgstr "DROP OWNED BY name [, ...] [ CASCADE | RESTRICT ]" - -#: sql_help.h:370 -msgid "DROP ROLE [ IF EXISTS ] name [, ...]" -msgstr "DROP ROLE [ IF EXISTS ] name [, ...]" - -#: sql_help.h:373 +#: sql_help.h:672 msgid "remove a rewrite rule" msgstr "rewrite rule kaldır" -#: sql_help.h:374 -msgid "DROP RULE [ IF EXISTS ] name ON relation [ CASCADE | RESTRICT ]" -msgstr "DROP RULE [ IF EXISTS ] rule_adı ON relation [ CASCADE | RESTRICT ]" - -#: sql_help.h:377 +#: sql_help.h:677 msgid "remove a schema" msgstr "şema kaldır" -#: sql_help.h:378 -msgid "DROP SCHEMA [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -msgstr "DROP SCHEMA [ IF EXISTS ] şema_adı [, ...] [ CASCADE | RESTRICT ]" - -#: sql_help.h:381 +#: sql_help.h:682 msgid "remove a sequence" msgstr "sequence kaldır" -#: sql_help.h:382 -msgid "DROP SEQUENCE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -msgstr "DROP SEQUENCE [ IF EXISTS ] sequence_adı [, ...] [ CASCADE | RESTRICT ]" - -#: sql_help.h:385 +#: sql_help.h:687 msgid "remove a foreign server descriptor" msgstr "foreign sunucu tanımını kaldır" -#: sql_help.h:386 -msgid "DROP SERVER [ IF EXISTS ] servername [ CASCADE | RESTRICT ]" -msgstr "DROP SERVER [ IF EXISTS ] sunucu adı [ CASCADE | RESTRICT ]" - -#: sql_help.h:389 +#: sql_help.h:692 msgid "remove a table" msgstr "tablo kaldır" -#: sql_help.h:390 -msgid "DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -msgstr "DROP TABLE [ IF EXISTS ] tablo_adı [, ...] [ CASCADE | RESTRICT ]" - -#: sql_help.h:393 +#: sql_help.h:697 msgid "remove a tablespace" msgstr "tablespace kaldır" -#: sql_help.h:394 -msgid "DROP TABLESPACE [ IF EXISTS ] tablespacename" -msgstr "DROP TABLESPACE [ IF EXISTS ] tablespace_adı" - -#: sql_help.h:397 +#: sql_help.h:702 msgid "remove a text search configuration" msgstr "metin arama yapılandırmasını kaldır" -#: sql_help.h:398 -msgid "DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -msgstr "DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] adı [ CASCADE | RESTRICT ]" - -#: sql_help.h:401 +#: sql_help.h:707 msgid "remove a text search dictionary" msgstr "biri metin arama sözlüğünü kaldır" -#: sql_help.h:402 -msgid "DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -msgstr "DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] adı [ CASCADE | RESTRICT ]" - -#: sql_help.h:405 +#: sql_help.h:712 msgid "remove a text search parser" msgstr "bir metin arama ayrıştırıcısını kaldır" -#: sql_help.h:406 -msgid "DROP TEXT SEARCH PARSER [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -msgstr "DROP TEXT SEARCH PARSER [ IF EXISTS ] adı [ CASCADE | RESTRICT ]" - -#: sql_help.h:409 +#: sql_help.h:717 msgid "remove a text search template" msgstr "bir metin arama şablonunu kaldır" -#: sql_help.h:410 -msgid "DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] name [ CASCADE | RESTRICT ]" -msgstr "DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] adı [ CASCADE | RESTRICT ]" - -#: sql_help.h:413 +#: sql_help.h:722 msgid "remove a trigger" msgstr "trigger kaldır" -#: sql_help.h:414 -msgid "DROP TRIGGER [ IF EXISTS ] name ON table [ CASCADE | RESTRICT ]" -msgstr "DROP TRIGGER [ IF EXISTS ] trigger_adı ON tablo_adı [ CASCADE | RESTRICT ]" - -#: sql_help.h:417 +#: sql_help.h:727 msgid "remove a data type" msgstr "veri tipi kaldır" -#: sql_help.h:418 -msgid "DROP TYPE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -msgstr "DROP TYPE [ IF EXISTS ] tip_adı [, ...] [ CASCADE | RESTRICT ]" - -#: sql_help.h:422 -msgid "DROP USER [ IF EXISTS ] name [, ...]" -msgstr "DROP USER [ IF EXISTS ] name [, ...]" - -#: sql_help.h:425 +#: sql_help.h:737 msgid "remove a user mapping for a foreign server" msgstr "bir foreign sunucu için kullanıcı haritalamasını kaldır" -#: sql_help.h:426 -msgid "DROP USER MAPPING [ IF EXISTS ] FOR { username | USER | CURRENT_USER | PUBLIC } SERVER servername" -msgstr "DROP USER MAPPING [ IF EXISTS ] FOR { kullanıcı adı | USER | CURRENT_USER | PUBLIC } SERVER sunucu adı" - -#: sql_help.h:429 +#: sql_help.h:742 msgid "remove a view" msgstr "view kaldır" -#: sql_help.h:430 -msgid "DROP VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" -msgstr "DROP VIEW [ IF EXISTS ] view_adı [, ...] [ CASCADE | RESTRICT ]" - -#: sql_help.h:434 -msgid "END [ WORK | TRANSACTION ]" -msgstr "END [ WORK | TRANSACTION ]" - -#: sql_help.h:437 +#: sql_help.h:752 msgid "execute a prepared statement" msgstr "hazırlanmış komutu çalıştır" -#: sql_help.h:438 -msgid "EXECUTE name [ ( parameter [, ...] ) ]" -msgstr "EXECUTE adı [ ( parameter [, ...] ) ]" - -#: sql_help.h:441 +#: sql_help.h:757 msgid "show the execution plan of a statement" msgstr "sorgunun execution planını göster" -#: sql_help.h:442 -msgid "EXPLAIN [ ANALYZE ] [ VERBOSE ] statement" -msgstr "EXPLAIN [ ANALYZE ] [ VERBOSE ] ifade" - -#: sql_help.h:445 +#: sql_help.h:762 msgid "retrieve rows from a query using a cursor" msgstr "cursor kullanarak sorgunun sonucundan satırları getir" -#: sql_help.h:446 -msgid "" -"FETCH [ direction { FROM | IN } ] cursorname\n" -"\n" -"where direction can be empty or one of:\n" -"\n" -" NEXT\n" -" PRIOR\n" -" FIRST\n" -" LAST\n" -" ABSOLUTE count\n" -" RELATIVE count\n" -" count\n" -" ALL\n" -" FORWARD\n" -" FORWARD count\n" -" FORWARD ALL\n" -" BACKWARD\n" -" BACKWARD count\n" -" BACKWARD ALL" -msgstr "" -"FETCH [ direction { FROM | IN } ] cursorname\n" -"\n" -"direction boş ya da aşağıdakilerden birisi olabilir:\n" -"\n" -" NEXT\n" -" PRIOR\n" -" FIRST\n" -" LAST\n" -" ABSOLUTE count\n" -" RELATIVE count\n" -" count\n" -" ALL\n" -" FORWARD\n" -" FORWARD count\n" -" FORWARD ALL\n" -" BACKWARD\n" -" BACKWARD count\n" -" BACKWARD ALL" - -#: sql_help.h:449 +#: sql_help.h:767 msgid "define access privileges" msgstr "erişim haklarını tanımla" -#: sql_help.h:450 -msgid "" -"GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n" -" [,...] | ALL [ PRIVILEGES ] }\n" -" ON [ TABLE ] tablename [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column [, ...] )\n" -" [,...] | ALL [ PRIVILEGES ] ( column [, ...] ) }\n" -" ON [ TABLE ] tablename [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { { USAGE | SELECT | UPDATE }\n" -" [,...] | ALL [ PRIVILEGES ] }\n" -" ON SEQUENCE sequencename [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }\n" -" ON DATABASE dbname [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -" ON FOREIGN DATA WRAPPER fdwname [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -" ON FOREIGN SERVER servername [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n" -" ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -" ON LANGUAGE langname [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" -" ON SCHEMA schemaname [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { CREATE | ALL [ PRIVILEGES ] }\n" -" ON TABLESPACE tablespacename [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT role [, ...] TO rolename [, ...] [ WITH ADMIN OPTION ]" -msgstr "" -"GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n" -" [,...] | ALL [ PRIVILEGES ] }\n" -" ON [ TABLE ] tablo adı [, ...]\n" -" TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( kolon [, ...] )\n" -" [,...] | ALL [ PRIVILEGES ] ( kolon [, ...] ) }\n" -" ON [ TABLE ] tablo adı [, ...]\n" -" TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { { USAGE | SELECT | UPDATE }\n" -" [,...] | ALL [ PRIVILEGES ] }\n" -" ON SEQUENCE sequence adı [, ...]\n" -" TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }\n" -" ON DATABASE veritabanı adı [, ...]\n" -" TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -" ON FOREIGN DATA WRAPPER fdw adı [, ...]\n" -" TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -" ON FOREIGN SERVER sunucu adı [, ...]\n" -" TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n" -" ON FUNCTION fonksiyon adı ( [ [ argüman modu ] [ argüman adı ] argüman tipi [, ...] ] ) [, ...]\n" -" TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { USAGE | ALL [ PRIVILEGES ] }\n" -" ON LANGUAGE dil adı [, ...]\n" -" TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" -" ON SCHEMA şema adı [, ...]\n" -" TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT { CREATE | ALL [ PRIVILEGES ] }\n" -" ON TABLESPACE tablespacename [, ...]\n" -" TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" -"\n" -"GRANT role [, ...] TO rol adı [, ...] [ WITH ADMIN OPTION ]" - -#: sql_help.h:453 +#: sql_help.h:772 msgid "create new rows in a table" msgstr "tabloda yeni satırları ekliyor" -#: sql_help.h:454 -msgid "" -"INSERT INTO table [ ( column [, ...] ) ]\n" -" { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }\n" -" [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" -msgstr "" -"IINSERT INTO table [ ( column [, ...] ) ]\n" -" { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }\n" -" [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" - -#: sql_help.h:457 +#: sql_help.h:777 msgid "listen for a notification" msgstr "bildiri bekleme durumuna geç" -#: sql_help.h:458 -msgid "LISTEN name" -msgstr "LISTEN ad" - -#: sql_help.h:461 -msgid "load or reload a shared library file" -msgstr "shared library yükle" +#: sql_help.h:782 +msgid "load a shared library file" +msgstr "shared library dosyası yükle" -#: sql_help.h:462 -msgid "LOAD 'filename'" -msgstr "LOAD 'dosya adı'" - -#: sql_help.h:465 +#: sql_help.h:787 msgid "lock a table" msgstr "tabloyu kilitle" -#: sql_help.h:466 -msgid "" -"LOCK [ TABLE ] [ ONLY ] name [, ...] [ IN lockmode MODE ] [ NOWAIT ]\n" -"\n" -"where lockmode is one of:\n" -"\n" -" ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n" -" | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE" -msgstr "" -"LOCK [ TABLE ] [ ONLY ] ad [, ...] [ IN kilit modu MODE ] [ NOWAIT ]\n" -"\n" -"kilit modu aşağıdakilerden birisi olabilir:\n" -"\n" -" ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n" -" | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE" - -#: sql_help.h:469 +#: sql_help.h:792 msgid "position a cursor" msgstr "cursor'u yereştir" -#: sql_help.h:470 -msgid "MOVE [ direction { FROM | IN } ] cursorname" -msgstr "MOVE [ direction { FROM | IN } ] cursor_adı" - -#: sql_help.h:473 +#: sql_help.h:797 msgid "generate a notification" msgstr "bildiri üret" -#: sql_help.h:474 -msgid "NOTIFY name" -msgstr "NOTIFY ad" - -#: sql_help.h:477 +#: sql_help.h:802 msgid "prepare a statement for execution" msgstr "çalıştırmak için sorguyu hazırla" -#: sql_help.h:478 -msgid "PREPARE name [ ( datatype [, ...] ) ] AS statement" -msgstr "PREPARE adı [ ( veri_tipi [, ...] ) ] AS ifade" - -#: sql_help.h:481 +#: sql_help.h:807 msgid "prepare the current transaction for two-phase commit" msgstr "geçerli transaction'u two-phase commit için hazırla" -#: sql_help.h:482 -msgid "PREPARE TRANSACTION transaction_id" -msgstr "PREPARE TRANSACTION transaction_id" - -#: sql_help.h:485 +#: sql_help.h:812 msgid "change the ownership of database objects owned by a database role" msgstr "veritabanı rolünün sahip olduğu nesnelerinin sahipliğini değiştir" -#: sql_help.h:486 -msgid "REASSIGN OWNED BY old_role [, ...] TO new_role" -msgstr "REASSIGN OWNED BY eski_rol [, ...] TO yeni_rol" - -#: sql_help.h:489 +#: sql_help.h:817 msgid "rebuild indexes" msgstr "indeksleri yeniden oluştur" -#: sql_help.h:490 -msgid "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } name [ FORCE ]" -msgstr "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } adı [ FORCE ]" - -#: sql_help.h:493 +#: sql_help.h:822 msgid "destroy a previously defined savepoint" msgstr "önceki tanımlanmış savepoint'i kaldır" -#: sql_help.h:494 -msgid "RELEASE [ SAVEPOINT ] savepoint_name" -msgstr "RELEASE [ SAVEPOINT ] savepoint_adı" - -#: sql_help.h:497 +#: sql_help.h:827 msgid "restore the value of a run-time parameter to the default value" msgstr "çalıştırma zamanı parametresini öntanımlı değerine getir" -#: sql_help.h:498 -msgid "" -"RESET configuration_parameter\n" -"RESET ALL" -msgstr "" -"RESET configuration_parameter\n" -"RESET ALL" - -#: sql_help.h:501 +#: sql_help.h:832 msgid "remove access privileges" msgstr "erişim hakkını kaldır" -#: sql_help.h:502 -msgid "" -"REVOKE [ GRANT OPTION FOR ]\n" -" { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n" -" [,...] | ALL [ PRIVILEGES ] }\n" -" ON [ TABLE ] tablename [, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { { SELECT | INSERT | UPDATE | REFERENCES } ( column [, ...] )\n" -" [,...] | ALL [ PRIVILEGES ] ( column [, ...] ) }\n" -" ON [ TABLE ] tablename [, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { { USAGE | SELECT | UPDATE }\n" -" [,...] | ALL [ PRIVILEGES ] }\n" -" ON SEQUENCE sequencename [, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }\n" -" ON DATABASE dbname [, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { USAGE | ALL [ PRIVILEGES ] }\n" -" ON FOREIGN DATA WRAPPER fdwname [, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { USAGE | ALL [ PRIVILEGES ] }\n" -" ON FOREIGN SERVER servername [, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { EXECUTE | ALL [ PRIVILEGES ] }\n" -" ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) [, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { USAGE | ALL [ PRIVILEGES ] }\n" -" ON LANGUAGE langname [, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" -" ON SCHEMA schemaname [, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { CREATE | ALL [ PRIVILEGES ] }\n" -" ON TABLESPACE tablespacename [, ...]\n" -" FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ ADMIN OPTION FOR ]\n" -" role [, ...] FROM rolename [, ...]\n" -" [ CASCADE | RESTRICT ]" +#: sql_help.h:842 +msgid "cancel a transaction that was earlier prepared for two-phase commit" +msgstr "daha önce two-phase commit için hazırlanmış transaction'u iptal et" + +#: sql_help.h:847 +msgid "roll back to a savepoint" +msgstr "savepoint'a rollback" + +#: sql_help.h:852 +msgid "define a new savepoint within the current transaction" +msgstr "geerli transaction içinde savepoint tanımla" + +#: sql_help.h:857 +#, fuzzy +msgid "define or change a security label applied to an object" +msgstr "Nesne yorumunu tanımla ya da değiştir" + +#: sql_help.h:862 +#: sql_help.h:907 +#: sql_help.h:937 +msgid "retrieve rows from a table or view" +msgstr "tablo ya da view'dan satırları getir" + +#: sql_help.h:872 +msgid "change a run-time parameter" +msgstr "çalışma zamanı parametresini değiştir" + +#: sql_help.h:877 +#, fuzzy +msgid "set constraint check timing for the current transaction" +msgstr "geçerli transaction için constraint doğrulama biçimini belirle" + +#: sql_help.h:882 +msgid "set the current user identifier of the current session" +msgstr "geçerli oturumun geçerli kullanıcısını tanımla" + +#: sql_help.h:887 +msgid "set the session user identifier and the current user identifier of the current session" +msgstr "ilk oturum ve geçerli oturum için kullanıcı tanımla" + +#: sql_help.h:892 +msgid "set the characteristics of the current transaction" +msgstr "geçerli transcation'ın karakteristiklerini ayarla" + +#: sql_help.h:897 +msgid "show the value of a run-time parameter" +msgstr "çalıştırma zaman parametresinın değerini göster" + +#: sql_help.h:912 +msgid "empty a table or set of tables" +msgstr "bir veya birden fazla tabloyu kısalt" + +#: sql_help.h:917 +msgid "stop listening for a notification" +msgstr "bildiriyi beklemeyi durdur" + +#: sql_help.h:922 +msgid "update rows of a table" +msgstr "tablodaki satırları güncelle" + +#: sql_help.h:927 +msgid "garbage-collect and optionally analyze a database" +msgstr "Veritabanındaki çöpleri-toparla ve veritabanını (tercihe başlı) analiz et" + +#: sql_help.h:932 +msgid "compute a set of rows" +msgstr "compute a set of rows" + +#: sql_help.c:26 +#: sql_help.c:29 +#: sql_help.c:32 +#: sql_help.c:44 +#: sql_help.c:46 +#: sql_help.c:48 +#: sql_help.c:59 +#: sql_help.c:61 +#: sql_help.c:63 +#: sql_help.c:87 +#: sql_help.c:91 +#: sql_help.c:93 +#: sql_help.c:95 +#: sql_help.c:97 +#: sql_help.c:100 +#: sql_help.c:102 +#: sql_help.c:104 +#: sql_help.c:181 +#: sql_help.c:183 +#: sql_help.c:184 +#: sql_help.c:186 +#: sql_help.c:188 +#: sql_help.c:190 +#: sql_help.c:192 +#: sql_help.c:280 +#: sql_help.c:285 +#: sql_help.c:311 +#: sql_help.c:313 +#: sql_help.c:316 +#: sql_help.c:318 +#: sql_help.c:359 +#: sql_help.c:364 +#: sql_help.c:369 +#: sql_help.c:374 +#: sql_help.c:412 +#: sql_help.c:414 +#: sql_help.c:416 +#: sql_help.c:419 +#: sql_help.c:429 +#: sql_help.c:431 +#: sql_help.c:450 +#: sql_help.c:454 +#: sql_help.c:467 +#: sql_help.c:470 +#: sql_help.c:473 +#: sql_help.c:493 +#: sql_help.c:505 +#: sql_help.c:513 +#: sql_help.c:516 +#: sql_help.c:519 +#: sql_help.c:549 +#: sql_help.c:555 +#: sql_help.c:557 +#: sql_help.c:561 +#: sql_help.c:564 +#: sql_help.c:567 +#: sql_help.c:577 +#: sql_help.c:579 +#: sql_help.c:596 +#: sql_help.c:605 +#: sql_help.c:607 +#: sql_help.c:609 +#: sql_help.c:683 +#: sql_help.c:685 +#: sql_help.c:688 +#: sql_help.c:690 +#: sql_help.c:748 +#: sql_help.c:750 +#: sql_help.c:752 +#: sql_help.c:755 +#: sql_help.c:776 +#: sql_help.c:779 +#: sql_help.c:782 +#: sql_help.c:785 +#: sql_help.c:789 +#: sql_help.c:791 +#: sql_help.c:793 +#: sql_help.c:795 +#: sql_help.c:809 +#: sql_help.c:812 +#: sql_help.c:814 +#: sql_help.c:816 +#: sql_help.c:826 +#: sql_help.c:828 +#: sql_help.c:838 +#: sql_help.c:840 +#: sql_help.c:849 +#: sql_help.c:870 +#: sql_help.c:872 +#: sql_help.c:874 +#: sql_help.c:877 +#: sql_help.c:879 +#: sql_help.c:881 +#: sql_help.c:919 +#: sql_help.c:925 +#: sql_help.c:927 +#: sql_help.c:930 +#: sql_help.c:932 +#: sql_help.c:934 +#: sql_help.c:959 +#: sql_help.c:962 +#: sql_help.c:964 +#: sql_help.c:966 +#: sql_help.c:968 +#: sql_help.c:1008 +#: sql_help.c:1191 +#: sql_help.c:1199 +#: sql_help.c:1243 +#: sql_help.c:1247 +#: sql_help.c:1257 +#: sql_help.c:1275 +#: sql_help.c:1298 +#: sql_help.c:1330 +#: sql_help.c:1377 +#: sql_help.c:1419 +#: sql_help.c:1441 +#: sql_help.c:1461 +#: sql_help.c:1462 +#: sql_help.c:1479 +#: sql_help.c:1499 +#: sql_help.c:1521 +#: sql_help.c:1549 +#: sql_help.c:1570 +#: sql_help.c:1600 +#: sql_help.c:1781 +#: sql_help.c:1794 +#: sql_help.c:1811 +#: sql_help.c:1827 +#: sql_help.c:1850 +#: sql_help.c:1893 +#: sql_help.c:1897 +#: sql_help.c:1899 +#: sql_help.c:1917 +#: sql_help.c:1944 +#: sql_help.c:1977 +#: sql_help.c:1987 +#: sql_help.c:1996 +#: sql_help.c:2040 +#: sql_help.c:2058 +#: sql_help.c:2066 +#: sql_help.c:2074 +#: sql_help.c:2082 +#: sql_help.c:2098 +#: sql_help.c:2106 +#: sql_help.c:2115 +#: sql_help.c:2126 +#: sql_help.c:2134 +#: sql_help.c:2142 +#: sql_help.c:2150 +#: sql_help.c:2160 +#: sql_help.c:2169 +#: sql_help.c:2178 +#: sql_help.c:2186 +#: sql_help.c:2194 +#: sql_help.c:2203 +#: sql_help.c:2211 +#: sql_help.c:2227 +#: sql_help.c:2243 +#: sql_help.c:2251 +#: sql_help.c:2259 +#: sql_help.c:2267 +#: sql_help.c:2275 +#: sql_help.c:2284 +#: sql_help.c:2292 +#: sql_help.c:2309 +#: sql_help.c:2324 +#: sql_help.c:2516 +#: sql_help.c:2567 +#: sql_help.c:2594 +#: sql_help.c:2943 +#: sql_help.c:2989 +#: sql_help.c:3096 +msgid "name" +msgstr "ad" + +#: sql_help.c:27 +#: sql_help.c:30 +#: sql_help.c:33 +#: sql_help.c:322 +#: sql_help.c:325 +#: sql_help.c:2041 +msgid "type" +msgstr "tip" + +#: sql_help.c:28 +#: sql_help.c:45 +#: sql_help.c:60 +#: sql_help.c:92 +#: sql_help.c:317 +#: sql_help.c:368 +#: sql_help.c:401 +#: sql_help.c:413 +#: sql_help.c:430 +#: sql_help.c:469 +#: sql_help.c:515 +#: sql_help.c:556 +#: sql_help.c:578 +#: sql_help.c:608 +#: sql_help.c:689 +#: sql_help.c:749 +#: sql_help.c:792 +#: sql_help.c:813 +#: sql_help.c:827 +#: sql_help.c:839 +#: sql_help.c:851 +#: sql_help.c:878 +#: sql_help.c:926 +#: sql_help.c:967 +msgid "new_name" +msgstr "yeni_adı" + +#: sql_help.c:31 +#: sql_help.c:47 +#: sql_help.c:62 +#: sql_help.c:94 +#: sql_help.c:191 +#: sql_help.c:286 +#: sql_help.c:330 +#: sql_help.c:373 +#: sql_help.c:432 +#: sql_help.c:441 +#: sql_help.c:453 +#: sql_help.c:472 +#: sql_help.c:518 +#: sql_help.c:580 +#: sql_help.c:606 +#: sql_help.c:625 +#: sql_help.c:733 +#: sql_help.c:751 +#: sql_help.c:794 +#: sql_help.c:815 +#: sql_help.c:873 +#: sql_help.c:965 +msgid "new_owner" +msgstr "yeni_sahibi" + +#: sql_help.c:34 +#: sql_help.c:49 +#: sql_help.c:64 +#: sql_help.c:193 +#: sql_help.c:232 +#: sql_help.c:319 +#: sql_help.c:378 +#: sql_help.c:457 +#: sql_help.c:475 +#: sql_help.c:521 +#: sql_help.c:610 +#: sql_help.c:691 +#: sql_help.c:796 +#: sql_help.c:817 +#: sql_help.c:829 +#: sql_help.c:841 +#: sql_help.c:880 +#: sql_help.c:969 +msgid "new_schema" +msgstr "yeni_şema" + +#: sql_help.c:88 +#: sql_help.c:283 +#: sql_help.c:328 +#: sql_help.c:331 +#: sql_help.c:550 +#: sql_help.c:622 +#: sql_help.c:810 +#: sql_help.c:920 +#: sql_help.c:946 +#: sql_help.c:1150 +#: sql_help.c:1155 +#: sql_help.c:1333 +#: sql_help.c:1350 +#: sql_help.c:1353 +#: sql_help.c:1420 +#: sql_help.c:1550 +#: sql_help.c:1621 +#: sql_help.c:1796 +#: sql_help.c:1945 +#: sql_help.c:1967 +#: sql_help.c:2342 +msgid "option" +msgstr "seçenek" + +#: sql_help.c:89 +#: sql_help.c:551 +#: sql_help.c:921 +#: sql_help.c:1421 +#: sql_help.c:1551 +#: sql_help.c:1946 +msgid "where option can be:" +msgstr "seçenek şunlar olabilir:" + +#: sql_help.c:90 +#: sql_help.c:552 +#: sql_help.c:922 +#: sql_help.c:1282 +#: sql_help.c:1552 +#: sql_help.c:1947 +#, fuzzy +msgid "connlimit" +msgstr "sınırsız" + +#: sql_help.c:96 +#: sql_help.c:734 +#, fuzzy +msgid "new_tablespace" +msgstr "Tablespace" + +#: sql_help.c:98 +#: sql_help.c:101 +#: sql_help.c:103 +#: sql_help.c:382 +#: sql_help.c:384 +#: sql_help.c:385 +#: sql_help.c:559 +#: sql_help.c:563 +#: sql_help.c:566 +#: sql_help.c:928 +#: sql_help.c:931 +#: sql_help.c:933 +#: sql_help.c:1388 +#: sql_help.c:2611 +#: sql_help.c:2932 +msgid "configuration_parameter" +msgstr "yapılandırma_parametresi" + +#: sql_help.c:99 +#: sql_help.c:284 +#: sql_help.c:329 +#: sql_help.c:332 +#: sql_help.c:383 +#: sql_help.c:418 +#: sql_help.c:560 +#: sql_help.c:623 +#: sql_help.c:710 +#: sql_help.c:728 +#: sql_help.c:754 +#: sql_help.c:811 +#: sql_help.c:929 +#: sql_help.c:947 +#: sql_help.c:1334 +#: sql_help.c:1351 +#: sql_help.c:1354 +#: sql_help.c:1389 +#: sql_help.c:1390 +#: sql_help.c:1449 +#: sql_help.c:1622 +#: sql_help.c:1696 +#: sql_help.c:1704 +#: sql_help.c:1736 +#: sql_help.c:1758 +#: sql_help.c:1797 +#: sql_help.c:1968 +#: sql_help.c:2933 +#: sql_help.c:2934 +msgid "value" +msgstr "değer" + +#: sql_help.c:151 +msgid "target_role" +msgstr "hedef_rol" + +#: sql_help.c:152 +#: sql_help.c:1585 +#: sql_help.c:2440 +#: sql_help.c:2447 +#: sql_help.c:2459 +#: sql_help.c:2465 +#: sql_help.c:2694 +#: sql_help.c:2701 +#: sql_help.c:2713 +#: sql_help.c:2719 +msgid "schema_name" +msgstr "şema_adı" + +#: sql_help.c:153 +msgid "abbreviated_grant_or_revoke" msgstr "" -"REVOKE [ GRANT OPTION FOR ]\n" -" { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n" -" [,...] | ALL [ PRIVILEGES ] }\n" -" ON [ TABLE ] tablo adı [, ...]\n" -" FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { { SELECT | INSERT | UPDATE | REFERENCES } ( kolon [, ...] )\n" -" [,...] | ALL [ PRIVILEGES ] ( kolon [, ...] ) }\n" -" ON [ TABLE ] tablo adı [, ...]\n" -" FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { { USAGE | SELECT | UPDATE }\n" -" [,...] | ALL [ PRIVILEGES ] }\n" -" ON SEQUENCE sequence adı [, ...]\n" -" FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }\n" -" ON DATABASE veritabanı adı [, ...]\n" -" FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { USAGE | ALL [ PRIVILEGES ] }\n" -" ON FOREIGN DATA WRAPPER fdw adı [, ...]\n" -" FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { USAGE | ALL [ PRIVILEGES ] }\n" -" ON FOREIGN SERVER sunucu adu [, ...]\n" -" FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { EXECUTE | ALL [ PRIVILEGES ] }\n" -" ON FUNCTION fonksiyon adı ( [ [ argüman modu ] [ argüman adı ] argüman tipi [, ...] ] ) [, ...]\n" -" FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { USAGE | ALL [ PRIVILEGES ] }\n" -" ON LANGUAGE dil adı [, ...]\n" -" FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" -" ON SCHEMA şema adı [, ...]\n" -" FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ GRANT OPTION FOR ]\n" -" { CREATE | ALL [ PRIVILEGES ] }\n" -" ON TABLESPACE tablespace adı [, ...]\n" -" FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" -" [ CASCADE | RESTRICT ]\n" -"\n" -"REVOKE [ ADMIN OPTION FOR ]\n" -" role [, ...] FROM rol adı [, ...]\n" -" [ CASCADE | RESTRICT ]" -#: sql_help.h:506 -msgid "ROLLBACK [ WORK | TRANSACTION ]" -msgstr "ROLLBACK [ WORK | TRANSACTION ]" +#: sql_help.c:154 +msgid "where abbreviated_grant_or_revoke is one of:" +msgstr "" + +#: sql_help.c:155 +#: sql_help.c:156 +#: sql_help.c:157 +#: sql_help.c:158 +#: sql_help.c:159 +#: sql_help.c:160 +#: sql_help.c:1424 +#: sql_help.c:1425 +#: sql_help.c:1426 +#: sql_help.c:1427 +#: sql_help.c:1428 +#: sql_help.c:1555 +#: sql_help.c:1556 +#: sql_help.c:1557 +#: sql_help.c:1558 +#: sql_help.c:1559 +#: sql_help.c:1950 +#: sql_help.c:1951 +#: sql_help.c:1952 +#: sql_help.c:1953 +#: sql_help.c:1954 +#: sql_help.c:2441 +#: sql_help.c:2445 +#: sql_help.c:2448 +#: sql_help.c:2450 +#: sql_help.c:2452 +#: sql_help.c:2454 +#: sql_help.c:2460 +#: sql_help.c:2462 +#: sql_help.c:2464 +#: sql_help.c:2466 +#: sql_help.c:2468 +#: sql_help.c:2469 +#: sql_help.c:2470 +#: sql_help.c:2695 +#: sql_help.c:2699 +#: sql_help.c:2702 +#: sql_help.c:2704 +#: sql_help.c:2706 +#: sql_help.c:2708 +#: sql_help.c:2714 +#: sql_help.c:2716 +#: sql_help.c:2718 +#: sql_help.c:2720 +#: sql_help.c:2722 +#: sql_help.c:2723 +#: sql_help.c:2724 +#: sql_help.c:2953 +msgid "role_name" +msgstr "rol_adı" + +#: sql_help.c:182 +#: sql_help.c:701 +#: sql_help.c:703 +#: sql_help.c:961 +#: sql_help.c:1301 +#: sql_help.c:1305 +#: sql_help.c:1445 +#: sql_help.c:1708 +#: sql_help.c:1718 +#: sql_help.c:1740 +#: sql_help.c:2484 +#: sql_help.c:2838 +#: sql_help.c:2839 +#: sql_help.c:2843 +#: sql_help.c:2848 +#: sql_help.c:2907 +#: sql_help.c:2908 +#: sql_help.c:2913 +#: sql_help.c:2918 +#: sql_help.c:3041 +#: sql_help.c:3042 +#: sql_help.c:3046 +#: sql_help.c:3051 +#: sql_help.c:3122 +#: sql_help.c:3124 +#: sql_help.c:3155 +#: sql_help.c:3197 +#: sql_help.c:3198 +#: sql_help.c:3202 +#: sql_help.c:3207 +msgid "expression" +msgstr "ifade" + +#: sql_help.c:185 +#, fuzzy +msgid "domain_constraint" +msgstr "bütünlük kısıtlamaları okunuyor\n" + +#: sql_help.c:187 +#: sql_help.c:189 +#: sql_help.c:716 +#: sql_help.c:717 +#: sql_help.c:736 +#: sql_help.c:1067 +#: sql_help.c:1304 +#: sql_help.c:1707 +#: sql_help.c:1717 +msgid "constraint_name" +msgstr "%kısıtlama_adı" + +#: sql_help.c:229 +#: sql_help.c:231 +#: sql_help.c:233 +#: sql_help.c:235 +#: sql_help.c:1316 +#: sql_help.c:2090 +#, fuzzy +msgid "extension_name" +msgstr "fonksiyon_adı" + +#: sql_help.c:230 +#: sql_help.c:621 +msgid "new_version" +msgstr "yeni_sürüm" + +#: sql_help.c:234 +#: sql_help.c:236 +msgid "member_object" +msgstr "üye_nesnesi" + +#: sql_help.c:237 +msgid "where member_object is:" +msgstr "" + +#: sql_help.c:238 +#: sql_help.c:1060 +#: sql_help.c:2784 +msgid "agg_name" +msgstr "" + +#: sql_help.c:239 +#: sql_help.c:1061 +#: sql_help.c:2785 +#, fuzzy +msgid "agg_type" +msgstr "Hedef tipi" + +#: sql_help.c:240 +#: sql_help.c:1062 +#: sql_help.c:1223 +#: sql_help.c:1227 +#: sql_help.c:1229 +#: sql_help.c:2049 +#, fuzzy +msgid "source_type" +msgstr "Kaynak tipi" + +#: sql_help.c:241 +#: sql_help.c:1063 +#: sql_help.c:1224 +#: sql_help.c:1228 +#: sql_help.c:1230 +#: sql_help.c:2050 +#, fuzzy +msgid "target_type" +msgstr "Hedef tipi" + +#: sql_help.c:242 +#: sql_help.c:243 +#: sql_help.c:244 +#: sql_help.c:245 +#: sql_help.c:246 +#: sql_help.c:254 +#: sql_help.c:256 +#: sql_help.c:258 +#: sql_help.c:259 +#: sql_help.c:260 +#: sql_help.c:261 +#: sql_help.c:262 +#: sql_help.c:263 +#: sql_help.c:264 +#: sql_help.c:265 +#: sql_help.c:266 +#: sql_help.c:267 +#: sql_help.c:268 +#: sql_help.c:1064 +#: sql_help.c:1069 +#: sql_help.c:1070 +#: sql_help.c:1071 +#: sql_help.c:1072 +#: sql_help.c:1073 +#: sql_help.c:1074 +#: sql_help.c:1079 +#: sql_help.c:1084 +#: sql_help.c:1086 +#: sql_help.c:1088 +#: sql_help.c:1089 +#: sql_help.c:1092 +#: sql_help.c:1093 +#: sql_help.c:1094 +#: sql_help.c:1095 +#: sql_help.c:1096 +#: sql_help.c:1097 +#: sql_help.c:1098 +#: sql_help.c:1099 +#: sql_help.c:1100 +#: sql_help.c:1103 +#: sql_help.c:1104 +#: sql_help.c:2781 +#: sql_help.c:2786 +#: sql_help.c:2787 +#: sql_help.c:2788 +#: sql_help.c:2794 +#: sql_help.c:2795 +#: sql_help.c:2796 +#: sql_help.c:2797 +#: sql_help.c:2798 +#: sql_help.c:2799 +#: sql_help.c:2800 +msgid "object_name" +msgstr "nesne_adı" + +#: sql_help.c:247 +#: sql_help.c:503 +#: sql_help.c:1075 +#: sql_help.c:1225 +#: sql_help.c:1260 +#: sql_help.c:1480 +#: sql_help.c:1511 +#: sql_help.c:1855 +#: sql_help.c:2455 +#: sql_help.c:2709 +#: sql_help.c:2789 +#: sql_help.c:2864 +#: sql_help.c:2869 +#: sql_help.c:3067 +#: sql_help.c:3072 +#: sql_help.c:3223 +#: sql_help.c:3228 +msgid "function_name" +msgstr "fonksiyon_adı" + +#: sql_help.c:248 +#: sql_help.c:360 +#: sql_help.c:365 +#: sql_help.c:370 +#: sql_help.c:375 +#: sql_help.c:1076 +#: sql_help.c:1378 +#: sql_help.c:2116 +#: sql_help.c:2456 +#: sql_help.c:2710 +#: sql_help.c:2790 +msgid "argmode" +msgstr "" + +#: sql_help.c:249 +#: sql_help.c:361 +#: sql_help.c:366 +#: sql_help.c:371 +#: sql_help.c:376 +#: sql_help.c:1077 +#: sql_help.c:1379 +#: sql_help.c:2117 +#: sql_help.c:2791 +msgid "argname" +msgstr "bağımsız değişken adı" + +#: sql_help.c:250 +#: sql_help.c:362 +#: sql_help.c:367 +#: sql_help.c:372 +#: sql_help.c:377 +#: sql_help.c:1078 +#: sql_help.c:1380 +#: sql_help.c:2118 +#: sql_help.c:2792 +#, fuzzy +msgid "argtype" +msgstr "Hedef tipi" + +#: sql_help.c:251 +#: sql_help.c:496 +#: sql_help.c:1081 +#: sql_help.c:1504 +msgid "operator_name" +msgstr "operatör_adı" + +#: sql_help.c:252 +#: sql_help.c:451 +#: sql_help.c:455 +#: sql_help.c:1082 +#: sql_help.c:1481 +#: sql_help.c:2151 +msgid "left_type" +msgstr "sol_argüman_veri_tipi" + +#: sql_help.c:253 +#: sql_help.c:452 +#: sql_help.c:456 +#: sql_help.c:1083 +#: sql_help.c:1482 +#: sql_help.c:2152 +#, fuzzy +msgid "right_type" +msgstr "Sağ argüman veri tipi" + +#: sql_help.c:255 +#: sql_help.c:257 +#: sql_help.c:468 +#: sql_help.c:471 +#: sql_help.c:474 +#: sql_help.c:494 +#: sql_help.c:506 +#: sql_help.c:514 +#: sql_help.c:517 +#: sql_help.c:520 +#: sql_help.c:1085 +#: sql_help.c:1087 +#: sql_help.c:1501 +#: sql_help.c:1522 +#: sql_help.c:1723 +#: sql_help.c:2161 +#: sql_help.c:2170 +msgid "index_method" +msgstr "index_yöntemi" + +#: sql_help.c:281 +#: sql_help.c:1331 +#, fuzzy +msgid "handler_function" +msgstr "fonksiyon" + +#: sql_help.c:282 +#: sql_help.c:1332 +#, fuzzy +msgid "validator_function" +msgstr "valfunction" + +#: sql_help.c:312 +#: sql_help.c:363 +#: sql_help.c:684 +#: sql_help.c:871 +#: sql_help.c:1714 +#: sql_help.c:1715 +#: sql_help.c:1731 +#: sql_help.c:1732 +msgid "action" +msgstr "hareket" + +#: sql_help.c:314 +#: sql_help.c:321 +#: sql_help.c:323 +#: sql_help.c:324 +#: sql_help.c:326 +#: sql_help.c:327 +#: sql_help.c:604 +#: sql_help.c:686 +#: sql_help.c:693 +#: sql_help.c:697 +#: sql_help.c:698 +#: sql_help.c:702 +#: sql_help.c:704 +#: sql_help.c:705 +#: sql_help.c:706 +#: sql_help.c:708 +#: sql_help.c:711 +#: sql_help.c:713 +#: sql_help.c:960 +#: sql_help.c:963 +#: sql_help.c:978 +#: sql_help.c:1148 +#: sql_help.c:1152 +#: sql_help.c:1164 +#: sql_help.c:1165 +#: sql_help.c:1444 +#: sql_help.c:1607 +#: sql_help.c:1739 +#: sql_help.c:2442 +#: sql_help.c:2443 +#: sql_help.c:2483 +#: sql_help.c:2696 +#: sql_help.c:2697 +#: sql_help.c:3121 +#: sql_help.c:3123 +#: sql_help.c:3140 +#: sql_help.c:3143 +msgid "column" +msgstr "kolon" + +#: sql_help.c:315 +#: sql_help.c:687 +msgid "new_column" +msgstr "yeni_kolon" + +#: sql_help.c:320 +#: sql_help.c:379 +#: sql_help.c:692 +#: sql_help.c:884 +msgid "where action is one of:" +msgstr "hareket aşağıdakilerden birisi olabilir:" + +#: sql_help.c:380 +#: sql_help.c:1386 +msgid "execution_cost" +msgstr "execution_cost" + +#: sql_help.c:381 +#: sql_help.c:1387 +msgid "result_rows" +msgstr "" + +#: sql_help.c:396 +#: sql_help.c:398 +#: sql_help.c:400 +msgid "group_name" +msgstr "grup_adı" + +#: sql_help.c:397 +#: sql_help.c:399 +#: sql_help.c:944 +#: sql_help.c:1276 +#: sql_help.c:1586 +#: sql_help.c:1588 +#: sql_help.c:1769 +#: sql_help.c:1965 +#: sql_help.c:2300 +#: sql_help.c:2963 +msgid "user_name" +msgstr "kullanıcı_adı" + +#: sql_help.c:415 +#: sql_help.c:1768 +#: sql_help.c:2235 +#: sql_help.c:2467 +#: sql_help.c:2721 +msgid "tablespace_name" +msgstr "tablespace_adı" + +#: sql_help.c:417 +#: sql_help.c:420 +#: sql_help.c:727 +#: sql_help.c:729 +#: sql_help.c:1448 +#: sql_help.c:1695 +#: sql_help.c:1703 +#: sql_help.c:1735 +#: sql_help.c:1757 +msgid "storage_parameter" +msgstr "saklama_parametresi" + +#: sql_help.c:440 +#: sql_help.c:1080 +#: sql_help.c:2793 +#, fuzzy +msgid "large_object_oid" +msgstr "Large objectler" + +#: sql_help.c:495 +#: sql_help.c:507 +#: sql_help.c:1503 +msgid "strategy_number" +msgstr "" + +#: sql_help.c:497 +#: sql_help.c:498 +#: sql_help.c:501 +#: sql_help.c:502 +#: sql_help.c:508 +#: sql_help.c:509 +#: sql_help.c:511 +#: sql_help.c:512 +#: sql_help.c:1505 +#: sql_help.c:1506 +#: sql_help.c:1509 +#: sql_help.c:1510 +msgid "op_type" +msgstr "operatör_tipi" + +#: sql_help.c:499 +#: sql_help.c:1507 +#, fuzzy +msgid "sort_family_name" +msgstr "family_name" + +#: sql_help.c:500 +#: sql_help.c:510 +#: sql_help.c:1508 +msgid "support_number" +msgstr "" + +#: sql_help.c:504 +#: sql_help.c:1226 +#: sql_help.c:1512 +msgid "argument_type" +msgstr "bağımsız_değişken_tipi" + +#: sql_help.c:553 +#: sql_help.c:923 +#: sql_help.c:1422 +#: sql_help.c:1553 +#: sql_help.c:1948 +msgid "password" +msgstr "parola" + +#: sql_help.c:554 +#: sql_help.c:924 +#: sql_help.c:1423 +#: sql_help.c:1554 +#: sql_help.c:1949 +msgid "timestamp" +msgstr "timestamp" + +#: sql_help.c:558 +#: sql_help.c:562 +#: sql_help.c:565 +#: sql_help.c:568 +#: sql_help.c:2449 +#: sql_help.c:2703 +msgid "database_name" +msgstr "veritabanı_adı" + +#: sql_help.c:597 +#: sql_help.c:1601 +msgid "increment" +msgstr "" + +#: sql_help.c:598 +#: sql_help.c:1602 +msgid "minvalue" +msgstr "en düşük değer" + +#: sql_help.c:599 +#: sql_help.c:1603 +msgid "maxvalue" +msgstr "en yüksek değer" + +#: sql_help.c:600 +#: sql_help.c:1604 +#: sql_help.c:2851 +#: sql_help.c:2921 +#: sql_help.c:3054 +#: sql_help.c:3159 +#: sql_help.c:3210 +msgid "start" +msgstr "başlat" + +#: sql_help.c:601 +msgid "restart" +msgstr "yeniden başlat" + +#: sql_help.c:602 +#: sql_help.c:1605 +msgid "cache" +msgstr "önbellek" + +#: sql_help.c:620 +#: sql_help.c:624 +#: sql_help.c:945 +#: sql_help.c:1352 +#: sql_help.c:1617 +#: sql_help.c:1966 +#: sql_help.c:2219 +#: sql_help.c:2301 +#: sql_help.c:2453 +#: sql_help.c:2707 +msgid "server_name" +msgstr "sunucu_adı" + +#: sql_help.c:694 +#: sql_help.c:699 +#: sql_help.c:886 +#: sql_help.c:890 +#: sql_help.c:1299 +#: sql_help.c:1349 +#: sql_help.c:1500 +#: sql_help.c:1688 +#: sql_help.c:1895 +#: sql_help.c:2568 +msgid "data_type" +msgstr "veri_tipi" + +#: sql_help.c:695 +#: sql_help.c:700 +#: sql_help.c:887 +#: sql_help.c:891 +#: sql_help.c:1300 +#: sql_help.c:1446 +#: sql_help.c:1689 +#: sql_help.c:1896 +#, fuzzy +msgid "collation" +msgstr "Sıralama" + +#: sql_help.c:696 +#: sql_help.c:1690 +#: sql_help.c:1701 +msgid "column_constraint" +msgstr "kolon_kısıtlaması" + +#: sql_help.c:707 +msgid "integer" +msgstr "tamsayı" + +#: sql_help.c:709 +#: sql_help.c:712 +msgid "attribute_option" +msgstr "özellik_seçeneği" + +#: sql_help.c:714 +#: sql_help.c:1691 +#: sql_help.c:1702 +msgid "table_constraint" +msgstr "tablo_kısıtlaması" + +#: sql_help.c:715 +#, fuzzy +msgid "table_constraint_using_index" +msgstr "tablo_kısıtlaması" + +#: sql_help.c:718 +#: sql_help.c:719 +#: sql_help.c:720 +#: sql_help.c:721 +#: sql_help.c:1101 +msgid "trigger_name" +msgstr "tetikleyici_adı" + +#: sql_help.c:722 +#: sql_help.c:723 +#: sql_help.c:724 +#: sql_help.c:725 +msgid "rewrite_rule_name" +msgstr "rewrite_kural_adı" + +#: sql_help.c:726 +#: sql_help.c:737 +#: sql_help.c:1018 +msgid "index_name" +msgstr "index_adı" + +#: sql_help.c:730 +#: sql_help.c:731 +#: sql_help.c:1692 +#: sql_help.c:1694 +msgid "parent_table" +msgstr "üst_tablo" + +#: sql_help.c:732 +#: sql_help.c:1699 +msgid "type_name" +msgstr "tip_adı" + +#: sql_help.c:735 +#, fuzzy +msgid "and table_constraint_using_index is:" +msgstr "%s constraint" + +#: sql_help.c:753 +#: sql_help.c:756 +msgid "tablespace_option" +msgstr "tablespace_seçeneği" + +#: sql_help.c:777 +#: sql_help.c:780 +#: sql_help.c:786 +#: sql_help.c:790 +msgid "token_type" +msgstr "token_tipi" + +#: sql_help.c:778 +#: sql_help.c:781 +msgid "dictionary_name" +msgstr "sözlük_adı" + +#: sql_help.c:783 +#: sql_help.c:787 +msgid "old_dictionary" +msgstr "eski_sözlük" + +#: sql_help.c:784 +#: sql_help.c:788 +msgid "new_dictionary" +msgstr "yeni_sözlük" + +#: sql_help.c:875 +#: sql_help.c:885 +#: sql_help.c:888 +#: sql_help.c:889 +#: sql_help.c:1894 +#, fuzzy +msgid "attribute_name" +msgstr "Özellikler" + +#: sql_help.c:876 +#, fuzzy +msgid "new_attribute_name" +msgstr "Özellikler" + +#: sql_help.c:882 +#, fuzzy +msgid "new_enum_value" +msgstr "yeni_adı" + +#: sql_help.c:883 +msgid "existing_enum_value" +msgstr "" + +#: sql_help.c:992 +#: sql_help.c:2978 +#: sql_help.c:2979 +#: sql_help.c:3003 +msgid "transaction_mode" +msgstr "transaction_modu" + +#: sql_help.c:993 +#: sql_help.c:2980 +#: sql_help.c:3004 +msgid "where transaction_mode is one of:" +msgstr "transaction_modu aşağıdakilerden birisi olabilir:" + +#: sql_help.c:1017 +#: sql_help.c:1068 +#: sql_help.c:1091 +#: sql_help.c:1102 +#: sql_help.c:1147 +#: sql_help.c:1151 +#: sql_help.c:1347 +#: sql_help.c:1686 +#: sql_help.c:1698 +#: sql_help.c:1755 +#: sql_help.c:2439 +#: sql_help.c:2444 +#: sql_help.c:2693 +#: sql_help.c:2698 +#: sql_help.c:2782 +#: sql_help.c:2853 +#: sql_help.c:2855 +#: sql_help.c:2884 +#: sql_help.c:2923 +#: sql_help.c:3056 +#: sql_help.c:3058 +#: sql_help.c:3087 +#: sql_help.c:3212 +#: sql_help.c:3214 +#: sql_help.c:3243 +msgid "table_name" +msgstr "tablo_adı" + +#: sql_help.c:1065 +#, fuzzy +msgid "relation_name" +msgstr "dil_adı" + +#: sql_help.c:1066 +#: sql_help.c:1348 +#: sql_help.c:1383 +#: sql_help.c:1687 +#: sql_help.c:1700 +#: sql_help.c:1719 +#: sql_help.c:1721 +#: sql_help.c:1728 +#: sql_help.c:1756 +#: sql_help.c:1858 +#: sql_help.c:1978 +#: sql_help.c:2783 +#: sql_help.c:2879 +#: sql_help.c:3082 +#: sql_help.c:3238 +#, fuzzy +msgid "column_name" +msgstr "Rol adı" + +#: sql_help.c:1090 +#, fuzzy +msgid "rule_name" +msgstr "Rol adı" + +#: sql_help.c:1105 +msgid "text" +msgstr "metin" + +#: sql_help.c:1120 +#: sql_help.c:2577 +#: sql_help.c:2739 +#, fuzzy +msgid "transaction_id" +msgstr "transaction salt okunurdur" + +#: sql_help.c:1149 +#: sql_help.c:1154 +#: sql_help.c:2503 +#, fuzzy +msgid "filename" +msgstr "Rol adı" + +#: sql_help.c:1153 +#: sql_help.c:1760 +#: sql_help.c:1979 +#: sql_help.c:1997 +#: sql_help.c:2485 +msgid "query" +msgstr "sorgu" + +#: sql_help.c:1156 +#: sql_help.c:2345 +msgid "where option can be one of:" +msgstr "seçenek aşağıdakilerden birisi olabilir:" + +#: sql_help.c:1157 +#, fuzzy +msgid "format_name" +msgstr "Bilgi edinme\n" + +#: sql_help.c:1158 +#: sql_help.c:1161 +#: sql_help.c:2346 +#: sql_help.c:2347 +#: sql_help.c:2348 +#: sql_help.c:2349 +msgid "boolean" +msgstr "boolean" + +#: sql_help.c:1159 +msgid "delimiter_character" +msgstr "ayrıştırıcı_karaktersi" + +#: sql_help.c:1160 +msgid "null_string" +msgstr "null_dizi" + +#: sql_help.c:1162 +#, fuzzy +msgid "quote_character" +msgstr " %d karakterinde " + +#: sql_help.c:1163 +#, fuzzy +msgid "escape_character" +msgstr "escape satırı geçersiz" + +#: sql_help.c:1166 +#, fuzzy +msgid "encoding_name" +msgstr "Dil Kodlaması" + +#: sql_help.c:1192 +#, fuzzy +msgid "input_data_type" +msgstr "veri tipi" + +#: sql_help.c:1193 +#: sql_help.c:1201 +#, fuzzy +msgid "sfunc" +msgstr "sequence" + +#: sql_help.c:1194 +#: sql_help.c:1202 +#, fuzzy +msgid "state_data_type" +msgstr "veri tipi" + +#: sql_help.c:1195 +#: sql_help.c:1203 +#, fuzzy +msgid "ffunc" +msgstr "fonksiyon" + +#: sql_help.c:1196 +#: sql_help.c:1204 +msgid "initial_condition" +msgstr "ilk_durum" + +#: sql_help.c:1197 +#: sql_help.c:1205 +#, fuzzy +msgid "sort_operator" +msgstr "operatör" + +#: sql_help.c:1198 +msgid "or the old syntax" +msgstr "ya da eski sözdizimi" + +#: sql_help.c:1200 +#, fuzzy +msgid "base_type" +msgstr "Hedef tipi" + +#: sql_help.c:1244 +#, fuzzy +msgid "locale" +msgstr "yerel soket" + +#: sql_help.c:1245 +#: sql_help.c:1279 +msgid "lc_collate" +msgstr "" + +#: sql_help.c:1246 +#: sql_help.c:1280 +#, fuzzy +msgid "lc_ctype" +msgstr "Ctype" + +#: sql_help.c:1248 +#, fuzzy +msgid "existing_collation" +msgstr "Hedef" + +#: sql_help.c:1258 +#, fuzzy +msgid "source_encoding" +msgstr "Kaynak kodu" + +#: sql_help.c:1259 +#, fuzzy +msgid "dest_encoding" +msgstr "Dil Kodlaması" + +#: sql_help.c:1277 +#: sql_help.c:1795 +#, fuzzy +msgid "template" +msgstr "Şablon" + +#: sql_help.c:1278 +#, fuzzy +msgid "encoding" +msgstr "Dil Kodlaması" + +#: sql_help.c:1281 +#: sql_help.c:1450 +#: sql_help.c:1697 +#: sql_help.c:1705 +#: sql_help.c:1737 +#: sql_help.c:1759 +#, fuzzy +msgid "tablespace" +msgstr "Tablespace" + +#: sql_help.c:1303 +msgid "where constraint is:" +msgstr "kısıtlama şu şekilde olabilir:" + +#: sql_help.c:1317 +#, fuzzy +msgid "schema" +msgstr "Şema" + +#: sql_help.c:1318 +#, fuzzy +msgid "version" +msgstr "Sürüm" + +#: sql_help.c:1319 +#, fuzzy +msgid "old_version" +msgstr "yeni_sürüm" + +#: sql_help.c:1381 +#: sql_help.c:1709 +#, fuzzy +msgid "default_expr" +msgstr "öntanımlı %s" + +#: sql_help.c:1382 +msgid "rettype" +msgstr "dönüş tipi" + +#: sql_help.c:1384 +msgid "column_type" +msgstr "kolon_tipi" + +#: sql_help.c:1385 +#: sql_help.c:2031 +#: sql_help.c:2461 +#: sql_help.c:2715 +msgid "lang_name" +msgstr "dil_adı" + +#: sql_help.c:1391 +msgid "definition" +msgstr "tanımı" + +#: sql_help.c:1392 +msgid "obj_file" +msgstr "obj_file" + +#: sql_help.c:1393 +#, fuzzy +msgid "link_symbol" +msgstr "geçersiz sembol" + +#: sql_help.c:1394 +#, fuzzy +msgid "attribute" +msgstr "Özellikler" + +#: sql_help.c:1429 +#: sql_help.c:1560 +#: sql_help.c:1955 +msgid "uid" +msgstr "kullanıcı numarası" + +#: sql_help.c:1443 +msgid "method" +msgstr "yöntem" + +#: sql_help.c:1447 +#: sql_help.c:1741 +msgid "opclass" +msgstr "opclass" + +#: sql_help.c:1451 +#: sql_help.c:1727 +#, fuzzy +msgid "predicate" +msgstr ", belirli (%s)" + +#: sql_help.c:1463 +msgid "call_handler" +msgstr "call_handler" + +#: sql_help.c:1464 +msgid "inline_handler" +msgstr "inline_handler" + +#: sql_help.c:1465 +msgid "valfunction" +msgstr "valfunction" + +#: sql_help.c:1483 +msgid "com_op" +msgstr "com_op" + +#: sql_help.c:1484 +msgid "neg_op" +msgstr "neg_op" + +#: sql_help.c:1485 +msgid "res_proc" +msgstr "res_proc" + +#: sql_help.c:1486 +msgid "join_proc" +msgstr "join_proc" + +#: sql_help.c:1502 +msgid "family_name" +msgstr "family_name" + +#: sql_help.c:1513 +msgid "storage_type" +msgstr "saklama_tipi" + +#: sql_help.c:1571 +#: sql_help.c:1851 +#, fuzzy +msgid "event" +msgstr "Elemanlar" + +#: sql_help.c:1573 +#: sql_help.c:1854 +#: sql_help.c:2013 +#: sql_help.c:2842 +#: sql_help.c:2844 +#: sql_help.c:2912 +#: sql_help.c:2914 +#: sql_help.c:3045 +#: sql_help.c:3047 +#: sql_help.c:3126 +#: sql_help.c:3201 +#: sql_help.c:3203 +#, fuzzy +msgid "condition" +msgstr "%d bağlantı" + +#: sql_help.c:1574 +#: sql_help.c:1575 +#: sql_help.c:1576 +msgid "command" +msgstr "komıt" + +#: sql_help.c:1587 +#: sql_help.c:1589 +msgid "schema_element" +msgstr "şema_elemanı" + +#: sql_help.c:1618 +msgid "server_type" +msgstr "sunucu_tipi" + +#: sql_help.c:1619 +msgid "server_version" +msgstr "sunucu_sürümü" + +#: sql_help.c:1620 +#: sql_help.c:2451 +#: sql_help.c:2705 +msgid "fdw_name" +msgstr "fdw_adı" + +#: sql_help.c:1693 +#, fuzzy +msgid "like_option" +msgstr "İnit seçenekleri" + +#: sql_help.c:1706 +msgid "where column_constraint is:" +msgstr "kolon_kısıtlaması aşağıdakilerden birisi olabilir:" + +#: sql_help.c:1710 +#: sql_help.c:1711 +#: sql_help.c:1720 +#: sql_help.c:1722 +#: sql_help.c:1726 +#, fuzzy +msgid "index_parameters" +msgstr "%s parametresi" + +#: sql_help.c:1712 +#: sql_help.c:1729 +msgid "reftable" +msgstr "referans tablosu" + +#: sql_help.c:1713 +#: sql_help.c:1730 +msgid "refcolumn" +msgstr "referans kolonu" + +#: sql_help.c:1716 +#, fuzzy +msgid "and table_constraint is:" +msgstr "%s constraint" + +#: sql_help.c:1724 +msgid "exclude_element" +msgstr "exclude_element" + +#: sql_help.c:1725 +#: sql_help.c:2849 +#: sql_help.c:2919 +#: sql_help.c:3052 +#: sql_help.c:3157 +#: sql_help.c:3208 +msgid "operator" +msgstr "operatör" + +#: sql_help.c:1733 +msgid "and like_option is:" +msgstr "like_seçeneği şu olabilir:" + +#: sql_help.c:1734 +msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" +msgstr "UNIQUE, PRIMARY KEY ve EXCLUDE kısıtlamalarında index_parametreleri şunlar olabilir:" + +#: sql_help.c:1738 +msgid "exclude_element in an EXCLUDE constraint is:" +msgstr "" + +#: sql_help.c:1770 +msgid "directory" +msgstr "dizin" + +#: sql_help.c:1782 +msgid "parser_name" +msgstr "ayrıştırıcı_adı" + +#: sql_help.c:1783 +msgid "source_config" +msgstr "source_config" + +#: sql_help.c:1812 +msgid "start_function" +msgstr "başlangıç_fonksiyonu" + +#: sql_help.c:1813 +#, fuzzy +msgid "gettoken_function" +msgstr "function kaldır" + +#: sql_help.c:1814 +msgid "end_function" +msgstr "end_fonksiyonu" + +#: sql_help.c:1815 +msgid "lextypes_function" +msgstr "lextypes_fonksiyonu" + +#: sql_help.c:1816 +#, fuzzy +msgid "headline_function" +msgstr "fonksiyon" + +#: sql_help.c:1828 +msgid "init_function" +msgstr "ilkendirme_fonksiyonu" + +#: sql_help.c:1829 +msgid "lexize_function" +msgstr "lexize_fonksiyonu" + +#: sql_help.c:1853 +msgid "referenced_table_name" +msgstr "" + +#: sql_help.c:1856 +#, fuzzy +msgid "arguments" +msgstr "çok fazla argüman" + +#: sql_help.c:1857 +#, fuzzy +msgid "where event can be one of:" +msgstr "seçenek aşağıdakilerden birisi olabilir:" + +#: sql_help.c:1898 +#: sql_help.c:2801 +msgid "label" +msgstr "etiket" + +#: sql_help.c:1900 +msgid "input_function" +msgstr "giriş_fonksiyonu" + +#: sql_help.c:1901 +msgid "output_function" +msgstr "çıktı_fonksiyonu" + +#: sql_help.c:1902 +#, fuzzy +msgid "receive_function" +msgstr "function kaldır" + +#: sql_help.c:1903 +msgid "send_function" +msgstr "gönderme_fonksiyonu" + +#: sql_help.c:1904 +msgid "type_modifier_input_function" +msgstr "type_modifier_input_function" + +#: sql_help.c:1905 +msgid "type_modifier_output_function" +msgstr "type_modifier_output_function" + +#: sql_help.c:1906 +msgid "analyze_function" +msgstr "analiz_fonksiyonu" + +#: sql_help.c:1907 +msgid "internallength" +msgstr "internallength" + +#: sql_help.c:1908 +#, fuzzy +msgid "alignment" +msgstr "atama" + +#: sql_help.c:1909 +msgid "storage" +msgstr "saklama" + +#: sql_help.c:1910 +msgid "like_type" +msgstr "like_type" + +#: sql_help.c:1911 +msgid "category" +msgstr "category" + +#: sql_help.c:1912 +msgid "preferred" +msgstr "tercih edilen" + +#: sql_help.c:1913 +msgid "default" +msgstr "öntanımlı" + +#: sql_help.c:1914 +msgid "element" +msgstr "öğe" + +#: sql_help.c:1915 +msgid "delimiter" +msgstr "sınırlayıcı" + +#: sql_help.c:1916 +#, fuzzy +msgid "collatable" +msgstr "tablo" + +#: sql_help.c:2009 +#: sql_help.c:2481 +#: sql_help.c:2837 +#: sql_help.c:2906 +#: sql_help.c:3040 +#: sql_help.c:3118 +#: sql_help.c:3196 +msgid "with_query" +msgstr "" + +#: sql_help.c:2011 +#: sql_help.c:2856 +#: sql_help.c:2859 +#: sql_help.c:2862 +#: sql_help.c:2866 +#: sql_help.c:3059 +#: sql_help.c:3062 +#: sql_help.c:3065 +#: sql_help.c:3069 +#: sql_help.c:3120 +#: sql_help.c:3215 +#: sql_help.c:3218 +#: sql_help.c:3221 +#: sql_help.c:3225 +msgid "alias" +msgstr "takma ad" + +#: sql_help.c:2012 +msgid "using_list" +msgstr "using_list" + +#: sql_help.c:2014 +#: sql_help.c:2375 +#: sql_help.c:2544 +#: sql_help.c:3127 +msgid "cursor_name" +msgstr "imleç_adı" + +#: sql_help.c:2015 +#: sql_help.c:2486 +#: sql_help.c:3128 +#, fuzzy +msgid "output_expression" +msgstr "birden fazla varsayılan ifade" + +#: sql_help.c:2016 +#: sql_help.c:2487 +#: sql_help.c:2840 +#: sql_help.c:2909 +#: sql_help.c:3043 +#: sql_help.c:3129 +#: sql_help.c:3199 +msgid "output_name" +msgstr "output_name" + +#: sql_help.c:2032 +msgid "code" +msgstr "kod" + +#: sql_help.c:2325 +msgid "parameter" +msgstr "değişken" + +#: sql_help.c:2343 +#: sql_help.c:2344 +#: sql_help.c:2569 +msgid "statement" +msgstr "ifade" + +#: sql_help.c:2374 +#: sql_help.c:2543 +#, fuzzy +msgid "direction" +msgstr "%d bağlantı" + +#: sql_help.c:2376 +#: sql_help.c:2545 +msgid "where direction can be empty or one of:" +msgstr "" + +#: sql_help.c:2377 +#: sql_help.c:2378 +#: sql_help.c:2379 +#: sql_help.c:2380 +#: sql_help.c:2381 +#: sql_help.c:2546 +#: sql_help.c:2547 +#: sql_help.c:2548 +#: sql_help.c:2549 +#: sql_help.c:2550 +#: sql_help.c:2850 +#: sql_help.c:2852 +#: sql_help.c:2920 +#: sql_help.c:2922 +#: sql_help.c:3053 +#: sql_help.c:3055 +#: sql_help.c:3158 +#: sql_help.c:3160 +#: sql_help.c:3209 +#: sql_help.c:3211 +msgid "count" +msgstr "toplam sayı" + +#: sql_help.c:2446 +#: sql_help.c:2700 +msgid "sequence_name" +msgstr "sequence_adı" + +#: sql_help.c:2457 +#: sql_help.c:2711 +msgid "arg_name" +msgstr "" + +#: sql_help.c:2458 +#: sql_help.c:2712 +msgid "arg_type" +msgstr "bağımsız_değişken_tipi" + +#: sql_help.c:2463 +#: sql_help.c:2717 +msgid "loid" +msgstr "" + +#: sql_help.c:2495 +#: sql_help.c:2558 +#: sql_help.c:3104 +msgid "channel" +msgstr "kanal" + +#: sql_help.c:2517 +msgid "lockmode" +msgstr "" + +#: sql_help.c:2518 +msgid "where lockmode is one of:" +msgstr "" + +#: sql_help.c:2559 +msgid "payload" +msgstr "" + +#: sql_help.c:2585 +msgid "old_role" +msgstr "eski_rol" + +#: sql_help.c:2586 +msgid "new_role" +msgstr "yeni_rol" + +#: sql_help.c:2602 +#: sql_help.c:2747 +#: sql_help.c:2755 +msgid "savepoint_name" +msgstr "savepoint_adı" + +#: sql_help.c:2780 +msgid "provider" +msgstr "" + +#: sql_help.c:2841 +#: sql_help.c:2872 +#: sql_help.c:2874 +#: sql_help.c:2911 +#: sql_help.c:3044 +#: sql_help.c:3075 +#: sql_help.c:3077 +#: sql_help.c:3200 +#: sql_help.c:3231 +#: sql_help.c:3233 +msgid "from_item" +msgstr "from_item" + +#: sql_help.c:2845 +#: sql_help.c:2915 +#: sql_help.c:3048 +#: sql_help.c:3204 +msgid "window_name" +msgstr "pencere_adı" + +#: sql_help.c:2846 +#: sql_help.c:2916 +#: sql_help.c:3049 +#: sql_help.c:3205 +msgid "window_definition" +msgstr "window_tanımı" + +#: sql_help.c:2847 +#: sql_help.c:2858 +#: sql_help.c:2880 +#: sql_help.c:2917 +#: sql_help.c:3050 +#: sql_help.c:3061 +#: sql_help.c:3083 +#: sql_help.c:3206 +#: sql_help.c:3217 +#: sql_help.c:3239 +msgid "select" +msgstr "" + +#: sql_help.c:2854 +#: sql_help.c:3057 +#: sql_help.c:3213 +msgid "where from_item can be one of:" +msgstr "" + +#: sql_help.c:2857 +#: sql_help.c:2860 +#: sql_help.c:2863 +#: sql_help.c:2867 +#: sql_help.c:3060 +#: sql_help.c:3063 +#: sql_help.c:3066 +#: sql_help.c:3070 +#: sql_help.c:3216 +#: sql_help.c:3219 +#: sql_help.c:3222 +#: sql_help.c:3226 +msgid "column_alias" +msgstr "kolon_takma_adı" + +#: sql_help.c:2861 +#: sql_help.c:2878 +#: sql_help.c:3064 +#: sql_help.c:3081 +#: sql_help.c:3220 +#: sql_help.c:3237 +msgid "with_query_name" +msgstr "" + +#: sql_help.c:2865 +#: sql_help.c:2870 +#: sql_help.c:3068 +#: sql_help.c:3073 +#: sql_help.c:3224 +#: sql_help.c:3229 +msgid "argument" +msgstr "bağımsız değişken" + +#: sql_help.c:2868 +#: sql_help.c:2871 +#: sql_help.c:3071 +#: sql_help.c:3074 +#: sql_help.c:3227 +#: sql_help.c:3230 +msgid "column_definition" +msgstr "kolon_tanımı" + +#: sql_help.c:2873 +#: sql_help.c:3076 +#: sql_help.c:3232 +msgid "join_type" +msgstr "join_tipi" + +#: sql_help.c:2875 +#: sql_help.c:3078 +#: sql_help.c:3234 +msgid "join_condition" +msgstr "join_şartı" + +#: sql_help.c:2876 +#: sql_help.c:3079 +#: sql_help.c:3235 +msgid "join_column" +msgstr "" + +#: sql_help.c:2877 +#: sql_help.c:3080 +#: sql_help.c:3236 +msgid "and with_query is:" +msgstr "" + +#: sql_help.c:2881 +#: sql_help.c:3084 +#: sql_help.c:3240 +msgid "insert" +msgstr "" + +#: sql_help.c:2882 +#: sql_help.c:3085 +#: sql_help.c:3241 +msgid "update" +msgstr "" + +#: sql_help.c:2883 +#: sql_help.c:3086 +#: sql_help.c:3242 +msgid "delete" +msgstr "" + +#: sql_help.c:2910 +msgid "new_table" +msgstr "yeni_tablo" + +#: sql_help.c:2935 +msgid "timezone" +msgstr "" + +#: sql_help.c:3125 +msgid "from_list" +msgstr "" + +#: sql_help.c:3156 +msgid "sort_expression" +msgstr "" + +#: ../../port/exec.c:125 +#: ../../port/exec.c:239 +#: ../../port/exec.c:282 +#, c-format +msgid "could not identify current directory: %s" +msgstr "geçerli dizin tespit edilemedi: %s" + +#: ../../port/exec.c:144 +#, c-format +msgid "invalid binary \"%s\"" +msgstr "geçersiz ikili (binary) \"%s\"" + +#: ../../port/exec.c:193 +#, c-format +msgid "could not read binary \"%s\"" +msgstr "\"%s\" ikili (binary) dosyası okunamadı" + +#: ../../port/exec.c:200 +#, c-format +msgid "could not find a \"%s\" to execute" +msgstr "\"%s\" çalıştırmak için bulunamadı" + +#: ../../port/exec.c:255 +#: ../../port/exec.c:291 +#, c-format +msgid "could not change directory to \"%s\"" +msgstr "çalışma dizini \"%s\" olarak değiştirilemedi" + +#: ../../port/exec.c:270 +#, c-format +msgid "could not read symbolic link \"%s\"" +msgstr "symbolic link \"%s\" okuma hatası" + +#: ../../port/exec.c:517 +#, c-format +msgid "child process exited with exit code %d" +msgstr "alt süreç %d çıkış koduyla sonuçlandırılmıştır" + +#: ../../port/exec.c:521 +#, c-format +msgid "child process was terminated by exception 0x%X" +msgstr "alt süreç 0x%X exception tarafından sonlandırılmıştır" + +#: ../../port/exec.c:530 +#, c-format +msgid "child process was terminated by signal %s" +msgstr "alt süreç %s sinyali tarafından sonlandırılmıştır" + +#: ../../port/exec.c:533 +#, c-format +msgid "child process was terminated by signal %d" +msgstr "alt süreç %d sinyali tarafından sonlandırılmıştır" + +#: ../../port/exec.c:537 +#, c-format +msgid "child process exited with unrecognized status %d" +msgstr "alt süreç %d bilinmeyen durumu ile sonlandırılmıştır" + +#~ msgid "\\%s: error\n" +#~ msgstr "\\%s: hata\n" + +#~ msgid " on host \"%s\"" +#~ msgstr " \"%s\" sistemi" + +#~ msgid " at port \"%s\"" +#~ msgstr " \"%s\" portunda" + +#~ msgid " as user \"%s\"" +#~ msgstr " \"%s\" kullanıcısı" + +#~ msgid "out of memory" +#~ msgstr "yetersiz bellek" + +#~ msgid "aggregate" +#~ msgstr "aggregate" + +#~ msgid "data type" +#~ msgstr "veri tipi" + +#~ msgid "define a new constraint trigger" +#~ msgstr "yeni constraint trigger tanımla" + +#~ msgid "ABORT [ WORK | TRANSACTION ]" +#~ msgstr "ABORT [ WORK | TRANSACTION ]" + +#~ msgid "" +#~ "ALTER AGGREGATE name ( type [ , ... ] ) RENAME TO new_name\n" +#~ "ALTER AGGREGATE name ( type [ , ... ] ) OWNER TO new_owner\n" +#~ "ALTER AGGREGATE name ( type [ , ... ] ) SET SCHEMA new_schema" +#~ msgstr "" +#~ "ALTER AGGREGATE name ( type [ , ... ] ) RENAME TO new_name\n" +#~ "ALTER AGGREGATE name ( type [ , ... ] ) OWNER TO new_owner\n" +#~ "ALTER AGGREGATE name ( type [ , ... ] ) SET SCHEMA new_schema" + +#~ msgid "" +#~ "ALTER CONVERSION name RENAME TO newname\n" +#~ "ALTER CONVERSION name OWNER TO newowner" +#~ msgstr "" +#~ "ALTER CONVERSION dönüşüm_adı RENAME TO yeni_ad\n" +#~ "ALTER CONVERSION dönüşüm_adı OWNER TO yeni_sahip" + +#~ msgid "" +#~ "ALTER DATABASE name [ [ WITH ] option [ ... ] ]\n" +#~ "\n" +#~ "where option can be:\n" +#~ "\n" +#~ " CONNECTION LIMIT connlimit\n" +#~ "\n" +#~ "ALTER DATABASE name RENAME TO newname\n" +#~ "\n" +#~ "ALTER DATABASE name OWNER TO new_owner\n" +#~ "\n" +#~ "ALTER DATABASE name SET TABLESPACE new_tablespace\n" +#~ "\n" +#~ "ALTER DATABASE name SET configuration_parameter { TO | = } { value | " +#~ "DEFAULT }\n" +#~ "ALTER DATABASE name SET configuration_parameter FROM CURRENT\n" +#~ "ALTER DATABASE name RESET configuration_parameter\n" +#~ "ALTER DATABASE name RESET ALL" +#~ msgstr "" +#~ "ALTER DATABASE veritabanı_adı [ [ WITH ] seçenek [ ... ] ]\n" +#~ "\n" +#~ "seçenek aşağıdakilerden birisi olabilir:\n" +#~ "\n" +#~ " CONNECTION LIMIT bağlantı limiti\n" +#~ "\n" +#~ "ALTER DATABASE veritabanı_adı RENAME TO yeni_adı\n" +#~ "\n" +#~ "ALTER DATABASE veritabanı_adı OWNER TO yeni_sahibi\n" +#~ "\n" +#~ "ALTER DATABASE veritabanı_adı SET yapılandırma_parametresi { TO | = } " +#~ "{ değer | DEFAULT }\n" +#~ "ALTER DATABASE veritabanı_adı SET yapılandırma_parametresi FROM CURRENT\n" +#~ "ALTER DATABASE veritabanı_adı RESET yapılandırma_parametresi\n" +#~ "ALTER DATABASE veritabanı_adı RESET ALL" + +#~ msgid "" +#~ "ALTER DOMAIN name\n" +#~ " { SET DEFAULT expression | DROP DEFAULT }\n" +#~ "ALTER DOMAIN name\n" +#~ " { SET | DROP } NOT NULL\n" +#~ "ALTER DOMAIN name\n" +#~ " ADD domain_constraint\n" +#~ "ALTER DOMAIN name\n" +#~ " DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n" +#~ "ALTER DOMAIN name\n" +#~ " OWNER TO new_owner \n" +#~ "ALTER DOMAIN name\n" +#~ " SET SCHEMA new_schema" +#~ msgstr "" +#~ "ALTER DOMAIN name\n" +#~ " { SET DEFAULT expression | DROP DEFAULT }\n" +#~ "ALTER DOMAIN name\n" +#~ " { SET | DROP } NOT NULL\n" +#~ "ALTER DOMAIN name\n" +#~ " ADD domain_constraint\n" +#~ "ALTER DOMAIN name\n" +#~ " DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n" +#~ "ALTER DOMAIN name\n" +#~ " OWNER TO new_owner \n" +#~ "ALTER DOMAIN name\n" +#~ " SET SCHEMA new_schema" + +#~ msgid "" +#~ "ALTER FOREIGN DATA WRAPPER name\n" +#~ " [ VALIDATOR valfunction | NO VALIDATOR ]\n" +#~ " [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ]) ]\n" +#~ "ALTER FOREIGN DATA WRAPPER name OWNER TO new_owner" +#~ msgstr "" +#~ "ALTER FOREIGN DATA WRAPPER ad\n" +#~ " [ VALIDATOR valfunction | NO VALIDATOR ]\n" +#~ " [ SEÇENEKLER ( [ ADD | SET | DROP ] seçenek ['değer'] [, ... ]) ]\n" +#~ "ALTER FOREIGN DATA WRAPPER ad OWNER TO yeni sahibi" + +#~ msgid "" +#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" +#~ " action [ ... ] [ RESTRICT ]\n" +#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" +#~ " RENAME TO new_name\n" +#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" +#~ " OWNER TO new_owner\n" +#~ "ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )\n" +#~ " SET SCHEMA new_schema\n" +#~ "\n" +#~ "where action is one of:\n" +#~ "\n" +#~ " CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" +#~ " IMMUTABLE | STABLE | VOLATILE\n" +#~ " [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" +#~ " COST execution_cost\n" +#~ " ROWS result_rows\n" +#~ " SET configuration_parameter { TO | = } { value | DEFAULT }\n" +#~ " SET configuration_parameter FROM CURRENT\n" +#~ " RESET configuration_parameter\n" +#~ " RESET ALL" +#~ msgstr "" +#~ "ALTER FUNCTION fonksiyon_adı ( [ [ argmode ] [ argname ] argtype " +#~ "[, ...] ] )\n" +#~ " işlem [ ... ] [ RESTRICT ]\n" +#~ "ALTER FUNCTION fonksiyon_adı ( [ [ argmode ] [ argname ] argtype " +#~ "[, ...] ] )\n" +#~ " RENAME TO yeni_adı\n" +#~ "ALTER FUNCTION fonksiyon_adı ( [ [ argmode ] [ argname ] argtype " +#~ "[, ...] ] )\n" +#~ " OWNER TO yeni_sahibi\n" +#~ "ALTER FUNCTION fonksiyon_adı ( [ [ argmode ] [ argname ] argtype " +#~ "[, ...] ] )\n" +#~ " SET SCHEMA yeni_şema\n" +#~ "\n" +#~ "işlem aşağıdakilerden birisi olabilir:\n" +#~ "\n" +#~ " CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" +#~ " IMMUTABLE | STABLE | VOLATILE\n" +#~ " [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" +#~ " COST çalıştırma_maliyeti(execution cost)\n" +#~ " ROWS result_rows\n" +#~ " SET yapılandırma_parametresi { TO | = } { value | DEFAULT }\n" +#~ " SET yapılandırma_parametresi FROM CURRENT\n" +#~ " RESET yapılandırma_parametresi\n" +#~ " RESET ALL" + +#~ msgid "" +#~ "ALTER GROUP groupname ADD USER username [, ... ]\n" +#~ "ALTER GROUP groupname DROP USER username [, ... ]\n" +#~ "\n" +#~ "ALTER GROUP groupname RENAME TO newname" +#~ msgstr "" +#~ "ALTER GROUP grup_adı ADD USER kullanıcı_adı [, ... ]\n" +#~ "ALTER GROUP grup_adı DROP USER kullanıcı_adı [, ... ]\n" +#~ "\n" +#~ "ALTER GROUP grup_adı RENAME TO yeni_ad" + +#~ msgid "" +#~ "ALTER INDEX name RENAME TO new_name\n" +#~ "ALTER INDEX name SET TABLESPACE tablespace_name\n" +#~ "ALTER INDEX name SET ( storage_parameter = value [, ... ] )\n" +#~ "ALTER INDEX name RESET ( storage_parameter [, ... ] )" +#~ msgstr "" +#~ "ALTER INDEX name RENAME TO new_name\n" +#~ "ALTER INDEX name SET TABLESPACE tablespace_name\n" +#~ "ALTER INDEX name SET ( storage_parameter = value [, ... ] )\n" +#~ "ALTER INDEX name RESET ( storage_parameter [, ... ] )" + +#~ msgid "" +#~ "ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO newname\n" +#~ "ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO new_owner" +#~ msgstr "" +#~ "ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO newname\n" +#~ "ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO new_owner" + +#~ msgid "" +#~ "ALTER OPERATOR name ( { lefttype | NONE } , { righttype | NONE } ) OWNER " +#~ "TO newowner" +#~ msgstr "" +#~ "ALTER OPERATOR name ( { lefttype | NONE } , { righttype | NONE } ) OWNER " +#~ "TO yeni_sahip" + +#~ msgid "" +#~ "ALTER OPERATOR CLASS name USING index_method RENAME TO newname\n" +#~ "ALTER OPERATOR CLASS name USING index_method OWNER TO newowner" +#~ msgstr "" +#~ "ALTER OPERATOR CLASS ad USING index_method RENAME TO yeni_ad\n" +#~ "ALTER OPERATOR CLASS ad USING index_method OWNER TO yeni_sahip" + +#~ msgid "" +#~ "ALTER OPERATOR FAMILY name USING index_method ADD\n" +#~ " { OPERATOR strategy_number operator_name ( op_type, op_type )\n" +#~ " | FUNCTION support_number [ ( op_type [ , op_type ] ) ] funcname " +#~ "( argument_type [, ...] )\n" +#~ " } [, ... ]\n" +#~ "ALTER OPERATOR FAMILY name USING index_method DROP\n" +#~ " { OPERATOR strategy_number ( op_type [ , op_type ] )\n" +#~ " | FUNCTION support_number ( op_type [ , op_type ] )\n" +#~ " } [, ... ]\n" +#~ "ALTER OPERATOR FAMILY name USING index_method RENAME TO newname\n" +#~ "ALTER OPERATOR FAMILY name USING index_method OWNER TO newowner" +#~ msgstr "" +#~ "ALTER OPERATOR FAMILY adı USING index_methodu ADD\n" +#~ " { OPERATOR strategy_number operator_name ( op_type, op_type )\n" +#~ " | FUNCTION support_number [ ( op_type [ , op_type ] ) ] funcname " +#~ "( argument_type [, ...] )\n" +#~ " } [, ... ]\n" +#~ "ALTER OPERATOR FAMILY ad USING index_methodu DROP\n" +#~ " { OPERATOR strategy_number ( op_type [ , op_type ] )\n" +#~ " | FUNCTION support_number ( op_type [ , op_type ] )\n" +#~ " } [, ... ]\n" +#~ "ALTER OPERATOR FAMILY ad USING index_methodu RENAME TO yeni ad\n" +#~ "ALTER OPERATOR FAMILY ad USING index_methodu OWNER TO yeni sahibi" + +#~ msgid "" +#~ "ALTER ROLE name [ [ WITH ] option [ ... ] ]\n" +#~ "\n" +#~ "where option can be:\n" +#~ " \n" +#~ " SUPERUSER | NOSUPERUSER\n" +#~ " | CREATEDB | NOCREATEDB\n" +#~ " | CREATEROLE | NOCREATEROLE\n" +#~ " | CREATEUSER | NOCREATEUSER\n" +#~ " | INHERIT | NOINHERIT\n" +#~ " | LOGIN | NOLOGIN\n" +#~ " | CONNECTION LIMIT connlimit\n" +#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" +#~ " | VALID UNTIL 'timestamp' \n" +#~ "\n" +#~ "ALTER ROLE name RENAME TO newname\n" +#~ "\n" +#~ "ALTER ROLE name SET configuration_parameter { TO | = } { value | " +#~ "DEFAULT }\n" +#~ "ALTER ROLE name SET configuration_parameter FROM CURRENT\n" +#~ "ALTER ROLE name RESET configuration_parameter\n" +#~ "ALTER ROLE name RESET ALL" +#~ msgstr "" +#~ "ALTER ROLE rol_adı [ [ WITH ] seçenek [ ... ] ]\n" +#~ "\n" +#~ "seçenek aşağıdakilerden birisi olabilir:\n" +#~ " \n" +#~ " SUPERUSER | NOSUPERUSER\n" +#~ " | CREATEDB | NOCREATEDB\n" +#~ " | CREATEROLE | NOCREATEROLE\n" +#~ " | CREATEUSER | NOCREATEUSER\n" +#~ " | INHERIT | NOINHERIT\n" +#~ " | LOGIN | NOLOGIN\n" +#~ " | CONNECTION LIMIT bağlantı_sayısı_sınırı\n" +#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" +#~ " | VALID UNTIL 'timestamp' \n" +#~ "\n" +#~ "ALTER ROLE rol_adı RENAME TO yeni_adı\n" +#~ "\n" +#~ "ALTER ROLE rol_adı SET yapılandırma_parametresi { TO | = } { value | " +#~ "DEFAULT }\n" +#~ "ALTER ROLE rol_adı SET yapılandırma_parametresi FROM CURRENT\n" +#~ "ALTER ROLE rol_adı RESET yapılandırma_parametresi\n" +#~ "ALTER ROLE rol_adı RESET ALL" + +#~ msgid "" +#~ "ALTER SCHEMA name RENAME TO newname\n" +#~ "ALTER SCHEMA name OWNER TO newowner" +#~ msgstr "" +#~ "ALTER SCHEMA şema_adı RENAME TO yeni_ad\n" +#~ "ALTER SCHEMA şema_adı OWNER TO yeni_sahip" + +#~ msgid "" +#~ "ALTER SEQUENCE name [ INCREMENT [ BY ] increment ]\n" +#~ " [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO " +#~ "MAXVALUE ]\n" +#~ " [ START [ WITH ] start ]\n" +#~ " [ RESTART [ [ WITH ] restart ] ]\n" +#~ " [ CACHE cache ] [ [ NO ] CYCLE ]\n" +#~ " [ OWNED BY { table.column | NONE } ]\n" +#~ "ALTER SEQUENCE name OWNER TO new_owner\n" +#~ "ALTER SEQUENCE name RENAME TO new_name\n" +#~ "ALTER SEQUENCE name SET SCHEMA new_schema" +#~ msgstr "" +#~ "ALTER SEQUENCE ad [ INCREMENT [ BY ] arttırma miktarı ]\n" +#~ " [ MINVALUE en az değer | NO MINVALUE ] [ MAXVALUE üst değer | NO " +#~ "MAXVALUE ]\n" +#~ " [ START [ WITH ] başlama sayısı ]\n" +#~ " [ RESTART [ [ WITH ] yeniden başlama sayısı ] ]\n" +#~ " [ CACHE önbellek ] [ [ NO ] CYCLE ]\n" +#~ " [ OWNED BY { tablo.kolon | NONE } ]\n" +#~ "ALTER SEQUENCE ad OWNER TO yeni sahibir\n" +#~ "ALTER SEQUENCE ad RENAME TO yeni adı\n" +#~ "ALTER SEQUENCE namade SET SCHEMA yeni şeması" + +#~ msgid "" +#~ "ALTER SERVER servername [ VERSION 'newversion' ]\n" +#~ " [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] ) ]\n" +#~ "ALTER SERVER servername OWNER TO new_owner" +#~ msgstr "" +#~ "ALTER SERVER sunucu adı [ VERSION 'yeni sürüm' ]\n" +#~ " [ OPTIONS ( [ ADD | SET | DROP ] seçenek ['değer'] [, ... ] ) ]\n" +#~ "ALTER SERVER sunucu adı OWNER TO yeni sahibi" + +#~ msgid "" +#~ "ALTER TABLE [ ONLY ] name [ * ]\n" +#~ " action [, ... ]\n" +#~ "ALTER TABLE [ ONLY ] name [ * ]\n" +#~ " RENAME [ COLUMN ] column TO new_column\n" +#~ "ALTER TABLE name\n" +#~ " RENAME TO new_name\n" +#~ "ALTER TABLE name\n" +#~ " SET SCHEMA new_schema\n" +#~ "\n" +#~ "where action is one of:\n" +#~ "\n" +#~ " ADD [ COLUMN ] column type [ column_constraint [ ... ] ]\n" +#~ " DROP [ COLUMN ] column [ RESTRICT | CASCADE ]\n" +#~ " ALTER [ COLUMN ] column [ SET DATA ] TYPE type [ USING expression ]\n" +#~ " ALTER [ COLUMN ] column SET DEFAULT expression\n" +#~ " ALTER [ COLUMN ] column DROP DEFAULT\n" +#~ " ALTER [ COLUMN ] column { SET | DROP } NOT NULL\n" +#~ " ALTER [ COLUMN ] column SET STATISTICS integer\n" +#~ " ALTER [ COLUMN ] column SET STORAGE { PLAIN | EXTERNAL | EXTENDED | " +#~ "MAIN }\n" +#~ " ADD table_constraint\n" +#~ " DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]\n" +#~ " DISABLE TRIGGER [ trigger_name | ALL | USER ]\n" +#~ " ENABLE TRIGGER [ trigger_name | ALL | USER ]\n" +#~ " ENABLE REPLICA TRIGGER trigger_name\n" +#~ " ENABLE ALWAYS TRIGGER trigger_name\n" +#~ " DISABLE RULE rewrite_rule_name\n" +#~ " ENABLE RULE rewrite_rule_name\n" +#~ " ENABLE REPLICA RULE rewrite_rule_name\n" +#~ " ENABLE ALWAYS RULE rewrite_rule_name\n" +#~ " CLUSTER ON index_name\n" +#~ " SET WITHOUT CLUSTER\n" +#~ " SET WITH OIDS\n" +#~ " SET WITHOUT OIDS\n" +#~ " SET ( storage_parameter = value [, ... ] )\n" +#~ " RESET ( storage_parameter [, ... ] )\n" +#~ " INHERIT parent_table\n" +#~ " NO INHERIT parent_table\n" +#~ " OWNER TO new_owner\n" +#~ " SET TABLESPACE new_tablespace" +#~ msgstr "" +#~ "ALTER TABLE [ ONLY ] ad [ * ]\n" +#~ " action [, ... ]\n" +#~ "ALTER TABLE [ ONLY ] ad [ * ]\n" +#~ " RENAME [ COLUMN ] kolon TO yeni kolon\n" +#~ "ALTER TABLE ad\n" +#~ " RENAME TO yeni ad\n" +#~ "ALTER TABLE ad\n" +#~ " SET SCHEMA yeni şema\n" +#~ "\n" +#~ "action aşağıdakilerden birisi olabilir:\n" +#~ "\n" +#~ " ADD [ COLUMN ] kolon kolon_tipi [ kolon kısıtlaması [ ... ] ]\n" +#~ " DROP [ COLUMN ] kolon [ RESTRICT | CASCADE ]\n" +#~ " ALTER [ COLUMN ] kolon [ SET DATA ] TYPE type [ USING ifade ]\n" +#~ " ALTER [ COLUMN ] kolon SET DEFAULT ifade\n" +#~ " ALTER [ COLUMN ] kolon DROP DEFAULT\n" +#~ " ALTER [ COLUMN ] kolon { SET | DROP } NOT NULL\n" +#~ " ALTER [ COLUMN ] kolon SET STATISTICS tamsayı\n" +#~ " ALTER [ COLUMN ] kolon SET STORAGE { PLAIN | EXTERNAL | EXTENDED | " +#~ "MAIN }\n" +#~ " ADD tablo kısıtlaması\n" +#~ " DROP CONSTRAINT kısıtlama adı [ RESTRICT | CASCADE ]\n" +#~ " DISABLE TRIGGER [ trigger adı | ALL | USER ]\n" +#~ " ENABLE TRIGGER[ trigger adı | ALL | USER ]\n" +#~ " ENABLE REPLICA TRIGGER trigger adı\n" +#~ " ENABLE ALWAYS TRIGGER trigger adı\n" +#~ " DISABLE RULE rewrite_rule_name\n" +#~ " ENABLE RULE rewrite_rule_name\n" +#~ " ENABLE REPLICA RULE rewrite_rule_name\n" +#~ " ENABLE ALWAYS RULE rewrite_rule_name\n" +#~ " CLUSTER ON index adı\n" +#~ " SET WITHOUT CLUSTER\n" +#~ " SET WITH OIDS\n" +#~ " SET WITHOUT OIDS\n" +#~ " SET ( storage_parameter = value [, ... ] )\n" +#~ " RESET ( storage_parameter [, ... ] )\n" +#~ " INHERIT üst tablo\n" +#~ " NO INHERIT üst tablo\n" +#~ " OWNER TO yeni sahibi\n" +#~ " SET TABLESPACE yeni tablespace" + +#~ msgid "" +#~ "ALTER TABLESPACE name RENAME TO newname\n" +#~ "ALTER TABLESPACE name OWNER TO newowner" +#~ msgstr "" +#~ "ALTER TABLESPACE tablespace_adı RENAME TO yeni_ad\n" +#~ "ALTER TABLESPACE tablespace_adı OWNER TO yeni_sahip" + +#~ msgid "" +#~ "ALTER TEXT SEARCH CONFIGURATION name\n" +#~ " ADD MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]\n" +#~ "ALTER TEXT SEARCH CONFIGURATION name\n" +#~ " ALTER MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]\n" +#~ "ALTER TEXT SEARCH CONFIGURATION name\n" +#~ " ALTER MAPPING REPLACE old_dictionary WITH new_dictionary\n" +#~ "ALTER TEXT SEARCH CONFIGURATION name\n" +#~ " ALTER MAPPING FOR token_type [, ... ] REPLACE old_dictionary WITH " +#~ "new_dictionary\n" +#~ "ALTER TEXT SEARCH CONFIGURATION name\n" +#~ " DROP MAPPING [ IF EXISTS ] FOR token_type [, ... ]\n" +#~ "ALTER TEXT SEARCH CONFIGURATION name RENAME TO newname\n" +#~ "ALTER TEXT SEARCH CONFIGURATION name OWNER TO newowner" +#~ msgstr "" +#~ "ALTER TEXT SEARCH CONFIGURATION name\n" +#~ " ADD MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]\n" +#~ "ALTER TEXT SEARCH CONFIGURATION name\n" +#~ " ALTER MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]\n" +#~ "ALTER TEXT SEARCH CONFIGURATION name\n" +#~ " ALTER MAPPING REPLACE old_dictionary WITH new_dictionary\n" +#~ "ALTER TEXT SEARCH CONFIGURATION name\n" +#~ " ALTER MAPPING FOR token_type [, ... ] REPLACE old_dictionary WITH " +#~ "new_dictionary\n" +#~ "ALTER TEXT SEARCH CONFIGURATION name\n" +#~ " DROP MAPPING [ IF EXISTS ] FOR token_type [, ... ]\n" +#~ "ALTER TEXT SEARCH CONFIGURATION name RENAME TO newname\n" +#~ "ALTER TEXT SEARCH CONFIGURATION name OWNER TO newowner" + +#~ msgid "" +#~ "ALTER TEXT SEARCH DICTIONARY name (\n" +#~ " option [ = value ] [, ... ]\n" +#~ ")\n" +#~ "ALTER TEXT SEARCH DICTIONARY name RENAME TO newname\n" +#~ "ALTER TEXT SEARCH DICTIONARY name OWNER TO newowner" +#~ msgstr "" +#~ "ALTER TEXT SEARCH DICTIONARY ad (\n" +#~ " option [ = value ] [, ... ]\n" +#~ ")\n" +#~ "ALTER TEXT SEARCH DICTIONARY ad RENAME TO yeni adı\n" +#~ "ALTER TEXT SEARCH DICTIONARY ad OWNER TO yeni sahibi" + +#~ msgid "ALTER TEXT SEARCH PARSER name RENAME TO newname" +#~ msgstr "ALTER TEXT SEARCH PARSER ayrıştırıcı_adı RENAME TO yeni_adı" + +#~ msgid "ALTER TEXT SEARCH TEMPLATE name RENAME TO newname" +#~ msgstr "ALTER TEXT SEARCH TEMPLATE şablon_adı RENAME TO yeni_adı" + +#~ msgid "ALTER TRIGGER name ON table RENAME TO newname" +#~ msgstr "ALTER TRIGGER trigger_adı ON tablo_adı RENAME TO yeni_ad" + +#~ msgid "" +#~ "ALTER TYPE name RENAME TO new_name\n" +#~ "ALTER TYPE name OWNER TO new_owner \n" +#~ "ALTER TYPE name SET SCHEMA new_schema" +#~ msgstr "" +#~ "ALTER TYPE ad RENAME TO yeni adı\n" +#~ "ALTER TYPE ad OWNER TO yeni sahibi \n" +#~ "ALTER TYPE ad SET SCHEMA yeni şema" + +#~ msgid "" +#~ "ALTER USER name [ [ WITH ] option [ ... ] ]\n" +#~ "\n" +#~ "where option can be:\n" +#~ " \n" +#~ " SUPERUSER | NOSUPERUSER\n" +#~ " | CREATEDB | NOCREATEDB\n" +#~ " | CREATEROLE | NOCREATEROLE\n" +#~ " | CREATEUSER | NOCREATEUSER\n" +#~ " | INHERIT | NOINHERIT\n" +#~ " | LOGIN | NOLOGIN\n" +#~ " | CONNECTION LIMIT connlimit\n" +#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" +#~ " | VALID UNTIL 'timestamp' \n" +#~ "\n" +#~ "ALTER USER name RENAME TO newname\n" +#~ "\n" +#~ "ALTER USER name SET configuration_parameter { TO | = } { value | " +#~ "DEFAULT }\n" +#~ "ALTER USER name SET configuration_parameter FROM CURRENT\n" +#~ "ALTER USER name RESET configuration_parameter\n" +#~ "ALTER USER name RESET ALL" +#~ msgstr "" +#~ "ALTER USER kullanıcı_adı [ [ WITH ] seçenek [ ... ] ]\n" +#~ "\n" +#~ "seçenek aşağıdakilerden birisi olabilir:\n" +#~ " \n" +#~ " SUPERUSER | NOSUPERUSER\n" +#~ " | CREATEDB | NOCREATEDB\n" +#~ " | CREATEROLE | NOCREATEROLE\n" +#~ " | CREATEUSER | NOCREATEUSER\n" +#~ " | INHERIT | NOINHERIT\n" +#~ " | LOGIN | NOLOGIN\n" +#~ " | CONNECTION LIMIT bağlantı_sayısı_sınırı\n" +#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" +#~ " | VALID UNTIL 'timestamp' \n" +#~ "\n" +#~ "ALTER USER kullanıcı_adı RENAME TO yeni_adı\n" +#~ "\n" +#~ "ALTER USER kullanıcı_adı SET yapılandırma_parametresi { TO | = } { value " +#~ "| DEFAULT }\n" +#~ "ALTER USER kullanıcı_adı SET yapılandırma_parametresi FROM CURRENT\n" +#~ "ALTER USER kullanıcı_adı RESET yapılandırma_parametresi\n" +#~ "ALTER USER kullanıcı_adı RESET ALL" + +#~ msgid "" +#~ "ALTER USER MAPPING FOR { username | USER | CURRENT_USER | PUBLIC }\n" +#~ " SERVER servername\n" +#~ " OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] )" +#~ msgstr "" +#~ "ALTER USER MAPPING FOR { kullanıcı adı | USER | CURRENT_USER | PUBLIC }\n" +#~ " SERVER sunucu adı\n" +#~ " OPTIONS ( [ ADD | SET | DROP ] seçenek ['değer'] [, ... ] )" + +#~ msgid "" +#~ "ALTER VIEW name ALTER [ COLUMN ] column SET DEFAULT expression\n" +#~ "ALTER VIEW name ALTER [ COLUMN ] column DROP DEFAULT\n" +#~ "ALTER VIEW name OWNER TO new_owner\n" +#~ "ALTER VIEW name RENAME TO new_name\n" +#~ "ALTER VIEW name SET SCHEMA new_schema" +#~ msgstr "" +#~ "ALTER VIEW ad ALTER [ COLUMN ] kolon SET DEFAULT ifade\n" +#~ "ALTER VIEW ad ALTER [ COLUMN ] kolon DROP DEFAULT\n" +#~ "ALTER VIEW ad OWNER TO yeni sahibi\n" +#~ "ALTER VIEW ad RENAME TO yeni adı\n" +#~ "ALTER VIEW ad SET SCHEMA yeni şema" + +#~ msgid "ANALYZE [ VERBOSE ] [ table [ ( column [, ...] ) ] ]" +#~ msgstr "ANALYZE [ VERBOSE ] [ tablo [ ( kolon [, ...] ) ] ]" + +#~ msgid "" +#~ "BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]\n" +#~ "\n" +#~ "where transaction_mode is one of:\n" +#~ "\n" +#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | " +#~ "READ UNCOMMITTED }\n" +#~ " READ WRITE | READ ONLY" +#~ msgstr "" +#~ "BEGIN [ WORK | TRANSACTION ] [ transaction_modu [, ...] ]\n" +#~ "\n" +#~ "transaction_modu aşağıdakilerden birisi olabilir:\n" +#~ "\n" +#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | " +#~ "READ UNCOMMITTED }\n" +#~ " READ WRITE | READ ONLY" + +#~ msgid "CHECKPOINT" +#~ msgstr "CHECKPOINT" + +#~ msgid "CLOSE { name | ALL }" +#~ msgstr "CLOSE { name | ALL }" + +#~ msgid "" +#~ "CLUSTER [VERBOSE] tablename [ USING indexname ]\n" +#~ "CLUSTER [VERBOSE]" +#~ msgstr "" +#~ "CLUSTER [VERBOSE] tablo adı [ USING index adı ]\n" +#~ "CLUSTER [VERBOSE]" + +#~ msgid "" +#~ "COMMENT ON\n" +#~ "{\n" +#~ " TABLE object_name |\n" +#~ " COLUMN table_name.column_name |\n" +#~ " AGGREGATE agg_name (agg_type [, ...] ) |\n" +#~ " CAST (sourcetype AS targettype) |\n" +#~ " CONSTRAINT constraint_name ON table_name |\n" +#~ " CONVERSION object_name |\n" +#~ " DATABASE object_name |\n" +#~ " DOMAIN object_name |\n" +#~ " FUNCTION func_name ( [ [ argmode ] [ argname ] argtype [, ...] ] ) |\n" +#~ " INDEX object_name |\n" +#~ " LARGE OBJECT large_object_oid |\n" +#~ " OPERATOR op (leftoperand_type, rightoperand_type) |\n" +#~ " OPERATOR CLASS object_name USING index_method |\n" +#~ " OPERATOR FAMILY object_name USING index_method |\n" +#~ " [ PROCEDURAL ] LANGUAGE object_name |\n" +#~ " ROLE object_name |\n" +#~ " RULE rule_name ON table_name |\n" +#~ " SCHEMA object_name |\n" +#~ " SEQUENCE object_name |\n" +#~ " TABLESPACE object_name |\n" +#~ " TEXT SEARCH CONFIGURATION object_name |\n" +#~ " TEXT SEARCH DICTIONARY object_name |\n" +#~ " TEXT SEARCH PARSER object_name |\n" +#~ " TEXT SEARCH TEMPLATE object_name |\n" +#~ " TRIGGER trigger_name ON table_name |\n" +#~ " TYPE object_name |\n" +#~ " VIEW object_name\n" +#~ "} IS 'text'" +#~ msgstr "" +#~ "COMMENT ON\n" +#~ "{\n" +#~ " TABLE nesne_ado |\n" +#~ " COLUMN tablo_adı.kolon_adı |\n" +#~ " AGGREGATE agg_name (agg_type [, ...] ) |\n" +#~ " CAST (sourcetype AS targettype) |\n" +#~ " CONSTRAINT constraint_name ON table_name |\n" +#~ " CONVERSION nesne_adı |\n" +#~ " DATABASE nesne_adı |\n" +#~ " DOMAIN nesne_adı |\n" +#~ " FUNCTION fonksiyon_adı ( [ [ argmode ] [ argname ] argtype [, ...] ] ) " +#~ "|\n" +#~ " INDEX nesne_adı |\n" +#~ " LARGE OBJECT large_object_oid |\n" +#~ " OPERATOR op (leftoperand_type, rightoperand_type) |\n" +#~ " OPERATOR CLASS nesne_adı USING index_yöntemi |\n" +#~ " OPERATOR FAMILY nesne_adı USING index_yöntemi |\n" +#~ " [ PROCEDURAL ] LANGUAGE nesne_adı |\n" +#~ " ROLE nesne_adı |\n" +#~ " RULE kural_adı ON tablo_adı |\n" +#~ " SCHEMA nesne_adı |\n" +#~ " SEQUENCE nesne_adı |\n" +#~ " TABLESPACE nesne_adı |\n" +#~ " TEXT SEARCH CONFIGURATION nesne_adı |\n" +#~ " TEXT SEARCH DICTIONARY nesne_adı |\n" +#~ " TEXT SEARCH PARSER nesne_adı |\n" +#~ " TEXT SEARCH TEMPLATE nesne_adı |\n" +#~ " TRIGGER tetikleyici_adı ON table_name |\n" +#~ " TYPE nesne_adı |\n" +#~ " VIEW nesne_adı\n" +#~ "} IS 'text'" + +#~ msgid "COMMIT [ WORK | TRANSACTION ]" +#~ msgstr "COMMIT [ WORK | TRANSACTION ]" + +#~ msgid "COMMIT PREPARED transaction_id" +#~ msgstr "COMMIT PREPARED transaction_id" + +#~ msgid "" +#~ "COPY tablename [ ( column [, ...] ) ]\n" +#~ " FROM { 'filename' | STDIN }\n" +#~ " [ [ WITH ] \n" +#~ " [ BINARY ]\n" +#~ " [ OIDS ]\n" +#~ " [ DELIMITER [ AS ] 'delimiter' ]\n" +#~ " [ NULL [ AS ] 'null string' ]\n" +#~ " [ CSV [ HEADER ]\n" +#~ " [ QUOTE [ AS ] 'quote' ] \n" +#~ " [ ESCAPE [ AS ] 'escape' ]\n" +#~ " [ FORCE NOT NULL column [, ...] ]\n" +#~ "\n" +#~ "COPY { tablename [ ( column [, ...] ) ] | ( query ) }\n" +#~ " TO { 'filename' | STDOUT }\n" +#~ " [ [ WITH ] \n" +#~ " [ BINARY ]\n" +#~ " [ OIDS ]\n" +#~ " [ DELIMITER [ AS ] 'delimiter' ]\n" +#~ " [ NULL [ AS ] 'null string' ]\n" +#~ " [ CSV [ HEADER ]\n" +#~ " [ QUOTE [ AS ] 'quote' ] \n" +#~ " [ ESCAPE [ AS ] 'escape' ]\n" +#~ " [ FORCE QUOTE column [, ...] ]" +#~ msgstr "" +#~ "COPY tablo adı [ ( kolon [, ...] ) ]\n" +#~ " FROM { 'dosya adı' | STDIN }\n" +#~ " [ [ WITH ] \n" +#~ " [ BINARY ]\n" +#~ " [ OIDS ]\n" +#~ " [ DELIMITER [ AS ] 'delimiter' ]\n" +#~ " [ NULL [ AS ] 'null string' ]\n" +#~ " [ CSV [ HEADER ]\n" +#~ " [ QUOTE [ AS ] 'quote' ] \n" +#~ " [ ESCAPE [ AS ] 'escape' ]\n" +#~ " [ FORCE NOT NULL column [, ...] ]\n" +#~ "\n" +#~ "COPY { tablo adı [ ( kolon [, ...] ) ] | ( sorgu ) }\n" +#~ " TO { 'dosya adı' | STDOUT }\n" +#~ " [ [ WITH ] \n" +#~ " [ BINARY ]\n" +#~ " [ OIDS ]\n" +#~ " [ DELIMITER [ AS ] 'delimiter' ]\n" +#~ " [ NULL [ AS ] 'null string' ]\n" +#~ " [ CSV [ HEADER ]\n" +#~ " [ QUOTE [ AS ] 'quote' ] \n" +#~ " [ ESCAPE [ AS ] 'escape' ]\n" +#~ " [ FORCE QUOTE column [, ...] ]" + +#~ msgid "" +#~ "CREATE AGGREGATE name ( input_data_type [ , ... ] ) (\n" +#~ " SFUNC = sfunc,\n" +#~ " STYPE = state_data_type\n" +#~ " [ , FINALFUNC = ffunc ]\n" +#~ " [ , INITCOND = initial_condition ]\n" +#~ " [ , SORTOP = sort_operator ]\n" +#~ ")\n" +#~ "\n" +#~ "or the old syntax\n" +#~ "\n" +#~ "CREATE AGGREGATE name (\n" +#~ " BASETYPE = base_type,\n" +#~ " SFUNC = sfunc,\n" +#~ " STYPE = state_data_type\n" +#~ " [ , FINALFUNC = ffunc ]\n" +#~ " [ , INITCOND = initial_condition ]\n" +#~ " [ , SORTOP = sort_operator ]\n" +#~ ")" +#~ msgstr "" +#~ "CREATE AGGREGATE name ( input_data_type [ , ... ] ) (\n" +#~ " SFUNC = sfunc,\n" +#~ " STYPE = state_data_type\n" +#~ " [ , FINALFUNC = ffunc ]\n" +#~ " [ , INITCOND = initial_condition ]\n" +#~ " [ , SORTOP = sort_operator ]\n" +#~ ")\n" +#~ "\n" +#~ "or the old syntax\n" +#~ "\n" +#~ "CREATE AGGREGATE name (\n" +#~ " BASETYPE = base_type,\n" +#~ " SFUNC = sfunc,\n" +#~ " STYPE = state_data_type\n" +#~ " [ , FINALFUNC = ffunc ]\n" +#~ " [ , INITCOND = initial_condition ]\n" +#~ " [ , SORTOP = sort_operator ]\n" +#~ ")" + +#~ msgid "" +#~ "CREATE CAST (sourcetype AS targettype)\n" +#~ " WITH FUNCTION funcname (argtypes)\n" +#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n" +#~ "\n" +#~ "CREATE CAST (sourcetype AS targettype)\n" +#~ " WITHOUT FUNCTION\n" +#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n" +#~ "\n" +#~ "CREATE CAST (sourcetype AS targettype)\n" +#~ " WITH INOUT\n" +#~ " [ AS ASSIGNMENT | AS IMPLICIT ]" +#~ msgstr "" +#~ "CREATE CAST (sourcetype AS targettype)\n" +#~ " WITH FUNCTION funcname (argtypes)\n" +#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n" +#~ "\n" +#~ "CREATE CAST (sourcetype AS targettype)\n" +#~ " WITHOUT FUNCTION\n" +#~ " [ AS ASSIGNMENT | AS IMPLICIT ]\n" +#~ "\n" +#~ "CREATE CAST (sourcetype AS targettype)\n" +#~ " WITH INOUT\n" +#~ " [ AS ASSIGNMENT | AS IMPLICIT ]" + +#~ msgid "" +#~ "CREATE CONSTRAINT TRIGGER name\n" +#~ " AFTER event [ OR ... ]\n" +#~ " ON table_name\n" +#~ " [ FROM referenced_table_name ]\n" +#~ " { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY " +#~ "DEFERRED } }\n" +#~ " FOR EACH ROW\n" +#~ " EXECUTE PROCEDURE funcname ( arguments )" +#~ msgstr "" +#~ "CREATE CONSTRAINT TRIGGER name\n" +#~ " AFTER event [ OR ... ]\n" +#~ " ON table_name\n" +#~ " [ FROM referenced_table_name ]\n" +#~ " { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY " +#~ "DEFERRED } }\n" +#~ " FOR EACH ROW\n" +#~ " EXECUTE PROCEDURE funcname ( arguments )" + +#~ msgid "" +#~ "CREATE [ DEFAULT ] CONVERSION name\n" +#~ " FOR source_encoding TO dest_encoding FROM funcname" +#~ msgstr "" +#~ "CREATE [ DEFAULT ] CONVERSION name\n" +#~ " FOR source_encoding TO dest_encoding FROM funcname" + +#~ msgid "" +#~ "CREATE DATABASE name\n" +#~ " [ [ WITH ] [ OWNER [=] dbowner ]\n" +#~ " [ TEMPLATE [=] template ]\n" +#~ " [ ENCODING [=] encoding ]\n" +#~ " [ LC_COLLATE [=] lc_collate ]\n" +#~ " [ LC_CTYPE [=] lc_ctype ]\n" +#~ " [ TABLESPACE [=] tablespace ]\n" +#~ " [ CONNECTION LIMIT [=] connlimit ] ]" +#~ msgstr "" +#~ "CREATE DATABASE ad\n" +#~ " [ [ WITH ] [ OWNER [=] veritabanı sahibi ]\n" +#~ " [ TEMPLATE [=] şablon ]\n" +#~ " [ ENCODING [=] dil kodlaması ]\n" +#~ " [ LC_COLLATE [=] lc_collate ]\n" +#~ " [ LC_CTYPE [=] lc_ctype ]\n" +#~ " [ TABLESPACE [=] tablespace ]\n" +#~ " [ CONNECTION LIMIT [=] bağlantı sınırı ] ]" + +#~ msgid "" +#~ "CREATE DOMAIN name [ AS ] data_type\n" +#~ " [ DEFAULT expression ]\n" +#~ " [ constraint [ ... ] ]\n" +#~ "\n" +#~ "where constraint is:\n" +#~ "\n" +#~ "[ CONSTRAINT constraint_name ]\n" +#~ "{ NOT NULL | NULL | CHECK (expression) }" +#~ msgstr "" +#~ "CREATE DOMAIN name [ AS ] data_type\n" +#~ " [ DEFAULT expression ]\n" +#~ " [ constraint [ ... ] ]\n" +#~ "\n" +#~ "constraint aşağıdakilerden birisi olabilir:\n" +#~ "\n" +#~ "[ CONSTRAINT constraint_name ]\n" +#~ "{ NOT NULL | NULL | CHECK (expression) }" + +#~ msgid "" +#~ "CREATE FOREIGN DATA WRAPPER name\n" +#~ " [ VALIDATOR valfunction | NO VALIDATOR ]\n" +#~ " [ OPTIONS ( option 'value' [, ... ] ) ]" +#~ msgstr "" +#~ "CREATE FOREIGN DATA WRAPPER ad\n" +#~ " [ VALIDATOR valfunction | NO VALIDATOR ]\n" +#~ " [ OPTIONS ( option 'value' [, ... ] ) ]" + +#~ msgid "" +#~ "CREATE [ OR REPLACE ] FUNCTION\n" +#~ " name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } defexpr ] " +#~ "[, ...] ] )\n" +#~ " [ RETURNS rettype\n" +#~ " | RETURNS TABLE ( colname coltype [, ...] ) ]\n" +#~ " { LANGUAGE langname\n" +#~ " | WINDOW\n" +#~ " | IMMUTABLE | STABLE | VOLATILE\n" +#~ " | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" +#~ " | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" +#~ " | COST execution_cost\n" +#~ " | ROWS result_rows\n" +#~ " | SET configuration_parameter { TO value | = value | FROM CURRENT }\n" +#~ " | AS 'definition'\n" +#~ " | AS 'obj_file', 'link_symbol'\n" +#~ " } ...\n" +#~ " [ WITH ( attribute [, ...] ) ]" +#~ msgstr "" +#~ "CREATE [ OR REPLACE ] FUNCTION\n" +#~ " ad ( [ [ argüman modu ] [ argüman adı ] argüman tipi [ { DEFAULT | " +#~ "= } defexpr ] [, ...] ] )\n" +#~ " [ RETURNS rettype\n" +#~ " | RETURNS TABLE ( kolon_adı kolon_tipi [, ...] ) ]\n" +#~ " { LANGUAGE dil adı\n" +#~ " | WINDOW\n" +#~ " | IMMUTABLE | STABLE | VOLATILE\n" +#~ " | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n" +#~ " | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n" +#~ " | COST execution_cost\n" +#~ " | ROWS result_rows\n" +#~ " | SET yapılandırma parametresi { TO değer | = değer | FROM CURRENT }\n" +#~ " | AS 'tanım'\n" +#~ " | AS 'obj_file', 'link_symbol'\n" +#~ " } ...\n" +#~ " [ WITH ( attribute [, ...] ) ]" + +#~ msgid "" +#~ "CREATE GROUP name [ [ WITH ] option [ ... ] ]\n" +#~ "\n" +#~ "where option can be:\n" +#~ " \n" +#~ " SUPERUSER | NOSUPERUSER\n" +#~ " | CREATEDB | NOCREATEDB\n" +#~ " | CREATEROLE | NOCREATEROLE\n" +#~ " | CREATEUSER | NOCREATEUSER\n" +#~ " | INHERIT | NOINHERIT\n" +#~ " | LOGIN | NOLOGIN\n" +#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" +#~ " | VALID UNTIL 'timestamp' \n" +#~ " | IN ROLE rolename [, ...]\n" +#~ " | IN GROUP rolename [, ...]\n" +#~ " | ROLE rolename [, ...]\n" +#~ " | ADMIN rolename [, ...]\n" +#~ " | USER rolename [, ...]\n" +#~ " | SYSID uid" +#~ msgstr "" +#~ "CREATE GROUP name [ [ WITH ] option [ ... ] ]\n" +#~ "\n" +#~ "seçenek aşağıdakilerden birisi olabilir:\n" +#~ " \n" +#~ " SUPERUSER | NOSUPERUSER\n" +#~ " | CREATEDB | NOCREATEDB\n" +#~ " | CREATEROLE | NOCREATEROLE\n" +#~ " | CREATEUSER | NOCREATEUSER\n" +#~ " | INHERIT | NOINHERIT\n" +#~ " | LOGIN | NOLOGIN\n" +#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'şifre'\n" +#~ " | VALID UNTIL 'timestamp' \n" +#~ " | IN ROLE rolename [, ...]\n" +#~ " | IN GROUP rolename [, ...]\n" +#~ " | ROLE rolename [, ...]\n" +#~ " | ADMIN rolename [, ...]\n" +#~ " | USER rolename [, ...]\n" +#~ " | SYSID uid" + +#~ msgid "" +#~ "CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] name ON table [ USING method ]\n" +#~ " ( { column | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS " +#~ "{ FIRST | LAST } ] [, ...] )\n" +#~ " [ WITH ( storage_parameter = value [, ... ] ) ]\n" +#~ " [ TABLESPACE tablespace ]\n" +#~ " [ WHERE predicate ]" +#~ msgstr "" +#~ "CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] name ON table [ USING method ]\n" +#~ " ( { column | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS " +#~ "{ FIRST | LAST } ] [, ...] )\n" +#~ " [ WITH ( storage_parameter = value [, ... ] ) ]\n" +#~ " [ TABLESPACE tablespace ]\n" +#~ " [ WHERE predicate ]" + +#~ msgid "" +#~ "CREATE [ PROCEDURAL ] LANGUAGE name\n" +#~ "CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name\n" +#~ " HANDLER call_handler [ VALIDATOR valfunction ]" +#~ msgstr "" +#~ "CREATE [ PROCEDURAL ] LANGUAGE name\n" +#~ "CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name\n" +#~ " HANDLER call_handler [ VALIDATOR valfunction ]" + +#~ msgid "" +#~ "CREATE OPERATOR name (\n" +#~ " PROCEDURE = funcname\n" +#~ " [, LEFTARG = lefttype ] [, RIGHTARG = righttype ]\n" +#~ " [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]\n" +#~ " [, RESTRICT = res_proc ] [, JOIN = join_proc ]\n" +#~ " [, HASHES ] [, MERGES ]\n" +#~ ")" +#~ msgstr "" +#~ "CREATE OPERATOR name (\n" +#~ " PROCEDURE = funcname\n" +#~ " [, LEFTARG = lefttype ] [, RIGHTARG = righttype ]\n" +#~ " [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]\n" +#~ " [, RESTRICT = res_proc ] [, JOIN = join_proc ]\n" +#~ " [, HASHES ] [, MERGES ]\n" +#~ ")" + +#~ msgid "" +#~ "CREATE OPERATOR CLASS name [ DEFAULT ] FOR TYPE data_type\n" +#~ " USING index_method [ FAMILY family_name ] AS\n" +#~ " { OPERATOR strategy_number operator_name [ ( op_type, op_type ) ]\n" +#~ " | FUNCTION support_number [ ( op_type [ , op_type ] ) ] funcname " +#~ "( argument_type [, ...] )\n" +#~ " | STORAGE storage_type\n" +#~ " } [, ... ]" +#~ msgstr "" +#~ "CREATE OPERATOR CLASS ad [ DEFAULT ] FOR TYPE veri tipi\n" +#~ " USING index metodu [ FAMILY family_name ] AS\n" +#~ " { OPERATOR strategy_number operatör adı [ ( op_type, op_type ) ]\n" +#~ " | FUNCTION support_number [ ( op_type [ , op_type ] ) ] fonksiyon adı " +#~ "( argument_type [, ...] )\n" +#~ " | STORAGE storage_type\n" +#~ " } [, ... ]" + +#~ msgid "CREATE OPERATOR FAMILY name USING index_method" +#~ msgstr "CREATE OPERATOR FAMILY name USING index_method" + +#~ msgid "" +#~ "CREATE ROLE name [ [ WITH ] option [ ... ] ]\n" +#~ "\n" +#~ "where option can be:\n" +#~ " \n" +#~ " SUPERUSER | NOSUPERUSER\n" +#~ " | CREATEDB | NOCREATEDB\n" +#~ " | CREATEROLE | NOCREATEROLE\n" +#~ " | CREATEUSER | NOCREATEUSER\n" +#~ " | INHERIT | NOINHERIT\n" +#~ " | LOGIN | NOLOGIN\n" +#~ " | CONNECTION LIMIT connlimit\n" +#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" +#~ " | VALID UNTIL 'timestamp' \n" +#~ " | IN ROLE rolename [, ...]\n" +#~ " | IN GROUP rolename [, ...]\n" +#~ " | ROLE rolename [, ...]\n" +#~ " | ADMIN rolename [, ...]\n" +#~ " | USER rolename [, ...]\n" +#~ " | SYSID uid" +#~ msgstr "" +#~ "CREATE ROLE name [ [ WITH ] option [ ... ] ]\n" +#~ "\n" +#~ "seçenek aşağıdakilerden birisi olabilir:\n" +#~ " \n" +#~ " SUPERUSER | NOSUPERUSER\n" +#~ " | CREATEDB | NOCREATEDB\n" +#~ " | CREATEROLE | NOCREATEROLE\n" +#~ " | CREATEUSER | NOCREATEUSER\n" +#~ " | INHERIT | NOINHERIT\n" +#~ " | LOGIN | NOLOGIN\n" +#~ " | CONNECTION LIMIT connlimit\n" +#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" +#~ " | VALID UNTIL 'timestamp' \n" +#~ " | IN ROLE rolename [, ...]\n" +#~ " | IN GROUP rolename [, ...]\n" +#~ " | ROLE rolename [, ...]\n" +#~ " | ADMIN rolename [, ...]\n" +#~ " | USER rolename [, ...]\n" +#~ " | SYSID uid" + +#~ msgid "" +#~ "CREATE [ OR REPLACE ] RULE name AS ON event\n" +#~ " TO table [ WHERE condition ]\n" +#~ " DO [ ALSO | INSTEAD ] { NOTHING | command | ( command ; " +#~ "command ... ) }" +#~ msgstr "" +#~ "CREATE [ OR REPLACE ] RULE name AS ON event\n" +#~ " TO tablo_adı [ WHERE condition ]\n" +#~ " DO [ ALSO | INSTEAD ] { NOTHING | command | ( command ; " +#~ "command ... ) }" + +#~ msgid "" +#~ "CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element " +#~ "[ ... ] ]\n" +#~ "CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ]" +#~ msgstr "" +#~ "CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ TABLESPACE " +#~ "tablespace ] [ schema_element [ ... ] ]\n" +#~ "CREATE SCHEMA AUTHORIZATION username [ TABLESPACE tablespace ] " +#~ "[ schema_element [ ... ] ]" + +#~ msgid "" +#~ "CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ]\n" +#~ " [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO " +#~ "MAXVALUE ]\n" +#~ " [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]\n" +#~ " [ OWNED BY { table.column | NONE } ]" +#~ msgstr "" +#~ "CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ]\n" +#~ " [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO " +#~ "MAXVALUE ]\n" +#~ " [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]\n" +#~ " [ OWNED BY { table.column | NONE } ]" + +#~ msgid "" +#~ "CREATE SERVER servername [ TYPE 'servertype' ] [ VERSION " +#~ "'serverversion' ]\n" +#~ " FOREIGN DATA WRAPPER fdwname\n" +#~ " [ OPTIONS ( option 'value' [, ... ] ) ]" +#~ msgstr "" +#~ "CREATE SERVER sunucu adı [ TYPE 'sunucu tipi' ] [ VERSION 'sunucu " +#~ "sürümü' ]\n" +#~ " FOREIGN DATA WRAPPER fdw adı\n" +#~ " [ OPTIONS ( seçenek 'değer' [, ... ] ) ]" + +#~ msgid "" +#~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name ( [\n" +#~ " { column_name data_type [ DEFAULT default_expr ] [ column_constraint " +#~ "[ ... ] ]\n" +#~ " | table_constraint\n" +#~ " | LIKE parent_table [ { INCLUDING | EXCLUDING } { DEFAULTS | " +#~ "CONSTRAINTS | INDEXES } ] ... }\n" +#~ " [, ... ]\n" +#~ "] )\n" +#~ "[ INHERITS ( parent_table [, ... ] ) ]\n" +#~ "[ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT " +#~ "OIDS ]\n" +#~ "[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" +#~ "[ TABLESPACE tablespace ]\n" +#~ "\n" +#~ "where column_constraint is:\n" +#~ "\n" +#~ "[ CONSTRAINT constraint_name ]\n" +#~ "{ NOT NULL | \n" +#~ " NULL | \n" +#~ " UNIQUE index_parameters |\n" +#~ " PRIMARY KEY index_parameters |\n" +#~ " CHECK ( expression ) |\n" +#~ " REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | " +#~ "MATCH SIMPLE ]\n" +#~ " [ ON DELETE action ] [ ON UPDATE action ] }\n" +#~ "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY " +#~ "IMMEDIATE ]\n" +#~ "\n" +#~ "and table_constraint is:\n" +#~ "\n" +#~ "[ CONSTRAINT constraint_name ]\n" +#~ "{ UNIQUE ( column_name [, ... ] ) index_parameters |\n" +#~ " PRIMARY KEY ( column_name [, ... ] ) index_parameters |\n" +#~ " CHECK ( expression ) |\n" +#~ " FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn " +#~ "[, ... ] ) ]\n" +#~ " [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] " +#~ "[ ON UPDATE action ] }\n" +#~ "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY " +#~ "IMMEDIATE ]\n" +#~ "\n" +#~ "index_parameters in UNIQUE and PRIMARY KEY constraints are:\n" +#~ "\n" +#~ "[ WITH ( storage_parameter [= value] [, ... ] ) ]\n" +#~ "[ USING INDEX TABLESPACE tablespace ]" +#~ msgstr "" +#~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE tablo_adı ( [\n" +#~ " { kolon_adı veri_tipi [ DEFAULT default_expr ] [ kolon_kısıtlayıcısı " +#~ "[ ... ] ]\n" +#~ " | tablo_kısıtlayıcısı\n" +#~ " | LIKE parent_table [ { INCLUDING | EXCLUDING } { DEFAULTS | " +#~ "CONSTRAINTS | INDEXES } ] ... }\n" +#~ " [, ... ]\n" +#~ "] )\n" +#~ "[ INHERITS ( parent_table [, ... ] ) ]\n" +#~ "[ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT " +#~ "OIDS ]\n" +#~ "[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" +#~ "[ TABLESPACE tablo_uzayı ]\n" +#~ "\n" +#~ "kolon_kısıtlayıcısı aşağıdakilerden birisi olabilir:\n" +#~ "\n" +#~ "im[ CONSTRAINT constraint_name ]\n" +#~ "{ NOT NULL | \n" +#~ " NULL | \n" +#~ " UNIQUE index_parametreleri |\n" +#~ " PRIMARY KEY index_parametreleri |\n" +#~ " CHECK ( ifade ) |\n" +#~ " REFERENCES referans_tablosu [ ( referans_kolonu ) ] [ MATCH FULL | " +#~ "MATCH PARTIAL | MATCH SIMPLE ]\n" +#~ " [ ON DELETE işlem ] [ ON UPDATE işlem ] }\n" +#~ "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY " +#~ "IMMEDIATE ]\n" +#~ "\n" +#~ "ve tablo_kısıtlayıcısı aşağıdakilerden birisi olabilir:\n" +#~ "\n" +#~ "[ CONSTRAINT constraint_name ]\n" +#~ "{ UNIQUE ( column_name [, ... ] ) index_parameters |\n" +#~ " PRIMARY KEY ( column_name [, ... ] ) index_parameters |\n" +#~ " CHECK ( expression ) |\n" +#~ " FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn " +#~ "[, ... ] ) ]\n" +#~ " [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] " +#~ "[ ON UPDATE action ] }\n" +#~ "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY " +#~ "IMMEDIATE ]\n" +#~ "\n" +#~ "UNIQUE ve PRIMARY KEY kısıtlamalarındaki index parametreleri " +#~ "aşağıdakilerden birisi olabilir:\n" +#~ "\n" +#~ "[ WITH ( storage_parameter [= value] [, ... ] ) ]\n" +#~ "[ USING INDEX TABLESPACE tablo_uzayı ]" + +#~ msgid "" +#~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name\n" +#~ " [ (column_name [, ...] ) ]\n" +#~ " [ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT " +#~ "OIDS ]\n" +#~ " [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" +#~ " [ TABLESPACE tablespace ]\n" +#~ " AS query\n" +#~ " [ WITH [ NO ] DATA ]" +#~ msgstr "" +#~ "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE tablo adı\n" +#~ " [ (kolon adı [, ...] ) ]\n" +#~ " [ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT " +#~ "OIDS ]\n" +#~ " [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n" +#~ " [ TABLESPACE tablespace ]\n" +#~ " AS sorgu\n" +#~ " [ WITH [ NO ] DATA ]" + +#~ msgid "" +#~ "CREATE TABLESPACE tablespacename [ OWNER username ] LOCATION 'directory'" +#~ msgstr "" +#~ "CREATE TABLESPACE tablespacename [ OWNER username ] LOCATION 'directory'" + +#~ msgid "" +#~ "CREATE TEXT SEARCH CONFIGURATION name (\n" +#~ " PARSER = parser_name |\n" +#~ " COPY = source_config\n" +#~ ")" +#~ msgstr "" +#~ "CREATE TEXT SEARCH CONFIGURATION name (\n" +#~ " PARSER = parser_name |\n" +#~ " COPY = source_config\n" +#~ ")" + +#~ msgid "" +#~ "CREATE TEXT SEARCH DICTIONARY name (\n" +#~ " TEMPLATE = template\n" +#~ " [, option = value [, ... ]]\n" +#~ ")" +#~ msgstr "" +#~ "CREATE TEXT SEARCH DICTIONARY ad (\n" +#~ " TEMPLATE = şablon\n" +#~ " [, option = value [, ... ]]\n" +#~ ")" + +#~ msgid "" +#~ "CREATE TEXT SEARCH PARSER name (\n" +#~ " START = start_function ,\n" +#~ " GETTOKEN = gettoken_function ,\n" +#~ " END = end_function ,\n" +#~ " LEXTYPES = lextypes_function\n" +#~ " [, HEADLINE = headline_function ]\n" +#~ ")" +#~ msgstr "" +#~ "CREATE TEXT SEARCH PARSER name (\n" +#~ " START = start_function ,\n" +#~ " GETTOKEN = gettoken_function ,\n" +#~ " END = end_function ,\n" +#~ " LEXTYPES = lextypes_function\n" +#~ " [, HEADLINE = headline_function ]\n" +#~ ")" + +#~ msgid "" +#~ "CREATE TEXT SEARCH TEMPLATE name (\n" +#~ " [ INIT = init_function , ]\n" +#~ " LEXIZE = lexize_function\n" +#~ ")" +#~ msgstr "" +#~ "CREATE TEXT SEARCH TEMPLATE ad (\n" +#~ " [ INIT = init_function , ]\n" +#~ " LEXIZE = lexize_function\n" +#~ ")" + +#~ msgid "" +#~ "CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }\n" +#~ " ON table [ FOR [ EACH ] { ROW | STATEMENT } ]\n" +#~ " EXECUTE PROCEDURE funcname ( arguments )" +#~ msgstr "" +#~ "CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }\n" +#~ " ON table [ FOR [ EACH ] { ROW | STATEMENT } ]\n" +#~ " EXECUTE PROCEDURE funcname ( arguments )" + +#~ msgid "" +#~ "CREATE TYPE name AS\n" +#~ " ( attribute_name data_type [, ... ] )\n" +#~ "\n" +#~ "CREATE TYPE name AS ENUM\n" +#~ " ( 'label' [, ... ] )\n" +#~ "\n" +#~ "CREATE TYPE name (\n" +#~ " INPUT = input_function,\n" +#~ " OUTPUT = output_function\n" +#~ " [ , RECEIVE = receive_function ]\n" +#~ " [ , SEND = send_function ]\n" +#~ " [ , TYPMOD_IN = type_modifier_input_function ]\n" +#~ " [ , TYPMOD_OUT = type_modifier_output_function ]\n" +#~ " [ , ANALYZE = analyze_function ]\n" +#~ " [ , INTERNALLENGTH = { internallength | VARIABLE } ]\n" +#~ " [ , PASSEDBYVALUE ]\n" +#~ " [ , ALIGNMENT = alignment ]\n" +#~ " [ , STORAGE = storage ]\n" +#~ " [ , LIKE = like_type ]\n" +#~ " [ , CATEGORY = category ]\n" +#~ " [ , PREFERRED = preferred ]\n" +#~ " [ , DEFAULT = default ]\n" +#~ " [ , ELEMENT = element ]\n" +#~ " [ , DELIMITER = delimiter ]\n" +#~ ")\n" +#~ "\n" +#~ "CREATE TYPE name" +#~ msgstr "" +#~ "CREATE TYPE ad AS\n" +#~ " ( attribute_name veri tipi [, ... ] )\n" +#~ "\n" +#~ "CREATE TYPE ad AS ENUM\n" +#~ " ( 'label' [, ... ] )\n" +#~ "\n" +#~ "CREATE TYPE ad (\n" +#~ " INPUT = input_function,\n" +#~ " OUTPUT = output_function\n" +#~ " [ , RECEIVE = receive_function ]\n" +#~ " [ , SEND = send_function ]\n" +#~ " [ , TYPMOD_IN = type_modifier_input_function ]\n" +#~ " [ , TYPMOD_OUT = type_modifier_output_function ]\n" +#~ " [ , ANALYZE = analyze_function ]\n" +#~ " [ , INTERNALLENGTH = { internallength | VARIABLE } ]\n" +#~ " [ , PASSEDBYVALUE ]\n" +#~ " [ , ALIGNMENT = alignment ]\n" +#~ " [ , STORAGE = storage ]\n" +#~ " [ , LIKE = like_type ]\n" +#~ " [ , CATEGORY = category ]\n" +#~ " [ , PREFERRED = preferred ]\n" +#~ " [ , DEFAULT = default ]\n" +#~ " [ , ELEMENT = element ]\n" +#~ " [ , DELIMITER = delimiter ]\n" +#~ ")\n" +#~ "\n" +#~ "CREATE TYPE name" + +#~ msgid "" +#~ "CREATE USER name [ [ WITH ] option [ ... ] ]\n" +#~ "\n" +#~ "where option can be:\n" +#~ " \n" +#~ " SUPERUSER | NOSUPERUSER\n" +#~ " | CREATEDB | NOCREATEDB\n" +#~ " | CREATEROLE | NOCREATEROLE\n" +#~ " | CREATEUSER | NOCREATEUSER\n" +#~ " | INHERIT | NOINHERIT\n" +#~ " | LOGIN | NOLOGIN\n" +#~ " | CONNECTION LIMIT connlimit\n" +#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" +#~ " | VALID UNTIL 'timestamp' \n" +#~ " | IN ROLE rolename [, ...]\n" +#~ " | IN GROUP rolename [, ...]\n" +#~ " | ROLE rolename [, ...]\n" +#~ " | ADMIN rolename [, ...]\n" +#~ " | USER rolename [, ...]\n" +#~ " | SYSID uid" +#~ msgstr "" +#~ "CREATE USER name [ [ WITH ] option [ ... ] ]\n" +#~ "\n" +#~ "seçenek aşağıdakilerden birisi olabilir:\n" +#~ " \n" +#~ " SUPERUSER | NOSUPERUSER\n" +#~ " | CREATEDB | NOCREATEDB\n" +#~ " | CREATEROLE | NOCREATEROLE\n" +#~ " | CREATEUSER | NOCREATEUSER\n" +#~ " | INHERIT | NOINHERIT\n" +#~ " | LOGIN | NOLOGIN\n" +#~ " | CONNECTION LIMIT connlimit\n" +#~ " | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n" +#~ " | VALID UNTIL 'timestamp' \n" +#~ " | IN ROLE rolename [, ...]\n" +#~ " | IN GROUP rolename [, ...]\n" +#~ " | ROLE rolename [, ...]\n" +#~ " | ADMIN rolename [, ...]\n" +#~ " | USER rolename [, ...]\n" +#~ " | SYSID uid" + +#~ msgid "" +#~ "CREATE USER MAPPING FOR { username | USER | CURRENT_USER | PUBLIC }\n" +#~ " SERVER servername\n" +#~ " [ OPTIONS ( option 'value' [ , ... ] ) ]" +#~ msgstr "" +#~ "CREATE USER MAPPING FOR { kullanıcı adı | USER | CURRENT_USER | PUBLIC }\n" +#~ " SERVER sunucu adı\n" +#~ " [ OPTIONS ( seçenek 'değer' [ , ... ] ) ]" + +#~ msgid "" +#~ "CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name " +#~ "[, ...] ) ]\n" +#~ " AS query" +#~ msgstr "" +#~ "CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name " +#~ "[, ...] ) ]\n" +#~ " AS query" + +#~ msgid "DEALLOCATE [ PREPARE ] { name | ALL }" +#~ msgstr "DEALLOCATE [ PREPARE ] { name | ALL }" + +#~ msgid "" +#~ "DECLARE name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]\n" +#~ " CURSOR [ { WITH | WITHOUT } HOLD ] FOR query" +#~ msgstr "" +#~ "DECLARE ad [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]\n" +#~ " CURSOR [ { WITH | WITHOUT } HOLD ] FOR sorgu" + +#~ msgid "" +#~ "DELETE FROM [ ONLY ] table [ [ AS ] alias ]\n" +#~ " [ USING usinglist ]\n" +#~ " [ WHERE condition | WHERE CURRENT OF cursor_name ]\n" +#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" +#~ msgstr "" +#~ "DELETE FROM [ ONLY ] tablo [ [ AS ] takma_adı ]\n" +#~ " [ USING usinglist ]\n" +#~ " [ WHERE condition | WHERE CURRENT OF cursor_name ]\n" +#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" + +#~ msgid "DISCARD { ALL | PLANS | TEMPORARY | TEMP }" +#~ msgstr "DISCARD { ALL | PLANS | TEMPORARY | TEMP }" + +#~ msgid "" +#~ "DROP AGGREGATE [ IF EXISTS ] name ( type [ , ... ] ) [ CASCADE | " +#~ "RESTRICT ]" +#~ msgstr "" +#~ "DROP AGGREGATE [ IF EXISTS ] name ( type [ , ... ] ) [ CASCADE | " +#~ "RESTRICT ]" + +#~ msgid "" +#~ "DROP CAST [ IF EXISTS ] (sourcetype AS targettype) [ CASCADE | RESTRICT ]" +#~ msgstr "" +#~ "DROP CAST [ IF EXISTS ] (sourcetype AS targettype) [ CASCADE | RESTRICT ]" + +#~ msgid "DROP CONVERSION [ IF EXISTS ] name [ CASCADE | RESTRICT ]" +#~ msgstr "DROP CONVERSION [ IF EXISTS ] conversion_adı [ CASCADE | RESTRICT ]" + +#~ msgid "DROP DATABASE [ IF EXISTS ] name" +#~ msgstr "DROP DATABASE [ IF EXISTS ] veritabanı_adı" + +#~ msgid "DROP DOMAIN [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" +#~ msgstr "DROP DOMAIN [ IF EXISTS ] adı [, ...] [ CASCADE | RESTRICT ]" + +#~ msgid "DROP FOREIGN DATA WRAPPER [ IF EXISTS ] name [ CASCADE | RESTRICT ]" +#~ msgstr "DROP FOREIGN DATA WRAPPER [ IF EXISTS ] ad [ CASCADE | RESTRICT ]" + +#~ msgid "" +#~ "DROP FUNCTION [ IF EXISTS ] name ( [ [ argmode ] [ argname ] argtype " +#~ "[, ...] ] )\n" +#~ " [ CASCADE | RESTRICT ]" +#~ msgstr "" +#~ "DROP FUNCTION [ IF EXISTS ] fonksiyon_adı ( [ [ argmode ] [ argname ] " +#~ "argtype [, ...] ] )\n" +#~ " [ CASCADE | RESTRICT ]" + +#~ msgid "DROP GROUP [ IF EXISTS ] name [, ...]" +#~ msgstr "DROP GROUP [ IF EXISTS ] name [, ...]" + +#~ msgid "DROP INDEX [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" +#~ msgstr "DROP INDEX [ IF EXISTS ] index_adı [, ...] [ CASCADE | RESTRICT ]" + +#~ msgid "" +#~ "DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] name [ CASCADE | RESTRICT ]" +#~ msgstr "" +#~ "DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] dil_adı [ CASCADE | RESTRICT ]" + +#~ msgid "" +#~ "DROP OPERATOR [ IF EXISTS ] name ( { lefttype | NONE } , { righttype | " +#~ "NONE } ) [ CASCADE | RESTRICT ]" +#~ msgstr "" +#~ "DROP OPERATOR [ IF EXISTS ] name ( { lefttype | NONE } , { righttype | " +#~ "NONE } ) [ CASCADE | RESTRICT ]" + +#~ msgid "" +#~ "DROP OPERATOR CLASS [ IF EXISTS ] name USING index_method [ CASCADE | " +#~ "RESTRICT ]" +#~ msgstr "" +#~ "DROP OPERATOR CLASS [ IF EXISTS ] ad USING index_method [ CASCADE | " +#~ "RESTRICT ]" + +#~ msgid "" +#~ "DROP OPERATOR FAMILY [ IF EXISTS ] name USING index_method [ CASCADE | " +#~ "RESTRICT ]" +#~ msgstr "" +#~ "DROP OPERATOR FAMILY [ IF EXISTS ] name USING index_method [ CASCADE | " +#~ "RESTRICT ]" + +#~ msgid "DROP OWNED BY name [, ...] [ CASCADE | RESTRICT ]" +#~ msgstr "DROP OWNED BY name [, ...] [ CASCADE | RESTRICT ]" + +#~ msgid "DROP ROLE [ IF EXISTS ] name [, ...]" +#~ msgstr "DROP ROLE [ IF EXISTS ] name [, ...]" + +#~ msgid "DROP RULE [ IF EXISTS ] name ON relation [ CASCADE | RESTRICT ]" +#~ msgstr "DROP RULE [ IF EXISTS ] rule_adı ON relation [ CASCADE | RESTRICT ]" + +#~ msgid "DROP SCHEMA [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" +#~ msgstr "DROP SCHEMA [ IF EXISTS ] şema_adı [, ...] [ CASCADE | RESTRICT ]" + +#~ msgid "DROP SEQUENCE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" +#~ msgstr "" +#~ "DROP SEQUENCE [ IF EXISTS ] sequence_adı [, ...] [ CASCADE | RESTRICT ]" -#: sql_help.h:509 -msgid "cancel a transaction that was earlier prepared for two-phase commit" -msgstr "daha önce two-phase commit için hazırlanmış transaction'u iptal et" +#~ msgid "DROP SERVER [ IF EXISTS ] servername [ CASCADE | RESTRICT ]" +#~ msgstr "DROP SERVER [ IF EXISTS ] sunucu adı [ CASCADE | RESTRICT ]" -#: sql_help.h:510 -msgid "ROLLBACK PREPARED transaction_id" -msgstr "ROLLBACK PREPARED transaction_id" +#~ msgid "DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" +#~ msgstr "DROP TABLE [ IF EXISTS ] tablo_adı [, ...] [ CASCADE | RESTRICT ]" -#: sql_help.h:513 -msgid "roll back to a savepoint" -msgstr "savepoint'a rollback" +#~ msgid "DROP TABLESPACE [ IF EXISTS ] tablespacename" +#~ msgstr "DROP TABLESPACE [ IF EXISTS ] tablespace_adı" -#: sql_help.h:514 -msgid "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_name" -msgstr "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_adı" +#~ msgid "" +#~ "DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] name [ CASCADE | RESTRICT ]" +#~ msgstr "" +#~ "DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] adı [ CASCADE | RESTRICT ]" -#: sql_help.h:517 -msgid "define a new savepoint within the current transaction" -msgstr "geerli transaction içinde savepoint tanımla" +#~ msgid "" +#~ "DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] name [ CASCADE | RESTRICT ]" +#~ msgstr "" +#~ "DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] adı [ CASCADE | RESTRICT ]" -#: sql_help.h:518 -msgid "SAVEPOINT savepoint_name" -msgstr "SAVEPOINT savepoint_name" +#~ msgid "DROP TEXT SEARCH PARSER [ IF EXISTS ] name [ CASCADE | RESTRICT ]" +#~ msgstr "DROP TEXT SEARCH PARSER [ IF EXISTS ] adı [ CASCADE | RESTRICT ]" -#: sql_help.h:521 -#: sql_help.h:557 -#: sql_help.h:581 -msgid "retrieve rows from a table or view" -msgstr "tablo ya da view'dan satırları getir" +#~ msgid "DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] name [ CASCADE | RESTRICT ]" +#~ msgstr "DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] adı [ CASCADE | RESTRICT ]" -#: sql_help.h:522 -#: sql_help.h:558 -#: sql_help.h:582 -msgid "" -"[ WITH [ RECURSIVE ] with_query [, ...] ]\n" -"SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" -" * | expression [ [ AS ] output_name ] [, ...]\n" -" [ FROM from_item [, ...] ]\n" -" [ WHERE condition ]\n" -" [ GROUP BY expression [, ...] ]\n" -" [ HAVING condition [, ...] ]\n" -" [ WINDOW window_name AS ( window_definition ) [, ...] ]\n" -" [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" -" [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]\n" -" [ LIMIT { count | ALL } ]\n" -" [ OFFSET start [ ROW | ROWS ] ]\n" -" [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n" -" [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]\n" -"\n" -"where from_item can be one of:\n" -"\n" -" [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]\n" -" ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]\n" -" with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]\n" -" function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...] ) ]\n" -" function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] )\n" -" from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]\n" -"\n" -"and with_query is:\n" -"\n" -" with_query_name [ ( column_name [, ...] ) ] AS ( select )\n" -"\n" -"TABLE { [ ONLY ] table_name [ * ] | with_query_name }" -msgstr "" -"[ WITH [ RECURSIVE ] with_query [, ...] ]\n" -"SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" -" * | expression [ [ AS ] output_name ] [, ...]\n" -" [ FROM from_item [, ...] ]\n" -" [ WHERE condition ]\n" -" [ GROUP BY expression [, ...] ]\n" -" [ HAVING condition [, ...] ]\n" -" [ WINDOW window_name AS ( window_definition ) [, ...] ]\n" -" [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" -" [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]\n" -" [ LIMIT { count | ALL } ]\n" -" [ OFFSET start [ ROW | ROWS ] ]\n" -" [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n" -" [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]\n" -"\n" -"where from_item can be one of:\n" -"\n" -" [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]\n" -" ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]\n" -" with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]\n" -" function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...] ) ]\n" -" function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] )\n" -" from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]\n" -"\n" -"and with_query is:\n" -"\n" -" with_query_name [ ( column_name [, ...] ) ] AS ( select )\n" -"\n" -"TABLE { [ ONLY ] table_name [ * ] | with_query_name }" +#~ msgid "DROP TRIGGER [ IF EXISTS ] name ON table [ CASCADE | RESTRICT ]" +#~ msgstr "" +#~ "DROP TRIGGER [ IF EXISTS ] trigger_adı ON tablo_adı [ CASCADE | RESTRICT ]" -#: sql_help.h:526 -msgid "" -"[ WITH [ RECURSIVE ] with_query [, ...] ]\n" -"SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" -" * | expression [ [ AS ] output_name ] [, ...]\n" -" INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table\n" -" [ FROM from_item [, ...] ]\n" -" [ WHERE condition ]\n" -" [ GROUP BY expression [, ...] ]\n" -" [ HAVING condition [, ...] ]\n" -" [ WINDOW window_name AS ( window_definition ) [, ...] ]\n" -" [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" -" [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]\n" -" [ LIMIT { count | ALL } ]\n" -" [ OFFSET start [ ROW | ROWS ] ]\n" -" [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n" -" [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]" -msgstr "" -"[ WITH [ RECURSIVE ] with_query [, ...] ]\n" -"SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" -" * | expression [ [ AS ] output_name ] [, ...]\n" -" INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table\n" -" [ FROM from_item [, ...] ]\n" -" [ WHERE condition ]\n" -" [ GROUP BY expression [, ...] ]\n" -" [ HAVING condition [, ...] ]\n" -" [ WINDOW window_name AS ( window_definition ) [, ...] ]\n" -" [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" -" [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]\n" -" [ LIMIT { count | ALL } ]\n" -" [ OFFSET start [ ROW | ROWS ] ]\n" -" [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n" -" [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]" - -#: sql_help.h:529 -msgid "change a run-time parameter" -msgstr "çalışma zamanı parametresini değiştir" +#~ msgid "DROP TYPE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" +#~ msgstr "DROP TYPE [ IF EXISTS ] tip_adı [, ...] [ CASCADE | RESTRICT ]" -#: sql_help.h:530 -msgid "" -"SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | 'value' | DEFAULT }\n" -"SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }" -msgstr "" -"SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | 'value' | DEFAULT }\n" -"SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }" +#~ msgid "DROP USER [ IF EXISTS ] name [, ...]" +#~ msgstr "DROP USER [ IF EXISTS ] name [, ...]" -#: sql_help.h:533 -msgid "set constraint checking modes for the current transaction" -msgstr "geçerli transaction için constraint doğrulama biçimini belirle" +#~ msgid "" +#~ "DROP USER MAPPING [ IF EXISTS ] FOR { username | USER | CURRENT_USER | " +#~ "PUBLIC } SERVER servername" +#~ msgstr "" +#~ "DROP USER MAPPING [ IF EXISTS ] FOR { kullanıcı adı | USER | CURRENT_USER " +#~ "| PUBLIC } SERVER sunucu adı" -#: sql_help.h:534 -msgid "SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }" -msgstr "SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }" +#~ msgid "DROP VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]" +#~ msgstr "DROP VIEW [ IF EXISTS ] view_adı [, ...] [ CASCADE | RESTRICT ]" -#: sql_help.h:537 -msgid "set the current user identifier of the current session" -msgstr "geçerli oturumun geçerli kullanıcısını tanımla" +#~ msgid "END [ WORK | TRANSACTION ]" +#~ msgstr "END [ WORK | TRANSACTION ]" -#: sql_help.h:538 -msgid "" -"SET [ SESSION | LOCAL ] ROLE rolename\n" -"SET [ SESSION | LOCAL ] ROLE NONE\n" -"RESET ROLE" -msgstr "" -"SET [ SESSION | LOCAL ] ROLE rol_adı\n" -"SET [ SESSION | LOCAL ] ROLE NONE\n" -"RESET ROLE" +#~ msgid "EXECUTE name [ ( parameter [, ...] ) ]" +#~ msgstr "EXECUTE adı [ ( parameter [, ...] ) ]" -#: sql_help.h:541 -msgid "set the session user identifier and the current user identifier of the current session" -msgstr "ilk oturum ve geçerli oturum için kullanıcı tanımla" +#~ msgid "EXPLAIN [ ANALYZE ] [ VERBOSE ] statement" +#~ msgstr "EXPLAIN [ ANALYZE ] [ VERBOSE ] ifade" -#: sql_help.h:542 -msgid "" -"SET [ SESSION | LOCAL ] SESSION AUTHORIZATION username\n" -"SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n" -"RESET SESSION AUTHORIZATION" -msgstr "" -"SET [ SESSION | LOCAL ] SESSION AUTHORIZATION kullanıcı_adı\n" -"SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n" -"RESET SESSION AUTHORIZATION" +#~ msgid "" +#~ "FETCH [ direction { FROM | IN } ] cursorname\n" +#~ "\n" +#~ "where direction can be empty or one of:\n" +#~ "\n" +#~ " NEXT\n" +#~ " PRIOR\n" +#~ " FIRST\n" +#~ " LAST\n" +#~ " ABSOLUTE count\n" +#~ " RELATIVE count\n" +#~ " count\n" +#~ " ALL\n" +#~ " FORWARD\n" +#~ " FORWARD count\n" +#~ " FORWARD ALL\n" +#~ " BACKWARD\n" +#~ " BACKWARD count\n" +#~ " BACKWARD ALL" +#~ msgstr "" +#~ "FETCH [ direction { FROM | IN } ] cursorname\n" +#~ "\n" +#~ "direction boş ya da aşağıdakilerden birisi olabilir:\n" +#~ "\n" +#~ " NEXT\n" +#~ " PRIOR\n" +#~ " FIRST\n" +#~ " LAST\n" +#~ " ABSOLUTE count\n" +#~ " RELATIVE count\n" +#~ " count\n" +#~ " ALL\n" +#~ " FORWARD\n" +#~ " FORWARD count\n" +#~ " FORWARD ALL\n" +#~ " BACKWARD\n" +#~ " BACKWARD count\n" +#~ " BACKWARD ALL" -#: sql_help.h:545 -msgid "set the characteristics of the current transaction" -msgstr "geçerli transcation'ın karakteristiklerini ayarla" +#~ msgid "" +#~ "GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | " +#~ "TRIGGER }\n" +#~ " [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON [ TABLE ] tablename [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column [, ...] )\n" +#~ " [,...] | ALL [ PRIVILEGES ] ( column [, ...] ) }\n" +#~ " ON [ TABLE ] tablename [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { { USAGE | SELECT | UPDATE }\n" +#~ " [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON SEQUENCE sequencename [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL " +#~ "[ PRIVILEGES ] }\n" +#~ " ON DATABASE dbname [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON FOREIGN DATA WRAPPER fdwname [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON FOREIGN SERVER servername [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n" +#~ " ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) " +#~ "[, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON LANGUAGE langname [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON SCHEMA schemaname [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { CREATE | ALL [ PRIVILEGES ] }\n" +#~ " ON TABLESPACE tablespacename [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT role [, ...] TO rolename [, ...] [ WITH ADMIN OPTION ]" +#~ msgstr "" +#~ "GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | " +#~ "TRIGGER }\n" +#~ " [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON [ TABLE ] tablo adı [, ...]\n" +#~ " TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( kolon [, ...] )\n" +#~ " [,...] | ALL [ PRIVILEGES ] ( kolon [, ...] ) }\n" +#~ " ON [ TABLE ] tablo adı [, ...]\n" +#~ " TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { { USAGE | SELECT | UPDATE }\n" +#~ " [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON SEQUENCE sequence adı [, ...]\n" +#~ " TO { [ GROUP ] rolename | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL " +#~ "[ PRIVILEGES ] }\n" +#~ " ON DATABASE veritabanı adı [, ...]\n" +#~ " TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON FOREIGN DATA WRAPPER fdw adı [, ...]\n" +#~ " TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON FOREIGN SERVER sunucu adı [, ...]\n" +#~ " TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n" +#~ " ON FUNCTION fonksiyon adı ( [ [ argüman modu ] [ argüman adı ] " +#~ "argüman tipi [, ...] ] ) [, ...]\n" +#~ " TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON LANGUAGE dil adı [, ...]\n" +#~ " TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON SCHEMA şema adı [, ...]\n" +#~ " TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT { CREATE | ALL [ PRIVILEGES ] }\n" +#~ " ON TABLESPACE tablespacename [, ...]\n" +#~ " TO { [ GROUP ] rol adı | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n" +#~ "\n" +#~ "GRANT role [, ...] TO rol adı [, ...] [ WITH ADMIN OPTION ]" -#: sql_help.h:546 -msgid "" -"SET TRANSACTION transaction_mode [, ...]\n" -"SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [, ...]\n" -"\n" -"where transaction_mode is one of:\n" -"\n" -" ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n" -" READ WRITE | READ ONLY" -msgstr "" -"SET TRANSACTION transaction_mode [, ...]\n" -"SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [, ...]\n" -"\n" -"transaction_mode aşağıdakilerden birisi olabilir:\n" -"\n" -" ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n" -" READ WRITE | READ ONLY" +#~ msgid "" +#~ "INSERT INTO table [ ( column [, ...] ) ]\n" +#~ " { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) " +#~ "[, ...] | query }\n" +#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" +#~ msgstr "" +#~ "IINSERT INTO table [ ( column [, ...] ) ]\n" +#~ " { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) " +#~ "[, ...] | query }\n" +#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" -#: sql_help.h:549 -msgid "show the value of a run-time parameter" -msgstr "çalıştırma zaman parametresinın değerini göster" +#~ msgid "LISTEN name" +#~ msgstr "LISTEN ad" -#: sql_help.h:550 -msgid "" -"SHOW name\n" -"SHOW ALL" -msgstr "" -"SHOW name\n" -"SHOW ALL" +#~ msgid "LOAD 'filename'" +#~ msgstr "LOAD 'dosya adı'" -#: sql_help.h:554 -msgid "" -"START TRANSACTION [ transaction_mode [, ...] ]\n" -"\n" -"where transaction_mode is one of:\n" -"\n" -" ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n" -" READ WRITE | READ ONLY" -msgstr "" -"START TRANSACTION [ transaction_mode [, ...] ]\n" -"\n" -"transaction_mode aşağıdakilerden birisi olabilir:\n" -"\n" -" ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n" -" READ WRITE | READ ONLY" +#~ msgid "" +#~ "LOCK [ TABLE ] [ ONLY ] name [, ...] [ IN lockmode MODE ] [ NOWAIT ]\n" +#~ "\n" +#~ "where lockmode is one of:\n" +#~ "\n" +#~ " ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n" +#~ " | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE" +#~ msgstr "" +#~ "LOCK [ TABLE ] [ ONLY ] ad [, ...] [ IN kilit modu MODE ] [ NOWAIT ]\n" +#~ "\n" +#~ "kilit modu aşağıdakilerden birisi olabilir:\n" +#~ "\n" +#~ " ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n" +#~ " | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE" -#: sql_help.h:561 -msgid "empty a table or set of tables" -msgstr "bir veya birden fazla tabloyu kısalt" +#~ msgid "MOVE [ direction { FROM | IN } ] cursorname" +#~ msgstr "MOVE [ direction { FROM | IN } ] cursor_adı" -#: sql_help.h:562 -msgid "" -"TRUNCATE [ TABLE ] [ ONLY ] name [, ... ]\n" -" [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]" -msgstr "" -"TRUNCATE [ TABLE ] [ ONLY ] ad [, ... ]\n" -" [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]" +#~ msgid "NOTIFY name" +#~ msgstr "NOTIFY ad" -#: sql_help.h:565 -msgid "stop listening for a notification" -msgstr "bildiriyi beklemeyi durdur" +#~ msgid "PREPARE name [ ( datatype [, ...] ) ] AS statement" +#~ msgstr "PREPARE adı [ ( veri_tipi [, ...] ) ] AS ifade" -#: sql_help.h:566 -msgid "UNLISTEN { name | * }" -msgstr "UNLISTEN { name | * }" +#~ msgid "PREPARE TRANSACTION transaction_id" +#~ msgstr "PREPARE TRANSACTION transaction_id" -#: sql_help.h:569 -msgid "update rows of a table" -msgstr "tablodaki satırları güncelle" +#~ msgid "REASSIGN OWNED BY old_role [, ...] TO new_role" +#~ msgstr "REASSIGN OWNED BY eski_rol [, ...] TO yeni_rol" -#: sql_help.h:570 -msgid "" -"UPDATE [ ONLY ] table [ [ AS ] alias ]\n" -" SET { column = { expression | DEFAULT } |\n" -" ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...]\n" -" [ FROM fromlist ]\n" -" [ WHERE condition | WHERE CURRENT OF cursor_name ]\n" -" [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" -msgstr "" -"UPDATE [ ONLY ] table [ [ AS ] alias ]\n" -" SET { column = { expression | DEFAULT } |\n" -" ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...]\n" -" [ FROM fromlist ]\n" -" [ WHERE condition | WHERE CURRENT OF cursor_name ]\n" -" [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" - -#: sql_help.h:573 -msgid "garbage-collect and optionally analyze a database" -msgstr "Veritabanındaki çöpleri-toparla ve veritabanını (tercihe başlı) analiz et" +#~ msgid "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } name [ FORCE ]" +#~ msgstr "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } adı [ FORCE ]" -#: sql_help.h:574 -msgid "" -"VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]\n" -"VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]" -msgstr "" -"VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]\n" -"VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]" +#~ msgid "RELEASE [ SAVEPOINT ] savepoint_name" +#~ msgstr "RELEASE [ SAVEPOINT ] savepoint_adı" -#: sql_help.h:577 -msgid "compute a set of rows" -msgstr "compute a set of rows" +#~ msgid "" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | " +#~ "TRIGGER }\n" +#~ " [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON [ TABLE ] tablename [, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { SELECT | INSERT | UPDATE | REFERENCES } ( column [, ...] )\n" +#~ " [,...] | ALL [ PRIVILEGES ] ( column [, ...] ) }\n" +#~ " ON [ TABLE ] tablename [, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { USAGE | SELECT | UPDATE }\n" +#~ " [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON SEQUENCE sequencename [, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL " +#~ "[ PRIVILEGES ] }\n" +#~ " ON DATABASE dbname [, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON FOREIGN DATA WRAPPER fdwname [, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON FOREIGN SERVER servername [, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { EXECUTE | ALL [ PRIVILEGES ] }\n" +#~ " ON FUNCTION funcname ( [ [ argmode ] [ argname ] argtype [, ...] ] ) " +#~ "[, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON LANGUAGE langname [, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON SCHEMA schemaname [, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { CREATE | ALL [ PRIVILEGES ] }\n" +#~ " ON TABLESPACE tablespacename [, ...]\n" +#~ " FROM { [ GROUP ] rolename | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ ADMIN OPTION FOR ]\n" +#~ " role [, ...] FROM rolename [, ...]\n" +#~ " [ CASCADE | RESTRICT ]" +#~ msgstr "" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | " +#~ "TRIGGER }\n" +#~ " [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON [ TABLE ] tablo adı [, ...]\n" +#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { SELECT | INSERT | UPDATE | REFERENCES } ( kolon [, ...] )\n" +#~ " [,...] | ALL [ PRIVILEGES ] ( kolon [, ...] ) }\n" +#~ " ON [ TABLE ] tablo adı [, ...]\n" +#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { USAGE | SELECT | UPDATE }\n" +#~ " [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON SEQUENCE sequence adı [, ...]\n" +#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { CREATE | CONNECT | TEMPORARY | TEMP } [,...] | ALL " +#~ "[ PRIVILEGES ] }\n" +#~ " ON DATABASE veritabanı adı [, ...]\n" +#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON FOREIGN DATA WRAPPER fdw adı [, ...]\n" +#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON FOREIGN SERVER sunucu adu [, ...]\n" +#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { EXECUTE | ALL [ PRIVILEGES ] }\n" +#~ " ON FUNCTION fonksiyon adı ( [ [ argüman modu ] [ argüman adı ] " +#~ "argüman tipi [, ...] ] ) [, ...]\n" +#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { USAGE | ALL [ PRIVILEGES ] }\n" +#~ " ON LANGUAGE dil adı [, ...]\n" +#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }\n" +#~ " ON SCHEMA şema adı [, ...]\n" +#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ GRANT OPTION FOR ]\n" +#~ " { CREATE | ALL [ PRIVILEGES ] }\n" +#~ " ON TABLESPACE tablespace adı [, ...]\n" +#~ " FROM { [ GROUP ] rol adı | PUBLIC } [, ...]\n" +#~ " [ CASCADE | RESTRICT ]\n" +#~ "\n" +#~ "REVOKE [ ADMIN OPTION FOR ]\n" +#~ " role [, ...] FROM rol adı [, ...]\n" +#~ " [ CASCADE | RESTRICT ]" -#: sql_help.h:578 -msgid "" -"VALUES ( expression [, ...] ) [, ...]\n" -" [ ORDER BY sort_expression [ ASC | DESC | USING operator ] [, ...] ]\n" -" [ LIMIT { count | ALL } ]\n" -" [ OFFSET start [ ROW | ROWS ] ]\n" -" [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]" -msgstr "" -"VALUES ( expression [, ...] ) [, ...]\n" -" [ ORDER BY sort_expression [ ASC | DESC | USING operator ] [, ...] ]\n" -" [ LIMIT { count | ALL } ]\n" -" [ OFFSET start [ ROW | ROWS ] ]\n" -" [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]" +#~ msgid "ROLLBACK [ WORK | TRANSACTION ]" +#~ msgstr "ROLLBACK [ WORK | TRANSACTION ]" -#: ../../port/exec.c:195 -#: ../../port/exec.c:309 -#: ../../port/exec.c:352 -#, c-format -msgid "could not identify current directory: %s" -msgstr "geçerli dizin tespit edilemedi: %s" +#~ msgid "ROLLBACK PREPARED transaction_id" +#~ msgstr "ROLLBACK PREPARED transaction_id" -#: ../../port/exec.c:214 -#, c-format -msgid "invalid binary \"%s\"" -msgstr "geçersiz ikili (binary) \"%s\"" +#~ msgid "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_name" +#~ msgstr "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_adı" -#: ../../port/exec.c:263 -#, c-format -msgid "could not read binary \"%s\"" -msgstr "\"%s\" ikili (binary) dosyası okunamadı" +#~ msgid "" +#~ "[ WITH [ RECURSIVE ] with_query [, ...] ]\n" +#~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" +#~ " * | expression [ [ AS ] output_name ] [, ...]\n" +#~ " [ FROM from_item [, ...] ]\n" +#~ " [ WHERE condition ]\n" +#~ " [ GROUP BY expression [, ...] ]\n" +#~ " [ HAVING condition [, ...] ]\n" +#~ " [ WINDOW window_name AS ( window_definition ) [, ...] ]\n" +#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" +#~ " [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST " +#~ "| LAST } ] [, ...] ]\n" +#~ " [ LIMIT { count | ALL } ]\n" +#~ " [ OFFSET start [ ROW | ROWS ] ]\n" +#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n" +#~ " [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] " +#~ "[...] ]\n" +#~ "\n" +#~ "where from_item can be one of:\n" +#~ "\n" +#~ " [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias " +#~ "[, ...] ) ] ]\n" +#~ " ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]\n" +#~ " with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]\n" +#~ " function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias " +#~ "[, ...] | column_definition [, ...] ) ]\n" +#~ " function_name ( [ argument [, ...] ] ) AS ( column_definition " +#~ "[, ...] )\n" +#~ " from_item [ NATURAL ] join_type from_item [ ON join_condition | USING " +#~ "( join_column [, ...] ) ]\n" +#~ "\n" +#~ "and with_query is:\n" +#~ "\n" +#~ " with_query_name [ ( column_name [, ...] ) ] AS ( select )\n" +#~ "\n" +#~ "TABLE { [ ONLY ] table_name [ * ] | with_query_name }" +#~ msgstr "" +#~ "[ WITH [ RECURSIVE ] with_query [, ...] ]\n" +#~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" +#~ " * | expression [ [ AS ] output_name ] [, ...]\n" +#~ " [ FROM from_item [, ...] ]\n" +#~ " [ WHERE condition ]\n" +#~ " [ GROUP BY expression [, ...] ]\n" +#~ " [ HAVING condition [, ...] ]\n" +#~ " [ WINDOW window_name AS ( window_definition ) [, ...] ]\n" +#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" +#~ " [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST " +#~ "| LAST } ] [, ...] ]\n" +#~ " [ LIMIT { count | ALL } ]\n" +#~ " [ OFFSET start [ ROW | ROWS ] ]\n" +#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n" +#~ " [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] " +#~ "[...] ]\n" +#~ "\n" +#~ "where from_item can be one of:\n" +#~ "\n" +#~ " [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias " +#~ "[, ...] ) ] ]\n" +#~ " ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]\n" +#~ " with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]\n" +#~ " function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias " +#~ "[, ...] | column_definition [, ...] ) ]\n" +#~ " function_name ( [ argument [, ...] ] ) AS ( column_definition " +#~ "[, ...] )\n" +#~ " from_item [ NATURAL ] join_type from_item [ ON join_condition | USING " +#~ "( join_column [, ...] ) ]\n" +#~ "\n" +#~ "and with_query is:\n" +#~ "\n" +#~ " with_query_name [ ( column_name [, ...] ) ] AS ( select )\n" +#~ "\n" +#~ "TABLE { [ ONLY ] table_name [ * ] | with_query_name }" -#: ../../port/exec.c:270 -#, c-format -msgid "could not find a \"%s\" to execute" -msgstr "\"%s\" çalıştırmak için bulunamadı" +#~ msgid "" +#~ "[ WITH [ RECURSIVE ] with_query [, ...] ]\n" +#~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" +#~ " * | expression [ [ AS ] output_name ] [, ...]\n" +#~ " INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table\n" +#~ " [ FROM from_item [, ...] ]\n" +#~ " [ WHERE condition ]\n" +#~ " [ GROUP BY expression [, ...] ]\n" +#~ " [ HAVING condition [, ...] ]\n" +#~ " [ WINDOW window_name AS ( window_definition ) [, ...] ]\n" +#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" +#~ " [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST " +#~ "| LAST } ] [, ...] ]\n" +#~ " [ LIMIT { count | ALL } ]\n" +#~ " [ OFFSET start [ ROW | ROWS ] ]\n" +#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n" +#~ " [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]" +#~ msgstr "" +#~ "[ WITH [ RECURSIVE ] with_query [, ...] ]\n" +#~ "SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]\n" +#~ " * | expression [ [ AS ] output_name ] [, ...]\n" +#~ " INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table\n" +#~ " [ FROM from_item [, ...] ]\n" +#~ " [ WHERE condition ]\n" +#~ " [ GROUP BY expression [, ...] ]\n" +#~ " [ HAVING condition [, ...] ]\n" +#~ " [ WINDOW window_name AS ( window_definition ) [, ...] ]\n" +#~ " [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]\n" +#~ " [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST " +#~ "| LAST } ] [, ...] ]\n" +#~ " [ LIMIT { count | ALL } ]\n" +#~ " [ OFFSET start [ ROW | ROWS ] ]\n" +#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]\n" +#~ " [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]" -#: ../../port/exec.c:325 -#: ../../port/exec.c:361 -#, c-format -msgid "could not change directory to \"%s\"" -msgstr "çalışma dizini \"%s\" olarak değiştirilemedi" +#~ msgid "" +#~ "SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | " +#~ "'value' | DEFAULT }\n" +#~ "SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }" +#~ msgstr "" +#~ "SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | " +#~ "'value' | DEFAULT }\n" +#~ "SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }" -#: ../../port/exec.c:340 -#, c-format -msgid "could not read symbolic link \"%s\"" -msgstr "symbolic link \"%s\" okuma hatası" +#~ msgid "SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }" +#~ msgstr "SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }" -#: ../../port/exec.c:586 -#, c-format -msgid "child process exited with exit code %d" -msgstr "alt süreç %d çıkış koduyla sonuçlandırılmıştır" +#~ msgid "" +#~ "SET [ SESSION | LOCAL ] ROLE rolename\n" +#~ "SET [ SESSION | LOCAL ] ROLE NONE\n" +#~ "RESET ROLE" +#~ msgstr "" +#~ "SET [ SESSION | LOCAL ] ROLE rol_adı\n" +#~ "SET [ SESSION | LOCAL ] ROLE NONE\n" +#~ "RESET ROLE" -#: ../../port/exec.c:590 -#, c-format -msgid "child process was terminated by exception 0x%X" -msgstr "alt süreç 0x%X exception tarafından sonlandırılmıştır" +#~ msgid "" +#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION username\n" +#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n" +#~ "RESET SESSION AUTHORIZATION" +#~ msgstr "" +#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION kullanıcı_adı\n" +#~ "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n" +#~ "RESET SESSION AUTHORIZATION" -#: ../../port/exec.c:599 -#, c-format -msgid "child process was terminated by signal %s" -msgstr "alt süreç %s sinyali tarafından sonlandırılmıştır" +#~ msgid "" +#~ "SET TRANSACTION transaction_mode [, ...]\n" +#~ "SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [, ...]\n" +#~ "\n" +#~ "where transaction_mode is one of:\n" +#~ "\n" +#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | " +#~ "READ UNCOMMITTED }\n" +#~ " READ WRITE | READ ONLY" +#~ msgstr "" +#~ "SET TRANSACTION transaction_mode [, ...]\n" +#~ "SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [, ...]\n" +#~ "\n" +#~ "transaction_mode aşağıdakilerden birisi olabilir:\n" +#~ "\n" +#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | " +#~ "READ UNCOMMITTED }\n" +#~ " READ WRITE | READ ONLY" -#: ../../port/exec.c:602 -#, c-format -msgid "child process was terminated by signal %d" -msgstr "alt süreç %d sinyali tarafından sonlandırılmıştır" +#~ msgid "" +#~ "SHOW name\n" +#~ "SHOW ALL" +#~ msgstr "" +#~ "SHOW name\n" +#~ "SHOW ALL" -#: ../../port/exec.c:606 -#, c-format -msgid "child process exited with unrecognized status %d" -msgstr "alt süreç %d bilinmeyen durumu ile sonlandırılmıştır" +#~ msgid "" +#~ "START TRANSACTION [ transaction_mode [, ...] ]\n" +#~ "\n" +#~ "where transaction_mode is one of:\n" +#~ "\n" +#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | " +#~ "READ UNCOMMITTED }\n" +#~ " READ WRITE | READ ONLY" +#~ msgstr "" +#~ "START TRANSACTION [ transaction_mode [, ...] ]\n" +#~ "\n" +#~ "transaction_mode aşağıdakilerden birisi olabilir:\n" +#~ "\n" +#~ " ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | " +#~ "READ UNCOMMITTED }\n" +#~ " READ WRITE | READ ONLY" + +#~ msgid "" +#~ "TRUNCATE [ TABLE ] [ ONLY ] name [, ... ]\n" +#~ " [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]" +#~ msgstr "" +#~ "TRUNCATE [ TABLE ] [ ONLY ] ad [, ... ]\n" +#~ " [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]" + +#~ msgid "UNLISTEN { name | * }" +#~ msgstr "UNLISTEN { name | * }" + +#~ msgid "" +#~ "UPDATE [ ONLY ] table [ [ AS ] alias ]\n" +#~ " SET { column = { expression | DEFAULT } |\n" +#~ " ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } " +#~ "[, ...]\n" +#~ " [ FROM fromlist ]\n" +#~ " [ WHERE condition | WHERE CURRENT OF cursor_name ]\n" +#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" +#~ msgstr "" +#~ "UPDATE [ ONLY ] table [ [ AS ] alias ]\n" +#~ " SET { column = { expression | DEFAULT } |\n" +#~ " ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } " +#~ "[, ...]\n" +#~ " [ FROM fromlist ]\n" +#~ " [ WHERE condition | WHERE CURRENT OF cursor_name ]\n" +#~ " [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]" + +#~ msgid "" +#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]\n" +#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column " +#~ "[, ...] ) ] ]" +#~ msgstr "" +#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]\n" +#~ "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column " +#~ "[, ...] ) ] ]" + +#~ msgid "" +#~ "VALUES ( expression [, ...] ) [, ...]\n" +#~ " [ ORDER BY sort_expression [ ASC | DESC | USING operator ] [, ...] ]\n" +#~ " [ LIMIT { count | ALL } ]\n" +#~ " [ OFFSET start [ ROW | ROWS ] ]\n" +#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]" +#~ msgstr "" +#~ "VALUES ( expression [, ...] ) [, ...]\n" +#~ " [ ORDER BY sort_expression [ ASC | DESC | USING operator ] [, ...] ]\n" +#~ " [ LIMIT { count | ALL } ]\n" +#~ " [ OFFSET start [ ROW | ROWS ] ]\n" +#~ " [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]" + +#~ msgid " \"%s\" IN %s %s" +#~ msgstr " \"%s\", %s %s içinde" #~ msgid "(1 row)" + #~ msgid_plural "(%lu rows)" #~ msgstr[0] "(%lu satır)" #~ msgstr[1] "(1 satır)" + #~ msgid "Usage:" #~ msgstr "Kullanımı:" + #~ msgid "General options:" #~ msgstr "Genel tercihler:" + #~ msgid " -1 (\"one\") execute command file as a single transaction" #~ msgstr " -1 (rakamla bir) komutu tek bir transaction olarak işle" + #~ msgid " --help show this help, then exit" #~ msgstr " --help yardım metnini göster ve çık" + #~ msgid " --version output version information, then exit" #~ msgstr " --version sürüm bilgisini göster ve çık" + #~ msgid " -t print rows only (-P tuples_only)" #~ msgstr " -t sadece satırları göster (-P tuples_only)" + #~ msgid "" #~ "\n" #~ "Connection options:" #~ msgstr "" #~ "\n" #~ "Bağlantı tercihleri:" + #~ msgid "" #~ " -W force password prompt (should happen automatically)" #~ msgstr " -W şifre sorulmasını sağla (otomatik olarak olmalı)" + #~ msgid "" #~ " \\d{t|i|s|v|S} [PATTERN] (add \"+\" for more detail)\n" #~ " list tables/indexes/sequences/views/system tables\n" @@ -4772,57 +7127,69 @@ msgstr "alt süreç %d bilinmeyen durumu ile sonlandırılmıştır" #~ " \\d{t|i|s|v|S} [PATTERN] (daha fazla ayrıntı için \"+\" ekleyin)\n" #~ " tablolar/indeksler/sequenceler/viewlar/system " #~ "tablolarını listele\n" + #~ msgid " \\db [PATTERN] list tablespaces (add \"+\" for more detail)\n" #~ msgstr "" #~ " \\db [PATTERN] tablespaceleri listele (daha fazla ayrıntı için \"+\" " #~ "ekleyin)\n" + #~ msgid " \\df [PATTERN] list functions (add \"+\" for more detail)\n" #~ msgstr "" #~ " \\df [PATTERN] fonksiyonları göster (daha fazla ayrıntı için \"+\" " #~ "ekleyin)\n" + #~ msgid "" #~ " \\dFd [PATTERN] list text search dictionaries (add \"+\" for more " #~ "detail)\n" #~ msgstr "" #~ " \\dFd [PATTERN] metin arama sözlüklerini listele (daha fazla ayrıntı " #~ "için \"+\" ekleyin)\n" + #~ msgid "" #~ " \\dFp [PATTERN] list text search parsers (add \"+\" for more detail)\n" #~ msgstr "" #~ " \\dFp [PATTERN] metin arama ayrıştırıcılarını listele (daha fazla " #~ "ayrıntı için \"+\" ekleyin)\n" + #~ msgid " \\dn [PATTERN] list schemas (add \"+\" for more detail)\n" #~ msgstr "" #~ " \\dn [PATTERN] şemaları göster (daha fazla ayrıntı için \"+\" " #~ "ekleyin)\n" + #~ msgid " \\dT [PATTERN] list data types (add \"+\" for more detail)\n" #~ msgstr "" #~ " \\dT [PATTERN] veri tipleri listele (daha fazla ayrıntı için \"+\" " #~ "ekleyin)\n" + #~ msgid " \\l list all databases (add \"+\" for more detail)\n" #~ msgstr "" #~ " \\l tüm veritabanlarını listele (daha fazla ayrıntı için \"+" #~ "\" ekleyin)\n" + #~ msgid "" #~ " \\z [PATTERN] list table, view, and sequence access privileges (same " #~ "as \\dp)\n" #~ msgstr "" #~ " \\z [PATTERN] tablo, view, ve sequence erişim haklarını listele (\\dp " #~ "ile aynı)\n" + #~ msgid "Copy, Large Object\n" #~ msgstr "Copy, Large Object\n" + #~ msgid "" #~ "Welcome to %s %s (server %s), the PostgreSQL interactive terminal.\n" #~ "\n" #~ msgstr "" #~ "PostgreSQL etkilişimli arayüzü %s %s(server %s).\n" #~ "\n" + #~ msgid "" #~ "Welcome to %s %s, the PostgreSQL interactive terminal.\n" #~ "\n" #~ msgstr "" #~ "PostgreSQL etkilişimli arayüzü %s %s.\n" #~ "\n" + #~ msgid "" #~ "WARNING: You are connected to a server with major version %d.%d,\n" #~ "but your %s client is major version %d.%d. Some backslash commands,\n" @@ -4833,18 +7200,21 @@ msgstr "alt süreç %d bilinmeyen durumu ile sonlandırılmıştır" #~ "ancak %s istemcinizin sürümü %d.%d. \\d gibi bazı backslash ile başlayan " #~ "komutlar düzgün çalışmayabilir\n" #~ "\n" + #~ msgid "Access privileges for database \"%s\"" #~ msgstr "\"%s\" veritabanının erişim hakları" + #~ msgid "?%c? \"%s.%s\"" #~ msgstr "?%c? \"%s.%s\"" + #~ msgid " \"%s\"" #~ msgstr " \"%s\"" -#~ msgid "no limit" -#~ msgstr "sınırsız" + #~ msgid "ALTER VIEW name RENAME TO newname" #~ msgstr "ALTER VIEW view_adı RENAME TO yeni_ad" + #~ msgid "%s: Warning: The -u option is deprecated. Use -U.\n" #~ msgstr "%s: Uyarı: -u parametresi kullanımdan kalkmıştır. -U kullanın.\n" + #~ msgid "(binary compatible)" #~ msgstr "(ikili (binary) uyumlu)" - diff --git a/src/bin/psql/po/zh_CN.po b/src/bin/psql/po/zh_CN.po index 1a0ca28e04..a92c1c2914 100644 --- a/src/bin/psql/po/zh_CN.po +++ b/src/bin/psql/po/zh_CN.po @@ -2,14 +2,15 @@ msgid "" msgstr "" "Project-Id-Version: psql (PostgreSQL 9.0)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-10-01 14:42+0000\n" +"POT-Creation-Date: 2013-01-29 13:56+0000\n" "PO-Revision-Date: 2010-10-01 13:08+0800\n" "Last-Translator: Weibin \n" "Language-Team: Chinese (Simplified)\n" -"com>\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"com>\n" "X-Poedit-Language: Chinese\n" "X-Poedit-Country: CHINA\n" "X-Poedit-SourceCharset: utf-8\n" @@ -17,53 +18,88 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" # command.c:120 -#: command.c:112 +#: command.c:113 #, c-format msgid "Invalid command \\%s. Try \\? for help.\n" msgstr "无效的命令 \\%s,用 \\? 显示说明。\n" # command.c:122 -#: command.c:114 +#: command.c:115 #, c-format msgid "invalid command \\%s\n" msgstr "无效的命令 \\%s\n" # command.c:131 -#: command.c:125 +#: command.c:126 #, c-format msgid "\\%s: extra argument \"%s\" ignored\n" msgstr "\\%s:忽略多余的参数 \"%s\" \n" # command.c:240 -#: command.c:267 +#: command.c:268 #, c-format msgid "could not get home directory: %s\n" msgstr "无法取得 home 目录:%s\n" # command.c:256 -#: command.c:283 +#: command.c:284 #, c-format msgid "\\%s: could not change directory to \"%s\": %s\n" msgstr "\\%s: 无法切换目录至 \"%s\": %s\n" +# common.c:636 +# common.c:871 +#: command.c:305 common.c:493 common.c:773 +#, c-format +msgid "You are currently not connected to a database.\n" +msgstr "你目前没有与资料库连线。\n" + +#: command.c:312 +#, c-format +msgid "" +"You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at " +"port \"%s\".\n" +msgstr "" +"以用户 \"%2$s\" 的身份,通过套接字\"%3$s\"在端口\"%4$s\"连接到数据库 \"%1$s" +"\"\n" + +#: command.c:315 +#, c-format +msgid "" +"You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port " +"\"%s\".\n" +msgstr "" +"以用户 \"%2$s\" 的身份, 在主机\"%3$s\", 端口\"%4$s\"连接到数据库 \"%1$s\"\n" + # common.c:930 -#: command.c:316 common.c:940 +#: command.c:339 common.c:940 #, c-format msgid "Time: %.3f ms\n" msgstr "时间:%.3f ms\n" # command.c:370 # command.c:760 -#: command.c:485 command.c:513 command.c:1064 +#: command.c:524 command.c:594 command.c:1308 msgid "no query buffer\n" msgstr "没有查询缓存区\n" -#: command.c:555 +#: command.c:557 command.c:2530 +#, c-format +msgid "invalid line number: %s\n" +msgstr "无效行号: %s\n" + +# describe.c:117 +#: command.c:588 +#, c-format +msgid "The server (version %d.%d) does not support editing function source.\n" +msgstr "服务器(版本%d.%d)不支持编辑函数源码.\n" + +#: command.c:668 msgid "No changes" msgstr "没有发生" # command.c:433 -#: command.c:609 +#: command.c:722 #, c-format msgid "%s: invalid encoding name or conversion procedure not found\n" msgstr "%s:无效的编码名称或找不到转换程序\n" @@ -75,14 +111,14 @@ msgstr "%s:无效的编码名称或找不到转换程序\n" # command.c:612 # command.c:740 # command.c:771 -#: command.c:688 command.c:722 command.c:736 command.c:753 command.c:857 -#: command.c:907 command.c:1044 command.c:1075 +#: command.c:801 command.c:835 command.c:849 command.c:866 command.c:970 +#: command.c:1020 command.c:1288 command.c:1319 #, c-format msgid "\\%s: missing required argument\n" msgstr "\\%s:缺少所需参数\n" # command.c:598 -#: command.c:785 +#: command.c:898 msgid "Query buffer is empty." msgstr "查询缓存区是空的。" @@ -90,38 +126,38 @@ msgstr "查询缓存区是空的。" # command.c:939 # startup.c:187 # startup.c:205 -#: command.c:795 +#: command.c:908 msgid "Enter new password: " msgstr "输入新的密码:" -#: command.c:796 +#: command.c:909 msgid "Enter it again: " msgstr "再次键入:" -#: command.c:800 +#: command.c:913 #, c-format msgid "Passwords didn't match.\n" msgstr "Passwords didn't match.\n" -#: command.c:818 +#: command.c:931 #, c-format msgid "Password encryption failed.\n" msgstr "密码加密失败.\n" # command.c:696 # command.c:745 -#: command.c:886 command.c:987 command.c:1049 +#: command.c:999 command.c:1111 command.c:1293 #, c-format msgid "\\%s: error\n" msgstr "\\%s:错误\n" # command.c:632 -#: command.c:927 +#: command.c:1040 msgid "Query buffer reset (cleared)." msgstr "查询缓存区重置(清空)。" # command.c:646 -#: command.c:940 +#: command.c:1064 #, c-format msgid "Wrote history to file \"%s/%s\".\n" msgstr "书写历程到档案 \"%s/%s\".\n" @@ -130,19 +166,30 @@ msgstr "书写历程到档案 \"%s/%s\".\n" # common.c:85 # common.c:99 # mainloop.c:71 -#: command.c:978 common.c:52 common.c:66 input.c:209 mainloop.c:72 -#: mainloop.c:234 print.c:137 print.c:151 +#: command.c:1102 common.c:52 common.c:66 common.c:90 input.c:209 +#: mainloop.c:72 mainloop.c:234 print.c:137 print.c:151 #, c-format msgid "out of memory\n" msgstr "记忆体用尽\n" +# describe.c:117 +#: command.c:1132 +#, c-format +msgid "The server (version %d.%d) does not support showing function source.\n" +msgstr "服务器(版本%d.%d)不支持显示函数源码.\n" + +# copy.c:122 +#: command.c:1138 +msgid "function name is required\n" +msgstr "需要函数名\n" + # command.c:726 -#: command.c:1029 +#: command.c:1273 msgid "Timing is on." msgstr "启用计时功能." # command.c:728 -#: command.c:1031 +#: command.c:1275 msgid "Timing is off." msgstr "停止计时功能." @@ -159,8 +206,8 @@ msgstr "停止计时功能." # common.c:170 # copy.c:530 # copy.c:575 -#: command.c:1092 command.c:1112 command.c:1633 command.c:1640 command.c:1649 -#: command.c:1659 command.c:1668 command.c:1682 command.c:1699 command.c:1737 +#: command.c:1336 command.c:1356 command.c:1918 command.c:1925 command.c:1934 +#: command.c:1944 command.c:1953 command.c:1967 command.c:1984 command.c:2022 #: common.c:137 copy.c:283 copy.c:361 #, c-format msgid "%s: %s\n" @@ -170,7 +217,7 @@ msgstr "%s: %s\n" # command.c:939 # startup.c:187 # startup.c:205 -#: command.c:1194 startup.c:159 +#: command.c:1438 startup.c:159 msgid "Password: " msgstr "口令:" @@ -178,7 +225,7 @@ msgstr "口令:" # command.c:939 # startup.c:187 # startup.c:205 -#: command.c:1201 startup.c:162 startup.c:164 +#: command.c:1445 startup.c:162 startup.c:164 #, c-format msgid "Password for user %s: " msgstr "用户 %s 的口令:" @@ -188,50 +235,54 @@ msgstr "用户 %s 的口令:" # common.c:605 # common.c:660 # common.c:903 -#: command.c:1318 command.c:2207 common.c:183 common.c:460 common.c:525 -#: common.c:816 common.c:841 common.c:925 copy.c:432 copy.c:477 copy.c:606 +#: command.c:1564 command.c:2564 common.c:183 common.c:460 common.c:525 +#: common.c:816 common.c:841 common.c:925 copy.c:432 copy.c:477 copy.c:607 #, c-format msgid "%s" msgstr "%s" # command.c:957 -#: command.c:1322 +#: command.c:1568 msgid "Previous connection kept\n" msgstr "保留上一次连线\n" # command.c:969 -#: command.c:1326 +#: command.c:1572 #, c-format msgid "\\connect: %s" msgstr "\\连线:%s" # command.c:981 -#: command.c:1350 -#, c-format -msgid "You are now connected to database \"%s\"" -msgstr "您现在已经连线到资料库 \"%s\"。" - -#: command.c:1353 +#: command.c:1605 #, c-format -msgid " on host \"%s\"" -msgstr " 在 \"%s\" 主机上" +msgid "" +"You are now connected to database \"%s\" as user \"%s\" via socket in \"%s\" " +"at port \"%s\".\n" +msgstr "" +"您现在已经连线到数据库 \"%s\", 用户名 \"%s\" , 套接字 \"%s\", 端口号 \"%s" +"\".\n" -#: command.c:1356 +# command.c:981 +#: command.c:1608 #, c-format -msgid " at port \"%s\"" -msgstr " 埠号 \"%s\"" +msgid "" +"You are now connected to database \"%s\" as user \"%s\" on host \"%s\" at " +"port \"%s\".\n" +msgstr "" +"您现在已经连线到数据库 \"%s\", 用户 \"%s\",主机 \"%s\",端口号 \"%s\".\n" -#: command.c:1359 +# command.c:981 +#: command.c:1612 #, c-format -msgid " as user \"%s\"" -msgstr " 用户 \"%s\"" +msgid "You are now connected to database \"%s\" as user \"%s\".\n" +msgstr "您现在已经连线到数据库 \"%s\",用户 \"%s\".\n" -#: command.c:1394 +#: command.c:1646 #, c-format msgid "%s (%s, server %s)\n" msgstr "%s (%s, 服务器 %s)\n" -#: command.c:1402 +#: command.c:1654 #, c-format msgid "" "WARNING: %s version %d.%d, server version %d.%d.\n" @@ -241,7 +292,7 @@ msgstr "" "一些psql功能可能无法工作.\n" # startup.c:652 -#: command.c:1432 +#: command.c:1684 #, c-format msgid "SSL connection (cipher: %s, bits: %i)\n" msgstr "" @@ -249,12 +300,12 @@ msgstr "" "\n" # startup.c:652 -#: command.c:1442 +#: command.c:1694 #, c-format msgid "SSL connection (unknown cipher)\n" msgstr "SSL连接 (未知加密)\n" -#: command.c:1463 +#: command.c:1715 #, c-format msgid "" "WARNING: Console code page (%u) differs from Windows code page (%u)\n" @@ -265,31 +316,37 @@ msgstr "" " 8-bit 字元可能无法正常工作。查阅 psql 参考\n" " 页 \"Windows 用户注意事项\" 的详细说明。\n" +#: command.c:1799 +msgid "" +"environment variable PSQL_EDITOR_LINENUMBER_ARG must be set to specify a " +"line number\n" +msgstr "必须设置环境变量 PSQL_EDITOR_LINENUMBER_ARG,用于指定行号\n" + # command.c:1103 -#: command.c:1552 +#: command.c:1836 #, c-format msgid "could not start editor \"%s\"\n" msgstr "无法启动编辑器 \"%s\"\n" # command.c:1105 -#: command.c:1554 +#: command.c:1838 msgid "could not start /bin/sh\n" msgstr "无法启动 /bin/sh\n" # command.c:1148 -#: command.c:1591 +#: command.c:1876 #, c-format -msgid "cannot locate temporary directory: %s" -msgstr "找不到暂存目录:%s" +msgid "could not locate temporary directory: %s\n" +msgstr "找不到暂存目录:%s\n" # command.c:1148 -#: command.c:1618 +#: command.c:1903 #, c-format msgid "could not open temporary file \"%s\": %s\n" msgstr "无法开启暂存档 \"%s\": %s\n" # command.c:1340 -#: command.c:1839 +#: command.c:2133 msgid "" "\\pset: allowed formats are unaligned, aligned, wrapped, html, latex, troff-" "ms\n" @@ -297,143 +354,143 @@ msgstr "" "\\pset:可以使用的格式有unaligned, aligned, wrapped, html, latex, troff-ms\n" # command.c:1345 -#: command.c:1844 +#: command.c:2138 #, c-format msgid "Output format is %s.\n" msgstr "输出格式是 %s。\n" -#: command.c:1860 +#: command.c:2154 msgid "\\pset: allowed line styles are ascii, old-ascii, unicode\n" msgstr "\\pset: 所允许使用的文本风格是ASCII, OLD-ASCII, UNICODE\n" # command.c:1355 -#: command.c:1865 +#: command.c:2159 #, c-format msgid "Line style is %s.\n" msgstr "文本的风格是%s. \n" # command.c:1355 -#: command.c:1876 +#: command.c:2170 #, c-format msgid "Border style is %d.\n" msgstr "边界风格是 %d。\n" # command.c:1364 -#: command.c:1888 +#: command.c:2182 #, c-format msgid "Expanded display is on.\n" msgstr "扩展显示已打开。\n" # command.c:1365 -#: command.c:1889 +#: command.c:2183 #, c-format msgid "Expanded display is off.\n" msgstr "扩展显示已关闭。\n" -#: command.c:1902 +#: command.c:2196 msgid "Showing locale-adjusted numeric output." msgstr "显示语言环境调整后的数字输出。" -#: command.c:1904 +#: command.c:2198 msgid "Locale-adjusted numeric output is off." msgstr "语言环境调整后的数值输出关闭。" # command.c:1377 -#: command.c:1917 +#: command.c:2211 #, c-format msgid "Null display is \"%s\".\n" msgstr " \"%s\" 是空值显示。\n" # command.c:1389 -#: command.c:1929 +#: command.c:2223 #, c-format msgid "Field separator is \"%s\".\n" msgstr "栏位分隔符号是 \"%s\"。\n" # command.c:1403 -#: command.c:1943 +#: command.c:2237 #, c-format msgid "Record separator is ." msgstr "记录分隔符号是 。" # command.c:1405 -#: command.c:1945 +#: command.c:2239 #, c-format msgid "Record separator is \"%s\".\n" msgstr "记录分隔符号是 \"%s\"。\n" # command.c:1416 -#: command.c:1959 +#: command.c:2253 msgid "Showing only tuples." msgstr "只显示 Tuples。" # command.c:1418 -#: command.c:1961 +#: command.c:2255 msgid "Tuples only is off." msgstr "关闭只显示 Tuples。" # command.c:1434 -#: command.c:1977 +#: command.c:2271 #, c-format msgid "Title is \"%s\".\n" msgstr "标题是 \"%s\"。\n" # command.c:1436 -#: command.c:1979 +#: command.c:2273 #, c-format msgid "Title is unset.\n" msgstr "无标题。\n" # command.c:1452 -#: command.c:1995 +#: command.c:2289 #, c-format msgid "Table attribute is \"%s\".\n" msgstr "资料表属性是 \"%s\"。\n" # command.c:1454 -#: command.c:1997 +#: command.c:2291 #, c-format msgid "Table attributes unset.\n" msgstr "未设置资料表属性。\n" # command.c:1470 -#: command.c:2018 +#: command.c:2312 msgid "Pager is used for long output." msgstr "显示大量资料时使用分页器。" # command.c:1472 -#: command.c:2020 +#: command.c:2314 msgid "Pager is always used." msgstr "总是使用分页器。" # command.c:1474 -#: command.c:2022 +#: command.c:2316 msgid "Pager usage is off." msgstr "不使用分页器。" # command.c:1485 -#: command.c:2036 +#: command.c:2330 msgid "Default footer is on." msgstr "打开预设步进器(Footer)。" # command.c:1487 -#: command.c:2038 +#: command.c:2332 msgid "Default footer is off." msgstr "关闭预设步进器(Footer)。" -#: command.c:2049 +#: command.c:2343 #, c-format msgid "Target width for \"wrapped\" format is %d.\n" msgstr "对于\"wrapped\"格式的目标长度是%d.\n" # command.c:1493 -#: command.c:2054 +#: command.c:2348 #, c-format msgid "\\pset: unknown option: %s\n" msgstr "\\pset: 不明选项: %s\n" # command.c:1532 -#: command.c:2108 +#: command.c:2402 msgid "\\!: failed\n" msgstr "\\!:失败\n" @@ -443,11 +500,6 @@ msgstr "\\!:失败\n" msgid "%s: pg_strdup: cannot duplicate null pointer (internal error)\n" msgstr "%s:pg_strdup : 无法复制空指标 (内部错误)\n" -# common.c:123 -#: common.c:90 -msgid "out of memory" -msgstr "记忆体用尽" - # common.c:298 #: common.c:343 msgid "connection to server was lost\n" @@ -468,12 +520,6 @@ msgstr "失败。\n" msgid "Succeeded.\n" msgstr "完成。\n" -# common.c:636 -# common.c:871 -#: common.c:493 common.c:773 -msgid "You are currently not connected to a database.\n" -msgstr "你目前没有与资料库连线。\n" - #: common.c:499 common.c:506 common.c:799 #, c-format msgid "" @@ -588,54 +634,54 @@ msgstr "" "输入要复制的资料并且换行。\n" "在独立的一行上输入一个反斜线和一个句点结束。" -#: copy.c:599 +#: copy.c:600 msgid "aborted because of read failure" msgstr "因读取失败已被中止" # help.c:48 -#: help.c:52 +#: help.c:48 msgid "on" msgstr "开启" # help.c:48 -#: help.c:52 +#: help.c:48 msgid "off" msgstr "关闭" # help.c:70 -#: help.c:74 +#: help.c:70 #, c-format msgid "could not get current user name: %s\n" msgstr "无法取得目前的用户名称:%s\n" # help.c:83 -#: help.c:86 +#: help.c:82 #, c-format msgid "" "psql is the PostgreSQL interactive terminal.\n" "\n" msgstr "psql是PostgreSQL 的交互式客户端工具。\n" -#: help.c:87 +#: help.c:83 #, c-format msgid "Usage:\n" msgstr "使用方法:\n" # help.c:86 -#: help.c:88 +#: help.c:84 #, c-format msgid "" " psql [OPTION]... [DBNAME [USERNAME]]\n" "\n" msgstr " psql [选项]... [数据库名称 [用户名称]]\n" -#: help.c:90 +#: help.c:86 #, c-format msgid "General options:\n" msgstr "通用选项:\n" # help.c:94 -#: help.c:95 +#: help.c:91 #, c-format msgid "" " -c, --command=COMMAND run only single command (SQL or internal) and " @@ -643,26 +689,26 @@ msgid "" msgstr " -c,--command=命令 执行单一命令(SQL或内部指令)然后结束\n" # help.c:93 -#: help.c:96 +#: help.c:92 #, c-format msgid "" " -d, --dbname=DBNAME database name to connect to (default: \"%s\")\n" msgstr " -d, --dbname=数据库名称 指定要连接的数据库 (缺省:\"%s\")\n" # help.c:95 -#: help.c:97 +#: help.c:93 #, c-format msgid " -f, --file=FILENAME execute commands from file, then exit\n" msgstr " -f, --file=文件名 从文件中执行命令然后退出\n" # help.c:96 -#: help.c:98 +#: help.c:94 #, c-format msgid " -l, --list list available databases, then exit\n" msgstr " -l, --list 列出所有可用的数据库,然后退出\n" # help.c:97 -#: help.c:99 +#: help.c:95 #, c-format msgid "" " -v, --set=, --variable=NAME=VALUE\n" @@ -672,12 +718,12 @@ msgstr "" " 为psql变量(名称)设定值\n" # help.c:98 -#: help.c:101 +#: help.c:97 #, c-format msgid " -X, --no-psqlrc do not read startup file (~/.psqlrc)\n" msgstr " -X, --no-psqlrc 不读取启动文档(~/.psqlrc)\n" -#: help.c:102 +#: help.c:98 #, c-format msgid "" " -1 (\"one\"), --single-transaction\n" @@ -686,18 +732,18 @@ msgstr "" " -1 (\"one\"), --single-transaction\n" " 作为一个单一事务来执行命令文件\n" -#: help.c:104 +#: help.c:100 #, c-format msgid " --help show this help, then exit\n" msgstr " --help 显示此帮助信息, 然后退出\n" -#: help.c:105 +#: help.c:101 #, c-format msgid " --version output version information, then exit\n" msgstr " --version 输出版本信息, 然后退出\n" # help.c:102 -#: help.c:107 +#: help.c:103 #, c-format msgid "" "\n" @@ -707,58 +753,58 @@ msgstr "" "输入和输出选项:\n" # help.c:103 -#: help.c:108 +#: help.c:104 #, c-format msgid " -a, --echo-all echo all input from script\n" msgstr " -a, --echo-all 显示所有来自于脚本的输入\n" # help.c:104 -#: help.c:109 +#: help.c:105 #, c-format msgid " -e, --echo-queries echo commands sent to server\n" msgstr " -e, --echo-queries 显示发送给服务器的命令\n" # help.c:105 -#: help.c:110 +#: help.c:106 #, c-format msgid "" " -E, --echo-hidden display queries that internal commands generate\n" msgstr " -E, --echo-hidden 显示内部命令产生的查询\n" # help.c:107 -#: help.c:111 +#: help.c:107 #, c-format msgid " -L, --log-file=FILENAME send session log to file\n" msgstr " -L, --log-file=文件名 将会话日志写入文件\n" # help.c:108 -#: help.c:112 +#: help.c:108 #, c-format msgid "" " -n, --no-readline disable enhanced command line editing (readline)\n" msgstr " -n, --no-readline 禁用增强命令行编辑功能(readline)\n" # help.c:107 -#: help.c:113 +#: help.c:109 #, c-format msgid " -o, --output=FILENAME send query results to file (or |pipe)\n" msgstr " -o, --output=FILENAME 将查询结果写入文件(或 |管道)\n" # help.c:106 -#: help.c:114 +#: help.c:110 #, c-format msgid "" " -q, --quiet run quietly (no messages, only query output)\n" msgstr " -q, --quiet 以沉默模式运行(不显示消息,只有查询结果)\n" # help.c:109 -#: help.c:115 +#: help.c:111 #, c-format msgid " -s, --single-step single-step mode (confirm each query)\n" msgstr " -s, --single-step 单步模式 (确认每个查询)\n" # help.c:110 -#: help.c:116 +#: help.c:112 #, c-format msgid "" " -S, --single-line single-line mode (end of line terminates SQL " @@ -766,7 +812,7 @@ msgid "" msgstr " -S, --single-line 单行模式 (一行就是一条 SQL 命令)\n" # help.c:112 -#: help.c:118 +#: help.c:114 #, c-format msgid "" "\n" @@ -776,13 +822,13 @@ msgstr "" "输出格式选项 :\n" # help.c:113 -#: help.c:119 +#: help.c:115 #, c-format msgid " -A, --no-align unaligned table output mode\n" msgstr " -A, --no-align 使用非对齐表格输出模式\n" # help.c:119 -#: help.c:120 +#: help.c:116 #, c-format msgid "" " -F, --field-separator=STRING\n" @@ -792,13 +838,13 @@ msgstr "" " 设字段分隔符(缺省:\"%s\")\n" # help.c:114 -#: help.c:123 +#: help.c:119 #, c-format msgid " -H, --html HTML table output mode\n" msgstr " -H, --html HTML 表格输出模式\n" # help.c:118 -#: help.c:124 +#: help.c:120 #, c-format msgid "" " -P, --pset=VAR[=ARG] set printing option VAR to ARG (see \\pset " @@ -807,7 +853,7 @@ msgstr "" " -P, --pset=变量[=参数] 设置将变量打印到参数的选项(查阅 \\pset 命令)\n" # help.c:121 -#: help.c:125 +#: help.c:121 #, c-format msgid "" " -R, --record-separator=STRING\n" @@ -817,13 +863,13 @@ msgstr "" " 设定记录分隔符(缺省:换行符号)\n" # help.c:115 -#: help.c:127 +#: help.c:123 #, c-format msgid " -t, --tuples-only print rows only\n" msgstr " -t, --tuples-only 只打印记录i\n" # help.c:116 -#: help.c:128 +#: help.c:124 #, c-format msgid "" " -T, --table-attr=TEXT set HTML table tag attributes (e.g., width, " @@ -831,12 +877,12 @@ msgid "" msgstr " -T, --table-attr=文本 设定 HTML 表格标记属性(例如,宽度,边界)\n" # help.c:117 -#: help.c:129 +#: help.c:125 #, c-format msgid " -x, --expanded turn on expanded table output\n" msgstr " -x, --expanded 打开扩展表格输出\n" -#: help.c:131 +#: help.c:127 #, c-format msgid "" "\n" @@ -846,7 +892,7 @@ msgstr "" "联接选项:\n" # help.c:126 -#: help.c:134 +#: help.c:130 #, c-format msgid "" " -h, --host=HOSTNAME database server host or socket directory " @@ -855,28 +901,28 @@ msgstr "" " -h, --host=主机名 数据库服务器主机或socket目录(缺省:\"%s\")\n" # help.c:127 -#: help.c:135 +#: help.c:131 msgid "local socket" msgstr "本地接口" # help.c:130 -#: help.c:138 +#: help.c:134 #, c-format msgid " -p, --port=PORT database server port (default: \"%s\")\n" msgstr " -p, --port=端口 数据库服务器的端口(缺省:\"%s\")\n" # help.c:136 -#: help.c:144 +#: help.c:140 #, c-format msgid " -U, --username=USERNAME database user name (default: \"%s\")\n" msgstr " -U, --username=用户名 指定数据库用户名(缺省:\"%s\")\n" -#: help.c:145 +#: help.c:141 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password 永远不提示输入口令\n" -#: help.c:146 +#: help.c:142 #, c-format msgid "" " -W, --password force password prompt (should happen " @@ -884,7 +930,7 @@ msgid "" msgstr " -W, --password 强制口令提示 (自动)\n" # help.c:140 -#: help.c:148 +#: help.c:144 #, c-format msgid "" "\n" @@ -899,33 +945,33 @@ msgstr "" "或者参考PostgreSQL文档中的psql章节.\n" "\n" -#: help.c:151 +#: help.c:147 #, c-format msgid "Report bugs to .\n" msgstr "臭虫报告至 .\n" # help.c:174 -#: help.c:169 +#: help.c:170 #, c-format msgid "General\n" msgstr "一般性\n" # help.c:179 -#: help.c:170 +#: help.c:171 #, c-format msgid "" " \\copyright show PostgreSQL usage and distribution terms\n" msgstr " \\copyright 显示PostgreSQL的使用和发行许可条款\n" # help.c:194 -#: help.c:171 +#: help.c:172 #, c-format msgid "" " \\g [FILE] or ; execute query (and send results to file or |pipe)\n" msgstr " \\g [文件] or; 执行查询 (并把结果写入文件或 |管道)\n" # help.c:182 -#: help.c:172 +#: help.c:173 #, c-format msgid "" " \\h [NAME] help on syntax of SQL commands, * for all " @@ -933,64 +979,64 @@ msgid "" msgstr " \\h [名称] SQL命令语法上的说明,用*显示全部命令的语法说明\n" # help.c:183 -#: help.c:173 +#: help.c:174 #, c-format msgid " \\q quit psql\n" msgstr " \\q 退出 psql\n" # help.c:192 -#: help.c:176 +#: help.c:177 #, c-format msgid "Query Buffer\n" msgstr "查询缓存区\n" # help.c:193 -#: help.c:177 +#: help.c:178 #, c-format msgid "" -" \\e [FILE] edit the query buffer (or file) with external " +" \\e [FILE] [LINE] edit the query buffer (or file) with external " "editor\n" -msgstr " \\e [文件] 使用外部编辑器编辑查询缓存区(或文件)\n" +msgstr " \\e [FILE] [LINE] 使用外部编辑器编辑查询缓存区(或文件)\n" # help.c:193 -#: help.c:178 +#: help.c:179 #, c-format msgid "" -" \\ef [FUNCNAME] edit function definition with external editor\n" -msgstr " \\ef [函数名称] 使用外部编辑器编辑函数定义\n" +" \\ef [FUNCNAME [LINE]] edit function definition with external editor\n" +msgstr " \\ef [FUNCNAME [LINE]] 使用外部编辑器编辑函数定义\n" # help.c:195 -#: help.c:179 +#: help.c:180 #, c-format msgid " \\p show the contents of the query buffer\n" msgstr " \\p 显示查询缓存区的内容\n" # help.c:196 -#: help.c:180 +#: help.c:181 #, c-format msgid " \\r reset (clear) the query buffer\n" msgstr " \\r 重置(清除)查询缓存区\n" # help.c:198 -#: help.c:182 +#: help.c:183 #, c-format msgid " \\s [FILE] display history or save it to file\n" msgstr " \\s [文件] 显示历史记录或将历史记录保存在文件中\n" # help.c:200 -#: help.c:184 +#: help.c:185 #, c-format msgid " \\w FILE write query buffer to file\n" msgstr " \\w 文件 将查询缓存区的内容写入文件\n" # help.c:203 -#: help.c:187 +#: help.c:188 #, c-format msgid "Input/Output\n" msgstr "输入/输出\n" # help.c:251 -#: help.c:188 +#: help.c:189 #, c-format msgid "" " \\copy ... perform SQL COPY with data stream to the client " @@ -998,248 +1044,284 @@ msgid "" msgstr " \\copy ... 执行 SQL COPY,将数据流发送到客户端主机\n" # help.c:204 -#: help.c:189 +#: help.c:190 #, c-format msgid " \\echo [STRING] write string to standard output\n" msgstr " \\echo [字符串] 将字符串写到标准输出\n" # help.c:205 -#: help.c:190 +#: help.c:191 #, c-format msgid " \\i FILE execute commands from file\n" msgstr " \\i 文件 从文件中执行命令\n" # help.c:206 -#: help.c:191 +#: help.c:192 #, c-format msgid " \\o [FILE] send all query results to file or |pipe\n" msgstr " \\o [文件] 将全部查询结果写入文件或 |管道\n" # help.c:207 -#: help.c:192 +#: help.c:193 #, c-format msgid "" " \\qecho [STRING] write string to query output stream (see \\o)\n" msgstr " \\qecho [字符串] 将字符串写到查询输出串流(参考 \\o)\n" # help.c:211 -#: help.c:195 +#: help.c:196 #, c-format msgid "Informational\n" msgstr "资讯性\n" -#: help.c:196 +#: help.c:197 #, c-format msgid " (options: S = show system objects, + = additional detail)\n" msgstr " (选项: S = 显示系统对象, + = 其余的详细信息)\n" # help.c:226 -#: help.c:197 +#: help.c:198 #, c-format msgid " \\d[S+] list tables, views, and sequences\n" msgstr " \\d[S+] 列出表,视图和序列\n" # help.c:212 -#: help.c:198 +#: help.c:199 #, c-format msgid " \\d[S+] NAME describe table, view, sequence, or index\n" msgstr " \\d[S+] 名称 描述表,视图,序列,或索引\n" # help.c:215 -#: help.c:199 +#: help.c:200 #, c-format msgid " \\da[S] [PATTERN] list aggregates\n" msgstr " \\da[S] [模式] 列出聚合函数\n" # help.c:228 -#: help.c:200 +#: help.c:201 #, c-format msgid " \\db[+] [PATTERN] list tablespaces\n" msgstr " \\db[+] [模式] 列出表空间\n" # help.c:217 -#: help.c:201 +#: help.c:202 #, c-format msgid " \\dc[S] [PATTERN] list conversions\n" msgstr " \\dc[S] [模式] 列出字元编码转换\n" # help.c:218 -#: help.c:202 +#: help.c:203 #, c-format msgid " \\dC [PATTERN] list casts\n" msgstr " \\dC [模式] 列出类型强制转换\n" # help.c:219 -#: help.c:203 +#: help.c:204 #, c-format msgid " \\dd[S] [PATTERN] show comments on objects\n" msgstr " \\dd[S] [模式] 显示对象的注释\n" # help.c:218 -#: help.c:204 +#: help.c:205 #, c-format msgid " \\ddp [PATTERN] list default privileges\n" msgstr " \\ddp [模式] 列出缺省权限\n" # help.c:220 -#: help.c:205 +#: help.c:206 #, c-format msgid " \\dD[S] [PATTERN] list domains\n" msgstr " \\dD[S] [模式] 列出共同值域\n" # help.c:228 -#: help.c:206 +#: help.c:207 +#, c-format +msgid " \\det[+] [PATTERN] list foreign tables\n" +msgstr " \\det[+] [PATTERN] 列出引用表\n" + +# help.c:228 +#: help.c:208 #, c-format msgid " \\des[+] [PATTERN] list foreign servers\n" msgstr " \\des[+] [模式] 列出外部服务器\n" # help.c:228 -#: help.c:207 +#: help.c:209 #, c-format msgid " \\deu[+] [PATTERN] list user mappings\n" msgstr " \\deu[+] [模式] 列出用户映射\n" # help.c:222 -#: help.c:208 +#: help.c:210 #, c-format msgid " \\dew[+] [PATTERN] list foreign-data wrappers\n" msgstr " \\dew[+] [模式] 列出外部数据封装器\n" # help.c:215 -#: help.c:209 +#: help.c:211 #, c-format msgid "" " \\df[antw][S+] [PATRN] list [only agg/normal/trigger/window] functions\n" msgstr " \\df[antw][S+] [模式] 列出[只包括 聚合/常规/触发器/窗口]函数 \n" # help.c:221 -#: help.c:210 +#: help.c:212 #, c-format msgid " \\dF[+] [PATTERN] list text search configurations\n" msgstr " \\dF[+] [模式] 列出文本搜索配置\n" # help.c:228 -#: help.c:211 +#: help.c:213 #, c-format msgid " \\dFd[+] [PATTERN] list text search dictionaries\n" msgstr " \\dFd[+] [模式] 列出文本搜寻字典\n" # help.c:228 -#: help.c:212 +#: help.c:214 #, c-format msgid " \\dFp[+] [PATTERN] list text search parsers\n" msgstr " \\dFp[+] [模式] 列出文本搜索解析器\n" # help.c:228 -#: help.c:213 +#: help.c:215 #, c-format msgid " \\dFt[+] [PATTERN] list text search templates\n" msgstr " \\dFt[+] [模式] 列出文本搜索模版\n" # help.c:222 -#: help.c:214 +#: help.c:216 #, c-format -msgid " \\dg[+] [PATTERN] list roles (groups)\n" -msgstr " \\dg[+] [模式] 列出角色(或组)\n" +msgid " \\dg[+] [PATTERN] list roles\n" +msgstr " \\dg[+] [PATTERN] 列出角色\n" # help.c:220 -#: help.c:215 +#: help.c:217 #, c-format msgid " \\di[S+] [PATTERN] list indexes\n" msgstr " \\di[S+] [模式] 列出索引\n" # help.c:225 -#: help.c:216 +#: help.c:218 #, c-format msgid " \\dl list large objects, same as \\lo_list\n" msgstr " \\dl 列出大对象, 功能与\\lo_list相同\n" # help.c:228 -#: help.c:217 +#: help.c:219 +#, c-format +msgid " \\dL[S+] [PATTERN] list procedural languages\n" +msgstr " \\dL[S+] [PATTERN] 列出所有过程语言\n" + +# help.c:228 +#: help.c:220 #, c-format -msgid " \\dn[+] [PATTERN] list schemas\n" -msgstr " \\dn[+] [模式] 列出模式\n" +msgid " \\dn[S+] [PATTERN] list schemas\n" +msgstr " \\dn[S+] [PATTERN] 列出所有模式\n" # help.c:224 -#: help.c:218 +#: help.c:221 #, c-format msgid " \\do[S] [PATTERN] list operators\n" msgstr " \\do[S] [模式] 列出运算符\n" +# help.c:220 +#: help.c:222 +#, c-format +msgid " \\dO[S+] [PATTERN] list collations\n" +msgstr " \\dO[S+] [PATTERN] 列出所有校对规则\n" + # help.c:226 -#: help.c:219 +#: help.c:223 #, c-format msgid "" " \\dp [PATTERN] list table, view, and sequence access privileges\n" msgstr " \\dp [模式] 列出表,视图和序列的访问权限\n" -#: help.c:220 +#: help.c:224 #, c-format msgid " \\drds [PATRN1 [PATRN2]] list per-database role settings\n" msgstr " \\drds [模式1 [模式2]] 列出每个数据库的角色设置\n" # help.c:228 -#: help.c:221 +#: help.c:225 #, c-format msgid " \\ds[S+] [PATTERN] list sequences\n" msgstr " \\ds[S+] [模式] 列出序列\n" # help.c:228 -#: help.c:222 +#: help.c:226 #, c-format msgid " \\dt[S+] [PATTERN] list tables\n" msgstr " \\dt[S+] [模式] 列出表\n" # help.c:220 -#: help.c:223 +#: help.c:227 #, c-format msgid " \\dT[S+] [PATTERN] list data types\n" msgstr " \\dT[S+] [模式] 列出数据类型\n" # help.c:228 -#: help.c:224 +#: help.c:228 #, c-format -msgid " \\du[+] [PATTERN] list roles (users)\n" -msgstr " \\du[+] [模式] 列出角色(用户)\n" +msgid " \\du[+] [PATTERN] list roles\n" +msgstr " \\du[+] [PATTERN] 列出角色\n" # help.c:228 -#: help.c:225 +#: help.c:229 #, c-format msgid " \\dv[S+] [PATTERN] list views\n" msgstr " \\dv[S+] [模式] 列出视图\n" -#: help.c:226 +# help.c:228 +#: help.c:230 +#, c-format +msgid " \\dE[S+] [PATTERN] list foreign tables\n" +msgstr " \\dE[S+] [PATTERN] 列出引用表\n" + +# help.c:217 +#: help.c:231 +#, c-format +msgid " \\dx[+] [PATTERN] list extensions\n" +msgstr " \\dx[+] [PATTERN] 列出扩展\n" + +#: help.c:232 #, c-format msgid " \\l[+] list all databases\n" msgstr " \\l[+] 列出所有的数据库\n" +# help.c:193 +#: help.c:233 +#, c-format +msgid " \\sf[+] FUNCNAME show a function's definition\n" +msgstr " \\sf[+] FUNCNAME 显示函数定义\n" + # help.c:218 -#: help.c:227 +#: help.c:234 #, c-format msgid " \\z [PATTERN] same as \\dp\n" msgstr " \\z [模式] 和\\dp的功能相同\n" # help.c:233 -#: help.c:230 +#: help.c:237 #, c-format msgid "Formatting\n" msgstr "格式化\n" # help.c:234 -#: help.c:231 +#: help.c:238 #, c-format msgid "" " \\a toggle between unaligned and aligned output mode\n" msgstr " \\a 在非对齐模式和对齐模式之间切换\n" # help.c:235 -#: help.c:232 +#: help.c:239 #, c-format msgid " \\C [STRING] set table title, or unset if none\n" msgstr " \\C [字符串] 设置表的标题,或如果没有的标题就取消\n" # help.c:236 -#: help.c:233 +#: help.c:240 #, c-format msgid "" " \\f [STRING] show or set field separator for unaligned query " @@ -1247,13 +1329,13 @@ msgid "" msgstr " \\f [字符串] 显示或设定非对齐模式查询输出的字段分隔符\n" # help.c:237 -#: help.c:234 +#: help.c:241 #, c-format msgid " \\H toggle HTML output mode (currently %s)\n" msgstr " \\H 切换HTML输出模式 (目前是 %s)\n" # help.c:239 -#: help.c:236 +#: help.c:243 #, c-format msgid "" " \\pset NAME [VALUE] set table output option\n" @@ -1267,13 +1349,13 @@ msgstr "" " recordsep|tuples_only|title|tableattr|pager})\n" # help.c:243 -#: help.c:239 +#: help.c:246 #, c-format msgid " \\t [on|off] show only rows (currently %s)\n" msgstr " \\t [开|关] 只显示记录 (目前是 %s)\n" # help.c:245 -#: help.c:241 +#: help.c:248 #, c-format msgid "" " \\T [STRING] set HTML
tag attributes, or unset if none\n" @@ -1281,19 +1363,19 @@ msgstr "" " \\T [字符串] 设置HTML <表格>标签属性, 或者如果没有的话取消设置\n" # help.c:246 -#: help.c:242 +#: help.c:249 #, c-format msgid " \\x [on|off] toggle expanded output (currently %s)\n" msgstr " \\x [开|关] 切换扩展输出模式(目前是 %s)\n" # help.c:123 -#: help.c:246 +#: help.c:253 #, c-format msgid "Connection\n" msgstr "连接\n" # help.c:175 -#: help.c:247 +#: help.c:254 #, c-format msgid "" " \\c[onnect] [DBNAME|- USER|- HOST|- PORT|-]\n" @@ -1303,54 +1385,60 @@ msgstr "" " 连接到新的数据库(目前是 \"%s\")\n" # help.c:180 -#: help.c:250 +#: help.c:257 #, c-format msgid " \\encoding [ENCODING] show or set client encoding\n" msgstr " \\encoding [编码名称] 显示或设定客户端编码\n" -#: help.c:251 +#: help.c:258 #, c-format msgid " \\password [USERNAME] securely change the password for a user\n" msgstr " \\password [USERNAME] 安全地为用户改变口令\n" -#: help.c:254 +#: help.c:259 +#, c-format +msgid "" +" \\conninfo display information about current connection\n" +msgstr " \\conninfo 显示当前连接的相关信息\n" + +#: help.c:262 #, c-format msgid "Operating System\n" msgstr "操作系统\n" # help.c:178 -#: help.c:255 +#: help.c:263 #, c-format msgid " \\cd [DIR] change the current working directory\n" msgstr " \\cd [目录] 改变目前的工作目录\n" # help.c:186 -#: help.c:256 +#: help.c:264 #, c-format msgid " \\timing [on|off] toggle timing of commands (currently %s)\n" msgstr " \\timing [开|关] 切换命令计时开关 (目前是 %s)\n" # help.c:189 -#: help.c:258 +#: help.c:266 #, c-format msgid "" " \\! [COMMAND] execute command in shell or start interactive " "shell\n" msgstr " \\! [命令] 在 shell中执行命令或启动一个交互式shell\n" -#: help.c:261 +#: help.c:269 #, c-format msgid "Variables\n" msgstr "变量\n" # help.c:188 -#: help.c:262 +#: help.c:270 #, c-format msgid " \\prompt [TEXT] NAME prompt user to set internal variable\n" msgstr " \\prompt [文本] 名称 提示用户设定内部变量\n" # help.c:184 -#: help.c:263 +#: help.c:271 #, c-format msgid "" " \\set [NAME [VALUE]] set internal variable, or list all if no " @@ -1358,19 +1446,19 @@ msgid "" msgstr " \\set [名称 [值数]] 设定内部变量,若无参数则列出全部变量\n" # help.c:188 -#: help.c:264 +#: help.c:272 #, c-format msgid " \\unset NAME unset (delete) internal variable\n" msgstr " \\unset 名称 清空(删除)内部变量\n" # large_obj.c:264 -#: help.c:267 +#: help.c:275 #, c-format msgid "Large Objects\n" msgstr "大对象\n" # help.c:252 -#: help.c:268 +#: help.c:276 #, c-format msgid "" " \\lo_export LOBOID FILE\n" @@ -1384,12 +1472,12 @@ msgstr "" " \\lo_unlink LOBOID 大对象运算\n" # help.c:285 -#: help.c:321 +#: help.c:323 msgid "Available help:\n" msgstr "可用的说明:\n" # help.c:344 -#: help.c:410 +#: help.c:407 #, c-format msgid "" "Command: %s\n" @@ -1405,7 +1493,7 @@ msgstr "" "\n" # help.c:357 -#: help.c:426 +#: help.c:423 #, c-format msgid "" "No help available for \"%s\".\n" @@ -1458,8 +1546,9 @@ msgstr "ID" # describe.c:362 # describe.c:1478 # describe.c:1727 -#: large_obj.c:290 describe.c:146 describe.c:334 describe.c:613 describe.c:762 -#: describe.c:2381 describe.c:2681 describe.c:3310 describe.c:3369 +#: large_obj.c:290 describe.c:147 describe.c:335 describe.c:637 describe.c:787 +#: describe.c:2513 describe.c:2631 describe.c:2975 describe.c:3606 +#: describe.c:3671 msgid "Owner" msgstr "拥有者" @@ -1473,11 +1562,11 @@ msgstr "拥有者" # describe.c:1488 # describe.c:1733 # large_obj.c:256 -#: large_obj.c:291 large_obj.c:301 describe.c:95 describe.c:158 describe.c:337 -#: describe.c:490 describe.c:566 describe.c:637 describe.c:827 describe.c:1318 -#: describe.c:2205 describe.c:2395 describe.c:2689 describe.c:2751 -#: describe.c:2887 describe.c:2926 describe.c:2993 describe.c:3052 -#: describe.c:3061 describe.c:3120 +#: large_obj.c:291 large_obj.c:301 describe.c:96 describe.c:159 describe.c:338 +#: describe.c:501 describe.c:590 describe.c:661 describe.c:852 describe.c:1382 +#: describe.c:2330 describe.c:2537 describe.c:2918 describe.c:2983 +#: describe.c:3048 describe.c:3184 describe.c:3223 describe.c:3290 +#: describe.c:3349 describe.c:3358 describe.c:3417 describe.c:3856 msgid "Description" msgstr "描述" @@ -1546,12 +1635,12 @@ msgid_plural "(%lu rows)" msgstr[0] "(%lu 行记录)" # command.c:1148 -#: startup.c:237 +#: startup.c:243 #, c-format msgid "%s: could not open log file \"%s\": %s\n" msgstr "%s:无法开启日志档 \"%s\":%s\n" -#: startup.c:299 +#: startup.c:305 #, c-format msgid "" "Type \"help\" for help.\n" @@ -1561,38 +1650,38 @@ msgstr "" "\n" # startup.c:446 -#: startup.c:445 +#: startup.c:451 #, c-format msgid "%s: could not set printing parameter \"%s\"\n" msgstr "%s:无法设定列印参数 \"%s\"\n" # startup.c:492 -#: startup.c:484 +#: startup.c:490 #, c-format msgid "%s: could not delete variable \"%s\"\n" msgstr "%s:无法删除变数 \"%s\"\n" # startup.c:502 -#: startup.c:494 +#: startup.c:500 #, c-format msgid "%s: could not set variable \"%s\"\n" msgstr "%s:无法设定变数 \"%s\"\n" # startup.c:533 # startup.c:539 -#: startup.c:531 startup.c:537 +#: startup.c:537 startup.c:543 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "尝试 \"%s --help\" 以得到更多资讯。\n" # startup.c:557 -#: startup.c:554 +#: startup.c:560 #, c-format msgid "%s: warning: extra command-line argument \"%s\" ignored\n" msgstr "%s:警告:忽略多余的命令列参数 \"%s\"\n" # startup.c:629 -#: startup.c:619 +#: startup.c:625 msgid "contains support for command-line editing" msgstr "包含命令列编辑支援" @@ -1605,10 +1694,11 @@ msgstr "包含命令列编辑支援" # describe.c:1476 # describe.c:1585 # describe.c:1633 -#: describe.c:68 describe.c:235 describe.c:462 describe.c:561 describe.c:682 -#: describe.c:763 describe.c:824 describe.c:2373 describe.c:2494 -#: describe.c:2549 describe.c:2749 describe.c:2976 describe.c:3048 -#: describe.c:3059 describe.c:3118 +#: describe.c:69 describe.c:236 describe.c:463 describe.c:585 describe.c:706 +#: describe.c:788 describe.c:849 describe.c:2504 describe.c:2698 +#: describe.c:2768 describe.c:2910 describe.c:3046 describe.c:3273 +#: describe.c:3345 describe.c:3356 describe.c:3415 describe.c:3789 +#: describe.c:3855 msgid "Schema" msgstr "架构模式" @@ -1624,71 +1714,72 @@ msgstr "架构模式" # describe.c:1586 # describe.c:1634 # describe.c:1727 -#: describe.c:69 describe.c:145 describe.c:236 describe.c:463 describe.c:562 -#: describe.c:612 describe.c:683 describe.c:825 describe.c:2374 -#: describe.c:2495 describe.c:2550 describe.c:2680 describe.c:2750 -#: describe.c:2977 describe.c:3049 describe.c:3060 describe.c:3119 -#: describe.c:3309 describe.c:3368 +#: describe.c:70 describe.c:146 describe.c:237 describe.c:464 describe.c:586 +#: describe.c:636 describe.c:707 describe.c:850 describe.c:2505 +#: describe.c:2627 describe.c:2699 describe.c:2769 describe.c:2911 +#: describe.c:2974 describe.c:3047 describe.c:3274 describe.c:3346 +#: describe.c:3357 describe.c:3416 describe.c:3605 describe.c:3670 +#: describe.c:3853 msgid "Name" msgstr "名称" # describe.c:177 -#: describe.c:70 describe.c:248 describe.c:294 describe.c:311 +#: describe.c:71 describe.c:249 describe.c:295 describe.c:312 msgid "Result data type" msgstr "结果资料型别" # describe.c:178 -#: describe.c:84 describe.c:88 describe.c:249 describe.c:295 describe.c:312 +#: describe.c:85 describe.c:89 describe.c:250 describe.c:296 describe.c:313 msgid "Argument data types" msgstr "参数资料型别" # describe.c:97 -#: describe.c:113 +#: describe.c:114 msgid "List of aggregate functions" msgstr "聚集函数列表" # describe.c:117 -#: describe.c:134 +#: describe.c:135 #, c-format msgid "The server (version %d.%d) does not support tablespaces.\n" msgstr "服务器(版本%d.%d) 不支持使用表空间.\n" # describe.c:128 -#: describe.c:147 +#: describe.c:148 msgid "Location" msgstr "所在地" # describe.c:150 -#: describe.c:175 +#: describe.c:176 msgid "List of tablespaces" msgstr "表空间列表" -#: describe.c:212 +#: describe.c:213 #, c-format msgid "\\df only takes [antwS+] as options\n" msgstr "\\df 只能将 [antwS+]作为选项\n" -#: describe.c:218 +#: describe.c:219 #, c-format msgid "\\df does not take a \"w\" option with server version %d.%d\n" msgstr "\\df 不能有带着服务器版本%d.%d 的选项\"w\" \n" #. translator: "agg" is short for "aggregate" -#: describe.c:251 describe.c:297 describe.c:314 +#: describe.c:252 describe.c:298 describe.c:315 msgid "agg" msgstr "agg" -#: describe.c:252 +#: describe.c:253 msgid "window" msgstr "窗口" # describe.c:575 -#: describe.c:253 describe.c:298 describe.c:315 describe.c:964 +#: describe.c:254 describe.c:299 describe.c:316 describe.c:990 msgid "trigger" msgstr "触发器" # help.c:211 -#: describe.c:254 describe.c:299 describe.c:316 +#: describe.c:255 describe.c:300 describe.c:317 msgid "normal" msgstr "常规" @@ -1696,744 +1787,817 @@ msgstr "常规" # describe.c:745 # describe.c:1478 # describe.c:1587 -#: describe.c:255 describe.c:300 describe.c:317 describe.c:685 describe.c:767 -#: describe.c:1299 describe.c:2380 describe.c:2496 describe.c:3381 +#: describe.c:256 describe.c:301 describe.c:318 describe.c:710 describe.c:792 +#: describe.c:1362 describe.c:2512 describe.c:2700 describe.c:3683 msgid "Type" msgstr "型别" # describe.c:415 # describe.c:543 # describe.c:1477 -#: describe.c:330 +#: describe.c:331 msgid "immutable" msgstr "不可改变" # describe.c:415 # describe.c:543 # describe.c:1477 -#: describe.c:331 +#: describe.c:332 msgid "stable" msgstr "稳定" -#: describe.c:332 +#: describe.c:333 msgid "volatile" msgstr "不稳定性" -#: describe.c:333 +#: describe.c:334 msgid "Volatility" msgstr "挥发性" # describe.c:186 -#: describe.c:335 +#: describe.c:336 msgid "Language" msgstr "程序语言" # describe.c:187 -#: describe.c:336 +#: describe.c:337 msgid "Source code" msgstr "原始程式" # describe.c:221 -#: describe.c:434 +#: describe.c:435 msgid "List of functions" msgstr "函数列表" # describe.c:257 -#: describe.c:473 +#: describe.c:474 msgid "Internal name" msgstr "内部名称" # describe.c:257 -#: describe.c:474 describe.c:629 describe.c:2391 +#: describe.c:475 describe.c:653 describe.c:2529 describe.c:2533 msgid "Size" msgstr "大小" -#: describe.c:486 +#: describe.c:496 msgid "Elements" msgstr "成员" # describe.c:289 -#: describe.c:530 +#: describe.c:541 msgid "List of data types" msgstr "资料型别列表" # describe.c:321 -#: describe.c:563 +#: describe.c:587 msgid "Left arg type" msgstr "左参数型别" # describe.c:321 -#: describe.c:564 +#: describe.c:588 msgid "Right arg type" msgstr "右参数型别" # describe.c:322 -#: describe.c:565 +#: describe.c:589 msgid "Result type" msgstr "结果型别" # describe.c:336 -#: describe.c:584 +#: describe.c:608 msgid "List of operators" msgstr "运算子列表" # describe.c:365 -#: describe.c:614 +#: describe.c:638 msgid "Encoding" msgstr "字元编码" # describe.c:128 -#: describe.c:619 -msgid "Collation" -msgstr "排序规则" +#: describe.c:643 describe.c:2912 +msgid "Collate" +msgstr "校对规则" # describe.c:415 # describe.c:745 # describe.c:1478 # describe.c:1587 -#: describe.c:620 +#: describe.c:644 describe.c:2913 msgid "Ctype" msgstr "Ctype" # describe.c:1342 -#: describe.c:633 +#: describe.c:657 msgid "Tablespace" msgstr "表空间" # describe.c:381 -#: describe.c:650 +#: describe.c:674 msgid "List of databases" msgstr "资料库列表" # describe.c:415 # describe.c:543 # describe.c:1477 -#: describe.c:684 describe.c:764 describe.c:919 describe.c:2375 sql_help.c:443 -#: sql_help.c:660 sql_help.c:761 sql_help.c:1178 sql_help.c:1305 -#: sql_help.c:1339 sql_help.c:1574 sql_help.c:1723 sql_help.c:1884 -#: sql_help.c:1965 sql_help.c:2159 sql_help.c:2719 sql_help.c:2739 -#: sql_help.c:2741 sql_help.c:2742 +#: describe.c:708 describe.c:789 describe.c:944 describe.c:2506 sql_help.c:595 +#: sql_help.c:842 sql_help.c:969 sql_help.c:1432 sql_help.c:1562 +#: sql_help.c:1596 sql_help.c:1842 sql_help.c:2000 sql_help.c:2185 +#: sql_help.c:2266 sql_help.c:2472 sql_help.c:3103 sql_help.c:3123 +#: sql_help.c:3125 sql_help.c:3126 msgid "table" msgstr "资料表" # describe.c:415 # describe.c:543 # describe.c:1477 -#: describe.c:684 describe.c:920 describe.c:2376 +#: describe.c:708 describe.c:945 describe.c:2507 msgid "view" msgstr "视观表" # describe.c:415 # describe.c:543 # describe.c:1477 -#: describe.c:684 describe.c:765 describe.c:922 describe.c:2378 +#: describe.c:708 describe.c:790 describe.c:947 describe.c:2509 msgid "sequence" msgstr "序列数" +# describe.c:415 +# describe.c:543 +# describe.c:1477 +#: describe.c:709 describe.c:948 describe.c:2511 +msgid "foreign table" +msgstr "所引用的外表" + # sql_help.h:325 -#: describe.c:696 +#: describe.c:721 msgid "Column access privileges" msgstr "列访问权限" # describe.c:133 # describe.c:415 # describe.c:1733 -#: describe.c:722 describe.c:3476 describe.c:3480 +#: describe.c:747 describe.c:4000 describe.c:4004 msgid "Access privileges" msgstr "存取权限" # describe.c:117 -#: describe.c:750 +#: describe.c:775 #, c-format msgid "" "The server (version %d.%d) does not support altering default privileges.\n" msgstr "服务器(版本%d.%d)不支持修改缺省权限.\n" # describe.c:498 -#: describe.c:766 describe.c:858 +#: describe.c:791 describe.c:883 msgid "function" msgstr "函数" # sql_help.h:325 -#: describe.c:790 +#: describe.c:815 msgid "Default access privileges" msgstr "缺省的访问权限" # describe.c:469 -#: describe.c:826 +#: describe.c:851 msgid "Object" msgstr "物件" # describe.c:480 -#: describe.c:838 +#: describe.c:863 msgid "aggregate" msgstr "聚集函数" # describe.c:512 -#: describe.c:877 sql_help.c:1457 sql_help.c:2457 sql_help.c:2525 -#: sql_help.c:2656 sql_help.c:2757 sql_help.c:2808 +#: describe.c:902 sql_help.c:1715 sql_help.c:2833 sql_help.c:2903 +#: sql_help.c:3036 sql_help.c:3141 sql_help.c:3192 msgid "operator" msgstr "运算子" # describe.c:526 -#: describe.c:896 +#: describe.c:921 msgid "data type" msgstr "资料型别" # describe.c:543 # describe.c:1477 -#: describe.c:921 describe.c:2377 +#: describe.c:946 describe.c:2508 msgid "index" msgstr "索引" # describe.c:559 -#: describe.c:943 +#: describe.c:969 msgid "rule" msgstr "规则" # describe.c:593 -#: describe.c:987 +#: describe.c:1013 msgid "Object descriptions" msgstr "物件描述" # describe.c:641 -#: describe.c:1040 +#: describe.c:1066 #, c-format msgid "Did not find any relation named \"%s\".\n" msgstr "没有找到任何名称为 \"%s\" 的关联。\n" # describe.c:728 -#: describe.c:1194 +#: describe.c:1238 #, c-format msgid "Did not find any relation with OID %s.\n" msgstr "没有找到任何OID为 %s 的关联。\n" +# describe.c:933 +#: describe.c:1314 +#, c-format +msgid "Unlogged table \"%s.%s\"" +msgstr "不记录日志的表 \"%s.%s\"" + # describe.c:859 -#: describe.c:1262 +#: describe.c:1317 #, c-format msgid "Table \"%s.%s\"" msgstr "资料表 \"%s.%s\"" # describe.c:863 -#: describe.c:1266 +#: describe.c:1321 #, c-format msgid "View \"%s.%s\"" msgstr "视观表 \"%s.%s\"" # describe.c:867 -#: describe.c:1270 +#: describe.c:1325 #, c-format msgid "Sequence \"%s.%s\"" msgstr "序列数 \"%s.%s\"" # describe.c:871 -#: describe.c:1274 +#: describe.c:1330 +#, c-format +msgid "Unlogged index \"%s.%s\"" +msgstr "不记录日志的索引 \"%s.%s\"" + +# describe.c:871 +#: describe.c:1333 #, c-format msgid "Index \"%s.%s\"" msgstr "索引 \"%s.%s\"" # describe.c:875 -#: describe.c:1279 +#: describe.c:1338 #, c-format msgid "Special relation \"%s.%s\"" msgstr "特殊关联 \"%s.%s\"" # describe.c:879 -#: describe.c:1283 +#: describe.c:1342 #, c-format msgid "TOAST table \"%s.%s\"" msgstr "TOAST 资料表 \"%s.%s\"" # describe.c:883 -#: describe.c:1287 +#: describe.c:1346 #, c-format msgid "Composite type \"%s.%s\"" msgstr "合成型别 \"%s.%s\"" +# describe.c:933 +#: describe.c:1350 +#, c-format +msgid "Foreign table \"%s.%s\"" +msgstr "引用的外部表 \"%s.%s\"" + # describe.c:744 -#: describe.c:1298 +#: describe.c:1361 msgid "Column" msgstr "栏位" # describe.c:752 -#: describe.c:1305 +#: describe.c:1369 msgid "Modifiers" msgstr "修饰词" # describe.c:415 # describe.c:543 # describe.c:1477 -#: describe.c:1310 +#: describe.c:1374 msgid "Value" msgstr "值" # describe.c:1636 -#: describe.c:1313 +#: describe.c:1377 msgid "Definition" msgstr "定义" # describe.c:1635 -#: describe.c:1317 +#: describe.c:1381 msgid "Storage" msgstr "存储" -#: describe.c:1359 +#: describe.c:1427 +#, c-format +msgid "collate %s" +msgstr "校对%s" + +#: describe.c:1435 msgid "not null" msgstr "非空" # describe.c:1639 #. translator: default values of column definitions -#: describe.c:1368 +#: describe.c:1445 #, c-format msgid "default %s" msgstr "缺省 %s" # describe.c:925 -#: describe.c:1459 +#: describe.c:1536 msgid "primary key, " msgstr "主键(PK)," # describe.c:927 -#: describe.c:1461 +#: describe.c:1538 msgid "unique, " msgstr "唯一的," # describe.c:933 -#: describe.c:1467 +#: describe.c:1544 #, c-format msgid "for table \"%s.%s\"" msgstr "给资料表 \"%s.%s\"" # describe.c:937 -#: describe.c:1471 +#: describe.c:1548 #, c-format msgid ", predicate (%s)" msgstr ", 叙述 (%s)" # describe.c:940 -#: describe.c:1474 +#: describe.c:1551 msgid ", clustered" msgstr ", 已丛集" -#: describe.c:1477 +#: describe.c:1554 msgid ", invalid" msgstr ", 无效的" -#: describe.c:1480 +#: describe.c:1557 msgid ", deferrable" msgstr ",可延迟" -#: describe.c:1483 +#: describe.c:1560 msgid ", initially deferred" msgstr ",开始被延迟" # describe.c:977 -#: describe.c:1497 +#: describe.c:1574 msgid "View definition:" msgstr "视图定义:" # describe.c:983 # describe.c:1204 -#: describe.c:1514 describe.c:1792 +#: describe.c:1591 describe.c:1874 msgid "Rules:" msgstr "规则:" # describe.c:1138 -#: describe.c:1573 +#: describe.c:1650 msgid "Indexes:" msgstr "索引:" # describe.c:1174 -#: describe.c:1648 +#: describe.c:1730 msgid "Check constraints:" msgstr "检查约束限制" # describe.c:1189 -#: describe.c:1679 +#: describe.c:1761 msgid "Foreign-key constraints:" msgstr "外部键(FK)限制:" -#: describe.c:1710 +#: describe.c:1792 msgid "Referenced by:" msgstr "由引用:" -#: describe.c:1795 +#: describe.c:1877 msgid "Disabled rules:" msgstr "已停用规则:" -#: describe.c:1798 +#: describe.c:1880 msgid "Rules firing always:" msgstr "永远触发规则" -#: describe.c:1801 +#: describe.c:1883 msgid "Rules firing on replica only:" msgstr "只有在复制时触发规则:" # describe.c:1223 -#: describe.c:1903 +#: describe.c:1991 msgid "Triggers:" msgstr "触发器:" -#: describe.c:1906 +#: describe.c:1994 msgid "Disabled triggers:" msgstr "停用触发器:" -#: describe.c:1909 +#: describe.c:1997 msgid "Triggers firing always:" msgstr "永远激活触发器" -#: describe.c:1912 +#: describe.c:2000 msgid "Triggers firing on replica only:" msgstr "只有在复制时激活触发器" # describe.c:1245 -#: describe.c:1945 +#: describe.c:2066 msgid "Inherits" msgstr "继承" -#: describe.c:1975 +#: describe.c:2096 #, c-format msgid "Number of child tables: %d (Use \\d+ to list them.)" msgstr "子表的数量:%d(可以使用 \\d+ 来列出它们)" -#: describe.c:1982 +#: describe.c:2103 msgid "Child tables" msgstr "子表" -#: describe.c:2004 +#: describe.c:2125 #, c-format msgid "Typed table of type: %s" msgstr "类型的已确定类型表(typed table):%s" # describe.c:1259 -#: describe.c:2011 +#: describe.c:2132 msgid "Has OIDs" msgstr "有 OIDs" # describe.c:1262 # describe.c:1637 # describe.c:1694 -#: describe.c:2014 describe.c:2553 describe.c:2627 +#: describe.c:2135 describe.c:2772 describe.c:2846 msgid "yes" msgstr "是" # describe.c:1262 # describe.c:1638 # describe.c:1692 -#: describe.c:2014 describe.c:2553 describe.c:2627 +#: describe.c:2135 describe.c:2772 describe.c:2846 msgid "no" msgstr "否" -#: describe.c:2022 describe.c:3319 describe.c:3383 describe.c:3439 +#: describe.c:2143 describe.c:3621 describe.c:3685 describe.c:3741 +#: describe.c:3796 msgid "Options" msgstr "选项" # describe.c:1342 -#: describe.c:2107 +#: describe.c:2228 #, c-format msgid "Tablespace: \"%s\"" msgstr "表空间:\"%s\"" # describe.c:1342 -#: describe.c:2120 +#: describe.c:2241 #, c-format msgid ", tablespace \"%s\"" msgstr ", 表空间 \"%s\"" # describe.c:1431 -#: describe.c:2198 +#: describe.c:2323 msgid "List of roles" msgstr "角色列表" # describe.c:1375 -#: describe.c:2200 +#: describe.c:2325 msgid "Role name" msgstr "角色名称" -#: describe.c:2201 +#: describe.c:2326 msgid "Attributes" msgstr "属性" -#: describe.c:2202 +#: describe.c:2327 msgid "Member of" msgstr "成员属于" # describe.c:1377 -#: describe.c:2213 +#: describe.c:2338 msgid "Superuser" msgstr "超级用户" -#: describe.c:2216 +#: describe.c:2341 msgid "No inheritance" msgstr "没有继承" -#: describe.c:2219 +#: describe.c:2344 msgid "Create role" msgstr "建立角色" -#: describe.c:2222 +#: describe.c:2347 msgid "Create DB" msgstr "建立 DB" -#: describe.c:2225 +#: describe.c:2350 msgid "Cannot login" msgstr "无法登录" +# describe.c:1636 +#: describe.c:2354 +msgid "Replication" +msgstr "复制" + # help.c:123 -#: describe.c:2234 +#: describe.c:2363 msgid "No connections" msgstr "没有连接" # help.c:123 -#: describe.c:2236 +#: describe.c:2365 #, c-format msgid "%d connection" msgid_plural "%d connections" msgstr[0] "%d个连接" -#: describe.c:2303 +#: describe.c:2432 #, c-format msgid "No per-database role settings support in this server version.\n" msgstr "在这个版本的服务器中不支持对每个数据库的角色进行设定.\n" # describe.c:1542 -#: describe.c:2314 +#: describe.c:2443 #, c-format msgid "No matching settings found.\n" msgstr "没有找到所匹配的设置.\n" # describe.c:1544 -#: describe.c:2316 +#: describe.c:2445 #, c-format msgid "No settings found.\n" msgstr "没有找到设置.\n" # describe.c:1549 -#: describe.c:2321 +#: describe.c:2450 msgid "List of settings" msgstr "设置的列表" # describe.c:1478 -#: describe.c:2379 +#: describe.c:2510 msgid "special" msgstr "特殊" # describe.c:1483 -#: describe.c:2386 +#: describe.c:2518 describe.c:3790 msgid "Table" msgstr "资料表" # describe.c:1542 -#: describe.c:2446 +#: describe.c:2592 #, c-format msgid "No matching relations found.\n" msgstr "没有找到符合的关联。\n" # describe.c:1544 -#: describe.c:2448 +#: describe.c:2594 #, c-format msgid "No relations found.\n" msgstr "找不到关联。\n" # describe.c:1549 -#: describe.c:2453 +#: describe.c:2599 msgid "List of relations" msgstr "关联列表" +#: describe.c:2635 +msgid "Trusted" +msgstr "信任" + +# describe.c:257 +#: describe.c:2643 +msgid "Internal Language" +msgstr "内部语言" + +#: describe.c:2644 +msgid "Call Handler" +msgstr "调用函数" + +#: describe.c:2645 describe.c:3613 +msgid "Validator" +msgstr "验证" + +#: describe.c:2648 +msgid "Inline Handler" +msgstr "内联函数" + +# describe.c:1431 +#: describe.c:2669 +msgid "List of languages" +msgstr "语言列表" + # describe.c:1588 -#: describe.c:2497 +#: describe.c:2709 msgid "Modifier" msgstr "修饰词" -#: describe.c:2498 +#: describe.c:2717 msgid "Check" msgstr "检查" # describe.c:1602 -#: describe.c:2516 +#: describe.c:2735 msgid "List of domains" msgstr "共同值域列表" # describe.c:1635 -#: describe.c:2551 +#: describe.c:2770 msgid "Source" msgstr "来源" # describe.c:1636 -#: describe.c:2552 +#: describe.c:2771 msgid "Destination" msgstr "目的地" # describe.c:1639 -#: describe.c:2554 +#: describe.c:2773 msgid "Default?" msgstr "预设?" # describe.c:1653 -#: describe.c:2572 +#: describe.c:2791 msgid "List of conversions" msgstr "字元编码转换列表" # describe.c:1688 -#: describe.c:2624 +#: describe.c:2843 msgid "Source type" msgstr "来源型别" # describe.c:1689 -#: describe.c:2625 +#: describe.c:2844 msgid "Target type" msgstr "目标型别" # describe.c:1691 -#: describe.c:2626 describe.c:2886 +#: describe.c:2845 describe.c:3183 msgid "Function" msgstr "函数" # describe.c:1693 -#: describe.c:2627 +#: describe.c:2846 msgid "in assignment" msgstr "在指派中" # describe.c:1695 -#: describe.c:2628 +#: describe.c:2847 msgid "Implicit?" msgstr "隐含的?" # describe.c:1703 -#: describe.c:2654 +#: describe.c:2873 msgid "List of casts" msgstr "型别转换列表" +# describe.c:117 +#: describe.c:2898 +#, c-format +msgid "The server (version %d.%d) does not support collations.\n" +msgstr "服务器(版本%d.%d)不支持排序校对。\n" + +# describe.c:1549 +#: describe.c:2948 +msgid "List of collations" +msgstr "校对列表" + # describe.c:1753 -#: describe.c:2709 +#: describe.c:3006 msgid "List of schemas" msgstr "架构模式列表" # describe.c:117 -#: describe.c:2732 describe.c:2965 describe.c:3033 describe.c:3101 +#: describe.c:3029 describe.c:3262 describe.c:3330 describe.c:3398 #, c-format msgid "The server (version %d.%d) does not support full text search.\n" msgstr "服务器(版本%d.%d)不支持使用全文搜索.\n" # describe.c:150 -#: describe.c:2766 +#: describe.c:3063 msgid "List of text search parsers" msgstr "文本剖析器列表" # describe.c:641 -#: describe.c:2809 +#: describe.c:3106 #, c-format msgid "Did not find any text search parser named \"%s\".\n" msgstr "没有找到任何命名为 \"%s\" 的文本剖析器。\n" -#: describe.c:2884 +#: describe.c:3181 msgid "Start parse" msgstr "开始剖析" -#: describe.c:2885 +#: describe.c:3182 msgid "Method" msgstr "方法" -#: describe.c:2889 +#: describe.c:3186 msgid "Get next token" msgstr "取得下一个标志符" -#: describe.c:2891 +#: describe.c:3188 msgid "End parse" msgstr "结束剖析" -#: describe.c:2893 +#: describe.c:3190 msgid "Get headline" msgstr "取得首行" -#: describe.c:2895 +#: describe.c:3192 msgid "Get token types" msgstr "取得标志符型别" -#: describe.c:2905 +#: describe.c:3202 #, c-format msgid "Text search parser \"%s.%s\"" msgstr "文本搜寻剖析器 \"%s.%s\"" -#: describe.c:2907 +#: describe.c:3204 #, c-format msgid "Text search parser \"%s\"" msgstr "文本搜寻剖析器 \"%s\"" # describe.c:1375 -#: describe.c:2925 +#: describe.c:3222 msgid "Token name" msgstr "标志名称" -#: describe.c:2936 +#: describe.c:3233 #, c-format msgid "Token types for parser \"%s.%s\"" msgstr "标志符别型给剖析器 \"%s.%s\"" -#: describe.c:2938 +#: describe.c:3235 #, c-format msgid "Token types for parser \"%s\"" msgstr "标志符型别给剖析器 \"%s\"" -#: describe.c:2987 +#: describe.c:3284 msgid "Template" msgstr "模版" # help.c:88 -#: describe.c:2988 +#: describe.c:3285 msgid "Init options" msgstr "初始选项" # describe.c:1549 -#: describe.c:3010 +#: describe.c:3307 msgid "List of text search dictionaries" msgstr "文本搜寻字典列表" -#: describe.c:3050 +#: describe.c:3347 msgid "Init" msgstr "初始化" # describe.c:257 -#: describe.c:3051 +#: describe.c:3348 msgid "Lexize" msgstr "词汇" # describe.c:1753 -#: describe.c:3078 +#: describe.c:3375 msgid "List of text search templates" msgstr "文本搜寻样式列表" # describe.c:97 -#: describe.c:3135 +#: describe.c:3432 msgid "List of text search configurations" msgstr "文本搜寻组态列表" # describe.c:641 -#: describe.c:3179 +#: describe.c:3476 #, c-format msgid "Did not find any text search configuration named \"%s\".\n" msgstr "没有找到任何命名为 \"%s\" 的文本搜寻组态。\n" -#: describe.c:3245 +#: describe.c:3542 msgid "Token" msgstr "标志符" -#: describe.c:3246 +#: describe.c:3543 msgid "Dictionaries" msgstr "字典" -#: describe.c:3257 +#: describe.c:3554 #, c-format msgid "Text search configuration \"%s.%s\"" msgstr "文本搜寻组态 \"%s.%s\"" -#: describe.c:3260 +#: describe.c:3557 #, c-format msgid "Text search configuration \"%s\"" msgstr "文本搜寻组态 \"%s\"" # describe.c:859 -#: describe.c:3264 +#: describe.c:3561 #, c-format msgid "" "\n" @@ -2443,7 +2607,7 @@ msgstr "" "剖析器:\"%s.%s\"" # describe.c:1342 -#: describe.c:3267 +#: describe.c:3564 #, c-format msgid "" "\n" @@ -2453,713 +2617,801 @@ msgstr "" "剖析器:\"%s\"" # describe.c:117 -#: describe.c:3299 +#: describe.c:3596 #, c-format msgid "The server (version %d.%d) does not support foreign-data wrappers.\n" msgstr "服务器(版本%d.%d)不支持使用外部数据封装器。\n" -#: describe.c:3311 -msgid "Validator" -msgstr "验证" +#: describe.c:3610 +msgid "Handler" +msgstr "处理函数" # describe.c:289 -#: describe.c:3335 +#: describe.c:3637 msgid "List of foreign-data wrappers" msgstr "外部数据封装器列表" # describe.c:117 -#: describe.c:3358 +#: describe.c:3660 #, c-format msgid "The server (version %d.%d) does not support foreign servers.\n" msgstr "服务器(版本%d.%d)不支持使用外部服务器.\n" -#: describe.c:3370 +#: describe.c:3672 msgid "Foreign-data wrapper" msgstr "外部数据封装器" -#: describe.c:3382 +#: describe.c:3684 describe.c:3854 msgid "Version" msgstr "版本" # describe.c:1653 -#: describe.c:3401 +#: describe.c:3703 msgid "List of foreign servers" msgstr "外部服务器列表" # describe.c:117 -#: describe.c:3424 +#: describe.c:3726 #, c-format msgid "The server (version %d.%d) does not support user mappings.\n" msgstr "服务器(版本%d.%d)不支持使用用户映射。\n" # describe.c:1377 -#: describe.c:3433 +#: describe.c:3735 describe.c:3791 msgid "Server" msgstr "服务器" -#: describe.c:3434 +#: describe.c:3736 msgid "User name" msgstr "用户名: " # describe.c:1602 -#: describe.c:3454 +#: describe.c:3756 msgid "List of user mappings" msgstr "列出用户映射" +# describe.c:117 +#: describe.c:3779 +#, c-format +msgid "The server (version %d.%d) does not support foreign tables.\n" +msgstr "服务器(版本%d.%d)不支持使用引用表.\n" + +# describe.c:1653 +#: describe.c:3817 +msgid "List of foreign tables" +msgstr "引用表列表" + +# describe.c:117 +#: describe.c:3840 describe.c:3894 +#, c-format +msgid "The server (version %d.%d) does not support extensions.\n" +msgstr "服务器(版本%d.%d) 不支持使用扩展.\n" + +# describe.c:1653 +#: describe.c:3871 +msgid "List of installed extensions" +msgstr "已安装扩展列表" + +# describe.c:641 +#: describe.c:3921 +#, c-format +msgid "Did not find any extension named \"%s\".\n" +msgstr "没有找到任何名称为 \"%s\" 的扩展。\n" + +# describe.c:641 +#: describe.c:3924 +#, c-format +msgid "Did not find any extensions.\n" +msgstr "没有找到任何扩展.\n" + +# describe.c:593 +#: describe.c:3968 +msgid "Object Description" +msgstr "对象描述" + +#: describe.c:3977 +#, c-format +msgid "Objects in extension \"%s\"" +msgstr "对象用于扩展 \"%s\"" + # sql_help.h:25 # sql_help.h:373 -#: sql_help.h:173 sql_help.h:788 +#: sql_help.h:182 sql_help.h:837 msgid "abort the current transaction" msgstr "中止目前的交易" # sql_help.h:29 -#: sql_help.h:178 +#: sql_help.h:187 msgid "change the definition of an aggregate function" msgstr "更改聚集函数的定义" +# sql_help.h:45 +#: sql_help.h:192 +msgid "change the definition of a collation" +msgstr "更改校对规则的定义" + # sql_help.h:33 -#: sql_help.h:183 +#: sql_help.h:197 msgid "change the definition of a conversion" msgstr "更改一个字元编码转换的定义" # sql_help.h:37 -#: sql_help.h:188 +#: sql_help.h:202 msgid "change a database" msgstr "更改一个资料库" # sql_help.h:325 -#: sql_help.h:193 +#: sql_help.h:207 msgid "define default access privileges" msgstr "定义缺省的访问权限" # sql_help.h:41 -#: sql_help.h:198 +#: sql_help.h:212 msgid "change the definition of a domain" msgstr "更改共同值域的定义" +# sql_help.h:33 +#: sql_help.h:217 +msgid "change the definition of an extension" +msgstr "更改扩展的定义" + # sql_help.h:85 -#: sql_help.h:203 +#: sql_help.h:222 msgid "change the definition of a foreign-data wrapper" msgstr "更改外部数据封装器的定义" +# sql_help.h:85 +#: sql_help.h:227 +msgid "change the definition of a foreign table" +msgstr "更改外部表的定义" + # sql_help.h:45 -#: sql_help.h:208 +#: sql_help.h:232 msgid "change the definition of a function" msgstr "更改函数的定义" -#: sql_help.h:213 +#: sql_help.h:237 msgid "change role name or membership" msgstr "更改角色名称或会员" # sql_help.h:53 -#: sql_help.h:218 +#: sql_help.h:242 msgid "change the definition of an index" msgstr "更改索引的定义" # sql_help.h:57 -#: sql_help.h:223 +#: sql_help.h:247 msgid "change the definition of a procedural language" msgstr "更改程序语言的定义" # sql_help.h:77 -#: sql_help.h:228 +#: sql_help.h:252 msgid "change the definition of a large object" msgstr "改变大对象的定义" # sql_help.h:65 -#: sql_help.h:233 +#: sql_help.h:257 msgid "change the definition of an operator" msgstr "更改运算子的定义" # sql_help.h:61 -#: sql_help.h:238 +#: sql_help.h:262 msgid "change the definition of an operator class" msgstr "更改运算子类别的定义" # sql_help.h:65 -#: sql_help.h:243 +#: sql_help.h:267 msgid "change the definition of an operator family" msgstr "更改一个运算子家族的识别" # sql_help.h:37 -#: sql_help.h:248 sql_help.h:308 +#: sql_help.h:272 sql_help.h:332 msgid "change a database role" msgstr "变更资料库角色" # sql_help.h:69 -#: sql_help.h:253 +#: sql_help.h:277 msgid "change the definition of a schema" msgstr "更改架构模式的定义" # sql_help.h:73 -#: sql_help.h:258 +#: sql_help.h:282 msgid "change the definition of a sequence generator" msgstr "更改序列数产生器的定义" # sql_help.h:85 -#: sql_help.h:263 +#: sql_help.h:287 msgid "change the definition of a foreign server" msgstr "更改外部服务器的定义" # sql_help.h:77 -#: sql_help.h:268 +#: sql_help.h:292 msgid "change the definition of a table" msgstr "更改资料表的定义" # sql_help.h:81 -#: sql_help.h:273 +#: sql_help.h:297 msgid "change the definition of a tablespace" msgstr "更改表空间的定义" # sql_help.h:33 -#: sql_help.h:278 +#: sql_help.h:302 msgid "change the definition of a text search configuration" msgstr "更改一个文本搜寻组态的定义" # sql_help.h:45 -#: sql_help.h:283 +#: sql_help.h:307 msgid "change the definition of a text search dictionary" msgstr "更改一个文本搜寻字典的定义" # sql_help.h:81 -#: sql_help.h:288 +#: sql_help.h:312 msgid "change the definition of a text search parser" msgstr "更改一个文本搜寻剖析器的定义" # sql_help.h:69 -#: sql_help.h:293 +#: sql_help.h:317 msgid "change the definition of a text search template" msgstr "更改一个文本搜寻模版的定义" # sql_help.h:85 -#: sql_help.h:298 +#: sql_help.h:322 msgid "change the definition of a trigger" msgstr "更改触发器的定义" # sql_help.h:89 -#: sql_help.h:303 +#: sql_help.h:327 msgid "change the definition of a type" msgstr "更改资料型别的定义" # sql_help.h:41 -#: sql_help.h:313 +#: sql_help.h:337 msgid "change the definition of a user mapping" msgstr "更改用户映射的定义" # sql_help.h:53 -#: sql_help.h:318 +#: sql_help.h:342 msgid "change the definition of a view" msgstr "更改视观表的定义" # sql_help.h:97 -#: sql_help.h:323 +#: sql_help.h:347 msgid "collect statistics about a database" msgstr "关于资料库的收集统计" # sql_help.h:101 # sql_help.h:413 -#: sql_help.h:328 sql_help.h:848 +#: sql_help.h:352 sql_help.h:902 msgid "start a transaction block" msgstr "开始一个事物交易区块" # sql_help.h:105 -#: sql_help.h:333 +#: sql_help.h:357 msgid "force a transaction log checkpoint" msgstr "强制事物交易日志检查点" # sql_help.h:109 -#: sql_help.h:338 +#: sql_help.h:362 msgid "close a cursor" msgstr "关闭 cursor" # sql_help.h:113 -#: sql_help.h:343 +#: sql_help.h:367 msgid "cluster a table according to an index" msgstr "丛集一个资料表根据一个索引" # sql_help.h:117 -#: sql_help.h:348 +#: sql_help.h:372 msgid "define or change the comment of an object" msgstr "定义或更改一个物件的注解" # sql_help.h:121 # sql_help.h:309 -#: sql_help.h:353 sql_help.h:698 +#: sql_help.h:377 sql_help.h:747 msgid "commit the current transaction" msgstr "确认目前的事物交易" -#: sql_help.h:358 +#: sql_help.h:382 msgid "commit a transaction that was earlier prepared for two-phase commit" msgstr "提交一项事务交易这是两阶段提交的先前准备" # sql_help.h:125 -#: sql_help.h:363 +#: sql_help.h:387 msgid "copy data between a file and a table" msgstr "在档案和资料表间复制资料" # sql_help.h:129 -#: sql_help.h:368 +#: sql_help.h:392 msgid "define a new aggregate function" msgstr "定义一个新的聚集函数" # sql_help.h:133 -#: sql_help.h:373 +#: sql_help.h:397 msgid "define a new cast" msgstr "建立新的型别转换" -# sql_help.h:137 -#: sql_help.h:378 -msgid "define a new constraint trigger" -msgstr "定义一个新的约束限制触发器" +# sql_help.h:153 +#: sql_help.h:402 +msgid "define a new collation" +msgstr "建立新的校对规则" # sql_help.h:141 -#: sql_help.h:383 +#: sql_help.h:407 msgid "define a new encoding conversion" msgstr "定义一个新的字元编码转换" # sql_help.h:145 -#: sql_help.h:388 +#: sql_help.h:412 msgid "create a new database" msgstr "建立新的资料库" # sql_help.h:149 -#: sql_help.h:393 +#: sql_help.h:417 msgid "define a new domain" msgstr "建立新的共同值域" +#: sql_help.h:422 +msgid "install an extension" +msgstr "安装一个扩展" + # sql_help.h:205 -#: sql_help.h:398 +#: sql_help.h:427 msgid "define a new foreign-data wrapper" msgstr "定义一个新的外部数据封装器" +# sql_help.h:201 +#: sql_help.h:432 +msgid "define a new foreign table" +msgstr "建立新的外部表" + # sql_help.h:153 -#: sql_help.h:403 +#: sql_help.h:437 msgid "define a new function" msgstr "建立新的函数" # sql_help.h:189 -#: sql_help.h:408 sql_help.h:438 sql_help.h:508 +#: sql_help.h:442 sql_help.h:472 sql_help.h:542 msgid "define a new database role" msgstr "定义一个新资料库角色" # sql_help.h:161 -#: sql_help.h:413 +#: sql_help.h:447 msgid "define a new index" msgstr "建立新的索引" # sql_help.h:165 -#: sql_help.h:418 +#: sql_help.h:452 msgid "define a new procedural language" msgstr "建立新的程序语言" # sql_help.h:173 -#: sql_help.h:423 +#: sql_help.h:457 msgid "define a new operator" msgstr "建立新的运算子" # sql_help.h:169 -#: sql_help.h:428 +#: sql_help.h:462 msgid "define a new operator class" msgstr "建立新的运算子类别" # sql_help.h:173 -#: sql_help.h:433 +#: sql_help.h:467 msgid "define a new operator family" msgstr "定义一个新的运算子家族" # sql_help.h:177 -#: sql_help.h:443 +#: sql_help.h:477 msgid "define a new rewrite rule" msgstr "建立新的重写规则" # sql_help.h:181 -#: sql_help.h:448 +#: sql_help.h:482 msgid "define a new schema" msgstr "建立新的架构模式" # sql_help.h:185 -#: sql_help.h:453 +#: sql_help.h:487 msgid "define a new sequence generator" msgstr "建立新的序列数产生器" # sql_help.h:201 -#: sql_help.h:458 +#: sql_help.h:492 msgid "define a new foreign server" msgstr "建立新的触发器" # sql_help.h:189 -#: sql_help.h:463 +#: sql_help.h:497 msgid "define a new table" msgstr "建立新的资料表" # sql_help.h:193 # sql_help.h:389 -#: sql_help.h:468 sql_help.h:813 +#: sql_help.h:502 sql_help.h:867 msgid "define a new table from the results of a query" msgstr "以查询结果建立新的资料表" # sql_help.h:197 -#: sql_help.h:473 +#: sql_help.h:507 msgid "define a new tablespace" msgstr "建立新的表空间" # sql_help.h:129 -#: sql_help.h:478 +#: sql_help.h:512 msgid "define a new text search configuration" msgstr "定义一个新文本搜寻组态" # sql_help.h:129 -#: sql_help.h:483 +#: sql_help.h:517 msgid "define a new text search dictionary" msgstr "定义一个新文本搜寻字典" # sql_help.h:197 -#: sql_help.h:488 +#: sql_help.h:522 msgid "define a new text search parser" msgstr "定义一个新文本搜寻剖析器" # sql_help.h:181 -#: sql_help.h:493 +#: sql_help.h:527 msgid "define a new text search template" msgstr "定义一个新文本搜寻模版" # sql_help.h:201 -#: sql_help.h:498 +#: sql_help.h:532 msgid "define a new trigger" msgstr "建立新的触发器" # sql_help.h:205 -#: sql_help.h:503 +#: sql_help.h:537 msgid "define a new data type" msgstr "建立新的资料型别" -#: sql_help.h:513 +#: sql_help.h:547 msgid "define a new mapping of a user to a foreign server" msgstr "将用户的新映射定义到一个外部服务器" # sql_help.h:213 -#: sql_help.h:518 +#: sql_help.h:552 msgid "define a new view" msgstr "建立新的视观表" # sql_help.h:217 -#: sql_help.h:523 +#: sql_help.h:557 msgid "deallocate a prepared statement" msgstr "释放一个已预备好的叙述区块" # sql_help.h:221 -#: sql_help.h:528 +#: sql_help.h:562 msgid "define a cursor" msgstr "建立一个 cursor" # sql_help.h:225 -#: sql_help.h:533 +#: sql_help.h:567 msgid "delete rows of a table" msgstr "删除资料表中的资料列" -#: sql_help.h:538 +#: sql_help.h:572 msgid "discard session state" msgstr "抛弃 session 状态" -#: sql_help.h:543 +#: sql_help.h:577 msgid "execute an anonymous code block" msgstr "执行一个匿名代码块" # sql_help.h:229 -#: sql_help.h:548 +#: sql_help.h:582 msgid "remove an aggregate function" msgstr "移除一个聚集函数" # sql_help.h:233 -#: sql_help.h:553 +#: sql_help.h:587 msgid "remove a cast" msgstr "移除一个型别转换" +# sql_help.h:249 +#: sql_help.h:592 +msgid "remove a collation" +msgstr "移除一个校对规则" + # sql_help.h:237 -#: sql_help.h:558 +#: sql_help.h:597 msgid "remove a conversion" msgstr "移除一个字元编码转换" # sql_help.h:241 -#: sql_help.h:563 +#: sql_help.h:602 msgid "remove a database" msgstr "移除资料库" # sql_help.h:245 -#: sql_help.h:568 +#: sql_help.h:607 msgid "remove a domain" msgstr "移除一个共同值域" +# sql_help.h:237 +#: sql_help.h:612 +msgid "remove an extension" +msgstr "移除一个扩展" + # sql_help.h:297 -#: sql_help.h:573 +#: sql_help.h:617 msgid "remove a foreign-data wrapper" msgstr "删除一个外部数据封装器" +# sql_help.h:285 +#: sql_help.h:622 +msgid "remove a foreign table" +msgstr "移除外部引用表" + # sql_help.h:249 -#: sql_help.h:578 +#: sql_help.h:627 msgid "remove a function" msgstr "移除函数" # sql_help.h:241 -#: sql_help.h:583 sql_help.h:618 sql_help.h:683 +#: sql_help.h:632 sql_help.h:667 sql_help.h:732 msgid "remove a database role" msgstr "移除一个资料库成员" # sql_help.h:257 -#: sql_help.h:588 +#: sql_help.h:637 msgid "remove an index" msgstr "移除一个索引" # sql_help.h:261 -#: sql_help.h:593 +#: sql_help.h:642 msgid "remove a procedural language" msgstr "移除一个程序语言" # sql_help.h:269 -#: sql_help.h:598 +#: sql_help.h:647 msgid "remove an operator" msgstr "移除运算子" # sql_help.h:265 -#: sql_help.h:603 +#: sql_help.h:652 msgid "remove an operator class" msgstr "移除一个运算子类别" # sql_help.h:269 -#: sql_help.h:608 +#: sql_help.h:657 msgid "remove an operator family" msgstr "移除一个运算子家族" -#: sql_help.h:613 +#: sql_help.h:662 msgid "remove database objects owned by a database role" msgstr "依照一个资料库角色拥有的资料库物件来移除" # sql_help.h:273 -#: sql_help.h:623 +#: sql_help.h:672 msgid "remove a rewrite rule" msgstr "移除一个重写规则" # sql_help.h:277 -#: sql_help.h:628 +#: sql_help.h:677 msgid "remove a schema" msgstr "移除一个架构模式" # sql_help.h:281 -#: sql_help.h:633 +#: sql_help.h:682 msgid "remove a sequence" msgstr "移除序列数" # sql_help.h:237 -#: sql_help.h:638 +#: sql_help.h:687 msgid "remove a foreign server descriptor" msgstr "删除一个外部服务器描述符" # sql_help.h:285 -#: sql_help.h:643 +#: sql_help.h:692 msgid "remove a table" msgstr "移除资料表" # sql_help.h:289 -#: sql_help.h:648 +#: sql_help.h:697 msgid "remove a tablespace" msgstr "移除一个表空间" # sql_help.h:301 -#: sql_help.h:653 +#: sql_help.h:702 msgid "remove a text search configuration" msgstr "移除一个文本搜寻组态" # sql_help.h:301 -#: sql_help.h:658 +#: sql_help.h:707 msgid "remove a text search dictionary" msgstr "移除一个文本搜寻字典" # sql_help.h:289 -#: sql_help.h:663 +#: sql_help.h:712 msgid "remove a text search parser" msgstr "移除一个文本搜寻剖析器" # sql_help.h:277 -#: sql_help.h:668 +#: sql_help.h:717 msgid "remove a text search template" msgstr "移除一个文本搜寻模版" # sql_help.h:293 -#: sql_help.h:673 +#: sql_help.h:722 msgid "remove a trigger" msgstr "移除触发器" # sql_help.h:297 -#: sql_help.h:678 +#: sql_help.h:727 msgid "remove a data type" msgstr "移除资料型别" -#: sql_help.h:688 +#: sql_help.h:737 msgid "remove a user mapping for a foreign server" msgstr "为外部服务器删除用户映射" # sql_help.h:305 -#: sql_help.h:693 +#: sql_help.h:742 msgid "remove a view" msgstr "移除一个视观表" # sql_help.h:313 -#: sql_help.h:703 +#: sql_help.h:752 msgid "execute a prepared statement" msgstr "执行一个已准备好的叙述区块" # sql_help.h:317 -#: sql_help.h:708 +#: sql_help.h:757 msgid "show the execution plan of a statement" msgstr "显示一个叙述区块的执行计划" # sql_help.h:321 -#: sql_help.h:713 +#: sql_help.h:762 msgid "retrieve rows from a query using a cursor" msgstr "从使用 cursor 的查询读取资料" # sql_help.h:325 -#: sql_help.h:718 +#: sql_help.h:767 msgid "define access privileges" msgstr "建立存取权限" # sql_help.h:329 -#: sql_help.h:723 +#: sql_help.h:772 msgid "create new rows in a table" msgstr "在资料表中建立资料" # sql_help.h:333 -#: sql_help.h:728 +#: sql_help.h:777 msgid "listen for a notification" msgstr "等待通知" # sql_help.h:337 -#: sql_help.h:733 +#: sql_help.h:782 msgid "load a shared library file" msgstr "加载一个共享库文件" # sql_help.h:341 -#: sql_help.h:738 +#: sql_help.h:787 msgid "lock a table" msgstr "锁住资料表" # sql_help.h:345 -#: sql_help.h:743 +#: sql_help.h:792 msgid "position a cursor" msgstr "移动游标位置" # sql_help.h:349 -#: sql_help.h:748 +#: sql_help.h:797 msgid "generate a notification" msgstr "产生通告" # sql_help.h:353 -#: sql_help.h:753 +#: sql_help.h:802 msgid "prepare a statement for execution" msgstr "预先编译叙述以执行" # sql_help.h:25 # sql_help.h:373 -#: sql_help.h:758 +#: sql_help.h:807 msgid "prepare the current transaction for two-phase commit" msgstr "预备当前事务交易的二段式提交" -#: sql_help.h:763 +#: sql_help.h:812 msgid "change the ownership of database objects owned by a database role" msgstr "依照一个资料库角色拥有的的资料库物件来更变所有权" # sql_help.h:357 -#: sql_help.h:768 +#: sql_help.h:817 msgid "rebuild indexes" msgstr "重新建构索引" # sql_help.h:361 -#: sql_help.h:773 +#: sql_help.h:822 msgid "destroy a previously defined savepoint" msgstr "删除先前建立的储存点(Savepoint)" # sql_help.h:365 -#: sql_help.h:778 +#: sql_help.h:827 msgid "restore the value of a run-time parameter to the default value" msgstr "将执行时期参数还原成预设值" # sql_help.h:369 -#: sql_help.h:783 +#: sql_help.h:832 msgid "remove access privileges" msgstr "移除存取权限" -#: sql_help.h:793 +#: sql_help.h:842 msgid "cancel a transaction that was earlier prepared for two-phase commit" msgstr "取消一个可以为两阶段提交容易配置的事务" # sql_help.h:377 -#: sql_help.h:798 +#: sql_help.h:847 msgid "roll back to a savepoint" msgstr "还原至一个储存点(Savepoint)" # sql_help.h:381 -#: sql_help.h:803 +#: sql_help.h:852 msgid "define a new savepoint within the current transaction" msgstr "在目前的事物交易中建立新的储存点(Savepoint)" +# sql_help.h:117 +#: sql_help.h:857 +msgid "define or change a security label applied to an object" +msgstr "定义或更改一个对象的安全标签" + # sql_help.h:385 -#: sql_help.h:808 sql_help.h:853 sql_help.h:883 +#: sql_help.h:862 sql_help.h:907 sql_help.h:937 msgid "retrieve rows from a table or view" msgstr "从资料表或视观表读取资料" # sql_help.h:393 -#: sql_help.h:818 +#: sql_help.h:872 msgid "change a run-time parameter" msgstr "更改一个执行时期参数" # sql_help.h:397 -#: sql_help.h:823 +#: sql_help.h:877 msgid "set constraint check timing for the current transaction" msgstr "为当前事务设定约束限制检查的时间模式" # sql_help.h:405 -#: sql_help.h:828 +#: sql_help.h:882 msgid "set the current user identifier of the current session" msgstr "设置当前 session 的当前用户的身份标识" # sql_help.h:401 -#: sql_help.h:833 +#: sql_help.h:887 msgid "" "set the session user identifier and the current user identifier of the " "current session" msgstr "设置会话用户标识符和当前会话的当前用户标识符" # sql_help.h:405 -#: sql_help.h:838 +#: sql_help.h:892 msgid "set the characteristics of the current transaction" msgstr "设定目前事物交易属性" # sql_help.h:409 -#: sql_help.h:843 +#: sql_help.h:897 msgid "show the value of a run-time parameter" msgstr "显示执行时期的参数值" # sql_help.h:425 -#: sql_help.h:858 +#: sql_help.h:912 msgid "empty a table or set of tables" msgstr "空的资料表或资料表设置" # sql_help.h:421 -#: sql_help.h:863 +#: sql_help.h:917 msgid "stop listening for a notification" msgstr "停止倾听通告" # sql_help.h:425 -#: sql_help.h:868 +#: sql_help.h:922 msgid "update rows of a table" msgstr "更新资料表中的资料列" # sql_help.h:429 -#: sql_help.h:873 +#: sql_help.h:927 msgid "garbage-collect and optionally analyze a database" msgstr "垃圾收集(GC)并选择性的分析资料库" -#: sql_help.h:878 +#: sql_help.h:932 msgid "compute a set of rows" msgstr "计算一个资料列的集合" @@ -3175,40 +3427,44 @@ msgstr "计算一个资料列的集合" # describe.c:1586 # describe.c:1634 # describe.c:1727 -#: sql_help.c:26 sql_help.c:29 sql_help.c:32 sql_help.c:43 sql_help.c:45 -#: sql_help.c:69 sql_help.c:73 sql_help.c:75 sql_help.c:77 sql_help.c:79 -#: sql_help.c:82 sql_help.c:84 sql_help.c:86 sql_help.c:161 sql_help.c:163 -#: sql_help.c:164 sql_help.c:166 sql_help.c:168 sql_help.c:170 sql_help.c:182 -#: sql_help.c:186 sql_help.c:214 sql_help.c:219 sql_help.c:224 sql_help.c:229 -#: sql_help.c:267 sql_help.c:269 sql_help.c:271 sql_help.c:274 sql_help.c:284 -#: sql_help.c:286 sql_help.c:304 sql_help.c:316 sql_help.c:319 sql_help.c:338 -#: sql_help.c:349 sql_help.c:357 sql_help.c:360 sql_help.c:389 sql_help.c:395 -#: sql_help.c:397 sql_help.c:401 sql_help.c:404 sql_help.c:407 sql_help.c:417 -#: sql_help.c:419 sql_help.c:436 sql_help.c:445 sql_help.c:447 sql_help.c:449 -#: sql_help.c:513 sql_help.c:515 sql_help.c:518 sql_help.c:520 sql_help.c:570 -#: sql_help.c:572 sql_help.c:574 sql_help.c:577 sql_help.c:597 sql_help.c:600 -#: sql_help.c:603 sql_help.c:606 sql_help.c:610 sql_help.c:612 sql_help.c:614 -#: sql_help.c:627 sql_help.c:630 sql_help.c:632 sql_help.c:641 sql_help.c:650 -#: sql_help.c:659 sql_help.c:671 sql_help.c:673 sql_help.c:675 sql_help.c:703 -#: sql_help.c:709 sql_help.c:711 sql_help.c:714 sql_help.c:716 sql_help.c:718 -#: sql_help.c:743 sql_help.c:746 sql_help.c:748 sql_help.c:750 sql_help.c:752 -#: sql_help.c:791 sql_help.c:962 sql_help.c:970 sql_help.c:1016 -#: sql_help.c:1031 sql_help.c:1049 sql_help.c:1071 sql_help.c:1087 -#: sql_help.c:1113 sql_help.c:1155 sql_help.c:1177 sql_help.c:1196 -#: sql_help.c:1197 sql_help.c:1214 sql_help.c:1234 sql_help.c:1255 -#: sql_help.c:1282 sql_help.c:1303 sql_help.c:1333 sql_help.c:1513 -#: sql_help.c:1526 sql_help.c:1543 sql_help.c:1559 sql_help.c:1572 -#: sql_help.c:1611 sql_help.c:1614 sql_help.c:1616 sql_help.c:1633 -#: sql_help.c:1659 sql_help.c:1692 sql_help.c:1702 sql_help.c:1711 -#: sql_help.c:1753 sql_help.c:1771 sql_help.c:1779 sql_help.c:1787 -#: sql_help.c:1795 sql_help.c:1804 sql_help.c:1815 sql_help.c:1823 -#: sql_help.c:1831 sql_help.c:1839 sql_help.c:1849 sql_help.c:1858 -#: sql_help.c:1867 sql_help.c:1875 sql_help.c:1883 sql_help.c:1892 -#: sql_help.c:1900 sql_help.c:1916 sql_help.c:1932 sql_help.c:1940 -#: sql_help.c:1948 sql_help.c:1956 sql_help.c:1964 sql_help.c:1973 -#: sql_help.c:1981 sql_help.c:1998 sql_help.c:2013 sql_help.c:2193 -#: sql_help.c:2221 sql_help.c:2248 sql_help.c:2549 sql_help.c:2594 -#: sql_help.c:2698 +#: sql_help.c:26 sql_help.c:29 sql_help.c:32 sql_help.c:44 sql_help.c:46 +#: sql_help.c:48 sql_help.c:59 sql_help.c:61 sql_help.c:63 sql_help.c:87 +#: sql_help.c:91 sql_help.c:93 sql_help.c:95 sql_help.c:97 sql_help.c:100 +#: sql_help.c:102 sql_help.c:104 sql_help.c:179 sql_help.c:181 sql_help.c:182 +#: sql_help.c:184 sql_help.c:186 sql_help.c:188 sql_help.c:276 sql_help.c:281 +#: sql_help.c:306 sql_help.c:308 sql_help.c:311 sql_help.c:313 sql_help.c:351 +#: sql_help.c:356 sql_help.c:361 sql_help.c:366 sql_help.c:404 sql_help.c:406 +#: sql_help.c:408 sql_help.c:411 sql_help.c:421 sql_help.c:423 sql_help.c:442 +#: sql_help.c:446 sql_help.c:459 sql_help.c:462 sql_help.c:465 sql_help.c:485 +#: sql_help.c:497 sql_help.c:505 sql_help.c:508 sql_help.c:511 sql_help.c:541 +#: sql_help.c:547 sql_help.c:549 sql_help.c:553 sql_help.c:556 sql_help.c:559 +#: sql_help.c:569 sql_help.c:571 sql_help.c:588 sql_help.c:597 sql_help.c:599 +#: sql_help.c:601 sql_help.c:675 sql_help.c:677 sql_help.c:680 sql_help.c:682 +#: sql_help.c:740 sql_help.c:742 sql_help.c:744 sql_help.c:747 sql_help.c:768 +#: sql_help.c:771 sql_help.c:774 sql_help.c:777 sql_help.c:781 sql_help.c:783 +#: sql_help.c:785 sql_help.c:787 sql_help.c:801 sql_help.c:804 sql_help.c:806 +#: sql_help.c:808 sql_help.c:818 sql_help.c:820 sql_help.c:830 sql_help.c:832 +#: sql_help.c:841 sql_help.c:862 sql_help.c:864 sql_help.c:866 sql_help.c:869 +#: sql_help.c:871 sql_help.c:873 sql_help.c:911 sql_help.c:917 sql_help.c:919 +#: sql_help.c:922 sql_help.c:924 sql_help.c:926 sql_help.c:951 sql_help.c:954 +#: sql_help.c:956 sql_help.c:958 sql_help.c:960 sql_help.c:1000 +#: sql_help.c:1183 sql_help.c:1191 sql_help.c:1235 sql_help.c:1239 +#: sql_help.c:1249 sql_help.c:1267 sql_help.c:1290 sql_help.c:1322 +#: sql_help.c:1367 sql_help.c:1409 sql_help.c:1431 sql_help.c:1451 +#: sql_help.c:1452 sql_help.c:1469 sql_help.c:1489 sql_help.c:1511 +#: sql_help.c:1539 sql_help.c:1560 sql_help.c:1590 sql_help.c:1771 +#: sql_help.c:1784 sql_help.c:1801 sql_help.c:1817 sql_help.c:1840 +#: sql_help.c:1883 sql_help.c:1887 sql_help.c:1889 sql_help.c:1907 +#: sql_help.c:1934 sql_help.c:1967 sql_help.c:1977 sql_help.c:1986 +#: sql_help.c:2030 sql_help.c:2048 sql_help.c:2056 sql_help.c:2064 +#: sql_help.c:2072 sql_help.c:2088 sql_help.c:2096 sql_help.c:2105 +#: sql_help.c:2116 sql_help.c:2124 sql_help.c:2132 sql_help.c:2140 +#: sql_help.c:2150 sql_help.c:2159 sql_help.c:2168 sql_help.c:2176 +#: sql_help.c:2184 sql_help.c:2193 sql_help.c:2201 sql_help.c:2217 +#: sql_help.c:2233 sql_help.c:2241 sql_help.c:2249 sql_help.c:2257 +#: sql_help.c:2265 sql_help.c:2274 sql_help.c:2282 sql_help.c:2299 +#: sql_help.c:2314 sql_help.c:2506 sql_help.c:2557 sql_help.c:2584 +#: sql_help.c:2927 sql_help.c:2973 sql_help.c:3080 msgid "name" msgstr "名称" @@ -3216,242 +3472,333 @@ msgstr "名称" # describe.c:745 # describe.c:1478 # describe.c:1587 -#: sql_help.c:27 sql_help.c:30 sql_help.c:33 sql_help.c:524 sql_help.c:528 -#: sql_help.c:1754 +#: sql_help.c:27 sql_help.c:30 sql_help.c:33 sql_help.c:317 sql_help.c:320 +#: sql_help.c:2031 msgid "type" msgstr "类型" -#: sql_help.c:28 sql_help.c:44 sql_help.c:74 sql_help.c:223 sql_help.c:256 -#: sql_help.c:268 sql_help.c:285 sql_help.c:318 sql_help.c:359 sql_help.c:396 -#: sql_help.c:418 sql_help.c:448 sql_help.c:519 sql_help.c:571 sql_help.c:613 -#: sql_help.c:631 sql_help.c:642 sql_help.c:651 sql_help.c:661 sql_help.c:672 -#: sql_help.c:710 sql_help.c:751 +#: sql_help.c:28 sql_help.c:45 sql_help.c:60 sql_help.c:92 sql_help.c:312 +#: sql_help.c:360 sql_help.c:393 sql_help.c:405 sql_help.c:422 sql_help.c:461 +#: sql_help.c:507 sql_help.c:548 sql_help.c:570 sql_help.c:600 sql_help.c:681 +#: sql_help.c:741 sql_help.c:784 sql_help.c:805 sql_help.c:819 sql_help.c:831 +#: sql_help.c:843 sql_help.c:870 sql_help.c:918 sql_help.c:959 msgid "new_name" msgstr "新的名称" -#: sql_help.c:31 sql_help.c:46 sql_help.c:76 sql_help.c:169 sql_help.c:187 -#: sql_help.c:228 sql_help.c:287 sql_help.c:296 sql_help.c:307 sql_help.c:321 -#: sql_help.c:362 sql_help.c:420 sql_help.c:446 sql_help.c:465 sql_help.c:558 -#: sql_help.c:573 sql_help.c:615 sql_help.c:633 sql_help.c:674 sql_help.c:749 +#: sql_help.c:31 sql_help.c:47 sql_help.c:62 sql_help.c:94 sql_help.c:187 +#: sql_help.c:282 sql_help.c:322 sql_help.c:365 sql_help.c:424 sql_help.c:433 +#: sql_help.c:445 sql_help.c:464 sql_help.c:510 sql_help.c:572 sql_help.c:598 +#: sql_help.c:617 sql_help.c:725 sql_help.c:743 sql_help.c:786 sql_help.c:807 +#: sql_help.c:865 sql_help.c:957 msgid "new_owner" msgstr "新的属主" -#: sql_help.c:34 sql_help.c:171 sql_help.c:233 sql_help.c:450 sql_help.c:521 -#: sql_help.c:676 sql_help.c:753 +#: sql_help.c:34 sql_help.c:49 sql_help.c:64 sql_help.c:189 sql_help.c:228 +#: sql_help.c:314 sql_help.c:370 sql_help.c:449 sql_help.c:467 sql_help.c:513 +#: sql_help.c:602 sql_help.c:683 sql_help.c:788 sql_help.c:809 sql_help.c:821 +#: sql_help.c:833 sql_help.c:872 sql_help.c:961 msgid "new_schema" msgstr "新的模式" -#: sql_help.c:70 sql_help.c:184 sql_help.c:390 sql_help.c:462 sql_help.c:628 -#: sql_help.c:704 sql_help.c:730 sql_help.c:922 sql_help.c:927 sql_help.c:1089 -#: sql_help.c:1156 sql_help.c:1283 sql_help.c:1354 sql_help.c:1528 -#: sql_help.c:1660 sql_help.c:1682 +#: sql_help.c:88 sql_help.c:279 sql_help.c:323 sql_help.c:542 sql_help.c:614 +#: sql_help.c:802 sql_help.c:912 sql_help.c:938 sql_help.c:1142 +#: sql_help.c:1147 sql_help.c:1325 sql_help.c:1343 sql_help.c:1410 +#: sql_help.c:1540 sql_help.c:1611 sql_help.c:1786 sql_help.c:1935 +#: sql_help.c:1957 sql_help.c:2332 msgid "option" msgstr "选项" -#: sql_help.c:71 sql_help.c:391 sql_help.c:705 sql_help.c:1157 sql_help.c:1284 -#: sql_help.c:1661 +#: sql_help.c:89 sql_help.c:543 sql_help.c:913 sql_help.c:1411 sql_help.c:1541 +#: sql_help.c:1936 msgid "where option can be:" msgstr "选项可以是" -#: sql_help.c:72 sql_help.c:392 sql_help.c:706 sql_help.c:1056 sql_help.c:1285 -#: sql_help.c:1662 +#: sql_help.c:90 sql_help.c:544 sql_help.c:914 sql_help.c:1274 sql_help.c:1542 +#: sql_help.c:1937 msgid "connlimit" msgstr "连接限制" # describe.c:1342 -#: sql_help.c:78 sql_help.c:559 +#: sql_help.c:96 sql_help.c:726 msgid "new_tablespace" msgstr "新的表空间" # sql_help.h:366 -#: sql_help.c:80 sql_help.c:83 sql_help.c:85 sql_help.c:237 sql_help.c:239 -#: sql_help.c:240 sql_help.c:399 sql_help.c:403 sql_help.c:406 sql_help.c:712 -#: sql_help.c:715 sql_help.c:717 sql_help.c:1124 sql_help.c:2265 -#: sql_help.c:2538 +#: sql_help.c:98 sql_help.c:101 sql_help.c:103 sql_help.c:374 sql_help.c:376 +#: sql_help.c:377 sql_help.c:551 sql_help.c:555 sql_help.c:558 sql_help.c:920 +#: sql_help.c:923 sql_help.c:925 sql_help.c:1378 sql_help.c:2601 +#: sql_help.c:2916 msgid "configuration_parameter" msgstr "配置参数" # describe.c:415 # describe.c:543 # describe.c:1477 -#: sql_help.c:81 sql_help.c:185 sql_help.c:238 sql_help.c:273 sql_help.c:400 -#: sql_help.c:463 sql_help.c:538 sql_help.c:554 sql_help.c:576 sql_help.c:629 -#: sql_help.c:713 sql_help.c:731 sql_help.c:1090 sql_help.c:1125 -#: sql_help.c:1126 sql_help.c:1184 sql_help.c:1355 sql_help.c:1428 -#: sql_help.c:1437 sql_help.c:1468 sql_help.c:1490 sql_help.c:1529 -#: sql_help.c:1683 sql_help.c:2539 sql_help.c:2540 +#: sql_help.c:99 sql_help.c:280 sql_help.c:324 sql_help.c:375 sql_help.c:410 +#: sql_help.c:552 sql_help.c:615 sql_help.c:702 sql_help.c:720 sql_help.c:746 +#: sql_help.c:803 sql_help.c:921 sql_help.c:939 sql_help.c:1326 +#: sql_help.c:1344 sql_help.c:1379 sql_help.c:1380 sql_help.c:1439 +#: sql_help.c:1612 sql_help.c:1686 sql_help.c:1694 sql_help.c:1726 +#: sql_help.c:1748 sql_help.c:1787 sql_help.c:1958 sql_help.c:2917 +#: sql_help.c:2918 msgid "value" msgstr "值" -#: sql_help.c:133 +#: sql_help.c:151 msgid "target_role" msgstr "目标角色" -#: sql_help.c:134 sql_help.c:1318 sql_help.c:2119 sql_help.c:2126 -#: sql_help.c:2138 sql_help.c:2144 sql_help.c:2348 sql_help.c:2355 -#: sql_help.c:2367 sql_help.c:2373 +#: sql_help.c:152 sql_help.c:1575 sql_help.c:2430 sql_help.c:2437 +#: sql_help.c:2449 sql_help.c:2455 sql_help.c:2684 sql_help.c:2691 +#: sql_help.c:2703 sql_help.c:2709 msgid "schema_name" msgstr "模式名称" -#: sql_help.c:135 +#: sql_help.c:153 msgid "abbreviated_grant_or_revoke" msgstr "简写形式的可授予或回收的权限" -#: sql_help.c:136 +#: sql_help.c:154 msgid "where abbreviated_grant_or_revoke is one of:" msgstr "简写形式的可授予或回收权限是下列内容之一" # describe.c:1375 -#: sql_help.c:137 sql_help.c:138 sql_help.c:139 sql_help.c:140 sql_help.c:141 -#: sql_help.c:142 sql_help.c:1160 sql_help.c:1161 sql_help.c:1162 -#: sql_help.c:1163 sql_help.c:1164 sql_help.c:1288 sql_help.c:1289 -#: sql_help.c:1290 sql_help.c:1291 sql_help.c:1292 sql_help.c:1665 -#: sql_help.c:1666 sql_help.c:1667 sql_help.c:1668 sql_help.c:1669 -#: sql_help.c:2120 sql_help.c:2124 sql_help.c:2127 sql_help.c:2129 -#: sql_help.c:2131 sql_help.c:2133 sql_help.c:2139 sql_help.c:2141 -#: sql_help.c:2143 sql_help.c:2145 sql_help.c:2147 sql_help.c:2148 -#: sql_help.c:2149 sql_help.c:2349 sql_help.c:2353 sql_help.c:2356 -#: sql_help.c:2358 sql_help.c:2360 sql_help.c:2362 sql_help.c:2368 -#: sql_help.c:2370 sql_help.c:2372 sql_help.c:2374 sql_help.c:2376 -#: sql_help.c:2377 sql_help.c:2378 sql_help.c:2559 +#: sql_help.c:155 sql_help.c:156 sql_help.c:157 sql_help.c:158 sql_help.c:159 +#: sql_help.c:160 sql_help.c:1414 sql_help.c:1415 sql_help.c:1416 +#: sql_help.c:1417 sql_help.c:1418 sql_help.c:1545 sql_help.c:1546 +#: sql_help.c:1547 sql_help.c:1548 sql_help.c:1549 sql_help.c:1940 +#: sql_help.c:1941 sql_help.c:1942 sql_help.c:1943 sql_help.c:1944 +#: sql_help.c:2431 sql_help.c:2435 sql_help.c:2438 sql_help.c:2440 +#: sql_help.c:2442 sql_help.c:2444 sql_help.c:2450 sql_help.c:2452 +#: sql_help.c:2454 sql_help.c:2456 sql_help.c:2458 sql_help.c:2459 +#: sql_help.c:2460 sql_help.c:2685 sql_help.c:2689 sql_help.c:2692 +#: sql_help.c:2694 sql_help.c:2696 sql_help.c:2698 sql_help.c:2704 +#: sql_help.c:2706 sql_help.c:2708 sql_help.c:2710 sql_help.c:2712 +#: sql_help.c:2713 sql_help.c:2714 sql_help.c:2937 msgid "role_name" msgstr "角色名称" -#: sql_help.c:162 sql_help.c:529 sql_help.c:531 sql_help.c:745 sql_help.c:1073 -#: sql_help.c:1077 sql_help.c:1181 sql_help.c:1441 sql_help.c:1450 -#: sql_help.c:1472 sql_help.c:2161 sql_help.c:2446 sql_help.c:2447 -#: sql_help.c:2451 sql_help.c:2456 sql_help.c:2513 sql_help.c:2514 -#: sql_help.c:2519 sql_help.c:2524 sql_help.c:2645 sql_help.c:2646 -#: sql_help.c:2650 sql_help.c:2655 sql_help.c:2722 sql_help.c:2724 -#: sql_help.c:2755 sql_help.c:2797 sql_help.c:2798 sql_help.c:2802 -#: sql_help.c:2807 +#: sql_help.c:180 sql_help.c:693 sql_help.c:695 sql_help.c:953 sql_help.c:1293 +#: sql_help.c:1297 sql_help.c:1435 sql_help.c:1698 sql_help.c:1708 +#: sql_help.c:1730 sql_help.c:2474 sql_help.c:2822 sql_help.c:2823 +#: sql_help.c:2827 sql_help.c:2832 sql_help.c:2891 sql_help.c:2892 +#: sql_help.c:2897 sql_help.c:2902 sql_help.c:3025 sql_help.c:3026 +#: sql_help.c:3030 sql_help.c:3035 sql_help.c:3106 sql_help.c:3108 +#: sql_help.c:3139 sql_help.c:3181 sql_help.c:3182 sql_help.c:3186 +#: sql_help.c:3191 msgid "expression" msgstr "表达式" -#: sql_help.c:165 +#: sql_help.c:183 msgid "domain_constraint" msgstr "域_约束" -#: sql_help.c:167 sql_help.c:543 sql_help.c:845 sql_help.c:1076 -#: sql_help.c:1440 sql_help.c:1449 +#: sql_help.c:185 sql_help.c:708 sql_help.c:709 sql_help.c:728 sql_help.c:1059 +#: sql_help.c:1296 sql_help.c:1697 sql_help.c:1707 msgid "constraint_name" msgstr "约束名称" # describe.c:498 -#: sql_help.c:183 sql_help.c:1088 sql_help.c:1200 -msgid "valfunction" -msgstr "验证函数" +#: sql_help.c:225 sql_help.c:227 sql_help.c:229 sql_help.c:231 sql_help.c:1308 +#: sql_help.c:2080 +msgid "extension_name" +msgstr "extension_name(扩展名)" + +#: sql_help.c:226 sql_help.c:613 +msgid "new_version" +msgstr "新版本" -#: sql_help.c:215 sql_help.c:220 sql_help.c:225 sql_help.c:230 sql_help.c:851 -#: sql_help.c:1114 sql_help.c:1805 sql_help.c:2135 sql_help.c:2364 +#: sql_help.c:230 sql_help.c:232 +msgid "member_object" +msgstr "member_object" + +#: sql_help.c:233 +msgid "where member_object is:" +msgstr "member_object的位置:" + +#: sql_help.c:234 sql_help.c:1052 sql_help.c:2771 +msgid "agg_name" +msgstr "聚合函数名称" + +# describe.c:1689 +#: sql_help.c:235 sql_help.c:1053 sql_help.c:2772 +msgid "agg_type" +msgstr "聚合函数操作数据的类型" + +# describe.c:1688 +#: sql_help.c:236 sql_help.c:1054 sql_help.c:1215 sql_help.c:1219 +#: sql_help.c:1221 sql_help.c:2039 +msgid "source_type" +msgstr "类型指派中的源数据类型" + +# describe.c:1689 +#: sql_help.c:237 sql_help.c:1055 sql_help.c:1216 sql_help.c:1220 +#: sql_help.c:1222 sql_help.c:2040 +msgid "target_type" +msgstr "类型指派中的目标数据类型" + +# describe.c:1375 +#: sql_help.c:238 sql_help.c:239 sql_help.c:240 sql_help.c:241 sql_help.c:242 +#: sql_help.c:250 sql_help.c:252 sql_help.c:254 sql_help.c:255 sql_help.c:256 +#: sql_help.c:257 sql_help.c:258 sql_help.c:259 sql_help.c:260 sql_help.c:261 +#: sql_help.c:262 sql_help.c:263 sql_help.c:264 sql_help.c:1056 +#: sql_help.c:1061 sql_help.c:1062 sql_help.c:1063 sql_help.c:1064 +#: sql_help.c:1065 sql_help.c:1066 sql_help.c:1071 sql_help.c:1076 +#: sql_help.c:1078 sql_help.c:1080 sql_help.c:1081 sql_help.c:1084 +#: sql_help.c:1085 sql_help.c:1086 sql_help.c:1087 sql_help.c:1088 +#: sql_help.c:1089 sql_help.c:1090 sql_help.c:1091 sql_help.c:1092 +#: sql_help.c:1095 sql_help.c:1096 sql_help.c:2768 sql_help.c:2773 +#: sql_help.c:2774 sql_help.c:2780 sql_help.c:2781 sql_help.c:2782 +#: sql_help.c:2783 sql_help.c:2784 +msgid "object_name" +msgstr "对象_名称" + +# describe.c:498 +#: sql_help.c:243 sql_help.c:495 sql_help.c:1067 sql_help.c:1217 +#: sql_help.c:1252 sql_help.c:1470 sql_help.c:1501 sql_help.c:1845 +#: sql_help.c:2445 sql_help.c:2699 sql_help.c:2775 sql_help.c:2848 +#: sql_help.c:2853 sql_help.c:3051 sql_help.c:3056 sql_help.c:3207 +#: sql_help.c:3212 +msgid "function_name" +msgstr "函数名称" + +#: sql_help.c:244 sql_help.c:352 sql_help.c:357 sql_help.c:362 sql_help.c:367 +#: sql_help.c:1068 sql_help.c:1368 sql_help.c:2106 sql_help.c:2446 +#: sql_help.c:2700 sql_help.c:2776 msgid "argmode" msgstr "参数模式" # describe.c:480 -#: sql_help.c:216 sql_help.c:221 sql_help.c:226 sql_help.c:231 sql_help.c:852 -#: sql_help.c:1115 sql_help.c:1806 +#: sql_help.c:245 sql_help.c:353 sql_help.c:358 sql_help.c:363 sql_help.c:368 +#: sql_help.c:1069 sql_help.c:1369 sql_help.c:2107 sql_help.c:2777 msgid "argname" msgstr "参数名称" # describe.c:1689 -#: sql_help.c:217 sql_help.c:222 sql_help.c:227 sql_help.c:232 sql_help.c:853 -#: sql_help.c:1116 sql_help.c:1807 +#: sql_help.c:246 sql_help.c:354 sql_help.c:359 sql_help.c:364 sql_help.c:369 +#: sql_help.c:1070 sql_help.c:1370 sql_help.c:2108 sql_help.c:2778 msgid "argtype" msgstr "参数类型" +# describe.c:512 +#: sql_help.c:247 sql_help.c:488 sql_help.c:1073 sql_help.c:1494 +msgid "operator_name" +msgstr "操作符名称" + +# describe.c:321 +#: sql_help.c:248 sql_help.c:443 sql_help.c:447 sql_help.c:1074 +#: sql_help.c:1471 sql_help.c:2141 +msgid "left_type" +msgstr "操作符左边操作数的类型" + +# describe.c:321 +#: sql_help.c:249 sql_help.c:444 sql_help.c:448 sql_help.c:1075 +#: sql_help.c:1472 sql_help.c:2142 +msgid "right_type" +msgstr "操作符右边操作数的类型" + +#: sql_help.c:251 sql_help.c:253 sql_help.c:460 sql_help.c:463 sql_help.c:466 +#: sql_help.c:486 sql_help.c:498 sql_help.c:506 sql_help.c:509 sql_help.c:512 +#: sql_help.c:1077 sql_help.c:1079 sql_help.c:1491 sql_help.c:1512 +#: sql_help.c:1713 sql_help.c:2151 sql_help.c:2160 +msgid "index_method" +msgstr "访问索引的方法" + +# describe.c:498 +#: sql_help.c:277 sql_help.c:1323 +msgid "handler_function" +msgstr "handler_function(处理_函数)" + +# describe.c:498 +#: sql_help.c:278 sql_help.c:1324 +msgid "validator_function" +msgstr "validator_function(验证_函数)" + # describe.c:128 -#: sql_help.c:218 sql_help.c:514 sql_help.c:1446 sql_help.c:1447 -#: sql_help.c:1463 sql_help.c:1464 +#: sql_help.c:307 sql_help.c:355 sql_help.c:676 sql_help.c:863 sql_help.c:1704 +#: sql_help.c:1705 sql_help.c:1721 sql_help.c:1722 msgid "action" msgstr "操作" -#: sql_help.c:234 sql_help.c:522 +# describe.c:744 +#: sql_help.c:309 sql_help.c:316 sql_help.c:318 sql_help.c:319 sql_help.c:321 +#: sql_help.c:596 sql_help.c:678 sql_help.c:685 sql_help.c:689 sql_help.c:690 +#: sql_help.c:694 sql_help.c:696 sql_help.c:697 sql_help.c:698 sql_help.c:700 +#: sql_help.c:703 sql_help.c:705 sql_help.c:952 sql_help.c:955 sql_help.c:970 +#: sql_help.c:1140 sql_help.c:1144 sql_help.c:1156 sql_help.c:1157 +#: sql_help.c:1434 sql_help.c:1597 sql_help.c:1729 sql_help.c:2432 +#: sql_help.c:2433 sql_help.c:2473 sql_help.c:2686 sql_help.c:2687 +#: sql_help.c:3105 sql_help.c:3107 sql_help.c:3124 sql_help.c:3127 +msgid "column" +msgstr "列" + +# describe.c:744 +#: sql_help.c:310 sql_help.c:679 +msgid "new_column" +msgstr "新的列" + +#: sql_help.c:315 sql_help.c:371 sql_help.c:684 sql_help.c:876 msgid "where action is one of:" msgstr "操作可以是下列选项之一" -#: sql_help.c:235 sql_help.c:1122 +#: sql_help.c:372 sql_help.c:1376 msgid "execution_cost" msgstr "执行函数的开销" -#: sql_help.c:236 sql_help.c:1123 +#: sql_help.c:373 sql_help.c:1377 msgid "result_rows" msgstr "返回记录的数量" -#: sql_help.c:251 sql_help.c:253 sql_help.c:255 +#: sql_help.c:388 sql_help.c:390 sql_help.c:392 msgid "group_name" msgstr "组名称" -#: sql_help.c:252 sql_help.c:254 sql_help.c:728 sql_help.c:1050 -#: sql_help.c:1319 sql_help.c:1321 sql_help.c:1501 sql_help.c:1680 -#: sql_help.c:1989 sql_help.c:2569 +#: sql_help.c:389 sql_help.c:391 sql_help.c:936 sql_help.c:1268 +#: sql_help.c:1576 sql_help.c:1578 sql_help.c:1759 sql_help.c:1955 +#: sql_help.c:2290 sql_help.c:2947 msgid "user_name" msgstr "用户名" # describe.c:1342 -#: sql_help.c:270 sql_help.c:1500 sql_help.c:1924 sql_help.c:2146 -#: sql_help.c:2375 +#: sql_help.c:407 sql_help.c:1758 sql_help.c:2225 sql_help.c:2457 +#: sql_help.c:2711 msgid "tablespace_name" msgstr "表空间的名称" -#: sql_help.c:272 sql_help.c:275 sql_help.c:553 sql_help.c:555 sql_help.c:1183 -#: sql_help.c:1427 sql_help.c:1436 sql_help.c:1467 sql_help.c:1489 +#: sql_help.c:409 sql_help.c:412 sql_help.c:719 sql_help.c:721 sql_help.c:1438 +#: sql_help.c:1685 sql_help.c:1693 sql_help.c:1725 sql_help.c:1747 msgid "storage_parameter" msgstr "存储参数" # large_obj.c:264 -#: sql_help.c:295 sql_help.c:855 +#: sql_help.c:432 sql_help.c:1072 sql_help.c:2779 msgid "large_object_oid" msgstr "大对象的OID" -# describe.c:321 -#: sql_help.c:305 sql_help.c:857 sql_help.c:1216 sql_help.c:1840 -msgid "left_type" -msgstr "操作符左边操作数的类型" - -# describe.c:321 -#: sql_help.c:306 sql_help.c:858 sql_help.c:1217 sql_help.c:1841 -msgid "right_type" -msgstr "操作符右边操作数的类型" - -#: sql_help.c:317 sql_help.c:320 sql_help.c:339 sql_help.c:350 sql_help.c:358 -#: sql_help.c:361 sql_help.c:860 sql_help.c:862 sql_help.c:1236 -#: sql_help.c:1256 sql_help.c:1455 sql_help.c:1850 sql_help.c:1859 -msgid "index_method" -msgstr "访问索引的方法" - -#: sql_help.c:340 sql_help.c:351 sql_help.c:1238 +#: sql_help.c:487 sql_help.c:499 sql_help.c:1493 msgid "strategy_number" msgstr "访问索引所用方法的编号" -# describe.c:512 -#: sql_help.c:341 sql_help.c:856 sql_help.c:1239 -msgid "operator_name" -msgstr "操作符名称" - # describe.c:415 # describe.c:745 # describe.c:1478 # describe.c:1587 -#: sql_help.c:342 sql_help.c:343 sql_help.c:345 sql_help.c:346 sql_help.c:352 -#: sql_help.c:353 sql_help.c:355 sql_help.c:356 sql_help.c:1240 -#: sql_help.c:1241 sql_help.c:1243 sql_help.c:1244 +#: sql_help.c:489 sql_help.c:490 sql_help.c:493 sql_help.c:494 sql_help.c:500 +#: sql_help.c:501 sql_help.c:503 sql_help.c:504 sql_help.c:1495 +#: sql_help.c:1496 sql_help.c:1499 sql_help.c:1500 msgid "op_type" msgstr "操作数类型" -#: sql_help.c:344 sql_help.c:354 sql_help.c:1242 +#: sql_help.c:491 sql_help.c:1497 +msgid "sort_family_name" +msgstr "sort_family_name(排序家族名)" + +#: sql_help.c:492 sql_help.c:502 sql_help.c:1498 msgid "support_number" msgstr "访问索引所使用函数的编号" -# describe.c:498 -#: sql_help.c:347 sql_help.c:850 sql_help.c:996 sql_help.c:1021 -#: sql_help.c:1034 sql_help.c:1215 sql_help.c:1245 sql_help.c:1576 -#: sql_help.c:2134 sql_help.c:2363 sql_help.c:2472 sql_help.c:2477 -#: sql_help.c:2671 sql_help.c:2676 sql_help.c:2823 sql_help.c:2828 -msgid "function_name" -msgstr "函数名称" - # describe.c:1689 -#: sql_help.c:348 sql_help.c:997 sql_help.c:1246 +#: sql_help.c:496 sql_help.c:1218 sql_help.c:1502 msgid "argument_type" msgstr "参数类型" @@ -3459,826 +3806,876 @@ msgstr "参数类型" # command.c:939 # startup.c:187 # startup.c:205 -#: sql_help.c:393 sql_help.c:707 sql_help.c:1158 sql_help.c:1286 -#: sql_help.c:1663 +#: sql_help.c:545 sql_help.c:915 sql_help.c:1412 sql_help.c:1543 +#: sql_help.c:1938 msgid "password" msgstr "口令" -#: sql_help.c:394 sql_help.c:708 sql_help.c:1159 sql_help.c:1287 -#: sql_help.c:1664 +#: sql_help.c:546 sql_help.c:916 sql_help.c:1413 sql_help.c:1544 +#: sql_help.c:1939 msgid "timestamp" msgstr "时间戳" -#: sql_help.c:398 sql_help.c:402 sql_help.c:405 sql_help.c:408 sql_help.c:2128 -#: sql_help.c:2357 +#: sql_help.c:550 sql_help.c:554 sql_help.c:557 sql_help.c:560 sql_help.c:2439 +#: sql_help.c:2693 msgid "database_name" msgstr "数据库名称" -#: sql_help.c:437 sql_help.c:1334 +#: sql_help.c:589 sql_help.c:1591 msgid "increment" msgstr "增量" # describe.c:415 # describe.c:543 # describe.c:1477 -#: sql_help.c:438 sql_help.c:1335 +#: sql_help.c:590 sql_help.c:1592 msgid "minvalue" msgstr "最小值" # describe.c:415 # describe.c:543 # describe.c:1477 -#: sql_help.c:439 sql_help.c:1336 +#: sql_help.c:591 sql_help.c:1593 msgid "maxvalue" msgstr "最大值" -#: sql_help.c:440 sql_help.c:1337 sql_help.c:2459 sql_help.c:2527 -#: sql_help.c:2658 sql_help.c:2759 sql_help.c:2810 +#: sql_help.c:592 sql_help.c:1594 sql_help.c:2835 sql_help.c:2905 +#: sql_help.c:3038 sql_help.c:3143 sql_help.c:3194 msgid "start" msgstr "起始值" -#: sql_help.c:441 +#: sql_help.c:593 msgid "restart" msgstr "重新启动后的序列值" -#: sql_help.c:442 sql_help.c:1338 +#: sql_help.c:594 sql_help.c:1595 msgid "cache" msgstr "缓存" -# describe.c:744 -#: sql_help.c:444 sql_help.c:516 sql_help.c:523 sql_help.c:526 sql_help.c:527 -#: sql_help.c:530 sql_help.c:532 sql_help.c:533 sql_help.c:534 sql_help.c:536 -#: sql_help.c:539 sql_help.c:541 sql_help.c:744 sql_help.c:747 sql_help.c:762 -#: sql_help.c:920 sql_help.c:924 sql_help.c:936 sql_help.c:937 sql_help.c:1180 -#: sql_help.c:1340 sql_help.c:1471 sql_help.c:2121 sql_help.c:2122 -#: sql_help.c:2160 sql_help.c:2350 sql_help.c:2351 sql_help.c:2721 -#: sql_help.c:2723 sql_help.c:2740 sql_help.c:2743 -msgid "column" -msgstr "列" - -#: sql_help.c:460 sql_help.c:464 sql_help.c:729 sql_help.c:1350 -#: sql_help.c:1681 sql_help.c:1908 sql_help.c:1990 sql_help.c:2132 -#: sql_help.c:2361 +#: sql_help.c:612 sql_help.c:616 sql_help.c:937 sql_help.c:1342 +#: sql_help.c:1607 sql_help.c:1956 sql_help.c:2209 sql_help.c:2291 +#: sql_help.c:2443 sql_help.c:2697 msgid "server_name" msgstr "服务器名称" -#: sql_help.c:461 -msgid "new_version" -msgstr "新版本" +# describe.c:526 +#: sql_help.c:686 sql_help.c:691 sql_help.c:878 sql_help.c:882 sql_help.c:1291 +#: sql_help.c:1341 sql_help.c:1490 sql_help.c:1678 sql_help.c:1885 +#: sql_help.c:2558 +msgid "data_type" +msgstr "数据_类型" -# describe.c:744 -#: sql_help.c:517 -msgid "new_column" -msgstr "新的列" +# describe.c:128 +#: sql_help.c:687 sql_help.c:692 sql_help.c:879 sql_help.c:883 sql_help.c:1292 +#: sql_help.c:1436 sql_help.c:1679 sql_help.c:1886 +msgid "collation" +msgstr "校对规则" -#: sql_help.c:525 sql_help.c:1422 sql_help.c:1434 +#: sql_help.c:688 sql_help.c:1680 sql_help.c:1691 msgid "column_constraint" msgstr "列约束" -#: sql_help.c:535 +#: sql_help.c:699 msgid "integer" msgstr "整数" -#: sql_help.c:537 sql_help.c:540 +#: sql_help.c:701 sql_help.c:704 msgid "attribute_option" msgstr "属性选项" -#: sql_help.c:542 sql_help.c:1423 sql_help.c:1435 +#: sql_help.c:706 sql_help.c:1681 sql_help.c:1692 msgid "table_constraint" msgstr "表约束" +#: sql_help.c:707 +msgid "table_constraint_using_index" +msgstr "table_constraint_using_index(表约束使用索引)" + # describe.c:575 -#: sql_help.c:544 sql_help.c:545 sql_help.c:546 sql_help.c:547 sql_help.c:874 +#: sql_help.c:710 sql_help.c:711 sql_help.c:712 sql_help.c:713 sql_help.c:1093 msgid "trigger_name" msgstr "触发器_名称" -#: sql_help.c:548 sql_help.c:549 sql_help.c:550 sql_help.c:551 +#: sql_help.c:714 sql_help.c:715 sql_help.c:716 sql_help.c:717 msgid "rewrite_rule_name" msgstr "重写规则名称" # describe.c:543 # describe.c:1477 -#: sql_help.c:552 sql_help.c:801 +#: sql_help.c:718 sql_help.c:729 sql_help.c:1010 msgid "index_name" msgstr "索引名称" -#: sql_help.c:556 sql_help.c:557 sql_help.c:1424 sql_help.c:1426 +#: sql_help.c:722 sql_help.c:723 sql_help.c:1682 sql_help.c:1684 msgid "parent_table" msgstr "父表" +#: sql_help.c:724 sql_help.c:1689 +msgid "type_name" +msgstr "类型名称" + +#: sql_help.c:727 +msgid "and table_constraint_using_index is:" +msgstr "table_constraint_using_index 是:" + # describe.c:1342 -#: sql_help.c:575 sql_help.c:578 +#: sql_help.c:745 sql_help.c:748 msgid "tablespace_option" msgstr "表空间_选项" -#: sql_help.c:598 sql_help.c:601 sql_help.c:607 sql_help.c:611 +#: sql_help.c:769 sql_help.c:772 sql_help.c:778 sql_help.c:782 msgid "token_type" msgstr "符号类型" -#: sql_help.c:599 sql_help.c:602 +#: sql_help.c:770 sql_help.c:773 msgid "dictionary_name" msgstr "字典名称" -#: sql_help.c:604 sql_help.c:608 +#: sql_help.c:775 sql_help.c:779 msgid "old_dictionary" msgstr "旧的字典" -#: sql_help.c:605 sql_help.c:609 +#: sql_help.c:776 sql_help.c:780 msgid "new_dictionary" msgstr "新的字典" -#: sql_help.c:775 sql_help.c:2583 sql_help.c:2584 sql_help.c:2607 +#: sql_help.c:867 sql_help.c:877 sql_help.c:880 sql_help.c:881 sql_help.c:1884 +msgid "attribute_name" +msgstr "属性_名称" + +#: sql_help.c:868 +msgid "new_attribute_name" +msgstr "new_attribute_name(新属性名)" + +#: sql_help.c:874 +msgid "new_enum_value" +msgstr "new_enum_value(新枚举名)" + +#: sql_help.c:875 +msgid "existing_enum_value" +msgstr "existing_enum_value" + +#: sql_help.c:984 sql_help.c:2962 sql_help.c:2963 sql_help.c:2987 msgid "transaction_mode" msgstr "事务模式" -#: sql_help.c:776 sql_help.c:2585 sql_help.c:2608 +#: sql_help.c:985 sql_help.c:2964 sql_help.c:2988 msgid "where transaction_mode is one of:" msgstr "事务模式可以是下列选项之一:" # describe.c:415 # describe.c:543 # describe.c:1477 -#: sql_help.c:800 sql_help.c:839 sql_help.c:846 sql_help.c:866 sql_help.c:875 -#: sql_help.c:919 sql_help.c:923 sql_help.c:1018 sql_help.c:1418 -#: sql_help.c:1430 sql_help.c:1487 sql_help.c:2118 sql_help.c:2123 -#: sql_help.c:2347 sql_help.c:2352 sql_help.c:2461 sql_help.c:2463 -#: sql_help.c:2489 sql_help.c:2529 sql_help.c:2660 sql_help.c:2662 -#: sql_help.c:2688 sql_help.c:2812 sql_help.c:2814 sql_help.c:2840 +#: sql_help.c:1009 sql_help.c:1060 sql_help.c:1083 sql_help.c:1094 +#: sql_help.c:1139 sql_help.c:1143 sql_help.c:1339 sql_help.c:1676 +#: sql_help.c:1688 sql_help.c:1745 sql_help.c:2429 sql_help.c:2434 +#: sql_help.c:2683 sql_help.c:2688 sql_help.c:2769 sql_help.c:2837 +#: sql_help.c:2839 sql_help.c:2868 sql_help.c:2907 sql_help.c:3040 +#: sql_help.c:3042 sql_help.c:3071 sql_help.c:3196 sql_help.c:3198 +#: sql_help.c:3227 msgid "table_name" msgstr "表名" -# describe.c:1375 -#: sql_help.c:838 sql_help.c:847 sql_help.c:848 sql_help.c:849 sql_help.c:854 -#: sql_help.c:859 sql_help.c:861 sql_help.c:863 sql_help.c:864 sql_help.c:867 -#: sql_help.c:868 sql_help.c:869 sql_help.c:870 sql_help.c:871 sql_help.c:872 -#: sql_help.c:873 sql_help.c:876 sql_help.c:877 -msgid "object_name" -msgstr "对象_名称" +#: sql_help.c:1057 +msgid "relation_name" +msgstr "relation_name(关系名)" # describe.c:1375 -#: sql_help.c:840 sql_help.c:1119 sql_help.c:1419 sql_help.c:1432 -#: sql_help.c:1451 sql_help.c:1453 sql_help.c:1460 sql_help.c:1488 -#: sql_help.c:1693 sql_help.c:2487 sql_help.c:2686 sql_help.c:2838 +#: sql_help.c:1058 sql_help.c:1340 sql_help.c:1373 sql_help.c:1677 +#: sql_help.c:1690 sql_help.c:1709 sql_help.c:1711 sql_help.c:1718 +#: sql_help.c:1746 sql_help.c:1848 sql_help.c:1968 sql_help.c:2770 +#: sql_help.c:2863 sql_help.c:3066 sql_help.c:3222 msgid "column_name" msgstr "列名称" -#: sql_help.c:841 -msgid "agg_name" -msgstr "聚合函数名称" - -# describe.c:1689 -#: sql_help.c:842 -msgid "agg_type" -msgstr "聚合函数操作数据的类型" - -# describe.c:1688 -#: sql_help.c:843 sql_help.c:994 sql_help.c:998 sql_help.c:1000 -#: sql_help.c:1762 -msgid "source_type" -msgstr "类型指派中的源数据类型" - -# describe.c:1689 -#: sql_help.c:844 sql_help.c:995 sql_help.c:999 sql_help.c:1001 -#: sql_help.c:1763 -msgid "target_type" -msgstr "类型指派中的目标数据类型" - # describe.c:1375 -#: sql_help.c:865 +#: sql_help.c:1082 msgid "rule_name" msgstr "规则_名称" -#: sql_help.c:878 +#: sql_help.c:1097 msgid "text" msgstr "文本" -#: sql_help.c:893 sql_help.c:2231 sql_help.c:2393 +#: sql_help.c:1112 sql_help.c:2567 sql_help.c:2729 msgid "transaction_id" msgstr "事务_ID" # describe.c:1375 -#: sql_help.c:921 sql_help.c:926 sql_help.c:2180 +#: sql_help.c:1141 sql_help.c:1146 sql_help.c:2493 msgid "filename" msgstr "文件名" -#: sql_help.c:925 sql_help.c:1492 sql_help.c:1694 sql_help.c:1712 -#: sql_help.c:2162 +#: sql_help.c:1145 sql_help.c:1750 sql_help.c:1969 sql_help.c:1987 +#: sql_help.c:2475 msgid "query" msgstr "查询" -#: sql_help.c:928 +#: sql_help.c:1148 sql_help.c:2335 msgid "where option can be one of:" msgstr "选项可以是下列内容之一:" # help.c:211 -#: sql_help.c:929 +#: sql_help.c:1149 msgid "format_name" msgstr "格式_名称" -#: sql_help.c:930 sql_help.c:933 sql_help.c:2023 sql_help.c:2024 -#: sql_help.c:2025 sql_help.c:2026 +#: sql_help.c:1150 sql_help.c:1153 sql_help.c:2336 sql_help.c:2337 +#: sql_help.c:2338 sql_help.c:2339 msgid "boolean" msgstr "布尔" -#: sql_help.c:931 +#: sql_help.c:1151 msgid "delimiter_character" msgstr "分隔字符" -#: sql_help.c:932 +#: sql_help.c:1152 msgid "null_string" msgstr "空字符串" -#: sql_help.c:934 +#: sql_help.c:1154 msgid "quote_character" msgstr "引用字符" -#: sql_help.c:935 +#: sql_help.c:1155 msgid "escape_character" msgstr "转义字符" +# describe.c:365 +#: sql_help.c:1158 +msgid "encoding_name" +msgstr "encoding_name(编码名)" + # describe.c:526 -#: sql_help.c:963 +#: sql_help.c:1184 msgid "input_data_type" msgstr "输入数据类型" # describe.c:415 # describe.c:543 # describe.c:1477 -#: sql_help.c:964 sql_help.c:972 +#: sql_help.c:1185 sql_help.c:1193 msgid "sfunc" msgstr "状态转换函数名称" # describe.c:526 -#: sql_help.c:965 sql_help.c:973 +#: sql_help.c:1186 sql_help.c:1194 msgid "state_data_type" msgstr "状态值的数据类型" # describe.c:498 -#: sql_help.c:966 sql_help.c:974 +#: sql_help.c:1187 sql_help.c:1195 msgid "ffunc" msgstr "计算最终结果集的函数名称" -#: sql_help.c:967 sql_help.c:975 +#: sql_help.c:1188 sql_help.c:1196 msgid "initial_condition" msgstr "初始条件" # describe.c:512 -#: sql_help.c:968 sql_help.c:976 +#: sql_help.c:1189 sql_help.c:1197 msgid "sort_operator" msgstr "排序_操作符" -#: sql_help.c:969 +#: sql_help.c:1190 msgid "or the old syntax" msgstr "或者是旧的语法" # describe.c:1689 -#: sql_help.c:971 +#: sql_help.c:1192 msgid "base_type" msgstr "基础_类型" -#: sql_help.c:1017 sql_help.c:1304 sql_help.c:1573 -msgid "event" -msgstr "事件" +# help.c:127 +#: sql_help.c:1236 +msgid "locale" +msgstr "本地化语言" -#: sql_help.c:1019 -msgid "referenced_table_name" -msgstr "被引用表的名称" +#: sql_help.c:1237 sql_help.c:1271 +msgid "lc_collate" +msgstr "排序规则" -# help.c:123 -#: sql_help.c:1020 sql_help.c:1306 sql_help.c:1575 sql_help.c:1726 -#: sql_help.c:2450 sql_help.c:2452 sql_help.c:2518 sql_help.c:2520 -#: sql_help.c:2649 sql_help.c:2651 sql_help.c:2726 sql_help.c:2801 -#: sql_help.c:2803 -msgid "condition" -msgstr "条件" +# describe.c:415 +# describe.c:745 +# describe.c:1478 +# describe.c:1587 +#: sql_help.c:1238 sql_help.c:1272 +msgid "lc_ctype" +msgstr "字符分类" -#: sql_help.c:1022 sql_help.c:1577 -msgid "arguments" -msgstr "参数" +# describe.c:1636 +#: sql_help.c:1240 +msgid "existing_collation" +msgstr "existing_collation(当前的本地化语言)" # describe.c:187 -#: sql_help.c:1032 +#: sql_help.c:1250 msgid "source_encoding" msgstr "源_编码" # describe.c:365 -#: sql_help.c:1033 +#: sql_help.c:1251 msgid "dest_encoding" msgstr "目的_编码" -#: sql_help.c:1051 sql_help.c:1527 +#: sql_help.c:1269 sql_help.c:1785 msgid "template" msgstr "模版" # describe.c:365 -#: sql_help.c:1052 +#: sql_help.c:1270 msgid "encoding" msgstr "字符集编码" -#: sql_help.c:1053 -msgid "lc_collate" -msgstr "排序规则" - -# describe.c:415 -# describe.c:745 -# describe.c:1478 -# describe.c:1587 -#: sql_help.c:1054 -msgid "lc_ctype" -msgstr "字符分类" - # describe.c:1342 -#: sql_help.c:1055 sql_help.c:1185 sql_help.c:1429 sql_help.c:1438 -#: sql_help.c:1469 sql_help.c:1491 +#: sql_help.c:1273 sql_help.c:1440 sql_help.c:1687 sql_help.c:1695 +#: sql_help.c:1727 sql_help.c:1749 msgid "tablespace" msgstr "表空间" -# describe.c:526 -#: sql_help.c:1072 sql_help.c:1235 sql_help.c:1420 sql_help.c:1613 -#: sql_help.c:2222 -msgid "data_type" -msgstr "数据_类型" - -#: sql_help.c:1074 +#: sql_help.c:1294 msgid "constraint" msgstr "约束" # describe.c:1174 -#: sql_help.c:1075 +#: sql_help.c:1295 msgid "where constraint is:" msgstr "约束是:" +# describe.c:82 +# describe.c:177 +# describe.c:247 +# describe.c:320 +# describe.c:415 +# describe.c:469 +# describe.c:1476 +# describe.c:1585 +# describe.c:1633 +#: sql_help.c:1309 +#, fuzzy +msgid "schema" +msgstr "架构模式" + +#: sql_help.c:1310 +msgid "version" +msgstr "version(版本)" + +#: sql_help.c:1311 +msgid "old_version" +msgstr "老版本" + # describe.c:1639 -#: sql_help.c:1117 sql_help.c:1421 sql_help.c:1433 +#: sql_help.c:1371 sql_help.c:1699 msgid "default_expr" msgstr "缺省_表达式" # describe.c:1689 -#: sql_help.c:1118 +#: sql_help.c:1372 msgid "rettype" msgstr "返回类型" -#: sql_help.c:1120 +#: sql_help.c:1374 msgid "column_type" msgstr "列的类型" -#: sql_help.c:1121 sql_help.c:1744 sql_help.c:2140 sql_help.c:2369 +#: sql_help.c:1375 sql_help.c:2021 sql_help.c:2451 sql_help.c:2705 msgid "lang_name" msgstr "语言名称" # describe.c:977 -#: sql_help.c:1127 +#: sql_help.c:1381 msgid "definition" msgstr "定义" -#: sql_help.c:1128 +#: sql_help.c:1382 msgid "obj_file" msgstr "目标文件" -#: sql_help.c:1129 +#: sql_help.c:1383 msgid "link_symbol" msgstr "链接_符号" -#: sql_help.c:1130 +#: sql_help.c:1384 msgid "attribute" msgstr "属性" -#: sql_help.c:1165 sql_help.c:1293 sql_help.c:1670 +#: sql_help.c:1419 sql_help.c:1550 sql_help.c:1945 msgid "uid" msgstr "uid" -#: sql_help.c:1179 +#: sql_help.c:1433 msgid "method" msgstr "方法" -#: sql_help.c:1182 sql_help.c:1473 +#: sql_help.c:1437 sql_help.c:1731 msgid "opclass" msgstr "操作符类型的名称" # describe.c:937 -#: sql_help.c:1186 sql_help.c:1459 +#: sql_help.c:1441 sql_help.c:1717 msgid "predicate" msgstr "述词" -#: sql_help.c:1198 +#: sql_help.c:1453 msgid "call_handler" msgstr "调用函数" -#: sql_help.c:1199 +#: sql_help.c:1454 msgid "inline_handler" msgstr "匿名代码块" -#: sql_help.c:1218 +# describe.c:498 +#: sql_help.c:1455 +msgid "valfunction" +msgstr "验证函数" + +#: sql_help.c:1473 msgid "com_op" msgstr "交换操作符" -#: sql_help.c:1219 +#: sql_help.c:1474 msgid "neg_op" msgstr "取负操作符" -#: sql_help.c:1220 +#: sql_help.c:1475 msgid "res_proc" msgstr "限制选择性估算函数" -#: sql_help.c:1221 +#: sql_help.c:1476 msgid "join_proc" msgstr "连接选择性估算函数" -#: sql_help.c:1237 +#: sql_help.c:1492 msgid "family_name" msgstr "操作符群的名称" # describe.c:1635 -#: sql_help.c:1247 +#: sql_help.c:1503 msgid "storage_type" msgstr "存储类型" -#: sql_help.c:1307 sql_help.c:1308 sql_help.c:1309 +#: sql_help.c:1561 sql_help.c:1841 +msgid "event" +msgstr "事件" + +# help.c:123 +#: sql_help.c:1563 sql_help.c:1844 sql_help.c:2003 sql_help.c:2826 +#: sql_help.c:2828 sql_help.c:2896 sql_help.c:2898 sql_help.c:3029 +#: sql_help.c:3031 sql_help.c:3110 sql_help.c:3185 sql_help.c:3187 +msgid "condition" +msgstr "条件" + +#: sql_help.c:1564 sql_help.c:1565 sql_help.c:1566 msgid "command" msgstr "命令" -#: sql_help.c:1320 sql_help.c:1322 +#: sql_help.c:1577 sql_help.c:1579 msgid "schema_element" msgstr "模式中对象" -#: sql_help.c:1351 +#: sql_help.c:1608 msgid "server_type" msgstr "服务器类型" -#: sql_help.c:1352 +#: sql_help.c:1609 msgid "server_version" msgstr "服务器版本" -#: sql_help.c:1353 sql_help.c:2130 sql_help.c:2359 +#: sql_help.c:1610 sql_help.c:2441 sql_help.c:2695 msgid "fdw_name" msgstr "外部数据封装器的名称" # help.c:88 -#: sql_help.c:1425 +#: sql_help.c:1683 msgid "like_option" msgstr "like选项" -#: sql_help.c:1431 -msgid "type_name" -msgstr "类型名称" - # describe.c:1174 -#: sql_help.c:1439 +#: sql_help.c:1696 msgid "where column_constraint is:" msgstr "列的约束是:" -#: sql_help.c:1442 sql_help.c:1443 sql_help.c:1452 sql_help.c:1454 -#: sql_help.c:1458 +#: sql_help.c:1700 sql_help.c:1701 sql_help.c:1710 sql_help.c:1712 +#: sql_help.c:1716 msgid "index_parameters" msgstr "索引参数" # describe.c:415 # describe.c:543 # describe.c:1477 -#: sql_help.c:1444 sql_help.c:1461 +#: sql_help.c:1702 sql_help.c:1719 msgid "reftable" msgstr "所引用的表" # describe.c:744 -#: sql_help.c:1445 sql_help.c:1462 +#: sql_help.c:1703 sql_help.c:1720 msgid "refcolumn" msgstr "所引用的列" -#: sql_help.c:1448 +#: sql_help.c:1706 msgid "and table_constraint is:" msgstr "表约束是:" -#: sql_help.c:1456 +#: sql_help.c:1714 msgid "exclude_element" msgstr "排除项" -#: sql_help.c:1465 +#: sql_help.c:1723 msgid "and like_option is:" msgstr "like_选项是" -#: sql_help.c:1466 +#: sql_help.c:1724 msgid "index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:" msgstr "在UNIQUE, PRIMARY KEY和EXCLUDE中的索引参数是:" -#: sql_help.c:1470 +#: sql_help.c:1728 msgid "exclude_element in an EXCLUDE constraint is:" msgstr "在EXCLUDE约束中的排除项是:" -#: sql_help.c:1502 +#: sql_help.c:1760 msgid "directory" msgstr "目录" -#: sql_help.c:1514 +#: sql_help.c:1772 msgid "parser_name" msgstr "解析器名称 " -#: sql_help.c:1515 +#: sql_help.c:1773 msgid "source_config" msgstr "已存在的文本搜索配置名称" # describe.c:498 -#: sql_help.c:1544 +#: sql_help.c:1802 msgid "start_function" msgstr "启动_函数" # sql_help.h:249 -#: sql_help.c:1545 +#: sql_help.c:1803 msgid "gettoken_function" msgstr "获取下一个符号函数的名称" # describe.c:498 -#: sql_help.c:1546 +#: sql_help.c:1804 msgid "end_function" msgstr "结束_函数" # describe.c:498 -#: sql_help.c:1547 +#: sql_help.c:1805 msgid "lextypes_function" msgstr "语义类型_函数" # describe.c:498 -#: sql_help.c:1548 +#: sql_help.c:1806 msgid "headline_function" msgstr "标题_函数" # describe.c:498 -#: sql_help.c:1560 +#: sql_help.c:1818 msgid "init_function" msgstr "初始化_函数" # describe.c:498 -#: sql_help.c:1561 +#: sql_help.c:1819 msgid "lexize_function" msgstr "LEXIZE函数" -#: sql_help.c:1612 -msgid "attribute_name" -msgstr "属性_名称" +#: sql_help.c:1843 +msgid "referenced_table_name" +msgstr "被引用表的名称" + +#: sql_help.c:1846 +msgid "arguments" +msgstr "参数" + +#: sql_help.c:1847 +msgid "where event can be one of:" +msgstr "事件可以下述之一:" # describe.c:415 # describe.c:543 # describe.c:1477 -#: sql_help.c:1615 +#: sql_help.c:1888 sql_help.c:2785 msgid "label" msgstr "标签" # describe.c:498 -#: sql_help.c:1617 +#: sql_help.c:1890 msgid "input_function" msgstr "输入_函数" # describe.c:498 -#: sql_help.c:1618 +#: sql_help.c:1891 msgid "output_function" msgstr "输出_函数" # sql_help.h:249 -#: sql_help.c:1619 +#: sql_help.c:1892 msgid "receive_function" msgstr "接收_函数" # describe.c:498 -#: sql_help.c:1620 +#: sql_help.c:1893 msgid "send_function" msgstr "发送_函数" -#: sql_help.c:1621 +#: sql_help.c:1894 msgid "type_modifier_input_function" msgstr "类型修改器数组输入函数名称" -#: sql_help.c:1622 +#: sql_help.c:1895 msgid "type_modifier_output_function" msgstr "类型修改器输出函数名称" # describe.c:498 -#: sql_help.c:1623 +#: sql_help.c:1896 msgid "analyze_function" msgstr "分析_函数" -#: sql_help.c:1624 +#: sql_help.c:1897 msgid "internallength" msgstr "内部长度" # describe.c:1693 -#: sql_help.c:1625 +#: sql_help.c:1898 msgid "alignment" msgstr "顺序排列(alignment)" # describe.c:1635 -#: sql_help.c:1626 +#: sql_help.c:1899 msgid "storage" msgstr "存储" -#: sql_help.c:1627 +#: sql_help.c:1900 msgid "like_type" msgstr "LIKE类型(like_type)" -#: sql_help.c:1628 +#: sql_help.c:1901 msgid "category" msgstr "类型" -#: sql_help.c:1629 +#: sql_help.c:1902 msgid "preferred" msgstr "优先" # describe.c:1639 -#: sql_help.c:1630 +#: sql_help.c:1903 msgid "default" msgstr "缺省" -#: sql_help.c:1631 +#: sql_help.c:1904 msgid "element" msgstr "成员项" -#: sql_help.c:1632 +#: sql_help.c:1905 msgid "delimiter" msgstr "分隔符" -#: sql_help.c:1724 sql_help.c:2464 sql_help.c:2467 sql_help.c:2470 -#: sql_help.c:2474 sql_help.c:2663 sql_help.c:2666 sql_help.c:2669 -#: sql_help.c:2673 sql_help.c:2720 sql_help.c:2815 sql_help.c:2818 -#: sql_help.c:2821 sql_help.c:2825 +#: sql_help.c:1906 +msgid "collatable" +msgstr "要校对的" + +#: sql_help.c:1999 sql_help.c:2471 sql_help.c:2821 sql_help.c:2890 +#: sql_help.c:3024 sql_help.c:3102 sql_help.c:3180 +msgid "with_query" +msgstr "with查询语句(with_query)" + +#: sql_help.c:2001 sql_help.c:2840 sql_help.c:2843 sql_help.c:2846 +#: sql_help.c:2850 sql_help.c:3043 sql_help.c:3046 sql_help.c:3049 +#: sql_help.c:3053 sql_help.c:3104 sql_help.c:3199 sql_help.c:3202 +#: sql_help.c:3205 sql_help.c:3209 msgid "alias" msgstr "化名" -#: sql_help.c:1725 +#: sql_help.c:2002 msgid "using_list" msgstr "USING列表(using_list)" -#: sql_help.c:1727 sql_help.c:2054 sql_help.c:2204 sql_help.c:2727 +#: sql_help.c:2004 sql_help.c:2365 sql_help.c:2534 sql_help.c:3111 msgid "cursor_name" msgstr "游标名称" -#: sql_help.c:1728 sql_help.c:2163 sql_help.c:2728 +#: sql_help.c:2005 sql_help.c:2476 sql_help.c:3112 msgid "output_expression" msgstr "输出表达式" -#: sql_help.c:1729 sql_help.c:2164 sql_help.c:2448 sql_help.c:2515 -#: sql_help.c:2647 sql_help.c:2729 sql_help.c:2799 +#: sql_help.c:2006 sql_help.c:2477 sql_help.c:2824 sql_help.c:2893 +#: sql_help.c:3027 sql_help.c:3113 sql_help.c:3183 msgid "output_name" msgstr "输出名称" -#: sql_help.c:1745 +#: sql_help.c:2022 msgid "code" msgstr "编码" -#: sql_help.c:2014 +#: sql_help.c:2315 msgid "parameter" msgstr "参数" -#: sql_help.c:2027 sql_help.c:2028 sql_help.c:2223 +#: sql_help.c:2333 sql_help.c:2334 sql_help.c:2559 msgid "statement" msgstr "语句" # help.c:123 -#: sql_help.c:2053 sql_help.c:2203 +#: sql_help.c:2364 sql_help.c:2533 msgid "direction" msgstr "方向" -#: sql_help.c:2055 +#: sql_help.c:2366 sql_help.c:2535 msgid "where direction can be empty or one of:" msgstr "方向可以为空或者是下列选项之一:" -#: sql_help.c:2056 sql_help.c:2057 sql_help.c:2058 sql_help.c:2059 -#: sql_help.c:2060 sql_help.c:2458 sql_help.c:2460 sql_help.c:2526 -#: sql_help.c:2528 sql_help.c:2657 sql_help.c:2659 sql_help.c:2758 -#: sql_help.c:2760 sql_help.c:2809 sql_help.c:2811 +#: sql_help.c:2367 sql_help.c:2368 sql_help.c:2369 sql_help.c:2370 +#: sql_help.c:2371 sql_help.c:2536 sql_help.c:2537 sql_help.c:2538 +#: sql_help.c:2539 sql_help.c:2540 sql_help.c:2834 sql_help.c:2836 +#: sql_help.c:2904 sql_help.c:2906 sql_help.c:3037 sql_help.c:3039 +#: sql_help.c:3142 sql_help.c:3144 sql_help.c:3193 sql_help.c:3195 msgid "count" msgstr "查询所用返回记录的最大数量" # describe.c:415 # describe.c:543 # describe.c:1477 -#: sql_help.c:2125 sql_help.c:2354 +#: sql_help.c:2436 sql_help.c:2690 msgid "sequence_name" msgstr "序列名称" -#: sql_help.c:2136 sql_help.c:2365 +#: sql_help.c:2447 sql_help.c:2701 msgid "arg_name" msgstr "参数名称" # describe.c:1689 -#: sql_help.c:2137 sql_help.c:2366 +#: sql_help.c:2448 sql_help.c:2702 msgid "arg_type" msgstr "参数类型" -#: sql_help.c:2142 sql_help.c:2371 +#: sql_help.c:2453 sql_help.c:2707 msgid "loid" msgstr "loid" -#: sql_help.c:2172 sql_help.c:2212 sql_help.c:2706 +#: sql_help.c:2485 sql_help.c:2548 sql_help.c:3088 msgid "channel" msgstr "通道" -#: sql_help.c:2194 +#: sql_help.c:2507 msgid "lockmode" msgstr "锁模式" -#: sql_help.c:2195 +#: sql_help.c:2508 msgid "where lockmode is one of:" msgstr "锁模式可以是下列选项之一:" -#: sql_help.c:2213 +#: sql_help.c:2549 msgid "payload" msgstr "消息中负载流量(payload)" -#: sql_help.c:2239 +#: sql_help.c:2575 msgid "old_role" msgstr "旧的角色" -#: sql_help.c:2240 +#: sql_help.c:2576 msgid "new_role" msgstr "新的角色" # sql_help.h:382 -#: sql_help.c:2256 sql_help.c:2401 sql_help.c:2409 +#: sql_help.c:2592 sql_help.c:2737 sql_help.c:2745 msgid "savepoint_name" msgstr "保存点名称" -#: sql_help.c:2445 sql_help.c:2512 sql_help.c:2644 sql_help.c:2796 -msgid "with_query" -msgstr "with查询语句(with_query)" +#: sql_help.c:2767 +msgid "provider" +msgstr "provider(提供者)" -#: sql_help.c:2449 sql_help.c:2480 sql_help.c:2482 sql_help.c:2517 -#: sql_help.c:2648 sql_help.c:2679 sql_help.c:2681 sql_help.c:2800 -#: sql_help.c:2831 sql_help.c:2833 +#: sql_help.c:2825 sql_help.c:2856 sql_help.c:2858 sql_help.c:2895 +#: sql_help.c:3028 sql_help.c:3059 sql_help.c:3061 sql_help.c:3184 +#: sql_help.c:3215 sql_help.c:3217 msgid "from_item" msgstr "from列表中项" -#: sql_help.c:2453 sql_help.c:2521 sql_help.c:2652 sql_help.c:2804 +#: sql_help.c:2829 sql_help.c:2899 sql_help.c:3032 sql_help.c:3188 msgid "window_name" msgstr "窗口名称" # describe.c:977 -#: sql_help.c:2454 sql_help.c:2522 sql_help.c:2653 sql_help.c:2805 +#: sql_help.c:2830 sql_help.c:2900 sql_help.c:3033 sql_help.c:3189 msgid "window_definition" msgstr "窗口定义" -#: sql_help.c:2455 sql_help.c:2466 sql_help.c:2488 sql_help.c:2523 -#: sql_help.c:2654 sql_help.c:2665 sql_help.c:2687 sql_help.c:2806 -#: sql_help.c:2817 sql_help.c:2839 +#: sql_help.c:2831 sql_help.c:2842 sql_help.c:2864 sql_help.c:2901 +#: sql_help.c:3034 sql_help.c:3045 sql_help.c:3067 sql_help.c:3190 +#: sql_help.c:3201 sql_help.c:3223 msgid "select" msgstr "查询" -#: sql_help.c:2462 sql_help.c:2661 sql_help.c:2813 +#: sql_help.c:2838 sql_help.c:3041 sql_help.c:3197 msgid "where from_item can be one of:" msgstr "from 列表中的项可以是下列内容之一" -#: sql_help.c:2465 sql_help.c:2468 sql_help.c:2471 sql_help.c:2475 -#: sql_help.c:2664 sql_help.c:2667 sql_help.c:2670 sql_help.c:2674 -#: sql_help.c:2816 sql_help.c:2819 sql_help.c:2822 sql_help.c:2826 +#: sql_help.c:2841 sql_help.c:2844 sql_help.c:2847 sql_help.c:2851 +#: sql_help.c:3044 sql_help.c:3047 sql_help.c:3050 sql_help.c:3054 +#: sql_help.c:3200 sql_help.c:3203 sql_help.c:3206 sql_help.c:3210 msgid "column_alias" msgstr "列的化名" -#: sql_help.c:2469 sql_help.c:2486 sql_help.c:2490 sql_help.c:2668 -#: sql_help.c:2685 sql_help.c:2689 sql_help.c:2820 sql_help.c:2837 -#: sql_help.c:2841 +#: sql_help.c:2845 sql_help.c:2862 sql_help.c:3048 sql_help.c:3065 +#: sql_help.c:3204 sql_help.c:3221 msgid "with_query_name" msgstr "WITH查询语句名称(with_query_name)" -#: sql_help.c:2473 sql_help.c:2478 sql_help.c:2672 sql_help.c:2677 -#: sql_help.c:2824 sql_help.c:2829 +#: sql_help.c:2849 sql_help.c:2854 sql_help.c:3052 sql_help.c:3057 +#: sql_help.c:3208 sql_help.c:3213 msgid "argument" msgstr "参数" # describe.c:977 -#: sql_help.c:2476 sql_help.c:2479 sql_help.c:2675 sql_help.c:2678 -#: sql_help.c:2827 sql_help.c:2830 +#: sql_help.c:2852 sql_help.c:2855 sql_help.c:3055 sql_help.c:3058 +#: sql_help.c:3211 sql_help.c:3214 msgid "column_definition" msgstr "列定义" -#: sql_help.c:2481 sql_help.c:2680 sql_help.c:2832 +#: sql_help.c:2857 sql_help.c:3060 sql_help.c:3216 msgid "join_type" msgstr "连接操作的类型" -#: sql_help.c:2483 sql_help.c:2682 sql_help.c:2834 +#: sql_help.c:2859 sql_help.c:3062 sql_help.c:3218 msgid "join_condition" msgstr "用连接操作的条件" -#: sql_help.c:2484 sql_help.c:2683 sql_help.c:2835 +#: sql_help.c:2860 sql_help.c:3063 sql_help.c:3219 msgid "join_column" msgstr "用于连接操作的列" -#: sql_help.c:2485 sql_help.c:2684 sql_help.c:2836 +#: sql_help.c:2861 sql_help.c:3064 sql_help.c:3220 msgid "and with_query is:" msgstr "with查询语句是:" +#: sql_help.c:2865 sql_help.c:3068 sql_help.c:3224 +msgid "insert" +msgstr "insert" + +#: sql_help.c:2866 sql_help.c:3069 sql_help.c:3225 +msgid "update" +msgstr "update" + +#: sql_help.c:2867 sql_help.c:3070 sql_help.c:3226 +msgid "delete" +msgstr "delete" + # describe.c:415 # describe.c:543 # describe.c:1477 -#: sql_help.c:2516 +#: sql_help.c:2894 msgid "new_table" msgstr "新的表" -#: sql_help.c:2541 +#: sql_help.c:2919 msgid "timezone" msgstr "时间区域" -#: sql_help.c:2725 +#: sql_help.c:3109 msgid "from_list" msgstr "from列表(from_list)" -#: sql_help.c:2756 +#: sql_help.c:3140 msgid "sort_expression" msgstr "排序表达式" @@ -4317,27 +4714,44 @@ msgstr "无法切换目录至 \"%s\"" msgid "could not read symbolic link \"%s\"" msgstr "无法读取符号连结 \"%s\"" -#: ../../port/exec.c:516 +#: ../../port/exec.c:525 #, c-format msgid "child process exited with exit code %d" msgstr "子进程结束,结束代码 %d" -#: ../../port/exec.c:520 +#: ../../port/exec.c:529 #, c-format msgid "child process was terminated by exception 0x%X" msgstr "子进程被例外(exception) 0x%X 终止" -#: ../../port/exec.c:529 +#: ../../port/exec.c:538 #, c-format msgid "child process was terminated by signal %s" msgstr "子进程被信号 %s 终止" -#: ../../port/exec.c:532 +#: ../../port/exec.c:541 #, c-format msgid "child process was terminated by signal %d" msgstr "子进程被信号 %d 终止" -#: ../../port/exec.c:536 +#: ../../port/exec.c:545 #, c-format msgid "child process exited with unrecognized status %d" msgstr "子进程结束,不明状态代码 %d" + +#~ msgid " on host \"%s\"" +#~ msgstr " 在 \"%s\" 主机上" + +#~ msgid " at port \"%s\"" +#~ msgstr " 埠号 \"%s\"" + +#~ msgid " as user \"%s\"" +#~ msgstr " 用户 \"%s\"" + +# common.c:123 +#~ msgid "out of memory" +#~ msgstr "记忆体用尽" + +# sql_help.h:137 +#~ msgid "define a new constraint trigger" +#~ msgstr "定义一个新的约束限制触发器" diff --git a/src/bin/psql/po/zh_TW.po b/src/bin/psql/po/zh_TW.po index d313637648..ff72aab02d 100644 --- a/src/bin/psql/po/zh_TW.po +++ b/src/bin/psql/po/zh_TW.po @@ -11,7 +11,7 @@ msgstr "" "PO-Revision-Date: 2011-05-16 15:22+0800\n" "Last-Translator: Zhenbang Wei \n" "Language-Team: The PostgreSQL Global Development Group \n" -"Language: \n" +"Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -4749,7 +4749,6 @@ msgstr "delimiter_character" msgid "null_string" msgstr "null_string" -# translator: %s represents a digit string # translator: %s represents a digit string # fe-protocol3.c:651 # fe-protocol3.c:659 diff --git a/src/bin/psql/print.c b/src/bin/psql/print.c index 28afcdda74..08a853add9 100644 --- a/src/bin/psql/print.c +++ b/src/bin/psql/print.c @@ -1177,8 +1177,8 @@ print_aligned_vertical(const printTableContent *cont, FILE *fout) * We now have all the information we need to setup the formatting * structures */ - dlineptr = pg_local_malloc((sizeof(*dlineptr) + 1) * dheight); - hlineptr = pg_local_malloc((sizeof(*hlineptr) + 1) * hheight); + dlineptr = pg_local_malloc((sizeof(*dlineptr)) * (dheight + 1)); + hlineptr = pg_local_malloc((sizeof(*hlineptr)) * (hheight + 1)); dlineptr->ptr = pg_local_malloc(dformatsize); hlineptr->ptr = pg_local_malloc(hformatsize); diff --git a/src/bin/psql/psqlscan.l b/src/bin/psql/psqlscan.l index dfc6648e56..8cef0f248f 100644 --- a/src/bin/psql/psqlscan.l +++ b/src/bin/psql/psqlscan.l @@ -722,6 +722,23 @@ other . escape_variable(true); } + /* + * These rules just avoid the need for scanner backup if one of the + * two rules above fails to match completely. + */ + +:'[A-Za-z0-9_]* { + /* Throw back everything but the colon */ + yyless(1); + ECHO; + } + +:\"[A-Za-z0-9_]* { + /* Throw back everything but the colon */ + yyless(1); + ECHO; + } + /* * Back to backend-compatible rules. */ @@ -912,7 +929,7 @@ other . } } -:[A-Za-z0-9_]* { +:[A-Za-z0-9_]+ { /* Possible psql variable substitution */ if (option_type == OT_VERBATIM) ECHO; @@ -959,6 +976,20 @@ other . } } +:'[A-Za-z0-9_]* { + /* Throw back everything but the colon */ + yyless(1); + ECHO; + BEGIN(xslashdefaultarg); + } + +:\"[A-Za-z0-9_]* { + /* Throw back everything but the colon */ + yyless(1); + ECHO; + BEGIN(xslashdefaultarg); + } + "|" { ECHO; if (option_type == OT_FILEPIPE) @@ -1772,7 +1803,7 @@ prepare_buffer(const char *txt, int len, char **txtcopy) /* first byte should always be okay... */ newtxt[i] = txt[i]; i++; - while (--thislen > 0) + while (--thislen > 0 && i < len) newtxt[i++] = (char) 0xFF; } } diff --git a/src/bin/psql/settings.h b/src/bin/psql/settings.h index 7228f9d0ee..0d5c1fbf3d 100644 --- a/src/bin/psql/settings.h +++ b/src/bin/psql/settings.h @@ -18,8 +18,10 @@ #if defined(WIN32) || defined(__CYGWIN__) #define DEFAULT_EDITOR "notepad.exe" +/* no DEFAULT_EDITOR_LINENUMBER_ARG for Notepad */ #else #define DEFAULT_EDITOR "vi" +#define DEFAULT_EDITOR_LINENUMBER_ARG "+" #endif #define DEFAULT_PROMPT1 "%/%R%# " diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c index 7b8078c21e..97f847f5c4 100644 --- a/src/bin/psql/startup.c +++ b/src/bin/psql/startup.c @@ -619,7 +619,12 @@ process_psqlrc_file(char *filename) static void showVersion(void) { +#ifdef PGXC + puts("psql (Postgres-XC) " PGXC_VERSION); + puts("(based on PostgreSQL) " PG_VERSION); +#else puts("psql (PostgreSQL) " PG_VERSION); +#endif #if defined(USE_READLINE) puts(_("contains support for command-line editing")); diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index 9d112a846e..043d0f6edb 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -369,11 +369,11 @@ static const SchemaQuery Query_for_list_of_updatables = { NULL }; -static const SchemaQuery Query_for_list_of_tisvf = { +static const SchemaQuery Query_for_list_of_relations = { /* catname */ "pg_catalog.pg_class c", /* selcondition */ - "c.relkind IN ('r', 'i', 'S', 'v', 'f')", + NULL, /* viscondition */ "pg_catalog.pg_table_is_visible(c.oid)", /* namespace */ @@ -804,7 +804,7 @@ psql_completion(char *text, int start, int end) completion_info_charp2 = NULL; /* - * Scan the input line before our current position for the last five + * Scan the input line before our current position for the last six * words. According to those we'll make some smart decisions on what the * user is probably intending to type. TODO: Use strtokx() to do this. */ @@ -1689,9 +1689,10 @@ psql_completion(char *text, int start, int end) pg_strcasecmp(prev_wd, "ON") == 0) { static const char *const list_COMMENT[] = - {"CAST", "COLLATION", "CONVERSION", "DATABASE", "FOREIGN DATA WRAPPER", - "SERVER", "FOREIGN TABLE", "INDEX", "LANGUAGE", "RULE", "SCHEMA", - "SEQUENCE", "TABLE", "TYPE", "VIEW", "COLUMN", "AGGREGATE", "FUNCTION", + {"CAST", "COLLATION", "CONVERSION", "DATABASE", "EXTENSION", + "FOREIGN DATA WRAPPER", "FOREIGN TABLE", + "SERVER", "INDEX", "LANGUAGE", "RULE", "SCHEMA", "SEQUENCE", + "TABLE", "TYPE", "VIEW", "COLUMN", "AGGREGATE", "FUNCTION", "OPERATOR", "TRIGGER", "CONSTRAINT", "DOMAIN", "LARGE OBJECT", "TABLESPACE", "TEXT SEARCH", "ROLE", NULL}; @@ -1718,11 +1719,10 @@ psql_completion(char *text, int start, int end) } else if ((pg_strcasecmp(prev4_wd, "COMMENT") == 0 && pg_strcasecmp(prev3_wd, "ON") == 0) || + (pg_strcasecmp(prev5_wd, "COMMENT") == 0 && + pg_strcasecmp(prev4_wd, "ON") == 0) || (pg_strcasecmp(prev6_wd, "COMMENT") == 0 && - pg_strcasecmp(prev5_wd, "ON") == 0) || - (pg_strcasecmp(prev5_wd, "ON") == 0 && - pg_strcasecmp(prev4_wd, "TEXT") == 0 && - pg_strcasecmp(prev3_wd, "SEARCH") == 0)) + pg_strcasecmp(prev5_wd, "ON") == 0)) COMPLETE_WITH_CONST("IS"); /* COPY */ @@ -3029,7 +3029,7 @@ psql_completion(char *text, int start, int end) /* must be at end of \d list */ else if (strncmp(prev_wd, "\\d", strlen("\\d")) == 0) - COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tisvf, NULL); + COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_relations, NULL); else if (strcmp(prev_wd, "\\ef") == 0) COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_functions, NULL); @@ -3125,6 +3125,7 @@ psql_completion(char *text, int start, int end) free(prev3_wd); free(prev4_wd); free(prev5_wd); + free(prev6_wd); /* Return our Grand List O' Matches */ return matches; diff --git a/src/bin/scripts/common.c b/src/bin/scripts/common.c index c882123dd1..9a7cc2c264 100644 --- a/src/bin/scripts/common.c +++ b/src/bin/scripts/common.c @@ -289,10 +289,9 @@ yesno_prompt(const char *question) { char prompt[256]; - /* - * translator: This is a question followed by the translated options for - * "yes" and "no". - */ + /*------ + translator: This is a question followed by the translated options for + "yes" and "no". */ snprintf(prompt, sizeof(prompt), _("%s (%s/%s) "), _(question), _(PG_YESLETTER), _(PG_NOLETTER)); @@ -378,7 +377,7 @@ ResetCancelConn(void) #ifndef WIN32 /* - * Handle interrupt signals by cancelling the current command, + * Handle interrupt signals by canceling the current command, * if it's being executed through executeMaintenanceCommand(), * and thus has a cancelConn set. */ diff --git a/src/bin/scripts/nls.mk b/src/bin/scripts/nls.mk index 2ae7bfa27e..35a84523c8 100644 --- a/src/bin/scripts/nls.mk +++ b/src/bin/scripts/nls.mk @@ -1,6 +1,6 @@ # src/bin/scripts/nls.mk CATALOG_NAME := pgscripts -AVAIL_LANGUAGES := cs de es fr it ja ko pt_BR ro sv ta tr zh_CN zh_TW +AVAIL_LANGUAGES := cs de es fr it ja ko pl pt_BR ro ru sv ta tr zh_CN zh_TW GETTEXT_FILES := createdb.c createlang.c createuser.c \ dropdb.c droplang.c dropuser.c \ clusterdb.c vacuumdb.c reindexdb.c \ diff --git a/src/bin/scripts/po/cs.po b/src/bin/scripts/po/cs.po index 38d1098a92..3cf72b935a 100644 --- a/src/bin/scripts/po/cs.po +++ b/src/bin/scripts/po/cs.po @@ -1,35 +1,36 @@ -# translation of pgscripts-cs.po to Czech # Czech translation of pg_scripts messages. # # pgtranslation Id: pgscripts.po,v 1.3 2009/10/14 21:08:40 petere Exp $ -# Karel Žák, 2001-2003, 2004. -# Zdeněk Kotala, 2009. # +# Karel Žák, 2001-2003, 2004. +# Zdeněk Kotala, 2009, 2011. +# Tomáš Vondra , 2011, 2012, 2013. msgid "" msgstr "" -"Project-Id-Version: postgresql-8.4\n" +"Project-Id-Version: pgscripts-cs (PostgreSQL 9.1)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2009-06-06 23:08+0000\n" -"PO-Revision-Date: 2009-07-06 14:09+0200\n" -"Last-Translator: Zdeněk Kotala\n" -"Language-Team: \n" +"POT-Creation-Date: 2011-08-30 11:35+0200\n" +"PO-Revision-Date: 2011-08-30 13:40+0200\n" +"Last-Translator: Tomas Vondra \n" +"Language-Team: Czech \n" +"Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.3.1\n" +"X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: createdb.c:114 createdb.c:133 createlang.c:89 createlang.c:110 #: createlang.c:163 createuser.c:149 createuser.c:164 dropdb.c:83 dropdb.c:92 -#: dropdb.c:100 droplang.c:100 droplang.c:121 droplang.c:175 dropuser.c:83 -#: dropuser.c:98 clusterdb.c:104 clusterdb.c:119 vacuumdb.c:121 vacuumdb.c:136 +#: dropdb.c:100 droplang.c:88 droplang.c:109 droplang.c:163 dropuser.c:83 +#: dropuser.c:98 clusterdb.c:104 clusterdb.c:119 vacuumdb.c:127 vacuumdb.c:142 #: reindexdb.c:114 reindexdb.c:128 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Zkuste \"%s --help\" pro více informací.\n" -#: createdb.c:131 createlang.c:108 createuser.c:162 dropdb.c:98 droplang.c:119 -#: dropuser.c:96 clusterdb.c:117 vacuumdb.c:134 reindexdb.c:127 +#: createdb.c:131 createlang.c:108 createuser.c:162 dropdb.c:98 droplang.c:107 +#: dropuser.c:96 clusterdb.c:117 vacuumdb.c:140 reindexdb.c:127 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" msgstr "%s: příliš mnoho parametrů příkazové řádky (první je \"%s\")\n" @@ -49,17 +50,17 @@ msgstr "%s: --locale a --lc-collate nelze zvolit současně\n" msgid "%s: \"%s\" is not a valid encoding name\n" msgstr "%s: \"%s\" není platné jméno kódování znaků\n" -#: createdb.c:204 +#: createdb.c:209 #, c-format msgid "%s: database creation failed: %s" msgstr "%s: vytvoření databáze selhalo: %s" -#: createdb.c:227 +#: createdb.c:229 #, c-format msgid "%s: comment creation failed (database was created): %s" msgstr "%s: tvorba komentáře selhala (databáze byla vytvořena): %s" -#: createdb.c:244 +#: createdb.c:247 #, c-format msgid "" "%s creates a PostgreSQL database.\n" @@ -68,20 +69,20 @@ msgstr "" "%s vytvoří PostgreSQL databázi.\n" "\n" -#: createdb.c:245 createlang.c:215 createuser.c:300 dropdb.c:140 -#: droplang.c:332 dropuser.c:139 clusterdb.c:236 vacuumdb.c:262 +#: createdb.c:248 createlang.c:223 createuser.c:300 dropdb.c:144 +#: droplang.c:224 dropuser.c:139 clusterdb.c:236 vacuumdb.c:328 #: reindexdb.c:313 #, c-format msgid "Usage:\n" msgstr "Použití:\n" -#: createdb.c:246 +#: createdb.c:249 #, c-format msgid " %s [OPTION]... [DBNAME] [DESCRIPTION]\n" msgstr " %s [PŘEPÍNAČ]... [DATABÁZE] [POPIS]\n" -#: createdb.c:247 createlang.c:217 createuser.c:302 dropdb.c:142 -#: droplang.c:334 dropuser.c:141 clusterdb.c:238 vacuumdb.c:264 +#: createdb.c:250 createlang.c:225 createuser.c:302 dropdb.c:146 +#: droplang.c:226 dropuser.c:141 clusterdb.c:238 vacuumdb.c:330 #: reindexdb.c:315 #, c-format msgid "" @@ -91,61 +92,61 @@ msgstr "" "\n" "Přepínače:\n" -#: createdb.c:248 +#: createdb.c:251 #, c-format msgid " -D, --tablespace=TABLESPACE default tablespace for the database\n" msgstr " -D, --tablespace=PROSTOR výchozí prostor tabulek pro databázi\n" -#: createdb.c:249 +#: createdb.c:252 #, c-format msgid "" " -e, --echo show the commands being sent to the server\n" msgstr " -e, --echo ukázat příkazy posílané na server\n" -#: createdb.c:250 +#: createdb.c:253 #, c-format msgid " -E, --encoding=ENCODING encoding for the database\n" msgstr " -E, --encoding=KÓDOVÁNÍ kódování znaků databáze\n" -#: createdb.c:251 +#: createdb.c:254 #, c-format msgid " -l, --locale=LOCALE locale settings for the database\n" msgstr " -l, --locale=LOCALE nastavení locale pro databázi\n" -#: createdb.c:252 +#: createdb.c:255 #, c-format msgid " --lc-collate=LOCALE LC_COLLATE setting for the database\n" msgstr " --lc-collate=LOCALE nastavení LC_COLLATE pro databázi\n" -#: createdb.c:253 +#: createdb.c:256 #, c-format msgid " --lc-ctype=LOCALE LC_CTYPE setting for the database\n" msgstr " --lc-ctype=LOCALE nastavení LC_CTYPE pro databázi\n" -#: createdb.c:254 +#: createdb.c:257 #, c-format msgid " -O, --owner=OWNER database user to own the new database\n" msgstr "" " -O, --owner=VLASTNÍK uživatel, který má být vlastníkem nové " "databáze\n" -#: createdb.c:255 +#: createdb.c:258 #, c-format msgid " -T, --template=TEMPLATE template database to copy\n" msgstr " -T, --template=ŠABLONA šablona databáze ke kopírování\n" -#: createdb.c:256 +#: createdb.c:259 #, c-format msgid " --help show this help, then exit\n" msgstr " --help ukáže tento text a skončí\n" -#: createdb.c:257 +#: createdb.c:260 #, c-format msgid " --version output version information, then exit\n" msgstr " --version ukáže informace o verzi a skončí\n" -#: createdb.c:258 createlang.c:223 createuser.c:321 dropdb.c:147 -#: droplang.c:340 dropuser.c:146 clusterdb.c:247 vacuumdb.c:276 +#: createdb.c:261 createlang.c:231 createuser.c:321 dropdb.c:151 +#: droplang.c:232 dropuser.c:146 clusterdb.c:247 vacuumdb.c:343 #: reindexdb.c:325 #, c-format msgid "" @@ -155,7 +156,7 @@ msgstr "" "\n" "Parametry spojení:\n" -#: createdb.c:259 +#: createdb.c:262 #, c-format msgid "" " -h, --host=HOSTNAME database server host or socket directory\n" @@ -163,28 +164,28 @@ msgstr "" " -h, --host=HOSTNAME jméno databázového serveru nebo adresáře se " "soketem\n" -#: createdb.c:260 +#: createdb.c:263 #, c-format msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=PORT port databázového serveru\n" -#: createdb.c:261 +#: createdb.c:264 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr "" " -U, --username=UŽIVATEL jméno uživatele pro spojení se serverem\n" -#: createdb.c:262 +#: createdb.c:265 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password neptá se na heslo\n" -#: createdb.c:263 -#, c-format +#: createdb.c:266 +#, c-format msgid " -W, --password force password prompt\n" msgstr " -W, --password vynutí dotaz na heslo\n" -#: createdb.c:264 +#: createdb.c:267 #, c-format msgid "" "\n" @@ -194,8 +195,8 @@ msgstr "" "Implicitně je vytvořena databáze stejného jména jako je jméno aktuálního " "uživatele.\n" -#: createdb.c:265 createlang.c:229 createuser.c:329 dropdb.c:153 -#: droplang.c:346 dropuser.c:152 clusterdb.c:254 vacuumdb.c:283 +#: createdb.c:268 createlang.c:237 createuser.c:329 dropdb.c:157 +#: droplang.c:238 dropuser.c:152 clusterdb.c:254 vacuumdb.c:350 #: reindexdb.c:332 #, c-format msgid "" @@ -205,27 +206,27 @@ msgstr "" "\n" "Chyby hlaste na adresu .\n" -#: createlang.c:140 droplang.c:151 +#: createlang.c:140 droplang.c:139 msgid "Name" msgstr "Jméno" -#: createlang.c:141 droplang.c:152 +#: createlang.c:141 droplang.c:140 msgid "yes" msgstr "ano" -#: createlang.c:141 droplang.c:152 +#: createlang.c:141 droplang.c:140 msgid "no" msgstr "ne" -#: createlang.c:142 droplang.c:153 +#: createlang.c:142 droplang.c:141 msgid "Trusted?" msgstr "Důvěryhodný?" -#: createlang.c:151 droplang.c:162 +#: createlang.c:151 droplang.c:150 msgid "Procedural Languages" msgstr "Procedurální jazyky" -#: createlang.c:162 droplang.c:173 +#: createlang.c:162 droplang.c:161 #, c-format msgid "%s: missing required argument language name\n" msgstr "%s: chybí povinný parametr jméno jazyka\n" @@ -235,12 +236,12 @@ msgstr "%s: chybí povinný parametr jméno jazyka\n" msgid "%s: language \"%s\" is already installed in database \"%s\"\n" msgstr "%s: jazyk \"%s\" je již v databázi \"%s\" instalován\n" -#: createlang.c:198 +#: createlang.c:206 #, c-format msgid "%s: language installation failed: %s" msgstr "%s: instalace jazyka selhala: %s" -#: createlang.c:214 +#: createlang.c:222 #, c-format msgid "" "%s installs a procedural language into a PostgreSQL database.\n" @@ -249,69 +250,69 @@ msgstr "" "%s instaluje procedurální jazyk do PostgreSQL databáze.\n" "\n" -#: createlang.c:216 droplang.c:333 +#: createlang.c:224 droplang.c:225 #, c-format msgid " %s [OPTION]... LANGNAME [DBNAME]\n" msgstr " %s [PŘEPÍNAČ]... JAZYK [DATABÁZE]\n" -#: createlang.c:218 +#: createlang.c:226 #, c-format msgid " -d, --dbname=DBNAME database to install language in\n" msgstr " -d, --dbname=DATABÁZE databáze do které bude jazyk instalován\n" -#: createlang.c:219 createuser.c:306 dropdb.c:143 droplang.c:336 +#: createlang.c:227 createuser.c:306 dropdb.c:147 droplang.c:228 #: dropuser.c:142 clusterdb.c:241 reindexdb.c:318 #, c-format msgid "" " -e, --echo show the commands being sent to the server\n" msgstr " -e, --echo ukazovat příkazy posílané na server\n" -#: createlang.c:220 droplang.c:337 +#: createlang.c:228 droplang.c:229 #, c-format msgid "" " -l, --list show a list of currently installed languages\n" msgstr " -l, --list ukáže seznam již nainstalovaných jazyků\n" -#: createlang.c:221 createuser.c:319 dropdb.c:145 droplang.c:338 +#: createlang.c:229 createuser.c:319 dropdb.c:149 droplang.c:230 #: dropuser.c:144 clusterdb.c:245 reindexdb.c:323 #, c-format msgid " --help show this help, then exit\n" msgstr " --help ukáže tuto nápovědu a skončí\n" -#: createlang.c:222 createuser.c:320 dropdb.c:146 droplang.c:339 +#: createlang.c:230 createuser.c:320 dropdb.c:150 droplang.c:231 #: dropuser.c:145 clusterdb.c:246 reindexdb.c:324 #, c-format msgid " --version output version information, then exit\n" msgstr " --version ukáže informaci o verzi a skončí\n" -#: createlang.c:224 createuser.c:322 dropdb.c:148 droplang.c:341 -#: dropuser.c:147 clusterdb.c:248 vacuumdb.c:277 reindexdb.c:326 +#: createlang.c:232 createuser.c:322 dropdb.c:152 droplang.c:233 +#: dropuser.c:147 clusterdb.c:248 vacuumdb.c:344 reindexdb.c:326 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" " -h, --host=HOSTNAME jméno databázového serveru nebo adresáře se " "soketem\n" -#: createlang.c:225 createuser.c:323 dropdb.c:149 droplang.c:342 -#: dropuser.c:148 clusterdb.c:249 vacuumdb.c:278 reindexdb.c:327 +#: createlang.c:233 createuser.c:323 dropdb.c:153 droplang.c:234 +#: dropuser.c:148 clusterdb.c:249 vacuumdb.c:345 reindexdb.c:327 #, c-format msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=PORT port databázového serveru\n" -#: createlang.c:226 dropdb.c:150 droplang.c:343 clusterdb.c:250 vacuumdb.c:279 +#: createlang.c:234 dropdb.c:154 droplang.c:235 clusterdb.c:250 vacuumdb.c:346 #: reindexdb.c:328 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=UŽIVATEL jméno uživatele pro spojení se serverem\n" -#: createlang.c:227 createuser.c:325 dropdb.c:151 droplang.c:344 -#: dropuser.c:150 clusterdb.c:251 vacuumdb.c:280 reindexdb.c:329 +#: createlang.c:235 createuser.c:325 dropdb.c:155 droplang.c:236 +#: dropuser.c:150 clusterdb.c:251 vacuumdb.c:347 reindexdb.c:329 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password neptá se na heslo\n" -#: createlang.c:228 createuser.c:326 dropdb.c:152 droplang.c:345 -#: dropuser.c:151 clusterdb.c:252 vacuumdb.c:281 reindexdb.c:330 +#: createlang.c:236 createuser.c:326 dropdb.c:156 droplang.c:237 +#: dropuser.c:151 clusterdb.c:252 vacuumdb.c:348 reindexdb.c:330 #, c-format msgid " -W, --password force password prompt\n" msgstr " -W, --password vynutí dotaz na heslo\n" @@ -335,7 +336,7 @@ msgstr "Hesla se neshodují.\n" #: createuser.c:189 msgid "Shall the new role be a superuser?" -msgstr "" +msgstr "Má být nová role superuživatel?" #: createuser.c:204 msgid "Shall the new role be allowed to create databases?" @@ -374,7 +375,8 @@ msgstr " %s [PŘEPÍNAČ]... [JMÉNO ROLE]\n" msgid "" " -c, --connection-limit=N connection limit for role (default: no limit)\n" msgstr "" -" -c, --connection-limit=N limit počtu konexí pro role (implicitně: bez limitu)\n" +" -c, --connection-limit=N limit počtu konexí pro role (implicitně: bez " +"limitu)\n" #: createuser.c:304 #, c-format @@ -477,12 +479,12 @@ msgstr "Databáze \"%s\" bude trvale odstraněna.\n" msgid "Are you sure?" msgstr "Určitě?" -#: dropdb.c:124 +#: dropdb.c:128 #, c-format msgid "%s: database removal failed: %s" msgstr "%s: odstraňování databáze selhalo: %s" -#: dropdb.c:139 +#: dropdb.c:143 #, c-format msgid "" "%s removes a PostgreSQL database.\n" @@ -491,34 +493,27 @@ msgstr "" "%s odstraňuje PostgreSQL databázi.\n" "\n" -#: dropdb.c:141 +#: dropdb.c:145 #, c-format msgid " %s [OPTION]... DBNAME\n" msgstr " %s [PŘEPÍNAČ]... DATABÁZE\n" -#: dropdb.c:144 dropuser.c:143 +#: dropdb.c:148 dropuser.c:143 #, c-format msgid " -i, --interactive prompt before deleting anything\n" msgstr " -i, --interactive zeptej se před smazáním čehokoli\n" -#: droplang.c:203 +#: droplang.c:190 #, c-format msgid "%s: language \"%s\" is not installed in database \"%s\"\n" msgstr "%s: jazyk \"%s\" není v databázi \"%s\" instalován\n" -#: droplang.c:223 -#, c-format -msgid "" -"%s: still %s functions declared in language \"%s\"; language not removed\n" -msgstr "" -"%s: stále je %s funkcí definováno v jazyce \"%s\"; jazyk nebyl odstraněn.\n" - -#: droplang.c:316 +#: droplang.c:208 #, c-format msgid "%s: language removal failed: %s" msgstr "%s: odstraňování jazyka selhalo: %s" -#: droplang.c:331 +#: droplang.c:223 #, c-format msgid "" "%s removes a procedural language from a database.\n" @@ -527,7 +522,7 @@ msgstr "" "%s odstraňuje procedurální jazyk z databáze.\n" "\n" -#: droplang.c:335 +#: droplang.c:227 #, c-format msgid "" " -d, --dbname=DBNAME database from which to remove the language\n" @@ -600,7 +595,7 @@ msgstr "" "%s vytváří cluster všech již dříve clusterovaných tabulek v databázi.\n" "\n" -#: clusterdb.c:237 vacuumdb.c:263 reindexdb.c:314 +#: clusterdb.c:237 vacuumdb.c:329 reindexdb.c:314 #, c-format msgid " %s [OPTION]... [DBNAME]\n" msgstr " %s [PŘEPÍNAČ]... [DATABÁZE]\n" @@ -639,33 +634,43 @@ msgstr "" "\n" "Pro detaily čtěte popis SQL příkazu CLUSTER.\n" -#: vacuumdb.c:146 +#: vacuumdb.c:150 +#, c-format +msgid "%s: cannot use the \"full\" option when performing only analyze\n" +msgstr "%s: při provádění jen analyze nelze použít volbu \"full\"\n" + +#: vacuumdb.c:156 +#, c-format +msgid "%s: cannot use the \"freeze\" option when performing only analyze\n" +msgstr "%s: při provádění jen analyze nelze použít volbu \"freeze\"\n" + +#: vacuumdb.c:169 #, c-format msgid "%s: cannot vacuum all databases and a specific one at the same time\n" msgstr "" "%s: nelze provádět VACUUM u všech databází a zároveň specifikovat jen jednu\n" -#: vacuumdb.c:152 +#: vacuumdb.c:175 #, c-format msgid "%s: cannot vacuum a specific table in all databases\n" msgstr "%s: nelze provést VACUUM specifické tabulky ve všech databázích\n" -#: vacuumdb.c:212 +#: vacuumdb.c:278 #, c-format msgid "%s: vacuuming of table \"%s\" in database \"%s\" failed: %s" msgstr "%s: provádění VACUUM tabulky \"%s\" v databázi \"%s\" selhalo: %s" -#: vacuumdb.c:215 +#: vacuumdb.c:281 #, c-format msgid "%s: vacuuming of database \"%s\" failed: %s" msgstr "%s: provádění VACUUM databáze \"%s\" selhalo: %s" -#: vacuumdb.c:245 +#: vacuumdb.c:311 #, c-format msgid "%s: vacuuming database \"%s\"\n" msgstr "%s: provádí se VACUUM databáze \"%s\"\n" -#: vacuumdb.c:261 +#: vacuumdb.c:327 #, c-format msgid "" "%s cleans and analyzes a PostgreSQL database.\n" @@ -674,70 +679,75 @@ msgstr "" "%s pročišťuje a analyzuje PostgreSQL databázi.\n" "\n" -#: vacuumdb.c:265 +#: vacuumdb.c:331 #, c-format msgid " -a, --all vacuum all databases\n" msgstr " -a, --all provést VACUUM všech databází\n" -#: vacuumdb.c:266 +#: vacuumdb.c:332 #, c-format msgid " -d, --dbname=DBNAME database to vacuum\n" msgstr "" " -d, --dbname=DATABÁZE jméno databáze k provedení příkazu VACUUM\n" -#: vacuumdb.c:267 +#: vacuumdb.c:333 #, c-format msgid "" " -e, --echo show the commands being sent to the " "server\n" msgstr " -e, --echo ukázat příkazy posílané na server\n" -#: vacuumdb.c:268 +#: vacuumdb.c:334 #, c-format msgid " -f, --full do full vacuuming\n" msgstr " -f, --full provést plné (FULL) VACUUM\n" -#: vacuumdb.c:269 +#: vacuumdb.c:335 #, c-format msgid " -F, --freeze freeze row transaction information\n" -msgstr " -F, --freeze zmrazí transakční informace záznamů\n" +msgstr "" +" -F, --freeze zmrazí transakční informace záznamů\n" -#: vacuumdb.c:270 +#: vacuumdb.c:336 #, c-format msgid " -q, --quiet don't write any messages\n" msgstr " -q, --quiet tichý mód\n" -#: vacuumdb.c:271 +#: vacuumdb.c:337 #, c-format msgid " -t, --table='TABLE[(COLUMNS)]' vacuum specific table only\n" msgstr "" " -t, --table='TABULKA[(SLOUPCE)]' provést VACUUM pouze u specifikované " "tabulky\n" -#: vacuumdb.c:272 +#: vacuumdb.c:338 #, c-format msgid " -v, --verbose write a lot of output\n" msgstr " -v, --verbose vypisovat více informací\n" -#: vacuumdb.c:273 +#: vacuumdb.c:339 #, c-format -msgid " -z, --analyze update optimizer hints\n" +msgid " -z, --analyze update optimizer statistics\n" +msgstr " -z, --analyze aktualizace statistik optimalizéru\n" + +#: vacuumdb.c:340 +#, c-format +msgid " -Z, --analyze-only only update optimizer statistics\n" msgstr "" -" -z, --analyze aktualizace informací používaných pro\n" -" optimalizaci dotazů\n" +" -Z, --analyze-only pouze aktualizaze statistik optimalizéru\n" -#: vacuumdb.c:274 +#: vacuumdb.c:341 #, c-format msgid " --help show this help, then exit\n" msgstr " --help ukáže tento text a skončí\n" -#: vacuumdb.c:275 +#: vacuumdb.c:342 #, c-format msgid "" " --version output version information, then exit\n" msgstr " --version ukáže informace o verzi a skončí\n" -#: vacuumdb.c:282 +#: vacuumdb.c:349 #, c-format msgid "" "\n" @@ -770,15 +780,13 @@ msgstr "%s: nelze reindexovat vybraný index ve všech databázích\n" #, c-format msgid "" "%s: cannot reindex a specific table and system catalogs at the same time\n" -msgstr "" -"%s: nelze reindexovat vybranou tabulku a současně sytémový katalog\n" +msgstr "%s: nelze reindexovat vybranou tabulku a současně sytémový katalog\n" #: reindexdb.c:169 #, c-format msgid "" "%s: cannot reindex a specific index and system catalogs at the same time\n" -msgstr "" -"%s: nelze reindexovat vybraný index a současně sytémový katalog\n" +msgstr "%s: nelze reindexovat vybraný index a současně sytémový katalog\n" #: reindexdb.c:238 #, c-format @@ -858,69 +866,79 @@ msgstr "%s: nelze získat informace o aktuálním uživateli: %s\n" msgid "%s: could not get current user name: %s\n" msgstr "%s: nelze získat aktuální uživatelské jméno: %s\n" -#: common.c:103 common.c:127 +#: common.c:103 common.c:155 msgid "Password: " msgstr "Heslo: " -#: common.c:116 +#: common.c:117 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: nedostatek paměti\n" + +#: common.c:144 #, c-format msgid "%s: could not connect to database %s\n" msgstr "%s: nelze navázat spojení s databází %s\n" -#: common.c:138 +#: common.c:166 #, c-format msgid "%s: could not connect to database %s: %s" msgstr "%s: nelze navázat spojení s databází %s: %s" -#: common.c:162 common.c:190 +#: common.c:190 common.c:218 #, c-format msgid "%s: query failed: %s" msgstr "%s: dotaz selhal: %s" -#: common.c:164 common.c:192 +#: common.c:192 common.c:220 #, c-format msgid "%s: query was: %s\n" msgstr "%s: dotaz byl: %s\n" -#: common.c:238 +#: common.c:266 #, c-format msgid "pg_strdup: cannot duplicate null pointer (internal error)\n" msgstr "pg_strdup: nelze duplikovat nulový ukazatel (interní chyba)\n" -#: common.c:244 +#: common.c:272 #, c-format msgid "out of memory\n" msgstr "paměť vyčerpána\n" # translator: Make sure the (y/n) prompts match the translation of this. #. translator: abbreviation for "yes" -#: common.c:255 +#: common.c:283 msgid "y" msgstr "a" # translator: Make sure the (y/n) prompts match the translation of this. #. translator: abbreviation for "no" -#: common.c:257 +#: common.c:285 msgid "n" msgstr "n" -#: common.c:268 +#: common.c:296 #, c-format msgid "%s (%s/%s) " msgstr "%s (%s/%s) " -#: common.c:289 +#: common.c:317 #, c-format msgid "Please answer \"%s\" or \"%s\".\n" msgstr "Prosím odpovězte \"%s\" nebo \"%s\".\n" -#: common.c:367 common.c:400 +#: common.c:395 common.c:428 #, c-format msgid "Cancel request sent\n" msgstr "Požadavek na zrušení byl poslán\n" -#: common.c:369 common.c:402 +#: common.c:397 common.c:430 #, c-format msgid "Could not send cancel request: %s" msgstr "Nelze poslat požadavek na zrušení: %s" +#~ msgid "" +#~ "%s: still %s functions declared in language \"%s\"; language not removed\n" +#~ msgstr "" +#~ "%s: stále je %s funkcí definováno v jazyce \"%s\"; jazyk nebyl " +#~ "odstraněn.\n" diff --git a/src/bin/scripts/po/de.po b/src/bin/scripts/po/de.po index bc68ed982a..c93959d30d 100644 --- a/src/bin/scripts/po/de.po +++ b/src/bin/scripts/po/de.po @@ -1,7 +1,5 @@ # German message translation file for "scripts". -# Peter Eisentraut , 2003 - 2010. -# -# pgtranslation Id: pgscripts.po,v 1.11 2010/03/17 21:33:45 petere Exp $ +# Peter Eisentraut , 2003 - 2013. # # Use these quotes: »%s« # @@ -9,24 +7,25 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.0\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-03-17 19:16+0000\n" -"PO-Revision-Date: 2010-03-17 23:33+0200\n" +"POT-Creation-Date: 2011-07-15 08:56+0000\n" +"PO-Revision-Date: 2013-03-08 00:23-0500\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: createdb.c:114 createdb.c:133 createlang.c:89 createlang.c:110 #: createlang.c:163 createuser.c:149 createuser.c:164 dropdb.c:83 dropdb.c:92 -#: dropdb.c:100 droplang.c:100 droplang.c:121 droplang.c:175 dropuser.c:83 +#: dropdb.c:100 droplang.c:88 droplang.c:109 droplang.c:163 dropuser.c:83 #: dropuser.c:98 clusterdb.c:104 clusterdb.c:119 vacuumdb.c:127 vacuumdb.c:142 #: reindexdb.c:114 reindexdb.c:128 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Versuchen Sie »%s --help« für weitere Informationen.\n" -#: createdb.c:131 createlang.c:108 createuser.c:162 dropdb.c:98 droplang.c:119 +#: createdb.c:131 createlang.c:108 createuser.c:162 dropdb.c:98 droplang.c:107 #: dropuser.c:96 clusterdb.c:117 vacuumdb.c:140 reindexdb.c:127 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" @@ -47,18 +46,17 @@ msgstr "%s: --locale und --lc-collate können nicht zusammen angegeben werden\n" msgid "%s: \"%s\" is not a valid encoding name\n" msgstr "%s: »%s« ist kein gültiger Kodierungsname\n" -#: createdb.c:204 +#: createdb.c:209 #, c-format msgid "%s: database creation failed: %s" -msgstr "%s: Erzeugung der Datenbank ist fehlgeschlagen: %s" +msgstr "%s: Erzeugen der Datenbank ist fehlgeschlagen: %s" -#: createdb.c:227 +#: createdb.c:229 #, c-format msgid "%s: comment creation failed (database was created): %s" -msgstr "" -"%s: Erzeugung des Kommentars ist fehlgeschlagen (Datenbank wurde erzeugt): %s" +msgstr "%s: Erzeugen des Kommentars ist fehlgeschlagen (Datenbank wurde erzeugt): %s" -#: createdb.c:244 +#: createdb.c:247 #, c-format msgid "" "%s creates a PostgreSQL database.\n" @@ -67,20 +65,20 @@ msgstr "" "%s erzeugt eine PostgreSQL-Datenbank.\n" "\n" -#: createdb.c:245 createlang.c:215 createuser.c:300 dropdb.c:140 -#: droplang.c:374 dropuser.c:139 clusterdb.c:236 vacuumdb.c:328 +#: createdb.c:248 createlang.c:223 createuser.c:300 dropdb.c:144 +#: droplang.c:224 dropuser.c:139 clusterdb.c:236 vacuumdb.c:328 #: reindexdb.c:313 #, c-format msgid "Usage:\n" msgstr "Aufruf:\n" -#: createdb.c:246 +#: createdb.c:249 #, c-format msgid " %s [OPTION]... [DBNAME] [DESCRIPTION]\n" msgstr " %s [OPTION]... [DBNAME] [BESCHREIBUNG]\n" -#: createdb.c:247 createlang.c:217 createuser.c:302 dropdb.c:142 -#: droplang.c:376 dropuser.c:141 clusterdb.c:238 vacuumdb.c:330 +#: createdb.c:250 createlang.c:225 createuser.c:302 dropdb.c:146 +#: droplang.c:226 dropuser.c:141 clusterdb.c:238 vacuumdb.c:330 #: reindexdb.c:315 #, c-format msgid "" @@ -90,12 +88,12 @@ msgstr "" "\n" "Optionen:\n" -#: createdb.c:248 +#: createdb.c:251 #, c-format msgid " -D, --tablespace=TABLESPACE default tablespace for the database\n" msgstr " -D, --tablespace=TABLESPACE Standard-Tablespace der Datenbank\n" -#: createdb.c:249 +#: createdb.c:252 #, c-format msgid "" " -e, --echo show the commands being sent to the server\n" @@ -103,52 +101,52 @@ msgstr "" " -e, --echo zeige die Befehle, die an den Server\n" " gesendet werden\n" -#: createdb.c:250 +#: createdb.c:253 #, c-format msgid " -E, --encoding=ENCODING encoding for the database\n" msgstr " -E, --encoding=KODIERUNG Kodierung für die Datenbank\n" -#: createdb.c:251 +#: createdb.c:254 #, c-format msgid " -l, --locale=LOCALE locale settings for the database\n" msgstr "" " -l, --locale=LOCALE Lokale-Einstellungen für die Datenbank\n" -#: createdb.c:252 +#: createdb.c:255 #, c-format msgid " --lc-collate=LOCALE LC_COLLATE setting for the database\n" msgstr "" " --lc-collate=LOCALE LC_COLLATE-Einstellung für die Datenbank\n" -#: createdb.c:253 +#: createdb.c:256 #, c-format msgid " --lc-ctype=LOCALE LC_CTYPE setting for the database\n" msgstr "" " --lc-ctype=LOCALE LC_CTYPE-Einstellung für die Datenbank\n" -#: createdb.c:254 +#: createdb.c:257 #, c-format msgid " -O, --owner=OWNER database user to own the new database\n" msgstr " -O, --owner=EIGENTÜMER Eigentümer der neuen Datenbank\n" -#: createdb.c:255 +#: createdb.c:258 #, c-format msgid " -T, --template=TEMPLATE template database to copy\n" msgstr " -T, --template=TEMPLATE zu kopierende Template-Datenbank\n" -#: createdb.c:256 +#: createdb.c:259 #, c-format msgid " --help show this help, then exit\n" msgstr " --help diese Hilfe anzeigen, dann beenden\n" -#: createdb.c:257 +#: createdb.c:260 #, c-format msgid " --version output version information, then exit\n" msgstr "" " --version Versionsinformationen anzeigen, dann beenden\n" -#: createdb.c:258 createlang.c:223 createuser.c:321 dropdb.c:147 -#: droplang.c:382 dropuser.c:146 clusterdb.c:247 vacuumdb.c:343 +#: createdb.c:261 createlang.c:231 createuser.c:321 dropdb.c:151 +#: droplang.c:232 dropuser.c:146 clusterdb.c:247 vacuumdb.c:343 #: reindexdb.c:325 #, c-format msgid "" @@ -158,7 +156,7 @@ msgstr "" "\n" "Verbindungsoptionen:\n" -#: createdb.c:259 +#: createdb.c:262 #, c-format msgid "" " -h, --host=HOSTNAME database server host or socket directory\n" @@ -166,27 +164,27 @@ msgstr "" " -h, --host=HOSTNAME Name des Datenbankservers oder Socket-" "Verzeichnis\n" -#: createdb.c:260 +#: createdb.c:263 #, c-format msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=PORT Port des Datenbankservers\n" -#: createdb.c:261 +#: createdb.c:264 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=NAME Datenbankbenutzername\n" -#: createdb.c:262 +#: createdb.c:265 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password niemals nach Passwort fragen\n" -#: createdb.c:263 +#: createdb.c:266 #, c-format msgid " -W, --password force password prompt\n" msgstr " -W, --password Passwortfrage erzwingen\n" -#: createdb.c:264 +#: createdb.c:267 #, c-format msgid "" "\n" @@ -196,8 +194,8 @@ msgstr "" "Wenn nichts anderes angegeben ist, dann wird eine Datenbank mit dem Namen\n" "des aktuellen Benutzers erzeugt.\n" -#: createdb.c:265 createlang.c:229 createuser.c:329 dropdb.c:153 -#: droplang.c:388 dropuser.c:152 clusterdb.c:254 vacuumdb.c:350 +#: createdb.c:268 createlang.c:237 createuser.c:329 dropdb.c:157 +#: droplang.c:238 dropuser.c:152 clusterdb.c:254 vacuumdb.c:350 #: reindexdb.c:332 #, c-format msgid "" @@ -207,27 +205,27 @@ msgstr "" "\n" "Berichten Sie Fehler an .\n" -#: createlang.c:140 droplang.c:151 +#: createlang.c:140 droplang.c:139 msgid "Name" msgstr "Name" -#: createlang.c:141 droplang.c:152 +#: createlang.c:141 droplang.c:140 msgid "yes" msgstr "ja" -#: createlang.c:141 droplang.c:152 +#: createlang.c:141 droplang.c:140 msgid "no" msgstr "nein" -#: createlang.c:142 droplang.c:153 +#: createlang.c:142 droplang.c:141 msgid "Trusted?" msgstr "Vertraut?" -#: createlang.c:151 droplang.c:162 +#: createlang.c:151 droplang.c:150 msgid "Procedural Languages" msgstr "Prozedurale Sprachen" -#: createlang.c:162 droplang.c:173 +#: createlang.c:162 droplang.c:161 #, c-format msgid "%s: missing required argument language name\n" msgstr "%s: Sprachenname als Argument fehlt\n" @@ -237,12 +235,12 @@ msgstr "%s: Sprachenname als Argument fehlt\n" msgid "%s: language \"%s\" is already installed in database \"%s\"\n" msgstr "%s: Sprache »%s« ist bereits in Datenbank »%s« installiert\n" -#: createlang.c:198 +#: createlang.c:206 #, c-format msgid "%s: language installation failed: %s" msgstr "%s: Installation der Sprache fehlgeschlagen: %s" -#: createlang.c:214 +#: createlang.c:222 #, c-format msgid "" "%s installs a procedural language into a PostgreSQL database.\n" @@ -251,19 +249,19 @@ msgstr "" "%s installiert eine prozedurale Sprache in einer PostgreSQL-Datenbank.\n" "\n" -#: createlang.c:216 droplang.c:375 +#: createlang.c:224 droplang.c:225 #, c-format msgid " %s [OPTION]... LANGNAME [DBNAME]\n" -msgstr "%s [OPTION]... SPRACHE [DBNAME]\n" +msgstr " %s [OPTION]... SPRACHE [DBNAME]\n" -#: createlang.c:218 +#: createlang.c:226 #, c-format msgid " -d, --dbname=DBNAME database to install language in\n" msgstr "" " -d, --dbname=DBNAME Datenbank, in der die Sprache installiert\n" " werden soll\n" -#: createlang.c:219 createuser.c:306 dropdb.c:143 droplang.c:378 +#: createlang.c:227 createuser.c:306 dropdb.c:147 droplang.c:228 #: dropuser.c:142 clusterdb.c:241 reindexdb.c:318 #, c-format msgid "" @@ -272,27 +270,27 @@ msgstr "" " -e, --echo zeige die Befehle, die an den Server\n" " gesendet werden\n" -#: createlang.c:220 droplang.c:379 +#: createlang.c:228 droplang.c:229 #, c-format msgid "" " -l, --list show a list of currently installed languages\n" msgstr "" " -l, --list zeige Liste gegenwärtig installierter Sprachen\n" -#: createlang.c:221 createuser.c:319 dropdb.c:145 droplang.c:380 +#: createlang.c:229 createuser.c:319 dropdb.c:149 droplang.c:230 #: dropuser.c:144 clusterdb.c:245 reindexdb.c:323 #, c-format msgid " --help show this help, then exit\n" msgstr " --help diese Hilfe anzeigen, dann beenden\n" -#: createlang.c:222 createuser.c:320 dropdb.c:146 droplang.c:381 +#: createlang.c:230 createuser.c:320 dropdb.c:150 droplang.c:231 #: dropuser.c:145 clusterdb.c:246 reindexdb.c:324 #, c-format msgid " --version output version information, then exit\n" msgstr "" " --version Versionsinformationen anzeigen, dann beenden\n" -#: createlang.c:224 createuser.c:322 dropdb.c:148 droplang.c:383 +#: createlang.c:232 createuser.c:322 dropdb.c:152 droplang.c:233 #: dropuser.c:147 clusterdb.c:248 vacuumdb.c:344 reindexdb.c:326 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" @@ -300,25 +298,25 @@ msgstr "" " -h, --host=HOSTNAME Name des Datenbankservers oder Socket-" "Verzeichnis\n" -#: createlang.c:225 createuser.c:323 dropdb.c:149 droplang.c:384 +#: createlang.c:233 createuser.c:323 dropdb.c:153 droplang.c:234 #: dropuser.c:148 clusterdb.c:249 vacuumdb.c:345 reindexdb.c:327 #, c-format msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=PORT Port des Datenbankservers\n" -#: createlang.c:226 dropdb.c:150 droplang.c:385 clusterdb.c:250 vacuumdb.c:346 +#: createlang.c:234 dropdb.c:154 droplang.c:235 clusterdb.c:250 vacuumdb.c:346 #: reindexdb.c:328 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=NAME Datenbankbenutzername\n" -#: createlang.c:227 createuser.c:325 dropdb.c:151 droplang.c:386 +#: createlang.c:235 createuser.c:325 dropdb.c:155 droplang.c:236 #: dropuser.c:150 clusterdb.c:251 vacuumdb.c:347 reindexdb.c:329 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password niemals nach Passwort fragen\n" -#: createlang.c:228 createuser.c:326 dropdb.c:152 droplang.c:387 +#: createlang.c:236 createuser.c:326 dropdb.c:156 droplang.c:237 #: dropuser.c:151 clusterdb.c:252 vacuumdb.c:348 reindexdb.c:330 #, c-format msgid " -W, --password force password prompt\n" @@ -361,7 +359,7 @@ msgstr "Passwortverschlüsselung ist fehlgeschlagen.\n" #: createuser.c:284 #, c-format msgid "%s: creation of new role failed: %s" -msgstr "%s: Erzeugung der neuen Rolle fehlgeschlagen: %s" +msgstr "%s: Erzeugen der neuen Rolle fehlgeschlagen: %s" #: createuser.c:299 #, c-format @@ -489,12 +487,12 @@ msgstr "Datenbank »%s« wird unwiderruflich gelöscht werden.\n" msgid "Are you sure?" msgstr "Sind Sie sich sicher?" -#: dropdb.c:124 +#: dropdb.c:128 #, c-format msgid "%s: database removal failed: %s" msgstr "%s: Löschen der Datenbank fehlgeschlagen: %s" -#: dropdb.c:139 +#: dropdb.c:143 #, c-format msgid "" "%s removes a PostgreSQL database.\n" @@ -503,35 +501,28 @@ msgstr "" "%s löscht eine PostgreSQL-Datenbank.\n" "\n" -#: dropdb.c:141 +#: dropdb.c:145 #, c-format msgid " %s [OPTION]... DBNAME\n" -msgstr " %s [OPTION]... DBNAME\n" +msgstr " %s [OPTION]... DBNAME\n" -#: dropdb.c:144 dropuser.c:143 +#: dropdb.c:148 dropuser.c:143 #, c-format msgid " -i, --interactive prompt before deleting anything\n" msgstr "" " -i, --interactive frage nach, bevor irgendetwas gelöscht wird\n" -#: droplang.c:203 +#: droplang.c:190 #, c-format msgid "%s: language \"%s\" is not installed in database \"%s\"\n" msgstr "%s: Sprache »%s« ist nicht in Datenbank »%s« installiert\n" -#: droplang.c:224 -#, c-format -msgid "" -"%s: still %s functions declared in language \"%s\"; language not removed\n" -msgstr "" -"%s: noch %s Funktionen in Sprache »%s« deklariert; Sprache nicht gelöscht\n" - -#: droplang.c:358 +#: droplang.c:208 #, c-format msgid "%s: language removal failed: %s" msgstr "%s: Löschen der Sprache fehlgeschlagen: %s" -#: droplang.c:373 +#: droplang.c:223 #, c-format msgid "" "%s removes a procedural language from a database.\n" @@ -540,7 +531,7 @@ msgstr "" "%s löscht eine prozedurale Sprache aus einer Datenbank.\n" "\n" -#: droplang.c:377 +#: droplang.c:227 #, c-format msgid "" " -d, --dbname=DBNAME database from which to remove the language\n" @@ -582,13 +573,12 @@ msgstr "" #: clusterdb.c:129 #, c-format msgid "%s: cannot cluster all databases and a specific one at the same time\n" -msgstr "" -"%s: kann nicht alle Datenbanken und eine bestimmte gleichzeitig clustern.\n" +msgstr "%s: kann nicht alle Datenbanken und eine bestimmte gleichzeitig clustern\n" #: clusterdb.c:135 #, c-format msgid "%s: cannot cluster a specific table in all databases\n" -msgstr "%s: kann nicht eine bestimmte Tabelle in allen Datenbanken clustern.\n" +msgstr "%s: kann nicht eine bestimmte Tabelle in allen Datenbanken clustern\n" #: clusterdb.c:187 #, c-format @@ -664,7 +654,8 @@ msgstr "" #, c-format msgid "%s: cannot use the \"freeze\" option when performing only analyze\n" msgstr "" -"%s: kann Option »freeze« nicht verwenden, wenn nur Analyze durchgeführt wird\n" +"%s: kann Option »freeze« nicht verwenden, wenn nur Analyze durchgeführt " +"wird\n" #: vacuumdb.c:169 #, c-format @@ -754,12 +745,16 @@ msgstr " -v, --verbose erzeuge viele Meldungen\n" #: vacuumdb.c:339 #, c-format msgid " -z, --analyze update optimizer statistics\n" -msgstr " -z, --analyze aktualisiere Statistiken für den Optimierer\n" +msgstr "" +" -z, --analyze aktualisiere Statistiken für den " +"Optimierer\n" #: vacuumdb.c:340 #, c-format msgid " -Z, --analyze-only only update optimizer statistics\n" -msgstr " -Z, --analyze-only aktualisiere nur Statistiken für den Optimierer\n" +msgstr "" +" -Z, --analyze-only aktualisiere nur Statistiken für den " +"Optimierer\n" #: vacuumdb.c:341 #, c-format @@ -873,7 +868,7 @@ msgstr " -d, --dbname=DBNAME zu reindizierende Datenbank\n" #: reindexdb.c:319 #, c-format msgid " -i, --index=INDEX recreate specific index only\n" -msgstr " -t, --table=TABELLE erneuere nur einen bestimmten Index\n" +msgstr " -i, --index=INDEX erneuere nur einen bestimmten Index\n" #: reindexdb.c:321 #, c-format diff --git a/src/bin/scripts/po/es.po b/src/bin/scripts/po/es.po index c794045d3b..4e5b7a93b1 100644 --- a/src/bin/scripts/po/es.po +++ b/src/bin/scripts/po/es.po @@ -1,35 +1,34 @@ # pgscripts spanish translation # -# Copyright (C) 2003-2010 PostgreSQL Global Development Group +# Copyright (C) 2003-2012 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # -# Alvaro Herrera, , 2003-2010 +# Alvaro Herrera, , 2003-2012 # Jaime Casanova, , 2005 # -# pgtranslation Id: pgscripts.po,v 1.8 2010/04/26 22:12:27 alvherre Exp $ -# msgid "" msgstr "" -"Project-Id-Version: pgscripts (PostgreSQL 9.0)\n" +"Project-Id-Version: pgscripts (PostgreSQL 9.1)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-04-26 21:15+0000\n" -"PO-Revision-Date: 2010-04-26 18:11-0400\n" +"POT-Creation-Date: 2013-08-26 19:45+0000\n" +"PO-Revision-Date: 2012-02-21 22:53-0300\n" "Last-Translator: Ávaro Herrera \n" "Language-Team: Castellano \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: createdb.c:114 createdb.c:133 createlang.c:89 createlang.c:110 #: createlang.c:163 createuser.c:149 createuser.c:164 dropdb.c:83 dropdb.c:92 -#: dropdb.c:100 droplang.c:100 droplang.c:121 droplang.c:175 dropuser.c:83 +#: dropdb.c:100 droplang.c:88 droplang.c:109 droplang.c:163 dropuser.c:83 #: dropuser.c:98 clusterdb.c:104 clusterdb.c:119 vacuumdb.c:127 vacuumdb.c:142 #: reindexdb.c:114 reindexdb.c:128 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "Use «%s --help» para mayor información.\n" -#: createdb.c:131 createlang.c:108 createuser.c:162 dropdb.c:98 droplang.c:119 +#: createdb.c:131 createlang.c:108 createuser.c:162 dropdb.c:98 droplang.c:107 #: dropuser.c:96 clusterdb.c:117 vacuumdb.c:140 reindexdb.c:127 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" @@ -50,21 +49,21 @@ msgstr "%s: sólo uno de --locale y --lc-collate puede ser especificado\n" msgid "%s: \"%s\" is not a valid encoding name\n" msgstr "%s: «%s» no es un nombre de codificación válido\n" -#: createdb.c:204 +#: createdb.c:209 #, c-format msgid "%s: database creation failed: %s" msgstr "" "%s: falló la creación de la base de datos:\n" "%s" -#: createdb.c:227 +#: createdb.c:229 #, c-format msgid "%s: comment creation failed (database was created): %s" msgstr "" "%s: falló la creación del comentario (la base de datos fue creada):\n" "%s" -#: createdb.c:244 +#: createdb.c:247 #, c-format msgid "" "%s creates a PostgreSQL database.\n" @@ -73,20 +72,20 @@ msgstr "" "%s crea una base de datos PostgreSQL.\n" "\n" -#: createdb.c:245 createlang.c:215 createuser.c:300 dropdb.c:140 -#: droplang.c:374 dropuser.c:139 clusterdb.c:236 vacuumdb.c:328 +#: createdb.c:248 createlang.c:223 createuser.c:300 dropdb.c:144 +#: droplang.c:224 dropuser.c:139 clusterdb.c:236 vacuumdb.c:328 #: reindexdb.c:313 #, c-format msgid "Usage:\n" msgstr "Empleo:\n" -#: createdb.c:246 +#: createdb.c:249 #, c-format msgid " %s [OPTION]... [DBNAME] [DESCRIPTION]\n" msgstr " %s [OPCIÓN]... [NOMBRE] [DESCRIPCIÓN]\n" -#: createdb.c:247 createlang.c:217 createuser.c:302 dropdb.c:142 -#: droplang.c:376 dropuser.c:141 clusterdb.c:238 vacuumdb.c:330 +#: createdb.c:250 createlang.c:225 createuser.c:302 dropdb.c:146 +#: droplang.c:226 dropuser.c:141 clusterdb.c:238 vacuumdb.c:330 #: reindexdb.c:315 #, c-format msgid "" @@ -96,64 +95,64 @@ msgstr "" "\n" "Opciones:\n" -#: createdb.c:248 +#: createdb.c:251 #, c-format msgid " -D, --tablespace=TABLESPACE default tablespace for the database\n" msgstr "" " -D, --tablespace=TBLSPC tablespace por omisión de la base de datos\n" -#: createdb.c:249 +#: createdb.c:252 #, c-format msgid "" " -e, --echo show the commands being sent to the server\n" msgstr " -e, --echo mostrar las órdenes enviadas al servidor\n" -#: createdb.c:250 +#: createdb.c:253 #, c-format msgid " -E, --encoding=ENCODING encoding for the database\n" msgstr " -E, --encoding=CODIF codificación para la base de datos\n" -#: createdb.c:251 +#: createdb.c:254 #, c-format msgid " -l, --locale=LOCALE locale settings for the database\n" msgstr "" " -l, --locale=LOCALE configuración regional para la base de datos\n" -#: createdb.c:252 +#: createdb.c:255 #, c-format msgid " --lc-collate=LOCALE LC_COLLATE setting for the database\n" msgstr "" " --lc-collate=LOCALE configuración LC_COLLATE para la base de datos\n" -#: createdb.c:253 +#: createdb.c:256 #, c-format msgid " --lc-ctype=LOCALE LC_CTYPE setting for the database\n" msgstr "" " --lc-ctype=LOCALE configuración LC_CTYPE para la base de datos\n" -#: createdb.c:254 +#: createdb.c:257 #, c-format msgid " -O, --owner=OWNER database user to own the new database\n" msgstr "" " -O, --owner=DUEÑO usuario que será dueño de la base de datos\n" -#: createdb.c:255 +#: createdb.c:258 #, c-format msgid " -T, --template=TEMPLATE template database to copy\n" msgstr " -T, --template=PATRÓN base de datos patrón a copiar\n" -#: createdb.c:256 +#: createdb.c:259 #, c-format msgid " --help show this help, then exit\n" msgstr " --help mostrar esta ayuda y salir\n" -#: createdb.c:257 +#: createdb.c:260 #, c-format msgid " --version output version information, then exit\n" msgstr " --version mostrar el número de versión y salir\n" -#: createdb.c:258 createlang.c:223 createuser.c:321 dropdb.c:147 -#: droplang.c:382 dropuser.c:146 clusterdb.c:247 vacuumdb.c:343 +#: createdb.c:261 createlang.c:231 createuser.c:321 dropdb.c:151 +#: droplang.c:232 dropuser.c:146 clusterdb.c:247 vacuumdb.c:343 #: reindexdb.c:325 #, c-format msgid "" @@ -163,34 +162,34 @@ msgstr "" "\n" "Opciones de conexión:\n" -#: createdb.c:259 +#: createdb.c:262 #, c-format msgid "" " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" " -h, --host=ANFITRIÓN nombre del servidor o directorio del socket\n" -#: createdb.c:260 +#: createdb.c:263 #, c-format msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=PUERTO puerto del servidor\n" -#: createdb.c:261 +#: createdb.c:264 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=USUARIO nombre de usuario para la conexión\n" -#: createdb.c:262 +#: createdb.c:265 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password nunca pedir contraseña\n" -#: createdb.c:263 +#: createdb.c:266 #, c-format msgid " -W, --password force password prompt\n" msgstr " -W, --password forzar la petición de contraseña\n" -#: createdb.c:264 +#: createdb.c:267 #, c-format msgid "" "\n" @@ -200,8 +199,8 @@ msgstr "" "Si no se especifica, se creará una base de datos con el mismo nombre que\n" "el usuario actual.\n" -#: createdb.c:265 createlang.c:229 createuser.c:329 dropdb.c:153 -#: droplang.c:388 dropuser.c:152 clusterdb.c:254 vacuumdb.c:350 +#: createdb.c:268 createlang.c:237 createuser.c:329 dropdb.c:157 +#: droplang.c:238 dropuser.c:152 clusterdb.c:254 vacuumdb.c:350 #: reindexdb.c:332 #, c-format msgid "" @@ -211,27 +210,27 @@ msgstr "" "\n" "Reporte errores a .\n" -#: createlang.c:140 droplang.c:151 +#: createlang.c:140 droplang.c:139 msgid "Name" msgstr "Nombre" -#: createlang.c:141 droplang.c:152 +#: createlang.c:141 droplang.c:140 msgid "yes" msgstr "sí" -#: createlang.c:141 droplang.c:152 +#: createlang.c:141 droplang.c:140 msgid "no" msgstr "no" -#: createlang.c:142 droplang.c:153 +#: createlang.c:142 droplang.c:141 msgid "Trusted?" msgstr "Confiable?" -#: createlang.c:151 droplang.c:162 +#: createlang.c:151 droplang.c:150 msgid "Procedural Languages" msgstr "Lenguajes Procedurales" -#: createlang.c:162 droplang.c:173 +#: createlang.c:162 droplang.c:161 #, c-format msgid "%s: missing required argument language name\n" msgstr "%s: falta el nombre de lenguaje requerido\n" @@ -241,14 +240,14 @@ msgstr "%s: falta el nombre de lenguaje requerido\n" msgid "%s: language \"%s\" is already installed in database \"%s\"\n" msgstr "%s: el lenguaje «%s» ya está instalado en la base de datos «%s»\n" -#: createlang.c:198 +#: createlang.c:206 #, c-format msgid "%s: language installation failed: %s" msgstr "" "%s: falló la instalación del lenguaje:\n" "%s" -#: createlang.c:214 +#: createlang.c:222 #, c-format msgid "" "%s installs a procedural language into a PostgreSQL database.\n" @@ -257,18 +256,18 @@ msgstr "" "%s instala un lenguaje procedural en una base de datos PostgreSQL.\n" "\n" -#: createlang.c:216 droplang.c:375 +#: createlang.c:224 droplang.c:225 #, c-format msgid " %s [OPTION]... LANGNAME [DBNAME]\n" msgstr " %s [OPCIÓN]... LENGUAJE [BASE-DE-DATOS]\n" -#: createlang.c:218 +#: createlang.c:226 #, c-format msgid " -d, --dbname=DBNAME database to install language in\n" msgstr "" " -d, --dbname=BASE base de datos en que instalar el lenguaje\n" -#: createlang.c:219 createuser.c:306 dropdb.c:143 droplang.c:378 +#: createlang.c:227 createuser.c:306 dropdb.c:147 droplang.c:228 #: dropuser.c:142 clusterdb.c:241 reindexdb.c:318 #, c-format msgid "" @@ -276,51 +275,51 @@ msgid "" msgstr "" " -e, --echo mostrar las órdenes a medida que se ejecutan\n" -#: createlang.c:220 droplang.c:379 +#: createlang.c:228 droplang.c:229 #, c-format msgid "" " -l, --list show a list of currently installed languages\n" msgstr "" " -l, --list listar los lenguajes instalados actualmente\n" -#: createlang.c:221 createuser.c:319 dropdb.c:145 droplang.c:380 +#: createlang.c:229 createuser.c:319 dropdb.c:149 droplang.c:230 #: dropuser.c:144 clusterdb.c:245 reindexdb.c:323 #, c-format msgid " --help show this help, then exit\n" msgstr " --help desplegar esta ayuda y salir\n" -#: createlang.c:222 createuser.c:320 dropdb.c:146 droplang.c:381 +#: createlang.c:230 createuser.c:320 dropdb.c:150 droplang.c:231 #: dropuser.c:145 clusterdb.c:246 reindexdb.c:324 #, c-format msgid " --version output version information, then exit\n" msgstr " --version desplegar información de versión y salir\n" -#: createlang.c:224 createuser.c:322 dropdb.c:148 droplang.c:383 +#: createlang.c:232 createuser.c:322 dropdb.c:152 droplang.c:233 #: dropuser.c:147 clusterdb.c:248 vacuumdb.c:344 reindexdb.c:326 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" " -h, --host=ANFITRIÓN nombre del servidor o directorio del socket\n" -#: createlang.c:225 createuser.c:323 dropdb.c:149 droplang.c:384 +#: createlang.c:233 createuser.c:323 dropdb.c:153 droplang.c:234 #: dropuser.c:148 clusterdb.c:249 vacuumdb.c:345 reindexdb.c:327 #, c-format msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=PUERTO puerto del servidor\n" -#: createlang.c:226 dropdb.c:150 droplang.c:385 clusterdb.c:250 vacuumdb.c:346 +#: createlang.c:234 dropdb.c:154 droplang.c:235 clusterdb.c:250 vacuumdb.c:346 #: reindexdb.c:328 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=USUARIO nombre de usuario para la conexión\n" -#: createlang.c:227 createuser.c:325 dropdb.c:151 droplang.c:386 +#: createlang.c:235 createuser.c:325 dropdb.c:155 droplang.c:236 #: dropuser.c:150 clusterdb.c:251 vacuumdb.c:347 reindexdb.c:329 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password nunca pedir contraseña\n" -#: createlang.c:228 createuser.c:326 dropdb.c:152 droplang.c:387 +#: createlang.c:236 createuser.c:326 dropdb.c:156 droplang.c:237 #: dropuser.c:151 clusterdb.c:252 vacuumdb.c:348 reindexdb.c:330 #, c-format msgid " -W, --password force password prompt\n" @@ -491,12 +490,12 @@ msgstr "La base de datos «%s» será eliminada permanentemente.\n" msgid "Are you sure?" msgstr "¿Está seguro?" -#: dropdb.c:124 +#: dropdb.c:128 #, c-format msgid "%s: database removal failed: %s" msgstr "%s: falló la eliminación de la base de datos: %s" -#: dropdb.c:139 +#: dropdb.c:143 #, c-format msgid "" "%s removes a PostgreSQL database.\n" @@ -505,35 +504,27 @@ msgstr "" "%s elimina una base de datos de PostgreSQL.\n" "\n" -#: dropdb.c:141 +#: dropdb.c:145 #, c-format msgid " %s [OPTION]... DBNAME\n" msgstr " %s [OPCIÓN]... BASE-DE-DATOS\n" -#: dropdb.c:144 dropuser.c:143 +#: dropdb.c:148 dropuser.c:143 #, c-format msgid " -i, --interactive prompt before deleting anything\n" msgstr " -i, --interactive preguntar antes de eliminar\n" -#: droplang.c:203 +#: droplang.c:190 #, c-format msgid "%s: language \"%s\" is not installed in database \"%s\"\n" msgstr "%s: el lenguaje «%s» no está instalado en la base de datos «%s»\n" -#: droplang.c:224 -#, c-format -msgid "" -"%s: still %s functions declared in language \"%s\"; language not removed\n" -msgstr "" -"%s: aún hay %s funciones declaradas en el lenguaje «%s»;\n" -"el lenguaje no ha sido eliminado\n" - -#: droplang.c:358 +#: droplang.c:208 #, c-format msgid "%s: language removal failed: %s" msgstr "%s: falló la eliminación del lenguaje: %s" -#: droplang.c:373 +#: droplang.c:223 #, c-format msgid "" "%s removes a procedural language from a database.\n" @@ -542,7 +533,7 @@ msgstr "" "%s elimina un lenguaje procedural de una base de datos.\n" "\n" -#: droplang.c:377 +#: droplang.c:227 #, c-format msgid "" " -d, --dbname=DBNAME database from which to remove the language\n" @@ -768,12 +759,15 @@ msgstr " -v, --verbose desplegar varios mensajes informativos\n" #: vacuumdb.c:339 #, c-format msgid " -z, --analyze update optimizer statistics\n" -msgstr " -z, --analyze actualizar las estadísticas del optimizador\n" +msgstr "" +" -z, --analyze actualizar las estadísticas del optimizador\n" #: vacuumdb.c:340 #, c-format msgid " -Z, --analyze-only only update optimizer statistics\n" -msgstr " -Z, --analyze-only actualizar sólo las estadísticas del optimizador\n" +msgstr "" +" -Z, --analyze-only actualizar sólo las estadísticas del " +"optimizador\n" #: vacuumdb.c:341 #, c-format @@ -840,7 +834,8 @@ msgstr "" #: reindexdb.c:238 #, c-format msgid "%s: reindexing of table \"%s\" in database \"%s\" failed: %s" -msgstr "%s: falló la reindexación de la tabla «%s» en la base de datos «%s»: %s" +msgstr "" +"%s: falló la reindexación de la tabla «%s» en la base de datos «%s»: %s" #: reindexdb.c:241 #, c-format @@ -965,22 +960,24 @@ msgstr "s" msgid "n" msgstr "n" -#: common.c:296 +#. translator: This is a question followed by the translated options for +#. "yes" and "no". +#: common.c:295 #, c-format msgid "%s (%s/%s) " msgstr "%s (%s/%s) " -#: common.c:317 +#: common.c:316 #, c-format msgid "Please answer \"%s\" or \"%s\".\n" msgstr "Por favor conteste «%s» o «%s».\n" -#: common.c:395 common.c:428 +#: common.c:394 common.c:427 #, c-format msgid "Cancel request sent\n" msgstr "Petición de cancelación enviada\n" -#: common.c:397 common.c:430 +#: common.c:396 common.c:429 #, c-format msgid "Could not send cancel request: %s" msgstr "No se pudo enviar el paquete de cancelación: %s" diff --git a/src/bin/scripts/po/fr.po b/src/bin/scripts/po/fr.po index b007ba53e6..0ed088a22c 100644 --- a/src/bin/scripts/po/fr.po +++ b/src/bin/scripts/po/fr.po @@ -1,8 +1,6 @@ # translation of pgscripts.po to fr_fr # french message translation file for pgscripts # -# $PostgreSQL$ -# # Use these quotes: � %s � # # Guillaume Lelarge , 2004-2009. @@ -15,6 +13,7 @@ msgstr "" "PO-Revision-Date: 2010-03-06 19:10+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" @@ -470,7 +469,7 @@ msgstr " %s [OPTION]... [NOMROLE]\n" #, c-format msgid " -c, --connection-limit=N connection limit for role (default: no limit)\n" msgstr "" -" -c, --conn-limit=N nombre maximal de connexions pour le r�le\n" +" -c, --connection-limit=N nombre maximal de connexions pour le r�le\n" " (par d�faut sans limite)\n" #: createuser.c:304 diff --git a/src/bin/scripts/po/it.po b/src/bin/scripts/po/it.po index 94795df305..1024f443ce 100644 --- a/src/bin/scripts/po/it.po +++ b/src/bin/scripts/po/it.po @@ -7,10 +7,11 @@ # # Traduttori: # * Emanuele Zamprogno -# +# * Daniele Varrazzo +# # Revisori: # * Diego Cinelli -# +# # Traduttori precedenti: # * Primo traduttore: Fabrizio Mazzoni , 2003. # * Secondo traduttore: Mirko Tebaldi , 2004. @@ -24,83 +25,60 @@ # Attuale traduttore: Emanuele Zamprogno , 2009. msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" +"Project-Id-Version: pgscripts (PostgreSQL) 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-03-26 13:16+0000\n" -"PO-Revision-Date: 2010-03-27 12:44:19+0100\n" -"Last-Translator: Gabriele Bartolini \n" +"POT-Creation-Date: 2013-01-29 13:57+0000\n" +"PO-Revision-Date: 2012-12-03 18:45+0100\n" +"Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Italian\n" -"X-Poedit-Country: ITALY\n" "X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Poedit 1.5.4\n" -#: createdb.c:114 -#: createdb.c:133 -#: createlang.c:89 -#: createlang.c:110 -#: createlang.c:163 -#: createuser.c:149 -#: createuser.c:164 -#: dropdb.c:83 -#: dropdb.c:92 -#: dropdb.c:100 -#: droplang.c:100 -#: droplang.c:121 -#: droplang.c:175 -#: dropuser.c:83 -#: dropuser.c:98 -#: clusterdb.c:104 -#: clusterdb.c:119 -#: vacuumdb.c:127 -#: vacuumdb.c:142 -#: reindexdb.c:114 -#: reindexdb.c:128 +#: createdb.c:114 createdb.c:133 createlang.c:89 createlang.c:110 +#: createlang.c:163 createuser.c:149 createuser.c:164 dropdb.c:83 dropdb.c:92 +#: dropdb.c:100 droplang.c:88 droplang.c:109 droplang.c:163 dropuser.c:83 +#: dropuser.c:98 clusterdb.c:104 clusterdb.c:119 vacuumdb.c:127 vacuumdb.c:142 +#: reindexdb.c:114 reindexdb.c:128 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Prova \"%s --help\" per avere più informazioni.\n" - -#: createdb.c:131 -#: createlang.c:108 -#: createuser.c:162 -#: dropdb.c:98 -#: droplang.c:119 -#: dropuser.c:96 -#: clusterdb.c:117 -#: vacuumdb.c:140 -#: reindexdb.c:127 +msgstr "Prova \"%s --help\" per maggiori informazioni.\n" + +#: createdb.c:131 createlang.c:108 createuser.c:162 dropdb.c:98 droplang.c:107 +#: dropuser.c:96 clusterdb.c:117 vacuumdb.c:140 reindexdb.c:127 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" -msgstr "%s: troppi parametri dalla riga di comando (il primo è \"%s\")\n" +msgstr "%s: troppi argomenti nella riga di comando (il primo è \"%s\")\n" #: createdb.c:141 #, c-format msgid "%s: only one of --locale and --lc-ctype can be specified\n" -msgstr "%s: solo uno dei --locale e --lc-ctype può essere specificato\n" +msgstr "%s: solo uno tra --locale e --lc-ctype può essere specificato\n" #: createdb.c:147 #, c-format msgid "%s: only one of --locale and --lc-collate can be specified\n" -msgstr "%s: solo uno di --locale e --lc-collate può essere specificato\n" +msgstr "%s: solo uno tra --locale e --lc-collate può essere specificato\n" #: createdb.c:159 #, c-format msgid "%s: \"%s\" is not a valid encoding name\n" msgstr "%s: \"%s\" non è un nome di codifica valido\n" -#: createdb.c:204 +#: createdb.c:209 #, c-format msgid "%s: database creation failed: %s" msgstr "%s: creazione del database fallita: %s" -#: createdb.c:227 +#: createdb.c:229 #, c-format msgid "%s: comment creation failed (database was created): %s" msgstr "%s: creazione del commento fallita (il database è stato creato): %s" -#: createdb.c:244 +#: createdb.c:247 #, c-format msgid "" "%s creates a PostgreSQL database.\n" @@ -109,32 +87,20 @@ msgstr "" "%s crea un database PostgreSQL.\n" "\n" -#: createdb.c:245 -#: createlang.c:215 -#: createuser.c:300 -#: dropdb.c:140 -#: droplang.c:374 -#: dropuser.c:139 -#: clusterdb.c:236 -#: vacuumdb.c:328 +#: createdb.c:248 createlang.c:223 createuser.c:300 dropdb.c:144 +#: droplang.c:224 dropuser.c:139 clusterdb.c:236 vacuumdb.c:328 #: reindexdb.c:313 #, c-format msgid "Usage:\n" msgstr "Utilizzo:\n" -#: createdb.c:246 +#: createdb.c:249 #, c-format msgid " %s [OPTION]... [DBNAME] [DESCRIPTION]\n" -msgstr " %s [OPZIONE]... [NOME_DB] [DESCRIZIONE]\n" +msgstr " %s [OPZIONE]... [NOMEDB] [DESCRIZIONE]\n" -#: createdb.c:247 -#: createlang.c:217 -#: createuser.c:302 -#: dropdb.c:142 -#: droplang.c:376 -#: dropuser.c:141 -#: clusterdb.c:238 -#: vacuumdb.c:330 +#: createdb.c:250 createlang.c:225 createuser.c:302 dropdb.c:146 +#: droplang.c:226 dropuser.c:141 clusterdb.c:238 vacuumdb.c:330 #: reindexdb.c:315 #, c-format msgid "" @@ -144,64 +110,58 @@ msgstr "" "\n" "Opzioni:\n" -#: createdb.c:248 +#: createdb.c:251 #, c-format msgid " -D, --tablespace=TABLESPACE default tablespace for the database\n" msgstr " -D, --tablespace=TABLESPACE tablespace predefinito per il database\n" -#: createdb.c:249 +#: createdb.c:252 #, c-format msgid " -e, --echo show the commands being sent to the server\n" msgstr " -e, --echo mostra i comandi che vengono inviati al server\n" -#: createdb.c:250 +#: createdb.c:253 #, c-format msgid " -E, --encoding=ENCODING encoding for the database\n" msgstr " -E, --encoding=ENCODING codifica del database\n" -#: createdb.c:251 +#: createdb.c:254 #, c-format msgid " -l, --locale=LOCALE locale settings for the database\n" -msgstr " -l, --locale=LOCALE settaggi per la localizzazione del database\n" +msgstr " -l, --locale=LOCALE impostazioni di localizzazione del database\n" -#: createdb.c:252 +#: createdb.c:255 #, c-format msgid " --lc-collate=LOCALE LC_COLLATE setting for the database\n" -msgstr " --lc-collate=LOCALE LC_COLLATE settaggio per il database\n" +msgstr " --lc-collate=LOCALE impostazione LC_COLLATE per il database\n" -#: createdb.c:253 +#: createdb.c:256 #, c-format msgid " --lc-ctype=LOCALE LC_CTYPE setting for the database\n" -msgstr " --lc-ctype=LOCALE LC_CTYPE settaggio per il database\n" +msgstr " --lc-ctype=LOCALE impostazione LC_CTYPE per il database\n" -#: createdb.c:254 +#: createdb.c:257 #, c-format msgid " -O, --owner=OWNER database user to own the new database\n" -msgstr " -O, --owner=OWNER utente database propietario del nuovo database\n" +msgstr " -O, --owner=OWNER utente database proprietario del nuovo database\n" -#: createdb.c:255 +#: createdb.c:258 #, c-format msgid " -T, --template=TEMPLATE template database to copy\n" msgstr " -T, --template=TEMPLATE modello database da copiare\n" -#: createdb.c:256 +#: createdb.c:259 #, c-format msgid " --help show this help, then exit\n" -msgstr " --help mostra questa guida, quindi esce\n" +msgstr " --help mostra questo aiuto ed esci\n" -#: createdb.c:257 +#: createdb.c:260 #, c-format msgid " --version output version information, then exit\n" -msgstr " --version mostra informazioni sulla versione e poi esce\n" +msgstr " --version mostra informazioni sulla versione ed esci\n" -#: createdb.c:258 -#: createlang.c:223 -#: createuser.c:321 -#: dropdb.c:147 -#: droplang.c:382 -#: dropuser.c:146 -#: clusterdb.c:247 -#: vacuumdb.c:343 +#: createdb.c:261 createlang.c:231 createuser.c:321 dropdb.c:151 +#: droplang.c:232 dropuser.c:146 clusterdb.c:247 vacuumdb.c:343 #: reindexdb.c:325 #, c-format msgid "" @@ -211,48 +171,43 @@ msgstr "" "\n" "Opzioni di connessione:\n" -#: createdb.c:259 +#: createdb.c:262 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" -msgstr " -h, --host=HOSTNAME host server database o directory socket \n" +msgstr " -h, --host=HOSTNAME host del server database o directory socket\n" -#: createdb.c:260 +#: createdb.c:263 #, c-format msgid " -p, --port=PORT database server port\n" -msgstr " -p, --port=PORT porta del server database\n" +msgstr " -p, --port=PORT porta del server database\n" -#: createdb.c:261 +#: createdb.c:264 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=USERNAME nome utente da usare per connettersi\n" -#: createdb.c:262 +#: createdb.c:265 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password non richiedere mai una password\n" -#: createdb.c:263 +#: createdb.c:266 #, c-format msgid " -W, --password force password prompt\n" msgstr " -W, --password forza la richiesta di una password\n" -#: createdb.c:264 +#: createdb.c:267 #, c-format msgid "" "\n" "By default, a database with the same name as the current user is created.\n" msgstr "" "\n" -"Di base, un database con lo stesso nome dell'utente corrente verrà creato.\n" +"Se il nome non è specificato verrà creato un database con lo stesso nome\n" +"dell'utente corrente.\n" -#: createdb.c:265 -#: createlang.c:229 -#: createuser.c:329 -#: dropdb.c:153 -#: droplang.c:388 -#: dropuser.c:152 -#: clusterdb.c:254 -#: vacuumdb.c:350 +#: createdb.c:268 createlang.c:237 createuser.c:329 dropdb.c:157 +#: droplang.c:238 dropuser.c:152 clusterdb.c:254 vacuumdb.c:350 #: reindexdb.c:332 #, c-format msgid "" @@ -260,35 +215,29 @@ msgid "" "Report bugs to .\n" msgstr "" "\n" -"Segnalare bachi a .\n" +"Puoi segnalare eventuali bug a .\n" -#: createlang.c:140 -#: droplang.c:151 +#: createlang.c:140 droplang.c:139 msgid "Name" msgstr "Nome" -#: createlang.c:141 -#: droplang.c:152 +#: createlang.c:141 droplang.c:140 msgid "yes" -msgstr "si" +msgstr "sì" -#: createlang.c:141 -#: droplang.c:152 +#: createlang.c:141 droplang.c:140 msgid "no" msgstr "no" -#: createlang.c:142 -#: droplang.c:153 +#: createlang.c:142 droplang.c:141 msgid "Trusted?" msgstr "Affidabile?" -#: createlang.c:151 -#: droplang.c:162 +#: createlang.c:151 droplang.c:150 msgid "Procedural Languages" msgstr "Linguaggi Procedurali" -#: createlang.c:162 -#: droplang.c:173 +#: createlang.c:162 droplang.c:161 #, c-format msgid "%s: missing required argument language name\n" msgstr "%s: parametro mancante necessario: nome del linguaggio\n" @@ -296,14 +245,14 @@ msgstr "%s: parametro mancante necessario: nome del linguaggio\n" #: createlang.c:184 #, c-format msgid "%s: language \"%s\" is already installed in database \"%s\"\n" -msgstr "%s: linguaggio \"%s\" già installato nel database \"%s\"\n" +msgstr "%s: il linguaggio \"%s\" è già installato nel database \"%s\"\n" -#: createlang.c:198 +#: createlang.c:206 #, c-format msgid "%s: language installation failed: %s" -msgstr "%s: installazione linguaggio fallita: %s" +msgstr "%s: installazione del linguaggio fallita: %s" -#: createlang.c:214 +#: createlang.c:222 #, c-format msgid "" "%s installs a procedural language into a PostgreSQL database.\n" @@ -312,152 +261,107 @@ msgstr "" "%s installa un linguaggio procedurale in un database PostgreSQL.\n" "\n" -#: createlang.c:216 -#: droplang.c:375 +#: createlang.c:224 droplang.c:225 #, c-format msgid " %s [OPTION]... LANGNAME [DBNAME]\n" -msgstr " %s [OPZIONE]... NOME_LINGUAGGIO [NOME_DB]\n" +msgstr " %s [OPZIONE]... NOME_LINGUAGGIO [NOMEDB]\n" -#: createlang.c:218 +#: createlang.c:226 #, c-format msgid " -d, --dbname=DBNAME database to install language in\n" -msgstr " -d, --dbname=NOME_DB database in cui installare il linguaggio\n" +msgstr " -d, --dbname=NOMEDB database in cui installare il linguaggio\n" -#: createlang.c:219 -#: createuser.c:306 -#: dropdb.c:143 -#: droplang.c:378 -#: dropuser.c:142 -#: clusterdb.c:241 -#: reindexdb.c:318 +#: createlang.c:227 createuser.c:306 dropdb.c:147 droplang.c:228 +#: dropuser.c:142 clusterdb.c:241 reindexdb.c:318 #, c-format msgid " -e, --echo show the commands being sent to the server\n" msgstr " -e, --echo mostra i comandi inviati al server\n" -#: createlang.c:220 -#: droplang.c:379 +#: createlang.c:228 droplang.c:229 #, c-format msgid " -l, --list show a list of currently installed languages\n" msgstr " -l, --list mostra la lista dei linguaggi attualmente installati\n" -#: createlang.c:221 -#: createuser.c:319 -#: dropdb.c:145 -#: droplang.c:380 -#: dropuser.c:144 -#: clusterdb.c:245 -#: reindexdb.c:323 +#: createlang.c:229 createuser.c:319 dropdb.c:149 droplang.c:230 +#: dropuser.c:144 clusterdb.c:245 reindexdb.c:323 #, c-format msgid " --help show this help, then exit\n" -msgstr " --help mostra questo aiuto e poi esci\n" +msgstr " --help mostra questo aiuto ed esci\n" -#: createlang.c:222 -#: createuser.c:320 -#: dropdb.c:146 -#: droplang.c:381 -#: dropuser.c:145 -#: clusterdb.c:246 -#: reindexdb.c:324 +#: createlang.c:230 createuser.c:320 dropdb.c:150 droplang.c:231 +#: dropuser.c:145 clusterdb.c:246 reindexdb.c:324 #, c-format msgid " --version output version information, then exit\n" -msgstr " --version mostra informazioni sulla versione, poi esci\n" +msgstr " --version mostra informazioni di versione ed esci\n" -#: createlang.c:224 -#: createuser.c:322 -#: dropdb.c:148 -#: droplang.c:383 -#: dropuser.c:147 -#: clusterdb.c:248 -#: vacuumdb.c:344 -#: reindexdb.c:326 +#: createlang.c:232 createuser.c:322 dropdb.c:152 droplang.c:233 +#: dropuser.c:147 clusterdb.c:248 vacuumdb.c:344 reindexdb.c:326 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" -msgstr " -h, --host=NOME_HOST indirizzo database o directory socket\n" +msgstr " -h, --host=HOSTNAME host del server database o directory socket\n" -#: createlang.c:225 -#: createuser.c:323 -#: dropdb.c:149 -#: droplang.c:384 -#: dropuser.c:148 -#: clusterdb.c:249 -#: vacuumdb.c:345 -#: reindexdb.c:327 +#: createlang.c:233 createuser.c:323 dropdb.c:153 droplang.c:234 +#: dropuser.c:148 clusterdb.c:249 vacuumdb.c:345 reindexdb.c:327 #, c-format msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=PORTA porta del server database\n" -#: createlang.c:226 -#: dropdb.c:150 -#: droplang.c:385 -#: clusterdb.c:250 -#: vacuumdb.c:346 +#: createlang.c:234 dropdb.c:154 droplang.c:235 clusterdb.c:250 vacuumdb.c:346 #: reindexdb.c:328 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=UTENTE nome utente da utilizzare per la connessione\n" -#: createlang.c:227 -#: createuser.c:325 -#: dropdb.c:151 -#: droplang.c:386 -#: dropuser.c:150 -#: clusterdb.c:251 -#: vacuumdb.c:347 -#: reindexdb.c:329 +#: createlang.c:235 createuser.c:325 dropdb.c:155 droplang.c:236 +#: dropuser.c:150 clusterdb.c:251 vacuumdb.c:347 reindexdb.c:329 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password non richiedere mai una password\n" -#: createlang.c:228 -#: createuser.c:326 -#: dropdb.c:152 -#: droplang.c:387 -#: dropuser.c:151 -#: clusterdb.c:252 -#: vacuumdb.c:348 -#: reindexdb.c:330 +#: createlang.c:236 createuser.c:326 dropdb.c:156 droplang.c:237 +#: dropuser.c:151 clusterdb.c:252 vacuumdb.c:348 reindexdb.c:330 #, c-format msgid " -W, --password force password prompt\n" msgstr " -W, --password forza la richiesta di una password\n" #: createuser.c:169 msgid "Enter name of role to add: " -msgstr "Inserisci il nome dell'utente da aggiungere:" +msgstr "Inserisci il nome del ruolo da aggiungere: " #: createuser.c:176 msgid "Enter password for new role: " -msgstr "Inserisci la password per il nuovo utente:" +msgstr "Inserisci la password per il nuovo ruolo: " #: createuser.c:177 msgid "Enter it again: " -msgstr "Conferma password:" +msgstr "Conferma password: " #: createuser.c:180 #, c-format msgid "Passwords didn't match.\n" -msgstr "Le password non corrispondono. \n" +msgstr "Le password non corrispondono.\n" #: createuser.c:189 msgid "Shall the new role be a superuser?" -msgstr "Il nuovo utente dev'essere un superuser?" +msgstr "Il nuovo ruolo dev'essere un superutente?" #: createuser.c:204 msgid "Shall the new role be allowed to create databases?" -msgstr "Il nuovo utente può creare database?" +msgstr "Il nuovo ruolo può creare database?" #: createuser.c:212 msgid "Shall the new role be allowed to create more new roles?" -msgstr "Il nuovo utente può creare altri utenti?" +msgstr "Il nuovo ruolo può creare altri ruoli?" #: createuser.c:245 #, c-format msgid "Password encryption failed.\n" -msgstr "crittazione della password fallita.\n" +msgstr "Criptazione password fallita.\n" #: createuser.c:284 #, c-format msgid "%s: creation of new role failed: %s" -msgstr "%s: creazione del nuovo utente fallita: %s" +msgstr "%s: creazione del nuovo ruolo fallita: %s" #: createuser.c:299 #, c-format @@ -465,34 +369,33 @@ msgid "" "%s creates a new PostgreSQL role.\n" "\n" msgstr "" -"%s crea un nuovo utente PostgreSQL.\n" +"%s crea un nuovo ruolo PostgreSQL.\n" "\n" -#: createuser.c:301 -#: dropuser.c:140 +#: createuser.c:301 dropuser.c:140 #, c-format msgid " %s [OPTION]... [ROLENAME]\n" -msgstr " %s [OPZIONI]... [NOME_UTENTE]\n" +msgstr " %s [OPZIONI]... [NOME_RUOLO]\n" #: createuser.c:303 #, c-format msgid " -c, --connection-limit=N connection limit for role (default: no limit)\n" -msgstr " -c, --connection-limit=N limite di connessione per un utente(default: nessun limite)\n" +msgstr " -c, --connection-limit=N limite di connessione per un ruolo (predefinito: nessun limite)\n" #: createuser.c:304 #, c-format msgid " -d, --createdb role can create new databases\n" -msgstr " -d, --createdb l'utente può creare database\n" +msgstr " -d, --createdb il ruolo può creare nuovi database\n" #: createuser.c:305 #, c-format msgid " -D, --no-createdb role cannot create databases\n" -msgstr " -D, --no-createdb l'utente non può creare database\n" +msgstr " -D, --no-createdb il ruolo non può creare database\n" #: createuser.c:307 #, c-format msgid " -E, --encrypted encrypt stored password\n" -msgstr " -E, --encrypted cifra la password salvata\n" +msgstr " -E, --encrypted cripta la password salvata\n" #: createuser.c:308 #, c-format @@ -500,58 +403,60 @@ msgid "" " -i, --inherit role inherits privileges of roles it is a\n" " member of (default)\n" msgstr "" -" -i, --inherit role inherits privileges of roles it is a\n" -" member of (default)\n" +" -i, --inherit il ruolo eredita i privilegi dei ruoli di cui\n" +" è membro (predefinito)\n" #: createuser.c:310 #, c-format msgid " -I, --no-inherit role does not inherit privileges\n" -msgstr " -I, --no-inherit role does not inherit privileges\n" +msgstr " -I, --no-inherit il ruolo non eredita privilegi\n" #: createuser.c:311 #, c-format msgid " -l, --login role can login (default)\n" -msgstr " -l, --login role can login (default)\n" +msgstr " -l, --login il ruolo può accedere al database (predefinito)\n" #: createuser.c:312 #, c-format msgid " -L, --no-login role cannot login\n" -msgstr " -L, --no-login role cannot login\n" +msgstr " -L, --no-login il ruolo non può accedere al database\n" #: createuser.c:313 #, c-format msgid " -N, --unencrypted do not encrypt stored password\n" -msgstr " -N, --unencrypted non cifrare la password salvata\n" +msgstr " -N, --unencrypted non criptare la password salvata\n" #: createuser.c:314 #, c-format msgid " -P, --pwprompt assign a password to new role\n" -msgstr " -P, --pwprompt assign a password to new role\n" +msgstr " -P, --pwprompt assegna una password al nuovo ruolo\n" #: createuser.c:315 #, c-format msgid " -r, --createrole role can create new roles\n" -msgstr " -r, --createrole role can create new roles\n" +msgstr " -r, --createrole il ruolo può creare nuovi ruoli\n" #: createuser.c:316 #, c-format msgid " -R, --no-createrole role cannot create roles\n" -msgstr " -R, --no-createrole role cannot create roles\n" +msgstr " -R, --no-createrole il ruolo non può creare ruoli\n" #: createuser.c:317 #, c-format msgid " -s, --superuser role will be superuser\n" -msgstr " -s, --superuser role will be superuser\n" +msgstr " -s, --superuser il ruolo sarà un superutente\n" #: createuser.c:318 #, c-format msgid " -S, --no-superuser role will not be superuser\n" -msgstr " -S, --no-superuser role will not be superuser\n" +msgstr " -S, --no-superuser il ruolo non sarà un superutente\n" #: createuser.c:324 #, c-format msgid " -U, --username=USERNAME user name to connect as (not the one to create)\n" -msgstr " -U, --username=UTENTE nome utente con cui collegarsi (non quello da creare)\n" +msgstr "" +" -U, --username=UTENTE nome utente con cui collegarsi\n" +" (non quello da creare)\n" #: createuser.c:327 #, c-format @@ -561,29 +466,29 @@ msgid "" "be prompted interactively.\n" msgstr "" "\n" -"Se uno tra -d, -D, -r, -R, -s, -S ed UTENTE non è specificato, ti sarà richesto interattivamente.\n" +"Se una tra -d, -D, -r, -R, -s, -S e ROLENAME manca, ti sarà chiesta\n" +"interattivamente.\n" #: dropdb.c:91 #, c-format msgid "%s: missing required argument database name\n" -msgstr "%s: parametro mancante, nome del database\n" +msgstr "%s: parametro richiesto mancante: nome del database\n" #: dropdb.c:106 #, c-format msgid "Database \"%s\" will be permanently removed.\n" msgstr "Il database \"%s\" sarà eliminato definitivamente.\n" -#: dropdb.c:107 -#: dropuser.c:108 +#: dropdb.c:107 dropuser.c:108 msgid "Are you sure?" msgstr "Sei sicuro?" -#: dropdb.c:124 +#: dropdb.c:128 #, c-format msgid "%s: database removal failed: %s" msgstr "%s: eliminazione database fallita: %s" -#: dropdb.c:139 +#: dropdb.c:143 #, c-format msgid "" "%s removes a PostgreSQL database.\n" @@ -592,33 +497,27 @@ msgstr "" "%s elimina un database PostgreSQL.\n" "\n" -#: dropdb.c:141 +#: dropdb.c:145 #, c-format msgid " %s [OPTION]... DBNAME\n" -msgstr " %s [OPZIONE]... NOME_DB\n" +msgstr " %s [OPZIONE]... NOMEDB\n" -#: dropdb.c:144 -#: dropuser.c:143 +#: dropdb.c:148 dropuser.c:143 #, c-format msgid " -i, --interactive prompt before deleting anything\n" -msgstr " -i, --interactive chiedi conferma prima di eseguire un operazione\n" +msgstr " -i, --interactive chiedi conferma prima di cancellare qualunque cosa\n" -#: droplang.c:203 +#: droplang.c:190 #, c-format msgid "%s: language \"%s\" is not installed in database \"%s\"\n" -msgstr "%s: linguaggio \"%s\" non installato nel database \"%s\"\n" +msgstr "%s: il linguaggio \"%s\" non è installato nel database \"%s\"\n" -#: droplang.c:224 -#, c-format -msgid "%s: still %s functions declared in language \"%s\"; language not removed\n" -msgstr "%s: ancora %s funzioni dichiarate nel linguaggio \"%s\"; linguaggio non eliminato\n" - -#: droplang.c:358 +#: droplang.c:208 #, c-format msgid "%s: language removal failed: %s" -msgstr "%s: eliminazione linguaggio fallita: %s" +msgstr "%s: eliminazione del linguaggio fallita: %s" -#: droplang.c:373 +#: droplang.c:223 #, c-format msgid "" "%s removes a procedural language from a database.\n" @@ -627,24 +526,24 @@ msgstr "" "%s elimina un linguaggio procedurale da un database.\n" "\n" -#: droplang.c:377 +#: droplang.c:227 #, c-format msgid " -d, --dbname=DBNAME database from which to remove the language\n" -msgstr " -d, --dbname=NOME_DB database dal quale eliminare il linguaggio\n" +msgstr " -d, --dbname=NOMEDB database dal quale eliminare il linguaggio\n" #: dropuser.c:103 msgid "Enter name of role to drop: " -msgstr "Inserisci il nome dell'utente da eliminare:" +msgstr "Inserisci il nome del ruolo da eliminare: " #: dropuser.c:107 #, c-format msgid "Role \"%s\" will be permanently removed.\n" -msgstr "L'utente \"%s\" sarà definitivamente eliminato.\n" +msgstr "Il ruolo \"%s\" sarà eliminato definitivamente.\n" #: dropuser.c:123 #, c-format msgid "%s: removal of role \"%s\" failed: %s" -msgstr "%s: eliminazione dell'utente \"%s\" fallita: %s" +msgstr "%s: eliminazione del ruolo \"%s\" fallita: %s" #: dropuser.c:138 #, c-format @@ -652,23 +551,25 @@ msgid "" "%s removes a PostgreSQL role.\n" "\n" msgstr "" -"%s elimina un utente PostgreSQL.\n" +"%s elimina un ruolo PostgreSQL.\n" "\n" #: dropuser.c:149 #, c-format msgid " -U, --username=USERNAME user name to connect as (not the one to drop)\n" -msgstr " -U, --username=UTENTE nome utente con cui collegarsi (non quello da eliminare)\n" +msgstr "" +" -U, --username=UTENTE nome utente con cui collegarsi\n" +" (non quello da eliminare)\n" #: clusterdb.c:129 #, c-format msgid "%s: cannot cluster all databases and a specific one at the same time\n" -msgstr "%s: impossibile riordinare tutti i database ed uno specifico nello stesso momento\n" +msgstr "%s: non è possibile raggruppare tutti i database ed uno specifico nello stesso momento\n" #: clusterdb.c:135 #, c-format msgid "%s: cannot cluster a specific table in all databases\n" -msgstr "%s: impossibile riordinare una tabella specifica in tutti i database\n" +msgstr "%s: non è possibile raggruppare una tabella specifica in tutti i database\n" #: clusterdb.c:187 #, c-format @@ -691,41 +592,38 @@ msgid "" "%s clusters all previously clustered tables in a database.\n" "\n" msgstr "" -"%s riordina tutte le tabelle precedentemente riordinate nel database.\n" +"%s raggruppa tutte le tabelle precedentemente raggruppate in un database.\n" "\n" -#: clusterdb.c:237 -#: vacuumdb.c:329 -#: reindexdb.c:314 +#: clusterdb.c:237 vacuumdb.c:329 reindexdb.c:314 #, c-format msgid " %s [OPTION]... [DBNAME]\n" -msgstr " %s [OPZIONI]... [NOME_DB]\n" +msgstr " %s [OPZIONE]... [NOMEDB]\n" #: clusterdb.c:239 #, c-format msgid " -a, --all cluster all databases\n" -msgstr " -a, --all riordina tutti i database\n" +msgstr " -a, --all raggruppa tutti i database\n" #: clusterdb.c:240 #, c-format msgid " -d, --dbname=DBNAME database to cluster\n" -msgstr " -d, --dbname=NOME_DB database da riordinare\n" +msgstr " -d, --dbname=NOMEDB database da raggruppare\n" -#: clusterdb.c:242 -#: reindexdb.c:320 +#: clusterdb.c:242 reindexdb.c:320 #, c-format msgid " -q, --quiet don't write any messages\n" -msgstr " -q, --quiet non stampare messaggi\n" +msgstr " -q, --quiet non stampare alcun messaggio\n" #: clusterdb.c:243 #, c-format msgid " -t, --table=TABLE cluster specific table only\n" -msgstr " -t, --table=TABELLA riordina solo una tabella\n" +msgstr " -t, --table=TABELLA raggruppa solo la tabella specificata\n" #: clusterdb.c:244 #, c-format msgid " -v, --verbose write a lot of output\n" -msgstr " -v, --verbose mostra un output completo\n" +msgstr " -v, --verbose mostra un output completo\n" #: clusterdb.c:253 #, c-format @@ -739,32 +637,32 @@ msgstr "" #: vacuumdb.c:150 #, c-format msgid "%s: cannot use the \"full\" option when performing only analyze\n" -msgstr "" +msgstr "%s: non è possibile usare l'opzione \"full\" quando si effettua solo analyze\n" #: vacuumdb.c:156 #, c-format msgid "%s: cannot use the \"freeze\" option when performing only analyze\n" -msgstr "" +msgstr "%s: non è possibile usare l'opzione \"freeze\" quando si effettua solo analyze\n" #: vacuumdb.c:169 #, c-format msgid "%s: cannot vacuum all databases and a specific one at the same time\n" -msgstr "%s: impossibile effettuare la pulizia di tutti i database e di uno in particolare nello stesso momento\n" +msgstr "%s: non è possibile effettuare la pulizia di tutti i database e di uno in particolare nello stesso momento\n" #: vacuumdb.c:175 #, c-format msgid "%s: cannot vacuum a specific table in all databases\n" -msgstr "%s: impossibile effettuare la pulizia di una tabella specifica in tutti i database\n" +msgstr "%s: non è possibile effettuare la pulizia di una tabella specifica in tutti i database\n" #: vacuumdb.c:278 #, c-format msgid "%s: vacuuming of table \"%s\" in database \"%s\" failed: %s" -msgstr "%s: la pulizia della tabella \"%s\" nel database \"%s\" è fallito: %s" +msgstr "%s: la pulizia della tabella \"%s\" nel database \"%s\" è fallita: %s" #: vacuumdb.c:281 #, c-format msgid "%s: vacuuming of database \"%s\" failed: %s" -msgstr "%s: la pulizia del database \"%s\" è fallito: %s" +msgstr "%s: la pulizia del database \"%s\" è fallita: %s" #: vacuumdb.c:311 #, c-format @@ -788,7 +686,7 @@ msgstr " -a, --all pulisci tutti i database\n" #: vacuumdb.c:332 #, c-format msgid " -d, --dbname=DBNAME database to vacuum\n" -msgstr " -d, --dbname=NOME_DB database da pulire\n" +msgstr " -d, --dbname=NOMEDB database da pulire\n" #: vacuumdb.c:333 #, c-format @@ -803,7 +701,9 @@ msgstr " -f, --full esegui una pulizia completa\n" #: vacuumdb.c:335 #, c-format msgid " -F, --freeze freeze row transaction information\n" -msgstr " -F, --freeze congela le informazioni per la transazione sulla riga\n" +msgstr "" +" -F, --freeze congela le informazioni per la transazione\n" +" sulla riga\n" #: vacuumdb.c:336 #, c-format @@ -813,7 +713,7 @@ msgstr " -q, --quiet non stampare alcun messaggio\n" #: vacuumdb.c:337 #, c-format msgid " -t, --table='TABLE[(COLUMNS)]' vacuum specific table only\n" -msgstr " -t, --table='TABELLA[(COLONNE)]' pulisci solamente una tabella specifica\n" +msgstr " -t, --table='TABELLA[(COL)]' pulisci solamente la tabella specificata\n" #: vacuumdb.c:338 #, c-format @@ -828,17 +728,19 @@ msgstr " -z, --analyze aggiorna le statistiche per l'ottimizz #: vacuumdb.c:340 #, c-format msgid " -Z, --analyze-only only update optimizer statistics\n" -msgstr " -z, --analyze-only aggiorna soltanto le statistiche per l'ottimizzatore\n" +msgstr "" +" -Z, --analyze-only aggiorna soltanto le statistiche per\n" +" l'ottimizzatore\n" #: vacuumdb.c:341 #, c-format msgid " --help show this help, then exit\n" -msgstr " --help mostra questi aiuti ed esci\n" +msgstr " --help mostra questo aiuto ed esci\n" #: vacuumdb.c:342 #, c-format msgid " --version output version information, then exit\n" -msgstr " --version mostra informazioni sulla versione e poi esci\n" +msgstr " --version mostra informazioni sulla versione ed esci\n" #: vacuumdb.c:349 #, c-format @@ -852,57 +754,57 @@ msgstr "" #: reindexdb.c:138 #, c-format msgid "%s: cannot reindex all databases and a specific one at the same time\n" -msgstr "%s: impossibile riordinare tutti i database ed uno specifico nello stesso momento\n" +msgstr "%s: non è possibile re-indicizzare tutti i database ed uno specifico nello stesso momento\n" #: reindexdb.c:143 #, c-format msgid "%s: cannot reindex all databases and system catalogs at the same time\n" -msgstr "%s: impossibile riordinare tutti i database ed uno specifico nello stesso momento\n" +msgstr "%s: non è possibile re-indicizzare tutti i database e i cataloghi di sistema nello stesso momento\n" #: reindexdb.c:148 #, c-format msgid "%s: cannot reindex a specific table in all databases\n" -msgstr "%s: impossibile riordinare una tabella specifica in tutti i database\n" +msgstr "%s: non è possibile re-indicizzare una tabella specifica in tutti i database\n" #: reindexdb.c:153 #, c-format msgid "%s: cannot reindex a specific index in all databases\n" -msgstr "%s: impossibile riordinare un indice specifico in tutti i database\n" +msgstr "%s: non è possibile re-indicizzare un indice specifico in tutti i database\n" #: reindexdb.c:164 #, c-format msgid "%s: cannot reindex a specific table and system catalogs at the same time\n" -msgstr "%s: impossibile riordinare una specifica tabella ed i cataloghi di sistema nello stesso momento\n" +msgstr "%s: non è possibile re-indicizzare una tabella specifica ed i cataloghi di sistema nello stesso momento\n" #: reindexdb.c:169 #, c-format msgid "%s: cannot reindex a specific index and system catalogs at the same time\n" -msgstr "%s: impossibile riordinare un indice specifico ed i cataloghi di sistema stesso momento\n" +msgstr "%s: non è possibile re-indicizzare un indice specifico ed i cataloghi di sistema stesso momento\n" #: reindexdb.c:238 #, c-format msgid "%s: reindexing of table \"%s\" in database \"%s\" failed: %s" -msgstr "%s: il riordino della tabella \"%s\" nel database \"%s\" è fallito: %s" +msgstr "%s: la re-indicizzazione della tabella \"%s\" nel database \"%s\" è fallita: %s" #: reindexdb.c:241 #, c-format msgid "%s: reindexing of index \"%s\" in database \"%s\" failed: %s" -msgstr "%s: il riordino di un indice \"%s\" nel database \"%s\" è fallito: %s" +msgstr "%s: la re-indicizzazione dell'indice \"%s\" nel database \"%s\" è fallita: %s" #: reindexdb.c:244 #, c-format msgid "%s: reindexing of database \"%s\" failed: %s" -msgstr "%s: il riordino del database \"%s\" è fallito: %s" +msgstr "%s: la re-indicizzazione del database \"%s\" è fallita: %s" #: reindexdb.c:273 #, c-format msgid "%s: reindexing database \"%s\"\n" -msgstr "%s: riordino del database \"%s\"\n" +msgstr "%s: re-indicizzazione del database \"%s\"\n" #: reindexdb.c:300 #, c-format msgid "%s: reindexing of system catalogs failed: %s" -msgstr "%s: riordino dei cataloghi di sistema fallito: %s" +msgstr "%s: la re-indicizzazione dei cataloghi di sistema è fallita: %s" #: reindexdb.c:312 #, c-format @@ -910,33 +812,33 @@ msgid "" "%s reindexes a PostgreSQL database.\n" "\n" msgstr "" -"%s riordina un database PostgreSQL.\n" +"%s re-indicizza un database PostgreSQL.\n" "\n" #: reindexdb.c:316 #, c-format msgid " -a, --all reindex all databases\n" -msgstr " -a, --all riordina tutti i database\n" +msgstr " -a, --all re-indicizza tutti i database\n" #: reindexdb.c:317 #, c-format msgid " -d, --dbname=DBNAME database to reindex\n" -msgstr " -d, --dbname=NOME_DB database da riordinare\n" +msgstr " -d, --dbname=NOMEDB database da re-indicizzare\n" #: reindexdb.c:319 #, c-format msgid " -i, --index=INDEX recreate specific index only\n" -msgstr " -I, --index=NOME ricrea l'indice specificato\n" +msgstr " -i, --index=NOME ricrea solo l'indice specificato\n" #: reindexdb.c:321 #, c-format msgid " -s, --system reindex system catalogs\n" -msgstr " -s, --show mostra le impostazioni interne\n" +msgstr " -s, --system re-indicizza i cataloghi di sistema\n" #: reindexdb.c:322 #, c-format msgid " -t, --table=TABLE reindex specific table only\n" -msgstr " -t, --table=TABELLA riordina solo una tabella\n" +msgstr " -t, --table=TABELLA re-indicizza solo la tabella specificata\n" #: reindexdb.c:331 #, c-format @@ -950,15 +852,14 @@ msgstr "" #: common.c:45 #, c-format msgid "%s: could not obtain information about current user: %s\n" -msgstr "%s: impossibile acquisire informazioni sull'utente: %s\n" +msgstr "%s: non è stato possibile acquisire informazioni sull'utente corrente: %s\n" #: common.c:56 #, c-format msgid "%s: could not get current user name: %s\n" -msgstr "%s: impossibile determinare il nome utente: %s\n" +msgstr "%s: non è stato possibile determinare il nome utente corrente: %s\n" -#: common.c:103 -#: common.c:155 +#: common.c:103 common.c:155 msgid "Password: " msgstr "Password: " @@ -970,29 +871,27 @@ msgstr "%s: memoria esaurita\n" #: common.c:144 #, c-format msgid "%s: could not connect to database %s\n" -msgstr "%s: impossibile connettersi al database %s\n" +msgstr "%s: connessione al database %s fallita\n" #: common.c:166 #, c-format msgid "%s: could not connect to database %s: %s" -msgstr "%s: impossibile connettersi al database %s: %s" +msgstr "%s: connessione al database %s fallita: %s" -#: common.c:190 -#: common.c:218 +#: common.c:190 common.c:218 #, c-format msgid "%s: query failed: %s" msgstr "%s: query fallita: %s" -#: common.c:192 -#: common.c:220 +#: common.c:192 common.c:220 #, c-format msgid "%s: query was: %s\n" -msgstr "%s: query eseguita: %s\n" +msgstr "%s: la query era: %s\n" #: common.c:266 #, c-format msgid "pg_strdup: cannot duplicate null pointer (internal error)\n" -msgstr "pg_strdup: impossibile duplicare un puntatore nullo (errore interno)\n" +msgstr "pg_strdup: non è possibile duplicare un puntatore nullo (errore interno)\n" #: common.c:272 #, c-format @@ -1009,25 +908,24 @@ msgstr "s" msgid "n" msgstr "n" -#: common.c:296 +#. translator: This is a question followed by the translated options for +#. "yes" and "no". +#: common.c:295 #, c-format msgid "%s (%s/%s) " msgstr "%s (%s/%s) " -#: common.c:317 +#: common.c:316 #, c-format msgid "Please answer \"%s\" or \"%s\".\n" msgstr "Prego rispondere \"%s\" o \"%s\".\n" -#: common.c:395 -#: common.c:428 +#: common.c:394 common.c:427 #, c-format msgid "Cancel request sent\n" -msgstr "Cancella la richiesta spedita\n" +msgstr "Richiesta di annullamento inviata\n" -#: common.c:397 -#: common.c:430 +#: common.c:396 common.c:429 #, c-format msgid "Could not send cancel request: %s" -msgstr "Impossibile mandare la richiesta di cancellazione: %s" - +msgstr "Invio della richiesta di annullamento fallita: %s" diff --git a/src/bin/scripts/po/ja.po b/src/bin/scripts/po/ja.po index 0a4001becf..5bcaff4093 100644 --- a/src/bin/scripts/po/ja.po +++ b/src/bin/scripts/po/ja.po @@ -9,6 +9,7 @@ msgstr "" "PO-Revision-Date: 2010-07-19 13:40+0900\n" "Last-Translator: HOTTA Michihide \n" "Language-Team: jpug-doc \n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/scripts/po/ko.po b/src/bin/scripts/po/ko.po index d796136f87..4d74ff8348 100644 --- a/src/bin/scripts/po/ko.po +++ b/src/bin/scripts/po/ko.po @@ -9,6 +9,7 @@ msgstr "" "PO-Revision-Date: 2010-09-24 12:37-0400\n" "Last-Translator: EnterpriseDB translation team \n" "Language-Team: EnterpriseDB translation team \n" +"Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=euc-kr\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/scripts/po/pl.po b/src/bin/scripts/po/pl.po new file mode 100644 index 0000000000..b095a29b94 --- /dev/null +++ b/src/bin/scripts/po/pl.po @@ -0,0 +1,956 @@ +# Polish message translation file for pgscripts +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# +# Begina Felicysym , 2011. +msgid "" +msgstr "" +"Project-Id-Version: pgscripts (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-09-29 22:56+0000\n" +"PO-Revision-Date: 2011-09-30 09:49-0300\n" +"Last-Translator: Begina Felicysym \n" +"Language-Team: Begina Felicysym\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1-beta1\n" + +#: createdb.c:114 createdb.c:133 createlang.c:89 createlang.c:110 +#: createlang.c:163 createuser.c:149 createuser.c:164 dropdb.c:83 dropdb.c:92 +#: dropdb.c:100 droplang.c:88 droplang.c:109 droplang.c:163 dropuser.c:83 +#: dropuser.c:98 clusterdb.c:104 clusterdb.c:119 vacuumdb.c:127 vacuumdb.c:142 +#: reindexdb.c:114 reindexdb.c:128 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Spróbuj \"%s --help\" aby uzyskać więcej informacji.\n" + +#: createdb.c:131 createlang.c:108 createuser.c:162 dropdb.c:98 droplang.c:107 +#: dropuser.c:96 clusterdb.c:117 vacuumdb.c:140 reindexdb.c:127 +#, c-format +msgid "%s: too many command-line arguments (first is \"%s\")\n" +msgstr "%s: za duża ilość parametrów wiersza poleceń (pierwszy to \"%s\")\n" + +#: createdb.c:141 +#, c-format +msgid "%s: only one of --locale and --lc-ctype can be specified\n" +msgstr "%s: tylko jedna z --locale i --lc-ctype może być wskazany\n" + +#: createdb.c:147 +#, c-format +msgid "%s: only one of --locale and --lc-collate can be specified\n" +msgstr "%s: tylko jedna z --locale i --lc-collate może być wskazany\n" + +#: createdb.c:159 +#, c-format +msgid "%s: \"%s\" is not a valid encoding name\n" +msgstr "%s: \"%s\" nie jest poprawną nazwą kodowania serwera\n" + +#: createdb.c:209 +#, c-format +msgid "%s: database creation failed: %s" +msgstr "%s: nie udało się utworzyć bazy danych: %s" + +#: createdb.c:229 +#, c-format +msgid "%s: comment creation failed (database was created): %s" +msgstr "%s: nie udało się utworzyć notatki (baza danych została utworzona): %s" + +#: createdb.c:247 +#, c-format +msgid "" +"%s creates a PostgreSQL database.\n" +"\n" +msgstr "" +"%s tworzy bazę danych PostgreSQL.\n" +"\n" + +#: createdb.c:248 createlang.c:223 createuser.c:300 dropdb.c:144 +#: droplang.c:224 dropuser.c:139 clusterdb.c:236 vacuumdb.c:328 +#: reindexdb.c:313 +#, c-format +msgid "Usage:\n" +msgstr "Składnia:\n" + +#: createdb.c:249 +#, c-format +msgid " %s [OPTION]... [DBNAME] [DESCRIPTION]\n" +msgstr " %s [OPCJA]... [NAZWA] [OPIS]\n" + +#: createdb.c:250 createlang.c:225 createuser.c:302 dropdb.c:146 +#: droplang.c:226 dropuser.c:141 clusterdb.c:238 vacuumdb.c:330 +#: reindexdb.c:315 +#, c-format +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Opcje:\n" + +#: createdb.c:251 +#, c-format +msgid " -D, --tablespace=TABLESPACE default tablespace for the database\n" +msgstr "" +" -D, --tablespace=TABLESPACE domyślna przestrzeń tabel dla bazy danych\n" + +#: createdb.c:252 +#, c-format +msgid "" +" -e, --echo show the commands being sent to the server\n" +msgstr "" +" -e, --echo pokazuje polecenia przesyłane do serwera\n" + +#: createdb.c:253 +#, c-format +msgid " -E, --encoding=ENCODING encoding for the database\n" +msgstr "" +" -E, --encoding=KODOWANIE ustawia domyślne kodowanie dla bazy danych\n" + +#: createdb.c:254 +#, c-format +msgid " -l, --locale=LOCALE locale settings for the database\n" +msgstr " -l, --locale=LOKALIZACJA ustawienia regionalne dla bazy danych\n" + +#: createdb.c:255 +#, c-format +msgid " --lc-collate=LOCALE LC_COLLATE setting for the database\n" +msgstr " --lc-collate=LOKALIZACJA ustawienie LC_COLLATE dla bazy danych\n" + +#: createdb.c:256 +#, c-format +msgid " --lc-ctype=LOCALE LC_CTYPE setting for the database\n" +msgstr " --lc-ctype=LOKALIZACJA ustawienie LC_CTYPE dla bazy danych\n" + +#: createdb.c:257 +#, c-format +msgid " -O, --owner=OWNER database user to own the new database\n" +msgstr "" +" -O, --owner=WŁAŚCICIEL użytkownik bazy danych będący właścicielem " +"nowej bazy\n" + +#: createdb.c:258 +#, c-format +msgid " -T, --template=TEMPLATE template database to copy\n" +msgstr " -T, --template=SZABLON szablon bazy do skopiowania\n" + +#: createdb.c:259 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help pokazuje ten ekran pomocy i kończy\n" + +#: createdb.c:260 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version pokazuje informacje o wersji i kończy\n" + +#: createdb.c:261 createlang.c:231 createuser.c:321 dropdb.c:151 +#: droplang.c:232 dropuser.c:146 clusterdb.c:247 vacuumdb.c:343 +#: reindexdb.c:325 +#, c-format +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Opcje połączenia:\n" + +#: createdb.c:262 +#, c-format +msgid "" +" -h, --host=HOSTNAME database server host or socket directory\n" +msgstr "" +" -h, --host=NAZWAHOSTA host serwera bazy danych lub katalog gniazda\n" + +#: createdb.c:263 +#, c-format +msgid " -p, --port=PORT database server port\n" +msgstr " -p, --port=PORT numer portu na serwera bazy dnaych\n" + +#: createdb.c:264 +#, c-format +msgid " -U, --username=USERNAME user name to connect as\n" +msgstr " -U, --username=NAZWAUZYTK nazwa użytkownika do połączenia\n" + +#: createdb.c:265 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password nie pytaj nigdy o hasło\n" + +#: createdb.c:266 +#, c-format +msgid " -W, --password force password prompt\n" +msgstr " -W, --password wymuś pytanie o hasło\n" + +#: createdb.c:267 +#, c-format +msgid "" +"\n" +"By default, a database with the same name as the current user is created.\n" +msgstr "" +"\n" +"Domyślnie, jest tworzona baza danych o tej samej nazwie co bieżący " +"użytkownik.\n" + +#: createdb.c:268 createlang.c:237 createuser.c:329 dropdb.c:157 +#: droplang.c:238 dropuser.c:152 clusterdb.c:254 vacuumdb.c:350 +#: reindexdb.c:332 +#, c-format +msgid "" +"\n" +"Report bugs to .\n" +msgstr "" +"\n" +"Błędy proszę przesyłać na adres .\n" + +#: createlang.c:140 droplang.c:139 +msgid "Name" +msgstr "Nazwa" + +#: createlang.c:141 droplang.c:140 +msgid "yes" +msgstr "tak" + +#: createlang.c:141 droplang.c:140 +msgid "no" +msgstr "nie" + +#: createlang.c:142 droplang.c:141 +msgid "Trusted?" +msgstr "Zaufany?" + +#: createlang.c:151 droplang.c:150 +msgid "Procedural Languages" +msgstr "Języki Proceduralne" + +#: createlang.c:162 droplang.c:161 +#, c-format +msgid "%s: missing required argument language name\n" +msgstr "%s: brak wymaganego argumentu nazwy języka\n" + +#: createlang.c:184 +#, c-format +msgid "%s: language \"%s\" is already installed in database \"%s\"\n" +msgstr "%s: język \"%s\" jest już zainstalowany w bazie danych \"%s\"\n" + +#: createlang.c:206 +#, c-format +msgid "%s: language installation failed: %s" +msgstr "%s: instalacja języka nie powiodła się: %s" + +#: createlang.c:222 +#, c-format +msgid "" +"%s installs a procedural language into a PostgreSQL database.\n" +"\n" +msgstr "" +"%s instaluje język proceduralny w bazie danych PostgreSQL.\n" +"\n" + +#: createlang.c:224 droplang.c:225 +#, c-format +msgid " %s [OPTION]... LANGNAME [DBNAME]\n" +msgstr " %s [OPCJA]... NAZWAJĘZYKA [NAZWADB]\n" + +#: createlang.c:226 +#, c-format +msgid " -d, --dbname=DBNAME database to install language in\n" +msgstr " -d, --dbname=NAZWADB baza danych do zainstalowania języka\n" + +#: createlang.c:227 createuser.c:306 dropdb.c:147 droplang.c:228 +#: dropuser.c:142 clusterdb.c:241 reindexdb.c:318 +#, c-format +msgid "" +" -e, --echo show the commands being sent to the server\n" +msgstr " -e, --echo pokazuje polecenia przesyłane do serwera\n" + +#: createlang.c:228 droplang.c:229 +#, c-format +msgid "" +" -l, --list show a list of currently installed languages\n" +msgstr "" +" -l, --list pokazuje listę aktualnie zainstalowanych " +"języków\n" + +#: createlang.c:229 createuser.c:319 dropdb.c:149 droplang.c:230 +#: dropuser.c:144 clusterdb.c:245 reindexdb.c:323 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help pokazuje ten ekran pomocy i kończy\n" + +#: createlang.c:230 createuser.c:320 dropdb.c:150 droplang.c:231 +#: dropuser.c:145 clusterdb.c:246 reindexdb.c:324 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version pokazuje informacje o wersji i kończy\n" + +#: createlang.c:232 createuser.c:322 dropdb.c:152 droplang.c:233 +#: dropuser.c:147 clusterdb.c:248 vacuumdb.c:344 reindexdb.c:326 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory\n" +msgstr "" +" -h, --host=NAZWAHOSTA host serwera bazy danych lub katalog gniazda\n" + +#: createlang.c:233 createuser.c:323 dropdb.c:153 droplang.c:234 +#: dropuser.c:148 clusterdb.c:249 vacuumdb.c:345 reindexdb.c:327 +#, c-format +msgid " -p, --port=PORT database server port\n" +msgstr " -p, --port=PORT numer portu na serwera bazy dnaych\n" + +#: createlang.c:234 dropdb.c:154 droplang.c:235 clusterdb.c:250 vacuumdb.c:346 +#: reindexdb.c:328 +#, c-format +msgid " -U, --username=USERNAME user name to connect as\n" +msgstr " -U, --username=NAZWAUZYTK nazwa użytkownika do połączenia\n" + +#: createlang.c:235 createuser.c:325 dropdb.c:155 droplang.c:236 +#: dropuser.c:150 clusterdb.c:251 vacuumdb.c:347 reindexdb.c:329 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password nie pytaj nigdy o hasło\n" + +#: createlang.c:236 createuser.c:326 dropdb.c:156 droplang.c:237 +#: dropuser.c:151 clusterdb.c:252 vacuumdb.c:348 reindexdb.c:330 +#, c-format +msgid " -W, --password force password prompt\n" +msgstr " -W, --password wymuś pytanie o hasło\n" + +#: createuser.c:169 +msgid "Enter name of role to add: " +msgstr "Wpisz nazwę roli do dodania: " + +#: createuser.c:176 +msgid "Enter password for new role: " +msgstr "Podaj hasło dla nowej roli: " + +#: createuser.c:177 +msgid "Enter it again: " +msgstr "Powtórz podane hasło: " + +#: createuser.c:180 +#, c-format +msgid "Passwords didn't match.\n" +msgstr "Podane hasła różnią się.\n" + +#: createuser.c:189 +msgid "Shall the new role be a superuser?" +msgstr "Czy nowa rola ma być superużytkownikiem?" + +#: createuser.c:204 +msgid "Shall the new role be allowed to create databases?" +msgstr "Czy nowa rola ma mieć możliwość tworzenia nowych baz danych?" + +#: createuser.c:212 +msgid "Shall the new role be allowed to create more new roles?" +msgstr "Czy nowa rola ma mieć możliwość tworzenia nowych ról?" + +#: createuser.c:245 +#, c-format +msgid "Password encryption failed.\n" +msgstr "Nie udało się zaszyfrować hasła.\n" + +#: createuser.c:284 +#, c-format +msgid "%s: creation of new role failed: %s" +msgstr "%s: utworzenie nowej roli nie powiodło się: %s" + +#: createuser.c:299 +#, c-format +msgid "" +"%s creates a new PostgreSQL role.\n" +"\n" +msgstr "" +"%s tworzy nową rolę PostgreSQL.\n" +"\n" + +#: createuser.c:301 dropuser.c:140 +#, c-format +msgid " %s [OPTION]... [ROLENAME]\n" +msgstr " %s [OPCJA]... [NAZWAROLI]\n" + +#: createuser.c:303 +#, c-format +msgid "" +" -c, --connection-limit=N connection limit for role (default: no limit)\n" +msgstr "" +" -c, --connection-limit=N limit połączeń dla roli (domyślnie: bez limitu)\n" + +#: createuser.c:304 +#, c-format +msgid " -d, --createdb role can create new databases\n" +msgstr " -d, --createdb rola może tworzyć nowe bazy danych\n" + +#: createuser.c:305 +#, c-format +msgid " -D, --no-createdb role cannot create databases\n" +msgstr " -D, --no-createdb rola nie może tworzyć baz danych\n" + +#: createuser.c:307 +#, c-format +msgid " -E, --encrypted encrypt stored password\n" +msgstr " -E, --encrypted szyfruje zapisane hasło\n" + +#: createuser.c:308 +#, c-format +msgid "" +" -i, --inherit role inherits privileges of roles it is a\n" +" member of (default)\n" +msgstr "" +" -i, --inherit rola dziedziczy uprawnienia od ról, których\n" +" jest członkiem (domyślnie)\n" + +#: createuser.c:310 +#, c-format +msgid " -I, --no-inherit role does not inherit privileges\n" +msgstr " -I, --no-inherit rola nie dziedziczy uprawnień\n" + +#: createuser.c:311 +#, c-format +msgid " -l, --login role can login (default)\n" +msgstr " -l, --login rola może się logować (domyślnie)\n" + +#: createuser.c:312 +#, c-format +msgid " -L, --no-login role cannot login\n" +msgstr " -L, --no-login rola nie może się logować\n" + +#: createuser.c:313 +#, c-format +msgid " -N, --unencrypted do not encrypt stored password\n" +msgstr " -N, --unencrypted nie szyfruje zapisanego hasła\n" + +#: createuser.c:314 +#, c-format +msgid " -P, --pwprompt assign a password to new role\n" +msgstr " -P, --pwprompt przypisuje hasło do nowej roli\n" + +#: createuser.c:315 +#, c-format +msgid " -r, --createrole role can create new roles\n" +msgstr " -r, --createrole rola może tworzyć nowe role\n" + +#: createuser.c:316 +#, c-format +msgid " -R, --no-createrole role cannot create roles\n" +msgstr " -R, --no-createrole rola nie może tworzyć ról\n" + +#: createuser.c:317 +#, c-format +msgid " -s, --superuser role will be superuser\n" +msgstr " -s, --superuser rola będzie superużytkownikiem\n" + +#: createuser.c:318 +#, c-format +msgid " -S, --no-superuser role will not be superuser\n" +msgstr " -S, --no-superuser rola nie będzie superużytkownikiem\n" + +#: createuser.c:324 +#, c-format +msgid "" +" -U, --username=USERNAME user name to connect as (not the one to create)\n" +msgstr "" +" -U, --username=USERNAME nazwa użytkownika do połączenia z bazą (nie tego " +"do utworzenia)\n" + +#: createuser.c:327 +#, c-format +msgid "" +"\n" +"If one of -d, -D, -r, -R, -s, -S, and ROLENAME is not specified, you will\n" +"be prompted interactively.\n" +msgstr "" +"\n" +"Jeśli jedna z -d, -D, -r, -R, -s, -S, i NAZWAROLI nie została wskazana,\n" +"będziesz pytany interaktywnie.\n" + +#: dropdb.c:91 +#, c-format +msgid "%s: missing required argument database name\n" +msgstr "%s: brak wymaganego argumentu nazwy bazy danych\n" + +#: dropdb.c:106 +#, c-format +msgid "Database \"%s\" will be permanently removed.\n" +msgstr "Baza danych \"%s\" zostanie usunięta na stałe.\n" + +#: dropdb.c:107 dropuser.c:108 +msgid "Are you sure?" +msgstr "Czy na pewno?" + +#: dropdb.c:128 +#, c-format +msgid "%s: database removal failed: %s" +msgstr "%s: usunięcie bazy danych nie powiodło się: %s" + +#: dropdb.c:143 +#, c-format +msgid "" +"%s removes a PostgreSQL database.\n" +"\n" +msgstr "" +"%s usuwa bazę danych PostgreSQL.\n" +"\n" + +#: dropdb.c:145 +#, c-format +msgid " %s [OPTION]... DBNAME\n" +msgstr " %s [OPCJA]... NAZWADB\n" + +#: dropdb.c:148 dropuser.c:143 +#, c-format +msgid " -i, --interactive prompt before deleting anything\n" +msgstr " -i, --interactive monit przed usunięciem czegokolwiek\n" + +#: droplang.c:190 +#, c-format +msgid "%s: language \"%s\" is not installed in database \"%s\"\n" +msgstr "%s: język \"%s\" nie jest zainstalowany w bazie danych \"%s\"\n" + +#: droplang.c:208 +#, c-format +msgid "%s: language removal failed: %s" +msgstr "%s: usunięcie języka nie powiodło się: %s" + +#: droplang.c:223 +#, c-format +msgid "" +"%s removes a procedural language from a database.\n" +"\n" +msgstr "" +"%s usuwa język proceduralny z bazy danych.\n" +"\n" + +#: droplang.c:227 +#, c-format +msgid "" +" -d, --dbname=DBNAME database from which to remove the language\n" +msgstr " -d, --dbname=NAZWADB baza danych z której usunie się język\n" + +#: dropuser.c:103 +msgid "Enter name of role to drop: " +msgstr "Wpisz nazwę roli do skasowania: " + +#: dropuser.c:107 +#, c-format +msgid "Role \"%s\" will be permanently removed.\n" +msgstr "Rola \"%s\" zostanie usunięta na stałe.\n" + +#: dropuser.c:123 +#, c-format +msgid "%s: removal of role \"%s\" failed: %s" +msgstr "%s: usunięcie roli \"%s\" nie powiodło się: %s" + +#: dropuser.c:138 +#, c-format +msgid "" +"%s removes a PostgreSQL role.\n" +"\n" +msgstr "" +"%s usuwa rolę PostgreSQL.\n" +"\n" + +#: dropuser.c:149 +#, c-format +msgid "" +" -U, --username=USERNAME user name to connect as (not the one to drop)\n" +msgstr "" +" -U, --username=USERNAME nazwa użytkownika do połączenia z bazą (nie tego " +"do skasowania)\n" + +#: clusterdb.c:129 +#, c-format +msgid "%s: cannot cluster all databases and a specific one at the same time\n" +msgstr "" +"%s: nie można klastrować wszystkich baz danych i jednej wskazanej w tym " +"samym czasie\n" + +#: clusterdb.c:135 +#, c-format +msgid "%s: cannot cluster a specific table in all databases\n" +msgstr "" +"%s: nie można klastrować wskazanej tabeli we wszystkich bazach danych\n" + +#: clusterdb.c:187 +#, c-format +msgid "%s: clustering of table \"%s\" in database \"%s\" failed: %s" +msgstr "%s: klastrowanie tabeli \"%s\" w bazie danych \"%s\" nie udało się: %s" + +#: clusterdb.c:190 +#, c-format +msgid "%s: clustering of database \"%s\" failed: %s" +msgstr "%s: klastrowanie bazy danych \"%s\" nie udało się: %s" + +#: clusterdb.c:219 +#, c-format +msgid "%s: clustering database \"%s\"\n" +msgstr "%s: klastrowanie bazy danych \"%s\"\n" + +#: clusterdb.c:235 +#, c-format +msgid "" +"%s clusters all previously clustered tables in a database.\n" +"\n" +msgstr "" +"%s klastruje wszystkie poprzednio sklastrowane tabele w bazie danych.\n" +"\n" + +#: clusterdb.c:237 vacuumdb.c:329 reindexdb.c:314 +#, c-format +msgid " %s [OPTION]... [DBNAME]\n" +msgstr " %s [OPCJA]... [NAZWADB]\n" + +#: clusterdb.c:239 +#, c-format +msgid " -a, --all cluster all databases\n" +msgstr " -a, --all sklastruj wszystkie bazy danych\n" + +#: clusterdb.c:240 +#, c-format +msgid " -d, --dbname=DBNAME database to cluster\n" +msgstr " -d, --dbname=NAZWADB baza danych do klastrowania\n" + +#: clusterdb.c:242 reindexdb.c:320 +#, c-format +msgid " -q, --quiet don't write any messages\n" +msgstr " -q, --quiet nie wypisuj komunikatów\n" + +#: clusterdb.c:243 +#, c-format +msgid " -t, --table=TABLE cluster specific table only\n" +msgstr " -t, --table=TABELA klastruj tylko wskazaną tabelę\n" + +#: clusterdb.c:244 +#, c-format +msgid " -v, --verbose write a lot of output\n" +msgstr " -v, --verbose wypisuje dużo danych wyjściowych\n" + +#: clusterdb.c:253 +#, c-format +msgid "" +"\n" +"Read the description of the SQL command CLUSTER for details.\n" +msgstr "" +"\n" +"Przeczytaj opis polecenia SQL CLUSTER by uzyskać informacje szczegółowe.\n" + +#: vacuumdb.c:150 +#, c-format +msgid "%s: cannot use the \"full\" option when performing only analyze\n" +msgstr "" +"%s: nie można używać opcji \"full\" podczas wykonywania wyłącznie analizy\n" + +#: vacuumdb.c:156 +#, c-format +msgid "%s: cannot use the \"freeze\" option when performing only analyze\n" +msgstr "" +"%s: nie można używać opcji \"freeze\" podczas wykonywania wyłącznie analizy\n" + +#: vacuumdb.c:169 +#, c-format +msgid "%s: cannot vacuum all databases and a specific one at the same time\n" +msgstr "" +"%s: nie można odkurzyć wszystkich baz danych i jednej wskazanej w tym samym " +"czasie\n" + +#: vacuumdb.c:175 +#, c-format +msgid "%s: cannot vacuum a specific table in all databases\n" +msgstr "%s: nie można odkurzyć wskazanej tabeli we wszystkich bazach danych\n" + +#: vacuumdb.c:278 +#, c-format +msgid "%s: vacuuming of table \"%s\" in database \"%s\" failed: %s" +msgstr "%s: odkurzenie tabeli \"%s\" w bazie danych \"%s\" nie udało się: %s" + +#: vacuumdb.c:281 +#, c-format +msgid "%s: vacuuming of database \"%s\" failed: %s" +msgstr "%s: odkurzenie bazy danych \"%s\" nie udało się: %s" + +#: vacuumdb.c:311 +#, c-format +msgid "%s: vacuuming database \"%s\"\n" +msgstr "%s: odkurzenie bazy danych \"%s\"\n" + +#: vacuumdb.c:327 +#, c-format +msgid "" +"%s cleans and analyzes a PostgreSQL database.\n" +"\n" +msgstr "" +"%s czyści bazę danych PostgreSQL.\n" +"\n" + +#: vacuumdb.c:331 +#, c-format +msgid " -a, --all vacuum all databases\n" +msgstr " -a, --all odkurza wszystkie bazy danych\n" + +#: vacuumdb.c:332 +#, c-format +msgid " -d, --dbname=DBNAME database to vacuum\n" +msgstr " -d, --dbname=NAZWADB baza danych do odkurzenia\n" + +#: vacuumdb.c:333 +#, c-format +msgid "" +" -e, --echo show the commands being sent to the " +"server\n" +msgstr "" +" -e, --echo pokazuje polecenia przesyłane do serwera\n" + +#: vacuumdb.c:334 +#, c-format +msgid " -f, --full do full vacuuming\n" +msgstr " -f, --full wykonuje pełne odkurzenie\n" + +#: vacuumdb.c:335 +#, c-format +msgid " -F, --freeze freeze row transaction information\n" +msgstr "" +" -F, --freeze zamraża informację transakcji wiersza\n" + +#: vacuumdb.c:336 +#, c-format +msgid " -q, --quiet don't write any messages\n" +msgstr " -q, --quiet nie wypisuje komunikatów\n" + +#: vacuumdb.c:337 +#, c-format +msgid " -t, --table='TABLE[(COLUMNS)]' vacuum specific table only\n" +msgstr " -t, --table='TABLE[(COLUMNS)]' odkurza tylko określoną tabelę\n" + +#: vacuumdb.c:338 +#, c-format +msgid " -v, --verbose write a lot of output\n" +msgstr " -v, --verbose wypisuje dużo danych wyjściowych\n" + +#: vacuumdb.c:339 +#, c-format +msgid " -z, --analyze update optimizer statistics\n" +msgstr "" +" -z, --analyze aktualizuje statystyki optymalizatora\n" + +#: vacuumdb.c:340 +#, c-format +msgid " -Z, --analyze-only only update optimizer statistics\n" +msgstr "" +" -Z, --analyze-only aktualizuje tylko statystyki " +"optymalizatora\n" + +#: vacuumdb.c:341 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help pokazuje ten ekran pomocy i kończy\n" + +#: vacuumdb.c:342 +#, c-format +msgid "" +" --version output version information, then exit\n" +msgstr "" +" --version pokazuje informacje o wersji i kończy\n" + +#: vacuumdb.c:349 +#, c-format +msgid "" +"\n" +"Read the description of the SQL command VACUUM for details.\n" +msgstr "" +"\n" +"Przeczytaj opis polecenia SQL VACUUM by uzyskać informacje szczegółowe.\n" + +#: reindexdb.c:138 +#, c-format +msgid "%s: cannot reindex all databases and a specific one at the same time\n" +msgstr "" +"%s: nie można przeindeksować wszystkich baz danych i jednej wskazanej w tym " +"samym czasie\n" + +#: reindexdb.c:143 +#, c-format +msgid "%s: cannot reindex all databases and system catalogs at the same time\n" +msgstr "" +"%s: nie można przeindeksować wszystkich baz danych i katalogów systemowych w " +"tym samym czasie\n" + +#: reindexdb.c:148 +#, c-format +msgid "%s: cannot reindex a specific table in all databases\n" +msgstr "" +"%s: nie można przeindeksować wskazanej tabeli we wszystkich bazach danych\n" + +#: reindexdb.c:153 +#, c-format +msgid "%s: cannot reindex a specific index in all databases\n" +msgstr "" +"%s: nie można przeindeksować wskazanego indeksu we wszystkich bazach danych\n" + +#: reindexdb.c:164 +#, c-format +msgid "" +"%s: cannot reindex a specific table and system catalogs at the same time\n" +msgstr "" +"%s: nie można przeindeksować wskazanej tabeli i katalogów systemowych w tym " +"samym czasie\n" + +#: reindexdb.c:169 +#, c-format +msgid "" +"%s: cannot reindex a specific index and system catalogs at the same time\n" +msgstr "" +"%s: nie można przeindeksować wskazanego indeksu i katalogów systemowych w " +"tym samym czasie\n" + +#: reindexdb.c:238 +#, c-format +msgid "%s: reindexing of table \"%s\" in database \"%s\" failed: %s" +msgstr "" +"%s: przeindeksowanie tabeli \"%s\" w bazie danych \"%s\" nie udało się: %s" + +#: reindexdb.c:241 +#, c-format +msgid "%s: reindexing of index \"%s\" in database \"%s\" failed: %s" +msgstr "" +"%s: przeindeksowanie indeksu \"%s\" w bazie danych \"%s\" nie udało się: %s" + +#: reindexdb.c:244 +#, c-format +msgid "%s: reindexing of database \"%s\" failed: %s" +msgstr "%s: przeindeksowanie bazy danych \"%s\" nie udało się: %s" + +#: reindexdb.c:273 +#, c-format +msgid "%s: reindexing database \"%s\"\n" +msgstr "%s: przeindeksowanie bazy danych \"%s\"\n" + +#: reindexdb.c:300 +#, c-format +msgid "%s: reindexing of system catalogs failed: %s" +msgstr "%s: przeindeksowanie katalogów systemowych nie udało się: %s" + +#: reindexdb.c:312 +#, c-format +msgid "" +"%s reindexes a PostgreSQL database.\n" +"\n" +msgstr "" +"%s przeindeksowuje bazę danych PostgreSQL.\n" +"\n" + +#: reindexdb.c:316 +#, c-format +msgid " -a, --all reindex all databases\n" +msgstr " -a, --all przeindeksuj wszystkie bazy danych\n" + +#: reindexdb.c:317 +#, c-format +msgid " -d, --dbname=DBNAME database to reindex\n" +msgstr " -d, --dbname=NAZWADB baza danych do przeindeksowania\n" + +#: reindexdb.c:319 +#, c-format +msgid " -i, --index=INDEX recreate specific index only\n" +msgstr " -i, --index=INDEKS odtwórz tylko wskazany indeks\n" + +#: reindexdb.c:321 +#, c-format +msgid " -s, --system reindex system catalogs\n" +msgstr " -s, --system przeindeksuj katalogi systemowe\n" + +#: reindexdb.c:322 +#, c-format +msgid " -t, --table=TABLE reindex specific table only\n" +msgstr " -t, --table=TABELA przeindeksuj tylko wskazaną tabelę\n" + +#: reindexdb.c:331 +#, c-format +msgid "" +"\n" +"Read the description of the SQL command REINDEX for details.\n" +msgstr "" +"\n" +"Przeczytaj opis polecenia SQL REINDEX by uzyskać informacje szczegółowe.\n" + +#: common.c:45 +#, c-format +msgid "%s: could not obtain information about current user: %s\n" +msgstr "%s: nie można uzyskać informacji o bieżącym użytkowniku: %s\n" + +#: common.c:56 +#, c-format +msgid "%s: could not get current user name: %s\n" +msgstr "%s: nie można pobrać nazwy bieżącego użytkownika: %s\n" + +#: common.c:103 common.c:155 +msgid "Password: " +msgstr "Hasło: " + +#: common.c:117 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: brak pamięci\n" + +#: common.c:144 +#, c-format +msgid "%s: could not connect to database %s\n" +msgstr "%s: nie można połączyć się do bazy danych %s\n" + +#: common.c:166 +#, c-format +msgid "%s: could not connect to database %s: %s" +msgstr "%s: nie można połączyć się do bazy danych %s: %s" + +#: common.c:190 common.c:218 +#, c-format +msgid "%s: query failed: %s" +msgstr "%s: zapytanie nie powiodło się: %s" + +#: common.c:192 common.c:220 +#, c-format +msgid "%s: query was: %s\n" +msgstr "%s: zapytanie brzmiało: %s\n" + +#: common.c:266 +#, c-format +msgid "pg_strdup: cannot duplicate null pointer (internal error)\n" +msgstr "pg_strdup: nie można powielić pustego wskazania (bład wewnętrzny)\n" + +#: common.c:272 +#, c-format +msgid "out of memory\n" +msgstr "brak pamięci\n" + +#. translator: abbreviation for "yes" +#: common.c:283 +msgid "y" +msgstr "t" + +#. translator: abbreviation for "no" +#: common.c:285 +msgid "n" +msgstr "n" + +#. translator: This is a question followed by the translated options for +#. "yes" and "no". +#: common.c:295 +#, c-format +msgid "%s (%s/%s) " +msgstr "%s (%s/%s) " + +#: common.c:316 +#, c-format +msgid "Please answer \"%s\" or \"%s\".\n" +msgstr "Wymagana jest odpowiedź \"%s\" lub \"%s\".\n" + +#: common.c:394 common.c:427 +#, c-format +msgid "Cancel request sent\n" +msgstr "Wysłano żądanie anulowania\n" + +#: common.c:396 common.c:429 +#, c-format +msgid "Could not send cancel request: %s" +msgstr "Nie udało się wysłać żądania anulowania: %s" diff --git a/src/bin/scripts/po/pt_BR.po b/src/bin/scripts/po/pt_BR.po index 0010c41e7f..c9bca26699 100644 --- a/src/bin/scripts/po/pt_BR.po +++ b/src/bin/scripts/po/pt_BR.po @@ -1,16 +1,17 @@ # Brazilian Portuguese message translation file for pgscripts # Copyright (C) 2009 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Euler Taveira de Oliveira , 2003-2010. +# Euler Taveira de Oliveira , 2003-2011. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" "POT-Creation-Date: 2010-05-08 21:44-0300\n" "PO-Revision-Date: 2005-10-06 00:21-0300\n" "Last-Translator: Euler Taveira de Oliveira \n" "Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -532,7 +533,9 @@ msgstr "%s: remoção da linguagem falhou: %s" msgid "" "%s removes a procedural language from a database.\n" "\n" -msgstr "%s remove uma linguagem procedural do banco de dados.\n" +msgstr "" +"%s remove uma linguagem procedural do banco de dados.\n" +"\n" #: droplang.c:377 #, c-format diff --git a/src/bin/scripts/po/ro.po b/src/bin/scripts/po/ro.po index 276572f17c..bb79ef13cc 100644 --- a/src/bin/scripts/po/ro.po +++ b/src/bin/scripts/po/ro.po @@ -9,6 +9,7 @@ msgstr "" "PO-Revision-Date: 2010-09-15 14:02-0000\n" "Last-Translator: Max \n" "Language-Team: Română \n" +"Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/scripts/po/ru.po b/src/bin/scripts/po/ru.po new file mode 100644 index 0000000000..4bc08bdea1 --- /dev/null +++ b/src/bin/scripts/po/ru.po @@ -0,0 +1,966 @@ +# ru.po +# PGSCRIPTS Translated Messages into the Russian Language (UTF-8) +# +# Copyright (c) 2003-2004 Serguei A. Mokhov, mokhov@cs.concordia.ca +# Copyright (c) 2012 Alexander Lakhin, exclusion@gmail.com +# Distributed under the same licensing terms as PostgreSQL itself. +# +# pgtranslation Id: pgscripts.po,v 1.2 2009/10/14 21:08:40 petere Exp $ +# +# To the new translator: +# PG Russian Translation Discussion Group: +# PG Glossary: +# +# ChangeLog: +# +# - April 3, 2012: Bug fixes. Alexander Lakhin . +# - February 20, 2012: Complete translation for 9.1. Alexander Lakhin . +# - December, 2004: Corrections and improvements by Oleg Bartunov . +# - May 28 - November 14, 2004: Updates for 8.0; . +# - July 24 - August 25, 2003: Complete Initial Translation for 7.4.*; Serguei A. Mokhov, . +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 9.1\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2012-07-10 22:28+0000\n" +"PO-Revision-Date: 2012-04-03 08:53+0400\n" +"Last-Translator: Alexander Lakhin \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Russian\n" +"X-Poedit-Country: RUSSIAN FEDERATION\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 1.4\n" + +#: createdb.c:114 createdb.c:133 createlang.c:89 createlang.c:110 +#: createlang.c:163 createuser.c:149 createuser.c:164 dropdb.c:83 dropdb.c:92 +#: dropdb.c:100 droplang.c:88 droplang.c:109 droplang.c:163 dropuser.c:83 +#: dropuser.c:98 clusterdb.c:104 clusterdb.c:119 vacuumdb.c:127 vacuumdb.c:142 +#: reindexdb.c:114 reindexdb.c:128 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Для дополнительной информации попробуйте \"%s --help\".\n" + +#: createdb.c:131 createlang.c:108 createuser.c:162 dropdb.c:98 droplang.c:107 +#: dropuser.c:96 clusterdb.c:117 vacuumdb.c:140 reindexdb.c:127 +#, c-format +msgid "%s: too many command-line arguments (first is \"%s\")\n" +msgstr "%s: слишком много аргументов командной строки (первый: \"%s\")\n" + +#: createdb.c:141 +#, c-format +msgid "%s: only one of --locale and --lc-ctype can be specified\n" +msgstr "%s: можно указать только --locale или --lc-ctype\n" + +#: createdb.c:147 +#, c-format +msgid "%s: only one of --locale and --lc-collate can be specified\n" +msgstr "%s: можно указать только --locale и --lc-collate\n" + +#: createdb.c:159 +#, c-format +msgid "%s: \"%s\" is not a valid encoding name\n" +msgstr "%s: \"%s\" не является верным названием кодировки\n" + +#: createdb.c:209 +#, c-format +msgid "%s: database creation failed: %s" +msgstr "%s: создать базу данных не удалось: %s" + +#: createdb.c:229 +#, c-format +msgid "%s: comment creation failed (database was created): %s" +msgstr "%s: создать комментарий не удалось (база данных была создана): %s" + +#: createdb.c:247 +#, c-format +msgid "" +"%s creates a PostgreSQL database.\n" +"\n" +msgstr "" +"%s создаёт базу данных PostgreSQL.\n" +"\n" + +#: createdb.c:248 createlang.c:223 createuser.c:300 dropdb.c:144 +#: droplang.c:224 dropuser.c:139 clusterdb.c:236 vacuumdb.c:328 +#: reindexdb.c:313 +#, c-format +msgid "Usage:\n" +msgstr "Использование:\n" + +#: createdb.c:249 +#, c-format +msgid " %s [OPTION]... [DBNAME] [DESCRIPTION]\n" +msgstr " %s [ПАРАМЕТР]... [ИМЯ_БД] [ОПИСАНИЕ]\n" + +#: createdb.c:250 createlang.c:225 createuser.c:302 dropdb.c:146 +#: droplang.c:226 dropuser.c:141 clusterdb.c:238 vacuumdb.c:330 +#: reindexdb.c:315 +#, c-format +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"Параметры:\n" + +#: createdb.c:251 +#, c-format +msgid " -D, --tablespace=TABLESPACE default tablespace for the database\n" +msgstr "" +" -D, --tablespace=ТАБЛ_ПРОСТР табличное пространство по умолчанию для базы " +"данных\n" + +#: createdb.c:252 +#, c-format +msgid "" +" -e, --echo show the commands being sent to the server\n" +msgstr "" +" -e, --echo отображать команды, отправляемые серверу\n" + +#: createdb.c:253 +#, c-format +msgid " -E, --encoding=ENCODING encoding for the database\n" +msgstr " -E, --encoding=КОДИРОВКА кодировка базы данных\n" + +#: createdb.c:254 +#, c-format +msgid " -l, --locale=LOCALE locale settings for the database\n" +msgstr " -l, --locale=ЛОКАЛЬ локаль для базы данных\n" + +#: createdb.c:255 +#, c-format +msgid " --lc-collate=LOCALE LC_COLLATE setting for the database\n" +msgstr " --lc-collate=ЛОКАЛЬ параметр LC_COLLATE для базы данных\n" + +#: createdb.c:256 +#, c-format +msgid " --lc-ctype=LOCALE LC_CTYPE setting for the database\n" +msgstr " --lc-ctype=ЛОКАЛЬ параметр LC_CTYPE для базы данных\n" + +#: createdb.c:257 +#, c-format +msgid " -O, --owner=OWNER database user to own the new database\n" +msgstr "" +" -O, --owner=ВЛАДЕЛЕЦ пользователь-владелец новой базы данных\n" + +#: createdb.c:258 +#, c-format +msgid " -T, --template=TEMPLATE template database to copy\n" +msgstr " -T, --template=ШАБЛОН исходная база данных для копирования\n" + +#: createdb.c:259 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help показать эту справку и выйти\n" + +#: createdb.c:260 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version показать версию и выйти\n" + +#: createdb.c:261 createlang.c:231 createuser.c:321 dropdb.c:151 +#: droplang.c:232 dropuser.c:146 clusterdb.c:247 vacuumdb.c:343 +#: reindexdb.c:325 +#, c-format +msgid "" +"\n" +"Connection options:\n" +msgstr "" +"\n" +"Параметры подключения:\n" + +#: createdb.c:262 +#, c-format +msgid "" +" -h, --host=HOSTNAME database server host or socket directory\n" +msgstr "" +" -h, --host=ИМЯ имя сервера баз данных или каталог сокетов\n" + +#: createdb.c:263 +#, c-format +msgid " -p, --port=PORT database server port\n" +msgstr " -p, --port=ПОРТ порт сервера баз данных\n" + +#: createdb.c:264 +#, c-format +msgid " -U, --username=USERNAME user name to connect as\n" +msgstr "" +" -U, --username=ИМЯ имя пользователя для подключения к серверу\n" + +#: createdb.c:265 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password не запрашивать пароль\n" + +#: createdb.c:266 +#, c-format +msgid " -W, --password force password prompt\n" +msgstr " -W, --password запросить пароль\n" + +#: createdb.c:267 +#, c-format +msgid "" +"\n" +"By default, a database with the same name as the current user is created.\n" +msgstr "" +"\n" +"По умолчанию именем базы данных считается имя текущего пользователя.\n" + +#: createdb.c:268 createlang.c:237 createuser.c:329 dropdb.c:157 +#: droplang.c:238 dropuser.c:152 clusterdb.c:254 vacuumdb.c:350 +#: reindexdb.c:332 +#, c-format +msgid "" +"\n" +"Report bugs to .\n" +msgstr "" +"\n" +"Об ошибках сообщайте по адресу .\n" + +#: createlang.c:140 droplang.c:139 +msgid "Name" +msgstr "Имя" + +#: createlang.c:141 droplang.c:140 +msgid "yes" +msgstr "да" + +#: createlang.c:141 droplang.c:140 +msgid "no" +msgstr "нет" + +#: createlang.c:142 droplang.c:141 +msgid "Trusted?" +msgstr "Доверенный?" + +#: createlang.c:151 droplang.c:150 +msgid "Procedural Languages" +msgstr "Процедурные языки" + +#: createlang.c:162 droplang.c:161 +#, c-format +msgid "%s: missing required argument language name\n" +msgstr "%s: отсутствует необходимый аргумент: название языка\n" + +#: createlang.c:184 +#, c-format +msgid "%s: language \"%s\" is already installed in database \"%s\"\n" +msgstr "%s: поддержка языка \"%s\" уже имеется в базе \"%s\"\n" + +#: createlang.c:206 +#, c-format +msgid "%s: language installation failed: %s" +msgstr "%s: установить поддержку языка не удалось: %s" + +#: createlang.c:222 +#, c-format +msgid "" +"%s installs a procedural language into a PostgreSQL database.\n" +"\n" +msgstr "" +"%s устанавливает поддержку процедурного языка в базу PostgreSQL.\n" +"\n" + +#: createlang.c:224 droplang.c:225 +#, c-format +msgid " %s [OPTION]... LANGNAME [DBNAME]\n" +msgstr " %s [ПАРАМЕТР]... ЯЗЫК [ИМЯ_БД]\n" + +#: createlang.c:226 +#, c-format +msgid " -d, --dbname=DBNAME database to install language in\n" +msgstr " -d, --dbname=ИМЯ_БД база данных, куда будет установлен язык\n" + +#: createlang.c:227 createuser.c:306 dropdb.c:147 droplang.c:228 +#: dropuser.c:142 clusterdb.c:241 reindexdb.c:318 +#, c-format +msgid "" +" -e, --echo show the commands being sent to the server\n" +msgstr " -e, --echo отображать команды, отправляемые серверу\n" + +#: createlang.c:228 droplang.c:229 +#, c-format +msgid "" +" -l, --list show a list of currently installed languages\n" +msgstr " -l, --list показать список установленных языков\n" + +#: createlang.c:229 createuser.c:319 dropdb.c:149 droplang.c:230 +#: dropuser.c:144 clusterdb.c:245 reindexdb.c:323 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help показать эту справку и выйти\n" + +#: createlang.c:230 createuser.c:320 dropdb.c:150 droplang.c:231 +#: dropuser.c:145 clusterdb.c:246 reindexdb.c:324 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version показать версию и выйти\n" + +#: createlang.c:232 createuser.c:322 dropdb.c:152 droplang.c:233 +#: dropuser.c:147 clusterdb.c:248 vacuumdb.c:344 reindexdb.c:326 +#, c-format +msgid " -h, --host=HOSTNAME database server host or socket directory\n" +msgstr "" +" -h, --host=ИМЯ имя сервера баз данных или каталог сокетов\n" + +#: createlang.c:233 createuser.c:323 dropdb.c:153 droplang.c:234 +#: dropuser.c:148 clusterdb.c:249 vacuumdb.c:345 reindexdb.c:327 +#, c-format +msgid " -p, --port=PORT database server port\n" +msgstr " -p, --port=ПОРТ порт сервера баз данных\n" + +#: createlang.c:234 dropdb.c:154 droplang.c:235 clusterdb.c:250 vacuumdb.c:346 +#: reindexdb.c:328 +#, c-format +msgid " -U, --username=USERNAME user name to connect as\n" +msgstr "" +" -U, --username=ИМЯ имя пользователя для подключения к серверу\n" + +#: createlang.c:235 createuser.c:325 dropdb.c:155 droplang.c:236 +#: dropuser.c:150 clusterdb.c:251 vacuumdb.c:347 reindexdb.c:329 +#, c-format +msgid " -w, --no-password never prompt for password\n" +msgstr " -w, --no-password не запрашивать пароль\n" + +#: createlang.c:236 createuser.c:326 dropdb.c:156 droplang.c:237 +#: dropuser.c:151 clusterdb.c:252 vacuumdb.c:348 reindexdb.c:330 +#, c-format +msgid " -W, --password force password prompt\n" +msgstr " -W, --password запросить пароль\n" + +#: createuser.c:169 +msgid "Enter name of role to add: " +msgstr "Введите имя новой роли: " + +#: createuser.c:176 +msgid "Enter password for new role: " +msgstr "Введите пароль для новой роли: " + +#: createuser.c:177 +msgid "Enter it again: " +msgstr "Повторите его: " + +#: createuser.c:180 +#, c-format +msgid "Passwords didn't match.\n" +msgstr "Пароли не совпадают.\n" + +#: createuser.c:189 +msgid "Shall the new role be a superuser?" +msgstr "Должна ли новая роль иметь полномочия суперпользователя?" + +#: createuser.c:204 +msgid "Shall the new role be allowed to create databases?" +msgstr "Новая роль должна иметь право создавать базы данных?" + +#: createuser.c:212 +msgid "Shall the new role be allowed to create more new roles?" +msgstr "Новая роль должна иметь право создавать другие роли?" + +#: createuser.c:245 +#, c-format +msgid "Password encryption failed.\n" +msgstr "Ошибка при шифровании пароля.\n" + +#: createuser.c:284 +#, c-format +msgid "%s: creation of new role failed: %s" +msgstr "%s: создать роль не удалось: %s" + +#: createuser.c:299 +#, c-format +msgid "" +"%s creates a new PostgreSQL role.\n" +"\n" +msgstr "" +"%s создаёт роль пользователя PostgreSQL.\n" +"\n" + +#: createuser.c:301 dropuser.c:140 +#, c-format +msgid " %s [OPTION]... [ROLENAME]\n" +msgstr " %s [ПАРАМЕТР]... [ИМЯ_РОЛИ]\n" + +#: createuser.c:303 +#, c-format +msgid "" +" -c, --connection-limit=N connection limit for role (default: no limit)\n" +msgstr "" +" -c, --connection-limit=N предел подключений для роли\n" +" (по умолчанию предела нет)\n" + +#: createuser.c:304 +#, c-format +msgid " -d, --createdb role can create new databases\n" +msgstr " -d, --createdb роль с правом создания баз данных\n" + +#: createuser.c:305 +#, c-format +msgid " -D, --no-createdb role cannot create databases\n" +msgstr " -D, --no-createdb роль без права создания баз данных\n" + +#: createuser.c:307 +#, c-format +msgid " -E, --encrypted encrypt stored password\n" +msgstr " -E, --encrypted зашифровать сохранённый пароль\n" + +#: createuser.c:308 +#, c-format +msgid "" +" -i, --inherit role inherits privileges of roles it is a\n" +" member of (default)\n" +msgstr "" +" -i, --inherit роль наследует права ролей (групп), в которые " +"она\n" +" включена (по умолчанию)\n" + +#: createuser.c:310 +#, c-format +msgid " -I, --no-inherit role does not inherit privileges\n" +msgstr " -I, --no-inherit роль не наследует права\n" + +#: createuser.c:311 +#, c-format +msgid " -l, --login role can login (default)\n" +msgstr "" +" -l, --login роль с правом подключения к серверу (по " +"умолчанию)\n" + +#: createuser.c:312 +#, c-format +msgid " -L, --no-login role cannot login\n" +msgstr " -L, --no-login роль без права подключения\n" + +#: createuser.c:313 +#, c-format +msgid " -N, --unencrypted do not encrypt stored password\n" +msgstr " -N, --unencrypted не шифровать сохранённый пароль\n" + +#: createuser.c:314 +#, c-format +msgid " -P, --pwprompt assign a password to new role\n" +msgstr " -P, --pwprompt назначить пароль новой роли\n" + +#: createuser.c:315 +#, c-format +msgid " -r, --createrole role can create new roles\n" +msgstr " -r, --createrole роль с правом создания других ролей\n" + +#: createuser.c:316 +#, c-format +msgid " -R, --no-createrole role cannot create roles\n" +msgstr " -R, --no-createrole роль без права создания ролей\n" + +#: createuser.c:317 +#, c-format +msgid " -s, --superuser role will be superuser\n" +msgstr " -s, --superuser роль с полномочиями суперпользователя\n" + +#: createuser.c:318 +#, c-format +msgid " -S, --no-superuser role will not be superuser\n" +msgstr " -S, --no-superuser роль без полномочий суперпользователя\n" + +#: createuser.c:324 +#, c-format +msgid "" +" -U, --username=USERNAME user name to connect as (not the one to create)\n" +msgstr "" +" -U, --username=ИМЯ имя пользователя для выполнения операции\n" +" (но не имя новой роли)\n" + +#: createuser.c:327 +#, c-format +msgid "" +"\n" +"If one of -d, -D, -r, -R, -s, -S, and ROLENAME is not specified, you will\n" +"be prompted interactively.\n" +msgstr "" +"\n" +"Если параметры -d, -D, -r, -R, -s, -S или ИМЯ_РОЛИ не определены, вам будет\n" +"предложено ввести их интерактивно.\n" + +#: dropdb.c:91 +#, c-format +msgid "%s: missing required argument database name\n" +msgstr "%s: отсутствует необходимый аргумент: имя базы данных\n" + +#: dropdb.c:106 +#, c-format +msgid "Database \"%s\" will be permanently removed.\n" +msgstr "База данных \"%s\" будет удалена безвозвратно.\n" + +#: dropdb.c:107 dropuser.c:108 +msgid "Are you sure?" +msgstr "Вы уверены? (y/n)" + +#: dropdb.c:128 +#, c-format +msgid "%s: database removal failed: %s" +msgstr "%s: ошибка при удалении базы данных: %s" + +#: dropdb.c:143 +#, c-format +msgid "" +"%s removes a PostgreSQL database.\n" +"\n" +msgstr "" +"%s удаляет базу данных PostgreSQL.\n" +"\n" + +#: dropdb.c:145 +#, c-format +msgid " %s [OPTION]... DBNAME\n" +msgstr " %s [ПАРАМЕТР]... БД\n" + +#: dropdb.c:148 dropuser.c:143 +#, c-format +msgid " -i, --interactive prompt before deleting anything\n" +msgstr " -i, --interactive подтвердить операцию удаления\n" + +#: droplang.c:190 +#, c-format +msgid "%s: language \"%s\" is not installed in database \"%s\"\n" +msgstr "%s: поддержка языка \"%s\" не установлена в базе данных\"%s\"\n" + +#: droplang.c:208 +#, c-format +msgid "%s: language removal failed: %s" +msgstr "%s: ошибка при удалении поддержки языка: %s" + +#: droplang.c:223 +#, c-format +msgid "" +"%s removes a procedural language from a database.\n" +"\n" +msgstr "" +"%s удаляет процедурный язык из базы данных.\n" +"\n" + +#: droplang.c:227 +#, c-format +msgid "" +" -d, --dbname=DBNAME database from which to remove the language\n" +msgstr "" +" -d, --dbname=ИМЯ_БД база данных, из которой будет удалён язык\n" + +#: dropuser.c:103 +msgid "Enter name of role to drop: " +msgstr "Введите имя удаляемой роли: " + +#: dropuser.c:107 +#, c-format +msgid "Role \"%s\" will be permanently removed.\n" +msgstr "Роль \"%s\" будет удалена безвозвратно.\n" + +#: dropuser.c:123 +#, c-format +msgid "%s: removal of role \"%s\" failed: %s" +msgstr "%s: ошибка при удалении роли \"%s\": %s" + +#: dropuser.c:138 +#, c-format +msgid "" +"%s removes a PostgreSQL role.\n" +"\n" +msgstr "" +"%s удаляет роль PostgreSQL.\n" +"\n" + +#: dropuser.c:149 +#, c-format +msgid "" +" -U, --username=USERNAME user name to connect as (not the one to drop)\n" +msgstr "" +" -U, --username=ИМЯ имя пользователя для выполнения операции\n" +" (но не имя удаляемой роли)\n" + +#: clusterdb.c:129 +#, c-format +msgid "%s: cannot cluster all databases and a specific one at the same time\n" +msgstr "%s: нельзя кластеризовать все базы и одну конкретную одновременно\n" + +#: clusterdb.c:135 +#, c-format +msgid "%s: cannot cluster a specific table in all databases\n" +msgstr "%s: нельзя кластеризовать одну указанную таблицу во всех базах\n" + +#: clusterdb.c:187 +#, c-format +msgid "%s: clustering of table \"%s\" in database \"%s\" failed: %s" +msgstr "%s: кластеризовать таблицу \"%s\" в базе \"%s\" не удалось: %s" + +#: clusterdb.c:190 +#, c-format +msgid "%s: clustering of database \"%s\" failed: %s" +msgstr "%s: кластеризовать базу \"%s\" не удалось: %s" + +#: clusterdb.c:219 +#, c-format +msgid "%s: clustering database \"%s\"\n" +msgstr "%s: кластеризация базы \"%s\"\n" + +#: clusterdb.c:235 +#, c-format +msgid "" +"%s clusters all previously clustered tables in a database.\n" +"\n" +msgstr "" +"%s упорядочивает данные всех кластеризованных таблиц в базе данных.\n" +"\n" + +#: clusterdb.c:237 vacuumdb.c:329 reindexdb.c:314 +#, c-format +msgid " %s [OPTION]... [DBNAME]\n" +msgstr " %s [ПАРАМЕТР]... [ИМЯ_БД]\n" + +#: clusterdb.c:239 +#, c-format +msgid " -a, --all cluster all databases\n" +msgstr " -a, --all кластеризовать все базы\n" + +#: clusterdb.c:240 +#, c-format +msgid " -d, --dbname=DBNAME database to cluster\n" +msgstr " -d, --dbname=ИМЯ_БД имя базы данных для кластеризации\n" + +#: clusterdb.c:242 reindexdb.c:320 +#, c-format +msgid " -q, --quiet don't write any messages\n" +msgstr " -q, --quiet не выводить никакие сообщения\n" + +#: clusterdb.c:243 +#, c-format +msgid " -t, --table=TABLE cluster specific table only\n" +msgstr " -t, --table=ТАБЛИЦА кластеризовать только указанную таблицу\n" + +#: clusterdb.c:244 +#, c-format +msgid " -v, --verbose write a lot of output\n" +msgstr " -v, --verbose выводить исчерпывающие сообщения\n" + +#: clusterdb.c:253 +#, c-format +msgid "" +"\n" +"Read the description of the SQL command CLUSTER for details.\n" +msgstr "" +"\n" +"Подробнее о кластеризации вы можете узнать в описании SQL-команды CLUSTER.\n" + +#: vacuumdb.c:150 +#, c-format +msgid "%s: cannot use the \"full\" option when performing only analyze\n" +msgstr "" +"%s: при выполнении только анализа нельзя использовать параметр \"full\"\n" + +#: vacuumdb.c:156 +#, c-format +msgid "%s: cannot use the \"freeze\" option when performing only analyze\n" +msgstr "" +"%s: при выполнении только анализа нельзя использовать только \"freeze\"\n" + +#: vacuumdb.c:169 +#, c-format +msgid "%s: cannot vacuum all databases and a specific one at the same time\n" +msgstr "%s: нельзя очистить все базы данных и одну конкретную одновременно\n" + +#: vacuumdb.c:175 +#, c-format +msgid "%s: cannot vacuum a specific table in all databases\n" +msgstr "%s: нельзя очистить одну указанную таблицу во всех базах\n" + +#: vacuumdb.c:278 +#, c-format +msgid "%s: vacuuming of table \"%s\" in database \"%s\" failed: %s" +msgstr "%s: очистить таблицу \"%s\" в базе \"%s\" не удалось: %s" + +#: vacuumdb.c:281 +#, c-format +msgid "%s: vacuuming of database \"%s\" failed: %s" +msgstr "%s: очистить базу данных \"%s\" не удалось: %s" + +#: vacuumdb.c:311 +#, c-format +msgid "%s: vacuuming database \"%s\"\n" +msgstr "%s: очистка базы данных \"%s\"\n" + +#: vacuumdb.c:327 +#, c-format +msgid "" +"%s cleans and analyzes a PostgreSQL database.\n" +"\n" +msgstr "" +"%s очищает и анализирует базу данных PostgreSQL.\n" +"\n" + +#: vacuumdb.c:331 +#, c-format +msgid " -a, --all vacuum all databases\n" +msgstr " -a, --all очистить все базы данных\n" + +#: vacuumdb.c:332 +#, c-format +msgid " -d, --dbname=DBNAME database to vacuum\n" +msgstr " -d, --dbname=ИМЯ_БД очистить указанную базу данных\n" + +#: vacuumdb.c:333 +#, c-format +msgid "" +" -e, --echo show the commands being sent to the " +"server\n" +msgstr "" +" -e, --echo отображать команды, отправляемые серверу\n" + +#: vacuumdb.c:334 +#, c-format +msgid " -f, --full do full vacuuming\n" +msgstr " -f, --full произвести полную очистку\n" + +#: vacuumdb.c:335 +#, c-format +msgid " -F, --freeze freeze row transaction information\n" +msgstr "" +" -F, --freeze заморозить информацию о транзакциях в " +"строках\n" + +#: vacuumdb.c:336 +#, c-format +msgid " -q, --quiet don't write any messages\n" +msgstr " -q, --quiet не выводить сообщения\n" + +#: vacuumdb.c:337 +#, c-format +msgid " -t, --table='TABLE[(COLUMNS)]' vacuum specific table only\n" +msgstr " -t, --table='ТАБЛ[(КОЛОНКИ)]' очистить только указанную таблицу\n" + +#: vacuumdb.c:338 +#, c-format +msgid " -v, --verbose write a lot of output\n" +msgstr " -v, --verbose выводить исчерпывающие сообщения\n" + +#: vacuumdb.c:339 +#, c-format +msgid " -z, --analyze update optimizer statistics\n" +msgstr " -z, --analyze обновить статистику оптимизатора\n" + +#: vacuumdb.c:340 +#, c-format +msgid " -Z, --analyze-only only update optimizer statistics\n" +msgstr "" +" -Z, --analyze-only только обновить статистику оптимизатора\n" + +#: vacuumdb.c:341 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help показать эту справку и выйти\n" + +#: vacuumdb.c:342 +#, c-format +msgid "" +" --version output version information, then exit\n" +msgstr " --version показать версию и выйти\n" + +#: vacuumdb.c:349 +#, c-format +msgid "" +"\n" +"Read the description of the SQL command VACUUM for details.\n" +msgstr "" +"\n" +"Подробнее об очистке вы можете узнать в описании SQL-команды VACUUM.\n" + +#: reindexdb.c:138 +#, c-format +msgid "%s: cannot reindex all databases and a specific one at the same time\n" +msgstr "" +"%s: нельзя переиндексировать все базы данных и одну конкретную одновременно\n" + +#: reindexdb.c:143 +#, c-format +msgid "%s: cannot reindex all databases and system catalogs at the same time\n" +msgstr "" +"%s: нельзя переиндексировать все базы данных и системные каталоги " +"одновременно\n" + +#: reindexdb.c:148 +#, c-format +msgid "%s: cannot reindex a specific table in all databases\n" +msgstr "%s: нельзя переиндексировать указанную таблицу во всех базах\n" + +#: reindexdb.c:153 +#, c-format +msgid "%s: cannot reindex a specific index in all databases\n" +msgstr "%s: нельзя переиндексировать один указанный индекс во всех базах\n" + +#: reindexdb.c:164 +#, c-format +msgid "" +"%s: cannot reindex a specific table and system catalogs at the same time\n" +msgstr "" +"%s: нельзя переиндексировать указанную таблицу и системные каталоги " +"одновременно\n" + +#: reindexdb.c:169 +#, c-format +msgid "" +"%s: cannot reindex a specific index and system catalogs at the same time\n" +msgstr "" +"%s: нельзя переиндексировать указанный индекс и системные каталоги " +"одновременно\n" + +#: reindexdb.c:238 +#, c-format +msgid "%s: reindexing of table \"%s\" in database \"%s\" failed: %s" +msgstr "%s: переиндексировать таблицу \"%s\" в базе \"%s\" не удалось: %s" + +#: reindexdb.c:241 +#, c-format +msgid "%s: reindexing of index \"%s\" in database \"%s\" failed: %s" +msgstr "%s: переиндексировать индекс \"%s\" в базе \"%s\" не удалось: %s" + +#: reindexdb.c:244 +#, c-format +msgid "%s: reindexing of database \"%s\" failed: %s" +msgstr "%s: переиндексировать базу данных \"%s\" не удалось: %s" + +#: reindexdb.c:273 +#, c-format +msgid "%s: reindexing database \"%s\"\n" +msgstr "%s: переиндексация базы данных \"%s\"\n" + +#: reindexdb.c:300 +#, c-format +msgid "%s: reindexing of system catalogs failed: %s" +msgstr "%s: переиндексировать системные каталоги не удалось: %s" + +#: reindexdb.c:312 +#, c-format +msgid "" +"%s reindexes a PostgreSQL database.\n" +"\n" +msgstr "" +"%s переиндексирует базу данных PostgreSQL.\n" +"\n" + +#: reindexdb.c:316 +#, c-format +msgid " -a, --all reindex all databases\n" +msgstr " -a, --all переиндексировать все базы данных\n" + +#: reindexdb.c:317 +#, c-format +msgid " -d, --dbname=DBNAME database to reindex\n" +msgstr " -d, --dbname=БД имя базы для переиндексации\n" + +#: reindexdb.c:319 +#, c-format +msgid " -i, --index=INDEX recreate specific index only\n" +msgstr " -i, --index=ИНДЕКС пересоздать только указанный индекс\n" + +#: reindexdb.c:321 +#, c-format +msgid " -s, --system reindex system catalogs\n" +msgstr " -s, --system переиндексировать системные каталоги\n" + +#: reindexdb.c:322 +#, c-format +msgid " -t, --table=TABLE reindex specific table only\n" +msgstr "" +" -t, --table=ТАБЛИЦА переиндексировать только указанную таблицу\n" + +#: reindexdb.c:331 +#, c-format +msgid "" +"\n" +"Read the description of the SQL command REINDEX for details.\n" +msgstr "" +"\n" +"Подробнее о переиндексации вы можете узнать в описании SQL-команды REINDEX.\n" + +#: common.c:45 +#, c-format +msgid "%s: could not obtain information about current user: %s\n" +msgstr "%s: не удалось получить информацию о текущем пользователе: %s\n" + +#: common.c:56 +#, c-format +msgid "%s: could not get current user name: %s\n" +msgstr "%s: не удалось узнать имя текущего пользователя: %s\n" + +#: common.c:103 common.c:155 +msgid "Password: " +msgstr "Пароль: " + +#: common.c:117 +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: нехватка памяти\n" + +#: common.c:144 +#, c-format +msgid "%s: could not connect to database %s\n" +msgstr "%s: не удалось подключиться к базе %s\n" + +#: common.c:166 +#, c-format +msgid "%s: could not connect to database %s: %s" +msgstr "%s: не удалось подключиться к базе %s: %s" + +#: common.c:190 common.c:218 +#, c-format +msgid "%s: query failed: %s" +msgstr "%s: ошибка при выполнении запроса: %s" + +#: common.c:192 common.c:220 +#, c-format +msgid "%s: query was: %s\n" +msgstr "%s: запрос: %s\n" + +#: common.c:266 +#, c-format +msgid "pg_strdup: cannot duplicate null pointer (internal error)\n" +msgstr "" +"pg_strdup: попытка сделать копию нулевого указателя (внутренняя ошибка)\n" + +#: common.c:272 +#, c-format +msgid "out of memory\n" +msgstr "нехватка памяти\n" + +#. translator: abbreviation for "yes" +#: common.c:283 +msgid "y" +msgstr "y" + +#. translator: abbreviation for "no" +#: common.c:285 +msgid "n" +msgstr "n" + +#. translator: This is a question followed by the translated options for +#. "yes" and "no". +#: common.c:295 +#, c-format +msgid "%s (%s/%s) " +msgstr "%s (%s - да/%s - нет) " + +#: common.c:316 +#, c-format +msgid "Please answer \"%s\" or \"%s\".\n" +msgstr "Пожалуйста, введите \"%s\" или \"%s\".\n" + +#: common.c:394 common.c:427 +#, c-format +msgid "Cancel request sent\n" +msgstr "Сигнал отмены отправлен\n" + +#: common.c:396 common.c:429 +#, c-format +msgid "Could not send cancel request: %s" +msgstr "Отправить сигнал отмены не удалось: %s" diff --git a/src/bin/scripts/po/sv.po b/src/bin/scripts/po/sv.po index e76f4ed239..31c0ee8b64 100644 --- a/src/bin/scripts/po/sv.po +++ b/src/bin/scripts/po/sv.po @@ -9,6 +9,7 @@ msgstr "" "PO-Revision-Date: 2009-06-13 22:40+0300\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: Swedish \n" +"Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/scripts/po/ta.po b/src/bin/scripts/po/ta.po index f073ffb4f1..025b39b0ec 100644 --- a/src/bin/scripts/po/ta.po +++ b/src/bin/scripts/po/ta.po @@ -11,6 +11,7 @@ msgstr "" "PO-Revision-Date: 2007-11-20 11:52+0530\n" "Last-Translator: ஸ்ரீராமதாஸ் \n" "Language-Team: தமிழ் \n" +"Language: ta\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/scripts/po/tr.po b/src/bin/scripts/po/tr.po index 7a0e02b245..ff08f59ef1 100644 --- a/src/bin/scripts/po/tr.po +++ b/src/bin/scripts/po/tr.po @@ -10,6 +10,7 @@ msgstr "" "PO-Revision-Date: 2010-09-01 10:14+0200\n" "Last-Translator: Devrim GÜNDÜZ \n" "Language-Team: Turkish \n" +"Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/bin/scripts/po/zh_CN.po b/src/bin/scripts/po/zh_CN.po index 5e0b373f2c..f2cd8b42d1 100644 --- a/src/bin/scripts/po/zh_CN.po +++ b/src/bin/scripts/po/zh_CN.po @@ -6,24 +6,25 @@ msgid "" msgstr "" "Project-Id-Version: pgscripts (PostgreSQL 9.0)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-10-01 14:40+0000\n" +"POT-Creation-Date: 2013-01-29 13:57+0000\n" "PO-Revision-Date: 2010-10-01 12:52+0800\n" "Last-Translator: Weibin \n" "Language-Team: Chinese (Simplified)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: createdb.c:114 createdb.c:133 createlang.c:89 createlang.c:110 #: createlang.c:163 createuser.c:149 createuser.c:164 dropdb.c:83 dropdb.c:92 -#: dropdb.c:100 droplang.c:100 droplang.c:121 droplang.c:175 dropuser.c:83 +#: dropdb.c:100 droplang.c:88 droplang.c:109 droplang.c:163 dropuser.c:83 #: dropuser.c:98 clusterdb.c:104 clusterdb.c:119 vacuumdb.c:127 vacuumdb.c:142 #: reindexdb.c:114 reindexdb.c:128 #, c-format msgid "Try \"%s --help\" for more information.\n" msgstr "请用 \"%s --help\" 获取更多的信息.\n" -#: createdb.c:131 createlang.c:108 createuser.c:162 dropdb.c:98 droplang.c:119 +#: createdb.c:131 createlang.c:108 createuser.c:162 dropdb.c:98 droplang.c:107 #: dropuser.c:96 clusterdb.c:117 vacuumdb.c:140 reindexdb.c:127 #, c-format msgid "%s: too many command-line arguments (first is \"%s\")\n" @@ -44,17 +45,17 @@ msgstr "%s: 只能指定--locale和--lc-collate这两个选项之一\n" msgid "%s: \"%s\" is not a valid encoding name\n" msgstr "%s: \"%s\" 不是一个有效的编码名称\n" -#: createdb.c:204 +#: createdb.c:209 #, c-format msgid "%s: database creation failed: %s" msgstr "%s: 创建数据库失败: %s" -#: createdb.c:227 +#: createdb.c:229 #, c-format msgid "%s: comment creation failed (database was created): %s" msgstr "%s: 创建注释失败 (数据库已创建): %s" -#: createdb.c:244 +#: createdb.c:247 #, c-format msgid "" "%s creates a PostgreSQL database.\n" @@ -63,20 +64,20 @@ msgstr "" "%s 创建一个 PostgreSQL 数据库.\n" "\n" -#: createdb.c:245 createlang.c:215 createuser.c:300 dropdb.c:140 -#: droplang.c:374 dropuser.c:139 clusterdb.c:236 vacuumdb.c:328 +#: createdb.c:248 createlang.c:223 createuser.c:300 dropdb.c:144 +#: droplang.c:224 dropuser.c:139 clusterdb.c:236 vacuumdb.c:328 #: reindexdb.c:313 #, c-format msgid "Usage:\n" msgstr "使用方法:\n" -#: createdb.c:246 +#: createdb.c:249 #, c-format msgid " %s [OPTION]... [DBNAME] [DESCRIPTION]\n" msgstr " %s [选项]... [数据库名称] [描述]\n" -#: createdb.c:247 createlang.c:217 createuser.c:302 dropdb.c:142 -#: droplang.c:376 dropuser.c:141 clusterdb.c:238 vacuumdb.c:330 +#: createdb.c:250 createlang.c:225 createuser.c:302 dropdb.c:146 +#: droplang.c:226 dropuser.c:141 clusterdb.c:238 vacuumdb.c:330 #: reindexdb.c:315 #, c-format msgid "" @@ -86,59 +87,59 @@ msgstr "" "\n" "选项:\n" -#: createdb.c:248 +#: createdb.c:251 #, c-format msgid " -D, --tablespace=TABLESPACE default tablespace for the database\n" msgstr " -D, --tablespace=TABLESPACE 数据库默认表空间\n" -#: createdb.c:249 +#: createdb.c:252 #, c-format msgid "" " -e, --echo show the commands being sent to the server\n" msgstr " -e, --echo 显示发送到服务端的命令\n" -#: createdb.c:250 +#: createdb.c:253 #, c-format msgid " -E, --encoding=ENCODING encoding for the database\n" msgstr " -E, --encoding=ENCODING 数据库编码\n" -#: createdb.c:251 +#: createdb.c:254 #, c-format msgid " -l, --locale=LOCALE locale settings for the database\n" msgstr " -O, --owner=OWNER 新数据库的所属用户\n" -#: createdb.c:252 +#: createdb.c:255 #, c-format msgid " --lc-collate=LOCALE LC_COLLATE setting for the database\n" msgstr " --lc-collate=LOCALE 数据库的LC_COLLATE设置\n" -#: createdb.c:253 +#: createdb.c:256 #, c-format msgid " --lc-ctype=LOCALE LC_CTYPE setting for the database\n" msgstr " --lc-ctype=LOCALE 数据库的LC_CTYPE设置\n" -#: createdb.c:254 +#: createdb.c:257 #, c-format msgid " -O, --owner=OWNER database user to own the new database\n" msgstr " -O, --owner=OWNER 新数据库的所属用户\n" -#: createdb.c:255 +#: createdb.c:258 #, c-format msgid " -T, --template=TEMPLATE template database to copy\n" msgstr " -T, --template=TEMPLATE 要拷贝的数据库模板\n" -#: createdb.c:256 +#: createdb.c:259 #, c-format msgid " --help show this help, then exit\n" msgstr " --help 显示此帮助信息, 然后退出\n" -#: createdb.c:257 +#: createdb.c:260 #, c-format msgid " --version output version information, then exit\n" msgstr " --versoin 输出版本信息, 然后退出\n" -#: createdb.c:258 createlang.c:223 createuser.c:321 dropdb.c:147 -#: droplang.c:382 dropuser.c:146 clusterdb.c:247 vacuumdb.c:343 +#: createdb.c:261 createlang.c:231 createuser.c:321 dropdb.c:151 +#: droplang.c:232 dropuser.c:146 clusterdb.c:247 vacuumdb.c:343 #: reindexdb.c:325 #, c-format msgid "" @@ -148,34 +149,34 @@ msgstr "" "\n" "联接选项:\n" -#: createdb.c:259 +#: createdb.c:262 #, c-format msgid "" " -h, --host=HOSTNAME database server host or socket directory\n" msgstr "" " -h, --host=HOSTNAME 数据库服务器所在机器的主机名或套接字目录\n" -#: createdb.c:260 +#: createdb.c:263 #, c-format msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=PORT 数据库服务器端口号\n" -#: createdb.c:261 +#: createdb.c:264 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=USERNAME 联接的用户名\n" -#: createdb.c:262 +#: createdb.c:265 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, --no-password 永远不提示输入口令\n" -#: createdb.c:263 +#: createdb.c:266 #, c-format msgid " -W, --password force password prompt\n" msgstr " -W, --password 强制提示输入口令\n" -#: createdb.c:264 +#: createdb.c:267 #, c-format msgid "" "\n" @@ -184,8 +185,8 @@ msgstr "" "\n" "默认情况下, 以当前用户的用户名创建数据库.\n" -#: createdb.c:265 createlang.c:229 createuser.c:329 dropdb.c:153 -#: droplang.c:388 dropuser.c:152 clusterdb.c:254 vacuumdb.c:350 +#: createdb.c:268 createlang.c:237 createuser.c:329 dropdb.c:157 +#: droplang.c:238 dropuser.c:152 clusterdb.c:254 vacuumdb.c:350 #: reindexdb.c:332 #, c-format msgid "" @@ -195,27 +196,27 @@ msgstr "" "\n" "臭虫报告至 .\n" -#: createlang.c:140 droplang.c:151 +#: createlang.c:140 droplang.c:139 msgid "Name" msgstr "名字" -#: createlang.c:141 droplang.c:152 +#: createlang.c:141 droplang.c:140 msgid "yes" msgstr "yes" -#: createlang.c:141 droplang.c:152 +#: createlang.c:141 droplang.c:140 msgid "no" msgstr "no" -#: createlang.c:142 droplang.c:153 +#: createlang.c:142 droplang.c:141 msgid "Trusted?" msgstr "是否信任?" -#: createlang.c:151 droplang.c:162 +#: createlang.c:151 droplang.c:150 msgid "Procedural Languages" msgstr "过程语言" -#: createlang.c:162 droplang.c:173 +#: createlang.c:162 droplang.c:161 #, c-format msgid "%s: missing required argument language name\n" msgstr "%s: 缺少要求的语言名称参数\n" @@ -225,12 +226,12 @@ msgstr "%s: 缺少要求的语言名称参数\n" msgid "%s: language \"%s\" is already installed in database \"%s\"\n" msgstr "%1$s: 数据库 \"%3$s\" 中已经安装了语言 \"%2$s\"\n" -#: createlang.c:198 +#: createlang.c:206 #, c-format msgid "%s: language installation failed: %s" msgstr "%s: 语言安装失败: %s" -#: createlang.c:214 +#: createlang.c:222 #, c-format msgid "" "%s installs a procedural language into a PostgreSQL database.\n" @@ -239,66 +240,66 @@ msgstr "" "%s 安装一个过程语言进 PostgreSQL 数据库.\n" "\n" -#: createlang.c:216 droplang.c:375 +#: createlang.c:224 droplang.c:225 #, c-format msgid " %s [OPTION]... LANGNAME [DBNAME]\n" msgstr " %s [选项]... 语言名称 [数据库名]\n" -#: createlang.c:218 +#: createlang.c:226 #, c-format msgid " -d, --dbname=DBNAME database to install language in\n" msgstr " -d, --dbname=DBNAME 要安装语言的数据库\n" -#: createlang.c:219 createuser.c:306 dropdb.c:143 droplang.c:378 +#: createlang.c:227 createuser.c:306 dropdb.c:147 droplang.c:228 #: dropuser.c:142 clusterdb.c:241 reindexdb.c:318 #, c-format msgid "" " -e, --echo show the commands being sent to the server\n" msgstr " -e, --echo 显示发送到服务端的命令\n" -#: createlang.c:220 droplang.c:379 +#: createlang.c:228 droplang.c:229 #, c-format msgid "" " -l, --list show a list of currently installed languages\n" msgstr " -l, --list 显示当前已经安装了的语言列表\n" -#: createlang.c:221 createuser.c:319 dropdb.c:145 droplang.c:380 +#: createlang.c:229 createuser.c:319 dropdb.c:149 droplang.c:230 #: dropuser.c:144 clusterdb.c:245 reindexdb.c:323 #, c-format msgid " --help show this help, then exit\n" msgstr " --help 显示此帮助信息, 然后退出\n" -#: createlang.c:222 createuser.c:320 dropdb.c:146 droplang.c:381 +#: createlang.c:230 createuser.c:320 dropdb.c:150 droplang.c:231 #: dropuser.c:145 clusterdb.c:246 reindexdb.c:324 #, c-format msgid " --version output version information, then exit\n" msgstr " --version 输出版本信息, 然后退出\n" -#: createlang.c:224 createuser.c:322 dropdb.c:148 droplang.c:383 +#: createlang.c:232 createuser.c:322 dropdb.c:152 droplang.c:233 #: dropuser.c:147 clusterdb.c:248 vacuumdb.c:344 reindexdb.c:326 #, c-format msgid " -h, --host=HOSTNAME database server host or socket directory\n" msgstr " -h, --host=HOSTNAM 数据库服务器所在机器的主机名或套接字目录\n" -#: createlang.c:225 createuser.c:323 dropdb.c:149 droplang.c:384 +#: createlang.c:233 createuser.c:323 dropdb.c:153 droplang.c:234 #: dropuser.c:148 clusterdb.c:249 vacuumdb.c:345 reindexdb.c:327 #, c-format msgid " -p, --port=PORT database server port\n" msgstr " -p, --port=PORT 数据库服务器端口号\n" -#: createlang.c:226 dropdb.c:150 droplang.c:385 clusterdb.c:250 vacuumdb.c:346 +#: createlang.c:234 dropdb.c:154 droplang.c:235 clusterdb.c:250 vacuumdb.c:346 #: reindexdb.c:328 #, c-format msgid " -U, --username=USERNAME user name to connect as\n" msgstr " -U, --username=USERNAME 联接的用户名\n" -#: createlang.c:227 createuser.c:325 dropdb.c:151 droplang.c:386 +#: createlang.c:235 createuser.c:325 dropdb.c:155 droplang.c:236 #: dropuser.c:150 clusterdb.c:251 vacuumdb.c:347 reindexdb.c:329 #, c-format msgid " -w, --no-password never prompt for password\n" msgstr " -w, -no-password 永远不提示输入口令\n" -#: createlang.c:228 createuser.c:326 dropdb.c:152 droplang.c:387 +#: createlang.c:236 createuser.c:326 dropdb.c:156 droplang.c:237 #: dropuser.c:151 clusterdb.c:252 vacuumdb.c:348 reindexdb.c:330 #, c-format msgid " -W, --password force password prompt\n" @@ -463,12 +464,12 @@ msgstr "数据库 \"%s\" 将被永久的删除.\n" msgid "Are you sure?" msgstr "您确定吗? (y/n) " -#: dropdb.c:124 +#: dropdb.c:128 #, c-format msgid "%s: database removal failed: %s" msgstr "%s: 数据库删除失败: %s" -#: dropdb.c:139 +#: dropdb.c:143 #, c-format msgid "" "%s removes a PostgreSQL database.\n" @@ -477,33 +478,27 @@ msgstr "" "%s 删除一个 PostgreSQL 数据库.\n" "\n" -#: dropdb.c:141 +#: dropdb.c:145 #, c-format msgid " %s [OPTION]... DBNAME\n" msgstr " %s [选项]... 数据库名\n" -#: dropdb.c:144 dropuser.c:143 +#: dropdb.c:148 dropuser.c:143 #, c-format msgid " -i, --interactive prompt before deleting anything\n" msgstr " -i, --interactive 删除任何东西之前给予提示\n" -#: droplang.c:203 +#: droplang.c:190 #, c-format msgid "%s: language \"%s\" is not installed in database \"%s\"\n" msgstr "%1$s: 数据库 \"%3$s\" 中, 没有安装语言 \"%2$s\"\n" -#: droplang.c:224 -#, c-format -msgid "" -"%s: still %s functions declared in language \"%s\"; language not removed\n" -msgstr "%s: 函数 %s 是用语言 \"%s\" 声明的; 语言未被删除\n" - -#: droplang.c:358 +#: droplang.c:208 #, c-format msgid "%s: language removal failed: %s" msgstr "%s: 语言删除失败: %s" -#: droplang.c:373 +#: droplang.c:223 #, c-format msgid "" "%s removes a procedural language from a database.\n" @@ -512,7 +507,7 @@ msgstr "" "%s 从数据库中删除一个过程语言.\n" "\n" -#: droplang.c:377 +#: droplang.c:227 #, c-format msgid "" " -d, --dbname=DBNAME database from which to remove the language\n" @@ -896,27 +891,33 @@ msgstr "y" msgid "n" msgstr "n" -#: common.c:296 +#. translator: This is a question followed by the translated options for +#. "yes" and "no". +#: common.c:295 #, c-format msgid "%s (%s/%s) " msgstr "%s (%s/%s) " -#: common.c:317 +#: common.c:316 #, c-format msgid "Please answer \"%s\" or \"%s\".\n" msgstr "请回答\"%s\"或\"%s\".\n" -#: common.c:395 common.c:428 +#: common.c:394 common.c:427 #, c-format msgid "Cancel request sent\n" msgstr "取消发送的请求\n" # fe-connect.c:1322 -#: common.c:397 common.c:430 +#: common.c:396 common.c:429 #, c-format msgid "Could not send cancel request: %s" msgstr "无法发送取消请求: %s" +#~ msgid "" +#~ "%s: still %s functions declared in language \"%s\"; language not removed\n" +#~ msgstr "%s: 函数 %s 是用语言 \"%s\" 声明的; 语言未被删除\n" + #~ msgid " -q, --quiet don't write any messages\n" #~ msgstr " -q, --quiet 不写任何信息\n" diff --git a/src/bin/scripts/po/zh_TW.po b/src/bin/scripts/po/zh_TW.po index feb111bcb8..c08568ef7c 100644 --- a/src/bin/scripts/po/zh_TW.po +++ b/src/bin/scripts/po/zh_TW.po @@ -12,7 +12,7 @@ msgstr "" "Last-Translator: Zhenbang Wei \n" "Language-Team: EnterpriseDB translation team \n" -"Language: \n" +"Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/gtm/Makefile b/src/gtm/Makefile index c7779db887..dfef33b4d2 100644 --- a/src/gtm/Makefile +++ b/src/gtm/Makefile @@ -1,11 +1,12 @@ -#------------------------------------------------------------------------- +#---------------------------------------------------------------------------- # -# Makefile for src/gtm -# GTM and GTM proxy +# Postgres-XC GTM makefile # -# Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation -#------------------------------------------------------------------------- - +# Copyright (c) 2010-2013, Postgres-XC Development Group +# +# src/gtm/Makefile +# +#----------------------------------------------------------------------------- PGFILEDESC = "gtm - Global Transaction Manager for Postgres-XC" subdir = src/gtm top_builddir = ../.. @@ -33,9 +34,9 @@ distclean: clean maintainer-clean: distclean install: all - $(INSTALL_PROGRAM) $(srcdir)/main/gtm$(X) '$(DESTDIR)$(bindir)/gtm$(X)' - $(INSTALL_PROGRAM) $(srcdir)/gtm_ctl/gtm_ctl$(X) '$(DESTDIR)$(bindir)/gtm_ctl$(X)' - $(INSTALL_PROGRAM) $(srcdir)/proxy/gtm_proxy$(X) '$(DESTDIR)$(bindir)/gtm_proxy$(X)' + $(INSTALL_PROGRAM) main/gtm$(X) '$(DESTDIR)$(bindir)/gtm$(X)' + $(INSTALL_PROGRAM) gtm_ctl/gtm_ctl$(X) '$(DESTDIR)$(bindir)/gtm_ctl$(X)' + $(INSTALL_PROGRAM) proxy/gtm_proxy$(X) '$(DESTDIR)$(bindir)/gtm_proxy$(X)' $(INSTALL_DATA) $(srcdir)/main/gtm.conf.sample '$(DESTDIR)$(datadir)/gtm.conf.sample' $(INSTALL_DATA) $(srcdir)/proxy/gtm_proxy.conf.sample '$(DESTDIR)$(datadir)/gtm_proxy.conf.sample' diff --git a/src/gtm/Makefile.port b/src/gtm/Makefile.port index e616574be7..2d6977ad8c 100644 --- a/src/gtm/Makefile.port +++ b/src/gtm/Makefile.port @@ -1,5 +1,12 @@ -# Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation - +#---------------------------------------------------------------------------- +# +# Postgres-XC port makefile +# +# Copyright (c) 2010-2013, Postgres-XC Development Group +# +# src/pgxc/tools/makesgml/Makefile.port +# +#----------------------------------------------------------------------------- AROPT = crs export_dynamic = -Wl,-E rpath = -Wl,-rpath,'$(rpathdir)' diff --git a/src/gtm/client/Makefile b/src/gtm/client/Makefile index fcf2c5d66e..8f33d941d3 100644 --- a/src/gtm/client/Makefile +++ b/src/gtm/client/Makefile @@ -1,8 +1,15 @@ -# Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation - +#---------------------------------------------------------------------------- +# +# Postgres-XC GTM client makefile +# +# Copyright (c) 2010-2013, Postgres-XC Development Group +# +# src/gtm/client/Makefile +# +#----------------------------------------------------------------------------- top_builddir=../../.. include $(top_builddir)/src/Makefile.global - +subdir=src/gtm/client NAME=gtmclient SO_MAJOR_VERSION= 1 @@ -15,7 +22,7 @@ LIBS=-lpthread all:all-lib -include $(top_builddir)/src/Makefile.shlib +include $(top_srcdir)/src/Makefile.shlib clean: rm -f $(OBJS) diff --git a/src/gtm/client/fe-connect.c b/src/gtm/client/fe-connect.c index af7bf58473..5976b9a010 100644 --- a/src/gtm/client/fe-connect.c +++ b/src/gtm/client/fe-connect.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -139,7 +139,7 @@ PQconnectGTMStart(const char *conninfo) * connectOptions1 * * Internal subroutine to set up connection parameters given an already- - * created GTM_Conn and a conninfo string. + * created GTM_Conn and a conninfo string. * * Returns true if OK, false if trouble (in which case errorMessage is set * and so is conn->status). @@ -665,7 +665,11 @@ GTMPQconnectPoll(GTM_Conn *conn) case CONNECTION_MADE: { - GTM_StartupPacket sp; + GTM_StartupPacket *sp = (GTM_StartupPacket *) + malloc(sizeof(GTM_StartupPacket)); + int packetlen = sizeof(GTM_StartupPacket); + + MemSet(sp, 0, sizeof(GTM_StartupPacket)); /* * Build a startup packet. We tell the GTM server/proxy our @@ -675,9 +679,9 @@ GTMPQconnectPoll(GTM_Conn *conn) * server know about it so that some special headers are * handled correctly by the server. */ - strcpy(sp.sp_node_name, conn->gc_node_name); - sp.sp_remotetype = conn->remote_type; - sp.sp_ispostmaster = conn->is_postmaster; + strncpy(sp->sp_node_name, conn->gc_node_name, SP_NODE_NAME); + sp->sp_remotetype = conn->remote_type; + sp->sp_ispostmaster = conn->is_postmaster; /* * Send the startup packet. @@ -685,7 +689,7 @@ GTMPQconnectPoll(GTM_Conn *conn) * Theoretically, this could block, but it really shouldn't * since we only got here if the socket is write-ready. */ - if (pqPacketSend(conn, 'A', &sp, sizeof (GTM_StartupPacket)) != STATUS_OK) + if (pqPacketSend(conn, 'A', (char *)sp, packetlen) != STATUS_OK) { appendGTMPQExpBuffer(&conn->errorMessage, "could not send startup packet: \n"); @@ -693,6 +697,10 @@ GTMPQconnectPoll(GTM_Conn *conn) } conn->status = CONNECTION_AWAITING_RESPONSE; + + /* Clean up startup packet */ + free(sp); + return PGRES_POLLING_READING; } diff --git a/src/gtm/client/fe-misc.c b/src/gtm/client/fe-misc.c index 60aa32a659..4ae719ad5a 100644 --- a/src/gtm/client/fe-misc.c +++ b/src/gtm/client/fe-misc.c @@ -21,7 +21,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * IDENTIFICATION * $PostgreSQL: pgsql/src/interfaces/libpq/fe-misc.c,v 1.137 2008/12/11 07:34:09 petere Exp $ diff --git a/src/gtm/client/fe-protocol.c b/src/gtm/client/fe-protocol.c index cb303a6e49..b65ee4685d 100644 --- a/src/gtm/client/fe-protocol.c +++ b/src/gtm/client/fe-protocol.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -129,7 +129,7 @@ pqParseInput(GTM_Conn *conn) case 'E': /* error return */ if (gtmpqGetError(conn, result)) return NULL; - result->gr_status = GTM_RESULT_ERROR; + result->gr_status = GTM_RESULT_ERROR; break; default: printfGTMPQExpBuffer(&conn->errorMessage, @@ -517,15 +517,21 @@ gtmpqParseSuccess(GTM_Conn *conn, GTM_Result *result) xsize = result->gr_xip_size; xcnt = result->gr_snapshot.sn_xcnt; xip = result->gr_snapshot.sn_xip; - - if ((xip == NULL) || (xcnt > xsize)) + + if (!xip || xcnt > xsize) { - xip = (GlobalTransactionId *) realloc(xip, sizeof (GlobalTransactionId) * xcnt); + if (!xip) + xip = (GlobalTransactionId *) malloc(sizeof(GlobalTransactionId) * + GTM_MAX_GLOBAL_TRANSACTIONS); + else + xip = (GlobalTransactionId *) realloc(xip, + sizeof(GlobalTransactionId) * xcnt); + result->gr_snapshot.sn_xip = xip; result->gr_xip_size = xcnt; } - - if (gtmpqGetnchar((char *)xip, sizeof (GlobalTransactionId) * xcnt, conn)) + + if (gtmpqGetnchar((char *)xip, sizeof(GlobalTransactionId) * xcnt, conn)) { result->gr_status = GTM_RESULT_ERROR; break; @@ -543,7 +549,6 @@ gtmpqParseSuccess(GTM_Conn *conn, GTM_Result *result) result->gr_status = GTM_RESULT_ERROR; break; - case SEQUENCE_GET_CURRENT_RESULT: case SEQUENCE_GET_NEXT_RESULT: case SEQUENCE_GET_LAST_RESULT: if (gtmpqReadSeqKey(&result->gr_resdata.grd_seq.seqkey, conn)) @@ -563,9 +568,9 @@ gtmpqParseSuccess(GTM_Conn *conn, GTM_Result *result) result->gr_status = GTM_RESULT_ERROR; break; } - + result->gr_resdata.grd_seq_list.seq = - (GTM_SeqInfo **)malloc(sizeof(GTM_SeqInfo *) * + (GTM_SeqInfo **)malloc(sizeof(GTM_SeqInfo) * result->gr_resdata.grd_seq_list.seq_count); for (i = 0 ; i < result->gr_resdata.grd_seq_list.seq_count; i++) @@ -588,7 +593,8 @@ gtmpqParseSuccess(GTM_Conn *conn, GTM_Result *result) break; } - result->gr_resdata.grd_seq_list.seq[i] = gtm_deserialize_sequence(buf, buflen); + gtm_deserialize_sequence(result->gr_resdata.grd_seq_list.seq+i, + buf, buflen); free(buf); } @@ -622,7 +628,7 @@ gtmpqParseSuccess(GTM_Conn *conn, GTM_Result *result) if (result->gr_resdata.grd_txn_get_gid_data.nodelen != 0) { /* Do necessary allocation */ - result->gr_resdata.grd_txn_get_gid_data.nodestring = + result->gr_resdata.grd_txn_get_gid_data.nodestring = (char *)malloc(sizeof(char *) * result->gr_resdata.grd_txn_get_gid_data.nodelen + 1); if (result->gr_resdata.grd_txn_get_gid_data.nodestring == NULL) { @@ -774,7 +780,7 @@ gtmpqReadSeqKey(GTM_SequenceKey seqkey, GTM_Conn *conn) */ if (seqkey->gsk_keylen <= 0 || seqkey->gsk_keylen > GTM_MAX_SEQKEY_LENGTH) return EINVAL; - + if ((seqkey->gsk_key = (char *) malloc(seqkey->gsk_keylen)) == NULL) return ENOMEM; @@ -808,7 +814,6 @@ gtmpqFreeResultData(GTM_Result *result, GTM_PGXCNodeType remote_type) result->gr_resdata.grd_seqkey.gsk_key = NULL; break; - case SEQUENCE_GET_CURRENT_RESULT: case SEQUENCE_GET_NEXT_RESULT: case SEQUENCE_GET_LAST_RESULT: if (result->gr_resdata.grd_seq.seqkey.gsk_key != NULL) diff --git a/src/gtm/client/gtm_client.c b/src/gtm/client/gtm_client.c index 2eab51431f..54e916641a 100644 --- a/src/gtm/client/gtm_client.c +++ b/src/gtm/client/gtm_client.c @@ -4,7 +4,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -42,7 +42,7 @@ extern bool Backup_synchronously; void GTM_FreeResult(GTM_Result *result, GTM_PGXCNodeType remote_type); static GTM_Result *makeEmptyResultIfIsNull(GTM_Result *oldres); -static int commit_prepared_transaction_internal(GTM_Conn *conn, +static int commit_prepared_transaction_internal(GTM_Conn *conn, GlobalTransactionId gxid, GlobalTransactionId prepared_gxid, bool is_backup); static int prepare_transaction_internal(GTM_Conn *conn, GlobalTransactionId gxid, bool is_backup); @@ -152,7 +152,7 @@ begin_replication_initial_sync(GTM_Conn *conn) * * returns 1 on success, 0 on failure. */ -int +int end_replication_initial_sync(GTM_Conn *conn) { GTM_Result *res = NULL; @@ -235,7 +235,7 @@ get_node_list(GTM_Conn *conn, GTM_PGXCNodeInfo *data, size_t maxlen) { memcpy(&data[i], res->gr_resdata.grd_node_list.nodeinfo[i], sizeof(GTM_PGXCNodeInfo)); } - + if (res->gr_status == GTM_RESULT_OK) Assert(res->gr_type == NODE_LIST_RESULT); @@ -284,7 +284,7 @@ get_next_gxid(GTM_Conn *conn) fflush(stderr); next_gxid = res->gr_resdata.grd_next_gxid; - + if (res->gr_status == GTM_RESULT_OK) Assert(res->gr_type == TXN_GET_NEXT_GXID_RESULT); @@ -349,13 +349,14 @@ get_txn_gxid_list(GTM_Conn *conn, GTM_Transactions *txn) * get_sequence_list() * * returns a number of sequences on success, -1 on failure. + * Returned seq_list is pointing to GTM_Result structure, the data should be + * copied before the next call to getResult. */ size_t -get_sequence_list(GTM_Conn *conn, GTM_SeqInfo **seq_list, size_t seq_max) +get_sequence_list(GTM_Conn *conn, GTM_SeqInfo **seq_list) { GTM_Result *res = NULL; time_t finish_time; - int i; /* Start the message. */ if (gtmpqPutMsgStart('C', true, conn) || @@ -381,15 +382,9 @@ get_sequence_list(GTM_Conn *conn, GTM_SeqInfo **seq_list, size_t seq_max) if (res->gr_status == GTM_RESULT_OK) Assert(res->gr_type == SEQUENCE_LIST_RESULT); - for (i = 0; i < res->gr_resdata.grd_seq_list.seq_count; i++) - { - seq_list[i] = res->gr_resdata.grd_seq_list.seq[i]; - - if ( i >= seq_max ) - break; - } + *seq_list = res->gr_resdata.grd_seq_list.seq; - return i; + return res->gr_resdata.grd_seq_list.seq_count; receive_failed: send_failed: @@ -402,7 +397,7 @@ get_sequence_list(GTM_Conn *conn, GTM_SeqInfo **seq_list, size_t seq_max) */ int -bkup_begin_transaction(GTM_Conn *conn, GTM_TransactionHandle txn, GTM_IsolationLevel isolevel, +bkup_begin_transaction(GTM_Conn *conn, GTM_TransactionHandle txn, GTM_IsolationLevel isolevel, bool read_only, GTM_Timestamp timestamp) { /* Start the message. */ @@ -455,7 +450,7 @@ bkup_begin_transaction_gxid(GTM_Conn *conn, GTM_TransactionHandle txn, GlobalTra send_failed: return -1; -} +} GlobalTransactionId begin_transaction(GTM_Conn *conn, GTM_IsolationLevel isolevel, GTM_Timestamp *timestamp) @@ -506,7 +501,7 @@ begin_transaction(GTM_Conn *conn, GTM_IsolationLevel isolevel, GTM_Timestamp *ti int -bkup_begin_transaction_autovacuum(GTM_Conn *conn, GTM_TransactionHandle txn, GlobalTransactionId gxid, +bkup_begin_transaction_autovacuum(GTM_Conn *conn, GTM_TransactionHandle txn, GlobalTransactionId gxid, GTM_IsolationLevel isolevel) { /* Start the message. */ @@ -529,7 +524,7 @@ bkup_begin_transaction_autovacuum(GTM_Conn *conn, GTM_TransactionHandle txn, Glo send_failed: return -1; -} +} /* * Transaction Management API * Begin a transaction for an autovacuum worker process @@ -700,19 +695,19 @@ commit_prepared_transaction_internal(GTM_Conn *conn, GlobalTransactionId gxid, G return -1; } -int +int abort_transaction(GTM_Conn *conn, GlobalTransactionId gxid) { return abort_transaction_internal(conn, gxid, false); } - -int + +int bkup_abort_transaction(GTM_Conn *conn, GlobalTransactionId gxid) { return abort_transaction_internal(conn, gxid, true); } -static int +static int abort_transaction_internal(GTM_Conn *conn, GlobalTransactionId gxid, bool is_backup) { GTM_Result *res = NULL; @@ -1249,47 +1244,6 @@ rename_sequence_internal(GTM_Conn *conn, GTM_SequenceKey key, GTM_SequenceKey ne return -1; } -GTM_Sequence -get_current(GTM_Conn *conn, GTM_SequenceKey key) -{ - GTM_Result *res = NULL; - time_t finish_time; - - /* Start the message. */ - if (gtmpqPutMsgStart('C', true, conn) || - gtmpqPutInt(MSG_SEQUENCE_GET_CURRENT, sizeof (GTM_MessageType), conn) || - gtmpqPutInt(key->gsk_keylen, 4, conn) || - gtmpqPutnchar(key->gsk_key, key->gsk_keylen, conn)) - goto send_failed; - - /* Finish the message. */ - if (gtmpqPutMsgEnd(conn)) - goto send_failed; - - /* Flush to ensure backend gets it. */ - if (gtmpqFlush(conn)) - goto send_failed; - - finish_time = time(NULL) + CLIENT_GTM_TIMEOUT; - if (gtmpqWaitTimed(true, false, conn, finish_time) || - gtmpqReadData(conn) < 0) - goto receive_failed; - - if ((res = GTMPQgetResult(conn)) == NULL) - goto receive_failed; - - if (res->gr_status == GTM_RESULT_OK) - return res->gr_resdata.grd_seq.seqval; - else - return InvalidSequenceValue; - -receive_failed: -send_failed: - conn->result = makeEmptyResultIfIsNull(conn->result); - conn->result->gr_status = GTM_RESULT_COMM_ERROR; - return -1; -} - int set_val(GTM_Conn *conn, GTM_SequenceKey key, GTM_Sequence nextval, bool iscalled) { @@ -1818,8 +1772,8 @@ begin_transaction_multi(GTM_Conn *conn, int txn_count, GTM_IsolationLevel *txn_i int -bkup_begin_transaction_multi(GTM_Conn *conn, int txn_count, - GTM_TransactionHandle *txn, GlobalTransactionId start_gxid, GTM_IsolationLevel *isolevel, +bkup_begin_transaction_multi(GTM_Conn *conn, int txn_count, + GTM_TransactionHandle *txn, GlobalTransactionId start_gxid, GTM_IsolationLevel *isolevel, bool *read_only, GTMProxy_ConnID *txn_connid) { int ii; @@ -1839,9 +1793,9 @@ bkup_begin_transaction_multi(GTM_Conn *conn, int txn_count, gxid = FirstNormalGlobalTransactionId; if (gtmpqPutInt(txn[ii], sizeof(GTM_TransactionHandle), conn) || gtmpqPutInt(gxid, sizeof(GlobalTransactionId), conn) || - gtmpqPutInt(isolevel[ii], sizeof(int), conn) || + gtmpqPutInt(isolevel[ii], sizeof(GTM_IsolationLevel), conn) || gtmpqPutc(read_only[ii], conn) || - gtmpqPutInt(txn_connid[ii], sizeof(int), conn)) + gtmpqPutInt(txn_connid[ii], sizeof(GTMProxy_ConnID), conn)) goto send_failed; } @@ -1857,7 +1811,6 @@ bkup_begin_transaction_multi(GTM_Conn *conn, int txn_count, send_failed: return -1; - } int @@ -2095,7 +2048,7 @@ set_begin_end_backup(GTM_Conn *conn, bool begin) if (gtmpqPutMsgStart('C', true, conn)) goto send_failed; - if(gtmpqPutInt(begin ? MSG_BEGIN_BACKUP : MSG_END_BACKUP, + if(gtmpqPutInt(begin ? MSG_BEGIN_BACKUP : MSG_END_BACKUP, sizeof(GTM_MessageType), conn)) goto send_failed; @@ -2131,8 +2084,6 @@ gtm_sync_standby(GTM_Conn *conn) GTM_Result *res = NULL; time_t finish_time; - elog(DEBUG3, "Synchronizing with standby"); - if (gtmpqPutMsgStart('C', true, conn)) goto send_failed; diff --git a/src/gtm/client/ip.c b/src/gtm/client/ip.c index de573e0c88..57b12e86ee 100644 --- a/src/gtm/client/ip.c +++ b/src/gtm/client/ip.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION diff --git a/src/gtm/client/pqexpbuffer.c b/src/gtm/client/pqexpbuffer.c index 32bc76eefd..c9f0a7aaf8 100644 --- a/src/gtm/client/pqexpbuffer.c +++ b/src/gtm/client/pqexpbuffer.c @@ -16,7 +16,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/interfaces/libpq/pqexpbuffer.c,v 1.25 2008/11/26 00:26:23 tgl Exp $ * diff --git a/src/gtm/client/strlcpy.c b/src/gtm/client/strlcpy.c index cb5552b713..c8e27d124a 100644 --- a/src/gtm/client/strlcpy.c +++ b/src/gtm/client/strlcpy.c @@ -4,7 +4,7 @@ * strncpy done right * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION diff --git a/src/gtm/client/test/Makefile b/src/gtm/client/test/Makefile index f2fe3b77fe..a2985bbfda 100644 --- a/src/gtm/client/test/Makefile +++ b/src/gtm/client/test/Makefile @@ -1,5 +1,12 @@ -# Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation - +#---------------------------------------------------------------------------- +# +# Postgres-XC GTM client test makefile +# +# Copyright (c) 2010-2013, Postgres-XC Development Group +# +# src/gtm/client/test/Makefile +# +#----------------------------------------------------------------------------- top_build_dir=../../../ include $(top_build_dir)/gtm/Makefile.global diff --git a/src/gtm/client/test/test_proxy.sh b/src/gtm/client/test/test_proxy.sh index 5c68745b3f..c59cf12584 100644 --- a/src/gtm/client/test/test_proxy.sh +++ b/src/gtm/client/test/test_proxy.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation +# Copyright (c) 2010-2013, Postgres-XC Development Group GTM_SERVER_HOSTNAME=gtm GTM_SERVER_PORT=16667 diff --git a/src/gtm/client/test/test_seq.c b/src/gtm/client/test/test_seq.c index 614489f593..45e9d74b31 100644 --- a/src/gtm/client/test/test_seq.c +++ b/src/gtm/client/test/test_seq.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include #include diff --git a/src/gtm/client/test/test_snap.c b/src/gtm/client/test/test_snap.c index fd1e15216a..be70557eac 100644 --- a/src/gtm/client/test/test_snap.c +++ b/src/gtm/client/test/test_snap.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include #include diff --git a/src/gtm/client/test/test_snapperf.c b/src/gtm/client/test/test_snapperf.c index ac241aabc2..81c446040e 100644 --- a/src/gtm/client/test/test_snapperf.c +++ b/src/gtm/client/test/test_snapperf.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/client/test/test_txn.c b/src/gtm/client/test/test_txn.c index a8a4f179ce..9301dd1b2e 100644 --- a/src/gtm/client/test/test_txn.c +++ b/src/gtm/client/test/test_txn.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/client/test/test_txnperf.c b/src/gtm/client/test/test_txnperf.c index 545a79e3d3..c5eba8a71a 100644 --- a/src/gtm/client/test/test_txnperf.c +++ b/src/gtm/client/test/test_txnperf.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include #include diff --git a/src/gtm/common/.gitignore b/src/gtm/common/.gitignore new file mode 100644 index 0000000000..5963e7b19a --- /dev/null +++ b/src/gtm/common/.gitignore @@ -0,0 +1 @@ +/gtm_opt_scanner.c diff --git a/src/gtm/common/Makefile b/src/gtm/common/Makefile index 769ed16876..b2cd94fc40 100644 --- a/src/gtm/common/Makefile +++ b/src/gtm/common/Makefile @@ -1,10 +1,19 @@ -# Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation - +#---------------------------------------------------------------------------- +# +# Postgres-XC GTM common makefile +# +# Copyright (c) 2010-2013, Postgres-XC Development Group +# +# src/gtm/common/Makefile +# +#----------------------------------------------------------------------------- top_builddir=../../.. subdir=src/gtm/common include $(top_builddir)/src/Makefile.global +override CPPFLAGS := -I. -I$(srcdir) $(CPPFLAGS) + NAME=gtm SO_MAJOR_VERSION= 1 @@ -13,25 +22,27 @@ SO_MINOR_VERSION= 0 LDFLAGS=-L$(top_builddir)/common -L$(top_builddir)/libpq LIBS=-lpthread -OBJS=gtm_opt_scanner.o aset.o mcxt.o gtm_utils.o elog.o assert.o stringinfo.o gtm_lock.o gtm_list.o gtm_serialize.o gtm_serialize_debug.o gtm_opt_handler.o - -all:gtm_opt_scanner.c all-lib +OBJS = gtm_opt_handler.o aset.o mcxt.o gtm_utils.o elog.o assert.o stringinfo.o gtm_lock.o \ + gtm_list.o gtm_serialize.o gtm_serialize_debug.o -gtm_opt_hander.o:gtm_opt_scanner.h gtm_opt_handler.c +all:all-lib -gtm_opt_scanner.h:gtm_opt_scanner.c +gtm_opt_handler.o: gtm_opt_scanner.c -gtm_opt_scanner.c:gtm_opt_scanner.l - $(FLEX) $(FLEXFLAGS) --header-file=gtm_opt_scanner.h -o'$@' $< +gtm_opt_scanner.c: gtm_opt_scanner.l +ifdef FLEX + $(FLEX) $(FLEXFLAGS) -o'$@' $< +else + @$(missing) flex $< $@ +endif # Shared library stuff include $(top_srcdir)/src/Makefile.shlib +# Note that gtm_opt_scanner.c is not deleted by make clean as we want it in distribution tarballs clean: rm -f $(OBJS) rm -f libgtm.so libgtm.so.1 libgtm.so.1.0 - rm -f gtm_opt_scanner.c - rm -f gtm_opt_scanner.h distclean: clean diff --git a/src/gtm/common/aset.c b/src/gtm/common/aset.c index 804d9f1526..9297d1c8d5 100644 --- a/src/gtm/common/aset.c +++ b/src/gtm/common/aset.c @@ -9,7 +9,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * IDENTIFICATION * $PostgreSQL: pgsql/src/backend/utils/mmgr/aset.c,v 1.77 2008/04/11 22:54:23 tgl Exp $ diff --git a/src/gtm/common/assert.c b/src/gtm/common/assert.c index d1a0dffae2..3f3ffa9c68 100644 --- a/src/gtm/common/assert.c +++ b/src/gtm/common/assert.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION diff --git a/src/gtm/common/elog.c b/src/gtm/common/elog.c index 25fe432f12..519dd9c037 100644 --- a/src/gtm/common/elog.c +++ b/src/gtm/common/elog.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -857,7 +857,7 @@ send_message_to_server_log(ErrorData *edata) * At present, this function is not used within GTM. Because this flushes * message back to the client, GTM should consider to flush backup to the * standby. However, we cannot simply refer to isGTM because this module - * can be included in coordinator backends. If this can really be called + * can be included in Coordinator backends. If this can really be called * from any GTM module, we need a solution to determine that the Port is * in GTM or not, without direct reference to isGTM. * diff --git a/src/gtm/common/gtm_list.c b/src/gtm/common/gtm_list.c index 0b3e975e7c..4f8de8b166 100644 --- a/src/gtm/common/gtm_list.c +++ b/src/gtm/common/gtm_list.c @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION diff --git a/src/gtm/common/gtm_lock.c b/src/gtm/common/gtm_lock.c index 7ca9f0e67c..268289ed23 100644 --- a/src/gtm/common/gtm_lock.c +++ b/src/gtm/common/gtm_lock.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -154,7 +154,7 @@ GTM_MutexLockRelease(GTM_MutexLock *lock) bool GTM_MutexLockConditionalAcquire(GTM_MutexLock *lock) { - int status = pthread_mutex_trylock(&lock->lk_lock); + int status = pthread_mutex_trylock(&lock->lk_lock); return status ? false : true; } @@ -203,4 +203,3 @@ GTM_CVWait(GTM_CV *cv, GTM_MutexLock *lock) { return pthread_cond_wait(&cv->cv_condvar, &lock->lk_lock); } - diff --git a/src/gtm/common/gtm_opt_handler.c b/src/gtm/common/gtm_opt_handler.c index 63490386b0..61c2476599 100644 --- a/src/gtm/common/gtm_opt_handler.c +++ b/src/gtm/common/gtm_opt_handler.c @@ -21,31 +21,18 @@ #include "gtm/gtm_opt.h" #include "gtm/gtm_opt_tables.h" #include "gtm/elog.h" -#include "./gtm_opt_scanner.h" - +#include "gtm_opt_scanner.c" /* Avoid exit() on fatal scanner errors (a bit ugly -- see yy_fatal_error) */ #undef fprintf #define fprintf(file, fmt, msg) ereport(ERROR, (errmsg_internal("%s", msg))) -enum { - GTMOPT_ID = 1, - GTMOPT_STRING = 2, - GTMOPT_INTEGER = 3, - GTMOPT_REAL = 4, - GTMOPT_EQUALS = 5, - GTMOPT_UNQUOTED_STRING = 6, - GTMOPT_QUALIFIED_ID = 7, - GTMOPT_EOL = 99, - GTMOPT_ERROR = 100 -}; - static unsigned int ConfigFileLineno; /* flex fails to supply a prototype for GTMOPT_yylex, so provide one */ int GTMOPT_GTMOPT_yylex(void); -/* Functions defeined in this file */ +/* Functions defined in this file */ static char *GTMOPT_scanstr(const char *s); static struct config_generic *find_option(const char *name, bool create_placeholders, int elevel); static char *gtm_opt_strdup(int elevel, const char *src); @@ -1411,7 +1398,7 @@ SelectConfigFiles(const char *userDoption, const char *progname) { if (configdir) { - fname = gtm_opt_malloc(FATAL, + fname = gtm_opt_malloc(FATAL, strlen(configdir) + strlen(GTMConfigFileName) + 2); sprintf(fname, "%s/%s", configdir, GTMConfigFileName); } @@ -3218,7 +3205,7 @@ _ShowOption(struct config_generic * record, bool use_units) snprintf(buffer, sizeof(buffer), INT64_FORMAT "%s", result, unit); val = buffer; - + } break; diff --git a/src/gtm/common/gtm_serialize.c b/src/gtm/common/gtm_serialize.c index 1f286817db..078a2d29d9 100644 --- a/src/gtm/common/gtm_serialize.c +++ b/src/gtm/common/gtm_serialize.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -80,18 +80,18 @@ gtm_serialize_snapshotdata(GTM_SnapshotData *data, char *buf, size_t buflen) /* GTM_SnapshotData.sn_xmax */ memcpy(buf + len, &(data->sn_xmax), sizeof(GlobalTransactionId)); len += sizeof(GlobalTransactionId); - + /* GTM_SnapshotData.sn_recent_global_xmin */ memcpy(buf + len, &(data->sn_recent_global_xmin), sizeof(GlobalTransactionId)); len += sizeof(GlobalTransactionId); - + /* GTM_SnapshotData.sn_xcnt */ memcpy(buf + len, &(data->sn_xcnt), sizeof(uint32)); len += sizeof(uint32); - + /* GTM_SnapshotData.sn_xip */ #if 0 - /* + /* * This block of code seems to be wrong. data->sn_xip is an array of GlobalTransacionIDs * and the number of elements are indicated by sn_xcnt. */ @@ -251,22 +251,6 @@ gtm_serialize_transactioninfo(GTM_TransactionInfo *data, char *buf, size_t bufle len += sizeof(uint32); } - /* GTM_TransactionInfo.gti_coordname */ - if (data->gti_coordname != NULL) - { - namelen = (uint32)strlen(data->gti_coordname); - memcpy(buf + len, &namelen, sizeof(uint32)); - len += sizeof(uint32); - memcpy(buf + len, data->gti_coordname, namelen); - len += namelen; - } - else - { - namelen = 0; - memcpy(buf + len, &namelen, sizeof(uint32)); - len += sizeof(uint32); - } - /* GTM_TransactionInfo.gti_xmin */ memcpy(buf + len, &(data->gti_xmin), sizeof(GlobalTransactionId)); len += sizeof(GlobalTransactionId); @@ -415,7 +399,7 @@ gtm_deserialize_transactioninfo(GTM_TransactionInfo *data, const char *buf, size { data->nodestring = (char *)genAllocTop(string_len + 1); /* Should allocate at TopMostMemoryContext */ memcpy(data->nodestring, buf + len, string_len); - data->gti_gid[string_len] = 0; /* null-terminated */ + data->nodestring[string_len] = 0; /* null-terminated */ len += string_len; } else @@ -981,13 +965,11 @@ gtm_serialize_sequence(GTM_SeqInfo *s, char *buf, size_t buflen) /* * Return number of deserialized sequence information */ -GTM_SeqInfo * -gtm_deserialize_sequence(const char *buf, size_t buflen) +size_t +gtm_deserialize_sequence(GTM_SeqInfo *seq, const char *buf, size_t buflen) { size_t len = 0; - GTM_SeqInfo *seq; - seq = (GTM_SeqInfo *)genAlloc0(sizeof(GTM_SeqInfo)); seq->gs_key = (GTM_SequenceKeyData *)genAlloc0(sizeof(GTM_SequenceKeyData)); memcpy(&seq->gs_key->gsk_keylen, buf + len, sizeof(uint32)); @@ -1030,5 +1012,5 @@ gtm_deserialize_sequence(const char *buf, size_t buflen) memcpy(&seq->gs_state, buf + len, sizeof(uint32)); len += sizeof(uint32); - return seq; + return len; } diff --git a/src/gtm/common/gtm_serialize_debug.c b/src/gtm/common/gtm_serialize_debug.c index f4e67cb165..245c8fd04a 100644 --- a/src/gtm/common/gtm_serialize_debug.c +++ b/src/gtm/common/gtm_serialize_debug.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -47,7 +47,7 @@ dump_transactioninfo_elog(GTM_TransactionInfo *txn) elog(LOG, "gti_backend_id: %d", txn->gti_backend_id); elog(LOG, "gti_nodestring: %s", txn->nodestring); elog(LOG, "gti_gid: %s", txn->gti_gid); - + elog(LOG, " sn_xmin: %d", txn->gti_current_snapshot.sn_xmin); elog(LOG, " sn_xmax: %d", txn->gti_current_snapshot.sn_xmax); elog(LOG, " sn_recent_global_xmin: %d", txn->gti_current_snapshot.sn_recent_global_xmin); @@ -81,7 +81,7 @@ dump_transactions_elog(GTM_Transactions *txn, int num_txn) elog(LOG, " gt_latestCompletedXid: %d", txn->gt_latestCompletedXid); elog(LOG, " gt_recent_global_xmin: %d", txn->gt_recent_global_xmin); elog(LOG, " gt_lastslot: %d", txn->gt_lastslot); - + for (i = 0; i < num_txn; i++) { if (txn->gt_transactions_array[i].gti_gxid != InvalidGlobalTransactionId) diff --git a/src/gtm/common/gtm_utils.c b/src/gtm/common/gtm_utils.c index 49fd59d724..168e0a0f22 100644 --- a/src/gtm/common/gtm_utils.c +++ b/src/gtm/common/gtm_utils.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -71,7 +71,6 @@ static struct enum_name message_name_tab[] = {MSG_SNAPSHOT_GXID_GET, "MSG_SNAPSHOT_GXID_GET"}, {MSG_SEQUENCE_INIT, "MSG_SEQUENCE_INIT"}, {MSG_BKUP_SEQUENCE_INIT, "MSG_BKUP_SEQUENCE_INIT"}, - {MSG_SEQUENCE_GET_CURRENT, "MSG_SEQUENCE_GET_CURRENT"}, {MSG_SEQUENCE_GET_NEXT, "MSG_SEQUENCE_GET_NEXT"}, {MSG_BKUP_SEQUENCE_GET_NEXT, "MSG_BKUP_SEQUENCE_GET_NEXT"}, {MSG_SEQUENCE_GET_LAST, "MSG_SEQUENCE_GET_LAST"}, @@ -125,7 +124,6 @@ static struct enum_name result_name_tab[] = {SNAPSHOT_GET_MULTI_RESULT, "SNAPSHOT_GET_MULTI_RESULT"}, {SNAPSHOT_GXID_GET_RESULT, "SNAPSHOT_GXID_GET_RESULT"}, {SEQUENCE_INIT_RESULT, "SEQUENCE_INIT_RESULT"}, - {SEQUENCE_GET_CURRENT_RESULT, "SEQUENCE_GET_CURRENT_RESULT"}, {SEQUENCE_GET_NEXT_RESULT, "SEQUENCE_GET_NEXT_RESULT"}, {SEQUENCE_GET_LAST_RESULT, "SEQUENCE_GET_LAST_RESULT"}, {SEQUENCE_SET_VAL_RESULT, "SEQUENCE_SET_VAL_RESULT"}, @@ -196,25 +194,3 @@ char *gtm_util_result_name(GTM_ResultType type) return "UNKNOWN_RESULT"; return result_name[type]; } - -/* - * gtm_report_failure() is an utility function to report fatal failure - * which occureed inside GTM to XCM, especially communication errors. - * - * failed_conn is null-able when failed to establish a connection - * with other node. - */ -#if 0 -/* - * PGXCTODO: This portion of code needs XCM support - * to be able to report GTM failures to XC watcher and - * enable a GTM reconnection kick. - */ -void -gtm_report_failure(GTM_Conn *failed_conn) -{ - elog(LOG, "Calling report_xcwatch_gtm_failure()..."); - return; -} -#endif - diff --git a/src/gtm/common/mcxt.c b/src/gtm/common/mcxt.c index 1ed0e70343..e2187206e7 100644 --- a/src/gtm/common/mcxt.c +++ b/src/gtm/common/mcxt.c @@ -11,7 +11,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -126,7 +126,7 @@ MemoryContextReset(MemoryContext context) if (MemoryContextIsShared(context)) MemoryContextLock(context); - + /* save a function call in common case where there are no children */ if (context->firstchild != NULL) MemoryContextResetChildren(context); @@ -782,4 +782,3 @@ Gen_Alloc genAlloc_class = {(void *)MemoryContextAlloc, (void *)pfree, (void *)current_memcontext, (void *)allocTopMemCxt}; - diff --git a/src/gtm/common/stringinfo.c b/src/gtm/common/stringinfo.c index f16a888d58..fd3d357aee 100644 --- a/src/gtm/common/stringinfo.c +++ b/src/gtm/common/stringinfo.c @@ -8,7 +8,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/backend/lib/stringinfo.c,v 1.49 2008/01/01 19:45:49 momjian Exp $ * diff --git a/src/gtm/gtm_ctl/.gitignore b/src/gtm/gtm_ctl/.gitignore new file mode 100644 index 0000000000..ffe90d63fc --- /dev/null +++ b/src/gtm/gtm_ctl/.gitignore @@ -0,0 +1 @@ +/gtm_ctl diff --git a/src/gtm/gtm_ctl/Makefile b/src/gtm/gtm_ctl/Makefile index 40dbc4fd51..f570ad1ab2 100644 --- a/src/gtm/gtm_ctl/Makefile +++ b/src/gtm/gtm_ctl/Makefile @@ -1,18 +1,23 @@ -# Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation - +#---------------------------------------------------------------------------- +# +# Postgres-XC GTM gtm_ctl makefile +# +# Copyright (c) 2010-2013, Postgres-XC Development Group +# +# src/gtm/gtm_ctl/Makefile +# +#----------------------------------------------------------------------------- top_builddir=../../.. include $(top_builddir)/src/Makefile.global +subdir=src/gtm/gtm_ctl OBJS=gtm_ctl.o -OTHERS=../common/libgtm.a ../libpq/libpqcomm.a ../client/libgtmclient.a ../path/libgtmpath.a - -LDFLAGS=-L$(top_builddir)/common -L$(top_builddir)/libpq - +OTHERS=../../../src/port/libpgport.a ../client/libgtmclient.a LIBS=-lpthread -gtm_ctl:$(OBJS) +gtm_ctl:$(OBJS) | submake-libpgport $(CC) $(CFLAGS) $(LDFLAGS) $(LIBS) $^ $(OTHERS) -o gtm_ctl all:gtm_ctl diff --git a/src/gtm/gtm_ctl/gtm_ctl.c b/src/gtm/gtm_ctl/gtm_ctl.c index 6faff44299..bf9e53fa12 100644 --- a/src/gtm/gtm_ctl/gtm_ctl.c +++ b/src/gtm/gtm_ctl/gtm_ctl.c @@ -3,7 +3,7 @@ * gtm_ctl --- start/stops/restarts the GTM server/proxy * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL$ * @@ -94,6 +94,7 @@ static void *pg_realloc(void *ptr, size_t size); static char gtmopts_file[MAXPGPATH]; static char pid_file[MAXPGPATH]; +static char conf_file[MAXPGPATH]; /* * Write errors to stderr (or by gtm_equal means when stderr is @@ -270,7 +271,7 @@ start_gtm(void) if (gtm_path != NULL) { strncpy(gtm_app_path, gtm_path, MAXPGPATH - len - 1); - + len = strlen(gtm_app_path); strncat(gtm_app_path, "/", MAXPGPATH - len - 1); @@ -286,13 +287,12 @@ start_gtm(void) strncat(gtm_app_path, gtm_app, MAXPGPATH - len - 1); if (log_file != NULL) - len = snprintf(cmd, MAXPGPATH - 1, SYSTEMQUOTE "\"%s\" %s%s < \"%s\" >> \"%s\" 2>&1 &" SYSTEMQUOTE, - gtm_app_path, gtmdata_opt, gtm_opts, - DEVNULL, log_file); + len = snprintf(cmd, MAXPGPATH - 1, SYSTEMQUOTE "\"%s\" %s%s -l %s < \"%s\" 2>&1 &" SYSTEMQUOTE, + gtm_app_path, gtmdata_opt, gtm_opts, log_file, DEVNULL); else len = snprintf(cmd, MAXPGPATH - 1, SYSTEMQUOTE "\"%s\" %s%s < \"%s\" 2>&1 &" SYSTEMQUOTE, gtm_app_path, gtmdata_opt, gtm_opts, DEVNULL); - + if (len >= MAXPGPATH - 1) { write_stderr("gtm command exceeds max size"); @@ -304,7 +304,7 @@ start_gtm(void) /* - * Find the pgport and try a connection + * Find the gtm port and try a connection */ static bool test_gtm_connection() @@ -354,6 +354,54 @@ test_gtm_connection() p++; } + /* + * Search config file for a 'port' option. + * + * This parsing code isn't amazingly bright either, but it should be okay + * for valid port settings. + */ + if (!*portstr) + { + char **optlines; + + optlines = readfile(conf_file); + if (optlines != NULL) + { + for (; *optlines != NULL; optlines++) + { + p = *optlines; + + while (isspace((unsigned char) *p)) + p++; + if (strncmp(p, "port", 4) != 0) + continue; + p += 4; + while (isspace((unsigned char) *p)) + p++; + if (*p != '=') + continue; + p++; + /* advance past any whitespace/quoting */ + while (isspace((unsigned char) *p) || *p == '\'' || *p == '"') + p++; + /* find end of value (not including any ending quote/comment!) */ + q = p; + while (*q && + !(isspace((unsigned char) *q) || + *q == '\'' || *q == '"' || *q == '#')) + q++; + /* and save the argument value */ + strlcpy(portstr, p, Min((q - p) + 1, sizeof(portstr))); + /* keep looking, maybe there is another */ + } + } + } + + /* Still not found? Use compiled-in default */ +#define GTM_DEFAULT_PORT 6666 + if (!*portstr) + snprintf(portstr, sizeof(portstr), "%d", GTM_DEFAULT_PORT); + /* * We need to set a connect timeout otherwise on Windows the SCM will * probably timeout first @@ -439,6 +487,45 @@ do_start(void) read_gtm_opts(); + /* The binary for both gtm and gtm_standby is the same */ + if (strcmp(gtm_app, "gtm_standby") == 0) + gtm_app = "gtm"; + + if (gtm_path == NULL) + { + int ret; + char *found_path; + char version_str[MAXPGPATH]; + + found_path = pg_malloc(MAXPGPATH); + sprintf(version_str, "%s (Postgres-XC) %s\n", gtm_app, PGXC_VERSION); + + if ((ret = find_other_exec(argv0, gtm_app, version_str, found_path)) < 0) + { + char full_path[MAXPGPATH]; + + if (find_my_exec(argv0, full_path) < 0) + strlcpy(full_path, progname, sizeof(full_path)); + + if (ret == -1) + write_stderr(_("The program \"%s\" is needed by gtm_ctl " + "but was not found in the\n" + "same directory as \"%s\".\n" + "Check your installation.\n"), + gtm_app, full_path); + else + write_stderr(_("The program \"%s\" was found by \"%s\"\n" + "but was not the same version as gtm_ctl.\n" + "Check your installation.\n"), + gtm_app, full_path); + exit(1); + } + + *last_dir_separator(found_path) = '\0'; + + gtm_path = found_path; + } + exitcode = start_gtm(); if (exitcode != 0) { @@ -654,7 +741,7 @@ do_reconnect(void) exit(1); } } - + /* * restart/reload routines @@ -769,20 +856,18 @@ do_status(void) exit(1); } - if (fscanf(pidf, "%d", &mode) != 1) + if (strcmp(gtm_app, "gtm_proxy") != 0) { - write_stderr(_("%s: invalid data in PID file \"%s\"\n"), - progname, pid_file); - exit(1); + if (fscanf(pidf, "%d", &mode) != 1) + { + write_stderr(_("%s: invalid data in PID file \"%s\"\n"), + progname, pid_file); + exit(1); + } } fclose(pidf); - printf("pid: %ld\n", pid); - printf("data: %s\n", datpath); - printf("active: %d\n", mode); - -#ifdef NOT_USED pid = get_pgpid(); if (pid == 0) /* no pid file */ @@ -804,27 +889,28 @@ do_status(void) exit(1); } } - - if (!gtm_is_alive((pid_t) pid)) + else { - write_stderr(_("%s: old server process (PID: %ld) seems to be gone\n"), - progname, pid); - exit(1); - } + if (gtm_is_alive((pid_t) pid)) + { + char **optlines; - /* - * status check stuffs. - */ - exitcode = check_gtm(); - if (exitcode != 0) - { - write_stderr(_("%s: could not get server status: exit code was %d\n"), - progname, exitcode); - exit(1); + printf(_("%s: server is running (PID: %ld)\n"), + progname, pid); + + optlines = readfile(gtmopts_file); + if (optlines != NULL) + for (; *optlines != NULL; optlines++) + fputs(*optlines, stdout); + if (strcmp(gtm_app, "gtm_proxy") != 0) + printf("%d %s\n", mode, mode == 1 ? "master" : "slave"); + return; + } } -#endif /* NOT_USED */ -} + write_stderr(_("%s: no server running\n"), progname); + exit(1); +} /* @@ -868,13 +954,13 @@ do_help(void) printf(_("%s is a utility to start, stop or restart,\n" "a GTM server, a GTM standby or GTM proxy.\n\n"), progname); printf(_("Usage:\n")); - printf(_(" %s start -S STARTUP_MODE [-w] [-t SECS] [-D DATADIR] [-l FILENAME] [-o \"OPTIONS\"]\n"), progname); - printf(_(" %s stop -S STARTUP_MODE [-W] [-t SECS] [-D DATADIR] [-m SHUTDOWN-MODE]\n"), progname); - printf(_(" %s promote -S STARTUP_MODE [-w] [-t SECS] [-D DATADIR]\n"), progname); - printf(_(" %s restart -S STARTUP_MODE [-w] [-t SECS] [-D DATADIR] [-m SHUTDOWN-MODE]\n" + printf(_(" %s start -Z STARTUP_MODE [-w] [-t SECS] [-D DATADIR] [-l FILENAME] [-o \"OPTIONS\"]\n"), progname); + printf(_(" %s stop -Z STARTUP_MODE [-W] [-t SECS] [-D DATADIR] [-m SHUTDOWN-MODE]\n"), progname); + printf(_(" %s promote -Z STARTUP_MODE [-w] [-t SECS] [-D DATADIR]\n"), progname); + printf(_(" %s restart -Z STARTUP_MODE [-w] [-t SECS] [-D DATADIR] [-m SHUTDOWN-MODE]\n" " [-o \"OPTIONS\"]\n"), progname); - printf(_(" %s status -S STARTUP_MODE [-w] [-t SECS] [-D DATADIR]\n"), progname); - printf(_(" %s reconnect -S STARTUP_MODE [-D DATADIR] -o \"OPTIONS\"]\n"), progname); + printf(_(" %s status -Z STARTUP_MODE [-w] [-t SECS] [-D DATADIR]\n"), progname); + printf(_(" %s reconnect -Z STARTUP_MODE [-D DATADIR] -o \"OPTIONS\"]\n"), progname); printf(_("\nCommon options:\n")); printf(_(" -D DATADIR location of the database storage area\n")); @@ -884,14 +970,15 @@ do_help(void) printf(_(" -w wait until operation completes\n")); printf(_(" -W do not wait until operation completes\n")); printf(_(" --help show this help, then exit\n")); + printf(_(" -V, --version output version information, then exit\n")); printf(_("(The default is to wait for shutdown, but not for start or restart.)\n\n")); printf(_("\nOptions for start or restart:\n")); - printf(_(" -S STARTUP-MODE can be \"gtm\", \"gtm_standby\" or \"gtm_proxy\"\n")); printf(_(" -l FILENAME write (or append) server log to FILENAME\n")); printf(_(" -o OPTIONS command line options to pass to gtm\n" " (GTM server executable)\n")); printf(_(" -p PATH-TO-GTM/PROXY path to gtm/gtm_proxy executables\n")); + printf(_(" -Z STARTUP-MODE can be \"gtm\", \"gtm_standby\" or \"gtm_proxy\"\n")); printf(_("\nOptions for stop or restart:\n")); printf(_(" -m SHUTDOWN-MODE can be \"smart\", \"fast\", or \"immediate\"\n")); @@ -957,6 +1044,11 @@ main(int argc, char **argv) do_help(); exit(0); } + if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0) + { + puts("gtm_ctl (Postgres-XC) " PGXC_VERSION); + exit(0); + } } /* @@ -983,7 +1075,7 @@ main(int argc, char **argv) /* process command-line options */ while (optind < argc) { - while ((c = getopt(argc, argv, "D:i:l:m:o:p:S:t:wW")) != -1) + while ((c = getopt(argc, argv, "D:i:l:m:o:p:t:wWZ:")) != -1) { switch (c) { @@ -1025,17 +1117,6 @@ main(int argc, char **argv) gtm_path = xstrdup(optarg); canonicalize_path(gtm_path); break; - case 'S': - gtm_app = xstrdup(optarg); - if (strcmp(gtm_app,"gtm_proxy") != 0 - && strcmp(gtm_app,"gtm_standby") != 0 - && strcmp(gtm_app,"gtm") != 0) - { - write_stderr(_("%s: %s launch name set not correct\n"), progname, gtm_app); - do_advice(); - exit(1); - } - break; case 't': wait_seconds = atoi(optarg); break; @@ -1047,6 +1128,17 @@ main(int argc, char **argv) do_wait = false; wait_set = true; break; + case 'Z': + gtm_app = xstrdup(optarg); + if (strcmp(gtm_app,"gtm_proxy") != 0 + && strcmp(gtm_app,"gtm_standby") != 0 + && strcmp(gtm_app,"gtm") != 0) + { + write_stderr(_("%s: %s launch name set not correct\n"), progname, gtm_app); + do_advice(); + exit(1); + } + break; default: /* getopt_long already issued a suitable error message */ do_advice(); @@ -1078,7 +1170,7 @@ main(int argc, char **argv) ctl_command = RECONNECT_COMMAND; else { - write_stderr(_("%s: unrecognized operation mode \"%s\"\n"), + write_stderr(_("%s: unrecognized operation mode \"%s\"\n"), progname, argv[optind]); do_advice(); exit(1); @@ -1112,7 +1204,7 @@ main(int argc, char **argv) /* * pid files of gtm and gtm proxy are named differently - * -S option has also to be set for STOP_COMMAND + * -Z option has also to be set for STOP_COMMAND * or gtm_ctl will not be able to find the correct pid_file */ if (!gtm_app) @@ -1171,16 +1263,19 @@ main(int argc, char **argv) { snprintf(pid_file, MAXPGPATH, "%s/gtm_proxy.pid", gtm_data); snprintf(gtmopts_file, MAXPGPATH, "%s/gtm_proxy.opts", gtm_data); + snprintf(conf_file, MAXPGPATH, "%s/gtm_proxy.conf", gtm_data); } else if (strcmp(gtm_app,"gtm") == 0) { snprintf(pid_file, MAXPGPATH, "%s/gtm.pid", gtm_data); snprintf(gtmopts_file, MAXPGPATH, "%s/gtm.opts", gtm_data); + snprintf(conf_file, MAXPGPATH, "%s/gtm.conf", gtm_data); } else if (strcmp(gtm_app,"gtm_standby") == 0) { snprintf(pid_file, MAXPGPATH, "%s/gtm.pid", gtm_data); snprintf(gtmopts_file, MAXPGPATH, "%s/gtm.opts", gtm_data); + snprintf(conf_file, MAXPGPATH, "%s/gtm.conf", gtm_data); } if (ctl_command==STATUS_COMMAND) @@ -1227,4 +1322,4 @@ pg_realloc(void *ptr, size_t size) if (!tmp) write_stderr("out of memory\n"); return tmp; -} +} diff --git a/src/gtm/libpq/Makefile b/src/gtm/libpq/Makefile index 8324f27112..b553dadd0f 100644 --- a/src/gtm/libpq/Makefile +++ b/src/gtm/libpq/Makefile @@ -1,17 +1,25 @@ -# Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation - +#---------------------------------------------------------------------------- +# +# Postgres-XC GTM libpq makefile +# +# Copyright (c) 2010-2013, Postgres-XC Development Group +# +# src/gtm/libpq/Makefile +# +#----------------------------------------------------------------------------- top_builddir=../../.. include $(top_builddir)/src/Makefile.global +subdir=src/gtm/libpq NAME=pqcomm SO_MAJOR_VERSION= 1 SO_MINOR_VERSION= 0 -OBJS=ip.o pqcomm.o pqformat.o strlcpy.o pqsignal.o +OBJS=ip.o pqcomm.o pqformat.o strlcpy.o pqsignal.o all:all-lib -include $(top_builddir)/src/Makefile.shlib +include $(top_srcdir)/src/Makefile.shlib clean: rm -f $(OBJS) diff --git a/src/gtm/libpq/ip.c b/src/gtm/libpq/ip.c index b14158181c..c7b474159a 100644 --- a/src/gtm/libpq/ip.c +++ b/src/gtm/libpq/ip.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION diff --git a/src/gtm/libpq/pqcomm.c b/src/gtm/libpq/pqcomm.c index 507c4a1723..a2d4b254ca 100644 --- a/src/gtm/libpq/pqcomm.c +++ b/src/gtm/libpq/pqcomm.c @@ -29,7 +29,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/backend/libpq/pqcomm.c,v 1.198 2008/01/01 19:45:49 momjian Exp $ * @@ -912,7 +912,7 @@ pq_putmessage(Port *myport, char msgtype, const char *s, size_t len) n32 = htonl((uint32) (len + 4)); if (internal_putbytes(myport, (char *) &n32, 4)) goto fail; - + if (internal_putbytes(myport, s, len)) goto fail; return 0; diff --git a/src/gtm/libpq/pqformat.c b/src/gtm/libpq/pqformat.c index bbd86b2b63..c4ff4cb532 100644 --- a/src/gtm/libpq/pqformat.c +++ b/src/gtm/libpq/pqformat.c @@ -23,7 +23,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/backend/libpq/pqformat.c,v 1.48 2009/01/01 17:23:42 momjian Exp $ * diff --git a/src/gtm/libpq/pqsignal.c b/src/gtm/libpq/pqsignal.c index 9aec6e4610..c1d666bbee 100644 --- a/src/gtm/libpq/pqsignal.c +++ b/src/gtm/libpq/pqsignal.c @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION diff --git a/src/gtm/libpq/strlcpy.c b/src/gtm/libpq/strlcpy.c index cb5552b713..c8e27d124a 100644 --- a/src/gtm/libpq/strlcpy.c +++ b/src/gtm/libpq/strlcpy.c @@ -4,7 +4,7 @@ * strncpy done right * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION diff --git a/src/gtm/main/.gitignore b/src/gtm/main/.gitignore new file mode 100644 index 0000000000..7ad2df41a5 --- /dev/null +++ b/src/gtm/main/.gitignore @@ -0,0 +1 @@ +/gtm diff --git a/src/gtm/main/Makefile b/src/gtm/main/Makefile index 506685cc75..ac2d2fe281 100644 --- a/src/gtm/main/Makefile +++ b/src/gtm/main/Makefile @@ -1,7 +1,15 @@ -# Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation - +#---------------------------------------------------------------------------- +# +# Postgres-XC GTM main Makefile +# +# Copyright (c) 2010-2013, Postgres-XC Development Group +# +# src/gtm/main/Makefile +# +#----------------------------------------------------------------------------- top_builddir=../../.. include $(top_builddir)/src/Makefile.global +subdir=src/gtm/main ifneq ($(PORTNAME), win32) override CFLAGS += $(PTHREAD_CFLAGS) diff --git a/src/gtm/main/gtm_opt.c b/src/gtm/main/gtm_opt.c index 3018a5b8eb..cd312d2dd4 100644 --- a/src/gtm/main/gtm_opt.c +++ b/src/gtm/main/gtm_opt.c @@ -8,7 +8,7 @@ * * * Copyright (c) 2000-2011, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * Written by Peter Eisentraut . * * IDENTIFICATION @@ -148,7 +148,7 @@ struct config_int ConfigureNamesInt[] = 0 }, >MPortNumber, - 0, 0, INT_MAX, + 6666, 0, INT_MAX, 0, NULL }, { @@ -251,7 +251,7 @@ struct config_string ConfigureNamesString[] = 0 }, &ListenAddresses, - NULL, + "*", NULL, NULL }, diff --git a/src/gtm/main/gtm_seq.c b/src/gtm/main/gtm_seq.c index 711fdb3c96..81a3f3ed8b 100644 --- a/src/gtm/main/gtm_seq.c +++ b/src/gtm/main/gtm_seq.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -198,7 +198,7 @@ seq_remove_seqinfo(GTM_SeqInfo *seqinfo) { uint32 hash = seq_gethash(seqinfo->gs_key); GTM_SeqInfoHashBucket *bucket; - + bucket = >MSequences[hash]; GTM_RWLockAcquire(&bucket->shb_lock, GTM_LOCKMODE_WRITE); @@ -223,7 +223,7 @@ static GTM_SequenceKey seq_copy_key(GTM_SequenceKey key) { GTM_SequenceKey retkey = NULL; - + /* * We must use the TopMostMemoryContext because the sequence information is * not bound to a thread and can outlive any of the thread specific @@ -291,7 +291,7 @@ GTM_SeqOpen(GTM_SequenceKey seqkey, * If maxval is specfied, set the maxvalue to the given maxval, otherwise * set to the defaults depending on whether the seqeunce is ascending or * descending. Also do some basic contraint checks - */ + */ if (SEQVAL_IS_VALID(maxval)) { if (maxval < seqinfo->gs_min_value) @@ -371,7 +371,6 @@ int GTM_SeqAlter(GTM_SequenceKey seqkey, GTM_RWLockAcquire(&seqinfo->gs_lock, GTM_LOCKMODE_WRITE); /* Modify the data if necessary */ - if (seqinfo->gs_cycle != cycle) seqinfo->gs_cycle = cycle; if (seqinfo->gs_min_value != minval) @@ -381,19 +380,22 @@ int GTM_SeqAlter(GTM_SequenceKey seqkey, if (seqinfo->gs_increment_by != increment_by) seqinfo->gs_increment_by = increment_by; - /* Here Restart has been used with a value, reinitialize last_value to a new value */ - if (seqinfo->gs_last_value != lastval) - seqinfo->gs_last_value = lastval; - - /* Start has been used, reinitialize init value */ - if (seqinfo->gs_init_value != startval) - seqinfo->gs_last_value = seqinfo->gs_init_value = startval; - - /* Restart command has been used, reset the sequence */ + /* + * Check start/restart processes. + * Check first if restart is necessary and reset sequence in that case. + * If not, check if a simple start is necessary and update sequence. + */ if (is_restart) { + /* Restart command has been used, reset the sequence */ seqinfo->gs_called = false; - seqinfo->gs_init_value = seqinfo->gs_last_value; + seqinfo->gs_init_value = seqinfo->gs_last_value = lastval; + } + else + { + /* Start has been used, reinitialize init value */ + if (seqinfo->gs_init_value != startval) + seqinfo->gs_init_value = seqinfo->gs_last_value = startval; } /* Remove the old key with the old name */ @@ -506,11 +508,11 @@ seq_key_dbname_equal(GTM_SequenceKey nsp, GTM_SequenceKey seq) * Check also if first part of sequence key name has a dot at the right place. * This accelerates process instead of making numerous memcmp. */ - if (seq->gsk_key[nsp->gsk_keylen] != '.') + if (seq->gsk_key[nsp->gsk_keylen - 1] != '.') return false; /* Then Check the strings */ - return (memcmp(nsp->gsk_key, seq->gsk_key, nsp->gsk_keylen) == 0); + return (memcmp(nsp->gsk_key, seq->gsk_key, nsp->gsk_keylen - 1) == 0); } /* @@ -649,31 +651,6 @@ GTM_SeqRename(GTM_SequenceKey seqkey, GTM_SequenceKey newseqkey) return errcode; } -/* - * Get current value for the sequence without incrementing it - */ -GTM_Sequence -GTM_SeqGetCurrent(GTM_SequenceKey seqkey) -{ - GTM_SeqInfo *seqinfo = seq_find_seqinfo(seqkey); - GTM_Sequence value; - - if (seqinfo == NULL) - { - ereport(LOG, - (EINVAL, - errmsg("The sequence with the given key does not exist"))); - return InvalidSequenceValue; - } - - GTM_RWLockAcquire(&seqinfo->gs_lock, GTM_LOCKMODE_WRITE); - - value = seqinfo->gs_last_value; - - GTM_RWLockRelease(&seqinfo->gs_lock); - seq_release_seqinfo(seqinfo); - return value; -} /* * Set values for the sequence @@ -730,7 +707,7 @@ GTM_SeqGetNext(GTM_SequenceKey seqkey) } GTM_RWLockAcquire(&seqinfo->gs_lock, GTM_LOCKMODE_WRITE); - + /* * If the sequence is called for the first time, initialize the value and * return the start value @@ -864,7 +841,7 @@ ProcessSequenceInitCommand(Port *myport, StringInfo message, bool is_backup) sizeof (GTM_Sequence)); memcpy(&startval, pq_getmsgbytes(message, sizeof (GTM_Sequence)), sizeof (GTM_Sequence)); - + cycle = pq_getmsgbyte(message); @@ -905,7 +882,7 @@ ProcessSequenceInitCommand(Port *myport, StringInfo message, bool is_backup) maxval, startval, cycle); - + if (gtm_standby_check_communication_error(&count, oldconn)) goto retry; @@ -1008,7 +985,7 @@ ProcessSequenceAlterCommand(Port *myport, StringInfo message, bool is_backup) int count = 0; elog(LOG, "calling alter_sequence() for standby GTM %p.", GetMyThreadInfo->thr_conn->standby); - + retry: rc = bkup_alter_sequence(GetMyThreadInfo->thr_conn->standby, &seqkey, @@ -1019,14 +996,14 @@ ProcessSequenceAlterCommand(Port *myport, StringInfo message, bool is_backup) lastval, cycle, is_restart); - + if (gtm_standby_check_communication_error(&count, oldconn)) goto retry; /* Sync */ if (Backup_synchronously && (myport->remote_type != GTM_NODE_GTM_PROXY)) gtm_sync_standby(GetMyThreadInfo->thr_conn->standby); - + elog(LOG, "alter_sequence() returns rc %d.", rc); } pq_beginmessage(&buf, 'S'); @@ -1060,9 +1037,9 @@ void ProcessSequenceListCommand(Port *myport, StringInfo message) { StringInfoData buf; - int seq_count = 0; - MemoryContext oldContext; - GTM_SeqInfo *seq_list[1024]; /* FIXME: make it expandable. */ + int seq_count; + int seq_maxcount; + GTM_SeqInfo **seq_list; int i; if (Recovery_IsStandby()) @@ -1070,39 +1047,57 @@ ProcessSequenceListCommand(Port *myport, StringInfo message) (EPERM, errmsg("Operation not permitted under the standby mode."))); - memset(seq_list, 0, sizeof(GTM_SeqInfo *) * 1024); - - /* - * We must use the TopMostMemoryContext because the sequence information is - * not bound to a thread and can outlive any of the thread specific - * contextes. - */ - oldContext = MemoryContextSwitchTo(TopMostMemoryContext); + seq_count = 0; + seq_maxcount = 1024; + seq_list = (GTM_SeqInfo **) palloc(seq_maxcount * sizeof(GTM_SeqInfo *));; /* * Store pointers to all GTM_SeqInfo in the hash buckets into an array. */ + for (i = 0 ; i < SEQ_HASH_TABLE_SIZE ; i++) { GTM_SeqInfoHashBucket *b; gtm_ListCell *elem; - - for (i = 0 ; i < SEQ_HASH_TABLE_SIZE ; i++) - { - b = >MSequences[i]; - GTM_RWLockAcquire(&b->shb_lock, GTM_LOCKMODE_READ); + b = >MSequences[i]; - gtm_foreach(elem, b->shb_list) + GTM_RWLockAcquire(&b->shb_lock, GTM_LOCKMODE_READ); + + gtm_foreach(elem, b->shb_list) + { + /* Allocate larger array if required */ + if (seq_count == seq_maxcount) { - seq_list[seq_count] = (GTM_SeqInfo *) gtm_lfirst(elem); - seq_count++; + int newcount; + GTM_SeqInfo **newlist; + + newcount = 2 * seq_maxcount; + newlist = (GTM_SeqInfo **) repalloc(seq_list, newcount * sizeof(GTM_SeqInfo *)); + /* + * If failed try to get less. It is unlikely to happen, but + * let's be safe. + */ + while (newlist == NULL) + { + newcount = seq_maxcount + (newcount - seq_maxcount) / 2 - 1; + if (newcount <= seq_maxcount) + { + /* give up */ + ereport(ERROR, + (ERANGE, + errmsg("Can not list all the sequences"))); + } + newlist = (GTM_SeqInfo **) repalloc(seq_list, newcount * sizeof(GTM_SeqInfo *)); + } + seq_maxcount = newcount; + seq_list = newlist; } - - GTM_RWLockRelease(&b->shb_lock); + seq_list[seq_count] = (GTM_SeqInfo *) gtm_lfirst(elem); + seq_count++; } - } - MemoryContextSwitchTo(oldContext); + GTM_RWLockRelease(&b->shb_lock); + } pq_getmsgend(message); @@ -1118,7 +1113,7 @@ ProcessSequenceListCommand(Port *myport, StringInfo message) /* Send a number of sequences */ pq_sendint(&buf, seq_count, 4); - + for (i = 0 ; i < seq_count ; i++) { char *seq_buf; @@ -1147,70 +1142,6 @@ ProcessSequenceListCommand(Port *myport, StringInfo message) } -/* - * Process MSG_SEQUENCE_GET_CURRENT message - */ -void -ProcessSequenceGetCurrentCommand(Port *myport, StringInfo message) -{ - GTM_SequenceKeyData seqkey; - StringInfoData buf; - GTM_Sequence seqval; - - seqkey.gsk_keylen = pq_getmsgint(message, sizeof (seqkey.gsk_keylen)); - seqkey.gsk_key = (char *)pq_getmsgbytes(message, seqkey.gsk_keylen); - - seqval = GTM_SeqGetCurrent(&seqkey); - if (!SEQVAL_IS_VALID(seqval)) - ereport(ERROR, - (ERANGE, - errmsg("Can not get current value of the sequence"))); - - elog(LOG, "Getting current value %ld for sequence %s", seqval, seqkey.gsk_key); - - pq_beginmessage(&buf, 'S'); - pq_sendint(&buf, SEQUENCE_GET_CURRENT_RESULT, 4); - if (myport->remote_type == GTM_NODE_GTM_PROXY) - { - GTM_ProxyMsgHeader proxyhdr; - proxyhdr.ph_conid = myport->conn_id; - pq_sendbytes(&buf, (char *)&proxyhdr, sizeof (GTM_ProxyMsgHeader)); - } - pq_sendint(&buf, seqkey.gsk_keylen, 4); - pq_sendbytes(&buf, seqkey.gsk_key, seqkey.gsk_keylen); - pq_sendbytes(&buf, (char *)&seqval, sizeof (GTM_Sequence)); - pq_endmessage(myport, &buf); - - if (myport->remote_type != GTM_NODE_GTM_PROXY) - /* Don't flush to the standby because this does not change the status */ - pq_flush(myport); - - /* - * I don't think backup is needed here. It does not change internal state. - * 27th Dec., 2011, K.Suzuki - */ -#if 0 - if (GetMyThreadInfo->thr_conn->standby) - { - GTM_Sequence loc_seq; - GTM_Conn *oldconn = GetMyThreadInfo->thr_conn->standby; - int count = 0; - - elog(LOG, "calling get_current() for standby GTM %p.", GetMyThreadInfo->thr_conn->standby); - -retry: - loc_seq = get_current(GetMyThreadInfo->thr_conn->standby, &seqkey); - - if (gtm_standby_check_communication_error(&count, oldconn)) - goto retry; - - elog(LOG, "get_current() returns GTM_Sequence %ld.", loc_seq); - } -#endif - - /* FIXME: need to check errors */ -} - /* * Process MSG_SEQUENCE_GET_NEXT/MSG_BKUP_SEQUENCE_GET_NEXT message * @@ -1247,7 +1178,7 @@ ProcessSequenceGetNextCommand(Port *myport, StringInfo message, bool is_backup) retry: loc_seq = bkup_get_next(GetMyThreadInfo->thr_conn->standby, &seqkey); - + if (gtm_standby_check_communication_error(&count, oldconn)) goto retry; @@ -1338,13 +1269,13 @@ ProcessSequenceSetValCommand(Port *myport, StringInfo message, bool is_backup) int count = 0; elog(LOG, "calling set_val() for standby GTM %p.", GetMyThreadInfo->thr_conn->standby); - + retry: rc = bkup_set_val(GetMyThreadInfo->thr_conn->standby, &seqkey, nextval, iscalled); - + if (gtm_standby_check_communication_error(&count, oldconn)) goto retry; @@ -1411,7 +1342,7 @@ ProcessSequenceResetCommand(Port *myport, StringInfo message, bool is_backup) int count = 0; elog(LOG, "calling reset_sequence() for standby GTM %p.", GetMyThreadInfo->thr_conn->standby); - + retry: rc = bkup_reset_sequence(GetMyThreadInfo->thr_conn->standby, &seqkey); @@ -1685,7 +1616,7 @@ GTM_RestoreSeqInfo(int ctlfd) elog(LOG, "Failed to read keylen"); break; } - + seqkey.gsk_key = palloc(seqkey.gsk_keylen); read(ctlfd, seqkey.gsk_key, seqkey.gsk_keylen); diff --git a/src/gtm/main/gtm_snap.c b/src/gtm/main/gtm_snap.c index c2de142a47..a31f30683f 100644 --- a/src/gtm/main/gtm_snap.c +++ b/src/gtm/main/gtm_snap.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -124,7 +124,7 @@ GTM_GetTransactionSnapshot(GTM_TransactionHandle handle[], int txn_count, int *s * Spin over transaction list checking xid, xmin, and subxids. The goal is to * gather all active xids and find the lowest xmin */ - gtm_foreach(elem, GTMTransactions.gt_open_transactions) + gtm_foreach(elem, GTMTransactions.gt_open_transactions) { volatile GTM_TransactionInfo *gtm_txninfo = (GTM_TransactionInfo *)gtm_lfirst(elem); GlobalTransactionId xid; @@ -203,7 +203,7 @@ GTM_GetTransactionSnapshot(GTM_TransactionHandle handle[], int txn_count, int *s mygtm_txninfo = GTM_HandleToTransactionInfo(handle[ii]); mysnap = &mygtm_txninfo->gti_current_snapshot; - + if (GTM_IsTransSerializable(mygtm_txninfo)) { if ((mygtm_txninfo->gti_snapshot_set) && (txn_count > 1)) @@ -303,7 +303,8 @@ ProcessGetSnapshotCommand(Port *myport, StringInfo message, bool get_gxid) ereport(ERROR, (EPROTO, errmsg("Message does not contain valid GXID"))); - memcpy(&gxid, data, sizeof (gxid)); + memcpy(&gxid, data, sizeof(gxid)); + elog(LOG, "Received transaction ID %d for snapshot obtention", gxid); txn = GTM_GXIDToHandle(gxid); } else @@ -464,7 +465,7 @@ ProcessGetSnapshotCommandMulti(Port *myport, StringInfo message) _rc = snapshot_get_multi(GetMyThreadInfo->thr_conn->standby, txn_count, gxid, &txn_count_out, status_out, &xmin_out, &xmax_out, &recent_global_xmin_out, &xcnt_out); - + if (gtm_standby_check_communication_error(&count, oldconn)) goto retry; diff --git a/src/gtm/main/gtm_standby.c b/src/gtm/main/gtm_standby.c index 5458cf6a98..feac18d847 100644 --- a/src/gtm/main/gtm_standby.c +++ b/src/gtm/main/gtm_standby.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -80,26 +80,26 @@ gtm_standby_restore_next_gxid(void) int gtm_standby_restore_sequence(void) { - GTM_SeqInfo *seq_list[1024]; + GTM_SeqInfo *seq_list; int num_seq; int i; /* * Restore sequence data. */ - num_seq = get_sequence_list(GTM_ActiveConn, seq_list, 1024); - + num_seq = get_sequence_list(GTM_ActiveConn, &seq_list); + for (i = 0; i < num_seq; i++) { - GTM_SeqRestore(seq_list[i]->gs_key, - seq_list[i]->gs_increment_by, - seq_list[i]->gs_min_value, - seq_list[i]->gs_max_value, - seq_list[i]->gs_init_value, - seq_list[i]->gs_value, - seq_list[i]->gs_state, - seq_list[i]->gs_cycle, - seq_list[i]->gs_called); + GTM_SeqRestore(seq_list[i].gs_key, + seq_list[i].gs_increment_by, + seq_list[i].gs_min_value, + seq_list[i].gs_max_value, + seq_list[i].gs_init_value, + seq_list[i].gs_value, + seq_list[i].gs_state, + seq_list[i].gs_cycle, + seq_list[i].gs_called); } elog(LOG, "Restoring sequences done."); @@ -119,6 +119,7 @@ gtm_standby_restore_gxid(void) num_txn = get_txn_gxid_list(GTM_ActiveConn, &txn); GTM_RWLockAcquire(>MTransactions.gt_XidGenLock, GTM_LOCKMODE_WRITE); + GTM_RWLockAcquire(>MTransactions.gt_TransArrayLock, GTM_LOCKMODE_WRITE); GTMTransactions.gt_txn_count = txn.gt_txn_count; GTMTransactions.gt_gtm_state = txn.gt_gtm_state; @@ -165,7 +166,7 @@ gtm_standby_restore_gxid(void) txn.gt_transactions_array[i].gti_current_snapshot.sn_recent_global_xmin; GTMTransactions.gt_transactions_array[i].gti_current_snapshot.sn_xcnt = txn.gt_transactions_array[i].gti_current_snapshot.sn_xcnt; - GTMTransactions.gt_transactions_array[i].gti_current_snapshot.sn_xip = + GTMTransactions.gt_transactions_array[i].gti_current_snapshot.sn_xip = txn.gt_transactions_array[i].gti_current_snapshot.sn_xip; /* end of copying GTM_SnapshotData */ @@ -184,9 +185,10 @@ gtm_standby_restore_gxid(void) >MTransactions.gt_transactions_array[i]); } } - + dump_transactions_elog(>MTransactions, num_txn); + GTM_RWLockRelease(>MTransactions.gt_TransArrayLock); GTM_RWLockRelease(>MTransactions.gt_XidGenLock); elog(LOG, "Restoring %d gxid(s) done.", num_txn); @@ -331,7 +333,7 @@ find_standby_node_info(void) node[i]->port, node[i]->status); - if ( (strcmp(standbyNodeName, node[i]->nodename) != 0) && + if ( (strcmp(standbyNodeName, node[i]->nodename) != 0) && node[i]->status == NODE_CONNECTED) return node[i]; } @@ -354,16 +356,6 @@ gtm_standby_connect_to_standby(void) conn = gtm_standby_connect_to_standby_int(&report); -#if 0 - /* - * PGXCTODO: This portion of code needs XCM support - * to be able to report GTM failures to XC watcher and - * enable a GTM reconnection kick. - */ - if (!conn && report) - gtm_report_failure(NULL); -#endif - return conn; } @@ -380,13 +372,13 @@ gtm_standby_connect_to_standby_int(int *report_needed) return NULL; n = find_standby_node_info(); - + if (!n) { elog(LOG, "Any GTM standby node not found in registered node(s)."); return NULL; } - + elog(LOG, "GTM standby is active. Going to connect."); *report_needed = 1; @@ -395,14 +387,14 @@ gtm_standby_connect_to_standby_int(int *report_needed) n->ipaddress, n->port, NodeName); standby = PQconnectGTM(conn_string); - + if ( !standby ) { elog(LOG, "Failed to establish a connection with GTM standby. - %p", n); return NULL; } - elog(LOG, "Connection established with GTM standby. - %p", n); + elog(DEBUG1, "Connection established with GTM standby. - %p", n); return standby; } @@ -441,16 +433,6 @@ gtm_standby_reconnect_to_standby(GTM_Conn *old_conn, int retry_max) elog(LOG, "gtm_standby_reconnect_to_standby(): re-connect failed. retry=%d", i); } -#if 0 - /* - * PGXCTODO: This portion of code needs XCM support - * to be able to report GTM failures to XC watcher and - * enable a GTM reconnection kick. - */ - if (newconn) - gtm_report_failure(NULL); -#endif - return newconn; } @@ -465,7 +447,7 @@ gtm_standby_check_communication_error(int *retry_count, GTM_Conn *oldconn) /* * This function may be called without result from standby. */ - if (my_threadInfo->thr_conn->standby->result + if (my_threadInfo->thr_conn->standby->result && my_threadInfo->thr_conn->standby->result->gr_status == GTM_RESULT_COMM_ERROR) { if (*retry_count == 0) @@ -481,14 +463,6 @@ gtm_standby_check_communication_error(int *retry_count, GTM_Conn *oldconn) } elog(LOG, "communication error with standby."); -#if 0 - /* - * PGXCTODO: This portion of code needs XCM support - * to be able to report GTM failures to XC watcher and - * enable a GTM reconnection kick. - */ - gtm_report_failure(oldconn); -#endif } return false; } @@ -538,6 +512,6 @@ gtm_standby_connectToActiveGTM(void) sprintf(connect_string, "host=%s port=%d node_name=%s remote_type=%d", active_address, active_port, NodeName, GTM_NODE_GTM); - + return PQconnectGTM(connect_string); } diff --git a/src/gtm/main/gtm_stat.c b/src/gtm/main/gtm_stat.c index 7557dcaa7a..745933fe49 100644 --- a/src/gtm/main/gtm_stat.c +++ b/src/gtm/main/gtm_stat.c @@ -4,7 +4,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION diff --git a/src/gtm/main/gtm_stats.c b/src/gtm/main/gtm_stats.c index 77808141ef..0c61fc308a 100644 --- a/src/gtm/main/gtm_stats.c +++ b/src/gtm/main/gtm_stats.c @@ -4,7 +4,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -19,5 +19,3 @@ typedef struct GTM_Stats float GTM_RecvBytes; float GTM_SentBytes; } GTM_Stats; - - diff --git a/src/gtm/main/gtm_thread.c b/src/gtm/main/gtm_thread.c index a5cf3411d3..ada2b2da69 100644 --- a/src/gtm/main/gtm_thread.c +++ b/src/gtm/main/gtm_thread.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -27,7 +27,7 @@ GTM_Threads *GTMThreads = >MThreadsData; #define GTM_MIN_THREADS 32 /* Provision for minimum threads */ #define GTM_MAX_THREADS 1024 /* Max threads allowed in the GTM */ -#define GTMThreadsFull (GTMThreads->gt_thread_count == GTMThreads->gt_array_size) +#define GTMThreadsFull (GTMThreads->gt_thread_count == GTMThreads->gt_array_size) /* * Add the given thrinfo structure to the global array, expanding it if @@ -43,10 +43,10 @@ GTM_ThreadAdd(GTM_ThreadInfo *thrinfo) if (GTMThreadsFull) { uint32 newsize; - + /* * TODO Optimize lock management by not holding any locks during memory - * allocation + * allocation. */ if (GTMThreads->gt_array_size == GTM_MAX_THREADS) elog(ERROR, "Too many threads active"); @@ -99,7 +99,7 @@ GTM_ThreadAdd(GTM_ThreadInfo *thrinfo) } GTM_RWLockRelease(>MThreads->gt_lock); - /* + /* * Track the slot information in the thrinfo. This is useful to quickly * find the slot given the thrinfo structure. */ @@ -264,6 +264,17 @@ GTM_ThreadCleanup(void *argp) elog(LOG, "Cleaning up thread state"); + if (thrinfo->thr_status == GTM_THREAD_BACKUP) + { + int ii; + + for (ii = 0; ii < GTMThreads->gt_array_size; ii++) + { + if (GTMThreads->gt_threads[ii] && GTMThreads->gt_threads[ii] != thrinfo) + GTM_RWLockRelease(>MThreads->gt_threads[ii]->thr_lock); + } + } + /* * Close a connection to GTM standby. */ @@ -280,6 +291,14 @@ GTM_ThreadCleanup(void *argp) */ StreamClose(thrinfo->thr_conn->con_port->sock); + /* Free the node_name in the port */ + if (thrinfo->thr_conn->con_port->node_name != NULL) + /* + * We don't have to reset pointer to NULL her because ConnFree() + * frees this structure next. + */ + pfree(thrinfo->thr_conn->con_port->node_name); + /* Free the port */ ConnFree(thrinfo->thr_conn->con_port); thrinfo->thr_conn->con_port = NULL; @@ -293,7 +312,7 @@ GTM_ThreadCleanup(void *argp) * our memory contextes easily. * * XXX We don't setup cleanup handlers for the main process. So this - * routine would never be called for the main process/thread + * routine would never be called for the main process/thread. */ MemoryContextSwitchTo(thrinfo->thr_parent_context); @@ -314,20 +333,20 @@ GTM_ThreadCleanup(void *argp) /* * Reset the thread-specific information. This should be done only after we - * are sure that memory contextes are not required + * are sure that memory contextes are not required. * * Note: elog calls need memory contextes, so no elog calls beyond this * point. */ SetMyThreadInfo(NULL); - + return; } /* * A wrapper around the start routine of the thread. This helps us doing any * initialization and setting up cleanup handlers before the main routine is - * started + * started. */ void * GTM_ThreadMainWrapper(void *argp) @@ -338,7 +357,7 @@ GTM_ThreadMainWrapper(void *argp) SetMyThreadInfo(thrinfo); MemoryContextSwitchTo(TopMemoryContext); - + pthread_cleanup_push(GTM_ThreadCleanup, thrinfo); thrinfo->thr_startroutine(thrinfo); pthread_cleanup_pop(1); @@ -370,7 +389,7 @@ GTM_UnlockAllOtherThreads(void) if (GTMThreads->gt_threads[ii] && GTMThreads->gt_threads[ii] != my_threadinfo) GTM_RWLockRelease(>MThreads->gt_threads[ii]->thr_lock); } -} +} void GTM_DoForAllOtherThreads(void (* process_routine)(GTM_ThreadInfo *)) @@ -384,4 +403,3 @@ GTM_DoForAllOtherThreads(void (* process_routine)(GTM_ThreadInfo *)) (process_routine)(GTMThreads->gt_threads[ii]); } } - diff --git a/src/gtm/main/gtm_time.c b/src/gtm/main/gtm_time.c index ea68534d45..584cf6cd29 100644 --- a/src/gtm/main/gtm_time.c +++ b/src/gtm/main/gtm_time.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION diff --git a/src/gtm/main/gtm_txn.c b/src/gtm/main/gtm_txn.c index 61daf78af9..723cb1cb45 100644 --- a/src/gtm/main/gtm_txn.c +++ b/src/gtm/main/gtm_txn.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -39,6 +39,7 @@ static void init_GTM_TransactionInfo(GTM_TransactionInfo *gtm_txninfo, GTM_IsolationLevel isolevel, GTMProxy_ConnID connid, bool readonly); +static void clean_GTM_TransactionInfo(GTM_TransactionInfo *gtm_txninfo); GTM_Transactions GTMTransactions; void @@ -63,14 +64,14 @@ GTM_InitTxnManager(void) * trickier for GTM failures. * * TODO We skip this part for the prototype. - */ + */ GTMTransactions.gt_nextXid = FirstNormalGlobalTransactionId; /* * XXX The gt_oldestXid is the cluster level oldest Xid */ GTMTransactions.gt_oldestXid = FirstNormalGlobalTransactionId; - + /* * XXX Compute various xid limits to avoid wrap-around related database * corruptions. Again, this is not implemented for the prototype @@ -84,7 +85,7 @@ GTM_InitTxnManager(void) * XXX Newest XID that is committed or aborted */ GTMTransactions.gt_latestCompletedXid = FirstNormalGlobalTransactionId; - + /* * Initialize the locks to protect various XID fields as well as the linked * list of transactions @@ -155,7 +156,12 @@ GTM_GXIDToHandle(GlobalTransactionId gxid) if (gtm_txninfo != NULL) return gtm_txninfo->gti_handle; else + { + ereport(WARNING, + (ERANGE, errmsg("No transaction handle for gxid: %d", + gxid))); return InvalidTransactionHandle; + } } /* @@ -259,21 +265,7 @@ GTM_RemoveTransInfoMulti(GTM_TransactionInfo *gtm_txninfo[], int txn_count) /* * Now mark the transaction as aborted and mark the structure as not-in-use */ - gtm_txninfo[ii]->gti_state = GTM_TXN_ABORTED; - gtm_txninfo[ii]->gti_in_use = false; - gtm_txninfo[ii]->gti_snapshot_set = false; - - /* Clean-up also structures that were used for prepared transactions */ - if (gtm_txninfo[ii]->gti_gid) - { - pfree(gtm_txninfo[ii]->gti_gid); - gtm_txninfo[ii]->gti_gid = NULL; - } - if (gtm_txninfo[ii]->nodestring) - { - pfree(gtm_txninfo[ii]->nodestring); - gtm_txninfo[ii]->nodestring = NULL; - } + clean_GTM_TransactionInfo(gtm_txninfo[ii]); } GTM_RWLockRelease(>MTransactions.gt_TransArrayLock); @@ -293,7 +285,7 @@ GTM_RemoveAllTransInfos(int backend_id) GTM_ThreadID thread_id; thread_id = pthread_self(); - + /* * Scan the global list of open transactions */ @@ -328,20 +320,7 @@ GTM_RemoveAllTransInfos(int backend_id) /* * Now mark the transaction as aborted and mark the structure as not-in-use */ - gtm_txninfo->gti_state = GTM_TXN_ABORTED; - gtm_txninfo->gti_in_use = false; - gtm_txninfo->gti_snapshot_set = false; - - if (gtm_txninfo->gti_gid) - { - pfree(gtm_txninfo->gti_gid); - gtm_txninfo->gti_gid = NULL; - } - if (gtm_txninfo->nodestring) - { - pfree(gtm_txninfo->nodestring); - gtm_txninfo->nodestring = NULL; - } + clean_GTM_TransactionInfo(gtm_txninfo); /* move to next cell in the list */ if (prev) @@ -505,6 +484,12 @@ GTM_GetGlobalTransactionIdMulti(GTM_TransactionHandle handle[], int txn_count) GTM_TransactionInfo *gtm_txninfo = NULL; int ii; + if (Recovery_IsStandby()) + { + ereport(ERROR, (EINVAL, errmsg("GTM is running in STANDBY mode -- can not issue new transaction ids"))); + return InvalidGlobalTransactionId; + } + GTM_RWLockAcquire(>MTransactions.gt_XidGenLock, GTM_LOCKMODE_WRITE); if (GTMTransactions.gt_gtm_state == GTM_SHUTTING_DOWN) @@ -571,6 +556,8 @@ GTM_GetGlobalTransactionIdMulti(GTM_TransactionHandle handle[], int txn_count) GlobalTransactionIdAdvance(GTMTransactions.gt_nextXid); gtm_txninfo = GTM_HandleToTransactionInfo(handle[ii]); Assert(gtm_txninfo); + + elog(LOG, "Assigning new transaction ID = %d", xid); gtm_txninfo->gti_gxid = xid; } @@ -599,7 +586,7 @@ ReadNewGlobalTransactionId(void) { GlobalTransactionId xid; - GTM_RWLockAcquire(>MTransactions.gt_XidGenLock, GTM_LOCKMODE_READ); + GTM_RWLockAcquire(>MTransactions.gt_XidGenLock, GTM_LOCKMODE_READ); xid = GTMTransactions.gt_nextXid; GTM_RWLockRelease(>MTransactions.gt_XidGenLock); @@ -613,12 +600,12 @@ ReadNewGlobalTransactionId(void) * started. When the GTM is finally shutdown, the next to-be-assigned GXID is * stroed in the control file. * - * XXX We don't yet handle any crash recovery. So if the GTM is shutdown + * XXX We don't yet handle any crash recovery. So if the GTM is shutdown */ void SetNextGlobalTransactionId(GlobalTransactionId gxid) { - GTM_RWLockAcquire(>MTransactions.gt_XidGenLock, GTM_LOCKMODE_WRITE); + GTM_RWLockAcquire(>MTransactions.gt_XidGenLock, GTM_LOCKMODE_WRITE); GTMTransactions.gt_nextXid = gxid; GTMTransactions.gt_gtm_state = GTM_RUNNING; GTM_RWLockRelease(>MTransactions.gt_XidGenLock); @@ -729,7 +716,7 @@ init_GTM_TransactionInfo(GTM_TransactionInfo *gtm_txninfo, gtm_txninfo->gti_gxid = InvalidGlobalTransactionId; gtm_txninfo->gti_xmin = InvalidGlobalTransactionId; gtm_txninfo->gti_state = GTM_TXN_STARTING; - gtm_txninfo->gti_coordname = pstrdup(coord_name); + gtm_txninfo->gti_coordname = (coord_name ? pstrdup(coord_name) : NULL); gtm_txninfo->gti_isolevel = isolevel; gtm_txninfo->gti_readonly = readonly; @@ -743,7 +730,36 @@ init_GTM_TransactionInfo(GTM_TransactionInfo *gtm_txninfo, gtm_txninfo->gti_vacuum = false; gtm_txninfo->gti_thread_id = pthread_self(); } - + + +/* + * Clean up the TransactionInfo slot and pfree all the palloc'ed memory, + * except txid array of the snapshot, which is reused. + */ +static void +clean_GTM_TransactionInfo(GTM_TransactionInfo *gtm_txninfo) +{ + gtm_txninfo->gti_state = GTM_TXN_ABORTED; + gtm_txninfo->gti_in_use = false; + gtm_txninfo->gti_snapshot_set = false; + + if (gtm_txninfo->gti_coordname) + { + pfree(gtm_txninfo->gti_coordname); + gtm_txninfo->gti_coordname = NULL; + } + if (gtm_txninfo->gti_gid) + { + pfree(gtm_txninfo->gti_gid); + gtm_txninfo->gti_gid = NULL; + } + if (gtm_txninfo->nodestring) + { + pfree(gtm_txninfo->nodestring); + gtm_txninfo->nodestring = NULL; + } +} + void GTM_BkupBeginTransactionMulti(char *coord_name, @@ -809,7 +825,7 @@ GTM_RollbackTransactionMulti(GTM_TransactionHandle txn[], int txn_count, int sta { GTM_TransactionInfo *gtm_txninfo[txn_count]; int ii; - + for (ii = 0; ii < txn_count; ii++) { gtm_txninfo[ii] = GTM_HandleToTransactionInfo(txn[ii]); @@ -864,7 +880,7 @@ GTM_CommitTransactionMulti(GTM_TransactionHandle txn[], int txn_count, int statu { GTM_TransactionInfo *gtm_txninfo[txn_count]; int ii; - + for (ii = 0; ii < txn_count; ii++) { gtm_txninfo[ii] = GTM_HandleToTransactionInfo(txn[ii]); @@ -958,7 +974,7 @@ GTM_StartPreparedTransaction(GTM_TransactionHandle txn, GTM_MAX_NODESTRING_LEN); memcpy(gtm_txninfo->nodestring, nodestring, strlen(nodestring) + 1); - /* It is possible that no datanode is involved in a transaction (Sequence DDL) */ + /* It is possible that no Datanode is involved in a transaction */ if (gtm_txninfo->gti_gid == NULL) gtm_txninfo->gti_gid = (char *)MemoryContextAlloc(TopMostMemoryContext, GTM_MAX_GID_LEN); memcpy(gtm_txninfo->gti_gid, gid, strlen(gid) + 1); @@ -1118,7 +1134,7 @@ ProcessBkupBeginTransactionCommand(Port *myport, StringInfo message) GTM_BkupBeginTransaction("", txn, txn_isolation_level, txn_read_only); MemoryContextSwitchTo(oldContext); -} +} /* * Process MSG_TXN_BEGIN_GETGXID message @@ -1172,7 +1188,7 @@ ProcessBeginTransactionGetGXIDCommand(Port *myport, StringInfo message) elog(LOG, "calling begin_transaction() for standby GTM %p.", GetMyThreadInfo->thr_conn->standby); retry: - bkup_begin_transaction_gxid(GetMyThreadInfo->thr_conn->standby, + bkup_begin_transaction_gxid(GetMyThreadInfo->thr_conn->standby, txn, gxid, txn_isolation_level, txn_read_only, timestamp); if (gtm_standby_check_communication_error(&count, oldconn)) @@ -1181,7 +1197,7 @@ ProcessBeginTransactionGetGXIDCommand(Port *myport, StringInfo message) /* Sync */ if (Backup_synchronously && (myport->remote_type != GTM_NODE_GTM_PROXY)) gtm_sync_standby(GetMyThreadInfo->thr_conn->standby); - + } /* Respond to the client */ pq_beginmessage(&buf, 'S'); @@ -1221,8 +1237,8 @@ GTM_BkupBeginTransactionGetGXIDMulti(char *coord_name, int ii; MemoryContext oldContext; - oldContext = MemoryContextSwitchTo(TopMemoryContext); - GTM_RWLockAcquire(>MTransactions.gt_XidGenLock, GTM_LOCKMODE_WRITE); + oldContext = MemoryContextSwitchTo(TopMostMemoryContext); + GTM_RWLockAcquire(>MTransactions.gt_TransArrayLock, GTM_LOCKMODE_WRITE); for (ii = 0; ii < txn_count; ii++) { @@ -1232,6 +1248,7 @@ GTM_BkupBeginTransactionGetGXIDMulti(char *coord_name, GTM_RWLockRelease(>MTransactions.gt_TransArrayLock); elog(ERROR, "GTM_TransactionInfo already in use. Cannot assign the transaction: handle (%d).", txn[ii]); + MemoryContextSwitchTo(oldContext); return; } init_GTM_TransactionInfo(gtm_txninfo, coord_name, txn[ii], isolevel[ii], connid[ii], readonly[ii]); @@ -1248,7 +1265,7 @@ GTM_BkupBeginTransactionGetGXIDMulti(char *coord_name, } - GTM_RWLockRelease(>MTransactions.gt_XidGenLock); + GTM_RWLockRelease(>MTransactions.gt_TransArrayLock); MemoryContextSwitchTo(oldContext); } @@ -1263,7 +1280,7 @@ GTM_BkupBeginTransactionGetGXID(char *coord_name, GTM_BkupBeginTransactionGetGXIDMulti(coord_name, &txn, &gxid, &isolevel, &readonly, &connid, 1); } - + /* * Process MSG_BKUP_TXN_BEGIN_GETGXID message */ @@ -1318,7 +1335,7 @@ ProcessBeginTransactionGetGXIDAutovacuumCommand(Port *myport, StringInfo message GlobalTransactionId gxid; MemoryContext oldContext; - elog(DEBUG3, "Inside ProcessBeginTransactionGetGXIDAutovacuumCommand"); + elog(LOG, "Inside ProcessBeginTransactionGetGXIDAutovacuumCommand"); txn_isolation_level = pq_getmsgint(message, sizeof (GTM_IsolationLevel)); txn_read_only = pq_getmsgbyte(message); @@ -1347,7 +1364,7 @@ ProcessBeginTransactionGetGXIDAutovacuumCommand(Port *myport, StringInfo message MemoryContextSwitchTo(oldContext); - elog(DEBUG3, "Sending transaction id %d", gxid); + elog(LOG, "Sending transaction id %d", gxid); /* Backup first */ if (GetMyThreadInfo->thr_conn->standby) @@ -1430,9 +1447,9 @@ ProcessBeginTransactionGetGXIDCommandMulti(Port *myport, StringInfo message) /* * Start a new transaction * - * XXX Port should contain Coordinator name - replace "" with that + * XXX Port should contain Coordinator name - replace NULL with that */ - count = GTM_BeginTransactionMulti("", txn_isolation_level, txn_read_only, txn_connid, + count = GTM_BeginTransactionMulti(NULL, txn_isolation_level, txn_read_only, txn_connid, txn_count, txn); if (count != txn_count) ereport(ERROR, @@ -1446,11 +1463,11 @@ ProcessBeginTransactionGetGXIDCommandMulti(Port *myport, StringInfo message) errmsg("Failed to get a new transaction id"))); MemoryContextSwitchTo(oldContext); - + /* GXID has been received, now it's time to get a GTM timestamp */ timestamp = GTM_TimestampGetCurrent(); - end_gxid = start_gxid + txn_count; + end_gxid = start_gxid + (txn_count - 1); if (end_gxid < start_gxid) end_gxid += FirstNormalGlobalTransactionId; @@ -1474,7 +1491,7 @@ ProcessBeginTransactionGetGXIDCommandMulti(Port *myport, StringInfo message) txn_isolation_level, txn_read_only, txn_connid); - + if (gtm_standby_check_communication_error(&count, oldconn)) goto retry; @@ -1522,7 +1539,7 @@ ProcessBkupBeginTransactionGetGXIDCommandMulti(Port *myport, StringInfo message) bool txn_read_only[GTM_MAX_GLOBAL_TRANSACTIONS]; GTMProxy_ConnID txn_connid[GTM_MAX_GLOBAL_TRANSACTIONS]; int ii; - + txn_count = pq_getmsgint(message, sizeof(int)); if (txn_count <= 0) elog(PANIC, "Zero or less transaction count."); @@ -1755,7 +1772,7 @@ ProcessCommitPreparedTransactionCommand(Port *myport, StringInfo message, bool i * For a given GID the following info is returned: * - a fresh GXID, * - GXID of the transaction that made the prepare - * - datanode and coordinator node list involved in the prepare + * - Datanode and Coordinator node list involved in the prepare */ void ProcessGetGIDDataTransactionCommand(Port *myport, StringInfo message) @@ -2005,7 +2022,7 @@ ProcessRollbackTransactionCommand(Port *myport, StringInfo message, bool is_back /* Sync */ if (Backup_synchronously && (myport->remote_type != GTM_NODE_GTM_PROXY)) gtm_sync_standby(GetMyThreadInfo->thr_conn->standby); - + elog(LOG, "abort_transaction() GXID=%d done.", gxid); } /* Respond to the client */ @@ -2104,7 +2121,7 @@ ProcessCommitTransactionCommandMulti(Port *myport, StringInfo message, bool is_b retry: _rc = bkup_commit_transaction_multi(GetMyThreadInfo->thr_conn->standby, txn_count, txn); - + if (gtm_standby_check_communication_error(&count, oldconn)) goto retry; /* Sync */ @@ -2207,7 +2224,7 @@ ProcessRollbackTransactionCommandMulti(Port *myport, StringInfo message, bool is retry: _rc = bkup_abort_transaction_multi(GetMyThreadInfo->thr_conn->standby, txn_count, gxid); - + if (gtm_standby_check_communication_error(&count, oldconn)) goto retry; @@ -2287,7 +2304,7 @@ ProcessStartPreparedTransactionCommand(Port *myport, StringInfo message, bool is gid[gidlen] = '\0'; /* get node string list */ - nodelen = pq_getmsgint(message, sizeof (GTM_StrLen)); + nodelen = pq_getmsgint(message, sizeof (GTM_StrLen)); memcpy(nodestring, (char *)pq_getmsgbytes(message, nodelen), nodelen); nodestring[nodelen] = '\0'; @@ -2448,7 +2465,7 @@ ProcessPrepareTransactionCommand(Port *myport, StringInfo message, bool is_backu } } return; - + } @@ -2616,4 +2633,3 @@ int GTM_GetAllTransactions(GTM_TransactionInfo txninfo[], uint32 txncnt); * TODO */ uint32 GTM_GetAllPrepared(GlobalTransactionId gxids[], uint32 gxidcnt); - diff --git a/src/gtm/main/main.c b/src/gtm/main/main.c index 825a64cf80..065836f43b 100644 --- a/src/gtm/main/main.c +++ b/src/gtm/main/main.c @@ -4,7 +4,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -119,14 +119,14 @@ static void ProcessSyncStandbyCommand(Port *myport, GTM_MessageType mtype, Strin /* * One-time initialization. It's called immediately after the main process * starts - */ + */ static GTM_ThreadInfo * MainThreadInit() { GTM_ThreadInfo *thrinfo; pthread_key_create(&threadinfo_key, NULL); - + /* * Initialize the lock protecting the global threads info */ @@ -223,7 +223,8 @@ GTM_SigleHandler(int signal) break; case SIGUSR1: - PromoteToActive(); + if (Recovery_IsStandby()) + PromoteToActive(); return; default: @@ -248,7 +249,7 @@ GTM_SigleHandler(int signal) } /* - * Help display should match + * Help display should match */ static void help(const char *progname) @@ -263,6 +264,7 @@ help(const char *progname) printf(_(" -D directory GTM working directory\n")); printf(_(" -l filename GTM server log file name \n")); printf(_(" -c show server status, then exit\n")); + printf(_(" -V, --version output version information, then exit\n")); printf(_(" --help show this help, then exit\n")); printf(_("\n")); printf(_("Options for Standby mode:\n")); @@ -320,7 +322,7 @@ main(int argc, char *argv[]) char *is_standby_mode = NULL; char *dest_addr = NULL; char *dest_port = NULL; - + isStartUp = true; /* @@ -337,11 +339,16 @@ main(int argc, char *argv[]) help(argv[0]); exit(0); } + if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0) + { + puts("gtm (Postgres-XC) " PGXC_VERSION); + exit(0); + } } ListenAddresses = strdup(GTM_DEFAULT_HOSTNAME); GTMPortNumber = GTM_DEFAULT_PORT; - + /* * Parse the command like options and set variables */ @@ -405,7 +412,7 @@ main(int argc, char *argv[]) free(dest_port); dest_port = strdup(optarg); break; - + default: write_stderr("Try \"%s --help\" for more information.\n", progname); @@ -446,7 +453,7 @@ main(int argc, char *argv[]) } if (listen_addresses) { - SetConfigOption(GTM_OPTNAME_LISTEN_ADDRESSES, + SetConfigOption(GTM_OPTNAME_LISTEN_ADDRESSES, listen_addresses, GTMC_STARTUP, GTMC_S_OVERRIDE); free(listen_addresses); listen_addresses = NULL; @@ -634,9 +641,15 @@ main(int argc, char *argv[]) { int success = 0; + if (strcmp(ListenAddresses, "*") == 0) + status = StreamServerPort(AF_UNSPEC, NULL, + (unsigned short) GTMPortNumber, + ListenSocket, MAXLISTEN); + else status = StreamServerPort(AF_UNSPEC, ListenAddresses, (unsigned short) GTMPortNumber, ListenSocket, MAXLISTEN); + if (status == STATUS_OK) success++; else @@ -667,7 +680,7 @@ main(int argc, char *argv[]) pqsignal(SIGUSR1, GTM_SigleHandler); pqinitmask(); - + /* * Now, activating a standby GTM... */ @@ -755,7 +768,7 @@ ServerLoop(void) int selres; //MemoryContextStats(TopMostMemoryContext); - + /* * Wait for a connection request to arrive. * @@ -821,7 +834,7 @@ ServerLoop(void) timeout.tv_sec = 60; timeout.tv_usec = 0; - /* + /* * Now GTM-Standby can backup current status during this region */ GTM_RWLockRelease(&my_threadinfo->thr_lock); @@ -875,7 +888,7 @@ ServerLoop(void) GTM_Conn *standby = NULL; standby = gtm_standby_connect_to_standby(); - + if (GTMAddConnection(port, standby) != STATUS_OK) { @@ -931,7 +944,7 @@ GTM_ThreadMain(void *argp) sigjmp_buf local_sigjmp_buf; elog(DEBUG3, "Starting the connection helper thread"); - + /* * Create the memory context we will use in the main loop. @@ -957,7 +970,7 @@ GTM_ThreadMain(void *argp) { /* * We expect a startup message at the very start. The message type is - * REGISTER_COORD, followed by the 4 byte coordinator ID + * REGISTER_COORD, followed by the 4 byte Coordinator ID */ char startup_type; GTM_StartupPacket sp; @@ -972,7 +985,7 @@ GTM_ThreadMain(void *argp) startup_type))); initStringInfo(&inBuf); - + /* * All frontend messages have a length word next * after the type code; we can read the message contents independently of @@ -1038,7 +1051,7 @@ GTM_ThreadMain(void *argp) * should be stuff that is guaranteed to apply *only* for outer-level * error recovery, such as adjusting the FE/BE protocol status. */ - + /* Report the error to the client and/or server log */ if (thrinfo->thr_conn) EmitErrorReport(thrinfo->thr_conn->con_port); @@ -1111,20 +1124,21 @@ GTM_ThreadMain(void *argp) case 'C': ProcessCommand(thrinfo->thr_conn->con_port, &input_message); break; - + case 'X': case EOF: /* * Connection termination request - * Remove all transactions opened within the thread + * Remove all transactions opened within the thread */ GTM_RemoveAllTransInfos(-1); /* Disconnect node if necessary */ Recovery_PGXCNodeDisconnect(thrinfo->thr_conn->con_port); + GTM_RWLockRelease(&thrinfo->thr_lock); pthread_exit(thrinfo); break; - + case 'F': /* * Flush all the outgoing data on the wire. Consume the message @@ -1145,7 +1159,7 @@ GTM_ThreadMain(void *argp) default: /* - * Remove all transactions opened within the thread + * Remove all transactions opened within the thread */ GTM_RemoveAllTransInfos(-1); @@ -1158,7 +1172,7 @@ GTM_ThreadMain(void *argp) qtype))); break; } - + } /* can't get here because the above loop never exits */ @@ -1181,7 +1195,7 @@ ProcessCommand(Port *myport, StringInfo input_message) myport->conn_id = proxyhdr.ph_conid; mtype = pq_getmsgint(input_message, sizeof (GTM_MessageType)); - /* + /* * The next line will have some overhead. Better to be in * compile option. */ @@ -1246,7 +1260,6 @@ ProcessCommand(Port *myport, StringInfo input_message) case MSG_SEQUENCE_INIT: case MSG_BKUP_SEQUENCE_INIT: - case MSG_SEQUENCE_GET_CURRENT: case MSG_SEQUENCE_GET_NEXT: case MSG_BKUP_SEQUENCE_GET_NEXT: case MSG_SEQUENCE_GET_LAST: @@ -1614,10 +1627,6 @@ ProcessSequenceCommand(Port *myport, GTM_MessageType mtype, StringInfo message) ProcessSequenceAlterCommand(myport, message, true); break; - case MSG_SEQUENCE_GET_CURRENT: - ProcessSequenceGetCurrentCommand(myport, message); - break; - case MSG_SEQUENCE_GET_NEXT: ProcessSequenceGetNextCommand(myport, message, false); break; @@ -1687,7 +1696,7 @@ static void GTM_RegisterPGXCNode(Port *myport, char *PGXCNodeName) { elog(DEBUG3, "Registering coordinator with name %s", PGXCNodeName); - myport->node_name = strdup(PGXCNodeName); + myport->node_name = pstrdup(PGXCNodeName); } /* @@ -2020,6 +2029,9 @@ DeleteLockFile(const char *filename) static void PromoteToActive(void) { + const char *conf_file; + FILE *fp; + elog(LOG, "Promote signal received. Becoming an active..."); /* @@ -2028,5 +2040,34 @@ PromoteToActive(void) Recovery_StandbySetStandby(false); CreateDataDirLockFile(); + /* + * Update the GTM config file for the next restart.. + */ + conf_file = GetConfigOption("config_file", true); + elog(LOG, "Config file is %s...", conf_file); + if ((fp = fopen(conf_file, PG_BINARY_A)) == NULL) + { + ereport(FATAL, + (EINVAL, + errmsg("could not open GTM configuration file \"%s\": %m", + conf_file))); + + } + else + { + time_t stamp_time = (time_t) time(NULL); + char strfbuf[128]; + + strftime(strfbuf, sizeof(strfbuf), + "%Y-%m-%d %H:%M:%S %Z", + localtime(&stamp_time)); + + fprintf(fp, "#===================================================\n# Updated due to GTM promote request\n# %s\nstartup = ACT\n#===================================================\n", strfbuf); + if (fclose(fp)) + ereport(FATAL, + (EINVAL, + errmsg("could not close GTM configuration file \"%s\": %m", + conf_file))); + } return; } diff --git a/src/gtm/path/Makefile b/src/gtm/path/Makefile index aa6c761288..c105791e81 100644 --- a/src/gtm/path/Makefile +++ b/src/gtm/path/Makefile @@ -1,3 +1,12 @@ +#---------------------------------------------------------------------------- +# +# Postgres-XC GTM path makefile +# +# Copyright (c) 2010-2013, Postgres-XC Development Group +# +# src/gtm/path/Makefile +# +#----------------------------------------------------------------------------- top_builddir=../../.. include $(top_builddir)/src/Makefile.global subdir=src/gtm/path @@ -10,11 +19,11 @@ OBJS=path.o all:all-lib -include $(top_builddir)/src/Makefile.shlib +include $(top_srcdir)/src/Makefile.shlib clean: rm -f $(OBJS) - rm -f libgtmpath.so libgtmpath.so.1 libgtmpath.so.1.0 + rm -f libgtmpath.a libgtmpath.so libgtmpath.so.1 libgtmpath.so.1.0 distclean: clean diff --git a/src/gtm/path/path.c b/src/gtm/path/path.c index aafbabace2..9ef3f46f12 100644 --- a/src/gtm/path/path.c +++ b/src/gtm/path/path.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -299,4 +299,3 @@ join_path_components(char *ret_path, snprintf(ret_path + strlen(ret_path), MAXPGPATH - strlen(ret_path), "/%s", tail); } - diff --git a/src/gtm/proxy/.gitignore b/src/gtm/proxy/.gitignore new file mode 100644 index 0000000000..c628675b1b --- /dev/null +++ b/src/gtm/proxy/.gitignore @@ -0,0 +1 @@ +/gtm_proxy diff --git a/src/gtm/proxy/Makefile b/src/gtm/proxy/Makefile index 7d319a609d..952d55a04f 100644 --- a/src/gtm/proxy/Makefile +++ b/src/gtm/proxy/Makefile @@ -1,7 +1,15 @@ -# Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation - +#---------------------------------------------------------------------------- +# +# Postgres-XC GTM proxy Makefile +# +# Copyright (c) 2010-2013, Postgres-XC Development Group +# +# src/gtm/proxy/Makefile +# +#----------------------------------------------------------------------------- top_builddir=../../.. include $(top_builddir)/src/Makefile.global +subdir=src/gtm/proxy ifneq ($(PORTNAME), win32) override CFLAGS += $(PTHREAD_CFLAGS) diff --git a/src/gtm/proxy/gtm_proxy_opt.c b/src/gtm/proxy/gtm_proxy_opt.c index 7a6199a219..df3f317eb7 100644 --- a/src/gtm/proxy/gtm_proxy_opt.c +++ b/src/gtm/proxy/gtm_proxy_opt.c @@ -8,7 +8,7 @@ * * * Copyright (c) 2000-2011, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * Written by Peter Eisentraut . * * IDENTIFICATION @@ -169,7 +169,7 @@ struct config_int ConfigureNamesInt[] = 0 }, >MProxyPortNumber, - 0, 0, INT_MAX, + 6666, 0, INT_MAX, 0, NULL }, { @@ -180,7 +180,7 @@ struct config_int ConfigureNamesInt[] = 0 }, >MServerPortNumber, - 0, 0, INT_MAX, + 6666, 0, INT_MAX, 0, NULL }, { @@ -191,7 +191,7 @@ struct config_int ConfigureNamesInt[] = 0 }, >MConnectRetryCount, - 0, 0, INT_MAX, + 10000, 0, INT_MAX, 0, NULL }, { @@ -214,7 +214,7 @@ struct config_int ConfigureNamesInt[] = GTMOPT_UNIT_TIME }, >MConnectRetryInterval, - 0, 0, INT_MAX, + 1, 0, INT_MAX, 0, NULL }, { @@ -243,7 +243,7 @@ struct config_int ConfigureNamesInt[] = { GTM_OPTNAME_KEEPALIVES_COUNT, GTMC_STARTUP, gettext_noop("Sets \"keepalives_count\" option to the connection to GTM."), - NULL, + NULL, 0 }, &tcp_keepalives_count, @@ -349,7 +349,7 @@ struct config_string ConfigureNamesString[] = 0 }, &ListenAddresses, - NULL, + "*", NULL, NULL }, diff --git a/src/gtm/proxy/proxy_main.c b/src/gtm/proxy/proxy_main.c index b1b3f8d33b..a7d75e0597 100644 --- a/src/gtm/proxy/proxy_main.c +++ b/src/gtm/proxy/proxy_main.c @@ -4,7 +4,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -185,7 +185,7 @@ static void SetDataDir(void); static void ChangeToDataDir(void); static void checkDataDir(void); static void DeleteLockFile(const char *filename); -static void RegisterProxy(bool is_reconnect); +static void RegisterProxy(bool is_reconnect, bool is_retry); static void UnregisterProxy(void); static GTM_Conn *ConnectGTM(void); static void ReleaseCmdBackup(GTMProxy_CommandInfo *cmdinfo); @@ -194,14 +194,14 @@ static void workerThreadReconnectToGTM(void); /* * One-time initialization. It's called immediately after the main process * starts - */ + */ static GTMProxy_ThreadInfo * MainThreadInit() { GTMProxy_ThreadInfo *thrinfo; pthread_key_create(&threadinfo_key, NULL); - + /* * Initialize the lock protecting the global threads info */ @@ -268,7 +268,7 @@ BaseInit() Recovery_SaveRegisterFileName(GTMProxyDataDir); /* Register Proxy on GTM */ - RegisterProxy(false); + RegisterProxy(false, false); DebugFileOpen(); @@ -541,7 +541,7 @@ GTMProxy_SigleHandler(int signal) } /* - * Help display should match + * Help display should match */ static void help(const char *progname) @@ -557,6 +557,7 @@ help(const char *progname) printf(_(" -n count Number of worker threads\n")); printf(_(" -D directory GTM proxy working directory\n")); printf(_(" -l filename GTM proxy log file name \n")); + printf(_(" -V, --version output version information, then exit\n")); printf(_(" --help show this help, then exit\n")); } @@ -599,11 +600,14 @@ main(int argc, char *argv[]) help(argv[0]); exit(0); } + if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0) + { + puts("gtm_proxy (Postgres-XC) " PGXC_VERSION); + exit(0); + } } -/* ListenAddresses = strdup(GTM_PROXY_DEFAULT_HOSTNAME); -*/ GTMProxyPortNumber = GTM_PROXY_DEFAULT_PORT; GTMProxyWorkerThreads = GTM_PROXY_DEFAULT_WORKERS; @@ -702,7 +706,7 @@ main(int argc, char *argv[]) * Setup configuration file */ if (!SelectConfigFiles(data_dir, progname)) - exit(1); + exit(1); /* * Parse config file @@ -850,9 +854,15 @@ main(int argc, char *argv[]) { int success = 0; + if (strcmp(ListenAddresses, "*") == 0) + status = StreamServerPort(AF_UNSPEC, NULL, + (unsigned short) GTMProxyPortNumber, + ListenSocket, MAXLISTEN); + else status = StreamServerPort(AF_UNSPEC, ListenAddresses, (unsigned short) GTMProxyPortNumber, ListenSocket, MAXLISTEN); + if (status == STATUS_OK) success++; else @@ -988,7 +998,7 @@ ServerLoop(void) */ elog(LOG, "Main Thread reconnecting to new GTM."); - RegisterProxy(TRUE); + RegisterProxy(TRUE, false); elog(LOG, "Reconnected."); /* If it is done, then release the lock for worker threads. */ @@ -1014,7 +1024,7 @@ ServerLoop(void) { /* * Tell everybody that we are shutting down - * + * * !! TODO */ exit(1); @@ -1120,6 +1130,7 @@ GTMProxy_ThreadMain(void *argp) int ii, nrfds; char gtm_connect_string[1024]; int first_turn = TRUE; /* Used only to set longjmp target at the first turn of thread loop */ + GTMProxy_CommandData cmd_data = {}; elog(DEBUG3, "Starting the connection helper thread"); @@ -1312,13 +1323,13 @@ GTMProxy_ThreadMain(void *argp) /* * Detect if the connection has been dropped to avoid - * a segmentation fault. + * a segmentation fault. */ if (conninfo->con_port == NULL) { conninfo->con_disconnected = true; continue; - } + } /* * If this is a newly added connection, complete the handshake @@ -1381,7 +1392,6 @@ GTMProxy_ThreadMain(void *argp) /* * Correction of pending works. */ - thrinfo->thr_processed_commands = gtm_NIL; for (ii = 0; ii < MSG_TYPE_COUNT; ii++) { thrinfo->thr_pending_commands[ii] = gtm_NIL; @@ -1403,7 +1413,7 @@ GTMProxy_ThreadMain(void *argp) * handle any memory leaks */ resetStringInfo(&input_message); - + /* * Now, read command from each of the connections that has some data to * be read. @@ -1420,7 +1430,8 @@ GTMProxy_ThreadMain(void *argp) * to the remove_list and cleanup at the end of this round of * cleanup. */ - GTMProxy_HandleDisconnect(thrinfo->thr_conn, thrinfo->thr_gtm_conn); + GTMProxy_CommandPending(thrinfo->thr_conn, + MSG_BACKEND_DISCONNECT, cmd_data); continue; } @@ -1454,7 +1465,8 @@ GTMProxy_ThreadMain(void *argp) * to the server to quickly find the backend connection * while processing proxied messages. */ - GTMProxy_HandleDisconnect(thrinfo->thr_conn, thrinfo->thr_gtm_conn); + GTMProxy_CommandPending(thrinfo->thr_conn, + MSG_BACKEND_DISCONNECT, cmd_data); break; default: /* @@ -1500,6 +1512,9 @@ GTMProxy_ThreadMain(void *argp) { GTMProxy_CommandInfo *cmdinfo = (GTMProxy_CommandInfo *)gtm_lfirst(elem); + GTMProxy_ConnectionInfo *conninfo = thrinfo->thr_all_conns[ii]; + thrinfo->thr_conn = conninfo; + /* * If this is a continuation of a multi-part command response, we * don't need to read another result from the stream. The previous @@ -1553,8 +1568,6 @@ GTMProxy_ThreadMain(void *argp) /* can't get here because the above loop never exits */ Assert(false); - - return thrinfo; } /* @@ -1574,7 +1587,7 @@ GTMProxyAddConnection(Port *port) errmsg("Out of memory"))); return STATUS_ERROR; } - + elog(DEBUG3, "Started new connection"); conninfo->con_port = port; @@ -1620,7 +1633,6 @@ ProcessCommand(GTMProxy_ConnectionInfo *conninfo, GTM_Conn *gtm_conn, break; case MSG_SEQUENCE_INIT: - case MSG_SEQUENCE_GET_CURRENT: case MSG_SEQUENCE_GET_NEXT: case MSG_SEQUENCE_GET_LAST: case MSG_SEQUENCE_SET_VAL: @@ -1675,7 +1687,7 @@ HandleGTMError(GTM_Conn *gtm_conn) int ii; char gtm_connect_string[1024]; - elog(NOTICE, + elog(NOTICE, "GTM communication error was detected. Retrying connection. idle: %d, count = %d, interval = %d.", GTMConnectRetryIdle, GTMConnectRetryCount, GTMConnectRetryInterval); GTMPQfinish(gtm_conn); @@ -1689,8 +1701,8 @@ HandleGTMError(GTM_Conn *gtm_conn) /* GTM connection retry */ for (ii = 0; ii < GTMConnectRetryCount; ii++) { - /* - * Connect retry + /* + * Connect retry * Because this proxy has been registered to current * GTM, we don't re-register it. * @@ -1724,7 +1736,7 @@ HandleGTMError(GTM_Conn *gtm_conn) * GTM communication error detected, retry failed * but cannot wait for reconnect. */ - elog(FATAL, + elog(FATAL, "No action specified to wait for reconnect."); exit(1); /* Just in case */ } @@ -1738,8 +1750,8 @@ HandleGTMError(GTM_Conn *gtm_conn) * * For details, see gtm_proxy.h. */ - elog(NOTICE, - "Waiting for reconnect action from gtm_ctl. idie: %d, count: %d, interval:%d", + elog(NOTICE, + "Waiting for reconnect action from gtm_ctl. idie: %d, count: %d, interval:%d", GTMErrorWaitIdle, GTMErrorWaitCount, GTMErrorWaitInterval); Disable_Longjmp(); elog(DEBUG1, "Witing %d secs.", GTMErrorWaitIdle); @@ -1867,6 +1879,7 @@ ProcessResponse(GTMProxy_ThreadInfo *thrinfo, GTMProxy_CommandInfo *cmdinfo, pq_beginmessage(&buf, 'S'); pq_sendint(&buf, TXN_COMMIT_RESULT, 4); pq_sendbytes(&buf, (char *)&cmdinfo->ci_data.cd_rc.gxid, sizeof (GlobalTransactionId)); + pq_sendint(&buf, STATUS_OK, sizeof (int)); pq_endmessage(cmdinfo->ci_conn->con_port, &buf); pq_flush(cmdinfo->ci_conn->con_port); } @@ -1901,6 +1914,7 @@ ProcessResponse(GTMProxy_ThreadInfo *thrinfo, GTMProxy_CommandInfo *cmdinfo, pq_beginmessage(&buf, 'S'); pq_sendint(&buf, TXN_ROLLBACK_RESULT, 4); pq_sendbytes(&buf, (char *)&cmdinfo->ci_data.cd_rc.gxid, sizeof (GlobalTransactionId)); + pq_sendint(&buf, STATUS_OK, sizeof (int)); pq_endmessage(cmdinfo->ci_conn->con_port, &buf); pq_flush(cmdinfo->ci_conn->con_port); } @@ -1967,7 +1981,6 @@ ProcessResponse(GTMProxy_ThreadInfo *thrinfo, GTMProxy_CommandInfo *cmdinfo, case MSG_NODE_UNREGISTER: case MSG_SNAPSHOT_GXID_GET: case MSG_SEQUENCE_INIT: - case MSG_SEQUENCE_GET_CURRENT: case MSG_SEQUENCE_GET_NEXT: case MSG_SEQUENCE_GET_LAST: case MSG_SEQUENCE_SET_VAL: @@ -1989,7 +2002,7 @@ ProcessResponse(GTMProxy_ThreadInfo *thrinfo, GTMProxy_CommandInfo *cmdinfo, * * !!TODO As we start adding support for message grouping for * messages, those message types would be removed from the above - * and handled separately. + * and handled separately. */ switch (res->gr_status) { @@ -2036,7 +2049,7 @@ ReadCommand(GTMProxy_ConnectionInfo *conninfo, StringInfo inBuf) int anyBackup; anyBackup = (GetMyThreadInfo->thr_any_backup[connIdx] ? TRUE : FALSE); - + /* * Get message type code from the frontend. */ @@ -2105,9 +2118,9 @@ ReadCommand(GTMProxy_ConnectionInfo *conninfo, StringInfo inBuf) copyStringInfo(&(GetMyThreadInfo->thr_inBufData[connIdx]), inBuf); - /* + /* * The next line is added because we added the code to clear backup - * when the response is processed. + * when the response is processed. */ GetMyThreadInfo->thr_any_backup[connIdx] = TRUE; } @@ -2307,7 +2320,7 @@ ProcessTransactionCommand(GTMProxy_ConnectionInfo *conninfo, GTM_Conn *gtm_conn, GTMProxy_CommandPending(conninfo, mtype, cmd_data); break; - case MSG_TXN_BEGIN: + case MSG_TXN_BEGIN: case MSG_TXN_GET_GXID: elog(FATAL, "Support not yet added for these message types"); break; @@ -2387,7 +2400,7 @@ ProcessSequenceCommand(GTMProxy_ConnectionInfo *conninfo, GTM_Conn *gtm_conn, * * Write the message, but don't flush it just yet. */ - return GTMProxy_ProxyCommand(conninfo, gtm_conn, mtype, message); + GTMProxy_ProxyCommand(conninfo, gtm_conn, mtype, message); } /* @@ -2573,7 +2586,7 @@ GTMProxy_HandshakeConnection(GTMProxy_ConnectionInfo *conninfo) startup_type))); initStringInfo(&inBuf); - + /* * All frontend messages have a length word next * after the type code; we can read the message contents independently of @@ -2614,6 +2627,7 @@ GTMProxy_HandleDisconnect(GTMProxy_ConnectionInfo *conninfo, GTM_Conn *gtm_conn) Recovery_PGXCNodeDisconnect(conninfo->con_port); /* Start the message. */ + proxyhdr.ph_conid = conninfo->con_id; if (gtmpqPutMsgStart('C', true, gtm_conn) || gtmpqPutnchar((char *)&proxyhdr, sizeof (GTM_ProxyMsgHeader), gtm_conn) || gtmpqPutInt(MSG_BACKEND_DISCONNECT, sizeof (GTM_MessageType), gtm_conn) || @@ -2664,7 +2678,9 @@ GTMProxy_ProcessPendingCommands(GTMProxy_ThreadInfo *thrinfo) { int res_index = 0; - if (gtm_list_length(thrinfo->thr_pending_commands[ii]) == 0) + /* We process backend disconnects last! */ + if (ii == MSG_BACKEND_DISCONNECT || + gtm_list_length(thrinfo->thr_pending_commands[ii]) == 0) continue; /* @@ -2839,7 +2855,15 @@ GTMProxy_ProcessPendingCommands(GTMProxy_ThreadInfo *thrinfo) default: elog(ERROR, "This message type (%d) can not be grouped together", ii); } - + } + /* Process backend disconnect messages now */ + gtm_foreach (elem, thrinfo->thr_pending_commands[MSG_BACKEND_DISCONNECT]) + { + ereport(COMMERROR, + (EPROTO, + errmsg("cleaning up client disconnection"))); + cmdinfo = (GTMProxy_CommandInfo *)gtm_lfirst(elem); + GTMProxy_HandleDisconnect(cmdinfo->ci_conn, gtm_conn); } } @@ -3224,18 +3248,18 @@ UnregisterProxy(void) return; failed: - return elog(ERROR, "can not Unregister Proxy on GTM"); + elog(ERROR, "can not Unregister Proxy on GTM"); } /* * Register Proxy on GTM * * If reconnect is specified, then existing connection is closed - * and the target GTM is taken from NewGTMServerHost and + * and the target GTM is taken from NewGTMServerHost and * NewGTMServerPortNumber. */ static void -RegisterProxy(bool is_reconnect) +RegisterProxy(bool is_reconnect, bool is_retry) { GTM_PGXCNodeType type = GTM_NODE_GTM_PROXY; GTM_PGXCNodePort port = (GTM_PGXCNodePort) GTMProxyPortNumber; @@ -3321,7 +3345,14 @@ RegisterProxy(bool is_reconnect) return; failed: - elog(ERROR, "can not register Proxy on GTM"); + if (!is_retry) + { + elog(NOTICE, "could not register Proxy on GTM. Trying to unregister myself and then retry."); + UnregisterProxy(); + RegisterProxy(is_reconnect, true); + } + else + elog(ERROR, "can not register Proxy on GTM"); } static GTM_Conn* @@ -3366,6 +3397,7 @@ static void workerThreadReconnectToGTM(void) { char gtm_connect_string[1024]; + MemoryContext oldContext; /* * First of all, we should acquire reconnect control lock in READ mode @@ -3376,8 +3408,15 @@ workerThreadReconnectToGTM(void) PG_SETMASK(&UnBlockSig); /* Disconnect the current connection and re-connect to the new GTM */ - if (GetMyThreadInfo->thr_gtm_conn) - GTMPQfinish(GetMyThreadInfo->thr_gtm_conn); + /* + * Because some error is expected, it is harmful to close GTM connection in + * normal way. Instead, just close the socket to save kernel resource. + */ + oldContext = MemoryContextSwitchTo(TopMostMemoryContext); + + if (GetMyThreadInfo->thr_gtm_conn->sock != -1) + StreamClose(GetMyThreadInfo->thr_gtm_conn->sock); + sprintf(gtm_connect_string, "host=%s port=%d node_name=%s remote_type=%d", GTMServerHost, GTMServerPortNumber, GTMProxyNodeName, GTM_NODE_GTM_PROXY); elog(LOG, "Worker thread connecting to %s", gtm_connect_string); @@ -3387,6 +3426,8 @@ workerThreadReconnectToGTM(void) elog(FATAL, "Worker thread GTM connection failed."); elog(LOG, "Worker thread connection done."); + MemoryContextSwitchTo(oldContext); + /* Set GTM communication error handling option */ GetMyThreadInfo->thr_gtm_conn->gtmErrorWaitIdle = GTMErrorWaitIdle; GetMyThreadInfo->thr_gtm_conn->gtmErrorWaitInterval = GTMErrorWaitInterval; diff --git a/src/gtm/proxy/proxy_thread.c b/src/gtm/proxy/proxy_thread.c index 21b4d195d6..fb97e4d7bb 100644 --- a/src/gtm/proxy/proxy_thread.c +++ b/src/gtm/proxy/proxy_thread.c @@ -4,7 +4,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -25,7 +25,7 @@ GTMProxy_Threads *GTMProxyThreads = >MProxyThreadsData; #define GTM_PROXY_MIN_THREADS 32 /* Provision for minimum threads */ #define GTM_PROXY_MAX_THREADS 1024 /* Max threads allowed in the GTMProxy */ -#define GTMProxyThreadsFull (GTMProxyThreads->gt_thread_count == GTMProxyThreads->gt_array_size) +#define GTMProxyThreadsFull (GTMProxyThreads->gt_thread_count == GTMProxyThreads->gt_array_size) extern int GTMProxyWorkerThreads; extern GTMProxy_ThreadInfo **Proxy_ThreadInfo; @@ -45,10 +45,10 @@ GTMProxy_ThreadAdd(GTMProxy_ThreadInfo *thrinfo) { GTMProxy_ThreadInfo **threads; uint32 newsize; - + /* * TODO Optimize lock management by not holding any locks during memory - * allocation + * allocation */ if (GTMProxyThreads->gt_array_size == GTM_PROXY_MAX_THREADS) elog(ERROR, "Too many threads active"); @@ -102,7 +102,7 @@ GTMProxy_ThreadAdd(GTMProxy_ThreadInfo *thrinfo) } GTM_RWLockRelease(>MProxyThreads->gt_lock); - /* + /* * Track the slot information in the thrinfo. This is useful to quickly * find the slot given the thrinfo structure. */ @@ -287,13 +287,13 @@ GTMProxy_ThreadCleanup(void *argp) /* * Reset the thread-specific information. This should be done only after we - * are sure that memory contextes are not required + * are sure that memory contextes are not required * * Note: elog calls need memory contextes, so no elog calls beyond this * point. */ SetMyThreadInfo(NULL); - + return; } @@ -311,7 +311,7 @@ GTMProxy_ThreadMainWrapper(void *argp) SetMyThreadInfo(thrinfo); MemoryContextSwitchTo(TopMemoryContext); - + pthread_cleanup_push(GTMProxy_ThreadCleanup, thrinfo); thrinfo->thr_startroutine(thrinfo); pthread_cleanup_pop(1); @@ -353,7 +353,7 @@ GTMProxy_ThreadAddConnection(GTMProxy_ConnectionInfo *conninfo) if (GTMProxyThreads->gt_next_worker == GTMProxyThreads->gt_thread_count) GTMProxyThreads->gt_next_worker = 1; - GTM_RWLockRelease(>MProxyThreads->gt_lock); + GTM_RWLockRelease(>MProxyThreads->gt_lock); /* * Lock the threadninfo structure to safely add the new connection to the @@ -361,7 +361,7 @@ GTMProxy_ThreadAddConnection(GTMProxy_ConnectionInfo *conninfo) * socket descriptor in the next cycle */ GTM_MutexLockAcquire(&thrinfo->thr_lock); - + if (thrinfo->thr_conn_count >= GTM_PROXY_MAX_CONNECTIONS) { GTM_MutexLockRelease(&thrinfo->thr_lock); @@ -412,7 +412,7 @@ GTMProxy_ThreadRemoveConnection(GTMProxy_ThreadInfo *thrinfo, GTMProxy_Connectio * thread structure. */ GTM_MutexLockAcquire(&thrinfo->thr_lock); - + for (ii = 0; ii < thrinfo->thr_conn_count; ii++) { if (thrinfo->thr_all_conns[ii] == conninfo) @@ -455,7 +455,7 @@ GTMProxy_ThreadRemoveConnection(GTMProxy_ThreadInfo *thrinfo, GTMProxy_Connectio thrinfo->thr_conn_count--; - /* + /* * Increment the seqno to ensure that the next time before we poll, the fd * array is reconstructed. */ diff --git a/src/gtm/proxy/proxy_utils.c b/src/gtm/proxy/proxy_utils.c index 75e33056d5..4255b0aaa3 100644 --- a/src/gtm/proxy/proxy_utils.c +++ b/src/gtm/proxy/proxy_utils.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/gtm/proxy/proxy_utils.c * @@ -40,7 +40,7 @@ * gtm.h and gtm_proxy.h and depends on the context. * * This is the reason why this dummy function is needed here. - * + * * The object and module structure of GTM/GTM Proxy needs review, and * fix to remove this kind of tricks. */ diff --git a/src/gtm/recovery/Makefile b/src/gtm/recovery/Makefile index 6dd88a1545..4724ce78d5 100644 --- a/src/gtm/recovery/Makefile +++ b/src/gtm/recovery/Makefile @@ -1,8 +1,15 @@ -# Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation - +#---------------------------------------------------------------------------- +# +# Postgres-XC GTM recovery makefile +# +# Copyright (c) 2010-2013, Postgres-XC Development Group +# +# src/gtm/recovery/Makefile +# +#----------------------------------------------------------------------------- top_builddir=../../.. include $(top_builddir)/src/Makefile.global - +subdir=src/gtm/recovery NAME=gtmrecovery SO_MAJOR_VERSION= 1 @@ -14,7 +21,7 @@ OTHERS=../client/libgtmclient.a all:all-lib -include $(top_builddir)/src/Makefile.shlib +include $(top_srcdir)/src/Makefile.shlib clean: rm -f $(OBJS) diff --git a/src/gtm/recovery/register_common.c b/src/gtm/recovery/register_common.c index f87562d658..ada518a5ed 100644 --- a/src/gtm/recovery/register_common.c +++ b/src/gtm/recovery/register_common.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -48,7 +48,7 @@ static char GTMPGXCNodeFile[GTM_NODE_FILE_MAX_PATH]; static GTM_RWLock RegisterFileLock; static int NodeRegisterMagic = 0xeaeaeaea; -static int NodeUnregisterMagic = 0xebebebeb; +static int NodeUnregisterMagic = 0xebebebeb; static int NodeEndMagic = 0xefefefef; static GTM_PGXCNodeInfoHashBucket GTM_PGXCNodes[NODE_HASH_TABLE_SIZE]; @@ -862,4 +862,3 @@ ProcessPGXCNodeBackendDisconnect(Port *myport, StringInfo message) elog(LOG, "MSG_BACKEND_DISCONNECT rc=%d done.", _rc); } } - diff --git a/src/gtm/recovery/register_gtm.c b/src/gtm/recovery/register_gtm.c index 5607a6b590..0d6984d022 100644 --- a/src/gtm/recovery/register_gtm.c +++ b/src/gtm/recovery/register_gtm.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION @@ -96,7 +96,7 @@ ProcessPGXCNodeRegister(Port *myport, StringInfo message, bool is_backup) memcpy(datafolder, (char *)pq_getmsgbytes(message, len), len); datafolder[len] = '\0'; - elog(LOG, + elog(LOG, "ProcessPGXCNodeRegister: ipaddress = \"%s\", node name = \"%s\", proxy name = \"%s\", " "datafolder \"%s\"", ipaddress, node_name, proxyname, datafolder); @@ -131,7 +131,7 @@ ProcessPGXCNodeRegister(Port *myport, StringInfo message, bool is_backup) elog(DEBUG1, "Registering GTM (Standby). Unregister this first."); /* * There's another standby. May be failed one. - * Clean this up. This means that we allow + * Clean this up. This means that we allow * only one standby at the same time. * * This helps to give up failed standby and connect @@ -139,8 +139,7 @@ ProcessPGXCNodeRegister(Port *myport, StringInfo message, bool is_backup) * * Be sure that all ther threads are locked by other * means, typically by receiving MSG_BEGIN_BACKUP. - */ - /* + * * First try to unregister GTM which is now connected. We don't care * if it failed. */ @@ -300,13 +299,13 @@ ProcessPGXCNodeUnregister(Port *myport, StringInfo message, bool is_backup) elog(LOG, "calling node_unregister() for standby GTM %p.", GetMyThreadInfo->thr_conn->standby); - + retry: _rc = bkup_node_unregister(GetMyThreadInfo->thr_conn->standby, type, node_name); - + if (gtm_standby_check_communication_error(&count, oldconn)) goto retry; @@ -445,6 +444,7 @@ ProcessGTMBeginBackup(Port *myport, StringInfo message) if (GTMThreads->gt_threads[ii] && GTMThreads->gt_threads[ii] != my_threadinfo) GTM_RWLockAcquire(>MThreads->gt_threads[ii]->thr_lock, GTM_LOCKMODE_WRITE); } + my_threadinfo->thr_status = GTM_THREAD_BACKUP; pq_beginmessage(&buf, 'S'); pq_sendint(&buf, BEGIN_BACKUP_RESULT, 4); pq_endmessage(myport, &buf); @@ -466,6 +466,7 @@ ProcessGTMEndBackup(Port *myport, StringInfo message) if (GTMThreads->gt_threads[ii] && GTMThreads->gt_threads[ii] != my_threadinfo) GTM_RWLockRelease(>MThreads->gt_threads[ii]->thr_lock); } + my_threadinfo->thr_status = GTM_THREAD_RUNNING; pq_beginmessage(&buf, 'S'); pq_sendint(&buf, END_BACKUP_RESULT, 4); pq_endmessage(myport, &buf); @@ -482,4 +483,3 @@ finishStandbyConn(GTM_ThreadInfo *thrinfo) thrinfo->thr_conn->standby = NULL; } } - diff --git a/src/gtm/recovery/replication.c b/src/gtm/recovery/replication.c index 707cd964b4..1c44369808 100644 --- a/src/gtm/recovery/replication.c +++ b/src/gtm/recovery/replication.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION diff --git a/src/gtm/recovery/standby_utils.c b/src/gtm/recovery/standby_utils.c index fb444ea2b5..d79e2dc1e7 100644 --- a/src/gtm/recovery/standby_utils.c +++ b/src/gtm/recovery/standby_utils.c @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * * IDENTIFICATION diff --git a/src/gtm/test/Makefile b/src/gtm/test/Makefile index e6155ea7f6..3f5f30b90a 100644 --- a/src/gtm/test/Makefile +++ b/src/gtm/test/Makefile @@ -1,5 +1,12 @@ -# Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation - +#---------------------------------------------------------------------------- +# +# Postgres-XC GTM test makefile +# +# Copyright (c) 2010-2013, Postgres-XC Development Group +# +# src/gtm/test/Makefile +# +#----------------------------------------------------------------------------- top_build_dir=../.. include $(top_build_dir)/gtm/Makefile.global diff --git a/src/gtm/test/promote.sh b/src/gtm/test/promote.sh index ae60e9ccb3..75e0458ad9 100644 --- a/src/gtm/test/promote.sh +++ b/src/gtm/test/promote.sh @@ -12,7 +12,7 @@ export PATH=/tmp/pgxc/bin:$PATH echo "promoting standby..." export DATA=/tmp/pgxc/data/gtm_standby -gtm_ctl -D ${DATA} -S gtm_standby promote +gtm_ctl -D ${DATA} -Z gtm_standby promote # ------------------------------- # process check diff --git a/src/gtm/test/start_a.sh b/src/gtm/test/start_a.sh index 4a6c1c16fa..571e04b4f6 100644 --- a/src/gtm/test/start_a.sh +++ b/src/gtm/test/start_a.sh @@ -12,10 +12,10 @@ export DATA=/tmp/pgxc/data/gtm # ------------------------------- echo "starting active..." -gtm_ctl -D ${DATA} -S gtm stop +gtm_ctl -D ${DATA} -Z gtm stop rm -rf ${DATA}/gtm.opts ${DATA}/gtm.pid ${DATA}/register.node -gtm_ctl -D ${DATA} -S gtm -o "-n 101" start +gtm_ctl -D ${DATA} -Z gtm -o "-n 101" start # ------------------------------- # process check diff --git a/src/gtm/test/start_s.sh b/src/gtm/test/start_s.sh index b016bcee32..d9b458f255 100644 --- a/src/gtm/test/start_s.sh +++ b/src/gtm/test/start_s.sh @@ -13,10 +13,10 @@ echo "starting standby..." export DATA=/tmp/pgxc/data/gtm_standby -gtm_ctl -D ${DATA} -S gtm stop +gtm_ctl -D ${DATA} -Z gtm stop rm -rf ${DATA}/gtm.opts ${DATA}/gtm.pid ${DATA}/register.node -gtm_ctl -D ${DATA} -S gtm_standby -o "-n 102 -s -p 6667 -i 127.0.0.1 -q 6666" start +gtm_ctl -D ${DATA} -Z gtm_standby -o "-n 102 -s -p 6667 -i 127.0.0.1 -q 6666" start # ------------------------------- # process check diff --git a/src/gtm/test/stop.sh b/src/gtm/test/stop.sh index 4660ecc725..44efd7241d 100644 --- a/src/gtm/test/stop.sh +++ b/src/gtm/test/stop.sh @@ -12,7 +12,7 @@ export PATH=/tmp/pgxc/bin:$PATH echo "stopping standby..." export DATA=/tmp/pgxc/data/gtm_standby -gtm_ctl -D ${DATA} -S gtm stop +gtm_ctl -D ${DATA} -Z gtm stop # ------------------------------- # starting active... @@ -20,7 +20,7 @@ gtm_ctl -D ${DATA} -S gtm stop echo "stopping active..." export DATA=/tmp/pgxc/data/gtm -gtm_ctl -D ${DATA} -S gtm stop +gtm_ctl -D ${DATA} -Z gtm stop killall -9 gtm gtm_standby diff --git a/src/gtm/test/test_connect.c b/src/gtm/test/test_connect.c index d936d5c9dc..596764fae3 100644 --- a/src/gtm/test/test_connect.c +++ b/src/gtm/test/test_connect.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test/test_node.c b/src/gtm/test/test_node.c index 8ef2d98c1c..7be7ee61ed 100644 --- a/src/gtm/test/test_node.c +++ b/src/gtm/test/test_node.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test/test_node5.c b/src/gtm/test/test_node5.c index 28d9c462b3..aa6cd15b50 100644 --- a/src/gtm/test/test_node5.c +++ b/src/gtm/test/test_node5.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test/test_repli.c b/src/gtm/test/test_repli.c index 3a4450547a..68807aa000 100644 --- a/src/gtm/test/test_repli.c +++ b/src/gtm/test/test_repli.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test/test_repli2.c b/src/gtm/test/test_repli2.c index 38d4630a46..9086b0d727 100644 --- a/src/gtm/test/test_repli2.c +++ b/src/gtm/test/test_repli2.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test/test_scenario.c b/src/gtm/test/test_scenario.c index 6f1a1eb886..ac8cf0284e 100644 --- a/src/gtm/test/test_scenario.c +++ b/src/gtm/test/test_scenario.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test/test_seq.c b/src/gtm/test/test_seq.c index 4433e4947c..8e4ae6b012 100644 --- a/src/gtm/test/test_seq.c +++ b/src/gtm/test/test_seq.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test/test_seq4.c b/src/gtm/test/test_seq4.c index 243995a489..f3ad8186e8 100644 --- a/src/gtm/test/test_seq4.c +++ b/src/gtm/test/test_seq4.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test/test_seq5.c b/src/gtm/test/test_seq5.c index 5ff61db384..c70c9ebf0b 100644 --- a/src/gtm/test/test_seq5.c +++ b/src/gtm/test/test_seq5.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test/test_standby.c b/src/gtm/test/test_standby.c index 6ef29e0d3e..725daf51e9 100644 --- a/src/gtm/test/test_standby.c +++ b/src/gtm/test/test_standby.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test/test_startup.c b/src/gtm/test/test_startup.c index 945eb6e061..f3fe2fb604 100644 --- a/src/gtm/test/test_startup.c +++ b/src/gtm/test/test_startup.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test/test_txn.c b/src/gtm/test/test_txn.c index 945fb4ce88..0503ca7dd0 100644 --- a/src/gtm/test/test_txn.c +++ b/src/gtm/test/test_txn.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test/test_txn4.c b/src/gtm/test/test_txn4.c index ca1e180fa9..61a86a5af1 100644 --- a/src/gtm/test/test_txn4.c +++ b/src/gtm/test/test_txn4.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test/test_txn5.c b/src/gtm/test/test_txn5.c index 0f551a165a..69c5cb593c 100644 --- a/src/gtm/test/test_txn5.c +++ b/src/gtm/test/test_txn5.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test2/Makefile b/src/gtm/test2/Makefile index e6155ea7f6..eac7c387cf 100644 --- a/src/gtm/test2/Makefile +++ b/src/gtm/test2/Makefile @@ -1,5 +1,12 @@ -# Copyright (c) 2010-2011 Nippon Telegraph and Telephone Corporation - +#---------------------------------------------------------------------------- +# +# Postgres-XC GTM test2 makefile +# +# Copyright (c) 2010-2013, Postgres-XC Development Group +# +# src/gtm/test2/Makefile +# +#----------------------------------------------------------------------------- top_build_dir=../.. include $(top_build_dir)/gtm/Makefile.global diff --git a/src/gtm/test2/status_a.sh b/src/gtm/test2/status_a.sh index d120fd0b7a..cdb17ca17d 100644 --- a/src/gtm/test2/status_a.sh +++ b/src/gtm/test2/status_a.sh @@ -8,5 +8,5 @@ export DATA=/tmp/pgxc/data/gtm # ------------------------------- # starting active... # ------------------------------- -gtm_ctl -D ${DATA} -S gtm status +gtm_ctl -D ${DATA} -Z gtm status diff --git a/src/gtm/test2/status_s.sh b/src/gtm/test2/status_s.sh index badcf1590b..e4e2841b24 100644 --- a/src/gtm/test2/status_s.sh +++ b/src/gtm/test2/status_s.sh @@ -8,5 +8,5 @@ export DATA=/tmp/pgxc/data/gtm_standby # ------------------------------- # starting active... # ------------------------------- -gtm_ctl -D ${DATA} -S gtm_standby status +gtm_ctl -D ${DATA} -Z gtm_standby status diff --git a/src/gtm/test2/test_connect2.c b/src/gtm/test2/test_connect2.c index d5bdaef3d4..a4aef009b7 100644 --- a/src/gtm/test2/test_connect2.c +++ b/src/gtm/test2/test_connect2.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test2/test_standby.c b/src/gtm/test2/test_standby.c index 6ef29e0d3e..725daf51e9 100644 --- a/src/gtm/test2/test_standby.c +++ b/src/gtm/test2/test_standby.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test2/test_startup.c b/src/gtm/test2/test_startup.c index 945eb6e061..f3fe2fb604 100644 --- a/src/gtm/test2/test_startup.c +++ b/src/gtm/test2/test_startup.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test2/test_txn.c b/src/gtm/test2/test_txn.c index 945fb4ce88..0503ca7dd0 100644 --- a/src/gtm/test2/test_txn.c +++ b/src/gtm/test2/test_txn.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test2/test_txn2.c b/src/gtm/test2/test_txn2.c index 16e685bba1..3b15672e31 100644 --- a/src/gtm/test2/test_txn2.c +++ b/src/gtm/test2/test_txn2.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test2/test_txn3.c b/src/gtm/test2/test_txn3.c index 25cc328505..1cfca3f0d0 100644 --- a/src/gtm/test2/test_txn3.c +++ b/src/gtm/test2/test_txn3.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test2/test_txn4.c b/src/gtm/test2/test_txn4.c index ca1e180fa9..61a86a5af1 100644 --- a/src/gtm/test2/test_txn4.c +++ b/src/gtm/test2/test_txn4.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/gtm/test2/test_txn5.c b/src/gtm/test2/test_txn5.c index 0f551a165a..69c5cb593c 100644 --- a/src/gtm/test2/test_txn5.c +++ b/src/gtm/test2/test_txn5.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group */ #include diff --git a/src/include/Makefile b/src/include/Makefile index 3563fc87f4..c7a2aa4a68 100644 --- a/src/include/Makefile +++ b/src/include/Makefile @@ -23,7 +23,8 @@ SUBDIRS = access bootstrap catalog commands executor foreign lib libpq mb \ tcop snowball snowball/libstemmer tsearch tsearch/dicts utils \ port port/win32 port/win32_msvc port/win32_msvc/sys \ port/win32/arpa port/win32/netinet port/win32/sys \ - portability + portability \ + gtm # Install all headers install: all installdirs @@ -50,6 +51,12 @@ install: all installdirs cp $(srcdir)/$$dir/*.h '$(DESTDIR)$(includedir_server)'/$$dir/ || exit; \ chmod $(INSTALL_DATA_MODE) '$(DESTDIR)$(includedir_server)'/$$dir/*.h || exit; \ done +ifeq ($(vpath_build),yes) + for file in dynloader.h catalog/schemapg.h parser/gram.h utils/probes.h; do \ + cp $$file '$(DESTDIR)$(includedir_server)'/$$file || exit; \ + chmod $(INSTALL_DATA_MODE) '$(DESTDIR)$(includedir_server)'/$$file || exit; \ + done +endif installdirs: $(MKDIR_P) '$(DESTDIR)$(includedir)/libpq' '$(DESTDIR)$(includedir_internal)/libpq' diff --git a/src/include/access/clog.h b/src/include/access/clog.h index 7a8918e0fc..691430c97c 100644 --- a/src/include/access/clog.h +++ b/src/include/access/clog.h @@ -40,6 +40,7 @@ extern Size CLOGShmemSize(void); extern void CLOGShmemInit(void); extern void BootStrapCLOG(void); extern void StartupCLOG(void); +extern void TrimCLOG(void); extern void ShutdownCLOG(void); extern void CheckPointCLOG(void); extern void ExtendCLOG(TransactionId newestXact); diff --git a/src/include/access/gin_private.h b/src/include/access/gin_private.h index a79c003a9f..ce7069e0d1 100644 --- a/src/include/access/gin_private.h +++ b/src/include/access/gin_private.h @@ -508,6 +508,7 @@ typedef struct GinBtreeData extern GinBtreeStack *ginPrepareFindLeafPage(GinBtree btree, BlockNumber blkno); extern GinBtreeStack *ginFindLeafPage(GinBtree btree, GinBtreeStack *stack); +extern Buffer ginStepRight(Buffer buffer, Relation index, int lockmode); extern void freeGinBtreeStack(GinBtreeStack *stack); extern void ginInsertValue(GinBtree btree, GinBtreeStack *stack, GinStatsData *buildStats); diff --git a/src/include/access/gist.h b/src/include/access/gist.h index df9f39c7b8..22a440cf0f 100644 --- a/src/include/access/gist.h +++ b/src/include/access/gist.h @@ -85,11 +85,30 @@ typedef GISTPageOpaqueData *GISTPageOpaque; /* * This is the Split Vector to be returned by the PickSplit method. - * PickSplit should check spl_(r|l)datum_exists. If it is 'true', - * that corresponding spl_(r|l)datum already defined and - * PickSplit should use that value. PickSplit should always set - * spl_(r|l)datum_exists to false: GiST will check value to - * control supportng this feature by PickSplit... + * PickSplit should fill the indexes of tuples to go to the left side into + * spl_left[], and those to go to the right into spl_right[] (note the method + * is responsible for palloc'ing both of these arrays!). The tuple counts + * go into spl_nleft/spl_nright, and spl_ldatum/spl_rdatum must be set to + * the union keys for each side. + * + * If spl_ldatum_exists and spl_rdatum_exists are true, then we are performing + * a "secondary split" using a non-first index column. In this case some + * decisions have already been made about a page split, and the set of tuples + * being passed to PickSplit is just the tuples about which we are undecided. + * spl_ldatum/spl_rdatum then contain the union keys for the tuples already + * chosen to go left or right. Ideally the PickSplit method should take those + * keys into account while deciding what to do with the remaining tuples, ie + * it should try to "build out" from those unions so as to minimally expand + * them. If it does so, it should union the given tuples' keys into the + * existing spl_ldatum/spl_rdatum values rather than just setting those values + * from scratch, and then set spl_ldatum_exists/spl_rdatum_exists to false to + * show it has done this. + * + * If the PickSplit method fails to clear spl_ldatum_exists/spl_rdatum_exists, + * the core GiST code will make its own decision about how to merge the + * secondary-split results with the previously-chosen tuples, and will then + * recompute the union keys from scratch. This is a workable though often not + * optimal approach. */ typedef struct GIST_SPLITVEC { diff --git a/src/include/access/gist_private.h b/src/include/access/gist_private.h index 77e3cb5aee..9810c2d1dd 100644 --- a/src/include/access/gist_private.h +++ b/src/include/access/gist_private.h @@ -228,20 +228,21 @@ typedef struct GISTInsertStack struct GISTInsertStack *next; } GISTInsertStack; +/* Working state and results for multi-column split logic in gistsplit.c */ typedef struct GistSplitVector { - GIST_SPLITVEC splitVector; /* to/from PickSplit method */ + GIST_SPLITVEC splitVector; /* passed to/from user PickSplit method */ Datum spl_lattr[INDEX_MAX_KEYS]; /* Union of subkeys in - * spl_left */ + * splitVector.spl_left */ bool spl_lisnull[INDEX_MAX_KEYS]; Datum spl_rattr[INDEX_MAX_KEYS]; /* Union of subkeys in - * spl_right */ + * splitVector.spl_right */ bool spl_risnull[INDEX_MAX_KEYS]; - bool *spl_equiv; /* equivalent tuples which can be freely - * distributed between left and right pages */ + bool *spl_dontcare; /* flags tuples which could go to either side + * of the split for zero penalty */ } GistSplitVector; typedef struct @@ -362,7 +363,7 @@ extern void gistdentryinit(GISTSTATE *giststate, int nkey, GISTENTRY *e, extern float gistpenalty(GISTSTATE *giststate, int attno, GISTENTRY *key1, bool isNull1, GISTENTRY *key2, bool isNull2); -extern void gistMakeUnionItVec(GISTSTATE *giststate, IndexTuple *itvec, int len, int startkey, +extern void gistMakeUnionItVec(GISTSTATE *giststate, IndexTuple *itvec, int len, Datum *attr, bool *isnull); extern bool gistKeyIsEQ(GISTSTATE *giststate, int attno, Datum a, Datum b); extern void gistDeCompressAtt(GISTSTATE *giststate, Relation r, IndexTuple tuple, Page p, @@ -382,7 +383,7 @@ extern Datum gistvacuumcleanup(PG_FUNCTION_ARGS); /* gistsplit.c */ extern void gistSplitByKey(Relation r, Page page, IndexTuple *itup, int len, GISTSTATE *giststate, - GistSplitVector *v, GistEntryVector *entryvec, + GistSplitVector *v, int attno); #endif /* GIST_PRIVATE_H */ diff --git a/src/include/access/gtm.h b/src/include/access/gtm.h index dc83b6d6e6..5c5692b2c5 100644 --- a/src/include/access/gtm.h +++ b/src/include/access/gtm.h @@ -1,7 +1,7 @@ /*------------------------------------------------------------------------- * * gtm.h - * + * * Module interfacing with GTM definitions * * @@ -16,6 +16,8 @@ extern char *GtmHost; extern int GtmPort; +extern GlobalTransactionId currentGxid; + extern bool IsGTMConnected(void); extern void InitGTM(void); extern void CloseGTM(void); @@ -41,10 +43,9 @@ extern int RegisterGTM(GTM_PGXCNodeType type, GTM_PGXCNodePort port, char *dataf extern int UnregisterGTM(GTM_PGXCNodeType type); /* Sequence interface APIs with GTM */ -extern GTM_Sequence GetCurrentValGTM(char *seqname); extern GTM_Sequence GetNextValGTM(char *seqname); extern int SetValGTM(char *seqname, GTM_Sequence nextval, bool iscalled); -extern int CreateSequenceGTM(char *seqname, GTM_Sequence increment, +extern int CreateSequenceGTM(char *seqname, GTM_Sequence increment, GTM_Sequence minval, GTM_Sequence maxval, GTM_Sequence startval, bool cycle); extern int AlterSequenceGTM(char *seqname, GTM_Sequence increment, diff --git a/src/include/access/multixact.h b/src/include/access/multixact.h index c3ec763985..c86aeee44e 100644 --- a/src/include/access/multixact.h +++ b/src/include/access/multixact.h @@ -59,6 +59,7 @@ extern Size MultiXactShmemSize(void); extern void MultiXactShmemInit(void); extern void BootStrapMultiXact(void); extern void StartupMultiXact(void); +extern void TrimMultiXact(void); extern void ShutdownMultiXact(void); extern void MultiXactGetCheckptMulti(bool is_shutdown, MultiXactId *nextMulti, diff --git a/src/include/access/relscan.h b/src/include/access/relscan.h index 7663033723..ee60ca82ae 100644 --- a/src/include/access/relscan.h +++ b/src/include/access/relscan.h @@ -35,7 +35,6 @@ typedef struct HeapScanDescData BlockNumber rs_startblock; /* block # to start at */ BufferAccessStrategy rs_strategy; /* access strategy for reads */ bool rs_syncscan; /* report location to syncscan logic? */ - bool rs_relpredicatelocked; /* predicate lock on relation exists */ /* scan current state */ bool rs_inited; /* false = scan not init'd yet */ diff --git a/src/include/access/transam.h b/src/include/access/transam.h index 04304c8cd9..2d793b166f 100644 --- a/src/include/access/transam.h +++ b/src/include/access/transam.h @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/access/transam.h * diff --git a/src/include/access/tuptoaster.h b/src/include/access/tuptoaster.h index 977e0b4748..710b5fa502 100644 --- a/src/include/access/tuptoaster.h +++ b/src/include/access/tuptoaster.h @@ -144,6 +144,15 @@ extern struct varlena *heap_tuple_untoast_attr_slice(struct varlena * attr, int32 sliceoffset, int32 slicelength); +/* ---------- + * toast_flatten_tuple - + * + * "Flatten" a tuple to contain no out-of-line toasted fields. + * (This does not eliminate compressed or short-header datums.) + * ---------- + */ +extern HeapTuple toast_flatten_tuple(HeapTuple tup, TupleDesc tupleDesc); + /* ---------- * toast_flatten_tuple_attribute - * diff --git a/src/include/access/twophase_rmgr.h b/src/include/access/twophase_rmgr.h index 1c7d8bb4c0..090a2bc5db 100644 --- a/src/include/access/twophase_rmgr.h +++ b/src/include/access/twophase_rmgr.h @@ -23,10 +23,10 @@ typedef uint8 TwoPhaseRmgrId; */ #define TWOPHASE_RM_END_ID 0 #define TWOPHASE_RM_LOCK_ID 1 -#define TWOPHASE_RM_PREDICATELOCK_ID 2 -#define TWOPHASE_RM_PGSTAT_ID 3 -#define TWOPHASE_RM_MULTIXACT_ID 4 -#define TWOPHASE_RM_MAX_ID TWOPHASE_RM_MULTIXACT_ID +#define TWOPHASE_RM_PGSTAT_ID 2 +#define TWOPHASE_RM_MULTIXACT_ID 3 +#define TWOPHASE_RM_PREDICATELOCK_ID 4 +#define TWOPHASE_RM_MAX_ID TWOPHASE_RM_PREDICATELOCK_ID extern const TwoPhaseCallback twophase_recover_callbacks[]; extern const TwoPhaseCallback twophase_postcommit_callbacks[]; diff --git a/src/include/access/xact.h b/src/include/access/xact.h index 58c09a43e7..e72f1ed76e 100644 --- a/src/include/access/xact.h +++ b/src/include/access/xact.h @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/access/xact.h * @@ -274,6 +274,7 @@ extern void RegisterTransactionLocalNode(bool write); extern bool IsTransactionLocalNode(bool write); extern void ForgetTransactionLocalNode(void); extern bool IsXidImplicit(const char *xid); +extern bool IsPGXCNodeXactDatanodeDirect(void); #endif extern int xactGetCommittedChildren(TransactionId **ptr); diff --git a/src/include/access/xlog.h b/src/include/access/xlog.h index ca13d820cf..3d867fc447 100644 --- a/src/include/access/xlog.h +++ b/src/include/access/xlog.h @@ -71,6 +71,9 @@ typedef struct XLogRecord */ #define XLR_BKP_BLOCK_MASK 0x0E /* all info bits used for bkp blocks */ #define XLR_MAX_BKP_BLOCKS 3 +#define XLR_BKP_BLOCK(iblk) (0x08 >> (iblk)) /* iblk in 0..2 */ + +/* These macros are deprecated and will be removed in 9.3; use XLR_BKP_BLOCK */ #define XLR_SET_BKP_BLOCK(iblk) (0x08 >> (iblk)) #define XLR_BKP_BLOCK_1 XLR_SET_BKP_BLOCK(0) /* 0x08 */ #define XLR_BKP_BLOCK_2 XLR_SET_BKP_BLOCK(1) /* 0x04 */ @@ -102,13 +105,13 @@ extern int sync_method; * If buffer is valid then XLOG will check if buffer must be backed up * (ie, whether this is first change of that page since last checkpoint). * If so, the whole page contents are attached to the XLOG record, and XLOG - * sets XLR_BKP_BLOCK_X bit in xl_info. Note that the buffer must be pinned + * sets XLR_BKP_BLOCK(N) bit in xl_info. Note that the buffer must be pinned * and exclusive-locked by the caller, so that it won't change under us. * NB: when the buffer is backed up, we DO NOT insert the data pointed to by * this XLogRecData struct into the XLOG record, since we assume it's present * in the buffer. Therefore, rmgr redo routines MUST pay attention to - * XLR_BKP_BLOCK_X to know what is actually stored in the XLOG record. - * The i'th XLR_BKP_BLOCK bit corresponds to the i'th distinct buffer + * XLR_BKP_BLOCK(N) to know what is actually stored in the XLOG record. + * The N'th XLR_BKP_BLOCK bit corresponds to the N'th distinct buffer * value (ignoring InvalidBuffer) appearing in the rdata chain. * * When buffer is valid, caller must set buffer_std to indicate whether the @@ -285,7 +288,9 @@ extern int XLogFileOpen(uint32 log, uint32 seg); extern void XLogGetLastRemoved(uint32 *log, uint32 *seg); extern void XLogSetAsyncXactLSN(XLogRecPtr record); -extern void RestoreBkpBlocks(XLogRecPtr lsn, XLogRecord *record, bool cleanup); +extern Buffer RestoreBackupBlock(XLogRecPtr lsn, XLogRecord *record, + int block_index, + bool get_cleanup_lock, bool keep_buffer); extern void xlog_redo(XLogRecPtr lsn, XLogRecord *record); extern void xlog_desc(StringInfo buf, uint8 xl_info, char *rec); @@ -294,6 +299,7 @@ extern void issue_xlog_fsync(int fd, uint32 log, uint32 seg); extern bool RecoveryInProgress(void); extern bool HotStandbyActive(void); +extern bool HotStandbyActiveInReplay(void); extern bool XLogInsertAllowed(void); extern void GetXLogReceiptTime(TimestampTz *rtime, bool *fromStream); extern XLogRecPtr GetXLogReplayRecPtr(void); diff --git a/src/include/bootstrap/bootstrap.h b/src/include/bootstrap/bootstrap.h index a06460dd56..e2c3c369e1 100644 --- a/src/include/bootstrap/bootstrap.h +++ b/src/include/bootstrap/bootstrap.h @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/bootstrap/bootstrap.h * diff --git a/src/include/catalog/dependency.h b/src/include/catalog/dependency.h index bc4cd6147c..18dbd792bd 100644 --- a/src/include/catalog/dependency.h +++ b/src/include/catalog/dependency.h @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/catalog/dependency.h * @@ -213,7 +213,8 @@ extern void recordMultipleDependencies(const ObjectAddress *depender, int nreferenced, DependencyType behavior); -extern void recordDependencyOnCurrentExtension(const ObjectAddress *object); +extern void recordDependencyOnCurrentExtension(const ObjectAddress *object, + bool isReplace); extern long deleteDependencyRecordsFor(Oid classId, Oid objectId, bool skipExtensionDeps); diff --git a/src/include/catalog/heap.h b/src/include/catalog/heap.h index 3bc44d21a3..95200eaf5c 100644 --- a/src/include/catalog/heap.h +++ b/src/include/catalog/heap.h @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/catalog/heap.h * @@ -66,6 +66,8 @@ extern Oid heap_create_with_catalog(const char *relname, bool use_user_acl, bool allow_system_table_mods); +extern void heap_create_init_fork(Relation rel); + extern void heap_drop_with_catalog(Oid relid); extern void heap_truncate(List *relids); diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h index 071db7f401..4c27021b8b 100644 --- a/src/include/catalog/index.h +++ b/src/include/catalog/index.h @@ -27,6 +27,13 @@ typedef void (*IndexBuildCallback) (Relation index, bool tupleIsAlive, void *state); +/* Action code for index_set_state_flags */ +typedef enum +{ + INDEX_CREATE_SET_READY, + INDEX_CREATE_SET_VALID +} IndexStateFlagsAction; + extern void index_check_primary_key(Relation heapRel, IndexInfo *indexInfo, @@ -60,6 +67,7 @@ extern void index_constraint_create(Relation heapRelation, bool initdeferred, bool mark_as_primary, bool update_pgindex, + bool remove_old_dependencies, bool allow_system_table_mods); extern void index_drop(Oid indexId); @@ -87,6 +95,8 @@ extern double IndexBuildHeapScan(Relation heapRelation, extern void validate_index(Oid heapId, Oid indexId, Snapshot snapshot); +extern void index_set_state_flags(Oid indexId, IndexStateFlagsAction action); + extern void reindex_index(Oid indexId, bool skip_constraint_checks); /* Flag bits for reindex_relation(): */ @@ -98,5 +108,6 @@ extern bool reindex_relation(Oid relid, int flags); extern bool ReindexIsProcessingHeap(Oid heapOid); extern bool ReindexIsProcessingIndex(Oid indexOid); +extern Oid IndexGetRelation(Oid indexId); #endif /* INDEX_H */ diff --git a/src/include/catalog/indexing.h b/src/include/catalog/indexing.h index 98dda2c4e4..8d181ceaba 100644 --- a/src/include/catalog/indexing.h +++ b/src/include/catalog/indexing.h @@ -7,7 +7,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/catalog/indexing.h * diff --git a/src/include/catalog/namespace.h b/src/include/catalog/namespace.h index 53600969ad..7e1e194794 100644 --- a/src/include/catalog/namespace.h +++ b/src/include/catalog/namespace.h @@ -50,6 +50,7 @@ typedef struct OverrideSearchPath extern Oid RangeVarGetRelid(const RangeVar *relation, bool failOK); extern Oid RangeVarGetCreationNamespace(const RangeVar *newRelation); extern Oid RangeVarGetAndCheckCreationNamespace(const RangeVar *newRelation); +extern void RangeVarAdjustRelationPersistence(RangeVar *newRelation, Oid nspid); extern Oid RelnameGetRelid(const char *relname); extern bool RelationIsVisible(Oid relid); diff --git a/src/include/catalog/pg_constraint.h b/src/include/catalog/pg_constraint.h index 1566af2973..a12e901fc6 100644 --- a/src/include/catalog/pg_constraint.h +++ b/src/include/catalog/pg_constraint.h @@ -20,6 +20,7 @@ #define PG_CONSTRAINT_H #include "catalog/genbki.h" +#include "catalog/dependency.h" #include "nodes/pg_list.h" /* ---------------- @@ -240,7 +241,8 @@ extern char *ChooseConstraintName(const char *name1, const char *name2, List *others); extern void AlterConstraintNamespaces(Oid ownerId, Oid oldNspId, - Oid newNspId, bool isType); + Oid newNspId, bool isType, ObjectAddresses *objsMoved); +extern void get_constraint_relation_oids(Oid constraint_oid, Oid *conrelid, Oid *confrelid); extern Oid get_constraint_oid(Oid relid, const char *conname, bool missing_ok); extern bool check_functional_grouping(Oid relid, diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h index 9f446a5547..dc372b82e2 100644 --- a/src/include/catalog/pg_index.h +++ b/src/include/catalog/pg_index.h @@ -92,4 +92,12 @@ typedef FormData_pg_index *Form_pg_index; #define INDOPTION_DESC 0x0001 /* values are in reverse order */ #define INDOPTION_NULLS_FIRST 0x0002 /* NULLs are first instead of last */ +/* + * Use of these macros is recommended over direct examination of the state + * flag columns where possible; this allows source code compatibility with + * 9.2 and up. + */ +#define IndexIsValid(indexForm) ((indexForm)->indisvalid) +#define IndexIsReady(indexForm) ((indexForm)->indisready) + #endif /* PG_INDEX_H */ diff --git a/src/include/catalog/pg_namespace.h b/src/include/catalog/pg_namespace.h index 680802d7fe..a21b975073 100644 --- a/src/include/catalog/pg_namespace.h +++ b/src/include/catalog/pg_namespace.h @@ -77,6 +77,6 @@ DESCR("standard public schema"); /* * prototypes for functions in pg_namespace.c */ -extern Oid NamespaceCreate(const char *nspName, Oid ownerId); +extern Oid NamespaceCreate(const char *nspName, Oid ownerId, bool isTemp); #endif /* PG_NAMESPACE_H */ diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h index 8225c78b77..e9c89fe8c8 100644 --- a/src/include/catalog/pg_proc.h +++ b/src/include/catalog/pg_proc.h @@ -216,6 +216,10 @@ DATA(insert OID = 1258 ( textcat PGNSP PGUID 12 1 0 0 f f f t f i 2 0 25 "2 DATA(insert OID = 84 ( boolne PGNSP PGUID 12 1 0 0 f f f t f i 2 0 16 "16 16" _null_ _null_ _null_ _null_ boolne _null_ _null_ _null_ )); DATA(insert OID = 89 ( version PGNSP PGUID 12 1 0 0 f f f t f s 0 0 25 "" _null_ _null_ _null_ _null_ pgsql_version _null_ _null_ _null_ )); DESCR("PostgreSQL version string"); +#ifdef PGXC +DATA(insert OID = 90 ( pgxc_version PGNSP PGUID 12 1 0 0 f f f t f s 0 0 25 "" _null_ _null_ _null_ _null_ pgxc_version _null_ _null_ _null_ )); +DESCR("Postgres-XC version string"); +#endif /* OIDS 100 - 199 */ diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h index d72ca2342f..93b335189a 100644 --- a/src/include/catalog/pg_type.h +++ b/src/include/catalog/pg_type.h @@ -436,6 +436,7 @@ DATA(insert OID = 1001 ( _bytea PGNSP PGUID -1 f b A f t \054 0 17 0 array_in DATA(insert OID = 1002 ( _char PGNSP PGUID -1 f b A f t \054 0 18 0 array_in array_out array_recv array_send - - - i x f 0 -1 0 0 _null_ _null_ )); DATA(insert OID = 1003 ( _name PGNSP PGUID -1 f b A f t \054 0 19 0 array_in array_out array_recv array_send - - - i x f 0 -1 0 0 _null_ _null_ )); DATA(insert OID = 1005 ( _int2 PGNSP PGUID -1 f b A f t \054 0 21 0 array_in array_out array_recv array_send - - - i x f 0 -1 0 0 _null_ _null_ )); +#define INT2ARRAYOID 1005 DATA(insert OID = 1006 ( _int2vector PGNSP PGUID -1 f b A f t \054 0 22 0 array_in array_out array_recv array_send - - - i x f 0 -1 0 0 _null_ _null_ )); DATA(insert OID = 1007 ( _int4 PGNSP PGUID -1 f b A f t \054 0 23 0 array_in array_out array_recv array_send - - - i x f 0 -1 0 0 _null_ _null_ )); #define INT4ARRAYOID 1007 @@ -443,6 +444,7 @@ DATA(insert OID = 1008 ( _regproc PGNSP PGUID -1 f b A f t \054 0 24 0 array_i DATA(insert OID = 1009 ( _text PGNSP PGUID -1 f b A f t \054 0 25 0 array_in array_out array_recv array_send - - - i x f 0 -1 0 100 _null_ _null_ )); #define TEXTARRAYOID 1009 DATA(insert OID = 1028 ( _oid PGNSP PGUID -1 f b A f t \054 0 26 0 array_in array_out array_recv array_send - - - i x f 0 -1 0 0 _null_ _null_ )); +#define OIDARRAYOID 1028 DATA(insert OID = 1010 ( _tid PGNSP PGUID -1 f b A f t \054 0 27 0 array_in array_out array_recv array_send - - - i x f 0 -1 0 0 _null_ _null_ )); DATA(insert OID = 1011 ( _xid PGNSP PGUID -1 f b A f t \054 0 28 0 array_in array_out array_recv array_send - - - i x f 0 -1 0 0 _null_ _null_ )); DATA(insert OID = 1012 ( _cid PGNSP PGUID -1 f b A f t \054 0 29 0 array_in array_out array_recv array_send - - - i x f 0 -1 0 0 _null_ _null_ )); diff --git a/src/include/catalog/pgxc_class.h b/src/include/catalog/pgxc_class.h index 5a0cd597d3..f42688cc8a 100644 --- a/src/include/catalog/pgxc_class.h +++ b/src/include/catalog/pgxc_class.h @@ -1,5 +1,8 @@ -/* - * Copyright (c) 2004-2007 EnterpriseDB Corporation. All Rights Reserved. +/*----------------------------------------------------------- + * + * Copyright (c) 2010-2013 Postgres-XC Development Group + * + *----------------------------------------------------------- */ #ifndef PGXC_CLASS_H #define PGXC_CLASS_H diff --git a/src/include/catalog/pgxc_group.h b/src/include/catalog/pgxc_group.h index 891a16dfa4..5c1b02b999 100644 --- a/src/include/catalog/pgxc_group.h +++ b/src/include/catalog/pgxc_group.h @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/catalog/pgxc_group.h * diff --git a/src/include/catalog/pgxc_node.h b/src/include/catalog/pgxc_node.h index 4696afc2a9..92abf5de4e 100644 --- a/src/include/catalog/pgxc_node.h +++ b/src/include/catalog/pgxc_node.h @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/catalog/pgxc_node.h * diff --git a/src/include/commands/alter.h b/src/include/commands/alter.h index e942b538af..c34c5bc090 100644 --- a/src/include/commands/alter.h +++ b/src/include/commands/alter.h @@ -14,14 +14,16 @@ #ifndef ALTER_H #define ALTER_H +#include "catalog/dependency.h" #include "nodes/parsenodes.h" #include "utils/acl.h" #include "utils/relcache.h" extern void ExecRenameStmt(RenameStmt *stmt); extern void ExecAlterObjectSchemaStmt(AlterObjectSchemaStmt *stmt); -extern Oid AlterObjectNamespace_oid(Oid classId, Oid objid, Oid nspOid); -extern Oid AlterObjectNamespace(Relation rel, int oidCacheId, int nameCacheId, +extern Oid AlterObjectNamespace_oid(Oid classId, Oid objid, Oid nspOid, + ObjectAddresses *objsMoved); +extern Oid AlterObjectNamespace(Relation rel, int oidCacheId, int nameCacheId, Oid objid, Oid nspOid, int Anum_name, int Anum_namespace, int Anum_owner, AclObjectKind acl_kind); diff --git a/src/include/commands/dbcommands.h b/src/include/commands/dbcommands.h index 21dacff39c..63fe5da720 100644 --- a/src/include/commands/dbcommands.h +++ b/src/include/commands/dbcommands.h @@ -67,4 +67,8 @@ extern void dbase_desc(StringInfo buf, uint8 xl_info, char *rec); extern void check_encoding_locale_matches(int encoding, const char *collate, const char *ctype); +#ifdef PGXC +extern bool IsSetTableSpace(AlterDatabaseStmt *stmt); +#endif + #endif /* DBCOMMANDS_H */ diff --git a/src/include/commands/defrem.h b/src/include/commands/defrem.h index bbc024f50c..65121b944c 100644 --- a/src/include/commands/defrem.h +++ b/src/include/commands/defrem.h @@ -18,7 +18,7 @@ /* commands/indexcmds.c */ -extern void DefineIndex(RangeVar *heapRelation, +extern void DefineIndex(Oid relationId, char *indexRelationName, Oid indexRelationId, char *accessMethodName, @@ -149,7 +149,9 @@ extern List *deserialize_deflist(Datum txt); /* commands/foreigncmds.c */ extern void AlterForeignServerOwner(const char *name, Oid newOwnerId); +extern void AlterForeignServerOwner_oid(Oid , Oid newOwnerId); extern void AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId); +extern void AlterForeignDataWrapperOwner_oid(Oid fwdId, Oid newOwnerId); extern void CreateForeignDataWrapper(CreateFdwStmt *stmt); extern void AlterForeignDataWrapper(AlterFdwStmt *stmt); extern void RemoveForeignDataWrapper(DropFdwStmt *stmt); diff --git a/src/include/commands/extension.h b/src/include/commands/extension.h index 2792c6dd49..7b95f6d784 100644 --- a/src/include/commands/extension.h +++ b/src/include/commands/extension.h @@ -46,4 +46,6 @@ extern char *get_extension_name(Oid ext_oid); extern void AlterExtensionNamespace(List *names, const char *newschema); +extern void AlterExtensionOwner_oid(Oid extensionOid, Oid newOwnerId); + #endif /* EXTENSION_H */ diff --git a/src/include/commands/tablecmds.h b/src/include/commands/tablecmds.h index 7d46ede251..a656cec58d 100644 --- a/src/include/commands/tablecmds.h +++ b/src/include/commands/tablecmds.h @@ -14,6 +14,8 @@ #ifndef TABLECMDS_H #define TABLECMDS_H +#include "access/htup.h" +#include "catalog/dependency.h" #include "nodes/parsenodes.h" #include "storage/lock.h" #include "utils/relcache.h" @@ -23,7 +25,7 @@ extern Oid DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId); extern void RemoveRelations(DropStmt *drop); -extern void AlterTable(AlterTableStmt *stmt); +extern void AlterTable(Oid relid, AlterTableStmt *stmt); extern LOCKMODE AlterTableGetLockLevel(List *cmds); @@ -34,9 +36,13 @@ extern void AlterTableInternal(Oid relid, List *cmds, bool recurse); extern void AlterTableNamespace(RangeVar *relation, const char *newschema, ObjectType stmttype, LOCKMODE lockmode); +extern void AlterTableNamespaceInternal(Relation rel, Oid oldNspOid, + Oid nspOid, ObjectAddresses *objsMoved); + extern void AlterRelationNamespaceInternal(Relation classRel, Oid relOid, Oid oldNspOid, Oid newNspOid, - bool hasDependEntry); + bool hasDependEntry, + ObjectAddresses *objsMoved); extern void CheckTableNotInUse(Relation rel, const char *stmt); @@ -58,10 +64,6 @@ extern void find_composite_type_dependencies(Oid typeOid, extern void check_of_type(HeapTuple typetuple); -extern AttrNumber *varattnos_map(TupleDesc olddesc, TupleDesc newdesc); -extern AttrNumber *varattnos_map_schema(TupleDesc old, List *schema); -extern void change_varattnos_of_a_node(Node *node, const AttrNumber *newattno); - extern void register_on_commit_action(Oid relid, OnCommitAction action); extern void remove_on_commit_action(Oid relid); diff --git a/src/include/commands/trigger.h b/src/include/commands/trigger.h index 3b8d39d2be..2fdba4a475 100644 --- a/src/include/commands/trigger.h +++ b/src/include/commands/trigger.h @@ -109,7 +109,7 @@ extern PGDLLIMPORT int SessionReplicationRole; #define TRIGGER_DISABLED 'D' extern Oid CreateTrigger(CreateTrigStmt *stmt, const char *queryString, - Oid constraintOid, Oid indexOid, + Oid relOid, Oid refRelOid, Oid constraintOid, Oid indexOid, bool isInternal); extern void DropTrigger(Oid relid, const char *trigname, diff --git a/src/include/commands/typecmds.h b/src/include/commands/typecmds.h index 6d9d1ccaa9..e22a699657 100644 --- a/src/include/commands/typecmds.h +++ b/src/include/commands/typecmds.h @@ -14,6 +14,7 @@ #ifndef TYPECMDS_H #define TYPECMDS_H +#include "catalog/dependency.h" #include "nodes/parsenodes.h" @@ -41,9 +42,10 @@ extern void AlterTypeOwner(List *names, Oid newOwnerId); extern void AlterTypeOwnerInternal(Oid typeOid, Oid newOwnerId, bool hasDependEntry); extern void AlterTypeNamespace(List *names, const char *newschema); -extern Oid AlterTypeNamespace_oid(Oid typeOid, Oid nspOid); -extern Oid AlterTypeNamespaceInternal(Oid typeOid, Oid nspOid, +extern Oid AlterTypeNamespace_oid(Oid typeOid, Oid nspOid, ObjectAddresses *objsMoved); +extern Oid AlterTypeNamespaceInternal(Oid typeOid, Oid nspOid, bool isImplicitArray, - bool errorOnTableType); + bool errorOnTableType, + ObjectAddresses *objsMoved); #endif /* TYPECMDS_H */ diff --git a/src/include/executor/tuptable.h b/src/include/executor/tuptable.h index 3f5da71a48..96823eddf3 100644 --- a/src/include/executor/tuptable.h +++ b/src/include/executor/tuptable.h @@ -120,7 +120,7 @@ typedef struct TupleTableSlot HeapTuple tts_tuple; /* physical tuple, or NULL if virtual */ #ifdef PGXC /* - * PGXC extension to support tuples sent from remote data node. + * PGXC extension to support tuples sent from remote Datanode. */ char *tts_dataRow; /* Tuple data in DataRow format */ int tts_dataLen; /* Actual length of the data row */ diff --git a/src/include/fmgr.h b/src/include/fmgr.h index 4a412f8049..84ef04de58 100644 --- a/src/include/fmgr.h +++ b/src/include/fmgr.h @@ -624,6 +624,7 @@ extern Oid get_fn_expr_argtype(FmgrInfo *flinfo, int argnum); extern Oid get_call_expr_argtype(fmNodePtr expr, int argnum); extern bool get_fn_expr_arg_stable(FmgrInfo *flinfo, int argnum); extern bool get_call_expr_arg_stable(fmNodePtr expr, int argnum); +extern bool CheckFunctionValidatorAccess(Oid validatorOid, Oid functionOid); /* * Routines in dfmgr.c diff --git a/src/include/gen_alloc.h b/src/include/gen_alloc.h index cf714da3ae..049effb9ed 100644 --- a/src/include/gen_alloc.h +++ b/src/include/gen_alloc.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/gen_alloc.h * diff --git a/src/include/gtm/assert.h b/src/include/gtm/assert.h index b687213fc7..5aac637511 100644 --- a/src/include/gtm/assert.h +++ b/src/include/gtm/assert.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL$ * diff --git a/src/include/gtm/elog.h b/src/include/gtm/elog.h index f8fd324c3f..b5fab78d6d 100644 --- a/src/include/gtm/elog.h +++ b/src/include/gtm/elog.h @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/include/utils/elog.h,v 1.98 2009/01/01 17:24:02 momjian Exp $ * diff --git a/src/include/gtm/gtm.h b/src/include/gtm/gtm.h index 1ef099b240..a8e444b6e7 100644 --- a/src/include/gtm/gtm.h +++ b/src/include/gtm/gtm.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL$ * @@ -30,6 +30,7 @@ typedef enum GTM_ThreadStatus GTM_THREAD_STARTING, GTM_THREAD_RUNNING, GTM_THREAD_EXITING, + GTM_THREAD_BACKUP, /* Backup to standby is in progress */ /* Must be the last */ GTM_THREAD_INVALID } GTM_ThreadStatus; @@ -47,9 +48,9 @@ typedef struct GTM_ThreadInfo uint32 thr_localid; bool is_main_thread; void * (* thr_startroutine)(void *); - + MemoryContext thr_thread_context; - MemoryContext thr_message_context; + MemoryContext thr_message_context; MemoryContext thr_current_context; MemoryContext thr_error_context; MemoryContext thr_parent_context; @@ -66,7 +67,6 @@ typedef struct GTM_ThreadInfo GTM_RWLock thr_lock; gtm_List *thr_cached_txninfo; - } GTM_ThreadInfo; typedef struct GTM_Threads diff --git a/src/include/gtm/gtm_c.h b/src/include/gtm/gtm_c.h index 455c67f3cb..60371a70f2 100644 --- a/src/include/gtm/gtm_c.h +++ b/src/include/gtm/gtm_c.h @@ -11,7 +11,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/include/c.h,v 1.234 2009/01/01 17:23:55 momjian Exp $ * @@ -65,7 +65,7 @@ typedef enum GTM_PGXCNodeType * as a handle because we would never have a transaction state at the * GTM without assigned GXID. */ -typedef int32 GTM_TransactionHandle; +typedef int32 GTM_TransactionHandle; #define InvalidTransactionHandle -1 diff --git a/src/include/gtm/gtm_client.h b/src/include/gtm/gtm_client.h index b7bd90a6f7..5fb405d718 100644 --- a/src/include/gtm/gtm_client.h +++ b/src/include/gtm/gtm_client.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL$ * @@ -37,7 +37,7 @@ typedef union GTM_ResultData * TXN_COMMIT_PREPARED * TXN_ROLLBACK */ - + GlobalTransactionId grd_next_gxid; struct @@ -53,12 +53,12 @@ typedef union GTM_ResultData { GTM_SequenceKeyData seqkey; GTM_Sequence seqval; - } grd_seq; /* SEQUENCE_GET_CURRENT - * SEQUENCE_GET_NEXT */ + } grd_seq; /* SEQUENCE_GET_NEXT */ + struct { - int seq_count; - GTM_SeqInfo **seq; + int seq_count; + GTM_SeqInfo *seq; } grd_seq_list; /* SEQUENCE_GET_LIST */ struct @@ -120,7 +120,7 @@ typedef union GTM_ResultData #define GTM_RESULT_ERROR (-1) #define GTM_RESULT_OK (0) /* - * This error is used ion the case where allocated buffer is not large + * This error is used ion the case where allocated buffer is not large * enough to store the errors. It may happen of an allocation failed * so it's status is considered as unknown. */ @@ -160,19 +160,19 @@ int end_replication_initial_sync(GTM_Conn *); size_t get_node_list(GTM_Conn *, GTM_PGXCNodeInfo *, size_t); GlobalTransactionId get_next_gxid(GTM_Conn *); uint32 get_txn_gxid_list(GTM_Conn *, GTM_Transactions *); -size_t get_sequence_list(GTM_Conn *, GTM_SeqInfo **, size_t); +size_t get_sequence_list(GTM_Conn *, GTM_SeqInfo **); /* * Transaction Management API */ GlobalTransactionId begin_transaction(GTM_Conn *conn, GTM_IsolationLevel isolevel, GTM_Timestamp *timestamp); -int bkup_begin_transaction(GTM_Conn *conn, GTM_TransactionHandle txn, GTM_IsolationLevel isolevel, +int bkup_begin_transaction(GTM_Conn *conn, GTM_TransactionHandle txn, GTM_IsolationLevel isolevel, bool read_only, GTM_Timestamp timestamp); int bkup_begin_transaction_gxid(GTM_Conn *conn, GTM_TransactionHandle txn, GlobalTransactionId gxid, GTM_IsolationLevel isolevel, bool read_only, GTM_Timestamp timestamp); GlobalTransactionId begin_transaction_autovacuum(GTM_Conn *conn, GTM_IsolationLevel isolevel); -int bkup_begin_transaction_autovacuum(GTM_Conn *conn, GTM_TransactionHandle txn, GlobalTransactionId gxid, +int bkup_begin_transaction_autovacuum(GTM_Conn *conn, GTM_TransactionHandle txn, GlobalTransactionId gxid, GTM_IsolationLevel isolevel); int commit_transaction(GTM_Conn *conn, GlobalTransactionId gxid); int bkup_commit_transaction(GTM_Conn *conn, GlobalTransactionId gxid); @@ -199,8 +199,8 @@ begin_transaction_multi(GTM_Conn *conn, int txn_count, GTM_IsolationLevel *txn_i bool *txn_read_only, GTMProxy_ConnID *txn_connid, int *txn_count_out, GlobalTransactionId *gxid_out, GTM_Timestamp *ts_out); int -bkup_begin_transaction_multi(GTM_Conn *conn, int txn_count, - GTM_TransactionHandle *txn, GlobalTransactionId start_gxid, GTM_IsolationLevel *isolevel, +bkup_begin_transaction_multi(GTM_Conn *conn, int txn_count, + GTM_TransactionHandle *txn, GlobalTransactionId start_gxid, GTM_IsolationLevel *isolevel, bool *read_only, GTMProxy_ConnID *txn_connid); int commit_transaction_multi(GTM_Conn *conn, int txn_count, GlobalTransactionId *gxid, @@ -268,7 +268,6 @@ int close_sequence(GTM_Conn *conn, GTM_SequenceKey key); int bkup_close_sequence(GTM_Conn *conn, GTM_SequenceKey key); int rename_sequence(GTM_Conn *conn, GTM_SequenceKey key, GTM_SequenceKey newkey); int bkup_rename_sequence(GTM_Conn *conn, GTM_SequenceKey key, GTM_SequenceKey newkey); -GTM_Sequence get_current(GTM_Conn *conn, GTM_SequenceKey key); GTM_Sequence get_next(GTM_Conn *conn, GTM_SequenceKey key); GTM_Sequence bkup_get_next(GTM_Conn *conn, GTM_SequenceKey key); int set_val(GTM_Conn *conn, GTM_SequenceKey key, GTM_Sequence nextval, bool is_called); diff --git a/src/include/gtm/gtm_conn.h b/src/include/gtm/gtm_conn.h index 76c294ccfd..544bac9df2 100644 --- a/src/include/gtm/gtm_conn.h +++ b/src/include/gtm/gtm_conn.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL$ * diff --git a/src/include/gtm/gtm_ext.h b/src/include/gtm/gtm_ext.h index ccb7a75020..76ad4ee510 100644 --- a/src/include/gtm/gtm_ext.h +++ b/src/include/gtm/gtm_ext.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL$ * diff --git a/src/include/gtm/gtm_ip.h b/src/include/gtm/gtm_ip.h index 5958bd228c..cdde413890 100644 --- a/src/include/gtm/gtm_ip.h +++ b/src/include/gtm/gtm_ip.h @@ -7,7 +7,7 @@ * what you include here! * * Copyright (c) 2003-2009, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/include/libpq/ip.h,v 1.20 2008/01/01 19:45:58 momjian Exp $ * diff --git a/src/include/gtm/gtm_list.h b/src/include/gtm/gtm_list.h index db44dbdb68..cbd0f2cafd 100644 --- a/src/include/gtm/gtm_list.h +++ b/src/include/gtm/gtm_list.h @@ -29,7 +29,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/include/nodes/pg_list.h,v 1.59 2008/08/14 18:48:00 tgl Exp $ * diff --git a/src/include/gtm/gtm_lock.h b/src/include/gtm/gtm_lock.h index 7558e65eb8..80da3c9e3b 100644 --- a/src/include/gtm/gtm_lock.h +++ b/src/include/gtm/gtm_lock.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL$ * diff --git a/src/include/gtm/gtm_msg.h b/src/include/gtm/gtm_msg.h index 6162ab941e..15077ad449 100644 --- a/src/include/gtm/gtm_msg.h +++ b/src/include/gtm/gtm_msg.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL$ * @@ -62,7 +62,6 @@ typedef enum GTM_MessageType MSG_SNAPSHOT_GXID_GET, /* Get GXID and snapshot together */ MSG_SEQUENCE_INIT, /* Initialize a new global sequence */ MSG_BKUP_SEQUENCE_INIT, /* Backup of MSG_SEQUENCE_INIT */ - MSG_SEQUENCE_GET_CURRENT,/* Get the current value of sequence */ MSG_SEQUENCE_GET_NEXT, /* Get the next sequence value of sequence */ MSG_BKUP_SEQUENCE_GET_NEXT, /* Backup of MSG_SEQUENCE_GET_NEXT */ MSG_SEQUENCE_GET_LAST, /* Get the last sequence value of sequence */ @@ -123,7 +122,6 @@ typedef enum GTM_ResultType SNAPSHOT_GET_MULTI_RESULT, SNAPSHOT_GXID_GET_RESULT, SEQUENCE_INIT_RESULT, - SEQUENCE_GET_CURRENT_RESULT, SEQUENCE_GET_NEXT_RESULT, SEQUENCE_GET_LAST_RESULT, SEQUENCE_SET_VAL_RESULT, @@ -142,7 +140,7 @@ typedef enum GTM_ResultType * Special message header for the messgaes exchanged between the GTM server and * the proxy. * - * ph_conid: connection identifier which is used to route + * ph_conid: connection identifier which is used to route * the messages to the right backend. */ typedef struct GTM_ProxyMsgHeader diff --git a/src/include/gtm/gtm_opt.h b/src/include/gtm/gtm_opt.h index b475d34e1d..482396658b 100644 --- a/src/include/gtm/gtm_opt.h +++ b/src/include/gtm/gtm_opt.h @@ -4,8 +4,8 @@ * External declarations pertaining to gtm/main/gtm_opt.c, gtm/proxy/gtm_proxy_opt.c and * gtm/common/gtm_opt_file.l * - * Portions Copyright (c) 2011, Nippon Telegraph and Telephone Corporation * Portions Copyright (c) 2000-2011, PostgreSQL Global Development Group + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * Written by Peter Eisentraut . * Modified by Koichi Suzuki * diff --git a/src/include/gtm/gtm_opt_tables.h b/src/include/gtm/gtm_opt_tables.h index a0035e6631..84655f6c80 100644 --- a/src/include/gtm/gtm_opt_tables.h +++ b/src/include/gtm/gtm_opt_tables.h @@ -3,8 +3,8 @@ * gtm_opt_tables.h * Declarations of tables used by GTM configuration file. * - * Portions Copyright (c) 2011, Nippon Telegraph and Telephone Corporation * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/gtm/gtm_opt_tables.h * diff --git a/src/include/gtm/gtm_proxy.h b/src/include/gtm/gtm_proxy.h index c2e667d457..bd2798dfd3 100644 --- a/src/include/gtm/gtm_proxy.h +++ b/src/include/gtm/gtm_proxy.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL$ * @@ -69,10 +69,11 @@ typedef struct GTMProxy_ThreadInfo */ GTM_ThreadID thr_id; uint32 thr_localid; + bool is_main_thread; void * (* thr_startroutine)(void *); - + MemoryContext thr_thread_context; - MemoryContext thr_message_context; + MemoryContext thr_message_context; MemoryContext thr_current_context; MemoryContext thr_error_context; MemoryContext thr_parent_context; @@ -89,15 +90,15 @@ typedef struct GTMProxy_ThreadInfo uint32 thr_conn_count; /* number of connections served by this thread */ - /* + /* * The structure member type/sequence upto this point must match the * GTM_ThreadInfo structure in gtm.h since they are shared in some common * library routines such as elog.c. Keeping them in sync helps us use the * same library for the proxy as well as the server. - */ + */ GTM_MutexLock thr_lock; GTM_CV thr_cv; - + /* * We use a sequence number to track the state of connection/fd array. * Whenever a new connection is added or an existing connection is deleted @@ -175,7 +176,7 @@ typedef union GTMProxy_CommandData GlobalTransactionId gxid; GTM_TransactionHandle handle; } cd_snap; - + struct { GTM_PGXCNodeType type; @@ -257,8 +258,8 @@ extern GTM_ThreadID TopMostThreadID; } \ } while(0) #else -#define Disable_Longjmp() +#define Disable_Longjmp() #define Enable_Longjmp() #endif - + #endif diff --git a/src/include/gtm/gtm_seq.h b/src/include/gtm/gtm_seq.h index 2191a76dbf..85d34ed71e 100644 --- a/src/include/gtm/gtm_seq.h +++ b/src/include/gtm/gtm_seq.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL$ * @@ -71,13 +71,11 @@ int GTM_SeqAlter(GTM_SequenceKey seqkey, int GTM_SeqClose(GTM_SequenceKey seqkey); int GTM_SeqRename(GTM_SequenceKey seqkey, GTM_SequenceKey newseqkey); GTM_Sequence GTM_SeqGetNext(GTM_SequenceKey seqkey); -GTM_Sequence GTM_SeqGetCurrent(GTM_SequenceKey seqkey); int GTM_SeqSetVal(GTM_SequenceKey seqkey, GTM_Sequence nextval, bool iscalled); int GTM_SeqReset(GTM_SequenceKey seqkey); void ProcessSequenceInitCommand(Port *myport, StringInfo message, bool is_backup); -void ProcessSequenceGetCurrentCommand(Port *myport, StringInfo message); void ProcessSequenceGetNextCommand(Port *myport, StringInfo message, bool is_backup); void ProcessSequenceSetValCommand(Port *myport, StringInfo message, bool is_backup); void ProcessSequenceResetCommand(Port *myport, StringInfo message, bool is_backup); diff --git a/src/include/gtm/gtm_serialize.h b/src/include/gtm/gtm_serialize.h index 2a33b22346..e8d3e53b87 100644 --- a/src/include/gtm/gtm_serialize.h +++ b/src/include/gtm/gtm_serialize.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/gtm/gtm_serialize.h * @@ -40,7 +40,7 @@ size_t gtm_deserialize_pgxcnodeinfo(GTM_PGXCNodeInfo *, const char *, size_t); size_t gtm_get_sequence_size(GTM_SeqInfo *); size_t gtm_serialize_sequence(GTM_SeqInfo *, char *, size_t); -GTM_SeqInfo *gtm_deserialize_sequence(const char *, size_t); +size_t gtm_deserialize_sequence(GTM_SeqInfo *seq, const char *, size_t); void dump_transactions_elog(GTM_Transactions *, int); void dump_transactioninfo_elog(GTM_TransactionInfo *); diff --git a/src/include/gtm/gtm_serialize_debug.h b/src/include/gtm/gtm_serialize_debug.h index 35a0c2c973..cd6dce48b9 100644 --- a/src/include/gtm/gtm_serialize_debug.h +++ b/src/include/gtm/gtm_serialize_debug.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/gtm/gtm_serialize_debug.h * diff --git a/src/include/gtm/gtm_standby.h b/src/include/gtm/gtm_standby.h index 797e38f008..bfd456a098 100644 --- a/src/include/gtm/gtm_standby.h +++ b/src/include/gtm/gtm_standby.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/gtm/gtm_standby.h * diff --git a/src/include/gtm/gtm_time.h b/src/include/gtm/gtm_time.h index f53c47c58b..85944a8c44 100644 --- a/src/include/gtm/gtm_time.h +++ b/src/include/gtm/gtm_time.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL$ * diff --git a/src/include/gtm/gtm_txn.h b/src/include/gtm/gtm_txn.h index 669ba4ee98..a305ba7e19 100644 --- a/src/include/gtm/gtm_txn.h +++ b/src/include/gtm/gtm_txn.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL$ * @@ -163,13 +163,18 @@ typedef struct GTM_Transactions int32 gt_lastslot; GTM_TransactionInfo gt_transactions_array[GTM_MAX_GLOBAL_TRANSACTIONS]; gtm_List *gt_open_transactions; - + GTM_RWLock gt_TransArrayLock; } GTM_Transactions; extern GTM_Transactions GTMTransactions; -#define GTM_CountOpenTransactions() (gtm_list_length(GTMTransactions.gt_open_transactions)) +/* + * This macro should be used with READ lock held on gt_TransArrayLock as the + * number of open transactions might change when counting open transactions + * if a lock is not hold. + */ +#define GTM_CountOpenTransactions() (gtm_list_length(GTMTransactions.gt_open_transactions)) /* * Two hash tables will be maintained to quickly find the diff --git a/src/include/gtm/gtm_utils.h b/src/include/gtm/gtm_utils.h index e77f37e8e1..b96d7121cf 100644 --- a/src/include/gtm/gtm_utils.h +++ b/src/include/gtm/gtm_utils.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/gtm/gtm_utils.h * @@ -17,15 +17,6 @@ #include "gtm/libpq-int.h" #include "gtm/gtm_msg.h" -#if 0 -/* - * PGXCTODO: This portion of code needs XCM support - * to be able to report GTM failures to XC watcher and - * enable a GTM reconnection kick. - */ -void gtm_report_failure(GTM_Conn *); -#endif - void gtm_util_init_nametabs(void); char *gtm_util_message_name(GTM_MessageType type); char *gtm_util_result_name(GTM_ResultType type); diff --git a/src/include/gtm/ip.h b/src/include/gtm/ip.h index f7ee20acf1..a53b31c84d 100644 --- a/src/include/gtm/ip.h +++ b/src/include/gtm/ip.h @@ -7,7 +7,7 @@ * what you include here! * * Copyright (c) 2003-2009, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/include/libpq/ip.h,v 1.20 2008/01/01 19:45:58 momjian Exp $ * diff --git a/src/include/gtm/libpq-be.h b/src/include/gtm/libpq-be.h index 4fa46f9da4..e125cf7cad 100644 --- a/src/include/gtm/libpq-be.h +++ b/src/include/gtm/libpq-be.h @@ -10,7 +10,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/include/libpq/libpq-be.h,v 1.69 2009/01/01 17:23:59 momjian Exp $ * diff --git a/src/include/gtm/libpq-fe.h b/src/include/gtm/libpq-fe.h index 6a909c2fa2..b80046cfd8 100644 --- a/src/include/gtm/libpq-fe.h +++ b/src/include/gtm/libpq-fe.h @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/interfaces/libpq/libpq-fe.h,v 1.145 2009/01/01 17:24:03 momjian Exp $ * diff --git a/src/include/gtm/libpq-int.h b/src/include/gtm/libpq-int.h index f64f544ba4..2845c19e3b 100644 --- a/src/include/gtm/libpq-int.h +++ b/src/include/gtm/libpq-int.h @@ -11,7 +11,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/interfaces/libpq/libpq-int.h,v 1.139 2009/01/01 17:24:03 momjian Exp $ * diff --git a/src/include/gtm/libpq.h b/src/include/gtm/libpq.h index 56e4c3e077..3d7dea4a98 100644 --- a/src/include/gtm/libpq.h +++ b/src/include/gtm/libpq.h @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/include/libpq/libpq.h,v 1.70 2008/11/20 09:29:36 mha Exp $ * diff --git a/src/include/gtm/memnodes.h b/src/include/gtm/memnodes.h index dcf54b4b0d..80076b0bb8 100644 --- a/src/include/gtm/memnodes.h +++ b/src/include/gtm/memnodes.h @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/include/nodes/memnodes.h,v 1.34 2008/01/01 19:45:58 momjian Exp $ * diff --git a/src/include/gtm/memutils.h b/src/include/gtm/memutils.h index 019c322f31..2eacd19c6c 100644 --- a/src/include/gtm/memutils.h +++ b/src/include/gtm/memutils.h @@ -9,7 +9,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/include/utils/memutils.h,v 1.64 2008/01/01 19:45:59 momjian Exp $ * diff --git a/src/include/gtm/palloc.h b/src/include/gtm/palloc.h index 095e0e282a..5a34986a34 100644 --- a/src/include/gtm/palloc.h +++ b/src/include/gtm/palloc.h @@ -20,7 +20,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/include/utils/palloc.h,v 1.40 2008/06/28 16:45:22 tgl Exp $ * diff --git a/src/include/gtm/path.h b/src/include/gtm/path.h index 361e9da689..e8a15a1396 100644 --- a/src/include/gtm/path.h +++ b/src/include/gtm/path.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL$ * diff --git a/src/include/gtm/pqcomm.h b/src/include/gtm/pqcomm.h index 0758f78ee3..2e786da83a 100644 --- a/src/include/gtm/pqcomm.h +++ b/src/include/gtm/pqcomm.h @@ -8,7 +8,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/include/libpq/pqcomm.h,v 1.109 2008/10/28 12:10:44 mha Exp $ * diff --git a/src/include/gtm/pqexpbuffer.h b/src/include/gtm/pqexpbuffer.h index 1ff7cfcbe4..6724fc385f 100644 --- a/src/include/gtm/pqexpbuffer.h +++ b/src/include/gtm/pqexpbuffer.h @@ -17,7 +17,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/interfaces/libpq/pqexpbuffer.h,v 1.21 2008/11/26 16:23:11 tgl Exp $ * diff --git a/src/include/gtm/pqformat.h b/src/include/gtm/pqformat.h index 3d897fa4ce..6401dc39c1 100644 --- a/src/include/gtm/pqformat.h +++ b/src/include/gtm/pqformat.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/include/libpq/pqformat.h,v 1.27 2009/01/01 17:23:59 momjian Exp $ * diff --git a/src/include/gtm/pqsignal.h b/src/include/gtm/pqsignal.h index 6cfcf8fc2c..f2a790e06e 100644 --- a/src/include/gtm/pqsignal.h +++ b/src/include/gtm/pqsignal.h @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/include/libpq/pqsignal.h,v 1.32 2008/01/01 19:45:58 momjian Exp $ * diff --git a/src/include/gtm/proxy_utils.h b/src/include/gtm/proxy_utils.h index 15e33caaca..92fa728966 100644 --- a/src/include/gtm/proxy_utils.h +++ b/src/include/gtm/proxy_utils.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/gtm/proxy_utils.h * @@ -20,4 +20,3 @@ bool gtm_standby_check_communication_error(int *, GTM_Conn *); #endif /* PROXY_UTILS_H */ - diff --git a/src/include/gtm/register.h b/src/include/gtm/register.h index 6d6569b46c..fae9858f43 100644 --- a/src/include/gtm/register.h +++ b/src/include/gtm/register.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL$ * diff --git a/src/include/gtm/replication.h b/src/include/gtm/replication.h index bcd2bd536f..f07568da70 100644 --- a/src/include/gtm/replication.h +++ b/src/include/gtm/replication.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/gtm/replication.h * diff --git a/src/include/gtm/standby_utils.h b/src/include/gtm/standby_utils.h index 88b50a8714..ac80bbac4b 100644 --- a/src/include/gtm/standby_utils.h +++ b/src/include/gtm/standby_utils.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/gtm/standby_utils.h * diff --git a/src/include/gtm/stringinfo.h b/src/include/gtm/stringinfo.h index 881bfe6168..105b338c55 100644 --- a/src/include/gtm/stringinfo.h +++ b/src/include/gtm/stringinfo.h @@ -9,7 +9,7 @@ * * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * $PostgreSQL: pgsql/src/include/lib/stringinfo.h,v 1.35 2008/01/01 19:45:57 momjian Exp $ * diff --git a/src/include/libpq/libpq-be.h b/src/include/libpq/libpq-be.h index 3de1291432..bbed26f160 100644 --- a/src/include/libpq/libpq-be.h +++ b/src/include/libpq/libpq-be.h @@ -174,8 +174,7 @@ typedef struct Port #ifdef USE_SSL SSL *ssl; X509 *peer; - char peer_dn[128 + 1]; - char peer_cn[SM_USER + 1]; + char *peer_cn; unsigned long count; #endif } Port; diff --git a/src/include/libpq/pqcomm.h b/src/include/libpq/pqcomm.h index bd0fa25077..c28ada8b18 100644 --- a/src/include/libpq/pqcomm.h +++ b/src/include/libpq/pqcomm.h @@ -73,6 +73,19 @@ typedef struct DEFAULT_PGSOCKET_DIR, \ (port)) +/* + * The maximum workable length of a socket path is what will fit into + * struct sockaddr_un. This is usually only 100 or so bytes :-(. + * + * For consistency, always pass a MAXPGPATH-sized buffer to UNIXSOCK_PATH(), + * then complain if the resulting string is >= UNIXSOCK_PATH_BUFLEN bytes. + * (Because the standard API for getaddrinfo doesn't allow it to complain in + * a useful way when the socket pathname is too long, we have to test for + * this explicitly, instead of just letting the subroutine return an error.) + */ +#define UNIXSOCK_PATH_BUFLEN sizeof(((struct sockaddr_un *) NULL)->sun_path) + + /* * These manipulate the frontend/backend protocol version number. * diff --git a/src/include/mb/pg_wchar.h b/src/include/mb/pg_wchar.h index 826c7af53b..88960c433b 100644 --- a/src/include/mb/pg_wchar.h +++ b/src/include/mb/pg_wchar.h @@ -49,7 +49,13 @@ typedef unsigned int pg_wchar; /* * Is a prefix byte for "private" single byte encodings? */ -#define IS_LCPRV1(c) ((unsigned char)(c) == 0x9a || (unsigned char)(c) == 0x9b) +#define LCPRV1_A 0x9a +#define LCPRV1_B 0x9b +#define IS_LCPRV1(c) ((unsigned char)(c) == LCPRV1_A || (unsigned char)(c) == LCPRV1_B) +#define IS_LCPRV1_A_RANGE(c) \ + ((unsigned char)(c) >= 0xa0 && (unsigned char)(c) <= 0xdf) +#define IS_LCPRV1_B_RANGE(c) \ + ((unsigned char)(c) >= 0xe0 && (unsigned char)(c) <= 0xef) /* * Is a leading byte for "official" multibyte encodings? */ @@ -57,7 +63,13 @@ typedef unsigned int pg_wchar; /* * Is a prefix byte for "private" multibyte encodings? */ -#define IS_LCPRV2(c) ((unsigned char)(c) == 0x9c || (unsigned char)(c) == 0x9d) +#define LCPRV2_A 0x9c +#define LCPRV2_B 0x9d +#define IS_LCPRV2(c) ((unsigned char)(c) == LCPRV2_A || (unsigned char)(c) == LCPRV2_B) +#define IS_LCPRV2_A_RANGE(c) \ + ((unsigned char)(c) >= 0xf0 && (unsigned char)(c) <= 0xf4) +#define IS_LCPRV2_B_RANGE(c) \ + ((unsigned char)(c) >= 0xf5 && (unsigned char)(c) <= 0xfe) /*---------------------------------------------------- * leading characters @@ -277,7 +289,11 @@ extern pg_enc2gettext pg_enc2gettext_tbl[]; * pg_wchar stuff */ typedef int (*mb2wchar_with_len_converter) (const unsigned char *from, - pg_wchar *to, + pg_wchar *to, + int len); + +typedef int (*wchar2mb_with_len_converter) (const pg_wchar *from, + unsigned char *to, int len); typedef int (*mblen_converter) (const unsigned char *mbstr); @@ -288,8 +304,10 @@ typedef int (*mbverifier) (const unsigned char *mbstr, int len); typedef struct { - mb2wchar_with_len_converter mb2wchar_with_len; /* convert a multibyte - * string to a wchar */ + mb2wchar_with_len_converter mb2wchar_with_len; /* convert a multibyte + * string to a wchar */ + wchar2mb_with_len_converter wchar2mb_with_len; /* convert a wchar + * string to a multibyte */ mblen_converter mblen; /* get byte length of a char */ mbdisplaylen_converter dsplen; /* get display width of a char */ mbverifier mbverify; /* verify multibyte sequence */ @@ -370,6 +388,10 @@ extern int pg_mb2wchar(const char *from, pg_wchar *to); extern int pg_mb2wchar_with_len(const char *from, pg_wchar *to, int len); extern int pg_encoding_mb2wchar_with_len(int encoding, const char *from, pg_wchar *to, int len); +extern int pg_wchar2mb(const pg_wchar *from, char *to); +extern int pg_wchar2mb_with_len(const pg_wchar *from, char *to, int len); +extern int pg_encoding_wchar2mb_with_len(int encoding, + const pg_wchar *from, char *to, int len); extern int pg_char_and_wchar_strcmp(const char *s1, const pg_wchar *s2); extern int pg_wchar_strncmp(const pg_wchar *s1, const pg_wchar *s2, size_t n); extern int pg_char_and_wchar_strncmp(const char *s1, const pg_wchar *s2, size_t n); diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h index e951cf7a92..78d195e096 100644 --- a/src/include/miscadmin.h +++ b/src/include/miscadmin.h @@ -235,6 +235,19 @@ extern bool VacuumCostActive; /* in tcop/postgres.c */ + +#if defined(__ia64__) || defined(__ia64) +typedef struct +{ + char *stack_base_ptr; + char *register_stack_base_ptr; +} pg_stack_base_t; +#else +typedef char *pg_stack_base_t; +#endif + +extern pg_stack_base_t set_stack_base(void); +extern void restore_stack_base(pg_stack_base_t base); extern void check_stack_depth(void); /* in tcop/utility.c */ @@ -383,7 +396,7 @@ extern void ValidatePgVersion(const char *path); extern void process_shared_preload_libraries(void); extern void process_local_preload_libraries(void); extern void pg_bindtextdomain(const char *domain); -extern bool is_authenticated_user_replication_role(void); +extern bool has_rolreplication(Oid roleid); /* in access/transam/xlog.c */ extern bool BackupInProgress(void); diff --git a/src/include/nodes/execnodes.h b/src/include/nodes/execnodes.h index 73eb7c3916..96e09cc64a 100644 --- a/src/include/nodes/execnodes.h +++ b/src/include/nodes/execnodes.h @@ -357,7 +357,7 @@ typedef struct EState /* Stuff used for firing triggers: */ List *es_trig_target_relations; /* trigger-only ResultRelInfos */ TupleTableSlot *es_trig_tuple_slot; /* for trigger output tuples */ - TupleTableSlot *es_trig_oldtup_slot; /* for trigger old tuples */ + TupleTableSlot *es_trig_oldtup_slot; /* for TriggerEnabled */ /* Parameter info: */ ParamListInfo es_param_list_info; /* values of external params */ @@ -404,6 +404,12 @@ typedef struct EState HeapTuple *es_epqTuple; /* array of EPQ substitute tuples */ bool *es_epqTupleSet; /* true if EPQ tuple is provided */ bool *es_epqScanDone; /* true if EPQ tuple has been fetched */ + + /* + * this field added at end of struct to avoid post-release ABI breakage in + * existing release branches. It'll be in a more logical place in 9.2. + */ + TupleTableSlot *es_trig_newtup_slot; /* for TriggerEnabled */ } EState; @@ -566,6 +572,17 @@ typedef struct GenericExprState ExprState *arg; /* state of my child node */ } GenericExprState; +/* ---------------- + * WholeRowVarExprState node + * ---------------- + */ +typedef struct WholeRowVarExprState +{ + ExprState xprstate; + struct PlanState *parent; /* parent PlanState, or NULL if none */ + JunkFilter *wrv_junkFilter; /* JunkFilter to remove resjunk cols */ +} WholeRowVarExprState; + /* ---------------- * AggrefExprState node * ---------------- @@ -714,6 +731,7 @@ typedef struct SubPlanState ExprState *testexpr; /* state of combining expression */ List *args; /* states of argument expression(s) */ HeapTuple curTuple; /* copy of most recent tuple from subplan */ + Datum curArray; /* most recent array from ARRAY() subplan */ /* these are used when hashing the subselect's output: */ ProjectionInfo *projLeft; /* for projecting lefthand exprs */ ProjectionInfo *projRight; /* for projecting subselect output */ diff --git a/src/include/nodes/makefuncs.h b/src/include/nodes/makefuncs.h index 61314608f5..812666211e 100644 --- a/src/include/nodes/makefuncs.h +++ b/src/include/nodes/makefuncs.h @@ -35,7 +35,8 @@ extern Var *makeVarFromTargetEntry(Index varno, extern Var *makeWholeRowVar(RangeTblEntry *rte, Index varno, - Index varlevelsup); + Index varlevelsup, + bool allowScalar); extern TargetEntry *makeTargetEntry(Expr *expr, AttrNumber resno, diff --git a/src/include/nodes/nodes.h b/src/include/nodes/nodes.h index 2e76699f27..a045156a4e 100644 --- a/src/include/nodes/nodes.h +++ b/src/include/nodes/nodes.h @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/nodes/nodes.h * @@ -226,6 +226,7 @@ typedef enum NodeTag T_NullTestState, T_CoerceToDomainState, T_DomainConstraintState, + T_WholeRowVarExprState, /* will be in a more natural position in 9.3 */ /* * TAGS FOR PLANNER NODES (relation.h) @@ -430,6 +431,13 @@ typedef enum NodeTag T_WithClause, T_CommonTableExpr, + /* + * TAGS FOR REPLICATION GRAMMAR PARSE NODES (replnodes.h) + */ + T_IdentifySystemCmd, + T_BaseBackupCmd, + T_StartReplicationCmd, + /* * TAGS FOR RANDOM OTHER STUFF * diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h index 3fa2d3046a..57a83f9cc2 100644 --- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.h @@ -12,7 +12,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/nodes/parsenodes.h * @@ -158,8 +158,8 @@ typedef struct Query #ifdef PGXC /* need this info for PGXC Planner, may be temporary */ char *sql_statement; /* original query */ - bool qry_finalise_aggs; /* used for queries intended for datanodes, - * should datanode finalise the aggregates? */ + bool qry_finalise_aggs; /* used for queries intended for Datanodes, + * should Datanode finalise the aggregates? */ bool is_local; /* enforce query execution on local node * this is used by EXECUTE DIRECT especially. */ #endif @@ -652,7 +652,7 @@ typedef struct XmlSerialize * a stored rule might contain entries for columns dropped since the rule * was created. (This is only possible for columns not actually referenced * in the rule.) When loading a stored rule, we replace the joinaliasvars - * items for any such columns with NULL Consts. (We can't simply delete + * items for any such columns with null pointers. (We can't simply delete * them from the joinaliasvars list, because that would affect the attnums * of Vars referencing the rest of the list.) * @@ -729,13 +729,19 @@ typedef struct RangeTblEntry /* * Fields valid for a join RTE (else NULL/zero): * - * joinaliasvars is a list of Vars or COALESCE expressions corresponding - * to the columns of the join result. An alias Var referencing column K - * of the join result can be replaced by the K'th element of joinaliasvars - * --- but to simplify the task of reverse-listing aliases correctly, we - * do not do that until planning time. In a Query loaded from a stored - * rule, it is also possible for joinaliasvars items to be NULL Consts, - * denoting columns dropped since the rule was made. + * joinaliasvars is a list of (usually) Vars corresponding to the columns + * of the join result. An alias Var referencing column K of the join + * result can be replaced by the K'th element of joinaliasvars --- but to + * simplify the task of reverse-listing aliases correctly, we do not do + * that until planning time. In detail: an element of joinaliasvars can + * be a Var of one of the join's input relations, or such a Var with an + * implicit coercion to the join's output column type, or a COALESCE + * expression containing the two input column Vars (possibly coerced). + * Within a Query loaded from a stored rule, it is also possible for + * joinaliasvars items to be null pointers, which are placeholders for + * (necessarily unreferenced) columns dropped since the rule was made. + * Also, once planning begins, joinaliasvars items can be almost anything, + * as a result of subquery-flattening substitutions. */ JoinType jointype; /* type of join */ List *joinaliasvars; /* list of alias-var expansions */ @@ -1242,6 +1248,8 @@ typedef enum AlterTableType AT_AddOf, /* OF */ AT_DropOf, /* NOT OF */ AT_GenericOptions, /* OPTIONS (...) */ + /* this will be in a more natural position in 9.3: */ + AT_ReAddConstraint /* internal to commands/tablecmds.c */ } AlterTableType; typedef struct AlterTableCmd /* one subcommand of an ALTER TABLE */ @@ -1254,7 +1262,6 @@ typedef struct AlterTableCmd /* one subcommand of an ALTER TABLE */ * constraint, or parent table */ DropBehavior behavior; /* RESTRICT or CASCADE for DROP cases */ bool missing_ok; /* skip error if missing? */ - bool validated; } AlterTableCmd; @@ -1493,8 +1500,9 @@ typedef struct CreateStmt * * If skip_validation is true then we skip checking that the existing rows * in the table satisfy the constraint, and just install the catalog entries - * for the constraint. This is currently used only during CREATE TABLE - * (when we know the table must be empty). + * for the constraint. A new FK constraint is marked as valid iff + * initially_valid is true. (Usually skip_validation and initially_valid + * are inverses, but we can set both true if the table is known empty.) * * Constraint attributes (DEFERRABLE etc) are initially represented as * separate Constraint nodes for simplicity of parsing. parse_utilcmd.c makes @@ -1568,7 +1576,9 @@ typedef struct Constraint char fk_upd_action; /* ON UPDATE action */ char fk_del_action; /* ON DELETE action */ bool skip_validation; /* skip validation of existing rows? */ - bool initially_valid; /* start the new constraint as valid */ + bool initially_valid; /* mark the new constraint as valid? */ + + Oid old_pktable_oid; /* pg_constraint.confrelid of my former self */ } Constraint; /* ---------------------- @@ -2447,7 +2457,7 @@ typedef enum VacuumOption VACOPT_VERBOSE = 1 << 2, /* print progress info */ VACOPT_FREEZE = 1 << 3, /* FREEZE option */ VACOPT_FULL = 1 << 4, /* FULL (non-concurrent) vacuum */ - VACOPT_NOWAIT = 1 << 5 + VACOPT_NOWAIT = 1 << 5 /* don't wait to get lock (autovacuum only) */ } VacuumOption; typedef struct VacuumStmt diff --git a/src/include/nodes/plannodes.h b/src/include/nodes/plannodes.h index 2c490680a1..0266a8ef48 100644 --- a/src/include/nodes/plannodes.h +++ b/src/include/nodes/plannodes.h @@ -491,7 +491,9 @@ typedef struct Join * The nestParams list identifies any executor Params that must be passed * into execution of the inner subplan carrying values from the current row * of the outer subplan. Currently we restrict these values to be simple - * Vars, but perhaps someday that'd be worth relaxing. + * Vars, but perhaps someday that'd be worth relaxing. (Note: during plan + * creation, the paramval can actually be a PlaceHolderVar expression; but it + * must be a Var with varno OUTER_VAR by the time it gets to the executor.) * ---------------- */ typedef struct NestLoop @@ -607,7 +609,7 @@ typedef struct Agg long numGroups; /* estimated number of groups in input */ #ifdef PGXC bool skip_trans; /* apply collection directly on the data received - * from remote data nodes + * from remote Datanodes */ #endif /* PGXC */ } Agg; diff --git a/src/include/nodes/primnodes.h b/src/include/nodes/primnodes.h index dce731cfb8..fb237a5113 100644 --- a/src/include/nodes/primnodes.h +++ b/src/include/nodes/primnodes.h @@ -9,7 +9,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/nodes/primnodes.h * @@ -953,7 +953,8 @@ typedef struct MinMaxExpr * * Note: result type/typmod/collation are not stored, but can be deduced * from the XmlExprOp. The type/typmod fields are just used for display - * purposes, and are NOT the true result type of the node. + * purposes, and are NOT necessarily the true result type of the node. + * (We also use type == InvalidOid to mark a not-yet-parse-analyzed XmlExpr.) */ typedef enum XmlExprOp { diff --git a/src/include/nodes/relation.h b/src/include/nodes/relation.h index 2032482691..14d44ec70d 100644 --- a/src/include/nodes/relation.h +++ b/src/include/nodes/relation.h @@ -76,7 +76,7 @@ typedef struct PlannerGlobal ParamListInfo boundParams; /* Param values provided to planner() */ - List *paramlist; /* to keep track of cross-level Params */ + List *paramlist; /* unused, will be removed in 9.3 */ List *subplans; /* Plans for SubPlan nodes */ @@ -101,6 +101,9 @@ typedef struct PlannerGlobal Index lastRowMarkId; /* highest PlanRowMark ID assigned */ bool transientPlan; /* redo plan when TransactionXmin changes? */ + + /* Added post-release, will be in a saner place in 9.3: */ + int nParamExec; /* number of PARAM_EXEC Params used */ } PlannerGlobal; /* macro for fetching the Plan associated with a SubPlan node */ @@ -229,7 +232,7 @@ typedef struct PlannerInfo int rs_alias_index; /* used to build the alias reference */ /* - * In XC coordinators are supposed to skip the handling of + * In Postgres-XC Coordinators are supposed to skip the handling of * row marks of type ROW_MARK_EXCLUSIVE & ROW_MARK_SHARE. * In order to do that we simply remove such type * of row marks from the list rowMarks. Instead they are saved @@ -249,6 +252,9 @@ typedef struct PlannerInfo /* optional private data for join_search_hook, e.g., GEQO */ void *join_search_private; + + /* Added post-release, will be in a saner place in 9.3: */ + List *plan_params; /* list of PlannerParamItems, see below */ } PlannerInfo; @@ -506,6 +512,9 @@ typedef struct IndexOptInfo bool amsearchnulls; /* can AM search for NULL/NOT NULL entries? */ bool amhasgettuple; /* does AM have amgettuple interface? */ bool amhasgetbitmap; /* does AM have amgetbitmap interface? */ + + /* Added at end of struct to avoid ABI breakage in released branches */ + bool immediate; /* is uniqueness enforced immediately? */ } IndexOptInfo; @@ -578,12 +587,18 @@ typedef struct EquivalenceClass * EquivalenceMember - one member expression of an EquivalenceClass * * em_is_child signifies that this element was built by transposing a member - * for an inheritance parent relation to represent the corresponding expression - * on an inheritance child. These elements are used for constructing - * inner-indexscan paths for the child relation (other types of join are - * driven from transposed joininfo-list entries) and for constructing - * MergeAppend paths for the whole inheritance tree. Note that the EC's - * ec_relids field does NOT include the child relation. + * for an appendrel parent relation to represent the corresponding expression + * for an appendrel child. These members are used for determining the + * pathkeys of scans on the child relation and for explicitly sorting the + * child when necessary to build a MergeAppend path for the whole appendrel + * tree. An em_is_child member has no impact on the properties of the EC as a + * whole; in particular the EC's ec_relids field does NOT include the child + * relation. An em_is_child member should never be marked em_is_const nor + * cause ec_has_const or ec_has_volatile to be set, either. Thus, em_is_child + * members are not really full-fledged members of the EC, but just reflections + * or doppelgangers of real members. Most operations on EquivalenceClasses + * should ignore em_is_child members, and those that don't should test + * em_relids to make sure they only consider relevant members. * * em_datatype is usually the same as exprType(em_expr), but can be * different when dealing with a binary-compatible opfamily; in particular @@ -596,6 +611,7 @@ typedef struct EquivalenceMember Expr *em_expr; /* the expression represented */ Relids em_relids; /* all relids appearing in em_expr */ + Relids em_nullable_relids; /* nullable by lower outer joins */ bool em_is_const; /* expression is pseudoconstant? */ bool em_is_child; /* derived version for a child relation? */ Oid em_datatype; /* the "nominal type" used by the opfamily */ @@ -1433,48 +1449,58 @@ typedef struct MinMaxAggInfo } MinMaxAggInfo; /* - * glob->paramlist keeps track of the PARAM_EXEC slots that we have decided - * we need for the query. At runtime these slots are used to pass values - * around from one plan node to another. They can be used to pass values - * down into subqueries (for outer references in subqueries), or up out of - * subqueries (for the results of a subplan), or from a NestLoop plan node - * into its inner relation (when the inner scan is parameterized with values - * from the outer relation). The n'th entry in the list (n counts from 0) - * corresponds to Param->paramid = n. - * - * Each paramlist item shows the absolute query level it is associated with, - * where the outermost query is level 1 and nested subqueries have higher - * numbers. The item the parameter slot represents can be one of three kinds: - * - * A Var: the slot represents a variable of that level that must be passed + * At runtime, PARAM_EXEC slots are used to pass values around from one plan + * node to another. They can be used to pass values down into subqueries (for + * outer references in subqueries), or up out of subqueries (for the results + * of a subplan), or from a NestLoop plan node into its inner relation (when + * the inner scan is parameterized with values from the outer relation). + * The planner is responsible for assigning nonconflicting PARAM_EXEC IDs to + * the PARAM_EXEC Params it generates. + * + * Outer references are managed via root->plan_params, which is a list of + * PlannerParamItems. While planning a subquery, each parent query level's + * plan_params contains the values required from it by the current subquery. + * During create_plan(), we use plan_params to track values that must be + * passed from outer to inner sides of NestLoop plan nodes. + * + * The item a PlannerParamItem represents can be one of three kinds: + * + * A Var: the slot represents a variable of this level that must be passed * down because subqueries have outer references to it, or must be passed - * from a NestLoop node of that level to its inner scan. The varlevelsup - * value in the Var will always be zero. + * from a NestLoop node to its inner scan. The varlevelsup value in the Var + * will always be zero. + * + * A PlaceHolderVar: this works much like the Var case, except that the + * entry is a PlaceHolderVar node with a contained expression. The PHV + * will have phlevelsup = 0, and the contained expression is adjusted + * to match in level. * * An Aggref (with an expression tree representing its argument): the slot * represents an aggregate expression that is an outer reference for some * subquery. The Aggref itself has agglevelsup = 0, and its argument tree * is adjusted to match in level. * - * A Param: the slot holds the result of a subplan (it is a setParam item - * for that subplan). The absolute level shown for such items corresponds - * to the parent query of the subplan. - * - * Note: we detect duplicate Var parameters and coalesce them into one slot, - * but we do not bother to do this for Aggrefs, and it would be incorrect - * to do so for Param slots. Duplicate detection is actually *necessary* - * in the case of NestLoop parameters since it serves to match up the usage - * of a Param (in the inner scan) with the assignment of the value (in the - * NestLoop node). This might result in the same PARAM_EXEC slot being used - * by multiple NestLoop nodes or SubPlan nodes, but no harm is done since - * the same value would be assigned anyway. + * Note: we detect duplicate Var and PlaceHolderVar parameters and coalesce + * them into one slot, but we do not bother to do that for Aggrefs. + * The scope of duplicate-elimination only extends across the set of + * parameters passed from one query level into a single subquery, or for + * nestloop parameters across the set of nestloop parameters used in a single + * query level. So there is no possibility of a PARAM_EXEC slot being used + * for conflicting purposes. + * + * In addition, PARAM_EXEC slots are assigned for Params representing outputs + * from subplans (values that are setParam items for those subplans). These + * IDs need not be tracked via PlannerParamItems, since we do not need any + * duplicate-elimination nor later processing of the represented expressions. + * Instead, we just record the assignment of the slot number by incrementing + * root->glob->nParamExec. */ typedef struct PlannerParamItem { NodeTag type; - Node *item; /* the Var, Aggref, or Param */ - Index abslevel; /* its absolute query level */ + Node *item; /* the Var, PlaceHolderVar, or Aggref */ + int paramId; /* its assigned PARAM_EXEC slot number */ } PlannerParamItem; #endif /* RELATION_H */ diff --git a/src/include/replication/replnodes.h b/src/include/nodes/replnodes.h similarity index 80% rename from src/include/replication/replnodes.h rename to src/include/nodes/replnodes.h index e027f9203b..8cbd18a24c 100644 --- a/src/include/replication/replnodes.h +++ b/src/include/nodes/replnodes.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * src/include/replication/replnodes.h + * src/include/nodes/replnodes.h * *------------------------------------------------------------------------- */ @@ -15,18 +15,8 @@ #define REPLNODES_H #include "access/xlogdefs.h" -#include "nodes/primnodes.h" -#include "nodes/value.h" +#include "nodes/pg_list.h" -/* - * NodeTags for replication parser - */ -typedef enum ReplNodeTag -{ - T_IdentifySystemCmd = 10, - T_BaseBackupCmd, - T_StartReplicationCmd -} ReplNodeTag; /* ---------------------- * IDENTIFY_SYSTEM command diff --git a/src/include/optimizer/clauses.h b/src/include/optimizer/clauses.h index dde6d82db4..4cef7fadb2 100644 --- a/src/include/optimizer/clauses.h +++ b/src/include/optimizer/clauses.h @@ -48,7 +48,6 @@ extern Expr *make_ands_explicit(List *andclauses); extern List *make_ands_implicit(Expr *clause); extern bool contain_agg_clause(Node *clause); -extern List *pull_agg_clause(Node *clause); extern void count_agg_clauses(PlannerInfo *root, Node *clause, AggClauseCosts *costs); diff --git a/src/include/optimizer/paths.h b/src/include/optimizer/paths.h index 7f1353a2a3..dcc7999233 100644 --- a/src/include/optimizer/paths.h +++ b/src/include/optimizer/paths.h @@ -107,6 +107,7 @@ extern EquivalenceClass *get_eclass_for_sort_expr(PlannerInfo *root, Oid opcintype, Oid collation, Index sortref, + Relids rel, bool create_it); extern void generate_base_implied_equalities(PlannerInfo *root); extern List *generate_join_implied_equalities(PlannerInfo *root, @@ -120,7 +121,8 @@ extern void add_child_rel_equivalences(PlannerInfo *root, RelOptInfo *child_rel); extern void mutate_eclass_expressions(PlannerInfo *root, Node *(*mutator) (), - void *context); + void *context, + bool include_child_exprs); extern List *find_eclass_clauses_for_index_join(PlannerInfo *root, RelOptInfo *rel, Relids outer_relids); diff --git a/src/include/optimizer/placeholder.h b/src/include/optimizer/placeholder.h index cce9e1ef1b..f112419fd5 100644 --- a/src/include/optimizer/placeholder.h +++ b/src/include/optimizer/placeholder.h @@ -20,8 +20,10 @@ extern PlaceHolderVar *make_placeholder_expr(PlannerInfo *root, Expr *expr, Relids phrels); extern PlaceHolderInfo *find_placeholder_info(PlannerInfo *root, - PlaceHolderVar *phv); + PlaceHolderVar *phv, bool create_new_ph); extern void find_placeholders_in_jointree(PlannerInfo *root); +extern void mark_placeholder_maybe_needed(PlannerInfo *root, + PlaceHolderInfo *phinfo, Relids relids); extern void update_placeholder_eval_levels(PlannerInfo *root, SpecialJoinInfo *new_sjinfo); extern void fix_placeholder_input_needed_levels(PlannerInfo *root); diff --git a/src/include/optimizer/plancat.h b/src/include/optimizer/plancat.h index c0b8eda813..5138a8d97c 100644 --- a/src/include/optimizer/plancat.h +++ b/src/include/optimizer/plancat.h @@ -43,11 +43,13 @@ extern bool has_unique_index(RelOptInfo *rel, AttrNumber attno); extern Selectivity restriction_selectivity(PlannerInfo *root, Oid operatorid, List *args, + Oid inputcollid, int varRelid); extern Selectivity join_selectivity(PlannerInfo *root, Oid operatorid, List *args, + Oid inputcollid, JoinType jointype, SpecialJoinInfo *sjinfo); diff --git a/src/include/optimizer/planmain.h b/src/include/optimizer/planmain.h index 3f9b6b681a..5acf5203a2 100644 --- a/src/include/optimizer/planmain.h +++ b/src/include/optimizer/planmain.h @@ -92,7 +92,7 @@ extern int join_collapse_limit; extern void add_base_rels_to_query(PlannerInfo *root, Node *jtnode); extern void build_base_rel_tlists(PlannerInfo *root, List *final_tlist); extern void add_vars_to_targetlist(PlannerInfo *root, List *vars, - Relids where_needed); + Relids where_needed, bool create_new_ph); extern List *deconstruct_jointree(PlannerInfo *root); extern void distribute_restrictinfo_to_rels(PlannerInfo *root, RestrictInfo *restrictinfo); @@ -102,13 +102,15 @@ extern void process_implied_equality(PlannerInfo *root, Expr *item1, Expr *item2, Relids qualscope, + Relids nullable_relids, bool below_outer_join, bool both_const); extern RestrictInfo *build_implied_join_equality(Oid opno, Oid collation, Expr *item1, Expr *item2, - Relids qualscope); + Relids qualscope, + Relids nullable_relids); /* * prototypes for plan/analyzejoins.c @@ -122,10 +124,6 @@ extern Plan *set_plan_references(PlannerGlobal *glob, Plan *plan, List *rtable, List *rowmarks); -extern List *set_returning_clause_references(PlannerGlobal *glob, - List *rlist, - Plan *topplan, - Index resultRelation); extern void fix_opfuncids(Node *node); extern void set_opfuncid(OpExpr *opexpr); extern void set_sa_opfuncid(ScalarArrayOpExpr *opexpr); diff --git a/src/include/optimizer/subselect.h b/src/include/optimizer/subselect.h index ff9e2b7f89..564865ad68 100644 --- a/src/include/optimizer/subselect.h +++ b/src/include/optimizer/subselect.h @@ -29,7 +29,9 @@ extern void SS_finalize_plan(PlannerInfo *root, Plan *plan, bool attach_initplans); extern Param *SS_make_initplan_from_plan(PlannerInfo *root, Plan *plan, Oid resulttype, int32 resulttypmod, Oid resultcollation); -extern Param *assign_nestloop_param(PlannerInfo *root, Var *var); +extern Param *assign_nestloop_param_var(PlannerInfo *root, Var *var); +extern Param *assign_nestloop_param_placeholdervar(PlannerInfo *root, + PlaceHolderVar *phv); extern int SS_assign_special_param(PlannerInfo *root); #endif /* SUBSELECT_H */ diff --git a/src/include/optimizer/tlist.h b/src/include/optimizer/tlist.h index 7af59589dc..d172549a33 100644 --- a/src/include/optimizer/tlist.h +++ b/src/include/optimizer/tlist.h @@ -14,16 +14,21 @@ #ifndef TLIST_H #define TLIST_H -#include "nodes/relation.h" +#include "optimizer/var.h" extern TargetEntry *tlist_member(Node *node, List *targetlist); extern TargetEntry *tlist_member_ignore_relabel(Node *node, List *targetlist); +extern TargetEntry *tlist_member_match_var(Var *var, List *targetlist); -extern List *flatten_tlist(List *tlist); +extern List *flatten_tlist(List *tlist, PVCAggregateBehavior aggbehavior, + PVCPlaceHolderBehavior phbehavior); extern List *add_to_flat_tlist(List *tlist, List *exprs); extern List *get_tlist_exprs(List *tlist, bool includeJunk); + +extern bool tlist_same_exprs(List *tlist1, List *tlist2); + extern bool tlist_same_datatypes(List *tlist, List *colTypes, bool junkOK); extern bool tlist_same_collations(List *tlist, List *colCollations, bool junkOK); diff --git a/src/include/optimizer/var.h b/src/include/optimizer/var.h index 997094ef37..c0172cdc96 100644 --- a/src/include/optimizer/var.h +++ b/src/include/optimizer/var.h @@ -16,11 +16,18 @@ #include "nodes/relation.h" +typedef enum +{ + PVC_REJECT_AGGREGATES, /* throw error if Aggref found */ + PVC_INCLUDE_AGGREGATES, /* include Aggrefs in output list */ + PVC_RECURSE_AGGREGATES /* recurse into Aggref arguments */ +} PVCAggregateBehavior; + typedef enum { PVC_REJECT_PLACEHOLDERS, /* throw error if PlaceHolderVar found */ PVC_INCLUDE_PLACEHOLDERS, /* include PlaceHolderVars in output list */ - PVC_RECURSE_PLACEHOLDERS /* recurse into PlaceHolderVar argument */ + PVC_RECURSE_PLACEHOLDERS /* recurse into PlaceHolderVar arguments */ } PVCPlaceHolderBehavior; extern Relids pull_varnos(Node *node); @@ -33,7 +40,8 @@ extern bool contain_vars_of_level(Node *node, int levelsup); extern int locate_var_of_level(Node *node, int levelsup); extern int locate_var_of_relation(Node *node, int relid, int levelsup); extern int find_minimum_var_level(Node *node); -extern List *pull_var_clause(Node *node, PVCPlaceHolderBehavior behavior); +extern List *pull_var_clause(Node *node, PVCAggregateBehavior aggbehavior, + PVCPlaceHolderBehavior phbehavior); extern Node *flatten_join_alias_vars(PlannerInfo *root, Node *node); #endif /* VAR_H */ diff --git a/src/include/parser/kwlist.h b/src/include/parser/kwlist.h index bf45bfe035..c954e076bb 100644 --- a/src/include/parser/kwlist.h +++ b/src/include/parser/kwlist.h @@ -9,7 +9,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * IDENTIFICATION * src/include/parser/kwlist.h diff --git a/src/include/parser/parse_utilcmd.h b/src/include/parser/parse_utilcmd.h index 67d6fb068b..1b74096433 100644 --- a/src/include/parser/parse_utilcmd.h +++ b/src/include/parser/parse_utilcmd.h @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/parser/parse_utilcmd.h * @@ -19,9 +19,10 @@ extern List *transformCreateStmt(CreateStmt *stmt, const char *queryString); -extern List *transformAlterTableStmt(AlterTableStmt *stmt, +extern List *transformAlterTableStmt(Oid relid, AlterTableStmt *stmt, const char *queryString); -extern IndexStmt *transformIndexStmt(IndexStmt *stmt, const char *queryString); +extern IndexStmt *transformIndexStmt(Oid relid, IndexStmt *stmt, + const char *queryString); extern void transformRuleStmt(RuleStmt *stmt, const char *queryString, List **actions, Node **whereClause); extern List *transformCreateSchemaStmt(CreateSchemaStmt *stmt); diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in index d89e4a54d2..d01d1d10a1 100644 --- a/src/include/pg_config.h.in +++ b/src/include/pg_config.h.in @@ -173,6 +173,9 @@ /* Define to 1 if your compiler understands __FUNCTION__. */ #undef HAVE_FUNCNAME__FUNCTION +/* Define to 1 if you have __sync_lock_test_and_set(int *) and friends. */ +#undef HAVE_GCC_INT_ATOMICS + /* Define to 1 if you have the `getaddrinfo' function. */ #undef HAVE_GETADDRINFO @@ -287,9 +290,6 @@ /* Define to 1 if you have the `crypto' library (-lcrypto). */ #undef HAVE_LIBCRYPTO -/* Define to 1 if you have the `eay32' library (-leay32). */ -#undef HAVE_LIBEAY32 - /* Define to 1 if you have the `ldap' library (-lldap). */ #undef HAVE_LIBLDAP @@ -311,9 +311,6 @@ /* Define to 1 if you have the `ssl' library (-lssl). */ #undef HAVE_LIBSSL -/* Define to 1 if you have the `ssleay32' library (-lssleay32). */ -#undef HAVE_LIBSSLEAY32 - /* Define to 1 if you have the `wldap32' library (-lwldap32). */ #undef HAVE_LIBWLDAP32 @@ -342,6 +339,9 @@ /* Define to 1 if `long long int' works and is 64 bits. */ #undef HAVE_LONG_LONG_INT_64 +/* Define to 1 if you have the `mbstowcs_l' function. */ +#undef HAVE_MBSTOWCS_L + /* Define to 1 if you have the `memmove' function. */ #undef HAVE_MEMMOVE @@ -717,6 +717,9 @@ /* A string containing the version number, platform, and C compiler */ #undef PG_VERSION_STR +/* A string containing the version number of Postgres-XC, platform, and C compiler */ +#undef PGXC_VERSION_STR + /* Define to 1 to allow profiling output to be saved separately for each process. */ #undef PROFILE_PID_DIR diff --git a/src/include/pg_config.h.win32 b/src/include/pg_config.h.win32 index 3d0b1eea80..dc28ff4513 100644 --- a/src/include/pg_config.h.win32 +++ b/src/include/pg_config.h.win32 @@ -214,9 +214,6 @@ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ -/* Define to 1 if you have the `eay32' library (-leay32). */ -/* #undef HAVE_LIBEAY32 */ - /* Define to 1 if you have the `ldap' library (-lldap). */ /* #undef HAVE_LIBLDAP */ @@ -229,9 +226,6 @@ /* Define to 1 if you have the `ssl' library (-lssl). */ /* #undef HAVE_LIBSSL */ -/* Define to 1 if you have the `ssleay32' library (-lssleay32). */ -/* #undef HAVE_LIBSSLEAY32 */ - /* Define to 1 if you have the `wldap32' library (-lwldap32). */ /* #undef HAVE_LIBWLDAP32 */ @@ -255,6 +249,9 @@ #define HAVE_LONG_LONG_INT_64 #endif +/* Define to 1 if you have the `mbstowcs_l' function. */ +#define HAVE_MBSTOWCS_L 1 + /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 @@ -569,25 +566,25 @@ #define PACKAGE_NAME "Postgres-XC" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "Postgres-XC 1.0beta1" +#define PACKAGE_STRING "Postgres-XC 1.0.4" /* Define to the version of this package. */ -#define PACKAGE_VERSION "9.1beta2" +#define PACKAGE_VERSION "9.1.13" /* PostgreSQL version as a string */ -#define PG_VERSION "9.1beta2" +#define PG_VERSION "9.1.13" /* PostgreSQL version as a number */ -#define PG_VERSION_NUM 90100 +#define PG_VERSION_NUM 90113 /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "postgres-xc" /* Postgres-XC version as a string */ -#define PGXC_VERSION "1.0beta1" +#define PGXC_VERSION "1.0.2" /* Postgres-XC version as a number */ -#define PGXC_VERSION_NUM 10000 +#define PGXC_VERSION_NUM 10001 /* Define to the name of the default PostgreSQL service principal in Kerberos. (--with-krb-srvnam=NAME) */ @@ -596,6 +593,9 @@ /* A string containing the version number, platform, and C compiler */ #define PG_VERSION_STR "Uninitialized version string (win32)" +/* A string containing the version number, platform, and C compiler */ +#define PGXC_VERSION_STR "Uninitialized version string (win32)" + /* Define to the necessary symbol if this constant uses a non-standard name on your system. */ /* #undef PTHREAD_CREATE_JOINABLE */ diff --git a/src/include/pg_config_manual.h b/src/include/pg_config_manual.h index 5f4cf93a24..6c8e31269c 100644 --- a/src/include/pg_config_manual.h +++ b/src/include/pg_config_manual.h @@ -218,7 +218,7 @@ * Enable debugging print statements for WAL-related operations; see * also the wal_debug GUC var. */ -#define WAL_DEBUG +/* #define WAL_DEBUG */ /* * Enable tracing of resource consumption during sort operations; diff --git a/src/include/pgtime.h b/src/include/pgtime.h index e73cfa51a4..a74059cb07 100644 --- a/src/include/pgtime.h +++ b/src/include/pgtime.h @@ -55,6 +55,8 @@ extern size_t pg_strftime(char *s, size_t max, const char *format, extern void pg_timezone_pre_initialize(void); extern void pg_timezone_initialize(void); extern pg_tz *pg_tzset(const char *tzname); +extern pg_tz *pg_tzset_offset(long gmtoffset); + extern bool tz_acceptable(pg_tz *tz); extern bool pg_get_timezone_offset(const pg_tz *tz, long int *gmtoff); extern const char *pg_get_timezone_name(pg_tz *tz); diff --git a/src/include/pgxc/barrier.h b/src/include/pgxc/barrier.h index f0fcb9dc8a..e062ed5370 100644 --- a/src/include/pgxc/barrier.h +++ b/src/include/pgxc/barrier.h @@ -5,11 +5,10 @@ * Definitions for the PITR barrier handling * * - * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * - * IDENTIFICATION - * $$ + * src/include/pgxc/barrier.h * *------------------------------------------------------------------------- */ diff --git a/src/include/pgxc/execRemote.h b/src/include/pgxc/execRemote.h index 2995b845ae..a6cd106512 100644 --- a/src/include/pgxc/execRemote.h +++ b/src/include/pgxc/execRemote.h @@ -2,14 +2,13 @@ * * execRemote.h * - * Functions to execute commands on multiple Data Nodes + * Functions to execute commands on multiple Datanodes * * - * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group ? - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * - * IDENTIFICATION - * $$ + * src/include/pgxc/execRemote.h * *------------------------------------------------------------------------- */ @@ -25,10 +24,8 @@ #include "nodes/execnodes.h" #include "nodes/pg_list.h" #include "tcop/dest.h" -#include "utils/snapshot.h" -#ifdef PGXC #include "tcop/pquery.h" -#endif +#include "utils/snapshot.h" /* GUC parameters */ extern bool EnforceTwoPhaseCommit; @@ -75,7 +72,7 @@ typedef struct RemoteQueryState { ScanState ss; /* its first field is NodeTag */ int node_count; /* total count of participating nodes */ - PGXCNodeHandle **connections; /* data node connections being combined */ + PGXCNodeHandle **connections; /* Datanode connections being combined */ int conn_count; /* count of active connections */ int current_conn; /* used to balance load when reading from connections */ CombineType combine_type; /* see CombineType enum */ @@ -88,7 +85,7 @@ typedef struct RemoteQueryState char errorCode[5]; /* error code to send back to client */ char *errorMessage; /* error message to send back to client */ char *errorDetail; /* error detail to send back to client */ - bool query_Done; /* query has been sent down to data nodes */ + bool query_Done; /* query has been sent down to Datanodes */ RemoteDataRowData currentRow; /* next data ro to be wrapped into a tuple */ /* TODO use a tuplestore as a rowbuffer */ List *rowBuffer; /* buffer where rows are stored when connection @@ -116,7 +113,7 @@ typedef struct RemoteQueryState char *cursor; /* cursor name */ char *update_cursor; /* throw this cursor current tuple can be updated */ int cursor_count; /* total count of participating nodes */ - PGXCNodeHandle **cursor_connections;/* data node connections being combined */ + PGXCNodeHandle **cursor_connections;/* Datanode connections being combined */ /* Support for parameters */ char *paramval_data; /* parameter data, format is like in BIND */ int paramval_len; /* length of parameter values data */ @@ -139,7 +136,7 @@ extern bool PGXCNodeRollbackPrepared(char *gid); extern void PGXCNodeCommitPrepared(char *gid); /* Copy command just involves Datanodes */ -extern PGXCNodeHandle** DataNodeCopyBegin(const char *query, List *nodelist, Snapshot snapshot, bool is_from); +extern PGXCNodeHandle** DataNodeCopyBegin(const char *query, List *nodelist, Snapshot snapshot); extern int DataNodeCopyIn(char *data_row, int len, ExecNodes *exec_nodes, PGXCNodeHandle** copy_connections); extern uint64 DataNodeCopyOut(ExecNodes *exec_nodes, PGXCNodeHandle** copy_connections, FILE* copy_file); extern void DataNodeCopyFinish(PGXCNodeHandle** copy_connections, int primary_dn_index, CombineType combine_type); diff --git a/src/include/pgxc/groupmgr.h b/src/include/pgxc/groupmgr.h index 2e797da2e9..31d15ed633 100644 --- a/src/include/pgxc/groupmgr.h +++ b/src/include/pgxc/groupmgr.h @@ -4,14 +4,11 @@ * Routines for PGXC node group management * * - * Portions Copyright (c) 1996-2010 PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 1996-2011 PostgreSQL Global Development Group + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/pgxc/groupmgr.h * - * IDENTIFICATION - * $$ - * *------------------------------------------------------------------------- */ #ifndef GROUPMGR_H diff --git a/src/include/pgxc/locator.h b/src/include/pgxc/locator.h index d35d24f205..2ee236723f 100644 --- a/src/include/pgxc/locator.h +++ b/src/include/pgxc/locator.h @@ -4,11 +4,9 @@ * Externally declared locator functions * * - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * - * - * IDENTIFICATION - * $$ + * src/include/pgxc/locator.h * *------------------------------------------------------------------------- */ @@ -27,13 +25,12 @@ * scheme, e.g. result of JOIN of * replicated and distributed table */ -/* Maximum number of preferred datanodes that can be defined in cluster */ +/* Maximum number of preferred Datanodes that can be defined in cluster */ #define MAX_PREFERRED_NODES 64 #define HASH_SIZE 4096 #define HASH_MASK 0x00000FFF; -#define IsLocatorReplicated(x) (x == LOCATOR_TYPE_REPLICATED) #define IsLocatorNone(x) (x == LOCATOR_TYPE_NONE) #define IsLocatorReplicated(x) (x == LOCATOR_TYPE_REPLICATED) #define IsLocatorColumnDistributed(x) (x == LOCATOR_TYPE_HASH || \ diff --git a/src/include/pgxc/nodemgr.h b/src/include/pgxc/nodemgr.h index 86471fed28..b9400d0d77 100644 --- a/src/include/pgxc/nodemgr.h +++ b/src/include/pgxc/nodemgr.h @@ -4,14 +4,11 @@ * Routines for node management * * - * Portions Copyright (c) 1996-2010 PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 1996-2011 PostgreSQL Global Development Group + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/pgxc/nodemgr.h * - * IDENTIFICATION - * $$ - * *------------------------------------------------------------------------- */ #ifndef NODEMGR_H diff --git a/src/include/pgxc/pgxc.h b/src/include/pgxc/pgxc.h index 1d1821c789..6724dd1e5b 100644 --- a/src/include/pgxc/pgxc.h +++ b/src/include/pgxc/pgxc.h @@ -1,14 +1,13 @@ /*------------------------------------------------------------------------- * * pgxc.h - * PG-XC + * Postgres-XC flags and connection control information * * - * Portions Copyright (c) 1996-2010 PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 1996-2011 PostgreSQL Global Development Group + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * - * IDENTIFICATION - * $$ + * src/include/pgxc/pgxc.h * *------------------------------------------------------------------------- */ diff --git a/src/include/pgxc/pgxcnode.h b/src/include/pgxc/pgxcnode.h index 428b5e9ae4..2e440e2bd2 100644 --- a/src/include/pgxc/pgxcnode.h +++ b/src/include/pgxc/pgxcnode.h @@ -5,11 +5,10 @@ * Utility functions to communicate to Datanodes and Coordinators * * - * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group ? - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group ? + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * - * IDENTIFICATION - * $$ + * src/include/pgxc/pgxcnode.h * *------------------------------------------------------------------------- */ @@ -25,12 +24,13 @@ #define NO_SOCKET -1 +#define PGXCNODE_CANCEL_DELAY 10 /* Cancel delay duration in millisecond */ -/* Connection to data node maintained by Pool Manager */ +/* Connection to Datanode maintained by Pool Manager */ typedef struct PGconn NODE_CONNECTION; typedef struct PGcancel NODE_CANCEL; -/* Helper structure to access data node from Session */ +/* Helper structure to access Datanode from Session */ typedef enum { DN_CONNECTION_STATE_IDLE, /* idle, ready for query */ @@ -54,7 +54,7 @@ typedef enum * Response checking is required in case of PREPARE TRANSACTION and should not be done for the rest * of the cases for performance reasons, hence we have an option to ignore response checking. * The problem with PREPARE TRANSACTION is that it can result in a ROLLBACK response - * yet coordinator would think it got done on all nodes. + * yet Coordinator would think it got done on all nodes. * If we ignore ROLLBACK response then we would try to COMMIT a transaction that * never got prepared, which in an incorrect behavior. */ @@ -100,8 +100,8 @@ struct pgxc_node_handle size_t inEnd; size_t inCursor; - /* - * Have a variable to enable/disable response checking and + /* + * Have a variable to enable/disable response checking and * if enable then read the result of response checking * * For details see comments of RESP_ROLLBACK diff --git a/src/include/pgxc/planner.h b/src/include/pgxc/planner.h index c9310b4b0e..531c9616f7 100644 --- a/src/include/pgxc/planner.h +++ b/src/include/pgxc/planner.h @@ -4,11 +4,10 @@ * Externally declared locator functions * * - * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group ? - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * - * IDENTIFICATION - * $$ + * src/include/pgxc/planner.h * *------------------------------------------------------------------------- */ @@ -80,36 +79,37 @@ typedef enum */ typedef struct { - Scan scan; - ExecDirectType exec_direct_type; /* track if remote query is execute direct and what type it is */ - char *sql_statement; - ExecNodes *exec_nodes; /* List of Datanodes where to launch query */ - CombineType combine_type; - SimpleSort *sort; - bool read_only; /* do not use 2PC when committing read only steps */ - bool force_autocommit; /* some commands like VACUUM require autocommit mode */ - char *statement; /* if specified use it as a PreparedStatement name on data nodes */ - char *cursor; /* if specified use it as a Portal name on data nodes */ - int num_params; /* number of parameters specified for Prepared statement */ - Oid *param_types; /* parameter types, this pointer is shared - * across all the RemoteQuery nodes in the - * plan. So, don't change this once set. - */ - RemoteQueryExecType exec_type; - bool is_temp; /* determine if this remote node is based - * on a temporary objects (no 2PC) */ - - int reduce_level; /* in case of reduced JOIN, it's level */ - List *base_tlist; /* in case of isReduced, the base tlist */ - char *outer_alias; - char *inner_alias; - int outer_reduce_level; - int inner_reduce_level; - Relids outer_relids; - Relids inner_relids; - char *inner_statement; - char *outer_statement; - char *join_condition; + Scan scan; + ExecDirectType exec_direct_type; /* track if remote query is execute direct and what type it is */ + char *sql_statement; + ExecNodes *exec_nodes; /* List of Datanodes where to launch query */ + CombineType combine_type; + SimpleSort *sort; + bool read_only; /* do not use 2PC when committing read only steps */ + bool force_autocommit; /* some commands like VACUUM require autocommit mode */ + char *statement; /* if specified use it as a PreparedStatement name on Datanodes */ + char *cursor; /* if specified use it as a Portal name on Datanodes */ + int num_params; /* number of parameters specified for Prepared statement */ + Oid *param_types; /* parameter types, this pointer is shared + * across all the RemoteQuery nodes in the + * plan. So, don't change this once set. + */ + RemoteQueryExecType exec_type; + bool is_temp; /* determine if this remote node is based + * on a temporary objects (no 2PC) */ + + int reduce_level; /* in case of reduced JOIN, it's level */ + List *base_tlist; /* in case of isReduced, the base tlist */ + char *outer_alias; + char *inner_alias; + int outer_reduce_level; + int inner_reduce_level; + Relids outer_relids; + Relids inner_relids; + char *inner_statement; + char *outer_statement; + char *join_condition; + bool has_row_marks; /* Did SELECT had FOR UPDATE/SHARE? */ } RemoteQuery; /* @@ -142,7 +142,7 @@ typedef enum FQS_UNSHIPPABLE_EXPR = 0, /* it has unshippable expression */ FQS_SINGLENODE_EXPR, /* it has single node expression, like * aggregates, ORDER BY etc. */ - FQS_NEEDS_COORD, /* the query needs coordinator */ + FQS_NEEDS_COORD, /* the query needs Coordinator */ FQS_VARLEVEL, /* one of its subqueries has a VAR * referencing an upper level query * relation */ diff --git a/src/include/pgxc/poolcomm.h b/src/include/pgxc/poolcomm.h index a4183a2f84..cb00197038 100644 --- a/src/include/pgxc/poolcomm.h +++ b/src/include/pgxc/poolcomm.h @@ -5,11 +5,10 @@ * Definitions for the Pooler-Seesion communications. * * - * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * - * IDENTIFICATION - * $$ + * src/include/pgxc/poolcomm.h * *------------------------------------------------------------------------- */ diff --git a/src/include/pgxc/poolmgr.h b/src/include/pgxc/poolmgr.h index 8ce24f4fd6..8462f6d375 100644 --- a/src/include/pgxc/poolmgr.h +++ b/src/include/pgxc/poolmgr.h @@ -2,14 +2,13 @@ * * poolmgr.h * - * Definitions for the data nodes connection pool. + * Definitions for the Datanode connection pool. * * - * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * - * IDENTIFICATION - * $$ + * src/include/pgxc/poolmgr.h * *------------------------------------------------------------------------- */ @@ -44,7 +43,7 @@ * They are sent to remote nodes invloved in the transaction after sending * BEGIN TRANSACTION using a special firing protocol. * They cannot be sent when connections are obtained, making them having no - * effect as BEGIN is sent by backend after connections are obtained and + * effect as BEGIN is sent by backend after connections are obtained and * obtention confirmation has been sent back to backend. * SET CONSTRAINT, SET LOCAL commands are in this category. * @@ -200,7 +199,7 @@ extern int PoolManagerAbortTransactions(char *dbname, char *username, int **proc /* Return connections back to the pool, for both Coordinator and Datanode connections */ extern void PoolManagerReleaseConnections(void); -/* Cancel a running query on data nodes as well as on other coordinators */ +/* Cancel a running query on Datanodes as well as on other Coordinators */ extern void PoolManagerCancelQuery(int dn_count, int* dn_list, int co_count, int* co_list); /* Lock/unlock pool manager */ diff --git a/src/include/pgxc/poolutils.h b/src/include/pgxc/poolutils.h index 45af425fd0..ed0ce38be5 100644 --- a/src/include/pgxc/poolutils.h +++ b/src/include/pgxc/poolutils.h @@ -4,11 +4,10 @@ * * Utilities for Postgres-XC Pooler * - * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * - * IDENTIFICATION - * $$ + * src/include/pgxc/poolutils.h * *------------------------------------------------------------------------- */ diff --git a/src/include/pgxc/postgresql_fdw.h b/src/include/pgxc/postgresql_fdw.h index e092951226..c8cc46ca7f 100644 --- a/src/include/pgxc/postgresql_fdw.h +++ b/src/include/pgxc/postgresql_fdw.h @@ -4,10 +4,10 @@ * * foreign-data wrapper for PostgreSQL * - * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * - * IDENTIFICATION - * $PostgreSQL$ + * src/include/pgxc/postgresql_fdw.h * *------------------------------------------------------------------------- */ diff --git a/src/include/pgxc/xc_maintenance_mode.h b/src/include/pgxc/xc_maintenance_mode.h index a96148c385..797357c7b4 100644 --- a/src/include/pgxc/xc_maintenance_mode.h +++ b/src/include/pgxc/xc_maintenance_mode.h @@ -1,3 +1,16 @@ +/*------------------------------------------------------------------------- + * + * pgxc.h + * XC maintenance mode stuff + * + * + * Portions Copyright (c) 1996-2011 PostgreSQL Global Development Group + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group + * + * src/include/pgxc/xc_maintenance_mode.h + * + *------------------------------------------------------------------------- + */ #ifndef XC_MAINTENANCE_MODE_H #define XC_MAINTENANCE_MODE_H diff --git a/src/include/port.h b/src/include/port.h index 4c7ed64317..39d37c9a8c 100644 --- a/src/include/port.h +++ b/src/include/port.h @@ -109,11 +109,8 @@ extern BOOL AddUserToTokenDacl(HANDLE hToken); #if defined(WIN32) && !defined(__CYGWIN__) #define DEVNULL "nul" -/* "con" does not work from the Msys 1.0.10 console (part of MinGW). */ -#define DEVTTY "con" #else #define DEVNULL "/dev/null" -#define DEVTTY "/dev/tty" #endif /* @@ -183,15 +180,6 @@ extern unsigned char pg_ascii_tolower(unsigned char ch); #ifdef printf #undef printf #endif -/* - * Versions of libintl >= 0.18? try to replace setlocale() with a macro - * to their own versions. Remove the macro, if it exists, because it - * ends up calling the wrong version when the backend and libintl use - * different versions of msvcrt. - */ -#if defined(setlocale) && defined(WIN32) -#undef setlocale -#endif extern int pg_vsnprintf(char *str, size_t count, const char *fmt, va_list args); extern int @@ -234,6 +222,27 @@ __attribute__((format(PG_PRINTF_ATTRIBUTE, 1, 2))); #endif #endif /* USE_REPL_SNPRINTF */ +#if defined(WIN32) +/* + * Versions of libintl >= 0.18? try to replace setlocale() with a macro + * to their own versions. Remove the macro, if it exists, because it + * ends up calling the wrong version when the backend and libintl use + * different versions of msvcrt. + */ +#if defined(setlocale) +#undef setlocale +#endif + +/* + * Define our own wrapper macro around setlocale() to work around bugs in + * Windows' native setlocale() function. + */ +extern char *pgwin32_setlocale(int category, const char *locale); + +#define setlocale(a,b) pgwin32_setlocale(a,b) + +#endif /* WIN32 */ + /* Portable prompt handling */ extern char *simple_prompt(const char *prompt, int maxlen, bool echo); diff --git a/src/include/port/win32.h b/src/include/port/win32.h index 34f4004129..6a40a32226 100644 --- a/src/include/port/win32.h +++ b/src/include/port/win32.h @@ -264,15 +264,25 @@ typedef int pid_t; #undef EINTR #define EINTR WSAEINTR #define EAGAIN WSAEWOULDBLOCK +#undef EMSGSIZE #define EMSGSIZE WSAEMSGSIZE +#undef EAFNOSUPPORT #define EAFNOSUPPORT WSAEAFNOSUPPORT +#undef EWOULDBLOCK #define EWOULDBLOCK WSAEWOULDBLOCK +#undef ECONNRESET #define ECONNRESET WSAECONNRESET +#undef EINPROGRESS #define EINPROGRESS WSAEINPROGRESS +#undef ENOBUFS #define ENOBUFS WSAENOBUFS +#undef EPROTONOSUPPORT #define EPROTONOSUPPORT WSAEPROTONOSUPPORT +#undef ECONNREFUSED #define ECONNREFUSED WSAECONNREFUSED +#undef EBADFD #define EBADFD WSAENOTSOCK +#undef EOPNOTSUPP #define EOPNOTSUPP WSAEOPNOTSUPP /* diff --git a/src/include/postgres.h b/src/include/postgres.h index 5231736914..7f1151a7bb 100644 --- a/src/include/postgres.h +++ b/src/include/postgres.h @@ -9,7 +9,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1995, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/postgres.h * diff --git a/src/include/postmaster/autovacuum.h b/src/include/postmaster/autovacuum.h index 6eaf00efbc..722bd66e4a 100644 --- a/src/include/postmaster/autovacuum.h +++ b/src/include/postmaster/autovacuum.h @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/postmaster/autovacuum.h * diff --git a/src/include/postmaster/bgwriter.h b/src/include/postmaster/bgwriter.h index eaf2206f5e..447bc8ffa1 100644 --- a/src/include/postmaster/bgwriter.h +++ b/src/include/postmaster/bgwriter.h @@ -27,7 +27,7 @@ extern void BackgroundWriterMain(void); extern void RequestCheckpoint(int flags); extern void CheckpointWriteDelay(int flags, double progress); -extern bool ForwardFsyncRequest(RelFileNodeBackend rnode, ForkNumber forknum, +extern bool ForwardFsyncRequest(RelFileNode rnode, ForkNumber forknum, BlockNumber segno); extern void AbsorbFsyncRequests(void); diff --git a/src/include/regex/regerrs.h b/src/include/regex/regerrs.h index a761371e5d..809b511266 100644 --- a/src/include/regex/regerrs.h +++ b/src/include/regex/regerrs.h @@ -77,3 +77,11 @@ { REG_ETOOBIG, "REG_ETOOBIG", "nfa has too many states" }, + +{ + REG_ECOLORS, "REG_ECOLORS", "too many colors" +}, + +{ + REG_CANCEL, "REG_CANCEL", "operation cancelled" +}, diff --git a/src/include/regex/regex.h b/src/include/regex/regex.h index cec4b837cd..2c7fa4df46 100644 --- a/src/include/regex/regex.h +++ b/src/include/regex/regex.h @@ -153,9 +153,14 @@ typedef struct #define REG_MIXED 17 /* character widths of regex and string differ */ #define REG_BADOPT 18 /* invalid embedded option */ #define REG_ETOOBIG 19 /* nfa has too many states */ +#define REG_ECOLORS 20 /* too many colors */ +#define REG_CANCEL 21 /* operation cancelled */ /* two specials for debugging and testing */ #define REG_ATOI 101 /* convert error-code name to number */ #define REG_ITOA 102 /* convert error-code number to name */ +/* non-error result codes for pg_regprefix */ +#define REG_PREFIX (-1) /* identified a common prefix */ +#define REG_EXACT (-2) /* identified an exact match */ @@ -164,6 +169,7 @@ typedef struct */ extern int pg_regcomp(regex_t *, const pg_wchar *, size_t, int, Oid); extern int pg_regexec(regex_t *, const pg_wchar *, size_t, size_t, rm_detail_t *, size_t, regmatch_t[], int); +extern int pg_regprefix(regex_t *, pg_wchar **, size_t *); extern void pg_regfree(regex_t *); extern size_t pg_regerror(int, const regex_t *, char *, size_t); extern void pg_set_regex_collation(Oid collation); diff --git a/src/include/regex/regguts.h b/src/include/regex/regguts.h index 0cced701db..55e1696fe8 100644 --- a/src/include/regex/regguts.h +++ b/src/include/regex/regguts.h @@ -148,6 +148,7 @@ typedef short color; /* colors of characters */ typedef int pcolor; /* what color promotes to */ +#define MAX_COLOR 32767 /* max color (must fit in 'color' datatype) */ #define COLORLESS (-1) /* impossible color */ #define WHITE 0 /* default color, parent of all others */ @@ -188,6 +189,7 @@ struct colordesc color sub; /* open subcolor (if any); free chain ptr */ #define NOSUB COLORLESS struct arc *arcs; /* color chain */ + chr firstchr; /* char first assigned to this color */ int flags; #define FREECOL 01 /* currently free */ #define PSEUDO 02 /* pseudocolor, no real chars */ @@ -255,15 +257,14 @@ struct state; struct arc { - int type; -#define ARCFREE '\0' + int type; /* 0 if free, else an NFA arc type code */ color co; struct state *from; /* where it's from (and contained within) */ struct state *to; /* where it's to */ - struct arc *outchain; /* *from's outs chain or free chain */ + struct arc *outchain; /* link in *from's outs chain or free chain */ #define freechain outchain - struct arc *inchain; /* *to's ins chain */ - struct arc *colorchain; /* color's arc chain */ + struct arc *inchain; /* link in *to's ins chain */ + struct arc *colorchain; /* link in color's arc chain */ struct arc *colorchainRev; /* back-link in color's arc chain */ }; @@ -315,24 +316,38 @@ struct nfa /* * definitions for compacted NFA + * + * The main space savings in a compacted NFA is from making the arcs as small + * as possible. We store only the transition color and next-state number for + * each arc. The list of out arcs for each state is an array beginning at + * cnfa.states[statenumber], and terminated by a dummy carc struct with + * co == COLORLESS. + * + * The non-dummy carc structs are of two types: plain arcs and LACON arcs. + * Plain arcs just store the transition color number as "co". LACON arcs + * store the lookahead constraint number plus cnfa.ncolors as "co". LACON + * arcs can be distinguished from plain by testing for co >= cnfa.ncolors. */ struct carc { color co; /* COLORLESS is list terminator */ - int to; /* state number */ + int to; /* next-state number */ }; struct cnfa { int nstates; /* number of states */ - int ncolors; /* number of colors */ + int ncolors; /* number of colors (max color in use + 1) */ int flags; -#define HASLACONS 01 /* uses lookahead constraints */ +#define HASLACONS 01 /* uses lookahead constraints */ int pre; /* setup state number */ int post; /* teardown state number */ color bos[2]; /* colors, if any, assigned to BOS and BOL */ color eos[2]; /* colors, if any, assigned to EOS and EOL */ + char *stflags; /* vector of per-state flags bytes */ +#define CNFA_NOPROGRESS 01 /* flag bit for a no-progress state */ struct carc **states; /* vector of pointers to outarc lists */ + /* states[n] are pointers into a single malloc'd array of arcs */ struct carc *arcs; /* the area for the lists */ }; @@ -388,8 +403,11 @@ struct subre struct fns { void FUNCPTR(free, (regex_t *)); + int FUNCPTR(cancel_requested, (void)); }; +#define CANCEL_REQUESTED(re) \ + ((*((struct fns *) (re)->re_fns)->cancel_requested) ()) /* diff --git a/src/include/replication/basebackup.h b/src/include/replication/basebackup.h index 831c33fb4a..7ce1f38372 100644 --- a/src/include/replication/basebackup.h +++ b/src/include/replication/basebackup.h @@ -5,14 +5,14 @@ * * Portions Copyright (c) 2010-2011, PostgreSQL Global Development Group * - * src/include/replication/walsender.h + * src/include/replication/basebackup.h * *------------------------------------------------------------------------- */ #ifndef _BASEBACKUP_H #define _BASEBACKUP_H -#include "replication/replnodes.h" +#include "nodes/replnodes.h" extern void SendBaseBackup(BaseBackupCmd *cmd); diff --git a/src/include/replication/syncrep.h b/src/include/replication/syncrep.h index efbebbcc06..14e62005bf 100644 --- a/src/include/replication/syncrep.h +++ b/src/include/replication/syncrep.h @@ -33,14 +33,14 @@ extern char *SyncRepStandbyNames; /* called by user backend */ extern void SyncRepWaitForLSN(XLogRecPtr XactCommitLSN); -/* callback at backend exit */ -extern void SyncRepCleanupAtProcExit(int code, Datum arg); +/* called at backend exit */ +extern void SyncRepCleanupAtProcExit(void); /* called by wal sender */ extern void SyncRepInitConfig(void); extern void SyncRepReleaseWaiters(void); -/* called by wal writer */ +/* called by bgwriter */ extern void SyncRepUpdateSyncStandbysDefined(void); /* called by various procs */ diff --git a/src/include/rewrite/rewriteHandler.h b/src/include/rewrite/rewriteHandler.h index 53b31c54a2..eec88ca4fb 100644 --- a/src/include/rewrite/rewriteHandler.h +++ b/src/include/rewrite/rewriteHandler.h @@ -18,7 +18,9 @@ #include "nodes/parsenodes.h" extern List *QueryRewrite(Query *parsetree); -extern void AcquireRewriteLocks(Query *parsetree, bool forUpdatePushedDown); +extern void AcquireRewriteLocks(Query *parsetree, + bool forExecute, + bool forUpdatePushedDown); extern Node *build_column_default(Relation rel, int attrno); #ifdef PGXC diff --git a/src/include/rewrite/rewriteManip.h b/src/include/rewrite/rewriteManip.h index 4f1026bf90..18f89c49e2 100644 --- a/src/include/rewrite/rewriteManip.h +++ b/src/include/rewrite/rewriteManip.h @@ -65,6 +65,11 @@ extern Node *replace_rte_variables(Node *node, extern Node *replace_rte_variables_mutator(Node *node, replace_rte_variables_context *context); +extern Node *map_variable_attnos(Node *node, + int target_varno, int sublevels_up, + const AttrNumber *attno_map, int map_length, + bool *found_whole_row); + extern Node *ResolveNew(Node *node, int target_varno, int sublevels_up, RangeTblEntry *target_rte, List *targetlist, int event, int update_varno, diff --git a/src/include/storage/bufmgr.h b/src/include/storage/bufmgr.h index b8fc87ec57..15d9101edf 100644 --- a/src/include/storage/bufmgr.h +++ b/src/include/storage/bufmgr.h @@ -38,7 +38,9 @@ typedef enum RBM_NORMAL, /* Normal read */ RBM_ZERO, /* Don't read from disk, caller will * initialize */ - RBM_ZERO_ON_ERROR /* Read, but return an all-zeros page on error */ + RBM_ZERO_ON_ERROR, /* Read, but return an all-zeros page on error */ + RBM_NORMAL_NO_LOG /* Don't log page as invalid during WAL + * replay; otherwise same as RBM_NORMAL */ } ReadBufferMode; /* in globals.c ... this duplicates miscadmin.h */ diff --git a/src/include/storage/fd.h b/src/include/storage/fd.h index 8a4d07c553..dc0aada35b 100644 --- a/src/include/storage/fd.h +++ b/src/include/storage/fd.h @@ -61,7 +61,6 @@ extern int max_files_per_process; /* Operations on virtual Files --- equivalent to Unix kernel file ops */ extern File PathNameOpenFile(FileName fileName, int fileFlags, int fileMode); extern File OpenTemporaryFile(bool interXact); -extern void FileSetTransient(File file); extern void FileClose(File file); extern int FilePrefetch(File file, off_t offset, int amount); extern int FileRead(File file, char *buffer, int amount); diff --git a/src/include/storage/latch.h b/src/include/storage/latch.h index 03ec07119b..17aafbb359 100644 --- a/src/include/storage/latch.h +++ b/src/include/storage/latch.h @@ -3,6 +3,66 @@ * latch.h * Routines for interprocess latches * + * A latch is a boolean variable, with operations that let processes sleep + * until it is set. A latch can be set from another process, or a signal + * handler within the same process. + * + * The latch interface is a reliable replacement for the common pattern of + * using pg_usleep() or select() to wait until a signal arrives, where the + * signal handler sets a flag variable. Because on some platforms an + * incoming signal doesn't interrupt sleep, and even on platforms where it + * does there is a race condition if the signal arrives just before + * entering the sleep, the common pattern must periodically wake up and + * poll the flag variable. The pselect() system call was invented to solve + * this problem, but it is not portable enough. Latches are designed to + * overcome these limitations, allowing you to sleep without polling and + * ensuring quick response to signals from other processes. + * + * There are two kinds of latches: local and shared. A local latch is + * initialized by InitLatch, and can only be set from the same process. + * A local latch can be used to wait for a signal to arrive, by calling + * SetLatch in the signal handler. A shared latch resides in shared memory, + * and must be initialized at postmaster startup by InitSharedLatch. Before + * a shared latch can be waited on, it must be associated with a process + * with OwnLatch. Only the process owning the latch can wait on it, but any + * process can set it. + * + * There are three basic operations on a latch: + * + * SetLatch - Sets the latch + * ResetLatch - Clears the latch, allowing it to be set again + * WaitLatch - Waits for the latch to become set + * + * WaitLatch includes a provision for timeouts (which should hopefully not + * be necessary once the code is fully latch-ified). + * See unix_latch.c for detailed specifications for the exported functions. + * + * The correct pattern to wait for event(s) is: + * + * for (;;) + * { + * ResetLatch(); + * if (work to do) + * Do Stuff(); + * WaitLatch(); + * } + * + * It's important to reset the latch *before* checking if there's work to + * do. Otherwise, if someone sets the latch between the check and the + * ResetLatch call, you will miss it and Wait will incorrectly block. + * + * To wake up the waiter, you must first set a global flag or something + * else that the wait loop tests in the "if (work to do)" part, and call + * SetLatch *after* that. SetLatch is designed to return quickly if the + * latch is already set. + * + * Presently, when using a shared latch for interprocess signalling, the + * flag variable(s) set by senders and inspected by the wait loop must + * be protected by spinlocks or LWLocks, else it is possible to miss events + * on machines with weak memory ordering (such as PPC). This restriction + * will be lifted in future by inserting suitable memory barriers into + * SetLatch and ResetLatch. + * * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California @@ -34,6 +94,7 @@ typedef struct /* * prototypes for functions in latch.c */ +extern void InitializeLatchSupport(void); extern void InitLatch(volatile Latch *latch); extern void InitSharedLatch(volatile Latch *latch); extern void OwnLatch(volatile Latch *latch); @@ -44,16 +105,17 @@ extern int WaitLatchOrSocket(volatile Latch *latch, pgsocket sock, extern void SetLatch(volatile Latch *latch); extern void ResetLatch(volatile Latch *latch); -#define TestLatch(latch) (((volatile Latch *) latch)->is_set) +/* beware of memory ordering issues if you use this macro! */ +#define TestLatch(latch) (((volatile Latch *) (latch))->is_set) /* - * Unix implementation uses SIGUSR1 for inter-process signaling, Win32 doesn't - * need this. + * Unix implementation uses SIGUSR1 for inter-process signaling. + * Win32 doesn't need this. */ #ifndef WIN32 extern void latch_sigusr1_handler(void); #else -#define latch_sigusr1_handler() +#define latch_sigusr1_handler() ((void) 0) #endif #endif /* LATCH_H */ diff --git a/src/include/storage/lmgr.h b/src/include/storage/lmgr.h index bd44d92be3..97e2ab0247 100644 --- a/src/include/storage/lmgr.h +++ b/src/include/storage/lmgr.h @@ -31,6 +31,7 @@ extern void UnlockRelationOid(Oid relid, LOCKMODE lockmode); extern void LockRelation(Relation relation, LOCKMODE lockmode); extern bool ConditionalLockRelation(Relation relation, LOCKMODE lockmode); extern void UnlockRelation(Relation relation, LOCKMODE lockmode); +extern bool LockHasWaitersRelation(Relation relation, LOCKMODE lockmode); extern void LockRelationIdForSession(LockRelId *relid, LOCKMODE lockmode); extern void UnlockRelationIdForSession(LockRelId *relid, LOCKMODE lockmode); @@ -58,6 +59,7 @@ extern bool ConditionalXactLockTableWait(TransactionId xid); /* Lock a VXID (used to wait for a transaction to finish) */ extern void VirtualXactLockTableInsert(VirtualTransactionId vxid); +extern void VirtualXactLockTableDelete(VirtualTransactionId vxid); extern void VirtualXactLockTableWait(VirtualTransactionId vxid); extern bool ConditionalVirtualXactLockTableWait(VirtualTransactionId vxid); diff --git a/src/include/storage/lock.h b/src/include/storage/lock.h index d831fe335b..1386a8e279 100644 --- a/src/include/storage/lock.h +++ b/src/include/storage/lock.h @@ -104,6 +104,8 @@ typedef int LOCKMODE; * are defined in this lock method. Must be less than MAX_LOCKMODES. * * transactional -- TRUE if locks are released automatically at xact end. + * (Caution: this flag no longer means what you might think, and it + * will be removed altogether in 9.2.) * * conflictTab -- this is an array of bitmasks showing lock * mode conflicts. conflictTab[i] is a mask with the j-th bit @@ -485,10 +487,12 @@ extern LockAcquireResult LockAcquireExtended(const LOCKTAG *locktag, bool report_memory_error); extern bool LockRelease(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock); -extern void LockReleaseSession(LOCKMETHODID lockmethodid); extern void LockReleaseAll(LOCKMETHODID lockmethodid, bool allLocks); +extern void LockReleaseSession(LOCKMETHODID lockmethodid); extern void LockReleaseCurrentOwner(void); extern void LockReassignCurrentOwner(void); +extern bool LockHasWaiters(const LOCKTAG *locktag, + LOCKMODE lockmode, bool sessionLock); extern VirtualTransactionId *GetLockConflicts(const LOCKTAG *locktag, LOCKMODE lockmode); extern void AtPrepare_Locks(void); diff --git a/src/include/storage/predicate.h b/src/include/storage/predicate.h index 760c76cff0..5ddbc1d3f4 100644 --- a/src/include/storage/predicate.h +++ b/src/include/storage/predicate.h @@ -39,23 +39,24 @@ extern Size PredicateLockShmemSize(void); extern void CheckPointPredicate(void); /* predicate lock reporting */ -extern bool PageIsPredicateLocked(const Relation relation, const BlockNumber blkno); +extern bool PageIsPredicateLocked(Relation relation, BlockNumber blkno); /* predicate lock maintenance */ extern Snapshot RegisterSerializableTransaction(Snapshot snapshot); -extern void RegisterPredicateLockingXid(const TransactionId xid); -extern void PredicateLockRelation(const Relation relation); -extern void PredicateLockPage(const Relation relation, const BlockNumber blkno); -extern void PredicateLockTuple(const Relation relation, const HeapTuple tuple); -extern void PredicateLockPageSplit(const Relation relation, const BlockNumber oldblkno, const BlockNumber newblkno); -extern void PredicateLockPageCombine(const Relation relation, const BlockNumber oldblkno, const BlockNumber newblkno); -extern void TransferPredicateLocksToHeapRelation(const Relation relation); -extern void ReleasePredicateLocks(const bool isCommit); +extern void RegisterPredicateLockingXid(TransactionId xid); +extern void PredicateLockRelation(Relation relation, Snapshot snapshot); +extern void PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot); +extern void PredicateLockTuple(Relation relation, HeapTuple tuple, Snapshot snapshot); +extern void PredicateLockPageSplit(Relation relation, BlockNumber oldblkno, BlockNumber newblkno); +extern void PredicateLockPageCombine(Relation relation, BlockNumber oldblkno, BlockNumber newblkno); +extern void TransferPredicateLocksToHeapRelation(Relation relation); +extern void ReleasePredicateLocks(bool isCommit); /* conflict detection (may also trigger rollback) */ -extern void CheckForSerializableConflictOut(const bool valid, const Relation relation, const HeapTuple tuple, const Buffer buffer); -extern void CheckForSerializableConflictIn(const Relation relation, const HeapTuple tuple, const Buffer buffer); -extern void CheckTableForSerializableConflictIn(const Relation relation); +extern void CheckForSerializableConflictOut(bool valid, Relation relation, HeapTuple tuple, + Buffer buffer, Snapshot snapshot); +extern void CheckForSerializableConflictIn(Relation relation, HeapTuple tuple, Buffer buffer); +extern void CheckTableForSerializableConflictIn(Relation relation); /* final rollback checking */ extern void PreCommit_CheckForSerializationFailure(void); diff --git a/src/include/storage/predicate_internals.h b/src/include/storage/predicate_internals.h index da6e641f4e..3f30d681df 100644 --- a/src/include/storage/predicate_internals.h +++ b/src/include/storage/predicate_internals.h @@ -57,9 +57,26 @@ typedef struct SERIALIZABLEXACT { VirtualTransactionId vxid; /* The executing process always has one of * these. */ + + /* + * We use two numbers to track the order that transactions commit. Before + * commit, a transaction is marked as prepared, and prepareSeqNo is set. + * Shortly after commit, it's marked as committed, and commitSeqNo is set. + * This doesn't give a strict commit order, but these two values together + * are good enough for us, as we can always err on the safe side and + * assume that there's a conflict, if we can't be sure of the exact + * ordering of two commits. + * + * Note that a transaction is marked as prepared for a short period during + * commit processing, even if two-phase commit is not used. But with + * two-phase commit, a transaction can stay in prepared state for some + * time. + */ + SerCommitSeqNo prepareSeqNo; SerCommitSeqNo commitSeqNo; - union /* these values are not both interesting at - * the same time */ + + /* these values are not both interesting at the same time */ + union { SerCommitSeqNo earliestOutConflictCommit; /* when committed with * conflict out */ @@ -90,22 +107,22 @@ typedef struct SERIALIZABLEXACT int pid; /* pid of associated process */ } SERIALIZABLEXACT; -#define SXACT_FLAG_ROLLED_BACK 0x00000001 -#define SXACT_FLAG_COMMITTED 0x00000002 +#define SXACT_FLAG_COMMITTED 0x00000001 /* already committed */ +#define SXACT_FLAG_PREPARED 0x00000002 /* about to commit */ +#define SXACT_FLAG_ROLLED_BACK 0x00000004 /* already rolled back */ +#define SXACT_FLAG_DOOMED 0x00000008 /* will roll back */ /* * The following flag actually means that the flagged transaction has a * conflict out *to a transaction which committed ahead of it*. It's hard * to get that into a name of a reasonable length. */ -#define SXACT_FLAG_CONFLICT_OUT 0x00000004 -#define SXACT_FLAG_READ_ONLY 0x00000008 -#define SXACT_FLAG_MARKED_FOR_DEATH 0x00000010 -#define SXACT_FLAG_DEFERRABLE_WAITING 0x00000020 -#define SXACT_FLAG_RO_SAFE 0x00000040 -#define SXACT_FLAG_RO_UNSAFE 0x00000080 -#define SXACT_FLAG_SUMMARY_CONFLICT_IN 0x00000100 -#define SXACT_FLAG_SUMMARY_CONFLICT_OUT 0x00000200 -#define SXACT_FLAG_PREPARED 0x00000400 +#define SXACT_FLAG_CONFLICT_OUT 0x00000010 +#define SXACT_FLAG_READ_ONLY 0x00000020 +#define SXACT_FLAG_DEFERRABLE_WAITING 0x00000040 +#define SXACT_FLAG_RO_SAFE 0x00000080 +#define SXACT_FLAG_RO_UNSAFE 0x00000100 +#define SXACT_FLAG_SUMMARY_CONFLICT_IN 0x00000200 +#define SXACT_FLAG_SUMMARY_CONFLICT_OUT 0x00000400 /* * The following types are used to provide an ad hoc list for holding @@ -133,8 +150,8 @@ typedef struct PredXactListData /* * These global variables are maintained when registering and cleaning up * serializable transactions. They must be global across all backends, - * but are not needed outside the predicate.c source file. Protected - * by SerializableXactHashLock. + * but are not needed outside the predicate.c source file. Protected by + * SerializableXactHashLock. */ TransactionId SxactGlobalXmin; /* global xmin for active serializable * transactions */ @@ -237,10 +254,10 @@ typedef struct SERIALIZABLEXID * be the target of predicate locks. * * Note that the hash function being used doesn't properly respect tag - * length -- it will go to a four byte boundary past the end of the tag. - * If you change this struct, make sure any slack space is initialized, - * so that any random bytes in the middle or at the end are not included - * in the hash. + * length -- if the length of the structure isn't a multiple of four bytes it + * will go to a four byte boundary past the end of the tag. If you change + * this struct, make sure any slack space is initialized, so that any random + * bytes in the middle or at the end are not included in the hash. * * TODO SSI: If we always use the same fields for the same type of value, we * should rename these. Holding off until it's clear there are no exceptions. @@ -255,7 +272,6 @@ typedef struct PREDICATELOCKTARGETTAG uint32 locktag_field2; /* a 32-bit ID field */ uint32 locktag_field3; /* a 32-bit ID field */ uint32 locktag_field4; /* a 32-bit ID field */ - uint32 locktag_field5; /* a 32-bit ID field */ } PREDICATELOCKTARGETTAG; /* @@ -266,12 +282,6 @@ typedef struct PREDICATELOCKTARGETTAG * added when a predicate lock is requested on an object which doesn't * already have one. An entry is removed when the last lock is removed from * its list. - * - * Because a particular target might become obsolete, due to update to a new - * version, before the reading transaction is obsolete, we need some way to - * prevent errors from reuse of a tuple ID. Rather than attempting to clean - * up the targets as the related tuples are pruned or vacuumed, we check the - * xmin on access. This should be far less costly. */ typedef struct PREDICATELOCKTARGET { @@ -381,22 +391,19 @@ typedef struct PredicateLockData ((locktag).locktag_field1 = (dboid), \ (locktag).locktag_field2 = (reloid), \ (locktag).locktag_field3 = InvalidBlockNumber, \ - (locktag).locktag_field4 = InvalidOffsetNumber, \ - (locktag).locktag_field5 = InvalidTransactionId) + (locktag).locktag_field4 = InvalidOffsetNumber) #define SET_PREDICATELOCKTARGETTAG_PAGE(locktag,dboid,reloid,blocknum) \ ((locktag).locktag_field1 = (dboid), \ (locktag).locktag_field2 = (reloid), \ (locktag).locktag_field3 = (blocknum), \ - (locktag).locktag_field4 = InvalidOffsetNumber, \ - (locktag).locktag_field5 = InvalidTransactionId) + (locktag).locktag_field4 = InvalidOffsetNumber) -#define SET_PREDICATELOCKTARGETTAG_TUPLE(locktag,dboid,reloid,blocknum,offnum,xmin) \ +#define SET_PREDICATELOCKTARGETTAG_TUPLE(locktag,dboid,reloid,blocknum,offnum) \ ((locktag).locktag_field1 = (dboid), \ (locktag).locktag_field2 = (reloid), \ (locktag).locktag_field3 = (blocknum), \ - (locktag).locktag_field4 = (offnum), \ - (locktag).locktag_field5 = (xmin)) + (locktag).locktag_field4 = (offnum)) #define GET_PREDICATELOCKTARGETTAG_DB(locktag) \ ((Oid) (locktag).locktag_field1) @@ -406,8 +413,6 @@ typedef struct PredicateLockData ((BlockNumber) (locktag).locktag_field3) #define GET_PREDICATELOCKTARGETTAG_OFFSET(locktag) \ ((OffsetNumber) (locktag).locktag_field4) -#define GET_PREDICATELOCKTARGETTAG_XMIN(locktag) \ - ((TransactionId) (locktag).locktag_field5) #define GET_PREDICATELOCKTARGETTAG_TYPE(locktag) \ (((locktag).locktag_field4 != InvalidOffsetNumber) ? PREDLOCKTAG_TUPLE : \ (((locktag).locktag_field3 != InvalidBlockNumber) ? PREDLOCKTAG_PAGE : \ @@ -445,6 +450,7 @@ typedef struct TwoPhasePredicateXactRecord typedef struct TwoPhasePredicateLockRecord { PREDICATELOCKTARGETTAG target; + uint32 filler; /* to avoid length change in back-patched fix */ } TwoPhasePredicateLockRecord; typedef struct TwoPhasePredicateRecord diff --git a/src/include/storage/proc.h b/src/include/storage/proc.h index 47023b9963..7ff2f02631 100644 --- a/src/include/storage/proc.h +++ b/src/include/storage/proc.h @@ -15,7 +15,6 @@ #define _PROC_H_ #include "access/xlog.h" -#include "replication/syncrep.h" #include "storage/latch.h" #include "storage/lock.h" #include "storage/pg_sema.h" @@ -123,13 +122,14 @@ struct PGPROC LOCKMASK heldLocks; /* bitmask for lock types already held on this * lock object by this backend */ + Latch procLatch; /* generic latch for process */ + /* * Info to allow us to wait for synchronous replication, if needed. * waitLSN is InvalidXLogRecPtr if not waiting; set only by user backend. * syncRepState must not be touched except by owning process or WALSender. * syncRepLinks used only while holding SyncRepLock. */ - Latch waitLatch; /* allow us to wait for sync rep */ XLogRecPtr waitLSN; /* waiting for this LSN or higher */ int syncRepState; /* wait state for sync rep */ SHM_QUEUE syncRepLinks; /* list link if process is in syncrep queue */ @@ -164,7 +164,7 @@ typedef struct PROC_HDR /* The proc of the Startup process, since not in ProcArray */ PGPROC *startupProc; int startupProcPid; - /* Buffer id of the buffer that Startup process waits for pin on */ + /* Buffer id of the buffer that Startup process waits for pin on, or -1 */ int startupBufferPinWaitBufId; } PROC_HDR; diff --git a/src/include/storage/procarray.h b/src/include/storage/procarray.h index 79758330e1..5652d117a6 100644 --- a/src/include/storage/procarray.h +++ b/src/include/storage/procarray.h @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/storage/procarray.h * @@ -34,6 +34,8 @@ extern void SetGlobalSnapshotData(int xmin, int xmax, int xcnt, int *xip); extern void UnsetGlobalSnapshotData(void); extern void ReloadConnInfoOnBackends(void); #endif /* PGXC */ + +extern void ProcArrayInitRecovery(TransactionId initializedUptoXID); extern void ProcArrayApplyRecoveryInfo(RunningTransactions running); extern void ProcArrayApplyXidAssignment(TransactionId topxid, int nsubxids, TransactionId *subxids); @@ -52,6 +54,7 @@ extern Snapshot GetSnapshotData(Snapshot snapshot); extern bool TransactionIdIsInProgress(TransactionId xid); extern bool TransactionIdIsActive(TransactionId xid); extern TransactionId GetOldestXmin(bool allDbs, bool ignoreVacuum); +extern TransactionId GetOldestActiveTransactionId(void); extern int GetTransactionsInCommit(TransactionId **xids_p); extern bool HaveTransactionsInCommit(TransactionId *xids, int nxids); diff --git a/src/include/storage/relfilenode.h b/src/include/storage/relfilenode.h index 659a339e61..5f07e57c9d 100644 --- a/src/include/storage/relfilenode.h +++ b/src/include/storage/relfilenode.h @@ -69,6 +69,10 @@ typedef enum ForkNumber * Note: in pg_class, relfilenode can be zero to denote that the relation * is a "mapped" relation, whose current true filenode number is available * from relmapper.c. Again, this case is NOT allowed in RelFileNodes. + * + * Note: various places use RelFileNode in hashtable keys. Therefore, + * there *must not* be any unused padding bytes in this struct. That + * should be safe as long as all the fields are of type Oid. */ typedef struct RelFileNode { @@ -79,7 +83,11 @@ typedef struct RelFileNode /* * Augmenting a relfilenode with the backend ID provides all the information - * we need to locate the physical storage. + * we need to locate the physical storage. The backend ID is InvalidBackendId + * for regular relations (those accessible to more than one backend), or the + * owning backend's ID for backend-local relations. Backend-local relations + * are always transient and removed in case of a database crash; they are + * never WAL-logged or fsync'd. */ typedef struct RelFileNodeBackend { @@ -87,11 +95,15 @@ typedef struct RelFileNodeBackend BackendId backend; } RelFileNodeBackend; +#define RelFileNodeBackendIsTemp(rnode) \ + ((rnode).backend != InvalidBackendId) + /* * Note: RelFileNodeEquals and RelFileNodeBackendEquals compare relNode first * since that is most likely to be different in two unequal RelFileNodes. It * is probably redundant to compare spcNode if the other fields are found equal, - * but do it anyway to be sure. + * but do it anyway to be sure. Likewise for checking the backend ID in + * RelFileNodeBackendEquals. */ #define RelFileNodeEquals(node1, node2) \ ((node1).relNode == (node2).relNode && \ diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h index 7fe01aac61..987fb9c58d 100644 --- a/src/include/storage/s_lock.h +++ b/src/include/storage/s_lock.h @@ -252,13 +252,33 @@ tas(volatile slock_t *lock) #endif /* __ia64__ || __ia64 */ +/* + * On ARM, we use __sync_lock_test_and_set(int *, int) if available, and if + * not fall back on the SWPB instruction. SWPB does not work on ARMv6 or + * later, so the compiler builtin is preferred if available. Note also that + * the int-width variant of the builtin works on more chips than other widths. + */ #if defined(__arm__) || defined(__arm) #define HAS_TEST_AND_SET -typedef unsigned char slock_t; - #define TAS(lock) tas(lock) +#ifdef HAVE_GCC_INT_ATOMICS + +typedef int slock_t; + +static __inline__ int +tas(volatile slock_t *lock) +{ + return __sync_lock_test_and_set(lock, 1); +} + +#define S_UNLOCK(lock) __sync_lock_release(lock) + +#else /* !HAVE_GCC_INT_ATOMICS */ + +typedef unsigned char slock_t; + static __inline__ int tas(volatile slock_t *lock) { @@ -272,6 +292,7 @@ tas(volatile slock_t *lock) return (int) _res; } +#endif /* HAVE_GCC_INT_ATOMICS */ #endif /* __arm__ */ diff --git a/src/include/storage/smgr.h b/src/include/storage/smgr.h index e4792668c2..d2db5f6826 100644 --- a/src/include/storage/smgr.h +++ b/src/include/storage/smgr.h @@ -35,6 +35,9 @@ * without having to make the smgr explicitly aware of relcache. There * can't be more than one "owner" pointer per SMgrRelation, but that's * all we need. + * + * SMgrRelations that do not have an "owner" are considered to be transient, + * and are deleted at end of transaction. */ typedef struct SMgrRelationData { @@ -62,22 +65,24 @@ typedef struct SMgrRelationData * submodules. Do not touch them from elsewhere. */ int smgr_which; /* storage manager selector */ - bool smgr_transient; /* T if files are to be closed at EOXact */ /* for md.c; NULL for forks that are not open */ struct _MdfdVec *md_fd[MAX_FORKNUM + 1]; + + /* if unowned, list link in list of all unowned SMgrRelations */ + struct SMgrRelationData *next_unowned_reln; } SMgrRelationData; typedef SMgrRelationData *SMgrRelation; #define SmgrIsTemp(smgr) \ - ((smgr)->smgr_rnode.backend != InvalidBackendId) + RelFileNodeBackendIsTemp((smgr)->smgr_rnode) extern void smgrinit(void); extern SMgrRelation smgropen(RelFileNode rnode, BackendId backend); -extern void smgrsettransient(SMgrRelation reln); extern bool smgrexists(SMgrRelation reln, ForkNumber forknum); extern void smgrsetowner(SMgrRelation *owner, SMgrRelation reln); +extern void smgrclearowner(SMgrRelation *owner, SMgrRelation reln); extern void smgrclose(SMgrRelation reln); extern void smgrcloseall(void); extern void smgrclosenode(RelFileNodeBackend rnode); @@ -99,6 +104,7 @@ extern void smgrimmedsync(SMgrRelation reln, ForkNumber forknum); extern void smgrpreckpt(void); extern void smgrsync(void); extern void smgrpostckpt(void); +extern void AtEOXact_SMgr(void); /* internals: move me elsewhere -- ay 7/94 */ @@ -126,10 +132,9 @@ extern void mdsync(void); extern void mdpostckpt(void); extern void SetForwardFsyncRequests(void); -extern void RememberFsyncRequest(RelFileNodeBackend rnode, ForkNumber forknum, +extern void RememberFsyncRequest(RelFileNode rnode, ForkNumber forknum, BlockNumber segno); -extern void ForgetRelationFsyncRequests(RelFileNodeBackend rnode, - ForkNumber forknum); +extern void ForgetRelationFsyncRequests(RelFileNode rnode, ForkNumber forknum); extern void ForgetDatabaseFsyncRequests(Oid dbid); /* smgrtype.c */ diff --git a/src/include/storage/standby.h b/src/include/storage/standby.h index 690b4070af..fa36e6b5fc 100644 --- a/src/include/storage/standby.h +++ b/src/include/storage/standby.h @@ -35,7 +35,7 @@ extern void ResolveRecoveryConflictWithDatabase(Oid dbid); extern void ResolveRecoveryConflictWithBufferPin(void); extern void SendRecoveryConflictWithBufferPin(ProcSignalReason reason); -extern void CheckRecoveryConflictDeadlock(LWLockId partitionLock); +extern void CheckRecoveryConflictDeadlock(void); /* * Standby Rmgr (RM_STANDBY_ID) @@ -48,7 +48,7 @@ extern void StandbyAcquireAccessExclusiveLock(TransactionId xid, Oid dbOid, Oid extern void StandbyReleaseLockTree(TransactionId xid, int nsubxids, TransactionId *subxids); extern void StandbyReleaseAllLocks(void); -extern void StandbyReleaseOldLocks(TransactionId removeXid); +extern void StandbyReleaseOldLocks(int nxids, TransactionId *xids); /* * XLOG message types @@ -111,6 +111,6 @@ typedef RunningTransactionsData *RunningTransactions; extern void LogAccessExclusiveLock(Oid dbOid, Oid relOid); extern void LogAccessExclusiveLockPrepare(void); -extern void LogStandbySnapshot(TransactionId *oldestActiveXid, TransactionId *nextXid); +extern void LogStandbySnapshot(void); #endif /* STANDBY_H */ diff --git a/src/include/tcop/tcopprot.h b/src/include/tcop/tcopprot.h index d5192d9855..31dee4e4f4 100644 --- a/src/include/tcop/tcopprot.h +++ b/src/include/tcop/tcopprot.h @@ -68,9 +68,10 @@ extern void RecoveryConflictInterrupt(ProcSignalReason reason); /* called from S * handler */ extern void prepare_for_client_read(void); extern void client_read_ended(void); -extern const char *process_postgres_switches(int argc, char *argv[], - GucContext ctx); -extern int PostgresMain(int argc, char *argv[], const char *username); +extern void process_postgres_switches(int argc, char *argv[], + GucContext ctx, const char **dbname); +extern int PostgresMain(int argc, char *argv[], + const char *dbname, const char *username); extern long get_stack_depth_rlimit(void); extern void ResetUsage(void); extern void ShowUsage(const char *title); diff --git a/src/include/tcop/utility.h b/src/include/tcop/utility.h index c8edb8c3f8..f32a6a743d 100644 --- a/src/include/tcop/utility.h +++ b/src/include/tcop/utility.h @@ -52,6 +52,6 @@ extern LogStmtLevel GetCommandLogLevel(Node *parsetree); extern bool CommandIsReadOnly(Node *parsetree); -extern void CheckRelationOwnership(RangeVar *rel, bool noCatalogs); +extern void CheckRelationOwnership(Oid relOid, bool noCatalogs); #endif /* UTILITY_H */ diff --git a/src/include/tsearch/ts_type.h b/src/include/tsearch/ts_type.h index 6a33f851a3..3aa81fd2ff 100644 --- a/src/include/tsearch/ts_type.h +++ b/src/include/tsearch/ts_type.h @@ -13,6 +13,7 @@ #define _PG_TSTYPE_H_ #include "fmgr.h" +#include "utils/memutils.h" #include "utils/pg_crc.h" @@ -242,6 +243,8 @@ typedef TSQueryData *TSQuery; * QueryItems, and lenofoperand is the total length of all operands */ #define COMPUTESIZE(size, lenofoperand) ( HDRSIZETQ + (size) * sizeof(QueryItem) + (lenofoperand) ) +#define TSQUERY_TOO_BIG(size, lenofoperand) \ + ((size) > (MaxAllocSize - HDRSIZETQ - (lenofoperand)) / sizeof(QueryItem)) /* Returns a pointer to the first QueryItem in a TSQuery */ #define GETQUERY(x) ((QueryItem*)( (char*)(x)+HDRSIZETQ )) diff --git a/src/include/utils/attoptcache.h b/src/include/utils/attoptcache.h index 053e7ae691..58d25aa31a 100644 --- a/src/include/utils/attoptcache.h +++ b/src/include/utils/attoptcache.h @@ -10,8 +10,8 @@ * *------------------------------------------------------------------------- */ -#ifndef SPCCACHE_H -#define SPCCACHE_H +#ifndef ATTOPTCACHE_H +#define ATTOPTCACHE_H /* * Attribute options. @@ -25,4 +25,4 @@ typedef struct AttributeOpts AttributeOpts *get_attribute_options(Oid spcid, int attnum); -#endif /* SPCCACHE_H */ +#endif /* ATTOPTCACHE_H */ diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h index 86ee7e8de9..6573a9843b 100644 --- a/src/include/utils/builtins.h +++ b/src/include/utils/builtins.h @@ -556,6 +556,8 @@ extern Datum regexp_split_to_table(PG_FUNCTION_ARGS); extern Datum regexp_split_to_table_no_flags(PG_FUNCTION_ARGS); extern Datum regexp_split_to_array(PG_FUNCTION_ARGS); extern Datum regexp_split_to_array_no_flags(PG_FUNCTION_ARGS); +extern char *regexp_fixed_prefix(text *text_re, bool case_insensitive, + Oid collation, bool *exact); /* regproc.c */ extern Datum regprocin(PG_FUNCTION_ARGS); @@ -780,6 +782,9 @@ extern Datum text_format_nv(PG_FUNCTION_ARGS); /* version.c */ extern Datum pgsql_version(PG_FUNCTION_ARGS); +#ifdef PGXC +extern Datum pgxc_version(PG_FUNCTION_ARGS); +#endif /* xid.c */ extern Datum xidin(PG_FUNCTION_ARGS); diff --git a/src/include/utils/datetime.h b/src/include/utils/datetime.h index 2880304fdb..7b04dd6e13 100644 --- a/src/include/utils/datetime.h +++ b/src/include/utils/datetime.h @@ -190,12 +190,17 @@ struct tzEntry; #define DTK_DATE_M (DTK_M(YEAR) | DTK_M(MONTH) | DTK_M(DAY)) #define DTK_TIME_M (DTK_M(HOUR) | DTK_M(MINUTE) | DTK_ALL_SECS_M) -#define MAXDATELEN 63 /* maximum possible length of an input date - * string (not counting tr. null) */ -#define MAXDATEFIELDS 25 /* maximum possible number of fields in a date - * string */ -#define TOKMAXLEN 10 /* only this many chars are stored in - * datetktbl */ +/* + * Working buffer size for input and output of interval, timestamp, etc. + * Inputs that need more working space will be rejected early. Longer outputs + * will overrun buffers, so this must suffice for all possible output. As of + * this writing, interval_out() needs the most space at ~90 bytes. + */ +#define MAXDATELEN 128 +/* maximum possible number of fields in a date string */ +#define MAXDATEFIELDS 25 +/* only this many chars are stored in datetktbl */ +#define TOKMAXLEN 10 /* keep this struct small; it gets used a lot */ typedef struct diff --git a/src/include/utils/elog.h b/src/include/utils/elog.h index 4a3bd02689..93b141d683 100644 --- a/src/include/utils/elog.h +++ b/src/include/utils/elog.h @@ -146,6 +146,12 @@ errdetail(const char *fmt,...) the supplied arguments. */ __attribute__((format(PG_PRINTF_ATTRIBUTE, 1, 2))); +extern int +errdetail_internal(const char *fmt,...) +/* This extension allows gcc to check the format string for consistency with + the supplied arguments. */ +__attribute__((format(PG_PRINTF_ATTRIBUTE, 1, 2))); + extern int errdetail_log(const char *fmt,...) /* This extension allows gcc to check the format string for consistency with diff --git a/src/include/utils/formatting.h b/src/include/utils/formatting.h index 175d396297..fa83605133 100644 --- a/src/include/utils/formatting.h +++ b/src/include/utils/formatting.h @@ -24,6 +24,10 @@ extern char *str_tolower(const char *buff, size_t nbytes, Oid collid); extern char *str_toupper(const char *buff, size_t nbytes, Oid collid); extern char *str_initcap(const char *buff, size_t nbytes, Oid collid); +extern char *asc_tolower(const char *buff, size_t nbytes); +extern char *asc_toupper(const char *buff, size_t nbytes); +extern char *asc_initcap(const char *buff, size_t nbytes); + extern Datum timestamp_to_char(PG_FUNCTION_ARGS); extern Datum timestamptz_to_char(PG_FUNCTION_ARGS); extern Datum interval_to_char(PG_FUNCTION_ARGS); diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h index 53af0dd538..9aabe341c8 100644 --- a/src/include/utils/guc.h +++ b/src/include/utils/guc.h @@ -155,7 +155,7 @@ typedef enum /* Types of set_config_option actions */ GUC_ACTION_SET, /* regular SET command */ GUC_ACTION_LOCAL, /* SET LOCAL command */ - GUC_ACTION_SAVE /* function SET option */ + GUC_ACTION_SAVE /* function SET option, or temp assignment */ } GucAction; #define GUC_QUALIFIER_SEPARATOR '.' @@ -296,7 +296,8 @@ extern void DefineCustomEnumVariable( extern void EmitWarningsOnPlaceholders(const char *className); -extern const char *GetConfigOption(const char *name, bool restrict_superuser); +extern const char *GetConfigOption(const char *name, bool missing_ok, + bool restrict_superuser); extern const char *GetConfigOptionResetString(const char *name); extern void ProcessConfigFile(GucContext context); extern void InitializeGUCOptions(void); diff --git a/src/include/utils/guc_tables.h b/src/include/utils/guc_tables.h index 82fa92c5fd..796b156750 100644 --- a/src/include/utils/guc_tables.h +++ b/src/include/utils/guc_tables.h @@ -67,8 +67,9 @@ enum config_group WAL_SETTINGS, WAL_CHECKPOINTS, WAL_ARCHIVING, - WAL_REPLICATION, - WAL_STANDBY_SERVERS, + REPLICATION, + REPLICATION_MASTER, + REPLICATION_STANDBY, QUERY_TUNING, QUERY_TUNING_METHOD, QUERY_TUNING_COST, diff --git a/src/include/utils/inet.h b/src/include/utils/inet.h index 9626a2de81..bf982f67ee 100644 --- a/src/include/utils/inet.h +++ b/src/include/utils/inet.h @@ -70,9 +70,11 @@ typedef struct macaddr /* * fmgr interface macros */ -#define DatumGetInetP(X) ((inet *) PG_DETOAST_DATUM_PACKED(X)) +#define DatumGetInetP(X) ((inet *) PG_DETOAST_DATUM(X)) +#define DatumGetInetPP(X) ((inet *) PG_DETOAST_DATUM_PACKED(X)) #define InetPGetDatum(X) PointerGetDatum(X) #define PG_GETARG_INET_P(n) DatumGetInetP(PG_GETARG_DATUM(n)) +#define PG_GETARG_INET_PP(n) DatumGetInetPP(PG_GETARG_DATUM(n)) #define PG_RETURN_INET_P(x) return InetPGetDatum(x) /* macaddr is a fixed-length pass-by-reference datatype */ #define DatumGetMacaddrP(X) ((macaddr *) DatumGetPointer(X)) diff --git a/src/include/utils/lsyscache.h b/src/include/utils/lsyscache.h index aab8e0e4fc..33f0e50de4 100644 --- a/src/include/utils/lsyscache.h +++ b/src/include/utils/lsyscache.h @@ -17,6 +17,15 @@ #include "access/htup.h" #include "nodes/pg_list.h" +/* Result list element for get_op_btree_interpretation */ +typedef struct OpBtreeInterpretation +{ + Oid opfamily_id; /* btree opfamily containing operator */ + int strategy; /* its strategy number */ + Oid oplefttype; /* declared left input datatype */ + Oid oprighttype; /* declared right input datatype */ +} OpBtreeInterpretation; + /* I/O function selector for get_type_io_data */ typedef enum IOFuncSelector { @@ -50,8 +59,7 @@ extern bool get_compatible_hash_operators(Oid opno, Oid *lhs_opno, Oid *rhs_opno); extern bool get_op_hash_functions(Oid opno, RegProcedure *lhs_procno, RegProcedure *rhs_procno); -extern void get_op_btree_interpretation(Oid opno, - List **opfamilies, List **opstrats); +extern List *get_op_btree_interpretation(Oid opno); extern bool equality_ops_are_compatible(Oid opno1, Oid opno2); extern Oid get_opfamily_proc(Oid opfamily, Oid lefttype, Oid righttype, int16 procnum); diff --git a/src/include/utils/portal.h b/src/include/utils/portal.h index 6af1cd5b10..cf50655e12 100644 --- a/src/include/utils/portal.h +++ b/src/include/utils/portal.h @@ -207,6 +207,7 @@ extern Portal CreateNewPortal(void); extern void PinPortal(Portal portal); extern void UnpinPortal(Portal portal); extern void MarkPortalDone(Portal portal); +extern void MarkPortalFailed(Portal portal); extern void PortalDrop(Portal portal, bool isTopCommit); extern Portal GetPortalByName(const char *name); extern void PortalDefineQuery(Portal portal, diff --git a/src/include/utils/rel.h b/src/include/utils/rel.h index 60ba57ff6a..5216210690 100644 --- a/src/include/utils/rel.h +++ b/src/include/utils/rel.h @@ -6,7 +6,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/utils/rel.h * @@ -141,6 +141,7 @@ typedef struct RelationData bool rd_isvalid; /* relcache entry is valid */ char rd_indexvalid; /* state of rd_indexlist: 0 = not valid, 1 = * valid, 2 = temporarily forced */ + bool rd_islocaltemp; /* rel is a temp rel of this session */ /* * rd_createSubid is the ID of the highest subtransaction the rel has @@ -215,7 +216,8 @@ typedef struct RelationData * have the existing toast table's OID, not the OID of the transient toast * table. If rd_toastoid isn't InvalidOid, it is the OID to place in * toast pointers inserted into this rel. (Note it's set on the new - * version of the main heap, not the toast table itself.) + * version of the main heap, not the toast table itself.) This also + * causes toast_save_datum() to try to preserve toast value OIDs. */ Oid rd_toastoid; /* Real TOAST table's OID, or InvalidOid */ @@ -411,22 +413,16 @@ typedef struct StdRdOptions #define RelationUsesLocalBuffers(relation) \ ((relation)->rd_rel->relpersistence == RELPERSISTENCE_TEMP) -/* - * RelationUsesTempNamespace - * True if relation's catalog entries live in a private namespace. - */ -#define RelationUsesTempNamespace(relation) \ - ((relation)->rd_rel->relpersistence == RELPERSISTENCE_TEMP) - /* * RELATION_IS_LOCAL * If a rel is either temp or newly created in the current transaction, - * it can be assumed to be visible only to the current backend. + * it can be assumed to be accessible only to the current backend. + * This is typically used to decide that we can skip acquiring locks. * * Beware of multiple eval of argument */ #define RELATION_IS_LOCAL(relation) \ - ((relation)->rd_backend == MyBackendId || \ + ((relation)->rd_islocaltemp || \ (relation)->rd_createSubid != InvalidSubTransactionId) /* @@ -436,8 +432,8 @@ typedef struct StdRdOptions * Beware of multiple eval of argument */ #define RELATION_IS_OTHER_TEMP(relation) \ - ((relation)->rd_rel->relpersistence == RELPERSISTENCE_TEMP \ - && (relation)->rd_backend != MyBackendId) + ((relation)->rd_rel->relpersistence == RELPERSISTENCE_TEMP && \ + !(relation)->rd_islocaltemp) /* routines in utils/cache/relcache.c */ extern void RelationIncrementReferenceCount(Relation rel); diff --git a/src/include/utils/relcache.h b/src/include/utils/relcache.h index 1f4def5684..5de9f359ef 100644 --- a/src/include/utils/relcache.h +++ b/src/include/utils/relcache.h @@ -97,7 +97,8 @@ extern void AtEOSubXact_RelationCache(bool isCommit, SubTransactionId mySubid, * Routines to help manage rebuilding of relcache init files */ extern bool RelationIdIsInInitFile(Oid relationId); -extern void RelationCacheInitFileInvalidate(bool beforeSend); +extern void RelationCacheInitFilePreInvalidate(void); +extern void RelationCacheInitFilePostInvalidate(void); extern void RelationCacheInitFileRemove(void); /* should be used only by relcache.c and catcache.c */ diff --git a/src/include/utils/selfuncs.h b/src/include/utils/selfuncs.h index 4208588c2e..7f98878426 100644 --- a/src/include/utils/selfuncs.h +++ b/src/include/utils/selfuncs.h @@ -134,7 +134,7 @@ extern Pattern_Prefix_Status pattern_fixed_prefix(Const *patt, Pattern_Type ptype, Oid collation, Const **prefix, - Const **rest); + Selectivity *rest_selec); extern Const *make_greater_string(const Const *str_const, FmgrInfo *ltproc, Oid collation); diff --git a/src/include/utils/snapshot.h b/src/include/utils/snapshot.h index d802723ea7..41a71742cc 100644 --- a/src/include/utils/snapshot.h +++ b/src/include/utils/snapshot.h @@ -5,7 +5,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/utils/snapshot.h * @@ -47,11 +47,11 @@ typedef struct SnapshotData */ TransactionId xmin; /* all XID < xmin are visible to me */ TransactionId xmax; /* all XID >= xmax are invisible to me */ - TransactionId recent_global_xmin; - uint32 xcnt; /* # of xact ids in xip[] */ #ifdef PGXC /* PGXC_COORD */ + TransactionId recent_global_xmin; uint32 max_xcnt; /* Max # of xact in xip[] */ #endif + uint32 xcnt; /* # of xact ids in xip[] */ TransactionId *xip; /* array of xact IDs in progress */ /* note: all ids in xip[] satisfy xmin <= xip[i] < xmax */ int32 subxcnt; /* # of xact ids in subxip[] */ diff --git a/src/include/utils/syscache.h b/src/include/utils/syscache.h index 44f3ff0790..e864a6d13f 100644 --- a/src/include/utils/syscache.h +++ b/src/include/utils/syscache.h @@ -8,7 +8,7 @@ * * Portions Copyright (c) 1996-2011, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation + * Portions Copyright (c) 2010-2013, Postgres-XC Development Group * * src/include/utils/syscache.h * diff --git a/src/include/utils/timestamp.h b/src/include/utils/timestamp.h index 5793214f6e..4be534be11 100644 --- a/src/include/utils/timestamp.h +++ b/src/include/utils/timestamp.h @@ -105,6 +105,16 @@ typedef struct #define USECS_PER_SEC INT64CONST(1000000) #endif +/* + * We allow numeric timezone offsets up to 15:59:59 either way from Greenwich. + * Currently, the record holders for wackiest offsets in actual use are zones + * Asia/Manila, at -15:56:00 until 1844, and America/Metlakatla, at +15:13:42 + * until 1867. If we were to reject such values we would fail to dump and + * restore old timestamptz values with these zone settings. + */ +#define MAX_TZDISP_HOUR 15 /* maximum allowed hour part */ +#define TZDISP_LIMIT ((MAX_TZDISP_HOUR + 1) * SECS_PER_HOUR) + /* * Macros for fmgr-callable functions. * diff --git a/src/include/utils/varbit.h b/src/include/utils/varbit.h index e329d52e24..58727c66b9 100644 --- a/src/include/utils/varbit.h +++ b/src/include/utils/varbit.h @@ -15,6 +15,8 @@ #ifndef VARBIT_H #define VARBIT_H +#include + #include "fmgr.h" /* @@ -53,6 +55,11 @@ typedef struct /* Number of bytes needed to store a bit string of a given length */ #define VARBITTOTALLEN(BITLEN) (((BITLEN) + BITS_PER_BYTE-1)/BITS_PER_BYTE + \ VARHDRSZ + VARBITHDRSZ) +/* + * Maximum number of bits. Several code sites assume no overflow from + * computing bitlen + X; VARBITTOTALLEN() has the largest such X. + */ +#define VARBITMAXLEN (INT_MAX - BITS_PER_BYTE + 1) /* pointer beyond the end of the bit string (like end() in STL containers) */ #define VARBITEND(PTR) (((bits8 *) (PTR)) + VARSIZE(PTR)) /* Mask that will cover exactly one byte, i.e. BITS_PER_BYTE bits */ diff --git a/src/interfaces/ecpg/Makefile b/src/interfaces/ecpg/Makefile index e89f2fe0f2..d4b37e9723 100644 --- a/src/interfaces/ecpg/Makefile +++ b/src/interfaces/ecpg/Makefile @@ -4,6 +4,14 @@ include $(top_builddir)/src/Makefile.global SUBDIRS = include pgtypeslib ecpglib compatlib preproc +# Suppress parallel build of subdirectories to avoid a bug in gmake 3.82, cf +# http://savannah.gnu.org/bugs/?30653 +# https://bugzilla.redhat.com/show_bug.cgi?id=835424 +# (There are some other parallelism bugs in the subdirectory makefiles +# themselves, but there's little point in fixing them as long as we have +# to use this big hammer.) +.NOTPARALLEL: + $(recurse) all-compatlib-recurse: all-ecpglib-recurse diff --git a/src/interfaces/ecpg/ecpglib/Makefile b/src/interfaces/ecpg/ecpglib/Makefile index cdf84c3b09..f985de17ba 100644 --- a/src/interfaces/ecpg/ecpglib/Makefile +++ b/src/interfaces/ecpg/ecpglib/Makefile @@ -26,7 +26,7 @@ LIBS := $(filter-out -lpgport, $(LIBS)) OBJS= execute.o typename.o descriptor.o sqlda.o data.o error.o prepare.o memory.o \ connect.o misc.o path.o pgstrcasecmp.o \ - $(filter snprintf.o strlcpy.o, $(LIBOBJS)) + $(filter snprintf.o strlcpy.o win32setlocale.o isinf.o, $(LIBOBJS)) # thread.c is needed only for non-WIN32 implementation of path.c ifneq ($(PORTNAME), win32) @@ -57,7 +57,7 @@ include $(top_srcdir)/src/Makefile.shlib # necessarily use the same object files as the backend uses. Instead, # symlink the source files in here and build our own object file. -path.c pgstrcasecmp.c snprintf.c strlcpy.c thread.c: % : $(top_srcdir)/src/port/% +path.c pgstrcasecmp.c snprintf.c strlcpy.c thread.c win32setlocale.c isinf.c: % : $(top_srcdir)/src/port/% rm -f $@ && $(LN_S) $< . misc.o: misc.c $(top_builddir)/src/port/pg_config_paths.h @@ -74,6 +74,6 @@ uninstall: uninstall-lib clean distclean: clean-lib rm -f $(OBJS) - rm -f path.c pgstrcasecmp.c snprintf.c strlcpy.c thread.c + rm -f path.c pgstrcasecmp.c snprintf.c strlcpy.c thread.c win32setlocale.c maintainer-clean: distclean maintainer-clean-lib diff --git a/src/interfaces/ecpg/ecpglib/connect.c b/src/interfaces/ecpg/ecpglib/connect.c index 997046b38b..4f5541308e 100644 --- a/src/interfaces/ecpg/ecpglib/connect.c +++ b/src/interfaces/ecpg/ecpglib/connect.c @@ -324,7 +324,7 @@ ECPGconnect(int lineno, int c, const char *name, const char *user, const char *p if (dbname != NULL) { - /* get the detail information out of dbname */ + /* get the detail information from dbname */ if (strncmp(dbname, "tcp:", 4) == 0 || strncmp(dbname, "unix:", 5) == 0) { int offset = 0; @@ -343,7 +343,7 @@ ECPGconnect(int lineno, int c, const char *name, const char *user, const char *p /*------ * new style: * :postgresql://server[:port|:/unixsocket/path:] - * [/db name][?options] + * [/db-name][?options] *------ */ offset += strlen("postgresql://"); @@ -418,8 +418,10 @@ ECPGconnect(int lineno, int c, const char *name, const char *user, const char *p } } else - host = ecpg_strdup(dbname + offset, lineno); - + { + if (*(dbname + offset) != '\0') + host = ecpg_strdup(dbname + offset, lineno); + } } } else diff --git a/src/interfaces/ecpg/ecpglib/data.c b/src/interfaces/ecpg/ecpglib/data.c index fc0455607b..192d1a3db3 100644 --- a/src/interfaces/ecpg/ecpglib/data.c +++ b/src/interfaces/ecpg/ecpglib/data.c @@ -422,6 +422,7 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno, ecpg_raise(lineno, ECPG_CONVERT_BOOL, ECPG_SQLSTATE_DATATYPE_MISMATCH, NULL); + pval++; break; } else if (pval[0] == 't' && pval[1] == '\0') @@ -434,6 +435,7 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno, ecpg_raise(lineno, ECPG_CONVERT_BOOL, ECPG_SQLSTATE_DATATYPE_MISMATCH, NULL); + pval++; break; } else if (pval[0] == '\0' && PQgetisnull(results, act_tuple, act_field)) @@ -524,15 +526,15 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno, { case ECPGt_short: case ECPGt_unsigned_short: - *((short *) (ind + offset * act_tuple)) = variable->len; + *((short *) (ind + ind_offset * act_tuple)) = variable->len; break; case ECPGt_int: case ECPGt_unsigned_int: - *((int *) (ind + offset * act_tuple)) = variable->len; + *((int *) (ind + ind_offset * act_tuple)) = variable->len; break; case ECPGt_long: case ECPGt_unsigned_long: - *((long *) (ind + offset * act_tuple)) = variable->len; + *((long *) (ind + ind_offset * act_tuple)) = variable->len; break; #ifdef HAVE_LONG_LONG_INT case ECPGt_long_long: @@ -777,7 +779,7 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno, ++pval; } } - } while (*pval != '\0' && array_boundary(isarray, *pval)); + } while (*pval != '\0' && !array_boundary(isarray, *pval)); return (true); } diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c index 970fa93509..3f1478694d 100644 --- a/src/interfaces/ecpg/ecpglib/execute.c +++ b/src/interfaces/ecpg/ecpglib/execute.c @@ -478,7 +478,7 @@ sprintf_double_value(char *ptr, double value, const char *delim) sprintf(ptr, "%s%s", "Infinity", delim); } else - sprintf(ptr, "%.14g%s", value, delim); + sprintf(ptr, "%.15g%s", value, delim); } static void @@ -494,7 +494,7 @@ sprintf_float_value(char *ptr, float value, const char *delim) sprintf(ptr, "%s%s", "Infinity", delim); } else - sprintf(ptr, "%.14g%s", value, delim); + sprintf(ptr, "%.15g%s", value, delim); } bool @@ -1675,7 +1675,7 @@ ecpg_execute(struct statement * stmt) if (PQresultStatus(results) == PGRES_COMMAND_OK) ecpg_log("ecpg_execute on line %d: got PGRES_COMMAND_OK after PGRES_COPY_OUT\n", stmt->lineno); else - ecpg_log("ecpg_execute on line %d: got error after PGRES_COPY_OUT: %s", PQresultErrorMessage(results)); + ecpg_log("ecpg_execute on line %d: got error after PGRES_COPY_OUT: %s", stmt->lineno, PQresultErrorMessage(results)); } break; } @@ -1698,7 +1698,7 @@ ecpg_execute(struct statement * stmt) notify = PQnotifies(stmt->connection->connection); if (notify) { - ecpg_log("ecpg_execute on line %d: asynchronous notification of \"%s\" from backend pid %d received\n", + ecpg_log("ecpg_execute on line %d: asynchronous notification of \"%s\" from backend PID %d received\n", stmt->lineno, notify->relname, notify->be_pid); PQfreemem(notify); } @@ -1773,7 +1773,13 @@ ECPGdo(const int lineno, const int compat, const int force_indicator, const char if (statement_type == ECPGst_prepnormal) { if (!ecpg_auto_prepare(lineno, connection_name, compat, &prepname, query)) + { + setlocale(LC_NUMERIC, oldlocale); + ecpg_free(oldlocale); + free_statement(stmt); + va_end(args); return (false); + } /* * statement is now prepared, so instead of the query we have to @@ -1800,6 +1806,10 @@ ECPGdo(const int lineno, const int compat, const int force_indicator, const char else { ecpg_raise(lineno, ECPG_INVALID_STMT, ECPG_SQLSTATE_INVALID_SQL_STATEMENT_NAME, stmt->command); + setlocale(LC_NUMERIC, oldlocale); + ecpg_free(oldlocale); + free_statement(stmt); + va_end(args); return (false); } } diff --git a/src/interfaces/ecpg/ecpglib/misc.c b/src/interfaces/ecpg/ecpglib/misc.c index 98e0597b03..ef7e63470c 100644 --- a/src/interfaces/ecpg/ecpglib/misc.c +++ b/src/interfaces/ecpg/ecpglib/misc.c @@ -497,7 +497,7 @@ ecpg_gettext(const char *msgid) #endif } - return dgettext(PG_TEXTDOMAIN("ecpg"), msgid); + return dgettext(PG_TEXTDOMAIN("ecpglib"), msgid); } #endif /* ENABLE_NLS */ @@ -530,7 +530,7 @@ ECPGset_var(int number, void *pointer, int lineno) struct sqlca_t *sqlca = ECPGget_sqlca(); sqlca->sqlcode = ECPG_OUT_OF_MEMORY; - strncpy(sqlca->sqlstate, "YE001", sizeof("YE001")); + strncpy(sqlca->sqlstate, "YE001", sizeof(sqlca->sqlstate)); snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc), "out of memory on line %d", lineno); sqlca->sqlerrm.sqlerrml = strlen(sqlca->sqlerrm.sqlerrmc); /* free all memory we have allocated for the user */ diff --git a/src/interfaces/ecpg/ecpglib/nls.mk b/src/interfaces/ecpg/ecpglib/nls.mk index e78b83dba6..5c3751bdbc 100644 --- a/src/interfaces/ecpg/ecpglib/nls.mk +++ b/src/interfaces/ecpg/ecpglib/nls.mk @@ -1,5 +1,5 @@ # src/interfaces/ecpg/ecpglib/nls.mk CATALOG_NAME = ecpglib -AVAIL_LANGUAGES = de es fr it ja pt_BR tr zh_CN +AVAIL_LANGUAGES = cs de es fr it ja pl pt_BR ru tr zh_CN GETTEXT_FILES = connect.c error.c execute.c misc.c GETTEXT_TRIGGERS = ecpg_gettext diff --git a/src/interfaces/ecpg/ecpglib/po/cs.po b/src/interfaces/ecpg/ecpglib/po/cs.po new file mode 100644 index 0000000000..d7049323cc --- /dev/null +++ b/src/interfaces/ecpg/ecpglib/po/cs.po @@ -0,0 +1,175 @@ +# Czech message translation file for ecpglib +# +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# +# Tomáš Vondra , 2011, 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: ecpglib-cs (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-09-03 19:41+0200\n" +"PO-Revision-Date: 2011-09-04 23:29+0200\n" +"Last-Translator: Tomas Vondra \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: connect.c:224 +msgid "empty message text" +msgstr "prázdný text zprávy" + +#: connect.c:379 connect.c:405 connect.c:518 +msgid "" +msgstr "" + +#: error.c:29 +#, c-format +msgid "no data found on line %d" +msgstr "na řádce %d nenalezena žádná data" + +#: error.c:39 +#, c-format +msgid "out of memory on line %d" +msgstr "nedostatek paměti na řádce %d" + +#: error.c:49 +#, c-format +msgid "unsupported type \"%s\" on line %d" +msgstr "nepodporovaný typ \"%s\" na řádce %d" + +#: error.c:59 +#, c-format +msgid "too many arguments on line %d" +msgstr "příliš mnoho argumentů na řádce %d" + +#: error.c:69 +#, c-format +msgid "too few arguments on line %d" +msgstr "příliš málo argumentů na řádce %d" + +#: error.c:79 +#, c-format +msgid "invalid input syntax for type int: \"%s\", on line %d" +msgstr "chybná vstupní syntaxe pro typ int: \"%s\", na řádce %d" + +#: error.c:89 +#, c-format +msgid "invalid input syntax for type unsigned int: \"%s\", on line %d" +msgstr "chybná vstupní syntaxe pro typ unsigned int: \"%s\", na řádce %d" + +#: error.c:99 +#, c-format +msgid "invalid input syntax for floating-point type: \"%s\", on line %d" +msgstr "chybná vstupní syntaxe pro typ floating-point: \"%s\", na řádce %d" + +#: error.c:110 +#, c-format +msgid "invalid syntax for type boolean: \"%s\", on line %d" +msgstr "chybná vstupní syntaxe pro typ boolean: \"%s\", na řádce %d" + +#: error.c:118 +#, c-format +msgid "could not convert boolean value: size mismatch, on line %d" +msgstr "nelze zkonvertovat boolean hodnotu: nesprávná velikost, na řádce %d" + +#: error.c:128 +#, c-format +msgid "empty query on line %d" +msgstr "prázdný dotaz na řádce %d" + +#: error.c:138 +#, c-format +msgid "null value without indicator on line %d" +msgstr "null hodnota bez indikátoru na řádce %d" + +#: error.c:148 +#, c-format +msgid "variable does not have an array type on line %d" +msgstr "proměnná nemá datový typ pole na řádce %d" + +#: error.c:158 +#, c-format +msgid "data read from server is not an array on line %d" +msgstr "data načtená ze serveru nejsou pole na řádce %d" + +#: error.c:168 +#, c-format +msgid "inserting an array of variables is not supported on line %d" +msgstr "vkládání pole proměnných není podporováno na řádce %d" + +#: error.c:178 +#, c-format +msgid "connection \"%s\" does not exist on line %d" +msgstr "spojení \"%s\" neexistuje na řádce %d" + +#: error.c:188 +#, c-format +msgid "not connected to connection \"%s\" on line %d" +msgstr "neotevřené spojení \"%s\" na řádce %d" + +#: error.c:198 +#, c-format +msgid "invalid statement name \"%s\" on line %d" +msgstr "neplatný název příkazu \"%s\" na řádce %d" + +#: error.c:208 +#, c-format +msgid "descriptor \"%s\" not found on line %d" +msgstr "deskriptor \"%s\" nenalezen na řádce %d" + +#: error.c:218 +#, c-format +msgid "descriptor index out of range on line %d" +msgstr "index deskriptoru mimo rozsah na řádce %d" + +#: error.c:228 +#, c-format +msgid "unrecognized descriptor item \"%s\" on line %d" +msgstr "nerozpoznaná položka deskriptoru \"%s\" na řádce %d" + +#: error.c:238 +#, c-format +msgid "variable does not have a numeric type on line %d" +msgstr "proměnná nemá číselný datový typ na řádce %d" + +#: error.c:248 +#, c-format +msgid "variable does not have a character type on line %d" +msgstr "proměnná nemá znakový datový typ na řádce %d" + +#: error.c:258 +#, c-format +msgid "error in transaction processing on line %d" +msgstr "chyba v transakčním zpracování na řádce %d" + +#: error.c:268 +#, c-format +msgid "could not connect to database \"%s\" on line %d" +msgstr "nelze se spojit s databází \"%s\" na řádce %d" + +#: error.c:278 +#, c-format +msgid "SQL error %d on line %d" +msgstr "SQL chyba %d na řádce %d" + +#: error.c:318 +msgid "the connection to the server was lost" +msgstr "spojení se serverem bylo ztraceno" + +#: error.c:405 +#, c-format +msgid "SQL error: %s\n" +msgstr "SQL chyba: %s\n" + +#: execute.c:1919 +msgid "" +msgstr "" + +#: misc.c:113 +msgid "NULL" +msgstr "NULL" diff --git a/src/interfaces/ecpg/ecpglib/po/de.po b/src/interfaces/ecpg/ecpglib/po/de.po index 2211b98ab5..4299822c4d 100644 --- a/src/interfaces/ecpg/ecpglib/po/de.po +++ b/src/interfaces/ecpg/ecpglib/po/de.po @@ -3,8 +3,6 @@ # This file is distributed under the same license as the PostgreSQL package. # Peter Eisentraut, 2009 - 2010. # -# pgtranslation Id: ecpglib.po,v 1.3 2010/03/18 19:08:26 petere Exp $ -# # Use these quotes: »%s« # msgid "" @@ -15,6 +13,7 @@ msgstr "" "PO-Revision-Date: 2010-03-18 21:08+0200\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: Peter Eisentraut \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/interfaces/ecpg/ecpglib/po/es.po b/src/interfaces/ecpg/ecpglib/po/es.po index 561927113b..2c482ae63b 100644 --- a/src/interfaces/ecpg/ecpglib/po/es.po +++ b/src/interfaces/ecpg/ecpglib/po/es.po @@ -1,29 +1,28 @@ # Spanish message translation file for ecpglib # -# Copyright (C) 2009 PostgreSQL Global Development Group +# Copyright (C) 2009-2012 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # # Emanuel Calvo Franco , 2009. # -# pgtranslation Id: ecpglib.po,v 1.4 2010/05/05 16:43:32 alvherre Exp $ -# msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-05-03 17:23+0000\n" -"PO-Revision-Date: 2010-05-05 12:41-0400\n" +"POT-Creation-Date: 2013-08-26 19:39+0000\n" +"PO-Revision-Date: 2012-02-21 22:52-0300\n" "Last-Translator: Emanuel Calvo Franco \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" -#: connect.c:226 +#: connect.c:224 msgid "empty message text" msgstr "mensaje de texto vacío" -#: connect.c:381 connect.c:407 connect.c:520 +#: connect.c:379 connect.c:405 connect.c:518 msgid "" msgstr "" @@ -61,13 +60,15 @@ msgstr "sintaxis de entrada no válida para el tipo entero: «%s», en línea %d #, c-format msgid "invalid input syntax for type unsigned int: \"%s\", on line %d" msgstr "" -"sintaxis de entrada no válida para el tipo entero sin signo: «%s», en línea %d" +"sintaxis de entrada no válida para el tipo entero sin signo: «%s», en línea " +"%d" #: error.c:99 #, c-format msgid "invalid input syntax for floating-point type: \"%s\", on line %d" msgstr "" -"sintaxis de entrada no válida para el tipo de coma flotante: «%s», en línea %d" +"sintaxis de entrada no válida para el tipo de coma flotante: «%s», en línea " +"%d" #: error.c:110 #, c-format @@ -160,16 +161,16 @@ msgstr "no se pudo conectar a la base de datos «%s» en línea %d" msgid "SQL error %d on line %d" msgstr "error SQL %d en línea %d" -#: error.c:316 +#: error.c:318 msgid "the connection to the server was lost" msgstr "se ha perdido la conexión al servidor" -#: error.c:402 +#: error.c:405 #, c-format msgid "SQL error: %s\n" msgstr "error SQL: %s\n" -#: execute.c:1912 +#: execute.c:1921 msgid "" msgstr "" diff --git a/src/interfaces/ecpg/ecpglib/po/fr.po b/src/interfaces/ecpg/ecpglib/po/fr.po index 391846ddc1..c3a44873b5 100644 --- a/src/interfaces/ecpg/ecpglib/po/fr.po +++ b/src/interfaces/ecpg/ecpglib/po/fr.po @@ -1,8 +1,6 @@ # translation of ecpglib.po to fr_fr # french message translation file for ecpglib # -# $PostgreSQL$ -# # Use these quotes: � %s � # # Guillaume Lelarge , 2009. @@ -15,6 +13,7 @@ msgstr "" "PO-Revision-Date: 2010-03-06 19: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" diff --git a/src/interfaces/ecpg/ecpglib/po/it.po b/src/interfaces/ecpg/ecpglib/po/it.po index cb75f4466e..2617b238cb 100644 --- a/src/interfaces/ecpg/ecpglib/po/it.po +++ b/src/interfaces/ecpg/ecpglib/po/it.po @@ -7,7 +7,7 @@ # # Traduttori: # * Maurizio Totti -# +# # Revisori: # * Gabriele Bartolini # @@ -16,180 +16,177 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" +"Project-Id-Version: ecpglib (PostgreSQL) 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-03-26 13:23+0000\n" -"PO-Revision-Date: 2010-03-27 12:44:19+0100\n" -"Last-Translator: Gabriele Bartolini \n" +"POT-Creation-Date: 2013-01-29 13:51+0000\n" +"PO-Revision-Date: 2012-10-30 13:08+0100\n" +"Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Italian\n" -"X-Poedit-Country: ITALY\n" "X-Poedit-SourceCharset: utf-8\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Poedit 1.5.4\n" -#: connect.c:226 +#: connect.c:224 msgid "empty message text" msgstr "messaggio di testo vuoto" -#: connect.c:381 -#: connect.c:407 -#: connect.c:520 +#: connect.c:379 connect.c:405 connect.c:518 msgid "" msgstr "" #: error.c:29 #, c-format msgid "no data found on line %d" -msgstr "non ci sono dati alla linea %d" +msgstr "non ci sono dati alla riga %d" # Utilizzerei 'memoria esaurita' al posto di 'errore di memoria' (GB) #: error.c:39 #, c-format msgid "out of memory on line %d" -msgstr "memoria esaurita alla linea %d" +msgstr "memoria esaurita alla riga %d" #: error.c:49 #, c-format msgid "unsupported type \"%s\" on line %d" -msgstr "tipo \"%s\" non supportato alla linea %d" +msgstr "tipo \"%s\" non supportato alla riga %d" #: error.c:59 #, c-format msgid "too many arguments on line %d" -msgstr "troppi argomenti alla linea %d" +msgstr "troppi argomenti alla riga %d" #: error.c:69 #, c-format msgid "too few arguments on line %d" -msgstr "numero di argomenti non sufficiente alla linea %d" +msgstr "numero di argomenti non sufficiente alla riga %d" #: error.c:79 #, c-format msgid "invalid input syntax for type int: \"%s\", on line %d" -msgstr "sintassi in input non valida per il tipo int: \"%s\", alla linea %d" +msgstr "sintassi in input non valida per il tipo int: \"%s\", alla riga %d" #: error.c:89 #, c-format msgid "invalid input syntax for type unsigned int: \"%s\", on line %d" -msgstr "sintassi in input non valida per il tipo unsigned int: \"%s\", alla linea %d" +msgstr "sintassi in input non valida per il tipo unsigned int: \"%s\", alla riga %d" #: error.c:99 #, c-format msgid "invalid input syntax for floating-point type: \"%s\", on line %d" -msgstr "sintassi in input non valida per il tipo floating-point: \"%s\", alla linea %d" +msgstr "sintassi in input non valida per il tipo floating-point: \"%s\", alla riga %d" #: error.c:110 #, c-format msgid "invalid syntax for type boolean: \"%s\", on line %d" -msgstr "sintassi in input non valida per il tipo boolean: \"%s\", alla linea %d" +msgstr "sintassi in input non valida per il tipo boolean: \"%s\", alla riga %d" -# Originariamente da MT: non si può convertire il valore booleano: la dimensione è sbagliata (disallineata), alla linea %d +# Originariamente da MT: non si può convertire il valore booleano: la dimensione è sbagliata (disallineata), alla riga %d #: error.c:118 #, c-format msgid "could not convert boolean value: size mismatch, on line %d" -msgstr "conversione fallita per il valore booleano: dimensione incompatibile, alla linea %d" +msgstr "conversione fallita per il valore booleano: dimensione incompatibile, alla riga %d" #: error.c:128 #, c-format msgid "empty query on line %d" -msgstr "query vuota alla linea %d" +msgstr "query vuota alla riga %d" #: error.c:138 #, c-format msgid "null value without indicator on line %d" -msgstr "valore nullo senza variabile 'indicatore' alla linea %d" +msgstr "valore nullo senza variabile 'indicatore' alla riga %d" # è difficile da tradurre diversamente (GB) #: error.c:148 #, c-format msgid "variable does not have an array type on line %d" -msgstr "la variabile non è di tipo array alla linea %d" +msgstr "la variabile non è di tipo array alla riga %d" #: error.c:158 #, c-format msgid "data read from server is not an array on line %d" -msgstr "i dati letti dal server non sono di tipo array alla linea %d" +msgstr "i dati letti dal server non sono di tipo array alla riga %d" #: error.c:168 #, c-format msgid "inserting an array of variables is not supported on line %d" -msgstr "inserire un array di variabili non è supportato alla linea %d" +msgstr "inserire un array di variabili non è supportato alla riga %d" #: error.c:178 #, c-format msgid "connection \"%s\" does not exist on line %d" -msgstr "la connessione \"%s\" non esiste alla linea %d" +msgstr "la connessione \"%s\" non esiste alla riga %d" -# Inizialmente (MT): non si è connessi alla connessione \"%s\" alla linea %d +# Inizialmente (MT): non si è connessi alla connessione \"%s\" alla riga %d #: error.c:188 #, c-format msgid "not connected to connection \"%s\" on line %d" -msgstr "connessione \"%s\" non attiva alla linea %d" +msgstr "connessione \"%s\" non attiva alla riga %d" #: error.c:198 #, c-format msgid "invalid statement name \"%s\" on line %d" -msgstr "nome di istruzione non valido \"%s\" alla linea %d" +msgstr "nome di istruzione non valido \"%s\" alla riga %d" #: error.c:208 #, c-format msgid "descriptor \"%s\" not found on line %d" -msgstr "il descrittore \"%s\" non esiste alla linea %d" +msgstr "il descrittore \"%s\" non esiste alla riga %d" # userei intervallo al posto di range (GB) #: error.c:218 #, c-format msgid "descriptor index out of range on line %d" -msgstr "l'indice del descrittore è fuori intervallo alla linea %d" +msgstr "l'indice del descrittore è fuori intervallo alla riga %d" #: error.c:228 #, c-format msgid "unrecognized descriptor item \"%s\" on line %d" -msgstr "elemento del descrittore \"%s\" non riconosciuto alla linea %d" +msgstr "elemento del descrittore \"%s\" sconosciuto alla riga %d" #: error.c:238 #, c-format msgid "variable does not have a numeric type on line %d" -msgstr "la variabile non è di tipo numerico alla linea %d" +msgstr "la variabile non è di tipo numerico alla riga %d" #: error.c:248 #, c-format msgid "variable does not have a character type on line %d" -msgstr "la variabile non è di tipo carattere alla linea %d" +msgstr "la variabile non è di tipo carattere alla riga %d" #: error.c:258 #, c-format msgid "error in transaction processing on line %d" -msgstr "errore nel processare la transazione alla linea %d" +msgstr "errore nel processare la transazione alla riga %d" -# Inizialmente (MT): non posso connettermi al database \"%s\" alla linea %d +# Inizialmente (MT): non posso connettermi al database \"%s\" alla riga %d #: error.c:268 #, c-format msgid "could not connect to database \"%s\" on line %d" -msgstr "connessione fallita al database \"%s\" alla linea %d" +msgstr "connessione fallita al database \"%s\" alla riga %d" #: error.c:278 #, c-format msgid "SQL error %d on line %d" -msgstr "errore SQL %d alla linea %d" +msgstr "errore SQL %d alla riga %d" -#: error.c:316 +#: error.c:318 msgid "the connection to the server was lost" msgstr "la connessione con il server è andata persa" -#: error.c:402 +#: error.c:405 #, c-format msgid "SQL error: %s\n" msgstr "errore SQL: %s\n" -#: execute.c:1912 +#: execute.c:1921 msgid "" msgstr "" #: misc.c:113 msgid "NULL" msgstr "NULL" - diff --git a/src/interfaces/ecpg/ecpglib/po/ja.po b/src/interfaces/ecpg/ecpglib/po/ja.po index 60c8b5b3c6..1753400819 100644 --- a/src/interfaces/ecpg/ecpglib/po/ja.po +++ b/src/interfaces/ecpg/ecpglib/po/ja.po @@ -11,6 +11,7 @@ msgstr "" "PO-Revision-Date: 2010-07-15 18:00+0900\n" "Last-Translator: HOTTA Michihide \n" "Language-Team: Japanese\n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/interfaces/ecpg/ecpglib/po/pl.po b/src/interfaces/ecpg/ecpglib/po/pl.po new file mode 100644 index 0000000000..7dbc4fe82e --- /dev/null +++ b/src/interfaces/ecpg/ecpglib/po/pl.po @@ -0,0 +1,176 @@ +# Polish message translation file for ecpglib +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# +# Begina Felicysym , 2011. +msgid "" +msgstr "" +"Project-Id-Version: ecpglib (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-09-29 22:57+0000\n" +"PO-Revision-Date: 2011-09-30 09:51-0300\n" +"Last-Translator: Begina Felicysym \n" +"Language-Team: Begina Felicysym\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1-beta1\n" + +#: connect.c:224 +msgid "empty message text" +msgstr "pusty tekst komunikatu" + +#: connect.c:379 connect.c:405 connect.c:518 +msgid "" +msgstr "" + +#: error.c:29 +#, c-format +msgid "no data found on line %d" +msgstr "nie znaleziono danych, linia %d" + +#: error.c:39 +#, c-format +msgid "out of memory on line %d" +msgstr "brak pamięci, linia %d" + +#: error.c:49 +#, c-format +msgid "unsupported type \"%s\" on line %d" +msgstr "nieobsługiwany typ \"%s\", linia %d" + +#: error.c:59 +#, c-format +msgid "too many arguments on line %d" +msgstr "zbyt wiele argumentów, linia %d" + +#: error.c:69 +#, c-format +msgid "too few arguments on line %d" +msgstr "zbyt mało argumentów, linia %d" + +#: error.c:79 +#, c-format +msgid "invalid input syntax for type int: \"%s\", on line %d" +msgstr "niepoprawna składnia wejścia dla typu int: \"%s\", linia %d" + +#: error.c:89 +#, c-format +msgid "invalid input syntax for type unsigned int: \"%s\", on line %d" +msgstr "niepoprawna składnia wejścia dla typu unsigned int: \"%s\", linia %d" + +#: error.c:99 +#, c-format +msgid "invalid input syntax for floating-point type: \"%s\", on line %d" +msgstr "niepoprawna składnia wejścia dla typu floating-point: \"%s\", linia %d" + +#: error.c:110 +#, c-format +msgid "invalid syntax for type boolean: \"%s\", on line %d" +msgstr "niepoprawna składnia wejścia dla typu boolean: \"%s\", linia %d" + +#: error.c:118 +#, c-format +msgid "could not convert boolean value: size mismatch, on line %d" +msgstr "" +"nie można przekształcić wartości logicznej: niepoprawny rozmiar, linia %d" + +#: error.c:128 +#, c-format +msgid "empty query on line %d" +msgstr "puste zapytanie, linia %d" + +#: error.c:138 +#, c-format +msgid "null value without indicator on line %d" +msgstr "wartość null bez wskaźnika, linia %d" + +#: error.c:148 +#, c-format +msgid "variable does not have an array type on line %d" +msgstr "zmienna nie ma typu array, linia %d" + +#: error.c:158 +#, c-format +msgid "data read from server is not an array on line %d" +msgstr "dane odczytane z serwera nie są tablicą, linia %d" + +#: error.c:168 +#, c-format +msgid "inserting an array of variables is not supported on line %d" +msgstr "wstawienie tablicy zmiennych nie jest obsługiwane, linia %d" + +#: error.c:178 +#, c-format +msgid "connection \"%s\" does not exist on line %d" +msgstr "połączenie \"%s\" nie istnieje, linia %d" + +#: error.c:188 +#, c-format +msgid "not connected to connection \"%s\" on line %d" +msgstr "nie wykonano połączenia z \"%s\", linia %d" + +#: error.c:198 +#, c-format +msgid "invalid statement name \"%s\" on line %d" +msgstr "niepoprawna nazwa wyrażenia \"%s\", linia %d" + +#: error.c:208 +#, c-format +msgid "descriptor \"%s\" not found on line %d" +msgstr "nie odnaleziono deskryptora \"%s\", linia %d" + +#: error.c:218 +#, c-format +msgid "descriptor index out of range on line %d" +msgstr "indeks deskryptora poza zakresem, linia %d" + +#: error.c:228 +#, c-format +msgid "unrecognized descriptor item \"%s\" on line %d" +msgstr "niezrozumiały element deskryptora \"%s\", linia %d" + +#: error.c:238 +#, c-format +msgid "variable does not have a numeric type on line %d" +msgstr "zmienna nie ma typu typu numeric, linia %d" + +#: error.c:248 +#, c-format +msgid "variable does not have a character type on line %d" +msgstr "zmienna nie ma typu typu character, linia %d" + +#: error.c:258 +#, c-format +msgid "error in transaction processing on line %d" +msgstr "błąd w przetwarzaniu transakcji, linia %d" + +#: error.c:268 +#, c-format +msgid "could not connect to database \"%s\" on line %d" +msgstr "nie można połączyć się z bazą danych \"%s\", linia %d" + +#: error.c:278 +#, c-format +msgid "SQL error %d on line %d" +msgstr "błąd SQL %d, linia %d" + +#: error.c:318 +msgid "the connection to the server was lost" +msgstr "połączenie z serwerem zostało przerwane" + +#: error.c:405 +#, c-format +msgid "SQL error: %s\n" +msgstr "błąd SQL: %s\n" + +#: execute.c:1919 +msgid "" +msgstr "" + +#: misc.c:113 +msgid "NULL" +msgstr "NULL" diff --git a/src/interfaces/ecpg/ecpglib/po/pt_BR.po b/src/interfaces/ecpg/ecpglib/po/pt_BR.po index c2a1090656..aac0416efa 100644 --- a/src/interfaces/ecpg/ecpglib/po/pt_BR.po +++ b/src/interfaces/ecpg/ecpglib/po/pt_BR.po @@ -2,16 +2,17 @@ # Copyright (C) 2009 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # Fernando Ike de Oliveira , 2009. -# Euler Taveira de Oliveira , 2010. +# Euler Taveira de Oliveira , 2010-2011. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" "POT-Creation-Date: 2010-05-08 22:12-0300\n" "PO-Revision-Date: 2009-02-09 13:00-0200\n" "Last-Translator: Fernando Ike de Oliveira \n" "Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/interfaces/ecpg/ecpglib/po/ru.po b/src/interfaces/ecpg/ecpglib/po/ru.po new file mode 100644 index 0000000000..b08f2dcd39 --- /dev/null +++ b/src/interfaces/ecpg/ecpglib/po/ru.po @@ -0,0 +1,181 @@ +# Russian message translation file for ecpglib +# Copyright (C) 2012 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# Alexander Lakhin , 2012. +# +# ChangeLog: +# - February 14, 2012: Complete translation for 9.1, Alexander Lakhin . +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 9.1\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2012-07-10 22:22+0000\n" +"PO-Revision-Date: 2012-02-14 21:39+0400\n" +"Last-Translator: Alexander Lakhin \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Russian\n" +"X-Poedit-Country: RUSSIAN FEDERATION\n" +"X-Generator: Lokalize 1.4\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" + +#: connect.c:224 +msgid "empty message text" +msgstr "пустое сообщение" + +#: connect.c:379 connect.c:405 connect.c:518 +msgid "" +msgstr "<ПО_УМОЛЧАНИЮ>" + +#: error.c:29 +#, c-format +msgid "no data found on line %d" +msgstr "нет данных (строка %d)" + +#: error.c:39 +#, c-format +msgid "out of memory on line %d" +msgstr "нехватка памяти (строка %d)" + +#: error.c:49 +#, c-format +msgid "unsupported type \"%s\" on line %d" +msgstr "неподдерживаемый тип \"%s\" в строке %d" + +#: error.c:59 +#, c-format +msgid "too many arguments on line %d" +msgstr "слишком много аргументов в строке %d" + +#: error.c:69 +#, c-format +msgid "too few arguments on line %d" +msgstr "недостаточно аргументов в строке %d" + +#: error.c:79 +#, c-format +msgid "invalid input syntax for type int: \"%s\", on line %d" +msgstr "неверный синтаксис для целого числа: \"%s\" (строка %d)" + +#: error.c:89 +#, c-format +msgid "invalid input syntax for type unsigned int: \"%s\", on line %d" +msgstr "неверный синтаксис для беззнакового целого: \"%s\" (строка %d)" + +#: error.c:99 +#, c-format +msgid "invalid input syntax for floating-point type: \"%s\", on line %d" +msgstr "неверный синтаксис для числа с плавающей точкой: \"%s\" (строка %d)" + +#: error.c:110 +#, c-format +msgid "invalid syntax for type boolean: \"%s\", on line %d" +msgstr "неверный синтаксис для логического значения: \"%s\" (строка %d)" + +#: error.c:118 +#, c-format +msgid "could not convert boolean value: size mismatch, on line %d" +msgstr "" +"не удалось преобразовать логическое значение: несовпадение размера (строка " +"%d)" + +#: error.c:128 +#, c-format +msgid "empty query on line %d" +msgstr "пустой запрос в строке %d" + +#: error.c:138 +#, c-format +msgid "null value without indicator on line %d" +msgstr "значение NULL без индикатора в строке %d" + +#: error.c:148 +#, c-format +msgid "variable does not have an array type on line %d" +msgstr "переменная должна иметь тип массива (строка %d)" + +#: error.c:158 +#, c-format +msgid "data read from server is not an array on line %d" +msgstr "полученные с сервера данные - не массив (%d)" + +#: error.c:168 +#, c-format +msgid "inserting an array of variables is not supported on line %d" +msgstr "добавление массива переменных не поддерживается (строка %d)" + +#: error.c:178 +#, c-format +msgid "connection \"%s\" does not exist on line %d" +msgstr "подключение \"%s\" не существует (строка %d)" + +#: error.c:188 +#, c-format +msgid "not connected to connection \"%s\" on line %d" +msgstr "подключение \"%s\" не установлено (строка %d)" + +#: error.c:198 +#, c-format +msgid "invalid statement name \"%s\" on line %d" +msgstr "неверный оператор \"%s\" в строке %d" + +#: error.c:208 +#, c-format +msgid "descriptor \"%s\" not found on line %d" +msgstr "дескриптор \"%s\" не найден (строка %d)" + +#: error.c:218 +#, c-format +msgid "descriptor index out of range on line %d" +msgstr "индекс дескриптора вне диапазона (строка %d)" + +#: error.c:228 +#, c-format +msgid "unrecognized descriptor item \"%s\" on line %d" +msgstr "нераспознанный элемент дескриптора \"%s\" (строка %d)" + +#: error.c:238 +#, c-format +msgid "variable does not have a numeric type on line %d" +msgstr "переменная должна быть числовой (строка %d)" + +#: error.c:248 +#, c-format +msgid "variable does not have a character type on line %d" +msgstr "переменная должна быть символьной (строка %d)" + +#: error.c:258 +#, c-format +msgid "error in transaction processing on line %d" +msgstr "ошибка при обработке транзакции в строке %d" + +#: error.c:268 +#, c-format +msgid "could not connect to database \"%s\" on line %d" +msgstr "ошибка подключения к базе данных \"%s\" (строка %d)" + +#: error.c:278 +#, c-format +msgid "SQL error %d on line %d" +msgstr "SQL-ошибка %d в строке %d" + +#: error.c:318 +msgid "the connection to the server was lost" +msgstr "подключение к серверу потеряно" + +#: error.c:405 +#, c-format +msgid "SQL error: %s\n" +msgstr "ошибка SQL: %s\n" + +#: execute.c:1921 +msgid "" +msgstr "<>" + +#: misc.c:113 +msgid "NULL" +msgstr "NULL" diff --git a/src/interfaces/ecpg/ecpglib/po/tr.po b/src/interfaces/ecpg/ecpglib/po/tr.po index dfa1d56ff6..13651f4d8a 100644 --- a/src/interfaces/ecpg/ecpglib/po/tr.po +++ b/src/interfaces/ecpg/ecpglib/po/tr.po @@ -11,6 +11,7 @@ msgstr "" "PO-Revision-Date: 2010-09-01 10:51+0200\n" "Last-Translator: Devrim GÜNDÜZ \n" "Language-Team: TR \n" +"Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/interfaces/ecpg/ecpglib/po/zh_CN.po b/src/interfaces/ecpg/ecpglib/po/zh_CN.po index 69659ba181..5cdd4e8748 100644 --- a/src/interfaces/ecpg/ecpglib/po/zh_CN.po +++ b/src/interfaces/ecpg/ecpglib/po/zh_CN.po @@ -7,19 +7,20 @@ msgid "" msgstr "" "Project-Id-Version: ecpglib (PostgreSQL 9.0)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-10-01 14:43+0000\n" +"POT-Creation-Date: 2013-01-29 13:51+0000\n" "PO-Revision-Date: 2010-09-26 09:04+0800\n" "Last-Translator: Weibin \n" "Language-Team: Chinese (Simplified)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: connect.c:226 +#: connect.c:224 msgid "empty message text" msgstr "消息文本为空" -#: connect.c:381 connect.c:407 connect.c:520 +#: connect.c:379 connect.c:405 connect.c:518 msgid "" msgstr "" @@ -163,7 +164,7 @@ msgstr "与服务器的连接丢失" msgid "SQL error: %s\n" msgstr "SQL语句错误: %s\n" -#: execute.c:1912 +#: execute.c:1921 msgid "" msgstr "<空>" diff --git a/src/interfaces/ecpg/ecpglib/sqlda.c b/src/interfaces/ecpg/ecpglib/sqlda.c index 33b4d2bce3..343a793c95 100644 --- a/src/interfaces/ecpg/ecpglib/sqlda.c +++ b/src/interfaces/ecpg/ecpglib/sqlda.c @@ -110,7 +110,7 @@ sqlda_common_total_size(const PGresult *res, int row, enum COMPAT_MODE compat, l * int Unfortunately we need to do double work here to compute * the size of the space needed for the numeric structure. */ - ecpg_sqlda_align_add_size(offset, sizeof(int), sizeof(numeric), &offset, &next_offset); + ecpg_sqlda_align_add_size(offset, sizeof(NumericDigit *), sizeof(numeric), &offset, &next_offset); if (!PQgetisnull(res, row, i)) { char *val = PQgetvalue(res, row, i); @@ -119,18 +119,19 @@ sqlda_common_total_size(const PGresult *res, int row, enum COMPAT_MODE compat, l num = PGTYPESnumeric_from_asc(val, NULL); if (!num) break; - ecpg_sqlda_align_add_size(next_offset, sizeof(int), num->ndigits + 1, &offset, &next_offset); + if (num->ndigits) + ecpg_sqlda_align_add_size(next_offset, sizeof(int), num->ndigits + 1, &offset, &next_offset); PGTYPESnumeric_free(num); } break; case ECPGt_date: - ecpg_sqlda_align_add_size(offset, sizeof(int), sizeof(date), &offset, &next_offset); + ecpg_sqlda_align_add_size(offset, sizeof(date), sizeof(date), &offset, &next_offset); break; case ECPGt_timestamp: - ecpg_sqlda_align_add_size(offset, sizeof(int), sizeof(timestamp), &offset, &next_offset); + ecpg_sqlda_align_add_size(offset, sizeof(int64), sizeof(timestamp), &offset, &next_offset); break; case ECPGt_interval: - ecpg_sqlda_align_add_size(offset, sizeof(int), sizeof(interval), &offset, &next_offset); + ecpg_sqlda_align_add_size(offset, sizeof(int64), sizeof(interval), &offset, &next_offset); break; case ECPGt_char: case ECPGt_unsigned_char: @@ -323,7 +324,7 @@ ecpg_set_compat_sqlda(int lineno, struct sqlda_compat ** _sqlda, const PGresult set_data = false; - ecpg_sqlda_align_add_size(offset, sizeof(int), sizeof(numeric), &offset, &next_offset); + ecpg_sqlda_align_add_size(offset, sizeof(NumericDigit *), sizeof(numeric), &offset, &next_offset); sqlda->sqlvar[i].sqldata = (char *) sqlda + offset; sqlda->sqlvar[i].sqllen = sizeof(numeric); @@ -343,11 +344,14 @@ ecpg_set_compat_sqlda(int lineno, struct sqlda_compat ** _sqlda, const PGresult memcpy(sqlda->sqlvar[i].sqldata, num, sizeof(numeric)); - ecpg_sqlda_align_add_size(next_offset, sizeof(int), num->ndigits + 1, &offset, &next_offset); - memcpy((char *) sqlda + offset, num->buf, num->ndigits + 1); + if (num->ndigits) + { + ecpg_sqlda_align_add_size(next_offset, sizeof(int), num->ndigits + 1, &offset, &next_offset); + memcpy((char *) sqlda + offset, num->buf, num->ndigits + 1); - ((numeric *) sqlda->sqlvar[i].sqldata)->buf = (NumericDigit *) sqlda + offset; - ((numeric *) sqlda->sqlvar[i].sqldata)->digits = (NumericDigit *) sqlda + offset + (num->digits - num->buf); + ((numeric *) sqlda->sqlvar[i].sqldata)->buf = (NumericDigit *) sqlda + offset; + ((numeric *) sqlda->sqlvar[i].sqldata)->digits = (NumericDigit *) sqlda + offset + (num->digits - num->buf); + } PGTYPESnumeric_free(num); @@ -359,7 +363,7 @@ ecpg_set_compat_sqlda(int lineno, struct sqlda_compat ** _sqlda, const PGresult sqlda->sqlvar[i].sqllen = sizeof(date); break; case ECPGt_timestamp: - ecpg_sqlda_align_add_size(offset, sizeof(timestamp), sizeof(timestamp), &offset, &next_offset); + ecpg_sqlda_align_add_size(offset, sizeof(int64), sizeof(timestamp), &offset, &next_offset); sqlda->sqlvar[i].sqldata = (char *) sqlda + offset; sqlda->sqlvar[i].sqllen = sizeof(timestamp); break; @@ -509,7 +513,7 @@ ecpg_set_native_sqlda(int lineno, struct sqlda_struct ** _sqlda, const PGresult set_data = false; - ecpg_sqlda_align_add_size(offset, sizeof(int), sizeof(numeric), &offset, &next_offset); + ecpg_sqlda_align_add_size(offset, sizeof(NumericDigit *), sizeof(numeric), &offset, &next_offset); sqlda->sqlvar[i].sqldata = (char *) sqlda + offset; sqlda->sqlvar[i].sqllen = sizeof(numeric); @@ -529,11 +533,14 @@ ecpg_set_native_sqlda(int lineno, struct sqlda_struct ** _sqlda, const PGresult memcpy(sqlda->sqlvar[i].sqldata, num, sizeof(numeric)); - ecpg_sqlda_align_add_size(next_offset, sizeof(int), num->ndigits + 1, &offset, &next_offset); - memcpy((char *) sqlda + offset, num->buf, num->ndigits + 1); + if (num->ndigits) + { + ecpg_sqlda_align_add_size(next_offset, sizeof(int), num->ndigits + 1, &offset, &next_offset); + memcpy((char *) sqlda + offset, num->buf, num->ndigits + 1); - ((numeric *) sqlda->sqlvar[i].sqldata)->buf = (NumericDigit *) sqlda + offset; - ((numeric *) sqlda->sqlvar[i].sqldata)->digits = (NumericDigit *) sqlda + offset + (num->digits - num->buf); + ((numeric *) sqlda->sqlvar[i].sqldata)->buf = (NumericDigit *) sqlda + offset; + ((numeric *) sqlda->sqlvar[i].sqldata)->digits = (NumericDigit *) sqlda + offset + (num->digits - num->buf); + } PGTYPESnumeric_free(num); @@ -545,7 +552,7 @@ ecpg_set_native_sqlda(int lineno, struct sqlda_struct ** _sqlda, const PGresult sqlda->sqlvar[i].sqllen = sizeof(date); break; case ECPGt_timestamp: - ecpg_sqlda_align_add_size(offset, sizeof(timestamp), sizeof(timestamp), &offset, &next_offset); + ecpg_sqlda_align_add_size(offset, sizeof(int64), sizeof(timestamp), &offset, &next_offset); sqlda->sqlvar[i].sqldata = (char *) sqlda + offset; sqlda->sqlvar[i].sqllen = sizeof(timestamp); break; diff --git a/src/interfaces/ecpg/pgtypeslib/datetime.c b/src/interfaces/ecpg/pgtypeslib/datetime.c index 41377a6861..d95531be92 100644 --- a/src/interfaces/ecpg/pgtypeslib/datetime.c +++ b/src/interfaces/ecpg/pgtypeslib/datetime.c @@ -61,14 +61,14 @@ PGTYPESdate_from_asc(char *str, char **endptr) int nf; char *field[MAXDATEFIELDS]; int ftype[MAXDATEFIELDS]; - char lowstr[MAXDATELEN + 1]; + char lowstr[MAXDATELEN + MAXDATEFIELDS]; char *realptr; char **ptr = (endptr != NULL) ? endptr : &realptr; bool EuroDates = FALSE; errno = 0; - if (strlen(str) >= sizeof(lowstr)) + if (strlen(str) > MAXDATELEN) { errno = PGTYPES_DATE_BAD_DATE; return INT_MIN; diff --git a/src/interfaces/ecpg/pgtypeslib/dt.h b/src/interfaces/ecpg/pgtypeslib/dt.h index ca9f5effcc..48c9deda1c 100644 --- a/src/interfaces/ecpg/pgtypeslib/dt.h +++ b/src/interfaces/ecpg/pgtypeslib/dt.h @@ -192,12 +192,17 @@ typedef double fsec_t; #define DTK_DATE_M (DTK_M(YEAR) | DTK_M(MONTH) | DTK_M(DAY)) #define DTK_TIME_M (DTK_M(HOUR) | DTK_M(MINUTE) | DTK_M(SECOND)) -#define MAXDATELEN 63 /* maximum possible length of an input date - * string (not counting tr. null) */ -#define MAXDATEFIELDS 25 /* maximum possible number of fields in a date - * string */ -#define TOKMAXLEN 10 /* only this many chars are stored in - * datetktbl */ +/* + * Working buffer size for input and output of interval, timestamp, etc. + * Inputs that need more working space will be rejected early. Longer outputs + * will overrun buffers, so this must suffice for all possible output. As of + * this writing, PGTYPESinterval_to_asc() needs the most space at ~90 bytes. + */ +#define MAXDATELEN 128 +/* maximum possible number of fields in a date string */ +#define MAXDATEFIELDS 25 +/* only this many chars are stored in datetktbl */ +#define TOKMAXLEN 10 /* keep this struct small; it gets used a lot */ typedef struct diff --git a/src/interfaces/ecpg/pgtypeslib/dt_common.c b/src/interfaces/ecpg/pgtypeslib/dt_common.c index 45f1f8affd..be7e996314 100644 --- a/src/interfaces/ecpg/pgtypeslib/dt_common.c +++ b/src/interfaces/ecpg/pgtypeslib/dt_common.c @@ -1164,15 +1164,22 @@ DecodeNumberField(int len, char *str, int fmask, if ((cp = strchr(str, '.')) != NULL) { #ifdef HAVE_INT64_TIMESTAMP - char fstr[MAXDATELEN + 1]; + char fstr[7]; + int i; + + cp++; /* * OK, we have at most six digits to care about. Let's construct a - * string and then do the conversion to an integer. + * string with those digits, zero-padded on the right, and then do + * the conversion to an integer. + * + * XXX This truncates the seventh digit, unlike rounding it as do + * the backend and the !HAVE_INT64_TIMESTAMP case. */ - strcpy(fstr, (cp + 1)); - strcpy(fstr + strlen(fstr), "000000"); - *(fstr + 6) = '\0'; + for (i = 0; i < 6; i++) + fstr[i] = *cp != '\0' ? *cp++ : '0'; + fstr[i] = '\0'; *fsec = strtol(fstr, NULL, 10); #else *fsec = strtod(cp, NULL); @@ -1524,15 +1531,22 @@ DecodeTime(char *str, int *tmask, struct tm * tm, fsec_t *fsec) else if (*cp == '.') { #ifdef HAVE_INT64_TIMESTAMP - char fstr[MAXDATELEN + 1]; + char fstr[7]; + int i; + + cp++; /* - * OK, we have at most six digits to work with. Let's construct a - * string and then do the conversion to an integer. + * OK, we have at most six digits to care about. Let's construct a + * string with those digits, zero-padded on the right, and then do + * the conversion to an integer. + * + * XXX This truncates the seventh digit, unlike rounding it as do + * the backend and the !HAVE_INT64_TIMESTAMP case. */ - strncpy(fstr, (cp + 1), 7); - strcpy(fstr + strlen(fstr), "000000"); - *(fstr + 6) = '\0'; + for (i = 0; i < 6; i++) + fstr[i] = *cp != '\0' ? *cp++ : '0'; + fstr[i] = '\0'; *fsec = strtol(fstr, &cp, 10); #else str = cp; @@ -1658,6 +1672,9 @@ DecodePosixTimezone(char *str, int *tzp) * DTK_NUMBER can hold date fields (yy.ddd) * DTK_STRING can hold months (January) and time zones (PST) * DTK_DATE can hold Posix time zones (GMT-8) + * + * The "lowstr" work buffer must have at least strlen(timestr) + MAXDATEFIELDS + * bytes of space. On output, field[] entries will point into it. */ int ParseDateTime(char *timestr, char *lowstr, @@ -1670,7 +1687,10 @@ ParseDateTime(char *timestr, char *lowstr, /* outer loop through fields */ while (*(*endstr) != '\0') { + /* Record start of current field */ field[nf] = lp; + if (nf >= MAXDATEFIELDS) + return -1; /* leading digit? then date or time */ if (isdigit((unsigned char) *(*endstr))) @@ -1811,8 +1831,6 @@ ParseDateTime(char *timestr, char *lowstr, /* force in a delimiter after each field */ *lp++ = '\0'; nf++; - if (nf > MAXDATEFIELDS) - return -1; } *numfields = nf; diff --git a/src/interfaces/ecpg/pgtypeslib/interval.c b/src/interfaces/ecpg/pgtypeslib/interval.c index bcc10eeafd..fdd8f49ac8 100644 --- a/src/interfaces/ecpg/pgtypeslib/interval.c +++ b/src/interfaces/ecpg/pgtypeslib/interval.c @@ -1092,7 +1092,7 @@ PGTYPESinterval_from_asc(char *str, char **endptr) tm->tm_sec = 0; fsec = 0; - if (strlen(str) >= sizeof(lowstr)) + if (strlen(str) > MAXDATELEN) { errno = PGTYPES_INTVL_BAD_INTERVAL; return NULL; diff --git a/src/interfaces/ecpg/pgtypeslib/numeric.c b/src/interfaces/ecpg/pgtypeslib/numeric.c index 7257c81254..55c5b45616 100644 --- a/src/interfaces/ecpg/pgtypeslib/numeric.c +++ b/src/interfaces/ecpg/pgtypeslib/numeric.c @@ -430,14 +430,18 @@ PGTYPESnumeric_to_asc(numeric *num, int dscale) numeric *numcopy = PGTYPESnumeric_new(); char *s; - if (dscale < 0) - dscale = num->dscale; + if (numcopy == NULL) + return NULL; if (PGTYPESnumeric_copy(num, numcopy) < 0) { PGTYPESnumeric_free(numcopy); return NULL; } + + if (dscale < 0) + dscale = num->dscale; + /* get_str_from_var may change its argument */ s = get_str_from_var(numcopy, dscale); PGTYPESnumeric_free(numcopy); @@ -1520,6 +1524,9 @@ numericvar_to_double(numeric *var, double *dp) char *endptr; numeric *varcopy = PGTYPESnumeric_new(); + if (varcopy == NULL) + return -1; + if (PGTYPESnumeric_copy(var, varcopy) < 0) { PGTYPESnumeric_free(varcopy); diff --git a/src/interfaces/ecpg/pgtypeslib/timestamp.c b/src/interfaces/ecpg/pgtypeslib/timestamp.c index 8354e460d0..8dd3452f09 100644 --- a/src/interfaces/ecpg/pgtypeslib/timestamp.c +++ b/src/interfaces/ecpg/pgtypeslib/timestamp.c @@ -76,8 +76,9 @@ tm2timestamp(struct tm * tm, fsec_t fsec, int *tzp, timestamp * result) if ((*result - time) / USECS_PER_DAY != dDate) return -1; /* check for just-barely overflow (okay except time-of-day wraps) */ - if ((*result < 0 && dDate >= 0) || - (*result >= 0 && dDate < 0)) + /* caution: we want to allow 1999-12-31 24:00:00 */ + if ((*result < 0 && dDate > 0) || + (*result > 0 && dDate < -1)) return -1; #else *result = dDate * SECS_PER_DAY + time; @@ -254,6 +255,8 @@ timestamp2tm(timestamp dt, int *tzp, struct tm * tm, fsec_t *fsec, char **tzn) *tzn = NULL; } + tm->tm_yday = dDate - date2j(tm->tm_year, 1, 1) + 1; + return 0; } /* timestamp2tm() */ @@ -294,7 +297,7 @@ PGTYPEStimestamp_from_asc(char *str, char **endptr) char *realptr; char **ptr = (endptr != NULL) ? endptr : &realptr; - if (strlen(str) >= sizeof(lowstr)) + if (strlen(str) > MAXDATELEN) { errno = PGTYPES_TS_BAD_TIMESTAMP; return (noresult); diff --git a/src/interfaces/ecpg/preproc/Makefile b/src/interfaces/ecpg/preproc/Makefile index 36b3c26ada..8e85fe9e5a 100644 --- a/src/interfaces/ecpg/preproc/Makefile +++ b/src/interfaces/ecpg/preproc/Makefile @@ -57,8 +57,8 @@ else @$(missing) flex $< $@ endif -preproc.y: ../../../backend/parser/gram.y parse2.pl ecpg.addons ecpg.header ecpg.tokens ecpg.trailer ecpg.type - $(PERL) $(srcdir)/parse2.pl $(srcdir) < $< > $@ +preproc.y: ../../../backend/parser/gram.y parse.pl ecpg.addons ecpg.header ecpg.tokens ecpg.trailer ecpg.type + $(PERL) $(srcdir)/parse.pl $(srcdir) < $< > $@ $(PERL) $(srcdir)/check_rules.pl $(srcdir) $< ecpg_keywords.o c_keywords.o keywords.o preproc.o parser.o: preproc.h diff --git a/src/interfaces/ecpg/preproc/README.parser b/src/interfaces/ecpg/preproc/README.parser index 6d6daac4ba..ddc3061d48 100644 --- a/src/interfaces/ecpg/preproc/README.parser +++ b/src/interfaces/ecpg/preproc/README.parser @@ -3,7 +3,7 @@ ECPG modifies and extends the core grammar in a way that defined in ecpg.tokens, types are defined in ecpg.type 2) most tokens from the core grammar are simply converted to literals concatenated together to form the SQL string - passed to the server, this is done by parse2.pl. + passed to the server, this is done by parse.pl. 3) some rules need side-effects, actions are either added or completely overridden (compared to the basic token concatenation) for them, these are defined in ecpg.addons, @@ -20,7 +20,7 @@ rules concatenated together. e.g. if gram.y has this: ruleA: tokenA tokenB tokenC {...} then "dumpedtokens" is "ruleAtokenAtokenBtokenC". "postfix" above can be: -a) "block" - the automatic rule created by parse2.pl is completely +a) "block" - the automatic rule created by parse.pl is completely overridden, the code block has to be written completely as it were in a plain bison grammar b) "rule" - the automatic rule is extended on, so new syntaxes diff --git a/src/interfaces/ecpg/preproc/ecpg.addons b/src/interfaces/ecpg/preproc/ecpg.addons index a689dbc70e..4753c1ed6f 100644 --- a/src/interfaces/ecpg/preproc/ecpg.addons +++ b/src/interfaces/ecpg/preproc/ecpg.addons @@ -19,9 +19,6 @@ ECPG: stmtClosePortalStmt block } ECPG: stmtDeallocateStmt block { - if (connection) - mmerror(PARSE_ERROR, ET_ERROR, "AT option not allowed in DEALLOCATE statement"); - output_deallocate_prepare_statement($1); } ECPG: stmtDeclareCursorStmt block @@ -72,8 +69,6 @@ ECPG: stmtViewStmt rule } | ECPGDeallocateDescr { - if (connection) - mmerror(PARSE_ERROR, ET_ERROR, "AT option not allowed in DEALLOCATE statement"); fprintf(yyout,"ECPGdeallocate_desc(__LINE__, %s);",$1); whenever_action(0); free($1); @@ -207,12 +202,6 @@ ECPG: CopyStmtCOPYopt_binaryqualified_nameopt_column_listopt_oidscopy_fromcopy_f ECPG: CopyStmtCOPYselect_with_parensTOcopy_file_nameopt_withcopy_options addon if (strcmp($4, "stdin") == 0) mmerror(PARSE_ERROR, ET_ERROR, "COPY TO STDIN is not possible"); -ECPG: ConstraintAttributeSpecConstraintDeferrabilitySpecConstraintTimeSpec addon - if (strcmp($1, "deferrable") != 0 && strcmp($2, "initially deferrable") == 0 ) - mmerror(PARSE_ERROR, ET_ERROR, "constraint declared INITIALLY DEFERRED must be DEFERRABLE"); -ECPG: ConstraintAttributeSpecConstraintTimeSpecConstraintDeferrabilitySpec addon - if (strcmp($2, "deferrable") != 0 && strcmp($1, "initially deferrable") == 0 ) - mmerror(PARSE_ERROR, ET_ERROR, "constraint declared INITIALLY DEFERRED must be DEFERRABLE"); ECPG: var_valueNumericOnly addon if ($1[0] == '$') { @@ -307,7 +296,7 @@ ECPG: DeclareCursorStmtDECLAREcursor_namecursor_optionsCURSORopt_holdFORSelectSt struct cursor *ptr, *this; char *cursor_marker = $2[0] == ':' ? mm_strdup("$0") : mm_strdup($2); char *comment, *c1, *c2; - int (* strcmp_fn)(const char *, const char *) = ($2[0] == ':' ? strcmp : pg_strcasecmp); + int (* strcmp_fn)(const char *, const char *) = (($2[0] == ':' || $2[0] == '"') ? strcmp : pg_strcasecmp); for (ptr = cur; ptr != NULL; ptr = ptr->next) { diff --git a/src/interfaces/ecpg/preproc/ecpg.header b/src/interfaces/ecpg/preproc/ecpg.header index 1710ef55d7..80c90feb6a 100644 --- a/src/interfaces/ecpg/preproc/ecpg.header +++ b/src/interfaces/ecpg/preproc/ecpg.header @@ -377,7 +377,7 @@ add_additional_variables(char *name, bool insert) { struct cursor *ptr; struct arguments *p; - int (* strcmp_fn)(const char *, const char *) = (name[0] == ':' ? strcmp : pg_strcasecmp); + int (* strcmp_fn)(const char *, const char *) = ((name[0] == ':' || name[0] == '"') ? strcmp : pg_strcasecmp); for (ptr = cur; ptr != NULL; ptr=ptr->next) { diff --git a/src/interfaces/ecpg/preproc/ecpg.trailer b/src/interfaces/ecpg/preproc/ecpg.trailer index 3a941ce1ab..37e8dbb7eb 100644 --- a/src/interfaces/ecpg/preproc/ecpg.trailer +++ b/src/interfaces/ecpg/preproc/ecpg.trailer @@ -289,7 +289,7 @@ ECPGCursorStmt: DECLARE cursor_name cursor_options CURSOR opt_hold FOR prepared { struct cursor *ptr, *this; char *cursor_marker = $2[0] == ':' ? mm_strdup("$0") : mm_strdup($2); - int (* strcmp_fn)(const char *, const char *) = ($2[0] == ':' ? strcmp : pg_strcasecmp); + int (* strcmp_fn)(const char *, const char *) = (($2[0] == ':' || $2[0] == '"') ? strcmp : pg_strcasecmp); struct variable *thisquery = (struct variable *)mm_alloc(sizeof(struct variable)); const char *con = connection ? connection : "NULL"; char *comment; @@ -832,7 +832,12 @@ opt_signed: SQL_SIGNED variable_list: variable { $$ = $1; } | variable_list ',' variable - { $$ = cat_str(3, $1, mm_strdup(","), $3); } + { + if (actual_type[struct_level].type_enum == ECPGt_varchar) + $$ = cat_str(3, $1, mm_strdup(";"), $3); + else + $$ = cat_str(3, $1, mm_strdup(","), $3); + } ; variable: opt_pointer ECPGColLabel opt_array_bounds opt_bit_field opt_initializer @@ -872,8 +877,8 @@ variable: opt_pointer ECPGColLabel opt_array_bounds opt_bit_field opt_initialize mmerror(PARSE_ERROR, ET_ERROR, "pointers to varchar are not implemented"); /* make sure varchar struct name is unique by adding a unique counter to its definition */ - vcn = (char *) mm_alloc(strlen($2) + sizeof(int) * CHAR_BIT * 10 / 3); - sprintf(vcn, "%s_%d", $2, varchar_counter); + vcn = (char *) mm_alloc(sizeof(int) * CHAR_BIT * 10 / 3); + sprintf(vcn, "%d", varchar_counter); if (strcmp(dimension, "0") == 0) $$ = cat_str(7, make2_str(mm_strdup(" struct varchar_"), vcn), mm_strdup(" { int len; char arr["), mm_strdup(length), mm_strdup("]; } *"), mm_strdup($2), $4, $5); else @@ -1591,7 +1596,7 @@ ECPGCKeywords: S_AUTO { $$ = mm_strdup("auto"); } * CONNECTION can be added back in all_unreserved_keyword, but CURRENT and * INPUT are reserved for ecpg purposes. * - * The mentioned exclusions are done by $replace_line settings in parse2.pl. + * The mentioned exclusions are done by $replace_line settings in parse.pl. */ all_unreserved_keyword: unreserved_keyword { $$ = $1; } | ECPGunreserved_interval { $$ = $1; } diff --git a/src/interfaces/ecpg/preproc/nls.mk b/src/interfaces/ecpg/preproc/nls.mk index c9417481b7..0d8245a855 100644 --- a/src/interfaces/ecpg/preproc/nls.mk +++ b/src/interfaces/ecpg/preproc/nls.mk @@ -1,5 +1,5 @@ # src/interfaces/ecpg/preproc/nls.mk CATALOG_NAME = ecpg -AVAIL_LANGUAGES = de es fr it ja ko pt_BR tr zh_CN zh_TW +AVAIL_LANGUAGES = cs de es fr it ja ko pl pt_BR ru tr zh_CN zh_TW GETTEXT_FILES = descriptor.c ecpg.c pgc.c preproc.c type.c variable.c GETTEXT_TRIGGERS = _ mmerror:3 diff --git a/src/interfaces/ecpg/preproc/output.c b/src/interfaces/ecpg/preproc/output.c index 9958a0a5df..7bfa201f03 100644 --- a/src/interfaces/ecpg/preproc/output.c +++ b/src/interfaces/ecpg/preproc/output.c @@ -95,9 +95,22 @@ hashline_number(void) #endif ) { - char *line = mm_alloc(strlen("\n#line %d \"%s\"\n") + sizeof(int) * CHAR_BIT * 10 / 3 + strlen(input_filename)); - - sprintf(line, "\n#line %d \"%s\"\n", yylineno, input_filename); + /* "* 2" here is for escaping '\' and '"' below */ + char *line = mm_alloc(strlen("\n#line %d \"%s\"\n") + sizeof(int) * CHAR_BIT * 10 / 3 + strlen(input_filename) * 2); + char *src, + *dest; + + sprintf(line, "\n#line %d \"", yylineno); + src = input_filename; + dest = line + strlen(line); + while (*src) + { + if (*src == '\\' || *src == '"') + *dest++ = '\\'; + *dest++ = *src++; + } + *dest = '\0'; + strcat(dest, "\"\n"); return line; } diff --git a/src/interfaces/ecpg/preproc/parse.pl b/src/interfaces/ecpg/preproc/parse.pl index 2328010203..515470e9d1 100644 --- a/src/interfaces/ecpg/preproc/parse.pl +++ b/src/interfaces/ecpg/preproc/parse.pl @@ -1,499 +1,648 @@ #!/usr/bin/perl # src/interfaces/ecpg/preproc/parse.pl -# parser generater for ecpg +# parser generater for ecpg version 2 # call with backend parser as stdin # # Copyright (c) 2007-2011, PostgreSQL Global Development Group # # Written by Mike Aubury # Michael Meskes +# Andy Colson # # Placed under the same license as PostgreSQL. # -if (@ARGV) { - $path = $ARGV[0]; - shift @ARGV; -} +use strict; +use warnings; +no warnings 'uninitialized'; + +my $path = shift @ARGV; +$path = "." unless $path; -if ($path eq '') { $path = "."; } +my $copymode = 0; +my $brace_indent = 0; +my $yaccmode = 0; +my $header_included = 0; +my $feature_not_supported = 0; +my $tokenmode = 0; -$[ = 1; # set array base to 1 -$, = ' '; # set output field separator -$\ = "\n"; # set output record separator +my(%buff, $infield, $comment, %tokens, %addons ); +my($stmt_mode, @fields); +my($line, $non_term_id); -$copymode = 'off'; -$brace_indent = 0; -$yaccmode = 0; -$header_included = 0; -$feature_not_supported = 0; -$tokenmode = 0; # some token have to be replaced by other symbols # either in the rule -$replace_token{'BCONST'} = 'ecpg_bconst'; -$replace_token{'FCONST'} = 'ecpg_fconst'; -$replace_token{'Sconst'} = 'ecpg_sconst'; -$replace_token{'IDENT'} = 'ecpg_ident'; -$replace_token{'PARAM'} = 'ecpg_param'; +my %replace_token = ( + 'BCONST' => 'ecpg_bconst', + 'FCONST' => 'ecpg_fconst', + 'Sconst' => 'ecpg_sconst', + 'IDENT' => 'ecpg_ident', + 'PARAM' => 'ecpg_param', +); + # or in the block -$replace_string{'WITH_TIME'} = 'with time'; -$replace_string{'NULLS_FIRST'} = 'nulls first'; -$replace_string{'NULLS_LAST'} = 'nulls last'; -$replace_string{'TYPECAST'} = '::'; -$replace_string{'DOT_DOT'} = '..'; -$replace_string{'COLON_EQUALS'} = ':='; +my %replace_string = ( + 'WITH_TIME' => 'with time', + 'NULLS_FIRST' => 'nulls first', + 'NULLS_LAST' => 'nulls last', + 'TYPECAST' => '::', + 'DOT_DOT' => '..', + 'COLON_EQUALS' => ':=', +); # specific replace_types for specific non-terminals - never include the ':' # ECPG-only replace_types are defined in ecpg-replace_types -$replace_types{'PrepareStmt'} = ''; -$replace_types{'opt_array_bounds'} = ''; -# "ignore" means: do not create type and rules for this non-term-id -$replace_types{'stmtblock'} = 'ignore'; -$replace_types{'stmtmulti'} = 'ignore'; -$replace_types{'CreateAsStmt'} = 'ignore'; -$replace_types{'DeallocateStmt'} = 'ignore'; -$replace_types{'ColId'} = 'ignore'; -$replace_types{'type_function_name'} = 'ignore'; -$replace_types{'ColLabel'} = 'ignore'; -$replace_types{'Sconst'} = 'ignore'; +my %replace_types = ( + 'PrepareStmt' => '', + 'opt_array_bounds' => '', + + # "ignore" means: do not create type and rules for this non-term-id + 'stmtblock' => 'ignore', + 'stmtmulti' => 'ignore', + 'CreateAsStmt' => 'ignore', + 'DeallocateStmt' => 'ignore', + 'ColId' => 'ignore', + 'type_function_name' => 'ignore', + 'ColLabel' => 'ignore', + 'Sconst' => 'ignore', +); # these replace_line commands excise certain keywords from the core keyword # lists. Be sure to account for these in ColLabel and related productions. -$replace_line{'unreserved_keywordCONNECTION'} = 'ignore'; -$replace_line{'unreserved_keywordCURRENT_P'} = 'ignore'; -$replace_line{'unreserved_keywordDAY_P'} = 'ignore'; -$replace_line{'unreserved_keywordHOUR_P'} = 'ignore'; -$replace_line{'unreserved_keywordINPUT_P'} = 'ignore'; -$replace_line{'unreserved_keywordMINUTE_P'} = 'ignore'; -$replace_line{'unreserved_keywordMONTH_P'} = 'ignore'; -$replace_line{'unreserved_keywordSECOND_P'} = 'ignore'; -$replace_line{'unreserved_keywordYEAR_P'} = 'ignore'; -$replace_line{'col_name_keywordCHAR_P'} = 'ignore'; -$replace_line{'col_name_keywordINT_P'} = 'ignore'; -$replace_line{'col_name_keywordVALUES'} = 'ignore'; -$replace_line{'reserved_keywordTO'} = 'ignore'; -$replace_line{'reserved_keywordUNION'} = 'ignore'; - -# some other production rules have to be ignored or replaced -$replace_line{'fetch_argsFORWARDopt_from_incursor_name'} = 'ignore'; -$replace_line{'fetch_argsBACKWARDopt_from_incursor_name'} = 'ignore'; -$replace_line{"opt_array_boundsopt_array_bounds'['Iconst']'"} = 'ignore'; -$replace_line{'VariableShowStmtSHOWvar_name'} = 'SHOW var_name ecpg_into'; -$replace_line{'VariableShowStmtSHOWTIMEZONE'} = 'SHOW TIME ZONE ecpg_into'; -$replace_line{'VariableShowStmtSHOWTRANSACTIONISOLATIONLEVEL'} = 'SHOW TRANSACTION ISOLATION LEVEL ecpg_into'; -$replace_line{'VariableShowStmtSHOWSESSIONAUTHORIZATION'} = 'SHOW SESSION AUTHORIZATION ecpg_into'; -$replace_line{'returning_clauseRETURNINGtarget_list'} = 'RETURNING target_list ecpg_into'; -$replace_line{'ExecuteStmtEXECUTEnameexecute_param_clause'} = 'EXECUTE prepared_name execute_param_clause execute_rest'; -$replace_line{'ExecuteStmtCREATEOptTempTABLEcreate_as_targetASEXECUTEnameexecute_param_clause'} = 'CREATE OptTemp TABLE create_as_target AS EXECUTE prepared_name execute_param_clause'; -$replace_line{'PrepareStmtPREPAREnameprep_type_clauseASPreparableStmt'} = 'PREPARE prepared_name prep_type_clause AS PreparableStmt'; -$replace_line{'var_nameColId'} = 'ECPGColId'; - -line: while (<>) { - chomp; # strip record separator - @Fld = split(' ', $_, -1); - - # Dump the action for a rule - - # mode indicates if we are processing the 'stmt:' rule (mode==0 means normal, mode==1 means stmt:) - # flds are the fields to use. These may start with a '$' - in which case they are the result of a previous non-terminal - # if they dont start with a '$' then they are token name - # - # len is the number of fields in flds... - # leadin is the padding to apply at the beginning (just use for formatting) - - if (/ERRCODE_FEATURE_NOT_SUPPORTED/) { - $feature_not_supported = 1; - next line; - } - - if (/^%%/) { - $tokenmode = 2; - $copymode = 'on'; - $yaccmode++; - $infield = 0; - $fieldcount = 0; - } - - $S = $_; - $prec = 0; - # Make sure any braces are split - $s = '{', $S =~ s/$s/ { /g; - $s = '}', $S =~ s/$s/ } /g; - # Any comments are split - $s = '[/][*]', $S =~ s#$s# /* #g; - $s = '[*][/]', $S =~ s#$s# */ #g; - - # Now split the line into individual fields - $n = (@arr = split(' ', $S)); - - if ($arr[1] eq '%token' && $tokenmode == 0) { - $tokenmode = 1; - &include_stuff('tokens', 'ecpg.tokens', '', 1, 0); - $type = 1; - } - elsif ($arr[1] eq '%type' && $header_included == 0) { - &include_stuff('header', 'ecpg.header', '', 1, 0); - &include_stuff('ecpgtype', 'ecpg.type', '', 1, 0); - $header_included = 1; - } - - if ($tokenmode == 1) { - $str = ''; - for ($a = 1; $a <= $n; $a++) { - if ($arr[$a] eq '/*') { - $comment++; - next; - } - if ($arr[$a] eq '*/') { - $comment--; - next; - } - if ($comment) { - next; - } - if (substr($arr[$a], 1, 1) eq '<') { - next; - # its a type - } - $tokens{$arr[$a]} = 1; - - $str = $str . ' ' . $arr[$a]; - if ($arr[$a] eq 'IDENT' && $arr[$a - 1] eq '%nonassoc') { - # add two more tokens to the list - $str = $str . "\n%nonassoc CSTRING\n%nonassoc UIDENT"; - } - } - &add_to_buffer('orig_tokens', $str); - next line; - } - - # Dont worry about anything if we're not in the right section of gram.y - if ($yaccmode != 1) { - next line; - } - - # Go through each field in turn - for ($fieldIndexer = 1; $fieldIndexer <= $n; $fieldIndexer++) { - if ($arr[$fieldIndexer] eq '*/' && $comment) { - $comment = 0; - next; - } - elsif ($comment) { - next; - } - elsif ($arr[$fieldIndexer] eq '/*') { - # start of a multiline comment - $comment = 1; - next; - } - elsif ($arr[$fieldIndexer] eq '//') { - next line; - } - elsif ($arr[$fieldIndexer] eq '}') { - $brace_indent--; - next; - } - elsif ($arr[$fieldIndexer] eq '{') { - $brace_indent++; - next; - } - - if ($brace_indent > 0) { - next; - } - if ($arr[$fieldIndexer] eq ';') { - if ($copymode eq 'on') { - if ($infield && $includetype eq '') { - &dump_line($stmt_mode, $fields, $field_count); +my %replace_line = ( + 'unreserved_keywordCONNECTION' => 'ignore', + 'unreserved_keywordCURRENT_P' => 'ignore', + 'unreserved_keywordDAY_P' => 'ignore', + 'unreserved_keywordHOUR_P' => 'ignore', + 'unreserved_keywordINPUT_P' => 'ignore', + 'unreserved_keywordMINUTE_P' => 'ignore', + 'unreserved_keywordMONTH_P' => 'ignore', + 'unreserved_keywordSECOND_P' => 'ignore', + 'unreserved_keywordYEAR_P' => 'ignore', + 'col_name_keywordCHAR_P' => 'ignore', + 'col_name_keywordINT_P' => 'ignore', + 'col_name_keywordVALUES' => 'ignore', + 'reserved_keywordTO' => 'ignore', + 'reserved_keywordUNION' => 'ignore', + + # some other production rules have to be ignored or replaced + 'fetch_argsFORWARDopt_from_incursor_name' => 'ignore', + 'fetch_argsBACKWARDopt_from_incursor_name' => 'ignore', + "opt_array_boundsopt_array_bounds'['Iconst']'" => 'ignore', + 'VariableShowStmtSHOWvar_name' => 'SHOW var_name ecpg_into', + 'VariableShowStmtSHOWTIMEZONE' => 'SHOW TIME ZONE ecpg_into', + 'VariableShowStmtSHOWTRANSACTIONISOLATIONLEVEL' => 'SHOW TRANSACTION ISOLATION LEVEL ecpg_into', + 'VariableShowStmtSHOWSESSIONAUTHORIZATION' => 'SHOW SESSION AUTHORIZATION ecpg_into', + 'returning_clauseRETURNINGtarget_list' => 'RETURNING target_list ecpg_into', + 'ExecuteStmtEXECUTEnameexecute_param_clause' => 'EXECUTE prepared_name execute_param_clause execute_rest', + 'ExecuteStmtCREATEOptTempTABLEcreate_as_targetASEXECUTEnameexecute_param_clause' => + 'CREATE OptTemp TABLE create_as_target AS EXECUTE prepared_name execute_param_clause', + 'PrepareStmtPREPAREnameprep_type_clauseASPreparableStmt' => + 'PREPARE prepared_name prep_type_clause AS PreparableStmt', + 'var_nameColId' => 'ECPGColId', +); + +preload_addons(); + +main(); + +dump_buffer('header'); +dump_buffer('tokens'); +dump_buffer('types'); +dump_buffer('ecpgtype'); +dump_buffer('orig_tokens'); +print '%%', "\n"; +print 'prog: statements;', "\n"; +dump_buffer('rules'); +include_file( 'trailer', 'ecpg.trailer' ); +dump_buffer('trailer'); + +sub main +{ + line: while (<>) + { + if (/ERRCODE_FEATURE_NOT_SUPPORTED/) + { + $feature_not_supported = 1; + next line; } - &add_to_buffer('rules', ";\n\n"); - } - else { - $copymode = 'on'; - } - $field_count = 0; - $infield = 0; - $line = ''; - $includetype = ''; - next; - } - if ($arr[$fieldIndexer] eq '|') { - if ($copymode eq 'on') { - if ($infield && $includetype eq '') { - $infield = $infield + &dump_line($stmt_mode, $fields, $field_count); - } - if ($infield > 1) { - $line = '| '; + chomp; + + # comment out the line below to make the result file match (blank line wise) + # the prior version. + #next if ($_ eq ''); + + # Dump the action for a rule - + # stmt_mode indicates if we are processing the 'stmt:' + # rule (mode==0 means normal, mode==1 means stmt:) + # flds are the fields to use. These may start with a '$' - in + # which case they are the result of a previous non-terminal + # + # if they dont start with a '$' then they are token name + # + # len is the number of fields in flds... + # leadin is the padding to apply at the beginning (just use for formatting) + + if (/^%%/) { + $tokenmode = 2; + $copymode = 1; + $yaccmode++; + $infield = 0; } - } - $field_count = 0; - $includetype = ''; - next; - } - if ($replace_token{$arr[$fieldIndexer]}) { - $arr[$fieldIndexer] = $replace_token{$arr[$fieldIndexer]}; - } + my $prec = 0; - # Are we looking at a declaration of a non-terminal ? - if (($arr[$fieldIndexer] =~ '[A-Za-z0-9]+:') || $arr[$fieldIndexer + 1] eq ':') { - $non_term_id = $arr[$fieldIndexer]; - $s = ':', $non_term_id =~ s/$s//g; - - if ($replace_types{$non_term_id} eq '') { - $replace_types{$non_term_id} = ''; - } - if ($replace_types{$non_term_id} eq 'ignore') { - $copymode = ';'; - $line = ''; - next line; - } - else { - $copymode = 'on'; - } - $line = $line . ' ' . $arr[$fieldIndexer]; - # Do we have the : attached already ? - # If yes, we'll have already printed the ':' - if (!($arr[$fieldIndexer] =~ '[A-Za-z0-9]+:')) { - # Consume the ':' which is next... - $line = $line . ':'; - $fieldIndexer++; - } - - # Special mode? - if ($non_term_id eq 'stmt') { - $stmt_mode = 1; - } - else { - $stmt_mode = 0; - } - $tstr = '%type ' . $replace_types{$non_term_id} . ' ' . $non_term_id; - &add_to_buffer('types', $tstr); - - if ($copymode eq 'on') { - &add_to_buffer('rules', $line); - } - $line = ''; - $field_count = 0; - $infield = 1; - next; - } - elsif ($copymode eq 'on') { - $line = $line . ' ' . $arr[$fieldIndexer]; - } - if ($arr[$fieldIndexer] eq '%prec') { - $prec = 1; - next; - } + # Make sure any braces are split + s/{/ { /g; + s/}/ } /g; + + # Any comments are split + s|\/\*| /* |g; + s|\*\/| */ |g; + + # Now split the line into individual fields + my @arr = split(' '); - if ($copymode eq 'on' && !$prec && !$comment && $arr[$fieldIndexer] ne '/*EMPTY*/' && length($arr[$fieldIndexer]) && $infield) { - $nfield = $field_count + 1; - if ($arr[$fieldIndexer] ne 'Op' && ($tokens{$arr[$fieldIndexer]} > 0 || $arr[$fieldIndexer] =~ "'.+'") || $stmt_mode == 1) { - if ($replace_string{$arr[$fieldIndexer]}) { - $S = $replace_string{$arr[$fieldIndexer]}; + if ( $arr[0] eq '%token' && $tokenmode == 0 ) + { + $tokenmode = 1; + include_file( 'tokens', 'ecpg.tokens' ); } - else { - $S = $arr[$fieldIndexer]; + elsif ( $arr[0] eq '%type' && $header_included == 0 ) + { + include_file( 'header', 'ecpg.header' ); + include_file( 'ecpgtype', 'ecpg.type' ); + $header_included = 1; } - $s = '_P', $S =~ s/$s//g; - $s = "'", $S =~ s/$s//g; - if ($stmt_mode == 1) { - $fields{$field_count++} = $S; + + if ( $tokenmode == 1 ) + { + my $str = ''; + my $prior = ''; + for my $a (@arr) + { + if ( $a eq '/*' ) + { + $comment++; + next; + } + if ( $a eq '*/' ) + { + $comment--; + next; + } + if ($comment) + { + next; + } + if ( substr( $a, 0, 1 ) eq '<' ) { + next; + + # its a type + } + $tokens{ $a } = 1; + + $str = $str . ' ' . $a; + if ( $a eq 'IDENT' && $prior eq '%nonassoc' ) + { + # add two more tokens to the list + $str = $str . "\n%nonassoc CSTRING\n%nonassoc UIDENT"; + } + $prior = $a; + } + add_to_buffer( 'orig_tokens', $str ); + next line; + } + + # Dont worry about anything if we're not in the right section of gram.y + if ( $yaccmode != 1 ) + { + next line; } - else { - $fields{$field_count++} = lc($S); + + + # Go through each field in turn + for (my $fieldIndexer = 0 ; $fieldIndexer < scalar(@arr) ; $fieldIndexer++ ) + { + if ( $arr[$fieldIndexer] eq '*/' && $comment ) + { + $comment = 0; + next; + } + elsif ($comment) + { + next; + } + elsif ( $arr[$fieldIndexer] eq '/*' ) + { + # start of a multiline comment + $comment = 1; + next; + } + elsif ( $arr[$fieldIndexer] eq '//' ) + { + next line; + } + elsif ( $arr[$fieldIndexer] eq '}' ) + { + $brace_indent--; + next; + } + elsif ( $arr[$fieldIndexer] eq '{' ) + { + $brace_indent++; + next; + } + + if ( $brace_indent > 0 ) + { + next; + } + if ( $arr[$fieldIndexer] eq ';' ) + { + if ($copymode) + { + if ( $infield ) + { + dump_line( $stmt_mode, \@fields ); + } + add_to_buffer( 'rules', ";\n\n" ); + } + else + { + $copymode = 1; + } + @fields = (); + $infield = 0; + $line = ''; + next; + } + + if ( $arr[$fieldIndexer] eq '|' ) + { + if ($copymode) + { + if ( $infield ) + { + $infield = $infield + dump_line( $stmt_mode, \@fields ); + } + if ( $infield > 1 ) + { + $line = '| '; + } + } + @fields = (); + next; + } + + if ( exists $replace_token{ $arr[$fieldIndexer] } ) + { + $arr[$fieldIndexer] = $replace_token{ $arr[$fieldIndexer] }; + } + + # Are we looking at a declaration of a non-terminal ? + if ( ( $arr[$fieldIndexer] =~ /[A-Za-z0-9]+:/ ) + || $arr[ $fieldIndexer + 1 ] eq ':' ) + { + $non_term_id = $arr[$fieldIndexer]; + $non_term_id =~ tr/://d; + + if ( not defined $replace_types{$non_term_id} ) + { + $replace_types{$non_term_id} = ''; + $copymode = 1; + } + elsif ( $replace_types{$non_term_id} eq 'ignore' ) + { + $copymode = 0; + $line = ''; + next line; + } + $line = $line . ' ' . $arr[$fieldIndexer]; + + # Do we have the : attached already ? + # If yes, we'll have already printed the ':' + if ( !( $arr[$fieldIndexer] =~ '[A-Za-z0-9]+:' ) ) + { + # Consume the ':' which is next... + $line = $line . ':'; + $fieldIndexer++; + } + + # Special mode? + if ( $non_term_id eq 'stmt' ) + { + $stmt_mode = 1; + } + else + { + $stmt_mode = 0; + } + my $tstr = '%type ' . $replace_types{$non_term_id} . ' ' . $non_term_id; + add_to_buffer( 'types', $tstr ); + + if ($copymode) + { + add_to_buffer( 'rules', $line ); + } + $line = ''; + @fields = (); + $infield = 1; + next; + } + elsif ($copymode) { + $line = $line . ' ' . $arr[$fieldIndexer]; + } + if ( $arr[$fieldIndexer] eq '%prec' ) + { + $prec = 1; + next; + } + + if ( $copymode + && !$prec + && !$comment + && length( $arr[$fieldIndexer] ) + && $infield ) + { + if ( + $arr[$fieldIndexer] ne 'Op' + && ( $tokens{ $arr[$fieldIndexer] } > 0 || $arr[$fieldIndexer] =~ /'.+'/ ) + || $stmt_mode == 1 + ) + { + my $S; + if ( exists $replace_string{ $arr[$fieldIndexer] } ) + { + $S = $replace_string{ $arr[$fieldIndexer] }; + } + else + { + $S = $arr[$fieldIndexer]; + } + $S =~ s/_P//g; + $S =~ tr/'//d; + if ( $stmt_mode == 1 ) + { + push(@fields, $S); + } + else + { + push(@fields, lc($S)); + } + } + else + { + push(@fields, '$' . (scalar(@fields)+1)); + } + } } - } - else { - $fields{$field_count++} = "\$" . $nfield; - } } - } } -&dump('header'); -&dump('tokens'); -&dump('types'); -&dump('ecpgtype'); -&dump('orig_tokens'); -print '%%'; -print 'prog: statements;'; -&dump('rules'); -&include_stuff('trailer', 'ecpg.trailer', '', 1, 0); -&dump('trailer'); - -sub include_stuff { - local($includestream, $includefilename, $includeblock, $copy, $field_count) = @_; - $copied = 0; - $inblock = 0; - $filename = $path . "/" . $includefilename; - while (($_ = &Getline2($filename),$getline_ok)) { - if ($includeblock ne '' && $Fld[1] eq 'ECPG:' && $inblock == 0) { - if ($Fld[2] eq $includeblock) { - $copy = 1; - $inblock = 1; - $includetype = $Fld[3]; - if ($includetype eq 'rule') { - &dump_fields($stmt_mode, *fields, $field_count, ' { '); - } - elsif ($includetype eq 'addon') { - &add_to_buffer('rules', ' { '); - } - } - else { - $copy = 0; - } + +# append a file onto a buffer. +# Arguments: buffer_name, filename (without path) +sub include_file +{ + my ($buffer, $filename) = @_; + my $full = "$path/$filename"; + open(my $fh, '<', $full) or die; + while ( <$fh> ) + { + chomp; + add_to_buffer( $buffer, $_ ); } - else { - if ($copy == 1 && $Fld[1] ne 'ECPG:') { - &add_to_buffer($includestream, $_); - $copied = 1; - $inblock = 0; - } + close($fh); +} + +sub include_addon +{ + my($buffer, $block, $fields, $stmt_mode) = @_; + my $rec = $addons{$block}; + return 0 unless $rec; + + if ( $rec->{type} eq 'rule' ) + { + dump_fields( $stmt_mode, $fields, ' { ' ); } - } - delete $opened{$filename} && close($filename); - if ($includetype eq 'addon') { - &dump_fields($stmt_mode, *fields, $field_count, ''); - } - if ($copied == 1) { - $field_count = 0; - $line = ''; - } - $copied; + elsif ( $rec->{type} eq 'addon' ) + { + add_to_buffer( 'rules', ' { ' ); + } + + #add_to_buffer( $stream, $_ ); + #We have an array to add to the buffer, we'll add it ourself instead of + #calling add_to_buffer, which does not know about arrays + + push( @{ $buff{$buffer} }, @{ $rec->{lines} } ); + + if ( $rec->{type} eq 'addon' ) + { + dump_fields( $stmt_mode, $fields, '' ); + } + + + # if we added something (ie there are lines in our array), return 1 + return 1 if (scalar(@{ $rec->{lines} }) > 0); + return 0; } -sub add_to_buffer { - local($buffer, $str) = @_; - $buff{$buffer, $buffcnt{$buffer}++} = $str; + +# include_addon does this same thing, but does not call this +# sub... so if you change this, you need to fix include_addon too +# Pass: buffer_name, string_to_append +sub add_to_buffer +{ + push( @{ $buff{$_[0]} }, "$_[1]\n" ); } -sub dump { - local($buffer) = @_; - print '/* ' . $buffer . ' */'; - for ($a = 0; $a < $buffcnt{$buffer}; $a++) { - print $buff{$buffer, $a}; - } +sub dump_buffer +{ + my($buffer) = @_; + print '/* ', $buffer, ' */',"\n"; + my $ref = $buff{$buffer}; + print @$ref; } -sub dump_fields { - local($mode, *flds, $len, $ln) = @_; - if ($mode == 0) { - #Normal - &add_to_buffer('rules', $ln); - if ($feature_not_supported == 1) { - # we found an unsupported feature, but we have to - # filter out ExecuteStmt: CREATE OptTemp TABLE ... - # because the warning there is only valid in some situations - if ($flds{0} ne 'create' || $flds{2} ne 'table') { - &add_to_buffer('rules', "mmerror(PARSE_ERROR, ET_WARNING, \"unsupported feature will be passed to server\");"); - } - $feature_not_supported = 0; - } +sub dump_fields +{ + my ( $mode, $flds, $ln ) = @_; + my $len = scalar(@$flds); + + if ( $mode == 0 ) + { + #Normal + add_to_buffer( 'rules', $ln ); + if ( $feature_not_supported == 1 ) + { + # we found an unsupported feature, but we have to + # filter out ExecuteStmt: CREATE OptTemp TABLE ... + # because the warning there is only valid in some situations + if ( $flds->[0] ne 'create' || $flds->[2] ne 'table' ) + { + add_to_buffer( 'rules', + 'mmerror(PARSE_ERROR, ET_WARNING, "unsupported feature will be passed to server");' + ); + } + $feature_not_supported = 0; + } - if ($len == 0) { - # We have no fields ? - &add_to_buffer('rules', " \$\$=EMPTY; }"); + if ( $len == 0 ) + { + # We have no fields ? + add_to_buffer( 'rules', ' $$=EMPTY; }' ); + } + else + { + # Go through each field and try to 'aggregate' the tokens + # into a single 'mm_strdup' where possible + my @flds_new; + my $str; + for ( my $z = 0 ; $z < $len ; $z++ ) + { + if ( substr( $flds->[$z], 0, 1 ) eq '$' ) + { + push(@flds_new, $flds->[$z]); + next; + } + + $str = $flds->[$z]; + + while (1) + { + if ( $z >= $len - 1 || substr( $flds->[ $z + 1 ], 0, 1 ) eq '$' ) + { + # We're at the end... + push(@flds_new, "mm_strdup(\"$str\")"); + last; + } + $z++; + $str = $str . ' ' . $flds->[$z]; + } + } + + # So - how many fields did we end up with ? + $len = scalar(@flds_new); + if ( $len == 1 ) + { + # Straight assignement + $str = ' $$ = ' . $flds_new[0] . ';'; + add_to_buffer( 'rules', $str ); + } + else + { + # Need to concatenate the results to form + # our final string + $str = ' $$ = cat_str(' . $len . ',' . join(',', @flds_new) . ');'; + add_to_buffer( 'rules', $str ); + } + add_to_buffer( 'rules', '}' ); + } } - else { - # Go through each field and try to 'aggregate' the tokens into a single 'mm_strdup' where possible - $cnt = 0; - for ($z = 0; $z < $len; $z++) { - if (substr($flds{$z}, 1, 1) eq "\$") { - $flds_new{$cnt++} = $flds{$z}; - next; + else + { + # we're in the stmt: rule + if ($len) + { + # or just the statement ... + add_to_buffer( 'rules', ' { output_statement($1, 0, ECPGst_normal); }' ); } + else + { + add_to_buffer( 'rules', ' { $$ = NULL; }' ); + } + } +} - $str = $flds{$z}; - while (1) { - if ($z >= $len - 1 || substr($flds{$z + 1}, 1, 1) eq "\$") { - # We're at the end... - $flds_new{$cnt++} = "mm_strdup(\"" . $str . "\")"; - last; - } - $z++; - $str = $str . ' ' . $flds{$z}; +sub dump_line +{ + my($stmt_mode, $fields) = @_; + my $block = $non_term_id . $line; + $block =~ tr/ |//d; + my $rep = $replace_line{$block}; + if ($rep) + { + if ($rep eq 'ignore' ) + { + return 0; } - } - - # So - how many fields did we end up with ? - if ($cnt == 1) { - # Straight assignement - $str = " \$\$ = " . $flds_new{0} . ';'; - &add_to_buffer('rules', $str); - } - else { - # Need to concatenate the results to form - # our final string - $str = " \$\$ = cat_str(" . $cnt; - - for ($z = 0; $z < $cnt; $z++) { - $str = $str . ',' . $flds_new{$z}; + + if ( index( $line, '|' ) != -1 ) + { + $line = '| ' . $rep; } - $str = $str . ');'; - &add_to_buffer('rules', $str); - } - if ($literal_mode == 0) { - &add_to_buffer('rules', '}'); - } - } - } - else { - # we're in the stmt: rule - if ($len) { - # or just the statement ... - &add_to_buffer('rules', " { output_statement(\$1, 0, ECPGst_normal); }"); + else + { + $line = $rep; + } + $block = $non_term_id . $line; + $block =~ tr/ |//d; } - else { - &add_to_buffer('rules', " { \$\$ = NULL; }"); + add_to_buffer( 'rules', $line ); + my $i = include_addon( 'rules', $block, $fields, $stmt_mode); + if ( $i == 0 ) + { + dump_fields( $stmt_mode, $fields, ' { ' ); } - } + return 1; } -sub generate_block { - local($line) = @_; - $block = $non_term_id . $line; - $s = ' ', $block =~ s/$s//g; - $s = "\\|", $block =~ s/$s//g; - return $block; -} +=top + load addons into cache + %addons = { + stmtClosePortalStmt => { 'type' => 'block', 'lines' => [ "{", "if (INFORMIX_MODE)" ..., "}" ] }, + stmtViewStmt => { 'type' => 'rule', 'lines' => [ "| ECPGAllocateDescr", ... ] } + } -sub dump_line { - local($stmt_mode, $fields, $field_count) = @_; - $block = &generate_block($line); - if ($replace_line{$block} eq 'ignore') { - return 0; - } - elsif ($replace_line{$block}) { - if (index($line, '|') != 0) { - $line = '| ' . $replace_line{$block}; +=cut +sub preload_addons +{ + my $filename = $path . "/ecpg.addons"; + open(my $fh, '<', $filename) or die; + # there may be multple lines starting ECPG: and then multiple lines of code. + # the code need to be add to all prior ECPG records. + my (@needsRules, @code, $record); + # there may be comments before the first ECPG line, skip them + my $skip = 1; + while ( <$fh> ) + { + if (/^ECPG:\s(\S+)\s?(\w+)?/) + { + $skip = 0; + if (@code) + { + for my $x (@needsRules) + { + push(@{ $x->{lines} }, @code); + } + @code = (); + @needsRules = (); + } + $record = {}; + $record->{type} = $2; + $record->{lines} = []; + if (exists $addons{$1}) { die "Ga! there are dups!\n"; } + $addons{$1} = $record; + push(@needsRules, $record); + } + else + { + next if $skip; + push(@code, $_); + } } - else { - $line = $replace_line{$block}; + close($fh); + if (@code) + { + for my $x (@needsRules) + { + push(@{ $x->{lines} }, @code); + } } - $block = &generate_block($line); - } - &add_to_buffer('rules', $line); - $i = &include_stuff('rules', 'ecpg.addons', $block, 0, $field_count); - if ($i == 0) { - &dump_fields($stmt_mode, *fields, $field_count, ' { '); - } - return 1; } -sub Getline2 { - &Pick('',@_); - if ($getline_ok = (($_ = <$fh>) ne '')) { - chomp; # strip record separator - @Fld = split(' ', $_, -1); - } - $_; -} -sub Pick { - local($mode,$name,$pipe) = @_; - $fh = $name; - open($name,$mode.$name.$pipe) unless $opened{$name}++; -} diff --git a/src/interfaces/ecpg/preproc/parse2.pl b/src/interfaces/ecpg/preproc/parse2.pl deleted file mode 100644 index dd509373a5..0000000000 --- a/src/interfaces/ecpg/preproc/parse2.pl +++ /dev/null @@ -1,648 +0,0 @@ -#!/usr/bin/perl -# src/interfaces/ecpg/preproc/parse2.pl -# parser generater for ecpg version 2 -# call with backend parser as stdin -# -# Copyright (c) 2007-2011, PostgreSQL Global Development Group -# -# Written by Mike Aubury -# Michael Meskes -# Andy Colson -# -# Placed under the same license as PostgreSQL. -# - -use strict; -use warnings; -no warnings 'uninitialized'; - -my $path = shift @ARGV; -$path = "." unless $path; - -my $copymode = 0; -my $brace_indent = 0; -my $yaccmode = 0; -my $header_included = 0; -my $feature_not_supported = 0; -my $tokenmode = 0; - -my(%buff, $infield, $comment, %tokens, %addons ); -my($stmt_mode, @fields); -my($line, $non_term_id); - - -# some token have to be replaced by other symbols -# either in the rule -my %replace_token = ( - 'BCONST' => 'ecpg_bconst', - 'FCONST' => 'ecpg_fconst', - 'Sconst' => 'ecpg_sconst', - 'IDENT' => 'ecpg_ident', - 'PARAM' => 'ecpg_param', -); - -# or in the block -my %replace_string = ( - 'WITH_TIME' => 'with time', - 'NULLS_FIRST' => 'nulls first', - 'NULLS_LAST' => 'nulls last', - 'TYPECAST' => '::', - 'DOT_DOT' => '..', - 'COLON_EQUALS' => ':=', -); - -# specific replace_types for specific non-terminals - never include the ':' -# ECPG-only replace_types are defined in ecpg-replace_types -my %replace_types = ( - 'PrepareStmt' => '', - 'opt_array_bounds' => '', - - # "ignore" means: do not create type and rules for this non-term-id - 'stmtblock' => 'ignore', - 'stmtmulti' => 'ignore', - 'CreateAsStmt' => 'ignore', - 'DeallocateStmt' => 'ignore', - 'ColId' => 'ignore', - 'type_function_name' => 'ignore', - 'ColLabel' => 'ignore', - 'Sconst' => 'ignore', -); - -# these replace_line commands excise certain keywords from the core keyword -# lists. Be sure to account for these in ColLabel and related productions. -my %replace_line = ( - 'unreserved_keywordCONNECTION' => 'ignore', - 'unreserved_keywordCURRENT_P' => 'ignore', - 'unreserved_keywordDAY_P' => 'ignore', - 'unreserved_keywordHOUR_P' => 'ignore', - 'unreserved_keywordINPUT_P' => 'ignore', - 'unreserved_keywordMINUTE_P' => 'ignore', - 'unreserved_keywordMONTH_P' => 'ignore', - 'unreserved_keywordSECOND_P' => 'ignore', - 'unreserved_keywordYEAR_P' => 'ignore', - 'col_name_keywordCHAR_P' => 'ignore', - 'col_name_keywordINT_P' => 'ignore', - 'col_name_keywordVALUES' => 'ignore', - 'reserved_keywordTO' => 'ignore', - 'reserved_keywordUNION' => 'ignore', - - # some other production rules have to be ignored or replaced - 'fetch_argsFORWARDopt_from_incursor_name' => 'ignore', - 'fetch_argsBACKWARDopt_from_incursor_name' => 'ignore', - "opt_array_boundsopt_array_bounds'['Iconst']'" => 'ignore', - 'VariableShowStmtSHOWvar_name' => 'SHOW var_name ecpg_into', - 'VariableShowStmtSHOWTIMEZONE' => 'SHOW TIME ZONE ecpg_into', - 'VariableShowStmtSHOWTRANSACTIONISOLATIONLEVEL' => 'SHOW TRANSACTION ISOLATION LEVEL ecpg_into', - 'VariableShowStmtSHOWSESSIONAUTHORIZATION' => 'SHOW SESSION AUTHORIZATION ecpg_into', - 'returning_clauseRETURNINGtarget_list' => 'RETURNING target_list ecpg_into', - 'ExecuteStmtEXECUTEnameexecute_param_clause' => 'EXECUTE prepared_name execute_param_clause execute_rest', - 'ExecuteStmtCREATEOptTempTABLEcreate_as_targetASEXECUTEnameexecute_param_clause' => - 'CREATE OptTemp TABLE create_as_target AS EXECUTE prepared_name execute_param_clause', - 'PrepareStmtPREPAREnameprep_type_clauseASPreparableStmt' => - 'PREPARE prepared_name prep_type_clause AS PreparableStmt', - 'var_nameColId' => 'ECPGColId', -); - -preload_addons(); - -main(); - -dump_buffer('header'); -dump_buffer('tokens'); -dump_buffer('types'); -dump_buffer('ecpgtype'); -dump_buffer('orig_tokens'); -print '%%', "\n"; -print 'prog: statements;', "\n"; -dump_buffer('rules'); -include_file( 'trailer', 'ecpg.trailer' ); -dump_buffer('trailer'); - -sub main -{ - line: while (<>) - { - if (/ERRCODE_FEATURE_NOT_SUPPORTED/) - { - $feature_not_supported = 1; - next line; - } - - chomp; - - # comment out the line below to make the result file match (blank line wise) - # the prior version. - #next if ($_ eq ''); - - # Dump the action for a rule - - # stmt_mode indicates if we are processing the 'stmt:' - # rule (mode==0 means normal, mode==1 means stmt:) - # flds are the fields to use. These may start with a '$' - in - # which case they are the result of a previous non-terminal - # - # if they dont start with a '$' then they are token name - # - # len is the number of fields in flds... - # leadin is the padding to apply at the beginning (just use for formatting) - - if (/^%%/) { - $tokenmode = 2; - $copymode = 1; - $yaccmode++; - $infield = 0; - } - - my $prec = 0; - - # Make sure any braces are split - s/{/ { /g; - s/}/ } /g; - - # Any comments are split - s|\/\*| /* |g; - s|\*\/| */ |g; - - # Now split the line into individual fields - my @arr = split(' '); - - if ( $arr[0] eq '%token' && $tokenmode == 0 ) - { - $tokenmode = 1; - include_file( 'tokens', 'ecpg.tokens' ); - } - elsif ( $arr[0] eq '%type' && $header_included == 0 ) - { - include_file( 'header', 'ecpg.header' ); - include_file( 'ecpgtype', 'ecpg.type' ); - $header_included = 1; - } - - if ( $tokenmode == 1 ) - { - my $str = ''; - my $prior = ''; - for my $a (@arr) - { - if ( $a eq '/*' ) - { - $comment++; - next; - } - if ( $a eq '*/' ) - { - $comment--; - next; - } - if ($comment) - { - next; - } - if ( substr( $a, 0, 1 ) eq '<' ) { - next; - - # its a type - } - $tokens{ $a } = 1; - - $str = $str . ' ' . $a; - if ( $a eq 'IDENT' && $prior eq '%nonassoc' ) - { - # add two more tokens to the list - $str = $str . "\n%nonassoc CSTRING\n%nonassoc UIDENT"; - } - $prior = $a; - } - add_to_buffer( 'orig_tokens', $str ); - next line; - } - - # Dont worry about anything if we're not in the right section of gram.y - if ( $yaccmode != 1 ) - { - next line; - } - - - # Go through each field in turn - for (my $fieldIndexer = 0 ; $fieldIndexer < scalar(@arr) ; $fieldIndexer++ ) - { - if ( $arr[$fieldIndexer] eq '*/' && $comment ) - { - $comment = 0; - next; - } - elsif ($comment) - { - next; - } - elsif ( $arr[$fieldIndexer] eq '/*' ) - { - # start of a multiline comment - $comment = 1; - next; - } - elsif ( $arr[$fieldIndexer] eq '//' ) - { - next line; - } - elsif ( $arr[$fieldIndexer] eq '}' ) - { - $brace_indent--; - next; - } - elsif ( $arr[$fieldIndexer] eq '{' ) - { - $brace_indent++; - next; - } - - if ( $brace_indent > 0 ) - { - next; - } - if ( $arr[$fieldIndexer] eq ';' ) - { - if ($copymode) - { - if ( $infield ) - { - dump_line( $stmt_mode, \@fields ); - } - add_to_buffer( 'rules', ";\n\n" ); - } - else - { - $copymode = 1; - } - @fields = (); - $infield = 0; - $line = ''; - next; - } - - if ( $arr[$fieldIndexer] eq '|' ) - { - if ($copymode) - { - if ( $infield ) - { - $infield = $infield + dump_line( $stmt_mode, \@fields ); - } - if ( $infield > 1 ) - { - $line = '| '; - } - } - @fields = (); - next; - } - - if ( exists $replace_token{ $arr[$fieldIndexer] } ) - { - $arr[$fieldIndexer] = $replace_token{ $arr[$fieldIndexer] }; - } - - # Are we looking at a declaration of a non-terminal ? - if ( ( $arr[$fieldIndexer] =~ /[A-Za-z0-9]+:/ ) - || $arr[ $fieldIndexer + 1 ] eq ':' ) - { - $non_term_id = $arr[$fieldIndexer]; - $non_term_id =~ tr/://d; - - if ( not defined $replace_types{$non_term_id} ) - { - $replace_types{$non_term_id} = ''; - $copymode = 1; - } - elsif ( $replace_types{$non_term_id} eq 'ignore' ) - { - $copymode = 0; - $line = ''; - next line; - } - $line = $line . ' ' . $arr[$fieldIndexer]; - - # Do we have the : attached already ? - # If yes, we'll have already printed the ':' - if ( !( $arr[$fieldIndexer] =~ '[A-Za-z0-9]+:' ) ) - { - # Consume the ':' which is next... - $line = $line . ':'; - $fieldIndexer++; - } - - # Special mode? - if ( $non_term_id eq 'stmt' ) - { - $stmt_mode = 1; - } - else - { - $stmt_mode = 0; - } - my $tstr = '%type ' . $replace_types{$non_term_id} . ' ' . $non_term_id; - add_to_buffer( 'types', $tstr ); - - if ($copymode) - { - add_to_buffer( 'rules', $line ); - } - $line = ''; - @fields = (); - $infield = 1; - next; - } - elsif ($copymode) { - $line = $line . ' ' . $arr[$fieldIndexer]; - } - if ( $arr[$fieldIndexer] eq '%prec' ) - { - $prec = 1; - next; - } - - if ( $copymode - && !$prec - && !$comment - && length( $arr[$fieldIndexer] ) - && $infield ) - { - if ( - $arr[$fieldIndexer] ne 'Op' - && ( $tokens{ $arr[$fieldIndexer] } > 0 || $arr[$fieldIndexer] =~ /'.+'/ ) - || $stmt_mode == 1 - ) - { - my $S; - if ( exists $replace_string{ $arr[$fieldIndexer] } ) - { - $S = $replace_string{ $arr[$fieldIndexer] }; - } - else - { - $S = $arr[$fieldIndexer]; - } - $S =~ s/_P//g; - $S =~ tr/'//d; - if ( $stmt_mode == 1 ) - { - push(@fields, $S); - } - else - { - push(@fields, lc($S)); - } - } - else - { - push(@fields, '$' . (scalar(@fields)+1)); - } - } - } - } -} - - -# append a file onto a buffer. -# Arguments: buffer_name, filename (without path) -sub include_file -{ - my ($buffer, $filename) = @_; - my $full = "$path/$filename"; - open(my $fh, '<', $full) or die; - while ( <$fh> ) - { - chomp; - add_to_buffer( $buffer, $_ ); - } - close($fh); -} - -sub include_addon -{ - my($buffer, $block, $fields, $stmt_mode) = @_; - my $rec = $addons{$block}; - return 0 unless $rec; - - if ( $rec->{type} eq 'rule' ) - { - dump_fields( $stmt_mode, $fields, ' { ' ); - } - elsif ( $rec->{type} eq 'addon' ) - { - add_to_buffer( 'rules', ' { ' ); - } - - #add_to_buffer( $stream, $_ ); - #We have an array to add to the buffer, we'll add it ourself instead of - #calling add_to_buffer, which does not know about arrays - - push( @{ $buff{$buffer} }, @{ $rec->{lines} } ); - - if ( $rec->{type} eq 'addon' ) - { - dump_fields( $stmt_mode, $fields, '' ); - } - - - # if we added something (ie there are lines in our array), return 1 - return 1 if (scalar(@{ $rec->{lines} }) > 0); - return 0; -} - - -# include_addon does this same thing, but does not call this -# sub... so if you change this, you need to fix include_addon too -# Pass: buffer_name, string_to_append -sub add_to_buffer -{ - push( @{ $buff{$_[0]} }, "$_[1]\n" ); -} - -sub dump_buffer -{ - my($buffer) = @_; - print '/* ', $buffer, ' */',"\n"; - my $ref = $buff{$buffer}; - print @$ref; -} - -sub dump_fields -{ - my ( $mode, $flds, $ln ) = @_; - my $len = scalar(@$flds); - - if ( $mode == 0 ) - { - #Normal - add_to_buffer( 'rules', $ln ); - if ( $feature_not_supported == 1 ) - { - # we found an unsupported feature, but we have to - # filter out ExecuteStmt: CREATE OptTemp TABLE ... - # because the warning there is only valid in some situations - if ( $flds->[0] ne 'create' || $flds->[2] ne 'table' ) - { - add_to_buffer( 'rules', - 'mmerror(PARSE_ERROR, ET_WARNING, "unsupported feature will be passed to server");' - ); - } - $feature_not_supported = 0; - } - - if ( $len == 0 ) - { - # We have no fields ? - add_to_buffer( 'rules', ' $$=EMPTY; }' ); - } - else - { - # Go through each field and try to 'aggregate' the tokens - # into a single 'mm_strdup' where possible - my @flds_new; - my $str; - for ( my $z = 0 ; $z < $len ; $z++ ) - { - if ( substr( $flds->[$z], 0, 1 ) eq '$' ) - { - push(@flds_new, $flds->[$z]); - next; - } - - $str = $flds->[$z]; - - while (1) - { - if ( $z >= $len - 1 || substr( $flds->[ $z + 1 ], 0, 1 ) eq '$' ) - { - # We're at the end... - push(@flds_new, "mm_strdup(\"$str\")"); - last; - } - $z++; - $str = $str . ' ' . $flds->[$z]; - } - } - - # So - how many fields did we end up with ? - $len = scalar(@flds_new); - if ( $len == 1 ) - { - # Straight assignement - $str = ' $$ = ' . $flds_new[0] . ';'; - add_to_buffer( 'rules', $str ); - } - else - { - # Need to concatenate the results to form - # our final string - $str = ' $$ = cat_str(' . $len . ',' . join(',', @flds_new) . ');'; - add_to_buffer( 'rules', $str ); - } - add_to_buffer( 'rules', '}' ); - } - } - else - { - # we're in the stmt: rule - if ($len) - { - # or just the statement ... - add_to_buffer( 'rules', ' { output_statement($1, 0, ECPGst_normal); }' ); - } - else - { - add_to_buffer( 'rules', ' { $$ = NULL; }' ); - } - } -} - - -sub dump_line -{ - my($stmt_mode, $fields) = @_; - my $block = $non_term_id . $line; - $block =~ tr/ |//d; - my $rep = $replace_line{$block}; - if ($rep) - { - if ($rep eq 'ignore' ) - { - return 0; - } - - if ( index( $line, '|' ) != -1 ) - { - $line = '| ' . $rep; - } - else - { - $line = $rep; - } - $block = $non_term_id . $line; - $block =~ tr/ |//d; - } - add_to_buffer( 'rules', $line ); - my $i = include_addon( 'rules', $block, $fields, $stmt_mode); - if ( $i == 0 ) - { - dump_fields( $stmt_mode, $fields, ' { ' ); - } - return 1; -} - -=top - load addons into cache - %addons = { - stmtClosePortalStmt => { 'type' => 'block', 'lines' => [ "{", "if (INFORMIX_MODE)" ..., "}" ] }, - stmtViewStmt => { 'type' => 'rule', 'lines' => [ "| ECPGAllocateDescr", ... ] } - } - -=cut -sub preload_addons -{ - my $filename = $path . "/ecpg.addons"; - open(my $fh, '<', $filename) or die; - # there may be multple lines starting ECPG: and then multiple lines of code. - # the code need to be add to all prior ECPG records. - my (@needsRules, @code, $record); - # there may be comments before the first ECPG line, skip them - my $skip = 1; - while ( <$fh> ) - { - if (/^ECPG:\s(\S+)\s?(\w+)?/) - { - $skip = 0; - if (@code) - { - for my $x (@needsRules) - { - push(@{ $x->{lines} }, @code); - } - @code = (); - @needsRules = (); - } - $record = {}; - $record->{type} = $2; - $record->{lines} = []; - if (exists $addons{$1}) { die "Ga! there are dups!\n"; } - $addons{$1} = $record; - push(@needsRules, $record); - } - else - { - next if $skip; - push(@code, $_); - } - } - close($fh); - if (@code) - { - for my $x (@needsRules) - { - push(@{ $x->{lines} }, @code); - } - } -} - - diff --git a/src/interfaces/ecpg/preproc/pgc.l b/src/interfaces/ecpg/preproc/pgc.l index 019b70bbaf..40bdd8d6d9 100644 --- a/src/interfaces/ecpg/preproc/pgc.l +++ b/src/interfaces/ecpg/preproc/pgc.l @@ -1314,7 +1314,7 @@ parse_include(void) yytext[i] = '\0'; memmove(yytext, yytext+1, strlen(yytext)); - strncpy(inc_file, yytext, sizeof(inc_file)); + strlcpy(inc_file, yytext, sizeof(inc_file)); yyin = fopen(inc_file, "r"); if (!yyin) { @@ -1354,6 +1354,7 @@ parse_include(void) /* if the command was "include_next" we have to disregard the first hit */ if (yyin && include_next) { + fclose (yyin); yyin = NULL; include_next = false; } diff --git a/src/interfaces/ecpg/preproc/po/cs.po b/src/interfaces/ecpg/preproc/po/cs.po new file mode 100644 index 0000000000..b181fa6c39 --- /dev/null +++ b/src/interfaces/ecpg/preproc/po/cs.po @@ -0,0 +1,624 @@ +# Czech message translation file for ecpg +# +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# +# Tomáš Vondra , 2011, 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: ecpg-cs (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2012-04-06 23:40+0000\n" +"PO-Revision-Date: 2012-04-07 02:01+0200\n" +"Last-Translator: Tomas Vondra \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 1.4\n" + +#: descriptor.c:64 +#, c-format +msgid "variable \"%s\" must have a numeric type" +msgstr "proměnná \"%s\" musí mít číselný typ" + +#: descriptor.c:124 descriptor.c:146 +#, c-format +msgid "descriptor \"%s\" does not exist" +msgstr "descriptor \"%s\" neexistuje" + +#: descriptor.c:161 descriptor.c:210 +#, c-format +msgid "descriptor header item \"%d\" does not exist" +msgstr "descriptor header item \"%d\" neexistuje" + +#: descriptor.c:182 +msgid "nullable is always 1" +msgstr "nullable je vždy 1" + +#: descriptor.c:185 +msgid "key_member is always 0" +msgstr "key_member je vždy 0" + +#: descriptor.c:277 +#, c-format +msgid "descriptor item \"%s\" is not implemented" +msgstr "descriptor item \"%s\" není implementován" + +#: descriptor.c:287 +#, c-format +msgid "descriptor item \"%s\" cannot be set" +msgstr "descriptor item \"%s\" nelze nastavit" + +#: ecpg.c:35 +#, c-format +msgid "" +"%s is the PostgreSQL embedded SQL preprocessor for C programs.\n" +"\n" +msgstr "" +"%s je PostgreSQL preprocesor vloženého SQL pro C programy.\n" +"\n" + +#: ecpg.c:37 +#, c-format +msgid "" +"Usage:\n" +" %s [OPTION]... FILE...\n" +"\n" +msgstr "" +"Použití:\n" +" %s [VOLBA]... SOUBOR...\n" +"\n" + +#: ecpg.c:40 +#, c-format +msgid "Options:\n" +msgstr "Volby:\n" + +#: ecpg.c:41 +#, c-format +msgid "" +" -c automatically generate C code from embedded SQL code;\n" +" this affects EXEC SQL TYPE\n" +msgstr "" +" -c automaticky generuje C kód z vložných SQL příkazů;\n" +" toto ovlivňuje EXEC SQL TYPE\n" + +#: ecpg.c:43 +#, c-format +msgid "" +" -C MODE set compatibility mode; MODE can be one of\n" +" \"INFORMIX\", \"INFORMIX_SE\"\n" +msgstr "" +" -C MÓD nastaví mód kompatibility; MÓD může být jedno z \n" +" \"INFORMIX\", \"INFORMIX_SE\"\n" + +#: ecpg.c:46 +#, c-format +msgid " -d generate parser debug output\n" +msgstr " -d zapne generování ladicích informací parseru\n" + +#: ecpg.c:48 +#, c-format +msgid " -D SYMBOL define SYMBOL\n" +msgstr " -D SYMBOL definuje SYMBOL\n" + +#: ecpg.c:49 +#, c-format +msgid "" +" -h parse a header file, this option includes option \"-c\"\n" +msgstr "" +" -h naparsuje hlavičkový soubor, tato volba zahrnuje volbu \"-c" +"\"\n" + +#: ecpg.c:50 +#, c-format +msgid " -i parse system include files as well\n" +msgstr " -i naparsuje také systémové hlavičkové soubory\n" + +#: ecpg.c:51 +#, c-format +msgid " -I DIRECTORY search DIRECTORY for include files\n" +msgstr " -I ADRESÁŘ vyhledá include soubory v ADRESÁŘi\n" + +#: ecpg.c:52 +#, c-format +msgid " -o OUTFILE write result to OUTFILE\n" +msgstr " -o SOUBOR zapíše výsledek do SOUBORu\n" + +#: ecpg.c:53 +#, c-format +msgid "" +" -r OPTION specify run-time behavior; OPTION can be:\n" +" \"no_indicator\", \"prepare\", \"questionmarks\"\n" +msgstr "" +" -r VOLBA určuje run-time chování; VOLBA může být:\n" +" \"no_indicator\", \"prepare\", \"questionmarks\"\n" + +#: ecpg.c:55 +#, c-format +msgid " --regression run in regression testing mode\n" +msgstr " --regression běh v módu regresních testů\n" + +#: ecpg.c:56 +#, c-format +msgid " -t turn on autocommit of transactions\n" +msgstr " -t zapne autocommit transakcí\n" + +#: ecpg.c:57 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help zobrazí tuto nápovědu; poté skončí\n" + +#: ecpg.c:58 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version vypíše informaci o verzi, poté skončí\n" + +#: ecpg.c:59 +#, c-format +msgid "" +"\n" +"If no output file is specified, the name is formed by adding .c to the\n" +"input file name, after stripping off .pgc if present.\n" +msgstr "" +"\n" +"Pokud není zadán žádný výstupní soubor, je jméno získáno přidáním .c\n" +"na konec jména vstupního souboru, po odstranění koncovky .pgc pokud\n" +"je přítomna.\n" + +#: ecpg.c:61 +#, c-format +msgid "" +"\n" +"Report bugs to .\n" +msgstr "" +"\n" +"Chyby hlaste na adresu .\n" + +#: ecpg.c:182 ecpg.c:333 ecpg.c:343 +#, c-format +msgid "%s: could not open file \"%s\": %s\n" +msgstr "%s: nelze otevřít soubor \"%s\": %s\n" + +#: ecpg.c:221 ecpg.c:234 ecpg.c:250 ecpg.c:275 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Zkuste \"%s --help\" pro více informací.\n" + +#: ecpg.c:245 +#, c-format +msgid "%s: parser debug support (-d) not available\n" +msgstr "%s: podpora pro ladicí informace parseru (-d) není dostupná\n" + +#: ecpg.c:263 +#, c-format +msgid "%s, the PostgreSQL embedded C preprocessor, version %d.%d.%d\n" +msgstr "%s, PostgreSQL embedded C preprocessor, verze %d.%d.%d\n" + +#: ecpg.c:265 +#, c-format +msgid "EXEC SQL INCLUDE ... search starts here:\n" +msgstr "EXEC SQL INCLUDE ... hledání začíná zde:\n" + +#: ecpg.c:268 +#, c-format +msgid "end of search list\n" +msgstr "konec vyhledávacího seznamu\n" + +#: ecpg.c:274 +#, c-format +msgid "%s: no input files specified\n" +msgstr "%s: nebyl zadán žádný vstupní soubor\n" + +#: ecpg.c:466 +#, c-format +msgid "cursor \"%s\" has been declared but not opened" +msgstr "kurzor \"%s\" byl deklarován ale nebyl otevřen" + +#: ecpg.c:479 preproc.y:109 +#, c-format +msgid "could not remove output file \"%s\"\n" +msgstr "nelze odstranit výstupní soubor \"%s\"\n" + +#: pgc.l:402 +msgid "unterminated /* comment" +msgstr "neukončený /* komentář" + +#: pgc.l:415 +msgid "invalid bit string literal" +msgstr "neplatný bit string literál" + +#: pgc.l:424 +msgid "unterminated bit string literal" +msgstr "neukončený literál - bitový řetězec" + +#: pgc.l:440 +msgid "unterminated hexadecimal string literal" +msgstr "neukončený literál - hexadecimální řetězec" + +#: pgc.l:518 +msgid "unterminated quoted string" +msgstr "neukončený řetězec v uvozovkách" + +#: pgc.l:573 pgc.l:586 +msgid "zero-length delimited identifier" +msgstr "ohraničený (delimited) identifikátor s nulovou délkou" + +#: pgc.l:594 +msgid "unterminated quoted identifier" +msgstr "neukončený identifikátor v uvozovkách" + +#: pgc.l:940 +msgid "missing identifier in EXEC SQL UNDEF command" +msgstr "chybějící identifikátor v příkazu EXEC SQL UNDEF" + +#: pgc.l:986 pgc.l:1000 +msgid "missing matching \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" +msgstr "chybějící odpovídající \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" + +#: pgc.l:989 pgc.l:1002 pgc.l:1178 +msgid "missing \"EXEC SQL ENDIF;\"" +msgstr "chybějící \"EXEC SQL ENDIF;\"" + +#: pgc.l:1018 pgc.l:1037 +msgid "more than one EXEC SQL ELSE" +msgstr "více než jedna větev EXEC SQL ELSE" + +#: pgc.l:1059 pgc.l:1073 +msgid "unmatched EXEC SQL ENDIF" +msgstr "neodpovídající EXEC SQL ENDIF" + +#: pgc.l:1093 +msgid "too many nested EXEC SQL IFDEF conditions" +msgstr "příliš mnoho zanořených EXEC SQL IFDEF podmínek" + +#: pgc.l:1126 +msgid "missing identifier in EXEC SQL IFDEF command" +msgstr "chybějící identifikátor v příkazu EXEC SQL IFDEF" + +#: pgc.l:1135 +msgid "missing identifier in EXEC SQL DEFINE command" +msgstr "chybějící identifikátor v příkazu EXEC SQL DEFINE" + +#: pgc.l:1168 +msgid "syntax error in EXEC SQL INCLUDE command" +msgstr "syntaktická chyba v příkazu EXEC SQL INCLUDE" + +#: pgc.l:1217 +msgid "" +"internal error: unreachable state; please report this to " +msgstr "" +"interní chyba: nedosažitelný stav; oznamte toto prosím na " + +#: pgc.l:1342 +#, c-format +msgid "Error: include path \"%s/%s\" is too long on line %d, skipping\n" +msgstr "" +"Chyba: include path \"%s/%s\" na řádku %d je příliš dlouhá, přeskakuji\n" + +#: pgc.l:1364 +#, c-format +msgid "could not open include file \"%s\" on line %d" +msgstr "nelze otevřít soubor \"%s\" na řádku %d" + +#: preproc.y:31 +msgid "syntax error" +msgstr "syntaktická chyba" + +#: preproc.y:81 +#, c-format +msgid "WARNING: " +msgstr "VAROVÁNÍ: " + +#: preproc.y:85 +#, c-format +msgid "ERROR: " +msgstr "CHYBA: " + +#: preproc.y:391 +#, c-format +msgid "cursor \"%s\" does not exist" +msgstr "kurzor \"%s\" neexistuje" + +#: preproc.y:419 +msgid "initializer not allowed in type definition" +msgstr "inicializátor (initializer) není v definici typu povolen" + +#: preproc.y:421 +msgid "type name \"string\" is reserved in Informix mode" +msgstr "název typu \"string\" je vyhrazen pro mód Informix" + +#: preproc.y:428 preproc.y:13006 +#, c-format +msgid "type \"%s\" is already defined" +msgstr "typ \"%s\" je již definován" + +#: preproc.y:452 preproc.y:13646 preproc.y:13967 variable.c:610 +msgid "multidimensional arrays for simple data types are not supported" +msgstr "vícerozměrná pole pro jednoduché datové typy nejsou podporována" + +#: preproc.y:1425 +msgid "AT option not allowed in CLOSE DATABASE statement" +msgstr "AT volba není v příkazu CLOSE DATABASE povolena" + +#: preproc.y:1622 +msgid "AT option not allowed in CONNECT statement" +msgstr "AT volba není v příkazu CONNECT povolena" + +#: preproc.y:1656 +msgid "AT option not allowed in DISCONNECT statement" +msgstr "AT volba není v příkazu DISCONNECT povolena" + +#: preproc.y:1711 +msgid "AT option not allowed in SET CONNECTION statement" +msgstr "AT volba není v příkazu SET CONNECTION povolena" + +#: preproc.y:1733 +msgid "AT option not allowed in TYPE statement" +msgstr "AT volba není v příkazu TYPE povolena" + +#: preproc.y:1742 +msgid "AT option not allowed in VAR statement" +msgstr "AT volba není v příkazu VAR povolena" + +#: preproc.y:1749 +msgid "AT option not allowed in WHENEVER statement" +msgstr "AT volba není v příkazu WHENEVER povolena" + +#: preproc.y:2095 preproc.y:3333 preproc.y:4521 preproc.y:4530 preproc.y:4811 +#: preproc.y:7098 preproc.y:7103 preproc.y:7108 preproc.y:9442 preproc.y:9985 +msgid "unsupported feature will be passed to server" +msgstr "nepodporovaná vlastnost bude předána serveru" + +#: preproc.y:2321 +msgid "SHOW ALL is not implemented" +msgstr "příkaz SHOW ALL není implementován" + +#: preproc.y:2744 preproc.y:2755 +msgid "COPY TO STDIN is not possible" +msgstr "příkaz COPY TO STDIN nelze použít" + +#: preproc.y:2746 +msgid "COPY FROM STDOUT is not possible" +msgstr "příkaz COPY FROM STDOUT nelze použít" + +#: preproc.y:2748 +msgid "COPY FROM STDIN is not implemented" +msgstr "příkaz COPY FROM STDIN není implementován" + +#: preproc.y:7904 preproc.y:12595 +#, c-format +msgid "using variable \"%s\" in different declare statements is not supported" +msgstr "použití proměnné \"%s\" v dalších deklaracích není podporováno" + +#: preproc.y:7906 preproc.y:12597 +#, c-format +msgid "cursor \"%s\" is already defined" +msgstr "kurzor \"%s\" je již definován" + +#: preproc.y:8324 +msgid "no longer supported LIMIT #,# syntax passed to server" +msgstr "již neopdporovaná syntaxe LIMIT #,# předána serveru" + +#: preproc.y:8559 +msgid "subquery in FROM must have an alias" +msgstr "poddotaz ve FROM musí mít alias" + +#: preproc.y:12327 +msgid "CREATE TABLE AS cannot specify INTO" +msgstr "CREATE TABLE AS nemůže specifikovat INTO" + +#: preproc.y:12364 +#, c-format +msgid "expected \"@\", found \"%s\"" +msgstr "očekáváno \"@\", nalezeno \"%s\"" + +#: preproc.y:12376 +msgid "" +"only protocols \"tcp\" and \"unix\" and database type \"postgresql\" are " +"supported" +msgstr "" +"podporovány jsou pouze protokoly \"tcp\" a \"unix\" a typ databáze " +"\"postgresql\"" + +#: preproc.y:12379 +#, c-format +msgid "expected \"://\", found \"%s\"" +msgstr "očekáváno \"://\", nalezeno \"%s\"" + +#: preproc.y:12384 +#, c-format +msgid "Unix-domain sockets only work on \"localhost\" but not on \"%s\"" +msgstr "Unixové sockety fungují pouze na \"localhost\" ale ne na \"%s\"" + +#: preproc.y:12410 +#, c-format +msgid "expected \"postgresql\", found \"%s\"" +msgstr "očekáváno \"postgresql\", nalezeno \"%s\"" + +#: preproc.y:12413 +#, c-format +msgid "invalid connection type: %s" +msgstr "chybný typ spojení: %s" + +#: preproc.y:12422 +#, c-format +msgid "expected \"@\" or \"://\", found \"%s\"" +msgstr "očekáváno \"@\" nebo \"://\", nalezeno \"%s\"" + +#: preproc.y:12497 preproc.y:12515 +msgid "invalid data type" +msgstr "chybný datový typ" + +#: preproc.y:12526 preproc.y:12541 +msgid "incomplete statement" +msgstr "neúplný příkaz" + +#: preproc.y:12529 preproc.y:12544 +#, c-format +msgid "unrecognized token \"%s\"" +msgstr "nerozpoznaný token \"%s\"" + +#: preproc.y:12817 +msgid "only data types numeric and decimal have precision/scale argument" +msgstr "pouze datové typy numeric a decimal mají argumenty přesnost/velikost" + +#: preproc.y:12829 +msgid "interval specification not allowed here" +msgstr "specifikace intervalu zde není povolena" + +#: preproc.y:12981 preproc.y:13033 +msgid "too many levels in nested structure/union definition" +msgstr "příliš mnoho úrovní v definici vnořené struktury/union" + +#: preproc.y:13164 +msgid "pointers to varchar are not implemented" +msgstr "ukazatele na varchar nejsou implementovány" + +#: preproc.y:13351 preproc.y:13376 +msgid "using unsupported DESCRIBE statement" +msgstr "použití nepodporovaného příkazu DESCRIBE" + +#: preproc.y:13613 +msgid "initializer not allowed in EXEC SQL VAR command" +msgstr "inicializátor není v příkazu EXEC SQL VAR podporován" + +#: preproc.y:13925 +msgid "arrays of indicators are not allowed on input" +msgstr "pole identifikátorů nejsou na vstupu povolena" + +#. translator: %s is typically the translation of "syntax error" +#: preproc.y:14179 +#, c-format +msgid "%s at or near \"%s\"" +msgstr "%s na nebo blízko \"%s\"" + +#: type.c:18 type.c:30 +msgid "out of memory" +msgstr "nedostatek paměti" + +#: type.c:212 type.c:587 +#, c-format +msgid "unrecognized variable type code %d" +msgstr "nerozpoznaný kód typu proměnné %d" + +#: type.c:261 +#, c-format +msgid "variable \"%s\" is hidden by a local variable of a different type" +msgstr "proměnná \"%s\" je překryta lokální proměnnou s jiným datovým typem" + +#: type.c:263 +#, c-format +msgid "variable \"%s\" is hidden by a local variable" +msgstr "proměnná \"%s\" je překryta lokální proměnnou" + +#: type.c:275 +#, c-format +msgid "" +"indicator variable \"%s\" is hidden by a local variable of a different type" +msgstr "" +"indicator variable \"%s\" je překryta lokální proměnnou s jiným datovým typem" + +#: type.c:277 +#, c-format +msgid "indicator variable \"%s\" is hidden by a local variable" +msgstr "indicator variable \"%s\" je překryta lokální proměnnou" + +#: type.c:285 +msgid "indicator for array/pointer has to be array/pointer" +msgstr "indicator variable pro pole/ukaztel musí být pole/ukazatel" + +#: type.c:289 +msgid "nested arrays are not supported (except strings)" +msgstr "vnořená pole nejsou podporována (kromě řetězců)" + +#: type.c:322 +msgid "indicator for struct has to be a struct" +msgstr "indikátor pro strukturu musí být struktura" + +#: type.c:331 type.c:339 type.c:347 +msgid "indicator for simple data type has to be simple" +msgstr "indikátor pro jednoduché datové typy musí být jednoduchý" + +#: type.c:646 +#, c-format +msgid "unrecognized descriptor item code %d" +msgstr "nerozpoznaný kód deskriptoru položky %d" + +#: variable.c:89 variable.c:112 +#, c-format +msgid "incorrectly formed variable \"%s\"" +msgstr "nesprávně vytvořený název proměnné \"%s\"" + +#: variable.c:135 +#, c-format +msgid "variable \"%s\" is not a pointer" +msgstr "proměnná \"%s\" není ukazatel" + +#: variable.c:138 variable.c:163 +#, c-format +msgid "variable \"%s\" is not a pointer to a structure or a union" +msgstr "proměnná \"%s\" není ukazatel na strukturu nebo sjednocení" + +#: variable.c:150 +#, c-format +msgid "variable \"%s\" is neither a structure nor a union" +msgstr "proměnná \"%s\" není ani struktura ani sjednocení" + +#: variable.c:160 +#, c-format +msgid "variable \"%s\" is not an array" +msgstr "proměnná \"%s\" není pole" + +#: variable.c:229 variable.c:251 +#, c-format +msgid "variable \"%s\" is not declared" +msgstr "proměnná \"%s\" není deklarována" + +#: variable.c:484 +msgid "indicator variable must have an integer type" +msgstr "indicator variable musí mít celočíselný typ" + +#: variable.c:496 +#, c-format +msgid "unrecognized data type name \"%s\"" +msgstr "nerozpoznaný název datového typu \"%s\"" + +#: variable.c:507 variable.c:515 variable.c:532 variable.c:535 +msgid "multidimensional arrays are not supported" +msgstr "vícerozměrná pole nejsou podporována" + +#: variable.c:524 +#, c-format +msgid "" +"multilevel pointers (more than 2 levels) are not supported; found %d level" +msgid_plural "" +"multilevel pointers (more than 2 levels) are not supported; found %d levels" +msgstr[0] "" +"víceúrovňové ukazatele (více než 2 úrovně) nejsou podporovány; nalezena %d " +"úroveň" +msgstr[1] "" +"víceúrovňové ukazatele (více než 2 úrovně) nejsou podporovány; nalezeny %d " +"úrovně" +msgstr[2] "" +"víceúrovňové ukazatele (více než 2 úrovně) nejsou podporovány; nalezeno %d " +"úrovní" + +#: variable.c:529 +msgid "pointer to pointer is not supported for this data type" +msgstr "ukazatel na ukazatel není pro tento datový typ podporován" + +#: variable.c:549 +msgid "multidimensional arrays for structures are not supported" +msgstr "vícerozměrná pole pro struktury nejsou podporována" + +#~ msgid "AT option not allowed in DEALLOCATE statement" +#~ msgstr "AT volba není v příkazu DEALLOCATE povolena" + +#~ msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" +#~ msgstr "omezení definované jako INITIALLY DEFERRED musí být DEFERRABLE" diff --git a/src/interfaces/ecpg/preproc/po/de.po b/src/interfaces/ecpg/preproc/po/de.po index 6e9affddbd..a0e9e33901 100644 --- a/src/interfaces/ecpg/preproc/po/de.po +++ b/src/interfaces/ecpg/preproc/po/de.po @@ -3,8 +3,6 @@ # This file is distributed under the same license as the PostgreSQL package. # Peter Eisentraut , 2009-2010. # -# pgtranslation Id: ecpg.po,v 1.11 2010/04/05 10:44:08 petere Exp $ -# # Use these quotes: »%s« # msgid "" @@ -15,6 +13,7 @@ msgstr "" "PO-Revision-Date: 2010-04-05 10:40+0000\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/interfaces/ecpg/preproc/po/es.po b/src/interfaces/ecpg/preproc/po/es.po index bd25fbfabc..f66ca69880 100644 --- a/src/interfaces/ecpg/preproc/po/es.po +++ b/src/interfaces/ecpg/preproc/po/es.po @@ -1,22 +1,21 @@ # Spanish translation file for ecpg # -# Copyright (C) 2009 PostgreSQL Global Development Group +# Copyright (C) 2009-2012 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # # Emanuel Calvo Franco , 2009. -# Alvaro Herrera , 2009 +# Alvaro Herrera , 2009-2012 # Franco Catena, , 2009 # -# pgtranslation Id: ecpg.po,v 1.8 2010/08/31 04:29:23 alvherre Exp $ -# msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-08-30 20:08+0000\n" -"PO-Revision-Date: 2010-08-31 00:28-0400\n" +"POT-Creation-Date: 2013-08-26 19:39+0000\n" +"PO-Revision-Date: 2012-02-21 22:53-0300\n" "Last-Translator: Álvaro Herrera \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -226,71 +225,71 @@ msgstr "el cursor «%s» fue declarado pero no abierto" msgid "could not remove output file \"%s\"\n" msgstr "no se pudo eliminar el archivo de salida «%s»\n" -#: pgc.l:401 +#: pgc.l:402 msgid "unterminated /* comment" msgstr "comentario /* no cerrado" -#: pgc.l:414 +#: pgc.l:415 msgid "invalid bit string literal" msgstr "cadena de bits no válida" -#: pgc.l:423 +#: pgc.l:424 msgid "unterminated bit string literal" msgstr "una cadena de bits está inconclusa" -#: pgc.l:439 +#: pgc.l:440 msgid "unterminated hexadecimal string literal" msgstr "una cadena hexadecimal está inconclusa" -#: pgc.l:516 +#: pgc.l:518 msgid "unterminated quoted string" msgstr "una cadena en comillas está inconclusa" -#: pgc.l:571 pgc.l:584 +#: pgc.l:573 pgc.l:586 msgid "zero-length delimited identifier" msgstr "identificador delimitado de longitud cero" -#: pgc.l:592 +#: pgc.l:594 msgid "unterminated quoted identifier" msgstr "un identificador en comillas está inconcluso" -#: pgc.l:938 +#: pgc.l:940 msgid "missing identifier in EXEC SQL UNDEF command" msgstr "falta un identificador en la orden EXEC SQL UNDEF" -#: pgc.l:984 pgc.l:998 +#: pgc.l:986 pgc.l:1000 msgid "missing matching \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" msgstr "falta el «EXEC SQL IFDEF» / «EXEC SQL IFNDEF»" -#: pgc.l:987 pgc.l:1000 pgc.l:1176 +#: pgc.l:989 pgc.l:1002 pgc.l:1178 msgid "missing \"EXEC SQL ENDIF;\"" msgstr "falta el «EXEC SQL ENDIF;»" -#: pgc.l:1016 pgc.l:1035 +#: pgc.l:1018 pgc.l:1037 msgid "more than one EXEC SQL ELSE" msgstr "hay más de un EXEC SQL ELSE" -#: pgc.l:1057 pgc.l:1071 +#: pgc.l:1059 pgc.l:1073 msgid "unmatched EXEC SQL ENDIF" msgstr "EXEC SQL ENDIF sin coincidencia" -#: pgc.l:1091 +#: pgc.l:1093 msgid "too many nested EXEC SQL IFDEF conditions" msgstr "demasiadas condiciones EXEC SQL IFDEF anidadas" -#: pgc.l:1124 +#: pgc.l:1126 msgid "missing identifier in EXEC SQL IFDEF command" msgstr "identificador faltante en la orden EXEC SQL IFDEF" -#: pgc.l:1133 +#: pgc.l:1135 msgid "missing identifier in EXEC SQL DEFINE command" msgstr "identificador faltante en la orden EXEC SQL DEFINE" -#: pgc.l:1166 +#: pgc.l:1168 msgid "syntax error in EXEC SQL INCLUDE command" msgstr "error de sintaxis en orden EXEC SQL INCLUDE" -#: pgc.l:1215 +#: pgc.l:1217 msgid "" "internal error: unreachable state; please report this to " @@ -298,14 +297,14 @@ msgstr "" "Error Interno: estado no esperado; por favor reporte a " -#: pgc.l:1340 +#: pgc.l:1342 #, c-format msgid "Error: include path \"%s/%s\" is too long on line %d, skipping\n" msgstr "" "Error: ruta de inclusión «%s/%s» es demasiada larga en la línea %d, " "omitiendo\n" -#: pgc.l:1362 +#: pgc.l:1364 #, c-format msgid "could not open include file \"%s\" on line %d" msgstr "no se pudo abrir el archivo a incluir «%s» en la línea %d" @@ -324,192 +323,185 @@ msgstr "ATENCIÓN: " msgid "ERROR: " msgstr "ERROR: " -#: preproc.y:399 +#: preproc.y:391 #, c-format msgid "cursor \"%s\" does not exist" msgstr "no existe el cursor «%s»" -#: preproc.y:427 +#: preproc.y:419 msgid "initializer not allowed in type definition" msgstr "inicializador no permitido en definición de tipo" -#: preproc.y:429 +#: preproc.y:421 msgid "type name \"string\" is reserved in Informix mode" msgstr "el nombre de tipo «string» está reservado en modo Informix" -#: preproc.y:436 preproc.y:12413 +#: preproc.y:428 preproc.y:13027 #, c-format msgid "type \"%s\" is already defined" msgstr "el tipo «%s» ya está definido" -#: preproc.y:460 preproc.y:13053 preproc.y:13374 variable.c:610 +#: preproc.y:452 preproc.y:13667 preproc.y:13988 variable.c:614 msgid "multidimensional arrays for simple data types are not supported" msgstr "" "los arrays multidimensionales para tipos de datos simples no están soportados" -#: preproc.y:1392 +#: preproc.y:1426 msgid "AT option not allowed in CLOSE DATABASE statement" msgstr "la opción AT no está permitida en la sentencia CLOSE DATABASE" -#: preproc.y:1458 preproc.y:1600 -msgid "AT option not allowed in DEALLOCATE statement" -msgstr "la opción AT no está permitida en la sentencia DEALLOCATE" - -#: preproc.y:1586 +#: preproc.y:1623 msgid "AT option not allowed in CONNECT statement" msgstr "la opción AT no está permitida en la sentencia CONNECT" -#: preproc.y:1622 +#: preproc.y:1657 msgid "AT option not allowed in DISCONNECT statement" msgstr "la opción AT no está permitida en la sentencia DISCONNECT" -#: preproc.y:1677 +#: preproc.y:1712 msgid "AT option not allowed in SET CONNECTION statement" msgstr "la opción AT no está permitida en la sentencia SET CONNECTION" -#: preproc.y:1699 +#: preproc.y:1734 msgid "AT option not allowed in TYPE statement" msgstr "la opción AT no está permitida en la sentencia TYPE" -#: preproc.y:1708 +#: preproc.y:1743 msgid "AT option not allowed in VAR statement" msgstr "la opción AT no está permitida en la sentencia VAR" -#: preproc.y:1715 +#: preproc.y:1750 msgid "AT option not allowed in WHENEVER statement" msgstr "la opción AT no está permitida en la sentencia WHENEVER" -#: preproc.y:2101 preproc.y:3197 preproc.y:3257 preproc.y:4210 preproc.y:4219 -#: preproc.y:4461 preproc.y:6550 preproc.y:6555 preproc.y:6560 preproc.y:8866 -#: preproc.y:9385 +#: preproc.y:2096 preproc.y:3334 preproc.y:4522 preproc.y:4531 preproc.y:4812 +#: preproc.y:7099 preproc.y:7104 preproc.y:7109 preproc.y:9439 preproc.y:9986 msgid "unsupported feature will be passed to server" msgstr "característica no soportada será pasada al servidor" -#: preproc.y:2331 +#: preproc.y:2322 msgid "SHOW ALL is not implemented" msgstr "SHOW ALL no está implementado" -#: preproc.y:2687 preproc.y:2698 +#: preproc.y:2745 preproc.y:2756 msgid "COPY TO STDIN is not possible" msgstr "COPY TO STDIN no es posible" -#: preproc.y:2689 +#: preproc.y:2747 msgid "COPY FROM STDOUT is not possible" msgstr "COPY FROM STDOUT no es posible" -#: preproc.y:2691 +#: preproc.y:2749 msgid "COPY FROM STDIN is not implemented" msgstr "COPY FROM STDIN no está implementado" -#: preproc.y:4150 preproc.y:4161 -msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" -msgstr "una restricción declarada INITIALLY DEFERRED debe ser DEFERRABLE" - -#: preproc.y:7359 preproc.y:12002 +#: preproc.y:7901 preproc.y:12616 #, c-format msgid "using variable \"%s\" in different declare statements is not supported" -msgstr "el uso de la variable «%s» en diferentes sentencias declare no está soportado" +msgstr "" +"el uso de la variable «%s» en diferentes sentencias declare no está soportado" -#: preproc.y:7361 preproc.y:12004 +#: preproc.y:7903 preproc.y:12618 #, c-format msgid "cursor \"%s\" is already defined" msgstr "el cursor «%s» ya está definido" -#: preproc.y:7764 +#: preproc.y:8321 msgid "no longer supported LIMIT #,# syntax passed to server" msgstr "" "la sintaxis LIMIT #,# que ya no está soportada ha sido pasada al servidor" -#: preproc.y:7999 +#: preproc.y:8556 msgid "subquery in FROM must have an alias" msgstr "las subconsultas en FROM deben tener un alias" -#: preproc.y:11735 +#: preproc.y:12348 msgid "CREATE TABLE AS cannot specify INTO" msgstr "CREATE TABLE AS no puede especificar INTO" -#: preproc.y:11772 +#: preproc.y:12385 #, c-format msgid "expected \"@\", found \"%s\"" msgstr "se esperaba «@», se encontró «%s»" -#: preproc.y:11784 +#: preproc.y:12397 msgid "" "only protocols \"tcp\" and \"unix\" and database type \"postgresql\" are " "supported" msgstr "" -"sólo los protocolos «tcp» y «unix» y tipo de bases de datos «postgresql» están " -"soportados" +"sólo los protocolos «tcp» y «unix» y tipo de bases de datos «postgresql» " +"están soportados" -#: preproc.y:11787 +#: preproc.y:12400 #, c-format msgid "expected \"://\", found \"%s\"" msgstr "se esperaba «://», se encontró «%s»" -#: preproc.y:11792 +#: preproc.y:12405 #, c-format msgid "Unix-domain sockets only work on \"localhost\" but not on \"%s\"" -msgstr "los sockets de dominio unix sólo trabajan en «localhost» pero no en «%s»" +msgstr "" +"los sockets de dominio unix sólo trabajan en «localhost» pero no en «%s»" -#: preproc.y:11818 +#: preproc.y:12431 #, c-format msgid "expected \"postgresql\", found \"%s\"" msgstr "se esperaba «postgresql», se encontró «%s»" -#: preproc.y:11821 +#: preproc.y:12434 #, c-format msgid "invalid connection type: %s" msgstr "tipo de conexión no válido: %s" -#: preproc.y:11830 +#: preproc.y:12443 #, c-format msgid "expected \"@\" or \"://\", found \"%s\"" msgstr "se esperaba «@» o «://», se encontró «%s»" -#: preproc.y:11905 preproc.y:11923 +#: preproc.y:12518 preproc.y:12536 msgid "invalid data type" msgstr "tipo de dato no válido" -#: preproc.y:11934 preproc.y:11949 +#: preproc.y:12547 preproc.y:12562 msgid "incomplete statement" msgstr "sentencia incompleta" -#: preproc.y:11937 preproc.y:11952 +#: preproc.y:12550 preproc.y:12565 #, c-format msgid "unrecognized token \"%s\"" msgstr "elemento «%s» no reconocido" -#: preproc.y:12224 +#: preproc.y:12838 msgid "only data types numeric and decimal have precision/scale argument" msgstr "" "sólo los tipos de dato numeric y decimal tienen argumento de precisión/escala" -#: preproc.y:12236 +#: preproc.y:12850 msgid "interval specification not allowed here" msgstr "la especificación de intervalo no está permitida aquí" -#: preproc.y:12388 preproc.y:12440 +#: preproc.y:13002 preproc.y:13054 msgid "too many levels in nested structure/union definition" msgstr "demasiados niveles en la definición anidada de estructura/unión" -#: preproc.y:12571 +#: preproc.y:13185 msgid "pointers to varchar are not implemented" msgstr "los punteros a varchar no están implementados" -#: preproc.y:12758 preproc.y:12783 +#: preproc.y:13372 preproc.y:13397 msgid "using unsupported DESCRIBE statement" msgstr "utilizando sentencia DESCRIBE no soportada" -#: preproc.y:13020 +#: preproc.y:13634 msgid "initializer not allowed in EXEC SQL VAR command" msgstr "inicializador no permitido en la orden EXEC SQL VAR" -#: preproc.y:13332 +#: preproc.y:13946 msgid "arrays of indicators are not allowed on input" msgstr "no se permiten los arrays de indicadores en la entrada" #. translator: %s is typically the translation of "syntax error" -#: preproc.y:13586 +#: preproc.y:14200 #, c-format msgid "%s at or near \"%s\"" msgstr "%s en o cerca «%s»" @@ -518,7 +510,7 @@ msgstr "%s en o cerca «%s»" msgid "out of memory" msgstr "memoria agotada" -#: type.c:212 type.c:594 +#: type.c:212 type.c:587 #, c-format msgid "unrecognized variable type code %d" msgstr "código de tipo de variable %d no reconocido" @@ -526,7 +518,8 @@ msgstr "código de tipo de variable %d no reconocido" #: type.c:261 #, c-format msgid "variable \"%s\" is hidden by a local variable of a different type" -msgstr "la variable «%s» está escondida por una variable local de tipo diferente" +msgstr "" +"la variable «%s» está escondida por una variable local de tipo diferente" #: type.c:263 #, c-format @@ -537,7 +530,9 @@ msgstr "la variable «%s» está escondida por una variable local" #, c-format msgid "" "indicator variable \"%s\" is hidden by a local variable of a different type" -msgstr "la variable de indicador «%s» está escondida por una variable local de tipo diferente" +msgstr "" +"la variable de indicador «%s» está escondida por una variable local de tipo " +"diferente" #: type.c:277 #, c-format @@ -560,55 +555,55 @@ msgstr "el indicador para struct debe ser struct" msgid "indicator for simple data type has to be simple" msgstr "el indicador para tipo dato simple debe ser simple" -#: type.c:653 +#: type.c:646 #, c-format msgid "unrecognized descriptor item code %d" msgstr "código de descriptor de elemento %d no reconocido" -#: variable.c:89 variable.c:112 +#: variable.c:89 variable.c:116 #, c-format msgid "incorrectly formed variable \"%s\"" msgstr "variable formada incorrectamente «%s»" -#: variable.c:135 +#: variable.c:139 #, c-format msgid "variable \"%s\" is not a pointer" msgstr "la variable «%s» no es un puntero" -#: variable.c:138 variable.c:163 +#: variable.c:142 variable.c:167 #, c-format msgid "variable \"%s\" is not a pointer to a structure or a union" msgstr "la variable «%s» no es un puntero a una estructura o unión" -#: variable.c:150 +#: variable.c:154 #, c-format msgid "variable \"%s\" is neither a structure nor a union" msgstr "la variable «%s» no es una estructura ni una unión" -#: variable.c:160 +#: variable.c:164 #, c-format msgid "variable \"%s\" is not an array" msgstr "la variable «%s» no es un array" -#: variable.c:229 variable.c:251 +#: variable.c:233 variable.c:255 #, c-format msgid "variable \"%s\" is not declared" msgstr "la variable «%s» no está declarada" -#: variable.c:484 +#: variable.c:488 msgid "indicator variable must have an integer type" msgstr "la variable de un indicador debe ser de algún tipo numérico entero" -#: variable.c:496 +#: variable.c:500 #, c-format msgid "unrecognized data type name \"%s\"" msgstr "nombre de tipo de datos «%s» no reconocido" -#: variable.c:507 variable.c:515 variable.c:532 variable.c:535 +#: variable.c:511 variable.c:519 variable.c:536 variable.c:539 msgid "multidimensional arrays are not supported" msgstr "los arrays multidimensionales no están soportados" -#: variable.c:524 +#: variable.c:528 #, c-format msgid "" "multilevel pointers (more than 2 levels) are not supported; found %d level" @@ -619,16 +614,10 @@ msgstr[0] "" msgstr[1] "" "no se soportan los punteros multinivel (más de 2); se encontraron %d niveles" -#: variable.c:529 +#: variable.c:533 msgid "pointer to pointer is not supported for this data type" msgstr "los punteros a puntero no están soportados para este tipo de dato" -#: variable.c:549 +#: variable.c:553 msgid "multidimensional arrays for structures are not supported" msgstr "los arrays multidimensionales para estructuras no están soportados" - -#~ msgid "OLD used in query that is not in a rule" -#~ msgstr "se usó OLD en una consulta que no es una regla" - -#~ msgid "NEW used in query that is not in a rule" -#~ msgstr "se usó NEW en una consulta que no es una regla" diff --git a/src/interfaces/ecpg/preproc/po/fr.po b/src/interfaces/ecpg/preproc/po/fr.po index da0b6b61d7..5ed0bba1de 100644 --- a/src/interfaces/ecpg/preproc/po/fr.po +++ b/src/interfaces/ecpg/preproc/po/fr.po @@ -1,8 +1,6 @@ # translation of ecpg.po to fr_fr # french message translation file for ecpg # -# pgtranslation Id: ecpg.po,v 1.8 2010/04/24 15:18:45 gleu Exp $ -# # Use these quotes: � %s � # # Guillaume Lelarge , 2009. @@ -15,6 +13,7 @@ msgstr "" "PO-Revision-Date: 2010-04-24 13:22+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" diff --git a/src/interfaces/ecpg/preproc/po/it.po b/src/interfaces/ecpg/preproc/po/it.po index 3397b49aad..aac925141c 100644 --- a/src/interfaces/ecpg/preproc/po/it.po +++ b/src/interfaces/ecpg/preproc/po/it.po @@ -6,44 +6,43 @@ # http://www.itpug.org/ - info@itpug.org # # Traduttori: +# * Daniele Varrazzo # * Maurizio Totti -# +# # Revisori: # * Emanuele Zamprogno -# +# # # Copyright (c) 2010, Associazione Culturale ITPUG # Distributed under the same license of the PostgreSQL project # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" +"Project-Id-Version: ecpg (PostgreSQL) 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-03-26 13:23+0000\n" -"PO-Revision-Date: 2010-03-27 12:44:19+0100\n" -"Last-Translator: Gabriele Bartolini \n" +"POT-Creation-Date: 2013-01-29 13:51+0000\n" +"PO-Revision-Date: 2012-12-03 17:30+0100\n" +"Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Poedit-Language: Italian\n" -"X-Poedit-Country: ITALY\n" "X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Poedit 1.5.4\n" #: descriptor.c:64 #, c-format msgid "variable \"%s\" must have a numeric type" msgstr "la variabile \"%s\" deve essere di tipo numerico" -#: descriptor.c:124 -#: descriptor.c:146 +#: descriptor.c:124 descriptor.c:146 #, c-format msgid "descriptor \"%s\" does not exist" msgstr "il descrittore \"%s\" non esiste" -#: descriptor.c:161 -#: descriptor.c:210 +#: descriptor.c:161 descriptor.c:210 #, c-format msgid "descriptor header item \"%d\" does not exist" msgstr "la voce \"%d\" dell'header del descrittore non esiste" @@ -64,7 +63,7 @@ msgstr "la voce \"%s\" del descrittore non è implementata" #: descriptor.c:287 #, c-format msgid "descriptor item \"%s\" cannot be set" -msgstr "la voce \"%s\" del descrittore non può essere settata" +msgstr "la voce \"%s\" del descrittore non può essere impostata" #: ecpg.c:35 #, c-format @@ -72,7 +71,7 @@ msgid "" "%s is the PostgreSQL embedded SQL preprocessor for C programs.\n" "\n" msgstr "" -"%s è il PostgreSQL embedded SQL preprocessor for programmi scritti in C.\n" +"%s è il preprocessore SQL embedded di PostgreSQL per programmi scritti in C.\n" "\n" #: ecpg.c:37 @@ -106,8 +105,8 @@ msgid "" " -C MODE set compatibility mode; MODE can be one of\n" " \"INFORMIX\", \"INFORMIX_SE\"\n" msgstr "" -" -C MODE setta il compatibility mode; MODE può essere uno tra\n" -" \"INFORMIX\", \"INFORMIX_SE\"\n" +" -C MODO imposta la modalità di compatibilità; MODO può essere uno\n" +" tra \"INFORMIX\", \"INFORMIX_SE\"\n" #: ecpg.c:46 #, c-format @@ -117,17 +116,17 @@ msgstr " -d genera l'output di debug del parser\n" #: ecpg.c:48 #, c-format msgid " -D SYMBOL define SYMBOL\n" -msgstr " -D SYMBOL definisce SYMBOL\n" +msgstr " -D SIMBOLO definisci SIMBOLO\n" #: ecpg.c:49 #, c-format msgid " -h parse a header file, this option includes option \"-c\"\n" -msgstr " -h fa il parsing di un header file, questa opzione include l'opzione \"-c\"\n" +msgstr " -h analizza un file header, questa opzione include \"-c\"\n" #: ecpg.c:50 #, c-format msgid " -i parse system include files as well\n" -msgstr " -i fa il parsing anche dei file di sistema\n" +msgstr " -i analizza anche i file di sistema\n" #: ecpg.c:51 #, c-format @@ -137,7 +136,7 @@ msgstr " -I DIRECTORY cerca gli include file in DIRECTORY\n" #: ecpg.c:52 #, c-format msgid " -o OUTFILE write result to OUTFILE\n" -msgstr " -o OUTFILE scrive il risultato in OUTFILE\n" +msgstr " -o FILEOUT scrive il risultato in FILEOUT\n" #: ecpg.c:53 #, c-format @@ -145,28 +144,28 @@ msgid "" " -r OPTION specify run-time behavior; OPTION can be:\n" " \"no_indicator\", \"prepare\", \"questionmarks\"\n" msgstr "" -" -r OPTION specifica il comportamento run-time; OPTION può essere:\n" +" -r OPZIONE specifica il comportamento run-time; OPZIONE può essere:\n" " \"no_indicator\", \"prepare\", \"questionmarks\"\n" #: ecpg.c:55 #, c-format msgid " --regression run in regression testing mode\n" -msgstr " --regression viene eseguito in modalità regression testing\n" +msgstr " --regression esegui in modalità test di regressione\n" #: ecpg.c:56 #, c-format msgid " -t turn on autocommit of transactions\n" -msgstr " -t attiva l'autocommit nelle transazioni\n" +msgstr " -t attiva il commit automatico delle transazioni\n" #: ecpg.c:57 #, c-format msgid " --help show this help, then exit\n" -msgstr " --help mostra questo help, poi esce\n" +msgstr " --help mostra questo aiuto ed esci\n" #: ecpg.c:58 #, c-format msgid " --version output version information, then exit\n" -msgstr " --version mostra le informazioni sulla versione, poi esce\n" +msgstr " --version mostra informazioni sulla versione ed esci\n" #: ecpg.c:59 #, c-format @@ -176,8 +175,8 @@ msgid "" "input file name, after stripping off .pgc if present.\n" msgstr "" "\n" -"Se non viene specificato nessun file di output, il nome è composto aggiungendo .c\n" -"la nome del file di input, dopo aver tolto .pgc se presente.\n" +"Se non viene specificato nessun file di output, il nome è composto aggiungendo\n" +".c al nome del file di input, dopo aver tolto .pgc se presente.\n" #: ecpg.c:61 #, c-format @@ -186,22 +185,17 @@ msgid "" "Report bugs to .\n" msgstr "" "\n" -"Segnalare bachi a .\n" +"Puoi segnalare eventuali bug a .\n" -#: ecpg.c:182 -#: ecpg.c:333 -#: ecpg.c:343 +#: ecpg.c:182 ecpg.c:333 ecpg.c:343 #, c-format msgid "%s: could not open file \"%s\": %s\n" -msgstr "%s: impossibile aprire il file \"%s\": %s\n" +msgstr "%s: apertura del file \"%s\" fallita: %s\n" -#: ecpg.c:221 -#: ecpg.c:234 -#: ecpg.c:250 -#: ecpg.c:275 +#: ecpg.c:221 ecpg.c:234 ecpg.c:250 ecpg.c:275 #, c-format msgid "Try \"%s --help\" for more information.\n" -msgstr "Prova \"%s --help\" per avere più informazioni.\n" +msgstr "Prova \"%s --help\" per maggiori informazioni.\n" #: ecpg.c:245 #, c-format @@ -211,7 +205,7 @@ msgstr "%s: il supporto al debug del parser (-d) non è disponibile\n" #: ecpg.c:263 #, c-format msgid "%s, the PostgreSQL embedded C preprocessor, version %d.%d.%d\n" -msgstr "%s, PostgreSQL embedded C preprocessor, versione %d.%d.%d\n" +msgstr "%s, preprocessore embedded C PostgreSQL, versione %d.%d.%d\n" #: ecpg.c:265 #, c-format @@ -221,7 +215,7 @@ msgstr "EXEC SQL INCLUDE ... la ricerca inizia da qui:\n" #: ecpg.c:268 #, c-format msgid "end of search list\n" -msgstr "fine della search list\n" +msgstr "fine della lista di ricerca\n" #: ecpg.c:274 #, c-format @@ -233,410 +227,384 @@ msgstr "%s: non è stato specificato nessun file di input\n" msgid "cursor \"%s\" has been declared but not opened" msgstr "il cursore \"%s\" è stato dichiarato, ma non aperto" -#: pgc.l:399 +#: ecpg.c:479 preproc.y:109 +#, c-format +msgid "could not remove output file \"%s\"\n" +msgstr "rimozione del file di output \"%s\" fallita\n" + +#: pgc.l:402 msgid "unterminated /* comment" msgstr "commento /* non terminato" # string literal sarebbe intraducubile infatti è come la stringa viene rappresentata nel linguaggio di programmazione, ma come si fa a tradurlo?.... -#: pgc.l:412 +# Secondo me "stringa letterale" -- Daniele +#: pgc.l:415 msgid "invalid bit string literal" -msgstr "bit nella stringa literal non valido " +msgstr "bit nella stringa letterale non valido" -# string literal sarebbe intraducubile infatti è come la stringa viene rappresentata nel linguaggio di programmazione, ma come si fa a tradurlo?.... -#: pgc.l:421 +#: pgc.l:424 msgid "unterminated bit string literal" -msgstr " bit di chiusura nella stringa literal mancante" +msgstr "letterale di stringa di bit non terminato" -#: pgc.l:437 +#: pgc.l:440 msgid "unterminated hexadecimal string literal" -msgstr "stringa esadecimale literal non terminata " +msgstr "letterale di stringa esadecimale non terminato" -#: pgc.l:514 +#: pgc.l:518 msgid "unterminated quoted string" -msgstr "stringa quotata non terminata" +msgstr "stringa tra virgolette non terminata" -#: pgc.l:569 -#: pgc.l:582 +#: pgc.l:573 pgc.l:586 msgid "zero-length delimited identifier" -msgstr "identificatore di delimitazione di dimensione-zero" +msgstr "identificativo delimitato di lunghezza zero" -#: pgc.l:590 +#: pgc.l:594 msgid "unterminated quoted identifier" -msgstr "identificatore quotato non terminato" +msgstr "identificativo tra virgolette non terminato" -#: pgc.l:934 +#: pgc.l:940 msgid "missing identifier in EXEC SQL UNDEF command" -msgstr "identificatore mancante nel comando EXEC SQL UNDEF" +msgstr "identificativo mancante nel comando EXEC SQL UNDEF" -# sarebbe "mancanti corrispondenti"... ma non trovo un senso corretto -#: pgc.l:980 -#: pgc.l:994 +#: pgc.l:986 pgc.l:1000 msgid "missing matching \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" msgstr "mancata corrispondenza fra \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" -#: pgc.l:983 -#: pgc.l:996 -#: pgc.l:1172 +#: pgc.l:989 pgc.l:1002 pgc.l:1178 msgid "missing \"EXEC SQL ENDIF;\"" msgstr "manca \"EXEC SQL ENDIF;\"" -#: pgc.l:1012 -#: pgc.l:1031 +#: pgc.l:1018 pgc.l:1037 msgid "more than one EXEC SQL ELSE" msgstr "più di un EXEC SQL ELSE" -# trovare modo + corretto -#: pgc.l:1053 -#: pgc.l:1067 +#: pgc.l:1059 pgc.l:1073 msgid "unmatched EXEC SQL ENDIF" msgstr "EXEC SQL ENDIF non corrispondente" -#: pgc.l:1087 +#: pgc.l:1093 msgid "too many nested EXEC SQL IFDEF conditions" msgstr "troppe condizioni EXEC SQL IFDEF annidate" -#: pgc.l:1120 +#: pgc.l:1126 msgid "missing identifier in EXEC SQL IFDEF command" -msgstr "identificatore mancante nel comando EXEC SQL IFDEF" +msgstr "identificativo mancante nel comando EXEC SQL IFDEF" -#: pgc.l:1129 +#: pgc.l:1135 msgid "missing identifier in EXEC SQL DEFINE command" -msgstr "identificatore mancante nel comando EXEC SQL DEFINE" +msgstr "identificativo mancante nel comando EXEC SQL DEFINE" -#: pgc.l:1162 +#: pgc.l:1168 msgid "syntax error in EXEC SQL INCLUDE command" msgstr "errore di sintassi nel comando EXEC SQL INCLUDE" -#: pgc.l:1211 +#: pgc.l:1217 msgid "internal error: unreachable state; please report this to " msgstr "errore interno: stato non raggiungibile, si prega di segnalarlo a " -# "percorso di inclusione" sembra fuorviante -#: pgc.l:1336 +#: pgc.l:1342 #, c-format msgid "Error: include path \"%s/%s\" is too long on line %d, skipping\n" -msgstr "Errore: il percorso della include \"%s/%s\" è troppo lungo alla linea %d, perciò viene saltato\n" +msgstr "Errore: il percorso delle inclusioni \"%s/%s\" è troppo lungo alla riga %d, perciò viene saltato\n" -#: pgc.l:1358 +#: pgc.l:1364 #, c-format msgid "could not open include file \"%s\" on line %d" -msgstr "non posso aprire il file di include \"%s\" alla linea %d" +msgstr "apertura del file di include \"%s\" alla riga %d fallita" -#: preproc.y:30 +#: preproc.y:31 msgid "syntax error" msgstr "errore di sintassi" -#: preproc.y:80 +#: preproc.y:81 #, c-format msgid "WARNING: " msgstr "ATTENZIONE: " -#: preproc.y:84 +#: preproc.y:85 #, c-format msgid "ERROR: " msgstr "ERRORE: " -#: preproc.y:108 -#, c-format -msgid "could not remove output file \"%s\"\n" -msgstr "non posso rimuovere il file di output \"%s\"\n" - -#: preproc.y:398 +#: preproc.y:391 #, c-format msgid "cursor \"%s\" does not exist" msgstr "il cursore \"%s\" non esiste" -#: preproc.y:426 +#: preproc.y:419 msgid "initializer not allowed in type definition" msgstr "l'inizializzatore non è permesso nella definizione del tipo di dato" -#: preproc.y:428 +#: preproc.y:421 msgid "type name \"string\" is reserved in Informix mode" msgstr "il nome di tipo \"string\" è riservato alla modalità Informix" -#: preproc.y:435 -#: preproc.y:12402 +#: preproc.y:428 preproc.y:13006 #, c-format msgid "type \"%s\" is already defined" msgstr "il tipo \"%s\" è già definito" -#: preproc.y:459 -#: preproc.y:13042 -#: preproc.y:13363 -#: variable.c:610 +#: preproc.y:452 preproc.y:13646 preproc.y:13967 variable.c:614 msgid "multidimensional arrays for simple data types are not supported" msgstr "gli array multidimensionali per tipi dato semplici non sono supportati" -#: preproc.y:1391 +#: preproc.y:1425 msgid "AT option not allowed in CLOSE DATABASE statement" -msgstr "l'opzione AT non è permessa nel comando CLOSE DATABASE" - -#: preproc.y:1457 -#: preproc.y:1599 -msgid "AT option not allowed in DEALLOCATE statement" -msgstr "l'opzione AT non è permessa nel comando DEALLOCATE" +msgstr "l'opzione AT non è permessa nell'istruzione CLOSE DATABASE" -#: preproc.y:1585 +#: preproc.y:1622 msgid "AT option not allowed in CONNECT statement" -msgstr "l'opzione AT non è permessa nel comando CONNECT" +msgstr "l'opzione AT non è permessa nell'istruzione CONNECT" -#: preproc.y:1621 +#: preproc.y:1656 msgid "AT option not allowed in DISCONNECT statement" -msgstr "l'opzione AT non è permessa nel comando DISCONNECT" +msgstr "l'opzione AT non è permessa nell'istruzione DISCONNECT" -#: preproc.y:1676 +#: preproc.y:1711 msgid "AT option not allowed in SET CONNECTION statement" -msgstr "l'opzione AT non è permessa nel comando SET CONNECTION" +msgstr "l'opzione AT non è permessa nell'istruzione SET CONNECTION" -#: preproc.y:1698 +#: preproc.y:1733 msgid "AT option not allowed in TYPE statement" -msgstr "l'opzione AT non è permessa nel comando TYPE" +msgstr "l'opzione AT non è permessa nell'istruzione TYPE" -#: preproc.y:1707 +#: preproc.y:1742 msgid "AT option not allowed in VAR statement" -msgstr "l'opzione AT non è permessa nel comando VAR" +msgstr "l'opzione AT non è permessa nell'istruzione VAR" -#: preproc.y:1714 +#: preproc.y:1749 msgid "AT option not allowed in WHENEVER statement" -msgstr "l'opzione AT non è permessa nel comando WHENEVER" - -#: preproc.y:2100 -#: preproc.y:3196 -#: preproc.y:3256 -#: preproc.y:4197 -#: preproc.y:4206 -#: preproc.y:4448 -#: preproc.y:6537 -#: preproc.y:6542 -#: preproc.y:6547 -#: preproc.y:8848 -#: preproc.y:9367 +msgstr "l'opzione AT non è permessa nell'istruzione WHENEVER" + +#: preproc.y:2095 preproc.y:3333 preproc.y:4521 preproc.y:4530 preproc.y:4811 +#: preproc.y:7098 preproc.y:7103 preproc.y:7108 preproc.y:9442 preproc.y:9985 msgid "unsupported feature will be passed to server" msgstr "al server è stata richiesta una funzionalità non supportata" -#: preproc.y:2330 +#: preproc.y:2321 msgid "SHOW ALL is not implemented" msgstr "SHOW ALL non è implementato" -#: preproc.y:2686 -#: preproc.y:2697 +#: preproc.y:2744 preproc.y:2755 msgid "COPY TO STDIN is not possible" msgstr "COPY TO STDIN non è possibile" -#: preproc.y:2688 +#: preproc.y:2746 msgid "COPY FROM STDOUT is not possible" msgstr "COPY FROM STDOUT non è possibile" -#: preproc.y:2690 +#: preproc.y:2748 msgid "COPY FROM STDIN is not implemented" msgstr "COPY FROM STDIN non è implementato" -#: preproc.y:4137 -#: preproc.y:4148 -msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" -msgstr "la condizione dichiarata INITIALLY DEFERRED deve essere DEFERRABLE" +#: preproc.y:7904 preproc.y:12595 +#, c-format +msgid "using variable \"%s\" in different declare statements is not supported" +msgstr "usare la variabile \"%s\" in una diversa istruzione declare non è supportato" -#: preproc.y:7344 -#: preproc.y:11994 +#: preproc.y:7906 preproc.y:12597 #, c-format msgid "cursor \"%s\" is already defined" msgstr "il cursore \"%s\" è già definito" -#: preproc.y:7746 +#: preproc.y:8324 msgid "no longer supported LIMIT #,# syntax passed to server" -msgstr "la sintassi LIMIT #,# passata al server, non è più supportata" +msgstr "la sintassi LIMIT #,# passata al server non è più supportata" -#: preproc.y:7981 +#: preproc.y:8559 msgid "subquery in FROM must have an alias" -msgstr "la subquery in FROM deve avere un alias" +msgstr "la sottoquery in FROM deve avere un alias" -#: preproc.y:11729 +#: preproc.y:12327 msgid "CREATE TABLE AS cannot specify INTO" msgstr "CREATE TABLE AS non può specificare INTO" -#: preproc.y:11766 +#: preproc.y:12364 #, c-format msgid "expected \"@\", found \"%s\"" msgstr "atteso \"@\", trovato \"%s\"" -#: preproc.y:11778 +#: preproc.y:12376 msgid "only protocols \"tcp\" and \"unix\" and database type \"postgresql\" are supported" msgstr "soltanto i protocolli \"tcp\" e \"unix\" ed il tipo database \"postgresql\" sono supportati" -#: preproc.y:11781 +#: preproc.y:12379 #, c-format msgid "expected \"://\", found \"%s\"" msgstr "atteso \"://\", trovato \"%s\"" -#: preproc.y:11786 +#: preproc.y:12384 #, c-format msgid "Unix-domain sockets only work on \"localhost\" but not on \"%s\"" -msgstr "gli Unix-domain sockets funzionano solo con \"localhost\" ma non con \"%s\"" +msgstr "i socket di dominio Unix funzionano solo con \"localhost\" ma non con \"%s\"" -#: preproc.y:11812 +#: preproc.y:12410 #, c-format msgid "expected \"postgresql\", found \"%s\"" msgstr "atteso \"postgresql\", trovato \"%s\"" -#: preproc.y:11815 +#: preproc.y:12413 #, c-format msgid "invalid connection type: %s" msgstr "tipo di connessione non valido: %s" -#: preproc.y:11824 +#: preproc.y:12422 #, c-format msgid "expected \"@\" or \"://\", found \"%s\"" msgstr "atteso \"@\" oppure \"://\", trovato \"%s\"" -#: preproc.y:11899 -#: preproc.y:11917 +#: preproc.y:12497 preproc.y:12515 msgid "invalid data type" msgstr "tipo dato non valido" -# oppure "affermazione incompleta" ? -#: preproc.y:11928 -#: preproc.y:11943 +#: preproc.y:12526 preproc.y:12541 msgid "incomplete statement" -msgstr "comando incompleto" +msgstr "istruzione incompleta" -#: preproc.y:11931 -#: preproc.y:11946 +#: preproc.y:12529 preproc.y:12544 #, c-format msgid "unrecognized token \"%s\"" -msgstr "token \"%s\" non riconosciuto" +msgstr "token \"%s\" sconosciuto" -#: preproc.y:12213 +#: preproc.y:12817 msgid "only data types numeric and decimal have precision/scale argument" -msgstr "solo i dati di tipo numeric e decimal hanno argomento precision/scale" +msgstr "solo i dati di tipo numeric e decimal hanno argomento precisione/scala" -#: preproc.y:12225 +#: preproc.y:12829 msgid "interval specification not allowed here" -msgstr "specificazione d'intervallo non permessa qui" +msgstr "specificazione di intervallo non permessa qui" -#: preproc.y:12377 -#: preproc.y:12429 +#: preproc.y:12981 preproc.y:13033 msgid "too many levels in nested structure/union definition" -msgstr "troppi livelli nidificati nella definizione della struttura/union" +msgstr "troppi livelli nidificati nella definizione della struttura/unione" -#: preproc.y:12560 +#: preproc.y:13164 msgid "pointers to varchar are not implemented" msgstr "i puntatori a varchar non sono implementati" -#: preproc.y:12747 -#: preproc.y:12772 +#: preproc.y:13351 preproc.y:13376 msgid "using unsupported DESCRIBE statement" -msgstr "si sta utilizzando la dichiarazione non supportata DESCRIBE" +msgstr "si sta utilizzando una istruzione DESCRIBE non supportata" -#: preproc.y:13009 +#: preproc.y:13613 msgid "initializer not allowed in EXEC SQL VAR command" msgstr "initializer non è permesso nel comando EXEC SQL VAR" -#: preproc.y:13321 +#: preproc.y:13925 msgid "arrays of indicators are not allowed on input" -msgstr "un array di indicatori non è permesso in input" +msgstr "array di indicatori non sono permessi" #. translator: %s is typically the translation of "syntax error" -#: preproc.y:13575 +#: preproc.y:14179 #, c-format msgid "%s at or near \"%s\"" -msgstr "%s presso o vicino \"%s\"" +msgstr "%s a o presso \"%s\"" -#: type.c:18 -#: type.c:30 +#: type.c:18 type.c:30 msgid "out of memory" msgstr "memoria esaurita" -#: type.c:212 -#: type.c:557 +#: type.c:212 type.c:587 #, c-format msgid "unrecognized variable type code %d" msgstr "tipo di variabile sconosciuto codice %d" -#: type.c:249 +#: type.c:261 +#, c-format +msgid "variable \"%s\" is hidden by a local variable of a different type" +msgstr "la variabile \"%s\" è nascosta da una variabile locale di tipo diverso" + +#: type.c:263 +#, c-format +msgid "variable \"%s\" is hidden by a local variable" +msgstr "la variabile \"%s\" è nascosta da una variabile locale" + +#: type.c:275 +#, c-format +msgid "indicator variable \"%s\" is hidden by a local variable of a different type" +msgstr "la variabile di indicatore \"%s\" è nascosta da una variabile locale di tipo diverso" + +#: type.c:277 +#, c-format +msgid "indicator variable \"%s\" is hidden by a local variable" +msgstr "la variabile di indicatore \"%s\" è nascosta da una variabile locale" + +#: type.c:285 msgid "indicator for array/pointer has to be array/pointer" msgstr "un indicatore per un array/puntatore deve essere un array/puntatore" -#: type.c:253 +#: type.c:289 msgid "nested arrays are not supported (except strings)" msgstr "array annidati non sono supportati (tranne che per le stringhe)" -#: type.c:286 +#: type.c:322 msgid "indicator for struct has to be a struct" msgstr "un indicatore per una struttura deve essere una struttura" # capire meglio i "simple data types" -#: type.c:295 -#: type.c:303 -#: type.c:311 +#: type.c:331 type.c:339 type.c:347 msgid "indicator for simple data type has to be simple" -msgstr "un indicatore per tipi dato semplici deve essere formato da tipi dato semplici" +msgstr "un indicatore per un tipo di dato semplice deve essere semplice" -#: type.c:616 +#: type.c:646 #, c-format msgid "unrecognized descriptor item code %d" -msgstr "descittore di codice %d sconosciuto" +msgstr "descrittore di codice %d sconosciuto" -#: variable.c:89 -#: variable.c:112 +#: variable.c:89 variable.c:116 #, c-format msgid "incorrectly formed variable \"%s\"" msgstr "variabile \"%s\" composta in maniera scorretta" -#: variable.c:135 +#: variable.c:139 #, c-format msgid "variable \"%s\" is not a pointer" msgstr "la variabile \"%s\" non è un puntatore" -#: variable.c:138 -#: variable.c:163 +#: variable.c:142 variable.c:167 #, c-format msgid "variable \"%s\" is not a pointer to a structure or a union" -msgstr "la variabile \"%s\" non è un puntatore ad una strutura o ad una union" +msgstr "la variabile \"%s\" non è un puntatore ad una struttura o ad una unione" -#: variable.c:150 +#: variable.c:154 #, c-format msgid "variable \"%s\" is neither a structure nor a union" -msgstr "la variabile \"%s\" non è nè una struttura nè una union" +msgstr "la variabile \"%s\" non è né una struttura né una unione" -#: variable.c:160 +#: variable.c:164 #, c-format msgid "variable \"%s\" is not an array" msgstr "la variabile \"%s\" non è un array" -#: variable.c:229 -#: variable.c:251 +#: variable.c:233 variable.c:255 #, c-format msgid "variable \"%s\" is not declared" msgstr "la variabile \"%s\" non è stata dichiarata" -#: variable.c:484 +#: variable.c:488 msgid "indicator variable must have an integer type" -msgstr "il tipo di variabile di un indicator debe essere intero" +msgstr "il tipo di variabile di un indicatore deve essere intero" -#: variable.c:496 +#: variable.c:500 #, c-format msgid "unrecognized data type name \"%s\"" -msgstr "tipo di dato chiatato \"%s\" è sconosciuto" +msgstr "tipo di dato chiamato \"%s\" è sconosciuto" -#: variable.c:507 -#: variable.c:515 -#: variable.c:532 -#: variable.c:535 +#: variable.c:511 variable.c:519 variable.c:536 variable.c:539 msgid "multidimensional arrays are not supported" msgstr "gli array multidimensionali non sono supportati" -#: variable.c:524 +#: variable.c:528 #, c-format msgid "multilevel pointers (more than 2 levels) are not supported; found %d level" msgid_plural "multilevel pointers (more than 2 levels) are not supported; found %d levels" -msgstr[0] "puntatori a più livelli (più di 2 livelli) non sono supportati; trovato %d livello" -msgstr[1] "puntatori a più livelli (più di 2 livelli) non sono supportati; trovati %d livelli" +msgstr[0] "puntatori a più livelli (più di 2) non sono supportati; trovato %d livello" +msgstr[1] "puntatori a più livelli (più di 2) non sono supportati; trovati %d livelli" -#: variable.c:529 +#: variable.c:533 msgid "pointer to pointer is not supported for this data type" -msgstr "puntatore a puntatore non è supportato per questo tipo di dato" +msgstr "il puntatore a puntatore non è supportato per questo tipo di dato" -#: variable.c:549 +#: variable.c:553 msgid "multidimensional arrays for structures are not supported" msgstr "gli array multidimensionali per strutture non sono supportati" - diff --git a/src/interfaces/ecpg/preproc/po/ja.po b/src/interfaces/ecpg/preproc/po/ja.po index 5b6134b247..911619cd2c 100644 --- a/src/interfaces/ecpg/preproc/po/ja.po +++ b/src/interfaces/ecpg/preproc/po/ja.po @@ -11,6 +11,7 @@ msgstr "" "PO-Revision-Date: 2010-07-21 18:37+0900\n" "Last-Translator: HOTTA Michihide \n" "Language-Team: jpug-doc \n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/interfaces/ecpg/preproc/po/ko.po b/src/interfaces/ecpg/preproc/po/ko.po index b096d7205d..72ae808ad1 100644 --- a/src/interfaces/ecpg/preproc/po/ko.po +++ b/src/interfaces/ecpg/preproc/po/ko.po @@ -10,6 +10,7 @@ msgstr "" "PO-Revision-Date: 2010-09-09 17:00+0000\n" "Last-Translator: EnterpriseDB translation team \n" "Language-Team: EnterpriseDB translation team \n" +"Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/interfaces/ecpg/preproc/po/pl.po b/src/interfaces/ecpg/preproc/po/pl.po new file mode 100644 index 0000000000..b42f1312c0 --- /dev/null +++ b/src/interfaces/ecpg/preproc/po/pl.po @@ -0,0 +1,623 @@ +# Polish message translation file for ecpg +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# +# Begina Felicysym , 2011. +msgid "" +msgstr "" +"Project-Id-Version: ecpg (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-09-29 22:57+0000\n" +"PO-Revision-Date: 2011-09-30 09:51-0300\n" +"Last-Translator: Begina Felicysym \n" +"Language-Team: Begina Felicysym\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1-beta1\n" + +#: descriptor.c:64 +#, c-format +msgid "variable \"%s\" must have a numeric type" +msgstr "zmienna \"%s\" musi mieć typ numeryczny" + +#: descriptor.c:124 descriptor.c:146 +#, c-format +msgid "descriptor \"%s\" does not exist" +msgstr "deskryptor \"%s\" nie istnieje" + +#: descriptor.c:161 descriptor.c:210 +#, c-format +msgid "descriptor header item \"%d\" does not exist" +msgstr "element nagłówka deskryptora \"%d\" nie istnieje" + +#: descriptor.c:182 +msgid "nullable is always 1" +msgstr "nullable jest zawsze 1" + +#: descriptor.c:185 +msgid "key_member is always 0" +msgstr "key_member jest zawsze 0" + +#: descriptor.c:277 +#, c-format +msgid "descriptor item \"%s\" is not implemented" +msgstr "element deskryptora \"%s\" nie jest zaimplementowany" + +#: descriptor.c:287 +#, c-format +msgid "descriptor item \"%s\" cannot be set" +msgstr "element deskryptora \"%s\" nie może zostać ustawiony" + +#: ecpg.c:35 +#, c-format +msgid "" +"%s is the PostgreSQL embedded SQL preprocessor for C programs.\n" +"\n" +msgstr "" +"%s jest osadzonym w PostgreSQL preprocesorem SQL dla programów C.\n" +"\n" + +#: ecpg.c:37 +#, c-format +msgid "" +"Usage:\n" +" %s [OPTION]... FILE...\n" +"\n" +msgstr "" +"Sposób użycia:\n" +" %s [OPCJE]... PLIK...\n" +"\n" + +#: ecpg.c:40 +#, c-format +msgid "Options:\n" +msgstr "Opcje:\n" + +#: ecpg.c:41 +#, c-format +msgid "" +" -c automatically generate C code from embedded SQL code;\n" +" this affects EXEC SQL TYPE\n" +msgstr "" +" -c automatycznie generuje kod w C z osadzonego kodu SQL;\n" +" dotyczy to EXEC SQL TYPE\n" + +#: ecpg.c:43 +#, c-format +msgid "" +" -C MODE set compatibility mode; MODE can be one of\n" +" \"INFORMIX\", \"INFORMIX_SE\"\n" +msgstr "" +" -C TRYB ustala tryb kompatybilności; TRYB może być jednym z\n" +" \"INFORMIX\", \"INFORMIX_SE\"\n" + +#: ecpg.c:46 +#, c-format +msgid " -d generate parser debug output\n" +msgstr " -d generuje wyjście debugowania parsera\n" + +#: ecpg.c:48 +#, c-format +msgid " -D SYMBOL define SYMBOL\n" +msgstr " -D SYMBOL definiuje SYMBOL\n" + +#: ecpg.c:49 +#, c-format +msgid "" +" -h parse a header file, this option includes option \"-c\"\n" +msgstr "" +" -h parsuje plik nagłówkowy, opcja ta zawiera opcję \"-c\"\n" + +#: ecpg.c:50 +#, c-format +msgid " -i parse system include files as well\n" +msgstr " -i parsuje również systemowe pliki nagłówkowe\n" + +#: ecpg.c:51 +#, c-format +msgid " -I DIRECTORY search DIRECTORY for include files\n" +msgstr " -I FOLDER przeszukuje FOLDER w poszukiwaniu plików nagłówkowych\n" + +#: ecpg.c:52 +#, c-format +msgid " -o OUTFILE write result to OUTFILE\n" +msgstr " -o PLIKOUT zapisuje wynik do PLIKOUT\n" + +#: ecpg.c:53 +#, c-format +msgid "" +" -r OPTION specify run-time behavior; OPTION can be:\n" +" \"no_indicator\", \"prepare\", \"questionmarks\"\n" +msgstr "" +" -r OPCJA określa zachowanie uruchomienia; OPTCJA może być:\n" +" \"no_indicator\", \"prepare\", \"questionmarks\"\n" + +#: ecpg.c:55 +#, c-format +msgid " --regression run in regression testing mode\n" +msgstr " --regression wykonanie w trybie testów regresyjnych\n" + +#: ecpg.c:56 +#, c-format +msgid " -t turn on autocommit of transactions\n" +msgstr " -t włącza automatyczne zatwierdzanie transakcji\n" + +#: ecpg.c:57 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help pokazuje ten ekran pomocy i kończy\n" + +#: ecpg.c:58 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version wypisuje informacje o wersji i kończy\n" + +#: ecpg.c:59 +#, c-format +msgid "" +"\n" +"If no output file is specified, the name is formed by adding .c to the\n" +"input file name, after stripping off .pgc if present.\n" +msgstr "" +"\n" +"Jeżeli nie wskazano pliku wyjścia, nazwa jest tworzona przez dodanie .c\n" +"do nazwy pliku wejścia, po usunięciu .pgc jeśli obecne.\n" + +#: ecpg.c:61 +#, c-format +msgid "" +"\n" +"Report bugs to .\n" +msgstr "" +"\n" +"Błędy proszę przesyłać na adres .\n" + +#: ecpg.c:182 ecpg.c:333 ecpg.c:343 +#, c-format +msgid "%s: could not open file \"%s\": %s\n" +msgstr "%s: nie można otworzyć pliku \"%s\": %s\n" + +#: ecpg.c:221 ecpg.c:234 ecpg.c:250 ecpg.c:275 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Spróbuj \"%s --help\" aby uzyskać więcej informacji.\n" + +#: ecpg.c:245 +#, c-format +msgid "%s: parser debug support (-d) not available\n" +msgstr "%s: wsparcie debugu analizatora (-d) niedostępne\n" + +#: ecpg.c:263 +#, c-format +msgid "%s, the PostgreSQL embedded C preprocessor, version %d.%d.%d\n" +msgstr "%s, preprocesor C osadzony w PostgreSQL, wersja %d.%d.%d\n" + +#: ecpg.c:265 +#, c-format +msgid "EXEC SQL INCLUDE ... search starts here:\n" +msgstr "EXEC SQL INCLUDE ... wyszukiwanie zaczyna się tutaj:\n" + +#: ecpg.c:268 +#, c-format +msgid "end of search list\n" +msgstr "koniec listy wyszukiwania\n" + +#: ecpg.c:274 +#, c-format +msgid "%s: no input files specified\n" +msgstr "%s: nie wskazano pliku wejściowego\n" + +#: ecpg.c:466 +#, c-format +msgid "cursor \"%s\" has been declared but not opened" +msgstr "kursor \"%s\" został zadeklarowany, ale nie otwarty" + +#: ecpg.c:479 preproc.y:109 +#, c-format +msgid "could not remove output file \"%s\"\n" +msgstr "nie można usunąć pliku wyjścia \"%s\"\n" + +#: pgc.l:402 +msgid "unterminated /* comment" +msgstr "nie zakończony komentarz /*" + +#: pgc.l:415 +msgid "invalid bit string literal" +msgstr "nieprawidłowa stała łańcucha bitów" + +#: pgc.l:424 +msgid "unterminated bit string literal" +msgstr "niezakończona stała łańcucha bitów" + +#: pgc.l:440 +msgid "unterminated hexadecimal string literal" +msgstr "niezakończona stała łańcucha szesnastkowego" + +#: pgc.l:518 +msgid "unterminated quoted string" +msgstr "niezakończona stała łańcuchowa" + +#: pgc.l:573 pgc.l:586 +msgid "zero-length delimited identifier" +msgstr "ograniczony identyfikator o długości zero" + +#: pgc.l:594 +msgid "unterminated quoted identifier" +msgstr "niezakończony łańcuch identyfikatora" + +#: pgc.l:940 +msgid "missing identifier in EXEC SQL UNDEF command" +msgstr "brakujący identyfikator w poleceniu EXEC SQL UNDEF" + +#: pgc.l:986 pgc.l:1000 +msgid "missing matching \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" +msgstr "brak pasującego \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" + +#: pgc.l:989 pgc.l:1002 pgc.l:1178 +msgid "missing \"EXEC SQL ENDIF;\"" +msgstr "brak \"EXEC SQL ENDIF;\"" + +#: pgc.l:1018 pgc.l:1037 +msgid "more than one EXEC SQL ELSE" +msgstr "więcej niż jeden EXEC SQL ELSE" + +#: pgc.l:1059 pgc.l:1073 +msgid "unmatched EXEC SQL ENDIF" +msgstr "niedopasowany EXEC SQL ENDIF" + +#: pgc.l:1093 +msgid "too many nested EXEC SQL IFDEF conditions" +msgstr "zbyt wiele zagłębień warunków EXEC SQL IFDEF" + +#: pgc.l:1126 +msgid "missing identifier in EXEC SQL IFDEF command" +msgstr "brakujący identyfikator w poleceniu EXEC SQL IFDEF" + +#: pgc.l:1135 +msgid "missing identifier in EXEC SQL DEFINE command" +msgstr "brakujący identyfikator w poleceniu EXEC SQL DEFINE" + +#: pgc.l:1168 +msgid "syntax error in EXEC SQL INCLUDE command" +msgstr "błąd składni w poleceniu EXEC SQL INCLUDE" + +#: pgc.l:1217 +msgid "" +"internal error: unreachable state; please report this to " +msgstr "" +"błąd wewnętrzny: nieosiągalny stan; proszę przesłać go na adres " + +#: pgc.l:1342 +#, c-format +msgid "Error: include path \"%s/%s\" is too long on line %d, skipping\n" +msgstr "" +"Błąd: załączona ścieżka \"%s/%s\" jest zbyt długa w linii %d, pominięto\n" + +#: pgc.l:1364 +#, c-format +msgid "could not open include file \"%s\" on line %d" +msgstr "nie można otworzyć załączonego pliku \"%s\" w linii %d" + +#: preproc.y:31 +msgid "syntax error" +msgstr "błąd składni" + +#: preproc.y:81 +#, c-format +msgid "WARNING: " +msgstr "OSTRZEŻENIE: " + +#: preproc.y:85 +#, c-format +msgid "ERROR: " +msgstr "BŁĄD: " + +#: preproc.y:391 +#, c-format +msgid "cursor \"%s\" does not exist" +msgstr "kursor \"%s\" nie istnieje" + +#: preproc.y:419 +msgid "initializer not allowed in type definition" +msgstr "inicjator niedozwolony w definicji typu" + +#: preproc.y:421 +msgid "type name \"string\" is reserved in Informix mode" +msgstr "nazwa typu \"string\" jest zarezerwowana w trybie Informix" + +#: preproc.y:428 preproc.y:13011 +#, c-format +msgid "type \"%s\" is already defined" +msgstr "typ \"%s\" już istnieje" + +#: preproc.y:452 preproc.y:13651 preproc.y:13972 variable.c:610 +msgid "multidimensional arrays for simple data types are not supported" +msgstr "wielowymiarowe tablice dla prostych typów danych nie są wspierane" + +#: preproc.y:1425 +msgid "AT option not allowed in CLOSE DATABASE statement" +msgstr "opcja AT niedozwolona w wyrażeniu CLOSE DATABASE" + +#: preproc.y:1495 preproc.y:1639 +msgid "AT option not allowed in DEALLOCATE statement" +msgstr "opcja AT niedozwolona w wyrażeniu DEALLOCATE" + +#: preproc.y:1625 +msgid "AT option not allowed in CONNECT statement" +msgstr "opcja AT niedozwolona w wyrażeniu CONNECT" + +#: preproc.y:1661 +msgid "AT option not allowed in DISCONNECT statement" +msgstr "opcja AT niedozwolona w wyrażeniu DISCONNECT" + +#: preproc.y:1716 +msgid "AT option not allowed in SET CONNECTION statement" +msgstr "opcja AT niedozwolona w wyrażeniu SET CONNECTION" + +#: preproc.y:1738 +msgid "AT option not allowed in TYPE statement" +msgstr "opcja AT niedozwolona w wyrażeniu TYPE" + +#: preproc.y:1747 +msgid "AT option not allowed in VAR statement" +msgstr "opcja AT niedozwolona w wyrażeniu VAR" + +#: preproc.y:1754 +msgid "AT option not allowed in WHENEVER statement" +msgstr "opcja AT niedozwolona w wyrażeniu WHENEVER" + +#: preproc.y:2100 preproc.y:3338 preproc.y:4526 preproc.y:4535 preproc.y:4816 +#: preproc.y:7103 preproc.y:7108 preproc.y:7113 preproc.y:9447 preproc.y:9990 +msgid "unsupported feature will be passed to server" +msgstr "niewspierana cecha zostanie przekazana na serwer" + +#: preproc.y:2326 +msgid "SHOW ALL is not implemented" +msgstr "SHOW ALL nie jest zaimplementowane" + +#: preproc.y:2749 preproc.y:2760 +msgid "COPY TO STDIN is not possible" +msgstr "COPY TO STDIN nie jest możliwe" + +#: preproc.y:2751 +msgid "COPY FROM STDOUT is not possible" +msgstr "COPY FROM STDOUT nie jest możliwe" + +#: preproc.y:2753 +msgid "COPY FROM STDIN is not implemented" +msgstr "COPY FROM STDIN nie zostało zaimplementowane" + +#: preproc.y:7909 preproc.y:12600 +#, c-format +msgid "using variable \"%s\" in different declare statements is not supported" +msgstr "" +"użycie zmiennej \"%s\" w innych wyrażeniach deklaracji nie jest wspierane" + +#: preproc.y:7911 preproc.y:12602 +#, c-format +msgid "cursor \"%s\" is already defined" +msgstr "kursor \"%s\" już istnieje" + +#: preproc.y:8329 +msgid "no longer supported LIMIT #,# syntax passed to server" +msgstr "już nie wspierana składnia LIMIT #,# przesłana na serwer" + +#: preproc.y:8564 +msgid "subquery in FROM must have an alias" +msgstr "podzapytanie z FROM musi mieć alias" + +#: preproc.y:12332 +msgid "CREATE TABLE AS cannot specify INTO" +msgstr "CREATE TABLE AS nie może zawierać INTO" + +#: preproc.y:12369 +#, c-format +msgid "expected \"@\", found \"%s\"" +msgstr "oczekiwano \"@\", znaleziono \"%s\"" + +#: preproc.y:12381 +msgid "" +"only protocols \"tcp\" and \"unix\" and database type \"postgresql\" are " +"supported" +msgstr "" +"tylko protokoły \"tcp\" i \"unix\" oraz typ bazy danych \"postgresql\" są " +"wspierane" + +#: preproc.y:12384 +#, c-format +msgid "expected \"://\", found \"%s\"" +msgstr "oczekiwano \"://\", znaleziono \"%s\"" + +#: preproc.y:12389 +#, c-format +msgid "Unix-domain sockets only work on \"localhost\" but not on \"%s\"" +msgstr "" +"Gniazda dziedziny Uniksa działają tylko na \"localhost\" a nie na \"%s\"" + +#: preproc.y:12415 +#, c-format +msgid "expected \"postgresql\", found \"%s\"" +msgstr "oczekiwano \"postgresql\", znaleziono \"%s\"" + +#: preproc.y:12418 +#, c-format +msgid "invalid connection type: %s" +msgstr "niepoprawny typ połączenia: %s" + +#: preproc.y:12427 +#, c-format +msgid "expected \"@\" or \"://\", found \"%s\"" +msgstr "oczekiwano \"@\" lub \"://\", znaleziono \"%s\"" + +#: preproc.y:12502 preproc.y:12520 +msgid "invalid data type" +msgstr "niepoprawny typ danych" + +#: preproc.y:12531 preproc.y:12546 +msgid "incomplete statement" +msgstr "niepełne wyrażenie" + +#: preproc.y:12534 preproc.y:12549 +#, c-format +msgid "unrecognized token \"%s\"" +msgstr "niezrozumiały token \"%s\"" + +#: preproc.y:12822 +msgid "only data types numeric and decimal have precision/scale argument" +msgstr "tylko typy danych numeric i decimal mają argument precyzji/skali" + +#: preproc.y:12834 +msgid "interval specification not allowed here" +msgstr "specyfikacja interwału niedozwolona tutaj" + +#: preproc.y:12986 preproc.y:13038 +msgid "too many levels in nested structure/union definition" +msgstr "zbyt wiele poziomów w zagnieżdżonej definicji structure/union" + +#: preproc.y:13169 +msgid "pointers to varchar are not implemented" +msgstr "wskazania na varchar nie są zaimplementowane" + +#: preproc.y:13356 preproc.y:13381 +msgid "using unsupported DESCRIBE statement" +msgstr "użycie niewspieranego wyrażenia DESCRIBE" + +#: preproc.y:13618 +msgid "initializer not allowed in EXEC SQL VAR command" +msgstr "inicjator niedopuszczalny w poleceniu EXEC SQL VAR" + +#: preproc.y:13930 +msgid "arrays of indicators are not allowed on input" +msgstr "tabele wskazań nie są dozwolone w wejściu" + +#. translator: %s is typically the translation of "syntax error" +#: preproc.y:14184 +#, c-format +msgid "%s at or near \"%s\"" +msgstr "%s w lub pobliżu \"%s\"" + +#: type.c:18 type.c:30 +msgid "out of memory" +msgstr "brak pamięci" + +#: type.c:212 type.c:594 +#, c-format +msgid "unrecognized variable type code %d" +msgstr "niezrozumiały kod typu zmiennej %d" + +#: type.c:261 +#, c-format +msgid "variable \"%s\" is hidden by a local variable of a different type" +msgstr "zmienna \"%s\" została przykryta przez zmienną lokalną innego typu" + +#: type.c:263 +#, c-format +msgid "variable \"%s\" is hidden by a local variable" +msgstr "zmienna \"%s\" została przykryta przez zmienną lokalną" + +#: type.c:275 +#, c-format +msgid "" +"indicator variable \"%s\" is hidden by a local variable of a different type" +msgstr "" +"zmienna wskaźnikowa \"%s\" została przykryta przez zmienną lokalną innego " +"typu" + +#: type.c:277 +#, c-format +msgid "indicator variable \"%s\" is hidden by a local variable" +msgstr "zmienna wskaźnikowa \"%s\" została przykryta przez zmienną lokalną" + +#: type.c:285 +msgid "indicator for array/pointer has to be array/pointer" +msgstr "wskaźnik do array/pointer musi być array/pointer" + +#: type.c:289 +msgid "nested arrays are not supported (except strings)" +msgstr "tabele zagnieżdżone nie są wspierane (poza ciągami znaków)" + +#: type.c:322 +msgid "indicator for struct has to be a struct" +msgstr "wskaźnik do struct musi być struct" + +#: type.c:331 type.c:339 type.c:347 +msgid "indicator for simple data type has to be simple" +msgstr "wskaźnik do prostego typu danych musi być prosty " + +#: type.c:653 +#, c-format +msgid "unrecognized descriptor item code %d" +msgstr "niezrozumiały kod deskryptora elementu %d " + +#: variable.c:89 variable.c:112 +#, c-format +msgid "incorrectly formed variable \"%s\"" +msgstr "niepoprawnie utworzona zmienna \"%s\"" + +#: variable.c:135 +#, c-format +msgid "variable \"%s\" is not a pointer" +msgstr "zmienna \"%s\" nie jest wskaźnikiem" + +#: variable.c:138 variable.c:163 +#, c-format +msgid "variable \"%s\" is not a pointer to a structure or a union" +msgstr "zmienna \"%s\" nie jest wskazaniem na structure ani union" + +#: variable.c:150 +#, c-format +msgid "variable \"%s\" is neither a structure nor a union" +msgstr "zmienna \"%s\" nie jest ani structure ani union" + +#: variable.c:160 +#, c-format +msgid "variable \"%s\" is not an array" +msgstr "zmienna \"%s\" nie jest tablicą" + +#: variable.c:229 variable.c:251 +#, c-format +msgid "variable \"%s\" is not declared" +msgstr "zmienna \"%s\" nie została zadeklarowana" + +#: variable.c:484 +msgid "indicator variable must have an integer type" +msgstr "zmienna wskaźnikowa musi mieć typ integer" + +#: variable.c:496 +#, c-format +msgid "unrecognized data type name \"%s\"" +msgstr "niezrozumiała nazwa typu danych \"%s\"" + +#: variable.c:507 variable.c:515 variable.c:532 variable.c:535 +msgid "multidimensional arrays are not supported" +msgstr "wielowymiarowe tablice nie są wspierane" + +#: variable.c:524 +#, c-format +msgid "" +"multilevel pointers (more than 2 levels) are not supported; found %d level" +msgid_plural "" +"multilevel pointers (more than 2 levels) are not supported; found %d levels" +msgstr[0] "" +"wielopoziomowe wskaźniki (więcej niż 2 poziomy) nie są wspierane; znaleziono " +"%d poziom" +msgstr[1] "" +"wielopoziomowe wskaźniki (więcej niż 2 poziomy) nie są wspierane; znaleziono " +"%d poziomy" +msgstr[2] "" +"wielopoziomowe wskaźniki (więcej niż 2 poziomy) nie są wspierane; znaleziono " +"%d poziomów" + +#: variable.c:529 +msgid "pointer to pointer is not supported for this data type" +msgstr "wskazanie na wskaźnik nie jest wspierane dla tego typu danych" + +#: variable.c:549 +msgid "multidimensional arrays for structures are not supported" +msgstr "wielowymiarowe tablice dla struktur nie są wspierane" diff --git a/src/interfaces/ecpg/preproc/po/pt_BR.po b/src/interfaces/ecpg/preproc/po/pt_BR.po index e54cb21b2a..5b3a5c6954 100644 --- a/src/interfaces/ecpg/preproc/po/pt_BR.po +++ b/src/interfaces/ecpg/preproc/po/pt_BR.po @@ -2,11 +2,11 @@ # Copyright (C) 2009 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # Fernando Ike de Oliveira , 2009. -# Euler Taveira de Oliveira , 2010. +# Euler Taveira de Oliveira , 2010-2011. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" "POT-Creation-Date: 2010-09-16 11:50-0300\n" "PO-Revision-Date: 2009-02-09 12:59-0200\n" diff --git a/src/interfaces/ecpg/preproc/po/ru.po b/src/interfaces/ecpg/preproc/po/ru.po new file mode 100644 index 0000000000..0c54631add --- /dev/null +++ b/src/interfaces/ecpg/preproc/po/ru.po @@ -0,0 +1,622 @@ +# Russian message translation file for ecpg +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# Alexander Lakhin , 2012. +# +# ChangeLog: +# - April 2, 2012: Bug fixes. Alexander Lakhin . +# - February 22, 2012: Complete translation for 9.0, Alexander Lakhin . +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 9.0\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2012-07-10 22:22+0000\n" +"PO-Revision-Date: 2012-04-02 19:16+0400\n" +"Last-Translator: Alexander Lakhin \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 1.4\n" + +#: descriptor.c:64 +#, c-format +msgid "variable \"%s\" must have a numeric type" +msgstr "переменная \"%s\" должна иметь числовой тип" + +#: descriptor.c:124 descriptor.c:146 +#, c-format +msgid "descriptor \"%s\" does not exist" +msgstr "дескриптор \"%s\" не существует" + +#: descriptor.c:161 descriptor.c:210 +#, c-format +msgid "descriptor header item \"%d\" does not exist" +msgstr "заголовок дескриптора не содержит элемент \"%d\"" + +#: descriptor.c:182 +msgid "nullable is always 1" +msgstr "NULLABLE всегда равно 1" + +#: descriptor.c:185 +msgid "key_member is always 0" +msgstr "KEY_MEMBER всегда равно 0" + +#: descriptor.c:277 +#, c-format +msgid "descriptor item \"%s\" is not implemented" +msgstr "поле \"%s\" в дескрипторе не реализовано" + +#: descriptor.c:287 +#, c-format +msgid "descriptor item \"%s\" cannot be set" +msgstr "установить поле \"%s\" в дескрипторе нельзя" + +#: ecpg.c:35 +#, c-format +msgid "" +"%s is the PostgreSQL embedded SQL preprocessor for C programs.\n" +"\n" +msgstr "" +"%s - препроцессор SQL-вставок в программах на C для PostgreSQL.\n" +"\n" + +#: ecpg.c:37 +#, c-format +msgid "" +"Usage:\n" +" %s [OPTION]... FILE...\n" +"\n" +msgstr "" +"Использование:\n" +" %s [ПАРАМЕТР]... ФАЙЛ...\n" +"\n" + +#: ecpg.c:40 +#, c-format +msgid "Options:\n" +msgstr "Параметры:\n" + +#: ecpg.c:41 +#, c-format +msgid "" +" -c automatically generate C code from embedded SQL code;\n" +" this affects EXEC SQL TYPE\n" +msgstr "" +" -c автоматически генерировать код C из внедрённого SQL-кода;\n" +" (это касается EXEC SQL TYPE)\n" + +#: ecpg.c:43 +#, c-format +msgid "" +" -C MODE set compatibility mode; MODE can be one of\n" +" \"INFORMIX\", \"INFORMIX_SE\"\n" +msgstr "" +" -C РЕЖИМ установить режим совместимости; допустимый РЕЖИМ:\n" +" \"INFORMIX\" или \"INFORMIX_SE\"\n" + +#: ecpg.c:46 +#, c-format +msgid " -d generate parser debug output\n" +msgstr " -d генерировать отладочные сообщения при разборе\n" + +#: ecpg.c:48 +#, c-format +msgid " -D SYMBOL define SYMBOL\n" +msgstr " -D СИМВОЛ определить (define) СИМВОЛ\n" + +#: ecpg.c:49 +#, c-format +msgid "" +" -h parse a header file, this option includes option \"-c\"\n" +msgstr " -h разобрать файл заголовка (включает параметр \"-c\")\n" + +#: ecpg.c:50 +#, c-format +msgid " -i parse system include files as well\n" +msgstr " -i разобрать также системные включаемые файлы\n" + +#: ecpg.c:51 +#, c-format +msgid " -I DIRECTORY search DIRECTORY for include files\n" +msgstr " -I КАТАЛОГ искать включаемые файлы в указанном каталоге\n" + +#: ecpg.c:52 +#, c-format +msgid " -o OUTFILE write result to OUTFILE\n" +msgstr " -o ФАЙЛ записать результат в ФАЙЛ\n" + +#: ecpg.c:53 +#, c-format +msgid "" +" -r OPTION specify run-time behavior; OPTION can be:\n" +" \"no_indicator\", \"prepare\", \"questionmarks\"\n" +msgstr "" +" -r ПАРАМЕТР определить режим выполнения; допустимый ПАРАМЕТР:\n" +" \"no_indicator\", \"prepare\" или \"questionmarks\"\n" + +#: ecpg.c:55 +#, c-format +msgid " --regression run in regression testing mode\n" +msgstr " --regression запустить в режиме тестирования регрессии\n" + +#: ecpg.c:56 +#, c-format +msgid " -t turn on autocommit of transactions\n" +msgstr " -t включить автофиксацию транзакций\n" + +#: ecpg.c:57 +#, c-format +msgid " --help show this help, then exit\n" +msgstr " --help показать эту справку и выйти\n" + +#: ecpg.c:58 +#, c-format +msgid " --version output version information, then exit\n" +msgstr " --version вывести версию и выйти\n" + +#: ecpg.c:59 +#, c-format +msgid "" +"\n" +"If no output file is specified, the name is formed by adding .c to the\n" +"input file name, after stripping off .pgc if present.\n" +msgstr "" +"\n" +"Если выходной файл не указан, к имени входного файла без расширения .pgc\n" +"добавляется .c.\n" + +#: ecpg.c:61 +#, c-format +msgid "" +"\n" +"Report bugs to .\n" +msgstr "" +"\n" +"Об ошибках сообщайте по адресу .\n" + +#: ecpg.c:182 ecpg.c:333 ecpg.c:343 +#, c-format +msgid "%s: could not open file \"%s\": %s\n" +msgstr "%s: не удалось открыть файл \"%s\": %s\n" + +#: ecpg.c:221 ecpg.c:234 ecpg.c:250 ecpg.c:275 +#, c-format +msgid "Try \"%s --help\" for more information.\n" +msgstr "Для дополнительной информации попробуйте \"%s --help\".\n" + +#: ecpg.c:245 +#, c-format +msgid "%s: parser debug support (-d) not available\n" +msgstr "%s: отладочные сообщения при разборе (-d) не поддерживаются\n" + +#: ecpg.c:263 +#, c-format +msgid "%s, the PostgreSQL embedded C preprocessor, version %d.%d.%d\n" +msgstr "" +"%s, препроцессор внедрённого в С языка СУБД PostgreSQL, версия %d.%d.%d\n" + +#: ecpg.c:265 +#, c-format +msgid "EXEC SQL INCLUDE ... search starts here:\n" +msgstr "поиск файлов для EXEC SQL INCLUDE ... начинается в каталогах:\n" + +#: ecpg.c:268 +#, c-format +msgid "end of search list\n" +msgstr "конец списка поиска\n" + +#: ecpg.c:274 +#, c-format +msgid "%s: no input files specified\n" +msgstr "%s: нет входных файлов\n" + +#: ecpg.c:466 +#, c-format +msgid "cursor \"%s\" has been declared but not opened" +msgstr "курсор \"%s\" был объявлен, но не открыт" + +#: ecpg.c:479 preproc.y:109 +#, c-format +msgid "could not remove output file \"%s\"\n" +msgstr "ошибка при удалении выходного файла \"%s\"\n" + +#: pgc.l:402 +msgid "unterminated /* comment" +msgstr "незавершённый комментарий /*" + +#: pgc.l:415 +msgid "invalid bit string literal" +msgstr "неверная битовая строка" + +#: pgc.l:424 +msgid "unterminated bit string literal" +msgstr "оборванная битовая строка" + +#: pgc.l:440 +msgid "unterminated hexadecimal string literal" +msgstr "оборванная шестнадцатеричная строка" + +#: pgc.l:518 +msgid "unterminated quoted string" +msgstr "незавершённая строка в кавычках" + +#: pgc.l:573 pgc.l:586 +msgid "zero-length delimited identifier" +msgstr "пустой идентификатор в кавычках" + +#: pgc.l:594 +msgid "unterminated quoted identifier" +msgstr "незавершённый идентификатор в кавычках" + +#: pgc.l:940 +msgid "missing identifier in EXEC SQL UNDEF command" +msgstr "в команде EXEC SQL UNDEF отсутствует идентификатор" + +#: pgc.l:986 pgc.l:1000 +msgid "missing matching \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" +msgstr "нет соответствующего \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" + +#: pgc.l:989 pgc.l:1002 pgc.l:1178 +msgid "missing \"EXEC SQL ENDIF;\"" +msgstr "отсутствует \"EXEC SQL ENDIF;\"" + +#: pgc.l:1018 pgc.l:1037 +msgid "more than one EXEC SQL ELSE" +msgstr "неоднократная команда EXEC SQL ELSE" + +#: pgc.l:1059 pgc.l:1073 +msgid "unmatched EXEC SQL ENDIF" +msgstr "непарная команда EXEC SQL ENDIF" + +#: pgc.l:1093 +msgid "too many nested EXEC SQL IFDEF conditions" +msgstr "слишком много вложенных условий EXEC SQL IFDEF" + +#: pgc.l:1126 +msgid "missing identifier in EXEC SQL IFDEF command" +msgstr "в команде EXEC SQL IFDEF отсутствует идентификатор" + +#: pgc.l:1135 +msgid "missing identifier in EXEC SQL DEFINE command" +msgstr "в команде EXEC SQL DEFINE отсутствует идентификатор" + +#: pgc.l:1168 +msgid "syntax error in EXEC SQL INCLUDE command" +msgstr "ошибка синтаксиса в команде EXEC SQL INCLUDE" + +#: pgc.l:1217 +msgid "" +"internal error: unreachable state; please report this to " +msgstr "" +"внутренняя ошибка: недостижимое состояние; пожалуйста, сообщите в " + +#: pgc.l:1342 +#, c-format +msgid "Error: include path \"%s/%s\" is too long on line %d, skipping\n" +msgstr "" +"Ошибка: путь включаемых файлов \"%s/%s\" в строке %d слишком длинный, " +"пропускается\n" + +#: pgc.l:1364 +#, c-format +msgid "could not open include file \"%s\" on line %d" +msgstr "не удалось открыть включаемый файл \"%s\" (строка %d)" + +#: preproc.y:31 +msgid "syntax error" +msgstr "ошибка синтаксиса" + +#: preproc.y:81 +#, c-format +msgid "WARNING: " +msgstr "ПРЕДУПРЕЖДЕНИЕ: " + +#: preproc.y:85 +#, c-format +msgid "ERROR: " +msgstr "ОШИБКА: " + +#: preproc.y:391 +#, c-format +msgid "cursor \"%s\" does not exist" +msgstr "курсор \"%s\" не существует" + +#: preproc.y:419 +msgid "initializer not allowed in type definition" +msgstr "определение типа не может включать инициализатор" + +#: preproc.y:421 +msgid "type name \"string\" is reserved in Informix mode" +msgstr "имя типа \"string\" в режиме Informix зарезервировано" + +#: preproc.y:428 preproc.y:13006 +#, c-format +msgid "type \"%s\" is already defined" +msgstr "тип \"%s\" уже определён" + +#: preproc.y:452 preproc.y:13646 preproc.y:13967 variable.c:610 +msgid "multidimensional arrays for simple data types are not supported" +msgstr "многомерные массивы с простыми типами данных не поддерживаются" + +#: preproc.y:1425 +msgid "AT option not allowed in CLOSE DATABASE statement" +msgstr "оператор CLOSE DATABASE с параметром AT не поддерживается" + +#: preproc.y:1622 +msgid "AT option not allowed in CONNECT statement" +msgstr "оператор CONNECT с параметром AT не поддерживается" + +#: preproc.y:1656 +msgid "AT option not allowed in DISCONNECT statement" +msgstr "оператор DISCONNECT с параметром AT не поддерживается" + +#: preproc.y:1711 +msgid "AT option not allowed in SET CONNECTION statement" +msgstr "оператор SET CONNECTION с параметром AT не поддерживается" + +#: preproc.y:1733 +msgid "AT option not allowed in TYPE statement" +msgstr "оператор TYPE с параметром AT не поддерживается" + +#: preproc.y:1742 +msgid "AT option not allowed in VAR statement" +msgstr "оператор VAR с параметром AT не поддерживается" + +#: preproc.y:1749 +msgid "AT option not allowed in WHENEVER statement" +msgstr "оператор WHENEVER с параметром AT не поддерживается" + +#: preproc.y:2095 preproc.y:3333 preproc.y:4521 preproc.y:4530 preproc.y:4811 +#: preproc.y:7098 preproc.y:7103 preproc.y:7108 preproc.y:9442 preproc.y:9985 +msgid "unsupported feature will be passed to server" +msgstr "неподдерживаемая функция будет передана серверу" + +#: preproc.y:2321 +msgid "SHOW ALL is not implemented" +msgstr "SHOW ALL не реализовано" + +#: preproc.y:2744 preproc.y:2755 +msgid "COPY TO STDIN is not possible" +msgstr "операция COPY TO STDIN невозможна" + +#: preproc.y:2746 +msgid "COPY FROM STDOUT is not possible" +msgstr "операция COPY FROM STDOUT невозможна" + +#: preproc.y:2748 +msgid "COPY FROM STDIN is not implemented" +msgstr "операция COPY FROM STDIN не реализована" + +#: preproc.y:7904 preproc.y:12595 +#, c-format +msgid "using variable \"%s\" in different declare statements is not supported" +msgstr "" +"использование переменной \"%s\" в разных операторах DECLARE не поддерживается" + +#: preproc.y:7906 preproc.y:12597 +#, c-format +msgid "cursor \"%s\" is already defined" +msgstr "курсор \"%s\" уже определён" + +#: preproc.y:8324 +msgid "no longer supported LIMIT #,# syntax passed to server" +msgstr "не поддерживаемое более предложение LIMIT #,# передано на сервер" + +#: preproc.y:8559 +msgid "subquery in FROM must have an alias" +msgstr "подзапрос во FROM должен иметь псевдоним" + +#: preproc.y:12327 +msgid "CREATE TABLE AS cannot specify INTO" +msgstr "в CREATE TABLE AS нельзя указать INTO" + +#: preproc.y:12364 +#, c-format +msgid "expected \"@\", found \"%s\"" +msgstr "ожидался знак \"@\", но на этом месте \"%s\"" + +#: preproc.y:12376 +msgid "" +"only protocols \"tcp\" and \"unix\" and database type \"postgresql\" are " +"supported" +msgstr "" +"поддерживаются только протоколы \"tcp\" и \"unix\", а тип базы данных - " +"\"postgresql\"" + +#: preproc.y:12379 +#, c-format +msgid "expected \"://\", found \"%s\"" +msgstr "ожидалось \"://\", но на этом месте \"%s\"" + +#: preproc.y:12384 +#, c-format +msgid "Unix-domain sockets only work on \"localhost\" but not on \"%s\"" +msgstr "" +"Доменные сокеты Unix работают только с \"localhost\", но не с адресом \"%s\"" + +#: preproc.y:12410 +#, c-format +msgid "expected \"postgresql\", found \"%s\"" +msgstr "ожидался тип \"postgresql\", но на этом месте \"%s\"" + +#: preproc.y:12413 +#, c-format +msgid "invalid connection type: %s" +msgstr "неверный тип подключения: %s" + +#: preproc.y:12422 +#, c-format +msgid "expected \"@\" or \"://\", found \"%s\"" +msgstr "ожидалось \"@\" или \"://\", но на этом месте \"%s\"" + +#: preproc.y:12497 preproc.y:12515 +msgid "invalid data type" +msgstr "неверный тип данных" + +#: preproc.y:12526 preproc.y:12541 +msgid "incomplete statement" +msgstr "неполный оператор" + +#: preproc.y:12529 preproc.y:12544 +#, c-format +msgid "unrecognized token \"%s\"" +msgstr "нераспознанное ключевое слово \"%s\"" + +#: preproc.y:12817 +msgid "only data types numeric and decimal have precision/scale argument" +msgstr "" +"точность/масштаб можно указать только для типов данных numeric и decimal" + +#: preproc.y:12829 +msgid "interval specification not allowed here" +msgstr "определение интервала здесь не допускается" + +#: preproc.y:12981 preproc.y:13033 +msgid "too many levels in nested structure/union definition" +msgstr "слишком много уровней в определении вложенной структуры/объединения" + +#: preproc.y:13164 +msgid "pointers to varchar are not implemented" +msgstr "указатели на varchar не реализованы" + +#: preproc.y:13351 preproc.y:13376 +msgid "using unsupported DESCRIBE statement" +msgstr "используется неподдерживаемый оператор DESCRIBE" + +#: preproc.y:13613 +msgid "initializer not allowed in EXEC SQL VAR command" +msgstr "команда EXEC SQL VAR не может включать инициализатор" + +#: preproc.y:13925 +msgid "arrays of indicators are not allowed on input" +msgstr "массивы индикаторов на входе недопустимы" + +#. translator: %s is typically the translation of "syntax error" +#: preproc.y:14179 +#, c-format +msgid "%s at or near \"%s\"" +msgstr "%s (примерное положение: \"%s\")" + +#: type.c:18 type.c:30 +msgid "out of memory" +msgstr "нехватка памяти" + +#: type.c:212 type.c:587 +#, c-format +msgid "unrecognized variable type code %d" +msgstr "нераспознанный код типа переменной %d" + +#: type.c:261 +#, c-format +msgid "variable \"%s\" is hidden by a local variable of a different type" +msgstr "переменная \"%s\" скрыта локальной переменной другого типа" + +#: type.c:263 +#, c-format +msgid "variable \"%s\" is hidden by a local variable" +msgstr "переменная \"%s\" скрыта локальной переменной" + +#: type.c:275 +#, c-format +msgid "" +"indicator variable \"%s\" is hidden by a local variable of a different type" +msgstr "переменная-индикатор \"%s\" скрыта локальной переменной другого типа" + +#: type.c:277 +#, c-format +msgid "indicator variable \"%s\" is hidden by a local variable" +msgstr "переменная-индикатор \"%s\" скрыта локальной переменной" + +#: type.c:285 +msgid "indicator for array/pointer has to be array/pointer" +msgstr "индикатор для массива/указателя должен быть массивом/указателем" + +#: type.c:289 +msgid "nested arrays are not supported (except strings)" +msgstr "вложенные массивы не поддерживаются (за исключением строк)" + +#: type.c:322 +msgid "indicator for struct has to be a struct" +msgstr "индикатор структуры должен быть структурой" + +#: type.c:331 type.c:339 type.c:347 +msgid "indicator for simple data type has to be simple" +msgstr "индикатор простого типа должен быть простым" + +#: type.c:646 +#, c-format +msgid "unrecognized descriptor item code %d" +msgstr "нераспознанный код элемента дескриптора %d" + +#: variable.c:89 variable.c:112 +#, c-format +msgid "incorrectly formed variable \"%s\"" +msgstr "неправильно оформленная переменная \"%s\"" + +#: variable.c:135 +#, c-format +msgid "variable \"%s\" is not a pointer" +msgstr "переменная \"%s\" - не указатель" + +#: variable.c:138 variable.c:163 +#, c-format +msgid "variable \"%s\" is not a pointer to a structure or a union" +msgstr "переменная \"%s\" - не указатель на структуру или объединение" + +#: variable.c:150 +#, c-format +msgid "variable \"%s\" is neither a structure nor a union" +msgstr "переменная \"%s\" - не структура и не объединение" + +#: variable.c:160 +#, c-format +msgid "variable \"%s\" is not an array" +msgstr "переменная \"%s\" - не массив" + +#: variable.c:229 variable.c:251 +#, c-format +msgid "variable \"%s\" is not declared" +msgstr "переменная \"%s\" не объявлена" + +#: variable.c:484 +msgid "indicator variable must have an integer type" +msgstr "переменная-индикатор должна быть целочисленной" + +#: variable.c:496 +#, c-format +msgid "unrecognized data type name \"%s\"" +msgstr "нераспознанное имя типа данных \"%s\"" + +#: variable.c:507 variable.c:515 variable.c:532 variable.c:535 +msgid "multidimensional arrays are not supported" +msgstr "многомерные массивы не поддерживаются" + +#: variable.c:524 +#, c-format +msgid "" +"multilevel pointers (more than 2 levels) are not supported; found %d level" +msgid_plural "" +"multilevel pointers (more than 2 levels) are not supported; found %d levels" +msgstr[0] "" +"многоуровневые указатели (больше 2 уровней) не поддерживаются, обнаружен %d " +"уровень" +msgstr[1] "" +"многоуровневые указатели (больше 2 уровней) не поддерживаются, обнаружено %d " +"уровня" +msgstr[2] "" +"многоуровневые указатели (больше 2 уровней) не поддерживаются, обнаружено %d " +"уровней" + +#: variable.c:529 +msgid "pointer to pointer is not supported for this data type" +msgstr "для этого типа данных указатели на указатели не поддерживаются" + +#: variable.c:549 +msgid "multidimensional arrays for structures are not supported" +msgstr "многомерные массивы структур не поддерживаются" diff --git a/src/interfaces/ecpg/preproc/po/tr.po b/src/interfaces/ecpg/preproc/po/tr.po index 0b639bd0be..ced96f047d 100644 --- a/src/interfaces/ecpg/preproc/po/tr.po +++ b/src/interfaces/ecpg/preproc/po/tr.po @@ -11,6 +11,7 @@ msgstr "" "PO-Revision-Date: 2010-09-01 11:20+0200\n" "Last-Translator: Devrim GÜNDÜZ \n" "Language-Team: Turkish \n" +"Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/interfaces/ecpg/preproc/po/zh_CN.po b/src/interfaces/ecpg/preproc/po/zh_CN.po index 5c893f0301..f6a0ea92ab 100644 --- a/src/interfaces/ecpg/preproc/po/zh_CN.po +++ b/src/interfaces/ecpg/preproc/po/zh_CN.po @@ -7,10 +7,11 @@ msgid "" msgstr "" "Project-Id-Version: ecpg (PostgreSQL 9.0)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-10-01 14:42+0000\n" +"POT-Creation-Date: 2013-01-29 13:51+0000\n" "PO-Revision-Date: 2010-10-01 12:43+0800\n" "Last-Translator: Weibin \n" "Language-Team: Chinese (Simplified)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -218,82 +219,82 @@ msgstr "已经声明了游标\"%s\",但是没有打开" msgid "could not remove output file \"%s\"\n" msgstr "无法删除输出文件 \"%s\"\n" -#: pgc.l:401 +#: pgc.l:402 msgid "unterminated /* comment" msgstr "/* 注释没有结束" -#: pgc.l:414 +#: pgc.l:415 msgid "invalid bit string literal" msgstr "无效的bit字符串常量" -#: pgc.l:423 +#: pgc.l:424 msgid "unterminated bit string literal" msgstr "未结束的bit字符串常量" -#: pgc.l:439 +#: pgc.l:440 msgid "unterminated hexadecimal string literal" msgstr "未结束的16进制字符串常量" -#: pgc.l:516 +#: pgc.l:518 msgid "unterminated quoted string" msgstr "未结束的引用字符串" -#: pgc.l:571 pgc.l:584 +#: pgc.l:573 pgc.l:586 msgid "zero-length delimited identifier" msgstr "长度为0的分隔标识符" -#: pgc.l:592 +#: pgc.l:594 msgid "unterminated quoted identifier" msgstr "未结束的引用标识符" -#: pgc.l:938 +#: pgc.l:940 msgid "missing identifier in EXEC SQL UNDEF command" msgstr "在EXEC SQL UNDEF命令中丢失标识符" -#: pgc.l:984 pgc.l:998 +#: pgc.l:986 pgc.l:1000 msgid "missing matching \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" msgstr "丢失匹配 \"EXEC SQL IFDEF\" / \"EXEC SQL IFNDEF\"" -#: pgc.l:987 pgc.l:1000 pgc.l:1176 +#: pgc.l:989 pgc.l:1002 pgc.l:1178 msgid "missing \"EXEC SQL ENDIF;\"" msgstr "\"EXEC SQL ENDIF;\"丢失" -#: pgc.l:1016 pgc.l:1035 +#: pgc.l:1018 pgc.l:1037 msgid "more than one EXEC SQL ELSE" msgstr "多个EXEC SQL ELSE" -#: pgc.l:1057 pgc.l:1071 +#: pgc.l:1059 pgc.l:1073 msgid "unmatched EXEC SQL ENDIF" msgstr "EXEC SQL ENDIF不匹配" -#: pgc.l:1091 +#: pgc.l:1093 msgid "too many nested EXEC SQL IFDEF conditions" msgstr "嵌套EXEC SQL IFDEF条件太多" -#: pgc.l:1124 +#: pgc.l:1126 msgid "missing identifier in EXEC SQL IFDEF command" msgstr "在EXEC SQL IFDEF命令中丢失标识符" -#: pgc.l:1133 +#: pgc.l:1135 msgid "missing identifier in EXEC SQL DEFINE command" msgstr "在EXEC SQL DEFINE命令中丢失标识符" -#: pgc.l:1166 +#: pgc.l:1168 msgid "syntax error in EXEC SQL INCLUDE command" msgstr "在EXEC SQL INCLUDE命令中出现语法错误" -#: pgc.l:1215 +#: pgc.l:1217 msgid "" "internal error: unreachable state; please report this to " msgstr "内部错误:不可到达的状态;请向发送报告" -#: pgc.l:1340 +#: pgc.l:1342 #, c-format msgid "Error: include path \"%s/%s\" is too long on line %d, skipping\n" msgstr "错误:在第%3$d行上包含路径\"%1$s/%2$s\"太长,跳过\n" -#: pgc.l:1362 +#: pgc.l:1364 #, c-format msgid "could not open include file \"%s\" on line %d" msgstr "在第%2$d行无法打开应用文件\"%1$s\"" @@ -312,187 +313,178 @@ msgstr "警告:" msgid "ERROR: " msgstr "错误:" -#: preproc.y:399 +#: preproc.y:391 #, c-format msgid "cursor \"%s\" does not exist" msgstr "游标 \"%s\" 不存在" -#: preproc.y:427 +#: preproc.y:419 msgid "initializer not allowed in type definition" msgstr "在类型定义中不允许进行初始化" -#: preproc.y:429 +#: preproc.y:421 msgid "type name \"string\" is reserved in Informix mode" msgstr "在Informix模式中类型名称\"string\" 是被保留的" -#: preproc.y:436 preproc.y:12413 +#: preproc.y:428 preproc.y:13006 #, c-format msgid "type \"%s\" is already defined" msgstr "已定义类型\"%s\" " -#: preproc.y:460 preproc.y:13053 preproc.y:13374 variable.c:610 +#: preproc.y:452 preproc.y:13646 preproc.y:13967 variable.c:614 msgid "multidimensional arrays for simple data types are not supported" msgstr "不支持针对简单数据类型的多维数组" -#: preproc.y:1392 +#: preproc.y:1425 msgid "AT option not allowed in CLOSE DATABASE statement" msgstr "在CLOSE DATABASE语句中不允许使用AT选项" -#: preproc.y:1458 preproc.y:1600 -msgid "AT option not allowed in DEALLOCATE statement" -msgstr "在DEALLOCATE语句中不允许使用AT选项" - -#: preproc.y:1586 +#: preproc.y:1622 msgid "AT option not allowed in CONNECT statement" msgstr "在CONNECT语句中不允许使用AT选项" -#: preproc.y:1622 +#: preproc.y:1656 msgid "AT option not allowed in DISCONNECT statement" msgstr "在DISCONNECT语句中不允许使用AT选项" -#: preproc.y:1677 +#: preproc.y:1711 msgid "AT option not allowed in SET CONNECTION statement" msgstr "在SET CONNECTION语句中不允许使用AT选项" -#: preproc.y:1699 +#: preproc.y:1733 msgid "AT option not allowed in TYPE statement" msgstr "在TYPE语句中不允许使用AT选项" -#: preproc.y:1708 +#: preproc.y:1742 msgid "AT option not allowed in VAR statement" msgstr "在VAR语句中不允许使用AT选项" -#: preproc.y:1715 +#: preproc.y:1749 msgid "AT option not allowed in WHENEVER statement" msgstr "在WHENEVER语句中不允许使用AT选项" -#: preproc.y:2101 preproc.y:3197 preproc.y:3257 preproc.y:4210 preproc.y:4219 -#: preproc.y:4461 preproc.y:6550 preproc.y:6555 preproc.y:6560 preproc.y:8866 -#: preproc.y:9385 +#: preproc.y:2095 preproc.y:3333 preproc.y:4521 preproc.y:4530 preproc.y:4811 +#: preproc.y:7098 preproc.y:7103 preproc.y:7108 preproc.y:9442 preproc.y:9985 msgid "unsupported feature will be passed to server" msgstr "不支持的功能特性将会传递给服务器" -#: preproc.y:2331 +#: preproc.y:2321 msgid "SHOW ALL is not implemented" msgstr "没有使用SHOW ALL" -#: preproc.y:2687 preproc.y:2698 +#: preproc.y:2744 preproc.y:2755 msgid "COPY TO STDIN is not possible" msgstr "不能进行COPY TO STDIN的操作" -#: preproc.y:2689 +#: preproc.y:2746 msgid "COPY FROM STDOUT is not possible" msgstr "不能进行COPY FROM STDOUT的操作" -#: preproc.y:2691 +#: preproc.y:2748 msgid "COPY FROM STDIN is not implemented" msgstr "不能进行COPY FROM STDIN的操作" -#: preproc.y:4150 preproc.y:4161 -msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" -msgstr "约束声明 INITIALLY DEFERRED 必须为 DEFERRABLE" - -#: preproc.y:7359 preproc.y:12002 +#: preproc.y:7904 preproc.y:12595 #, c-format msgid "using variable \"%s\" in different declare statements is not supported" msgstr "不支持在不同的声明语句中使用变量\"%s\"" -#: preproc.y:7361 preproc.y:12004 +#: preproc.y:7906 preproc.y:12597 #, c-format msgid "cursor \"%s\" is already defined" msgstr "已经定义了游标\"%s\"" -#: preproc.y:7764 +#: preproc.y:8324 msgid "no longer supported LIMIT #,# syntax passed to server" msgstr "不再支持将LIMIT #,#语法传递给服务器" -#: preproc.y:7999 +#: preproc.y:8559 msgid "subquery in FROM must have an alias" msgstr "FROM 中的子查询必须有一个别名" -#: preproc.y:11735 +#: preproc.y:12327 msgid "CREATE TABLE AS cannot specify INTO" msgstr "在CREATE TABLE AS语句中不能指定INTO子句" -#: preproc.y:11772 +#: preproc.y:12364 #, c-format msgid "expected \"@\", found \"%s\"" msgstr "期望 \"@\", 但是找到了\"%s\"" -#: preproc.y:11784 +#: preproc.y:12376 msgid "" "only protocols \"tcp\" and \"unix\" and database type \"postgresql\" are " "supported" msgstr "只支持协议\"tcp\"和 \"unix\"以及数据库类型 \"postgresql\"" -#: preproc.y:11787 +#: preproc.y:12379 #, c-format msgid "expected \"://\", found \"%s\"" msgstr "期望得到 \"://\",但是找到了\"%s\"" -#: preproc.y:11792 +#: preproc.y:12384 #, c-format msgid "Unix-domain sockets only work on \"localhost\" but not on \"%s\"" msgstr "Unix-域的sockets只能在\"localhost\"上运行,而不能在\"%s\"上运行" -#: preproc.y:11818 +#: preproc.y:12410 #, c-format msgid "expected \"postgresql\", found \"%s\"" msgstr "期望\"postgresql\", 但是只找到了\"%s\"" -#: preproc.y:11821 +#: preproc.y:12413 #, c-format msgid "invalid connection type: %s" msgstr "无效的连接类型: %s" -#: preproc.y:11830 +#: preproc.y:12422 #, c-format msgid "expected \"@\" or \"://\", found \"%s\"" msgstr "期望\"@\"或\"://\",但是只找到了\"%s\"" -#: preproc.y:11905 preproc.y:11923 +#: preproc.y:12497 preproc.y:12515 msgid "invalid data type" msgstr "无效数据类型" -#: preproc.y:11934 preproc.y:11949 +#: preproc.y:12526 preproc.y:12541 msgid "incomplete statement" msgstr "未结束的语句" -#: preproc.y:11937 preproc.y:11952 +#: preproc.y:12529 preproc.y:12544 #, c-format msgid "unrecognized token \"%s\"" msgstr "无法识别的符号\"%s\"" -#: preproc.y:12224 +#: preproc.y:12817 msgid "only data types numeric and decimal have precision/scale argument" msgstr "只有数据类型numeric和decimal有精度/范围参数" -#: preproc.y:12236 +#: preproc.y:12829 msgid "interval specification not allowed here" msgstr "在这里不允许使用间隔定义" -#: preproc.y:12388 preproc.y:12440 +#: preproc.y:12981 preproc.y:13033 msgid "too many levels in nested structure/union definition" msgstr "在嵌套结构/联合定义中存在太多的层次" -#: preproc.y:12571 +#: preproc.y:13164 msgid "pointers to varchar are not implemented" msgstr "没有实现指向varchar类型值的指针" -#: preproc.y:12758 preproc.y:12783 +#: preproc.y:13351 preproc.y:13376 msgid "using unsupported DESCRIBE statement" msgstr "使用不支持的DESCRIBE语句" -#: preproc.y:13020 +#: preproc.y:13613 msgid "initializer not allowed in EXEC SQL VAR command" msgstr "在EXEC SQL VAR命令中不允许初始化" -#: preproc.y:13332 +#: preproc.y:13925 msgid "arrays of indicators are not allowed on input" msgstr "在输入上不允许使用标识数组" #. translator: %s is typically the translation of "syntax error" -#: preproc.y:13586 +#: preproc.y:14179 #, c-format msgid "%s at or near \"%s\"" msgstr "%s 在 \"%s\" 或附近的" @@ -501,7 +493,7 @@ msgstr "%s 在 \"%s\" 或附近的" msgid "out of memory" msgstr "内存用尽" -#: type.c:212 type.c:594 +#: type.c:212 type.c:587 #, c-format msgid "unrecognized variable type code %d" msgstr "无法识别的变量类型代码%d" @@ -543,55 +535,55 @@ msgstr "结构的记号必须是struct" msgid "indicator for simple data type has to be simple" msgstr "对简单数据类型的指标要简单 " -#: type.c:653 +#: type.c:646 #, c-format msgid "unrecognized descriptor item code %d" msgstr "无法识别的描述符成员代码 %d" -#: variable.c:89 variable.c:112 +#: variable.c:89 variable.c:116 #, c-format msgid "incorrectly formed variable \"%s\"" msgstr "不正确形成的变量 \"%s\"" -#: variable.c:135 +#: variable.c:139 #, c-format msgid "variable \"%s\" is not a pointer" msgstr "变量\"%s\"不是一个指针" -#: variable.c:138 variable.c:163 +#: variable.c:142 variable.c:167 #, c-format msgid "variable \"%s\" is not a pointer to a structure or a union" msgstr "变量\"%s\" 不是一个指向结构或联合的指针" -#: variable.c:150 +#: variable.c:154 #, c-format msgid "variable \"%s\" is neither a structure nor a union" msgstr "变量\"%s\"既不是一个结构也不是一个联合" -#: variable.c:160 +#: variable.c:164 #, c-format msgid "variable \"%s\" is not an array" msgstr "变量\"%s\"不是一个数组" -#: variable.c:229 variable.c:251 +#: variable.c:233 variable.c:255 #, c-format msgid "variable \"%s\" is not declared" msgstr "没有声明变量\"%s\"" -#: variable.c:484 +#: variable.c:488 msgid "indicator variable must have an integer type" msgstr "标记变量必须有一个整数类型" -#: variable.c:496 +#: variable.c:500 #, c-format msgid "unrecognized data type name \"%s\"" msgstr "无法识别的数据类型名称 \"%s\"" -#: variable.c:507 variable.c:515 variable.c:532 variable.c:535 +#: variable.c:511 variable.c:519 variable.c:536 variable.c:539 msgid "multidimensional arrays are not supported" msgstr "不支持多维数组" -#: variable.c:524 +#: variable.c:528 #, c-format msgid "" "multilevel pointers (more than 2 levels) are not supported; found %d level" @@ -599,14 +591,20 @@ msgid_plural "" "multilevel pointers (more than 2 levels) are not supported; found %d levels" msgstr[0] "不支持多级指针(超过2级);找到了%d级指针." -#: variable.c:529 +#: variable.c:533 msgid "pointer to pointer is not supported for this data type" msgstr "对于这种数据类型不支持指向指针的指针" -#: variable.c:549 +#: variable.c:553 msgid "multidimensional arrays for structures are not supported" msgstr "不支持结构类型的多维数组" +#~ msgid "AT option not allowed in DEALLOCATE statement" +#~ msgstr "在DEALLOCATE语句中不允许使用AT选项" + +#~ msgid "constraint declared INITIALLY DEFERRED must be DEFERRABLE" +#~ msgstr "约束声明 INITIALLY DEFERRED 必须为 DEFERRABLE" + #~ msgid "OLD used in query that is not in a rule" #~ msgstr "查询中使用的 OLD 不在一个规则中" diff --git a/src/interfaces/ecpg/preproc/po/zh_TW.po b/src/interfaces/ecpg/preproc/po/zh_TW.po index 6231f63a0c..3c02b30212 100644 --- a/src/interfaces/ecpg/preproc/po/zh_TW.po +++ b/src/interfaces/ecpg/preproc/po/zh_TW.po @@ -10,7 +10,7 @@ msgstr "" "Last-Translator: Zhenbang Wei \n" "Language-Team: EnterpriseDB translation team \n" -"Language: \n" +"Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/interfaces/ecpg/preproc/type.c b/src/interfaces/ecpg/preproc/type.c index f467a7f9c9..0c3af3f691 100644 --- a/src/interfaces/ecpg/preproc/type.c +++ b/src/interfaces/ecpg/preproc/type.c @@ -368,15 +368,13 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type, fprintf(o, "\n\tECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, "); else if (type == ECPGt_descriptor) /* remember that name here already contains quotes (if needed) */ - fprintf(o, "\n\tECPGt_descriptor, %s, 0L, 0L, 0L, ", name); + fprintf(o, "\n\tECPGt_descriptor, %s, 1L, 1L, 1L, ", name); else if (type == ECPGt_sqlda) fprintf(o, "\n\tECPGt_sqlda, &%s, 0L, 0L, 0L, ", name); else { char *variable = (char *) mm_alloc(strlen(name) + ((prefix == NULL) ? 0 : strlen(prefix)) + 4); char *offset = (char *) mm_alloc(strlen(name) + strlen("sizeof(struct varchar_)") + 1 + strlen(varcharsize) + sizeof(int) * CHAR_BIT * 10 / 3); - char *var_name, - *ptr; switch (type) { @@ -398,16 +396,11 @@ ECPGdump_a_simple(FILE *o, const char *name, enum ECPGttype type, else sprintf(variable, "&(%s%s)", prefix ? prefix : "", name); - /* remove trailing [] is name is array element */ - var_name = mm_strdup(name); - ptr = strchr(var_name, '['); - if (ptr) - *ptr = '\0'; + /* If we created a varchar structure atomatically, counter is greater than 0. */ if (counter) - sprintf(offset, "sizeof(struct varchar_%s_%d)", var_name, counter); + sprintf(offset, "sizeof(struct varchar_%d)", counter); else - sprintf(offset, "sizeof(struct varchar_%s)", var_name); - free(var_name); + sprintf(offset, "sizeof(struct varchar)"); break; case ECPGt_char: case ECPGt_unsigned_char: diff --git a/src/interfaces/ecpg/preproc/type.h b/src/interfaces/ecpg/preproc/type.h index 68e0d1aa20..b7768fd661 100644 --- a/src/interfaces/ecpg/preproc/type.h +++ b/src/interfaces/ecpg/preproc/type.h @@ -36,7 +36,6 @@ struct ECPGtype /* Everything is malloced. */ void ECPGmake_struct_member(char *, struct ECPGtype *, struct ECPGstruct_member **); struct ECPGtype *ECPGmake_simple_type(enum ECPGttype, char *, int); -struct ECPGtype *ECPGmake_varchar_type(enum ECPGttype, long); struct ECPGtype *ECPGmake_array_type(struct ECPGtype *, char *); struct ECPGtype *ECPGmake_struct_type(struct ECPGstruct_member *, enum ECPGttype, char *, char *); struct ECPGstruct_member *ECPGstruct_member_dup(struct ECPGstruct_member *); diff --git a/src/interfaces/ecpg/preproc/variable.c b/src/interfaces/ecpg/preproc/variable.c index 3ea438709a..c4ccabd2a6 100644 --- a/src/interfaces/ecpg/preproc/variable.c +++ b/src/interfaces/ecpg/preproc/variable.c @@ -100,7 +100,11 @@ find_struct_member(char *name, char *str, struct ECPGstruct_member * members, in } break; case '-': - return (find_struct_member(name, end, members->type->u.element->u.members, brace_level)); + if (members->type->type == ECPGt_array) + return (find_struct_member(name, ++end, members->type->u.element->u.members, brace_level)); + else + return (find_struct_member(name, ++end, members->type->u.members, brace_level)); + break; break; case '.': if (members->type->type == ECPGt_array) diff --git a/src/interfaces/ecpg/test/Makefile b/src/interfaces/ecpg/test/Makefile index 7ee8287cab..e899aef83c 100644 --- a/src/interfaces/ecpg/test/Makefile +++ b/src/interfaces/ecpg/test/Makefile @@ -5,8 +5,8 @@ top_builddir = ../../../.. include $(top_builddir)/src/Makefile.global override CPPFLAGS := \ - -I$(top_builddir)/src/port \ - -I$(top_srcdir)/src/test/regress \ + '-I$(top_builddir)/src/port' \ + '-I$(top_srcdir)/src/test/regress' \ '-DHOST_TUPLE="$(host_tuple)"' \ '-DMAKEPROG="$(MAKE)"' \ '-DSHELLPROG="$(SHELL)"' \ @@ -84,4 +84,4 @@ checktcp: all ./pg_regress --dbname=regress1,connectdb --top-builddir=$(top_builddir) --temp-install=./tmp_check $(pg_regress_locale_flags) $(THREAD) --schedule=$(srcdir)/ecpg_schedule_tcp --create-role=connectuser,connectdb --host=localhost installcheck: all - ./pg_regress --psqldir=$(PSQLDIR) --dbname=regress1,connectdb --top-builddir=$(top_builddir) $(pg_regress_locale_flags) $(THREAD) --schedule=$(srcdir)/ecpg_schedule --create-role=connectuser,connectdb + ./pg_regress --psqldir='$(PSQLDIR)' --dbname=regress1,connectdb --top-builddir=$(top_builddir) $(pg_regress_locale_flags) $(THREAD) --schedule=$(srcdir)/ecpg_schedule --create-role=connectuser,connectdb diff --git a/src/interfaces/ecpg/test/expected/compat_informix-describe.c b/src/interfaces/ecpg/test/expected/compat_informix-describe.c index b4e1b47066..59002fbde6 100644 --- a/src/interfaces/ecpg/test/expected/compat_informix-describe.c +++ b/src/interfaces/ecpg/test/expected/compat_informix-describe.c @@ -174,12 +174,12 @@ if (sqlca.sqlcode < 0) exit (1);} strcpy(msg, "describe"); { ECPGdescribe(__LINE__, 1, 0, NULL, "st_id1", - ECPGt_descriptor, "desc1", 0L, 0L, 0L, + ECPGt_descriptor, "desc1", 1L, 1L, 1L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);} #line 60 "describe.pgc" { ECPGdescribe(__LINE__, 1, 0, NULL, "st_id1", - ECPGt_descriptor, "desc2", 0L, 0L, 0L, + ECPGt_descriptor, "desc2", 1L, 1L, 1L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);} #line 61 "describe.pgc" @@ -336,12 +336,12 @@ if (sqlca.sqlcode < 0) exit (1);} strcpy(msg, "describe"); { ECPGdescribe(__LINE__, 1, 0, NULL, "st_id2", - ECPGt_descriptor, "desc1", 0L, 0L, 0L, + ECPGt_descriptor, "desc1", 1L, 1L, 1L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);} #line 146 "describe.pgc" { ECPGdescribe(__LINE__, 1, 0, NULL, "st_id2", - ECPGt_descriptor, "desc2", 0L, 0L, 0L, + ECPGt_descriptor, "desc2", 1L, 1L, 1L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);} #line 147 "describe.pgc" diff --git a/src/interfaces/ecpg/test/expected/compat_informix-rnull.stderr b/src/interfaces/ecpg/test/expected/compat_informix-rnull.stderr index 2cb9d25701..dc906c85b4 100644 --- a/src/interfaces/ecpg/test/expected/compat_informix-rnull.stderr +++ b/src/interfaces/ecpg/test/expected/compat_informix-rnull.stderr @@ -22,7 +22,7 @@ [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: free_params on line 36: parameter 4 = t [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: free_params on line 36: parameter 5 = 3.710000038147 +[NO_PID]: free_params on line 36: parameter 5 = 3.71000003814697 [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: free_params on line 36: parameter 6 = 487444 [NO_PID]: sqlca: code: 0, state: 00000 @@ -74,7 +74,7 @@ [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_get_data on line 59: RESULT: t offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ecpg_get_data on line 59: RESULT: 3.710000038147 offset: -1; array: no +[NO_PID]: ecpg_get_data on line 59: RESULT: 3.71000003814697 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_get_data on line 59: RESULT: 487444 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c index 648b648e21..78f6b3de71 100644 --- a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c +++ b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.c @@ -147,6 +147,12 @@ if (sqlca.sqlcode < 0) sqlprint ( );} free(text); free(out); + out = (char*) malloc(48); + i = PGTYPEStimestamp_fmt_asc(&ts1, out, 47, "Which is day number %j in %Y."); + printf("%s\n", out); + free(out); + + /* rdate_defmt_asc() */ date1 = 0; text = ""; @@ -431,16 +437,16 @@ if (sqlca.sqlcode < 0) sqlprint ( );} free(text); { ECPGtrans(__LINE__, NULL, "rollback"); -#line 359 "dt_test.pgc" +#line 365 "dt_test.pgc" if (sqlca.sqlcode < 0) sqlprint ( );} -#line 359 "dt_test.pgc" +#line 365 "dt_test.pgc" { ECPGdisconnect(__LINE__, "CURRENT"); -#line 360 "dt_test.pgc" +#line 366 "dt_test.pgc" if (sqlca.sqlcode < 0) sqlprint ( );} -#line 360 "dt_test.pgc" +#line 366 "dt_test.pgc" return (0); diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.stderr b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.stderr index 41a8013f47..c1285f54c3 100644 --- a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.stderr +++ b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.stderr @@ -42,7 +42,7 @@ [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_get_data on line 38: RESULT: 2000-07-12 17:34:29 offset: -1; array: no [NO_PID]: sqlca: code: 0, state: 00000 -[NO_PID]: ECPGtrans on line 359: action "rollback"; connection "regress1" +[NO_PID]: ECPGtrans on line 365: action "rollback"; connection "regress1" [NO_PID]: sqlca: code: 0, state: 00000 [NO_PID]: ecpg_finish: connection regress1 closed [NO_PID]: sqlca: code: 0, state: 00000 diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.stdout b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.stdout index a2ff5f7a3b..823b6e0062 100644 --- a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.stdout +++ b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test.stdout @@ -6,6 +6,7 @@ date seems to get encoded to julian -622 m: 4, d: 19, y: 1998 date_day of 2003-12-04 17:34:29 is 4 Above date in format "(ddd), mmm. dd, yyyy, repeat: (ddd), mmm. dd, yyyy. end" is "(Thu), Dec. 04, 2003, repeat: (Thu), Dec. 04, 2003. end" +Which is day number 338 in 2003. date_defmt_asc1: 1995-12-25 date_defmt_asc2: 0095-12-25 date_defmt_asc3: 0095-12-25 diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c index d3ebb0e106..0ba1936f1d 100644 --- a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c +++ b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.c @@ -45,6 +45,15 @@ char *dates[] = { "19990108foobar", "1999.008", "J2451187", "January 8, 99 BC", + /* + * Maximize space usage in ParseDateTime() with 25 + * (MAXDATEFIELDS) fields and 128 (MAXDATELEN) total length. + */ + "........................Xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + /* 26 fields */ + ".........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", NULL }; /* do not conflict with libc "times" symbol */ @@ -52,6 +61,7 @@ static char *times[] = { "0:04", "1:59 PDT", "13:24:40 -8:00", "13:24:40.495+3", + "13:24:40.123456789+3", NULL }; char *intervals[] = { "1 minute", @@ -73,22 +83,22 @@ main(void) -#line 52 "dt_test2.pgc" +#line 62 "dt_test2.pgc" date date1 ; -#line 53 "dt_test2.pgc" +#line 63 "dt_test2.pgc" timestamp ts1 , ts2 ; -#line 54 "dt_test2.pgc" +#line 64 "dt_test2.pgc" char * text ; -#line 55 "dt_test2.pgc" +#line 65 "dt_test2.pgc" interval * i1 ; -#line 56 "dt_test2.pgc" +#line 66 "dt_test2.pgc" date * dc ; /* exec sql end declare section */ -#line 57 "dt_test2.pgc" +#line 67 "dt_test2.pgc" int i, j; diff --git a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.stdout b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.stdout index 24e9d26dfe..9a4587b498 100644 --- a/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.stdout +++ b/src/interfaces/ecpg/test/expected/pgtypeslib-dt_test2.stdout @@ -8,85 +8,104 @@ TS[3,0]: 1999-01-08 00:04:00 TS[3,1]: 1999-01-08 01:59:00 TS[3,2]: 1999-01-08 13:24:40 TS[3,3]: 1999-01-08 13:24:40.495 +TS[3,4]: 1999-01-08 13:24:40.123456 Date[4]: 1999-01-08 (N - F) TS[4,0]: 1999-01-08 00:04:00 TS[4,1]: 1999-01-08 01:59:00 TS[4,2]: 1999-01-08 13:24:40 TS[4,3]: 1999-01-08 13:24:40.495 +TS[4,4]: 1999-01-08 13:24:40.123456 Date[5]: 1999-01-08 (N - F) TS[5,0]: 1999-01-08 00:04:00 TS[5,1]: 1999-01-08 01:59:00 TS[5,2]: 1999-01-08 13:24:40 TS[5,3]: 1999-01-08 13:24:40.495 +TS[5,4]: 1999-01-08 13:24:40.123456 Date[6]: 1999-01-18 (N - F) TS[6,0]: 1999-01-18 00:04:00 TS[6,1]: 1999-01-18 01:59:00 TS[6,2]: 1999-01-18 13:24:40 TS[6,3]: 1999-01-18 13:24:40.495 +TS[6,4]: 1999-01-18 13:24:40.123456 Date[7]: 2003-01-02 (N - F) TS[7,0]: 2003-01-02 00:04:00 TS[7,1]: 2003-01-02 01:59:00 TS[7,2]: 2003-01-02 13:24:40 TS[7,3]: 2003-01-02 13:24:40.495 +TS[7,4]: 2003-01-02 13:24:40.123456 Date[8]: 1999-01-08 (N - F) TS[8,0]: 1999-01-08 00:04:00 TS[8,1]: 1999-01-08 01:59:00 TS[8,2]: 1999-01-08 13:24:40 TS[8,3]: 1999-01-08 13:24:40.495 +TS[8,4]: 1999-01-08 13:24:40.123456 Date[9]: 1999-01-08 (N - F) TS[9,0]: 1999-01-08 00:04:00 TS[9,1]: 1999-01-08 01:59:00 TS[9,2]: 1999-01-08 13:24:40 TS[9,3]: 1999-01-08 13:24:40.495 +TS[9,4]: 1999-01-08 13:24:40.123456 Date[10]: 1999-01-08 (N - F) TS[10,0]: 1999-01-08 00:04:00 TS[10,1]: 1999-01-08 01:59:00 TS[10,2]: 1999-01-08 13:24:40 TS[10,3]: 1999-01-08 13:24:40.495 +TS[10,4]: 1999-01-08 13:24:40.123456 Date[11]: 1999-01-08 (N - F) TS[11,0]: 1999-01-08 00:04:00 TS[11,1]: 1999-01-08 01:59:00 TS[11,2]: 1999-01-08 13:24:40 TS[11,3]: 1999-01-08 13:24:40.495 +TS[11,4]: 1999-01-08 13:24:40.123456 Date[12]: 1999-01-08 (N - F) TS[12,0]: 1999-01-08 00:04:00 TS[12,1]: 1999-01-08 01:59:00 TS[12,2]: 1999-01-08 13:24:40 TS[12,3]: 1999-01-08 13:24:40.495 +TS[12,4]: 1999-01-08 13:24:40.123456 Date[13]: 2006-01-08 (N - F) TS[13,0]: 2006-01-08 00:04:00 TS[13,1]: 2006-01-08 01:59:00 TS[13,2]: 2006-01-08 13:24:40 TS[13,3]: 2006-01-08 13:24:40.495 +TS[13,4]: 2006-01-08 13:24:40.123456 Date[14]: 1999-01-08 (N - F) TS[14,0]: 1999-01-08 00:04:00 TS[14,1]: 1999-01-08 01:59:00 TS[14,2]: 1999-01-08 13:24:40 TS[14,3]: 1999-01-08 13:24:40.495 +TS[14,4]: 1999-01-08 13:24:40.123456 Date[15]: 1999-01-08 (N - F) TS[15,0]: 1999-01-08 00:04:00 TS[15,1]: 1999-01-08 01:59:00 TS[15,2]: 1999-01-08 13:24:40 TS[15,3]: 1999-01-08 13:24:40.495 +TS[15,4]: 1999-01-08 13:24:40.123456 Date[16]: 1999-01-08 (N - F) TS[16,0]: 1999-01-08 00:04:00 TS[16,1]: 1999-01-08 01:59:00 TS[16,2]: 1999-01-08 13:24:40 TS[16,3]: 1999-01-08 13:24:40.495 +TS[16,4]: 1999-01-08 13:24:40.123456 Date[17]: 1999-01-08 (N - F) TS[17,0]: 1999-01-08 00:04:00 TS[17,1]: 1999-01-08 01:59:00 TS[17,2]: 1999-01-08 13:24:40 TS[17,3]: 1999-01-08 13:24:40.495 +TS[17,4]: 1999-01-08 13:24:40.123456 Date[18]: 1999-01-08 (N - F) TS[18,0]: 1999-01-08 00:04:00 TS[18,1]: 1999-01-08 01:59:00 TS[18,2]: 1999-01-08 13:24:40 TS[18,3]: 1999-01-08 13:24:40.495 +TS[18,4]: 1999-01-08 13:24:40.123456 Date[19]: 0099-01-08 BC (N - F) TS[19,0]: 0099-01-08 00:04:00 BC TS[19,1]: 0099-01-08 01:59:00 BC TS[19,2]: 0099-01-08 13:24:40 BC +TS[19,4]: 0099-01-08 13:24:40.123456 BC +Date[20]: - (N - T) +Date[21]: - (N - T) interval[0]: @ 1 min interval_copy[0]: @ 1 min interval[1]: @ 1 day 12 hours 59 mins 10 secs diff --git a/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c b/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c index 5579ed4132..9bb09cc38f 100644 --- a/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c +++ b/src/interfaces/ecpg/test/expected/preproc-array_of_struct.c @@ -32,7 +32,7 @@ typedef struct { #line 12 "array_of_struct.pgc" - struct varchar_name_1 { int len; char arr[ 50 ]; } name ; + struct varchar_1 { int len; char arr[ 50 ]; } name ; #line 13 "array_of_struct.pgc" int phone ; @@ -61,7 +61,7 @@ int main() typedef struct { #line 30 "array_of_struct.pgc" - struct varchar_name_2 { int len; char arr[ 50 ]; } name ; + struct varchar_2 { int len; char arr[ 50 ]; } name ; #line 31 "array_of_struct.pgc" int phone ; @@ -95,7 +95,7 @@ int main() #line 38 "array_of_struct.pgc" struct customer3 { #line 36 "array_of_struct.pgc" - struct varchar_name_3 { int len; char arr[ 50 ]; } name ; + struct varchar_3 { int len; char arr[ 50 ]; } name ; #line 37 "array_of_struct.pgc" int phone ; @@ -104,7 +104,7 @@ int main() #line 43 "array_of_struct.pgc" struct customer4 { #line 41 "array_of_struct.pgc" - struct varchar_name_4 { int len; char arr[ 50 ]; } name ; + struct varchar_4 { int len; char arr[ 50 ]; } name ; #line 42 "array_of_struct.pgc" int phone ; @@ -114,7 +114,7 @@ int main() int r ; #line 45 "array_of_struct.pgc" - struct varchar_onlyname_5 { int len; char arr[ 50 ]; } onlyname [ 2 ] ; + struct varchar_5 { int len; char arr[ 50 ]; } onlyname [ 2 ] ; /* exec sql end declare section */ #line 46 "array_of_struct.pgc" @@ -235,7 +235,7 @@ if (sqlca.sqlcode < 0) sqlprint();} } { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select * from customers limit 1", ECPGt_EOIT, - ECPGt_varchar,&(custs4.name),(long)50,(long)1,sizeof(struct varchar_name_4), + ECPGt_varchar,&(custs4.name),(long)50,(long)1,sizeof(struct varchar_4), ECPGt_short,&(inds[0].name_ind),(long)1,(long)1,sizeof(short), ECPGt_int,&(custs4.phone),(long)1,(long)1,sizeof(int), ECPGt_short,&(inds[0].phone_ind),(long)1,(long)1,sizeof(short), ECPGt_EORT); @@ -255,7 +255,7 @@ if (sqlca.sqlcode < 0) sqlprint();} printf( "phone - %d\n", custs4.phone ); { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select c from customers limit 2", ECPGt_EOIT, - ECPGt_varchar,(onlyname),(long)50,(long)2,sizeof(struct varchar_onlyname_5), + ECPGt_varchar,(onlyname),(long)50,(long)2,sizeof(struct varchar_5), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); #line 85 "array_of_struct.pgc" diff --git a/src/interfaces/ecpg/test/expected/preproc-cursor.c b/src/interfaces/ecpg/test/expected/preproc-cursor.c index 794e7e2643..1d92d6c492 100644 --- a/src/interfaces/ecpg/test/expected/preproc-cursor.c +++ b/src/interfaces/ecpg/test/expected/preproc-cursor.c @@ -74,7 +74,7 @@ main (void) char * curname3 = CURNAME ; #line 27 "cursor.pgc" - struct varchar_curname4_1 { int len; char arr[ 50 ]; } curname4 ; + struct varchar_1 { int len; char arr[ 50 ]; } curname4 ; #line 28 "cursor.pgc" int count ; @@ -602,7 +602,7 @@ if (sqlca.sqlcode < 0) exit (1);} strcpy(msg, "open"); { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare $0 cursor for $1", - ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_curname4_1), + ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_1), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_char_variable,(ECPGprepared_statement(NULL, "st_id2", __LINE__)),(long)1,(long)1,(1)*sizeof(char), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); @@ -614,7 +614,7 @@ if (sqlca.sqlcode < 0) exit (1);} strcpy(msg, "fetch from"); { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch from $0", - ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_curname4_1), + ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_1), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_int,&(id),(long)1,(long)1,sizeof(int), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, @@ -629,7 +629,7 @@ if (sqlca.sqlcode < 0) exit (1);} strcpy(msg, "fetch"); { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch $0", - ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_curname4_1), + ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_1), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_int,&(id),(long)1,(long)1,sizeof(int), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, @@ -644,7 +644,7 @@ if (sqlca.sqlcode < 0) exit (1);} strcpy(msg, "fetch 1 from"); { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch 1 from $0", - ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_curname4_1), + ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_1), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_int,&(id),(long)1,(long)1,sizeof(int), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, @@ -662,7 +662,7 @@ if (sqlca.sqlcode < 0) exit (1);} { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch $0 from $0", ECPGt_int,&(count),(long)1,(long)1,sizeof(int), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, - ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_curname4_1), + ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_1), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_int,&(id),(long)1,(long)1,sizeof(int), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, @@ -677,7 +677,7 @@ if (sqlca.sqlcode < 0) exit (1);} strcpy(msg, "move"); { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "move absolute 0 $0", - ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_curname4_1), + ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_1), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); #line 216 "cursor.pgc" @@ -687,7 +687,7 @@ if (sqlca.sqlcode < 0) exit (1);} strcpy(msg, "fetch 1"); { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch 1 $0", - ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_curname4_1), + ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_1), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_int,&(id),(long)1,(long)1,sizeof(int), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, @@ -705,7 +705,7 @@ if (sqlca.sqlcode < 0) exit (1);} { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch $0 $0", ECPGt_int,&(count),(long)1,(long)1,sizeof(int), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, - ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_curname4_1), + ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_1), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_int,&(id),(long)1,(long)1,sizeof(int), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, @@ -720,7 +720,7 @@ if (sqlca.sqlcode < 0) exit (1);} strcpy(msg, "close"); { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "close $0", - ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_curname4_1), + ECPGt_varchar,&(curname4),(long)50,(long)1,sizeof(struct varchar_1), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); #line 228 "cursor.pgc" diff --git a/src/interfaces/ecpg/test/expected/preproc-define.c b/src/interfaces/ecpg/test/expected/preproc-define.c index 11ba4a3c02..43df19c318 100644 --- a/src/interfaces/ecpg/test/expected/preproc-define.c +++ b/src/interfaces/ecpg/test/expected/preproc-define.c @@ -125,16 +125,20 @@ if (sqlca.sqlcode < 0) sqlprint();} for (i=0, j=sqlca.sqlerrd[2]; iname),(long)BUFFERSIZ,(long)1,sizeof(struct varchar_name_1), + ECPGt_varchar,&(p->name),(long)BUFFERSIZ,(long)1,sizeof(struct varchar_1), ECPGt_int,&(i->ind_name),(long)1,(long)1,sizeof(int), ECPGt_long,&(p->birth.born),(long)1,(long)1,sizeof(long), ECPGt_long,&(i->ind_birth.born),(long)1,(long)1,sizeof(long), diff --git a/src/interfaces/ecpg/test/expected/sql-desc.c b/src/interfaces/ecpg/test/expected/sql-desc.c index 8fc527a364..7a384acd0d 100644 --- a/src/interfaces/ecpg/test/expected/sql-desc.c +++ b/src/interfaces/ecpg/test/expected/sql-desc.c @@ -134,7 +134,7 @@ if (sqlca.sqlcode < 0) sqlprint();} { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "foo1", - ECPGt_descriptor, "indesc", 0L, 0L, 0L, + ECPGt_descriptor, "indesc", 1L, 1L, 1L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); #line 35 "desc.pgc" @@ -161,7 +161,7 @@ if (sqlca.sqlcode < 0) sqlprint();} { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "foo1", - ECPGt_descriptor, "indesc", 0L, 0L, 0L, + ECPGt_descriptor, "indesc", 1L, 1L, 1L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); #line 40 "desc.pgc" @@ -188,7 +188,7 @@ if (sqlca.sqlcode < 0) sqlprint();} { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "Foo-1", - ECPGt_descriptor, "indesc", 0L, 0L, 0L, + ECPGt_descriptor, "indesc", 1L, 1L, 1L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); #line 45 "desc.pgc" @@ -222,9 +222,9 @@ if (sqlca.sqlcode < 0) sqlprint();} { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "foo2", - ECPGt_descriptor, "indesc", 0L, 0L, 0L, + ECPGt_descriptor, "indesc", 1L, 1L, 1L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, - ECPGt_descriptor, "outdesc", 0L, 0L, 0L, + ECPGt_descriptor, "outdesc", 1L, 1L, 1L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); #line 52 "desc.pgc" @@ -248,7 +248,7 @@ if (sqlca.sqlcode < 0) sqlprint();} { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare c1 cursor for $1", ECPGt_char_variable,(ECPGprepared_statement(NULL, "foo2", __LINE__)),(long)1,(long)1,(1)*sizeof(char), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, - ECPGt_descriptor, "indesc", 0L, 0L, 0L, + ECPGt_descriptor, "indesc", 1L, 1L, 1L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); #line 58 "desc.pgc" @@ -298,7 +298,7 @@ if (sqlca.sqlcode < 0) sqlprint();} { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare c2 cursor for $1", ECPGt_char_variable,(ECPGprepared_statement(NULL, "foo3", __LINE__)),(long)1,(long)1,(1)*sizeof(char), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, - ECPGt_descriptor, "indesc", 0L, 0L, 0L, + ECPGt_descriptor, "indesc", 1L, 1L, 1L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); #line 70 "desc.pgc" diff --git a/src/interfaces/ecpg/test/expected/sql-describe.c b/src/interfaces/ecpg/test/expected/sql-describe.c index fd46a29245..11aadb4e05 100644 --- a/src/interfaces/ecpg/test/expected/sql-describe.c +++ b/src/interfaces/ecpg/test/expected/sql-describe.c @@ -172,12 +172,12 @@ if (sqlca.sqlcode < 0) exit (1);} strcpy(msg, "describe"); { ECPGdescribe(__LINE__, 0, 0, NULL, "st_id1", - ECPGt_descriptor, "desc1", 0L, 0L, 0L, + ECPGt_descriptor, "desc1", 1L, 1L, 1L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);} #line 60 "describe.pgc" { ECPGdescribe(__LINE__, 0, 0, NULL, "st_id1", - ECPGt_descriptor, "desc2", 0L, 0L, 0L, + ECPGt_descriptor, "desc2", 1L, 1L, 1L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);} #line 61 "describe.pgc" @@ -334,12 +334,12 @@ if (sqlca.sqlcode < 0) exit (1);} strcpy(msg, "describe"); { ECPGdescribe(__LINE__, 0, 0, NULL, "st_id2", - ECPGt_descriptor, "desc1", 0L, 0L, 0L, + ECPGt_descriptor, "desc1", 1L, 1L, 1L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);} #line 146 "describe.pgc" { ECPGdescribe(__LINE__, 0, 0, NULL, "st_id2", - ECPGt_descriptor, "desc2", 0L, 0L, 0L, + ECPGt_descriptor, "desc2", 1L, 1L, 1L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);} #line 147 "describe.pgc" diff --git a/src/interfaces/ecpg/test/expected/sql-dynalloc.c b/src/interfaces/ecpg/test/expected/sql-dynalloc.c index ff04922fa7..ccc337168e 100644 --- a/src/interfaces/ecpg/test/expected/sql-dynalloc.c +++ b/src/interfaces/ecpg/test/expected/sql-dynalloc.c @@ -210,7 +210,7 @@ if (sqlca.sqlcode < 0) sqlprint ( ); #line 41 "dynalloc.pgc" { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select a , b , c , d , e , f , g , h , i from test order by a", ECPGt_EOIT, - ECPGt_descriptor, "mydesc", 0L, 0L, 0L, + ECPGt_descriptor, "mydesc", 1L, 1L, 1L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); #line 42 "dynalloc.pgc" diff --git a/src/interfaces/ecpg/test/expected/sql-dynalloc2.c b/src/interfaces/ecpg/test/expected/sql-dynalloc2.c index 3f200ff6ea..e85189214b 100644 --- a/src/interfaces/ecpg/test/expected/sql-dynalloc2.c +++ b/src/interfaces/ecpg/test/expected/sql-dynalloc2.c @@ -188,7 +188,7 @@ if (sqlca.sqlcode < 0) sqlprint ( ); #line 32 "dynalloc2.pgc" { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select * from test", ECPGt_EOIT, - ECPGt_descriptor, "mydesc", 0L, 0L, 0L, + ECPGt_descriptor, "mydesc", 1L, 1L, 1L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); #line 33 "dynalloc2.pgc" diff --git a/src/interfaces/ecpg/test/expected/sql-dyntest.c b/src/interfaces/ecpg/test/expected/sql-dyntest.c index 1871e1338f..537d9ff63a 100644 --- a/src/interfaces/ecpg/test/expected/sql-dyntest.c +++ b/src/interfaces/ecpg/test/expected/sql-dyntest.c @@ -273,7 +273,7 @@ if (sqlca.sqlcode < 0) error ( );} while (1) { { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch in MYCURS", ECPGt_EOIT, - ECPGt_descriptor, "MYDESC", 0L, 0L, 0L, + ECPGt_descriptor, "MYDESC", 1L, 1L, 1L, ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); #line 64 "dyntest.pgc" diff --git a/src/interfaces/ecpg/test/pgtypeslib/dt_test.pgc b/src/interfaces/ecpg/test/pgtypeslib/dt_test.pgc index d56ca87e21..768cbd5e6f 100644 --- a/src/interfaces/ecpg/test/pgtypeslib/dt_test.pgc +++ b/src/interfaces/ecpg/test/pgtypeslib/dt_test.pgc @@ -73,6 +73,12 @@ main(void) free(text); free(out); + out = (char*) malloc(48); + i = PGTYPEStimestamp_fmt_asc(&ts1, out, 47, "Which is day number %j in %Y."); + printf("%s\n", out); + free(out); + + /* rdate_defmt_asc() */ date1 = 0; text = ""; diff --git a/src/interfaces/ecpg/test/pgtypeslib/dt_test2.pgc b/src/interfaces/ecpg/test/pgtypeslib/dt_test2.pgc index 0edf012fd1..a127dd93a6 100644 --- a/src/interfaces/ecpg/test/pgtypeslib/dt_test2.pgc +++ b/src/interfaces/ecpg/test/pgtypeslib/dt_test2.pgc @@ -27,6 +27,15 @@ char *dates[] = { "19990108foobar", "1999.008", "J2451187", "January 8, 99 BC", + /* + * Maximize space usage in ParseDateTime() with 25 + * (MAXDATEFIELDS) fields and 128 (MAXDATELEN) total length. + */ + "........................Xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + /* 26 fields */ + ".........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", NULL }; /* do not conflict with libc "times" symbol */ @@ -34,6 +43,7 @@ static char *times[] = { "0:04", "1:59 PDT", "13:24:40 -8:00", "13:24:40.495+3", + "13:24:40.123456789+3", NULL }; char *intervals[] = { "1 minute", diff --git a/src/interfaces/ecpg/test/preproc/define.pgc b/src/interfaces/ecpg/test/preproc/define.pgc index aa404b2ea6..2161733f49 100644 --- a/src/interfaces/ecpg/test/preproc/define.pgc +++ b/src/interfaces/ecpg/test/preproc/define.pgc @@ -45,7 +45,8 @@ exec sql end declare section; for (i=0, j=sqlca.sqlerrd[2]; ipgunixsocket); + if (strlen(portstr) >= UNIXSOCK_PATH_BUFLEN) + { + appendPQExpBuffer(&conn->errorMessage, + libpq_gettext("Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n"), + portstr, + (int) (UNIXSOCK_PATH_BUFLEN - 1)); + conn->options_valid = false; + goto connect_errReturn; + } #else /* Without Unix sockets, default to localhost instead */ node = DefaultHost; @@ -1729,9 +1738,10 @@ PQconnectPoll(PGconn *conn) addr_cur->ai_addrlen) < 0) { if (SOCK_ERRNO == EINPROGRESS || +#ifdef WIN32 SOCK_ERRNO == EWOULDBLOCK || - SOCK_ERRNO == EINTR || - SOCK_ERRNO == 0) +#endif + SOCK_ERRNO == EINTR) { /* * This is fine - we're in non-blocking mode, and @@ -2022,16 +2032,19 @@ PQconnectPoll(PGconn *conn) /* should not happen really */ return PGRES_POLLING_READING; } - /* mark byte consumed */ - conn->inStart = conn->inCursor; if (SSLok == 'S') { + /* mark byte consumed */ + conn->inStart = conn->inCursor; /* Set up global SSL state if required */ if (pqsecure_initialize(conn) != 0) goto error_return; } else if (SSLok == 'N') { + /* mark byte consumed */ + conn->inStart = conn->inCursor; + /* OK to do without SSL? */ if (conn->sslmode[0] == 'r' || /* "require" */ conn->sslmode[0] == 'v') /* "verify-ca" or * "verify-full" */ @@ -2048,26 +2061,17 @@ PQconnectPoll(PGconn *conn) } else if (SSLok == 'E') { - /* Received error - probably protocol mismatch */ - if (conn->Pfdebug) - fprintf(conn->Pfdebug, "received error from server, attempting fallback to pre-7.0\n"); - if (conn->sslmode[0] == 'r' || /* "require" */ - conn->sslmode[0] == 'v') /* "verify-ca" or - * "verify-full" */ - { - /* Require SSL, but server is too old */ - appendPQExpBuffer(&conn->errorMessage, - libpq_gettext("server does not support SSL, but SSL was required\n")); - goto error_return; - } - /* Otherwise, try again without SSL */ - conn->allow_ssl_try = false; - /* Assume it ain't gonna handle protocol 3, either */ - conn->pversion = PG_PROTOCOL(2, 0); - /* Must drop the old connection */ - closesocket(conn->sock); - conn->sock = -1; - conn->status = CONNECTION_NEEDED; + /* + * Server failure of some sort, such as failure to + * fork a backend process. We need to process and + * report the error message, which might be formatted + * according to either protocol 2 or protocol 3. + * Rather than duplicate the code for that, we flip + * into AWAITING_RESPONSE state and let the code there + * deal with it. Note we have *not* consumed the "E" + * byte here. + */ + conn->status = CONNECTION_AWAITING_RESPONSE; goto keep_going; } else @@ -2105,6 +2109,9 @@ PQconnectPoll(PGconn *conn) closesocket(conn->sock); conn->sock = -1; conn->status = CONNECTION_NEEDED; + /* Discard any unread/unsent data */ + conn->inStart = conn->inCursor = conn->inEnd = 0; + conn->outCount = 0; goto keep_going; } } @@ -2218,6 +2225,9 @@ PQconnectPoll(PGconn *conn) closesocket(conn->sock); conn->sock = -1; conn->status = CONNECTION_NEEDED; + /* Discard any unread/unsent data */ + conn->inStart = conn->inCursor = conn->inEnd = 0; + conn->outCount = 0; goto keep_going; } @@ -2285,6 +2295,9 @@ PQconnectPoll(PGconn *conn) closesocket(conn->sock); conn->sock = -1; conn->status = CONNECTION_NEEDED; + /* Discard any unread/unsent data */ + conn->inStart = conn->inCursor = conn->inEnd = 0; + conn->outCount = 0; goto keep_going; } @@ -2293,8 +2306,7 @@ PQconnectPoll(PGconn *conn) * then do a non-SSL retry */ if (conn->sslmode[0] == 'p' /* "prefer" */ - && conn->ssl - && conn->allow_ssl_try /* redundant? */ + && conn->allow_ssl_try && !conn->wait_ssl_try) /* redundant? */ { /* only retry once */ @@ -2304,6 +2316,9 @@ PQconnectPoll(PGconn *conn) closesocket(conn->sock); conn->sock = -1; conn->status = CONNECTION_NEEDED; + /* Discard any unread/unsent data */ + conn->inStart = conn->inCursor = conn->inEnd = 0; + conn->outCount = 0; goto keep_going; } #endif @@ -2467,6 +2482,9 @@ PQconnectPoll(PGconn *conn) closesocket(conn->sock); conn->sock = -1; conn->status = CONNECTION_NEEDED; + /* Discard any unread/unsent data */ + conn->inStart = conn->inCursor = conn->inEnd = 0; + conn->outCount = 0; goto keep_going; } } @@ -2736,6 +2754,8 @@ freePGconn(PGconn *conn) free(conn->events[i].name); } + if (conn->client_encoding_initial) + free(conn->client_encoding_initial); if (conn->events) free(conn->events); if (conn->pghost) @@ -4502,7 +4522,16 @@ PQhost(const PGconn *conn) { if (!conn) return NULL; - return conn->pghost ? conn->pghost : conn->pgunixsocket; + if (conn->pghost != NULL && conn->pghost[0] != '\0') + return conn->pghost; + else + { +#ifdef HAVE_UNIX_SOCKETS + return conn->pgunixsocket; +#else + return DefaultHost; +#endif + } } char * diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c index 83c5ea363f..fdeee90dd3 100644 --- a/src/interfaces/libpq/fe-exec.c +++ b/src/interfaces/libpq/fe-exec.c @@ -61,6 +61,7 @@ static int PQsendQueryGuts(PGconn *conn, const int *paramFormats, int resultFormat); static void parseInput(PGconn *conn); +static PGresult *getCopyResult(PGconn *conn, ExecStatusType copytype); static bool PQexecStart(PGconn *conn); static PGresult *PQexecFinish(PGconn *conn); static int PQsendDescribe(PGconn *conn, char desc_type, @@ -424,28 +425,8 @@ PQsetvalue(PGresult *res, int tup_num, int field_num, char *value, int len) if (tup_num < 0 || tup_num > res->ntups) return FALSE; - /* need to grow the tuple table? */ - if (res->ntups >= res->tupArrSize) - { - int n = res->tupArrSize ? res->tupArrSize * 2 : 128; - PGresAttValue **tups; - - if (res->tuples) - tups = (PGresAttValue **) realloc(res->tuples, n * sizeof(PGresAttValue *)); - else - tups = (PGresAttValue **) malloc(n * sizeof(PGresAttValue *)); - - if (!tups) - return FALSE; - - memset(tups + res->tupArrSize, 0, - (n - res->tupArrSize) * sizeof(PGresAttValue *)); - res->tuples = tups; - res->tupArrSize = n; - } - /* need to allocate a new tuple? */ - if (tup_num == res->ntups && !res->tuples[tup_num]) + if (tup_num == res->ntups) { PGresAttValue *tup; int i; @@ -464,8 +445,9 @@ PQsetvalue(PGresult *res, int tup_num, int field_num, char *value, int len) tup[i].value = res->null_field; } - res->tuples[tup_num] = tup; - res->ntups++; + /* add it to the array */ + if (!pqAddTuple(res, tup)) + return FALSE; } attval = &res->tuples[tup_num][field_num]; @@ -1582,22 +1564,13 @@ PQgetResult(PGconn *conn) conn->asyncStatus = PGASYNC_BUSY; break; case PGASYNC_COPY_IN: - if (conn->result && conn->result->resultStatus == PGRES_COPY_IN) - res = pqPrepareAsyncResult(conn); - else - res = PQmakeEmptyPGresult(conn, PGRES_COPY_IN); + res = getCopyResult(conn, PGRES_COPY_IN); break; case PGASYNC_COPY_OUT: - if (conn->result && conn->result->resultStatus == PGRES_COPY_OUT) - res = pqPrepareAsyncResult(conn); - else - res = PQmakeEmptyPGresult(conn, PGRES_COPY_OUT); + res = getCopyResult(conn, PGRES_COPY_OUT); break; case PGASYNC_COPY_BOTH: - if (conn->result && conn->result->resultStatus == PGRES_COPY_BOTH) - res = pqPrepareAsyncResult(conn); - else - res = PQmakeEmptyPGresult(conn, PGRES_COPY_BOTH); + res = getCopyResult(conn, PGRES_COPY_BOTH); break; default: printfPQExpBuffer(&conn->errorMessage, @@ -1634,6 +1607,36 @@ PQgetResult(PGconn *conn) return res; } +/* + * getCopyResult + * Helper for PQgetResult: generate result for COPY-in-progress cases + */ +static PGresult * +getCopyResult(PGconn *conn, ExecStatusType copytype) +{ + /* + * If the server connection has been lost, don't pretend everything is + * hunky-dory; instead return a PGRES_FATAL_ERROR result, and reset the + * asyncStatus to idle (corresponding to what we'd do if we'd detected I/O + * error in the earlier steps in PQgetResult). The text returned in the + * result is whatever is in conn->errorMessage; we hope that was filled + * with something relevant when the lost connection was detected. + */ + if (conn->status != CONNECTION_OK) + { + pqSaveErrorResult(conn); + conn->asyncStatus = PGASYNC_IDLE; + return pqPrepareAsyncResult(conn); + } + + /* If we have an async result for the COPY, return that */ + if (conn->result && conn->result->resultStatus == copytype) + return pqPrepareAsyncResult(conn); + + /* Otherwise, invent a suitable PGresult */ + return PQmakeEmptyPGresult(conn, copytype); +} + /* * PQexec diff --git a/src/interfaces/libpq/fe-lobj.c b/src/interfaces/libpq/fe-lobj.c index 27f93e6af7..b7e7994205 100644 --- a/src/interfaces/libpq/fe-lobj.c +++ b/src/interfaces/libpq/fe-lobj.c @@ -571,10 +571,16 @@ lo_import_internal(PGconn *conn, const char *filename, const Oid oid) if (nbytes < 0) { + /* We must do lo_close before setting the errorMessage */ + int save_errno = errno; + + (void) lo_close(conn, lobj); + (void) close(fd); printfPQExpBuffer(&conn->errorMessage, libpq_gettext("could not read from file \"%s\": %s\n"), - filename, pqStrerror(errno, sebuf, sizeof(sebuf))); - lobjOid = InvalidOid; + filename, + pqStrerror(save_errno, sebuf, sizeof(sebuf))); + return InvalidOid; } (void) close(fd); @@ -619,11 +625,15 @@ lo_export(PGconn *conn, Oid lobjId, const char *filename) */ fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC | PG_BINARY, 0666); if (fd < 0) - { /* error */ + { + /* We must do lo_close before setting the errorMessage */ + int save_errno = errno; + + (void) lo_close(conn, lobj); printfPQExpBuffer(&conn->errorMessage, libpq_gettext("could not open file \"%s\": %s\n"), - filename, pqStrerror(errno, sebuf, sizeof(sebuf))); - (void) lo_close(conn, lobj); + filename, + pqStrerror(save_errno, sebuf, sizeof(sebuf))); return -1; } @@ -635,11 +645,15 @@ lo_export(PGconn *conn, Oid lobjId, const char *filename) tmp = write(fd, buf, nbytes); if (tmp != nbytes) { - printfPQExpBuffer(&conn->errorMessage, - libpq_gettext("could not write to file \"%s\": %s\n"), - filename, pqStrerror(errno, sebuf, sizeof(sebuf))); + /* We must do lo_close before setting the errorMessage */ + int save_errno = errno; + (void) lo_close(conn, lobj); (void) close(fd); + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("could not write to file \"%s\": %s\n"), + filename, + pqStrerror(save_errno, sebuf, sizeof(sebuf))); return -1; } } @@ -657,7 +671,8 @@ lo_export(PGconn *conn, Oid lobjId, const char *filename) result = -1; } - if (close(fd)) + /* if we already failed, don't overwrite that msg with a close error */ + if (close(fd) && result >= 0) { printfPQExpBuffer(&conn->errorMessage, libpq_gettext("could not write to file \"%s\": %s\n"), diff --git a/src/interfaces/libpq/fe-misc.c b/src/interfaces/libpq/fe-misc.c index 17dde4aecc..3a3a1cee2c 100644 --- a/src/interfaces/libpq/fe-misc.c +++ b/src/interfaces/libpq/fe-misc.c @@ -578,7 +578,6 @@ pqReadData(PGconn *conn) { int someread = 0; int nread; - char sebuf[256]; if (conn->sock < 0) { @@ -647,9 +646,7 @@ pqReadData(PGconn *conn) if (SOCK_ERRNO == ECONNRESET) goto definitelyFailed; #endif - printfPQExpBuffer(&conn->errorMessage, - libpq_gettext("could not receive data from server: %s\n"), - SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); + /* pqsecure_read set the error message for us */ return -1; } if (nread > 0) @@ -709,6 +706,11 @@ pqReadData(PGconn *conn) /* ready for read */ break; default: + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext( + "server closed the connection unexpectedly\n" + "\tThis probably means the server terminated abnormally\n" + "\tbefore or while processing the request.\n")); goto definitelyFailed; } @@ -737,9 +739,7 @@ pqReadData(PGconn *conn) if (SOCK_ERRNO == ECONNRESET) goto definitelyFailed; #endif - printfPQExpBuffer(&conn->errorMessage, - libpq_gettext("could not receive data from server: %s\n"), - SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); + /* pqsecure_read set the error message for us */ return -1; } if (nread > 0) @@ -750,14 +750,10 @@ pqReadData(PGconn *conn) /* * OK, we are getting a zero read even though select() says ready. This - * means the connection has been closed. Cope. + * means the connection has been closed. Cope. Note that errorMessage + * has been set already. */ definitelyFailed: - printfPQExpBuffer(&conn->errorMessage, - libpq_gettext( - "server closed the connection unexpectedly\n" - "\tThis probably means the server terminated abnormally\n" - "\tbefore or while processing the request.\n")); conn->status = CONNECTION_BAD; /* No more connection to backend */ pqsecure_close(conn); closesocket(conn->sock); @@ -786,6 +782,8 @@ pqSendSome(PGconn *conn, int len) { printfPQExpBuffer(&conn->errorMessage, libpq_gettext("connection not open\n")); + /* Discard queued data; no chance it'll ever be sent */ + conn->outCount = 0; return -1; } @@ -793,7 +791,6 @@ pqSendSome(PGconn *conn, int len) while (len > 0) { int sent; - char sebuf[256]; #ifndef WIN32 sent = pqsecure_write(conn, ptr, len); @@ -809,11 +806,7 @@ pqSendSome(PGconn *conn, int len) if (sent < 0) { - /* - * Anything except EAGAIN/EWOULDBLOCK/EINTR is trouble. If it's - * EPIPE or ECONNRESET, assume we've lost the backend connection - * permanently. - */ + /* Anything except EAGAIN/EWOULDBLOCK/EINTR is trouble */ switch (SOCK_ERRNO) { #ifdef EAGAIN @@ -827,15 +820,8 @@ pqSendSome(PGconn *conn, int len) case EINTR: continue; - case EPIPE: -#ifdef ECONNRESET - case ECONNRESET: -#endif - printfPQExpBuffer(&conn->errorMessage, - libpq_gettext( - "server closed the connection unexpectedly\n" - "\tThis probably means the server terminated abnormally\n" - "\tbefore or while processing the request.\n")); + default: + /* pqsecure_write set the error message for us */ /* * We used to close the socket here, but that's a bad idea @@ -847,14 +833,6 @@ pqSendSome(PGconn *conn, int len) */ conn->outCount = 0; return -1; - - default: - printfPQExpBuffer(&conn->errorMessage, - libpq_gettext("could not send data to server: %s\n"), - SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); - /* We don't assume it's a fatal error... */ - conn->outCount = 0; - return -1; } } else diff --git a/src/interfaces/libpq/fe-print.c b/src/interfaces/libpq/fe-print.c index 5fa3be0045..b7849b70e5 100644 --- a/src/interfaces/libpq/fe-print.c +++ b/src/interfaces/libpq/fe-print.c @@ -681,7 +681,6 @@ PQprintTuples(const PGresult *res, int i, j; char formatString[80]; - char *tborder = NULL; nFields = PQnfields(res); @@ -700,15 +699,15 @@ PQprintTuples(const PGresult *res, int width; width = nFields * 14; - tborder = malloc(width + 1); + tborder = (char *) malloc(width + 1); if (!tborder) { fprintf(stderr, libpq_gettext("out of memory\n")); exit(1); } - for (i = 0; i <= width; i++) + for (i = 0; i < width; i++) tborder[i] = '-'; - tborder[i] = '\0'; + tborder[width] = '\0'; fprintf(fout, "%s\n", tborder); } diff --git a/src/interfaces/libpq/fe-protocol2.c b/src/interfaces/libpq/fe-protocol2.c index 77c4d5ac57..6f8ac69733 100644 --- a/src/interfaces/libpq/fe-protocol2.c +++ b/src/interfaces/libpq/fe-protocol2.c @@ -500,7 +500,7 @@ pqParseInput2(PGconn *conn) if (!conn->result) return; } - strncpy(conn->result->cmdStatus, conn->workBuffer.data, + strlcpy(conn->result->cmdStatus, conn->workBuffer.data, CMDSTATUS_LEN); checkXactStatus(conn, conn->workBuffer.data); conn->asyncStatus = PGASYNC_READY; diff --git a/src/interfaces/libpq/fe-protocol3.c b/src/interfaces/libpq/fe-protocol3.c index 45a84d8e55..18b7483db7 100644 --- a/src/interfaces/libpq/fe-protocol3.c +++ b/src/interfaces/libpq/fe-protocol3.c @@ -206,7 +206,7 @@ pqParseInput3(PGconn *conn) if (!conn->result) return; } - strncpy(conn->result->cmdStatus, conn->workBuffer.data, + strlcpy(conn->result->cmdStatus, conn->workBuffer.data, CMDSTATUS_LEN); conn->asyncStatus = PGASYNC_READY; break; diff --git a/src/interfaces/libpq/fe-secure.c b/src/interfaces/libpq/fe-secure.c index cd1292ccb6..68a88e30b3 100644 --- a/src/interfaces/libpq/fe-secure.c +++ b/src/interfaces/libpq/fe-secure.c @@ -93,6 +93,12 @@ static void SSLerrfree(char *buf); static bool pq_init_ssl_lib = true; static bool pq_init_crypto_lib = true; + +/* + * SSL_context is currently shared between threads and therefore we need to be + * careful to lock around any usage of it when providing thread safety. + * ssl_config_mutex is the mutex that we use to protect it. + */ static SSL_CTX *SSL_context = NULL; #ifdef ENABLE_THREAD_SAFETY @@ -251,9 +257,21 @@ pqsecure_open_client(PGconn *conn) /* First time through? */ if (conn->ssl == NULL) { +#ifdef ENABLE_THREAD_SAFETY + int rc; +#endif + /* We cannot use MSG_NOSIGNAL to block SIGPIPE when using SSL */ conn->sigpipe_flag = false; +#ifdef ENABLE_THREAD_SAFETY + if ((rc = pthread_mutex_lock(&ssl_config_mutex))) + { + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("could not acquire mutex: %s\n"), strerror(rc)); + return PGRES_POLLING_FAILED; + } +#endif /* Create a connection-specific SSL object */ if (!(conn->ssl = SSL_new(SSL_context)) || !SSL_set_app_data(conn->ssl, conn) || @@ -265,10 +283,16 @@ pqsecure_open_client(PGconn *conn) libpq_gettext("could not establish SSL connection: %s\n"), err); SSLerrfree(err); +#ifdef ENABLE_THREAD_SAFETY + pthread_mutex_unlock(&ssl_config_mutex); +#endif close_SSL(conn); + return PGRES_POLLING_FAILED; } - +#ifdef ENABLE_THREAD_SAFETY + pthread_mutex_unlock(&ssl_config_mutex); +#endif /* * Load client certificate, private key, and trusted CA certs. */ @@ -302,11 +326,17 @@ pqsecure_close(PGconn *conn) /* * Read data from a secure connection. + * + * On failure, this function is responsible for putting a suitable message + * into conn->errorMessage. The caller must still inspect errno, but only + * to determine whether to continue/retry after error. */ ssize_t pqsecure_read(PGconn *conn, void *ptr, size_t len) { ssize_t n; + int result_errno = 0; + char sebuf[256]; #ifdef USE_SSL if (conn->ssl) @@ -325,6 +355,14 @@ pqsecure_read(PGconn *conn, void *ptr, size_t len) switch (err) { case SSL_ERROR_NONE: + if (n < 0) + { + /* Not supposed to happen, so we don't translate the msg */ + printfPQExpBuffer(&conn->errorMessage, + "SSL_read failed but did not provide error information\n"); + /* assume the connection is broken */ + result_errno = ECONNRESET; + } break; case SSL_ERROR_WANT_READ: n = 0; @@ -339,43 +377,61 @@ pqsecure_read(PGconn *conn, void *ptr, size_t len) */ goto rloop; case SSL_ERROR_SYSCALL: + if (n < 0) { - char sebuf[256]; - - if (n == -1) - { - REMEMBER_EPIPE(spinfo, SOCK_ERRNO == EPIPE); + result_errno = SOCK_ERRNO; + REMEMBER_EPIPE(spinfo, result_errno == EPIPE); + if (result_errno == EPIPE || + result_errno == ECONNRESET) printfPQExpBuffer(&conn->errorMessage, - libpq_gettext("SSL SYSCALL error: %s\n"), - SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); - } + libpq_gettext( + "server closed the connection unexpectedly\n" + "\tThis probably means the server terminated abnormally\n" + "\tbefore or while processing the request.\n")); else - { printfPQExpBuffer(&conn->errorMessage, - libpq_gettext("SSL SYSCALL error: EOF detected\n")); - - SOCK_ERRNO_SET(ECONNRESET); - n = -1; - } - break; + libpq_gettext("SSL SYSCALL error: %s\n"), + SOCK_STRERROR(result_errno, + sebuf, sizeof(sebuf))); } + else + { + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("SSL SYSCALL error: EOF detected\n")); + /* assume the connection is broken */ + result_errno = ECONNRESET; + n = -1; + } + break; case SSL_ERROR_SSL: { - char *err = SSLerrmessage(); + char *errm = SSLerrmessage(); printfPQExpBuffer(&conn->errorMessage, - libpq_gettext("SSL error: %s\n"), err); - SSLerrfree(err); + libpq_gettext("SSL error: %s\n"), errm); + SSLerrfree(errm); + /* assume the connection is broken */ + result_errno = ECONNRESET; + n = -1; + break; } - /* fall through */ case SSL_ERROR_ZERO_RETURN: - SOCK_ERRNO_SET(ECONNRESET); + /* + * Per OpenSSL documentation, this error code is only returned + * for a clean connection closure, so we should not report it + * as a server crash. + */ + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("SSL connection has been closed unexpectedly\n")); + result_errno = ECONNRESET; n = -1; break; default: printfPQExpBuffer(&conn->errorMessage, libpq_gettext("unrecognized SSL error code: %d\n"), err); + /* assume the connection is broken */ + result_errno = ECONNRESET; n = -1; break; } @@ -383,19 +439,66 @@ pqsecure_read(PGconn *conn, void *ptr, size_t len) RESTORE_SIGPIPE(conn, spinfo); } else -#endif +#endif /* USE_SSL */ + { n = recv(conn->sock, ptr, len, 0); + if (n < 0) + { + result_errno = SOCK_ERRNO; + + /* Set error message if appropriate */ + switch (result_errno) + { +#ifdef EAGAIN + case EAGAIN: +#endif +#if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN)) + case EWOULDBLOCK: +#endif + case EINTR: + /* no error message, caller is expected to retry */ + break; + +#ifdef ECONNRESET + case ECONNRESET: + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext( + "server closed the connection unexpectedly\n" + "\tThis probably means the server terminated abnormally\n" + "\tbefore or while processing the request.\n")); + break; +#endif + + default: + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("could not receive data from server: %s\n"), + SOCK_STRERROR(result_errno, + sebuf, sizeof(sebuf))); + break; + } + } + } + + /* ensure we return the intended errno to caller */ + SOCK_ERRNO_SET(result_errno); + return n; } /* * Write data to a secure connection. + * + * On failure, this function is responsible for putting a suitable message + * into conn->errorMessage. The caller must still inspect errno, but only + * to determine whether to continue/retry after error. */ ssize_t pqsecure_write(PGconn *conn, const void *ptr, size_t len) { ssize_t n; + int result_errno = 0; + char sebuf[256]; DECLARE_SIGPIPE_INFO(spinfo); @@ -412,6 +515,14 @@ pqsecure_write(PGconn *conn, const void *ptr, size_t len) switch (err) { case SSL_ERROR_NONE: + if (n < 0) + { + /* Not supposed to happen, so we don't translate the msg */ + printfPQExpBuffer(&conn->errorMessage, + "SSL_write failed but did not provide error information\n"); + /* assume the connection is broken */ + result_errno = ECONNRESET; + } break; case SSL_ERROR_WANT_READ: @@ -426,48 +537,67 @@ pqsecure_write(PGconn *conn, const void *ptr, size_t len) n = 0; break; case SSL_ERROR_SYSCALL: + if (n < 0) { - char sebuf[256]; - - if (n == -1) - { - REMEMBER_EPIPE(spinfo, SOCK_ERRNO == EPIPE); + result_errno = SOCK_ERRNO; + REMEMBER_EPIPE(spinfo, result_errno == EPIPE); + if (result_errno == EPIPE || + result_errno == ECONNRESET) printfPQExpBuffer(&conn->errorMessage, - libpq_gettext("SSL SYSCALL error: %s\n"), - SOCK_STRERROR(SOCK_ERRNO, sebuf, sizeof(sebuf))); - } + libpq_gettext( + "server closed the connection unexpectedly\n" + "\tThis probably means the server terminated abnormally\n" + "\tbefore or while processing the request.\n")); else - { printfPQExpBuffer(&conn->errorMessage, - libpq_gettext("SSL SYSCALL error: EOF detected\n")); - SOCK_ERRNO_SET(ECONNRESET); - n = -1; - } - break; + libpq_gettext("SSL SYSCALL error: %s\n"), + SOCK_STRERROR(result_errno, + sebuf, sizeof(sebuf))); + } + else + { + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("SSL SYSCALL error: EOF detected\n")); + /* assume the connection is broken */ + result_errno = ECONNRESET; + n = -1; } + break; case SSL_ERROR_SSL: { - char *err = SSLerrmessage(); + char *errm = SSLerrmessage(); printfPQExpBuffer(&conn->errorMessage, - libpq_gettext("SSL error: %s\n"), err); - SSLerrfree(err); + libpq_gettext("SSL error: %s\n"), errm); + SSLerrfree(errm); + /* assume the connection is broken */ + result_errno = ECONNRESET; + n = -1; + break; } - /* fall through */ case SSL_ERROR_ZERO_RETURN: - SOCK_ERRNO_SET(ECONNRESET); + /* + * Per OpenSSL documentation, this error code is only returned + * for a clean connection closure, so we should not report it + * as a server crash. + */ + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("SSL connection has been closed unexpectedly\n")); + result_errno = ECONNRESET; n = -1; break; default: printfPQExpBuffer(&conn->errorMessage, libpq_gettext("unrecognized SSL error code: %d\n"), err); + /* assume the connection is broken */ + result_errno = ECONNRESET; n = -1; break; } } else -#endif +#endif /* USE_SSL */ { int flags = 0; @@ -484,13 +614,15 @@ pqsecure_write(PGconn *conn, const void *ptr, size_t len) if (n < 0) { + result_errno = SOCK_ERRNO; + /* * If we see an EINVAL, it may be because MSG_NOSIGNAL isn't * available on this machine. So, clear sigpipe_flag so we don't * try the flag again, and retry the send(). */ #ifdef MSG_NOSIGNAL - if (flags != 0 && SOCK_ERRNO == EINVAL) + if (flags != 0 && result_errno == EINVAL) { conn->sigpipe_flag = false; flags = 0; @@ -498,12 +630,49 @@ pqsecure_write(PGconn *conn, const void *ptr, size_t len) } #endif /* MSG_NOSIGNAL */ - REMEMBER_EPIPE(spinfo, SOCK_ERRNO == EPIPE); + /* Set error message if appropriate */ + switch (result_errno) + { +#ifdef EAGAIN + case EAGAIN: +#endif +#if defined(EWOULDBLOCK) && (!defined(EAGAIN) || (EWOULDBLOCK != EAGAIN)) + case EWOULDBLOCK: +#endif + case EINTR: + /* no error message, caller is expected to retry */ + break; + + case EPIPE: + /* Set flag for EPIPE */ + REMEMBER_EPIPE(spinfo, true); + /* FALL THRU */ + +#ifdef ECONNRESET + case ECONNRESET: +#endif + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext( + "server closed the connection unexpectedly\n" + "\tThis probably means the server terminated abnormally\n" + "\tbefore or while processing the request.\n")); + break; + + default: + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("could not send data to server: %s\n"), + SOCK_STRERROR(result_errno, + sebuf, sizeof(sebuf))); + break; + } } } RESTORE_SIGPIPE(conn, spinfo); + /* ensure we return the intended errno to caller */ + SOCK_ERRNO_SET(result_errno); + return n; } @@ -588,6 +757,11 @@ wildcard_certificate_match(const char *pattern, const char *string) static bool verify_peer_name_matches_certificate(PGconn *conn) { + char *peer_cn; + int r; + int len; + bool result; + /* * If told not to verify the peer name, don't do it. Return true * indicating that the verification was successful. @@ -595,33 +769,81 @@ verify_peer_name_matches_certificate(PGconn *conn) if (strcmp(conn->sslmode, "verify-full") != 0) return true; + /* + * Extract the common name from the certificate. + * + * XXX: Should support alternate names here + */ + /* First find out the name's length and allocate a buffer for it. */ + len = X509_NAME_get_text_by_NID(X509_get_subject_name(conn->peer), + NID_commonName, NULL, 0); + if (len == -1) + { + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("could not get server common name from server certificate\n")); + return false; + } + peer_cn = malloc(len + 1); + if (peer_cn == NULL) + { + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("out of memory\n")); + return false; + } + + r = X509_NAME_get_text_by_NID(X509_get_subject_name(conn->peer), + NID_commonName, peer_cn, len + 1); + if (r != len) + { + /* Got different length than on the first call. Shouldn't happen. */ + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("could not get server common name from server certificate\n")); + free(peer_cn); + return false; + } + peer_cn[len] = '\0'; + + /* + * Reject embedded NULLs in certificate common name to prevent attacks + * like CVE-2009-4034. + */ + if (len != strlen(peer_cn)) + { + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("SSL certificate's common name contains embedded null\n")); + free(peer_cn); + return false; + } + + /* + * We got the peer's common name. Now compare it against the originally + * given hostname. + */ if (!(conn->pghost && conn->pghost[0] != '\0')) { printfPQExpBuffer(&conn->errorMessage, libpq_gettext("host name must be specified for a verified SSL connection\n")); - return false; + result = false; } else { - /* - * Compare CN to originally given hostname. - * - * XXX: Should support alternate names here - */ - if (pg_strcasecmp(conn->peer_cn, conn->pghost) == 0) + if (pg_strcasecmp(peer_cn, conn->pghost) == 0) /* Exact name match */ - return true; - else if (wildcard_certificate_match(conn->peer_cn, conn->pghost)) + result = true; + else if (wildcard_certificate_match(peer_cn, conn->pghost)) /* Matched wildcard certificate */ - return true; + result = true; else { printfPQExpBuffer(&conn->errorMessage, libpq_gettext("server common name \"%s\" does not match host name \"%s\"\n"), - conn->peer_cn, conn->pghost); - return false; + peer_cn, conn->pghost); + result = false; } } + + free(peer_cn); + return result; } #ifdef ENABLE_THREAD_SAFETY @@ -757,6 +979,12 @@ init_ssl_system(PGconn *conn) #endif return -1; } + + /* + * Disable OpenSSL's moving-write-buffer sanity check, because it + * causes unnecessary failures in nonblocking send cases. + */ + SSL_CTX_set_mode(SSL_context, SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER); } #ifdef ENABLE_THREAD_SAFETY @@ -794,8 +1022,9 @@ destroy_ssl_system(void) CRYPTO_set_id_callback(NULL); /* - * We don't free the lock array. If we get another connection in this - * process, we will just re-use it with the existing mutexes. + * We don't free the lock array or the SSL_context. If we get another + * connection in this process, we will just re-use them with the + * existing mutexes. * * This means we leak a little memory on repeated load/unload of the * library. @@ -862,7 +1091,7 @@ initialize_SSL(PGconn *conn) * might or might not accept the connection. Any other error, * however, is grounds for complaint. */ - if (errno != ENOENT) + if (errno != ENOENT && errno != ENOTDIR) { printfPQExpBuffer(&conn->errorMessage, libpq_gettext("could not open certificate file \"%s\": %s\n"), @@ -884,7 +1113,21 @@ initialize_SSL(PGconn *conn) * understands which subject cert to present, in case different * sslcert settings are used for different connections in the same * process. + * + * NOTE: This function may also modify our SSL_context and therefore + * we have to lock around this call and any places where we use the + * SSL_context struct. */ +#ifdef ENABLE_THREAD_SAFETY + int rc; + + if ((rc = pthread_mutex_lock(&ssl_config_mutex))) + { + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("could not acquire mutex: %s\n"), strerror(rc)); + return -1; + } +#endif if (SSL_CTX_use_certificate_chain_file(SSL_context, fnbuf) != 1) { char *err = SSLerrmessage(); @@ -893,8 +1136,13 @@ initialize_SSL(PGconn *conn) libpq_gettext("could not read certificate file \"%s\": %s\n"), fnbuf, err); SSLerrfree(err); + +#ifdef ENABLE_THREAD_SAFETY + pthread_mutex_unlock(&ssl_config_mutex); +#endif return -1; } + if (SSL_use_certificate_file(conn->ssl, fnbuf, SSL_FILETYPE_PEM) != 1) { char *err = SSLerrmessage(); @@ -903,10 +1151,18 @@ initialize_SSL(PGconn *conn) libpq_gettext("could not read certificate file \"%s\": %s\n"), fnbuf, err); SSLerrfree(err); +#ifdef ENABLE_THREAD_SAFETY + pthread_mutex_unlock(&ssl_config_mutex); +#endif return -1; } + /* need to load the associated private key, too */ have_cert = true; + +#ifdef ENABLE_THREAD_SAFETY + pthread_mutex_unlock(&ssl_config_mutex); +#endif } /* @@ -926,7 +1182,17 @@ initialize_SSL(PGconn *conn) { /* Colon, but not in second character, treat as engine:key */ char *engine_str = strdup(conn->sslkey); - char *engine_colon = strchr(engine_str, ':'); + char *engine_colon; + + if (engine_str == NULL) + { + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("out of memory\n")); + return -1; + } + + /* cannot return NULL because we already checked before strdup */ + engine_colon = strchr(engine_str, ':'); *engine_colon = '\0'; /* engine_str now has engine name */ engine_colon++; /* engine_colon now has key name */ @@ -1072,6 +1338,16 @@ initialize_SSL(PGconn *conn) { X509_STORE *cvstore; +#ifdef ENABLE_THREAD_SAFETY + int rc; + + if ((rc = pthread_mutex_lock(&ssl_config_mutex))) + { + printfPQExpBuffer(&conn->errorMessage, + libpq_gettext("could not acquire mutex: %s\n"), strerror(rc)); + return -1; + } +#endif if (SSL_CTX_load_verify_locations(SSL_context, fnbuf, NULL) != 1) { char *err = SSLerrmessage(); @@ -1080,6 +1356,9 @@ initialize_SSL(PGconn *conn) libpq_gettext("could not read root certificate file \"%s\": %s\n"), fnbuf, err); SSLerrfree(err); +#ifdef ENABLE_THREAD_SAFETY + pthread_mutex_unlock(&ssl_config_mutex); +#endif return -1; } @@ -1107,11 +1386,17 @@ initialize_SSL(PGconn *conn) libpq_gettext("SSL library does not support CRL certificates (file \"%s\")\n"), fnbuf); SSLerrfree(err); +#ifdef ENABLE_THREAD_SAFETY + pthread_mutex_unlock(&ssl_config_mutex); +#endif return -1; #endif } /* if not found, silently ignore; we do not require CRL */ } +#ifdef ENABLE_THREAD_SAFETY + pthread_mutex_unlock(&ssl_config_mutex); +#endif SSL_set_verify(conn->ssl, SSL_VERIFY_PEER, verify_cb); } @@ -1211,7 +1496,7 @@ open_client_SSL(PGconn *conn) * SSL_CTX_set_verify(), if root.crt exists. */ - /* pull out server distinguished and common names */ + /* get server certificate */ conn->peer = SSL_get_peer_certificate(conn->ssl); if (conn->peer == NULL) { @@ -1225,33 +1510,6 @@ open_client_SSL(PGconn *conn) return PGRES_POLLING_FAILED; } - X509_NAME_oneline(X509_get_subject_name(conn->peer), - conn->peer_dn, sizeof(conn->peer_dn)); - conn->peer_dn[sizeof(conn->peer_dn) - 1] = '\0'; - - r = X509_NAME_get_text_by_NID(X509_get_subject_name(conn->peer), - NID_commonName, conn->peer_cn, SM_USER); - conn->peer_cn[SM_USER] = '\0'; /* buffer is SM_USER+1 chars! */ - if (r == -1) - { - /* Unable to get the CN, set it to blank so it can't be used */ - conn->peer_cn[0] = '\0'; - } - else - { - /* - * Reject embedded NULLs in certificate common name to prevent attacks - * like CVE-2009-4034. - */ - if (r != strlen(conn->peer_cn)) - { - printfPQExpBuffer(&conn->errorMessage, - libpq_gettext("SSL certificate's common name contains embedded null\n")); - close_SSL(conn); - return PGRES_POLLING_FAILED; - } - } - if (!verify_peer_name_matches_certificate(conn)) { close_SSL(conn); @@ -1268,15 +1526,23 @@ open_client_SSL(PGconn *conn) static void close_SSL(PGconn *conn) { + bool destroy_needed = false; + if (conn->ssl) { DECLARE_SIGPIPE_INFO(spinfo); + /* + * We can't destroy everything SSL-related here due to the possible + * later calls to OpenSSL routines which may need our thread + * callbacks, so set a flag here and check at the end. + */ + destroy_needed = true; + DISABLE_SIGPIPE(conn, spinfo, (void) 0); SSL_shutdown(conn->ssl); SSL_free(conn->ssl); conn->ssl = NULL; - pqsecure_destroy(); /* We have to assume we got EPIPE */ REMEMBER_EPIPE(spinfo, true); RESTORE_SIGPIPE(conn, spinfo); @@ -1296,6 +1562,17 @@ close_SSL(PGconn *conn) conn->engine = NULL; } #endif + + /* + * This will remove our SSL locking hooks, if this is the last SSL + * connection, which means we must wait to call it until after all + * SSL calls have been made, otherwise we can end up with a race + * condition and possible deadlocks. + * + * See comments above destroy_ssl_system(). + */ + if (destroy_needed) + pqsecure_destroy(); } /* diff --git a/src/interfaces/libpq/libpq-int.h b/src/interfaces/libpq/libpq-int.h index d56ef5d489..0c29669159 100644 --- a/src/interfaces/libpq/libpq-int.h +++ b/src/interfaces/libpq/libpq-int.h @@ -405,8 +405,6 @@ struct pg_conn * attempting normal connection */ SSL *ssl; /* SSL status, if have SSL connection */ X509 *peer; /* X509 cert of server */ - char peer_dn[256 + 1]; /* peer distinguished name */ - char peer_cn[SM_USER + 1]; /* peer common name */ #ifdef USE_SSL_ENGINE ENGINE *engine; /* SSL engine, if any */ #else diff --git a/src/interfaces/libpq/libpq.rc.in b/src/interfaces/libpq/libpq.rc.in index adf00b1a28..f7a1aa8fbb 100644 --- a/src/interfaces/libpq/libpq.rc.in +++ b/src/interfaces/libpq/libpq.rc.in @@ -1,8 +1,8 @@ #include VS_VERSION_INFO VERSIONINFO - FILEVERSION 9,1,0,0 - PRODUCTVERSION 9,1,0,0 + FILEVERSION 9,1,13,0 + PRODUCTVERSION 9,1,13,0 FILEFLAGSMASK 0x3fL FILEFLAGS 0 FILEOS VOS__WINDOWS32 @@ -15,13 +15,13 @@ BEGIN BEGIN VALUE "CompanyName", "\0" VALUE "FileDescription", "PostgreSQL Access Library\0" - VALUE "FileVersion", "9.1.0\0" + VALUE "FileVersion", "9.1.13\0" VALUE "InternalName", "libpq\0" - VALUE "LegalCopyright", "Copyright (C) 2011\0" + VALUE "LegalCopyright", "Copyright (C) 2012\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "libpq.dll\0" VALUE "ProductName", "PostgreSQL\0" - VALUE "ProductVersion", "9.1.0\0" + VALUE "ProductVersion", "9.1.13\0" END END BLOCK "VarFileInfo" diff --git a/src/interfaces/libpq/nls.mk b/src/interfaces/libpq/nls.mk index 5d38d1acf2..9eab6dcbc5 100644 --- a/src/interfaces/libpq/nls.mk +++ b/src/interfaces/libpq/nls.mk @@ -1,5 +1,5 @@ # src/interfaces/libpq/nls.mk CATALOG_NAME := libpq -AVAIL_LANGUAGES := cs de es fr it ja ko pt_BR ru sv ta tr zh_CN zh_TW +AVAIL_LANGUAGES := cs de es fr it ja ko pl pt_BR ru sv tr zh_CN zh_TW GETTEXT_FILES := fe-auth.c fe-connect.c fe-exec.c fe-lobj.c fe-misc.c fe-protocol2.c fe-protocol3.c fe-secure.c GETTEXT_TRIGGERS:= libpq_gettext pqInternalNotice:2 diff --git a/src/interfaces/libpq/po/cs.po b/src/interfaces/libpq/po/cs.po index fdf1ab4ae6..39743b48d8 100644 --- a/src/interfaces/libpq/po/cs.po +++ b/src/interfaces/libpq/po/cs.po @@ -1,115 +1,119 @@ -# translation of libpq-cs.po to Czech -# Czech translation of libpq messages +# Czech translation of libpq # -# pgtranslation Id: libpq.po,v 1.4 2009/10/14 21:08:40 petere Exp $ -# Karel Žák, 2001-2003, 2004. -# Zdeněk Kotala, 2009. +# pgtranslation Id: libpq.po,v 1.6 2011/09/08 18:23:05 petere Exp $ # +# Karel Žák, 2001-2003, 2004. +# Zdeněk Kotala, 2009, 2011, 2012, 2013. +# Tomáš Vondra , 2011, 2012, 2013. msgid "" msgstr "" -"Project-Id-Version: postgresql-8.4\n" +"Project-Id-Version: libpq-cs (PostgreSQL 9.1)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2009-05-24 01:17+0000\n" -"PO-Revision-Date: 2009-05-24 14:26+0200\n" -"Last-Translator: Zdeněk Kotala\n" -"Language-Team: \n" +"POT-Creation-Date: 2013-10-09 13:39+0000\n" +"PO-Revision-Date: 2013-10-12 00:40+0200\n" +"Last-Translator: \n" +"Language-Team: Czech \n" +"Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 1.5\n" + +#: fe-auth.c:210 fe-auth.c:429 fe-auth.c:656 +msgid "host name must be specified\n" +msgstr "host musí být zadán\n" -#: fe-auth.c:242 +#: fe-auth.c:240 #, c-format msgid "could not set socket to blocking mode: %s\n" msgstr "nelze nastavit soket do blokujícího módu: %s\n" -#: fe-auth.c:260 fe-auth.c:264 +#: fe-auth.c:258 fe-auth.c:262 #, c-format msgid "Kerberos 5 authentication rejected: %*s\n" msgstr "Kerberos 5 autentizace odmítnuta: %*s\n" -#: fe-auth.c:290 +#: fe-auth.c:288 #, c-format msgid "could not restore non-blocking mode on socket: %s\n" msgstr "nelze obnovit neblokující mód soketu: %s\n" -#: fe-auth.c:403 +#: fe-auth.c:400 msgid "GSSAPI continuation error" msgstr "Přetrvávající chyba GSSAPI" -#: fe-auth.c:432 +#: fe-auth.c:436 msgid "duplicate GSS authentication request\n" msgstr "duplikátní GSS autentizační požadavek\n" -#: fe-auth.c:452 +#: fe-auth.c:456 msgid "GSSAPI name import error" msgstr "chyba importu jména GSSAPI" -#: fe-auth.c:538 +#: fe-auth.c:542 msgid "SSPI continuation error" msgstr "Přetrvávající chyba SSPI" -#: fe-auth.c:549 fe-auth.c:622 fe-auth.c:656 fe-auth.c:753 fe-connect.c:1335 -#: fe-connect.c:2616 fe-connect.c:2833 fe-connect.c:3199 fe-connect.c:3208 -#: fe-connect.c:3345 fe-connect.c:3391 fe-connect.c:3409 fe-exec.c:3109 -#: fe-lobj.c:696 fe-protocol2.c:1027 fe-protocol3.c:1421 +#: fe-auth.c:553 fe-auth.c:627 fe-auth.c:662 fe-auth.c:757 fe-connect.c:1971 +#: fe-connect.c:3380 fe-connect.c:3598 fe-connect.c:4019 fe-connect.c:4028 +#: fe-connect.c:4165 fe-connect.c:4211 fe-connect.c:4229 fe-connect.c:4308 +#: fe-connect.c:4378 fe-connect.c:4424 fe-connect.c:4442 fe-exec.c:3121 +#: fe-exec.c:3286 fe-lobj.c:711 fe-protocol2.c:1092 fe-protocol3.c:1433 +#: fe-secure.c:790 fe-secure.c:1190 msgid "out of memory\n" msgstr "nedostatek paměti\n" -#: fe-auth.c:637 +#: fe-auth.c:642 msgid "could not acquire SSPI credentials" msgstr "nelze získat SSL credentials." -#: fe-auth.c:650 -msgid "host name must be specified\n" -msgstr "host musí být specifikován\n" - -#: fe-auth.c:729 +#: fe-auth.c:733 msgid "SCM_CRED authentication method not supported\n" msgstr "SCM_CRED metoda autentizace není podporována\n" -#: fe-auth.c:803 +#: fe-auth.c:807 msgid "Kerberos 4 authentication not supported\n" msgstr "Kerberos 4 autentizace není podporována\n" -#: fe-auth.c:819 +#: fe-auth.c:823 msgid "Kerberos 5 authentication not supported\n" msgstr "Kerberos 5 autentizace není podporována\n" -#: fe-auth.c:886 +#: fe-auth.c:895 msgid "GSSAPI authentication not supported\n" msgstr "GSSAPI autentizace není podporována\n" -#: fe-auth.c:910 +#: fe-auth.c:927 msgid "SSPI authentication not supported\n" msgstr "SSPI autentizace není podporována\n" -#: fe-auth.c:917 +#: fe-auth.c:935 msgid "Crypt authentication not supported\n" msgstr "Crypt autentizace není podporována\n" -#: fe-auth.c:944 +#: fe-auth.c:962 #, c-format msgid "authentication method %u not supported\n" msgstr "autentizační metoda %u není podporována\n" -#: fe-connect.c:524 +#: fe-connect.c:758 #, c-format msgid "invalid sslmode value: \"%s\"\n" msgstr "neplatná hodnota sslmode: \"%s\"\n" -#: fe-connect.c:545 +#: fe-connect.c:779 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" msgstr "" "hodnota sslmode \"%s\" je neplatná pokud není zakompilována podpora SSL\n" -#: fe-connect.c:728 +#: fe-connect.c:972 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "nelze nastavit \"no delay\" mód TCP soketu: %s\n" -#: fe-connect.c:758 +#: fe-connect.c:1002 #, c-format msgid "" "could not connect to server: %s\n" @@ -120,7 +124,18 @@ msgstr "" "\tJe spuštěn server lokálně a akceptuje\n" "\tspojení pomocí Unix soketu \"%s\"?\n" -#: fe-connect.c:768 +#: fe-connect.c:1057 +#, c-format +msgid "" +"could not connect to server: %s\n" +"\tIs the server running on host \"%s\" (%s) and accepting\n" +"\tTCP/IP connections on port %s?\n" +msgstr "" +"nelze navázat spojení se serverem: %s\n" +"\tJe server na \"%s\" (%s) spuštěn a akceptuje\n" +"\tTCP/IP spojení na portu %s?\n" + +#: fe-connect.c:1066 #, c-format msgid "" "could not connect to server: %s\n" @@ -131,270 +146,351 @@ msgstr "" "\tJe server na \"%s\" spuštěn a akceptuje\n" "\tTCP/IP spojení na portu %s?\n" -#: fe-connect.c:858 +#: fe-connect.c:1117 +#, c-format +msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" +msgstr "setsockopt(TCP_KEEPIDLE) selhalo: %s\n" + +#: fe-connect.c:1130 +#, c-format +msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" +msgstr "setsockopt(TCP_KEEPALIVE) selhalo: %s\n" + +#: fe-connect.c:1162 +#, c-format +msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" +msgstr "setsockopt(TCP_KEEPINTVL) selhalo: %s\n" + +#: fe-connect.c:1194 +#, c-format +msgid "setsockopt(TCP_KEEPCNT) failed: %s\n" +msgstr "setsockopt(TCP_KEEPCNT) selhalo: %s\n" + +#: fe-connect.c:1242 +#, c-format +msgid "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" +msgstr "WSAIoctl(SIO_KEEPALIVE_VALS) selhalo: %ui\n" + +#: fe-connect.c:1294 +#, c-format +msgid "invalid port number: \"%s\"\n" +msgstr "neplatné číslo portu: \"%s\"\n" + +#: fe-connect.c:1327 +#, c-format +msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" +msgstr "Cesta k unixovému \"%s\" je příliš dlouhá (maximum %d bytů)\n" + +#: fe-connect.c:1346 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "nemohu přeložit jméno hostitele \"%s\" na adresu: %s\n" -#: fe-connect.c:862 +#: fe-connect.c:1350 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "nemohu přeložit cestu Unix-domain soketu \"%s\" na adresu: %s\n" -#: fe-connect.c:1065 +#: fe-connect.c:1560 msgid "invalid connection state, probably indicative of memory corruption\n" -msgstr "neplatný stav spojení, pravděpodobně indikující porušení paměti\n" +msgstr "neplatný stav spojení, pravděpodobně způsobený poškozením paměti\n" -#: fe-connect.c:1108 +#: fe-connect.c:1601 #, c-format msgid "could not create socket: %s\n" msgstr "nelze vytvořit soket: %s\n" -#: fe-connect.c:1131 +#: fe-connect.c:1624 #, c-format msgid "could not set socket to non-blocking mode: %s\n" msgstr "nelze nastavit soket do neblokujícího módu: %s\n" -#: fe-connect.c:1143 +#: fe-connect.c:1636 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "nelze nastavit soket do close-on-exec módu: %s\n" -#: fe-connect.c:1230 +#: fe-connect.c:1656 +msgid "keepalives parameter must be an integer\n" +msgstr "parametr keepalives musí být celé číslo\n" + +#: fe-connect.c:1669 +#, c-format +msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" +msgstr "setsockopt(SO_KEEPALIVE) selhalo: %s\n" + +#: fe-connect.c:1811 #, c-format msgid "could not get socket error status: %s\n" msgstr "nelze obdržet chybový status soketu: %s\n" -#: fe-connect.c:1268 +#: fe-connect.c:1849 #, c-format msgid "could not get client address from socket: %s\n" msgstr "nelze získat adresu klienta ze soketu: %s\n" -#: fe-connect.c:1312 +#: fe-connect.c:1890 +msgid "requirepeer parameter is not supported on this platform\n" +msgstr "parametr requirepeer není na této platformě podporován\n" + +#: fe-connect.c:1893 +#, c-format +msgid "could not get peer credentials: %s\n" +msgstr "nelze získat informace (credentials) protistrany: %s\n" + +#: fe-connect.c:1903 +#, c-format +msgid "local user with ID %d does not exist\n" +msgstr "lokální uživatel s ID %d neexistuje\n" + +#: fe-connect.c:1911 +#, c-format +msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" +msgstr "requirepeer obsahuje \"%s\", ale skutečné jméno peera je \"%s\"\n" + +#: fe-connect.c:1945 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "nelze poslat SSL \"negotiation paket\": %s\n" -#: fe-connect.c:1348 +#: fe-connect.c:1984 #, c-format msgid "could not send startup packet: %s\n" msgstr "nelze poslat počáteční paket: %s\n" -#: fe-connect.c:1414 fe-connect.c:1432 +#: fe-connect.c:2054 msgid "server does not support SSL, but SSL was required\n" msgstr "server nepodporuje SSL, leč SSL je vyžadováno\n" -#: fe-connect.c:1448 +#: fe-connect.c:2080 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "přijata neplatná odpověď na SSL negotiation: %c\n" -#: fe-connect.c:1524 fe-connect.c:1557 +#: fe-connect.c:2159 fe-connect.c:2192 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "očekáván byl autentizační dotaz ze serveru, ale přijat byl %c\n" -#: fe-connect.c:1728 +#: fe-connect.c:2373 #, c-format msgid "out of memory allocating GSSAPI buffer (%i)" msgstr "nedostatek paměti pro alokaci GSSAPI bufferu (%i)" -#: fe-connect.c:1813 +#: fe-connect.c:2458 msgid "unexpected message from server during startup\n" msgstr "neočekávaná zpráva ze serveru během startu\n" -#: fe-connect.c:1881 +#: fe-connect.c:2557 #, c-format -msgid "invalid connection state %c, probably indicative of memory corruption\n" -msgstr "neplatný status spojení %c, pravděpodobně indikující porušení paměti\n" +msgid "invalid connection state %d, probably indicative of memory corruption\n" +msgstr "neplatný stav spojení %d, pravděpodobně způsobený poškozením paměti\n" -#: fe-connect.c:2224 fe-connect.c:2284 +#: fe-connect.c:2988 fe-connect.c:3048 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "PGEventProc \"%s\" selhalo během události PGEVT_CONNRESET\n" -#: fe-connect.c:2629 +#: fe-connect.c:3393 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" msgstr "naplatné LDAP URL \"%s\": schéma musí být ldap://\n" -#: fe-connect.c:2644 +#: fe-connect.c:3408 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "neplatné LDAP URL \"%s\": chybí rozlišující jméno\n" -#: fe-connect.c:2655 fe-connect.c:2708 +#: fe-connect.c:3419 fe-connect.c:3472 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "neplatné LDAP URL \"%s\": musí mít právě jeden atribut\n" -#: fe-connect.c:2665 fe-connect.c:2722 +#: fe-connect.c:3429 fe-connect.c:3486 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" msgstr "naplatné LDAP URL \"%s\": musí mít vyhledávací rozsah (base/one/sub)\n" -#: fe-connect.c:2676 +#: fe-connect.c:3440 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "naplatné LDAP URL \"%s\": není filter\n" -#: fe-connect.c:2697 +#: fe-connect.c:3461 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "naplatné LDAP URL \"%s\": neplatný číslo portu\n" -#: fe-connect.c:2731 +#: fe-connect.c:3495 msgid "could not create LDAP structure\n" msgstr "nelze vytvořit LDAP strukturu\n" -#: fe-connect.c:2773 +#: fe-connect.c:3537 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "vyhledávání na LDAP serveru selhalo: %s\n" -#: fe-connect.c:2784 +#: fe-connect.c:3548 msgid "more than one entry found on LDAP lookup\n" msgstr "nalezen více jak jeden záznam při LDAP vyhledávání\n" -#: fe-connect.c:2785 fe-connect.c:2797 +#: fe-connect.c:3549 fe-connect.c:3561 msgid "no entry found on LDAP lookup\n" msgstr "nebyl nalezen žádný záznam při LDAP vyhledávání\n" -#: fe-connect.c:2808 fe-connect.c:2821 +#: fe-connect.c:3572 fe-connect.c:3585 msgid "attribute has no values on LDAP lookup\n" msgstr "atribut nemá žádnou hodnotu při LDAP vyhledávání\n" -#: fe-connect.c:2872 fe-connect.c:2890 fe-connect.c:3247 +#: fe-connect.c:3637 fe-connect.c:3656 fe-connect.c:4067 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "chybné \"=\" po \"%s\" v informačním řetězci spojení\n" -#: fe-connect.c:2953 fe-connect.c:3329 +#: fe-connect.c:3720 fe-connect.c:4149 fe-connect.c:4333 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "neplatný parametr spojení \"%s\"\n" -#: fe-connect.c:2966 fe-connect.c:3296 +#: fe-connect.c:3736 fe-connect.c:4116 msgid "unterminated quoted string in connection info string\n" msgstr "neukončený řetězec v uvozovkách v informačním řetězci spojení\n" -#: fe-connect.c:3009 +#: fe-connect.c:3775 +msgid "could not get home directory to locate service definition file" +msgstr "nelze získat domovský adresář pro nalezení kořenového certifikátu" + +#: fe-connect.c:3808 +#, c-format +msgid "definition of service \"%s\" not found\n" +msgstr "definice služby \"%s\" nenalezena\n" + +#: fe-connect.c:3831 #, c-format -msgid "ERROR: service file \"%s\" not found\n" -msgstr "CHYBA: soubor se seznamem služeb \"%s\" nebyl nalezen\n" +msgid "service file \"%s\" not found\n" +msgstr "soubor se seznamem služeb \"%s\" nebyl nalezen\n" -#: fe-connect.c:3022 +#: fe-connect.c:3844 #, c-format -msgid "ERROR: line %d too long in service file \"%s\"\n" -msgstr "CHYBA: řádka %d v souboru se seznamem služeb \"%s\" je příliš dlouhá\n" +msgid "line %d too long in service file \"%s\"\n" +msgstr "řádek %d v souboru se seznamem služeb \"%s\" je příliš dlouhý\n" -#: fe-connect.c:3094 fe-connect.c:3121 +#: fe-connect.c:3915 fe-connect.c:3942 #, c-format -msgid "ERROR: syntax error in service file \"%s\", line %d\n" -msgstr "CHYBA: syntaktická chyba v souboru se seznamem služeb \"%s\", řádka %d\n" +msgid "syntax error in service file \"%s\", line %d\n" +msgstr "syntaktická chyba v souboru se seznamu služeb \"%s\", řádek %d\n" -#: fe-connect.c:3577 +#: fe-connect.c:4609 msgid "connection pointer is NULL\n" msgstr "pointer spojení je NULL\n" -#: fe-connect.c:3860 +#: fe-connect.c:4886 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" -msgstr "VAROVÁNÍ: soubor s hesly \"%s\" není obyčejný soubor\n" +msgstr "VAROVÁNÍ: soubor s hesly \"%s\" není prostý (plain) soubor\n" -#: fe-connect.c:3869 +#: fe-connect.c:4895 #, c-format msgid "" "WARNING: password file \"%s\" has group or world access; permissions should " "be u=rw (0600) or less\n" msgstr "" -"UPOZORNĚNÍ: Soubor s hesly \"%s\" má přístupová práva pro čtení pro skupinu nebo " -"všechny uživatele; práva by měla být u=rw (0600)\n" +"UPOZORNĚNÍ: Soubor s hesly \"%s\" má přístupová práva pro čtení pro skupinu " +"nebo všechny uživatele; práva by měla být u=rw (0600)\n" + +#: fe-connect.c:4983 +#, c-format +msgid "password retrieved from file \"%s\"\n" +msgstr "heslo načteno ze souboru \"%s\"\n" -#: fe-exec.c:826 +#: fe-exec.c:810 msgid "NOTICE" msgstr "POZNÁMKA" -#: fe-exec.c:1013 fe-exec.c:1070 fe-exec.c:1110 +#: fe-exec.c:997 fe-exec.c:1054 fe-exec.c:1094 msgid "command string is a null pointer\n" msgstr "řetězec příkazu je prázdný ukazatel\n" -#: fe-exec.c:1103 fe-exec.c:1198 +#: fe-exec.c:1087 fe-exec.c:1182 msgid "statement name is a null pointer\n" msgstr "název výrazu je prázdný ukazatel\n" -#: fe-exec.c:1118 fe-exec.c:1272 fe-exec.c:1927 fe-exec.c:2124 +#: fe-exec.c:1102 fe-exec.c:1256 fe-exec.c:1925 fe-exec.c:2123 msgid "function requires at least protocol version 3.0\n" msgstr "funkce vyžaduje protokol alespoň 3.0 a vyšší\n" -#: fe-exec.c:1229 +#: fe-exec.c:1213 msgid "no connection to the server\n" msgstr "není spojení se serverem\n" -#: fe-exec.c:1236 +#: fe-exec.c:1220 msgid "another command is already in progress\n" msgstr "zpracovává se již jiný příkaz\n" -#: fe-exec.c:1348 +#: fe-exec.c:1332 msgid "length must be given for binary parameter\n" -msgstr "delká musí být specifikována pro binarní parametr\n" +msgstr "délka musí být specifikována pro binarní parametr\n" -#: fe-exec.c:1595 +#: fe-exec.c:1585 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "neočekávaný asyncStatus: %d\n" -#: fe-exec.c:1615 +#: fe-exec.c:1605 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" msgstr "PGEventProc \"%s\" selhala během události PGEVT_RESULTCREATE\n" -#: fe-exec.c:1745 +#: fe-exec.c:1735 msgid "COPY terminated by new PQexec" msgstr "COPY bylo ukončeno novým PQexec" -#: fe-exec.c:1753 +#: fe-exec.c:1743 msgid "COPY IN state must be terminated first\n" msgstr "COPY IN status musí být nejdříve ukončen\n" -#: fe-exec.c:1773 +#: fe-exec.c:1763 msgid "COPY OUT state must be terminated first\n" msgstr "COPY OUT status musí být nejdříve ukončen\n" -#: fe-exec.c:2015 fe-exec.c:2081 fe-exec.c:2166 fe-protocol2.c:1172 -#: fe-protocol3.c:1557 +#: fe-exec.c:1771 +msgid "PQexec not allowed during COPY BOTH\n" +msgstr "PQexec není povoleno během COPY BOTH\n" + +#: fe-exec.c:2014 fe-exec.c:2080 fe-exec.c:2167 fe-protocol2.c:1237 +#: fe-protocol3.c:1569 msgid "no COPY in progress\n" msgstr "COPY se neprovádí\n" -#: fe-exec.c:2358 +#: fe-exec.c:2359 msgid "connection in wrong state\n" msgstr "spojení je ve špatném stavu\n" -#: fe-exec.c:2389 +#: fe-exec.c:2390 msgid "invalid ExecStatusType code" msgstr "neplatný ExecStatusType kód" -#: fe-exec.c:2453 fe-exec.c:2476 +#: fe-exec.c:2454 fe-exec.c:2477 #, c-format msgid "column number %d is out of range 0..%d" msgstr "číslo sloupce %d je mimo rozsah 0..%d" -#: fe-exec.c:2469 +#: fe-exec.c:2470 #, c-format msgid "row number %d is out of range 0..%d" msgstr "číslo řádky %d je mimo rozsah 0..%d" -#: fe-exec.c:2491 +#: fe-exec.c:2492 #, c-format msgid "parameter number %d is out of range 0..%d" msgstr "číslo parametru %d je mimo rozsah 0..%d" -#: fe-exec.c:2778 +#: fe-exec.c:2780 #, c-format msgid "could not interpret result from server: %s" msgstr "nelze interpretovat výsledek ze serveru: %s" -#: fe-exec.c:3017 +#: fe-exec.c:3019 fe-exec.c:3103 msgid "incomplete multibyte character\n" msgstr "nekompletní multibyte znak\n" @@ -406,125 +502,117 @@ msgstr "nelze určit OID funkce lo_truncare\n" msgid "cannot determine OID of function lo_create\n" msgstr "nelze určit OID funkce lo_create\n" -#: fe-lobj.c:525 fe-lobj.c:624 +#: fe-lobj.c:525 fe-lobj.c:634 #, c-format msgid "could not open file \"%s\": %s\n" msgstr "nelze otevřít soubor \"%s\": %s\n" -#: fe-lobj.c:575 +#: fe-lobj.c:580 #, c-format msgid "could not read from file \"%s\": %s\n" msgstr "nelze číst ze souboru \"%s\": %s\n" -#: fe-lobj.c:639 fe-lobj.c:663 +#: fe-lobj.c:654 fe-lobj.c:678 #, c-format msgid "could not write to file \"%s\": %s\n" msgstr "nelze zapsat do souboru \"%s\": %s\n" -#: fe-lobj.c:744 +#: fe-lobj.c:759 msgid "query to initialize large object functions did not return data\n" msgstr "dotaz inicializující \"large object\" funkce nevrátil data\n" -#: fe-lobj.c:785 +#: fe-lobj.c:800 msgid "cannot determine OID of function lo_open\n" msgstr "nelze určit OID funkce lo_open\n" -#: fe-lobj.c:792 +#: fe-lobj.c:807 msgid "cannot determine OID of function lo_close\n" msgstr "nelze určit OID funkce lo_close\n" -#: fe-lobj.c:799 +#: fe-lobj.c:814 msgid "cannot determine OID of function lo_creat\n" msgstr "nelze určit OID funkce lo_create\n" -#: fe-lobj.c:806 +#: fe-lobj.c:821 msgid "cannot determine OID of function lo_unlink\n" msgstr "nelze určit OID funkce lo_unlink\n" -#: fe-lobj.c:813 +#: fe-lobj.c:828 msgid "cannot determine OID of function lo_lseek\n" msgstr "nelze určit OID funkce lo_lseek\n" -#: fe-lobj.c:820 +#: fe-lobj.c:835 msgid "cannot determine OID of function lo_tell\n" msgstr "nelze určit OID funkce lo_tell\n" -#: fe-lobj.c:827 +#: fe-lobj.c:842 msgid "cannot determine OID of function loread\n" msgstr "nelze určit OID funkce loread\n" -#: fe-lobj.c:834 +#: fe-lobj.c:849 msgid "cannot determine OID of function lowrite\n" msgstr "nelze určit OID funkce lowrite\n" -#: fe-misc.c:241 +#: fe-misc.c:270 #, c-format msgid "integer of size %lu not supported by pqGetInt" msgstr "pqGetInt nepodporuje integer velikosti %lu" -#: fe-misc.c:277 +#: fe-misc.c:306 #, c-format msgid "integer of size %lu not supported by pqPutInt" msgstr "pqPutInt nepodporuje integer velikosti %lu" -#: fe-misc.c:557 fe-misc.c:759 +#: fe-misc.c:585 fe-misc.c:784 msgid "connection not open\n" msgstr "spojení není otevřeno\n" -#: fe-misc.c:622 fe-misc.c:712 -#, c-format -msgid "could not receive data from server: %s\n" -msgstr "nelze přijmout data ze serveru: %s\n" - -#: fe-misc.c:729 fe-misc.c:806 +#: fe-misc.c:711 fe-secure.c:388 fe-secure.c:467 fe-secure.c:548 +#: fe-secure.c:656 msgid "" "server closed the connection unexpectedly\n" "\tThis probably means the server terminated abnormally\n" "\tbefore or while processing the request.\n" msgstr "" -"server ukončil neočekávaně spojení\n" +"server neočekávaně ukončil spojení\n" "\tToto pravděpodobně znamená, že byl ukončen nestandardně\n" "\tpřed nebo během vykonávání požadavku.\n" -#: fe-misc.c:823 -#, c-format -msgid "could not send data to server: %s\n" -msgstr "nelze poslat data na server: %s\n" - -#: fe-misc.c:942 +#: fe-misc.c:948 msgid "timeout expired\n" -msgstr "časový interval uběhl\n" +msgstr "časový limit (timeout) uběhl\n" -#: fe-misc.c:987 +#: fe-misc.c:993 msgid "socket not open\n" msgstr "soket není otevřen\n" -#: fe-misc.c:1010 +#: fe-misc.c:1016 #, c-format msgid "select() failed: %s\n" msgstr "select() selhal: %s\n" -#: fe-protocol2.c:89 +#: fe-protocol2.c:91 #, c-format msgid "invalid setenv state %c, probably indicative of memory corruption\n" -msgstr "neplatný status spojení %c, pravděpodobně indikující porušení paměti\n" +msgstr "" +"neplatný status spojení %c, pravděpodobně způsobený poškozením paměti\n" -#: fe-protocol2.c:330 +#: fe-protocol2.c:390 #, c-format msgid "invalid state %c, probably indicative of memory corruption\n" -msgstr "neplatný status %c, pravděpodobně indikující porušení paměti\n" +msgstr "neplatný status %c, pravděpodobně způsobený poškozením paměti\n" -#: fe-protocol2.c:419 fe-protocol3.c:186 +#: fe-protocol2.c:479 fe-protocol3.c:186 #, c-format msgid "message type 0x%02x arrived from server while idle" msgstr "zpráva typu 0x%02x přišla ze serveru během nečinnosti" -#: fe-protocol2.c:462 +#: fe-protocol2.c:522 #, c-format msgid "unexpected character %c following empty query response (\"I\" message)" msgstr "neočekávaný znak %c následuje prázdnou odezvu dotazu(\"I\" zpráva)" -#: fe-protocol2.c:516 +#: fe-protocol2.c:576 msgid "" "server sent data (\"D\" message) without prior row description (\"T\" " "message)" @@ -532,7 +620,7 @@ msgstr "" "server odeslal data (\"D\" zpráva) bez předcházejícího popisu řádky (\"T\" " "zpráva)" -#: fe-protocol2.c:532 +#: fe-protocol2.c:592 msgid "" "server sent binary data (\"B\" message) without prior row description (\"T\" " "message)" @@ -540,25 +628,25 @@ msgstr "" "server odeslal binární data (\"B\" zpráva) bez předchozího popisu řádky (\"T" "\" zpráva)" -#: fe-protocol2.c:547 fe-protocol3.c:382 +#: fe-protocol2.c:612 fe-protocol3.c:388 #, c-format msgid "unexpected response from server; first received character was \"%c\"\n" msgstr "neočekávaná odpověď serveru; předchozí znak byl \"%c\"\n" -#: fe-protocol2.c:768 fe-protocol3.c:701 +#: fe-protocol2.c:833 fe-protocol3.c:707 msgid "out of memory for query result\n" -msgstr "nedostatek paměti pro odpověď dotazu\n" +msgstr "nedostatek paměti pro výsledek dotazu\n" -#: fe-protocol2.c:1215 fe-protocol3.c:1625 +#: fe-protocol2.c:1280 fe-protocol3.c:1637 #, c-format msgid "%s" msgstr "%s" -#: fe-protocol2.c:1227 +#: fe-protocol2.c:1292 msgid "lost synchronization with server, resetting connection" msgstr "ztráta synchronizace se serverem, resetuji spojení" -#: fe-protocol2.c:1361 fe-protocol2.c:1393 fe-protocol3.c:1828 +#: fe-protocol2.c:1426 fe-protocol2.c:1458 fe-protocol3.c:1840 #, c-format msgid "protocol error: id=0x%x\n" msgstr "chyba protokolu: id=0x%x\n" @@ -571,201 +659,241 @@ msgstr "" "server odeslal data (\"D\" zpráva) bez předchozího popisu řádky (\"T\" " "zpráva)\n" -#: fe-protocol3.c:403 +#: fe-protocol3.c:409 #, c-format msgid "message contents do not agree with length in message type \"%c\"\n" msgstr "obsah zprávy nesouhlasí s délkou v typu zprávy \"%c\"\n" -#: fe-protocol3.c:424 +#: fe-protocol3.c:430 #, c-format msgid "lost synchronization with server: got message type \"%c\", length %d\n" msgstr "" "ztracena synchronizace se serverem: obdržena zpráva typu \"%c\", délky %d\n" -#: fe-protocol3.c:646 +#: fe-protocol3.c:652 msgid "unexpected field count in \"D\" message\n" msgstr "neočekávaný počet polí v \"D\" zprávě\n" #. translator: %s represents a digit string -#: fe-protocol3.c:788 fe-protocol3.c:807 +#: fe-protocol3.c:798 fe-protocol3.c:817 #, c-format msgid " at character %s" msgstr "na znaku %s" -#: fe-protocol3.c:820 +#: fe-protocol3.c:830 #, c-format msgid "DETAIL: %s\n" msgstr "DETAIL: %s\n" -#: fe-protocol3.c:823 +#: fe-protocol3.c:833 #, c-format msgid "HINT: %s\n" msgstr "DOPORUČENÍ: %s\n" -#: fe-protocol3.c:826 +#: fe-protocol3.c:836 #, c-format msgid "QUERY: %s\n" msgstr "DOTAZ: %s\n" -#: fe-protocol3.c:829 +#: fe-protocol3.c:839 #, c-format msgid "CONTEXT: %s\n" msgstr "KONTEXT: %s\n" -#: fe-protocol3.c:841 +#: fe-protocol3.c:851 msgid "LOCATION: " msgstr "UMÍSTĚNÍ: " -#: fe-protocol3.c:843 +#: fe-protocol3.c:853 #, c-format msgid "%s, " msgstr "%s, " -#: fe-protocol3.c:845 +#: fe-protocol3.c:855 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: fe-protocol3.c:1069 +#: fe-protocol3.c:1079 #, c-format msgid "LINE %d: " msgstr "ŘÁDKA %d: " -#: fe-protocol3.c:1453 +#: fe-protocol3.c:1465 msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline: not doing text COPY OUT\n" -#: fe-secure.c:244 +#: fe-secure.c:271 fe-secure.c:1127 fe-secure.c:1347 +#, c-format +#| msgid "could not create SSL context: %s\n" +msgid "could not acquire mutex: %s\n" +msgstr "nelze získat mutex: %s\n" + +#: fe-secure.c:283 #, c-format msgid "could not establish SSL connection: %s\n" msgstr "nelze vytvořit SSL spojení: %s\n" -#: fe-secure.c:320 fe-secure.c:404 fe-secure.c:1115 +#: fe-secure.c:393 fe-secure.c:553 fe-secure.c:1465 #, c-format msgid "SSL SYSCALL error: %s\n" msgstr "SSL SYSCALL chyba: %s\n" -#: fe-secure.c:326 fe-secure.c:410 fe-secure.c:1119 +#: fe-secure.c:400 fe-secure.c:560 fe-secure.c:1469 msgid "SSL SYSCALL error: EOF detected\n" msgstr "SSL SYSCALL chyba: detekován EOF\n" -#: fe-secure.c:338 fe-secure.c:421 fe-secure.c:1138 +#: fe-secure.c:411 fe-secure.c:571 fe-secure.c:1478 #, c-format msgid "SSL error: %s\n" msgstr "SSL chyba: %s\n" -#: fe-secure.c:348 fe-secure.c:431 fe-secure.c:1148 +#: fe-secure.c:425 fe-secure.c:585 +msgid "SSL connection has been closed unexpectedly\n" +msgstr "SSL spojení bylo neočekávaně ukončeno\n" + +#: fe-secure.c:431 fe-secure.c:591 fe-secure.c:1487 #, c-format msgid "unrecognized SSL error code: %d\n" msgstr "neznámý chybový kód SSL: %d\n" -#: fe-secure.c:532 -msgid "" -"verified SSL connections are only supported when connecting to a host name" -msgstr "" +#: fe-secure.c:475 +#, c-format +msgid "could not receive data from server: %s\n" +msgstr "nelze přijmout data ze serveru: %s\n" + +#: fe-secure.c:663 +#, c-format +msgid "could not send data to server: %s\n" +msgstr "nelze poslat data na server: %s\n" + +#: fe-secure.c:783 fe-secure.c:800 +msgid "could not get server common name from server certificate\n" +msgstr "ze serverového certifikátu nelze získat common name serveru\n" + +#: fe-secure.c:813 +msgid "SSL certificate's common name contains embedded null\n" +msgstr "Veřejné jméno SSL certifikátu obsahuje vloženou null hodnotu\n" -#: fe-secure.c:551 +#: fe-secure.c:825 +msgid "host name must be specified for a verified SSL connection\n" +msgstr "host musí být specifikován pro ověřené SSL spojení\n" + +#: fe-secure.c:839 #, c-format -msgid "server common name \"%s\" does not match host name \"%s\"" -msgstr "veřejné jméno serveru \"%s\" nesouhlasí s jménem serveru (host name) \"%s\"" +msgid "server common name \"%s\" does not match host name \"%s\"\n" +msgstr "" +"veřejné jméno serveru \"%s\" nesouhlasí s jménem serveru (host name) \"%s\"\n" -#: fe-secure.c:593 -msgid "could not get home directory to locate client certificate files" -msgstr "nelze získat domovský adresář pro nalezení klientského certifikátu" +#: fe-secure.c:974 +#, c-format +msgid "could not create SSL context: %s\n" +msgstr "nelze vytvořit SSL kontext: %s\n" -#: fe-secure.c:617 fe-secure.c:631 +#: fe-secure.c:1097 #, c-format msgid "could not open certificate file \"%s\": %s\n" -msgstr "nelze otevřít soubor certifikátu \"%s\": %s\n" +msgstr "nelze otevřít soubor s certifikátem \"%s\": %s\n" -#: fe-secure.c:642 +#: fe-secure.c:1136 fe-secure.c:1151 #, c-format msgid "could not read certificate file \"%s\": %s\n" -msgstr "nelze číst soubor certifikát \"%s\": %s\n" +msgstr "nelze číst soubor s certifikátem \"%s\": %s\n" -#: fe-secure.c:681 +#: fe-secure.c:1206 #, c-format msgid "could not load SSL engine \"%s\": %s\n" msgstr "nelze nahrát SSL engine \"%s\": %s\n" -#: fe-secure.c:696 +#: fe-secure.c:1218 +#, c-format +msgid "could not initialize SSL engine \"%s\": %s\n" +msgstr "nelze inicializovat SSL engine \"%s\": %s\n" + +#: fe-secure.c:1234 #, c-format msgid "could not read private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "nelze číst soubor privátního klíče \"%s\" z enginu \"%s\": %s\n" -#: fe-secure.c:727 +#: fe-secure.c:1248 +#, c-format +msgid "could not load private SSL key \"%s\" from engine \"%s\": %s\n" +msgstr "nelze načíst soubor privátního klíče \"%s\" z enginu \"%s\": %s\n" + +#: fe-secure.c:1285 #, c-format msgid "certificate present, but not private key file \"%s\"\n" msgstr "certifikát je přítomen, ale soubor privátního klíče ne \"%s\"\n" -#: fe-secure.c:736 +#: fe-secure.c:1293 #, c-format msgid "" "private key file \"%s\" has group or world access; permissions should be " "u=rw (0600) or less\n" msgstr "" -"soubor s privátním klíčem \"%s\" má povolená přístupová práva pro skupinu nebo " -"všechny uživatele; práva by měla být u=rw (0600) nebo přísnější\n" +"soubor s privátním klíčem \"%s\" má povolená přístupová práva pro skupinu " +"nebo všechny uživatele; práva by měla být u=rw (0600) nebo přísnější\n" -#: fe-secure.c:746 +#: fe-secure.c:1304 #, c-format -msgid "could not open private key file \"%s\": %s\n" -msgstr "nelze otevřít soubor s privátním klíčem \"%s\": %s\n" +msgid "could not load private key file \"%s\": %s\n" +msgstr "nelze načíst soubor privátního klíče \"%s\": %s\n" -#: fe-secure.c:757 -#, c-format -msgid "private key file \"%s\" changed during execution\n" -msgstr "soubor privátního klíče \"%s\" byl za chodu změněn\n" - -#: fe-secure.c:768 -#, c-format -msgid "could not read private key file \"%s\": %s\n" -msgstr "nelze číst soubor privátního klíče \"%s\": %s\n" - -#: fe-secure.c:786 +#: fe-secure.c:1318 #, c-format msgid "certificate does not match private key file \"%s\": %s\n" msgstr "certifikát nesouhlasí se souborem privátního klíče \"%s\": %s\n" -#: fe-secure.c:917 -#, c-format -msgid "could not create SSL context: %s\n" -msgstr "nelze vytvořit SSL kontext: %s\n" - -#: fe-secure.c:1005 -msgid "could not get home directory to locate root certificate file" -msgstr "nelze získat domovský adresář pro nalezení kořenového certifikátu" - -#: fe-secure.c:1029 +#: fe-secure.c:1356 #, c-format msgid "could not read root certificate file \"%s\": %s\n" msgstr "nelze číst soubor s kořenovým certifikátem \"%s\": %s\n" -#: fe-secure.c:1054 +#: fe-secure.c:1386 #, c-format msgid "SSL library does not support CRL certificates (file \"%s\")\n" msgstr "knihovna SSL nepodporuje CRL certifikáty (file \"%s\")\n" -#: fe-secure.c:1070 +#: fe-secure.c:1419 +msgid "" +"could not get home directory to locate root certificate file\n" +"Either provide the file or change sslmode to disable server certificate " +"verification.\n" +msgstr "" +"nelze určit domácí adresář pro nalezení souboru s kořenovým certifikátem\"\n" +"Buď poskytněte soubor nebo změňte ssl mód tak, aby neověřoval certifkát " +"serveru.\n" + +#: fe-secure.c:1423 #, c-format msgid "" "root certificate file \"%s\" does not exist\n" "Either provide the file or change sslmode to disable server certificate " "verification.\n" -msgstr "soubor s kořenovým certifikátem \"%s\" neexistuje\n" -"poskytněnte soubor nebo změntě ssl mód tak, aby neověřoval certifkát serveru.\n" +msgstr "" +"soubor s kořenovým certifikátem \"%s\" neexistuje\n" +"poskytněnte soubor nebo změntě ssl mód tak, aby neověřoval certifkát " +"serveru.\n" -#: fe-secure.c:1167 +#: fe-secure.c:1506 #, c-format msgid "certificate could not be obtained: %s\n" -msgstr "certifikát nelze obdržet: %s\n" +msgstr "certifikát nelze získat: %s\n" -#: fe-secure.c:1241 +#: fe-secure.c:1602 msgid "no SSL error reported" msgstr "žádný chybový kód SSL nebyl hlášený" -#: fe-secure.c:1250 +#: fe-secure.c:1611 #, c-format msgid "SSL error code %lu" msgstr "SSL chybový kód %lu" +#~ msgid "could not get home directory to locate client certificate files" +#~ msgstr "nelze získat domovský adresář pro nalezení klientského certifikátu" + +#~ msgid "could not open private key file \"%s\": %s\n" +#~ msgstr "nelze otevřít soubor s privátním klíčem \"%s\": %s\n" + +#~ msgid "private key file \"%s\" changed during execution\n" +#~ msgstr "soubor privátního klíče \"%s\" byl za chodu změněn\n" diff --git a/src/interfaces/libpq/po/de.po b/src/interfaces/libpq/po/de.po index ac58142fc0..ed9e4f3730 100644 --- a/src/interfaces/libpq/po/de.po +++ b/src/interfaces/libpq/po/de.po @@ -1,7 +1,5 @@ # German message translation file for libpq -# Peter Eisentraut , 2001 - 2011. -# -# pgtranslation Id: libpq.po,v 1.24 2011/05/20 19:38:39 petere Exp $ +# Peter Eisentraut , 2001 - 2013. # # Use these quotes: »%s« # @@ -9,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2011-05-20 00:42+0000\n" -"PO-Revision-Date: 2011-05-20 21:42+0300\n" +"POT-Creation-Date: 2013-09-30 15:08+0000\n" +"PO-Revision-Date: 2013-10-02 21:25-0400\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" "Language: de\n" @@ -18,102 +16,103 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: fe-auth.c:212 fe-auth.c:431 fe-auth.c:658 +#: fe-auth.c:210 fe-auth.c:429 fe-auth.c:656 msgid "host name must be specified\n" msgstr "Hostname muss angegeben werden\n" -#: fe-auth.c:242 +#: fe-auth.c:240 #, c-format msgid "could not set socket to blocking mode: %s\n" msgstr "konnte Socket nicht auf blockierenden Modus umstellen: %s\n" -#: fe-auth.c:260 fe-auth.c:264 +#: fe-auth.c:258 fe-auth.c:262 #, c-format msgid "Kerberos 5 authentication rejected: %*s\n" msgstr "Authentifizierung mit Kerberos 5 abgelehnt: %*s\n" -#: fe-auth.c:290 +#: fe-auth.c:288 #, c-format msgid "could not restore non-blocking mode on socket: %s\n" msgstr "" "konnte den nicht blockierenden Modus auf dem Socket nicht wieder herstellen: " "%s\n" -#: fe-auth.c:402 +#: fe-auth.c:400 msgid "GSSAPI continuation error" msgstr "GSSAPI-Fortsetzungsfehler" -#: fe-auth.c:438 +#: fe-auth.c:436 msgid "duplicate GSS authentication request\n" msgstr "doppelte GSSAPI-Authentifizierungsanfrage\n" -#: fe-auth.c:458 +#: fe-auth.c:456 msgid "GSSAPI name import error" msgstr "GSSAPI-Namensimportfehler" -#: fe-auth.c:544 +#: fe-auth.c:542 msgid "SSPI continuation error" msgstr "SSPI-Fortsetzungsfehler" -#: fe-auth.c:555 fe-auth.c:629 fe-auth.c:664 fe-auth.c:761 fe-connect.c:1995 -#: fe-connect.c:3394 fe-connect.c:3612 fe-connect.c:4033 fe-connect.c:4042 -#: fe-connect.c:4179 fe-connect.c:4225 fe-connect.c:4243 fe-connect.c:4322 -#: fe-connect.c:4392 fe-connect.c:4438 fe-connect.c:4456 fe-exec.c:3140 -#: fe-exec.c:3305 fe-lobj.c:696 fe-protocol2.c:1092 fe-protocol3.c:1433 +#: fe-auth.c:553 fe-auth.c:627 fe-auth.c:662 fe-auth.c:757 fe-connect.c:1971 +#: fe-connect.c:3380 fe-connect.c:3598 fe-connect.c:4019 fe-connect.c:4028 +#: fe-connect.c:4165 fe-connect.c:4211 fe-connect.c:4229 fe-connect.c:4308 +#: fe-connect.c:4378 fe-connect.c:4424 fe-connect.c:4442 fe-exec.c:3121 +#: fe-exec.c:3286 fe-lobj.c:711 fe-protocol2.c:1092 fe-protocol3.c:1433 +#: fe-secure.c:790 fe-secure.c:1190 msgid "out of memory\n" msgstr "Speicher aufgebraucht\n" -#: fe-auth.c:644 +#: fe-auth.c:642 msgid "could not acquire SSPI credentials" msgstr "konnte SSPI-Credentials nicht erhalten" -#: fe-auth.c:737 +#: fe-auth.c:733 msgid "SCM_CRED authentication method not supported\n" msgstr "SCM_CRED-Authentifizierungsmethode nicht unterstützt\n" -#: fe-auth.c:811 +#: fe-auth.c:807 msgid "Kerberos 4 authentication not supported\n" msgstr "Authentifizierung mit Kerberos 4 nicht unterstützt\n" -#: fe-auth.c:827 +#: fe-auth.c:823 msgid "Kerberos 5 authentication not supported\n" msgstr "Authentifizierung mit Kerberos 5 nicht unterstützt\n" -#: fe-auth.c:899 +#: fe-auth.c:895 msgid "GSSAPI authentication not supported\n" msgstr "Authentifizierung mit GSSAPI nicht unterstützt\n" -#: fe-auth.c:931 +#: fe-auth.c:927 msgid "SSPI authentication not supported\n" msgstr "Authentifizierung mit SSPI nicht unterstützt\n" -#: fe-auth.c:939 +#: fe-auth.c:935 msgid "Crypt authentication not supported\n" msgstr "Authentifizierung mit Crypt nicht unterstützt\n" -#: fe-auth.c:966 +#: fe-auth.c:962 #, c-format msgid "authentication method %u not supported\n" msgstr "Authentifizierungsmethode %u nicht unterstützt\n" -#: fe-connect.c:761 +#: fe-connect.c:758 #, c-format msgid "invalid sslmode value: \"%s\"\n" msgstr "ungültiger sslmode-Wert: »%s«\n" -#: fe-connect.c:782 +#: fe-connect.c:779 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" msgstr "" "sslmode-Wert »%s« ist ungültig, wenn SSL-Unterstützung nicht einkompiliert " "worden ist\n" -#: fe-connect.c:975 +#: fe-connect.c:972 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "konnte Socket nicht auf TCP »No Delay«-Modus umstellen: %s\n" -#: fe-connect.c:1005 +#: fe-connect.c:1002 #, c-format msgid "" "could not connect to server: %s\n" @@ -124,7 +123,7 @@ msgstr "" "\tLäuft der Server lokal und akzeptiert er Verbindungen\n" "\tauf dem Unix-Domain-Socket »%s«?\n" -#: fe-connect.c:1060 +#: fe-connect.c:1057 #, c-format msgid "" "could not connect to server: %s\n" @@ -135,7 +134,7 @@ msgstr "" "\tLäuft der Server auf dem Host »%s« (%s) und akzeptiert er\n" "\tTCP/IP-Verbindungen auf Port %s?\n" -#: fe-connect.c:1069 +#: fe-connect.c:1066 #, c-format msgid "" "could not connect to server: %s\n" @@ -146,257 +145,257 @@ msgstr "" "\tLäuft der Server auf dem Host »%s« und akzeptiert er\n" "\tTCP/IP-Verbindungen auf Port %s?\n" -#: fe-connect.c:1120 +#: fe-connect.c:1117 #, c-format msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" msgstr "setsockopt(TCP_KEEPIDLE) fehlgeschlagen: %s\n" -#: fe-connect.c:1133 +#: fe-connect.c:1130 #, c-format msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" msgstr "setsockopt(TCP_KEEPALIVE) fehlgeschlagen: %s\n" -#: fe-connect.c:1165 +#: fe-connect.c:1162 #, c-format msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" msgstr "setsockopt(TCP_KEEPINTVL) fehlgeschlagen: %s\n" -#: fe-connect.c:1197 +#: fe-connect.c:1194 #, c-format msgid "setsockopt(TCP_KEEPCNT) failed: %s\n" msgstr "setsockopt(TCP_KEEPCNT) fehlgeschlagen: %s\n" -#: fe-connect.c:1245 +#: fe-connect.c:1242 #, c-format msgid "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" msgstr "WSAIoctl(SIO_KEEPALIVE_VALS) fehlgeschlagen: %ui\n" -#: fe-connect.c:1297 +#: fe-connect.c:1294 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "ungültige Portnummer: »%s«\n" -#: fe-connect.c:1340 +#: fe-connect.c:1327 +#, c-format +msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" +msgstr "Unix-Domain-Socket-Pfad »%s« ist zu lang (maximal %d Bytes)\n" + +#: fe-connect.c:1346 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "konnte Hostname »%s« nicht in Adresse übersetzen: %s\n" -#: fe-connect.c:1344 +#: fe-connect.c:1350 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "konnte Unix-Domain-Socket-Pfad »%s« nicht in Adresse übersetzen: %s\n" -#: fe-connect.c:1554 +#: fe-connect.c:1560 msgid "invalid connection state, probably indicative of memory corruption\n" msgstr "ungültiger Verbindungszustand, möglicherweise ein Speicherproblem\n" -#: fe-connect.c:1595 +#: fe-connect.c:1601 #, c-format msgid "could not create socket: %s\n" msgstr "konnte Socket nicht erzeugen: %s\n" -#: fe-connect.c:1618 +#: fe-connect.c:1624 #, c-format msgid "could not set socket to non-blocking mode: %s\n" msgstr "konnte Socket nicht auf nicht-blockierenden Modus umstellen: %s\n" -#: fe-connect.c:1630 +#: fe-connect.c:1636 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "konnte Socket nicht auf »Close on exec«-Modus umstellen: %s\n" -#: fe-connect.c:1650 +#: fe-connect.c:1656 msgid "keepalives parameter must be an integer\n" msgstr "Parameter »keepalives« muss eine ganze Zahl sein\n" -#: fe-connect.c:1663 +#: fe-connect.c:1669 #, c-format msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" msgstr "setsockopt(SO_KEEPALIVE) fehlgeschlagen: %s\n" -#: fe-connect.c:1804 +#: fe-connect.c:1811 #, c-format msgid "could not get socket error status: %s\n" msgstr "konnte Socket-Fehlerstatus nicht ermitteln: %s\n" -#: fe-connect.c:1842 +#: fe-connect.c:1849 #, c-format msgid "could not get client address from socket: %s\n" msgstr "konnte Client-Adresse vom Socket nicht ermitteln: %s\n" -#: fe-connect.c:1874 fe-connect.c:1888 fe-connect.c:1900 +#: fe-connect.c:1890 +msgid "requirepeer parameter is not supported on this platform\n" +msgstr "Parameter »requirepeer« wird auf dieser Plattform nicht unterstützt\n" + +#: fe-connect.c:1893 #, c-format msgid "could not get peer credentials: %s\n" msgstr "konnte Credentials von Gegenstelle nicht ermitteln: %s\n" -#: fe-connect.c:1908 -#, c-format -msgid "could not get effective UID from peer credentials: %s\n" -msgstr "konnte effektive UID nicht aus Peer-Credentials ermitteln: %s\n" - -#: fe-connect.c:1923 +#: fe-connect.c:1903 #, c-format msgid "local user with ID %d does not exist\n" msgstr "lokaler Benutzer mit ID %d existiert nicht\n" -#: fe-connect.c:1931 +#: fe-connect.c:1911 #, c-format msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" msgstr "" "requirepeer gibt »%s« an, aber tatsächlicher Benutzername der Gegenstelle " "ist »%s«\n" -#: fe-connect.c:1937 -msgid "requirepeer parameter is not supported on this platform\n" -msgstr "Parameter »requirepeer« wird auf dieser Plattform nicht unterstützt\n" - -#: fe-connect.c:1969 +#: fe-connect.c:1945 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "konnte Paket zur SSL-Verhandlung nicht senden: %s\n" -#: fe-connect.c:2008 +#: fe-connect.c:1984 #, c-format msgid "could not send startup packet: %s\n" msgstr "konnte Startpaket nicht senden: %s\n" -#: fe-connect.c:2075 fe-connect.c:2094 +#: fe-connect.c:2054 msgid "server does not support SSL, but SSL was required\n" msgstr "Server unterstützt kein SSL, aber SSL wurde verlangt\n" -#: fe-connect.c:2110 +#: fe-connect.c:2080 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "ungültige Antwort auf SSL-Verhandlungspaket empfangen: %c\n" -#: fe-connect.c:2186 fe-connect.c:2219 +#: fe-connect.c:2159 fe-connect.c:2192 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "" "Authentifizierungsanfrage wurde vom Server erwartet, aber %c wurde " "empfangen\n" -#: fe-connect.c:2392 +#: fe-connect.c:2373 #, c-format msgid "out of memory allocating GSSAPI buffer (%i)" msgstr "Speicher aufgebraucht beim Anlegen des GSSAPI-Puffers (%i)" -#: fe-connect.c:2477 +#: fe-connect.c:2458 msgid "unexpected message from server during startup\n" msgstr "unerwartete Nachricht vom Server beim Start\n" -#: fe-connect.c:2573 +#: fe-connect.c:2557 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" msgstr "ungültiger Verbindungszustand %d, möglicherweise ein Speicherproblem\n" -#: fe-connect.c:3002 fe-connect.c:3062 +#: fe-connect.c:2988 fe-connect.c:3048 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "PGEventProc »%s« während PGEVT_CONNRESET-Ereignis fehlgeschlagen\n" -#: fe-connect.c:3407 +#: fe-connect.c:3393 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" -msgstr "ungÜltige LDAP-URL »%s«: Schema muss ldap:// sein\n" +msgstr "ungültige LDAP-URL »%s«: Schema muss ldap:// sein\n" -#: fe-connect.c:3422 +#: fe-connect.c:3408 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "ungültige LDAP-URL »%s«: Distinguished Name fehlt\n" -#: fe-connect.c:3433 fe-connect.c:3486 +#: fe-connect.c:3419 fe-connect.c:3472 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "ungültige LDAP-URL »%s«: muss genau ein Attribut haben\n" -#: fe-connect.c:3443 fe-connect.c:3500 +#: fe-connect.c:3429 fe-connect.c:3486 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" msgstr "ungültige LDAP-URL »%s«: Suchbereich fehlt (base/one/sub)\n" -#: fe-connect.c:3454 +#: fe-connect.c:3440 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "ungültige LDAP-URL »%s«: kein Filter\n" -#: fe-connect.c:3475 +#: fe-connect.c:3461 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "ungültige LDAP-URL »%s«: ungültige Portnummer\n" -#: fe-connect.c:3509 +#: fe-connect.c:3495 msgid "could not create LDAP structure\n" msgstr "konnte LDAP-Struktur nicht erzeugen\n" -#: fe-connect.c:3551 +#: fe-connect.c:3537 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "Suche auf LDAP-Server fehlgeschlagen: %s\n" -#: fe-connect.c:3562 +#: fe-connect.c:3548 msgid "more than one entry found on LDAP lookup\n" msgstr "LDAP-Suche ergab mehr als einen Eintrag\n" -#: fe-connect.c:3563 fe-connect.c:3575 +#: fe-connect.c:3549 fe-connect.c:3561 msgid "no entry found on LDAP lookup\n" msgstr "kein Eintrag gefunden bei LDAP-Suche\n" -#: fe-connect.c:3586 fe-connect.c:3599 +#: fe-connect.c:3572 fe-connect.c:3585 msgid "attribute has no values on LDAP lookup\n" msgstr "Attribut hat keine Werte bei LDAP-Suche\n" -#: fe-connect.c:3651 fe-connect.c:3670 fe-connect.c:4081 +#: fe-connect.c:3637 fe-connect.c:3656 fe-connect.c:4067 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "fehlendes »=« nach »%s« in der Zeichenkette der Verbindungsdaten\n" -#: fe-connect.c:3734 fe-connect.c:4163 fe-connect.c:4347 +#: fe-connect.c:3720 fe-connect.c:4149 fe-connect.c:4333 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "ungültige Verbindungsoption »%s«\n" -#: fe-connect.c:3750 fe-connect.c:4130 +#: fe-connect.c:3736 fe-connect.c:4116 msgid "unterminated quoted string in connection info string\n" msgstr "" "fehlendes schließendes Anführungszeichen (\") in der Zeichenkette der " -"Verbindugsdaten\n" +"Verbindungsdaten\n" -#: fe-connect.c:3789 +#: fe-connect.c:3775 msgid "could not get home directory to locate service definition file" msgstr "" "konnte Home-Verzeichnis nicht ermitteln, um Servicedefinitionsdatei zu finden" -#: fe-connect.c:3822 +#: fe-connect.c:3808 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "Definition von Service »%s« nicht gefunden\n" -#: fe-connect.c:3845 +#: fe-connect.c:3831 #, c-format msgid "service file \"%s\" not found\n" msgstr "Servicedatei »%s« nicht gefunden\n" -#: fe-connect.c:3858 +#: fe-connect.c:3844 #, c-format msgid "line %d too long in service file \"%s\"\n" msgstr "Zeile %d zu lang in Servicedatei »%s«\n" -#: fe-connect.c:3929 fe-connect.c:3956 +#: fe-connect.c:3915 fe-connect.c:3942 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "Syntaxfehler in Servicedatei »%s«, Zeile %d\n" -#: fe-connect.c:4623 +#: fe-connect.c:4609 msgid "connection pointer is NULL\n" msgstr "Verbindung ist ein NULL-Zeiger\n" -#: fe-connect.c:4900 +#: fe-connect.c:4886 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" msgstr "WARNUNG: Passwortdatei »%s« ist keine normale Datei\n" -#: fe-connect.c:4909 +#: fe-connect.c:4895 #, c-format msgid "" "WARNING: password file \"%s\" has group or world access; permissions should " @@ -405,99 +404,99 @@ msgstr "" "WARNUNG: Passwortdatei »%s« erlaubt Lesezugriff für Gruppe oder Andere; " "Rechte sollten u=rw (0600) oder weniger sein\n" -#: fe-connect.c:4997 +#: fe-connect.c:4983 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "Passwort wurde aus Datei »%s« gelesen\n" -#: fe-exec.c:829 +#: fe-exec.c:810 msgid "NOTICE" msgstr "HINWEIS" -#: fe-exec.c:1016 fe-exec.c:1073 fe-exec.c:1113 +#: fe-exec.c:997 fe-exec.c:1054 fe-exec.c:1094 msgid "command string is a null pointer\n" msgstr "Befehlszeichenkette ist ein NULL-Zeiger\n" -#: fe-exec.c:1106 fe-exec.c:1201 +#: fe-exec.c:1087 fe-exec.c:1182 msgid "statement name is a null pointer\n" msgstr "Anweisungsname ist ein NULL-Zeiger\n" -#: fe-exec.c:1121 fe-exec.c:1275 fe-exec.c:1944 fe-exec.c:2142 +#: fe-exec.c:1102 fe-exec.c:1256 fe-exec.c:1925 fe-exec.c:2123 msgid "function requires at least protocol version 3.0\n" msgstr "Funktion erfordert mindestens Protokollversion 3.0\n" -#: fe-exec.c:1232 +#: fe-exec.c:1213 msgid "no connection to the server\n" msgstr "keine Verbindung mit dem Server\n" -#: fe-exec.c:1239 +#: fe-exec.c:1220 msgid "another command is already in progress\n" msgstr "ein anderer Befehl ist bereits in Ausführung\n" -#: fe-exec.c:1351 +#: fe-exec.c:1332 msgid "length must be given for binary parameter\n" msgstr "für binäre Parameter muss eine Länge angegeben werden\n" -#: fe-exec.c:1604 +#: fe-exec.c:1585 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "unerwarteter asyncStatus: %d\n" -#: fe-exec.c:1624 +#: fe-exec.c:1605 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" msgstr "PGEventProc »%s« während PGEVT_RESULTCREATE-Ereignis fehlgeschlagen\n" -#: fe-exec.c:1754 +#: fe-exec.c:1735 msgid "COPY terminated by new PQexec" msgstr "COPY von neuem PQexec beendet" -#: fe-exec.c:1762 +#: fe-exec.c:1743 msgid "COPY IN state must be terminated first\n" msgstr "COPY-IN-Zustand muss erst beendet werden\n" -#: fe-exec.c:1782 +#: fe-exec.c:1763 msgid "COPY OUT state must be terminated first\n" msgstr "COPY-OUT-Zustand muss erst beendet werden\n" -#: fe-exec.c:1790 +#: fe-exec.c:1771 msgid "PQexec not allowed during COPY BOTH\n" msgstr "PQexec ist während COPY BOTH nicht erlaubt\n" -#: fe-exec.c:2033 fe-exec.c:2099 fe-exec.c:2186 fe-protocol2.c:1237 +#: fe-exec.c:2014 fe-exec.c:2080 fe-exec.c:2167 fe-protocol2.c:1237 #: fe-protocol3.c:1569 msgid "no COPY in progress\n" msgstr "keine COPY in Ausführung\n" -#: fe-exec.c:2378 +#: fe-exec.c:2359 msgid "connection in wrong state\n" msgstr "Verbindung im falschen Zustand\n" -#: fe-exec.c:2409 +#: fe-exec.c:2390 msgid "invalid ExecStatusType code" msgstr "ungültiger ExecStatusType-Kode" -#: fe-exec.c:2473 fe-exec.c:2496 +#: fe-exec.c:2454 fe-exec.c:2477 #, c-format msgid "column number %d is out of range 0..%d" msgstr "Spaltennummer %d ist außerhalb des zulässigen Bereichs 0..%d" -#: fe-exec.c:2489 +#: fe-exec.c:2470 #, c-format msgid "row number %d is out of range 0..%d" msgstr "Zeilennummer %d ist außerhalb des zulässigen Bereichs 0..%d" -#: fe-exec.c:2511 +#: fe-exec.c:2492 #, c-format msgid "parameter number %d is out of range 0..%d" msgstr "Parameternummer %d ist außerhalb des zulässigen Bereichs 0..%d" -#: fe-exec.c:2799 +#: fe-exec.c:2780 #, c-format msgid "could not interpret result from server: %s" msgstr "konnte Ergebnis vom Server nicht interpretieren: %s" -#: fe-exec.c:3038 fe-exec.c:3122 +#: fe-exec.c:3019 fe-exec.c:3103 msgid "incomplete multibyte character\n" msgstr "unvollständiges Mehrbyte-Zeichen\n" @@ -509,101 +508,92 @@ msgstr "kann OID der Funktion lo_truncate nicht ermitteln\n" msgid "cannot determine OID of function lo_create\n" msgstr "kann OID der Funktion lo_create nicht ermitteln\n" -#: fe-lobj.c:525 fe-lobj.c:624 +#: fe-lobj.c:525 fe-lobj.c:634 #, c-format msgid "could not open file \"%s\": %s\n" msgstr "konnte Datei »%s« nicht öffnen: %s\n" -#: fe-lobj.c:575 +#: fe-lobj.c:580 #, c-format msgid "could not read from file \"%s\": %s\n" msgstr "konnte nicht aus Datei »%s« nicht lesen: %s\n" -#: fe-lobj.c:639 fe-lobj.c:663 +#: fe-lobj.c:654 fe-lobj.c:678 #, c-format msgid "could not write to file \"%s\": %s\n" msgstr "konnte nicht in Datei »%s« schreiben: %s\n" -#: fe-lobj.c:744 +#: fe-lobj.c:759 msgid "query to initialize large object functions did not return data\n" msgstr "" "Abfrage zur Initialisierung der Large-Object-Funktionen ergab keine Daten\n" -#: fe-lobj.c:785 +#: fe-lobj.c:800 msgid "cannot determine OID of function lo_open\n" msgstr "kann OID der Funktion lo_open nicht ermitteln\n" -#: fe-lobj.c:792 +#: fe-lobj.c:807 msgid "cannot determine OID of function lo_close\n" msgstr "kann OID der Funktion lo_close nicht ermitteln\n" -#: fe-lobj.c:799 +#: fe-lobj.c:814 msgid "cannot determine OID of function lo_creat\n" msgstr "kann OID der Funktion lo_creat nicht ermitteln\n" -#: fe-lobj.c:806 +#: fe-lobj.c:821 msgid "cannot determine OID of function lo_unlink\n" msgstr "kann OID der Funktion lo_unlink nicht ermitteln\n" -#: fe-lobj.c:813 +#: fe-lobj.c:828 msgid "cannot determine OID of function lo_lseek\n" msgstr "kann OID der Funktion lo_lseek nicht ermitteln\n" -#: fe-lobj.c:820 +#: fe-lobj.c:835 msgid "cannot determine OID of function lo_tell\n" msgstr "kann OID der Funktion lo_tell nicht ermitteln\n" -#: fe-lobj.c:827 +#: fe-lobj.c:842 msgid "cannot determine OID of function loread\n" msgstr "kann OID der Funktion loread nicht ermitteln\n" -#: fe-lobj.c:834 +#: fe-lobj.c:849 msgid "cannot determine OID of function lowrite\n" msgstr "kann OID der Funktion lowrite nicht ermitteln\n" #: fe-misc.c:270 #, c-format msgid "integer of size %lu not supported by pqGetInt" -msgstr "Integer der Größe %lu wird nicht von pqGetInt unterstützt" +msgstr "Integer der Größe %lu wird von pqGetInt nicht unterstützt" #: fe-misc.c:306 #, c-format msgid "integer of size %lu not supported by pqPutInt" -msgstr "Integer der Größe %lu wird nicht von pqPutInt unterstützt" +msgstr "Integer der Größe %lu wird von pqPutInt nicht unterstützt" -#: fe-misc.c:586 fe-misc.c:788 +#: fe-misc.c:585 fe-misc.c:784 msgid "connection not open\n" msgstr "Verbindung nicht offen\n" -#: fe-misc.c:651 fe-misc.c:741 -#, c-format -msgid "could not receive data from server: %s\n" -msgstr "konnte keine Daten vom Server empfangen: %s\n" - -#: fe-misc.c:758 fe-misc.c:836 +#: fe-misc.c:711 fe-secure.c:388 fe-secure.c:467 fe-secure.c:548 +#: fe-secure.c:656 msgid "" "server closed the connection unexpectedly\n" "\tThis probably means the server terminated abnormally\n" "\tbefore or while processing the request.\n" msgstr "" "Server beendete die Verbindung unerwartet\n" -"\tDas heißt wahrscheinlich, daß der Server abnormal beendete\n" +"\tDas heißt wahrscheinlich, dass der Server abnormal beendete\n" "\tbevor oder während die Anweisung bearbeitet wurde.\n" -#: fe-misc.c:853 -#, c-format -msgid "could not send data to server: %s\n" -msgstr "konnte keine Daten an den Server senden: %s\n" - -#: fe-misc.c:972 +#: fe-misc.c:948 msgid "timeout expired\n" msgstr "Timeout abgelaufen\n" -#: fe-misc.c:1017 +#: fe-misc.c:993 msgid "socket not open\n" msgstr "Socket ist nicht offen\n" -#: fe-misc.c:1040 +#: fe-misc.c:1016 #, c-format msgid "select() failed: %s\n" msgstr "select() fehlgeschlagen: %s\n" @@ -742,80 +732,107 @@ msgstr "ZEILE %d: " msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline: Text COPY OUT nicht ausgeführt\n" -#: fe-secure.c:265 +#: fe-secure.c:271 fe-secure.c:1127 fe-secure.c:1347 +#, c-format +msgid "could not acquire mutex: %s\n" +msgstr "konnte Mutex nicht sperren: %s\n" + +#: fe-secure.c:283 #, c-format msgid "could not establish SSL connection: %s\n" msgstr "konnte SSL-Verbindung nicht aufbauen: %s\n" -#: fe-secure.c:349 fe-secure.c:436 fe-secure.c:1180 +#: fe-secure.c:393 fe-secure.c:553 fe-secure.c:1465 #, c-format msgid "SSL SYSCALL error: %s\n" msgstr "SSL-SYSCALL-Fehler: %s\n" -#: fe-secure.c:355 fe-secure.c:442 fe-secure.c:1184 +#: fe-secure.c:400 fe-secure.c:560 fe-secure.c:1469 msgid "SSL SYSCALL error: EOF detected\n" msgstr "SSL-SYSCALL-Fehler: Dateiende entdeckt\n" -#: fe-secure.c:367 fe-secure.c:453 fe-secure.c:1193 +#: fe-secure.c:411 fe-secure.c:571 fe-secure.c:1478 #, c-format msgid "SSL error: %s\n" msgstr "SSL-Fehler: %s\n" -#: fe-secure.c:377 fe-secure.c:463 fe-secure.c:1202 +#: fe-secure.c:425 fe-secure.c:585 +msgid "SSL connection has been closed unexpectedly\n" +msgstr "SSL-Verbindung wurde unerwartet geschlossen\n" + +#: fe-secure.c:431 fe-secure.c:591 fe-secure.c:1487 #, c-format msgid "unrecognized SSL error code: %d\n" msgstr "unbekannter SSL-Fehlercode: %d\n" -#: fe-secure.c:601 +#: fe-secure.c:475 +#, c-format +msgid "could not receive data from server: %s\n" +msgstr "konnte keine Daten vom Server empfangen: %s\n" + +#: fe-secure.c:663 +#, c-format +msgid "could not send data to server: %s\n" +msgstr "konnte keine Daten an den Server senden: %s\n" + +#: fe-secure.c:783 fe-secure.c:800 +msgid "could not get server common name from server certificate\n" +msgstr "konnte Server-Common-Name nicht aus dem Serverzertifikat ermitteln\n" + +#: fe-secure.c:813 +msgid "SSL certificate's common name contains embedded null\n" +msgstr "Common-Name im SSL-Zertifikat enthält Null-Byte\n" + +#: fe-secure.c:825 msgid "host name must be specified for a verified SSL connection\n" msgstr "Hostname muss angegeben werden für eine verifizierte SSL-Verbindung\n" -#: fe-secure.c:620 +#: fe-secure.c:839 #, c-format msgid "server common name \"%s\" does not match host name \"%s\"\n" msgstr "Server-Common-Name »%s« stimmt nicht mit dem Hostnamen »%s« überein\n" -#: fe-secure.c:752 +#: fe-secure.c:974 #, c-format msgid "could not create SSL context: %s\n" msgstr "konnte SSL-Kontext nicht erzeugen: %s\n" -#: fe-secure.c:868 +#: fe-secure.c:1097 #, c-format msgid "could not open certificate file \"%s\": %s\n" msgstr "konnte Zertifikatdatei »%s« nicht öffnen: %s\n" -#: fe-secure.c:893 fe-secure.c:903 +#: fe-secure.c:1136 fe-secure.c:1151 #, c-format msgid "could not read certificate file \"%s\": %s\n" msgstr "konnte Zertifikatdatei »%s« nicht lesen: %s\n" -#: fe-secure.c:940 +#: fe-secure.c:1206 #, c-format msgid "could not load SSL engine \"%s\": %s\n" msgstr "konnte SSL-Engine »%s« nicht laden: %s\n" -#: fe-secure.c:952 +#: fe-secure.c:1218 #, c-format msgid "could not initialize SSL engine \"%s\": %s\n" msgstr "konnte SSL-Engine »%s« nicht initialisieren: %s\n" -#: fe-secure.c:968 +#: fe-secure.c:1234 #, c-format msgid "could not read private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "konnte privaten SSL-Schlüssel »%s« nicht von Engine »%s« lesen: %s\n" -#: fe-secure.c:982 +#: fe-secure.c:1248 #, c-format msgid "could not load private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "konnte privaten SSL-Schlüssel »%s« nicht von Engine »%s« laden: %s\n" -#: fe-secure.c:1019 +#: fe-secure.c:1285 #, c-format msgid "certificate present, but not private key file \"%s\"\n" msgstr "Zertifikat vorhanden, aber keine private Schlüsseldatei »%s«\n" -#: fe-secure.c:1027 +#: fe-secure.c:1293 #, c-format msgid "" "private key file \"%s\" has group or world access; permissions should be " @@ -824,27 +841,27 @@ msgstr "" "WARNUNG: private Schlüsseldatei »%s« erlaubt Lesezugriff für Gruppe oder " "Andere; Rechte sollten u=rw (0600) oder weniger sein\n" -#: fe-secure.c:1038 +#: fe-secure.c:1304 #, c-format msgid "could not load private key file \"%s\": %s\n" msgstr "konnte private Schlüsseldatei »%s« nicht laden: %s\n" -#: fe-secure.c:1052 +#: fe-secure.c:1318 #, c-format msgid "certificate does not match private key file \"%s\": %s\n" msgstr "Zertifikat passt nicht zur privaten Schlüsseldatei »%s«: %s\n" -#: fe-secure.c:1080 +#: fe-secure.c:1356 #, c-format msgid "could not read root certificate file \"%s\": %s\n" msgstr "konnte Root-Zertifikat-Datei »%s« nicht lesen: %s\n" -#: fe-secure.c:1107 +#: fe-secure.c:1386 #, c-format msgid "SSL library does not support CRL certificates (file \"%s\")\n" msgstr "SSL-Bibliothek unterstützt keine CRL-Zertifikate (Datei »%s«)\n" -#: fe-secure.c:1134 +#: fe-secure.c:1419 msgid "" "could not get home directory to locate root certificate file\n" "Either provide the file or change sslmode to disable server certificate " @@ -854,7 +871,7 @@ msgstr "" "Legen Sie entweder die Datei an oder ändern Sie sslmode, um die Überprüfung " "der Serverzertifikate abzuschalten.\n" -#: fe-secure.c:1138 +#: fe-secure.c:1423 #, c-format msgid "" "root certificate file \"%s\" does not exist\n" @@ -865,20 +882,16 @@ msgstr "" "Legen Sie entweder die Datei an oder ändern Sie sslmode, um die Überprüfung " "der Serverzertifikate abzuschalten.\n" -#: fe-secure.c:1221 +#: fe-secure.c:1506 #, c-format msgid "certificate could not be obtained: %s\n" msgstr "Zertifikat konnte nicht ermittelt werden: %s\n" -#: fe-secure.c:1249 -msgid "SSL certificate's common name contains embedded null\n" -msgstr "Common-Name im SSL-Zertifikat enthält Null-Byte\n" - -#: fe-secure.c:1325 +#: fe-secure.c:1602 msgid "no SSL error reported" msgstr "kein SSL-Fehler berichtet" -#: fe-secure.c:1334 +#: fe-secure.c:1611 #, c-format msgid "SSL error code %lu" msgstr "SSL-Fehlercode %lu" diff --git a/src/interfaces/libpq/po/es.po b/src/interfaces/libpq/po/es.po index 0b9a84d48e..22aa1e62cf 100644 --- a/src/interfaces/libpq/po/es.po +++ b/src/interfaces/libpq/po/es.po @@ -1,82 +1,82 @@ # Spanish message translation file for libpq # -# Copyright (C) 2002-2010 PostgreSQL Global Development Group +# Copyright (C) 2002-2012 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # # Karim , 2002. -# Updated on 2003-2010 by Alvaro Herrera +# Updated on 2003-2012 by Alvaro Herrera # Mario González , 2005 # -# pgtranslation Id: libpq.po,v 1.12 2010/08/31 17:26:47 alvherre Exp $ -# msgid "" msgstr "" -"Project-Id-Version: libpq (PostgreSQL 9.0)\n" +"Project-Id-Version: libpq (PostgreSQL 9.1)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-08-31 07:23+0000\n" -"PO-Revision-Date: 2010-08-31 13:26-0400\n" +"POT-Creation-Date: 2013-08-26 19:39+0000\n" +"PO-Revision-Date: 2012-02-21 22:53-0300\n" "Last-Translator: Álvaro Herrera \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" -#: fe-auth.c:212 fe-auth.c:432 fe-auth.c:659 +#: fe-auth.c:210 fe-auth.c:429 fe-auth.c:656 msgid "host name must be specified\n" msgstr "el nombre de servidor debe ser especificado\n" -#: fe-auth.c:242 +#: fe-auth.c:240 #, c-format msgid "could not set socket to blocking mode: %s\n" msgstr "no se pudo poner el socket en modo bloqueante: %s\n" -#: fe-auth.c:260 fe-auth.c:264 +#: fe-auth.c:258 fe-auth.c:262 #, c-format msgid "Kerberos 5 authentication rejected: %*s\n" msgstr "autentificación Kerberos 5 denegada: %*s\n" -#: fe-auth.c:290 +#: fe-auth.c:288 #, c-format msgid "could not restore non-blocking mode on socket: %s\n" msgstr "no se pudo restablecer el modo no bloqueante en el socket: %s\n" -#: fe-auth.c:403 +#: fe-auth.c:400 msgid "GSSAPI continuation error" msgstr "error en continuación de GSSAPI" -#: fe-auth.c:439 +#: fe-auth.c:436 msgid "duplicate GSS authentication request\n" msgstr "petición de autentificación GSS duplicada\n" -#: fe-auth.c:459 +#: fe-auth.c:456 msgid "GSSAPI name import error" msgstr "error en conversión de nombre GSSAPI" -#: fe-auth.c:545 +#: fe-auth.c:542 msgid "SSPI continuation error" msgstr "error en continuación de SSPI" -#: fe-auth.c:556 fe-auth.c:630 fe-auth.c:665 fe-auth.c:762 fe-connect.c:1893 -#: fe-connect.c:3222 fe-connect.c:3439 fe-connect.c:3855 fe-connect.c:3864 -#: fe-connect.c:4001 fe-connect.c:4047 fe-connect.c:4065 fe-connect.c:4144 -#: fe-connect.c:4214 fe-connect.c:4260 fe-connect.c:4278 fe-exec.c:3121 -#: fe-exec.c:3286 fe-lobj.c:696 fe-protocol2.c:1027 fe-protocol3.c:1421 +#: fe-auth.c:553 fe-auth.c:627 fe-auth.c:662 fe-auth.c:757 fe-connect.c:1971 +#: fe-connect.c:3380 fe-connect.c:3598 fe-connect.c:4019 fe-connect.c:4028 +#: fe-connect.c:4165 fe-connect.c:4211 fe-connect.c:4229 fe-connect.c:4308 +#: fe-connect.c:4378 fe-connect.c:4424 fe-connect.c:4442 fe-exec.c:3121 +#: fe-exec.c:3286 fe-lobj.c:711 fe-protocol2.c:1092 fe-protocol3.c:1433 +#: fe-secure.c:789 fe-secure.c:1189 msgid "out of memory\n" msgstr "memoria agotada\n" -#: fe-auth.c:645 +#: fe-auth.c:642 msgid "could not acquire SSPI credentials" msgstr "no se pudo obtener las credenciales SSPI" -#: fe-auth.c:738 +#: fe-auth.c:733 msgid "SCM_CRED authentication method not supported\n" msgstr "el método de autentificación SCM_CRED no está soportado\n" -#: fe-auth.c:812 +#: fe-auth.c:807 msgid "Kerberos 4 authentication not supported\n" msgstr "el método de autentificación Kerberos 4 no está soportado\n" -#: fe-auth.c:828 +#: fe-auth.c:823 msgid "Kerberos 5 authentication not supported\n" msgstr "el método de autentificación Kerberos 5 no está soportado\n" @@ -84,36 +84,37 @@ msgstr "el método de autentificación Kerberos 5 no está soportado\n" msgid "GSSAPI authentication not supported\n" msgstr "el método de autentificación GSSAPI no está soportado\n" -#: fe-auth.c:919 +#: fe-auth.c:927 msgid "SSPI authentication not supported\n" msgstr "el método de autentificación SSPI no está soportado\n" -#: fe-auth.c:926 +#: fe-auth.c:935 msgid "Crypt authentication not supported\n" msgstr "el método de autentificación Crypt no está soportado\n" -#: fe-auth.c:953 +#: fe-auth.c:962 #, c-format msgid "authentication method %u not supported\n" msgstr "el método de autentificación %u no está soportado\n" -#: fe-connect.c:720 +#: fe-connect.c:758 #, c-format msgid "invalid sslmode value: \"%s\"\n" msgstr "valor sslmode no válido: «%s»\n" -#: fe-connect.c:741 +#: fe-connect.c:779 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" msgstr "" -"el valor sslmode «%s» no es válido cuando no se ha compilado con soporte SSL\n" +"el valor sslmode «%s» no es válido cuando no se ha compilado con soporte " +"SSL\n" -#: fe-connect.c:924 +#: fe-connect.c:972 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "no se pudo establecer el socket en modo TCP sin retardo: %s\n" -#: fe-connect.c:954 +#: fe-connect.c:1002 #, c-format msgid "" "could not connect to server: %s\n" @@ -124,7 +125,18 @@ msgstr "" "\t¿Está el servidor en ejecución localmente y aceptando\n" "\tconexiones en el socket de dominio Unix «%s»?\n" -#: fe-connect.c:964 +#: fe-connect.c:1057 +#, c-format +msgid "" +"could not connect to server: %s\n" +"\tIs the server running on host \"%s\" (%s) and accepting\n" +"\tTCP/IP connections on port %s?\n" +msgstr "" +"no se pudo conectar con el servidor: %s\n" +"\t¿Está el servidor en ejecución en el servidor «%s» (%s) y aceptando\n" +"\tconexiones TCP/IP en el puerto %s?\n" + +#: fe-connect.c:1066 #, c-format msgid "" "could not connect to server: %s\n" @@ -135,323 +147,332 @@ msgstr "" "\t¿Está el servidor en ejecución en el servidor «%s» y aceptando\n" "\tconexiones TCP/IP en el puerto %s?\n" -#: fe-connect.c:1019 +#: fe-connect.c:1117 #, c-format msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" msgstr "setsockopt(TCP_KEEPIDLE) falló: %s\n" -#: fe-connect.c:1032 +#: fe-connect.c:1130 #, c-format msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" msgstr "setsockopt(TCP_KEEPALIVE) falló: %s\n" -#: fe-connect.c:1064 +#: fe-connect.c:1162 #, c-format msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" msgstr "setsockopt(TCP_KEEPINTVL) falló: %s\n" -#: fe-connect.c:1096 +#: fe-connect.c:1194 #, c-format msgid "setsockopt(TCP_KEEPCNT) failed: %s\n" msgstr "setsockopt(TCP_KEEPCNT) falló: %s\n" -#: fe-connect.c:1145 +#: fe-connect.c:1242 #, c-format msgid "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" msgstr "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" -#: fe-connect.c:1197 +#: fe-connect.c:1294 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "número de puerto no válido: «%s»\n" -#: fe-connect.c:1239 +#: fe-connect.c:1327 +#, c-format +msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" +msgstr "" +"la ruta del socket de dominio Unix «%s» es demasiado larga (máximo %d " +"bytes)\n" + +#: fe-connect.c:1346 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "no se pudo traducir el nombre «%s» a una dirección: %s\n" -#: fe-connect.c:1243 +#: fe-connect.c:1350 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "no se pudo traducir la ruta del socket Unix «%s» a una dirección: %s\n" -#: fe-connect.c:1452 +#: fe-connect.c:1560 msgid "invalid connection state, probably indicative of memory corruption\n" msgstr "" "el estado de conexión no es válido, probablemente por corrupción de memoria\n" -#: fe-connect.c:1495 +#: fe-connect.c:1601 #, c-format msgid "could not create socket: %s\n" msgstr "no se pudo crear el socket: %s\n" -#: fe-connect.c:1518 +#: fe-connect.c:1624 #, c-format msgid "could not set socket to non-blocking mode: %s\n" msgstr "no se pudo establecer el socket en modo no bloqueante: %s\n" -#: fe-connect.c:1530 +#: fe-connect.c:1636 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "no se pudo poner el socket en modo close-on-exec: %s\n" -#: fe-connect.c:1548 +#: fe-connect.c:1656 msgid "keepalives parameter must be an integer\n" msgstr "el parámetro de keepalives debe ser un entero\n" -#: fe-connect.c:1561 +#: fe-connect.c:1669 #, c-format msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" msgstr "setsockopt(SO_KEEPALIVE) falló: %s\n" -#: fe-connect.c:1702 +#: fe-connect.c:1811 #, c-format msgid "could not get socket error status: %s\n" msgstr "no se pudo determinar el estado de error del socket: %s\n" -#: fe-connect.c:1740 +#: fe-connect.c:1849 #, c-format msgid "could not get client address from socket: %s\n" msgstr "no se pudo obtener la dirección del cliente desde el socket: %s\n" -#: fe-connect.c:1772 fe-connect.c:1786 fe-connect.c:1798 +#: fe-connect.c:1890 +msgid "requirepeer parameter is not supported on this platform\n" +msgstr "el parámetro requirepeer no está soportado en esta plataforma\n" + +#: fe-connect.c:1893 #, c-format msgid "could not get peer credentials: %s\n" msgstr "no se pudo obtener credenciales de la contraparte: %s\n" -#: fe-connect.c:1806 -#, c-format -msgid "could not get effective UID from peer credentials: %s\n" -msgstr "no se pudo obtener el UID efectivo desde las credenciales de la contraparte: %s\n" - -#: fe-connect.c:1821 +#: fe-connect.c:1903 #, c-format msgid "local user with ID %d does not exist\n" msgstr "no existe un usuario local con ID %d\n" -#: fe-connect.c:1829 +#: fe-connect.c:1911 #, c-format msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" -msgstr "requirepeer especifica «%s», pero el nombre de usuario de la contraparte es «%s»\n" - -#: fe-connect.c:1835 -msgid "requirepeer parameter is not supported on this platform\n" -msgstr "el parámetro requirepeer no está soportado en esta plataforma\n" +msgstr "" +"requirepeer especifica «%s», pero el nombre de usuario de la contraparte es " +"«%s»\n" -#: fe-connect.c:1867 +#: fe-connect.c:1945 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "no se pudo enviar el paquete de negociación SSL: %s\n" -#: fe-connect.c:1906 +#: fe-connect.c:1984 #, c-format msgid "could not send startup packet: %s\n" msgstr "no se pudo enviar el paquete de inicio: %s\n" -#: fe-connect.c:1973 fe-connect.c:1992 +#: fe-connect.c:2054 msgid "server does not support SSL, but SSL was required\n" msgstr "el servidor no soporta SSL, pero SSL es requerida\n" -#: fe-connect.c:2008 +#: fe-connect.c:2080 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "se ha recibido una respuesta no válida en la negociación SSL: %c\n" -#: fe-connect.c:2084 fe-connect.c:2117 +#: fe-connect.c:2159 fe-connect.c:2192 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "" "se esperaba una petición de autentificación desde el servidor, pero se ha " "recibido %c\n" -#: fe-connect.c:2288 +#: fe-connect.c:2373 #, c-format msgid "out of memory allocating GSSAPI buffer (%i)" msgstr "memoria agotada creando el búfer GSSAPI (%i)" -#: fe-connect.c:2373 +#: fe-connect.c:2458 msgid "unexpected message from server during startup\n" msgstr "se ha recibido un mensaje inesperado del servidor durante el inicio\n" -#: fe-connect.c:2469 +#: fe-connect.c:2557 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" msgstr "" "estado de conexión no válido %d, probablemente por corrupción de memoria\n" -#: fe-connect.c:2830 fe-connect.c:2890 +#: fe-connect.c:2988 fe-connect.c:3048 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "PGEventProc «%s» falló durante el evento PGEVT_CONNRESET\n" -#: fe-connect.c:3235 +#: fe-connect.c:3393 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" msgstr "URL LDAP no válida «%s»: el esquema debe ser ldap://\n" -#: fe-connect.c:3250 +#: fe-connect.c:3408 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "URL LDAP no válida «%s»: distinguished name faltante\n" -#: fe-connect.c:3261 fe-connect.c:3314 +#: fe-connect.c:3419 fe-connect.c:3472 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "URL LDAP no válida «%s»: debe tener exactamente un atributo\n" -#: fe-connect.c:3271 fe-connect.c:3328 +#: fe-connect.c:3429 fe-connect.c:3486 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" -msgstr "URL LDAP no válida «%s»: debe tener ámbito de búsqueda (base/one/sub)\n" +msgstr "" +"URL LDAP no válida «%s»: debe tener ámbito de búsqueda (base/one/sub)\n" -#: fe-connect.c:3282 +#: fe-connect.c:3440 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "URL LDAP no válida «%s»: no tiene filtro\n" -#: fe-connect.c:3303 +#: fe-connect.c:3461 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "URL LDAP no válida «%s»: número de puerto no válido\n" -#: fe-connect.c:3337 +#: fe-connect.c:3495 msgid "could not create LDAP structure\n" msgstr "no se pudo crear estructura LDAP\n" -#: fe-connect.c:3379 +#: fe-connect.c:3537 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "búsqueda en servidor LDAP falló: %s\n" -#: fe-connect.c:3390 +#: fe-connect.c:3548 msgid "more than one entry found on LDAP lookup\n" msgstr "se encontro más de una entrada en búsqueda LDAP\n" -#: fe-connect.c:3391 fe-connect.c:3403 +#: fe-connect.c:3549 fe-connect.c:3561 msgid "no entry found on LDAP lookup\n" msgstr "no se encontró ninguna entrada en búsqueda LDAP\n" -#: fe-connect.c:3414 fe-connect.c:3427 +#: fe-connect.c:3572 fe-connect.c:3585 msgid "attribute has no values on LDAP lookup\n" msgstr "la búsqueda LDAP entregó atributo sin valores\n" -#: fe-connect.c:3478 fe-connect.c:3496 fe-connect.c:3903 +#: fe-connect.c:3637 fe-connect.c:3656 fe-connect.c:4067 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "falta «=» después de «%s» en la cadena de información de la conexión\n" -#: fe-connect.c:3559 fe-connect.c:3985 fe-connect.c:4169 +#: fe-connect.c:3720 fe-connect.c:4149 fe-connect.c:4333 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "opción de conexión no válida «%s»\n" -#: fe-connect.c:3572 fe-connect.c:3952 +#: fe-connect.c:3736 fe-connect.c:4116 msgid "unterminated quoted string in connection info string\n" msgstr "" "cadena de caracteres entre comillas sin terminar en la cadena de información " "de conexión\n" -#: fe-connect.c:3611 +#: fe-connect.c:3775 msgid "could not get home directory to locate service definition file" msgstr "" "no se pudo obtener el directorio home para localizar el archivo de " "definición de servicio" -#: fe-connect.c:3644 +#: fe-connect.c:3808 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "la definición de servicio «%s» no fue encontrada\n" -#: fe-connect.c:3667 +#: fe-connect.c:3831 #, c-format msgid "service file \"%s\" not found\n" msgstr "el archivo de servicio «%s» no fue encontrado\n" -#: fe-connect.c:3680 +#: fe-connect.c:3844 #, c-format msgid "line %d too long in service file \"%s\"\n" msgstr "la línea %d es demasiado larga en archivo de servicio «%s»\n" -#: fe-connect.c:3751 fe-connect.c:3778 +#: fe-connect.c:3915 fe-connect.c:3942 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "error de sintaxis en archivo de servicio «%s», línea %d\n" -#: fe-connect.c:4445 +#: fe-connect.c:4609 msgid "connection pointer is NULL\n" msgstr "el puntero de conexión es NULL\n" -#: fe-connect.c:4718 +#: fe-connect.c:4886 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" msgstr "ADVERTENCIA: El archivo de claves «%s» no es un archivo plano\n" -#: fe-connect.c:4727 +#: fe-connect.c:4895 #, c-format msgid "" "WARNING: password file \"%s\" has group or world access; permissions should " "be u=rw (0600) or less\n" msgstr "" -"ADVERTENCIA: El archivo de claves «%s» tiene permiso de lectura para el grupo " -"u otros; los permisos deberían ser u=rw (0600) o menos\n" +"ADVERTENCIA: El archivo de claves «%s» tiene permiso de lectura para el " +"grupo u otros; los permisos deberían ser u=rw (0600) o menos\n" -#: fe-connect.c:4815 +#: fe-connect.c:4983 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "contraseña obtenida desde el archivo «%s»\n" -#: fe-exec.c:827 +#: fe-exec.c:810 msgid "NOTICE" msgstr "AVISO" -#: fe-exec.c:1014 fe-exec.c:1071 fe-exec.c:1111 +#: fe-exec.c:997 fe-exec.c:1054 fe-exec.c:1094 msgid "command string is a null pointer\n" msgstr "la cadena de orden es un puntero nulo\n" -#: fe-exec.c:1104 fe-exec.c:1199 +#: fe-exec.c:1087 fe-exec.c:1182 msgid "statement name is a null pointer\n" msgstr "el nombre de sentencia es un puntero nulo\n" -#: fe-exec.c:1119 fe-exec.c:1273 fe-exec.c:1928 fe-exec.c:2125 +#: fe-exec.c:1102 fe-exec.c:1256 fe-exec.c:1925 fe-exec.c:2123 msgid "function requires at least protocol version 3.0\n" msgstr "la función requiere protocolo 3.0 o superior\n" -#: fe-exec.c:1230 +#: fe-exec.c:1213 msgid "no connection to the server\n" msgstr "no hay conexión con el servidor\n" -#: fe-exec.c:1237 +#: fe-exec.c:1220 msgid "another command is already in progress\n" msgstr "hay otra orden en ejecución\n" -#: fe-exec.c:1349 +#: fe-exec.c:1332 msgid "length must be given for binary parameter\n" msgstr "el largo debe ser especificado para un parámetro binario\n" -#: fe-exec.c:1596 +#: fe-exec.c:1585 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "asyncStatus no esperado: %d\n" -#: fe-exec.c:1616 +#: fe-exec.c:1605 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" msgstr "PGEventProc «%s» falló durante el evento PGEVT_RESULTCREATE\n" -#: fe-exec.c:1746 +#: fe-exec.c:1735 msgid "COPY terminated by new PQexec" msgstr "COPY terminado por un nuevo PQexec" -#: fe-exec.c:1754 +#: fe-exec.c:1743 msgid "COPY IN state must be terminated first\n" msgstr "el estado COPY IN debe ser terminado primero\n" -#: fe-exec.c:1774 +#: fe-exec.c:1763 msgid "COPY OUT state must be terminated first\n" msgstr "el estado COPY OUT debe ser terminado primero\n" -#: fe-exec.c:2016 fe-exec.c:2082 fe-exec.c:2167 fe-protocol2.c:1172 -#: fe-protocol3.c:1557 +#: fe-exec.c:1771 +msgid "PQexec not allowed during COPY BOTH\n" +msgstr "PQexec no está permitido durante COPY BOTH\n" + +#: fe-exec.c:2014 fe-exec.c:2080 fe-exec.c:2167 fe-protocol2.c:1237 +#: fe-protocol3.c:1569 msgid "no COPY in progress\n" msgstr "no hay COPY alguno en ejecución\n" @@ -495,79 +516,75 @@ msgstr "no se puede determinar el OID de la función lo_truncate\n" msgid "cannot determine OID of function lo_create\n" msgstr "no se puede determinar el OID de la función lo_create\n" -#: fe-lobj.c:525 fe-lobj.c:624 +#: fe-lobj.c:525 fe-lobj.c:634 #, c-format msgid "could not open file \"%s\": %s\n" msgstr "no se pudo abrir el archivo «%s»: %s\n" -#: fe-lobj.c:575 +#: fe-lobj.c:580 #, c-format msgid "could not read from file \"%s\": %s\n" msgstr "no se pudo leer el archivo «%s»: %s\n" -#: fe-lobj.c:639 fe-lobj.c:663 +#: fe-lobj.c:654 fe-lobj.c:678 #, c-format msgid "could not write to file \"%s\": %s\n" msgstr "no se pudo escribir a archivo «%s»: %s\n" -#: fe-lobj.c:744 +#: fe-lobj.c:759 msgid "query to initialize large object functions did not return data\n" msgstr "" "la consulta para inicializar las funciones de objetos grandes no devuelve " "datos\n" -#: fe-lobj.c:785 +#: fe-lobj.c:800 msgid "cannot determine OID of function lo_open\n" msgstr "no se puede determinar el OID de la función lo_open\n" -#: fe-lobj.c:792 +#: fe-lobj.c:807 msgid "cannot determine OID of function lo_close\n" msgstr "no se puede determinar el OID de la función lo_close\n" -#: fe-lobj.c:799 +#: fe-lobj.c:814 msgid "cannot determine OID of function lo_creat\n" msgstr "no se puede determinar el OID de la función lo_creat\n" -#: fe-lobj.c:806 +#: fe-lobj.c:821 msgid "cannot determine OID of function lo_unlink\n" msgstr "no se puede determinar el OID de la función lo_unlink\n" -#: fe-lobj.c:813 +#: fe-lobj.c:828 msgid "cannot determine OID of function lo_lseek\n" msgstr "no se puede determinar el OID de la función lo_lseek\n" -#: fe-lobj.c:820 +#: fe-lobj.c:835 msgid "cannot determine OID of function lo_tell\n" msgstr "no se puede determinar el OID de la función lo_tell\n" -#: fe-lobj.c:827 +#: fe-lobj.c:842 msgid "cannot determine OID of function loread\n" msgstr "no se puede determinar el OID de la función loread\n" -#: fe-lobj.c:834 +#: fe-lobj.c:849 msgid "cannot determine OID of function lowrite\n" msgstr "no se puede determinar el OID de la función lowrite\n" -#: fe-misc.c:262 +#: fe-misc.c:270 #, c-format msgid "integer of size %lu not supported by pqGetInt" msgstr "el entero de tamaño %lu no está soportado por pqGetInt" -#: fe-misc.c:298 +#: fe-misc.c:306 #, c-format msgid "integer of size %lu not supported by pqPutInt" msgstr "el entero de tamaño %lu no está soportado por pqPutInt" -#: fe-misc.c:578 fe-misc.c:780 +#: fe-misc.c:585 fe-misc.c:784 msgid "connection not open\n" msgstr "la conexión no está abierta\n" -#: fe-misc.c:643 fe-misc.c:733 -#, c-format -msgid "could not receive data from server: %s\n" -msgstr "no se pudo recibir datos del servidor: %s\n" - -#: fe-misc.c:750 fe-misc.c:828 +#: fe-misc.c:711 fe-secure.c:387 fe-secure.c:466 fe-secure.c:547 +#: fe-secure.c:655 msgid "" "server closed the connection unexpectedly\n" "\tThis probably means the server terminated abnormally\n" @@ -577,49 +594,44 @@ msgstr "" "\tProbablemente se debe a que el servidor terminó de manera anormal\n" "\tantes o durante el procesamiento de la petición.\n" -#: fe-misc.c:845 -#, c-format -msgid "could not send data to server: %s\n" -msgstr "no se pudo enviar datos al servidor: %s\n" - -#: fe-misc.c:964 +#: fe-misc.c:948 msgid "timeout expired\n" msgstr "tiempo de espera agotado\n" -#: fe-misc.c:1009 +#: fe-misc.c:993 msgid "socket not open\n" msgstr "el socket no está abierto\n" -#: fe-misc.c:1032 +#: fe-misc.c:1016 #, c-format msgid "select() failed: %s\n" msgstr "select() fallida: %s\n" -#: fe-protocol2.c:89 +#: fe-protocol2.c:91 #, c-format msgid "invalid setenv state %c, probably indicative of memory corruption\n" msgstr "" "el estado de setenv %c no es válido, probablemente por corrupción de " "memoria\n" -#: fe-protocol2.c:330 +#: fe-protocol2.c:390 #, c-format msgid "invalid state %c, probably indicative of memory corruption\n" msgstr "el estado %c no es válido, probablemente por corrupción de memoria\n" -#: fe-protocol2.c:419 fe-protocol3.c:186 +#: fe-protocol2.c:479 fe-protocol3.c:186 #, c-format msgid "message type 0x%02x arrived from server while idle" msgstr "un mensaje de tipo 0x%02x llegó del servidor estando inactivo" -#: fe-protocol2.c:462 +#: fe-protocol2.c:522 #, c-format msgid "unexpected character %c following empty query response (\"I\" message)" msgstr "" "carácter %c no esperado, siguiendo una respuesta de consulta vacía (mensaje " "«I»)" -#: fe-protocol2.c:516 +#: fe-protocol2.c:576 msgid "" "server sent data (\"D\" message) without prior row description (\"T\" " "message)" @@ -627,7 +639,7 @@ msgstr "" "el servidor envió datos (mensaje «D») sin precederlos con una descripción de " "fila (mensaje «T»)" -#: fe-protocol2.c:532 +#: fe-protocol2.c:592 msgid "" "server sent binary data (\"B\" message) without prior row description (\"T\" " "message)" @@ -635,27 +647,27 @@ msgstr "" "el servidor envió datos binarios (mensaje «B») sin precederlos con una " "description de fila (mensaje «T»)" -#: fe-protocol2.c:547 fe-protocol3.c:382 +#: fe-protocol2.c:612 fe-protocol3.c:388 #, c-format msgid "unexpected response from server; first received character was \"%c\"\n" msgstr "" "se ha recibido una respuesta inesperada del servidor; el primer carácter " "recibido fue «%c»\n" -#: fe-protocol2.c:768 fe-protocol3.c:701 +#: fe-protocol2.c:833 fe-protocol3.c:707 msgid "out of memory for query result\n" msgstr "no hay suficiente memoria para el resultado de la consulta\n" -#: fe-protocol2.c:1215 fe-protocol3.c:1625 +#: fe-protocol2.c:1280 fe-protocol3.c:1637 #, c-format msgid "%s" msgstr "%s" -#: fe-protocol2.c:1227 +#: fe-protocol2.c:1292 msgid "lost synchronization with server, resetting connection" msgstr "se perdió la sincronía con el servidor, reseteando la conexión" -#: fe-protocol2.c:1361 fe-protocol2.c:1393 fe-protocol3.c:1828 +#: fe-protocol2.c:1426 fe-protocol2.c:1458 fe-protocol3.c:1840 #, c-format msgid "protocol error: id=0x%x\n" msgstr "error de protocolo: id=0x%x\n" @@ -668,157 +680,179 @@ msgstr "" "el servidor envió datos (mensaje «D») sin precederlos con una description de " "tupla (mensaje «T»)\n" -#: fe-protocol3.c:403 +#: fe-protocol3.c:409 #, c-format msgid "message contents do not agree with length in message type \"%c\"\n" msgstr "" "el contenido del mensaje no concuerda con el largo, en el mensaje tipo «%c»\n" -#: fe-protocol3.c:424 +#: fe-protocol3.c:430 #, c-format msgid "lost synchronization with server: got message type \"%c\", length %d\n" msgstr "" "se perdió la sincronía con el servidor: se recibió un mensaje de tipo «%c», " "largo %d\n" -#: fe-protocol3.c:646 +#: fe-protocol3.c:652 msgid "unexpected field count in \"D\" message\n" msgstr "cantidad de campos inesperada en mensaje «D»\n" #. translator: %s represents a digit string -#: fe-protocol3.c:788 fe-protocol3.c:807 +#: fe-protocol3.c:798 fe-protocol3.c:817 #, c-format msgid " at character %s" msgstr " en el carácter %s" -#: fe-protocol3.c:820 +#: fe-protocol3.c:830 #, c-format msgid "DETAIL: %s\n" msgstr "DETALLE: %s\n" -#: fe-protocol3.c:823 +#: fe-protocol3.c:833 #, c-format msgid "HINT: %s\n" msgstr "SUGERENCIA: %s\n" -#: fe-protocol3.c:826 +#: fe-protocol3.c:836 #, c-format msgid "QUERY: %s\n" msgstr "CONSULTA: %s\n" -#: fe-protocol3.c:829 +#: fe-protocol3.c:839 #, c-format msgid "CONTEXT: %s\n" msgstr "CONTEXTO: %s\n" -#: fe-protocol3.c:841 +#: fe-protocol3.c:851 msgid "LOCATION: " msgstr "UBICACIÓN: " -#: fe-protocol3.c:843 +#: fe-protocol3.c:853 #, c-format msgid "%s, " msgstr "%s, " -#: fe-protocol3.c:845 +#: fe-protocol3.c:855 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: fe-protocol3.c:1069 +#: fe-protocol3.c:1079 #, c-format msgid "LINE %d: " msgstr "LÍNEA %d: " -#: fe-protocol3.c:1453 +#: fe-protocol3.c:1465 msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline: no se está haciendo COPY OUT de texto\n" -#: fe-secure.c:265 +#: fe-secure.c:271 fe-secure.c:1126 fe-secure.c:1346 +#, c-format +msgid "could not acquire mutex: %s\n" +msgstr "no se pudo adquirir el mutex: %s\n" + +#: fe-secure.c:283 #, c-format msgid "could not establish SSL connection: %s\n" msgstr "no se pudo establecer conexión SSL: %s\n" -#: fe-secure.c:349 fe-secure.c:436 fe-secure.c:1162 +#: fe-secure.c:392 fe-secure.c:552 fe-secure.c:1464 #, c-format msgid "SSL SYSCALL error: %s\n" msgstr "ERROR en llamada SSL: %s\n" -#: fe-secure.c:355 fe-secure.c:442 fe-secure.c:1166 +#: fe-secure.c:399 fe-secure.c:559 fe-secure.c:1468 msgid "SSL SYSCALL error: EOF detected\n" msgstr "ERROR en llamada SSL: detectado fin de archivo\n" -#: fe-secure.c:367 fe-secure.c:453 fe-secure.c:1175 +#: fe-secure.c:410 fe-secure.c:570 fe-secure.c:1477 #, c-format msgid "SSL error: %s\n" msgstr "error de SSL: %s\n" -#: fe-secure.c:377 fe-secure.c:463 fe-secure.c:1184 +#: fe-secure.c:424 fe-secure.c:584 +msgid "SSL connection has been closed unexpectedly\n" +msgstr "la conexión SSL se ha cerrado inesperadamente\n" + +#: fe-secure.c:430 fe-secure.c:590 fe-secure.c:1486 #, c-format msgid "unrecognized SSL error code: %d\n" msgstr "código de error SSL no reconocido: %d\n" -#: fe-secure.c:601 +#: fe-secure.c:474 +#, c-format +msgid "could not receive data from server: %s\n" +msgstr "no se pudo recibir datos del servidor: %s\n" + +#: fe-secure.c:662 +#, c-format +msgid "could not send data to server: %s\n" +msgstr "no se pudo enviar datos al servidor: %s\n" + +#: fe-secure.c:782 fe-secure.c:799 +msgid "could not get server common name from server certificate\n" +msgstr "no se pudo obtener el common name desde el certificado del servidor\n" + +#: fe-secure.c:812 +msgid "SSL certificate's common name contains embedded null\n" +msgstr "el common name del certificado SSL contiene un null\n" + +#: fe-secure.c:824 msgid "host name must be specified for a verified SSL connection\n" msgstr "" "el nombre de servidor debe ser especificado para una conexión SSL " "verificada\n" -#: fe-secure.c:620 +#: fe-secure.c:838 #, c-format msgid "server common name \"%s\" does not match host name \"%s\"\n" msgstr "" -"el common name «%s» del servidor no coincide con el nombre de anfitrión «%s»\n" +"el common name «%s» del servidor no coincide con el nombre de anfitrión " +"«%s»\n" -#: fe-secure.c:752 +#: fe-secure.c:973 #, c-format msgid "could not create SSL context: %s\n" msgstr "no se pudo crear el contexto SSL: %s\n" -#: fe-secure.c:843 -msgid "could not get home directory to locate client certificate files\n" -msgstr "" -"no se pudo obtener el directorio home para localizar los archivos de " -"certificado de cliente\n" - -#: fe-secure.c:868 +#: fe-secure.c:1096 #, c-format msgid "could not open certificate file \"%s\": %s\n" msgstr "no se pudo abrir el archivo de certificado «%s»: %s\n" -#: fe-secure.c:893 fe-secure.c:903 +#: fe-secure.c:1135 fe-secure.c:1150 #, c-format msgid "could not read certificate file \"%s\": %s\n" msgstr "no se pudo leer el archivo de certificado «%s»: %s\n" -#: fe-secure.c:940 +#: fe-secure.c:1205 #, c-format msgid "could not load SSL engine \"%s\": %s\n" msgstr "no se pudo cargar el motor SSL «%s»: %s\n" -#: fe-secure.c:952 +#: fe-secure.c:1217 #, c-format msgid "could not initialize SSL engine \"%s\": %s\n" msgstr "no se pudo inicializar el motor SSL «%s»: %s\n" -#: fe-secure.c:968 +#: fe-secure.c:1233 #, c-format msgid "could not read private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "" -"no se pudo leer el archivo de la llave privada SSL «%s» desde el motor «%s»: %" -"s\n" +"no se pudo leer el archivo de la llave privada SSL «%s» desde el motor «%s»: " +"%s\n" -#: fe-secure.c:982 +#: fe-secure.c:1247 #, c-format msgid "could not load private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "no se pudo leer la llave privada SSL «%s» desde el motor «%s»: %s\n" -#: fe-secure.c:1017 +#: fe-secure.c:1284 #, c-format msgid "certificate present, but not private key file \"%s\"\n" msgstr "el certificado está presente, pero no la llave privada «%s»\n" -#: fe-secure.c:1025 +#: fe-secure.c:1292 #, c-format msgid "" "private key file \"%s\" has group or world access; permissions should be " @@ -827,27 +861,38 @@ msgstr "" "el archivo de la llave privada «%s» tiene permiso de lectura para el grupo u " "otros; los permisos deberían ser u=rw (0600) o menos\n" -#: fe-secure.c:1036 +#: fe-secure.c:1303 #, c-format msgid "could not load private key file \"%s\": %s\n" msgstr "no se pudo cargar el archivo de la llave privada «%s»: %s\n" -#: fe-secure.c:1050 +#: fe-secure.c:1317 #, c-format msgid "certificate does not match private key file \"%s\": %s\n" msgstr "el certificado no coincide con la llave privada «%s»: %s\n" -#: fe-secure.c:1075 +#: fe-secure.c:1355 #, c-format msgid "could not read root certificate file \"%s\": %s\n" msgstr "no se pudo leer la lista de certificado raíz «%s»: %s\n" -#: fe-secure.c:1099 +#: fe-secure.c:1385 #, c-format msgid "SSL library does not support CRL certificates (file \"%s\")\n" msgstr "la biblioteca SSL no soporta certificados CRL (archivo «%s»)\n" -#: fe-secure.c:1120 +#: fe-secure.c:1418 +msgid "" +"could not get home directory to locate root certificate file\n" +"Either provide the file or change sslmode to disable server certificate " +"verification.\n" +msgstr "" +"no se pudo obtener el directorio «home» para ubicar el archivo del " +"certificado raíz\n" +"Debe ya sea entregar este archivo, o bien cambiar sslmode para deshabilitar " +"la verificación de certificados del servidor.\n" + +#: fe-secure.c:1422 #, c-format msgid "" "root certificate file \"%s\" does not exist\n" @@ -858,20 +903,16 @@ msgstr "" "Debe ya sea entregar este archivo, o bien cambiar sslmode para deshabilitar " "la verificación de certificados del servidor.\n" -#: fe-secure.c:1203 +#: fe-secure.c:1505 #, c-format msgid "certificate could not be obtained: %s\n" msgstr "el certificado no pudo ser obtenido: %s\n" -#: fe-secure.c:1231 -msgid "SSL certificate's common name contains embedded null\n" -msgstr "el common name del certificado SSL contiene un null\n" - -#: fe-secure.c:1307 +#: fe-secure.c:1582 msgid "no SSL error reported" msgstr "sin error SSL reportado" -#: fe-secure.c:1316 +#: fe-secure.c:1591 #, c-format msgid "SSL error code %lu" msgstr "código de error SSL %lu" diff --git a/src/interfaces/libpq/po/fr.po b/src/interfaces/libpq/po/fr.po index 68eed85276..b368992e36 100644 --- a/src/interfaces/libpq/po/fr.po +++ b/src/interfaces/libpq/po/fr.po @@ -1,8 +1,6 @@ # translation of libpq.po to fr_fr # french message translation file for libpq # -# $PostgreSQL$ -# # Use these quotes: � %s � # # Guillaume Lelarge , 2004-2009. @@ -11,90 +9,73 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 8.4\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2011-03-08 20:57+0000\n" -"PO-Revision-Date: 2011-03-10 20:48+0100\n" +"POT-Creation-Date: 2013-08-18 02:39+0000\n" +"PO-Revision-Date: 2013-08-18 10:48+0100\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: PostgreSQLfr \n" -"Language: \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" -#: fe-auth.c:212 -#: fe-auth.c:432 -#: fe-auth.c:659 +#: fe-auth.c:210 fe-auth.c:429 fe-auth.c:656 msgid "host name must be specified\n" msgstr "le nom d'h�te doit �tre pr�cis�\n" -#: fe-auth.c:242 +#: fe-auth.c:240 #, c-format msgid "could not set socket to blocking mode: %s\n" msgstr "n'a pas pu activer le mode bloquant pour la socket : %s\n" -#: fe-auth.c:260 -#: fe-auth.c:264 +#: fe-auth.c:258 fe-auth.c:262 #, c-format msgid "Kerberos 5 authentication rejected: %*s\n" msgstr "authentification Kerberos 5 rejet�e : %*s\n" -#: fe-auth.c:290 +#: fe-auth.c:288 #, c-format msgid "could not restore non-blocking mode on socket: %s\n" msgstr "n'a pas pu r�tablir le mode non-bloquant pour la socket : %s\n" -#: fe-auth.c:403 +#: fe-auth.c:400 msgid "GSSAPI continuation error" msgstr "erreur de suite GSSAPI" -#: fe-auth.c:439 +#: fe-auth.c:436 msgid "duplicate GSS authentication request\n" msgstr "requ�te d'authentification GSS dupliqu�e\n" -#: fe-auth.c:459 +#: fe-auth.c:456 msgid "GSSAPI name import error" msgstr "erreur d'import du nom GSSAPI" -#: fe-auth.c:545 +#: fe-auth.c:542 msgid "SSPI continuation error" msgstr "erreur de suite SSPI" -#: fe-auth.c:556 -#: fe-auth.c:630 -#: fe-auth.c:665 -#: fe-auth.c:762 -#: fe-connect.c:1802 -#: fe-connect.c:3129 -#: fe-connect.c:3346 -#: fe-connect.c:3762 -#: fe-connect.c:3771 -#: fe-connect.c:3908 -#: fe-connect.c:3954 -#: fe-connect.c:3972 -#: fe-connect.c:4051 -#: fe-connect.c:4121 -#: fe-connect.c:4167 -#: fe-connect.c:4185 -#: fe-exec.c:3121 -#: fe-exec.c:3286 -#: fe-lobj.c:696 -#: fe-protocol2.c:1027 -#: fe-protocol3.c:1421 +#: fe-auth.c:553 fe-auth.c:627 fe-auth.c:662 fe-auth.c:757 fe-connect.c:1971 +#: fe-connect.c:3380 fe-connect.c:3598 fe-connect.c:4019 fe-connect.c:4028 +#: fe-connect.c:4165 fe-connect.c:4211 fe-connect.c:4229 fe-connect.c:4308 +#: fe-connect.c:4378 fe-connect.c:4424 fe-connect.c:4442 fe-exec.c:3121 +#: fe-exec.c:3286 fe-lobj.c:711 fe-protocol2.c:1092 fe-protocol3.c:1433 +#: fe-secure.c:789 fe-secure.c:1189 msgid "out of memory\n" msgstr "m�moire �puis�e\n" -#: fe-auth.c:645 +#: fe-auth.c:642 msgid "could not acquire SSPI credentials" msgstr "n'a pas pu r�cup�rer les pi�ces d'identit� SSPI" -#: fe-auth.c:738 +#: fe-auth.c:733 msgid "SCM_CRED authentication method not supported\n" msgstr "authentification SCM_CRED non support�e\n" -#: fe-auth.c:812 +#: fe-auth.c:807 msgid "Kerberos 4 authentication not supported\n" msgstr "authentification Kerberos 4 non support�e\n" -#: fe-auth.c:828 +#: fe-auth.c:823 msgid "Kerberos 5 authentication not supported\n" msgstr "authentification Kerberos 5 non support�e\n" @@ -102,35 +83,37 @@ msgstr "authentification Kerberos 5 non support msgid "GSSAPI authentication not supported\n" msgstr "authentification GSSAPI non support�e\n" -#: fe-auth.c:919 +#: fe-auth.c:927 msgid "SSPI authentication not supported\n" msgstr "authentification SSPI non support�e\n" -#: fe-auth.c:926 +#: fe-auth.c:935 msgid "Crypt authentication not supported\n" msgstr "authentification crypt non support�e\n" -#: fe-auth.c:953 +#: fe-auth.c:962 #, c-format msgid "authentication method %u not supported\n" msgstr "m�thode d'authentification %u non support�e\n" -#: fe-connect.c:712 +#: fe-connect.c:758 #, c-format msgid "invalid sslmode value: \"%s\"\n" msgstr "valeur sslmode invalide : � %s �\n" -#: fe-connect.c:733 +#: fe-connect.c:779 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" -msgstr "valeur sslmode � %s � invalide si le support SSL n'est pas compil� initialement\n" +msgstr "" +"valeur sslmode � %s � invalide si le support SSL n'est pas compil� " +"initialement\n" -#: fe-connect.c:916 +#: fe-connect.c:972 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "n'a pas pu activer le mode TCP sans d�lai pour la socket : %s\n" -#: fe-connect.c:946 +#: fe-connect.c:1002 #, c-format msgid "" "could not connect to server: %s\n" @@ -141,7 +124,18 @@ msgstr "" "\tLe serveur est-il actif localement et accepte-t-il les connexions sur la\n" " \tsocket Unix � %s � ?\n" -#: fe-connect.c:956 +#: fe-connect.c:1057 +#, c-format +msgid "" +"could not connect to server: %s\n" +"\tIs the server running on host \"%s\" (%s) and accepting\n" +"\tTCP/IP connections on port %s?\n" +msgstr "" +"n'a pas pu se connecter au serveur : %s\n" +"\tLe serveur est-il actif sur l'h�te � %s � (%s)\n" +"\tet accepte-t-il les connexionsTCP/IP sur le port %s ?\n" + +#: fe-connect.c:1066 #, c-format msgid "" "could not connect to server: %s\n" @@ -152,320 +146,336 @@ msgstr "" "\tLe serveur est-il actif sur l'h�te � %s � et accepte-t-il les connexions\n" "\tTCP/IP sur le port %s ?\n" -#: fe-connect.c:1011 +#: fe-connect.c:1117 #, c-format msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" msgstr "setsockopt(TCP_KEEPIDLE) a �chou� : %s\n" -#: fe-connect.c:1024 +#: fe-connect.c:1130 #, c-format msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" msgstr "setsockopt(TCP_KEEPALIVE) a �chou� : %s\n" -#: fe-connect.c:1056 +#: fe-connect.c:1162 #, c-format msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" msgstr "setsockopt(TCP_KEEPINTVL) a �chou� : %s\n" -#: fe-connect.c:1088 +#: fe-connect.c:1194 #, c-format msgid "setsockopt(TCP_KEEPCNT) failed: %s\n" msgstr "setsockopt(TCP_KEEPCNT) a �chou� : %s\n" -#: fe-connect.c:1137 +#: fe-connect.c:1242 #, c-format msgid "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" msgstr "WSAIoctl(SIO_KEEPALIVE_VALS) a �chou� : %ui\n" -#: fe-connect.c:1189 +#: fe-connect.c:1294 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "num�ro de port invalide : � %s �\n" -#: fe-connect.c:1231 +#: fe-connect.c:1327 +#, c-format +msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" +msgstr "" +"Le chemin du socket de domaine Unix, � %s �, est trop (maximum %d octets)\n" + +#: fe-connect.c:1346 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "n'a pas pu traduire le nom d'h�te � %s � en adresse : %s\n" -#: fe-connect.c:1235 +#: fe-connect.c:1350 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "" -"n'a pas pu traduire le chemin de la socket du domaine Unix � %s � en adresse :\n" +"n'a pas pu traduire le chemin de la socket du domaine Unix � %s � en " +"adresse :\n" "%s\n" -#: fe-connect.c:1444 +#: fe-connect.c:1560 msgid "invalid connection state, probably indicative of memory corruption\n" -msgstr "�tat de connexion invalide, indique probablement une corruption de m�moire\n" +msgstr "" +"�tat de connexion invalide, indique probablement une corruption de m�moire\n" -#: fe-connect.c:1487 +#: fe-connect.c:1601 #, c-format msgid "could not create socket: %s\n" msgstr "n'a pas pu cr�er la socket : %s\n" -#: fe-connect.c:1510 +#: fe-connect.c:1624 #, c-format msgid "could not set socket to non-blocking mode: %s\n" msgstr "n'a pas pu activer le mode non-bloquant pour la socket : %s\n" -#: fe-connect.c:1522 +#: fe-connect.c:1636 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "n'a pas pu param�trer la socket en mode close-on-exec : %s\n" -#: fe-connect.c:1540 +#: fe-connect.c:1656 msgid "keepalives parameter must be an integer\n" msgstr "le param�tre keepalives doit �tre un entier\n" -#: fe-connect.c:1553 +#: fe-connect.c:1669 #, c-format msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" msgstr "setsockopt(SO_KEEPALIVE) a �chou� : %s\n" -#: fe-connect.c:1694 +#: fe-connect.c:1811 #, c-format msgid "could not get socket error status: %s\n" msgstr "n'a pas pu d�terminer le statut d'erreur de la socket : %s\n" -#: fe-connect.c:1732 +#: fe-connect.c:1849 #, c-format msgid "could not get client address from socket: %s\n" msgstr "n'a pas pu obtenir l'adresse du client depuis la socket : %s\n" -#: fe-connect.c:1776 +#: fe-connect.c:1890 +msgid "requirepeer parameter is not supported on this platform\n" +msgstr "le param�tre requirepeer n'est pas support� sur cette plateforme\n" + +#: fe-connect.c:1893 +#, c-format +msgid "could not get peer credentials: %s\n" +msgstr "n'a pas pu obtenir l'authentification de l'autre : %s\n" + +#: fe-connect.c:1903 +#, c-format +msgid "local user with ID %d does not exist\n" +msgstr "l'utilisateur local dont l'identifiant est %d n'existe pas\n" + +#: fe-connect.c:1911 +#, c-format +msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" +msgstr "" +"requirepeer indique � %s � mais le nom de l'utilisateur r�el est � %s �\n" + +#: fe-connect.c:1945 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "n'a pas pu transmettre le paquet de n�gociation SSL : %s\n" -#: fe-connect.c:1815 +#: fe-connect.c:1984 #, c-format msgid "could not send startup packet: %s\n" msgstr "n'a pas pu transmettre le paquet de d�marrage : %s\n" -#: fe-connect.c:1882 -#: fe-connect.c:1901 +#: fe-connect.c:2054 msgid "server does not support SSL, but SSL was required\n" msgstr "le serveur ne supporte pas SSL alors que SSL �tait r�clam�\n" -#: fe-connect.c:1917 +#: fe-connect.c:2080 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "a re�u une r�ponse invalide � la n�gociation SSL : %c\n" -#: fe-connect.c:1993 -#: fe-connect.c:2026 +#: fe-connect.c:2159 fe-connect.c:2192 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "" "attendait une requ�te d'authentification en provenance du serveur, mais a\n" " re�u %c\n" -#: fe-connect.c:2197 +#: fe-connect.c:2373 #, c-format msgid "out of memory allocating GSSAPI buffer (%i)" msgstr "m�moire �puis�e lors de l'allocation du tampon GSSAPI (%i)" -#: fe-connect.c:2282 +#: fe-connect.c:2458 msgid "unexpected message from server during startup\n" msgstr "message inattendu du serveur lors du d�marrage\n" -#: fe-connect.c:2378 +#: fe-connect.c:2557 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" msgstr "" "�tat de connexion invalide (%d), indiquant probablement une corruption de\n" " m�moire\n" -#: fe-connect.c:2737 -#: fe-connect.c:2797 +#: fe-connect.c:2988 fe-connect.c:3048 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "�chec de PGEventProc � %s � lors de l'�v�nement PGEVT_CONNRESET\n" -#: fe-connect.c:3142 +#: fe-connect.c:3393 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" msgstr "URL LDAP � %s � invalide : le sch�ma doit �tre ldap://\n" -#: fe-connect.c:3157 +#: fe-connect.c:3408 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "URL LDAP � %s � invalide : le � distinguished name � manque\n" -#: fe-connect.c:3168 -#: fe-connect.c:3221 +#: fe-connect.c:3419 fe-connect.c:3472 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "URL LDAP � %s � invalide : doit avoir exactement un attribut\n" -#: fe-connect.c:3178 -#: fe-connect.c:3235 +#: fe-connect.c:3429 fe-connect.c:3486 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" -msgstr "URL LDAP � %s � invalide : doit avoir une �chelle de recherche (base/un/sous)\n" +msgstr "" +"URL LDAP � %s � invalide : doit avoir une �chelle de recherche (base/un/" +"sous)\n" -#: fe-connect.c:3189 +#: fe-connect.c:3440 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "URL LDAP � %s � invalide : aucun filtre\n" -#: fe-connect.c:3210 +#: fe-connect.c:3461 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "URL LDAP � %s � invalide : num�ro de port invalide\n" -#: fe-connect.c:3244 +#: fe-connect.c:3495 msgid "could not create LDAP structure\n" msgstr "n'a pas pu cr�er la structure LDAP\n" -#: fe-connect.c:3286 +#: fe-connect.c:3537 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "�chec de la recherche sur le serveur LDAP : %s\n" -#: fe-connect.c:3297 +#: fe-connect.c:3548 msgid "more than one entry found on LDAP lookup\n" msgstr "plusieurs entr�es trouv�es pendant la recherche LDAP\n" -#: fe-connect.c:3298 -#: fe-connect.c:3310 +#: fe-connect.c:3549 fe-connect.c:3561 msgid "no entry found on LDAP lookup\n" msgstr "aucune entr�e trouv�e pendant la recherche LDAP\n" -#: fe-connect.c:3321 -#: fe-connect.c:3334 +#: fe-connect.c:3572 fe-connect.c:3585 msgid "attribute has no values on LDAP lookup\n" msgstr "l'attribut n'a pas de valeur apr�s la recherche LDAP\n" -#: fe-connect.c:3385 -#: fe-connect.c:3403 -#: fe-connect.c:3810 +#: fe-connect.c:3637 fe-connect.c:3656 fe-connect.c:4067 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" -msgstr "� = � manquant apr�s � %s � dans la cha�ne des param�tres de connexion\n" +msgstr "" +"� = � manquant apr�s � %s � dans la cha�ne des param�tres de connexion\n" -#: fe-connect.c:3466 -#: fe-connect.c:3892 -#: fe-connect.c:4076 +#: fe-connect.c:3720 fe-connect.c:4149 fe-connect.c:4333 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "option de connexion � %s � invalide\n" -#: fe-connect.c:3479 -#: fe-connect.c:3859 +#: fe-connect.c:3736 fe-connect.c:4116 msgid "unterminated quoted string in connection info string\n" msgstr "guillemets non referm�s dans la cha�ne des param�tres de connexion\n" -#: fe-connect.c:3518 +#: fe-connect.c:3775 msgid "could not get home directory to locate service definition file" msgstr "" "n'a pas pu obtenir le r�pertoire personnel pour trouver le certificat de\n" "d�finition du service" -#: fe-connect.c:3551 +#: fe-connect.c:3808 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "d�finition du service � %s � introuvable\n" -#: fe-connect.c:3574 +#: fe-connect.c:3831 #, c-format msgid "service file \"%s\" not found\n" msgstr "fichier de service � %s � introuvable\n" -#: fe-connect.c:3587 +#: fe-connect.c:3844 #, c-format msgid "line %d too long in service file \"%s\"\n" msgstr "ligne %d trop longue dans le fichier service � %s �\n" -#: fe-connect.c:3658 -#: fe-connect.c:3685 +#: fe-connect.c:3915 fe-connect.c:3942 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "erreur de syntaxe dans le fichier service � %s �, ligne %d\n" -#: fe-connect.c:4352 +#: fe-connect.c:4609 msgid "connection pointer is NULL\n" msgstr "le pointeur de connexion est NULL\n" -#: fe-connect.c:4625 +#: fe-connect.c:4886 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" -msgstr "ATTENTION : le fichier de mots de passe � %s � n'est pas un fichier texte\n" +msgstr "" +"ATTENTION : le fichier de mots de passe � %s � n'est pas un fichier texte\n" -#: fe-connect.c:4634 +#: fe-connect.c:4895 #, c-format -msgid "WARNING: password file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" +msgid "" +"WARNING: password file \"%s\" has group or world access; permissions should " +"be u=rw (0600) or less\n" msgstr "" "ATTENTION : le fichier de mots de passe � %s � a des droits d'acc�s en\n" "lecture pour le groupe ou universel ; les droits devraient �tre u=rw (0600)\n" "ou inf�rieur\n" -#: fe-connect.c:4722 +#: fe-connect.c:4983 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "mot de passe r�cup�r� dans le fichier fichier � %s �\n" -#: fe-exec.c:827 +#: fe-exec.c:810 msgid "NOTICE" msgstr "NOTICE" -#: fe-exec.c:1014 -#: fe-exec.c:1071 -#: fe-exec.c:1111 +#: fe-exec.c:997 fe-exec.c:1054 fe-exec.c:1094 msgid "command string is a null pointer\n" msgstr "la cha�ne de commande est un pointeur nul\n" -#: fe-exec.c:1104 -#: fe-exec.c:1199 +#: fe-exec.c:1087 fe-exec.c:1182 msgid "statement name is a null pointer\n" msgstr "le nom de l'instruction est un pointeur nul\n" -#: fe-exec.c:1119 -#: fe-exec.c:1273 -#: fe-exec.c:1928 -#: fe-exec.c:2125 +#: fe-exec.c:1102 fe-exec.c:1256 fe-exec.c:1925 fe-exec.c:2123 msgid "function requires at least protocol version 3.0\n" msgstr "la fonction n�cessite au minimum le protocole 3.0\n" -#: fe-exec.c:1230 +#: fe-exec.c:1213 msgid "no connection to the server\n" msgstr "aucune connexion au serveur\n" -#: fe-exec.c:1237 +#: fe-exec.c:1220 msgid "another command is already in progress\n" msgstr "une autre commande est d�j� en cours\n" -#: fe-exec.c:1349 +#: fe-exec.c:1332 msgid "length must be given for binary parameter\n" msgstr "la longueur doit �tre indiqu�e pour les param�tres binaires\n" -#: fe-exec.c:1596 +#: fe-exec.c:1585 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "asyncStatus inattendu : %d\n" -#: fe-exec.c:1616 +#: fe-exec.c:1605 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" msgstr "�chec de PGEventProc � %s � lors de l'�v�nement PGEVT_RESULTCREATE\n" -#: fe-exec.c:1746 +#: fe-exec.c:1735 msgid "COPY terminated by new PQexec" msgstr "COPY termin� par un nouveau PQexec" -#: fe-exec.c:1754 +#: fe-exec.c:1743 msgid "COPY IN state must be terminated first\n" msgstr "l'�tat COPY IN doit d'abord �tre termin�\n" -#: fe-exec.c:1774 +#: fe-exec.c:1763 msgid "COPY OUT state must be terminated first\n" msgstr "l'�tat COPY OUT doit d'abord �tre termin�\n" -#: fe-exec.c:2016 -#: fe-exec.c:2082 -#: fe-exec.c:2167 -#: fe-protocol2.c:1172 -#: fe-protocol3.c:1557 +#: fe-exec.c:1771 +msgid "PQexec not allowed during COPY BOTH\n" +msgstr "PQexec non autoris� pendant COPY BOTH\n" + +#: fe-exec.c:2014 fe-exec.c:2080 fe-exec.c:2167 fe-protocol2.c:1237 +#: fe-protocol3.c:1569 msgid "no COPY in progress\n" msgstr "aucun COPY en cours\n" @@ -477,8 +487,7 @@ msgstr "connexion dans un msgid "invalid ExecStatusType code" msgstr "code ExecStatusType invalide" -#: fe-exec.c:2454 -#: fe-exec.c:2477 +#: fe-exec.c:2454 fe-exec.c:2477 #, c-format msgid "column number %d is out of range 0..%d" msgstr "le num�ro de colonne %d est en dehors des limites 0..%d" @@ -498,8 +507,7 @@ msgstr "le num msgid "could not interpret result from server: %s" msgstr "n'a pas pu interpr�ter la r�ponse du serveur : %s" -#: fe-exec.c:3019 -#: fe-exec.c:3103 +#: fe-exec.c:3019 fe-exec.c:3103 msgid "incomplete multibyte character\n" msgstr "caract�re multi-octet incomplet\n" @@ -511,84 +519,76 @@ msgstr "ne peut pas d msgid "cannot determine OID of function lo_create\n" msgstr "ne peut pas d�terminer l'OID de la fonction lo_create\n" -#: fe-lobj.c:525 -#: fe-lobj.c:624 +#: fe-lobj.c:525 fe-lobj.c:634 #, c-format msgid "could not open file \"%s\": %s\n" msgstr "n'a pas pu ouvrir le fichier � %s � : %s\n" -#: fe-lobj.c:575 +#: fe-lobj.c:580 #, c-format msgid "could not read from file \"%s\": %s\n" msgstr "n'a pas pu lire le fichier � %s � : %s\n" -#: fe-lobj.c:639 -#: fe-lobj.c:663 +#: fe-lobj.c:654 fe-lobj.c:678 #, c-format msgid "could not write to file \"%s\": %s\n" msgstr "n'a pas pu �crire dans le fichier � %s � : %s\n" -#: fe-lobj.c:744 +#: fe-lobj.c:759 msgid "query to initialize large object functions did not return data\n" msgstr "" -"la requ�te d'initialisation des fonctions pour � Larges Objects � ne renvoie\n" +"la requ�te d'initialisation des fonctions pour � Larges Objects � ne " +"renvoie\n" "pas de donn�es\n" -#: fe-lobj.c:785 +#: fe-lobj.c:800 msgid "cannot determine OID of function lo_open\n" msgstr "ne peut pas d�terminer l'OID de la fonction lo_open\n" -#: fe-lobj.c:792 +#: fe-lobj.c:807 msgid "cannot determine OID of function lo_close\n" msgstr "ne peut pas d�terminer l'OID de la fonction lo_close\n" -#: fe-lobj.c:799 +#: fe-lobj.c:814 msgid "cannot determine OID of function lo_creat\n" msgstr "ne peut pas d�terminer l'OID de la fonction lo_creat\n" -#: fe-lobj.c:806 +#: fe-lobj.c:821 msgid "cannot determine OID of function lo_unlink\n" msgstr "ne peut pas d�terminer l'OID de la fonction lo_unlink\n" -#: fe-lobj.c:813 +#: fe-lobj.c:828 msgid "cannot determine OID of function lo_lseek\n" msgstr "ne peut pas d�terminer l'OID de la fonction lo_lseek\n" -#: fe-lobj.c:820 +#: fe-lobj.c:835 msgid "cannot determine OID of function lo_tell\n" msgstr "ne peut pas d�terminer l'OID de la fonction lo_tell\n" -#: fe-lobj.c:827 +#: fe-lobj.c:842 msgid "cannot determine OID of function loread\n" msgstr "ne peut pas d�terminer l'OID de la fonction loread\n" -#: fe-lobj.c:834 +#: fe-lobj.c:849 msgid "cannot determine OID of function lowrite\n" msgstr "ne peut pas d�terminer l'OID de la fonction lowrite\n" -#: fe-misc.c:262 +#: fe-misc.c:270 #, c-format msgid "integer of size %lu not supported by pqGetInt" msgstr "entier de taille %lu non support� par pqGetInt" -#: fe-misc.c:298 +#: fe-misc.c:306 #, c-format msgid "integer of size %lu not supported by pqPutInt" msgstr "entier de taille %lu non support� par pqPutInt" -#: fe-misc.c:578 -#: fe-misc.c:780 +#: fe-misc.c:585 fe-misc.c:784 msgid "connection not open\n" msgstr "la connexion n'est pas active\n" -#: fe-misc.c:643 -#: fe-misc.c:733 -#, c-format -msgid "could not receive data from server: %s\n" -msgstr "n'a pas pu recevoir des donn�es depuis le serveur : %s\n" - -#: fe-misc.c:750 -#: fe-misc.c:828 +#: fe-misc.c:711 fe-secure.c:387 fe-secure.c:466 fe-secure.c:547 +#: fe-secure.c:655 msgid "" "server closed the connection unexpectedly\n" "\tThis probably means the server terminated abnormally\n" @@ -598,304 +598,329 @@ msgstr "" "\tLe serveur s'est peut-�tre arr�t� anormalement avant ou durant le\n" "\ttraitement de la requ�te.\n" -#: fe-misc.c:845 -#, c-format -msgid "could not send data to server: %s\n" -msgstr "n'a pas pu transmettre les donn�es au serveur : %s\n" - -#: fe-misc.c:964 +#: fe-misc.c:948 msgid "timeout expired\n" msgstr "le d�lai est d�pass�\n" -#: fe-misc.c:1009 +#: fe-misc.c:993 msgid "socket not open\n" msgstr "socket non ouvert\n" -#: fe-misc.c:1032 +#: fe-misc.c:1016 #, c-format msgid "select() failed: %s\n" msgstr "�chec de select() : %s\n" -#: fe-protocol2.c:89 +#: fe-protocol2.c:91 #, c-format msgid "invalid setenv state %c, probably indicative of memory corruption\n" -msgstr "�tat setenv %c invalide, indiquant probablement une corruption de la m�moire\n" +msgstr "" +"�tat setenv %c invalide, indiquant probablement une corruption de la " +"m�moire\n" -#: fe-protocol2.c:330 +#: fe-protocol2.c:390 #, c-format msgid "invalid state %c, probably indicative of memory corruption\n" -msgstr "�tat %c invalide, indiquant probablement une corruption de la m�moire\n" +msgstr "" +"�tat %c invalide, indiquant probablement une corruption de la m�moire\n" -#: fe-protocol2.c:419 -#: fe-protocol3.c:186 +#: fe-protocol2.c:479 fe-protocol3.c:186 #, c-format msgid "message type 0x%02x arrived from server while idle" -msgstr "le message de type 0x%02x est arriv� alors que le serveur �tait en attente" +msgstr "" +"le message de type 0x%02x est arriv� alors que le serveur �tait en attente" -#: fe-protocol2.c:462 +#: fe-protocol2.c:522 #, c-format msgid "unexpected character %c following empty query response (\"I\" message)" msgstr "" "caract�re %c inattendu � la suite d'une r�ponse de requ�te vide (message\n" "� I �)" -#: fe-protocol2.c:516 -msgid "server sent data (\"D\" message) without prior row description (\"T\" message)" +#: fe-protocol2.c:576 +msgid "" +"server sent data (\"D\" message) without prior row description (\"T\" " +"message)" msgstr "" "le serveur a envoy� des donn�es (message � D �) sans description pr�alable\n" "de la ligne (message � T �)" -#: fe-protocol2.c:532 -msgid "server sent binary data (\"B\" message) without prior row description (\"T\" message)" +#: fe-protocol2.c:592 +msgid "" +"server sent binary data (\"B\" message) without prior row description (\"T\" " +"message)" msgstr "" "le serveur a envoy� des donn�es binaires (message � B �) sans description\n" "pr�alable de la ligne (message � T �)" -#: fe-protocol2.c:547 -#: fe-protocol3.c:382 +#: fe-protocol2.c:612 fe-protocol3.c:388 #, c-format msgid "unexpected response from server; first received character was \"%c\"\n" -msgstr "r�ponse inattendue du serveur, le premier caract�re re�u �tant � %c �\n" +msgstr "" +"r�ponse inattendue du serveur, le premier caract�re re�u �tant � %c �\n" -#: fe-protocol2.c:768 -#: fe-protocol3.c:701 +#: fe-protocol2.c:833 fe-protocol3.c:707 msgid "out of memory for query result\n" msgstr "m�moire �puis�e pour le r�sultat de la requ�te\n" -#: fe-protocol2.c:1215 -#: fe-protocol3.c:1625 +#: fe-protocol2.c:1280 fe-protocol3.c:1637 #, c-format msgid "%s" msgstr "%s" -#: fe-protocol2.c:1227 +#: fe-protocol2.c:1292 msgid "lost synchronization with server, resetting connection" -msgstr "synchronisation perdue avec le serveur, r�initialisation de la connexion" +msgstr "" +"synchronisation perdue avec le serveur, r�initialisation de la connexion" -#: fe-protocol2.c:1361 -#: fe-protocol2.c:1393 -#: fe-protocol3.c:1828 +#: fe-protocol2.c:1426 fe-protocol2.c:1458 fe-protocol3.c:1840 #, c-format msgid "protocol error: id=0x%x\n" msgstr "erreur de protocole : id=0x%x\n" #: fe-protocol3.c:344 -msgid "server sent data (\"D\" message) without prior row description (\"T\" message)\n" +msgid "" +"server sent data (\"D\" message) without prior row description (\"T\" " +"message)\n" msgstr "" "le serveur a envoy� des donn�es (message � D �) sans description pr�alable\n" "de la ligne (message � T �)\n" -#: fe-protocol3.c:403 +#: fe-protocol3.c:409 #, c-format msgid "message contents do not agree with length in message type \"%c\"\n" msgstr "" "le contenu du message ne correspond pas avec la longueur du type de message\n" "� %c �\n" -#: fe-protocol3.c:424 +#: fe-protocol3.c:430 #, c-format msgid "lost synchronization with server: got message type \"%c\", length %d\n" msgstr "" "synchronisation perdue avec le serveur : a re�u le type de message � %c �,\n" "longueur %d\n" -#: fe-protocol3.c:646 +#: fe-protocol3.c:652 msgid "unexpected field count in \"D\" message\n" msgstr "nombre de champs inattendus dans le message � D �\n" #. translator: %s represents a digit string -#: fe-protocol3.c:788 -#: fe-protocol3.c:807 +#: fe-protocol3.c:798 fe-protocol3.c:817 #, c-format msgid " at character %s" msgstr " au caract�re %s" -#: fe-protocol3.c:820 +#: fe-protocol3.c:830 #, c-format msgid "DETAIL: %s\n" msgstr "D�TAIL : %s\n" -#: fe-protocol3.c:823 +#: fe-protocol3.c:833 #, c-format msgid "HINT: %s\n" msgstr "ASTUCE : %s\n" -#: fe-protocol3.c:826 +#: fe-protocol3.c:836 #, c-format msgid "QUERY: %s\n" msgstr "REQU�TE : %s\n" -#: fe-protocol3.c:829 +#: fe-protocol3.c:839 #, c-format msgid "CONTEXT: %s\n" msgstr "CONTEXTE : %s\n" -#: fe-protocol3.c:841 +#: fe-protocol3.c:851 msgid "LOCATION: " msgstr "EMPLACEMENT : " -#: fe-protocol3.c:843 +#: fe-protocol3.c:853 #, c-format msgid "%s, " msgstr "%s, " -#: fe-protocol3.c:845 +#: fe-protocol3.c:855 #, c-format msgid "%s:%s" msgstr "%s : %s" -#: fe-protocol3.c:1069 +#: fe-protocol3.c:1079 #, c-format msgid "LINE %d: " msgstr "LIGNE %d : " -#: fe-protocol3.c:1453 +#: fe-protocol3.c:1465 msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline : ne va pas r�aliser un COPY OUT au format texte\n" -#: fe-secure.c:265 +#: fe-secure.c:271 fe-secure.c:1126 fe-secure.c:1346 +#, c-format +msgid "could not acquire mutex: %s\n" +msgstr "n'a pas pu acqu�rir le mutex : %s\n" + +#: fe-secure.c:283 #, c-format msgid "could not establish SSL connection: %s\n" msgstr "n'a pas pu �tablir la connexion SSL : %s\n" -#: fe-secure.c:349 -#: fe-secure.c:436 -#: fe-secure.c:1180 +#: fe-secure.c:392 fe-secure.c:552 fe-secure.c:1464 #, c-format msgid "SSL SYSCALL error: %s\n" msgstr "erreur SYSCALL SSL : %s\n" -#: fe-secure.c:355 -#: fe-secure.c:442 -#: fe-secure.c:1184 +#: fe-secure.c:399 fe-secure.c:559 fe-secure.c:1468 msgid "SSL SYSCALL error: EOF detected\n" msgstr "erreur SYSCALL SSL : EOF d�tect�\n" -#: fe-secure.c:367 -#: fe-secure.c:453 -#: fe-secure.c:1193 +#: fe-secure.c:410 fe-secure.c:570 fe-secure.c:1477 #, c-format msgid "SSL error: %s\n" msgstr "erreur SSL : %s\n" -#: fe-secure.c:377 -#: fe-secure.c:463 -#: fe-secure.c:1202 +#: fe-secure.c:424 fe-secure.c:584 +msgid "SSL connection has been closed unexpectedly\n" +msgstr "la connexion SSL a �t� ferm�e de fa�on inattendu\n" + +#: fe-secure.c:430 fe-secure.c:590 fe-secure.c:1486 #, c-format msgid "unrecognized SSL error code: %d\n" msgstr "code d'erreur SSL inconnu : %d\n" -#: fe-secure.c:601 +#: fe-secure.c:474 +#, c-format +msgid "could not receive data from server: %s\n" +msgstr "n'a pas pu recevoir des donn�es depuis le serveur : %s\n" + +#: fe-secure.c:662 +#, c-format +msgid "could not send data to server: %s\n" +msgstr "n'a pas pu transmettre les donn�es au serveur : %s\n" + +#: fe-secure.c:782 fe-secure.c:799 +msgid "could not get server common name from server certificate\n" +msgstr "n'a pas pu r�cup�rer le nom commun � partir du certificat du serveur\n" + +#: fe-secure.c:812 +msgid "SSL certificate's common name contains embedded null\n" +msgstr "le nom commun du certificat SSL contient des NULL\n" + +#: fe-secure.c:824 msgid "host name must be specified for a verified SSL connection\n" msgstr "le nom d'h�te doit �tre pr�cis� pour une connexion SSL v�rifi�e\n" -#: fe-secure.c:620 +#: fe-secure.c:838 #, c-format msgid "server common name \"%s\" does not match host name \"%s\"\n" -msgstr "le nom courant du serveur � %s � ne correspond pas au nom d'h�te � %s �\n" +msgstr "" +"le nom courant du serveur � %s � ne correspond pas au nom d'h�te � %s �\n" -#: fe-secure.c:752 +#: fe-secure.c:973 #, c-format msgid "could not create SSL context: %s\n" msgstr "n'a pas pu cr�er le contexte SSL : %s\n" -#: fe-secure.c:868 +#: fe-secure.c:1096 #, c-format msgid "could not open certificate file \"%s\": %s\n" msgstr "n'a pas pu ouvrir le certificat � %s � : %s\n" -#: fe-secure.c:893 -#: fe-secure.c:903 +#: fe-secure.c:1135 fe-secure.c:1150 #, c-format msgid "could not read certificate file \"%s\": %s\n" msgstr "n'a pas pu lire le certificat � %s � : %s\n" -#: fe-secure.c:940 +#: fe-secure.c:1205 #, c-format msgid "could not load SSL engine \"%s\": %s\n" msgstr "n'a pas pu charger le moteur SSL � %s � : %s\n" -#: fe-secure.c:952 +#: fe-secure.c:1217 #, c-format msgid "could not initialize SSL engine \"%s\": %s\n" msgstr "n'a pas pu initialiser le moteur SSL � %s � : %s\n" -#: fe-secure.c:968 +#: fe-secure.c:1233 #, c-format msgid "could not read private SSL key \"%s\" from engine \"%s\": %s\n" -msgstr "n'a pas pu lire la cl� priv�e SSL � %s � � partir du moteur � %s � : %s\n" +msgstr "" +"n'a pas pu lire la cl� priv�e SSL � %s � � partir du moteur � %s � : %s\n" -#: fe-secure.c:982 +#: fe-secure.c:1247 #, c-format msgid "could not load private SSL key \"%s\" from engine \"%s\": %s\n" -msgstr "n'a pas pu charger la cl� priv�e SSL � %s � � partir du moteur � %s � : %s\n" +msgstr "" +"n'a pas pu charger la cl� priv�e SSL � %s � � partir du moteur � %s � : %s\n" -#: fe-secure.c:1019 +#: fe-secure.c:1284 #, c-format msgid "certificate present, but not private key file \"%s\"\n" msgstr "le certificat est pr�sent, mais la cl� priv�e � %s � est absente\n" -#: fe-secure.c:1027 +#: fe-secure.c:1292 #, c-format -msgid "private key file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" +msgid "" +"private key file \"%s\" has group or world access; permissions should be " +"u=rw (0600) or less\n" msgstr "" "le fichier de la cl� priv�e � %s � a des droits d'acc�s en lecture\n" "pour le groupe ou universel ; les droits devraient �tre u=rw (0600)\n" "ou inf�rieur\n" -#: fe-secure.c:1038 +#: fe-secure.c:1303 #, c-format msgid "could not load private key file \"%s\": %s\n" msgstr "n'a pas pu charger le fichier de cl� priv�e � %s � : %s\n" -#: fe-secure.c:1052 +#: fe-secure.c:1317 #, c-format msgid "certificate does not match private key file \"%s\": %s\n" msgstr "le certificat ne correspond pas � la cl� priv�e � %s � : %s\n" -#: fe-secure.c:1080 +#: fe-secure.c:1355 #, c-format msgid "could not read root certificate file \"%s\": %s\n" msgstr "n'a pas pu lire le certificat racine � %s � : %s\n" -#: fe-secure.c:1107 +#: fe-secure.c:1385 #, c-format msgid "SSL library does not support CRL certificates (file \"%s\")\n" -msgstr "la biblioth�que SSL ne supporte pas les certificats CRL (fichier � %s �)\n" +msgstr "" +"la biblioth�que SSL ne supporte pas les certificats CRL (fichier � %s �)\n" -#: fe-secure.c:1134 +#: fe-secure.c:1418 msgid "" "could not get home directory to locate root certificate file\n" -"Either provide the file or change sslmode to disable server certificate verification.\n" +"Either provide the file or change sslmode to disable server certificate " +"verification.\n" msgstr "" -"n'a pas pu obtenir le r�pertoire personnel pour situer le fichier de certificat racine.\n" -"Fournissez le fichier ou modifiez sslmode pour d�sactiver la v�rification du\n" +"n'a pas pu obtenir le r�pertoire personnel pour situer le fichier de " +"certificat racine.\n" +"Fournissez le fichier ou modifiez sslmode pour d�sactiver la v�rification " +"du\n" "certificat par le serveur.\n" -#: fe-secure.c:1138 +#: fe-secure.c:1422 #, c-format msgid "" "root certificate file \"%s\" does not exist\n" -"Either provide the file or change sslmode to disable server certificate verification.\n" +"Either provide the file or change sslmode to disable server certificate " +"verification.\n" msgstr "" "le fichier de certificat racine � %s � n'existe pas.\n" -"Fournissez le fichier ou modifiez sslmode pour d�sactiver la v�rification du\n" +"Fournissez le fichier ou modifiez sslmode pour d�sactiver la v�rification " +"du\n" "certificat par le serveur.\n" -#: fe-secure.c:1221 +#: fe-secure.c:1505 #, c-format msgid "certificate could not be obtained: %s\n" msgstr "le certificat n'a pas pu �tre obtenu : %s\n" -#: fe-secure.c:1249 -msgid "SSL certificate's common name contains embedded null\n" -msgstr "le nom commun du certificat SSL contient des NULL\n" - -#: fe-secure.c:1325 +#: fe-secure.c:1582 msgid "no SSL error reported" msgstr "aucune erreur SSL report�e" -#: fe-secure.c:1334 +#: fe-secure.c:1591 #, c-format msgid "SSL error code %lu" msgstr "erreur SSL %lu" @@ -905,26 +930,27 @@ msgstr "erreur SSL %lu" #~ "n'a pas pu r�cup�rer le r�pertoire personnel pour trouver les " #~ "certificats\n" #~ "du client\n" + #~ msgid "" #~ "verified SSL connections are only supported when connecting to a host " #~ "name\n" #~ msgstr "" #~ "les connexions SSL v�rifi�es ne sont support�es que lors de la connexion\n" #~ "� un alias h�te\n" + #~ msgid "could not open private key file \"%s\": %s\n" #~ msgstr "n'a pas pu ouvrir le fichier de cl� priv�e � %s � : %s\n" + #~ msgid "private key file \"%s\" changed during execution\n" #~ msgstr "la cl� priv�e � %s � a �t� modifi�e durant l'ex�cution\n" + #~ msgid "could not read private key file \"%s\": %s\n" #~ msgstr "n'a pas pu lire la cl� priv�e � %s � : %s\n" -#~ msgid "could not get home directory to locate root certificate file" -#~ msgstr "" -#~ "n'a pas pu r�cup�rer le r�pertoire personnel pour trouver le certificat " -#~ "racine" + #~ msgid "invalid appname state %d, probably indicative of memory corruption\n" #~ msgstr "" #~ "�tat appname %d invalide, indiquant probablement une corruption de la " #~ "m�moire\n" + #~ msgid "invalid sslverify value: \"%s\"\n" #~ msgstr "valeur sslverify invalide : � %s �\n" - diff --git a/src/interfaces/libpq/po/it.po b/src/interfaces/libpq/po/it.po index d6114bbe72..9706737723 100644 --- a/src/interfaces/libpq/po/it.po +++ b/src/interfaces/libpq/po/it.po @@ -6,15 +6,15 @@ # http://www.itpug.org/ - info@itpug.org # # Traduttori: +# * Daniele Varrazzo # * Maurizio Totti -# +# # Revisori: # * Emanuele Zamprogno # # Copyright (c) 2010, Associazione Culturale ITPUG # Distributed under the same license of the PostgreSQL project # -# # Translation of libpq to Italian # PostgreSQL Project # @@ -38,544 +38,569 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" +"Project-Id-Version: libpq (PostgreSQL) 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-03-26 13:23+0000\n" -"PO-Revision-Date: 2010-03-27 12:44:19+0100\n" -"Last-Translator: Gabriele Bartolini \n" +"POT-Creation-Date: 2013-10-03 01:55+0000\n" +"PO-Revision-Date: 2013-10-04 01:18+0100\n" +"Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Poedit-Language: Italian\n" -"X-Poedit-Country: ITALY\n" -"X-Poedit-SourceCharset: utf-8\n" +"X-Poedit-SourceCharset: UTF-8\n" +"X-Generator: Poedit 1.5.4\n" -#: fe-auth.c:242 +#: fe-auth.c:210 fe-auth.c:429 fe-auth.c:656 +msgid "host name must be specified\n" +msgstr "il nome dell'host deve essere specificato\n" + +#: fe-auth.c:240 #, c-format msgid "could not set socket to blocking mode: %s\n" -msgstr "impossibile impostare il socket in modalità blocco: %s\n" +msgstr "impostazione del socket in modalità bloccante fallita: %s\n" -#: fe-auth.c:260 -#: fe-auth.c:264 +#: fe-auth.c:258 fe-auth.c:262 #, c-format msgid "Kerberos 5 authentication rejected: %*s\n" msgstr "Autenticazione Kerberos 5 rifiutata: %*s\n" -#: fe-auth.c:290 +#: fe-auth.c:288 #, c-format msgid "could not restore non-blocking mode on socket: %s\n" -msgstr "impossibile ripristinare lo stato non-blocking sul socket: %s\n" +msgstr "ripristino dello stato non-bloccante del socket fallito: %s\n" -#: fe-auth.c:403 +# DV: non ne sono convinto +#: fe-auth.c:400 msgid "GSSAPI continuation error" -msgstr "GSSAPI errore persistente" - -#: fe-auth.c:431 -#: fe-auth.c:657 -msgid "host name must be specified\n" -msgstr "il nome dell'host deve essere specificato\n" +msgstr "GSSAPI errore di continuazione" -#: fe-auth.c:438 +#: fe-auth.c:436 msgid "duplicate GSS authentication request\n" -msgstr "la richiesta di autenticazione GSS è duplicata\n" +msgstr "richiesta di autenticazione GSS duplicata\n" # non è che mi torni tanto così -#: fe-auth.c:458 +#: fe-auth.c:456 msgid "GSSAPI name import error" -msgstr "errore di importazione del GSSAPI name" +msgstr "errore di importazione del nome GSSAPI" -#: fe-auth.c:544 +#: fe-auth.c:542 msgid "SSPI continuation error" -msgstr "SSPI errore persistente" - -#: fe-auth.c:555 -#: fe-auth.c:629 -#: fe-auth.c:663 -#: fe-auth.c:760 -#: fe-connect.c:1557 -#: fe-connect.c:2876 -#: fe-connect.c:3093 -#: fe-connect.c:3509 -#: fe-connect.c:3518 -#: fe-connect.c:3655 -#: fe-connect.c:3701 -#: fe-connect.c:3719 -#: fe-connect.c:3798 -#: fe-connect.c:3868 -#: fe-connect.c:3914 -#: fe-connect.c:3932 -#: fe-exec.c:3121 -#: fe-exec.c:3286 -#: fe-lobj.c:696 -#: fe-protocol2.c:1027 -#: fe-protocol3.c:1421 +msgstr "SSPI errore di continuazione" + +#: fe-auth.c:553 fe-auth.c:627 fe-auth.c:662 fe-auth.c:757 fe-connect.c:1971 +#: fe-connect.c:3380 fe-connect.c:3598 fe-connect.c:4019 fe-connect.c:4028 +#: fe-connect.c:4165 fe-connect.c:4211 fe-connect.c:4229 fe-connect.c:4308 +#: fe-connect.c:4378 fe-connect.c:4424 fe-connect.c:4442 fe-exec.c:3121 +#: fe-exec.c:3286 fe-lobj.c:711 fe-protocol2.c:1092 fe-protocol3.c:1433 +#: fe-secure.c:790 fe-secure.c:1190 msgid "out of memory\n" msgstr "memoria esaurita\n" -#: fe-auth.c:644 +#: fe-auth.c:642 msgid "could not acquire SSPI credentials" -msgstr "non riesco ad ottenere le credenziali SSPI" +msgstr "non è stato possibile ottenere le credenziali SSPI" -#: fe-auth.c:736 +#: fe-auth.c:733 msgid "SCM_CRED authentication method not supported\n" -msgstr "Metodo autenticazione SCM_CRED non supportato\n" +msgstr "il metodo di autenticazione SCM_CRED non è supportato\n" -#: fe-auth.c:810 +#: fe-auth.c:807 msgid "Kerberos 4 authentication not supported\n" -msgstr "Autenticazione Kerberos 4 non supportata\n" +msgstr "l'autenticazione Kerberos 4 non è supportata\n" -#: fe-auth.c:826 +#: fe-auth.c:823 msgid "Kerberos 5 authentication not supported\n" -msgstr "Autenticazione Kerberos 5 non supportata\n" +msgstr "l'autenticazione Kerberos 5 non è supportata\n" -#: fe-auth.c:893 +#: fe-auth.c:895 msgid "GSSAPI authentication not supported\n" msgstr "l'autenticazione GSSAPI non è supportata\n" -#: fe-auth.c:917 +#: fe-auth.c:927 msgid "SSPI authentication not supported\n" msgstr "l'autenticazione SSPI non è supportata\n" -#: fe-auth.c:924 +#: fe-auth.c:935 msgid "Crypt authentication not supported\n" -msgstr "autenticazione di tipo Crupt non supportata\n" +msgstr "l'autenticazione Crypt non è supportata\n" -#: fe-auth.c:951 +#: fe-auth.c:962 #, c-format msgid "authentication method %u not supported\n" -msgstr "il metodo di autenticazione %u non è supportato\n" +msgstr "l'autenticazione %u non è supportata\n" -#: fe-connect.c:689 +#: fe-connect.c:758 #, c-format msgid "invalid sslmode value: \"%s\"\n" msgstr "valore sslmode errato: \"%s\"\n" -#: fe-connect.c:710 +#: fe-connect.c:779 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" msgstr "valore sslmode \"%s\" non valido quando il supporto SSL non è compilato\n" -#: fe-connect.c:893 +#: fe-connect.c:972 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" -msgstr "impossibile impostare il socket in modaltà TCP no delay: %s\n" +msgstr "impostazione del socket in modalità TCP no delay fallita: %s\n" -#: fe-connect.c:923 +#: fe-connect.c:1002 #, c-format msgid "" "could not connect to server: %s\n" "\tIs the server running locally and accepting\n" "\tconnections on Unix domain socket \"%s\"?\n" msgstr "" -"impossibile connettersi al server: %s\n" -"\tControllare che il server sia in funzione e che\n" -"\taccetti connessioni sui Unix domain socket \"%s\"?\n" +"connessione al server fallita: %s\n" +"\tVerifica che il server locale sia in funzione e che\n" +"\taccetti connessioni sul socket di dominio Unix \"%s\"\n" + +#: fe-connect.c:1057 +#, c-format +msgid "" +"could not connect to server: %s\n" +"\tIs the server running on host \"%s\" (%s) and accepting\n" +"\tTCP/IP connections on port %s?\n" +msgstr "" +"connessione al server fallita: %s\n" +"\tVerifica che il server all'indirizzo \"%s\" (%s) sia in funzione\n" +"\te che accetti connessioni TCP/IP sulla porta %s\n" -#: fe-connect.c:933 +#: fe-connect.c:1066 #, c-format msgid "" "could not connect to server: %s\n" "\tIs the server running on host \"%s\" and accepting\n" "\tTCP/IP connections on port %s?\n" msgstr "" -"impossibile connettersi al server: %s\n" -"\tControllare che il server all'indirizzo \"%s\" sia in funzione\n" -"\te che accetti connessioni TCP/IP sulla porta %s?\n" +"connessione al server fallita: %s\n" +"\tVerifica che il server all'indirizzo \"%s\" sia in funzione\n" +"\te che accetti connessioni TCP/IP sulla porta %s\n" -#: fe-connect.c:990 +#: fe-connect.c:1117 +#, c-format +msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" +msgstr "chiamata setsockopt(TCP_KEEPIDLE) fallita: %s\n" + +#: fe-connect.c:1130 +#, c-format +msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" +msgstr "chiamata setsockopt(TCP_KEEPALIVE) fallita: %s\n" + +#: fe-connect.c:1162 +#, c-format +msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" +msgstr "chiamata setsockopt(TCP_KEEPINTVL) fallita: %s\n" + +#: fe-connect.c:1194 +#, c-format +msgid "setsockopt(TCP_KEEPCNT) failed: %s\n" +msgstr "chiamata setsockopt(TCP_KEEPCNT) fallita: %s\n" + +#: fe-connect.c:1242 +#, c-format +msgid "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" +msgstr "chiamata WSAIoctl(SIO_KEEPALIVE_VALS) fallito: %ui\n" + +#: fe-connect.c:1294 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "numero di porta non valido: \"%s\"\n" -#: fe-connect.c:1032 +#: fe-connect.c:1327 +#, c-format +msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" +msgstr "Il percorso del socket di dominio unix \"%s\" è troppo lungo (massimo %d byte)\n" + +#: fe-connect.c:1346 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" -msgstr "impossibile convertire l'host name \"%s\" all'indirizzo: %s\n" +msgstr "conversione del nome host \"%s\" in indirizzo fallita: %s\n" -#: fe-connect.c:1036 +#: fe-connect.c:1350 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" -msgstr "impossibile tradurre lo Unix-domain socket path \"%s\" nell'indirizzo: %s\n" +msgstr "conversione del percorso del socket di dominio Unix \"%s\" in indirizzo fallita: %s\n" -#: fe-connect.c:1245 +#: fe-connect.c:1560 msgid "invalid connection state, probably indicative of memory corruption\n" -msgstr "stato connessione invalido, probabilmente indica una corruzzione della memoria\n" +msgstr "stato della connessione non valido, probabilmente indica una corruzione della memoria\n" -#: fe-connect.c:1288 +#: fe-connect.c:1601 #, c-format msgid "could not create socket: %s\n" -msgstr "impossibile creare il socket: %s\n" +msgstr "creazione del socket fallita: %s\n" -#: fe-connect.c:1311 +#: fe-connect.c:1624 #, c-format msgid "could not set socket to non-blocking mode: %s\n" -msgstr "impossibile settare il socket in stato non-blocking: %s\n" +msgstr "impostazione del socket in modalità non bloccante fallita: %s\n" -#: fe-connect.c:1323 +#: fe-connect.c:1636 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" -msgstr "impossibile impostare il socket in modalità close-on-exec: %s\n" +msgstr "impostazione del socket in modalità close-on-exec fallita: %s\n" + +#: fe-connect.c:1656 +msgid "keepalives parameter must be an integer\n" +msgstr "il parametro keepalives dev'essere un intero\n" + +#: fe-connect.c:1669 +#, c-format +msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" +msgstr "chiamata setsockopt(SO_KEEPALIVE) fallita: %s\n" -#: fe-connect.c:1449 +#: fe-connect.c:1811 #, c-format msgid "could not get socket error status: %s\n" -msgstr "impossibile ottenere un socket error status: %s\n" +msgstr "lettura dello stato di errore del socket fallita: %s\n" -#: fe-connect.c:1487 +#: fe-connect.c:1849 #, c-format msgid "could not get client address from socket: %s\n" -msgstr "impossibile ottenere l'indirizzo del client dal socket: %s\n" +msgstr "non è stato possibile ottenere l'indirizzo del client dal socket: %s\n" + +#: fe-connect.c:1890 +msgid "requirepeer parameter is not supported on this platform\n" +msgstr "il parametro requirepeer non è supportato su questa piattaforma\n" + +#: fe-connect.c:1893 +#, c-format +msgid "could not get peer credentials: %s\n" +msgstr "non è stato possibile ottenere le credenziali del peer: %s\n" + +#: fe-connect.c:1903 +#, c-format +msgid "local user with ID %d does not exist\n" +msgstr "l'utente locale con ID %d non esiste\n" + +#: fe-connect.c:1911 +#, c-format +msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" +msgstr "requirepeer specifica \"%s\", ma il vero nome utente del peer è \"%s\"\n" -#: fe-connect.c:1531 +#: fe-connect.c:1945 #, c-format msgid "could not send SSL negotiation packet: %s\n" -msgstr "impossibile inviare i pacchetti di negoziazione SSL: %s\n" +msgstr "invio del pacchetto di negoziazione SSL fallito: %s\n" -#: fe-connect.c:1570 +#: fe-connect.c:1984 #, c-format msgid "could not send startup packet: %s\n" -msgstr "impossibile spedire lo startup packet: %s\n" +msgstr "invio del pacchetto di avvio fallito: %s\n" -#: fe-connect.c:1637 -#: fe-connect.c:1656 +#: fe-connect.c:2054 msgid "server does not support SSL, but SSL was required\n" -msgstr "il server non supporta SSL, ma SSL è richiesto\n" +msgstr "il server non supporta SSL, ma SSL è stato richiesto\n" -#: fe-connect.c:1672 +#: fe-connect.c:2080 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "ricevuta risposta errata alla negoziazione SSL: %c\n" -#: fe-connect.c:1748 -#: fe-connect.c:1781 +#: fe-connect.c:2159 fe-connect.c:2192 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "prevista richiesta di autenticazione dal server, ma è stato ricevuto %c\n" -#: fe-connect.c:1952 +#: fe-connect.c:2373 #, c-format msgid "out of memory allocating GSSAPI buffer (%i)" -msgstr "errore di memoria nell'allocazione del GSSAPI buffer (%i)" +msgstr "memoria esaurita nell'allocazione del buffer GSSAPI (%i)" -#: fe-connect.c:2037 +#: fe-connect.c:2458 msgid "unexpected message from server during startup\n" msgstr "messaggio imprevisto dal server durante l'avvio\n" -#: fe-connect.c:2133 -#, fuzzy, c-format +#: fe-connect.c:2557 +#, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" -msgstr "stato connessione errato %c, probabilmente indica una corruzione di memoria\n" +msgstr "stato connessione errato %d, probabilmente indica una corruzione di memoria\n" -#: fe-connect.c:2484 -#: fe-connect.c:2544 +#: fe-connect.c:2988 fe-connect.c:3048 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" -msgstr "PGEventProc \"%s\" ha fallito durante l'evento PGEVT_CONNRESET\n" +msgstr "PGEventProc \"%s\" fallito durante l'evento PGEVT_CONNRESET\n" -#: fe-connect.c:2889 +#: fe-connect.c:3393 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" -msgstr "LDAP URL \"%s\" non corretta: lo schema deve essere ldap://\n" +msgstr "URL LDAP \"%s\" non corretta: lo schema deve essere ldap://\n" -#: fe-connect.c:2904 +#: fe-connect.c:3408 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" -msgstr "LDAP URL \"%s\" non corretta: distinguished name non trovato\n" +msgstr "URL LDAP \"%s\" non corretta: distinguished name non trovato\n" -#: fe-connect.c:2915 -#: fe-connect.c:2968 +#: fe-connect.c:3419 fe-connect.c:3472 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" -msgstr "LDAP URL \"%s\" non corretta: deve esserci esattamente un attributo\n" +msgstr "URL LDAP \"%s\" non corretta: deve avere esattamente un attributo\n" -#: fe-connect.c:2925 -#: fe-connect.c:2982 +#: fe-connect.c:3429 fe-connect.c:3486 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" -msgstr "LDAP URL \"%s\" non corretta: deve essere specificato la portata della ricerca (base/one/sub)\n" +msgstr "URL LDAP \"%s\" non corretta: deve essere specificato la portata della ricerca (base/one/sub)\n" -#: fe-connect.c:2936 +#: fe-connect.c:3440 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" -msgstr "LDAP URL \"%s\" non corretta: filtro non specificato\n" +msgstr "URL LDAP \"%s\" non corretta: filtro non specificato\n" -#: fe-connect.c:2957 +#: fe-connect.c:3461 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" -msgstr "LDAP URL \"%s\" non corretta: numero di port non corretto\n" +msgstr "URL LDAP \"%s\" non corretta: numero di porta non valido\n" -#: fe-connect.c:2991 +#: fe-connect.c:3495 msgid "could not create LDAP structure\n" -msgstr "impossibile creare la struttura dati LDAP\n" +msgstr "creazione della struttura dati LDAP fallita\n" -#: fe-connect.c:3033 +#: fe-connect.c:3537 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "ricerca del server LDAP fallita: %s\n" -#: fe-connect.c:3044 +#: fe-connect.c:3548 msgid "more than one entry found on LDAP lookup\n" msgstr "trovata più di una voce nella ricerca LDAP\n" -#: fe-connect.c:3045 -#: fe-connect.c:3057 +#: fe-connect.c:3549 fe-connect.c:3561 msgid "no entry found on LDAP lookup\n" msgstr "nessun elemento trovato per la ricerca LDAP\n" -#: fe-connect.c:3068 -#: fe-connect.c:3081 +#: fe-connect.c:3572 fe-connect.c:3585 msgid "attribute has no values on LDAP lookup\n" msgstr "l'attributo non ha valori nella ricerca LDAP\n" -#: fe-connect.c:3132 -#: fe-connect.c:3150 -#: fe-connect.c:3557 +#: fe-connect.c:3637 fe-connect.c:3656 fe-connect.c:4067 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "manca \"=\" dopo \"%s\" nella stringa di connessione\n" -#: fe-connect.c:3213 -#: fe-connect.c:3639 -#: fe-connect.c:3823 +#: fe-connect.c:3720 fe-connect.c:4149 fe-connect.c:4333 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "opzione di connessione errata \"%s\"\n" -#: fe-connect.c:3226 -#: fe-connect.c:3606 +#: fe-connect.c:3736 fe-connect.c:4116 msgid "unterminated quoted string in connection info string\n" -msgstr "stringa non chiusa nella stringa di connessione\n" +msgstr "stringa tra virgolette non terminata nella stringa di connessione\n" -#: fe-connect.c:3265 -#, fuzzy +#: fe-connect.c:3775 msgid "could not get home directory to locate service definition file" -msgstr "impossibile ottenere la home directory per caricare il file del certificato radice" +msgstr "directory home non trovata per la localizzazione del file di definizione di servizio" -#: fe-connect.c:3298 -#, fuzzy, c-format +#: fe-connect.c:3808 +#, c-format msgid "definition of service \"%s\" not found\n" -msgstr "ERRORE: il file di servizio \"%s\" non è stato trovato\n" +msgstr "il file di definizione di servizio \"%s\" non è stato trovato\n" -#: fe-connect.c:3321 -#, fuzzy, c-format +#: fe-connect.c:3831 +#, c-format msgid "service file \"%s\" not found\n" -msgstr "ERRORE: il file di servizio \"%s\" non è stato trovato\n" +msgstr "il file di servizio \"%s\" non è stato trovato\n" -#: fe-connect.c:3334 -#, fuzzy, c-format +#: fe-connect.c:3844 +#, c-format msgid "line %d too long in service file \"%s\"\n" -msgstr "ERRORE: la linea %d nel file di servizio \"%s\" è troppo lunga\n" +msgstr "la riga %d nel file di servizio \"%s\" è troppo lunga\n" -#: fe-connect.c:3405 -#: fe-connect.c:3432 -#, fuzzy, c-format +#: fe-connect.c:3915 fe-connect.c:3942 +#, c-format msgid "syntax error in service file \"%s\", line %d\n" -msgstr "ERRORE: errore di sintassi del file di servizio \"%s\", alla linea %d\n" +msgstr "errore di sintassi del file di servizio \"%s\", alla riga %d\n" -#: fe-connect.c:4099 +#: fe-connect.c:4609 msgid "connection pointer is NULL\n" -msgstr "il pointer della connessione è NULL\n" +msgstr "il puntatore della connessione è NULL\n" -#: fe-connect.c:4372 +#: fe-connect.c:4886 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" -msgstr "ATTENZIONE: il password file \"%s\" non è un file regolare\n" +msgstr "ATTENZIONE: il file delle password \"%s\" non è un file regolare\n" -#: fe-connect.c:4381 +#: fe-connect.c:4895 #, c-format msgid "WARNING: password file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" -msgstr "ATTENZIONE: Il file delle password %s ha privilegi di accesso in lettura e scrittura per tutti; i permessi dovrebbero essere u=rw (0600)o inferiori\n" +msgstr "" +"ATTENZIONE: Il file delle password %s ha privilegi di accesso in lettura e scrittura per tutti;\n" +"i permessi dovrebbero essere u=rw (0600) o inferiori\n" -#: fe-connect.c:4467 -#, fuzzy, c-format +#: fe-connect.c:4983 +#, c-format msgid "password retrieved from file \"%s\"\n" -msgstr "non riesco a leggere il file \"%s\": %s\n" +msgstr "password ottenuta dal file \"%s\"\n" -#: fe-exec.c:827 +#: fe-exec.c:810 msgid "NOTICE" msgstr "NOTIFICA" -#: fe-exec.c:1014 -#: fe-exec.c:1071 -#: fe-exec.c:1111 +#: fe-exec.c:997 fe-exec.c:1054 fe-exec.c:1094 msgid "command string is a null pointer\n" msgstr "il testo del comando è un puntatore nullo\n" -#: fe-exec.c:1104 -#: fe-exec.c:1199 +#: fe-exec.c:1087 fe-exec.c:1182 msgid "statement name is a null pointer\n" -msgstr "il nome dello statement è un puntatore nullo\n" +msgstr "il nome dell'istruzione è un puntatore nullo\n" -#: fe-exec.c:1119 -#: fe-exec.c:1273 -#: fe-exec.c:1928 -#: fe-exec.c:2125 +#: fe-exec.c:1102 fe-exec.c:1256 fe-exec.c:1925 fe-exec.c:2123 msgid "function requires at least protocol version 3.0\n" msgstr "la funzione richiede almeno il protocollo versione 3.0\n" -#: fe-exec.c:1230 +#: fe-exec.c:1213 msgid "no connection to the server\n" msgstr "nessuna connessione al server\n" -#: fe-exec.c:1237 +#: fe-exec.c:1220 msgid "another command is already in progress\n" -msgstr "un'altro comando è in esecuzione\n" +msgstr "un altro comando è in esecuzione\n" -# per un parametro o attraverso un parametro? -#: fe-exec.c:1349 +#: fe-exec.c:1332 msgid "length must be given for binary parameter\n" -msgstr "la lunghezza deve essere fornita per un paramentro binario\n" +msgstr "la lunghezza deve essere fornita per i parametri binari\n" -#: fe-exec.c:1596 +#: fe-exec.c:1585 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "asyncStatus imprevisto: %d\n" -#: fe-exec.c:1616 +#: fe-exec.c:1605 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" -msgstr "PGEventProc \"%s\" ha fallito durante l'evento PGEVT_RESULTCREATE\n" +msgstr "PGEventProc \"%s\" fallito durante l'evento PGEVT_RESULTCREATE\n" -#: fe-exec.c:1746 +#: fe-exec.c:1735 msgid "COPY terminated by new PQexec" msgstr "COPY terminato da una nuova PQexec" -#: fe-exec.c:1754 +#: fe-exec.c:1743 msgid "COPY IN state must be terminated first\n" msgstr "lo stato COPY IN deve prima essere terminato\n" -#: fe-exec.c:1774 +#: fe-exec.c:1763 msgid "COPY OUT state must be terminated first\n" msgstr "lo stato COPY OUT deve prima essere terminato\n" -#: fe-exec.c:2016 -#: fe-exec.c:2082 -#: fe-exec.c:2167 -#: fe-protocol2.c:1172 -#: fe-protocol3.c:1557 +# NON SONO ASSOLUTAMENTE CONVINTO! +#: fe-exec.c:1771 +msgid "PQexec not allowed during COPY BOTH\n" +msgstr "PQexec not consentito durante COPY BOTH\n" + +#: fe-exec.c:2014 fe-exec.c:2080 fe-exec.c:2167 fe-protocol2.c:1237 +#: fe-protocol3.c:1569 msgid "no COPY in progress\n" msgstr "nessun comando COPY in corso\n" #: fe-exec.c:2359 msgid "connection in wrong state\n" -msgstr "connessione in uno stato errato\n" +msgstr "la connessione è in uno stato errato\n" #: fe-exec.c:2390 msgid "invalid ExecStatusType code" msgstr "codice ExecStatusType errato" -#: fe-exec.c:2454 -#: fe-exec.c:2477 +#: fe-exec.c:2454 fe-exec.c:2477 #, c-format msgid "column number %d is out of range 0..%d" -msgstr "colonna numero %d non è tra 0..%d" +msgstr "la colonna numero %d non è compreso tra 0 e %d" #: fe-exec.c:2470 #, c-format msgid "row number %d is out of range 0..%d" -msgstr "riga numero %d non è tra 0..%d" +msgstr "la riga numero %d non è compreso tra 0 e %d" #: fe-exec.c:2492 #, c-format msgid "parameter number %d is out of range 0..%d" -msgstr "il parametro numero %d non è tra 0..%d" +msgstr "il parametro numero %d non è compreso tra 0 e %d" #: fe-exec.c:2780 #, c-format msgid "could not interpret result from server: %s" -msgstr "impossibile interpretare il risultato dal server: %s" +msgstr "errore nell'interpretazione del risultato dal server: %s" -#: fe-exec.c:3019 -#: fe-exec.c:3103 +#: fe-exec.c:3019 fe-exec.c:3103 msgid "incomplete multibyte character\n" msgstr "carattere multibyte incompleto\n" #: fe-lobj.c:152 msgid "cannot determine OID of function lo_truncate\n" -msgstr "impossibile determinare l'OID della funzione lo_truncate\n" +msgstr "non è possibile determinare l'OID della funzione lo_truncate\n" #: fe-lobj.c:380 msgid "cannot determine OID of function lo_create\n" -msgstr "impossibile determinare l'OID della funzione lo_create\n" +msgstr "non è possibile determinare l'OID della funzione lo_create\n" -#: fe-lobj.c:525 -#: fe-lobj.c:624 +#: fe-lobj.c:525 fe-lobj.c:634 #, c-format msgid "could not open file \"%s\": %s\n" -msgstr "impossibile apririe il file \"%s\": %s\n" +msgstr "apertura del file \"%s\" fallita: %s\n" -#: fe-lobj.c:575 +#: fe-lobj.c:580 #, c-format msgid "could not read from file \"%s\": %s\n" -msgstr "non riesco a leggere il file \"%s\": %s\n" +msgstr "lettura dal file \"%s\" fallita: %s\n" -#: fe-lobj.c:639 -#: fe-lobj.c:663 +#: fe-lobj.c:654 fe-lobj.c:678 #, c-format msgid "could not write to file \"%s\": %s\n" -msgstr "impossibile scrivere sul file \"%s\": %s\n" +msgstr "scrittura nel file \"%s\" fallita: %s\n" -#: fe-lobj.c:744 +#: fe-lobj.c:759 msgid "query to initialize large object functions did not return data\n" -msgstr "la query per inizializzare le funzioni large object non hanno retituito dati\n" +msgstr "la query per inizializzare le funzioni large object non hanno restituito dati\n" -#: fe-lobj.c:785 +#: fe-lobj.c:800 msgid "cannot determine OID of function lo_open\n" -msgstr "impossibile determinare l'OID della funzione lo_open\n" +msgstr "non è possibile determinare l'OID della funzione lo_open\n" -#: fe-lobj.c:792 +#: fe-lobj.c:807 msgid "cannot determine OID of function lo_close\n" -msgstr "impossibile determinare l'OID della funzione lo_close\n" +msgstr "non è possibile determinare l'OID della funzione lo_close\n" -#: fe-lobj.c:799 +#: fe-lobj.c:814 msgid "cannot determine OID of function lo_creat\n" -msgstr "impossibile determinare l'OID della funzione lo_create\n" +msgstr "non è possibile determinare l'OID della funzione lo_create\n" -#: fe-lobj.c:806 +#: fe-lobj.c:821 msgid "cannot determine OID of function lo_unlink\n" -msgstr "impossibile determinare l'OID della funzione lo_unlink\n" +msgstr "non è possibile determinare l'OID della funzione lo_unlink\n" -#: fe-lobj.c:813 +#: fe-lobj.c:828 msgid "cannot determine OID of function lo_lseek\n" -msgstr "impossibile determinare l'OID della funzione lo_seek\n" +msgstr "non è possibile determinare l'OID della funzione lo_seek\n" -#: fe-lobj.c:820 +#: fe-lobj.c:835 msgid "cannot determine OID of function lo_tell\n" -msgstr "impossibile determinare l'OID della funzione lo_tell\n" +msgstr "non è possibile determinare l'OID della funzione lo_tell\n" -#: fe-lobj.c:827 +#: fe-lobj.c:842 msgid "cannot determine OID of function loread\n" -msgstr "impossibile determinare l'OID della funzione loread\n" +msgstr "non è possibile determinare l'OID della funzione loread\n" -#: fe-lobj.c:834 +#: fe-lobj.c:849 msgid "cannot determine OID of function lowrite\n" -msgstr "impossibile determinare l'OID della funzione lowrite\n" +msgstr "non è possibile determinare l'OID della funzione lowrite\n" -#: fe-misc.c:241 +#: fe-misc.c:270 #, c-format msgid "integer of size %lu not supported by pqGetInt" msgstr "intero di dimensione %lu non supportato da pqGetInt" -#: fe-misc.c:277 +#: fe-misc.c:306 #, c-format msgid "integer of size %lu not supported by pqPutInt" msgstr "intero di dimensione %lu non supportato da pqPutInt" -#: fe-misc.c:557 -#: fe-misc.c:759 +#: fe-misc.c:585 fe-misc.c:784 msgid "connection not open\n" -msgstr "connessione chiusa\n" +msgstr "connessione non aperta\n" -#: fe-misc.c:622 -#: fe-misc.c:712 -#, c-format -msgid "could not receive data from server: %s\n" -msgstr "impossibile ricevere dati dal server: %s\n" - -#: fe-misc.c:729 -#: fe-misc.c:807 +#: fe-misc.c:711 fe-secure.c:388 fe-secure.c:467 fe-secure.c:548 +#: fe-secure.c:656 msgid "" "server closed the connection unexpectedly\n" "\tThis probably means the server terminated abnormally\n" @@ -585,77 +610,66 @@ msgstr "" "\tQuesto probabilmente indica che il server ha terminato in modo anormale\n" "\tprima o durante l'elaborazione della richiesta.\n" -#: fe-misc.c:824 -#, c-format -msgid "could not send data to server: %s\n" -msgstr "impossibile inviare dati al server: %s\n" - -#: fe-misc.c:943 +#: fe-misc.c:948 msgid "timeout expired\n" msgstr "timeout scaduto\n" -#: fe-misc.c:988 +#: fe-misc.c:993 msgid "socket not open\n" msgstr "socket non aperto\n" -#: fe-misc.c:1011 +#: fe-misc.c:1016 #, c-format msgid "select() failed: %s\n" msgstr "select() fallita: %s\n" -#: fe-protocol2.c:89 +#: fe-protocol2.c:91 #, c-format msgid "invalid setenv state %c, probably indicative of memory corruption\n" msgstr "stato %c di setenv non valido, probabilmente indica una corruzione di memoria\n" -#: fe-protocol2.c:330 +#: fe-protocol2.c:390 #, c-format msgid "invalid state %c, probably indicative of memory corruption\n" msgstr "stato %c non valido, probabilmente indica una corruzione di memoria\n" -#: fe-protocol2.c:419 -#: fe-protocol3.c:186 +#: fe-protocol2.c:479 fe-protocol3.c:186 #, c-format msgid "message type 0x%02x arrived from server while idle" -msgstr "il messaggio tipo 0x%02x è arrivato al server mentre era in attesa" +msgstr "messaggio tipo 0x%02x arrivato dal server mentre era inattivo" -#: fe-protocol2.c:462 +#: fe-protocol2.c:522 #, c-format msgid "unexpected character %c following empty query response (\"I\" message)" -msgstr "carattere %c non previsto a seguito di una risposta vuota ad una query (messaggio \"|\")" +msgstr "carattere %c non previsto a seguito di una risposta vuota ad una query (messaggio \"I\")" -#: fe-protocol2.c:516 +#: fe-protocol2.c:576 msgid "server sent data (\"D\" message) without prior row description (\"T\" message)" msgstr "il server ha spedito dati (messaggio di tipo \"D\") senza prima il descrittore di riga (messaggio di tipo \"T\")" -#: fe-protocol2.c:532 +#: fe-protocol2.c:592 msgid "server sent binary data (\"B\" message) without prior row description (\"T\" message)" msgstr "il server ha spedito dati binari (messaggio di tipo \"B\") senza prima il descrittore di riga (messaggio di tipo \"T\")" -#: fe-protocol2.c:547 -#: fe-protocol3.c:382 +#: fe-protocol2.c:612 fe-protocol3.c:388 #, c-format msgid "unexpected response from server; first received character was \"%c\"\n" msgstr "risposta inattesa dal server; il primo carattere ricevuto era \"%c\"\n" -#: fe-protocol2.c:768 -#: fe-protocol3.c:701 +#: fe-protocol2.c:833 fe-protocol3.c:707 msgid "out of memory for query result\n" msgstr "memoria esaurita per il risultato della query\n" -#: fe-protocol2.c:1215 -#: fe-protocol3.c:1625 +#: fe-protocol2.c:1280 fe-protocol3.c:1637 #, c-format msgid "%s" msgstr "%s" -#: fe-protocol2.c:1227 +#: fe-protocol2.c:1292 msgid "lost synchronization with server, resetting connection" msgstr "persa la sincronizzazione con il server, sto resettando la connessione" -#: fe-protocol2.c:1361 -#: fe-protocol2.c:1393 -#: fe-protocol3.c:1828 +#: fe-protocol2.c:1426 fe-protocol2.c:1458 fe-protocol3.c:1840 #, c-format msgid "protocol error: id=0x%x\n" msgstr "errore di protocollo: id=0x%x\n" @@ -664,282 +678,221 @@ msgstr "errore di protocollo: id=0x%x\n" msgid "server sent data (\"D\" message) without prior row description (\"T\" message)\n" msgstr "il server ha spedito dati (messaggio di tipo \"D\") senza prima il descrittore di riga (messaggio di tipo \"T\")\n" -#: fe-protocol3.c:403 +#: fe-protocol3.c:409 #, c-format msgid "message contents do not agree with length in message type \"%c\"\n" msgstr "i contenuti del messaggio non sono in accordo con la lunghezza del tipo di messaggio \"%c\"\n" -#: fe-protocol3.c:424 +#: fe-protocol3.c:430 #, c-format msgid "lost synchronization with server: got message type \"%c\", length %d\n" msgstr "persa la sincronizzazione con il server: ricevuto il tipo di messaggio \"%c\" di lunghezza %d\n" -#: fe-protocol3.c:646 +#: fe-protocol3.c:652 msgid "unexpected field count in \"D\" message\n" msgstr "numero dei campi non previsto nel messaggio di tipo \"D\"\n" #. translator: %s represents a digit string -#: fe-protocol3.c:788 -#: fe-protocol3.c:807 +#: fe-protocol3.c:798 fe-protocol3.c:817 #, c-format msgid " at character %s" msgstr " al carattere %s" -#: fe-protocol3.c:820 +#: fe-protocol3.c:830 #, c-format msgid "DETAIL: %s\n" msgstr "DETTAGLI: %s\n" -#: fe-protocol3.c:823 +#: fe-protocol3.c:833 #, c-format msgid "HINT: %s\n" -msgstr "HINT: %s\n" +msgstr "NOTA: %s\n" -#: fe-protocol3.c:826 +#: fe-protocol3.c:836 #, c-format msgid "QUERY: %s\n" msgstr "QUERY: %s\n" -#: fe-protocol3.c:829 +#: fe-protocol3.c:839 #, c-format msgid "CONTEXT: %s\n" -msgstr "CONTEXT: %s\n" +msgstr "CONTESTO: %s\n" -#: fe-protocol3.c:841 +#: fe-protocol3.c:851 msgid "LOCATION: " -msgstr "LOCATION:" +msgstr "POSIZIONE: " -#: fe-protocol3.c:843 +#: fe-protocol3.c:853 #, c-format msgid "%s, " -msgstr "%s," +msgstr "%s, " -#: fe-protocol3.c:845 +#: fe-protocol3.c:855 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: fe-protocol3.c:1069 +#: fe-protocol3.c:1079 #, c-format msgid "LINE %d: " msgstr "RIGA %d: " -# NON SONO ASSOLUTAMENTE CONVINTO! -#: fe-protocol3.c:1453 +#: fe-protocol3.c:1465 msgid "PQgetline: not doing text COPY OUT\n" -msgstr "PQgetline: non riesce a fare il testo di COPY OUT \n" +msgstr "PQgetline: COPY OUT testuale ignorato\n" -#: fe-secure.c:272 +#: fe-secure.c:271 fe-secure.c:1127 fe-secure.c:1347 +#, c-format +msgid "could not acquire mutex: %s\n" +msgstr "acquisizione del mutex fallita: %s\n" + +#: fe-secure.c:283 #, c-format msgid "could not establish SSL connection: %s\n" -msgstr "impossibile stabilire una connessione SSL: %s\n" +msgstr "non è stato possibile stabilire una connessione SSL: %s\n" -#: fe-secure.c:351 -#: fe-secure.c:438 -#: fe-secure.c:1204 +#: fe-secure.c:393 fe-secure.c:553 fe-secure.c:1465 #, c-format msgid "SSL SYSCALL error: %s\n" msgstr "errore SSL SYSCALL: %s\n" -#: fe-secure.c:357 -#: fe-secure.c:444 -#: fe-secure.c:1208 +#: fe-secure.c:400 fe-secure.c:560 fe-secure.c:1469 msgid "SSL SYSCALL error: EOF detected\n" msgstr "errore SSL SYSCALL: rilevato EOF\n" -#: fe-secure.c:369 -#: fe-secure.c:455 -#: fe-secure.c:1227 +#: fe-secure.c:411 fe-secure.c:571 fe-secure.c:1478 #, c-format msgid "SSL error: %s\n" msgstr "errore SSL: %s\n" -#: fe-secure.c:379 -#: fe-secure.c:465 -#: fe-secure.c:1237 +#: fe-secure.c:425 fe-secure.c:585 +msgid "SSL connection has been closed unexpectedly\n" +msgstr "la connessione SSL è stata chiusa inaspettatamente\n" + +#: fe-secure.c:431 fe-secure.c:591 fe-secure.c:1487 #, c-format msgid "unrecognized SSL error code: %d\n" -msgstr "codice di errore SSL %d non riconosciuto\n" +msgstr "codice di errore SSL sconosciuto: %d\n" -#: fe-secure.c:603 -msgid "verified SSL connections are only supported when connecting to a host name" -msgstr "le connessioni con verifica SSL sono supportate soltanto quando ci si connette ad un hostname" +#: fe-secure.c:475 +#, c-format +msgid "could not receive data from server: %s\n" +msgstr "ricezione dati dal server fallita: %s\n" -#: fe-secure.c:622 +#: fe-secure.c:663 #, c-format -msgid "server common name \"%s\" does not match host name \"%s\"" -msgstr "nome comune del server \"%s\" non corrisponde al nome dell'host \"%s\"" +msgid "could not send data to server: %s\n" +msgstr "invio dati al server fallito: %s\n" + +#: fe-secure.c:783 fe-secure.c:800 +msgid "could not get server common name from server certificate\n" +msgstr "non è stato possibile ottenere in nome comune del server per il certificato del server\n" -#: fe-secure.c:664 -msgid "could not get home directory to locate client certificate files" -msgstr "impossibile ottenere la home directory per trovare i file dei certificati dei client" +#: fe-secure.c:813 +msgid "SSL certificate's common name contains embedded null\n" +msgstr "Il nome comune del certificato SSL contiene un null\n" + +#: fe-secure.c:825 +msgid "host name must be specified for a verified SSL connection\n" +msgstr "il nome dell'host dev'essere specificato per una connessione SSL verificata\n" -#: fe-secure.c:688 -#: fe-secure.c:702 +#: fe-secure.c:839 +#, c-format +msgid "server common name \"%s\" does not match host name \"%s\"\n" +msgstr "il nome comune del server \"%s\" non corrisponde al nome dell'host \"%s\"\n" + +#: fe-secure.c:974 +#, c-format +msgid "could not create SSL context: %s\n" +msgstr "creazione del contesto SSL fallita: %s\n" + +#: fe-secure.c:1097 #, c-format msgid "could not open certificate file \"%s\": %s\n" -msgstr "impossibile aprire il file di certificato \"%s\": %s\n" +msgstr "apertura del file di certificato \"%s\" fallita: %s\n" -#: fe-secure.c:713 +#: fe-secure.c:1136 fe-secure.c:1151 #, c-format msgid "could not read certificate file \"%s\": %s\n" -msgstr "impossibile leggere il file di certificato \"%s\": %s\n" +msgstr "lettura del file di certificato \"%s\" fallita: %s\n" -#: fe-secure.c:751 +#: fe-secure.c:1206 #, c-format msgid "could not load SSL engine \"%s\": %s\n" -msgstr "impossibile caricare il motore/funzionalità SSL \"%s\": %s\n" +msgstr "caricamento del motore SSL \"%s\" fallito: %s\n" -#: fe-secure.c:764 +#: fe-secure.c:1218 #, c-format msgid "could not initialize SSL engine \"%s\": %s\n" -msgstr "impossibile inizializzare il motore/funzionalità SSL \"%s\": %s\n" +msgstr "inizializzazione del motore SSL \"%s\" fallita: %s\n" -#: fe-secure.c:781 +#: fe-secure.c:1234 #, c-format msgid "could not read private SSL key \"%s\" from engine \"%s\": %s\n" -msgstr "impossibile leggere il file della chiave privata SSL \"%s\" dal motore/funzionalità \"%s\": %s\n" +msgstr "lettura del file della chiave privata SSL \"%s\" dal motore \"%s\" fallita: %s\n" + +#: fe-secure.c:1248 +#, c-format +msgid "could not load private SSL key \"%s\" from engine \"%s\": %s\n" +msgstr "caricamento della chiave privata SSL \"%s\" dal motore \"%s\" fallito: %s\n" -#: fe-secure.c:816 +#: fe-secure.c:1285 #, c-format msgid "certificate present, but not private key file \"%s\"\n" msgstr "certificato trovato, ma non la chiave privata \"%s\"\n" -#: fe-secure.c:825 +#: fe-secure.c:1293 #, c-format msgid "private key file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" msgstr "Il file della chiave privata \"%s\" ha privilegi di accesso in lettura e scrittura per tutti; i permessi dovrebbero essere u=rw (0600) o inferiori\n" -#: fe-secure.c:835 +#: fe-secure.c:1304 #, c-format -msgid "could not open private key file \"%s\": %s\n" -msgstr "impossibile aprire il file della chiave privata \"%s\": %s\n" +msgid "could not load private key file \"%s\": %s\n" +msgstr "caricamento del file della chiave privata \"%s\" fallito: %s\n" -#: fe-secure.c:846 -#, c-format -msgid "private key file \"%s\" changed during execution\n" -msgstr "la chiave privata \"%s\" è cambiata durante l'esecuzione\n" - -#: fe-secure.c:857 -#, c-format -msgid "could not read private key file \"%s\": %s\n" -msgstr "impossibile leggere il fle della chiave privata \"%s\": %s\n" - -#: fe-secure.c:875 +#: fe-secure.c:1318 #, c-format msgid "certificate does not match private key file \"%s\": %s\n" msgstr "il certificato non corrisponde con il file della chiave privata \"%s\": %s\n" -#: fe-secure.c:1006 -#, c-format -msgid "could not create SSL context: %s\n" -msgstr "impossibile creare il contesto SSL: %s\n" - -#: fe-secure.c:1094 -msgid "could not get home directory to locate root certificate file" -msgstr "impossibile ottenere la home directory per caricare il file del certificato radice" - -#: fe-secure.c:1118 +#: fe-secure.c:1356 #, c-format msgid "could not read root certificate file \"%s\": %s\n" -msgstr "impossibile leggere il file del certificato radice \"%s\": %s\n" +msgstr "lettura del file di certificato radice \"%s\" fallita: %s\n" -#: fe-secure.c:1143 +#: fe-secure.c:1386 #, c-format msgid "SSL library does not support CRL certificates (file \"%s\")\n" msgstr "la libreria SSL non supporta i certificati di tipo CRL (file \"%s\")\n" -#: fe-secure.c:1159 +#: fe-secure.c:1419 +msgid "" +"could not get home directory to locate root certificate file\n" +"Either provide the file or change sslmode to disable server certificate verification.\n" +msgstr "" +"directory utente non trovata per la locazione del file di certificato radice\n" +"Per favore fornisci il file oppure cambia sslmode per disabilitare la verifica del certificato del server.\n" + +#: fe-secure.c:1423 #, c-format msgid "" "root certificate file \"%s\" does not exist\n" "Either provide the file or change sslmode to disable server certificate verification.\n" msgstr "" "il file \"%s\" del certificato radice non esiste\n" -"O procuri il file o cambi lo sslmode per disabilitare la verifica del certificato del server.\n" +"Per favore fornisci il file oppure cambia sslmode per disabilitare la verifica del certificato del server.\n" -#: fe-secure.c:1256 +#: fe-secure.c:1506 #, c-format msgid "certificate could not be obtained: %s\n" -msgstr "non è stato possibile otenere il certificato: %s\n" +msgstr "non è stato possibile possibile ottenere il certificato: %s\n" -#: fe-secure.c:1284 -msgid "SSL certificate's common name contains embedded null\n" -msgstr "Il common name del certificato SSL contiene un embedded null\n" - -#: fe-secure.c:1360 +#: fe-secure.c:1602 msgid "no SSL error reported" msgstr "nessun errore SSL riportato" -#: fe-secure.c:1369 +#: fe-secure.c:1611 #, c-format msgid "SSL error code %lu" msgstr "codice di errore SSL: %lu" - -#~ msgid "Kerberos 4 error: %s\n" -#~ msgstr "Errore Kerberos 4: %s\n" - -#~ msgid "Kerberos 4 authentication failed\n" -#~ msgstr "Autenticazione Kerberos 4 fallita\n" - -#~ msgid "Kerberos 5 authentication failed\n" -#~ msgstr "Autenticazione Kerberos 5 fallita\n" - -#~ msgid "invalid authentication service name \"%s\", ignored\n" -#~ msgstr "nome servizio autenticazione errato \"%s\", ignorato\n" - -#~ msgid "fe_getauthname: invalid authentication system: %d\n" -#~ msgstr "fe_getauthname: sistema di autenticazione errato: %d\n" - -#~ msgid "could not receive server response to SSL negotiation packet: %s\n" -#~ msgstr "" -#~ "impossibile ricevere una risposta dal server per i pacchetti di " -#~ "negoziazione SSL: %s\n" - -#~ msgid "could not create large object for file \"%s\"\n" -#~ msgstr "impossibile creare un large object per il file \"%s\"\n" - -#~ msgid "could not open large object %u\n" -#~ msgstr "impossibile aprire il large object %u\n" - -#~ msgid "error while reading file \"%s\"\n" -#~ msgstr "errore durante la lettura del file \"%s\"\n" - -#~ msgid "error while writing to file \"%s\"\n" -#~ msgstr "errore durante la scrittura nel file \"%s\"\n" - -#~ msgid "unrecognized SSL error code\n" -#~ msgstr "codice errore SSL sconosciuto\n" - -#~ msgid "error querying socket: %s\n" -#~ msgstr "errore di query sul socket: %s\n" - -#~ msgid "could not get information about host (%s): %s\n" -#~ msgstr "impossibile acquisire informazioni sull'host (%s): %s\n" - -#~ msgid "unsupported protocol\n" -#~ msgstr "protocollo non supportato\n" - -#~ msgid "server common name \"%s\" does not resolve to %ld.%ld.%ld.%ld\n" -#~ msgstr "nome del server \"%s\" non indirizza a %ld.%ld.%ld.%ld\n" - -#~ msgid "could not get user information\n" -#~ msgstr "impossibile acquisire informazioni sull'utente\n" - -#~ msgid "could not read certificate (%s): %s\n" -#~ msgstr "impossibile leggere il certificato (%s): %s\n" - -#~ msgid "private key (%s) has wrong permissions\n" -#~ msgstr "la chiave privata (%s) ha i permessi errati\n" - -#~ msgid "could not read private key (%s): %s\n" -#~ msgstr "impossibile leggere la chiave privata (%s): %s\n" - -#~ msgid "certificate/private key mismatch (%s): %s\n" -#~ msgstr "incongruenza tra certificato/chiave privata (%s): %s\n" - -#~ msgid "could not read root certificate list (%s): %s\n" -#~ msgstr "impossibile leggere la lista dei certificati root (%s): %s\n" - -#~ msgid "certificate could not be validated: %s\n" -#~ msgstr "il certificato non è stato convalidato: %s\n" diff --git a/src/interfaces/libpq/po/ja.po b/src/interfaces/libpq/po/ja.po index d4e9a6bb36..0986b0e072 100644 --- a/src/interfaces/libpq/po/ja.po +++ b/src/interfaces/libpq/po/ja.po @@ -3,109 +3,110 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0 beta 3\n" +"Project-Id-Version: PostgreSQL 9.1 beta 2\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-07-20 12:54+0900\n" -"PO-Revision-Date: 2010-07-15 19:00+0900\n" +"POT-Creation-Date: 2011-06-30 23:03+0900\n" +"PO-Revision-Date: 2011-06-30 23:15+0900\n" "Last-Translator: HOTTA Michihide \n" "Language-Team: jpug-doc \n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: fe-auth.c:242 +#: fe-auth.c:210 fe-auth.c:429 fe-auth.c:656 +msgid "host name must be specified\n" +msgstr "ホスト名を指定しなければなりません\n" + +#: fe-auth.c:240 #, c-format msgid "could not set socket to blocking mode: %s\n" msgstr "ソケットをブロッキングモードに設定できませんでした: %s\n" -#: fe-auth.c:260 fe-auth.c:264 +#: fe-auth.c:258 fe-auth.c:262 #, c-format msgid "Kerberos 5 authentication rejected: %*s\n" msgstr "Kerberos 5認証が拒絶されました: %*s\n" -#: fe-auth.c:290 +#: fe-auth.c:288 #, c-format msgid "could not restore non-blocking mode on socket: %s\n" msgstr "ソケットを非ブロッキングモードに戻すことができませんでした: %s\n" -#: fe-auth.c:403 +#: fe-auth.c:400 msgid "GSSAPI continuation error" msgstr "GSSAI続行エラー" -#: fe-auth.c:431 fe-auth.c:657 -msgid "host name must be specified\n" -msgstr "ホスト名を指定しなければなりません\n" - -#: fe-auth.c:438 +#: fe-auth.c:436 msgid "duplicate GSS authentication request\n" msgstr "重複するGSS認証要求\n" -#: fe-auth.c:458 +#: fe-auth.c:456 msgid "GSSAPI name import error" msgstr "GSSAPI名のインポートエラー" -#: fe-auth.c:544 +#: fe-auth.c:542 msgid "SSPI continuation error" msgstr "SSPI続行エラー" -#: fe-auth.c:555 fe-auth.c:629 fe-auth.c:663 fe-auth.c:760 fe-connect.c:1802 -#: fe-connect.c:3129 fe-connect.c:3346 fe-connect.c:3762 fe-connect.c:3771 -#: fe-connect.c:3908 fe-connect.c:3954 fe-connect.c:3972 fe-connect.c:4051 -#: fe-connect.c:4121 fe-connect.c:4167 fe-connect.c:4185 fe-exec.c:3121 -#: fe-exec.c:3286 fe-lobj.c:696 fe-protocol2.c:1027 fe-protocol3.c:1421 +#: fe-auth.c:553 fe-auth.c:627 fe-auth.c:662 fe-auth.c:757 fe-connect.c:1961 +#: fe-connect.c:3360 fe-connect.c:3578 fe-connect.c:3999 fe-connect.c:4008 +#: fe-connect.c:4145 fe-connect.c:4191 fe-connect.c:4209 fe-connect.c:4288 +#: fe-connect.c:4358 fe-connect.c:4404 fe-connect.c:4422 fe-exec.c:3140 +#: fe-exec.c:3305 fe-lobj.c:696 fe-protocol2.c:1092 fe-protocol3.c:1433 msgid "out of memory\n" msgstr "メモリ不足です\n" -#: fe-auth.c:644 +#: fe-auth.c:642 msgid "could not acquire SSPI credentials" msgstr "SSPI資格を入手できませんでした" -#: fe-auth.c:736 +#: fe-auth.c:733 msgid "SCM_CRED authentication method not supported\n" msgstr "SCM_CRED認証方式はサポートされていません\n" -#: fe-auth.c:810 +#: fe-auth.c:807 msgid "Kerberos 4 authentication not supported\n" msgstr "Kerberos 4認証はサポートされていません\n" -#: fe-auth.c:826 +#: fe-auth.c:823 msgid "Kerberos 5 authentication not supported\n" msgstr "Kerberos 5認証はサポートされていません\n" -#: fe-auth.c:893 +#: fe-auth.c:895 msgid "GSSAPI authentication not supported\n" msgstr "GSSAPI認証はサポートされていません\n" -#: fe-auth.c:917 +#: fe-auth.c:927 msgid "SSPI authentication not supported\n" msgstr "SSPI認証はサポートされていません\n" -#: fe-auth.c:924 +#: fe-auth.c:935 msgid "Crypt authentication not supported\n" msgstr "Crypt認証はサポートされていません\n" -#: fe-auth.c:951 +#: fe-auth.c:962 #, c-format msgid "authentication method %u not supported\n" msgstr "認証方式%uはサポートされていません\n" -#: fe-connect.c:712 +#: fe-connect.c:758 #, c-format msgid "invalid sslmode value: \"%s\"\n" msgstr "sslmodeの値が無効です: \"%s\"\n" -#: fe-connect.c:733 +#: fe-connect.c:779 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" msgstr "SSLサポートが組み込まれていない場合sslmodeの値\"%s\"は無効です\n" -#: fe-connect.c:916 +#: fe-connect.c:972 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "TCPソケットを非遅延モードに設定できませんでした: %s\n" -#: fe-connect.c:946 +#: fe-connect.c:1002 #, c-format msgid "" "could not connect to server: %s\n" @@ -117,7 +118,18 @@ msgstr "" " Unixドメインソケット\"%s\"で通信を受け付けてい" "ますか?\n" -#: fe-connect.c:956 +#: fe-connect.c:1057 +#, c-format +msgid "" +"could not connect to server: %s\n" +"\tIs the server running on host \"%s\" (%s) and accepting\n" +"\tTCP/IP connections on port %s?\n" +msgstr "" +"サーバに接続できませんでした: %s\n" +"\tサーバはホスト \"%s\" (%s) で稼動しており、\n" +"\tまた、ポート %s で TCP/IP 接続を受け付けていますか?\n" + +#: fe-connect.c:1066 #, c-format msgid "" "could not connect to server: %s\n" @@ -125,233 +137,254 @@ msgid "" "\tTCP/IP connections on port %s?\n" msgstr "" "サーバに接続できませんでした: %s\n" -" サーバはホスト\"%s\"で稼動していますか?\n" -" また、ポート%sでTCP/IP接続を受け付けています" +"\tサーバはホスト\"%s\"で稼動していますか?\n" +"\tまた、ポート%sでTCP/IP接続を受け付けています" "か?\n" -#: fe-connect.c:1011 +#: fe-connect.c:1117 #, c-format msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" msgstr "setsockopt(TCP_KEEPIDLE)が失敗しました: %s\n" -#: fe-connect.c:1024 +#: fe-connect.c:1130 #, c-format msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" msgstr "setsockopt(TCP_KEEPALIVE)が失敗しました: %s\n" -#: fe-connect.c:1056 +#: fe-connect.c:1162 #, c-format msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" msgstr "setsockopt(TCP_KEEPINTVL)が失敗しました: %s\n" -#: fe-connect.c:1088 +#: fe-connect.c:1194 #, c-format msgid "setsockopt(TCP_KEEPCNT) failed: %s\n" msgstr "setsockopt(TCP_KEEPCNT)が失敗しました: %s\n" -#: fe-connect.c:1137 +#: fe-connect.c:1242 #, c-format msgid "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" msgstr "WSAIoctl(SIO_KEEPALIVE_VALS)に失敗しました:%ui\n" -#: fe-connect.c:1189 +#: fe-connect.c:1294 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "無効なポート番号です: \"%s\"\n" -#: fe-connect.c:1231 +#: fe-connect.c:1337 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "ホスト名\"%s\"をアドレスに変換できませんでした: %s\n" -#: fe-connect.c:1235 +#: fe-connect.c:1341 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "Unixドメインソケットのパス\"%s\"をアドレスに変換できませんでした: %s\n" -#: fe-connect.c:1444 +#: fe-connect.c:1551 msgid "invalid connection state, probably indicative of memory corruption\n" msgstr "接続状態が無効です。メモリ障害の可能性があります\n" -#: fe-connect.c:1487 +#: fe-connect.c:1592 #, c-format msgid "could not create socket: %s\n" msgstr "ソケットを作成できませんでした: %s\n" -#: fe-connect.c:1510 +#: fe-connect.c:1615 #, c-format msgid "could not set socket to non-blocking mode: %s\n" msgstr "ソケットを非ブロッキングモードに設定できませんでした: %s\n" -#: fe-connect.c:1522 +#: fe-connect.c:1627 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "ソケットをclose-on-execモードに設定できませんでした: %s\n" -#: fe-connect.c:1540 +#: fe-connect.c:1647 msgid "keepalives parameter must be an integer\n" msgstr "keepaliveのパラメータは整数でなければなりません\n" -#: fe-connect.c:1553 +#: fe-connect.c:1660 #, c-format msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" msgstr "setsockopt(SO_KEEPALIVE)が失敗しました: %s\n" -#: fe-connect.c:1694 +#: fe-connect.c:1801 #, c-format msgid "could not get socket error status: %s\n" msgstr "ソケットのエラー状態を入手できませんでした: %s\n" -#: fe-connect.c:1732 +#: fe-connect.c:1839 #, c-format msgid "could not get client address from socket: %s\n" msgstr "ソケットからクライアントアドレスを入手できませんでした: %s\n" -#: fe-connect.c:1776 +#: fe-connect.c:1880 +#, +msgid "requirepeer parameter is not supported on this platform\n" +msgstr "" +"このプラットフォームでは requirepeer パラメータはサポートされていません\n" + +#: fe-connect.c:1883 +#, c-format +msgid "could not get peer credentials: %s\n" +msgstr "ピアの資格証明を入手できませんでした: %s\n" + +#: fe-connect.c:1893 +#, c-format +msgid "local user with ID %d does not exist\n" +msgstr "ID %d を持つローカルユーザは存在しません\n" + +#: fe-connect.c:1901 +#, c-format +msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" +msgstr "" + +#: fe-connect.c:1935 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "SSL調停パケットを送信できませんでした: %s\n" -#: fe-connect.c:1815 +#: fe-connect.c:1974 #, c-format msgid "could not send startup packet: %s\n" msgstr "開始パケットを送信できませんでした: %s\n" -#: fe-connect.c:1882 fe-connect.c:1901 +#: fe-connect.c:2041 fe-connect.c:2060 msgid "server does not support SSL, but SSL was required\n" msgstr "サーバはSSLをサポートしていませんが、SSLが要求されました\n" -#: fe-connect.c:1917 +#: fe-connect.c:2076 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "SSL調停に対して無効な応答を受信しました: %c\n" -#: fe-connect.c:1993 fe-connect.c:2026 +#: fe-connect.c:2152 fe-connect.c:2185 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "サーバからの認証要求を想定していましたが、%cを受信しました\n" -#: fe-connect.c:2197 +#: fe-connect.c:2358 #, c-format msgid "out of memory allocating GSSAPI buffer (%i)" msgstr "GSSAPIバッファの割り当て時のメモリ不足(%i)" -#: fe-connect.c:2282 +#: fe-connect.c:2443 msgid "unexpected message from server during startup\n" msgstr "起動時にサーバから想定外のメッセージがありました\n" -#: fe-connect.c:2378 +#: fe-connect.c:2539 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" msgstr "接続状態%dが無効です。メモリ障害の可能性があります\n" -#: fe-connect.c:2737 fe-connect.c:2797 +#: fe-connect.c:2968 fe-connect.c:3028 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "PGEVT_CONNRESETイベント中にPGEventProc \"%s\"に失敗しました\n" -#: fe-connect.c:3142 +#: fe-connect.c:3373 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" msgstr "無効なLDAP URL\"%s\":スキーマはldap://でなければなりません\n" -#: fe-connect.c:3157 +#: fe-connect.c:3388 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "無効なLDAP URL \"%s\": 区別名がありません\n" -#: fe-connect.c:3168 fe-connect.c:3221 +#: fe-connect.c:3399 fe-connect.c:3452 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "無効なLDAP URL \"%s\": 正確に1つの属性を持たなければなりません\n" -#: fe-connect.c:3178 fe-connect.c:3235 +#: fe-connect.c:3409 fe-connect.c:3466 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" msgstr "" "無効なLDAP URL \"%s\": 検索スコープ(base/one/sub)を持たなければなりません\n" -#: fe-connect.c:3189 +#: fe-connect.c:3420 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "無効なLDAP URL \"%s\": フィルタがありません\n" -#: fe-connect.c:3210 +#: fe-connect.c:3441 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "無効なLDAP URL \"%s\": ポート番号が無効です\n" -#: fe-connect.c:3244 +#: fe-connect.c:3475 msgid "could not create LDAP structure\n" msgstr "LDAP構造体を作成できませんでした: %s\n" -#: fe-connect.c:3286 +#: fe-connect.c:3517 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "LDAPサーバで検索に失敗しました: %s\n" -#: fe-connect.c:3297 +#: fe-connect.c:3528 msgid "more than one entry found on LDAP lookup\n" msgstr "LDAP検索結果が複数ありました\n" -#: fe-connect.c:3298 fe-connect.c:3310 +#: fe-connect.c:3529 fe-connect.c:3541 msgid "no entry found on LDAP lookup\n" msgstr "LDAP検索結果が空でした\n" -#: fe-connect.c:3321 fe-connect.c:3334 +#: fe-connect.c:3552 fe-connect.c:3565 msgid "attribute has no values on LDAP lookup\n" msgstr "LDAP検索で属性に値がありませんでした\n" -#: fe-connect.c:3385 fe-connect.c:3403 fe-connect.c:3810 +#: fe-connect.c:3617 fe-connect.c:3636 fe-connect.c:4047 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "接続情報文字列において\"%s\"の後に\"=\"がありませんでした\n" -#: fe-connect.c:3466 fe-connect.c:3892 fe-connect.c:4076 +#: fe-connect.c:3700 fe-connect.c:4129 fe-connect.c:4313 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "接続オプション\"%s\"は無効です\n" -#: fe-connect.c:3479 fe-connect.c:3859 +#: fe-connect.c:3716 fe-connect.c:4096 msgid "unterminated quoted string in connection info string\n" msgstr "接続情報文字列において閉じていない引用符がありました\n" -#: fe-connect.c:3518 +#: fe-connect.c:3755 msgid "could not get home directory to locate service definition file" msgstr "" "サーバ設定ファイルの場所を特定しようとしましたが、ホームディレクトリを取得で" "きませんでした。" -#: fe-connect.c:3551 +#: fe-connect.c:3788 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "サービス定義\"%s\"がみつかりません\n" -#: fe-connect.c:3574 +#: fe-connect.c:3811 #, c-format msgid "service file \"%s\" not found\n" msgstr "サービスファイル\"%s\"がみつかりません\n" -#: fe-connect.c:3587 +#: fe-connect.c:3824 #, c-format msgid "line %d too long in service file \"%s\"\n" msgstr "サービスファイル\"%2$s\"の行%1$dが長すぎます。\n" -#: fe-connect.c:3658 fe-connect.c:3685 +#: fe-connect.c:3895 fe-connect.c:3922 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "サービスファイル\"%s\"の行%dに構文エラーがあります\n" -#: fe-connect.c:4352 +#: fe-connect.c:4589 msgid "connection pointer is NULL\n" msgstr "接続ポインタはNULLです\n" -#: fe-connect.c:4625 +#: fe-connect.c:4866 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" msgstr "WARNING: パスワードファイル\"%s\"がテキストファイルではありません\n" -#: fe-connect.c:4634 +#: fe-connect.c:4875 #, c-format msgid "" "WARNING: password file \"%s\" has group or world access; permissions should " @@ -360,95 +393,100 @@ msgstr "" "警告: パスワードファイル \"%s\" がグループメンバもしくは他のユーザから読める" "状態になっています。この権限はu=rw (0600)以下にすべきです\n" -#: fe-connect.c:4722 +#: fe-connect.c:4963 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "ファイル\"%s\"からパスワードを読み込みました\n" -#: fe-exec.c:827 +#: fe-exec.c:829 msgid "NOTICE" msgstr "注意" -#: fe-exec.c:1014 fe-exec.c:1071 fe-exec.c:1111 +#: fe-exec.c:1016 fe-exec.c:1073 fe-exec.c:1113 msgid "command string is a null pointer\n" msgstr "コマンド文字列がヌルポインタです\n" -#: fe-exec.c:1104 fe-exec.c:1199 +#: fe-exec.c:1106 fe-exec.c:1201 msgid "statement name is a null pointer\n" msgstr "文の名前がヌルポインタです\n" -#: fe-exec.c:1119 fe-exec.c:1273 fe-exec.c:1928 fe-exec.c:2125 +#: fe-exec.c:1121 fe-exec.c:1275 fe-exec.c:1944 fe-exec.c:2142 msgid "function requires at least protocol version 3.0\n" msgstr "関数は少なくともプロトコルバージョン3.0が必要です\n" -#: fe-exec.c:1230 +#: fe-exec.c:1232 msgid "no connection to the server\n" msgstr "サーバへの接続がありません\n" -#: fe-exec.c:1237 +#: fe-exec.c:1239 msgid "another command is already in progress\n" msgstr "他のコマンドを処理しています\n" -#: fe-exec.c:1349 +#: fe-exec.c:1351 msgid "length must be given for binary parameter\n" msgstr "バイナリパラメータには長さを指定しなければなりません\n" -#: fe-exec.c:1596 +#: fe-exec.c:1604 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "想定外のasyncStatus: %d\n" -#: fe-exec.c:1616 +#: fe-exec.c:1624 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" msgstr "PGEVT_RESULTCREATEイベント中にPGEventProc \"%s\"に失敗しました\n" -#: fe-exec.c:1746 +#: fe-exec.c:1754 msgid "COPY terminated by new PQexec" msgstr "新たなPQexec\"によりCOPYが終了しました" -#: fe-exec.c:1754 +#: fe-exec.c:1762 msgid "COPY IN state must be terminated first\n" msgstr "まずCOPY IN状態を終了させなければなりません\n" -#: fe-exec.c:1774 +#: fe-exec.c:1782 msgid "COPY OUT state must be terminated first\n" msgstr "まずCOPY OUT状態を終了させなければなりません\n" -#: fe-exec.c:2016 fe-exec.c:2082 fe-exec.c:2167 fe-protocol2.c:1172 -#: fe-protocol3.c:1557 +#: fe-exec.c:1790 +#, +msgid "PQexec not allowed during COPY BOTH\n" +msgstr "COPY BOTH 実行中の PQexec は許可されていません\n" + +#: fe-exec.c:2033 fe-exec.c:2099 fe-exec.c:2186 fe-protocol2.c:1237 +#: fe-protocol3.c:1569 msgid "no COPY in progress\n" msgstr "実行中のCOPYはありません\n" -#: fe-exec.c:2359 +#: fe-exec.c:2378 msgid "connection in wrong state\n" msgstr "接続状態が異常です\n" -#: fe-exec.c:2390 +#: fe-exec.c:2409 msgid "invalid ExecStatusType code" msgstr "ExecStatusTypeコードが無効です" -#: fe-exec.c:2454 fe-exec.c:2477 +#: fe-exec.c:2473 fe-exec.c:2496 #, c-format msgid "column number %d is out of range 0..%d" msgstr "列番号%dは0..%dの範囲を超えています" -#: fe-exec.c:2470 +#: fe-exec.c:2489 #, c-format msgid "row number %d is out of range 0..%d" msgstr "行番号%dは0..%dの範囲を超えています" -#: fe-exec.c:2492 +#: fe-exec.c:2511 #, c-format msgid "parameter number %d is out of range 0..%d" msgstr "パラメータ%dは0..%dの範囲を超えています" -#: fe-exec.c:2780 +#: fe-exec.c:2799 #, c-format msgid "could not interpret result from server: %s" msgstr "サーバからの結果を解釈できませんでした: %s" -#: fe-exec.c:3019 fe-exec.c:3103 +#: fe-exec.c:3038 fe-exec.c:3122 msgid "incomplete multibyte character\n" msgstr "不完全なマルチバイト文字\n" @@ -512,26 +550,26 @@ msgstr "loread関数のOIDを決定できません\n" msgid "cannot determine OID of function lowrite\n" msgstr "lowrite関数のOIDを決定できません\n" -#: fe-misc.c:262 +#: fe-misc.c:270 #, c-format msgid "integer of size %lu not supported by pqGetInt" msgstr "サイズ%luの整数はpqGetIntでサポートされていません" -#: fe-misc.c:298 +#: fe-misc.c:306 #, c-format msgid "integer of size %lu not supported by pqPutInt" msgstr "サイズ%luの整数はpqPutIntでサポートされていません" -#: fe-misc.c:578 fe-misc.c:780 +#: fe-misc.c:586 fe-misc.c:788 msgid "connection not open\n" msgstr "接続はオープンされていません\n" -#: fe-misc.c:643 fe-misc.c:733 +#: fe-misc.c:651 fe-misc.c:741 #, c-format msgid "could not receive data from server: %s\n" msgstr "サーバからデータを受信できませんでした: %s\n" -#: fe-misc.c:750 fe-misc.c:828 +#: fe-misc.c:758 fe-misc.c:836 msgid "" "server closed the connection unexpectedly\n" "\tThis probably means the server terminated abnormally\n" @@ -541,45 +579,45 @@ msgstr "" " おそらく要求の処理前または処理中にサーバが異常終了\n" " したことを意味しています。\n" -#: fe-misc.c:845 +#: fe-misc.c:853 #, c-format msgid "could not send data to server: %s\n" msgstr "サーバにデータを送信できませんでした: %s\n" -#: fe-misc.c:964 +#: fe-misc.c:972 msgid "timeout expired\n" msgstr "タイムアウト期間が過ぎました\n" -#: fe-misc.c:1009 +#: fe-misc.c:1017 msgid "socket not open\n" msgstr "ソケットがオープンされていません\n" -#: fe-misc.c:1032 +#: fe-misc.c:1040 #, c-format msgid "select() failed: %s\n" msgstr "select()が失敗しました: %s\n" -#: fe-protocol2.c:89 +#: fe-protocol2.c:91 #, c-format msgid "invalid setenv state %c, probably indicative of memory corruption\n" msgstr "setenv状態%cは無効です。メモリ障害の可能性があります\n" -#: fe-protocol2.c:330 +#: fe-protocol2.c:390 #, c-format msgid "invalid state %c, probably indicative of memory corruption\n" msgstr "状態%cは無効です。メモリ障害の可能性があります\n" -#: fe-protocol2.c:419 fe-protocol3.c:186 +#: fe-protocol2.c:479 fe-protocol3.c:186 #, c-format msgid "message type 0x%02x arrived from server while idle" msgstr "待機中にサーバからメッセージ種類0x%02xが届きました" -#: fe-protocol2.c:462 +#: fe-protocol2.c:522 #, c-format msgid "unexpected character %c following empty query response (\"I\" message)" msgstr "空の問い合わせ応答(\"I\"メッセージ)の後に想定外の文字%cがありました" -#: fe-protocol2.c:516 +#: fe-protocol2.c:576 msgid "" "server sent data (\"D\" message) without prior row description (\"T\" " "message)" @@ -587,7 +625,7 @@ msgstr "" "サーバが事前の行記述(\"T\"メッセージ)なしにデータ(\"D\"メッセージ)を送信しま" "した" -#: fe-protocol2.c:532 +#: fe-protocol2.c:592 msgid "" "server sent binary data (\"B\" message) without prior row description (\"T\" " "message)" @@ -595,25 +633,25 @@ msgstr "" "サーバが事前の行記述(\"T\"メッセージ)なしにバイナリデータ(\"B\"メッセージ)を" "送信しました" -#: fe-protocol2.c:547 fe-protocol3.c:382 +#: fe-protocol2.c:612 fe-protocol3.c:388 #, c-format msgid "unexpected response from server; first received character was \"%c\"\n" msgstr "サーバから想定外の応答がありました。受け付けた先頭文字は\"%c\"です\n" -#: fe-protocol2.c:768 fe-protocol3.c:701 +#: fe-protocol2.c:833 fe-protocol3.c:707 msgid "out of memory for query result\n" msgstr "問い合わせ結果用のメモリが不足しています\n" -#: fe-protocol2.c:1215 fe-protocol3.c:1625 +#: fe-protocol2.c:1280 fe-protocol3.c:1637 #, c-format msgid "%s" msgstr "%s" -#: fe-protocol2.c:1227 +#: fe-protocol2.c:1292 msgid "lost synchronization with server, resetting connection" msgstr "サーバとの動機が失われました。接続をリセットしています" -#: fe-protocol2.c:1361 fe-protocol2.c:1393 fe-protocol3.c:1828 +#: fe-protocol2.c:1426 fe-protocol2.c:1458 fe-protocol3.c:1840 #, c-format msgid "protocol error: id=0x%x\n" msgstr "プロトコルエラー: id=0x%x\n" @@ -626,67 +664,67 @@ msgstr "" "サーバが事前の行記述(\"T\"メッセージ)なしにデータ(\"D\"メッセージ)を送信しま" "した\"\n" -#: fe-protocol3.c:403 +#: fe-protocol3.c:409 #, c-format msgid "message contents do not agree with length in message type \"%c\"\n" msgstr "メッセージの内容がメッセージ種類\"%c\"の長さに合いません\n" -#: fe-protocol3.c:424 +#: fe-protocol3.c:430 #, c-format msgid "lost synchronization with server: got message type \"%c\", length %d\n" msgstr "" "サーバとの同期が失われました。受信したメッセージ種類は\"%c\"、長さは%d\n" -#: fe-protocol3.c:646 +#: fe-protocol3.c:652 msgid "unexpected field count in \"D\" message\n" msgstr "\"D\"メッセージ内のフィールド数が想定外でした\n" #. translator: %s represents a digit string -#: fe-protocol3.c:788 fe-protocol3.c:807 +#: fe-protocol3.c:798 fe-protocol3.c:817 #, c-format msgid " at character %s" msgstr "(文字位置: %s)" -#: fe-protocol3.c:820 +#: fe-protocol3.c:830 #, c-format msgid "DETAIL: %s\n" msgstr "DETAIL: %s\n" -#: fe-protocol3.c:823 +#: fe-protocol3.c:833 #, c-format msgid "HINT: %s\n" msgstr "HINT: %s\n" -#: fe-protocol3.c:826 +#: fe-protocol3.c:836 #, c-format msgid "QUERY: %s\n" msgstr "QUERY: %s\n" -#: fe-protocol3.c:829 +#: fe-protocol3.c:839 #, c-format msgid "CONTEXT: %s\n" msgstr "CONTEXT: %s\n" -#: fe-protocol3.c:841 +#: fe-protocol3.c:851 msgid "LOCATION: " msgstr "LOCATION: " -#: fe-protocol3.c:843 +#: fe-protocol3.c:853 #, c-format msgid "%s, " msgstr "%s, " -#: fe-protocol3.c:845 +#: fe-protocol3.c:855 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: fe-protocol3.c:1069 +#: fe-protocol3.c:1079 #, c-format msgid "LINE %d: " msgstr "行 %d: " -#: fe-protocol3.c:1453 +#: fe-protocol3.c:1465 msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline: テキストのCOPY OUTを行っていません\n" @@ -695,29 +733,29 @@ msgstr "PQgetline: テキストのCOPY OUTを行っていません\n" msgid "could not establish SSL connection: %s\n" msgstr "SSL接続を確立できませんでした: %s\n" -#: fe-secure.c:349 fe-secure.c:436 fe-secure.c:1162 +#: fe-secure.c:349 fe-secure.c:436 fe-secure.c:1180 #, c-format msgid "SSL SYSCALL error: %s\n" msgstr "SSL SYSCALLエラー: %s\n" -#: fe-secure.c:355 fe-secure.c:442 fe-secure.c:1166 +#: fe-secure.c:355 fe-secure.c:442 fe-secure.c:1184 msgid "SSL SYSCALL error: EOF detected\n" msgstr "SSL SYSCALLエラー: EOFを検知\n" -#: fe-secure.c:367 fe-secure.c:453 fe-secure.c:1175 +#: fe-secure.c:367 fe-secure.c:453 fe-secure.c:1193 #, c-format msgid "SSL error: %s\n" msgstr "SSLエラー: %s\n" -#: fe-secure.c:377 fe-secure.c:463 fe-secure.c:1184 +#: fe-secure.c:377 fe-secure.c:463 fe-secure.c:1202 #, c-format msgid "unrecognized SSL error code: %d\n" msgstr "不明のSSLエラーコード: %d\n" #: fe-secure.c:601 -msgid "" -"verified SSL connections are only supported when connecting to a host name\n" -msgstr "検証されたSSL接続はホスト名への接続時のみサポートされます\n" +#, +msgid "host name must be specified for a verified SSL connection\n" +msgstr "SSL 接続を検証するためにホスト名を指定しなければなりません\n" #: fe-secure.c:620 #, c-format @@ -729,12 +767,6 @@ msgstr "サーバの正式名(common name)\"%s\"がホスト名\"%s\"と一致 msgid "could not create SSL context: %s\n" msgstr "SSLコンテキストを作成できませんでした: %s\n" -#: fe-secure.c:843 -msgid "could not get home directory to locate client certificate files\n" -msgstr "" -"クライアント証明書ファイルの場所を特定しようとしましたが、ホームディレクトリ" -"を取得できませんでした\n" - #: fe-secure.c:868 #, c-format msgid "could not open certificate file \"%s\": %s\n" @@ -766,12 +798,12 @@ msgstr "" msgid "could not load private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "SSL秘密キー\"%s\"をエンジン\"%s\"から読み取れませんでした: %s\n" -#: fe-secure.c:1017 +#: fe-secure.c:1019 #, c-format msgid "certificate present, but not private key file \"%s\"\n" msgstr "証明書はありましたが、秘密キーファイル\"%s\"はありませんでした\n" -#: fe-secure.c:1025 +#: fe-secure.c:1027 #, c-format msgid "" "private key file \"%s\" has group or world access; permissions should be " @@ -780,27 +812,38 @@ msgstr "" "警告:秘密キーファイル \"%s\" がグループメンバや第三者から読める状態になって" "います。この権限はu=rw (0600)またはそれ以下とすべきです\n" -#: fe-secure.c:1036 +#: fe-secure.c:1038 #, c-format msgid "could not load private key file \"%s\": %s\n" msgstr "秘密キーファイル\"%s\"をロードできませんでした: %s\n" -#: fe-secure.c:1050 +#: fe-secure.c:1052 #, c-format msgid "certificate does not match private key file \"%s\": %s\n" msgstr "証明書と秘密キーファイル\"%s\"が一致しません: %s\n" -#: fe-secure.c:1075 +#: fe-secure.c:1080 #, c-format msgid "could not read root certificate file \"%s\": %s\n" msgstr "ルート証明書\"%s\"を読み取れませんでした: %s\n" -#: fe-secure.c:1099 +#: fe-secure.c:1107 #, c-format msgid "SSL library does not support CRL certificates (file \"%s\")\n" msgstr "SSLライブラリがCRL証明書(\"%s\")をオープンできませんでした\n" -#: fe-secure.c:1120 +#: fe-secure.c:1134 +#, +msgid "" +"could not get home directory to locate root certificate file\n" +"Either provide the file or change sslmode to disable server certificate " +"verification.\n" +msgstr "" +"ルート証明書ファイルを置くためのホームディレクトリが存在しません。\n" +"ファイルを用意するか、サーバ証明書の検証を無効にするように sslmode を" +"変更してください\n" + +#: fe-secure.c:1138 #, c-format msgid "" "root certificate file \"%s\" does not exist\n" @@ -811,20 +854,30 @@ msgstr "" "ファイルを用意するかサーバ証明書の検証を無効にするようにsslmodeを変更してくだ" "さい\n" -#: fe-secure.c:1203 +#: fe-secure.c:1221 #, c-format msgid "certificate could not be obtained: %s\n" msgstr "証明書を入手できませんでした: %s\n" -#: fe-secure.c:1231 +#: fe-secure.c:1249 msgid "SSL certificate's common name contains embedded null\n" msgstr "SSL 証明書のコモンネームに null が含まれています\n" -#: fe-secure.c:1307 +#: fe-secure.c:1325 msgid "no SSL error reported" msgstr "SSLエラーはありませんでした" -#: fe-secure.c:1316 +#: fe-secure.c:1334 #, c-format msgid "SSL error code %lu" msgstr "SSLエラーコード: %lu" + +#~ msgid "" +#~ "verified SSL connections are only supported when connecting to a host " +#~ "name\n" +#~ msgstr "検証されたSSL接続はホスト名への接続時のみサポートされます\n" + +#~ msgid "could not get home directory to locate client certificate files\n" +#~ msgstr "" +#~ "クライアント証明書ファイルの場所を特定しようとしましたが、ホームディレクト" +#~ "リを取得できませんでした\n" diff --git a/src/interfaces/libpq/po/ko.po b/src/interfaces/libpq/po/ko.po index 8e79e40b6b..3c5d0e0bac 100644 --- a/src/interfaces/libpq/po/ko.po +++ b/src/interfaces/libpq/po/ko.po @@ -9,6 +9,7 @@ msgstr "" "PO-Revision-Date: 2010-09-24 12:26-0400\n" "Last-Translator: EnterpriseDB translation team \n" "Language-Team: EnterpriseDB translation team \n" +"Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=euc-kr\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/interfaces/libpq/po/pl.po b/src/interfaces/libpq/po/pl.po new file mode 100644 index 0000000000..48f14ecb17 --- /dev/null +++ b/src/interfaces/libpq/po/pl.po @@ -0,0 +1,938 @@ +# LIBPQ Translated Messages into the Polish Language +# Copyright (c) 2005 toczek, xxxtoczekxxx@wp.pl +# Distributed under the same licensing terms as PostgreSQL itself. +# Begina Felicysym , 2011. +msgid "" +msgstr "" +"Project-Id-Version: libpq (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-10-08 08:43+0000\n" +"PO-Revision-Date: 2011-10-09 18:00+0200\n" +"Last-Translator: Begina Felicysym \n" +"Language-Team: Begina Felicysym\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1-beta1\n" + +#: fe-auth.c:210 fe-auth.c:429 fe-auth.c:656 +msgid "host name must be specified\n" +msgstr "nazwa hosta musi być określona\n" + +#: fe-auth.c:240 +#, c-format +msgid "could not set socket to blocking mode: %s\n" +msgstr "nie można ustawić gniazda w tryb blokowania: %s\n" + +#: fe-auth.c:258 fe-auth.c:262 +#, c-format +msgid "Kerberos 5 authentication rejected: %*s\n" +msgstr "Kerberos 5 autoryzacja odrzucona: %*s\n" + +#: fe-auth.c:288 +#, c-format +msgid "could not restore non-blocking mode on socket: %s\n" +msgstr "nie można odtworzyć trybu nieblokowanego gniazda: %s\n" + +#: fe-auth.c:400 +msgid "GSSAPI continuation error" +msgstr "błąd kontynuowania GSSAPI" + +#: fe-auth.c:436 +msgid "duplicate GSS authentication request\n" +msgstr "podwójne żądanie autoryzacji GSS\n" + +#: fe-auth.c:456 +msgid "GSSAPI name import error" +msgstr "błąd importu nazwy GSSAPI" + +#: fe-auth.c:542 +msgid "SSPI continuation error" +msgstr "błąd kontynuowania SSPI" + +#: fe-auth.c:553 fe-auth.c:627 fe-auth.c:662 fe-auth.c:757 fe-connect.c:1961 +#: fe-connect.c:3368 fe-connect.c:3586 fe-connect.c:4007 fe-connect.c:4016 +#: fe-connect.c:4153 fe-connect.c:4199 fe-connect.c:4217 fe-connect.c:4296 +#: fe-connect.c:4366 fe-connect.c:4412 fe-connect.c:4430 fe-exec.c:3121 +#: fe-exec.c:3286 fe-lobj.c:696 fe-protocol2.c:1092 fe-protocol3.c:1433 +msgid "out of memory\n" +msgstr "brak pamięci\n" + +#: fe-auth.c:642 +msgid "could not acquire SSPI credentials" +msgstr "nie można nabyć poświadczeń SSPI" + +#: fe-auth.c:733 +msgid "SCM_CRED authentication method not supported\n" +msgstr "Metoda autoryzacji SCM_CRED nie jest dostępna\n" + +#: fe-auth.c:807 +msgid "Kerberos 4 authentication not supported\n" +msgstr "metoda autoryzacji Kerberos 4 nie jest dostępna\n" + +#: fe-auth.c:823 +msgid "Kerberos 5 authentication not supported\n" +msgstr "metoda autoryzacji Kerberos 5 nie jest dostępna\n" + +#: fe-auth.c:895 +msgid "GSSAPI authentication not supported\n" +msgstr "Metoda autoryzacji GSSAPI nie jest dostępna\n" + +#: fe-auth.c:927 +msgid "SSPI authentication not supported\n" +msgstr "Metoda autoryzacji SSPI nie jest dostępna\n" + +#: fe-auth.c:935 +msgid "Crypt authentication not supported\n" +msgstr "metoda autoryzacji Crypt nie jest dostępna\n" + +#: fe-auth.c:962 +#, c-format +msgid "authentication method %u not supported\n" +msgstr "metoda autoryzacji %u nie jest dostępna\n" + +#: fe-connect.c:758 +#, c-format +msgid "invalid sslmode value: \"%s\"\n" +msgstr "błędna wartość sslmode: \"%s\"\n" + +#: fe-connect.c:779 +#, c-format +msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" +msgstr "" +"błędna wartość sslmode \"%s\" gdyż obsługa SSL nie została skompilowana\n" + +#: fe-connect.c:972 +#, c-format +msgid "could not set socket to TCP no delay mode: %s\n" +msgstr "nie można ustawić gniazda TCP w tryb bez opóźnień: %s\n" + +#: fe-connect.c:1002 +#, c-format +msgid "" +"could not connect to server: %s\n" +"\tIs the server running locally and accepting\n" +"\tconnections on Unix domain socket \"%s\"?\n" +msgstr "" +"nie można połączyć się z serwerem: %s\n" +"\tCzy serwer działa lokalnie i akceptuje\n" +"\tpołączenia przy pomocy gniazd dziedziny Uniksa \"%s\"?\n" + +#: fe-connect.c:1057 +#, c-format +msgid "" +"could not connect to server: %s\n" +"\tIs the server running on host \"%s\" (%s) and accepting\n" +"\tTCP/IP connections on port %s?\n" +msgstr "" +"nie można połączyć się z serwerem: %s\n" +"\tCzy serwer działa na serwerze \"%s\" (%s) i akceptuje\n" +"\tpołączenia TCP/IP na porcie %s?\n" + +#: fe-connect.c:1066 +#, c-format +msgid "" +"could not connect to server: %s\n" +"\tIs the server running on host \"%s\" and accepting\n" +"\tTCP/IP connections on port %s?\n" +msgstr "" +"nie można połączyć się z serwerem: %s\n" +"\tCzy serwer działa na stacji sieciowej \"%s\" i akceptuje\n" +"\tpołączenia TCP/IP na porcie %s?\n" + +#: fe-connect.c:1117 +#, c-format +msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" +msgstr "nie powiodło się setsockopt(TCP_KEEPIDLE): %s\n" + +#: fe-connect.c:1130 +#, c-format +msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" +msgstr "nie powiodło się setsockopt(TCP_KEEPALIVE): %s\n" + +#: fe-connect.c:1162 +#, c-format +msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" +msgstr "nie powiodło się setsockopt(TCP_KEEPINTVL): %s\n" + +#: fe-connect.c:1194 +#, c-format +msgid "setsockopt(TCP_KEEPCNT) failed: %s\n" +msgstr "nie powiodło się setsockopt(TCP_KEEPCNT): %s\n" + +#: fe-connect.c:1242 +#, c-format +msgid "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" +msgstr "nie powiodło się WSAIoctl(SIO_KEEPALIVE_VALS): %ui\n" + +#: fe-connect.c:1294 +#, c-format +msgid "invalid port number: \"%s\"\n" +msgstr "nieprawidłowy numer portu: \"%s\"\n" + +#: fe-connect.c:1337 +#, c-format +msgid "could not translate host name \"%s\" to address: %s\n" +msgstr "nie można przetłumaczyć nazwy hosta \"%s\" na adres: %s\n" + +#: fe-connect.c:1341 +#, c-format +msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" +msgstr "" +"nie można przetłumaczyć ścieżki gniazda domeny Uniks \"%s\" na adres: %s\n" + +#: fe-connect.c:1551 +msgid "invalid connection state, probably indicative of memory corruption\n" +msgstr "" +"błędny stan połączenia, prawdopodobnie oznajmiający uszkodzenie pamięci\n" + +#: fe-connect.c:1592 +#, c-format +msgid "could not create socket: %s\n" +msgstr "nie można utworzyć gniazda: %s\n" + +#: fe-connect.c:1615 +#, c-format +msgid "could not set socket to non-blocking mode: %s\n" +msgstr "nie można ustawić gniazda w tryb nieblokujący: %s\n" + +#: fe-connect.c:1627 +#, c-format +msgid "could not set socket to close-on-exec mode: %s\n" +msgstr "nie można ustawić gniazda obsługi zamknięcia przy uruchomieniu: %s\n" + +#: fe-connect.c:1647 +msgid "keepalives parameter must be an integer\n" +msgstr "parametr keepalives musi być liczbą całkowitą\n" + +#: fe-connect.c:1660 +#, c-format +msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" +msgstr "nie powiodło się setsockopt(SO_KEEPALIVE): %s\n" + +#: fe-connect.c:1801 +#, c-format +msgid "could not get socket error status: %s\n" +msgstr "nie można otrzymać błędu gniazda: %s\n" + +#: fe-connect.c:1839 +#, c-format +msgid "could not get client address from socket: %s\n" +msgstr "nie można otrzymać adresu klienta z gniazda: %s\n" + +#: fe-connect.c:1880 +msgid "requirepeer parameter is not supported on this platform\n" +msgstr "parametr requirepeer nie jest obsługiwany na tej platformie\n" + +#: fe-connect.c:1883 +#, c-format +msgid "could not get peer credentials: %s\n" +msgstr "nie można pobrać poświadczeń wzajemnych: %s\n" + +#: fe-connect.c:1893 +#, c-format +msgid "local user with ID %d does not exist\n" +msgstr "lokalny użytkownik o ID %d nie istnieje\n" + +#: fe-connect.c:1901 +#, c-format +msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" +msgstr "" +"requirepeer wskazuje \"%s\", ale nazwa bieżącego użytkownika równorzędnego " +"to \"%s\"\n" + +#: fe-connect.c:1935 +#, c-format +msgid "could not send SSL negotiation packet: %s\n" +msgstr "nie można wysłać pakietu negocjacji SSL: %s\n" + +#: fe-connect.c:1974 +#, c-format +msgid "could not send startup packet: %s\n" +msgstr "nie można wysłać pakietu rozpoczynającego: %s\n" + +#: fe-connect.c:2044 +msgid "server does not support SSL, but SSL was required\n" +msgstr "serwer nie obsługuje SSL, ale SSL było wymagane\n" + +#: fe-connect.c:2070 +#, c-format +msgid "received invalid response to SSL negotiation: %c\n" +msgstr "otrzymano niepoprawną odpowiedź negocjacji SSL: %c\n" + +#: fe-connect.c:2149 fe-connect.c:2182 +#, c-format +msgid "expected authentication request from server, but received %c\n" +msgstr "oczekiwano prośby autoryzacji z serwera ale otrzymano %c\n" + +#: fe-connect.c:2363 +#, c-format +msgid "out of memory allocating GSSAPI buffer (%i)" +msgstr "brak pamięci podczas alokacji buforu GSSAPI (%i)" + +#: fe-connect.c:2448 +msgid "unexpected message from server during startup\n" +msgstr "niespodziewana wiadomość z serwera podczas startu\n" + +#: fe-connect.c:2547 +#, c-format +msgid "invalid connection state %d, probably indicative of memory corruption\n" +msgstr "" +"nieprawidłowy stan połączenia %d, prawdopodobnie wskazujący na uszkodzenie " +"pamięci\n" + +#: fe-connect.c:2976 fe-connect.c:3036 +#, c-format +msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" +msgstr "PGEventProc \"%s\" zawiodła podczas zdarzenia PGEVT_CONNRESET\n" + +#: fe-connect.c:3381 +#, c-format +msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" +msgstr "Niepoprawny adres URL LDAP \"%s\": schemat musi być ldap://\n" + +#: fe-connect.c:3396 +#, c-format +msgid "invalid LDAP URL \"%s\": missing distinguished name\n" +msgstr "niepoprawny adres URL LDAP \"%s\": brakująca nazwa wyróżniająca\n" + +#: fe-connect.c:3407 fe-connect.c:3460 +#, c-format +msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" +msgstr "niepoprawny adres URL LDAP \"%s\": musi mieć dokładnie jeden atrybut\n" + +#: fe-connect.c:3417 fe-connect.c:3474 +#, c-format +msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" +msgstr "" +"niepoprawny adres URL LDAP \"%s\": musi mieć zakres wyszukiwania (base/one/" +"sub)\n" + +#: fe-connect.c:3428 +#, c-format +msgid "invalid LDAP URL \"%s\": no filter\n" +msgstr "niepoprawny adres URL LDAP \"%s\": brak filtra\n" + +#: fe-connect.c:3449 +#, c-format +msgid "invalid LDAP URL \"%s\": invalid port number\n" +msgstr "niepoprawny adres URL LDAP \"%s\": niepoprawny numer portu\n" + +#: fe-connect.c:3483 +msgid "could not create LDAP structure\n" +msgstr "nie można utworzyć struktury LDAP\n" + +#: fe-connect.c:3525 +#, c-format +msgid "lookup on LDAP server failed: %s\n" +msgstr "przeszukiwanie LDAP nie powiodło się: %s\n" + +#: fe-connect.c:3536 +msgid "more than one entry found on LDAP lookup\n" +msgstr "ponad jeden wpis znaleziono podczas przeszukiwania LDAP\n" + +#: fe-connect.c:3537 fe-connect.c:3549 +msgid "no entry found on LDAP lookup\n" +msgstr "nie znaleziono wpisu podczas przeszukiwania LDAP\n" + +#: fe-connect.c:3560 fe-connect.c:3573 +msgid "attribute has no values on LDAP lookup\n" +msgstr "atrybut nie ma wartości w przeszukiwaniu LDAP\n" + +#: fe-connect.c:3625 fe-connect.c:3644 fe-connect.c:4055 +#, c-format +msgid "missing \"=\" after \"%s\" in connection info string\n" +msgstr "brakujące \"=\" po \"%s\" w łańcuchu informacyjnym połączenia\n" + +#: fe-connect.c:3708 fe-connect.c:4137 fe-connect.c:4321 +#, c-format +msgid "invalid connection option \"%s\"\n" +msgstr "błędna opcja połączenia \"%s\"\n" + +#: fe-connect.c:3724 fe-connect.c:4104 +msgid "unterminated quoted string in connection info string\n" +msgstr "niezamknięty cudzysłów w łańcuchu informacyjnym połączenia\n" + +#: fe-connect.c:3763 +msgid "could not get home directory to locate service definition file" +msgstr "" +"nie można pobrać katalogu domowego aby zlokalizować plik definicji usługi" + +#: fe-connect.c:3796 +#, c-format +msgid "definition of service \"%s\" not found\n" +msgstr "nie znaleziono definicji usługi \"%s\"\n" + +#: fe-connect.c:3819 +#, c-format +msgid "service file \"%s\" not found\n" +msgstr "nie znaleziono pliku usługi \"%s\"\n" + +#: fe-connect.c:3832 +#, c-format +msgid "line %d too long in service file \"%s\"\n" +msgstr "zbyt długa linia %d w pliku usługi \"%s\"\n" + +#: fe-connect.c:3903 fe-connect.c:3930 +#, c-format +msgid "syntax error in service file \"%s\", line %d\n" +msgstr "błąd składni w pliku usługi \"%s\", linia %d\n" + +#: fe-connect.c:4597 +msgid "connection pointer is NULL\n" +msgstr "wskaźnik połączenia ma wartość NULL\n" + +#: fe-connect.c:4874 +#, c-format +msgid "WARNING: password file \"%s\" is not a plain file\n" +msgstr "OSTRZEŻENIE: plik hasła \"%s\" nie jest zwykłym plikiem\n" + +#: fe-connect.c:4883 +#, c-format +msgid "" +"WARNING: password file \"%s\" has group or world access; permissions should " +"be u=rw (0600) or less\n" +msgstr "" +"UWAGA: plik hasła \"%s\" posiada globalne lub grupowe uprawnienia odczytu;\n" +"uprawniania powinny być ustawione na u=rw (0600) lub niżej\n" + +#: fe-connect.c:4971 +#, c-format +msgid "password retrieved from file \"%s\"\n" +msgstr "hasło odczytane z pliku \"%s\"\n" + +#: fe-exec.c:810 +msgid "NOTICE" +msgstr "UWAGA" + +#: fe-exec.c:997 fe-exec.c:1054 fe-exec.c:1094 +msgid "command string is a null pointer\n" +msgstr "łańcuch polecenia jest wskaźnikiem null\n" + +#: fe-exec.c:1087 fe-exec.c:1182 +msgid "statement name is a null pointer\n" +msgstr "nazwa instrukcji jest wskaźnikiem null\n" + +#: fe-exec.c:1102 fe-exec.c:1256 fe-exec.c:1925 fe-exec.c:2123 +msgid "function requires at least protocol version 3.0\n" +msgstr "funkcja wymaga przynajmniej protokołu w wersji 3.0\n" + +#: fe-exec.c:1213 +msgid "no connection to the server\n" +msgstr "brak połączenia z serwerem\n" + +#: fe-exec.c:1220 +msgid "another command is already in progress\n" +msgstr "inne polecenie jest aktualnie wykonywane\n" + +#: fe-exec.c:1332 +msgid "length must be given for binary parameter\n" +msgstr "musi być podana długość parametru binarnego\n" + +#: fe-exec.c:1585 +#, c-format +msgid "unexpected asyncStatus: %d\n" +msgstr "nieoczekiwany asyncStatus: %d\n" + +#: fe-exec.c:1605 +#, c-format +msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" +msgstr "PGEventProc \"%s\" zawiodła podczas zdarzenia PGEVT_RESULTCREATE\n" + +#: fe-exec.c:1735 +msgid "COPY terminated by new PQexec" +msgstr "KOPIOWANIE zakończone przez nowe PQexec" + +#: fe-exec.c:1743 +msgid "COPY IN state must be terminated first\n" +msgstr "stan COPY IN musi zostać wcześniej zakończony\n" + +#: fe-exec.c:1763 +msgid "COPY OUT state must be terminated first\n" +msgstr "stan COPY OUT musi zostać wcześniej zakończony\n" + +#: fe-exec.c:1771 +msgid "PQexec not allowed during COPY BOTH\n" +msgstr "PQexec niedozwolone podczas COPY BOTH\n" + +#: fe-exec.c:2014 fe-exec.c:2080 fe-exec.c:2167 fe-protocol2.c:1237 +#: fe-protocol3.c:1569 +msgid "no COPY in progress\n" +msgstr "brak KOPIOWANIA w toku\n" + +#: fe-exec.c:2359 +msgid "connection in wrong state\n" +msgstr "połączenie posiada błędny stan\n" + +#: fe-exec.c:2390 +msgid "invalid ExecStatusType code" +msgstr "błędny kod ExecStatusType" + +#: fe-exec.c:2454 fe-exec.c:2477 +#, c-format +msgid "column number %d is out of range 0..%d" +msgstr "numer kolumny %d wykracza poza zakres 0..%d" + +#: fe-exec.c:2470 +#, c-format +msgid "row number %d is out of range 0..%d" +msgstr "numer wiersza %d wykracza poza zakres 0..%d" + +#: fe-exec.c:2492 +#, c-format +msgid "parameter number %d is out of range 0..%d" +msgstr "numer parametru %d wykracza poza zakres 0..%d" + +#: fe-exec.c:2780 +#, c-format +msgid "could not interpret result from server: %s" +msgstr "nie można zinterpretować wyników z serwera: %s" + +#: fe-exec.c:3019 fe-exec.c:3103 +msgid "incomplete multibyte character\n" +msgstr "niepełny znak wielobajtowy\n" + +#: fe-lobj.c:152 +msgid "cannot determine OID of function lo_truncate\n" +msgstr "nie można ustalić OID funkcji lo_truncate\n" + +#: fe-lobj.c:380 +msgid "cannot determine OID of function lo_create\n" +msgstr "nie można ustalić OID funkcji lo_create\n" + +#: fe-lobj.c:525 fe-lobj.c:624 +#, c-format +msgid "could not open file \"%s\": %s\n" +msgstr "nie można otworzyć pliku \"%s\": %s\n" + +#: fe-lobj.c:575 +#, c-format +msgid "could not read from file \"%s\": %s\n" +msgstr "nie można czytać z pliku \"%s\": %s\n" + +#: fe-lobj.c:639 fe-lobj.c:663 +#, c-format +msgid "could not write to file \"%s\": %s\n" +msgstr "nie można pisać do pliku \"%s\": %s\n" + +#: fe-lobj.c:744 +msgid "query to initialize large object functions did not return data\n" +msgstr "zapytanie inicjujące duży obiekt nie zwróciło żadnych danych\n" + +#: fe-lobj.c:785 +msgid "cannot determine OID of function lo_open\n" +msgstr "nie można ustalić OID funkcji lo_open\n" + +#: fe-lobj.c:792 +msgid "cannot determine OID of function lo_close\n" +msgstr "nie można ustalić OID funkcji lo_close\n" + +#: fe-lobj.c:799 +msgid "cannot determine OID of function lo_creat\n" +msgstr "nie można ustalić OID funkcji lo_creat\n" + +#: fe-lobj.c:806 +msgid "cannot determine OID of function lo_unlink\n" +msgstr "nie można ustalić OID funkcji lo_unlink\n" + +#: fe-lobj.c:813 +msgid "cannot determine OID of function lo_lseek\n" +msgstr "nie można ustalić OID funkcji lo_lseek\n" + +#: fe-lobj.c:820 +msgid "cannot determine OID of function lo_tell\n" +msgstr "nie można ustalić OID funkcji lo_tell\n" + +#: fe-lobj.c:827 +msgid "cannot determine OID of function loread\n" +msgstr "nie można ustalić OID funkcji loread\n" + +#: fe-lobj.c:834 +msgid "cannot determine OID of function lowrite\n" +msgstr "nie można ustalić OID funkcji lowrite\n" + +#: fe-misc.c:270 +#, c-format +msgid "integer of size %lu not supported by pqGetInt" +msgstr "typ integer o rozmiarze %lu nie jest obsługiwany przez pqGetInt" + +#: fe-misc.c:306 +#, c-format +msgid "integer of size %lu not supported by pqPutInt" +msgstr "typ integer o rozmiarze %lu nie jest obsługiwany przez pqPutInt" + +#: fe-misc.c:585 fe-misc.c:784 +msgid "connection not open\n" +msgstr "połączenie nie jest otwarte\n" + +#: fe-misc.c:711 fe-secure.c:364 fe-secure.c:443 fe-secure.c:524 +#: fe-secure.c:632 +msgid "" +"server closed the connection unexpectedly\n" +"\tThis probably means the server terminated abnormally\n" +"\tbefore or while processing the request.\n" +msgstr "" +"serwer zamknął połączenie niespodziewanie\n" +"\tOznacza to prawdopodobnie iż serwer zakończył działanie niepoprawnie\n" +"\tprzed lub podczas przetwarzania zapytania.\n" + +#: fe-misc.c:948 +msgid "timeout expired\n" +msgstr "upłynął limit czasu rządania\n" + +#: fe-misc.c:993 +msgid "socket not open\n" +msgstr "gniazdo nie jest otwarte\n" + +#: fe-misc.c:1016 +#, c-format +msgid "select() failed: %s\n" +msgstr "select() nie udało się: %s\n" + +#: fe-protocol2.c:91 +#, c-format +msgid "invalid setenv state %c, probably indicative of memory corruption\n" +msgstr "" +"niepoprawny stan setenv %c, prawdopodobnie oznajmiający uszkodzenie pamięci\n" + +#: fe-protocol2.c:390 +#, c-format +msgid "invalid state %c, probably indicative of memory corruption\n" +msgstr "niepoprawny stan %c, prawdopodobnie oznajmiający uszkodzenie pamięci\n" + +#: fe-protocol2.c:479 fe-protocol3.c:186 +#, c-format +msgid "message type 0x%02x arrived from server while idle" +msgstr "otrzymano wiadomość typu 0x%02x z serwera podczas procesu bezczynności" + +#: fe-protocol2.c:522 +#, c-format +msgid "unexpected character %c following empty query response (\"I\" message)" +msgstr "" +"nieznany znak %c następujący po odpowiedzi pustego zapytania (wiadomość \"I" +"\")" + +#: fe-protocol2.c:576 +msgid "" +"server sent data (\"D\" message) without prior row description (\"T\" " +"message)" +msgstr "" +"serwer wysłał dane (wiadomość \"D\") bez wcześniejszego opisu wiersza " +"(wiadomość \"T\")" + +#: fe-protocol2.c:592 +msgid "" +"server sent binary data (\"B\" message) without prior row description (\"T\" " +"message)" +msgstr "" +"serwer wysłał dane binarne (wiadomość \"B\") bez wcześniejszego opisu " +"wiersza (wiadomość \"T\")" + +#: fe-protocol2.c:612 fe-protocol3.c:388 +#, c-format +msgid "unexpected response from server; first received character was \"%c\"\n" +msgstr "" +"nieznana odpowiedź z serwera: pierwszym znakiem otrzymanym był \"%c\"\n" + +#: fe-protocol2.c:833 fe-protocol3.c:707 +msgid "out of memory for query result\n" +msgstr "brak pamięci dla rezultatów zapytania\n" + +#: fe-protocol2.c:1280 fe-protocol3.c:1637 +#, c-format +msgid "%s" +msgstr "%s" + +#: fe-protocol2.c:1292 +msgid "lost synchronization with server, resetting connection" +msgstr "utracono synchronizację z serwerem, resetuję połączenie" + +#: fe-protocol2.c:1426 fe-protocol2.c:1458 fe-protocol3.c:1840 +#, c-format +msgid "protocol error: id=0x%x\n" +msgstr "błąd protokołu: id=0x%x\n" + +#: fe-protocol3.c:344 +msgid "" +"server sent data (\"D\" message) without prior row description (\"T\" " +"message)\n" +msgstr "" +"serwer wysłał dane (wiadomość \"D\") bez wcześniejszego opisu wiersza " +"(wiadomość \"T\")\n" + +#: fe-protocol3.c:409 +#, c-format +msgid "message contents do not agree with length in message type \"%c\"\n" +msgstr "" +"zawartość wiadomości nie zgadza się z długością wiadomości typu \"%c\"\n" + +#: fe-protocol3.c:430 +#, c-format +msgid "lost synchronization with server: got message type \"%c\", length %d\n" +msgstr "" +"utracono synchronizację z serwerem: otrzymano wiadomość typu\"%c\", długość " +"%d\n" + +#: fe-protocol3.c:652 +msgid "unexpected field count in \"D\" message\n" +msgstr "nieznane pole wyliczone w wiadomości \"D\"\n" + +#. translator: %s represents a digit string +#: fe-protocol3.c:798 fe-protocol3.c:817 +#, c-format +msgid " at character %s" +msgstr " znak %s" + +#: fe-protocol3.c:830 +#, c-format +msgid "DETAIL: %s\n" +msgstr "SZCZEGÓŁY: %s\n" + +#: fe-protocol3.c:833 +#, c-format +msgid "HINT: %s\n" +msgstr "PODPOWIEDŹ: %s\n" + +#: fe-protocol3.c:836 +#, c-format +msgid "QUERY: %s\n" +msgstr "ZAPYTANIE: %s\n" + +#: fe-protocol3.c:839 +#, c-format +msgid "CONTEXT: %s\n" +msgstr "KONTEKST: %s\n" + +#: fe-protocol3.c:851 +msgid "LOCATION: " +msgstr "POŁOŻENIE: " + +#: fe-protocol3.c:853 +#, c-format +msgid "%s, " +msgstr "%s, " + +#: fe-protocol3.c:855 +#, c-format +msgid "%s:%s" +msgstr "%s:%s" + +#: fe-protocol3.c:1079 +#, c-format +msgid "LINE %d: " +msgstr "LINIA %d: " + +#: fe-protocol3.c:1465 +msgid "PQgetline: not doing text COPY OUT\n" +msgstr "PQgetline: nie działam aktualnie w stanie COPY OUT\n" + +#: fe-secure.c:265 +#, c-format +msgid "could not establish SSL connection: %s\n" +msgstr "nie można ustanowić połączenia SSL: %s\n" + +#: fe-secure.c:369 fe-secure.c:529 fe-secure.c:1331 +#, c-format +msgid "SSL SYSCALL error: %s\n" +msgstr "błąd SSL SYSCALL: %s\n" + +#: fe-secure.c:376 fe-secure.c:536 fe-secure.c:1335 +msgid "SSL SYSCALL error: EOF detected\n" +msgstr "błąd SSL SYSCALL: wykryto EOF\n" + +#: fe-secure.c:387 fe-secure.c:547 fe-secure.c:1344 +#, c-format +msgid "SSL error: %s\n" +msgstr "błąd SSL: %s\n" + +#: fe-secure.c:401 fe-secure.c:561 +msgid "SSL connection has been closed unexpectedly\n" +msgstr "Połączenie SSL zostało nieoczekiwanie zamknięte\n" + +#: fe-secure.c:407 fe-secure.c:567 fe-secure.c:1353 +#, c-format +msgid "unrecognized SSL error code: %d\n" +msgstr "nieznany błąd SSL o kodzie: %d\n" + +#: fe-secure.c:451 +#, c-format +msgid "could not receive data from server: %s\n" +msgstr "nie można otrzymać danych z serwera: %s\n" + +#: fe-secure.c:639 +#, c-format +msgid "could not send data to server: %s\n" +msgstr "nie można wysłać danych do serwera: %s\n" + +#: fe-secure.c:746 +msgid "host name must be specified for a verified SSL connection\n" +msgstr "nazwa hosta musi zostać podana dla zweryfikowanego połączenia SSL\n" + +#: fe-secure.c:765 +#, c-format +msgid "server common name \"%s\" does not match host name \"%s\"\n" +msgstr "nazwa zwyczajowa serwera \"%s\" nie odpowiada nazwie hosta \"%s\"\n" + +#: fe-secure.c:897 +#, c-format +msgid "could not create SSL context: %s\n" +msgstr "nie można utworzyć kontekstu SSL: %s\n" + +#: fe-secure.c:1019 +#, c-format +msgid "could not open certificate file \"%s\": %s\n" +msgstr "nie można otworzyć pliku certyfikatu \"%s\": %s\n" + +#: fe-secure.c:1044 fe-secure.c:1054 +#, c-format +msgid "could not read certificate file \"%s\": %s\n" +msgstr "nie można odczytać pliku certyfikatu \"%s\": %s\n" + +#: fe-secure.c:1091 +#, c-format +msgid "could not load SSL engine \"%s\": %s\n" +msgstr "nie można wczytać silnika SSL \"%s\": %s\n" + +#: fe-secure.c:1103 +#, c-format +msgid "could not initialize SSL engine \"%s\": %s\n" +msgstr "nie można zainicjować silnika SSL \"%s\": %s\n" + +#: fe-secure.c:1119 +#, c-format +msgid "could not read private SSL key \"%s\" from engine \"%s\": %s\n" +msgstr "nie można odczytać prywatnego klucza SSL \"%s\" z silnika \"%s\": %s\n" + +#: fe-secure.c:1133 +#, c-format +msgid "could not load private SSL key \"%s\" from engine \"%s\": %s\n" +msgstr "nie można pobrać prywatnego klucza SSL \"%s\" z silnika \"%s\": %s\n" + +#: fe-secure.c:1170 +#, c-format +msgid "certificate present, but not private key file \"%s\"\n" +msgstr "" +"znaleziono certyfikat ale nie znaleziono pliku z prywatnym kluczem \"%s\"\n" + +#: fe-secure.c:1178 +#, c-format +msgid "" +"private key file \"%s\" has group or world access; permissions should be " +"u=rw (0600) or less\n" +msgstr "" +"plik hasła \"%s\" posiada globalne lub grupowe uprawnienia odczytu;\n" +"uprawniania powinny być ustawione na u=rw (0600) lub niżej\n" + +#: fe-secure.c:1189 +#, c-format +msgid "could not load private key file \"%s\": %s\n" +msgstr "nie można pobrać pliku z kluczem prywatnym \"%s\": %s\n" + +#: fe-secure.c:1203 +#, c-format +msgid "certificate does not match private key file \"%s\": %s\n" +msgstr "certyfikat nie pokrywa się z prywatnym kluczem w pliku \"%s\": %s\n" + +#: fe-secure.c:1231 +#, c-format +msgid "could not read root certificate file \"%s\": %s\n" +msgstr "nie można odczytać pliku z certyfikatem użytkownika root \"%s\": %s\n" + +#: fe-secure.c:1258 +#, c-format +msgid "SSL library does not support CRL certificates (file \"%s\")\n" +msgstr "biblioteka SSL nie wspiera certyfikatów CRL (plik \"%s\")\n" + +#: fe-secure.c:1285 +msgid "" +"could not get home directory to locate root certificate file\n" +"Either provide the file or change sslmode to disable server certificate " +"verification.\n" +msgstr "" +"nie można pobrać folderu domowego aby zlokalizować plik certyfikatu " +"głównego\n" +"Albo dostarcz plik albo zmień tryb ssl by zablokować weryfikację certyfikatu " +"serwera.\n" + +#: fe-secure.c:1289 +#, c-format +msgid "" +"root certificate file \"%s\" does not exist\n" +"Either provide the file or change sslmode to disable server certificate " +"verification.\n" +msgstr "" +"plik certyfikatu głównego \"%s\" nie istnieje\n" +"Albo dostarcz plik albo zmień tryb ssl by zablokować weryfikację certyfikatu " +"serwera.\n" + +#: fe-secure.c:1372 +#, c-format +msgid "certificate could not be obtained: %s\n" +msgstr "certyfikat nie może zostać otrzymany: %s\n" + +#: fe-secure.c:1400 +msgid "SSL certificate's common name contains embedded null\n" +msgstr "nazwa zwyczajowa certyfikatu SSL zawiera osadzony null\n" + +#: fe-secure.c:1476 +msgid "no SSL error reported" +msgstr "nie zgłoszono błędu SSL" + +#: fe-secure.c:1485 +#, c-format +msgid "SSL error code %lu" +msgstr "kod błędu SSL %lu" + +#~ msgid "Kerberos 4 error: %s\n" +#~ msgstr "Błąd programu Kerberos 4: %s\n" + +#~ msgid "Kerberos 4 authentication failed\n" +#~ msgstr "Kerberos 4: autoryzacja odrzucona\n" + +#~ msgid "Kerberos 5 authentication failed\n" +#~ msgstr "Kerberos 5: autoryzacja odrzucona\n" + +#~ msgid "invalid authentication service name \"%s\", ignored\n" +#~ msgstr "błędna nazwa usługi autoryzacji \"%s\", pomijam\n" + +#~ msgid "fe_getauthname: invalid authentication system: %d\n" +#~ msgstr "fe_getauthname: błędy system autoryzacji: %d\n" + +#~ msgid "could not create large object for file \"%s\"\n" +#~ msgstr "nie można utworzyć dużego obiektu dla pliku \"%s\"\n" + +#~ msgid "could not open large object %u\n" +#~ msgstr "nie można otworzyć dużego obiektu %u\n" + +#~ msgid "error while reading file \"%s\"\n" +#~ msgstr "błąd podczas odczytu pliku \"%s\"\n" + +#~ msgid "error while writing to file \"%s\"\n" +#~ msgstr "błąd podczas zapisu do pliku \"%s\"\n" + +#~ msgid "error querying socket: %s\n" +#~ msgstr "błąd zapytania gniazda: %s\n" + +#~ msgid "could not get information about host \"%s\": %s\n" +#~ msgstr "nie można otrzymać informacji o stacji siecowej \"%s\": %s\n" + +#~ msgid "unsupported protocol\n" +#~ msgstr "nieobsługiwany protokół\n" + +#~ msgid "could not get user information\n" +#~ msgstr "nie można uzykać informacji o użytkowniku\n" + +#~ msgid "private key file \"%s\" has wrong permissions\n" +#~ msgstr "plik z prywatnym kluczem \"%s\" posiada błędne uprawnienia\n" + +#~ msgid "could not open private key file \"%s\": %s\n" +#~ msgstr "nie można otworzyć pliku z prywatnym kluczem \"%s\": %s\n" + +#~ msgid "private key file \"%s\" changed during execution\n" +#~ msgstr "plik z prywatnym kluczem \"%s\" zmieniony podczas wykonywania\n" + +#~ msgid "certificate could not be validated: %s\n" +#~ msgstr "certyfikat nie może zostać potwierdzony: %s\n" diff --git a/src/interfaces/libpq/po/pt_BR.po b/src/interfaces/libpq/po/pt_BR.po index f02da55a7e..fd92eb2207 100644 --- a/src/interfaces/libpq/po/pt_BR.po +++ b/src/interfaces/libpq/po/pt_BR.po @@ -3,13 +3,13 @@ # This file is distributed under the same license as the PostgreSQL package. # Cesar Suga , 2002. # Roberto Mello , 2002. -# Euler Taveira de Oliveira , 2003-2010. +# Euler Taveira de Oliveira , 2003-2013. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-07-26 15:08-0300\n" +"POT-Creation-Date: 2013-08-18 17:19-0300\n" "PO-Revision-Date: 2005-10-04 22:45-0300\n" "Last-Translator: Euler Taveira de Oliveira \n" "Language-Team: Brazilian Portuguese \n" @@ -18,62 +18,63 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: fe-auth.c:212 fe-auth.c:432 fe-auth.c:659 +#: fe-auth.c:210 fe-auth.c:429 fe-auth.c:656 msgid "host name must be specified\n" msgstr "nome da máquina deve ser especificado\n" -#: fe-auth.c:242 +#: fe-auth.c:240 #, c-format msgid "could not set socket to blocking mode: %s\n" msgstr "não pôde configurar o soquete para modo bloqueado: %s\n" -#: fe-auth.c:260 fe-auth.c:264 +#: fe-auth.c:258 fe-auth.c:262 #, c-format msgid "Kerberos 5 authentication rejected: %*s\n" msgstr "Autenticação Kerberos 5 rejeitada: %*s\n" -#: fe-auth.c:290 +#: fe-auth.c:288 #, c-format msgid "could not restore non-blocking mode on socket: %s\n" msgstr "não pôde restaurar modo não-bloqueado no soquete: %s\n" -#: fe-auth.c:403 +#: fe-auth.c:400 msgid "GSSAPI continuation error" msgstr "erro ao continuar autenticação GSSAPI" -#: fe-auth.c:439 +#: fe-auth.c:436 msgid "duplicate GSS authentication request\n" msgstr "pedido de autenticação GSS duplicado\n" -#: fe-auth.c:459 +#: fe-auth.c:456 msgid "GSSAPI name import error" msgstr "erro de importação de nome GSSAPI" -#: fe-auth.c:545 +#: fe-auth.c:542 msgid "SSPI continuation error" msgstr "erro ao continuar autenticação SSPI" -#: fe-auth.c:556 fe-auth.c:630 fe-auth.c:665 fe-auth.c:762 fe-connect.c:1802 -#: fe-connect.c:3129 fe-connect.c:3346 fe-connect.c:3762 fe-connect.c:3771 -#: fe-connect.c:3908 fe-connect.c:3954 fe-connect.c:3972 fe-connect.c:4051 -#: fe-connect.c:4121 fe-connect.c:4167 fe-connect.c:4185 fe-exec.c:3121 -#: fe-exec.c:3286 fe-lobj.c:696 fe-protocol2.c:1027 fe-protocol3.c:1421 +#: fe-auth.c:553 fe-auth.c:627 fe-auth.c:662 fe-auth.c:757 fe-connect.c:1971 +#: fe-connect.c:3380 fe-connect.c:3598 fe-connect.c:4019 fe-connect.c:4028 +#: fe-connect.c:4165 fe-connect.c:4211 fe-connect.c:4229 fe-connect.c:4308 +#: fe-connect.c:4378 fe-connect.c:4424 fe-connect.c:4442 fe-exec.c:3121 +#: fe-exec.c:3286 fe-lobj.c:711 fe-protocol2.c:1092 fe-protocol3.c:1433 +#: fe-secure.c:789 fe-secure.c:1189 msgid "out of memory\n" msgstr "sem memória\n" -#: fe-auth.c:645 +#: fe-auth.c:642 msgid "could not acquire SSPI credentials" msgstr "não pôde obter credenciais SSPI" -#: fe-auth.c:738 +#: fe-auth.c:733 msgid "SCM_CRED authentication method not supported\n" msgstr "método de autenticação SCM_CRED não é suportado\n" -#: fe-auth.c:812 +#: fe-auth.c:807 msgid "Kerberos 4 authentication not supported\n" msgstr "Autenticação Kerberos 4 não é suportada\n" -#: fe-auth.c:828 +#: fe-auth.c:823 msgid "Kerberos 5 authentication not supported\n" msgstr "Autenticação Kerberos 5 não é suportada\n" @@ -81,36 +82,36 @@ msgstr "Autenticação Kerberos 5 não é suportada\n" msgid "GSSAPI authentication not supported\n" msgstr "Autenticação GSSAPI não é suportada\n" -#: fe-auth.c:919 +#: fe-auth.c:927 msgid "SSPI authentication not supported\n" msgstr "Autenticação SSPI não é suportada\n" -#: fe-auth.c:926 +#: fe-auth.c:935 msgid "Crypt authentication not supported\n" msgstr "Autenticação crypt não é suportada\n" -#: fe-auth.c:953 +#: fe-auth.c:962 #, c-format msgid "authentication method %u not supported\n" msgstr "método de autenticação %u não é suportado\n" -#: fe-connect.c:712 +#: fe-connect.c:758 #, c-format msgid "invalid sslmode value: \"%s\"\n" msgstr "valor do modo ssl desconhecido: \"%s\"\n" -#: fe-connect.c:733 +#: fe-connect.c:779 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" msgstr "" "valor \"%s\" do modo ssl é inválido quando suporte a SSL não foi compilado\n" -#: fe-connect.c:916 +#: fe-connect.c:972 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "não pôde configurar o soquete para modo TCP sem atraso: %s\n" -#: fe-connect.c:946 +#: fe-connect.c:1002 #, c-format msgid "" "could not connect to server: %s\n" @@ -121,7 +122,18 @@ msgstr "" "\tO servidor está executando localmente e aceitando\n" "\tconexões no soquete de domínio Unix \"%s\"?\n" -#: fe-connect.c:956 +#: fe-connect.c:1057 +#, c-format +msgid "" +"could not connect to server: %s\n" +"\tIs the server running on host \"%s\" (%s) and accepting\n" +"\tTCP/IP connections on port %s?\n" +msgstr "" +"não pôde conectar ao servidor: %s\n" +"\tO servidor está executando na máquina \"%s\" (%s) e aceitando\n" +"\tconexões TCP/IP na porta %s?\n" + +#: fe-connect.c:1066 #, c-format msgid "" "could not connect to server: %s\n" @@ -132,236 +144,262 @@ msgstr "" "\tO servidor está executando na máquina \"%s\" e aceitando\n" "\tconexões TCP/IP na porta %s?\n" -#: fe-connect.c:1011 +#: fe-connect.c:1117 #, c-format msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" msgstr "setsockopt(TCP_KEEPIDLE) falhou: %s\n" -#: fe-connect.c:1024 +#: fe-connect.c:1130 #, c-format msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" msgstr "setsockopt(TCP_KEEPALIVE) falhou: %s\n" -#: fe-connect.c:1056 +#: fe-connect.c:1162 #, c-format msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" msgstr "setsockopt(TCP_KEEPINTVL) falhou: %s\n" -#: fe-connect.c:1088 +#: fe-connect.c:1194 #, c-format msgid "setsockopt(TCP_KEEPCNT) failed: %s\n" msgstr "setsockopt(TCP_KEEPCNT) falhou: %s\n" -#: fe-connect.c:1137 +#: fe-connect.c:1242 #, c-format msgid "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" msgstr "WSAIoctl(SIO_KEEPALIVE_VALS) falhou: %ui\n" -#: fe-connect.c:1189 +#: fe-connect.c:1294 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "número de porta inválido: \"%s\"\n" -#: fe-connect.c:1231 +#: fe-connect.c:1327 +#, c-format +msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" +msgstr "" +"caminho do soquete de domínio Unix \"%s\" é muito longo (máximo de %d " +"bytes)\n" + +#: fe-connect.c:1346 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "não pôde traduzir nome da máquina \"%s\" para endereço: %s\n" -#: fe-connect.c:1235 +#: fe-connect.c:1350 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "" "não pôde traduzir caminho do soquete de domínio Unix \"%s\" para endereço: " "%s\n" -#: fe-connect.c:1444 +#: fe-connect.c:1560 msgid "invalid connection state, probably indicative of memory corruption\n" msgstr "" "estado de conexão é inválido, provavelmente indicativo de corrupção de " "memória\n" -#: fe-connect.c:1487 +#: fe-connect.c:1601 #, c-format msgid "could not create socket: %s\n" msgstr "não pôde criar soquete: %s\n" -#: fe-connect.c:1510 +#: fe-connect.c:1624 #, c-format msgid "could not set socket to non-blocking mode: %s\n" msgstr "não pôde configurar o soquete para modo não-bloqueado: %s\n" -#: fe-connect.c:1522 +#: fe-connect.c:1636 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "não pôde configurar o soquete para modo fechar-após-execução: %s\n" -#: fe-connect.c:1540 +#: fe-connect.c:1656 msgid "keepalives parameter must be an integer\n" msgstr "parâmetro keepalives deve ser um inteiro\n" -#: fe-connect.c:1553 +#: fe-connect.c:1669 #, c-format msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" msgstr "setsockopt(SO_KEEPALIVE) falhou: %s\n" -#: fe-connect.c:1694 +#: fe-connect.c:1811 #, c-format msgid "could not get socket error status: %s\n" msgstr "não pôde obter status de erro do soquete: %s\n" -#: fe-connect.c:1732 +#: fe-connect.c:1849 #, c-format msgid "could not get client address from socket: %s\n" msgstr "não pôde obter do soquete o endereço do cliente: %s\n" -#: fe-connect.c:1776 +#: fe-connect.c:1890 +msgid "requirepeer parameter is not supported on this platform\n" +msgstr "parâmetro requirepeer não é suportado nessa plataforma\n" + +#: fe-connect.c:1893 +#, c-format +msgid "could not get peer credentials: %s\n" +msgstr "não pôde receber credenciais: %s\n" + +#: fe-connect.c:1903 +#, c-format +msgid "local user with ID %d does not exist\n" +msgstr "usuário local com ID %d não existe\n" + +#: fe-connect.c:1911 +#, c-format +msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" +msgstr "requirepeer especificou \"%s\", mas nome de usuário atual é \"%s\"\n" + +#: fe-connect.c:1945 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "não pôde mandar pacote de negociação SSL: %s\n" -#: fe-connect.c:1815 +#: fe-connect.c:1984 #, c-format msgid "could not send startup packet: %s\n" msgstr "não pôde enviar pacote de inicialização: %s\n" -#: fe-connect.c:1882 fe-connect.c:1901 +#: fe-connect.c:2054 msgid "server does not support SSL, but SSL was required\n" msgstr "servidor não suporta SSL, mas SSL foi requerido\n" -#: fe-connect.c:1917 +#: fe-connect.c:2080 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "a negociação SSL recebeu uma resposta inválida: %c\n" -#: fe-connect.c:1993 fe-connect.c:2026 +#: fe-connect.c:2159 fe-connect.c:2192 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "pedido de autenticação esperado do servidor, mas foi recebido %c\n" -#: fe-connect.c:2197 +#: fe-connect.c:2373 #, c-format msgid "out of memory allocating GSSAPI buffer (%i)" msgstr "sem memória para alocar buffer para GSSAPI (%i)" -#: fe-connect.c:2282 +#: fe-connect.c:2458 msgid "unexpected message from server during startup\n" msgstr "mensagem inesperada do servidor durante inicialização\n" -#: fe-connect.c:2378 +#: fe-connect.c:2557 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" msgstr "" "estado de conexão %d é inválido, provavelmente indicativo de corrupção de " "memória\n" -#: fe-connect.c:2737 fe-connect.c:2797 +#: fe-connect.c:2988 fe-connect.c:3048 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "PGEventProc \"%s\" falhou durante evento PGEVT_CONNRESET\n" -#: fe-connect.c:3142 +#: fe-connect.c:3393 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" msgstr "URL LDAP \"%s\" é inválida: esquema deve ser ldap://\n" -#: fe-connect.c:3157 +#: fe-connect.c:3408 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "URL LDAP \"%s\" é inválida: faltando nome distinto\n" -#: fe-connect.c:3168 fe-connect.c:3221 +#: fe-connect.c:3419 fe-connect.c:3472 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "URL LDAP \"%s\" é inválida: deve ter exatamente um atributo\n" -#: fe-connect.c:3178 fe-connect.c:3235 +#: fe-connect.c:3429 fe-connect.c:3486 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" msgstr "URL LDAP \"%s\" é inválida: deve ter escopo de busca (base/one/sub)\n" -#: fe-connect.c:3189 +#: fe-connect.c:3440 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "URL LDAP \"%s\" é inválida: nenhum filtro\n" -#: fe-connect.c:3210 +#: fe-connect.c:3461 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "URL LDAP \"%s\" é inválida: número de porta é inválido\n" -#: fe-connect.c:3244 +#: fe-connect.c:3495 msgid "could not create LDAP structure\n" msgstr "não pôde criar estrutura LDAP\n" -#: fe-connect.c:3286 +#: fe-connect.c:3537 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "busca em servidor LDAP falhou: %s\n" -#: fe-connect.c:3297 +#: fe-connect.c:3548 msgid "more than one entry found on LDAP lookup\n" msgstr "mais de um registro encontrado na busca no LDAP\n" -#: fe-connect.c:3298 fe-connect.c:3310 +#: fe-connect.c:3549 fe-connect.c:3561 msgid "no entry found on LDAP lookup\n" msgstr "nenhum registro encontrado na busca no LDAP\n" -#: fe-connect.c:3321 fe-connect.c:3334 +#: fe-connect.c:3572 fe-connect.c:3585 msgid "attribute has no values on LDAP lookup\n" msgstr "atributo não tem valores na busca no LDAP\n" -#: fe-connect.c:3385 fe-connect.c:3403 fe-connect.c:3810 +#: fe-connect.c:3637 fe-connect.c:3656 fe-connect.c:4067 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "faltando \"=\" depois de \"%s\" na cadeia de caracteres de conexão\n" -#: fe-connect.c:3466 fe-connect.c:3892 fe-connect.c:4076 +#: fe-connect.c:3720 fe-connect.c:4149 fe-connect.c:4333 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "opção de conexão \"%s\" é inválida\n" -#: fe-connect.c:3479 fe-connect.c:3859 +#: fe-connect.c:3736 fe-connect.c:4116 msgid "unterminated quoted string in connection info string\n" msgstr "" "cadeia de caracteres entre aspas não foi terminada na cadeia de caracteres " "de conexão\n" -#: fe-connect.c:3518 +#: fe-connect.c:3775 msgid "could not get home directory to locate service definition file" msgstr "" "não pôde obter diretório base do usuário para localizar arquivo de definição " "de serviço" -#: fe-connect.c:3551 +#: fe-connect.c:3808 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "definição de serviço \"%s\" não foi encontrado\n" -#: fe-connect.c:3574 +#: fe-connect.c:3831 #, c-format msgid "service file \"%s\" not found\n" msgstr "arquivo de serviço \"%s\" não foi encontrado\n" -#: fe-connect.c:3587 +#: fe-connect.c:3844 #, c-format msgid "line %d too long in service file \"%s\"\n" msgstr "linha %d é muito longa no arquivo de serviço \"%s\"\n" -#: fe-connect.c:3658 fe-connect.c:3685 +#: fe-connect.c:3915 fe-connect.c:3942 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "erro de sintaxe no arquivo de serviço \"%s\", linha %d\n" -#: fe-connect.c:4352 +#: fe-connect.c:4609 msgid "connection pointer is NULL\n" msgstr "ponteiro da conexão é NULO\n" -#: fe-connect.c:4625 +#: fe-connect.c:4886 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" msgstr "AVISO: arquivo de senhas \"%s\" não é um arquivo no formato texto\n" -#: fe-connect.c:4634 +#: fe-connect.c:4895 #, c-format msgid "" "WARNING: password file \"%s\" has group or world access; permissions should " @@ -370,63 +408,67 @@ msgstr "" "AVISO: arquivo de senhas \"%s\" tem acesso de leitura para outros ou grupo; " "permissões devem ser u=rw (0600) ou menos que isso\n" -#: fe-connect.c:4722 +#: fe-connect.c:4983 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "senha obtida do arquivo \"%s\"\n" -#: fe-exec.c:827 +#: fe-exec.c:810 msgid "NOTICE" msgstr "NOTA" -#: fe-exec.c:1014 fe-exec.c:1071 fe-exec.c:1111 +#: fe-exec.c:997 fe-exec.c:1054 fe-exec.c:1094 msgid "command string is a null pointer\n" msgstr "cadeia de caracteres do comando é um ponteiro nulo\n" -#: fe-exec.c:1104 fe-exec.c:1199 +#: fe-exec.c:1087 fe-exec.c:1182 msgid "statement name is a null pointer\n" msgstr "nome do comando é um ponteiro nulo\n" -#: fe-exec.c:1119 fe-exec.c:1273 fe-exec.c:1928 fe-exec.c:2125 +#: fe-exec.c:1102 fe-exec.c:1256 fe-exec.c:1925 fe-exec.c:2123 msgid "function requires at least protocol version 3.0\n" msgstr "função requer pelo menos a versão 3.0 do protocolo\n" -#: fe-exec.c:1230 +#: fe-exec.c:1213 msgid "no connection to the server\n" msgstr "sem conexão ao servidor\n" -#: fe-exec.c:1237 +#: fe-exec.c:1220 msgid "another command is already in progress\n" msgstr "outro comando já está em execução\n" -#: fe-exec.c:1349 +#: fe-exec.c:1332 msgid "length must be given for binary parameter\n" msgstr "tamanho deve ser informado para um parâmetro binário\n" -#: fe-exec.c:1596 +#: fe-exec.c:1585 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "asyncStatus inesperado: %d\n" -#: fe-exec.c:1616 +#: fe-exec.c:1605 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" msgstr "PGEventProc \"%s\" falhou durante evento PGEVT_RESULTCREATE\n" -#: fe-exec.c:1746 +#: fe-exec.c:1735 msgid "COPY terminated by new PQexec" msgstr "COPY terminado por novo PQexec" -#: fe-exec.c:1754 +#: fe-exec.c:1743 msgid "COPY IN state must be terminated first\n" msgstr "estado de COPY IN deve ser terminado primeiro\n" -#: fe-exec.c:1774 +#: fe-exec.c:1763 msgid "COPY OUT state must be terminated first\n" msgstr "estado de COPY OUT deve ser terminado primeiro\n" -#: fe-exec.c:2016 fe-exec.c:2082 fe-exec.c:2167 fe-protocol2.c:1172 -#: fe-protocol3.c:1557 +#: fe-exec.c:1771 +msgid "PQexec not allowed during COPY BOTH\n" +msgstr "PQexec não é permitido durante COPY BOTH\n" + +#: fe-exec.c:2014 fe-exec.c:2080 fe-exec.c:2167 fe-protocol2.c:1237 +#: fe-protocol3.c:1569 msgid "no COPY in progress\n" msgstr "nenhum COPY está em execução\n" @@ -470,78 +512,74 @@ msgstr "não pode determinar OID da função lo_truncate\n" msgid "cannot determine OID of function lo_create\n" msgstr "não pode determinar OID da função lo_create\n" -#: fe-lobj.c:525 fe-lobj.c:624 +#: fe-lobj.c:525 fe-lobj.c:634 #, c-format msgid "could not open file \"%s\": %s\n" msgstr "não pôde abrir arquivo \"%s\": %s\n" -#: fe-lobj.c:575 +#: fe-lobj.c:580 #, c-format msgid "could not read from file \"%s\": %s\n" msgstr "não pôde ler do arquivo \"%s\": %s\n" -#: fe-lobj.c:639 fe-lobj.c:663 +#: fe-lobj.c:654 fe-lobj.c:678 #, c-format msgid "could not write to file \"%s\": %s\n" msgstr "não pôde escrever no arquivo \"%s\": %s\n" -#: fe-lobj.c:744 +#: fe-lobj.c:759 msgid "query to initialize large object functions did not return data\n" msgstr "" "consulta para inicializar funções de objeto grande não retornou dados\n" -#: fe-lobj.c:785 +#: fe-lobj.c:800 msgid "cannot determine OID of function lo_open\n" msgstr "não pode determinar OID da função lo_open\n" -#: fe-lobj.c:792 +#: fe-lobj.c:807 msgid "cannot determine OID of function lo_close\n" msgstr "não pode determinar OID da função lo_close\n" -#: fe-lobj.c:799 +#: fe-lobj.c:814 msgid "cannot determine OID of function lo_creat\n" msgstr "não pode determinar OID da função lo_creat\n" -#: fe-lobj.c:806 +#: fe-lobj.c:821 msgid "cannot determine OID of function lo_unlink\n" msgstr "não pode determinar OID da função lo_unlink\n" -#: fe-lobj.c:813 +#: fe-lobj.c:828 msgid "cannot determine OID of function lo_lseek\n" msgstr "não pode determinar OID da função lo_lseek\n" -#: fe-lobj.c:820 +#: fe-lobj.c:835 msgid "cannot determine OID of function lo_tell\n" msgstr "não pode determinar OID da função lo_tell\n" -#: fe-lobj.c:827 +#: fe-lobj.c:842 msgid "cannot determine OID of function loread\n" msgstr "não pode determinar OID da função loread\n" -#: fe-lobj.c:834 +#: fe-lobj.c:849 msgid "cannot determine OID of function lowrite\n" msgstr "não pode determinar OID da função lowrite\n" -#: fe-misc.c:262 +#: fe-misc.c:270 #, c-format msgid "integer of size %lu not supported by pqGetInt" msgstr "inteiro de tamanho %lu não é suportado por pqGetInt" -#: fe-misc.c:298 +#: fe-misc.c:306 #, c-format msgid "integer of size %lu not supported by pqPutInt" msgstr "inteiro de tamanho %lu não é suportado por pqPutInt" -#: fe-misc.c:578 fe-misc.c:780 +#: fe-misc.c:585 fe-misc.c:784 msgid "connection not open\n" msgstr "conexão não está aberta\n" -#: fe-misc.c:643 fe-misc.c:733 -#, c-format -msgid "could not receive data from server: %s\n" -msgstr "não pôde receber dados do servidor: %s\n" - -#: fe-misc.c:750 fe-misc.c:828 +#: fe-misc.c:711 fe-secure.c:387 fe-secure.c:466 fe-secure.c:547 +#: fe-secure.c:655 msgid "" "server closed the connection unexpectedly\n" "\tThis probably means the server terminated abnormally\n" @@ -551,50 +589,45 @@ msgstr "" "\tIsto provavelmente significa que o servidor terminou de forma anormal\n" "\tantes ou durante o processamento do pedido.\n" -#: fe-misc.c:845 -#, c-format -msgid "could not send data to server: %s\n" -msgstr "não pôde enviar dados ao servidor: %s\n" - -#: fe-misc.c:964 +#: fe-misc.c:948 msgid "timeout expired\n" msgstr "tempo de espera expirado\n" -#: fe-misc.c:1009 +#: fe-misc.c:993 msgid "socket not open\n" msgstr "soquete não está aberto\n" -#: fe-misc.c:1032 +#: fe-misc.c:1016 #, c-format msgid "select() failed: %s\n" msgstr "select() falhou: %s\n" -#: fe-protocol2.c:89 +#: fe-protocol2.c:91 #, c-format msgid "invalid setenv state %c, probably indicative of memory corruption\n" msgstr "" "estado de setenv %c é inválido, provavelmente indicativo de corrupção de " "memória\n" -#: fe-protocol2.c:330 +#: fe-protocol2.c:390 #, c-format msgid "invalid state %c, probably indicative of memory corruption\n" msgstr "" "estado %c é inválido, provavelmente indicativo de corrupção de memória\n" -#: fe-protocol2.c:419 fe-protocol3.c:186 +#: fe-protocol2.c:479 fe-protocol3.c:186 #, c-format msgid "message type 0x%02x arrived from server while idle" msgstr "tipo de mensagem 0x%02x chegou do servidor enquanto estava ocioso" -#: fe-protocol2.c:462 +#: fe-protocol2.c:522 #, c-format msgid "unexpected character %c following empty query response (\"I\" message)" msgstr "" "caracter inesperado %c seguido de uma resposta de consulta vazia (mensagem " "\"I\")" -#: fe-protocol2.c:516 +#: fe-protocol2.c:576 msgid "" "server sent data (\"D\" message) without prior row description (\"T\" " "message)" @@ -602,7 +635,7 @@ msgstr "" "servidor enviou dados (mensagem \"D\") sem antes enviar descrição de " "registro (mensagem \"T\")" -#: fe-protocol2.c:532 +#: fe-protocol2.c:592 msgid "" "server sent binary data (\"B\" message) without prior row description (\"T\" " "message)" @@ -610,26 +643,26 @@ msgstr "" "servidor enviou dados binários (mensagem \"B\") sem antes enviar descrição " "de registro (mensagem \"T\")" -#: fe-protocol2.c:547 fe-protocol3.c:382 +#: fe-protocol2.c:612 fe-protocol3.c:388 #, c-format msgid "unexpected response from server; first received character was \"%c\"\n" msgstr "" "resposta inesperada do servidor; primeiro caracter recebido foi \"%c\"\n" -#: fe-protocol2.c:768 fe-protocol3.c:701 +#: fe-protocol2.c:833 fe-protocol3.c:707 msgid "out of memory for query result\n" msgstr "sem memória para resultado da consulta\n" -#: fe-protocol2.c:1215 fe-protocol3.c:1625 +#: fe-protocol2.c:1280 fe-protocol3.c:1637 #, c-format msgid "%s" msgstr "%s" -#: fe-protocol2.c:1227 +#: fe-protocol2.c:1292 msgid "lost synchronization with server, resetting connection" msgstr "perda de sincronismo com o servidor, reiniciando conexão" -#: fe-protocol2.c:1361 fe-protocol2.c:1393 fe-protocol3.c:1828 +#: fe-protocol2.c:1426 fe-protocol2.c:1458 fe-protocol3.c:1840 #, c-format msgid "protocol error: id=0x%x\n" msgstr "erro de protocolo: id=0x%x\n" @@ -642,153 +675,175 @@ msgstr "" "servidor enviou dados (mensagem \"D\") sem antes enviar descrição de " "registro (mensagem \"T\")\n" -#: fe-protocol3.c:403 +#: fe-protocol3.c:409 #, c-format msgid "message contents do not agree with length in message type \"%c\"\n" msgstr "" "conteúdo da mensagem não está de acordo com o tamanho no tipo de mensagem " "\"%c\"\n" -#: fe-protocol3.c:424 +#: fe-protocol3.c:430 #, c-format msgid "lost synchronization with server: got message type \"%c\", length %d\n" msgstr "" "perda de sincronismo com o servidor: recebeu tipo de mensagem \"%c\", " "tamanho %d\n" -#: fe-protocol3.c:646 +#: fe-protocol3.c:652 msgid "unexpected field count in \"D\" message\n" msgstr "contagem de campos inesperada em mensagem \"D\"\n" #. translator: %s represents a digit string -#: fe-protocol3.c:788 fe-protocol3.c:807 +#: fe-protocol3.c:798 fe-protocol3.c:817 #, c-format msgid " at character %s" msgstr " no caracter %s" -#: fe-protocol3.c:820 +#: fe-protocol3.c:830 #, c-format msgid "DETAIL: %s\n" msgstr "DETALHE: %s\n" -#: fe-protocol3.c:823 +#: fe-protocol3.c:833 #, c-format msgid "HINT: %s\n" msgstr "DICA: %s\n" -#: fe-protocol3.c:826 +#: fe-protocol3.c:836 #, c-format msgid "QUERY: %s\n" msgstr "CONSULTA: %s\n" -#: fe-protocol3.c:829 +#: fe-protocol3.c:839 #, c-format msgid "CONTEXT: %s\n" msgstr "CONTEXTO: %s\n" -#: fe-protocol3.c:841 +#: fe-protocol3.c:851 msgid "LOCATION: " msgstr "LOCAL: " -#: fe-protocol3.c:843 +#: fe-protocol3.c:853 #, c-format msgid "%s, " msgstr "%s, " -#: fe-protocol3.c:845 +#: fe-protocol3.c:855 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: fe-protocol3.c:1069 +#: fe-protocol3.c:1079 #, c-format msgid "LINE %d: " msgstr "LINHA %d: " -#: fe-protocol3.c:1453 +#: fe-protocol3.c:1465 msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline: não está fazendo COPY OUT de texto\n" -#: fe-secure.c:265 +#: fe-secure.c:271 fe-secure.c:1126 fe-secure.c:1346 +#, c-format +msgid "could not acquire mutex: %s\n" +msgstr "não pôde obter mutex: %s\n" + +#: fe-secure.c:283 #, c-format msgid "could not establish SSL connection: %s\n" msgstr "não pôde estabelecer conexão SSL: %s\n" -#: fe-secure.c:349 fe-secure.c:436 fe-secure.c:1162 +#: fe-secure.c:392 fe-secure.c:552 fe-secure.c:1464 #, c-format msgid "SSL SYSCALL error: %s\n" msgstr "Erro de SYSCALL SSL: %s\n" -#: fe-secure.c:355 fe-secure.c:442 fe-secure.c:1166 +#: fe-secure.c:399 fe-secure.c:559 fe-secure.c:1468 msgid "SSL SYSCALL error: EOF detected\n" msgstr "Erro de SYSCALL SSL: EOF detectado\n" -#: fe-secure.c:367 fe-secure.c:453 fe-secure.c:1175 +#: fe-secure.c:410 fe-secure.c:570 fe-secure.c:1477 #, c-format msgid "SSL error: %s\n" msgstr "Erro de SSL: %s\n" -#: fe-secure.c:377 fe-secure.c:463 fe-secure.c:1184 +#: fe-secure.c:424 fe-secure.c:584 +msgid "SSL connection has been closed unexpectedly\n" +msgstr "conexão SSL foi fechada inesperadamente\n" + +#: fe-secure.c:430 fe-secure.c:590 fe-secure.c:1486 #, c-format msgid "unrecognized SSL error code: %d\n" msgstr "código de erro SSL desconhecido: %d\n" -#: fe-secure.c:601 +#: fe-secure.c:474 +#, c-format +msgid "could not receive data from server: %s\n" +msgstr "não pôde receber dados do servidor: %s\n" + +#: fe-secure.c:662 +#, c-format +msgid "could not send data to server: %s\n" +msgstr "não pôde enviar dados ao servidor: %s\n" + +#: fe-secure.c:782 fe-secure.c:799 +msgid "could not get server common name from server certificate\n" +msgstr "não pôde obter nome do servidor a partir do certificado do servidor\n" + +#: fe-secure.c:812 +msgid "SSL certificate's common name contains embedded null\n" +msgstr "nome comum do certificado SSL contém nulo embutido\n" + +#: fe-secure.c:824 msgid "host name must be specified for a verified SSL connection\n" -msgstr "nome da máquina deve ser especificado para uma conexão SSL verificada\n" +msgstr "" +"nome da máquina deve ser especificado para uma conexão SSL verificada\n" -#: fe-secure.c:620 +#: fe-secure.c:838 #, c-format msgid "server common name \"%s\" does not match host name \"%s\"\n" msgstr "nome do servidor \"%s\" não corresponde ao nome da máquina \"%s\"\n" -#: fe-secure.c:752 +#: fe-secure.c:973 #, c-format msgid "could not create SSL context: %s\n" msgstr "não pôde criar contexto SSL: %s\n" -#: fe-secure.c:843 -msgid "could not get home directory to locate client certificate files\n" -msgstr "" -"não pôde obter diretório base do usuário para localizar certificados do " -"cliente\n" - -#: fe-secure.c:868 +#: fe-secure.c:1096 #, c-format msgid "could not open certificate file \"%s\": %s\n" msgstr "não pôde abrir certificado \"%s\": %s\n" -#: fe-secure.c:893 fe-secure.c:903 +#: fe-secure.c:1135 fe-secure.c:1150 #, c-format msgid "could not read certificate file \"%s\": %s\n" msgstr "não pôde ler certificado \"%s\": %s\n" -#: fe-secure.c:940 +#: fe-secure.c:1205 #, c-format msgid "could not load SSL engine \"%s\": %s\n" msgstr "não pôde carregar mecanismo SSL \"%s\": %s\n" -#: fe-secure.c:952 +#: fe-secure.c:1217 #, c-format msgid "could not initialize SSL engine \"%s\": %s\n" msgstr "não pôde inicializar mecanismo SSL \"%s\": %s\n" -#: fe-secure.c:968 +#: fe-secure.c:1233 #, c-format msgid "could not read private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "não pôde ler chave privada SSL \"%s\" do mecanismo \"%s\": %s\n" -#: fe-secure.c:982 +#: fe-secure.c:1247 #, c-format msgid "could not load private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "não pôde carregar chave privada SSL \"%s\" do mecanismo \"%s\": %s\n" -#: fe-secure.c:1017 +#: fe-secure.c:1284 #, c-format msgid "certificate present, but not private key file \"%s\"\n" msgstr "certificado presente, mas não a chave privada \"%s\"\n" -#: fe-secure.c:1025 +#: fe-secure.c:1292 #, c-format msgid "" "private key file \"%s\" has group or world access; permissions should be " @@ -797,27 +852,38 @@ msgstr "" "chave privada \"%s\" tem acesso de leitura para outros ou grupo; permissões " "devem ser u=rw (0600) ou menos que isso\n" -#: fe-secure.c:1036 +#: fe-secure.c:1303 #, c-format msgid "could not load private key file \"%s\": %s\n" msgstr "não pôde carregar arquivo contendo chave privada \"%s\": %s\n" -#: fe-secure.c:1050 +#: fe-secure.c:1317 #, c-format msgid "certificate does not match private key file \"%s\": %s\n" msgstr "certificado não corresponde a chave privada \"%s\": %s\n" -#: fe-secure.c:1075 +#: fe-secure.c:1355 #, c-format msgid "could not read root certificate file \"%s\": %s\n" msgstr "não pôde ler certificado raiz \"%s\": %s\n" -#: fe-secure.c:1099 +#: fe-secure.c:1385 #, c-format msgid "SSL library does not support CRL certificates (file \"%s\")\n" msgstr "biblioteca SSL não suporta certificados CRL (arquivo \"%s\")\n" -#: fe-secure.c:1120 +#: fe-secure.c:1418 +msgid "" +"could not get home directory to locate root certificate file\n" +"Either provide the file or change sslmode to disable server certificate " +"verification.\n" +msgstr "" +"não pôde obter diretório base do usuário para localizar arquivo do " +"certificado\n" +"Forneça um arquivo ou mude o sslmode para desabilitar a verificação de " +"certificado do servidor.\n" + +#: fe-secure.c:1422 #, c-format msgid "" "root certificate file \"%s\" does not exist\n" @@ -828,20 +894,16 @@ msgstr "" "Forneça um arquivo ou mude o sslmode para desabilitar a verificação de " "certificado do servidor.\n" -#: fe-secure.c:1203 +#: fe-secure.c:1505 #, c-format msgid "certificate could not be obtained: %s\n" msgstr "certificado não pôde ser obtido: %s\n" -#: fe-secure.c:1231 -msgid "SSL certificate's common name contains embedded null\n" -msgstr "nome comum do certificado SSL contém nulo embutido\n" - -#: fe-secure.c:1307 +#: fe-secure.c:1582 msgid "no SSL error reported" msgstr "nenhum erro SSL relatado" -#: fe-secure.c:1316 +#: fe-secure.c:1591 #, c-format msgid "SSL error code %lu" msgstr "código de erro SSL %lu" diff --git a/src/interfaces/libpq/po/ru.po b/src/interfaces/libpq/po/ru.po index 8f15a11c5d..3e90914d12 100644 --- a/src/interfaces/libpq/po/ru.po +++ b/src/interfaces/libpq/po/ru.po @@ -2,499 +2,490 @@ # LIBPQ Translated Messages into the Russian Language (UTF-8) # # Copyright (c) 2001-2004 Serguei A. Mokhov, mokhov@cs.concordia.ca +# Copyright (c) 2012 Alexander Lakhin # Distributed under the same licensing terms as PostgreSQL itself. # # pgtranslation Id: libpq.po,v 1.4 2010/12/07 21:22:21 petere Exp $ # # ChangeLog: -# - November, 2010: Updates for PostgreSQL 9 by Andrey Sudnik -# - January, 2005: Corrections and improvements by Oleg Bartunov -# - March 27 - November 1, 2004: Updates for 8.0; -# - July 24 - October 5, 2003: Updates for 7.4.*; -# - Januray 2, 2002: Completed SSL translation, Serguei A. Mokhov -# - October 12, 2002: Post-7.3beta2 fuzzy translation fixes, Serguei A. Mokhov -# - September 7, 2002: Complete post-7.3beta1 Translation, Serguei A. Mokhov -# - August 2001 - August 2002: Initial translation and maintenance, Serguei A. Mokhov # +# - April 2, 2012: Bug fixes. Alexander Lakhin . +# - February 22, 2012: Backporting 9.1 translation to 8.4. Alexander Lakhin . +# - February 17, 2012: complete translation for 9.1. Alexander Lakhin . +# - November, 2010: Updates for PostgreSQL 9 by Andrey Sudnik . +# - January, 2005: Corrections and improvements by Oleg Bartunov . +# - March 27 - November 1, 2004: Updates for 8.0; . +# - July 24 - October 5, 2003: Updates for 7.4.*; . +# - Januray 2, 2002: Completed SSL translation, Serguei A. Mokhov . +# - October 12, 2002: Post-7.3beta2 fuzzy translation fixes, Serguei A. Mokhov . +# - September 7, 2002: Complete post-7.3beta1 Translation, Serguei A. Mokhov . +# - August 2001 - August 2002: Initial translation and maintenance, Serguei A. Mokhov msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9 current\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-11-29 18:43+0000\n" -"PO-Revision-Date: 2010-11-30 20:14+0600\n" -"Last-Translator: Andrey Sudnik \n" -"Language-Team: pgsql-rus\n" -"Language: \n" +"POT-Creation-Date: 2013-08-18 21:09+0000\n" +"PO-Revision-Date: 2013-08-19 09:20+0400\n" +"Last-Translator: Alexander Lakhin \n" +"Language-Team: Russian \n" +"Language: ru\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Russian\n" "X-Poedit-Country: RUSSIAN FEDERATION\n" "X-Poedit-SourceCharset: utf-8\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 1.5\n" -#: fe-auth.c:212 -#: fe-auth.c:432 -#: fe-auth.c:659 +#: fe-auth.c:210 fe-auth.c:429 fe-auth.c:656 msgid "host name must be specified\n" -msgstr "должно быть указано имя хоста\n" +msgstr "требуется указать имя сервера\n" -#: fe-auth.c:242 +#: fe-auth.c:240 #, c-format msgid "could not set socket to blocking mode: %s\n" -msgstr "не удалось установить сокет в блокирующий режим: %s\n" +msgstr "не удалось перевести сокет в блокирующий режим: %s\n" -#: fe-auth.c:260 -#: fe-auth.c:264 +#: fe-auth.c:258 fe-auth.c:262 #, c-format msgid "Kerberos 5 authentication rejected: %*s\n" -msgstr "аутентификация Kerberos 5 отклонена: %*s\n" +msgstr "аутентификация Kerberos 5 не пройдена: %*s\n" -#: fe-auth.c:290 +#: fe-auth.c:288 #, c-format msgid "could not restore non-blocking mode on socket: %s\n" -msgstr "не удалось восстановить неблокирующий режим для сокета: %s\n" +msgstr "не удалось вернуть сокет в неблокирующий режим: %s\n" -#: fe-auth.c:403 +#: fe-auth.c:400 msgid "GSSAPI continuation error" -msgstr "GSSAPI ошибка возобновления" +msgstr "ошибка продолжения в GSSAPI" -#: fe-auth.c:439 +#: fe-auth.c:436 msgid "duplicate GSS authentication request\n" msgstr "повторный запрос аутентификации GSS\n" -#: fe-auth.c:459 +#: fe-auth.c:456 msgid "GSSAPI name import error" -msgstr "GSSAPI ошибка импорта имени" +msgstr "ошибка импорта имени в GSSAPI" -#: fe-auth.c:545 +#: fe-auth.c:542 msgid "SSPI continuation error" -msgstr "SSPI ошибка возобновления" - -#: fe-auth.c:556 -#: fe-auth.c:630 -#: fe-auth.c:665 -#: fe-auth.c:762 -#: fe-connect.c:1970 -#: fe-connect.c:3369 -#: fe-connect.c:3586 -#: fe-connect.c:4002 -#: fe-connect.c:4011 -#: fe-connect.c:4148 -#: fe-connect.c:4194 -#: fe-connect.c:4212 -#: fe-connect.c:4291 -#: fe-connect.c:4361 -#: fe-connect.c:4407 -#: fe-connect.c:4425 -#: fe-exec.c:3121 -#: fe-exec.c:3286 -#: fe-lobj.c:696 -#: fe-protocol2.c:1027 -#: fe-protocol3.c:1425 +msgstr "ошибка продолжения в SSPI" + +#: fe-auth.c:553 fe-auth.c:627 fe-auth.c:662 fe-auth.c:757 fe-connect.c:1971 +#: fe-connect.c:3380 fe-connect.c:3598 fe-connect.c:4019 fe-connect.c:4028 +#: fe-connect.c:4165 fe-connect.c:4211 fe-connect.c:4229 fe-connect.c:4308 +#: fe-connect.c:4378 fe-connect.c:4424 fe-connect.c:4442 fe-exec.c:3121 +#: fe-exec.c:3286 fe-lobj.c:711 fe-protocol2.c:1092 fe-protocol3.c:1433 +#: fe-secure.c:789 fe-secure.c:1189 msgid "out of memory\n" -msgstr "недостаточно памяти\n" +msgstr "нехватка памяти\n" -#: fe-auth.c:645 +#: fe-auth.c:642 msgid "could not acquire SSPI credentials" -msgstr "не удалось получить SSPI удостоверение" +msgstr "не удалось получить удостоверение SSPI" -#: fe-auth.c:738 +#: fe-auth.c:733 msgid "SCM_CRED authentication method not supported\n" msgstr "аутентификация SCM_CRED не поддерживается\n" -#: fe-auth.c:812 +#: fe-auth.c:807 msgid "Kerberos 4 authentication not supported\n" msgstr "аутентификация Kerberos 4 не поддерживается\n" -#: fe-auth.c:828 +#: fe-auth.c:823 msgid "Kerberos 5 authentication not supported\n" msgstr "аутентификация Kerberos 5 не поддерживается\n" #: fe-auth.c:895 msgid "GSSAPI authentication not supported\n" -msgstr "аутентификация GSSAPI не поддерживается\n" +msgstr "аутентификация через GSSAPI не поддерживается\n" -#: fe-auth.c:919 +#: fe-auth.c:927 msgid "SSPI authentication not supported\n" -msgstr "аутентификация SSPI не поддерживается\n" +msgstr "аутентификация через SSPI не поддерживается\n" -#: fe-auth.c:926 +#: fe-auth.c:935 msgid "Crypt authentication not supported\n" -msgstr "Шифрованая аутентификация не поддерживается\n" +msgstr "аутентификация Crypt не поддерживается\n" -#: fe-auth.c:953 +#: fe-auth.c:962 #, c-format msgid "authentication method %u not supported\n" msgstr "метод аутентификации %u не поддерживается\n" -#: fe-connect.c:759 +#: fe-connect.c:758 #, c-format msgid "invalid sslmode value: \"%s\"\n" msgstr "неверное значение sslmode: \"%s\"\n" -#: fe-connect.c:780 +#: fe-connect.c:779 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" -msgstr "значение sslmode \"%s\" неверно, если поддержка SSL не скомпилирована\n" +msgstr "значение sslmode \"%s\" недопустимо для сборки без поддержки SSL\n" -#: fe-connect.c:963 +#: fe-connect.c:972 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" -msgstr "не удалось установить сокет в режим TCP передачи без задержки: %s\n" +msgstr "не удалось перевести сокет в режим TCP-передачи без задержки: %s\n" -#: fe-connect.c:993 +#: fe-connect.c:1002 #, c-format msgid "" "could not connect to server: %s\n" "\tIs the server running locally and accepting\n" "\tconnections on Unix domain socket \"%s\"?\n" msgstr "" -"не удалось соединиться с сервером: %s\n" -"\tРаботает ли сервер локально и принимает\n" -"\tсоединения через сокет Unix-домена \"%s\"?\n" +"не удалось подключиться к серверу: %s\n" +"\tОн действительно работает локально и принимает\n" +"\tсоединения через доменный сокет \"%s\"?\n" + +#: fe-connect.c:1057 +#, c-format +msgid "" +"could not connect to server: %s\n" +"\tIs the server running on host \"%s\" (%s) and accepting\n" +"\tTCP/IP connections on port %s?\n" +msgstr "" +"не удалось подключиться к серверу: %s\n" +"\tОн действительно работает по адресу \"%s\" (%s)\n" +"\t и принимает TCP-соединения (порт %s)?\n" -#: fe-connect.c:1037 +#: fe-connect.c:1066 #, c-format msgid "" "could not connect to server: %s\n" -"\tIs the server running on host \"%s\"%s%s%s and accepting\n" +"\tIs the server running on host \"%s\" and accepting\n" "\tTCP/IP connections on port %s?\n" msgstr "" -"не удалось подсоединиться к серверу: %s\n" -"\tРаботает ли сервер на хосте \"%s\"%s%s%s и принимает ли\n" -"\tTCP/IP соединения по порту %s?\n" +"не удалось подключиться к серверу: %s\n" +"\tОн действительно работает по адресу \"%s\"\n" +"\t и принимает TCP-соединения (порт %s)?\n" -#: fe-connect.c:1096 +#: fe-connect.c:1117 #, c-format msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" -msgstr "setsockopt(TCP_KEEPIDLE) не удался: %s\n" +msgstr "ошибка в setsockopt(TCP_KEEPIDLE): %s\n" -#: fe-connect.c:1109 +#: fe-connect.c:1130 #, c-format msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" -msgstr "setsockopt(TCP_KEEPALIVE) не удался: %s\n" +msgstr "ошибка в setsockopt(TCP_KEEPALIVE): %s\n" -#: fe-connect.c:1141 +#: fe-connect.c:1162 #, c-format msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" -msgstr "setsockopt(TCP_KEEPINTVL) не удался: %s\n" +msgstr "ошибка в setsockopt(TCP_KEEPINTVL): %s\n" -#: fe-connect.c:1173 +#: fe-connect.c:1194 #, c-format msgid "setsockopt(TCP_KEEPCNT) failed: %s\n" -msgstr "setsockopt(TCP_KEEPCNT) не удался: %s\n" +msgstr "ошибка в setsockopt(TCP_KEEPCNT): %s\n" -#: fe-connect.c:1222 +#: fe-connect.c:1242 #, c-format msgid "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" -msgstr "WSAIoctl(SIO_KEEPALIVE_VALS) потерпел неудачу: %ui\n" +msgstr "ошибка в WSAIoctl(SIO_KEEPALIVE_VALS): %ui\n" -#: fe-connect.c:1274 +#: fe-connect.c:1294 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "неверный номер порта: \"%s\"\n" -#: fe-connect.c:1317 +#: fe-connect.c:1327 +#, c-format +msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" +msgstr "длина пути доменного сокета \"%s\" превышает предел (%d байт)\n" + +#: fe-connect.c:1346 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" -msgstr "не удалось преобразовать имя хоста \"%s\" в адрес: %s\n" +msgstr "преобразовать имя \"%s\" в адрес не удалось: %s\n" -#: fe-connect.c:1321 +#: fe-connect.c:1350 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" -msgstr "не удалось преобразовать название директории сокетов UNIX-домена \"%s\" в адрес: %s\n" +msgstr "" +"преобразовать путь к доменному сокету UNIX \"%s\" в адрес не удалось: %s\n" -#: fe-connect.c:1531 +#: fe-connect.c:1560 msgid "invalid connection state, probably indicative of memory corruption\n" -msgstr "неверное состояние соединения, возможный указатель на нарушение целостности памяти\n" +msgstr "неверное состояние соединения - возможно разрушение памяти\n" -#: fe-connect.c:1572 +#: fe-connect.c:1601 #, c-format msgid "could not create socket: %s\n" msgstr "не удалось создать сокет: %s\n" -#: fe-connect.c:1595 +#: fe-connect.c:1624 #, c-format msgid "could not set socket to non-blocking mode: %s\n" -msgstr "не удалось установить сокет в неблокирующий режим: %s\n" +msgstr "не удалось перевести сокет в неблокирующий режим: %s\n" -#: fe-connect.c:1607 +#: fe-connect.c:1636 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" -msgstr "не удалось установить сокет в режим закрытия-на-выполнение (close-on-exec): %s\n" +msgstr "" +"не удалось перевести сокет в режим закрытия при выполнении (close-on-exec): " +"%s\n" -#: fe-connect.c:1625 +#: fe-connect.c:1656 msgid "keepalives parameter must be an integer\n" -msgstr "keepalives параметр должен быть целым числом\n" +msgstr "параметр keepalives должен быть целым числом\n" -#: fe-connect.c:1638 +#: fe-connect.c:1669 #, c-format msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" -msgstr "setsockopt(SO_KEEPALIVE) не удался: %s\n" +msgstr "ошибка в setsockopt(SO_KEEPALIVE): %s\n" -#: fe-connect.c:1779 +#: fe-connect.c:1811 #, c-format msgid "could not get socket error status: %s\n" msgstr "не удалось получить статус ошибки сокета: %s\n" -#: fe-connect.c:1817 +#: fe-connect.c:1849 #, c-format msgid "could not get client address from socket: %s\n" msgstr "не удалось получить адрес клиента из сокета: %s\n" -#: fe-connect.c:1849 -#: fe-connect.c:1863 -#: fe-connect.c:1875 -#, c-format -msgid "could not get peer credentials: %s\n" -msgstr "не удалось получить удостоверение peer-a: %s\n" +#: fe-connect.c:1890 +msgid "requirepeer parameter is not supported on this platform\n" +msgstr "параметр requirepeer не поддерживается в этой ОС\n" -#: fe-connect.c:1883 +#: fe-connect.c:1893 #, c-format -msgid "could not get effective UID from peer credentials: %s\n" -msgstr "не удалось получить эффективный UID из удостоверения peer-а: %s\n" +msgid "could not get peer credentials: %s\n" +msgstr "не удалось получить учётные данные сервера: %s\n" -#: fe-connect.c:1898 +#: fe-connect.c:1903 #, c-format msgid "local user with ID %d does not exist\n" msgstr "локальный пользователь с ID %d не существует\n" -#: fe-connect.c:1906 +#: fe-connect.c:1911 #, c-format msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" -msgstr "requirepeer задан как \"%s\", но настоящее имя пользователя peer-а \"%s\"\n" - -#: fe-connect.c:1912 -msgid "requirepeer parameter is not supported on this platform\n" -msgstr "параметр requirepeer не поддерживаются на этой платформе\n" +msgstr "" +"requirepeer допускает подключение только к \"%s\", но сервер работает под " +"именем \"%s\"\n" -#: fe-connect.c:1944 +#: fe-connect.c:1945 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "не удалось отправить пакет согласования SSL: %s\n" -#: fe-connect.c:1983 +#: fe-connect.c:1984 #, c-format msgid "could not send startup packet: %s\n" -msgstr "не удалось отправить начальный пакет: %s\n" +msgstr "не удалось отправить стартовый пакет: %s\n" -#: fe-connect.c:2050 -#: fe-connect.c:2069 +#: fe-connect.c:2054 msgid "server does not support SSL, but SSL was required\n" -msgstr "сервер не поддерживает SSL, но наличие SSL было необходимо\n" +msgstr "затребовано подключение через SSL, но сервер не поддерживает SSL\n" -#: fe-connect.c:2085 +#: fe-connect.c:2080 #, c-format msgid "received invalid response to SSL negotiation: %c\n" -msgstr "получен неверный ответ на согласование по SSL: %c\n" +msgstr "получен неверный ответ на согласование SSL: %c\n" -#: fe-connect.c:2161 -#: fe-connect.c:2194 +#: fe-connect.c:2159 fe-connect.c:2192 #, c-format msgid "expected authentication request from server, but received %c\n" -msgstr "ожидался запрос аутентификации от сервера, но было получено: %c\n" +msgstr "ожидался запрос аутентификации от сервера, но получено: %c\n" -#: fe-connect.c:2367 +#: fe-connect.c:2373 #, c-format msgid "out of memory allocating GSSAPI buffer (%i)" -msgstr "недостаточно памяти для аллоцирования GSSAPI буфера (%i)" +msgstr "недостаточно памяти для буфера GSSAPI (%i)" -#: fe-connect.c:2452 +#: fe-connect.c:2458 msgid "unexpected message from server during startup\n" -msgstr "неожиданное сообщение от сервера при запуске\n" +msgstr "неожиданное сообщение от сервера в начале работы\n" -#: fe-connect.c:2548 +#: fe-connect.c:2557 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" -msgstr "неверное состояние соединения %d, возможно, это признак нарушения целостности памяти\n" +msgstr "неверное состояние соединения %d - возможно разрушение памяти\n" -#: fe-connect.c:2977 -#: fe-connect.c:3037 +#: fe-connect.c:2988 fe-connect.c:3048 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" -msgstr "PGEventProc \"%s\" потерпел неудачу во время события PGEVT_CONNRESET\n" +msgstr "ошибка в PGEventProc \"%s\" при обработке события PGEVT_CONNRESET\n" -#: fe-connect.c:3382 +#: fe-connect.c:3393 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" -msgstr "некорректный LDAP URL \"%s\": схема должна быть ldap://\n" +msgstr "некорректный адрес LDAP \"%s\": схема должна быть ldap://\n" -#: fe-connect.c:3397 +#: fe-connect.c:3408 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" -msgstr "не корректный LDAP URL \"%s\": отсутствует уникальное имя\n" +msgstr "некорректный адрес LDAP \"%s\": отсутствует уникальное имя\n" -#: fe-connect.c:3408 -#: fe-connect.c:3461 +#: fe-connect.c:3419 fe-connect.c:3472 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" -msgstr "не корректный LDAP URL \"%s\": должен быть только один аттрибут\n" +msgstr "некорректный адрес LDAP \"%s\": должен быть только один атрибут\n" -#: fe-connect.c:3418 -#: fe-connect.c:3475 +#: fe-connect.c:3429 fe-connect.c:3486 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" -msgstr "не корректный LDAP URL \"%s\": должна быть границы поиска (base/one/sub)\n" +msgstr "" +"некорректный адрес LDAP \"%s\": не указана область поиска (base/one/sub)\n" -#: fe-connect.c:3429 +#: fe-connect.c:3440 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" -msgstr "не корректный LDAP URL \"%s\": нет фильтра\n" +msgstr "некорректный адрес LDAP \"%s\": нет фильтра\n" -#: fe-connect.c:3450 +#: fe-connect.c:3461 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" -msgstr "не корректный LDAP URL \"%s\": неверный номер порта\n" +msgstr "некорректный адрес LDAP \"%s\": неверный номер порта\n" -#: fe-connect.c:3484 +#: fe-connect.c:3495 msgid "could not create LDAP structure\n" -msgstr "не удалось создать LDAP структуру\n" +msgstr "не удалось создать структуру LDAP\n" -#: fe-connect.c:3526 +#: fe-connect.c:3537 #, c-format msgid "lookup on LDAP server failed: %s\n" -msgstr "поиск на LDAP сервере закончился неудачно: %s\n" +msgstr "ошибка поиска на сервере LDAP: %s\n" -#: fe-connect.c:3537 +#: fe-connect.c:3548 msgid "more than one entry found on LDAP lookup\n" -msgstr "более одного вхождения обнаружено при LDAP поиске\n" +msgstr "при поиске LDAP найдено более одного вхождения\n" -#: fe-connect.c:3538 -#: fe-connect.c:3550 +#: fe-connect.c:3549 fe-connect.c:3561 msgid "no entry found on LDAP lookup\n" -msgstr "ни одного вхождения не обнаружено при LDAP поиске\n" +msgstr "при поиске LDAP не найдено ничего\n" -#: fe-connect.c:3561 -#: fe-connect.c:3574 +#: fe-connect.c:3572 fe-connect.c:3585 msgid "attribute has no values on LDAP lookup\n" -msgstr "аттрибут не имеет значения при LDAP поиске\n" +msgstr "атрибут не содержит значений при поиске LDAP\n" -#: fe-connect.c:3625 -#: fe-connect.c:3643 -#: fe-connect.c:4050 +#: fe-connect.c:3637 fe-connect.c:3656 fe-connect.c:4067 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" -msgstr "отсутствует \"=\" после \"%s\" в строке соединения\n" +msgstr "в строке соединения нет \"=\" после \"%s\"\n" -#: fe-connect.c:3706 -#: fe-connect.c:4132 -#: fe-connect.c:4316 +#: fe-connect.c:3720 fe-connect.c:4149 fe-connect.c:4333 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "неверный параметр соединения \"%s\"\n" -#: fe-connect.c:3719 -#: fe-connect.c:4099 +#: fe-connect.c:3736 fe-connect.c:4116 msgid "unterminated quoted string in connection info string\n" -msgstr "неоконченная строка (не хватает кавычки) в строке соединения\n" +msgstr "в строке соединения не хватает закрывающей кавычки\n" -#: fe-connect.c:3758 +#: fe-connect.c:3775 msgid "could not get home directory to locate service definition file" -msgstr "не удалось получить домашнюю директорию, чтобы найти файл со служебными определениями" +msgstr "" +"не удалось получить домашний каталог для загрузки файла определений служб" -#: fe-connect.c:3791 +#: fe-connect.c:3808 #, c-format msgid "definition of service \"%s\" not found\n" -msgstr "определение сервиса \"%s\" не найдено\n" +msgstr "определение службы \"%s\" не найдено\n" -#: fe-connect.c:3814 +#: fe-connect.c:3831 #, c-format msgid "service file \"%s\" not found\n" -msgstr "служебный файл \"%s\" не найден\n" +msgstr "файл определений служб \"%s\" не найден\n" -#: fe-connect.c:3827 +#: fe-connect.c:3844 #, c-format msgid "line %d too long in service file \"%s\"\n" -msgstr "строка %d слишком длинная в служебном файле \"%s\"\n" +msgstr "слишком длинная строка (%d) в файле определений служб \"%s\"\n" -#: fe-connect.c:3898 -#: fe-connect.c:3925 +#: fe-connect.c:3915 fe-connect.c:3942 #, c-format msgid "syntax error in service file \"%s\", line %d\n" -msgstr "синтаксическая ошибка в служебном файле \"%s\", строка %d\n" +msgstr "синтаксическая ошибка в файле определения служб \"%s\" (строка %d)\n" -#: fe-connect.c:4592 +#: fe-connect.c:4609 msgid "connection pointer is NULL\n" -msgstr "указатель соединения является NULL\n" +msgstr "нулевой указатель соединения\n" -#: fe-connect.c:4865 +#: fe-connect.c:4886 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" -msgstr "ВНИМАНИЕ: файл паролей \"%s\" не обычный текстовый файл\n" +msgstr "ВНИМАНИЕ: файл паролей \"%s\" - не обычный файл\n" -#: fe-connect.c:4874 +#: fe-connect.c:4895 #, c-format -msgid "WARNING: password file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" -msgstr "ВНИМАНИЕ: файл с паролями \"%s\" имеет права на чтение для всех или для группы; права должны быть u=rw (0600) или меньше\n" +msgid "" +"WARNING: password file \"%s\" has group or world access; permissions should " +"be u=rw (0600) or less\n" +msgstr "" +"ВНИМАНИЕ: к файлу паролей \"%s\" имеют доступ все или группа; права должны " +"быть u=rw (0600) или более ограниченные\n" -#: fe-connect.c:4962 +#: fe-connect.c:4983 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "пароль получен из файла \"%s\"\n" -#: fe-exec.c:827 +#: fe-exec.c:810 msgid "NOTICE" -msgstr "NOTICE" +msgstr "ЗАМЕЧАНИЕ" -#: fe-exec.c:1014 -#: fe-exec.c:1071 -#: fe-exec.c:1111 +#: fe-exec.c:997 fe-exec.c:1054 fe-exec.c:1094 msgid "command string is a null pointer\n" -msgstr "командная строка является нулевым указателем\n" +msgstr "указатель на командную строку нулевой\n" -#: fe-exec.c:1104 -#: fe-exec.c:1199 +#: fe-exec.c:1087 fe-exec.c:1182 msgid "statement name is a null pointer\n" -msgstr "имя команды является нулевым указателем\n" +msgstr "указатель на имя оператора нулевой\n" -#: fe-exec.c:1119 -#: fe-exec.c:1273 -#: fe-exec.c:1928 -#: fe-exec.c:2125 +#: fe-exec.c:1102 fe-exec.c:1256 fe-exec.c:1925 fe-exec.c:2123 msgid "function requires at least protocol version 3.0\n" -msgstr "функция требует как минимум версию протокола 3.0\n" +msgstr "функция требует протокол минимум версии 3.0\n" -#: fe-exec.c:1230 +#: fe-exec.c:1213 msgid "no connection to the server\n" msgstr "нет соединения с сервером\n" -#: fe-exec.c:1237 +#: fe-exec.c:1220 msgid "another command is already in progress\n" -msgstr "другая команда уже выполняется\n" +msgstr "уже выполняется другая команда\n" -#: fe-exec.c:1349 +#: fe-exec.c:1332 msgid "length must be given for binary parameter\n" -msgstr "для бинарного параметра должа быть указана длина\n" +msgstr "для двоичного параметра должна быть указана длина\n" -#: fe-exec.c:1596 +#: fe-exec.c:1585 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "неожиданный asyncStatus: %d\n" -#: fe-exec.c:1616 +#: fe-exec.c:1605 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" -msgstr "PGEventProc \"%s\" порушился во время события PGEVT_RESULTCREATE\n" +msgstr "ошибка в PGEventProc \"%s\" при обработке события PGEVT_RESULTCREATE\n" -#: fe-exec.c:1746 +#: fe-exec.c:1735 msgid "COPY terminated by new PQexec" -msgstr "COPY прекращена новой PQexec" +msgstr "операция COPY прервана вызовом PQexec" -#: fe-exec.c:1754 +#: fe-exec.c:1743 msgid "COPY IN state must be terminated first\n" -msgstr "Сначала, состояние COPY IN должно завершиться\n" +msgstr "сначала должно завершиться состояние COPY IN\n" -#: fe-exec.c:1774 +#: fe-exec.c:1763 msgid "COPY OUT state must be terminated first\n" -msgstr "Сначала, состояние COPY OUT должно завершиться\n" +msgstr "сначала должно завершиться состояние COPY OUT\n" + +#: fe-exec.c:1771 +msgid "PQexec not allowed during COPY BOTH\n" +msgstr "вызов PQexec не допускается в процессе COPY BOTH\n" -#: fe-exec.c:2016 -#: fe-exec.c:2082 -#: fe-exec.c:2167 -#: fe-protocol2.c:1172 -#: fe-protocol3.c:1561 +#: fe-exec.c:2014 fe-exec.c:2080 fe-exec.c:2167 fe-protocol2.c:1237 +#: fe-protocol3.c:1569 msgid "no COPY in progress\n" -msgstr "COPY не выполняется\n" +msgstr "операция COPY не выполняется\n" #: fe-exec.c:2359 msgid "connection in wrong state\n" @@ -504,8 +495,7 @@ msgstr "соединение в неправильном состоянии\n" msgid "invalid ExecStatusType code" msgstr "неверный код ExecStatusType" -#: fe-exec.c:2454 -#: fe-exec.c:2477 +#: fe-exec.c:2454 fe-exec.c:2477 #, c-format msgid "column number %d is out of range 0..%d" msgstr "номер колонки %d вне диапазона 0..%d" @@ -523,443 +513,400 @@ msgstr "номер параметра %d вне диапазона 0..%d" #: fe-exec.c:2780 #, c-format msgid "could not interpret result from server: %s" -msgstr "не в состоянии интерпретировать ответ сервера: %s" +msgstr "не удалось интерпретировать ответ сервера: %s" -#: fe-exec.c:3019 -#: fe-exec.c:3103 +#: fe-exec.c:3019 fe-exec.c:3103 msgid "incomplete multibyte character\n" -msgstr "неполный мультибайтовый символ\n" +msgstr "неполный многобайтный символ\n" #: fe-lobj.c:152 msgid "cannot determine OID of function lo_truncate\n" -msgstr "не в состоянии определить OID функции lo_truncate\n" +msgstr "не удалось определить OID функции lo_truncate\n" #: fe-lobj.c:380 msgid "cannot determine OID of function lo_create\n" -msgstr "не в состоянии определить OID функции lo_create\n" +msgstr "не удалось определить OID функции lo_create\n" -#: fe-lobj.c:525 -#: fe-lobj.c:624 +#: fe-lobj.c:525 fe-lobj.c:634 #, c-format msgid "could not open file \"%s\": %s\n" -msgstr "не в состоянии открыть файл \"%s\": %s\n" +msgstr "не удалось открыть файл \"%s\": %s\n" -#: fe-lobj.c:575 +#: fe-lobj.c:580 #, c-format msgid "could not read from file \"%s\": %s\n" -msgstr "не в состоянии произвести чтение из файла \"%s\": %s\n" +msgstr "не удалось прочитать файл \"%s\": %s\n" -#: fe-lobj.c:639 -#: fe-lobj.c:663 +#: fe-lobj.c:654 fe-lobj.c:678 #, c-format msgid "could not write to file \"%s\": %s\n" -msgstr "не в состоянии призвести запись в файл \"%s\": %s\n" +msgstr "не удалось записать файл \"%s\": %s\n" -#: fe-lobj.c:744 +#: fe-lobj.c:759 msgid "query to initialize large object functions did not return data\n" -msgstr "запрос об инициализации функций для больших объектов (LOs) не вернул данных\n" +msgstr "запрос инициализации функций для больших объектов не вернул данные\n" -#: fe-lobj.c:785 +#: fe-lobj.c:800 msgid "cannot determine OID of function lo_open\n" -msgstr "не в состоянии определить OID функции lo_open\n" +msgstr "не удалось определить OID функции lo_open\n" -#: fe-lobj.c:792 +#: fe-lobj.c:807 msgid "cannot determine OID of function lo_close\n" -msgstr "не в состоянии определить OID функции lo_close\n" +msgstr "не удалось определить OID функции lo_close\n" -#: fe-lobj.c:799 +#: fe-lobj.c:814 msgid "cannot determine OID of function lo_creat\n" -msgstr "не в состоянии определить OID функции lo_creat\n" +msgstr "не удалось определить OID функции lo_creat\n" -#: fe-lobj.c:806 +#: fe-lobj.c:821 msgid "cannot determine OID of function lo_unlink\n" -msgstr "не в состоянии определить OID функции lo_unlink\n" +msgstr "не удалось определить OID функции lo_unlink\n" -#: fe-lobj.c:813 +#: fe-lobj.c:828 msgid "cannot determine OID of function lo_lseek\n" -msgstr "не в состоянии определить OID функции lo_lseek\n" +msgstr "не удалось определить OID функции lo_lseek\n" -#: fe-lobj.c:820 +#: fe-lobj.c:835 msgid "cannot determine OID of function lo_tell\n" -msgstr "не в состоянии определить OID функции lo_tell\n" +msgstr "не удалось определить OID функции lo_tell\n" -#: fe-lobj.c:827 +#: fe-lobj.c:842 msgid "cannot determine OID of function loread\n" -msgstr "не в состоянии определить OID функции loread\n" +msgstr "не удалось определить OID функции loread\n" -#: fe-lobj.c:834 +#: fe-lobj.c:849 msgid "cannot determine OID of function lowrite\n" -msgstr "не в состоянии определить OID функции lowrite\n" +msgstr "не удалось определить OID функции lowrite\n" -#: fe-misc.c:262 +#: fe-misc.c:270 #, c-format msgid "integer of size %lu not supported by pqGetInt" -msgstr "тип integer длиной %lu байт не поддерживается функцией pqGetInt" +msgstr "функция pqGetInt не поддерживает integer размером %lu байт" -#: fe-misc.c:298 +#: fe-misc.c:306 #, c-format msgid "integer of size %lu not supported by pqPutInt" -msgstr "тип integer длиной %lu байт не поддерживается функцией pqPutInt" +msgstr "функция pqPutInt не поддерживает integer размером %lu байт" -#: fe-misc.c:578 -#: fe-misc.c:780 +#: fe-misc.c:585 fe-misc.c:784 msgid "connection not open\n" msgstr "соединение не открыто\n" -#: fe-misc.c:643 -#: fe-misc.c:733 -#, c-format -msgid "could not receive data from server: %s\n" -msgstr "ошибка при получении данных с сервера: %s\n" - -#: fe-misc.c:750 -#: fe-misc.c:828 +#: fe-misc.c:711 fe-secure.c:387 fe-secure.c:466 fe-secure.c:547 +#: fe-secure.c:655 msgid "" "server closed the connection unexpectedly\n" "\tThis probably means the server terminated abnormally\n" "\tbefore or while processing the request.\n" msgstr "" "сервер неожиданно закрыл соединение\n" -"\tСкорее всего это означает, что сервер завершил работу со сбоем\n" +"\tСкорее всего сервер прекратил работу из-за сбоя\n" "\tдо или в процессе выполнения запроса.\n" -#: fe-misc.c:845 -#, c-format -msgid "could not send data to server: %s\n" -msgstr "не удалось послать данные серверу: %s\n" - -#: fe-misc.c:964 +#: fe-misc.c:948 msgid "timeout expired\n" -msgstr "интервал ожидания закончился\n" +msgstr "таймаут\n" -#: fe-misc.c:1009 +#: fe-misc.c:993 msgid "socket not open\n" msgstr "сокет не открыт\n" -#: fe-misc.c:1032 +#: fe-misc.c:1016 #, c-format msgid "select() failed: %s\n" -msgstr "select() не удался: %s\n" +msgstr "ошибка в select(): %s\n" -#: fe-protocol2.c:89 +#: fe-protocol2.c:91 #, c-format msgid "invalid setenv state %c, probably indicative of memory corruption\n" -msgstr "неверное состояние setenv %c, возможный указатель на нарушение целостности памяти\n" +msgstr "неверное состояние setenv %c - возможно разрушение памяти\n" -#: fe-protocol2.c:330 +#: fe-protocol2.c:390 #, c-format msgid "invalid state %c, probably indicative of memory corruption\n" -msgstr "неверное состояние %c, возможный указатель на нарушение целостности памяти\n" +msgstr "неверное состояние %c - возможно разрушение памяти\n" -#: fe-protocol2.c:419 -#: fe-protocol3.c:186 +#: fe-protocol2.c:479 fe-protocol3.c:186 #, c-format msgid "message type 0x%02x arrived from server while idle" -msgstr "сообщение типа 0x%02x прибыло от сервера во время простоя" +msgstr "от сервера во время простоя получено сообщение типа 0x%02x" -#: fe-protocol2.c:462 +#: fe-protocol2.c:522 #, c-format msgid "unexpected character %c following empty query response (\"I\" message)" msgstr "неожиданный символ %c вслед за пустым ответом (сообщение \"I\")" -#: fe-protocol2.c:516 -msgid "server sent data (\"D\" message) without prior row description (\"T\" message)" -msgstr "сервер отправил данные (сообщение \"D\") без предварительного строки описания (сообщение \"T\")" +#: fe-protocol2.c:576 +msgid "" +"server sent data (\"D\" message) without prior row description (\"T\" " +"message)" +msgstr "" +"сервер отправил данные (сообщение \"D\") без предварительного описания " +"строки (сообщение \"T\")" -#: fe-protocol2.c:532 -msgid "server sent binary data (\"B\" message) without prior row description (\"T\" message)" -msgstr "сервер отправил двоичные данные (сообщение \"B\") без предварительного строки описания (сообщение \"T\")" +#: fe-protocol2.c:592 +msgid "" +"server sent binary data (\"B\" message) without prior row description (\"T\" " +"message)" +msgstr "" +"сервер отправил двоичные данные (сообщение \"B\") без предварительного " +"описания строки (сообщение \"T\")" -#: fe-protocol2.c:547 -#: fe-protocol3.c:382 +#: fe-protocol2.c:612 fe-protocol3.c:388 #, c-format msgid "unexpected response from server; first received character was \"%c\"\n" msgstr "неожиданный ответ сервера; первый полученный символ: \"%c\"\n" -#: fe-protocol2.c:768 -#: fe-protocol3.c:701 +#: fe-protocol2.c:833 fe-protocol3.c:707 msgid "out of memory for query result\n" msgstr "недостаточно памяти для результата запроса\n" -#: fe-protocol2.c:1215 -#: fe-protocol3.c:1629 +#: fe-protocol2.c:1280 fe-protocol3.c:1637 #, c-format msgid "%s" msgstr "%s" -#: fe-protocol2.c:1227 +#: fe-protocol2.c:1292 msgid "lost synchronization with server, resetting connection" -msgstr "потеряна синхронизация с сервером; переустановка соединения" +msgstr "потеряна синхронизация с сервером; попытка восстановить соединение" -#: fe-protocol2.c:1361 -#: fe-protocol2.c:1393 -#: fe-protocol3.c:1832 +#: fe-protocol2.c:1426 fe-protocol2.c:1458 fe-protocol3.c:1840 #, c-format msgid "protocol error: id=0x%x\n" msgstr "ошибка протокола: id=0x%x\n" #: fe-protocol3.c:344 -msgid "server sent data (\"D\" message) without prior row description (\"T\" message)\n" -msgstr "сервер отправил данные (сообщение \"D\") без предварительного строки описания (сообщение \"T\")\n" +msgid "" +"server sent data (\"D\" message) without prior row description (\"T\" " +"message)\n" +msgstr "" +"сервер отправил данные (сообщение \"D\") без предварительного описания " +"строки (сообщение \"T\")\n" -#: fe-protocol3.c:403 +#: fe-protocol3.c:409 #, c-format msgid "message contents do not agree with length in message type \"%c\"\n" -msgstr "содержимое сообщения не согласуется с длиной в сообщении типа \"%c\"\n" +msgstr "содержимое не соответствует длине в сообщении типа \"%c\"\n" -#: fe-protocol3.c:424 +#: fe-protocol3.c:430 #, c-format msgid "lost synchronization with server: got message type \"%c\", length %d\n" -msgstr "потеряна синхронизация с сервером: получено сообщение типа \"%c\", длина %d\n" +msgstr "" +"потеряна синхронизация с сервером: получено сообщение типа \"%c\", длина %d\n" -#: fe-protocol3.c:646 +#: fe-protocol3.c:652 msgid "unexpected field count in \"D\" message\n" -msgstr "неожиданное число полей в собщении \"D\"\n" +msgstr "неверное число полей в сообщении \"D\"\n" #. translator: %s represents a digit string -#: fe-protocol3.c:792 -#: fe-protocol3.c:811 +#: fe-protocol3.c:798 fe-protocol3.c:817 #, c-format msgid " at character %s" -msgstr " у символа %s" +msgstr " символ %s" -#: fe-protocol3.c:824 +#: fe-protocol3.c:830 #, c-format msgid "DETAIL: %s\n" -msgstr "ПОДРОБНО: %s\n" +msgstr "ПОДРОБНОСТИ: %s\n" -#: fe-protocol3.c:827 +#: fe-protocol3.c:833 #, c-format msgid "HINT: %s\n" msgstr "ПОДСКАЗКА: %s\n" -#: fe-protocol3.c:830 +#: fe-protocol3.c:836 #, c-format msgid "QUERY: %s\n" msgstr "ЗАПРОС: %s\n" -#: fe-protocol3.c:833 +#: fe-protocol3.c:839 #, c-format msgid "CONTEXT: %s\n" msgstr "КОНТЕКСТ: %s\n" -#: fe-protocol3.c:845 +#: fe-protocol3.c:851 msgid "LOCATION: " -msgstr "РАСПОЛОЖЕНИЕ: " +msgstr "ПОЛОЖЕНИЕ: " -#: fe-protocol3.c:847 +#: fe-protocol3.c:853 #, c-format msgid "%s, " msgstr "%s, " -#: fe-protocol3.c:849 +#: fe-protocol3.c:855 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: fe-protocol3.c:1073 +#: fe-protocol3.c:1079 #, c-format msgid "LINE %d: " -msgstr "СТРОКА %d:" +msgstr "СТРОКА %d: " -#: fe-protocol3.c:1457 +#: fe-protocol3.c:1465 msgid "PQgetline: not doing text COPY OUT\n" -msgstr "PQgetline: не производится текстовый COPY OUT\n" +msgstr "PQgetline можно вызывать только во время COPY OUT с текстом\n" + +#: fe-secure.c:271 fe-secure.c:1126 fe-secure.c:1346 +#, c-format +msgid "could not acquire mutex: %s\n" +msgstr "не удалось заблокировать семафор: %s\n" -#: fe-secure.c:265 +#: fe-secure.c:283 #, c-format msgid "could not establish SSL connection: %s\n" msgstr "не удалось установить SSL-соединение: %s\n" -#: fe-secure.c:349 -#: fe-secure.c:436 -#: fe-secure.c:1162 +#: fe-secure.c:392 fe-secure.c:552 fe-secure.c:1464 #, c-format msgid "SSL SYSCALL error: %s\n" msgstr "ошибка SSL SYSCALL: %s\n" -#: fe-secure.c:355 -#: fe-secure.c:442 -#: fe-secure.c:1166 +#: fe-secure.c:399 fe-secure.c:559 fe-secure.c:1468 msgid "SSL SYSCALL error: EOF detected\n" -msgstr "ошибка SSL SYSCALL: обнаружен конец файла (EOF)\n" +msgstr "ошибка SSL SYSCALL: конец файла (EOF)\n" -#: fe-secure.c:367 -#: fe-secure.c:453 -#: fe-secure.c:1175 +#: fe-secure.c:410 fe-secure.c:570 fe-secure.c:1477 #, c-format msgid "SSL error: %s\n" msgstr "ошибка SSL: %s\n" -#: fe-secure.c:377 -#: fe-secure.c:463 -#: fe-secure.c:1184 +#: fe-secure.c:424 fe-secure.c:584 +msgid "SSL connection has been closed unexpectedly\n" +msgstr "SSL-соединение было неожиданно закрыто\n" + +#: fe-secure.c:430 fe-secure.c:590 fe-secure.c:1486 #, c-format msgid "unrecognized SSL error code: %d\n" msgstr "нераспознанный код ошибки SSL: %d\n" -#: fe-secure.c:601 +#: fe-secure.c:474 +#, c-format +msgid "could not receive data from server: %s\n" +msgstr "не удалось получить данные с сервера: %s\n" + +#: fe-secure.c:662 +#, c-format +msgid "could not send data to server: %s\n" +msgstr "не удалось передать данные серверу: %s\n" + +#: fe-secure.c:782 fe-secure.c:799 +msgid "could not get server common name from server certificate\n" +msgstr "не удалось получить имя сервера из сертификата\n" + +#: fe-secure.c:812 +msgid "SSL certificate's common name contains embedded null\n" +msgstr "Имя SSL-сертификата включает нулевой байт\n" + +#: fe-secure.c:824 msgid "host name must be specified for a verified SSL connection\n" -msgstr "для заверенного SSL соединения должно быть указано имя хоста\n" +msgstr "для проверенного SSL-соединения требуется указать имя узла\n" -#: fe-secure.c:620 +#: fe-secure.c:838 #, c-format msgid "server common name \"%s\" does not match host name \"%s\"\n" -msgstr "общее имя сервера \"%s\" не совпадает с именем хоста \"%s\"\n" +msgstr "имя в сертификате \"%s\" не совпадает с именем сервера \"%s\"\n" -#: fe-secure.c:752 +#: fe-secure.c:973 #, c-format msgid "could not create SSL context: %s\n" msgstr "не удалось создать контекст SSL: %s\n" -#: fe-secure.c:843 -msgid "could not get home directory to locate client certificate files\n" -msgstr "не удалось получить домашнюю директорию, чтобы найти файлы с клиентскими сертификатами\n" - -#: fe-secure.c:868 +#: fe-secure.c:1096 #, c-format msgid "could not open certificate file \"%s\": %s\n" -msgstr "не в состоянии открыть файл сертификата \"%s\": %s\n" +msgstr "не удалось открыть файл сертификата \"%s\": %s\n" -#: fe-secure.c:893 -#: fe-secure.c:903 +#: fe-secure.c:1135 fe-secure.c:1150 #, c-format msgid "could not read certificate file \"%s\": %s\n" -msgstr "не в состоянии считать файл сертификата \"%s\": %s\n" +msgstr "не удалось прочитать файл сертификата \"%s\": %s\n" -#: fe-secure.c:940 +#: fe-secure.c:1205 #, c-format msgid "could not load SSL engine \"%s\": %s\n" -msgstr "не удаётся загрузить движок SSL \"%s\": %s\n" +msgstr "не удалось загрузить модуль SSL ENGINE \"%s\": %s\n" -#: fe-secure.c:952 +#: fe-secure.c:1217 #, c-format msgid "could not initialize SSL engine \"%s\": %s\n" -msgstr "не удаётся инициализировать движок SSL \"%s\": %s\n" +msgstr "не удалось инициализировать модуль SSL ENGINE \"%s\": %s\n" -#: fe-secure.c:968 +#: fe-secure.c:1233 #, c-format msgid "could not read private SSL key \"%s\" from engine \"%s\": %s\n" -msgstr "не удалось прочитать приватный SSL ключ \"%s\" из движка \"%s\": %s\n" +msgstr "не удалось прочитать закрытый ключ SSL \"%s\" из модуля \"%s\": %s\n" -#: fe-secure.c:982 +#: fe-secure.c:1247 #, c-format msgid "could not load private SSL key \"%s\" from engine \"%s\": %s\n" -msgstr "не удалось загрузить приватный SSL ключ \"%s\" из движка \"%s\": %s\n" +msgstr "не удалось загрузить закрытый ключ SSL \"%s\" из модуля \"%s\": %s\n" -#: fe-secure.c:1017 +#: fe-secure.c:1284 #, c-format msgid "certificate present, but not private key file \"%s\"\n" -msgstr "сертификат присутствует, но нет файла с личным ключом \"%s\"\n" +msgstr "сертификат присутствует, но файла закрытого ключа \"%s\" нет\n" -#: fe-secure.c:1025 +#: fe-secure.c:1292 #, c-format -msgid "private key file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" -msgstr "файл приватного ключа \"%s\" имеет права на чтение для всех или для группы; права должны быть u=rw (0600) или меньше\n" +msgid "" +"private key file \"%s\" has group or world access; permissions should be " +"u=rw (0600) or less\n" +msgstr "" +"к файлу закрытого ключа \"%s\" имеют доступ все или группа; права должны " +"быть u=rw (0600) или более ограниченные\n" -#: fe-secure.c:1036 +#: fe-secure.c:1303 #, c-format msgid "could not load private key file \"%s\": %s\n" -msgstr "не удалось загрузить файл приватного ключа \"%s\": %s\n" +msgstr "не удалось загрузить файл закрытого ключа \"%s\": %s\n" -#: fe-secure.c:1050 +#: fe-secure.c:1317 #, c-format msgid "certificate does not match private key file \"%s\": %s\n" -msgstr "сертификат не совпадает с файлом личного ключа \"%s\": %s\n" +msgstr "сертификат не соответствует файлу закрытого ключа \"%s\": %s\n" -#: fe-secure.c:1075 +#: fe-secure.c:1355 #, c-format msgid "could not read root certificate file \"%s\": %s\n" msgstr "не удалось прочитать файл корневых сертификатов \"%s\": %s\n" -#: fe-secure.c:1099 +#: fe-secure.c:1385 #, c-format msgid "SSL library does not support CRL certificates (file \"%s\")\n" -msgstr "Библиотека SSL не поддерживает CRL сертификаты (файл \"%s\")\n" +msgstr "Библиотека SSL не поддерживает проверку CRL (файл \"%s\")\n" + +#: fe-secure.c:1418 +msgid "" +"could not get home directory to locate root certificate file\n" +"Either provide the file or change sslmode to disable server certificate " +"verification.\n" +msgstr "" +"не удалось получить домашний каталог для поиска файла корневых сертификатов\n" +"Укажите полный путь к файлу или отключите проверку сертификата сервера, " +"изменив sslmode.\n" -#: fe-secure.c:1120 +#: fe-secure.c:1422 #, c-format msgid "" "root certificate file \"%s\" does not exist\n" -"Either provide the file or change sslmode to disable server certificate verification.\n" +"Either provide the file or change sslmode to disable server certificate " +"verification.\n" msgstr "" -"корневой файл сертификата \"%s\" не существует\n" -"Предоставьте файл с сертификатом или измените sslmode, чтобы отключить проверку сертификата.\n" +"файл корневых сертификатов \"%s\" не существует\n" +"Укажите полный путь к файлу или отключите проверку сертификата сервера, " +"изменив sslmode.\n" -#: fe-secure.c:1203 +#: fe-secure.c:1505 #, c-format msgid "certificate could not be obtained: %s\n" msgstr "не удалось получить сертификат: %s\n" -#: fe-secure.c:1231 -msgid "SSL certificate's common name contains embedded null\n" -msgstr "Общее имя SSL сертификата содержит вставленный null\n" - -#: fe-secure.c:1307 +#: fe-secure.c:1582 msgid "no SSL error reported" -msgstr "нераспознанный код ошибки SSL" +msgstr "нет сообщения об ошибке SSL" -#: fe-secure.c:1316 +#: fe-secure.c:1591 #, c-format msgid "SSL error code %lu" -msgstr "ошибка SSL: %lu" - -#~ msgid "error querying socket: %s\n" -#~ msgstr "ошибка при запросе сокета: %s\n" - -#~ msgid "could not get information about host \"%s\": %s\n" -#~ msgstr "не удалось получить информацию о хосте \"%s\": %s\n" - -#~ msgid "unsupported protocol\n" -#~ msgstr "протокол не поддерживается\n" - -#~ msgid "server common name \"%s\" does not resolve to %ld.%ld.%ld.%ld\n" -#~ msgstr "имя сервера \"%s\" не транслируется в %ld.%ld.%ld.%ld\n" - -#~ msgid "could not get user information\n" -#~ msgstr "не удалось получить информацию о пользователе\n" - -#~ msgid "invalid value of PGSSLKEY environment variable\n" -#~ msgstr "неверное значение для переменной окружения PGSSLKEY\n" - -#~ msgid "private key file \"%s\" has wrong permissions\n" -#~ msgstr "неправильные права доступа к файла личного ключа \"%s\"\n" - -#~ msgid "could not open private key file \"%s\": %s\n" -#~ msgstr "не удалось открыть файл личного ключа \"%s\": %s\n" - -#~ msgid "private key file \"%s\" changed during execution\n" -#~ msgstr "личный ключ \"%s\" изменился во время исполнения\n" - -#~ msgid "certificate could not be validated: %s\n" -#~ msgstr "сертификат не может быть проверен: %s\n" - -#~ msgid "Kerberos 4 error: %s\n" -#~ msgstr "ошибка Kerberos 4: %s\n" - -#~ msgid "Kerberos 4 authentication failed\n" -#~ msgstr "аутентификация Kerberos 4 не удалась\n" - -#~ msgid "Kerberos 5 authentication failed\n" -#~ msgstr "аутентификация Kerberos 5 не удалась\n" - -#~ msgid "invalid authentication service name \"%s\", ignored\n" -#~ msgstr "неверное имя сервиса аутентификации \"%s\", игнорируется\n" - -#~ msgid "fe_getauthname: invalid authentication system: %d\n" -#~ msgstr "fe_getauthname: неверная система аутентификации: %d\n" - -#~ msgid "could not receive server response to SSL negotiation packet: %s\n" -#~ msgstr "не был получен ответ сервера на пакет согласования SSL: %s\n" - -#~ msgid "could not create large object for file \"%s\"\n" -#~ msgstr "не в состоянии создать большой объект (LO) для файла \"%s\"\n" - -#~ msgid "could not open large object %u\n" -#~ msgstr "не в состоянии открыть большой объект (LO) %u\n" - -#~ msgid "error while reading file \"%s\"\n" -#~ msgstr "ошибка при чтении файла \"%s\"\n" - -#~ msgid "error while writing to file \"%s\"\n" -#~ msgstr "ошибка при записи в файл \"%s\"\n" +msgstr "код ошибки SSL: %lu" diff --git a/src/interfaces/libpq/po/sv.po b/src/interfaces/libpq/po/sv.po index 0e8c666e72..7bef2371a8 100644 --- a/src/interfaces/libpq/po/sv.po +++ b/src/interfaces/libpq/po/sv.po @@ -2,8 +2,6 @@ # Peter Eisentraut , 2001, 2010. # Dennis Bj�rklund , 2002, 2003, 2004, 2005, 2006. # -# pgtranslation Id: libpq.po,v 1.11 2010/09/14 19:48:42 petere Exp $ -# # Use these quotes: "%s" # msgid "" @@ -14,6 +12,7 @@ msgstr "" "PO-Revision-Date: 2010-09-14 22:43+0300\n" "Last-Translator: Magnus Hagander \n" "Language-Team: Swedish \n" +"Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/interfaces/libpq/po/ta.po b/src/interfaces/libpq/po/ta.po deleted file mode 100644 index bb11ff0a7c..0000000000 --- a/src/interfaces/libpq/po/ta.po +++ /dev/null @@ -1,794 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# This file is put in the public domain. -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: Postgres Tamil Translation\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-09-21 09:19-0300\n" -"PO-Revision-Date: 2007-10-14 11:58+0530\n" -"Last-Translator: ஆமாச்சு \n" -"Language-Team: Ubuntu Tamil Team \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Tamil\n" -"X-Poedit-Country: INDIA\n" -"X-Poedit-SourceCharset: utf-8\n" - -#: fe-auth.c:268 -#, c-format -msgid "could not set socket to blocking mode: %s\n" -msgstr "தடுப்பு முறைக்கு சாக்கெட்டினை அமைக்க இயலவில்லை: %s\n" - -#: fe-auth.c:286 -#: fe-auth.c:290 -#, c-format -msgid "Kerberos 5 authentication rejected: %*s\n" -msgstr "கேர்பரோஸ் 5 அங்கீகாரம் மறுக்கப்பட்டது: %*s\n" - -#: fe-auth.c:316 -#, c-format -msgid "could not restore non-blocking mode on socket: %s\n" -msgstr "தடையில்லா முறையினை சாக்கெட்டின் மீது மீட்டமைக்க இயலவில்லை: %s\n" - -#: fe-auth.c:439 -msgid "GSSAPI continuation error" -msgstr "GSSAPI தொடர்வதில் வழு" - -#: fe-auth.c:467 -msgid "duplicate GSS auth request\n" -msgstr "போலி GSS அங்கீகாரத்துக்கான கோரிக்கை\n" - -#: fe-auth.c:487 -msgid "GSSAPI name import error" -msgstr "GSSAPI பெயர் இறக்க வழு" - -#: fe-auth.c:573 -msgid "SSPI continuation error" -msgstr "SSPI தொடர்வதில் வழு" - -#: fe-auth.c:584 -#: fe-auth.c:649 -#: fe-auth.c:675 -#: fe-auth.c:772 -#: fe-connect.c:1299 -#: fe-connect.c:2532 -#: fe-connect.c:2749 -#: fe-connect.c:3078 -#: fe-connect.c:3087 -#: fe-connect.c:3224 -#: fe-connect.c:3264 -#: fe-connect.c:3282 -#: fe-exec.c:2751 -#: fe-lobj.c:669 -#: fe-protocol2.c:1027 -#: fe-protocol3.c:1330 -msgid "out of memory\n" -msgstr "நினைவைத் தாண்டி\n" - -#: fe-auth.c:669 -msgid "hostname must be specified\n" -msgstr "தருநர் பெயர் கொடுக்கப் பட வேண்டும்\n" - -#: fe-auth.c:748 -msgid "SCM_CRED authentication method not supported\n" -msgstr "SCM_CRED அங்கீகார முறை ஆதரிக்கப் படவில்லை\n" - -#: fe-auth.c:830 -msgid "Kerberos 4 authentication not supported\n" -msgstr "கேபராஸ் 4 அங்கீகாரம் ஆதரிக்கப் படவில்லை\n" - -#: fe-auth.c:846 -msgid "Kerberos 5 authentication not supported\n" -msgstr "கேபராஸ் 5 அங்கீகாரம் ஆதரிக்கப் படவில்லை\n" - -#: fe-auth.c:910 -msgid "GSSAPI authentication not supported\n" -msgstr "GSSAPI அங்கீகாரம் ஆதரிக்கப் படவில்லை\n" - -#: fe-auth.c:933 -msgid "SSPI authentication not supported\n" -msgstr "SSPI அங்கீகாரம் ஆதரிக்கப் படவில்லை\n" - -#: fe-auth.c:962 -#, c-format -msgid "authentication method %u not supported\n" -msgstr "அங்கீகார முறையான %u ஆதரிக்கப் படவில்லை\n" - -#: fe-connect.c:496 -#, c-format -msgid "invalid sslmode value: \"%s\"\n" -msgstr "செல்லுபடியாகாத ssimode மதிப்பு: \"%s\"\n" - -#: fe-connect.c:516 -#, c-format -msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" -msgstr "SSL ஆதரவு ஒடுக்கம் பெறாத போது ssimode மதிப்பு \"%s\" செல்லுபடியாகாது\n" - -#: fe-connect.c:695 -#, c-format -msgid "could not set socket to TCP no delay mode: %s\n" -msgstr "TCP காத்திரா நிலைக்கு சாக்கெட்டினை அமைக்க இயலவில்லை: %s\n" - -#: fe-connect.c:725 -#, c-format -msgid "" -"could not connect to server: %s\n" -"\tIs the server running locally and accepting\n" -"\tconnections on Unix domain socket \"%s\"?\n" -msgstr "" -"வழங்கியுடன் இணைக்க இயலவில்லை: %s\n" -" \t வழங்கி உள்ளூர இயங்கி\n" -" யுனிக்ஸ் டொமைன் சாக்கெட் களிலிருந்து இணைபுகளைப் பெறுகிறதா\"%s\"?\n" - -#: fe-connect.c:735 -#, c-format -msgid "" -"could not connect to server: %s\n" -"\tIs the server running on host \"%s\" and accepting\n" -"\tTCP/IP connections on port %s?\n" -msgstr "" -"வழங்கியுடன் இணைக்க இயலவில்லை: %s\n" -"\t தருநரில் வழங்கி இயங்குகிறதா \"%s\" மேலும் \n" -"\tTCP/IP இணைப்புகளை %s துறையில் பெறுகின்றதா?\n" - -#: fe-connect.c:825 -#, c-format -msgid "could not translate host name \"%s\" to address: %s\n" -msgstr "தருநர் பெயர் \"%s\" னை %s முகவரிக்கு மொழிபெயர்க்க இயலவில்லை\n" - -#: fe-connect.c:829 -#, c-format -msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" -msgstr "யுனிக்ஸ் டொமைன் சாக்கெட் பாதையினை \"%s\" முகவரி %s க்கு மாற்ற இயலவில்லை\n" - -#: fe-connect.c:1030 -msgid "invalid connection state, probably indicative of memory corruption\n" -msgstr "செல்லுபடியாகாத இணைப்பு நிலை, நினைவு மழுங்கியதற்கான சமிக்ஞையாக இருக்கலாம்\n" - -#: fe-connect.c:1073 -#, c-format -msgid "could not create socket: %s\n" -msgstr "சாக்கெட்டினை உருவாக்க இயலவில்லை: %s\n" - -#: fe-connect.c:1096 -#, c-format -msgid "could not set socket to non-blocking mode: %s\n" -msgstr "தடையில்லா முறைக்கு சாக்கெட்டினை அமைக்க இயலவில்லை: %s\n" - -#: fe-connect.c:1108 -#, c-format -msgid "could not set socket to close-on-exec mode: %s\n" -msgstr "close-on-exec நிலையில் சாக்கெட்டினை அமைக்க இயலவில்லை: %s\n" - -#: fe-connect.c:1195 -#, c-format -msgid "could not get socket error status: %s\n" -msgstr "சாக்கெட் வழு நிலையை பெற இயலவில்லை: %s\n" - -#: fe-connect.c:1233 -#, c-format -msgid "could not get client address from socket: %s\n" -msgstr "வாங்கியின் முகவரியினை சாக்கெட்டிலிருந்து பெற இயலவில்லை: %s\n" - -#: fe-connect.c:1277 -#, c-format -msgid "could not send SSL negotiation packet: %s\n" -msgstr "SSL மத்தியஸ்த பொட்டலத்தை அனுப்ப இயலவில்லை: %s\n" - -#: fe-connect.c:1312 -#, c-format -msgid "could not send startup packet: %s\n" -msgstr "துவக்க பொட்டலத்தை அனுப்ப இயலவில்லை: %s\n" - -#: fe-connect.c:1377 -#: fe-connect.c:1394 -msgid "server does not support SSL, but SSL was required\n" -msgstr "SSL ஆதாவினை வழங்கி ஆதரிக்கவில்லை, ஆனால் SSL தேவைப் படுகின்றது\n" - -#: fe-connect.c:1410 -#, c-format -msgid "received invalid response to SSL negotiation: %c\n" -msgstr "SSL மத்தியஸ்தத்துக்கு ஒவ்வாத பதில் கிடைத்தது: %c\n" - -#: fe-connect.c:1486 -#: fe-connect.c:1519 -#, c-format -msgid "expected authentication request from server, but received %c\n" -msgstr "அங்கீகார கோரிக்கை எதிர்பார்க்கப் பட்டது, பெற்றதோ %c\n" - -#: fe-connect.c:1696 -#, c-format -msgid "out of memory allocating GSSAPI buffer (%i)" -msgstr "GSSAPI நிலையாநினைவினை(%i) ஒதுக்குகையில் நினைவகன்றது" - -#: fe-connect.c:1785 -msgid "unexpected message from server during startup\n" -msgstr "துவங்குகையில் வழங்கியிலிருந்து எதிர்பாராத தகவல்\n" - -#: fe-connect.c:1853 -#, c-format -msgid "invalid connection state %c, probably indicative of memory corruption\n" -msgstr "செல்லத்தகாத நினைவு நிலை \"%c, நினைவு பழுதடைந்திருக்கலாம்\n" - -#: fe-connect.c:2545 -#, c-format -msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" -msgstr "செல்லாத LDAP URL \"%s\": திட்டம் கட்டாயம் ldap ஆக இருக்க வேண்டும்://\n" - -#: fe-connect.c:2560 -#, c-format -msgid "invalid LDAP URL \"%s\": missing distinguished name\n" -msgstr "செல்லாத LDAP URL \"%s\": தனித்துவம் வாய்ந்த பெயர் விடுபட்டுள்ளது\n" - -#: fe-connect.c:2571 -#: fe-connect.c:2624 -#, c-format -msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" -msgstr "LDAP இணைப்பு செல்லாது \"%s\": குறைந்தது ஒரு இணைப்பாவது கொண்டிருக்க வேண்டும்\n" - -#: fe-connect.c:2581 -#: fe-connect.c:2638 -#, c-format -msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" -msgstr "LDAP இணைப்பு செல்லாது \"%s\": தேடுவதற்கான வரம்பு கொண்டிருத்தல் வேண்டும் (base/one/sub)\n" - -#: fe-connect.c:2592 -#, c-format -msgid "invalid LDAP URL \"%s\": no filter\n" -msgstr "LDAP இணைப்பு செல்லாது \"%s\": வழிகட்டு இல்லை\n" - -#: fe-connect.c:2613 -#, c-format -msgid "invalid LDAP URL \"%s\": invalid port number\n" -msgstr "LDAP இணைப்பு செல்லாது \"%s\": துறை எண் செல்லாது\n" - -#: fe-connect.c:2647 -msgid "could not create LDAP structure\n" -msgstr "LDAP கட்டமைப்பை உருவாக்க இயலவில்லை\n" - -#: fe-connect.c:2689 -#, c-format -msgid "lookup on LDAP server failed: %s\n" -msgstr "LDAP வழங்கியில் தேடல் செயலிழந்தது: %s\n" - -#: fe-connect.c:2700 -msgid "more than one entry found on LDAP lookup\n" -msgstr "LDAP தேடலில் ஒன்றுக்கு மேற்பட்ட பதிவு கிடைத்துள்ளது\n" - -#: fe-connect.c:2701 -#: fe-connect.c:2713 -msgid "no entry found on LDAP lookup\n" -msgstr "LDAP தேடலில் எந்தவொரு பதிவும் கிடைக்கவில்லை\n" - -#: fe-connect.c:2724 -#: fe-connect.c:2737 -msgid "attribute has no values on LDAP lookup\n" -msgstr "LDAP தேடலில் பண்பிற்கு மதிப்பு எதுவும் இல்லை\n" - -#: fe-connect.c:2788 -#: fe-connect.c:2806 -#: fe-connect.c:3126 -#, c-format -msgid "missing \"=\" after \"%s\" in connection info string\n" -msgstr "தொடர்புக்கான தகவல் சரத்தில் \"%s\" க்குப் பிறகு \"=\" இல்லை\n" - -#: fe-connect.c:2869 -#: fe-connect.c:3208 -#, c-format -msgid "invalid connection option \"%s\"\n" -msgstr "செல்லுபடியாகாத இணைப்புத் தேர்வு \"%s\" \n" - -#: fe-connect.c:2882 -#: fe-connect.c:3175 -msgid "unterminated quoted string in connection info string\n" -msgstr "தொடர்புக்கான தகவல் சரத்தில் நிறைவுபெறாத மேற்கோளிடப் பட்ட சரம்\n" - -#: fe-connect.c:2925 -#, c-format -msgid "ERROR: service file \"%s\" not found\n" -msgstr "வழு: \"%s\" சேவை கோப்பினைக் காணவில்லை\n" - -#: fe-connect.c:2938 -#, c-format -msgid "ERROR: line %d too long in service file \"%s\"\n" -msgstr "வழு: சேவைக் கோப்பில் %d வரி மிகப் பெரிதாக உள்ளது\"%s\"\n" - -#: fe-connect.c:3010 -#: fe-connect.c:3037 -#, c-format -msgid "ERROR: syntax error in service file \"%s\", line %d\n" -msgstr "வழு: சேவைக் கோப்பு \"%s\" ன் வரி %d ல் நெறி வழு\n" - -#: fe-connect.c:3450 -msgid "connection pointer is NULL\n" -msgstr "இணைப்புச் சுட்டி NULL ஆக உள்ளது\n" - -#: fe-connect.c:3724 -#, c-format -msgid "WARNING: password file \"%s\" is not a plain file\n" -msgstr "எச்சரிக்கை: கடவுச் சொல்லுக்கானக் கோப்பு \"%s\" ஒரு சாதாரணக் கோப்பு இல்லை\n" - -#: fe-connect.c:3734 -#, c-format -msgid "WARNING: password file \"%s\" has world or group read access; permission should be u=rw (0600)\n" -msgstr "எச்சரிக்கை: கடவுச் சொல் கோப்பு \"%s\" அனைவரும் அல்லது குழுமம் அணுக ஏதுவாய் உள்ளது; u=rw (0600) ஆக அனுமதி இருத்தல் நல்லது\n" - -#: fe-exec.c:498 -msgid "NOTICE" -msgstr "அறிவிப்பு" - -#: fe-exec.c:682 -#: fe-exec.c:739 -#: fe-exec.c:779 -msgid "command string is a null pointer\n" -msgstr "ஆணைச் சரம் ஒரு வெற்றுச் சுட்டி\n" - -#: fe-exec.c:772 -#: fe-exec.c:867 -msgid "statement name is a null pointer\n" -msgstr "வாசகத்தின் பெயர் ஒரு வெற்றுச் சுட்டி\n" - -#: fe-exec.c:787 -#: fe-exec.c:941 -#: fe-exec.c:1570 -#: fe-exec.c:1766 -msgid "function requires at least protocol version 3.0\n" -msgstr "செயற்பாட்டுக்கு குறைந்த பட்சம் நெறி 3.0 தேவைப் படுகிறது\n" - -#: fe-exec.c:898 -msgid "no connection to the server\n" -msgstr "வழங்கிக்கு இணைப்பு எதுவும் இல்லை\n" - -#: fe-exec.c:905 -msgid "another command is already in progress\n" -msgstr "மற்றொரு ஆணை நிறைவேற்றப் பட்டுக்கொண்டிருக்கிறது\n" - -#: fe-exec.c:1015 -msgid "length must be given for binary parameter\n" -msgstr "இரும காரணிக்கு நீளம் கட்டாயம் கொடுக்கப்பட்டிருத்தல் வேண்டும்\n" - -#: fe-exec.c:1262 -#, c-format -msgid "unexpected asyncStatus: %d\n" -msgstr "எதிர்பாராத பொருந்தா நிலை: %d\n" - -#: fe-exec.c:1388 -msgid "COPY terminated by new PQexec" -msgstr "PQexec ஆல் நகலெடுப்பது நிறுத்தப் பட்டது" - -#: fe-exec.c:1396 -msgid "COPY IN state must be terminated first\n" -msgstr "அக நகல் நிலை முதலில் நிறுத்தப் பட வேண்டும்\n" - -#: fe-exec.c:1416 -msgid "COPY OUT state must be terminated first\n" -msgstr "புற நகல் நிலை முதலில் நிறுத்தப் பட வேண்டும்\n" - -#: fe-exec.c:1658 -#: fe-exec.c:1723 -#: fe-exec.c:1808 -#: fe-protocol2.c:1172 -#: fe-protocol3.c:1486 -msgid "no COPY in progress\n" -msgstr "நகலாக்கம் எதுவும் நடைபெறவில்லை\n" - -#: fe-exec.c:2000 -msgid "connection in wrong state\n" -msgstr "இணைப்பு தவறான நிலையில் உள்ளது\n" - -#: fe-exec.c:2031 -msgid "invalid ExecStatusType code" -msgstr "ExecStatusType குறியீடு செல்லுபடியாகாது" - -#: fe-exec.c:2095 -#: fe-exec.c:2118 -#, c-format -msgid "column number %d is out of range 0..%d" -msgstr "நெடுவரிசை எண் %d வரம்புக்குக்கு 0.. %d வெளியே உள்ளது\" " - -#: fe-exec.c:2111 -#, c-format -msgid "row number %d is out of range 0..%d" -msgstr "குறுக்கு வரிசை எண் %d வரம்புக்கு 0.. %d வெளியே உள்ளது" - -#: fe-exec.c:2133 -#, c-format -msgid "parameter number %d is out of range 0..%d" -msgstr "காரணி எண் %d வரம்புக்கு வெளியே உள்ளது 0.. %d" - -#: fe-exec.c:2420 -#, c-format -msgid "could not interpret result from server: %s" -msgstr "வழங்கியிலிருந்து முடிவை கணிக்க இயலவில்லை: %s" - -#: fe-exec.c:2659 -msgid "incomplete multibyte character\n" -msgstr "பூர்த்தியாகாத மல்டிபைட் எழுத்து\n" - -#: fe-lobj.c:150 -msgid "cannot determine OID of function lo_truncate\n" -msgstr "lo_truncate செயற்பாட்டின் OID னைக் கண்டுபிடிக்க முடியவில்லை\n" - -#: fe-lobj.c:378 -msgid "cannot determine OID of function lo_create\n" -msgstr "lo_create செயற்பாட்டின் OID யினைக் கணடுபிக்க இயலவில்லை\n" - -#: fe-lobj.c:502 -#: fe-lobj.c:597 -#, c-format -msgid "could not open file \"%s\": %s\n" -msgstr "\"%s\": %s கோப்பினைத் திறக்க இயலவில்லை\n" - -#: fe-lobj.c:548 -#, c-format -msgid "could not read from file \"%s\": %s\n" -msgstr "\"%s\": கோப்பிலிருந்து வாசிக்க இயலவில்லை %s\n" - -#: fe-lobj.c:612 -#: fe-lobj.c:636 -#, c-format -msgid "could not write to file \"%s\": %s\n" -msgstr "\"%s\": கோப்பினுள் இணைக்க இயலவில்லை %s\n" - -#: fe-lobj.c:717 -msgid "query to initialize large object functions did not return data\n" -msgstr "பெரும் பொருள் செயற்பாடுகளைத் துவக்க கோரியது தரவெதையும் திரும்பத் தரவில்லை\n" - -#: fe-lobj.c:758 -msgid "cannot determine OID of function lo_open\n" -msgstr "செயற்பாடு lo_open ஐக் கொண்ட OID யினை கண்டெடுக்க இயலவில்லை\n" - -#: fe-lobj.c:765 -msgid "cannot determine OID of function lo_close\n" -msgstr "செயற்பாடு lo_close ஐக் கொண்ட OID யினை கண்டெடுக்க இயலவில்லை\n" - -#: fe-lobj.c:772 -msgid "cannot determine OID of function lo_creat\n" -msgstr "செயற்பாடு lo_creat ஐக் கொண்ட OID யினை கண்டெடுக்க இயலவில்லை\n" - -#: fe-lobj.c:779 -msgid "cannot determine OID of function lo_unlink\n" -msgstr "செயற்பாடு lo_unlink ஐக் கொண்ட OID யினை கண்டெடுக்க இயலவில்லை\n" - -#: fe-lobj.c:786 -msgid "cannot determine OID of function lo_lseek\n" -msgstr "செயற்பாடு lo_lseek ஐக் கொண்ட OID யினை கண்டெடுக்க இயலவில்லை\n" - -#: fe-lobj.c:793 -msgid "cannot determine OID of function lo_tell\n" -msgstr "செயற்பாடு lo_tell ஐக் கொண்ட OID யினை கண்டெடுக்க இயலவில்லை\n" - -#: fe-lobj.c:800 -msgid "cannot determine OID of function loread\n" -msgstr "செயற்பாடு loread ஐக் கொண்ட OID யினை கண்டெடுக்க இயலவில்லை\n" - -#: fe-lobj.c:807 -msgid "cannot determine OID of function lowrite\n" -msgstr "செயற்பாடு lowrite ஐக் கொண்ட OID யினை கண்டெடுக்க இயலவில்லை\n" - -#: fe-misc.c:227 -#, c-format -msgid "integer of size %lu not supported by pqGetInt" -msgstr "%lu அளவினைக் கொண்ட எண் pqGetInt ஆல் ஆதரிக்கப் படவில்லை" - -#: fe-misc.c:263 -#, c-format -msgid "integer of size %lu not supported by pqPutInt" -msgstr "%lu அளவினைக் கொண்ட எண் pqPutInt ஆல் ஆதரிக்கப் படவில்லை" - -#: fe-misc.c:543 -#: fe-misc.c:745 -msgid "connection not open\n" -msgstr " இணைப்பு இல்லை\n" - -#: fe-misc.c:608 -#: fe-misc.c:698 -#, c-format -msgid "could not receive data from server: %s\n" -msgstr "வழங்கியிலிருந்து தரவினைப் பெற இயலவில்லை: %s\n" - -#: fe-misc.c:715 -#: fe-misc.c:783 -msgid "" -"server closed the connection unexpectedly\n" -"\tThis probably means the server terminated abnormally\n" -"\tbefore or while processing the request.\n" -msgstr "" -"இணைப்பினை வழங்கி திடீரெனத் துண்டித்துக் கொண்டது\n" -" \tகோரிக்கையினை நிறைவேற்றுகிற சமயம்\n" -" \tவழங்கி திடீரென செயலற்று போயிருக்கலாம்.\n" - -#: fe-misc.c:800 -#, c-format -msgid "could not send data to server: %s\n" -msgstr "வழங்கிக்கு தரவினை அனுப்ப இயலவில்லை: %s\n" - -#: fe-misc.c:919 -msgid "timeout expired\n" -msgstr "காலநிர்ணயம் காலாவதியானது\n" - -#: fe-misc.c:964 -msgid "socket not open\n" -msgstr "சாக்கெட் திறக்கப் படவில்லை\n" - -#: fe-misc.c:987 -#, c-format -msgid "select() failed: %s\n" -msgstr "select() பலனலிக்கவில்லை: %s\n" - -#: fe-protocol2.c:89 -#, c-format -msgid "invalid setenv state %c, probably indicative of memory corruption\n" -msgstr "ஏற்பில்லா setenv நிலை %c, நினைவு மழுங்கியமைக்கான சமிக்ஞையாக இருக்கலாம்\n" - -#: fe-protocol2.c:330 -#, c-format -msgid "invalid state %c, probably indicative of memory corruption\n" -msgstr "ஏற்பில்லா நிலை %c, நினைவு மழுங்கியமைக்கான சமிக்ஞையாக இருக்கலாம்\n" - -#: fe-protocol2.c:419 -#: fe-protocol3.c:185 -#, c-format -msgid "message type 0x%02x arrived from server while idle" -msgstr "செயலற்று இருந்த போது 0x%02x செய்தி வந்தது" - -#: fe-protocol2.c:462 -#, c-format -msgid "unexpected character %c following empty query response (\"I\" message)" -msgstr "வெற்று கோரிக்கையின் பதிலைத் தொடரந்து எதிபாராத எழுத்து %c (\"I\" message)" - -#: fe-protocol2.c:516 -msgid "server sent data (\"D\" message) without prior row description (\"T\" message)" -msgstr "குறுக்கு வரிசை குறித்த முன் விவரமில்லாது (\"T\"message) வழங்கி தரவினை அனுப்பியது (\"D\"message)" - -#: fe-protocol2.c:532 -msgid "server sent binary data (\"B\" message) without prior row description (\"T\" message)" -msgstr "குறுக்கு வரிசை குறித்த முன் விவரமில்லாது (\"T\"message) வழங்கி இருமத் தரவினை அனுப்பியது (\"B\"message)" - -#: fe-protocol2.c:547 -#: fe-protocol3.c:376 -#, c-format -msgid "unexpected response from server; first received character was \"%c\"\n" -msgstr "வழங்கியிடமிருந்து எதிர்பாராத தகவல்; முதலில் பெறப் பட்ட எழுத்து \"%c\"\n" - -#: fe-protocol2.c:768 -#: fe-protocol3.c:695 -msgid "out of memory for query result\n" -msgstr "விண்ணப்பத்தின் முடிவு நினைவுக்கு அப்பால் உள்ளன\n" - -#: fe-protocol2.c:1215 -#: fe-protocol3.c:1554 -#, c-format -msgid "%s" -msgstr "%s" - -#: fe-protocol2.c:1227 -msgid "lost synchronization with server, resetting connection" -msgstr "வழங்கியுடனான பொருந்தும் தனமையில் பாதிப்பு, இணைப்பு மீண்டும் கொணரப்படுகிறது" - -#: fe-protocol2.c:1361 -#: fe-protocol2.c:1393 -#: fe-protocol3.c:1756 -#, c-format -msgid "protocol error: id=0x%x\n" -msgstr "நெறி வழு: id=0x%x\n" - -#: fe-protocol3.c:338 -msgid "server sent data (\"D\" message) without prior row description (\"T\" message)\n" -msgstr "குறுக்கு வரிசை குறித்த முன் விவரமில்லாது (\"T\"message) வழங்கி தரவினை அனுப்பியது (\"D\"message)\n" - -#: fe-protocol3.c:397 -#, c-format -msgid "message contents do not agree with length in message type \"%c\"\n" -msgstr "தகவல் வகையிலுள்ள நீளத்துடன் தகவல் விவரங்கள் ஒத்துப் போகவில்லை \"%c\"\n" - -#: fe-protocol3.c:418 -#, c-format -msgid "lost synchronization with server: got message type \"%c\", length %d\n" -msgstr "வழங்கியுடன் பொருந்தா நிலை ஏற்பட்டுள்ளது: தகவல் வகை \"%c\" பெறப்பட்டது, நீளம் %d\n" - -#: fe-protocol3.c:640 -msgid "unexpected field count in \"D\" message\n" -msgstr "\"D\" தகவலில் எதிர்பாராத கள எண்ணிக்கை\n" - -#. translator: %s represents a digit string -#: fe-protocol3.c:782 -#: fe-protocol3.c:801 -#, c-format -msgid " at character %s" -msgstr " %s எழுத்தில்" - -#: fe-protocol3.c:814 -#, c-format -msgid "DETAIL: %s\n" -msgstr "விவரம்: %s\n" - -#: fe-protocol3.c:817 -#, c-format -msgid "HINT: %s\n" -msgstr "துப்பு: %s\n" - -#: fe-protocol3.c:820 -#, c-format -msgid "QUERY: %s\n" -msgstr "விண்ணப்பம்: %s\n" - -#: fe-protocol3.c:823 -#, c-format -msgid "CONTEXT: %s\n" -msgstr "இடம்: %s\n" - -#: fe-protocol3.c:835 -msgid "LOCATION: " -msgstr "இருப்பிடம்: " - -#: fe-protocol3.c:837 -#, c-format -msgid "%s, " -msgstr "%s, " - -#: fe-protocol3.c:839 -#, c-format -msgid "%s:%s" -msgstr "%s:%s" - -#: fe-protocol3.c:1064 -#, c-format -msgid "LINE %d: " -msgstr "வரி %d: " - -#: fe-protocol3.c:1372 -msgid "PQgetline: not doing text COPY OUT\n" -msgstr "PQgetline: உரை COPY OUT செய்யப் படுலதில்லை\n" - -#: fe-secure.c:218 -#, c-format -msgid "could not establish SSL connection: %s\n" -msgstr "SSL இணைப்பினை ஏற்படுத்த இயலவில்லை: %s\n" - -#: fe-secure.c:289 -#: fe-secure.c:385 -#: fe-secure.c:927 -#, c-format -msgid "SSL SYSCALL error: %s\n" -msgstr "SYS SYSCALL வழு: %s\n" - -#: fe-secure.c:294 -#: fe-secure.c:391 -#: fe-secure.c:931 -msgid "SSL SYSCALL error: EOF detected\n" -msgstr "SYS SYSCALL வழு: EOF அடையப்பட்டது\n" - -#: fe-secure.c:306 -#: fe-secure.c:402 -#: fe-secure.c:950 -#, c-format -msgid "SSL error: %s\n" -msgstr "SSL வழு: %s\n" - -#: fe-secure.c:316 -#: fe-secure.c:412 -#: fe-secure.c:960 -#, c-format -msgid "unrecognized SSL error code: %d\n" -msgstr "இனங்காண இயலாத SSL வழு குறி: %d\n" - -#: fe-secure.c:482 -#, c-format -msgid "error querying socket: %s\n" -msgstr "சாக்கெட்டுக்காக் கோரியதில் வழு: %s\n" - -#: fe-secure.c:509 -#, c-format -msgid "could not get information about host \"%s\": %s\n" -msgstr "தருநர் குறித்த விவரங்களைப் பெற இயலவில்லை\"%s\":%s\n" - -#: fe-secure.c:528 -msgid "unsupported protocol\n" -msgstr "ஆதரிக்கப் படாத நெறி\n" - -#: fe-secure.c:550 -#, c-format -msgid "server common name \"%s\" does not resolve to %ld.%ld.%ld.%ld\n" -msgstr "வழங்கியின் பொதுப் பெயர் \"%s\" %ld.%ld.%ld.%ld க்கு இட்டுச் செல்லவில்லை\n" - -#: fe-secure.c:557 -#, c-format -msgid "server common name \"%s\" does not resolve to peer address\n" -msgstr "வழங்கியின் பொதுப் பெயரால் \"%s\" தலை முகவரியினைத் துவங்க இயலவில்லை\n" - -#: fe-secure.c:589 -msgid "could not get user information\n" -msgstr "பயனர் விவரங்களை பெற இயலவில்லை\n" - -#: fe-secure.c:598 -#, c-format -msgid "could not open certificate file \"%s\": %s\n" -msgstr "சான்றுக் கோப்பினைத் திறக்க இயலவில்லை \"%s\": %s\n" - -#: fe-secure.c:607 -#, c-format -msgid "could not read certificate file \"%s\": %s\n" -msgstr "சான்றுக் கோப்பினை வாசிக்க இயலவில்லை \"%s\": %s\n" - -#: fe-secure.c:627 -msgid "invalid value of PGSSLKEY environment variable\n" -msgstr "சூழல் மாறி PGSSLKEY க்கு செல்லத்தகாத மதிப்பு\n" - -#: fe-secure.c:639 -#, c-format -msgid "could not load SSL engine \"%s\": %s\n" -msgstr "SSL என்ஜின்களை ஏற்றவில்லை \"%s\": %s\n" - -#: fe-secure.c:653 -#, c-format -msgid "could not read private SSL key \"%s\" from engine \"%s\": %s\n" -msgstr "என்ஜினிலிருந்து \"%s\": %s தனிப்பட்ட SSL திறவியினை வாசிக்க இயலவில்லை \"%s\"\n" - -#: fe-secure.c:669 -#, c-format -msgid "certificate present, but not private key file \"%s\"\n" -msgstr "சான்று உள்ளது, ஆனால் தனித் துருப்புக் கோப்பினைக் காணவில்லை \"%s\"\n" - -#: fe-secure.c:678 -#, c-format -msgid "private key file \"%s\" has wrong permissions\n" -msgstr "தனித் துருப்புக் கோப்பு \"%s\" தவறான அனுமதிகளைக் கொண்டுள்ளது\n" - -#: fe-secure.c:686 -#, c-format -msgid "could not open private key file \"%s\": %s\n" -msgstr "தனித் துருப்புக் கோப்பினைத் திறக்க இயலவில்லை \"%s\":%s\n" - -#: fe-secure.c:695 -#, c-format -msgid "private key file \"%s\" changed during execution\n" -msgstr "செயல்படுத்தும் போது தனித் துருப்புக் கோப்பு \"%s\" மாற்றப் பட்டுள்ளது\n" - -#: fe-secure.c:704 -#, c-format -msgid "could not read private key file \"%s\": %s\n" -msgstr "தனித் துருப்புக் கோப்பினை வாசிக்க இயலவில்லை \"%s\":%s\n" - -#: fe-secure.c:719 -#, c-format -msgid "certificate does not match private key file \"%s\": %s\n" -msgstr "சான்று தனித் துருப்புக் கோப்புடன் பொருந்தவில்லை \"%s\": %s\n" - -#: fe-secure.c:808 -#, c-format -msgid "could not create SSL context: %s\n" -msgstr "SSL சூழலை உருவாக்க இயலவில்லை: %s\n" - -#: fe-secure.c:849 -#, c-format -msgid "could not read root certificate file \"%s\": %s\n" -msgstr "\"மூல சான்றினை வாசிக்க இயவில்லை \"%s\": %s\n" - -#: fe-secure.c:869 -#, c-format -msgid "SSL library does not support CRL certificates (file \"%s\")\n" -msgstr "CRL சான்றுகளை SSL நிரலகம் ஆதரிக்கவில்லை (கோப்பு \"%s\")\n" - -#: fe-secure.c:980 -#, c-format -msgid "certificate could not be validated: %s\n" -msgstr "சான்றிதழை சரி பார்க்க இயலவில்லை: %s\n" - -#: fe-secure.c:994 -#, c-format -msgid "certificate could not be obtained: %s\n" -msgstr "சான்று கிடைக்கப் பெறவில்லை: %s\n" - -#: fe-secure.c:1074 -msgid "no SSL error reported" -msgstr "SSL வழு எதுவும் தெரிவிக்கப் படவில்லை" - -#: fe-secure.c:1083 -#, c-format -msgid "SSL error code %lu" -msgstr "SSL வழுக் குறி %lu" - diff --git a/src/interfaces/libpq/po/tr.po b/src/interfaces/libpq/po/tr.po index ed29eff0ac..bed2592092 100644 --- a/src/interfaces/libpq/po/tr.po +++ b/src/interfaces/libpq/po/tr.po @@ -5,10 +5,11 @@ msgid "" msgstr "" "Project-Id-Version: libpq-tr\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-08-31 20:09+0000\n" -"PO-Revision-Date: 2010-09-01 11:27+0200\n" +"POT-Creation-Date: 2011-08-30 22:43+0000\n" +"PO-Revision-Date: 2011-08-31 13:21+0200\n" "Last-Translator: Devrim GÜNDÜZ \n" "Language-Team: Turkish \n" +"Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -16,81 +17,81 @@ msgstr "" "X-Poedit-Basepath: /home/ntufar/pg/pgsql/src/interfaces/libpq\n" "X-Poedit-SearchPath-0: /home/ntufar/pg/pgsql/src/interfaces/libpq\n" -#: fe-auth.c:212 -#: fe-auth.c:432 -#: fe-auth.c:659 +#: fe-auth.c:210 +#: fe-auth.c:429 +#: fe-auth.c:656 msgid "host name must be specified\n" msgstr "sunucu adı belirtilmelidir\n" -#: fe-auth.c:242 +#: fe-auth.c:240 #, c-format msgid "could not set socket to blocking mode: %s\n" msgstr "soket engelleme moduna ayarlanamadı: %s\n" -#: fe-auth.c:260 -#: fe-auth.c:264 +#: fe-auth.c:258 +#: fe-auth.c:262 #, c-format msgid "Kerberos 5 authentication rejected: %*s\n" msgstr "Kerberos 5 yetkilendirmesi kabul edilmedi: %*s\n" -#: fe-auth.c:290 +#: fe-auth.c:288 #, c-format msgid "could not restore non-blocking mode on socket: %s\n" msgstr "could not restore non-blocking mode on socket: %s\n" -#: fe-auth.c:403 +#: fe-auth.c:400 msgid "GSSAPI continuation error" msgstr "GSSAPI devam hatası" -#: fe-auth.c:439 +#: fe-auth.c:436 msgid "duplicate GSS authentication request\n" msgstr "çift GSS yetkilendirme isteği\n" -#: fe-auth.c:459 +#: fe-auth.c:456 msgid "GSSAPI name import error" msgstr "GSSAPI ad aktarma hatası" -#: fe-auth.c:545 +#: fe-auth.c:542 msgid "SSPI continuation error" msgstr "SSPI devam hatası" -#: fe-auth.c:556 -#: fe-auth.c:630 -#: fe-auth.c:665 -#: fe-auth.c:762 -#: fe-connect.c:1802 -#: fe-connect.c:3129 -#: fe-connect.c:3346 -#: fe-connect.c:3762 -#: fe-connect.c:3771 -#: fe-connect.c:3908 -#: fe-connect.c:3954 -#: fe-connect.c:3972 -#: fe-connect.c:4051 -#: fe-connect.c:4121 -#: fe-connect.c:4167 -#: fe-connect.c:4185 +#: fe-auth.c:553 +#: fe-auth.c:627 +#: fe-auth.c:662 +#: fe-auth.c:757 +#: fe-connect.c:1961 +#: fe-connect.c:3368 +#: fe-connect.c:3586 +#: fe-connect.c:4007 +#: fe-connect.c:4016 +#: fe-connect.c:4153 +#: fe-connect.c:4199 +#: fe-connect.c:4217 +#: fe-connect.c:4296 +#: fe-connect.c:4366 +#: fe-connect.c:4412 +#: fe-connect.c:4430 #: fe-exec.c:3121 #: fe-exec.c:3286 #: fe-lobj.c:696 -#: fe-protocol2.c:1027 -#: fe-protocol3.c:1421 +#: fe-protocol2.c:1092 +#: fe-protocol3.c:1433 msgid "out of memory\n" msgstr "yetersiz bellek\n" -#: fe-auth.c:645 +#: fe-auth.c:642 msgid "could not acquire SSPI credentials" msgstr "SSPI kimlik bilgileri alınamadı: %m" -#: fe-auth.c:738 +#: fe-auth.c:733 msgid "SCM_CRED authentication method not supported\n" msgstr "SCM_CRED yetkilendirme yöntemi desteklenmiyor.\n" -#: fe-auth.c:812 +#: fe-auth.c:807 msgid "Kerberos 4 authentication not supported\n" msgstr "Kerberos 4 yetkilendirmesi desteklenmiyor\n" -#: fe-auth.c:828 +#: fe-auth.c:823 msgid "Kerberos 5 authentication not supported\n" msgstr "Kerberos 5 yetkilendirmesi desteklenmiyor\n" @@ -98,35 +99,35 @@ msgstr "Kerberos 5 yetkilendirmesi desteklenmiyor\n" msgid "GSSAPI authentication not supported\n" msgstr "GSSAPI yetkilendirmesi desteklenmiyor\n" -#: fe-auth.c:919 +#: fe-auth.c:927 msgid "SSPI authentication not supported\n" msgstr "SSPI yetkilendirmesi desteklenmiyor\n" -#: fe-auth.c:926 +#: fe-auth.c:935 msgid "Crypt authentication not supported\n" msgstr "Crypt yetkilendirmesi desteklenmiyor\n" -#: fe-auth.c:953 +#: fe-auth.c:962 #, c-format msgid "authentication method %u not supported\n" msgstr "%u yetkilendirme sistemi desteklenmiyor\n" -#: fe-connect.c:712 +#: fe-connect.c:758 #, c-format msgid "invalid sslmode value: \"%s\"\n" msgstr "geçersiz sslmode değeri: \"%s\"\n" -#: fe-connect.c:733 +#: fe-connect.c:779 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" msgstr "\"%s\" ssl modu, SSL desteği derlenmeyince geçersizdir.\n" -#: fe-connect.c:916 +#: fe-connect.c:972 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "could not set socket to TCP no delay mode: %s\n" -#: fe-connect.c:946 +#: fe-connect.c:1002 #, c-format msgid "" "could not connect to server: %s\n" @@ -137,7 +138,18 @@ msgstr "" "\tSunucu yerelde çalışıyor ve Unix domain\n" "\tsoketleri üzerinden bağlantılara izin veriyor mu? \"%s\"?\n" -#: fe-connect.c:956 +#: fe-connect.c:1057 +#, c-format +msgid "" +"could not connect to server: %s\n" +"\tIs the server running on host \"%s\" (%s) and accepting\n" +"\tTCP/IP connections on port %s?\n" +msgstr "" +"sunucuya bağlanılamadı: %s\n" +"\tSunucu \"%s\" (%s) sunucusunda çalışıyor ve\n" +"\t %s portundan TCP/IP bağlantılarına izin veriyor mu?\n" + +#: fe-connect.c:1066 #, c-format msgid "" "could not connect to server: %s\n" @@ -148,309 +160,331 @@ msgstr "" "\tls Sunucu \"%s\" sunucunda çalışıyor ve\n" "\t %s portundan bağlantılara izin veriyor mu?\n" -#: fe-connect.c:1011 +#: fe-connect.c:1117 #, c-format msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" msgstr "setsockopt(TCP_KEEPIDLE) başarısız oldu: %s\n" -#: fe-connect.c:1024 +#: fe-connect.c:1130 #, c-format msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" msgstr "setsockopt(SO_REUSEADDR) başarısız oldu: %s\n" -#: fe-connect.c:1056 +#: fe-connect.c:1162 #, c-format msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" msgstr "setsockopt(TCP_KEEPINTVL) başarısız oldu: %s\n" -#: fe-connect.c:1088 +#: fe-connect.c:1194 #, c-format msgid "setsockopt(TCP_KEEPCNT) failed: %s\n" msgstr "setsockopt(TCP_KEEPCNT) başarısız oldu: %s\n" -#: fe-connect.c:1137 +#: fe-connect.c:1242 #, c-format msgid "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" msgstr "WSAIoctl(SIO_KEEPALIVE_VALS) başarısız oldu: %ui\n" -#: fe-connect.c:1189 +#: fe-connect.c:1294 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "Geçersiz port numarası: \"%s\"\n" -#: fe-connect.c:1231 +#: fe-connect.c:1337 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "\"%s\" makine adı bir adrese çevirilemedi: %s\n" -#: fe-connect.c:1235 +#: fe-connect.c:1341 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "\"%s\" Unix domain soket yolu adrese çevirilemedi: %s\n" -#: fe-connect.c:1444 +#: fe-connect.c:1551 msgid "invalid connection state, probably indicative of memory corruption\n" msgstr "Geçersiz bağlantı durumu, hafızanın zarar görmüş olmasının işareti olabilir\n" -#: fe-connect.c:1487 +#: fe-connect.c:1592 #, c-format msgid "could not create socket: %s\n" msgstr "soket yaratılamadı: %s\n" -#: fe-connect.c:1510 +#: fe-connect.c:1615 #, c-format msgid "could not set socket to non-blocking mode: %s\n" msgstr "could not set socket to non-blocking mode: %s\n" -#: fe-connect.c:1522 +#: fe-connect.c:1627 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "soket close-on-exec moduna ayarlanamadı: %s\n" -#: fe-connect.c:1540 +#: fe-connect.c:1647 msgid "keepalives parameter must be an integer\n" msgstr "keepalives parametresi tamsayı olmalıdır\n" -#: fe-connect.c:1553 +#: fe-connect.c:1660 #, c-format msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" msgstr "setsockopt(SO_KEEPALIVE) başarısız oldu: %s\n" -#: fe-connect.c:1694 +#: fe-connect.c:1801 #, c-format msgid "could not get socket error status: %s\n" msgstr "soket hata durumu alınamadı: %s\n" -#: fe-connect.c:1732 +#: fe-connect.c:1839 #, c-format msgid "could not get client address from socket: %s\n" msgstr "soketten istemci adresi alınamadı: %s\n" -#: fe-connect.c:1776 +#: fe-connect.c:1880 +msgid "requirepeer parameter is not supported on this platform\n" +msgstr "bu platformda requirepeer parametresi desteklenmiyor \n" + +#: fe-connect.c:1883 +#, c-format +msgid "could not get peer credentials: %s\n" +msgstr "karşı tarafın kimlik bilgileri alınamadı: %s \n" + +#: fe-connect.c:1893 +#, c-format +msgid "local user with ID %d does not exist\n" +msgstr "yerel kullanıcı ID %d mevcut değildir\n" + +#: fe-connect.c:1901 +#, c-format +msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" +msgstr "requirepeer \"%s\" belirtiyor, ancak gerçek peer kullanıcı aıd \"%s\"\n" + +#: fe-connect.c:1935 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "could not send SSL negotiation packet: %s\n" -#: fe-connect.c:1815 +#: fe-connect.c:1974 #, c-format msgid "could not send startup packet: %s\n" msgstr "başlangıç paketi gönderilemedi: %s\n" -#: fe-connect.c:1882 -#: fe-connect.c:1901 +#: fe-connect.c:2044 msgid "server does not support SSL, but SSL was required\n" msgstr "sunucu SSL desteklemiyor, ama SSL gerekli idi\n" -#: fe-connect.c:1917 +#: fe-connect.c:2070 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "ssl görüşmesine geçersiz yanıt alındı: %c\n" -#: fe-connect.c:1993 -#: fe-connect.c:2026 +#: fe-connect.c:2149 +#: fe-connect.c:2182 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "sunucudan yetkilendirme isteği beklendi ancak %c alındı\n" -#: fe-connect.c:2197 +#: fe-connect.c:2363 #, c-format -msgid "out of memory allocating GSSAPI buffer (%i)" -msgstr "GSSAPI tamponu ayrılırken yetersiz bellek hatası (%i)" +msgid "out of memory allocating GSSAPI buffer (%d)" +msgstr "GSSAPI tamponu ayrılırken yetersiz bellek hatası (%d)" -#: fe-connect.c:2282 +#: fe-connect.c:2448 msgid "unexpected message from server during startup\n" msgstr "başlangıç sırasında sunucudan beklenmeyen bir mesaj alındı\n" -#: fe-connect.c:2378 +#: fe-connect.c:2547 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" msgstr "%d - geçersiz bağlantı durumu, bellekteki veri zarar görmüş olabilir\n" -#: fe-connect.c:2737 -#: fe-connect.c:2797 +#: fe-connect.c:2976 +#: fe-connect.c:3036 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "PGEventProc \"%s\" işlemi PGEVT_CONNRESET işlemi sırasında başarısız oldu\n" -#: fe-connect.c:3142 +#: fe-connect.c:3381 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" msgstr "geçersiz LDAP URL \"%s\": şema, ldap:// ile başlamalıdir\n" -#: fe-connect.c:3157 +#: fe-connect.c:3396 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "geçersiz LDAP URL \"%s\": distinguished name eksik\n" -#: fe-connect.c:3168 -#: fe-connect.c:3221 +#: fe-connect.c:3407 +#: fe-connect.c:3460 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "geçersiz LDAP URL \"%s\": tam bir attribute içermelidir\n" -#: fe-connect.c:3178 -#: fe-connect.c:3235 +#: fe-connect.c:3417 +#: fe-connect.c:3474 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" msgstr "geçersiz LDAP URL \"%s\": arama kapsamı içermelidir (base/one/sub)\n" -#: fe-connect.c:3189 +#: fe-connect.c:3428 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "geçersiz LDAP URL \"%s\": filtere eksik\n" -#: fe-connect.c:3210 +#: fe-connect.c:3449 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "geçersiz LDAP URL \"%s\": geçersiz port numarası\n" -#: fe-connect.c:3244 +#: fe-connect.c:3483 msgid "could not create LDAP structure\n" msgstr "LDAP yapısı oluşturma hatası\n" -#: fe-connect.c:3286 +#: fe-connect.c:3525 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "LDAP sonucunda sorgulama hatası: %s\n" -#: fe-connect.c:3297 +#: fe-connect.c:3536 msgid "more than one entry found on LDAP lookup\n" msgstr "LDAP sorgusu sonucunda birden fazla giriş bulundu\n" -#: fe-connect.c:3298 -#: fe-connect.c:3310 +#: fe-connect.c:3537 +#: fe-connect.c:3549 msgid "no entry found on LDAP lookup\n" msgstr "LDAP sorgusu sonucunda hiçbir giriş bulunamadı\n" -#: fe-connect.c:3321 -#: fe-connect.c:3334 +#: fe-connect.c:3560 +#: fe-connect.c:3573 msgid "attribute has no values on LDAP lookup\n" msgstr "LDAP sorgusu sonucunda bulunan attribute, hiçbir değer içermiyor\n" -#: fe-connect.c:3385 -#: fe-connect.c:3403 -#: fe-connect.c:3810 +#: fe-connect.c:3625 +#: fe-connect.c:3644 +#: fe-connect.c:4055 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "bağlantı bilgi katarında \"%s\" bilgisinden sonra \"=\" işareti eksik\n" -#: fe-connect.c:3466 -#: fe-connect.c:3892 -#: fe-connect.c:4076 +#: fe-connect.c:3708 +#: fe-connect.c:4137 +#: fe-connect.c:4321 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "geçersiz bağlantı seçeneği \"%s\"\n" -#: fe-connect.c:3479 -#: fe-connect.c:3859 +#: fe-connect.c:3724 +#: fe-connect.c:4104 msgid "unterminated quoted string in connection info string\n" msgstr "bağlantı bilgi katarında sonlandırılmamış tırnaklı katar\n" -#: fe-connect.c:3518 +#: fe-connect.c:3763 msgid "could not get home directory to locate service definition file" msgstr "servis dosyasının olduğu ev dizini bulunamadı" -#: fe-connect.c:3551 +#: fe-connect.c:3796 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "\"%s\" servisinin tanımı bulunamadı\n" -#: fe-connect.c:3574 +#: fe-connect.c:3819 #, c-format msgid "service file \"%s\" not found\n" msgstr "\"%s\" servis dosyası bulunamadı\n" -#: fe-connect.c:3587 +#: fe-connect.c:3832 #, c-format msgid "line %d too long in service file \"%s\"\n" msgstr " \"%2$s\" servis dosyasında %1$d no'lu satır çok uzun \n" -#: fe-connect.c:3658 -#: fe-connect.c:3685 +#: fe-connect.c:3903 +#: fe-connect.c:3930 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "\"%s\" servis dosyasında yazım hatası, satır no %d\n" -#: fe-connect.c:4352 +#: fe-connect.c:4597 msgid "connection pointer is NULL\n" msgstr "bağlantı belirteci NULL'dur\n" -#: fe-connect.c:4625 +#: fe-connect.c:4874 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" msgstr "UYARI: \"%s\" password dosyası düz metin dosyası değildir\n" -#: fe-connect.c:4634 +#: fe-connect.c:4883 #, c-format msgid "WARNING: password file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" msgstr "UYARI: \"%s\" şifre dosyası herkes ya da grup tarafından erişilebilir durumda; dosyanın izinleri u=rw (0600) ya da daha az olmalı\n" -#: fe-connect.c:4722 +#: fe-connect.c:4971 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "\"%s\" dosyasından parola okundu\n" -#: fe-exec.c:827 +#: fe-exec.c:810 msgid "NOTICE" msgstr "BİLGİ" -#: fe-exec.c:1014 -#: fe-exec.c:1071 -#: fe-exec.c:1111 +#: fe-exec.c:997 +#: fe-exec.c:1054 +#: fe-exec.c:1094 msgid "command string is a null pointer\n" msgstr "komut katarı null belirteçtir\n" -#: fe-exec.c:1104 -#: fe-exec.c:1199 +#: fe-exec.c:1087 +#: fe-exec.c:1182 msgid "statement name is a null pointer\n" msgstr "durum adı null belirteçtir\n" -#: fe-exec.c:1119 -#: fe-exec.c:1273 -#: fe-exec.c:1928 -#: fe-exec.c:2125 +#: fe-exec.c:1102 +#: fe-exec.c:1256 +#: fe-exec.c:1925 +#: fe-exec.c:2123 msgid "function requires at least protocol version 3.0\n" msgstr "fonksiyon en az 3.0 prokolüne gereksinim duyuyor.\n" -#: fe-exec.c:1230 +#: fe-exec.c:1213 msgid "no connection to the server\n" msgstr "sunucuya bağlantı yok\n" -#: fe-exec.c:1237 +#: fe-exec.c:1220 msgid "another command is already in progress\n" msgstr "şu anda işlenen başka bir komut var\n" -#: fe-exec.c:1349 +#: fe-exec.c:1332 msgid "length must be given for binary parameter\n" msgstr "binary parametresinin uzunluğu belirtilmelidir\n" -#: fe-exec.c:1596 +#: fe-exec.c:1585 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "beklenmeyen asyncStatus: %d\n" -#: fe-exec.c:1616 +#: fe-exec.c:1605 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" msgstr "PGEventProc \"%s\" işlemi PGEVT_RESULTCREATE işlemi sırasında başarısız oldu\n" -#: fe-exec.c:1746 +#: fe-exec.c:1735 msgid "COPY terminated by new PQexec" msgstr "COPY, yeni PQexec tarafından sonlandırıldı" -#: fe-exec.c:1754 +#: fe-exec.c:1743 msgid "COPY IN state must be terminated first\n" msgstr "Öncelikle COPY IN durumu sonlandırılmalıdır\n" -#: fe-exec.c:1774 +#: fe-exec.c:1763 msgid "COPY OUT state must be terminated first\n" msgstr "Öncelikle COPY OUT durumu sonlandırılmalıdır\n" -#: fe-exec.c:2016 -#: fe-exec.c:2082 +#: fe-exec.c:1771 +msgid "PQexec not allowed during COPY BOTH\n" +msgstr "PQexec COPY BOTH sırasında izin verilmiyor\n" + +#: fe-exec.c:2014 +#: fe-exec.c:2080 #: fe-exec.c:2167 -#: fe-protocol2.c:1172 -#: fe-protocol3.c:1557 +#: fe-protocol2.c:1237 +#: fe-protocol3.c:1569 msgid "no COPY in progress\n" msgstr "çalışan COPY süreci yok\n" @@ -549,29 +583,26 @@ msgstr "loread fonksiyonunun OID'i belirlenemiyor\n" msgid "cannot determine OID of function lowrite\n" msgstr "lowrite fonksiyonunun OID'i belirlenemiyor\n" -#: fe-misc.c:262 +#: fe-misc.c:270 #, c-format msgid "integer of size %lu not supported by pqGetInt" msgstr "%lu büyüklüğündeki tamsayılar pqGetInt tarafından desteklenmez." -#: fe-misc.c:298 +#: fe-misc.c:306 #, c-format msgid "integer of size %lu not supported by pqPutInt" msgstr "%lu büyüklüğündeki tamsayılar pqPutInt tarafından desteklenmez." -#: fe-misc.c:578 -#: fe-misc.c:780 +#: fe-misc.c:585 +#: fe-misc.c:784 msgid "connection not open\n" msgstr "bağlantı açık değil\n" -#: fe-misc.c:643 -#: fe-misc.c:733 -#, c-format -msgid "could not receive data from server: %s\n" -msgstr "Sunucudan veri alınamadı: %s\n" - -#: fe-misc.c:750 -#: fe-misc.c:828 +#: fe-misc.c:711 +#: fe-secure.c:364 +#: fe-secure.c:443 +#: fe-secure.c:524 +#: fe-secure.c:632 msgid "" "server closed the connection unexpectedly\n" "\tThis probably means the server terminated abnormally\n" @@ -581,77 +612,75 @@ msgstr "" "\tBu ileti sunucunun isteği işlemeden hemen önce ya da \n" "\tisteği işlerken kapatıldığı anlamına gelir.\n" -#: fe-misc.c:845 -#, c-format -msgid "could not send data to server: %s\n" -msgstr "Sunucuya veri gönderilemedi: %s\n" - -#: fe-misc.c:964 +#: fe-misc.c:948 msgid "timeout expired\n" msgstr "zamanaşımı süresi sona derdi\n" -#: fe-misc.c:1009 +#: fe-misc.c:993 msgid "socket not open\n" msgstr "soket açık değil\n" -#: fe-misc.c:1032 +#: fe-misc.c:1016 #, c-format msgid "select() failed: %s\n" msgstr "select() başarısız oldu: %s\n" -#: fe-protocol2.c:89 +#: fe-protocol2.c:91 #, c-format msgid "invalid setenv state %c, probably indicative of memory corruption\n" msgstr "Geçersiz setenv durumu %c, belleğin zarar görmesinin bir işareti olabilir\n" -#: fe-protocol2.c:330 +#: fe-protocol2.c:390 #, c-format msgid "invalid state %c, probably indicative of memory corruption\n" msgstr "Geçersiz %c durumu, belleğin zarar görmesinin bir işareti olabilir\n" -#: fe-protocol2.c:419 +#: fe-protocol2.c:479 #: fe-protocol3.c:186 #, c-format msgid "message type 0x%02x arrived from server while idle" msgstr "Sunucu boş durumdayken sunucudan 0x%02x ileti tipi geldi" -#: fe-protocol2.c:462 +#: fe-protocol2.c:522 #, c-format msgid "unexpected character %c following empty query response (\"I\" message)" msgstr "Boş sorgu yanıtını takip eden geçersiz karakter:%c (\"I\" ileti)" -#: fe-protocol2.c:516 +#: fe-protocol2.c:576 +#, c-format msgid "server sent data (\"D\" message) without prior row description (\"T\" message)" msgstr "Sunucu öncelikli satır tanımı olmadan veri (\"D\" ileti) gönderdi (\"T\" ileti)" -#: fe-protocol2.c:532 +#: fe-protocol2.c:592 +#, c-format msgid "server sent binary data (\"B\" message) without prior row description (\"T\" message)" msgstr "Sunucu öncelikli satır tanımı olmadan ikili veri (\"D\" ileti) gönderdi (\"T\" ileti)" -#: fe-protocol2.c:547 -#: fe-protocol3.c:382 +#: fe-protocol2.c:612 +#: fe-protocol3.c:388 #, c-format msgid "unexpected response from server; first received character was \"%c\"\n" msgstr "sunucudan beklenmeyen bir yanıt alındı; alınan ilk karakter\"%c\" idi\n" -#: fe-protocol2.c:768 -#: fe-protocol3.c:701 +#: fe-protocol2.c:833 +#: fe-protocol3.c:707 msgid "out of memory for query result\n" msgstr "Sorgu sonucu için yetersiz bellek\n" -#: fe-protocol2.c:1215 -#: fe-protocol3.c:1625 +#: fe-protocol2.c:1280 +#: fe-protocol3.c:1637 #, c-format msgid "%s" msgstr "%s" -#: fe-protocol2.c:1227 +#: fe-protocol2.c:1292 +#, c-format msgid "lost synchronization with server, resetting connection" msgstr "sunucu ile eşzamanlama kayboldu, bağlantı yeniden açılıyor" -#: fe-protocol2.c:1361 -#: fe-protocol2.c:1393 -#: fe-protocol3.c:1828 +#: fe-protocol2.c:1426 +#: fe-protocol2.c:1458 +#: fe-protocol3.c:1840 #, c-format msgid "protocol error: id=0x%x\n" msgstr "protokol hatası: id=0x%x\n" @@ -660,67 +689,67 @@ msgstr "protokol hatası: id=0x%x\n" msgid "server sent data (\"D\" message) without prior row description (\"T\" message)\n" msgstr "Sunucu öncelikli satır tanımı olmadan veri (\"D\" ileti) gönderdi (\"T\" ileti)\n" -#: fe-protocol3.c:403 +#: fe-protocol3.c:409 #, c-format msgid "message contents do not agree with length in message type \"%c\"\n" msgstr "İleti içeriği,\"%c\" ileti tipinin içindeki uzunlukla aynı değil\n" -#: fe-protocol3.c:424 +#: fe-protocol3.c:430 #, c-format msgid "lost synchronization with server: got message type \"%c\", length %d\n" msgstr "sunucu ile eşzamanlılık kayboldu: \"%c\" ileti tipi alındı, uzunluğu %d\n" -#: fe-protocol3.c:646 +#: fe-protocol3.c:652 msgid "unexpected field count in \"D\" message\n" msgstr "\"D\" iletisinde beklenmeyen alan sayısı\n" #. translator: %s represents a digit string -#: fe-protocol3.c:788 -#: fe-protocol3.c:807 +#: fe-protocol3.c:798 +#: fe-protocol3.c:817 #, c-format msgid " at character %s" msgstr "%s. karakterde" -#: fe-protocol3.c:820 +#: fe-protocol3.c:830 #, c-format msgid "DETAIL: %s\n" msgstr "AYRINTI: %s\n" -#: fe-protocol3.c:823 +#: fe-protocol3.c:833 #, c-format msgid "HINT: %s\n" msgstr "İPUCU: %s\n" -#: fe-protocol3.c:826 +#: fe-protocol3.c:836 #, c-format msgid "QUERY: %s\n" msgstr "SORGU: %s\n" -#: fe-protocol3.c:829 +#: fe-protocol3.c:839 #, c-format msgid "CONTEXT: %s\n" msgstr "BAĞLAM: %s\n" -#: fe-protocol3.c:841 +#: fe-protocol3.c:851 msgid "LOCATION: " msgstr "YER: " -#: fe-protocol3.c:843 +#: fe-protocol3.c:853 #, c-format msgid "%s, " msgstr "%s, " -#: fe-protocol3.c:845 +#: fe-protocol3.c:855 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: fe-protocol3.c:1069 +#: fe-protocol3.c:1079 #, c-format msgid "LINE %d: " msgstr "SATIR %d: " -#: fe-protocol3.c:1453 +#: fe-protocol3.c:1465 msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline: COPY OUT metnini yapmıyor\n" @@ -729,113 +758,132 @@ msgstr "PQgetline: COPY OUT metnini yapmıyor\n" msgid "could not establish SSL connection: %s\n" msgstr "SSL bağlantısı sağlanamadı: %s\n" -#: fe-secure.c:349 -#: fe-secure.c:436 -#: fe-secure.c:1162 +#: fe-secure.c:369 +#: fe-secure.c:529 +#: fe-secure.c:1331 #, c-format msgid "SSL SYSCALL error: %s\n" msgstr "SSL SYSCALL hatası: %s\n" -#: fe-secure.c:355 -#: fe-secure.c:442 -#: fe-secure.c:1166 +#: fe-secure.c:376 +#: fe-secure.c:536 +#: fe-secure.c:1335 msgid "SSL SYSCALL error: EOF detected\n" msgstr "SSL SYSCALL hatası: EOF bulundu\n" -#: fe-secure.c:367 -#: fe-secure.c:453 -#: fe-secure.c:1175 +#: fe-secure.c:387 +#: fe-secure.c:547 +#: fe-secure.c:1344 #, c-format msgid "SSL error: %s\n" msgstr "SSL hatası: %s\n" -#: fe-secure.c:377 -#: fe-secure.c:463 -#: fe-secure.c:1184 +#: fe-secure.c:401 +#: fe-secure.c:561 +msgid "SSL connection has been closed unexpectedly\n" +msgstr "SSL bağlantısı beklenmeyen şekilde sonlandırıldı\n" + +#: fe-secure.c:407 +#: fe-secure.c:567 +#: fe-secure.c:1353 #, c-format msgid "unrecognized SSL error code: %d\n" msgstr "tanımlanamayan SSL hata kodu: %d\n" -#: fe-secure.c:601 +#: fe-secure.c:451 +#, c-format +msgid "could not receive data from server: %s\n" +msgstr "Sunucudan veri alınamadı: %s\n" + +#: fe-secure.c:639 +#, c-format +msgid "could not send data to server: %s\n" +msgstr "Sunucuya veri gönderilemedi: %s\n" + +#: fe-secure.c:746 msgid "host name must be specified for a verified SSL connection\n" msgstr "onaylı SSL bağlantısı için sunucu adı belirtilmelidir\n" -#: fe-secure.c:620 +#: fe-secure.c:765 #, c-format msgid "server common name \"%s\" does not match host name \"%s\"\n" msgstr "Sunucu ortak adı olan \"%s\", \"%s\" olan host adı ile eşleşmiyor\n" -#: fe-secure.c:752 +#: fe-secure.c:897 #, c-format msgid "could not create SSL context: %s\n" msgstr "SSL içeriği yaratılamadı: %s\n" -#: fe-secure.c:843 -msgid "could not get home directory to locate client certificate files\n" -msgstr "İstemci sertifika dosyalarının olduğu ev dizini bulunamadı\n" - -#: fe-secure.c:868 +#: fe-secure.c:1019 #, c-format msgid "could not open certificate file \"%s\": %s\n" msgstr "\"%s\" sertifikası açılamadı: %s\n" -#: fe-secure.c:893 -#: fe-secure.c:903 +#: fe-secure.c:1044 +#: fe-secure.c:1054 #, c-format msgid "could not read certificate file \"%s\": %s\n" msgstr "\"%s\" sertifikası okunamadı: %s\n" -#: fe-secure.c:940 +#: fe-secure.c:1091 #, c-format msgid "could not load SSL engine \"%s\": %s\n" msgstr "\"%s\" SSL motoru yüklenemedi: %s\n" -#: fe-secure.c:952 +#: fe-secure.c:1103 #, c-format msgid "could not initialize SSL engine \"%s\": %s\n" msgstr "\"%s\" SSL motoru ilklendirilemedi: %s\n" -#: fe-secure.c:968 +#: fe-secure.c:1119 #, c-format msgid "could not read private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "\"%2$s\" motorundan \"%1$s\" SSL özel anahtarı okunamadı: %3$s\n" -#: fe-secure.c:982 +#: fe-secure.c:1133 #, c-format msgid "could not load private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "\"%2$s\" motorundan \"%1$s\" SSL özel anahtarı yüklenemedi: %3$s\n" -#: fe-secure.c:1017 +#: fe-secure.c:1170 #, c-format msgid "certificate present, but not private key file \"%s\"\n" msgstr "Sertifika mevcut ancak özel anahtar mevcut değil \"%s\"\n" -#: fe-secure.c:1025 +#: fe-secure.c:1178 #, c-format msgid "private key file \"%s\" has group or world access; permissions should be u=rw (0600) or less\n" msgstr "\"%s\" özel anahtar dosyası herkes ya da grup tarafından erişilebilir durumda; dosyanın izinleri u=rw (0600) ya da daha az olmalı\n" -#: fe-secure.c:1036 +#: fe-secure.c:1189 #, c-format msgid "could not load private key file \"%s\": %s\n" msgstr "private key dosyası \"%s\" okunamıyor: %s\n" -#: fe-secure.c:1050 +#: fe-secure.c:1203 #, c-format msgid "certificate does not match private key file \"%s\": %s\n" msgstr "Sertifika, \"%s\" özel anahtar dosyası ile uyuşmuyor: %s\n" -#: fe-secure.c:1075 +#: fe-secure.c:1231 #, c-format msgid "could not read root certificate file \"%s\": %s\n" msgstr "\"%s\"kök sertifika dosyası okunamadı: %s\n" -#: fe-secure.c:1099 +#: fe-secure.c:1258 #, c-format msgid "SSL library does not support CRL certificates (file \"%s\")\n" msgstr "Kurulu SSL kütüphanesi CRL sertifikalarını desteklemiyor (dosya adı \"%s\")\n" -#: fe-secure.c:1120 +#: fe-secure.c:1285 +msgid "" +"could not get home directory to locate root certificate file\n" +"Either provide the file or change sslmode to disable server certificate verification.\n" +msgstr "" +"kök sertifika dosyasının ev dizini bulunamadı\n" +"Ya bir dosya adı belirtin, ya da sunucu sertifika onaylamasını kapatmak için sslmode'u kapatın.\n" + +#: fe-secure.c:1289 #, c-format msgid "" "root certificate file \"%s\" does not exist\n" @@ -844,24 +892,28 @@ msgstr "" "\"%s\" kök sertifika dosyası mevcut değil\n" "Ya bu dosyayı oluşturun ya da sslmode ayarını sunucu sertifika onaylamasını kapatmak için değiştirin.\n" -#: fe-secure.c:1203 +#: fe-secure.c:1372 #, c-format msgid "certificate could not be obtained: %s\n" msgstr "sertifika elde edilemedi: %s\n" -#: fe-secure.c:1231 +#: fe-secure.c:1400 msgid "SSL certificate's common name contains embedded null\n" msgstr "SSL sertifikasının ortak adı (common name) gömülü olarak null içeriyor\n" -#: fe-secure.c:1307 +#: fe-secure.c:1476 +#, c-format msgid "no SSL error reported" msgstr "SSL hatası raporlanmadı" -#: fe-secure.c:1316 +#: fe-secure.c:1485 #, c-format msgid "SSL error code %lu" msgstr "SSL hata kodu: %lu" +#~ msgid "could not get home directory to locate client certificate files\n" +#~ msgstr "İstemci sertifika dosyalarının olduğu ev dizini bulunamadı\n" + #~ msgid "" #~ "verified SSL connections are only supported when connecting to a host name" #~ msgstr "" diff --git a/src/interfaces/libpq/po/zh_CN.po b/src/interfaces/libpq/po/zh_CN.po index d456f27e47..ff8ab8325b 100644 --- a/src/interfaces/libpq/po/zh_CN.po +++ b/src/interfaces/libpq/po/zh_CN.po @@ -1,84 +1,84 @@ # simplified Chinese translation file for libpq # Bao Wei , 2002 # -# $PostgreSQL: pgsql/src/interfaces/libpq/po/zh_CN.po,v 1.8 2005/01/06 09:07:17 petere Exp $ -# msgid "" msgstr "" "Project-Id-Version: libpq (PostgreSQL 9.0)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-10-01 14:43+0000\n" +"POT-Creation-Date: 2013-01-29 13:51+0000\n" "PO-Revision-Date: 2010-10-01 12:43+0800\n" "Last-Translator: Weibin \n" "Language-Team: Chinese (Simplified)\n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: fe-auth.c:212 fe-auth.c:432 fe-auth.c:659 +#: fe-auth.c:210 fe-auth.c:429 fe-auth.c:656 msgid "host name must be specified\n" msgstr "必须指定主机名\n" # fe-auth.c:395 -#: fe-auth.c:242 +#: fe-auth.c:240 #, c-format msgid "could not set socket to blocking mode: %s\n" msgstr "无法将套接字设置为阻塞模式: %s\n" # fe-auth.c:412 fe-auth.c:416 -#: fe-auth.c:260 fe-auth.c:264 +#: fe-auth.c:258 fe-auth.c:262 #, c-format msgid "Kerberos 5 authentication rejected: %*s\n" msgstr "kerberos 5 认证拒绝: %*s\n" # fe-auth.c:440 -#: fe-auth.c:290 +#: fe-auth.c:288 #, c-format msgid "could not restore non-blocking mode on socket: %s\n" msgstr "无法在套接字: %s 上恢复非阻塞模式\n" -#: fe-auth.c:403 +#: fe-auth.c:400 msgid "GSSAPI continuation error" msgstr "GSSAPI连续出现错误" -#: fe-auth.c:439 +#: fe-auth.c:436 msgid "duplicate GSS authentication request\n" msgstr "重复的GSS认证请求\n" -#: fe-auth.c:459 +#: fe-auth.c:456 msgid "GSSAPI name import error" msgstr "GSSAPI名称导入错误" -#: fe-auth.c:545 +#: fe-auth.c:542 msgid "SSPI continuation error" msgstr "SSPI连续出现错误" # fe-connect.c:2427 fe-connect.c:2436 fe-connect.c:2933 fe-exec.c:1284 # fe-lobj.c:536 -#: fe-auth.c:556 fe-auth.c:630 fe-auth.c:665 fe-auth.c:762 fe-connect.c:1802 -#: fe-connect.c:3129 fe-connect.c:3346 fe-connect.c:3762 fe-connect.c:3771 -#: fe-connect.c:3908 fe-connect.c:3954 fe-connect.c:3972 fe-connect.c:4051 -#: fe-connect.c:4121 fe-connect.c:4167 fe-connect.c:4185 fe-exec.c:3121 -#: fe-exec.c:3286 fe-lobj.c:696 fe-protocol2.c:1027 fe-protocol3.c:1421 +#: fe-auth.c:553 fe-auth.c:627 fe-auth.c:662 fe-auth.c:757 fe-connect.c:1970 +#: fe-connect.c:3379 fe-connect.c:3597 fe-connect.c:4018 fe-connect.c:4027 +#: fe-connect.c:4164 fe-connect.c:4210 fe-connect.c:4228 fe-connect.c:4307 +#: fe-connect.c:4377 fe-connect.c:4423 fe-connect.c:4441 fe-exec.c:3121 +#: fe-exec.c:3286 fe-lobj.c:711 fe-protocol2.c:1092 fe-protocol3.c:1433 +#: fe-secure.c:766 msgid "out of memory\n" msgstr "内存用尽\n" -#: fe-auth.c:645 +#: fe-auth.c:642 msgid "could not acquire SSPI credentials" msgstr "无法获得SSPI证书" # fe-auth.c:503 -#: fe-auth.c:738 +#: fe-auth.c:733 msgid "SCM_CRED authentication method not supported\n" msgstr "不支持 SCM_CRED 认证方式\n" # fe-auth.c:595 -#: fe-auth.c:812 +#: fe-auth.c:807 msgid "Kerberos 4 authentication not supported\n" msgstr "不支持 Kerberos 4 认证\n" # fe-auth.c:612 -#: fe-auth.c:828 +#: fe-auth.c:823 msgid "Kerberos 5 authentication not supported\n" msgstr "不支持 Kerberos 5 认证\n" @@ -88,39 +88,39 @@ msgid "GSSAPI authentication not supported\n" msgstr "不支持GSSAPI认证\n" # fe-auth.c:595 -#: fe-auth.c:919 +#: fe-auth.c:927 msgid "SSPI authentication not supported\n" msgstr "不支持SSPI认证\n" # fe-auth.c:595 -#: fe-auth.c:926 +#: fe-auth.c:935 msgid "Crypt authentication not supported\n" msgstr "不支持Crypt认证\n" # fe-auth.c:640 -#: fe-auth.c:953 +#: fe-auth.c:962 #, c-format msgid "authentication method %u not supported\n" msgstr "不支持 %u 认证方式\n" -#: fe-connect.c:712 +#: fe-connect.c:758 #, c-format msgid "invalid sslmode value: \"%s\"\n" msgstr "无效的 sslmode 值: \"%s\"\n" -#: fe-connect.c:733 +#: fe-connect.c:779 #, c-format msgid "sslmode value \"%s\" invalid when SSL support is not compiled in\n" msgstr "无效的 sslmode 值 \"%s\" 当没有把 SSL 支持编译进来时\n" # fe-connect.c:732 -#: fe-connect.c:916 +#: fe-connect.c:972 #, c-format msgid "could not set socket to TCP no delay mode: %s\n" msgstr "无法将套接字设置为 TCP 无延迟模式: %s\n" # fe-connect.c:752 -#: fe-connect.c:946 +#: fe-connect.c:1002 #, c-format msgid "" "could not connect to server: %s\n" @@ -132,7 +132,19 @@ msgstr "" "\t\"%s\"上准备接受联接?\n" # fe-connect.c:761 -#: fe-connect.c:956 +#: fe-connect.c:1057 +#, c-format +msgid "" +"could not connect to server: %s\n" +"\tIs the server running on host \"%s\" (%s) and accepting\n" +"\tTCP/IP connections on port %s?\n" +msgstr "" +"无法联接到服务器: %s\n" +"\t服务器是否在主机 \"%s\"(%s) 上运行并且准备接受在端口\n" +"%s 上的 TCP/IP 联接?\n" + +# fe-connect.c:761 +#: fe-connect.c:1066 #, c-format msgid "" "could not connect to server: %s\n" @@ -143,317 +155,345 @@ msgstr "" "\t服务器是否在主机 \"%s\" 上运行并且准备接受在端口\n" "%s 上的 TCP/IP 联接?\n" -#: fe-connect.c:1011 +#: fe-connect.c:1117 #, c-format msgid "setsockopt(TCP_KEEPIDLE) failed: %s\n" msgstr "执行setsockopt(TCP_KEEPIDLE)失败: %s\n" -#: fe-connect.c:1024 +#: fe-connect.c:1130 #, c-format msgid "setsockopt(TCP_KEEPALIVE) failed: %s\n" msgstr "执行setsockopt(TCP_KEEPALIVE)失败: %s\n" -#: fe-connect.c:1056 +#: fe-connect.c:1162 #, c-format msgid "setsockopt(TCP_KEEPINTVL) failed: %s\n" msgstr "执行setsockopt(TCP_KEEPINTVL)失败: %s\n" -#: fe-connect.c:1088 +#: fe-connect.c:1194 #, c-format msgid "setsockopt(TCP_KEEPCNT) failed: %s\n" msgstr "执行setsockopt(TCP_KEEPCNT) 失败: %s\n" -#: fe-connect.c:1137 +#: fe-connect.c:1242 #, c-format msgid "WSAIoctl(SIO_KEEPALIVE_VALS) failed: %ui\n" msgstr "执行WSAIoctl(SIO_KEEPALIVE_VALS)失败:%u\n" -#: fe-connect.c:1189 +#: fe-connect.c:1294 #, c-format msgid "invalid port number: \"%s\"\n" msgstr "无效端口号: \"%s\"\n" +#: fe-connect.c:1327 +#, c-format +msgid "Unix-domain socket path \"%s\" is too long (maximum %d bytes)\n" +msgstr "Unix域的套接字路径\"%s\"超长(最大为%d字节)\n" + # fe-misc.c:702 -#: fe-connect.c:1231 +#: fe-connect.c:1346 #, c-format msgid "could not translate host name \"%s\" to address: %s\n" msgstr "无法解释主机名 \"%s\" 到地址: %s\n" # fe-misc.c:702 -#: fe-connect.c:1235 +#: fe-connect.c:1350 #, c-format msgid "could not translate Unix-domain socket path \"%s\" to address: %s\n" msgstr "无法解释 Unix-domian 套接字路径 \"%s\" 到地址: %s\n" # fe-connect.c:1232 -#: fe-connect.c:1444 +#: fe-connect.c:1560 msgid "invalid connection state, probably indicative of memory corruption\n" msgstr "无效的联接状态, 可能是存储器数据被破坏的标志\n" # fe-connect.c:891 -#: fe-connect.c:1487 +#: fe-connect.c:1601 #, c-format msgid "could not create socket: %s\n" msgstr "无法创建套接字: %s\n" # fe-connect.c:708 -#: fe-connect.c:1510 +#: fe-connect.c:1624 #, c-format msgid "could not set socket to non-blocking mode: %s\n" msgstr "无法将套接字设置为非阻塞模式: %s\n" # fe-auth.c:395 -#: fe-connect.c:1522 +#: fe-connect.c:1636 #, c-format msgid "could not set socket to close-on-exec mode: %s\n" msgstr "无法将套接字设置为执行时关闭 (close-on-exec) 模式: %s\n" -#: fe-connect.c:1540 +#: fe-connect.c:1656 msgid "keepalives parameter must be an integer\n" msgstr "参数keepalives必须是一个整数\n" -#: fe-connect.c:1553 +#: fe-connect.c:1669 #, c-format msgid "setsockopt(SO_KEEPALIVE) failed: %s\n" msgstr "执行setsockopt(SO_KEEPALIVE) 失败: %s\n" # fe-connect.c:1263 -#: fe-connect.c:1694 +#: fe-connect.c:1810 #, c-format msgid "could not get socket error status: %s\n" msgstr "无法获取套接字错误状态: %s\n" # fe-connect.c:1283 -#: fe-connect.c:1732 +#: fe-connect.c:1848 #, c-format msgid "could not get client address from socket: %s\n" msgstr "无法从套接字获取客户端地址: %s\n" +#: fe-connect.c:1889 +msgid "requirepeer parameter is not supported on this platform\n" +msgstr "在此平台上不支持requirepeer参数\n" + +#: fe-connect.c:1892 +#, c-format +msgid "could not get peer credentials: %s\n" +msgstr "无法获得对等(peer)证书:%s\n" + +#: fe-connect.c:1902 +#, c-format +msgid "local user with ID %d does not exist\n" +msgstr "ID 为 %d 的本地用户不存在\n" + +#: fe-connect.c:1910 +#, c-format +msgid "requirepeer specifies \"%s\", but actual peer user name is \"%s\"\n" +msgstr "期望对方用户指定值为 \"%s\", 但实际的对方用户名为 \"%s\"\n" + # fe-connect.c:959 -#: fe-connect.c:1776 +#: fe-connect.c:1944 #, c-format msgid "could not send SSL negotiation packet: %s\n" msgstr "无法发送 SSL 握手包: %s\n" # fe-connect.c:1322 -#: fe-connect.c:1815 +#: fe-connect.c:1983 #, c-format msgid "could not send startup packet: %s\n" msgstr "无法发送启动包: %s\n" # fe-connect.c:1010 -#: fe-connect.c:1882 fe-connect.c:1901 +#: fe-connect.c:2053 msgid "server does not support SSL, but SSL was required\n" msgstr "服务器不支持 SSL, 但是要求使用 SSL\n" # fe-connect.c:1001 -#: fe-connect.c:1917 +#: fe-connect.c:2079 #, c-format msgid "received invalid response to SSL negotiation: %c\n" msgstr "收到对 SSL 握手的无效响应: %c\n" # fe-connect.c:1378 -#: fe-connect.c:1993 fe-connect.c:2026 +#: fe-connect.c:2158 fe-connect.c:2191 #, c-format msgid "expected authentication request from server, but received %c\n" msgstr "期待来自服务器的认证请求, 却收到 %c\n" -#: fe-connect.c:2197 +#: fe-connect.c:2372 #, c-format msgid "out of memory allocating GSSAPI buffer (%i)" msgstr "在分配GSSAPI缓冲区(%i)时内存用尽" # fe-connect.c:1490 -#: fe-connect.c:2282 +#: fe-connect.c:2457 msgid "unexpected message from server during startup\n" msgstr "启动过程中收到来自服务器的非预期信息\n" # fe-connect.c:1549 -#: fe-connect.c:2378 +#: fe-connect.c:2556 #, c-format msgid "invalid connection state %d, probably indicative of memory corruption\n" msgstr "无效的连接状态 %d, 这可能表示内存出现问题\n" -#: fe-connect.c:2737 fe-connect.c:2797 +#: fe-connect.c:2987 fe-connect.c:3047 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_CONNRESET event\n" msgstr "在PGEVT_CONNRESET事件触发期间执行PGEventProc \"%s\"错误\n" -#: fe-connect.c:3142 +#: fe-connect.c:3392 #, c-format msgid "invalid LDAP URL \"%s\": scheme must be ldap://\n" msgstr "无效LDAP URL\"%s\": 模式必须是ldap://\n" -#: fe-connect.c:3157 +#: fe-connect.c:3407 #, c-format msgid "invalid LDAP URL \"%s\": missing distinguished name\n" msgstr "无效LDAP URL \"%s\": 丢失可区分的名称\n" -#: fe-connect.c:3168 fe-connect.c:3221 +#: fe-connect.c:3418 fe-connect.c:3471 #, c-format msgid "invalid LDAP URL \"%s\": must have exactly one attribute\n" msgstr "无效LDAP URL \"%s\": 只能有一个属性\n" -#: fe-connect.c:3178 fe-connect.c:3235 +#: fe-connect.c:3428 fe-connect.c:3485 #, c-format msgid "invalid LDAP URL \"%s\": must have search scope (base/one/sub)\n" msgstr "无效LDAP URL \"%s\": 必须有搜索范围(base/one/sub)\n" -#: fe-connect.c:3189 +#: fe-connect.c:3439 #, c-format msgid "invalid LDAP URL \"%s\": no filter\n" msgstr "无效的 LDAP URL \"%s\": 没有过滤器\n" -#: fe-connect.c:3210 +#: fe-connect.c:3460 #, c-format msgid "invalid LDAP URL \"%s\": invalid port number\n" msgstr "无效LDAP URL \"%s\": 无效端口号\n" -#: fe-connect.c:3244 +#: fe-connect.c:3494 msgid "could not create LDAP structure\n" msgstr "无法创建LDAP结构: %s\n" -#: fe-connect.c:3286 +#: fe-connect.c:3536 #, c-format msgid "lookup on LDAP server failed: %s\n" msgstr "在LDAP服务器上的查找失败: %s\n" -#: fe-connect.c:3297 +#: fe-connect.c:3547 msgid "more than one entry found on LDAP lookup\n" msgstr "在LDAP搜索上找到多个入口\n" -#: fe-connect.c:3298 fe-connect.c:3310 +#: fe-connect.c:3548 fe-connect.c:3560 msgid "no entry found on LDAP lookup\n" msgstr "在LDAP查找上没有发现入口\n" -#: fe-connect.c:3321 fe-connect.c:3334 +#: fe-connect.c:3571 fe-connect.c:3584 msgid "attribute has no values on LDAP lookup\n" msgstr "在LDAP查找上的属性没有值\n" # fe-connect.c:2475 -#: fe-connect.c:3385 fe-connect.c:3403 fe-connect.c:3810 +#: fe-connect.c:3636 fe-connect.c:3655 fe-connect.c:4066 #, c-format msgid "missing \"=\" after \"%s\" in connection info string\n" msgstr "在联接信息字串里的 \"%s\" 后面缺少 \"=\"\n" # fe-connect.c:2558 -#: fe-connect.c:3466 fe-connect.c:3892 fe-connect.c:4076 +#: fe-connect.c:3719 fe-connect.c:4148 fe-connect.c:4332 #, c-format msgid "invalid connection option \"%s\"\n" msgstr "非法联接选项 \"%s\"\n" # fe-connect.c:2524 -#: fe-connect.c:3479 fe-connect.c:3859 +#: fe-connect.c:3735 fe-connect.c:4115 msgid "unterminated quoted string in connection info string\n" msgstr "联接信息字串中未结束的引号字串\n" -#: fe-connect.c:3518 +#: fe-connect.c:3774 msgid "could not get home directory to locate service definition file" msgstr "无法进入home目录来定位服务定义文件" -#: fe-connect.c:3551 +#: fe-connect.c:3807 #, c-format msgid "definition of service \"%s\" not found\n" msgstr "错误:没有找到服务\"%s\"的定义\n" -#: fe-connect.c:3574 +#: fe-connect.c:3830 #, c-format msgid "service file \"%s\" not found\n" msgstr "错误:没有找到服务文件\"%s\"\n" -#: fe-connect.c:3587 +#: fe-connect.c:3843 #, c-format msgid "line %d too long in service file \"%s\"\n" msgstr "在服务文件\"%2$s\"中的第%1$d行的长度太长\n" -#: fe-connect.c:3658 fe-connect.c:3685 +#: fe-connect.c:3914 fe-connect.c:3941 #, c-format msgid "syntax error in service file \"%s\", line %d\n" msgstr "在服务文件\"%s\"的第%d行出现语法错误\n" # fe-connect.c:2744 -#: fe-connect.c:4352 +#: fe-connect.c:4608 msgid "connection pointer is NULL\n" msgstr "联接指针是 NULL\n" -#: fe-connect.c:4625 +#: fe-connect.c:4885 #, c-format msgid "WARNING: password file \"%s\" is not a plain file\n" msgstr "警告: 口令文件\"%s\"不是普通文本文件\n" # fe-connect.c:2953 -#: fe-connect.c:4634 +#: fe-connect.c:4894 #, c-format msgid "" "WARNING: password file \"%s\" has group or world access; permissions should " "be u=rw (0600) or less\n" msgstr "警告: 口令文件\"%s\"的访问权限过大; 权限应设置 为 u=rw (0600)或更少\n" -#: fe-connect.c:4722 +#: fe-connect.c:4982 #, c-format msgid "password retrieved from file \"%s\"\n" msgstr "从文件\"%s\"中获取口令\n" -#: fe-exec.c:827 +#: fe-exec.c:810 msgid "NOTICE" msgstr "注意" # fe-exec.c:737 -#: fe-exec.c:1014 fe-exec.c:1071 fe-exec.c:1111 +#: fe-exec.c:997 fe-exec.c:1054 fe-exec.c:1094 msgid "command string is a null pointer\n" msgstr "命令字串是一个空指针\n" # fe-exec.c:737 -#: fe-exec.c:1104 fe-exec.c:1199 +#: fe-exec.c:1087 fe-exec.c:1182 msgid "statement name is a null pointer\n" msgstr "声明名字是一个空指针\n" -#: fe-exec.c:1119 fe-exec.c:1273 fe-exec.c:1928 fe-exec.c:2125 +#: fe-exec.c:1102 fe-exec.c:1256 fe-exec.c:1925 fe-exec.c:2123 msgid "function requires at least protocol version 3.0\n" msgstr "函数至少需要 3.0 版本的协议\n" # fe-exec.c:745 -#: fe-exec.c:1230 +#: fe-exec.c:1213 msgid "no connection to the server\n" msgstr "没有到服务器的联接\n" # fe-exec.c:752 -#: fe-exec.c:1237 +#: fe-exec.c:1220 msgid "another command is already in progress\n" msgstr "已经有另外一条命令在处理\n" -#: fe-exec.c:1349 +#: fe-exec.c:1332 msgid "length must be given for binary parameter\n" msgstr "对于2进制参数必须指定长度\n" # fe-exec.c:1371 -#: fe-exec.c:1596 +#: fe-exec.c:1585 #, c-format msgid "unexpected asyncStatus: %d\n" msgstr "意外的 asyncStatus(异步状态): %d\n" -#: fe-exec.c:1616 +#: fe-exec.c:1605 #, c-format msgid "PGEventProc \"%s\" failed during PGEVT_RESULTCREATE event\n" msgstr "在PGEVT_CONNRESET事件触发期间执行PGEventProc \"%s\"错误\n" -#: fe-exec.c:1746 +#: fe-exec.c:1735 msgid "COPY terminated by new PQexec" msgstr "COPY 被一个新的 PQexec 终止" # fe-exec.c:1421 -#: fe-exec.c:1754 +#: fe-exec.c:1743 msgid "COPY IN state must be terminated first\n" msgstr "COPY IN 状态必须先结束\n" # fe-exec.c:1421 -#: fe-exec.c:1774 +#: fe-exec.c:1763 msgid "COPY OUT state must be terminated first\n" msgstr "COPY OUT 状态必须先结束\n" +#: fe-exec.c:1771 +msgid "PQexec not allowed during COPY BOTH\n" +msgstr "在 COPY BOTH时不允许调用PQexec\n" + # fe-exec.c:1780 -#: fe-exec.c:2016 fe-exec.c:2082 fe-exec.c:2167 fe-protocol2.c:1172 -#: fe-protocol3.c:1557 +#: fe-exec.c:2014 fe-exec.c:2080 fe-exec.c:2167 fe-protocol2.c:1237 +#: fe-protocol3.c:1569 msgid "no COPY in progress\n" msgstr "没有正在处理的 COPY\n" @@ -506,91 +546,86 @@ msgid "cannot determine OID of function lo_create\n" msgstr "无法确定函数 lo_creat 的 OID\n" # fe-lobj.c:400 fe-lobj.c:483 -#: fe-lobj.c:525 fe-lobj.c:624 +#: fe-lobj.c:525 fe-lobj.c:634 #, c-format msgid "could not open file \"%s\": %s\n" msgstr "无法打开文件 \"%s\": %s\n" -#: fe-lobj.c:575 +#: fe-lobj.c:580 #, c-format msgid "could not read from file \"%s\": %s\n" msgstr "无法读取文件 \"%s\": %s\n" -#: fe-lobj.c:639 fe-lobj.c:663 +#: fe-lobj.c:654 fe-lobj.c:678 #, c-format msgid "could not write to file \"%s\": %s\n" msgstr "无法写入文件 \"%s\": %s\n" # fe-lobj.c:564 -#: fe-lobj.c:744 +#: fe-lobj.c:759 msgid "query to initialize large object functions did not return data\n" msgstr "初始化大对象函数的查询没有返回数据\n" # fe-lobj.c:602 -#: fe-lobj.c:785 +#: fe-lobj.c:800 msgid "cannot determine OID of function lo_open\n" msgstr "无法判断函数 lo_open 的 OID\n" # fe-lobj.c:609 -#: fe-lobj.c:792 +#: fe-lobj.c:807 msgid "cannot determine OID of function lo_close\n" msgstr "无法判断函数 lo_close 的 OID\n" # fe-lobj.c:616 -#: fe-lobj.c:799 +#: fe-lobj.c:814 msgid "cannot determine OID of function lo_creat\n" msgstr "无法判断函数 lo_creat 的 OID\n" # fe-lobj.c:623 -#: fe-lobj.c:806 +#: fe-lobj.c:821 msgid "cannot determine OID of function lo_unlink\n" msgstr "无法判断函数 lo_unlink 的 OID\n" # fe-lobj.c:630 -#: fe-lobj.c:813 +#: fe-lobj.c:828 msgid "cannot determine OID of function lo_lseek\n" msgstr "无法判断函数 lo_lseek 的 OID\n" # fe-lobj.c:637 -#: fe-lobj.c:820 +#: fe-lobj.c:835 msgid "cannot determine OID of function lo_tell\n" msgstr "无法判断函数 lo_tell 的 OID\n" # fe-lobj.c:644 -#: fe-lobj.c:827 +#: fe-lobj.c:842 msgid "cannot determine OID of function loread\n" msgstr "无法判断函数 loread 的 OID\n" # fe-lobj.c:651 -#: fe-lobj.c:834 +#: fe-lobj.c:849 msgid "cannot determine OID of function lowrite\n" msgstr "无法判断函数 lowrite 的 OID\n" # fe-misc.c:303 -#: fe-misc.c:262 +#: fe-misc.c:270 #, c-format msgid "integer of size %lu not supported by pqGetInt" msgstr "pgGetInt 不支持大小为 %lu 的整数" # fe-misc.c:341 -#: fe-misc.c:298 +#: fe-misc.c:306 #, c-format msgid "integer of size %lu not supported by pqPutInt" msgstr "pgPutInt 不支持大小为 %lu 的整数" # fe-misc.c:450 fe-misc.c:642 fe-misc.c:798 -#: fe-misc.c:578 fe-misc.c:780 +#: fe-misc.c:585 fe-misc.c:784 msgid "connection not open\n" msgstr "联接未打开\n" -# fe-misc.c:515 fe-misc.c:595 -#: fe-misc.c:643 fe-misc.c:733 -#, c-format -msgid "could not receive data from server: %s\n" -msgstr "无法从服务器接收数据: %s\n" - # fe-misc.c:612 fe-misc.c:686 -#: fe-misc.c:750 fe-misc.c:828 +#: fe-misc.c:711 fe-secure.c:364 fe-secure.c:443 fe-secure.c:524 +#: fe-secure.c:632 msgid "" "server closed the connection unexpectedly\n" "\tThis probably means the server terminated abnormally\n" @@ -600,50 +635,44 @@ msgstr "" "\t这种现象通常意味着服务器在处理请求之前\n" "或者正在处理请求的时候意外中止\n" -# fe-misc.c:702 -#: fe-misc.c:845 -#, c-format -msgid "could not send data to server: %s\n" -msgstr "无法向服务器发送数据: %s\n" - -#: fe-misc.c:964 +#: fe-misc.c:948 msgid "timeout expired\n" msgstr "超时满\n" # fe-misc.c:450 fe-misc.c:642 fe-misc.c:798 -#: fe-misc.c:1009 +#: fe-misc.c:993 msgid "socket not open\n" msgstr "套接字未打开\n" # fe-misc.c:389 fe-misc.c:423 fe-misc.c:838 -#: fe-misc.c:1032 +#: fe-misc.c:1016 #, c-format msgid "select() failed: %s\n" msgstr "select() 失败: %s\n" # fe-connect.c:1549 -#: fe-protocol2.c:89 +#: fe-protocol2.c:91 #, c-format msgid "invalid setenv state %c, probably indicative of memory corruption\n" msgstr "无效的 setenv 状态 %c, 可能是内存被破坏\n" # fe-connect.c:1549 -#: fe-protocol2.c:330 +#: fe-protocol2.c:390 #, c-format msgid "invalid state %c, probably indicative of memory corruption\n" msgstr "无效状态 %c, 可能是内存被破坏\n" -#: fe-protocol2.c:419 fe-protocol3.c:186 +#: fe-protocol2.c:479 fe-protocol3.c:186 #, c-format msgid "message type 0x%02x arrived from server while idle" msgstr "当空闲时收到服务起发送过来的消息类型 0x%02x" -#: fe-protocol2.c:462 +#: fe-protocol2.c:522 #, c-format msgid "unexpected character %c following empty query response (\"I\" message)" msgstr "unexpected character %c following empty query response (\"I\" message)" -#: fe-protocol2.c:516 +#: fe-protocol2.c:576 msgid "" "server sent data (\"D\" message) without prior row description (\"T\" " "message)" @@ -651,7 +680,7 @@ msgstr "" "server sent data (\"D\" message) without prior row description (\"T\" " "message)" -#: fe-protocol2.c:532 +#: fe-protocol2.c:592 msgid "" "server sent binary data (\"B\" message) without prior row description (\"T\" " "message)" @@ -660,27 +689,27 @@ msgstr "" "message)" # fe-connect.c:1378 -#: fe-protocol2.c:547 fe-protocol3.c:382 +#: fe-protocol2.c:612 fe-protocol3.c:388 #, c-format msgid "unexpected response from server; first received character was \"%c\"\n" msgstr "来自服务器意外的回执, 第一个收到的字符是 \"%c\"\n" # fe-connect.c:2427 fe-connect.c:2436 fe-connect.c:2933 fe-exec.c:1284 # fe-lobj.c:536 -#: fe-protocol2.c:768 fe-protocol3.c:701 +#: fe-protocol2.c:833 fe-protocol3.c:707 msgid "out of memory for query result\n" msgstr "为查询结果内存用尽\n" -#: fe-protocol2.c:1215 fe-protocol3.c:1625 +#: fe-protocol2.c:1280 fe-protocol3.c:1637 #, c-format msgid "%s" msgstr "%s" -#: fe-protocol2.c:1227 +#: fe-protocol2.c:1292 msgid "lost synchronization with server, resetting connection" msgstr "失去与服务器同步, 重置连接" -#: fe-protocol2.c:1361 fe-protocol2.c:1393 fe-protocol3.c:1828 +#: fe-protocol2.c:1426 fe-protocol2.c:1458 fe-protocol3.c:1840 #, c-format msgid "protocol error: id=0x%x\n" msgstr "协议错误: id=0x%x\n" @@ -693,66 +722,66 @@ msgstr "" "server sent data (\"D\" message) without prior row description (\"T\" " "message)\n" -#: fe-protocol3.c:403 +#: fe-protocol3.c:409 #, c-format msgid "message contents do not agree with length in message type \"%c\"\n" msgstr "在消息类型 \"%c\" 中, 消息内容与长度不匹配\n" -#: fe-protocol3.c:424 +#: fe-protocol3.c:430 #, c-format msgid "lost synchronization with server: got message type \"%c\", length %d\n" msgstr "失去与服务器同步: 获取到消息类型 \"%c\", 长度 %d\n" -#: fe-protocol3.c:646 +#: fe-protocol3.c:652 msgid "unexpected field count in \"D\" message\n" msgstr "在 \"D\" 消息中, 意外的字段数\n" #. translator: %s represents a digit string -#: fe-protocol3.c:788 fe-protocol3.c:807 +#: fe-protocol3.c:798 fe-protocol3.c:817 #, c-format msgid " at character %s" msgstr " 在字符 %s" -#: fe-protocol3.c:820 +#: fe-protocol3.c:830 #, c-format msgid "DETAIL: %s\n" msgstr "描述: %s\n" -#: fe-protocol3.c:823 +#: fe-protocol3.c:833 #, c-format msgid "HINT: %s\n" msgstr "提示: %s\n" -#: fe-protocol3.c:826 +#: fe-protocol3.c:836 #, c-format msgid "QUERY: %s\n" msgstr "查询: %s\n" -#: fe-protocol3.c:829 +#: fe-protocol3.c:839 #, c-format msgid "CONTEXT: %s\n" msgstr "背景: %s\n" -#: fe-protocol3.c:841 +#: fe-protocol3.c:851 msgid "LOCATION: " msgstr "位置: " -#: fe-protocol3.c:843 +#: fe-protocol3.c:853 #, c-format msgid "%s, " msgstr "%s, " -#: fe-protocol3.c:845 +#: fe-protocol3.c:855 #, c-format msgid "%s:%s" msgstr "%s:%s" -#: fe-protocol3.c:1069 +#: fe-protocol3.c:1079 #, c-format msgid "LINE %d: " msgstr "第%d行" -#: fe-protocol3.c:1453 +#: fe-protocol3.c:1465 msgid "PQgetline: not doing text COPY OUT\n" msgstr "PQgetline: not doing text COPY OUT\n" @@ -761,115 +790,144 @@ msgstr "PQgetline: not doing text COPY OUT\n" msgid "could not establish SSL connection: %s\n" msgstr "无法建立 SSL 联接: %s\n" -#: fe-secure.c:349 fe-secure.c:436 fe-secure.c:1162 +#: fe-secure.c:369 fe-secure.c:529 fe-secure.c:1384 #, c-format msgid "SSL SYSCALL error: %s\n" msgstr "SSL SYSCALL 错误: %s\n" -#: fe-secure.c:355 fe-secure.c:442 fe-secure.c:1166 +#: fe-secure.c:376 fe-secure.c:536 fe-secure.c:1388 msgid "SSL SYSCALL error: EOF detected\n" msgstr "SSL SYSCALL 错误: 发现结束符\n" # fe-auth.c:232 -#: fe-secure.c:367 fe-secure.c:453 fe-secure.c:1175 +#: fe-secure.c:387 fe-secure.c:547 fe-secure.c:1397 #, c-format msgid "SSL error: %s\n" msgstr "SSL 错误: %s\n" -#: fe-secure.c:377 fe-secure.c:463 fe-secure.c:1184 +#: fe-secure.c:401 fe-secure.c:561 +msgid "SSL connection has been closed unexpectedly\n" +msgstr "SSL连接异常关闭\n" + +#: fe-secure.c:407 fe-secure.c:567 fe-secure.c:1406 #, c-format msgid "unrecognized SSL error code: %d\n" msgstr "未知的 SSL 错误码: %d\n" -#: fe-secure.c:601 +# fe-misc.c:515 fe-misc.c:595 +#: fe-secure.c:451 +#, c-format +msgid "could not receive data from server: %s\n" +msgstr "无法从服务器接收数据: %s\n" + +# fe-misc.c:702 +#: fe-secure.c:639 +#, c-format +msgid "could not send data to server: %s\n" +msgstr "无法向服务器发送数据: %s\n" + +#: fe-secure.c:759 fe-secure.c:776 +msgid "could not get server common name from server certificate\n" +msgstr "从服务器证书中无法得到服务器的CN值(common name)\n" + +#: fe-secure.c:789 +msgid "SSL certificate's common name contains embedded null\n" +msgstr "SSL认证的普通名称包含了嵌入的空值\n" + +#: fe-secure.c:801 msgid "host name must be specified for a verified SSL connection\n" msgstr "必须为一个已验证的SSL连接指定主机名\n" -#: fe-secure.c:620 +#: fe-secure.c:815 #, c-format msgid "server common name \"%s\" does not match host name \"%s\"\n" msgstr "服务器名字 \"%s\"与主机名不匹配\"%s\"\n" -#: fe-secure.c:752 +#: fe-secure.c:950 #, c-format msgid "could not create SSL context: %s\n" msgstr "无法创建 SSL 环境: %s\n" -#: fe-secure.c:843 -msgid "could not get home directory to locate client certificate files\n" -msgstr "无法进入home目录来定位客户端认证文件\n" - # fe-lobj.c:400 fe-lobj.c:483 -#: fe-secure.c:868 +#: fe-secure.c:1072 #, c-format msgid "could not open certificate file \"%s\": %s\n" msgstr "无法打开证书文件 \"%s\": %s\n" # fe-lobj.c:400 fe-lobj.c:483 -#: fe-secure.c:893 fe-secure.c:903 +#: fe-secure.c:1097 fe-secure.c:1107 #, c-format msgid "could not read certificate file \"%s\": %s\n" msgstr "无法读取证书文件 \"%s\": %s\n" # fe-lobj.c:400 fe-lobj.c:483 -#: fe-secure.c:940 +#: fe-secure.c:1144 #, c-format msgid "could not load SSL engine \"%s\": %s\n" msgstr "无法加载SSL引擎 \"%s\": %s\n" -#: fe-secure.c:952 +#: fe-secure.c:1156 #, c-format msgid "could not initialize SSL engine \"%s\": %s\n" msgstr "无法初始化SSL引擎\"%s\": %s\n" # fe-connect.c:891 -#: fe-secure.c:968 +#: fe-secure.c:1172 #, c-format msgid "could not read private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "无法从引擎\"%2$s\"读取私有SSL钥\"%1$s\": %3$s\n" # fe-connect.c:891 -#: fe-secure.c:982 +#: fe-secure.c:1186 #, c-format msgid "could not load private SSL key \"%s\" from engine \"%s\": %s\n" msgstr "无法从引擎\"%2$s\"读取私有SSL钥\"%1$s\": %3$s\n" -#: fe-secure.c:1017 +#: fe-secure.c:1223 #, c-format msgid "certificate present, but not private key file \"%s\"\n" msgstr "有证书, 但不是私钥文件 \"%s\"\n" # fe-connect.c:2953 -#: fe-secure.c:1025 +#: fe-secure.c:1231 #, c-format msgid "" "private key file \"%s\" has group or world access; permissions should be " "u=rw (0600) or less\n" msgstr "警告: 私钥文件 \"%s\"的访问权限过大; 权限应设置 为 u=rw (0600)或更小\n" -#: fe-secure.c:1036 +#: fe-secure.c:1242 #, c-format msgid "could not load private key file \"%s\": %s\n" msgstr "无法装载私钥文件 \"%s\": %s\n" -#: fe-secure.c:1050 +#: fe-secure.c:1256 #, c-format msgid "certificate does not match private key file \"%s\": %s\n" msgstr "证书不匹配私钥文件 \"%s\": %s\n" # fe-connect.c:891 -#: fe-secure.c:1075 +#: fe-secure.c:1284 #, c-format msgid "could not read root certificate file \"%s\": %s\n" msgstr "无法读取根证书文件 \"%s\": %s\n" # fe-lobj.c:400 fe-lobj.c:483 -#: fe-secure.c:1099 +#: fe-secure.c:1311 #, c-format msgid "SSL library does not support CRL certificates (file \"%s\")\n" msgstr "SSL库不支持CRL认证(文件 \"%s\")\n" -#: fe-secure.c:1120 +#: fe-secure.c:1338 +msgid "" +"could not get home directory to locate root certificate file\n" +"Either provide the file or change sslmode to disable server certificate " +"verification.\n" +msgstr "" +"无法获取home目录以定位根认证文件\n" +"可以提供该文件或者将sslmode改为禁用服务器证书认证.\n" + +#: fe-secure.c:1342 #, c-format msgid "" "root certificate file \"%s\" does not exist\n" @@ -879,20 +937,16 @@ msgstr "" "根认证文件\"%s\"不存在\n" "可以提供这个文件或者将sslmode改为禁用服务器认证检验.\n" -#: fe-secure.c:1203 +#: fe-secure.c:1425 #, c-format msgid "certificate could not be obtained: %s\n" msgstr "无法获得证书: %s\n" -#: fe-secure.c:1231 -msgid "SSL certificate's common name contains embedded null\n" -msgstr "SSL认证的普通名称包含了嵌入的空值\n" - -#: fe-secure.c:1307 +#: fe-secure.c:1502 msgid "no SSL error reported" msgstr "没有报告SSL错误" -#: fe-secure.c:1316 +#: fe-secure.c:1511 #, c-format msgid "SSL error code %lu" msgstr "SSL 错误代码 %lu" diff --git a/src/interfaces/libpq/po/zh_TW.po b/src/interfaces/libpq/po/zh_TW.po index f2aa88aba0..192c1794ea 100644 --- a/src/interfaces/libpq/po/zh_TW.po +++ b/src/interfaces/libpq/po/zh_TW.po @@ -12,7 +12,7 @@ msgstr "" "Last-Translator: Zhenbang Wei \n" "Language-Team: EnterpriseDB translation team \n" -"Language: \n" +"Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -802,7 +802,6 @@ msgstr "無法與伺服器協調: 收到訊息類型 \"%c\",長度 %d\n" msgid "unexpected field count in \"D\" message\n" msgstr "\"D\" 訊息的欄位數不符預期\n" -# translator: %s represents a digit string # translator: %s represents a digit string # fe-protocol3.c:651 # fe-protocol3.c:659 diff --git a/src/interfaces/libpq/win32.mak b/src/interfaces/libpq/win32.mak index 9f05d87e34..70a741a5f4 100644 --- a/src/interfaces/libpq/win32.mak +++ b/src/interfaces/libpq/win32.mak @@ -87,6 +87,8 @@ CLEAN : -@erase "$(INTDIR)\inet_aton.obj" -@erase "$(INTDIR)\crypt.obj" -@erase "$(INTDIR)\noblock.obj" + -@erase "$(INTDIR)\chklocale.obj" + -@erase "$(INTDIR)\inet_net_ntop.obj" -@erase "$(INTDIR)\md5.obj" -@erase "$(INTDIR)\ip.obj" -@erase "$(INTDIR)\fe-auth.obj" @@ -112,6 +114,7 @@ CLEAN : -@erase "$(INTDIR)\pgsleep.obj" -@erase "$(INTDIR)\open.obj" -@erase "$(INTDIR)\win32error.obj" + -@erase "$(INTDIR)\win32setlocale.obj" -@erase "$(OUTDIR)\$(OUTFILENAME).lib" -@erase "$(OUTDIR)\$(OUTFILENAME)dll.lib" -@erase "$(OUTDIR)\libpq.res" @@ -132,6 +135,8 @@ LIB32_OBJS= \ "$(INTDIR)\inet_aton.obj" \ "$(INTDIR)\crypt.obj" \ "$(INTDIR)\noblock.obj" \ + "$(INTDIR)\chklocale.obj" \ + "$(INTDIR)\inet_net_ntop.obj" \ "$(INTDIR)\md5.obj" \ "$(INTDIR)\ip.obj" \ "$(INTDIR)\fe-auth.obj" \ @@ -155,6 +160,7 @@ LIB32_OBJS= \ "$(INTDIR)\pgsleep.obj" \ "$(INTDIR)\open.obj" \ "$(INTDIR)\win32error.obj" \ + "$(INTDIR)\win32setlocale.obj" \ "$(INTDIR)\pthread-win32.obj" @@ -260,6 +266,16 @@ LINK32_OBJS= \ $(CPP_PROJ) ..\..\port\noblock.c << +"$(INTDIR)\chklocale.obj" : ..\..\port\chklocale.c + $(CPP) @<< + $(CPP_PROJ) ..\..\port\chklocale.c +<< + +"$(INTDIR)\inet_net_ntop.obj" : ..\..\port\inet_net_ntop.c + $(CPP) @<< + $(CPP_PROJ) ..\..\port\inet_net_ntop.c +<< + "$(INTDIR)\md5.obj" : ..\..\backend\libpq\md5.c $(CPP) @<< $(CPP_PROJ) ..\..\backend\libpq\md5.c @@ -316,6 +332,11 @@ LINK32_OBJS= \ $(CPP_PROJ) /I"." ..\..\port\win32error.c << +"$(INTDIR)\win32setlocale.obj" : ..\..\port\win32setlocale.c + $(CPP) @<< + $(CPP_PROJ) /I"." ..\..\port\win32setlocale.c +<< + .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< diff --git a/src/makefiles/Makefile.aix b/src/makefiles/Makefile.aix index 7bf62ae2e8..e5ad89d147 100644 --- a/src/makefiles/Makefile.aix +++ b/src/makefiles/Makefile.aix @@ -9,9 +9,9 @@ AROPT = crs libpath := $(shell echo $(subst -L,:,$(filter -L/%,$(LDFLAGS))) | sed -e's/ //g'):/usr/lib:/lib ifeq ($(host_os), aix3.2.5) - rpath = -L$(rpathdir) + rpath = -L'$(rpathdir)' else - rpath = -Wl,-blibpath:$(rpathdir)$(libpath) + rpath = -Wl,-blibpath:'$(rpathdir)$(libpath)' endif DLSUFFIX = .so @@ -27,12 +27,13 @@ endif POSTGRES_IMP= postgres.imp ifdef PGXS -BE_DLLLIBS= -Wl,-bI:$(bindir)/postgres/$(POSTGRES_IMP) +BE_DLLLIBS= -Wl,-bI:$(pkglibdir)/$(POSTGRES_IMP) else BE_DLLLIBS= -Wl,-bI:$(top_builddir)/src/backend/$(POSTGRES_IMP) endif -MKLDEXPORT=$(top_srcdir)/src/backend/port/aix/mkldexport.sh +MKLDEXPORT_DIR=src/backend/port/aix +MKLDEXPORT=$(top_srcdir)/$(MKLDEXPORT_DIR)/mkldexport.sh %.exp: %.o $(MKLDEXPORT) $^ >$@ diff --git a/src/makefiles/Makefile.cygwin b/src/makefiles/Makefile.cygwin index 052ce22ddb..46899a2d04 100644 --- a/src/makefiles/Makefile.cygwin +++ b/src/makefiles/Makefile.cygwin @@ -1,6 +1,5 @@ -# src/makefiles/Makefile.cygwin DLLTOOL= dlltool -DLLWRAP= dllwrap +# src/makefiles/Makefile.cygwin ifdef PGXS BE_DLLLIBS= -L$(libdir) -lpostgres else @@ -40,6 +39,4 @@ endif # Rule for building a shared library from a single .o file %.dll: %.o - $(DLLTOOL) --export-all --output-def $*.def $< - $(DLLWRAP) -o $@ --def $*.def $< $(LDFLAGS) $(LDFLAGS_SL) $(BE_DLLLIBS) - rm -f $*.def + $(CC) $(CFLAGS) -shared -o $@ $< $(LDFLAGS) $(LDFLAGS_SL) $(BE_DLLLIBS) diff --git a/src/makefiles/pgxs.mk b/src/makefiles/pgxs.mk index 05ed8416a9..adec3be678 100644 --- a/src/makefiles/pgxs.mk +++ b/src/makefiles/pgxs.mk @@ -38,6 +38,7 @@ # SCRIPTS_built -- script files (not binaries) to install into $PREFIX/bin, # which need to be built first # REGRESS -- list of regression test cases (without suffix) +# REGRESS_OPTS -- additional switches to pass to pg_regress # EXTRA_CLEAN -- extra files to remove in 'make clean' # PG_CPPFLAGS -- will be added to CPPFLAGS # PG_LIBS -- will be added to PROGRAM link line @@ -135,6 +136,9 @@ endif # MODULE_big installdirs: +ifneq (,$(EXTENSION)) + $(MKDIR_P) '$(DESTDIR)$(datadir)/extension' +endif ifneq (,$(DATA)$(DATA_built)) $(MKDIR_P) '$(DESTDIR)$(datadir)/$(datamoduledir)' endif @@ -225,9 +229,11 @@ distclean maintainer-clean: clean ifdef REGRESS -# Calling makefile can set REGRESS_OPTS, but this is the default: -ifndef REGRESS_OPTS -REGRESS_OPTS = --dbname=$(CONTRIB_TESTDB) +# Select database to use for running the tests +ifneq ($(USE_MODULE_DB),) + REGRESS_OPTS += --dbname=$(CONTRIB_TESTDB_MODULE) +else + REGRESS_OPTS += --dbname=$(CONTRIB_TESTDB) endif # where to find psql for running the tests @@ -280,5 +286,5 @@ endif ifdef PROGRAM $(PROGRAM): $(OBJS) - $(CC) $(CFLAGS) $(OBJS) $(PG_LIBS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@ + $(CC) $(CFLAGS) $(OBJS) $(PG_LIBS) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) endif diff --git a/src/pgxc/Makefile b/src/pgxc/Makefile new file mode 100644 index 0000000000..cdd8d60224 --- /dev/null +++ b/src/pgxc/Makefile @@ -0,0 +1,17 @@ +#---------------------------------------------------------------------------- +# +# Postgres-XC documentation tool makefile +# +# Copyright (c) 2010-2013, Postgres-XC Development Group +# +# doc-xc/Makefile +# +#---------------------------------------------------------------------------- + +subdir = src/pgxc +top_builddir = ../.. +include $(top_builddir)/src/Makefile.global + +SUBDIRS = tools + +$(recurse) diff --git a/src/pgxc/bin/pgxc_clean/Makefile b/src/pgxc/bin/pgxc_clean/Makefile deleted file mode 100644 index 8251a04ebe..0000000000 --- a/src/pgxc/bin/pgxc_clean/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -#------------------------------------------------------------------------- -# -# Makefile for src/pgxc/bin/pgxc_clean -# -# Portions Copyright (c) 2011 Nippon Telegraph and Telephone Corporation -# -# $PostgreSQL$ -# -#------------------------------------------------------------------------- - -PGFILEDESC = "pgxc_clean - Abort prepared transaction for a Postgres-XC Coordinator" -subdir = src/pgxc/bin/pgxc_clean -top_builddir = ../../../.. -include $(top_builddir)/src/Makefile.global - -override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS) - -gtm_builddir = $(top_builddir)/src/gtm - -OBJS= pgxc_clean.o txninfo.o -EX_OBJS = $(gtm_builddir)/common/assert.o \ - $(gtm_builddir)/client/libgtmclient.a - -override LDFLAGS += -L$(top_builddir)/src/gtm/client \ - -# Switch when libxcm and libgtmclient are installed via 'make install' -# LIBS= -lpthread -lxcm -lgtmclient -LIBS= -lpthread - -all: pgxc_clean - -pgxc_clean: $(OBJS) - $(CC) $(CFLAGS) $(OBJS) $(EX_OBJS) $(libpq_pgport) $(LDFLAGS) $(LIBS) -o $@$(X) - -install: $(all) - $(INSTALL_PROGRAM) pgxc_clean$(X) '$(DESTDIR)$(bindir)'/pgxc_clean$(X) - -installdirs: - $(mkinstalldirs) '$(DESTDIR)$(bindir)' - -uninstall: - rm -f $(addprefix '$(DESTDIR)$(bindir)'/, pgxc_clean$(X)) - -clean distclean maintainer-clean: - rm -f pgxc_clean$(X) $(OBJS) pgxc_clean.o - diff --git a/doc-xc/tools/Makefile b/src/pgxc/tools/Makefile similarity index 78% rename from doc-xc/tools/Makefile rename to src/pgxc/tools/Makefile index 0ec957b600..50499f84b7 100644 --- a/doc-xc/tools/Makefile +++ b/src/pgxc/tools/Makefile @@ -2,14 +2,14 @@ # # Postgres-XC documentation tool makefile # -# Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation +# Copyright (c) 2010-2013, Postgres-XC Development Group # # doc-xc/Makefile # #---------------------------------------------------------------------------- -subdir = doc-xc/tools -top_builddir = ../.. +subdir = src/pgxc/tools +top_builddir = ../../.. include $(top_builddir)/src/Makefile.global SUBDIRS = makesgml diff --git a/src/pgxc/tools/makesgml/.gitignore b/src/pgxc/tools/makesgml/.gitignore new file mode 100644 index 0000000000..a9141e02d3 --- /dev/null +++ b/src/pgxc/tools/makesgml/.gitignore @@ -0,0 +1 @@ +/makesgml diff --git a/doc-xc/tools/makesgml/Makefile b/src/pgxc/tools/makesgml/Makefile similarity index 70% rename from doc-xc/tools/makesgml/Makefile rename to src/pgxc/tools/makesgml/Makefile index 5f346ed086..98582890aa 100644 --- a/doc-xc/tools/makesgml/Makefile +++ b/src/pgxc/tools/makesgml/Makefile @@ -2,25 +2,27 @@ # # Postgres-XC makesgml tool makefile # -# Copyright(c) 2010-2012 Nippon Telegraph and Telephone Corporation +# Copyright (c) 2010-2013, Postgres-XC Development Group # -# doc-xc/tools/makesgml/Makefile +# src/pgxc/tools/makesgml/Makefile # #----------------------------------------------------------------------------- PGFILEDESC = "makesgml - convert .sgmlin to .sgml" PGAPPICON=win32 -subdir = doc-xc/tools/makesgml -top_builddir = ../../.. +subdir = src/pgxc/tools/makesgml +top_builddir = ../../../.. include $(top_builddir)/src/Makefile.global -OBJS = makesgml.o +override CPPFLAGS := -I. -I$(srcdir) $(CPPFLAGS) -all distprep html man: makesgml +OBJS = makesgml.o makesgml: $(OBJS) - $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDFLAGS_EX) -o $@$(X) + $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@$(X) + +all distprep html man: makesgml install: all installdirs $(INSTALL_PROGRAM) makesgml$(X) '$(DESTDIR)$(bindir)/makesgml$(X)' @@ -33,5 +35,3 @@ uninstall: clean distclean maintenance-clean maintainer-clean: rm -rf makesgml$(X) $(OBJS) - -makesgml.o: makesgml.c $(top_builddir)/src/Makefile.global diff --git a/doc-xc/tools/makesgml/README b/src/pgxc/tools/makesgml/README similarity index 100% rename from doc-xc/tools/makesgml/README rename to src/pgxc/tools/makesgml/README diff --git a/doc-xc/tools/makesgml/makesgml.c b/src/pgxc/tools/makesgml/makesgml.c similarity index 94% rename from doc-xc/tools/makesgml/makesgml.c rename to src/pgxc/tools/makesgml/makesgml.c index a5f257238d..0a4ecaef1c 100644 --- a/doc-xc/tools/makesgml/makesgml.c +++ b/src/pgxc/tools/makesgml/makesgml.c @@ -2,10 +2,10 @@ * * makesgml - Postgres-XC document build tool * - * Copyright (c) 2010-2012, Nippon Telegraph and Telephone Corporation + * Copyright (c) 2010-2013, Postgres-XC Development Group * * IDENTIFICATION - * doc-xc/tools/makesgml/makesgml.c + * src/pgxc/tools/makesgml/makesgml.c * * This tools converts .sgmlin files into .sgml files to be handled by * many tools to generate Postgres-XC documants. @@ -34,10 +34,10 @@ * in -I or -E option. opt can be i (include) or e (exluce). * Default is e. * - * To keep error massages in the following stage easy to track by the line + * To keep error massages in the following stage easy to track by the line * number, excluded line will be replaced with brank line. * - *--------------------------------------------------------------------------- + *--------------------------------------------------------------------------- */ #include #include @@ -89,7 +89,7 @@ int main(int argc, char *argv[]) progname = argv[0]; while ((opt = getopt(argc, argv, "i:o:E:I:d:")) != -1) { - switch(opt) + switch(opt) { case 'i': if (ifnam) @@ -101,7 +101,7 @@ int main(int argc, char *argv[]) if ((strcmp(optarg, "-") == 0) || (strcmp(optarg, "stdin") == 0)) inf = stdin; else - ifnam = strndup(optarg, strlen(optarg)); + ifnam = strdup(optarg); break; case 'o': @@ -114,11 +114,11 @@ int main(int argc, char *argv[]) if ((strcmp(optarg, "-") == 0) || (strcmp(optarg, "stdout") == 0)) outf = stdout; else - ofnam = strndup(optarg, strlen(optarg)); + ofnam = strdup(optarg); break; case 'E': - token = strndup(optarg,strlen(optarg)); + token = strdup(optarg); if (ignoreToks == NULL) { ignoreToks = (tokenlist *)malloc(sizeof(tokenlist)); @@ -128,7 +128,7 @@ int main(int argc, char *argv[]) ignoreToks->next = NULL; lastIgnoreToken = ignoreToks; } - else + else { lastIgnoreToken->next = (tokenlist *)malloc(sizeof(tokenlist)); if (lastIgnoreToken->next == NULL) @@ -140,7 +140,7 @@ int main(int argc, char *argv[]) break; case 'I': - token = strndup(optarg, strlen(optarg)); + token = strdup(optarg); if (includeToks == NULL) { includeToks = (tokenlist *)malloc(sizeof(tokenlist)); @@ -212,14 +212,14 @@ int my_getline(char *buf) *buf = 0; return EOF; } - else + else { ungetc(c, inf); } for (;;) { c = getc(inf); - switch(c) + switch(c) { case '\n': *buf++ = c; @@ -372,8 +372,8 @@ void make_sgml(int writeflag) static void usage(int exitcode) { - fprintf(stderr, - "%s -i infile -o outfile [-d i|e ] -D exclude_token -D ... -U include_token -U ...\n", + fprintf(stderr, + "%s -i infile -o outfile [-d i|e ] -D exclude_token -D ... -U include_token -U ...\n", progname); exit(exitcode); } diff --git a/src/pl/Makefile b/src/pl/Makefile index ef630fe8d2..c4a0d1cd07 100644 --- a/src/pl/Makefile +++ b/src/pl/Makefile @@ -16,14 +16,21 @@ SUBDIRS = plpgsql ifeq ($(with_perl), yes) SUBDIRS += plperl +else +ALWAYS_SUBDIRS += plperl endif ifeq ($(with_python), yes) SUBDIRS += plpython +else +ALWAYS_SUBDIRS += plpython endif ifeq ($(with_tcl), yes) SUBDIRS += tcl +else +ALWAYS_SUBDIRS += tcl endif $(recurse) +$(recurse_always) diff --git a/src/pl/plperl/GNUmakefile b/src/pl/plperl/GNUmakefile index 79a8d5d3fa..25294f0a77 100644 --- a/src/pl/plperl/GNUmakefile +++ b/src/pl/plperl/GNUmakefile @@ -44,7 +44,7 @@ PERLCHUNKS = plc_perlboot.pl plc_trusted.pl SHLIB_LINK = $(perl_embed_ldflags) REGRESS_OPTS = --dbname=$(PL_TESTDB) --load-extension=plperl --load-extension=plperlu -REGRESS = plperl plperl_trigger plperl_shared plperl_elog plperl_util plperl_init plperlu plperl_array +REGRESS = plperl plperl_lc plperl_trigger plperl_shared plperl_elog plperl_util plperl_init plperlu plperl_array # if Perl can support two interpreters in one backend, # test plperl-and-plperlu cases ifneq ($(PERL),) @@ -55,23 +55,30 @@ endif # where to find psql for running the tests PSQLDIR = $(bindir) +# where to find xsubpp for building XS. +XSUBPPDIR = $(shell $(PERL) -e 'use List::Util qw(first); print first { -r "$$_/ExtUtils/xsubpp" } @INC') + include $(top_srcdir)/src/Makefile.shlib -plperl.o: perlchunks.h plperl_opmask.h +plperl.o: perlchunks.h plperl_opmask.h plperl_helpers.h plperl_opmask.h: plperl_opmask.pl + @if [ x"$(perl_privlibexp)" = x"" ]; then echo "configure switch --with-perl was not specified."; exit 1; fi $(PERL) $< $@ perlchunks.h: $(PERLCHUNKS) + @if [ x"$(perl_privlibexp)" = x"" ]; then echo "configure switch --with-perl was not specified."; exit 1; fi $(PERL) $(srcdir)/text2macro.pl --strip='^(\#.*|\s*)$$' $^ > $@ all: all-lib -SPI.c: SPI.xs - $(PERL) $(perl_privlibexp)/ExtUtils/xsubpp -typemap $(perl_privlibexp)/ExtUtils/typemap $< >$@ +SPI.c: SPI.xs plperl_helpers.h + @if [ x"$(perl_privlibexp)" = x"" ]; then echo "configure switch --with-perl was not specified."; exit 1; fi + $(PERL) $(XSUBPPDIR)/ExtUtils/xsubpp -typemap $(perl_privlibexp)/ExtUtils/typemap $< >$@ -Util.c: Util.xs - $(PERL) $(perl_privlibexp)/ExtUtils/xsubpp -typemap $(perl_privlibexp)/ExtUtils/typemap $< >$@ +Util.c: Util.xs plperl_helpers.h + @if [ x"$(perl_privlibexp)" = x"" ]; then echo "configure switch --with-perl was not specified."; exit 1; fi + $(PERL) $(XSUBPPDIR)/ExtUtils/xsubpp -typemap $(perl_privlibexp)/ExtUtils/typemap $< >$@ install: all install-lib install-data diff --git a/src/pl/plperl/Util.xs b/src/pl/plperl/Util.xs index 7d0102b837..b2e0dfcf75 100644 --- a/src/pl/plperl/Util.xs +++ b/src/pl/plperl/Util.xs @@ -67,8 +67,11 @@ static text * sv2text(SV *sv) { char *str = sv2cstr(sv); + text *text; - return cstring_to_text(str); + text = cstring_to_text(str); + pfree(str); + return text; } MODULE = PostgreSQL::InServer::Util PREFIX = util_ @@ -113,8 +116,11 @@ util_quote_literal(sv) } else { text *arg = sv2text(sv); - text *ret = DatumGetTextP(DirectFunctionCall1(quote_literal, PointerGetDatum(arg))); - char *str = text_to_cstring(ret); + text *quoted = DatumGetTextP(DirectFunctionCall1(quote_literal, PointerGetDatum(arg))); + char *str; + + pfree(arg); + str = text_to_cstring(quoted); RETVAL = cstr2sv(str); pfree(str); } @@ -132,8 +138,11 @@ util_quote_nullable(sv) else { text *arg = sv2text(sv); - text *ret = DatumGetTextP(DirectFunctionCall1(quote_nullable, PointerGetDatum(arg))); - char *str = text_to_cstring(ret); + text *quoted = DatumGetTextP(DirectFunctionCall1(quote_nullable, PointerGetDatum(arg))); + char *str; + + pfree(arg); + str = text_to_cstring(quoted); RETVAL = cstr2sv(str); pfree(str); } @@ -145,12 +154,14 @@ util_quote_ident(sv) SV *sv PREINIT: text *arg; - text *ret; + text *quoted; char *str; CODE: arg = sv2text(sv); - ret = DatumGetTextP(DirectFunctionCall1(quote_ident, PointerGetDatum(arg))); - str = text_to_cstring(ret); + quoted = DatumGetTextP(DirectFunctionCall1(quote_ident, PointerGetDatum(arg))); + + pfree(arg); + str = text_to_cstring(quoted); RETVAL = cstr2sv(str); pfree(str); OUTPUT: diff --git a/src/pl/plperl/expected/plperl.out b/src/pl/plperl/expected/plperl.out index 5c1cd8cebf..d23a3020a3 100644 --- a/src/pl/plperl/expected/plperl.out +++ b/src/pl/plperl/expected/plperl.out @@ -101,6 +101,16 @@ SELECT * FROM perl_row(); 1 | hello | world | ({{1}}) (1 row) +-- test returning a composite literal +CREATE OR REPLACE FUNCTION perl_row_lit() RETURNS testrowperl AS $$ + return '(1,hello,world,"({{1}})")'; +$$ LANGUAGE plperl; +SELECT perl_row_lit(); + perl_row_lit +--------------------------- + (1,hello,world,"({{1}})") +(1 row) + CREATE OR REPLACE FUNCTION perl_set() RETURNS SETOF testrowperl AS $$ return undef; $$ LANGUAGE plperl; @@ -336,7 +346,8 @@ CREATE OR REPLACE FUNCTION foo_bad() RETURNS footype AS $$ return 42; $$ LANGUAGE plperl; SELECT * FROM foo_bad(); -ERROR: composite-returning PL/Perl function must return reference to hash +ERROR: malformed record literal: "42" +DETAIL: Missing left parenthesis. CONTEXT: PL/Perl function "foo_bad" CREATE OR REPLACE FUNCTION foo_bad() RETURNS footype AS $$ return [ @@ -345,7 +356,7 @@ return [ ]; $$ LANGUAGE plperl; SELECT * FROM foo_bad(); -ERROR: composite-returning PL/Perl function must return reference to hash +ERROR: cannot convert Perl array to non-array type footype CONTEXT: PL/Perl function "foo_bad" CREATE OR REPLACE FUNCTION foo_set_bad() RETURNS SETOF footype AS $$ return 42; @@ -615,8 +626,8 @@ DO $$ open my $fh, " qw(void) ; my @y; my $x = sort @y; 1; $do$ LANGUAGE plperl; ERROR: Useless use of sort in scalar context at line 1. CONTEXT: PL/Perl anonymous code block +-- make sure functions marked as VOID without an explicit return work +CREATE OR REPLACE FUNCTION myfuncs() RETURNS void AS $$ + $_SHARED{myquote} = sub { + my $arg = shift; + $arg =~ s/(['\\])/\\$1/g; + return "'$arg'"; + }; +$$ LANGUAGE plperl; +SELECT myfuncs(); + myfuncs +--------- + +(1 row) + +-- make sure we can't return an array as a scalar +CREATE OR REPLACE FUNCTION text_arrayref() RETURNS text AS $$ + return ['array']; +$$ LANGUAGE plperl; +SELECT text_arrayref(); +ERROR: cannot convert Perl array to non-array type text +CONTEXT: PL/Perl function "text_arrayref" +--- make sure we can't return a hash as a scalar +CREATE OR REPLACE FUNCTION text_hashref() RETURNS text AS $$ + return {'hash'=>1}; +$$ LANGUAGE plperl; +SELECT text_hashref(); +ERROR: cannot convert Perl hash to non-composite type text +CONTEXT: PL/Perl function "text_hashref" +---- make sure we can't return a blessed object as a scalar +CREATE OR REPLACE FUNCTION text_obj() RETURNS text AS $$ + return bless({}, 'Fake::Object'); +$$ LANGUAGE plperl; +SELECT text_obj(); +ERROR: cannot convert Perl hash to non-composite type text +CONTEXT: PL/Perl function "text_obj" +----- make sure we can't return a scalar ref +CREATE OR REPLACE FUNCTION text_scalarref() RETURNS text AS $$ + my $str = 'str'; + return \$str; +$$ LANGUAGE plperl; +SELECT text_scalarref(); +ERROR: PL/Perl function must return reference to hash or array +CONTEXT: PL/Perl function "text_scalarref" +-- check safe behavior when a function body is replaced during execution +CREATE OR REPLACE FUNCTION self_modify(INTEGER) RETURNS INTEGER AS $$ + spi_exec_query('CREATE OR REPLACE FUNCTION self_modify(INTEGER) RETURNS INTEGER AS \'return $_[0] * 3;\' LANGUAGE plperl;'); + spi_exec_query('select self_modify(42) AS a'); + return $_[0] * 2; +$$ LANGUAGE plperl; +SELECT self_modify(42); + self_modify +------------- + 84 +(1 row) + +SELECT self_modify(42); + self_modify +------------- + 126 +(1 row) + diff --git a/src/pl/plperl/expected/plperl_array.out b/src/pl/plperl/expected/plperl_array.out index be76f6cc24..829733fef4 100644 --- a/src/pl/plperl/expected/plperl_array.out +++ b/src/pl/plperl/expected/plperl_array.out @@ -204,6 +204,16 @@ select plperl_arrays_inout('{{1}, {2}, {3}}'); {{1},{2},{3}} (1 row) +-- check that we can return an array literal +CREATE OR REPLACE FUNCTION plperl_arrays_inout_l(INTEGER[]) returns INTEGER[] AS $$ + return shift.''; # stringify it +$$ LANGUAGE plperl; +select plperl_arrays_inout_l('{{1}, {2}, {3}}'); + plperl_arrays_inout_l +----------------------- + {{1},{2},{3}} +(1 row) + -- make sure setof works create or replace function perl_setof_array(integer[]) returns setof integer[] language plperl as $$ my $arr = shift; diff --git a/src/pl/plperl/expected/plperl_elog.out b/src/pl/plperl/expected/plperl_elog.out index 02497d9e02..c447fa22cb 100644 --- a/src/pl/plperl/expected/plperl_elog.out +++ b/src/pl/plperl/expected/plperl_elog.out @@ -58,3 +58,49 @@ select uses_global(); uses_global worked (1 row) +-- make sure we don't choke on readonly values +do language plperl $$ elog(NOTICE, ${^TAINT}); $$; +NOTICE: 0 +CONTEXT: PL/Perl anonymous code block +-- test recovery after "die" +create or replace function just_die() returns void language plperl AS $$ +die "just die"; +$$; +select just_die(); +ERROR: just die at line 2. +CONTEXT: PL/Perl function "just_die" +create or replace function die_caller() returns int language plpgsql as $$ +BEGIN + BEGIN + PERFORM just_die(); + EXCEPTION WHEN OTHERS THEN + RAISE NOTICE 'caught die'; + END; + RETURN 1; +END; +$$; +select die_caller(); +NOTICE: caught die + die_caller +------------ + 1 +(1 row) + +create or replace function indirect_die_caller() returns int language plperl as $$ +my $prepared = spi_prepare('SELECT die_caller() AS fx'); +my $a = spi_exec_prepared($prepared)->{rows}->[0]->{fx}; +my $b = spi_exec_prepared($prepared)->{rows}->[0]->{fx}; +return $a + $b; +$$; +select indirect_die_caller(); +NOTICE: caught die +CONTEXT: SQL statement "SELECT die_caller() AS fx" +PL/Perl function "indirect_die_caller" +NOTICE: caught die +CONTEXT: SQL statement "SELECT die_caller() AS fx" +PL/Perl function "indirect_die_caller" + indirect_die_caller +--------------------- + 2 +(1 row) + diff --git a/src/pl/plperl/expected/plperl_init.out b/src/pl/plperl/expected/plperl_init.out index 4a04dbd6f3..f9dab03daf 100644 --- a/src/pl/plperl/expected/plperl_init.out +++ b/src/pl/plperl/expected/plperl_init.out @@ -1,14 +1,14 @@ -- test plperl.on_plperl_init errors are fatal -- Avoid need for custom_variable_classes = 'plperl' LOAD 'plperl'; -SET SESSION plperl.on_plperl_init = ' system("/nonesuch") '; +SET SESSION plperl.on_plperl_init = ' system("/nonesuch"); '; SHOW plperl.on_plperl_init; - plperl.on_plperl_init ------------------------ - system("/nonesuch") + plperl.on_plperl_init +------------------------ + system("/nonesuch"); (1 row) DO $$ warn 42 $$ language plperl; -ERROR: 'system' trapped by operation mask at line 2. +ERROR: 'system' trapped by operation mask at line 1. CONTEXT: while executing plperl.on_plperl_init PL/Perl anonymous code block diff --git a/src/pl/plperl/expected/plperl_lc.out b/src/pl/plperl/expected/plperl_lc.out new file mode 100644 index 0000000000..4f8c08f1c9 --- /dev/null +++ b/src/pl/plperl/expected/plperl_lc.out @@ -0,0 +1,10 @@ +-- +-- Make sure strings are validated +-- Should fail for all encodings, as nul bytes are never permitted. +-- +CREATE OR REPLACE FUNCTION perl_zerob() RETURNS TEXT AS $$ + return "abcd\0efg"; +$$ LANGUAGE plperl; +SELECT perl_zerob(); +ERROR: invalid byte sequence for encoding "UTF8": 0x00 +CONTEXT: PL/Perl function "perl_zerob" diff --git a/src/pl/plperl/expected/plperl_lc_1.out b/src/pl/plperl/expected/plperl_lc_1.out new file mode 100644 index 0000000000..022c3e2de7 --- /dev/null +++ b/src/pl/plperl/expected/plperl_lc_1.out @@ -0,0 +1,10 @@ +-- +-- Make sure strings are validated +-- Should fail for all encodings, as nul bytes are never permitted. +-- +CREATE OR REPLACE FUNCTION perl_zerob() RETURNS TEXT AS $$ + return "abcd\0efg"; +$$ LANGUAGE plperl; +SELECT perl_zerob(); +ERROR: invalid byte sequence for encoding "SQL_ASCII": 0x00 +CONTEXT: PL/Perl function "perl_zerob" diff --git a/src/pl/plperl/nls.mk b/src/pl/plperl/nls.mk index 85ff132e5b..c5065fb437 100644 --- a/src/pl/plperl/nls.mk +++ b/src/pl/plperl/nls.mk @@ -1,5 +1,5 @@ # src/pl/plperl/nls.mk CATALOG_NAME := plperl -AVAIL_LANGUAGES := de es fr it ja pt_BR ro tr zh_CN zh_TW +AVAIL_LANGUAGES := cs de es fr it ja pl pt_BR ro ru tr zh_CN zh_TW GETTEXT_FILES := plperl.c SPI.c GETTEXT_TRIGGERS:= errmsg errmsg_plural:1,2 errdetail errdetail_log errdetail_plural:1,2 errhint errcontext diff --git a/src/pl/plperl/plperl--1.0.sql b/src/pl/plperl/plperl--1.0.sql index befd882745..801900f023 100644 --- a/src/pl/plperl/plperl--1.0.sql +++ b/src/pl/plperl/plperl--1.0.sql @@ -7,3 +7,5 @@ */ CREATE PROCEDURAL LANGUAGE plperl; + +COMMENT ON PROCEDURAL LANGUAGE plperl IS 'PL/Perl procedural language'; diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c index 61252308cd..6b0c1cad5c 100644 --- a/src/pl/plperl/plperl.c +++ b/src/pl/plperl/plperl.c @@ -23,11 +23,13 @@ #include "commands/trigger.h" #include "executor/spi.h" #include "funcapi.h" +#include "libpq/pqsignal.h" #include "mb/pg_wchar.h" #include "miscadmin.h" #include "nodes/makefuncs.h" #include "parser/parse_type.h" #include "storage/ipc.h" +#include "tcop/tcopprot.h" #include "utils/builtins.h" #include "utils/fmgroids.h" #include "utils/guc.h" @@ -66,6 +68,7 @@ PG_MODULE_MAGIC; * * The plperl_interp_desc structs are kept in a Postgres hash table indexed * by userid OID, with OID 0 used for the single untrusted interpreter. + * Once created, an interpreter is kept for the life of the process. * * We start out by creating a "held" interpreter, which we initialize * only as far as we can do without deciding if it will be trusted or @@ -91,28 +94,44 @@ typedef struct plperl_interp_desc /********************************************************************** * The information we cache about loaded procedures + * + * The refcount field counts the struct's reference from the hash table shown + * below, plus one reference for each function call level that is using the + * struct. We can release the struct, and the associated Perl sub, when the + * refcount goes to zero. **********************************************************************/ typedef struct plperl_proc_desc { char *proname; /* user name of procedure */ - TransactionId fn_xmin; + TransactionId fn_xmin; /* xmin/TID of procedure's pg_proc tuple */ ItemPointerData fn_tid; + int refcount; /* reference count of this struct */ + SV *reference; /* CODE reference for Perl sub */ plperl_interp_desc *interp; /* interpreter it's created in */ - bool fn_readonly; - bool lanpltrusted; + bool fn_readonly; /* is function readonly (not volatile)? */ + bool lanpltrusted; /* is it plperl, rather than plperlu? */ bool fn_retistuple; /* true, if function returns tuple */ bool fn_retisset; /* true, if function returns set */ bool fn_retisarray; /* true if function returns array */ + /* Conversion info for function's result type: */ Oid result_oid; /* Oid of result type */ FmgrInfo result_in_func; /* I/O function and arg for result type */ Oid result_typioparam; + /* Conversion info for function's argument types: */ int nargs; FmgrInfo arg_out_func[FUNC_MAX_ARGS]; bool arg_is_rowtype[FUNC_MAX_ARGS]; Oid arg_arraytype[FUNC_MAX_ARGS]; /* InvalidOid if not an array */ - SV *reference; } plperl_proc_desc; +#define increment_prodesc_refcount(prodesc) \ + ((prodesc)->refcount++) +#define decrement_prodesc_refcount(prodesc) \ + do { \ + if (--((prodesc)->refcount) <= 0) \ + free_plperl_function(prodesc); \ + } while(0) + /********************************************************************** * For speedy lookup, we maintain a hash table mapping from * function OID + trigger flag + user OID to plperl_proc_desc pointers. @@ -154,7 +173,6 @@ typedef struct plperl_call_data FunctionCallInfo fcinfo; Tuplestorestate *tuple_store; TupleDesc ret_tdesc; - AttInMetadata *attinmeta; MemoryContext tmp_cxt; } plperl_call_data; @@ -164,6 +182,7 @@ typedef struct plperl_call_data typedef struct plperl_query_desc { char qname[24]; + MemoryContext plan_cxt; /* context holding this struct */ void *plan; int nargs; Oid *argtypes; @@ -235,6 +254,8 @@ static void set_interp_require(bool trusted); static Datum plperl_func_handler(PG_FUNCTION_ARGS); static Datum plperl_trigger_handler(PG_FUNCTION_ARGS); +static void free_plperl_function(plperl_proc_desc *prodesc); + static plperl_proc_desc *compile_plperl_function(Oid fn_oid, bool is_trigger); static SV *plperl_hash_from_tuple(HeapTuple tuple, TupleDesc tupdesc); @@ -243,12 +264,16 @@ static SV *plperl_ref_from_pg_array(Datum arg, Oid typid); static SV *split_array(plperl_array_info *info, int first, int last, int nest); static SV *make_array_ref(plperl_array_info *info, int first, int last); static SV *get_perl_array_ref(SV *sv); -static Datum plperl_sv_to_datum(SV *sv, FmgrInfo *func, Oid typid, - Oid typioparam, int32 typmod, bool *isnull); -static void _sv_to_datum_finfo(FmgrInfo *fcinfo, Oid typid, Oid *typioparam); -static Datum plperl_array_to_datum(SV *src, Oid typid); -static ArrayBuildState *_array_to_datum(AV *av, int *ndims, int *dims, - int cur_depth, ArrayBuildState *astate, Oid typid, Oid atypid); +static Datum plperl_sv_to_datum(SV *sv, Oid typid, int32 typmod, + FunctionCallInfo fcinfo, + FmgrInfo *finfo, Oid typioparam, + bool *isnull); +static void _sv_to_datum_finfo(Oid typid, FmgrInfo *finfo, Oid *typioparam); +static Datum plperl_array_to_datum(SV *src, Oid typid, int32 typmod); +static ArrayBuildState *array_to_datum_internal(AV *av, ArrayBuildState *astate, + int *ndims, int *dims, int cur_depth, + Oid arraytypid, Oid elemtypid, int32 typmod, + FmgrInfo *finfo, Oid typioparam); static Datum plperl_hash_to_datum(SV *src, TupleDesc td); static void plperl_init_shared_libs(pTHX); @@ -278,6 +303,16 @@ static char *setlocale_perl(int category, char *locale); static char * hek2cstr(HE *he) { + char *ret; + SV *sv; + + /* + * HeSVKEY_force will return a temporary mortal SV*, so we need to make + * sure to free it with ENTER/SAVE/FREE/LEAVE + */ + ENTER; + SAVETMPS; + /*------------------------- * Unfortunately, while HeUTF8 is true for most things > 256, for values * 128..255 it's not, but perl will treat them as unicode code points if @@ -302,11 +337,17 @@ hek2cstr(HE *he) * right thing *------------------------- */ - SV *sv = HeSVKEY_force(he); + sv = HeSVKEY_force(he); if (HeUTF8(he)) SvUTF8_on(sv); - return sv2cstr(sv); + ret = sv2cstr(sv); + + /* free sv */ + FREETMPS; + LEAVE; + + return ret; } /* @@ -737,6 +778,18 @@ plperl_init_interp(void) char *dummy_env[1] = {NULL}; PERL_SYS_INIT3(&nargs, (char ***) &embedding, (char ***) &dummy_env); + + /* + * For unclear reasons, PERL_SYS_INIT3 sets the SIGFPE handler to + * SIG_IGN. Aside from being extremely unfriendly behavior for a + * library, this is dumb on the grounds that the results of a + * SIGFPE in this state are undefined according to POSIX, and in + * fact you get a forced process kill at least on Linux. Hence, + * restore the SIGFPE handler to the backend's standard setting. + * (See Perl bug 114574 for more information.) + */ + pqsignal(SIGFPE, FloatExceptionHandler); + perl_sys_init_done = 1; /* quiet warning if PERL_SYS_INIT3 doesn't use the third argument */ dummy_env[0] = NULL; @@ -987,9 +1040,8 @@ strip_trailing_ws(const char *msg) /* Build a tuple from a hash. */ static HeapTuple -plperl_build_tuple_result(HV *perlhash, AttInMetadata *attinmeta) +plperl_build_tuple_result(HV *perlhash, TupleDesc td) { - TupleDesc td = attinmeta->tupdesc; Datum *values; bool *nulls; HE *he; @@ -1005,7 +1057,6 @@ plperl_build_tuple_result(HV *perlhash, AttInMetadata *attinmeta) SV *val = HeVAL(he); char *key = hek2cstr(he); int attn = SPI_fnumber(td, key); - bool isnull; if (attn <= 0 || td->attrs[attn - 1]->attisdropped) ereport(ERROR, @@ -1014,12 +1065,12 @@ plperl_build_tuple_result(HV *perlhash, AttInMetadata *attinmeta) key))); values[attn - 1] = plperl_sv_to_datum(val, - NULL, td->attrs[attn - 1]->atttypid, - InvalidOid, td->attrs[attn - 1]->atttypmod, - &isnull); - nulls[attn - 1] = isnull; + NULL, + NULL, + InvalidOid, + &nulls[attn - 1]); pfree(key); } @@ -1035,8 +1086,7 @@ plperl_build_tuple_result(HV *perlhash, AttInMetadata *attinmeta) static Datum plperl_hash_to_datum(SV *src, TupleDesc td) { - AttInMetadata *attinmeta = TupleDescGetAttInMetadata(td); - HeapTuple tup = plperl_build_tuple_result((HV *) SvRV(src), attinmeta); + HeapTuple tup = plperl_build_tuple_result((HV *) SvRV(src), td); return HeapTupleGetDatum(tup); } @@ -1068,57 +1118,75 @@ get_perl_array_ref(SV *sv) } /* - * helper function for plperl_array_to_datum, does the main recursing + * helper function for plperl_array_to_datum, recurses for multi-D arrays */ static ArrayBuildState * -_array_to_datum(AV *av, int *ndims, int *dims, int cur_depth, - ArrayBuildState *astate, Oid typid, Oid atypid) +array_to_datum_internal(AV *av, ArrayBuildState *astate, + int *ndims, int *dims, int cur_depth, + Oid arraytypid, Oid elemtypid, int32 typmod, + FmgrInfo *finfo, Oid typioparam) { - int i = 0; + int i; int len = av_len(av) + 1; - if (len == 0) - astate = accumArrayResult(astate, (Datum) 0, true, atypid, NULL); - for (i = 0; i < len; i++) { + /* fetch the array element */ SV **svp = av_fetch(av, i, FALSE); + + /* see if this element is an array, if so get that */ SV *sav = svp ? get_perl_array_ref(*svp) : NULL; + /* multi-dimensional array? */ if (sav) { AV *nav = (AV *) SvRV(sav); + /* dimensionality checks */ if (cur_depth + 1 > MAXDIM) ereport(ERROR, (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), errmsg("number of array dimensions (%d) exceeds the maximum allowed (%d)", cur_depth + 1, MAXDIM))); - /* size based off the first element */ + /* set size when at first element in this level, else compare */ if (i == 0 && *ndims == cur_depth) { dims[*ndims] = av_len(nav) + 1; (*ndims)++; } - else - { - if (av_len(nav) + 1 != dims[cur_depth]) - ereport(ERROR, - (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), - errmsg("multidimensional arrays must have array expressions with matching dimensions"))); - } - - astate = _array_to_datum(nav, ndims, dims, cur_depth + 1, astate, - typid, atypid); + else if (av_len(nav) + 1 != dims[cur_depth]) + ereport(ERROR, + (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), + errmsg("multidimensional arrays must have array expressions with matching dimensions"))); + + /* recurse to fetch elements of this sub-array */ + astate = array_to_datum_internal(nav, astate, + ndims, dims, cur_depth + 1, + arraytypid, elemtypid, typmod, + finfo, typioparam); } else { + Datum dat; bool isnull; - Datum dat = plperl_sv_to_datum(svp ? *svp : NULL, NULL, - atypid, 0, -1, &isnull); - astate = accumArrayResult(astate, dat, isnull, atypid, NULL); + /* scalar after some sub-arrays at same level? */ + if (*ndims != cur_depth) + ereport(ERROR, + (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), + errmsg("multidimensional arrays must have array expressions with matching dimensions"))); + + dat = plperl_sv_to_datum(svp ? *svp : NULL, + elemtypid, + typmod, + NULL, + finfo, + typioparam, + &isnull); + + astate = accumArrayResult(astate, dat, isnull, + elemtypid, CurrentMemoryContext); } } @@ -1129,86 +1197,141 @@ _array_to_datum(AV *av, int *ndims, int *dims, int cur_depth, * convert perl array ref to a datum */ static Datum -plperl_array_to_datum(SV *src, Oid typid) +plperl_array_to_datum(SV *src, Oid typid, int32 typmod) { - ArrayBuildState *astate = NULL; - Oid atypid; + ArrayBuildState *astate; + Oid elemtypid; + FmgrInfo finfo; + Oid typioparam; int dims[MAXDIM]; int lbs[MAXDIM]; int ndims = 1; int i; - atypid = get_element_type(typid); - if (!atypid) - atypid = typid; + elemtypid = get_element_type(typid); + if (!elemtypid) + ereport(ERROR, + (errcode(ERRCODE_DATATYPE_MISMATCH), + errmsg("cannot convert Perl array to non-array type %s", + format_type_be(typid)))); + + _sv_to_datum_finfo(elemtypid, &finfo, &typioparam); memset(dims, 0, sizeof(dims)); dims[0] = av_len((AV *) SvRV(src)) + 1; - astate = _array_to_datum((AV *) SvRV(src), &ndims, dims, 1, astate, typid, - atypid); + astate = array_to_datum_internal((AV *) SvRV(src), NULL, + &ndims, dims, 1, + typid, elemtypid, typmod, + &finfo, typioparam); + + if (!astate) + return PointerGetDatum(construct_empty_array(elemtypid)); for (i = 0; i < ndims; i++) lbs[i] = 1; - return makeMdArrayResult(astate, ndims, dims, lbs, CurrentMemoryContext, true); + return makeMdArrayResult(astate, ndims, dims, lbs, + CurrentMemoryContext, true); } +/* Get the information needed to convert data to the specified PG type */ static void -_sv_to_datum_finfo(FmgrInfo *fcinfo, Oid typid, Oid *typioparam) +_sv_to_datum_finfo(Oid typid, FmgrInfo *finfo, Oid *typioparam) { Oid typinput; /* XXX would be better to cache these lookups */ getTypeInputInfo(typid, &typinput, typioparam); - fmgr_info(typinput, fcinfo); + fmgr_info(typinput, finfo); } /* - * convert a sv to datum - * fcinfo and typioparam are optional and will be looked-up if needed + * convert Perl SV to PG datum of type typid, typmod typmod + * + * Pass the PL/Perl function's fcinfo when attempting to convert to the + * function's result type; otherwise pass NULL. This is used when we need to + * resolve the actual result type of a function returning RECORD. + * + * finfo and typioparam should be the results of _sv_to_datum_finfo for the + * given typid, or NULL/InvalidOid to let this function do the lookups. + * + * *isnull is an output parameter. */ static Datum -plperl_sv_to_datum(SV *sv, FmgrInfo *finfo, Oid typid, Oid typioparam, - int32 typmod, bool *isnull) +plperl_sv_to_datum(SV *sv, Oid typid, int32 typmod, + FunctionCallInfo fcinfo, + FmgrInfo *finfo, Oid typioparam, + bool *isnull) { FmgrInfo tmp; /* we might recurse */ check_stack_depth(); - if (isnull) - *isnull = false; + *isnull = false; - if (!sv || !SvOK(sv)) + /* + * Return NULL if result is undef, or if we're in a function returning + * VOID. In the latter case, we should pay no attention to the last Perl + * statement's result, and this is a convenient means to ensure that. + */ + if (!sv || !SvOK(sv) || typid == VOIDOID) { + /* look up type info if they did not pass it */ if (!finfo) { - _sv_to_datum_finfo(&tmp, typid, &typioparam); + _sv_to_datum_finfo(typid, &tmp, &typioparam); finfo = &tmp; } - if (isnull) - *isnull = true; + *isnull = true; + /* must call typinput in case it wants to reject NULL */ return InputFunctionCall(finfo, NULL, typioparam, typmod); } else if (SvROK(sv)) { + /* handle references */ SV *sav = get_perl_array_ref(sv); if (sav) { - return plperl_array_to_datum(sav, typid); + /* handle an arrayref */ + return plperl_array_to_datum(sav, typid, typmod); } else if (SvTYPE(SvRV(sv)) == SVt_PVHV) { - TupleDesc td = lookup_rowtype_tupdesc(typid, typmod); - Datum ret = plperl_hash_to_datum(sv, td); + /* handle a hashref */ + Datum ret; + TupleDesc td; + if (!type_is_rowtype(typid)) + ereport(ERROR, + (errcode(ERRCODE_DATATYPE_MISMATCH), + errmsg("cannot convert Perl hash to non-composite type %s", + format_type_be(typid)))); + + td = lookup_rowtype_tupdesc_noerror(typid, typmod, true); + if (td == NULL) + { + /* Try to look it up based on our result type */ + if (fcinfo == NULL || + get_call_result_type(fcinfo, NULL, &td) != TYPEFUNC_COMPOSITE) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("function returning record called in context " + "that cannot accept type record"))); + } + + ret = plperl_hash_to_datum(sv, td); + + /* Release on the result of get_call_result_type is harmless */ ReleaseTupleDesc(td); + return ret; } + /* Reference, but not reference to hash or array ... */ ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), errmsg("PL/Perl function must return reference to hash or array"))); @@ -1216,12 +1339,14 @@ plperl_sv_to_datum(SV *sv, FmgrInfo *finfo, Oid typid, Oid typioparam, } else { + /* handle a string/number */ Datum ret; char *str = sv2cstr(sv); + /* did not pass in any typeinfo? look it up */ if (!finfo) { - _sv_to_datum_finfo(&tmp, typid, &typioparam); + _sv_to_datum_finfo(typid, &tmp, &typioparam); finfo = &tmp; } @@ -1246,7 +1371,10 @@ plperl_sv_to_literal(SV *sv, char *fqtypename) if (!OidIsValid(typid)) elog(ERROR, "lookup failed for type %s", fqtypename); - datum = plperl_sv_to_datum(sv, NULL, typid, 0, -1, &isnull); + datum = plperl_sv_to_datum(sv, + typid, -1, + NULL, NULL, InvalidOid, + &isnull); if (isnull) return NULL; @@ -1537,10 +1665,11 @@ plperl_modify_tuple(HV *hvTD, TriggerData *tdata, HeapTuple otup) key))); modvalues[slotsused] = plperl_sv_to_datum(val, - NULL, tupdesc->attrs[attn - 1]->atttypid, - InvalidOid, tupdesc->attrs[attn - 1]->atttypmod, + NULL, + NULL, + InvalidOid, &isnull); modnulls[slotsused] = isnull ? 'n' : ' '; @@ -1583,9 +1712,15 @@ plperl_call_handler(PG_FUNCTION_ARGS) Datum retval; plperl_call_data *save_call_data = current_call_data; plperl_interp_desc *oldinterp = plperl_active_interp; + plperl_call_data this_call_data; + + /* Initialize current-call status record */ + MemSet(&this_call_data, 0, sizeof(this_call_data)); + this_call_data.fcinfo = fcinfo; PG_TRY(); { + current_call_data = &this_call_data; if (CALLED_AS_TRIGGER(fcinfo)) retval = PointerGetDatum(plperl_trigger_handler(fcinfo)); else @@ -1593,12 +1728,16 @@ plperl_call_handler(PG_FUNCTION_ARGS) } PG_CATCH(); { + if (this_call_data.prodesc) + decrement_prodesc_refcount(this_call_data.prodesc); current_call_data = save_call_data; activate_interpreter(oldinterp); PG_RE_THROW(); } PG_END_TRY(); + if (this_call_data.prodesc) + decrement_prodesc_refcount(this_call_data.prodesc); current_call_data = save_call_data; activate_interpreter(oldinterp); return retval; @@ -1618,8 +1757,12 @@ plperl_inline_handler(PG_FUNCTION_ARGS) plperl_proc_desc desc; plperl_call_data *save_call_data = current_call_data; plperl_interp_desc *oldinterp = plperl_active_interp; + plperl_call_data this_call_data; ErrorContextCallback pl_error_context; + /* Initialize current-call status record */ + MemSet(&this_call_data, 0, sizeof(this_call_data)); + /* Set up a callback for error reporting */ pl_error_context.callback = plperl_inline_callback; pl_error_context.previous = error_context_stack; @@ -1650,14 +1793,16 @@ plperl_inline_handler(PG_FUNCTION_ARGS) desc.nargs = 0; desc.reference = NULL; - current_call_data = (plperl_call_data *) palloc0(sizeof(plperl_call_data)); - current_call_data->fcinfo = &fake_fcinfo; - current_call_data->prodesc = &desc; + this_call_data.fcinfo = &fake_fcinfo; + this_call_data.prodesc = &desc; + /* we do not bother with refcounting the fake prodesc */ PG_TRY(); { SV *perlret; + current_call_data = &this_call_data; + if (SPI_connect() != SPI_OK_CONNECT) elog(ERROR, "could not connect to SPI manager"); @@ -1717,6 +1862,9 @@ plperl_validator(PG_FUNCTION_ARGS) bool istrigger = false; int i; + if (!CheckFunctionValidatorAccess(fcinfo->flinfo->fn_oid, funcoid)) + PG_RETURN_VOID(); + /* Get the new function's pg_proc entry */ tuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcoid)); if (!HeapTupleIsValid(tuple)) @@ -1796,6 +1944,7 @@ PG_FUNCTION_INFO_V1(plperlu_validator); Datum plperlu_validator(PG_FUNCTION_ARGS) { + /* call plperl validator with our fcinfo so it gets our oid */ return plperl_validator(fcinfo); } @@ -1982,7 +2131,7 @@ plperl_call_perl_trigger_func(plperl_proc_desc *desc, FunctionCallInfo fcinfo, ENTER; SAVETMPS; - TDsv = get_sv("_TD", 0); + TDsv = get_sv("main::_TD", 0); if (!TDsv) elog(ERROR, "couldn't fetch $_TD"); @@ -2038,20 +2187,13 @@ plperl_func_handler(PG_FUNCTION_ARGS) Datum retval = 0; ReturnSetInfo *rsi; ErrorContextCallback pl_error_context; - bool has_retval = false; - - /* - * Create the call_data beforing connecting to SPI, so that it is not - * allocated in the SPI memory context - */ - current_call_data = (plperl_call_data *) palloc0(sizeof(plperl_call_data)); - current_call_data->fcinfo = fcinfo; if (SPI_connect() != SPI_OK_CONNECT) elog(ERROR, "could not connect to SPI manager"); prodesc = compile_plperl_function(fcinfo->flinfo->fn_oid, false); current_call_data->prodesc = prodesc; + increment_prodesc_refcount(prodesc); /* Set a callback for error reporting */ pl_error_context.callback = plperl_exec_callback; @@ -2124,51 +2266,19 @@ plperl_func_handler(PG_FUNCTION_ARGS) rsi->setDesc = current_call_data->ret_tdesc; } retval = (Datum) 0; - has_retval = true; - } - else if (!SvOK(perlret)) - { - /* Return NULL if Perl code returned undef */ - if (rsi && IsA(rsi, ReturnSetInfo)) - rsi->isDone = ExprEndResult; - } - else if (prodesc->fn_retistuple) - { - /* Return a perl hash converted to a Datum */ - TupleDesc td; - - if (!SvOK(perlret) || !SvROK(perlret) || - SvTYPE(SvRV(perlret)) != SVt_PVHV) - { - ereport(ERROR, - (errcode(ERRCODE_DATATYPE_MISMATCH), - errmsg("composite-returning PL/Perl function " - "must return reference to hash"))); - } - - /* XXX should cache the attinmeta data instead of recomputing */ - if (get_call_result_type(fcinfo, NULL, &td) != TYPEFUNC_COMPOSITE) - { - ereport(ERROR, - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("function returning record called in context " - "that cannot accept type record"))); - } - - retval = plperl_hash_to_datum(perlret, td); - has_retval = true; } - - if (!has_retval) + else { - bool isnull; - retval = plperl_sv_to_datum(perlret, - &prodesc->result_in_func, prodesc->result_oid, - prodesc->result_typioparam, -1, &isnull); - fcinfo->isnull = isnull; - has_retval = true; + -1, + fcinfo, + &prodesc->result_in_func, + prodesc->result_typioparam, + &fcinfo->isnull); + + if (fcinfo->isnull && rsi && IsA(rsi, ReturnSetInfo)) + rsi->isDone = ExprEndResult; } /* Restore the previous error callback */ @@ -2190,13 +2300,6 @@ plperl_trigger_handler(PG_FUNCTION_ARGS) HV *hvTD; ErrorContextCallback pl_error_context; - /* - * Create the call_data beforing connecting to SPI, so that it is not - * allocated in the SPI memory context - */ - current_call_data = (plperl_call_data *) palloc0(sizeof(plperl_call_data)); - current_call_data->fcinfo = fcinfo; - /* Connect to SPI manager */ if (SPI_connect() != SPI_OK_CONNECT) elog(ERROR, "could not connect to SPI manager"); @@ -2204,6 +2307,7 @@ plperl_trigger_handler(PG_FUNCTION_ARGS) /* Find or compile the function */ prodesc = compile_plperl_function(fcinfo->flinfo->fn_oid, true); current_call_data->prodesc = prodesc; + increment_prodesc_refcount(prodesc); /* Set a callback for error reporting */ pl_error_context.callback = plperl_exec_callback; @@ -2313,23 +2417,35 @@ validate_plperl_function(plperl_proc_ptr *proc_ptr, HeapTuple procTup) /* Otherwise, unlink the obsoleted entry from the hashtable ... */ proc_ptr->proc_ptr = NULL; - /* ... and throw it away */ - if (prodesc->reference) - { - plperl_interp_desc *oldinterp = plperl_active_interp; - - activate_interpreter(prodesc->interp); - SvREFCNT_dec(prodesc->reference); - activate_interpreter(oldinterp); - } - free(prodesc->proname); - free(prodesc); + /* ... and release the corresponding refcount, probably deleting it */ + decrement_prodesc_refcount(prodesc); } return false; } +static void +free_plperl_function(plperl_proc_desc *prodesc) +{ + Assert(prodesc->refcount <= 0); + /* Release CODE reference, if we have one, from the appropriate interp */ + if (prodesc->reference) + { + plperl_interp_desc *oldinterp = plperl_active_interp; + + activate_interpreter(prodesc->interp); + SvREFCNT_dec(prodesc->reference); + activate_interpreter(oldinterp); + } + /* Get rid of what we conveniently can of our own structs */ + /* (FmgrInfo subsidiary info will get leaked ...) */ + if (prodesc->proname) + free(prodesc->proname); + free(prodesc); +} + + static plperl_proc_desc * compile_plperl_function(Oid fn_oid, bool is_trigger) { @@ -2400,12 +2516,17 @@ compile_plperl_function(Oid fn_oid, bool is_trigger) ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"))); + /* Initialize all fields to 0 so free_plperl_function is safe */ MemSet(prodesc, 0, sizeof(plperl_proc_desc)); + prodesc->proname = strdup(NameStr(procStruct->proname)); if (prodesc->proname == NULL) + { + free_plperl_function(prodesc); ereport(ERROR, (errcode(ERRCODE_OUT_OF_MEMORY), errmsg("out of memory"))); + } prodesc->fn_xmin = HeapTupleHeaderGetXmin(procTup->t_data); prodesc->fn_tid = procTup->t_self; @@ -2420,8 +2541,7 @@ compile_plperl_function(Oid fn_oid, bool is_trigger) ObjectIdGetDatum(procStruct->prolang)); if (!HeapTupleIsValid(langTup)) { - free(prodesc->proname); - free(prodesc); + free_plperl_function(prodesc); elog(ERROR, "cache lookup failed for language %u", procStruct->prolang); } @@ -2440,8 +2560,7 @@ compile_plperl_function(Oid fn_oid, bool is_trigger) ObjectIdGetDatum(procStruct->prorettype)); if (!HeapTupleIsValid(typeTup)) { - free(prodesc->proname); - free(prodesc); + free_plperl_function(prodesc); elog(ERROR, "cache lookup failed for type %u", procStruct->prorettype); } @@ -2455,8 +2574,7 @@ compile_plperl_function(Oid fn_oid, bool is_trigger) /* okay */ ; else if (procStruct->prorettype == TRIGGEROID) { - free(prodesc->proname); - free(prodesc); + free_plperl_function(prodesc); ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("trigger functions can only be called " @@ -2464,8 +2582,7 @@ compile_plperl_function(Oid fn_oid, bool is_trigger) } else { - free(prodesc->proname); - free(prodesc); + free_plperl_function(prodesc); ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("PL/Perl functions cannot return type %s", @@ -2500,8 +2617,7 @@ compile_plperl_function(Oid fn_oid, bool is_trigger) ObjectIdGetDatum(procStruct->proargtypes.values[i])); if (!HeapTupleIsValid(typeTup)) { - free(prodesc->proname); - free(prodesc); + free_plperl_function(prodesc); elog(ERROR, "cache lookup failed for type %u", procStruct->proargtypes.values[i]); } @@ -2511,8 +2627,7 @@ compile_plperl_function(Oid fn_oid, bool is_trigger) if (typeStruct->typtype == TYPTYPE_PSEUDO && procStruct->proargtypes.values[i] != RECORDOID) { - free(prodesc->proname); - free(prodesc); + free_plperl_function(prodesc); ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("PL/Perl functions cannot accept type %s", @@ -2565,8 +2680,7 @@ compile_plperl_function(Oid fn_oid, bool is_trigger) pfree(proc_source); if (!prodesc->reference) /* can this happen? */ { - free(prodesc->proname); - free(prodesc); + free_plperl_function(prodesc); elog(ERROR, "could not create PL/Perl internal procedure"); } @@ -2578,6 +2692,7 @@ compile_plperl_function(Oid fn_oid, bool is_trigger) proc_ptr = hash_search(plperl_proc_hash, &proc_key, HASH_ENTER, NULL); proc_ptr->proc_ptr = prodesc; + increment_prodesc_refcount(prodesc); } /* restore previous error callback */ @@ -2837,19 +2952,11 @@ plperl_return_next(SV *sv) (errcode(ERRCODE_SYNTAX_ERROR), errmsg("cannot use return_next in a non-SETOF function"))); - if (prodesc->fn_retistuple && - !(SvOK(sv) && SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVHV)) - ereport(ERROR, - (errcode(ERRCODE_DATATYPE_MISMATCH), - errmsg("SETOF-composite-returning PL/Perl function " - "must call return_next with reference to hash"))); - if (!current_call_data->ret_tdesc) { TupleDesc tupdesc; Assert(!current_call_data->tuple_store); - Assert(!current_call_data->attinmeta); /* * This is the first call to return_next in the current PL/Perl @@ -2870,11 +2977,6 @@ plperl_return_next(SV *sv) current_call_data->tuple_store = tuplestore_begin_heap(rsi->allowedModes & SFRM_Materialize_Random, false, work_mem); - if (prodesc->fn_retistuple) - { - current_call_data->attinmeta = - TupleDescGetAttInMetadata(current_call_data->ret_tdesc); - } MemoryContextSwitchTo(old_cxt); } @@ -2888,7 +2990,7 @@ plperl_return_next(SV *sv) if (!current_call_data->tmp_cxt) { current_call_data->tmp_cxt = - AllocSetContextCreate(rsi->econtext->ecxt_per_tuple_memory, + AllocSetContextCreate(CurrentMemoryContext, "PL/Perl return_next temporary cxt", ALLOCSET_DEFAULT_MINSIZE, ALLOCSET_DEFAULT_INITSIZE, @@ -2901,8 +3003,14 @@ plperl_return_next(SV *sv) { HeapTuple tuple; + if (!(SvOK(sv) && SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVHV)) + ereport(ERROR, + (errcode(ERRCODE_DATATYPE_MISMATCH), + errmsg("SETOF-composite-returning PL/Perl function " + "must call return_next with reference to hash"))); + tuple = plperl_build_tuple_result((HV *) SvRV(sv), - current_call_data->attinmeta); + current_call_data->ret_tdesc); tuplestore_puttuple(current_call_data->tuple_store, tuple); } else @@ -2911,10 +3019,12 @@ plperl_return_next(SV *sv) bool isNull; ret = plperl_sv_to_datum(sv, - &prodesc->result_in_func, prodesc->result_oid, + -1, + fcinfo, + &prodesc->result_in_func, prodesc->result_typioparam, - -1, &isNull); + &isNull); tuplestore_putvalues(current_call_data->tuple_store, current_call_data->ret_tdesc, @@ -3110,33 +3220,57 @@ plperl_spi_cursor_close(char *cursor) SV * plperl_spi_prepare(char *query, int argc, SV **argv) { - plperl_query_desc *qdesc; - plperl_query_entry *hash_entry; - bool found; - void *plan; - int i; - + void *volatile plan = NULL; + volatile MemoryContext plan_cxt = NULL; + plperl_query_desc *volatile qdesc = NULL; + plperl_query_entry *volatile hash_entry = NULL; MemoryContext oldcontext = CurrentMemoryContext; ResourceOwner oldowner = CurrentResourceOwner; + MemoryContext work_cxt; + bool found; + int i; check_spi_usage_allowed(); BeginInternalSubTransaction(NULL); MemoryContextSwitchTo(oldcontext); - /************************************************************ - * Allocate the new querydesc structure - ************************************************************/ - qdesc = (plperl_query_desc *) malloc(sizeof(plperl_query_desc)); - MemSet(qdesc, 0, sizeof(plperl_query_desc)); - snprintf(qdesc->qname, sizeof(qdesc->qname), "%p", qdesc); - qdesc->nargs = argc; - qdesc->argtypes = (Oid *) malloc(argc * sizeof(Oid)); - qdesc->arginfuncs = (FmgrInfo *) malloc(argc * sizeof(FmgrInfo)); - qdesc->argtypioparams = (Oid *) malloc(argc * sizeof(Oid)); - PG_TRY(); { + CHECK_FOR_INTERRUPTS(); + + /************************************************************ + * Allocate the new querydesc structure + * + * The qdesc struct, as well as all its subsidiary data, lives in its + * plan_cxt. But note that the SPIPlan does not. + ************************************************************/ + plan_cxt = AllocSetContextCreate(TopMemoryContext, + "PL/Perl spi_prepare query", + ALLOCSET_SMALL_MINSIZE, + ALLOCSET_SMALL_INITSIZE, + ALLOCSET_SMALL_MAXSIZE); + MemoryContextSwitchTo(plan_cxt); + qdesc = (plperl_query_desc *) palloc0(sizeof(plperl_query_desc)); + snprintf(qdesc->qname, sizeof(qdesc->qname), "%p", qdesc); + qdesc->plan_cxt = plan_cxt; + qdesc->nargs = argc; + qdesc->argtypes = (Oid *) palloc(argc * sizeof(Oid)); + qdesc->arginfuncs = (FmgrInfo *) palloc(argc * sizeof(FmgrInfo)); + qdesc->argtypioparams = (Oid *) palloc(argc * sizeof(Oid)); + MemoryContextSwitchTo(oldcontext); + + /************************************************************ + * Do the following work in a short-lived context so that we don't + * leak a lot of memory in the PL/Perl function's SPI Proc context. + ************************************************************/ + work_cxt = AllocSetContextCreate(CurrentMemoryContext, + "PL/Perl spi_prepare workspace", + ALLOCSET_DEFAULT_MINSIZE, + ALLOCSET_DEFAULT_INITSIZE, + ALLOCSET_DEFAULT_MAXSIZE); + MemoryContextSwitchTo(work_cxt); + /************************************************************ * Resolve argument type names and then look them up by oid * in the system cache, and remember the required information @@ -3157,7 +3291,7 @@ plperl_spi_prepare(char *query, int argc, SV **argv) getTypeInputInfo(typId, &typInput, &typIOParam); qdesc->argtypes[i] = typId; - perm_fmgr_info(typInput, &(qdesc->arginfuncs[i])); + fmgr_info_cxt(typInput, &(qdesc->arginfuncs[i]), plan_cxt); qdesc->argtypioparams[i] = typIOParam; } @@ -3185,6 +3319,17 @@ plperl_spi_prepare(char *query, int argc, SV **argv) /* Release the procCxt copy to avoid within-function memory leak */ SPI_freeplan(plan); + /************************************************************ + * Insert a hashtable entry for the plan. + ************************************************************/ + hash_entry = hash_search(plperl_active_interp->query_hash, + qdesc->qname, + HASH_ENTER, &found); + hash_entry->query_data = qdesc; + + /* Get rid of workspace */ + MemoryContextDelete(work_cxt); + /* Commit the inner transaction, return to outer xact context */ ReleaseCurrentSubTransaction(); MemoryContextSwitchTo(oldcontext); @@ -3200,16 +3345,21 @@ plperl_spi_prepare(char *query, int argc, SV **argv) { ErrorData *edata; - free(qdesc->argtypes); - free(qdesc->arginfuncs); - free(qdesc->argtypioparams); - free(qdesc); - /* Save error info */ MemoryContextSwitchTo(oldcontext); edata = CopyErrorData(); FlushErrorState(); + /* Drop anything we managed to allocate */ + if (hash_entry) + hash_search(plperl_active_interp->query_hash, + qdesc->qname, + HASH_REMOVE, NULL); + if (plan_cxt) + MemoryContextDelete(plan_cxt); + if (plan) + SPI_freeplan(plan); + /* Abort the inner transaction */ RollbackAndReleaseCurrentSubTransaction(); MemoryContextSwitchTo(oldcontext); @@ -3231,14 +3381,8 @@ plperl_spi_prepare(char *query, int argc, SV **argv) PG_END_TRY(); /************************************************************ - * Insert a hashtable entry for the plan and return - * the key to the caller. + * Return the query's hash key to the caller. ************************************************************/ - - hash_entry = hash_search(plperl_active_interp->query_hash, qdesc->qname, - HASH_ENTER, &found); - hash_entry->query_data = qdesc; - return cstr2sv(qdesc->qname); } @@ -3273,16 +3417,14 @@ plperl_spi_exec_prepared(char *query, HV *attr, int argc, SV **argv) /************************************************************ * Fetch the saved plan descriptor, see if it's o.k. ************************************************************/ - hash_entry = hash_search(plperl_active_interp->query_hash, query, HASH_FIND, NULL); if (hash_entry == NULL) elog(ERROR, "spi_exec_prepared: Invalid prepared query passed"); qdesc = hash_entry->query_data; - if (qdesc == NULL) - elog(ERROR, "spi_exec_prepared: panic - plperl query_hash value vanished"); + elog(ERROR, "spi_exec_prepared: plperl query_hash value vanished"); if (qdesc->nargs != argc) elog(ERROR, "spi_exec_prepared: expected %d argument(s), %d passed", @@ -3317,10 +3459,12 @@ plperl_spi_exec_prepared(char *query, HV *attr, int argc, SV **argv) bool isnull; argvalues[i] = plperl_sv_to_datum(argv[i], - &qdesc->arginfuncs[i], qdesc->argtypes[i], + -1, + NULL, + &qdesc->arginfuncs[i], qdesc->argtypioparams[i], - -1, &isnull); + &isnull); nulls[i] = isnull ? 'n' : ' '; } @@ -3412,12 +3556,11 @@ plperl_spi_query_prepared(char *query, int argc, SV **argv) hash_entry = hash_search(plperl_active_interp->query_hash, query, HASH_FIND, NULL); if (hash_entry == NULL) - elog(ERROR, "spi_exec_prepared: Invalid prepared query passed"); + elog(ERROR, "spi_query_prepared: Invalid prepared query passed"); qdesc = hash_entry->query_data; - if (qdesc == NULL) - elog(ERROR, "spi_query_prepared: panic - plperl query_hash value vanished"); + elog(ERROR, "spi_query_prepared: plperl query_hash value vanished"); if (qdesc->nargs != argc) elog(ERROR, "spi_query_prepared: expected %d argument(s), %d passed", @@ -3442,10 +3585,12 @@ plperl_spi_query_prepared(char *query, int argc, SV **argv) bool isnull; argvalues[i] = plperl_sv_to_datum(argv[i], - &qdesc->arginfuncs[i], qdesc->argtypes[i], + -1, + NULL, + &qdesc->arginfuncs[i], qdesc->argtypioparams[i], - -1, &isnull); + &isnull); nulls[i] = isnull ? 'n' : ' '; } @@ -3520,12 +3665,12 @@ plperl_spi_freeplan(char *query) hash_entry = hash_search(plperl_active_interp->query_hash, query, HASH_FIND, NULL); if (hash_entry == NULL) - elog(ERROR, "spi_exec_prepared: Invalid prepared query passed"); + elog(ERROR, "spi_freeplan: Invalid prepared query passed"); qdesc = hash_entry->query_data; - if (qdesc == NULL) - elog(ERROR, "spi_exec_freeplan: panic - plperl query_hash value vanished"); + elog(ERROR, "spi_freeplan: plperl query_hash value vanished"); + plan = qdesc->plan; /* * free all memory before SPI_freeplan, so if it dies, nothing will be @@ -3534,11 +3679,7 @@ plperl_spi_freeplan(char *query) hash_search(plperl_active_interp->query_hash, query, HASH_REMOVE, NULL); - plan = qdesc->plan; - free(qdesc->argtypes); - free(qdesc->arginfuncs); - free(qdesc->argtypioparams); - free(qdesc); + MemoryContextDelete(qdesc->plan_cxt); SPI_freeplan(plan); } diff --git a/src/pl/plperl/plperl_helpers.h b/src/pl/plperl/plperl_helpers.h index 81c177b164..30d8c0bb0b 100644 --- a/src/pl/plperl/plperl_helpers.h +++ b/src/pl/plperl/plperl_helpers.h @@ -3,24 +3,47 @@ /* * convert from utf8 to database encoding + * + * Returns a palloc'ed copy of the original string */ static inline char * -utf_u2e(const char *utf8_str, size_t len) +utf_u2e(char *utf8_str, size_t len) { - char *ret = (char *) pg_do_encoding_conversion((unsigned char *) utf8_str, len, PG_UTF8, GetDatabaseEncoding()); + int enc = GetDatabaseEncoding(); + char *ret; + + /* + * When we are in a PG_UTF8 or SQL_ASCII database + * pg_do_encoding_conversion() will not do any conversion (which is good) + * or verification (not so much), so we need to run the verification step + * separately. + */ + if (enc == PG_UTF8 || enc == PG_SQL_ASCII) + { + pg_verify_mbstr_len(enc, utf8_str, len, false); + ret = utf8_str; + } + else + ret = (char *) pg_do_encoding_conversion((unsigned char *) utf8_str, + len, PG_UTF8, enc); if (ret == utf8_str) ret = pstrdup(ret); + return ret; } /* * convert from database encoding to utf8 + * + * Returns a palloc'ed copy of the original string */ static inline char * utf_e2u(const char *str) { - char *ret = (char *) pg_do_encoding_conversion((unsigned char *) str, strlen(str), GetDatabaseEncoding(), PG_UTF8); + char *ret = + (char *) pg_do_encoding_conversion((unsigned char *) str, strlen(str), + GetDatabaseEncoding(), PG_UTF8); if (ret == str) ret = pstrdup(ret); @@ -30,39 +53,79 @@ utf_e2u(const char *str) /* * Convert an SV to a char * in the current database encoding + * + * Returns a palloc'ed copy of the original string */ static inline char * sv2cstr(SV *sv) { - char *val; + char *val, *res; STRLEN len; /* * get a utf8 encoded char * out of perl. *note* it may not be valid utf8! */ - val = SvPVutf8(sv, len); /* - * we use perls length in the event we had an embedded null byte to ensure - * we error out properly + * SvPVutf8() croaks nastily on certain things, like typeglobs and + * readonly objects such as $^V. That's a perl bug - it's not supposed to + * happen. To avoid crashing the backend, we make a copy of the sv before + * passing it to SvPVutf8(). The copy is garbage collected + * when we're done with it. + */ + if (SvREADONLY(sv) || + isGV_with_GP(sv) || + (SvTYPE(sv) > SVt_PVLV && SvTYPE(sv) != SVt_PVFM)) + sv = newSVsv(sv); + else + { + /* + * increase the reference count so we can just SvREFCNT_dec() it when + * we are done + */ + SvREFCNT_inc_simple_void(sv); + } + + /* + * Request the string from Perl, in UTF-8 encoding; but if we're in a + * SQL_ASCII database, just request the byte soup without trying to make it + * UTF8, because that might fail. + */ + if (GetDatabaseEncoding() == PG_SQL_ASCII) + val = SvPV(sv, len); + else + val = SvPVutf8(sv, len); + + /* + * Now convert to database encoding. We use perl's length in the event we + * had an embedded null byte to ensure we error out properly. */ - return utf_u2e(val, len); + res = utf_u2e(val, len); + + /* safe now to garbage collect the new SV */ + SvREFCNT_dec(sv); + + return res; } /* * Create a new SV from a string assumed to be in the current database's * encoding. */ - static inline SV * cstr2sv(const char *str) { SV *sv; - char *utf8_str = utf_e2u(str); + char *utf8_str; + + /* no conversion when SQL_ASCII */ + if (GetDatabaseEncoding() == PG_SQL_ASCII) + return newSVpv(str, 0); + + utf8_str = utf_e2u(str); sv = newSVpv(utf8_str, 0); SvUTF8_on(sv); - pfree(utf8_str); return sv; diff --git a/src/pl/plperl/plperlu--1.0.sql b/src/pl/plperl/plperlu--1.0.sql index 025f7957c4..d1d213dd5f 100644 --- a/src/pl/plperl/plperlu--1.0.sql +++ b/src/pl/plperl/plperlu--1.0.sql @@ -7,3 +7,5 @@ */ CREATE PROCEDURAL LANGUAGE plperlu; + +COMMENT ON PROCEDURAL LANGUAGE plperlu IS 'PL/PerlU untrusted procedural language'; diff --git a/src/pl/plperl/po/cs.po b/src/pl/plperl/po/cs.po new file mode 100644 index 0000000000..a30661484b --- /dev/null +++ b/src/pl/plperl/po/cs.po @@ -0,0 +1,197 @@ +# Czech message translation file for plperl +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# +# Tomáš Vondra , 2011, 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: plperl-cs (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2012-04-06 23:39+0000\n" +"PO-Revision-Date: 2012-04-07 02:13+0200\n" +"Last-Translator: Tomas Vondra \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: plperl.c:364 +msgid "" +"If true, trusted and untrusted Perl code will be compiled in strict mode." +msgstr "" +"Pokud je true, trusted a untrusted Perl kód bude zkompilován ve striktním " +"módu." + +#: plperl.c:378 +msgid "" +"Perl initialization code to execute when a Perl interpreter is initialized." +msgstr "Perl inicializační kód spouštěný při inicializaci Perl interpreteru." + +#: plperl.c:400 +msgid "Perl initialization code to execute once when plperl is first used." +msgstr "Perl inicializační kód spouštěný při prvním použití jazyka plperl." + +#: plperl.c:408 +msgid "Perl initialization code to execute once when plperlu is first used." +msgstr "Perl inicializační kód spouštěný při prvním použití jazyka plperlu." + +#: plperl.c:625 plperl.c:787 plperl.c:792 plperl.c:896 plperl.c:907 +#: plperl.c:948 plperl.c:969 plperl.c:1942 plperl.c:2037 plperl.c:2099 +#, c-format +msgid "%s" +msgstr "%s" + +#: plperl.c:626 +msgid "while executing PostgreSQL::InServer::SPI::bootstrap" +msgstr "během spouštění PostgreSQL::InServer::SPI::bootstrap" + +#: plperl.c:788 +msgid "while parsing Perl initialization" +msgstr "během parsování Perl inicializace" + +#: plperl.c:793 +msgid "while running Perl initialization" +msgstr "během běhu Perl inicializace" + +#: plperl.c:897 +msgid "while executing PLC_TRUSTED" +msgstr "během spouštění PLC_TRUSTED" + +#: plperl.c:908 +msgid "while executing utf8fix" +msgstr "během spouštění utf8fix" + +#: plperl.c:949 +msgid "while executing plperl.on_plperl_init" +msgstr "během spouštění plperl.on_plperl_init" + +#: plperl.c:970 +msgid "while executing plperl.on_plperlu_init" +msgstr "během spouštění plperl.on_plperlu_init" + +#: plperl.c:1014 plperl.c:1614 +#, c-format +msgid "Perl hash contains nonexistent column \"%s\"" +msgstr "Perl hash obsahuje neexistující sloupec \"%s\"" + +#: plperl.c:1099 +#, c-format +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgstr "počet rozměrů pole (%d) překračuje povolené maximum (%d)" + +#: plperl.c:1111 plperl.c:1128 +msgid "" +"multidimensional arrays must have array expressions with matching dimensions" +msgstr "vícerozměrná pole musí mít výrazy s odpovídajícími rozměry" + +#: plperl.c:1165 +#, c-format +msgid "cannot convert Perl array to non-array type %s" +msgstr "Perlové pole nelze převést na typ %s který není pole" + +#: plperl.c:1261 +#, c-format +msgid "cannot convert Perl hash to non-composite type %s" +msgstr "Perlový hash nelze převést na nekompozitní typ %s" + +#: plperl.c:1272 +msgid "" +"function returning record called in context that cannot accept type record" +msgstr "" +"funkce vracející záznam byla zavolána z kontextu, který neumožňuje přijetí " +"záznamu" + +#: plperl.c:1287 +msgid "PL/Perl function must return reference to hash or array" +msgstr "PL/Perl funkce musí vracet odkaz na hash nebo pole" + +#: plperl.c:1591 +msgid "$_TD->{new} does not exist" +msgstr "$_TD->{new} neexistuje" + +#: plperl.c:1595 +msgid "$_TD->{new} is not a hash reference" +msgstr "$_TD->{new} není odkaz na hash" + +#: plperl.c:1819 plperl.c:2517 +#, c-format +msgid "PL/Perl functions cannot return type %s" +msgstr "PL/Perl funkce nemohou vracet datový typ %s" + +#: plperl.c:1832 plperl.c:2564 +#, c-format +msgid "PL/Perl functions cannot accept type %s" +msgstr "PL/Perl funkce nemohou přijímat datový typ %s" + +#: plperl.c:1946 +#, c-format +msgid "didn't get a CODE reference from compiling function \"%s\"" +msgstr "z kompilované funkce se nepodařilo získat CODE referenci \"%s\"" + +#: plperl.c:2150 +msgid "set-valued function called in context that cannot accept a set" +msgstr "" +"funkce vracející tabulku (set-valued) byla zavolána z kontextu, který " +"neumožňuje přijetí tabulky" + +#: plperl.c:2194 +msgid "" +"set-returning PL/Perl function must return reference to array or use " +"return_next" +msgstr "" +"PL/Perl funkce vracející tabulku (set-returned) musí vracet odkaz na pole " +"nebo používat return_next." + +#: plperl.c:2314 +msgid "ignoring modified row in DELETE trigger" +msgstr "ignoruje modifikovaný řádek v DELETE triggeru" + +#: plperl.c:2322 +msgid "" +"result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\"" +msgstr "" +"výsledek PL/Perl trigger funkce musí být undef, \"SKIP\", nebo \"MODIFY\"" + +#: plperl.c:2448 plperl.c:2454 +msgid "out of memory" +msgstr "nedostatek paměti" + +#: plperl.c:2508 +msgid "trigger functions can only be called as triggers" +msgstr "" +"funkce pro obsluhu triggerů mohou být volané pouze prostřednictvím triggerů" + +#: plperl.c:2884 +msgid "cannot use return_next in a non-SETOF function" +msgstr "" +"return_next nelze použít v non-SETOF funkci (funkci nevracející tabulku)" + +#: plperl.c:2940 +msgid "" +"SETOF-composite-returning PL/Perl function must call return_next with " +"reference to hash" +msgstr "" +"PL/Perl funkce vracející tabulku složených typů (SETOF-composite-returning) " +"musí volat return_next s odkazem na hash" + +#: plperl.c:3655 +#, c-format +msgid "PL/Perl function \"%s\"" +msgstr "PL/Perl funkce \"%s\"" + +#: plperl.c:3667 +#, c-format +msgid "compilation of PL/Perl function \"%s\"" +msgstr "kompilace PL/Perl funkce \"%s\"" + +#: plperl.c:3676 +msgid "PL/Perl anonymous code block" +msgstr "PL/Perl anonymní blok kódu" + +#~ msgid "composite-returning PL/Perl function must return reference to hash" +#~ msgstr "" +#~ "PL/Perl funkce vracející složený datový typ (composite-returning) musí " +#~ "vracet odkaz na hash" diff --git a/src/pl/plperl/po/de.po b/src/pl/plperl/po/de.po index e5c148c75c..6f67c9dfe0 100644 --- a/src/pl/plperl/po/de.po +++ b/src/pl/plperl/po/de.po @@ -3,16 +3,14 @@ # This file is distributed under the same license as the PostgreSQL package. # Peter Eisentraut , 2009 - 2011. # -# pgtranslation Id: plperl.po,v 1.7 2011/05/11 17:25:41 petere Exp $ -# # Use these quotes: »%s« # msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2011-05-11 04:38+0000\n" -"PO-Revision-Date: 2011-05-11 19:49+0300\n" +"POT-Creation-Date: 2011-11-09 20:39+0000\n" +"PO-Revision-Date: 2011-11-29 22:53+0200\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" "Language: de\n" @@ -20,117 +18,135 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: plperl.c:361 +#: plperl.c:364 msgid "" "If true, trusted and untrusted Perl code will be compiled in strict mode." msgstr "" "Wenn wahr, dann wird vertrauenswürdiger und nicht vertrauenswürdiger Perl-" "Code im »strict«-Modus kompiliert." -#: plperl.c:375 +#: plperl.c:378 msgid "" "Perl initialization code to execute when a Perl interpreter is initialized." msgstr "" "Perl-Initialisierungscode, der ausgeführt wird, wenn der Perl-Interpreter " "initialisiert wird." -#: plperl.c:397 +#: plperl.c:400 msgid "Perl initialization code to execute once when plperl is first used." msgstr "" "Perl-Initialisierungscode, der ausgeführt wird, wenn plperl zum ersten Mal " "benutzt wird." -#: plperl.c:405 +#: plperl.c:408 msgid "Perl initialization code to execute once when plperlu is first used." msgstr "" "Perl-Initialisierungscode, der ausgeführt wird, wenn plperlu zum ersten Mal " "benutzt wird." -#: plperl.c:622 plperl.c:784 plperl.c:789 plperl.c:893 plperl.c:904 -#: plperl.c:945 plperl.c:966 plperl.c:1857 plperl.c:1952 plperl.c:2011 +#: plperl.c:625 plperl.c:787 plperl.c:792 plperl.c:896 plperl.c:907 +#: plperl.c:948 plperl.c:969 plperl.c:1942 plperl.c:2037 plperl.c:2099 #, c-format msgid "%s" msgstr "%s" -#: plperl.c:623 +#: plperl.c:626 msgid "while executing PostgreSQL::InServer::SPI::bootstrap" msgstr "beim Ausführen von PostgreSQL::InServer::SPI::bootstrap" -#: plperl.c:785 +#: plperl.c:788 msgid "while parsing Perl initialization" msgstr "beim Parsen der Perl-Initialisierung" -#: plperl.c:790 +#: plperl.c:793 msgid "while running Perl initialization" msgstr "beim Ausführen der Perl-Initialisierung" -#: plperl.c:894 +#: plperl.c:897 msgid "while executing PLC_TRUSTED" msgstr "beim Ausführen von PLC_TRUSTED" -#: plperl.c:905 +#: plperl.c:908 msgid "while executing utf8fix" msgstr "beim Ausführen von utf8fix" -#: plperl.c:946 +#: plperl.c:949 msgid "while executing plperl.on_plperl_init" msgstr "beim Ausführen von plperl.on_plperl_init" -#: plperl.c:967 +#: plperl.c:970 msgid "while executing plperl.on_plperlu_init" msgstr "beim Ausführen von plperl.on_plperlu_init" -#: plperl.c:1013 plperl.c:1530 +#: plperl.c:1014 plperl.c:1614 #, c-format msgid "Perl hash contains nonexistent column \"%s\"" msgstr "Perl-Hash enthält nicht existierende Spalte »%s«" -#: plperl.c:1095 +#: plperl.c:1099 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "Anzahl der Arraydimensionen (%d) überschreitet erlaubtes Maximum (%d)" -#: plperl.c:1109 +#: plperl.c:1111 plperl.c:1128 msgid "" "multidimensional arrays must have array expressions with matching dimensions" msgstr "" "mehrdimensionale Arrays müssen Arraysausdrücke mit gleicher Anzahl " "Dimensionen haben" -#: plperl.c:1214 +#: plperl.c:1165 +#, c-format +msgid "cannot convert Perl array to non-array type %s" +msgstr "kann Perl-Array nicht in Nicht-Array-Typ %s umwandeln" + +#: plperl.c:1261 +#, c-format +msgid "cannot convert Perl hash to non-composite type %s" +msgstr "kann Perl-Hash nicht in nicht zusammengesetzten Typ %s umwandeln" + +#: plperl.c:1272 +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" + +#: plperl.c:1287 msgid "PL/Perl function must return reference to hash or array" -msgstr "PL/Perl-Funktion muss eine Referenz auf ein Hash oder ein Array zurückgeben" +msgstr "" +"PL/Perl-Funktion muss eine Referenz auf ein Hash oder ein Array zurückgeben" -#: plperl.c:1507 +#: plperl.c:1591 msgid "$_TD->{new} does not exist" msgstr "$_TD->{new} existiert nicht" -#: plperl.c:1511 +#: plperl.c:1595 msgid "$_TD->{new} is not a hash reference" msgstr "$_TD->{new} ist keine Hash-Referenz" -#: plperl.c:1734 plperl.c:2462 +#: plperl.c:1819 plperl.c:2517 #, c-format msgid "PL/Perl functions cannot return type %s" msgstr "PL/Perl-Funktionen können keinen Rückgabetyp %s haben" -#: plperl.c:1747 plperl.c:2509 +#: plperl.c:1832 plperl.c:2564 #, c-format msgid "PL/Perl functions cannot accept type %s" msgstr "PL/Perl-Funktionen können Typ %s nicht annehmen" -#: plperl.c:1861 +#: plperl.c:1946 #, c-format msgid "didn't get a CODE reference from compiling function \"%s\"" msgstr "keine CODE-Referenz erhalten beim Kompilieren von Funktion »%s«" -#: plperl.c:2063 +#: plperl.c:2150 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" -#: plperl.c:2107 +#: plperl.c:2194 msgid "" "set-returning PL/Perl function must return reference to array or use " "return_next" @@ -138,43 +154,30 @@ msgstr "" "PL/Perl-Funktionen mit Mengenergebnis müssen eine Referenz auf ein Array " "zurückgeben oder return_next verwenden" -#: plperl.c:2136 -msgid "composite-returning PL/Perl function must return reference to hash" -msgstr "" -"PL/Perl-Funktion, die einen zusammengesetzten Typ zurückgibt, muss eine " -"Referenz auf ein Hash zurückgeben" - -#: plperl.c:2145 -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" - -#: plperl.c:2259 +#: plperl.c:2314 msgid "ignoring modified row in DELETE trigger" msgstr "geänderte Zeile im DELETE-Trigger wird ignoriert" -#: plperl.c:2267 +#: plperl.c:2322 msgid "" "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\"" msgstr "" "Ergebnis einer PL/Perl-Triggerfunktion muss undef, »SKIP« oder »MODIFY« sein" -#: plperl.c:2393 plperl.c:2399 +#: plperl.c:2448 plperl.c:2454 msgid "out of memory" msgstr "Speicher aufgebraucht" -#: plperl.c:2453 +#: plperl.c:2508 msgid "trigger functions can only be called as triggers" msgstr "Triggerfunktionen können nur als Trigger aufgerufen werden" -#: plperl.c:2825 +#: plperl.c:2884 msgid "cannot use return_next in a non-SETOF function" msgstr "" "return_next kann nur in einer Funktion mit SETOF-Rückgabetyp verwendet werden" -#: plperl.c:2831 +#: plperl.c:2940 msgid "" "SETOF-composite-returning PL/Perl function must call return_next with " "reference to hash" @@ -182,16 +185,16 @@ msgstr "" "PL/Perl-Funktion, die SETOF eines zusammengesetzten Typs zurückgibt, muss " "return_next mit einer Referenz auf ein Hash aufrufen" -#: plperl.c:3597 +#: plperl.c:3655 #, c-format msgid "PL/Perl function \"%s\"" msgstr "PL/Perl-Funktion »%s«" -#: plperl.c:3609 +#: plperl.c:3667 #, c-format msgid "compilation of PL/Perl function \"%s\"" msgstr "Kompilierung der PL/Perl-Funktion »%s«" -#: plperl.c:3618 +#: plperl.c:3676 msgid "PL/Perl anonymous code block" msgstr "anonymer PL/Perl-Codeblock" diff --git a/src/pl/plperl/po/es.po b/src/pl/plperl/po/es.po index f2aa6e1385..8839ee38c1 100644 --- a/src/pl/plperl/po/es.po +++ b/src/pl/plperl/po/es.po @@ -1,121 +1,153 @@ # Spanish message translation file for plperl # -# Copyright (C) 2008-2010 PostgreSQL Global Development Group +# Copyright (C) 2008-2012 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # # Emanuel Calvo Franco , 2008. -# Alvaro Herrera , 2009-2010 -# -# pgtranslation Id: plperl.po,v 1.8 2010/08/31 05:10:01 alvherre Exp $ +# Alvaro Herrera , 2009-2012 # msgid "" msgstr "" -"Project-Id-Version: plperl (PostgreSQL 9.0)\n" +"Project-Id-Version: plperl (PostgreSQL 9.1)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-08-30 20:01+0000\n" -"PO-Revision-Date: 2010-08-31 01:09-0400\n" +"POT-Creation-Date: 2013-08-26 19:38+0000\n" +"PO-Revision-Date: 2012-02-21 22:53-0300\n" "Last-Translator: Álvaro Herrera \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" -#: plperl.c:257 +#: plperl.c:386 msgid "" "If true, trusted and untrusted Perl code will be compiled in strict mode." msgstr "" "Si es verdadero, se compilará código Perl confiable y no confiable en modo " "«strict»." -#: plperl.c:265 +#: plperl.c:400 msgid "" "Perl initialization code to execute when a Perl interpreter is initialized." msgstr "" "Código Perl de inicialización a ejecutar cuando un intérprete Perl es " "inicializado." -#: plperl.c:282 +#: plperl.c:422 msgid "Perl initialization code to execute once when plperl is first used." msgstr "" "Código Perl de inicialización a ejecutar cuando plperl se usa por primera " "vez." -#: plperl.c:290 +#: plperl.c:430 msgid "Perl initialization code to execute once when plperlu is first used." msgstr "" "Código Perl de inicialización a ejecutar cuando plperlu se usa por primera " "vez." -#: plperl.c:455 plperl.c:608 plperl.c:613 plperl.c:711 plperl.c:724 -#: plperl.c:766 plperl.c:781 plperl.c:1318 plperl.c:1426 plperl.c:1482 +#: plperl.c:647 plperl.c:821 plperl.c:826 plperl.c:930 plperl.c:941 +#: plperl.c:982 plperl.c:1003 plperl.c:1992 plperl.c:2087 plperl.c:2149 #, c-format msgid "%s" msgstr "%s" -#: plperl.c:456 +#: plperl.c:648 msgid "while executing PostgreSQL::InServer::SPI::bootstrap" msgstr "mientras se ejecutaba PostgreSQL::InServer::SPI::bootstrap" -#: plperl.c:609 +#: plperl.c:822 msgid "while parsing Perl initialization" msgstr "mientras se interpretaba la inicialización de Perl" -#: plperl.c:614 +#: plperl.c:827 msgid "while running Perl initialization" msgstr "mientras se ejecutaba la inicialización de Perl" -#: plperl.c:712 +#: plperl.c:931 msgid "while executing PLC_TRUSTED" msgstr "mientras se ejecutaba PLC_TRUSTED" -#: plperl.c:725 +#: plperl.c:942 msgid "while executing utf8fix" msgstr "mientras se ejecutaba utf8fix" -#: plperl.c:767 +#: plperl.c:983 msgid "while executing plperl.on_plperl_init" msgstr "mientras se ejecutaba plperl.on_plperl_init" -#: plperl.c:782 +#: plperl.c:1004 msgid "while executing plperl.on_plperlu_init" msgstr "mientras se ejecutaba plperl.on_plperlu_init" -#: plperl.c:824 plperl.c:1021 +#: plperl.c:1048 plperl.c:1648 #, c-format msgid "Perl hash contains nonexistent column \"%s\"" msgstr "el hash de Perl contiene el columna inexistente «%s»" -#: plperl.c:997 +#: plperl.c:1133 +#, c-format +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgstr "" +"el número de dimensiones del array (%d) excede el máximo permitido (%d)" + +#: plperl.c:1145 plperl.c:1162 +msgid "" +"multidimensional arrays must have array expressions with matching dimensions" +msgstr "" +"los arrays multidimensionales deben tener expresiones de arrays con " +"dimensiones coincidentes" + +#: plperl.c:1199 +#, c-format +msgid "cannot convert Perl array to non-array type %s" +msgstr "no se puede convertir un array de Perl al tipo no-array %s" + +#: plperl.c:1295 +#, c-format +msgid "cannot convert Perl hash to non-composite type %s" +msgstr "no se puede convertir un hash de Perl al tipo no compuesto %s" + +#: plperl.c:1306 +msgid "" +"function returning record called in context that cannot accept type record" +msgstr "" +"se llamó una función que retorna un registro en un contexto que no puede " +"aceptarlo" + +#: plperl.c:1321 +msgid "PL/Perl function must return reference to hash or array" +msgstr "una función Perl debe retornar una referencia a un hash o array" + +#: plperl.c:1625 msgid "$_TD->{new} does not exist" msgstr "$_TD->{new} no existe" -#: plperl.c:1001 +#: plperl.c:1629 msgid "$_TD->{new} is not a hash reference" msgstr "$_TD->{new} no es una referencia a un hash" -#: plperl.c:1235 plperl.c:1924 +#: plperl.c:1869 plperl.c:2568 #, c-format msgid "PL/Perl functions cannot return type %s" msgstr "las funciones en PL/Perl no pueden retornar el tipo %s" -#: plperl.c:1247 plperl.c:1970 +#: plperl.c:1882 plperl.c:2613 #, c-format msgid "PL/Perl functions cannot accept type %s" msgstr "funciones de PL/Perl no pueden aceptar el tipo %s" -#: plperl.c:1322 +#: plperl.c:1996 #, c-format msgid "didn't get a CODE reference from compiling function \"%s\"" -msgstr "" -"no se obtuvo una referencia CODE en la compilación de la función «%s»" +msgstr "no se obtuvo una referencia CODE en la compilación de la función «%s»" -#: plperl.c:1534 +#: plperl.c:2194 msgid "set-valued function called in context that cannot accept a set" msgstr "" "se llamó a una función que retorna un conjunto en un contexto que no puede " "aceptarlo" -#: plperl.c:1577 +#: plperl.c:2238 msgid "" "set-returning PL/Perl function must return reference to array or use " "return_next" @@ -123,43 +155,30 @@ msgstr "" "una función PL/Perl que retorna un conjunto debe retornar una referencia a " "un array o usar return_next" -#: plperl.c:1610 -msgid "composite-returning PL/Perl function must return reference to hash" -msgstr "" -"una función Perl que retorna un tipo compuesto debe retornar una referencia " -"a un hash" - -#: plperl.c:1619 -msgid "" -"function returning record called in context that cannot accept type record" -msgstr "" -"se llamó una función que retorna un registro en un contexto que no puede " -"aceptarlo" - -#: plperl.c:1739 +#: plperl.c:2352 msgid "ignoring modified row in DELETE trigger" msgstr "ignorando la tupla modificada en el disparador DELETE" -#: plperl.c:1747 +#: plperl.c:2360 msgid "" "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\"" msgstr "" "el resultado de la función disparadora en PL/Perl debe ser undef, «SKIP» o " "«MODIFY»" -#: plperl.c:1859 +#: plperl.c:2498 plperl.c:2508 msgid "out of memory" msgstr "memoria agotada" -#: plperl.c:1915 +#: plperl.c:2560 msgid "trigger functions can only be called as triggers" msgstr "las funciones disparadoras sólo pueden ser llamadas como disparadores" -#: plperl.c:2228 +#: plperl.c:2933 msgid "cannot use return_next in a non-SETOF function" msgstr "no se puede utilizar return_next en una función sin SETOF" -#: plperl.c:2234 +#: plperl.c:2989 msgid "" "SETOF-composite-returning PL/Perl function must call return_next with " "reference to hash" @@ -167,16 +186,16 @@ msgstr "" "una función Perl que retorna SETOF de un tipo compuesto debe invocar " "return_next con una referencia a un hash" -#: plperl.c:3028 +#: plperl.c:3731 #, c-format msgid "PL/Perl function \"%s\"" msgstr "función PL/Perl «%s»" -#: plperl.c:3040 +#: plperl.c:3743 #, c-format msgid "compilation of PL/Perl function \"%s\"" msgstr "compilación de la función PL/Perl «%s»" -#: plperl.c:3049 +#: plperl.c:3752 msgid "PL/Perl anonymous code block" msgstr "bloque de código anónimo de PL/Perl" diff --git a/src/pl/plperl/po/fr.po b/src/pl/plperl/po/fr.po index 7e869894ed..a6e2b19f08 100644 --- a/src/pl/plperl/po/fr.po +++ b/src/pl/plperl/po/fr.po @@ -1,8 +1,6 @@ # translation of plperl.po to fr_fr # french message translation file for plperl # -# $PostgreSQL$ -# # Use these quotes: � %s � # Guillaume Lelarge , 2009. # @@ -10,181 +8,209 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 8.4\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-06-29 21:15+0000\n" -"PO-Revision-Date: 2010-06-29 23:30+0100\n" +"POT-Creation-Date: 2012-02-20 06:39+0000\n" +"PO-Revision-Date: 2012-02-20 22:34+0100\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: French \n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" -#: plperl.c:255 +#: plperl.c:364 msgid "If true, trusted and untrusted Perl code will be compiled in strict mode." msgstr "" "Si true, le code Perl de confiance et sans confiance sera compil� en mode\n" "strict." -#: plperl.c:263 +#: plperl.c:378 msgid "Perl initialization code to execute when a Perl interpreter is initialized." msgstr "" "Code d'initialisation Perl � ex�cuter lorsque un interpr�teur Perl est\n" "initialis�." -#: plperl.c:280 +#: plperl.c:400 msgid "Perl initialization code to execute once when plperl is first used." msgstr "" "Code d'initialisation Perl � ex�cuter lorsque plperl est utilis� pour la\n" "premi�re fois" -#: plperl.c:288 +#: plperl.c:408 msgid "Perl initialization code to execute once when plperlu is first used." msgstr "" "Code d'initialisation Perl � ex�cuter lorsque plperlu est utilis� pour la\n" "premi�re fois" -#: plperl.c:453 -#: plperl.c:605 -#: plperl.c:610 -#: plperl.c:708 -#: plperl.c:721 -#: plperl.c:763 -#: plperl.c:778 -#: plperl.c:1315 -#: plperl.c:1423 -#: plperl.c:1479 +#: plperl.c:625 +#: plperl.c:787 +#: plperl.c:792 +#: plperl.c:896 +#: plperl.c:907 +#: plperl.c:948 +#: plperl.c:969 +#: plperl.c:1942 +#: plperl.c:2037 +#: plperl.c:2099 #, c-format msgid "%s" msgstr "%s" -#: plperl.c:454 +#: plperl.c:626 msgid "while executing PostgreSQL::InServer::SPI::bootstrap" msgstr "lors de l'ex�cution de PostgreSQL::InServer::SPI::bootstrap" -#: plperl.c:606 +#: plperl.c:788 msgid "while parsing Perl initialization" msgstr "lors de l'analyse de l'initialisation de perl" -#: plperl.c:611 +#: plperl.c:793 msgid "while running Perl initialization" msgstr "lors de l'ex�cution de l'initialisation de perl" -#: plperl.c:709 +#: plperl.c:897 msgid "while executing PLC_TRUSTED" msgstr "lors de l'ex�cution de PLC_TRUSTED" -#: plperl.c:722 +#: plperl.c:908 msgid "while executing utf8fix" msgstr "lors de l'ex�cution de utf8fix" -#: plperl.c:764 +#: plperl.c:949 msgid "while executing plperl.on_plperl_init" msgstr "lors de l'ex�cution de plperl.on_plperl_init" -#: plperl.c:779 +#: plperl.c:970 msgid "while executing plperl.on_plperlu_init" msgstr "lors de l'ex�cution de plperl.on_plperlu_init" -#: plperl.c:821 -#: plperl.c:1018 +#: plperl.c:1014 +#: plperl.c:1614 #, c-format msgid "Perl hash contains nonexistent column \"%s\"" msgstr "Le hachage Perl contient la colonne � %s � inexistante" -#: plperl.c:994 +#: plperl.c:1099 +#, c-format +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgstr "le nombre de dimensions du tableau (%d) d�passe la maximum autoris� (%d)" + +#: plperl.c:1111 +#: plperl.c:1128 +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" + +#: plperl.c:1165 +#, c-format +msgid "cannot convert Perl array to non-array type %s" +msgstr "ne peut pas convertir le tableau Perl en un type %s qui n'est pas un tableau" + +#: plperl.c:1261 +#, c-format +msgid "cannot convert Perl hash to non-composite type %s" +msgstr "ne peut pas convertir le hachage Perl en un type %s non composite" + +#: plperl.c:1272 +msgid "function returning record called in context that cannot accept type record" +msgstr "" +"fonction renvoyant le type record appel�e dans un contexte qui ne peut pas\n" +"accepter le type record" + +#: plperl.c:1287 +msgid "PL/Perl function must return reference to hash or array" +msgstr "la fonction PL/perl doit renvoyer la r�f�rence � un hachage ou � un tableau" + +#: plperl.c:1591 msgid "$_TD->{new} does not exist" msgstr "$_TD->{new} n'existe pas" -#: plperl.c:998 +#: plperl.c:1595 msgid "$_TD->{new} is not a hash reference" msgstr "$_TD->{new} n'est pas une r�f�rence de hachage" -#: plperl.c:1232 -#: plperl.c:1921 +#: plperl.c:1819 +#: plperl.c:2517 #, c-format msgid "PL/Perl functions cannot return type %s" msgstr "Les fonctions PL/perl ne peuvent pas renvoyer le type %s" -#: plperl.c:1244 -#: plperl.c:1967 +#: plperl.c:1832 +#: plperl.c:2564 #, c-format msgid "PL/Perl functions cannot accept type %s" msgstr "Les fonctions PL/perl ne peuvent pas accepter le type %s" -#: plperl.c:1319 +#: plperl.c:1946 #, c-format msgid "didn't get a CODE reference from compiling function \"%s\"" msgstr "n'a pas obtenu une r�f�rence CODE lors de la compilation de la fonction � %s �" -#: plperl.c:1531 +#: plperl.c:2150 msgid "set-valued function called in context that cannot accept a set" msgstr "" "fonction renvoyant un ensemble appel�e dans un contexte qui ne peut pas\n" "accepter un ensemble" -#: plperl.c:1574 +#: plperl.c:2194 msgid "set-returning PL/Perl function must return reference to array or use return_next" msgstr "" "la fonction PL/perl renvoyant des ensembles doit renvoyer la r�f�rence �\n" "un tableau ou utiliser return_next" -#: plperl.c:1607 -msgid "composite-returning PL/Perl function must return reference to hash" -msgstr "" -"la fonction PL/perl renvoyant des valeurs composites doit renvoyer la\n" -"r�f�rence � un hachage" - -#: plperl.c:1616 -msgid "function returning record called in context that cannot accept type record" -msgstr "" -"fonction renvoyant le type record appel�e dans un contexte qui ne peut pas\n" -"accepter le type record" - -#: plperl.c:1736 +#: plperl.c:2314 msgid "ignoring modified row in DELETE trigger" msgstr "ignore la ligne modifi�e dans le trigger DELETE" -#: plperl.c:1744 +#: plperl.c:2322 msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\"" msgstr "" "le r�sultat de la fonction trigger PL/perl doit �tre undef, � SKIP � ou\n" "� MODIFY �" -#: plperl.c:1856 +#: plperl.c:2448 +#: plperl.c:2454 msgid "out of memory" msgstr "m�moire �puis�e" -#: plperl.c:1912 +#: plperl.c:2508 msgid "trigger functions can only be called as triggers" msgstr "les fonctions trigger peuvent seulement �tre appel�es par des triggers" -#: plperl.c:2225 +#: plperl.c:2884 msgid "cannot use return_next in a non-SETOF function" msgstr "ne peut pas utiliser return_next dans une fonction non SETOF" -#: plperl.c:2231 +#: plperl.c:2940 msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash" msgstr "" "une fonction PL/perl renvoyant des lignes composites doit appeler\n" "return_next avec la r�f�rence � un hachage" -#: plperl.c:3025 +#: plperl.c:3655 #, c-format msgid "PL/Perl function \"%s\"" msgstr "fonction PL/Perl � %s �" -#: plperl.c:3037 +#: plperl.c:3667 #, c-format msgid "compilation of PL/Perl function \"%s\"" msgstr "compilation de la fonction PL/Perl � %s �" -#: plperl.c:3046 +#: plperl.c:3676 msgid "PL/Perl anonymous code block" msgstr "bloc de code PL/Perl anonyme" +#~ msgid "composite-returning PL/Perl function must return reference to hash" +#~ msgstr "" +#~ "la fonction PL/perl renvoyant des valeurs composites doit renvoyer la\n" +#~ "r�f�rence � un hachage" + #~ msgid "while executing PLC_SAFE_OK" #~ msgstr "lors de l'ex�cution de PLC_SAFE_OK" + #~ msgid "creation of Perl function \"%s\" failed: %s" #~ msgstr "�chec de la cr�ation de la fonction Perl � %s � : %s" + #~ msgid "error from Perl function \"%s\": %s" #~ msgstr "�chec dans la fonction Perl � %s � : %s" - diff --git a/src/pl/plperl/po/it.po b/src/pl/plperl/po/it.po index b84bf11ff8..44aebd0da0 100644 --- a/src/pl/plperl/po/it.po +++ b/src/pl/plperl/po/it.po @@ -7,107 +7,176 @@ # # Traduttori: # * Emanuele Zamprogno -# +# * Daniele Varrazzo +# # Revisori: # * Gabriele Bartolini # -# Copyright (c) 2009, Associazione Culturale ITPUG +# Copyright (c) 2010, Associazione Culturale ITPUG # Distributed under the same license of the PostgreSQL project # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" +"Project-Id-Version: plperl (PostgreSQL) 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2009-07-11 05:48+0000\n" -"PO-Revision-Date: 2009-07-18 03:10:24+0200\n" -"Last-Translator: Gabriele Bartolini \n" +"POT-Creation-Date: 2013-01-29 13:51+0000\n" +"PO-Revision-Date: 2012-12-03 17:46+0100\n" +"Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" +"Language: it\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: Italian\n" -"X-Poedit-Country: ITALY\n" "X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Poedit 1.5.4\n" -#: plperl.c:202 +#: plperl.c:385 msgid "If true, trusted and untrusted Perl code will be compiled in strict mode." -msgstr "Se vero, il codice Perl affidabile e non affidabile sarà compilato in modalità strict" +msgstr "Se vero, il codice Perl affidabile e non affidabile sarà compilato in modalità strict." + +#: plperl.c:399 +msgid "Perl initialization code to execute when a Perl interpreter is initialized." +msgstr "codice Perl di inizializzazione da eseguire quando l'interprete Perl è inizializzato." + +#: plperl.c:421 +msgid "Perl initialization code to execute once when plperl is first used." +msgstr "codice Perl di inizializzazione da eseguire una sola volta quando plperl è usato per la prima volta." -#: plperl.c:624 -#: plperl.c:817 +#: plperl.c:429 +msgid "Perl initialization code to execute once when plperlu is first used." +msgstr "codice Perl di inizializzazione da eseguire una sola volta quando plperlu è usato per la prima volta." + +#: plperl.c:646 plperl.c:820 plperl.c:825 plperl.c:929 plperl.c:940 +#: plperl.c:981 plperl.c:1002 plperl.c:1991 plperl.c:2086 plperl.c:2148 +#, c-format +msgid "%s" +msgstr "%s" + +#: plperl.c:647 +msgid "while executing PostgreSQL::InServer::SPI::bootstrap" +msgstr "nell'esecuzione di PostgreSQL::InServer::SPI::bootstrap" + +#: plperl.c:821 +msgid "while parsing Perl initialization" +msgstr "durante il parsing dell'inizializzazione Perl" + +#: plperl.c:826 +msgid "while running Perl initialization" +msgstr "durante l'esecuzione dell'inizializzazione Perl" + +#: plperl.c:930 +msgid "while executing PLC_TRUSTED" +msgstr "nell'esecuzione di PLC_TRUSTED" + +#: plperl.c:941 +msgid "while executing utf8fix" +msgstr "durante l'esecuzione di utf8fix" + +#: plperl.c:982 +msgid "while executing plperl.on_plperl_init" +msgstr "nell'esecuzione di plperl.on_plperl_init" + +#: plperl.c:1003 +msgid "while executing plperl.on_plperlu_init" +msgstr "nell'esecuzione di plperl.on_plperlu_init" + +#: plperl.c:1047 plperl.c:1647 #, c-format msgid "Perl hash contains nonexistent column \"%s\"" msgstr "La struttura hash in Perl contiene la colonna inesistente \"%s\"" -#: plperl.c:793 +#: plperl.c:1132 +#, 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)" + +#: plperl.c:1144 plperl.c:1161 +msgid "multidimensional arrays must have array expressions with matching dimensions" +msgstr "gli array multidimensionali devono avere espressioni array di dimensioni corrispondenti" + +#: plperl.c:1198 +#, c-format +msgid "cannot convert Perl array to non-array type %s" +msgstr "non è possibile convertire un array Perl nel tipo non-array %s" + +#: plperl.c:1294 +#, c-format +msgid "cannot convert Perl hash to non-composite type %s" +msgstr "non è possibile convertire un hash Perl nel tipo non composito %s" + +#: plperl.c:1305 +msgid "function returning record called in context that cannot accept type record" +msgstr "la funzione che restituisce un record è chiamata in un contesto che non può accettare il tipo record" + +#: plperl.c:1320 +msgid "PL/Perl function must return reference to hash or array" +msgstr "la funzione PL/Perl deve restituire un riferimento a hash o array" + +#: plperl.c:1624 msgid "$_TD->{new} does not exist" msgstr "$_TD->{new} non esiste" -#: plperl.c:797 +#: plperl.c:1628 msgid "$_TD->{new} is not a hash reference" msgstr "$_TD->{new} non è un riferimento ad un hash" -#: plperl.c:934 -#: plperl.c:1633 +#: plperl.c:1868 plperl.c:2567 #, c-format msgid "PL/Perl functions cannot return type %s" -msgstr "la funzione PL/Perl non può ritornare il tipo %s" +msgstr "la funzione PL/Perl non può restituire il tipo %s" -#: plperl.c:946 -#: plperl.c:1680 +#: plperl.c:1881 plperl.c:2612 #, c-format msgid "PL/Perl functions cannot accept type %s" msgstr "la funzione PL/Perl non può accettare il tipo %s" -#: plperl.c:1022 -#, c-format -msgid "creation of Perl function \"%s\" failed: %s" -msgstr "creazione della funzione Perl \"%s\" fallita: %s" - -#: plperl.c:1152 -#: plperl.c:1210 +#: plperl.c:1995 #, c-format -msgid "error from Perl function \"%s\": %s" -msgstr "errore dalla funzione Perl \"%s\": %s" +msgid "didn't get a CODE reference from compiling function \"%s\"" +msgstr "non ho ricevuto un riferimento CODE dal compilare la funzione \"%s\"" -#: plperl.c:1258 +#: plperl.c:2193 msgid "set-valued function called in context that cannot accept a set" -msgstr "la funzione set-valued è stata chiamata all'interno di un contesto che non può accettare un set" +msgstr "la funzione che restituisce insiemi è chiamata in un contesto che non può accettare un insieme" -#: plperl.c:1301 +#: plperl.c:2237 msgid "set-returning PL/Perl function must return reference to array or use return_next" -msgstr "la funzione PL/Perl di tipo \"set-returning\" deve ritornare un riferimento ad un array o usare return_next" +msgstr "la funzione PL/Perl che restituisce un insieme deve restituire un riferimento ad un array o usare return_next" -#: plperl.c:1334 -msgid "composite-returning PL/Perl function must return reference to hash" -msgstr "la funzione PL/Perl \"composite-returning\" deve ritornare un riferimento all'hash" - -#: plperl.c:1343 -msgid "function returning record called in context that cannot accept type record" -msgstr "la funzione che restituisce un record è chiamata all'interno di un contesto che non può accettare il tipo record" - -#: plperl.c:1459 +#: plperl.c:2351 msgid "ignoring modified row in DELETE trigger" -msgstr "ignorata la riga modificata all'interno del trigger DELETE" +msgstr "modifiche alla riga ignorate nel trigger DELETE" -#: plperl.c:1467 +#: plperl.c:2359 msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\"" msgstr "il risultato della funzione trigger PL/Perl deve essere undef, \"SKIP\" oppure \"MODIFY\"" -# in teoria non servirebbe tradurre -#: plperl.c:1567 +#: plperl.c:2497 plperl.c:2507 msgid "out of memory" msgstr "memoria esaurita" -#: plperl.c:1624 +#: plperl.c:2559 msgid "trigger functions can only be called as triggers" -msgstr "le funzioni trigger possono solo essere chiamate come trigger" +msgstr "le funzioni trigger possono essere chiamate esclusivamente da trigger" -#: plperl.c:1917 +#: plperl.c:2932 msgid "cannot use return_next in a non-SETOF function" msgstr "non si può usare return_next in una funzione non-SETOF" -#: plperl.c:1923 +#: plperl.c:2988 msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash" -msgstr "la funzione PL/Perl SETOF-composite-returning deve chiamare return_next con riferimento all'hash" +msgstr "una funzione PL/Perl che restituisce SETOF di un tipo composito deve chiamare return_next con riferimento ad un hash" + +#: plperl.c:3703 +#, c-format +msgid "PL/Perl function \"%s\"" +msgstr "funzione PL/Perl \"%s\"" + +#: plperl.c:3715 +#, c-format +msgid "compilation of PL/Perl function \"%s\"" +msgstr "compilazione della funzione Perl \"%s\"" +#: plperl.c:3724 +msgid "PL/Perl anonymous code block" +msgstr "blocco di codice anonimo PL/Perl" diff --git a/src/pl/plperl/po/ja.po b/src/pl/plperl/po/ja.po index d68ec88341..55c6188bc7 100644 --- a/src/pl/plperl/po/ja.po +++ b/src/pl/plperl/po/ja.po @@ -5,103 +5,118 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0 beta 3\n" +"Project-Id-Version: PostgreSQL 9.1 beta 2\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-07-17 18:33+0900\n" -"PO-Revision-Date: 2010-07-17 18:33+0900\n" -"Last-Translator: HOTTA Michihide \n" +"POT-Creation-Date: 2011-06-15 17:12+0900\n" +"PO-Revision-Date: 2011-06-15 21:48+0900\n" +"Last-Translator: Honda Shigehiro\n" "Language-Team: jpug-doc \n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: plperl.c:257 +#: plperl.c:361 msgid "" "If true, trusted and untrusted Perl code will be compiled in strict mode." msgstr "" "真ならば信頼し、信頼されないPerlのコードはstrictモードでコンパイルされます。" -#: plperl.c:265 +#: plperl.c:375 msgid "" "Perl initialization code to execute when a Perl interpreter is initialized." msgstr "Perl のインタプリタが初期化される際に実行されるべき Perl 初期化コード" -#: plperl.c:282 +#: plperl.c:397 msgid "Perl initialization code to execute once when plperl is first used." msgstr "plperl が最初に使用される際に一度実行されるべき Perl 初期化コード" -#: plperl.c:290 +#: plperl.c:405 msgid "Perl initialization code to execute once when plperlu is first used." msgstr "plperlu が最初に使用される際に一度実行されるべき Perl 初期化コード" -#: plperl.c:455 plperl.c:608 plperl.c:613 plperl.c:711 plperl.c:724 -#: plperl.c:766 plperl.c:781 plperl.c:1318 plperl.c:1426 plperl.c:1482 +#: plperl.c:622 plperl.c:784 plperl.c:789 plperl.c:893 plperl.c:904 +#: plperl.c:945 plperl.c:966 plperl.c:1863 plperl.c:1958 plperl.c:2020 #, c-format msgid "%s" msgstr "%s" -#: plperl.c:456 +#: plperl.c:623 msgid "while executing PostgreSQL::InServer::SPI::bootstrap" msgstr "PostgreSQL::InServer::SPI::bootstrap の実行中に" -#: plperl.c:609 +#: plperl.c:785 msgid "while parsing Perl initialization" msgstr "Perl 初期化処理のパース中に" -#: plperl.c:614 +#: plperl.c:790 msgid "while running Perl initialization" msgstr "Perl 初期化処理の実行中に" -#: plperl.c:712 +#: plperl.c:894 msgid "while executing PLC_TRUSTED" msgstr "PLC_TRUSTED の実行中に" -#: plperl.c:725 +#: plperl.c:905 msgid "while executing utf8fix" msgstr "utf8fix の実行中に" -#: plperl.c:767 +#: plperl.c:946 msgid "while executing plperl.on_plperl_init" msgstr "plperl.on_plperl_init の実行中に" -#: plperl.c:782 +#: plperl.c:967 msgid "while executing plperl.on_plperlu_init" msgstr "plperl.on_plperlu_init の実行中に" -#: plperl.c:824 plperl.c:1021 +#: plperl.c:1013 plperl.c:1536 #, c-format msgid "Perl hash contains nonexistent column \"%s\"" msgstr "Perlハッシュに存在しない列\"%s\"が含まれます" -#: plperl.c:997 +#: plperl.c:1095 +#, c-format +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgstr "配列の次数(%d)が上限(%d)を超えています" + +#: plperl.c:1109 +msgid "" +"multidimensional arrays must have array expressions with matching dimensions" +msgstr "多次元配列は次数に合った配列式を持たなければなりません" + +#: plperl.c:1214 +msgid "PL/Perl function must return reference to hash or array" +msgstr "PL/Perl関数はハッシュまたは配列への参照を返す必要があります" + +#: plperl.c:1513 msgid "$_TD->{new} does not exist" msgstr "$_TD->{new}は存在しません" -#: plperl.c:1001 +#: plperl.c:1517 msgid "$_TD->{new} is not a hash reference" msgstr "$_TD->{new}はハッシュへの参照ではありません" -#: plperl.c:1235 plperl.c:1924 +#: plperl.c:1740 plperl.c:2471 #, c-format msgid "PL/Perl functions cannot return type %s" msgstr "PL/Perl関数は%s型を返すことができません" -#: plperl.c:1247 plperl.c:1970 +#: plperl.c:1753 plperl.c:2518 #, c-format msgid "PL/Perl functions cannot accept type %s" msgstr "PL/Perl関数は%s型を受け付けられません" -#: plperl.c:1322 +#: plperl.c:1867 #, c-format msgid "didn't get a CODE reference from compiling function \"%s\"" msgstr "関数 \"%s\" のコンパイルからはコード参照を取得しませんでした" -#: plperl.c:1534 +#: plperl.c:2072 msgid "set-valued function called in context that cannot accept a set" msgstr "このコンテキストで集合値の関数は集合を受け付けられません" -#: plperl.c:1577 +#: plperl.c:2116 msgid "" "set-returning PL/Perl function must return reference to array or use " "return_next" @@ -109,39 +124,39 @@ msgstr "" "集合を返すPL/Perl関数は配列への参照を返す、または、return_nextを使用する必要" "があります" -#: plperl.c:1610 +#: plperl.c:2145 msgid "composite-returning PL/Perl function must return reference to hash" msgstr "複合型を返すPL/Perl関数はハッシュへの参照を返す必要があります" -#: plperl.c:1619 +#: plperl.c:2154 msgid "" "function returning record called in context that cannot accept type record" msgstr "" "レコード型を受け付けられないコンテキストでレコードを返す関数が呼び出されまし" "た" -#: plperl.c:1739 +#: plperl.c:2268 msgid "ignoring modified row in DELETE trigger" msgstr "DELETEトリガにて変更された行を無視します" -#: plperl.c:1747 +#: plperl.c:2276 msgid "" "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\"" msgstr "PL/Perlトリガ関数の結果は\"SKIP\"または\"MODIFY\"でなければなりません" -#: plperl.c:1859 +#: plperl.c:2402 plperl.c:2408 msgid "out of memory" msgstr "メモリ不足です" -#: plperl.c:1915 +#: plperl.c:2462 msgid "trigger functions can only be called as triggers" msgstr "トリガー関数はトリガーとしてのみコールできます" -#: plperl.c:2228 +#: plperl.c:2838 msgid "cannot use return_next in a non-SETOF function" msgstr "SETOF関数以外ではreturn_nextを使用することはできません" -#: plperl.c:2234 +#: plperl.c:2844 msgid "" "SETOF-composite-returning PL/Perl function must call return_next with " "reference to hash" @@ -149,16 +164,16 @@ msgstr "" "複合型のSETOFを返すPL/Perl関数はハッシュへの参照を持つreturn_nextを呼び出さな" "ければなりません" -#: plperl.c:3028 +#: plperl.c:3610 #, c-format msgid "PL/Perl function \"%s\"" msgstr "PL/Perl 関数 \"%s\"" -#: plperl.c:3040 +#: plperl.c:3622 #, c-format msgid "compilation of PL/Perl function \"%s\"" msgstr "PL/Perl 関数 \"%s\" のコンパイル" -#: plperl.c:3049 +#: plperl.c:3631 msgid "PL/Perl anonymous code block" msgstr "PL/Perl の無名コードブロック" diff --git a/src/pl/plperl/po/pl.po b/src/pl/plperl/po/pl.po new file mode 100644 index 0000000000..59bcca5ca4 --- /dev/null +++ b/src/pl/plperl/po/pl.po @@ -0,0 +1,191 @@ +# Polish message translation file for plperl +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# +# Begina Felicysym , 2011. +msgid "" +msgstr "" +"Project-Id-Version: plperl (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-09-29 22:52+0000\n" +"PO-Revision-Date: 2011-09-30 09:49-0300\n" +"Last-Translator: Begina Felicysym \n" +"Language-Team: Polish TotroiseSvn translation team\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1-beta1\n" + +#: plperl.c:361 +msgid "" +"If true, trusted and untrusted Perl code will be compiled in strict mode." +msgstr "" +"Jeśli prawda, zaufanych i niezaufanych kod Perl zostanie skompilowany w " +"trybie ścisłym." + +#: plperl.c:375 +msgid "" +"Perl initialization code to execute when a Perl interpreter is initialized." +msgstr "Kod inicjujący Perl do wykonania gdy inicjowany jest interpreter Perl." + +#: plperl.c:397 +msgid "Perl initialization code to execute once when plperl is first used." +msgstr "" +"Kod inicjujący Perl do jednokrotnego wykonania gdy plperl jest użyty po raz " +"pierwszy." + +#: plperl.c:405 +msgid "Perl initialization code to execute once when plperlu is first used." +msgstr "" +"Kod inicjujący Perl do jednokrotnego wykonania gdy plperlu jest użyty po raz " +"pierwszy." + +#: plperl.c:622 plperl.c:784 plperl.c:789 plperl.c:893 plperl.c:904 +#: plperl.c:945 plperl.c:966 plperl.c:1867 plperl.c:1962 plperl.c:2024 +#, c-format +msgid "%s" +msgstr "%s" + +#: plperl.c:623 +msgid "while executing PostgreSQL::InServer::SPI::bootstrap" +msgstr "podczas wykonania PostgreSQL::InServer::SPI::bootstrap" + +#: plperl.c:785 +msgid "while parsing Perl initialization" +msgstr "podczas przetwarzania inicjacji Perl" + +#: plperl.c:790 +msgid "while running Perl initialization" +msgstr "podczas wykonywania inicjacji Perl" + +#: plperl.c:894 +msgid "while executing PLC_TRUSTED" +msgstr "podczas wykonywania PLC_TRUSTED" + +#: plperl.c:905 +msgid "while executing utf8fix" +msgstr "podczas wykonywania utf8fix" + +#: plperl.c:946 +msgid "while executing plperl.on_plperl_init" +msgstr "podczas wykonania plperl.on_plperl_init" + +#: plperl.c:967 +msgid "while executing plperl.on_plperlu_init" +msgstr "podczas wykonania plperl.on_plperlu_init" + +#: plperl.c:1013 plperl.c:1540 +#, c-format +msgid "Perl hash contains nonexistent column \"%s\"" +msgstr "hasz Perl zawiera nieistniejącą kolumnę \"%s\"" + +#: plperl.c:1096 +#, c-format +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgstr "liczba wymiarów tablicy (%d) przekracza maksimum (%d)" + +#: plperl.c:1110 +msgid "" +"multidimensional arrays must have array expressions with matching dimensions" +msgstr "" +"wielowymiarowe tablice muszą mieć wyrażenia tablicowe z pasującymi wymiarami" + +#: plperl.c:1218 +msgid "PL/Perl function must return reference to hash or array" +msgstr "funkcja PL/Perl musi zwracać referencję do hasza lub tablicy" + +#: plperl.c:1517 +msgid "$_TD->{new} does not exist" +msgstr "$_TD->{new} nie istnieje" + +#: plperl.c:1521 +msgid "$_TD->{new} is not a hash reference" +msgstr "$_TD->{new} nie jest referencją haszu" + +#: plperl.c:1744 plperl.c:2475 +#, c-format +msgid "PL/Perl functions cannot return type %s" +msgstr "funkcje PL/Perl nie mogą zwracać wartości typu %s" + +#: plperl.c:1757 plperl.c:2522 +#, c-format +msgid "PL/Perl functions cannot accept type %s" +msgstr "funkcje PL/Perl nie obsługują typu %s" + +#: plperl.c:1871 +#, c-format +msgid "didn't get a CODE reference from compiling function \"%s\"" +msgstr "nie udało się pobrać wskazania CODE z kompilowanej funkcji \"%s\"" + +#: plperl.c:2076 +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" + +#: plperl.c:2120 +msgid "" +"set-returning PL/Perl function must return reference to array or use " +"return_next" +msgstr "" +"funkcja PL/Perl zwracająca zbiór rekordów musi zwracać tablicę lub użyć " +"return_next" + +#: plperl.c:2149 +msgid "composite-returning PL/Perl function must return reference to hash" +msgstr "" +"funkcja PL/Perl zwracająca wartości złożone musi wywołać zwracać referencję " +"haszu" + +#: plperl.c:2158 +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" + +#: plperl.c:2272 +msgid "ignoring modified row in DELETE trigger" +msgstr "ignorowanie modyfikacji wiersza w wyzwalaczy DELETE" + +#: plperl.c:2280 +msgid "" +"result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\"" +msgstr "" +"funkcja wyzwalacza PL/Perl musi zwracać undef, \"SKIP\", lub \"MODIFY\"" + +#: plperl.c:2406 plperl.c:2412 +msgid "out of memory" +msgstr "brak pamięci" + +#: plperl.c:2466 +msgid "trigger functions can only be called as triggers" +msgstr "procedury wyzwalaczy mogą być wywoływane jedynie przez wyzwalacze" + +#: plperl.c:2842 +msgid "cannot use return_next in a non-SETOF function" +msgstr "nie można używać return_next w funkcji nie SETOF" + +#: plperl.c:2848 +msgid "" +"SETOF-composite-returning PL/Perl function must call return_next with " +"reference to hash" +msgstr "" +"funkcja PL/Perl zwracająca grupę wartości złożonych musi wywołać return_next " +"z referencją haszu" + +#: plperl.c:3614 +#, c-format +msgid "PL/Perl function \"%s\"" +msgstr "funkcja PL/Perl \"%s\"" + +#: plperl.c:3626 +#, c-format +msgid "compilation of PL/Perl function \"%s\"" +msgstr "kompilacja funkcji PL/Perl \"%s\"" + +#: plperl.c:3635 +msgid "PL/Perl anonymous code block" +msgstr "anonimowy blok kodu PL/Perl" diff --git a/src/pl/plperl/po/pt_BR.po b/src/pl/plperl/po/pt_BR.po index a3856a4b17..77441bd003 100644 --- a/src/pl/plperl/po/pt_BR.po +++ b/src/pl/plperl/po/pt_BR.po @@ -1,13 +1,13 @@ # Brazilian Portuguese message translation file for plperl # Copyright (C) 2009 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Euler Taveira de Oliveira , 2009-2010. +# Euler Taveira de Oliveira , 2009-2011. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-07-26 15:34-0300\n" +"POT-Creation-Date: 2011-11-30 16:16-0300\n" "PO-Revision-Date: 2009-05-10 01:12-0300\n" "Last-Translator: Euler Taveira de Oliveira \n" "Language-Team: Brazilian Portuguese \n" @@ -16,96 +16,134 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: plperl.c:257 +#: plperl.c:364 msgid "" "If true, trusted and untrusted Perl code will be compiled in strict mode." msgstr "" "Se verdadeiro, código Perl confiável e não-confiável será compilado em modo " "estrito." -#: plperl.c:265 +#: plperl.c:378 msgid "" "Perl initialization code to execute when a Perl interpreter is initialized." msgstr "" -"Código de inicialização Perl executado quando um interpretador Perl for inicializado." +"Código de inicialização Perl executado quando um interpretador Perl for " +"inicializado." -#: plperl.c:282 +#: plperl.c:400 msgid "Perl initialization code to execute once when plperl is first used." -msgstr "Código de inicialização Perl executado quando plperl for utilizado pela primeira vez." +msgstr "" +"Código de inicialização Perl executado quando plperl for utilizado pela " +"primeira vez." -#: plperl.c:290 +#: plperl.c:408 msgid "Perl initialization code to execute once when plperlu is first used." -msgstr "Código de inicialização Perl executado quando plperlu for utilizado pela primeira vez." +msgstr "" +"Código de inicialização Perl executado quando plperlu for utilizado pela " +"primeira vez." -#: plperl.c:455 plperl.c:608 plperl.c:613 plperl.c:711 plperl.c:724 -#: plperl.c:766 plperl.c:781 plperl.c:1318 plperl.c:1426 plperl.c:1482 +#: plperl.c:625 plperl.c:787 plperl.c:792 plperl.c:896 plperl.c:907 +#: plperl.c:948 plperl.c:969 plperl.c:1942 plperl.c:2037 plperl.c:2099 #, c-format msgid "%s" msgstr "%s" -#: plperl.c:456 +#: plperl.c:626 msgid "while executing PostgreSQL::InServer::SPI::bootstrap" msgstr "ao executar PostgreSQL::InServer::SPI::bootstrap" -#: plperl.c:609 +#: plperl.c:788 msgid "while parsing Perl initialization" msgstr "ao analisar código de inicialização Perl" -#: plperl.c:614 +#: plperl.c:793 msgid "while running Perl initialization" msgstr "ao executar código de inicialização Perl" -#: plperl.c:712 +#: plperl.c:897 msgid "while executing PLC_TRUSTED" msgstr "ao executar PLC_TRUSTED" -#: plperl.c:725 +#: plperl.c:908 msgid "while executing utf8fix" msgstr "ao executar utf8fix" -#: plperl.c:767 +#: plperl.c:949 msgid "while executing plperl.on_plperl_init" msgstr "ao executar plperl.on_plperl_init" -#: plperl.c:782 +#: plperl.c:970 msgid "while executing plperl.on_plperlu_init" msgstr "ao executar plperl.on_plperlu_init" -#: plperl.c:824 plperl.c:1021 +#: plperl.c:1014 plperl.c:1614 #, c-format msgid "Perl hash contains nonexistent column \"%s\"" msgstr "hash Perl contém coluna inexistente \"%s\"" -#: plperl.c:997 +#: plperl.c:1099 +#, 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)" + +#: plperl.c:1111 plperl.c:1128 +msgid "" +"multidimensional arrays must have array expressions with matching dimensions" +msgstr "" +"matrizes multidimensionais devem ter expressões de matriz com dimensões " +"correspondentes" + +#: plperl.c:1165 +#, c-format +msgid "cannot convert Perl array to non-array type %s" +msgstr "não pode converter array Perl para tipo que não é array %s" + +#: plperl.c:1261 +#, c-format +msgid "cannot convert Perl hash to non-composite type %s" +msgstr "não pode converter hash Perl para tipo não-composto %s" + +#: plperl.c:1272 +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" + +#: plperl.c:1287 +msgid "PL/Perl function must return reference to hash or array" +msgstr "função PL/Perl deve retornar referência a um hash ou uma matriz" + +#: plperl.c:1591 msgid "$_TD->{new} does not exist" msgstr "$_TD->{new} não existe" -#: plperl.c:1001 +#: plperl.c:1595 msgid "$_TD->{new} is not a hash reference" msgstr "$_TD->{new} não é uma referência hash" -#: plperl.c:1235 plperl.c:1924 +#: plperl.c:1819 plperl.c:2517 #, c-format msgid "PL/Perl functions cannot return type %s" msgstr "funções PL/Perl não podem retornar tipo %s" -#: plperl.c:1247 plperl.c:1970 +#: plperl.c:1832 plperl.c:2564 #, c-format msgid "PL/Perl functions cannot accept type %s" msgstr "funções PL/Perl não podem aceitar tipo %s" -#: plperl.c:1322 +#: plperl.c:1946 #, c-format msgid "didn't get a CODE reference from compiling function \"%s\"" msgstr "não obteve uma referência CODE da compilação da função \"%s\"" -#: plperl.c:1534 +#: plperl.c:2150 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" -#: plperl.c:1577 +#: plperl.c:2194 msgid "" "set-returning PL/Perl function must return reference to array or use " "return_next" @@ -113,40 +151,29 @@ msgstr "" "funçao PL/Perl que retorna conjunto deve retornar referência para matriz ou " "usar return_next" -#: plperl.c:1610 -msgid "composite-returning PL/Perl function must return reference to hash" -msgstr "função que retorna tipo composto deve retornar referência a um hash" - -#: plperl.c:1619 -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" - -#: plperl.c:1739 +#: plperl.c:2314 msgid "ignoring modified row in DELETE trigger" msgstr "ignorando registro modificado em gatilho DELETE" -#: plperl.c:1747 +#: plperl.c:2322 msgid "" "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\"" msgstr "" "resultado da função de gatilho PL/Perl deve ser undef, \"SKIP\" ou \"MODIFY\"" -#: plperl.c:1859 +#: plperl.c:2448 plperl.c:2454 msgid "out of memory" msgstr "sem memória" -#: plperl.c:1915 +#: plperl.c:2508 msgid "trigger functions can only be called as triggers" msgstr "funções de gatilho só podem ser chamadas como gatilhos" -#: plperl.c:2228 +#: plperl.c:2884 msgid "cannot use return_next in a non-SETOF function" msgstr "não pode utilizar return_next em uma função que não retorna conjunto" -#: plperl.c:2234 +#: plperl.c:2940 msgid "" "SETOF-composite-returning PL/Perl function must call return_next with " "reference to hash" @@ -154,16 +181,16 @@ msgstr "" "função PL/Perl que retorna um conjunto de tipo composto deve chamar " "return_next com referência a um hash" -#: plperl.c:3028 +#: plperl.c:3655 #, c-format msgid "PL/Perl function \"%s\"" msgstr "função PL/Perl \"%s\"" -#: plperl.c:3040 +#: plperl.c:3667 #, c-format msgid "compilation of PL/Perl function \"%s\"" msgstr "compilação da função PL/Perl \"%s\"" -#: plperl.c:3049 +#: plperl.c:3676 msgid "PL/Perl anonymous code block" msgstr "bloco de código PL/Perl anônimo" diff --git a/src/pl/plperl/po/ro.po b/src/pl/plperl/po/ro.po index 8442f9ba4d..d6cdabfbf3 100644 --- a/src/pl/plperl/po/ro.po +++ b/src/pl/plperl/po/ro.po @@ -5,158 +5,181 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-09-02 17:58+0000\n" -"PO-Revision-Date: 2010-09-04 21:32-0000\n" -"Last-Translator: Max \n" -"Language-Team: ROMANA \n" +"POT-Creation-Date: 2011-11-09 20:39+0000\n" +"PO-Revision-Date: 2011-11-22 11:32-0000\n" +"Last-Translator: Gheorge Rosca Codreanu \n" +"Language-Team: ROMANA \n" +"Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Romanian\n" "X-Poedit-Country: ROMANIA\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" -#: plperl.c:257 +#: plperl.c:364 msgid "If true, trusted and untrusted Perl code will be compiled in strict mode." msgstr "Dacă true, trusted și untrusted codul Perl se va compila în modul strict." -#: plperl.c:265 +#: plperl.c:378 msgid "Perl initialization code to execute when a Perl interpreter is initialized." msgstr "codul de inițializare Perl de executat odată când interpreterul Perl este inițializat." -#: plperl.c:282 +#: plperl.c:400 msgid "Perl initialization code to execute once when plperl is first used." msgstr "codul de inițializare Perl de executat odată când plperl este folosit pentru prima oară." -#: plperl.c:290 +#: plperl.c:408 msgid "Perl initialization code to execute once when plperlu is first used." msgstr "codul de inițializare Perl de executat odată când plperlu este folosit pentru prima oară." -#: plperl.c:455 -#: plperl.c:608 -#: plperl.c:613 -#: plperl.c:711 -#: plperl.c:724 -#: plperl.c:766 -#: plperl.c:781 -#: plperl.c:1318 -#: plperl.c:1426 -#: plperl.c:1482 +#: plperl.c:625 +#: plperl.c:787 +#: plperl.c:792 +#: plperl.c:896 +#: plperl.c:907 +#: plperl.c:948 +#: plperl.c:969 +#: plperl.c:1942 +#: plperl.c:2037 +#: plperl.c:2099 #, c-format msgid "%s" msgstr "%s" -#: plperl.c:456 +#: plperl.c:626 msgid "while executing PostgreSQL::InServer::SPI::bootstrap" msgstr "în timpul execuției PostgreSQL::InServer::SPI::bootstrap" -#: plperl.c:609 +#: plperl.c:788 msgid "while parsing Perl initialization" msgstr "în timpul parsing inițializării Perl" -#: plperl.c:614 +#: plperl.c:793 msgid "while running Perl initialization" msgstr "în timpul rulării intializării Perl" -#: plperl.c:712 +#: plperl.c:897 msgid "while executing PLC_TRUSTED" msgstr "în timpul execuției PLC_TRUSTED" -#: plperl.c:725 +#: plperl.c:908 msgid "while executing utf8fix" msgstr "în timpul execuției utf8fix" -#: plperl.c:767 +#: plperl.c:949 msgid "while executing plperl.on_plperl_init" msgstr "în timpul execuției plperl.on_plperl_init" -#: plperl.c:782 +#: plperl.c:970 msgid "while executing plperl.on_plperlu_init" msgstr "în timpul execuției plperl.on_plperlu_init" -#: plperl.c:824 -#: plperl.c:1021 +#: plperl.c:1014 +#: plperl.c:1614 #, c-format msgid "Perl hash contains nonexistent column \"%s\"" msgstr "Perl hash conține o coloană \"%s\" inexistentă" -#: plperl.c:997 +#: plperl.c:1099 +#, c-format +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgstr "numarul dimensiunilor array-ului (%d) depăşeşte maximul admis, %d" + +#: plperl.c:1111 +#: plperl.c:1128 +msgid "multidimensional arrays must have array expressions with matching dimensions" +msgstr "array-urile multidimensionale trebuie să aibă expresii de tip array cu dimensiuni corespunzătoare" + +#: plperl.c:1165 +#, c-format +msgid "cannot convert Perl array to non-array type %s" +msgstr "nu pot converti un array Perl în tipul de dată %s" + +#: plperl.c:1261 +#, c-format +msgid "cannot convert Perl hash to non-composite type %s" +msgstr "nu pot converti tipul de dată hash din Perl într-un tip de dată composit %s" + +#: plperl.c:1272 +msgid "function returning record called in context that cannot accept type record" +msgstr "apel de funcție care are rezultat de tip rând într-un context care nu acceptă tipul rând" + +#: plperl.c:1287 +msgid "PL/Perl function must return reference to hash or array" +msgstr "funcția PL/Perl trebuie să returneze o referință la hash sau array" + +#: plperl.c:1591 msgid "$_TD->{new} does not exist" msgstr "$_TD->{new} nu există" -#: plperl.c:1001 +#: plperl.c:1595 msgid "$_TD->{new} is not a hash reference" msgstr "$_TD->{new} nu e o referință de tip hash" -#: plperl.c:1235 -#: plperl.c:1924 +#: plperl.c:1819 +#: plperl.c:2517 #, c-format msgid "PL/Perl functions cannot return type %s" msgstr "funcțiile PL/Perl functions nu pot avea ca rezultat tipul %s" -#: plperl.c:1247 -#: plperl.c:1970 +#: plperl.c:1832 +#: plperl.c:2564 #, c-format msgid "PL/Perl functions cannot accept type %s" msgstr "funcțiile PL/Perl nu pot accepta tipul %s" -#: plperl.c:1322 +#: plperl.c:1946 #, c-format msgid "didn't get a CODE reference from compiling function \"%s\"" msgstr "compilarea funcției \"%s\" nu a rezultat o referință CODE" -#: plperl.c:1534 +#: plperl.c:2150 msgid "set-valued function called in context that cannot accept a set" msgstr "funcţie set-valoare apelată într-un context care nu acceptă set" -#: plperl.c:1577 +#: plperl.c:2194 msgid "set-returning PL/Perl function must return reference to array or use return_next" msgstr "funcția PL/Perl care are rezultat de tip set trebuie să intoarcă o referință la un array sau să folosească return_next" -#: plperl.c:1610 -msgid "composite-returning PL/Perl function must return reference to hash" -msgstr "funcția PL/Perl cu rezultat de tip composite trebuie să întoarcă o referință la hash" - -#: plperl.c:1619 -msgid "function returning record called in context that cannot accept type record" -msgstr "apel de funcție care are rezultat de tip rând într-un context care nu acceptă tipul rând" - -#: plperl.c:1739 +#: plperl.c:2314 msgid "ignoring modified row in DELETE trigger" msgstr "ignor rândul modificat in triggerul DELETE" -#: plperl.c:1747 +#: plperl.c:2322 msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\"" msgstr "rezultatul unei funcții trigger PL/Perl trebuie să fie de tip undef, \"SKIP\", or \"MODIFY\"" -#: plperl.c:1859 +#: plperl.c:2448 +#: plperl.c:2454 msgid "out of memory" msgstr "memorie insuficientă" -#: plperl.c:1915 +#: plperl.c:2508 msgid "trigger functions can only be called as triggers" msgstr "funcţiile trigger pot fi apelate doar ca triggere" -#: plperl.c:2228 +#: plperl.c:2884 msgid "cannot use return_next in a non-SETOF function" msgstr "nu puteți folosi return_next într-o funcție de tip non-SETOF" -#: plperl.c:2234 +#: plperl.c:2940 msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash" msgstr "funcția PL/Perl cu rezultat de tip SETOF-composite trebuie să apeleze return_next cu referință la hash" -#: plperl.c:3028 +#: plperl.c:3655 #, c-format msgid "PL/Perl function \"%s\"" msgstr "funcție PL/Perl \"%s\"" -#: plperl.c:3040 +#: plperl.c:3667 #, c-format msgid "compilation of PL/Perl function \"%s\"" msgstr "compilare a funcției PL/Perl \"%s\"" -#: plperl.c:3049 +#: plperl.c:3676 msgid "PL/Perl anonymous code block" msgstr "bloc de cod PL/Perl anonim" diff --git a/src/pl/plperl/po/ru.po b/src/pl/plperl/po/ru.po new file mode 100644 index 0000000000..f202a552a9 --- /dev/null +++ b/src/pl/plperl/po/ru.po @@ -0,0 +1,203 @@ +# Russian message translation file for plperl +# Copyright (C) 2012 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# Alexander Lakhin , 2012. +# +# ChangeLog: +# +# - April 2, 2012: Bug fixes. Alexander Lakhin . +# - February 18, 2012: Complete translation for 9.1. Alexander Lakhin . +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 9.1\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2012-07-10 22:21+0000\n" +"PO-Revision-Date: 2012-04-02 19:16+0400\n" +"Last-Translator: Alexander Lakhin \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Lokalize 1.4\n" + +#: plperl.c:364 +msgid "" +"If true, trusted and untrusted Perl code will be compiled in strict mode." +msgstr "" +"Если этот параметр равен true, доверенный и не доверенный код Perl будет " +"компилироваться в строгом режиме." + +#: plperl.c:378 +msgid "" +"Perl initialization code to execute when a Perl interpreter is initialized." +msgstr "" +"Код инициализации Perl, который выполняется при инициализации интерпретатора " +"Perl." + +#: plperl.c:400 +msgid "Perl initialization code to execute once when plperl is first used." +msgstr "" +"Код инициализации Perl, который выполняется один раз, при первом " +"использовании plperl." + +#: plperl.c:408 +msgid "Perl initialization code to execute once when plperlu is first used." +msgstr "" +"Код инициализации Perl, который выполняется один раз, при первом " +"использовании plperlu." + +#: plperl.c:625 plperl.c:787 plperl.c:792 plperl.c:896 plperl.c:907 +#: plperl.c:948 plperl.c:969 plperl.c:1942 plperl.c:2037 plperl.c:2099 +#, c-format +msgid "%s" +msgstr "%s" + +#: plperl.c:626 +msgid "while executing PostgreSQL::InServer::SPI::bootstrap" +msgstr "при выполнении PostgreSQL::InServer::SPI::bootstrap" + +#: plperl.c:788 +msgid "while parsing Perl initialization" +msgstr "при разборе параметров инициализации Perl" + +#: plperl.c:793 +msgid "while running Perl initialization" +msgstr "при выполнении инициализации Perl" + +#: plperl.c:897 +msgid "while executing PLC_TRUSTED" +msgstr "при выполнении PLC_TRUSTED" + +#: plperl.c:908 +msgid "while executing utf8fix" +msgstr "при выполнении utf8fix" + +#: plperl.c:949 +msgid "while executing plperl.on_plperl_init" +msgstr "при выполнении plperl.on_plperl_init" + +#: plperl.c:970 +msgid "while executing plperl.on_plperlu_init" +msgstr "при выполнении plperl.on_plperlu_init" + +#: plperl.c:1014 plperl.c:1614 +#, c-format +msgid "Perl hash contains nonexistent column \"%s\"" +msgstr "Perl-хэш содержит несуществующую колонку \"%s\"" + +#: plperl.c:1099 +#, c-format +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgstr "число размерностей массива (%d) превышает предел (%d)" + +#: plperl.c:1111 plperl.c:1128 +msgid "" +"multidimensional arrays must have array expressions with matching dimensions" +msgstr "" +"для многомерных массивов должны задаваться выражения с соответствующими " +"размерностями" + +#: plperl.c:1165 +#, c-format +msgid "cannot convert Perl array to non-array type %s" +msgstr "Perl-массив нельзя преобразовать в тип не массива %s" + +#: plperl.c:1261 +#, c-format +msgid "cannot convert Perl hash to non-composite type %s" +msgstr "Perl-хэш нельзя преобразовать в не составной тип %s" + +#: plperl.c:1272 +msgid "" +"function returning record called in context that cannot accept type record" +msgstr "" +"функция, возвращающая запись, вызвана в контексте, не допускающем этот тип" + +#: plperl.c:1287 +msgid "PL/Perl function must return reference to hash or array" +msgstr "функция PL/Perl должна возвращать ссылку на хэш или массив" + +#: plperl.c:1591 +msgid "$_TD->{new} does not exist" +msgstr "$_TD->{new} не существует" + +#: plperl.c:1595 +msgid "$_TD->{new} is not a hash reference" +msgstr "$_TD->{new} - не ссылка на хэш" + +#: plperl.c:1819 plperl.c:2517 +#, c-format +msgid "PL/Perl functions cannot return type %s" +msgstr "функции PL/Perl не могут возвращать тип %s" + +#: plperl.c:1832 plperl.c:2564 +#, c-format +msgid "PL/Perl functions cannot accept type %s" +msgstr "функции PL/Perl не могут принимать тип %s" + +#: plperl.c:1946 +#, c-format +msgid "didn't get a CODE reference from compiling function \"%s\"" +msgstr "не удалось получить ссылку на код после компиляции функции \"%s\"" + +#: plperl.c:2150 +msgid "set-valued function called in context that cannot accept a set" +msgstr "" +"функция, возвращающая множество, вызвана в контексте, где ему нет места" + +#: plperl.c:2194 +msgid "" +"set-returning PL/Perl function must return reference to array or use " +"return_next" +msgstr "" +"функция PL/Perl, возвращающая множество, должна возвращать ссылку на массив " +"или вызывать return_next" + +#: plperl.c:2314 +msgid "ignoring modified row in DELETE trigger" +msgstr "в триггере DELETE изменённая строка игнорируется" + +#: plperl.c:2322 +msgid "" +"result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\"" +msgstr "" +"результатом триггерной функции PL/Perl должен быть undef, \"SKIP\" или " +"\"MODIFY\"" + +#: plperl.c:2448 plperl.c:2454 +msgid "out of memory" +msgstr "нехватка памяти" + +#: plperl.c:2508 +msgid "trigger functions can only be called as triggers" +msgstr "триггерные функции могут вызываться только в триггерах" + +#: plperl.c:2884 +msgid "cannot use return_next in a non-SETOF function" +msgstr "" +"return_next можно использовать только в функциях, возвращающих множества" + +#: plperl.c:2940 +msgid "" +"SETOF-composite-returning PL/Perl function must call return_next with " +"reference to hash" +msgstr "" +"функция PL/Perl, возвращающая составное множество, должна вызывать " +"return_next со ссылкой на хэш" + +#: plperl.c:3655 +#, c-format +msgid "PL/Perl function \"%s\"" +msgstr "функция PL/Perl \"%s\"" + +#: plperl.c:3667 +#, c-format +msgid "compilation of PL/Perl function \"%s\"" +msgstr "компиляция функции PL/Perl \"%s\"" + +#: plperl.c:3676 +msgid "PL/Perl anonymous code block" +msgstr "анонимный блок кода PL/Perl" diff --git a/src/pl/plperl/po/tr.po b/src/pl/plperl/po/tr.po index 311b3c67a5..8c46740be9 100644 --- a/src/pl/plperl/po/tr.po +++ b/src/pl/plperl/po/tr.po @@ -7,156 +7,193 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 8.4\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-08-31 20:01+0000\n" -"PO-Revision-Date: 2010-09-01 14:46+0200\n" +"POT-Creation-Date: 2011-08-29 20:38+0000\n" +"PO-Revision-Date: 2011-08-30 01:44+0200\n" "Last-Translator: Devrim GÜNDÜZ \n" "Language-Team: Turkish \n" +"Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Turkish\n" "X-Poedit-Country: Turkey\n" -#: plperl.c:257 +#: plperl.c:362 msgid "If true, trusted and untrusted Perl code will be compiled in strict mode." msgstr "Doğru ise, trusted ve untrusted Perl kodları strict modda derlenecektir" -#: plperl.c:265 +#: plperl.c:376 msgid "Perl initialization code to execute when a Perl interpreter is initialized." msgstr "Perl yorumlayıcısı ilklendirildiğinde çalışacak Perl ilklendirme kodu." -#: plperl.c:282 +#: plperl.c:398 msgid "Perl initialization code to execute once when plperl is first used." msgstr "plperl ilk kez kullanıldığında çalışacak Perl ilklendirme kodu" -#: plperl.c:290 +#: plperl.c:406 msgid "Perl initialization code to execute once when plperlu is first used." msgstr "plperlu ilk kez kullanıldığında çalışacak Perl ilklendirme kodu" -#: plperl.c:455 -#: plperl.c:608 -#: plperl.c:613 -#: plperl.c:711 -#: plperl.c:724 -#: plperl.c:766 -#: plperl.c:781 -#: plperl.c:1318 -#: plperl.c:1426 -#: plperl.c:1482 +#: plperl.c:623 +#: plperl.c:785 +#: plperl.c:790 +#: plperl.c:894 +#: plperl.c:905 +#: plperl.c:946 +#: plperl.c:967 +#: plperl.c:1868 +#: plperl.c:1963 +#: plperl.c:2025 #, c-format msgid "%s" msgstr "%s" -#: plperl.c:456 +#: plperl.c:624 +#, c-format msgid "while executing PostgreSQL::InServer::SPI::bootstrap" msgstr "PostgreSQL::InServer::SPI::bootstrap çalıştırılırken" -#: plperl.c:609 +#: plperl.c:786 +#, c-format msgid "while parsing Perl initialization" msgstr "Perl ilklendirmesi ayrıştırılırken" -#: plperl.c:614 +#: plperl.c:791 +#, c-format msgid "while running Perl initialization" msgstr "Perl ilklendirmesi sırasında" -#: plperl.c:712 +#: plperl.c:895 +#, c-format msgid "while executing PLC_TRUSTED" msgstr " PLC_TRUSTED çalıştırılırken" -#: plperl.c:725 +#: plperl.c:906 +#, c-format msgid "while executing utf8fix" msgstr "utf8fix çalıştırılırken" -#: plperl.c:767 +#: plperl.c:947 +#, c-format msgid "while executing plperl.on_plperl_init" msgstr "plperl.on_plperl_init çalıştırılırken" -#: plperl.c:782 +#: plperl.c:968 +#, c-format msgid "while executing plperl.on_plperlu_init" msgstr "plperl.on_plperlu_init çalıştırılırken" -#: plperl.c:824 -#: plperl.c:1021 +#: plperl.c:1014 +#: plperl.c:1541 #, c-format msgid "Perl hash contains nonexistent column \"%s\"" msgstr "Perl hashi olmayan kolonu içeriyor: \"%s\"" -#: plperl.c:997 +#: plperl.c:1097 +#, c-format +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgstr "dizin boyut sayısı (%d), izin verilern en yüksek değerini (%d) aşmaktadır" + +#: plperl.c:1111 +#, c-format +msgid "multidimensional arrays must have array expressions with matching dimensions" +msgstr "çok boyutlu dizinler boyut sayısı kadar dizin ifade sayısına sahip olmalıdırlar" + +#: plperl.c:1219 +#, c-format +msgid "PL/Perl function must return reference to hash or array" +msgstr "PL/Perl fonksiyonu hash ya da dizine referans dönmelidir" + +#: plperl.c:1518 +#, c-format msgid "$_TD->{new} does not exist" msgstr "$_TD->{new} mevcut değil" -#: plperl.c:1001 +#: plperl.c:1522 +#, c-format msgid "$_TD->{new} is not a hash reference" msgstr "$_TD->{new} hash referansı değil" -#: plperl.c:1235 -#: plperl.c:1924 +#: plperl.c:1745 +#: plperl.c:2476 #, c-format msgid "PL/Perl functions cannot return type %s" msgstr "PL/Perl fonksiyonları %s veri tipini döndüremezler" -#: plperl.c:1247 -#: plperl.c:1970 +#: plperl.c:1758 +#: plperl.c:2523 #, c-format msgid "PL/Perl functions cannot accept type %s" msgstr "PL/Perl fonksiyonları %s tipini kabul etmez" -#: plperl.c:1322 +#: plperl.c:1872 #, c-format msgid "didn't get a CODE reference from compiling function \"%s\"" msgstr "\"%s\" fonksiyonu derlenirken CODE referansı alınamadı" -#: plperl.c:1534 +#: plperl.c:2077 +#, c-format msgid "set-valued function called in context that cannot accept a set" msgstr "set değerini kabul etmediği ortamda set değeri alan fonksiyon çağırılmış" -#: plperl.c:1577 +#: plperl.c:2121 +#, c-format msgid "set-returning PL/Perl function must return reference to array or use return_next" msgstr "se dönen PL/Perl fonksiyonu return_next kullanmalı ya da bir diziye referans dönmelidir" -#: plperl.c:1610 +#: plperl.c:2150 +#, c-format msgid "composite-returning PL/Perl function must return reference to hash" msgstr "composite döndüren PL/Perl fonksiyonu hash'e referans dönmelidir" -#: plperl.c:1619 +#: plperl.c:2159 +#, c-format msgid "function returning record called in context that cannot accept type record" msgstr "tip kaydı içermeyen alanda çağırılan ve kayıt döndüren fonksiyon" -#: plperl.c:1739 +#: plperl.c:2273 +#, c-format msgid "ignoring modified row in DELETE trigger" msgstr "DELETE triggerındaki değiştirilmiş satır gözardı ediliyor" -#: plperl.c:1747 +#: plperl.c:2281 +#, c-format msgid "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\"" msgstr "PL/Perl trigger fonksiyonun sonucu undef, \"SKIP\" ya da \"MODIFY\" olmalıdır" -#: plperl.c:1859 +#: plperl.c:2407 +#: plperl.c:2413 +#, c-format msgid "out of memory" msgstr "yetersiz bellek" -#: plperl.c:1915 +#: plperl.c:2467 +#, c-format msgid "trigger functions can only be called as triggers" msgstr "trigger fonksiyonları sadece trigger olarak çağırılabilirler" -#: plperl.c:2228 +#: plperl.c:2843 +#, c-format msgid "cannot use return_next in a non-SETOF function" msgstr "SETOF olmayan bir fonksiyonda return_next kullanılamaz" -#: plperl.c:2234 +#: plperl.c:2849 +#, c-format msgid "SETOF-composite-returning PL/Perl function must call return_next with reference to hash" msgstr "SETOF-composite döndüren PL/Perl fonksiyonları return_next'i hash'e referans olarak çağırmalıdır" -#: plperl.c:3028 +#: plperl.c:3615 #, c-format msgid "PL/Perl function \"%s\"" msgstr "\"%s\" PL/Perl fonksiyonu" -#: plperl.c:3040 +#: plperl.c:3627 #, c-format msgid "compilation of PL/Perl function \"%s\"" msgstr "\"%s\" PL/Perl fonksiyonunun derlenmesi" -#: plperl.c:3049 +#: plperl.c:3636 +#, c-format msgid "PL/Perl anonymous code block" msgstr "PL/Perl anonim kod bloğu" diff --git a/src/pl/plperl/po/zh_CN.po b/src/pl/plperl/po/zh_CN.po index cc5e266e9e..8b144d2532 100644 --- a/src/pl/plperl/po/zh_CN.po +++ b/src/pl/plperl/po/zh_CN.po @@ -7,151 +7,171 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.0\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-10-15 16:49+0000\n" +"POT-Creation-Date: 2013-01-29 13:51+0000\n" "PO-Revision-Date: 2010-10-01 12:53+0800\n" "Last-Translator: Weibin \n" "Language-Team: Weibin \n" -"Language: \n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: plperl.c:311 +#: plperl.c:385 msgid "" "If true, trusted and untrusted Perl code will be compiled in strict mode." msgstr "如果为真的话,那么信任和非信任的Perl代码将以限制模式编译." -#: plperl.c:325 +#: plperl.c:399 msgid "" "Perl initialization code to execute when a Perl interpreter is initialized." msgstr "当初始化一个Perl解释器时候执行Perl初始化代码" -#: plperl.c:347 +#: plperl.c:421 msgid "Perl initialization code to execute once when plperl is first used." msgstr "在第一次使用plperl的时候执行一次Perl初始化代码" -#: plperl.c:355 +#: plperl.c:429 msgid "Perl initialization code to execute once when plperlu is first used." msgstr "在plperlu第一次使用的时候执行一次Perl初始化代码" -#: plperl.c:571 plperl.c:730 plperl.c:735 plperl.c:838 plperl.c:851 -#: plperl.c:893 plperl.c:914 plperl.c:1451 plperl.c:1557 plperl.c:1613 +#: plperl.c:646 plperl.c:820 plperl.c:825 plperl.c:929 plperl.c:940 +#: plperl.c:981 plperl.c:1002 plperl.c:1991 plperl.c:2086 plperl.c:2148 #, c-format msgid "%s" msgstr "%s" -#: plperl.c:572 +#: plperl.c:647 msgid "while executing PostgreSQL::InServer::SPI::bootstrap" msgstr "同时在执行PostgreSQL::InServer::SPI::bootstrap" -#: plperl.c:731 +#: plperl.c:821 msgid "while parsing Perl initialization" msgstr "同时在解析Perl初始化" -#: plperl.c:736 +#: plperl.c:826 msgid "while running Perl initialization" msgstr "同时在运行Perl初始化" -#: plperl.c:839 +#: plperl.c:930 msgid "while executing PLC_TRUSTED" msgstr "同时在执行PLC_TRUSTED" -#: plperl.c:852 +#: plperl.c:941 msgid "while executing utf8fix" msgstr "同时在执行utf8fix" -#: plperl.c:894 +#: plperl.c:982 msgid "while executing plperl.on_plperl_init" msgstr "同时在执行plperl.on_plperl_init" -#: plperl.c:915 +#: plperl.c:1003 msgid "while executing plperl.on_plperlu_init" msgstr "同时在执行plperl.on_plperlu_init" -#: plperl.c:957 plperl.c:1154 +#: plperl.c:1047 plperl.c:1647 #, c-format msgid "Perl hash contains nonexistent column \"%s\"" msgstr "Perl的哈希功能包含不存在的列\"%s\"" -#: plperl.c:1130 +#: plperl.c:1132 +#, c-format +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgstr "数组维数(%d)超过了最大允许值(%d)" + +#: plperl.c:1144 plperl.c:1161 +msgid "" +"multidimensional arrays must have array expressions with matching dimensions" +msgstr "多维数组必须有符合维度的数组表达式" + +#: plperl.c:1198 +#, c-format +msgid "cannot convert Perl array to non-array type %s" +msgstr "无法将Perl数组转换成非数组类型 %s" + +#: plperl.c:1294 +#, c-format +msgid "cannot convert Perl hash to non-composite type %s" +msgstr "无法将Perl哈希类型转换成非组合类型 %s" + +#: plperl.c:1305 +msgid "" +"function returning record called in context that cannot accept type record" +msgstr "返回值类型是记录的函数在不接受使用记录类型的环境中调用" + +#: plperl.c:1320 +msgid "PL/Perl function must return reference to hash or array" +msgstr "PL/Perl 函数必须返回对哈希或数组的引用" + +#: plperl.c:1624 msgid "$_TD->{new} does not exist" msgstr "$_TD->{new}不存在" -#: plperl.c:1134 +#: plperl.c:1628 msgid "$_TD->{new} is not a hash reference" msgstr "$_TD->{new}不是一个哈希引用" -#: plperl.c:1368 plperl.c:2072 +#: plperl.c:1868 plperl.c:2567 #, c-format msgid "PL/Perl functions cannot return type %s" msgstr "PL/Perl函数无法返回类型%s" -#: plperl.c:1380 plperl.c:2118 +#: plperl.c:1881 plperl.c:2612 #, c-format msgid "PL/Perl functions cannot accept type %s" msgstr "PL/Perl functions无法使用类型%s" -#: plperl.c:1455 +#: plperl.c:1995 #, c-format msgid "didn't get a CODE reference from compiling function \"%s\"" msgstr "没有从正在编译的函数 \"%s\"得到CODE参考" -#: plperl.c:1665 +#: plperl.c:2193 msgid "set-valued function called in context that cannot accept a set" msgstr "集值函数在不能使用集合的环境中调用" -#: plperl.c:1708 +#: plperl.c:2237 msgid "" "set-returning PL/Perl function must return reference to array or use " "return_next" msgstr "返回集合的PL/Perl函数必须返回对数组的引用或者使用return_next" -#: plperl.c:1741 -msgid "composite-returning PL/Perl function must return reference to hash" -msgstr "返回组合类型值的PL/Perl函数必须返回对哈希的引用" - -#: plperl.c:1750 -msgid "" -"function returning record called in context that cannot accept type record" -msgstr "返回值类型是记录的函数在不接受使用记录类型的环境中调用" - -#: plperl.c:1870 +#: plperl.c:2351 msgid "ignoring modified row in DELETE trigger" msgstr "在DELETE触发器中忽略已修改的记录" -#: plperl.c:1878 +#: plperl.c:2359 msgid "" "result of PL/Perl trigger function must be undef, \"SKIP\", or \"MODIFY\"" msgstr "PL/Perl 触发器函数的结果必须是undef, \"SKIP\", 或 \"MODIFY\"" -#: plperl.c:2003 plperl.c:2009 +#: plperl.c:2497 plperl.c:2507 msgid "out of memory" msgstr "内存用尽" -#: plperl.c:2063 +#: plperl.c:2559 msgid "trigger functions can only be called as triggers" msgstr "触发器函数只能以触发器的形式调用" -#: plperl.c:2382 +#: plperl.c:2932 msgid "cannot use return_next in a non-SETOF function" msgstr "不能在非SETOF函数中使用return_next" -#: plperl.c:2388 +#: plperl.c:2988 msgid "" "SETOF-composite-returning PL/Perl function must call return_next with " "reference to hash" msgstr "返回SETOF-组合类型值的PL/Perl函数必须调用带有对哈希引用的return_next" -#: plperl.c:3182 +#: plperl.c:3703 #, c-format msgid "PL/Perl function \"%s\"" msgstr "PL/Perl函数\"%s\"" -#: plperl.c:3194 +#: plperl.c:3715 #, c-format msgid "compilation of PL/Perl function \"%s\"" msgstr "编译PL/Perl函数\"%s\"" -#: plperl.c:3203 +#: plperl.c:3724 msgid "PL/Perl anonymous code block" msgstr "PL/Perl匿名代码块" diff --git a/src/pl/plperl/po/zh_TW.po b/src/pl/plperl/po/zh_TW.po index 00cdf1f8a4..fc2b13c09d 100644 --- a/src/pl/plperl/po/zh_TW.po +++ b/src/pl/plperl/po/zh_TW.po @@ -11,7 +11,7 @@ msgstr "" "PO-Revision-Date: 2011-05-12 14:30+0800\n" "Last-Translator: Zhenbang Wei \n" "Language-Team: Traditional Chinese\n" -"Language: \n" +"Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/pl/plperl/sql/plperl.sql b/src/pl/plperl/sql/plperl.sql index 4aaca2a27c..dc6b169464 100644 --- a/src/pl/plperl/sql/plperl.sql +++ b/src/pl/plperl/sql/plperl.sql @@ -50,6 +50,13 @@ $$ LANGUAGE plperl; SELECT perl_row(); SELECT * FROM perl_row(); +-- test returning a composite literal +CREATE OR REPLACE FUNCTION perl_row_lit() RETURNS testrowperl AS $$ + return '(1,hello,world,"({{1}})")'; +$$ LANGUAGE plperl; + +SELECT perl_row_lit(); + CREATE OR REPLACE FUNCTION perl_set() RETURNS SETOF testrowperl AS $$ return undef; @@ -398,7 +405,7 @@ DO $$ qx("/nonesuch"); $$ LANGUAGE plperl; DO $$ open my $fh, " qw(void) ; my @y; my $x = sort @y; 1; $do$ LANGUAGE plperl; + +-- make sure functions marked as VOID without an explicit return work +CREATE OR REPLACE FUNCTION myfuncs() RETURNS void AS $$ + $_SHARED{myquote} = sub { + my $arg = shift; + $arg =~ s/(['\\])/\\$1/g; + return "'$arg'"; + }; +$$ LANGUAGE plperl; + +SELECT myfuncs(); + +-- make sure we can't return an array as a scalar +CREATE OR REPLACE FUNCTION text_arrayref() RETURNS text AS $$ + return ['array']; +$$ LANGUAGE plperl; + +SELECT text_arrayref(); + +--- make sure we can't return a hash as a scalar +CREATE OR REPLACE FUNCTION text_hashref() RETURNS text AS $$ + return {'hash'=>1}; +$$ LANGUAGE plperl; + +SELECT text_hashref(); + +---- make sure we can't return a blessed object as a scalar +CREATE OR REPLACE FUNCTION text_obj() RETURNS text AS $$ + return bless({}, 'Fake::Object'); +$$ LANGUAGE plperl; + +SELECT text_obj(); + +----- make sure we can't return a scalar ref +CREATE OR REPLACE FUNCTION text_scalarref() RETURNS text AS $$ + my $str = 'str'; + return \$str; +$$ LANGUAGE plperl; + +SELECT text_scalarref(); + +-- check safe behavior when a function body is replaced during execution +CREATE OR REPLACE FUNCTION self_modify(INTEGER) RETURNS INTEGER AS $$ + spi_exec_query('CREATE OR REPLACE FUNCTION self_modify(INTEGER) RETURNS INTEGER AS \'return $_[0] * 3;\' LANGUAGE plperl;'); + spi_exec_query('select self_modify(42) AS a'); + return $_[0] * 2; +$$ LANGUAGE plperl; + +SELECT self_modify(42); +SELECT self_modify(42); diff --git a/src/pl/plperl/sql/plperl_array.sql b/src/pl/plperl/sql/plperl_array.sql index bc67c1ad0d..818a48ec20 100644 --- a/src/pl/plperl/sql/plperl_array.sql +++ b/src/pl/plperl/sql/plperl_array.sql @@ -152,6 +152,13 @@ $$ LANGUAGE plperl; select plperl_arrays_inout('{{1}, {2}, {3}}'); +-- check that we can return an array literal +CREATE OR REPLACE FUNCTION plperl_arrays_inout_l(INTEGER[]) returns INTEGER[] AS $$ + return shift.''; # stringify it +$$ LANGUAGE plperl; + +select plperl_arrays_inout_l('{{1}, {2}, {3}}'); + -- make sure setof works create or replace function perl_setof_array(integer[]) returns setof integer[] language plperl as $$ my $arr = shift; diff --git a/src/pl/plperl/sql/plperl_elog.sql b/src/pl/plperl/sql/plperl_elog.sql index 4f1c014efb..032fd8b8ba 100644 --- a/src/pl/plperl/sql/plperl_elog.sql +++ b/src/pl/plperl/sql/plperl_elog.sql @@ -43,3 +43,36 @@ create or replace function uses_global() returns text language plperl as $$ $$; select uses_global(); + +-- make sure we don't choke on readonly values +do language plperl $$ elog(NOTICE, ${^TAINT}); $$; + +-- test recovery after "die" + +create or replace function just_die() returns void language plperl AS $$ +die "just die"; +$$; + +select just_die(); + +create or replace function die_caller() returns int language plpgsql as $$ +BEGIN + BEGIN + PERFORM just_die(); + EXCEPTION WHEN OTHERS THEN + RAISE NOTICE 'caught die'; + END; + RETURN 1; +END; +$$; + +select die_caller(); + +create or replace function indirect_die_caller() returns int language plperl as $$ +my $prepared = spi_prepare('SELECT die_caller() AS fx'); +my $a = spi_exec_prepared($prepared)->{rows}->[0]->{fx}; +my $b = spi_exec_prepared($prepared)->{rows}->[0]->{fx}; +return $a + $b; +$$; + +select indirect_die_caller(); diff --git a/src/pl/plperl/sql/plperl_init.sql b/src/pl/plperl/sql/plperl_init.sql index f6a32b9bae..50288cb415 100644 --- a/src/pl/plperl/sql/plperl_init.sql +++ b/src/pl/plperl/sql/plperl_init.sql @@ -3,7 +3,7 @@ -- Avoid need for custom_variable_classes = 'plperl' LOAD 'plperl'; -SET SESSION plperl.on_plperl_init = ' system("/nonesuch") '; +SET SESSION plperl.on_plperl_init = ' system("/nonesuch"); '; SHOW plperl.on_plperl_init; diff --git a/src/pl/plperl/sql/plperl_lc.sql b/src/pl/plperl/sql/plperl_lc.sql new file mode 100644 index 0000000000..a4a06e722f --- /dev/null +++ b/src/pl/plperl/sql/plperl_lc.sql @@ -0,0 +1,8 @@ +-- +-- Make sure strings are validated +-- Should fail for all encodings, as nul bytes are never permitted. +-- +CREATE OR REPLACE FUNCTION perl_zerob() RETURNS TEXT AS $$ + return "abcd\0efg"; +$$ LANGUAGE plperl; +SELECT perl_zerob(); diff --git a/src/pl/plpgsql/src/nls.mk b/src/pl/plpgsql/src/nls.mk index bbf2a44791..2c658c1447 100644 --- a/src/pl/plpgsql/src/nls.mk +++ b/src/pl/plpgsql/src/nls.mk @@ -1,6 +1,6 @@ # src/pl/plpgsql/src/nls.mk CATALOG_NAME := plpgsql -AVAIL_LANGUAGES := de es fr it ja ko pt_BR ro zh_CN zh_TW +AVAIL_LANGUAGES := cs de es fr it ja ko pl pt_BR ro ru tr zh_CN zh_TW GETTEXT_FILES := pl_comp.c pl_exec.c pl_gram.c pl_funcs.c pl_handler.c pl_scanner.c GETTEXT_TRIGGERS:= _ errmsg errmsg_plural:1,2 errdetail errdetail_log errdetail_plural:1,2 errhint errcontext yyerror plpgsql_yyerror diff --git a/src/pl/plpgsql/src/pl_comp.c b/src/pl/plpgsql/src/pl_comp.c index 75098ec6de..79ff6f5766 100644 --- a/src/pl/plpgsql/src/pl_comp.c +++ b/src/pl/plpgsql/src/pl_comp.c @@ -1721,12 +1721,13 @@ plpgsql_parse_cwordtype(List *idents) classStruct = (Form_pg_class) GETSTRUCT(classtup); /* - * It must be a relation, sequence, view, or type + * It must be a relation, sequence, view, composite type, or foreign table */ if (classStruct->relkind != RELKIND_RELATION && classStruct->relkind != RELKIND_SEQUENCE && classStruct->relkind != RELKIND_VIEW && - classStruct->relkind != RELKIND_COMPOSITE_TYPE) + classStruct->relkind != RELKIND_COMPOSITE_TYPE && + classStruct->relkind != RELKIND_FOREIGN_TABLE) goto done; /* @@ -1947,11 +1948,12 @@ build_row_from_class(Oid classOid) classStruct = RelationGetForm(rel); relname = RelationGetRelationName(rel); - /* accept relation, sequence, view, or composite type entries */ + /* accept relation, sequence, view, composite type, or foreign table */ if (classStruct->relkind != RELKIND_RELATION && classStruct->relkind != RELKIND_SEQUENCE && classStruct->relkind != RELKIND_VIEW && - classStruct->relkind != RELKIND_COMPOSITE_TYPE) + classStruct->relkind != RELKIND_COMPOSITE_TYPE && + classStruct->relkind != RELKIND_FOREIGN_TABLE) ereport(ERROR, (errcode(ERRCODE_WRONG_OBJECT_TYPE), errmsg("relation \"%s\" is not a table", relname))); diff --git a/src/pl/plpgsql/src/pl_exec.c b/src/pl/plpgsql/src/pl_exec.c index 2b5a343766..7a1e20786d 100644 --- a/src/pl/plpgsql/src/pl_exec.c +++ b/src/pl/plpgsql/src/pl_exec.c @@ -183,14 +183,17 @@ static void exec_move_row(PLpgSQL_execstate *estate, static HeapTuple make_tuple_from_row(PLpgSQL_execstate *estate, PLpgSQL_row *row, TupleDesc tupdesc); -static char *convert_value_to_string(Datum value, Oid valtype); -static Datum exec_cast_value(Datum value, Oid valtype, +static char *convert_value_to_string(PLpgSQL_execstate *estate, + Datum value, Oid valtype); +static Datum exec_cast_value(PLpgSQL_execstate *estate, + Datum value, Oid valtype, Oid reqtype, FmgrInfo *reqinput, Oid reqtypioparam, int32 reqtypmod, bool isnull); -static Datum exec_simple_cast_value(Datum value, Oid valtype, +static Datum exec_simple_cast_value(PLpgSQL_execstate *estate, + Datum value, Oid valtype, Oid reqtype, int32 reqtypmod, bool isnull); static void exec_init_tuple_store(PLpgSQL_execstate *estate); @@ -293,6 +296,8 @@ plpgsql_exec_function(PLpgSQL_function *func, FunctionCallInfo fcinfo) /* If arg is null, treat it as an empty row */ exec_move_row(&estate, NULL, row, NULL, NULL); } + /* clean up after exec_move_row() */ + exec_eval_cleanup(&estate); } break; @@ -428,7 +433,9 @@ plpgsql_exec_function(PLpgSQL_function *func, FunctionCallInfo fcinfo) else { /* Cast value to proper type */ - estate.retval = exec_cast_value(estate.retval, estate.rettype, + estate.retval = exec_cast_value(&estate, + estate.retval, + estate.rettype, func->fn_rettype, &(func->fn_retinput), func->fn_rettypioparam, @@ -1426,17 +1433,9 @@ exec_stmt_getdiag(PLpgSQL_execstate *estate, PLpgSQL_stmt_getdiag *stmt) foreach(lc, stmt->diag_items) { PLpgSQL_diag_item *diag_item = (PLpgSQL_diag_item *) lfirst(lc); - PLpgSQL_datum *var; + PLpgSQL_datum *var = estate->datums[diag_item->target]; bool isnull = false; - if (diag_item->target <= 0) - continue; - - var = estate->datums[diag_item->target]; - - if (var == NULL) - continue; - switch (diag_item->kind) { case PLPGSQL_GETDIAG_ROW_COUNT: @@ -1718,7 +1717,7 @@ exec_stmt_fori(PLpgSQL_execstate *estate, PLpgSQL_stmt_fori *stmt) * Get the value of the lower bound */ value = exec_eval_expr(estate, stmt->lower, &isnull, &valtype); - value = exec_cast_value(value, valtype, var->datatype->typoid, + value = exec_cast_value(estate, value, valtype, var->datatype->typoid, &(var->datatype->typinput), var->datatype->typioparam, var->datatype->atttypmod, isnull); @@ -1733,7 +1732,7 @@ exec_stmt_fori(PLpgSQL_execstate *estate, PLpgSQL_stmt_fori *stmt) * Get the value of the upper bound */ value = exec_eval_expr(estate, stmt->upper, &isnull, &valtype); - value = exec_cast_value(value, valtype, var->datatype->typoid, + value = exec_cast_value(estate, value, valtype, var->datatype->typoid, &(var->datatype->typinput), var->datatype->typioparam, var->datatype->atttypmod, isnull); @@ -1750,7 +1749,7 @@ exec_stmt_fori(PLpgSQL_execstate *estate, PLpgSQL_stmt_fori *stmt) if (stmt->step) { value = exec_eval_expr(estate, stmt->step, &isnull, &valtype); - value = exec_cast_value(value, valtype, var->datatype->typoid, + value = exec_cast_value(estate, value, valtype, var->datatype->typoid, &(var->datatype->typinput), var->datatype->typioparam, var->datatype->atttypmod, isnull); @@ -2402,7 +2401,8 @@ exec_stmt_return_next(PLpgSQL_execstate *estate, errmsg("wrong result type supplied in RETURN NEXT"))); /* coerce type if needed */ - retval = exec_simple_cast_value(retval, + retval = exec_simple_cast_value(estate, + retval, var->datatype->typoid, tupdesc->attrs[0]->atttypid, tupdesc->attrs[0]->atttypmod, @@ -2434,6 +2434,7 @@ exec_stmt_return_next(PLpgSQL_execstate *estate, { tuple = do_convert_tuple(tuple, tupmap); free_conversion_map(tupmap); + free_tuple = true; } } break; @@ -2473,7 +2474,8 @@ exec_stmt_return_next(PLpgSQL_execstate *estate, &rettype); /* coerce type if needed */ - retval = exec_simple_cast_value(retval, + retval = exec_simple_cast_value(estate, + retval, rettype, tupdesc->attrs[0]->atttypid, tupdesc->attrs[0]->atttypmod, @@ -2481,8 +2483,6 @@ exec_stmt_return_next(PLpgSQL_execstate *estate, tuplestore_putvalues(estate->tuple_store, tupdesc, &retval, &isNull); - - exec_eval_cleanup(estate); } else { @@ -2499,6 +2499,8 @@ exec_stmt_return_next(PLpgSQL_execstate *estate, heap_freetuple(tuple); } + exec_eval_cleanup(estate); + return PLPGSQL_RC_OK; } @@ -2688,7 +2690,9 @@ exec_stmt_raise(PLpgSQL_execstate *estate, PLpgSQL_stmt_raise *stmt) if (paramisnull) extval = ""; else - extval = convert_value_to_string(paramvalue, paramtypeid); + extval = convert_value_to_string(estate, + paramvalue, + paramtypeid); appendStringInfoString(&ds, extval); current_param = lnext(current_param); exec_eval_cleanup(estate); @@ -2726,7 +2730,7 @@ exec_stmt_raise(PLpgSQL_execstate *estate, PLpgSQL_stmt_raise *stmt) (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED), errmsg("RAISE statement option cannot be null"))); - extval = convert_value_to_string(optionvalue, optiontypeid); + extval = convert_value_to_string(estate, optionvalue, optiontypeid); switch (opt->opt_type) { @@ -2794,7 +2798,7 @@ exec_stmt_raise(PLpgSQL_execstate *estate, PLpgSQL_stmt_raise *stmt) ereport(stmt->elog_level, (err_code ? errcode(err_code) : 0, errmsg_internal("%s", err_message), - (err_detail != NULL) ? errdetail("%s", err_detail) : 0, + (err_detail != NULL) ? errdetail_internal("%s", err_detail) : 0, (err_hint != NULL) ? errhint("%s", err_hint) : 0)); estate->err_text = NULL; /* un-suppress... */ @@ -3153,6 +3157,7 @@ exec_stmt_execsql(PLpgSQL_execstate *estate, } /* Clean up */ + exec_eval_cleanup(estate); SPI_freetuptable(SPI_tuptable); } else @@ -3198,7 +3203,10 @@ exec_stmt_dynexecute(PLpgSQL_execstate *estate, errmsg("query string argument of EXECUTE is null"))); /* Get the C-String representation */ - querystr = convert_value_to_string(query, restype); + querystr = convert_value_to_string(estate, query, restype); + + /* copy it out of the temporary context before we clean up */ + querystr = pstrdup(querystr); exec_eval_cleanup(estate); @@ -3331,6 +3339,8 @@ exec_stmt_dynexecute(PLpgSQL_execstate *estate, /* Put the first result row into the target */ exec_move_row(estate, rec, row, tuptab->vals[0], tuptab->tupdesc); } + /* clean up after exec_move_row() */ + exec_eval_cleanup(estate); } else { @@ -3605,6 +3615,7 @@ exec_stmt_fetch(PLpgSQL_execstate *estate, PLpgSQL_stmt_fetch *stmt) else exec_move_row(estate, rec, row, tuptab->vals[0], tuptab->tupdesc); + exec_eval_cleanup(estate); SPI_freetuptable(tuptab); } else @@ -3682,7 +3693,7 @@ exec_assign_expr(PLpgSQL_execstate *estate, PLpgSQL_datum *target, /* ---------- * exec_assign_value Put a value into a target field * - * Note: in some code paths, this may leak memory in the eval_econtext; + * Note: in some code paths, this will leak memory in the eval_econtext; * we assume that will be cleaned up later by exec_eval_cleanup. We cannot * call exec_eval_cleanup here for fear of destroying the input Datum value. * ---------- @@ -3702,7 +3713,10 @@ exec_assign_value(PLpgSQL_execstate *estate, PLpgSQL_var *var = (PLpgSQL_var *) target; Datum newvalue; - newvalue = exec_cast_value(value, valtype, var->datatype->typoid, + newvalue = exec_cast_value(estate, + value, + valtype, + var->datatype->typoid, &(var->datatype->typinput), var->datatype->typioparam, var->datatype->atttypmod, @@ -3715,19 +3729,14 @@ exec_assign_value(PLpgSQL_execstate *estate, var->refname))); /* - * If type is by-reference, make sure we have a freshly - * palloc'd copy; the originally passed value may not live as - * long as the variable! But we don't need to re-copy if - * exec_cast_value performed a conversion; its output must - * already be palloc'd. + * If type is by-reference, copy the new value (which is + * probably in the eval_econtext) into the procedure's + * memory context. */ if (!var->datatype->typbyval && !*isNull) - { - if (newvalue == value) - newvalue = datumCopy(newvalue, - false, - var->datatype->typlen); - } + newvalue = datumCopy(newvalue, + false, + var->datatype->typlen); /* * Now free the old value. (We can't do this any earlier @@ -3849,7 +3858,6 @@ exec_assign_value(PLpgSQL_execstate *estate, Datum *values; bool *nulls; bool *replaces; - void *mustfree; bool attisnull; Oid atttype; int32 atttypmod; @@ -3901,22 +3909,14 @@ exec_assign_value(PLpgSQL_execstate *estate, atttype = SPI_gettypeid(rec->tupdesc, fno + 1); atttypmod = rec->tupdesc->attrs[fno]->atttypmod; attisnull = *isNull; - values[fno] = exec_simple_cast_value(value, + values[fno] = exec_simple_cast_value(estate, + value, valtype, atttype, atttypmod, attisnull); nulls[fno] = attisnull; - /* - * Avoid leaking the result of exec_simple_cast_value, if it - * performed a conversion to a pass-by-ref type. - */ - if (!attisnull && values[fno] != value && !get_typbyval(atttype)) - mustfree = DatumGetPointer(values[fno]); - else - mustfree = NULL; - /* * Now call heap_modify_tuple() to create a new tuple that * replaces the old one in the record. @@ -3933,8 +3933,6 @@ exec_assign_value(PLpgSQL_execstate *estate, pfree(values); pfree(nulls); pfree(replaces); - if (mustfree) - pfree(mustfree); break; } @@ -3961,6 +3959,7 @@ exec_assign_value(PLpgSQL_execstate *estate, ArrayType *oldarrayval; ArrayType *newarrayval; SPITupleTable *save_eval_tuptable; + MemoryContext oldcontext; /* * We need to do subscript evaluation, which might require @@ -4049,7 +4048,8 @@ exec_assign_value(PLpgSQL_execstate *estate, estate->eval_tuptable = save_eval_tuptable; /* Coerce source value to match array element type. */ - coerced_value = exec_simple_cast_value(value, + coerced_value = exec_simple_cast_value(estate, + value, valtype, arrayelemtypeid, arraytypmod, @@ -4069,6 +4069,9 @@ exec_assign_value(PLpgSQL_execstate *estate, (oldarrayisnull || *isNull)) return; + /* oldarrayval and newarrayval should be short-lived */ + oldcontext = MemoryContextSwitchTo(estate->eval_econtext->ecxt_per_tuple_memory); + if (oldarrayisnull) oldarrayval = construct_empty_array(arrayelemtypeid); else @@ -4087,12 +4090,7 @@ exec_assign_value(PLpgSQL_execstate *estate, elemtypbyval, elemtypalign); - /* - * Avoid leaking the result of exec_simple_cast_value, if it - * performed a conversion to a pass-by-ref type. - */ - if (!*isNull && coerced_value != value && !elemtypbyval) - pfree(DatumGetPointer(coerced_value)); + MemoryContextSwitchTo(oldcontext); /* * Assign the new array to the base variable. It's never NULL @@ -4104,11 +4102,6 @@ exec_assign_value(PLpgSQL_execstate *estate, exec_assign_value(estate, target, PointerGetDatum(newarrayval), arraytypeid, isNull); - - /* - * Avoid leaking the modified array value, too. - */ - pfree(newarrayval); break; } @@ -4444,7 +4437,7 @@ exec_eval_integer(PLpgSQL_execstate *estate, Oid exprtypeid; exprdatum = exec_eval_expr(estate, expr, isNull, &exprtypeid); - exprdatum = exec_simple_cast_value(exprdatum, exprtypeid, + exprdatum = exec_simple_cast_value(estate, exprdatum, exprtypeid, INT4OID, -1, *isNull); return DatumGetInt32(exprdatum); @@ -4466,7 +4459,7 @@ exec_eval_boolean(PLpgSQL_execstate *estate, Oid exprtypeid; exprdatum = exec_eval_expr(estate, expr, isNull, &exprtypeid); - exprdatum = exec_simple_cast_value(exprdatum, exprtypeid, + exprdatum = exec_simple_cast_value(estate, exprdatum, exprtypeid, BOOLOID, -1, *isNull); return DatumGetBool(exprdatum); @@ -4661,7 +4654,10 @@ exec_for_query(PLpgSQL_execstate *estate, PLpgSQL_stmt_forq *stmt, * through with found = false. */ if (n <= 0) + { exec_move_row(estate, rec, row, NULL, tuptab->tupdesc); + exec_eval_cleanup(estate); + } else found = true; /* processed at least one tuple */ @@ -4678,6 +4674,7 @@ exec_for_query(PLpgSQL_execstate *estate, PLpgSQL_stmt_forq *stmt, * Assign the tuple to the target */ exec_move_row(estate, rec, row, tuptab->vals[i], tuptab->tupdesc); + exec_eval_cleanup(estate); /* * Execute the statements @@ -5030,6 +5027,9 @@ plpgsql_param_fetch(ParamListInfo params, int paramid) /* ---------- * exec_move_row Move one tuple's values into a record or row + * + * Since this uses exec_assign_value, caller should eventually call + * exec_eval_cleanup to prevent long-term memory leaks. * ---------- */ static void @@ -5230,28 +5230,44 @@ make_tuple_from_row(PLpgSQL_execstate *estate, /* ---------- * convert_value_to_string Convert a non-null Datum to C string * - * Note: callers generally assume that the result is a palloc'd string and - * should be pfree'd. This is not all that safe an assumption ... + * Note: the result is in the estate's eval_econtext, and will be cleared + * by the next exec_eval_cleanup() call. The invoked output function might + * leave additional cruft there as well, so just pfree'ing the result string + * would not be enough to avoid memory leaks if we did not do it like this. + * In most usages the Datum being passed in is also in that context (if + * pass-by-reference) and so an exec_eval_cleanup() call is needed anyway. * * Note: not caching the conversion function lookup is bad for performance. * ---------- */ static char * -convert_value_to_string(Datum value, Oid valtype) +convert_value_to_string(PLpgSQL_execstate *estate, Datum value, Oid valtype) { + char *result; + MemoryContext oldcontext; Oid typoutput; bool typIsVarlena; + oldcontext = MemoryContextSwitchTo(estate->eval_econtext->ecxt_per_tuple_memory); getTypeOutputInfo(valtype, &typoutput, &typIsVarlena); - return OidOutputFunctionCall(typoutput, value); + result = OidOutputFunctionCall(typoutput, value); + MemoryContextSwitchTo(oldcontext); + + return result; } /* ---------- * exec_cast_value Cast a value if required + * + * Note: the estate's eval_econtext is used for temporary storage, and may + * also contain the result Datum if we have to do a conversion to a pass- + * by-reference data type. Be sure to do an exec_eval_cleanup() call when + * done with the result. * ---------- */ static Datum -exec_cast_value(Datum value, Oid valtype, +exec_cast_value(PLpgSQL_execstate *estate, + Datum value, Oid valtype, Oid reqtype, FmgrInfo *reqinput, Oid reqtypioparam, @@ -5259,25 +5275,27 @@ exec_cast_value(Datum value, Oid valtype, bool isnull) { /* - * If the type of the queries return value isn't that of the variable, - * convert it. + * If the type of the given value isn't what's requested, convert it. */ if (valtype != reqtype || reqtypmod != -1) { + MemoryContext oldcontext; + + oldcontext = MemoryContextSwitchTo(estate->eval_econtext->ecxt_per_tuple_memory); if (!isnull) { char *extval; - extval = convert_value_to_string(value, valtype); + extval = convert_value_to_string(estate, value, valtype); value = InputFunctionCall(reqinput, extval, reqtypioparam, reqtypmod); - pfree(extval); } else { value = InputFunctionCall(reqinput, NULL, reqtypioparam, reqtypmod); } + MemoryContextSwitchTo(oldcontext); } return value; @@ -5292,7 +5310,8 @@ exec_cast_value(Datum value, Oid valtype, * ---------- */ static Datum -exec_simple_cast_value(Datum value, Oid valtype, +exec_simple_cast_value(PLpgSQL_execstate *estate, + Datum value, Oid valtype, Oid reqtype, int32 reqtypmod, bool isnull) { @@ -5306,7 +5325,8 @@ exec_simple_cast_value(Datum value, Oid valtype, fmgr_info(typinput, &finfo_input); - value = exec_cast_value(value, + value = exec_cast_value(estate, + value, valtype, reqtype, &finfo_input, @@ -5947,7 +5967,10 @@ exec_dynquery_with_params(PLpgSQL_execstate *estate, errmsg("query string argument of EXECUTE is null"))); /* Get the C-String representation */ - querystr = convert_value_to_string(query, restype); + querystr = convert_value_to_string(estate, query, restype); + + /* copy it out of the temporary context before we clean up */ + querystr = pstrdup(querystr); exec_eval_cleanup(estate); diff --git a/src/pl/plpgsql/src/pl_handler.c b/src/pl/plpgsql/src/pl_handler.c index e6e71432ff..d5f696aaa8 100644 --- a/src/pl/plpgsql/src/pl_handler.c +++ b/src/pl/plpgsql/src/pl_handler.c @@ -227,6 +227,9 @@ plpgsql_validator(PG_FUNCTION_ARGS) bool istrigger = false; int i; + if (!CheckFunctionValidatorAccess(fcinfo->flinfo->fn_oid, funcoid)) + PG_RETURN_VOID(); + /* Get the new function's pg_proc entry */ tuple = SearchSysCache1(PROCOID, ObjectIdGetDatum(funcoid)); if (!HeapTupleIsValid(tuple)) diff --git a/src/pl/plpgsql/src/plpgsql--1.0.sql b/src/pl/plpgsql/src/plpgsql--1.0.sql index e8d68deca5..83217c8327 100644 --- a/src/pl/plpgsql/src/plpgsql--1.0.sql +++ b/src/pl/plpgsql/src/plpgsql--1.0.sql @@ -8,6 +8,8 @@ CREATE PROCEDURAL LANGUAGE plpgsql; +COMMENT ON PROCEDURAL LANGUAGE plpgsql IS 'PL/pgSQL procedural language'; + /* * PGXC system view to look for prepared transaction GID list in a cluster */ @@ -35,3 +37,4 @@ LANGUAGE 'plpgsql'; CREATE VIEW pgxc_prepared_xacts AS SELECT DISTINCT * from pgxc_prepared_xact(); + diff --git a/src/pl/plpgsql/src/po/cs.po b/src/pl/plpgsql/src/po/cs.po new file mode 100644 index 0000000000..e77a96fa21 --- /dev/null +++ b/src/pl/plpgsql/src/po/cs.po @@ -0,0 +1,767 @@ +# Czech message translation file for plpgsql +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# +# Pavel Stehule , 2011. +# Tomáš Vondra , 2011, 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: plpgsql-cs (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-09-03 19:35+0200\n" +"PO-Revision-Date: 2011-09-03 19:31+0200\n" +"Last-Translator: Tomas Vondra \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 1.2\n" + +#: pl_comp.c:427 pl_handler.c:266 +#, c-format +msgid "PL/pgSQL functions cannot accept type %s" +msgstr "funkce v PL/pgSQL nepodporují typ %s" + +#: pl_comp.c:506 +#, c-format +msgid "could not determine actual return type for polymorphic function \"%s\"" +msgstr "nelze určit skutečný návratový typ polymorfní funkce \"%s\"" + +# trigger functions - někde je to překládané jako "trigger funkce", někde jako "funkce s návratovým typem trigger", asi by to chtělo ujednotit +# ok +#: pl_comp.c:536 +msgid "trigger functions can only be called as triggers" +msgstr "" +"funkce pro obsluhu triggerů mohou být volané pouze prostřednictvím triggerů" + +#: pl_comp.c:540 pl_handler.c:251 +#, c-format +msgid "PL/pgSQL functions cannot return type %s" +msgstr "funkce v PL/pgSQL nemohou vracet typ %s" + +#: pl_comp.c:583 +msgid "trigger functions cannot have declared arguments" +msgstr "funkce pro obsluhu triggeru nesmí mít argumenty" + +#: pl_comp.c:584 +msgid "" +"The arguments of the trigger can be accessed through TG_NARGS and TG_ARGV " +"instead." +msgstr "" +"Parametry triggeru jsou přístupné prostřednictvím proměnných TG_NARGS a " +"TG_ARGV." + +#: pl_comp.c:912 +#, c-format +msgid "compilation of PL/pgSQL function \"%s\" near line %d" +msgstr "překlad PL/pgSQL funkce \"%s\" poblíž řádku %d" + +#: pl_comp.c:935 +#, c-format +msgid "parameter name \"%s\" used more than once" +msgstr "identifikátor parametru \"%s\" není unikátní" + +#: pl_comp.c:1045 +#, c-format +msgid "column reference \"%s\" is ambiguous" +msgstr "nejednoznačný odkaz na sloupec \"%s\"" + +# přeložil bych spíš asi jako "Identifikátor může odkazovat na proměnnou PL/pgSQL nebo na sloupec v tabulce." +# ok +#: pl_comp.c:1047 +msgid "It could refer to either a PL/pgSQL variable or a table column." +msgstr "" +"Identifikátor může odkazovat na proměnnou PL/pgSQL nebo na sloupec v tabulce." + +#: pl_comp.c:1227 pl_comp.c:1255 pl_exec.c:3862 pl_exec.c:4208 pl_exec.c:4294 +#: pl_exec.c:4385 +#, c-format +msgid "record \"%s\" has no field \"%s\"" +msgstr "záznam \"%s\" nemá položku \"%s\"" + +#: pl_comp.c:1782 +#, c-format +msgid "relation \"%s\" does not exist" +msgstr "relace \"%s\" neexistuje" + +#: pl_comp.c:1814 +#, c-format +msgid "relation \"%s.%s\" does not exist" +msgstr "relace \"%s.%s\" neexistuje" + +# asi spíš jako "proměnná \"%s\" má pseudo-typ \"%s\" (slovo "obsahuje" si vykládám spíš jako že je součástí) +# podivej se do zdrojaku, hlasi, kdyz zkusis deklarovat promennou s pseudotype - takze jsem to prelozil +# jeste trochu jinak +#: pl_comp.c:1896 +#, c-format +msgid "variable \"%s\" has pseudo-type %s" +msgstr "proměnná \"%s\" je deklarována jako pseudo-typ \"%s\"" + +#: pl_comp.c:1957 +#, c-format +msgid "relation \"%s\" is not a table" +msgstr "relace \"%s\" není tabulkou" + +# spíš asi "je jenom obálka (shell)", +# ok +#: pl_comp.c:2117 +#, c-format +msgid "type \"%s\" is only a shell" +msgstr "typ \"%s\" je jen obálkou (shell)" + +#: pl_comp.c:2190 pl_comp.c:2243 +#, c-format +msgid "unrecognized exception condition \"%s\"" +msgstr "nedefinovaná výjimka \"%s\"" + +#: pl_comp.c:2401 +#, c-format +msgid "" +"could not determine actual argument type for polymorphic function \"%s\"" +msgstr "nelze určit skutečný typ argumentu polymorfní funkce \"%s\"" + +#: pl_exec.c:239 pl_exec.c:510 +msgid "during initialization of execution state" +msgstr "během inicializace proměnné execution state" + +#: pl_exec.c:246 +msgid "while storing call arguments into local variables" +msgstr "během ukládání parametrů funkce do lokálních proměnných" + +#: pl_exec.c:301 pl_exec.c:667 +msgid "during function entry" +msgstr "během vstupu do funkce" + +#: pl_exec.c:332 pl_exec.c:698 +msgid "CONTINUE cannot be used outside a loop" +msgstr "CONTINUE nemůže byt použito mimo tělo cyklu" + +#: pl_exec.c:336 +msgid "control reached end of function without RETURN" +msgstr "funkce skončila, aniž by byl proveden příkaz RETURN" + +#: pl_exec.c:343 +msgid "while casting return value to function's return type" +msgstr "během konverze vracené hodnoty do návratového typu funkce" + +# spíš asi "který neumožňuje přijetí tabulky" +# ok +#: pl_exec.c:356 pl_exec.c:2591 +msgid "set-valued function called in context that cannot accept a set" +msgstr "" +"funkce vracející tabulku byla zavolána z kontextu, který neumožňuje přijetí " +"tabulky" + +#: pl_exec.c:394 +msgid "returned record type does not match expected record type" +msgstr "" +"vracenou hodnotu typu record nelze konvertovat do očekávaného typu record" + +#: pl_exec.c:452 pl_exec.c:706 +msgid "during function exit" +msgstr "během ukončování funkce" + +#: pl_exec.c:702 +msgid "control reached end of trigger procedure without RETURN" +msgstr "funkce obsluhy triggeru skončila, aniž by byl proveden příkaz RETURN" + +#: pl_exec.c:711 +msgid "trigger procedure cannot return a set" +msgstr "funkce obsluhy triggeru nemůže vrátit tabulku" + +#: pl_exec.c:733 +msgid "" +"returned row structure does not match the structure of the triggering table" +msgstr "" +"struktura vrácené hodnoty neodpovídá struktuře tabulky svázané s triggerem" + +#: pl_exec.c:796 +#, c-format +msgid "PL/pgSQL function \"%s\" line %d %s" +msgstr "PL/pgSQL funkce \"%s\" řádek %d %s" + +#: pl_exec.c:807 +#, c-format +msgid "PL/pgSQL function \"%s\" %s" +msgstr "PL/pgSQL funkce \"%s\" %s" + +#. translator: last %s is a plpgsql statement type name +#: pl_exec.c:815 +#, c-format +msgid "PL/pgSQL function \"%s\" line %d at %s" +msgstr "PL/pgSQL funkce \"%s\" řádek %d %s" + +#: pl_exec.c:821 +#, c-format +msgid "PL/pgSQL function \"%s\"" +msgstr "PL/pgSQL funkce \"%s\"" + +#: pl_exec.c:929 +msgid "during statement block local variable initialization" +msgstr "během inicializace lokálních proměnných bloku" + +#: pl_exec.c:971 +#, c-format +msgid "variable \"%s\" declared NOT NULL cannot default to NULL" +msgstr "" +"NULL nemůže být výchozí hodnotou proměnné \"%s\" deklarované jako NOT NULL" + +#: pl_exec.c:1021 +msgid "during statement block entry" +msgstr "během zahájení bloku" + +#: pl_exec.c:1042 +msgid "during statement block exit" +msgstr "během ukončování bloku" + +#: pl_exec.c:1085 +msgid "during exception cleanup" +msgstr "během čištění po zachycení výjimky" + +#: pl_exec.c:1570 +msgid "case not found" +msgstr "varianta nenalezena" + +#: pl_exec.c:1571 +msgid "CASE statement is missing ELSE part." +msgstr "V příkazu CASE chybí část ELSE" + +#: pl_exec.c:1725 +msgid "lower bound of FOR loop cannot be null" +msgstr "spodní limit příkazu FOR nesmí být nullL" + +#: pl_exec.c:1740 +msgid "upper bound of FOR loop cannot be null" +msgstr "horní limit příkazu FOR nesmí být null" + +#: pl_exec.c:1757 +msgid "BY value of FOR loop cannot be null" +msgstr "krok příkazu FOR nesmí být null" + +#: pl_exec.c:1763 +msgid "BY value of FOR loop must be greater than zero" +msgstr "krok příkazu FOR musí být větší než nula" + +#: pl_exec.c:1933 pl_exec.c:3395 +#, c-format +msgid "cursor \"%s\" already in use" +msgstr "kurzor \"%s\" se již používá" + +#: pl_exec.c:1956 pl_exec.c:3457 +msgid "arguments given for cursor without arguments" +msgstr "argumenty pro kurzor bez argumentů" + +#: pl_exec.c:1975 pl_exec.c:3476 +msgid "arguments required for cursor" +msgstr "kurzor vyžaduje argumenty" + +#: pl_exec.c:2063 +msgid "FOREACH expression must not be null" +msgstr "výraz ve FOREACH nesmí být null" + +# výrazu/příkazu +#: pl_exec.c:2069 +#, c-format +msgid "FOREACH expression must yield an array, not type %s" +msgstr "výsledkem výrazu příkazu FOREACH musí být pole, nikoliv %s" + +#: pl_exec.c:2086 +#, c-format +msgid "slice dimension (%d) is out of the valid range 0..%d" +msgstr "dimenze podpole (%d) je mimo validní rozsah 0..%d" + +#: pl_exec.c:2113 +msgid "FOREACH ... SLICE loop variable must be of an array type" +msgstr "FOREACH ... SLICE proměnná cyklu musí být typu pole" + +#: pl_exec.c:2117 +msgid "FOREACH loop variable must not be of an array type" +msgstr "FOREACH proměnná cyklu nesmí být typu pole" + +#: pl_exec.c:2375 gram.y:2844 +msgid "cannot use RETURN NEXT in a non-SETOF function" +msgstr "RETURN NEXT nelze použít ve funkci, která nevrací tabulku" + +#: pl_exec.c:2399 pl_exec.c:2465 +msgid "wrong result type supplied in RETURN NEXT" +msgstr "typ parametru příkazu RETURN NEXT neodpovídá návratovému typu funkce " + +#: pl_exec.c:2421 pl_exec.c:3849 pl_exec.c:4166 pl_exec.c:4201 pl_exec.c:4268 +#: pl_exec.c:4287 pl_exec.c:4355 pl_exec.c:4378 +#, c-format +msgid "record \"%s\" is not assigned yet" +msgstr "proměnné \"%s\" typu record ještě nebyla přiřazena hodnota" + +# tečka na konci +# ok +#: pl_exec.c:2423 pl_exec.c:3851 pl_exec.c:4168 pl_exec.c:4203 pl_exec.c:4270 +#: pl_exec.c:4289 pl_exec.c:4357 pl_exec.c:4380 +msgid "The tuple structure of a not-yet-assigned record is indeterminate." +msgstr "" +"Proměnná typu record, které ještě nebyla přiřazena hodnota, nemá definovanou " +"strukturu." + +#: pl_exec.c:2427 pl_exec.c:2446 +msgid "wrong record type supplied in RETURN NEXT" +msgstr "" +"obsah parametru příkazu RETURN NEXT nelze převést na návratový typ funkce" + +#: pl_exec.c:2488 +msgid "RETURN NEXT must have a parameter" +msgstr "RETURN NEXT musí mít parametr" + +#: pl_exec.c:2519 gram.y:2903 +msgid "cannot use RETURN QUERY in a non-SETOF function" +msgstr "uvnitř funkce, která nevrací tabulku, nelze použít RETURN QUERY" + +#: pl_exec.c:2539 +msgid "structure of query does not match function result type" +msgstr "struktura dotazu neodpovídá návratovému typu funkce" + +#: pl_exec.c:2637 +msgid "RAISE without parameters cannot be used outside an exception handler" +msgstr "RAISE bez parametrů nesmí být použito mimo obsluhu výjimky" + +#: pl_exec.c:2678 +msgid "too few parameters specified for RAISE" +msgstr "příliš málo parametrů příkazu RAISE" + +#: pl_exec.c:2704 +msgid "too many parameters specified for RAISE" +msgstr "příliš mnoho parametrů příkazu RAISE" + +#: pl_exec.c:2724 +msgid "RAISE statement option cannot be null" +msgstr "volitelný parametr příkazu RAISE nesmí být null" + +#: pl_exec.c:2734 pl_exec.c:2743 pl_exec.c:2751 pl_exec.c:2759 +#, c-format +msgid "RAISE option already specified: %s" +msgstr "opakované použití volitelného parametru: %s příkazu RAISE" + +#: pl_exec.c:2795 +#, c-format +msgid "%s" +msgstr "%s" + +#: pl_exec.c:2945 pl_exec.c:3081 pl_exec.c:3260 +msgid "cannot COPY to/from client in PL/pgSQL" +msgstr "v PL/pgSQL nelze použít COPY to/from klient" + +#: pl_exec.c:2949 pl_exec.c:3085 pl_exec.c:3264 +msgid "cannot begin/end transactions in PL/pgSQL" +msgstr "v PL/pgSQL nelze zahájit/ukončit transakci" + +#: pl_exec.c:2950 pl_exec.c:3086 pl_exec.c:3265 +msgid "Use a BEGIN block with an EXCEPTION clause instead." +msgstr "Použijte blok BEGIN .. END s klauzulí EXCEPTION." + +# "nevrací" má trochu jiný význam než "nemůže vracet" +#: pl_exec.c:3109 pl_exec.c:3289 +msgid "INTO used with a command that cannot return data" +msgstr "INTO je použito v příkazu, který nevrací data" + +#: pl_exec.c:3129 pl_exec.c:3309 +msgid "query returned no rows" +msgstr "dotaz nevrátil žádný řádek" + +#: pl_exec.c:3138 pl_exec.c:3318 +msgid "query returned more than one row" +msgstr "dotaz vrátil více než jeden řádek" + +#: pl_exec.c:3152 +msgid "query has no destination for result data" +msgstr "chybí cíl pro výsledek dotazu" + +#: pl_exec.c:3153 +msgid "If you want to discard the results of a SELECT, use PERFORM instead." +msgstr "Pokud nechcete použít výsledek SELECTu, použijte PERFORM." + +# generující? spíš asi "obsahující" nebo jenom "s dynamickým dotazem" +# ok +#: pl_exec.c:3186 pl_exec.c:5929 +msgid "query string argument of EXECUTE is null" +msgstr "textový argument s dynamickým dotazem příkazu EXECUTE je null" + +#: pl_exec.c:3251 +msgid "EXECUTE of SELECT ... INTO is not implemented" +msgstr "EXECUTE příkazu SELECT ... INTO není implementováno" + +#: pl_exec.c:3252 +msgid "" +"You might want to use EXECUTE ... INTO or EXECUTE CREATE TABLE ... AS " +"instead." +msgstr "Možná chcete použít EXECUTE ... INTO nebo EXECUTE CREATE TABLE ... AS." + +# myslí se tím proměnná která se předává kurzoru nebo samotný kurzor? Pokud kurzor, tak asi spíš kurzorová proměnná. +# ok, i kdyz v tom necitim rozdil +#: pl_exec.c:3540 pl_exec.c:3631 +#, c-format +msgid "cursor variable \"%s\" is null" +msgstr "kurzorová proměnná \"%s\" je null" + +#: pl_exec.c:3547 pl_exec.c:3638 +#, c-format +msgid "cursor \"%s\" does not exist" +msgstr "kurzor \"%s\" neexistuje" + +#: pl_exec.c:3561 +msgid "relative or absolute cursor position is null" +msgstr "relativní nebo absolutní pozice kurzoru je null" + +#: pl_exec.c:3702 +#, c-format +msgid "null value cannot be assigned to variable \"%s\" declared NOT NULL" +msgstr "proměnné \"%s\" deklarované jako NOT NULL nelze přiřadit null" + +# hodnotU +#: pl_exec.c:3760 +msgid "cannot assign non-composite value to a row variable" +msgstr "proměnné složeného typu nelze přiřadit jinou než složenou hodnot" + +#: pl_exec.c:3802 +msgid "cannot assign non-composite value to a record variable" +msgstr "proměnné typu record nelze přiřadit jinou než slouženou hodnotu" + +#: pl_exec.c:3973 +#, c-format +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgstr "počet dimenzí pole (%d) přesáhl maxímální povolený počet (%d)" + +#: pl_exec.c:3992 +msgid "subscripted object is not an array" +msgstr "indexovaná proměnná není pole" + +#: pl_exec.c:4015 +msgid "array subscript in assignment must not be null" +msgstr "index pole v přířazovacím příkazu nesmí být null" + +#: pl_exec.c:4493 +#, c-format +msgid "query \"%s\" did not return data" +msgstr "dotaz \"%s\" nevrátil žádná data" + +#: pl_exec.c:4501 +#, c-format +msgid "query \"%s\" returned %d column" +msgid_plural "query \"%s\" returned %d columns" +msgstr[0] "dotaz \"%s\" vrátil %d sloupec" +msgstr[1] "dotaz \"%s\" vrátil %d sloupce" +msgstr[2] "dotaz \"%s\" vrátil %d sloupců" + +#: pl_exec.c:4527 +#, c-format +msgid "query \"%s\" returned more than one row" +msgstr "dotaz \"%s\" vrátil více než jeden řádek" + +#: pl_exec.c:4585 +#, c-format +msgid "query \"%s\" is not a SELECT" +msgstr "dotaz \"%s\" není SELECT" + +#: gram.y:430 +msgid "block label must be placed before DECLARE, not after" +msgstr "návěstí bloku musí být umístěno před klíčové slovo DECLARE, nikoliv za" + +#: gram.y:450 +#, c-format +msgid "collations are not supported by type %s" +msgstr "typ %s nepodporuje collations" + +# překládat RECORD jako "proměnná složeného typu" mi přijde divný (resp. spousta lidí nebude vědět o co jde), ale "záznam" se asi často používá pro řádek tabulky ... +# record neprekladam (je to typ), prekladam row, ktery odpovida castecne zaznamu tabulek, ale take odpovida kompozitnim typum +# o zaznamu jsem take uvazoval, ale prislo mi divny, kdybych napsal "promenna typu record nebo zaznam" ponevadz jsou to pro +# pro mnohe z nas synonyma +#: gram.y:465 +msgid "row or record variable cannot be CONSTANT" +msgstr "" +"proměnná typu record nebo složeného typu nemůže být označena jako konstanta" + +#: gram.y:475 +msgid "row or record variable cannot be NOT NULL" +msgstr "" +"proměnná typu record nebo složeného typu nemůže být označena jako NOT NULL" + +#: gram.y:486 +msgid "default value for row or record variable is not supported" +msgstr "" +"nelze zadat defaultní hodnotu proměnným typu record nebo složeného typu" + +#: gram.y:631 gram.y:657 +#, c-format +msgid "variable \"%s\" does not exist" +msgstr "proměnná \"%s\" neexistuje" + +#: gram.y:675 gram.y:688 +msgid "duplicate declaration" +msgstr "duplicitní deklarace" + +#: gram.y:881 +msgid "unrecognized GET DIAGNOSTICS item" +msgstr "neznámá položka příkazu GET DIAGNOSTICS" + +#: gram.y:892 gram.y:3090 +#, c-format +msgid "\"%s\" is not a scalar variable" +msgstr "\"%s\" není skalární proměnná" + +#: gram.y:1154 gram.y:1347 +msgid "" +"loop variable of loop over rows must be a record or row variable or list of " +"scalar variables" +msgstr "" +"řídící proměnná cyklu musí být typu record nebo složeného typu, případně " +"seznam skalárních proměnných" + +# asi by tam mělo být i to FOR, neplatí to pro všechny cykly +# ok +#: gram.y:1188 +msgid "cursor FOR loop must have only one target variable" +msgstr "cyklus FOR nad kurzorem musí mít pouze jednu cílovou proměnnou" + +#: gram.y:1195 +msgid "cursor FOR loop must use a bound cursor variable" +msgstr "cyklus FOR nad kurzorem musí použít vázanou proměnnou kurzoru" + +#: gram.y:1278 +msgid "integer FOR loop must have only one target variable" +msgstr "celočiselný cyklus FOR musí mít pouze jednu cílovou proměnnou" + +#: gram.y:1314 +msgid "cannot specify REVERSE in query FOR loop" +msgstr "nelze zadat atribut REVERSE v případě cyklu FOR nad dotazem" + +#: gram.y:1461 +msgid "loop variable of FOREACH must be a known variable or list of variables" +msgstr "" +"řídící proměnná(é) cyklu FOREACH musí být existující proměnná, případně " +"seznam existujících proměnných" + +#: gram.y:1513 gram.y:1550 gram.y:1598 gram.y:2540 gram.y:2621 gram.y:2732 +#: gram.y:3365 +msgid "unexpected end of function definition" +msgstr "neočekávaný konec definice funkce" + +#: gram.y:1618 gram.y:1642 gram.y:1654 gram.y:1661 gram.y:1750 gram.y:1758 +#: gram.y:1772 gram.y:1867 gram.y:2048 gram.y:2127 gram.y:2242 gram.y:2821 +#: gram.y:2885 gram.y:3325 gram.y:3346 +msgid "syntax error" +msgstr "syntaktická chyba" + +#: gram.y:1646 gram.y:1648 gram.y:2052 gram.y:2054 +msgid "invalid SQLSTATE code" +msgstr "nevalidní SQLSTATE kód" + +#: gram.y:1814 +msgid "syntax error, expected \"FOR\"" +msgstr "syntaktická chyba, očekává se \"FOR\"" + +#: gram.y:1876 +msgid "FETCH statement cannot return multiple rows" +msgstr "příkaz FETCH nesmí vracet více řádek" + +#: gram.y:1932 +msgid "cursor variable must be a simple variable" +msgstr "proměnná kurzoru musí být skalární proměnná" + +# cursor bych asi nepřekládal, je to přímo název typu, navíc v refcursor to přeloženo není +# kurzor (cursor) neni typ, a refcursor je fakticky varchar - vyhodil bych type +# pripadne "promenna musi byt deklarovana jako kurzor nebo jako refcursor" +#: gram.y:1938 +#, c-format +msgid "variable \"%s\" must be of type cursor or refcursor" +msgstr "proměnná \"%s\" musí být kurzor nebo referencí na kurzor" + +#: gram.y:2106 +msgid "label does not exist" +msgstr "návěstí neexistuje" + +#: gram.y:2213 gram.y:2224 +#, c-format +msgid "\"%s\" is not a known variable" +msgstr "\"%s\" není známou proměnnou" + +#: gram.y:2326 gram.y:2336 gram.y:2464 +msgid "mismatched parentheses" +msgstr "neodpovídající si závorky" + +#: gram.y:2340 +#, c-format +msgid "missing \"%s\" at end of SQL expression" +msgstr "chybějící \"%s\" na konci SQL výrazu" + +#: gram.y:2346 +#, c-format +msgid "missing \"%s\" at end of SQL statement" +msgstr "chybějící \"%s\" na konci SQL příkazu" + +#: gram.y:2363 +msgid "missing expression" +msgstr "chybějící výraz" + +#: gram.y:2365 +msgid "missing SQL statement" +msgstr "chybějící SQL příkaz" + +#: gram.y:2466 +msgid "incomplete data type declaration" +msgstr "neúplná deklarace datového typu" + +#: gram.y:2489 +msgid "missing data type declaration" +msgstr "chybějící deklarace datového typu" + +#: gram.y:2545 +msgid "INTO specified more than once" +msgstr "opakované použití INTO" + +#: gram.y:2713 +msgid "expected FROM or IN" +msgstr "očekáváno FROM nebo IN" + +#: gram.y:2773 +msgid "RETURN cannot have a parameter in function returning set" +msgstr "uvnitř funkce, která vrací tabulku, RETURN nemá parametr" + +#: gram.y:2774 +msgid "Use RETURN NEXT or RETURN QUERY." +msgstr "Použijte RETURN NEXT nebo RETURN QUERY." + +#: gram.y:2782 +msgid "RETURN cannot have a parameter in function with OUT parameters" +msgstr "uvnitř funkce s OUT parametry RETURN nemá parametr" + +#: gram.y:2791 +msgid "RETURN cannot have a parameter in function returning void" +msgstr "uvnitř funkce s návratovou hodnotou typu void RETURN nemá parametr" + +#: gram.y:2809 gram.y:2816 +msgid "RETURN must specify a record or row variable in function returning row" +msgstr "" +"uvnitř funkce, která vrací složenou hodnotu, lze použít RETURN pouze s " +"proměnnou typu record nebo složeného typu" + +#: gram.y:2858 +msgid "RETURN NEXT cannot have a parameter in function with OUT parameters" +msgstr "uvnitř funkce s OUT parametry RETURN NEXT nemá paramet" + +#: gram.y:2873 gram.y:2880 +msgid "" +"RETURN NEXT must specify a record or row variable in function returning row" +msgstr "" +"uvnitř funkce, která vrací složenou hodnotu, lze použít RETURN NEXT pouze s " +"proměnnou typu record nebo složeného typu" + +#: gram.y:2959 +#, c-format +msgid "\"%s\" is declared CONSTANT" +msgstr "\"%s\" je deklarováno jako konstanta" + +#: gram.y:3021 gram.y:3033 +msgid "record or row variable cannot be part of multiple-item INTO list" +msgstr "" +"v seznamu cílových proměnných klauzule INTO není dovoleno použítí proměnné " +"typu record nebo složeného typu" + +#: gram.y:3078 +msgid "too many INTO variables specified" +msgstr "příliš mnoho cílových proměnných v klauzuli INTO" + +#: gram.y:3286 +#, c-format +msgid "end label \"%s\" specified for unlabelled block" +msgstr "použití koncového návěstí \"%s\" k bloku bez návěstí" + +#: gram.y:3293 +#, c-format +msgid "end label \"%s\" differs from block's label \"%s\"" +msgstr "koncové návěstí \"%s\" nesouhlasí s návěstím bloku \"%s\"" + +#: gram.y:3320 +#, c-format +msgid "cursor \"%s\" has no arguments" +msgstr "kurzor \"%s\" je deklarován bez parametrů" + +#: gram.y:3334 +#, c-format +msgid "cursor \"%s\" has arguments" +msgstr "kurzor \"%s\" vyžaduje parametry" + +#: gram.y:3382 +msgid "unrecognized RAISE statement option" +msgstr "neznámý volitelný parametr příkazu RAISE" + +#: gram.y:3386 +msgid "syntax error, expected \"=\"" +msgstr "syntaktická chyba, očekáváno \"=\"" + +#: pl_funcs.c:218 +msgid "statement block" +msgstr "blok" + +#: pl_funcs.c:220 +msgid "assignment" +msgstr "přiřazení" + +#: pl_funcs.c:230 +msgid "FOR with integer loop variable" +msgstr "FOR s celočíselnou řídící proměnnou" + +# možná spíš "FOR nad SELECT dotazem +# zkusim jeste neco jineho" +#: pl_funcs.c:232 +msgid "FOR over SELECT rows" +msgstr "FOR nad SELECT(em)" + +#: pl_funcs.c:234 +msgid "FOR over cursor" +msgstr "FOR nad kurzorem" + +#: pl_funcs.c:236 +msgid "FOREACH over array" +msgstr "FOREACH nad polem" + +#: pl_funcs.c:248 +msgid "SQL statement" +msgstr "SQL příkaz" + +#: pl_funcs.c:250 +msgid "EXECUTE statement" +msgstr "EXECUTE příkaz" + +#: pl_funcs.c:252 +msgid "FOR over EXECUTE statement" +msgstr "FOR nad dynamickým výběrem (FOR over EXECUTE)" + +#: pl_handler.c:60 +msgid "" +"Sets handling of conflicts between PL/pgSQL variable names and table column " +"names." +msgstr "" +"Nastavuje způsob řešení konfliktu mezi názvy PL/pgSQL proměnných a názvy " +"sloupců tabulek." + +#. translator: %s is typically the translation of "syntax error" +#: pl_scanner.c:467 +#, c-format +msgid "%s at end of input" +msgstr "\"%s\" na konci vstupu" + +#. translator: first %s is typically the translation of "syntax error" +#: pl_scanner.c:483 +#, c-format +msgid "%s at or near \"%s\"" +msgstr "\"%s\" u nebo poblíž \"%s\"" + +#~ msgid "GET STACKED DIAGNOSTICS cannot be used outside an exception handler" +#~ msgstr "GET STACKED DIAGNOSTICS nelze použít mimo obsluhu výjimky" + +#~ msgid "diagnostics item %s is not allowed in GET STACKED DIAGNOSTICS" +#~ msgstr "" +#~ "diagnostická položka %s není dostupná v příkazu GET STACKED DIAGNOSTICS" + +#~ msgid "diagnostics item %s is not allowed in GET CURRENT DIAGNOSTICS" +#~ msgstr "" +#~ "diagnostická položka %s není dostupná v příkazu GET CURRENT DIAGNOSTICS" diff --git a/src/pl/plpgsql/src/po/de.po b/src/pl/plpgsql/src/po/de.po index b2716354b7..fd1b63e4db 100644 --- a/src/pl/plpgsql/src/po/de.po +++ b/src/pl/plpgsql/src/po/de.po @@ -3,8 +3,6 @@ # This file is distributed under the same license as the PostgreSQL package. # Peter Eisentraut , 2009 - 2011. # -# pgtranslation Id: plpgsql.po,v 1.5 2009/03/24 07:40:13 petere Exp $ -# # Use these quotes: »%s« # msgid "" diff --git a/src/pl/plpgsql/src/po/es.po b/src/pl/plpgsql/src/po/es.po index e25341b981..74e464fa44 100644 --- a/src/pl/plpgsql/src/po/es.po +++ b/src/pl/plpgsql/src/po/es.po @@ -1,108 +1,118 @@ -# translation of plpgsql-es.po to +# translation of plpgsql.po to # Spanish message translation file for plpgsql # -# Copyright (C) 2008-2010 PostgreSQL Global Development Group +# Copyright (C) 2008-2012 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # -# Álvaro Herrera 2008-2010 +# Álvaro Herrera 2008-2012 # Emanuel Calvo Franco 2008 # Jaime Casanova 2010 # -# pgtranslation Id: plpgsql.po,v 1.11 2010/08/31 18:16:00 alvherre Exp $ -# msgid "" msgstr "" -"Project-Id-Version: plpgsql (PostgreSQL 9.0)\n" +"Project-Id-Version: plpgsql (PostgreSQL 9.1)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-08-31 07:15+0000\n" -"PO-Revision-Date: 2010-08-31 14:15-0400\n" -"Last-Translator: \n" +"POT-Creation-Date: 2013-08-26 19:38+0000\n" +"PO-Revision-Date: 2012-02-21 22:54-0300\n" +"Last-Translator: Álvaro Herrera \n" "Language-Team: PgSQL-es-Ayuda \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: pl_comp.c:422 pl_handler.c:256 +#: pl_comp.c:427 pl_handler.c:266 #, c-format msgid "PL/pgSQL functions cannot accept type %s" msgstr "las funciones PL/pgSQL no pueden aceptar el tipo %s" -#: pl_comp.c:501 +#: pl_comp.c:506 #, c-format msgid "could not determine actual return type for polymorphic function \"%s\"" msgstr "" "no se pudo determinar el verdadero tipo de resultado para la función " "polimórfica «%s»" -#: pl_comp.c:531 +#: pl_comp.c:536 msgid "trigger functions can only be called as triggers" msgstr "" "las funciones de disparador sólo pueden ser invocadas como disparadores" -#: pl_comp.c:535 pl_handler.c:241 +#: pl_comp.c:540 pl_handler.c:251 #, c-format msgid "PL/pgSQL functions cannot return type %s" msgstr "las funciones PL/pgSQL no pueden retornar el tipo %s" -#: pl_comp.c:576 +#: pl_comp.c:583 msgid "trigger functions cannot have declared arguments" msgstr "las funciones de disparador no pueden tener argumentos declarados" -#: pl_comp.c:577 +#: pl_comp.c:584 msgid "" "The arguments of the trigger can be accessed through TG_NARGS and TG_ARGV " "instead." msgstr "" "Los argumentos del disparador pueden accederse usando TG_NARGS y TG_ARGV." -#: pl_comp.c:880 +#: pl_comp.c:912 #, c-format msgid "compilation of PL/pgSQL function \"%s\" near line %d" msgstr "compilación de la función PL/pgSQL «%s» cerca de la línea %d" -#: pl_comp.c:978 +#: pl_comp.c:935 +#, c-format +msgid "parameter name \"%s\" used more than once" +msgstr "el nombre de parámetro «%s» fue usado más de una vez" + +#: pl_comp.c:1045 #, c-format msgid "column reference \"%s\" is ambiguous" msgstr "la referencia a la columna «%s» es ambigua" -#: pl_comp.c:980 +#: pl_comp.c:1047 msgid "It could refer to either a PL/pgSQL variable or a table column." msgstr "" "Podría referirse tanto a una variable PL/pgSQL como a una columna de una " "tabla." -#: pl_comp.c:1690 +#: pl_comp.c:1227 pl_comp.c:1255 pl_exec.c:3870 pl_exec.c:4201 pl_exec.c:4287 +#: pl_exec.c:4378 +#, c-format +msgid "record \"%s\" has no field \"%s\"" +msgstr "el registro «%s» no tiene un campo «%s»" + +#: pl_comp.c:1783 #, c-format msgid "relation \"%s\" does not exist" msgstr "no existe la relación «%s»" -#: pl_comp.c:1722 +#: pl_comp.c:1815 #, c-format msgid "relation \"%s.%s\" does not exist" msgstr "no existe la relación «%s.%s»" -#: pl_comp.c:1804 +#: pl_comp.c:1897 #, c-format msgid "variable \"%s\" has pseudo-type %s" msgstr "la variable «%s» tiene pseudotipo %s" -#: pl_comp.c:1865 +#: pl_comp.c:1959 #, c-format msgid "relation \"%s\" is not a table" msgstr "la relación «%s» no es una tabla" -#: pl_comp.c:2017 +#: pl_comp.c:2119 #, c-format msgid "type \"%s\" is only a shell" msgstr "el tipo «%s» está inconcluso" -#: pl_comp.c:2087 pl_comp.c:2140 +#: pl_comp.c:2192 pl_comp.c:2245 #, c-format msgid "unrecognized exception condition \"%s\"" msgstr "no se reconoce la condición de excepción «%s»" -#: pl_comp.c:2295 +#: pl_comp.c:2403 #, c-format msgid "" "could not determine actual argument type for polymorphic function \"%s\"" @@ -110,360 +120,386 @@ msgstr "" "no se pudo determinar el verdadero tipo de argumento para la función " "polimórfica «%s»" -#: pl_exec.c:236 pl_exec.c:507 +#: pl_exec.c:242 pl_exec.c:517 msgid "during initialization of execution state" msgstr "durante la inicialización del estado de ejecución" -#: pl_exec.c:243 +#: pl_exec.c:249 msgid "while storing call arguments into local variables" msgstr "" "mientras se almacenaban los argumentos de invocación en variables locales" -#: pl_exec.c:298 pl_exec.c:662 +#: pl_exec.c:306 pl_exec.c:674 msgid "during function entry" msgstr "durante el ingreso a la función" -#: pl_exec.c:329 pl_exec.c:693 +#: pl_exec.c:337 pl_exec.c:705 msgid "CONTINUE cannot be used outside a loop" msgstr "CONTINUE no puede usarse fuera de un bucle" -#: pl_exec.c:333 +#: pl_exec.c:341 msgid "control reached end of function without RETURN" msgstr "la ejecución alcanzó el fin de la función sin encontrar RETURN" -#: pl_exec.c:340 +#: pl_exec.c:348 msgid "while casting return value to function's return type" msgstr "" "mientras se hacía la conversión del valor de retorno al tipo de retorno de " "la función" -#: pl_exec.c:353 pl_exec.c:2403 +#: pl_exec.c:361 pl_exec.c:2593 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" -#: pl_exec.c:391 +#: pl_exec.c:399 msgid "returned record type does not match expected record type" msgstr "" "el tipo de registro retornado no coincide con el tipo de registro esperado" -#: pl_exec.c:449 pl_exec.c:701 +#: pl_exec.c:459 pl_exec.c:713 msgid "during function exit" msgstr "durante la salida de la función" -#: pl_exec.c:697 +#: pl_exec.c:709 msgid "control reached end of trigger procedure without RETURN" msgstr "" "la ejecución alcanzó el fin del procedimiento disparador sin encontrar RETURN" -#: pl_exec.c:706 +#: pl_exec.c:718 msgid "trigger procedure cannot return a set" msgstr "los procedimientos disparadores no pueden retornar conjuntos" -#: pl_exec.c:728 +#: pl_exec.c:740 msgid "" "returned row structure does not match the structure of the triggering table" msgstr "" "la estructura de fila retornada no coincide con la estructura de la tabla " "que generó el evento de disparador" -#: pl_exec.c:791 +#: pl_exec.c:803 #, c-format msgid "PL/pgSQL function \"%s\" line %d %s" msgstr "función PL/pgSQL «%s» en la línea %d %s" -#: pl_exec.c:802 +#: pl_exec.c:814 #, c-format msgid "PL/pgSQL function \"%s\" %s" msgstr "función PL/pgSQL «%s» %s" #. translator: last %s is a plpgsql statement type name -#: pl_exec.c:810 +#: pl_exec.c:822 #, c-format msgid "PL/pgSQL function \"%s\" line %d at %s" msgstr "función PL/pgSQL «%s» en la línea %d en %s" -#: pl_exec.c:816 +#: pl_exec.c:828 #, c-format msgid "PL/pgSQL function \"%s\"" msgstr "función PL/pgSQL «%s»" -#: pl_exec.c:924 +#: pl_exec.c:936 msgid "during statement block local variable initialization" msgstr "durante inicialización de variables locales en el bloque de sentencias" -#: pl_exec.c:966 +#: pl_exec.c:978 #, c-format msgid "variable \"%s\" declared NOT NULL cannot default to NULL" msgstr "" "la variable «%s» declarada NOT NULL no puede tener un valor por omisión NULL" -#: pl_exec.c:1016 +#: pl_exec.c:1028 msgid "during statement block entry" msgstr "durante la entrada al bloque de sentencias" -#: pl_exec.c:1037 +#: pl_exec.c:1049 msgid "during statement block exit" msgstr "durante la salida del bloque de sentencias" -#: pl_exec.c:1080 +#: pl_exec.c:1092 msgid "during exception cleanup" msgstr "durante la finalización por excepción" -#: pl_exec.c:1559 +#: pl_exec.c:1569 msgid "case not found" msgstr "caso no encontrado" -#: pl_exec.c:1560 +#: pl_exec.c:1570 msgid "CASE statement is missing ELSE part." msgstr "A la sentencia CASE le falta la parte ELSE." -#: pl_exec.c:1714 +#: pl_exec.c:1724 msgid "lower bound of FOR loop cannot be null" msgstr "el límite inferior de un ciclo FOR no puede ser null" -#: pl_exec.c:1729 +#: pl_exec.c:1739 msgid "upper bound of FOR loop cannot be null" msgstr "el límite superior de un ciclo FOR no puede ser null" -#: pl_exec.c:1746 +#: pl_exec.c:1756 msgid "BY value of FOR loop cannot be null" msgstr "el valor BY de un ciclo FOR no puede ser null" -#: pl_exec.c:1752 +#: pl_exec.c:1762 msgid "BY value of FOR loop must be greater than zero" msgstr "el valor BY de un ciclo FOR debe ser mayor que cero" -#: pl_exec.c:1923 pl_exec.c:3196 +#: pl_exec.c:1932 pl_exec.c:3405 #, c-format msgid "cursor \"%s\" already in use" msgstr "el cursor «%s» ya está en uso" -#: pl_exec.c:1946 pl_exec.c:3258 +#: pl_exec.c:1955 pl_exec.c:3467 msgid "arguments given for cursor without arguments" msgstr "se dieron argumentos a un cursor sin argumentos" -#: pl_exec.c:1965 pl_exec.c:3277 +#: pl_exec.c:1974 pl_exec.c:3486 msgid "arguments required for cursor" msgstr "se requieren argumentos para el cursor" -#: pl_exec.c:2187 gram.y:2744 +#: pl_exec.c:2062 +msgid "FOREACH expression must not be null" +msgstr "la expresión FOREACH no debe ser nula" + +#: pl_exec.c:2068 +#, c-format +msgid "FOREACH expression must yield an array, not type %s" +msgstr "una expresión FOREACH debe retornar un array, no tipo %s" + +#: pl_exec.c:2085 +#, c-format +msgid "slice dimension (%d) is out of the valid range 0..%d" +msgstr "la dimensión del slice (%d) está fuera de rango 0..%d" + +#: pl_exec.c:2112 +msgid "FOREACH ... SLICE loop variable must be of an array type" +msgstr "las variables de bucles FOREACH ... SLICE deben ser de un tipo array" + +#: pl_exec.c:2116 +msgid "FOREACH loop variable must not be of an array type" +msgstr "la variable de bucle FOREACH no debe ser de tipo array" + +#: pl_exec.c:2374 gram.y:2844 msgid "cannot use RETURN NEXT in a non-SETOF function" msgstr "no se puede usar RETURN NEXT en una función que no es SETOF" -#: pl_exec.c:2211 pl_exec.c:2277 +#: pl_exec.c:2398 pl_exec.c:2466 msgid "wrong result type supplied in RETURN NEXT" msgstr "se pasó un tipo incorrecto de resultado a RETURN NEXT" -#: pl_exec.c:2233 pl_exec.c:3650 pl_exec.c:3956 pl_exec.c:3990 pl_exec.c:4052 -#: pl_exec.c:4071 pl_exec.c:4108 +#: pl_exec.c:2421 pl_exec.c:3857 pl_exec.c:4159 pl_exec.c:4194 pl_exec.c:4261 +#: pl_exec.c:4280 pl_exec.c:4348 pl_exec.c:4371 #, c-format msgid "record \"%s\" is not assigned yet" msgstr "el registro «%s» no ha sido asignado aún" -#: pl_exec.c:2235 pl_exec.c:3652 pl_exec.c:3958 pl_exec.c:3992 pl_exec.c:4054 -#: pl_exec.c:4073 pl_exec.c:4110 +#: pl_exec.c:2423 pl_exec.c:3859 pl_exec.c:4161 pl_exec.c:4196 pl_exec.c:4263 +#: pl_exec.c:4282 pl_exec.c:4350 pl_exec.c:4373 msgid "The tuple structure of a not-yet-assigned record is indeterminate." msgstr "" "La estructura de fila de un registro aún no asignado no está determinado." -#: pl_exec.c:2239 pl_exec.c:2258 +#: pl_exec.c:2427 pl_exec.c:2447 msgid "wrong record type supplied in RETURN NEXT" msgstr "se pasó un tipo de registro incorrecto a RETURN NEXT" -#: pl_exec.c:2300 +#: pl_exec.c:2488 msgid "RETURN NEXT must have a parameter" msgstr "RETURN NEXT debe tener un parámetro" -#: pl_exec.c:2331 gram.y:2803 +#: pl_exec.c:2521 gram.y:2903 msgid "cannot use RETURN QUERY in a non-SETOF function" msgstr "" "no se puede usar RETURN QUERY en una función que no ha sido declarada SETOF" -#: pl_exec.c:2351 +#: pl_exec.c:2541 msgid "structure of query does not match function result type" msgstr "" "la estructura de la consulta no coincide con el tipo del resultado de la " "función" -#: pl_exec.c:2449 +#: pl_exec.c:2639 msgid "RAISE without parameters cannot be used outside an exception handler" msgstr "" "RAISE sin parámetros no puede ser usado fuera de un manejador de excepción" -#: pl_exec.c:2490 +#: pl_exec.c:2680 msgid "too few parameters specified for RAISE" msgstr "se especificaron muy pocos parámetros a RAISE" -#: pl_exec.c:2516 +#: pl_exec.c:2708 msgid "too many parameters specified for RAISE" msgstr "se especificaron demasiados parámetros a RAISE" -#: pl_exec.c:2536 +#: pl_exec.c:2728 msgid "RAISE statement option cannot be null" msgstr "la opción de sentencia en RAISE no puede ser null" -#: pl_exec.c:2546 pl_exec.c:2555 pl_exec.c:2563 pl_exec.c:2571 +#: pl_exec.c:2738 pl_exec.c:2747 pl_exec.c:2755 pl_exec.c:2763 #, c-format msgid "RAISE option already specified: %s" msgstr "la opción de RAISE ya se especificó: %s" -#: pl_exec.c:2606 pl_exec.c:2607 +#: pl_exec.c:2799 #, c-format msgid "%s" msgstr "%s" -#: pl_exec.c:2757 pl_exec.c:3061 +#: pl_exec.c:2949 pl_exec.c:3085 pl_exec.c:3268 msgid "cannot COPY to/from client in PL/pgSQL" msgstr "no se puede ejecutar COPY desde/a un cliente en PL/pgSQL" -#: pl_exec.c:2761 pl_exec.c:3065 +#: pl_exec.c:2953 pl_exec.c:3089 pl_exec.c:3272 msgid "cannot begin/end transactions in PL/pgSQL" msgstr "no se pueden iniciar o terminar transacciones en PL/pgSQL" -#: pl_exec.c:2762 pl_exec.c:3066 +#: pl_exec.c:2954 pl_exec.c:3090 pl_exec.c:3273 msgid "Use a BEGIN block with an EXCEPTION clause instead." msgstr "Utilice un bloque BEGIN con una cláusula EXCEPTION." -#: pl_exec.c:2910 pl_exec.c:3090 +#: pl_exec.c:3113 pl_exec.c:3297 msgid "INTO used with a command that cannot return data" msgstr "INTO es utilizado con una orden que no puede retornar datos" -#: pl_exec.c:2930 pl_exec.c:3110 +#: pl_exec.c:3133 pl_exec.c:3317 msgid "query returned no rows" msgstr "la consulta no regresó filas" -#: pl_exec.c:2939 pl_exec.c:3119 +#: pl_exec.c:3142 pl_exec.c:3326 msgid "query returned more than one row" msgstr "la consulta regresó más de una fila" -#: pl_exec.c:2953 +#: pl_exec.c:3157 msgid "query has no destination for result data" msgstr "la consulta no tiene un destino para los datos de resultado" -#: pl_exec.c:2954 +#: pl_exec.c:3158 msgid "If you want to discard the results of a SELECT, use PERFORM instead." msgstr "Si quiere descartar los resultados de un SELECT, utilice PERFORM." -#: pl_exec.c:2987 pl_exec.c:5610 +#: pl_exec.c:3191 pl_exec.c:5949 msgid "query string argument of EXECUTE is null" msgstr "el argumento de consulta a ejecutar en EXECUTE es null" -#: pl_exec.c:3052 +#: pl_exec.c:3259 msgid "EXECUTE of SELECT ... INTO is not implemented" msgstr "no está implementado EXECUTE de un SELECT ... INTO" -#: pl_exec.c:3053 -msgid "You might want to use EXECUTE ... INTO instead." -msgstr "Puede desear usar EXECUTE ... INTO en su lugar." +#: pl_exec.c:3260 +msgid "" +"You might want to use EXECUTE ... INTO or EXECUTE CREATE TABLE ... AS " +"instead." +msgstr "" +"Puede desear usar EXECUTE ... INTO o EXECUTE CREATE TABLE ... AS en su lugar." -#: pl_exec.c:3341 pl_exec.c:3432 +#: pl_exec.c:3550 pl_exec.c:3642 #, c-format msgid "cursor variable \"%s\" is null" msgstr "variable cursor «%s» es null" -#: pl_exec.c:3348 pl_exec.c:3439 +#: pl_exec.c:3557 pl_exec.c:3649 #, c-format msgid "cursor \"%s\" does not exist" msgstr "no existe el cursor «%s»" -#: pl_exec.c:3362 +#: pl_exec.c:3571 msgid "relative or absolute cursor position is null" msgstr "la posición relativa o absoluta del cursor es null" -#: pl_exec.c:3503 +#: pl_exec.c:3716 #, c-format msgid "null value cannot be assigned to variable \"%s\" declared NOT NULL" msgstr "" -"no puede asignarse un valor null a la variable «%s» que fue declarada NOT NULL" +"no puede asignarse un valor null a la variable «%s» que fue declarada NOT " +"NULL" -#: pl_exec.c:3561 +#: pl_exec.c:3769 msgid "cannot assign non-composite value to a row variable" msgstr "no se puede asignar un valor no compuesto a una variable de tipo row" -#: pl_exec.c:3603 +#: pl_exec.c:3811 msgid "cannot assign non-composite value to a record variable" msgstr "" "no se puede asignar un valor no compuesto a una variable de tipo record" -#: pl_exec.c:3663 pl_exec.c:3997 pl_exec.c:4078 pl_exec.c:4115 -#, c-format -msgid "record \"%s\" has no field \"%s\"" -msgstr "el registro «%s» no tiene un campo «%s»" - -#: pl_exec.c:3773 +#: pl_exec.c:3972 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "" "el número de dimensiones del array (%d) excede el máximo permitido (%d)" -#: pl_exec.c:3787 +#: pl_exec.c:3991 msgid "subscripted object is not an array" msgstr "el objeto al que se le puso un subíndice no es un array" -#: pl_exec.c:3810 +#: pl_exec.c:4014 msgid "array subscript in assignment must not be null" msgstr "subíndice de array en asignación no puede ser null" -#: pl_exec.c:4206 +#: pl_exec.c:4486 #, c-format msgid "query \"%s\" did not return data" msgstr "la consulta «%s» no retornó datos" -#: pl_exec.c:4214 +#: pl_exec.c:4494 #, c-format msgid "query \"%s\" returned %d column" msgid_plural "query \"%s\" returned %d columns" msgstr[0] "la consulta «%s» retornó %d columna" msgstr[1] "la consulta «%s» retornó %d columnas" -#: pl_exec.c:4240 +#: pl_exec.c:4520 #, c-format msgid "query \"%s\" returned more than one row" msgstr "la consulta «%s» retornó más de una fila" -#: pl_exec.c:4298 +#: pl_exec.c:4578 #, c-format msgid "query \"%s\" is not a SELECT" msgstr "la consulta «%s» no es una orden SELECT" -#: gram.y:423 +#: gram.y:430 msgid "block label must be placed before DECLARE, not after" msgstr "etiqueta de bloque debe estar antes de DECLARE, no después" -#: gram.y:441 +#: gram.y:450 +#, c-format +msgid "collations are not supported by type %s" +msgstr "los ordenamientos (collate) no están soportados por el tipo %s" + +#: gram.y:465 msgid "row or record variable cannot be CONSTANT" msgstr "variable de tipo row o record no puede ser CONSTANT" -#: gram.y:451 +#: gram.y:475 msgid "row or record variable cannot be NOT NULL" msgstr "variable de tipo row o record no puede ser NOT NULL" -#: gram.y:462 +#: gram.y:486 msgid "default value for row or record variable is not supported" msgstr "" "el valor por omisión de una variable de tipo row o record no está soportado" -#: gram.y:606 gram.y:632 +#: gram.y:631 gram.y:657 #, c-format msgid "variable \"%s\" does not exist" msgstr "no existe la variable «%s»" -#: gram.y:650 gram.y:663 +#: gram.y:675 gram.y:688 msgid "duplicate declaration" msgstr "declaración duplicada" -#: gram.y:841 +#: gram.y:881 msgid "unrecognized GET DIAGNOSTICS item" msgstr "elemento de GET DIAGNOSTICS no reconocido" -#: gram.y:852 gram.y:2990 +#: gram.y:892 gram.y:3090 #, c-format msgid "\"%s\" is not a scalar variable" msgstr "«%s» no es una variable escalar" -#: gram.y:1114 gram.y:1306 +#: gram.y:1154 gram.y:1347 msgid "" "loop variable of loop over rows must be a record or row variable or list of " "scalar variables" @@ -471,209 +507,219 @@ msgstr "" "la variable de bucle de un bucle sobre filas debe ser una variable de tipo " "record o row o una lista de variables escalares" -#: gram.y:1148 +#: gram.y:1188 msgid "cursor FOR loop must have only one target variable" msgstr "un bucle FOR de un cursor debe tener sólo una variable de destino" -#: gram.y:1155 +#: gram.y:1195 msgid "cursor FOR loop must use a bound cursor variable" msgstr "un bucle FOR en torno a un cursor debe usar un cursor enlazado (bound)" -#: gram.y:1238 +#: gram.y:1278 msgid "integer FOR loop must have only one target variable" msgstr "" "un bucle FOR de un número entero debe tener sólo una variable de destino" -#: gram.y:1273 +#: gram.y:1314 msgid "cannot specify REVERSE in query FOR loop" msgstr "no se puede especificar REVERSE en un bucle FOR de una consulta" -#: gram.y:1420 gram.y:1457 gram.y:1505 gram.y:2440 gram.y:2521 gram.y:2632 -#: gram.y:3264 +#: gram.y:1461 +msgid "loop variable of FOREACH must be a known variable or list of variables" +msgstr "" +"la variable de bucle de FOREACH debe ser una variable conocida o una lista " +"de variables conocidas" + +#: gram.y:1513 gram.y:1550 gram.y:1598 gram.y:2540 gram.y:2621 gram.y:2732 +#: gram.y:3365 msgid "unexpected end of function definition" msgstr "fin inesperado de la definición de la función" -#: gram.y:1525 gram.y:1549 gram.y:1561 gram.y:1568 gram.y:1657 gram.y:1665 -#: gram.y:1679 gram.y:1774 gram.y:1951 gram.y:2030 gram.y:2143 gram.y:2721 -#: gram.y:2785 gram.y:3224 gram.y:3245 +#: gram.y:1618 gram.y:1642 gram.y:1654 gram.y:1661 gram.y:1750 gram.y:1758 +#: gram.y:1772 gram.y:1867 gram.y:2048 gram.y:2127 gram.y:2242 gram.y:2821 +#: gram.y:2885 gram.y:3325 gram.y:3346 msgid "syntax error" msgstr "error de sintaxis" -#: gram.y:1553 gram.y:1555 gram.y:1955 gram.y:1957 +#: gram.y:1646 gram.y:1648 gram.y:2052 gram.y:2054 msgid "invalid SQLSTATE code" msgstr "código SQLSTATE no válido" -#: gram.y:1721 +#: gram.y:1814 msgid "syntax error, expected \"FOR\"" msgstr "error de sintaxis, se esperaba «FOR»" -#: gram.y:1783 +#: gram.y:1876 msgid "FETCH statement cannot return multiple rows" msgstr "la sentencia FETCH no puede retornar múltiples filas" -#: gram.y:1839 +#: gram.y:1932 msgid "cursor variable must be a simple variable" msgstr "variable de cursor debe ser una variable simple" -#: gram.y:1845 +#: gram.y:1938 #, c-format msgid "variable \"%s\" must be of type cursor or refcursor" msgstr "la variable «%s» debe ser de tipo cursor o refcursor" -#: gram.y:2009 +#: gram.y:2106 msgid "label does not exist" msgstr "la etiqueta no existe" -#: gram.y:2114 gram.y:2125 +#: gram.y:2213 gram.y:2224 #, c-format msgid "\"%s\" is not a known variable" msgstr "«%s» no es una variable conocida" -#: gram.y:2227 gram.y:2237 gram.y:2365 +#: gram.y:2326 gram.y:2336 gram.y:2464 msgid "mismatched parentheses" msgstr "no coinciden los paréntesis" -#: gram.y:2241 +#: gram.y:2340 #, c-format msgid "missing \"%s\" at end of SQL expression" msgstr "falta «%s» al final de la expresión SQL" -#: gram.y:2247 +#: gram.y:2346 #, c-format msgid "missing \"%s\" at end of SQL statement" msgstr "falta «%s» al final de la sentencia SQL" -#: gram.y:2264 +#: gram.y:2363 msgid "missing expression" msgstr "expresión faltante" -#: gram.y:2266 +#: gram.y:2365 msgid "missing SQL statement" msgstr "sentencia SQL faltante" -#: gram.y:2367 +#: gram.y:2466 msgid "incomplete data type declaration" msgstr "declaración de tipo de dato incompleta" -#: gram.y:2389 +#: gram.y:2489 msgid "missing data type declaration" msgstr "declaración de tipo de dato faltante" -#: gram.y:2445 +#: gram.y:2545 msgid "INTO specified more than once" msgstr "INTO fue especificado más de una vez" -#: gram.y:2613 +#: gram.y:2713 msgid "expected FROM or IN" msgstr "se espera FROM o IN" -#: gram.y:2673 +#: gram.y:2773 msgid "RETURN cannot have a parameter in function returning set" msgstr "" "RETURN no puede tener un parámetro en una función que retorna un conjunto" -#: gram.y:2674 +#: gram.y:2774 msgid "Use RETURN NEXT or RETURN QUERY." msgstr "Use RETURN NEXT o RETURN QUERY." -#: gram.y:2682 +#: gram.y:2782 msgid "RETURN cannot have a parameter in function with OUT parameters" msgstr "RETURN no puede tener parámetros en una función con parámetros OUT" -#: gram.y:2691 +#: gram.y:2791 msgid "RETURN cannot have a parameter in function returning void" msgstr "RETURN no puede tener parámetro en una función que retorna void" -#: gram.y:2709 gram.y:2716 +#: gram.y:2809 gram.y:2816 msgid "RETURN must specify a record or row variable in function returning row" msgstr "" "RETURN debe especificar una variable de tipo record o row en una función que " "retorna una fila" -#: gram.y:2758 +#: gram.y:2858 msgid "RETURN NEXT cannot have a parameter in function with OUT parameters" msgstr "" "RETURN NEXT no puede tener parámetros en una función con parámetros OUT" -#: gram.y:2773 gram.y:2780 +#: gram.y:2873 gram.y:2880 msgid "" "RETURN NEXT must specify a record or row variable in function returning row" msgstr "" "RETURN NEXT debe especificar una variable tipo record o row en una función " "que retorna una fila" -#: gram.y:2859 +#: gram.y:2959 #, c-format msgid "\"%s\" is declared CONSTANT" msgstr "«%s» esta declarada como CONSTANT" -#: gram.y:2921 gram.y:2933 +#: gram.y:3021 gram.y:3033 msgid "record or row variable cannot be part of multiple-item INTO list" msgstr "" "una variable de tipo record o row no puede ser parte de una lista INTO de " "múltiples elementos" -#: gram.y:2978 +#: gram.y:3078 msgid "too many INTO variables specified" msgstr "se especificaron demasiadas variables INTO" -#: gram.y:3185 +#: gram.y:3286 #, c-format msgid "end label \"%s\" specified for unlabelled block" msgstr "etiqueta de término «%s» especificada para un bloque sin etiqueta" -#: gram.y:3192 +#: gram.y:3293 #, c-format msgid "end label \"%s\" differs from block's label \"%s\"" msgstr "etiqueta de término «%s» difiere de la etiqueta de bloque «%s»" -#: gram.y:3219 +#: gram.y:3320 #, c-format msgid "cursor \"%s\" has no arguments" msgstr "el cursor «%s» no tiene argumentos" -#: gram.y:3233 +#: gram.y:3334 #, c-format msgid "cursor \"%s\" has arguments" msgstr "el cursor «%s» tiene argumentos" -#: gram.y:3281 +#: gram.y:3382 msgid "unrecognized RAISE statement option" msgstr "no se reconoce la opción de sentencia RAISE" -#: gram.y:3285 +#: gram.y:3386 msgid "syntax error, expected \"=\"" msgstr "error de sintaxis, se esperaba «=»" -#: pl_funcs.c:216 +#: pl_funcs.c:218 msgid "statement block" msgstr "bloque de sentencias" -#: pl_funcs.c:218 +#: pl_funcs.c:220 msgid "assignment" msgstr "asignación" -#: pl_funcs.c:228 +#: pl_funcs.c:230 msgid "FOR with integer loop variable" msgstr "bucle FOR con variable entera" -#: pl_funcs.c:230 +#: pl_funcs.c:232 msgid "FOR over SELECT rows" msgstr "bucle FOR en torno a filas de un SELECT" -#: pl_funcs.c:232 +#: pl_funcs.c:234 msgid "FOR over cursor" msgstr "bucle FOR en torno a un cursor" -#: pl_funcs.c:244 +#: pl_funcs.c:236 +msgid "FOREACH over array" +msgstr "FOREACH en torno a un array" + +#: pl_funcs.c:248 msgid "SQL statement" msgstr "sentencia SQL" -#: pl_funcs.c:246 +#: pl_funcs.c:250 msgid "EXECUTE statement" msgstr "sentencia EXECUTE" -#: pl_funcs.c:248 +#: pl_funcs.c:252 msgid "FOR over EXECUTE statement" msgstr "bucle FOR en torno a una sentencia EXECUTE" @@ -686,13 +732,13 @@ msgstr "" "nombres de columnas de tablas." #. translator: %s is typically the translation of "syntax error" -#: pl_scanner.c:463 +#: pl_scanner.c:467 #, c-format msgid "%s at end of input" msgstr "%s al final de la entrada" #. translator: first %s is typically the translation of "syntax error" -#: pl_scanner.c:479 +#: pl_scanner.c:483 #, c-format msgid "%s at or near \"%s\"" msgstr "%s en o cerca de «%s»" diff --git a/src/pl/plpgsql/src/po/fr.po b/src/pl/plpgsql/src/po/fr.po index 8336dd787b..6258db25f1 100644 --- a/src/pl/plpgsql/src/po/fr.po +++ b/src/pl/plpgsql/src/po/fr.po @@ -1,8 +1,6 @@ # translation of plpgsql.po to fr_fr # french message translation file for plpgsql # -# $PostgreSQL$ -# # Use these quotes: � %s � # Guillaume Lelarge , 2009. # @@ -10,725 +8,768 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 8.4\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-06-29 21:15+0000\n" -"PO-Revision-Date: 2010-06-29 23:32+0100\n" +"POT-Creation-Date: 2011-06-13 14:52+0000\n" +"PO-Revision-Date: 2011-06-13 17:57+0100\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: French \n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: pl_comp.c:422 -#: pl_handler.c:256 +#: pl_comp.c:427 +#: pl_handler.c:266 #, c-format msgid "PL/pgSQL functions cannot accept type %s" msgstr "les fonctions PL/pgsql ne peuvent pas accepter le type %s" -#: pl_comp.c:501 +#: pl_comp.c:506 #, c-format msgid "could not determine actual return type for polymorphic function \"%s\"" msgstr "" "n'a pas pu d�terminer le type de retour actuel pour la fonction\n" "polymorphique � %s �" -#: pl_comp.c:531 +#: pl_comp.c:536 msgid "trigger functions can only be called as triggers" msgstr "les fonctions triggers peuvent seulement �tre appel�es par des triggers" -#: pl_comp.c:535 -#: pl_handler.c:241 +#: pl_comp.c:540 +#: pl_handler.c:251 #, c-format msgid "PL/pgSQL functions cannot return type %s" msgstr "les fonctions PL/pgsql ne peuvent pas renvoyer le type %s" -#: pl_comp.c:576 +#: pl_comp.c:583 msgid "trigger functions cannot have declared arguments" msgstr "les fonctions triggers ne peuvent pas avoir des arguments d�clar�s" -#: pl_comp.c:577 +#: pl_comp.c:584 msgid "The arguments of the trigger can be accessed through TG_NARGS and TG_ARGV instead." msgstr "" "Les arguments du trigger peuvent �tre acc�d�s via TG_NARGS et TG_ARGV �\n" "la place." -#: pl_comp.c:880 +#: pl_comp.c:912 #, c-format msgid "compilation of PL/pgSQL function \"%s\" near line %d" msgstr "compilation de la fonction PL/pgsql � %s � pr�s de la ligne %d" -#: pl_comp.c:978 +#: pl_comp.c:935 +#, c-format +msgid "parameter name \"%s\" used more than once" +msgstr "le nom du param�tre � %s � est utilis� plus d'une fois" + +#: pl_comp.c:1045 #, c-format msgid "column reference \"%s\" is ambiguous" msgstr "la r�f�rence � la colonne � %s � est ambigu" -#: pl_comp.c:980 +#: pl_comp.c:1047 msgid "It could refer to either a PL/pgSQL variable or a table column." msgstr "" "Cela pourrait faire r�f�rence � une variable PL/pgsql ou � la colonne d'une\n" "table." -#: pl_comp.c:1690 +#: pl_comp.c:1227 +#: pl_comp.c:1255 +#: pl_exec.c:3862 +#: pl_exec.c:4208 +#: pl_exec.c:4294 +#: pl_exec.c:4385 +#, c-format +msgid "record \"%s\" has no field \"%s\"" +msgstr "l'enregistrement � %s � n'a pas de champs � %s �" + +#: pl_comp.c:1782 #, c-format msgid "relation \"%s\" does not exist" msgstr "la relation � %s � n'existe pas" -#: pl_comp.c:1722 +#: pl_comp.c:1814 #, c-format msgid "relation \"%s.%s\" does not exist" msgstr "la relation � %s.%s � n'existe pas" -#: pl_comp.c:1804 +#: pl_comp.c:1896 #, c-format msgid "variable \"%s\" has pseudo-type %s" msgstr "la variable � %s � a le pseudo-type %s" -#: pl_comp.c:1865 +#: pl_comp.c:1957 #, c-format msgid "relation \"%s\" is not a table" msgstr "la relation � %s � n'est pas une table" -#: pl_comp.c:2017 +#: pl_comp.c:2117 #, c-format msgid "type \"%s\" is only a shell" msgstr "le type � %s � est seulement un shell" -#: pl_comp.c:2087 -#: pl_comp.c:2140 +#: pl_comp.c:2190 +#: pl_comp.c:2243 #, c-format msgid "unrecognized exception condition \"%s\"" msgstr "condition d'exception non reconnue � %s �" -#: pl_comp.c:2295 +#: pl_comp.c:2401 #, c-format msgid "could not determine actual argument type for polymorphic function \"%s\"" msgstr "" "n'a pas pu d�terminer le type d'argument actuel pour la fonction\n" "polymorphique � %s �" -#: pl_exec.c:236 -#: pl_exec.c:511 +#: pl_exec.c:239 +#: pl_exec.c:510 msgid "during initialization of execution state" msgstr "durant l'initialisation de l'�tat de la fonction" -#: pl_exec.c:243 +#: pl_exec.c:246 msgid "while storing call arguments into local variables" msgstr "lors du stockage des arguments dans les variables locales" -#: pl_exec.c:298 -#: pl_exec.c:666 +#: pl_exec.c:301 +#: pl_exec.c:667 msgid "during function entry" msgstr "durant l'entr�e d'une fonction" -#: pl_exec.c:329 -#: pl_exec.c:697 +#: pl_exec.c:332 +#: pl_exec.c:698 msgid "CONTINUE cannot be used outside a loop" msgstr "CONTINUE ne peut pas �tre utilis� � l'ext�rieur d'une boucle" -#: pl_exec.c:333 -#: pl_exec.c:701 -msgid "RAISE without parameters cannot be used outside an exception handler" -msgstr "" -"RAISE sans param�tre ne peut pas �tre utilis� sans un gestionnaire\n" -"d'exception" - -#: pl_exec.c:337 +#: pl_exec.c:336 msgid "control reached end of function without RETURN" msgstr "le contr�le a atteint la fin de la fonction sans RETURN" -#: pl_exec.c:344 +#: pl_exec.c:343 msgid "while casting return value to function's return type" msgstr "lors de la conversion de la valeur de retour au type de retour de la fonction" -#: pl_exec.c:357 -#: pl_exec.c:2409 +#: pl_exec.c:356 +#: pl_exec.c:2591 msgid "set-valued function called in context that cannot accept a set" msgstr "" "fonction renvoyant un ensemble appel�e dans un contexte qui ne peut pas\n" "accepter un ensemble" -#: pl_exec.c:395 +#: pl_exec.c:394 msgid "returned record type does not match expected record type" msgstr "" "le type d'enregistrement renvoy� ne correspond pas au type d'enregistrement\n" "attendu" -#: pl_exec.c:453 -#: pl_exec.c:709 +#: pl_exec.c:452 +#: pl_exec.c:706 msgid "during function exit" msgstr "lors de la sortie de la fonction" -#: pl_exec.c:705 +#: pl_exec.c:702 msgid "control reached end of trigger procedure without RETURN" msgstr "le contr�le a atteint la fin de la proc�dure trigger sans RETURN" -#: pl_exec.c:714 +#: pl_exec.c:711 msgid "trigger procedure cannot return a set" msgstr "la proc�dure trigger ne peut pas renvoyer un ensemble" -#: pl_exec.c:736 +#: pl_exec.c:733 msgid "returned row structure does not match the structure of the triggering table" msgstr "" "la structure de ligne renvoy�e ne correspond pas � la structure de la table\n" "du trigger" -#: pl_exec.c:799 +#: pl_exec.c:796 #, c-format msgid "PL/pgSQL function \"%s\" line %d %s" msgstr "fonction PL/pgsql � %s �, ligne %d, %s" -#: pl_exec.c:810 +#: pl_exec.c:807 #, c-format msgid "PL/pgSQL function \"%s\" %s" msgstr "fonction PL/pgsql � %s �, %s" #. translator: last %s is a plpgsql statement type name -#: pl_exec.c:818 +#: pl_exec.c:815 #, c-format msgid "PL/pgSQL function \"%s\" line %d at %s" msgstr "fonction PL/pgsql � %s �, ligne %d � %s" -#: pl_exec.c:824 +#: pl_exec.c:821 #, c-format msgid "PL/pgSQL function \"%s\"" msgstr "fonction PL/pgsql � %s �" -#: pl_exec.c:932 +#: pl_exec.c:929 msgid "during statement block local variable initialization" msgstr "lors de l'initialisation de variables locales du bloc d'instructions" -#: pl_exec.c:974 +#: pl_exec.c:971 #, c-format msgid "variable \"%s\" declared NOT NULL cannot default to NULL" msgstr "la variable � %s � d�clar�e NOT NULL ne peut pas valoir NULL par d�faut" -#: pl_exec.c:1023 +#: pl_exec.c:1021 msgid "during statement block entry" msgstr "lors de l'entr�e dans le bloc d'instructions" -#: pl_exec.c:1044 +#: pl_exec.c:1042 msgid "during statement block exit" msgstr "lors de la sortie du bloc d'instructions" -#: pl_exec.c:1087 +#: pl_exec.c:1085 msgid "during exception cleanup" msgstr "lors du nettoyage de l'exception" -#: pl_exec.c:1553 +#: pl_exec.c:1570 msgid "case not found" msgstr "case introuvable" -#: pl_exec.c:1554 +#: pl_exec.c:1571 msgid "CASE statement is missing ELSE part." msgstr "l'instruction CASE n'a pas la partie ELSE." -#: pl_exec.c:1710 +#: pl_exec.c:1725 msgid "lower bound of FOR loop cannot be null" msgstr "la limite inf�rieure de la boucle FOR ne peut pas �tre NULL" -#: pl_exec.c:1725 +#: pl_exec.c:1740 msgid "upper bound of FOR loop cannot be null" msgstr "la limite sup�rieure de la boucle FOR ne peut pas �tre NULL" -#: pl_exec.c:1742 +#: pl_exec.c:1757 msgid "BY value of FOR loop cannot be null" msgstr "la valeur BY d'une boucle FOR ne peut pas �tre NULL" -#: pl_exec.c:1748 +#: pl_exec.c:1763 msgid "BY value of FOR loop must be greater than zero" msgstr "la valeur BY d'une boucle FOR doit �tre plus grande que z�ro" -#: pl_exec.c:1920 -#: pl_exec.c:3191 +#: pl_exec.c:1933 +#: pl_exec.c:3395 #, c-format msgid "cursor \"%s\" already in use" msgstr "curseur � %s � d�j� en cours d'utilisation" -#: pl_exec.c:1943 -#: pl_exec.c:3253 +#: pl_exec.c:1956 +#: pl_exec.c:3457 msgid "arguments given for cursor without arguments" msgstr "arguments donn�s pour le curseur sans arguments" -#: pl_exec.c:1962 -#: pl_exec.c:3272 +#: pl_exec.c:1975 +#: pl_exec.c:3476 msgid "arguments required for cursor" msgstr "arguments requis pour le curseur" -#: pl_exec.c:2014 -#: pl_exec.c:4423 +#: pl_exec.c:2063 +msgid "FOREACH expression must not be null" +msgstr "l'expression FOREACH ne doit pas �tre NULL" + +#: pl_exec.c:2069 #, c-format -msgid "cursor \"%s\" closed unexpectedly" -msgstr "le curseur � %s � a �t� ferm� de fa�on inattendu" +msgid "FOREACH expression must yield an array, not type %s" +msgstr "l'expression FOREACH doit renvoyer un tableau, pas un type %s" + +#: pl_exec.c:2086 +#, c-format +msgid "slice dimension (%d) is out of the valid range 0..%d" +msgstr "la dimension de la partie (%d) est en dehors des valeurs valides (0..%d)" + +#: pl_exec.c:2113 +msgid "FOREACH ... SLICE loop variable must be of an array type" +msgstr "la variable d'une boucle FOREACH ... SLICE doit �tre d'un type tableau" + +#: pl_exec.c:2117 +msgid "FOREACH loop variable must not be of an array type" +msgstr "la valeur d'une boucle FOREACH ne doit pas �tre de type tableau" -#: pl_exec.c:2193 -#: gram.y:2729 +#: pl_exec.c:2375 +#: gram.y:2844 msgid "cannot use RETURN NEXT in a non-SETOF function" msgstr "ne peut pas utiliser RETURN NEXT dans une fonction non SETOF" -#: pl_exec.c:2217 -#: pl_exec.c:2283 +#: pl_exec.c:2399 +#: pl_exec.c:2465 msgid "wrong result type supplied in RETURN NEXT" msgstr "mauvais type de r�sultat fourni dans RETURN NEXT" -#: pl_exec.c:2239 -#: pl_exec.c:3641 -#: pl_exec.c:3920 -#: pl_exec.c:3954 -#: pl_exec.c:4016 -#: pl_exec.c:4035 -#: pl_exec.c:4072 +#: pl_exec.c:2421 +#: pl_exec.c:3849 +#: pl_exec.c:4166 +#: pl_exec.c:4201 +#: pl_exec.c:4268 +#: pl_exec.c:4287 +#: pl_exec.c:4355 +#: pl_exec.c:4378 #, c-format msgid "record \"%s\" is not assigned yet" msgstr "l'enregistrement � %s � n'est pas encore affect�e" -#: pl_exec.c:2241 -#: pl_exec.c:3643 -#: pl_exec.c:3922 -#: pl_exec.c:3956 -#: pl_exec.c:4018 -#: pl_exec.c:4037 -#: pl_exec.c:4074 +#: pl_exec.c:2423 +#: pl_exec.c:3851 +#: pl_exec.c:4168 +#: pl_exec.c:4203 +#: pl_exec.c:4270 +#: pl_exec.c:4289 +#: pl_exec.c:4357 +#: pl_exec.c:4380 msgid "The tuple structure of a not-yet-assigned record is indeterminate." msgstr "La structure de ligne d'un enregistrement pas encore affect� est ind�termin�e." -#: pl_exec.c:2245 -#: pl_exec.c:2264 +#: pl_exec.c:2427 +#: pl_exec.c:2446 msgid "wrong record type supplied in RETURN NEXT" msgstr "mauvais type d'enregistrement fourni � RETURN NEXT" -#: pl_exec.c:2306 +#: pl_exec.c:2488 msgid "RETURN NEXT must have a parameter" msgstr "RETURN NEXT doit avoir un param�tre" -#: pl_exec.c:2337 -#: gram.y:2788 +#: pl_exec.c:2519 +#: gram.y:2903 msgid "cannot use RETURN QUERY in a non-SETOF function" msgstr "ne peut pas utiliser RETURN QUERY dans une fonction non SETOF" -#: pl_exec.c:2357 +#: pl_exec.c:2539 msgid "structure of query does not match function result type" msgstr "la structure de la requ�te ne correspond pas au type de r�sultat de la fonction" -#: pl_exec.c:2489 +#: pl_exec.c:2637 +msgid "RAISE without parameters cannot be used outside an exception handler" +msgstr "" +"RAISE sans param�tre ne peut pas �tre utilis� sans un gestionnaire\n" +"d'exception" + +#: pl_exec.c:2678 msgid "too few parameters specified for RAISE" msgstr "trop peu de param�tres pour RAISE" -#: pl_exec.c:2515 +#: pl_exec.c:2704 msgid "too many parameters specified for RAISE" msgstr "trop de param�tres pour RAISE" -#: pl_exec.c:2535 +#: pl_exec.c:2724 msgid "RAISE statement option cannot be null" msgstr "l'option de l'instruction RAISE ne peut pas �tre NULL" -#: pl_exec.c:2545 -#: pl_exec.c:2554 -#: pl_exec.c:2562 -#: pl_exec.c:2570 +#: pl_exec.c:2734 +#: pl_exec.c:2743 +#: pl_exec.c:2751 +#: pl_exec.c:2759 #, c-format msgid "RAISE option already specified: %s" msgstr "option RAISE d�j� sp�cifi�e : %s" -#: pl_exec.c:2605 -#: pl_exec.c:2606 +#: pl_exec.c:2794 +#: pl_exec.c:2795 #, c-format msgid "%s" msgstr "%s" -#: pl_exec.c:2752 -#: pl_exec.c:3056 +#: pl_exec.c:2945 +#: pl_exec.c:3081 +#: pl_exec.c:3260 msgid "cannot COPY to/from client in PL/pgSQL" msgstr "ne peut pas utiliser COPY TO/FROM dans PL/pgsql" -#: pl_exec.c:2756 -#: pl_exec.c:3060 +#: pl_exec.c:2949 +#: pl_exec.c:3085 +#: pl_exec.c:3264 msgid "cannot begin/end transactions in PL/pgSQL" msgstr "ne peut pas utiliser les instructions BEGIN/END de transactions dans PL/pgsql" -#: pl_exec.c:2757 -#: pl_exec.c:3061 +#: pl_exec.c:2950 +#: pl_exec.c:3086 +#: pl_exec.c:3265 msgid "Use a BEGIN block with an EXCEPTION clause instead." msgstr "Utiliser un bloc BEGIN dans une clause EXCEPTION � la place." -#: pl_exec.c:2905 -#: pl_exec.c:3085 +#: pl_exec.c:3109 +#: pl_exec.c:3289 msgid "INTO used with a command that cannot return data" msgstr "INTO utilis� dans une commande qui ne peut pas envoyer de donn�es" -#: pl_exec.c:2925 -#: pl_exec.c:3105 +#: pl_exec.c:3129 +#: pl_exec.c:3309 msgid "query returned no rows" msgstr "la requ�te n'a renvoy� aucune ligne" -#: pl_exec.c:2934 -#: pl_exec.c:3114 +#: pl_exec.c:3138 +#: pl_exec.c:3318 msgid "query returned more than one row" msgstr "la requ�te a renvoy� plus d'une ligne" -#: pl_exec.c:2948 +#: pl_exec.c:3152 msgid "query has no destination for result data" msgstr "la requ�te n'a pas de destination pour les donn�es r�sultantes" -#: pl_exec.c:2949 +#: pl_exec.c:3153 msgid "If you want to discard the results of a SELECT, use PERFORM instead." msgstr "Si vous voulez annuler les r�sultats d'un SELECT, utilisez PERFORM � la place." -#: pl_exec.c:2982 -#: pl_exec.c:5573 +#: pl_exec.c:3186 +#: pl_exec.c:5929 msgid "query string argument of EXECUTE is null" msgstr "l'argument de la requ�te de EXECUTE est NULL" -#: pl_exec.c:3047 +#: pl_exec.c:3251 msgid "EXECUTE of SELECT ... INTO is not implemented" msgstr "EXECUTE de SELECT ... INTO n'est pas implant�" -#: pl_exec.c:3048 -msgid "You might want to use EXECUTE ... INTO instead." -msgstr "Vous pouvez aussi utiliser EXECUTE ... INTO � la place." +#: pl_exec.c:3252 +msgid "You might want to use EXECUTE ... INTO or EXECUTE CREATE TABLE ... AS instead." +msgstr "Vous pouvez aussi utiliser EXECUTE ... INTO ou EXECUTE CREATE TABLE ... AS � la place." -#: pl_exec.c:3336 -#: pl_exec.c:3427 +#: pl_exec.c:3540 +#: pl_exec.c:3631 #, c-format msgid "cursor variable \"%s\" is null" msgstr "la variable du curseur � %s � est NULL" -#: pl_exec.c:3343 -#: pl_exec.c:3434 +#: pl_exec.c:3547 +#: pl_exec.c:3638 #, c-format msgid "cursor \"%s\" does not exist" msgstr "le curseur � %s � n'existe pas" -#: pl_exec.c:3357 +#: pl_exec.c:3561 msgid "relative or absolute cursor position is null" msgstr "la position relative ou absolue du curseur est NULL" -#: pl_exec.c:3494 +#: pl_exec.c:3702 #, c-format msgid "null value cannot be assigned to variable \"%s\" declared NOT NULL" msgstr "" "une valeur NULL ne peut pas �tre affect�e � la variable � %s � d�clar�e\n" "non NULL" -#: pl_exec.c:3552 +#: pl_exec.c:3760 msgid "cannot assign non-composite value to a row variable" msgstr "ne peut pas affecter une valeur non composite � une variable de type ROW" -#: pl_exec.c:3594 +#: pl_exec.c:3802 msgid "cannot assign non-composite value to a record variable" msgstr "ne peut pas affecter une valeur non composite � une variable RECORD" -#: pl_exec.c:3654 -#: pl_exec.c:3961 -#: pl_exec.c:4042 -#: pl_exec.c:4079 -#, c-format -msgid "record \"%s\" has no field \"%s\"" -msgstr "l'enregistrement � %s � n'a pas de champs � %s �" - -#: pl_exec.c:3752 +#: pl_exec.c:3973 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "le nombre de dimensions du tableau (%d) d�passe la maximum autoris� (%d)" -#: pl_exec.c:3766 +#: pl_exec.c:3992 msgid "subscripted object is not an array" msgstr "l'objet souscrit n'est pas un tableau" -#: pl_exec.c:3789 +#: pl_exec.c:4015 msgid "array subscript in assignment must not be null" msgstr "un indice de tableau dans une affectation ne peut pas �tre NULL" -#: pl_exec.c:4170 +#: pl_exec.c:4493 #, c-format msgid "query \"%s\" did not return data" msgstr "la requ�te � %s � ne renvoie pas de donn�es" -#: pl_exec.c:4178 +#: pl_exec.c:4501 #, c-format msgid "query \"%s\" returned %d column" msgid_plural "query \"%s\" returned %d columns" msgstr[0] "la requ�te � %s � a renvoy� %d colonne" msgstr[1] "la requ�te � %s � a renvoy� %d colonnes" -#: pl_exec.c:4204 +#: pl_exec.c:4527 #, c-format msgid "query \"%s\" returned more than one row" msgstr "la requ�te � %s � a renvoy� plus d'une ligne" -#: pl_exec.c:4262 +#: pl_exec.c:4585 #, c-format msgid "query \"%s\" is not a SELECT" msgstr "la requ�te � %s � n'est pas un SELECT" -#: gram.y:423 +#: gram.y:430 msgid "block label must be placed before DECLARE, not after" msgstr "le label du bloc doit �tre plac� avant DECLARE, et non pas apr�s" -#: gram.y:441 +#: gram.y:450 +#, c-format +msgid "collations are not supported by type %s" +msgstr "les collationnements ne sont pas support�s par le type %s" + +#: gram.y:465 msgid "row or record variable cannot be CONSTANT" msgstr "la variable ROW ou RECORD ne peut pas �tre CONSTANT" -#: gram.y:451 +#: gram.y:475 msgid "row or record variable cannot be NOT NULL" msgstr "la variable ROW ou RECORD ne peut pas �tre NOT NULL" -#: gram.y:462 +#: gram.y:486 msgid "default value for row or record variable is not supported" msgstr "la valeur par d�faut de variable ROW ou RECORD n'est pas support�e" -#: gram.y:606 -#: gram.y:632 +#: gram.y:631 +#: gram.y:657 #, c-format msgid "variable \"%s\" does not exist" msgstr "la variable � %s � n'existe pas" -#: gram.y:650 -#: gram.y:663 +#: gram.y:675 +#: gram.y:688 msgid "duplicate declaration" msgstr "d�claration dupliqu�e" -#: gram.y:841 +#: gram.y:881 msgid "unrecognized GET DIAGNOSTICS item" msgstr "�l�ment GET DIAGNOSTICS non reconnu" -#: gram.y:852 -#: gram.y:2975 +#: gram.y:892 +#: gram.y:3090 #, c-format msgid "\"%s\" is not a scalar variable" msgstr "� %s � n'est pas une variable scalaire" -#: gram.y:1114 -#: gram.y:1306 +#: gram.y:1154 +#: gram.y:1347 msgid "loop variable of loop over rows must be a record or row variable or list of scalar variables" msgstr "" "la variable d'une boucle sur des lignes doit �tre une variable de type\n" "RECORD ou ROW, ou encore une liste de variables scalaires" -#: gram.y:1148 +#: gram.y:1188 msgid "cursor FOR loop must have only one target variable" msgstr "le curseur de la boucle FOR doit avoir seulement une variable cible" -#: gram.y:1155 +#: gram.y:1195 msgid "cursor FOR loop must use a bound cursor variable" msgstr "le curseur de la boucle FOR doit utiliser une variable curseur limit�" -#: gram.y:1238 +#: gram.y:1278 msgid "integer FOR loop must have only one target variable" msgstr "la boucle FOR de type entier doit avoir une seule variable cible" -#: gram.y:1273 +#: gram.y:1314 msgid "cannot specify REVERSE in query FOR loop" msgstr "ne peut pas sp�cifier REVERSE dans la requ�te de la boucle FOR" -#: gram.y:1420 -#: gram.y:1457 -#: gram.y:1505 -#: gram.y:2425 -#: gram.y:2506 -#: gram.y:2617 -#: gram.y:3249 +#: gram.y:1461 +msgid "loop variable of FOREACH must be a known variable or list of variables" +msgstr "la variable d'une boucle FOREACH doit �tre une variable connue ou une liste de variables" + +#: gram.y:1513 +#: gram.y:1550 +#: gram.y:1598 +#: gram.y:2540 +#: gram.y:2621 +#: gram.y:2732 +#: gram.y:3365 msgid "unexpected end of function definition" msgstr "d�finition inattendue de la fin de fonction" -#: gram.y:1525 -#: gram.y:1549 -#: gram.y:1561 -#: gram.y:1568 -#: gram.y:1652 -#: gram.y:1759 -#: gram.y:1936 -#: gram.y:2015 -#: gram.y:2128 -#: gram.y:2706 -#: gram.y:2770 -#: gram.y:3209 -#: gram.y:3230 +#: gram.y:1618 +#: gram.y:1642 +#: gram.y:1654 +#: gram.y:1661 +#: gram.y:1750 +#: gram.y:1758 +#: gram.y:1772 +#: gram.y:1867 +#: gram.y:2048 +#: gram.y:2127 +#: gram.y:2242 +#: gram.y:2821 +#: gram.y:2885 +#: gram.y:3325 +#: gram.y:3346 msgid "syntax error" msgstr "erreur de syntaxe" -#: gram.y:1553 -#: gram.y:1555 -#: gram.y:1940 -#: gram.y:1942 +#: gram.y:1646 +#: gram.y:1648 +#: gram.y:2052 +#: gram.y:2054 msgid "invalid SQLSTATE code" msgstr "code SQLSTATE invalide" -#: gram.y:1706 +#: gram.y:1814 msgid "syntax error, expected \"FOR\"" msgstr "erreur de syntaxe, � FOR � attendu" -#: gram.y:1768 +#: gram.y:1876 msgid "FETCH statement cannot return multiple rows" msgstr "l'instruction FETCH ne peut pas renvoyer plusieurs lignes" -#: gram.y:1824 +#: gram.y:1932 msgid "cursor variable must be a simple variable" msgstr "la variable de curseur doit �tre une variable simple" -#: gram.y:1830 +#: gram.y:1938 #, c-format msgid "variable \"%s\" must be of type cursor or refcursor" msgstr "la variable � %s � doit �tre de type cursor ou refcursor" -#: gram.y:1994 +#: gram.y:2106 msgid "label does not exist" msgstr "le label n'existe pas" -#: gram.y:2099 -#: gram.y:2110 +#: gram.y:2213 +#: gram.y:2224 #, c-format msgid "\"%s\" is not a known variable" msgstr "� %s � n'est pas une variable connue" -#: gram.y:2212 -#: gram.y:2222 -#: gram.y:2350 +#: gram.y:2326 +#: gram.y:2336 +#: gram.y:2464 msgid "mismatched parentheses" msgstr "parenth�ses non correspondantes" -#: gram.y:2226 +#: gram.y:2340 #, c-format msgid "missing \"%s\" at end of SQL expression" msgstr "� %s � manquant � la fin de l'expression SQL" -#: gram.y:2232 +#: gram.y:2346 #, c-format msgid "missing \"%s\" at end of SQL statement" msgstr "� %s � manquant � la fin de l'instruction SQL" -#: gram.y:2249 +#: gram.y:2363 msgid "missing expression" msgstr "expression manquante" -#: gram.y:2251 +#: gram.y:2365 msgid "missing SQL statement" msgstr "instruction SQL manquante" -#: gram.y:2352 +#: gram.y:2466 msgid "incomplete data type declaration" msgstr "d�claration incompl�te d'un type de donn�es" -#: gram.y:2374 +#: gram.y:2489 msgid "missing data type declaration" msgstr "d�claration manquante d'un type de donn�es" -#: gram.y:2430 +#: gram.y:2545 msgid "INTO specified more than once" msgstr "INTO sp�cifi� plus d'une fois" -#: gram.y:2598 +#: gram.y:2713 msgid "expected FROM or IN" msgstr "attendait FROM ou IN" -#: gram.y:2658 +#: gram.y:2773 msgid "RETURN cannot have a parameter in function returning set" msgstr "RETURN ne peut pas avoir un param�tre dans une fonction renvoyant un ensemble" -#: gram.y:2659 +#: gram.y:2774 msgid "Use RETURN NEXT or RETURN QUERY." msgstr "Utilisez RETURN NEXT ou RETURN QUERY." -#: gram.y:2667 +#: gram.y:2782 msgid "RETURN cannot have a parameter in function with OUT parameters" msgstr "RETURN ne peut pas avoir un param�tre dans une fonction avec des param�tres OUT" -#: gram.y:2676 +#: gram.y:2791 msgid "RETURN cannot have a parameter in function returning void" msgstr "RETURN ne peut pas avoir un param�tre dans une fonction renvoyant void" -#: gram.y:2694 -#: gram.y:2701 +#: gram.y:2809 +#: gram.y:2816 msgid "RETURN must specify a record or row variable in function returning row" msgstr "" "RETURN ne peut pas indiquer une variable RECORD ou ROW dans une fonction\n" "renvoyant une ligne" -#: gram.y:2743 +#: gram.y:2858 msgid "RETURN NEXT cannot have a parameter in function with OUT parameters" msgstr "" "RETURN NEXT ne peut pas avoir un param�tre dans une fonction avec des\n" "param�tres OUT" -#: gram.y:2758 -#: gram.y:2765 +#: gram.y:2873 +#: gram.y:2880 msgid "RETURN NEXT must specify a record or row variable in function returning row" msgstr "" "RETURN NEXT doit indiquer une variable RECORD ou ROW dans une fonction\n" "renvoyant une ligne" -#: gram.y:2844 +#: gram.y:2959 #, c-format msgid "\"%s\" is declared CONSTANT" msgstr "� %s � est d�clar� CONSTANT" -#: gram.y:2906 -#: gram.y:2918 +#: gram.y:3021 +#: gram.y:3033 msgid "record or row variable cannot be part of multiple-item INTO list" msgstr "" "la variable de type RECORD ou ROW ne peut pas faire partie d'une liste INTO �\n" "plusieurs �l�ments" -#: gram.y:2963 +#: gram.y:3078 msgid "too many INTO variables specified" msgstr "trop de variables INTO indiqu�es" -#: gram.y:3170 +#: gram.y:3286 #, c-format msgid "end label \"%s\" specified for unlabelled block" msgstr "label de fin � %s � sp�cifi� pour un bloc sans label" -#: gram.y:3177 +#: gram.y:3293 #, c-format msgid "end label \"%s\" differs from block's label \"%s\"" msgstr "label de fin � %s � diff�rent du label � %s � du bloc" -#: gram.y:3204 +#: gram.y:3320 #, c-format msgid "cursor \"%s\" has no arguments" msgstr "le curseur � %s � n'a pas d'arguments" -#: gram.y:3218 +#: gram.y:3334 #, c-format msgid "cursor \"%s\" has arguments" msgstr "le curseur � %s � a des arguments" -#: gram.y:3266 +#: gram.y:3382 msgid "unrecognized RAISE statement option" msgstr "option de l'instruction RAISE inconnue" -#: gram.y:3270 +#: gram.y:3386 msgid "syntax error, expected \"=\"" msgstr "erreur de syntaxe, � = � attendu" -#: pl_funcs.c:216 +#: pl_funcs.c:218 msgid "statement block" msgstr "bloc d'instructions" -#: pl_funcs.c:218 +#: pl_funcs.c:220 msgid "assignment" msgstr "affectation" -#: pl_funcs.c:228 +#: pl_funcs.c:230 msgid "FOR with integer loop variable" msgstr "variable enti�re de boucle FOR" -#: pl_funcs.c:230 +#: pl_funcs.c:232 msgid "FOR over SELECT rows" msgstr "FOR sur des lignes de SELECT" -#: pl_funcs.c:232 +#: pl_funcs.c:234 msgid "FOR over cursor" msgstr "FOR sur un curseur" -#: pl_funcs.c:244 +#: pl_funcs.c:236 +msgid "FOREACH over array" +msgstr "FOREACH sur un tableau" + +#: pl_funcs.c:248 msgid "SQL statement" msgstr "instruction SQL" -#: pl_funcs.c:246 +#: pl_funcs.c:250 msgid "EXECUTE statement" msgstr "instruction EXECUTE" -#: pl_funcs.c:248 +#: pl_funcs.c:252 msgid "FOR over EXECUTE statement" msgstr "FOR sur une instruction EXECUTE" @@ -737,92 +778,123 @@ msgid "Sets handling of conflicts between PL/pgSQL variable names and table colu msgstr "Configure la gestion des conflits entre les noms de variables PL/pgsql et les noms des colonnes des tables." #. translator: %s is typically the translation of "syntax error" -#: pl_scanner.c:463 +#: pl_scanner.c:467 #, 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" -#: pl_scanner.c:479 +#: pl_scanner.c:483 #, c-format msgid "%s at or near \"%s\"" msgstr "%s sur ou pr�s de � %s �" +#~ msgid "cursor \"%s\" closed unexpectedly" +#~ msgstr "le curseur � %s � a �t� ferm� de fa�on inattendu" + #~ msgid "row \"%s\" has no field \"%s\"" #~ msgstr "la ligne � %s � n'a aucun champ � %s �" + #~ msgid "row \"%s.%s\" has no field \"%s\"" #~ msgstr "la ligne � %s.%s � n'a aucun champ � %s �" + #~ msgid "expected \"[\"" #~ msgstr "� [ � attendu" + #~ msgid "type of \"%s\" does not match that when preparing the plan" #~ msgstr "" #~ "le type de � %s � ne correspond pas � ce qui est pr�par� dans le plan" + #~ msgid "type of \"%s.%s\" does not match that when preparing the plan" #~ msgstr "" #~ "le type de � %s.%s � ne correspond pas � ce qui est pr�par� dans le plan" + #~ msgid "type of tg_argv[%d] does not match that when preparing the plan" #~ msgstr "" #~ "le type de tg_argv[%d] ne correspond pas � ce qui est pr�par� dans le plan" + #~ msgid "N/A (dropped column)" #~ msgstr "N/A (colonne supprim�e)" + #~ 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" #~ "attendues (%d)." + #~ msgid "Returned type %s does not match expected type %s in column \"%s\"." #~ msgstr "" -#~ "Le type %s renvoy� ne correspond pas au type %s attendu dans la colonne � %" -#~ "s �." +#~ "Le type %s renvoy� ne correspond pas au type %s attendu dans la colonne � " +#~ "%s �." + #~ msgid "only positional parameters can be aliased" #~ msgstr "seuls les param�tres de position peuvent avoir un alias" + #~ msgid "function has no parameter \"%s\"" #~ msgstr "la fonction n'a pas de param�tre � %s �" + #~ msgid "expected an integer variable" #~ msgstr "attend une variable enti�re" + #~ msgid "syntax error at \"%s\"" #~ msgstr "erreur de syntaxe � � %s �" + #~ msgid "Expected \"FOR\", to open a cursor for an unbound cursor variable." #~ msgstr "" #~ "Attendait � FOR � pour ouvrir un curseur pour une variable sans limite." + #~ msgid "expected a cursor or refcursor variable" #~ msgstr "attendait une variable de type cursor ou refcursor" + #~ msgid "too many variables specified in SQL statement" #~ msgstr "trop de variables sp�cifi�es dans l'instruction SQL" + #~ msgid "" #~ "RETURN cannot have a parameter in function returning set; use RETURN NEXT " #~ "or RETURN QUERY" #~ msgstr "" #~ "RETURN ne peut pas avoir un param�tre dans une fonction renvoyant des\n" #~ "lignes ; utilisez RETURN NEXT ou RETURN QUERY" + #~ msgid "cannot assign to tg_argv" #~ msgstr "ne peut pas affecter � tg_argv" + #~ msgid "" #~ "Expected record variable, row variable, or list of scalar variables " #~ "following INTO." #~ msgstr "" #~ "Attendait une variable RECORD, ROW ou une liste de variables scalaires\n" #~ "suivant INTO." + #~ msgid "SQL statement in PL/PgSQL function \"%s\" near line %d" -#~ msgstr "instruction SQL dans la fonction PL/pgsql � %s � pr�s de la ligne %d" +#~ msgstr "" +#~ "instruction SQL dans la fonction PL/pgsql � %s � pr�s de la ligne %d" + #~ msgid "string literal in PL/PgSQL function \"%s\" near line %d" #~ msgstr "" #~ "cha�ne litt�rale dans la fonction PL/pgsql � %s � pr�s de la ligne %d" + #~ msgid "expected \")\"" #~ msgstr "� ) � attendu" + #~ msgid "variable \"%s\" does not exist in the current block" #~ msgstr "la variable � %s � n'existe pas dans le bloc actuel" + #~ msgid "unterminated \" in identifier: %s" #~ msgstr "\" non termin� dans l'identifiant : %s" + #~ msgid "qualified identifier cannot be used here: %s" #~ msgstr "l'identifiant qualifi� ne peut pas �tre utilis� ici : %s" + #~ msgid "unterminated quoted identifier" #~ msgstr "identifiant entre guillemets non termin�" + #~ msgid "unterminated /* comment" #~ msgstr "commentaire /* non termin�" + #~ msgid "unterminated quoted string" #~ msgstr "cha�ne entre guillemets non termin�e" + #~ msgid "unterminated dollar-quoted string" #~ msgstr "cha�ne entre dollars non termin�e" - diff --git a/src/pl/plpgsql/src/po/it.po b/src/pl/plpgsql/src/po/it.po index b4d2c2a24e..db39abbfb5 100644 --- a/src/pl/plpgsql/src/po/it.po +++ b/src/pl/plpgsql/src/po/it.po @@ -7,837 +7,693 @@ # # Traduttori: # * Diego Cinelli -# +# * Daniele Varrazzo # # Copyright (c) 2010, Associazione Culturale ITPUG # Distributed under the same license of the PostgreSQL project # -# LANGUAGE message translation file for plpgsql -# Copyright (C) 2009 PostgreSQL Global Development Group -# This file is distributed under the same license as the PostgreSQL package. -# FIRST AUTHOR , 2009. -# msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" +"Project-Id-Version: plpgsql (PostgreSQL) 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-03-26 13:15+0000\n" -"PO-Revision-Date: 2010-03-27 12:44:19+0100\n" -"Last-Translator: Gabriele Bartolini \n" +"POT-Creation-Date: 2013-01-29 13:51+0000\n" +"PO-Revision-Date: 2012-11-04 18:05+0100\n" +"Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Poedit-Language: Italian\n" -"X-Poedit-Country: ITALY\n" "X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Poedit 1.5.4\n" -#: pl_comp.c:422 -#: pl_handler.c:256 +#: pl_comp.c:427 pl_handler.c:266 #, c-format msgid "PL/pgSQL functions cannot accept type %s" msgstr "Le funzioni PL/pgSQL non accettano il tipo %s" -#: pl_comp.c:501 +#: pl_comp.c:506 #, c-format msgid "could not determine actual return type for polymorphic function \"%s\"" -msgstr "impossibile determinare il reale tipo di ritorno per la funzione polimorfa \"%s\"" +msgstr "determinazione del tipo di ritorno reale per la funzione polimorfa \"%s\" fallita" -#: pl_comp.c:531 +#: pl_comp.c:536 msgid "trigger functions can only be called as triggers" -msgstr "le funzioni trigger possono essere chiamate esclusivamente come trigger" +msgstr "le funzioni trigger possono essere chiamate esclusivamente da trigger" -#: pl_comp.c:535 -#: pl_handler.c:241 +#: pl_comp.c:540 pl_handler.c:251 #, c-format msgid "PL/pgSQL functions cannot return type %s" msgstr "Le funzioni PL/pgSQL non possono restituire un tipo %s" -#: pl_comp.c:576 +#: pl_comp.c:583 msgid "trigger functions cannot have declared arguments" msgstr "Le funzioni trigger non possono avere argomenti dichiarati" -#: pl_comp.c:577 +#: pl_comp.c:584 msgid "The arguments of the trigger can be accessed through TG_NARGS and TG_ARGV instead." -msgstr "Gli argomenti del trigger possono essere a loro volta acceduti tramite TG_NARGS e TG_ARGV " +msgstr "Gli argomenti del trigger possono essere acceduti tramite TG_NARGS e TG_ARGV invece." -#: pl_comp.c:880 +#: pl_comp.c:912 #, c-format msgid "compilation of PL/pgSQL function \"%s\" near line %d" -msgstr "compilazione della funzione PL/pgSQL \"%s\" in prossimità della linea %d" +msgstr "compilazione della funzione PL/pgSQL \"%s\" in prossimità della riga %d" + +#: pl_comp.c:935 +#, c-format +msgid "parameter name \"%s\" used more than once" +msgstr "il nome di parametro \"%s\" è usato più di una volta" -#: pl_comp.c:978 +#: pl_comp.c:1045 #, c-format msgid "column reference \"%s\" is ambiguous" -msgstr "" +msgstr "il riferimento alla colonna \"%s\" è ambiguo" -#: pl_comp.c:980 +#: pl_comp.c:1047 msgid "It could refer to either a PL/pgSQL variable or a table column." -msgstr "" +msgstr "Può riferirsi o ad una variabile PL/pgSQL o ad una colonna di tabella." -#: pl_comp.c:1690 +#: pl_comp.c:1227 pl_comp.c:1255 pl_exec.c:3870 pl_exec.c:4201 pl_exec.c:4287 +#: pl_exec.c:4378 +#, c-format +msgid "record \"%s\" has no field \"%s\"" +msgstr "il record \"%s\" non ha un campo \"%s\"" + +#: pl_comp.c:1783 #, c-format msgid "relation \"%s\" does not exist" msgstr "la relazione \"%s\" non esiste" -#: pl_comp.c:1722 +#: pl_comp.c:1815 #, c-format msgid "relation \"%s.%s\" does not exist" msgstr "la relazione \"%s.%s\" non esiste" -#: pl_comp.c:1804 +#: pl_comp.c:1897 #, c-format msgid "variable \"%s\" has pseudo-type %s" msgstr "la variabile \"%s\" ha lo pseudo-tipo %s" -#: pl_comp.c:1865 +#: pl_comp.c:1959 #, c-format msgid "relation \"%s\" is not a table" msgstr "la relazione \"%s\" non è una tabella" -#: pl_comp.c:2017 +#: pl_comp.c:2119 #, c-format msgid "type \"%s\" is only a shell" -msgstr "il tipo \"%s\" non è un oggetto definito" +msgstr "il tipo \"%s\" non è completamente definito" -#: pl_comp.c:2087 -#: pl_comp.c:2140 +#: pl_comp.c:2192 pl_comp.c:2245 #, c-format msgid "unrecognized exception condition \"%s\"" -msgstr "condizione di eccezione \"%s\" non riconosciuta" +msgstr "condizione di eccezione \"%s\" sconosciuta" -#: pl_comp.c:2295 +#: pl_comp.c:2403 #, c-format msgid "could not determine actual argument type for polymorphic function \"%s\"" msgstr "il tipo reale dell'argomento non è determinabile per la funzione polimorfa \"%s\"" -#: pl_exec.c:236 -#: pl_exec.c:511 +#: pl_exec.c:242 pl_exec.c:517 msgid "during initialization of execution state" msgstr "durante l'inizializzazione dello stato di esecuzione" -#: pl_exec.c:243 +#: pl_exec.c:249 msgid "while storing call arguments into local variables" msgstr "durante la memorizzazione degli argomenti di chiamata in variabili locali" -#: pl_exec.c:298 -#: pl_exec.c:666 +#: pl_exec.c:306 pl_exec.c:674 msgid "during function entry" msgstr "durante l'ingresso nella funzione" -#: pl_exec.c:329 -#: pl_exec.c:697 +#: pl_exec.c:337 pl_exec.c:705 msgid "CONTINUE cannot be used outside a loop" msgstr "CONTINUE non può essere usato all'esterno di un ciclo" -#: pl_exec.c:333 -#: pl_exec.c:701 -msgid "RAISE without parameters cannot be used outside an exception handler" -msgstr "RAISE senza parametri non può essere usato all'esterno di un gestore di eccezioni" - -#: pl_exec.c:337 +#: pl_exec.c:341 msgid "control reached end of function without RETURN" msgstr "il controllo ha raggiunto la fine di una funzione senza incontrare alcun RETURN" -#: pl_exec.c:344 +#: pl_exec.c:348 msgid "while casting return value to function's return type" -msgstr "durante la conversione di tipo del valore di ritorno nel tipo di ritorno della funzione" +msgstr "durante la conversione del valore da restituire nel tipo restituito della funzione" -#: pl_exec.c:357 -#: pl_exec.c:2398 +#: pl_exec.c:361 pl_exec.c:2593 msgid "set-valued function called in context that cannot accept a set" -msgstr "è stata chiamata una funzione che restituisce un insieme in un contesto che non può accettarlo" +msgstr "la funzione che restituisce insiemi è chiamata in un contesto che non può accettare un insieme" -#: pl_exec.c:395 +#: pl_exec.c:399 msgid "returned record type does not match expected record type" msgstr "il tipo del record restituito non coincide con quello atteso" -#: pl_exec.c:453 -#: pl_exec.c:709 +#: pl_exec.c:459 pl_exec.c:713 msgid "during function exit" msgstr "durante l'uscita della funzione" -#: pl_exec.c:705 +#: pl_exec.c:709 msgid "control reached end of trigger procedure without RETURN" msgstr "il controllo ha raggiunto la fine di una procedura trigger senza incontrare alcun RETURN" -#: pl_exec.c:714 +#: pl_exec.c:718 msgid "trigger procedure cannot return a set" -msgstr "la procedura trigger non può tornare un insieme" +msgstr "la procedura trigger non può restituire un insieme" -#: pl_exec.c:736 +#: pl_exec.c:740 msgid "returned row structure does not match the structure of the triggering table" msgstr "la struttura della riga restituita non coincide con la struttura della tabella che ha generato il trigger" -#: pl_exec.c:799 +#: pl_exec.c:803 #, c-format msgid "PL/pgSQL function \"%s\" line %d %s" -msgstr "funzione PL/pgSQL \"%s\" linea %d %s" +msgstr "funzione PL/pgSQL \"%s\" riga %d %s" -#: pl_exec.c:810 +#: pl_exec.c:814 #, c-format msgid "PL/pgSQL function \"%s\" %s" msgstr "funzione PL/pgSQL \"%s\" %s" #. translator: last %s is a plpgsql statement type name -#: pl_exec.c:818 +#: pl_exec.c:822 #, c-format msgid "PL/pgSQL function \"%s\" line %d at %s" -msgstr "funzione PL/pgSQL \"%s\" linea %d a %s" +msgstr "funzione PL/pgSQL \"%s\" riga %d a %s" -#: pl_exec.c:824 +#: pl_exec.c:828 #, c-format msgid "PL/pgSQL function \"%s\"" msgstr "funzione PL/pgSQL \"%s\"" -#: pl_exec.c:932 +#: pl_exec.c:936 msgid "during statement block local variable initialization" msgstr "durante l'inizializzazione di variabili locali del blocco di istruzioni" -#: pl_exec.c:974 +#: pl_exec.c:978 #, c-format msgid "variable \"%s\" declared NOT NULL cannot default to NULL" -msgstr "la variabile \"%s\" dichiarata NOT NULL non può avere valore di default NULL" +msgstr "la variabile \"%s\" dichiarata NOT NULL non può avere valore predefinito NULL" -#: pl_exec.c:1023 +#: pl_exec.c:1028 msgid "during statement block entry" msgstr "durante l'entrata nel blocco di istruzioni" -#: pl_exec.c:1044 +#: pl_exec.c:1049 msgid "during statement block exit" msgstr "durante l'uscita dal blocco di istruzioni" -#: pl_exec.c:1087 +#: pl_exec.c:1092 msgid "during exception cleanup" -msgstr "durante la finalizzazione delle eccezioni" +msgstr "durante la pulizia delle eccezioni" -#: pl_exec.c:1553 +#: pl_exec.c:1569 msgid "case not found" msgstr "caso non trovato" -#: pl_exec.c:1554 +#: pl_exec.c:1570 msgid "CASE statement is missing ELSE part." msgstr "all'istruzione CASE manca la parte ELSE." -#: pl_exec.c:1710 +#: pl_exec.c:1724 msgid "lower bound of FOR loop cannot be null" -msgstr "il più limite inferiore per un ciclo FOR non può essere nullo" +msgstr "il limite inferiore di un ciclo FOR non può essere nullo" -#: pl_exec.c:1725 +#: pl_exec.c:1739 msgid "upper bound of FOR loop cannot be null" -msgstr "il più limite superiore per un ciclo FOR non può essere null" +msgstr "il limite superiore di un ciclo FOR non può essere null" -#: pl_exec.c:1742 +#: pl_exec.c:1756 msgid "BY value of FOR loop cannot be null" msgstr "il valore BY di un ciclo FOR non può essere null" -#: pl_exec.c:1748 +#: pl_exec.c:1762 msgid "BY value of FOR loop must be greater than zero" msgstr "il valore BY di un ciclo FOR deve essere maggiore di zero" -#: pl_exec.c:1919 -#: pl_exec.c:3179 +#: pl_exec.c:1932 pl_exec.c:3405 #, c-format msgid "cursor \"%s\" already in use" msgstr "il cursore \"%s\" è già in uso" -#: pl_exec.c:1942 -#: pl_exec.c:3241 +#: pl_exec.c:1955 pl_exec.c:3467 msgid "arguments given for cursor without arguments" msgstr "sono stati passati argomenti al cursore che non ne accetta" -#: pl_exec.c:1961 -#: pl_exec.c:3260 +#: pl_exec.c:1974 pl_exec.c:3486 msgid "arguments required for cursor" msgstr "sono richiesti argomenti per il cursore" -#: pl_exec.c:2182 -#: gram.y:2729 +#: pl_exec.c:2062 +msgid "FOREACH expression must not be null" +msgstr "l'espressione FOREACH non può essere vuota" + +#: pl_exec.c:2068 +#, c-format +msgid "FOREACH expression must yield an array, not type %s" +msgstr "l'espressione FOREACH deve generare un array, non il tipo %s" + +#: pl_exec.c:2085 +#, c-format +msgid "slice dimension (%d) is out of the valid range 0..%d" +msgstr "la dimensione della sezione (%d) è fuori dell'intervallo valido 0..%d" + +#: pl_exec.c:2112 +msgid "FOREACH ... SLICE loop variable must be of an array type" +msgstr "la variabile del ciclo FOREACH ... SLICE dev'essere di tipo array" + +#: pl_exec.c:2116 +msgid "FOREACH loop variable must not be of an array type" +msgstr "la variabile di ciclo FOREACH non può essere un tipo array" + +#: pl_exec.c:2374 gram.y:2844 msgid "cannot use RETURN NEXT in a non-SETOF function" msgstr "non si può usare RETURN NEXT in una funzione non-SETOF" -#: pl_exec.c:2206 -#: pl_exec.c:2272 +#: pl_exec.c:2398 pl_exec.c:2466 msgid "wrong result type supplied in RETURN NEXT" -msgstr "è stato fornito un tipo di risultato non corretto a RETURN NEXT" +msgstr "è stato fornito un risultato di tipo non corretto a RETURN NEXT" -#: pl_exec.c:2228 -#: pl_exec.c:3629 -#: pl_exec.c:3908 -#: pl_exec.c:3942 -#: pl_exec.c:4004 -#: pl_exec.c:4023 -#: pl_exec.c:4060 +#: pl_exec.c:2421 pl_exec.c:3857 pl_exec.c:4159 pl_exec.c:4194 pl_exec.c:4261 +#: pl_exec.c:4280 pl_exec.c:4348 pl_exec.c:4371 #, c-format msgid "record \"%s\" is not assigned yet" msgstr "il record \"%s\" non è stato ancora assegnato" -#: pl_exec.c:2230 -#: pl_exec.c:3631 -#: pl_exec.c:3910 -#: pl_exec.c:3944 -#: pl_exec.c:4006 -#: pl_exec.c:4025 -#: pl_exec.c:4062 +#: pl_exec.c:2423 pl_exec.c:3859 pl_exec.c:4161 pl_exec.c:4196 pl_exec.c:4263 +#: pl_exec.c:4282 pl_exec.c:4350 pl_exec.c:4373 msgid "The tuple structure of a not-yet-assigned record is indeterminate." -msgstr "La struttura della tupla di un record non ancora assegnato è indeterminata" +msgstr "La struttura della tupla di un record non ancora assegnato è indeterminata." -#: pl_exec.c:2234 -#: pl_exec.c:2253 +#: pl_exec.c:2427 pl_exec.c:2447 msgid "wrong record type supplied in RETURN NEXT" -msgstr "è stato fornito un tipo di record non corretto a RETURN NEXT" +msgstr "è stato fornito un record di tipo non corretto a RETURN NEXT" -#: pl_exec.c:2295 +#: pl_exec.c:2488 msgid "RETURN NEXT must have a parameter" msgstr "RETURN NEXT deve avere un parametro" -#: pl_exec.c:2326 -#: gram.y:2788 +#: pl_exec.c:2521 gram.y:2903 msgid "cannot use RETURN QUERY in a non-SETOF function" msgstr "non si può usare RETURN QUERY in una funzione non-SETOF" -#: pl_exec.c:2346 +#: pl_exec.c:2541 msgid "structure of query does not match function result type" msgstr "la struttura della query non coincide con il tipo del risultato della funzione" -#: pl_exec.c:2478 +#: pl_exec.c:2639 +msgid "RAISE without parameters cannot be used outside an exception handler" +msgstr "RAISE senza parametri non può essere usato all'esterno di un gestore di eccezioni" + +#: pl_exec.c:2680 msgid "too few parameters specified for RAISE" -msgstr "numero non sufficiente di parametri specificati per RAISE" +msgstr "numero di parametri non sufficiente specificati per RAISE" -#: pl_exec.c:2504 +#: pl_exec.c:2708 msgid "too many parameters specified for RAISE" msgstr "troppi parametri specificati per RAISE" -#: pl_exec.c:2524 +#: pl_exec.c:2728 msgid "RAISE statement option cannot be null" msgstr "l'opzione dell'istruzione RAISE non può essere nulla" -#: pl_exec.c:2534 -#: pl_exec.c:2543 -#: pl_exec.c:2551 -#: pl_exec.c:2559 +#: pl_exec.c:2738 pl_exec.c:2747 pl_exec.c:2755 pl_exec.c:2763 #, c-format msgid "RAISE option already specified: %s" msgstr "opzione RAISE già specificata: %s" -#: pl_exec.c:2594 -#: pl_exec.c:2595 +#: pl_exec.c:2799 #, c-format msgid "%s" msgstr "%s" -#: pl_exec.c:2741 -#: pl_exec.c:3044 +#: pl_exec.c:2949 pl_exec.c:3085 pl_exec.c:3268 msgid "cannot COPY to/from client in PL/pgSQL" msgstr "non è possibile usare COPY verso/da un client in PL/pgSQL" -#: pl_exec.c:2745 -#: pl_exec.c:3048 +#: pl_exec.c:2953 pl_exec.c:3089 pl_exec.c:3272 msgid "cannot begin/end transactions in PL/pgSQL" msgstr "non si possono avviare/terminare transazioni in PL/pgSQL" -#: pl_exec.c:2746 -#: pl_exec.c:3049 +#: pl_exec.c:2954 pl_exec.c:3090 pl_exec.c:3273 msgid "Use a BEGIN block with an EXCEPTION clause instead." -msgstr "Utilizza piuttosto un blocco BEGIN con una clausola EXCEPTION." +msgstr "Utilizza invece un blocco BEGIN con una clausola EXCEPTION." -#: pl_exec.c:2894 -#: pl_exec.c:3073 +#: pl_exec.c:3113 pl_exec.c:3297 msgid "INTO used with a command that cannot return data" msgstr "INTO usato con un comando che non restituisce alcun dato" -#: pl_exec.c:2914 -#: pl_exec.c:3093 +#: pl_exec.c:3133 pl_exec.c:3317 msgid "query returned no rows" msgstr "la query non ha restituito alcuna riga" -#: pl_exec.c:2923 -#: pl_exec.c:3102 +#: pl_exec.c:3142 pl_exec.c:3326 msgid "query returned more than one row" msgstr "la query ha restituito più di una riga" -#: pl_exec.c:2937 +#: pl_exec.c:3157 msgid "query has no destination for result data" -msgstr "la query non ha una destinatione per i dati restituiti" +msgstr "la query non ha una destinazione per i dati restituiti" -#: pl_exec.c:2938 +#: pl_exec.c:3158 msgid "If you want to discard the results of a SELECT, use PERFORM instead." msgstr "Se vuoi scartare i risultati di una SELECT, utilizza PERFORM." -#: pl_exec.c:2971 -#: pl_exec.c:5528 +#: pl_exec.c:3191 pl_exec.c:5949 msgid "query string argument of EXECUTE is null" msgstr "l'argomento della query di EXECUTE è nullo" -#: pl_exec.c:3036 +#: pl_exec.c:3259 msgid "EXECUTE of SELECT ... INTO is not implemented" msgstr "EXECUTE di SELECT ... INTO non è implementato" -#: pl_exec.c:3324 -#: pl_exec.c:3415 +#: pl_exec.c:3260 +msgid "You might want to use EXECUTE ... INTO or EXECUTE CREATE TABLE ... AS instead." +msgstr "Potresti usare invece EXECUTE ... INTO oppure EXECUTE CREATE TABLE ... AS." + +#: pl_exec.c:3550 pl_exec.c:3642 #, c-format msgid "cursor variable \"%s\" is null" msgstr "la variabile del cursore \"%s\" è nulla" -#: pl_exec.c:3331 -#: pl_exec.c:3422 +#: pl_exec.c:3557 pl_exec.c:3649 #, c-format msgid "cursor \"%s\" does not exist" msgstr "il cursore \"%s\" non esiste" -#: pl_exec.c:3345 +#: pl_exec.c:3571 msgid "relative or absolute cursor position is null" msgstr "la posizione relativa o assoluta del cursore è nulla" -#: pl_exec.c:3482 +#: pl_exec.c:3716 #, c-format msgid "null value cannot be assigned to variable \"%s\" declared NOT NULL" msgstr "il valore null non può essere assegnato alla variabile \"%s\" dichiarata NOT NULL" -#: pl_exec.c:3540 +#: pl_exec.c:3769 msgid "cannot assign non-composite value to a row variable" -msgstr "impossibile assegnare un valore non composto ad una variabile di tipo row" +msgstr "non è possibile assegnare un valore non composito ad una variabile di tipo row" -#: pl_exec.c:3582 +#: pl_exec.c:3811 msgid "cannot assign non-composite value to a record variable" -msgstr "impossibile assegnare un valore non composto ad una variabile di tipo record" - -#: pl_exec.c:3642 -#: pl_exec.c:3949 -#: pl_exec.c:4030 -#: pl_exec.c:4067 -#, c-format -msgid "record \"%s\" has no field \"%s\"" -msgstr "il record \"%s\" non ha nessun campo \"%s\"" +msgstr "non è possibile assegnare un valore non composito ad una variabile di tipo record" -#: pl_exec.c:3740 +#: pl_exec.c:3972 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" -msgstr "il numero di dimensioni dell'array (%d) supera il limite consentito (%d)" +msgstr "il numero di dimensioni dell'array (%d) eccede il massimo consentito (%d)" -#: pl_exec.c:3754 +#: pl_exec.c:3991 msgid "subscripted object is not an array" -msgstr "l'oggetto sul quale è stato richiesto un sottoindice non è un array" +msgstr "l'oggetto del quale è stato richiesto un elemento non è un array" -#: pl_exec.c:3777 +#: pl_exec.c:4014 msgid "array subscript in assignment must not be null" -msgstr "l'indice di un array nell'assegnamento non deve essere nullo" +msgstr "l'indice di un array nell'assegnamento non può essere nullo" -#: pl_exec.c:4158 +#: pl_exec.c:4486 #, c-format msgid "query \"%s\" did not return data" msgstr "la query \"%s\" non ha restituito dati" -#: pl_exec.c:4175 -#, c-format -msgid "query \"%s\" returned more than one row" -msgstr "la query \"%s\" ha restituito più di una riga" - -#: pl_exec.c:4180 +#: pl_exec.c:4494 #, c-format msgid "query \"%s\" returned %d column" msgid_plural "query \"%s\" returned %d columns" msgstr[0] "la query \"%s\" ha restituito %d colonna" msgstr[1] "la query \"%s\" ha restituito %d colonne" -#: pl_exec.c:4242 +#: pl_exec.c:4520 +#, c-format +msgid "query \"%s\" returned more than one row" +msgstr "la query \"%s\" ha restituito più di una riga" + +#: pl_exec.c:4578 #, c-format msgid "query \"%s\" is not a SELECT" msgstr "la query \"%s\" non è una SELECT" -#: gram.y:423 +#: gram.y:430 msgid "block label must be placed before DECLARE, not after" -msgstr "" +msgstr "l'etichetta del blocco dev'essere messa prima di DECLARE, non dopo" -#: gram.y:441 +#: gram.y:450 +#, c-format +msgid "collations are not supported by type %s" +msgstr "gli ordinamenti non sono supportati dal tipo %s" + +#: gram.y:465 msgid "row or record variable cannot be CONSTANT" msgstr "variabile di tipo ROW o RECORD non può essere CONSTANT" -#: gram.y:451 +#: gram.y:475 msgid "row or record variable cannot be NOT NULL" msgstr "la variabile di tipo ROW o RECORD non può essere NOT NULL" -#: gram.y:462 +#: gram.y:486 msgid "default value for row or record variable is not supported" msgstr "il valore di default per variabili di tipo ROW o RECORD non è supportato" -#: gram.y:606 -#: gram.y:632 -#, fuzzy, c-format +#: gram.y:631 gram.y:657 +#, c-format msgid "variable \"%s\" does not exist" -msgstr "la relazione \"%s\" non esiste" +msgstr "la variabile \"%s\" non esiste" -#: gram.y:650 -#: gram.y:663 +#: gram.y:675 gram.y:688 msgid "duplicate declaration" msgstr "dichiarazione duplicata" -#: gram.y:841 +#: gram.y:881 msgid "unrecognized GET DIAGNOSTICS item" -msgstr "" +msgstr "elemento GET DIAGNOSTICS sconosciuto" -#: gram.y:852 -#: gram.y:2975 +#: gram.y:892 gram.y:3090 #, c-format msgid "\"%s\" is not a scalar variable" msgstr "\"%s\" non è una variabile scalare" -#: gram.y:1114 -#: gram.y:1306 +#: gram.y:1154 gram.y:1347 msgid "loop variable of loop over rows must be a record or row variable or list of scalar variables" -msgstr "variabile del ciclo sulle righe deve avere una variabile di tipo row o record o una lista di variabili scalari" +msgstr "variabile del ciclo sulle righe deve essere una variabile di tipo row o record o una lista di variabili scalari" -#: gram.y:1148 +#: gram.y:1188 msgid "cursor FOR loop must have only one target variable" -msgstr "il cursore FOR nel ciclo deve avere solo una variabile obiettivo" +msgstr "il cursore FOR nel ciclo deve avere solo una variabile di destinazione" -#: gram.y:1155 +#: gram.y:1195 msgid "cursor FOR loop must use a bound cursor variable" msgstr "il cursore FOR nel ciclo deve usare una variabile cursore vincolata" -#: gram.y:1238 +#: gram.y:1278 msgid "integer FOR loop must have only one target variable" -msgstr "il valore integer del ciclo FOR deve avere solo una variabile obiettivo" +msgstr "il valore integer del ciclo FOR deve avere solo una variabile di destinazione" -#: gram.y:1273 +#: gram.y:1314 msgid "cannot specify REVERSE in query FOR loop" -msgstr "non puoi specificare REVERSE nel ciclo query FOR" - -#: gram.y:1420 -#: gram.y:1457 -#: gram.y:1505 -#: gram.y:2425 -#: gram.y:2506 -#: gram.y:2617 -#: gram.y:3249 +msgstr "non puoi specificare REVERSE nel ciclo FOR della query" + +#: gram.y:1461 +msgid "loop variable of FOREACH must be a known variable or list of variables" +msgstr "la variabile del ciclo FOREACH dev'essere una variabile o lista di variabili conosciuta" + +#: gram.y:1513 gram.y:1550 gram.y:1598 gram.y:2540 gram.y:2621 gram.y:2732 +#: gram.y:3365 msgid "unexpected end of function definition" -msgstr "inaspettata fine della definizione della funzione" - -#: gram.y:1525 -#: gram.y:1549 -#: gram.y:1561 -#: gram.y:1568 -#: gram.y:1652 -#: gram.y:1759 -#: gram.y:1936 -#: gram.y:2015 -#: gram.y:2128 -#: gram.y:2706 -#: gram.y:2770 -#: gram.y:3209 -#: gram.y:3230 +msgstr "fine della definizione della funzione inaspettata" + +#: gram.y:1618 gram.y:1642 gram.y:1654 gram.y:1661 gram.y:1750 gram.y:1758 +#: gram.y:1772 gram.y:1867 gram.y:2048 gram.y:2127 gram.y:2242 gram.y:2821 +#: gram.y:2885 gram.y:3325 gram.y:3346 msgid "syntax error" msgstr "errore di sintassi" -#: gram.y:1553 -#: gram.y:1555 -#: gram.y:1940 -#: gram.y:1942 +#: gram.y:1646 gram.y:1648 gram.y:2052 gram.y:2054 msgid "invalid SQLSTATE code" -msgstr "codice SQLSTATE invalido" +msgstr "codice SQLSTATE non valido" -#: gram.y:1706 -#, fuzzy +#: gram.y:1814 msgid "syntax error, expected \"FOR\"" -msgstr "errore di sintassi, atteso \"=\"" +msgstr "errore di sintassi, atteso \"FOR\"" -#: gram.y:1768 -#, fuzzy +#: gram.y:1876 msgid "FETCH statement cannot return multiple rows" -msgstr "l'opzione dell'istruzione RAISE non può essere nulla" +msgstr "l'istruzione FETCH non può restituire più di una riga" -#: gram.y:1824 +#: gram.y:1932 msgid "cursor variable must be a simple variable" msgstr "la variabile cursore deve essere una variabile semplice" -#: gram.y:1830 +#: gram.y:1938 #, c-format msgid "variable \"%s\" must be of type cursor or refcursor" msgstr "la variabile \"%s\" deve essere di tipo cursor o refcursor" -#: gram.y:1994 +#: gram.y:2106 msgid "label does not exist" msgstr "etichetta non esistente" -#: gram.y:2099 -#: gram.y:2110 -#, fuzzy, c-format +#: gram.y:2213 gram.y:2224 +#, c-format msgid "\"%s\" is not a known variable" -msgstr "\"%s\" non è una variabile scalare" +msgstr "\"%s\" non è una variabile conosciuta" -#: gram.y:2212 -#: gram.y:2222 -#: gram.y:2350 +#: gram.y:2326 gram.y:2336 gram.y:2464 msgid "mismatched parentheses" -msgstr "le parentesi non coincidono" +msgstr "le parentesi non corrispondono" -#: gram.y:2226 +#: gram.y:2340 #, c-format msgid "missing \"%s\" at end of SQL expression" msgstr "manca \"%s\" alla fine della espressione SQL" -#: gram.y:2232 +#: gram.y:2346 #, c-format msgid "missing \"%s\" at end of SQL statement" msgstr "manca \"%s\" alla fine dell'istruzione SQL" -#: gram.y:2249 -#, fuzzy +#: gram.y:2363 msgid "missing expression" -msgstr "manca \"%s\" alla fine della espressione SQL" +msgstr "espressione mancante" -#: gram.y:2251 -#, fuzzy +#: gram.y:2365 msgid "missing SQL statement" -msgstr "istruzione SQL" +msgstr "istruzione SQL mancante" -#: gram.y:2352 +#: gram.y:2466 msgid "incomplete data type declaration" msgstr "dichiarazione del tipo di dati incompleta" -#: gram.y:2374 +#: gram.y:2489 msgid "missing data type declaration" msgstr "manca la dichiarazione del tipo di dati" -#: gram.y:2430 +#: gram.y:2545 msgid "INTO specified more than once" msgstr "INTO specificato più di una volta" -#: gram.y:2598 +#: gram.y:2713 msgid "expected FROM or IN" msgstr "atteso FROM o IN" -#: gram.y:2658 -#, fuzzy +#: gram.y:2773 msgid "RETURN cannot have a parameter in function returning set" -msgstr "RETURN non può avere un parametro in una procedura (funzione che restituisce void)" +msgstr "RETURN non può avere un parametro in una funzione che restituisce insiemi" -#: gram.y:2659 +#: gram.y:2774 msgid "Use RETURN NEXT or RETURN QUERY." -msgstr "" +msgstr "Usa RETURN NEXT o RETURN QUERY." -#: gram.y:2667 +#: gram.y:2782 msgid "RETURN cannot have a parameter in function with OUT parameters" msgstr "RETURN non può avere un parametro in una funzione con parametri OUT" -#: gram.y:2676 +# Il fatto che una funzione che restituisce void sia chiamato "procedura" è un visual-basic-ismo che si può dimenticare +#: gram.y:2791 msgid "RETURN cannot have a parameter in function returning void" -msgstr "RETURN non può avere un parametro in una procedura (funzione che restituisce void)" +msgstr "RETURN non può avere un parametro in una funzione che restituisce void" -#: gram.y:2694 -#: gram.y:2701 +#: gram.y:2809 gram.y:2816 msgid "RETURN must specify a record or row variable in function returning row" msgstr "RETURN deve specificare una variabile RECORD o ROW in una funzione che restituisce una riga" -#: gram.y:2743 +#: gram.y:2858 msgid "RETURN NEXT cannot have a parameter in function with OUT parameters" msgstr "RETURN NEXT non può avere un parametro in una funzione con parametri OUT" -#: gram.y:2758 -#: gram.y:2765 +#: gram.y:2873 gram.y:2880 msgid "RETURN NEXT must specify a record or row variable in function returning row" msgstr "RETURN NEXT deve specificare una variabile RECORD o ROW in una funzione che restituisce una riga" -#: gram.y:2844 +#: gram.y:2959 #, c-format msgid "\"%s\" is declared CONSTANT" msgstr "\"%s\" è dichiarata CONSTANT" -#: gram.y:2906 -#: gram.y:2918 +#: gram.y:3021 gram.y:3033 msgid "record or row variable cannot be part of multiple-item INTO list" -msgstr "" +msgstr "un record o variabile riga on può fare parte di una lista INTO con più di un elemento" -#: gram.y:2963 +#: gram.y:3078 msgid "too many INTO variables specified" msgstr "troppe variabili INTO specificate" -#: gram.y:3170 +#: gram.y:3286 #, c-format msgid "end label \"%s\" specified for unlabelled block" msgstr "etichetta finale \"%s\" specificata per un blocco senza etichetta" -#: gram.y:3177 +#: gram.y:3293 #, c-format msgid "end label \"%s\" differs from block's label \"%s\"" msgstr "l'etichetta finale \"%s\" differisce da quella del blocco \"%s\"" -#: gram.y:3204 +#: gram.y:3320 #, c-format msgid "cursor \"%s\" has no arguments" msgstr "il cursore \"%s\" non ha argomenti" -#: gram.y:3218 +#: gram.y:3334 #, c-format msgid "cursor \"%s\" has arguments" msgstr "il cursore \"%s\" ha argomenti" -#: gram.y:3266 -#, fuzzy +#: gram.y:3382 msgid "unrecognized RAISE statement option" -msgstr "opzione \"%s\" dell'istruzione RAISE non riconosciuta" +msgstr "opzione dell'istruzione RAISE sconosciuta" -#: gram.y:3270 +#: gram.y:3386 msgid "syntax error, expected \"=\"" msgstr "errore di sintassi, atteso \"=\"" -#: pl_funcs.c:216 +#: pl_funcs.c:218 msgid "statement block" msgstr "blocco di istruzioni" -#: pl_funcs.c:218 +#: pl_funcs.c:220 msgid "assignment" msgstr "assegnazione" -#: pl_funcs.c:228 +#: pl_funcs.c:230 msgid "FOR with integer loop variable" -msgstr "variabile intera di un ciclo FOR" +msgstr "ciclo FOR con variabile di ciclo intera" -#: pl_funcs.c:230 +#: pl_funcs.c:232 msgid "FOR over SELECT rows" -msgstr "ciclo FOR su righe di SELECT" +msgstr "ciclo FOR su righe SELECT" -#: pl_funcs.c:232 +#: pl_funcs.c:234 msgid "FOR over cursor" msgstr "ciclo FOR su cursore" -#: pl_funcs.c:244 +#: pl_funcs.c:236 +msgid "FOREACH over array" +msgstr "FOREACH su array" + +#: pl_funcs.c:248 msgid "SQL statement" msgstr "istruzione SQL" -#: pl_funcs.c:246 +#: pl_funcs.c:250 msgid "EXECUTE statement" msgstr "istruzione EXECUTE" -#: pl_funcs.c:248 +#: pl_funcs.c:252 msgid "FOR over EXECUTE statement" msgstr "ciclo FOR su una istruzione EXECUTE" #: pl_handler.c:60 msgid "Sets handling of conflicts between PL/pgSQL variable names and table column names." -msgstr "" +msgstr "Imposta la gestione dei conflitti tra nomi di variabili PL/pgSQL e nomi di colonne di tabella." #. translator: %s is typically the translation of "syntax error" -#: pl_scanner.c:463 +#: pl_scanner.c:467 #, c-format msgid "%s at end of input" msgstr "%s alla fine dell'input" #. translator: first %s is typically the translation of "syntax error" -#: pl_scanner.c:479 +#: pl_scanner.c:483 #, c-format msgid "%s at or near \"%s\"" -msgstr "%s a o vicino \"%s\"" - -#~ msgid "expected \"[\"" -#~ msgstr "atteso \"[\"" - -#~ msgid "row \"%s\" has no field \"%s\"" -#~ msgstr "la riga \"%s\" non ha nessun campo \"%s\"" - -#~ msgid "row \"%s.%s\" has no field \"%s\"" -#~ msgstr "la riga \"%s.%s\" non ha nessun campo \"%s\"" - -#~ msgid "type of \"%s\" does not match that when preparing the plan" -#~ msgstr "" -#~ "il tipo di \"%s\" non coincide con quello in preparazione nel piano " -#~ "d'esecuzione" - -#~ msgid "type of \"%s.%s\" does not match that when preparing the plan" -#~ msgstr "" -#~ "il tipo di \"%s.%s\" non coincide con quello in preparazione nel piano " -#~ "d'esecuzione" - -#~ msgid "type of tg_argv[%d] does not match that when preparing the plan" -#~ msgstr "" -#~ "il tipo di tg_argv[%d] non coincide con quello in preparazione nel piano " -#~ "d'esecuzione" - -#~ msgid "N/A (dropped column)" -#~ msgstr "N/D (colonna eliminata)" - -#~ msgid "" -#~ "Number of returned columns (%d) does not match expected column count (%d)." -#~ msgstr "" -#~ "Il numero di colonne restituite (%d) non coincide con il numero di " -#~ "colonne attese (%d)" - -#~ msgid "Returned type %s does not match expected type %s in column \"%s\"." -#~ msgstr "" -#~ "Il tipo ritornato %s non coincide con il tipo previsto %s nella colonna " -#~ "\"%s\"" - -#~ msgid "only positional parameters can be aliased" -#~ msgstr "solo i parametri posizionali possono avere un alias" - -#~ msgid "function has no parameter \"%s\"" -#~ msgstr "la funzione non ha alcun parametro \"%s\"" - -#~ msgid "expected an integer variable" -#~ msgstr "è attesa una variabile intera" - -#~ msgid "syntax error at \"%s\"" -#~ msgstr "errore di sintassi a \"%s\"" - -#~ msgid "Expected \"FOR\", to open a cursor for an unbound cursor variable." -#~ msgstr "" -#~ "Atteso \"FOR\", per aprire un cursore su una variabile cursore non " -#~ "vincolata a nessuna query ('unbound')" - -#~ msgid "expected a cursor or refcursor variable" -#~ msgstr "attesa una variabile di tipo cursor o refcursor" - -#~ msgid "too many variables specified in SQL statement" -#~ msgstr "troppe variabili specificate nell'istruzione SQL" - -#~ msgid "" -#~ "RETURN cannot have a parameter in function returning set; use RETURN NEXT " -#~ "or RETURN QUERY" -#~ msgstr "" -#~ "RETURN non può avere parametri all'interno di funzioni che restituiscono " -#~ "insiemi; utilizzare RETURN NEXT o RETURN QUERY" - -#~ msgid "cannot assign to tg_argv" -#~ msgstr "non si può assegnare a tg_argv" - -#~ msgid "" -#~ "Expected record variable, row variable, or list of scalar variables " -#~ "following INTO." -#~ msgstr "" -#~ "Attesa una variabile di tipo RECORD, ROW o una lista di variabili scalari " -#~ "dopo la clausola INTO" - -#~ msgid "SQL statement in PL/PgSQL function \"%s\" near line %d" -#~ msgstr "istruzione SQL nella funzione PL/PgSQL \"%s\" vicino alla linea %d" - -#~ msgid "string literal in PL/PgSQL function \"%s\" near line %d" -#~ msgstr "" -#~ "stringa letterale nella funzione PL/PgSQL \"%s\" vicino alla linea %d" - -#~ msgid "expected \")\"" -#~ msgstr "atteso \")\"" - -#~ msgid "variable \"%s\" does not exist in the current block" -#~ msgstr "la variabile \"%s\" non esiste nel blocco corrente" - -#~ msgid "unterminated \" in identifier: %s" -#~ msgstr "\" non chiusa correttamente nell'identificatore: %s" - -#~ msgid "qualified identifier cannot be used here: %s" -#~ msgstr "" -#~ "l'identificatore qualificato non può essere usato in questo punto: %s" - -#~ msgid "unterminated quoted identifier" -#~ msgstr "un identificatore delimitato da apici non è chiuso correttamente" - -#~ msgid "unterminated /* comment" -#~ msgstr "commento /* non chiuso correttamente" - -#~ msgid "unterminated quoted string" -#~ msgstr "una stringa delimitata da apici non è chiusa correttamente" - -#~ msgid "unterminated dollar-quoted string" -#~ msgstr "stringa delimitata da $ non terminata" +msgstr "%s a o presso \"%s\"" diff --git a/src/pl/plpgsql/src/po/ja.po b/src/pl/plpgsql/src/po/ja.po index d622bffd4e..727b1a43a6 100644 --- a/src/pl/plpgsql/src/po/ja.po +++ b/src/pl/plpgsql/src/po/ja.po @@ -2,10 +2,11 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.0 beta 3\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-07-20 12:57+0900\n" -"PO-Revision-Date: 2010-07-21 18:46+0900\n" +"POT-Creation-Date: 2011-06-15 16:28+0900\n" +"PO-Revision-Date: 2011-08-30 21:37+0900\n" "Last-Translator: HOTTA Michihde \n" "Language-Team: Japan PostgreSQL Users Group \n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -13,31 +14,31 @@ msgstr "" "X-Poedit-Country: JAPAN\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: pl_comp.c:422 pl_handler.c:256 +#: pl_comp.c:427 pl_handler.c:266 #, c-format msgid "PL/pgSQL functions cannot accept type %s" msgstr "PL/pgSQL 関数では %s 型は指定できません" -#: pl_comp.c:501 +#: pl_comp.c:506 #, c-format msgid "could not determine actual return type for polymorphic function \"%s\"" msgstr "" "関数 \"%s\" が多様な形を持つため、実際の戻り値の型を特定できませんでした" -#: pl_comp.c:531 +#: pl_comp.c:536 msgid "trigger functions can only be called as triggers" msgstr "トリガー関数はトリガーとしてのみコールできます" -#: pl_comp.c:535 pl_handler.c:241 +#: pl_comp.c:540 pl_handler.c:251 #, c-format msgid "PL/pgSQL functions cannot return type %s" msgstr "PL/pgSQL 関数は %s 型を返せません" -#: pl_comp.c:576 +#: pl_comp.c:583 msgid "trigger functions cannot have declared arguments" msgstr "トリガー関数には引数を宣言できません" -#: pl_comp.c:577 +#: pl_comp.c:584 msgid "" "The arguments of the trigger can be accessed through TG_NARGS and TG_ARGV " "instead." @@ -45,398 +46,433 @@ msgstr "" "その代わり、トリガーの引数には TG_NARGS と TG_ARGV を通してのみアクセスできま" "す" -#: pl_comp.c:880 +#: pl_comp.c:912 #, c-format msgid "compilation of PL/pgSQL function \"%s\" near line %d" msgstr "PL/pgSQL 関数 \"%s\" の %d 行目付近でのコンパイル" -#: pl_comp.c:978 +#: pl_comp.c:935 +#, c-format +msgid "parameter name \"%s\" used more than once" +msgstr "パラメータ \"%s\" が複数指定されました" + +#: pl_comp.c:1045 #, c-format msgid "column reference \"%s\" is ambiguous" msgstr "列参照\"%s\"は曖昧です" -#: pl_comp.c:980 +#: pl_comp.c:1047 msgid "It could refer to either a PL/pgSQL variable or a table column." msgstr "" "PL/pgSQL変数もしくはテーブルのカラム名いずれかを参照していた可能性があります" -#: pl_comp.c:1690 +#: pl_comp.c:1227 pl_comp.c:1255 pl_exec.c:3862 pl_exec.c:4208 pl_exec.c:4294 +#: pl_exec.c:4385 +#, c-format +msgid "record \"%s\" has no field \"%s\"" +msgstr "レコード \"%s\" には列 \"%s\" はありません" + +#: pl_comp.c:1782 #, c-format msgid "relation \"%s\" does not exist" msgstr "リレーション \"%s\" がありません" -#: pl_comp.c:1722 +#: pl_comp.c:1814 #, c-format msgid "relation \"%s.%s\" does not exist" msgstr "リレーション \"%s.%s\" がありません" -#: pl_comp.c:1804 +#: pl_comp.c:1896 #, c-format msgid "variable \"%s\" has pseudo-type %s" msgstr "変数 \"%s\" の型は擬似タイプ %s です" -#: pl_comp.c:1865 +#: pl_comp.c:1957 #, c-format msgid "relation \"%s\" is not a table" msgstr "リレーション \"%s\" はテーブルではありません" -#: pl_comp.c:2017 +#: pl_comp.c:2117 #, c-format msgid "type \"%s\" is only a shell" msgstr "型 \"%s\" はシェルでのみ使えます" -#: pl_comp.c:2087 pl_comp.c:2140 +#: pl_comp.c:2190 pl_comp.c:2243 #, c-format msgid "unrecognized exception condition \"%s\"" msgstr "例外条件 \"%s\" が認識できません" -#: pl_comp.c:2295 +#: pl_comp.c:2401 #, c-format msgid "" "could not determine actual argument type for polymorphic function \"%s\"" msgstr "関数 \"%s\" が多様な形を持つため、実際の引数の型を特定できませんでした" -#: pl_exec.c:236 pl_exec.c:511 +#: pl_exec.c:239 pl_exec.c:510 msgid "during initialization of execution state" msgstr "実行状態の初期化中に" -#: pl_exec.c:243 +#: pl_exec.c:246 msgid "while storing call arguments into local variables" msgstr "引数をローカル変数に格納する際に" -#: pl_exec.c:298 pl_exec.c:666 +#: pl_exec.c:301 pl_exec.c:667 msgid "during function entry" msgstr "関数登録の際に" -#: pl_exec.c:329 pl_exec.c:697 +#: pl_exec.c:332 pl_exec.c:698 msgid "CONTINUE cannot be used outside a loop" msgstr "CONTINUE はループの外では使えません" -#: pl_exec.c:333 pl_exec.c:701 -msgid "RAISE without parameters cannot be used outside an exception handler" -msgstr "引数の無い RAISE は、例外ハンドラの外では使えません" - -#: pl_exec.c:337 +#: pl_exec.c:336 msgid "control reached end of function without RETURN" msgstr "RETURN が現れる前に、制御が関数の終わりに達しました" -#: pl_exec.c:344 +#: pl_exec.c:343 msgid "while casting return value to function's return type" msgstr "戻り値を関数の戻り値の型へキャストする際に" -#: pl_exec.c:357 pl_exec.c:2400 +#: pl_exec.c:356 pl_exec.c:2591 msgid "set-valued function called in context that cannot accept a set" msgstr "値のセットを受け付けないような文脈で、セット値を返す関数が呼ばれました" -#: pl_exec.c:395 +#: pl_exec.c:394 msgid "returned record type does not match expected record type" msgstr "戻りレコードの型が期待するレコードの型と一致しません" -#: pl_exec.c:453 pl_exec.c:709 +#: pl_exec.c:452 pl_exec.c:706 msgid "during function exit" msgstr "関数を抜ける際に" -#: pl_exec.c:705 +#: pl_exec.c:702 msgid "control reached end of trigger procedure without RETURN" msgstr "RETURN が現れる前に、制御がトリガー手続きの終わりに達しました" -#: pl_exec.c:714 +#: pl_exec.c:711 msgid "trigger procedure cannot return a set" msgstr "トリガー手続きはセットを返すことができません" -#: pl_exec.c:736 +#: pl_exec.c:733 msgid "" "returned row structure does not match the structure of the triggering table" msgstr "返された行の構造が、トリガーしているテーブルの構造とマッチしません" -#: pl_exec.c:799 +#: pl_exec.c:796 #, c-format msgid "PL/pgSQL function \"%s\" line %d %s" msgstr "PL/pgSQL 関数 \"%s\" の %d 行目で %s" -#: pl_exec.c:810 +#: pl_exec.c:807 #, c-format msgid "PL/pgSQL function \"%s\" %s" msgstr "PL/pgSQL 関数 \"%s\" で %s" #. translator: last %s is a plpgsql statement type name -#: pl_exec.c:818 +#: pl_exec.c:815 #, c-format msgid "PL/pgSQL function \"%s\" line %d at %s" msgstr "PL/pgSQL 関数 \"%s\" の %d 行目の型 %s" -#: pl_exec.c:824 +#: pl_exec.c:821 #, c-format msgid "PL/pgSQL function \"%s\"" msgstr "PL/pgSQL 関数 \"%s\"" -#: pl_exec.c:932 +#: pl_exec.c:929 msgid "during statement block local variable initialization" msgstr "ステートメントブロックでローカル変数を初期化する際に" -#: pl_exec.c:974 +#: pl_exec.c:971 #, c-format msgid "variable \"%s\" declared NOT NULL cannot default to NULL" msgstr "" "変数 \"%s\" は NOT NULL として宣言されているため、初期値を NULL にすることは" "できません" -#: pl_exec.c:1023 +#: pl_exec.c:1021 msgid "during statement block entry" msgstr "ステートメントブロックを登録する際に" -#: pl_exec.c:1044 +#: pl_exec.c:1042 msgid "during statement block exit" msgstr "ステートメントブロックを抜ける際に" -#: pl_exec.c:1087 +#: pl_exec.c:1085 msgid "during exception cleanup" msgstr "例外をクリーンアップする際に" -#: pl_exec.c:1553 +#: pl_exec.c:1570 msgid "case not found" msgstr "case が見つかりません" -#: pl_exec.c:1554 +#: pl_exec.c:1571 msgid "CASE statement is missing ELSE part." msgstr "CASE ステートメントに ELSE 部分がありません" -#: pl_exec.c:1710 +#: pl_exec.c:1725 msgid "lower bound of FOR loop cannot be null" msgstr "FOR ループの下限を NULL にすることはできません" -#: pl_exec.c:1725 +#: pl_exec.c:1740 msgid "upper bound of FOR loop cannot be null" msgstr "FOR ループの上限を NULL にすることはできません" -#: pl_exec.c:1742 +#: pl_exec.c:1757 msgid "BY value of FOR loop cannot be null" msgstr "FOR ループにおける BY の値を NULL にすることはできません" -#: pl_exec.c:1748 +#: pl_exec.c:1763 msgid "BY value of FOR loop must be greater than zero" msgstr "FOR ループにおける BY の値はゼロより大きくなければなりません" -#: pl_exec.c:1920 pl_exec.c:3182 +#: pl_exec.c:1933 pl_exec.c:3395 #, c-format msgid "cursor \"%s\" already in use" msgstr "カーソル \"%s\" はすでに使われています" -#: pl_exec.c:1943 pl_exec.c:3244 +#: pl_exec.c:1956 pl_exec.c:3457 msgid "arguments given for cursor without arguments" msgstr "引数なしのカーソルに引数が与えられました" -#: pl_exec.c:1962 pl_exec.c:3263 +#: pl_exec.c:1975 pl_exec.c:3476 msgid "arguments required for cursor" msgstr "カーソルには引数が必要です" -#: pl_exec.c:2184 gram.y:2729 +#: pl_exec.c:2063 +msgid "FOREACH expression must not be null" +msgstr "FOREACH式はNULLではいけません" + +#: pl_exec.c:2069 +#, c-format +msgid "FOREACH expression must yield an array, not type %s" +msgstr "FOREACH式は%s型ではなく配列を生成しなければなりません" + +#: pl_exec.c:2086 +#, c-format +msgid "slice dimension (%d) is out of the valid range 0..%d" +msgstr "範囲次元%dは有効範囲0から%dまでの間にありません" + +#: pl_exec.c:2113 +msgid "FOREACH ... SLICE loop variable must be of an array type" +msgstr "FOREACH ... SLICEループ変数は配列型でなければなりません" + +#: pl_exec.c:2117 +msgid "FOREACH loop variable must not be of an array type" +msgstr "FOREACHループ変数は配列型ではいけません" + +#: pl_exec.c:2375 gram.y:2844 msgid "cannot use RETURN NEXT in a non-SETOF function" msgstr "SETOF でない関数では RETURN NEXT は使えません" -#: pl_exec.c:2208 pl_exec.c:2274 +#: pl_exec.c:2399 pl_exec.c:2465 msgid "wrong result type supplied in RETURN NEXT" msgstr "RETURN NEXT において誤った戻り値の型が指定されています" -#: pl_exec.c:2230 pl_exec.c:3632 pl_exec.c:3911 pl_exec.c:3945 pl_exec.c:4007 -#: pl_exec.c:4026 pl_exec.c:4063 +#: pl_exec.c:2421 pl_exec.c:3849 pl_exec.c:4166 pl_exec.c:4201 pl_exec.c:4268 +#: pl_exec.c:4287 pl_exec.c:4355 pl_exec.c:4378 #, c-format msgid "record \"%s\" is not assigned yet" msgstr "レコード \"%s\" には、まだ値が代入されていません" -#: pl_exec.c:2232 pl_exec.c:3634 pl_exec.c:3913 pl_exec.c:3947 pl_exec.c:4009 -#: pl_exec.c:4028 pl_exec.c:4065 +#: pl_exec.c:2423 pl_exec.c:3851 pl_exec.c:4168 pl_exec.c:4203 pl_exec.c:4270 +#: pl_exec.c:4289 pl_exec.c:4357 pl_exec.c:4380 msgid "The tuple structure of a not-yet-assigned record is indeterminate." msgstr "まだ代入されていないレコードのタプル構造は不定です" -#: pl_exec.c:2236 pl_exec.c:2255 +#: pl_exec.c:2427 pl_exec.c:2446 msgid "wrong record type supplied in RETURN NEXT" msgstr "RETURN NEXT において、誤ったレコード型が指定されています" -#: pl_exec.c:2297 +#: pl_exec.c:2488 msgid "RETURN NEXT must have a parameter" msgstr "RETURN NEXT にはパラメーターが必要です" -#: pl_exec.c:2328 gram.y:2788 +#: pl_exec.c:2519 gram.y:2903 msgid "cannot use RETURN QUERY in a non-SETOF function" msgstr "SETOF でない関数では RETURN QUERY は使えません" -#: pl_exec.c:2348 +#: pl_exec.c:2539 msgid "structure of query does not match function result type" msgstr "クエリーの構造が関数の戻り値の型と一致しません" -#: pl_exec.c:2480 +#: pl_exec.c:2637 +msgid "RAISE without parameters cannot be used outside an exception handler" +msgstr "引数の無い RAISE は、例外ハンドラの外では使えません" + +#: pl_exec.c:2678 msgid "too few parameters specified for RAISE" msgstr "RAISE に指定されたパラメーターの数が足りません" -#: pl_exec.c:2506 +#: pl_exec.c:2704 msgid "too many parameters specified for RAISE" msgstr "RAISE に指定されたパラメーターの数が多すぎます" -#: pl_exec.c:2526 +#: pl_exec.c:2724 msgid "RAISE statement option cannot be null" msgstr "RAISE ステートメントのオプションには NULL は指定できません" -#: pl_exec.c:2536 pl_exec.c:2545 pl_exec.c:2553 pl_exec.c:2561 +#: pl_exec.c:2734 pl_exec.c:2743 pl_exec.c:2751 pl_exec.c:2759 #, c-format msgid "RAISE option already specified: %s" msgstr "RAISE オプションは既に指定されています: %s" -#: pl_exec.c:2596 pl_exec.c:2597 +#: pl_exec.c:2794 pl_exec.c:2795 #, c-format msgid "%s" msgstr "%s" -#: pl_exec.c:2743 pl_exec.c:3047 +#: pl_exec.c:2945 pl_exec.c:3081 pl_exec.c:3260 msgid "cannot COPY to/from client in PL/pgSQL" msgstr "PL/pgSQL 内では COPY to/from は使えません" -#: pl_exec.c:2747 pl_exec.c:3051 +#: pl_exec.c:2949 pl_exec.c:3085 pl_exec.c:3264 msgid "cannot begin/end transactions in PL/pgSQL" msgstr "PL/pgSQL 内ではトランザクションを開始/終了できません" -#: pl_exec.c:2748 pl_exec.c:3052 +#: pl_exec.c:2950 pl_exec.c:3086 pl_exec.c:3265 msgid "Use a BEGIN block with an EXCEPTION clause instead." msgstr "代わりに EXCEPTION 句を伴う BEGIN ブロックを使用してください" -#: pl_exec.c:2896 pl_exec.c:3076 +#: pl_exec.c:3109 pl_exec.c:3289 msgid "INTO used with a command that cannot return data" msgstr "データを返せない命令で INTO が使われました" -#: pl_exec.c:2916 pl_exec.c:3096 +#: pl_exec.c:3129 pl_exec.c:3309 msgid "query returned no rows" msgstr "クエリーは行を返しませんでした" -#: pl_exec.c:2925 pl_exec.c:3105 +#: pl_exec.c:3138 pl_exec.c:3318 msgid "query returned more than one row" msgstr "クエリーが複数の行を返しました" -#: pl_exec.c:2939 +#: pl_exec.c:3152 msgid "query has no destination for result data" msgstr "クエリーに結果データの返却先が指定されていません" -#: pl_exec.c:2940 +#: pl_exec.c:3153 msgid "If you want to discard the results of a SELECT, use PERFORM instead." msgstr "SELECT の結果を破棄したい場合は、代わりに PERFORM を使ってください" -#: pl_exec.c:2973 pl_exec.c:5547 +#: pl_exec.c:3186 pl_exec.c:5929 msgid "query string argument of EXECUTE is null" msgstr "EXECUTE のクエリー文字列の引数が NULL です" -#: pl_exec.c:3038 +#: pl_exec.c:3251 msgid "EXECUTE of SELECT ... INTO is not implemented" msgstr "SELECT ... INTO の EXECUTE は実装されていません" -#: pl_exec.c:3039 -msgid "You might want to use EXECUTE ... INTO instead." -msgstr "代わりに EXECUTE ... INTO を使ってください" +#: pl_exec.c:3252 +msgid "" +"You might want to use EXECUTE ... INTO or EXECUTE CREATE TABLE ... AS " +"instead." +msgstr "代わりにEXECUTE ... INTOまたはEXECUTE CREATE TABLE ... ASを使用する方がよいかもしれません。" -#: pl_exec.c:3327 pl_exec.c:3418 +#: pl_exec.c:3540 pl_exec.c:3631 #, c-format msgid "cursor variable \"%s\" is null" msgstr "カーソル変数 \"%s\" が NULL です" -#: pl_exec.c:3334 pl_exec.c:3425 +#: pl_exec.c:3547 pl_exec.c:3638 #, c-format msgid "cursor \"%s\" does not exist" msgstr "カーソル \"%s\" は存在しません" -#: pl_exec.c:3348 +#: pl_exec.c:3561 msgid "relative or absolute cursor position is null" msgstr "相対もしくは絶対カーソル位置が NULL です" -#: pl_exec.c:3485 +#: pl_exec.c:3702 #, c-format msgid "null value cannot be assigned to variable \"%s\" declared NOT NULL" msgstr "NOT NULL として宣言された変数 \"%s\" には NULL を代入できません" -#: pl_exec.c:3543 +#: pl_exec.c:3760 msgid "cannot assign non-composite value to a row variable" msgstr "複合値でない値を行変数に代入できません" -#: pl_exec.c:3585 +#: pl_exec.c:3802 msgid "cannot assign non-composite value to a record variable" msgstr "複合値でない値をレコード変数に代入できません" -#: pl_exec.c:3645 pl_exec.c:3952 pl_exec.c:4033 pl_exec.c:4070 -#, c-format -msgid "record \"%s\" has no field \"%s\"" -msgstr "レコード \"%s\" には列 \"%s\" はありません" - -#: pl_exec.c:3743 +#: pl_exec.c:3973 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "配列の次元数(%d)が指定可能な最大値(%d)を超えています" -#: pl_exec.c:3757 +#: pl_exec.c:3992 msgid "subscripted object is not an array" msgstr "添字つきオブジェクトは配列ではありません" -#: pl_exec.c:3780 +#: pl_exec.c:4015 msgid "array subscript in assignment must not be null" msgstr "代入における配列の添字が NULL であってはなりません" -#: pl_exec.c:4161 +#: pl_exec.c:4493 #, c-format msgid "query \"%s\" did not return data" msgstr "クエリー \"%s\" がデータを返しませんでした" -#: pl_exec.c:4169 +#: pl_exec.c:4501 #, c-format msgid "query \"%s\" returned %d column" msgid_plural "query \"%s\" returned %d columns" msgstr[0] "クエリー \"%s\" が %d 個の列を返しました" msgstr[1] "クエリー \"%s\" が %d 個の列を返しました" -#: pl_exec.c:4195 +#: pl_exec.c:4527 #, c-format msgid "query \"%s\" returned more than one row" msgstr "クエリー \"%s\" が複数の行を返しました" -#: pl_exec.c:4253 +#: pl_exec.c:4585 #, c-format msgid "query \"%s\" is not a SELECT" msgstr "クエリー \"%s\" が SELECT ではありません" -#: pl_gram.c:1091 +#: pl_gram.c:1137 msgid "syntax error: cannot back up" msgstr "構文エラー: バックアップできません" -#: gram.y:423 +#: gram.y:430 msgid "block label must be placed before DECLARE, not after" msgstr "ブロックラベルは DECLARE の後ではなく前に置かなければなりません" -#: gram.y:441 +#: gram.y:450 +#, c-format +msgid "collations are not supported by type %s" +msgstr "%s型では照合順序はサポートされません" + +#: gram.y:465 msgid "row or record variable cannot be CONSTANT" -msgstr "行またはレコード変数を CONSTRAINT にはできません" +msgstr "行またはレコード変数を CONSTANT にはできません" -#: gram.y:451 +#: gram.y:475 msgid "row or record variable cannot be NOT NULL" msgstr "行またはレコード変数を NOT NULL にはできません" -#: gram.y:462 +#: gram.y:486 msgid "default value for row or record variable is not supported" msgstr "行またはレコード変数のデフォルト値指定はサポートされていません" -#: gram.y:606 gram.y:632 +#: gram.y:631 gram.y:657 #, c-format msgid "variable \"%s\" does not exist" msgstr "変数\"%s\"は存在しません" -#: gram.y:650 gram.y:663 +#: gram.y:675 gram.y:688 msgid "duplicate declaration" msgstr "重複した宣言です。" -#: gram.y:841 +#: gram.y:881 msgid "unrecognized GET DIAGNOSTICS item" msgstr "GET DIAGNOSTICS 項目が認識できません" -#: gram.y:852 gram.y:2975 +#: gram.y:892 gram.y:3090 #, c-format msgid "\"%s\" is not a scalar variable" msgstr "\"%s\" はスカラー変数ではありません" -#: gram.y:1114 gram.y:1306 +#: gram.y:1154 gram.y:1347 msgid "" "loop variable of loop over rows must be a record or row variable or list of " "scalar variables" @@ -444,216 +480,224 @@ msgstr "" "行をまたがるループにおけるループ変数は、レコード、行変数、スカラー変数並びの" "いずれかでなければなりません" -#: gram.y:1148 +#: gram.y:1188 msgid "cursor FOR loop must have only one target variable" msgstr "カーソルを使った FOR ループには、ターゲット変数が1個だけ必要です" -#: gram.y:1155 +#: gram.y:1195 msgid "cursor FOR loop must use a bound cursor variable" msgstr "" "カーソルを使った FOR ループでは、それに関連付けられたカーソル変数を使用しなけ" "ればなりません" -#: gram.y:1238 +#: gram.y:1278 msgid "integer FOR loop must have only one target variable" msgstr "整数を使った FOR ループには、ターゲット変数が1個だけ必要です" -#: gram.y:1273 +#: gram.y:1314 msgid "cannot specify REVERSE in query FOR loop" msgstr "クエリーを使った FOR ループの中では REVERSE は指定できません" -#: gram.y:1420 gram.y:1457 gram.y:1505 gram.y:2425 gram.y:2506 gram.y:2617 -#: gram.y:3249 +#: gram.y:1461 +msgid "loop variable of FOREACH must be a known variable or list of variables" +msgstr "FOREACHのループ変数は既知の変数または変数のリストでなければなりません" + +#: gram.y:1513 gram.y:1550 gram.y:1598 gram.y:2540 gram.y:2621 gram.y:2732 +#: gram.y:3365 msgid "unexpected end of function definition" msgstr "予期しない関数定義の終端に達しました" -#: gram.y:1525 gram.y:1549 gram.y:1561 gram.y:1568 gram.y:1652 gram.y:1759 -#: gram.y:1936 gram.y:2015 pl_gram.c:3644 gram.y:2128 gram.y:2706 gram.y:2770 -#: gram.y:3209 gram.y:3230 +#: gram.y:1618 gram.y:1642 gram.y:1654 gram.y:1661 gram.y:1750 gram.y:1758 +#: gram.y:1772 gram.y:1867 gram.y:2048 gram.y:2127 pl_gram.c:3810 gram.y:2242 +#: gram.y:2821 gram.y:2885 gram.y:3325 gram.y:3346 msgid "syntax error" msgstr "構文エラー" -#: gram.y:1553 gram.y:1555 gram.y:1940 gram.y:1942 +#: gram.y:1646 gram.y:1648 gram.y:2052 gram.y:2054 msgid "invalid SQLSTATE code" msgstr "無効な SQLSTATE コードです" -#: gram.y:1706 +#: gram.y:1814 msgid "syntax error, expected \"FOR\"" msgstr "構文エラー。\"FOR\" を期待していました" -#: gram.y:1768 +#: gram.y:1876 msgid "FETCH statement cannot return multiple rows" msgstr "FETCH ステートメントは複数行を返せません" -#: gram.y:1824 +#: gram.y:1932 msgid "cursor variable must be a simple variable" msgstr "カーソル変数は単純変数でなければなりません" -#: gram.y:1830 +#: gram.y:1938 #, c-format msgid "variable \"%s\" must be of type cursor or refcursor" msgstr "変数 \"%s\" は cursor 型または refcursor 型でなければなりません" -#: gram.y:1994 +#: gram.y:2106 msgid "label does not exist" msgstr "ラベルが存在しません" -#: pl_gram.c:3640 +#: pl_gram.c:3806 msgid "syntax error; also virtual memory exhausted" msgstr "構文エラー: 仮想メモリも枯渇しました" -#: pl_gram.c:3760 +#: pl_gram.c:3926 msgid "parser stack overflow" msgstr "パーサのスタックがオーバーフローしました" -#: gram.y:2099 gram.y:2110 +#: gram.y:2213 gram.y:2224 #, c-format msgid "\"%s\" is not a known variable" msgstr "\"%s\"は既知の変数ではありません" -#: gram.y:2212 gram.y:2222 gram.y:2350 +#: gram.y:2326 gram.y:2336 gram.y:2464 msgid "mismatched parentheses" msgstr "カッコが対応していません" -#: gram.y:2226 +#: gram.y:2340 #, c-format msgid "missing \"%s\" at end of SQL expression" msgstr "SQL 表現式の終端に \"%s\" がありません" -#: gram.y:2232 +#: gram.y:2346 #, c-format msgid "missing \"%s\" at end of SQL statement" msgstr "SQL ステートメントの終端に \"%s\" がありません" -#: gram.y:2249 +#: gram.y:2363 msgid "missing expression" msgstr "表現式がありません" -#: gram.y:2251 +#: gram.y:2365 msgid "missing SQL statement" msgstr "SQLステートメントがありません" -#: gram.y:2352 +#: gram.y:2466 msgid "incomplete data type declaration" msgstr "データ型の定義が不完全です" -#: gram.y:2374 +#: gram.y:2489 msgid "missing data type declaration" msgstr "データ型の定義がありません" -#: gram.y:2430 +#: gram.y:2545 msgid "INTO specified more than once" msgstr "INTO が複数回指定されています" -#: gram.y:2598 +#: gram.y:2713 msgid "expected FROM or IN" msgstr "FROM もしくは IN を期待していました" -#: gram.y:2658 +#: gram.y:2773 msgid "RETURN cannot have a parameter in function returning set" msgstr "値のセットを返す関数では、RETURNにパラメータを指定できません" -#: gram.y:2659 +#: gram.y:2774 msgid "Use RETURN NEXT or RETURN QUERY." msgstr "RETURN NEXT もしくは RETURN QUERY を使用してください" -#: gram.y:2667 +#: gram.y:2782 msgid "RETURN cannot have a parameter in function with OUT parameters" msgstr "OUT パラメータのない関数では、RETURN にはパラメータを指定できません" -#: gram.y:2676 +#: gram.y:2791 msgid "RETURN cannot have a parameter in function returning void" msgstr "void を返す関数では、RETURN にはパラメータを指定できません" -#: gram.y:2694 gram.y:2701 +#: gram.y:2809 gram.y:2816 msgid "RETURN must specify a record or row variable in function returning row" msgstr "" "行を返す関数では、RETURN にレコードまたは行変数を指定しなければなりません" -#: gram.y:2743 +#: gram.y:2858 msgid "RETURN NEXT cannot have a parameter in function with OUT parameters" msgstr "" "OUT パラメータのない関数では、RETURN NEXT にはパラメータを指定できません" -#: gram.y:2758 gram.y:2765 +#: gram.y:2873 gram.y:2880 msgid "" "RETURN NEXT must specify a record or row variable in function returning row" msgstr "" "行を返す関数では、RETURN NEXT にレコードまたは行変数を指定しなければなりませ" "ん" -#: gram.y:2844 +#: gram.y:2959 #, c-format msgid "\"%s\" is declared CONSTANT" msgstr "\"%s\" は CONSTANT として宣言されています" -#: gram.y:2906 gram.y:2918 +#: gram.y:3021 gram.y:3033 msgid "record or row variable cannot be part of multiple-item INTO list" msgstr "" "レコードもしくは行変数は、複数項目を持つ INTO リストの一部分としては指定でき" "ません" -#: gram.y:2963 +#: gram.y:3078 msgid "too many INTO variables specified" msgstr "INTO 変数の指定が多すぎます" -#: gram.y:3170 +#: gram.y:3286 #, c-format msgid "end label \"%s\" specified for unlabelled block" msgstr "ラベル無しブロックで終端ラベル \"%s\" が指定されました" -#: gram.y:3177 +#: gram.y:3293 #, c-format msgid "end label \"%s\" differs from block's label \"%s\"" msgstr "終端ラベル \"%s\" がブロックのラベル \"%s\" と異なります" -#: gram.y:3204 +#: gram.y:3320 #, c-format msgid "cursor \"%s\" has no arguments" msgstr "カーソル \"%s\" に引数がありません" -#: gram.y:3218 +#: gram.y:3334 #, c-format msgid "cursor \"%s\" has arguments" msgstr "カーソル \"%s\" に引数がついています" -#: gram.y:3266 +#: gram.y:3382 msgid "unrecognized RAISE statement option" msgstr "RAISE ステートメントのオプションを認識できません" -#: gram.y:3270 +#: gram.y:3386 msgid "syntax error, expected \"=\"" msgstr "構文エラー。\"=\" を期待していました" -#: pl_funcs.c:216 +#: pl_funcs.c:218 msgid "statement block" msgstr "ステートメントブロック" -#: pl_funcs.c:218 +#: pl_funcs.c:220 msgid "assignment" msgstr "代入" -#: pl_funcs.c:228 +#: pl_funcs.c:230 msgid "FOR with integer loop variable" msgstr "整数のループ変数を伴う FOR" -#: pl_funcs.c:230 +#: pl_funcs.c:232 msgid "FOR over SELECT rows" msgstr "SELECT 行を制御する FOR" -#: pl_funcs.c:232 +#: pl_funcs.c:234 msgid "FOR over cursor" msgstr "カーソルを制御する FOR" -#: pl_funcs.c:244 +#: pl_funcs.c:236 +msgid "FOREACH over array" +msgstr "配列全体に対するFOREACH" + +#: pl_funcs.c:248 msgid "SQL statement" msgstr "SQL ステートメント" -#: pl_funcs.c:246 +#: pl_funcs.c:250 msgid "EXECUTE statement" msgstr "EXECUTE ステートメント" -#: pl_funcs.c:248 +#: pl_funcs.c:252 msgid "FOR over EXECUTE statement" msgstr "EXECUTE ステートメントを制御する FOR" @@ -664,13 +708,13 @@ msgid "" msgstr "PL/pgSQL変数名とテーブルのカラム名の間の衝突処理を設定してください" #. translator: %s is typically the translation of "syntax error" -#: pl_scanner.c:463 +#: pl_scanner.c:467 #, c-format msgid "%s at end of input" msgstr "入力の最後で %s" #. translator: first %s is typically the translation of "syntax error" -#: pl_scanner.c:479 +#: pl_scanner.c:483 #, c-format msgid "%s at or near \"%s\"" msgstr "\"%2$s\" もしくはその近辺で %1$s" diff --git a/src/pl/plpgsql/src/po/ko.po b/src/pl/plpgsql/src/po/ko.po index 3b858e8826..fdf4f35ef2 100644 --- a/src/pl/plpgsql/src/po/ko.po +++ b/src/pl/plpgsql/src/po/ko.po @@ -10,6 +10,7 @@ msgstr "" "PO-Revision-Date: 2010-09-09 17:00+0000\n" "Last-Translator: EnterpriseDB translation team \n" "Language-Team: EnterpriseDB translation team \n" +"Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/pl/plpgsql/src/po/pl.po b/src/pl/plpgsql/src/po/pl.po new file mode 100644 index 0000000000..61afe1138d --- /dev/null +++ b/src/pl/plpgsql/src/po/pl.po @@ -0,0 +1,741 @@ +# plpgsql message translation file for plpgsql +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# +# Begina Felicysym , 2011. +msgid "" +msgstr "" +"Project-Id-Version: plpgsql (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-09-29 22:53+0000\n" +"PO-Revision-Date: 2011-09-30 09:49-0300\n" +"Last-Translator: Begina Felicysym \n" +"Language-Team: Polish TotroiseSvn translation team\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1-beta1\n" + +#: pl_comp.c:427 pl_handler.c:266 +#, c-format +msgid "PL/pgSQL functions cannot accept type %s" +msgstr "funkcje PL/pgSQL nie obsługują typu %s" + +#: pl_comp.c:506 +#, c-format +msgid "could not determine actual return type for polymorphic function \"%s\"" +msgstr "nie można określić, jaki typ zwraca funkcja polimorficzna \"%s\"" + +#: pl_comp.c:536 +msgid "trigger functions can only be called as triggers" +msgstr "procedury wyzwalaczy mogą być wywoływane jedynie przez wyzwalacze" + +#: pl_comp.c:540 pl_handler.c:251 +#, c-format +msgid "PL/pgSQL functions cannot return type %s" +msgstr "funkcje PL/pgSQL nie mogą zwracać wartości typu %s" + +#: pl_comp.c:583 +msgid "trigger functions cannot have declared arguments" +msgstr "funkcje wyzwalaczy nie mogą przyjmować żadnych argumentów" + +#: pl_comp.c:584 +msgid "" +"The arguments of the trigger can be accessed through TG_NARGS and TG_ARGV " +"instead." +msgstr "" +"Argumenty dla procedury wyzwalacza są umieszczane w zmiennych TG_NARGS oraz " +"TG_ARGV." + +#: pl_comp.c:912 +#, c-format +msgid "compilation of PL/pgSQL function \"%s\" near line %d" +msgstr "kompilacja funkcji PL/pgSQL \"%s\", w okolicach linii %d" + +#: pl_comp.c:935 +#, c-format +msgid "parameter name \"%s\" used more than once" +msgstr "nazwa argumentu \"%s\" użyta więcej niż raz" + +#: pl_comp.c:1045 +#, c-format +msgid "column reference \"%s\" is ambiguous" +msgstr "nazwa kolumny \"%s\" jest niejednoznaczna" + +#: pl_comp.c:1047 +msgid "It could refer to either a PL/pgSQL variable or a table column." +msgstr "Nazwa może odnosić się do zmiennej PL/pgSQL albo kolumny tabeli." + +#: pl_comp.c:1227 pl_comp.c:1255 pl_exec.c:3862 pl_exec.c:4208 pl_exec.c:4294 +#: pl_exec.c:4385 +#, c-format +msgid "record \"%s\" has no field \"%s\"" +msgstr "rekord \"%s\" nie posiada pola \"%s\"" + +#: pl_comp.c:1782 +#, c-format +msgid "relation \"%s\" does not exist" +msgstr "relacja \"%s\" nie istnieje" + +#: pl_comp.c:1814 +#, c-format +msgid "relation \"%s.%s\" does not exist" +msgstr "relacja \"%s.%s\" nie istnieje" + +#: pl_comp.c:1896 +#, c-format +msgid "variable \"%s\" has pseudo-type %s" +msgstr "zmienna \"%s\" jest psuedo-typu %s" + +#: pl_comp.c:1957 +#, c-format +msgid "relation \"%s\" is not a table" +msgstr "relacja \"%s\" nie jest tabelą" + +#: pl_comp.c:2117 +#, c-format +msgid "type \"%s\" is only a shell" +msgstr "typ \"%s\" jest jedynie powłoką" + +#: pl_comp.c:2190 pl_comp.c:2243 +#, c-format +msgid "unrecognized exception condition \"%s\"" +msgstr "nieznany warunek wyjątku \"%s\"" + +#: pl_comp.c:2401 +#, c-format +msgid "" +"could not determine actual argument type for polymorphic function \"%s\"" +msgstr "nie można określić typu argumentu dla funkcji polimorficznej \"%s\"" + +#: pl_exec.c:239 pl_exec.c:510 +msgid "during initialization of execution state" +msgstr "podczas inicjacji stanu wykonywania" + +#: pl_exec.c:246 +msgid "while storing call arguments into local variables" +msgstr "podczas przepisywania argumentów wywołania do lokalnych zmiennych" + +#: pl_exec.c:301 pl_exec.c:667 +msgid "during function entry" +msgstr "podczas wchodzenia do funkcji" + +#: pl_exec.c:332 pl_exec.c:698 +msgid "CONTINUE cannot be used outside a loop" +msgstr "instrukcja CONTINUE nie może być użyta poza pętlą" + +#: pl_exec.c:336 +msgid "control reached end of function without RETURN" +msgstr "osiągnięto koniec funkcji, brakuje instrukcji RETURN" + +#: pl_exec.c:343 +msgid "while casting return value to function's return type" +msgstr "podczas rzutowania zwracanej wartości na typ wyniku funkcji" + +#: pl_exec.c:356 pl_exec.c:2591 +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" + +#: pl_exec.c:394 +msgid "returned record type does not match expected record type" +msgstr "został zwrócony rekord o niewłaściwym typie" + +#: pl_exec.c:452 pl_exec.c:706 +msgid "during function exit" +msgstr "podczas wyjścia z funkcji" + +#: pl_exec.c:702 +msgid "control reached end of trigger procedure without RETURN" +msgstr "osiągnięto koniec funkcji wyzwalacza, brakuje instrukcji RETURN" + +#: pl_exec.c:711 +msgid "trigger procedure cannot return a set" +msgstr "procedura wyzwalacza nie może zwracać zbioru rekordów" + +#: pl_exec.c:733 +msgid "" +"returned row structure does not match the structure of the triggering table" +msgstr "" +"struktura zwróconego rekordu nie odpowiada strukturze tabeli dla której " +"wywołano wyzwalacz" + +#: pl_exec.c:796 +#, c-format +msgid "PL/pgSQL function \"%s\" line %d %s" +msgstr "funkcja PL/pgSQL \"%s\", wiersz %d %s" + +#: pl_exec.c:807 +#, c-format +msgid "PL/pgSQL function \"%s\" %s" +msgstr "funkcja PL/pgSQL \"%s\" %s" + +#. translator: last %s is a plpgsql statement type name +#: pl_exec.c:815 +#, c-format +msgid "PL/pgSQL function \"%s\" line %d at %s" +msgstr "funkcja PL/pgSQL \"%s\", wiersz %d w %s" + +#: pl_exec.c:821 +#, c-format +msgid "PL/pgSQL function \"%s\"" +msgstr "funkcja PL/pgSQL \"%s\"" + +#: pl_exec.c:929 +msgid "during statement block local variable initialization" +msgstr "podczas inicjacji zmiennych lokalnych bloku instrukcji" + +#: pl_exec.c:971 +#, c-format +msgid "variable \"%s\" declared NOT NULL cannot default to NULL" +msgstr "" +"zmienna \"%s\" zadeklarowana jako NOT NULL nie może mieć wartości domyślnej " +"NULL" + +#: pl_exec.c:1021 +msgid "during statement block entry" +msgstr "podczas wchodzenia do bloku instrukcji" + +#: pl_exec.c:1042 +msgid "during statement block exit" +msgstr "podczas opuszczania bloku instrukcji" + +#: pl_exec.c:1085 +msgid "during exception cleanup" +msgstr "podczas kończenia obsługi wyjątków" + +#: pl_exec.c:1570 +msgid "case not found" +msgstr "etykieta instrukcji wyboru nie znaleziona" + +#: pl_exec.c:1571 +msgid "CASE statement is missing ELSE part." +msgstr "w wyrażeniu CASE brakuje części ELSE." + +#: pl_exec.c:1725 +msgid "lower bound of FOR loop cannot be null" +msgstr "początkowa wartość dla pętli FOR nie może być NULL" + +#: pl_exec.c:1740 +msgid "upper bound of FOR loop cannot be null" +msgstr "końcowa wartość dla pętli FOR nie może być NULL" + +#: pl_exec.c:1757 +msgid "BY value of FOR loop cannot be null" +msgstr "wartość wyrażenia BY w pętli FOR nie może być NULL" + +#: pl_exec.c:1763 +msgid "BY value of FOR loop must be greater than zero" +msgstr "wartość wyrażenia BY w pętli FOR musi być większa od zera" + +#: pl_exec.c:1933 pl_exec.c:3395 +#, c-format +msgid "cursor \"%s\" already in use" +msgstr "kursor \"%s\" jest już używany" + +#: pl_exec.c:1956 pl_exec.c:3457 +msgid "arguments given for cursor without arguments" +msgstr "podano argumenty dla kursora nie przyjmującego żadnych argumentów" + +#: pl_exec.c:1975 pl_exec.c:3476 +msgid "arguments required for cursor" +msgstr "parametry wymagane dla kursora" + +#: pl_exec.c:2063 +msgid "FOREACH expression must not be null" +msgstr "wyrażenie w instrukcji FOREACH nie może być NULL" + +#: pl_exec.c:2069 +#, c-format +msgid "FOREACH expression must yield an array, not type %s" +msgstr "typem wyrażenie w instrukcji FOREACH musi być tablica, nie %s" + +#: pl_exec.c:2086 +#, c-format +msgid "slice dimension (%d) is out of the valid range 0..%d" +msgstr "wymiar wycinka tablicy (%d) przekracza dopuszczalny zakres 0..%d" + +#: pl_exec.c:2113 +msgid "FOREACH ... SLICE loop variable must be of an array type" +msgstr "zmienna użyta w pętli FOREACH ... SLICE musi być typu tablicowego" + +#: pl_exec.c:2117 +msgid "FOREACH loop variable must not be of an array type" +msgstr "zmienna użyta w pętli FOREACH nie może być typu tablicowego" + +#: pl_exec.c:2375 gram.y:2844 +msgid "cannot use RETURN NEXT in a non-SETOF function" +msgstr "" +"instrukcja RETURN NEXT nie może zostać użyta w funkcjach nie zwracających " +"zbioru rekordów" + +#: pl_exec.c:2399 pl_exec.c:2465 +msgid "wrong result type supplied in RETURN NEXT" +msgstr "niewłaściwy typ wyniku w instrukcji RETURN NEXT" + +#: pl_exec.c:2421 pl_exec.c:3849 pl_exec.c:4166 pl_exec.c:4201 pl_exec.c:4268 +#: pl_exec.c:4287 pl_exec.c:4355 pl_exec.c:4378 +#, c-format +msgid "record \"%s\" is not assigned yet" +msgstr "struktura rekordu \"%s\" nie jest jeszcze znana" + +#: pl_exec.c:2423 pl_exec.c:3851 pl_exec.c:4168 pl_exec.c:4203 pl_exec.c:4270 +#: pl_exec.c:4289 pl_exec.c:4357 pl_exec.c:4380 +msgid "The tuple structure of a not-yet-assigned record is indeterminate." +msgstr "" +"Struktura jest nieokreślona dla niezainicjowanego rekordu abstrakcyjnego." + +#: pl_exec.c:2427 pl_exec.c:2446 +msgid "wrong record type supplied in RETURN NEXT" +msgstr "błędny typ rekordu w instrukcji RETURN NEXT" + +#: pl_exec.c:2488 +msgid "RETURN NEXT must have a parameter" +msgstr "po RETURN NEXT musi pojawić się parametr" + +#: pl_exec.c:2519 gram.y:2903 +msgid "cannot use RETURN QUERY in a non-SETOF function" +msgstr "" +"nie można używać instrukcji RETURN QUERY w funkcjach nie zwracających zbioru " +"rekordów" + +#: pl_exec.c:2539 +msgid "structure of query does not match function result type" +msgstr "" +"typ rekordu zwracany przez zapytanie nie odpowiada typowi zwracanemu przez " +"funkcję" + +#: pl_exec.c:2637 +msgid "RAISE without parameters cannot be used outside an exception handler" +msgstr "RAISE bez argumentów jest dopuszczalne tylko w bloku obsługi wyjątków" + +#: pl_exec.c:2678 +msgid "too few parameters specified for RAISE" +msgstr "za mało argumentów dla instrukcji RAISE" + +#: pl_exec.c:2704 +msgid "too many parameters specified for RAISE" +msgstr "za dużo argumentów dla instrukcji RAISE" + +#: pl_exec.c:2724 +msgid "RAISE statement option cannot be null" +msgstr "argument dla wyrażenia RAISE nie może być NULL" + +#: pl_exec.c:2734 pl_exec.c:2743 pl_exec.c:2751 pl_exec.c:2759 +#, c-format +msgid "RAISE option already specified: %s" +msgstr "argument dla instrukcji RAISE został już podany: %s" + +#: pl_exec.c:2795 +#, c-format +msgid "%s" +msgstr "%s" + +#: pl_exec.c:2945 pl_exec.c:3081 pl_exec.c:3260 +msgid "cannot COPY to/from client in PL/pgSQL" +msgstr "instrukcja COPY nie jest obsługiwana w PL/pgSQL" + +#: pl_exec.c:2949 pl_exec.c:3085 pl_exec.c:3264 +msgid "cannot begin/end transactions in PL/pgSQL" +msgstr "nie można rozpocząć ani zakończyć transakcji w PL/pgSQL" + +#: pl_exec.c:2950 pl_exec.c:3086 pl_exec.c:3265 +msgid "Use a BEGIN block with an EXCEPTION clause instead." +msgstr "Zamiast tego użyj bloku BEGIN wraz z klauzulą EXCEPTION." + +#: pl_exec.c:3109 pl_exec.c:3289 +msgid "INTO used with a command that cannot return data" +msgstr "INTO zostało użyte z zapytaniem, które nie zwraca danych" + +#: pl_exec.c:3129 pl_exec.c:3309 +msgid "query returned no rows" +msgstr "zapytanie nie zwróciło żadnych wierszy" + +#: pl_exec.c:3138 pl_exec.c:3318 +msgid "query returned more than one row" +msgstr "zapytanie zwróciło więcej niż jeden wiersz" + +#: pl_exec.c:3152 +msgid "query has no destination for result data" +msgstr "nie wskazano gdzie mają zostać zapisane wyniki zapytania" + +#: pl_exec.c:3153 +msgid "If you want to discard the results of a SELECT, use PERFORM instead." +msgstr "" +"Jeśli wyniki zapytania nie są istotne, używaj instrukcji PERFOM zamiast " +"SELECT." + +#: pl_exec.c:3186 pl_exec.c:5929 +msgid "query string argument of EXECUTE is null" +msgstr "treść zapytania dla instrukcji EXECUTE ma wartość NULL" + +#: pl_exec.c:3251 +msgid "EXECUTE of SELECT ... INTO is not implemented" +msgstr "użycie SELECT ... INTO w instrukcji EXECUTE nie jest obsługiwane" + +#: pl_exec.c:3252 +msgid "" +"You might want to use EXECUTE ... INTO or EXECUTE CREATE TABLE ... AS " +"instead." +msgstr "" +"Zamiast tego możesz użyć EXECUTE ... INTO lub EXECUTE CREATE TABLE ... AS." + +#: pl_exec.c:3540 pl_exec.c:3631 +#, c-format +msgid "cursor variable \"%s\" is null" +msgstr "zmienna kursorowa \"%s\" ma wartość NULL" + +#: pl_exec.c:3547 pl_exec.c:3638 +#, c-format +msgid "cursor \"%s\" does not exist" +msgstr "kursor \"%s\" nie istnieje" + +#: pl_exec.c:3561 +msgid "relative or absolute cursor position is null" +msgstr "względna lub bezwzględna pozycja kursora o wartości NULL" + +#: pl_exec.c:3702 +#, c-format +msgid "null value cannot be assigned to variable \"%s\" declared NOT NULL" +msgstr "" +"zmienna \"%s\" została zadeklarowana jako NOT NULL, nie można przypisać " +"wartości NULL" + +#: pl_exec.c:3760 +msgid "cannot assign non-composite value to a row variable" +msgstr "nie można przypisać wartości skalarnej do zmiennej rekordowej" + +#: pl_exec.c:3802 +msgid "cannot assign non-composite value to a record variable" +msgstr "nie można przypisać wartości skalarnej do zmiennej rekordowej" + +#: pl_exec.c:3973 +#, c-format +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgstr "liczba wymiarów tablicy (%d) przekracza maksimum (%d)" + +#: pl_exec.c:3992 +msgid "subscripted object is not an array" +msgstr "indeksowanie jest możliwe jedynie dla obiektu typu tablicowego" + +#: pl_exec.c:4015 +msgid "array subscript in assignment must not be null" +msgstr "" +"w instrukcji przypisania do elementu tablicy indeksem elementu nie może być " +"NULL" + +#: pl_exec.c:4493 +#, c-format +msgid "query \"%s\" did not return data" +msgstr "zapytanie \"%s\" nie zwróciło żadnych danych" + +#: pl_exec.c:4501 +#, c-format +msgid "query \"%s\" returned %d column" +msgid_plural "query \"%s\" returned %d columns" +msgstr[0] "zapytanie \"%s\" zwróciło %d kolumnę" +msgstr[1] "zapytanie \"%s\" zwróciło %d kolumny" +msgstr[2] "zapytanie \"%s\" zwróciło %d kolumn" + +#: pl_exec.c:4527 +#, c-format +msgid "query \"%s\" returned more than one row" +msgstr "zapytanie \"%s\" zwróciło więcej niż jeden wiersz" + +#: pl_exec.c:4585 +#, c-format +msgid "query \"%s\" is not a SELECT" +msgstr "zapytanie \"%s\" nie jest kwerendą (SELECT)" + +#: gram.y:430 +msgid "block label must be placed before DECLARE, not after" +msgstr "etykieta bloku musi pojawić się przed częścią DECLARE, nie po niej" + +#: gram.y:450 +#, c-format +msgid "collations are not supported by type %s" +msgstr "porównania nie jest dostępne dla typu %s" + +#: gram.y:465 +msgid "row or record variable cannot be CONSTANT" +msgstr "rekord nie może być zadeklarowany jako CONSTANT" + +#: gram.y:475 +msgid "row or record variable cannot be NOT NULL" +msgstr "rekord nie może być zadeklarowany jako NOT NULL" + +#: gram.y:486 +msgid "default value for row or record variable is not supported" +msgstr "" +"domyślna wartość dla rekordów (abstrakcyjnych oraz konkretnego typu) nie " +"jest obsługiwana" + +#: gram.y:631 gram.y:657 +#, c-format +msgid "variable \"%s\" does not exist" +msgstr "zmienna \"%s\" nie istnieje" + +#: gram.y:675 gram.y:688 +msgid "duplicate declaration" +msgstr "powtórzona deklaracja" + +#: gram.y:881 +msgid "unrecognized GET DIAGNOSTICS item" +msgstr "nieobsługiwany parametr dla instrukcji GET DIAGNOSTICS" + +#: gram.y:892 gram.y:3090 +#, c-format +msgid "\"%s\" is not a scalar variable" +msgstr "\"%s\" nie jest zmienną skalarną" + +#: gram.y:1154 gram.y:1347 +msgid "" +"loop variable of loop over rows must be a record or row variable or list of " +"scalar variables" +msgstr "" +"zmienna w pętli dla zapytań musi być rekordem (abstrakcyjnym lub konkretnego " +"typu) albo listą zmiennych skalarnych" + +#: gram.y:1188 +msgid "cursor FOR loop must have only one target variable" +msgstr "" +"w pętli FOR używającej kursorów dopuszczalna jest tylko jedna zmienna " +"iteracyjna" + +#: gram.y:1195 +msgid "cursor FOR loop must use a bound cursor variable" +msgstr "w pętli FOR można używać jedynie ograniczonych kursorów" + +#: gram.y:1278 +msgid "integer FOR loop must have only one target variable" +msgstr "w pętli FOR dla liczb całkowitych można używać jednej zmiennej" + +#: gram.y:1314 +msgid "cannot specify REVERSE in query FOR loop" +msgstr "nie można używać REVERSE w pętli FOR dla zapytań" + +#: gram.y:1461 +msgid "loop variable of FOREACH must be a known variable or list of variables" +msgstr "zmienne używane w pętli FOREACH muszą zostać wcześniej zadeklarowana" + +#: gram.y:1513 gram.y:1550 gram.y:1598 gram.y:2540 gram.y:2621 gram.y:2732 +#: gram.y:3365 +msgid "unexpected end of function definition" +msgstr "nieoczekiwany koniec definicji funkcji" + +#: gram.y:1618 gram.y:1642 gram.y:1654 gram.y:1661 gram.y:1750 gram.y:1758 +#: gram.y:1772 gram.y:1867 gram.y:2048 gram.y:2127 gram.y:2242 gram.y:2821 +#: gram.y:2885 gram.y:3325 gram.y:3346 +msgid "syntax error" +msgstr "błąd składni" + +#: gram.y:1646 gram.y:1648 gram.y:2052 gram.y:2054 +msgid "invalid SQLSTATE code" +msgstr "błędny kod SQLSTATE" + +#: gram.y:1814 +msgid "syntax error, expected \"FOR\"" +msgstr "błąd składniowy, spodziewano się \"FOR\"" + +#: gram.y:1876 +msgid "FETCH statement cannot return multiple rows" +msgstr "instrukcja FETCH nie może zwracać wielu wierszy" + +#: gram.y:1932 +msgid "cursor variable must be a simple variable" +msgstr "zmienna kursorowa musi być zmienną skalarną" + +#: gram.y:1938 +#, c-format +msgid "variable \"%s\" must be of type cursor or refcursor" +msgstr "zmienna \"%s\" musi być typu cursor lub refcursor" + +#: gram.y:2106 +msgid "label does not exist" +msgstr "etykieta nie istnieje" + +#: gram.y:2213 gram.y:2224 +#, c-format +msgid "\"%s\" is not a known variable" +msgstr "\"%s\" nie jest zmienną" + +#: gram.y:2326 gram.y:2336 gram.y:2464 +msgid "mismatched parentheses" +msgstr "niepasujące nawiasy" + +#: gram.y:2340 +#, c-format +msgid "missing \"%s\" at end of SQL expression" +msgstr "brakuje \"%s\" na końcu wyrażenia SQL" + +#: gram.y:2346 +#, c-format +msgid "missing \"%s\" at end of SQL statement" +msgstr "brakuje \"%s\" na końcu instrukcji SQL" + +#: gram.y:2363 +msgid "missing expression" +msgstr "brakuje wyrażenia" + +#: gram.y:2365 +msgid "missing SQL statement" +msgstr "brakuje instrukcji SQL" + +#: gram.y:2466 +msgid "incomplete data type declaration" +msgstr "deklaracja typu abstrakcyjnego" + +#: gram.y:2489 +msgid "missing data type declaration" +msgstr "brakująca deklaracja typu" + +#: gram.y:2545 +msgid "INTO specified more than once" +msgstr "INTO użyte więcej niż raz" + +#: gram.y:2713 +msgid "expected FROM or IN" +msgstr "spodziewano się FROM lub IN" + +#: gram.y:2773 +msgid "RETURN cannot have a parameter in function returning set" +msgstr "" +"instrukcja RETURN nie może mieć parametru w funkcjach zwracających zbiory " +"rekordów (SETOF ...)" + +#: gram.y:2774 +msgid "Use RETURN NEXT or RETURN QUERY." +msgstr "Użyj RETURN NEXT lub RETURN QUERY." + +#: gram.y:2782 +msgid "RETURN cannot have a parameter in function with OUT parameters" +msgstr "" +"instrukcja RETURN nie może mieć parametrów w funkcji posiadającej argumenty " +"wyjściowe (OUT, INOUT)" + +#: gram.y:2791 +msgid "RETURN cannot have a parameter in function returning void" +msgstr "" +"instrukcja RETURN nie może mieć parametru w funkcji, która nic nie zwraca" + +#: gram.y:2809 gram.y:2816 +msgid "RETURN must specify a record or row variable in function returning row" +msgstr "" +"w funkcji zwracającej zbiory rekordów parametrem instrukcji RETURN musi być " +"rekord (abstrakcyjny lub konkretnego typu)" + +#: gram.y:2858 +msgid "RETURN NEXT cannot have a parameter in function with OUT parameters" +msgstr "" +"instrukcja RETURN NEXT nie może mieć parametrów w funkcji posiadające " +"argumenty wyjściowe (OUT, INOUT)" + +#: gram.y:2873 gram.y:2880 +msgid "" +"RETURN NEXT must specify a record or row variable in function returning row" +msgstr "" +"w funkcji zwracającej rekord parametrem instrukcji RETURN NEXT musi również " +"być rekord" + +#: gram.y:2959 +#, c-format +msgid "\"%s\" is declared CONSTANT" +msgstr "\"%s\" zadeklarowano jako CONSTANT" + +#: gram.y:3021 gram.y:3033 +msgid "record or row variable cannot be part of multiple-item INTO list" +msgstr "" +"zmienna rekordowa nie może być celem w wyrażeniu INTO określonym dla więcej " +"niż jednego argumentu" + +#: gram.y:3078 +msgid "too many INTO variables specified" +msgstr "po INTO podano za dużo zmiennych" + +#: gram.y:3286 +#, c-format +msgid "end label \"%s\" specified for unlabelled block" +msgstr "etykieta \"%s\" podana na końcu bloku, który nie posiada etykiety" + +#: gram.y:3293 +#, c-format +msgid "end label \"%s\" differs from block's label \"%s\"" +msgstr "etykieta końcowa \"%s\" jest inna niż etykieta bloku \"%s\"" + +#: gram.y:3320 +#, c-format +msgid "cursor \"%s\" has no arguments" +msgstr "kursor \"%s\" nie przyjmuje parametrów" + +#: gram.y:3334 +#, c-format +msgid "cursor \"%s\" has arguments" +msgstr "kursor \"%s\" przyjmuje parametry" + +#: gram.y:3382 +msgid "unrecognized RAISE statement option" +msgstr "nieznany parametr dla instrukcji RAISE" + +#: gram.y:3386 +msgid "syntax error, expected \"=\"" +msgstr "błąd składniowy, spodziewano się \"=\"" + +#: pl_funcs.c:218 +msgid "statement block" +msgstr "blok instrukcji" + +#: pl_funcs.c:220 +msgid "assignment" +msgstr "przypisanie" + +#: pl_funcs.c:230 +msgid "FOR with integer loop variable" +msgstr "pętla FOR ze zmienną typu całkowitego" + +#: pl_funcs.c:232 +msgid "FOR over SELECT rows" +msgstr "pętla FOR po rekordach z zapytania SELECT" + +#: pl_funcs.c:234 +msgid "FOR over cursor" +msgstr "pętla FOR względem kursora" + +#: pl_funcs.c:236 +msgid "FOREACH over array" +msgstr "pętla FOREACH po elementach tablicy" + +#: pl_funcs.c:248 +msgid "SQL statement" +msgstr "wyrażenie SQL" + +#: pl_funcs.c:250 +msgid "EXECUTE statement" +msgstr "instrukcja EXECUTE" + +#: pl_funcs.c:252 +msgid "FOR over EXECUTE statement" +msgstr "pętla FOR po wynikach instrukcji EXECUTE" + +#: pl_handler.c:60 +msgid "" +"Sets handling of conflicts between PL/pgSQL variable names and table column " +"names." +msgstr "" +"Ustawia sposób rozwiązywania niejednoznaczności nazw zmiennych PL/pgSQL i " +"kolumn tabel." + +#. translator: %s is typically the translation of "syntax error" +#: pl_scanner.c:467 +#, c-format +msgid "%s at end of input" +msgstr "%s na końcu danych wejściowych" + +#. translator: first %s is typically the translation of "syntax error" +#: pl_scanner.c:483 +#, c-format +msgid "%s at or near \"%s\"" +msgstr "%s w lub pobliżu \"%s\"" diff --git a/src/pl/plpgsql/src/po/pt_BR.po b/src/pl/plpgsql/src/po/pt_BR.po index 0c5930792f..710b4c634c 100644 --- a/src/pl/plpgsql/src/po/pt_BR.po +++ b/src/pl/plpgsql/src/po/pt_BR.po @@ -1,13 +1,13 @@ # Brazilian Portuguese message translation file for plpgsql # Copyright (C) 2010 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Euler Taveira de Oliveira , 2010. +# Euler Taveira de Oliveira , 2010-2011. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-07-26 15:54-0300\n" +"POT-Creation-Date: 2011-08-21 14:53-0300\n" "PO-Revision-Date: 2010-07-08 17:13-0300\n" "Last-Translator: Euler Taveira de Oliveira \n" "Language-Team: Brazilian Portuguese \n" @@ -17,31 +17,31 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n>1);\n" -#: pl_comp.c:422 pl_handler.c:256 +#: pl_comp.c:427 pl_handler.c:266 #, c-format msgid "PL/pgSQL functions cannot accept type %s" msgstr "funções PL/pgSQL não podem aceitar tipo %s" -#: pl_comp.c:501 +#: pl_comp.c:506 #, c-format msgid "could not determine actual return type for polymorphic function \"%s\"" msgstr "" "não pôde determinar tipo de retorno atual para função polimófica \"%s\"" -#: pl_comp.c:531 +#: pl_comp.c:536 msgid "trigger functions can only be called as triggers" msgstr "funções de gatilho só podem ser chamadas como gatilhos" -#: pl_comp.c:535 pl_handler.c:241 +#: pl_comp.c:540 pl_handler.c:251 #, c-format msgid "PL/pgSQL functions cannot return type %s" msgstr "funções PL/pgSQL não podem retornar tipo %s" -#: pl_comp.c:576 +#: pl_comp.c:583 msgid "trigger functions cannot have declared arguments" msgstr "funções de gatilho não podem ter argumentos declarados" -#: pl_comp.c:577 +#: pl_comp.c:584 msgid "" "The arguments of the trigger can be accessed through TG_NARGS and TG_ARGV " "instead." @@ -49,604 +49,649 @@ msgstr "" "Os argumentos de um gatilho podem ser acessados através de TG_NARGS e " "TG_ARGV." -#: pl_comp.c:880 +#: pl_comp.c:912 #, c-format msgid "compilation of PL/pgSQL function \"%s\" near line %d" msgstr "compilação da função PL/pgSQL \"%s\" próximo a linha %d" -#: pl_comp.c:978 +#: pl_comp.c:935 +#, c-format +msgid "parameter name \"%s\" used more than once" +msgstr "nome de parâmetro \"%s\" foi especificado mais de uma vez" + +#: pl_comp.c:1045 #, c-format msgid "column reference \"%s\" is ambiguous" msgstr "referência à coluna \"%s\" é ambígua" -#: pl_comp.c:980 +#: pl_comp.c:1047 msgid "It could refer to either a PL/pgSQL variable or a table column." msgstr "Ela poderia referenciar uma variável PL/pgSQL ou uma coluna de tabela." -#: pl_comp.c:1690 +#: pl_comp.c:1227 pl_comp.c:1255 pl_exec.c:3862 pl_exec.c:4208 pl_exec.c:4294 +#: pl_exec.c:4385 +#, c-format +msgid "record \"%s\" has no field \"%s\"" +msgstr "registro \"%s\" não tem campo \"%s\"" + +#: pl_comp.c:1782 #, c-format msgid "relation \"%s\" does not exist" msgstr "relação \"%s\" não existe" -#: pl_comp.c:1722 +#: pl_comp.c:1814 #, c-format msgid "relation \"%s.%s\" does not exist" msgstr "relação \"%s.%s\" não existe" -#: pl_comp.c:1804 +#: pl_comp.c:1896 #, c-format msgid "variable \"%s\" has pseudo-type %s" msgstr "variável \"%s\" tem pseudo-tipo %s" -#: pl_comp.c:1865 +#: pl_comp.c:1957 #, c-format msgid "relation \"%s\" is not a table" msgstr "relação \"%s\" não é uma tabela" -#: pl_comp.c:2017 +#: pl_comp.c:2117 #, c-format msgid "type \"%s\" is only a shell" msgstr "tipo \"%s\" é indefinido" -#: pl_comp.c:2087 pl_comp.c:2140 +#: pl_comp.c:2190 pl_comp.c:2243 #, c-format msgid "unrecognized exception condition \"%s\"" msgstr "condição de exceção \"%s\" é desconhecida" -#: pl_comp.c:2295 +#: pl_comp.c:2401 #, c-format msgid "" "could not determine actual argument type for polymorphic function \"%s\"" msgstr "" "não pôde determinar tipo do argumento atual para função polimórfica \"%s\"" -#: pl_exec.c:236 pl_exec.c:511 +#: pl_exec.c:239 pl_exec.c:510 msgid "during initialization of execution state" msgstr "durante inicialização de estado de execução" -#: pl_exec.c:243 +#: pl_exec.c:246 msgid "while storing call arguments into local variables" msgstr "ao armazenar argumentos em variáveis locais" -#: pl_exec.c:298 pl_exec.c:666 +#: pl_exec.c:301 pl_exec.c:667 msgid "during function entry" msgstr "durante entrada da função" -#: pl_exec.c:329 pl_exec.c:697 +#: pl_exec.c:332 pl_exec.c:698 msgid "CONTINUE cannot be used outside a loop" msgstr "CONTINUE não pode ser utilizado fora de um laço" -#: pl_exec.c:333 pl_exec.c:701 -msgid "RAISE without parameters cannot be used outside an exception handler" -msgstr "" -"RAISE sem parâmetros não pode ser utilizado fora de um manipulador de exceção" - -#: pl_exec.c:337 +#: pl_exec.c:336 msgid "control reached end of function without RETURN" msgstr "controle atingiu o fim da função sem RETURN" -#: pl_exec.c:344 +#: pl_exec.c:343 msgid "while casting return value to function's return type" msgstr "ao converter valor de retorno para tipo de retorno da função" -#: pl_exec.c:357 pl_exec.c:2400 +#: pl_exec.c:356 pl_exec.c:2591 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" -#: pl_exec.c:395 +#: pl_exec.c:394 msgid "returned record type does not match expected record type" msgstr "tipo record retornado não corresponde ao tipo record esperado" -#: pl_exec.c:453 pl_exec.c:709 +#: pl_exec.c:452 pl_exec.c:706 msgid "during function exit" msgstr "durante saída da função" -#: pl_exec.c:705 +#: pl_exec.c:702 msgid "control reached end of trigger procedure without RETURN" msgstr "controle atingiu o fim da função de gatilho sem RETURN" -#: pl_exec.c:714 +#: pl_exec.c:711 msgid "trigger procedure cannot return a set" msgstr "função de gatilho não pode retornar um conjunto" -#: pl_exec.c:736 +#: pl_exec.c:733 msgid "" "returned row structure does not match the structure of the triggering table" msgstr "" "estrutura de registro retornada não corresponde a estrutura da tabela que " "disparou o evento" -#: pl_exec.c:799 +#: pl_exec.c:796 #, c-format msgid "PL/pgSQL function \"%s\" line %d %s" msgstr "função PL/pgSQL \"%s\" linha %d %s" -#: pl_exec.c:810 +#: pl_exec.c:807 #, c-format msgid "PL/pgSQL function \"%s\" %s" msgstr "função PL/pgSQL \"%s\" %s" #. translator: last %s is a plpgsql statement type name -#: pl_exec.c:818 +#: pl_exec.c:815 #, c-format msgid "PL/pgSQL function \"%s\" line %d at %s" msgstr "função PL/pgSQL \"%s\" linha %d em %s" -#: pl_exec.c:824 +#: pl_exec.c:821 #, c-format msgid "PL/pgSQL function \"%s\"" msgstr "função PL/pgSQL \"%s\"" -#: pl_exec.c:932 +#: pl_exec.c:929 msgid "during statement block local variable initialization" msgstr "durante inicialização de variável local em bloco de comandos" -#: pl_exec.c:974 +#: pl_exec.c:971 #, c-format msgid "variable \"%s\" declared NOT NULL cannot default to NULL" msgstr "variável \"%s\" declarada NOT NULL não pode ter valor padrão NULL" -#: pl_exec.c:1023 +#: pl_exec.c:1021 msgid "during statement block entry" msgstr "durante entrada em bloco de comandos" -#: pl_exec.c:1044 +#: pl_exec.c:1042 msgid "during statement block exit" msgstr "durante saída em bloco de comandos" -#: pl_exec.c:1087 +#: pl_exec.c:1085 msgid "during exception cleanup" msgstr "durante término de exceção" -#: pl_exec.c:1553 +#: pl_exec.c:1570 msgid "case not found" msgstr "case não foi encontrado" -#: pl_exec.c:1554 +#: pl_exec.c:1571 msgid "CASE statement is missing ELSE part." msgstr "comando CASE está faltando a parte ELSE." -#: pl_exec.c:1710 +#: pl_exec.c:1725 msgid "lower bound of FOR loop cannot be null" msgstr "limite inferior do laço FOR não pode ser nulo" -#: pl_exec.c:1725 +#: pl_exec.c:1740 msgid "upper bound of FOR loop cannot be null" msgstr "limite superior do laço FOR não pode ser nulo" -#: pl_exec.c:1742 +#: pl_exec.c:1757 msgid "BY value of FOR loop cannot be null" msgstr "valor BY do laço FOR não pode ser nulo" -#: pl_exec.c:1748 +#: pl_exec.c:1763 msgid "BY value of FOR loop must be greater than zero" msgstr "valor BY do laço FOR deve ser maior do que zero" -#: pl_exec.c:1920 pl_exec.c:3182 +#: pl_exec.c:1933 pl_exec.c:3395 #, c-format msgid "cursor \"%s\" already in use" msgstr "cursor \"%s\" já está em uso" -#: pl_exec.c:1943 pl_exec.c:3244 +#: pl_exec.c:1956 pl_exec.c:3457 msgid "arguments given for cursor without arguments" msgstr "argumentos fornecidos a cursor sem argumentos" -#: pl_exec.c:1962 pl_exec.c:3263 +#: pl_exec.c:1975 pl_exec.c:3476 msgid "arguments required for cursor" msgstr "argumentos requeridos pelo cursor" -#: pl_exec.c:2184 gram.y:2729 +#: pl_exec.c:2063 +msgid "FOREACH expression must not be null" +msgstr "expressão FOREACH não deve ser nula" + +#: pl_exec.c:2069 +#, c-format +msgid "FOREACH expression must yield an array, not type %s" +msgstr "expressão FOREACH deve produzir uma matriz, e não tipo %s" + +#: pl_exec.c:2086 +#, c-format +msgid "slice dimension (%d) is out of the valid range 0..%d" +msgstr "fatia da dimensão (%d) está fora do intervalo válido, 0..%d" + +#: pl_exec.c:2113 +msgid "FOREACH ... SLICE loop variable must be of an array type" +msgstr "variável do laço FOREACH ... SLICE deve ser de um tipo matriz" + +#: pl_exec.c:2117 +msgid "FOREACH loop variable must not be of an array type" +msgstr "variável do laço FOREACH não deve ser de um tipo matriz" + +#: pl_exec.c:2375 gram.y:2844 msgid "cannot use RETURN NEXT in a non-SETOF function" msgstr "" "não pode utilizar RETURN NEXT em uma função que não foi declarada SETOF" -#: pl_exec.c:2208 pl_exec.c:2274 +#: pl_exec.c:2399 pl_exec.c:2465 msgid "wrong result type supplied in RETURN NEXT" msgstr "tipo resultante incorreto foi fornecido em RETURN NEXT" -#: pl_exec.c:2230 pl_exec.c:3632 pl_exec.c:3911 pl_exec.c:3945 pl_exec.c:4007 -#: pl_exec.c:4026 pl_exec.c:4063 +#: pl_exec.c:2421 pl_exec.c:3849 pl_exec.c:4166 pl_exec.c:4201 pl_exec.c:4268 +#: pl_exec.c:4287 pl_exec.c:4355 pl_exec.c:4378 #, c-format msgid "record \"%s\" is not assigned yet" msgstr "registro \"%s\" não foi atribuído ainda" -#: pl_exec.c:2232 pl_exec.c:3634 pl_exec.c:3913 pl_exec.c:3947 pl_exec.c:4009 -#: pl_exec.c:4028 pl_exec.c:4065 +#: pl_exec.c:2423 pl_exec.c:3851 pl_exec.c:4168 pl_exec.c:4203 pl_exec.c:4270 +#: pl_exec.c:4289 pl_exec.c:4357 pl_exec.c:4380 msgid "The tuple structure of a not-yet-assigned record is indeterminate." msgstr "A estrutura da tupla de um registro não atribuído é indeterminada." -#: pl_exec.c:2236 pl_exec.c:2255 +#: pl_exec.c:2427 pl_exec.c:2446 msgid "wrong record type supplied in RETURN NEXT" msgstr "tipo registro incorreto foi fornecido em RETURN NEXT" -#: pl_exec.c:2297 +#: pl_exec.c:2488 msgid "RETURN NEXT must have a parameter" msgstr "RETURN NEXT deve ter um parâmetro" -#: pl_exec.c:2328 gram.y:2788 +#: pl_exec.c:2519 gram.y:2903 msgid "cannot use RETURN QUERY in a non-SETOF function" msgstr "" "não pode utilizar RETURN QUERY em uma função que não foi declarada SETOF" -#: pl_exec.c:2348 +#: pl_exec.c:2539 msgid "structure of query does not match function result type" msgstr "estrutura da consulta não corresponde ao tipo resultante da função" -#: pl_exec.c:2480 +#: pl_exec.c:2637 +msgid "RAISE without parameters cannot be used outside an exception handler" +msgstr "" +"RAISE sem parâmetros não pode ser utilizado fora de um manipulador de exceção" + +#: pl_exec.c:2678 msgid "too few parameters specified for RAISE" msgstr "poucos parâmetros especificados para RAISE" -#: pl_exec.c:2506 +#: pl_exec.c:2704 msgid "too many parameters specified for RAISE" msgstr "muitos parâmetros especificados para RAISE" -#: pl_exec.c:2526 +#: pl_exec.c:2724 msgid "RAISE statement option cannot be null" msgstr "opção do comando RAISE não pode ser nulo" -#: pl_exec.c:2536 pl_exec.c:2545 pl_exec.c:2553 pl_exec.c:2561 +#: pl_exec.c:2734 pl_exec.c:2743 pl_exec.c:2751 pl_exec.c:2759 #, c-format msgid "RAISE option already specified: %s" msgstr "opção RAISE já foi especificada: %s" -#: pl_exec.c:2596 pl_exec.c:2597 +#: pl_exec.c:2795 #, c-format msgid "%s" msgstr "%s" -#: pl_exec.c:2743 pl_exec.c:3047 +#: pl_exec.c:2945 pl_exec.c:3081 pl_exec.c:3260 msgid "cannot COPY to/from client in PL/pgSQL" msgstr "não pode executar COPY para/do cliente em PL/pgSQL" -#: pl_exec.c:2747 pl_exec.c:3051 +#: pl_exec.c:2949 pl_exec.c:3085 pl_exec.c:3264 msgid "cannot begin/end transactions in PL/pgSQL" msgstr "não pode iniciar/terminar transações em PL/pgSQL" -#: pl_exec.c:2748 pl_exec.c:3052 +#: pl_exec.c:2950 pl_exec.c:3086 pl_exec.c:3265 msgid "Use a BEGIN block with an EXCEPTION clause instead." msgstr "Ao invés disso utilize um bloco BEGIN com uma cláusula EXCEPTION." -#: pl_exec.c:2896 pl_exec.c:3076 +#: pl_exec.c:3109 pl_exec.c:3289 msgid "INTO used with a command that cannot return data" msgstr "INTO utilizado com um comando que não pode retornar dados" -#: pl_exec.c:2916 pl_exec.c:3096 +#: pl_exec.c:3129 pl_exec.c:3309 msgid "query returned no rows" msgstr "consulta não retornou registros" -#: pl_exec.c:2925 pl_exec.c:3105 +#: pl_exec.c:3138 pl_exec.c:3318 msgid "query returned more than one row" msgstr "consulta retornou mais de um registro" -#: pl_exec.c:2939 +#: pl_exec.c:3152 msgid "query has no destination for result data" msgstr "consulta não tem destino para os dados resultantes" -#: pl_exec.c:2940 +#: pl_exec.c:3153 msgid "If you want to discard the results of a SELECT, use PERFORM instead." msgstr "Se você quer descartar os resultados de um SELECT, utilize PERFORM." -#: pl_exec.c:2973 pl_exec.c:5547 +#: pl_exec.c:3186 pl_exec.c:5929 msgid "query string argument of EXECUTE is null" msgstr "argumento da cadeia de caracteres do EXECUTE é nulo" -#: pl_exec.c:3038 +#: pl_exec.c:3251 msgid "EXECUTE of SELECT ... INTO is not implemented" msgstr "EXECUTE de SELECT ... INTO não está implementado" -#: pl_exec.c:3039 -msgid "You might want to use EXECUTE ... INTO instead." -msgstr "Ao invés disso, você pode querer utilizar EXECUTE ... INTO." +#: pl_exec.c:3252 +msgid "" +"You might want to use EXECUTE ... INTO or EXECUTE CREATE TABLE ... AS " +"instead." +msgstr "Ao invés disso, você pode querer utilizar EXECUTE ... INTO ou EXECUTE CREATE TABLE ... AS." -#: pl_exec.c:3327 pl_exec.c:3418 +#: pl_exec.c:3540 pl_exec.c:3631 #, c-format msgid "cursor variable \"%s\" is null" msgstr "variável do cursor \"%s\" é nula" -#: pl_exec.c:3334 pl_exec.c:3425 +#: pl_exec.c:3547 pl_exec.c:3638 #, c-format msgid "cursor \"%s\" does not exist" msgstr "cursor \"%s\" não existe" -#: pl_exec.c:3348 +#: pl_exec.c:3561 msgid "relative or absolute cursor position is null" msgstr "posição relativa ou absoluta do cursor é nula" -#: pl_exec.c:3485 +#: pl_exec.c:3702 #, c-format msgid "null value cannot be assigned to variable \"%s\" declared NOT NULL" msgstr "valor nulo não pode ser atribuído a variável \"%s\" declarada NOT NULL" -#: pl_exec.c:3543 +#: pl_exec.c:3760 msgid "cannot assign non-composite value to a row variable" msgstr "não pode atribuir valor que não é composto a variável do tipo row" -#: pl_exec.c:3585 +#: pl_exec.c:3802 msgid "cannot assign non-composite value to a record variable" msgstr "não pode atribuir valor que não é composto a variável do tipo record" -#: pl_exec.c:3645 pl_exec.c:3952 pl_exec.c:4033 pl_exec.c:4070 -#, c-format -msgid "record \"%s\" has no field \"%s\"" -msgstr "registro \"%s\" não tem campo \"%s\"" - -#: pl_exec.c:3743 +#: pl_exec.c:3973 #, 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)" -#: pl_exec.c:3757 +#: pl_exec.c:3992 msgid "subscripted object is not an array" msgstr "objeto com índice não é uma matriz" -#: pl_exec.c:3780 +#: pl_exec.c:4015 msgid "array subscript in assignment must not be null" msgstr "índice da matriz em atribuição não deve ser nulo" -#: pl_exec.c:4161 +#: pl_exec.c:4493 #, c-format msgid "query \"%s\" did not return data" msgstr "consulta \"%s\" não retornou dados" -#: pl_exec.c:4169 +#: pl_exec.c:4501 #, c-format msgid "query \"%s\" returned %d column" msgid_plural "query \"%s\" returned %d columns" msgstr[0] "consulta \"%s\" retornou %d coluna" msgstr[1] "consulta \"%s\" retornou %d colunas" -#: pl_exec.c:4195 +#: pl_exec.c:4527 #, c-format msgid "query \"%s\" returned more than one row" msgstr "consulta \"%s\" retornou mais do que um registro" -#: pl_exec.c:4253 +#: pl_exec.c:4585 #, c-format msgid "query \"%s\" is not a SELECT" msgstr "consulta \"%s\" não é um SELECT" -#: gram.y:423 +#: gram.y:430 msgid "block label must be placed before DECLARE, not after" msgstr "rótulo de bloco deve estar localizado antes do DECLARE e não depois" -#: gram.y:441 +#: gram.y:450 +#, c-format +msgid "collations are not supported by type %s" +msgstr "ordenações não são suportadas pelo tipo %s" + +#: gram.y:465 msgid "row or record variable cannot be CONSTANT" msgstr "variável do tipo row ou record não pode ser CONSTANT" -#: gram.y:451 +#: gram.y:475 msgid "row or record variable cannot be NOT NULL" msgstr "variável do tipo row ou record não pode ser NOT NULL" -#: gram.y:462 +#: gram.y:486 msgid "default value for row or record variable is not supported" msgstr "valor padrão para variável do tipo row ou record não é suportado" -#: gram.y:606 gram.y:632 +#: gram.y:631 gram.y:657 #, c-format msgid "variable \"%s\" does not exist" msgstr "variável \"%s\" não existe" -#: gram.y:650 gram.y:663 +#: gram.y:675 gram.y:688 msgid "duplicate declaration" msgstr "declaração duplicada" -#: gram.y:841 +#: gram.y:881 msgid "unrecognized GET DIAGNOSTICS item" msgstr "item de GET DIAGNOSTICS desconhecido" -#: gram.y:852 gram.y:2975 +#: gram.y:892 gram.y:3090 #, c-format msgid "\"%s\" is not a scalar variable" msgstr "\"%s\" não é uma variável escalar" -#: gram.y:1114 gram.y:1306 +#: gram.y:1154 gram.y:1347 msgid "" "loop variable of loop over rows must be a record or row variable or list of " "scalar variables" msgstr "" "variável de laço sobre registros deve ser uma variável do tipo record ou row " -"or lista de variáveis escalares" +"ou lista de variáveis escalares" -#: gram.y:1148 +#: gram.y:1188 msgid "cursor FOR loop must have only one target variable" msgstr "cursor do laço FOR deve ter somente uma variável alvo" -#: gram.y:1155 +#: gram.y:1195 msgid "cursor FOR loop must use a bound cursor variable" msgstr "cursor do laço FOR deve utilizar uma variável cursor limitado" -#: gram.y:1238 +#: gram.y:1278 msgid "integer FOR loop must have only one target variable" msgstr "inteiro do laço FOR deve ter somente uma variável alvo" -#: gram.y:1273 +#: gram.y:1314 msgid "cannot specify REVERSE in query FOR loop" msgstr "não pode especificar REVERSE na consulta do laço FOR" -#: gram.y:1420 gram.y:1457 gram.y:1505 gram.y:2425 gram.y:2506 gram.y:2617 -#: gram.y:3249 +#: gram.y:1461 +msgid "loop variable of FOREACH must be a known variable or list of variables" +msgstr "variável do laço FOEACH deve ser uma variável ou lista de variáveis conhecida" + +#: gram.y:1513 gram.y:1550 gram.y:1598 gram.y:2540 gram.y:2621 gram.y:2732 +#: gram.y:3365 msgid "unexpected end of function definition" msgstr "fim de definição da função inesperado" -#: gram.y:1525 gram.y:1549 gram.y:1561 gram.y:1568 gram.y:1652 gram.y:1759 -#: gram.y:1936 gram.y:2015 gram.y:2128 gram.y:2706 gram.y:2770 gram.y:3209 -#: gram.y:3230 +#: gram.y:1618 gram.y:1642 gram.y:1654 gram.y:1661 gram.y:1750 gram.y:1758 +#: gram.y:1772 gram.y:1867 gram.y:2048 gram.y:2127 gram.y:2242 gram.y:2821 +#: gram.y:2885 gram.y:3325 gram.y:3346 msgid "syntax error" msgstr "erro de sintaxe" -#: gram.y:1553 gram.y:1555 gram.y:1940 gram.y:1942 +#: gram.y:1646 gram.y:1648 gram.y:2052 gram.y:2054 msgid "invalid SQLSTATE code" msgstr "código SQLSTATE inválido" -#: gram.y:1706 +#: gram.y:1814 msgid "syntax error, expected \"FOR\"" msgstr "erro de sintaxe, \"FOR\" esperado" -#: gram.y:1768 +#: gram.y:1876 msgid "FETCH statement cannot return multiple rows" msgstr "comando FETCH não pode retornar múltiplos registros" -#: gram.y:1824 +#: gram.y:1932 msgid "cursor variable must be a simple variable" msgstr "variável do cursor deve ser uma variável simples" -#: gram.y:1830 +#: gram.y:1938 #, c-format msgid "variable \"%s\" must be of type cursor or refcursor" msgstr "variável \"%s\" deve ser do tipo cursor ou refcursor" -#: gram.y:1994 +#: gram.y:2106 msgid "label does not exist" msgstr "rótulo não existe" -#: gram.y:2099 gram.y:2110 +#: gram.y:2213 gram.y:2224 #, c-format msgid "\"%s\" is not a known variable" msgstr "\"%s\" não é uma variável conhecida" -#: gram.y:2212 gram.y:2222 gram.y:2350 +#: gram.y:2326 gram.y:2336 gram.y:2464 msgid "mismatched parentheses" msgstr "parênteses não correspondem" -#: gram.y:2226 +#: gram.y:2340 #, c-format msgid "missing \"%s\" at end of SQL expression" msgstr "faltando \"%s\" ao fim da expressão SQL" -#: gram.y:2232 +#: gram.y:2346 #, c-format msgid "missing \"%s\" at end of SQL statement" msgstr "faltando \"%s\" ao fim do comando SQL" -#: gram.y:2249 +#: gram.y:2363 msgid "missing expression" msgstr "faltando expressão" -#: gram.y:2251 +#: gram.y:2365 msgid "missing SQL statement" msgstr "faltando comando SQL" -#: gram.y:2352 +#: gram.y:2466 msgid "incomplete data type declaration" msgstr "declaração de tipo de dado incompleta" -#: gram.y:2374 +#: gram.y:2489 msgid "missing data type declaration" msgstr "faltando declaração de tipo de dado" -#: gram.y:2430 +#: gram.y:2545 msgid "INTO specified more than once" msgstr "INTO especificado mais de uma vez" -#: gram.y:2598 +#: gram.y:2713 msgid "expected FROM or IN" msgstr "FROM ou IN esperado" -#: gram.y:2658 +#: gram.y:2773 msgid "RETURN cannot have a parameter in function returning set" msgstr "RETURN não pode ter um parâmetro na função que retorna conjunto" -#: gram.y:2659 +#: gram.y:2774 msgid "Use RETURN NEXT or RETURN QUERY." msgstr "Utilize RETURN NEXT ou RETURN QUERY." -#: gram.y:2667 +#: gram.y:2782 msgid "RETURN cannot have a parameter in function with OUT parameters" msgstr "RETURN não pode ter um parâmetro na função com parâmetros OUT" -#: gram.y:2676 +#: gram.y:2791 msgid "RETURN cannot have a parameter in function returning void" msgstr "RETURN não pode ter um parâmetro na função que retorna void" -#: gram.y:2694 gram.y:2701 +#: gram.y:2809 gram.y:2816 msgid "RETURN must specify a record or row variable in function returning row" msgstr "" "RETURN deve especificar uma variável do tipo record ou row na função que " "retorna registro" -#: gram.y:2743 +#: gram.y:2858 msgid "RETURN NEXT cannot have a parameter in function with OUT parameters" msgstr "RETURN NEXT não pode ter um parâmetro na função com parâmetros OUT" -#: gram.y:2758 gram.y:2765 +#: gram.y:2873 gram.y:2880 msgid "" "RETURN NEXT must specify a record or row variable in function returning row" msgstr "" "RETURN NEXT deve especificar uma variável do tipo record ou row na função " "que retorna registro" -#: gram.y:2844 +#: gram.y:2959 #, c-format msgid "\"%s\" is declared CONSTANT" msgstr "\"%s\" está declarado CONSTANT" -#: gram.y:2906 gram.y:2918 +#: gram.y:3021 gram.y:3033 msgid "record or row variable cannot be part of multiple-item INTO list" -msgstr "variável do tipo record ou row não pode ser parte de uma lista INTO de múltiplos itens" +msgstr "" +"variável do tipo record ou row não pode ser parte de uma lista INTO de " +"múltiplos itens" -#: gram.y:2963 +#: gram.y:3078 msgid "too many INTO variables specified" msgstr "muitas variáveis INTO especificadas" -#: gram.y:3170 +#: gram.y:3286 #, c-format msgid "end label \"%s\" specified for unlabelled block" msgstr "rótulo de fim \"%s\" especificado para bloco sem rótulo" -#: gram.y:3177 +#: gram.y:3293 #, c-format msgid "end label \"%s\" differs from block's label \"%s\"" msgstr "rótulo de fim \"%s\" difere de rótulo do bloco \"%s\"" -#: gram.y:3204 +#: gram.y:3320 #, c-format msgid "cursor \"%s\" has no arguments" msgstr "cursor \"%s\" não tem argumentos" -#: gram.y:3218 +#: gram.y:3334 #, c-format msgid "cursor \"%s\" has arguments" msgstr "cursor \"%s\" tem argumentos" -#: gram.y:3266 +#: gram.y:3382 msgid "unrecognized RAISE statement option" msgstr "opção do comando RAISE desconhecida" -#: gram.y:3270 +#: gram.y:3386 msgid "syntax error, expected \"=\"" msgstr "erro de sintaxe, \"=\" esperado" -#: pl_funcs.c:216 +#: pl_funcs.c:218 msgid "statement block" msgstr "bloco de comandos" -#: pl_funcs.c:218 +#: pl_funcs.c:220 msgid "assignment" msgstr "atribuição" -#: pl_funcs.c:228 +#: pl_funcs.c:230 msgid "FOR with integer loop variable" msgstr "FOR com variável de laço inteira" -#: pl_funcs.c:230 +#: pl_funcs.c:232 msgid "FOR over SELECT rows" msgstr "FOR sobre registros de SELECT" -#: pl_funcs.c:232 +#: pl_funcs.c:234 msgid "FOR over cursor" msgstr "FOR sobre cursor" -#: pl_funcs.c:244 +#: pl_funcs.c:236 +msgid "FOREACH over array" +msgstr "FOREACH sobre matriz" + +#: pl_funcs.c:248 msgid "SQL statement" msgstr "comando SQL" -#: pl_funcs.c:246 +#: pl_funcs.c:250 msgid "EXECUTE statement" msgstr "comando EXECUTE" -#: pl_funcs.c:248 +#: pl_funcs.c:252 msgid "FOR over EXECUTE statement" msgstr "FOR sobre comando EXECUTE" @@ -654,16 +699,18 @@ msgstr "FOR sobre comando EXECUTE" msgid "" "Sets handling of conflicts between PL/pgSQL variable names and table column " "names." -msgstr "Define resolução de conflitos entre nomes de variáveis PL/pgSQL e nomes de colunas de tabelas." +msgstr "" +"Define resolução de conflitos entre nomes de variáveis PL/pgSQL e nomes de " +"colunas de tabelas." #. translator: %s is typically the translation of "syntax error" -#: pl_scanner.c:463 +#: pl_scanner.c:467 #, c-format msgid "%s at end of input" msgstr "%s no fim da entrada" #. translator: first %s is typically the translation of "syntax error" -#: pl_scanner.c:479 +#: pl_scanner.c:483 #, c-format msgid "%s at or near \"%s\"" msgstr "%s em ou próximo a \"%s\"" diff --git a/src/pl/plpgsql/src/po/ro.po b/src/pl/plpgsql/src/po/ro.po index 2836701062..2af2b4b09f 100644 --- a/src/pl/plpgsql/src/po/ro.po +++ b/src/pl/plpgsql/src/po/ro.po @@ -1,700 +1,745 @@ -# LANGUAGE message translation file for plpgsql -# Copyright (C) 2009 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-09-04 19:58+0000\n" -"PO-Revision-Date: 2010-09-27 22:19-0000\n" -"Last-Translator: Max \n" -"Language-Team: ROMÂNĂ \n" +"POT-Creation-Date: 2011-11-09 20:39+0000\n" +"PO-Revision-Date: 2011-11-22 11:32-0000\n" +"Last-Translator: Gheorge Rosca Codreanu \n" +"Language-Team: ROMÂNĂ \n" +"Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Romanian\n" "X-Poedit-Country: ROMANIA\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" -#: pl_comp.c:422 -#: pl_handler.c:256 +#: pl_comp.c:427 +#: pl_handler.c:266 #, c-format msgid "PL/pgSQL functions cannot accept type %s" msgstr "funcţiile PL/pgSQL nu pot accepta tipul %s" -#: pl_comp.c:501 +#: pl_comp.c:506 #, c-format msgid "could not determine actual return type for polymorphic function \"%s\"" msgstr "nu pot determina tipul de dată returnat pentru funcţia polimorfică \"%s\"" -#: pl_comp.c:531 +#: pl_comp.c:536 msgid "trigger functions can only be called as triggers" msgstr "funcţiile trigger pot fi apelate doar ca triggere" -#: pl_comp.c:535 -#: pl_handler.c:241 +#: pl_comp.c:540 +#: pl_handler.c:251 #, c-format msgid "PL/pgSQL functions cannot return type %s" msgstr "funcţiile PL/pgSQL nu pot returna tipul %s" -#: pl_comp.c:576 +#: pl_comp.c:583 msgid "trigger functions cannot have declared arguments" msgstr "funcţiile trigger nu pot avea argumente declarate" -#: pl_comp.c:577 +#: pl_comp.c:584 msgid "The arguments of the trigger can be accessed through TG_NARGS and TG_ARGV instead." msgstr "Argumentele trigger-ului pot fi accesate cu ajutorul TG_NARGS și TG_ARGV." -#: pl_comp.c:880 +#: pl_comp.c:912 #, c-format msgid "compilation of PL/pgSQL function \"%s\" near line %d" msgstr "compilarea funcțiee PL/pgSQL \"%s\" aproape de linia %d" -#: pl_comp.c:978 +#: pl_comp.c:935 +#, c-format +msgid "parameter name \"%s\" used more than once" +msgstr "parametrul cu numele \"%s\" este folosit mai mult de o singură dată" + +#: pl_comp.c:1045 #, c-format msgid "column reference \"%s\" is ambiguous" msgstr "referința coloanei \"%s\" este ambiguă" -#: pl_comp.c:980 +#: pl_comp.c:1047 msgid "It could refer to either a PL/pgSQL variable or a table column." msgstr "Se poate referi la o variabilă PL/pgSQL sau la o coloană a unei tabele." -#: pl_comp.c:1690 +#: pl_comp.c:1227 +#: pl_comp.c:1255 +#: pl_exec.c:3862 +#: pl_exec.c:4208 +#: pl_exec.c:4294 +#: pl_exec.c:4385 +#, c-format +msgid "record \"%s\" has no field \"%s\"" +msgstr "înregistrarea \"%s\" nu are nici un câmp \"%s\"" + +#: pl_comp.c:1782 #, c-format msgid "relation \"%s\" does not exist" msgstr "relaţia \"%s\" nu există" -#: pl_comp.c:1722 +#: pl_comp.c:1814 #, c-format msgid "relation \"%s.%s\" does not exist" msgstr "relaţia \"%s.%s\" nu există" -#: pl_comp.c:1804 +#: pl_comp.c:1896 #, c-format msgid "variable \"%s\" has pseudo-type %s" msgstr "variabila \"%s\" are pseudo-tipul %s" -#: pl_comp.c:1865 +#: pl_comp.c:1957 #, c-format msgid "relation \"%s\" is not a table" msgstr "relaţia \"%s\" nu este o tabelă" -#: pl_comp.c:2017 +#: pl_comp.c:2117 #, c-format msgid "type \"%s\" is only a shell" msgstr "tipul \"%s\" este doar un shell" -#: pl_comp.c:2087 -#: pl_comp.c:2140 +#: pl_comp.c:2190 +#: pl_comp.c:2243 #, c-format msgid "unrecognized exception condition \"%s\"" msgstr "condiţia excepției \"%s\" nu este recunoscută" -#: pl_comp.c:2295 +#: pl_comp.c:2401 #, c-format msgid "could not determine actual argument type for polymorphic function \"%s\"" msgstr "nu pot determina tipul de dată returnat pentru funcţia polimorfică \"%s\"" -#: pl_exec.c:236 -#: pl_exec.c:511 +#: pl_exec.c:239 +#: pl_exec.c:510 msgid "during initialization of execution state" msgstr "în timpul inițializării stării de execuție" -#: pl_exec.c:243 +#: pl_exec.c:246 msgid "while storing call arguments into local variables" msgstr "în timpul stocării argumentelor de apelare în variabile locale" -#: pl_exec.c:298 -#: pl_exec.c:666 +#: pl_exec.c:301 +#: pl_exec.c:667 msgid "during function entry" msgstr "în timpul intrării în funcție" -#: pl_exec.c:329 -#: pl_exec.c:697 +#: pl_exec.c:332 +#: pl_exec.c:698 msgid "CONTINUE cannot be used outside a loop" msgstr "CONTINUE nu poate fi folosit în afara unei bucle" -#: pl_exec.c:333 -#: pl_exec.c:701 -msgid "RAISE without parameters cannot be used outside an exception handler" -msgstr "RAISE fără parametri nu poate fi folosit în afara unui gestionar de excepții - exception handler" - -#: pl_exec.c:337 +#: pl_exec.c:336 msgid "control reached end of function without RETURN" msgstr "controlul a ajuns la sfârșitul funcției fără a întâlni comanda RETURN" -#: pl_exec.c:344 +#: pl_exec.c:343 msgid "while casting return value to function's return type" msgstr "în timpul transformării valorii returnate în tipul de dată returnat de funcție" -#: pl_exec.c:357 -#: pl_exec.c:2403 +#: pl_exec.c:356 +#: pl_exec.c:2591 msgid "set-valued function called in context that cannot accept a set" msgstr "funcţie set-valoare apelată într-un context care nu acceptă set" -#: pl_exec.c:395 +#: pl_exec.c:394 msgid "returned record type does not match expected record type" msgstr "tipul înregistrării returnate nu se potrivește cu tipul înregistrării așteptat" -#: pl_exec.c:453 -#: pl_exec.c:709 +#: pl_exec.c:452 +#: pl_exec.c:706 msgid "during function exit" msgstr "în timpul ieșirii din fucție" -#: pl_exec.c:705 +#: pl_exec.c:702 msgid "control reached end of trigger procedure without RETURN" msgstr "controlul a ajuns la sfârșitul trigger-ului fără a întâlni comanda RETURN" -#: pl_exec.c:714 +#: pl_exec.c:711 msgid "trigger procedure cannot return a set" msgstr "o procedură trigger nu poate returna un set" -#: pl_exec.c:736 +#: pl_exec.c:733 msgid "returned row structure does not match the structure of the triggering table" msgstr "structura rândului nu se potrivește cu structura tabelei carea a activat triggerul" -#: pl_exec.c:799 +#: pl_exec.c:796 #, c-format msgid "PL/pgSQL function \"%s\" line %d %s" msgstr "PL/pgSQL funcție \"%s\" linie %d %s" -#: pl_exec.c:810 +#: pl_exec.c:807 #, c-format msgid "PL/pgSQL function \"%s\" %s" msgstr "PL/pgSQL funcție \"%s\" %s" #. translator: last %s is a plpgsql statement type name -#: pl_exec.c:818 +#: pl_exec.c:815 #, c-format msgid "PL/pgSQL function \"%s\" line %d at %s" msgstr "PL/pgSQL funcție \"%s\" linie %d la %s" -#: pl_exec.c:824 +#: pl_exec.c:821 #, c-format msgid "PL/pgSQL function \"%s\"" msgstr "PL/pgSQL funcție \"%s\"" -#: pl_exec.c:932 +#: pl_exec.c:929 msgid "during statement block local variable initialization" msgstr "în timpul inițializării variabilei locale în blocul de comenzi" -#: pl_exec.c:974 +#: pl_exec.c:971 #, c-format msgid "variable \"%s\" declared NOT NULL cannot default to NULL" msgstr "variabila \"%s\" declarată NOT NULL nu poate fi avea valoare predefinită ca NULL" -#: pl_exec.c:1023 +#: pl_exec.c:1021 msgid "during statement block entry" msgstr "în timpul intrării în blocul de comenzi" -#: pl_exec.c:1044 +#: pl_exec.c:1042 msgid "during statement block exit" msgstr "în timpul ieșirii din blocul de comenzi" -#: pl_exec.c:1087 +#: pl_exec.c:1085 msgid "during exception cleanup" msgstr "în timpul operaţiei de curăţare, a excepţiei " -#: pl_exec.c:1556 +#: pl_exec.c:1570 msgid "case not found" msgstr "caz negăsit" -#: pl_exec.c:1557 +#: pl_exec.c:1571 msgid "CASE statement is missing ELSE part." msgstr "comandă CASE fără partea ELSE." -#: pl_exec.c:1713 +#: pl_exec.c:1725 msgid "lower bound of FOR loop cannot be null" msgstr "limita de jos a unei bucle FOR nu poate fi NULL" -#: pl_exec.c:1728 +#: pl_exec.c:1740 msgid "upper bound of FOR loop cannot be null" msgstr "limita de sus a unei bucle FOR nu poate fi NULL" -#: pl_exec.c:1745 +#: pl_exec.c:1757 msgid "BY value of FOR loop cannot be null" msgstr "BY valoare într-o buclă FOR nu poate fi NULL" -#: pl_exec.c:1751 +#: pl_exec.c:1763 msgid "BY value of FOR loop must be greater than zero" msgstr "BY valoare într-o buclă FOR trebuie să fie mai mare ca zero" -#: pl_exec.c:1923 -#: pl_exec.c:3188 +#: pl_exec.c:1933 +#: pl_exec.c:3395 #, c-format msgid "cursor \"%s\" already in use" msgstr "cursor \"%s\" deja în uz" -#: pl_exec.c:1946 -#: pl_exec.c:3250 +#: pl_exec.c:1956 +#: pl_exec.c:3457 msgid "arguments given for cursor without arguments" msgstr "argumente transmise unui cursor ce nu primeşte argumente" -#: pl_exec.c:1965 -#: pl_exec.c:3269 +#: pl_exec.c:1975 +#: pl_exec.c:3476 msgid "arguments required for cursor" msgstr "argumente necesare pentru cursor" -#: pl_exec.c:2187 -#: gram.y:2744 +#: pl_exec.c:2063 +msgid "FOREACH expression must not be null" +msgstr "expresia FOREACH nu poate fi null" + +#: pl_exec.c:2069 +#, c-format +msgid "FOREACH expression must yield an array, not type %s" +msgstr "expresia FOREACH trebuie să producă un arraz şi nu tipul %s" + +#: pl_exec.c:2086 +#, c-format +msgid "slice dimension (%d) is out of the valid range 0..%d" +msgstr "slice dimension (%d) este in afara intervalului permis 0..%d" + +#: pl_exec.c:2113 +msgid "FOREACH ... SLICE loop variable must be of an array type" +msgstr "variabila din bucla FOREACH ... SLICE trebuie să fie de tip array" + +#: pl_exec.c:2117 +msgid "FOREACH loop variable must not be of an array type" +msgstr "variabila din bucla FOREACH nu trebuie să fie de tip array" + +#: pl_exec.c:2375 +#: gram.y:2844 msgid "cannot use RETURN NEXT in a non-SETOF function" msgstr "RETURN NEXT nu poate fi folosit într-o funcţie de tip non-SETOF" -#: pl_exec.c:2211 -#: pl_exec.c:2277 +#: pl_exec.c:2399 +#: pl_exec.c:2465 msgid "wrong result type supplied in RETURN NEXT" msgstr "rezultat cu tip de dată greșit, furnizat în RETURN NEXT" -#: pl_exec.c:2233 -#: pl_exec.c:3642 -#: pl_exec.c:3948 -#: pl_exec.c:3982 -#: pl_exec.c:4044 -#: pl_exec.c:4063 -#: pl_exec.c:4100 +#: pl_exec.c:2421 +#: pl_exec.c:3849 +#: pl_exec.c:4166 +#: pl_exec.c:4201 +#: pl_exec.c:4268 +#: pl_exec.c:4287 +#: pl_exec.c:4355 +#: pl_exec.c:4378 #, c-format msgid "record \"%s\" is not assigned yet" msgstr "înregistrarea \"%s\" nu este atribuită încă" -#: pl_exec.c:2235 -#: pl_exec.c:3644 -#: pl_exec.c:3950 -#: pl_exec.c:3984 -#: pl_exec.c:4046 -#: pl_exec.c:4065 -#: pl_exec.c:4102 +#: pl_exec.c:2423 +#: pl_exec.c:3851 +#: pl_exec.c:4168 +#: pl_exec.c:4203 +#: pl_exec.c:4270 +#: pl_exec.c:4289 +#: pl_exec.c:4357 +#: pl_exec.c:4380 msgid "The tuple structure of a not-yet-assigned record is indeterminate." msgstr "Structura tuplului unei înregistrări încă-ne-atribuită nu poate fi determinată" -#: pl_exec.c:2239 -#: pl_exec.c:2258 +#: pl_exec.c:2427 +#: pl_exec.c:2446 msgid "wrong record type supplied in RETURN NEXT" msgstr "tipul înregistrării furnizat în RETURN NEXT este greşit" -#: pl_exec.c:2300 +#: pl_exec.c:2488 msgid "RETURN NEXT must have a parameter" msgstr "RETURN NEXT trebuie să aibă un parametru" -#: pl_exec.c:2331 -#: gram.y:2803 +#: pl_exec.c:2519 +#: gram.y:2903 msgid "cannot use RETURN QUERY in a non-SETOF function" msgstr "RETURN QUERY nu pote fi folosit într-o funcție non-SETOF" -#: pl_exec.c:2351 +#: pl_exec.c:2539 msgid "structure of query does not match function result type" msgstr "structura interogării nu se potriveşte cu tipul rezultatului funcţiei" -#: pl_exec.c:2483 +#: pl_exec.c:2637 +msgid "RAISE without parameters cannot be used outside an exception handler" +msgstr "RAISE fără parametri nu poate fi folosit în afara unui gestionar de excepții - exception handler" + +#: pl_exec.c:2678 msgid "too few parameters specified for RAISE" msgstr "prea puțini parametri specificați pentru RAISE" -#: pl_exec.c:2509 +#: pl_exec.c:2704 msgid "too many parameters specified for RAISE" msgstr "prea mulți parametri specificați pentru RAISE" -#: pl_exec.c:2529 +#: pl_exec.c:2724 msgid "RAISE statement option cannot be null" msgstr "opţiunea comenzii RAISE nu poate fi NULL" -#: pl_exec.c:2539 -#: pl_exec.c:2548 -#: pl_exec.c:2556 -#: pl_exec.c:2564 +#: pl_exec.c:2734 +#: pl_exec.c:2743 +#: pl_exec.c:2751 +#: pl_exec.c:2759 #, c-format msgid "RAISE option already specified: %s" msgstr "opțiune RAISE deja specificată: %s" -#: pl_exec.c:2599 -#: pl_exec.c:2600 +#: pl_exec.c:2795 #, c-format msgid "%s" msgstr "%s" -#: pl_exec.c:2749 -#: pl_exec.c:3053 +#: pl_exec.c:2945 +#: pl_exec.c:3081 +#: pl_exec.c:3260 msgid "cannot COPY to/from client in PL/pgSQL" msgstr "COPY la/de la un client nu poate fi folosită în PL/pgSQL" -#: pl_exec.c:2753 -#: pl_exec.c:3057 +#: pl_exec.c:2949 +#: pl_exec.c:3085 +#: pl_exec.c:3264 msgid "cannot begin/end transactions in PL/pgSQL" msgstr "nu pot începe/termina tranzacții în PL/pgSQL" -#: pl_exec.c:2754 -#: pl_exec.c:3058 +#: pl_exec.c:2950 +#: pl_exec.c:3086 +#: pl_exec.c:3265 msgid "Use a BEGIN block with an EXCEPTION clause instead." msgstr "Folosiți, în loc, blocul BEGIN cu clauza EXCEPTION " -#: pl_exec.c:2902 -#: pl_exec.c:3082 +#: pl_exec.c:3109 +#: pl_exec.c:3289 msgid "INTO used with a command that cannot return data" msgstr "INTO utilizat într-o comandă care nu poate returna date" -#: pl_exec.c:2922 -#: pl_exec.c:3102 +#: pl_exec.c:3129 +#: pl_exec.c:3309 msgid "query returned no rows" msgstr "interogarea nu a rezultat nici un rând" -#: pl_exec.c:2931 -#: pl_exec.c:3111 +#: pl_exec.c:3138 +#: pl_exec.c:3318 msgid "query returned more than one row" msgstr "interogarea a rezultat mai mult de un rând" -#: pl_exec.c:2945 +#: pl_exec.c:3152 msgid "query has no destination for result data" msgstr "interogarea nu are destinaţie pentru datele rezultate" -#: pl_exec.c:2946 +#: pl_exec.c:3153 msgid "If you want to discard the results of a SELECT, use PERFORM instead." msgstr "Dacă doriți să renunțați la rezultatul unui SELECT, folosiți PERFORM în loc." -#: pl_exec.c:2979 -#: pl_exec.c:5602 +#: pl_exec.c:3186 +#: pl_exec.c:5929 msgid "query string argument of EXECUTE is null" msgstr "comanda EXECUTE are ca parametru o expresie nulă" -#: pl_exec.c:3044 +#: pl_exec.c:3251 msgid "EXECUTE of SELECT ... INTO is not implemented" msgstr "EXECUTE of SELECT ... INTO nu este încă implementat" -#: pl_exec.c:3045 -msgid "You might want to use EXECUTE ... INTO instead." -msgstr "Posibil să doriți să utilizați, în loc, EXECUTE ... INTO." +#: pl_exec.c:3252 +msgid "You might want to use EXECUTE ... INTO or EXECUTE CREATE TABLE ... AS instead." +msgstr "Poate doriți să folosiţi în loc, EXECUTE ... INTO sau EXECUTE CREATE TABLE ... AS " -#: pl_exec.c:3333 -#: pl_exec.c:3424 +#: pl_exec.c:3540 +#: pl_exec.c:3631 #, c-format msgid "cursor variable \"%s\" is null" msgstr "variabila cursor \"%s\" este NULL" -#: pl_exec.c:3340 -#: pl_exec.c:3431 +#: pl_exec.c:3547 +#: pl_exec.c:3638 #, c-format msgid "cursor \"%s\" does not exist" msgstr "cursorul \"%s\" nu există" -#: pl_exec.c:3354 +#: pl_exec.c:3561 msgid "relative or absolute cursor position is null" msgstr "poziţia relativă sau absolută a cursorului este NULL" -#: pl_exec.c:3495 +#: pl_exec.c:3702 #, c-format msgid "null value cannot be assigned to variable \"%s\" declared NOT NULL" msgstr "NULL nu poate fi attribuit variabilei \"%s\" declarată NOT NULL" -#: pl_exec.c:3553 +#: pl_exec.c:3760 msgid "cannot assign non-composite value to a row variable" msgstr "o valoare de tip non-compozit nu poate fi atribuită unei variabile de tip rând" -#: pl_exec.c:3595 +#: pl_exec.c:3802 msgid "cannot assign non-composite value to a record variable" msgstr "o valoare de tip non-compozit nu poate fi atribuită unei variabile de tip înregistrare" -#: pl_exec.c:3655 -#: pl_exec.c:3989 -#: pl_exec.c:4070 -#: pl_exec.c:4107 -#, c-format -msgid "record \"%s\" has no field \"%s\"" -msgstr "înregistrarea \"%s\" nu are nici un câmp \"%s\"" - -#: pl_exec.c:3765 +#: pl_exec.c:3973 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "numarul dimensiunilor array-ului (%d) depăşeşte maximul admis, %d" -#: pl_exec.c:3779 +#: pl_exec.c:3992 msgid "subscripted object is not an array" msgstr "obiectul transmis nu este un array" -#: pl_exec.c:3802 +#: pl_exec.c:4015 msgid "array subscript in assignment must not be null" msgstr "array-ul transmis pentru atribuire nu poate fi null" -#: pl_exec.c:4198 +#: pl_exec.c:4493 #, c-format msgid "query \"%s\" did not return data" msgstr "interogarea \"%s\" nu a rezultat date" -#: pl_exec.c:4206 -#, fuzzy, c-format +#: pl_exec.c:4501 +#, c-format msgid "query \"%s\" returned %d column" msgid_plural "query \"%s\" returned %d columns" -msgstr[0] "interogarea \"%s\" a rezultat %d coloane" +msgstr[0] "interogarea \"%s\" a rezultat coloana %d" msgstr[1] "interogarea \"%s\" a rezultat %d coloane" -#: pl_exec.c:4232 +#: pl_exec.c:4527 #, c-format msgid "query \"%s\" returned more than one row" msgstr "interogarea \"%s\" a rezultat mai mult un rând" -#: pl_exec.c:4290 +#: pl_exec.c:4585 #, c-format msgid "query \"%s\" is not a SELECT" msgstr "interogarea \"%s\" nu este un SELECT" -#: gram.y:423 +#: gram.y:430 msgid "block label must be placed before DECLARE, not after" msgstr "eticheta bloc trebuie plasată înainte de DECLARE, nu după" -#: gram.y:441 +#: gram.y:450 +#, c-format +msgid "collations are not supported by type %s" +msgstr "colaţionările nu sunt suportate de tipul de dată %s" + +#: gram.y:465 msgid "row or record variable cannot be CONSTANT" msgstr "variabila de tip rând sau înregistrare nu poate fi CONSTANT" -#: gram.y:451 +#: gram.y:475 msgid "row or record variable cannot be NOT NULL" msgstr "variabila de tip rând sau înregistrare nu poate fi NOT NULL" -#: gram.y:462 +#: gram.y:486 msgid "default value for row or record variable is not supported" msgstr "valoare predefinită pentru o variabilă de tip rând sau înregistrare nu este suportată" -#: gram.y:606 -#: gram.y:632 +#: gram.y:631 +#: gram.y:657 #, c-format msgid "variable \"%s\" does not exist" msgstr "variabila \"%s\" nu există" -#: gram.y:650 -#: gram.y:663 +#: gram.y:675 +#: gram.y:688 msgid "duplicate declaration" msgstr "declarație duplicată" -#: gram.y:841 +#: gram.y:881 msgid "unrecognized GET DIAGNOSTICS item" msgstr "element GET DIAGNOSTICS necunoscut" -#: gram.y:852 -#: gram.y:2990 +#: gram.y:892 +#: gram.y:3090 #, c-format msgid "\"%s\" is not a scalar variable" msgstr "\"%s\" nu este o variabilă de tip scalar" -#: gram.y:1114 -#: gram.y:1306 +#: gram.y:1154 +#: gram.y:1347 msgid "loop variable of loop over rows must be a record or row variable or list of scalar variables" msgstr "variabila unei bucle de tip -buclă peste rânduri- trebuie să fie o variabilă de tip înregistrare sau rând, sau o listă de variabile de tip scalar" -#: gram.y:1148 +#: gram.y:1188 msgid "cursor FOR loop must have only one target variable" msgstr "bucla cursor FOR trebuie sa aibă doar o variabilă ţintă" -#: gram.y:1155 +#: gram.y:1195 msgid "cursor FOR loop must use a bound cursor variable" msgstr "bucla cursor FOR trebuie să utilizeze o variabilă de tip bound cursor" -#: gram.y:1238 +#: gram.y:1278 msgid "integer FOR loop must have only one target variable" msgstr "variabila de tip integer din bucla FOR trebuie să aibă o singură variabilă ţintă" -#: gram.y:1273 +#: gram.y:1314 msgid "cannot specify REVERSE in query FOR loop" msgstr "REVERSE nu poate fi specificat într-o interogare buclă FOR" -#: gram.y:1420 -#: gram.y:1457 -#: gram.y:1505 -#: gram.y:2440 -#: gram.y:2521 -#: gram.y:2632 -#: gram.y:3264 +#: gram.y:1461 +msgid "loop variable of FOREACH must be a known variable or list of variables" +msgstr "variabila unei bucle de tip FOREACH trebuie să fie o variabilă cunoscută sau o listă de variabile cunoscute" + +#: gram.y:1513 +#: gram.y:1550 +#: gram.y:1598 +#: gram.y:2540 +#: gram.y:2621 +#: gram.y:2732 +#: gram.y:3365 msgid "unexpected end of function definition" msgstr "sfârșit de definiție a funcției nerecunoscut" -#: gram.y:1525 -#: gram.y:1549 -#: gram.y:1561 -#: gram.y:1568 -#: gram.y:1657 -#: gram.y:1665 -#: gram.y:1679 -#: gram.y:1774 -#: gram.y:1951 -#: gram.y:2030 -#: gram.y:2143 -#: gram.y:2721 -#: gram.y:2785 -#: gram.y:3224 -#: gram.y:3245 +#: gram.y:1618 +#: gram.y:1642 +#: gram.y:1654 +#: gram.y:1661 +#: gram.y:1750 +#: gram.y:1758 +#: gram.y:1772 +#: gram.y:1867 +#: gram.y:2048 +#: gram.y:2127 +#: gram.y:2242 +#: gram.y:2821 +#: gram.y:2885 +#: gram.y:3325 +#: gram.y:3346 msgid "syntax error" msgstr "eroare de sintaxă" -#: gram.y:1553 -#: gram.y:1555 -#: gram.y:1955 -#: gram.y:1957 +#: gram.y:1646 +#: gram.y:1648 +#: gram.y:2052 +#: gram.y:2054 msgid "invalid SQLSTATE code" msgstr "cod SQLSTATE invalid" -#: gram.y:1721 +#: gram.y:1814 msgid "syntax error, expected \"FOR\"" msgstr "eroare de sintaxă, așteptam \"FOR\"" -#: gram.y:1783 +#: gram.y:1876 msgid "FETCH statement cannot return multiple rows" msgstr "comanda FETCH nu poate returna mai multe rânduri" -#: gram.y:1839 +#: gram.y:1932 msgid "cursor variable must be a simple variable" msgstr "variabila cursor trebuie să fie o variabilă simplă" -#: gram.y:1845 +#: gram.y:1938 #, c-format msgid "variable \"%s\" must be of type cursor or refcursor" msgstr "variabila \"%s\" trebuie să fie de tip cursor sau refcursor" -#: gram.y:2009 +#: gram.y:2106 msgid "label does not exist" msgstr "etichetă inexistentă" -#: gram.y:2114 -#: gram.y:2125 +#: gram.y:2213 +#: gram.y:2224 #, c-format msgid "\"%s\" is not a known variable" msgstr "\"%s\" nu este o variabilă cunoscută" -#: gram.y:2227 -#: gram.y:2237 -#: gram.y:2365 +#: gram.y:2326 +#: gram.y:2336 +#: gram.y:2464 msgid "mismatched parentheses" msgstr "paranteze care nu se potrivesc" -#: gram.y:2241 +#: gram.y:2340 #, c-format msgid "missing \"%s\" at end of SQL expression" msgstr "lipsă \"%s\" la sfârșitul unei expresii SQL" -#: gram.y:2247 +#: gram.y:2346 #, c-format msgid "missing \"%s\" at end of SQL statement" msgstr "lipsă \"%s\" la sfârșitul unei comenzi SQL" -#: gram.y:2264 +#: gram.y:2363 msgid "missing expression" msgstr "expresie lipsă" -#: gram.y:2266 +#: gram.y:2365 msgid "missing SQL statement" msgstr "comandă SQL incompletă" -#: gram.y:2367 +#: gram.y:2466 msgid "incomplete data type declaration" msgstr "declarație incompletă pentru un tip de dată" -#: gram.y:2389 +#: gram.y:2489 msgid "missing data type declaration" msgstr "declarație lipsă pentru un tip de dată" -#: gram.y:2445 +#: gram.y:2545 msgid "INTO specified more than once" msgstr "INTO este folosit mai mult de o singură dată" -#: gram.y:2613 +#: gram.y:2713 msgid "expected FROM or IN" msgstr "este așteptat FROM sau IN" -#: gram.y:2673 +#: gram.y:2773 msgid "RETURN cannot have a parameter in function returning set" msgstr "RETURN nu poate avea un parametru în cazul unei funcții ce returnează un set" -#: gram.y:2674 +#: gram.y:2774 msgid "Use RETURN NEXT or RETURN QUERY." msgstr "Folosiți RETURN NEXT sau RETURN QUERY." -#: gram.y:2682 +#: gram.y:2782 msgid "RETURN cannot have a parameter in function with OUT parameters" msgstr "RETURN nu poate avea un parametru în cazul unei funcții cu parametrii de tip OUT" -#: gram.y:2691 +#: gram.y:2791 msgid "RETURN cannot have a parameter in function returning void" msgstr "RETURN nu poate avea un parametru în cazul unei funcții de tip void" -#: gram.y:2709 -#: gram.y:2716 +#: gram.y:2809 +#: gram.y:2816 msgid "RETURN must specify a record or row variable in function returning row" msgstr "RETURN trebuie să specifice o variabilă de tip înregistrare sau rând într-o funcție ce returnează un rând" -#: gram.y:2758 +#: gram.y:2858 msgid "RETURN NEXT cannot have a parameter in function with OUT parameters" msgstr "RETURN NEXT nu poate avea un parametru într-o funcţie cu parametrii de tip OUT" -#: gram.y:2773 -#: gram.y:2780 +#: gram.y:2873 +#: gram.y:2880 msgid "RETURN NEXT must specify a record or row variable in function returning row" msgstr "RETURN NEXT trebuie să specifice o variabilă de tip înregistrare sau rând într-o funcție ce returnează un rând" -#: gram.y:2859 +#: gram.y:2959 #, c-format msgid "\"%s\" is declared CONSTANT" msgstr "\"%s\" este declarat CONSTANT" -#: gram.y:2921 -#: gram.y:2933 +#: gram.y:3021 +#: gram.y:3033 msgid "record or row variable cannot be part of multiple-item INTO list" msgstr "variabila înregistrare sau rînd nu poate fi parte a unul element multiplu dintr-o listă INTO" -#: gram.y:2978 +#: gram.y:3078 msgid "too many INTO variables specified" msgstr "prea multe variabile INTO specificate" -#: gram.y:3185 +#: gram.y:3286 #, c-format msgid "end label \"%s\" specified for unlabelled block" msgstr "etichetă de sfârșit \"%s\" specificată pentru un bloc fără etichetă " -#: gram.y:3192 +#: gram.y:3293 #, c-format msgid "end label \"%s\" differs from block's label \"%s\"" msgstr "eticheta de sfârșit \"%s\" diferă față de eticheta blocului \"%s\"" -#: gram.y:3219 +#: gram.y:3320 #, c-format msgid "cursor \"%s\" has no arguments" msgstr "cursorul \"%s\" nu are argumente" -#: gram.y:3233 +#: gram.y:3334 #, c-format msgid "cursor \"%s\" has arguments" msgstr "cursorul \"%s\" are argumente" -#: gram.y:3281 +#: gram.y:3382 msgid "unrecognized RAISE statement option" msgstr "opțiune nerecunoscută a comenzii RAISE" -#: gram.y:3285 +#: gram.y:3386 msgid "syntax error, expected \"=\"" msgstr "eroare de sintaxă, expected \"=\"" -#: pl_funcs.c:216 +#: pl_funcs.c:218 msgid "statement block" msgstr "bloc de comenzi" -#: pl_funcs.c:218 +#: pl_funcs.c:220 msgid "assignment" msgstr "atribuire" -#: pl_funcs.c:228 +#: pl_funcs.c:230 msgid "FOR with integer loop variable" msgstr "FOR cu variabila buclei de tip integer" -#: pl_funcs.c:230 +#: pl_funcs.c:232 msgid "FOR over SELECT rows" msgstr "FOR peste SELECT rânduri" -#: pl_funcs.c:232 +#: pl_funcs.c:234 msgid "FOR over cursor" msgstr "FOR peste cursor" -#: pl_funcs.c:244 +#: pl_funcs.c:236 +msgid "FOREACH over array" +msgstr "FOREACH peste cursor" + +#: pl_funcs.c:248 msgid "SQL statement" msgstr "comandă SQL" -#: pl_funcs.c:246 +#: pl_funcs.c:250 msgid "EXECUTE statement" msgstr "comandă EXECUTE" -#: pl_funcs.c:248 +#: pl_funcs.c:252 msgid "FOR over EXECUTE statement" msgstr "FOR peste comandă EXECUTE" @@ -703,13 +748,13 @@ msgid "Sets handling of conflicts between PL/pgSQL variable names and table colu msgstr "Stabilește modalitatea de rezolvare a conflictelor de nume dintre variabilele PL/pgSQL și coloanele tabelelor." #. translator: %s is typically the translation of "syntax error" -#: pl_scanner.c:463 +#: pl_scanner.c:467 #, c-format msgid "%s at end of input" msgstr "%s la sfârşit de intrare" #. translator: first %s is typically the translation of "syntax error" -#: pl_scanner.c:479 +#: pl_scanner.c:483 #, c-format msgid "%s at or near \"%s\"" msgstr "%s la sau aproape de \"%s\"" diff --git a/src/pl/plpgsql/src/po/ru.po b/src/pl/plpgsql/src/po/ru.po new file mode 100644 index 0000000000..3ed17a35ff --- /dev/null +++ b/src/pl/plpgsql/src/po/ru.po @@ -0,0 +1,731 @@ +# Russian message translation file for plpgsql +# Copyright (C) 2012 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# Alexander Lakhin , 2012. +# +# ChangeLog: +# +# - April 2, 2012: Bug fixes. Alexander Lakhin . +# - February 19, 2012: Complete translation for 9.1. Alexander Lakhin . +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 9.1\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2012-07-10 22:21+0000\n" +"PO-Revision-Date: 2012-06-19 21:20+0400\n" +"Last-Translator: Alexander Lakhin \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 1.4\n" + +#: pl_comp.c:427 pl_handler.c:266 +#, c-format +msgid "PL/pgSQL functions cannot accept type %s" +msgstr "функции PL/pgSQL не могут принимать тип %s" + +#: pl_comp.c:506 +#, c-format +msgid "could not determine actual return type for polymorphic function \"%s\"" +msgstr "" +"не удалось определить фактический тип результата для полиморфной функции \"%s" +"\"" + +#: pl_comp.c:536 +msgid "trigger functions can only be called as triggers" +msgstr "триггерные функции могут вызываться только в триггерах" + +#: pl_comp.c:540 pl_handler.c:251 +#, c-format +msgid "PL/pgSQL functions cannot return type %s" +msgstr "функции PL/pgSQL не могут возвращать тип %s" + +#: pl_comp.c:583 +msgid "trigger functions cannot have declared arguments" +msgstr "у триггерных функций не может быть объявленных аргументов" + +#: pl_comp.c:584 +msgid "" +"The arguments of the trigger can be accessed through TG_NARGS and TG_ARGV " +"instead." +msgstr "" +"При необходимости к аргументам триггера можно обращаться через переменные " +"TG_NARGS and TG_ARGV." + +#: pl_comp.c:912 +#, c-format +msgid "compilation of PL/pgSQL function \"%s\" near line %d" +msgstr "компиляция функции PL/pgSQL \"%s\" в районе строки %d" + +#: pl_comp.c:935 +#, c-format +msgid "parameter name \"%s\" used more than once" +msgstr "имя параметра \"%s\" указано неоднократно" + +#: pl_comp.c:1045 +#, c-format +msgid "column reference \"%s\" is ambiguous" +msgstr "неоднозначная ссылка на колонку \"%s\"" + +#: pl_comp.c:1047 +msgid "It could refer to either a PL/pgSQL variable or a table column." +msgstr "Подразумевается ссылка на переменную PL/pgSQL или колонку таблицы." + +#: pl_comp.c:1227 pl_comp.c:1255 pl_exec.c:3870 pl_exec.c:4201 pl_exec.c:4287 +#: pl_exec.c:4378 +#, c-format +msgid "record \"%s\" has no field \"%s\"" +msgstr "в записи \"%s\" нет поля \"%s\"" + +#: pl_comp.c:1783 +#, c-format +msgid "relation \"%s\" does not exist" +msgstr "отношение \"%s\" не существует" + +#: pl_comp.c:1815 +#, c-format +msgid "relation \"%s.%s\" does not exist" +msgstr "отношение \"%s.%s\" не существует" + +#: pl_comp.c:1897 +#, c-format +msgid "variable \"%s\" has pseudo-type %s" +msgstr "переменная \"%s\" имеет псевдотип %s" + +#: pl_comp.c:1959 +#, c-format +msgid "relation \"%s\" is not a table" +msgstr "отношение \"%s\" не является таблицей" + +#: pl_comp.c:2119 +#, c-format +msgid "type \"%s\" is only a shell" +msgstr "тип \"%s\" - лишь пустышка" + +#: pl_comp.c:2192 pl_comp.c:2245 +#, c-format +msgid "unrecognized exception condition \"%s\"" +msgstr "нераспознанное условие исключения \"%s\"" + +#: pl_comp.c:2403 +#, c-format +msgid "" +"could not determine actual argument type for polymorphic function \"%s\"" +msgstr "" +"не удалось определить фактический тип аргумента для полиморфной функции \"%s" +"\"" + +#: pl_exec.c:242 pl_exec.c:517 +msgid "during initialization of execution state" +msgstr "в процессе инициализации состояния выполнения" + +#: pl_exec.c:249 +msgid "while storing call arguments into local variables" +msgstr "при сохранении аргументов вызова в локальных переменных" + +#: pl_exec.c:306 pl_exec.c:674 +msgid "during function entry" +msgstr "при входе в функцию" + +#: pl_exec.c:337 pl_exec.c:705 +msgid "CONTINUE cannot be used outside a loop" +msgstr "CONTINUE нельзя использовать вне цикла" + +#: pl_exec.c:341 +msgid "control reached end of function without RETURN" +msgstr "конец функции достигнут без RETURN" + +#: pl_exec.c:348 +msgid "while casting return value to function's return type" +msgstr "при приведении возвращаемого значения к типу результата функции" + +#: pl_exec.c:361 pl_exec.c:2593 +msgid "set-valued function called in context that cannot accept a set" +msgstr "" +"функция, возвращающая множество, вызвана в контексте, где ему нет места" + +#: pl_exec.c:399 +msgid "returned record type does not match expected record type" +msgstr "возвращаемый тип записи не соответствует ожидаемому" + +#: pl_exec.c:459 pl_exec.c:713 +msgid "during function exit" +msgstr "при выходе из функции" + +#: pl_exec.c:709 +msgid "control reached end of trigger procedure without RETURN" +msgstr "конец триггерной процедуры достигнут без RETURN" + +#: pl_exec.c:718 +msgid "trigger procedure cannot return a set" +msgstr "триггерная процедура не может возвращать множество" + +#: pl_exec.c:740 +msgid "" +"returned row structure does not match the structure of the triggering table" +msgstr "" +"структура возвращённой строки не соответствует структуре таблицы, вызвавшей " +"триггер" + +#: pl_exec.c:803 +#, c-format +msgid "PL/pgSQL function \"%s\" line %d %s" +msgstr "функция PL/pgSQL \"%s\", строка %d, %s" + +#: pl_exec.c:814 +#, c-format +msgid "PL/pgSQL function \"%s\" %s" +msgstr "функция PL/pgSQL \"%s\", %s" + +#. translator: last %s is a plpgsql statement type name +#: pl_exec.c:822 +#, c-format +msgid "PL/pgSQL function \"%s\" line %d at %s" +msgstr "функция PL/pgSQL \"%s\", строка %d, оператор %s" + +#: pl_exec.c:828 +#, c-format +msgid "PL/pgSQL function \"%s\"" +msgstr "функция PL/pgSQL \"%s\"" + +#: pl_exec.c:936 +msgid "during statement block local variable initialization" +msgstr "при инициализации локальной переменной в блоке операторов" + +#: pl_exec.c:978 +#, c-format +msgid "variable \"%s\" declared NOT NULL cannot default to NULL" +msgstr "" +"переменная \"%s\", объявленная NOT NULL, не может иметь значение по " +"умолчанию NULL" + +#: pl_exec.c:1028 +msgid "during statement block entry" +msgstr "при входе в блок операторов" + +#: pl_exec.c:1049 +msgid "during statement block exit" +msgstr "при выходе из блока операторов" + +#: pl_exec.c:1092 +msgid "during exception cleanup" +msgstr "при очистке после исключения" + +#: pl_exec.c:1569 +msgid "case not found" +msgstr "неправильный CASE" + +#: pl_exec.c:1570 +msgid "CASE statement is missing ELSE part." +msgstr "В операторе CASE не хватает части ELSE." + +#: pl_exec.c:1724 +msgid "lower bound of FOR loop cannot be null" +msgstr "нижняя граница цикла FOR не может быть равна NULL" + +#: pl_exec.c:1739 +msgid "upper bound of FOR loop cannot be null" +msgstr "верхняя граница цикла FOR не может быть равна NULL" + +#: pl_exec.c:1756 +msgid "BY value of FOR loop cannot be null" +msgstr "значение BY в цикле FOR не может быть равно NULL" + +#: pl_exec.c:1762 +msgid "BY value of FOR loop must be greater than zero" +msgstr "значение BY в цикле FOR должно быть больше нуля" + +#: pl_exec.c:1932 pl_exec.c:3405 +#, c-format +msgid "cursor \"%s\" already in use" +msgstr "курсор \"%s\" уже используется" + +#: pl_exec.c:1955 pl_exec.c:3467 +msgid "arguments given for cursor without arguments" +msgstr "курсору без аргументов были переданы аргументы" + +#: pl_exec.c:1974 pl_exec.c:3486 +msgid "arguments required for cursor" +msgstr "курсору требуются аргументы" + +#: pl_exec.c:2062 +msgid "FOREACH expression must not be null" +msgstr "выражение FOREACH не может быть равно NULL" + +#: pl_exec.c:2068 +#, c-format +msgid "FOREACH expression must yield an array, not type %s" +msgstr "выражение в FOREACH должно быть массивом, но не типом %s" + +#: pl_exec.c:2085 +#, c-format +msgid "slice dimension (%d) is out of the valid range 0..%d" +msgstr "размерность среза (%d) вне допустимого диапазона 0..%d" + +#: pl_exec.c:2112 +msgid "FOREACH ... SLICE loop variable must be of an array type" +msgstr "переменная цикла FOREACH ... SLICE должна быть массивом" + +#: pl_exec.c:2116 +msgid "FOREACH loop variable must not be of an array type" +msgstr "переменная цикла FOREACH не должна быть массивом" + +#: pl_exec.c:2374 gram.y:2844 +msgid "cannot use RETURN NEXT in a non-SETOF function" +msgstr "" +"RETURN NEXT можно использовать только в функциях, возвращающих множества" + +#: pl_exec.c:2398 pl_exec.c:2466 +msgid "wrong result type supplied in RETURN NEXT" +msgstr "в RETURN NEXT передан неправильный тип результата" + +#: pl_exec.c:2421 pl_exec.c:3857 pl_exec.c:4159 pl_exec.c:4194 pl_exec.c:4261 +#: pl_exec.c:4280 pl_exec.c:4348 pl_exec.c:4371 +#, c-format +msgid "record \"%s\" is not assigned yet" +msgstr "записи \"%s\" не присвоено значение" + +#: pl_exec.c:2423 pl_exec.c:3859 pl_exec.c:4161 pl_exec.c:4196 pl_exec.c:4263 +#: pl_exec.c:4282 pl_exec.c:4350 pl_exec.c:4373 +msgid "The tuple structure of a not-yet-assigned record is indeterminate." +msgstr "" +"Для записи, которой не присвоено значение, структура кортежа не определена." + +#: pl_exec.c:2427 pl_exec.c:2447 +msgid "wrong record type supplied in RETURN NEXT" +msgstr "в RETURN NEXT передан неправильный тип записи" + +#: pl_exec.c:2488 +msgid "RETURN NEXT must have a parameter" +msgstr "у оператора RETURN NEXT должен быть параметр" + +#: pl_exec.c:2521 gram.y:2903 +msgid "cannot use RETURN QUERY in a non-SETOF function" +msgstr "" +"RETURN QUERY можно использовать только в функциях, возвращающих множества" + +#: pl_exec.c:2541 +msgid "structure of query does not match function result type" +msgstr "структура запроса не соответствует типу результата функции" + +#: pl_exec.c:2639 +msgid "RAISE without parameters cannot be used outside an exception handler" +msgstr "" +"RAISE без параметров нельзя использовать вне блока обработчика исключения" + +#: pl_exec.c:2680 +msgid "too few parameters specified for RAISE" +msgstr "недостаточно параметров для RAISE" + +#: pl_exec.c:2708 +msgid "too many parameters specified for RAISE" +msgstr "слишком много параметров для RAISE" + +#: pl_exec.c:2728 +msgid "RAISE statement option cannot be null" +msgstr "параметром оператора RAISE не может быть NULL" + +#: pl_exec.c:2738 pl_exec.c:2747 pl_exec.c:2755 pl_exec.c:2763 +#, c-format +msgid "RAISE option already specified: %s" +msgstr "этот параметр RAISE уже указан: %s" + +#: pl_exec.c:2799 +#, c-format +msgid "%s" +msgstr "%s" + +#: pl_exec.c:2949 pl_exec.c:3085 pl_exec.c:3268 +msgid "cannot COPY to/from client in PL/pgSQL" +msgstr "в PL/pgSQL нельзя выполнить COPY с участием клиента" + +#: pl_exec.c:2953 pl_exec.c:3089 pl_exec.c:3272 +msgid "cannot begin/end transactions in PL/pgSQL" +msgstr "в PL/pgSQL нельзя начинать/заканчивать транзакции" + +#: pl_exec.c:2954 pl_exec.c:3090 pl_exec.c:3273 +msgid "Use a BEGIN block with an EXCEPTION clause instead." +msgstr "Используйте блок BEGIN с предложением EXCEPTION." + +#: pl_exec.c:3113 pl_exec.c:3297 +msgid "INTO used with a command that cannot return data" +msgstr "INTO с командой не может возвращать данные" + +#: pl_exec.c:3133 pl_exec.c:3317 +msgid "query returned no rows" +msgstr "запрос не вернул строк" + +#: pl_exec.c:3142 pl_exec.c:3326 +msgid "query returned more than one row" +msgstr "запрос вернул несколько строк" + +#: pl_exec.c:3157 +msgid "query has no destination for result data" +msgstr "в запросе нет назначения для данных результата" + +#: pl_exec.c:3158 +msgid "If you want to discard the results of a SELECT, use PERFORM instead." +msgstr "Если вам нужно отбросить результаты SELECT, используйте PERFORM." + +#: pl_exec.c:3191 pl_exec.c:5949 +msgid "query string argument of EXECUTE is null" +msgstr "в качестве текста запроса в EXECUTE передан NULL" + +#: pl_exec.c:3259 +msgid "EXECUTE of SELECT ... INTO is not implemented" +msgstr "возможность выполнения SELECT ... INTO в EXECUTE не реализована" + +#: pl_exec.c:3260 +msgid "" +"You might want to use EXECUTE ... INTO or EXECUTE CREATE TABLE ... AS " +"instead." +msgstr "" +"Альтернативой может стать EXECUTE ... INTO или EXECUTE CREATE TABLE ... " +"AS ..." + +#: pl_exec.c:3550 pl_exec.c:3642 +#, c-format +msgid "cursor variable \"%s\" is null" +msgstr "переменная курсора \"%s\" равна NULL" + +#: pl_exec.c:3557 pl_exec.c:3649 +#, c-format +msgid "cursor \"%s\" does not exist" +msgstr "курсор \"%s\" не существует" + +#: pl_exec.c:3571 +msgid "relative or absolute cursor position is null" +msgstr "относительная или абсолютная позиция курсора равна NULL" + +#: pl_exec.c:3716 +#, c-format +msgid "null value cannot be assigned to variable \"%s\" declared NOT NULL" +msgstr "значение NULL нельзя присвоить переменной \"%s\", объявленной NOT NULL" + +#: pl_exec.c:3769 +msgid "cannot assign non-composite value to a row variable" +msgstr "переменной типа кортеж можно присвоить только составное значение" + +#: pl_exec.c:3811 +msgid "cannot assign non-composite value to a record variable" +msgstr "переменной типа запись можно присвоить только составное значение" + +#: pl_exec.c:3972 +#, c-format +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgstr "число размерностей массива (%d) превышает предел (%d)" + +#: pl_exec.c:3991 +msgid "subscripted object is not an array" +msgstr "для объекта указан индекс, но этот объект - не массив" + +#: pl_exec.c:4014 +msgid "array subscript in assignment must not be null" +msgstr "индекс элемента массива в присваивании не может быть NULL" + +#: pl_exec.c:4486 +#, c-format +msgid "query \"%s\" did not return data" +msgstr "запрос \"%s\" не вернул данные" + +#: pl_exec.c:4494 +#, c-format +msgid "query \"%s\" returned %d column" +msgid_plural "query \"%s\" returned %d columns" +msgstr[0] "запрос \"%s\" вернул %d строку" +msgstr[1] "запрос \"%s\" вернул %d строки" +msgstr[2] "запрос \"%s\" вернул %d строк" + +#: pl_exec.c:4520 +#, c-format +msgid "query \"%s\" returned more than one row" +msgstr "запрос \"%s\" вернул несколько строк" + +#: pl_exec.c:4578 +#, c-format +msgid "query \"%s\" is not a SELECT" +msgstr "запрос \"%s\" - не SELECT" + +#: gram.y:430 +msgid "block label must be placed before DECLARE, not after" +msgstr "метка блока должна помещаться до DECLARE, а не после" + +#: gram.y:450 +#, c-format +msgid "collations are not supported by type %s" +msgstr "тип %s не поддерживает сортировку (COLLATION)" + +#: gram.y:465 +msgid "row or record variable cannot be CONSTANT" +msgstr "переменная типа кортеж или запись не может быть константой" + +#: gram.y:475 +msgid "row or record variable cannot be NOT NULL" +msgstr "переменная типа кортеж или запись не может быть NULL" + +#: gram.y:486 +msgid "default value for row or record variable is not supported" +msgstr "переменная типа кортеж или запись не может иметь значения по умолчанию" + +#: gram.y:631 gram.y:657 +#, c-format +msgid "variable \"%s\" does not exist" +msgstr "переменная \"%s\" не существует" + +#: gram.y:675 gram.y:688 +msgid "duplicate declaration" +msgstr "повторяющееся объявление" + +#: gram.y:881 +msgid "unrecognized GET DIAGNOSTICS item" +msgstr "нераспознанный элемент GET DIAGNOSTICS" + +#: gram.y:892 gram.y:3090 +#, c-format +msgid "\"%s\" is not a scalar variable" +msgstr "\"%s\" - не скалярная переменная" + +#: gram.y:1154 gram.y:1347 +msgid "" +"loop variable of loop over rows must be a record or row variable or list of " +"scalar variables" +msgstr "" +"переменная цикла по кортежам должна быть переменной типа запись или кортеж " +"или списком скалярных переменных" + +#: gram.y:1188 +msgid "cursor FOR loop must have only one target variable" +msgstr "в цикле FOR с курсором должна быть только одна переменная" + +#: gram.y:1195 +msgid "cursor FOR loop must use a bound cursor variable" +msgstr "" +"в цикле FOR с курсором должен использоваться курсор, привязанный к запросу" + +#: gram.y:1278 +msgid "integer FOR loop must have only one target variable" +msgstr "в целочисленном цикле FOR должна быть только одна переменная" + +#: gram.y:1314 +msgid "cannot specify REVERSE in query FOR loop" +msgstr "в цикле FOR с запросом нельзя указать REVERSE" + +#: gram.y:1461 +msgid "loop variable of FOREACH must be a known variable or list of variables" +msgstr "" +"переменной цикла FOREACH должна быть известная переменная или список " +"переменных" + +#: gram.y:1513 gram.y:1550 gram.y:1598 gram.y:2540 gram.y:2621 gram.y:2732 +#: gram.y:3365 +msgid "unexpected end of function definition" +msgstr "неожиданный конец определения функции" + +#: gram.y:1618 gram.y:1642 gram.y:1654 gram.y:1661 gram.y:1750 gram.y:1758 +#: gram.y:1772 gram.y:1867 gram.y:2048 gram.y:2127 gram.y:2242 gram.y:2821 +#: gram.y:2885 gram.y:3325 gram.y:3346 +msgid "syntax error" +msgstr "ошибка синтаксиса" + +#: gram.y:1646 gram.y:1648 gram.y:2052 gram.y:2054 +msgid "invalid SQLSTATE code" +msgstr "неверный код SQLSTATE" + +#: gram.y:1814 +msgid "syntax error, expected \"FOR\"" +msgstr "ошибка синтаксиса, ожидался \"FOR\"" + +#: gram.y:1876 +msgid "FETCH statement cannot return multiple rows" +msgstr "оператор FETCH не может вернуть несколько строк" + +#: gram.y:1932 +msgid "cursor variable must be a simple variable" +msgstr "переменная-курсор должна быть простой переменной" + +#: gram.y:1938 +#, c-format +msgid "variable \"%s\" must be of type cursor or refcursor" +msgstr "переменная \"%s\" должна быть типа cursor или refcursor" + +#: gram.y:2106 +msgid "label does not exist" +msgstr "метка не существует" + +#: gram.y:2213 gram.y:2224 +#, c-format +msgid "\"%s\" is not a known variable" +msgstr "\"%s\" - не известная переменная" + +#: gram.y:2326 gram.y:2336 gram.y:2464 +msgid "mismatched parentheses" +msgstr "непарные скобки" + +#: gram.y:2340 +#, c-format +msgid "missing \"%s\" at end of SQL expression" +msgstr "отсутствует \"%s\" в конце выражения SQL" + +#: gram.y:2346 +#, c-format +msgid "missing \"%s\" at end of SQL statement" +msgstr "отсутствует \"%s\" в конце оператора SQL" + +#: gram.y:2363 +msgid "missing expression" +msgstr "отсутствует выражение" + +#: gram.y:2365 +msgid "missing SQL statement" +msgstr "отсутствует оператор SQL" + +#: gram.y:2466 +msgid "incomplete data type declaration" +msgstr "неполное определение типа данных" + +#: gram.y:2489 +msgid "missing data type declaration" +msgstr "отсутствует определение типа данных" + +#: gram.y:2545 +msgid "INTO specified more than once" +msgstr "INTO указано неоднократно" + +#: gram.y:2713 +msgid "expected FROM or IN" +msgstr "ожидалось FROM или IN" + +#: gram.y:2773 +msgid "RETURN cannot have a parameter in function returning set" +msgstr "в функции, возвращающей множество, RETURN должен быть без параметров" + +#: gram.y:2774 +msgid "Use RETURN NEXT or RETURN QUERY." +msgstr "Используйте RETURN NEXT или RETURN QUERY." + +#: gram.y:2782 +msgid "RETURN cannot have a parameter in function with OUT parameters" +msgstr "RETURN должен быть без параметров в функции с параметрами OUT" + +#: gram.y:2791 +msgid "RETURN cannot have a parameter in function returning void" +msgstr "в функции, не возвращающей ничего, RETURN не должен иметь параметров" + +#: gram.y:2809 gram.y:2816 +msgid "RETURN must specify a record or row variable in function returning row" +msgstr "" +"в функции, возвращающей кортеж, в RETURN должна указываться запись или кортеж" + +#: gram.y:2858 +msgid "RETURN NEXT cannot have a parameter in function with OUT parameters" +msgstr "RETURN NEXT должен быть без параметров в функции с параметрами OUT" + +#: gram.y:2873 gram.y:2880 +msgid "" +"RETURN NEXT must specify a record or row variable in function returning row" +msgstr "" +"в функции, возвращающей кортеж, в RETURN NEXT должна указываться запись или " +"кортеж" + +#: gram.y:2959 +#, c-format +msgid "\"%s\" is declared CONSTANT" +msgstr "\"%s\" объявлена как CONSTANT" + +#: gram.y:3021 gram.y:3033 +msgid "record or row variable cannot be part of multiple-item INTO list" +msgstr "" +"переменная типа запись или кортеж не может быть частью списка INTO с " +"несколькими элементами" + +#: gram.y:3078 +msgid "too many INTO variables specified" +msgstr "указано слишком много переменных INTO" + +#: gram.y:3286 +#, c-format +msgid "end label \"%s\" specified for unlabelled block" +msgstr "конечная метка \"%s\" указана для не помеченного блока" + +#: gram.y:3293 +#, c-format +msgid "end label \"%s\" differs from block's label \"%s\"" +msgstr "конечная метка \"%s\" отличается от метки блока \"%s\"" + +#: gram.y:3320 +#, c-format +msgid "cursor \"%s\" has no arguments" +msgstr "курсор \"%s\" не имеет аргументов" + +#: gram.y:3334 +#, c-format +msgid "cursor \"%s\" has arguments" +msgstr "курсор \"%s\" имеет аргументы" + +#: gram.y:3382 +msgid "unrecognized RAISE statement option" +msgstr "нераспознанный параметр оператора RAISE" + +#: gram.y:3386 +msgid "syntax error, expected \"=\"" +msgstr "ошибка синтаксиса, ожидалось \"=\"" + +#: pl_funcs.c:218 +msgid "statement block" +msgstr "блок операторов" + +#: pl_funcs.c:220 +msgid "assignment" +msgstr "присваивание" + +#: pl_funcs.c:230 +msgid "FOR with integer loop variable" +msgstr "FOR с целочисленной переменной цикла" + +#: pl_funcs.c:232 +msgid "FOR over SELECT rows" +msgstr "FOR по результатам SELECT" + +#: pl_funcs.c:234 +msgid "FOR over cursor" +msgstr "FOR по курсору" + +#: pl_funcs.c:236 +msgid "FOREACH over array" +msgstr "FOREACH для массива" + +#: pl_funcs.c:248 +msgid "SQL statement" +msgstr "SQL-оператор" + +#: pl_funcs.c:250 +msgid "EXECUTE statement" +msgstr "оператор EXECUTE" + +#: pl_funcs.c:252 +msgid "FOR over EXECUTE statement" +msgstr "FOR по результатам EXECUTE" + +#: pl_handler.c:60 +msgid "" +"Sets handling of conflicts between PL/pgSQL variable names and table column " +"names." +msgstr "" +"Выбирает режим разрешения конфликтов между именами переменных PL/pgSQL и " +"именами колонок таблиц." + +#. translator: %s is typically the translation of "syntax error" +#: pl_scanner.c:467 +#, c-format +msgid "%s at end of input" +msgstr "%s в конце" + +#. translator: first %s is typically the translation of "syntax error" +#: pl_scanner.c:483 +#, c-format +msgid "%s at or near \"%s\"" +msgstr "%s (примерное положение: \"%s\")" diff --git a/src/pl/plpgsql/src/po/tr.po b/src/pl/plpgsql/src/po/tr.po new file mode 100644 index 0000000000..a310b655b2 --- /dev/null +++ b/src/pl/plpgsql/src/po/tr.po @@ -0,0 +1,895 @@ +# LANGUAGE message translation file for plpgsql +# Copyright (C) 2009 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 8.4\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-08-31 10:39+0000\n" +"PO-Revision-Date: 2011-08-31 15:41+0200\n" +"Last-Translator: Devrim GÜNDÜZ \n" +"Language-Team: TR \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: pl_comp.c:428 +#: pl_handler.c:266 +#, c-format +msgid "PL/pgSQL functions cannot accept type %s" +msgstr "PL/pgSQL fonksiyonları %s veri tipini kabul etmezler" + +#: pl_comp.c:507 +#, c-format +msgid "could not determine actual return type for polymorphic function \"%s\"" +msgstr "\"%s\" polimorfik fonksiyonunun asıl dönüşdeğeri belirlenemedi" + +#: pl_comp.c:537 +#, c-format +msgid "trigger functions can only be called as triggers" +msgstr "trigger fonksiyonları sadece trigger olarak çağırılabilirler" + +#: pl_comp.c:541 +#: pl_handler.c:251 +#, c-format +msgid "PL/pgSQL functions cannot return type %s" +msgstr "PL/pgSQL fonksiyonları %s tipini döndüremezler" + +#: pl_comp.c:584 +#, c-format +msgid "trigger functions cannot have declared arguments" +msgstr "trigger fonksiyonları belirtilmiş (declared) argümanlara sahip olamaz" + +#: pl_comp.c:585 +#, c-format +msgid "The arguments of the trigger can be accessed through TG_NARGS and TG_ARGV instead." +msgstr "Tetikleyici bağımsız değişkenlerine TG_NARGS ve TG_ARGV üzerinden erişilebilir." + +#: pl_comp.c:913 +#, c-format +msgid "compilation of PL/pgSQL function \"%s\" near line %d" +msgstr "\"%s\" fonkiyonununun %d numaralı satırının civarlarında derlenmesi" + +#: pl_comp.c:936 +#, c-format +msgid "parameter name \"%s\" used more than once" +msgstr "\"%s\" parametresi birden fazla kez kullanılmıştır" + +#: pl_comp.c:1046 +#, c-format +msgid "column reference \"%s\" is ambiguous" +msgstr "\"%s\" sütun referansı iki anlamlı" + +#: pl_comp.c:1048 +#, c-format +msgid "It could refer to either a PL/pgSQL variable or a table column." +msgstr "" + +#: pl_comp.c:1228 +#: pl_comp.c:1256 +#: pl_exec.c:3922 +#: pl_exec.c:4268 +#: pl_exec.c:4354 +#: pl_exec.c:4445 +#, c-format +msgid "record \"%s\" has no field \"%s\"" +msgstr "\"%s\" kaydı \"%s\" alanını içermiyor" + +#: pl_comp.c:1784 +#, c-format +msgid "relation \"%s\" does not exist" +msgstr "\"%s\" nesnesi mevcut değil" + +#: pl_comp.c:1893 +#, c-format +msgid "variable \"%s\" has pseudo-type %s" +msgstr "\"%s\" değişkeni %s pseudo tipine sahip" + +#: pl_comp.c:1954 +#, c-format +msgid "relation \"%s\" is not a table" +msgstr "\"%s\" bir tablo değil" + +#: pl_comp.c:2114 +#, c-format +msgid "type \"%s\" is only a shell" +msgstr "\"%s\" tipi bir shelldir" + +#: pl_comp.c:2187 +#: pl_comp.c:2240 +#, c-format +msgid "unrecognized exception condition \"%s\"" +msgstr "tanımlanamayan exception durumu \"%s\"" + +#: pl_comp.c:2398 +#, c-format +msgid "could not determine actual argument type for polymorphic function \"%s\"" +msgstr "" + +#: pl_exec.c:243 +#: pl_exec.c:514 +msgid "during initialization of execution state" +msgstr "çalıştırma durumu ilklendirmesi sırasında" + +#: pl_exec.c:250 +msgid "while storing call arguments into local variables" +msgstr "" + +#: pl_exec.c:305 +#: pl_exec.c:671 +msgid "during function entry" +msgstr "fonksiyon girişi sırasında" + +#: pl_exec.c:336 +#: pl_exec.c:702 +#, c-format +msgid "CONTINUE cannot be used outside a loop" +msgstr "CONTINUE bir döngü dışında kullanılamaz" + +#: pl_exec.c:340 +#, c-format +msgid "control reached end of function without RETURN" +msgstr "control fonksiyonun sonuna RETURNsüz ulaştı" + +#: pl_exec.c:347 +msgid "while casting return value to function's return type" +msgstr "" + +#: pl_exec.c:360 +#: pl_exec.c:2629 +#, c-format +msgid "set-valued function called in context that cannot accept a set" +msgstr "set değerini kabul etmediği ortamda set değeri alan fonksiyon çağırılmış" + +#: pl_exec.c:398 +msgid "returned record type does not match expected record type" +msgstr "" + +#: pl_exec.c:456 +#: pl_exec.c:710 +msgid "during function exit" +msgstr "fonksiyon çıkışı sırasında" + +#: pl_exec.c:706 +#, c-format +msgid "control reached end of trigger procedure without RETURN" +msgstr "trigger yordamı RETURN olmadan bitti" + +#: pl_exec.c:715 +#, c-format +msgid "trigger procedure cannot return a set" +msgstr "trigger yordamı bir küme döndüremez" + +#: pl_exec.c:737 +msgid "returned row structure does not match the structure of the triggering table" +msgstr "" + +#: pl_exec.c:800 +#, c-format +msgid "PL/pgSQL function \"%s\" line %d %s" +msgstr "PL/pgSQL fonksiyonu \"%s\" satır %d %s" + +#: pl_exec.c:811 +#, c-format +msgid "PL/pgSQL function \"%s\" %s" +msgstr "PL/pgSQL fonksiyonu \"%s\" %s" + +#. translator: last %s is a plpgsql statement type name +#: pl_exec.c:819 +#, c-format +msgid "PL/pgSQL function \"%s\" line %d at %s" +msgstr "\"%s\" PL/pgSQL fonksiyonu, %d. satır, %s içinde" + +#: pl_exec.c:825 +#, c-format +msgid "PL/pgSQL function \"%s\"" +msgstr "PL/pgSQL fonksiyonu \"%s\"" + +#: pl_exec.c:933 +msgid "during statement block local variable initialization" +msgstr "" + +#: pl_exec.c:975 +#, c-format +msgid "variable \"%s\" declared NOT NULL cannot default to NULL" +msgstr "NOT NULL olarak belirtilen \"%s\" değişkeni öntanımlı olarak NULL olamaz" + +#: pl_exec.c:1025 +msgid "during statement block entry" +msgstr "ifade bloğu girişi sırasında" + +#: pl_exec.c:1046 +msgid "during statement block exit" +msgstr "ifade bloğu çıkışı sırasında" + +#: pl_exec.c:1089 +msgid "during exception cleanup" +msgstr "exception temizlemesi sırasında" + +#: pl_exec.c:1436 +#, c-format +msgid "GET STACKED DIAGNOSTICS cannot be used outside an exception handler" +msgstr "" + +#: pl_exec.c:1608 +#, c-format +msgid "case not found" +msgstr "case bulunamadı" + +#: pl_exec.c:1609 +#, c-format +msgid "CASE statement is missing ELSE part." +msgstr "CASE ifadesindeki ELSE eksik." + +#: pl_exec.c:1763 +#, c-format +msgid "lower bound of FOR loop cannot be null" +msgstr "FOR döngüsünün alt sınırı null olamaz" + +#: pl_exec.c:1778 +#, c-format +msgid "upper bound of FOR loop cannot be null" +msgstr "For döngüsünün üst sınırı null olamaz" + +#: pl_exec.c:1795 +#, c-format +msgid "BY value of FOR loop cannot be null" +msgstr "FOR döngüsünün BY değeri null olamaz" + +#: pl_exec.c:1801 +#, c-format +msgid "BY value of FOR loop must be greater than zero" +msgstr "FOR döngüsünn BY değeri sıfırdan büyük olmalıdır" + +#: pl_exec.c:1971 +#: pl_exec.c:3433 +#, c-format +msgid "cursor \"%s\" already in use" +msgstr "\"%s\" imleci kullanımda" + +#: pl_exec.c:1994 +#: pl_exec.c:3495 +#, c-format +msgid "arguments given for cursor without arguments" +msgstr "" + +#: pl_exec.c:2013 +#: pl_exec.c:3514 +#, c-format +msgid "arguments required for cursor" +msgstr "imleç için gereken argümanlar" + +#: pl_exec.c:2101 +#, c-format +msgid "FOREACH expression must not be null" +msgstr "FOREACH ifadesi NULL olamaz" + +#: pl_exec.c:2107 +#, c-format +msgid "FOREACH expression must yield an array, not type %s" +msgstr "" + +#: pl_exec.c:2124 +#, fuzzy, c-format +msgid "slice dimension (%d) is out of the valid range 0..%d" +msgstr "%d indexi geçerli kapsamın dışındadır: 0..%d" + +#: pl_exec.c:2151 +#, c-format +msgid "FOREACH ... SLICE loop variable must be of an array type" +msgstr "" + +#: pl_exec.c:2155 +#, c-format +msgid "FOREACH loop variable must not be of an array type" +msgstr "FOREACH döngü değişkeni dizgi tipinde olamaz" + +#: pl_exec.c:2413 +#: gram.y:2929 +#, c-format +msgid "cannot use RETURN NEXT in a non-SETOF function" +msgstr "SETOF olmayan fonksiyonda RETURN NEXT kullanılamaz" + +#: pl_exec.c:2437 +#: pl_exec.c:2503 +#, c-format +msgid "wrong result type supplied in RETURN NEXT" +msgstr "RETURN NEXT içinde yanlış dönüş tipi verildi" + +#: pl_exec.c:2459 +#: pl_exec.c:3909 +#: pl_exec.c:4226 +#: pl_exec.c:4261 +#: pl_exec.c:4328 +#: pl_exec.c:4347 +#: pl_exec.c:4415 +#: pl_exec.c:4438 +#, c-format +msgid "record \"%s\" is not assigned yet" +msgstr "\"%s\" kaydı henüz atanmamış" + +#: pl_exec.c:2461 +#: pl_exec.c:3911 +#: pl_exec.c:4228 +#: pl_exec.c:4263 +#: pl_exec.c:4330 +#: pl_exec.c:4349 +#: pl_exec.c:4417 +#: pl_exec.c:4440 +#, c-format +msgid "The tuple structure of a not-yet-assigned record is indeterminate." +msgstr "" + +#: pl_exec.c:2465 +#: pl_exec.c:2484 +#, c-format +msgid "wrong record type supplied in RETURN NEXT" +msgstr "RETURN NEXT içinde yanlış kayıt tipi verildi" + +#: pl_exec.c:2526 +#, c-format +msgid "RETURN NEXT must have a parameter" +msgstr "RETURN NEXT bir parameter içermeli" + +#: pl_exec.c:2557 +#: gram.y:2988 +#, c-format +msgid "cannot use RETURN QUERY in a non-SETOF function" +msgstr "RETURN QUERY, SETOF olmayan bir fonksiyon içinde bulunamaz" + +#: pl_exec.c:2577 +msgid "structure of query does not match function result type" +msgstr "sorgunun yapısı fonksiyonun sonuç tipine uymuyor" + +#: pl_exec.c:2675 +#, c-format +msgid "RAISE without parameters cannot be used outside an exception handler" +msgstr "" + +#: pl_exec.c:2716 +#, c-format +msgid "too few parameters specified for RAISE" +msgstr "RAISE için çok az parametre var" + +#: pl_exec.c:2742 +#, c-format +msgid "too many parameters specified for RAISE" +msgstr "RAISE için çok fazla parametre var" + +#: pl_exec.c:2762 +#, c-format +msgid "RAISE statement option cannot be null" +msgstr "RAISE ifadesi seçeneği null olamaz" + +#: pl_exec.c:2772 +#: pl_exec.c:2781 +#: pl_exec.c:2789 +#: pl_exec.c:2797 +#, c-format +msgid "RAISE option already specified: %s" +msgstr "RAISE seçeneği zaten belirtilmiş: %s" + +#: pl_exec.c:2833 +#, c-format +msgid "%s" +msgstr "%s" + +#: pl_exec.c:2983 +#: pl_exec.c:3119 +#: pl_exec.c:3298 +#, c-format +msgid "cannot COPY to/from client in PL/pgSQL" +msgstr "PL/pgSQL'de istemcide ya da istemciden COPY çalıştırılamaz" + +#: pl_exec.c:2987 +#: pl_exec.c:3123 +#: pl_exec.c:3302 +#, c-format +msgid "cannot begin/end transactions in PL/pgSQL" +msgstr "PL/pgSQL'de transactionlar başlatılıp durdurulamazlar" + +#: pl_exec.c:2988 +#: pl_exec.c:3124 +#: pl_exec.c:3303 +#, c-format +msgid "Use a BEGIN block with an EXCEPTION clause instead." +msgstr "Bunun yerine BEGIN bloğunu EXCEPTION yantümcesi ile kullanın." + +#: pl_exec.c:3147 +#: pl_exec.c:3327 +#, c-format +msgid "INTO used with a command that cannot return data" +msgstr "Veri döndüremeyen bir komutta INTO kullanıldı" + +#: pl_exec.c:3167 +#: pl_exec.c:3347 +#, c-format +msgid "query returned no rows" +msgstr "sorgu satır döndürmedi" + +#: pl_exec.c:3176 +#: pl_exec.c:3356 +#, c-format +msgid "query returned more than one row" +msgstr "sorgu birden fazla satır döndürdü" + +#: pl_exec.c:3190 +#, c-format +msgid "query has no destination for result data" +msgstr "Sorgu sonuç verisi için bir hedef içermiyor" + +#: pl_exec.c:3191 +#, c-format +msgid "If you want to discard the results of a SELECT, use PERFORM instead." +msgstr "SELECT'den gelen sonuçları gözardı etmek istiyorsanız SELECT yerine PERFORM kullanın." + +#: pl_exec.c:3224 +#: pl_exec.c:5989 +#, c-format +msgid "query string argument of EXECUTE is null" +msgstr "" + +#: pl_exec.c:3289 +#, c-format +msgid "EXECUTE of SELECT ... INTO is not implemented" +msgstr "EXECUTE of SELECT ... INTO kodlanmadı" + +#: pl_exec.c:3290 +#, c-format +msgid "You might want to use EXECUTE ... INTO or EXECUTE CREATE TABLE ... AS instead." +msgstr "Bunun yerine, EXECUTE ... INTO ya da EXECUTE CREATE TABLE ... AS kullanmak isteyebilirsiniz." + +#: pl_exec.c:3578 +#: pl_exec.c:3669 +#, c-format +msgid "cursor variable \"%s\" is null" +msgstr "\"%s\" imleç değişkeni null'dır" + +#: pl_exec.c:3585 +#: pl_exec.c:3676 +#, c-format +msgid "cursor \"%s\" does not exist" +msgstr "\"%s\" imleci mevcut değil" + +#: pl_exec.c:3599 +#, c-format +msgid "relative or absolute cursor position is null" +msgstr "bağıl ya da mutlak imleç pozisyonu null" + +#: pl_exec.c:3762 +#, c-format +msgid "null value cannot be assigned to variable \"%s\" declared NOT NULL" +msgstr "" + +#: pl_exec.c:3820 +#, c-format +msgid "cannot assign non-composite value to a row variable" +msgstr "" + +#: pl_exec.c:3862 +#, c-format +msgid "cannot assign non-composite value to a record variable" +msgstr "" + +#: pl_exec.c:4033 +#, c-format +msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" +msgstr "dizin boyut sayısı (%d), izin verilern en yüksek değerini (%d) aşmaktadır" + +#: pl_exec.c:4052 +#, c-format +msgid "subscripted object is not an array" +msgstr "" + +#: pl_exec.c:4075 +#, c-format +msgid "array subscript in assignment must not be null" +msgstr "atamada array subscript null olamaz" + +#: pl_exec.c:4553 +#, c-format +msgid "query \"%s\" did not return data" +msgstr "\"%s\" sorgusu veri döndürmedi" + +#: pl_exec.c:4561 +#, c-format +msgid "query \"%s\" returned %d column" +msgid_plural "query \"%s\" returned %d columns" +msgstr[0] "\"%s\" sorgusu %d kolon döndürdü" + +#: pl_exec.c:4587 +#, c-format +msgid "query \"%s\" returned more than one row" +msgstr "\"%s\" sorgusu birden fazla satır döndürdü" + +#: pl_exec.c:4645 +#, c-format +msgid "query \"%s\" is not a SELECT" +msgstr "\"%s\" sorgusu bir SELECT değil" + +#: gram.y:438 +#, c-format +msgid "block label must be placed before DECLARE, not after" +msgstr "blok etiketi DECLARE'den önce yerleştirilmelidir, sonra değil." + +#: gram.y:458 +#, c-format +msgid "collations are not supported by type %s" +msgstr "%s veri tipinde collation desteklenmemektedir" + +#: gram.y:473 +#, c-format +msgid "row or record variable cannot be CONSTANT" +msgstr "Satır ya da kayıt değişkeni CONSTANT olamaz" + +#: gram.y:483 +#, c-format +msgid "row or record variable cannot be NOT NULL" +msgstr "satır ya da kayıt değişkeni NOT NULL olamaz" + +#: gram.y:494 +#, c-format +msgid "default value for row or record variable is not supported" +msgstr "satır ya da kayıt değişkenlerine öntanımlı değer atanması desteklenmiyor" + +#: gram.y:639 +#: gram.y:665 +#, c-format +msgid "variable \"%s\" does not exist" +msgstr "\"%s\" değişkeni mevcut değil" + +#: gram.y:683 +#: gram.y:696 +msgid "duplicate declaration" +msgstr "tekrarlanmış veri tipi deklarasyonu" + +#: gram.y:869 +#, c-format +msgid "diagnostics item %s is not allowed in GET STACKED DIAGNOSTICS" +msgstr "" + +#: gram.y:882 +#, c-format +msgid "diagnostics item %s is not allowed in GET CURRENT DIAGNOSTICS" +msgstr "" + +#: gram.y:959 +msgid "unrecognized GET DIAGNOSTICS item" +msgstr "tanımlanamayan GET DIAGNOSTICS öğesi" + +#: gram.y:970 +#: gram.y:3175 +#, c-format +msgid "\"%s\" is not a scalar variable" +msgstr "\"%s\" scalar bir değişken değil" + +#: gram.y:1232 +#: gram.y:1425 +#, c-format +msgid "loop variable of loop over rows must be a record or row variable or list of scalar variables" +msgstr "" + +#: gram.y:1266 +#, c-format +msgid "cursor FOR loop must have only one target variable" +msgstr "" + +#: gram.y:1273 +#, c-format +msgid "cursor FOR loop must use a bound cursor variable" +msgstr "" + +#: gram.y:1356 +#, c-format +msgid "integer FOR loop must have only one target variable" +msgstr "Tamsayı FOR döngüsünde sadece bir tane hedef değişken olabilir" + +#: gram.y:1392 +#, c-format +msgid "cannot specify REVERSE in query FOR loop" +msgstr "FOR döngü sorgusu içinde REVERSE belirtilemez" + +#: gram.y:1539 +#, c-format +msgid "loop variable of FOREACH must be a known variable or list of variables" +msgstr "" + +#: gram.y:1591 +#: gram.y:1628 +#: gram.y:1676 +#: gram.y:2625 +#: gram.y:2706 +#: gram.y:2817 +#: gram.y:3450 +msgid "unexpected end of function definition" +msgstr "fonksiyon tanımında beklenmeyen sonlanma" + +#: gram.y:1696 +#: gram.y:1720 +#: gram.y:1732 +#: gram.y:1739 +#: gram.y:1828 +#: gram.y:1836 +#: gram.y:1850 +#: gram.y:1945 +#: gram.y:2126 +#: gram.y:2205 +#: gram.y:2327 +#: gram.y:2906 +#: gram.y:2970 +#: gram.y:3410 +#: gram.y:3431 +msgid "syntax error" +msgstr "söz dizim hatası " + +#: gram.y:1724 +#: gram.y:1726 +#: gram.y:2130 +#: gram.y:2132 +msgid "invalid SQLSTATE code" +msgstr "geçersiz SQLSTATE kodu" + +#: gram.y:1892 +msgid "syntax error, expected \"FOR\"" +msgstr "sözdizimi hatası, \"FOR\" bekleniyordu" + +#: gram.y:1954 +#, c-format +msgid "FETCH statement cannot return multiple rows" +msgstr "RAISE ifadesi çoklu satır döndüremez" + +#: gram.y:2010 +#, c-format +msgid "cursor variable must be a simple variable" +msgstr "imleç değişkeni basit bir değişken olmalıdır" + +#: gram.y:2016 +#, c-format +msgid "variable \"%s\" must be of type cursor or refcursor" +msgstr "\"%s\" değişkeni cursor ya da refcursor tiplerinden birisi olmalıdır" + +#: gram.y:2184 +msgid "label does not exist" +msgstr "etiket bulunamadı" + +#: gram.y:2298 +#: gram.y:2309 +#, c-format +msgid "\"%s\" is not a known variable" +msgstr "\"%s\" bilinen bir değişken değil" + +#: gram.y:2411 +#: gram.y:2421 +#: gram.y:2549 +msgid "mismatched parentheses" +msgstr "eşlenmemiş parantezler" + +#: gram.y:2425 +#, c-format +msgid "missing \"%s\" at end of SQL expression" +msgstr "SQL ifadesinin sonunda eksik \"%s\" " + +#: gram.y:2431 +#, c-format +msgid "missing \"%s\" at end of SQL statement" +msgstr "SQL ifadesinin sonunda \"%s\" eksik" + +#: gram.y:2448 +msgid "missing expression" +msgstr "eksik ifade" + +#: gram.y:2450 +msgid "missing SQL statement" +msgstr "eksik SQL ifadesi" + +#: gram.y:2551 +msgid "incomplete data type declaration" +msgstr "eksik veri tipi deklarasyonu" + +#: gram.y:2574 +msgid "missing data type declaration" +msgstr "eksik veri tipi deklarasyonu" + +#: gram.y:2630 +msgid "INTO specified more than once" +msgstr "INTO birden fazla belirtildi" + +#: gram.y:2798 +msgid "expected FROM or IN" +msgstr "FROM ya da IN bekleniyordu" + +#: gram.y:2858 +#, c-format +msgid "RETURN cannot have a parameter in function returning set" +msgstr "RETURN, fonksiyon return set içinde parametre alamaz" + +#: gram.y:2859 +#, c-format +msgid "Use RETURN NEXT or RETURN QUERY." +msgstr "RETURN NEXT ya da RETURN QUERY kullanın." + +#: gram.y:2867 +#, c-format +msgid "RETURN cannot have a parameter in function with OUT parameters" +msgstr "RETURN, OUT parametreleri olan fonksiyonda parametre içeremez" + +#: gram.y:2876 +#, c-format +msgid "RETURN cannot have a parameter in function returning void" +msgstr "RETURN, void dönen bir fonksiyonda parametre alamaz" + +#: gram.y:2894 +#: gram.y:2901 +#, c-format +msgid "RETURN must specify a record or row variable in function returning row" +msgstr "" + +#: gram.y:2943 +#, c-format +msgid "RETURN NEXT cannot have a parameter in function with OUT parameters" +msgstr "RETURN NEXT OUT parametreleri olan fonksiyonda parametre içeremez" + +#: gram.y:2958 +#: gram.y:2965 +#, c-format +msgid "RETURN NEXT must specify a record or row variable in function returning row" +msgstr "RETURN NEXT satır döndüren fonksiyonda kayıt ya da satır değişkeni belirtmelidir" + +#: gram.y:3044 +#, c-format +msgid "\"%s\" is declared CONSTANT" +msgstr "\"%s\" CONSTANT olarak deklare edilmiş" + +#: gram.y:3106 +#: gram.y:3118 +#, c-format +msgid "record or row variable cannot be part of multiple-item INTO list" +msgstr "" + +#: gram.y:3163 +#, c-format +msgid "too many INTO variables specified" +msgstr "çok fazla INTO değişkeni belirtilmiş" + +#: gram.y:3371 +#, c-format +msgid "end label \"%s\" specified for unlabelled block" +msgstr "" + +#: gram.y:3378 +#, c-format +msgid "end label \"%s\" differs from block's label \"%s\"" +msgstr "" + +#: gram.y:3405 +#, c-format +msgid "cursor \"%s\" has no arguments" +msgstr "\"%s\" imlecinin argümanı yok" + +#: gram.y:3419 +#, c-format +msgid "cursor \"%s\" has arguments" +msgstr "\"%s\" imlecinin argümanları var" + +#: gram.y:3467 +msgid "unrecognized RAISE statement option" +msgstr "tanımsız RAISE ifadesi seçeneği" + +#: gram.y:3471 +msgid "syntax error, expected \"=\"" +msgstr "sözdizimi hatası, \"=\" bekleniyordu" + +#: pl_funcs.c:218 +msgid "statement block" +msgstr "ifade bloğu" + +#: pl_funcs.c:220 +msgid "assignment" +msgstr "atama" + +#: pl_funcs.c:230 +msgid "FOR with integer loop variable" +msgstr "tamsayı döngüsünde FOR" + +#: pl_funcs.c:232 +msgid "FOR over SELECT rows" +msgstr "FOR over SELECT rows" + +#: pl_funcs.c:234 +msgid "FOR over cursor" +msgstr "FOR over cursor" + +#: pl_funcs.c:236 +msgid "FOREACH over array" +msgstr "FOREACH dizgi üstünde" + +#: pl_funcs.c:248 +msgid "SQL statement" +msgstr "SQL ifadesi" + +#: pl_funcs.c:250 +msgid "EXECUTE statement" +msgstr "EXECUTE ifadesi" + +#: pl_funcs.c:252 +msgid "FOR over EXECUTE statement" +msgstr "EXECUTE ifadesinde FOR" + +#: pl_handler.c:60 +msgid "Sets handling of conflicts between PL/pgSQL variable names and table column names." +msgstr "" + +#. translator: %s is typically the translation of "syntax error" +#: pl_scanner.c:474 +#, c-format +msgid "%s at end of input" +msgstr "giriş sonuna %s" + +#. translator: first %s is typically the translation of "syntax error" +#: pl_scanner.c:490 +#, c-format +msgid "%s at or near \"%s\"" +msgstr "\"%2$s\" yerinde %1$s" + +#~ msgid "relation \"%s.%s\" does not exist" +#~ msgstr "\"%s.%s\" nesnesi mevcut değil" + +#~ msgid "expected \"[\"" +#~ msgstr " \"[\" bekleniyordu" + +#~ msgid "row \"%s\" has no field \"%s\"" +#~ msgstr "\"%s\" satırının bir alanı yok \"%s\"" + +#~ msgid "row \"%s.%s\" has no field \"%s\"" +#~ msgstr "\"%s.%s\" satırında \"%s\" alanı yok." + +#~ msgid "N/A (dropped column)" +#~ msgstr "N/A (silinmiş kolon)" + +#~ msgid "" +#~ "Number of returned columns (%d) does not match expected column count (%d)." +#~ msgstr "" +#~ "Dönen kolonların sayısı (%d) beklenen kolon sayısı (%d) ile eşleşmiyor." + +#~ msgid "function has no parameter \"%s\"" +#~ msgstr "fonksiyonun \"%s\" parametresi var" + +#~ msgid "expected an integer variable" +#~ msgstr "tamsayı değişken bekleniyordu" + +#~ msgid "syntax error at \"%s\"" +#~ msgstr "\"%s\" içinde sözdizimi hatası" + +#~ msgid "expected a cursor or refcursor variable" +#~ msgstr "cursor ya da refcursonr değişkeni beklendi" + +#~ msgid "too many variables specified in SQL statement" +#~ msgstr "SQL ifadesinde çok fazla değişken belirtilmiş" + +#~ msgid "cannot assign to tg_argv" +#~ msgstr "tg_argv'ye atama yapılamadı" + +#~ msgid "expected \")\"" +#~ msgstr "\")\" bekleniyordu" + +#~ msgid "variable \"%s\" does not exist in the current block" +#~ msgstr "\"%s\" değişkeni mevcut bloğun içinde yok" + +#~ msgid "unterminated \" in identifier: %s" +#~ msgstr "belirteçte sonlandırılmamış *\" : %s" + +#~ msgid "unterminated quoted identifier" +#~ msgstr "sonuçlandırılmamış tırnakla sınırlandırılmış tanım" + +#~ msgid "unterminated /* comment" +#~ msgstr "/* açıklama sonlandırılmamış" + +#~ msgid "unterminated quoted string" +#~ msgstr "sonuçlandırılmamış tırnakla sınırlandırılmış satır" + +#~ msgid "unterminated dollar-quoted string" +#~ msgstr "sonuçlandırılmamış dolar işeretiyle sınırlandırılmış satır" diff --git a/src/pl/plpgsql/src/po/zh_CN.po b/src/pl/plpgsql/src/po/zh_CN.po index 8fe3c7a934..87fd86de88 100644 --- a/src/pl/plpgsql/src/po/zh_CN.po +++ b/src/pl/plpgsql/src/po/zh_CN.po @@ -7,628 +7,671 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.0\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-10-15 16:49+0000\n" +"POT-Creation-Date: 2013-01-29 13:51+0000\n" "PO-Revision-Date: 2010-10-01 12:53+0800\n" "Last-Translator: Weibin \n" "Language-Team: Weibin \n" -"Language: \n" +"Language: zh_CN\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" -#: pl_comp.c:422 pl_handler.c:256 +#: pl_comp.c:427 pl_handler.c:266 #, c-format msgid "PL/pgSQL functions cannot accept type %s" msgstr "PL/pgSQL函数不使用类型%s" -#: pl_comp.c:501 +#: pl_comp.c:506 #, c-format msgid "could not determine actual return type for polymorphic function \"%s\"" msgstr "无法确定多态函数\"%s\"的实际返回类型" -#: pl_comp.c:531 +#: pl_comp.c:536 msgid "trigger functions can only be called as triggers" msgstr "触发器函数只能以触发器的形式调用" -#: pl_comp.c:535 pl_handler.c:241 +#: pl_comp.c:540 pl_handler.c:251 #, c-format msgid "PL/pgSQL functions cannot return type %s" msgstr "PL/pgSQL函数不能返回类型%s" -#: pl_comp.c:576 +#: pl_comp.c:583 msgid "trigger functions cannot have declared arguments" msgstr "触发器函数不能有已声明的参数" -#: pl_comp.c:577 +#: pl_comp.c:584 msgid "" "The arguments of the trigger can be accessed through TG_NARGS and TG_ARGV " "instead." msgstr "触发器的参数可以通过TG_NARGS和TG_ARGV进行访问." -#: pl_comp.c:880 +#: pl_comp.c:912 #, c-format msgid "compilation of PL/pgSQL function \"%s\" near line %d" msgstr "在第%2$d行附件编译PL/pgSQL函数\"%1$s\"" -#: pl_comp.c:978 +#: pl_comp.c:935 +#, c-format +msgid "parameter name \"%s\" used more than once" +msgstr "多次使用参数名称 \"%s\"" + +#: pl_comp.c:1045 #, c-format msgid "column reference \"%s\" is ambiguous" msgstr "字段关联 \"%s\" 是不明确的" -#: pl_comp.c:980 +#: pl_comp.c:1047 msgid "It could refer to either a PL/pgSQL variable or a table column." msgstr "可以指向一个PL/pgSQL变量或表中的列" -#: pl_comp.c:1690 +#: pl_comp.c:1227 pl_comp.c:1255 pl_exec.c:3870 pl_exec.c:4201 pl_exec.c:4287 +#: pl_exec.c:4378 +#, c-format +msgid "record \"%s\" has no field \"%s\"" +msgstr "记录\"%s\"没有字段\"%s\"" + +#: pl_comp.c:1783 #, c-format msgid "relation \"%s\" does not exist" msgstr "关系 \"%s\" 不存在" -#: pl_comp.c:1722 +#: pl_comp.c:1815 #, c-format msgid "relation \"%s.%s\" does not exist" msgstr "关系 \"%s.%s\" 不存在" -#: pl_comp.c:1804 +#: pl_comp.c:1897 #, c-format msgid "variable \"%s\" has pseudo-type %s" msgstr "变量\"%s\"具有伪类型%s" -#: pl_comp.c:1865 +#: pl_comp.c:1959 #, c-format msgid "relation \"%s\" is not a table" msgstr "关系 \"%s\"不是一张表" -#: pl_comp.c:2017 +#: pl_comp.c:2119 #, c-format msgid "type \"%s\" is only a shell" msgstr "类型 \"%s\" 只是一个 shell" -#: pl_comp.c:2087 pl_comp.c:2140 +#: pl_comp.c:2192 pl_comp.c:2245 #, c-format msgid "unrecognized exception condition \"%s\"" msgstr "不可识别的异常条件\"%s\"" -#: pl_comp.c:2295 +#: pl_comp.c:2403 #, c-format msgid "" "could not determine actual argument type for polymorphic function \"%s\"" msgstr "无法确定多态函数\"%s\"的实际参数类型" -#: pl_exec.c:236 pl_exec.c:511 +#: pl_exec.c:242 pl_exec.c:517 msgid "during initialization of execution state" msgstr "在执行状态的初始化期间" -#: pl_exec.c:243 +#: pl_exec.c:249 msgid "while storing call arguments into local variables" msgstr "在将调用的参数存储到本地变量时" -#: pl_exec.c:298 pl_exec.c:666 +#: pl_exec.c:306 pl_exec.c:674 msgid "during function entry" msgstr "在进入函数期间" -#: pl_exec.c:329 pl_exec.c:697 +#: pl_exec.c:337 pl_exec.c:705 msgid "CONTINUE cannot be used outside a loop" msgstr "在循环的外部不能使用CONTINUE" -#: pl_exec.c:333 pl_exec.c:701 -msgid "RAISE without parameters cannot be used outside an exception handler" -msgstr "不带有参数的RAISE不能在异常处理的外部使用" - -#: pl_exec.c:337 +#: pl_exec.c:341 msgid "control reached end of function without RETURN" msgstr "控制流程到达函数的结束部分,但是没有看到RETURN" -#: pl_exec.c:344 +#: pl_exec.c:348 msgid "while casting return value to function's return type" msgstr "正在将返回值强行指派为函数的返回类型" -#: pl_exec.c:357 pl_exec.c:2403 +#: pl_exec.c:361 pl_exec.c:2593 msgid "set-valued function called in context that cannot accept a set" msgstr "集值函数在不接受使用集合的环境中调用" -#: pl_exec.c:395 +#: pl_exec.c:399 msgid "returned record type does not match expected record type" msgstr "所返回的记录类型与所期待的记录类型不匹配" -#: pl_exec.c:453 pl_exec.c:709 +#: pl_exec.c:459 pl_exec.c:713 msgid "during function exit" msgstr "在函数退出期间" -#: pl_exec.c:705 +#: pl_exec.c:709 msgid "control reached end of trigger procedure without RETURN" msgstr "控制流程到达触发器/存储过程的结束部分,但是没有看到RETURN" -#: pl_exec.c:714 +#: pl_exec.c:718 msgid "trigger procedure cannot return a set" msgstr "触发器存储过程无法返回集合" -#: pl_exec.c:736 +#: pl_exec.c:740 msgid "" "returned row structure does not match the structure of the triggering table" msgstr "所返回的记录结构与触发表的结构不匹配" -#: pl_exec.c:799 +#: pl_exec.c:803 #, c-format msgid "PL/pgSQL function \"%s\" line %d %s" msgstr "PL/pgSQL 函数\"%s\" 在第%d行 %s" -#: pl_exec.c:810 +#: pl_exec.c:814 #, c-format msgid "PL/pgSQL function \"%s\" %s" msgstr "PL/pgSQL 函数 \"%s\" %s" #. translator: last %s is a plpgsql statement type name -#: pl_exec.c:818 +#: pl_exec.c:822 #, c-format msgid "PL/pgSQL function \"%s\" line %d at %s" msgstr "在%3$s的第%2$d行的PL/pgSQL函数\"%1$s\"" -#: pl_exec.c:824 +#: pl_exec.c:828 #, c-format msgid "PL/pgSQL function \"%s\"" msgstr "PL/pgSQL函数 \"%s\"" -#: pl_exec.c:932 +#: pl_exec.c:936 msgid "during statement block local variable initialization" msgstr "在初始化语句块的局部变量期间" -#: pl_exec.c:974 +#: pl_exec.c:978 #, c-format msgid "variable \"%s\" declared NOT NULL cannot default to NULL" msgstr "声明为NOT NULL的变量\"%s\"无法将缺省值设为NULL" -#: pl_exec.c:1023 +#: pl_exec.c:1028 msgid "during statement block entry" msgstr "在进入语句块期间" -#: pl_exec.c:1044 +#: pl_exec.c:1049 msgid "during statement block exit" msgstr "在退出语句块期间" -#: pl_exec.c:1087 +#: pl_exec.c:1092 msgid "during exception cleanup" msgstr "在清理异常期间" -#: pl_exec.c:1556 +#: pl_exec.c:1569 msgid "case not found" msgstr "没有找到CASE" -#: pl_exec.c:1557 +#: pl_exec.c:1570 msgid "CASE statement is missing ELSE part." msgstr "在CASE语句结构中丢失ELSE部分" -#: pl_exec.c:1713 +#: pl_exec.c:1724 msgid "lower bound of FOR loop cannot be null" msgstr "FOR循环的低位边界不能为空" -#: pl_exec.c:1728 +#: pl_exec.c:1739 msgid "upper bound of FOR loop cannot be null" msgstr "FOR循环的高位边界不能为空" -#: pl_exec.c:1745 +#: pl_exec.c:1756 msgid "BY value of FOR loop cannot be null" msgstr "FOR循环的BY值不能为空" -#: pl_exec.c:1751 +#: pl_exec.c:1762 msgid "BY value of FOR loop must be greater than zero" msgstr "FOR循环的BY值必须大于0" -#: pl_exec.c:1923 pl_exec.c:3188 +#: pl_exec.c:1932 pl_exec.c:3405 #, c-format msgid "cursor \"%s\" already in use" msgstr "游标\"%s\"已经在使用" -#: pl_exec.c:1946 pl_exec.c:3250 +#: pl_exec.c:1955 pl_exec.c:3467 msgid "arguments given for cursor without arguments" msgstr "给不带有参数的游标指定参数" -#: pl_exec.c:1965 pl_exec.c:3269 +#: pl_exec.c:1974 pl_exec.c:3486 msgid "arguments required for cursor" msgstr "游标需要参数" -#: pl_exec.c:2187 gram.y:2744 +#: pl_exec.c:2062 +msgid "FOREACH expression must not be null" +msgstr "FOREACH表达式不能为空" + +#: pl_exec.c:2068 +#, c-format +msgid "FOREACH expression must yield an array, not type %s" +msgstr "FOREACH表达式的结果必须是数组, 而不是类型 %s" + +#: pl_exec.c:2085 +#, c-format +msgid "slice dimension (%d) is out of the valid range 0..%d" +msgstr "索引维数(%d)超出有效范围: 0..%d" + +#: pl_exec.c:2112 +msgid "FOREACH ... SLICE loop variable must be of an array type" +msgstr "FOREACH ... SLICE循环变量必须属于数组类型" + +#: pl_exec.c:2116 +msgid "FOREACH loop variable must not be of an array type" +msgstr "FOREACH循环变量不能为数组类型" + +#: pl_exec.c:2374 gram.y:2844 msgid "cannot use RETURN NEXT in a non-SETOF function" msgstr "无法在非SETOF函数中使用RETURN NEXT" -#: pl_exec.c:2211 pl_exec.c:2277 +#: pl_exec.c:2398 pl_exec.c:2466 msgid "wrong result type supplied in RETURN NEXT" msgstr "在RETURN NEXT中提供了错误的结果类型" -#: pl_exec.c:2233 pl_exec.c:3642 pl_exec.c:3948 pl_exec.c:3982 pl_exec.c:4044 -#: pl_exec.c:4063 pl_exec.c:4100 +#: pl_exec.c:2421 pl_exec.c:3857 pl_exec.c:4159 pl_exec.c:4194 pl_exec.c:4261 +#: pl_exec.c:4280 pl_exec.c:4348 pl_exec.c:4371 #, c-format msgid "record \"%s\" is not assigned yet" msgstr "记录 \"%s\"还没有分配" -#: pl_exec.c:2235 pl_exec.c:3644 pl_exec.c:3950 pl_exec.c:3984 pl_exec.c:4046 -#: pl_exec.c:4065 pl_exec.c:4102 +#: pl_exec.c:2423 pl_exec.c:3859 pl_exec.c:4161 pl_exec.c:4196 pl_exec.c:4263 +#: pl_exec.c:4282 pl_exec.c:4350 pl_exec.c:4373 msgid "The tuple structure of a not-yet-assigned record is indeterminate." msgstr "未分配记录的元组结构未确定." -#: pl_exec.c:2239 pl_exec.c:2258 +#: pl_exec.c:2427 pl_exec.c:2447 msgid "wrong record type supplied in RETURN NEXT" msgstr "在RETURN NEXT中提供了错误的记录类型" -#: pl_exec.c:2300 +#: pl_exec.c:2488 msgid "RETURN NEXT must have a parameter" msgstr "RETURN NEXT必须有一个参数" -#: pl_exec.c:2331 gram.y:2803 +#: pl_exec.c:2521 gram.y:2903 msgid "cannot use RETURN QUERY in a non-SETOF function" msgstr "无法在非SETOF函数中使用RETURN QUERY" -#: pl_exec.c:2351 +#: pl_exec.c:2541 msgid "structure of query does not match function result type" msgstr "查询的结构与函数的返回类型不匹配" -#: pl_exec.c:2483 +#: pl_exec.c:2639 +msgid "RAISE without parameters cannot be used outside an exception handler" +msgstr "不带有参数的RAISE不能在异常处理的外部使用" + +#: pl_exec.c:2680 msgid "too few parameters specified for RAISE" msgstr "为RAISE子句指定参数过少" -#: pl_exec.c:2509 +#: pl_exec.c:2708 msgid "too many parameters specified for RAISE" msgstr "为RAISE子句指定参数过多" -#: pl_exec.c:2529 +#: pl_exec.c:2728 msgid "RAISE statement option cannot be null" msgstr "RAISE语句选项不能为空" -#: pl_exec.c:2539 pl_exec.c:2548 pl_exec.c:2556 pl_exec.c:2564 +#: pl_exec.c:2738 pl_exec.c:2747 pl_exec.c:2755 pl_exec.c:2763 #, c-format msgid "RAISE option already specified: %s" msgstr "已经指定了RAISE选项:%s" -#: pl_exec.c:2599 pl_exec.c:2600 +#: pl_exec.c:2799 #, c-format msgid "%s" msgstr "%s" -#: pl_exec.c:2749 pl_exec.c:3053 +#: pl_exec.c:2949 pl_exec.c:3085 pl_exec.c:3268 msgid "cannot COPY to/from client in PL/pgSQL" msgstr "无法在PL/pgSQL中从客户端或向客户端使用COPY命令" -#: pl_exec.c:2753 pl_exec.c:3057 +#: pl_exec.c:2953 pl_exec.c:3089 pl_exec.c:3272 msgid "cannot begin/end transactions in PL/pgSQL" msgstr "无法在PL/pgSQL中无法使用begin/end事务" -#: pl_exec.c:2754 pl_exec.c:3058 +#: pl_exec.c:2954 pl_exec.c:3090 pl_exec.c:3273 msgid "Use a BEGIN block with an EXCEPTION clause instead." msgstr "使用带有一个EXCEPTION子句的BEGIN代码块." -#: pl_exec.c:2902 pl_exec.c:3082 +#: pl_exec.c:3113 pl_exec.c:3297 msgid "INTO used with a command that cannot return data" msgstr "使用了带有无法返回数据的命令的INTO" -#: pl_exec.c:2922 pl_exec.c:3102 +#: pl_exec.c:3133 pl_exec.c:3317 msgid "query returned no rows" msgstr "查询没有返回记录" -#: pl_exec.c:2931 pl_exec.c:3111 +#: pl_exec.c:3142 pl_exec.c:3326 msgid "query returned more than one row" msgstr "查询返回多条记录" -#: pl_exec.c:2945 +#: pl_exec.c:3157 msgid "query has no destination for result data" msgstr "对于结果数据,查询没有目标" -#: pl_exec.c:2946 +#: pl_exec.c:3158 msgid "If you want to discard the results of a SELECT, use PERFORM instead." msgstr "如果您想要放弃SELECT语句的结果,请使用PERFORM." -#: pl_exec.c:2979 pl_exec.c:5602 +#: pl_exec.c:3191 pl_exec.c:5949 msgid "query string argument of EXECUTE is null" msgstr "EXECUTE的查询字符串参数是空值" -#: pl_exec.c:3044 +#: pl_exec.c:3259 msgid "EXECUTE of SELECT ... INTO is not implemented" msgstr "没有执行EXECUTE of SELECT ... INTO " -#: pl_exec.c:3045 -msgid "You might want to use EXECUTE ... INTO instead." -msgstr "您可以使用EXECUTE ... INTO语句来替代" +#: pl_exec.c:3260 +msgid "" +"You might want to use EXECUTE ... INTO or EXECUTE CREATE TABLE ... AS " +"instead." +msgstr "您可以使用EXECUTE ... INTO或者EXECUTE CREATE TABLE ... AS语句来替代" -#: pl_exec.c:3333 pl_exec.c:3424 +#: pl_exec.c:3550 pl_exec.c:3642 #, c-format msgid "cursor variable \"%s\" is null" msgstr "游标变量\"%s\"是空的" -#: pl_exec.c:3340 pl_exec.c:3431 +#: pl_exec.c:3557 pl_exec.c:3649 #, c-format msgid "cursor \"%s\" does not exist" msgstr "游标 \"%s\" 不存在" -#: pl_exec.c:3354 +#: pl_exec.c:3571 msgid "relative or absolute cursor position is null" msgstr "游标的相对或绝对位置是空的" -#: pl_exec.c:3495 +#: pl_exec.c:3716 #, c-format msgid "null value cannot be assigned to variable \"%s\" declared NOT NULL" msgstr "不能将声明为NOT NULL的变量\"%s\" 分配空值" -#: pl_exec.c:3553 +#: pl_exec.c:3769 msgid "cannot assign non-composite value to a row variable" msgstr "无法将非组合值分配给记录变量" -#: pl_exec.c:3595 +#: pl_exec.c:3811 msgid "cannot assign non-composite value to a record variable" msgstr "无法将非组合值分配给记录类型变量" -#: pl_exec.c:3655 pl_exec.c:3989 pl_exec.c:4070 pl_exec.c:4107 -#, c-format -msgid "record \"%s\" has no field \"%s\"" -msgstr "记录\"%s\"没有字段\"%s\"" - -#: pl_exec.c:3765 +#: pl_exec.c:3972 #, c-format msgid "number of array dimensions (%d) exceeds the maximum allowed (%d)" msgstr "数组维数(%d)超过了最大允许值(%d)" -#: pl_exec.c:3779 +#: pl_exec.c:3991 msgid "subscripted object is not an array" msgstr "下标对象不是一个数组" -#: pl_exec.c:3802 +#: pl_exec.c:4014 msgid "array subscript in assignment must not be null" msgstr "在赋值中数组下标不能为空" -#: pl_exec.c:4198 +#: pl_exec.c:4486 #, c-format msgid "query \"%s\" did not return data" msgstr "查询\"%s\"没有返回数据" -#: pl_exec.c:4206 +#: pl_exec.c:4494 #, c-format msgid "query \"%s\" returned %d column" msgid_plural "query \"%s\" returned %d columns" msgstr[0] "查询\"%s\"返回%d列" -#: pl_exec.c:4232 +#: pl_exec.c:4520 #, c-format msgid "query \"%s\" returned more than one row" msgstr "查询\"%s\"返回多条数据" -#: pl_exec.c:4290 +#: pl_exec.c:4578 #, c-format msgid "query \"%s\" is not a SELECT" msgstr "查询 \"%s\"不是SELECT语句" -#: gram.y:423 +#: gram.y:430 msgid "block label must be placed before DECLARE, not after" msgstr "代码块标签必须放在DECLARE的前面,而不是后面" -#: gram.y:441 +#: gram.y:450 +#, c-format +msgid "collations are not supported by type %s" +msgstr "类型 %s不支持校对函数" + +#: gram.y:465 msgid "row or record variable cannot be CONSTANT" msgstr "记录或者记录类型变量不能是CONSTANT类型" -#: gram.y:451 +#: gram.y:475 msgid "row or record variable cannot be NOT NULL" msgstr "记录或者记录类型变量不能是NOT NULL" -#: gram.y:462 +#: gram.y:486 msgid "default value for row or record variable is not supported" msgstr "不支持为记录或记录类型变量设置缺省值" -#: gram.y:606 gram.y:632 +#: gram.y:631 gram.y:657 #, c-format msgid "variable \"%s\" does not exist" msgstr "变量 \"%s\" 不存在" -#: gram.y:650 gram.y:663 +#: gram.y:675 gram.y:688 msgid "duplicate declaration" msgstr "重复声明" -#: gram.y:841 +#: gram.y:881 msgid "unrecognized GET DIAGNOSTICS item" msgstr "无法识别的项GET DIAGNOSTICS" -#: gram.y:852 gram.y:2990 +#: gram.y:892 gram.y:3090 #, c-format msgid "\"%s\" is not a scalar variable" msgstr "\"%s\" 不是一个标量变量" -#: gram.y:1114 gram.y:1306 +#: gram.y:1154 gram.y:1347 msgid "" "loop variable of loop over rows must be a record or row variable or list of " "scalar variables" msgstr "在记录集上进行循环的循环变量必须是记录或记录类型变量或标量变量的列表" -#: gram.y:1148 +#: gram.y:1188 msgid "cursor FOR loop must have only one target variable" msgstr "游标的FOR循环只能有一个目标变量" -#: gram.y:1155 +#: gram.y:1195 msgid "cursor FOR loop must use a bound cursor variable" msgstr "游标的FOR循环必须使用有界游标变量" -#: gram.y:1238 +#: gram.y:1278 msgid "integer FOR loop must have only one target variable" msgstr "整数FOR循环必须只能有一个目标变量" -#: gram.y:1273 +#: gram.y:1314 msgid "cannot specify REVERSE in query FOR loop" msgstr "无法在查询FOR循环中指定REVERSE " -#: gram.y:1420 gram.y:1457 gram.y:1505 gram.y:2440 gram.y:2521 gram.y:2632 -#: gram.y:3264 +#: gram.y:1461 +msgid "loop variable of FOREACH must be a known variable or list of variables" +msgstr "FOREACH的循环变量必须是已知类型或者是变量列表" + +#: gram.y:1513 gram.y:1550 gram.y:1598 gram.y:2540 gram.y:2621 gram.y:2732 +#: gram.y:3365 msgid "unexpected end of function definition" msgstr "在函数定义中意外出现的结束标志" -#: gram.y:1525 gram.y:1549 gram.y:1561 gram.y:1568 gram.y:1657 gram.y:1665 -#: gram.y:1679 gram.y:1774 gram.y:1951 gram.y:2030 gram.y:2143 gram.y:2721 -#: gram.y:2785 gram.y:3224 gram.y:3245 +#: gram.y:1618 gram.y:1642 gram.y:1654 gram.y:1661 gram.y:1750 gram.y:1758 +#: gram.y:1772 gram.y:1867 gram.y:2048 gram.y:2127 gram.y:2242 gram.y:2821 +#: gram.y:2885 gram.y:3325 gram.y:3346 msgid "syntax error" msgstr "语法错误" -#: gram.y:1553 gram.y:1555 gram.y:1955 gram.y:1957 +#: gram.y:1646 gram.y:1648 gram.y:2052 gram.y:2054 msgid "invalid SQLSTATE code" msgstr "无效的SQLSTATE代码" -#: gram.y:1721 +#: gram.y:1814 msgid "syntax error, expected \"FOR\"" msgstr "语法错误,期望\"FOR\"" -#: gram.y:1783 +#: gram.y:1876 msgid "FETCH statement cannot return multiple rows" msgstr "FETCH语句无法返回多条记录" -#: gram.y:1839 +#: gram.y:1932 msgid "cursor variable must be a simple variable" msgstr "游标变量必须是一个简单变量" -#: gram.y:1845 +#: gram.y:1938 #, c-format msgid "variable \"%s\" must be of type cursor or refcursor" msgstr "变量\"%s\" 必须属于游标类型或refcursor类型" -#: gram.y:2009 +#: gram.y:2106 msgid "label does not exist" msgstr "标签不存在" -#: gram.y:2114 gram.y:2125 +#: gram.y:2213 gram.y:2224 #, c-format msgid "\"%s\" is not a known variable" msgstr "\"%s\" 不是一个已知变量" -#: gram.y:2227 gram.y:2237 gram.y:2365 +#: gram.y:2326 gram.y:2336 gram.y:2464 msgid "mismatched parentheses" msgstr "括号不匹配" -#: gram.y:2241 +#: gram.y:2340 #, c-format msgid "missing \"%s\" at end of SQL expression" msgstr "在SQL表达式的结尾处丢失\"%s\"" -#: gram.y:2247 +#: gram.y:2346 #, c-format msgid "missing \"%s\" at end of SQL statement" msgstr "在SQL语句的结尾处丢失\"%s\"" -#: gram.y:2264 +#: gram.y:2363 msgid "missing expression" msgstr "缺少表达式" -#: gram.y:2266 +#: gram.y:2365 msgid "missing SQL statement" msgstr "缺少SQL语句" -#: gram.y:2367 +#: gram.y:2466 msgid "incomplete data type declaration" msgstr "未完成的数据类型声明" -#: gram.y:2389 +#: gram.y:2489 msgid "missing data type declaration" msgstr "丢失数据类型声明" -#: gram.y:2445 +#: gram.y:2545 msgid "INTO specified more than once" msgstr "多次指定INTO" -#: gram.y:2613 +#: gram.y:2713 msgid "expected FROM or IN" msgstr "期望关键字FROM或IN" -#: gram.y:2673 +#: gram.y:2773 msgid "RETURN cannot have a parameter in function returning set" msgstr "在返回为集合的函数中RETURN不能带有参数" -#: gram.y:2674 +#: gram.y:2774 msgid "Use RETURN NEXT or RETURN QUERY." msgstr "使用RETURN NEXT或RETURN QUERY." -#: gram.y:2682 +#: gram.y:2782 msgid "RETURN cannot have a parameter in function with OUT parameters" msgstr "在带有输出参数的函数中RETURN不能有参数" -#: gram.y:2691 +#: gram.y:2791 msgid "RETURN cannot have a parameter in function returning void" msgstr "在返回为空的函数中RETURN不能有参数" -#: gram.y:2709 gram.y:2716 +#: gram.y:2809 gram.y:2816 msgid "RETURN must specify a record or row variable in function returning row" msgstr "在返回记录的函数中RETURN必须制定一个记录或记录类型变量" -#: gram.y:2758 +#: gram.y:2858 msgid "RETURN NEXT cannot have a parameter in function with OUT parameters" msgstr "在带有输出参数的函数中RETURN NEXT不能有参数" -#: gram.y:2773 gram.y:2780 +#: gram.y:2873 gram.y:2880 msgid "" "RETURN NEXT must specify a record or row variable in function returning row" msgstr "在返回记录的函数中RETURN NEXT必须指定记录或记录类型变量" -#: gram.y:2859 +#: gram.y:2959 #, c-format msgid "\"%s\" is declared CONSTANT" msgstr "\"%s\"被声明为常量" -#: gram.y:2921 gram.y:2933 +#: gram.y:3021 gram.y:3033 msgid "record or row variable cannot be part of multiple-item INTO list" msgstr "记录或行类型变量不能作为带有多个项的INTO列表中的一部分" -#: gram.y:2978 +#: gram.y:3078 msgid "too many INTO variables specified" msgstr "在INTO后面指定了太多的变量" -#: gram.y:3185 +#: gram.y:3286 #, c-format msgid "end label \"%s\" specified for unlabelled block" msgstr "为没有标签的代码块指定结束标签\"%s\" " -#: gram.y:3192 +#: gram.y:3293 #, c-format msgid "end label \"%s\" differs from block's label \"%s\"" msgstr "结束标签\"%s\" 与代码块标签\"%s\"不同" -#: gram.y:3219 +#: gram.y:3320 #, c-format msgid "cursor \"%s\" has no arguments" msgstr "游标\"%s\" 没有参数" -#: gram.y:3233 +#: gram.y:3334 #, c-format msgid "cursor \"%s\" has arguments" msgstr "游标\"%s\"有参数" -#: gram.y:3281 +#: gram.y:3382 msgid "unrecognized RAISE statement option" msgstr "无法识别的RAISE语句选项" -#: gram.y:3285 +#: gram.y:3386 msgid "syntax error, expected \"=\"" msgstr "语法错误,期望\"=\"" -#: pl_funcs.c:216 +#: pl_funcs.c:218 msgid "statement block" msgstr "语句块" -#: pl_funcs.c:218 +#: pl_funcs.c:220 msgid "assignment" msgstr "赋值" -#: pl_funcs.c:228 +#: pl_funcs.c:230 msgid "FOR with integer loop variable" msgstr "带有整型循环变量的FOR语句" -#: pl_funcs.c:230 +#: pl_funcs.c:232 msgid "FOR over SELECT rows" msgstr "在SELECT记录上的FOR语句" -#: pl_funcs.c:232 +#: pl_funcs.c:234 msgid "FOR over cursor" msgstr "在游标上运行的FOR语句" -#: pl_funcs.c:244 +#: pl_funcs.c:236 +msgid "FOREACH over array" +msgstr "在数组上运行的FOREACH语句" + +#: pl_funcs.c:248 msgid "SQL statement" msgstr "SQL语句" -#: pl_funcs.c:246 +#: pl_funcs.c:250 msgid "EXECUTE statement" msgstr "EXECUTE 语句" -#: pl_funcs.c:248 +#: pl_funcs.c:252 msgid "FOR over EXECUTE statement" msgstr "在EXECUTE语句上的FOR语句" @@ -639,13 +682,13 @@ msgid "" msgstr "设置在PL/pgSQL变量名称和表中列名冲突时的处理原则" #. translator: %s is typically the translation of "syntax error" -#: pl_scanner.c:463 +#: pl_scanner.c:467 #, c-format msgid "%s at end of input" msgstr "%s 在输入的末尾" #. translator: first %s is typically the translation of "syntax error" -#: pl_scanner.c:479 +#: pl_scanner.c:483 #, c-format msgid "%s at or near \"%s\"" msgstr "%s 在 \"%s\" 或附近的" diff --git a/src/pl/plpgsql/src/po/zh_TW.po b/src/pl/plpgsql/src/po/zh_TW.po index ee473cd678..c19e3828bd 100644 --- a/src/pl/plpgsql/src/po/zh_TW.po +++ b/src/pl/plpgsql/src/po/zh_TW.po @@ -11,7 +11,7 @@ msgstr "" "Last-Translator: Zhenbang Wei \n" "Language-Team: EnterpriseDB translation team \n" -"Language: \n" +"Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/pl/plpython/Makefile b/src/pl/plpython/Makefile index 2c0575501a..df07fc2ced 100644 --- a/src/pl/plpython/Makefile +++ b/src/pl/plpython/Makefile @@ -40,9 +40,10 @@ NAME = plpython$(python_majorversion) OBJS = plpython.o -DATA = plpythonu.control plpythonu--1.0.sql plpythonu--unpackaged--1.0.sql \ - plpython2u.control plpython2u--1.0.sql plpython2u--unpackaged--1.0.sql \ - plpython3u.control plpython3u--1.0.sql plpython3u--unpackaged--1.0.sql +DATA = $(NAME)u.control $(NAME)u--1.0.sql $(NAME)u--unpackaged--1.0.sql +ifeq ($(python_majorversion),2) +DATA += plpythonu.control plpythonu--1.0.sql plpythonu--unpackaged--1.0.sql +endif # Python on win32 ships with import libraries only for Microsoft Visual C++, @@ -95,16 +96,8 @@ PSQLDIR = $(bindir) include $(top_srcdir)/src/Makefile.shlib -# Force this dependency to be known even without dependency info built: -plpython.o: spiexceptions.h - -spiexceptions.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-spiexceptions.pl - $(PERL) $(srcdir)/generate-spiexceptions.pl $< > $@ - all: all-lib -distprep: spiexceptions.h - install: all install-lib install-data @@ -151,13 +144,13 @@ installcheck: submake prep3 $(pg_regress_installcheck) --inputdir=./python3 --outputdir=./python3 $(REGRESS_OPTS) $(REGRESS) clean: clean3 -else +else # not Python 3 check: submake $(pg_regress_check) $(REGRESS_OPTS) $(REGRESS) installcheck: submake $(pg_regress_installcheck) $(REGRESS_OPTS) $(REGRESS) -endif +endif # not Python 3 .PHONY: submake submake: @@ -170,9 +163,6 @@ ifeq ($(PORTNAME), win32) rm -f python${pytverstr}.def endif -maintainer-clean: distclean - rm -f spiexceptions.h - else # can't build all: @@ -183,3 +173,16 @@ all: echo "" endif # can't build + +# distprep and maintainer-clean rules should be run even if we can't build. + +# Force this dependency to be known even without dependency info built: +plpython.o: spiexceptions.h + +spiexceptions.h: $(top_srcdir)/src/backend/utils/errcodes.txt generate-spiexceptions.pl + $(PERL) $(srcdir)/generate-spiexceptions.pl $< > $@ + +distprep: spiexceptions.h + +maintainer-clean: distclean + rm -f spiexceptions.h diff --git a/src/pl/plpython/expected/plpython_error.out b/src/pl/plpython/expected/plpython_error.out index dbf19fda9b..bab07fbeb2 100644 --- a/src/pl/plpython/expected/plpython_error.out +++ b/src/pl/plpython/expected/plpython_error.out @@ -351,6 +351,28 @@ CONTEXT: PL/Python function "specific_exception" (1 row) +/* SPI errors in PL/Python functions should preserve the SQLSTATE value + */ +CREATE FUNCTION python_unique_violation() RETURNS void AS $$ +plpy.execute("insert into specific values (1)") +plpy.execute("insert into specific values (1)") +$$ LANGUAGE plpythonu; +CREATE FUNCTION catch_python_unique_violation() RETURNS text AS $$ +begin + begin + perform python_unique_violation(); + exception when unique_violation then + return 'ok'; + end; + return 'not reached'; +end; +$$ language plpgsql; +SELECT catch_python_unique_violation(); + catch_python_unique_violation +------------------------------- + ok +(1 row) + /* manually starting subtransactions - a bad idea */ CREATE FUNCTION manual_subxact() RETURNS void AS $$ diff --git a/src/pl/plpython/expected/plpython_error_0.out b/src/pl/plpython/expected/plpython_error_0.out index b2194ffccf..6cb2ed091b 100644 --- a/src/pl/plpython/expected/plpython_error_0.out +++ b/src/pl/plpython/expected/plpython_error_0.out @@ -351,6 +351,28 @@ CONTEXT: PL/Python function "specific_exception" (1 row) +/* SPI errors in PL/Python functions should preserve the SQLSTATE value + */ +CREATE FUNCTION python_unique_violation() RETURNS void AS $$ +plpy.execute("insert into specific values (1)") +plpy.execute("insert into specific values (1)") +$$ LANGUAGE plpythonu; +CREATE FUNCTION catch_python_unique_violation() RETURNS text AS $$ +begin + begin + perform python_unique_violation(); + exception when unique_violation then + return 'ok'; + end; + return 'not reached'; +end; +$$ language plpgsql; +SELECT catch_python_unique_violation(); + catch_python_unique_violation +------------------------------- + ok +(1 row) + /* manually starting subtransactions - a bad idea */ CREATE FUNCTION manual_subxact() RETURNS void AS $$ diff --git a/src/pl/plpython/expected/plpython_record.out b/src/pl/plpython/expected/plpython_record.out index 7c600896ec..458330713a 100644 --- a/src/pl/plpython/expected/plpython_record.out +++ b/src/pl/plpython/expected/plpython_record.out @@ -38,6 +38,8 @@ elif typ == 'obj': type_record.first = first type_record.second = second return type_record +elif typ == 'str': + return "('%s',%r)" % (first, second) $$ LANGUAGE plpythonu; CREATE FUNCTION test_in_out_params(first in text, second out text) AS $$ return first + '_in_to_out'; @@ -290,6 +292,12 @@ SELECT * FROM test_type_record_as('obj', null, null, true); | (1 row) +SELECT * FROM test_type_record_as('str', 'one', 1, false); + first | second +-------+-------- + 'one' | 1 +(1 row) + SELECT * FROM test_in_out_params('test_in'); second ------------------- @@ -308,6 +316,27 @@ SELECT * FROM test_inout_params('test_in'); test_in_inout (1 row) +-- try changing the return types and call functions again +ALTER TABLE table_record DROP COLUMN first; +ALTER TABLE table_record DROP COLUMN second; +ALTER TABLE table_record ADD COLUMN first text; +ALTER TABLE table_record ADD COLUMN second int4; +SELECT * FROM test_table_record_as('obj', 'one', 1, false); + first | second +-------+-------- + one | 1 +(1 row) + +ALTER TYPE type_record DROP ATTRIBUTE first; +ALTER TYPE type_record DROP ATTRIBUTE second; +ALTER TYPE type_record ADD ATTRIBUTE first text; +ALTER TYPE type_record ADD ATTRIBUTE second int4; +SELECT * FROM test_type_record_as('obj', 'one', 1, false); + first | second +-------+-------- + one | 1 +(1 row) + -- errors cases CREATE FUNCTION test_type_record_error1() RETURNS type_record AS $$ return { 'first': 'first' } @@ -334,3 +363,11 @@ ERROR: attribute "second" does not exist in Python object HINT: To return null in a column, let the returned object have an attribute named after column with value None. CONTEXT: while creating return value PL/Python function "test_type_record_error3" +CREATE FUNCTION test_type_record_error4() RETURNS type_record AS $$ + return 'foo' +$$ LANGUAGE plpythonu; +SELECT * FROM test_type_record_error4(); +ERROR: malformed record literal: "foo" +DETAIL: Missing left parenthesis. +CONTEXT: while creating return value +PL/Python function "test_type_record_error4" diff --git a/src/pl/plpython/expected/plpython_trigger.out b/src/pl/plpython/expected/plpython_trigger.out index 2ef66a8f06..e0551ebc53 100644 --- a/src/pl/plpython/expected/plpython_trigger.out +++ b/src/pl/plpython/expected/plpython_trigger.out @@ -567,3 +567,64 @@ SELECT * FROM composite_trigger_test; (3,f) | (7,t) (1 row) +-- triggers with composite type columns (bug #6559) +CREATE TABLE composite_trigger_noop_test (f1 comp1, f2 comp2); +CREATE FUNCTION composite_trigger_noop_f() RETURNS trigger AS $$ + return 'MODIFY' +$$ LANGUAGE plpythonu; +CREATE TRIGGER composite_trigger_noop BEFORE INSERT ON composite_trigger_noop_test + FOR EACH ROW EXECUTE PROCEDURE composite_trigger_noop_f(); +INSERT INTO composite_trigger_noop_test VALUES (NULL, NULL); +INSERT INTO composite_trigger_noop_test VALUES (ROW(1, 'f'), NULL); +INSERT INTO composite_trigger_noop_test VALUES (ROW(NULL, 't'), ROW(1, 'f')); +SELECT * FROM composite_trigger_noop_test; + f1 | f2 +-------+------- + | + (1,f) | + (,t) | (1,f) +(3 rows) + +-- nested composite types +CREATE TYPE comp3 AS (c1 comp1, c2 comp2, m integer); +CREATE TABLE composite_trigger_nested_test(c comp3); +CREATE FUNCTION composite_trigger_nested_f() RETURNS trigger AS $$ + return 'MODIFY' +$$ LANGUAGE plpythonu; +CREATE TRIGGER composite_trigger_nested BEFORE INSERT ON composite_trigger_nested_test + FOR EACH ROW EXECUTE PROCEDURE composite_trigger_nested_f(); +INSERT INTO composite_trigger_nested_test VALUES (NULL); +INSERT INTO composite_trigger_nested_test VALUES (ROW(ROW(1, 'f'), NULL, 3)); +INSERT INTO composite_trigger_nested_test VALUES (ROW(ROW(NULL, 't'), ROW(1, 'f'), NULL)); +SELECT * FROM composite_trigger_nested_test; + c +------------------- + + ("(1,f)",,3) + ("(,t)","(1,f)",) +(3 rows) + +-- check that using a function as a trigger over two tables works correctly +CREATE FUNCTION trig1234() RETURNS trigger LANGUAGE plpythonu AS $$ + TD["new"]["data"] = '1234' + return 'MODIFY' +$$; +CREATE TABLE a(data text); +CREATE TABLE b(data int); -- different type conversion +CREATE TRIGGER a_t BEFORE INSERT ON a FOR EACH ROW EXECUTE PROCEDURE trig1234(); +CREATE TRIGGER b_t BEFORE INSERT ON b FOR EACH ROW EXECUTE PROCEDURE trig1234(); +INSERT INTO a DEFAULT VALUES; +SELECT * FROM a; + data +------ + 1234 +(1 row) + +DROP TABLE a; +INSERT INTO b DEFAULT VALUES; +SELECT * FROM b; + data +------ + 1234 +(1 row) + diff --git a/src/pl/plpython/expected/plpython_unicode_3.out b/src/pl/plpython/expected/plpython_unicode_3.out deleted file mode 100644 index 52d0aa0b1e..0000000000 --- a/src/pl/plpython/expected/plpython_unicode_3.out +++ /dev/null @@ -1,54 +0,0 @@ --- --- Unicode handling --- -SET client_encoding TO UTF8; -CREATE TABLE unicode_test ( - testvalue text NOT NULL -); -CREATE FUNCTION unicode_return() RETURNS text AS E' -return u"\\x80" -' LANGUAGE plpythonu; -CREATE FUNCTION unicode_trigger() RETURNS trigger AS E' -TD["new"]["testvalue"] = u"\\x80" -return "MODIFY" -' LANGUAGE plpythonu; -CREATE TRIGGER unicode_test_bi BEFORE INSERT ON unicode_test - FOR EACH ROW EXECUTE PROCEDURE unicode_trigger(); -CREATE FUNCTION unicode_plan1() RETURNS text AS E' -plan = plpy.prepare("SELECT $1 AS testvalue", ["text"]) -rv = plpy.execute(plan, [u"\\x80"], 1) -return rv[0]["testvalue"] -' LANGUAGE plpythonu; -CREATE FUNCTION unicode_plan2() RETURNS text AS E' -plan = plpy.prepare("SELECT $1 || $2 AS testvalue", ["text", u"text"]) -rv = plpy.execute(plan, ["foo", "bar"], 1) -return rv[0]["testvalue"] -' LANGUAGE plpythonu; -SELECT unicode_return(); -ERROR: could not convert Python Unicode object to PostgreSQL server encoding -DETAIL: UnicodeEncodeError: 'ascii' codec can't encode character u'\x80' in position 0: ordinal not in range(128) -CONTEXT: while creating return value -PL/Python function "unicode_return" -INSERT INTO unicode_test (testvalue) VALUES ('test'); -ERROR: could not convert Python Unicode object to PostgreSQL server encoding -DETAIL: UnicodeEncodeError: 'ascii' codec can't encode character u'\x80' in position 0: ordinal not in range(128) -CONTEXT: while modifying trigger row -PL/Python function "unicode_trigger" -SELECT * FROM unicode_test; - testvalue ------------ -(0 rows) - -SELECT unicode_plan1(); -ERROR: spiexceptions.InternalError: could not convert Python Unicode object to PostgreSQL server encoding -DETAIL: UnicodeEncodeError: 'ascii' codec can't encode character u'\x80' in position 0: ordinal not in range(128) -CONTEXT: Traceback (most recent call last): - PL/Python function "unicode_plan1", line 3, in - rv = plpy.execute(plan, [u"\x80"], 1) -PL/Python function "unicode_plan1" -SELECT unicode_plan2(); - unicode_plan2 ---------------- - foobar -(1 row) - diff --git a/src/pl/plpython/nls.mk b/src/pl/plpython/nls.mk index 6d2716885d..e9e9a9d61c 100644 --- a/src/pl/plpython/nls.mk +++ b/src/pl/plpython/nls.mk @@ -1,5 +1,5 @@ # src/pl/plpython/nls.mk CATALOG_NAME := plpython -AVAIL_LANGUAGES := de es fr it ja pt_BR ro tr zh_CN zh_TW +AVAIL_LANGUAGES := cs de es fr it ja pl pt_BR ro ru tr zh_CN zh_TW GETTEXT_FILES := plpython.c GETTEXT_TRIGGERS:= errmsg errmsg_plural:1,2 errdetail errdetail_log errdetail_plural:1,2 errhint errcontext PLy_elog:2 PLy_exception_set:2 PLy_exception_set_plural:2,3 diff --git a/src/pl/plpython/plpython.c b/src/pl/plpython/plpython.c index 9081cffb49..7610031af1 100644 --- a/src/pl/plpython/plpython.c +++ b/src/pl/plpython/plpython.c @@ -228,10 +228,17 @@ typedef struct PLyProcedure } PLyProcedure; +/* the procedure cache key */ +typedef struct PLyProcedureKey +{ + Oid fn_oid; /* function OID */ + Oid fn_rel; /* triggered-on relation or InvalidOid */ +} PLyProcedureKey; + /* the procedure cache entry */ typedef struct PLyProcedureEntry { - Oid fn_oid; /* hash key */ + PLyProcedureKey key; /* hash key */ PLyProcedure *proc; } PLyProcedureEntry; @@ -343,7 +350,7 @@ static char *PLy_procedure_name(PLyProcedure *); static void PLy_elog(int, const char *,...) __attribute__((format(PG_PRINTF_ATTRIBUTE, 2, 3))); -static void PLy_get_spi_error_data(PyObject *exc, char **detail, char **hint, char **query, int *position); +static void PLy_get_spi_error_data(PyObject *exc, int *sqlerrcode, char **detail, char **hint, char **query, int *position); static void PLy_traceback(char **, char **, int *); static void *PLy_malloc(size_t); @@ -371,7 +378,7 @@ static HeapTuple PLy_modify_tuple(PLyProcedure *, PyObject *, static PyObject *PLy_procedure_call(PLyProcedure *, char *, PyObject *); -static PLyProcedure *PLy_procedure_get(Oid fn_oid, bool is_trigger); +static PLyProcedure *PLy_procedure_get(Oid fn_oid, Oid fn_rel, bool is_trigger); static PLyProcedure *PLy_procedure_create(HeapTuple procTup, Oid fn_oid, bool is_trigger); @@ -410,10 +417,11 @@ static Datum PLyObject_ToComposite(PLyObToDatum *, int32, PyObject *); static Datum PLyObject_ToDatum(PLyObToDatum *, int32, PyObject *); static Datum PLySequence_ToArray(PLyObToDatum *, int32, PyObject *); -static HeapTuple PLyObject_ToTuple(PLyTypeInfo *, TupleDesc, PyObject *); -static HeapTuple PLyMapping_ToTuple(PLyTypeInfo *, TupleDesc, PyObject *); -static HeapTuple PLySequence_ToTuple(PLyTypeInfo *, TupleDesc, PyObject *); -static HeapTuple PLyGenericObject_ToTuple(PLyTypeInfo *, TupleDesc, PyObject *); +static Datum PLyObject_ToCompositeDatum(PLyTypeInfo *, TupleDesc, PyObject *); +static Datum PLyString_ToComposite(PLyTypeInfo *, TupleDesc, PyObject *); +static Datum PLyMapping_ToComposite(PLyTypeInfo *, TupleDesc, PyObject *); +static Datum PLySequence_ToComposite(PLyTypeInfo *, TupleDesc, PyObject *); +static Datum PLyGenericObject_ToComposite(PLyTypeInfo *, TupleDesc, PyObject *); /* * Currently active plpython function @@ -426,7 +434,6 @@ static List *explicit_subtransactions = NIL; static PyObject *PLy_interp_globals = NULL; static PyObject *PLy_interp_safe_globals = NULL; static HTAB *PLy_procedure_cache = NULL; -static HTAB *PLy_trigger_cache = NULL; /* Python exceptions */ static PyObject *PLy_exc_error = NULL; @@ -512,6 +519,9 @@ plpython_validator(PG_FUNCTION_ARGS) Form_pg_proc procStruct; bool is_trigger; + if (!CheckFunctionValidatorAccess(fcinfo->flinfo->fn_oid, funcoid)) + PG_RETURN_VOID(); + if (!check_function_bodies) { PG_RETURN_VOID(); @@ -527,7 +537,8 @@ plpython_validator(PG_FUNCTION_ARGS) ReleaseSysCache(tuple); - PLy_procedure_get(funcoid, is_trigger); + /* We can't validate triggers against any particular table ... */ + PLy_procedure_get(funcoid, InvalidOid, is_trigger); PG_RETURN_VOID(); } @@ -553,20 +564,22 @@ plpython_call_handler(PG_FUNCTION_ARGS) PG_TRY(); { + Oid funcoid = fcinfo->flinfo->fn_oid; PLyProcedure *proc; if (CALLED_AS_TRIGGER(fcinfo)) { + Relation tgrel = ((TriggerData *) fcinfo->context)->tg_relation; HeapTuple trv; - proc = PLy_procedure_get(fcinfo->flinfo->fn_oid, true); + proc = PLy_procedure_get(funcoid, RelationGetRelid(tgrel), true); PLy_curr_procedure = proc; trv = PLy_trigger_handler(fcinfo, proc); retval = PointerGetDatum(trv); } else { - proc = PLy_procedure_get(fcinfo->flinfo->fn_oid, false); + proc = PLy_procedure_get(funcoid, InvalidOid, false); PLy_curr_procedure = proc; retval = PLy_function_handler(fcinfo, proc); } @@ -1213,7 +1226,6 @@ PLy_function_handler(FunctionCallInfo fcinfo, PLyProcedure *proc) else if (proc->result.is_rowtype >= 1) { TupleDesc desc; - HeapTuple tuple = NULL; /* make sure it's not an unnamed record */ Assert((proc->result.out.d.typoid == RECORDOID && @@ -1224,18 +1236,8 @@ PLy_function_handler(FunctionCallInfo fcinfo, PLyProcedure *proc) desc = lookup_rowtype_tupdesc(proc->result.out.d.typoid, proc->result.out.d.typmod); - tuple = PLyObject_ToTuple(&proc->result, desc, plrv); - - if (tuple != NULL) - { - fcinfo->isnull = false; - rv = HeapTupleGetDatum(tuple); - } - else - { - fcinfo->isnull = true; - rv = (Datum) NULL; - } + rv = PLyObject_ToCompositeDatum(&proc->result, desc, plrv); + fcinfo->isnull = (rv == (Datum) NULL); } else { @@ -1449,6 +1451,44 @@ PLy_function_delete_args(PLyProcedure *proc) PyDict_DelItemString(proc->globals, proc->argnames[i]); } +/* + * Check if our cached information about a datatype is still valid + */ +static bool +PLy_procedure_argument_valid(PLyTypeInfo *arg) +{ + HeapTuple relTup; + bool valid; + + /* Nothing to cache unless type is composite */ + if (arg->is_rowtype != 1) + return true; + + /* + * Zero typ_relid means that we got called on an output argument of a + * function returning a unnamed record type; the info for it can't change. + */ + if (!OidIsValid(arg->typ_relid)) + return true; + + /* Else we should have some cached data */ + Assert(TransactionIdIsValid(arg->typrel_xmin)); + Assert(ItemPointerIsValid(&arg->typrel_tid)); + + /* Get the pg_class tuple for the data type */ + relTup = SearchSysCache1(RELOID, ObjectIdGetDatum(arg->typ_relid)); + if (!HeapTupleIsValid(relTup)) + elog(ERROR, "cache lookup failed for relation %u", arg->typ_relid); + + /* If it has changed, the cached data is not valid */ + valid = (arg->typrel_xmin == HeapTupleHeaderGetXmin(relTup->t_data) && + ItemPointerEquals(&arg->typrel_tid, &relTup->t_self)); + + ReleaseSysCache(relTup); + + return valid; +} + /* * Decide whether a cached PLyProcedure struct is still valid */ @@ -1465,39 +1505,21 @@ PLy_procedure_valid(PLyProcedure *proc, HeapTuple procTup) ItemPointerEquals(&proc->fn_tid, &procTup->t_self))) return false; + /* Else check the input argument datatypes */ valid = true; - /* If there are composite input arguments, they might have changed */ for (i = 0; i < proc->nargs; i++) { - Oid relid; - HeapTuple relTup; + valid = PLy_procedure_argument_valid(&proc->args[i]); /* Short-circuit on first changed argument */ if (!valid) break; - - /* Only check input arguments that are composite */ - if (proc->args[i].is_rowtype != 1) - continue; - - Assert(OidIsValid(proc->args[i].typ_relid)); - Assert(TransactionIdIsValid(proc->args[i].typrel_xmin)); - Assert(ItemPointerIsValid(&proc->args[i].typrel_tid)); - - /* Get the pg_class tuple for the argument type */ - relid = proc->args[i].typ_relid; - relTup = SearchSysCache1(RELOID, ObjectIdGetDatum(relid)); - if (!HeapTupleIsValid(relTup)) - elog(ERROR, "cache lookup failed for relation %u", relid); - - /* If it has changed, the function is not valid */ - if (!(proc->args[i].typrel_xmin == HeapTupleHeaderGetXmin(relTup->t_data) && - ItemPointerEquals(&proc->args[i].typrel_tid, &relTup->t_self))) - valid = false; - - ReleaseSysCache(relTup); } + /* if the output type is composite, it might have changed */ + if (valid) + valid = PLy_procedure_argument_valid(&proc->result); + return valid; } @@ -1506,62 +1528,76 @@ PLy_procedure_valid(PLyProcedure *proc, HeapTuple procTup) * PLyProcedure functions */ -/* PLy_procedure_get: returns a cached PLyProcedure, or creates, stores and - * returns a new PLyProcedure. fcinfo is the call info, tgreloid is the - * relation OID when calling a trigger, or InvalidOid (zero) for ordinary - * function calls. +/* + * PLy_procedure_get: returns a cached PLyProcedure, or creates, stores and + * returns a new PLyProcedure. + * + * fn_oid is the OID of the function requested + * fn_rel is InvalidOid or the relation this function triggers on + * is_trigger denotes whether the function is a trigger function + * + * The reason that both fn_rel and is_trigger need to be passed is that when + * trigger functions get validated we don't know which relation(s) they'll + * be used with, so no sensible fn_rel can be passed. */ static PLyProcedure * -PLy_procedure_get(Oid fn_oid, bool is_trigger) +PLy_procedure_get(Oid fn_oid, Oid fn_rel, bool is_trigger) { + bool use_cache = !(is_trigger && fn_rel == InvalidOid); HeapTuple procTup; - PLyProcedureEntry *volatile entry; - bool found; + PLyProcedureKey key; + PLyProcedureEntry *volatile entry = NULL; + PLyProcedure *volatile proc = NULL; + bool found = false; procTup = SearchSysCache1(PROCOID, ObjectIdGetDatum(fn_oid)); if (!HeapTupleIsValid(procTup)) elog(ERROR, "cache lookup failed for function %u", fn_oid); - /* Look for the function in the corresponding cache */ - if (is_trigger) - entry = hash_search(PLy_trigger_cache, - &fn_oid, HASH_ENTER, &found); - else - entry = hash_search(PLy_procedure_cache, - &fn_oid, HASH_ENTER, &found); + /* + * Look for the function in the cache, unless we don't have the necessary + * information (e.g. during validation). In that case we just don't cache + * anything. + */ + if (use_cache) + { + key.fn_oid = fn_oid; + key.fn_rel = fn_rel; + entry = hash_search(PLy_procedure_cache, &key, HASH_ENTER, &found); + proc = entry->proc; + } PG_TRY(); { if (!found) { - /* Haven't found it, create a new cache entry */ - entry->proc = PLy_procedure_create(procTup, fn_oid, is_trigger); + /* Haven't found it, create a new procedure */ + proc = PLy_procedure_create(procTup, fn_oid, is_trigger); + if (use_cache) + entry->proc = proc; } - else if (!PLy_procedure_valid(entry->proc, procTup)) + else if (!PLy_procedure_valid(proc, procTup)) { /* Found it, but it's invalid, free and reuse the cache entry */ - PLy_procedure_delete(entry->proc); - PLy_free(entry->proc); - entry->proc = PLy_procedure_create(procTup, fn_oid, is_trigger); + PLy_procedure_delete(proc); + PLy_free(proc); + proc = PLy_procedure_create(procTup, fn_oid, is_trigger); + entry->proc = proc; } /* Found it and it's valid, it's fine to use it */ } PG_CATCH(); { /* Do not leave an uninitialised entry in the cache */ - if (is_trigger) - hash_search(PLy_trigger_cache, - &fn_oid, HASH_REMOVE, NULL); - else - hash_search(PLy_procedure_cache, - &fn_oid, HASH_REMOVE, NULL); + if (use_cache) + hash_search(PLy_procedure_cache, &key, HASH_REMOVE, NULL); PG_RE_THROW(); } PG_END_TRY(); ReleaseSysCache(procTup); - return entry->proc; + return proc; } /* @@ -1661,10 +1697,9 @@ PLy_procedure_create(HeapTuple procTup, Oid fn_oid, bool is_trigger) /* * Now get information required for input conversion of the - * procedure's arguments. Note that we ignore output arguments here - * --- since we don't support returning record, and that was already - * checked above, there's no need to worry about multiple output - * arguments. + * procedure's arguments. Note that we ignore output arguments here. + * If the function returns record, those I/O functions will be set up + * when the function is first called. */ if (procStruct->pronargs) { @@ -1926,7 +1961,7 @@ PLy_input_tuple_funcs(PLyTypeInfo *arg, TupleDesc desc) * RECORDOID means we got called to create input functions for a tuple * fetched by plpy.execute or for an anonymous record type */ - if (desc->tdtypeid != RECORDOID && !TransactionIdIsValid(arg->typrel_xmin)) + if (desc->tdtypeid != RECORDOID) { HeapTuple relTup; @@ -1936,7 +1971,7 @@ PLy_input_tuple_funcs(PLyTypeInfo *arg, TupleDesc desc) if (!HeapTupleIsValid(relTup)) elog(ERROR, "cache lookup failed for relation %u", arg->typ_relid); - /* Extract the XMIN value to later use it in PLy_procedure_valid */ + /* Remember XMIN and TID for later validation if cache is still OK */ arg->typrel_xmin = HeapTupleHeaderGetXmin(relTup->t_data); arg->typrel_tid = relTup->t_self; @@ -2010,6 +2045,29 @@ PLy_output_tuple_funcs(PLyTypeInfo *arg, TupleDesc desc) arg->out.r.atts = PLy_malloc0(desc->natts * sizeof(PLyDatumToOb)); } + Assert(OidIsValid(desc->tdtypeid)); + + /* + * RECORDOID means we got called to create output functions for an + * anonymous record type + */ + if (desc->tdtypeid != RECORDOID) + { + HeapTuple relTup; + + /* Get the pg_class tuple corresponding to the type of the output */ + arg->typ_relid = typeidTypeRelid(desc->tdtypeid); + relTup = SearchSysCache1(RELOID, ObjectIdGetDatum(arg->typ_relid)); + if (!HeapTupleIsValid(relTup)) + elog(ERROR, "cache lookup failed for relation %u", arg->typ_relid); + + /* Remember XMIN and TID for later validation if cache is still OK */ + arg->typrel_xmin = HeapTupleHeaderGetXmin(relTup->t_data); + arg->typrel_tid = relTup->t_self; + + ReleaseSysCache(relTup); + } + for (i = 0; i < desc->natts; i++) { HeapTuple typeTup; @@ -2303,6 +2361,8 @@ PLyList_FromArray(PLyDatumToOb *arg, Datum d) length = ARR_DIMS(array)[0]; lbound = ARR_LBOUND(array)[0]; list = PyList_New(length); + if (list == NULL) + PLy_elog(ERROR, "could not create new list"); for (i = 0; i < length; i++) { @@ -2375,26 +2435,28 @@ PLyDict_FromTuple(PLyTypeInfo *info, HeapTuple tuple, TupleDesc desc) } /* - * Convert a Python object to a PostgreSQL tuple, using all supported - * conversion methods: tuple as a sequence, as a mapping or as an object that - * has __getattr__ support. + * Convert a Python object to a composite Datum, using all supported + * conversion methods: composite as a string, as a sequence, as a mapping or + * as an object that has __getattr__ support. */ -static HeapTuple -PLyObject_ToTuple(PLyTypeInfo *info, TupleDesc desc, PyObject *plrv) +static Datum +PLyObject_ToCompositeDatum(PLyTypeInfo *info, TupleDesc desc, PyObject *plrv) { - HeapTuple tuple; + Datum datum; - if (PySequence_Check(plrv)) + if (PyString_Check(plrv) || PyUnicode_Check(plrv)) + datum = PLyString_ToComposite(info, desc, plrv); + else if (PySequence_Check(plrv)) /* composite type as sequence (tuple, list etc) */ - tuple = PLySequence_ToTuple(info, desc, plrv); + datum = PLySequence_ToComposite(info, desc, plrv); else if (PyMapping_Check(plrv)) /* composite type as mapping (currently only dict) */ - tuple = PLyMapping_ToTuple(info, desc, plrv); + datum = PLyMapping_ToComposite(info, desc, plrv); else /* returned as smth, must provide method __getattr__(name) */ - tuple = PLyGenericObject_ToTuple(info, desc, plrv); + datum = PLyGenericObject_ToComposite(info, desc, plrv); - return tuple; + return datum; } /* @@ -2469,7 +2531,6 @@ PLyObject_ToBytea(PLyObToDatum *arg, int32 typmod, PyObject *plrv) static Datum PLyObject_ToComposite(PLyObToDatum *arg, int32 typmod, PyObject *plrv) { - HeapTuple tuple = NULL; Datum rv; PLyTypeInfo info; TupleDesc desc; @@ -2491,15 +2552,10 @@ PLyObject_ToComposite(PLyObToDatum *arg, int32 typmod, PyObject *plrv) * that info instead of looking it up every time a tuple is returned from * the function. */ - tuple = PLyObject_ToTuple(&info, desc, plrv); + rv = PLyObject_ToCompositeDatum(&info, desc, plrv); PLy_typeinfo_dealloc(&info); - if (tuple != NULL) - rv = HeapTupleGetDatum(tuple); - else - rv = (Datum) NULL; - return rv; } @@ -2606,8 +2662,28 @@ PLySequence_ToArray(PLyObToDatum *arg, int32 typmod, PyObject *plrv) return PointerGetDatum(array); } -static HeapTuple -PLyMapping_ToTuple(PLyTypeInfo *info, TupleDesc desc, PyObject *mapping) + +static Datum +PLyString_ToComposite(PLyTypeInfo *info, TupleDesc desc, PyObject *string) +{ + HeapTuple typeTup; + + typeTup = SearchSysCache1(TYPEOID, ObjectIdGetDatum(desc->tdtypeid)); + if (!HeapTupleIsValid(typeTup)) + elog(ERROR, "cache lookup failed for type %u", desc->tdtypeid); + + PLy_output_datum_func2(&info->out.d, typeTup); + + ReleaseSysCache(typeTup); + ReleaseTupleDesc(desc); + + return PLyObject_ToDatum(&info->out.d, info->out.d.typmod, string); +} + + + +static Datum +PLyMapping_ToComposite(PLyTypeInfo *info, TupleDesc desc, PyObject *mapping) { HeapTuple tuple; Datum *values; @@ -2630,7 +2706,11 @@ PLyMapping_ToTuple(PLyTypeInfo *info, TupleDesc desc, PyObject *mapping) PLyObToDatum *att; if (desc->attrs[i]->attisdropped) + { + values[i] = (Datum) 0; + nulls[i] = true; continue; + } key = NameStr(desc->attrs[i]->attname); value = NULL; @@ -2671,12 +2751,12 @@ PLyMapping_ToTuple(PLyTypeInfo *info, TupleDesc desc, PyObject *mapping) pfree(values); pfree(nulls); - return tuple; + return HeapTupleGetDatum(tuple); } -static HeapTuple -PLySequence_ToTuple(PLyTypeInfo *info, TupleDesc desc, PyObject *sequence) +static Datum +PLySequence_ToComposite(PLyTypeInfo *info, TupleDesc desc, PyObject *sequence) { HeapTuple tuple; Datum *values; @@ -2716,7 +2796,11 @@ PLySequence_ToTuple(PLyTypeInfo *info, TupleDesc desc, PyObject *sequence) PLyObToDatum *att; if (desc->attrs[i]->attisdropped) + { + values[i] = (Datum) 0; + nulls[i] = true; continue; + } value = NULL; att = &info->out.r.atts[i]; @@ -2753,12 +2837,12 @@ PLySequence_ToTuple(PLyTypeInfo *info, TupleDesc desc, PyObject *sequence) pfree(values); pfree(nulls); - return tuple; + return HeapTupleGetDatum(tuple); } -static HeapTuple -PLyGenericObject_ToTuple(PLyTypeInfo *info, TupleDesc desc, PyObject *object) +static Datum +PLyGenericObject_ToComposite(PLyTypeInfo *info, TupleDesc desc, PyObject *object) { HeapTuple tuple; Datum *values; @@ -2779,7 +2863,11 @@ PLyGenericObject_ToTuple(PLyTypeInfo *info, TupleDesc desc, PyObject *object) PLyObToDatum *att; if (desc->attrs[i]->attisdropped) + { + values[i] = (Datum) 0; + nulls[i] = true; continue; + } key = NameStr(desc->attrs[i]->attname); value = NULL; @@ -2821,7 +2909,7 @@ PLyGenericObject_ToTuple(PLyTypeInfo *info, TupleDesc desc, PyObject *object) pfree(values); pfree(nulls); - return tuple; + return HeapTupleGetDatum(tuple); } @@ -3610,7 +3698,7 @@ PLy_spi_execute_query(char *query, long limit) int rv; volatile MemoryContext oldcontext; volatile ResourceOwner oldowner; - PyObject *ret; + PyObject *ret = NULL; oldcontext = CurrentMemoryContext; oldowner = CurrentResourceOwner; @@ -3673,6 +3761,7 @@ PLy_spi_execute_query(char *query, long limit) if (rv < 0) { + Py_XDECREF(ret); PLy_exception_set(PLy_exc_spi_error, "SPI_execute failed: %s", SPI_result_code_string(rv)); @@ -3913,7 +4002,13 @@ PLy_generate_spi_exceptions(PyObject *mod, PyObject *base) PyObject *sqlstate; PyObject *dict = PyDict_New(); + if (dict == NULL) + PLy_elog(ERROR, "could not generate SPI exceptions"); + sqlstate = PyString_FromString(unpack_sql_state(exception_map[i].sqlstate)); + if (sqlstate == NULL) + PLy_elog(ERROR, "could not generate SPI exceptions"); + PyDict_SetItemString(dict, "sqlstate", sqlstate); Py_DECREF(sqlstate); exc = PyErr_NewException(exception_map[i].name, base, dict); @@ -3954,6 +4049,11 @@ PLy_add_exceptions(PyObject *plpy) PLy_exc_fatal = PyErr_NewException("plpy.Fatal", NULL, NULL); PLy_exc_spi_error = PyErr_NewException("plpy.SPIError", NULL, NULL); + if (PLy_exc_error == NULL || + PLy_exc_fatal == NULL || + PLy_exc_spi_error == NULL) + PLy_elog(ERROR, "could not create the base SPI exceptions"); + Py_INCREF(PLy_exc_error); PyModule_AddObject(plpy, "Error", PLy_exc_error); Py_INCREF(PLy_exc_fatal); @@ -3972,7 +4072,13 @@ PLy_add_exceptions(PyObject *plpy) } #if PY_MAJOR_VERSION >= 3 -static PyMODINIT_FUNC +/* + * Must have external linkage, because PyMODINIT_FUNC does dllexport on + * Windows-like platforms. + */ +PyMODINIT_FUNC PyInit_plpy(void); + +PyMODINIT_FUNC PyInit_plpy(void) { PyObject *m; @@ -4035,19 +4141,12 @@ _PG_init(void) PLy_elog(FATAL, "untrapped error in initialization"); memset(&hash_ctl, 0, sizeof(hash_ctl)); - hash_ctl.keysize = sizeof(Oid); + hash_ctl.keysize = sizeof(PLyProcedureKey); hash_ctl.entrysize = sizeof(PLyProcedureEntry); - hash_ctl.hash = oid_hash; + hash_ctl.hash = tag_hash; PLy_procedure_cache = hash_create("PL/Python procedures", 32, &hash_ctl, HASH_ELEM | HASH_FUNCTION); - memset(&hash_ctl, 0, sizeof(hash_ctl)); - hash_ctl.keysize = sizeof(Oid); - hash_ctl.entrysize = sizeof(PLyProcedureEntry); - hash_ctl.hash = oid_hash; - PLy_trigger_cache = hash_create("PL/Python triggers", 32, &hash_ctl, - HASH_ELEM | HASH_FUNCTION); - explicit_subtransactions = NIL; inited = true; @@ -4064,6 +4163,8 @@ PLy_init_interp(void) Py_INCREF(mainmod); PLy_interp_globals = PyModule_GetDict(mainmod); PLy_interp_safe_globals = PyDict_New(); + if (PLy_interp_safe_globals == NULL) + PLy_elog(ERROR, "could not create globals"); PyDict_SetItemString(PLy_interp_globals, "GD", PLy_interp_safe_globals); Py_DECREF(mainmod); if (PLy_interp_globals == NULL || PyErr_Occurred()) @@ -4104,9 +4205,11 @@ PLy_init_plpy(void) main_mod = PyImport_AddModule("__main__"); main_dict = PyModule_GetDict(main_mod); plpy_mod = PyImport_AddModule("plpy"); + if (plpy_mod == NULL) + PLy_elog(ERROR, "could not import \"plpy\" module"); PyDict_SetItemString(main_dict, "plpy", plpy_mod); if (PyErr_Occurred()) - elog(ERROR, "could not initialize plpy"); + PLy_elog(ERROR, "could not import \"plpy\" module"); } /* the python interface to the elog function @@ -4172,7 +4275,8 @@ PLy_output(volatile int level, PyObject *self, PyObject *args) */ PyObject *o; - PyArg_UnpackTuple(args, "plpy.elog", 1, 1, &o); + if (!PyArg_UnpackTuple(args, "plpy.elog", 1, 1, &o)) + PLy_elog(ERROR, "could not unpack arguments in plpy.elog"); so = PyObject_Str(o); } else @@ -4344,7 +4448,7 @@ PLy_spi_exception_set(PyObject *excclass, ErrorData *edata) if (!spierror) goto failure; - spidata = Py_BuildValue("(zzzi)", edata->detail, edata->hint, + spidata = Py_BuildValue("(izzzi)", edata->sqlerrcode, edata->detail, edata->hint, edata->internalquery, edata->internalpos); if (!spidata) goto failure; @@ -4384,6 +4488,7 @@ PLy_elog(int elevel, const char *fmt,...) *val, *tb; const char *primary = NULL; + int sqlerrcode = 0; char *detail = NULL; char *hint = NULL; char *query = NULL; @@ -4393,7 +4498,7 @@ PLy_elog(int elevel, const char *fmt,...) if (exc != NULL) { if (PyErr_GivenExceptionMatches(val, PLy_exc_spi_error)) - PLy_get_spi_error_data(val, &detail, &hint, &query, &position); + PLy_get_spi_error_data(val, &sqlerrcode, &detail, &hint, &query, &position); else if (PyErr_GivenExceptionMatches(val, PLy_exc_fatal)) elevel = FATAL; } @@ -4434,8 +4539,9 @@ PLy_elog(int elevel, const char *fmt,...) PG_TRY(); { ereport(elevel, - (errmsg("%s", primary ? primary : "no exception data"), - (detail) ? errdetail("%s", detail) : 0, + (errcode(sqlerrcode ? sqlerrcode : ERRCODE_INTERNAL_ERROR), + errmsg_internal("%s", primary ? primary : "no exception data"), + (detail) ? errdetail_internal("%s", detail) : 0, (tb_depth > 0 && tbmsg) ? errcontext("%s", tbmsg) : 0, (hint) ? errhint("%s", hint) : 0, (query) ? internalerrquery(query) : 0, @@ -4465,7 +4571,7 @@ PLy_elog(int elevel, const char *fmt,...) * Extract the error data from a SPIError */ static void -PLy_get_spi_error_data(PyObject *exc, char **detail, char **hint, char **query, int *position) +PLy_get_spi_error_data(PyObject *exc, int* sqlerrcode, char **detail, char **hint, char **query, int *position) { PyObject *spidata = NULL; @@ -4473,7 +4579,7 @@ PLy_get_spi_error_data(PyObject *exc, char **detail, char **hint, char **query, if (!spidata) goto cleanup; - if (!PyArg_ParseTuple(spidata, "zzzi", detail, hint, query, position)) + if (!PyArg_ParseTuple(spidata, "izzzi", sqlerrcode, detail, hint, query, position)) goto cleanup; cleanup: @@ -4492,6 +4598,10 @@ get_source_line(const char *src, int lineno) const char *next = src; int current = 0; + /* sanity check */ + if (lineno <= 0) + return NULL; + while (current < lineno) { s = next; @@ -4778,20 +4888,56 @@ PLy_free(void *ptr) static PyObject * PLyUnicode_Bytes(PyObject *unicode) { - PyObject *rv; - const char *serverenc; + PyObject *bytes, *rv; + char *utf8string, *encoded; + + /* First encode the Python unicode object with UTF-8. */ + bytes = PyUnicode_AsUTF8String(unicode); + if (bytes == NULL) + PLy_elog(ERROR, "could not convert Python Unicode object to bytes"); + + utf8string = PyBytes_AsString(bytes); + if (utf8string == NULL) { + Py_DECREF(bytes); + PLy_elog(ERROR, "could not extract bytes from encoded string"); + } /* - * Python understands almost all PostgreSQL encoding names, but it doesn't - * know SQL_ASCII. + * Then convert to server encoding if necessary. + * + * PyUnicode_AsEncodedString could be used to encode the object directly + * in the server encoding, but Python doesn't support all the encodings + * that PostgreSQL does (EUC_TW and MULE_INTERNAL). UTF-8 is used as an + * intermediary in PLyUnicode_FromString as well. */ - if (GetDatabaseEncoding() == PG_SQL_ASCII) - serverenc = "ascii"; + if (GetDatabaseEncoding() != PG_UTF8) + { + PG_TRY(); + { + encoded = (char *) pg_do_encoding_conversion( + (unsigned char *) utf8string, + strlen(utf8string), + PG_UTF8, + GetDatabaseEncoding()); + } + PG_CATCH(); + { + Py_DECREF(bytes); + PG_RE_THROW(); + } + PG_END_TRY(); + } else - serverenc = GetDatabaseEncodingName(); - rv = PyUnicode_AsEncodedString(unicode, serverenc, "strict"); - if (rv == NULL) - PLy_elog(ERROR, "could not convert Python Unicode object to PostgreSQL server encoding"); + encoded = utf8string; + + /* finally, build a bytes object in the server encoding */ + rv = PyBytes_FromStringAndSize(encoded, strlen(encoded)); + + /* if pg_do_encoding_conversion allocated memory, free it now */ + if (utf8string != encoded) + pfree(encoded); + + Py_DECREF(bytes); return rv; } @@ -4869,6 +5015,7 @@ PG_FUNCTION_INFO_V1(plpython2_validator); Datum plpython2_validator(PG_FUNCTION_ARGS) { + /* call plpython validator with our fcinfo so it gets our oid */ return plpython_validator(fcinfo); } diff --git a/src/pl/plpython/plpython2u--1.0.sql b/src/pl/plpython/plpython2u--1.0.sql index 0e47876502..e3a12b952e 100644 --- a/src/pl/plpython/plpython2u--1.0.sql +++ b/src/pl/plpython/plpython2u--1.0.sql @@ -7,3 +7,5 @@ */ CREATE PROCEDURAL LANGUAGE plpython2u; + +COMMENT ON PROCEDURAL LANGUAGE plpython2u IS 'PL/Python2U untrusted procedural language'; diff --git a/src/pl/plpython/plpython3u--1.0.sql b/src/pl/plpython/plpython3u--1.0.sql index d5c6e5ab96..cd1fb636a0 100644 --- a/src/pl/plpython/plpython3u--1.0.sql +++ b/src/pl/plpython/plpython3u--1.0.sql @@ -7,3 +7,5 @@ */ CREATE PROCEDURAL LANGUAGE plpython3u; + +COMMENT ON PROCEDURAL LANGUAGE plpython3u IS 'PL/Python3U untrusted procedural language'; diff --git a/src/pl/plpython/plpythonu--1.0.sql b/src/pl/plpython/plpythonu--1.0.sql index beb0aa1645..61d3d554c9 100644 --- a/src/pl/plpython/plpythonu--1.0.sql +++ b/src/pl/plpython/plpythonu--1.0.sql @@ -7,3 +7,5 @@ */ CREATE PROCEDURAL LANGUAGE plpythonu; + +COMMENT ON PROCEDURAL LANGUAGE plpythonu IS 'PL/PythonU untrusted procedural language'; diff --git a/src/pl/plpython/po/cs.po b/src/pl/plpython/po/cs.po new file mode 100644 index 0000000000..ce916b7fbc --- /dev/null +++ b/src/pl/plpython/po/cs.po @@ -0,0 +1,393 @@ +# Czech message translation file for plpython +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# +# Tomas Vondra , 2011, 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: plpython-cs (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2013-03-17 12:02+0000\n" +"PO-Revision-Date: 2013-04-28 19:11+0200\n" +"Last-Translator: Tomas Vondra \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Lokalize 1.5\n" + +#: plpython.c:482 +#, c-format +msgid "PL/Python function \"%s\"" +msgstr "PL/Python funkce \"%s\"" + +#: plpython.c:489 +msgid "PL/Python anonymous code block" +msgstr "PL/Python anonymní blok kódu" + +#: plpython.c:496 +msgid "while modifying trigger row" +msgstr "během modifikace řádku triggeru" + +#: plpython.c:503 +msgid "while creating return value" +msgstr "během vytváření návratové hodnoty" + +#: plpython.c:717 plpython.c:743 +msgid "unexpected return value from trigger procedure" +msgstr "neočekávaná návratová hodnota z trigger procedury" + +#: plpython.c:718 +msgid "Expected None or a string." +msgstr "Očekáváno None nebo řetězec." + +#: plpython.c:733 +msgid "" +"PL/Python trigger function returned \"MODIFY\" in a DELETE trigger -- ignored" +msgstr "" +"PL/Python trigger funkce vrátila \"MODIFY\" v DELETE triggeru -- ignorováno" + +#: plpython.c:744 +msgid "Expected None, \"OK\", \"SKIP\", or \"MODIFY\"." +msgstr "Očekáváno None, \"OK\", \"SKIP\", nebo \"MODIFY\"." + +#: plpython.c:796 +msgid "TD[\"new\"] deleted, cannot modify row" +msgstr "TD[\"new\"] smazáno, nelze modifikovat řádek" + +#: plpython.c:799 +msgid "TD[\"new\"] is not a dictionary" +msgstr "TD[\"new\"] není slovník" + +#: plpython.c:823 +#, c-format +msgid "TD[\"new\"] dictionary key at ordinal position %d is not a string" +msgstr "TD[\"new\"] klíč slovníku na pozici %d není řetězec" + +#: plpython.c:829 +#, c-format +msgid "" +"key \"%s\" found in TD[\"new\"] does not exist as a column in the triggering " +"row" +msgstr "" +"klíč \"%s\" nalezený v TD[\"new\"] neexistuje jako sloupec v triggering řádku" + +#: plpython.c:925 +msgid "could not create new dictionary while building trigger arguments" +msgstr "během vytváření argumentů triggeru nelze vytvářet nový slovník" + +#: plpython.c:1132 +msgid "unsupported set function return mode" +msgstr "nepodporovaný návratový mód funkce vracející tabulku" + +#: plpython.c:1133 +msgid "" +"PL/Python set-returning functions only support returning only value per call." +msgstr "" +"PL/Python funkce vracející tabulku podporují pouze vracení hodnoty pro každé " +"volání." + +#: plpython.c:1145 +msgid "returned object cannot be iterated" +msgstr "přes vrácený objekt nelze iterovat" + +#: plpython.c:1146 +msgid "PL/Python set-returning functions must return an iterable object." +msgstr "PL/Python funkce vracející tabulku musí vracet iterovatelný objekt." + +#: plpython.c:1171 +msgid "error fetching next item from iterator" +msgstr "chyba při načítání další položky z iterátoru" + +#: plpython.c:1206 +msgid "PL/Python function with return type \"void\" did not return None" +msgstr "" +"PL/Python funkce s návratovým typem \"void\" nevrátila hodnotu \"None\"" + +#: plpython.c:1286 +msgid "forcibly aborting a subtransaction that has not been exited" +msgstr "vynucené ukončení subtransakce která nebyla dokončena" + +#: plpython.c:1402 +msgid "PyList_SetItem() failed, while setting up arguments" +msgstr "volání PyList_SetItem() selhalo během vytváření argumentů" + +#: plpython.c:1406 +msgid "PyDict_SetItemString() failed, while setting up arguments" +msgstr "volání PyDict_SetItemString() selhalo během přípravy argumentů" + +#: plpython.c:1418 +msgid "" +"function returning record called in context that cannot accept type record" +msgstr "" +"funkce vracející záznam byla volána v kontextu který neumožňuje příjem " +"záznamů" + +#: plpython.c:1666 +msgid "trigger functions can only be called as triggers" +msgstr "" +"funkce pro obsluhu triggerů mohou být volané pouze prostřednictvím triggerů" + +#: plpython.c:1671 plpython.c:2144 +#, c-format +msgid "PL/Python functions cannot return type %s" +msgstr "PL/Python funkce nemohou vracet typ %s" + +#: plpython.c:1753 +#, c-format +msgid "PL/Python functions cannot accept type %s" +msgstr "PL/Python funkce nepodporují typ %s" + +#: plpython.c:1849 +#, c-format +msgid "could not compile PL/Python function \"%s\"" +msgstr "nelze zkompiloval PL/Python funkci \"%s\"" + +#: plpython.c:1852 +msgid "could not compile anonymous PL/Python code block" +msgstr "nelze zkompiloval anonymní blok PL/Python kódu" + +#: plpython.c:2146 +msgid "PL/Python does not support conversion to arrays of row types." +msgstr "PL/Python nepodporuje konverzi na pole řádkových typů." + +#: plpython.c:2355 +msgid "cannot convert multidimensional array to Python list" +msgstr "vícerozměrné pole nelze převést na Python seznam (list)" + +#: plpython.c:2356 +msgid "PL/Python only supports one-dimensional arrays." +msgstr "PL/Python podporuje pouze jednorozměrná pole." + +#: plpython.c:2362 +msgid "could not create new list" +msgstr "nepodařilo se vytvořit nový seznam" + +#: plpython.c:2397 +msgid "could not create new dictionary" +msgstr "nepodařilo se vytvořit nový slovník" + +#: plpython.c:2494 +msgid "could not create bytes representation of Python object" +msgstr "nepodařilo se vytvořit bytovou reprezentaci Python objektu" + +#: plpython.c:2586 +msgid "could not create string representation of Python object" +msgstr "nepodařilo se vytvořit řetězcovou reprezentaci Python objektu" + +#: plpython.c:2597 +msgid "" +"could not convert Python object into cstring: Python string representation " +"appears to contain null bytes" +msgstr "" +"nepodařilo se převést Python objekt na cstring: zdá se že řetězcová " +"reprezentace Python objektu obsahuje null byty" + +#: plpython.c:2631 +msgid "" +"return value of function with array return type is not a Python sequence" +msgstr "" +"návratová hodnota funkce s návratovým typem pole není Python posloupnost " +"(sequence)" + +#: plpython.c:2731 +#, c-format +msgid "key \"%s\" not found in mapping" +msgstr "klíč \"%s\" nenalezen v mapování" + +#: plpython.c:2732 +msgid "" +"To return null in a column, add the value None to the mapping with the key " +"named after the column." +msgstr "" +"Pro vrácení hodnoty null ve sloupci, přidejte do mapování hodnotu None s " +"klíčem pojmenovaným jako sloupec." + +#: plpython.c:2780 +msgid "length of returned sequence did not match number of columns in row" +msgstr "délka vrácené posloupnosti neodpovídala počtu sloupců v řádku" + +#: plpython.c:2888 +#, c-format +msgid "attribute \"%s\" does not exist in Python object" +msgstr "atribut \"%s\" v Python objektu neexistuje" + +#: plpython.c:2889 +msgid "" +"To return null in a column, let the returned object have an attribute named " +"after column with value None." +msgstr "" +"Pro vrácení null ve sloupci, nechť vracený objekt má atribut pojmenovaný po " +"sloupcis hodnotou None." + +#: plpython.c:3208 +msgid "plan.status takes no arguments" +msgstr "plan.status nepřijímá žádné argumenty" + +#: plpython.c:3332 +msgid "second argument of plpy.prepare must be a sequence" +msgstr "druhý argument pro plpy.prepare musí být posloupnost" + +#: plpython.c:3382 +#, c-format +msgid "plpy.prepare: type name at ordinal position %d is not a string" +msgstr "plpy.prepare: název typu na pozici %d není řetězec" + +#: plpython.c:3414 +msgid "plpy.prepare does not support composite types" +msgstr "plpy.prepare nepodporuje složené typy" + +#: plpython.c:3504 +msgid "plpy.execute expected a query or a plan" +msgstr "plpy.execute očekávala dotaz nebo plán" + +#: plpython.c:3523 +msgid "plpy.execute takes a sequence as its second argument" +msgstr "plpy.execute jako druhý argument očekává posloupnost" + +#: plpython.c:3539 +msgid "could not execute plan" +msgstr "nelze spustit plán" + +#: plpython.c:3542 +#, c-format +msgid "Expected sequence of %d argument, got %d: %s" +msgid_plural "Expected sequence of %d arguments, got %d: %s" +msgstr[0] "Očekávaná posloupnost %d argumentu, přišlo %d: %s" +msgstr[1] "Očekávaná posloupnost %d argumentů, přišlo %d: %s" +msgstr[2] "Očekávaná posloupnost %d argumentů, přišlo %d: %s" + +#: plpython.c:3684 +#, c-format +msgid "SPI_execute_plan failed: %s" +msgstr "volání SPI_execute_plan selhalo: %s" + +#: plpython.c:3763 +#, c-format +msgid "SPI_execute failed: %s" +msgstr "volání SPI_execute selhalo: %s" + +#: plpython.c:3818 +msgid "unrecognized error in PLy_spi_execute_fetch_result" +msgstr "nerozpoznaná chyba v PLy_spi_execute_fetch_result" + +#: plpython.c:3880 +msgid "this subtransaction has already been entered" +msgstr "tato subtransakce již byla zahájena" + +#: plpython.c:3886 plpython.c:3938 +msgid "this subtransaction has already been exited" +msgstr "tato subtransakce již byla dokončena" + +#: plpython.c:3932 +msgid "this subtransaction has not been entered" +msgstr "tato subtransakce nebyla zahájena" + +#: plpython.c:3944 +msgid "there is no subtransaction to exit from" +msgstr "nenalezena subtransakce k ukončení" + +#: plpython.c:4003 plpython.c:4007 +msgid "could not generate SPI exceptions" +msgstr "nepodařilo se vygenerovat SPI výjimky" + +#: plpython.c:4032 +msgid "could not add the spiexceptions module" +msgstr "nepodařilo se naimportovat \"__main__\" modul" + +#: plpython.c:4052 +msgid "could not create the base SPI exceptions" +msgstr "nepodařilo se vygenerovat základní SPI výjimky" + +#: plpython.c:4120 +msgid "Python major version mismatch in session" +msgstr "Rozpor mezi hlavními verzemi Pythonu v session" + +#: plpython.c:4121 +#, c-format +msgid "" +"This session has previously used Python major version %d, and it is now " +"attempting to use Python major version %d." +msgstr "" +"Tato session již dříve používala Python s hlavní verzí %d, a nyní se pokouší " +"použít Python s hlavní verzí %d." + +#: plpython.c:4123 +msgid "Start a new session to use a different Python major version." +msgstr "Spouští se nová session pro použití jiné hlavní verze Pythonu." + +#: plpython.c:4138 +msgid "untrapped error in initialization" +msgstr "nezachycená chyba v inicializaci" + +#: plpython.c:4159 +msgid "could not import \"__main__\" module" +msgstr "nepodařilo se naimportovat \"__main__\" modul" + +#: plpython.c:4164 +msgid "could not create globals" +msgstr "nepodařilo se vytvořit globals" + +#: plpython.c:4168 +msgid "could not initialize globals" +msgstr "nepodařilo se inicializovat globální proměnné (globals)" + +#: plpython.c:4206 plpython.c:4209 +msgid "could not import \"plpy\" module" +msgstr "nepodařilo se naimportovat \"plpy\" modul" + +#: plpython.c:4276 +msgid "could not unpack arguments in plpy.elog" +msgstr "nepodařilo se rozbalit argumenty v plpy.elog" + +#: plpython.c:4284 +msgid "could not parse error message in plpy.elog" +msgstr "nepodařilo se naparsovat chybovou hlášku v plpy.elog" + +#: plpython.c:4308 plpython.c:4542 plpython.c:4543 +#, c-format +msgid "%s" +msgstr "%s" + +#: plpython.c:4894 +msgid "could not convert Python Unicode object to bytes" +msgstr "nelze převést Python Unicode objekt na byty" + +#: plpython.c:4899 +msgid "could not extract bytes from encoded string" +msgstr "nepodařilo se získat byty z kódovaného řetězce" + +#~ msgid "could not initialize plpy" +#~ msgstr "nepodařilo se inicializovat plpy" + +#~ msgid "PyCObject_AsVoidPtr() failed" +#~ msgstr "volání PyCObject_AsVoidPtr() selhalo" + +#~ msgid "PyCObject_FromVoidPtr() failed" +#~ msgstr "volání PyCObject_FromVoidPtr() selhalo" + +#~ msgid "transaction aborted" +#~ msgstr "transakce přerušena" + +#~ msgid "invalid arguments for plpy.prepare" +#~ msgstr "neplatné argumenty pro plpy.prepare" + +#~ msgid "unrecognized error in PLy_spi_prepare" +#~ msgstr "nerozpoznaná chyba v PLy_spi_prepare" + +#~ msgid "unrecognized error in PLy_spi_execute_plan" +#~ msgstr "nerozpoznaná chyba v PLy_spi_execute_plan" + +#~ msgid "unrecognized error in PLy_spi_execute_query" +#~ msgstr "nerozpoznaná chyba v PLy_spi_execute_query" + +#~ msgid "could not create procedure cache" +#~ msgstr "nepodařilo se vytvořit procedure cache" + +#~ msgid "PL/Python: %s" +#~ msgstr "PL/Python: %s" + +#~ msgid "out of memory" +#~ msgstr "nedostatek paměti" diff --git a/src/pl/plpython/po/de.po b/src/pl/plpython/po/de.po index ebda63677a..445aed7381 100644 --- a/src/pl/plpython/po/de.po +++ b/src/pl/plpython/po/de.po @@ -1,9 +1,7 @@ # German message translation file for plpython -# Copyright (C) 2009 - 2011 PostgreSQL Global Development Group +# Copyright (C) 2009 - 2012 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Peter Eisentraut , 2009 - 2011. -# -# pgtranslation Id: plpython.po,v 1.8 2011/05/21 21:37:56 petere Exp $ +# Peter Eisentraut , 2009 - 2012. # # Use these quotes: »%s« # @@ -11,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2011-05-20 22:39+0000\n" -"PO-Revision-Date: 2011-05-22 00:22+0300\n" +"POT-Creation-Date: 2012-08-13 22:09+0000\n" +"PO-Revision-Date: 2012-08-14 01:34-0400\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" "Language: de\n" @@ -21,56 +19,56 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: plpython.c:475 +#: plpython.c:476 #, c-format msgid "PL/Python function \"%s\"" msgstr "PL/Python-Funktion »%s«" -#: plpython.c:482 +#: plpython.c:483 msgid "PL/Python anonymous code block" msgstr "anonymer PL/Python-Codeblock" -#: plpython.c:489 +#: plpython.c:490 msgid "while modifying trigger row" msgstr "beim Ändern der Triggerzeile" -#: plpython.c:496 +#: plpython.c:497 msgid "while creating return value" msgstr "beim Erzeugen des Rückgabewerts" -#: plpython.c:707 plpython.c:733 +#: plpython.c:708 plpython.c:734 msgid "unexpected return value from trigger procedure" msgstr "unerwarteter Rückgabewert von Triggerprozedur" -#: plpython.c:708 +#: plpython.c:709 msgid "Expected None or a string." msgstr "Erwartete None oder eine Zeichenkette." -#: plpython.c:723 +#: plpython.c:724 msgid "" "PL/Python trigger function returned \"MODIFY\" in a DELETE trigger -- ignored" msgstr "" "PL/Python-Funktion gab in einem DELETE-Trigger \"MODIFY\" zurück -- ignoriert" -#: plpython.c:734 +#: plpython.c:735 msgid "Expected None, \"OK\", \"SKIP\", or \"MODIFY\"." msgstr "Erwartete None, \"OK\", \"SKIP\" oder \"MODIFY\"." -#: plpython.c:786 +#: plpython.c:787 msgid "TD[\"new\"] deleted, cannot modify row" msgstr "TD[\"new\"] wurde gelöscht, kann Zeile nicht ändern" -#: plpython.c:789 +#: plpython.c:790 msgid "TD[\"new\"] is not a dictionary" msgstr "TD[\"new\"] ist kein Dictionary" -#: plpython.c:813 +#: plpython.c:814 #, c-format msgid "TD[\"new\"] dictionary key at ordinal position %d is not a string" msgstr "" "Dictionary-Schlüssel auf Position %d in TD[\"new\"] ist keine Zeichenkette" -#: plpython.c:819 +#: plpython.c:820 #, c-format msgid "" "key \"%s\" found in TD[\"new\"] does not exist as a column in the triggering " @@ -79,107 +77,111 @@ msgstr "" "in TD[\"new\"] gefundener Schlüssel »%s« existiert nicht als Spalte in der " "den Trigger auslösenden Zeile" -#: plpython.c:915 +#: plpython.c:916 msgid "could not create new dictionary while building trigger arguments" msgstr "" "konnte neues Dictionary nicht erzeugen, beim Aufbauen der Triggerargumente" -#: plpython.c:1122 +#: plpython.c:1123 msgid "unsupported set function return mode" msgstr "nicht unterstützter Rückgabemodus für Funktion mit Mengenergebnis" -#: plpython.c:1123 +#: plpython.c:1124 msgid "" "PL/Python set-returning functions only support returning only value per call." msgstr "" "PL/Python unterstützt für Funktionen mit Mengenergebnis nur das Zurückgeben " "von einem Wert pro Aufruf." -#: plpython.c:1135 +#: plpython.c:1136 msgid "returned object cannot be iterated" msgstr "zurückgegebenes Objekt kann nicht iteriert werden" -#: plpython.c:1136 +#: plpython.c:1137 msgid "PL/Python set-returning functions must return an iterable object." msgstr "" "PL/Python-Funktionen mit Mengenergebnis müssen ein iterierbares Objekt " "zurückgeben." -#: plpython.c:1161 +#: plpython.c:1162 msgid "error fetching next item from iterator" msgstr "Fehler beim Auslesen des nächsten Elements vom Iterator" -#: plpython.c:1196 +#: plpython.c:1197 msgid "PL/Python function with return type \"void\" did not return None" msgstr "PL/Python-Funktion mit Rückgabetyp »void« hat nicht None zurückgegeben" -#: plpython.c:1287 +#: plpython.c:1277 msgid "forcibly aborting a subtransaction that has not been exited" msgstr "Abbruch einer Subtransaktion, die nicht beendet wurde, wird erzwungen" -#: plpython.c:1403 +#: plpython.c:1393 msgid "PyList_SetItem() failed, while setting up arguments" msgstr "PyList_SetItem() fehlgeschlagen, beim Einrichten der Argumente" -#: plpython.c:1407 +#: plpython.c:1397 msgid "PyDict_SetItemString() failed, while setting up arguments" msgstr "PyDict_SetItemString() fehlgeschlagen, beim Einrichten der Argumente" -#: plpython.c:1419 +#: plpython.c:1409 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" -#: plpython.c:1633 +#: plpython.c:1643 msgid "trigger functions can only be called as triggers" msgstr "Triggerfunktionen können nur als Trigger aufgerufen werden" -#: plpython.c:1638 plpython.c:2089 +#: plpython.c:1648 plpython.c:2121 #, c-format msgid "PL/Python functions cannot return type %s" msgstr "PL/Python-Funktionen können keinen Rückgabetyp %s haben" -#: plpython.c:1721 +#: plpython.c:1730 #, c-format msgid "PL/Python functions cannot accept type %s" msgstr "PL/Python-Funktionen können Typ %s nicht annehmen" -#: plpython.c:1817 +#: plpython.c:1826 #, c-format msgid "could not compile PL/Python function \"%s\"" msgstr "konnte PL/Python-Funktion »%s« nicht kompilieren" -#: plpython.c:1820 +#: plpython.c:1829 msgid "could not compile anonymous PL/Python code block" msgstr "konnte anonymen PL/Python-Codeblock nicht kompilieren" -#: plpython.c:2091 +#: plpython.c:2123 msgid "PL/Python does not support conversion to arrays of row types." msgstr "PL/Python unterstützt die Umwandlung in Arrays von Zeilentypen nicht." -#: plpython.c:2300 +#: plpython.c:2332 msgid "cannot convert multidimensional array to Python list" msgstr "kann mehrdimensionales Array nicht in Python-Liste umwandeln" -#: plpython.c:2301 +#: plpython.c:2333 msgid "PL/Python only supports one-dimensional arrays." msgstr "PL/Python unterstützt nur eindimensionale Arrays." -#: plpython.c:2340 +#: plpython.c:2339 +msgid "could not create new list" +msgstr "konnte neue Liste nicht erzeugen" + +#: plpython.c:2374 msgid "could not create new dictionary" msgstr "konnte neues Dictionary nicht erzeugen" -#: plpython.c:2435 +#: plpython.c:2471 msgid "could not create bytes representation of Python object" msgstr "konnte Bytes-Darstellung eines Python-Objektes nicht erzeugen" -#: plpython.c:2533 +#: plpython.c:2563 msgid "could not create string representation of Python object" msgstr "konnte Zeichenkettendarstellung eines Python-Objektes nicht erzeugen" -#: plpython.c:2544 +#: plpython.c:2574 msgid "" "could not convert Python object into cstring: Python string representation " "appears to contain null bytes" @@ -187,18 +189,18 @@ msgstr "" "konnte Python-Objekt nicht in cstring umwandeln: Python-" "Zeichenkettendarstellung enthält anscheinend Null-Bytes" -#: plpython.c:2578 +#: plpython.c:2608 msgid "" "return value of function with array return type is not a Python sequence" msgstr "" "Rückgabewert von Funktion mit Array-Rückgabetyp ist keine Python-Sequenz" -#: plpython.c:2654 +#: plpython.c:2708 #, c-format msgid "key \"%s\" not found in mapping" msgstr "Schlüssel »%s« nicht in Mapping gefunden" -#: plpython.c:2655 +#: plpython.c:2709 msgid "" "To return null in a column, add the value None to the mapping with the key " "named after the column." @@ -206,18 +208,18 @@ msgstr "" "Um einen NULL-Wert in einer Spalte zurückzugeben, muss der Wert None mit " "einem nach der Spalte benannten Schlüssel in das Mapping eingefügt werden." -#: plpython.c:2703 +#: plpython.c:2757 msgid "length of returned sequence did not match number of columns in row" msgstr "" "Länge der zurückgegebenen Sequenz hat nicht mit der Anzahl der Spalten in " "der Zeile übereingestimmt" -#: plpython.c:2803 +#: plpython.c:2865 #, c-format msgid "attribute \"%s\" does not exist in Python object" msgstr "Attribut »%s« existiert nicht in Python-Objekt" -#: plpython.c:2804 +#: plpython.c:2866 msgid "" "To return null in a column, let the returned object have an attribute named " "after column with value None." @@ -225,81 +227,89 @@ msgstr "" "Um einen NULL-Wert in einer Spalte zurückzugeben, muss das zurückzugebende " "Objekt ein nach der Spalte benanntes Attribut mit dem Wert None haben." -#: plpython.c:3123 +#: plpython.c:3185 msgid "plan.status takes no arguments" msgstr "plan.status nimmt keine Argumente" -#: plpython.c:3247 +#: plpython.c:3309 msgid "second argument of plpy.prepare must be a sequence" msgstr "zweites Argument von plpy.prepare muss eine Sequenz sein" -#: plpython.c:3297 +#: plpython.c:3359 #, c-format msgid "plpy.prepare: type name at ordinal position %d is not a string" msgstr "plpy.prepare: Typname auf Position %d ist keine Zeichenkette" -#: plpython.c:3329 +#: plpython.c:3391 msgid "plpy.prepare does not support composite types" msgstr "plpy.prepare unterstützt keine zusammengesetzten Datentypen" -#: plpython.c:3419 +#: plpython.c:3481 msgid "plpy.execute expected a query or a plan" msgstr "plpy.execute hat eine Anfrage oder einen Plan erwartet" -#: plpython.c:3438 +#: plpython.c:3500 msgid "plpy.execute takes a sequence as its second argument" msgstr "plpy.execute nimmt eine Sequenz als zweites Argument" -#: plpython.c:3454 +#: plpython.c:3516 msgid "could not execute plan" msgstr "konnte Plan nicht ausführen" -#: plpython.c:3457 +#: plpython.c:3519 #, c-format msgid "Expected sequence of %d argument, got %d: %s" msgid_plural "Expected sequence of %d arguments, got %d: %s" msgstr[0] "Sequenz aus %d Argument erwartet, aber %d erhalten: %s" msgstr[1] "Sequenz aus %d Argumenten erwartet, aber %d erhalten: %s" -#: plpython.c:3599 +#: plpython.c:3661 #, c-format msgid "SPI_execute_plan failed: %s" msgstr "SPI_execute_plan fehlgeschlagen: %s" -#: plpython.c:3677 +#: plpython.c:3740 #, c-format msgid "SPI_execute failed: %s" msgstr "SPI_execute fehlgeschlagen: %s" -#: plpython.c:3732 +#: plpython.c:3795 msgid "unrecognized error in PLy_spi_execute_fetch_result" msgstr "unbekannter Fehler in PLy_spi_execute_fetch_result" -#: plpython.c:3794 +#: plpython.c:3857 msgid "this subtransaction has already been entered" msgstr "diese Subtransaktion wurde bereits begonnen" -#: plpython.c:3800 plpython.c:3852 +#: plpython.c:3863 plpython.c:3915 msgid "this subtransaction has already been exited" msgstr "diese Subtransaktion wurde bereits beendet" -#: plpython.c:3846 +#: plpython.c:3909 msgid "this subtransaction has not been entered" msgstr "diese Subtransaktion wurde nicht begonnen" -#: plpython.c:3858 +#: plpython.c:3921 msgid "there is no subtransaction to exit from" msgstr "es gibt keine Subtransaktion zu beenden" -#: plpython.c:3940 +#: plpython.c:3980 plpython.c:3984 +msgid "could not generate SPI exceptions" +msgstr "konnte SPI-Ausnahmen nicht erzeugen" + +#: plpython.c:4009 msgid "could not add the spiexceptions module" msgstr "konnte das Modul »spiexceptions« nicht hinzufügen" -#: plpython.c:4017 +#: plpython.c:4029 +msgid "could not create the base SPI exceptions" +msgstr "konnte die SPI-Basisausnahmen nicht erzeugen" + +#: plpython.c:4097 msgid "Python major version mismatch in session" msgstr "unpassende Python-Hauptversion für diese Sitzung" -#: plpython.c:4018 +#: plpython.c:4098 #, c-format msgid "" "This session has previously used Python major version %d, and it is now " @@ -308,35 +318,49 @@ msgstr "" "Diese Sitzung hat zuvor Python-Hauptversion %d verwendet und versucht nun " "Python-Hauptversion %d zu verwenden." -#: plpython.c:4020 +#: plpython.c:4100 msgid "Start a new session to use a different Python major version." msgstr "" "Starten Sie eine neue Sitzung, um eine andere Python-Hauptversion zu " "verwenden." -#: plpython.c:4035 +#: plpython.c:4115 msgid "untrapped error in initialization" msgstr "nicht abgefangener Fehler bei der Initialisierung" -#: plpython.c:4063 +#: plpython.c:4143 msgid "could not import \"__main__\" module" msgstr "konnte Modul »__main__« nicht importieren" -#: plpython.c:4070 +#: plpython.c:4148 +msgid "could not create globals" +msgstr "konnte globale Objekte nicht erzeugen" + +#: plpython.c:4152 msgid "could not initialize globals" msgstr "konnte globale Objekte nicht initialisieren" -#: plpython.c:4183 +#: plpython.c:4190 plpython.c:4193 +msgid "could not import \"plpy\" module" +msgstr "konnte Modul »plpy« nicht importieren" + +#: plpython.c:4260 +msgid "could not unpack arguments in plpy.elog" +msgstr "konnte Argumente in plpy.elog nicht entpacken" + +#: plpython.c:4268 msgid "could not parse error message in plpy.elog" msgstr "konnte Fehlermeldung in plpy.elog nicht parsen" -#: plpython.c:4207 plpython.c:4437 plpython.c:4438 plpython.c:4439 -#: plpython.c:4440 +#: plpython.c:4292 plpython.c:4526 plpython.c:4527 #, c-format msgid "%s" msgstr "%s" -#: plpython.c:4791 -msgid "could not convert Python Unicode object to PostgreSQL server encoding" -msgstr "" -"konnte Python-Unicode-Objekt nicht in PostgreSQL-Serverkodierung umwandeln" +#: plpython.c:4878 +msgid "could not convert Python Unicode object to bytes" +msgstr "konnte Python-Unicode-Objekt nicht in Bytes umwandeln" + +#: plpython.c:4883 +msgid "could not extract bytes from encoded string" +msgstr "konnte kodierte Zeichenkette nicht in Bytes umwandeln" diff --git a/src/pl/plpython/po/es.po b/src/pl/plpython/po/es.po index a61e9e5543..271012c1ac 100644 --- a/src/pl/plpython/po/es.po +++ b/src/pl/plpython/po/es.po @@ -1,77 +1,76 @@ # Spanish message translation file for plpython # -# Copyright (C) 2009-2010 PostgreSQL Global Development Group +# Copyright (C) 2009-2012 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # # Emanuel Calvo Franco , 2009. -# Alvaro Herrera , 2009-2010 -# -# pgtranslation Id: plpython.po,v 1.6 2010/08/31 18:20:16 alvherre Exp $ +# Alvaro Herrera , 2009-2012 # msgid "" msgstr "" -"Project-Id-Version: plpython (PostgreSQL 9.0)\n" +"Project-Id-Version: plpython (PostgreSQL 9.1)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-08-31 07:15+0000\n" -"PO-Revision-Date: 2010-08-31 14:19-0400\n" +"POT-Creation-Date: 2013-08-26 19:38+0000\n" +"PO-Revision-Date: 2012-02-21 22:54-0300\n" "Last-Translator: Alvaro Herrera \n" "Language-Team: PgSQL-es-Ayuda \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: plpython.c:424 +#: plpython.c:482 #, c-format msgid "PL/Python function \"%s\"" msgstr "función PL/Python «%s»" -#: plpython.c:430 +#: plpython.c:489 msgid "PL/Python anonymous code block" msgstr "bloque de código anónimo de PL/Python" -#: plpython.c:437 +#: plpython.c:496 msgid "while modifying trigger row" msgstr "mientras se modificaba la fila de disparador" -#: plpython.c:444 +#: plpython.c:503 msgid "while creating return value" msgstr "mientras se creaba el valor de retorno" -#: plpython.c:613 plpython.c:639 +#: plpython.c:717 plpython.c:743 msgid "unexpected return value from trigger procedure" msgstr "valor de retorno no esperado desde el procedimiento disparador" -#: plpython.c:614 +#: plpython.c:718 msgid "Expected None or a string." msgstr "Se esperaba None o una cadena." -#: plpython.c:629 +#: plpython.c:733 msgid "" "PL/Python trigger function returned \"MODIFY\" in a DELETE trigger -- ignored" msgstr "" "función de disparador de PL/Python retorno «MODIFY» en un disparador de tipo " "DELETE -- ignorado" -#: plpython.c:640 +#: plpython.c:744 msgid "Expected None, \"OK\", \"SKIP\", or \"MODIFY\"." msgstr "Se esperaba None, «OK», «SKIP» o «MODIFY»." -#: plpython.c:692 +#: plpython.c:796 msgid "TD[\"new\"] deleted, cannot modify row" msgstr "TD[\"new\"] borrado, no se puede modicar el registro" -#: plpython.c:695 +#: plpython.c:799 msgid "TD[\"new\"] is not a dictionary" msgstr "TD[\"new\"] no es un diccionario" -#: plpython.c:719 +#: plpython.c:823 #, c-format msgid "TD[\"new\"] dictionary key at ordinal position %d is not a string" msgstr "" "el nombre del atributo de TD[\"new\"] en la posición %d no es una cadena" -#: plpython.c:725 +#: plpython.c:829 #, c-format msgid "" "key \"%s\" found in TD[\"new\"] does not exist as a column in the triggering " @@ -79,102 +78,114 @@ msgid "" msgstr "" "la llave «%s» en TD[\"new\"] no existe como columna en la fila disparadora" -#: plpython.c:819 +#: plpython.c:925 msgid "could not create new dictionary while building trigger arguments" msgstr "" "no se pudo crear un nuevo diccionario mientras se construían los argumentos " "de disparador" -#: plpython.c:1026 +#: plpython.c:1132 msgid "unsupported set function return mode" msgstr "modo de retorno de conjunto de función no soportado" -#: plpython.c:1027 +#: plpython.c:1133 msgid "" "PL/Python set-returning functions only support returning only value per call." msgstr "" "Las funciones PL/Python que retornan conjuntos sólo permiten retornar un " "valor por invocación." -#: plpython.c:1039 +#: plpython.c:1145 msgid "returned object cannot be iterated" msgstr "objeto retornado no puede ser iterado" -#: plpython.c:1040 +#: plpython.c:1146 msgid "PL/Python set-returning functions must return an iterable object." msgstr "" "Los funciones PL/Python que retornan conjuntos deben retornar un objeto " "iterable." -#: plpython.c:1067 +#: plpython.c:1171 msgid "error fetching next item from iterator" msgstr "error extrayendo el próximo elemento del iterador" -#: plpython.c:1089 +#: plpython.c:1206 msgid "PL/Python function with return type \"void\" did not return None" msgstr "función PL/Python con tipo de retorno «void» no retorna None" -#: plpython.c:1246 +# FIXME not very happy with this +#: plpython.c:1286 +msgid "forcibly aborting a subtransaction that has not been exited" +msgstr "abortando una subtransacción que no se ha cerrado" + +#: plpython.c:1402 msgid "PyList_SetItem() failed, while setting up arguments" msgstr "PyList_SetItem() falló, mientras se inicializaban los argumentos" -#: plpython.c:1250 +#: plpython.c:1406 msgid "PyDict_SetItemString() failed, while setting up arguments" msgstr "PyDict_SetItemString() falló, mientras se inicializaban los argumentos" -#: plpython.c:1319 -msgid "PyCObject_AsVoidPtr() failed" -msgstr "PyCObject_AsVoidPtr() falló" +#: plpython.c:1418 +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" -#: plpython.c:1427 +#: plpython.c:1666 msgid "trigger functions can only be called as triggers" msgstr "las funciones disparadoras sólo pueden ser llamadas como disparadores" -#: plpython.c:1431 plpython.c:1815 +#: plpython.c:1671 plpython.c:2144 #, c-format msgid "PL/Python functions cannot return type %s" msgstr "las funciones PL/Python no pueden retornar el tipo %s" -#: plpython.c:1509 +#: plpython.c:1753 #, c-format msgid "PL/Python functions cannot accept type %s" msgstr "la funciones PL/Python no pueden aceptar el tipo %s" -#: plpython.c:1548 -msgid "PyCObject_FromVoidPtr() failed" -msgstr "PyCObject_FromVoidPtr() falló" - -#: plpython.c:1606 +#: plpython.c:1849 #, c-format msgid "could not compile PL/Python function \"%s\"" msgstr "no se pudo compilar la función PL/Python «%s»" -#: plpython.c:1817 +#: plpython.c:1852 +msgid "could not compile anonymous PL/Python code block" +msgstr "no se pudo compilar el bloque anónimo PL/Python" + +#: plpython.c:2146 msgid "PL/Python does not support conversion to arrays of row types." msgstr "PL/Python no soporta la conversión de arrays a tipos de registro." -#: plpython.c:2020 +#: plpython.c:2355 msgid "cannot convert multidimensional array to Python list" msgstr "no se puede convertir array multidimensional a una lista Python" -#: plpython.c:2021 +#: plpython.c:2356 msgid "PL/Python only supports one-dimensional arrays." msgstr "PL/Python sólo soporta arrays unidimensionales." -#: plpython.c:2057 +#: plpython.c:2362 +msgid "could not create new list" +msgstr "no se pudo crear una nueva lista" + +#: plpython.c:2397 msgid "could not create new dictionary" msgstr "no se pudo crear un nuevo diccionario" -#: plpython.c:2133 +#: plpython.c:2494 msgid "could not create bytes representation of Python object" msgstr "no se pudo crear la representación de cadena de bytes de Python" -#: plpython.c:2189 +#: plpython.c:2586 msgid "could not create string representation of Python object" msgstr "" "no se pudo crear la representación de cadena de texto del objeto de Python" -#: plpython.c:2200 +#: plpython.c:2597 msgid "" "could not convert Python object into cstring: Python string representation " "appears to contain null bytes" @@ -182,17 +193,19 @@ msgstr "" "no se pudo convertir el objeto Python a un cstring: la representación de " "cadena Python parece tener bytes nulos (\\0)" -#: plpython.c:2233 +#: plpython.c:2631 msgid "" "return value of function with array return type is not a Python sequence" -msgstr "el valor de retorno de la función con tipo de retorno array no es una secuencia Python" +msgstr "" +"el valor de retorno de la función con tipo de retorno array no es una " +"secuencia Python" -#: plpython.c:2308 +#: plpython.c:2731 #, c-format msgid "key \"%s\" not found in mapping" msgstr "la llave «%s» no fue encontrada en el mapa" -#: plpython.c:2309 +#: plpython.c:2732 msgid "" "To return null in a column, add the value None to the mapping with the key " "named after the column." @@ -200,18 +213,18 @@ msgstr "" "Para retornar null en una columna, agregue el valor None al mapa, con llave " "llamada igual que la columna." -#: plpython.c:2352 +#: plpython.c:2780 msgid "length of returned sequence did not match number of columns in row" msgstr "" "el tamaño de la secuencia retornada no concuerda con el número de columnas " "de la fila" -#: plpython.c:2445 +#: plpython.c:2888 #, c-format msgid "attribute \"%s\" does not exist in Python object" msgstr "el atributo «%s» no existe en el objeto Python" -#: plpython.c:2446 +#: plpython.c:2889 msgid "" "To return null in a column, let the returned object have an attribute named " "after column with value None." @@ -219,129 +232,139 @@ msgstr "" "Para retornar null en una columna, haga que el objeto retornado tenga un " "atributo llamado igual que la columna, con valor None." -#: plpython.c:2680 +#: plpython.c:3208 msgid "plan.status takes no arguments" msgstr "plan.status no lleva argumentos" -#: plpython.c:2804 plpython.c:2947 -msgid "transaction aborted" -msgstr "transacción abortada" - -#: plpython.c:2811 -msgid "invalid arguments for plpy.prepare" -msgstr "argumentos no válidos para plpy.prepare" - -#: plpython.c:2818 +#: plpython.c:3332 msgid "second argument of plpy.prepare must be a sequence" msgstr "el segundo argumento de plpy.prepare debe ser una secuencia" -#: plpython.c:2868 +#: plpython.c:3382 #, c-format msgid "plpy.prepare: type name at ordinal position %d is not a string" msgstr "plpy.prepare: el nombre de tipo en la posición %d no es una cadena" -#: plpython.c:2895 +#: plpython.c:3414 msgid "plpy.prepare does not support composite types" msgstr "plpy.prepare no soporta tipos compuestos" -#: plpython.c:2924 -msgid "unrecognized error in PLy_spi_prepare" -msgstr "error no reconocido en PLy_spi_prepare" - -#: plpython.c:2960 +#: plpython.c:3504 msgid "plpy.execute expected a query or a plan" msgstr "plpy.execute espera una consulta o un plan" -#: plpython.c:2977 +#: plpython.c:3523 msgid "plpy.execute takes a sequence as its second argument" msgstr "plpy.execute lleva una secuencia como segundo argumento" -#: plpython.c:2993 +#: plpython.c:3539 msgid "could not execute plan" msgstr "no se pudo ejecutar el plan" -#: plpython.c:2996 +#: plpython.c:3542 #, c-format msgid "Expected sequence of %d argument, got %d: %s" msgid_plural "Expected sequence of %d arguments, got %d: %s" msgstr[0] "Se esperaba una secuencia de %d argumento, se obtuvo %d: %s" msgstr[1] "Se esperaba una secuencia de %d argumentos, se obtuvo %d: %s" -#: plpython.c:3073 -msgid "unrecognized error in PLy_spi_execute_plan" -msgstr "error no reconocido en PLy_spi_execute_plan" - -#: plpython.c:3092 +#: plpython.c:3684 #, c-format msgid "SPI_execute_plan failed: %s" msgstr "falló SPI_execute_plan: %s" -#: plpython.c:3119 -msgid "unrecognized error in PLy_spi_execute_query" -msgstr "error no reconocido en PLy_spi_execute_query" - -#: plpython.c:3128 +#: plpython.c:3763 #, c-format msgid "SPI_execute failed: %s" msgstr "falló SPI_execute: %s" -#: plpython.c:3185 +#: plpython.c:3818 msgid "unrecognized error in PLy_spi_execute_fetch_result" msgstr "error desconocido en PLy_spi_execute_fetch_result" -#: plpython.c:3239 +#: plpython.c:3880 +msgid "this subtransaction has already been entered" +msgstr "ya se ha entrado en esta subtransacción" + +#: plpython.c:3886 plpython.c:3938 +msgid "this subtransaction has already been exited" +msgstr "ya se ha salido de esta subtransacción" + +#: plpython.c:3932 +msgid "this subtransaction has not been entered" +msgstr "no se ha entrado en esta subtransacción" + +#: plpython.c:3944 +msgid "there is no subtransaction to exit from" +msgstr "no hay una subtransacción de la cual salir" + +#: plpython.c:4003 plpython.c:4007 +msgid "could not generate SPI exceptions" +msgstr "no se pudo generar excepciones SPI" + +#: plpython.c:4032 +msgid "could not add the spiexceptions module" +msgstr "no se pudo importar el módulo spiexceptions" + +#: plpython.c:4052 +msgid "could not create the base SPI exceptions" +msgstr "no se pudo crear las excepciones SPI basales" + +#: plpython.c:4120 msgid "Python major version mismatch in session" msgstr "las versiones mayores de Python no coinciden en esta sesión" -#: plpython.c:3240 +#: plpython.c:4121 #, c-format msgid "" "This session has previously used Python major version %d, and it is now " "attempting to use Python major version %d." msgstr "" -"Esta sesión ha usado previamente la versión mayor de Python %d, y ahora " -"está intentando usar la versión mayor %d." +"Esta sesión ha usado previamente la versión mayor de Python %d, y ahora está " +"intentando usar la versión mayor %d." -#: plpython.c:3242 +#: plpython.c:4123 msgid "Start a new session to use a different Python major version." -msgstr "Inicie una nueva sesión para usar una versión mayor de Python diferente." +msgstr "" +"Inicie una nueva sesión para usar una versión mayor de Python diferente." -#: plpython.c:3257 +#: plpython.c:4138 msgid "untrapped error in initialization" msgstr "error no capturado en la inicialización" -#: plpython.c:3260 -msgid "could not create procedure cache" -msgstr "no se pudo crear el cache de procedimientos" - -#: plpython.c:3272 +#: plpython.c:4159 msgid "could not import \"__main__\" module" msgstr "no se pudo importar el módulo «__main__»" -#: plpython.c:3279 +#: plpython.c:4164 +msgid "could not create globals" +msgstr "no se pudo crear las globales" + +#: plpython.c:4168 msgid "could not initialize globals" msgstr "no se pudo inicializar las globales" -#: plpython.c:3397 +#: plpython.c:4206 plpython.c:4209 +msgid "could not import \"plpy\" module" +msgstr "no se pudo importar el módulo «plpy»" + +#: plpython.c:4276 +msgid "could not unpack arguments in plpy.elog" +msgstr "no se pudo desempaquetar los argumentos de plpy.elog" + +#: plpython.c:4284 msgid "could not parse error message in plpy.elog" msgstr "no se pudo analizar el mensaje de error de plpy.elog" -#: plpython.c:3526 plpython.c:3530 -#, c-format -msgid "PL/Python: %s" -msgstr "PL/Python: %s" - -#: plpython.c:3527 +#: plpython.c:4308 plpython.c:4542 plpython.c:4543 #, c-format msgid "%s" msgstr "%s" -#: plpython.c:3640 -msgid "out of memory" -msgstr "memoria agotada" +#: plpython.c:4894 +msgid "could not convert Python Unicode object to bytes" +msgstr "no se pudo convertir el objeto Unicode de Python a bytes" -#: plpython.c:3694 -msgid "could not convert Python Unicode object to PostgreSQL server encoding" -msgstr "" -"no se pudo convertir el objeto Unicode de Python a la codificación de " -"servidor de PostgreSQL" +#: plpython.c:4899 +msgid "could not extract bytes from encoded string" +msgstr "no se pudo extraer bytes desde la cadena codificada" diff --git a/src/pl/plpython/po/fr.po b/src/pl/plpython/po/fr.po index f13458aab7..93fc86c260 100644 --- a/src/pl/plpython/po/fr.po +++ b/src/pl/plpython/po/fr.po @@ -1,8 +1,6 @@ # translation of plpython.po to fr_fr # french message translation file for plpython # -# $PostgreSQL$ -# # Use these quotes: � %s � # Guillaume Lelarge , 2009. # @@ -10,343 +8,402 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 8.4\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-08-26 02:05+0000\n" -"PO-Revision-Date: 2010-08-26 20:36+0100\n" +"POT-Creation-Date: 2012-08-10 13:21+0000\n" +"PO-Revision-Date: 2012-08-10 23:40+0100\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: French \n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: plpython.c:424 +#: plpython.c:476 #, c-format msgid "PL/Python function \"%s\"" msgstr "fonction PL/python � %s �" -#: plpython.c:430 +#: plpython.c:483 msgid "PL/Python anonymous code block" msgstr "bloc de code PL/Python anonyme" -#: plpython.c:437 +#: plpython.c:490 msgid "while modifying trigger row" msgstr "lors de la modification de la ligne du trigger" -#: plpython.c:444 +#: plpython.c:497 msgid "while creating return value" msgstr "lors de la cr�ation de la valeur de retour" -#: plpython.c:613 -#: plpython.c:639 +#: plpython.c:708 +#: plpython.c:734 msgid "unexpected return value from trigger procedure" msgstr "valeur de retour inattendue de la proc�dure trigger" -#: plpython.c:614 +#: plpython.c:709 msgid "Expected None or a string." msgstr "Attendait None ou une cha�ne de caract�res." -#: plpython.c:629 +#: plpython.c:724 msgid "PL/Python trigger function returned \"MODIFY\" in a DELETE trigger -- ignored" msgstr "" "la fonction trigger PL/python a renvoy� � MODIFY � dans un trigger DELETE\n" "-- ignor�" -#: plpython.c:640 +#: plpython.c:735 msgid "Expected None, \"OK\", \"SKIP\", or \"MODIFY\"." msgstr "Attendait None, � OK �, � SKIP � ou � MODIFY �." -#: plpython.c:692 +#: plpython.c:787 msgid "TD[\"new\"] deleted, cannot modify row" msgstr "TD[\"new\"] supprim�, ne peut pas modifier la ligne" -#: plpython.c:695 +#: plpython.c:790 msgid "TD[\"new\"] is not a dictionary" msgstr "TD[\"new\"] n'est pas un dictionnaire" -#: plpython.c:719 +#: plpython.c:814 #, c-format msgid "TD[\"new\"] dictionary key at ordinal position %d is not a string" msgstr "la cl� TD[\"new\"] � la position ordinale %d n'est pas une cha�ne" -#: plpython.c:725 +#: plpython.c:820 #, c-format msgid "key \"%s\" found in TD[\"new\"] does not exist as a column in the triggering row" msgstr "" "la cl� � %s � trouv�e dans TD[\"new\"] n'existe pas comme colonne\n" "de la ligne impact�e par le trigger" -#: plpython.c:819 +#: plpython.c:916 msgid "could not create new dictionary while building trigger arguments" msgstr "" "n'a pas pu cr�er un nouveau dictionnaire lors de la construction des\n" "arguments du trigger" -#: plpython.c:1026 +#: plpython.c:1123 msgid "unsupported set function return mode" msgstr "mode de retour non support� pour la fonction SET" -#: plpython.c:1027 +#: plpython.c:1124 msgid "PL/Python set-returning functions only support returning only value per call." msgstr "" "les fonctions PL/python renvoyant des ensembles supportent seulement une\n" "valeur renvoy�e par appel" -#: plpython.c:1039 +#: plpython.c:1136 msgid "returned object cannot be iterated" msgstr "l'objet renvoy� ne supporte pas les it�rations" -#: plpython.c:1040 +#: plpython.c:1137 msgid "PL/Python set-returning functions must return an iterable object." msgstr "" "les fonctions PL/python renvoyant des ensembles doivent renvoyer un objet\n" "it�rable" -#: plpython.c:1067 +#: plpython.c:1162 msgid "error fetching next item from iterator" msgstr "erreur lors de la r�cup�ration du prochain �l�ment de l'it�rateur" -#: plpython.c:1089 +#: plpython.c:1197 msgid "PL/Python function with return type \"void\" did not return None" msgstr "la fonction PL/python avec un code de retour � void � ne renvoyait pas None" -#: plpython.c:1246 +#: plpython.c:1277 +msgid "forcibly aborting a subtransaction that has not been exited" +msgstr "annulation forc�e d'une sous-transaction qui n'a jamais �t� quitt�e" + +#: plpython.c:1393 msgid "PyList_SetItem() failed, while setting up arguments" msgstr "�chec de PyList_SetItem() lors de l'initialisation des arguments" -#: plpython.c:1250 +#: plpython.c:1397 msgid "PyDict_SetItemString() failed, while setting up arguments" msgstr "�chec de PyDict_SetItemString() lors de l'initialisation des arguments" -#: plpython.c:1319 -msgid "PyCObject_AsVoidPtr() failed" -msgstr "�chec de PyCObject_AsVoidPtr()" +#: plpython.c:1409 +msgid "function returning record called in context that cannot accept type record" +msgstr "" +"fonction renvoyant le type record appel�e dans un contexte qui ne peut pas\n" +"accepter le type record" -#: plpython.c:1427 +#: plpython.c:1643 msgid "trigger functions can only be called as triggers" msgstr "les fonctions trigger peuvent seulement �tre appel�es par des triggers" -#: plpython.c:1431 -#: plpython.c:1815 +#: plpython.c:1648 +#: plpython.c:2121 #, c-format msgid "PL/Python functions cannot return type %s" msgstr "les fonctions PL/python ne peuvent pas renvoyer le type %s" -#: plpython.c:1509 +#: plpython.c:1730 #, c-format msgid "PL/Python functions cannot accept type %s" msgstr "les fonctions PL/python ne peuvent pas accepter le type %s" -#: plpython.c:1548 -msgid "PyCObject_FromVoidPtr() failed" -msgstr "�chec de PyCObject_FromVoidPtr()" - -#: plpython.c:1606 +#: plpython.c:1826 #, c-format msgid "could not compile PL/Python function \"%s\"" msgstr "n'a pas pu compiler la fonction PL/python � %s �" -#: plpython.c:1817 +#: plpython.c:1829 +msgid "could not compile anonymous PL/Python code block" +msgstr "n'a pas pu compiler le bloc de code anonyme PL/python" + +#: plpython.c:2123 msgid "PL/Python does not support conversion to arrays of row types." msgstr "PL/Python ne supporte pas les conversions vers des tableaux de types row." -#: plpython.c:2020 +#: plpython.c:2332 msgid "cannot convert multidimensional array to Python list" msgstr "ne peut pas convertir un tableau multidimensionnel en liste Python" -#: plpython.c:2021 +#: plpython.c:2333 msgid "PL/Python only supports one-dimensional arrays." msgstr "PL/Python supporte seulement les tableaux uni-dimensionnels." -#: plpython.c:2057 +#: plpython.c:2339 +msgid "could not create new list" +msgstr "n'a pas pu cr�er la nouvelle liste" + +#: plpython.c:2374 msgid "could not create new dictionary" msgstr "n'a pas pu cr�er le nouveau dictionnaire" -#: plpython.c:2133 +#: plpython.c:2471 msgid "could not create bytes representation of Python object" msgstr "n'a pas pu cr�er une repr�sentation octets de l'objet Python" -#: plpython.c:2189 +#: plpython.c:2563 msgid "could not create string representation of Python object" msgstr "n'a pas pu cr�er une repr�sentation cha�ne de caract�res de l'objet Python" -#: plpython.c:2200 +#: plpython.c:2574 msgid "could not convert Python object into cstring: Python string representation appears to contain null bytes" msgstr "n'a pas pu convertir l'objet Python en csting : la repr�sentation de la cha�ne Python contient des octets nuls" -#: plpython.c:2233 +#: plpython.c:2608 msgid "return value of function with array return type is not a Python sequence" msgstr "la valeur de retour de la fonction de type tableau n'est pas une s�quence Python" -#: plpython.c:2308 +#: plpython.c:2708 #, c-format msgid "key \"%s\" not found in mapping" msgstr "la cl� � %s � introuvable dans la correspondance" -#: plpython.c:2309 +#: plpython.c:2709 msgid "To return null in a column, add the value None to the mapping with the key named after the column." msgstr "" "Pour renvoyer NULL dans une colonne, ajoutez la valeur None � la\n" "correspondance de la cl� nomm�e d'apr�s la colonne." -#: plpython.c:2352 +#: plpython.c:2757 msgid "length of returned sequence did not match number of columns in row" msgstr "" "la longueur de la s�quence renvoy�e ne correspondait pas au nombre de\n" "colonnes dans la ligne" -#: plpython.c:2445 +#: plpython.c:2865 #, c-format msgid "attribute \"%s\" does not exist in Python object" msgstr "l'attribut � %s � n'existe pas dans l'objet Python" -#: plpython.c:2446 +#: plpython.c:2866 msgid "To return null in a column, let the returned object have an attribute named after column with value None." msgstr "" "Pour renvoyer NULL dans une colonne, faites en sorte que l'objet renvoy� ait\n" "un attribut nomm� suivant la colonne de valeur None." -#: plpython.c:2680 +#: plpython.c:3185 msgid "plan.status takes no arguments" msgstr "plan.status ne prends pas d'arguments" -#: plpython.c:2804 -#: plpython.c:2947 -msgid "transaction aborted" -msgstr "transaction annul�e" - -#: plpython.c:2811 -msgid "invalid arguments for plpy.prepare" -msgstr "arguments invalides pour plpy.prepare" - -#: plpython.c:2818 +#: plpython.c:3309 msgid "second argument of plpy.prepare must be a sequence" msgstr "le second argument de plpy.prepare doit �tre une s�quence" -#: plpython.c:2868 +#: plpython.c:3359 #, c-format msgid "plpy.prepare: type name at ordinal position %d is not a string" msgstr "plpy.prepare : le nom du type sur la position ordinale %d n'est pas une cha�ne" -#: plpython.c:2895 +#: plpython.c:3391 msgid "plpy.prepare does not support composite types" msgstr "plpy.prepare ne supporte pas les types composites" -#: plpython.c:2924 -msgid "unrecognized error in PLy_spi_prepare" -msgstr "erreur inconnue dans PLy_spi_prepare" - -#: plpython.c:2960 +#: plpython.c:3481 msgid "plpy.execute expected a query or a plan" msgstr "plpy.prepare attendait une requ�te ou un plan" -#: plpython.c:2977 +#: plpython.c:3500 msgid "plpy.execute takes a sequence as its second argument" msgstr "plpy.execute prends une s�quence dans son second argument" -#: plpython.c:2993 +#: plpython.c:3516 msgid "could not execute plan" msgstr "n'a pas pu ex�cuter le plan" -#: plpython.c:2996 +#: plpython.c:3519 #, c-format msgid "Expected sequence of %d argument, got %d: %s" msgid_plural "Expected sequence of %d arguments, got %d: %s" msgstr[0] "S�quence attendue de %d argument, %d obtenu : %s" msgstr[1] "S�quence attendue de %d arguments, %d obtenus : %s" -#: plpython.c:3073 -msgid "unrecognized error in PLy_spi_execute_plan" -msgstr "erreur inconnue dans PLy_spi_execute_plan" - -#: plpython.c:3092 +#: plpython.c:3661 #, c-format msgid "SPI_execute_plan failed: %s" msgstr "�chec de SPI_execute_plan : %s" -#: plpython.c:3119 -msgid "unrecognized error in PLy_spi_execute_query" -msgstr "erreur inconnue dans PLy_spi_execute_query" - -#: plpython.c:3128 +#: plpython.c:3740 #, c-format msgid "SPI_execute failed: %s" msgstr "�chec de SPI_execute : %s" -#: plpython.c:3185 +#: plpython.c:3795 msgid "unrecognized error in PLy_spi_execute_fetch_result" msgstr "erreur inconnue dans PLy_spi_execute_fetch_result" -#: plpython.c:3239 +#: plpython.c:3857 +msgid "this subtransaction has already been entered" +msgstr "cette sous-transaction est en cours d'utilisation" + +#: plpython.c:3863 +#: plpython.c:3915 +msgid "this subtransaction has already been exited" +msgstr "d�j� sorti de cette sous-transaction" + +#: plpython.c:3909 +msgid "this subtransaction has not been entered" +msgstr "cette sous-transaction n'a jamais �t� utilis�e" + +#: plpython.c:3921 +msgid "there is no subtransaction to exit from" +msgstr "il n'y a pas de transaction � quitter" + +#: plpython.c:3980 +#: plpython.c:3984 +msgid "could not generate SPI exceptions" +msgstr "n'a pas pu g�n�rer les exceptions SPI" + +#: plpython.c:4009 +msgid "could not add the spiexceptions module" +msgstr "n'a pas pu ajouter le module � spiexceptions �" + +#: plpython.c:4029 +msgid "could not create the base SPI exceptions" +msgstr "n'a pas pu cr�er les exceptions SPI de base" + +#: plpython.c:4097 msgid "Python major version mismatch in session" msgstr "Diff�rence de version majeure de Python dans la session" -#: plpython.c:3240 +#: plpython.c:4098 #, c-format msgid "This session has previously used Python major version %d, and it is now attempting to use Python major version %d." msgstr "" "Cette session a auparavant utilis� la version majeure %d de Python et elle\n" "essaie maintenant d'utiliser la version majeure %d." -#: plpython.c:3242 +#: plpython.c:4100 msgid "Start a new session to use a different Python major version." msgstr "" "Lancez une nouvelle session pour utiliser une version majeure diff�rente de\n" "Python." -#: plpython.c:3257 +#: plpython.c:4115 msgid "untrapped error in initialization" msgstr "erreur non r�cup�r�e dans l'initialisation" -#: plpython.c:3260 -msgid "could not create procedure cache" -msgstr "n'a pas pu cr�er le cache de proc�dure" - -#: plpython.c:3272 +#: plpython.c:4143 msgid "could not import \"__main__\" module" msgstr "n'a pas pu importer le module � __main__ �" -#: plpython.c:3279 +#: plpython.c:4148 +msgid "could not create globals" +msgstr "n'a pas pu cr�er les globales" + +#: plpython.c:4152 msgid "could not initialize globals" msgstr "n'a pas pu initialiser les variables globales" -#: plpython.c:3397 +#: plpython.c:4190 +#: plpython.c:4193 +msgid "could not import \"plpy\" module" +msgstr "n'a pas pu importer le module � plpy �" + +#: plpython.c:4260 +msgid "could not unpack arguments in plpy.elog" +msgstr "n'a pas pu d�baller les arguments dans plpy.elog" + +#: plpython.c:4268 msgid "could not parse error message in plpy.elog" msgstr "n'a pas pu analyser le message d'erreur dans plpy.elog" -#: plpython.c:3526 -#: plpython.c:3530 -#, c-format -msgid "PL/Python: %s" -msgstr "PL/python : %s" - -#: plpython.c:3527 +#: plpython.c:4292 +#: plpython.c:4526 +#: plpython.c:4527 #, c-format msgid "%s" msgstr "%s" -#: plpython.c:3640 -msgid "out of memory" -msgstr "m�moire �puis�e" +#: plpython.c:4878 +msgid "could not convert Python Unicode object to bytes" +msgstr "n'a pas pu convertir l'objet Unicode Python en octets" + +#: plpython.c:4883 +msgid "could not extract bytes from encoded string" +msgstr "n'a pas pu extraire les octets de la cha�ne encod�e" + +#~ msgid "PyCObject_AsVoidPtr() failed" +#~ msgstr "�chec de PyCObject_AsVoidPtr()" + +#~ msgid "PyCObject_FromVoidPtr() failed" +#~ msgstr "�chec de PyCObject_FromVoidPtr()" + +#~ msgid "transaction aborted" +#~ msgstr "transaction annul�e" -#: plpython.c:3694 -msgid "could not convert Python Unicode object to PostgreSQL server encoding" -msgstr "n'a pas pu convertir l'objet Unicode Python en encodage serveur PostgreSQL" +#~ msgid "invalid arguments for plpy.prepare" +#~ msgstr "arguments invalides pour plpy.prepare" + +#~ msgid "unrecognized error in PLy_spi_prepare" +#~ msgstr "erreur inconnue dans PLy_spi_prepare" + +#~ msgid "unrecognized error in PLy_spi_execute_plan" +#~ msgstr "erreur inconnue dans PLy_spi_execute_plan" + +#~ msgid "unrecognized error in PLy_spi_execute_query" +#~ msgstr "erreur inconnue dans PLy_spi_execute_query" + +#~ msgid "could not create procedure cache" +#~ msgstr "n'a pas pu cr�er le cache de proc�dure" + +#~ msgid "PL/Python: %s" +#~ msgstr "PL/python : %s" + +#~ msgid "out of memory" +#~ msgstr "m�moire �puis�e" #~ msgid "PL/Python function \"%s\" failed" #~ msgstr "�chec de la fonction PL/python � %s �" + #~ msgid "" #~ "could not compute string representation of Python object in PL/Python " #~ "function \"%s\" while modifying trigger row" #~ msgstr "" #~ "n'a pas pu traiter la repr�sentation de la cha�ne d'un objet Python dans\n" -#~ "la fonction PL/Python � %s � lors de la modification de la ligne du trigger" +#~ "la fonction PL/Python � %s � lors de la modification de la ligne du " +#~ "trigger" + #~ msgid "" #~ "could not create string representation of Python object in PL/Python " #~ "function \"%s\" while creating return value" #~ msgstr "" #~ "n'a pas pu cr�er la repr�sentation en cha�ne de caract�re de l'objet\n" -#~ "Python dans la fonction PL/python � %s � lors de la cr�ation de la valeur\n" +#~ "Python dans la fonction PL/python � %s � lors de la cr�ation de la " +#~ "valeur\n" #~ "de retour" + #~ msgid "PL/Python function \"%s\" could not execute plan" #~ msgstr "la fonction PL/python � %s � n'a pas pu ex�cuter un plan" - diff --git a/src/pl/plpython/po/it.po b/src/pl/plpython/po/it.po index a484fae517..8c79bbd2b9 100644 --- a/src/pl/plpython/po/it.po +++ b/src/pl/plpython/po/it.po @@ -7,7 +7,8 @@ # # Traduttori: # * Flavio Spada -# +# * Daniele Varrazzo # @@ -16,305 +17,323 @@ # msgid "" msgstr "" -"Project-Id-Version: plpython-it\n" +"Project-Id-Version: plpython (PostgreSQL) 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-03-26 13:15+0000\n" -"PO-Revision-Date: 2010-03-27 12:44:19+0100\n" -"Last-Translator: Gabriele Bartolini \n" +"POT-Creation-Date: 2013-01-29 13:50+0000\n" +"PO-Revision-Date: 2012-11-02 15:26+0100\n" +"Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: KBabel 1.11.4\n" +"X-Generator: Poedit 1.5.4\n" -#: plpython.c:418 +#: plpython.c:482 #, c-format msgid "PL/Python function \"%s\"" msgstr "funzione PL/Python \"%s\"" -#: plpython.c:424 +#: plpython.c:489 msgid "PL/Python anonymous code block" -msgstr "codice di blocco anonimo in PL/Python" +msgstr "blocco di codice anonimo in PL/Python" -#: plpython.c:431 +#: plpython.c:496 msgid "while modifying trigger row" msgstr "durante la modifica della riga trigger" -#: plpython.c:438 +#: plpython.c:503 msgid "while creating return value" -msgstr "durante la creazione del valore di ritorno" +msgstr "durante la creazione del valore da restituire" -#: plpython.c:604 -#: plpython.c:630 +#: plpython.c:717 plpython.c:743 msgid "unexpected return value from trigger procedure" -msgstr "valore di ritorno inatteso dalla prodedura di trigger" +msgstr "la prodedura trigger ha restituito un valore inatteso" -#: plpython.c:605 +#: plpython.c:718 msgid "Expected None or a string." msgstr "Atteso None o una stringa." -#: plpython.c:620 +#: plpython.c:733 msgid "PL/Python trigger function returned \"MODIFY\" in a DELETE trigger -- ignored" -msgstr "la funzione PL/Python trigger ha restituito \"MODIFY\" in un trigger DELETE -- ignorato" +msgstr "la funzione trigger PL/Python ha restituito \"MODIFY\" in un trigger DELETE -- ignorato" -#: plpython.c:631 +#: plpython.c:744 msgid "Expected None, \"OK\", \"SKIP\", or \"MODIFY\"." msgstr "Atteso None, \"OK\", \"SKIP\", o \"MODIFY\"." -#: plpython.c:683 +#: plpython.c:796 msgid "TD[\"new\"] deleted, cannot modify row" -msgstr "TD[\"new\"] cancellato, impossibile modificare la riga" +msgstr "TD[\"new\"] cancellato, non è possibile modificare la riga" -#: plpython.c:686 +#: plpython.c:799 msgid "TD[\"new\"] is not a dictionary" msgstr "TD[\"new\"] non è un dizionario" -#: plpython.c:710 +#: plpython.c:823 #, c-format msgid "TD[\"new\"] dictionary key at ordinal position %d is not a string" msgstr "la chiave di dizionario TD[\"new\"] alla posizione %d non è una stringa" -#: plpython.c:716 +#: plpython.c:829 #, c-format msgid "key \"%s\" found in TD[\"new\"] does not exist as a column in the triggering row" msgstr "la chiave \"%s\" trovata in TD[\"new\"] non esiste come colonna nella riga del trigger" -#: plpython.c:810 +#: plpython.c:925 msgid "could not create new dictionary while building trigger arguments" -msgstr "impossibile creare un nuovo dizionario mentre si stanno costruendo gli argomenti del trigger" +msgstr "creazione del nuovo dizionario nella costruzione degli argomenti del trigger fallita" -#: plpython.c:1017 +#: plpython.c:1132 msgid "unsupported set function return mode" msgstr "modalità di ritorno della funzione set non supportata" -#: plpython.c:1018 +#: plpython.c:1133 msgid "PL/Python set-returning functions only support returning only value per call." -msgstr "le funzioni set-returning di PL/Python supportano il valore di ritorno solo una volta per chiamata" +msgstr "le funzioni PL/Python che restituiscono insiemi supportano solo la restituzione di un solo valore per chiamata." -#: plpython.c:1030 +#: plpython.c:1145 msgid "returned object cannot be iterated" -msgstr "l'oggetto ritornato non può essere iterato" +msgstr "l'oggetto restituito non può essere iterato" -#: plpython.c:1031 +#: plpython.c:1146 msgid "PL/Python set-returning functions must return an iterable object." -msgstr "le funzioni set-returning di PL/Python devono tornare un oggetto iterabile" +msgstr "le funzioni PL/Python che restituiscono insiemi devono restituire un oggetto iterabile" -#: plpython.c:1058 +#: plpython.c:1171 msgid "error fetching next item from iterator" msgstr "errore nell'ottenere l'elemento successivo dall'iteratore" -#: plpython.c:1080 +#: plpython.c:1206 msgid "PL/Python function with return type \"void\" did not return None" -msgstr "la funzione PL/Python con valore di ritorno \"void\" non ha restituito None" +msgstr "la funzione PL/Python che restituisce \"void\" non ha restituito None" + +#: plpython.c:1286 +msgid "forcibly aborting a subtransaction that has not been exited" +msgstr "interruzione forzata di una sotto-transazione che non è terminata" -#: plpython.c:1237 +#: plpython.c:1402 msgid "PyList_SetItem() failed, while setting up arguments" msgstr "PyList_SetItem() è fallita durante l'impostazione degli argomenti" -#: plpython.c:1241 +#: plpython.c:1406 msgid "PyDict_SetItemString() failed, while setting up arguments" msgstr "PyDict_SetItemString() è fallita durante l'impostazione degli argomenti" -#: plpython.c:1416 +#: plpython.c:1418 +msgid "function returning record called in context that cannot accept type record" +msgstr "la funzione che restituisce un record è chiamata in un contesto che non può accettare il tipo record" + +#: plpython.c:1666 msgid "trigger functions can only be called as triggers" -msgstr "le funzioni trigger possono essere chiamate solo come trigger" +msgstr "le funzioni trigger possono essere chiamate esclusivamente da trigger" -#: plpython.c:1420 -#: plpython.c:1800 +#: plpython.c:1671 plpython.c:2144 #, c-format msgid "PL/Python functions cannot return type %s" -msgstr "le funzioni PL/Python non possono tornare il tipo %s" +msgstr "le funzioni PL/Python non possono restituire il tipo %s" -#: plpython.c:1498 +#: plpython.c:1753 #, c-format msgid "PL/Python functions cannot accept type %s" msgstr "le funzioni PL/Python non possono accettare il tipo %s" -#: plpython.c:1592 +#: plpython.c:1849 #, c-format msgid "could not compile PL/Python function \"%s\"" -msgstr "impossibile compilare la funzione PL/Python \"%s\"" +msgstr "compilazione della funzione PL/Python \"%s\" fallita" -#: plpython.c:1802 +#: plpython.c:1852 +msgid "could not compile anonymous PL/Python code block" +msgstr "compilazione del blocco di codice anonimo PL/Python fallita" + +#: plpython.c:2146 msgid "PL/Python does not support conversion to arrays of row types." -msgstr "" +msgstr "PL/Python non supporta la conversione in array di tipi riga." -#: plpython.c:1996 +#: plpython.c:2355 msgid "cannot convert multidimensional array to Python list" -msgstr "" +msgstr "non è possibile convertire array multidimensionali a liste Python" -#: plpython.c:1997 +#: plpython.c:2356 msgid "PL/Python only supports one-dimensional arrays." -msgstr "" +msgstr "PL/Python supporta solo array monodimensionali." -#: plpython.c:2031 +#: plpython.c:2362 +msgid "could not create new list" +msgstr "non è stato possibile creare la nuova lista" + +#: plpython.c:2397 msgid "could not create new dictionary" -msgstr "impossibile creare il nuovo dizionario" +msgstr "creazione del nuovo dizionario fallita" -#: plpython.c:2107 +#: plpython.c:2494 msgid "could not create bytes representation of Python object" -msgstr "impossibile creare la rappresentazione di tipo byte dell'oggetto Python" +msgstr "creazione della rappresentazione in byte dell'oggetto Python fallita" -#: plpython.c:2163 +#: plpython.c:2586 msgid "could not create string representation of Python object" -msgstr "impossibile creare la rappresentazione di tipo stringa dell'oggetto Python" +msgstr "creazione della rappresentazione stringa dell'oggetto Python fallita" -#: plpython.c:2174 +#: plpython.c:2597 msgid "could not convert Python object into cstring: Python string representation appears to contain null bytes" -msgstr "" +msgstr "conversione dell'oggetto Python in cstring fallita: la rappresentazione stringa Python sembra contenere byte null" -#: plpython.c:2207 +#: plpython.c:2631 msgid "return value of function with array return type is not a Python sequence" -msgstr "" +msgstr "il valore restituito dalla funzione con tipo restituito array non è una sequenza Python" -#: plpython.c:2282 +#: plpython.c:2731 #, c-format msgid "key \"%s\" not found in mapping" msgstr "la chiave \"%s\" non è stata trovata nel dizionario" -#: plpython.c:2283 +#: plpython.c:2732 msgid "To return null in a column, add the value None to the mapping with the key named after the column." -msgstr "Per ritornare null in una colonna, inserire nella mappa il valore None in corrispondenza del nome di colonna come chiave." +msgstr "Per restituire null in una colonna, inserire nella mappa il valore None con una chiave chiamata come la colonna." -#: plpython.c:2326 +#: plpython.c:2780 msgid "length of returned sequence did not match number of columns in row" msgstr "la lunghezza della sequenza ritornata non rispetta il numero di colonne presenti nella riga" -#: plpython.c:2419 +#: plpython.c:2888 #, c-format msgid "attribute \"%s\" does not exist in Python object" msgstr "l'attributo \"%s\" non esiste nell'oggetto Python" -#: plpython.c:2420 +#: plpython.c:2889 msgid "To return null in a column, let the returned object have an attribute named after column with value None." -msgstr "Per ritornare null in una colonna, assicurarsi che all'oggetto di ritorno corrisponda nel dizionario un attributo con valore None." +msgstr "Per restituire null in una colonna, l'oggetto restituito deve avere un attributo chiamato come la colonna con valore None." -#: plpython.c:2654 +#: plpython.c:3208 msgid "plan.status takes no arguments" msgstr "plan.status non accetta argomenti" -#: plpython.c:2778 -#: plpython.c:2921 -msgid "transaction aborted" -msgstr "transazione abortita" - -#: plpython.c:2785 -msgid "invalid arguments for plpy.prepare" -msgstr "argomenti non validi per plpy.prepare" - -#: plpython.c:2792 +#: plpython.c:3332 msgid "second argument of plpy.prepare must be a sequence" msgstr "il secondo argomento di plpy.prepare deve essere una sequenza" -#: plpython.c:2842 +#: plpython.c:3382 #, c-format msgid "plpy.prepare: type name at ordinal position %d is not a string" msgstr "plpy.prepare: il nome del tipo nella posizione %d non è una stringa" -#: plpython.c:2869 +#: plpython.c:3414 msgid "plpy.prepare does not support composite types" -msgstr "plpy.prepare non supporta tipi composti" - -#: plpython.c:2898 -msgid "unrecognized error in PLy_spi_prepare" -msgstr "errore non riconosciuto in PLy_spi_prepare" +msgstr "plpy.prepare non supporta tipi compositi" -#: plpython.c:2934 +#: plpython.c:3504 msgid "plpy.execute expected a query or a plan" msgstr "plpy.execute si aspetta una query o un plan" -#: plpython.c:2951 +#: plpython.c:3523 msgid "plpy.execute takes a sequence as its second argument" msgstr "plpy.execute richiede una sequenza come secondo argomento" -#: plpython.c:2967 +#: plpython.c:3539 msgid "could not execute plan" -msgstr "impossibile eseguire il piano" +msgstr "esecuzione del piano fallita" -#: plpython.c:2970 +#: plpython.c:3542 #, c-format msgid "Expected sequence of %d argument, got %d: %s" msgid_plural "Expected sequence of %d arguments, got %d: %s" -msgstr[0] "Sequenza attesa per l'argomento %d, ricevuto %d: %s" -msgstr[1] "Sequenza attesa di %d argomenti, ricevuti %d: %s" +msgstr[0] "Attesa sequenza di %d argomento, ricevuti %d: %s" +msgstr[1] "Attesa sequenza di %d argomenti, ricevuti %d: %s" -#: plpython.c:3047 -msgid "unrecognized error in PLy_spi_execute_plan" -msgstr "errore non riconosciuto nella funzione PLy_spi_execute_plan" - -#: plpython.c:3066 +#: plpython.c:3684 #, c-format msgid "SPI_execute_plan failed: %s" msgstr "SPI_execute_plan ha fallito: %s" -#: plpython.c:3093 -msgid "unrecognized error in PLy_spi_execute_query" -msgstr "errore non riconosciuto nella funzione PLy_spi_execute_query" - -#: plpython.c:3102 +#: plpython.c:3763 #, c-format msgid "SPI_execute failed: %s" msgstr "SPI_execute ha fallito: %s" -#: plpython.c:3162 +#: plpython.c:3818 msgid "unrecognized error in PLy_spi_execute_fetch_result" -msgstr "errore non riconosciuto nella funzione PLy_spi_execute_fetch_result" +msgstr "errore sconosciuto nella funzione PLy_spi_execute_fetch_result" + +#: plpython.c:3880 +msgid "this subtransaction has already been entered" +msgstr "si è già entrati in questa sotto-transazione" + +#: plpython.c:3886 plpython.c:3938 +msgid "this subtransaction has already been exited" +msgstr "si è già usciti da questa sotto-transazione" -#: plpython.c:3213 +#: plpython.c:3932 +msgid "this subtransaction has not been entered" +msgstr "non si è entrati in questa sotto-transazione" + +#: plpython.c:3944 +msgid "there is no subtransaction to exit from" +msgstr "non c'è nessuna transazione da cui uscire" + +#: plpython.c:4003 plpython.c:4007 +msgid "could not generate SPI exceptions" +msgstr "generazione delle eccezioni SPI fallita" + +#: plpython.c:4032 +msgid "could not add the spiexceptions module" +msgstr "aggiunta del modulo spiexceptions fallita" + +#: plpython.c:4052 +msgid "could not create the base SPI exceptions" +msgstr "creazione delle eccezioni SPI di base fallita" + +#: plpython.c:4120 +msgid "Python major version mismatch in session" +msgstr "mancata corrispondenza della versione maggiore di Python major nella sessione" + +#: plpython.c:4121 +#, c-format +msgid "This session has previously used Python major version %d, and it is now attempting to use Python major version %d." +msgstr "Questa sessione ha precedentemente usato Python con versione maggiore %d e ora sta tentando di usare Python con versione maggiore %d." + +#: plpython.c:4123 +msgid "Start a new session to use a different Python major version." +msgstr "Avvia una nuova sessione per usa una versione maggiore di Python diversa." + +#: plpython.c:4138 msgid "untrapped error in initialization" msgstr "errore non catturato durante l'inizializzazione" -#: plpython.c:3216 -msgid "could not create procedure cache" -msgstr "impossibile creare la procedura cache" - -#: plpython.c:3228 +#: plpython.c:4159 msgid "could not import \"__main__\" module" -msgstr "impossibile importare il modulo \"__main__\"" +msgstr "importazione del modulo \"__main__\"" + +#: plpython.c:4164 +msgid "could not create globals" +msgstr "creazione delle variabili globali fallita" -#: plpython.c:3235 +#: plpython.c:4168 msgid "could not initialize globals" -msgstr "impossibile inizializzare le variabili globali" +msgstr "inizializzazione delle variabili globali fallita" -#: plpython.c:3353 -msgid "could not parse error message in plpy.elog" -msgstr "impossibile interpretare il messaggio di errore in plpy.elog" +#: plpython.c:4206 plpython.c:4209 +msgid "could not import \"plpy\" module" +msgstr "importazione del modulo \"plpy\" fallita" -#: plpython.c:3482 -#: plpython.c:3486 -#, c-format -msgid "PL/Python: %s" -msgstr "PL/Python: %s" +#: plpython.c:4276 +msgid "could not unpack arguments in plpy.elog" +msgstr "non è stato possibile espandere gli argomenti in plpy.elog" -#: plpython.c:3483 +#: plpython.c:4284 +msgid "could not parse error message in plpy.elog" +msgstr "non è stato possibile interpretare il messaggio di errore in plpy.elog" + +#: plpython.c:4308 plpython.c:4542 plpython.c:4543 #, c-format msgid "%s" msgstr "%s" -#: plpython.c:3596 -msgid "out of memory" -msgstr "memoria esaurita" - -#: plpython.c:3650 -msgid "could not convert Python Unicode object to PostgreSQL server encoding" -msgstr "" +#: plpython.c:4894 +msgid "could not convert Python Unicode object to bytes" +msgstr "conversione dell'oggetto Unicode Python in byte fallita" -#~ msgid "" -#~ "could not compute string representation of Python object in PL/Python " -#~ "function \"%s\" while modifying trigger row" -#~ msgstr "" -#~ "impossibile calcolare la rappresentazione di tipo stringa dell'oggetto " -#~ "Python nella funzione PL/Python \"%s\" mentre si sta modificando la riga " -#~ "di trigger" - -#~ msgid "" -#~ "could not create string representation of Python object in PL/Python " -#~ "function \"%s\" while creating return value" -#~ msgstr "" -#~ "impossibile creare una rappresentazione di tipo stringa dell'oggetto " -#~ "Python nella funzione PL/Python \"%s\" durante la creazione del valore di " -#~ "ritorno" - -#~ msgid "PL/Python function \"%s\" failed" -#~ msgstr "la funzione PL/Python \"%s\" è fallita" +#: plpython.c:4899 +msgid "could not extract bytes from encoded string" +msgstr "estrazione dei byte dalla stringa codificata fallita" diff --git a/src/pl/plpython/po/ja.po b/src/pl/plpython/po/ja.po index 87e96c6557..b57352eba2 100644 --- a/src/pl/plpython/po/ja.po +++ b/src/pl/plpython/po/ja.po @@ -4,67 +4,66 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0rc1\n" +"Project-Id-Version: PostgreSQL 9.1 beta2\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-09-08 04:40+0900\n" -"PO-Revision-Date: 2010-09-08 04:50+0900\n" -"Last-Translator: HOTTA Michihide \n" +"POT-Creation-Date: 2011-06-16 05:31+0900\n" +"PO-Revision-Date: 2011-06-16 05:47+0900\n" +"Last-Translator: Honda Shigehiro \n" "Language-Team: Japan PostgreSQL Users Group \n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: plpython.c:424 +#: plpython.c:475 #, c-format msgid "PL/Python function \"%s\"" msgstr "PL/Python 関数 \"%s\"" -#: plpython.c:430 +#: plpython.c:482 msgid "PL/Python anonymous code block" msgstr "PL/Python の無名コードブロック" -#: plpython.c:437 +#: plpython.c:489 msgid "while modifying trigger row" msgstr "トリガー行を変更する際に" -#: plpython.c:444 +#: plpython.c:496 msgid "while creating return value" msgstr "戻り値を生成する際に" -#: plpython.c:613 plpython.c:639 +#: plpython.c:707 plpython.c:733 msgid "unexpected return value from trigger procedure" msgstr "トリガー手続きから期待しない戻り値が返されました" -#: plpython.c:614 +#: plpython.c:708 msgid "Expected None or a string." msgstr "None もしくは文字列を期待していました。" -#: plpython.c:629 +#: plpython.c:723 msgid "" "PL/Python trigger function returned \"MODIFY\" in a DELETE trigger -- ignored" -msgstr "" -"PL/Python トリガー関数が、DELETE トリガーで \"MODIFY\" を返しました-- 無視し" -"ました" +msgstr "PL/Python トリガー関数が、DELETE トリガーで \"MODIFY\" を返しました-- 無視しました" -#: plpython.c:640 +#: plpython.c:734 msgid "Expected None, \"OK\", \"SKIP\", or \"MODIFY\"." -msgstr "None, \"OK\", \"SKIP\", \"MODIFY\" のいずれかを期待していました" +msgstr "None, \"OK\", \"SKIP\", \"MODIFY\" のいずれかを期待していました。" -#: plpython.c:692 +#: plpython.c:786 msgid "TD[\"new\"] deleted, cannot modify row" msgstr "TD[\"new\"] は削除されました。もはや変更できません" -#: plpython.c:695 +#: plpython.c:789 msgid "TD[\"new\"] is not a dictionary" msgstr "TD[\"new\"] は辞書ではありません" -#: plpython.c:719 +#: plpython.c:813 #, c-format msgid "TD[\"new\"] dictionary key at ordinal position %d is not a string" msgstr "TD[\"new\"] 辞書の%d番目のキーが文字列ではありません" -#: plpython.c:725 +#: plpython.c:819 #, c-format msgid "" "key \"%s\" found in TD[\"new\"] does not exist as a column in the triggering " @@ -73,99 +72,106 @@ msgstr "" "TD[\"new\"] で見つかったキー \"%s\" は、行レベルトリガーにおけるカラムとして" "は存在しません" -#: plpython.c:819 +#: plpython.c:915 msgid "could not create new dictionary while building trigger arguments" msgstr "トリガーの引数を構成中に、新しい辞書を生成できませんでした" -#: plpython.c:1026 +#: plpython.c:1122 msgid "unsupported set function return mode" msgstr "未サポートの集合関数リターンモードです" -#: plpython.c:1027 +#: plpython.c:1123 msgid "" "PL/Python set-returning functions only support returning only value per call." msgstr "" "PL/Python の集合を返す関数では、1回のコールのたびに値だけを返すことがサポー" "トされています" -#: plpython.c:1039 +#: plpython.c:1135 msgid "returned object cannot be iterated" msgstr "返されたオブジェクトは反復適用できません" -#: plpython.c:1040 +#: plpython.c:1136 msgid "PL/Python set-returning functions must return an iterable object." msgstr "" "PL/Python の集合を返す関数では、イテレータ(反復子)オブジェクトを返さなけれ" "ばなりません" -#: plpython.c:1067 +#: plpython.c:1161 msgid "error fetching next item from iterator" msgstr "イテレータ(反復子)から次の項目をフェッチ(取り出し)できません" -#: plpython.c:1089 +#: plpython.c:1196 msgid "PL/Python function with return type \"void\" did not return None" msgstr "\"void\" 型を返す PL/Python 関数は None 型を返しません" -#: plpython.c:1246 +#: plpython.c:1287 +msgid "forcibly aborting a subtransaction that has not been exited" +msgstr "終了していないサブトランザクションを強制的にアボートしています" + +#: plpython.c:1403 msgid "PyList_SetItem() failed, while setting up arguments" msgstr "引数を設定する際に、PyList_SetItem() に失敗しました" -#: plpython.c:1250 +#: plpython.c:1407 msgid "PyDict_SetItemString() failed, while setting up arguments" msgstr "引数を設定する際に、PyDict_SetItemString() に失敗しました" -#: plpython.c:1319 -msgid "PyCObject_AsVoidPtr() failed" -msgstr "PyCObject_AsVoidPtr() に失敗しました" +#: plpython.c:1419 +msgid "" +"function returning record called in context that cannot accept type record" +msgstr "" +"レコード型を受け付けられないコンテキストでレコードを返す関数が呼び出されまし" +"た" -#: plpython.c:1427 +#: plpython.c:1633 msgid "trigger functions can only be called as triggers" msgstr "トリガー関数はトリガーとしてのみコールできます" -#: plpython.c:1431 plpython.c:1815 +#: plpython.c:1638 plpython.c:2089 #, c-format msgid "PL/Python functions cannot return type %s" msgstr "PL/Python 関数は %s 型を返せません" -#: plpython.c:1509 +#: plpython.c:1721 #, c-format msgid "PL/Python functions cannot accept type %s" msgstr "PL/Python 関数は %s 型を受け付けません" -#: plpython.c:1548 -msgid "PyCObject_FromVoidPtr() failed" -msgstr "PyCObject_FromVoidPtr() に失敗しました" - -#: plpython.c:1606 +#: plpython.c:1817 #, c-format msgid "could not compile PL/Python function \"%s\"" msgstr "PL/Python 関数 \"%s\" をコンパイルできません" -#: plpython.c:1817 +#: plpython.c:1820 +msgid "could not compile anonymous PL/Python code block" +msgstr "PL/Python匿名コードブロックをコンパイルできません" + +#: plpython.c:2091 msgid "PL/Python does not support conversion to arrays of row types." msgstr "PL/Python は行タイプ配列への変換をサポートしていません" -#: plpython.c:2020 +#: plpython.c:2300 msgid "cannot convert multidimensional array to Python list" msgstr "多次元配列を Python の list に変換できません" -#: plpython.c:2021 +#: plpython.c:2301 msgid "PL/Python only supports one-dimensional arrays." msgstr "PL/Python でサポートしているのは一次元配列のみです。" -#: plpython.c:2057 +#: plpython.c:2340 msgid "could not create new dictionary" msgstr "新しいディレクトリを作れません" -#: plpython.c:2133 +#: plpython.c:2435 msgid "could not create bytes representation of Python object" msgstr "バイト表現の Python オブジェクトを生成できませんでした" -#: plpython.c:2189 +#: plpython.c:2533 msgid "could not create string representation of Python object" msgstr "文字列表現の Python オブジェクトを生成できませんでした" -#: plpython.c:2200 +#: plpython.c:2544 msgid "" "could not convert Python object into cstring: Python string representation " "appears to contain null bytes" @@ -173,17 +179,17 @@ msgstr "" "Python オブジェクトを cstring に変換できませんでした:Python の文字列表現が " "null バイトを持つことになってしまいます" -#: plpython.c:2233 +#: plpython.c:2578 msgid "" "return value of function with array return type is not a Python sequence" msgstr "戻り値が配列である関数の戻り値が Python シーケンスではありません" -#: plpython.c:2308 +#: plpython.c:2654 #, c-format msgid "key \"%s\" not found in mapping" msgstr "マッピング上にキー \"%s\" が見つかりません" -#: plpython.c:2309 +#: plpython.c:2655 msgid "" "To return null in a column, add the value None to the mapping with the key " "named after the column." @@ -191,16 +197,16 @@ msgstr "" "カラムに null を入れて返すには、カラムの後につけた名前をキーとして、マッピン" "グに None 値を追加してください" -#: plpython.c:2352 +#: plpython.c:2703 msgid "length of returned sequence did not match number of columns in row" msgstr "返されたシーケンスの長さが、その行のカラム数と異なります" -#: plpython.c:2445 +#: plpython.c:2803 #, c-format msgid "attribute \"%s\" does not exist in Python object" msgstr "属性 \"%s\" が Python オブジェクト中に存在しません" -#: plpython.c:2446 +#: plpython.c:2804 msgid "" "To return null in a column, let the returned object have an attribute named " "after column with value None." @@ -208,80 +214,80 @@ msgstr "" "カラムに null を入れて返す場合は、そのカラムの後につけた名前で表される属性が" "値として None を持ち、返されるオブジェクトがその属性を含むようにしてください" -#: plpython.c:2680 +#: plpython.c:3123 msgid "plan.status takes no arguments" msgstr "plan.status は引数を取りません" -#: plpython.c:2804 plpython.c:2947 -msgid "transaction aborted" -msgstr "トランザクションがアボートしました" - -#: plpython.c:2811 -msgid "invalid arguments for plpy.prepare" -msgstr "plpy.prepare の引数が不正です" - -#: plpython.c:2818 +#: plpython.c:3247 msgid "second argument of plpy.prepare must be a sequence" msgstr "plpy.prepare の第二引数はシーケンスでなければなりません" -#: plpython.c:2868 +#: plpython.c:3297 #, c-format msgid "plpy.prepare: type name at ordinal position %d is not a string" msgstr "plpy.prepare: %d 番目の型名が文字列ではありません" -#: plpython.c:2895 +#: plpython.c:3329 msgid "plpy.prepare does not support composite types" msgstr "plpy.prepare は複合型をサポートしていません" -#: plpython.c:2924 -msgid "unrecognized error in PLy_spi_prepare" -msgstr "PLy_spi_prepare で認識できないエラーを検出しました" - -#: plpython.c:2960 +#: plpython.c:3419 msgid "plpy.execute expected a query or a plan" msgstr "plpy.execute はクエリーもしくは実行計画を期待していました" -#: plpython.c:2977 +#: plpython.c:3438 msgid "plpy.execute takes a sequence as its second argument" msgstr "plpy.execute は第二引数としてシーケンスを取ります" -#: plpython.c:2993 +#: plpython.c:3454 msgid "could not execute plan" msgstr "プランを実行できませんでした" -#: plpython.c:2996 +#: plpython.c:3457 #, c-format msgid "Expected sequence of %d argument, got %d: %s" msgid_plural "Expected sequence of %d arguments, got %d: %s" msgstr[0] "%d 番目の引数はシーケンスを期待していましたが、%d が現れました:%s" -#: plpython.c:3073 -msgid "unrecognized error in PLy_spi_execute_plan" -msgstr "PLy_spi_execute_plan で認識できないエラーを検出しました" - -#: plpython.c:3092 +#: plpython.c:3599 #, c-format msgid "SPI_execute_plan failed: %s" msgstr "SPI_execute_plan が失敗しました:%s" -#: plpython.c:3119 -msgid "unrecognized error in PLy_spi_execute_query" -msgstr "PLy_spi_execute_query で認識できないエラーを検出しました" - -#: plpython.c:3128 +#: plpython.c:3677 #, c-format msgid "SPI_execute failed: %s" msgstr "SPI_execute が失敗しました:%s" -#: plpython.c:3185 +#: plpython.c:3732 msgid "unrecognized error in PLy_spi_execute_fetch_result" msgstr "PLy_spi_execute_fetch_result で認識できないエラーを検出しました" -#: plpython.c:3239 +#: plpython.c:3794 +msgid "this subtransaction has already been entered" +msgstr "このサブトランザクションは到達済みです" + +#: plpython.c:3800 plpython.c:3852 +msgid "this subtransaction has already been exited" +msgstr "このサブトランザクションは終了済みです" + +#: plpython.c:3846 +msgid "this subtransaction has not been entered" +msgstr "このサブトランザクションには到達しません" + +#: plpython.c:3858 +msgid "there is no subtransaction to exit from" +msgstr "終了するためのサブトランザクションがありません" + +#: plpython.c:3940 +msgid "could not add the spiexceptions module" +msgstr "spiexceptionsモジュールを追加できませんでした" + +#: plpython.c:4017 msgid "Python major version mismatch in session" msgstr "セッションにおいて Python のメジャーバージョンが合致しません" -#: plpython.c:3240 +#: plpython.c:4018 #, c-format msgid "" "This session has previously used Python major version %d, and it is now " @@ -290,48 +296,66 @@ msgstr "" "このセッションではすでに Python のメジャーバージョン %d が使われていました" "が、ここで Python のメジャーバージョン %d を使おうとしています。" -#: plpython.c:3242 +#: plpython.c:4020 msgid "Start a new session to use a different Python major version." msgstr "" "Python の異なったメジャーバージョンを使う場合は、新しいセッションを開始してく" "ださい" -#: plpython.c:3257 +#: plpython.c:4035 msgid "untrapped error in initialization" msgstr "初期化中に捕獲できないエラーがありました" -#: plpython.c:3260 -msgid "could not create procedure cache" -msgstr "手続き用キャッシュ(procedure cache)を生成できませんでした" - -#: plpython.c:3272 +#: plpython.c:4063 msgid "could not import \"__main__\" module" msgstr "\"__main__\" モジュールをインポートできませんでした" -#: plpython.c:3279 +#: plpython.c:4070 msgid "could not initialize globals" msgstr "グローバル変数(globals)を初期化できませんでした" -#: plpython.c:3397 +#: plpython.c:4183 msgid "could not parse error message in plpy.elog" msgstr "plpy.elog でエラーメッセージをパースできませんでした" -#: plpython.c:3526 plpython.c:3530 -#, c-format -msgid "PL/Python: %s" -msgstr "PL/Python: %s" - -#: plpython.c:3527 +#: plpython.c:4207 plpython.c:4437 plpython.c:4438 plpython.c:4439 +#: plpython.c:4440 #, c-format msgid "%s" msgstr "%s" -#: plpython.c:3640 -msgid "out of memory" -msgstr "メモリ不足です" - -#: plpython.c:3694 +#: plpython.c:4794 msgid "could not convert Python Unicode object to PostgreSQL server encoding" msgstr "" "Python の Unicode オブジェクトを PostgreSQL サーバのエンコーディングに変換で" "きませんでした" + +#~ msgid "PyCObject_AsVoidPtr() failed" +#~ msgstr "PyCObject_AsVoidPtr() に失敗しました" + +#~ msgid "PyCObject_FromVoidPtr() failed" +#~ msgstr "PyCObject_FromVoidPtr() に失敗しました" + +#~ msgid "transaction aborted" +#~ msgstr "トランザクションがアボートしました" + +#~ msgid "invalid arguments for plpy.prepare" +#~ msgstr "plpy.prepare の引数が不正です" + +#~ msgid "unrecognized error in PLy_spi_prepare" +#~ msgstr "PLy_spi_prepare で認識できないエラーを検出しました" + +#~ msgid "unrecognized error in PLy_spi_execute_plan" +#~ msgstr "PLy_spi_execute_plan で認識できないエラーを検出しました" + +#~ msgid "unrecognized error in PLy_spi_execute_query" +#~ msgstr "PLy_spi_execute_query で認識できないエラーを検出しました" + +#~ msgid "could not create procedure cache" +#~ msgstr "手続き用キャッシュ(procedure cache)を生成できませんでした" + +#~ msgid "PL/Python: %s" +#~ msgstr "PL/Python: %s" + +#~ msgid "out of memory" +#~ msgstr "メモリ不足です" diff --git a/src/pl/plpython/po/pl.po b/src/pl/plpython/po/pl.po new file mode 100644 index 0000000000..766c595f85 --- /dev/null +++ b/src/pl/plpython/po/pl.po @@ -0,0 +1,335 @@ +# plpython message translation file for plpython +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# +# Begina Felicysym , 2011. +msgid "" +msgstr "" +"Project-Id-Version: plpython (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-09-29 22:53+0000\n" +"PO-Revision-Date: 2011-09-30 09:50-0300\n" +"Last-Translator: Begina Felicysym \n" +"Language-Team: Polish TotroiseSvn translation team\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1-beta1\n" + +#: plpython.c:475 +#, c-format +msgid "PL/Python function \"%s\"" +msgstr "funkcja PL/Python \"%s\"" + +#: plpython.c:482 +msgid "PL/Python anonymous code block" +msgstr "anonimowy blok kodu PL/Python" + +#: plpython.c:489 +msgid "while modifying trigger row" +msgstr "podczas modyfikowania wiersza wyzwalacza" + +#: plpython.c:496 +msgid "while creating return value" +msgstr "podczas tworzenia wartości zwracanej" + +#: plpython.c:707 plpython.c:733 +msgid "unexpected return value from trigger procedure" +msgstr "nieoczekiwana wartość zwracana przez procedury wyzwalacza" + +#: plpython.c:708 +msgid "Expected None or a string." +msgstr "Oczekiwano None lub ciąg znaków." + +#: plpython.c:723 +msgid "" +"PL/Python trigger function returned \"MODIFY\" in a DELETE trigger -- ignored" +msgstr "" +"funkcja wyzwalacza PL/Python zwróciła \"MODIFY\" w wyzwalaczu DELETE -- " +"zignorowano" + +#: plpython.c:734 +msgid "Expected None, \"OK\", \"SKIP\", or \"MODIFY\"." +msgstr "Oczekiwano None, \"OK\", \"SKIP\", lub \"MODIFY\"." + +#: plpython.c:786 +msgid "TD[\"new\"] deleted, cannot modify row" +msgstr "usunięto TD[\"new\"], nie można zmienić wiersza" + +#: plpython.c:789 +msgid "TD[\"new\"] is not a dictionary" +msgstr "TD[\"new\"] nie jest słownikiem" + +#: plpython.c:813 +#, c-format +msgid "TD[\"new\"] dictionary key at ordinal position %d is not a string" +msgstr "" +"klucz słownika TD[\"new\"] na pozycji porządkowej %d nie jest ciągiem znaków" + +#: plpython.c:819 +#, c-format +msgid "" +"key \"%s\" found in TD[\"new\"] does not exist as a column in the triggering " +"row" +msgstr "" +"klucz \"%s\" znaleziony w TD[\"new\"] nie istnieje jako kolumna w wierszu " +"obsługiwanym przez wyzwalacz" + +#: plpython.c:915 +msgid "could not create new dictionary while building trigger arguments" +msgstr "" +"nie można utworzyć nowego słownika w czasie tworzenia argumentów wyzwalacza" + +#: plpython.c:1122 +msgid "unsupported set function return mode" +msgstr "nieobsługiwany tryb zwracania przez funkcję grupy" + +#: plpython.c:1123 +msgid "" +"PL/Python set-returning functions only support returning only value per call." +msgstr "" +"funkcja zwracająca grupę PL/obsługuje tylko zwracanie jednej wartości w " +"wywołaniu." + +#: plpython.c:1135 +msgid "returned object cannot be iterated" +msgstr "zwrócony obiekt nie może być przeiterowany" + +#: plpython.c:1136 +msgid "PL/Python set-returning functions must return an iterable object." +msgstr "funkcje PL/Python zwracające grupę muszą zwracać iterowalny obiekt." + +#: plpython.c:1161 +msgid "error fetching next item from iterator" +msgstr "błąd pobierania następnego elementu z iteratora" + +#: plpython.c:1196 +msgid "PL/Python function with return type \"void\" did not return None" +msgstr "funkcja PL/Python zwracająca typ \"void\" nie zwróciła wartości None" + +#: plpython.c:1287 +msgid "forcibly aborting a subtransaction that has not been exited" +msgstr "wymuszone przerywanie podtransakcji, która nie została zakończona" + +#: plpython.c:1403 +msgid "PyList_SetItem() failed, while setting up arguments" +msgstr "nie powiodło się PyList_SetItem() podczas ustawiania argumentów" + +#: plpython.c:1407 +msgid "PyDict_SetItemString() failed, while setting up arguments" +msgstr "nie powiodło się PyDict_SetItemString() podczas ustawiania argumentów" + +#: plpython.c:1419 +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" + +#: plpython.c:1653 +msgid "trigger functions can only be called as triggers" +msgstr "procedury wyzwalaczy mogą być wywoływane jedynie przez wyzwalacze" + +#: plpython.c:1658 plpython.c:2131 +#, c-format +msgid "PL/Python functions cannot return type %s" +msgstr "funkcje PL/Python nie mogą zwracać wartości typu %s" + +#: plpython.c:1740 +#, c-format +msgid "PL/Python functions cannot accept type %s" +msgstr "funkcje PL/Python nie obsługują typu %s" + +#: plpython.c:1836 +#, c-format +msgid "could not compile PL/Python function \"%s\"" +msgstr "nie powiodła się kompilacja funkcji PL/Python \"%s\"" + +#: plpython.c:1839 +msgid "could not compile anonymous PL/Python code block" +msgstr "nie udało się skompilować anonimowego bloku kodu PL/Python" + +#: plpython.c:2133 +msgid "PL/Python does not support conversion to arrays of row types." +msgstr "PL/Python nie obsługuje konwersji typów wierszowych na tablice." + +#: plpython.c:2342 +msgid "cannot convert multidimensional array to Python list" +msgstr "nie można skonwertować tablicy wielowymiarowej na listę Python" + +#: plpython.c:2343 +msgid "PL/Python only supports one-dimensional arrays." +msgstr "PL/Python obsługuje tylko jednowymiarowe tablice." + +#: plpython.c:2382 +msgid "could not create new dictionary" +msgstr "nie można utworzyć nowego słownika" + +#: plpython.c:2477 +msgid "could not create bytes representation of Python object" +msgstr "nie można utworzyć reprezentacji bajtowej obiektu Python" + +#: plpython.c:2575 +msgid "could not create string representation of Python object" +msgstr "nie można utworzyć reprezentacji znakowej obiektu Python" + +#: plpython.c:2586 +msgid "" +"could not convert Python object into cstring: Python string representation " +"appears to contain null bytes" +msgstr "" +"nie można zmienić obiektu Python na cstring: reprezentacja ciągu znaków " +"Python wydaje się zawierać puste bajty" + +#: plpython.c:2620 +msgid "" +"return value of function with array return type is not a Python sequence" +msgstr "" +"wartość zwrócona przez funkcję zwracającą tablicę nie jest sekwencją Python" + +#: plpython.c:2700 +#, c-format +msgid "key \"%s\" not found in mapping" +msgstr "nie odnaleziono klucza \"%s\" w mapowaniu" + +#: plpython.c:2701 +msgid "" +"To return null in a column, add the value None to the mapping with the key " +"named after the column." +msgstr "" +"Aby zwrócić null w kolumnie, dodaj wartość None do mapowania z kluczem " +"nazwanym wedle kolumny." + +#: plpython.c:2749 +msgid "length of returned sequence did not match number of columns in row" +msgstr "długość zwróconej sekwencji nie jest równa liczbie kolumn w wierszu" + +#: plpython.c:2857 +#, c-format +msgid "attribute \"%s\" does not exist in Python object" +msgstr "atrybut \"%s\" nie istnieje w obiekcie Python" + +#: plpython.c:2858 +msgid "" +"To return null in a column, let the returned object have an attribute named " +"after column with value None." +msgstr "" +"Aby zwrócić null w kolumnie, niech zwrócony obiekt posiada atrybut nazwany " +"wedle kolumny z wartością None." + +#: plpython.c:3177 +msgid "plan.status takes no arguments" +msgstr "plan.status nie przyjmuje żadnych argumentów" + +#: plpython.c:3301 +msgid "second argument of plpy.prepare must be a sequence" +msgstr "drugi argument plpy.prepare musi być sekwencją" + +#: plpython.c:3351 +#, c-format +msgid "plpy.prepare: type name at ordinal position %d is not a string" +msgstr "" +"plpy.prepare: nazwa typu na pozycji porządkowej %d nie jest ciągiem znaków" + +#: plpython.c:3383 +msgid "plpy.prepare does not support composite types" +msgstr "plpy.prepare nie obsługuje typów złożonych" + +#: plpython.c:3473 +msgid "plpy.execute expected a query or a plan" +msgstr "plpy.execute oczekuje kwerendy lub planu" + +#: plpython.c:3492 +msgid "plpy.execute takes a sequence as its second argument" +msgstr "plpy.execute przyjmuje sekwencję jako drugi argument" + +#: plpython.c:3508 +msgid "could not execute plan" +msgstr "nie można wykonać planu" + +#: plpython.c:3511 +#, c-format +msgid "Expected sequence of %d argument, got %d: %s" +msgid_plural "Expected sequence of %d arguments, got %d: %s" +msgstr[0] "Oczekiwano sekwencji z %d argumentem, mamy %d: %s" +msgstr[1] "Oczekiwano sekwencji z %d argumentami, mamy %d: %s" +msgstr[2] "Oczekiwano sekwencji z %d argumentami, mamy %d: %s" + +#: plpython.c:3653 +#, c-format +msgid "SPI_execute_plan failed: %s" +msgstr "nie powiódł się SPI_execute_plan: %s" + +#: plpython.c:3731 +#, c-format +msgid "SPI_execute failed: %s" +msgstr "nie powiódł się SPI_execute: %s" + +#: plpython.c:3786 +msgid "unrecognized error in PLy_spi_execute_fetch_result" +msgstr "nierozpoznany błąd w PLy_spi_execute_fetch_result" + +#: plpython.c:3848 +msgid "this subtransaction has already been entered" +msgstr "ta podtransakcja już została wprowadzona" + +#: plpython.c:3854 plpython.c:3906 +msgid "this subtransaction has already been exited" +msgstr "ta podtransakcja już została zakończona" + +#: plpython.c:3900 +msgid "this subtransaction has not been entered" +msgstr "ta podtransakcja nie została wprowadzona" + +#: plpython.c:3912 +msgid "there is no subtransaction to exit from" +msgstr "brak podtransakcji by z niej wyjść" + +#: plpython.c:3994 +msgid "could not add the spiexceptions module" +msgstr "nie udało się dodać modułu spiexceptions" + +#: plpython.c:4077 +msgid "Python major version mismatch in session" +msgstr "niezgodna wersja główna Python w sesji" + +#: plpython.c:4078 +#, c-format +msgid "" +"This session has previously used Python major version %d, and it is now " +"attempting to use Python major version %d." +msgstr "" +"Ta sesja używała poprzednio Python w głównej wersji %d, teraz próbuje użyć " +"Python w głównej wersji %d." + +#: plpython.c:4080 +msgid "Start a new session to use a different Python major version." +msgstr "Uruchom nową sesję aby użyć innej głównej wersji Python." + +#: plpython.c:4095 +msgid "untrapped error in initialization" +msgstr "niewyłapany błąd w inicjacji" + +#: plpython.c:4123 +msgid "could not import \"__main__\" module" +msgstr "nie można zaimportować modułu \"__main__\"" + +#: plpython.c:4130 +msgid "could not initialize globals" +msgstr "nie można zainicjować zmiennych globalnych" + +#: plpython.c:4243 +msgid "could not parse error message in plpy.elog" +msgstr "nie można przetworzyć komunikatu błędu w plpy.elog" + +#: plpython.c:4267 plpython.c:4499 plpython.c:4500 +#, c-format +msgid "%s" +msgstr "%s" + +#: plpython.c:4854 +msgid "could not convert Python Unicode object to PostgreSQL server encoding" +msgstr "" +"nie można zmienić obiektu unikodowego Python na kodowanie serwera PostgreSQL" diff --git a/src/pl/plpython/po/pt_BR.po b/src/pl/plpython/po/pt_BR.po index 5296d9fad8..82e72f2ae7 100644 --- a/src/pl/plpython/po/pt_BR.po +++ b/src/pl/plpython/po/pt_BR.po @@ -1,13 +1,13 @@ # Brazilian Portuguese message translation file for plpython # Copyright (C) 2009 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Euler Taveira de Oliveira , 2009-2010. +# Euler Taveira de Oliveira , 2009-2012. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-09-09 10:18-0300\n" +"POT-Creation-Date: 2012-08-06 16:44-0300\n" "PO-Revision-Date: 2009-05-10 01:15-0300\n" "Last-Translator: Euler Taveira de Oliveira \n" "Language-Team: Brazilian Portuguese \n" @@ -17,57 +17,57 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n>1);\n" -#: plpython.c:424 +#: plpython.c:476 #, c-format msgid "PL/Python function \"%s\"" msgstr "função PL/Python \"%s\"" -#: plpython.c:430 +#: plpython.c:483 msgid "PL/Python anonymous code block" msgstr "bloco de código PL/Python anônimo" -#: plpython.c:437 +#: plpython.c:490 msgid "while modifying trigger row" msgstr "ao modificar registro de gatilho" -#: plpython.c:444 +#: plpython.c:497 msgid "while creating return value" msgstr "ao criar valor de retorno" -#: plpython.c:613 plpython.c:639 +#: plpython.c:708 plpython.c:734 msgid "unexpected return value from trigger procedure" msgstr "função de gatilho retornou valor inesperado" -#: plpython.c:614 +#: plpython.c:709 msgid "Expected None or a string." msgstr "None ou uma cadeia de caracteres era esperado." -#: plpython.c:629 +#: plpython.c:724 msgid "" "PL/Python trigger function returned \"MODIFY\" in a DELETE trigger -- ignored" msgstr "" "função de gatilho PL/Python retornou \"MODIFY\" em um gatilho DELETE -- " "ignorado" -#: plpython.c:640 +#: plpython.c:735 msgid "Expected None, \"OK\", \"SKIP\", or \"MODIFY\"." msgstr "Era esperado None, \"OK\", \"SKIP\" ou \"MODIFY\"." -#: plpython.c:692 +#: plpython.c:787 msgid "TD[\"new\"] deleted, cannot modify row" msgstr "TD[\"new\"] removido, não pode modificar registro" -#: plpython.c:695 +#: plpython.c:790 msgid "TD[\"new\"] is not a dictionary" msgstr "TD[\"new\"] não é um dicionário" -#: plpython.c:719 +#: plpython.c:814 #, c-format msgid "TD[\"new\"] dictionary key at ordinal position %d is not a string" msgstr "" "chave do dicionário TD[\"new\"] na posição %d não é uma cadeia de caracteres" -#: plpython.c:725 +#: plpython.c:820 #, c-format msgid "" "key \"%s\" found in TD[\"new\"] does not exist as a column in the triggering " @@ -76,115 +76,130 @@ msgstr "" "chave \"%s\" encontrada em TD[\"new\"] não existe como uma coluna no " "registro do gatilho" -#: plpython.c:819 +#: plpython.c:916 msgid "could not create new dictionary while building trigger arguments" msgstr "não pode criar novo dicionário ao construir argumentos do gatilho" -#: plpython.c:1026 +#: plpython.c:1123 msgid "unsupported set function return mode" msgstr "modo de retorno da função que retorna conjunto não é suportado" -#: plpython.c:1027 +#: plpython.c:1124 msgid "" "PL/Python set-returning functions only support returning only value per call." msgstr "" "funções PL/Python que retornam conjunto só suportam retornar um valor por " "chamada." -#: plpython.c:1039 +#: plpython.c:1136 msgid "returned object cannot be iterated" msgstr "objeto retornado não pode ser iterado" -#: plpython.c:1040 +#: plpython.c:1137 msgid "PL/Python set-returning functions must return an iterable object." msgstr "" "funções PL/Python que retornam conjunto devem retornar um objeto iterável." -#: plpython.c:1067 +#: plpython.c:1162 msgid "error fetching next item from iterator" msgstr "erro ao buscar próximo item do iterador" -#: plpython.c:1089 +#: plpython.c:1197 msgid "PL/Python function with return type \"void\" did not return None" msgstr "função PL/Python com tipo de retorno \"void\" não retornou None" -#: plpython.c:1246 +#: plpython.c:1277 +msgid "forcibly aborting a subtransaction that has not been exited" +msgstr "forçado a abortar subtransação que não foi concluída" + +#: plpython.c:1393 msgid "PyList_SetItem() failed, while setting up arguments" msgstr "PyList_SetItem() falhou ao definir argumentos" -#: plpython.c:1250 +#: plpython.c:1397 msgid "PyDict_SetItemString() failed, while setting up arguments" msgstr "PyDict_SetItemString() falhou ao definir argumentos" -#: plpython.c:1319 -msgid "PyCObject_AsVoidPtr() failed" -msgstr "PyCObject_AsVoidPtr() falhou" +#: plpython.c:1409 +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" -#: plpython.c:1427 +#: plpython.c:1643 msgid "trigger functions can only be called as triggers" msgstr "funções de gatilho só podem ser chamadas como gatilhos" -#: plpython.c:1431 plpython.c:1815 +#: plpython.c:1648 plpython.c:2121 #, c-format msgid "PL/Python functions cannot return type %s" msgstr "funções PL/Python não podem retornar tipo %s" -#: plpython.c:1509 +#: plpython.c:1730 #, c-format msgid "PL/Python functions cannot accept type %s" msgstr "funções PL/Python não podem aceitar tipo %s" -#: plpython.c:1548 -msgid "PyCObject_FromVoidPtr() failed" -msgstr "PyCObject_FromVoidPtr() falhou" - -#: plpython.c:1606 +#: plpython.c:1826 #, c-format msgid "could not compile PL/Python function \"%s\"" msgstr "não pôde compilar função PL/Python \"%s\"" -#: plpython.c:1817 +#: plpython.c:1829 +msgid "could not compile anonymous PL/Python code block" +msgstr "não pôde compilar bloco de código PL/Python anônimo" + +#: plpython.c:2123 msgid "PL/Python does not support conversion to arrays of row types." msgstr "PL/Python não suporta conversão para matrizes de tipos row." -#: plpython.c:2020 +#: plpython.c:2332 msgid "cannot convert multidimensional array to Python list" msgstr "não pode converter matriz multidimensional para lista Python" -#: plpython.c:2021 +#: plpython.c:2333 msgid "PL/Python only supports one-dimensional arrays." msgstr "PL/Python só suporta matrizes unidimensionais." -#: plpython.c:2057 +#: plpython.c:2339 +msgid "could not create new list" +msgstr "não pôde criar nova lista" + +#: plpython.c:2374 msgid "could not create new dictionary" msgstr "não pôde criar novo dicionário" -#: plpython.c:2133 +#: plpython.c:2471 msgid "could not create bytes representation of Python object" msgstr "não pôde criar representação de bytes de um objeto Python" -#: plpython.c:2189 +#: plpython.c:2563 msgid "could not create string representation of Python object" msgstr "" "não pôde criar representação de cadeia de caracteres de um objeto Python" -#: plpython.c:2200 +#: plpython.c:2574 msgid "" "could not convert Python object into cstring: Python string representation " "appears to contain null bytes" -msgstr "não pôde converter objeto Python em cstring: representação de cadeia de caracteres Python parece conter bytes nulos" +msgstr "" +"não pôde converter objeto Python em cstring: representação de cadeia de " +"caracteres Python parece conter bytes nulos" -#: plpython.c:2233 +#: plpython.c:2608 msgid "" "return value of function with array return type is not a Python sequence" -msgstr "valor de retorno da função do tipo matriz retorna tipo que não é uma sequência Python" +msgstr "" +"valor de retorno da função do tipo matriz retorna tipo que não é uma " +"sequência Python" -#: plpython.c:2308 +#: plpython.c:2708 #, c-format msgid "key \"%s\" not found in mapping" msgstr "chave \"%s\" não foi encontrada no mapeamento" -#: plpython.c:2309 +#: plpython.c:2709 msgid "" "To return null in a column, add the value None to the mapping with the key " "named after the column." @@ -192,17 +207,17 @@ msgstr "" "Para retornar nulo em uma coluna, adicionar o valor None no mapeamento cuja " "chave é o nome da coluna." -#: plpython.c:2352 +#: plpython.c:2757 msgid "length of returned sequence did not match number of columns in row" msgstr "" "tamanho da sequência retornada não combina com número de colunas no registro" -#: plpython.c:2445 +#: plpython.c:2865 #, c-format msgid "attribute \"%s\" does not exist in Python object" msgstr "atributo \"%s\" não existe no objeto Python" -#: plpython.c:2446 +#: plpython.c:2866 msgid "" "To return null in a column, let the returned object have an attribute named " "after column with value None." @@ -210,126 +225,139 @@ msgstr "" "Para retornar nulo na coluna, deixe o objeto retornado ter um atributo cuja " "chave é o nome do coluna e o valor é None." -#: plpython.c:2680 +#: plpython.c:3185 msgid "plan.status takes no arguments" msgstr "plan.status não contém argumentos" -#: plpython.c:2804 plpython.c:2947 -msgid "transaction aborted" -msgstr "transação interrompida" - -#: plpython.c:2811 -msgid "invalid arguments for plpy.prepare" -msgstr "argumentos inválidos para plpy.prepare" - -#: plpython.c:2818 +#: plpython.c:3309 msgid "second argument of plpy.prepare must be a sequence" msgstr "segundo argumento de plpy.prepare deve ser uma sequência" -#: plpython.c:2868 +#: plpython.c:3359 #, c-format msgid "plpy.prepare: type name at ordinal position %d is not a string" msgstr "" "plpy.prepare: nome do tipo na posição %d não é uma cadeia de caracteres" -#: plpython.c:2895 +#: plpython.c:3391 msgid "plpy.prepare does not support composite types" msgstr "plpy.prepare não suporta tipos compostos" -#: plpython.c:2924 -msgid "unrecognized error in PLy_spi_prepare" -msgstr "erro desconhecido em PLy_spi_prepare" - -#: plpython.c:2960 +#: plpython.c:3481 msgid "plpy.execute expected a query or a plan" msgstr "plpy.execute espera uma consulta ou um plano" -#: plpython.c:2977 +#: plpython.c:3500 msgid "plpy.execute takes a sequence as its second argument" msgstr "plpy.execute recebe uma sequência como segundo argumento" -#: plpython.c:2993 +#: plpython.c:3516 msgid "could not execute plan" msgstr "não pôde executar plano" -#: plpython.c:2996 +#: plpython.c:3519 #, c-format msgid "Expected sequence of %d argument, got %d: %s" msgid_plural "Expected sequence of %d arguments, got %d: %s" msgstr[0] "Sequência esperada de %d argumento, recebeu %d: %s" msgstr[1] "Sequência esperada de %d argumentos, recebeu %d: %s" -#: plpython.c:3073 -msgid "unrecognized error in PLy_spi_execute_plan" -msgstr "erro desconhecido em PLy_spi_execute_plan" - -#: plpython.c:3092 +#: plpython.c:3661 #, c-format msgid "SPI_execute_plan failed: %s" msgstr "SPI_execute_plan falhou: %s" -#: plpython.c:3119 -msgid "unrecognized error in PLy_spi_execute_query" -msgstr "erro desconhecido em PLy_spi_execute_query" - -#: plpython.c:3128 +#: plpython.c:3740 #, c-format msgid "SPI_execute failed: %s" msgstr "SPI_execute falhou: %s" -#: plpython.c:3185 +#: plpython.c:3795 msgid "unrecognized error in PLy_spi_execute_fetch_result" msgstr "erro desconhecido em PLy_spi_execute_fetch_result" -#: plpython.c:3239 +#: plpython.c:3857 +msgid "this subtransaction has already been entered" +msgstr "essa subtransação já foi iniciada" + +#: plpython.c:3863 plpython.c:3915 +msgid "this subtransaction has already been exited" +msgstr "essa subtransação já foi concluída" + +#: plpython.c:3909 +msgid "this subtransaction has not been entered" +msgstr "essa subtransação não foi iniciada" + +#: plpython.c:3921 +msgid "there is no subtransaction to exit from" +msgstr "não há uma subtransação a ser concluída" + +#: plpython.c:3980 plpython.c:3984 +msgid "could not generate SPI exceptions" +msgstr "não pôde gerar exceções da SPI" + +#: plpython.c:4009 +msgid "could not add the spiexceptions module" +msgstr "não pôde adicionar o módulo spiexceptions" + +#: plpython.c:4029 +msgid "could not create the base SPI exceptions" +msgstr "não pôde criar as exceções base da SPI" + +#: plpython.c:4097 msgid "Python major version mismatch in session" msgstr "versão do Python não corresponde na sessão" -#: plpython.c:3240 +#: plpython.c:4098 #, c-format msgid "" "This session has previously used Python major version %d, and it is now " "attempting to use Python major version %d." -msgstr "Esta sessão utilizou Python versão %d, e agora está tentando utilizar Python versão %d." +msgstr "" +"Esta sessão utilizou Python versão %d, e agora está tentando utilizar Python " +"versão %d." -#: plpython.c:3242 +#: plpython.c:4100 msgid "Start a new session to use a different Python major version." msgstr "Inicie uma nova sessão para utilizar uma versão diferente do Python." -#: plpython.c:3257 +#: plpython.c:4115 msgid "untrapped error in initialization" msgstr "erro não interceptado na inicialização" -#: plpython.c:3260 -msgid "could not create procedure cache" -msgstr "não pôde criar cache da função" - -#: plpython.c:3272 +#: plpython.c:4143 msgid "could not import \"__main__\" module" msgstr "não pôde importar módulo \"__main__\"" -#: plpython.c:3279 +#: plpython.c:4148 +msgid "could not create globals" +msgstr "não pôde criar globais" + +#: plpython.c:4152 msgid "could not initialize globals" msgstr "não pôde inicializar globais" -#: plpython.c:3397 +#: plpython.c:4190 plpython.c:4193 +msgid "could not import \"plpy\" module" +msgstr "não pôde importar módulo \"plpy\"" + +#: plpython.c:4260 +msgid "could not unpack arguments in plpy.elog" +msgstr "não pode desempacotar argumentos em plpy.elog" + +#: plpython.c:4268 msgid "could not parse error message in plpy.elog" msgstr "não pode analisar mensagem de erro em plpy.elog" -#: plpython.c:3526 plpython.c:3530 -#, c-format -msgid "PL/Python: %s" -msgstr "PL/Python: %s" - -#: plpython.c:3527 +#: plpython.c:4292 plpython.c:4526 plpython.c:4527 #, c-format msgid "%s" msgstr "%s" -#: plpython.c:3640 -msgid "out of memory" -msgstr "sem memória" +#: plpython.c:4878 +msgid "could not convert Python Unicode object to bytes" +msgstr "não pôde converter objeto Unicode Python para bytes" -#: plpython.c:3694 -msgid "could not convert Python Unicode object to PostgreSQL server encoding" -msgstr "não pôde converter objeto Unicode Python para codificação do servidor PostgreSQL" +#: plpython.c:4883 +msgid "could not extract bytes from encoded string" +msgstr "não pôde extrair bytes de cadeia de caracteres codificada" diff --git a/src/pl/plpython/po/ro.po b/src/pl/plpython/po/ro.po index 0d5f8c32cd..4e8a5cd8cc 100644 --- a/src/pl/plpython/po/ro.po +++ b/src/pl/plpython/po/ro.po @@ -5,230 +5,224 @@ # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 9.0\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-09-04 19:58+0000\n" -"PO-Revision-Date: 2010-09-26 19:49-0000\n" -"Last-Translator: Max \n" -"Language-Team: Română \n" +"POT-Creation-Date: 2011-11-09 20:40+0000\n" +"PO-Revision-Date: 2011-11-22 11:36-0000\n" +"Last-Translator: Gheorge Rosca Codreanu \n" +"Language-Team: Română \n" +"Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2;\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n" +"X-Poedit-Language: Romanian\n" +"X-Poedit-Country: ROMANIA\n" -#: plpython.c:424 +#: plpython.c:475 #, c-format msgid "PL/Python function \"%s\"" msgstr "funcție PL/Python \"%s\"" -#: plpython.c:430 +#: plpython.c:482 msgid "PL/Python anonymous code block" msgstr "bloc de cod PL/Python anonim" -#: plpython.c:437 +#: plpython.c:489 msgid "while modifying trigger row" msgstr "în timpul modificării triggerului de rând" -#: plpython.c:444 +#: plpython.c:496 msgid "while creating return value" msgstr "în timpul creării valorii rezultat" -#: plpython.c:613 -#: plpython.c:639 +#: plpython.c:707 +#: plpython.c:733 msgid "unexpected return value from trigger procedure" msgstr "procedura trigger a rezultat o valoare neașteptată" -#: plpython.c:614 +#: plpython.c:708 msgid "Expected None or a string." msgstr "așteptam None sau un șir String" -#: plpython.c:629 +#: plpython.c:723 msgid "PL/Python trigger function returned \"MODIFY\" in a DELETE trigger -- ignored" msgstr "funcția trigger PL/Python a rezultat \"MODIFY\" întro funcție trigger de tip DELETE -- ignor" -#: plpython.c:640 +#: plpython.c:734 msgid "Expected None, \"OK\", \"SKIP\", or \"MODIFY\"." msgstr "Așteptam None, \"OK\", \"SKIP\", sau \"MODIFY\"." -#: plpython.c:692 +#: plpython.c:786 msgid "TD[\"new\"] deleted, cannot modify row" msgstr "TD[\"new\"] șters, nu poate modifica rândul " -#: plpython.c:695 +#: plpython.c:789 msgid "TD[\"new\"] is not a dictionary" msgstr "TD[\"new\"] nu este un dicționar" -#: plpython.c:719 +#: plpython.c:813 #, c-format msgid "TD[\"new\"] dictionary key at ordinal position %d is not a string" msgstr "TD[\"new\"] cheia dicționarului la poziția %d nu este un șir String" -#: plpython.c:725 +#: plpython.c:819 #, c-format msgid "key \"%s\" found in TD[\"new\"] does not exist as a column in the triggering row" msgstr "cheia \"%s\" găsită în TD[\"new\"] nu există ca și coloană în rândul care a activat triggerul" -#: plpython.c:819 +#: plpython.c:915 msgid "could not create new dictionary while building trigger arguments" msgstr "nu pot crea un nou dicționar în timp ce construiesc argumentele triggerului" -#: plpython.c:1026 +#: plpython.c:1122 msgid "unsupported set function return mode" msgstr "mod de returnare a funcției set nesuportat" -#: plpython.c:1027 +#: plpython.c:1123 msgid "PL/Python set-returning functions only support returning only value per call." msgstr "funcțiile PL/Python ce returnează doar seturi suportă doar o singură valoare returnată la fiecare apel." -#: plpython.c:1039 +#: plpython.c:1135 msgid "returned object cannot be iterated" msgstr "obiectul returnat nu poate fi iterat" -#: plpython.c:1040 +#: plpython.c:1136 msgid "PL/Python set-returning functions must return an iterable object." msgstr "funcțiile PL/Python ce returnează seturi trebuie să aibă ca rezultat un obiect iterabil." -#: plpython.c:1067 +#: plpython.c:1161 msgid "error fetching next item from iterator" msgstr "eroare la obținerea următorului element din iterator" -#: plpython.c:1089 +#: plpython.c:1196 msgid "PL/Python function with return type \"void\" did not return None" msgstr "funcția PL/Python cu rezultatul de tip \"void\" nu a returbat None" -#: plpython.c:1246 +#: plpython.c:1287 +msgid "forcibly aborting a subtransaction that has not been exited" +msgstr "intrerupere forţată a unei subtranzacţii din care nu s-a ieşit" + +#: plpython.c:1403 msgid "PyList_SetItem() failed, while setting up arguments" msgstr "PyList_SetItem() a eșuat, în timpul creării argumentelor" -#: plpython.c:1250 +#: plpython.c:1407 msgid "PyDict_SetItemString() failed, while setting up arguments" msgstr "PyDict_SetItemString() a eșuat, în timpul creării argumentelor" -#: plpython.c:1319 -msgid "PyCObject_AsVoidPtr() failed" -msgstr "PyCObject_AsVoidPtr() a eșuat" +#: plpython.c:1419 +msgid "function returning record called in context that cannot accept type record" +msgstr "apel de funcție care are rezultat de tip rând într-un context care nu acceptă tipul rând" -#: plpython.c:1427 +#: plpython.c:1653 msgid "trigger functions can only be called as triggers" msgstr "funcţiile trigger pot fi apelate doar ca triggere" -#: plpython.c:1431 -#: plpython.c:1815 +#: plpython.c:1658 +#: plpython.c:2131 #, c-format msgid "PL/Python functions cannot return type %s" msgstr "funcțiile PL/Python nu pot returna tipul %s" -#: plpython.c:1509 +#: plpython.c:1740 #, c-format msgid "PL/Python functions cannot accept type %s" msgstr "funcțiile PL/Python nu pot accepta tipul %s" -#: plpython.c:1548 -msgid "PyCObject_FromVoidPtr() failed" -msgstr "PyCObject_FromVoidPtr() a eșuat" - -#: plpython.c:1606 +#: plpython.c:1836 #, c-format msgid "could not compile PL/Python function \"%s\"" msgstr "nu pot compila funcția PL/Python \"%s\"" -#: plpython.c:1817 +#: plpython.c:1839 +msgid "could not compile anonymous PL/Python code block" +msgstr "nu pot compila codul bloc anonim PL/Python" + +#: plpython.c:2133 msgid "PL/Python does not support conversion to arrays of row types." msgstr "PL/Python nu suportă conversia în array-uri de tip rând." -#: plpython.c:2020 +#: plpython.c:2342 msgid "cannot convert multidimensional array to Python list" msgstr "nu pot converti un array-ul mai multe dimensiuni într-o listă Python" -#: plpython.c:2021 +#: plpython.c:2343 msgid "PL/Python only supports one-dimensional arrays." msgstr "PL/Python suportă doar array-uri cu o dimensiune." -#: plpython.c:2057 +#: plpython.c:2382 msgid "could not create new dictionary" msgstr "nu pot crea un nou dicționar" -#: plpython.c:2133 +#: plpython.c:2477 msgid "could not create bytes representation of Python object" msgstr "nu pot crea reprezentarea octet a obiectului Python" -#: plpython.c:2189 +#: plpython.c:2575 msgid "could not create string representation of Python object" msgstr "nu pot crea reprezentarea șir String a obiectului Python" -#: plpython.c:2200 +#: plpython.c:2586 msgid "could not convert Python object into cstring: Python string representation appears to contain null bytes" msgstr "nu pot converti obiectul Python într-un cstring: reprezentarea string a obiectului Python pare să conțină octeți nuli" -#: plpython.c:2233 +#: plpython.c:2620 msgid "return value of function with array return type is not a Python sequence" msgstr "return value of function with array return type is not a Python sequence" -#: plpython.c:2308 +#: plpython.c:2700 #, c-format msgid "key \"%s\" not found in mapping" msgstr "cheia \"%s\" nu e gasită în mapare" -#: plpython.c:2309 +#: plpython.c:2701 msgid "To return null in a column, add the value None to the mapping with the key named after the column." msgstr "Pentru a obșine null într-o coloană, adăugați valoarea None la mapare cu cheia numită cu numele coloanei." -#: plpython.c:2352 +#: plpython.c:2749 msgid "length of returned sequence did not match number of columns in row" msgstr "lungimea secvenței returnate nu se potrivește cu numărul de coloane din rând" -#: plpython.c:2445 +#: plpython.c:2857 #, c-format msgid "attribute \"%s\" does not exist in Python object" msgstr "atributul \"%s\" nu există în obiectul Python" -#: plpython.c:2446 +#: plpython.c:2858 msgid "To return null in a column, let the returned object have an attribute named after column with value None." msgstr "Pentru a abține null într-o coloană, obiectul returnat trebuie să aibă un atribut cu numele coloanei și cu valoarea None." -#: plpython.c:2680 +#: plpython.c:3177 msgid "plan.status takes no arguments" msgstr "plan.status nu acceptă argumente" -#: plpython.c:2804 -#: plpython.c:2947 -msgid "transaction aborted" -msgstr "tranzacție anulată" - -#: plpython.c:2811 -msgid "invalid arguments for plpy.prepare" -msgstr "argumente invalide pentru plpy.prepare" - -#: plpython.c:2818 +#: plpython.c:3301 msgid "second argument of plpy.prepare must be a sequence" msgstr "al doilea argument al plpy.prepare trebuie să fie o secvență" -#: plpython.c:2868 +#: plpython.c:3351 #, c-format msgid "plpy.prepare: type name at ordinal position %d is not a string" msgstr "plpy.prepare: numele tipului la poziția %d nu este un șir" -#: plpython.c:2895 +#: plpython.c:3383 msgid "plpy.prepare does not support composite types" msgstr "plpy.prepare nu suportă tipul compozit" -#: plpython.c:2924 -msgid "unrecognized error in PLy_spi_prepare" -msgstr "eroare necunoscută în PLy_spi_prepare" - -#: plpython.c:2960 +#: plpython.c:3473 msgid "plpy.execute expected a query or a plan" msgstr "plpy.execute aștepta o interogare sau un plan" -#: plpython.c:2977 +#: plpython.c:3492 msgid "plpy.execute takes a sequence as its second argument" msgstr "plpy.execute acceptă o secvență ca al doilea argument" -#: plpython.c:2993 +#: plpython.c:3508 msgid "could not execute plan" msgstr "nu pot executa planul" -#: plpython.c:2996 +#: plpython.c:3511 #, c-format msgid "Expected sequence of %d argument, got %d: %s" msgid_plural "Expected sequence of %d arguments, got %d: %s" @@ -236,77 +230,107 @@ msgstr[0] "Secvența așteptată a argumentului %d, a obținut %d: %s" msgstr[1] "Secvența așteptată a argumentelor %d, a obținut %d: %s" msgstr[2] "Secvența așteptată a argumentelor %d, a obținut %d: %s" -#: plpython.c:3073 -msgid "unrecognized error in PLy_spi_execute_plan" -msgstr "eroare necunoscută în PLy_spi_execute_plan" - -#: plpython.c:3092 +#: plpython.c:3653 #, c-format msgid "SPI_execute_plan failed: %s" msgstr "SPI_execute_plan a eșuat: %s" -#: plpython.c:3119 -msgid "unrecognized error in PLy_spi_execute_query" -msgstr "eroare necunoscută în PLy_spi_execute_query" - -#: plpython.c:3128 +#: plpython.c:3731 #, c-format msgid "SPI_execute failed: %s" msgstr "SPI_execute a eșuat: %s" -#: plpython.c:3185 +#: plpython.c:3786 msgid "unrecognized error in PLy_spi_execute_fetch_result" msgstr "eroare necunoscută în PLy_spi_execute_fetch_result" -#: plpython.c:3239 +#: plpython.c:3848 +msgid "this subtransaction has already been entered" +msgstr "am intrat deja în acestă subtranzacţie" + +#: plpython.c:3854 +#: plpython.c:3906 +msgid "this subtransaction has already been exited" +msgstr "am ieşit deja din această subtranzacţie" + +#: plpython.c:3900 +msgid "this subtransaction has not been entered" +msgstr "nu s-a intrat în această subtranzacţie" + +#: plpython.c:3912 +msgid "there is no subtransaction to exit from" +msgstr "nu există nici o subtranzacţie din care să ieşim" + +#: plpython.c:3994 +msgid "could not add the spiexceptions module" +msgstr "nu pot adăuga modulul spiexceptions " + +#: plpython.c:4077 msgid "Python major version mismatch in session" msgstr "nepotrivire în sesiune de versiune majoră Python" -#: plpython.c:3240 +#: plpython.c:4078 #, c-format msgid "This session has previously used Python major version %d, and it is now attempting to use Python major version %d." msgstr "Această sesiune a folosit versiunea majoră de Python %d și acum încearcă să folosească versiunea majoră de Python %d." -#: plpython.c:3242 +#: plpython.c:4080 msgid "Start a new session to use a different Python major version." msgstr "Începe o nouă sesiune pentru a folosi o versiune majoră de Python diferită" -#: plpython.c:3257 +#: plpython.c:4095 msgid "untrapped error in initialization" msgstr "eroare netratată la inițializare" -#: plpython.c:3260 -msgid "could not create procedure cache" -msgstr "nu pot crea procedura cache" - -#: plpython.c:3272 +#: plpython.c:4123 msgid "could not import \"__main__\" module" msgstr "nu pot importa modulul \"__main__\"" -#: plpython.c:3279 +#: plpython.c:4130 msgid "could not initialize globals" msgstr "nu pot inițializa globals" -#: plpython.c:3397 +#: plpython.c:4243 msgid "could not parse error message in plpy.elog" msgstr "nu pot analiza mesajul de eroare în plpy.elog" -#: plpython.c:3526 -#: plpython.c:3530 -#, c-format -msgid "PL/Python: %s" -msgstr "PL/Python: %s" - -#: plpython.c:3527 +#: plpython.c:4267 +#: plpython.c:4499 +#: plpython.c:4500 #, c-format msgid "%s" msgstr "%s" -#: plpython.c:3640 -msgid "out of memory" -msgstr "memorie insuficientă" - -#: plpython.c:3694 +#: plpython.c:4854 msgid "could not convert Python Unicode object to PostgreSQL server encoding" msgstr "nu pot converti obiectul Unicode Python Unicode în codificarea folosită de serverul PostgreSQL" +#~ msgid "PyCObject_AsVoidPtr() failed" +#~ msgstr "PyCObject_AsVoidPtr() a eșuat" + +#~ msgid "PyCObject_FromVoidPtr() failed" +#~ msgstr "PyCObject_FromVoidPtr() a eșuat" + +#~ msgid "transaction aborted" +#~ msgstr "tranzacție anulată" + +#~ msgid "invalid arguments for plpy.prepare" +#~ msgstr "argumente invalide pentru plpy.prepare" + +#~ msgid "unrecognized error in PLy_spi_prepare" +#~ msgstr "eroare necunoscută în PLy_spi_prepare" + +#~ msgid "unrecognized error in PLy_spi_execute_plan" +#~ msgstr "eroare necunoscută în PLy_spi_execute_plan" + +#~ msgid "unrecognized error in PLy_spi_execute_query" +#~ msgstr "eroare necunoscută în PLy_spi_execute_query" + +#~ msgid "could not create procedure cache" +#~ msgstr "nu pot crea procedura cache" + +#~ msgid "PL/Python: %s" +#~ msgstr "PL/Python: %s" + +#~ msgid "out of memory" +#~ msgstr "memorie insuficientă" diff --git a/src/pl/plpython/po/ru.po b/src/pl/plpython/po/ru.po new file mode 100644 index 0000000000..5436b40695 --- /dev/null +++ b/src/pl/plpython/po/ru.po @@ -0,0 +1,370 @@ +# Russian message translation file for plpython +# Copyright (C) 2012 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# Alexander Lakhin , 2012. +# +# ChangeLog: +# +# - April 3, 2012: Bug fixes. Alexander Lakhin . +# - February 18, 2012: Complete translation for 9.1. Alexander Lakhin . +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 9.1\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2012-08-06 11:51+0000\n" +"PO-Revision-Date: 2012-08-06 17:37+0400\n" +"Last-Translator: Alexander Lakhin \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Lokalize 1.4\n" + +#: plpython.c:476 +#, c-format +msgid "PL/Python function \"%s\"" +msgstr "функция PL/Python \"%s\"" + +#: plpython.c:483 +msgid "PL/Python anonymous code block" +msgstr "анонимный блок кода PL/Python" + +#: plpython.c:490 +msgid "while modifying trigger row" +msgstr "при изменении строки в триггере" + +#: plpython.c:497 +msgid "while creating return value" +msgstr "при создании возвращаемого значения" + +#: plpython.c:708 plpython.c:734 +msgid "unexpected return value from trigger procedure" +msgstr "триггерная процедура вернула недопустимое значение" + +#: plpython.c:709 +msgid "Expected None or a string." +msgstr "Ожидалось None или строка." + +#: plpython.c:724 +msgid "" +"PL/Python trigger function returned \"MODIFY\" in a DELETE trigger -- ignored" +msgstr "" +"триггерная функция PL/Python вернула \"MODIFY\" в триггере DELETE -- " +"игнорируется" + +#: plpython.c:735 +msgid "Expected None, \"OK\", \"SKIP\", or \"MODIFY\"." +msgstr "Ожидалось None, \"OK\", \"SKIP\" или \"MODIFY\"." + +#: plpython.c:787 +msgid "TD[\"new\"] deleted, cannot modify row" +msgstr "элемент TD[\"new\"] удалён -- изменить строку нельзя" + +#: plpython.c:790 +msgid "TD[\"new\"] is not a dictionary" +msgstr "TD[\"new\"] - не словарь" + +#: plpython.c:814 +#, c-format +msgid "TD[\"new\"] dictionary key at ordinal position %d is not a string" +msgstr "ключ словаря TD[\"new\"] с порядковым номером %d не является строкой" + +#: plpython.c:820 +#, c-format +msgid "" +"key \"%s\" found in TD[\"new\"] does not exist as a column in the triggering " +"row" +msgstr "" +"ключу \"%s\", найденному в TD[\"new\"], не соответствует колонка в строке, " +"обрабатываемой триггером" + +#: plpython.c:916 +msgid "could not create new dictionary while building trigger arguments" +msgstr "не удалось создать словарь для передачи аргументов триггера" + +#: plpython.c:1123 +msgid "unsupported set function return mode" +msgstr "неподдерживаемый режим возврата для функции с результатом-множеством" + +#: plpython.c:1124 +msgid "" +"PL/Python set-returning functions only support returning only value per call." +msgstr "" +"Функции PL/Python с результатом-множеством могут возвращать только по одному " +"значению за вызов." + +#: plpython.c:1136 +msgid "returned object cannot be iterated" +msgstr "возвращаемый объект не поддерживает итерации" + +#: plpython.c:1137 +msgid "PL/Python set-returning functions must return an iterable object." +msgstr "" +"Функции PL/Python с результатом-множеством должны возвращать объекты с " +"возможностью итерации." + +#: plpython.c:1162 +msgid "error fetching next item from iterator" +msgstr "ошибка получения следующего элемента из итератора" + +#: plpython.c:1197 +msgid "PL/Python function with return type \"void\" did not return None" +msgstr "функция PL/Python с типом результата \"void\" вернула не None" + +#: plpython.c:1277 +msgid "forcibly aborting a subtransaction that has not been exited" +msgstr "принудительное прерывание незавершённой подтранзакции" + +#: plpython.c:1393 +msgid "PyList_SetItem() failed, while setting up arguments" +msgstr "ошибка в PyList_SetItem() при настройке аргументов" + +#: plpython.c:1397 +msgid "PyDict_SetItemString() failed, while setting up arguments" +msgstr "ошибка в PyDict_SetItemString() при настройке аргументов" + +#: plpython.c:1409 +msgid "" +"function returning record called in context that cannot accept type record" +msgstr "" +"функция, возвращающая запись, вызвана в контексте, не допускающем этот тип" + +#: plpython.c:1643 +msgid "trigger functions can only be called as triggers" +msgstr "триггерные функции могут вызываться только в триггерах" + +#: plpython.c:1648 plpython.c:2121 +#, c-format +msgid "PL/Python functions cannot return type %s" +msgstr "функции PL/Python не могут возвращать тип %s" + +#: plpython.c:1730 +#, c-format +msgid "PL/Python functions cannot accept type %s" +msgstr "функции PL/Python не могут принимать тип %s" + +#: plpython.c:1826 +#, c-format +msgid "could not compile PL/Python function \"%s\"" +msgstr "не удалось скомпилировать функцию PL/Python \"%s\"" + +#: plpython.c:1829 +msgid "could not compile anonymous PL/Python code block" +msgstr "не удалось скомпилировать анонимный блок кода PL/Python" + +#: plpython.c:2123 +msgid "PL/Python does not support conversion to arrays of row types." +msgstr "PL/Python не поддерживает преобразование в массивы кортежей." + +#: plpython.c:2332 +msgid "cannot convert multidimensional array to Python list" +msgstr "преобразовать многомерный массив в список Python нельзя" + +#: plpython.c:2333 +msgid "PL/Python only supports one-dimensional arrays." +msgstr "PL/Python поддерживает только одномерные массивы." + +#: plpython.c:2339 +msgid "could not create new list" +msgstr "не удалось создать список" + +#: plpython.c:2374 +msgid "could not create new dictionary" +msgstr "не удалось создать словарь" + +#: plpython.c:2471 +msgid "could not create bytes representation of Python object" +msgstr "не удалось создать байтовое представление объекта Python" + +#: plpython.c:2563 +msgid "could not create string representation of Python object" +msgstr "не удалось создать строковое представление объекта Python" + +#: plpython.c:2574 +msgid "" +"could not convert Python object into cstring: Python string representation " +"appears to contain null bytes" +msgstr "" +"не удалось преобразовать объект Python в cstring: похоже, представление " +"строки Python содержит нулевые байты" + +#: plpython.c:2608 +msgid "" +"return value of function with array return type is not a Python sequence" +msgstr "" +"возвращаемое значение функции с результатом-массивом не является " +"последовательностью" + +#: plpython.c:2708 +#, c-format +msgid "key \"%s\" not found in mapping" +msgstr "ключ \"%s\" не найден в сопоставлении" + +#: plpython.c:2709 +msgid "" +"To return null in a column, add the value None to the mapping with the key " +"named after the column." +msgstr "" +"Чтобы присвоить колонке NULL, добавьте в сопоставление значение None с " +"ключом-именем колонки." + +#: plpython.c:2757 +msgid "length of returned sequence did not match number of columns in row" +msgstr "длина возвращённой последовательности не равна числу колонок в строке" + +#: plpython.c:2865 +#, c-format +msgid "attribute \"%s\" does not exist in Python object" +msgstr "в объекте Python не существует атрибут \"%s\"" + +#: plpython.c:2866 +msgid "" +"To return null in a column, let the returned object have an attribute named " +"after column with value None." +msgstr "" +"Чтобы присвоить колонке NULL, присвойте возвращаемому значению атрибут с " +"именем колонки и значением None." + +#: plpython.c:3185 +msgid "plan.status takes no arguments" +msgstr "plan.status не принимает аргументы" + +#: plpython.c:3309 +msgid "second argument of plpy.prepare must be a sequence" +msgstr "вторым аргументом plpy.prepare должна быть последовательность" + +#: plpython.c:3359 +#, c-format +msgid "plpy.prepare: type name at ordinal position %d is not a string" +msgstr "plpy.prepare: имя типа с порядковым номером %d не является строкой" + +#: plpython.c:3391 +msgid "plpy.prepare does not support composite types" +msgstr "plpy.prepare не поддерживает составные типы" + +#: plpython.c:3481 +msgid "plpy.execute expected a query or a plan" +msgstr "plpy.execute ожидает запрос или план" + +#: plpython.c:3500 +msgid "plpy.execute takes a sequence as its second argument" +msgstr "plpy.execute принимает в качестве второго аргумента последовательность" + +#: plpython.c:3516 +msgid "could not execute plan" +msgstr "нельзя выполнить план" + +#: plpython.c:3519 +#, c-format +msgid "Expected sequence of %d argument, got %d: %s" +msgid_plural "Expected sequence of %d arguments, got %d: %s" +msgstr[0] "Ожидалась последовательность из %d аргумента, получено %d: %s" +msgstr[1] "Ожидалась последовательность из %d аргументов, получено %d: %s" +msgstr[2] "Ожидалась последовательность из %d аргументов, получено %d: %s" + +#: plpython.c:3661 +#, c-format +msgid "SPI_execute_plan failed: %s" +msgstr "ошибка в SPI_execute_plan: %s" + +#: plpython.c:3740 +#, c-format +msgid "SPI_execute failed: %s" +msgstr "ошибка в SPI_execute: %s" + +#: plpython.c:3795 +msgid "unrecognized error in PLy_spi_execute_fetch_result" +msgstr "нераспознанная ошибка в PLy_spi_execute_fetch_result" + +#: plpython.c:3857 +msgid "this subtransaction has already been entered" +msgstr "эта подтранзакция уже начата" + +#: plpython.c:3863 plpython.c:3915 +msgid "this subtransaction has already been exited" +msgstr "эта подтранзакция уже закончена" + +#: plpython.c:3909 +msgid "this subtransaction has not been entered" +msgstr "эта подтранзакция ещё не начата" + +#: plpython.c:3921 +msgid "there is no subtransaction to exit from" +msgstr "нет подтранзакции, которую нужно закончить" + +#: plpython.c:3980 plpython.c:3984 +msgid "could not generate SPI exceptions" +msgstr "не удалось сгенерировать исключения SPI" + +#: plpython.c:4009 +msgid "could not add the spiexceptions module" +msgstr "не удалось добавить модуль spiexceptions" + +#: plpython.c:4029 +msgid "could not create the base SPI exceptions" +msgstr "не удалось создать базовые объекты исключений SPI" + +#: plpython.c:4097 +msgid "Python major version mismatch in session" +msgstr "несовпадение базовой версии Python в сеансе" + +#: plpython.c:4098 +#, c-format +msgid "" +"This session has previously used Python major version %d, and it is now " +"attempting to use Python major version %d." +msgstr "" +"В данном сеансе до этого использовался Python базовой версии %d, а сейчас " +"планируется использовать Python версии %d." + +#: plpython.c:4100 +msgid "Start a new session to use a different Python major version." +msgstr "" +"Чтобы переключиться на другую базовую версию Python, начните новый сеанс." + +#: plpython.c:4115 +msgid "untrapped error in initialization" +msgstr "необработанная ошибка при инициализации" + +#: plpython.c:4143 +msgid "could not import \"__main__\" module" +msgstr "не удалось импортировать модуль \"__main__\"" + +#: plpython.c:4148 +msgid "could not create globals" +msgstr "не удалось создать глобальные данные" + +#: plpython.c:4152 +msgid "could not initialize globals" +msgstr "не удалось инициализировать глобальные данные" + +#: plpython.c:4190 plpython.c:4193 +msgid "could not import \"plpy\" module" +msgstr "не удалось импортировать модуль \"plpy\"" + +#: plpython.c:4260 +msgid "could not unpack arguments in plpy.elog" +msgstr "не удалось распаковать аргументы в plpy.elog" + +#: plpython.c:4268 +msgid "could not parse error message in plpy.elog" +msgstr "не удалось разобрать сообщение об ошибке в plpy.elog" + +#: plpython.c:4292 plpython.c:4526 plpython.c:4527 +#, c-format +msgid "%s" +msgstr "%s" + +#: plpython.c:4878 +msgid "could not convert Python Unicode object to bytes" +msgstr "не удалось преобразовать объект Python Unicode в байты" + +#: plpython.c:4883 +msgid "could not extract bytes from encoded string" +msgstr "не удалось извлечь байты из кодированной строки" + +#~ msgid "could not initialize plpy" +#~ msgstr "не удалось инициализировать plpy" diff --git a/src/pl/plpython/po/zh_CN.po b/src/pl/plpython/po/zh_CN.po index 09510e1cd2..41a1900fff 100644 --- a/src/pl/plpython/po/zh_CN.po +++ b/src/pl/plpython/po/zh_CN.po @@ -7,270 +7,289 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.0\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-10-15 16:49+0000\n" +"POT-Creation-Date: 2013-01-29 13:50+0000\n" "PO-Revision-Date: 2010-10-01 12:54+0800\n" "Last-Translator: Weibin \n" "Language-Team: Weibin \n" -"Language: \n" +"Language: zh_CN\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" -#: plpython.c:418 +#: plpython.c:482 #, c-format msgid "PL/Python function \"%s\"" msgstr "PL/Python函数\"%s\"" -#: plpython.c:425 +#: plpython.c:489 msgid "PL/Python anonymous code block" msgstr "PL/Python匿名代码块" -#: plpython.c:432 +#: plpython.c:496 msgid "while modifying trigger row" msgstr "同时正在修改触发器记录" -#: plpython.c:439 +#: plpython.c:503 msgid "while creating return value" msgstr "同时在创建返回值" -#: plpython.c:608 plpython.c:634 +#: plpython.c:717 plpython.c:743 msgid "unexpected return value from trigger procedure" msgstr "在触发器存储过程出现非期望的返回值" -#: plpython.c:609 +#: plpython.c:718 msgid "Expected None or a string." msgstr "期望空值或一个字符串" -#: plpython.c:624 +#: plpython.c:733 msgid "" "PL/Python trigger function returned \"MODIFY\" in a DELETE trigger -- ignored" msgstr "在DELETE触发器中的PL/Python 触发器函数返回 \"MODIFY\" -- 忽略" -#: plpython.c:635 +#: plpython.c:744 msgid "Expected None, \"OK\", \"SKIP\", or \"MODIFY\"." msgstr "期望None, \"OK\", \"SKIP\", 或\"MODIFY\"" -#: plpython.c:687 +#: plpython.c:796 msgid "TD[\"new\"] deleted, cannot modify row" msgstr "TD[\"new\"] 已删除,无法修改记录" -#: plpython.c:690 +#: plpython.c:799 msgid "TD[\"new\"] is not a dictionary" msgstr "TD[\"new\"]不是一个字典" -#: plpython.c:714 +#: plpython.c:823 #, c-format msgid "TD[\"new\"] dictionary key at ordinal position %d is not a string" msgstr "在顺序位置%d的TD[\"new\"]字典键值不是字符串" -#: plpython.c:720 +#: plpython.c:829 #, c-format msgid "" "key \"%s\" found in TD[\"new\"] does not exist as a column in the triggering " "row" msgstr "在 TD[\"new\"]中找到的键 \"%s\"在正在触发的记录中不是作为列而存在." -#: plpython.c:816 +#: plpython.c:925 msgid "could not create new dictionary while building trigger arguments" msgstr "在构建触发器参数的同时无法创建新的字典." -#: plpython.c:1023 +#: plpython.c:1132 msgid "unsupported set function return mode" msgstr "不支持集合函数返回模式" -#: plpython.c:1024 +#: plpython.c:1133 msgid "" "PL/Python set-returning functions only support returning only value per call." msgstr "PL/Python集合返回函数只支持在每次调用时返回值." -#: plpython.c:1036 +#: plpython.c:1145 msgid "returned object cannot be iterated" msgstr "所返回的对象无法迭代" -#: plpython.c:1037 +#: plpython.c:1146 msgid "PL/Python set-returning functions must return an iterable object." msgstr "PL/Python集合返回函数必须返回一个可迭代的对象." -#: plpython.c:1064 +#: plpython.c:1171 msgid "error fetching next item from iterator" msgstr "当从迭代器中取回下一个成员时出现错误" -#: plpython.c:1086 +#: plpython.c:1206 msgid "PL/Python function with return type \"void\" did not return None" msgstr "返回类型为\"void\"的PL/Python函数不返回None" -#: plpython.c:1241 +#: plpython.c:1286 +msgid "forcibly aborting a subtransaction that has not been exited" +msgstr "强行终止一个还未退出的子事务" + +#: plpython.c:1402 msgid "PyList_SetItem() failed, while setting up arguments" msgstr "当设置参数的同时, 执行PyList_SetItem()失败" -#: plpython.c:1245 +#: plpython.c:1406 msgid "PyDict_SetItemString() failed, while setting up arguments" msgstr "当设置参数的同时, 执行PyDict_SetItemString()失败" -#: plpython.c:1314 -msgid "PyCObject_AsVoidPtr() failed" -msgstr "执行PyCObject_AsVoidPtr()失败" +#: plpython.c:1418 +msgid "" +"function returning record called in context that cannot accept type record" +msgstr "返回值类型是记录的函数在不接受使用记录类型的环境中调用" -#: plpython.c:1422 +#: plpython.c:1666 msgid "trigger functions can only be called as triggers" msgstr "触发器函数只能以触发器的形式调用" -#: plpython.c:1426 plpython.c:1810 +#: plpython.c:1671 plpython.c:2144 #, c-format msgid "PL/Python functions cannot return type %s" msgstr "PL/Python函数不能返回类型%s" -#: plpython.c:1504 +#: plpython.c:1753 #, c-format msgid "PL/Python functions cannot accept type %s" msgstr "PL/Python函数不能接受类型%s" -#: plpython.c:1543 -msgid "PyCObject_FromVoidPtr() failed" -msgstr "执行PyCObject_FromVoidPtr()失败" - -#: plpython.c:1601 +#: plpython.c:1849 #, c-format msgid "could not compile PL/Python function \"%s\"" msgstr "无法编译PL/Python函数\"%s\"" -#: plpython.c:1812 +#: plpython.c:1852 +msgid "could not compile anonymous PL/Python code block" +msgstr "无法编译PL/Python中的匿名代码块" + +#: plpython.c:2146 msgid "PL/Python does not support conversion to arrays of row types." msgstr "PL/Python不支持对行类型数组的转换。" -#: plpython.c:2015 +#: plpython.c:2355 msgid "cannot convert multidimensional array to Python list" msgstr "无法将多维数组转换为Python列表" -#: plpython.c:2016 +#: plpython.c:2356 msgid "PL/Python only supports one-dimensional arrays." msgstr "PL/Python只支持使用一维数组" -#: plpython.c:2052 +#: plpython.c:2362 +#, fuzzy +msgid "could not create new list" +msgstr "无法创建新的Python列表" + +#: plpython.c:2397 msgid "could not create new dictionary" msgstr "无法创建新的字典" -#: plpython.c:2124 +#: plpython.c:2494 msgid "could not create bytes representation of Python object" msgstr "无法创建Python对象的字节表达式" -#: plpython.c:2178 +#: plpython.c:2586 msgid "could not create string representation of Python object" msgstr "无法创建Python对象的字符串表达式" -#: plpython.c:2189 +#: plpython.c:2597 msgid "" "could not convert Python object into cstring: Python string representation " "appears to contain null bytes" msgstr "无法将Python对象转换为cstring: Python字符串表达式可能包含空字节" -#: plpython.c:2223 +#: plpython.c:2631 msgid "" "return value of function with array return type is not a Python sequence" msgstr "带有数组返回类型的函数返回值不是一个Python序列" -#: plpython.c:2298 +#: plpython.c:2731 #, c-format msgid "key \"%s\" not found in mapping" msgstr "在映射中没有找到键\"%s\"" -#: plpython.c:2299 +#: plpython.c:2732 msgid "" "To return null in a column, add the value None to the mapping with the key " "named after the column." msgstr "为了在一列中返回空值, 需要在列的后面对带有已命名键的映射添加值None" -#: plpython.c:2342 +#: plpython.c:2780 msgid "length of returned sequence did not match number of columns in row" msgstr "所返回序列的长度与在记录中列的数量不匹配" -#: plpython.c:2435 +#: plpython.c:2888 #, c-format msgid "attribute \"%s\" does not exist in Python object" msgstr "在Python对象中不存在属性\"%s\"" -#: plpython.c:2436 +#: plpython.c:2889 msgid "" "To return null in a column, let the returned object have an attribute named " "after column with value None." msgstr "" "为了在一列中返回空值, 需要让返回的对象在带有值None的列后面的带有已命名属性" -#: plpython.c:2670 +#: plpython.c:3208 msgid "plan.status takes no arguments" msgstr "plan.status不带有参数" -#: plpython.c:2794 plpython.c:2937 -msgid "transaction aborted" -msgstr "事务终止" - -#: plpython.c:2801 -msgid "invalid arguments for plpy.prepare" -msgstr " plpy.prepare的无效参数" - -#: plpython.c:2808 +#: plpython.c:3332 msgid "second argument of plpy.prepare must be a sequence" msgstr "plpy.prepare的第二个参数必须是一个序列" -#: plpython.c:2858 +#: plpython.c:3382 #, c-format msgid "plpy.prepare: type name at ordinal position %d is not a string" msgstr "plpy.prepare: 在顺序位置%d的类型名称不是string" -#: plpython.c:2885 +#: plpython.c:3414 msgid "plpy.prepare does not support composite types" msgstr "plpy.prepare不支持使用组合类型" -#: plpython.c:2914 -msgid "unrecognized error in PLy_spi_prepare" -msgstr "在PLy_spi_prepare中无法识别的错误" - -#: plpython.c:2950 +#: plpython.c:3504 msgid "plpy.execute expected a query or a plan" msgstr "plpy.execute期望一个查询或一个计划" -#: plpython.c:2967 +#: plpython.c:3523 msgid "plpy.execute takes a sequence as its second argument" msgstr "plpy.execute将一个序列作为它的第二个参数" -#: plpython.c:2983 +#: plpython.c:3539 msgid "could not execute plan" msgstr "无法执行计划" -#: plpython.c:2986 +#: plpython.c:3542 #, c-format msgid "Expected sequence of %d argument, got %d: %s" msgid_plural "Expected sequence of %d arguments, got %d: %s" msgstr[0] "期望%d序列参数,但是得到%d: %s" -#: plpython.c:3065 -msgid "unrecognized error in PLy_spi_execute_plan" -msgstr "在PLy_spi_execute_plan中出现无法识别的错误" - -#: plpython.c:3084 +#: plpython.c:3684 #, c-format msgid "SPI_execute_plan failed: %s" msgstr "执行SPI_execute_plan失败: %s" -#: plpython.c:3111 -msgid "unrecognized error in PLy_spi_execute_query" -msgstr "在PLy_spi_execute_query中出现无法识别的错误" - -#: plpython.c:3120 +#: plpython.c:3763 #, c-format msgid "SPI_execute failed: %s" msgstr "SPI_execute执行失败: %s" -#: plpython.c:3177 +#: plpython.c:3818 msgid "unrecognized error in PLy_spi_execute_fetch_result" msgstr "在PLy_spi_execute_fetch_result中出现无法识别的错误" -#: plpython.c:3231 +#: plpython.c:3880 +msgid "this subtransaction has already been entered" +msgstr "已经进入该子事务" + +#: plpython.c:3886 plpython.c:3938 +msgid "this subtransaction has already been exited" +msgstr "已经退出该子事务" + +#: plpython.c:3932 +msgid "this subtransaction has not been entered" +msgstr "该子事务仍没有进入" + +#: plpython.c:3944 +msgid "there is no subtransaction to exit from" +msgstr "没有子事务可以退出" + +#: plpython.c:4003 plpython.c:4007 +msgid "could not generate SPI exceptions" +msgstr "无法产生SPI异常" + +#: plpython.c:4032 +msgid "could not add the spiexceptions module" +msgstr "无法添加spiexceptions模块 " + +# fe-connect.c:891 +#: plpython.c:4052 +msgid "could not create the base SPI exceptions" +msgstr "无法创建基本的SPI异常" + +#: plpython.c:4120 msgid "Python major version mismatch in session" msgstr "在会话中Python的主版本不匹配" -#: plpython.c:3232 +#: plpython.c:4121 #, c-format msgid "" "This session has previously used Python major version %d, and it is now " @@ -278,47 +297,80 @@ msgid "" msgstr "" "这个会话先前已经使用的Python主版本是%d,现在它试图使用的Python主版本是%d " -#: plpython.c:3234 +#: plpython.c:4123 msgid "Start a new session to use a different Python major version." msgstr "启动一个新的会话来使用一个不同的Python的主要版本" -#: plpython.c:3249 +#: plpython.c:4138 msgid "untrapped error in initialization" msgstr "在初始化过程中出现无法捕获的错误" -#: plpython.c:3252 -msgid "could not create procedure cache" -msgstr "无法创建存储过程缓存" - -#: plpython.c:3264 +#: plpython.c:4159 msgid "could not import \"__main__\" module" msgstr "无法导入模块\"__main__\" " -#: plpython.c:3271 +#: plpython.c:4164 +msgid "could not create globals" +msgstr "无法创建全局变量" + +#: plpython.c:4168 msgid "could not initialize globals" msgstr "无法初始化全局变量" -#: plpython.c:3389 +#: plpython.c:4206 plpython.c:4209 +msgid "could not import \"plpy\" module" +msgstr "无法导入模块\"plpy\" " + +#: plpython.c:4276 +msgid "could not unpack arguments in plpy.elog" +msgstr "无法解析plpy.elog中的参数" + +#: plpython.c:4284 msgid "could not parse error message in plpy.elog" msgstr "无法解析在plpy.elog中的错误消息" -#: plpython.c:3518 plpython.c:3522 -#, c-format -msgid "PL/Python: %s" -msgstr "PL/Python: %s" - -#: plpython.c:3519 +#: plpython.c:4308 plpython.c:4542 plpython.c:4543 #, c-format msgid "%s" msgstr "%s" -#: plpython.c:3632 -msgid "out of memory" -msgstr "内存用尽" +#: plpython.c:4894 +msgid "could not convert Python Unicode object to bytes" +msgstr "无法将Python中以Unicode编码的对象转换为PostgreSQL服务器字节码" + +#: plpython.c:4899 +msgid "could not extract bytes from encoded string" +msgstr "无法从已编码字符串里提取相应字节码值" + +#~ msgid "PyCObject_AsVoidPtr() failed" +#~ msgstr "执行PyCObject_AsVoidPtr()失败" + +#~ msgid "PyCObject_FromVoidPtr() failed" +#~ msgstr "执行PyCObject_FromVoidPtr()失败" + +#~ msgid "transaction aborted" +#~ msgstr "事务终止" + +#~ msgid "invalid arguments for plpy.prepare" +#~ msgstr " plpy.prepare的无效参数" + +#~ msgid "unrecognized error in PLy_spi_prepare" +#~ msgstr "在PLy_spi_prepare中无法识别的错误" + +#~ msgid "unrecognized error in PLy_spi_execute_plan" +#~ msgstr "在PLy_spi_execute_plan中出现无法识别的错误" + +#~ msgid "unrecognized error in PLy_spi_execute_query" +#~ msgstr "在PLy_spi_execute_query中出现无法识别的错误" + +#~ msgid "could not create procedure cache" +#~ msgstr "无法创建存储过程缓存" + +#~ msgid "PL/Python: %s" +#~ msgstr "PL/Python: %s" -#: plpython.c:3686 -msgid "could not convert Python Unicode object to PostgreSQL server encoding" -msgstr "无法将Python中以Unicode编码的对象转换为PostgreSQL服务器编码形式" +#~ msgid "out of memory" +#~ msgstr "内存用尽" #~ msgid "" #~ "could not compute string representation of Python object in PL/Python " diff --git a/src/pl/plpython/sql/plpython_error.sql b/src/pl/plpython/sql/plpython_error.sql index 4add6aaf05..502bbec38f 100644 --- a/src/pl/plpython/sql/plpython_error.sql +++ b/src/pl/plpython/sql/plpython_error.sql @@ -257,6 +257,26 @@ SELECT specific_exception(2); SELECT specific_exception(NULL); SELECT specific_exception(2); +/* SPI errors in PL/Python functions should preserve the SQLSTATE value + */ +CREATE FUNCTION python_unique_violation() RETURNS void AS $$ +plpy.execute("insert into specific values (1)") +plpy.execute("insert into specific values (1)") +$$ LANGUAGE plpythonu; + +CREATE FUNCTION catch_python_unique_violation() RETURNS text AS $$ +begin + begin + perform python_unique_violation(); + exception when unique_violation then + return 'ok'; + end; + return 'not reached'; +end; +$$ language plpgsql; + +SELECT catch_python_unique_violation(); + /* manually starting subtransactions - a bad idea */ CREATE FUNCTION manual_subxact() RETURNS void AS $$ diff --git a/src/pl/plpython/sql/plpython_record.sql b/src/pl/plpython/sql/plpython_record.sql index d727e6054f..9bab4c9e82 100644 --- a/src/pl/plpython/sql/plpython_record.sql +++ b/src/pl/plpython/sql/plpython_record.sql @@ -43,6 +43,8 @@ elif typ == 'obj': type_record.first = first type_record.second = second return type_record +elif typ == 'str': + return "('%s',%r)" % (first, second) $$ LANGUAGE plpythonu; CREATE FUNCTION test_in_out_params(first in text, second out text) AS $$ @@ -108,10 +110,27 @@ SELECT * FROM test_type_record_as('obj', null, 2, false); SELECT * FROM test_type_record_as('obj', 'three', 3, false); SELECT * FROM test_type_record_as('obj', null, null, true); +SELECT * FROM test_type_record_as('str', 'one', 1, false); + SELECT * FROM test_in_out_params('test_in'); SELECT * FROM test_in_out_params_multi('test_in'); SELECT * FROM test_inout_params('test_in'); +-- try changing the return types and call functions again + +ALTER TABLE table_record DROP COLUMN first; +ALTER TABLE table_record DROP COLUMN second; +ALTER TABLE table_record ADD COLUMN first text; +ALTER TABLE table_record ADD COLUMN second int4; + +SELECT * FROM test_table_record_as('obj', 'one', 1, false); + +ALTER TYPE type_record DROP ATTRIBUTE first; +ALTER TYPE type_record DROP ATTRIBUTE second; +ALTER TYPE type_record ADD ATTRIBUTE first text; +ALTER TYPE type_record ADD ATTRIBUTE second int4; + +SELECT * FROM test_type_record_as('obj', 'one', 1, false); -- errors cases @@ -136,3 +155,9 @@ CREATE FUNCTION test_type_record_error3() RETURNS type_record AS $$ $$ LANGUAGE plpythonu; SELECT * FROM test_type_record_error3(); + +CREATE FUNCTION test_type_record_error4() RETURNS type_record AS $$ + return 'foo' +$$ LANGUAGE plpythonu; + +SELECT * FROM test_type_record_error4(); diff --git a/src/pl/plpython/sql/plpython_trigger.sql b/src/pl/plpython/sql/plpython_trigger.sql index 2afdf51127..404a63b137 100644 --- a/src/pl/plpython/sql/plpython_trigger.sql +++ b/src/pl/plpython/sql/plpython_trigger.sql @@ -346,3 +346,57 @@ CREATE TRIGGER composite_trigger BEFORE INSERT ON composite_trigger_test INSERT INTO composite_trigger_test VALUES (NULL, NULL); SELECT * FROM composite_trigger_test; + + +-- triggers with composite type columns (bug #6559) + +CREATE TABLE composite_trigger_noop_test (f1 comp1, f2 comp2); + +CREATE FUNCTION composite_trigger_noop_f() RETURNS trigger AS $$ + return 'MODIFY' +$$ LANGUAGE plpythonu; + +CREATE TRIGGER composite_trigger_noop BEFORE INSERT ON composite_trigger_noop_test + FOR EACH ROW EXECUTE PROCEDURE composite_trigger_noop_f(); + +INSERT INTO composite_trigger_noop_test VALUES (NULL, NULL); +INSERT INTO composite_trigger_noop_test VALUES (ROW(1, 'f'), NULL); +INSERT INTO composite_trigger_noop_test VALUES (ROW(NULL, 't'), ROW(1, 'f')); +SELECT * FROM composite_trigger_noop_test; + + +-- nested composite types + +CREATE TYPE comp3 AS (c1 comp1, c2 comp2, m integer); + +CREATE TABLE composite_trigger_nested_test(c comp3); + +CREATE FUNCTION composite_trigger_nested_f() RETURNS trigger AS $$ + return 'MODIFY' +$$ LANGUAGE plpythonu; + +CREATE TRIGGER composite_trigger_nested BEFORE INSERT ON composite_trigger_nested_test + FOR EACH ROW EXECUTE PROCEDURE composite_trigger_nested_f(); + +INSERT INTO composite_trigger_nested_test VALUES (NULL); +INSERT INTO composite_trigger_nested_test VALUES (ROW(ROW(1, 'f'), NULL, 3)); +INSERT INTO composite_trigger_nested_test VALUES (ROW(ROW(NULL, 't'), ROW(1, 'f'), NULL)); +SELECT * FROM composite_trigger_nested_test; + +-- check that using a function as a trigger over two tables works correctly +CREATE FUNCTION trig1234() RETURNS trigger LANGUAGE plpythonu AS $$ + TD["new"]["data"] = '1234' + return 'MODIFY' +$$; + +CREATE TABLE a(data text); +CREATE TABLE b(data int); -- different type conversion + +CREATE TRIGGER a_t BEFORE INSERT ON a FOR EACH ROW EXECUTE PROCEDURE trig1234(); +CREATE TRIGGER b_t BEFORE INSERT ON b FOR EACH ROW EXECUTE PROCEDURE trig1234(); + +INSERT INTO a DEFAULT VALUES; +SELECT * FROM a; +DROP TABLE a; +INSERT INTO b DEFAULT VALUES; +SELECT * FROM b; diff --git a/src/pl/tcl/nls.mk b/src/pl/tcl/nls.mk index 1fc912c5eb..01257e9cf9 100644 --- a/src/pl/tcl/nls.mk +++ b/src/pl/tcl/nls.mk @@ -1,5 +1,5 @@ # src/pl/tcl/nls.mk CATALOG_NAME := pltcl -AVAIL_LANGUAGES := de es fr it ja pt_BR ro tr zh_CN zh_TW +AVAIL_LANGUAGES := cs de es fr it ja pl pt_BR ro ru tr zh_CN zh_TW GETTEXT_FILES := pltcl.c GETTEXT_TRIGGERS:= errmsg errmsg_plural:1,2 errdetail errdetail_log errdetail_plural:1,2 errhint errcontext diff --git a/src/pl/tcl/pltcl--1.0.sql b/src/pl/tcl/pltcl--1.0.sql index 897e1a1fe9..ecb264c818 100644 --- a/src/pl/tcl/pltcl--1.0.sql +++ b/src/pl/tcl/pltcl--1.0.sql @@ -7,3 +7,5 @@ */ CREATE PROCEDURAL LANGUAGE pltcl; + +COMMENT ON PROCEDURAL LANGUAGE pltcl IS 'PL/Tcl procedural language'; diff --git a/src/pl/tcl/pltclu--1.0.sql b/src/pl/tcl/pltclu--1.0.sql index e53bb04e6d..72dcef11e5 100644 --- a/src/pl/tcl/pltclu--1.0.sql +++ b/src/pl/tcl/pltclu--1.0.sql @@ -7,3 +7,5 @@ */ CREATE PROCEDURAL LANGUAGE pltclu; + +COMMENT ON PROCEDURAL LANGUAGE pltclu IS 'PL/TclU untrusted procedural language'; diff --git a/src/pl/tcl/po/cs.po b/src/pl/tcl/po/cs.po new file mode 100644 index 0000000000..ceed89d4ae --- /dev/null +++ b/src/pl/tcl/po/cs.po @@ -0,0 +1,55 @@ +# Czech message translation file for pltcl +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# +# Tomáš Vondra , 2011, 2012, 2013. +msgid "" +msgstr "" +"Project-Id-Version: pltcl-cs (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-09-04 02:52+0000\n" +"PO-Revision-Date: 2011-09-04 23:43+0200\n" +"Last-Translator: Tomas Vondra \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.2\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#: pltcl.c:1149 +#, c-format +msgid "%s" +msgstr "%s" + +#: pltcl.c:1150 +#, c-format +msgid "" +"%s\n" +"in PL/Tcl function \"%s\"" +msgstr "" +"%s\n" +"v PL/Tcl funkci \"%s\"" + +#: pltcl.c:1254 pltcl.c:1261 +msgid "out of memory" +msgstr "nedostatek paměti" + +#: pltcl.c:1308 +msgid "trigger functions can only be called as triggers" +msgstr "trigger funkce mohou může být volány pouze jako triggery" + +#: pltcl.c:1317 +#, c-format +msgid "PL/Tcl functions cannot return type %s" +msgstr "PL/Tcl funkce nemohou vracet datový typ %s" + +#: pltcl.c:1329 +msgid "PL/Tcl functions cannot return composite types" +msgstr "PL/Tcl funkce nemohou vracet složené datové typy" + +#: pltcl.c:1368 +#, c-format +msgid "PL/Tcl functions cannot accept type %s" +msgstr "PL/Tcl funkce nemohou přijímat datový typ %s" diff --git a/src/pl/tcl/po/de.po b/src/pl/tcl/po/de.po index 391546d158..aff940865d 100644 --- a/src/pl/tcl/po/de.po +++ b/src/pl/tcl/po/de.po @@ -1,8 +1,6 @@ # German message translation file for PL/Tcl # Peter Eisentraut , 2009. # -# pgtranslation Id: pltcl.po,v 1.1 2009/01/14 22:07:09 petere Exp $ -# # Use these quotes: �%s� # msgid "" @@ -13,6 +11,7 @@ msgstr "" "PO-Revision-Date: 2009-01-14 22:05+0200\n" "Last-Translator: Peter Eisentraut \n" "Language-Team: German \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/pl/tcl/po/es.po b/src/pl/tcl/po/es.po index 008dd53932..e677556651 100644 --- a/src/pl/tcl/po/es.po +++ b/src/pl/tcl/po/es.po @@ -1,31 +1,30 @@ # Spanish translation file for pltcl # -# Copyright (C) 2009-2010 PostgreSQL Global Development Group +# Copyright (C) 2009-2012 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. # # Emanuel Calvo Franco , 2009. -# Alvaro Herrera , 2009 -# -# pgtranslation Id: pltcl.po,v 1.2 2010/02/02 20:07:49 alvherre Exp $ +# Alvaro Herrera , 2009-2012 # msgid "" msgstr "" -"Project-Id-Version: pltcl (PostgreSQL 8.4)\n" +"Project-Id-Version: pltcl (PostgreSQL 9.1)\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2009-04-01 11:24+0000\n" -"PO-Revision-Date: 2010-02-02 17:01-0300\n" +"POT-Creation-Date: 2013-08-26 19:38+0000\n" +"PO-Revision-Date: 2012-02-21 22:54-0300\n" "Last-Translator: Emanuel Calvo Franco \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" -#: pltcl.c:1027 +#: pltcl.c:1149 #, c-format msgid "%s" msgstr "%s" -#: pltcl.c:1028 +#: pltcl.c:1150 #, c-format msgid "" "%s\n" @@ -34,24 +33,24 @@ msgstr "" "%s\n" "en función PL/Tcl \"%s\"" -#: pltcl.c:1127 +#: pltcl.c:1254 pltcl.c:1261 msgid "out of memory" msgstr "memoria agotada" -#: pltcl.c:1192 +#: pltcl.c:1308 msgid "trigger functions can only be called as triggers" msgstr "las funciones disparadoras sólo pueden ser invocadas como disparadores" -#: pltcl.c:1201 +#: pltcl.c:1317 #, c-format msgid "PL/Tcl functions cannot return type %s" msgstr "las funciones PL/Tcl no pueden retornar tipo %s" -#: pltcl.c:1213 +#: pltcl.c:1329 msgid "PL/Tcl functions cannot return composite types" msgstr "las funciones PL/Tcl no pueden retornar tipos compuestos" -#: pltcl.c:1253 +#: pltcl.c:1368 #, c-format msgid "PL/Tcl functions cannot accept type %s" msgstr "las funciones PL/Tcl no pueden aceptar el tipog%s" diff --git a/src/pl/tcl/po/fr.po b/src/pl/tcl/po/fr.po index 91dca90b2a..53b81418af 100644 --- a/src/pl/tcl/po/fr.po +++ b/src/pl/tcl/po/fr.po @@ -1,8 +1,6 @@ # translation of pltcl.po to fr_fr # french message translation file for pltcl # -# $PostgreSQL$ -# # Use these quotes: � %s � # Guillaume Lelarge , 2009. # @@ -14,6 +12,7 @@ msgstr "" "PO-Revision-Date: 2009-04-05 13:46+0100\n" "Last-Translator: Guillaume Lelarge \n" "Language-Team: French \n" +"Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/pl/tcl/po/it.po b/src/pl/tcl/po/it.po index 384afbab0e..cdce8c3a97 100644 --- a/src/pl/tcl/po/it.po +++ b/src/pl/tcl/po/it.po @@ -7,7 +7,7 @@ # # Traduttori: # * Flavio Spada -# +# # Revisori: # * Gabriele Bartolini # @@ -16,23 +16,24 @@ # msgid "" msgstr "" -"Project-Id-Version: pltcl\n" +"Project-Id-Version: pltcl (PostgreSQL) 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-03-26 13:16+0000\n" -"PO-Revision-Date: 2010-03-27 12:44:19+0100\n" -"Last-Translator: Gabriele Bartolini \n" +"POT-Creation-Date: 2013-01-29 13:50+0000\n" +"PO-Revision-Date: 2012-11-04 18:06+0100\n" +"Last-Translator: Daniele Varrazzo \n" "Language-Team: Gruppo traduzioni ITPUG \n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" +"X-Generator: Poedit 1.5.4\n" -#: pltcl.c:1029 +#: pltcl.c:1149 #, c-format msgid "%s" msgstr "%s" -#: pltcl.c:1030 +#: pltcl.c:1150 #, c-format msgid "" "%s\n" @@ -41,25 +42,24 @@ msgstr "" "%s\n" "nella funzione PL/Tcl \"%s\"" -#: pltcl.c:1127 +#: pltcl.c:1254 pltcl.c:1261 msgid "out of memory" msgstr "memoria esaurita" -#: pltcl.c:1191 +#: pltcl.c:1308 msgid "trigger functions can only be called as triggers" -msgstr "le funzioni trigger possono essere chiamate solo come trigger" +msgstr "le funzioni trigger possono essere chiamate esclusivamente da trigger" -#: pltcl.c:1200 +#: pltcl.c:1317 #, c-format msgid "PL/Tcl functions cannot return type %s" -msgstr "le funzioni PL/Tcl non possono ritornare il tipo %s" +msgstr "le funzioni PL/Tcl non possono restituire il tipo %s" -#: pltcl.c:1212 +#: pltcl.c:1329 msgid "PL/Tcl functions cannot return composite types" -msgstr "le funzioni PL.Tcl non possono ritornare tipi composti" +msgstr "le funzioni PL/Tcl non possono restituire tipi compositi" -#: pltcl.c:1251 +#: pltcl.c:1368 #, c-format msgid "PL/Tcl functions cannot accept type %s" msgstr "le funzioni PL/Tcl non possono accettare il tipo %s" - diff --git a/src/pl/tcl/po/ja.po b/src/pl/tcl/po/ja.po index cc2aa3a1ec..00d7c3702c 100644 --- a/src/pl/tcl/po/ja.po +++ b/src/pl/tcl/po/ja.po @@ -11,6 +11,7 @@ msgstr "" "PO-Revision-Date: 2010-07-17 18:29+0900\n" "Last-Translator: HOTTA Michihide \n" "Language-Team: Japan PostgreSQL Users Group \n" +"Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/pl/tcl/po/pl.po b/src/pl/tcl/po/pl.po new file mode 100644 index 0000000000..e2203c835f --- /dev/null +++ b/src/pl/tcl/po/pl.po @@ -0,0 +1,56 @@ +# pltcl message translation file for pltcl +# Copyright (C) 2011 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# +# Begina Felicysym , 2011. +msgid "" +msgstr "" +"Project-Id-Version: pltcl (PostgreSQL 9.1)\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2011-09-29 22:53+0000\n" +"PO-Revision-Date: 2011-09-30 09:50-0300\n" +"Last-Translator: Begina Felicysym \n" +"Language-Team: Polish TotroiseSvn translation team\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Virtaal 0.7.1-beta1\n" + +#: pltcl.c:1149 +#, c-format +msgid "%s" +msgstr "%s" + +#: pltcl.c:1150 +#, c-format +msgid "" +"%s\n" +"in PL/Tcl function \"%s\"" +msgstr "" +"%s\n" +"w funkcji PL/Tcl \"%s\"" + +#: pltcl.c:1254 pltcl.c:1261 +msgid "out of memory" +msgstr "brak pamięci" + +#: pltcl.c:1308 +msgid "trigger functions can only be called as triggers" +msgstr "procedury wyzwalaczy mogą być wywoływane jedynie przez wyzwalacze" + +#: pltcl.c:1317 +#, c-format +msgid "PL/Tcl functions cannot return type %s" +msgstr "funkcje PL/Perl nie mogą zwracać wartości typu %s" + +#: pltcl.c:1329 +msgid "PL/Tcl functions cannot return composite types" +msgstr "funkcje PL/Tcl nie mogą zwracać wartości złożonych" + +#: pltcl.c:1368 +#, c-format +msgid "PL/Tcl functions cannot accept type %s" +msgstr "funkcje PL/Tcl nie akceptują typu %s" diff --git a/src/pl/tcl/po/pt_BR.po b/src/pl/tcl/po/pt_BR.po index a17cfab6c5..67f8795941 100644 --- a/src/pl/tcl/po/pt_BR.po +++ b/src/pl/tcl/po/pt_BR.po @@ -1,16 +1,17 @@ # Brazilian Portuguese message translation file for pltcl # Copyright (C) 2009 PostgreSQL Global Development Group # This file is distributed under the same license as the PostgreSQL package. -# Euler Taveira de Oliveira , 2009. +# Euler Taveira de Oliveira , 2009-2011. # msgid "" msgstr "" -"Project-Id-Version: PostgreSQL 8.4\n" +"Project-Id-Version: PostgreSQL 9.1\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" "POT-Creation-Date: 2009-05-06 18:00-0300\n" -"PO-Revision-Date: 2009-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2009-05-06 18:00-0300\n" "Last-Translator: Euler Taveira de Oliveira \n" "Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/pl/tcl/po/ro.po b/src/pl/tcl/po/ro.po index a6b59cdcfc..394f25c121 100644 --- a/src/pl/tcl/po/ro.po +++ b/src/pl/tcl/po/ro.po @@ -11,6 +11,7 @@ msgstr "" "PO-Revision-Date: 2010-09-15 13:14-0000\n" "Last-Translator: Max \n" "Language-Team: ROMÂNĂ \n" +"Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/pl/tcl/po/ru.po b/src/pl/tcl/po/ru.po new file mode 100644 index 0000000000..b2a1df2c9e --- /dev/null +++ b/src/pl/tcl/po/ru.po @@ -0,0 +1,59 @@ +# Russian message translation file for pltcl +# Copyright (C) 2012 PostgreSQL Global Development Group +# This file is distributed under the same license as the PostgreSQL package. +# Alexander Lakhin , 2012. +# +# ChangeLog: +# +# - February 18, 2012: Complete translation for 9.1. Alexander Lakhin . +msgid "" +msgstr "" +"Project-Id-Version: PostgreSQL 9.1\n" +"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" +"POT-Creation-Date: 2012-07-10 22:21+0000\n" +"PO-Revision-Date: 2012-02-18 14:39+0400\n" +"Last-Translator: Alexander Lakhin \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Lokalize 1.4\n" + +#: pltcl.c:1149 +#, c-format +msgid "%s" +msgstr "%s" + +#: pltcl.c:1150 +#, c-format +msgid "" +"%s\n" +"in PL/Tcl function \"%s\"" +msgstr "" +"%s\n" +"в функции PL/Tcl \"%s\"" + +#: pltcl.c:1254 pltcl.c:1261 +msgid "out of memory" +msgstr "нехватка памяти" + +#: pltcl.c:1308 +msgid "trigger functions can only be called as triggers" +msgstr "триггерные функции могут вызываться только в триггерах" + +#: pltcl.c:1317 +#, c-format +msgid "PL/Tcl functions cannot return type %s" +msgstr "функции PL/Tcl не могут возвращать тип %s" + +#: pltcl.c:1329 +msgid "PL/Tcl functions cannot return composite types" +msgstr "функции PL/Tcl не могут возвращать составные типы" + +#: pltcl.c:1368 +#, c-format +msgid "PL/Tcl functions cannot accept type %s" +msgstr "функции PL/Tcl не могут принимать тип %s" diff --git a/src/pl/tcl/po/tr.po b/src/pl/tcl/po/tr.po index 370e4034aa..b3af874bc1 100644 --- a/src/pl/tcl/po/tr.po +++ b/src/pl/tcl/po/tr.po @@ -11,6 +11,7 @@ msgstr "" "PO-Revision-Date: 2009-04-29 15:06+0200\n" "Last-Translator: Devrim GÜNDÜZ \n" "Language-Team: TR >\n" +"Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/pl/tcl/po/zh_CN.po b/src/pl/tcl/po/zh_CN.po index b0ced0113c..04cc44083b 100644 --- a/src/pl/tcl/po/zh_CN.po +++ b/src/pl/tcl/po/zh_CN.po @@ -7,21 +7,21 @@ msgid "" msgstr "" "Project-Id-Version: PostgreSQL 9.0\n" "Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n" -"POT-Creation-Date: 2010-10-15 16:50+0000\n" +"POT-Creation-Date: 2013-01-29 13:50+0000\n" "PO-Revision-Date: 2010-09-26 09:08+0800\n" "Last-Translator: Weibin \n" "Language-Team: Weibin \n" -"Language: \n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: pltcl.c:1142 +#: pltcl.c:1149 #, c-format msgid "%s" msgstr "%s" -#: pltcl.c:1143 +#: pltcl.c:1150 #, c-format msgid "" "%s\n" @@ -30,24 +30,24 @@ msgstr "" "%s\n" "在PL/Tcl函数\"%s\"中" -#: pltcl.c:1245 pltcl.c:1252 +#: pltcl.c:1254 pltcl.c:1261 msgid "out of memory" msgstr "内存用尽" -#: pltcl.c:1299 +#: pltcl.c:1308 msgid "trigger functions can only be called as triggers" msgstr "触发器函数只能以触发器的形式调用" -#: pltcl.c:1308 +#: pltcl.c:1317 #, c-format msgid "PL/Tcl functions cannot return type %s" msgstr "PL/Tcl函数不能返回类型%s" -#: pltcl.c:1320 +#: pltcl.c:1329 msgid "PL/Tcl functions cannot return composite types" msgstr "PL/Tcl 函数不能返回组合类型" -#: pltcl.c:1359 +#: pltcl.c:1368 #, c-format msgid "PL/Tcl functions cannot accept type %s" msgstr "PL/Tcl行数不能使用类型 %s" diff --git a/src/pl/tcl/po/zh_TW.po b/src/pl/tcl/po/zh_TW.po index 3a75b13cdc..3c19a87dde 100644 --- a/src/pl/tcl/po/zh_TW.po +++ b/src/pl/tcl/po/zh_TW.po @@ -11,7 +11,7 @@ msgstr "" "PO-Revision-Date: 2011-05-12 16:15+0800\n" "Last-Translator: Zhenbang Wei \n" "Language-Team: Traditional Chinese\n" -"Language: \n" +"Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" diff --git a/src/port/chklocale.c b/src/port/chklocale.c index e4f3dc99e0..004c91bd04 100644 --- a/src/port/chklocale.c +++ b/src/port/chklocale.c @@ -162,6 +162,7 @@ static const struct encoding_match encoding_match_list[] = { {PG_SJIS, "SJIS"}, {PG_SJIS, "PCK"}, {PG_SJIS, "CP932"}, + {PG_SJIS, "SHIFT_JIS"}, {PG_BIG5, "BIG5"}, {PG_BIG5, "BIG5HKSCS"}, diff --git a/src/port/erand48.c b/src/port/erand48.c index 64db7a5376..f58a9808b4 100644 --- a/src/port/erand48.c +++ b/src/port/erand48.c @@ -92,7 +92,7 @@ srand48(long seed) { _rand48_seed[0] = RAND48_SEED_0; _rand48_seed[1] = (unsigned short) seed; - _rand48_seed[2] = (unsigned short) (seed > 16); + _rand48_seed[2] = (unsigned short) (seed >> 16); _rand48_mult[0] = RAND48_MULT_0; _rand48_mult[1] = RAND48_MULT_1; _rand48_mult[2] = RAND48_MULT_2; diff --git a/src/port/exec.c b/src/port/exec.c index 21a951c424..cc32077bad 100644 --- a/src/port/exec.c +++ b/src/port/exec.c @@ -66,7 +66,7 @@ validate_exec(const char *path) if (strlen(path) >= strlen(".exe") && pg_strcasecmp(path + strlen(path) - strlen(".exe"), ".exe") != 0) { - strcpy(path_exe, path); + strlcpy(path_exe, path, sizeof(path_exe) - 4); strcat(path_exe, ".exe"); path = path_exe; } @@ -275,7 +275,7 @@ resolve_symlinks(char *path) } /* must copy final component out of 'path' temporarily */ - strcpy(link_buf, fname); + strlcpy(link_buf, fname, sizeof(link_buf)); if (!getcwd(path, MAXPGPATH)) { @@ -322,7 +322,7 @@ find_other_exec(const char *argv0, const char *target, if (validate_exec(retpath) != 0) return -1; - snprintf(cmd, sizeof(cmd), "\"%s\" -V 2>%s", retpath, DEVNULL); + snprintf(cmd, sizeof(cmd), "\"%s\" -V", retpath); if (!pipe_read_line(cmd, line, sizeof(line))) return -1; @@ -352,12 +352,20 @@ pipe_read_line(char *cmd, char *line, int maxsize) fflush(stdout); fflush(stderr); + errno = 0; if ((pgver = popen(cmd, "r")) == NULL) + { + perror("popen failure"); return NULL; + } + errno = 0; if (fgets(line, maxsize, pgver) == NULL) { - perror("fgets failure"); + if (feof(pgver)) + fprintf(stderr, "no data was returned by command \"%s\"\n", cmd); + else + perror("fgets failure"); pclose(pgver); /* no error checking */ return NULL; } diff --git a/src/port/path.c b/src/port/path.c index 0d40a0bb9c..89878c94b0 100644 --- a/src/port/path.c +++ b/src/port/path.c @@ -159,6 +159,8 @@ make_native_path(char *filename) /* * join_path_components - join two path components, inserting a slash * + * We omit the slash if either given component is empty. + * * ret_path is the output area (must be of size MAXPGPATH) * * ret_path can be the same as head, but not the same as tail. @@ -171,37 +173,22 @@ join_path_components(char *ret_path, strlcpy(ret_path, head, MAXPGPATH); /* - * Remove any leading "." and ".." in the tail component, adjusting head - * as needed. + * Remove any leading "." in the tail component. + * + * Note: we used to try to remove ".." as well, but that's tricky to get + * right; now we just leave it to be done by canonicalize_path() later. */ - for (;;) - { - if (tail[0] == '.' && IS_DIR_SEP(tail[1])) - { - tail += 2; - } - else if (tail[0] == '.' && tail[1] == '\0') - { - tail += 1; - break; - } - else if (tail[0] == '.' && tail[1] == '.' && IS_DIR_SEP(tail[2])) - { - trim_directory(ret_path); - tail += 3; - } - else if (tail[0] == '.' && tail[1] == '.' && tail[2] == '\0') - { - trim_directory(ret_path); - tail += 2; - break; - } - else - break; - } + while (tail[0] == '.' && IS_DIR_SEP(tail[1])) + tail += 2; + if (*tail) + { + /* only separate with slash if head wasn't empty */ snprintf(ret_path + strlen(ret_path), MAXPGPATH - strlen(ret_path), - "/%s", tail); + "%s%s", + (*(skip_drive(head)) != '\0') ? "/" : "", + tail); + } } @@ -304,7 +291,7 @@ canonicalize_path(char *path) } else if (pending_strips > 0 && *spath != '\0') { - /* trim a regular directory name cancelled by ".." */ + /* trim a regular directory name canceled by ".." */ trim_directory(path); pending_strips--; /* foo/.. should become ".", not empty */ @@ -693,6 +680,15 @@ get_home_path(char *ret_path) * * Modify the given string in-place to name the parent directory of the * named file. + * + * If the input is just a file name with no directory part, the result is + * an empty string, not ".". This is appropriate when the next step is + * join_path_components(), but might need special handling otherwise. + * + * Caution: this will not produce desirable results if the string ends + * with "..". For most callers this is not a problem since the string + * is already known to name a regular file. If in doubt, apply + * canonicalize_path() first. */ void get_parent_directory(char *path) diff --git a/src/port/sprompt.c b/src/port/sprompt.c index c917f91e00..6541461460 100644 --- a/src/port/sprompt.c +++ b/src/port/sprompt.c @@ -56,15 +56,42 @@ simple_prompt(const char *prompt, int maxlen, bool echo) if (!destination) return NULL; +#ifdef WIN32 + + /* + * A Windows console has an "input code page" and an "output code page"; + * these usually match each other, but they rarely match the "Windows ANSI + * code page" defined at system boot and expected of "char *" arguments to + * Windows API functions. The Microsoft CRT write() implementation + * automatically converts text between these code pages when writing to a + * console. To identify such file descriptors, it calls GetConsoleMode() + * on the underlying HANDLE, which in turn requires GENERIC_READ access on + * the HANDLE. Opening termout in mode "w+" allows that detection to + * succeed. Otherwise, write() would not recognize the descriptor as a + * console, and non-ASCII characters would display incorrectly. + * + * XXX fgets() still receives text in the console's input code page. This + * makes non-ASCII credentials unportable. + */ + termin = fopen("CONIN$", "r"); + termout = fopen("CONOUT$", "w+"); +#else + /* * Do not try to collapse these into one "w+" mode file. Doesn't work on * some platforms (eg, HPUX 10.20). */ - termin = fopen(DEVTTY, "r"); - termout = fopen(DEVTTY, "w"); + termin = fopen("/dev/tty", "r"); + termout = fopen("/dev/tty", "w"); +#endif if (!termin || !termout #ifdef WIN32 - /* See DEVTTY comment for msys */ + /* + * Direct console I/O does not work from the MSYS 1.0.10 console. Writes + * reach nowhere user-visible; reads block indefinitely. XXX This affects + * most Windows terminal environments, including rxvt, mintty, Cygwin + * xterm, Cygwin sshd, and PowerShell ISE. Switch to a more-generic test. + */ || (getenv("OSTYPE") && strcmp(getenv("OSTYPE"), "msys") == 0) #endif ) diff --git a/src/port/win32error.c b/src/port/win32error.c index 4b3b1ea7d6..32a9aec61e 100644 --- a/src/port/win32error.c +++ b/src/port/win32error.c @@ -179,14 +179,16 @@ _dosmaperr(unsigned long e) { if (doserrors[i].winerr == e) { - errno = doserrors[i].doserr; + int doserr = doserrors[i].doserr; + #ifndef FRONTEND ereport(DEBUG5, (errmsg_internal("mapped win32 error code %lu to %d", - e, errno))); + e, doserr))); #elif FRONTEND_DEBUG - fprintf(stderr, _("mapped win32 error code %lu to %d"), e, errno); + fprintf(stderr, _("mapped win32 error code %lu to %d"), e, doserr); #endif + errno = doserr; return; } } diff --git a/src/port/win32setlocale.c b/src/port/win32setlocale.c new file mode 100644 index 0000000000..a301e769a7 --- /dev/null +++ b/src/port/win32setlocale.c @@ -0,0 +1,115 @@ +/*------------------------------------------------------------------------- + * + * win32setlocale.c + * Wrapper to work around bugs in Windows setlocale() implementation + * + * Copyright (c) 2011, PostgreSQL Global Development Group + * + * IDENTIFICATION + * src/port/win32setlocale.c + * + * + * Windows has a problem with locale names that have a dot in the country + * name. For example: + * + * "Chinese (Traditional)_Hong Kong S.A.R..950" + * + * For some reason, setlocale() doesn't accept that. Fortunately, Windows' + * setlocale() accepts various alternative names for such countries, so we + * provide a wrapper setlocale() function that maps the troublemaking locale + * names to accepted aliases. + *------------------------------------------------------------------------- + */ + +#include "c.h" + +#undef setlocale + +struct locale_map +{ + const char *locale_name_part; /* string in locale name to replace */ + const char *replacement; /* string to replace it with */ +}; + +static const struct locale_map locale_map_list[] = { + + /* + * "HKG" is listed here: + * http://msdn.microsoft.com/en-us/library/cdax410z%28v=vs.71%29.aspx + * (Country/Region Strings). + * + * "ARE" is the ISO-3166 three-letter code for U.A.E. It is not on the + * above list, but seems to work anyway. + */ + { "Hong Kong S.A.R.", "HKG" }, + { "U.A.E.", "ARE" }, + + /* + * The ISO-3166 country code for Macau S.A.R. is MAC, but Windows doesn't + * seem to recognize that. And Macau isn't listed in the table of + * accepted abbreviations linked above. Fortunately, "ZHM" seems to be + * accepted as an alias for "Chinese (Traditional)_Macau S.A.R..950". I'm + * not sure where "ZHM" comes from, must be some legacy naming scheme. But + * hey, it works. + * + * Note that unlike HKG and ARE, ZHM is an alias for the *whole* locale + * name, not just the country part. + * + * Some versions of Windows spell it "Macau", others "Macao". + */ + { "Chinese (Traditional)_Macau S.A.R..950", "ZHM" }, + { "Chinese_Macau S.A.R..950", "ZHM" }, + { "Chinese (Traditional)_Macao S.A.R..950", "ZHM" }, + { "Chinese_Macao S.A.R..950", "ZHM" } +}; + +char * +pgwin32_setlocale(int category, const char *locale) +{ + char *result; + char *alias; + int i; + + if (locale == NULL) + return setlocale(category, locale); + + /* Check if the locale name matches any of the problematic ones. */ + alias = NULL; + for (i = 0; i < lengthof(locale_map_list); i++) + { + const char *needle = locale_map_list[i].locale_name_part; + const char *replacement = locale_map_list[i].replacement; + char *match; + + match = strstr(locale, needle); + if (match != NULL) + { + /* Found a match. Replace the matched string. */ + int matchpos = match - locale; + int replacementlen = strlen(replacement); + char *rest = match + strlen(needle); + int restlen = strlen(rest); + + alias = malloc(matchpos + replacementlen + restlen + 1); + if (!alias) + return NULL; + + memcpy(&alias[0], &locale[0], matchpos); + memcpy(&alias[matchpos], replacement, replacementlen); + memcpy(&alias[matchpos + replacementlen], rest, restlen + 1); /* includes null terminator */ + + break; + } + } + + /* Call the real setlocale() function */ + if (alias) + { + result = setlocale(category, alias); + free(alias); + } + else + result = setlocale(category, locale); + + return result; +} diff --git a/src/port/win32ver.rc b/src/port/win32ver.rc index a6fddc38bc..e594ce66e7 100644 --- a/src/port/win32ver.rc +++ b/src/port/win32ver.rc @@ -2,8 +2,8 @@ #include "pg_config.h" VS_VERSION_INFO VERSIONINFO - FILEVERSION 9,1,0,0 - PRODUCTVERSION 9,1,0,0 + FILEVERSION 9,1,13,0 + PRODUCTVERSION 9,1,13,0 FILEFLAGSMASK 0x17L FILEFLAGS 0x0L FILEOS VOS_NT_WINDOWS32 diff --git a/src/test/examples/testlibpq2.c b/src/test/examples/testlibpq2.c index f47c5e36bb..850993f6e8 100644 --- a/src/test/examples/testlibpq2.c +++ b/src/test/examples/testlibpq2.c @@ -121,7 +121,7 @@ main(int argc, char **argv) while ((notify = PQnotifies(conn)) != NULL) { fprintf(stderr, - "ASYNC NOTIFY of '%s' received from backend pid %d\n", + "ASYNC NOTIFY of '%s' received from backend PID %d\n", notify->relname, notify->be_pid); PQfreemem(notify); nnotifies++; diff --git a/src/test/examples/testlo.c b/src/test/examples/testlo.c index 3fd97de995..04539edd41 100644 --- a/src/test/examples/testlo.c +++ b/src/test/examples/testlo.c @@ -251,7 +251,7 @@ main(int argc, char **argv) printf("exporting large object to file \"%s\" ...\n", out_filename); /* exportFile(conn, lobjOid, out_filename); */ - if (!lo_export(conn, lobjOid, out_filename)) + if (lo_export(conn, lobjOid, out_filename) < 0) fprintf(stderr, "%s\n", PQerrorMessage(conn)); } diff --git a/src/test/isolation/Makefile b/src/test/isolation/Makefile index 7cbcd4b403..85a3c23f65 100644 --- a/src/test/isolation/Makefile +++ b/src/test/isolation/Makefile @@ -18,19 +18,19 @@ override LDLIBS := $(libpq_pgport) $(LDLIBS) OBJS = specparse.o isolationtester.o +all: isolationtester$(X) pg_isolation_regress$(X) + submake-regress: $(MAKE) -C $(top_builddir)/src/test/regress pg_regress.o pg_regress.o: | submake-regress rm -f $@ && $(LN_S) $(top_builddir)/src/test/regress/pg_regress.o . -pg_isolation_regress: isolation_main.o pg_regress.o - $(CC) $(CFLAGS) $^ $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) +pg_isolation_regress$(X): isolation_main.o pg_regress.o + $(CC) $(CFLAGS) $^ $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@ -all: isolationtester pg_isolation_regress - -isolationtester: $(OBJS) | submake-libpq submake-libpgport - $(CC) $(CFLAGS) $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@$(X) +isolationtester$(X): $(OBJS) | submake-libpq submake-libpgport + $(CC) $(CFLAGS) $(OBJS) $(libpq_pgport) $(LDFLAGS) $(LDFLAGS_EX) $(LIBS) -o $@ distprep: specparse.c specscanner.c @@ -41,8 +41,6 @@ distprep: specparse.c specscanner.c # important, otherwise make will choose the built-in rule for # gram.y=>gram.c. -all: isolationtester$(X) pg_isolation_regress$(X) - specparse.h: specparse.c ; # specscanner is compiled as part of specparse @@ -73,7 +71,14 @@ maintainer-clean: distclean rm -f specparse.c specscanner.c installcheck: all - ./pg_isolation_regress --psqldir=$(PSQLDIR) --inputdir=$(srcdir) --schedule=$(srcdir)/isolation_schedule + ./pg_isolation_regress --psqldir='$(PSQLDIR)' --inputdir=$(srcdir) --schedule=$(srcdir)/isolation_schedule + +# Version of the install check test that includes the prepared_transactions test +# It only makes sense to run this if set up to use prepared transactions, +# via the postgresql.conf. +installcheck-prepared-txns: all + ./pg_isolation_regress --psqldir='$(PSQLDIR)' --inputdir=$(srcdir) --schedule=$(srcdir)/isolation_schedule prepared-transactions + # We can't support "make check" because isolationtester requires libpq, and # in fact (on typical platforms using shared libraries) requires libpq to diff --git a/src/test/isolation/README b/src/test/isolation/README index 087ac279c7..dc96242883 100644 --- a/src/test/isolation/README +++ b/src/test/isolation/README @@ -3,24 +3,42 @@ src/test/isolation/README Isolation tests =============== -This directory contains a set of tests for the serializable isolation level. -Testing isolation requires running multiple overlapping transactions, -which requires multiple concurrent connections, and can't therefore be -tested using the normal pg_regress program. - -To represent a test with overlapping transactions, we use a test specification -file with a custom syntax, described in the next section. - -isolationtester is program that uses libpq to open multiple connections, +This directory contains a set of tests for concurrent behaviors in +PostgreSQL. These tests require running multiple interacting transactions, +which requires management of multiple concurrent connections, and therefore +can't be tested using the normal pg_regress program. The name "isolation" +comes from the fact that the original motivation was to test the +serializable isolation level; but tests for other sorts of concurrent +behaviors have been added as well. + +To run the tests, you need to have a server running at the default port +expected by libpq. (You can set PGPORT and so forth in your environment +to control this.) Then run + gmake installcheck +To run just specific test(s), you can do something like + ./pg_isolation_regress fk-contention fk-deadlock +(look into the specs/ subdirectory to see the available tests). + +The prepared-transactions test requires the server's +max_prepared_transactions parameter to be set to at least 3; therefore it +is not run by default. To include it in the test run, use + gmake installcheck-prepared-txns + +To define tests with overlapping transactions, we use test specification +files with a custom syntax, which is described in the next section. To add +a new test, place a spec file in the specs/ subdirectory, add the expected +output in the expected/ subdirectory, and add the test's name to the +isolation_schedule file. + +isolationtester is a program that uses libpq to open multiple connections, and executes a test specified by a spec file. A libpq connection string specifies the server and database to connect to; defaults derived from environment variables are used otherwise. pg_isolation_regress is a tool similar to pg_regress, but instead of using -psql to execute a test, it uses isolationtester. +psql to execute a test, it uses isolationtester. It accepts all the same +command-line arguments as pg_regress. -To run the tests, you need to have a server up and running. Run - gmake installcheck Test specification ================== @@ -31,35 +49,65 @@ subdirectory. A test specification consists of four parts, in this order: setup { } The given SQL block is executed once, in one session only, before running - the test. Create any test tables or such objects here. This part is - optional. + the test. Create any test tables or other required objects here. This + part is optional. teardown { } The teardown SQL block is executed once after the test is finished. Use - this to clean up, e.g dropping any test tables. This part is optional. + this to clean up in preparation for the next permutation, e.g dropping + any test tables created by setup. This part is optional. session "" - Each session is executed in a separate connection. A session consists - of four parts: setup, teardown and one or more steps. The per-session + There are normally several "session" parts in a spec file. Each + session is executed in its own connection. A session part consists + of three parts: setup, teardown and one or more "steps". The per-session setup and teardown parts have the same syntax as the per-test setup and - teardown described above, but they are executed in every session, - before and after each permutation. The setup part typically contains a - "BEGIN" command to begin a transaction. + teardown described above, but they are executed in each session. The + setup part typically contains a "BEGIN" command to begin a transaction. - Each step has a syntax of + Each step has the syntax step "" { } - where is a unique name identifying this step, and SQL is a SQL - statement (or statements, separated by semicolons) that is executed in the - step. + where is a name identifying this step, and SQL is a SQL statement + (or statements, separated by semicolons) that is executed in the step. + Step names must be unique across the whole spec file. permutation "" ... A permutation line specifies a list of steps that are run in that order. - If no permutation lines are given, the test program automatically generates - all possible overlapping orderings of the given sessions. + Any number of permutation lines can appear. If no permutation lines are + given, the test program automatically generates all possible orderings + of the steps from each session (running the steps of any one session in + order). Note that the list of steps in a manually specified + "permutation" line doesn't actually have to be a permutation of the + available steps; it could for instance repeat some steps more than once, + or leave others out. Lines beginning with a # are considered comments. + +For each permutation of the session steps (whether these are manually +specified in the spec file, or automatically generated), the isolation +tester runs the main setup part, then per-session setup parts, then +the selected session steps, then per-session teardown, then the main +teardown script. Each selected step is sent to the connection associated +with its session. + + +Support for blocking commands +============================= + +Each step may contain commands that block until further action has been taken +(most likely, some other session runs a step that unblocks it or causes a +deadlock). A test that uses this ability must manually specify valid +permutations, i.e. those that would not expect a blocked session to execute a +command. If the test fails to follow that rule, the test is aborted. + +Currently, at most one step can be waiting at a time. As long as one +step is waiting, subsequent steps are run to completion synchronously. + +Note that isolationtester recognizes that a command has blocked by looking +to see if it is shown as waiting in the pg_locks view; therefore, only +blocks on heavyweight locks will be detected. diff --git a/src/test/isolation/expected/classroom-scheduling.out b/src/test/isolation/expected/classroom-scheduling.out index faae14f45a..f02638c0b5 100644 --- a/src/test/isolation/expected/classroom-scheduling.out +++ b/src/test/isolation/expected/classroom-scheduling.out @@ -1,299 +1,299 @@ Parsed test spec with 2 sessions starting permutation: rx1 wy1 c1 ry2 wx2 c2 -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 0 -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); -step c1: COMMIT; -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step c1: COMMIT; +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 1 -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; -step c2: COMMIT; +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step c2: COMMIT; starting permutation: rx1 wy1 ry2 c1 wx2 c2 -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 0 -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 0 -step c1: COMMIT; -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step c1: COMMIT; +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: rx1 wy1 ry2 wx2 c1 c2 -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 0 -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 0 -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; -step c1: COMMIT; -step c2: COMMIT; +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 wy1 ry2 wx2 c2 c1 -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 0 -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 0 -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; -step c2: COMMIT; -step c1: COMMIT; +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 ry2 wy1 c1 wx2 c2 -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 0 -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 0 -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); -step c1: COMMIT; -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step c1: COMMIT; +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: rx1 ry2 wy1 wx2 c1 c2 -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 0 -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 0 -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; -step c1: COMMIT; -step c2: COMMIT; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 ry2 wy1 wx2 c2 c1 -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 0 -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 0 -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; -step c2: COMMIT; -step c1: COMMIT; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 ry2 wx2 wy1 c1 c2 -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 0 -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 0 -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); -step c1: COMMIT; -step c2: COMMIT; +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 ry2 wx2 wy1 c2 c1 -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 0 -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 0 -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); -step c2: COMMIT; -step c1: COMMIT; +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 ry2 wx2 c2 wy1 c1 -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 0 -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 0 -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; -step c2: COMMIT; -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step c2: COMMIT; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; starting permutation: ry2 rx1 wy1 c1 wx2 c2 -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 0 -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 0 -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); -step c1: COMMIT; -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step c1: COMMIT; +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: ry2 rx1 wy1 wx2 c1 c2 -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 0 -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 0 -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; -step c1: COMMIT; -step c2: COMMIT; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry2 rx1 wy1 wx2 c2 c1 -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 0 -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 0 -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; -step c2: COMMIT; -step c1: COMMIT; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry2 rx1 wx2 wy1 c1 c2 -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 0 -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 0 -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); -step c1: COMMIT; -step c2: COMMIT; +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry2 rx1 wx2 wy1 c2 c1 -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 0 -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 0 -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); -step c2: COMMIT; -step c1: COMMIT; +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry2 rx1 wx2 c2 wy1 c1 -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 0 -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 0 -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; -step c2: COMMIT; -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step c2: COMMIT; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; starting permutation: ry2 wx2 rx1 wy1 c1 c2 -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 0 -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 0 -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); -step c1: COMMIT; -step c2: COMMIT; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry2 wx2 rx1 wy1 c2 c1 -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 0 -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 0 -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); -step c2: COMMIT; -step c1: COMMIT; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry2 wx2 rx1 c2 wy1 c1 -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 0 -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 0 -step c2: COMMIT; -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step c2: COMMIT; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; starting permutation: ry2 wx2 c2 rx1 wy1 c1 -step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; +step ry2: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:30'; count 0 -step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; -step c2: COMMIT; -step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; +step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00'; +step c2: COMMIT; +step rx1: SELECT count(*) FROM room_reservation WHERE room_id = '101' AND start_time < TIMESTAMP WITH TIME ZONE '2010-04-01 14:00' AND end_time > TIMESTAMP WITH TIME ZONE '2010-04-01 13:00'; count 1 -step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); -step c1: COMMIT; +step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol'); +step c1: COMMIT; diff --git a/src/test/isolation/expected/multiple-row-versions.out b/src/test/isolation/expected/multiple-row-versions.out index bbd3ecc0f7..d6a0c427fc 100644 --- a/src/test/isolation/expected/multiple-row-versions.out +++ b/src/test/isolation/expected/multiple-row-versions.out @@ -1,24 +1,24 @@ Parsed test spec with 4 sessions starting permutation: rx1 wx2 c2 wx3 ry3 wy4 rz4 c4 c3 wz1 c1 -step rx1: SELECT * FROM t WHERE id = 1000000; +step rx1: SELECT * FROM t WHERE id = 1000000; id txt 1000000 -step wx2: UPDATE t SET txt = 'b' WHERE id = 1000000; -step c2: COMMIT; -step wx3: UPDATE t SET txt = 'c' WHERE id = 1000000; -step ry3: SELECT * FROM t WHERE id = 500000; +step wx2: UPDATE t SET txt = 'b' WHERE id = 1000000; +step c2: COMMIT; +step wx3: UPDATE t SET txt = 'c' WHERE id = 1000000; +step ry3: SELECT * FROM t WHERE id = 500000; id txt 500000 -step wy4: UPDATE t SET txt = 'd' WHERE id = 500000; -step rz4: SELECT * FROM t WHERE id = 1; +step wy4: UPDATE t SET txt = 'd' WHERE id = 500000; +step rz4: SELECT * FROM t WHERE id = 1; id txt 1 -step c4: COMMIT; -step c3: COMMIT; -step wz1: UPDATE t SET txt = 'a' WHERE id = 1; +step c4: COMMIT; +step c3: COMMIT; +step wz1: UPDATE t SET txt = 'a' WHERE id = 1; ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; diff --git a/src/test/isolation/expected/partial-index.out b/src/test/isolation/expected/partial-index.out index 1230513675..d1f00c9b3c 100644 --- a/src/test/isolation/expected/partial-index.out +++ b/src/test/isolation/expected/partial-index.out @@ -1,7 +1,7 @@ Parsed test spec with 2 sessions starting permutation: rxy1 wx1 c1 wy2 rxy2 c2 -step rxy1: select * from test_t where val2 = 1; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -15,10 +15,10 @@ id val1 val2 8 a 1 9 a 1 10 a 1 -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; -step c1: COMMIT; -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step rxy2: select * from test_t where val2 = 1; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step c1: COMMIT; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step rxy2: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -30,10 +30,10 @@ id val1 val2 6 a 1 7 a 1 8 a 1 -step c2: COMMIT; +step c2: COMMIT; starting permutation: rxy1 wx1 wy2 c1 rxy2 c2 -step rxy1: select * from test_t where val2 = 1; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -47,15 +47,15 @@ id val1 val2 8 a 1 9 a 1 10 a 1 -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step c1: COMMIT; -step rxy2: select * from test_t where val2 = 1; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step c1: COMMIT; +step rxy2: select * from test_t where val2 = 1; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: rxy1 wx1 wy2 rxy2 c1 c2 -step rxy1: select * from test_t where val2 = 1; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -69,9 +69,9 @@ id val1 val2 8 a 1 9 a 1 10 a 1 -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step rxy2: select * from test_t where val2 = 1; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step rxy2: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -84,12 +84,12 @@ id val1 val2 7 a 1 8 a 1 10 a 1 -step c1: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rxy1 wx1 wy2 rxy2 c2 c1 -step rxy1: select * from test_t where val2 = 1; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -103,9 +103,9 @@ id val1 val2 8 a 1 9 a 1 10 a 1 -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step rxy2: select * from test_t where val2 = 1; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step rxy2: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -118,12 +118,12 @@ id val1 val2 7 a 1 8 a 1 10 a 1 -step c2: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rxy1 wy2 wx1 c1 rxy2 c2 -step rxy1: select * from test_t where val2 = 1; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -137,15 +137,15 @@ id val1 val2 8 a 1 9 a 1 10 a 1 -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; -step c1: COMMIT; -step rxy2: select * from test_t where val2 = 1; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step c1: COMMIT; +step rxy2: select * from test_t where val2 = 1; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: rxy1 wy2 wx1 rxy2 c1 c2 -step rxy1: select * from test_t where val2 = 1; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -159,9 +159,9 @@ id val1 val2 8 a 1 9 a 1 10 a 1 -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; -step rxy2: select * from test_t where val2 = 1; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step rxy2: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -174,12 +174,12 @@ id val1 val2 7 a 1 8 a 1 10 a 1 -step c1: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rxy1 wy2 wx1 rxy2 c2 c1 -step rxy1: select * from test_t where val2 = 1; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -193,9 +193,9 @@ id val1 val2 8 a 1 9 a 1 10 a 1 -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; -step rxy2: select * from test_t where val2 = 1; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step rxy2: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -208,12 +208,12 @@ id val1 val2 7 a 1 8 a 1 10 a 1 -step c2: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rxy1 wy2 rxy2 wx1 c1 c2 -step rxy1: select * from test_t where val2 = 1; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -227,8 +227,8 @@ id val1 val2 8 a 1 9 a 1 10 a 1 -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step rxy2: select * from test_t where val2 = 1; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step rxy2: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -241,13 +241,13 @@ id val1 val2 7 a 1 8 a 1 10 a 1 -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; -step c1: COMMIT; -step c2: COMMIT; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rxy1 wy2 rxy2 wx1 c2 c1 -step rxy1: select * from test_t where val2 = 1; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -261,8 +261,8 @@ id val1 val2 8 a 1 9 a 1 10 a 1 -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step rxy2: select * from test_t where val2 = 1; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step rxy2: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -275,13 +275,13 @@ id val1 val2 7 a 1 8 a 1 10 a 1 -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; -step c2: COMMIT; -step c1: COMMIT; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rxy1 wy2 rxy2 c2 wx1 c1 -step rxy1: select * from test_t where val2 = 1; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -295,8 +295,8 @@ id val1 val2 8 a 1 9 a 1 10 a 1 -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step rxy2: select * from test_t where val2 = 1; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step rxy2: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -309,14 +309,14 @@ id val1 val2 7 a 1 8 a 1 10 a 1 -step c2: COMMIT; -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step c2: COMMIT; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; starting permutation: wy2 rxy1 wx1 c1 rxy2 c2 -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step rxy1: select * from test_t where val2 = 1; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -330,15 +330,15 @@ id val1 val2 8 a 1 9 a 1 10 a 1 -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; -step c1: COMMIT; -step rxy2: select * from test_t where val2 = 1; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step c1: COMMIT; +step rxy2: select * from test_t where val2 = 1; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: wy2 rxy1 wx1 rxy2 c1 c2 -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step rxy1: select * from test_t where val2 = 1; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -352,8 +352,8 @@ id val1 val2 8 a 1 9 a 1 10 a 1 -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; -step rxy2: select * from test_t where val2 = 1; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step rxy2: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -366,13 +366,13 @@ id val1 val2 7 a 1 8 a 1 10 a 1 -step c1: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wy2 rxy1 wx1 rxy2 c2 c1 -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step rxy1: select * from test_t where val2 = 1; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -386,8 +386,8 @@ id val1 val2 8 a 1 9 a 1 10 a 1 -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; -step rxy2: select * from test_t where val2 = 1; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step rxy2: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -400,13 +400,13 @@ id val1 val2 7 a 1 8 a 1 10 a 1 -step c2: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wy2 rxy1 rxy2 wx1 c1 c2 -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step rxy1: select * from test_t where val2 = 1; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -420,7 +420,7 @@ id val1 val2 8 a 1 9 a 1 10 a 1 -step rxy2: select * from test_t where val2 = 1; +step rxy2: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -433,14 +433,14 @@ id val1 val2 7 a 1 8 a 1 10 a 1 -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; -step c1: COMMIT; -step c2: COMMIT; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wy2 rxy1 rxy2 wx1 c2 c1 -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step rxy1: select * from test_t where val2 = 1; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -454,7 +454,7 @@ id val1 val2 8 a 1 9 a 1 10 a 1 -step rxy2: select * from test_t where val2 = 1; +step rxy2: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -467,14 +467,14 @@ id val1 val2 7 a 1 8 a 1 10 a 1 -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; -step c2: COMMIT; -step c1: COMMIT; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wy2 rxy1 rxy2 c2 wx1 c1 -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step rxy1: select * from test_t where val2 = 1; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -488,7 +488,7 @@ id val1 val2 8 a 1 9 a 1 10 a 1 -step rxy2: select * from test_t where val2 = 1; +step rxy2: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -501,14 +501,14 @@ id val1 val2 7 a 1 8 a 1 10 a 1 -step c2: COMMIT; -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step c2: COMMIT; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; starting permutation: wy2 rxy2 rxy1 wx1 c1 c2 -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step rxy2: select * from test_t where val2 = 1; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step rxy2: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -521,7 +521,7 @@ id val1 val2 7 a 1 8 a 1 10 a 1 -step rxy1: select * from test_t where val2 = 1; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -535,14 +535,14 @@ id val1 val2 8 a 1 9 a 1 10 a 1 -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; -step c1: COMMIT; -step c2: COMMIT; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wy2 rxy2 rxy1 wx1 c2 c1 -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step rxy2: select * from test_t where val2 = 1; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step rxy2: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -555,7 +555,7 @@ id val1 val2 7 a 1 8 a 1 10 a 1 -step rxy1: select * from test_t where val2 = 1; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -569,14 +569,14 @@ id val1 val2 8 a 1 9 a 1 10 a 1 -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; -step c2: COMMIT; -step c1: COMMIT; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wy2 rxy2 rxy1 c2 wx1 c1 -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step rxy2: select * from test_t where val2 = 1; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step rxy2: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -589,7 +589,7 @@ id val1 val2 7 a 1 8 a 1 10 a 1 -step rxy1: select * from test_t where val2 = 1; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -603,14 +603,14 @@ id val1 val2 8 a 1 9 a 1 10 a 1 -step c2: COMMIT; -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step c2: COMMIT; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; starting permutation: wy2 rxy2 c2 rxy1 wx1 c1 -step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; -step rxy2: select * from test_t where val2 = 1; +step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9; +step rxy2: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -623,8 +623,8 @@ id val1 val2 7 a 1 8 a 1 10 a 1 -step c2: COMMIT; -step rxy1: select * from test_t where val2 = 1; +step c2: COMMIT; +step rxy1: select * from test_t where val2 = 1; id val1 val2 0 a 1 @@ -637,5 +637,5 @@ id val1 val2 7 a 1 8 a 1 10 a 1 -step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; -step c1: COMMIT; +step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10; +step c1: COMMIT; diff --git a/src/test/isolation/expected/prepared-transactions.out b/src/test/isolation/expected/prepared-transactions.out new file mode 100644 index 0000000000..fa672f1cb0 --- /dev/null +++ b/src/test/isolation/expected/prepared-transactions.out @@ -0,0 +1,34843 @@ +Parsed test spec with 4 sessions + +starting permutation: r1 r2 w2 w3 p1 p2 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p1 p2 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p1 p3 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p1 p3 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p1 p3 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p1 p3 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p1 p3 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p2 p1 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p2 p1 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p2 p3 p1 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p2 p3 p1 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p2 p3 c3 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p2 p3 c3 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p2 p3 c3 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p3 p1 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p3 p1 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p3 p1 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p3 p1 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p3 p1 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p3 p2 p1 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p3 p2 p1 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p3 p2 c3 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p3 p2 c3 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p3 p2 c3 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p3 c3 p1 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p3 c3 p1 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p3 c3 p1 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p3 c3 p2 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p3 c3 p2 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 w3 p3 c3 p2 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 p1 w3 p2 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 p1 w3 p2 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 p1 w3 p3 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 p1 w3 p3 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 p1 w3 p3 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 p1 w3 p3 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 p1 w3 p3 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 p1 p2 w3 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 p1 p2 w3 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 p2 w3 p1 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 p2 w3 p1 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 p2 w3 p3 p1 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 p2 w3 p3 p1 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 p2 w3 p3 c3 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 p2 w3 p3 c3 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 p2 w3 p3 c3 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 p2 p1 w3 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 w2 p2 p1 w3 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 p1 w2 w3 p2 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 p1 w2 w3 p2 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 p1 w2 w3 p3 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 p1 w2 w3 p3 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 p1 w2 w3 p3 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 p1 w2 w3 p3 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 p1 w2 w3 p3 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 p1 w2 p2 w3 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 r2 p1 w2 p2 w3 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p1 p2 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p1 p2 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p1 p3 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p1 p3 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p1 p3 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p1 p3 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p1 p3 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p2 p1 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p2 p1 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p2 p3 p1 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p2 p3 p1 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p2 p3 c3 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p2 p3 c3 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p2 p3 c3 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p3 p1 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p3 p1 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p3 p1 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p3 p1 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p3 p1 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p3 p2 p1 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p3 p2 p1 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p3 p2 c3 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p3 p2 c3 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p3 p2 c3 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p3 c3 p1 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p3 c3 p1 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p3 c3 p1 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p3 c3 p2 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p3 c3 p2 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 r2 p3 c3 p2 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p1 r2 p2 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p1 r2 p2 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p1 r2 p3 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p1 r2 p3 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p1 r2 p3 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p1 r2 p3 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p1 r2 p3 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p1 p3 r2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p1 p3 r2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p1 p3 r2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p1 p3 r2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p1 p3 r2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p1 p3 c3 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p1 p3 c3 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p1 p3 c3 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p1 p3 c3 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 r2 p1 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 r2 p1 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 r2 p1 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 r2 p1 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 r2 p1 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 r2 p2 p1 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 r2 p2 p1 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 r2 p2 c3 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 r2 p2 c3 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 r2 p2 c3 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 r2 c3 p1 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 r2 c3 p1 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 r2 c3 p1 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 r2 c3 p2 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 r2 c3 p2 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 r2 c3 p2 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 p1 r2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 p1 r2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 p1 r2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 p1 r2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 p1 r2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 p1 c3 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 p1 c3 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 p1 c3 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 p1 c3 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 c3 r2 p1 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 c3 r2 p1 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 c3 r2 p1 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 c3 r2 p2 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 c3 r2 p2 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 c3 r2 p2 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 c3 p1 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 c3 p1 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 c3 p1 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 w3 p3 c3 p1 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 p1 w3 r2 p2 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 p1 w3 r2 p2 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 p1 w3 r2 p3 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 p1 w3 r2 p3 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 p1 w3 r2 p3 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 p1 w3 r2 p3 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 p1 w3 r2 p3 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 p1 w3 p3 r2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 p1 w3 p3 r2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 p1 w3 p3 r2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 p1 w3 p3 r2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 p1 w3 p3 r2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 p1 w3 p3 c3 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 p1 w3 p3 c3 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 p1 w3 p3 c3 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w2 p1 w3 p3 c3 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p1 p2 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p1 p2 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p1 p3 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p1 p3 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p1 p3 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p1 p3 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p1 p3 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p2 p1 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p2 p1 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p2 p3 p1 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p2 p3 p1 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p2 p3 c3 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p2 p3 c3 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p2 p3 c3 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p3 p1 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p3 p1 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p3 p1 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p3 p1 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p3 p1 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p3 p2 p1 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p3 p2 p1 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p3 p2 c3 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p3 p2 c3 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p3 p2 c3 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p3 c3 p1 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p3 c3 p1 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p3 c3 p1 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p3 c3 p2 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p3 c3 p2 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 w2 p3 c3 p2 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p1 w2 p2 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p1 w2 p2 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p1 w2 p3 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p1 w2 p3 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p1 w2 p3 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p1 w2 p3 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p1 w2 p3 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p1 p3 w2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p1 p3 w2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p1 p3 w2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p1 p3 w2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p1 p3 w2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p1 p3 c3 w2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p1 p3 c3 w2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p1 p3 c3 w2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p1 p3 c3 c1 w2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 w2 p1 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 w2 p1 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 w2 p1 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 w2 p1 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 w2 p1 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 w2 p2 p1 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 w2 p2 p1 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 w2 p2 c3 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 w2 p2 c3 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 w2 p2 c3 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 w2 c3 p1 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 w2 c3 p1 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 w2 c3 p1 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 w2 c3 p2 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 w2 c3 p2 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 w2 c3 p2 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 p1 w2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 p1 w2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 p1 w2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 p1 w2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 p1 w2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 p1 c3 w2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 p1 c3 w2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 p1 c3 w2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 p1 c3 c1 w2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 c3 w2 p1 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 c3 w2 p1 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 c3 w2 p1 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 c3 w2 p2 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 c3 w2 p2 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 c3 w2 p2 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 c3 p1 w2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 c3 p1 w2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 c3 p1 w2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 r2 p3 c3 p1 c1 w2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p1 p2 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p1 p2 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p1 p3 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p1 p3 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p1 p3 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p1 p3 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p1 p3 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p2 p1 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p2 p1 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p2 p3 p1 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p2 p3 p1 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p2 p3 c3 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p2 p3 c3 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p2 p3 c3 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p3 p1 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p3 p1 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p3 p1 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p3 p1 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p3 p1 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p3 p2 p1 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p3 p2 p1 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p3 p2 c3 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p3 p2 c3 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p3 p2 c3 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p3 c3 p1 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p3 c3 p1 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p3 c3 p1 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p3 c3 p2 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p3 c3 p2 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 r2 p3 c3 p2 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p1 r2 p2 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p1 r2 p2 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p1 r2 p3 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p1 r2 p3 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p1 r2 p3 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p1 r2 p3 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p1 r2 p3 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p1 p3 r2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p1 p3 r2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p1 p3 r2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p1 p3 r2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p1 p3 r2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p1 p3 c3 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p1 p3 c3 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p1 p3 c3 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p1 p3 c3 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 r2 p1 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 r2 p1 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 r2 p1 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 r2 p1 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 r2 p1 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 r2 p2 p1 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 r2 p2 p1 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 r2 p2 c3 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 r2 p2 c3 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 r2 p2 c3 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 r2 c3 p1 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 r2 c3 p1 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 r2 c3 p1 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 r2 c3 p2 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 r2 c3 p2 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 r2 c3 p2 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 p1 r2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 p1 r2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 p1 r2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 p1 r2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 p1 r2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 p1 c3 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 p1 c3 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 p1 c3 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 p1 c3 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 c3 r2 p1 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 c3 r2 p1 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 c3 r2 p1 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 c3 r2 p2 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 c3 r2 p2 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 c3 r2 p2 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 c3 p1 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 c3 p1 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 c3 p1 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 w2 p3 c3 p1 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 r2 w2 p2 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 r2 w2 p2 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 r2 w2 p3 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 r2 w2 p3 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 r2 w2 p3 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 r2 w2 p3 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 r2 w2 p3 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 r2 p3 w2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 r2 p3 w2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 r2 p3 w2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 r2 p3 w2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 r2 p3 w2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 r2 p3 c3 w2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 r2 p3 c3 w2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 r2 p3 c3 w2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 r2 p3 c3 c1 w2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 w2 r2 p2 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 w2 r2 p2 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 w2 r2 p3 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 w2 r2 p3 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 w2 r2 p3 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 w2 r2 p3 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 w2 r2 p3 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 w2 p3 r2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 w2 p3 r2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 w2 p3 r2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 w2 p3 r2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 w2 p3 r2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 w2 p3 c3 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 w2 p3 c3 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 w2 p3 c3 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 w2 p3 c3 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 r2 w2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 r2 w2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 r2 w2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 r2 w2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 r2 w2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 r2 c3 w2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 r2 c3 w2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 r2 c3 w2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 r2 c3 c1 w2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 w2 r2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 w2 r2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 w2 r2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 w2 r2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 w2 r2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 w2 c3 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 w2 c3 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 w2 c3 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 w2 c3 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 c3 r2 w2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 c3 r2 w2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 c3 r2 w2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 c3 r2 c1 w2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 c3 w2 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 c3 w2 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 c3 w2 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 c3 w2 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 c3 c1 r2 w2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p1 p3 c3 c1 w2 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 w2 p1 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 w2 p1 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 w2 p1 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 w2 p1 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 w2 p1 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 w2 p2 p1 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 w2 p2 p1 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 w2 p2 c3 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 w2 p2 c3 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 w2 p2 c3 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 w2 c3 p1 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 w2 c3 p1 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 w2 c3 p1 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 w2 c3 p2 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 w2 c3 p2 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 w2 c3 p2 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 p1 w2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 p1 w2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 p1 w2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 p1 w2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 p1 w2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 p1 c3 w2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 p1 c3 w2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 p1 c3 w2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 p1 c3 c1 w2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 c3 w2 p1 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 c3 w2 p1 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 c3 w2 p1 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 c3 w2 p2 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 c3 w2 p2 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 c3 w2 p2 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 c3 p1 w2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 c3 p1 w2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 c3 p1 w2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 r2 c3 p1 c1 w2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 r2 p1 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 r2 p1 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 r2 p1 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 r2 p1 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 r2 p1 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 r2 p2 p1 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 r2 p2 p1 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 r2 p2 c3 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 r2 p2 c3 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 r2 p2 c3 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 r2 c3 p1 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 r2 c3 p1 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 r2 c3 p1 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 r2 c3 p2 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 r2 c3 p2 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 r2 c3 p2 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 p1 r2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 p1 r2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 p1 r2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 p1 r2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 p1 r2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 p1 c3 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 p1 c3 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 p1 c3 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 p1 c3 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 c3 r2 p1 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 c3 r2 p1 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 c3 r2 p1 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 c3 r2 p2 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 c3 r2 p2 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 c3 r2 p2 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 c3 p1 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 c3 p1 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 c3 p1 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 w2 c3 p1 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 r2 w2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 r2 w2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 r2 w2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 r2 w2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 r2 w2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 r2 c3 w2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 r2 c3 w2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 r2 c3 w2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 r2 c3 c1 w2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 w2 r2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 w2 r2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 w2 r2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 w2 r2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 w2 r2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 w2 c3 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 w2 c3 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 w2 c3 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 w2 c3 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 c3 r2 w2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 c3 r2 w2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 c3 r2 w2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 c3 r2 c1 w2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 c3 w2 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 c3 w2 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 c3 w2 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 c3 w2 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 c3 c1 r2 w2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 p1 c3 c1 w2 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 r2 w2 p1 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 r2 w2 p1 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 r2 w2 p1 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 r2 w2 p2 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 r2 w2 p2 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 r2 w2 p2 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 r2 p1 w2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 r2 p1 w2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 r2 p1 w2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 r2 p1 c1 w2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 w2 r2 p1 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 w2 r2 p1 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 w2 r2 p1 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 w2 r2 p2 p1 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 w2 r2 p2 p1 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 w2 r2 p2 c2 p1 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 w2 p1 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 w2 p1 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 w2 p1 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 w2 p1 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 p1 r2 w2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 p1 r2 w2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 p1 r2 w2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 p1 r2 c1 w2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 p1 w2 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 p1 w2 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 p1 w2 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 p1 w2 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 p1 c1 r2 w2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 w3 p3 c3 p1 c1 w2 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 r2 w2 w3 p2 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 r2 w2 w3 p2 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 r2 w2 w3 p3 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 r2 w2 w3 p3 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 r2 w2 w3 p3 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 r2 w2 w3 p3 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 r2 w2 w3 p3 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 r2 w2 p2 w3 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 r2 w2 p2 w3 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w2 w3 r2 p2 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w2 w3 r2 p2 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w2 w3 r2 p3 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w2 w3 r2 p3 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w2 w3 r2 p3 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w2 w3 r2 p3 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w2 w3 r2 p3 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w2 w3 p3 r2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w2 w3 p3 r2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w2 w3 p3 r2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w2 w3 p3 r2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w2 w3 p3 r2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w2 w3 p3 c3 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w2 w3 p3 c3 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w2 w3 p3 c3 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w2 w3 p3 c3 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 r2 w2 p2 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 r2 w2 p2 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 r2 w2 p3 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 r2 w2 p3 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 r2 w2 p3 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 r2 w2 p3 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 r2 w2 p3 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 r2 p3 w2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 r2 p3 w2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 r2 p3 w2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 r2 p3 w2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 r2 p3 w2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 r2 p3 c3 w2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 r2 p3 c3 w2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 r2 p3 c3 w2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 r2 p3 c3 c1 w2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 w2 r2 p2 p3 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 w2 r2 p2 p3 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 w2 r2 p3 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 w2 r2 p3 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 w2 r2 p3 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 w2 r2 p3 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 w2 r2 p3 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 w2 p3 r2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 w2 p3 r2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 w2 p3 r2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 w2 p3 r2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 w2 p3 r2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 w2 p3 c3 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 w2 p3 c3 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 w2 p3 c3 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 w2 p3 c3 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 r2 w2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 r2 w2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 r2 w2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 r2 w2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 r2 w2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 r2 c3 w2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 r2 c3 w2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 r2 c3 w2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 r2 c3 c1 w2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 w2 r2 p2 c3 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 w2 r2 p2 c3 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 w2 r2 c3 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 w2 r2 c3 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 w2 r2 c3 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 w2 c3 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 w2 c3 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 w2 c3 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 w2 c3 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 c3 r2 w2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 c3 r2 w2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 c3 r2 w2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 c3 r2 c1 w2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 c3 w2 r2 p2 c1 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 c3 w2 r2 p2 c2 c1 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 c3 w2 r2 c1 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 c3 w2 c1 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 c3 c1 r2 w2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: r1 p1 w3 p3 c3 c1 w2 r2 p2 c2 check +a + +a + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p1 p2 p3 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p1 p2 p3 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p1 p3 p2 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p1 p3 p2 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p1 p3 c3 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p1 p3 c3 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p1 p3 c3 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p2 p1 p3 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p2 p1 p3 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p2 p3 p1 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p2 p3 p1 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p2 p3 c3 p1 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p2 p3 c3 p1 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p2 p3 c3 c2 p1 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p3 p1 p2 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p3 p1 p2 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p3 p1 c3 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p3 p1 c3 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p3 p1 c3 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p3 p2 p1 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p3 p2 p1 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p3 p2 c3 p1 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p3 p2 c3 p1 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p3 p2 c3 c2 p1 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p3 c3 p1 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p3 c3 p1 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p3 c3 p1 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p3 c3 p2 p1 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p3 c3 p2 p1 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 w3 p3 c3 p2 c2 p1 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 p1 w3 p2 p3 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 p1 w3 p2 p3 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 p1 w3 p3 p2 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 p1 w3 p3 p2 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 p1 w3 p3 c3 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 p1 w3 p3 c3 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 p1 w3 p3 c3 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 p1 p2 w3 p3 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 p1 p2 w3 p3 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 p2 w3 p1 p3 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 p2 w3 p1 p3 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 p2 w3 p3 p1 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 p2 w3 p3 p1 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 p2 w3 p3 c3 p1 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 p2 w3 p3 c3 p1 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 p2 w3 p3 c3 c2 p1 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 p2 p1 w3 p3 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 r2 p2 p1 w3 p3 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p1 p2 p3 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p1 p2 p3 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p1 p3 p2 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p1 p3 p2 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p1 p3 c3 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p1 p3 c3 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p1 p3 c3 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p2 p1 p3 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p2 p1 p3 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p2 p3 p1 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p2 p3 p1 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p2 p3 c3 p1 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p2 p3 c3 p1 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p2 p3 c3 c2 p1 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p3 p1 p2 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p3 p1 p2 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p3 p1 c3 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p3 p1 c3 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p3 p1 c3 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p3 p2 p1 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p3 p2 p1 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p3 p2 c3 p1 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p3 p2 c3 p1 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p3 p2 c3 c2 p1 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p3 c3 p1 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p3 c3 p1 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p3 c3 p1 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p3 c3 p2 p1 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p3 c3 p2 p1 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 r2 p3 c3 p2 c2 p1 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p1 r2 p2 p3 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p1 r2 p2 p3 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p1 r2 p3 p2 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p1 r2 p3 p2 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p1 r2 p3 c3 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p1 r2 p3 c3 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p1 r2 p3 c3 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p1 p3 r2 p2 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p1 p3 r2 p2 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p1 p3 r2 c3 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p1 p3 r2 c3 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p1 p3 r2 c3 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p1 p3 c3 r2 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p1 p3 c3 r2 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p1 p3 c3 r2 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p1 p3 c3 c1 r2 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 r2 p1 p2 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 r2 p1 p2 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 r2 p1 c3 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 r2 p1 c3 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 r2 p1 c3 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 r2 p2 p1 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 r2 p2 p1 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 r2 p2 c3 p1 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 r2 p2 c3 p1 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 r2 p2 c3 c2 p1 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 r2 c3 p1 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 r2 c3 p1 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 r2 c3 p1 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 r2 c3 p2 p1 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 r2 c3 p2 p1 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 r2 c3 p2 c2 p1 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 p1 r2 p2 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 p1 r2 p2 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 p1 r2 c3 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 p1 r2 c3 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 p1 r2 c3 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 p1 c3 r2 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 p1 c3 r2 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 p1 c3 r2 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 p1 c3 c1 r2 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 c3 r2 p1 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 c3 r2 p1 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 c3 r2 p1 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 c3 r2 p2 p1 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 c3 r2 p2 p1 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 c3 r2 p2 c2 p1 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 c3 p1 r2 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 c3 p1 r2 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 c3 p1 r2 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 w3 p3 c3 p1 c1 r2 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 r2 w3 p2 p3 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 r2 w3 p2 p3 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 r2 w3 p3 p2 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 r2 w3 p3 p2 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 r2 w3 p3 c3 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 r2 w3 p3 c3 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 r2 w3 p3 c3 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 r2 p2 w3 p3 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 r2 p2 w3 p3 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 w3 r2 p2 p3 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 w3 r2 p2 p3 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 w3 r2 p3 p2 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 w3 r2 p3 p2 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 w3 r2 p3 c3 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 w3 r2 p3 c3 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 w3 r2 p3 c3 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 w3 p3 r2 p2 c3 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 w3 p3 r2 p2 c3 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 w3 p3 r2 c3 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 w3 p3 r2 c3 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 w3 p3 r2 c3 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 w3 p3 c3 r2 p2 c1 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 w3 p3 c3 r2 p2 c2 c1 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 w3 p3 c3 r2 c1 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w2 r1 p1 w3 p3 c3 c1 r2 p2 c2 check +a + +a + +step w2: INSERT INTO test2 VALUES (2); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p1 p2 p3 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p1 p2 p3 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p1 p3 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p1 p3 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p1 p3 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p1 p3 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p1 p3 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p2 p1 p3 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p2 p1 p3 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p2 p3 p1 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p2 p3 p1 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p2 p3 c3 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p2 p3 c3 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p2 p3 c3 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p3 p1 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p3 p1 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p3 p1 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p3 p1 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p3 p1 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p3 p2 p1 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p3 p2 p1 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p3 p2 c3 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p3 p2 c3 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p3 p2 c3 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p3 c3 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p3 c3 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p3 c3 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p3 c3 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p3 c3 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 w2 p3 c3 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p1 w2 p2 p3 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p1 w2 p2 p3 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p1 w2 p3 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p1 w2 p3 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p1 w2 p3 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p1 w2 p3 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p1 w2 p3 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p1 p3 w2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p1 p3 w2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p1 p3 w2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p1 p3 w2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p1 p3 w2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p1 p3 c3 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p1 p3 c3 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p1 p3 c3 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p1 p3 c3 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 w2 p1 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 w2 p1 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 w2 p1 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 w2 p1 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 w2 p1 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 w2 p2 p1 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 w2 p2 p1 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 w2 p2 c3 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 w2 p2 c3 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 w2 p2 c3 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 w2 c3 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 w2 c3 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 w2 c3 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 w2 c3 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 w2 c3 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 w2 c3 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 p1 w2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 p1 w2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 p1 w2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 p1 w2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 p1 w2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 p1 c3 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 p1 c3 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 p1 c3 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 p1 c3 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 c3 w2 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 c3 w2 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 c3 w2 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 c3 w2 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 c3 w2 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 c3 w2 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 c3 p1 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 c3 p1 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 c3 p1 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 r2 p3 c3 p1 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p1 p2 p3 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p1 p2 p3 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p1 p3 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p1 p3 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p1 p3 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p1 p3 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p1 p3 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p2 p1 p3 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p2 p1 p3 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p2 p3 p1 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p2 p3 p1 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p2 p3 c3 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p2 p3 c3 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p2 p3 c3 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p3 p1 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p3 p1 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p3 p1 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p3 p1 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p3 p1 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p3 p2 p1 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p3 p2 p1 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p3 p2 c3 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p3 p2 c3 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p3 p2 c3 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p3 c3 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p3 c3 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p3 c3 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p3 c3 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p3 c3 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 r2 p3 c3 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p1 r2 p2 p3 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p1 r2 p2 p3 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p1 r2 p3 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p1 r2 p3 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p1 r2 p3 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p1 r2 p3 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p1 r2 p3 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p1 p3 r2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p1 p3 r2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p1 p3 r2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p1 p3 r2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p1 p3 r2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p1 p3 c3 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p1 p3 c3 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p1 p3 c3 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p1 p3 c3 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 r2 p1 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 r2 p1 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 r2 p1 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 r2 p1 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 r2 p1 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 r2 p2 p1 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 r2 p2 p1 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 r2 p2 c3 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 r2 p2 c3 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 r2 p2 c3 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 r2 c3 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 r2 c3 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 r2 c3 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 r2 c3 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 r2 c3 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 r2 c3 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 p1 r2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 p1 r2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 p1 r2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 p1 r2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 p1 r2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 p1 c3 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 p1 c3 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 p1 c3 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 p1 c3 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 c3 r2 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 c3 r2 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 c3 r2 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 c3 r2 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 c3 r2 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 c3 r2 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 c3 p1 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 c3 p1 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 c3 p1 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 w2 p3 c3 p1 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 r2 w2 p2 p3 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 r2 w2 p2 p3 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 r2 w2 p3 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 r2 w2 p3 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 r2 w2 p3 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 r2 w2 p3 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 r2 w2 p3 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 r2 p3 w2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 r2 p3 w2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 r2 p3 w2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 r2 p3 w2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 r2 p3 w2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 r2 p3 c3 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 r2 p3 c3 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 r2 p3 c3 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 r2 p3 c3 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 w2 r2 p2 p3 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 w2 r2 p2 p3 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 w2 r2 p3 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 w2 r2 p3 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 w2 r2 p3 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 w2 r2 p3 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 w2 r2 p3 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 w2 p3 r2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 w2 p3 r2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 w2 p3 r2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 w2 p3 r2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 w2 p3 r2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 w2 p3 c3 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 w2 p3 c3 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 w2 p3 c3 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 w2 p3 c3 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 r2 w2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 r2 w2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 r2 w2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 r2 w2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 r2 w2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 r2 c3 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 r2 c3 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 r2 c3 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 r2 c3 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 w2 r2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 w2 r2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 w2 r2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 w2 r2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 w2 r2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 w2 c3 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 w2 c3 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 w2 c3 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 w2 c3 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 c3 r2 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 c3 r2 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 c3 r2 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 c3 r2 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 c3 w2 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 c3 w2 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 c3 w2 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 c3 w2 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 c3 c1 r2 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p1 p3 c3 c1 w2 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 w2 p1 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 w2 p1 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 w2 p1 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 w2 p1 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 w2 p1 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 w2 p2 p1 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 w2 p2 p1 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 w2 p2 c3 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 w2 p2 c3 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 w2 p2 c3 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 w2 c3 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 w2 c3 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 w2 c3 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 w2 c3 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 w2 c3 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 w2 c3 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 p1 w2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 p1 w2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 p1 w2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 p1 w2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 p1 w2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 p1 c3 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 p1 c3 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 p1 c3 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 p1 c3 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 c3 w2 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 c3 w2 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 c3 w2 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 c3 w2 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 c3 w2 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 c3 w2 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 c3 p1 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 c3 p1 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 c3 p1 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 r2 c3 p1 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 r2 p1 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 r2 p1 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 r2 p1 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 r2 p1 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 r2 p1 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 r2 p2 p1 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 r2 p2 p1 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 r2 p2 c3 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 r2 p2 c3 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 r2 p2 c3 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 r2 c3 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 r2 c3 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 r2 c3 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 r2 c3 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 r2 c3 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 r2 c3 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 p1 r2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 p1 r2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 p1 r2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 p1 r2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 p1 r2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 p1 c3 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 p1 c3 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 p1 c3 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 p1 c3 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 c3 r2 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 c3 r2 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 c3 r2 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 c3 r2 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 c3 r2 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 c3 r2 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 c3 p1 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 c3 p1 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 c3 p1 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 w2 c3 p1 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 r2 w2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 r2 w2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 r2 w2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 r2 w2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 r2 w2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 r2 c3 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 r2 c3 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 r2 c3 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 r2 c3 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 w2 r2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 w2 r2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 w2 r2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 w2 r2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 w2 r2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 w2 c3 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 w2 c3 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 w2 c3 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 w2 c3 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 c3 r2 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 c3 r2 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 c3 r2 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 c3 r2 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 c3 w2 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 c3 w2 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 c3 w2 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 c3 w2 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 c3 c1 r2 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 p1 c3 c1 w2 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 r2 w2 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 r2 w2 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 r2 w2 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 r2 w2 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 r2 w2 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 r2 w2 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 r2 p1 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 r2 p1 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 r2 p1 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 r2 p1 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 w2 r2 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 w2 r2 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 w2 r2 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 w2 r2 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 w2 r2 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 w2 r2 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 w2 p1 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 w2 p1 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 w2 p1 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 w2 p1 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 p1 r2 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 p1 r2 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 p1 r2 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 p1 r2 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 p1 w2 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 p1 w2 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 p1 w2 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 p1 w2 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 p1 c1 r2 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r1 p3 c3 p1 c1 w2 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p1 p2 p3 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p1 p2 p3 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p1 p3 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p1 p3 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p1 p3 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p1 p3 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p1 p3 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p2 p1 p3 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p2 p1 p3 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p2 p3 p1 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p2 p3 p1 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p2 p3 c3 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p2 p3 c3 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p2 p3 c3 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p3 p1 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p3 p1 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p3 p1 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p3 p1 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p3 p1 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p3 p2 p1 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p3 p2 p1 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p3 p2 c3 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p3 p2 c3 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p3 p2 c3 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p3 c3 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p3 c3 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p3 c3 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p3 c3 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p3 c3 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 w2 p3 c3 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p1 w2 p2 p3 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p1 w2 p2 p3 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p2: PREPARE TRANSACTION 's2'; +step p3: PREPARE TRANSACTION 's3'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +ERROR: prepared transaction with identifier "s3" does not exist +step c2: COMMIT PREPARED 's2'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p1 w2 p3 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p1 w2 p3 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p1 w2 p3 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p1 w2 p3 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p1 w2 p3 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +ERROR: could not serialize access due to read/write dependencies among transactions +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p1 p3 w2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p1 p3 w2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p1 p3 w2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p1 p3 w2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p1 p3 w2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p1 p3 c3 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p1 p3 c3 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p1 p3 c3 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p1 p3 c3 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 w2 p1 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 w2 p1 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 w2 p1 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 w2 p1 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 w2 p1 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 w2 p2 p1 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 w2 p2 p1 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 w2 p2 c3 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 w2 p2 c3 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 w2 p2 c3 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 w2 c3 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 w2 c3 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 w2 c3 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 w2 c3 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 w2 c3 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 w2 c3 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 p1 w2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 p1 w2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 p1 w2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 p1 w2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 p1 w2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 p1 c3 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 p1 c3 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 p1 c3 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 p1 c3 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 c3 w2 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 c3 w2 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 c3 w2 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 c3 w2 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 c3 w2 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 c3 w2 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 c3 p1 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 c3 p1 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 c3 p1 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 r1 p3 c3 p1 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 w2 p1 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 w2 p1 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 w2 p1 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 w2 p1 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 w2 p1 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 w2 p2 p1 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 w2 p2 p1 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 w2 p2 c3 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 w2 p2 c3 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 w2 p2 c3 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 w2 c3 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 w2 c3 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 w2 c3 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 w2 c3 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 w2 c3 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 w2 c3 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 p1 w2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 p1 w2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 p1 w2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 p1 w2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 p1 w2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 p1 c3 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 p1 c3 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 p1 c3 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 p1 c3 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 c3 w2 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 c3 w2 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 c3 w2 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 c3 w2 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 c3 w2 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 c3 w2 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 c3 p1 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 c3 p1 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 c3 p1 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 r1 c3 p1 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 c3 r1 w2 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 c3 r1 w2 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 c3 r1 w2 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 c3 r1 w2 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 c3 r1 w2 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 c3 r1 w2 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 c3 r1 p1 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 c3 r1 p1 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 c3 r1 p1 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 r2 p3 c3 r1 p1 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step r2: SELECT * FROM test3; +c + +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 w2 p1 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 w2 p1 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 w2 p1 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 w2 p1 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 w2 p1 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 w2 p2 p1 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 w2 p2 p1 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 w2 p2 c3 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 w2 p2 c3 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 w2 p2 c3 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 w2 c3 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 w2 c3 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 w2 c3 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 w2 c3 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 w2 c3 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 w2 c3 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 p1 w2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 p1 w2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 p1 w2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 p1 w2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 p1 w2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 p1 c3 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 p1 c3 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 p1 c3 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 p1 c3 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 c3 w2 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 c3 w2 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 c3 w2 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 c3 w2 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 c3 w2 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 c3 w2 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 c3 p1 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 c3 p1 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 c3 p1 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 r2 c3 p1 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 r2 p1 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 r2 p1 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 r2 p1 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 r2 p1 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 r2 p1 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 r2 p2 p1 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 r2 p2 p1 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 r2 p2 c3 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 r2 p2 c3 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 r2 p2 c3 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 r2 c3 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 r2 c3 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 r2 c3 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 r2 c3 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 r2 c3 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 r2 c3 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 p1 r2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 p1 r2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 p1 r2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 p1 r2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 p1 r2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 p1 c3 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 p1 c3 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 p1 c3 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 p1 c3 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 c3 r2 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 c3 r2 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 c3 r2 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 c3 r2 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 c3 r2 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 c3 r2 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 c3 p1 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 c3 p1 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 c3 p1 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 w2 c3 p1 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 r2 w2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 r2 w2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 r2 w2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 r2 w2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 r2 w2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 r2 c3 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 r2 c3 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 r2 c3 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 r2 c3 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 w2 r2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 w2 r2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 w2 r2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 w2 r2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 w2 r2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 w2 c3 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 w2 c3 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 w2 c3 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 w2 c3 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 c3 r2 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 c3 r2 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 c3 r2 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 c3 r2 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 c3 w2 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 c3 w2 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 c3 w2 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 c3 w2 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 c3 c1 r2 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 p1 c3 c1 w2 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 r2 w2 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 r2 w2 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 r2 w2 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 r2 w2 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 r2 w2 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 r2 w2 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 r2 p1 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 r2 p1 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 r2 p1 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 r2 p1 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 w2 r2 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 w2 r2 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 w2 r2 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 w2 r2 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 w2 r2 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 w2 r2 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 w2 p1 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 w2 p1 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 w2 p1 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 w2 p1 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 p1 r2 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 p1 r2 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 p1 r2 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 p1 r2 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 p1 w2 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 p1 w2 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 p1 w2 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 p1 w2 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 p1 c1 r2 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r1 c3 p1 c1 w2 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 w2 p1 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 w2 p1 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 w2 p1 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 w2 p1 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 w2 p1 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 w2 p2 p1 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 w2 p2 p1 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 w2 p2 c3 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 w2 p2 c3 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 w2 p2 c3 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 w2 c3 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 w2 c3 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 w2 c3 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 w2 c3 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 w2 c3 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 w2 c3 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 p1 w2 p2 c3 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 p1 w2 p2 c3 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c3: COMMIT PREPARED 's3'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 p1 w2 c3 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 p1 w2 c3 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 p1 w2 c3 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 p1 c3 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 p1 c3 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 p1 c3 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 p1 c3 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c3: COMMIT PREPARED 's3'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 c3 w2 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 c3 w2 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 c3 w2 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 c3 w2 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 c3 w2 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 c3 w2 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 c3 p1 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 c3 p1 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 c3 p1 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 r1 c3 p1 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step c3: COMMIT PREPARED 's3'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 c3 r1 w2 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 c3 r1 w2 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 c3 r1 w2 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 c3 r1 w2 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 c3 r1 w2 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 c3 r1 w2 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 c3 r1 p1 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 c3 r1 p1 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 c3 r1 p1 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 r2 c3 r1 p1 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step r2: SELECT * FROM test3; +c + +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 r2 w2 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 r2 w2 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 r2 w2 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 r2 w2 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 r2 w2 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 r2 w2 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 r2 p1 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 r2 p1 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 r2 p1 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 r2 p1 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step r2: SELECT * FROM test3; +c + +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 w2 r2 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 w2 r2 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 w2 r2 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 w2 r2 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 w2 r2 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 w2 r2 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 w2 p1 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 w2 p1 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 w2 p1 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 w2 p1 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 p1 r2 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 p1 r2 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 p1 r2 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 p1 r2 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step r2: SELECT * FROM test3; +c + +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 p1 w2 r2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 p1 w2 r2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 p1 w2 r2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 p1 w2 c1 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 p1 c1 r2 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step r2: SELECT * FROM test3; +c + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r1 p1 c1 w2 r2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +step r2: SELECT * FROM test3; +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r2 r1 w2 p1 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r2 r1 w2 p1 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r2 r1 w2 p1 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r2 r1 w2 p2 p1 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r2 r1 w2 p2 p1 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step p1: PREPARE TRANSACTION 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r2 r1 w2 p2 c2 p1 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r2 r1 p1 w2 p2 c1 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c1: COMMIT PREPARED 's1'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r2 r1 p1 w2 p2 c2 c1 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step c1: COMMIT PREPARED 's1'; +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r2 r1 p1 w2 c1 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step c1: COMMIT PREPARED 's1'; +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + + +starting permutation: w3 p3 c3 r2 r1 p1 c1 w2 p2 c2 check +a + +a + +step w3: INSERT INTO test3 VALUES (3); +step p3: PREPARE TRANSACTION 's3'; +step c3: COMMIT PREPARED 's3'; +step r2: SELECT * FROM test3; +c + +step r1: SELECT * FROM test2; +b + +step p1: PREPARE TRANSACTION 's1'; +step c1: COMMIT PREPARED 's1'; +step w2: INSERT INTO test2 VALUES (2); +ERROR: could not serialize access due to read/write dependencies among transactions +step p2: PREPARE TRANSACTION 's2'; +step c2: COMMIT PREPARED 's2'; +ERROR: prepared transaction with identifier "s2" does not exist +step check: SELECT * FROM test1,test2,test3; +a b c + diff --git a/src/test/isolation/expected/project-manager.out b/src/test/isolation/expected/project-manager.out index 0050a744a8..f85f5136ec 100644 --- a/src/test/isolation/expected/project-manager.out +++ b/src/test/isolation/expected/project-manager.out @@ -1,299 +1,299 @@ Parsed test spec with 2 sessions starting permutation: rx1 wy1 c1 ry2 wx2 c2 -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 1 -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); -step c1: COMMIT; -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step c1: COMMIT; +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 1 -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; -step c2: COMMIT; +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step c2: COMMIT; starting permutation: rx1 wy1 ry2 c1 wx2 c2 -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 1 -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 0 -step c1: COMMIT; -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step c1: COMMIT; +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: rx1 wy1 ry2 wx2 c1 c2 -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 1 -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 0 -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; -step c1: COMMIT; -step c2: COMMIT; +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 wy1 ry2 wx2 c2 c1 -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 1 -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 0 -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; -step c2: COMMIT; -step c1: COMMIT; +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 ry2 wy1 c1 wx2 c2 -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 1 -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 0 -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); -step c1: COMMIT; -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step c1: COMMIT; +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: rx1 ry2 wy1 wx2 c1 c2 -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 1 -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 0 -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; -step c1: COMMIT; -step c2: COMMIT; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 ry2 wy1 wx2 c2 c1 -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 1 -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 0 -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; -step c2: COMMIT; -step c1: COMMIT; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 ry2 wx2 wy1 c1 c2 -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 1 -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 0 -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); -step c1: COMMIT; -step c2: COMMIT; +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 ry2 wx2 wy1 c2 c1 -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 1 -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 0 -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); -step c2: COMMIT; -step c1: COMMIT; +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 ry2 wx2 c2 wy1 c1 -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 1 -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 0 -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; -step c2: COMMIT; -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step c2: COMMIT; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; starting permutation: ry2 rx1 wy1 c1 wx2 c2 -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 0 -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 1 -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); -step c1: COMMIT; -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step c1: COMMIT; +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: ry2 rx1 wy1 wx2 c1 c2 -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 0 -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 1 -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; -step c1: COMMIT; -step c2: COMMIT; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry2 rx1 wy1 wx2 c2 c1 -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 0 -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 1 -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; -step c2: COMMIT; -step c1: COMMIT; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry2 rx1 wx2 wy1 c1 c2 -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 0 -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 1 -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); -step c1: COMMIT; -step c2: COMMIT; +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry2 rx1 wx2 wy1 c2 c1 -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 0 -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 1 -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); -step c2: COMMIT; -step c1: COMMIT; +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry2 rx1 wx2 c2 wy1 c1 -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 0 -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 1 -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; -step c2: COMMIT; -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step c2: COMMIT; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; starting permutation: ry2 wx2 rx1 wy1 c1 c2 -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 0 -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 1 -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); -step c1: COMMIT; -step c2: COMMIT; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry2 wx2 rx1 wy1 c2 c1 -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 0 -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 1 -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); -step c2: COMMIT; -step c1: COMMIT; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry2 wx2 rx1 c2 wy1 c1 -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 0 -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 1 -step c2: COMMIT; -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step c2: COMMIT; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; starting permutation: ry2 wx2 c2 rx1 wy1 c1 -step ry2: SELECT count(*) FROM project WHERE project_manager = 1; +step ry2: SELECT count(*) FROM project WHERE project_manager = 1; count 0 -step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; -step c2: COMMIT; -step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; +step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1; +step c2: COMMIT; +step rx1: SELECT count(*) FROM person WHERE person_id = 1 AND is_project_manager; count 0 -step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); -step c1: COMMIT; +step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1); +step c1: COMMIT; diff --git a/src/test/isolation/expected/receipt-report.out b/src/test/isolation/expected/receipt-report.out index bcab10ea95..bc68d676a0 100644 --- a/src/test/isolation/expected/receipt-report.out +++ b/src/test/isolation/expected/receipt-report.out @@ -1,3379 +1,3379 @@ Parsed test spec with 3 sessions starting permutation: rxwy1 c1 wx2 c2 rx3 ry3 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 c1 wx2 rx3 c2 ry3 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 c1 wx2 rx3 ry3 c2 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step c2: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 c1 wx2 rx3 ry3 c3 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step c3: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rxwy1 c1 rx3 wx2 c2 ry3 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 c1 rx3 wx2 ry3 c2 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step c2: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 c1 rx3 wx2 ry3 c3 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step c3: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rxwy1 c1 rx3 ry3 wx2 c2 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 c1 rx3 ry3 wx2 c3 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c3: COMMIT; -step c2: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rxwy1 c1 rx3 ry3 c3 wx2 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step c3: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; +step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; starting permutation: rxwy1 wx2 c1 c2 rx3 ry3 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step c2: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step c2: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 wx2 c1 rx3 c2 ry3 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 wx2 c1 rx3 ry3 c2 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step c2: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 wx2 c1 rx3 ry3 c3 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step c3: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rxwy1 wx2 c2 c1 rx3 ry3 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c1: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c1: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 wx2 c2 rx3 c1 ry3 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; ERROR: could not serialize access due to read/write dependencies among transactions -step c3: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 wx2 c2 rx3 ry3 c1 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions -step c3: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 wx2 c2 rx3 ry3 c3 c1 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rxwy1 wx2 rx3 c1 c2 ry3 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c1: COMMIT; -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c1: COMMIT; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 wx2 rx3 c1 ry3 c2 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 wx2 rx3 c1 ry3 c3 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rxwy1 wx2 rx3 c2 c1 ry3 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c2: COMMIT; -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c2: COMMIT; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 wx2 rx3 c2 ry3 c1 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 wx2 rx3 c2 ry3 c3 c1 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rxwy1 wx2 rx3 ry3 c1 c2 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c2: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 wx2 rx3 ry3 c1 c3 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c3: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rxwy1 wx2 rx3 ry3 c2 c1 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c1: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 wx2 rx3 ry3 c2 c3 c1 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c3: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rxwy1 wx2 rx3 ry3 c3 c1 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; starting permutation: rxwy1 wx2 rx3 ry3 c3 c2 c1 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c2: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; starting permutation: rxwy1 rx3 c1 wx2 c2 ry3 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 rx3 c1 wx2 ry3 c2 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 rx3 c1 wx2 ry3 c3 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rxwy1 rx3 c1 ry3 wx2 c2 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 rx3 c1 ry3 wx2 c3 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c3: COMMIT; -step c2: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rxwy1 rx3 c1 ry3 c3 wx2 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; +step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; starting permutation: rxwy1 rx3 wx2 c1 c2 ry3 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 rx3 wx2 c1 ry3 c2 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 rx3 wx2 c1 ry3 c3 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rxwy1 rx3 wx2 c2 c1 ry3 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 rx3 wx2 c2 ry3 c1 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 rx3 wx2 c2 ry3 c3 c1 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rxwy1 rx3 wx2 ry3 c1 c2 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c2: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 rx3 wx2 ry3 c1 c3 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c3: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rxwy1 rx3 wx2 ry3 c2 c1 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c1: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 rx3 wx2 ry3 c2 c3 c1 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c3: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rxwy1 rx3 wx2 ry3 c3 c1 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; starting permutation: rxwy1 rx3 wx2 ry3 c3 c2 c1 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c2: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; starting permutation: rxwy1 rx3 ry3 c1 wx2 c2 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 rx3 ry3 c1 wx2 c3 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c3: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rxwy1 rx3 ry3 c1 c3 wx2 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c3: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; starting permutation: rxwy1 rx3 ry3 wx2 c1 c2 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step c2: COMMIT; -step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 rx3 ry3 wx2 c1 c3 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step c3: COMMIT; -step c2: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rxwy1 rx3 ry3 wx2 c2 c1 c3 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c1: COMMIT; -step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rxwy1 rx3 ry3 wx2 c2 c3 c1 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c3: COMMIT; -step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rxwy1 rx3 ry3 wx2 c3 c1 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c3: COMMIT; -step c1: COMMIT; -step c2: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; starting permutation: rxwy1 rx3 ry3 wx2 c3 c2 c1 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c3: COMMIT; -step c2: COMMIT; -step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; starting permutation: rxwy1 rx3 ry3 c3 c1 wx2 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; starting permutation: rxwy1 rx3 ry3 c3 wx2 c1 c2 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step c2: COMMIT; starting permutation: rxwy1 rx3 ry3 c3 wx2 c2 c1 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c1: COMMIT; starting permutation: wx2 rxwy1 c1 c2 rx3 ry3 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c2: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c2: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: wx2 rxwy1 c1 rx3 c2 ry3 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: wx2 rxwy1 c1 rx3 ry3 c2 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step c2: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: wx2 rxwy1 c1 rx3 ry3 c3 c2 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step c3: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: wx2 rxwy1 c2 c1 rx3 ry3 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step c1: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step c1: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 3 12-22-2008 4.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: wx2 rxwy1 c2 rx3 c1 ry3 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; ERROR: could not serialize access due to read/write dependencies among transactions -step c3: COMMIT; +step c3: COMMIT; starting permutation: wx2 rxwy1 c2 rx3 ry3 c1 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions -step c3: COMMIT; +step c3: COMMIT; starting permutation: wx2 rxwy1 c2 rx3 ry3 c3 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wx2 rxwy1 rx3 c1 c2 ry3 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c1: COMMIT; -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c1: COMMIT; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: wx2 rxwy1 rx3 c1 ry3 c2 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: wx2 rxwy1 rx3 c1 ry3 c3 c2 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: wx2 rxwy1 rx3 c2 c1 ry3 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c2: COMMIT; -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c2: COMMIT; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: wx2 rxwy1 rx3 c2 ry3 c1 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: wx2 rxwy1 rx3 c2 ry3 c3 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: wx2 rxwy1 rx3 ry3 c1 c2 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c2: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: wx2 rxwy1 rx3 ry3 c1 c3 c2 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c3: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: wx2 rxwy1 rx3 ry3 c2 c1 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c1: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: wx2 rxwy1 rx3 ry3 c2 c3 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c3: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: wx2 rxwy1 rx3 ry3 c3 c1 c2 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; starting permutation: wx2 rxwy1 rx3 ry3 c3 c2 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c2: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; starting permutation: wx2 c2 rxwy1 c1 rx3 ry3 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: wx2 c2 rxwy1 rx3 c1 ry3 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: wx2 c2 rxwy1 rx3 ry3 c1 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: wx2 c2 rxwy1 rx3 ry3 c3 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: wx2 c2 rx3 rxwy1 c1 ry3 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: wx2 c2 rx3 rxwy1 ry3 c1 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: wx2 c2 rx3 rxwy1 ry3 c3 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: wx2 c2 rx3 ry3 rxwy1 c1 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c3: COMMIT; starting permutation: wx2 c2 rx3 ry3 rxwy1 c3 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c3: COMMIT; -step c1: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c3: COMMIT; +step c1: COMMIT; starting permutation: wx2 c2 rx3 ry3 c3 rxwy1 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-23-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; +step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; starting permutation: wx2 rx3 rxwy1 c1 c2 ry3 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: wx2 rx3 rxwy1 c1 ry3 c2 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: wx2 rx3 rxwy1 c1 ry3 c3 c2 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: wx2 rx3 rxwy1 c2 c1 ry3 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: wx2 rx3 rxwy1 c2 ry3 c1 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: wx2 rx3 rxwy1 c2 ry3 c3 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: wx2 rx3 rxwy1 ry3 c1 c2 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c2: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: wx2 rx3 rxwy1 ry3 c1 c3 c2 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c3: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: wx2 rx3 rxwy1 ry3 c2 c1 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c1: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: wx2 rx3 rxwy1 ry3 c2 c3 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c3: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: wx2 rx3 rxwy1 ry3 c3 c1 c2 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; starting permutation: wx2 rx3 rxwy1 ry3 c3 c2 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c2: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; starting permutation: wx2 rx3 c2 rxwy1 c1 ry3 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: wx2 rx3 c2 rxwy1 ry3 c1 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: wx2 rx3 c2 rxwy1 ry3 c3 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: wx2 rx3 c2 ry3 rxwy1 c1 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c3: COMMIT; starting permutation: wx2 rx3 c2 ry3 rxwy1 c3 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c3: COMMIT; -step c1: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c3: COMMIT; +step c1: COMMIT; starting permutation: wx2 rx3 c2 ry3 c3 rxwy1 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; +step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; starting permutation: wx2 rx3 ry3 rxwy1 c1 c2 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c2: COMMIT; -step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: wx2 rx3 ry3 rxwy1 c1 c3 c2 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c3: COMMIT; -step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: wx2 rx3 ry3 rxwy1 c2 c1 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step c1: COMMIT; -step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: wx2 rx3 ry3 rxwy1 c2 c3 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step c3: COMMIT; -step c1: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: wx2 rx3 ry3 rxwy1 c3 c1 c2 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c3: COMMIT; -step c1: COMMIT; -step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; starting permutation: wx2 rx3 ry3 rxwy1 c3 c2 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c3: COMMIT; -step c2: COMMIT; -step c1: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; starting permutation: wx2 rx3 ry3 c2 rxwy1 c1 c3 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c3: COMMIT; starting permutation: wx2 rx3 ry3 c2 rxwy1 c3 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c3: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c3: COMMIT; +step c1: COMMIT; starting permutation: wx2 rx3 ry3 c2 c3 rxwy1 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c3: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; starting permutation: wx2 rx3 ry3 c3 rxwy1 c1 c2 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c2: COMMIT; starting permutation: wx2 rx3 ry3 c3 rxwy1 c2 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step c1: COMMIT; starting permutation: wx2 rx3 ry3 c3 c2 rxwy1 c1 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; starting permutation: rx3 rxwy1 c1 wx2 c2 ry3 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rx3 rxwy1 c1 wx2 ry3 c2 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rx3 rxwy1 c1 wx2 ry3 c3 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rx3 rxwy1 c1 ry3 wx2 c2 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rx3 rxwy1 c1 ry3 wx2 c3 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c3: COMMIT; -step c2: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rx3 rxwy1 c1 ry3 c3 wx2 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; +step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; starting permutation: rx3 rxwy1 wx2 c1 c2 ry3 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rx3 rxwy1 wx2 c1 ry3 c2 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rx3 rxwy1 wx2 c1 ry3 c3 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rx3 rxwy1 wx2 c2 c1 ry3 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rx3 rxwy1 wx2 c2 ry3 c1 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rx3 rxwy1 wx2 c2 ry3 c3 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rx3 rxwy1 wx2 ry3 c1 c2 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c2: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rx3 rxwy1 wx2 ry3 c1 c3 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c3: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rx3 rxwy1 wx2 ry3 c2 c1 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c1: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rx3 rxwy1 wx2 ry3 c2 c3 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c3: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rx3 rxwy1 wx2 ry3 c3 c1 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; starting permutation: rx3 rxwy1 wx2 ry3 c3 c2 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c2: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; starting permutation: rx3 rxwy1 ry3 c1 wx2 c2 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rx3 rxwy1 ry3 c1 wx2 c3 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c3: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rx3 rxwy1 ry3 c1 c3 wx2 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c3: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; starting permutation: rx3 rxwy1 ry3 wx2 c1 c2 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step c2: COMMIT; -step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rx3 rxwy1 ry3 wx2 c1 c3 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step c3: COMMIT; -step c2: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rx3 rxwy1 ry3 wx2 c2 c1 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c1: COMMIT; -step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rx3 rxwy1 ry3 wx2 c2 c3 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c3: COMMIT; -step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rx3 rxwy1 ry3 wx2 c3 c1 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c3: COMMIT; -step c1: COMMIT; -step c2: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; starting permutation: rx3 rxwy1 ry3 wx2 c3 c2 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c3: COMMIT; -step c2: COMMIT; -step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; starting permutation: rx3 rxwy1 ry3 c3 c1 wx2 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; starting permutation: rx3 rxwy1 ry3 c3 wx2 c1 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step c2: COMMIT; starting permutation: rx3 rxwy1 ry3 c3 wx2 c2 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c1: COMMIT; starting permutation: rx3 wx2 rxwy1 c1 c2 ry3 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rx3 wx2 rxwy1 c1 ry3 c2 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rx3 wx2 rxwy1 c1 ry3 c3 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rx3 wx2 rxwy1 c2 c1 ry3 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rx3 wx2 rxwy1 c2 ry3 c1 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rx3 wx2 rxwy1 c2 ry3 c3 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rx3 wx2 rxwy1 ry3 c1 c2 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c2: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rx3 wx2 rxwy1 ry3 c1 c3 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c3: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rx3 wx2 rxwy1 ry3 c2 c1 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c1: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rx3 wx2 rxwy1 ry3 c2 c3 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c3: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rx3 wx2 rxwy1 ry3 c3 c1 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; starting permutation: rx3 wx2 rxwy1 ry3 c3 c2 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c2: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; starting permutation: rx3 wx2 c2 rxwy1 c1 ry3 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rx3 wx2 c2 rxwy1 ry3 c1 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c1: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rx3 wx2 c2 rxwy1 ry3 c3 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rx3 wx2 c2 ry3 rxwy1 c1 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c3: COMMIT; starting permutation: rx3 wx2 c2 ry3 rxwy1 c3 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c3: COMMIT; -step c1: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c3: COMMIT; +step c1: COMMIT; starting permutation: rx3 wx2 c2 ry3 c3 rxwy1 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; +step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; starting permutation: rx3 wx2 ry3 rxwy1 c1 c2 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c2: COMMIT; -step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rx3 wx2 ry3 rxwy1 c1 c3 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c3: COMMIT; -step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rx3 wx2 ry3 rxwy1 c2 c1 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step c1: COMMIT; -step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rx3 wx2 ry3 rxwy1 c2 c3 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step c3: COMMIT; -step c1: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rx3 wx2 ry3 rxwy1 c3 c1 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c3: COMMIT; -step c1: COMMIT; -step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; starting permutation: rx3 wx2 ry3 rxwy1 c3 c2 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c3: COMMIT; -step c2: COMMIT; -step c1: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; starting permutation: rx3 wx2 ry3 c2 rxwy1 c1 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c3: COMMIT; starting permutation: rx3 wx2 ry3 c2 rxwy1 c3 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c3: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c3: COMMIT; +step c1: COMMIT; starting permutation: rx3 wx2 ry3 c2 c3 rxwy1 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c2: COMMIT; -step c3: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; starting permutation: rx3 wx2 ry3 c3 rxwy1 c1 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c2: COMMIT; starting permutation: rx3 wx2 ry3 c3 rxwy1 c2 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step c1: COMMIT; starting permutation: rx3 wx2 ry3 c3 c2 rxwy1 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; starting permutation: rx3 ry3 rxwy1 c1 wx2 c2 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rx3 ry3 rxwy1 c1 wx2 c3 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c3: COMMIT; -step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rx3 ry3 rxwy1 c1 c3 wx2 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c3: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; starting permutation: rx3 ry3 rxwy1 wx2 c1 c2 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step c2: COMMIT; -step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rx3 ry3 rxwy1 wx2 c1 c3 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step c3: COMMIT; -step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rx3 ry3 rxwy1 wx2 c2 c1 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c1: COMMIT; -step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rx3 ry3 rxwy1 wx2 c2 c3 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c3: COMMIT; -step c1: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rx3 ry3 rxwy1 wx2 c3 c1 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c3: COMMIT; -step c1: COMMIT; -step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; starting permutation: rx3 ry3 rxwy1 wx2 c3 c2 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c3: COMMIT; -step c2: COMMIT; -step c1: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; starting permutation: rx3 ry3 rxwy1 c3 c1 wx2 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c3: COMMIT; -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c3: COMMIT; +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; starting permutation: rx3 ry3 rxwy1 c3 wx2 c1 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c3: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step c2: COMMIT; starting permutation: rx3 ry3 rxwy1 c3 wx2 c2 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c3: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c1: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c1: COMMIT; starting permutation: rx3 ry3 wx2 rxwy1 c1 c2 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c2: COMMIT; -step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: rx3 ry3 wx2 rxwy1 c1 c3 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c3: COMMIT; -step c2: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: rx3 ry3 wx2 rxwy1 c2 c1 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step c1: COMMIT; -step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rx3 ry3 wx2 rxwy1 c2 c3 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step c3: COMMIT; -step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rx3 ry3 wx2 rxwy1 c3 c1 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c3: COMMIT; -step c1: COMMIT; -step c2: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; starting permutation: rx3 ry3 wx2 rxwy1 c3 c2 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c3: COMMIT; -step c2: COMMIT; -step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; starting permutation: rx3 ry3 wx2 c2 rxwy1 c1 c3 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c3: COMMIT; starting permutation: rx3 ry3 wx2 c2 rxwy1 c3 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c3: COMMIT; -step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c3: COMMIT; +step c1: COMMIT; starting permutation: rx3 ry3 wx2 c2 c3 rxwy1 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c3: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; starting permutation: rx3 ry3 wx2 c3 rxwy1 c1 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c3: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c2: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c2: COMMIT; starting permutation: rx3 ry3 wx2 c3 rxwy1 c2 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c3: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step c1: COMMIT; starting permutation: rx3 ry3 wx2 c3 c2 rxwy1 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c3: COMMIT; -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c3: COMMIT; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; starting permutation: rx3 ry3 c3 rxwy1 c1 wx2 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; +step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; starting permutation: rx3 ry3 c3 rxwy1 wx2 c1 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c1: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c1: COMMIT; +step c2: COMMIT; starting permutation: rx3 ry3 c3 rxwy1 wx2 c2 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step c1: COMMIT; starting permutation: rx3 ry3 c3 wx2 rxwy1 c1 c2 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; +step c2: COMMIT; starting permutation: rx3 ry3 c3 wx2 rxwy1 c2 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c2: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c2: COMMIT; +step c1: COMMIT; starting permutation: rx3 ry3 c3 wx2 c2 rxwy1 c1 -step rx3: SELECT * FROM ctl WHERE k = 'receipt'; +step rx3: SELECT * FROM ctl WHERE k = 'receipt'; k deposit_date receipt 12-22-2008 -step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; +step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22'; receipt_no deposit_date amount 1 12-22-2008 1.00 2 12-22-2008 2.00 -step c3: COMMIT; -step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; -step c2: COMMIT; -step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); -step c1: COMMIT; +step c3: COMMIT; +step wx2: UPDATE ctl SET deposit_date = DATE '2008-12-23' WHERE k = 'receipt'; +step c2: COMMIT; +step rxwy1: INSERT INTO receipt VALUES (3, (SELECT deposit_date FROM ctl WHERE k = 'receipt'), 4.00); +step c1: COMMIT; diff --git a/src/test/isolation/expected/referential-integrity.out b/src/test/isolation/expected/referential-integrity.out index 569d0347cc..ba42efa39b 100644 --- a/src/test/isolation/expected/referential-integrity.out +++ b/src/test/isolation/expected/referential-integrity.out @@ -1,629 +1,629 @@ Parsed test spec with 2 sessions starting permutation: rx1 wy1 c1 rx2 ry2 wx2 c2 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step wy1: INSERT INTO b VALUES (1); -step c1: COMMIT; -step rx2: SELECT i FROM a WHERE i = 1; +step wy1: INSERT INTO b VALUES (1); +step c1: COMMIT; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id 1 -step wx2: DELETE FROM a WHERE i = 1; -step c2: COMMIT; +step wx2: DELETE FROM a WHERE i = 1; +step c2: COMMIT; starting permutation: rx1 wy1 rx2 c1 ry2 wx2 c2 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step wy1: INSERT INTO b VALUES (1); -step rx2: SELECT i FROM a WHERE i = 1; +step wy1: INSERT INTO b VALUES (1); +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step c1: COMMIT; -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step c1: COMMIT; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wx2: DELETE FROM a WHERE i = 1; +step wx2: DELETE FROM a WHERE i = 1; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: rx1 wy1 rx2 ry2 c1 wx2 c2 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step wy1: INSERT INTO b VALUES (1); -step rx2: SELECT i FROM a WHERE i = 1; +step wy1: INSERT INTO b VALUES (1); +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step c1: COMMIT; -step wx2: DELETE FROM a WHERE i = 1; +step c1: COMMIT; +step wx2: DELETE FROM a WHERE i = 1; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: rx1 wy1 rx2 ry2 wx2 c1 c2 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step wy1: INSERT INTO b VALUES (1); -step rx2: SELECT i FROM a WHERE i = 1; +step wy1: INSERT INTO b VALUES (1); +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wx2: DELETE FROM a WHERE i = 1; -step c1: COMMIT; -step c2: COMMIT; +step wx2: DELETE FROM a WHERE i = 1; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 wy1 rx2 ry2 wx2 c2 c1 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step wy1: INSERT INTO b VALUES (1); -step rx2: SELECT i FROM a WHERE i = 1; +step wy1: INSERT INTO b VALUES (1); +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wx2: DELETE FROM a WHERE i = 1; -step c2: COMMIT; -step c1: COMMIT; +step wx2: DELETE FROM a WHERE i = 1; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 rx2 wy1 c1 ry2 wx2 c2 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step wy1: INSERT INTO b VALUES (1); -step c1: COMMIT; -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step wy1: INSERT INTO b VALUES (1); +step c1: COMMIT; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wx2: DELETE FROM a WHERE i = 1; +step wx2: DELETE FROM a WHERE i = 1; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: rx1 rx2 wy1 ry2 c1 wx2 c2 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step wy1: INSERT INTO b VALUES (1); -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step wy1: INSERT INTO b VALUES (1); +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step c1: COMMIT; -step wx2: DELETE FROM a WHERE i = 1; +step c1: COMMIT; +step wx2: DELETE FROM a WHERE i = 1; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: rx1 rx2 wy1 ry2 wx2 c1 c2 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step wy1: INSERT INTO b VALUES (1); -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step wy1: INSERT INTO b VALUES (1); +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wx2: DELETE FROM a WHERE i = 1; -step c1: COMMIT; -step c2: COMMIT; +step wx2: DELETE FROM a WHERE i = 1; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 rx2 wy1 ry2 wx2 c2 c1 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step wy1: INSERT INTO b VALUES (1); -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step wy1: INSERT INTO b VALUES (1); +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wx2: DELETE FROM a WHERE i = 1; -step c2: COMMIT; -step c1: COMMIT; +step wx2: DELETE FROM a WHERE i = 1; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 rx2 ry2 wy1 c1 wx2 c2 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wy1: INSERT INTO b VALUES (1); -step c1: COMMIT; -step wx2: DELETE FROM a WHERE i = 1; +step wy1: INSERT INTO b VALUES (1); +step c1: COMMIT; +step wx2: DELETE FROM a WHERE i = 1; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: rx1 rx2 ry2 wy1 wx2 c1 c2 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wy1: INSERT INTO b VALUES (1); -step wx2: DELETE FROM a WHERE i = 1; -step c1: COMMIT; -step c2: COMMIT; +step wy1: INSERT INTO b VALUES (1); +step wx2: DELETE FROM a WHERE i = 1; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 rx2 ry2 wy1 wx2 c2 c1 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wy1: INSERT INTO b VALUES (1); -step wx2: DELETE FROM a WHERE i = 1; -step c2: COMMIT; -step c1: COMMIT; +step wy1: INSERT INTO b VALUES (1); +step wx2: DELETE FROM a WHERE i = 1; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 rx2 ry2 wx2 wy1 c1 c2 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wx2: DELETE FROM a WHERE i = 1; -step wy1: INSERT INTO b VALUES (1); -step c1: COMMIT; -step c2: COMMIT; +step wx2: DELETE FROM a WHERE i = 1; +step wy1: INSERT INTO b VALUES (1); +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 rx2 ry2 wx2 wy1 c2 c1 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wx2: DELETE FROM a WHERE i = 1; -step wy1: INSERT INTO b VALUES (1); -step c2: COMMIT; -step c1: COMMIT; +step wx2: DELETE FROM a WHERE i = 1; +step wy1: INSERT INTO b VALUES (1); +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 rx2 ry2 wx2 c2 wy1 c1 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wx2: DELETE FROM a WHERE i = 1; -step c2: COMMIT; -step wy1: INSERT INTO b VALUES (1); +step wx2: DELETE FROM a WHERE i = 1; +step c2: COMMIT; +step wy1: INSERT INTO b VALUES (1); ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; starting permutation: rx2 rx1 wy1 c1 ry2 wx2 c2 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step wy1: INSERT INTO b VALUES (1); -step c1: COMMIT; -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step wy1: INSERT INTO b VALUES (1); +step c1: COMMIT; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wx2: DELETE FROM a WHERE i = 1; +step wx2: DELETE FROM a WHERE i = 1; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: rx2 rx1 wy1 ry2 c1 wx2 c2 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step wy1: INSERT INTO b VALUES (1); -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step wy1: INSERT INTO b VALUES (1); +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step c1: COMMIT; -step wx2: DELETE FROM a WHERE i = 1; +step c1: COMMIT; +step wx2: DELETE FROM a WHERE i = 1; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: rx2 rx1 wy1 ry2 wx2 c1 c2 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step wy1: INSERT INTO b VALUES (1); -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step wy1: INSERT INTO b VALUES (1); +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wx2: DELETE FROM a WHERE i = 1; -step c1: COMMIT; -step c2: COMMIT; +step wx2: DELETE FROM a WHERE i = 1; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx2 rx1 wy1 ry2 wx2 c2 c1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step wy1: INSERT INTO b VALUES (1); -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step wy1: INSERT INTO b VALUES (1); +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wx2: DELETE FROM a WHERE i = 1; -step c2: COMMIT; -step c1: COMMIT; +step wx2: DELETE FROM a WHERE i = 1; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx2 rx1 ry2 wy1 c1 wx2 c2 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wy1: INSERT INTO b VALUES (1); -step c1: COMMIT; -step wx2: DELETE FROM a WHERE i = 1; +step wy1: INSERT INTO b VALUES (1); +step c1: COMMIT; +step wx2: DELETE FROM a WHERE i = 1; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: rx2 rx1 ry2 wy1 wx2 c1 c2 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wy1: INSERT INTO b VALUES (1); -step wx2: DELETE FROM a WHERE i = 1; -step c1: COMMIT; -step c2: COMMIT; +step wy1: INSERT INTO b VALUES (1); +step wx2: DELETE FROM a WHERE i = 1; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx2 rx1 ry2 wy1 wx2 c2 c1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wy1: INSERT INTO b VALUES (1); -step wx2: DELETE FROM a WHERE i = 1; -step c2: COMMIT; -step c1: COMMIT; +step wy1: INSERT INTO b VALUES (1); +step wx2: DELETE FROM a WHERE i = 1; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx2 rx1 ry2 wx2 wy1 c1 c2 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wx2: DELETE FROM a WHERE i = 1; -step wy1: INSERT INTO b VALUES (1); -step c1: COMMIT; -step c2: COMMIT; +step wx2: DELETE FROM a WHERE i = 1; +step wy1: INSERT INTO b VALUES (1); +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx2 rx1 ry2 wx2 wy1 c2 c1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wx2: DELETE FROM a WHERE i = 1; -step wy1: INSERT INTO b VALUES (1); -step c2: COMMIT; -step c1: COMMIT; +step wx2: DELETE FROM a WHERE i = 1; +step wy1: INSERT INTO b VALUES (1); +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx2 rx1 ry2 wx2 c2 wy1 c1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wx2: DELETE FROM a WHERE i = 1; -step c2: COMMIT; -step wy1: INSERT INTO b VALUES (1); +step wx2: DELETE FROM a WHERE i = 1; +step c2: COMMIT; +step wy1: INSERT INTO b VALUES (1); ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; starting permutation: rx2 ry2 rx1 wy1 c1 wx2 c2 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step wy1: INSERT INTO b VALUES (1); -step c1: COMMIT; -step wx2: DELETE FROM a WHERE i = 1; +step wy1: INSERT INTO b VALUES (1); +step c1: COMMIT; +step wx2: DELETE FROM a WHERE i = 1; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: rx2 ry2 rx1 wy1 wx2 c1 c2 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step wy1: INSERT INTO b VALUES (1); -step wx2: DELETE FROM a WHERE i = 1; -step c1: COMMIT; -step c2: COMMIT; +step wy1: INSERT INTO b VALUES (1); +step wx2: DELETE FROM a WHERE i = 1; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx2 ry2 rx1 wy1 wx2 c2 c1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step wy1: INSERT INTO b VALUES (1); -step wx2: DELETE FROM a WHERE i = 1; -step c2: COMMIT; -step c1: COMMIT; +step wy1: INSERT INTO b VALUES (1); +step wx2: DELETE FROM a WHERE i = 1; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx2 ry2 rx1 wx2 wy1 c1 c2 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step wx2: DELETE FROM a WHERE i = 1; -step wy1: INSERT INTO b VALUES (1); -step c1: COMMIT; -step c2: COMMIT; +step wx2: DELETE FROM a WHERE i = 1; +step wy1: INSERT INTO b VALUES (1); +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx2 ry2 rx1 wx2 wy1 c2 c1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step wx2: DELETE FROM a WHERE i = 1; -step wy1: INSERT INTO b VALUES (1); -step c2: COMMIT; -step c1: COMMIT; +step wx2: DELETE FROM a WHERE i = 1; +step wy1: INSERT INTO b VALUES (1); +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx2 ry2 rx1 wx2 c2 wy1 c1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step rx1: SELECT i FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step wx2: DELETE FROM a WHERE i = 1; -step c2: COMMIT; -step wy1: INSERT INTO b VALUES (1); +step wx2: DELETE FROM a WHERE i = 1; +step c2: COMMIT; +step wy1: INSERT INTO b VALUES (1); ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; starting permutation: rx2 ry2 wx2 rx1 wy1 c1 c2 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wx2: DELETE FROM a WHERE i = 1; -step rx1: SELECT i FROM a WHERE i = 1; +step wx2: DELETE FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step wy1: INSERT INTO b VALUES (1); -step c1: COMMIT; -step c2: COMMIT; +step wy1: INSERT INTO b VALUES (1); +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx2 ry2 wx2 rx1 wy1 c2 c1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wx2: DELETE FROM a WHERE i = 1; -step rx1: SELECT i FROM a WHERE i = 1; +step wx2: DELETE FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step wy1: INSERT INTO b VALUES (1); -step c2: COMMIT; -step c1: COMMIT; +step wy1: INSERT INTO b VALUES (1); +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx2 ry2 wx2 rx1 c2 wy1 c1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wx2: DELETE FROM a WHERE i = 1; -step rx1: SELECT i FROM a WHERE i = 1; +step wx2: DELETE FROM a WHERE i = 1; +step rx1: SELECT i FROM a WHERE i = 1; i 1 -step c2: COMMIT; -step wy1: INSERT INTO b VALUES (1); +step c2: COMMIT; +step wy1: INSERT INTO b VALUES (1); ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; starting permutation: rx2 ry2 wx2 c2 rx1 wy1 c1 -step rx2: SELECT i FROM a WHERE i = 1; +step rx2: SELECT i FROM a WHERE i = 1; i 1 -step ry2: SELECT a_id FROM b WHERE a_id = 1; +step ry2: SELECT a_id FROM b WHERE a_id = 1; a_id -step wx2: DELETE FROM a WHERE i = 1; -step c2: COMMIT; -step rx1: SELECT i FROM a WHERE i = 1; +step wx2: DELETE FROM a WHERE i = 1; +step c2: COMMIT; +step rx1: SELECT i FROM a WHERE i = 1; i -step wy1: INSERT INTO b VALUES (1); -step c1: COMMIT; +step wy1: INSERT INTO b VALUES (1); +step c1: COMMIT; diff --git a/src/test/isolation/expected/ri-trigger.out b/src/test/isolation/expected/ri-trigger.out index 9709e77195..88943287aa 100644 --- a/src/test/isolation/expected/ri-trigger.out +++ b/src/test/isolation/expected/ri-trigger.out @@ -1,111 +1,111 @@ Parsed test spec with 2 sessions starting permutation: wxry1 c1 r2 wyrx2 c2 -step wxry1: INSERT INTO child (parent_id) VALUES (0); -step c1: COMMIT; -step r2: SELECT TRUE; +step wxry1: INSERT INTO child (parent_id) VALUES (0); +step c1: COMMIT; +step r2: SELECT TRUE; bool t -step wyrx2: DELETE FROM parent WHERE parent_id = 0; +step wyrx2: DELETE FROM parent WHERE parent_id = 0; ERROR: child row exists -step c2: COMMIT; +step c2: COMMIT; starting permutation: wxry1 r2 c1 wyrx2 c2 -step wxry1: INSERT INTO child (parent_id) VALUES (0); -step r2: SELECT TRUE; +step wxry1: INSERT INTO child (parent_id) VALUES (0); +step r2: SELECT TRUE; bool t -step c1: COMMIT; -step wyrx2: DELETE FROM parent WHERE parent_id = 0; +step c1: COMMIT; +step wyrx2: DELETE FROM parent WHERE parent_id = 0; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: wxry1 r2 wyrx2 c1 c2 -step wxry1: INSERT INTO child (parent_id) VALUES (0); -step r2: SELECT TRUE; +step wxry1: INSERT INTO child (parent_id) VALUES (0); +step r2: SELECT TRUE; bool t -step wyrx2: DELETE FROM parent WHERE parent_id = 0; -step c1: COMMIT; -step c2: COMMIT; +step wyrx2: DELETE FROM parent WHERE parent_id = 0; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wxry1 r2 wyrx2 c2 c1 -step wxry1: INSERT INTO child (parent_id) VALUES (0); -step r2: SELECT TRUE; +step wxry1: INSERT INTO child (parent_id) VALUES (0); +step r2: SELECT TRUE; bool t -step wyrx2: DELETE FROM parent WHERE parent_id = 0; -step c2: COMMIT; -step c1: COMMIT; +step wyrx2: DELETE FROM parent WHERE parent_id = 0; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: r2 wxry1 c1 wyrx2 c2 -step r2: SELECT TRUE; +step r2: SELECT TRUE; bool t -step wxry1: INSERT INTO child (parent_id) VALUES (0); -step c1: COMMIT; -step wyrx2: DELETE FROM parent WHERE parent_id = 0; +step wxry1: INSERT INTO child (parent_id) VALUES (0); +step c1: COMMIT; +step wyrx2: DELETE FROM parent WHERE parent_id = 0; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: r2 wxry1 wyrx2 c1 c2 -step r2: SELECT TRUE; +step r2: SELECT TRUE; bool t -step wxry1: INSERT INTO child (parent_id) VALUES (0); -step wyrx2: DELETE FROM parent WHERE parent_id = 0; -step c1: COMMIT; -step c2: COMMIT; +step wxry1: INSERT INTO child (parent_id) VALUES (0); +step wyrx2: DELETE FROM parent WHERE parent_id = 0; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: r2 wxry1 wyrx2 c2 c1 -step r2: SELECT TRUE; +step r2: SELECT TRUE; bool t -step wxry1: INSERT INTO child (parent_id) VALUES (0); -step wyrx2: DELETE FROM parent WHERE parent_id = 0; -step c2: COMMIT; -step c1: COMMIT; +step wxry1: INSERT INTO child (parent_id) VALUES (0); +step wyrx2: DELETE FROM parent WHERE parent_id = 0; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: r2 wyrx2 wxry1 c1 c2 -step r2: SELECT TRUE; +step r2: SELECT TRUE; bool t -step wyrx2: DELETE FROM parent WHERE parent_id = 0; -step wxry1: INSERT INTO child (parent_id) VALUES (0); -step c1: COMMIT; -step c2: COMMIT; +step wyrx2: DELETE FROM parent WHERE parent_id = 0; +step wxry1: INSERT INTO child (parent_id) VALUES (0); +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: r2 wyrx2 wxry1 c2 c1 -step r2: SELECT TRUE; +step r2: SELECT TRUE; bool t -step wyrx2: DELETE FROM parent WHERE parent_id = 0; -step wxry1: INSERT INTO child (parent_id) VALUES (0); -step c2: COMMIT; -step c1: COMMIT; +step wyrx2: DELETE FROM parent WHERE parent_id = 0; +step wxry1: INSERT INTO child (parent_id) VALUES (0); +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: r2 wyrx2 c2 wxry1 c1 -step r2: SELECT TRUE; +step r2: SELECT TRUE; bool t -step wyrx2: DELETE FROM parent WHERE parent_id = 0; -step c2: COMMIT; -step wxry1: INSERT INTO child (parent_id) VALUES (0); +step wyrx2: DELETE FROM parent WHERE parent_id = 0; +step c2: COMMIT; +step wxry1: INSERT INTO child (parent_id) VALUES (0); ERROR: parent row missing -step c1: COMMIT; +step c1: COMMIT; diff --git a/src/test/isolation/expected/simple-write-skew.out b/src/test/isolation/expected/simple-write-skew.out index 5896beec33..835500de6d 100644 --- a/src/test/isolation/expected/simple-write-skew.out +++ b/src/test/isolation/expected/simple-write-skew.out @@ -1,41 +1,41 @@ Parsed test spec with 2 sessions starting permutation: rwx1 c1 rwx2 c2 -step rwx1: UPDATE test SET t = 'apple' WHERE t = 'pear'; -step c1: COMMIT; -step rwx2: UPDATE test SET t = 'pear' WHERE t = 'apple' -step c2: COMMIT; +step rwx1: UPDATE test SET t = 'apple' WHERE t = 'pear'; +step c1: COMMIT; +step rwx2: UPDATE test SET t = 'pear' WHERE t = 'apple' +step c2: COMMIT; starting permutation: rwx1 rwx2 c1 c2 -step rwx1: UPDATE test SET t = 'apple' WHERE t = 'pear'; -step rwx2: UPDATE test SET t = 'pear' WHERE t = 'apple' -step c1: COMMIT; -step c2: COMMIT; +step rwx1: UPDATE test SET t = 'apple' WHERE t = 'pear'; +step rwx2: UPDATE test SET t = 'pear' WHERE t = 'apple' +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rwx1 rwx2 c2 c1 -step rwx1: UPDATE test SET t = 'apple' WHERE t = 'pear'; -step rwx2: UPDATE test SET t = 'pear' WHERE t = 'apple' -step c2: COMMIT; -step c1: COMMIT; +step rwx1: UPDATE test SET t = 'apple' WHERE t = 'pear'; +step rwx2: UPDATE test SET t = 'pear' WHERE t = 'apple' +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rwx2 rwx1 c1 c2 -step rwx2: UPDATE test SET t = 'pear' WHERE t = 'apple' -step rwx1: UPDATE test SET t = 'apple' WHERE t = 'pear'; -step c1: COMMIT; -step c2: COMMIT; +step rwx2: UPDATE test SET t = 'pear' WHERE t = 'apple' +step rwx1: UPDATE test SET t = 'apple' WHERE t = 'pear'; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rwx2 rwx1 c2 c1 -step rwx2: UPDATE test SET t = 'pear' WHERE t = 'apple' -step rwx1: UPDATE test SET t = 'apple' WHERE t = 'pear'; -step c2: COMMIT; -step c1: COMMIT; +step rwx2: UPDATE test SET t = 'pear' WHERE t = 'apple' +step rwx1: UPDATE test SET t = 'apple' WHERE t = 'pear'; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rwx2 c2 rwx1 c1 -step rwx2: UPDATE test SET t = 'pear' WHERE t = 'apple' -step c2: COMMIT; -step rwx1: UPDATE test SET t = 'apple' WHERE t = 'pear'; -step c1: COMMIT; +step rwx2: UPDATE test SET t = 'pear' WHERE t = 'apple' +step c2: COMMIT; +step rwx1: UPDATE test SET t = 'apple' WHERE t = 'pear'; +step c1: COMMIT; diff --git a/src/test/isolation/expected/temporal-range-integrity.out b/src/test/isolation/expected/temporal-range-integrity.out index 3e7fb98690..f1b24023a2 100644 --- a/src/test/isolation/expected/temporal-range-integrity.out +++ b/src/test/isolation/expected/temporal-range-integrity.out @@ -1,299 +1,299 @@ Parsed test spec with 2 sessions starting permutation: rx1 wy1 c1 ry2 wx2 c2 -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 1 -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); -step c1: COMMIT; -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step c1: COMMIT; +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 1 -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; -step c2: COMMIT; +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step c2: COMMIT; starting permutation: rx1 wy1 ry2 c1 wx2 c2 -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 1 -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 0 -step c1: COMMIT; -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step c1: COMMIT; +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: rx1 wy1 ry2 wx2 c1 c2 -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 1 -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 0 -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; -step c1: COMMIT; -step c2: COMMIT; +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 wy1 ry2 wx2 c2 c1 -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 1 -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 0 -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; -step c2: COMMIT; -step c1: COMMIT; +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 ry2 wy1 c1 wx2 c2 -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 1 -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 0 -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); -step c1: COMMIT; -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step c1: COMMIT; +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: rx1 ry2 wy1 wx2 c1 c2 -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 1 -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 0 -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; -step c1: COMMIT; -step c2: COMMIT; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 ry2 wy1 wx2 c2 c1 -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 1 -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 0 -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; -step c2: COMMIT; -step c1: COMMIT; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 ry2 wx2 wy1 c1 c2 -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 1 -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 0 -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); -step c1: COMMIT; -step c2: COMMIT; +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 ry2 wx2 wy1 c2 c1 -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 1 -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 0 -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); -step c2: COMMIT; -step c1: COMMIT; +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rx1 ry2 wx2 c2 wy1 c1 -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 1 -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 0 -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; -step c2: COMMIT; -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step c2: COMMIT; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; starting permutation: ry2 rx1 wy1 c1 wx2 c2 -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 0 -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 1 -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); -step c1: COMMIT; -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step c1: COMMIT; +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: ry2 rx1 wy1 wx2 c1 c2 -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 0 -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 1 -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; -step c1: COMMIT; -step c2: COMMIT; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry2 rx1 wy1 wx2 c2 c1 -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 0 -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 1 -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; -step c2: COMMIT; -step c1: COMMIT; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry2 rx1 wx2 wy1 c1 c2 -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 0 -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 1 -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); -step c1: COMMIT; -step c2: COMMIT; +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry2 rx1 wx2 wy1 c2 c1 -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 0 -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 1 -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); -step c2: COMMIT; -step c1: COMMIT; +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry2 rx1 wx2 c2 wy1 c1 -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 0 -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 1 -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; -step c2: COMMIT; -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step c2: COMMIT; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; starting permutation: ry2 wx2 rx1 wy1 c1 c2 -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 0 -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 1 -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); -step c1: COMMIT; -step c2: COMMIT; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry2 wx2 rx1 wy1 c2 c1 -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 0 -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 1 -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); -step c2: COMMIT; -step c1: COMMIT; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry2 wx2 rx1 c2 wy1 c1 -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 0 -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 1 -step c2: COMMIT; -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step c2: COMMIT; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; starting permutation: ry2 wx2 c2 rx1 wy1 c1 -step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; +step ry2: SELECT count(*) FROM offense WHERE statute_cite = '123.45(1)a' AND offense_date >= DATE '2008-01-01'; count 0 -step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; -step c2: COMMIT; -step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); +step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01'; +step c2: COMMIT; +step rx1: SELECT count(*) FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date <= DATE '2009-05-15' AND (exp_date IS NULL OR exp_date > DATE '2009-05-15'); count 0 -step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); -step c1: COMMIT; +step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15'); +step c1: COMMIT; diff --git a/src/test/isolation/expected/total-cash.out b/src/test/isolation/expected/total-cash.out index df1950843b..5121edc710 100644 --- a/src/test/isolation/expected/total-cash.out +++ b/src/test/isolation/expected/total-cash.out @@ -1,281 +1,281 @@ Parsed test spec with 2 sessions starting permutation: wx1 rxy1 c1 wy2 rxy2 c2 -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step rxy1: SELECT SUM(balance) FROM accounts; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step rxy1: SELECT SUM(balance) FROM accounts; sum 1000 -step c1: COMMIT; -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step rxy2: SELECT SUM(balance) FROM accounts; +step c1: COMMIT; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step rxy2: SELECT SUM(balance) FROM accounts; sum 800 -step c2: COMMIT; +step c2: COMMIT; starting permutation: wx1 rxy1 wy2 c1 rxy2 c2 -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step rxy1: SELECT SUM(balance) FROM accounts; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step rxy1: SELECT SUM(balance) FROM accounts; sum 1000 -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step c1: COMMIT; -step rxy2: SELECT SUM(balance) FROM accounts; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step c1: COMMIT; +step rxy2: SELECT SUM(balance) FROM accounts; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: wx1 rxy1 wy2 rxy2 c1 c2 -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step rxy1: SELECT SUM(balance) FROM accounts; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step rxy1: SELECT SUM(balance) FROM accounts; sum 1000 -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step rxy2: SELECT SUM(balance) FROM accounts; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step rxy2: SELECT SUM(balance) FROM accounts; sum 1000 -step c1: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wx1 rxy1 wy2 rxy2 c2 c1 -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step rxy1: SELECT SUM(balance) FROM accounts; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step rxy1: SELECT SUM(balance) FROM accounts; sum 1000 -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step rxy2: SELECT SUM(balance) FROM accounts; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step rxy2: SELECT SUM(balance) FROM accounts; sum 1000 -step c2: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wx1 wy2 rxy1 c1 rxy2 c2 -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step rxy1: SELECT SUM(balance) FROM accounts; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step rxy1: SELECT SUM(balance) FROM accounts; sum 1000 -step c1: COMMIT; -step rxy2: SELECT SUM(balance) FROM accounts; +step c1: COMMIT; +step rxy2: SELECT SUM(balance) FROM accounts; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: wx1 wy2 rxy1 rxy2 c1 c2 -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step rxy1: SELECT SUM(balance) FROM accounts; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step rxy1: SELECT SUM(balance) FROM accounts; sum 1000 -step rxy2: SELECT SUM(balance) FROM accounts; +step rxy2: SELECT SUM(balance) FROM accounts; sum 1000 -step c1: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wx1 wy2 rxy1 rxy2 c2 c1 -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step rxy1: SELECT SUM(balance) FROM accounts; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step rxy1: SELECT SUM(balance) FROM accounts; sum 1000 -step rxy2: SELECT SUM(balance) FROM accounts; +step rxy2: SELECT SUM(balance) FROM accounts; sum 1000 -step c2: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wx1 wy2 rxy2 rxy1 c1 c2 -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step rxy2: SELECT SUM(balance) FROM accounts; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step rxy2: SELECT SUM(balance) FROM accounts; sum 1000 -step rxy1: SELECT SUM(balance) FROM accounts; +step rxy1: SELECT SUM(balance) FROM accounts; sum 1000 -step c1: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wx1 wy2 rxy2 rxy1 c2 c1 -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step rxy2: SELECT SUM(balance) FROM accounts; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step rxy2: SELECT SUM(balance) FROM accounts; sum 1000 -step rxy1: SELECT SUM(balance) FROM accounts; +step rxy1: SELECT SUM(balance) FROM accounts; sum 1000 -step c2: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wx1 wy2 rxy2 c2 rxy1 c1 -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step rxy2: SELECT SUM(balance) FROM accounts; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step rxy2: SELECT SUM(balance) FROM accounts; sum 1000 -step c2: COMMIT; -step rxy1: SELECT SUM(balance) FROM accounts; +step c2: COMMIT; +step rxy1: SELECT SUM(balance) FROM accounts; ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; starting permutation: wy2 wx1 rxy1 c1 rxy2 c2 -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step rxy1: SELECT SUM(balance) FROM accounts; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step rxy1: SELECT SUM(balance) FROM accounts; sum 1000 -step c1: COMMIT; -step rxy2: SELECT SUM(balance) FROM accounts; +step c1: COMMIT; +step rxy2: SELECT SUM(balance) FROM accounts; ERROR: could not serialize access due to read/write dependencies among transactions -step c2: COMMIT; +step c2: COMMIT; starting permutation: wy2 wx1 rxy1 rxy2 c1 c2 -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step rxy1: SELECT SUM(balance) FROM accounts; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step rxy1: SELECT SUM(balance) FROM accounts; sum 1000 -step rxy2: SELECT SUM(balance) FROM accounts; +step rxy2: SELECT SUM(balance) FROM accounts; sum 1000 -step c1: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wy2 wx1 rxy1 rxy2 c2 c1 -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step rxy1: SELECT SUM(balance) FROM accounts; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step rxy1: SELECT SUM(balance) FROM accounts; sum 1000 -step rxy2: SELECT SUM(balance) FROM accounts; +step rxy2: SELECT SUM(balance) FROM accounts; sum 1000 -step c2: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wy2 wx1 rxy2 rxy1 c1 c2 -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step rxy2: SELECT SUM(balance) FROM accounts; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step rxy2: SELECT SUM(balance) FROM accounts; sum 1000 -step rxy1: SELECT SUM(balance) FROM accounts; +step rxy1: SELECT SUM(balance) FROM accounts; sum 1000 -step c1: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wy2 wx1 rxy2 rxy1 c2 c1 -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step rxy2: SELECT SUM(balance) FROM accounts; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step rxy2: SELECT SUM(balance) FROM accounts; sum 1000 -step rxy1: SELECT SUM(balance) FROM accounts; +step rxy1: SELECT SUM(balance) FROM accounts; sum 1000 -step c2: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wy2 wx1 rxy2 c2 rxy1 c1 -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step rxy2: SELECT SUM(balance) FROM accounts; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step rxy2: SELECT SUM(balance) FROM accounts; sum 1000 -step c2: COMMIT; -step rxy1: SELECT SUM(balance) FROM accounts; +step c2: COMMIT; +step rxy1: SELECT SUM(balance) FROM accounts; ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; starting permutation: wy2 rxy2 wx1 rxy1 c1 c2 -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step rxy2: SELECT SUM(balance) FROM accounts; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step rxy2: SELECT SUM(balance) FROM accounts; sum 1000 -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step rxy1: SELECT SUM(balance) FROM accounts; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step rxy1: SELECT SUM(balance) FROM accounts; sum 1000 -step c1: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wy2 rxy2 wx1 rxy1 c2 c1 -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step rxy2: SELECT SUM(balance) FROM accounts; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step rxy2: SELECT SUM(balance) FROM accounts; sum 1000 -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step rxy1: SELECT SUM(balance) FROM accounts; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step rxy1: SELECT SUM(balance) FROM accounts; sum 1000 -step c2: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step c1: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wy2 rxy2 wx1 c2 rxy1 c1 -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step rxy2: SELECT SUM(balance) FROM accounts; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step rxy2: SELECT SUM(balance) FROM accounts; sum 1000 -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step c2: COMMIT; -step rxy1: SELECT SUM(balance) FROM accounts; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step c2: COMMIT; +step rxy1: SELECT SUM(balance) FROM accounts; ERROR: could not serialize access due to read/write dependencies among transactions -step c1: COMMIT; +step c1: COMMIT; starting permutation: wy2 rxy2 c2 wx1 rxy1 c1 -step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; -step rxy2: SELECT SUM(balance) FROM accounts; +step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings'; +step rxy2: SELECT SUM(balance) FROM accounts; sum 1000 -step c2: COMMIT; -step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; -step rxy1: SELECT SUM(balance) FROM accounts; +step c2: COMMIT; +step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checking'; +step rxy1: SELECT SUM(balance) FROM accounts; sum 800 -step c1: COMMIT; +step c1: COMMIT; diff --git a/src/test/isolation/expected/two-ids.out b/src/test/isolation/expected/two-ids.out index 81e6139680..2fbba1e219 100644 --- a/src/test/isolation/expected/two-ids.out +++ b/src/test/isolation/expected/two-ids.out @@ -1,1007 +1,1007 @@ Parsed test spec with 3 sessions starting permutation: wx1 c1 rxwy2 c2 ry3 c3 -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step ry3: select id from D2; id 3 -step c3: COMMIT; +step c3: COMMIT; starting permutation: wx1 c1 rxwy2 ry3 c2 c3 -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step c2: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c3: COMMIT; starting permutation: wx1 c1 rxwy2 ry3 c3 c2 -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step c3: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c2: COMMIT; starting permutation: wx1 c1 ry3 rxwy2 c2 c3 -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step c3: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step c3: COMMIT; starting permutation: wx1 c1 ry3 rxwy2 c3 c2 -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step c3: COMMIT; -step c2: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c3: COMMIT; +step c2: COMMIT; starting permutation: wx1 c1 ry3 c3 rxwy2 c2 -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step ry3: select id from D2; id 1 -step c3: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; +step c3: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; starting permutation: wx1 rxwy2 c1 c2 ry3 c3 -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step c1: COMMIT; -step c2: COMMIT; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step c1: COMMIT; +step c2: COMMIT; +step ry3: select id from D2; id 2 -step c3: COMMIT; +step c3: COMMIT; starting permutation: wx1 rxwy2 c1 ry3 c2 c3 -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step c1: COMMIT; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step c1: COMMIT; +step ry3: select id from D2; id 1 -step c2: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions -step c3: COMMIT; +step c3: COMMIT; starting permutation: wx1 rxwy2 c1 ry3 c3 c2 -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step c1: COMMIT; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step c1: COMMIT; +step ry3: select id from D2; id 1 -step c3: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wx1 rxwy2 c2 c1 ry3 c3 -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step c1: COMMIT; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step c1: COMMIT; +step ry3: select id from D2; id 2 -step c3: COMMIT; +step c3: COMMIT; starting permutation: wx1 rxwy2 c2 ry3 c1 c3 -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step ry3: select id from D2; id 2 -step c1: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: wx1 rxwy2 c2 ry3 c3 c1 -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step ry3: select id from D2; id 2 -step c3: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: wx1 rxwy2 ry3 c1 c2 c3 -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step c1: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions -step c3: COMMIT; +step c3: COMMIT; starting permutation: wx1 rxwy2 ry3 c1 c3 c2 -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step c1: COMMIT; -step c3: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wx1 rxwy2 ry3 c2 c1 c3 -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step c2: COMMIT; -step c1: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: wx1 rxwy2 ry3 c2 c3 c1 -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step c2: COMMIT; -step c3: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: wx1 rxwy2 ry3 c3 c1 c2 -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step c3: COMMIT; -step c1: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; starting permutation: wx1 rxwy2 ry3 c3 c2 c1 -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step c3: COMMIT; -step c2: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; starting permutation: wx1 ry3 c1 rxwy2 c2 c3 -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 1 -step c1: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step c3: COMMIT; starting permutation: wx1 ry3 c1 rxwy2 c3 c2 -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 1 -step c1: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step c3: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c3: COMMIT; +step c2: COMMIT; starting permutation: wx1 ry3 c1 c3 rxwy2 c2 -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 1 -step c1: COMMIT; -step c3: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; starting permutation: wx1 ry3 rxwy2 c1 c2 c3 -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step c1: COMMIT; -step c2: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions -step c3: COMMIT; +step c3: COMMIT; starting permutation: wx1 ry3 rxwy2 c1 c3 c2 -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step c1: COMMIT; -step c3: COMMIT; -step c2: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: wx1 ry3 rxwy2 c2 c1 c3 -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step c1: COMMIT; -step c3: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: wx1 ry3 rxwy2 c2 c3 c1 -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step c3: COMMIT; -step c1: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: wx1 ry3 rxwy2 c3 c1 c2 -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step c3: COMMIT; -step c1: COMMIT; -step c2: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; starting permutation: wx1 ry3 rxwy2 c3 c2 c1 -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step c3: COMMIT; -step c2: COMMIT; -step c1: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; starting permutation: wx1 ry3 c3 c1 rxwy2 c2 -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 1 -step c3: COMMIT; -step c1: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; starting permutation: wx1 ry3 c3 rxwy2 c1 c2 -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 1 -step c3: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step c1: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c1: COMMIT; +step c2: COMMIT; starting permutation: wx1 ry3 c3 rxwy2 c2 c1 -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 1 -step c3: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step c1: COMMIT; starting permutation: rxwy2 wx1 c1 c2 ry3 c3 -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step c2: COMMIT; -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step c2: COMMIT; +step ry3: select id from D2; id 2 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rxwy2 wx1 c1 ry3 c2 c3 -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step ry3: select id from D2; id 1 -step c2: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions -step c3: COMMIT; +step c3: COMMIT; starting permutation: rxwy2 wx1 c1 ry3 c3 c2 -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step ry3: select id from D2; id 1 -step c3: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rxwy2 wx1 c2 c1 ry3 c3 -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step c2: COMMIT; -step c1: COMMIT; -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step c2: COMMIT; +step c1: COMMIT; +step ry3: select id from D2; id 2 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rxwy2 wx1 c2 ry3 c1 c3 -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step c2: COMMIT; -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step c2: COMMIT; +step ry3: select id from D2; id 2 -step c1: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rxwy2 wx1 c2 ry3 c3 c1 -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step c2: COMMIT; -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step c2: COMMIT; +step ry3: select id from D2; id 2 -step c3: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rxwy2 wx1 ry3 c1 c2 c3 -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 1 -step c1: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions -step c3: COMMIT; +step c3: COMMIT; starting permutation: rxwy2 wx1 ry3 c1 c3 c2 -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 1 -step c1: COMMIT; -step c3: COMMIT; -step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rxwy2 wx1 ry3 c2 c1 c3 -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 1 -step c2: COMMIT; -step c1: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rxwy2 wx1 ry3 c2 c3 c1 -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 1 -step c2: COMMIT; -step c3: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rxwy2 wx1 ry3 c3 c1 c2 -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 1 -step c3: COMMIT; -step c1: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; starting permutation: rxwy2 wx1 ry3 c3 c2 c1 -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 1 -step c3: COMMIT; -step c2: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; starting permutation: rxwy2 c2 wx1 c1 ry3 c3 -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step ry3: select id from D2; id 2 -step c3: COMMIT; +step c3: COMMIT; starting permutation: rxwy2 c2 wx1 ry3 c1 c3 -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 2 -step c1: COMMIT; -step c3: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rxwy2 c2 wx1 ry3 c3 c1 -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step wx1: update D1 set id = id + 1; -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step ry3: select id from D2; id 2 -step c3: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rxwy2 c2 ry3 wx1 c1 c3 -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step ry3: select id from D2; id 2 -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step c3: COMMIT; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rxwy2 c2 ry3 wx1 c3 c1 -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step ry3: select id from D2; id 2 -step wx1: update D1 set id = id + 1; -step c3: COMMIT; -step c1: COMMIT; +step wx1: update D1 set id = id + 1; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rxwy2 c2 ry3 c3 wx1 c1 -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step ry3: select id from D2; id 2 -step c3: COMMIT; -step wx1: update D1 set id = id + 1; -step c1: COMMIT; +step c3: COMMIT; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; starting permutation: rxwy2 ry3 wx1 c1 c2 c3 -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions -step c3: COMMIT; +step c3: COMMIT; starting permutation: rxwy2 ry3 wx1 c1 c3 c2 -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step c3: COMMIT; -step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: rxwy2 ry3 wx1 c2 c1 c3 -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step wx1: update D1 set id = id + 1; -step c2: COMMIT; -step c1: COMMIT; -step c3: COMMIT; +step wx1: update D1 set id = id + 1; +step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rxwy2 ry3 wx1 c2 c3 c1 -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step wx1: update D1 set id = id + 1; -step c2: COMMIT; -step c3: COMMIT; -step c1: COMMIT; +step wx1: update D1 set id = id + 1; +step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rxwy2 ry3 wx1 c3 c1 c2 -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step wx1: update D1 set id = id + 1; -step c3: COMMIT; -step c1: COMMIT; -step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; starting permutation: rxwy2 ry3 wx1 c3 c2 c1 -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step wx1: update D1 set id = id + 1; -step c3: COMMIT; -step c2: COMMIT; -step c1: COMMIT; +step wx1: update D1 set id = id + 1; +step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; starting permutation: rxwy2 ry3 c2 wx1 c1 c3 -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step c2: COMMIT; -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step c3: COMMIT; +step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step c3: COMMIT; starting permutation: rxwy2 ry3 c2 wx1 c3 c1 -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step c2: COMMIT; -step wx1: update D1 set id = id + 1; -step c3: COMMIT; -step c1: COMMIT; +step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step c3: COMMIT; +step c1: COMMIT; starting permutation: rxwy2 ry3 c2 c3 wx1 c1 -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step c2: COMMIT; -step c3: COMMIT; -step wx1: update D1 set id = id + 1; -step c1: COMMIT; +step c2: COMMIT; +step c3: COMMIT; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; starting permutation: rxwy2 ry3 c3 wx1 c1 c2 -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step c3: COMMIT; -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step c2: COMMIT; starting permutation: rxwy2 ry3 c3 wx1 c2 c1 -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step c3: COMMIT; -step wx1: update D1 set id = id + 1; -step c2: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step wx1: update D1 set id = id + 1; +step c2: COMMIT; +step c1: COMMIT; starting permutation: rxwy2 ry3 c3 c2 wx1 c1 -step rxwy2: update D2 set id = (select id+1 from D1); -step ry3: select id from D2; +step rxwy2: update D2 set id = (select id+1 from D1); +step ry3: select id from D2; id 1 -step c3: COMMIT; -step c2: COMMIT; -step wx1: update D1 set id = id + 1; -step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; starting permutation: ry3 wx1 c1 rxwy2 c2 c3 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step c3: COMMIT; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step c3: COMMIT; starting permutation: ry3 wx1 c1 rxwy2 c3 c2 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step c3: COMMIT; -step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c3: COMMIT; +step c2: COMMIT; starting permutation: ry3 wx1 c1 c3 rxwy2 c2 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step c3: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step c3: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; starting permutation: ry3 wx1 rxwy2 c1 c2 c3 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step c1: COMMIT; -step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions -step c3: COMMIT; +step c3: COMMIT; starting permutation: ry3 wx1 rxwy2 c1 c3 c2 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step c1: COMMIT; -step c3: COMMIT; -step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry3 wx1 rxwy2 c2 c1 c3 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step c1: COMMIT; -step c3: COMMIT; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: ry3 wx1 rxwy2 c2 c3 c1 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step c3: COMMIT; -step c1: COMMIT; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: ry3 wx1 rxwy2 c3 c1 c2 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step c3: COMMIT; -step c1: COMMIT; -step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; starting permutation: ry3 wx1 rxwy2 c3 c2 c1 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step c3: COMMIT; -step c2: COMMIT; -step c1: COMMIT; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; starting permutation: ry3 wx1 c3 c1 rxwy2 c2 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step wx1: update D1 set id = id + 1; -step c3: COMMIT; -step c1: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step c3: COMMIT; +step c1: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; starting permutation: ry3 wx1 c3 rxwy2 c1 c2 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step wx1: update D1 set id = id + 1; -step c3: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step c1: COMMIT; -step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step c3: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c1: COMMIT; +step c2: COMMIT; starting permutation: ry3 wx1 c3 rxwy2 c2 c1 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step wx1: update D1 set id = id + 1; -step c3: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step c1: COMMIT; +step wx1: update D1 set id = id + 1; +step c3: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step c1: COMMIT; starting permutation: ry3 rxwy2 wx1 c1 c2 c3 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step c2: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions -step c3: COMMIT; +step c3: COMMIT; starting permutation: ry3 rxwy2 wx1 c1 c3 c2 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step c3: COMMIT; -step c2: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step c3: COMMIT; +step c2: COMMIT; ERROR: could not serialize access due to read/write dependencies among transactions starting permutation: ry3 rxwy2 wx1 c2 c1 c3 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step c2: COMMIT; -step c1: COMMIT; -step c3: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step c2: COMMIT; +step c1: COMMIT; +step c3: COMMIT; starting permutation: ry3 rxwy2 wx1 c2 c3 c1 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step c2: COMMIT; -step c3: COMMIT; -step c1: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step c2: COMMIT; +step c3: COMMIT; +step c1: COMMIT; starting permutation: ry3 rxwy2 wx1 c3 c1 c2 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step c3: COMMIT; -step c1: COMMIT; -step c2: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step c3: COMMIT; +step c1: COMMIT; +step c2: COMMIT; starting permutation: ry3 rxwy2 wx1 c3 c2 c1 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step c3: COMMIT; -step c2: COMMIT; -step c1: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step c3: COMMIT; +step c2: COMMIT; +step c1: COMMIT; starting permutation: ry3 rxwy2 c2 wx1 c1 c3 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step c3: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step c3: COMMIT; starting permutation: ry3 rxwy2 c2 wx1 c3 c1 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step wx1: update D1 set id = id + 1; -step c3: COMMIT; -step c1: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step c3: COMMIT; +step c1: COMMIT; starting permutation: ry3 rxwy2 c2 c3 wx1 c1 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step c3: COMMIT; -step wx1: update D1 set id = id + 1; -step c1: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step c3: COMMIT; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; starting permutation: ry3 rxwy2 c3 wx1 c1 c2 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step c3: COMMIT; -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step c2: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c3: COMMIT; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step c2: COMMIT; starting permutation: ry3 rxwy2 c3 wx1 c2 c1 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step c3: COMMIT; -step wx1: update D1 set id = id + 1; -step c2: COMMIT; -step c1: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c3: COMMIT; +step wx1: update D1 set id = id + 1; +step c2: COMMIT; +step c1: COMMIT; starting permutation: ry3 rxwy2 c3 c2 wx1 c1 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step rxwy2: update D2 set id = (select id+1 from D1); -step c3: COMMIT; -step c2: COMMIT; -step wx1: update D1 set id = id + 1; -step c1: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c3: COMMIT; +step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; starting permutation: ry3 c3 wx1 c1 rxwy2 c2 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step c3: COMMIT; -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; +step c3: COMMIT; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; starting permutation: ry3 c3 wx1 rxwy2 c1 c2 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step c3: COMMIT; -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step c1: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step c1: COMMIT; +step c2: COMMIT; starting permutation: ry3 c3 wx1 rxwy2 c2 c1 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step c3: COMMIT; -step wx1: update D1 set id = id + 1; -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step wx1: update D1 set id = id + 1; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step c1: COMMIT; starting permutation: ry3 c3 rxwy2 wx1 c1 c2 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step c3: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step c1: COMMIT; -step c2: COMMIT; +step c3: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step c1: COMMIT; +step c2: COMMIT; starting permutation: ry3 c3 rxwy2 wx1 c2 c1 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step c3: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step wx1: update D1 set id = id + 1; -step c2: COMMIT; -step c1: COMMIT; +step c3: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step wx1: update D1 set id = id + 1; +step c2: COMMIT; +step c1: COMMIT; starting permutation: ry3 c3 rxwy2 c2 wx1 c1 -step ry3: select id from D2; +step ry3: select id from D2; id 1 -step c3: COMMIT; -step rxwy2: update D2 set id = (select id+1 from D1); -step c2: COMMIT; -step wx1: update D1 set id = id + 1; -step c1: COMMIT; +step c3: COMMIT; +step rxwy2: update D2 set id = (select id+1 from D1); +step c2: COMMIT; +step wx1: update D1 set id = id + 1; +step c1: COMMIT; diff --git a/src/test/isolation/isolationtester.c b/src/test/isolation/isolationtester.c index 0f77917fb5..ede12d5771 100644 --- a/src/test/isolation/isolationtester.c +++ b/src/test/isolation/isolationtester.c @@ -278,11 +278,15 @@ run_permutation(TestSpec * testspec, int nsteps, Step ** steps) if (testspec->sessions[i]->setupsql) { res = PQexec(conns[i], testspec->sessions[i]->setupsql); - if (PQresultStatus(res) != PGRES_COMMAND_OK) + if (PQresultStatus(res) == PGRES_TUPLES_OK) + { + printResultSet(res); + } + else if (PQresultStatus(res) != PGRES_COMMAND_OK) { fprintf(stderr, "setup of session %s failed: %s", testspec->sessions[i]->name, - PQerrorMessage(conns[0])); + PQerrorMessage(conns[i])); exit_nicely(); } PQclear(res); @@ -307,9 +311,22 @@ run_permutation(TestSpec * testspec, int nsteps, Step ** steps) break; case PGRES_FATAL_ERROR: - /* Detail may contain xid values, so just show primary. */ - printf("%s: %s\n", PQresultErrorField(res, PG_DIAG_SEVERITY), - PQresultErrorField(res, PG_DIAG_MESSAGE_PRIMARY)); + /* + * Detail may contain XID values, so we want to just show + * primary. Beware however that libpq-generated error results + * may not contain subfields, only an old-style message. + */ + { + const char *sev = PQresultErrorField(res, + PG_DIAG_SEVERITY); + const char *msg = PQresultErrorField(res, + PG_DIAG_MESSAGE_PRIMARY); + + if (sev && msg) + printf("%s: %s\n", sev, msg); + else + printf("%s", PQresultErrorMessage(res)); + } break; default: @@ -329,7 +346,7 @@ run_permutation(TestSpec * testspec, int nsteps, Step ** steps) { fprintf(stderr, "teardown of session %s failed: %s", testspec->sessions[i]->name, - PQerrorMessage(conns[0])); + PQerrorMessage(conns[i])); /* don't exit on teardown failure */ } PQclear(res); @@ -340,7 +357,11 @@ run_permutation(TestSpec * testspec, int nsteps, Step ** steps) if (testspec->teardownsql) { res = PQexec(conns[0], testspec->teardownsql); - if (PQresultStatus(res) != PGRES_COMMAND_OK) + if (PQresultStatus(res) == PGRES_TUPLES_OK) + { + printResultSet(res); + } + else if (PQresultStatus(res) != PGRES_COMMAND_OK) { fprintf(stderr, "teardown failed: %s", PQerrorMessage(conns[0])); diff --git a/src/test/isolation/specs/prepared-transactions.spec b/src/test/isolation/specs/prepared-transactions.spec new file mode 100644 index 0000000000..bb9e154e6e --- /dev/null +++ b/src/test/isolation/specs/prepared-transactions.spec @@ -0,0 +1,1507 @@ +# This test verifies that if there's a series of rw-conflicts +# s1 ---> s2 ---> s3, with s3 committing first +# at least one transaction will be aborted, regardless of the order in +# which the conflicts are detected and transactions prepare and +# commit. +# +# +# Tables test2 and test3 are used to create the +# s1 --> s2 and s2 --> s3 rw-dependencies respectively +# +# test1 isn't involved in the anomaly; s1 only inserts a row into it +# so that there's an easy way to tell (by looking for that row) if s1 +# successfully committed. +# +# force_snapshot is used to force s2 and s3 to take their snapshot +# immediately after BEGIN, so we can be sure the three transactions +# overlap. +setup +{ + CREATE TABLE test1 (a int); + CREATE TABLE test2 (b int); + CREATE TABLE test3 (c int); + CREATE TABLE force_snapshot (a int); +} + +teardown +{ + DROP TABLE test1; + DROP TABLE test2; + DROP TABLE test3; + DROP TABLE force_snapshot; +} + + +session "s1" +setup { BEGIN ISOLATION LEVEL SERIALIZABLE; INSERT INTO test1 VALUES (1); } +step "r1" { SELECT * FROM test2; } +step "p1" { PREPARE TRANSACTION 's1'; } +step "c1" { COMMIT PREPARED 's1'; } + +session "s2" +setup { BEGIN ISOLATION LEVEL SERIALIZABLE; SELECT * FROM force_snapshot; } +step "r2" { SELECT * FROM test3; } +step "w2" { INSERT INTO test2 VALUES (2); } +step "p2" { PREPARE TRANSACTION 's2'; } +step "c2" { COMMIT PREPARED 's2'; } + +session "s3" +setup { BEGIN ISOLATION LEVEL SERIALIZABLE; SELECT * FROM force_snapshot; } +step "w3" { INSERT INTO test3 VALUES (3); } +step "p3" { PREPARE TRANSACTION 's3'; } +step "c3" { COMMIT PREPARED 's3'; } + +# When run at the end of the permutations below, this SELECT statement +# should never return any tuples, because at least one of the three +# transactions involved should be aborted. +session "s4" +step "check" { SELECT * FROM test1,test2,test3; } + +# We run on all permutations of the statements above subject to the +# following constraints: +# - each transaction's reads/writes must happen before it prepares +# - each transaction must prepare before committing +# - s3 must be the first of the three transactions to commit +# ...which means that each permutation should fail. +# +# To bring the number of permutations down a bit, we further require +# them to satisfy *one* of the following: +# - r1 < w2 < r2 < w3 (T1-->T2 conflict on write, T2-->T3 on write) +# - r1 < w2 < w3 < r2 (T1-->T2 conflict on read, T2-->T3 on write) +# - w2 < r1 < r2 < w3 (T1-->T2 conflict on write, T2-->T3 on read) +# - w2 < r1 < w3 < r2 (T1-->T2 conflict on read, T2-->T3 on read) +# This eliminates some redundant combinations. For example, it doesn't +# matter if w2 happens before w3 as long as both come before the +# conflicting reads. +permutation "r1" "r2" "w2" "w3" "p1" "p2" "p3" "c3" "c1" "c2" "check" +permutation "r1" "r2" "w2" "w3" "p1" "p2" "p3" "c3" "c2" "c1" "check" +permutation "r1" "r2" "w2" "w3" "p1" "p3" "p2" "c3" "c1" "c2" "check" +permutation "r1" "r2" "w2" "w3" "p1" "p3" "p2" "c3" "c2" "c1" "check" +permutation "r1" "r2" "w2" "w3" "p1" "p3" "c3" "p2" "c1" "c2" "check" +permutation "r1" "r2" "w2" "w3" "p1" "p3" "c3" "p2" "c2" "c1" "check" +permutation "r1" "r2" "w2" "w3" "p1" "p3" "c3" "c1" "p2" "c2" "check" +permutation "r1" "r2" "w2" "w3" "p2" "p1" "p3" "c3" "c1" "c2" "check" +permutation "r1" "r2" "w2" "w3" "p2" "p1" "p3" "c3" "c2" "c1" "check" +permutation "r1" "r2" "w2" "w3" "p2" "p3" "p1" "c3" "c1" "c2" "check" +permutation "r1" "r2" "w2" "w3" "p2" "p3" "p1" "c3" "c2" "c1" "check" +permutation "r1" "r2" "w2" "w3" "p2" "p3" "c3" "p1" "c1" "c2" "check" +permutation "r1" "r2" "w2" "w3" "p2" "p3" "c3" "p1" "c2" "c1" "check" +permutation "r1" "r2" "w2" "w3" "p2" "p3" "c3" "c2" "p1" "c1" "check" +permutation "r1" "r2" "w2" "w3" "p3" "p1" "p2" "c3" "c1" "c2" "check" +permutation "r1" "r2" "w2" "w3" "p3" "p1" "p2" "c3" "c2" "c1" "check" +permutation "r1" "r2" "w2" "w3" "p3" "p1" "c3" "p2" "c1" "c2" "check" +permutation "r1" "r2" "w2" "w3" "p3" "p1" "c3" "p2" "c2" "c1" "check" +permutation "r1" "r2" "w2" "w3" "p3" "p1" "c3" "c1" "p2" "c2" "check" +permutation "r1" "r2" "w2" "w3" "p3" "p2" "p1" "c3" "c1" "c2" "check" +permutation "r1" "r2" "w2" "w3" "p3" "p2" "p1" "c3" "c2" "c1" "check" +permutation "r1" "r2" "w2" "w3" "p3" "p2" "c3" "p1" "c1" "c2" "check" +permutation "r1" "r2" "w2" "w3" "p3" "p2" "c3" "p1" "c2" "c1" "check" +permutation "r1" "r2" "w2" "w3" "p3" "p2" "c3" "c2" "p1" "c1" "check" +permutation "r1" "r2" "w2" "w3" "p3" "c3" "p1" "p2" "c1" "c2" "check" +permutation "r1" "r2" "w2" "w3" "p3" "c3" "p1" "p2" "c2" "c1" "check" +permutation "r1" "r2" "w2" "w3" "p3" "c3" "p1" "c1" "p2" "c2" "check" +permutation "r1" "r2" "w2" "w3" "p3" "c3" "p2" "p1" "c1" "c2" "check" +permutation "r1" "r2" "w2" "w3" "p3" "c3" "p2" "p1" "c2" "c1" "check" +permutation "r1" "r2" "w2" "w3" "p3" "c3" "p2" "c2" "p1" "c1" "check" +permutation "r1" "r2" "w2" "p1" "w3" "p2" "p3" "c3" "c1" "c2" "check" +permutation "r1" "r2" "w2" "p1" "w3" "p2" "p3" "c3" "c2" "c1" "check" +permutation "r1" "r2" "w2" "p1" "w3" "p3" "p2" "c3" "c1" "c2" "check" +permutation "r1" "r2" "w2" "p1" "w3" "p3" "p2" "c3" "c2" "c1" "check" +permutation "r1" "r2" "w2" "p1" "w3" "p3" "c3" "p2" "c1" "c2" "check" +permutation "r1" "r2" "w2" "p1" "w3" "p3" "c3" "p2" "c2" "c1" "check" +permutation "r1" "r2" "w2" "p1" "w3" "p3" "c3" "c1" "p2" "c2" "check" +permutation "r1" "r2" "w2" "p1" "p2" "w3" "p3" "c3" "c1" "c2" "check" +permutation "r1" "r2" "w2" "p1" "p2" "w3" "p3" "c3" "c2" "c1" "check" +permutation "r1" "r2" "w2" "p2" "w3" "p1" "p3" "c3" "c1" "c2" "check" +permutation "r1" "r2" "w2" "p2" "w3" "p1" "p3" "c3" "c2" "c1" "check" +permutation "r1" "r2" "w2" "p2" "w3" "p3" "p1" "c3" "c1" "c2" "check" +permutation "r1" "r2" "w2" "p2" "w3" "p3" "p1" "c3" "c2" "c1" "check" +permutation "r1" "r2" "w2" "p2" "w3" "p3" "c3" "p1" "c1" "c2" "check" +permutation "r1" "r2" "w2" "p2" "w3" "p3" "c3" "p1" "c2" "c1" "check" +permutation "r1" "r2" "w2" "p2" "w3" "p3" "c3" "c2" "p1" "c1" "check" +permutation "r1" "r2" "w2" "p2" "p1" "w3" "p3" "c3" "c1" "c2" "check" +permutation "r1" "r2" "w2" "p2" "p1" "w3" "p3" "c3" "c2" "c1" "check" +permutation "r1" "r2" "p1" "w2" "w3" "p2" "p3" "c3" "c1" "c2" "check" +permutation "r1" "r2" "p1" "w2" "w3" "p2" "p3" "c3" "c2" "c1" "check" +permutation "r1" "r2" "p1" "w2" "w3" "p3" "p2" "c3" "c1" "c2" "check" +permutation "r1" "r2" "p1" "w2" "w3" "p3" "p2" "c3" "c2" "c1" "check" +permutation "r1" "r2" "p1" "w2" "w3" "p3" "c3" "p2" "c1" "c2" "check" +permutation "r1" "r2" "p1" "w2" "w3" "p3" "c3" "p2" "c2" "c1" "check" +permutation "r1" "r2" "p1" "w2" "w3" "p3" "c3" "c1" "p2" "c2" "check" +permutation "r1" "r2" "p1" "w2" "p2" "w3" "p3" "c3" "c1" "c2" "check" +permutation "r1" "r2" "p1" "w2" "p2" "w3" "p3" "c3" "c2" "c1" "check" +permutation "r1" "w2" "w3" "r2" "p1" "p2" "p3" "c3" "c1" "c2" "check" +permutation "r1" "w2" "w3" "r2" "p1" "p2" "p3" "c3" "c2" "c1" "check" +permutation "r1" "w2" "w3" "r2" "p1" "p3" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w2" "w3" "r2" "p1" "p3" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w2" "w3" "r2" "p1" "p3" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w2" "w3" "r2" "p1" "p3" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w2" "w3" "r2" "p1" "p3" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w2" "w3" "r2" "p2" "p1" "p3" "c3" "c1" "c2" "check" +permutation "r1" "w2" "w3" "r2" "p2" "p1" "p3" "c3" "c2" "c1" "check" +permutation "r1" "w2" "w3" "r2" "p2" "p3" "p1" "c3" "c1" "c2" "check" +permutation "r1" "w2" "w3" "r2" "p2" "p3" "p1" "c3" "c2" "c1" "check" +permutation "r1" "w2" "w3" "r2" "p2" "p3" "c3" "p1" "c1" "c2" "check" +permutation "r1" "w2" "w3" "r2" "p2" "p3" "c3" "p1" "c2" "c1" "check" +permutation "r1" "w2" "w3" "r2" "p2" "p3" "c3" "c2" "p1" "c1" "check" +permutation "r1" "w2" "w3" "r2" "p3" "p1" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w2" "w3" "r2" "p3" "p1" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w2" "w3" "r2" "p3" "p1" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w2" "w3" "r2" "p3" "p1" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w2" "w3" "r2" "p3" "p1" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w2" "w3" "r2" "p3" "p2" "p1" "c3" "c1" "c2" "check" +permutation "r1" "w2" "w3" "r2" "p3" "p2" "p1" "c3" "c2" "c1" "check" +permutation "r1" "w2" "w3" "r2" "p3" "p2" "c3" "p1" "c1" "c2" "check" +permutation "r1" "w2" "w3" "r2" "p3" "p2" "c3" "p1" "c2" "c1" "check" +permutation "r1" "w2" "w3" "r2" "p3" "p2" "c3" "c2" "p1" "c1" "check" +permutation "r1" "w2" "w3" "r2" "p3" "c3" "p1" "p2" "c1" "c2" "check" +permutation "r1" "w2" "w3" "r2" "p3" "c3" "p1" "p2" "c2" "c1" "check" +permutation "r1" "w2" "w3" "r2" "p3" "c3" "p1" "c1" "p2" "c2" "check" +permutation "r1" "w2" "w3" "r2" "p3" "c3" "p2" "p1" "c1" "c2" "check" +permutation "r1" "w2" "w3" "r2" "p3" "c3" "p2" "p1" "c2" "c1" "check" +permutation "r1" "w2" "w3" "r2" "p3" "c3" "p2" "c2" "p1" "c1" "check" +permutation "r1" "w2" "w3" "p1" "r2" "p2" "p3" "c3" "c1" "c2" "check" +permutation "r1" "w2" "w3" "p1" "r2" "p2" "p3" "c3" "c2" "c1" "check" +permutation "r1" "w2" "w3" "p1" "r2" "p3" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w2" "w3" "p1" "r2" "p3" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w2" "w3" "p1" "r2" "p3" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w2" "w3" "p1" "r2" "p3" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w2" "w3" "p1" "r2" "p3" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w2" "w3" "p1" "p3" "r2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w2" "w3" "p1" "p3" "r2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w2" "w3" "p1" "p3" "r2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w2" "w3" "p1" "p3" "r2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w2" "w3" "p1" "p3" "r2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w2" "w3" "p1" "p3" "c3" "r2" "p2" "c1" "c2" "check" +permutation "r1" "w2" "w3" "p1" "p3" "c3" "r2" "p2" "c2" "c1" "check" +permutation "r1" "w2" "w3" "p1" "p3" "c3" "r2" "c1" "p2" "c2" "check" +permutation "r1" "w2" "w3" "p1" "p3" "c3" "c1" "r2" "p2" "c2" "check" +permutation "r1" "w2" "w3" "p3" "r2" "p1" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w2" "w3" "p3" "r2" "p1" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w2" "w3" "p3" "r2" "p1" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w2" "w3" "p3" "r2" "p1" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w2" "w3" "p3" "r2" "p1" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w2" "w3" "p3" "r2" "p2" "p1" "c3" "c1" "c2" "check" +permutation "r1" "w2" "w3" "p3" "r2" "p2" "p1" "c3" "c2" "c1" "check" +permutation "r1" "w2" "w3" "p3" "r2" "p2" "c3" "p1" "c1" "c2" "check" +permutation "r1" "w2" "w3" "p3" "r2" "p2" "c3" "p1" "c2" "c1" "check" +permutation "r1" "w2" "w3" "p3" "r2" "p2" "c3" "c2" "p1" "c1" "check" +permutation "r1" "w2" "w3" "p3" "r2" "c3" "p1" "p2" "c1" "c2" "check" +permutation "r1" "w2" "w3" "p3" "r2" "c3" "p1" "p2" "c2" "c1" "check" +permutation "r1" "w2" "w3" "p3" "r2" "c3" "p1" "c1" "p2" "c2" "check" +permutation "r1" "w2" "w3" "p3" "r2" "c3" "p2" "p1" "c1" "c2" "check" +permutation "r1" "w2" "w3" "p3" "r2" "c3" "p2" "p1" "c2" "c1" "check" +permutation "r1" "w2" "w3" "p3" "r2" "c3" "p2" "c2" "p1" "c1" "check" +permutation "r1" "w2" "w3" "p3" "p1" "r2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w2" "w3" "p3" "p1" "r2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w2" "w3" "p3" "p1" "r2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w2" "w3" "p3" "p1" "r2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w2" "w3" "p3" "p1" "r2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w2" "w3" "p3" "p1" "c3" "r2" "p2" "c1" "c2" "check" +permutation "r1" "w2" "w3" "p3" "p1" "c3" "r2" "p2" "c2" "c1" "check" +permutation "r1" "w2" "w3" "p3" "p1" "c3" "r2" "c1" "p2" "c2" "check" +permutation "r1" "w2" "w3" "p3" "p1" "c3" "c1" "r2" "p2" "c2" "check" +permutation "r1" "w2" "w3" "p3" "c3" "r2" "p1" "p2" "c1" "c2" "check" +permutation "r1" "w2" "w3" "p3" "c3" "r2" "p1" "p2" "c2" "c1" "check" +permutation "r1" "w2" "w3" "p3" "c3" "r2" "p1" "c1" "p2" "c2" "check" +permutation "r1" "w2" "w3" "p3" "c3" "r2" "p2" "p1" "c1" "c2" "check" +permutation "r1" "w2" "w3" "p3" "c3" "r2" "p2" "p1" "c2" "c1" "check" +permutation "r1" "w2" "w3" "p3" "c3" "r2" "p2" "c2" "p1" "c1" "check" +permutation "r1" "w2" "w3" "p3" "c3" "p1" "r2" "p2" "c1" "c2" "check" +permutation "r1" "w2" "w3" "p3" "c3" "p1" "r2" "p2" "c2" "c1" "check" +permutation "r1" "w2" "w3" "p3" "c3" "p1" "r2" "c1" "p2" "c2" "check" +permutation "r1" "w2" "w3" "p3" "c3" "p1" "c1" "r2" "p2" "c2" "check" +permutation "r1" "w2" "p1" "w3" "r2" "p2" "p3" "c3" "c1" "c2" "check" +permutation "r1" "w2" "p1" "w3" "r2" "p2" "p3" "c3" "c2" "c1" "check" +permutation "r1" "w2" "p1" "w3" "r2" "p3" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w2" "p1" "w3" "r2" "p3" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w2" "p1" "w3" "r2" "p3" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w2" "p1" "w3" "r2" "p3" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w2" "p1" "w3" "r2" "p3" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w2" "p1" "w3" "p3" "r2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w2" "p1" "w3" "p3" "r2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w2" "p1" "w3" "p3" "r2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w2" "p1" "w3" "p3" "r2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w2" "p1" "w3" "p3" "r2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w2" "p1" "w3" "p3" "c3" "r2" "p2" "c1" "c2" "check" +permutation "r1" "w2" "p1" "w3" "p3" "c3" "r2" "p2" "c2" "c1" "check" +permutation "r1" "w2" "p1" "w3" "p3" "c3" "r2" "c1" "p2" "c2" "check" +permutation "r1" "w2" "p1" "w3" "p3" "c3" "c1" "r2" "p2" "c2" "check" +permutation "r1" "w3" "r2" "w2" "p1" "p2" "p3" "c3" "c1" "c2" "check" +permutation "r1" "w3" "r2" "w2" "p1" "p2" "p3" "c3" "c2" "c1" "check" +permutation "r1" "w3" "r2" "w2" "p1" "p3" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "r2" "w2" "p1" "p3" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "r2" "w2" "p1" "p3" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "r2" "w2" "p1" "p3" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "r2" "w2" "p1" "p3" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "r2" "w2" "p2" "p1" "p3" "c3" "c1" "c2" "check" +permutation "r1" "w3" "r2" "w2" "p2" "p1" "p3" "c3" "c2" "c1" "check" +permutation "r1" "w3" "r2" "w2" "p2" "p3" "p1" "c3" "c1" "c2" "check" +permutation "r1" "w3" "r2" "w2" "p2" "p3" "p1" "c3" "c2" "c1" "check" +permutation "r1" "w3" "r2" "w2" "p2" "p3" "c3" "p1" "c1" "c2" "check" +permutation "r1" "w3" "r2" "w2" "p2" "p3" "c3" "p1" "c2" "c1" "check" +permutation "r1" "w3" "r2" "w2" "p2" "p3" "c3" "c2" "p1" "c1" "check" +permutation "r1" "w3" "r2" "w2" "p3" "p1" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "r2" "w2" "p3" "p1" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "r2" "w2" "p3" "p1" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "r2" "w2" "p3" "p1" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "r2" "w2" "p3" "p1" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "r2" "w2" "p3" "p2" "p1" "c3" "c1" "c2" "check" +permutation "r1" "w3" "r2" "w2" "p3" "p2" "p1" "c3" "c2" "c1" "check" +permutation "r1" "w3" "r2" "w2" "p3" "p2" "c3" "p1" "c1" "c2" "check" +permutation "r1" "w3" "r2" "w2" "p3" "p2" "c3" "p1" "c2" "c1" "check" +permutation "r1" "w3" "r2" "w2" "p3" "p2" "c3" "c2" "p1" "c1" "check" +permutation "r1" "w3" "r2" "w2" "p3" "c3" "p1" "p2" "c1" "c2" "check" +permutation "r1" "w3" "r2" "w2" "p3" "c3" "p1" "p2" "c2" "c1" "check" +permutation "r1" "w3" "r2" "w2" "p3" "c3" "p1" "c1" "p2" "c2" "check" +permutation "r1" "w3" "r2" "w2" "p3" "c3" "p2" "p1" "c1" "c2" "check" +permutation "r1" "w3" "r2" "w2" "p3" "c3" "p2" "p1" "c2" "c1" "check" +permutation "r1" "w3" "r2" "w2" "p3" "c3" "p2" "c2" "p1" "c1" "check" +permutation "r1" "w3" "r2" "p1" "w2" "p2" "p3" "c3" "c1" "c2" "check" +permutation "r1" "w3" "r2" "p1" "w2" "p2" "p3" "c3" "c2" "c1" "check" +permutation "r1" "w3" "r2" "p1" "w2" "p3" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "r2" "p1" "w2" "p3" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "r2" "p1" "w2" "p3" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "r2" "p1" "w2" "p3" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "r2" "p1" "w2" "p3" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "r2" "p1" "p3" "w2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "r2" "p1" "p3" "w2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "r2" "p1" "p3" "w2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "r2" "p1" "p3" "w2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "r2" "p1" "p3" "w2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "r2" "p1" "p3" "c3" "w2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "r2" "p1" "p3" "c3" "w2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "r2" "p1" "p3" "c3" "w2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "r2" "p1" "p3" "c3" "c1" "w2" "p2" "c2" "check" +permutation "r1" "w3" "r2" "p3" "w2" "p1" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "r2" "p3" "w2" "p1" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "r2" "p3" "w2" "p1" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "r2" "p3" "w2" "p1" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "r2" "p3" "w2" "p1" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "r2" "p3" "w2" "p2" "p1" "c3" "c1" "c2" "check" +permutation "r1" "w3" "r2" "p3" "w2" "p2" "p1" "c3" "c2" "c1" "check" +permutation "r1" "w3" "r2" "p3" "w2" "p2" "c3" "p1" "c1" "c2" "check" +permutation "r1" "w3" "r2" "p3" "w2" "p2" "c3" "p1" "c2" "c1" "check" +permutation "r1" "w3" "r2" "p3" "w2" "p2" "c3" "c2" "p1" "c1" "check" +permutation "r1" "w3" "r2" "p3" "w2" "c3" "p1" "p2" "c1" "c2" "check" +permutation "r1" "w3" "r2" "p3" "w2" "c3" "p1" "p2" "c2" "c1" "check" +permutation "r1" "w3" "r2" "p3" "w2" "c3" "p1" "c1" "p2" "c2" "check" +permutation "r1" "w3" "r2" "p3" "w2" "c3" "p2" "p1" "c1" "c2" "check" +permutation "r1" "w3" "r2" "p3" "w2" "c3" "p2" "p1" "c2" "c1" "check" +permutation "r1" "w3" "r2" "p3" "w2" "c3" "p2" "c2" "p1" "c1" "check" +permutation "r1" "w3" "r2" "p3" "p1" "w2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "r2" "p3" "p1" "w2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "r2" "p3" "p1" "w2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "r2" "p3" "p1" "w2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "r2" "p3" "p1" "w2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "r2" "p3" "p1" "c3" "w2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "r2" "p3" "p1" "c3" "w2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "r2" "p3" "p1" "c3" "w2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "r2" "p3" "p1" "c3" "c1" "w2" "p2" "c2" "check" +permutation "r1" "w3" "r2" "p3" "c3" "w2" "p1" "p2" "c1" "c2" "check" +permutation "r1" "w3" "r2" "p3" "c3" "w2" "p1" "p2" "c2" "c1" "check" +permutation "r1" "w3" "r2" "p3" "c3" "w2" "p1" "c1" "p2" "c2" "check" +permutation "r1" "w3" "r2" "p3" "c3" "w2" "p2" "p1" "c1" "c2" "check" +permutation "r1" "w3" "r2" "p3" "c3" "w2" "p2" "p1" "c2" "c1" "check" +permutation "r1" "w3" "r2" "p3" "c3" "w2" "p2" "c2" "p1" "c1" "check" +permutation "r1" "w3" "r2" "p3" "c3" "p1" "w2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "r2" "p3" "c3" "p1" "w2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "r2" "p3" "c3" "p1" "w2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "r2" "p3" "c3" "p1" "c1" "w2" "p2" "c2" "check" +permutation "r1" "w3" "w2" "r2" "p1" "p2" "p3" "c3" "c1" "c2" "check" +permutation "r1" "w3" "w2" "r2" "p1" "p2" "p3" "c3" "c2" "c1" "check" +permutation "r1" "w3" "w2" "r2" "p1" "p3" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "w2" "r2" "p1" "p3" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "w2" "r2" "p1" "p3" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "w2" "r2" "p1" "p3" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "w2" "r2" "p1" "p3" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "w2" "r2" "p2" "p1" "p3" "c3" "c1" "c2" "check" +permutation "r1" "w3" "w2" "r2" "p2" "p1" "p3" "c3" "c2" "c1" "check" +permutation "r1" "w3" "w2" "r2" "p2" "p3" "p1" "c3" "c1" "c2" "check" +permutation "r1" "w3" "w2" "r2" "p2" "p3" "p1" "c3" "c2" "c1" "check" +permutation "r1" "w3" "w2" "r2" "p2" "p3" "c3" "p1" "c1" "c2" "check" +permutation "r1" "w3" "w2" "r2" "p2" "p3" "c3" "p1" "c2" "c1" "check" +permutation "r1" "w3" "w2" "r2" "p2" "p3" "c3" "c2" "p1" "c1" "check" +permutation "r1" "w3" "w2" "r2" "p3" "p1" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "w2" "r2" "p3" "p1" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "w2" "r2" "p3" "p1" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "w2" "r2" "p3" "p1" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "w2" "r2" "p3" "p1" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "w2" "r2" "p3" "p2" "p1" "c3" "c1" "c2" "check" +permutation "r1" "w3" "w2" "r2" "p3" "p2" "p1" "c3" "c2" "c1" "check" +permutation "r1" "w3" "w2" "r2" "p3" "p2" "c3" "p1" "c1" "c2" "check" +permutation "r1" "w3" "w2" "r2" "p3" "p2" "c3" "p1" "c2" "c1" "check" +permutation "r1" "w3" "w2" "r2" "p3" "p2" "c3" "c2" "p1" "c1" "check" +permutation "r1" "w3" "w2" "r2" "p3" "c3" "p1" "p2" "c1" "c2" "check" +permutation "r1" "w3" "w2" "r2" "p3" "c3" "p1" "p2" "c2" "c1" "check" +permutation "r1" "w3" "w2" "r2" "p3" "c3" "p1" "c1" "p2" "c2" "check" +permutation "r1" "w3" "w2" "r2" "p3" "c3" "p2" "p1" "c1" "c2" "check" +permutation "r1" "w3" "w2" "r2" "p3" "c3" "p2" "p1" "c2" "c1" "check" +permutation "r1" "w3" "w2" "r2" "p3" "c3" "p2" "c2" "p1" "c1" "check" +permutation "r1" "w3" "w2" "p1" "r2" "p2" "p3" "c3" "c1" "c2" "check" +permutation "r1" "w3" "w2" "p1" "r2" "p2" "p3" "c3" "c2" "c1" "check" +permutation "r1" "w3" "w2" "p1" "r2" "p3" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "w2" "p1" "r2" "p3" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "w2" "p1" "r2" "p3" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "w2" "p1" "r2" "p3" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "w2" "p1" "r2" "p3" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "w2" "p1" "p3" "r2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "w2" "p1" "p3" "r2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "w2" "p1" "p3" "r2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "w2" "p1" "p3" "r2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "w2" "p1" "p3" "r2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "w2" "p1" "p3" "c3" "r2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "w2" "p1" "p3" "c3" "r2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "w2" "p1" "p3" "c3" "r2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "w2" "p1" "p3" "c3" "c1" "r2" "p2" "c2" "check" +permutation "r1" "w3" "w2" "p3" "r2" "p1" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "w2" "p3" "r2" "p1" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "w2" "p3" "r2" "p1" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "w2" "p3" "r2" "p1" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "w2" "p3" "r2" "p1" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "w2" "p3" "r2" "p2" "p1" "c3" "c1" "c2" "check" +permutation "r1" "w3" "w2" "p3" "r2" "p2" "p1" "c3" "c2" "c1" "check" +permutation "r1" "w3" "w2" "p3" "r2" "p2" "c3" "p1" "c1" "c2" "check" +permutation "r1" "w3" "w2" "p3" "r2" "p2" "c3" "p1" "c2" "c1" "check" +permutation "r1" "w3" "w2" "p3" "r2" "p2" "c3" "c2" "p1" "c1" "check" +permutation "r1" "w3" "w2" "p3" "r2" "c3" "p1" "p2" "c1" "c2" "check" +permutation "r1" "w3" "w2" "p3" "r2" "c3" "p1" "p2" "c2" "c1" "check" +permutation "r1" "w3" "w2" "p3" "r2" "c3" "p1" "c1" "p2" "c2" "check" +permutation "r1" "w3" "w2" "p3" "r2" "c3" "p2" "p1" "c1" "c2" "check" +permutation "r1" "w3" "w2" "p3" "r2" "c3" "p2" "p1" "c2" "c1" "check" +permutation "r1" "w3" "w2" "p3" "r2" "c3" "p2" "c2" "p1" "c1" "check" +permutation "r1" "w3" "w2" "p3" "p1" "r2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "w2" "p3" "p1" "r2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "w2" "p3" "p1" "r2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "w2" "p3" "p1" "r2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "w2" "p3" "p1" "r2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "w2" "p3" "p1" "c3" "r2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "w2" "p3" "p1" "c3" "r2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "w2" "p3" "p1" "c3" "r2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "w2" "p3" "p1" "c3" "c1" "r2" "p2" "c2" "check" +permutation "r1" "w3" "w2" "p3" "c3" "r2" "p1" "p2" "c1" "c2" "check" +permutation "r1" "w3" "w2" "p3" "c3" "r2" "p1" "p2" "c2" "c1" "check" +permutation "r1" "w3" "w2" "p3" "c3" "r2" "p1" "c1" "p2" "c2" "check" +permutation "r1" "w3" "w2" "p3" "c3" "r2" "p2" "p1" "c1" "c2" "check" +permutation "r1" "w3" "w2" "p3" "c3" "r2" "p2" "p1" "c2" "c1" "check" +permutation "r1" "w3" "w2" "p3" "c3" "r2" "p2" "c2" "p1" "c1" "check" +permutation "r1" "w3" "w2" "p3" "c3" "p1" "r2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "w2" "p3" "c3" "p1" "r2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "w2" "p3" "c3" "p1" "r2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "w2" "p3" "c3" "p1" "c1" "r2" "p2" "c2" "check" +permutation "r1" "w3" "p1" "r2" "w2" "p2" "p3" "c3" "c1" "c2" "check" +permutation "r1" "w3" "p1" "r2" "w2" "p2" "p3" "c3" "c2" "c1" "check" +permutation "r1" "w3" "p1" "r2" "w2" "p3" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "p1" "r2" "w2" "p3" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "p1" "r2" "w2" "p3" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p1" "r2" "w2" "p3" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p1" "r2" "w2" "p3" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p1" "r2" "p3" "w2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "p1" "r2" "p3" "w2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "p1" "r2" "p3" "w2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p1" "r2" "p3" "w2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p1" "r2" "p3" "w2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p1" "r2" "p3" "c3" "w2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p1" "r2" "p3" "c3" "w2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p1" "r2" "p3" "c3" "w2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p1" "r2" "p3" "c3" "c1" "w2" "p2" "c2" "check" +permutation "r1" "w3" "p1" "w2" "r2" "p2" "p3" "c3" "c1" "c2" "check" +permutation "r1" "w3" "p1" "w2" "r2" "p2" "p3" "c3" "c2" "c1" "check" +permutation "r1" "w3" "p1" "w2" "r2" "p3" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "p1" "w2" "r2" "p3" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "p1" "w2" "r2" "p3" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p1" "w2" "r2" "p3" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p1" "w2" "r2" "p3" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p1" "w2" "p3" "r2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "p1" "w2" "p3" "r2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "p1" "w2" "p3" "r2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p1" "w2" "p3" "r2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p1" "w2" "p3" "r2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p1" "w2" "p3" "c3" "r2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p1" "w2" "p3" "c3" "r2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p1" "w2" "p3" "c3" "r2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p1" "w2" "p3" "c3" "c1" "r2" "p2" "c2" "check" +permutation "r1" "w3" "p1" "p3" "r2" "w2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "p1" "p3" "r2" "w2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "p1" "p3" "r2" "w2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p1" "p3" "r2" "w2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p1" "p3" "r2" "w2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p1" "p3" "r2" "c3" "w2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p1" "p3" "r2" "c3" "w2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p1" "p3" "r2" "c3" "w2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p1" "p3" "r2" "c3" "c1" "w2" "p2" "c2" "check" +permutation "r1" "w3" "p1" "p3" "w2" "r2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "p1" "p3" "w2" "r2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "p1" "p3" "w2" "r2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p1" "p3" "w2" "r2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p1" "p3" "w2" "r2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p1" "p3" "w2" "c3" "r2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p1" "p3" "w2" "c3" "r2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p1" "p3" "w2" "c3" "r2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p1" "p3" "w2" "c3" "c1" "r2" "p2" "c2" "check" +permutation "r1" "w3" "p1" "p3" "c3" "r2" "w2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p1" "p3" "c3" "r2" "w2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p1" "p3" "c3" "r2" "w2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p1" "p3" "c3" "r2" "c1" "w2" "p2" "c2" "check" +permutation "r1" "w3" "p1" "p3" "c3" "w2" "r2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p1" "p3" "c3" "w2" "r2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p1" "p3" "c3" "w2" "r2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p1" "p3" "c3" "w2" "c1" "r2" "p2" "c2" "check" +permutation "r1" "w3" "p1" "p3" "c3" "c1" "r2" "w2" "p2" "c2" "check" +permutation "r1" "w3" "p1" "p3" "c3" "c1" "w2" "r2" "p2" "c2" "check" +permutation "r1" "w3" "p3" "r2" "w2" "p1" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "p3" "r2" "w2" "p1" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "p3" "r2" "w2" "p1" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "r2" "w2" "p1" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "r2" "w2" "p1" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "r2" "w2" "p2" "p1" "c3" "c1" "c2" "check" +permutation "r1" "w3" "p3" "r2" "w2" "p2" "p1" "c3" "c2" "c1" "check" +permutation "r1" "w3" "p3" "r2" "w2" "p2" "c3" "p1" "c1" "c2" "check" +permutation "r1" "w3" "p3" "r2" "w2" "p2" "c3" "p1" "c2" "c1" "check" +permutation "r1" "w3" "p3" "r2" "w2" "p2" "c3" "c2" "p1" "c1" "check" +permutation "r1" "w3" "p3" "r2" "w2" "c3" "p1" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "r2" "w2" "c3" "p1" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "r2" "w2" "c3" "p1" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "r2" "w2" "c3" "p2" "p1" "c1" "c2" "check" +permutation "r1" "w3" "p3" "r2" "w2" "c3" "p2" "p1" "c2" "c1" "check" +permutation "r1" "w3" "p3" "r2" "w2" "c3" "p2" "c2" "p1" "c1" "check" +permutation "r1" "w3" "p3" "r2" "p1" "w2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "p3" "r2" "p1" "w2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "p3" "r2" "p1" "w2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "r2" "p1" "w2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "r2" "p1" "w2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "r2" "p1" "c3" "w2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "r2" "p1" "c3" "w2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "r2" "p1" "c3" "w2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "r2" "p1" "c3" "c1" "w2" "p2" "c2" "check" +permutation "r1" "w3" "p3" "r2" "c3" "w2" "p1" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "r2" "c3" "w2" "p1" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "r2" "c3" "w2" "p1" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "r2" "c3" "w2" "p2" "p1" "c1" "c2" "check" +permutation "r1" "w3" "p3" "r2" "c3" "w2" "p2" "p1" "c2" "c1" "check" +permutation "r1" "w3" "p3" "r2" "c3" "w2" "p2" "c2" "p1" "c1" "check" +permutation "r1" "w3" "p3" "r2" "c3" "p1" "w2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "r2" "c3" "p1" "w2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "r2" "c3" "p1" "w2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "r2" "c3" "p1" "c1" "w2" "p2" "c2" "check" +permutation "r1" "w3" "p3" "w2" "r2" "p1" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "p3" "w2" "r2" "p1" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "p3" "w2" "r2" "p1" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "w2" "r2" "p1" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "w2" "r2" "p1" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "w2" "r2" "p2" "p1" "c3" "c1" "c2" "check" +permutation "r1" "w3" "p3" "w2" "r2" "p2" "p1" "c3" "c2" "c1" "check" +permutation "r1" "w3" "p3" "w2" "r2" "p2" "c3" "p1" "c1" "c2" "check" +permutation "r1" "w3" "p3" "w2" "r2" "p2" "c3" "p1" "c2" "c1" "check" +permutation "r1" "w3" "p3" "w2" "r2" "p2" "c3" "c2" "p1" "c1" "check" +permutation "r1" "w3" "p3" "w2" "r2" "c3" "p1" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "w2" "r2" "c3" "p1" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "w2" "r2" "c3" "p1" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "w2" "r2" "c3" "p2" "p1" "c1" "c2" "check" +permutation "r1" "w3" "p3" "w2" "r2" "c3" "p2" "p1" "c2" "c1" "check" +permutation "r1" "w3" "p3" "w2" "r2" "c3" "p2" "c2" "p1" "c1" "check" +permutation "r1" "w3" "p3" "w2" "p1" "r2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "p3" "w2" "p1" "r2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "p3" "w2" "p1" "r2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "w2" "p1" "r2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "w2" "p1" "r2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "w2" "p1" "c3" "r2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "w2" "p1" "c3" "r2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "w2" "p1" "c3" "r2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "w2" "p1" "c3" "c1" "r2" "p2" "c2" "check" +permutation "r1" "w3" "p3" "w2" "c3" "r2" "p1" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "w2" "c3" "r2" "p1" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "w2" "c3" "r2" "p1" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "w2" "c3" "r2" "p2" "p1" "c1" "c2" "check" +permutation "r1" "w3" "p3" "w2" "c3" "r2" "p2" "p1" "c2" "c1" "check" +permutation "r1" "w3" "p3" "w2" "c3" "r2" "p2" "c2" "p1" "c1" "check" +permutation "r1" "w3" "p3" "w2" "c3" "p1" "r2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "w2" "c3" "p1" "r2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "w2" "c3" "p1" "r2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "w2" "c3" "p1" "c1" "r2" "p2" "c2" "check" +permutation "r1" "w3" "p3" "p1" "r2" "w2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "p3" "p1" "r2" "w2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "p3" "p1" "r2" "w2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "p1" "r2" "w2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "p1" "r2" "w2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "p1" "r2" "c3" "w2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "p1" "r2" "c3" "w2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "p1" "r2" "c3" "w2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "p1" "r2" "c3" "c1" "w2" "p2" "c2" "check" +permutation "r1" "w3" "p3" "p1" "w2" "r2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "w3" "p3" "p1" "w2" "r2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "w3" "p3" "p1" "w2" "r2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "p1" "w2" "r2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "p1" "w2" "r2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "p1" "w2" "c3" "r2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "p1" "w2" "c3" "r2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "p1" "w2" "c3" "r2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "p1" "w2" "c3" "c1" "r2" "p2" "c2" "check" +permutation "r1" "w3" "p3" "p1" "c3" "r2" "w2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "p1" "c3" "r2" "w2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "p1" "c3" "r2" "w2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "p1" "c3" "r2" "c1" "w2" "p2" "c2" "check" +permutation "r1" "w3" "p3" "p1" "c3" "w2" "r2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "p1" "c3" "w2" "r2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "p1" "c3" "w2" "r2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "p1" "c3" "w2" "c1" "r2" "p2" "c2" "check" +permutation "r1" "w3" "p3" "p1" "c3" "c1" "r2" "w2" "p2" "c2" "check" +permutation "r1" "w3" "p3" "p1" "c3" "c1" "w2" "r2" "p2" "c2" "check" +permutation "r1" "w3" "p3" "c3" "r2" "w2" "p1" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "c3" "r2" "w2" "p1" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "c3" "r2" "w2" "p1" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "c3" "r2" "w2" "p2" "p1" "c1" "c2" "check" +permutation "r1" "w3" "p3" "c3" "r2" "w2" "p2" "p1" "c2" "c1" "check" +permutation "r1" "w3" "p3" "c3" "r2" "w2" "p2" "c2" "p1" "c1" "check" +permutation "r1" "w3" "p3" "c3" "r2" "p1" "w2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "c3" "r2" "p1" "w2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "c3" "r2" "p1" "w2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "c3" "r2" "p1" "c1" "w2" "p2" "c2" "check" +permutation "r1" "w3" "p3" "c3" "w2" "r2" "p1" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "c3" "w2" "r2" "p1" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "c3" "w2" "r2" "p1" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "c3" "w2" "r2" "p2" "p1" "c1" "c2" "check" +permutation "r1" "w3" "p3" "c3" "w2" "r2" "p2" "p1" "c2" "c1" "check" +permutation "r1" "w3" "p3" "c3" "w2" "r2" "p2" "c2" "p1" "c1" "check" +permutation "r1" "w3" "p3" "c3" "w2" "p1" "r2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "c3" "w2" "p1" "r2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "c3" "w2" "p1" "r2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "c3" "w2" "p1" "c1" "r2" "p2" "c2" "check" +permutation "r1" "w3" "p3" "c3" "p1" "r2" "w2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "c3" "p1" "r2" "w2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "c3" "p1" "r2" "w2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "c3" "p1" "r2" "c1" "w2" "p2" "c2" "check" +permutation "r1" "w3" "p3" "c3" "p1" "w2" "r2" "p2" "c1" "c2" "check" +permutation "r1" "w3" "p3" "c3" "p1" "w2" "r2" "p2" "c2" "c1" "check" +permutation "r1" "w3" "p3" "c3" "p1" "w2" "r2" "c1" "p2" "c2" "check" +permutation "r1" "w3" "p3" "c3" "p1" "w2" "c1" "r2" "p2" "c2" "check" +permutation "r1" "w3" "p3" "c3" "p1" "c1" "r2" "w2" "p2" "c2" "check" +permutation "r1" "w3" "p3" "c3" "p1" "c1" "w2" "r2" "p2" "c2" "check" +permutation "r1" "p1" "r2" "w2" "w3" "p2" "p3" "c3" "c1" "c2" "check" +permutation "r1" "p1" "r2" "w2" "w3" "p2" "p3" "c3" "c2" "c1" "check" +permutation "r1" "p1" "r2" "w2" "w3" "p3" "p2" "c3" "c1" "c2" "check" +permutation "r1" "p1" "r2" "w2" "w3" "p3" "p2" "c3" "c2" "c1" "check" +permutation "r1" "p1" "r2" "w2" "w3" "p3" "c3" "p2" "c1" "c2" "check" +permutation "r1" "p1" "r2" "w2" "w3" "p3" "c3" "p2" "c2" "c1" "check" +permutation "r1" "p1" "r2" "w2" "w3" "p3" "c3" "c1" "p2" "c2" "check" +permutation "r1" "p1" "r2" "w2" "p2" "w3" "p3" "c3" "c1" "c2" "check" +permutation "r1" "p1" "r2" "w2" "p2" "w3" "p3" "c3" "c2" "c1" "check" +permutation "r1" "p1" "w2" "w3" "r2" "p2" "p3" "c3" "c1" "c2" "check" +permutation "r1" "p1" "w2" "w3" "r2" "p2" "p3" "c3" "c2" "c1" "check" +permutation "r1" "p1" "w2" "w3" "r2" "p3" "p2" "c3" "c1" "c2" "check" +permutation "r1" "p1" "w2" "w3" "r2" "p3" "p2" "c3" "c2" "c1" "check" +permutation "r1" "p1" "w2" "w3" "r2" "p3" "c3" "p2" "c1" "c2" "check" +permutation "r1" "p1" "w2" "w3" "r2" "p3" "c3" "p2" "c2" "c1" "check" +permutation "r1" "p1" "w2" "w3" "r2" "p3" "c3" "c1" "p2" "c2" "check" +permutation "r1" "p1" "w2" "w3" "p3" "r2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "p1" "w2" "w3" "p3" "r2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "p1" "w2" "w3" "p3" "r2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "p1" "w2" "w3" "p3" "r2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "p1" "w2" "w3" "p3" "r2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "p1" "w2" "w3" "p3" "c3" "r2" "p2" "c1" "c2" "check" +permutation "r1" "p1" "w2" "w3" "p3" "c3" "r2" "p2" "c2" "c1" "check" +permutation "r1" "p1" "w2" "w3" "p3" "c3" "r2" "c1" "p2" "c2" "check" +permutation "r1" "p1" "w2" "w3" "p3" "c3" "c1" "r2" "p2" "c2" "check" +permutation "r1" "p1" "w3" "r2" "w2" "p2" "p3" "c3" "c1" "c2" "check" +permutation "r1" "p1" "w3" "r2" "w2" "p2" "p3" "c3" "c2" "c1" "check" +permutation "r1" "p1" "w3" "r2" "w2" "p3" "p2" "c3" "c1" "c2" "check" +permutation "r1" "p1" "w3" "r2" "w2" "p3" "p2" "c3" "c2" "c1" "check" +permutation "r1" "p1" "w3" "r2" "w2" "p3" "c3" "p2" "c1" "c2" "check" +permutation "r1" "p1" "w3" "r2" "w2" "p3" "c3" "p2" "c2" "c1" "check" +permutation "r1" "p1" "w3" "r2" "w2" "p3" "c3" "c1" "p2" "c2" "check" +permutation "r1" "p1" "w3" "r2" "p3" "w2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "p1" "w3" "r2" "p3" "w2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "p1" "w3" "r2" "p3" "w2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "p1" "w3" "r2" "p3" "w2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "p1" "w3" "r2" "p3" "w2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "p1" "w3" "r2" "p3" "c3" "w2" "p2" "c1" "c2" "check" +permutation "r1" "p1" "w3" "r2" "p3" "c3" "w2" "p2" "c2" "c1" "check" +permutation "r1" "p1" "w3" "r2" "p3" "c3" "w2" "c1" "p2" "c2" "check" +permutation "r1" "p1" "w3" "r2" "p3" "c3" "c1" "w2" "p2" "c2" "check" +permutation "r1" "p1" "w3" "w2" "r2" "p2" "p3" "c3" "c1" "c2" "check" +permutation "r1" "p1" "w3" "w2" "r2" "p2" "p3" "c3" "c2" "c1" "check" +permutation "r1" "p1" "w3" "w2" "r2" "p3" "p2" "c3" "c1" "c2" "check" +permutation "r1" "p1" "w3" "w2" "r2" "p3" "p2" "c3" "c2" "c1" "check" +permutation "r1" "p1" "w3" "w2" "r2" "p3" "c3" "p2" "c1" "c2" "check" +permutation "r1" "p1" "w3" "w2" "r2" "p3" "c3" "p2" "c2" "c1" "check" +permutation "r1" "p1" "w3" "w2" "r2" "p3" "c3" "c1" "p2" "c2" "check" +permutation "r1" "p1" "w3" "w2" "p3" "r2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "p1" "w3" "w2" "p3" "r2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "p1" "w3" "w2" "p3" "r2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "p1" "w3" "w2" "p3" "r2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "p1" "w3" "w2" "p3" "r2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "p1" "w3" "w2" "p3" "c3" "r2" "p2" "c1" "c2" "check" +permutation "r1" "p1" "w3" "w2" "p3" "c3" "r2" "p2" "c2" "c1" "check" +permutation "r1" "p1" "w3" "w2" "p3" "c3" "r2" "c1" "p2" "c2" "check" +permutation "r1" "p1" "w3" "w2" "p3" "c3" "c1" "r2" "p2" "c2" "check" +permutation "r1" "p1" "w3" "p3" "r2" "w2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "p1" "w3" "p3" "r2" "w2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "p1" "w3" "p3" "r2" "w2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "p1" "w3" "p3" "r2" "w2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "p1" "w3" "p3" "r2" "w2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "p1" "w3" "p3" "r2" "c3" "w2" "p2" "c1" "c2" "check" +permutation "r1" "p1" "w3" "p3" "r2" "c3" "w2" "p2" "c2" "c1" "check" +permutation "r1" "p1" "w3" "p3" "r2" "c3" "w2" "c1" "p2" "c2" "check" +permutation "r1" "p1" "w3" "p3" "r2" "c3" "c1" "w2" "p2" "c2" "check" +permutation "r1" "p1" "w3" "p3" "w2" "r2" "p2" "c3" "c1" "c2" "check" +permutation "r1" "p1" "w3" "p3" "w2" "r2" "p2" "c3" "c2" "c1" "check" +permutation "r1" "p1" "w3" "p3" "w2" "r2" "c3" "p2" "c1" "c2" "check" +permutation "r1" "p1" "w3" "p3" "w2" "r2" "c3" "p2" "c2" "c1" "check" +permutation "r1" "p1" "w3" "p3" "w2" "r2" "c3" "c1" "p2" "c2" "check" +permutation "r1" "p1" "w3" "p3" "w2" "c3" "r2" "p2" "c1" "c2" "check" +permutation "r1" "p1" "w3" "p3" "w2" "c3" "r2" "p2" "c2" "c1" "check" +permutation "r1" "p1" "w3" "p3" "w2" "c3" "r2" "c1" "p2" "c2" "check" +permutation "r1" "p1" "w3" "p3" "w2" "c3" "c1" "r2" "p2" "c2" "check" +permutation "r1" "p1" "w3" "p3" "c3" "r2" "w2" "p2" "c1" "c2" "check" +permutation "r1" "p1" "w3" "p3" "c3" "r2" "w2" "p2" "c2" "c1" "check" +permutation "r1" "p1" "w3" "p3" "c3" "r2" "w2" "c1" "p2" "c2" "check" +permutation "r1" "p1" "w3" "p3" "c3" "r2" "c1" "w2" "p2" "c2" "check" +permutation "r1" "p1" "w3" "p3" "c3" "w2" "r2" "p2" "c1" "c2" "check" +permutation "r1" "p1" "w3" "p3" "c3" "w2" "r2" "p2" "c2" "c1" "check" +permutation "r1" "p1" "w3" "p3" "c3" "w2" "r2" "c1" "p2" "c2" "check" +permutation "r1" "p1" "w3" "p3" "c3" "w2" "c1" "r2" "p2" "c2" "check" +permutation "r1" "p1" "w3" "p3" "c3" "c1" "r2" "w2" "p2" "c2" "check" +permutation "r1" "p1" "w3" "p3" "c3" "c1" "w2" "r2" "p2" "c2" "check" +permutation "w2" "r1" "r2" "w3" "p1" "p2" "p3" "c3" "c1" "c2" "check" +permutation "w2" "r1" "r2" "w3" "p1" "p2" "p3" "c3" "c2" "c1" "check" +permutation "w2" "r1" "r2" "w3" "p1" "p3" "p2" "c3" "c1" "c2" "check" +permutation "w2" "r1" "r2" "w3" "p1" "p3" "p2" "c3" "c2" "c1" "check" +permutation "w2" "r1" "r2" "w3" "p1" "p3" "c3" "p2" "c1" "c2" "check" +permutation "w2" "r1" "r2" "w3" "p1" "p3" "c3" "p2" "c2" "c1" "check" +permutation "w2" "r1" "r2" "w3" "p1" "p3" "c3" "c1" "p2" "c2" "check" +permutation "w2" "r1" "r2" "w3" "p2" "p1" "p3" "c3" "c1" "c2" "check" +permutation "w2" "r1" "r2" "w3" "p2" "p1" "p3" "c3" "c2" "c1" "check" +permutation "w2" "r1" "r2" "w3" "p2" "p3" "p1" "c3" "c1" "c2" "check" +permutation "w2" "r1" "r2" "w3" "p2" "p3" "p1" "c3" "c2" "c1" "check" +permutation "w2" "r1" "r2" "w3" "p2" "p3" "c3" "p1" "c1" "c2" "check" +permutation "w2" "r1" "r2" "w3" "p2" "p3" "c3" "p1" "c2" "c1" "check" +permutation "w2" "r1" "r2" "w3" "p2" "p3" "c3" "c2" "p1" "c1" "check" +permutation "w2" "r1" "r2" "w3" "p3" "p1" "p2" "c3" "c1" "c2" "check" +permutation "w2" "r1" "r2" "w3" "p3" "p1" "p2" "c3" "c2" "c1" "check" +permutation "w2" "r1" "r2" "w3" "p3" "p1" "c3" "p2" "c1" "c2" "check" +permutation "w2" "r1" "r2" "w3" "p3" "p1" "c3" "p2" "c2" "c1" "check" +permutation "w2" "r1" "r2" "w3" "p3" "p1" "c3" "c1" "p2" "c2" "check" +permutation "w2" "r1" "r2" "w3" "p3" "p2" "p1" "c3" "c1" "c2" "check" +permutation "w2" "r1" "r2" "w3" "p3" "p2" "p1" "c3" "c2" "c1" "check" +permutation "w2" "r1" "r2" "w3" "p3" "p2" "c3" "p1" "c1" "c2" "check" +permutation "w2" "r1" "r2" "w3" "p3" "p2" "c3" "p1" "c2" "c1" "check" +permutation "w2" "r1" "r2" "w3" "p3" "p2" "c3" "c2" "p1" "c1" "check" +permutation "w2" "r1" "r2" "w3" "p3" "c3" "p1" "p2" "c1" "c2" "check" +permutation "w2" "r1" "r2" "w3" "p3" "c3" "p1" "p2" "c2" "c1" "check" +permutation "w2" "r1" "r2" "w3" "p3" "c3" "p1" "c1" "p2" "c2" "check" +permutation "w2" "r1" "r2" "w3" "p3" "c3" "p2" "p1" "c1" "c2" "check" +permutation "w2" "r1" "r2" "w3" "p3" "c3" "p2" "p1" "c2" "c1" "check" +permutation "w2" "r1" "r2" "w3" "p3" "c3" "p2" "c2" "p1" "c1" "check" +permutation "w2" "r1" "r2" "p1" "w3" "p2" "p3" "c3" "c1" "c2" "check" +permutation "w2" "r1" "r2" "p1" "w3" "p2" "p3" "c3" "c2" "c1" "check" +permutation "w2" "r1" "r2" "p1" "w3" "p3" "p2" "c3" "c1" "c2" "check" +permutation "w2" "r1" "r2" "p1" "w3" "p3" "p2" "c3" "c2" "c1" "check" +permutation "w2" "r1" "r2" "p1" "w3" "p3" "c3" "p2" "c1" "c2" "check" +permutation "w2" "r1" "r2" "p1" "w3" "p3" "c3" "p2" "c2" "c1" "check" +permutation "w2" "r1" "r2" "p1" "w3" "p3" "c3" "c1" "p2" "c2" "check" +permutation "w2" "r1" "r2" "p1" "p2" "w3" "p3" "c3" "c1" "c2" "check" +permutation "w2" "r1" "r2" "p1" "p2" "w3" "p3" "c3" "c2" "c1" "check" +permutation "w2" "r1" "r2" "p2" "w3" "p1" "p3" "c3" "c1" "c2" "check" +permutation "w2" "r1" "r2" "p2" "w3" "p1" "p3" "c3" "c2" "c1" "check" +permutation "w2" "r1" "r2" "p2" "w3" "p3" "p1" "c3" "c1" "c2" "check" +permutation "w2" "r1" "r2" "p2" "w3" "p3" "p1" "c3" "c2" "c1" "check" +permutation "w2" "r1" "r2" "p2" "w3" "p3" "c3" "p1" "c1" "c2" "check" +permutation "w2" "r1" "r2" "p2" "w3" "p3" "c3" "p1" "c2" "c1" "check" +permutation "w2" "r1" "r2" "p2" "w3" "p3" "c3" "c2" "p1" "c1" "check" +permutation "w2" "r1" "r2" "p2" "p1" "w3" "p3" "c3" "c1" "c2" "check" +permutation "w2" "r1" "r2" "p2" "p1" "w3" "p3" "c3" "c2" "c1" "check" +permutation "w2" "r1" "w3" "r2" "p1" "p2" "p3" "c3" "c1" "c2" "check" +permutation "w2" "r1" "w3" "r2" "p1" "p2" "p3" "c3" "c2" "c1" "check" +permutation "w2" "r1" "w3" "r2" "p1" "p3" "p2" "c3" "c1" "c2" "check" +permutation "w2" "r1" "w3" "r2" "p1" "p3" "p2" "c3" "c2" "c1" "check" +permutation "w2" "r1" "w3" "r2" "p1" "p3" "c3" "p2" "c1" "c2" "check" +permutation "w2" "r1" "w3" "r2" "p1" "p3" "c3" "p2" "c2" "c1" "check" +permutation "w2" "r1" "w3" "r2" "p1" "p3" "c3" "c1" "p2" "c2" "check" +permutation "w2" "r1" "w3" "r2" "p2" "p1" "p3" "c3" "c1" "c2" "check" +permutation "w2" "r1" "w3" "r2" "p2" "p1" "p3" "c3" "c2" "c1" "check" +permutation "w2" "r1" "w3" "r2" "p2" "p3" "p1" "c3" "c1" "c2" "check" +permutation "w2" "r1" "w3" "r2" "p2" "p3" "p1" "c3" "c2" "c1" "check" +permutation "w2" "r1" "w3" "r2" "p2" "p3" "c3" "p1" "c1" "c2" "check" +permutation "w2" "r1" "w3" "r2" "p2" "p3" "c3" "p1" "c2" "c1" "check" +permutation "w2" "r1" "w3" "r2" "p2" "p3" "c3" "c2" "p1" "c1" "check" +permutation "w2" "r1" "w3" "r2" "p3" "p1" "p2" "c3" "c1" "c2" "check" +permutation "w2" "r1" "w3" "r2" "p3" "p1" "p2" "c3" "c2" "c1" "check" +permutation "w2" "r1" "w3" "r2" "p3" "p1" "c3" "p2" "c1" "c2" "check" +permutation "w2" "r1" "w3" "r2" "p3" "p1" "c3" "p2" "c2" "c1" "check" +permutation "w2" "r1" "w3" "r2" "p3" "p1" "c3" "c1" "p2" "c2" "check" +permutation "w2" "r1" "w3" "r2" "p3" "p2" "p1" "c3" "c1" "c2" "check" +permutation "w2" "r1" "w3" "r2" "p3" "p2" "p1" "c3" "c2" "c1" "check" +permutation "w2" "r1" "w3" "r2" "p3" "p2" "c3" "p1" "c1" "c2" "check" +permutation "w2" "r1" "w3" "r2" "p3" "p2" "c3" "p1" "c2" "c1" "check" +permutation "w2" "r1" "w3" "r2" "p3" "p2" "c3" "c2" "p1" "c1" "check" +permutation "w2" "r1" "w3" "r2" "p3" "c3" "p1" "p2" "c1" "c2" "check" +permutation "w2" "r1" "w3" "r2" "p3" "c3" "p1" "p2" "c2" "c1" "check" +permutation "w2" "r1" "w3" "r2" "p3" "c3" "p1" "c1" "p2" "c2" "check" +permutation "w2" "r1" "w3" "r2" "p3" "c3" "p2" "p1" "c1" "c2" "check" +permutation "w2" "r1" "w3" "r2" "p3" "c3" "p2" "p1" "c2" "c1" "check" +permutation "w2" "r1" "w3" "r2" "p3" "c3" "p2" "c2" "p1" "c1" "check" +permutation "w2" "r1" "w3" "p1" "r2" "p2" "p3" "c3" "c1" "c2" "check" +permutation "w2" "r1" "w3" "p1" "r2" "p2" "p3" "c3" "c2" "c1" "check" +permutation "w2" "r1" "w3" "p1" "r2" "p3" "p2" "c3" "c1" "c2" "check" +permutation "w2" "r1" "w3" "p1" "r2" "p3" "p2" "c3" "c2" "c1" "check" +permutation "w2" "r1" "w3" "p1" "r2" "p3" "c3" "p2" "c1" "c2" "check" +permutation "w2" "r1" "w3" "p1" "r2" "p3" "c3" "p2" "c2" "c1" "check" +permutation "w2" "r1" "w3" "p1" "r2" "p3" "c3" "c1" "p2" "c2" "check" +permutation "w2" "r1" "w3" "p1" "p3" "r2" "p2" "c3" "c1" "c2" "check" +permutation "w2" "r1" "w3" "p1" "p3" "r2" "p2" "c3" "c2" "c1" "check" +permutation "w2" "r1" "w3" "p1" "p3" "r2" "c3" "p2" "c1" "c2" "check" +permutation "w2" "r1" "w3" "p1" "p3" "r2" "c3" "p2" "c2" "c1" "check" +permutation "w2" "r1" "w3" "p1" "p3" "r2" "c3" "c1" "p2" "c2" "check" +permutation "w2" "r1" "w3" "p1" "p3" "c3" "r2" "p2" "c1" "c2" "check" +permutation "w2" "r1" "w3" "p1" "p3" "c3" "r2" "p2" "c2" "c1" "check" +permutation "w2" "r1" "w3" "p1" "p3" "c3" "r2" "c1" "p2" "c2" "check" +permutation "w2" "r1" "w3" "p1" "p3" "c3" "c1" "r2" "p2" "c2" "check" +permutation "w2" "r1" "w3" "p3" "r2" "p1" "p2" "c3" "c1" "c2" "check" +permutation "w2" "r1" "w3" "p3" "r2" "p1" "p2" "c3" "c2" "c1" "check" +permutation "w2" "r1" "w3" "p3" "r2" "p1" "c3" "p2" "c1" "c2" "check" +permutation "w2" "r1" "w3" "p3" "r2" "p1" "c3" "p2" "c2" "c1" "check" +permutation "w2" "r1" "w3" "p3" "r2" "p1" "c3" "c1" "p2" "c2" "check" +permutation "w2" "r1" "w3" "p3" "r2" "p2" "p1" "c3" "c1" "c2" "check" +permutation "w2" "r1" "w3" "p3" "r2" "p2" "p1" "c3" "c2" "c1" "check" +permutation "w2" "r1" "w3" "p3" "r2" "p2" "c3" "p1" "c1" "c2" "check" +permutation "w2" "r1" "w3" "p3" "r2" "p2" "c3" "p1" "c2" "c1" "check" +permutation "w2" "r1" "w3" "p3" "r2" "p2" "c3" "c2" "p1" "c1" "check" +permutation "w2" "r1" "w3" "p3" "r2" "c3" "p1" "p2" "c1" "c2" "check" +permutation "w2" "r1" "w3" "p3" "r2" "c3" "p1" "p2" "c2" "c1" "check" +permutation "w2" "r1" "w3" "p3" "r2" "c3" "p1" "c1" "p2" "c2" "check" +permutation "w2" "r1" "w3" "p3" "r2" "c3" "p2" "p1" "c1" "c2" "check" +permutation "w2" "r1" "w3" "p3" "r2" "c3" "p2" "p1" "c2" "c1" "check" +permutation "w2" "r1" "w3" "p3" "r2" "c3" "p2" "c2" "p1" "c1" "check" +permutation "w2" "r1" "w3" "p3" "p1" "r2" "p2" "c3" "c1" "c2" "check" +permutation "w2" "r1" "w3" "p3" "p1" "r2" "p2" "c3" "c2" "c1" "check" +permutation "w2" "r1" "w3" "p3" "p1" "r2" "c3" "p2" "c1" "c2" "check" +permutation "w2" "r1" "w3" "p3" "p1" "r2" "c3" "p2" "c2" "c1" "check" +permutation "w2" "r1" "w3" "p3" "p1" "r2" "c3" "c1" "p2" "c2" "check" +permutation "w2" "r1" "w3" "p3" "p1" "c3" "r2" "p2" "c1" "c2" "check" +permutation "w2" "r1" "w3" "p3" "p1" "c3" "r2" "p2" "c2" "c1" "check" +permutation "w2" "r1" "w3" "p3" "p1" "c3" "r2" "c1" "p2" "c2" "check" +permutation "w2" "r1" "w3" "p3" "p1" "c3" "c1" "r2" "p2" "c2" "check" +permutation "w2" "r1" "w3" "p3" "c3" "r2" "p1" "p2" "c1" "c2" "check" +permutation "w2" "r1" "w3" "p3" "c3" "r2" "p1" "p2" "c2" "c1" "check" +permutation "w2" "r1" "w3" "p3" "c3" "r2" "p1" "c1" "p2" "c2" "check" +permutation "w2" "r1" "w3" "p3" "c3" "r2" "p2" "p1" "c1" "c2" "check" +permutation "w2" "r1" "w3" "p3" "c3" "r2" "p2" "p1" "c2" "c1" "check" +permutation "w2" "r1" "w3" "p3" "c3" "r2" "p2" "c2" "p1" "c1" "check" +permutation "w2" "r1" "w3" "p3" "c3" "p1" "r2" "p2" "c1" "c2" "check" +permutation "w2" "r1" "w3" "p3" "c3" "p1" "r2" "p2" "c2" "c1" "check" +permutation "w2" "r1" "w3" "p3" "c3" "p1" "r2" "c1" "p2" "c2" "check" +permutation "w2" "r1" "w3" "p3" "c3" "p1" "c1" "r2" "p2" "c2" "check" +permutation "w2" "r1" "p1" "r2" "w3" "p2" "p3" "c3" "c1" "c2" "check" +permutation "w2" "r1" "p1" "r2" "w3" "p2" "p3" "c3" "c2" "c1" "check" +permutation "w2" "r1" "p1" "r2" "w3" "p3" "p2" "c3" "c1" "c2" "check" +permutation "w2" "r1" "p1" "r2" "w3" "p3" "p2" "c3" "c2" "c1" "check" +permutation "w2" "r1" "p1" "r2" "w3" "p3" "c3" "p2" "c1" "c2" "check" +permutation "w2" "r1" "p1" "r2" "w3" "p3" "c3" "p2" "c2" "c1" "check" +permutation "w2" "r1" "p1" "r2" "w3" "p3" "c3" "c1" "p2" "c2" "check" +permutation "w2" "r1" "p1" "r2" "p2" "w3" "p3" "c3" "c1" "c2" "check" +permutation "w2" "r1" "p1" "r2" "p2" "w3" "p3" "c3" "c2" "c1" "check" +permutation "w2" "r1" "p1" "w3" "r2" "p2" "p3" "c3" "c1" "c2" "check" +permutation "w2" "r1" "p1" "w3" "r2" "p2" "p3" "c3" "c2" "c1" "check" +permutation "w2" "r1" "p1" "w3" "r2" "p3" "p2" "c3" "c1" "c2" "check" +permutation "w2" "r1" "p1" "w3" "r2" "p3" "p2" "c3" "c2" "c1" "check" +permutation "w2" "r1" "p1" "w3" "r2" "p3" "c3" "p2" "c1" "c2" "check" +permutation "w2" "r1" "p1" "w3" "r2" "p3" "c3" "p2" "c2" "c1" "check" +permutation "w2" "r1" "p1" "w3" "r2" "p3" "c3" "c1" "p2" "c2" "check" +permutation "w2" "r1" "p1" "w3" "p3" "r2" "p2" "c3" "c1" "c2" "check" +permutation "w2" "r1" "p1" "w3" "p3" "r2" "p2" "c3" "c2" "c1" "check" +permutation "w2" "r1" "p1" "w3" "p3" "r2" "c3" "p2" "c1" "c2" "check" +permutation "w2" "r1" "p1" "w3" "p3" "r2" "c3" "p2" "c2" "c1" "check" +permutation "w2" "r1" "p1" "w3" "p3" "r2" "c3" "c1" "p2" "c2" "check" +permutation "w2" "r1" "p1" "w3" "p3" "c3" "r2" "p2" "c1" "c2" "check" +permutation "w2" "r1" "p1" "w3" "p3" "c3" "r2" "p2" "c2" "c1" "check" +permutation "w2" "r1" "p1" "w3" "p3" "c3" "r2" "c1" "p2" "c2" "check" +permutation "w2" "r1" "p1" "w3" "p3" "c3" "c1" "r2" "p2" "c2" "check" +permutation "w3" "r1" "r2" "w2" "p1" "p2" "p3" "c3" "c1" "c2" "check" +permutation "w3" "r1" "r2" "w2" "p1" "p2" "p3" "c3" "c2" "c1" "check" +permutation "w3" "r1" "r2" "w2" "p1" "p3" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "r2" "w2" "p1" "p3" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "r2" "w2" "p1" "p3" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "r2" "w2" "p1" "p3" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "r2" "w2" "p1" "p3" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "r2" "w2" "p2" "p1" "p3" "c3" "c1" "c2" "check" +permutation "w3" "r1" "r2" "w2" "p2" "p1" "p3" "c3" "c2" "c1" "check" +permutation "w3" "r1" "r2" "w2" "p2" "p3" "p1" "c3" "c1" "c2" "check" +permutation "w3" "r1" "r2" "w2" "p2" "p3" "p1" "c3" "c2" "c1" "check" +permutation "w3" "r1" "r2" "w2" "p2" "p3" "c3" "p1" "c1" "c2" "check" +permutation "w3" "r1" "r2" "w2" "p2" "p3" "c3" "p1" "c2" "c1" "check" +permutation "w3" "r1" "r2" "w2" "p2" "p3" "c3" "c2" "p1" "c1" "check" +permutation "w3" "r1" "r2" "w2" "p3" "p1" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "r2" "w2" "p3" "p1" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "r2" "w2" "p3" "p1" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "r2" "w2" "p3" "p1" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "r2" "w2" "p3" "p1" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "r2" "w2" "p3" "p2" "p1" "c3" "c1" "c2" "check" +permutation "w3" "r1" "r2" "w2" "p3" "p2" "p1" "c3" "c2" "c1" "check" +permutation "w3" "r1" "r2" "w2" "p3" "p2" "c3" "p1" "c1" "c2" "check" +permutation "w3" "r1" "r2" "w2" "p3" "p2" "c3" "p1" "c2" "c1" "check" +permutation "w3" "r1" "r2" "w2" "p3" "p2" "c3" "c2" "p1" "c1" "check" +permutation "w3" "r1" "r2" "w2" "p3" "c3" "p1" "p2" "c1" "c2" "check" +permutation "w3" "r1" "r2" "w2" "p3" "c3" "p1" "p2" "c2" "c1" "check" +permutation "w3" "r1" "r2" "w2" "p3" "c3" "p1" "c1" "p2" "c2" "check" +permutation "w3" "r1" "r2" "w2" "p3" "c3" "p2" "p1" "c1" "c2" "check" +permutation "w3" "r1" "r2" "w2" "p3" "c3" "p2" "p1" "c2" "c1" "check" +permutation "w3" "r1" "r2" "w2" "p3" "c3" "p2" "c2" "p1" "c1" "check" +permutation "w3" "r1" "r2" "p1" "w2" "p2" "p3" "c3" "c1" "c2" "check" +permutation "w3" "r1" "r2" "p1" "w2" "p2" "p3" "c3" "c2" "c1" "check" +permutation "w3" "r1" "r2" "p1" "w2" "p3" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "r2" "p1" "w2" "p3" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "r2" "p1" "w2" "p3" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "r2" "p1" "w2" "p3" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "r2" "p1" "w2" "p3" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "r2" "p1" "p3" "w2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "r2" "p1" "p3" "w2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "r2" "p1" "p3" "w2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "r2" "p1" "p3" "w2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "r2" "p1" "p3" "w2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "r2" "p1" "p3" "c3" "w2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "r2" "p1" "p3" "c3" "w2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "r2" "p1" "p3" "c3" "w2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "r2" "p1" "p3" "c3" "c1" "w2" "p2" "c2" "check" +permutation "w3" "r1" "r2" "p3" "w2" "p1" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "r2" "p3" "w2" "p1" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "r2" "p3" "w2" "p1" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "r2" "p3" "w2" "p1" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "r2" "p3" "w2" "p1" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "r2" "p3" "w2" "p2" "p1" "c3" "c1" "c2" "check" +permutation "w3" "r1" "r2" "p3" "w2" "p2" "p1" "c3" "c2" "c1" "check" +permutation "w3" "r1" "r2" "p3" "w2" "p2" "c3" "p1" "c1" "c2" "check" +permutation "w3" "r1" "r2" "p3" "w2" "p2" "c3" "p1" "c2" "c1" "check" +permutation "w3" "r1" "r2" "p3" "w2" "p2" "c3" "c2" "p1" "c1" "check" +permutation "w3" "r1" "r2" "p3" "w2" "c3" "p1" "p2" "c1" "c2" "check" +permutation "w3" "r1" "r2" "p3" "w2" "c3" "p1" "p2" "c2" "c1" "check" +permutation "w3" "r1" "r2" "p3" "w2" "c3" "p1" "c1" "p2" "c2" "check" +permutation "w3" "r1" "r2" "p3" "w2" "c3" "p2" "p1" "c1" "c2" "check" +permutation "w3" "r1" "r2" "p3" "w2" "c3" "p2" "p1" "c2" "c1" "check" +permutation "w3" "r1" "r2" "p3" "w2" "c3" "p2" "c2" "p1" "c1" "check" +permutation "w3" "r1" "r2" "p3" "p1" "w2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "r2" "p3" "p1" "w2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "r2" "p3" "p1" "w2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "r2" "p3" "p1" "w2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "r2" "p3" "p1" "w2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "r2" "p3" "p1" "c3" "w2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "r2" "p3" "p1" "c3" "w2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "r2" "p3" "p1" "c3" "w2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "r2" "p3" "p1" "c3" "c1" "w2" "p2" "c2" "check" +permutation "w3" "r1" "r2" "p3" "c3" "w2" "p1" "p2" "c1" "c2" "check" +permutation "w3" "r1" "r2" "p3" "c3" "w2" "p1" "p2" "c2" "c1" "check" +permutation "w3" "r1" "r2" "p3" "c3" "w2" "p1" "c1" "p2" "c2" "check" +permutation "w3" "r1" "r2" "p3" "c3" "w2" "p2" "p1" "c1" "c2" "check" +permutation "w3" "r1" "r2" "p3" "c3" "w2" "p2" "p1" "c2" "c1" "check" +permutation "w3" "r1" "r2" "p3" "c3" "w2" "p2" "c2" "p1" "c1" "check" +permutation "w3" "r1" "r2" "p3" "c3" "p1" "w2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "r2" "p3" "c3" "p1" "w2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "r2" "p3" "c3" "p1" "w2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "r2" "p3" "c3" "p1" "c1" "w2" "p2" "c2" "check" +permutation "w3" "r1" "w2" "r2" "p1" "p2" "p3" "c3" "c1" "c2" "check" +permutation "w3" "r1" "w2" "r2" "p1" "p2" "p3" "c3" "c2" "c1" "check" +permutation "w3" "r1" "w2" "r2" "p1" "p3" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "w2" "r2" "p1" "p3" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "w2" "r2" "p1" "p3" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "w2" "r2" "p1" "p3" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "w2" "r2" "p1" "p3" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "w2" "r2" "p2" "p1" "p3" "c3" "c1" "c2" "check" +permutation "w3" "r1" "w2" "r2" "p2" "p1" "p3" "c3" "c2" "c1" "check" +permutation "w3" "r1" "w2" "r2" "p2" "p3" "p1" "c3" "c1" "c2" "check" +permutation "w3" "r1" "w2" "r2" "p2" "p3" "p1" "c3" "c2" "c1" "check" +permutation "w3" "r1" "w2" "r2" "p2" "p3" "c3" "p1" "c1" "c2" "check" +permutation "w3" "r1" "w2" "r2" "p2" "p3" "c3" "p1" "c2" "c1" "check" +permutation "w3" "r1" "w2" "r2" "p2" "p3" "c3" "c2" "p1" "c1" "check" +permutation "w3" "r1" "w2" "r2" "p3" "p1" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "w2" "r2" "p3" "p1" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "w2" "r2" "p3" "p1" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "w2" "r2" "p3" "p1" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "w2" "r2" "p3" "p1" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "w2" "r2" "p3" "p2" "p1" "c3" "c1" "c2" "check" +permutation "w3" "r1" "w2" "r2" "p3" "p2" "p1" "c3" "c2" "c1" "check" +permutation "w3" "r1" "w2" "r2" "p3" "p2" "c3" "p1" "c1" "c2" "check" +permutation "w3" "r1" "w2" "r2" "p3" "p2" "c3" "p1" "c2" "c1" "check" +permutation "w3" "r1" "w2" "r2" "p3" "p2" "c3" "c2" "p1" "c1" "check" +permutation "w3" "r1" "w2" "r2" "p3" "c3" "p1" "p2" "c1" "c2" "check" +permutation "w3" "r1" "w2" "r2" "p3" "c3" "p1" "p2" "c2" "c1" "check" +permutation "w3" "r1" "w2" "r2" "p3" "c3" "p1" "c1" "p2" "c2" "check" +permutation "w3" "r1" "w2" "r2" "p3" "c3" "p2" "p1" "c1" "c2" "check" +permutation "w3" "r1" "w2" "r2" "p3" "c3" "p2" "p1" "c2" "c1" "check" +permutation "w3" "r1" "w2" "r2" "p3" "c3" "p2" "c2" "p1" "c1" "check" +permutation "w3" "r1" "w2" "p1" "r2" "p2" "p3" "c3" "c1" "c2" "check" +permutation "w3" "r1" "w2" "p1" "r2" "p2" "p3" "c3" "c2" "c1" "check" +permutation "w3" "r1" "w2" "p1" "r2" "p3" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "w2" "p1" "r2" "p3" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "w2" "p1" "r2" "p3" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "w2" "p1" "r2" "p3" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "w2" "p1" "r2" "p3" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "w2" "p1" "p3" "r2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "w2" "p1" "p3" "r2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "w2" "p1" "p3" "r2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "w2" "p1" "p3" "r2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "w2" "p1" "p3" "r2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "w2" "p1" "p3" "c3" "r2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "w2" "p1" "p3" "c3" "r2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "w2" "p1" "p3" "c3" "r2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "w2" "p1" "p3" "c3" "c1" "r2" "p2" "c2" "check" +permutation "w3" "r1" "w2" "p3" "r2" "p1" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "w2" "p3" "r2" "p1" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "w2" "p3" "r2" "p1" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "w2" "p3" "r2" "p1" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "w2" "p3" "r2" "p1" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "w2" "p3" "r2" "p2" "p1" "c3" "c1" "c2" "check" +permutation "w3" "r1" "w2" "p3" "r2" "p2" "p1" "c3" "c2" "c1" "check" +permutation "w3" "r1" "w2" "p3" "r2" "p2" "c3" "p1" "c1" "c2" "check" +permutation "w3" "r1" "w2" "p3" "r2" "p2" "c3" "p1" "c2" "c1" "check" +permutation "w3" "r1" "w2" "p3" "r2" "p2" "c3" "c2" "p1" "c1" "check" +permutation "w3" "r1" "w2" "p3" "r2" "c3" "p1" "p2" "c1" "c2" "check" +permutation "w3" "r1" "w2" "p3" "r2" "c3" "p1" "p2" "c2" "c1" "check" +permutation "w3" "r1" "w2" "p3" "r2" "c3" "p1" "c1" "p2" "c2" "check" +permutation "w3" "r1" "w2" "p3" "r2" "c3" "p2" "p1" "c1" "c2" "check" +permutation "w3" "r1" "w2" "p3" "r2" "c3" "p2" "p1" "c2" "c1" "check" +permutation "w3" "r1" "w2" "p3" "r2" "c3" "p2" "c2" "p1" "c1" "check" +permutation "w3" "r1" "w2" "p3" "p1" "r2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "w2" "p3" "p1" "r2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "w2" "p3" "p1" "r2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "w2" "p3" "p1" "r2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "w2" "p3" "p1" "r2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "w2" "p3" "p1" "c3" "r2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "w2" "p3" "p1" "c3" "r2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "w2" "p3" "p1" "c3" "r2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "w2" "p3" "p1" "c3" "c1" "r2" "p2" "c2" "check" +permutation "w3" "r1" "w2" "p3" "c3" "r2" "p1" "p2" "c1" "c2" "check" +permutation "w3" "r1" "w2" "p3" "c3" "r2" "p1" "p2" "c2" "c1" "check" +permutation "w3" "r1" "w2" "p3" "c3" "r2" "p1" "c1" "p2" "c2" "check" +permutation "w3" "r1" "w2" "p3" "c3" "r2" "p2" "p1" "c1" "c2" "check" +permutation "w3" "r1" "w2" "p3" "c3" "r2" "p2" "p1" "c2" "c1" "check" +permutation "w3" "r1" "w2" "p3" "c3" "r2" "p2" "c2" "p1" "c1" "check" +permutation "w3" "r1" "w2" "p3" "c3" "p1" "r2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "w2" "p3" "c3" "p1" "r2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "w2" "p3" "c3" "p1" "r2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "w2" "p3" "c3" "p1" "c1" "r2" "p2" "c2" "check" +permutation "w3" "r1" "p1" "r2" "w2" "p2" "p3" "c3" "c1" "c2" "check" +permutation "w3" "r1" "p1" "r2" "w2" "p2" "p3" "c3" "c2" "c1" "check" +permutation "w3" "r1" "p1" "r2" "w2" "p3" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "p1" "r2" "w2" "p3" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "p1" "r2" "w2" "p3" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p1" "r2" "w2" "p3" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p1" "r2" "w2" "p3" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p1" "r2" "p3" "w2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "p1" "r2" "p3" "w2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "p1" "r2" "p3" "w2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p1" "r2" "p3" "w2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p1" "r2" "p3" "w2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p1" "r2" "p3" "c3" "w2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p1" "r2" "p3" "c3" "w2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p1" "r2" "p3" "c3" "w2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p1" "r2" "p3" "c3" "c1" "w2" "p2" "c2" "check" +permutation "w3" "r1" "p1" "w2" "r2" "p2" "p3" "c3" "c1" "c2" "check" +permutation "w3" "r1" "p1" "w2" "r2" "p2" "p3" "c3" "c2" "c1" "check" +permutation "w3" "r1" "p1" "w2" "r2" "p3" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "p1" "w2" "r2" "p3" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "p1" "w2" "r2" "p3" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p1" "w2" "r2" "p3" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p1" "w2" "r2" "p3" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p1" "w2" "p3" "r2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "p1" "w2" "p3" "r2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "p1" "w2" "p3" "r2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p1" "w2" "p3" "r2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p1" "w2" "p3" "r2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p1" "w2" "p3" "c3" "r2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p1" "w2" "p3" "c3" "r2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p1" "w2" "p3" "c3" "r2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p1" "w2" "p3" "c3" "c1" "r2" "p2" "c2" "check" +permutation "w3" "r1" "p1" "p3" "r2" "w2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "p1" "p3" "r2" "w2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "p1" "p3" "r2" "w2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p1" "p3" "r2" "w2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p1" "p3" "r2" "w2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p1" "p3" "r2" "c3" "w2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p1" "p3" "r2" "c3" "w2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p1" "p3" "r2" "c3" "w2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p1" "p3" "r2" "c3" "c1" "w2" "p2" "c2" "check" +permutation "w3" "r1" "p1" "p3" "w2" "r2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "p1" "p3" "w2" "r2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "p1" "p3" "w2" "r2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p1" "p3" "w2" "r2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p1" "p3" "w2" "r2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p1" "p3" "w2" "c3" "r2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p1" "p3" "w2" "c3" "r2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p1" "p3" "w2" "c3" "r2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p1" "p3" "w2" "c3" "c1" "r2" "p2" "c2" "check" +permutation "w3" "r1" "p1" "p3" "c3" "r2" "w2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p1" "p3" "c3" "r2" "w2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p1" "p3" "c3" "r2" "w2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p1" "p3" "c3" "r2" "c1" "w2" "p2" "c2" "check" +permutation "w3" "r1" "p1" "p3" "c3" "w2" "r2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p1" "p3" "c3" "w2" "r2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p1" "p3" "c3" "w2" "r2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p1" "p3" "c3" "w2" "c1" "r2" "p2" "c2" "check" +permutation "w3" "r1" "p1" "p3" "c3" "c1" "r2" "w2" "p2" "c2" "check" +permutation "w3" "r1" "p1" "p3" "c3" "c1" "w2" "r2" "p2" "c2" "check" +permutation "w3" "r1" "p3" "r2" "w2" "p1" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "p3" "r2" "w2" "p1" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "p3" "r2" "w2" "p1" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "r2" "w2" "p1" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "r2" "w2" "p1" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "r2" "w2" "p2" "p1" "c3" "c1" "c2" "check" +permutation "w3" "r1" "p3" "r2" "w2" "p2" "p1" "c3" "c2" "c1" "check" +permutation "w3" "r1" "p3" "r2" "w2" "p2" "c3" "p1" "c1" "c2" "check" +permutation "w3" "r1" "p3" "r2" "w2" "p2" "c3" "p1" "c2" "c1" "check" +permutation "w3" "r1" "p3" "r2" "w2" "p2" "c3" "c2" "p1" "c1" "check" +permutation "w3" "r1" "p3" "r2" "w2" "c3" "p1" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "r2" "w2" "c3" "p1" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "r2" "w2" "c3" "p1" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "r2" "w2" "c3" "p2" "p1" "c1" "c2" "check" +permutation "w3" "r1" "p3" "r2" "w2" "c3" "p2" "p1" "c2" "c1" "check" +permutation "w3" "r1" "p3" "r2" "w2" "c3" "p2" "c2" "p1" "c1" "check" +permutation "w3" "r1" "p3" "r2" "p1" "w2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "p3" "r2" "p1" "w2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "p3" "r2" "p1" "w2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "r2" "p1" "w2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "r2" "p1" "w2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "r2" "p1" "c3" "w2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "r2" "p1" "c3" "w2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "r2" "p1" "c3" "w2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "r2" "p1" "c3" "c1" "w2" "p2" "c2" "check" +permutation "w3" "r1" "p3" "r2" "c3" "w2" "p1" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "r2" "c3" "w2" "p1" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "r2" "c3" "w2" "p1" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "r2" "c3" "w2" "p2" "p1" "c1" "c2" "check" +permutation "w3" "r1" "p3" "r2" "c3" "w2" "p2" "p1" "c2" "c1" "check" +permutation "w3" "r1" "p3" "r2" "c3" "w2" "p2" "c2" "p1" "c1" "check" +permutation "w3" "r1" "p3" "r2" "c3" "p1" "w2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "r2" "c3" "p1" "w2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "r2" "c3" "p1" "w2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "r2" "c3" "p1" "c1" "w2" "p2" "c2" "check" +permutation "w3" "r1" "p3" "w2" "r2" "p1" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "p3" "w2" "r2" "p1" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "p3" "w2" "r2" "p1" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "w2" "r2" "p1" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "w2" "r2" "p1" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "w2" "r2" "p2" "p1" "c3" "c1" "c2" "check" +permutation "w3" "r1" "p3" "w2" "r2" "p2" "p1" "c3" "c2" "c1" "check" +permutation "w3" "r1" "p3" "w2" "r2" "p2" "c3" "p1" "c1" "c2" "check" +permutation "w3" "r1" "p3" "w2" "r2" "p2" "c3" "p1" "c2" "c1" "check" +permutation "w3" "r1" "p3" "w2" "r2" "p2" "c3" "c2" "p1" "c1" "check" +permutation "w3" "r1" "p3" "w2" "r2" "c3" "p1" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "w2" "r2" "c3" "p1" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "w2" "r2" "c3" "p1" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "w2" "r2" "c3" "p2" "p1" "c1" "c2" "check" +permutation "w3" "r1" "p3" "w2" "r2" "c3" "p2" "p1" "c2" "c1" "check" +permutation "w3" "r1" "p3" "w2" "r2" "c3" "p2" "c2" "p1" "c1" "check" +permutation "w3" "r1" "p3" "w2" "p1" "r2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "p3" "w2" "p1" "r2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "p3" "w2" "p1" "r2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "w2" "p1" "r2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "w2" "p1" "r2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "w2" "p1" "c3" "r2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "w2" "p1" "c3" "r2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "w2" "p1" "c3" "r2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "w2" "p1" "c3" "c1" "r2" "p2" "c2" "check" +permutation "w3" "r1" "p3" "w2" "c3" "r2" "p1" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "w2" "c3" "r2" "p1" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "w2" "c3" "r2" "p1" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "w2" "c3" "r2" "p2" "p1" "c1" "c2" "check" +permutation "w3" "r1" "p3" "w2" "c3" "r2" "p2" "p1" "c2" "c1" "check" +permutation "w3" "r1" "p3" "w2" "c3" "r2" "p2" "c2" "p1" "c1" "check" +permutation "w3" "r1" "p3" "w2" "c3" "p1" "r2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "w2" "c3" "p1" "r2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "w2" "c3" "p1" "r2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "w2" "c3" "p1" "c1" "r2" "p2" "c2" "check" +permutation "w3" "r1" "p3" "p1" "r2" "w2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "p3" "p1" "r2" "w2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "p3" "p1" "r2" "w2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "p1" "r2" "w2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "p1" "r2" "w2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "p1" "r2" "c3" "w2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "p1" "r2" "c3" "w2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "p1" "r2" "c3" "w2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "p1" "r2" "c3" "c1" "w2" "p2" "c2" "check" +permutation "w3" "r1" "p3" "p1" "w2" "r2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r1" "p3" "p1" "w2" "r2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r1" "p3" "p1" "w2" "r2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "p1" "w2" "r2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "p1" "w2" "r2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "p1" "w2" "c3" "r2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "p1" "w2" "c3" "r2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "p1" "w2" "c3" "r2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "p1" "w2" "c3" "c1" "r2" "p2" "c2" "check" +permutation "w3" "r1" "p3" "p1" "c3" "r2" "w2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "p1" "c3" "r2" "w2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "p1" "c3" "r2" "w2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "p1" "c3" "r2" "c1" "w2" "p2" "c2" "check" +permutation "w3" "r1" "p3" "p1" "c3" "w2" "r2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "p1" "c3" "w2" "r2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "p1" "c3" "w2" "r2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "p1" "c3" "w2" "c1" "r2" "p2" "c2" "check" +permutation "w3" "r1" "p3" "p1" "c3" "c1" "r2" "w2" "p2" "c2" "check" +permutation "w3" "r1" "p3" "p1" "c3" "c1" "w2" "r2" "p2" "c2" "check" +permutation "w3" "r1" "p3" "c3" "r2" "w2" "p1" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "c3" "r2" "w2" "p1" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "c3" "r2" "w2" "p1" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "c3" "r2" "w2" "p2" "p1" "c1" "c2" "check" +permutation "w3" "r1" "p3" "c3" "r2" "w2" "p2" "p1" "c2" "c1" "check" +permutation "w3" "r1" "p3" "c3" "r2" "w2" "p2" "c2" "p1" "c1" "check" +permutation "w3" "r1" "p3" "c3" "r2" "p1" "w2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "c3" "r2" "p1" "w2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "c3" "r2" "p1" "w2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "c3" "r2" "p1" "c1" "w2" "p2" "c2" "check" +permutation "w3" "r1" "p3" "c3" "w2" "r2" "p1" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "c3" "w2" "r2" "p1" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "c3" "w2" "r2" "p1" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "c3" "w2" "r2" "p2" "p1" "c1" "c2" "check" +permutation "w3" "r1" "p3" "c3" "w2" "r2" "p2" "p1" "c2" "c1" "check" +permutation "w3" "r1" "p3" "c3" "w2" "r2" "p2" "c2" "p1" "c1" "check" +permutation "w3" "r1" "p3" "c3" "w2" "p1" "r2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "c3" "w2" "p1" "r2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "c3" "w2" "p1" "r2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "c3" "w2" "p1" "c1" "r2" "p2" "c2" "check" +permutation "w3" "r1" "p3" "c3" "p1" "r2" "w2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "c3" "p1" "r2" "w2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "c3" "p1" "r2" "w2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "c3" "p1" "r2" "c1" "w2" "p2" "c2" "check" +permutation "w3" "r1" "p3" "c3" "p1" "w2" "r2" "p2" "c1" "c2" "check" +permutation "w3" "r1" "p3" "c3" "p1" "w2" "r2" "p2" "c2" "c1" "check" +permutation "w3" "r1" "p3" "c3" "p1" "w2" "r2" "c1" "p2" "c2" "check" +permutation "w3" "r1" "p3" "c3" "p1" "w2" "c1" "r2" "p2" "c2" "check" +permutation "w3" "r1" "p3" "c3" "p1" "c1" "r2" "w2" "p2" "c2" "check" +permutation "w3" "r1" "p3" "c3" "p1" "c1" "w2" "r2" "p2" "c2" "check" +permutation "w3" "r2" "r1" "w2" "p1" "p2" "p3" "c3" "c1" "c2" "check" +permutation "w3" "r2" "r1" "w2" "p1" "p2" "p3" "c3" "c2" "c1" "check" +permutation "w3" "r2" "r1" "w2" "p1" "p3" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r2" "r1" "w2" "p1" "p3" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r2" "r1" "w2" "p1" "p3" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r2" "r1" "w2" "p1" "p3" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r2" "r1" "w2" "p1" "p3" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r2" "r1" "w2" "p2" "p1" "p3" "c3" "c1" "c2" "check" +permutation "w3" "r2" "r1" "w2" "p2" "p1" "p3" "c3" "c2" "c1" "check" +permutation "w3" "r2" "r1" "w2" "p2" "p3" "p1" "c3" "c1" "c2" "check" +permutation "w3" "r2" "r1" "w2" "p2" "p3" "p1" "c3" "c2" "c1" "check" +permutation "w3" "r2" "r1" "w2" "p2" "p3" "c3" "p1" "c1" "c2" "check" +permutation "w3" "r2" "r1" "w2" "p2" "p3" "c3" "p1" "c2" "c1" "check" +permutation "w3" "r2" "r1" "w2" "p2" "p3" "c3" "c2" "p1" "c1" "check" +permutation "w3" "r2" "r1" "w2" "p3" "p1" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r2" "r1" "w2" "p3" "p1" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r2" "r1" "w2" "p3" "p1" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r2" "r1" "w2" "p3" "p1" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r2" "r1" "w2" "p3" "p1" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r2" "r1" "w2" "p3" "p2" "p1" "c3" "c1" "c2" "check" +permutation "w3" "r2" "r1" "w2" "p3" "p2" "p1" "c3" "c2" "c1" "check" +permutation "w3" "r2" "r1" "w2" "p3" "p2" "c3" "p1" "c1" "c2" "check" +permutation "w3" "r2" "r1" "w2" "p3" "p2" "c3" "p1" "c2" "c1" "check" +permutation "w3" "r2" "r1" "w2" "p3" "p2" "c3" "c2" "p1" "c1" "check" +permutation "w3" "r2" "r1" "w2" "p3" "c3" "p1" "p2" "c1" "c2" "check" +permutation "w3" "r2" "r1" "w2" "p3" "c3" "p1" "p2" "c2" "c1" "check" +permutation "w3" "r2" "r1" "w2" "p3" "c3" "p1" "c1" "p2" "c2" "check" +permutation "w3" "r2" "r1" "w2" "p3" "c3" "p2" "p1" "c1" "c2" "check" +permutation "w3" "r2" "r1" "w2" "p3" "c3" "p2" "p1" "c2" "c1" "check" +permutation "w3" "r2" "r1" "w2" "p3" "c3" "p2" "c2" "p1" "c1" "check" +permutation "w3" "r2" "r1" "p1" "w2" "p2" "p3" "c3" "c1" "c2" "check" +permutation "w3" "r2" "r1" "p1" "w2" "p2" "p3" "c3" "c2" "c1" "check" +permutation "w3" "r2" "r1" "p1" "w2" "p3" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r2" "r1" "p1" "w2" "p3" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r2" "r1" "p1" "w2" "p3" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r2" "r1" "p1" "w2" "p3" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r2" "r1" "p1" "w2" "p3" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r2" "r1" "p1" "p3" "w2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r2" "r1" "p1" "p3" "w2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r2" "r1" "p1" "p3" "w2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r2" "r1" "p1" "p3" "w2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r2" "r1" "p1" "p3" "w2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r2" "r1" "p1" "p3" "c3" "w2" "p2" "c1" "c2" "check" +permutation "w3" "r2" "r1" "p1" "p3" "c3" "w2" "p2" "c2" "c1" "check" +permutation "w3" "r2" "r1" "p1" "p3" "c3" "w2" "c1" "p2" "c2" "check" +permutation "w3" "r2" "r1" "p1" "p3" "c3" "c1" "w2" "p2" "c2" "check" +permutation "w3" "r2" "r1" "p3" "w2" "p1" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r2" "r1" "p3" "w2" "p1" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r2" "r1" "p3" "w2" "p1" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r2" "r1" "p3" "w2" "p1" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r2" "r1" "p3" "w2" "p1" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r2" "r1" "p3" "w2" "p2" "p1" "c3" "c1" "c2" "check" +permutation "w3" "r2" "r1" "p3" "w2" "p2" "p1" "c3" "c2" "c1" "check" +permutation "w3" "r2" "r1" "p3" "w2" "p2" "c3" "p1" "c1" "c2" "check" +permutation "w3" "r2" "r1" "p3" "w2" "p2" "c3" "p1" "c2" "c1" "check" +permutation "w3" "r2" "r1" "p3" "w2" "p2" "c3" "c2" "p1" "c1" "check" +permutation "w3" "r2" "r1" "p3" "w2" "c3" "p1" "p2" "c1" "c2" "check" +permutation "w3" "r2" "r1" "p3" "w2" "c3" "p1" "p2" "c2" "c1" "check" +permutation "w3" "r2" "r1" "p3" "w2" "c3" "p1" "c1" "p2" "c2" "check" +permutation "w3" "r2" "r1" "p3" "w2" "c3" "p2" "p1" "c1" "c2" "check" +permutation "w3" "r2" "r1" "p3" "w2" "c3" "p2" "p1" "c2" "c1" "check" +permutation "w3" "r2" "r1" "p3" "w2" "c3" "p2" "c2" "p1" "c1" "check" +permutation "w3" "r2" "r1" "p3" "p1" "w2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r2" "r1" "p3" "p1" "w2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r2" "r1" "p3" "p1" "w2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r2" "r1" "p3" "p1" "w2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r2" "r1" "p3" "p1" "w2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r2" "r1" "p3" "p1" "c3" "w2" "p2" "c1" "c2" "check" +permutation "w3" "r2" "r1" "p3" "p1" "c3" "w2" "p2" "c2" "c1" "check" +permutation "w3" "r2" "r1" "p3" "p1" "c3" "w2" "c1" "p2" "c2" "check" +permutation "w3" "r2" "r1" "p3" "p1" "c3" "c1" "w2" "p2" "c2" "check" +permutation "w3" "r2" "r1" "p3" "c3" "w2" "p1" "p2" "c1" "c2" "check" +permutation "w3" "r2" "r1" "p3" "c3" "w2" "p1" "p2" "c2" "c1" "check" +permutation "w3" "r2" "r1" "p3" "c3" "w2" "p1" "c1" "p2" "c2" "check" +permutation "w3" "r2" "r1" "p3" "c3" "w2" "p2" "p1" "c1" "c2" "check" +permutation "w3" "r2" "r1" "p3" "c3" "w2" "p2" "p1" "c2" "c1" "check" +permutation "w3" "r2" "r1" "p3" "c3" "w2" "p2" "c2" "p1" "c1" "check" +permutation "w3" "r2" "r1" "p3" "c3" "p1" "w2" "p2" "c1" "c2" "check" +permutation "w3" "r2" "r1" "p3" "c3" "p1" "w2" "p2" "c2" "c1" "check" +permutation "w3" "r2" "r1" "p3" "c3" "p1" "w2" "c1" "p2" "c2" "check" +permutation "w3" "r2" "r1" "p3" "c3" "p1" "c1" "w2" "p2" "c2" "check" +permutation "w3" "r2" "p3" "r1" "w2" "p1" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r2" "p3" "r1" "w2" "p1" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r2" "p3" "r1" "w2" "p1" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r2" "p3" "r1" "w2" "p1" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r2" "p3" "r1" "w2" "p1" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r2" "p3" "r1" "w2" "p2" "p1" "c3" "c1" "c2" "check" +permutation "w3" "r2" "p3" "r1" "w2" "p2" "p1" "c3" "c2" "c1" "check" +permutation "w3" "r2" "p3" "r1" "w2" "p2" "c3" "p1" "c1" "c2" "check" +permutation "w3" "r2" "p3" "r1" "w2" "p2" "c3" "p1" "c2" "c1" "check" +permutation "w3" "r2" "p3" "r1" "w2" "p2" "c3" "c2" "p1" "c1" "check" +permutation "w3" "r2" "p3" "r1" "w2" "c3" "p1" "p2" "c1" "c2" "check" +permutation "w3" "r2" "p3" "r1" "w2" "c3" "p1" "p2" "c2" "c1" "check" +permutation "w3" "r2" "p3" "r1" "w2" "c3" "p1" "c1" "p2" "c2" "check" +permutation "w3" "r2" "p3" "r1" "w2" "c3" "p2" "p1" "c1" "c2" "check" +permutation "w3" "r2" "p3" "r1" "w2" "c3" "p2" "p1" "c2" "c1" "check" +permutation "w3" "r2" "p3" "r1" "w2" "c3" "p2" "c2" "p1" "c1" "check" +permutation "w3" "r2" "p3" "r1" "p1" "w2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "r2" "p3" "r1" "p1" "w2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "r2" "p3" "r1" "p1" "w2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "r2" "p3" "r1" "p1" "w2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "r2" "p3" "r1" "p1" "w2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "r2" "p3" "r1" "p1" "c3" "w2" "p2" "c1" "c2" "check" +permutation "w3" "r2" "p3" "r1" "p1" "c3" "w2" "p2" "c2" "c1" "check" +permutation "w3" "r2" "p3" "r1" "p1" "c3" "w2" "c1" "p2" "c2" "check" +permutation "w3" "r2" "p3" "r1" "p1" "c3" "c1" "w2" "p2" "c2" "check" +permutation "w3" "r2" "p3" "r1" "c3" "w2" "p1" "p2" "c1" "c2" "check" +permutation "w3" "r2" "p3" "r1" "c3" "w2" "p1" "p2" "c2" "c1" "check" +permutation "w3" "r2" "p3" "r1" "c3" "w2" "p1" "c1" "p2" "c2" "check" +permutation "w3" "r2" "p3" "r1" "c3" "w2" "p2" "p1" "c1" "c2" "check" +permutation "w3" "r2" "p3" "r1" "c3" "w2" "p2" "p1" "c2" "c1" "check" +permutation "w3" "r2" "p3" "r1" "c3" "w2" "p2" "c2" "p1" "c1" "check" +permutation "w3" "r2" "p3" "r1" "c3" "p1" "w2" "p2" "c1" "c2" "check" +permutation "w3" "r2" "p3" "r1" "c3" "p1" "w2" "p2" "c2" "c1" "check" +permutation "w3" "r2" "p3" "r1" "c3" "p1" "w2" "c1" "p2" "c2" "check" +permutation "w3" "r2" "p3" "r1" "c3" "p1" "c1" "w2" "p2" "c2" "check" +permutation "w3" "r2" "p3" "c3" "r1" "w2" "p1" "p2" "c1" "c2" "check" +permutation "w3" "r2" "p3" "c3" "r1" "w2" "p1" "p2" "c2" "c1" "check" +permutation "w3" "r2" "p3" "c3" "r1" "w2" "p1" "c1" "p2" "c2" "check" +permutation "w3" "r2" "p3" "c3" "r1" "w2" "p2" "p1" "c1" "c2" "check" +permutation "w3" "r2" "p3" "c3" "r1" "w2" "p2" "p1" "c2" "c1" "check" +permutation "w3" "r2" "p3" "c3" "r1" "w2" "p2" "c2" "p1" "c1" "check" +permutation "w3" "r2" "p3" "c3" "r1" "p1" "w2" "p2" "c1" "c2" "check" +permutation "w3" "r2" "p3" "c3" "r1" "p1" "w2" "p2" "c2" "c1" "check" +permutation "w3" "r2" "p3" "c3" "r1" "p1" "w2" "c1" "p2" "c2" "check" +permutation "w3" "r2" "p3" "c3" "r1" "p1" "c1" "w2" "p2" "c2" "check" +permutation "w3" "p3" "r1" "r2" "w2" "p1" "p2" "c3" "c1" "c2" "check" +permutation "w3" "p3" "r1" "r2" "w2" "p1" "p2" "c3" "c2" "c1" "check" +permutation "w3" "p3" "r1" "r2" "w2" "p1" "c3" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "r2" "w2" "p1" "c3" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "r2" "w2" "p1" "c3" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "r2" "w2" "p2" "p1" "c3" "c1" "c2" "check" +permutation "w3" "p3" "r1" "r2" "w2" "p2" "p1" "c3" "c2" "c1" "check" +permutation "w3" "p3" "r1" "r2" "w2" "p2" "c3" "p1" "c1" "c2" "check" +permutation "w3" "p3" "r1" "r2" "w2" "p2" "c3" "p1" "c2" "c1" "check" +permutation "w3" "p3" "r1" "r2" "w2" "p2" "c3" "c2" "p1" "c1" "check" +permutation "w3" "p3" "r1" "r2" "w2" "c3" "p1" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "r2" "w2" "c3" "p1" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "r2" "w2" "c3" "p1" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "r2" "w2" "c3" "p2" "p1" "c1" "c2" "check" +permutation "w3" "p3" "r1" "r2" "w2" "c3" "p2" "p1" "c2" "c1" "check" +permutation "w3" "p3" "r1" "r2" "w2" "c3" "p2" "c2" "p1" "c1" "check" +permutation "w3" "p3" "r1" "r2" "p1" "w2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "p3" "r1" "r2" "p1" "w2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "p3" "r1" "r2" "p1" "w2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "r2" "p1" "w2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "r2" "p1" "w2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "r2" "p1" "c3" "w2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "r2" "p1" "c3" "w2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "r2" "p1" "c3" "w2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "r2" "p1" "c3" "c1" "w2" "p2" "c2" "check" +permutation "w3" "p3" "r1" "r2" "c3" "w2" "p1" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "r2" "c3" "w2" "p1" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "r2" "c3" "w2" "p1" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "r2" "c3" "w2" "p2" "p1" "c1" "c2" "check" +permutation "w3" "p3" "r1" "r2" "c3" "w2" "p2" "p1" "c2" "c1" "check" +permutation "w3" "p3" "r1" "r2" "c3" "w2" "p2" "c2" "p1" "c1" "check" +permutation "w3" "p3" "r1" "r2" "c3" "p1" "w2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "r2" "c3" "p1" "w2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "r2" "c3" "p1" "w2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "r2" "c3" "p1" "c1" "w2" "p2" "c2" "check" +permutation "w3" "p3" "r1" "w2" "r2" "p1" "p2" "c3" "c1" "c2" "check" +permutation "w3" "p3" "r1" "w2" "r2" "p1" "p2" "c3" "c2" "c1" "check" +permutation "w3" "p3" "r1" "w2" "r2" "p1" "c3" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "w2" "r2" "p1" "c3" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "w2" "r2" "p1" "c3" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "w2" "r2" "p2" "p1" "c3" "c1" "c2" "check" +permutation "w3" "p3" "r1" "w2" "r2" "p2" "p1" "c3" "c2" "c1" "check" +permutation "w3" "p3" "r1" "w2" "r2" "p2" "c3" "p1" "c1" "c2" "check" +permutation "w3" "p3" "r1" "w2" "r2" "p2" "c3" "p1" "c2" "c1" "check" +permutation "w3" "p3" "r1" "w2" "r2" "p2" "c3" "c2" "p1" "c1" "check" +permutation "w3" "p3" "r1" "w2" "r2" "c3" "p1" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "w2" "r2" "c3" "p1" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "w2" "r2" "c3" "p1" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "w2" "r2" "c3" "p2" "p1" "c1" "c2" "check" +permutation "w3" "p3" "r1" "w2" "r2" "c3" "p2" "p1" "c2" "c1" "check" +permutation "w3" "p3" "r1" "w2" "r2" "c3" "p2" "c2" "p1" "c1" "check" +permutation "w3" "p3" "r1" "w2" "p1" "r2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "p3" "r1" "w2" "p1" "r2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "p3" "r1" "w2" "p1" "r2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "w2" "p1" "r2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "w2" "p1" "r2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "w2" "p1" "c3" "r2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "w2" "p1" "c3" "r2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "w2" "p1" "c3" "r2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "w2" "p1" "c3" "c1" "r2" "p2" "c2" "check" +permutation "w3" "p3" "r1" "w2" "c3" "r2" "p1" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "w2" "c3" "r2" "p1" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "w2" "c3" "r2" "p1" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "w2" "c3" "r2" "p2" "p1" "c1" "c2" "check" +permutation "w3" "p3" "r1" "w2" "c3" "r2" "p2" "p1" "c2" "c1" "check" +permutation "w3" "p3" "r1" "w2" "c3" "r2" "p2" "c2" "p1" "c1" "check" +permutation "w3" "p3" "r1" "w2" "c3" "p1" "r2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "w2" "c3" "p1" "r2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "w2" "c3" "p1" "r2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "w2" "c3" "p1" "c1" "r2" "p2" "c2" "check" +permutation "w3" "p3" "r1" "p1" "r2" "w2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "p3" "r1" "p1" "r2" "w2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "p3" "r1" "p1" "r2" "w2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "p1" "r2" "w2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "p1" "r2" "w2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "p1" "r2" "c3" "w2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "p1" "r2" "c3" "w2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "p1" "r2" "c3" "w2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "p1" "r2" "c3" "c1" "w2" "p2" "c2" "check" +permutation "w3" "p3" "r1" "p1" "w2" "r2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "p3" "r1" "p1" "w2" "r2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "p3" "r1" "p1" "w2" "r2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "p1" "w2" "r2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "p1" "w2" "r2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "p1" "w2" "c3" "r2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "p1" "w2" "c3" "r2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "p1" "w2" "c3" "r2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "p1" "w2" "c3" "c1" "r2" "p2" "c2" "check" +permutation "w3" "p3" "r1" "p1" "c3" "r2" "w2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "p1" "c3" "r2" "w2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "p1" "c3" "r2" "w2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "p1" "c3" "r2" "c1" "w2" "p2" "c2" "check" +permutation "w3" "p3" "r1" "p1" "c3" "w2" "r2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "p1" "c3" "w2" "r2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "p1" "c3" "w2" "r2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "p1" "c3" "w2" "c1" "r2" "p2" "c2" "check" +permutation "w3" "p3" "r1" "p1" "c3" "c1" "r2" "w2" "p2" "c2" "check" +permutation "w3" "p3" "r1" "p1" "c3" "c1" "w2" "r2" "p2" "c2" "check" +permutation "w3" "p3" "r1" "c3" "r2" "w2" "p1" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "c3" "r2" "w2" "p1" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "c3" "r2" "w2" "p1" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "c3" "r2" "w2" "p2" "p1" "c1" "c2" "check" +permutation "w3" "p3" "r1" "c3" "r2" "w2" "p2" "p1" "c2" "c1" "check" +permutation "w3" "p3" "r1" "c3" "r2" "w2" "p2" "c2" "p1" "c1" "check" +permutation "w3" "p3" "r1" "c3" "r2" "p1" "w2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "c3" "r2" "p1" "w2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "c3" "r2" "p1" "w2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "c3" "r2" "p1" "c1" "w2" "p2" "c2" "check" +permutation "w3" "p3" "r1" "c3" "w2" "r2" "p1" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "c3" "w2" "r2" "p1" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "c3" "w2" "r2" "p1" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "c3" "w2" "r2" "p2" "p1" "c1" "c2" "check" +permutation "w3" "p3" "r1" "c3" "w2" "r2" "p2" "p1" "c2" "c1" "check" +permutation "w3" "p3" "r1" "c3" "w2" "r2" "p2" "c2" "p1" "c1" "check" +permutation "w3" "p3" "r1" "c3" "w2" "p1" "r2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "c3" "w2" "p1" "r2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "c3" "w2" "p1" "r2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "c3" "w2" "p1" "c1" "r2" "p2" "c2" "check" +permutation "w3" "p3" "r1" "c3" "p1" "r2" "w2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "c3" "p1" "r2" "w2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "c3" "p1" "r2" "w2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "c3" "p1" "r2" "c1" "w2" "p2" "c2" "check" +permutation "w3" "p3" "r1" "c3" "p1" "w2" "r2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r1" "c3" "p1" "w2" "r2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r1" "c3" "p1" "w2" "r2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r1" "c3" "p1" "w2" "c1" "r2" "p2" "c2" "check" +permutation "w3" "p3" "r1" "c3" "p1" "c1" "r2" "w2" "p2" "c2" "check" +permutation "w3" "p3" "r1" "c3" "p1" "c1" "w2" "r2" "p2" "c2" "check" +permutation "w3" "p3" "r2" "r1" "w2" "p1" "p2" "c3" "c1" "c2" "check" +permutation "w3" "p3" "r2" "r1" "w2" "p1" "p2" "c3" "c2" "c1" "check" +permutation "w3" "p3" "r2" "r1" "w2" "p1" "c3" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r2" "r1" "w2" "p1" "c3" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r2" "r1" "w2" "p1" "c3" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r2" "r1" "w2" "p2" "p1" "c3" "c1" "c2" "check" +permutation "w3" "p3" "r2" "r1" "w2" "p2" "p1" "c3" "c2" "c1" "check" +permutation "w3" "p3" "r2" "r1" "w2" "p2" "c3" "p1" "c1" "c2" "check" +permutation "w3" "p3" "r2" "r1" "w2" "p2" "c3" "p1" "c2" "c1" "check" +permutation "w3" "p3" "r2" "r1" "w2" "p2" "c3" "c2" "p1" "c1" "check" +permutation "w3" "p3" "r2" "r1" "w2" "c3" "p1" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r2" "r1" "w2" "c3" "p1" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r2" "r1" "w2" "c3" "p1" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r2" "r1" "w2" "c3" "p2" "p1" "c1" "c2" "check" +permutation "w3" "p3" "r2" "r1" "w2" "c3" "p2" "p1" "c2" "c1" "check" +permutation "w3" "p3" "r2" "r1" "w2" "c3" "p2" "c2" "p1" "c1" "check" +permutation "w3" "p3" "r2" "r1" "p1" "w2" "p2" "c3" "c1" "c2" "check" +permutation "w3" "p3" "r2" "r1" "p1" "w2" "p2" "c3" "c2" "c1" "check" +permutation "w3" "p3" "r2" "r1" "p1" "w2" "c3" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r2" "r1" "p1" "w2" "c3" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r2" "r1" "p1" "w2" "c3" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r2" "r1" "p1" "c3" "w2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r2" "r1" "p1" "c3" "w2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r2" "r1" "p1" "c3" "w2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r2" "r1" "p1" "c3" "c1" "w2" "p2" "c2" "check" +permutation "w3" "p3" "r2" "r1" "c3" "w2" "p1" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r2" "r1" "c3" "w2" "p1" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r2" "r1" "c3" "w2" "p1" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r2" "r1" "c3" "w2" "p2" "p1" "c1" "c2" "check" +permutation "w3" "p3" "r2" "r1" "c3" "w2" "p2" "p1" "c2" "c1" "check" +permutation "w3" "p3" "r2" "r1" "c3" "w2" "p2" "c2" "p1" "c1" "check" +permutation "w3" "p3" "r2" "r1" "c3" "p1" "w2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r2" "r1" "c3" "p1" "w2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r2" "r1" "c3" "p1" "w2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r2" "r1" "c3" "p1" "c1" "w2" "p2" "c2" "check" +permutation "w3" "p3" "r2" "c3" "r1" "w2" "p1" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r2" "c3" "r1" "w2" "p1" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r2" "c3" "r1" "w2" "p1" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r2" "c3" "r1" "w2" "p2" "p1" "c1" "c2" "check" +permutation "w3" "p3" "r2" "c3" "r1" "w2" "p2" "p1" "c2" "c1" "check" +permutation "w3" "p3" "r2" "c3" "r1" "w2" "p2" "c2" "p1" "c1" "check" +permutation "w3" "p3" "r2" "c3" "r1" "p1" "w2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "r2" "c3" "r1" "p1" "w2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "r2" "c3" "r1" "p1" "w2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "r2" "c3" "r1" "p1" "c1" "w2" "p2" "c2" "check" +permutation "w3" "p3" "c3" "r1" "r2" "w2" "p1" "p2" "c1" "c2" "check" +permutation "w3" "p3" "c3" "r1" "r2" "w2" "p1" "p2" "c2" "c1" "check" +permutation "w3" "p3" "c3" "r1" "r2" "w2" "p1" "c1" "p2" "c2" "check" +permutation "w3" "p3" "c3" "r1" "r2" "w2" "p2" "p1" "c1" "c2" "check" +permutation "w3" "p3" "c3" "r1" "r2" "w2" "p2" "p1" "c2" "c1" "check" +permutation "w3" "p3" "c3" "r1" "r2" "w2" "p2" "c2" "p1" "c1" "check" +permutation "w3" "p3" "c3" "r1" "r2" "p1" "w2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "c3" "r1" "r2" "p1" "w2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "c3" "r1" "r2" "p1" "w2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "c3" "r1" "r2" "p1" "c1" "w2" "p2" "c2" "check" +permutation "w3" "p3" "c3" "r1" "w2" "r2" "p1" "p2" "c1" "c2" "check" +permutation "w3" "p3" "c3" "r1" "w2" "r2" "p1" "p2" "c2" "c1" "check" +permutation "w3" "p3" "c3" "r1" "w2" "r2" "p1" "c1" "p2" "c2" "check" +permutation "w3" "p3" "c3" "r1" "w2" "r2" "p2" "p1" "c1" "c2" "check" +permutation "w3" "p3" "c3" "r1" "w2" "r2" "p2" "p1" "c2" "c1" "check" +permutation "w3" "p3" "c3" "r1" "w2" "r2" "p2" "c2" "p1" "c1" "check" +permutation "w3" "p3" "c3" "r1" "w2" "p1" "r2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "c3" "r1" "w2" "p1" "r2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "c3" "r1" "w2" "p1" "r2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "c3" "r1" "w2" "p1" "c1" "r2" "p2" "c2" "check" +permutation "w3" "p3" "c3" "r1" "p1" "r2" "w2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "c3" "r1" "p1" "r2" "w2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "c3" "r1" "p1" "r2" "w2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "c3" "r1" "p1" "r2" "c1" "w2" "p2" "c2" "check" +permutation "w3" "p3" "c3" "r1" "p1" "w2" "r2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "c3" "r1" "p1" "w2" "r2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "c3" "r1" "p1" "w2" "r2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "c3" "r1" "p1" "w2" "c1" "r2" "p2" "c2" "check" +permutation "w3" "p3" "c3" "r1" "p1" "c1" "r2" "w2" "p2" "c2" "check" +permutation "w3" "p3" "c3" "r1" "p1" "c1" "w2" "r2" "p2" "c2" "check" +permutation "w3" "p3" "c3" "r2" "r1" "w2" "p1" "p2" "c1" "c2" "check" +permutation "w3" "p3" "c3" "r2" "r1" "w2" "p1" "p2" "c2" "c1" "check" +permutation "w3" "p3" "c3" "r2" "r1" "w2" "p1" "c1" "p2" "c2" "check" +permutation "w3" "p3" "c3" "r2" "r1" "w2" "p2" "p1" "c1" "c2" "check" +permutation "w3" "p3" "c3" "r2" "r1" "w2" "p2" "p1" "c2" "c1" "check" +permutation "w3" "p3" "c3" "r2" "r1" "w2" "p2" "c2" "p1" "c1" "check" +permutation "w3" "p3" "c3" "r2" "r1" "p1" "w2" "p2" "c1" "c2" "check" +permutation "w3" "p3" "c3" "r2" "r1" "p1" "w2" "p2" "c2" "c1" "check" +permutation "w3" "p3" "c3" "r2" "r1" "p1" "w2" "c1" "p2" "c2" "check" +permutation "w3" "p3" "c3" "r2" "r1" "p1" "c1" "w2" "p2" "c2" "check" diff --git a/src/test/isolation/specscanner.l b/src/test/isolation/specscanner.l index c3193917c0..36e10e7678 100644 --- a/src/test/isolation/specscanner.l +++ b/src/test/isolation/specscanner.l @@ -64,12 +64,12 @@ teardown { return(TEARDOWN); } <> { yyerror("unterminated quoted string"); } /* SQL blocks: { UPDATE ... } */ -"{" { +"{"{space}* { litbufpos = 0; BEGIN(sql); } -"}" { +{space}*"}" { litbuf[litbufpos] = '\0'; yylval.str = strdup(litbuf); BEGIN(INITIAL); diff --git a/src/test/regress/README b/src/test/regress/README new file mode 100644 index 0000000000..0cbf3b64b2 --- /dev/null +++ b/src/test/regress/README @@ -0,0 +1,3 @@ +Documentation concerning how to run these regression tests and interpret +the results can be found in the PostgreSQL manual, in the chapter +"Regression Tests". diff --git a/src/test/regress/expected/.gitignore b/src/test/regress/expected/.gitignore index 51b3f817c9..78be0ead4a 100644 --- a/src/test/regress/expected/.gitignore +++ b/src/test/regress/expected/.gitignore @@ -1,11 +1,16 @@ /constraints.out +/constraints_1.out /copy.out /copy_1.out /create_function_1.out /create_function_2.out /largeobject.out /largeobject_1.out +/largeobject_2.out +/largeobject_3.out /misc.out +/misc_1.out /security_label.out /tablespace.out /tablespace_1.out +/xc_copy.out diff --git a/src/test/regress/expected/aggregates.out b/src/test/regress/expected/aggregates.out index dd20688519..d2107cef39 100644 --- a/src/test/regress/expected/aggregates.out +++ b/src/test/regress/expected/aggregates.out @@ -448,7 +448,6 @@ FROM bool_test; -- In Postgres-XC, plans printed by explain are the ones created on the -- coordinator. Coordinator does not generate index scan plans. -- -analyze tenk1; -- ensure we get consistent plans here -- Basic cases explain (costs off, nodes off) select min(unique1) from tenk1; @@ -695,6 +694,45 @@ select min(f1), max(f1) from minmaxtest; 11 | 18 (1 row) +-- DISTINCT doesn't do anything useful here, but it shouldn't fail +explain (costs off) + select distinct min(f1), max(f1) from minmaxtest; + QUERY PLAN +-------------------------------------------------------------------------------------- + HashAggregate + InitPlan 1 (returns $0) + -> Limit + -> Merge Append + Sort Key: public.minmaxtest.f1 + -> Index Scan using minmaxtesti on minmaxtest + Index Cond: (f1 IS NOT NULL) + -> Index Scan using minmaxtest1i on minmaxtest1 minmaxtest + Index Cond: (f1 IS NOT NULL) + -> Index Scan Backward using minmaxtest2i on minmaxtest2 minmaxtest + Index Cond: (f1 IS NOT NULL) + -> Index Scan using minmaxtest3i on minmaxtest3 minmaxtest + Index Cond: (f1 IS NOT NULL) + InitPlan 2 (returns $1) + -> Limit + -> Merge Append + Sort Key: public.minmaxtest.f1 + -> Index Scan Backward using minmaxtesti on minmaxtest + Index Cond: (f1 IS NOT NULL) + -> Index Scan Backward using minmaxtest1i on minmaxtest1 minmaxtest + Index Cond: (f1 IS NOT NULL) + -> Index Scan using minmaxtest2i on minmaxtest2 minmaxtest + Index Cond: (f1 IS NOT NULL) + -> Index Scan Backward using minmaxtest3i on minmaxtest3 minmaxtest + Index Cond: (f1 IS NOT NULL) + -> Result +(26 rows) + +select distinct min(f1), max(f1) from minmaxtest; + min | max +-----+----- + 11 | 18 +(1 row) + drop table minmaxtest cascade; NOTICE: drop cascades to 3 other objects DETAIL: drop cascades to table minmaxtest1 diff --git a/src/test/regress/expected/aggregates_1.out b/src/test/regress/expected/aggregates_1.out index 1300bcb4b8..b16868c780 100644 --- a/src/test/regress/expected/aggregates_1.out +++ b/src/test/regress/expected/aggregates_1.out @@ -309,8 +309,6 @@ from tenk1 o; -- -- test for bitwise integer aggregates -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMPORARY TABLE bitwise_test( i2 INT2, i4 INT4, @@ -450,7 +448,6 @@ FROM bool_test; -- In Postgres-XC, plans printed by explain are the ones created on the -- coordinator. Coordinator does not generate index scan plans. -- -analyze tenk1; -- ensure we get consistent plans here -- Basic cases explain (costs off, nodes off) select min(unique1) from tenk1; @@ -697,6 +694,30 @@ select min(f1), max(f1) from minmaxtest; 11 | 18 (1 row) +-- DISTINCT doesn't do anything useful here, but it shouldn't fail +explain (costs off) + select distinct min(f1), max(f1) from minmaxtest; + QUERY PLAN +------------------------------------------------ + HashAggregate + -> Aggregate + -> Append + -> Data Node Scan on minmaxtest + Node/s: dn1, dn2 + -> Data Node Scan on minmaxtest + Node/s: dn1, dn2 + -> Data Node Scan on minmaxtest + Node/s: dn1, dn2 + -> Data Node Scan on minmaxtest + Node/s: dn1, dn2 +(11 rows) + +select distinct min(f1), max(f1) from minmaxtest; + min | max +-----+----- + 11 | 18 +(1 row) + drop table minmaxtest cascade; NOTICE: drop cascades to 3 other objects DETAIL: drop cascades to table minmaxtest1 diff --git a/src/test/regress/expected/alter_table.out b/src/test/regress/expected/alter_table.out index dcf9be6dac..84e8991e71 100644 --- a/src/test/regress/expected/alter_table.out +++ b/src/test/regress/expected/alter_table.out @@ -97,8 +97,6 @@ DROP TABLE tmp; -- rename - check on both non-temp and temp tables -- CREATE TABLE tmp (regtable int); --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE tmp (tmptable int); ALTER TABLE tmp RENAME TO tmp_new; SELECT * FROM tmp; @@ -136,7 +134,6 @@ ALTER INDEX tmp_onek_unique1 RENAME TO onek_unique1; CREATE VIEW tmp_view (unique1) AS SELECT unique1 FROM tenk1; ALTER TABLE tmp_view RENAME TO tmp_view_new; -- hack to ensure we get an indexscan here -ANALYZE tenk1; set enable_seqscan to off; set enable_bitmapscan to off; -- 5 values, sorted @@ -1512,7 +1509,7 @@ drop table another; create table tab1 (a int, b text); create table tab2 (x int, y tab1); alter table tab1 alter column b type varchar; -- fails -ERROR: cannot alter table "tab1" because column "tab2"."y" uses its rowtype +ERROR: cannot alter table "tab1" because column "tab2.y" uses its row type -- disallow recursive containment of row types create temp table recur1 (f1 int); alter table recur1 add column f2 recur1; -- fails @@ -1541,6 +1538,28 @@ where oid = 'test_storage'::regclass; t (1 row) +-- ALTER TYPE with a check constraint and a child table (bug before Nov 2012) +CREATE TABLE test_inh_check (a float check (a > 10.2)); +CREATE TABLE test_inh_check_child() INHERITS(test_inh_check); +ALTER TABLE test_inh_check ALTER COLUMN a TYPE numeric; +\d test_inh_check +Table "public.test_inh_check" + Column | Type | Modifiers +--------+---------+----------- + a | numeric | +Check constraints: + "test_inh_check_a_check" CHECK (a::double precision > 10.2::double precision) +Number of child tables: 1 (Use \d+ to list them.) + +\d test_inh_check_child +Table "public.test_inh_check_child" + Column | Type | Modifiers +--------+---------+----------- + a | numeric | +Check constraints: + "test_inh_check_a_check" CHECK (a::double precision > 10.2::double precision) +Inherits: test_inh_check + -- -- lock levels -- @@ -1571,90 +1590,88 @@ and c.relname != 'my_locks' group by c.relname; create table alterlock (f1 int primary key, f2 text); NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "alterlock_pkey" for table "alterlock" --- share update exclusive begin; alter table alterlock alter column f2 set statistics 150; select * from my_locks order by 1; - relname | max_lockmode ------------+-------------------------- - alterlock | ShareUpdateExclusiveLock + relname | max_lockmode +-----------+--------------------- + alterlock | AccessExclusiveLock (1 row) rollback; begin; alter table alterlock cluster on alterlock_pkey; select * from my_locks order by 1; - relname | max_lockmode -----------------+-------------------------- - alterlock | ShareUpdateExclusiveLock - alterlock_pkey | ShareUpdateExclusiveLock + relname | max_lockmode +----------------+--------------------- + alterlock | AccessExclusiveLock + alterlock_pkey | AccessExclusiveLock (2 rows) commit; begin; alter table alterlock set without cluster; select * from my_locks order by 1; - relname | max_lockmode ------------+-------------------------- - alterlock | ShareUpdateExclusiveLock + relname | max_lockmode +-----------+--------------------- + alterlock | AccessExclusiveLock (1 row) commit; begin; alter table alterlock set (fillfactor = 100); select * from my_locks order by 1; - relname | max_lockmode ------------+-------------------------- - alterlock | ShareUpdateExclusiveLock - pg_toast | ShareUpdateExclusiveLock + relname | max_lockmode +-----------+--------------------- + alterlock | AccessExclusiveLock + pg_toast | AccessExclusiveLock (2 rows) commit; begin; alter table alterlock reset (fillfactor); select * from my_locks order by 1; - relname | max_lockmode ------------+-------------------------- - alterlock | ShareUpdateExclusiveLock - pg_toast | ShareUpdateExclusiveLock + relname | max_lockmode +-----------+--------------------- + alterlock | AccessExclusiveLock + pg_toast | AccessExclusiveLock (2 rows) commit; begin; alter table alterlock set (toast.autovacuum_enabled = off); select * from my_locks order by 1; - relname | max_lockmode ------------+-------------------------- - alterlock | ShareUpdateExclusiveLock - pg_toast | ShareUpdateExclusiveLock + relname | max_lockmode +-----------+--------------------- + alterlock | AccessExclusiveLock + pg_toast | AccessExclusiveLock (2 rows) commit; begin; alter table alterlock set (autovacuum_enabled = off); select * from my_locks order by 1; - relname | max_lockmode ------------+-------------------------- - alterlock | ShareUpdateExclusiveLock - pg_toast | ShareUpdateExclusiveLock + relname | max_lockmode +-----------+--------------------- + alterlock | AccessExclusiveLock + pg_toast | AccessExclusiveLock (2 rows) commit; begin; alter table alterlock alter column f2 set (n_distinct = 1); select * from my_locks order by 1; - relname | max_lockmode ------------+-------------------------- - alterlock | ShareUpdateExclusiveLock + relname | max_lockmode +-----------+--------------------- + alterlock | AccessExclusiveLock (1 row) rollback; begin; alter table alterlock alter column f2 set storage extended; select * from my_locks order by 1; - relname | max_lockmode ------------+-------------------------- - alterlock | ShareUpdateExclusiveLock + relname | max_lockmode +-----------+--------------------- + alterlock | AccessExclusiveLock (1 row) rollback; --- share row exclusive begin; alter table alterlock alter column f2 set default 'x'; select * from my_locks order by 1; - relname | max_lockmode ------------+----------------------- - alterlock | ShareRowExclusiveLock + relname | max_lockmode +-----------+--------------------- + alterlock | AccessExclusiveLock (1 row) rollback; @@ -1848,7 +1865,7 @@ DROP TYPE test_type; CREATE TYPE test_type1 AS (a int, b text); CREATE TABLE test_tbl1 (x int, y test_type1); ALTER TYPE test_type1 ALTER ATTRIBUTE b TYPE varchar; -- fails -ERROR: cannot alter type "test_type1" because column "test_tbl1"."y" uses it +ERROR: cannot alter type "test_type1" because column "test_tbl1.y" uses it CREATE TYPE test_type2 AS (a int, b text); CREATE TABLE test_tbl2 OF test_type2; CREATE TABLE test_tbl2_subclass () INHERITS (test_tbl2); diff --git a/src/test/regress/expected/arrays.out b/src/test/regress/expected/arrays.out index 472a443dc4..4473fbf22a 100644 --- a/src/test/regress/expected/arrays.out +++ b/src/test/regress/expected/arrays.out @@ -161,8 +161,6 @@ SELECT a,b,c FROM arrtest ORDER BY a, b, c; -- -- test array extension -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE arrtest1 (i int[], t text[]); insert into arrtest1 values(array[1,2,null,4], array['one','two',null,'four']); select * from arrtest1; diff --git a/src/test/regress/expected/cluster.out b/src/test/regress/expected/cluster.out index 01f54ef810..d59745658f 100644 --- a/src/test/regress/expected/cluster.out +++ b/src/test/regress/expected/cluster.out @@ -438,8 +438,6 @@ SELECT * FROM clustertest ORDER BY 1; (5 rows) -- check that temp tables can be clustered --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; create temp table clstr_temp (col1 int primary key, col2 text); NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "clstr_temp_pkey" for table "clstr_temp" insert into clstr_temp values (2, 'two'), (1, 'one'); diff --git a/src/test/regress/expected/cluster_1.out b/src/test/regress/expected/cluster_1.out index f6fbf98036..a75c27253f 100644 --- a/src/test/regress/expected/cluster_1.out +++ b/src/test/regress/expected/cluster_1.out @@ -357,9 +357,7 @@ SELECT * FROM clustertest ORDER BY 1; (5 rows) -- check that temp tables can be clustered --- Enforce use of COMMIT instead of 2PC for temporary objects RESET SESSION AUTHORIZATION; -SET enforce_two_phase_commit TO off; -- Done by a superuser SET SESSION AUTHORIZATION clstr_user; create temp table clstr_temp (col1 int primary key, col2 text); NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "clstr_temp_pkey" for table "clstr_temp" diff --git a/src/test/regress/expected/collate.linux.utf8.out b/src/test/regress/expected/collate.linux.utf8.out index c065ae98eb..8cee6ed812 100644 --- a/src/test/regress/expected/collate.linux.utf8.out +++ b/src/test/regress/expected/collate.linux.utf8.out @@ -421,7 +421,7 @@ SELECT table_name, view_definition FROM information_schema.views collview3 | SELECT collate_test10.a, lower(((collate_test10.x || collate_test10.x) COLLATE "C")) AS lower FROM collate_test10; (3 rows) --- collation propagation in various expression type +-- collation propagation in various expression types SELECT a, coalesce(b, 'foo') FROM collate_test1 ORDER BY 2; a | coalesce ---+---------- @@ -967,6 +967,7 @@ CREATE COLLATION test3 (lc_collate = 'en_US.utf8'); -- fail, need lc_ctype ERROR: parameter "lc_ctype" must be specified CREATE COLLATION testx (locale = 'nonsense'); -- fail ERROR: could not create locale "nonsense": No such file or directory +DETAIL: The operating system could not find any locale data for the locale name "nonsense". CREATE COLLATION test4 FROM nonsense; ERROR: collation "nonsense" for encoding "UTF8" does not exist CREATE COLLATION test5 FROM test0; diff --git a/src/test/regress/expected/collate.out b/src/test/regress/expected/collate.out index 627ae1f3f8..a15e6911b0 100644 --- a/src/test/regress/expected/collate.out +++ b/src/test/regress/expected/collate.out @@ -201,7 +201,7 @@ SELECT table_name, view_definition FROM information_schema.views collview3 | SELECT collate_test10.a, lower(((collate_test10.x || collate_test10.x) COLLATE "POSIX")) AS lower FROM collate_test10; (3 rows) --- collation propagation in various expression type +-- collation propagation in various expression types SELECT a, coalesce(b, 'foo') FROM collate_test1 ORDER BY 2; a | coalesce ---+---------- @@ -574,6 +574,9 @@ ALTER TABLE collate_test22 ADD FOREIGN KEY (f2) REFERENCES collate_test20; RESET enable_seqscan; RESET enable_hashjoin; RESET enable_nestloop; +-- 9.1 bug with useless COLLATE in an expression subject to length coercion +CREATE TEMP TABLE vctable (f1 varchar(25)); +INSERT INTO vctable VALUES ('foo' COLLATE "C"); -- -- Clean up. Many of these table names will be re-used if the user is -- trying to run any platform-specific collation tests later, so we diff --git a/src/test/regress/expected/collate_1.out b/src/test/regress/expected/collate_1.out index 3c31021cd2..9b8ce4fc1a 100644 --- a/src/test/regress/expected/collate_1.out +++ b/src/test/regress/expected/collate_1.out @@ -201,7 +201,7 @@ SELECT table_name, view_definition FROM information_schema.views collview3 | SELECT collate_test10.a, lower(((collate_test10.x || collate_test10.x) COLLATE "POSIX")) AS lower FROM collate_test10; (3 rows) --- collation propagation in various expression type +-- collation propagation in various expression types SELECT a, coalesce(b, 'foo') FROM collate_test1 ORDER BY 2; a | coalesce ---+---------- @@ -571,6 +571,9 @@ ALTER TABLE collate_test22 ADD FOREIGN KEY (f2) REFERENCES collate_test20; RESET enable_seqscan; RESET enable_hashjoin; RESET enable_nestloop; +-- 9.1 bug with useless COLLATE in an expression subject to length coercion +CREATE TEMP TABLE vctable (f1 varchar(25)); +INSERT INTO vctable VALUES ('foo' COLLATE "C"); -- -- Clean up. Many of these table names will be re-used if the user is -- trying to run any platform-specific collation tests later, so we diff --git a/src/test/regress/expected/collate_2.out b/src/test/regress/expected/collate_2.out index 0924c2b609..7321509208 100644 --- a/src/test/regress/expected/collate_2.out +++ b/src/test/regress/expected/collate_2.out @@ -201,7 +201,7 @@ SELECT table_name, view_definition FROM information_schema.views collview3 | SELECT collate_test10.a, lower(((collate_test10.x || collate_test10.x) COLLATE "POSIX")) AS lower FROM collate_test10; (3 rows) --- collation propagation in various expression type +-- collation propagation in various expression types SELECT a, coalesce(b, 'foo') FROM collate_test1 ORDER BY 2; a | coalesce ---+---------- @@ -571,6 +571,9 @@ ALTER TABLE collate_test22 ADD FOREIGN KEY (f2) REFERENCES collate_test20; RESET enable_seqscan; RESET enable_hashjoin; RESET enable_nestloop; +-- 9.1 bug with useless COLLATE in an expression subject to length coercion +CREATE TEMP TABLE vctable (f1 varchar(25)); +INSERT INTO vctable VALUES ('foo' COLLATE "C"); -- -- Clean up. Many of these table names will be re-used if the user is -- trying to run any platform-specific collation tests later, so we diff --git a/src/test/regress/expected/combocid_1.out b/src/test/regress/expected/combocid_1.out index 2b57c7d9f3..6f2b837038 100644 --- a/src/test/regress/expected/combocid_1.out +++ b/src/test/regress/expected/combocid_1.out @@ -1,8 +1,6 @@ -- -- Tests for some likely failure cases with combo cmin/cmax mechanism -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE combocidtest (foobar int); BEGIN; -- a few dummy ops to push up the CommandId counter diff --git a/src/test/regress/expected/copy2.out b/src/test/regress/expected/copy2.out index 77555ed156..7e7f81a971 100644 --- a/src/test/regress/expected/copy2.out +++ b/src/test/regress/expected/copy2.out @@ -239,6 +239,22 @@ a\. \.b c\.d "\." +-- test handling of nonstandard null marker that violates escaping rules +CREATE TEMP TABLE testnull(a int, b text); +INSERT INTO testnull VALUES (1, E'\\0'), (NULL, NULL); +COPY testnull TO stdout WITH NULL AS E'\\0'; +1 \\0 +\0 \0 +COPY testnull FROM stdin WITH NULL AS E'\\0'; +SELECT * FROM testnull; + a | b +----+---- + 1 | \0 + | + 42 | \0 + | +(4 rows) + DROP TABLE x, y; DROP FUNCTION fn_x_before(); DROP FUNCTION fn_x_after(); diff --git a/src/test/regress/expected/copy2_1.out b/src/test/regress/expected/copy2_1.out index 3dd88344ab..76f417d020 100644 --- a/src/test/regress/expected/copy2_1.out +++ b/src/test/regress/expected/copy2_1.out @@ -1,5 +1,3 @@ --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE x ( a serial, b int, @@ -245,6 +243,22 @@ COPY testeoc TO stdout CSV; a\. \.b c\.d +-- test handling of nonstandard null marker that violates escaping rules +CREATE TEMP TABLE testnull(a int, b text); +INSERT INTO testnull VALUES (1, E'\\0'), (NULL, NULL); +COPY testnull TO stdout WITH NULL AS E'\\0'; +1 \\0 +\0 \0 +COPY testnull FROM stdin WITH NULL AS E'\\0'; +SELECT * FROM testnull; + a | b +----+---- + 1 | \0 + | + 42 | \0 + | +(4 rows) + DROP TABLE x, y; DROP FUNCTION fn_x_before(); DROP FUNCTION fn_x_after(); diff --git a/src/test/regress/expected/create_index.out b/src/test/regress/expected/create_index.out index e3f931b4a9..643d35014e 100644 --- a/src/test/regress/expected/create_index.out +++ b/src/test/regress/expected/create_index.out @@ -53,7 +53,6 @@ CREATE INDEX gpolygonind ON polygon_tbl USING gist (f1); CREATE INDEX gcircleind ON circle_tbl USING gist (f1); INSERT INTO POINT_TBL(f1) VALUES (NULL); CREATE INDEX gpointind ON point_tbl USING gist (f1); -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE gpolygon_tbl AS SELECT polygon(home_base) AS f1 FROM slow_emp4000; INSERT INTO gpolygon_tbl VALUES ( '(1000,0,0,1000)' ); @@ -1184,7 +1183,7 @@ ERROR: Unique index of partitioned table must contain the hash/modulo distribut -- -- Unfortunately this only tests about half the code paths because there are -- no concurrent updates happening to the table at the same time. -CREATE TABLE concur_heap (f1 text, f2 text); +CREATE TABLE concur_heap (f1 text, f2 text) DISTRIBUTE BY REPLICATION; -- empty table CREATE INDEX CONCURRENTLY concur_index1 ON concur_heap(f2,f1); ERROR: PGXC does not support concurrent INDEX yet @@ -1222,9 +1221,21 @@ COMMIT; BEGIN; CREATE INDEX std_index on concur_heap(f2); COMMIT; --- check to make sure that the failed indexes were cleaned up properly and the --- successful indexes are created properly. Notably that they do NOT have the --- "invalid" flag set. +-- Failed builds are left invalid by VACUUM FULL, fixed by REINDEX +VACUUM FULL concur_heap; +REINDEX TABLE concur_heap; +DELETE FROM concur_heap WHERE f1 = 'b'; +VACUUM FULL concur_heap; +\d concur_heap +Table "public.concur_heap" + Column | Type | Modifiers +--------+------+----------- + f1 | text | + f2 | text | +Indexes: + "std_index" btree (f2) + +REINDEX TABLE concur_heap; \d concur_heap Table "public.concur_heap" Column | Type | Modifiers @@ -1305,6 +1316,18 @@ SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NUL 1 (1 row) +SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500; + count +------- + 499 +(1 row) + +SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500; + count +------- + 0 +(1 row) + DROP INDEX onek_nulltest; CREATE UNIQUE INDEX onek_nulltest ON onek_with_null (unique2 desc,unique1); SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL; @@ -1331,6 +1354,18 @@ SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NUL 1 (1 row) +SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500; + count +------- + 499 +(1 row) + +SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500; + count +------- + 0 +(1 row) + DROP INDEX onek_nulltest; CREATE UNIQUE INDEX onek_nulltest ON onek_with_null (unique2 desc nulls last,unique1); SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL; @@ -1357,6 +1392,18 @@ SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NUL 1 (1 row) +SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500; + count +------- + 499 +(1 row) + +SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500; + count +------- + 0 +(1 row) + DROP INDEX onek_nulltest; CREATE UNIQUE INDEX onek_nulltest ON onek_with_null (unique2 nulls first,unique1); SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL; @@ -1383,6 +1430,18 @@ SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NUL 1 (1 row) +SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500; + count +------- + 499 +(1 row) + +SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500; + count +------- + 0 +(1 row) + RESET enable_seqscan; RESET enable_indexscan; RESET enable_bitmapscan; diff --git a/src/test/regress/expected/create_misc_1.out b/src/test/regress/expected/create_misc_1.out new file mode 100644 index 0000000000..5ca8ef930e --- /dev/null +++ b/src/test/regress/expected/create_misc_1.out @@ -0,0 +1,136 @@ +-- +-- CREATE_MISC +-- +-- CLASS POPULATION +-- (any resemblance to real life is purely coincidental) +-- +INSERT INTO tenk2 SELECT * FROM tenk1; +SELECT * INTO TABLE onek2 FROM onek; +INSERT INTO fast_emp4000 SELECT * FROM slow_emp4000; +SELECT * + INTO TABLE Bprime + FROM tenk1 + WHERE unique2 < 1000; +INSERT INTO hobbies_r (name, person) + SELECT 'posthacking', p.name + FROM person* p + WHERE p.name = 'mike' or p.name = 'jeff'; +INSERT INTO hobbies_r (name, person) + SELECT 'basketball', p.name + FROM person p + WHERE p.name = 'joe' or p.name = 'sally'; +INSERT INTO hobbies_r (name) VALUES ('skywalking'); +INSERT INTO equipment_r (name, hobby) VALUES ('advil', 'posthacking'); +INSERT INTO equipment_r (name, hobby) VALUES ('peet''s coffee', 'posthacking'); +INSERT INTO equipment_r (name, hobby) VALUES ('hightops', 'basketball'); +INSERT INTO equipment_r (name, hobby) VALUES ('guts', 'skywalking'); +SELECT * + INTO TABLE ramp + FROM road + WHERE name ~ '.*Ramp'; +INSERT INTO ihighway + SELECT * + FROM road + WHERE name ~ 'I- .*'; +ERROR: INSERT SELECT is not supported when inserts are done in a child by selecting from its parent +INSERT INTO shighway + SELECT * + FROM road + WHERE name ~ 'State Hwy.*'; +ERROR: INSERT SELECT is not supported when inserts are done in a child by selecting from its parent +UPDATE shighway + SET surface = 'asphalt'; +INSERT INTO a_star (class, a) VALUES ('a', 1); +INSERT INTO a_star (class, a) VALUES ('a', 2); +INSERT INTO a_star (class) VALUES ('a'); +INSERT INTO b_star (class, a, b) VALUES ('b', 3, 'mumble'::text); +INSERT INTO b_star (class, a) VALUES ('b', 4); +INSERT INTO b_star (class, b) VALUES ('b', 'bumble'::text); +INSERT INTO b_star (class) VALUES ('b'); +INSERT INTO c_star (class, a, c) VALUES ('c', 5, 'hi mom'::name); +INSERT INTO c_star (class, a) VALUES ('c', 6); +INSERT INTO c_star (class, c) VALUES ('c', 'hi paul'::name); +INSERT INTO c_star (class) VALUES ('c'); +INSERT INTO d_star (class, a, b, c, d) + VALUES ('d', 7, 'grumble'::text, 'hi sunita'::name, '0.0'::float8); +INSERT INTO d_star (class, a, b, c) + VALUES ('d', 8, 'stumble'::text, 'hi koko'::name); +INSERT INTO d_star (class, a, b, d) + VALUES ('d', 9, 'rumble'::text, '1.1'::float8); +INSERT INTO d_star (class, a, c, d) + VALUES ('d', 10, 'hi kristin'::name, '10.01'::float8); +INSERT INTO d_star (class, b, c, d) + VALUES ('d', 'crumble'::text, 'hi boris'::name, '100.001'::float8); +INSERT INTO d_star (class, a, b) + VALUES ('d', 11, 'fumble'::text); +INSERT INTO d_star (class, a, c) + VALUES ('d', 12, 'hi avi'::name); +INSERT INTO d_star (class, a, d) + VALUES ('d', 13, '1000.0001'::float8); +INSERT INTO d_star (class, b, c) + VALUES ('d', 'tumble'::text, 'hi andrew'::name); +INSERT INTO d_star (class, b, d) + VALUES ('d', 'humble'::text, '10000.00001'::float8); +INSERT INTO d_star (class, c, d) + VALUES ('d', 'hi ginger'::name, '100000.000001'::float8); +INSERT INTO d_star (class, a) VALUES ('d', 14); +INSERT INTO d_star (class, b) VALUES ('d', 'jumble'::text); +INSERT INTO d_star (class, c) VALUES ('d', 'hi jolly'::name); +INSERT INTO d_star (class, d) VALUES ('d', '1000000.0000001'::float8); +INSERT INTO d_star (class) VALUES ('d'); +INSERT INTO e_star (class, a, c, e) + VALUES ('e', 15, 'hi carol'::name, '-1'::int2); +INSERT INTO e_star (class, a, c) + VALUES ('e', 16, 'hi bob'::name); +INSERT INTO e_star (class, a, e) + VALUES ('e', 17, '-2'::int2); +INSERT INTO e_star (class, c, e) + VALUES ('e', 'hi michelle'::name, '-3'::int2); +INSERT INTO e_star (class, a) + VALUES ('e', 18); +INSERT INTO e_star (class, c) + VALUES ('e', 'hi elisa'::name); +INSERT INTO e_star (class, e) + VALUES ('e', '-4'::int2); +INSERT INTO f_star (class, a, c, e, f) + VALUES ('f', 19, 'hi claire'::name, '-5'::int2, '(1,3),(2,4)'::polygon); +INSERT INTO f_star (class, a, c, e) + VALUES ('f', 20, 'hi mike'::name, '-6'::int2); +INSERT INTO f_star (class, a, c, f) + VALUES ('f', 21, 'hi marcel'::name, '(11,44),(22,55),(33,66)'::polygon); +INSERT INTO f_star (class, a, e, f) + VALUES ('f', 22, '-7'::int2, '(111,555),(222,666),(333,777),(444,888)'::polygon); +INSERT INTO f_star (class, c, e, f) + VALUES ('f', 'hi keith'::name, '-8'::int2, + '(1111,3333),(2222,4444)'::polygon); +INSERT INTO f_star (class, a, c) + VALUES ('f', 24, 'hi marc'::name); +INSERT INTO f_star (class, a, e) + VALUES ('f', 25, '-9'::int2); +INSERT INTO f_star (class, a, f) + VALUES ('f', 26, '(11111,33333),(22222,44444)'::polygon); +INSERT INTO f_star (class, c, e) + VALUES ('f', 'hi allison'::name, '-10'::int2); +INSERT INTO f_star (class, c, f) + VALUES ('f', 'hi jeff'::name, + '(111111,333333),(222222,444444)'::polygon); +INSERT INTO f_star (class, e, f) + VALUES ('f', '-11'::int2, '(1111111,3333333),(2222222,4444444)'::polygon); +INSERT INTO f_star (class, a) VALUES ('f', 27); +INSERT INTO f_star (class, c) VALUES ('f', 'hi carl'::name); +INSERT INTO f_star (class, e) VALUES ('f', '-12'::int2); +INSERT INTO f_star (class, f) + VALUES ('f', '(11111111,33333333),(22222222,44444444)'::polygon); +INSERT INTO f_star (class) VALUES ('f'); +-- +-- for internal portal (cursor) tests +-- +CREATE TABLE iportaltest ( + i int4, + d float4, + p polygon +); +INSERT INTO iportaltest (i, d, p) + VALUES (1, 3.567, '(3.0,1.0),(4.0,2.0)'::polygon); +INSERT INTO iportaltest (i, d, p) + VALUES (2, 89.05, '(4.0,2.0),(3.0,1.0)'::polygon); diff --git a/src/test/regress/expected/create_table.out b/src/test/regress/expected/create_table.out index 62010a1482..d20790f909 100644 --- a/src/test/regress/expected/create_table.out +++ b/src/test/regress/expected/create_table.out @@ -204,3 +204,19 @@ CREATE TABLE IF NOT EXISTS test_tsvector( t text ); NOTICE: relation "test_tsvector" already exists, skipping +CREATE UNLOGGED TABLE unlogged1 (a int primary key); -- OK +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "unlogged1_pkey" for table "unlogged1" +INSERT INTO unlogged1 VALUES (42); +CREATE UNLOGGED TABLE public.unlogged2 (a int primary key); -- also OK +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "unlogged2_pkey" for table "unlogged2" +CREATE UNLOGGED TABLE pg_temp.unlogged3 (a int primary key); -- not OK +ERROR: only temporary relations may be created in temporary schemas +CREATE TABLE pg_temp.implicitly_temp (a int primary key); -- OK +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "implicitly_temp_pkey" for table "implicitly_temp" +CREATE TEMP TABLE explicitly_temp (a int primary key); -- also OK +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "explicitly_temp_pkey" for table "explicitly_temp" +CREATE TEMP TABLE pg_temp.doubly_temp (a int primary key); -- also OK +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "doubly_temp_pkey" for table "doubly_temp" +CREATE TEMP TABLE public.temp_to_perm (a int primary key); -- not OK +ERROR: cannot create temporary relation in non-temporary schema +DROP TABLE unlogged1, public.unlogged2; diff --git a/src/test/regress/expected/create_table_1.out b/src/test/regress/expected/create_table_1.out deleted file mode 100644 index 62010a1482..0000000000 --- a/src/test/regress/expected/create_table_1.out +++ /dev/null @@ -1,206 +0,0 @@ --- --- CREATE_TABLE --- --- --- CLASS DEFINITIONS --- -CREATE TABLE hobbies_r ( - name text, - person text -); -CREATE TABLE equipment_r ( - name text, - hobby text -); -CREATE TABLE onek ( - unique1 int4, - unique2 int4, - two int4, - four int4, - ten int4, - twenty int4, - hundred int4, - thousand int4, - twothousand int4, - fivethous int4, - tenthous int4, - odd int4, - even int4, - stringu1 name, - stringu2 name, - string4 name -); -CREATE TABLE tenk1 ( - unique1 int4, - unique2 int4, - two int4, - four int4, - ten int4, - twenty int4, - hundred int4, - thousand int4, - twothousand int4, - fivethous int4, - tenthous int4, - odd int4, - even int4, - stringu1 name, - stringu2 name, - string4 name -) WITH OIDS; -CREATE TABLE tenk2 ( - unique1 int4, - unique2 int4, - two int4, - four int4, - ten int4, - twenty int4, - hundred int4, - thousand int4, - twothousand int4, - fivethous int4, - tenthous int4, - odd int4, - even int4, - stringu1 name, - stringu2 name, - string4 name -); -CREATE TABLE person ( - name text, - age int4, - location point -); -CREATE TABLE emp ( - salary int4, - manager name -) INHERITS (person) WITH OIDS; -CREATE TABLE student ( - gpa float8 -) INHERITS (person); -CREATE TABLE stud_emp ( - percent int4 -) INHERITS (emp, student); -NOTICE: merging multiple inherited definitions of column "name" -NOTICE: merging multiple inherited definitions of column "age" -NOTICE: merging multiple inherited definitions of column "location" -CREATE TABLE city ( - name name, - location box, - budget city_budget -); -CREATE TABLE dept ( - dname name, - mgrname text -); -CREATE TABLE slow_emp4000 ( - home_base box -); -CREATE TABLE fast_emp4000 ( - home_base box -); -CREATE TABLE road ( - name text, - thepath path -); -CREATE TABLE ihighway () INHERITS (road); -CREATE TABLE shighway ( - surface text -) INHERITS (road); -CREATE TABLE real_city ( - pop int4, - cname text, - outline path -); --- --- test the "star" operators a bit more thoroughly -- this time, --- throw in lots of NULL fields... --- --- a is the type root --- b and c inherit from a (one-level single inheritance) --- d inherits from b and c (two-level multiple inheritance) --- e inherits from c (two-level single inheritance) --- f inherits from e (three-level single inheritance) --- -CREATE TABLE a_star ( - class char, - a int4 -); -CREATE TABLE b_star ( - b text -) INHERITS (a_star); -CREATE TABLE c_star ( - c name -) INHERITS (a_star); -CREATE TABLE d_star ( - d float8 -) INHERITS (b_star, c_star); -NOTICE: merging multiple inherited definitions of column "class" -NOTICE: merging multiple inherited definitions of column "a" -CREATE TABLE e_star ( - e int2 -) INHERITS (c_star); -CREATE TABLE f_star ( - f polygon -) INHERITS (e_star); -CREATE TABLE aggtest ( - a int2, - b float4 -); -CREATE TABLE hash_i4_heap ( - seqno int4, - random int4 -); -CREATE TABLE hash_name_heap ( - seqno int4, - random name -); -CREATE TABLE hash_txt_heap ( - seqno int4, - random text -); -CREATE TABLE hash_f8_heap ( - seqno int4, - random float8 -); --- don't include the hash_ovfl_heap stuff in the distribution --- the data set is too large for what it's worth --- --- CREATE TABLE hash_ovfl_heap ( --- x int4, --- y int4 --- ); -CREATE TABLE bt_i4_heap ( - seqno int4, - random int4 -); -CREATE TABLE bt_name_heap ( - seqno name, - random int4 -); -CREATE TABLE bt_txt_heap ( - seqno text, - random int4 -); -CREATE TABLE bt_f8_heap ( - seqno float8, - random int4 -); -CREATE TABLE array_op_test ( - seqno int4, - i int4[], - t text[] -); -CREATE TABLE array_index_op_test ( - seqno int4, - i int4[], - t text[] -); -CREATE TABLE IF NOT EXISTS test_tsvector( - t text, - a tsvector -); -CREATE TABLE IF NOT EXISTS test_tsvector( - t text -); -NOTICE: relation "test_tsvector" already exists, skipping diff --git a/src/test/regress/expected/create_type.out b/src/test/regress/expected/create_type.out index e3d0058324..6dfe916985 100644 --- a/src/test/regress/expected/create_type.out +++ b/src/test/regress/expected/create_type.out @@ -107,8 +107,6 @@ ERROR: type "text_w_default" already exists DROP TYPE default_test_row CASCADE; NOTICE: drop cascades to function get_default_test() DROP TABLE default_test; --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; -- Check usage of typmod with a user-defined type -- (we have borrowed numeric's typmod functions) CREATE TEMP TABLE mytab (foo widget(42,13,7)); -- should fail diff --git a/src/test/regress/expected/create_view.out b/src/test/regress/expected/create_view.out index 50eb866337..4bcf137366 100644 --- a/src/test/regress/expected/create_view.out +++ b/src/test/regress/expected/create_view.out @@ -3,8 +3,6 @@ -- Virtual class definitions -- (this also tests the query rewrite system) -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE VIEW street AS SELECT r.name, r.thepath, c.cname AS cname FROM ONLY road r, real_city c @@ -83,11 +81,11 @@ CREATE VIEW temp_view_test.v2 AS SELECT * FROM base_table; -- should fail CREATE VIEW temp_view_test.v3_temp AS SELECT * FROM temp_table; NOTICE: view "v3_temp" will be a temporary view -ERROR: temporary tables cannot specify a schema name +ERROR: cannot create temporary relation in non-temporary schema -- should fail CREATE SCHEMA test_schema CREATE TEMP VIEW testview AS SELECT 1; -ERROR: temporary tables cannot specify a schema name +ERROR: cannot create temporary relation in non-temporary schema -- joins: if any of the join relations are temporary, the view -- should also be temporary -- should be non-temp diff --git a/src/test/regress/expected/domain.out b/src/test/regress/expected/domain.out index 208a775e6d..0a8d8db032 100644 --- a/src/test/regress/expected/domain.out +++ b/src/test/regress/expected/domain.out @@ -510,12 +510,12 @@ create type ddtest1 as (f1 posint); create table ddtest2(f1 ddtest1); insert into ddtest2 values(row(-1)); alter domain posint add constraint c1 check(value >= 0); -ERROR: cannot alter type "posint" because column "ddtest2"."f1" uses it +ERROR: cannot alter type "posint" because column "ddtest2.f1" uses it drop table ddtest2; create table ddtest2(f1 ddtest1[]); insert into ddtest2 values('{(-1)}'); alter domain posint add constraint c1 check(value >= 0); -ERROR: cannot alter type "posint" because column "ddtest2"."f1" uses it +ERROR: cannot alter type "posint" because column "ddtest2.f1" uses it drop table ddtest2; alter domain posint add constraint c1 check(value >= 0); create domain posint2 as posint check (value % 2 = 0); diff --git a/src/test/regress/expected/domain_1.out b/src/test/regress/expected/domain_1.out index 3bb96e2d01..51de726112 100644 --- a/src/test/regress/expected/domain_1.out +++ b/src/test/regress/expected/domain_1.out @@ -208,13 +208,13 @@ ERROR: null value in column "col3" violates not-null constraint INSERT INTO nulltest values ('a', 'b', 'c', NULL, 'd'); -- Good -- Test copy COPY nulltest FROM stdin; --fail -ERROR: Error while running COPY +ERROR: null value in column "col3" violates not-null constraint COPY nulltest FROM stdin; --fail ERROR: domain dcheck does not allow null values CONTEXT: COPY nulltest, line 1, column col5: null input -- Last row is bad COPY nulltest FROM stdin; -ERROR: Error while running COPY +ERROR: new row for relation "nulltest" violates check constraint "nulltest_col5_check" select * from nulltest order by 1, 2, 3, 4, 5; col1 | col2 | col3 | col4 | col5 ------+------+------+------+------ @@ -432,8 +432,6 @@ select 'yz23'::dtop; -- fail ERROR: value for domain dtop violates check constraint "dinter_check" select 'xz23'::dtop; -- fail ERROR: value for domain dtop violates check constraint "dtop_check" --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; create temp table dtest(f1 dtop); insert into dtest values('x123'); insert into dtest values('x1234'); -- fail, implicit coercion @@ -526,12 +524,12 @@ create type ddtest1 as (f1 posint); create table ddtest2(f1 ddtest1); insert into ddtest2 values(row(-1)); alter domain posint add constraint c1 check(value >= 0); -ERROR: cannot alter type "posint" because column "ddtest2"."f1" uses it +ERROR: cannot alter type "posint" because column "ddtest2.f1" uses it drop table ddtest2; create table ddtest2(f1 ddtest1[]); insert into ddtest2 values('{(-1)}'); alter domain posint add constraint c1 check(value >= 0); -ERROR: cannot alter type "posint" because column "ddtest2"."f1" uses it +ERROR: cannot alter type "posint" because column "ddtest2.f1" uses it drop table ddtest2; alter domain posint add constraint c1 check(value >= 0); create domain posint2 as posint check (value % 2 = 0); diff --git a/src/test/regress/expected/foreign_data.out b/src/test/regress/expected/foreign_data.out index e18eed8c1c..2d7e884fc1 100644 --- a/src/test/regress/expected/foreign_data.out +++ b/src/test/regress/expected/foreign_data.out @@ -631,25 +631,25 @@ DROP SERVER s7; -- CREATE FOREIGN TABLE CREATE SCHEMA foreign_schema; -CREATE SERVER sc FOREIGN DATA WRAPPER dummy; +CREATE SERVER s0 FOREIGN DATA WRAPPER dummy; CREATE FOREIGN TABLE ft1 (); -- ERROR ERROR: syntax error at or near ";" LINE 1: CREATE FOREIGN TABLE ft1 (); ^ CREATE FOREIGN TABLE ft1 () SERVER no_server; -- ERROR ERROR: server "no_server" does not exist -CREATE FOREIGN TABLE ft1 (c1 serial) SERVER sc; -- ERROR +CREATE FOREIGN TABLE ft1 (c1 serial) SERVER s0; -- ERROR NOTICE: CREATE FOREIGN TABLE will create implicit sequence "ft1_c1_seq" for serial column "ft1.c1" ERROR: default values on foreign tables are not supported -CREATE FOREIGN TABLE ft1 () SERVER sc WITH OIDS; -- ERROR +CREATE FOREIGN TABLE ft1 () SERVER s0 WITH OIDS; -- ERROR ERROR: syntax error at or near "WITH OIDS" -LINE 1: CREATE FOREIGN TABLE ft1 () SERVER sc WITH OIDS; +LINE 1: CREATE FOREIGN TABLE ft1 () SERVER s0 WITH OIDS; ^ CREATE FOREIGN TABLE ft1 ( c1 integer NOT NULL, c2 text, c3 date -) SERVER sc OPTIONS (delimiter ',', quote '"'); +) SERVER s0 OPTIONS (delimiter ',', quote '"'); COMMENT ON FOREIGN TABLE ft1 IS 'ft1'; COMMENT ON COLUMN ft1.c1 IS 'ft1.c1'; \d+ ft1 @@ -659,14 +659,14 @@ COMMENT ON COLUMN ft1.c1 IS 'ft1.c1'; c1 | integer | not null | plain | ft1.c1 c2 | text | | extended | c3 | date | | plain | -Server: sc +Server: s0 Has OIDs: no \det+ List of foreign tables Schema | Table | Server | Options --------+-------+--------+---------------------------- - public | ft1 | sc | {"delimiter=,","quote=\""} + public | ft1 | s0 | {"delimiter=,","quote=\""} (1 row) CREATE INDEX id_ft1_c2 ON ft1 (c2); -- ERROR @@ -694,14 +694,14 @@ ALTER FOREIGN TABLE ft1 ALTER COLUMN c5 DROP DEFAULT; -- ERROR ERROR: "ft1" is not a table or view ALTER FOREIGN TABLE ft1 ALTER COLUMN c6 SET NOT NULL; ALTER FOREIGN TABLE ft1 ALTER COLUMN c7 DROP NOT NULL; -ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE char(10) using '0'; -- ERROR -ERROR: ALTER TYPE USING is only supported on plain tables +ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE char(10) USING '0'; -- ERROR +ERROR: "ft1" is not a table ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE char(10); ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 SET DATA TYPE text; -- can't change the column type if it's used elsewhere CREATE TABLE use_ft1_column_type (x ft1); ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 SET DATA TYPE integer; -- ERROR -ERROR: cannot alter foreign table "ft1" because column "use_ft1_column_type"."x" uses its rowtype +ERROR: cannot alter foreign table "ft1" because column "use_ft1_column_type.x" uses its row type DROP TABLE use_ft1_column_type; ALTER FOREIGN TABLE ft1 ADD CONSTRAINT ft1_c9_check CHECK (c9 < 0); -- ERROR ERROR: "ft1" is not a table @@ -737,7 +737,7 @@ Foreign table "foreign_schema.foreign_table_1" c7 | integer | c8 | text | c10 | integer | -Server: sc +Server: s0 -- Information schema SELECT * FROM information_schema.foreign_data_wrappers ORDER BY 1, 2; @@ -757,11 +757,11 @@ SELECT * FROM information_schema.foreign_data_wrapper_options ORDER BY 1, 2, 3; SELECT * FROM information_schema.foreign_servers ORDER BY 1, 2; foreign_server_catalog | foreign_server_name | foreign_data_wrapper_catalog | foreign_data_wrapper_name | foreign_server_type | foreign_server_version | authorization_identifier ------------------------+---------------------+------------------------------+---------------------------+---------------------+------------------------+-------------------------- + regression | s0 | regression | dummy | | | foreign_data_user regression | s4 | regression | foo | oracle | | foreign_data_user regression | s5 | regression | foo | | 15.0 | regress_test_role regression | s6 | regression | foo | | 16.0 | regress_test_indirect regression | s8 | regression | postgresql | | | foreign_data_user - regression | sc | regression | dummy | | | foreign_data_user regression | t1 | regression | foo | | | regress_test_indirect regression | t2 | regression | foo | | | regress_test_role (7 rows) @@ -823,7 +823,7 @@ SELECT * FROM information_schema.role_usage_grants WHERE object_type LIKE 'FOREI SELECT * FROM information_schema.foreign_tables ORDER BY 1, 2, 3; foreign_table_catalog | foreign_table_schema | foreign_table_name | foreign_server_catalog | foreign_server_name -----------------------+----------------------+--------------------+------------------------+--------------------- - regression | foreign_schema | foreign_table_1 | regression | sc + regression | foreign_schema | foreign_table_1 | regression | s0 (1 row) SELECT * FROM information_schema.foreign_table_options ORDER BY 1, 2, 3, 4; @@ -1106,7 +1106,7 @@ DROP ROLE unprivileged_role; DROP ROLE regress_test_role2; DROP FOREIGN DATA WRAPPER postgresql CASCADE; DROP FOREIGN DATA WRAPPER dummy CASCADE; -NOTICE: drop cascades to server sc +NOTICE: drop cascades to server s0 \c DROP ROLE foreign_data_user; -- At this point we should have no wrappers, no servers, and no mappings. diff --git a/src/test/regress/expected/foreign_data_1.out b/src/test/regress/expected/foreign_data_1.out index 18e0aa4f8b..eb2cbd24a4 100644 --- a/src/test/regress/expected/foreign_data_1.out +++ b/src/test/regress/expected/foreign_data_1.out @@ -155,8 +155,7 @@ ERROR: foreign-data wrapper "foo" does not exist (0 rows) ALTER FOREIGN DATA WRAPPER foo OWNER TO regress_test_role; -- ERROR -ERROR: permission denied to change owner of foreign-data wrapper "foo" -HINT: The owner of a foreign-data wrapper must be a superuser. +ERROR: foreign-data wrapper "foo" does not exist ALTER FOREIGN DATA WRAPPER foo OWNER TO regress_test_role_super; ERROR: foreign-data wrapper "foo" does not exist ALTER ROLE regress_test_role_super NOSUPERUSER; @@ -574,7 +573,7 @@ List of user mappings -- CREATE FOREIGN TABLE CREATE SCHEMA foreign_schema; -CREATE SERVER sc FOREIGN DATA WRAPPER dummy; +CREATE SERVER s0 FOREIGN DATA WRAPPER dummy; ERROR: Postgres-XC does not support SERVER yet DETAIL: The feature is not currently supported CREATE FOREIGN TABLE ft1 (); -- ERROR @@ -583,19 +582,19 @@ LINE 1: CREATE FOREIGN TABLE ft1 (); ^ CREATE FOREIGN TABLE ft1 () SERVER no_server; -- ERROR ERROR: server "no_server" does not exist -CREATE FOREIGN TABLE ft1 (c1 serial) SERVER sc; -- ERROR +CREATE FOREIGN TABLE ft1 (c1 serial) SERVER s0; -- ERROR NOTICE: CREATE FOREIGN TABLE will create implicit sequence "ft1_c1_seq" for serial column "ft1.c1" ERROR: default values on foreign tables are not supported -CREATE FOREIGN TABLE ft1 () SERVER sc WITH OIDS; -- ERROR +CREATE FOREIGN TABLE ft1 () SERVER s0 WITH OIDS; -- ERROR ERROR: syntax error at or near "WITH OIDS" -LINE 1: CREATE FOREIGN TABLE ft1 () SERVER sc WITH OIDS; +LINE 1: CREATE FOREIGN TABLE ft1 () SERVER s0 WITH OIDS; ^ CREATE FOREIGN TABLE ft1 ( c1 integer NOT NULL, c2 text, c3 date -) SERVER sc OPTIONS (delimiter ',', quote '"'); -ERROR: server "sc" does not exist +) SERVER s0 OPTIONS (delimiter ',', quote '"'); +ERROR: server "s0" does not exist COMMENT ON FOREIGN TABLE ft1 IS 'ft1'; ERROR: relation "ft1" does not exist COMMENT ON COLUMN ft1.c1 IS 'ft1.c1'; @@ -648,7 +647,7 @@ ALTER FOREIGN TABLE ft1 ALTER COLUMN c6 SET NOT NULL; ERROR: relation "ft1" does not exist ALTER FOREIGN TABLE ft1 ALTER COLUMN c7 DROP NOT NULL; ERROR: relation "ft1" does not exist -ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE char(10) using '0'; -- ERROR +ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE char(10) USING '0'; -- ERROR ERROR: relation "ft1" does not exist ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE char(10); ERROR: relation "ft1" does not exist @@ -857,8 +856,7 @@ ALTER FOREIGN DATA WRAPPER foo OPTIONS (gotcha 'true'); -- ERROR ERROR: permission denied to alter foreign-data wrapper "foo" HINT: Must be superuser to alter a foreign-data wrapper. ALTER FOREIGN DATA WRAPPER foo OWNER TO unprivileged_role; -- ERROR -ERROR: permission denied to change owner of foreign-data wrapper "foo" -HINT: Must be superuser to change owner of a foreign-data wrapper. +ERROR: foreign-data wrapper "foo" does not exist DROP FOREIGN DATA WRAPPER foo; -- ERROR ERROR: permission denied to drop foreign-data wrapper "foo" HINT: Must be superuser to drop a foreign-data wrapper. diff --git a/src/test/regress/expected/foreign_key.out b/src/test/regress/expected/foreign_key.out index 2b762da5d8..bee571236a 100644 --- a/src/test/regress/expected/foreign_key.out +++ b/src/test/regress/expected/foreign_key.out @@ -1089,8 +1089,6 @@ DETAIL: Key (fk)=(200) is not present in table "pktable". DROP TABLE pktable, fktable; -- test notice about expensive referential integrity checks, -- where the index cannot be used because of type incompatibilities. --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE pktable ( id1 INT4 PRIMARY KEY, id2 VARCHAR(4) UNIQUE, @@ -1289,3 +1287,35 @@ SELECT * FROM tasks ORDER BY 1, 2, 3,4; (3 rows) COMMIT; +-- +-- Test self-referential FK with CASCADE (bug #6268) +-- +create temp table selfref ( + a int primary key, + b int, + foreign key (b) references selfref (a) + on update cascade on delete cascade +); +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "selfref_pkey" for table "selfref" +insert into selfref (a, b) +values + (0, 0), + (1, 1); +begin; + update selfref set a = 123 where a = 0; + select a, b from selfref; + a | b +-----+----- + 1 | 1 + 123 | 123 +(2 rows) + + update selfref set a = 456 where a = 123; + select a, b from selfref; + a | b +-----+----- + 1 | 1 + 456 | 456 +(2 rows) + +commit; diff --git a/src/test/regress/expected/foreign_key_1.out b/src/test/regress/expected/foreign_key_1.out index 2b1e54b145..4143322752 100644 --- a/src/test/regress/expected/foreign_key_1.out +++ b/src/test/regress/expected/foreign_key_1.out @@ -1087,8 +1087,6 @@ DETAIL: Key (fk)=(200) is not present in table "pktable". DROP TABLE pktable, fktable; -- test notice about expensive referential integrity checks, -- where the index cannot be used because of type incompatibilities. --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE pktable ( id1 INT4 PRIMARY KEY, id2 VARCHAR(4) UNIQUE, @@ -1290,3 +1288,35 @@ SELECT * FROM tasks ORDER BY 1, 2, 3,4; (3 rows) COMMIT; +-- +-- Test self-referential FK with CASCADE (bug #6268) +-- +create temp table selfref ( + a int primary key, + b int, + foreign key (b) references selfref (a) + on update cascade on delete cascade +) DISTRIBUTE BY REPLICATION; +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "selfref_pkey" for table "selfref" +insert into selfref (a, b) +values + (0, 0), + (1, 1); +begin; + update selfref set a = 123 where a = 0; + select a, b from selfref; + a | b +-----+----- + 1 | 1 + 123 | 123 +(2 rows) + + update selfref set a = 456 where a = 123; + select a, b from selfref; + a | b +-----+----- + 1 | 1 + 456 | 456 +(2 rows) + +commit; diff --git a/src/test/regress/expected/functional_deps_1.out b/src/test/regress/expected/functional_deps_1.out index 2230bcb28b..8848e26560 100644 --- a/src/test/regress/expected/functional_deps_1.out +++ b/src/test/regress/expected/functional_deps_1.out @@ -1,6 +1,4 @@ -- from http://www.depesz.com/index.php/2010/04/19/getting-unique-elements/ --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE articles ( id int CONSTRAINT articles_pkey PRIMARY KEY, keywords text, diff --git a/src/test/regress/expected/guc.out b/src/test/regress/expected/guc.out index 98671a2bcd..ef0d807011 100644 --- a/src/test/regress/expected/guc.out +++ b/src/test/regress/expected/guc.out @@ -700,3 +700,19 @@ select myfunc(1), current_setting('work_mem'); 2MB | 2MB (1 row) +-- Normally, CREATE FUNCTION should complain about invalid values in +-- function SET options; but not if check_function_bodies is off, +-- because that creates ordering hazards for pg_dump +create function func_with_bad_set() returns int as $$ select 1 $$ +language sql +set default_text_search_config = no_such_config; +NOTICE: text search configuration "no_such_config" does not exist +ERROR: invalid value for parameter "default_text_search_config": "no_such_config" +set check_function_bodies = off; +create function func_with_bad_set() returns int as $$ select 1 $$ +language sql +set default_text_search_config = no_such_config; +NOTICE: text search configuration "no_such_config" does not exist +select func_with_bad_set(); +ERROR: invalid value for parameter "default_text_search_config": "no_such_config" +reset check_function_bodies; diff --git a/src/test/regress/expected/guc_1.out b/src/test/regress/expected/guc_1.out index 07dea9d72f..65671c606b 100644 --- a/src/test/regress/expected/guc_1.out +++ b/src/test/regress/expected/guc_1.out @@ -415,8 +415,6 @@ SELECT '2006-08-13 12:34:56'::timestamptz; -- -- Test DISCARD TEMP -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE reset_test ( data text ) ON COMMIT DELETE ROWS; SELECT relname FROM pg_class WHERE relname = 'reset_test'; relname @@ -613,3 +611,19 @@ select myfunc(1), current_setting('work_mem'); 2MB | 2MB (1 row) +-- Normally, CREATE FUNCTION should complain about invalid values in +-- function SET options; but not if check_function_bodies is off, +-- because that creates ordering hazards for pg_dump +create function func_with_bad_set() returns int as $$ select 1 $$ +language sql +set default_text_search_config = no_such_config; +NOTICE: text search configuration "no_such_config" does not exist +ERROR: invalid value for parameter "default_text_search_config": "no_such_config" +set check_function_bodies = off; +create function func_with_bad_set() returns int as $$ select 1 $$ +language sql +set default_text_search_config = no_such_config; +NOTICE: text search configuration "no_such_config" does not exist +select func_with_bad_set(); +ERROR: invalid value for parameter "default_text_search_config": "no_such_config" +reset check_function_bodies; diff --git a/src/test/regress/expected/horology.out b/src/test/regress/expected/horology.out index e4aac3df1a..1d4787b3ed 100644 --- a/src/test/regress/expected/horology.out +++ b/src/test/regress/expected/horology.out @@ -2899,3 +2899,33 @@ DETAIL: Value must be an integer. SELECT to_timestamp('10000000000', 'FMYYYY'); ERROR: value for "YYYY" in source string is out of range DETAIL: Value must be in the range -2147483648 to 2147483647. +-- +-- Check behavior with SQL-style fixed-GMT-offset time zone (cf bug #8572) +-- +SET TIME ZONE 'America/New_York'; +SET TIME ZONE '-1.5'; +SHOW TIME ZONE; + TimeZone +---------------------- + @ 1 hour 30 mins ago +(1 row) + +SELECT '2012-12-12 12:00'::timestamptz; + timestamptz +--------------------------------- + Wed Dec 12 12:00:00 2012 -01:30 +(1 row) + +SELECT '2012-12-12 12:00 America/New_York'::timestamptz; + timestamptz +--------------------------------- + Wed Dec 12 15:30:00 2012 -01:30 +(1 row) + +SELECT to_char('2012-12-12 12:00'::timestamptz, 'YYYY-MM-DD HH:MI:SS TZ'); + to_char +---------------------- + 2012-12-12 12:00:00 +(1 row) + +RESET TIME ZONE; diff --git a/src/test/regress/expected/inherit.out b/src/test/regress/expected/inherit.out index 4eb01332c3..9ac5bed4e4 100644 --- a/src/test/regress/expected/inherit.out +++ b/src/test/regress/expected/inherit.out @@ -1,8 +1,6 @@ -- -- Test inheritance features -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TABLE a (aa TEXT) distribute by round robin; CREATE TABLE b (bb TEXT) INHERITS (a) distribute by round robin; CREATE TABLE c (cc TEXT) INHERITS (a) distribute by round robin; @@ -1758,6 +1756,28 @@ select * from matest0 order by 1-id; 1 | Test 1 (6 rows) +explain (verbose, costs off) select min(1-id) from matest0; + QUERY PLAN +------------------------------------------------ + Aggregate + Output: min((1 - public.matest0.id)) + -> Append + -> Seq Scan on public.matest0 + Output: public.matest0.id + -> Seq Scan on public.matest1 matest0 + Output: public.matest0.id + -> Seq Scan on public.matest2 matest0 + Output: public.matest0.id + -> Seq Scan on public.matest3 matest0 + Output: public.matest0.id +(11 rows) + +select min(1-id) from matest0; + min +----- + -5 +(1 row) + reset enable_indexscan; set enable_seqscan = off; -- plan with fewest seqscans should be merge explain (verbose, costs off, nodes off) select * from matest0 order by 1-id; @@ -1794,9 +1814,157 @@ select * from matest0 order by 1-id; 1 | Test 1 (6 rows) +explain (verbose, costs off) select min(1-id) from matest0; + QUERY PLAN +-------------------------------------------------------------------------------------- + Result + Output: $0 + InitPlan 1 (returns $0) + -> Limit + Output: ((1 - public.matest0.id)) + -> Result + Output: ((1 - public.matest0.id)) + -> Merge Append + Sort Key: ((1 - public.matest0.id)) + -> Index Scan using matest0i on public.matest0 + Output: public.matest0.id, (1 - public.matest0.id) + Index Cond: ((1 - public.matest0.id) IS NOT NULL) + -> Index Scan using matest1i on public.matest1 matest0 + Output: public.matest0.id, (1 - public.matest0.id) + Index Cond: ((1 - public.matest0.id) IS NOT NULL) + -> Sort + Output: public.matest0.id, ((1 - public.matest0.id)) + Sort Key: ((1 - public.matest0.id)) + -> Seq Scan on public.matest2 matest0 + Output: public.matest0.id, (1 - public.matest0.id) + Filter: ((1 - public.matest0.id) IS NOT NULL) + -> Index Scan using matest3i on public.matest3 matest0 + Output: public.matest0.id, (1 - public.matest0.id) + Index Cond: ((1 - public.matest0.id) IS NOT NULL) +(24 rows) + +select min(1-id) from matest0; + min +----- + -5 +(1 row) + reset enable_seqscan; drop table matest0 cascade; NOTICE: drop cascades to 3 other objects DETAIL: drop cascades to table matest1 drop cascades to table matest2 drop cascades to table matest3 +-- +-- Test merge-append for UNION ALL append relations +-- +set enable_seqscan = off; +set enable_indexscan = on; +set enable_bitmapscan = off; +-- Check handling of duplicated, constant, or volatile targetlist items +explain (costs off) +SELECT thousand, tenthous FROM tenk1 +UNION ALL +SELECT thousand, thousand FROM tenk1 +ORDER BY thousand, tenthous; + QUERY PLAN +---------------------------------------------------------------------- + Result + -> Merge Append + Sort Key: public.tenk1.thousand, public.tenk1.tenthous + -> Index Scan using tenk1_thous_tenthous on tenk1 + -> Sort + Sort Key: public.tenk1.thousand, public.tenk1.thousand + -> Seq Scan on tenk1 +(7 rows) + +explain (costs off) +SELECT thousand, tenthous FROM tenk1 +UNION ALL +SELECT 42, 42 FROM tenk1 +ORDER BY thousand, tenthous; + QUERY PLAN +---------------------------------------------------------------- + Result + -> Merge Append + Sort Key: public.tenk1.thousand, public.tenk1.tenthous + -> Index Scan using tenk1_thous_tenthous on tenk1 + -> Sort + Sort Key: (42), (42) + -> Seq Scan on tenk1 +(7 rows) + +explain (costs off) +SELECT thousand, tenthous FROM tenk1 +UNION ALL +SELECT thousand, random()::integer FROM tenk1 +ORDER BY thousand, tenthous; + QUERY PLAN +---------------------------------------------------------------------- + Result + -> Merge Append + Sort Key: public.tenk1.thousand, public.tenk1.tenthous + -> Index Scan using tenk1_thous_tenthous on tenk1 + -> Sort + Sort Key: public.tenk1.thousand, ((random())::integer) + -> Seq Scan on tenk1 +(7 rows) + +-- Check min/max aggregate optimization +explain (costs off) +SELECT min(x) FROM + (SELECT unique1 AS x FROM tenk1 a + UNION ALL + SELECT unique2 AS x FROM tenk1 b) s; + QUERY PLAN +--------------------------------------------------------------- + Result + InitPlan 1 (returns $0) + -> Limit + -> Merge Append + Sort Key: a.unique1 + -> Index Scan using tenk1_unique1 on tenk1 a + Index Cond: (unique1 IS NOT NULL) + -> Index Scan using tenk1_unique2 on tenk1 b + Index Cond: (unique2 IS NOT NULL) +(9 rows) + +explain (costs off) +SELECT min(y) FROM + (SELECT unique1 AS x, unique1 AS y FROM tenk1 a + UNION ALL + SELECT unique2 AS x, unique2 AS y FROM tenk1 b) s; + QUERY PLAN +--------------------------------------------------------------- + Result + InitPlan 1 (returns $0) + -> Limit + -> Merge Append + Sort Key: a.unique1 + -> Index Scan using tenk1_unique1 on tenk1 a + Index Cond: (unique1 IS NOT NULL) + -> Index Scan using tenk1_unique2 on tenk1 b + Index Cond: (unique2 IS NOT NULL) +(9 rows) + +-- XXX planner doesn't recognize that index on unique2 is sufficiently sorted +explain (costs off) +SELECT x, y FROM + (SELECT thousand AS x, tenthous AS y FROM tenk1 a + UNION ALL + SELECT unique2 AS x, unique2 AS y FROM tenk1 b) s +ORDER BY x, y; + QUERY PLAN +-------------------------------------------------------------- + Result + -> Merge Append + Sort Key: a.thousand, a.tenthous + -> Index Scan using tenk1_thous_tenthous on tenk1 a + -> Sort + Sort Key: b.unique2, b.unique2 + -> Seq Scan on tenk1 b +(7 rows) + +reset enable_seqscan; +reset enable_indexscan; +reset enable_bitmapscan; diff --git a/src/test/regress/expected/inherit_1.out b/src/test/regress/expected/inherit_1.out index 381580bf34..4a07bc0777 100644 --- a/src/test/regress/expected/inherit_1.out +++ b/src/test/regress/expected/inherit_1.out @@ -1,8 +1,6 @@ -- -- Test inheritance features -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TABLE a (aa TEXT) distribute by round robin; CREATE TABLE b (bb TEXT) INHERITS (a) distribute by round robin; CREATE TABLE c (cc TEXT) INHERITS (a) distribute by round robin; @@ -1422,7 +1420,7 @@ insert into matest2 (name) values ('Test 4'); insert into matest3 (name) values ('Test 5'); insert into matest3 (name) values ('Test 6'); set enable_indexscan = off; -- force use of seqscan/sort, so no merge -explain (verbose, costs off, nodes off) select * from matest0 order by 1-id; +explain (verbose, costs off, nodes off, num_nodes off) select * from matest0 order by 1-id; QUERY PLAN ---------------------------------------------------------------------------------------- Sort @@ -1456,6 +1454,32 @@ select * from matest0 order by 1-id; 1 | Test 1 (6 rows) +explain (verbose, costs off, nodes off, num_nodes off) select min(1-id) from matest0; + QUERY PLAN +---------------------------------------------------------------------------- + Aggregate + Output: min((1 - public.matest0.id)) + -> Append + -> Data Node Scan on matest0 + Output: public.matest0.id + Remote query: SELECT id FROM ONLY matest0 WHERE true + -> Data Node Scan on matest0 + Output: public.matest0.id + Remote query: SELECT id FROM ONLY matest1 matest0 WHERE true + -> Data Node Scan on matest0 + Output: public.matest0.id + Remote query: SELECT id FROM ONLY matest2 matest0 WHERE true + -> Data Node Scan on matest0 + Output: public.matest0.id + Remote query: SELECT id FROM ONLY matest3 matest0 WHERE true +(15 rows) + +select min(1-id) from matest0; + min +----- + -5 +(1 row) + reset enable_indexscan; set enable_seqscan = off; -- plan with fewest seqscans should be merge explain (verbose, costs off, nodes off) select * from matest0 order by 1-id; @@ -1492,9 +1516,171 @@ select * from matest0 order by 1-id; 1 | Test 1 (6 rows) +explain (verbose, costs off, nodes off, num_nodes off) select min(1-id) from matest0; + QUERY PLAN +---------------------------------------------------------------------------- + Aggregate + Output: min((1 - public.matest0.id)) + -> Append + -> Data Node Scan on matest0 + Output: public.matest0.id + Remote query: SELECT id FROM ONLY matest0 WHERE true + -> Data Node Scan on matest0 + Output: public.matest0.id + Remote query: SELECT id FROM ONLY matest1 matest0 WHERE true + -> Data Node Scan on matest0 + Output: public.matest0.id + Remote query: SELECT id FROM ONLY matest2 matest0 WHERE true + -> Data Node Scan on matest0 + Output: public.matest0.id + Remote query: SELECT id FROM ONLY matest3 matest0 WHERE true +(15 rows) + +select min(1-id) from matest0; + min +----- + -5 +(1 row) + reset enable_seqscan; drop table matest0 cascade; NOTICE: drop cascades to 3 other objects DETAIL: drop cascades to table matest1 drop cascades to table matest2 drop cascades to table matest3 +-- +-- Test merge-append for UNION ALL append relations +-- +set enable_seqscan = off; +set enable_indexscan = on; +set enable_bitmapscan = off; +-- Check handling of duplicated, constant, or volatile targetlist items +explain (num_nodes off, nodes off, verbose on, costs off) +SELECT thousand, tenthous FROM tenk1 +UNION ALL +SELECT thousand, thousand FROM tenk1 +ORDER BY thousand, tenthous; + QUERY PLAN +---------------------------------------------------------------------------------------- + Sort + Output: public.tenk1.thousand, public.tenk1.tenthous + Sort Key: public.tenk1.thousand, public.tenk1.tenthous + -> Result + Output: public.tenk1.thousand, public.tenk1.tenthous + -> Append + -> Data Node Scan on tenk1 + Output: public.tenk1.thousand, public.tenk1.tenthous + Remote query: SELECT thousand, tenthous FROM ONLY tenk1 WHERE true + -> Data Node Scan on tenk1 + Output: public.tenk1.thousand, public.tenk1.thousand + Remote query: SELECT thousand, thousand FROM ONLY tenk1 WHERE true +(12 rows) + +explain (num_nodes off, nodes off, verbose on, costs off) +SELECT thousand, tenthous FROM tenk1 +UNION ALL +SELECT 42, 42 FROM tenk1 +ORDER BY thousand, tenthous; + QUERY PLAN +---------------------------------------------------------------------------------------- + Sort + Output: public.tenk1.thousand, public.tenk1.tenthous + Sort Key: public.tenk1.thousand, public.tenk1.tenthous + -> Result + Output: public.tenk1.thousand, public.tenk1.tenthous + -> Append + -> Data Node Scan on tenk1 + Output: public.tenk1.thousand, public.tenk1.tenthous + Remote query: SELECT thousand, tenthous FROM ONLY tenk1 WHERE true + -> Result + Output: 42, 42 + -> Data Node Scan on tenk1 + Remote query: SELECT * FROM ONLY tenk1 WHERE true +(13 rows) + +explain (num_nodes off, nodes off, verbose on, costs off) +SELECT thousand, tenthous FROM tenk1 +UNION ALL +SELECT thousand, random()::integer FROM tenk1 +ORDER BY thousand, tenthous; + QUERY PLAN +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Sort + Output: public.tenk1.thousand, public.tenk1.tenthous + Sort Key: public.tenk1.thousand, public.tenk1.tenthous + -> Result + Output: public.tenk1.thousand, public.tenk1.tenthous + -> Append + -> Data Node Scan on tenk1 + Output: public.tenk1.thousand, public.tenk1.tenthous + Remote query: SELECT thousand, tenthous FROM ONLY tenk1 WHERE true + -> Result + Output: public.tenk1.thousand, (random())::integer + -> Data Node Scan on tenk1 + Output: public.tenk1.unique1, public.tenk1.unique2, public.tenk1.two, public.tenk1.four, public.tenk1.ten, public.tenk1.twenty, public.tenk1.hundred, public.tenk1.thousand, public.tenk1.twothousand, public.tenk1.fivethous, public.tenk1.tenthous, public.tenk1.odd, public.tenk1.even, public.tenk1.stringu1, public.tenk1.stringu2, public.tenk1.string4 + Remote query: SELECT unique1, unique2, two, four, ten, twenty, hundred, thousand, twothousand, fivethous, tenthous, odd, even, stringu1, stringu2, string4 FROM ONLY tenk1 WHERE true +(14 rows) + +-- Check min/max aggregate optimization +explain (num_nodes off, nodes off, verbose on, costs off) +SELECT min(x) FROM + (SELECT unique1 AS x FROM tenk1 a + UNION ALL + SELECT unique2 AS x FROM tenk1 b) s; + QUERY PLAN +------------------------------------------------------------------------- + Aggregate + Output: min(a.unique1) + -> Append + -> Data Node Scan on a + Output: a.unique1 + Remote query: SELECT unique1 FROM ONLY tenk1 a WHERE true + -> Data Node Scan on b + Output: b.unique2 + Remote query: SELECT unique2 FROM ONLY tenk1 b WHERE true +(9 rows) + +explain (num_nodes off, nodes off, verbose on, costs off) +SELECT min(y) FROM + (SELECT unique1 AS x, unique1 AS y FROM tenk1 a + UNION ALL + SELECT unique2 AS x, unique2 AS y FROM tenk1 b) s; + QUERY PLAN +------------------------------------------------------------------------- + Aggregate + Output: min(a.unique1) + -> Append + -> Data Node Scan on a + Output: a.unique1 + Remote query: SELECT unique1 FROM ONLY tenk1 a WHERE true + -> Data Node Scan on b + Output: b.unique2 + Remote query: SELECT unique2 FROM ONLY tenk1 b WHERE true +(9 rows) + +-- XXX planner doesn't recognize that index on unique2 is sufficiently sorted +explain (num_nodes off, nodes off, verbose on, costs off) +SELECT x, y FROM + (SELECT thousand AS x, tenthous AS y FROM tenk1 a + UNION ALL + SELECT unique2 AS x, unique2 AS y FROM tenk1 b) s +ORDER BY x, y; + QUERY PLAN +------------------------------------------------------------------------------------------ + Sort + Output: a.thousand, a.tenthous + Sort Key: a.thousand, a.tenthous + -> Result + Output: a.thousand, a.tenthous + -> Append + -> Data Node Scan on a + Output: a.thousand, a.tenthous + Remote query: SELECT thousand, tenthous FROM ONLY tenk1 a WHERE true + -> Data Node Scan on b + Output: b.unique2, b.unique2 + Remote query: SELECT unique2, unique2 FROM ONLY tenk1 b WHERE true +(12 rows) + +reset enable_seqscan; +reset enable_indexscan; +reset enable_bitmapscan; diff --git a/src/test/regress/expected/int2.out b/src/test/regress/expected/int2.out index 7a5ea163a4..cf75497aa2 100644 --- a/src/test/regress/expected/int2.out +++ b/src/test/regress/expected/int2.out @@ -255,3 +255,14 @@ SELECT ((-1::int2<<15)+1::int2)::text; -32767 (1 row) +-- check sane handling of INT16_MIN overflow cases +SELECT (-32768)::int2 * (-1)::int2; +ERROR: smallint out of range +SELECT (-32768)::int2 / (-1)::int2; +ERROR: smallint out of range +SELECT (-32768)::int2 % (-1)::int2; + ?column? +---------- + 0 +(1 row) + diff --git a/src/test/regress/expected/int4.out b/src/test/regress/expected/int4.out index ac4051cdb3..ab53d53c84 100644 --- a/src/test/regress/expected/int4.out +++ b/src/test/regress/expected/int4.out @@ -41,14 +41,14 @@ INSERT INTO INT4_TBL(f1) VALUES (''); ERROR: invalid input syntax for integer: "" LINE 1: INSERT INTO INT4_TBL(f1) VALUES (''); ^ -SELECT '' AS five, * FROM INT4_TBL; +SELECT '' AS five, * FROM INT4_TBL ORDER BY f1; five | f1 ------+------------- + | -2147483647 + | -123456 | 0 | 123456 - | -123456 | 2147483647 - | -2147483647 (5 rows) SELECT '' AS four, i.* FROM INT4_TBL i WHERE i.f1 <> int2 '0' ORDER BY f1; @@ -342,3 +342,24 @@ SELECT ((-1::int4<<31)+1)::text; -2147483647 (1 row) +-- check sane handling of INT_MIN overflow cases +SELECT (-2147483648)::int4 * (-1)::int4; +ERROR: integer out of range +SELECT (-2147483648)::int4 / (-1)::int4; +ERROR: integer out of range +SELECT (-2147483648)::int4 % (-1)::int4; + ?column? +---------- + 0 +(1 row) + +SELECT (-2147483648)::int4 * (-1)::int2; +ERROR: integer out of range +SELECT (-2147483648)::int4 / (-1)::int2; +ERROR: integer out of range +SELECT (-2147483648)::int4 % (-1)::int2; + ?column? +---------- + 0 +(1 row) + diff --git a/src/test/regress/expected/int8-exp-three-digits.out b/src/test/regress/expected/int8-exp-three-digits.out index b523bfcc01..a1c70ed3e8 100644 --- a/src/test/regress/expected/int8-exp-three-digits.out +++ b/src/test/regress/expected/int8-exp-three-digits.out @@ -815,3 +815,34 @@ SELECT ((-1::int8<<63)+1)::text; -9223372036854775807 (1 row) +-- check sane handling of INT64_MIN overflow cases +SELECT (-9223372036854775808)::int8 * (-1)::int8; +ERROR: bigint out of range +SELECT (-9223372036854775808)::int8 / (-1)::int8; +ERROR: bigint out of range +SELECT (-9223372036854775808)::int8 % (-1)::int8; + ?column? +---------- + 0 +(1 row) + +SELECT (-9223372036854775808)::int8 * (-1)::int4; +ERROR: bigint out of range +SELECT (-9223372036854775808)::int8 / (-1)::int4; +ERROR: bigint out of range +SELECT (-9223372036854775808)::int8 % (-1)::int4; + ?column? +---------- + 0 +(1 row) + +SELECT (-9223372036854775808)::int8 * (-1)::int2; +ERROR: bigint out of range +SELECT (-9223372036854775808)::int8 / (-1)::int2; +ERROR: bigint out of range +SELECT (-9223372036854775808)::int8 % (-1)::int2; + ?column? +---------- + 0 +(1 row) + diff --git a/src/test/regress/expected/int8.out b/src/test/regress/expected/int8.out index 7cc02c56b8..42e39494c3 100644 --- a/src/test/regress/expected/int8.out +++ b/src/test/regress/expected/int8.out @@ -815,3 +815,34 @@ SELECT ((-1::int8<<63)+1)::text; -9223372036854775807 (1 row) +-- check sane handling of INT64_MIN overflow cases +SELECT (-9223372036854775808)::int8 * (-1)::int8; +ERROR: bigint out of range +SELECT (-9223372036854775808)::int8 / (-1)::int8; +ERROR: bigint out of range +SELECT (-9223372036854775808)::int8 % (-1)::int8; + ?column? +---------- + 0 +(1 row) + +SELECT (-9223372036854775808)::int8 * (-1)::int4; +ERROR: bigint out of range +SELECT (-9223372036854775808)::int8 / (-1)::int4; +ERROR: bigint out of range +SELECT (-9223372036854775808)::int8 % (-1)::int4; + ?column? +---------- + 0 +(1 row) + +SELECT (-9223372036854775808)::int8 * (-1)::int2; +ERROR: bigint out of range +SELECT (-9223372036854775808)::int8 / (-1)::int2; +ERROR: bigint out of range +SELECT (-9223372036854775808)::int8 % (-1)::int2; + ?column? +---------- + 0 +(1 row) + diff --git a/src/test/regress/expected/interval.out b/src/test/regress/expected/interval.out index 2a0e34d0a6..5b32987d93 100644 --- a/src/test/regress/expected/interval.out +++ b/src/test/regress/expected/interval.out @@ -306,6 +306,13 @@ select '4 millenniums 5 centuries 4 decades 1 year 4 months 4 days 17 minutes 31 @ 4541 years 4 mons 4 days 17 mins 31 secs (1 row) +-- test long interval output +select '100000000y 10mon -1000000000d -1000000000h -10min -10.000001s ago'::interval; + interval +------------------------------------------------------------------------------------------- + @ 100000000 years 10 mons -1000000000 days -1000000000 hours -10 mins -10.000001 secs ago +(1 row) + -- test justify_hours() and justify_days() SELECT justify_hours(interval '6 months 3 days 52 hours 3 minutes 2 seconds') as "6 mons 5 days 4 hours 3 mins 2 seconds"; 6 mons 5 days 4 hours 3 mins 2 seconds @@ -545,6 +552,30 @@ SELECT interval '1 2:03:04' minute to second; 1 day 02:03:04 (1 row) +SELECT interval '1 +2:03' minute to second; + interval +---------------- + 1 day 00:02:03 +(1 row) + +SELECT interval '1 +2:03:04' minute to second; + interval +---------------- + 1 day 02:03:04 +(1 row) + +SELECT interval '1 -2:03' minute to second; + interval +----------------- + 1 day -00:02:03 +(1 row) + +SELECT interval '1 -2:03:04' minute to second; + interval +----------------- + 1 day -02:03:04 +(1 row) + SELECT interval '123 11' day to hour; -- ok interval ------------------- @@ -559,6 +590,10 @@ SELECT interval '123 11'; -- not ok, too ambiguous ERROR: invalid input syntax for type interval: "123 11" LINE 1: SELECT interval '123 11'; ^ +SELECT interval '123 2:03 -2:04'; -- not ok, redundant hh:mm fields +ERROR: invalid input syntax for type interval: "123 2:03 -2:04" +LINE 1: SELECT interval '123 2:03 -2:04'; + ^ -- test syntaxes for restricted precision SELECT interval(0) '1 day 01:23:45.6789'; interval diff --git a/src/test/regress/expected/join.out b/src/test/regress/expected/join.out index 836b2d0216..3755f529e4 100644 --- a/src/test/regress/expected/join.out +++ b/src/test/regress/expected/join.out @@ -2036,7 +2036,6 @@ NATURAL FULL JOIN (4 rows) -- Test for propagation of nullability constraints into sub-joins -SET enforce_two_phase_commit TO off; create temp table x (x1 int, x2 int); insert into x values (1,11); insert into x values (2,22); @@ -2531,6 +2530,135 @@ order by c.name; (3 rows) rollback; +-- +-- test incorrect handling of placeholders that only appear in targetlists, +-- per bug #6154 +-- +SELECT * FROM +( SELECT 1 as key1 ) sub1 +LEFT JOIN +( SELECT sub3.key3, sub4.value2, COALESCE(sub4.value2, 66) as value3 FROM + ( SELECT 1 as key3 ) sub3 + LEFT JOIN + ( SELECT sub5.key5, COALESCE(sub6.value1, 1) as value2 FROM + ( SELECT 1 as key5 ) sub5 + LEFT JOIN + ( SELECT 2 as key6, 42 as value1 ) sub6 + ON sub5.key5 = sub6.key6 + ) sub4 + ON sub4.key5 = sub3.key3 +) sub2 +ON sub1.key1 = sub2.key3; + key1 | key3 | value2 | value3 +------+------+--------+-------- + 1 | 1 | 1 | 1 +(1 row) + +-- test the path using join aliases, too +SELECT * FROM +( SELECT 1 as key1 ) sub1 +LEFT JOIN +( SELECT sub3.key3, value2, COALESCE(value2, 66) as value3 FROM + ( SELECT 1 as key3 ) sub3 + LEFT JOIN + ( SELECT sub5.key5, COALESCE(sub6.value1, 1) as value2 FROM + ( SELECT 1 as key5 ) sub5 + LEFT JOIN + ( SELECT 2 as key6, 42 as value1 ) sub6 + ON sub5.key5 = sub6.key6 + ) sub4 + ON sub4.key5 = sub3.key3 +) sub2 +ON sub1.key1 = sub2.key3; + key1 | key3 | value2 | value3 +------+------+--------+-------- + 1 | 1 | 1 | 1 +(1 row) + +-- +-- test case where a PlaceHolderVar is used as a nestloop parameter +-- +EXPLAIN (COSTS OFF) +SELECT qq, unique1 + FROM + ( SELECT COALESCE(q1, 0) AS qq FROM int8_tbl a ) AS ss1 + FULL OUTER JOIN + ( SELECT COALESCE(q2, -1) AS qq FROM int8_tbl b ) AS ss2 + USING (qq) + INNER JOIN tenk1 c ON qq = unique2; + QUERY PLAN +------------------------------------------------------------------------------------------------------- + Nested Loop + -> Hash Full Join + Hash Cond: (COALESCE(a.q1, 0::bigint) = COALESCE(b.q2, (-1)::bigint)) + -> Seq Scan on int8_tbl a + -> Hash + -> Seq Scan on int8_tbl b + -> Index Scan using tenk1_unique2 on tenk1 c + Index Cond: (unique2 = COALESCE((COALESCE(a.q1, 0::bigint)), (COALESCE(b.q2, (-1)::bigint)))) +(8 rows) + +SELECT qq, unique1 + FROM + ( SELECT COALESCE(q1, 0) AS qq FROM int8_tbl a ) AS ss1 + FULL OUTER JOIN + ( SELECT COALESCE(q2, -1) AS qq FROM int8_tbl b ) AS ss2 + USING (qq) + INNER JOIN tenk1 c ON qq = unique2; + qq | unique1 +-----+--------- + 123 | 4596 + 123 | 4596 + 456 | 7318 +(3 rows) + +-- +-- test case where a PlaceHolderVar is propagated into a subquery +-- +explain (costs off) +select * from + int8_tbl t1 left join + (select q1 as x, 42 as y from int8_tbl t2) ss + on t1.q2 = ss.x +where + 1 = (select 1 from int8_tbl t3 where ss.y is not null limit 1) +order by 1,2; + QUERY PLAN +----------------------------------------------------------- + Sort + Sort Key: t1.q1, t1.q2 + -> Hash Left Join + Hash Cond: (t1.q2 = t2.q1) + Filter: (1 = (SubPlan 1)) + -> Seq Scan on int8_tbl t1 + -> Hash + -> Seq Scan on int8_tbl t2 + SubPlan 1 + -> Limit + -> Result + One-Time Filter: ((42) IS NOT NULL) + -> Seq Scan on int8_tbl t3 +(13 rows) + +select * from + int8_tbl t1 left join + (select q1 as x, 42 as y from int8_tbl t2) ss + on t1.q2 = ss.x +where + 1 = (select 1 from int8_tbl t3 where ss.y is not null limit 1) +order by 1,2; + q1 | q2 | x | y +------------------+------------------+------------------+---- + 123 | 4567890123456789 | 4567890123456789 | 42 + 123 | 4567890123456789 | 4567890123456789 | 42 + 123 | 4567890123456789 | 4567890123456789 | 42 + 4567890123456789 | 123 | 123 | 42 + 4567890123456789 | 123 | 123 | 42 + 4567890123456789 | 4567890123456789 | 4567890123456789 | 42 + 4567890123456789 | 4567890123456789 | 4567890123456789 | 42 + 4567890123456789 | 4567890123456789 | 4567890123456789 | 42 +(8 rows) + -- -- test the corner cases FULL JOIN ON TRUE and FULL JOIN ON FALSE -- @@ -2579,6 +2707,129 @@ select * from int4_tbl a full join int4_tbl b on false order by 1,2; | 2147483647 (10 rows) +-- +-- test handling of potential equivalence clauses above outer joins +-- +explain (costs off) +select q1, unique2, thousand, hundred + from int8_tbl a left join tenk1 b on q1 = unique2 + where coalesce(thousand,123) = q1 and q1 = coalesce(hundred,123); + QUERY PLAN +-------------------------------------------------------------------------------------- + Nested Loop Left Join + Filter: ((COALESCE(b.thousand, 123) = a.q1) AND (a.q1 = COALESCE(b.hundred, 123))) + -> Seq Scan on int8_tbl a + -> Index Scan using tenk1_unique2 on tenk1 b + Index Cond: (a.q1 = unique2) +(5 rows) + +select q1, unique2, thousand, hundred + from int8_tbl a left join tenk1 b on q1 = unique2 + where coalesce(thousand,123) = q1 and q1 = coalesce(hundred,123); + q1 | unique2 | thousand | hundred +----+---------+----------+--------- +(0 rows) + +explain (costs off) +select f1, unique2, case when unique2 is null then f1 else 0 end + from int4_tbl a left join tenk1 b on f1 = unique2 + where (case when unique2 is null then f1 else 0 end) = 0; + QUERY PLAN +-------------------------------------------------------------------- + Nested Loop Left Join + Filter: (CASE WHEN (b.unique2 IS NULL) THEN a.f1 ELSE 0 END = 0) + -> Seq Scan on int4_tbl a + -> Index Scan using tenk1_unique2 on tenk1 b + Index Cond: (a.f1 = unique2) +(5 rows) + +select f1, unique2, case when unique2 is null then f1 else 0 end + from int4_tbl a left join tenk1 b on f1 = unique2 + where (case when unique2 is null then f1 else 0 end) = 0; + f1 | unique2 | case +----+---------+------ + 0 | 0 | 0 +(1 row) + +-- +-- check handling of join aliases when flattening multiple levels of subquery +-- +explain (verbose, costs off) +select foo1.join_key as foo1_id, foo3.join_key AS foo3_id, bug_field from + (values (0),(1)) foo1(join_key) +left join + (select join_key, bug_field from + (select ss1.join_key, ss1.bug_field from + (select f1 as join_key, 666 as bug_field from int4_tbl i1) ss1 + ) foo2 + left join + (select unique2 as join_key from tenk1 i2) ss2 + using (join_key) + ) foo3 +using (join_key); + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Nested Loop Left Join + Output: "*VALUES*".column1, i1.f1, (666) + Join Filter: ("*VALUES*".column1 = i1.f1) + -> Values Scan on "*VALUES*" + Output: "*VALUES*".column1 + -> Materialize + Output: i1.f1, (666) + -> Nested Loop Left Join + Output: i1.f1, 666 + -> Seq Scan on public.int4_tbl i1 + Output: i1.f1 + -> Index Scan using tenk1_unique2 on public.tenk1 i2 + Output: i2.unique1, i2.unique2, i2.two, i2.four, i2.ten, i2.twenty, i2.hundred, i2.thousand, i2.twothousand, i2.fivethous, i2.tenthous, i2.odd, i2.even, i2.stringu1, i2.stringu2, i2.string4 + Index Cond: (i1.f1 = i2.unique2) +(14 rows) + +select foo1.join_key as foo1_id, foo3.join_key AS foo3_id, bug_field from + (values (0),(1)) foo1(join_key) +left join + (select join_key, bug_field from + (select ss1.join_key, ss1.bug_field from + (select f1 as join_key, 666 as bug_field from int4_tbl i1) ss1 + ) foo2 + left join + (select unique2 as join_key from tenk1 i2) ss2 + using (join_key) + ) foo3 +using (join_key); + foo1_id | foo3_id | bug_field +---------+---------+----------- + 0 | 0 | 666 + 1 | | +(2 rows) + +-- +-- test ability to push constants through outer join clauses +-- +explain (costs off) + select * from int4_tbl a left join tenk1 b on f1 = unique2 where f1 = 0; + QUERY PLAN +------------------------------------------------- + Nested Loop Left Join + Join Filter: (a.f1 = b.unique2) + -> Seq Scan on int4_tbl a + Filter: (f1 = 0) + -> Index Scan using tenk1_unique2 on tenk1 b + Index Cond: (unique2 = 0) +(6 rows) + +explain (costs off) + select * from tenk1 a full join tenk1 b using(unique2) where unique2 = 42; + QUERY PLAN +------------------------------------------------- + Merge Full Join + Merge Cond: (a.unique2 = b.unique2) + -> Index Scan using tenk1_unique2 on tenk1 a + Index Cond: (unique2 = 42) + -> Index Scan using tenk1_unique2 on tenk1 b + Index Cond: (unique2 = 42) +(6 rows) + -- -- test join removal -- @@ -2676,7 +2927,7 @@ explain (verbose true, costs false, nodes false) -- this case is not select p.*, linked from parent p left join (select c.*, true as linked from child c) as ss - on (p.k = ss.k); + on (p.k = ss.k) order by p.k; k | pd | linked ---+----+-------- 1 | 10 | t @@ -2687,21 +2938,24 @@ select p.*, linked from parent p explain (verbose true, costs false, nodes false) select p.*, linked from parent p left join (select c.*, true as linked from child c) as ss - on (p.k = ss.k); - QUERY PLAN -------------------------------------------------------------------- - Nested Loop Left Join + on (p.k = ss.k) order by p.k; + QUERY PLAN +------------------------------------------------------------------------- + Sort Output: p.k, p.pd, (true) - Join Filter: (p.k = c.k) - -> Data Node Scan on p - Output: p.k, p.pd - Remote query: SELECT k, pd FROM ONLY parent p WHERE true - -> Result - Output: c.k, true - -> Data Node Scan on c - Output: c.k - Remote query: SELECT k FROM ONLY child c WHERE true -(11 rows) + Sort Key: p.k + -> Nested Loop Left Join + Output: p.k, p.pd, (true) + Join Filter: (p.k = c.k) + -> Data Node Scan on p + Output: p.k, p.pd + Remote query: SELECT k, pd FROM ONLY parent p WHERE true + -> Result + Output: c.k, true + -> Data Node Scan on c + Output: c.k + Remote query: SELECT k FROM ONLY child c WHERE true +(14 rows) -- check for a 9.0rc1 bug: join removal breaks pseudoconstant qual handling select p.* from diff --git a/src/test/regress/expected/join_1.out b/src/test/regress/expected/join_1.out index c05d64c1c3..583ae6c27c 100644 --- a/src/test/regress/expected/join_1.out +++ b/src/test/regress/expected/join_1.out @@ -2036,7 +2036,6 @@ NATURAL FULL JOIN (4 rows) -- Test for propagation of nullability constraints into sub-joins -SET enforce_two_phase_commit TO off; create temp table x (x1 int, x2 int); insert into x values (1,11); insert into x values (2,22); @@ -2527,6 +2526,137 @@ order by c.name; (3 rows) rollback; +-- +-- test incorrect handling of placeholders that only appear in targetlists, +-- per bug #6154 +-- +SELECT * FROM +( SELECT 1 as key1 ) sub1 +LEFT JOIN +( SELECT sub3.key3, sub4.value2, COALESCE(sub4.value2, 66) as value3 FROM + ( SELECT 1 as key3 ) sub3 + LEFT JOIN + ( SELECT sub5.key5, COALESCE(sub6.value1, 1) as value2 FROM + ( SELECT 1 as key5 ) sub5 + LEFT JOIN + ( SELECT 2 as key6, 42 as value1 ) sub6 + ON sub5.key5 = sub6.key6 + ) sub4 + ON sub4.key5 = sub3.key3 +) sub2 +ON sub1.key1 = sub2.key3; + key1 | key3 | value2 | value3 +------+------+--------+-------- + 1 | 1 | 1 | 1 +(1 row) + +-- test the path using join aliases, too +SELECT * FROM +( SELECT 1 as key1 ) sub1 +LEFT JOIN +( SELECT sub3.key3, value2, COALESCE(value2, 66) as value3 FROM + ( SELECT 1 as key3 ) sub3 + LEFT JOIN + ( SELECT sub5.key5, COALESCE(sub6.value1, 1) as value2 FROM + ( SELECT 1 as key5 ) sub5 + LEFT JOIN + ( SELECT 2 as key6, 42 as value1 ) sub6 + ON sub5.key5 = sub6.key6 + ) sub4 + ON sub4.key5 = sub3.key3 +) sub2 +ON sub1.key1 = sub2.key3; + key1 | key3 | value2 | value3 +------+------+--------+-------- + 1 | 1 | 1 | 1 +(1 row) + +-- +-- test case where a PlaceHolderVar is used as a nestloop parameter +-- +EXPLAIN (COSTS OFF, NUM_NODES OFF, NODES FALSE) +SELECT qq, unique1 + FROM + ( SELECT COALESCE(q1, 0) AS qq FROM int8_tbl a ) AS ss1 + FULL OUTER JOIN + ( SELECT COALESCE(q2, -1) AS qq FROM int8_tbl b ) AS ss2 + USING (qq) + INNER JOIN tenk1 c ON qq = unique2; + QUERY PLAN +---------------------------------------------------------------------------------------------------- + Nested Loop + Join Filter: (COALESCE((COALESCE(a.q1, 0::bigint)), (COALESCE(b.q2, (-1)::bigint))) = c.unique2) + -> Hash Full Join + Hash Cond: (COALESCE(a.q1, 0::bigint) = COALESCE(b.q2, (-1)::bigint)) + -> Result + -> Data Node Scan on a + -> Hash + -> Result + -> Data Node Scan on b + -> Data Node Scan on c +(10 rows) + +SELECT qq, unique1 + FROM + ( SELECT COALESCE(q1, 0) AS qq FROM int8_tbl a ) AS ss1 + FULL OUTER JOIN + ( SELECT COALESCE(q2, -1) AS qq FROM int8_tbl b ) AS ss2 + USING (qq) + INNER JOIN tenk1 c ON qq = unique2; + qq | unique1 +-----+--------- + 123 | 4596 + 123 | 4596 + 456 | 7318 +(3 rows) + +-- +-- test case where a PlaceHolderVar is propagated into a subquery +-- +explain (costs off, num_nodes off, nodes off) +select * from + int8_tbl t1 left join + (select q1 as x, 42 as y from int8_tbl t2) ss + on t1.q2 = ss.x +where + 1 = (select 1 from int8_tbl t3 where ss.y is not null limit 1) +order by 1,2; + QUERY PLAN +----------------------------------------------------------- + Sort + Sort Key: t1.q1, t1.q2 + -> Nested Loop Left Join + Join Filter: (t1.q2 = t2.q1) + Filter: (1 = (SubPlan 1)) + -> Data Node Scan on t1 + -> Result + -> Data Node Scan on t2 + SubPlan 1 + -> Limit + -> Result + One-Time Filter: ((42) IS NOT NULL) + -> Data Node Scan on t3 +(13 rows) + +select * from + int8_tbl t1 left join + (select q1 as x, 42 as y from int8_tbl t2) ss + on t1.q2 = ss.x +where + 1 = (select 1 from int8_tbl t3 where ss.y is not null limit 1) +order by 1,2; + q1 | q2 | x | y +------------------+------------------+------------------+---- + 123 | 4567890123456789 | 4567890123456789 | 42 + 123 | 4567890123456789 | 4567890123456789 | 42 + 123 | 4567890123456789 | 4567890123456789 | 42 + 4567890123456789 | 123 | 123 | 42 + 4567890123456789 | 123 | 123 | 42 + 4567890123456789 | 4567890123456789 | 4567890123456789 | 42 + 4567890123456789 | 4567890123456789 | 4567890123456789 | 42 + 4567890123456789 | 4567890123456789 | 4567890123456789 | 42 +(8 rows) + -- -- test the corner cases FULL JOIN ON TRUE and FULL JOIN ON FALSE -- @@ -2575,6 +2705,128 @@ select * from int4_tbl a full join int4_tbl b on false order by 1,2; | 2147483647 (10 rows) +-- +-- test handling of potential equivalence clauses above outer joins +-- +explain (costs off, nodes off, num_nodes off) +select q1, unique2, thousand, hundred + from int8_tbl a left join tenk1 b on q1 = unique2 + where coalesce(thousand,123) = q1 and q1 = coalesce(hundred,123); + QUERY PLAN +-------------------------------------------------------------------------------------- + Nested Loop Left Join + Join Filter: (a.q1 = b.unique2) + Filter: ((COALESCE(b.thousand, 123) = a.q1) AND (a.q1 = COALESCE(b.hundred, 123))) + -> Data Node Scan on a + -> Data Node Scan on b +(5 rows) + +select q1, unique2, thousand, hundred + from int8_tbl a left join tenk1 b on q1 = unique2 + where coalesce(thousand,123) = q1 and q1 = coalesce(hundred,123); + q1 | unique2 | thousand | hundred +----+---------+----------+--------- +(0 rows) + +explain (costs off, nodes off, num_nodes off) +select f1, unique2, case when unique2 is null then f1 else 0 end + from int4_tbl a left join tenk1 b on f1 = unique2 + where (case when unique2 is null then f1 else 0 end) = 0; + QUERY PLAN +-------------------------------------------------------------------- + Nested Loop Left Join + Join Filter: (a.f1 = b.unique2) + Filter: (CASE WHEN (b.unique2 IS NULL) THEN a.f1 ELSE 0 END = 0) + -> Data Node Scan on a + -> Data Node Scan on b +(5 rows) + +select f1, unique2, case when unique2 is null then f1 else 0 end + from int4_tbl a left join tenk1 b on f1 = unique2 + where (case when unique2 is null then f1 else 0 end) = 0; + f1 | unique2 | case +----+---------+------ + 0 | 0 | 0 +(1 row) + +-- +-- check handling of join aliases when flattening multiple levels of subquery +-- +explain (verbose, costs off, nodes off, num_nodes off) +select foo1.join_key as foo1_id, foo3.join_key AS foo3_id, bug_field from + (values (0),(1)) foo1(join_key) +left join + (select join_key, bug_field from + (select ss1.join_key, ss1.bug_field from + (select f1 as join_key, 666 as bug_field from int4_tbl i1) ss1 + ) foo2 + left join + (select unique2 as join_key from tenk1 i2) ss2 + using (join_key) + ) foo3 +using (join_key); + QUERY PLAN +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Hash Left Join + Output: "*VALUES*".column1, i1.f1, (666) + Hash Cond: ("*VALUES*".column1 = i1.f1) + -> Values Scan on "*VALUES*" + Output: "*VALUES*".column1 + -> Hash + Output: i1.f1, (666) + -> Nested Loop Left Join + Output: i1.f1, 666 + Join Filter: (i1.f1 = i2.unique2) + -> Data Node Scan on i1 + Output: i1.f1 + Remote query: SELECT f1 FROM ONLY int4_tbl i1 WHERE true + -> Data Node Scan on i2 + Output: i2.unique1, i2.unique2, i2.two, i2.four, i2.ten, i2.twenty, i2.hundred, i2.thousand, i2.twothousand, i2.fivethous, i2.tenthous, i2.odd, i2.even, i2.stringu1, i2.stringu2, i2.string4 + Remote query: SELECT unique1, unique2, two, four, ten, twenty, hundred, thousand, twothousand, fivethous, tenthous, odd, even, stringu1, stringu2, string4 FROM ONLY tenk1 i2 WHERE true +(16 rows) + +select foo1.join_key as foo1_id, foo3.join_key AS foo3_id, bug_field from + (values (0),(1)) foo1(join_key) +left join + (select join_key, bug_field from + (select ss1.join_key, ss1.bug_field from + (select f1 as join_key, 666 as bug_field from int4_tbl i1) ss1 + ) foo2 + left join + (select unique2 as join_key from tenk1 i2) ss2 + using (join_key) + ) foo3 +using (join_key); + foo1_id | foo3_id | bug_field +---------+---------+----------- + 0 | 0 | 666 + 1 | | +(2 rows) + +-- +-- test ability to push constants through outer join clauses +-- +explain (costs off, nodes off, num_nodes off) + select * from int4_tbl a left join tenk1 b on f1 = unique2 where f1 = 0; + QUERY PLAN +----------------------------------- + Nested Loop Left Join + Join Filter: (a.f1 = b.unique2) + -> Data Node Scan on a + -> Data Node Scan on b +(4 rows) + +explain (costs off, nodes off, num_nodes off) + select * from tenk1 a full join tenk1 b using(unique2) where unique2 = 42; + QUERY PLAN +-------------------------------------- + Hash Full Join + Hash Cond: (a.unique2 = b.unique2) + -> Data Node Scan on a + -> Hash + -> Data Node Scan on b +(5 rows) + -- -- test join removal -- @@ -2589,7 +2841,7 @@ INSERT INTO a VALUES (0, 0), (1, NULL); INSERT INTO b VALUES (0, 0), (1, NULL); INSERT INTO c VALUES (0), (1); -- all three cases should be optimizable into a simple seqscan -explain (verbose true, costs false, nodes false) SELECT a.* FROM a LEFT JOIN b ON a.b_id = b.id; +explain (verbose true, costs false, nodes false, num_nodes off) SELECT a.* FROM a LEFT JOIN b ON a.b_id = b.id; QUERY PLAN -------------------------------------------------------------- Result @@ -2599,7 +2851,7 @@ explain (verbose true, costs false, nodes false) SELECT a.* FROM a LEFT JOIN b O Remote query: SELECT id, b_id FROM ONLY a WHERE true (5 rows) -explain (verbose true, costs false, nodes false) SELECT b.* FROM b LEFT JOIN c ON b.c_id = c.id; +explain (verbose true, costs false, nodes false, num_nodes off) SELECT b.* FROM b LEFT JOIN c ON b.c_id = c.id; QUERY PLAN -------------------------------------------------------------- Result @@ -2609,7 +2861,7 @@ explain (verbose true, costs false, nodes false) SELECT b.* FROM b LEFT JOIN c O Remote query: SELECT id, c_id FROM ONLY b WHERE true (5 rows) -explain (verbose true, costs false, nodes false) +explain (verbose true, costs false, nodes false, num_nodes off) SELECT a.* FROM a LEFT JOIN (b left join c on b.c_id = c.id) ON (a.b_id = b.id); QUERY PLAN @@ -2622,7 +2874,7 @@ explain (verbose true, costs false, nodes false) (5 rows) -- check optimization of outer join within another special join -explain (verbose true, costs false, nodes false) +explain (verbose true, costs false, nodes false, num_nodes off) select id from a where id in ( select b.id from b left join c on b.id = c.id ); @@ -2655,7 +2907,7 @@ select p.* from parent p left join child c on (p.k = c.k) order by 1,2; 3 | 30 (3 rows) -explain (verbose true, costs false, nodes false) +explain (verbose true, costs false, nodes false, num_nodes off) select p.* from parent p left join child c on (p.k = c.k) order by 1,2; QUERY PLAN ------------------------------------------------------------------------ @@ -2672,7 +2924,7 @@ explain (verbose true, costs false, nodes false) -- this case is not select p.*, linked from parent p left join (select c.*, true as linked from child c) as ss - on (p.k = ss.k); + on (p.k = ss.k) order by p.k; k | pd | linked ---+----+-------- 1 | 10 | t @@ -2680,24 +2932,27 @@ select p.*, linked from parent p 3 | 30 | (3 rows) -explain (verbose true, costs false, nodes false) +explain (verbose true, costs false, nodes false, num_nodes off) select p.*, linked from parent p left join (select c.*, true as linked from child c) as ss - on (p.k = ss.k); - QUERY PLAN -------------------------------------------------------------------- - Nested Loop Left Join + on (p.k = ss.k) order by p.k; + QUERY PLAN +------------------------------------------------------------------------- + Sort Output: p.k, p.pd, (true) - Join Filter: (p.k = c.k) - -> Data Node Scan on p - Output: p.k, p.pd - Remote query: SELECT k, pd FROM ONLY parent p WHERE true - -> Result - Output: c.k, true - -> Data Node Scan on c - Output: c.k - Remote query: SELECT k FROM ONLY child c WHERE true -(11 rows) + Sort Key: p.k + -> Nested Loop Left Join + Output: p.k, p.pd, (true) + Join Filter: (p.k = c.k) + -> Data Node Scan on p + Output: p.k, p.pd + Remote query: SELECT k, pd FROM ONLY parent p WHERE true + -> Result + Output: c.k, true + -> Data Node Scan on c + Output: c.k + Remote query: SELECT k FROM ONLY child c WHERE true +(14 rows) -- check for a 9.0rc1 bug: join removal breaks pseudoconstant qual handling select p.* from @@ -2707,7 +2962,7 @@ select p.* from ---+---- (0 rows) -explain (verbose true, costs false, nodes false) +explain (verbose true, costs false, nodes false, num_nodes off) select p.* from parent p left join child c on (p.k = c.k) where p.k = 1 and p.k = 2; @@ -2728,7 +2983,7 @@ select p.* from ---+---- (0 rows) -explain (verbose true, costs false, nodes false) +explain (verbose true, costs false, nodes false, num_nodes off) select p.* from (parent p left join child c on (p.k = c.k)) join parent x on p.k = x.k where p.k = 1 and p.k = 2; diff --git a/src/test/regress/expected/numeric.out b/src/test/regress/expected/numeric.out index 5a51197df7..2c43ce6fd8 100644 --- a/src/test/regress/expected/numeric.out +++ b/src/test/regress/expected/numeric.out @@ -1154,6 +1154,24 @@ SELECT '' AS to_char_23, to_char(val, '9.999EEEE') FROM num_data; | -2.493e+07 (10 rows) +SELECT '' AS to_char_24, to_char('100'::numeric, 'FM999.9'); + to_char_24 | to_char +------------+--------- + | 100. +(1 row) + +SELECT '' AS to_char_25, to_char('100'::numeric, 'FM999.'); + to_char_25 | to_char +------------+--------- + | 100 +(1 row) + +SELECT '' AS to_char_26, to_char('100'::numeric, 'FM999'); + to_char_26 | to_char +------------+--------- + | 100 +(1 row) + -- TO_NUMBER() -- SELECT '' AS to_number_1, to_number('-34,338,492', '99G999G999'); diff --git a/src/test/regress/expected/numeric_1.out b/src/test/regress/expected/numeric_1.out index b93d6944d4..00c2fff911 100644 --- a/src/test/regress/expected/numeric_1.out +++ b/src/test/regress/expected/numeric_1.out @@ -1154,6 +1154,24 @@ SELECT '' AS to_char_23, to_char(val, '9.999EEEE') FROM num_data ORDER BY val | 7.799e+06 (10 rows) +SELECT '' AS to_char_24, to_char('100'::numeric, 'FM999.9'); + to_char_24 | to_char +------------+--------- + | 100. +(1 row) + +SELECT '' AS to_char_25, to_char('100'::numeric, 'FM999.'); + to_char_25 | to_char +------------+--------- + | 100 +(1 row) + +SELECT '' AS to_char_26, to_char('100'::numeric, 'FM999'); + to_char_26 | to_char +------------+--------- + | 100 +(1 row) + -- TO_NUMBER() -- SELECT '' AS to_number_1, to_number('-34,338,492', '99G999G999'); diff --git a/src/test/regress/expected/plancache.out b/src/test/regress/expected/plancache.out index dcc977f71d..0d0ffb24f7 100644 --- a/src/test/regress/expected/plancache.out +++ b/src/test/regress/expected/plancache.out @@ -1,8 +1,6 @@ -- -- Tests to exercise the plan caching/invalidation mechanism -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE pcachetest AS SELECT * FROM int8_tbl; -- create and use a cached plan PREPARE prepstmt AS SELECT * FROM pcachetest ORDER BY q1, q2; diff --git a/src/test/regress/expected/plancache_1.out b/src/test/regress/expected/plancache_1.out index 8cfb591600..ce6c196b2c 100644 --- a/src/test/regress/expected/plancache_1.out +++ b/src/test/regress/expected/plancache_1.out @@ -1,8 +1,6 @@ -- -- Tests to exercise the plan caching/invalidation mechanism -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE pcachetest AS SELECT * FROM int8_tbl; -- create and use a cached plan PREPARE prepstmt AS SELECT * FROM pcachetest ORDER BY q1, q2; diff --git a/src/test/regress/expected/plpgsql_1.out b/src/test/regress/expected/plpgsql_1.out index 70faf91e9c..373c7d4bce 100644 --- a/src/test/regress/expected/plpgsql_1.out +++ b/src/test/regress/expected/plpgsql_1.out @@ -2022,8 +2022,6 @@ ERROR: bind message supplies 1 parameters, but prepared statement "" requires 0 CONTEXT: SQL statement "select unique1 from tenk1 where unique2 = (select unique2 from tenk1 b where ten = $1)" PL/pgSQL function "trap_matching_test" line 9 at SQL statement --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; create temp table foo (f1 int); create function blockme() returns int as $$ declare x int; diff --git a/src/test/regress/expected/plpgsql_2.out b/src/test/regress/expected/plpgsql_2.out new file mode 100644 index 0000000000..671c322b8a --- /dev/null +++ b/src/test/regress/expected/plpgsql_2.out @@ -0,0 +1,4322 @@ +-- +-- PLPGSQL +-- +-- Scenario: +-- +-- A building with a modern TP cable installation where any +-- of the wall connectors can be used to plug in phones, +-- ethernet interfaces or local office hubs. The backside +-- of the wall connectors is wired to one of several patch- +-- fields in the building. +-- +-- In the patchfields, there are hubs and all the slots +-- representing the wall connectors. In addition there are +-- slots that can represent a phone line from the central +-- phone system. +-- +-- Triggers ensure consistency of the patching information. +-- +-- Functions are used to build up powerful views that let +-- you look behind the wall when looking at a patchfield +-- or into a room. +-- +create table Room ( + roomno char(8), + comment text +); +create unique index Room_rno on Room using btree (roomno bpchar_ops); +create table WSlot ( + slotname char(20), + roomno char(8), + slotlink char(20), + backlink char(20) +); +create unique index WSlot_name on WSlot using btree (slotname bpchar_ops); +create table PField ( + name text, + comment text +) distribute by replication; +create unique index PField_name on PField using btree (name text_ops); +create table PSlot ( + slotname char(20), + pfname text, + slotlink char(20), + backlink char(20) +); +create unique index PSlot_name on PSlot using btree (slotname bpchar_ops); +create table PLine ( + slotname char(20), + phonenumber char(20), + comment text, + backlink char(20) +); +create unique index PLine_name on PLine using btree (slotname bpchar_ops); +create table Hub ( + name char(14), + comment text, + nslots integer +); +create unique index Hub_name on Hub using btree (name bpchar_ops); +create table HSlot ( + slotname char(20), + hubname char(14), + slotno integer, + slotlink char(20) +); +create unique index HSlot_name on HSlot using btree (slotname bpchar_ops); +create index HSlot_hubname on HSlot using btree (hubname bpchar_ops); +create table System ( + name text, + comment text +); +create unique index System_name on System using btree (name text_ops); +create table IFace ( + slotname char(20), + sysname text, + ifname text, + slotlink char(20) +); +create unique index IFace_name on IFace using btree (slotname bpchar_ops); +create table PHone ( + slotname char(20), + comment text, + slotlink char(20) +); +create unique index PHone_name on PHone using btree (slotname bpchar_ops); +-- ************************************************************ +-- * +-- * Trigger procedures and functions for the patchfield +-- * test of PL/pgSQL +-- * +-- ************************************************************ +-- ************************************************************ +-- * AFTER UPDATE on Room +-- * - If room no changes let wall slots follow +-- ************************************************************ +create function tg_room_au() returns trigger as ' +begin + if new.roomno != old.roomno then + update WSlot set roomno = new.roomno where roomno = old.roomno; + end if; + return new; +end; +' language plpgsql; +create trigger tg_room_au after update + on Room for each row execute procedure tg_room_au(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * AFTER DELETE on Room +-- * - delete wall slots in this room +-- ************************************************************ +create function tg_room_ad() returns trigger as ' +begin + delete from WSlot where roomno = old.roomno; + return old; +end; +' language plpgsql; +create trigger tg_room_ad after delete + on Room for each row execute procedure tg_room_ad(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE INSERT or UPDATE on WSlot +-- * - Check that room exists +-- ************************************************************ +create function tg_wslot_biu() returns trigger as $$ +begin + if count(*) = 0 from Room where roomno = new.roomno then + raise exception 'Room % does not exist', new.roomno; + end if; + return new; +end; +$$ language plpgsql; +create trigger tg_wslot_biu before insert or update + on WSlot for each row execute procedure tg_wslot_biu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * AFTER UPDATE on PField +-- * - Let PSlots of this field follow +-- ************************************************************ +create function tg_pfield_au() returns trigger as ' +begin + if new.name != old.name then + update PSlot set pfname = new.name where pfname = old.name; + end if; + return new; +end; +' language plpgsql; +create trigger tg_pfield_au after update + on PField for each row execute procedure tg_pfield_au(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * AFTER DELETE on PField +-- * - Remove all slots of this patchfield +-- ************************************************************ +create function tg_pfield_ad() returns trigger as ' +begin + delete from PSlot where pfname = old.name; + return old; +end; +' language plpgsql; +create trigger tg_pfield_ad after delete + on PField for each row execute procedure tg_pfield_ad(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE INSERT or UPDATE on PSlot +-- * - Ensure that our patchfield does exist +-- ************************************************************ +create function tg_pslot_biu() returns trigger as $proc$ +declare + pfrec record; + ps alias for new; +begin + select into pfrec * from PField where name = ps.pfname; + if not found then + raise exception $$Patchfield "%" does not exist$$, ps.pfname; + end if; + return ps; +end; +$proc$ language plpgsql; +create trigger tg_pslot_biu before insert or update + on PSlot for each row execute procedure tg_pslot_biu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * AFTER UPDATE on System +-- * - If system name changes let interfaces follow +-- ************************************************************ +create function tg_system_au() returns trigger as ' +begin + if new.name != old.name then + update IFace set sysname = new.name where sysname = old.name; + end if; + return new; +end; +' language plpgsql; +create trigger tg_system_au after update + on System for each row execute procedure tg_system_au(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE INSERT or UPDATE on IFace +-- * - set the slotname to IF.sysname.ifname +-- ************************************************************ +create function tg_iface_biu() returns trigger as $$ +declare + sname text; + sysrec record; +begin + select into sysrec * from system where name = new.sysname; + if not found then + raise exception $q$system "%" does not exist$q$, new.sysname; + end if; + sname := 'IF.' || new.sysname; + sname := sname || '.'; + sname := sname || new.ifname; + if length(sname) > 20 then + raise exception 'IFace slotname "%" too long (20 char max)', sname; + end if; + new.slotname := sname; + return new; +end; +$$ language plpgsql; +create trigger tg_iface_biu before insert or update + on IFace for each row execute procedure tg_iface_biu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * AFTER INSERT or UPDATE or DELETE on Hub +-- * - insert/delete/rename slots as required +-- ************************************************************ +create function tg_hub_a() returns trigger as ' +declare + hname text; + dummy integer; +begin + if tg_op = ''INSERT'' then + dummy := tg_hub_adjustslots(new.name, 0, new.nslots); + return new; + end if; + if tg_op = ''UPDATE'' then + if new.name != old.name then + update HSlot set hubname = new.name where hubname = old.name; + end if; + dummy := tg_hub_adjustslots(new.name, old.nslots, new.nslots); + return new; + end if; + if tg_op = ''DELETE'' then + dummy := tg_hub_adjustslots(old.name, old.nslots, 0); + return old; + end if; +end; +' language plpgsql; +create trigger tg_hub_a after insert or update or delete + on Hub for each row execute procedure tg_hub_a(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * Support function to add/remove slots of Hub +-- ************************************************************ +create function tg_hub_adjustslots(hname bpchar, + oldnslots integer, + newnslots integer) +returns integer as ' +begin + if newnslots = oldnslots then + return 0; + end if; + if newnslots < oldnslots then + delete from HSlot where hubname = hname and slotno > newnslots; + return 0; + end if; + for i in oldnslots + 1 .. newnslots loop + insert into HSlot (slotname, hubname, slotno, slotlink) + values (''HS.dummy'', hname, i, ''''); + end loop; + return 0; +end +' language plpgsql; +-- Test comments +COMMENT ON FUNCTION tg_hub_adjustslots_wrong(bpchar, integer, integer) IS 'function with args'; +ERROR: function tg_hub_adjustslots_wrong(character, integer, integer) does not exist +COMMENT ON FUNCTION tg_hub_adjustslots(bpchar, integer, integer) IS 'function with args'; +COMMENT ON FUNCTION tg_hub_adjustslots(bpchar, integer, integer) IS NULL; +-- ************************************************************ +-- * BEFORE INSERT or UPDATE on HSlot +-- * - prevent from manual manipulation +-- * - set the slotname to HS.hubname.slotno +-- ************************************************************ +create function tg_hslot_biu() returns trigger as ' +declare + sname text; + xname HSlot.slotname%TYPE; + hubrec record; +begin + select into hubrec * from Hub where name = new.hubname; + if not found then + raise exception ''no manual manipulation of HSlot''; + end if; + if new.slotno < 1 or new.slotno > hubrec.nslots then + raise exception ''no manual manipulation of HSlot''; + end if; + if tg_op = ''UPDATE'' and new.hubname != old.hubname then + if count(*) > 0 from Hub where name = old.hubname then + raise exception ''no manual manipulation of HSlot''; + end if; + end if; + sname := ''HS.'' || trim(new.hubname); + sname := sname || ''.''; + sname := sname || new.slotno::text; + if length(sname) > 20 then + raise exception ''HSlot slotname "%" too long (20 char max)'', sname; + end if; + new.slotname := sname; + return new; +end; +' language plpgsql; +create trigger tg_hslot_biu before insert or update + on HSlot for each row execute procedure tg_hslot_biu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE DELETE on HSlot +-- * - prevent from manual manipulation +-- ************************************************************ +create function tg_hslot_bd() returns trigger as ' +declare + hubrec record; +begin + select into hubrec * from Hub where name = old.hubname; + if not found then + return old; + end if; + if old.slotno > hubrec.nslots then + return old; + end if; + raise exception ''no manual manipulation of HSlot''; +end; +' language plpgsql; +create trigger tg_hslot_bd before delete + on HSlot for each row execute procedure tg_hslot_bd(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE INSERT on all slots +-- * - Check name prefix +-- ************************************************************ +create function tg_chkslotname() returns trigger as ' +begin + if substr(new.slotname, 1, 2) != tg_argv[0] then + raise exception ''slotname must begin with %'', tg_argv[0]; + end if; + return new; +end; +' language plpgsql; +create trigger tg_chkslotname before insert + on PSlot for each row execute procedure tg_chkslotname('PS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotname before insert + on WSlot for each row execute procedure tg_chkslotname('WS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotname before insert + on PLine for each row execute procedure tg_chkslotname('PL'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotname before insert + on IFace for each row execute procedure tg_chkslotname('IF'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotname before insert + on PHone for each row execute procedure tg_chkslotname('PH'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE INSERT or UPDATE on all slots with slotlink +-- * - Set slotlink to empty string if NULL value given +-- ************************************************************ +create function tg_chkslotlink() returns trigger as ' +begin + if new.slotlink isnull then + new.slotlink := ''''; + end if; + return new; +end; +' language plpgsql; +create trigger tg_chkslotlink before insert or update + on PSlot for each row execute procedure tg_chkslotlink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotlink before insert or update + on WSlot for each row execute procedure tg_chkslotlink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotlink before insert or update + on IFace for each row execute procedure tg_chkslotlink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotlink before insert or update + on HSlot for each row execute procedure tg_chkslotlink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotlink before insert or update + on PHone for each row execute procedure tg_chkslotlink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE INSERT or UPDATE on all slots with backlink +-- * - Set backlink to empty string if NULL value given +-- ************************************************************ +create function tg_chkbacklink() returns trigger as ' +begin + if new.backlink isnull then + new.backlink := ''''; + end if; + return new; +end; +' language plpgsql; +create trigger tg_chkbacklink before insert or update + on PSlot for each row execute procedure tg_chkbacklink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkbacklink before insert or update + on WSlot for each row execute procedure tg_chkbacklink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkbacklink before insert or update + on PLine for each row execute procedure tg_chkbacklink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE UPDATE on PSlot +-- * - do delete/insert instead of update if name changes +-- ************************************************************ +create function tg_pslot_bu() returns trigger as ' +begin + if new.slotname != old.slotname then + delete from PSlot where slotname = old.slotname; + insert into PSlot ( + slotname, + pfname, + slotlink, + backlink + ) values ( + new.slotname, + new.pfname, + new.slotlink, + new.backlink + ); + return null; + end if; + return new; +end; +' language plpgsql; +create trigger tg_pslot_bu before update + on PSlot for each row execute procedure tg_pslot_bu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE UPDATE on WSlot +-- * - do delete/insert instead of update if name changes +-- ************************************************************ +create function tg_wslot_bu() returns trigger as ' +begin + if new.slotname != old.slotname then + delete from WSlot where slotname = old.slotname; + insert into WSlot ( + slotname, + roomno, + slotlink, + backlink + ) values ( + new.slotname, + new.roomno, + new.slotlink, + new.backlink + ); + return null; + end if; + return new; +end; +' language plpgsql; +create trigger tg_wslot_bu before update + on WSlot for each row execute procedure tg_Wslot_bu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE UPDATE on PLine +-- * - do delete/insert instead of update if name changes +-- ************************************************************ +create function tg_pline_bu() returns trigger as ' +begin + if new.slotname != old.slotname then + delete from PLine where slotname = old.slotname; + insert into PLine ( + slotname, + phonenumber, + comment, + backlink + ) values ( + new.slotname, + new.phonenumber, + new.comment, + new.backlink + ); + return null; + end if; + return new; +end; +' language plpgsql; +create trigger tg_pline_bu before update + on PLine for each row execute procedure tg_pline_bu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE UPDATE on IFace +-- * - do delete/insert instead of update if name changes +-- ************************************************************ +create function tg_iface_bu() returns trigger as ' +begin + if new.slotname != old.slotname then + delete from IFace where slotname = old.slotname; + insert into IFace ( + slotname, + sysname, + ifname, + slotlink + ) values ( + new.slotname, + new.sysname, + new.ifname, + new.slotlink + ); + return null; + end if; + return new; +end; +' language plpgsql; +create trigger tg_iface_bu before update + on IFace for each row execute procedure tg_iface_bu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE UPDATE on HSlot +-- * - do delete/insert instead of update if name changes +-- ************************************************************ +create function tg_hslot_bu() returns trigger as ' +begin + if new.slotname != old.slotname or new.hubname != old.hubname then + delete from HSlot where slotname = old.slotname; + insert into HSlot ( + slotname, + hubname, + slotno, + slotlink + ) values ( + new.slotname, + new.hubname, + new.slotno, + new.slotlink + ); + return null; + end if; + return new; +end; +' language plpgsql; +create trigger tg_hslot_bu before update + on HSlot for each row execute procedure tg_hslot_bu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE UPDATE on PHone +-- * - do delete/insert instead of update if name changes +-- ************************************************************ +create function tg_phone_bu() returns trigger as ' +begin + if new.slotname != old.slotname then + delete from PHone where slotname = old.slotname; + insert into PHone ( + slotname, + comment, + slotlink + ) values ( + new.slotname, + new.comment, + new.slotlink + ); + return null; + end if; + return new; +end; +' language plpgsql; +create trigger tg_phone_bu before update + on PHone for each row execute procedure tg_phone_bu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * AFTER INSERT or UPDATE or DELETE on slot with backlink +-- * - Ensure that the opponent correctly points back to us +-- ************************************************************ +create function tg_backlink_a() returns trigger as ' +declare + dummy integer; +begin + if tg_op = ''INSERT'' then + if new.backlink != '''' then + dummy := tg_backlink_set(new.backlink, new.slotname); + end if; + return new; + end if; + if tg_op = ''UPDATE'' then + if new.backlink != old.backlink then + if old.backlink != '''' then + dummy := tg_backlink_unset(old.backlink, old.slotname); + end if; + if new.backlink != '''' then + dummy := tg_backlink_set(new.backlink, new.slotname); + end if; + else + if new.slotname != old.slotname and new.backlink != '''' then + dummy := tg_slotlink_set(new.backlink, new.slotname); + end if; + end if; + return new; + end if; + if tg_op = ''DELETE'' then + if old.backlink != '''' then + dummy := tg_backlink_unset(old.backlink, old.slotname); + end if; + return old; + end if; +end; +' language plpgsql; +create trigger tg_backlink_a after insert or update or delete + on PSlot for each row execute procedure tg_backlink_a('PS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_backlink_a after insert or update or delete + on WSlot for each row execute procedure tg_backlink_a('WS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_backlink_a after insert or update or delete + on PLine for each row execute procedure tg_backlink_a('PL'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * Support function to set the opponents backlink field +-- * if it does not already point to the requested slot +-- ************************************************************ +create function tg_backlink_set(myname bpchar, blname bpchar) +returns integer as ' +declare + mytype char(2); + link char(4); + rec record; +begin + mytype := substr(myname, 1, 2); + link := mytype || substr(blname, 1, 2); + if link = ''PLPL'' then + raise exception + ''backlink between two phone lines does not make sense''; + end if; + if link in (''PLWS'', ''WSPL'') then + raise exception + ''direct link of phone line to wall slot not permitted''; + end if; + if mytype = ''PS'' then + select into rec * from PSlot where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.backlink != blname then + update PSlot set backlink = blname where slotname = myname; + end if; + return 0; + end if; + if mytype = ''WS'' then + select into rec * from WSlot where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.backlink != blname then + update WSlot set backlink = blname where slotname = myname; + end if; + return 0; + end if; + if mytype = ''PL'' then + select into rec * from PLine where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.backlink != blname then + update PLine set backlink = blname where slotname = myname; + end if; + return 0; + end if; + raise exception ''illegal backlink beginning with %'', mytype; +end; +' language plpgsql; +-- ************************************************************ +-- * Support function to clear out the backlink field if +-- * it still points to specific slot +-- ************************************************************ +create function tg_backlink_unset(bpchar, bpchar) +returns integer as ' +declare + myname alias for $1; + blname alias for $2; + mytype char(2); + rec record; +begin + mytype := substr(myname, 1, 2); + if mytype = ''PS'' then + select into rec * from PSlot where slotname = myname; + if not found then + return 0; + end if; + if rec.backlink = blname then + update PSlot set backlink = '''' where slotname = myname; + end if; + return 0; + end if; + if mytype = ''WS'' then + select into rec * from WSlot where slotname = myname; + if not found then + return 0; + end if; + if rec.backlink = blname then + update WSlot set backlink = '''' where slotname = myname; + end if; + return 0; + end if; + if mytype = ''PL'' then + select into rec * from PLine where slotname = myname; + if not found then + return 0; + end if; + if rec.backlink = blname then + update PLine set backlink = '''' where slotname = myname; + end if; + return 0; + end if; +end +' language plpgsql; +-- ************************************************************ +-- * AFTER INSERT or UPDATE or DELETE on slot with slotlink +-- * - Ensure that the opponent correctly points back to us +-- ************************************************************ +create function tg_slotlink_a() returns trigger as ' +declare + dummy integer; +begin + if tg_op = ''INSERT'' then + if new.slotlink != '''' then + dummy := tg_slotlink_set(new.slotlink, new.slotname); + end if; + return new; + end if; + if tg_op = ''UPDATE'' then + if new.slotlink != old.slotlink then + if old.slotlink != '''' then + dummy := tg_slotlink_unset(old.slotlink, old.slotname); + end if; + if new.slotlink != '''' then + dummy := tg_slotlink_set(new.slotlink, new.slotname); + end if; + else + if new.slotname != old.slotname and new.slotlink != '''' then + dummy := tg_slotlink_set(new.slotlink, new.slotname); + end if; + end if; + return new; + end if; + if tg_op = ''DELETE'' then + if old.slotlink != '''' then + dummy := tg_slotlink_unset(old.slotlink, old.slotname); + end if; + return old; + end if; +end; +' language plpgsql; +create trigger tg_slotlink_a after insert or update or delete + on PSlot for each row execute procedure tg_slotlink_a('PS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_slotlink_a after insert or update or delete + on WSlot for each row execute procedure tg_slotlink_a('WS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_slotlink_a after insert or update or delete + on IFace for each row execute procedure tg_slotlink_a('IF'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_slotlink_a after insert or update or delete + on HSlot for each row execute procedure tg_slotlink_a('HS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_slotlink_a after insert or update or delete + on PHone for each row execute procedure tg_slotlink_a('PH'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * Support function to set the opponents slotlink field +-- * if it does not already point to the requested slot +-- ************************************************************ +create function tg_slotlink_set(bpchar, bpchar) +returns integer as ' +declare + myname alias for $1; + blname alias for $2; + mytype char(2); + link char(4); + rec record; +begin + mytype := substr(myname, 1, 2); + link := mytype || substr(blname, 1, 2); + if link = ''PHPH'' then + raise exception + ''slotlink between two phones does not make sense''; + end if; + if link in (''PHHS'', ''HSPH'') then + raise exception + ''link of phone to hub does not make sense''; + end if; + if link in (''PHIF'', ''IFPH'') then + raise exception + ''link of phone to hub does not make sense''; + end if; + if link in (''PSWS'', ''WSPS'') then + raise exception + ''slotlink from patchslot to wallslot not permitted''; + end if; + if mytype = ''PS'' then + select into rec * from PSlot where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.slotlink != blname then + update PSlot set slotlink = blname where slotname = myname; + end if; + return 0; + end if; + if mytype = ''WS'' then + select into rec * from WSlot where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.slotlink != blname then + update WSlot set slotlink = blname where slotname = myname; + end if; + return 0; + end if; + if mytype = ''IF'' then + select into rec * from IFace where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.slotlink != blname then + update IFace set slotlink = blname where slotname = myname; + end if; + return 0; + end if; + if mytype = ''HS'' then + select into rec * from HSlot where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.slotlink != blname then + update HSlot set slotlink = blname where slotname = myname; + end if; + return 0; + end if; + if mytype = ''PH'' then + select into rec * from PHone where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.slotlink != blname then + update PHone set slotlink = blname where slotname = myname; + end if; + return 0; + end if; + raise exception ''illegal slotlink beginning with %'', mytype; +end; +' language plpgsql; +-- ************************************************************ +-- * Support function to clear out the slotlink field if +-- * it still points to specific slot +-- ************************************************************ +create function tg_slotlink_unset(bpchar, bpchar) +returns integer as ' +declare + myname alias for $1; + blname alias for $2; + mytype char(2); + rec record; +begin + mytype := substr(myname, 1, 2); + if mytype = ''PS'' then + select into rec * from PSlot where slotname = myname; + if not found then + return 0; + end if; + if rec.slotlink = blname then + update PSlot set slotlink = '''' where slotname = myname; + end if; + return 0; + end if; + if mytype = ''WS'' then + select into rec * from WSlot where slotname = myname; + if not found then + return 0; + end if; + if rec.slotlink = blname then + update WSlot set slotlink = '''' where slotname = myname; + end if; + return 0; + end if; + if mytype = ''IF'' then + select into rec * from IFace where slotname = myname; + if not found then + return 0; + end if; + if rec.slotlink = blname then + update IFace set slotlink = '''' where slotname = myname; + end if; + return 0; + end if; + if mytype = ''HS'' then + select into rec * from HSlot where slotname = myname; + if not found then + return 0; + end if; + if rec.slotlink = blname then + update HSlot set slotlink = '''' where slotname = myname; + end if; + return 0; + end if; + if mytype = ''PH'' then + select into rec * from PHone where slotname = myname; + if not found then + return 0; + end if; + if rec.slotlink = blname then + update PHone set slotlink = '''' where slotname = myname; + end if; + return 0; + end if; +end; +' language plpgsql; +-- ************************************************************ +-- * Describe the backside of a patchfield slot +-- ************************************************************ +create function pslot_backlink_view(bpchar) +returns text as ' +<> +declare + rec record; + bltype char(2); + retval text; +begin + select into rec * from PSlot where slotname = $1; + if not found then + return ''''; + end if; + if rec.backlink = '''' then + return ''-''; + end if; + bltype := substr(rec.backlink, 1, 2); + if bltype = ''PL'' then + declare + rec record; + begin + select into rec * from PLine where slotname = "outer".rec.backlink; + retval := ''Phone line '' || trim(rec.phonenumber); + if rec.comment != '''' then + retval := retval || '' (''; + retval := retval || rec.comment; + retval := retval || '')''; + end if; + return retval; + end; + end if; + if bltype = ''WS'' then + select into rec * from WSlot where slotname = rec.backlink; + retval := trim(rec.slotname) || '' in room ''; + retval := retval || trim(rec.roomno); + retval := retval || '' -> ''; + return retval || wslot_slotlink_view(rec.slotname); + end if; + return rec.backlink; +end; +' language plpgsql; +-- ************************************************************ +-- * Describe the front of a patchfield slot +-- ************************************************************ +create function pslot_slotlink_view(bpchar) +returns text as ' +declare + psrec record; + sltype char(2); + retval text; +begin + select into psrec * from PSlot where slotname = $1; + if not found then + return ''''; + end if; + if psrec.slotlink = '''' then + return ''-''; + end if; + sltype := substr(psrec.slotlink, 1, 2); + if sltype = ''PS'' then + retval := trim(psrec.slotlink) || '' -> ''; + return retval || pslot_backlink_view(psrec.slotlink); + end if; + if sltype = ''HS'' then + retval := comment from Hub H, HSlot HS + where HS.slotname = psrec.slotlink + and H.name = HS.hubname; + retval := retval || '' slot ''; + retval := retval || slotno::text from HSlot + where slotname = psrec.slotlink; + return retval; + end if; + return psrec.slotlink; +end; +' language plpgsql; +-- ************************************************************ +-- * Describe the front of a wall connector slot +-- ************************************************************ +create function wslot_slotlink_view(bpchar) +returns text as ' +declare + rec record; + sltype char(2); + retval text; +begin + select into rec * from WSlot where slotname = $1; + if not found then + return ''''; + end if; + if rec.slotlink = '''' then + return ''-''; + end if; + sltype := substr(rec.slotlink, 1, 2); + if sltype = ''PH'' then + select into rec * from PHone where slotname = rec.slotlink; + retval := ''Phone '' || trim(rec.slotname); + if rec.comment != '''' then + retval := retval || '' (''; + retval := retval || rec.comment; + retval := retval || '')''; + end if; + return retval; + end if; + if sltype = ''IF'' then + declare + syrow System%RowType; + ifrow IFace%ROWTYPE; + begin + select into ifrow * from IFace where slotname = rec.slotlink; + select into syrow * from System where name = ifrow.sysname; + retval := syrow.name || '' IF ''; + retval := retval || ifrow.ifname; + if syrow.comment != '''' then + retval := retval || '' (''; + retval := retval || syrow.comment; + retval := retval || '')''; + end if; + return retval; + end; + end if; + return rec.slotlink; +end; +' language plpgsql; +-- ************************************************************ +-- * View of a patchfield describing backside and patches +-- ************************************************************ +create view Pfield_v1 as select PF.pfname, PF.slotname, + pslot_backlink_view(PF.slotname) as backside, + pslot_slotlink_view(PF.slotname) as patch + from PSlot PF; +-- +-- First we build the house - so we create the rooms +-- +insert into Room values ('001', 'Entrance'); +insert into Room values ('002', 'Office'); +insert into Room values ('003', 'Office'); +insert into Room values ('004', 'Technical'); +insert into Room values ('101', 'Office'); +insert into Room values ('102', 'Conference'); +insert into Room values ('103', 'Restroom'); +insert into Room values ('104', 'Technical'); +insert into Room values ('105', 'Office'); +insert into Room values ('106', 'Office'); +-- +-- Second we install the wall connectors +-- +insert into WSlot values ('WS.001.1a', '001', '', ''); +insert into WSlot values ('WS.001.1b', '001', '', ''); +insert into WSlot values ('WS.001.2a', '001', '', ''); +insert into WSlot values ('WS.001.2b', '001', '', ''); +insert into WSlot values ('WS.001.3a', '001', '', ''); +insert into WSlot values ('WS.001.3b', '001', '', ''); +insert into WSlot values ('WS.002.1a', '002', '', ''); +insert into WSlot values ('WS.002.1b', '002', '', ''); +insert into WSlot values ('WS.002.2a', '002', '', ''); +insert into WSlot values ('WS.002.2b', '002', '', ''); +insert into WSlot values ('WS.002.3a', '002', '', ''); +insert into WSlot values ('WS.002.3b', '002', '', ''); +insert into WSlot values ('WS.003.1a', '003', '', ''); +insert into WSlot values ('WS.003.1b', '003', '', ''); +insert into WSlot values ('WS.003.2a', '003', '', ''); +insert into WSlot values ('WS.003.2b', '003', '', ''); +insert into WSlot values ('WS.003.3a', '003', '', ''); +insert into WSlot values ('WS.003.3b', '003', '', ''); +insert into WSlot values ('WS.101.1a', '101', '', ''); +insert into WSlot values ('WS.101.1b', '101', '', ''); +insert into WSlot values ('WS.101.2a', '101', '', ''); +insert into WSlot values ('WS.101.2b', '101', '', ''); +insert into WSlot values ('WS.101.3a', '101', '', ''); +insert into WSlot values ('WS.101.3b', '101', '', ''); +insert into WSlot values ('WS.102.1a', '102', '', ''); +insert into WSlot values ('WS.102.1b', '102', '', ''); +insert into WSlot values ('WS.102.2a', '102', '', ''); +insert into WSlot values ('WS.102.2b', '102', '', ''); +insert into WSlot values ('WS.102.3a', '102', '', ''); +insert into WSlot values ('WS.102.3b', '102', '', ''); +insert into WSlot values ('WS.105.1a', '105', '', ''); +insert into WSlot values ('WS.105.1b', '105', '', ''); +insert into WSlot values ('WS.105.2a', '105', '', ''); +insert into WSlot values ('WS.105.2b', '105', '', ''); +insert into WSlot values ('WS.105.3a', '105', '', ''); +insert into WSlot values ('WS.105.3b', '105', '', ''); +insert into WSlot values ('WS.106.1a', '106', '', ''); +insert into WSlot values ('WS.106.1b', '106', '', ''); +insert into WSlot values ('WS.106.2a', '106', '', ''); +insert into WSlot values ('WS.106.2b', '106', '', ''); +insert into WSlot values ('WS.106.3a', '106', '', ''); +insert into WSlot values ('WS.106.3b', '106', '', ''); +-- +-- Now create the patch fields and their slots +-- +insert into PField values ('PF0_1', 'Wallslots basement'); +-- +-- The cables for these will be made later, so they are unconnected for now +-- +insert into PSlot values ('PS.base.a1', 'PF0_1', '', ''); +insert into PSlot values ('PS.base.a2', 'PF0_1', '', ''); +insert into PSlot values ('PS.base.a3', 'PF0_1', '', ''); +insert into PSlot values ('PS.base.a4', 'PF0_1', '', ''); +insert into PSlot values ('PS.base.a5', 'PF0_1', '', ''); +insert into PSlot values ('PS.base.a6', 'PF0_1', '', ''); +-- +-- These are already wired to the wall connectors +-- +insert into PSlot values ('PS.base.b1', 'PF0_1', '', 'WS.002.1a'); +insert into PSlot values ('PS.base.b2', 'PF0_1', '', 'WS.002.1b'); +insert into PSlot values ('PS.base.b3', 'PF0_1', '', 'WS.002.2a'); +insert into PSlot values ('PS.base.b4', 'PF0_1', '', 'WS.002.2b'); +insert into PSlot values ('PS.base.b5', 'PF0_1', '', 'WS.002.3a'); +insert into PSlot values ('PS.base.b6', 'PF0_1', '', 'WS.002.3b'); +insert into PSlot values ('PS.base.c1', 'PF0_1', '', 'WS.003.1a'); +insert into PSlot values ('PS.base.c2', 'PF0_1', '', 'WS.003.1b'); +insert into PSlot values ('PS.base.c3', 'PF0_1', '', 'WS.003.2a'); +insert into PSlot values ('PS.base.c4', 'PF0_1', '', 'WS.003.2b'); +insert into PSlot values ('PS.base.c5', 'PF0_1', '', 'WS.003.3a'); +insert into PSlot values ('PS.base.c6', 'PF0_1', '', 'WS.003.3b'); +-- +-- This patchfield will be renamed later into PF0_2 - so its +-- slots references in pfname should follow +-- +insert into PField values ('PF0_X', 'Phonelines basement'); +insert into PSlot values ('PS.base.ta1', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.ta2', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.ta3', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.ta4', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.ta5', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.ta6', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.tb1', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.tb2', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.tb3', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.tb4', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.tb5', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.tb6', 'PF0_X', '', ''); +insert into PField values ('PF1_1', 'Wallslots first floor'); +insert into PSlot values ('PS.first.a1', 'PF1_1', '', 'WS.101.1a'); +insert into PSlot values ('PS.first.a2', 'PF1_1', '', 'WS.101.1b'); +insert into PSlot values ('PS.first.a3', 'PF1_1', '', 'WS.101.2a'); +insert into PSlot values ('PS.first.a4', 'PF1_1', '', 'WS.101.2b'); +insert into PSlot values ('PS.first.a5', 'PF1_1', '', 'WS.101.3a'); +insert into PSlot values ('PS.first.a6', 'PF1_1', '', 'WS.101.3b'); +insert into PSlot values ('PS.first.b1', 'PF1_1', '', 'WS.102.1a'); +insert into PSlot values ('PS.first.b2', 'PF1_1', '', 'WS.102.1b'); +insert into PSlot values ('PS.first.b3', 'PF1_1', '', 'WS.102.2a'); +insert into PSlot values ('PS.first.b4', 'PF1_1', '', 'WS.102.2b'); +insert into PSlot values ('PS.first.b5', 'PF1_1', '', 'WS.102.3a'); +insert into PSlot values ('PS.first.b6', 'PF1_1', '', 'WS.102.3b'); +insert into PSlot values ('PS.first.c1', 'PF1_1', '', 'WS.105.1a'); +insert into PSlot values ('PS.first.c2', 'PF1_1', '', 'WS.105.1b'); +insert into PSlot values ('PS.first.c3', 'PF1_1', '', 'WS.105.2a'); +insert into PSlot values ('PS.first.c4', 'PF1_1', '', 'WS.105.2b'); +insert into PSlot values ('PS.first.c5', 'PF1_1', '', 'WS.105.3a'); +insert into PSlot values ('PS.first.c6', 'PF1_1', '', 'WS.105.3b'); +insert into PSlot values ('PS.first.d1', 'PF1_1', '', 'WS.106.1a'); +insert into PSlot values ('PS.first.d2', 'PF1_1', '', 'WS.106.1b'); +insert into PSlot values ('PS.first.d3', 'PF1_1', '', 'WS.106.2a'); +insert into PSlot values ('PS.first.d4', 'PF1_1', '', 'WS.106.2b'); +insert into PSlot values ('PS.first.d5', 'PF1_1', '', 'WS.106.3a'); +insert into PSlot values ('PS.first.d6', 'PF1_1', '', 'WS.106.3b'); +-- +-- Now we wire the wall connectors 1a-2a in room 001 to the +-- patchfield. In the second update we make an error, and +-- correct it after +-- +update PSlot set backlink = 'WS.001.1a' where slotname = 'PS.base.a1'; +update PSlot set backlink = 'WS.001.1b' where slotname = 'PS.base.a3'; +select * from WSlot where roomno = '001' order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | + WS.001.3a | 001 | | + WS.001.3b | 001 | | +(6 rows) + +select * from PSlot where slotname ~ 'PS.base.a' order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | + PS.base.a3 | PF0_1 | | WS.001.1b + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | +(6 rows) + +update PSlot set backlink = 'WS.001.2a' where slotname = 'PS.base.a3'; +select * from WSlot where roomno = '001' order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | + WS.001.3a | 001 | | + WS.001.3b | 001 | | +(6 rows) + +select * from PSlot where slotname ~ 'PS.base.a' order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | + PS.base.a3 | PF0_1 | | WS.001.2a + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | +(6 rows) + +update PSlot set backlink = 'WS.001.1b' where slotname = 'PS.base.a2'; +select * from WSlot where roomno = '001' order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | + WS.001.3a | 001 | | + WS.001.3b | 001 | | +(6 rows) + +select * from PSlot where slotname ~ 'PS.base.a' order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | WS.001.1b + PS.base.a3 | PF0_1 | | WS.001.2a + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | +(6 rows) + +-- +-- Same procedure for 2b-3b but this time updating the WSlot instead +-- of the PSlot. Due to the triggers the result is the same: +-- WSlot and corresponding PSlot point to each other. +-- +update WSlot set backlink = 'PS.base.a4' where slotname = 'WS.001.2b'; +update WSlot set backlink = 'PS.base.a6' where slotname = 'WS.001.3a'; +select * from WSlot where roomno = '001' order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | PS.base.a4 + WS.001.3a | 001 | | PS.base.a6 + WS.001.3b | 001 | | +(6 rows) + +select * from PSlot where slotname ~ 'PS.base.a' order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | WS.001.1b + PS.base.a3 | PF0_1 | | WS.001.2a + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | +(6 rows) + +update WSlot set backlink = 'PS.base.a6' where slotname = 'WS.001.3b'; +select * from WSlot where roomno = '001' order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | PS.base.a4 + WS.001.3a | 001 | | PS.base.a6 + WS.001.3b | 001 | | PS.base.a6 +(6 rows) + +select * from PSlot where slotname ~ 'PS.base.a' order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | WS.001.1b + PS.base.a3 | PF0_1 | | WS.001.2a + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | +(6 rows) + +update WSlot set backlink = 'PS.base.a5' where slotname = 'WS.001.3a'; +select * from WSlot where roomno = '001' order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | PS.base.a4 + WS.001.3a | 001 | | PS.base.a5 + WS.001.3b | 001 | | PS.base.a6 +(6 rows) + +select * from PSlot where slotname ~ 'PS.base.a' order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | WS.001.1b + PS.base.a3 | PF0_1 | | WS.001.2a + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | +(6 rows) + +insert into PField values ('PF1_2', 'Phonelines first floor'); +insert into PSlot values ('PS.first.ta1', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.ta2', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.ta3', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.ta4', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.ta5', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.ta6', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.tb1', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.tb2', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.tb3', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.tb4', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.tb5', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.tb6', 'PF1_2', '', ''); +-- +-- Fix the wrong name for patchfield PF0_2 +-- +update PField set name = 'PF0_2' where name = 'PF0_X'; +select * from PSlot order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | WS.001.1b + PS.base.a3 | PF0_1 | | WS.001.2a + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | + PS.base.b1 | PF0_1 | | WS.002.1a + PS.base.b2 | PF0_1 | | WS.002.1b + PS.base.b3 | PF0_1 | | WS.002.2a + PS.base.b4 | PF0_1 | | WS.002.2b + PS.base.b5 | PF0_1 | | WS.002.3a + PS.base.b6 | PF0_1 | | WS.002.3b + PS.base.c1 | PF0_1 | | WS.003.1a + PS.base.c2 | PF0_1 | | WS.003.1b + PS.base.c3 | PF0_1 | | WS.003.2a + PS.base.c4 | PF0_1 | | WS.003.2b + PS.base.c5 | PF0_1 | | WS.003.3a + PS.base.c6 | PF0_1 | | WS.003.3b + PS.base.ta1 | PF0_X | | + PS.base.ta2 | PF0_X | | + PS.base.ta3 | PF0_X | | + PS.base.ta4 | PF0_X | | + PS.base.ta5 | PF0_X | | + PS.base.ta6 | PF0_X | | + PS.base.tb1 | PF0_X | | + PS.base.tb2 | PF0_X | | + PS.base.tb3 | PF0_X | | + PS.base.tb4 | PF0_X | | + PS.base.tb5 | PF0_X | | + PS.base.tb6 | PF0_X | | + PS.first.a1 | PF1_1 | | WS.101.1a + PS.first.a2 | PF1_1 | | WS.101.1b + PS.first.a3 | PF1_1 | | WS.101.2a + PS.first.a4 | PF1_1 | | WS.101.2b + PS.first.a5 | PF1_1 | | WS.101.3a + PS.first.a6 | PF1_1 | | WS.101.3b + PS.first.b1 | PF1_1 | | WS.102.1a + PS.first.b2 | PF1_1 | | WS.102.1b + PS.first.b3 | PF1_1 | | WS.102.2a + PS.first.b4 | PF1_1 | | WS.102.2b + PS.first.b5 | PF1_1 | | WS.102.3a + PS.first.b6 | PF1_1 | | WS.102.3b + PS.first.c1 | PF1_1 | | WS.105.1a + PS.first.c2 | PF1_1 | | WS.105.1b + PS.first.c3 | PF1_1 | | WS.105.2a + PS.first.c4 | PF1_1 | | WS.105.2b + PS.first.c5 | PF1_1 | | WS.105.3a + PS.first.c6 | PF1_1 | | WS.105.3b + PS.first.d1 | PF1_1 | | WS.106.1a + PS.first.d2 | PF1_1 | | WS.106.1b + PS.first.d3 | PF1_1 | | WS.106.2a + PS.first.d4 | PF1_1 | | WS.106.2b + PS.first.d5 | PF1_1 | | WS.106.3a + PS.first.d6 | PF1_1 | | WS.106.3b + PS.first.ta1 | PF1_2 | | + PS.first.ta2 | PF1_2 | | + PS.first.ta3 | PF1_2 | | + PS.first.ta4 | PF1_2 | | + PS.first.ta5 | PF1_2 | | + PS.first.ta6 | PF1_2 | | + PS.first.tb1 | PF1_2 | | + PS.first.tb2 | PF1_2 | | + PS.first.tb3 | PF1_2 | | + PS.first.tb4 | PF1_2 | | + PS.first.tb5 | PF1_2 | | + PS.first.tb6 | PF1_2 | | +(66 rows) + +select * from WSlot order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | PS.base.a4 + WS.001.3a | 001 | | PS.base.a5 + WS.001.3b | 001 | | PS.base.a6 + WS.002.1a | 002 | | + WS.002.1b | 002 | | + WS.002.2a | 002 | | + WS.002.2b | 002 | | + WS.002.3a | 002 | | + WS.002.3b | 002 | | + WS.003.1a | 003 | | + WS.003.1b | 003 | | + WS.003.2a | 003 | | + WS.003.2b | 003 | | + WS.003.3a | 003 | | + WS.003.3b | 003 | | + WS.101.1a | 101 | | + WS.101.1b | 101 | | + WS.101.2a | 101 | | + WS.101.2b | 101 | | + WS.101.3a | 101 | | + WS.101.3b | 101 | | + WS.102.1a | 102 | | + WS.102.1b | 102 | | + WS.102.2a | 102 | | + WS.102.2b | 102 | | + WS.102.3a | 102 | | + WS.102.3b | 102 | | + WS.105.1a | 105 | | + WS.105.1b | 105 | | + WS.105.2a | 105 | | + WS.105.2b | 105 | | + WS.105.3a | 105 | | + WS.105.3b | 105 | | + WS.106.1a | 106 | | + WS.106.1b | 106 | | + WS.106.2a | 106 | | + WS.106.2b | 106 | | + WS.106.3a | 106 | | + WS.106.3b | 106 | | +(42 rows) + +-- +-- Install the central phone system and create the phone numbers. +-- They are weired on insert to the patchfields. Again the +-- triggers automatically tell the PSlots to update their +-- backlink field. +-- +insert into PLine values ('PL.001', '-0', 'Central call', 'PS.base.ta1'); +insert into PLine values ('PL.002', '-101', '', 'PS.base.ta2'); +insert into PLine values ('PL.003', '-102', '', 'PS.base.ta3'); +insert into PLine values ('PL.004', '-103', '', 'PS.base.ta5'); +insert into PLine values ('PL.005', '-104', '', 'PS.base.ta6'); +insert into PLine values ('PL.006', '-106', '', 'PS.base.tb2'); +insert into PLine values ('PL.007', '-108', '', 'PS.base.tb3'); +insert into PLine values ('PL.008', '-109', '', 'PS.base.tb4'); +insert into PLine values ('PL.009', '-121', '', 'PS.base.tb5'); +insert into PLine values ('PL.010', '-122', '', 'PS.base.tb6'); +insert into PLine values ('PL.015', '-134', '', 'PS.first.ta1'); +insert into PLine values ('PL.016', '-137', '', 'PS.first.ta3'); +insert into PLine values ('PL.017', '-139', '', 'PS.first.ta4'); +insert into PLine values ('PL.018', '-362', '', 'PS.first.tb1'); +insert into PLine values ('PL.019', '-363', '', 'PS.first.tb2'); +insert into PLine values ('PL.020', '-364', '', 'PS.first.tb3'); +insert into PLine values ('PL.021', '-365', '', 'PS.first.tb5'); +insert into PLine values ('PL.022', '-367', '', 'PS.first.tb6'); +insert into PLine values ('PL.028', '-501', 'Fax entrance', 'PS.base.ta2'); +insert into PLine values ('PL.029', '-502', 'Fax first floor', 'PS.first.ta1'); +-- +-- Buy some phones, plug them into the wall and patch the +-- phone lines to the corresponding patchfield slots. +-- +insert into PHone values ('PH.hc001', 'Hicom standard', 'WS.001.1a'); +update PSlot set slotlink = 'PS.base.ta1' where slotname = 'PS.base.a1'; +insert into PHone values ('PH.hc002', 'Hicom standard', 'WS.002.1a'); +update PSlot set slotlink = 'PS.base.ta5' where slotname = 'PS.base.b1'; +insert into PHone values ('PH.hc003', 'Hicom standard', 'WS.002.2a'); +update PSlot set slotlink = 'PS.base.tb2' where slotname = 'PS.base.b3'; +insert into PHone values ('PH.fax001', 'Canon fax', 'WS.001.2a'); +update PSlot set slotlink = 'PS.base.ta2' where slotname = 'PS.base.a3'; +-- +-- Install a hub at one of the patchfields, plug a computers +-- ethernet interface into the wall and patch it to the hub. +-- +insert into Hub values ('base.hub1', 'Patchfield PF0_1 hub', 16); +insert into System values ('orion', 'PC'); +insert into IFace values ('IF', 'orion', 'eth0', 'WS.002.1b'); +update PSlot set slotlink = 'HS.base.hub1.1' where slotname = 'PS.base.b2'; +-- +-- Now we take a look at the patchfield +-- +-- PGXCTODO: This is failing due to issue 3522907, complicated SELECT queries in plpgsql functions +select * from PField_v1 where pfname = 'PF0_1' order by slotname; +ERROR: could not determine data type of parameter $1 +CONTEXT: SQL statement "select * from WSlot where slotname = rec.backlink" +PL/pgSQL function "pslot_backlink_view" line 31 at SQL statement +select * from PField_v1 where pfname = 'PF0_2' order by slotname; + pfname | slotname | backside | patch +--------+----------+----------+------- +(0 rows) + +-- +-- Finally we want errors +-- +insert into PField values ('PF1_1', 'should fail due to unique index'); +ERROR: duplicate key value violates unique constraint "pfield_name" +DETAIL: Key (name)=(PF1_1) already exists. +update PSlot set backlink = 'WS.not.there' where slotname = 'PS.base.a1'; +update PSlot set backlink = 'XX.illegal' where slotname = 'PS.base.a1'; +update PSlot set slotlink = 'PS.not.there' where slotname = 'PS.base.a1'; +update PSlot set slotlink = 'XX.illegal' where slotname = 'PS.base.a1'; +insert into HSlot values ('HS', 'base.hub1', 1, ''); +insert into HSlot values ('HS', 'base.hub1', 20, ''); +ERROR: duplicate key value violates unique constraint "hslot_name" +DETAIL: Key (slotname)=(HS ) already exists. +delete from HSlot; +insert into IFace values ('IF', 'notthere', 'eth0', ''); +ERROR: duplicate key value violates unique constraint "iface_name" +DETAIL: Key (slotname)=(IF ) already exists. +insert into IFace values ('IF', 'orion', 'ethernet_interface_name_too_long', ''); +ERROR: duplicate key value violates unique constraint "iface_name" +DETAIL: Key (slotname)=(IF ) already exists. +-- +-- The following tests are unrelated to the scenario outlined above; +-- they merely exercise specific parts of PL/pgSQL +-- +-- +-- Test recursion, per bug report 7-Sep-01 +-- +CREATE FUNCTION recursion_test(int,int) RETURNS text AS ' +DECLARE rslt text; +BEGIN + IF $1 <= 0 THEN + rslt = CAST($2 AS TEXT); + ELSE + rslt = CAST($1 AS TEXT) || '','' || recursion_test($1 - 1, $2); + END IF; + RETURN rslt; +END;' LANGUAGE plpgsql; +SELECT recursion_test(4,3); + recursion_test +---------------- + 4,3,2,1,3 +(1 row) + +-- +-- Test the FOUND magic variable +-- +CREATE TABLE found_test_tbl (a int) distribute by round robin; +create function test_found() + returns boolean as ' + declare + begin + insert into found_test_tbl values (1); + if FOUND then + insert into found_test_tbl values (2); + end if; + + update found_test_tbl set a = 100 where a = 1; + if FOUND then + insert into found_test_tbl values (3); + end if; + + delete from found_test_tbl where a = 9999; -- matches no rows + if not FOUND then + insert into found_test_tbl values (4); + end if; + + for i in 1 .. 10 loop + -- no need to do anything + end loop; + if FOUND then + insert into found_test_tbl values (5); + end if; + + -- never executes the loop + for i in 2 .. 1 loop + -- no need to do anything + end loop; + if not FOUND then + insert into found_test_tbl values (6); + end if; + return true; + end;' language plpgsql; +select test_found(); +ERROR: Postgres-XC does not support DML queries in PL/pgSQL +CONTEXT: PL/pgSQL function "test_found" line 4 at SQL statement +select * from found_test_tbl order by 1; + a +--- +(0 rows) + +-- +-- Test set-returning functions for PL/pgSQL +-- +create function test_table_func_rec() returns setof found_test_tbl as ' +DECLARE + rec RECORD; +BEGIN + FOR rec IN select * from found_test_tbl LOOP + RETURN NEXT rec; + END LOOP; + RETURN; +END;' language plpgsql; +select * from test_table_func_rec() order by 1; + a +--- +(0 rows) + +create function test_table_func_row() returns setof found_test_tbl as ' +DECLARE + row found_test_tbl%ROWTYPE; +BEGIN + FOR row IN select * from found_test_tbl LOOP + RETURN NEXT row; + END LOOP; + RETURN; +END;' language plpgsql; +select * from test_table_func_row() order by 1; + a +--- +(0 rows) + +create function test_ret_set_scalar(int,int) returns setof int as ' +DECLARE + i int; +BEGIN + FOR i IN $1 .. $2 LOOP + RETURN NEXT i + 1; + END LOOP; + RETURN; +END;' language plpgsql; +select * from test_ret_set_scalar(1,10) order by 1; + test_ret_set_scalar +--------------------- + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 +(10 rows) + +create function test_ret_set_rec_dyn(int) returns setof record as ' +DECLARE + retval RECORD; +BEGIN + IF $1 > 10 THEN + SELECT INTO retval 5, 10, 15; + RETURN NEXT retval; + RETURN NEXT retval; + ELSE + SELECT INTO retval 50, 5::numeric, ''xxx''::text; + RETURN NEXT retval; + RETURN NEXT retval; + END IF; + RETURN; +END;' language plpgsql; +SELECT * FROM test_ret_set_rec_dyn(1500) AS (a int, b int, c int) order by a, b, c; + a | b | c +---+----+---- + 5 | 10 | 15 + 5 | 10 | 15 +(2 rows) + +SELECT * FROM test_ret_set_rec_dyn(5) AS (a int, b numeric, c text) order by a, b, c; + a | b | c +----+---+----- + 50 | 5 | xxx + 50 | 5 | xxx +(2 rows) + +create function test_ret_rec_dyn(int) returns record as ' +DECLARE + retval RECORD; +BEGIN + IF $1 > 10 THEN + SELECT INTO retval 5, 10, 15; + RETURN retval; + ELSE + SELECT INTO retval 50, 5::numeric, ''xxx''::text; + RETURN retval; + END IF; +END;' language plpgsql; +SELECT * FROM test_ret_rec_dyn(1500) AS (a int, b int, c int) order by a, b, c; + a | b | c +---+----+---- + 5 | 10 | 15 +(1 row) + +SELECT * FROM test_ret_rec_dyn(5) AS (a int, b numeric, c text) order by a, b, c; + a | b | c +----+---+----- + 50 | 5 | xxx +(1 row) + +-- +-- Test handling of OUT parameters, including polymorphic cases. +-- Note that RETURN is optional with OUT params; we try both ways. +-- +-- wrong way to do it: +create function f1(in i int, out j int) returns int as $$ +begin + return i+1; +end$$ language plpgsql; +ERROR: RETURN cannot have a parameter in function with OUT parameters +LINE 3: return i+1; + ^ +create function f1(in i int, out j int) as $$ +begin + j := i+1; + return; +end$$ language plpgsql; +select f1(42); + f1 +---- + 43 +(1 row) + +select * from f1(42); + j +---- + 43 +(1 row) + +create or replace function f1(inout i int) as $$ +begin + i := i+1; +end$$ language plpgsql; +select f1(42); + f1 +---- + 43 +(1 row) + +select * from f1(42); + i +---- + 43 +(1 row) + +drop function f1(int); +create function f1(in i int, out j int) returns setof int as $$ +begin + j := i+1; + return next; + j := i+2; + return next; + return; +end$$ language plpgsql; +select * from f1(42) order by 1; + j +---- + 43 + 44 +(2 rows) + +drop function f1(int); +create function f1(in i int, out j int, out k text) as $$ +begin + j := i; + j := j+1; + k := 'foo'; +end$$ language plpgsql; +select f1(42); + f1 +---------- + (43,foo) +(1 row) + +select * from f1(42); + j | k +----+----- + 43 | foo +(1 row) + +drop function f1(int); +create function f1(in i int, out j int, out k text) returns setof record as $$ +begin + j := i+1; + k := 'foo'; + return next; + j := j+1; + k := 'foot'; + return next; +end$$ language plpgsql; +select * from f1(42) order by j, k;; + j | k +----+------ + 43 | foo + 44 | foot +(2 rows) + +drop function f1(int); +create function duplic(in i anyelement, out j anyelement, out k anyarray) as $$ +begin + j := i; + k := array[j,j]; + return; +end$$ language plpgsql; +select * from duplic(42); + j | k +----+--------- + 42 | {42,42} +(1 row) + +select * from duplic('foo'::text); + j | k +-----+----------- + foo | {foo,foo} +(1 row) + +drop function duplic(anyelement); +-- +-- test PERFORM +-- +create table perform_test ( + a INT, + b INT +); +create function simple_func(int) returns boolean as ' +BEGIN + IF $1 < 20 THEN + INSERT INTO perform_test VALUES ($1, $1 + 10); + RETURN TRUE; + ELSE + RETURN FALSE; + END IF; +END;' language plpgsql; +create function perform_test_func() returns void as ' +BEGIN + IF FOUND then + INSERT INTO perform_test VALUES (100, 100); + END IF; + + PERFORM simple_func(5); + + IF FOUND then + INSERT INTO perform_test VALUES (100, 100); + END IF; + + PERFORM simple_func(50); + + IF FOUND then + INSERT INTO perform_test VALUES (100, 100); + END IF; + + RETURN; +END;' language plpgsql; +SELECT perform_test_func(); +ERROR: Postgres-XC does not support DML queries in PL/pgSQL +CONTEXT: PL/pgSQL function "simple_func" line 4 at SQL statement +SQL statement "SELECT simple_func(5)" +PL/pgSQL function "perform_test_func" line 7 at PERFORM +SELECT * FROM perform_test order by a, b; + a | b +---+--- +(0 rows) + +drop table perform_test; +-- +-- Test error trapping +-- +create function trap_zero_divide(int) returns int as $$ +declare x int; + sx smallint; +begin + begin -- start a subtransaction + raise notice 'should see this'; + x := 100 / $1; + raise notice 'should see this only if % <> 0', $1; + sx := $1; + raise notice 'should see this only if % fits in smallint', $1; + if $1 < 0 then + raise exception '% is less than zero', $1; + end if; + exception + when division_by_zero then + raise notice 'caught division_by_zero'; + x := -1; + when NUMERIC_VALUE_OUT_OF_RANGE then + raise notice 'caught numeric_value_out_of_range'; + x := -2; + end; + return x; +end$$ language plpgsql; +select trap_zero_divide(50); +NOTICE: should see this +NOTICE: should see this only if 50 <> 0 +NOTICE: should see this only if 50 fits in smallint + trap_zero_divide +------------------ + 2 +(1 row) + +select trap_zero_divide(0); +NOTICE: should see this +NOTICE: caught division_by_zero + trap_zero_divide +------------------ + -1 +(1 row) + +select trap_zero_divide(100000); +NOTICE: should see this +NOTICE: should see this only if 100000 <> 0 +NOTICE: caught numeric_value_out_of_range + trap_zero_divide +------------------ + -2 +(1 row) + +select trap_zero_divide(-100); +NOTICE: should see this +NOTICE: should see this only if -100 <> 0 +NOTICE: should see this only if -100 fits in smallint +ERROR: -100 is less than zero +create function trap_matching_test(int) returns int as $$ +declare x int; + sx smallint; + y int; +begin + begin -- start a subtransaction + x := 100 / $1; + sx := $1; + select into y unique1 from tenk1 where unique2 = + (select unique2 from tenk1 b where ten = $1); + exception + when data_exception then -- category match + raise notice 'caught data_exception'; + x := -1; + when NUMERIC_VALUE_OUT_OF_RANGE OR CARDINALITY_VIOLATION then + raise notice 'caught numeric_value_out_of_range or cardinality_violation'; + x := -2; + end; + return x; +end$$ language plpgsql; +-- PGXCTODO: This is failing due to issue 3522907, complicated SELECT queries in plpgsql functions +select trap_matching_test(50); +ERROR: bind message supplies 1 parameters, but prepared statement "" requires 0 +CONTEXT: SQL statement "select unique1 from tenk1 where unique2 = + (select unique2 from tenk1 b where ten = $1)" +PL/pgSQL function "trap_matching_test" line 9 at SQL statement +select trap_matching_test(0); +NOTICE: caught data_exception + trap_matching_test +-------------------- + -1 +(1 row) + +select trap_matching_test(100000); +NOTICE: caught data_exception + trap_matching_test +-------------------- + -1 +(1 row) + +-- PGXCTODO: This is failing due to issue 3522907, complicated SELECT queries in plpgsql functions +select trap_matching_test(1); +ERROR: bind message supplies 1 parameters, but prepared statement "" requires 0 +CONTEXT: SQL statement "select unique1 from tenk1 where unique2 = + (select unique2 from tenk1 b where ten = $1)" +PL/pgSQL function "trap_matching_test" line 9 at SQL statement +create temp table foo (f1 int); +create function blockme() returns int as $$ +declare x int; +begin + x := 1; + insert into foo values(x); + begin + x := x + 1; + insert into foo values(x); + -- we assume this will take longer than 2 seconds: + select count(*) into x from tenk1 a, tenk1 b, tenk1 c; + exception + when others then + raise notice 'caught others?'; + return -1; + when query_canceled then + raise notice 'nyeah nyeah, can''t stop me'; + x := x * 10; + end; + insert into foo values(x); + return x; +end$$ language plpgsql; +set statement_timeout to 2000; +select blockme(); +ERROR: Postgres-XC does not support DML queries in PL/pgSQL +CONTEXT: PL/pgSQL function "blockme" line 5 at SQL statement +reset statement_timeout; +select * from foo order by 1; + f1 +---- +(0 rows) + +drop table foo; +-- Test for pass-by-ref values being stored in proper context +create function test_variable_storage() returns text as $$ +declare x text; +begin + x := '1234'; + begin + x := x || '5678'; + -- force error inside subtransaction SPI context + perform trap_zero_divide(-100); + exception + when others then + x := x || '9012'; + end; + return x; +end$$ language plpgsql; +select test_variable_storage(); +NOTICE: should see this +CONTEXT: SQL statement "SELECT trap_zero_divide(-100)" +PL/pgSQL function "test_variable_storage" line 8 at PERFORM +NOTICE: should see this only if -100 <> 0 +CONTEXT: SQL statement "SELECT trap_zero_divide(-100)" +PL/pgSQL function "test_variable_storage" line 8 at PERFORM +NOTICE: should see this only if -100 fits in smallint +CONTEXT: SQL statement "SELECT trap_zero_divide(-100)" +PL/pgSQL function "test_variable_storage" line 8 at PERFORM + test_variable_storage +----------------------- + 123456789012 +(1 row) + +-- +-- Test proper snapshot handling in simple expressions +-- +create temp table users(login text, id serial); +NOTICE: CREATE TABLE will create implicit sequence "users_id_seq" for serial column "users.id" +create function sp_id_user(a_login text) returns int as $$ +declare x int; +begin + select into x id from users where login = a_login; + if found then return x; end if; + return 0; +end$$ language plpgsql stable; +insert into users values('user1'); +select sp_id_user('user1'); + sp_id_user +------------ + 1 +(1 row) + +select sp_id_user('userx'); + sp_id_user +------------ + 0 +(1 row) + +create function sp_add_user(a_login text) returns int as $$ +declare my_id_user int; +begin + my_id_user = sp_id_user( a_login ); + IF my_id_user > 0 THEN + RETURN -1; -- error code for existing user + END IF; + INSERT INTO users ( login ) VALUES ( a_login ); + my_id_user = sp_id_user( a_login ); + IF my_id_user = 0 THEN + RETURN -2; -- error code for insertion failure + END IF; + RETURN my_id_user; +end$$ language plpgsql; +select sp_add_user('user1'); + sp_add_user +------------- + -1 +(1 row) + +select sp_add_user('user2'); +ERROR: Postgres-XC does not support DML queries in PL/pgSQL +CONTEXT: PL/pgSQL function "sp_add_user" line 8 at SQL statement +select sp_add_user('user2'); + sp_add_user +------------- + 2 +(1 row) + +select sp_add_user('user3'); + sp_add_user +------------- + 3 +(1 row) + +select sp_add_user('user3'); + sp_add_user +------------- + -1 +(1 row) + +drop function sp_add_user(text); +drop function sp_id_user(text); +-- +-- tests for refcursors +-- +create table rc_test (a int, b int); +copy rc_test from stdin; +create function return_refcursor(rc refcursor) returns refcursor as $$ +begin + open rc for select a from rc_test; + return rc; +end +$$ language plpgsql; +create function refcursor_test1(refcursor) returns refcursor as $$ +begin + perform return_refcursor($1); + return $1; +end +$$ language plpgsql; +begin; +select refcursor_test1('test1'); + refcursor_test1 +----------------- + test1 +(1 row) + +fetch next in test1; + a +--- + 5 +(1 row) + +select refcursor_test1('test2'); + refcursor_test1 +----------------- + test2 +(1 row) + +fetch all from test2; + a +----- + 5 + 50 + 500 +(3 rows) + +commit; +-- should fail +fetch next from test1; +ERROR: cursor "test1" does not exist +create function refcursor_test2(int, int) returns boolean as $$ +declare + c1 cursor (param1 int, param2 int) for select * from rc_test where a > param1 and b > param2; + nonsense record; +begin + open c1($1, $2); + fetch c1 into nonsense; + close c1; + if found then + return true; + else + return false; + end if; +end +$$ language plpgsql; +-- PGXCTODO: This is failing due to issue 3522907, complicated SELECT queries in plpgsql functions +select refcursor_test2(20000, 20000) as "Should be false", + refcursor_test2(20, 20) as "Should be true"; +ERROR: could not determine data type of parameter $1 +CONTEXT: PL/pgSQL function "refcursor_test2" line 7 at FETCH +-- +-- tests for "raise" processing +-- +create function raise_test1(int) returns int as $$ +begin + raise notice 'This message has too many parameters!', $1; + return $1; +end; +$$ language plpgsql; +select raise_test1(5); +ERROR: too many parameters specified for RAISE +CONTEXT: PL/pgSQL function "raise_test1" line 3 at RAISE +create function raise_test2(int) returns int as $$ +begin + raise notice 'This message has too few parameters: %, %, %', $1, $1; + return $1; +end; +$$ language plpgsql; +select raise_test2(10); +ERROR: too few parameters specified for RAISE +CONTEXT: PL/pgSQL function "raise_test2" line 3 at RAISE +-- Test re-RAISE inside a nested exception block. This case is allowed +-- by Oracle's PL/SQL but was handled differently by PG before 9.1. +CREATE FUNCTION reraise_test() RETURNS void AS $$ +BEGIN + BEGIN + RAISE syntax_error; + EXCEPTION + WHEN syntax_error THEN + BEGIN + raise notice 'exception % thrown in inner block, reraising', sqlerrm; + RAISE; + EXCEPTION + WHEN OTHERS THEN + raise notice 'RIGHT - exception % caught in inner block', sqlerrm; + END; + END; +EXCEPTION + WHEN OTHERS THEN + raise notice 'WRONG - exception % caught in outer block', sqlerrm; +END; +$$ LANGUAGE plpgsql; +SELECT reraise_test(); +NOTICE: exception syntax_error thrown in inner block, reraising +NOTICE: RIGHT - exception syntax_error caught in inner block + reraise_test +-------------- + +(1 row) + +-- +-- reject function definitions that contain malformed SQL queries at +-- compile-time, where possible +-- +create function bad_sql1() returns int as $$ +declare a int; +begin + a := 5; + Johnny Yuma; + a := 10; + return a; +end$$ language plpgsql; +ERROR: syntax error at or near "Johnny" +LINE 5: Johnny Yuma; + ^ +create function bad_sql2() returns int as $$ +declare r record; +begin + for r in select I fought the law, the law won LOOP + raise notice 'in loop'; + end loop; + return 5; +end;$$ language plpgsql; +ERROR: syntax error at or near "the" +LINE 4: for r in select I fought the law, the law won LOOP + ^ +-- a RETURN expression is mandatory, except for void-returning +-- functions, where it is not allowed +create function missing_return_expr() returns int as $$ +begin + return ; +end;$$ language plpgsql; +ERROR: missing expression at or near ";" +LINE 3: return ; + ^ +create function void_return_expr() returns void as $$ +begin + return 5; +end;$$ language plpgsql; +ERROR: RETURN cannot have a parameter in function returning void +LINE 3: return 5; + ^ +-- VOID functions are allowed to omit RETURN +create function void_return_expr() returns void as $$ +begin + perform 2+2; +end;$$ language plpgsql; +select void_return_expr(); + void_return_expr +------------------ + +(1 row) + +-- but ordinary functions are not +create function missing_return_expr() returns int as $$ +begin + perform 2+2; +end;$$ language plpgsql; +select missing_return_expr(); +ERROR: control reached end of function without RETURN +CONTEXT: PL/pgSQL function "missing_return_expr" +drop function void_return_expr(); +drop function missing_return_expr(); +-- +-- EXECUTE ... INTO test +-- +create table eifoo (i integer, y integer); +create type eitype as (i integer, y integer); +create or replace function execute_into_test(varchar) returns record as $$ +declare + _r record; + _rt eifoo%rowtype; + _v eitype; + i int; + j int; + k int; +begin + execute 'insert into '||$1||' values(10,15)'; + execute 'select (row).* from (select row(10,1)::eifoo) s' into _r; + raise notice '% %', _r.i, _r.y; + execute 'select * from '||$1||' limit 1' into _rt; + raise notice '% %', _rt.i, _rt.y; + execute 'select *, 20 from '||$1||' limit 1' into i, j, k; + raise notice '% % %', i, j, k; + execute 'select 1,2' into _v; + return _v; +end; $$ language plpgsql; +select execute_into_test('eifoo'); +NOTICE: 10 1 +NOTICE: 10 15 +NOTICE: 10 15 20 + execute_into_test +------------------- + (1,2) +(1 row) + +drop table eifoo cascade; +drop type eitype cascade; +-- +-- SQLSTATE and SQLERRM test +-- +create function excpt_test1() returns void as $$ +begin + raise notice '% %', sqlstate, sqlerrm; +end; $$ language plpgsql; +-- should fail: SQLSTATE and SQLERRM are only in defined EXCEPTION +-- blocks +select excpt_test1(); +ERROR: column "sqlstate" does not exist +LINE 1: SELECT sqlstate + ^ +QUERY: SELECT sqlstate +CONTEXT: PL/pgSQL function "excpt_test1" line 3 at RAISE +create function excpt_test2() returns void as $$ +begin + begin + begin + raise notice '% %', sqlstate, sqlerrm; + end; + end; +end; $$ language plpgsql; +-- should fail +select excpt_test2(); +ERROR: column "sqlstate" does not exist +LINE 1: SELECT sqlstate + ^ +QUERY: SELECT sqlstate +CONTEXT: PL/pgSQL function "excpt_test2" line 5 at RAISE +create function excpt_test3() returns void as $$ +begin + begin + raise exception 'user exception'; + exception when others then + raise notice 'caught exception % %', sqlstate, sqlerrm; + begin + raise notice '% %', sqlstate, sqlerrm; + perform 10/0; + exception + when substring_error then + -- this exception handler shouldn't be invoked + raise notice 'unexpected exception: % %', sqlstate, sqlerrm; + when division_by_zero then + raise notice 'caught exception % %', sqlstate, sqlerrm; + end; + raise notice '% %', sqlstate, sqlerrm; + end; +end; $$ language plpgsql; +select excpt_test3(); +NOTICE: caught exception P0001 user exception +NOTICE: P0001 user exception +NOTICE: caught exception 22012 division by zero +NOTICE: P0001 user exception + excpt_test3 +------------- + +(1 row) + +drop function excpt_test1(); +drop function excpt_test2(); +drop function excpt_test3(); +-- parameters of raise stmt can be expressions +create function raise_exprs() returns void as $$ +declare + a integer[] = '{10,20,30}'; + c varchar = 'xyz'; + i integer; +begin + i := 2; + raise notice '%; %; %; %; %; %', a, a[i], c, (select c || 'abc'), row(10,'aaa',NULL,30), NULL; +end;$$ language plpgsql; +select raise_exprs(); +NOTICE: {10,20,30}; 20; xyz; xyzabc; (10,aaa,,30); + raise_exprs +------------- + +(1 row) + +drop function raise_exprs(); +-- continue statement +create table conttesttbl(idx serial, v integer); +NOTICE: CREATE TABLE will create implicit sequence "conttesttbl_idx_seq" for serial column "conttesttbl.idx" +insert into conttesttbl(v) values(10); +insert into conttesttbl(v) values(20); +insert into conttesttbl(v) values(30); +insert into conttesttbl(v) values(40); +create function continue_test1() returns void as $$ +declare _i integer = 0; _r record; +begin + raise notice '---1---'; + loop + _i := _i + 1; + raise notice '%', _i; + continue when _i < 10; + exit; + end loop; + + raise notice '---2---'; + <> + loop + _i := _i - 1; + loop + raise notice '%', _i; + continue lbl when _i > 0; + exit lbl; + end loop; + end loop; + + raise notice '---3---'; + <> + while _i < 10 loop + _i := _i + 1; + continue the_loop when _i % 2 = 0; + raise notice '%', _i; + end loop; + + raise notice '---4---'; + for _i in 1..10 loop + begin + -- applies to outer loop, not the nested begin block + continue when _i < 5; + raise notice '%', _i; + end; + end loop; + + raise notice '---5---'; + for _r in select * from conttesttbl loop + continue when _r.v <= 20; + raise notice '%', _r.v; + end loop; + + raise notice '---6---'; + for _r in execute 'select * from conttesttbl' loop + continue when _r.v <= 20; + raise notice '%', _r.v; + end loop; + + raise notice '---7---'; + for _i in 1..3 loop + raise notice '%', _i; + continue when _i = 3; + end loop; + + raise notice '---8---'; + _i := 1; + while _i <= 3 loop + raise notice '%', _i; + _i := _i + 1; + continue when _i = 3; + end loop; + + raise notice '---9---'; + for _r in select * from conttesttbl order by v limit 1 loop + raise notice '%', _r.v; + continue; + end loop; + + raise notice '---10---'; + for _r in execute 'select * from conttesttbl order by v limit 1' loop + raise notice '%', _r.v; + continue; + end loop; +end; $$ language plpgsql; +select continue_test1(); +NOTICE: ---1--- +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 +NOTICE: 5 +NOTICE: 6 +NOTICE: 7 +NOTICE: 8 +NOTICE: 9 +NOTICE: 10 +NOTICE: ---2--- +NOTICE: 9 +NOTICE: 8 +NOTICE: 7 +NOTICE: 6 +NOTICE: 5 +NOTICE: 4 +NOTICE: 3 +NOTICE: 2 +NOTICE: 1 +NOTICE: 0 +NOTICE: ---3--- +NOTICE: 1 +NOTICE: 3 +NOTICE: 5 +NOTICE: 7 +NOTICE: 9 +NOTICE: ---4--- +NOTICE: 5 +NOTICE: 6 +NOTICE: 7 +NOTICE: 8 +NOTICE: 9 +NOTICE: 10 +NOTICE: ---5--- +NOTICE: 30 +NOTICE: 40 +NOTICE: ---6--- +NOTICE: 30 +NOTICE: 40 +NOTICE: ---7--- +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: ---8--- +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: ---9--- +NOTICE: 10 +NOTICE: ---10--- +NOTICE: 10 + continue_test1 +---------------- + +(1 row) + +-- CONTINUE is only legal inside a loop +create function continue_test2() returns void as $$ +begin + begin + continue; + end; + return; +end; +$$ language plpgsql; +-- should fail +select continue_test2(); +ERROR: CONTINUE cannot be used outside a loop +CONTEXT: PL/pgSQL function "continue_test2" +-- CONTINUE can't reference the label of a named block +create function continue_test3() returns void as $$ +begin + <> + begin + loop + continue begin_block1; + end loop; + end; +end; +$$ language plpgsql; +-- should fail +select continue_test3(); +ERROR: CONTINUE cannot be used outside a loop +CONTEXT: PL/pgSQL function "continue_test3" +drop function continue_test1(); +drop function continue_test2(); +drop function continue_test3(); +drop table conttesttbl; +-- verbose end block and end loop +create function end_label1() returns void as $$ +<> +begin + <> + for _i in 1 .. 10 loop + exit flbl1; + end loop flbl1; + <> + for _i in 1 .. 10 loop + exit flbl2; + end loop; +end blbl; +$$ language plpgsql; +select end_label1(); + end_label1 +------------ + +(1 row) + +drop function end_label1(); +-- should fail: undefined end label +create function end_label2() returns void as $$ +begin + for _i in 1 .. 10 loop + exit; + end loop flbl1; +end; +$$ language plpgsql; +ERROR: label does not exist at or near "flbl1" +LINE 5: end loop flbl1; + ^ +-- should fail: end label does not match start label +create function end_label3() returns void as $$ +<> +begin + <> + for _i in 1 .. 10 loop + exit; + end loop outer_label; +end; +$$ language plpgsql; +ERROR: end label "outer_label" differs from block's label "inner_label" +LINE 7: end loop outer_label; + ^ +-- should fail: end label on a block without a start label +create function end_label4() returns void as $$ +<> +begin + for _i in 1 .. 10 loop + exit; + end loop outer_label; +end; +$$ language plpgsql; +ERROR: end label "outer_label" specified for unlabelled block +LINE 6: end loop outer_label; + ^ +-- using list of scalars in fori and fore stmts +create function for_vect() returns void as $proc$ +<>declare a integer; b varchar; c varchar; r record; +begin + -- fori + for i in 1 .. 3 loop + raise notice '%', i; + end loop; + -- fore with record var + for r in select gs as aa, 'BB' as bb, 'CC' as cc from generate_series(1,4) gs loop + raise notice '% % %', r.aa, r.bb, r.cc; + end loop; + -- fore with single scalar + for a in select gs from generate_series(1,4) gs loop + raise notice '%', a; + end loop; + -- fore with multiple scalars + for a,b,c in select gs, 'BB','CC' from generate_series(1,4) gs loop + raise notice '% % %', a, b, c; + end loop; + -- using qualified names in fors, fore is enabled, disabled only for fori + for lbl.a, lbl.b, lbl.c in execute $$select gs, 'bb','cc' from generate_series(1,4) gs$$ loop + raise notice '% % %', a, b, c; + end loop; +end; +$proc$ language plpgsql; +select for_vect(); +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 1 BB CC +NOTICE: 2 BB CC +NOTICE: 3 BB CC +NOTICE: 4 BB CC +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 +NOTICE: 1 BB CC +NOTICE: 2 BB CC +NOTICE: 3 BB CC +NOTICE: 4 BB CC +NOTICE: 1 bb cc +NOTICE: 2 bb cc +NOTICE: 3 bb cc +NOTICE: 4 bb cc + for_vect +---------- + +(1 row) + +-- regression test: verify that multiple uses of same plpgsql datum within +-- a SQL command all get mapped to the same $n parameter. The return value +-- of the SELECT is not important, we only care that it doesn't fail with +-- a complaint about an ungrouped column reference. +create function multi_datum_use(p1 int) returns bool as $$ +declare + x int; + y int; +begin + select into x,y unique1/p1, unique1/$1 from tenk1 group by unique1/p1; + return x = y; +end$$ language plpgsql; +select multi_datum_use(42); + multi_datum_use +----------------- + t +(1 row) + +-- +-- Test STRICT limiter in both planned and EXECUTE invocations. +-- Note that a data-modifying query is quasi strict (disallow multi rows) +-- by default in the planned case, but not in EXECUTE. +-- +create temp table foo (f1 int, f2 int); +insert into foo values (1,2), (3,4); +create or replace function footest() returns void as $$ +declare x record; +begin + -- should work + insert into foo values(5,6) returning * into x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: RETURNING clause not yet supported +CONTEXT: SQL statement "insert into foo values(5,6) returning *" +PL/pgSQL function "footest" line 5 at SQL statement +create or replace function footest() returns void as $$ +declare x record; +begin + -- should fail due to implicit strict + insert into foo values(7,8),(9,10) returning * into x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: RETURNING clause not yet supported +CONTEXT: SQL statement "insert into foo values(7,8),(9,10) returning *" +PL/pgSQL function "footest" line 5 at SQL statement +create or replace function footest() returns void as $$ +declare x record; +begin + -- should work + execute 'insert into foo values(5,6) returning *' into x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: RETURNING clause not yet supported +CONTEXT: SQL statement "insert into foo values(5,6) returning *" +PL/pgSQL function "footest" line 5 at EXECUTE statement +create or replace function footest() returns void as $$ +declare x record; +begin + -- this should work since EXECUTE isn't as picky + execute 'insert into foo values(7,8),(9,10) returning *' into x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: RETURNING clause not yet supported +CONTEXT: SQL statement "insert into foo values(7,8),(9,10) returning *" +PL/pgSQL function "footest" line 5 at EXECUTE statement +select * from foo order by 1, 2; + f1 | f2 +----+---- + 1 | 2 + 3 | 4 +(2 rows) + +create or replace function footest() returns void as $$ +declare x record; +begin + -- should work + select * from foo where f1 = 3 into strict x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +NOTICE: x.f1 = 3, x.f2 = 4 + footest +--------- + +(1 row) + +create or replace function footest() returns void as $$ +declare x record; +begin + -- should fail, no rows + select * from foo where f1 = 0 into strict x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: query returned no rows +CONTEXT: PL/pgSQL function "footest" line 5 at SQL statement +create or replace function footest() returns void as $$ +declare x record; +begin + -- should fail, too many rows + select * from foo where f1 > 3 into strict x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: query returned no rows +CONTEXT: PL/pgSQL function "footest" line 5 at SQL statement +create or replace function footest() returns void as $$ +declare x record; +begin + -- should work + execute 'select * from foo where f1 = 3' into strict x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +NOTICE: x.f1 = 3, x.f2 = 4 + footest +--------- + +(1 row) + +create or replace function footest() returns void as $$ +declare x record; +begin + -- should fail, no rows + execute 'select * from foo where f1 = 0' into strict x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: query returned no rows +CONTEXT: PL/pgSQL function "footest" line 5 at EXECUTE statement +create or replace function footest() returns void as $$ +declare x record; +begin + -- should fail, too many rows + execute 'select * from foo where f1 > 3' into strict x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: query returned no rows +CONTEXT: PL/pgSQL function "footest" line 5 at EXECUTE statement +drop function footest(); +-- test scrollable cursor support +create function sc_test() returns setof integer as $$ +declare + c scroll cursor for select f1 from int4_tbl; + x integer; +begin + open c; + fetch last from c into x; + while found loop + return next x; + fetch prior from c into x; + end loop; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; + sc_test +------------- + -2147483647 + -123456 + 0 + 123456 + 2147483647 +(5 rows) + +create or replace function sc_test() returns setof integer as $$ +declare + c no scroll cursor for select f1 from int4_tbl; + x integer; +begin + open c; + fetch last from c into x; + while found loop + return next x; + fetch prior from c into x; + end loop; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; -- fails because of NO SCROLL specification +ERROR: cursor can only scan forward +HINT: Declare it with SCROLL option to enable backward scan. +CONTEXT: PL/pgSQL function "sc_test" line 7 at FETCH +create or replace function sc_test() returns setof integer as $$ +declare + c refcursor; + x integer; +begin + open c scroll for select f1 from int4_tbl; + fetch last from c into x; + while found loop + return next x; + fetch prior from c into x; + end loop; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; + sc_test +------------- + -2147483647 + -123456 + 0 + 123456 + 2147483647 +(5 rows) + +create or replace function sc_test() returns setof integer as $$ +declare + c refcursor; + x integer; +begin + open c scroll for execute 'select f1 from int4_tbl'; + fetch last from c into x; + while found loop + return next x; + fetch relative -2 from c into x; + end loop; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; + sc_test +------------ + 0 + 123456 + 2147483647 +(3 rows) + +create or replace function sc_test() returns setof integer as $$ +declare + c refcursor; + x integer; +begin + open c scroll for execute 'select f1 from int4_tbl'; + fetch last from c into x; + while found loop + return next x; + move backward 2 from c; + fetch relative -1 from c into x; + end loop; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; + sc_test +------------- + -2147483647 + -123456 +(2 rows) + +create or replace function sc_test() returns setof integer as $$ +declare + c cursor for select * from generate_series(1, 10); + x integer; +begin + open c; + loop + move relative 2 in c; + if not found then + exit; + end if; + fetch next from c into x; + if found then + return next x; + end if; + end loop; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; + sc_test +--------- + 3 + 6 + 9 +(3 rows) + +create or replace function sc_test() returns setof integer as $$ +declare + c cursor for select * from generate_series(1, 10); + x integer; +begin + open c; + move forward all in c; + fetch backward from c into x; + if found then + return next x; + end if; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; + sc_test +--------- + 10 +(1 row) + +drop function sc_test(); +-- test qualified variable names +create function pl_qual_names (param1 int) returns void as $$ +<> +declare + param1 int := 1; +begin + <> + declare + param1 int := 2; + begin + raise notice 'param1 = %', param1; + raise notice 'pl_qual_names.param1 = %', pl_qual_names.param1; + raise notice 'outerblock.param1 = %', outerblock.param1; + raise notice 'innerblock.param1 = %', innerblock.param1; + end; +end; +$$ language plpgsql; +select pl_qual_names(42); +NOTICE: param1 = 2 +NOTICE: pl_qual_names.param1 = 42 +NOTICE: outerblock.param1 = 1 +NOTICE: innerblock.param1 = 2 + pl_qual_names +--------------- + +(1 row) + +drop function pl_qual_names(int); +-- tests for RETURN QUERY +create function ret_query1(out int, out int) returns setof record as $$ +begin + $1 := -1; + $2 := -2; + return next; + return query select x + 1, x * 10 from generate_series(0, 10) s (x); + return next; +end; +$$ language plpgsql; +select * from ret_query1() order by 1, 2; + column1 | column2 +---------+--------- + -1 | -2 + -1 | -2 + 1 | 0 + 2 | 10 + 3 | 20 + 4 | 30 + 5 | 40 + 6 | 50 + 7 | 60 + 8 | 70 + 9 | 80 + 10 | 90 + 11 | 100 +(13 rows) + +create type record_type as (x text, y int, z boolean); +create or replace function ret_query2(lim int) returns setof record_type as $$ +begin + return query select md5(s.x::text), s.x, s.x > 0 + from generate_series(-8, lim) s (x) where s.x % 2 = 0; +end; +$$ language plpgsql; +select * from ret_query2(8) order by 1; + x | y | z +----------------------------------+----+--- + 0267aaf632e87a63288a08331f22c7c3 | -4 | f + 1679091c5a880faf6fb5e6087eb1b2dc | 6 | t + 596a3d04481816330f07e4f97510c28f | -6 | f + 5d7b9adcbe1c629ec722529dd12e5129 | -2 | f + a87ff679a2f3e71d9181a67b7542122c | 4 | t + a8d2ec85eaf98407310b72eb73dda247 | -8 | f + c81e728d9d4c2f636f067f89cc14862c | 2 | t + c9f0f895fb98ab9159f51fd0297e236d | 8 | t + cfcd208495d565ef66e7dff9f98764da | 0 | f +(9 rows) + +-- test EXECUTE USING +create function exc_using(int, text) returns int as $$ +declare i int; +begin + for i in execute 'select * from generate_series(1,$1)' using $1+1 loop + raise notice '%', i; + end loop; + execute 'select $2 + $2*3 + length($1)' into i using $2,$1; + return i; +end +$$ language plpgsql; +select exc_using(5, 'foobar'); +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 +NOTICE: 5 +NOTICE: 6 + exc_using +----------- + 26 +(1 row) + +drop function exc_using(int, text); +create or replace function exc_using(int) returns void as $$ +declare + c refcursor; + i int; +begin + open c for execute 'select * from generate_series(1,$1)' using $1+1; + loop + fetch c into i; + exit when not found; + raise notice '%', i; + end loop; + close c; + return; +end; +$$ language plpgsql; +select exc_using(5); +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 +NOTICE: 5 +NOTICE: 6 + exc_using +----------- + +(1 row) + +drop function exc_using(int); +-- test FOR-over-cursor +create or replace function forc01() returns void as $$ +declare + c cursor(r1 integer, r2 integer) + for select * from generate_series(r1,r2) i; + c2 cursor + for select * from generate_series(41,43) i; +begin + for r in c(5,7) loop + raise notice '% from %', r.i, c; + end loop; + -- again, to test if cursor was closed properly + for r in c(9,10) loop + raise notice '% from %', r.i, c; + end loop; + -- and test a parameterless cursor + for r in c2 loop + raise notice '% from %', r.i, c2; + end loop; + -- and try it with a hand-assigned name + raise notice 'after loop, c2 = %', c2; + c2 := 'special_name'; + for r in c2 loop + raise notice '% from %', r.i, c2; + end loop; + raise notice 'after loop, c2 = %', c2; + -- and try it with a generated name + -- (which we can't show in the output because it's variable) + c2 := null; + for r in c2 loop + raise notice '%', r.i; + end loop; + raise notice 'after loop, c2 = %', c2; + return; +end; +$$ language plpgsql; +select forc01(); +NOTICE: 5 from c +NOTICE: 6 from c +NOTICE: 7 from c +NOTICE: 9 from c +NOTICE: 10 from c +NOTICE: 41 from c2 +NOTICE: 42 from c2 +NOTICE: 43 from c2 +NOTICE: after loop, c2 = c2 +NOTICE: 41 from special_name +NOTICE: 42 from special_name +NOTICE: 43 from special_name +NOTICE: after loop, c2 = special_name +NOTICE: 41 +NOTICE: 42 +NOTICE: 43 +NOTICE: after loop, c2 = + forc01 +-------- + +(1 row) + +-- try updating the cursor's current row +create temp table forc_test as + select n as i, n as j from generate_series(1,10) n; +create or replace function forc01() returns void as $$ +declare + c cursor for select * from forc_test; +begin + for r in c loop + raise notice '%, %', r.i, r.j; + update forc_test set i = i * 100, j = r.j * 2 where current of c; + end loop; +end; +$$ language plpgsql; +select forc01(); +NOTICE: 1, 1 +ERROR: WHERE CURRENT OF clause not yet supported +CONTEXT: SQL statement "update forc_test set i = i * 100, j = r.j * 2 where current of c" +PL/pgSQL function "forc01" line 7 at SQL statement +select * from forc_test order by 1, 2; + i | j +----+---- + 1 | 1 + 2 | 2 + 3 | 3 + 4 | 4 + 5 | 5 + 6 | 6 + 7 | 7 + 8 | 8 + 9 | 9 + 10 | 10 +(10 rows) + +-- same, with a cursor whose portal name doesn't match variable name +create or replace function forc01() returns void as $$ +declare + c refcursor := 'fooled_ya'; + r record; +begin + open c for select * from forc_test; + loop + fetch c into r; + exit when not found; + raise notice '%, %', r.i, r.j; + update forc_test set i = i * 100, j = r.j * 2 where current of c; + end loop; +end; +$$ language plpgsql; +select forc01(); +NOTICE: 1, 1 +ERROR: WHERE CURRENT OF clause not yet supported +CONTEXT: SQL statement "update forc_test set i = i * 100, j = r.j * 2 where current of c" +PL/pgSQL function "forc01" line 11 at SQL statement +select * from forc_test order by 1; + i | j +----+---- + 1 | 1 + 2 | 2 + 3 | 3 + 4 | 4 + 5 | 5 + 6 | 6 + 7 | 7 + 8 | 8 + 9 | 9 + 10 | 10 +(10 rows) + +drop function forc01(); +-- fail because cursor has no query bound to it +create or replace function forc_bad() returns void as $$ +declare + c refcursor; +begin + for r in c loop + raise notice '%', r.i; + end loop; +end; +$$ language plpgsql; +ERROR: cursor FOR loop must use a bound cursor variable +LINE 5: for r in c loop + ^ +-- test RETURN QUERY EXECUTE +create or replace function return_dquery() +returns setof int as $$ +begin + return query execute 'select * from (values(10),(20)) f'; + return query execute 'select * from (values($1),($2)) f' using 40,50; +end; +$$ language plpgsql; +select * from return_dquery() order by 1; + return_dquery +--------------- + 10 + 20 + 40 + 50 +(4 rows) + +drop function return_dquery(); +-- test RETURN QUERY with dropped columns +create table tabwithcols(a int, b int, c int, d int); +insert into tabwithcols values(10,20,30,40),(50,60,70,80); +create or replace function returnqueryf() +returns setof tabwithcols as $$ +begin + return query select * from tabwithcols; + return query execute 'select * from tabwithcols'; +end; +$$ language plpgsql; +select * from returnqueryf() order by 1,2,3,4; + a | b | c | d +----+----+----+---- + 10 | 20 | 30 | 40 + 10 | 20 | 30 | 40 + 50 | 60 | 70 | 80 + 50 | 60 | 70 | 80 +(4 rows) + +alter table tabwithcols drop column b; +select * from returnqueryf() order by 1,2,3; + a | c | d +----+----+---- + 10 | 30 | 40 + 10 | 30 | 40 + 50 | 70 | 80 + 50 | 70 | 80 +(4 rows) + +alter table tabwithcols drop column d; +select * from returnqueryf() order by 1,2; + a | c +----+---- + 10 | 30 + 10 | 30 + 50 | 70 + 50 | 70 +(4 rows) + +alter table tabwithcols add column d int; +select * from returnqueryf() order by 1,2,3; + a | c | d +----+----+--- + 10 | 30 | + 10 | 30 | + 50 | 70 | + 50 | 70 | +(4 rows) + +drop function returnqueryf(); +drop table tabwithcols; +-- Tests for 8.4's new RAISE features +create or replace function raise_test() returns void as $$ +begin + raise notice '% % %', 1, 2, 3 + using errcode = '55001', detail = 'some detail info', hint = 'some hint'; + raise '% % %', 1, 2, 3 + using errcode = 'division_by_zero', detail = 'some detail info'; +end; +$$ language plpgsql; +select raise_test(); +NOTICE: 1 2 3 +DETAIL: some detail info +HINT: some hint +ERROR: 1 2 3 +DETAIL: some detail info +-- Since we can't actually see the thrown SQLSTATE in default psql output, +-- test it like this; this also tests re-RAISE +create or replace function raise_test() returns void as $$ +begin + raise 'check me' + using errcode = 'division_by_zero', detail = 'some detail info'; + exception + when others then + raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; + raise; +end; +$$ language plpgsql; +select raise_test(); +NOTICE: SQLSTATE: 22012 SQLERRM: check me +ERROR: check me +DETAIL: some detail info +create or replace function raise_test() returns void as $$ +begin + raise 'check me' + using errcode = '1234F', detail = 'some detail info'; + exception + when others then + raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; + raise; +end; +$$ language plpgsql; +select raise_test(); +NOTICE: SQLSTATE: 1234F SQLERRM: check me +ERROR: check me +DETAIL: some detail info +-- SQLSTATE specification in WHEN +create or replace function raise_test() returns void as $$ +begin + raise 'check me' + using errcode = '1234F', detail = 'some detail info'; + exception + when sqlstate '1234F' then + raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; + raise; +end; +$$ language plpgsql; +select raise_test(); +NOTICE: SQLSTATE: 1234F SQLERRM: check me +ERROR: check me +DETAIL: some detail info +create or replace function raise_test() returns void as $$ +begin + raise division_by_zero using detail = 'some detail info'; + exception + when others then + raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; + raise; +end; +$$ language plpgsql; +select raise_test(); +NOTICE: SQLSTATE: 22012 SQLERRM: division_by_zero +ERROR: division_by_zero +DETAIL: some detail info +create or replace function raise_test() returns void as $$ +begin + raise division_by_zero; +end; +$$ language plpgsql; +select raise_test(); +ERROR: division_by_zero +create or replace function raise_test() returns void as $$ +begin + raise sqlstate '1234F'; +end; +$$ language plpgsql; +select raise_test(); +ERROR: 1234F +create or replace function raise_test() returns void as $$ +begin + raise division_by_zero using message = 'custom' || ' message'; +end; +$$ language plpgsql; +select raise_test(); +ERROR: custom message +create or replace function raise_test() returns void as $$ +begin + raise using message = 'custom' || ' message', errcode = '22012'; +end; +$$ language plpgsql; +select raise_test(); +ERROR: custom message +-- conflict on message +create or replace function raise_test() returns void as $$ +begin + raise notice 'some message' using message = 'custom' || ' message', errcode = '22012'; +end; +$$ language plpgsql; +select raise_test(); +ERROR: RAISE option already specified: MESSAGE +CONTEXT: PL/pgSQL function "raise_test" line 3 at RAISE +-- conflict on errcode +create or replace function raise_test() returns void as $$ +begin + raise division_by_zero using message = 'custom' || ' message', errcode = '22012'; +end; +$$ language plpgsql; +select raise_test(); +ERROR: RAISE option already specified: ERRCODE +CONTEXT: PL/pgSQL function "raise_test" line 3 at RAISE +-- nothing to re-RAISE +create or replace function raise_test() returns void as $$ +begin + raise; +end; +$$ language plpgsql; +select raise_test(); +ERROR: RAISE without parameters cannot be used outside an exception handler +CONTEXT: PL/pgSQL function "raise_test" line 3 at RAISE +-- check cases where implicit SQLSTATE variable could be confused with +-- SQLSTATE as a keyword, cf bug #5524 +create or replace function raise_test() returns void as $$ +begin + perform 1/0; +exception + when sqlstate '22012' then + raise notice using message = sqlstate; + raise sqlstate '22012' using message = 'substitute message'; +end; +$$ language plpgsql; +select raise_test(); +NOTICE: 22012 +ERROR: substitute message +drop function raise_test(); +-- test CASE statement +create or replace function case_test(bigint) returns text as $$ +declare a int = 10; + b int = 1; +begin + case $1 + when 1 then + return 'one'; + when 2 then + return 'two'; + when 3,4,3+5 then + return 'three, four or eight'; + when a then + return 'ten'; + when a+b, a+b+1 then + return 'eleven, twelve'; + end case; +end; +$$ language plpgsql immutable; +select case_test(1); + case_test +----------- + one +(1 row) + +select case_test(2); + case_test +----------- + two +(1 row) + +select case_test(3); + case_test +---------------------- + three, four or eight +(1 row) + +select case_test(4); + case_test +---------------------- + three, four or eight +(1 row) + +select case_test(5); -- fails +ERROR: case not found +HINT: CASE statement is missing ELSE part. +CONTEXT: PL/pgSQL function "case_test" line 5 at CASE +select case_test(8); + case_test +---------------------- + three, four or eight +(1 row) + +select case_test(10); + case_test +----------- + ten +(1 row) + +select case_test(11); + case_test +---------------- + eleven, twelve +(1 row) + +select case_test(12); + case_test +---------------- + eleven, twelve +(1 row) + +select case_test(13); -- fails +ERROR: case not found +HINT: CASE statement is missing ELSE part. +CONTEXT: PL/pgSQL function "case_test" line 5 at CASE +create or replace function catch() returns void as $$ +begin + raise notice '%', case_test(6); +exception + when case_not_found then + raise notice 'caught case_not_found % %', SQLSTATE, SQLERRM; +end +$$ language plpgsql; +select catch(); +NOTICE: caught case_not_found 20000 case not found + catch +------- + +(1 row) + +-- test the searched variant too, as well as ELSE +create or replace function case_test(bigint) returns text as $$ +declare a int = 10; +begin + case + when $1 = 1 then + return 'one'; + when $1 = a + 2 then + return 'twelve'; + else + return 'other'; + end case; +end; +$$ language plpgsql immutable; +select case_test(1); + case_test +----------- + one +(1 row) + +select case_test(2); + case_test +----------- + other +(1 row) + +select case_test(12); + case_test +----------- + twelve +(1 row) + +select case_test(13); + case_test +----------- + other +(1 row) + +drop function catch(); +drop function case_test(bigint); +-- test variadic functions +create or replace function vari(variadic int[]) +returns void as $$ +begin + for i in array_lower($1,1)..array_upper($1,1) loop + raise notice '%', $1[i]; + end loop; end; +$$ language plpgsql; +select vari(1,2,3,4,5); +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 +NOTICE: 5 + vari +------ + +(1 row) + +select vari(3,4,5); +NOTICE: 3 +NOTICE: 4 +NOTICE: 5 + vari +------ + +(1 row) + +select vari(variadic array[5,6,7]); +NOTICE: 5 +NOTICE: 6 +NOTICE: 7 + vari +------ + +(1 row) + +drop function vari(int[]); +-- coercion test +create or replace function pleast(variadic numeric[]) +returns numeric as $$ +declare aux numeric = $1[array_lower($1,1)]; +begin + for i in array_lower($1,1)+1..array_upper($1,1) loop + if $1[i] < aux then aux := $1[i]; end if; + end loop; + return aux; +end; +$$ language plpgsql immutable strict; +select pleast(10,1,2,3,-16); + pleast +-------- + -16 +(1 row) + +select pleast(10.2,2.2,-1.1); + pleast +-------- + -1.1 +(1 row) + +select pleast(10.2,10, -20); + pleast +-------- + -20 +(1 row) + +select pleast(10,20, -1.0); + pleast +-------- + -1.0 +(1 row) + +-- in case of conflict, non-variadic version is preferred +create or replace function pleast(numeric) +returns numeric as $$ +begin + raise notice 'non-variadic function called'; + return $1; +end; +$$ language plpgsql immutable strict; +select pleast(10); +NOTICE: non-variadic function called + pleast +-------- + 10 +(1 row) + +drop function pleast(numeric[]); +drop function pleast(numeric); +-- test table functions +create function tftest(int) returns table(a int, b int) as $$ +begin + return query select $1, $1+i from generate_series(1,5) g(i); +end; +$$ language plpgsql immutable strict; +select * from tftest(10) order by 1, 2; + a | b +----+---- + 10 | 11 + 10 | 12 + 10 | 13 + 10 | 14 + 10 | 15 +(5 rows) + +create or replace function tftest(a1 int) returns table(a int, b int) as $$ +begin + a := a1; b := a1 + 1; + return next; + a := a1 * 10; b := a1 * 10 + 1; + return next; +end; +$$ language plpgsql immutable strict; +select * from tftest(10) order by 1, 2; + a | b +-----+----- + 10 | 11 + 100 | 101 +(2 rows) + +drop function tftest(int); +create or replace function rttest() +returns setof int as $$ +declare rc int; +begin + return query values(10),(20); + get diagnostics rc = row_count; + raise notice '% %', found, rc; + return query select * from (values(10),(20)) f(a) where false; + get diagnostics rc = row_count; + raise notice '% %', found, rc; + return query execute 'values(10),(20)'; + get diagnostics rc = row_count; + raise notice '% %', found, rc; + return query execute 'select * from (values(10),(20)) f(a) where false'; + get diagnostics rc = row_count; + raise notice '% %', found, rc; +end; +$$ language plpgsql; +select * from rttest() order by 1; +NOTICE: t 2 +NOTICE: f 0 +NOTICE: t 2 +NOTICE: f 0 + rttest +-------- + 10 + 10 + 20 + 20 +(4 rows) + +drop function rttest(); +-- Test for proper cleanup at subtransaction exit. This example +-- exposed a bug in PG 8.2. +CREATE FUNCTION leaker_1(fail BOOL) RETURNS INTEGER AS $$ +DECLARE + v_var INTEGER; +BEGIN + BEGIN + v_var := (leaker_2(fail)).error_code; + EXCEPTION + WHEN others THEN RETURN 0; + END; + RETURN 1; +END; +$$ LANGUAGE plpgsql; +CREATE FUNCTION leaker_2(fail BOOL, OUT error_code INTEGER, OUT new_id INTEGER) + RETURNS RECORD AS $$ +BEGIN + IF fail THEN + RAISE EXCEPTION 'fail ...'; + END IF; + error_code := 1; + new_id := 1; + RETURN; +END; +$$ LANGUAGE plpgsql; +SELECT * FROM leaker_1(false); + leaker_1 +---------- + 1 +(1 row) + +SELECT * FROM leaker_1(true); + leaker_1 +---------- + 0 +(1 row) + +DROP FUNCTION leaker_1(bool); +DROP FUNCTION leaker_2(bool); +-- Test for appropriate cleanup of non-simple expression evaluations +-- (bug in all versions prior to August 2010) +CREATE FUNCTION nonsimple_expr_test() RETURNS text[] AS $$ +DECLARE + arr text[]; + lr text; + i integer; +BEGIN + arr := array[array['foo','bar'], array['baz', 'quux']]; + lr := 'fool'; + i := 1; + -- use sub-SELECTs to make expressions non-simple + arr[(SELECT i)][(SELECT i+1)] := (SELECT lr); + RETURN arr; +END; +$$ LANGUAGE plpgsql; +SELECT nonsimple_expr_test(); + nonsimple_expr_test +------------------------- + {{foo,fool},{baz,quux}} +(1 row) + +DROP FUNCTION nonsimple_expr_test(); +CREATE FUNCTION nonsimple_expr_test() RETURNS integer AS $$ +declare + i integer NOT NULL := 0; +begin + begin + i := (SELECT NULL::integer); -- should throw error + exception + WHEN OTHERS THEN + i := (SELECT 1::integer); + end; + return i; +end; +$$ LANGUAGE plpgsql; +SELECT nonsimple_expr_test(); + nonsimple_expr_test +--------------------- + 1 +(1 row) + +DROP FUNCTION nonsimple_expr_test(); +-- +-- Test cases involving recursion and error recovery in simple expressions +-- (bugs in all versions before October 2010). The problems are most +-- easily exposed by mutual recursion between plpgsql and sql functions. +-- +create function recurse(float8) returns float8 as +$$ +begin + if ($1 > 0) then + return sql_recurse($1 - 1); + else + return $1; + end if; +end; +$$ language plpgsql; +-- "limit" is to prevent this from being inlined +create function sql_recurse(float8) returns float8 as +$$ select recurse($1) limit 1; $$ language sql; +select recurse(10); + recurse +--------- + 0 +(1 row) + +create function error1(text) returns text language sql as +$$ SELECT relname::text FROM pg_class c WHERE c.oid = $1::regclass $$; +create function error2(p_name_table text) returns text language plpgsql as $$ +begin + return error1(p_name_table); +end$$; +BEGIN; +create table public.stuffs (stuff text); +SAVEPOINT a; +ERROR: SAVEPOINT is not yet supported. +select error2('nonexistent.stuffs'); +ERROR: current transaction is aborted, commands ignored until end of transaction block +ROLLBACK TO a; +ERROR: no such savepoint +select error2('public.stuffs'); +ERROR: current transaction is aborted, commands ignored until end of transaction block +rollback; +drop function error2(p_name_table text); +drop function error1(text); +-- Test handling of string literals. +set standard_conforming_strings = off; +create or replace function strtest() returns text as $$ +begin + raise notice 'foo\\bar\041baz'; + return 'foo\\bar\041baz'; +end +$$ language plpgsql; +WARNING: nonstandard use of \\ in a string literal +LINE 3: raise notice 'foo\\bar\041baz'; + ^ +HINT: Use the escape string syntax for backslashes, e.g., E'\\'. +WARNING: nonstandard use of \\ in a string literal +LINE 4: return 'foo\\bar\041baz'; + ^ +HINT: Use the escape string syntax for backslashes, e.g., E'\\'. +WARNING: nonstandard use of \\ in a string literal +LINE 4: return 'foo\\bar\041baz'; + ^ +HINT: Use the escape string syntax for backslashes, e.g., E'\\'. +select strtest(); +NOTICE: foo\bar!baz +WARNING: nonstandard use of \\ in a string literal +LINE 1: SELECT 'foo\\bar\041baz' + ^ +HINT: Use the escape string syntax for backslashes, e.g., E'\\'. +QUERY: SELECT 'foo\\bar\041baz' +CONTEXT: PL/pgSQL function "strtest" line 4 at RETURN + strtest +------------- + foo\bar!baz +(1 row) + +create or replace function strtest() returns text as $$ +begin + raise notice E'foo\\bar\041baz'; + return E'foo\\bar\041baz'; +end +$$ language plpgsql; +select strtest(); +NOTICE: foo\bar!baz + strtest +------------- + foo\bar!baz +(1 row) + +set standard_conforming_strings = on; +create or replace function strtest() returns text as $$ +begin + raise notice 'foo\\bar\041baz\'; + return 'foo\\bar\041baz\'; +end +$$ language plpgsql; +select strtest(); +NOTICE: foo\\bar\041baz\ + strtest +------------------ + foo\\bar\041baz\ +(1 row) + +create or replace function strtest() returns text as $$ +begin + raise notice E'foo\\bar\041baz'; + return E'foo\\bar\041baz'; +end +$$ language plpgsql; +select strtest(); +NOTICE: foo\bar!baz + strtest +------------- + foo\bar!baz +(1 row) + +drop function strtest(); +-- Test anonymous code blocks. +DO $$ +DECLARE r record; +BEGIN + FOR r IN SELECT rtrim(roomno) AS roomno, comment FROM Room ORDER BY roomno + LOOP + RAISE NOTICE '%, %', r.roomno, r.comment; + END LOOP; +END$$; +NOTICE: 001, Entrance +NOTICE: 002, Office +NOTICE: 003, Office +NOTICE: 004, Technical +NOTICE: 101, Office +NOTICE: 102, Conference +NOTICE: 103, Restroom +NOTICE: 104, Technical +NOTICE: 105, Office +NOTICE: 106, Office +-- these are to check syntax error reporting +DO LANGUAGE plpgsql $$begin return 1; end$$; +ERROR: RETURN cannot have a parameter in function returning void +LINE 1: DO LANGUAGE plpgsql $$begin return 1; end$$; + ^ +DO $$ +DECLARE r record; +BEGIN + FOR r IN SELECT rtrim(roomno) AS roomno, foo FROM Room ORDER BY roomno + LOOP + RAISE NOTICE '%, %', r.roomno, r.comment; + END LOOP; +END$$; +ERROR: column "foo" does not exist +LINE 1: SELECT rtrim(roomno) AS roomno, foo FROM Room ORDER BY roomn... + ^ +QUERY: SELECT rtrim(roomno) AS roomno, foo FROM Room ORDER BY roomno +CONTEXT: PL/pgSQL function "inline_code_block" line 4 at FOR over SELECT rows +-- Check variable scoping -- a var is not available in its own or prior +-- default expressions. +create function scope_test() returns int as $$ +declare x int := 42; +begin + declare y int := x + 1; + x int := x + 2; + begin + return x * 100 + y; + end; +end; +$$ language plpgsql; +select scope_test(); + scope_test +------------ + 4443 +(1 row) + +drop function scope_test(); +-- Check handling of conflicts between plpgsql vars and table columns. +set plpgsql.variable_conflict = error; +create function conflict_test() returns setof int8_tbl as $$ +declare r record; + q1 bigint := 42; +begin + for r in select q1,q2 from int8_tbl loop + return next r; + end loop; +end; +$$ language plpgsql; +select * from conflict_test() order by 1,2; +ERROR: column reference "q1" is ambiguous +LINE 1: select q1,q2 from int8_tbl + ^ +DETAIL: It could refer to either a PL/pgSQL variable or a table column. +QUERY: select q1,q2 from int8_tbl +CONTEXT: PL/pgSQL function "conflict_test" line 5 at FOR over SELECT rows +create or replace function conflict_test() returns setof int8_tbl as $$ +#variable_conflict use_variable +declare r record; + q1 bigint := 42; +begin + for r in select q1,q2 from int8_tbl loop + return next r; + end loop; +end; +$$ language plpgsql; +-- PGXCTODO: This is failing due to issue 3522907, complicated SELECT queries in plpgsql functions +select * from conflict_test() order by 1,2; +ERROR: could not determine data type of parameter $1 +CONTEXT: PL/pgSQL function "conflict_test" line 6 at FOR over SELECT rows +create or replace function conflict_test() returns setof int8_tbl as $$ +#variable_conflict use_column +declare r record; + q1 bigint := 42; +begin + for r in select q1,q2 from int8_tbl loop + return next r; + end loop; +end; +$$ language plpgsql; +select * from conflict_test() order by 1,2; + q1 | q2 +------------------+------------------- + 123 | 456 + 123 | 4567890123456789 + 4567890123456789 | -4567890123456789 + 4567890123456789 | 123 + 4567890123456789 | 4567890123456789 +(5 rows) + +drop function conflict_test(); +-- Check that an unreserved keyword can be used as a variable name +create function unreserved_test() returns int as $$ +declare + forward int := 21; +begin + forward := forward * 2; + return forward; +end +$$ language plpgsql; +select unreserved_test(); + unreserved_test +----------------- + 42 +(1 row) + +drop function unreserved_test(); +-- +-- Test FOREACH over arrays +-- +create function foreach_test(anyarray) +returns void as $$ +declare x int; +begin + foreach x in array $1 + loop + raise notice '%', x; + end loop; + end; +$$ language plpgsql; +select foreach_test(ARRAY[1,2,3,4]); +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 + foreach_test +-------------- + +(1 row) + +select foreach_test(ARRAY[[1,2],[3,4]]); +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 + foreach_test +-------------- + +(1 row) + +create or replace function foreach_test(anyarray) +returns void as $$ +declare x int; +begin + foreach x slice 1 in array $1 + loop + raise notice '%', x; + end loop; + end; +$$ language plpgsql; +-- should fail +select foreach_test(ARRAY[1,2,3,4]); +ERROR: FOREACH ... SLICE loop variable must be of an array type +CONTEXT: PL/pgSQL function "foreach_test" line 4 at FOREACH over array +select foreach_test(ARRAY[[1,2],[3,4]]); +ERROR: FOREACH ... SLICE loop variable must be of an array type +CONTEXT: PL/pgSQL function "foreach_test" line 4 at FOREACH over array +create or replace function foreach_test(anyarray) +returns void as $$ +declare x int[]; +begin + foreach x slice 1 in array $1 + loop + raise notice '%', x; + end loop; + end; +$$ language plpgsql; +select foreach_test(ARRAY[1,2,3,4]); +NOTICE: {1,2,3,4} + foreach_test +-------------- + +(1 row) + +select foreach_test(ARRAY[[1,2],[3,4]]); +NOTICE: {1,2} +NOTICE: {3,4} + foreach_test +-------------- + +(1 row) + +-- higher level of slicing +create or replace function foreach_test(anyarray) +returns void as $$ +declare x int[]; +begin + foreach x slice 2 in array $1 + loop + raise notice '%', x; + end loop; + end; +$$ language plpgsql; +-- should fail +select foreach_test(ARRAY[1,2,3,4]); +ERROR: slice dimension (2) is out of the valid range 0..1 +CONTEXT: PL/pgSQL function "foreach_test" line 4 at FOREACH over array +-- ok +select foreach_test(ARRAY[[1,2],[3,4]]); +NOTICE: {{1,2},{3,4}} + foreach_test +-------------- + +(1 row) + +select foreach_test(ARRAY[[[1,2]],[[3,4]]]); +NOTICE: {{1,2}} +NOTICE: {{3,4}} + foreach_test +-------------- + +(1 row) + +create type xy_tuple AS (x int, y int); +-- iteration over array of records +create or replace function foreach_test(anyarray) +returns void as $$ +declare r record; +begin + foreach r in array $1 + loop + raise notice '%', r; + end loop; + end; +$$ language plpgsql; +select foreach_test(ARRAY[(10,20),(40,69),(35,78)]::xy_tuple[]); +NOTICE: (10,20) +NOTICE: (40,69) +NOTICE: (35,78) + foreach_test +-------------- + +(1 row) + +select foreach_test(ARRAY[[(10,20),(40,69)],[(35,78),(88,76)]]::xy_tuple[]); +NOTICE: (10,20) +NOTICE: (40,69) +NOTICE: (35,78) +NOTICE: (88,76) + foreach_test +-------------- + +(1 row) + +create or replace function foreach_test(anyarray) +returns void as $$ +declare x int; y int; +begin + foreach x, y in array $1 + loop + raise notice 'x = %, y = %', x, y; + end loop; + end; +$$ language plpgsql; +select foreach_test(ARRAY[(10,20),(40,69),(35,78)]::xy_tuple[]); +NOTICE: x = 10, y = 20 +NOTICE: x = 40, y = 69 +NOTICE: x = 35, y = 78 + foreach_test +-------------- + +(1 row) + +select foreach_test(ARRAY[[(10,20),(40,69)],[(35,78),(88,76)]]::xy_tuple[]); +NOTICE: x = 10, y = 20 +NOTICE: x = 40, y = 69 +NOTICE: x = 35, y = 78 +NOTICE: x = 88, y = 76 + foreach_test +-------------- + +(1 row) + +-- slicing over array of composite types +create or replace function foreach_test(anyarray) +returns void as $$ +declare x xy_tuple[]; +begin + foreach x slice 1 in array $1 + loop + raise notice '%', x; + end loop; + end; +$$ language plpgsql; +select foreach_test(ARRAY[(10,20),(40,69),(35,78)]::xy_tuple[]); +NOTICE: {"(10,20)","(40,69)","(35,78)"} + foreach_test +-------------- + +(1 row) + +select foreach_test(ARRAY[[(10,20),(40,69)],[(35,78),(88,76)]]::xy_tuple[]); +NOTICE: {"(10,20)","(40,69)"} +NOTICE: {"(35,78)","(88,76)"} + foreach_test +-------------- + +(1 row) + +drop function foreach_test(anyarray); +drop type xy_tuple; diff --git a/src/test/regress/expected/plpgsql_3.out b/src/test/regress/expected/plpgsql_3.out new file mode 100644 index 0000000000..ed8a92d05c --- /dev/null +++ b/src/test/regress/expected/plpgsql_3.out @@ -0,0 +1,4322 @@ +-- +-- PLPGSQL +-- +-- Scenario: +-- +-- A building with a modern TP cable installation where any +-- of the wall connectors can be used to plug in phones, +-- ethernet interfaces or local office hubs. The backside +-- of the wall connectors is wired to one of several patch- +-- fields in the building. +-- +-- In the patchfields, there are hubs and all the slots +-- representing the wall connectors. In addition there are +-- slots that can represent a phone line from the central +-- phone system. +-- +-- Triggers ensure consistency of the patching information. +-- +-- Functions are used to build up powerful views that let +-- you look behind the wall when looking at a patchfield +-- or into a room. +-- +create table Room ( + roomno char(8), + comment text +); +create unique index Room_rno on Room using btree (roomno bpchar_ops); +create table WSlot ( + slotname char(20), + roomno char(8), + slotlink char(20), + backlink char(20) +); +create unique index WSlot_name on WSlot using btree (slotname bpchar_ops); +create table PField ( + name text, + comment text +) distribute by replication; +create unique index PField_name on PField using btree (name text_ops); +create table PSlot ( + slotname char(20), + pfname text, + slotlink char(20), + backlink char(20) +); +create unique index PSlot_name on PSlot using btree (slotname bpchar_ops); +create table PLine ( + slotname char(20), + phonenumber char(20), + comment text, + backlink char(20) +); +create unique index PLine_name on PLine using btree (slotname bpchar_ops); +create table Hub ( + name char(14), + comment text, + nslots integer +); +create unique index Hub_name on Hub using btree (name bpchar_ops); +create table HSlot ( + slotname char(20), + hubname char(14), + slotno integer, + slotlink char(20) +); +create unique index HSlot_name on HSlot using btree (slotname bpchar_ops); +create index HSlot_hubname on HSlot using btree (hubname bpchar_ops); +create table System ( + name text, + comment text +); +create unique index System_name on System using btree (name text_ops); +create table IFace ( + slotname char(20), + sysname text, + ifname text, + slotlink char(20) +); +create unique index IFace_name on IFace using btree (slotname bpchar_ops); +create table PHone ( + slotname char(20), + comment text, + slotlink char(20) +); +create unique index PHone_name on PHone using btree (slotname bpchar_ops); +-- ************************************************************ +-- * +-- * Trigger procedures and functions for the patchfield +-- * test of PL/pgSQL +-- * +-- ************************************************************ +-- ************************************************************ +-- * AFTER UPDATE on Room +-- * - If room no changes let wall slots follow +-- ************************************************************ +create function tg_room_au() returns trigger as ' +begin + if new.roomno != old.roomno then + update WSlot set roomno = new.roomno where roomno = old.roomno; + end if; + return new; +end; +' language plpgsql; +create trigger tg_room_au after update + on Room for each row execute procedure tg_room_au(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * AFTER DELETE on Room +-- * - delete wall slots in this room +-- ************************************************************ +create function tg_room_ad() returns trigger as ' +begin + delete from WSlot where roomno = old.roomno; + return old; +end; +' language plpgsql; +create trigger tg_room_ad after delete + on Room for each row execute procedure tg_room_ad(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE INSERT or UPDATE on WSlot +-- * - Check that room exists +-- ************************************************************ +create function tg_wslot_biu() returns trigger as $$ +begin + if count(*) = 0 from Room where roomno = new.roomno then + raise exception 'Room % does not exist', new.roomno; + end if; + return new; +end; +$$ language plpgsql; +create trigger tg_wslot_biu before insert or update + on WSlot for each row execute procedure tg_wslot_biu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * AFTER UPDATE on PField +-- * - Let PSlots of this field follow +-- ************************************************************ +create function tg_pfield_au() returns trigger as ' +begin + if new.name != old.name then + update PSlot set pfname = new.name where pfname = old.name; + end if; + return new; +end; +' language plpgsql; +create trigger tg_pfield_au after update + on PField for each row execute procedure tg_pfield_au(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * AFTER DELETE on PField +-- * - Remove all slots of this patchfield +-- ************************************************************ +create function tg_pfield_ad() returns trigger as ' +begin + delete from PSlot where pfname = old.name; + return old; +end; +' language plpgsql; +create trigger tg_pfield_ad after delete + on PField for each row execute procedure tg_pfield_ad(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE INSERT or UPDATE on PSlot +-- * - Ensure that our patchfield does exist +-- ************************************************************ +create function tg_pslot_biu() returns trigger as $proc$ +declare + pfrec record; + ps alias for new; +begin + select into pfrec * from PField where name = ps.pfname; + if not found then + raise exception $$Patchfield "%" does not exist$$, ps.pfname; + end if; + return ps; +end; +$proc$ language plpgsql; +create trigger tg_pslot_biu before insert or update + on PSlot for each row execute procedure tg_pslot_biu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * AFTER UPDATE on System +-- * - If system name changes let interfaces follow +-- ************************************************************ +create function tg_system_au() returns trigger as ' +begin + if new.name != old.name then + update IFace set sysname = new.name where sysname = old.name; + end if; + return new; +end; +' language plpgsql; +create trigger tg_system_au after update + on System for each row execute procedure tg_system_au(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE INSERT or UPDATE on IFace +-- * - set the slotname to IF.sysname.ifname +-- ************************************************************ +create function tg_iface_biu() returns trigger as $$ +declare + sname text; + sysrec record; +begin + select into sysrec * from system where name = new.sysname; + if not found then + raise exception $q$system "%" does not exist$q$, new.sysname; + end if; + sname := 'IF.' || new.sysname; + sname := sname || '.'; + sname := sname || new.ifname; + if length(sname) > 20 then + raise exception 'IFace slotname "%" too long (20 char max)', sname; + end if; + new.slotname := sname; + return new; +end; +$$ language plpgsql; +create trigger tg_iface_biu before insert or update + on IFace for each row execute procedure tg_iface_biu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * AFTER INSERT or UPDATE or DELETE on Hub +-- * - insert/delete/rename slots as required +-- ************************************************************ +create function tg_hub_a() returns trigger as ' +declare + hname text; + dummy integer; +begin + if tg_op = ''INSERT'' then + dummy := tg_hub_adjustslots(new.name, 0, new.nslots); + return new; + end if; + if tg_op = ''UPDATE'' then + if new.name != old.name then + update HSlot set hubname = new.name where hubname = old.name; + end if; + dummy := tg_hub_adjustslots(new.name, old.nslots, new.nslots); + return new; + end if; + if tg_op = ''DELETE'' then + dummy := tg_hub_adjustslots(old.name, old.nslots, 0); + return old; + end if; +end; +' language plpgsql; +create trigger tg_hub_a after insert or update or delete + on Hub for each row execute procedure tg_hub_a(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * Support function to add/remove slots of Hub +-- ************************************************************ +create function tg_hub_adjustslots(hname bpchar, + oldnslots integer, + newnslots integer) +returns integer as ' +begin + if newnslots = oldnslots then + return 0; + end if; + if newnslots < oldnslots then + delete from HSlot where hubname = hname and slotno > newnslots; + return 0; + end if; + for i in oldnslots + 1 .. newnslots loop + insert into HSlot (slotname, hubname, slotno, slotlink) + values (''HS.dummy'', hname, i, ''''); + end loop; + return 0; +end +' language plpgsql; +-- Test comments +COMMENT ON FUNCTION tg_hub_adjustslots_wrong(bpchar, integer, integer) IS 'function with args'; +ERROR: function tg_hub_adjustslots_wrong(character, integer, integer) does not exist +COMMENT ON FUNCTION tg_hub_adjustslots(bpchar, integer, integer) IS 'function with args'; +COMMENT ON FUNCTION tg_hub_adjustslots(bpchar, integer, integer) IS NULL; +-- ************************************************************ +-- * BEFORE INSERT or UPDATE on HSlot +-- * - prevent from manual manipulation +-- * - set the slotname to HS.hubname.slotno +-- ************************************************************ +create function tg_hslot_biu() returns trigger as ' +declare + sname text; + xname HSlot.slotname%TYPE; + hubrec record; +begin + select into hubrec * from Hub where name = new.hubname; + if not found then + raise exception ''no manual manipulation of HSlot''; + end if; + if new.slotno < 1 or new.slotno > hubrec.nslots then + raise exception ''no manual manipulation of HSlot''; + end if; + if tg_op = ''UPDATE'' and new.hubname != old.hubname then + if count(*) > 0 from Hub where name = old.hubname then + raise exception ''no manual manipulation of HSlot''; + end if; + end if; + sname := ''HS.'' || trim(new.hubname); + sname := sname || ''.''; + sname := sname || new.slotno::text; + if length(sname) > 20 then + raise exception ''HSlot slotname "%" too long (20 char max)'', sname; + end if; + new.slotname := sname; + return new; +end; +' language plpgsql; +create trigger tg_hslot_biu before insert or update + on HSlot for each row execute procedure tg_hslot_biu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE DELETE on HSlot +-- * - prevent from manual manipulation +-- ************************************************************ +create function tg_hslot_bd() returns trigger as ' +declare + hubrec record; +begin + select into hubrec * from Hub where name = old.hubname; + if not found then + return old; + end if; + if old.slotno > hubrec.nslots then + return old; + end if; + raise exception ''no manual manipulation of HSlot''; +end; +' language plpgsql; +create trigger tg_hslot_bd before delete + on HSlot for each row execute procedure tg_hslot_bd(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE INSERT on all slots +-- * - Check name prefix +-- ************************************************************ +create function tg_chkslotname() returns trigger as ' +begin + if substr(new.slotname, 1, 2) != tg_argv[0] then + raise exception ''slotname must begin with %'', tg_argv[0]; + end if; + return new; +end; +' language plpgsql; +create trigger tg_chkslotname before insert + on PSlot for each row execute procedure tg_chkslotname('PS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotname before insert + on WSlot for each row execute procedure tg_chkslotname('WS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotname before insert + on PLine for each row execute procedure tg_chkslotname('PL'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotname before insert + on IFace for each row execute procedure tg_chkslotname('IF'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotname before insert + on PHone for each row execute procedure tg_chkslotname('PH'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE INSERT or UPDATE on all slots with slotlink +-- * - Set slotlink to empty string if NULL value given +-- ************************************************************ +create function tg_chkslotlink() returns trigger as ' +begin + if new.slotlink isnull then + new.slotlink := ''''; + end if; + return new; +end; +' language plpgsql; +create trigger tg_chkslotlink before insert or update + on PSlot for each row execute procedure tg_chkslotlink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotlink before insert or update + on WSlot for each row execute procedure tg_chkslotlink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotlink before insert or update + on IFace for each row execute procedure tg_chkslotlink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotlink before insert or update + on HSlot for each row execute procedure tg_chkslotlink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotlink before insert or update + on PHone for each row execute procedure tg_chkslotlink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE INSERT or UPDATE on all slots with backlink +-- * - Set backlink to empty string if NULL value given +-- ************************************************************ +create function tg_chkbacklink() returns trigger as ' +begin + if new.backlink isnull then + new.backlink := ''''; + end if; + return new; +end; +' language plpgsql; +create trigger tg_chkbacklink before insert or update + on PSlot for each row execute procedure tg_chkbacklink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkbacklink before insert or update + on WSlot for each row execute procedure tg_chkbacklink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkbacklink before insert or update + on PLine for each row execute procedure tg_chkbacklink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE UPDATE on PSlot +-- * - do delete/insert instead of update if name changes +-- ************************************************************ +create function tg_pslot_bu() returns trigger as ' +begin + if new.slotname != old.slotname then + delete from PSlot where slotname = old.slotname; + insert into PSlot ( + slotname, + pfname, + slotlink, + backlink + ) values ( + new.slotname, + new.pfname, + new.slotlink, + new.backlink + ); + return null; + end if; + return new; +end; +' language plpgsql; +create trigger tg_pslot_bu before update + on PSlot for each row execute procedure tg_pslot_bu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE UPDATE on WSlot +-- * - do delete/insert instead of update if name changes +-- ************************************************************ +create function tg_wslot_bu() returns trigger as ' +begin + if new.slotname != old.slotname then + delete from WSlot where slotname = old.slotname; + insert into WSlot ( + slotname, + roomno, + slotlink, + backlink + ) values ( + new.slotname, + new.roomno, + new.slotlink, + new.backlink + ); + return null; + end if; + return new; +end; +' language plpgsql; +create trigger tg_wslot_bu before update + on WSlot for each row execute procedure tg_Wslot_bu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE UPDATE on PLine +-- * - do delete/insert instead of update if name changes +-- ************************************************************ +create function tg_pline_bu() returns trigger as ' +begin + if new.slotname != old.slotname then + delete from PLine where slotname = old.slotname; + insert into PLine ( + slotname, + phonenumber, + comment, + backlink + ) values ( + new.slotname, + new.phonenumber, + new.comment, + new.backlink + ); + return null; + end if; + return new; +end; +' language plpgsql; +create trigger tg_pline_bu before update + on PLine for each row execute procedure tg_pline_bu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE UPDATE on IFace +-- * - do delete/insert instead of update if name changes +-- ************************************************************ +create function tg_iface_bu() returns trigger as ' +begin + if new.slotname != old.slotname then + delete from IFace where slotname = old.slotname; + insert into IFace ( + slotname, + sysname, + ifname, + slotlink + ) values ( + new.slotname, + new.sysname, + new.ifname, + new.slotlink + ); + return null; + end if; + return new; +end; +' language plpgsql; +create trigger tg_iface_bu before update + on IFace for each row execute procedure tg_iface_bu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE UPDATE on HSlot +-- * - do delete/insert instead of update if name changes +-- ************************************************************ +create function tg_hslot_bu() returns trigger as ' +begin + if new.slotname != old.slotname or new.hubname != old.hubname then + delete from HSlot where slotname = old.slotname; + insert into HSlot ( + slotname, + hubname, + slotno, + slotlink + ) values ( + new.slotname, + new.hubname, + new.slotno, + new.slotlink + ); + return null; + end if; + return new; +end; +' language plpgsql; +create trigger tg_hslot_bu before update + on HSlot for each row execute procedure tg_hslot_bu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE UPDATE on PHone +-- * - do delete/insert instead of update if name changes +-- ************************************************************ +create function tg_phone_bu() returns trigger as ' +begin + if new.slotname != old.slotname then + delete from PHone where slotname = old.slotname; + insert into PHone ( + slotname, + comment, + slotlink + ) values ( + new.slotname, + new.comment, + new.slotlink + ); + return null; + end if; + return new; +end; +' language plpgsql; +create trigger tg_phone_bu before update + on PHone for each row execute procedure tg_phone_bu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * AFTER INSERT or UPDATE or DELETE on slot with backlink +-- * - Ensure that the opponent correctly points back to us +-- ************************************************************ +create function tg_backlink_a() returns trigger as ' +declare + dummy integer; +begin + if tg_op = ''INSERT'' then + if new.backlink != '''' then + dummy := tg_backlink_set(new.backlink, new.slotname); + end if; + return new; + end if; + if tg_op = ''UPDATE'' then + if new.backlink != old.backlink then + if old.backlink != '''' then + dummy := tg_backlink_unset(old.backlink, old.slotname); + end if; + if new.backlink != '''' then + dummy := tg_backlink_set(new.backlink, new.slotname); + end if; + else + if new.slotname != old.slotname and new.backlink != '''' then + dummy := tg_slotlink_set(new.backlink, new.slotname); + end if; + end if; + return new; + end if; + if tg_op = ''DELETE'' then + if old.backlink != '''' then + dummy := tg_backlink_unset(old.backlink, old.slotname); + end if; + return old; + end if; +end; +' language plpgsql; +create trigger tg_backlink_a after insert or update or delete + on PSlot for each row execute procedure tg_backlink_a('PS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_backlink_a after insert or update or delete + on WSlot for each row execute procedure tg_backlink_a('WS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_backlink_a after insert or update or delete + on PLine for each row execute procedure tg_backlink_a('PL'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * Support function to set the opponents backlink field +-- * if it does not already point to the requested slot +-- ************************************************************ +create function tg_backlink_set(myname bpchar, blname bpchar) +returns integer as ' +declare + mytype char(2); + link char(4); + rec record; +begin + mytype := substr(myname, 1, 2); + link := mytype || substr(blname, 1, 2); + if link = ''PLPL'' then + raise exception + ''backlink between two phone lines does not make sense''; + end if; + if link in (''PLWS'', ''WSPL'') then + raise exception + ''direct link of phone line to wall slot not permitted''; + end if; + if mytype = ''PS'' then + select into rec * from PSlot where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.backlink != blname then + update PSlot set backlink = blname where slotname = myname; + end if; + return 0; + end if; + if mytype = ''WS'' then + select into rec * from WSlot where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.backlink != blname then + update WSlot set backlink = blname where slotname = myname; + end if; + return 0; + end if; + if mytype = ''PL'' then + select into rec * from PLine where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.backlink != blname then + update PLine set backlink = blname where slotname = myname; + end if; + return 0; + end if; + raise exception ''illegal backlink beginning with %'', mytype; +end; +' language plpgsql; +-- ************************************************************ +-- * Support function to clear out the backlink field if +-- * it still points to specific slot +-- ************************************************************ +create function tg_backlink_unset(bpchar, bpchar) +returns integer as ' +declare + myname alias for $1; + blname alias for $2; + mytype char(2); + rec record; +begin + mytype := substr(myname, 1, 2); + if mytype = ''PS'' then + select into rec * from PSlot where slotname = myname; + if not found then + return 0; + end if; + if rec.backlink = blname then + update PSlot set backlink = '''' where slotname = myname; + end if; + return 0; + end if; + if mytype = ''WS'' then + select into rec * from WSlot where slotname = myname; + if not found then + return 0; + end if; + if rec.backlink = blname then + update WSlot set backlink = '''' where slotname = myname; + end if; + return 0; + end if; + if mytype = ''PL'' then + select into rec * from PLine where slotname = myname; + if not found then + return 0; + end if; + if rec.backlink = blname then + update PLine set backlink = '''' where slotname = myname; + end if; + return 0; + end if; +end +' language plpgsql; +-- ************************************************************ +-- * AFTER INSERT or UPDATE or DELETE on slot with slotlink +-- * - Ensure that the opponent correctly points back to us +-- ************************************************************ +create function tg_slotlink_a() returns trigger as ' +declare + dummy integer; +begin + if tg_op = ''INSERT'' then + if new.slotlink != '''' then + dummy := tg_slotlink_set(new.slotlink, new.slotname); + end if; + return new; + end if; + if tg_op = ''UPDATE'' then + if new.slotlink != old.slotlink then + if old.slotlink != '''' then + dummy := tg_slotlink_unset(old.slotlink, old.slotname); + end if; + if new.slotlink != '''' then + dummy := tg_slotlink_set(new.slotlink, new.slotname); + end if; + else + if new.slotname != old.slotname and new.slotlink != '''' then + dummy := tg_slotlink_set(new.slotlink, new.slotname); + end if; + end if; + return new; + end if; + if tg_op = ''DELETE'' then + if old.slotlink != '''' then + dummy := tg_slotlink_unset(old.slotlink, old.slotname); + end if; + return old; + end if; +end; +' language plpgsql; +create trigger tg_slotlink_a after insert or update or delete + on PSlot for each row execute procedure tg_slotlink_a('PS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_slotlink_a after insert or update or delete + on WSlot for each row execute procedure tg_slotlink_a('WS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_slotlink_a after insert or update or delete + on IFace for each row execute procedure tg_slotlink_a('IF'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_slotlink_a after insert or update or delete + on HSlot for each row execute procedure tg_slotlink_a('HS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_slotlink_a after insert or update or delete + on PHone for each row execute procedure tg_slotlink_a('PH'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * Support function to set the opponents slotlink field +-- * if it does not already point to the requested slot +-- ************************************************************ +create function tg_slotlink_set(bpchar, bpchar) +returns integer as ' +declare + myname alias for $1; + blname alias for $2; + mytype char(2); + link char(4); + rec record; +begin + mytype := substr(myname, 1, 2); + link := mytype || substr(blname, 1, 2); + if link = ''PHPH'' then + raise exception + ''slotlink between two phones does not make sense''; + end if; + if link in (''PHHS'', ''HSPH'') then + raise exception + ''link of phone to hub does not make sense''; + end if; + if link in (''PHIF'', ''IFPH'') then + raise exception + ''link of phone to hub does not make sense''; + end if; + if link in (''PSWS'', ''WSPS'') then + raise exception + ''slotlink from patchslot to wallslot not permitted''; + end if; + if mytype = ''PS'' then + select into rec * from PSlot where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.slotlink != blname then + update PSlot set slotlink = blname where slotname = myname; + end if; + return 0; + end if; + if mytype = ''WS'' then + select into rec * from WSlot where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.slotlink != blname then + update WSlot set slotlink = blname where slotname = myname; + end if; + return 0; + end if; + if mytype = ''IF'' then + select into rec * from IFace where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.slotlink != blname then + update IFace set slotlink = blname where slotname = myname; + end if; + return 0; + end if; + if mytype = ''HS'' then + select into rec * from HSlot where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.slotlink != blname then + update HSlot set slotlink = blname where slotname = myname; + end if; + return 0; + end if; + if mytype = ''PH'' then + select into rec * from PHone where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.slotlink != blname then + update PHone set slotlink = blname where slotname = myname; + end if; + return 0; + end if; + raise exception ''illegal slotlink beginning with %'', mytype; +end; +' language plpgsql; +-- ************************************************************ +-- * Support function to clear out the slotlink field if +-- * it still points to specific slot +-- ************************************************************ +create function tg_slotlink_unset(bpchar, bpchar) +returns integer as ' +declare + myname alias for $1; + blname alias for $2; + mytype char(2); + rec record; +begin + mytype := substr(myname, 1, 2); + if mytype = ''PS'' then + select into rec * from PSlot where slotname = myname; + if not found then + return 0; + end if; + if rec.slotlink = blname then + update PSlot set slotlink = '''' where slotname = myname; + end if; + return 0; + end if; + if mytype = ''WS'' then + select into rec * from WSlot where slotname = myname; + if not found then + return 0; + end if; + if rec.slotlink = blname then + update WSlot set slotlink = '''' where slotname = myname; + end if; + return 0; + end if; + if mytype = ''IF'' then + select into rec * from IFace where slotname = myname; + if not found then + return 0; + end if; + if rec.slotlink = blname then + update IFace set slotlink = '''' where slotname = myname; + end if; + return 0; + end if; + if mytype = ''HS'' then + select into rec * from HSlot where slotname = myname; + if not found then + return 0; + end if; + if rec.slotlink = blname then + update HSlot set slotlink = '''' where slotname = myname; + end if; + return 0; + end if; + if mytype = ''PH'' then + select into rec * from PHone where slotname = myname; + if not found then + return 0; + end if; + if rec.slotlink = blname then + update PHone set slotlink = '''' where slotname = myname; + end if; + return 0; + end if; +end; +' language plpgsql; +-- ************************************************************ +-- * Describe the backside of a patchfield slot +-- ************************************************************ +create function pslot_backlink_view(bpchar) +returns text as ' +<> +declare + rec record; + bltype char(2); + retval text; +begin + select into rec * from PSlot where slotname = $1; + if not found then + return ''''; + end if; + if rec.backlink = '''' then + return ''-''; + end if; + bltype := substr(rec.backlink, 1, 2); + if bltype = ''PL'' then + declare + rec record; + begin + select into rec * from PLine where slotname = "outer".rec.backlink; + retval := ''Phone line '' || trim(rec.phonenumber); + if rec.comment != '''' then + retval := retval || '' (''; + retval := retval || rec.comment; + retval := retval || '')''; + end if; + return retval; + end; + end if; + if bltype = ''WS'' then + select into rec * from WSlot where slotname = rec.backlink; + retval := trim(rec.slotname) || '' in room ''; + retval := retval || trim(rec.roomno); + retval := retval || '' -> ''; + return retval || wslot_slotlink_view(rec.slotname); + end if; + return rec.backlink; +end; +' language plpgsql; +-- ************************************************************ +-- * Describe the front of a patchfield slot +-- ************************************************************ +create function pslot_slotlink_view(bpchar) +returns text as ' +declare + psrec record; + sltype char(2); + retval text; +begin + select into psrec * from PSlot where slotname = $1; + if not found then + return ''''; + end if; + if psrec.slotlink = '''' then + return ''-''; + end if; + sltype := substr(psrec.slotlink, 1, 2); + if sltype = ''PS'' then + retval := trim(psrec.slotlink) || '' -> ''; + return retval || pslot_backlink_view(psrec.slotlink); + end if; + if sltype = ''HS'' then + retval := comment from Hub H, HSlot HS + where HS.slotname = psrec.slotlink + and H.name = HS.hubname; + retval := retval || '' slot ''; + retval := retval || slotno::text from HSlot + where slotname = psrec.slotlink; + return retval; + end if; + return psrec.slotlink; +end; +' language plpgsql; +-- ************************************************************ +-- * Describe the front of a wall connector slot +-- ************************************************************ +create function wslot_slotlink_view(bpchar) +returns text as ' +declare + rec record; + sltype char(2); + retval text; +begin + select into rec * from WSlot where slotname = $1; + if not found then + return ''''; + end if; + if rec.slotlink = '''' then + return ''-''; + end if; + sltype := substr(rec.slotlink, 1, 2); + if sltype = ''PH'' then + select into rec * from PHone where slotname = rec.slotlink; + retval := ''Phone '' || trim(rec.slotname); + if rec.comment != '''' then + retval := retval || '' (''; + retval := retval || rec.comment; + retval := retval || '')''; + end if; + return retval; + end if; + if sltype = ''IF'' then + declare + syrow System%RowType; + ifrow IFace%ROWTYPE; + begin + select into ifrow * from IFace where slotname = rec.slotlink; + select into syrow * from System where name = ifrow.sysname; + retval := syrow.name || '' IF ''; + retval := retval || ifrow.ifname; + if syrow.comment != '''' then + retval := retval || '' (''; + retval := retval || syrow.comment; + retval := retval || '')''; + end if; + return retval; + end; + end if; + return rec.slotlink; +end; +' language plpgsql; +-- ************************************************************ +-- * View of a patchfield describing backside and patches +-- ************************************************************ +create view Pfield_v1 as select PF.pfname, PF.slotname, + pslot_backlink_view(PF.slotname) as backside, + pslot_slotlink_view(PF.slotname) as patch + from PSlot PF; +-- +-- First we build the house - so we create the rooms +-- +insert into Room values ('001', 'Entrance'); +insert into Room values ('002', 'Office'); +insert into Room values ('003', 'Office'); +insert into Room values ('004', 'Technical'); +insert into Room values ('101', 'Office'); +insert into Room values ('102', 'Conference'); +insert into Room values ('103', 'Restroom'); +insert into Room values ('104', 'Technical'); +insert into Room values ('105', 'Office'); +insert into Room values ('106', 'Office'); +-- +-- Second we install the wall connectors +-- +insert into WSlot values ('WS.001.1a', '001', '', ''); +insert into WSlot values ('WS.001.1b', '001', '', ''); +insert into WSlot values ('WS.001.2a', '001', '', ''); +insert into WSlot values ('WS.001.2b', '001', '', ''); +insert into WSlot values ('WS.001.3a', '001', '', ''); +insert into WSlot values ('WS.001.3b', '001', '', ''); +insert into WSlot values ('WS.002.1a', '002', '', ''); +insert into WSlot values ('WS.002.1b', '002', '', ''); +insert into WSlot values ('WS.002.2a', '002', '', ''); +insert into WSlot values ('WS.002.2b', '002', '', ''); +insert into WSlot values ('WS.002.3a', '002', '', ''); +insert into WSlot values ('WS.002.3b', '002', '', ''); +insert into WSlot values ('WS.003.1a', '003', '', ''); +insert into WSlot values ('WS.003.1b', '003', '', ''); +insert into WSlot values ('WS.003.2a', '003', '', ''); +insert into WSlot values ('WS.003.2b', '003', '', ''); +insert into WSlot values ('WS.003.3a', '003', '', ''); +insert into WSlot values ('WS.003.3b', '003', '', ''); +insert into WSlot values ('WS.101.1a', '101', '', ''); +insert into WSlot values ('WS.101.1b', '101', '', ''); +insert into WSlot values ('WS.101.2a', '101', '', ''); +insert into WSlot values ('WS.101.2b', '101', '', ''); +insert into WSlot values ('WS.101.3a', '101', '', ''); +insert into WSlot values ('WS.101.3b', '101', '', ''); +insert into WSlot values ('WS.102.1a', '102', '', ''); +insert into WSlot values ('WS.102.1b', '102', '', ''); +insert into WSlot values ('WS.102.2a', '102', '', ''); +insert into WSlot values ('WS.102.2b', '102', '', ''); +insert into WSlot values ('WS.102.3a', '102', '', ''); +insert into WSlot values ('WS.102.3b', '102', '', ''); +insert into WSlot values ('WS.105.1a', '105', '', ''); +insert into WSlot values ('WS.105.1b', '105', '', ''); +insert into WSlot values ('WS.105.2a', '105', '', ''); +insert into WSlot values ('WS.105.2b', '105', '', ''); +insert into WSlot values ('WS.105.3a', '105', '', ''); +insert into WSlot values ('WS.105.3b', '105', '', ''); +insert into WSlot values ('WS.106.1a', '106', '', ''); +insert into WSlot values ('WS.106.1b', '106', '', ''); +insert into WSlot values ('WS.106.2a', '106', '', ''); +insert into WSlot values ('WS.106.2b', '106', '', ''); +insert into WSlot values ('WS.106.3a', '106', '', ''); +insert into WSlot values ('WS.106.3b', '106', '', ''); +-- +-- Now create the patch fields and their slots +-- +insert into PField values ('PF0_1', 'Wallslots basement'); +-- +-- The cables for these will be made later, so they are unconnected for now +-- +insert into PSlot values ('PS.base.a1', 'PF0_1', '', ''); +insert into PSlot values ('PS.base.a2', 'PF0_1', '', ''); +insert into PSlot values ('PS.base.a3', 'PF0_1', '', ''); +insert into PSlot values ('PS.base.a4', 'PF0_1', '', ''); +insert into PSlot values ('PS.base.a5', 'PF0_1', '', ''); +insert into PSlot values ('PS.base.a6', 'PF0_1', '', ''); +-- +-- These are already wired to the wall connectors +-- +insert into PSlot values ('PS.base.b1', 'PF0_1', '', 'WS.002.1a'); +insert into PSlot values ('PS.base.b2', 'PF0_1', '', 'WS.002.1b'); +insert into PSlot values ('PS.base.b3', 'PF0_1', '', 'WS.002.2a'); +insert into PSlot values ('PS.base.b4', 'PF0_1', '', 'WS.002.2b'); +insert into PSlot values ('PS.base.b5', 'PF0_1', '', 'WS.002.3a'); +insert into PSlot values ('PS.base.b6', 'PF0_1', '', 'WS.002.3b'); +insert into PSlot values ('PS.base.c1', 'PF0_1', '', 'WS.003.1a'); +insert into PSlot values ('PS.base.c2', 'PF0_1', '', 'WS.003.1b'); +insert into PSlot values ('PS.base.c3', 'PF0_1', '', 'WS.003.2a'); +insert into PSlot values ('PS.base.c4', 'PF0_1', '', 'WS.003.2b'); +insert into PSlot values ('PS.base.c5', 'PF0_1', '', 'WS.003.3a'); +insert into PSlot values ('PS.base.c6', 'PF0_1', '', 'WS.003.3b'); +-- +-- This patchfield will be renamed later into PF0_2 - so its +-- slots references in pfname should follow +-- +insert into PField values ('PF0_X', 'Phonelines basement'); +insert into PSlot values ('PS.base.ta1', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.ta2', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.ta3', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.ta4', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.ta5', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.ta6', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.tb1', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.tb2', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.tb3', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.tb4', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.tb5', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.tb6', 'PF0_X', '', ''); +insert into PField values ('PF1_1', 'Wallslots first floor'); +insert into PSlot values ('PS.first.a1', 'PF1_1', '', 'WS.101.1a'); +insert into PSlot values ('PS.first.a2', 'PF1_1', '', 'WS.101.1b'); +insert into PSlot values ('PS.first.a3', 'PF1_1', '', 'WS.101.2a'); +insert into PSlot values ('PS.first.a4', 'PF1_1', '', 'WS.101.2b'); +insert into PSlot values ('PS.first.a5', 'PF1_1', '', 'WS.101.3a'); +insert into PSlot values ('PS.first.a6', 'PF1_1', '', 'WS.101.3b'); +insert into PSlot values ('PS.first.b1', 'PF1_1', '', 'WS.102.1a'); +insert into PSlot values ('PS.first.b2', 'PF1_1', '', 'WS.102.1b'); +insert into PSlot values ('PS.first.b3', 'PF1_1', '', 'WS.102.2a'); +insert into PSlot values ('PS.first.b4', 'PF1_1', '', 'WS.102.2b'); +insert into PSlot values ('PS.first.b5', 'PF1_1', '', 'WS.102.3a'); +insert into PSlot values ('PS.first.b6', 'PF1_1', '', 'WS.102.3b'); +insert into PSlot values ('PS.first.c1', 'PF1_1', '', 'WS.105.1a'); +insert into PSlot values ('PS.first.c2', 'PF1_1', '', 'WS.105.1b'); +insert into PSlot values ('PS.first.c3', 'PF1_1', '', 'WS.105.2a'); +insert into PSlot values ('PS.first.c4', 'PF1_1', '', 'WS.105.2b'); +insert into PSlot values ('PS.first.c5', 'PF1_1', '', 'WS.105.3a'); +insert into PSlot values ('PS.first.c6', 'PF1_1', '', 'WS.105.3b'); +insert into PSlot values ('PS.first.d1', 'PF1_1', '', 'WS.106.1a'); +insert into PSlot values ('PS.first.d2', 'PF1_1', '', 'WS.106.1b'); +insert into PSlot values ('PS.first.d3', 'PF1_1', '', 'WS.106.2a'); +insert into PSlot values ('PS.first.d4', 'PF1_1', '', 'WS.106.2b'); +insert into PSlot values ('PS.first.d5', 'PF1_1', '', 'WS.106.3a'); +insert into PSlot values ('PS.first.d6', 'PF1_1', '', 'WS.106.3b'); +-- +-- Now we wire the wall connectors 1a-2a in room 001 to the +-- patchfield. In the second update we make an error, and +-- correct it after +-- +update PSlot set backlink = 'WS.001.1a' where slotname = 'PS.base.a1'; +update PSlot set backlink = 'WS.001.1b' where slotname = 'PS.base.a3'; +select * from WSlot where roomno = '001' order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | + WS.001.3a | 001 | | + WS.001.3b | 001 | | +(6 rows) + +select * from PSlot where slotname ~ 'PS.base.a' order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | + PS.base.a3 | PF0_1 | | WS.001.1b + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | +(6 rows) + +update PSlot set backlink = 'WS.001.2a' where slotname = 'PS.base.a3'; +select * from WSlot where roomno = '001' order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | + WS.001.3a | 001 | | + WS.001.3b | 001 | | +(6 rows) + +select * from PSlot where slotname ~ 'PS.base.a' order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | + PS.base.a3 | PF0_1 | | WS.001.2a + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | +(6 rows) + +update PSlot set backlink = 'WS.001.1b' where slotname = 'PS.base.a2'; +select * from WSlot where roomno = '001' order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | + WS.001.3a | 001 | | + WS.001.3b | 001 | | +(6 rows) + +select * from PSlot where slotname ~ 'PS.base.a' order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | WS.001.1b + PS.base.a3 | PF0_1 | | WS.001.2a + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | +(6 rows) + +-- +-- Same procedure for 2b-3b but this time updating the WSlot instead +-- of the PSlot. Due to the triggers the result is the same: +-- WSlot and corresponding PSlot point to each other. +-- +update WSlot set backlink = 'PS.base.a4' where slotname = 'WS.001.2b'; +update WSlot set backlink = 'PS.base.a6' where slotname = 'WS.001.3a'; +select * from WSlot where roomno = '001' order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | PS.base.a4 + WS.001.3a | 001 | | PS.base.a6 + WS.001.3b | 001 | | +(6 rows) + +select * from PSlot where slotname ~ 'PS.base.a' order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | WS.001.1b + PS.base.a3 | PF0_1 | | WS.001.2a + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | +(6 rows) + +update WSlot set backlink = 'PS.base.a6' where slotname = 'WS.001.3b'; +select * from WSlot where roomno = '001' order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | PS.base.a4 + WS.001.3a | 001 | | PS.base.a6 + WS.001.3b | 001 | | PS.base.a6 +(6 rows) + +select * from PSlot where slotname ~ 'PS.base.a' order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | WS.001.1b + PS.base.a3 | PF0_1 | | WS.001.2a + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | +(6 rows) + +update WSlot set backlink = 'PS.base.a5' where slotname = 'WS.001.3a'; +select * from WSlot where roomno = '001' order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | PS.base.a4 + WS.001.3a | 001 | | PS.base.a5 + WS.001.3b | 001 | | PS.base.a6 +(6 rows) + +select * from PSlot where slotname ~ 'PS.base.a' order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | WS.001.1b + PS.base.a3 | PF0_1 | | WS.001.2a + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | +(6 rows) + +insert into PField values ('PF1_2', 'Phonelines first floor'); +insert into PSlot values ('PS.first.ta1', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.ta2', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.ta3', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.ta4', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.ta5', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.ta6', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.tb1', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.tb2', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.tb3', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.tb4', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.tb5', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.tb6', 'PF1_2', '', ''); +-- +-- Fix the wrong name for patchfield PF0_2 +-- +update PField set name = 'PF0_2' where name = 'PF0_X'; +select * from PSlot order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | WS.001.1b + PS.base.a3 | PF0_1 | | WS.001.2a + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | + PS.base.b1 | PF0_1 | | WS.002.1a + PS.base.b2 | PF0_1 | | WS.002.1b + PS.base.b3 | PF0_1 | | WS.002.2a + PS.base.b4 | PF0_1 | | WS.002.2b + PS.base.b5 | PF0_1 | | WS.002.3a + PS.base.b6 | PF0_1 | | WS.002.3b + PS.base.c1 | PF0_1 | | WS.003.1a + PS.base.c2 | PF0_1 | | WS.003.1b + PS.base.c3 | PF0_1 | | WS.003.2a + PS.base.c4 | PF0_1 | | WS.003.2b + PS.base.c5 | PF0_1 | | WS.003.3a + PS.base.c6 | PF0_1 | | WS.003.3b + PS.base.ta1 | PF0_X | | + PS.base.ta2 | PF0_X | | + PS.base.ta3 | PF0_X | | + PS.base.ta4 | PF0_X | | + PS.base.ta5 | PF0_X | | + PS.base.ta6 | PF0_X | | + PS.base.tb1 | PF0_X | | + PS.base.tb2 | PF0_X | | + PS.base.tb3 | PF0_X | | + PS.base.tb4 | PF0_X | | + PS.base.tb5 | PF0_X | | + PS.base.tb6 | PF0_X | | + PS.first.a1 | PF1_1 | | WS.101.1a + PS.first.a2 | PF1_1 | | WS.101.1b + PS.first.a3 | PF1_1 | | WS.101.2a + PS.first.a4 | PF1_1 | | WS.101.2b + PS.first.a5 | PF1_1 | | WS.101.3a + PS.first.a6 | PF1_1 | | WS.101.3b + PS.first.b1 | PF1_1 | | WS.102.1a + PS.first.b2 | PF1_1 | | WS.102.1b + PS.first.b3 | PF1_1 | | WS.102.2a + PS.first.b4 | PF1_1 | | WS.102.2b + PS.first.b5 | PF1_1 | | WS.102.3a + PS.first.b6 | PF1_1 | | WS.102.3b + PS.first.c1 | PF1_1 | | WS.105.1a + PS.first.c2 | PF1_1 | | WS.105.1b + PS.first.c3 | PF1_1 | | WS.105.2a + PS.first.c4 | PF1_1 | | WS.105.2b + PS.first.c5 | PF1_1 | | WS.105.3a + PS.first.c6 | PF1_1 | | WS.105.3b + PS.first.d1 | PF1_1 | | WS.106.1a + PS.first.d2 | PF1_1 | | WS.106.1b + PS.first.d3 | PF1_1 | | WS.106.2a + PS.first.d4 | PF1_1 | | WS.106.2b + PS.first.d5 | PF1_1 | | WS.106.3a + PS.first.d6 | PF1_1 | | WS.106.3b + PS.first.ta1 | PF1_2 | | + PS.first.ta2 | PF1_2 | | + PS.first.ta3 | PF1_2 | | + PS.first.ta4 | PF1_2 | | + PS.first.ta5 | PF1_2 | | + PS.first.ta6 | PF1_2 | | + PS.first.tb1 | PF1_2 | | + PS.first.tb2 | PF1_2 | | + PS.first.tb3 | PF1_2 | | + PS.first.tb4 | PF1_2 | | + PS.first.tb5 | PF1_2 | | + PS.first.tb6 | PF1_2 | | +(66 rows) + +select * from WSlot order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | PS.base.a4 + WS.001.3a | 001 | | PS.base.a5 + WS.001.3b | 001 | | PS.base.a6 + WS.002.1a | 002 | | + WS.002.1b | 002 | | + WS.002.2a | 002 | | + WS.002.2b | 002 | | + WS.002.3a | 002 | | + WS.002.3b | 002 | | + WS.003.1a | 003 | | + WS.003.1b | 003 | | + WS.003.2a | 003 | | + WS.003.2b | 003 | | + WS.003.3a | 003 | | + WS.003.3b | 003 | | + WS.101.1a | 101 | | + WS.101.1b | 101 | | + WS.101.2a | 101 | | + WS.101.2b | 101 | | + WS.101.3a | 101 | | + WS.101.3b | 101 | | + WS.102.1a | 102 | | + WS.102.1b | 102 | | + WS.102.2a | 102 | | + WS.102.2b | 102 | | + WS.102.3a | 102 | | + WS.102.3b | 102 | | + WS.105.1a | 105 | | + WS.105.1b | 105 | | + WS.105.2a | 105 | | + WS.105.2b | 105 | | + WS.105.3a | 105 | | + WS.105.3b | 105 | | + WS.106.1a | 106 | | + WS.106.1b | 106 | | + WS.106.2a | 106 | | + WS.106.2b | 106 | | + WS.106.3a | 106 | | + WS.106.3b | 106 | | +(42 rows) + +-- +-- Install the central phone system and create the phone numbers. +-- They are weired on insert to the patchfields. Again the +-- triggers automatically tell the PSlots to update their +-- backlink field. +-- +insert into PLine values ('PL.001', '-0', 'Central call', 'PS.base.ta1'); +insert into PLine values ('PL.002', '-101', '', 'PS.base.ta2'); +insert into PLine values ('PL.003', '-102', '', 'PS.base.ta3'); +insert into PLine values ('PL.004', '-103', '', 'PS.base.ta5'); +insert into PLine values ('PL.005', '-104', '', 'PS.base.ta6'); +insert into PLine values ('PL.006', '-106', '', 'PS.base.tb2'); +insert into PLine values ('PL.007', '-108', '', 'PS.base.tb3'); +insert into PLine values ('PL.008', '-109', '', 'PS.base.tb4'); +insert into PLine values ('PL.009', '-121', '', 'PS.base.tb5'); +insert into PLine values ('PL.010', '-122', '', 'PS.base.tb6'); +insert into PLine values ('PL.015', '-134', '', 'PS.first.ta1'); +insert into PLine values ('PL.016', '-137', '', 'PS.first.ta3'); +insert into PLine values ('PL.017', '-139', '', 'PS.first.ta4'); +insert into PLine values ('PL.018', '-362', '', 'PS.first.tb1'); +insert into PLine values ('PL.019', '-363', '', 'PS.first.tb2'); +insert into PLine values ('PL.020', '-364', '', 'PS.first.tb3'); +insert into PLine values ('PL.021', '-365', '', 'PS.first.tb5'); +insert into PLine values ('PL.022', '-367', '', 'PS.first.tb6'); +insert into PLine values ('PL.028', '-501', 'Fax entrance', 'PS.base.ta2'); +insert into PLine values ('PL.029', '-502', 'Fax first floor', 'PS.first.ta1'); +-- +-- Buy some phones, plug them into the wall and patch the +-- phone lines to the corresponding patchfield slots. +-- +insert into PHone values ('PH.hc001', 'Hicom standard', 'WS.001.1a'); +update PSlot set slotlink = 'PS.base.ta1' where slotname = 'PS.base.a1'; +insert into PHone values ('PH.hc002', 'Hicom standard', 'WS.002.1a'); +update PSlot set slotlink = 'PS.base.ta5' where slotname = 'PS.base.b1'; +insert into PHone values ('PH.hc003', 'Hicom standard', 'WS.002.2a'); +update PSlot set slotlink = 'PS.base.tb2' where slotname = 'PS.base.b3'; +insert into PHone values ('PH.fax001', 'Canon fax', 'WS.001.2a'); +update PSlot set slotlink = 'PS.base.ta2' where slotname = 'PS.base.a3'; +-- +-- Install a hub at one of the patchfields, plug a computers +-- ethernet interface into the wall and patch it to the hub. +-- +insert into Hub values ('base.hub1', 'Patchfield PF0_1 hub', 16); +insert into System values ('orion', 'PC'); +insert into IFace values ('IF', 'orion', 'eth0', 'WS.002.1b'); +update PSlot set slotlink = 'HS.base.hub1.1' where slotname = 'PS.base.b2'; +-- +-- Now we take a look at the patchfield +-- +-- PGXCTODO: This is failing due to issue 3522907, complicated SELECT queries in plpgsql functions +select * from PField_v1 where pfname = 'PF0_1' order by slotname; +ERROR: could not determine data type of parameter $1 +CONTEXT: SQL statement "select * from WSlot where slotname = rec.backlink" +PL/pgSQL function "pslot_backlink_view" line 31 at SQL statement +select * from PField_v1 where pfname = 'PF0_2' order by slotname; + pfname | slotname | backside | patch +--------+----------+----------+------- +(0 rows) + +-- +-- Finally we want errors +-- +insert into PField values ('PF1_1', 'should fail due to unique index'); +ERROR: duplicate key value violates unique constraint "pfield_name" +DETAIL: Key (name)=(PF1_1) already exists. +update PSlot set backlink = 'WS.not.there' where slotname = 'PS.base.a1'; +update PSlot set backlink = 'XX.illegal' where slotname = 'PS.base.a1'; +update PSlot set slotlink = 'PS.not.there' where slotname = 'PS.base.a1'; +update PSlot set slotlink = 'XX.illegal' where slotname = 'PS.base.a1'; +insert into HSlot values ('HS', 'base.hub1', 1, ''); +insert into HSlot values ('HS', 'base.hub1', 20, ''); +ERROR: duplicate key value violates unique constraint "hslot_name" +DETAIL: Key (slotname)=(HS ) already exists. +delete from HSlot; +insert into IFace values ('IF', 'notthere', 'eth0', ''); +ERROR: duplicate key value violates unique constraint "iface_name" +DETAIL: Key (slotname)=(IF ) already exists. +insert into IFace values ('IF', 'orion', 'ethernet_interface_name_too_long', ''); +ERROR: duplicate key value violates unique constraint "iface_name" +DETAIL: Key (slotname)=(IF ) already exists. +-- +-- The following tests are unrelated to the scenario outlined above; +-- they merely exercise specific parts of PL/pgSQL +-- +-- +-- Test recursion, per bug report 7-Sep-01 +-- +CREATE FUNCTION recursion_test(int,int) RETURNS text AS ' +DECLARE rslt text; +BEGIN + IF $1 <= 0 THEN + rslt = CAST($2 AS TEXT); + ELSE + rslt = CAST($1 AS TEXT) || '','' || recursion_test($1 - 1, $2); + END IF; + RETURN rslt; +END;' LANGUAGE plpgsql; +SELECT recursion_test(4,3); + recursion_test +---------------- + 4,3,2,1,3 +(1 row) + +-- +-- Test the FOUND magic variable +-- +CREATE TABLE found_test_tbl (a int) distribute by round robin; +create function test_found() + returns boolean as ' + declare + begin + insert into found_test_tbl values (1); + if FOUND then + insert into found_test_tbl values (2); + end if; + + update found_test_tbl set a = 100 where a = 1; + if FOUND then + insert into found_test_tbl values (3); + end if; + + delete from found_test_tbl where a = 9999; -- matches no rows + if not FOUND then + insert into found_test_tbl values (4); + end if; + + for i in 1 .. 10 loop + -- no need to do anything + end loop; + if FOUND then + insert into found_test_tbl values (5); + end if; + + -- never executes the loop + for i in 2 .. 1 loop + -- no need to do anything + end loop; + if not FOUND then + insert into found_test_tbl values (6); + end if; + return true; + end;' language plpgsql; +select test_found(); +ERROR: Postgres-XC does not support DML queries in PL/pgSQL +CONTEXT: PL/pgSQL function "test_found" line 4 at SQL statement +select * from found_test_tbl order by 1; + a +--- +(0 rows) + +-- +-- Test set-returning functions for PL/pgSQL +-- +create function test_table_func_rec() returns setof found_test_tbl as ' +DECLARE + rec RECORD; +BEGIN + FOR rec IN select * from found_test_tbl LOOP + RETURN NEXT rec; + END LOOP; + RETURN; +END;' language plpgsql; +select * from test_table_func_rec() order by 1; + a +--- +(0 rows) + +create function test_table_func_row() returns setof found_test_tbl as ' +DECLARE + row found_test_tbl%ROWTYPE; +BEGIN + FOR row IN select * from found_test_tbl LOOP + RETURN NEXT row; + END LOOP; + RETURN; +END;' language plpgsql; +select * from test_table_func_row() order by 1; + a +--- +(0 rows) + +create function test_ret_set_scalar(int,int) returns setof int as ' +DECLARE + i int; +BEGIN + FOR i IN $1 .. $2 LOOP + RETURN NEXT i + 1; + END LOOP; + RETURN; +END;' language plpgsql; +select * from test_ret_set_scalar(1,10) order by 1; + test_ret_set_scalar +--------------------- + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 +(10 rows) + +create function test_ret_set_rec_dyn(int) returns setof record as ' +DECLARE + retval RECORD; +BEGIN + IF $1 > 10 THEN + SELECT INTO retval 5, 10, 15; + RETURN NEXT retval; + RETURN NEXT retval; + ELSE + SELECT INTO retval 50, 5::numeric, ''xxx''::text; + RETURN NEXT retval; + RETURN NEXT retval; + END IF; + RETURN; +END;' language plpgsql; +SELECT * FROM test_ret_set_rec_dyn(1500) AS (a int, b int, c int) order by a, b, c; + a | b | c +---+----+---- + 5 | 10 | 15 + 5 | 10 | 15 +(2 rows) + +SELECT * FROM test_ret_set_rec_dyn(5) AS (a int, b numeric, c text) order by a, b, c; + a | b | c +----+---+----- + 50 | 5 | xxx + 50 | 5 | xxx +(2 rows) + +create function test_ret_rec_dyn(int) returns record as ' +DECLARE + retval RECORD; +BEGIN + IF $1 > 10 THEN + SELECT INTO retval 5, 10, 15; + RETURN retval; + ELSE + SELECT INTO retval 50, 5::numeric, ''xxx''::text; + RETURN retval; + END IF; +END;' language plpgsql; +SELECT * FROM test_ret_rec_dyn(1500) AS (a int, b int, c int) order by a, b, c; + a | b | c +---+----+---- + 5 | 10 | 15 +(1 row) + +SELECT * FROM test_ret_rec_dyn(5) AS (a int, b numeric, c text) order by a, b, c; + a | b | c +----+---+----- + 50 | 5 | xxx +(1 row) + +-- +-- Test handling of OUT parameters, including polymorphic cases. +-- Note that RETURN is optional with OUT params; we try both ways. +-- +-- wrong way to do it: +create function f1(in i int, out j int) returns int as $$ +begin + return i+1; +end$$ language plpgsql; +ERROR: RETURN cannot have a parameter in function with OUT parameters +LINE 3: return i+1; + ^ +create function f1(in i int, out j int) as $$ +begin + j := i+1; + return; +end$$ language plpgsql; +select f1(42); + f1 +---- + 43 +(1 row) + +select * from f1(42); + j +---- + 43 +(1 row) + +create or replace function f1(inout i int) as $$ +begin + i := i+1; +end$$ language plpgsql; +select f1(42); + f1 +---- + 43 +(1 row) + +select * from f1(42); + i +---- + 43 +(1 row) + +drop function f1(int); +create function f1(in i int, out j int) returns setof int as $$ +begin + j := i+1; + return next; + j := i+2; + return next; + return; +end$$ language plpgsql; +select * from f1(42) order by 1; + j +---- + 43 + 44 +(2 rows) + +drop function f1(int); +create function f1(in i int, out j int, out k text) as $$ +begin + j := i; + j := j+1; + k := 'foo'; +end$$ language plpgsql; +select f1(42); + f1 +---------- + (43,foo) +(1 row) + +select * from f1(42); + j | k +----+----- + 43 | foo +(1 row) + +drop function f1(int); +create function f1(in i int, out j int, out k text) returns setof record as $$ +begin + j := i+1; + k := 'foo'; + return next; + j := j+1; + k := 'foot'; + return next; +end$$ language plpgsql; +select * from f1(42) order by j, k;; + j | k +----+------ + 43 | foo + 44 | foot +(2 rows) + +drop function f1(int); +create function duplic(in i anyelement, out j anyelement, out k anyarray) as $$ +begin + j := i; + k := array[j,j]; + return; +end$$ language plpgsql; +select * from duplic(42); + j | k +----+--------- + 42 | {42,42} +(1 row) + +select * from duplic('foo'::text); + j | k +-----+----------- + foo | {foo,foo} +(1 row) + +drop function duplic(anyelement); +-- +-- test PERFORM +-- +create table perform_test ( + a INT, + b INT +); +create function simple_func(int) returns boolean as ' +BEGIN + IF $1 < 20 THEN + INSERT INTO perform_test VALUES ($1, $1 + 10); + RETURN TRUE; + ELSE + RETURN FALSE; + END IF; +END;' language plpgsql; +create function perform_test_func() returns void as ' +BEGIN + IF FOUND then + INSERT INTO perform_test VALUES (100, 100); + END IF; + + PERFORM simple_func(5); + + IF FOUND then + INSERT INTO perform_test VALUES (100, 100); + END IF; + + PERFORM simple_func(50); + + IF FOUND then + INSERT INTO perform_test VALUES (100, 100); + END IF; + + RETURN; +END;' language plpgsql; +SELECT perform_test_func(); +ERROR: Postgres-XC does not support DML queries in PL/pgSQL +CONTEXT: PL/pgSQL function "simple_func" line 4 at SQL statement +SQL statement "SELECT simple_func(5)" +PL/pgSQL function "perform_test_func" line 7 at PERFORM +SELECT * FROM perform_test order by a, b; + a | b +---+--- +(0 rows) + +drop table perform_test; +-- +-- Test error trapping +-- +create function trap_zero_divide(int) returns int as $$ +declare x int; + sx smallint; +begin + begin -- start a subtransaction + raise notice 'should see this'; + x := 100 / $1; + raise notice 'should see this only if % <> 0', $1; + sx := $1; + raise notice 'should see this only if % fits in smallint', $1; + if $1 < 0 then + raise exception '% is less than zero', $1; + end if; + exception + when division_by_zero then + raise notice 'caught division_by_zero'; + x := -1; + when NUMERIC_VALUE_OUT_OF_RANGE then + raise notice 'caught numeric_value_out_of_range'; + x := -2; + end; + return x; +end$$ language plpgsql; +select trap_zero_divide(50); +NOTICE: should see this +NOTICE: should see this only if 50 <> 0 +NOTICE: should see this only if 50 fits in smallint + trap_zero_divide +------------------ + 2 +(1 row) + +select trap_zero_divide(0); +NOTICE: should see this +NOTICE: caught division_by_zero + trap_zero_divide +------------------ + -1 +(1 row) + +select trap_zero_divide(100000); +NOTICE: should see this +NOTICE: should see this only if 100000 <> 0 +NOTICE: caught numeric_value_out_of_range + trap_zero_divide +------------------ + -2 +(1 row) + +select trap_zero_divide(-100); +NOTICE: should see this +NOTICE: should see this only if -100 <> 0 +NOTICE: should see this only if -100 fits in smallint +ERROR: -100 is less than zero +create function trap_matching_test(int) returns int as $$ +declare x int; + sx smallint; + y int; +begin + begin -- start a subtransaction + x := 100 / $1; + sx := $1; + select into y unique1 from tenk1 where unique2 = + (select unique2 from tenk1 b where ten = $1); + exception + when data_exception then -- category match + raise notice 'caught data_exception'; + x := -1; + when NUMERIC_VALUE_OUT_OF_RANGE OR CARDINALITY_VIOLATION then + raise notice 'caught numeric_value_out_of_range or cardinality_violation'; + x := -2; + end; + return x; +end$$ language plpgsql; +-- PGXCTODO: This is failing due to issue 3522907, complicated SELECT queries in plpgsql functions +select trap_matching_test(50); +ERROR: bind message supplies 1 parameters, but prepared statement "" requires 0 +CONTEXT: SQL statement "select unique1 from tenk1 where unique2 = + (select unique2 from tenk1 b where ten = $1)" +PL/pgSQL function "trap_matching_test" line 9 at SQL statement +select trap_matching_test(0); +NOTICE: caught data_exception + trap_matching_test +-------------------- + -1 +(1 row) + +select trap_matching_test(100000); +NOTICE: caught data_exception + trap_matching_test +-------------------- + -1 +(1 row) + +-- PGXCTODO: This is failing due to issue 3522907, complicated SELECT queries in plpgsql functions +select trap_matching_test(1); +ERROR: bind message supplies 1 parameters, but prepared statement "" requires 0 +CONTEXT: SQL statement "select unique1 from tenk1 where unique2 = + (select unique2 from tenk1 b where ten = $1)" +PL/pgSQL function "trap_matching_test" line 9 at SQL statement +create temp table foo (f1 int); +create function blockme() returns int as $$ +declare x int; +begin + x := 1; + insert into foo values(x); + begin + x := x + 1; + insert into foo values(x); + -- we assume this will take longer than 2 seconds: + select count(*) into x from tenk1 a, tenk1 b, tenk1 c; + exception + when others then + raise notice 'caught others?'; + return -1; + when query_canceled then + raise notice 'nyeah nyeah, can''t stop me'; + x := x * 10; + end; + insert into foo values(x); + return x; +end$$ language plpgsql; +set statement_timeout to 2000; +select blockme(); +ERROR: Postgres-XC does not support DML queries in PL/pgSQL +CONTEXT: PL/pgSQL function "blockme" line 5 at SQL statement +reset statement_timeout; +select * from foo order by 1; + f1 +---- +(0 rows) + +drop table foo; +-- Test for pass-by-ref values being stored in proper context +create function test_variable_storage() returns text as $$ +declare x text; +begin + x := '1234'; + begin + x := x || '5678'; + -- force error inside subtransaction SPI context + perform trap_zero_divide(-100); + exception + when others then + x := x || '9012'; + end; + return x; +end$$ language plpgsql; +select test_variable_storage(); +NOTICE: should see this +CONTEXT: SQL statement "SELECT trap_zero_divide(-100)" +PL/pgSQL function "test_variable_storage" line 8 at PERFORM +NOTICE: should see this only if -100 <> 0 +CONTEXT: SQL statement "SELECT trap_zero_divide(-100)" +PL/pgSQL function "test_variable_storage" line 8 at PERFORM +NOTICE: should see this only if -100 fits in smallint +CONTEXT: SQL statement "SELECT trap_zero_divide(-100)" +PL/pgSQL function "test_variable_storage" line 8 at PERFORM + test_variable_storage +----------------------- + 123456789012 +(1 row) + +-- +-- Test proper snapshot handling in simple expressions +-- +create temp table users(login text, id serial); +NOTICE: CREATE TABLE will create implicit sequence "users_id_seq" for serial column "users.id" +create function sp_id_user(a_login text) returns int as $$ +declare x int; +begin + select into x id from users where login = a_login; + if found then return x; end if; + return 0; +end$$ language plpgsql stable; +insert into users values('user1'); +select sp_id_user('user1'); + sp_id_user +------------ + 1 +(1 row) + +select sp_id_user('userx'); + sp_id_user +------------ + 0 +(1 row) + +create function sp_add_user(a_login text) returns int as $$ +declare my_id_user int; +begin + my_id_user = sp_id_user( a_login ); + IF my_id_user > 0 THEN + RETURN -1; -- error code for existing user + END IF; + INSERT INTO users ( login ) VALUES ( a_login ); + my_id_user = sp_id_user( a_login ); + IF my_id_user = 0 THEN + RETURN -2; -- error code for insertion failure + END IF; + RETURN my_id_user; +end$$ language plpgsql; +select sp_add_user('user1'); + sp_add_user +------------- + -1 +(1 row) + +select sp_add_user('user2'); +ERROR: Postgres-XC does not support DML queries in PL/pgSQL +CONTEXT: PL/pgSQL function "sp_add_user" line 8 at SQL statement +select sp_add_user('user2'); + sp_add_user +------------- + 2 +(1 row) + +select sp_add_user('user3'); + sp_add_user +------------- + 3 +(1 row) + +select sp_add_user('user3'); + sp_add_user +------------- + -1 +(1 row) + +drop function sp_add_user(text); +drop function sp_id_user(text); +-- +-- tests for refcursors +-- +create table rc_test (a int, b int); +copy rc_test from stdin; +create function return_refcursor(rc refcursor) returns refcursor as $$ +begin + open rc for select a from rc_test; + return rc; +end +$$ language plpgsql; +create function refcursor_test1(refcursor) returns refcursor as $$ +begin + perform return_refcursor($1); + return $1; +end +$$ language plpgsql; +begin; +select refcursor_test1('test1'); + refcursor_test1 +----------------- + test1 +(1 row) + +fetch next in test1; + a +--- + 5 +(1 row) + +select refcursor_test1('test2'); + refcursor_test1 +----------------- + test2 +(1 row) + +fetch all from test2; + a +----- + 5 + 50 + 500 +(3 rows) + +commit; +-- should fail +fetch next from test1; +ERROR: cursor "test1" does not exist +create function refcursor_test2(int, int) returns boolean as $$ +declare + c1 cursor (param1 int, param2 int) for select * from rc_test where a > param1 and b > param2; + nonsense record; +begin + open c1($1, $2); + fetch c1 into nonsense; + close c1; + if found then + return true; + else + return false; + end if; +end +$$ language plpgsql; +-- PGXCTODO: This is failing due to issue 3522907, complicated SELECT queries in plpgsql functions +select refcursor_test2(20000, 20000) as "Should be false", + refcursor_test2(20, 20) as "Should be true"; +ERROR: could not determine data type of parameter $1 +CONTEXT: PL/pgSQL function "refcursor_test2" line 7 at FETCH +-- +-- tests for "raise" processing +-- +create function raise_test1(int) returns int as $$ +begin + raise notice 'This message has too many parameters!', $1; + return $1; +end; +$$ language plpgsql; +select raise_test1(5); +ERROR: too many parameters specified for RAISE +CONTEXT: PL/pgSQL function "raise_test1" line 3 at RAISE +create function raise_test2(int) returns int as $$ +begin + raise notice 'This message has too few parameters: %, %, %', $1, $1; + return $1; +end; +$$ language plpgsql; +select raise_test2(10); +ERROR: too few parameters specified for RAISE +CONTEXT: PL/pgSQL function "raise_test2" line 3 at RAISE +-- Test re-RAISE inside a nested exception block. This case is allowed +-- by Oracle's PL/SQL but was handled differently by PG before 9.1. +CREATE FUNCTION reraise_test() RETURNS void AS $$ +BEGIN + BEGIN + RAISE syntax_error; + EXCEPTION + WHEN syntax_error THEN + BEGIN + raise notice 'exception % thrown in inner block, reraising', sqlerrm; + RAISE; + EXCEPTION + WHEN OTHERS THEN + raise notice 'RIGHT - exception % caught in inner block', sqlerrm; + END; + END; +EXCEPTION + WHEN OTHERS THEN + raise notice 'WRONG - exception % caught in outer block', sqlerrm; +END; +$$ LANGUAGE plpgsql; +SELECT reraise_test(); +NOTICE: exception syntax_error thrown in inner block, reraising +NOTICE: RIGHT - exception syntax_error caught in inner block + reraise_test +-------------- + +(1 row) + +-- +-- reject function definitions that contain malformed SQL queries at +-- compile-time, where possible +-- +create function bad_sql1() returns int as $$ +declare a int; +begin + a := 5; + Johnny Yuma; + a := 10; + return a; +end$$ language plpgsql; +ERROR: syntax error at or near "Johnny" +LINE 5: Johnny Yuma; + ^ +create function bad_sql2() returns int as $$ +declare r record; +begin + for r in select I fought the law, the law won LOOP + raise notice 'in loop'; + end loop; + return 5; +end;$$ language plpgsql; +ERROR: syntax error at or near "the" +LINE 4: for r in select I fought the law, the law won LOOP + ^ +-- a RETURN expression is mandatory, except for void-returning +-- functions, where it is not allowed +create function missing_return_expr() returns int as $$ +begin + return ; +end;$$ language plpgsql; +ERROR: missing expression at or near ";" +LINE 3: return ; + ^ +create function void_return_expr() returns void as $$ +begin + return 5; +end;$$ language plpgsql; +ERROR: RETURN cannot have a parameter in function returning void +LINE 3: return 5; + ^ +-- VOID functions are allowed to omit RETURN +create function void_return_expr() returns void as $$ +begin + perform 2+2; +end;$$ language plpgsql; +select void_return_expr(); + void_return_expr +------------------ + +(1 row) + +-- but ordinary functions are not +create function missing_return_expr() returns int as $$ +begin + perform 2+2; +end;$$ language plpgsql; +select missing_return_expr(); +ERROR: control reached end of function without RETURN +CONTEXT: PL/pgSQL function "missing_return_expr" +drop function void_return_expr(); +drop function missing_return_expr(); +-- +-- EXECUTE ... INTO test +-- +create table eifoo (i integer, y integer); +create type eitype as (i integer, y integer); +create or replace function execute_into_test(varchar) returns record as $$ +declare + _r record; + _rt eifoo%rowtype; + _v eitype; + i int; + j int; + k int; +begin + execute 'insert into '||$1||' values(10,15)'; + execute 'select (row).* from (select row(10,1)::eifoo) s' into _r; + raise notice '% %', _r.i, _r.y; + execute 'select * from '||$1||' limit 1' into _rt; + raise notice '% %', _rt.i, _rt.y; + execute 'select *, 20 from '||$1||' limit 1' into i, j, k; + raise notice '% % %', i, j, k; + execute 'select 1,2' into _v; + return _v; +end; $$ language plpgsql; +select execute_into_test('eifoo'); +NOTICE: 10 1 +NOTICE: 10 15 +NOTICE: 10 15 20 + execute_into_test +------------------- + (1,2) +(1 row) + +drop table eifoo cascade; +drop type eitype cascade; +-- +-- SQLSTATE and SQLERRM test +-- +create function excpt_test1() returns void as $$ +begin + raise notice '% %', sqlstate, sqlerrm; +end; $$ language plpgsql; +-- should fail: SQLSTATE and SQLERRM are only in defined EXCEPTION +-- blocks +select excpt_test1(); +ERROR: column "sqlstate" does not exist +LINE 1: SELECT sqlstate + ^ +QUERY: SELECT sqlstate +CONTEXT: PL/pgSQL function "excpt_test1" line 3 at RAISE +create function excpt_test2() returns void as $$ +begin + begin + begin + raise notice '% %', sqlstate, sqlerrm; + end; + end; +end; $$ language plpgsql; +-- should fail +select excpt_test2(); +ERROR: column "sqlstate" does not exist +LINE 1: SELECT sqlstate + ^ +QUERY: SELECT sqlstate +CONTEXT: PL/pgSQL function "excpt_test2" line 5 at RAISE +create function excpt_test3() returns void as $$ +begin + begin + raise exception 'user exception'; + exception when others then + raise notice 'caught exception % %', sqlstate, sqlerrm; + begin + raise notice '% %', sqlstate, sqlerrm; + perform 10/0; + exception + when substring_error then + -- this exception handler shouldn't be invoked + raise notice 'unexpected exception: % %', sqlstate, sqlerrm; + when division_by_zero then + raise notice 'caught exception % %', sqlstate, sqlerrm; + end; + raise notice '% %', sqlstate, sqlerrm; + end; +end; $$ language plpgsql; +select excpt_test3(); +NOTICE: caught exception P0001 user exception +NOTICE: P0001 user exception +NOTICE: caught exception 22012 division by zero +NOTICE: P0001 user exception + excpt_test3 +------------- + +(1 row) + +drop function excpt_test1(); +drop function excpt_test2(); +drop function excpt_test3(); +-- parameters of raise stmt can be expressions +create function raise_exprs() returns void as $$ +declare + a integer[] = '{10,20,30}'; + c varchar = 'xyz'; + i integer; +begin + i := 2; + raise notice '%; %; %; %; %; %', a, a[i], c, (select c || 'abc'), row(10,'aaa',NULL,30), NULL; +end;$$ language plpgsql; +select raise_exprs(); +NOTICE: {10,20,30}; 20; xyz; xyzabc; (10,aaa,,30); + raise_exprs +------------- + +(1 row) + +drop function raise_exprs(); +-- continue statement +create table conttesttbl(idx serial, v integer); +NOTICE: CREATE TABLE will create implicit sequence "conttesttbl_idx_seq" for serial column "conttesttbl.idx" +insert into conttesttbl(v) values(10); +insert into conttesttbl(v) values(20); +insert into conttesttbl(v) values(30); +insert into conttesttbl(v) values(40); +create function continue_test1() returns void as $$ +declare _i integer = 0; _r record; +begin + raise notice '---1---'; + loop + _i := _i + 1; + raise notice '%', _i; + continue when _i < 10; + exit; + end loop; + + raise notice '---2---'; + <> + loop + _i := _i - 1; + loop + raise notice '%', _i; + continue lbl when _i > 0; + exit lbl; + end loop; + end loop; + + raise notice '---3---'; + <> + while _i < 10 loop + _i := _i + 1; + continue the_loop when _i % 2 = 0; + raise notice '%', _i; + end loop; + + raise notice '---4---'; + for _i in 1..10 loop + begin + -- applies to outer loop, not the nested begin block + continue when _i < 5; + raise notice '%', _i; + end; + end loop; + + raise notice '---5---'; + for _r in select * from conttesttbl loop + continue when _r.v <= 20; + raise notice '%', _r.v; + end loop; + + raise notice '---6---'; + for _r in execute 'select * from conttesttbl' loop + continue when _r.v <= 20; + raise notice '%', _r.v; + end loop; + + raise notice '---7---'; + for _i in 1..3 loop + raise notice '%', _i; + continue when _i = 3; + end loop; + + raise notice '---8---'; + _i := 1; + while _i <= 3 loop + raise notice '%', _i; + _i := _i + 1; + continue when _i = 3; + end loop; + + raise notice '---9---'; + for _r in select * from conttesttbl order by v limit 1 loop + raise notice '%', _r.v; + continue; + end loop; + + raise notice '---10---'; + for _r in execute 'select * from conttesttbl order by v limit 1' loop + raise notice '%', _r.v; + continue; + end loop; +end; $$ language plpgsql; +select continue_test1(); +NOTICE: ---1--- +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 +NOTICE: 5 +NOTICE: 6 +NOTICE: 7 +NOTICE: 8 +NOTICE: 9 +NOTICE: 10 +NOTICE: ---2--- +NOTICE: 9 +NOTICE: 8 +NOTICE: 7 +NOTICE: 6 +NOTICE: 5 +NOTICE: 4 +NOTICE: 3 +NOTICE: 2 +NOTICE: 1 +NOTICE: 0 +NOTICE: ---3--- +NOTICE: 1 +NOTICE: 3 +NOTICE: 5 +NOTICE: 7 +NOTICE: 9 +NOTICE: ---4--- +NOTICE: 5 +NOTICE: 6 +NOTICE: 7 +NOTICE: 8 +NOTICE: 9 +NOTICE: 10 +NOTICE: ---5--- +NOTICE: 30 +NOTICE: 40 +NOTICE: ---6--- +NOTICE: 30 +NOTICE: 40 +NOTICE: ---7--- +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: ---8--- +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: ---9--- +NOTICE: 10 +NOTICE: ---10--- +NOTICE: 10 + continue_test1 +---------------- + +(1 row) + +-- CONTINUE is only legal inside a loop +create function continue_test2() returns void as $$ +begin + begin + continue; + end; + return; +end; +$$ language plpgsql; +-- should fail +select continue_test2(); +ERROR: CONTINUE cannot be used outside a loop +CONTEXT: PL/pgSQL function "continue_test2" +-- CONTINUE can't reference the label of a named block +create function continue_test3() returns void as $$ +begin + <> + begin + loop + continue begin_block1; + end loop; + end; +end; +$$ language plpgsql; +-- should fail +select continue_test3(); +ERROR: CONTINUE cannot be used outside a loop +CONTEXT: PL/pgSQL function "continue_test3" +drop function continue_test1(); +drop function continue_test2(); +drop function continue_test3(); +drop table conttesttbl; +-- verbose end block and end loop +create function end_label1() returns void as $$ +<> +begin + <> + for _i in 1 .. 10 loop + exit flbl1; + end loop flbl1; + <> + for _i in 1 .. 10 loop + exit flbl2; + end loop; +end blbl; +$$ language plpgsql; +select end_label1(); + end_label1 +------------ + +(1 row) + +drop function end_label1(); +-- should fail: undefined end label +create function end_label2() returns void as $$ +begin + for _i in 1 .. 10 loop + exit; + end loop flbl1; +end; +$$ language plpgsql; +ERROR: label does not exist at or near "flbl1" +LINE 5: end loop flbl1; + ^ +-- should fail: end label does not match start label +create function end_label3() returns void as $$ +<> +begin + <> + for _i in 1 .. 10 loop + exit; + end loop outer_label; +end; +$$ language plpgsql; +ERROR: end label "outer_label" differs from block's label "inner_label" +LINE 7: end loop outer_label; + ^ +-- should fail: end label on a block without a start label +create function end_label4() returns void as $$ +<> +begin + for _i in 1 .. 10 loop + exit; + end loop outer_label; +end; +$$ language plpgsql; +ERROR: end label "outer_label" specified for unlabelled block +LINE 6: end loop outer_label; + ^ +-- using list of scalars in fori and fore stmts +create function for_vect() returns void as $proc$ +<>declare a integer; b varchar; c varchar; r record; +begin + -- fori + for i in 1 .. 3 loop + raise notice '%', i; + end loop; + -- fore with record var + for r in select gs as aa, 'BB' as bb, 'CC' as cc from generate_series(1,4) gs loop + raise notice '% % %', r.aa, r.bb, r.cc; + end loop; + -- fore with single scalar + for a in select gs from generate_series(1,4) gs loop + raise notice '%', a; + end loop; + -- fore with multiple scalars + for a,b,c in select gs, 'BB','CC' from generate_series(1,4) gs loop + raise notice '% % %', a, b, c; + end loop; + -- using qualified names in fors, fore is enabled, disabled only for fori + for lbl.a, lbl.b, lbl.c in execute $$select gs, 'bb','cc' from generate_series(1,4) gs$$ loop + raise notice '% % %', a, b, c; + end loop; +end; +$proc$ language plpgsql; +select for_vect(); +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 1 BB CC +NOTICE: 2 BB CC +NOTICE: 3 BB CC +NOTICE: 4 BB CC +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 +NOTICE: 1 BB CC +NOTICE: 2 BB CC +NOTICE: 3 BB CC +NOTICE: 4 BB CC +NOTICE: 1 bb cc +NOTICE: 2 bb cc +NOTICE: 3 bb cc +NOTICE: 4 bb cc + for_vect +---------- + +(1 row) + +-- regression test: verify that multiple uses of same plpgsql datum within +-- a SQL command all get mapped to the same $n parameter. The return value +-- of the SELECT is not important, we only care that it doesn't fail with +-- a complaint about an ungrouped column reference. +create function multi_datum_use(p1 int) returns bool as $$ +declare + x int; + y int; +begin + select into x,y unique1/p1, unique1/$1 from tenk1 group by unique1/p1; + return x = y; +end$$ language plpgsql; +select multi_datum_use(42); + multi_datum_use +----------------- + t +(1 row) + +-- +-- Test STRICT limiter in both planned and EXECUTE invocations. +-- Note that a data-modifying query is quasi strict (disallow multi rows) +-- by default in the planned case, but not in EXECUTE. +-- +create temp table foo (f1 int, f2 int); +insert into foo values (1,2), (3,4); +create or replace function footest() returns void as $$ +declare x record; +begin + -- should work + insert into foo values(5,6) returning * into x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: RETURNING clause not yet supported +CONTEXT: SQL statement "insert into foo values(5,6) returning *" +PL/pgSQL function "footest" line 5 at SQL statement +create or replace function footest() returns void as $$ +declare x record; +begin + -- should fail due to implicit strict + insert into foo values(7,8),(9,10) returning * into x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: RETURNING clause not yet supported +CONTEXT: SQL statement "insert into foo values(7,8),(9,10) returning *" +PL/pgSQL function "footest" line 5 at SQL statement +create or replace function footest() returns void as $$ +declare x record; +begin + -- should work + execute 'insert into foo values(5,6) returning *' into x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: RETURNING clause not yet supported +CONTEXT: SQL statement "insert into foo values(5,6) returning *" +PL/pgSQL function "footest" line 5 at EXECUTE statement +create or replace function footest() returns void as $$ +declare x record; +begin + -- this should work since EXECUTE isn't as picky + execute 'insert into foo values(7,8),(9,10) returning *' into x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: RETURNING clause not yet supported +CONTEXT: SQL statement "insert into foo values(7,8),(9,10) returning *" +PL/pgSQL function "footest" line 5 at EXECUTE statement +select * from foo order by 1, 2; + f1 | f2 +----+---- + 1 | 2 + 3 | 4 +(2 rows) + +create or replace function footest() returns void as $$ +declare x record; +begin + -- should work + select * from foo where f1 = 3 into strict x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +NOTICE: x.f1 = 3, x.f2 = 4 + footest +--------- + +(1 row) + +create or replace function footest() returns void as $$ +declare x record; +begin + -- should fail, no rows + select * from foo where f1 = 0 into strict x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: query returned no rows +CONTEXT: PL/pgSQL function "footest" line 5 at SQL statement +create or replace function footest() returns void as $$ +declare x record; +begin + -- should fail, too many rows + select * from foo where f1 > 3 into strict x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: query returned no rows +CONTEXT: PL/pgSQL function "footest" line 5 at SQL statement +create or replace function footest() returns void as $$ +declare x record; +begin + -- should work + execute 'select * from foo where f1 = 3' into strict x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +NOTICE: x.f1 = 3, x.f2 = 4 + footest +--------- + +(1 row) + +create or replace function footest() returns void as $$ +declare x record; +begin + -- should fail, no rows + execute 'select * from foo where f1 = 0' into strict x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: query returned no rows +CONTEXT: PL/pgSQL function "footest" line 5 at EXECUTE statement +create or replace function footest() returns void as $$ +declare x record; +begin + -- should fail, too many rows + execute 'select * from foo where f1 > 3' into strict x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: query returned no rows +CONTEXT: PL/pgSQL function "footest" line 5 at EXECUTE statement +drop function footest(); +-- test scrollable cursor support +create function sc_test() returns setof integer as $$ +declare + c scroll cursor for select f1 from int4_tbl; + x integer; +begin + open c; + fetch last from c into x; + while found loop + return next x; + fetch prior from c into x; + end loop; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; + sc_test +------------- + -2147483647 + -123456 + 0 + 123456 + 2147483647 +(5 rows) + +create or replace function sc_test() returns setof integer as $$ +declare + c no scroll cursor for select f1 from int4_tbl; + x integer; +begin + open c; + fetch last from c into x; + while found loop + return next x; + fetch prior from c into x; + end loop; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; -- fails because of NO SCROLL specification +ERROR: cursor can only scan forward +HINT: Declare it with SCROLL option to enable backward scan. +CONTEXT: PL/pgSQL function "sc_test" line 7 at FETCH +create or replace function sc_test() returns setof integer as $$ +declare + c refcursor; + x integer; +begin + open c scroll for select f1 from int4_tbl; + fetch last from c into x; + while found loop + return next x; + fetch prior from c into x; + end loop; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; + sc_test +------------- + -2147483647 + -123456 + 0 + 123456 + 2147483647 +(5 rows) + +create or replace function sc_test() returns setof integer as $$ +declare + c refcursor; + x integer; +begin + open c scroll for execute 'select f1 from int4_tbl'; + fetch last from c into x; + while found loop + return next x; + fetch relative -2 from c into x; + end loop; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; + sc_test +------------ + 0 + 123456 + 2147483647 +(3 rows) + +create or replace function sc_test() returns setof integer as $$ +declare + c refcursor; + x integer; +begin + open c scroll for execute 'select f1 from int4_tbl'; + fetch last from c into x; + while found loop + return next x; + move backward 2 from c; + fetch relative -1 from c into x; + end loop; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; + sc_test +------------- + -2147483647 + 2147483647 +(2 rows) + +create or replace function sc_test() returns setof integer as $$ +declare + c cursor for select * from generate_series(1, 10); + x integer; +begin + open c; + loop + move relative 2 in c; + if not found then + exit; + end if; + fetch next from c into x; + if found then + return next x; + end if; + end loop; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; + sc_test +--------- + 3 + 6 + 9 +(3 rows) + +create or replace function sc_test() returns setof integer as $$ +declare + c cursor for select * from generate_series(1, 10); + x integer; +begin + open c; + move forward all in c; + fetch backward from c into x; + if found then + return next x; + end if; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; + sc_test +--------- + 10 +(1 row) + +drop function sc_test(); +-- test qualified variable names +create function pl_qual_names (param1 int) returns void as $$ +<> +declare + param1 int := 1; +begin + <> + declare + param1 int := 2; + begin + raise notice 'param1 = %', param1; + raise notice 'pl_qual_names.param1 = %', pl_qual_names.param1; + raise notice 'outerblock.param1 = %', outerblock.param1; + raise notice 'innerblock.param1 = %', innerblock.param1; + end; +end; +$$ language plpgsql; +select pl_qual_names(42); +NOTICE: param1 = 2 +NOTICE: pl_qual_names.param1 = 42 +NOTICE: outerblock.param1 = 1 +NOTICE: innerblock.param1 = 2 + pl_qual_names +--------------- + +(1 row) + +drop function pl_qual_names(int); +-- tests for RETURN QUERY +create function ret_query1(out int, out int) returns setof record as $$ +begin + $1 := -1; + $2 := -2; + return next; + return query select x + 1, x * 10 from generate_series(0, 10) s (x); + return next; +end; +$$ language plpgsql; +select * from ret_query1() order by 1, 2; + column1 | column2 +---------+--------- + -1 | -2 + -1 | -2 + 1 | 0 + 2 | 10 + 3 | 20 + 4 | 30 + 5 | 40 + 6 | 50 + 7 | 60 + 8 | 70 + 9 | 80 + 10 | 90 + 11 | 100 +(13 rows) + +create type record_type as (x text, y int, z boolean); +create or replace function ret_query2(lim int) returns setof record_type as $$ +begin + return query select md5(s.x::text), s.x, s.x > 0 + from generate_series(-8, lim) s (x) where s.x % 2 = 0; +end; +$$ language plpgsql; +select * from ret_query2(8) order by 1; + x | y | z +----------------------------------+----+--- + 0267aaf632e87a63288a08331f22c7c3 | -4 | f + 1679091c5a880faf6fb5e6087eb1b2dc | 6 | t + 596a3d04481816330f07e4f97510c28f | -6 | f + 5d7b9adcbe1c629ec722529dd12e5129 | -2 | f + a87ff679a2f3e71d9181a67b7542122c | 4 | t + a8d2ec85eaf98407310b72eb73dda247 | -8 | f + c81e728d9d4c2f636f067f89cc14862c | 2 | t + c9f0f895fb98ab9159f51fd0297e236d | 8 | t + cfcd208495d565ef66e7dff9f98764da | 0 | f +(9 rows) + +-- test EXECUTE USING +create function exc_using(int, text) returns int as $$ +declare i int; +begin + for i in execute 'select * from generate_series(1,$1)' using $1+1 loop + raise notice '%', i; + end loop; + execute 'select $2 + $2*3 + length($1)' into i using $2,$1; + return i; +end +$$ language plpgsql; +select exc_using(5, 'foobar'); +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 +NOTICE: 5 +NOTICE: 6 + exc_using +----------- + 26 +(1 row) + +drop function exc_using(int, text); +create or replace function exc_using(int) returns void as $$ +declare + c refcursor; + i int; +begin + open c for execute 'select * from generate_series(1,$1)' using $1+1; + loop + fetch c into i; + exit when not found; + raise notice '%', i; + end loop; + close c; + return; +end; +$$ language plpgsql; +select exc_using(5); +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 +NOTICE: 5 +NOTICE: 6 + exc_using +----------- + +(1 row) + +drop function exc_using(int); +-- test FOR-over-cursor +create or replace function forc01() returns void as $$ +declare + c cursor(r1 integer, r2 integer) + for select * from generate_series(r1,r2) i; + c2 cursor + for select * from generate_series(41,43) i; +begin + for r in c(5,7) loop + raise notice '% from %', r.i, c; + end loop; + -- again, to test if cursor was closed properly + for r in c(9,10) loop + raise notice '% from %', r.i, c; + end loop; + -- and test a parameterless cursor + for r in c2 loop + raise notice '% from %', r.i, c2; + end loop; + -- and try it with a hand-assigned name + raise notice 'after loop, c2 = %', c2; + c2 := 'special_name'; + for r in c2 loop + raise notice '% from %', r.i, c2; + end loop; + raise notice 'after loop, c2 = %', c2; + -- and try it with a generated name + -- (which we can't show in the output because it's variable) + c2 := null; + for r in c2 loop + raise notice '%', r.i; + end loop; + raise notice 'after loop, c2 = %', c2; + return; +end; +$$ language plpgsql; +select forc01(); +NOTICE: 5 from c +NOTICE: 6 from c +NOTICE: 7 from c +NOTICE: 9 from c +NOTICE: 10 from c +NOTICE: 41 from c2 +NOTICE: 42 from c2 +NOTICE: 43 from c2 +NOTICE: after loop, c2 = c2 +NOTICE: 41 from special_name +NOTICE: 42 from special_name +NOTICE: 43 from special_name +NOTICE: after loop, c2 = special_name +NOTICE: 41 +NOTICE: 42 +NOTICE: 43 +NOTICE: after loop, c2 = + forc01 +-------- + +(1 row) + +-- try updating the cursor's current row +create temp table forc_test as + select n as i, n as j from generate_series(1,10) n; +create or replace function forc01() returns void as $$ +declare + c cursor for select * from forc_test; +begin + for r in c loop + raise notice '%, %', r.i, r.j; + update forc_test set i = i * 100, j = r.j * 2 where current of c; + end loop; +end; +$$ language plpgsql; +select forc01(); +NOTICE: 1, 1 +ERROR: WHERE CURRENT OF clause not yet supported +CONTEXT: SQL statement "update forc_test set i = i * 100, j = r.j * 2 where current of c" +PL/pgSQL function "forc01" line 7 at SQL statement +select * from forc_test order by 1, 2; + i | j +----+---- + 1 | 1 + 2 | 2 + 3 | 3 + 4 | 4 + 5 | 5 + 6 | 6 + 7 | 7 + 8 | 8 + 9 | 9 + 10 | 10 +(10 rows) + +-- same, with a cursor whose portal name doesn't match variable name +create or replace function forc01() returns void as $$ +declare + c refcursor := 'fooled_ya'; + r record; +begin + open c for select * from forc_test; + loop + fetch c into r; + exit when not found; + raise notice '%, %', r.i, r.j; + update forc_test set i = i * 100, j = r.j * 2 where current of c; + end loop; +end; +$$ language plpgsql; +select forc01(); +NOTICE: 3, 3 +ERROR: WHERE CURRENT OF clause not yet supported +CONTEXT: SQL statement "update forc_test set i = i * 100, j = r.j * 2 where current of c" +PL/pgSQL function "forc01" line 11 at SQL statement +select * from forc_test order by 1; + i | j +----+---- + 1 | 1 + 2 | 2 + 3 | 3 + 4 | 4 + 5 | 5 + 6 | 6 + 7 | 7 + 8 | 8 + 9 | 9 + 10 | 10 +(10 rows) + +drop function forc01(); +-- fail because cursor has no query bound to it +create or replace function forc_bad() returns void as $$ +declare + c refcursor; +begin + for r in c loop + raise notice '%', r.i; + end loop; +end; +$$ language plpgsql; +ERROR: cursor FOR loop must use a bound cursor variable +LINE 5: for r in c loop + ^ +-- test RETURN QUERY EXECUTE +create or replace function return_dquery() +returns setof int as $$ +begin + return query execute 'select * from (values(10),(20)) f'; + return query execute 'select * from (values($1),($2)) f' using 40,50; +end; +$$ language plpgsql; +select * from return_dquery() order by 1; + return_dquery +--------------- + 10 + 20 + 40 + 50 +(4 rows) + +drop function return_dquery(); +-- test RETURN QUERY with dropped columns +create table tabwithcols(a int, b int, c int, d int); +insert into tabwithcols values(10,20,30,40),(50,60,70,80); +create or replace function returnqueryf() +returns setof tabwithcols as $$ +begin + return query select * from tabwithcols; + return query execute 'select * from tabwithcols'; +end; +$$ language plpgsql; +select * from returnqueryf() order by 1,2,3,4; + a | b | c | d +----+----+----+---- + 10 | 20 | 30 | 40 + 10 | 20 | 30 | 40 + 50 | 60 | 70 | 80 + 50 | 60 | 70 | 80 +(4 rows) + +alter table tabwithcols drop column b; +select * from returnqueryf() order by 1,2,3; + a | c | d +----+----+---- + 10 | 30 | 40 + 10 | 30 | 40 + 50 | 70 | 80 + 50 | 70 | 80 +(4 rows) + +alter table tabwithcols drop column d; +select * from returnqueryf() order by 1,2; + a | c +----+---- + 10 | 30 + 10 | 30 + 50 | 70 + 50 | 70 +(4 rows) + +alter table tabwithcols add column d int; +select * from returnqueryf() order by 1,2,3; + a | c | d +----+----+--- + 10 | 30 | + 10 | 30 | + 50 | 70 | + 50 | 70 | +(4 rows) + +drop function returnqueryf(); +drop table tabwithcols; +-- Tests for 8.4's new RAISE features +create or replace function raise_test() returns void as $$ +begin + raise notice '% % %', 1, 2, 3 + using errcode = '55001', detail = 'some detail info', hint = 'some hint'; + raise '% % %', 1, 2, 3 + using errcode = 'division_by_zero', detail = 'some detail info'; +end; +$$ language plpgsql; +select raise_test(); +NOTICE: 1 2 3 +DETAIL: some detail info +HINT: some hint +ERROR: 1 2 3 +DETAIL: some detail info +-- Since we can't actually see the thrown SQLSTATE in default psql output, +-- test it like this; this also tests re-RAISE +create or replace function raise_test() returns void as $$ +begin + raise 'check me' + using errcode = 'division_by_zero', detail = 'some detail info'; + exception + when others then + raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; + raise; +end; +$$ language plpgsql; +select raise_test(); +NOTICE: SQLSTATE: 22012 SQLERRM: check me +ERROR: check me +DETAIL: some detail info +create or replace function raise_test() returns void as $$ +begin + raise 'check me' + using errcode = '1234F', detail = 'some detail info'; + exception + when others then + raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; + raise; +end; +$$ language plpgsql; +select raise_test(); +NOTICE: SQLSTATE: 1234F SQLERRM: check me +ERROR: check me +DETAIL: some detail info +-- SQLSTATE specification in WHEN +create or replace function raise_test() returns void as $$ +begin + raise 'check me' + using errcode = '1234F', detail = 'some detail info'; + exception + when sqlstate '1234F' then + raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; + raise; +end; +$$ language plpgsql; +select raise_test(); +NOTICE: SQLSTATE: 1234F SQLERRM: check me +ERROR: check me +DETAIL: some detail info +create or replace function raise_test() returns void as $$ +begin + raise division_by_zero using detail = 'some detail info'; + exception + when others then + raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; + raise; +end; +$$ language plpgsql; +select raise_test(); +NOTICE: SQLSTATE: 22012 SQLERRM: division_by_zero +ERROR: division_by_zero +DETAIL: some detail info +create or replace function raise_test() returns void as $$ +begin + raise division_by_zero; +end; +$$ language plpgsql; +select raise_test(); +ERROR: division_by_zero +create or replace function raise_test() returns void as $$ +begin + raise sqlstate '1234F'; +end; +$$ language plpgsql; +select raise_test(); +ERROR: 1234F +create or replace function raise_test() returns void as $$ +begin + raise division_by_zero using message = 'custom' || ' message'; +end; +$$ language plpgsql; +select raise_test(); +ERROR: custom message +create or replace function raise_test() returns void as $$ +begin + raise using message = 'custom' || ' message', errcode = '22012'; +end; +$$ language plpgsql; +select raise_test(); +ERROR: custom message +-- conflict on message +create or replace function raise_test() returns void as $$ +begin + raise notice 'some message' using message = 'custom' || ' message', errcode = '22012'; +end; +$$ language plpgsql; +select raise_test(); +ERROR: RAISE option already specified: MESSAGE +CONTEXT: PL/pgSQL function "raise_test" line 3 at RAISE +-- conflict on errcode +create or replace function raise_test() returns void as $$ +begin + raise division_by_zero using message = 'custom' || ' message', errcode = '22012'; +end; +$$ language plpgsql; +select raise_test(); +ERROR: RAISE option already specified: ERRCODE +CONTEXT: PL/pgSQL function "raise_test" line 3 at RAISE +-- nothing to re-RAISE +create or replace function raise_test() returns void as $$ +begin + raise; +end; +$$ language plpgsql; +select raise_test(); +ERROR: RAISE without parameters cannot be used outside an exception handler +CONTEXT: PL/pgSQL function "raise_test" line 3 at RAISE +-- check cases where implicit SQLSTATE variable could be confused with +-- SQLSTATE as a keyword, cf bug #5524 +create or replace function raise_test() returns void as $$ +begin + perform 1/0; +exception + when sqlstate '22012' then + raise notice using message = sqlstate; + raise sqlstate '22012' using message = 'substitute message'; +end; +$$ language plpgsql; +select raise_test(); +NOTICE: 22012 +ERROR: substitute message +drop function raise_test(); +-- test CASE statement +create or replace function case_test(bigint) returns text as $$ +declare a int = 10; + b int = 1; +begin + case $1 + when 1 then + return 'one'; + when 2 then + return 'two'; + when 3,4,3+5 then + return 'three, four or eight'; + when a then + return 'ten'; + when a+b, a+b+1 then + return 'eleven, twelve'; + end case; +end; +$$ language plpgsql immutable; +select case_test(1); + case_test +----------- + one +(1 row) + +select case_test(2); + case_test +----------- + two +(1 row) + +select case_test(3); + case_test +---------------------- + three, four or eight +(1 row) + +select case_test(4); + case_test +---------------------- + three, four or eight +(1 row) + +select case_test(5); -- fails +ERROR: case not found +HINT: CASE statement is missing ELSE part. +CONTEXT: PL/pgSQL function "case_test" line 5 at CASE +select case_test(8); + case_test +---------------------- + three, four or eight +(1 row) + +select case_test(10); + case_test +----------- + ten +(1 row) + +select case_test(11); + case_test +---------------- + eleven, twelve +(1 row) + +select case_test(12); + case_test +---------------- + eleven, twelve +(1 row) + +select case_test(13); -- fails +ERROR: case not found +HINT: CASE statement is missing ELSE part. +CONTEXT: PL/pgSQL function "case_test" line 5 at CASE +create or replace function catch() returns void as $$ +begin + raise notice '%', case_test(6); +exception + when case_not_found then + raise notice 'caught case_not_found % %', SQLSTATE, SQLERRM; +end +$$ language plpgsql; +select catch(); +NOTICE: caught case_not_found 20000 case not found + catch +------- + +(1 row) + +-- test the searched variant too, as well as ELSE +create or replace function case_test(bigint) returns text as $$ +declare a int = 10; +begin + case + when $1 = 1 then + return 'one'; + when $1 = a + 2 then + return 'twelve'; + else + return 'other'; + end case; +end; +$$ language plpgsql immutable; +select case_test(1); + case_test +----------- + one +(1 row) + +select case_test(2); + case_test +----------- + other +(1 row) + +select case_test(12); + case_test +----------- + twelve +(1 row) + +select case_test(13); + case_test +----------- + other +(1 row) + +drop function catch(); +drop function case_test(bigint); +-- test variadic functions +create or replace function vari(variadic int[]) +returns void as $$ +begin + for i in array_lower($1,1)..array_upper($1,1) loop + raise notice '%', $1[i]; + end loop; end; +$$ language plpgsql; +select vari(1,2,3,4,5); +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 +NOTICE: 5 + vari +------ + +(1 row) + +select vari(3,4,5); +NOTICE: 3 +NOTICE: 4 +NOTICE: 5 + vari +------ + +(1 row) + +select vari(variadic array[5,6,7]); +NOTICE: 5 +NOTICE: 6 +NOTICE: 7 + vari +------ + +(1 row) + +drop function vari(int[]); +-- coercion test +create or replace function pleast(variadic numeric[]) +returns numeric as $$ +declare aux numeric = $1[array_lower($1,1)]; +begin + for i in array_lower($1,1)+1..array_upper($1,1) loop + if $1[i] < aux then aux := $1[i]; end if; + end loop; + return aux; +end; +$$ language plpgsql immutable strict; +select pleast(10,1,2,3,-16); + pleast +-------- + -16 +(1 row) + +select pleast(10.2,2.2,-1.1); + pleast +-------- + -1.1 +(1 row) + +select pleast(10.2,10, -20); + pleast +-------- + -20 +(1 row) + +select pleast(10,20, -1.0); + pleast +-------- + -1.0 +(1 row) + +-- in case of conflict, non-variadic version is preferred +create or replace function pleast(numeric) +returns numeric as $$ +begin + raise notice 'non-variadic function called'; + return $1; +end; +$$ language plpgsql immutable strict; +select pleast(10); +NOTICE: non-variadic function called + pleast +-------- + 10 +(1 row) + +drop function pleast(numeric[]); +drop function pleast(numeric); +-- test table functions +create function tftest(int) returns table(a int, b int) as $$ +begin + return query select $1, $1+i from generate_series(1,5) g(i); +end; +$$ language plpgsql immutable strict; +select * from tftest(10) order by 1, 2; + a | b +----+---- + 10 | 11 + 10 | 12 + 10 | 13 + 10 | 14 + 10 | 15 +(5 rows) + +create or replace function tftest(a1 int) returns table(a int, b int) as $$ +begin + a := a1; b := a1 + 1; + return next; + a := a1 * 10; b := a1 * 10 + 1; + return next; +end; +$$ language plpgsql immutable strict; +select * from tftest(10) order by 1, 2; + a | b +-----+----- + 10 | 11 + 100 | 101 +(2 rows) + +drop function tftest(int); +create or replace function rttest() +returns setof int as $$ +declare rc int; +begin + return query values(10),(20); + get diagnostics rc = row_count; + raise notice '% %', found, rc; + return query select * from (values(10),(20)) f(a) where false; + get diagnostics rc = row_count; + raise notice '% %', found, rc; + return query execute 'values(10),(20)'; + get diagnostics rc = row_count; + raise notice '% %', found, rc; + return query execute 'select * from (values(10),(20)) f(a) where false'; + get diagnostics rc = row_count; + raise notice '% %', found, rc; +end; +$$ language plpgsql; +select * from rttest() order by 1; +NOTICE: t 2 +NOTICE: f 0 +NOTICE: t 2 +NOTICE: f 0 + rttest +-------- + 10 + 10 + 20 + 20 +(4 rows) + +drop function rttest(); +-- Test for proper cleanup at subtransaction exit. This example +-- exposed a bug in PG 8.2. +CREATE FUNCTION leaker_1(fail BOOL) RETURNS INTEGER AS $$ +DECLARE + v_var INTEGER; +BEGIN + BEGIN + v_var := (leaker_2(fail)).error_code; + EXCEPTION + WHEN others THEN RETURN 0; + END; + RETURN 1; +END; +$$ LANGUAGE plpgsql; +CREATE FUNCTION leaker_2(fail BOOL, OUT error_code INTEGER, OUT new_id INTEGER) + RETURNS RECORD AS $$ +BEGIN + IF fail THEN + RAISE EXCEPTION 'fail ...'; + END IF; + error_code := 1; + new_id := 1; + RETURN; +END; +$$ LANGUAGE plpgsql; +SELECT * FROM leaker_1(false); + leaker_1 +---------- + 1 +(1 row) + +SELECT * FROM leaker_1(true); + leaker_1 +---------- + 0 +(1 row) + +DROP FUNCTION leaker_1(bool); +DROP FUNCTION leaker_2(bool); +-- Test for appropriate cleanup of non-simple expression evaluations +-- (bug in all versions prior to August 2010) +CREATE FUNCTION nonsimple_expr_test() RETURNS text[] AS $$ +DECLARE + arr text[]; + lr text; + i integer; +BEGIN + arr := array[array['foo','bar'], array['baz', 'quux']]; + lr := 'fool'; + i := 1; + -- use sub-SELECTs to make expressions non-simple + arr[(SELECT i)][(SELECT i+1)] := (SELECT lr); + RETURN arr; +END; +$$ LANGUAGE plpgsql; +SELECT nonsimple_expr_test(); + nonsimple_expr_test +------------------------- + {{foo,fool},{baz,quux}} +(1 row) + +DROP FUNCTION nonsimple_expr_test(); +CREATE FUNCTION nonsimple_expr_test() RETURNS integer AS $$ +declare + i integer NOT NULL := 0; +begin + begin + i := (SELECT NULL::integer); -- should throw error + exception + WHEN OTHERS THEN + i := (SELECT 1::integer); + end; + return i; +end; +$$ LANGUAGE plpgsql; +SELECT nonsimple_expr_test(); + nonsimple_expr_test +--------------------- + 1 +(1 row) + +DROP FUNCTION nonsimple_expr_test(); +-- +-- Test cases involving recursion and error recovery in simple expressions +-- (bugs in all versions before October 2010). The problems are most +-- easily exposed by mutual recursion between plpgsql and sql functions. +-- +create function recurse(float8) returns float8 as +$$ +begin + if ($1 > 0) then + return sql_recurse($1 - 1); + else + return $1; + end if; +end; +$$ language plpgsql; +-- "limit" is to prevent this from being inlined +create function sql_recurse(float8) returns float8 as +$$ select recurse($1) limit 1; $$ language sql; +select recurse(10); + recurse +--------- + 0 +(1 row) + +create function error1(text) returns text language sql as +$$ SELECT relname::text FROM pg_class c WHERE c.oid = $1::regclass $$; +create function error2(p_name_table text) returns text language plpgsql as $$ +begin + return error1(p_name_table); +end$$; +BEGIN; +create table public.stuffs (stuff text); +SAVEPOINT a; +ERROR: SAVEPOINT is not yet supported. +select error2('nonexistent.stuffs'); +ERROR: current transaction is aborted, commands ignored until end of transaction block +ROLLBACK TO a; +ERROR: no such savepoint +select error2('public.stuffs'); +ERROR: current transaction is aborted, commands ignored until end of transaction block +rollback; +drop function error2(p_name_table text); +drop function error1(text); +-- Test handling of string literals. +set standard_conforming_strings = off; +create or replace function strtest() returns text as $$ +begin + raise notice 'foo\\bar\041baz'; + return 'foo\\bar\041baz'; +end +$$ language plpgsql; +WARNING: nonstandard use of \\ in a string literal +LINE 3: raise notice 'foo\\bar\041baz'; + ^ +HINT: Use the escape string syntax for backslashes, e.g., E'\\'. +WARNING: nonstandard use of \\ in a string literal +LINE 4: return 'foo\\bar\041baz'; + ^ +HINT: Use the escape string syntax for backslashes, e.g., E'\\'. +WARNING: nonstandard use of \\ in a string literal +LINE 4: return 'foo\\bar\041baz'; + ^ +HINT: Use the escape string syntax for backslashes, e.g., E'\\'. +select strtest(); +NOTICE: foo\bar!baz +WARNING: nonstandard use of \\ in a string literal +LINE 1: SELECT 'foo\\bar\041baz' + ^ +HINT: Use the escape string syntax for backslashes, e.g., E'\\'. +QUERY: SELECT 'foo\\bar\041baz' +CONTEXT: PL/pgSQL function "strtest" line 4 at RETURN + strtest +------------- + foo\bar!baz +(1 row) + +create or replace function strtest() returns text as $$ +begin + raise notice E'foo\\bar\041baz'; + return E'foo\\bar\041baz'; +end +$$ language plpgsql; +select strtest(); +NOTICE: foo\bar!baz + strtest +------------- + foo\bar!baz +(1 row) + +set standard_conforming_strings = on; +create or replace function strtest() returns text as $$ +begin + raise notice 'foo\\bar\041baz\'; + return 'foo\\bar\041baz\'; +end +$$ language plpgsql; +select strtest(); +NOTICE: foo\\bar\041baz\ + strtest +------------------ + foo\\bar\041baz\ +(1 row) + +create or replace function strtest() returns text as $$ +begin + raise notice E'foo\\bar\041baz'; + return E'foo\\bar\041baz'; +end +$$ language plpgsql; +select strtest(); +NOTICE: foo\bar!baz + strtest +------------- + foo\bar!baz +(1 row) + +drop function strtest(); +-- Test anonymous code blocks. +DO $$ +DECLARE r record; +BEGIN + FOR r IN SELECT rtrim(roomno) AS roomno, comment FROM Room ORDER BY roomno + LOOP + RAISE NOTICE '%, %', r.roomno, r.comment; + END LOOP; +END$$; +NOTICE: 001, Entrance +NOTICE: 002, Office +NOTICE: 003, Office +NOTICE: 004, Technical +NOTICE: 101, Office +NOTICE: 102, Conference +NOTICE: 103, Restroom +NOTICE: 104, Technical +NOTICE: 105, Office +NOTICE: 106, Office +-- these are to check syntax error reporting +DO LANGUAGE plpgsql $$begin return 1; end$$; +ERROR: RETURN cannot have a parameter in function returning void +LINE 1: DO LANGUAGE plpgsql $$begin return 1; end$$; + ^ +DO $$ +DECLARE r record; +BEGIN + FOR r IN SELECT rtrim(roomno) AS roomno, foo FROM Room ORDER BY roomno + LOOP + RAISE NOTICE '%, %', r.roomno, r.comment; + END LOOP; +END$$; +ERROR: column "foo" does not exist +LINE 1: SELECT rtrim(roomno) AS roomno, foo FROM Room ORDER BY roomn... + ^ +QUERY: SELECT rtrim(roomno) AS roomno, foo FROM Room ORDER BY roomno +CONTEXT: PL/pgSQL function "inline_code_block" line 4 at FOR over SELECT rows +-- Check variable scoping -- a var is not available in its own or prior +-- default expressions. +create function scope_test() returns int as $$ +declare x int := 42; +begin + declare y int := x + 1; + x int := x + 2; + begin + return x * 100 + y; + end; +end; +$$ language plpgsql; +select scope_test(); + scope_test +------------ + 4443 +(1 row) + +drop function scope_test(); +-- Check handling of conflicts between plpgsql vars and table columns. +set plpgsql.variable_conflict = error; +create function conflict_test() returns setof int8_tbl as $$ +declare r record; + q1 bigint := 42; +begin + for r in select q1,q2 from int8_tbl loop + return next r; + end loop; +end; +$$ language plpgsql; +select * from conflict_test() order by 1,2; +ERROR: column reference "q1" is ambiguous +LINE 1: select q1,q2 from int8_tbl + ^ +DETAIL: It could refer to either a PL/pgSQL variable or a table column. +QUERY: select q1,q2 from int8_tbl +CONTEXT: PL/pgSQL function "conflict_test" line 5 at FOR over SELECT rows +create or replace function conflict_test() returns setof int8_tbl as $$ +#variable_conflict use_variable +declare r record; + q1 bigint := 42; +begin + for r in select q1,q2 from int8_tbl loop + return next r; + end loop; +end; +$$ language plpgsql; +-- PGXCTODO: This is failing due to issue 3522907, complicated SELECT queries in plpgsql functions +select * from conflict_test() order by 1,2; +ERROR: could not determine data type of parameter $1 +CONTEXT: PL/pgSQL function "conflict_test" line 6 at FOR over SELECT rows +create or replace function conflict_test() returns setof int8_tbl as $$ +#variable_conflict use_column +declare r record; + q1 bigint := 42; +begin + for r in select q1,q2 from int8_tbl loop + return next r; + end loop; +end; +$$ language plpgsql; +select * from conflict_test() order by 1,2; + q1 | q2 +------------------+------------------- + 123 | 456 + 123 | 4567890123456789 + 4567890123456789 | -4567890123456789 + 4567890123456789 | 123 + 4567890123456789 | 4567890123456789 +(5 rows) + +drop function conflict_test(); +-- Check that an unreserved keyword can be used as a variable name +create function unreserved_test() returns int as $$ +declare + forward int := 21; +begin + forward := forward * 2; + return forward; +end +$$ language plpgsql; +select unreserved_test(); + unreserved_test +----------------- + 42 +(1 row) + +drop function unreserved_test(); +-- +-- Test FOREACH over arrays +-- +create function foreach_test(anyarray) +returns void as $$ +declare x int; +begin + foreach x in array $1 + loop + raise notice '%', x; + end loop; + end; +$$ language plpgsql; +select foreach_test(ARRAY[1,2,3,4]); +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 + foreach_test +-------------- + +(1 row) + +select foreach_test(ARRAY[[1,2],[3,4]]); +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 + foreach_test +-------------- + +(1 row) + +create or replace function foreach_test(anyarray) +returns void as $$ +declare x int; +begin + foreach x slice 1 in array $1 + loop + raise notice '%', x; + end loop; + end; +$$ language plpgsql; +-- should fail +select foreach_test(ARRAY[1,2,3,4]); +ERROR: FOREACH ... SLICE loop variable must be of an array type +CONTEXT: PL/pgSQL function "foreach_test" line 4 at FOREACH over array +select foreach_test(ARRAY[[1,2],[3,4]]); +ERROR: FOREACH ... SLICE loop variable must be of an array type +CONTEXT: PL/pgSQL function "foreach_test" line 4 at FOREACH over array +create or replace function foreach_test(anyarray) +returns void as $$ +declare x int[]; +begin + foreach x slice 1 in array $1 + loop + raise notice '%', x; + end loop; + end; +$$ language plpgsql; +select foreach_test(ARRAY[1,2,3,4]); +NOTICE: {1,2,3,4} + foreach_test +-------------- + +(1 row) + +select foreach_test(ARRAY[[1,2],[3,4]]); +NOTICE: {1,2} +NOTICE: {3,4} + foreach_test +-------------- + +(1 row) + +-- higher level of slicing +create or replace function foreach_test(anyarray) +returns void as $$ +declare x int[]; +begin + foreach x slice 2 in array $1 + loop + raise notice '%', x; + end loop; + end; +$$ language plpgsql; +-- should fail +select foreach_test(ARRAY[1,2,3,4]); +ERROR: slice dimension (2) is out of the valid range 0..1 +CONTEXT: PL/pgSQL function "foreach_test" line 4 at FOREACH over array +-- ok +select foreach_test(ARRAY[[1,2],[3,4]]); +NOTICE: {{1,2},{3,4}} + foreach_test +-------------- + +(1 row) + +select foreach_test(ARRAY[[[1,2]],[[3,4]]]); +NOTICE: {{1,2}} +NOTICE: {{3,4}} + foreach_test +-------------- + +(1 row) + +create type xy_tuple AS (x int, y int); +-- iteration over array of records +create or replace function foreach_test(anyarray) +returns void as $$ +declare r record; +begin + foreach r in array $1 + loop + raise notice '%', r; + end loop; + end; +$$ language plpgsql; +select foreach_test(ARRAY[(10,20),(40,69),(35,78)]::xy_tuple[]); +NOTICE: (10,20) +NOTICE: (40,69) +NOTICE: (35,78) + foreach_test +-------------- + +(1 row) + +select foreach_test(ARRAY[[(10,20),(40,69)],[(35,78),(88,76)]]::xy_tuple[]); +NOTICE: (10,20) +NOTICE: (40,69) +NOTICE: (35,78) +NOTICE: (88,76) + foreach_test +-------------- + +(1 row) + +create or replace function foreach_test(anyarray) +returns void as $$ +declare x int; y int; +begin + foreach x, y in array $1 + loop + raise notice 'x = %, y = %', x, y; + end loop; + end; +$$ language plpgsql; +select foreach_test(ARRAY[(10,20),(40,69),(35,78)]::xy_tuple[]); +NOTICE: x = 10, y = 20 +NOTICE: x = 40, y = 69 +NOTICE: x = 35, y = 78 + foreach_test +-------------- + +(1 row) + +select foreach_test(ARRAY[[(10,20),(40,69)],[(35,78),(88,76)]]::xy_tuple[]); +NOTICE: x = 10, y = 20 +NOTICE: x = 40, y = 69 +NOTICE: x = 35, y = 78 +NOTICE: x = 88, y = 76 + foreach_test +-------------- + +(1 row) + +-- slicing over array of composite types +create or replace function foreach_test(anyarray) +returns void as $$ +declare x xy_tuple[]; +begin + foreach x slice 1 in array $1 + loop + raise notice '%', x; + end loop; + end; +$$ language plpgsql; +select foreach_test(ARRAY[(10,20),(40,69),(35,78)]::xy_tuple[]); +NOTICE: {"(10,20)","(40,69)","(35,78)"} + foreach_test +-------------- + +(1 row) + +select foreach_test(ARRAY[[(10,20),(40,69)],[(35,78),(88,76)]]::xy_tuple[]); +NOTICE: {"(10,20)","(40,69)"} +NOTICE: {"(35,78)","(88,76)"} + foreach_test +-------------- + +(1 row) + +drop function foreach_test(anyarray); +drop type xy_tuple; diff --git a/src/test/regress/expected/plpgsql_4.out b/src/test/regress/expected/plpgsql_4.out new file mode 100644 index 0000000000..8cd85ff999 --- /dev/null +++ b/src/test/regress/expected/plpgsql_4.out @@ -0,0 +1,4322 @@ +-- +-- PLPGSQL +-- +-- Scenario: +-- +-- A building with a modern TP cable installation where any +-- of the wall connectors can be used to plug in phones, +-- ethernet interfaces or local office hubs. The backside +-- of the wall connectors is wired to one of several patch- +-- fields in the building. +-- +-- In the patchfields, there are hubs and all the slots +-- representing the wall connectors. In addition there are +-- slots that can represent a phone line from the central +-- phone system. +-- +-- Triggers ensure consistency of the patching information. +-- +-- Functions are used to build up powerful views that let +-- you look behind the wall when looking at a patchfield +-- or into a room. +-- +create table Room ( + roomno char(8), + comment text +); +create unique index Room_rno on Room using btree (roomno bpchar_ops); +create table WSlot ( + slotname char(20), + roomno char(8), + slotlink char(20), + backlink char(20) +); +create unique index WSlot_name on WSlot using btree (slotname bpchar_ops); +create table PField ( + name text, + comment text +) distribute by replication; +create unique index PField_name on PField using btree (name text_ops); +create table PSlot ( + slotname char(20), + pfname text, + slotlink char(20), + backlink char(20) +); +create unique index PSlot_name on PSlot using btree (slotname bpchar_ops); +create table PLine ( + slotname char(20), + phonenumber char(20), + comment text, + backlink char(20) +); +create unique index PLine_name on PLine using btree (slotname bpchar_ops); +create table Hub ( + name char(14), + comment text, + nslots integer +); +create unique index Hub_name on Hub using btree (name bpchar_ops); +create table HSlot ( + slotname char(20), + hubname char(14), + slotno integer, + slotlink char(20) +); +create unique index HSlot_name on HSlot using btree (slotname bpchar_ops); +create index HSlot_hubname on HSlot using btree (hubname bpchar_ops); +create table System ( + name text, + comment text +); +create unique index System_name on System using btree (name text_ops); +create table IFace ( + slotname char(20), + sysname text, + ifname text, + slotlink char(20) +); +create unique index IFace_name on IFace using btree (slotname bpchar_ops); +create table PHone ( + slotname char(20), + comment text, + slotlink char(20) +); +create unique index PHone_name on PHone using btree (slotname bpchar_ops); +-- ************************************************************ +-- * +-- * Trigger procedures and functions for the patchfield +-- * test of PL/pgSQL +-- * +-- ************************************************************ +-- ************************************************************ +-- * AFTER UPDATE on Room +-- * - If room no changes let wall slots follow +-- ************************************************************ +create function tg_room_au() returns trigger as ' +begin + if new.roomno != old.roomno then + update WSlot set roomno = new.roomno where roomno = old.roomno; + end if; + return new; +end; +' language plpgsql; +create trigger tg_room_au after update + on Room for each row execute procedure tg_room_au(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * AFTER DELETE on Room +-- * - delete wall slots in this room +-- ************************************************************ +create function tg_room_ad() returns trigger as ' +begin + delete from WSlot where roomno = old.roomno; + return old; +end; +' language plpgsql; +create trigger tg_room_ad after delete + on Room for each row execute procedure tg_room_ad(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE INSERT or UPDATE on WSlot +-- * - Check that room exists +-- ************************************************************ +create function tg_wslot_biu() returns trigger as $$ +begin + if count(*) = 0 from Room where roomno = new.roomno then + raise exception 'Room % does not exist', new.roomno; + end if; + return new; +end; +$$ language plpgsql; +create trigger tg_wslot_biu before insert or update + on WSlot for each row execute procedure tg_wslot_biu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * AFTER UPDATE on PField +-- * - Let PSlots of this field follow +-- ************************************************************ +create function tg_pfield_au() returns trigger as ' +begin + if new.name != old.name then + update PSlot set pfname = new.name where pfname = old.name; + end if; + return new; +end; +' language plpgsql; +create trigger tg_pfield_au after update + on PField for each row execute procedure tg_pfield_au(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * AFTER DELETE on PField +-- * - Remove all slots of this patchfield +-- ************************************************************ +create function tg_pfield_ad() returns trigger as ' +begin + delete from PSlot where pfname = old.name; + return old; +end; +' language plpgsql; +create trigger tg_pfield_ad after delete + on PField for each row execute procedure tg_pfield_ad(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE INSERT or UPDATE on PSlot +-- * - Ensure that our patchfield does exist +-- ************************************************************ +create function tg_pslot_biu() returns trigger as $proc$ +declare + pfrec record; + ps alias for new; +begin + select into pfrec * from PField where name = ps.pfname; + if not found then + raise exception $$Patchfield "%" does not exist$$, ps.pfname; + end if; + return ps; +end; +$proc$ language plpgsql; +create trigger tg_pslot_biu before insert or update + on PSlot for each row execute procedure tg_pslot_biu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * AFTER UPDATE on System +-- * - If system name changes let interfaces follow +-- ************************************************************ +create function tg_system_au() returns trigger as ' +begin + if new.name != old.name then + update IFace set sysname = new.name where sysname = old.name; + end if; + return new; +end; +' language plpgsql; +create trigger tg_system_au after update + on System for each row execute procedure tg_system_au(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE INSERT or UPDATE on IFace +-- * - set the slotname to IF.sysname.ifname +-- ************************************************************ +create function tg_iface_biu() returns trigger as $$ +declare + sname text; + sysrec record; +begin + select into sysrec * from system where name = new.sysname; + if not found then + raise exception $q$system "%" does not exist$q$, new.sysname; + end if; + sname := 'IF.' || new.sysname; + sname := sname || '.'; + sname := sname || new.ifname; + if length(sname) > 20 then + raise exception 'IFace slotname "%" too long (20 char max)', sname; + end if; + new.slotname := sname; + return new; +end; +$$ language plpgsql; +create trigger tg_iface_biu before insert or update + on IFace for each row execute procedure tg_iface_biu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * AFTER INSERT or UPDATE or DELETE on Hub +-- * - insert/delete/rename slots as required +-- ************************************************************ +create function tg_hub_a() returns trigger as ' +declare + hname text; + dummy integer; +begin + if tg_op = ''INSERT'' then + dummy := tg_hub_adjustslots(new.name, 0, new.nslots); + return new; + end if; + if tg_op = ''UPDATE'' then + if new.name != old.name then + update HSlot set hubname = new.name where hubname = old.name; + end if; + dummy := tg_hub_adjustslots(new.name, old.nslots, new.nslots); + return new; + end if; + if tg_op = ''DELETE'' then + dummy := tg_hub_adjustslots(old.name, old.nslots, 0); + return old; + end if; +end; +' language plpgsql; +create trigger tg_hub_a after insert or update or delete + on Hub for each row execute procedure tg_hub_a(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * Support function to add/remove slots of Hub +-- ************************************************************ +create function tg_hub_adjustslots(hname bpchar, + oldnslots integer, + newnslots integer) +returns integer as ' +begin + if newnslots = oldnslots then + return 0; + end if; + if newnslots < oldnslots then + delete from HSlot where hubname = hname and slotno > newnslots; + return 0; + end if; + for i in oldnslots + 1 .. newnslots loop + insert into HSlot (slotname, hubname, slotno, slotlink) + values (''HS.dummy'', hname, i, ''''); + end loop; + return 0; +end +' language plpgsql; +-- Test comments +COMMENT ON FUNCTION tg_hub_adjustslots_wrong(bpchar, integer, integer) IS 'function with args'; +ERROR: function tg_hub_adjustslots_wrong(character, integer, integer) does not exist +COMMENT ON FUNCTION tg_hub_adjustslots(bpchar, integer, integer) IS 'function with args'; +COMMENT ON FUNCTION tg_hub_adjustslots(bpchar, integer, integer) IS NULL; +-- ************************************************************ +-- * BEFORE INSERT or UPDATE on HSlot +-- * - prevent from manual manipulation +-- * - set the slotname to HS.hubname.slotno +-- ************************************************************ +create function tg_hslot_biu() returns trigger as ' +declare + sname text; + xname HSlot.slotname%TYPE; + hubrec record; +begin + select into hubrec * from Hub where name = new.hubname; + if not found then + raise exception ''no manual manipulation of HSlot''; + end if; + if new.slotno < 1 or new.slotno > hubrec.nslots then + raise exception ''no manual manipulation of HSlot''; + end if; + if tg_op = ''UPDATE'' and new.hubname != old.hubname then + if count(*) > 0 from Hub where name = old.hubname then + raise exception ''no manual manipulation of HSlot''; + end if; + end if; + sname := ''HS.'' || trim(new.hubname); + sname := sname || ''.''; + sname := sname || new.slotno::text; + if length(sname) > 20 then + raise exception ''HSlot slotname "%" too long (20 char max)'', sname; + end if; + new.slotname := sname; + return new; +end; +' language plpgsql; +create trigger tg_hslot_biu before insert or update + on HSlot for each row execute procedure tg_hslot_biu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE DELETE on HSlot +-- * - prevent from manual manipulation +-- ************************************************************ +create function tg_hslot_bd() returns trigger as ' +declare + hubrec record; +begin + select into hubrec * from Hub where name = old.hubname; + if not found then + return old; + end if; + if old.slotno > hubrec.nslots then + return old; + end if; + raise exception ''no manual manipulation of HSlot''; +end; +' language plpgsql; +create trigger tg_hslot_bd before delete + on HSlot for each row execute procedure tg_hslot_bd(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE INSERT on all slots +-- * - Check name prefix +-- ************************************************************ +create function tg_chkslotname() returns trigger as ' +begin + if substr(new.slotname, 1, 2) != tg_argv[0] then + raise exception ''slotname must begin with %'', tg_argv[0]; + end if; + return new; +end; +' language plpgsql; +create trigger tg_chkslotname before insert + on PSlot for each row execute procedure tg_chkslotname('PS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotname before insert + on WSlot for each row execute procedure tg_chkslotname('WS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotname before insert + on PLine for each row execute procedure tg_chkslotname('PL'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotname before insert + on IFace for each row execute procedure tg_chkslotname('IF'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotname before insert + on PHone for each row execute procedure tg_chkslotname('PH'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE INSERT or UPDATE on all slots with slotlink +-- * - Set slotlink to empty string if NULL value given +-- ************************************************************ +create function tg_chkslotlink() returns trigger as ' +begin + if new.slotlink isnull then + new.slotlink := ''''; + end if; + return new; +end; +' language plpgsql; +create trigger tg_chkslotlink before insert or update + on PSlot for each row execute procedure tg_chkslotlink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotlink before insert or update + on WSlot for each row execute procedure tg_chkslotlink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotlink before insert or update + on IFace for each row execute procedure tg_chkslotlink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotlink before insert or update + on HSlot for each row execute procedure tg_chkslotlink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkslotlink before insert or update + on PHone for each row execute procedure tg_chkslotlink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE INSERT or UPDATE on all slots with backlink +-- * - Set backlink to empty string if NULL value given +-- ************************************************************ +create function tg_chkbacklink() returns trigger as ' +begin + if new.backlink isnull then + new.backlink := ''''; + end if; + return new; +end; +' language plpgsql; +create trigger tg_chkbacklink before insert or update + on PSlot for each row execute procedure tg_chkbacklink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkbacklink before insert or update + on WSlot for each row execute procedure tg_chkbacklink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_chkbacklink before insert or update + on PLine for each row execute procedure tg_chkbacklink(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE UPDATE on PSlot +-- * - do delete/insert instead of update if name changes +-- ************************************************************ +create function tg_pslot_bu() returns trigger as ' +begin + if new.slotname != old.slotname then + delete from PSlot where slotname = old.slotname; + insert into PSlot ( + slotname, + pfname, + slotlink, + backlink + ) values ( + new.slotname, + new.pfname, + new.slotlink, + new.backlink + ); + return null; + end if; + return new; +end; +' language plpgsql; +create trigger tg_pslot_bu before update + on PSlot for each row execute procedure tg_pslot_bu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE UPDATE on WSlot +-- * - do delete/insert instead of update if name changes +-- ************************************************************ +create function tg_wslot_bu() returns trigger as ' +begin + if new.slotname != old.slotname then + delete from WSlot where slotname = old.slotname; + insert into WSlot ( + slotname, + roomno, + slotlink, + backlink + ) values ( + new.slotname, + new.roomno, + new.slotlink, + new.backlink + ); + return null; + end if; + return new; +end; +' language plpgsql; +create trigger tg_wslot_bu before update + on WSlot for each row execute procedure tg_Wslot_bu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE UPDATE on PLine +-- * - do delete/insert instead of update if name changes +-- ************************************************************ +create function tg_pline_bu() returns trigger as ' +begin + if new.slotname != old.slotname then + delete from PLine where slotname = old.slotname; + insert into PLine ( + slotname, + phonenumber, + comment, + backlink + ) values ( + new.slotname, + new.phonenumber, + new.comment, + new.backlink + ); + return null; + end if; + return new; +end; +' language plpgsql; +create trigger tg_pline_bu before update + on PLine for each row execute procedure tg_pline_bu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE UPDATE on IFace +-- * - do delete/insert instead of update if name changes +-- ************************************************************ +create function tg_iface_bu() returns trigger as ' +begin + if new.slotname != old.slotname then + delete from IFace where slotname = old.slotname; + insert into IFace ( + slotname, + sysname, + ifname, + slotlink + ) values ( + new.slotname, + new.sysname, + new.ifname, + new.slotlink + ); + return null; + end if; + return new; +end; +' language plpgsql; +create trigger tg_iface_bu before update + on IFace for each row execute procedure tg_iface_bu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE UPDATE on HSlot +-- * - do delete/insert instead of update if name changes +-- ************************************************************ +create function tg_hslot_bu() returns trigger as ' +begin + if new.slotname != old.slotname or new.hubname != old.hubname then + delete from HSlot where slotname = old.slotname; + insert into HSlot ( + slotname, + hubname, + slotno, + slotlink + ) values ( + new.slotname, + new.hubname, + new.slotno, + new.slotlink + ); + return null; + end if; + return new; +end; +' language plpgsql; +create trigger tg_hslot_bu before update + on HSlot for each row execute procedure tg_hslot_bu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * BEFORE UPDATE on PHone +-- * - do delete/insert instead of update if name changes +-- ************************************************************ +create function tg_phone_bu() returns trigger as ' +begin + if new.slotname != old.slotname then + delete from PHone where slotname = old.slotname; + insert into PHone ( + slotname, + comment, + slotlink + ) values ( + new.slotname, + new.comment, + new.slotlink + ); + return null; + end if; + return new; +end; +' language plpgsql; +create trigger tg_phone_bu before update + on PHone for each row execute procedure tg_phone_bu(); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * AFTER INSERT or UPDATE or DELETE on slot with backlink +-- * - Ensure that the opponent correctly points back to us +-- ************************************************************ +create function tg_backlink_a() returns trigger as ' +declare + dummy integer; +begin + if tg_op = ''INSERT'' then + if new.backlink != '''' then + dummy := tg_backlink_set(new.backlink, new.slotname); + end if; + return new; + end if; + if tg_op = ''UPDATE'' then + if new.backlink != old.backlink then + if old.backlink != '''' then + dummy := tg_backlink_unset(old.backlink, old.slotname); + end if; + if new.backlink != '''' then + dummy := tg_backlink_set(new.backlink, new.slotname); + end if; + else + if new.slotname != old.slotname and new.backlink != '''' then + dummy := tg_slotlink_set(new.backlink, new.slotname); + end if; + end if; + return new; + end if; + if tg_op = ''DELETE'' then + if old.backlink != '''' then + dummy := tg_backlink_unset(old.backlink, old.slotname); + end if; + return old; + end if; +end; +' language plpgsql; +create trigger tg_backlink_a after insert or update or delete + on PSlot for each row execute procedure tg_backlink_a('PS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_backlink_a after insert or update or delete + on WSlot for each row execute procedure tg_backlink_a('WS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_backlink_a after insert or update or delete + on PLine for each row execute procedure tg_backlink_a('PL'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * Support function to set the opponents backlink field +-- * if it does not already point to the requested slot +-- ************************************************************ +create function tg_backlink_set(myname bpchar, blname bpchar) +returns integer as ' +declare + mytype char(2); + link char(4); + rec record; +begin + mytype := substr(myname, 1, 2); + link := mytype || substr(blname, 1, 2); + if link = ''PLPL'' then + raise exception + ''backlink between two phone lines does not make sense''; + end if; + if link in (''PLWS'', ''WSPL'') then + raise exception + ''direct link of phone line to wall slot not permitted''; + end if; + if mytype = ''PS'' then + select into rec * from PSlot where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.backlink != blname then + update PSlot set backlink = blname where slotname = myname; + end if; + return 0; + end if; + if mytype = ''WS'' then + select into rec * from WSlot where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.backlink != blname then + update WSlot set backlink = blname where slotname = myname; + end if; + return 0; + end if; + if mytype = ''PL'' then + select into rec * from PLine where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.backlink != blname then + update PLine set backlink = blname where slotname = myname; + end if; + return 0; + end if; + raise exception ''illegal backlink beginning with %'', mytype; +end; +' language plpgsql; +-- ************************************************************ +-- * Support function to clear out the backlink field if +-- * it still points to specific slot +-- ************************************************************ +create function tg_backlink_unset(bpchar, bpchar) +returns integer as ' +declare + myname alias for $1; + blname alias for $2; + mytype char(2); + rec record; +begin + mytype := substr(myname, 1, 2); + if mytype = ''PS'' then + select into rec * from PSlot where slotname = myname; + if not found then + return 0; + end if; + if rec.backlink = blname then + update PSlot set backlink = '''' where slotname = myname; + end if; + return 0; + end if; + if mytype = ''WS'' then + select into rec * from WSlot where slotname = myname; + if not found then + return 0; + end if; + if rec.backlink = blname then + update WSlot set backlink = '''' where slotname = myname; + end if; + return 0; + end if; + if mytype = ''PL'' then + select into rec * from PLine where slotname = myname; + if not found then + return 0; + end if; + if rec.backlink = blname then + update PLine set backlink = '''' where slotname = myname; + end if; + return 0; + end if; +end +' language plpgsql; +-- ************************************************************ +-- * AFTER INSERT or UPDATE or DELETE on slot with slotlink +-- * - Ensure that the opponent correctly points back to us +-- ************************************************************ +create function tg_slotlink_a() returns trigger as ' +declare + dummy integer; +begin + if tg_op = ''INSERT'' then + if new.slotlink != '''' then + dummy := tg_slotlink_set(new.slotlink, new.slotname); + end if; + return new; + end if; + if tg_op = ''UPDATE'' then + if new.slotlink != old.slotlink then + if old.slotlink != '''' then + dummy := tg_slotlink_unset(old.slotlink, old.slotname); + end if; + if new.slotlink != '''' then + dummy := tg_slotlink_set(new.slotlink, new.slotname); + end if; + else + if new.slotname != old.slotname and new.slotlink != '''' then + dummy := tg_slotlink_set(new.slotlink, new.slotname); + end if; + end if; + return new; + end if; + if tg_op = ''DELETE'' then + if old.slotlink != '''' then + dummy := tg_slotlink_unset(old.slotlink, old.slotname); + end if; + return old; + end if; +end; +' language plpgsql; +create trigger tg_slotlink_a after insert or update or delete + on PSlot for each row execute procedure tg_slotlink_a('PS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_slotlink_a after insert or update or delete + on WSlot for each row execute procedure tg_slotlink_a('WS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_slotlink_a after insert or update or delete + on IFace for each row execute procedure tg_slotlink_a('IF'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_slotlink_a after insert or update or delete + on HSlot for each row execute procedure tg_slotlink_a('HS'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +create trigger tg_slotlink_a after insert or update or delete + on PHone for each row execute procedure tg_slotlink_a('PH'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +-- ************************************************************ +-- * Support function to set the opponents slotlink field +-- * if it does not already point to the requested slot +-- ************************************************************ +create function tg_slotlink_set(bpchar, bpchar) +returns integer as ' +declare + myname alias for $1; + blname alias for $2; + mytype char(2); + link char(4); + rec record; +begin + mytype := substr(myname, 1, 2); + link := mytype || substr(blname, 1, 2); + if link = ''PHPH'' then + raise exception + ''slotlink between two phones does not make sense''; + end if; + if link in (''PHHS'', ''HSPH'') then + raise exception + ''link of phone to hub does not make sense''; + end if; + if link in (''PHIF'', ''IFPH'') then + raise exception + ''link of phone to hub does not make sense''; + end if; + if link in (''PSWS'', ''WSPS'') then + raise exception + ''slotlink from patchslot to wallslot not permitted''; + end if; + if mytype = ''PS'' then + select into rec * from PSlot where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.slotlink != blname then + update PSlot set slotlink = blname where slotname = myname; + end if; + return 0; + end if; + if mytype = ''WS'' then + select into rec * from WSlot where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.slotlink != blname then + update WSlot set slotlink = blname where slotname = myname; + end if; + return 0; + end if; + if mytype = ''IF'' then + select into rec * from IFace where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.slotlink != blname then + update IFace set slotlink = blname where slotname = myname; + end if; + return 0; + end if; + if mytype = ''HS'' then + select into rec * from HSlot where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.slotlink != blname then + update HSlot set slotlink = blname where slotname = myname; + end if; + return 0; + end if; + if mytype = ''PH'' then + select into rec * from PHone where slotname = myname; + if not found then + raise exception ''% does not exist'', myname; + end if; + if rec.slotlink != blname then + update PHone set slotlink = blname where slotname = myname; + end if; + return 0; + end if; + raise exception ''illegal slotlink beginning with %'', mytype; +end; +' language plpgsql; +-- ************************************************************ +-- * Support function to clear out the slotlink field if +-- * it still points to specific slot +-- ************************************************************ +create function tg_slotlink_unset(bpchar, bpchar) +returns integer as ' +declare + myname alias for $1; + blname alias for $2; + mytype char(2); + rec record; +begin + mytype := substr(myname, 1, 2); + if mytype = ''PS'' then + select into rec * from PSlot where slotname = myname; + if not found then + return 0; + end if; + if rec.slotlink = blname then + update PSlot set slotlink = '''' where slotname = myname; + end if; + return 0; + end if; + if mytype = ''WS'' then + select into rec * from WSlot where slotname = myname; + if not found then + return 0; + end if; + if rec.slotlink = blname then + update WSlot set slotlink = '''' where slotname = myname; + end if; + return 0; + end if; + if mytype = ''IF'' then + select into rec * from IFace where slotname = myname; + if not found then + return 0; + end if; + if rec.slotlink = blname then + update IFace set slotlink = '''' where slotname = myname; + end if; + return 0; + end if; + if mytype = ''HS'' then + select into rec * from HSlot where slotname = myname; + if not found then + return 0; + end if; + if rec.slotlink = blname then + update HSlot set slotlink = '''' where slotname = myname; + end if; + return 0; + end if; + if mytype = ''PH'' then + select into rec * from PHone where slotname = myname; + if not found then + return 0; + end if; + if rec.slotlink = blname then + update PHone set slotlink = '''' where slotname = myname; + end if; + return 0; + end if; +end; +' language plpgsql; +-- ************************************************************ +-- * Describe the backside of a patchfield slot +-- ************************************************************ +create function pslot_backlink_view(bpchar) +returns text as ' +<> +declare + rec record; + bltype char(2); + retval text; +begin + select into rec * from PSlot where slotname = $1; + if not found then + return ''''; + end if; + if rec.backlink = '''' then + return ''-''; + end if; + bltype := substr(rec.backlink, 1, 2); + if bltype = ''PL'' then + declare + rec record; + begin + select into rec * from PLine where slotname = "outer".rec.backlink; + retval := ''Phone line '' || trim(rec.phonenumber); + if rec.comment != '''' then + retval := retval || '' (''; + retval := retval || rec.comment; + retval := retval || '')''; + end if; + return retval; + end; + end if; + if bltype = ''WS'' then + select into rec * from WSlot where slotname = rec.backlink; + retval := trim(rec.slotname) || '' in room ''; + retval := retval || trim(rec.roomno); + retval := retval || '' -> ''; + return retval || wslot_slotlink_view(rec.slotname); + end if; + return rec.backlink; +end; +' language plpgsql; +-- ************************************************************ +-- * Describe the front of a patchfield slot +-- ************************************************************ +create function pslot_slotlink_view(bpchar) +returns text as ' +declare + psrec record; + sltype char(2); + retval text; +begin + select into psrec * from PSlot where slotname = $1; + if not found then + return ''''; + end if; + if psrec.slotlink = '''' then + return ''-''; + end if; + sltype := substr(psrec.slotlink, 1, 2); + if sltype = ''PS'' then + retval := trim(psrec.slotlink) || '' -> ''; + return retval || pslot_backlink_view(psrec.slotlink); + end if; + if sltype = ''HS'' then + retval := comment from Hub H, HSlot HS + where HS.slotname = psrec.slotlink + and H.name = HS.hubname; + retval := retval || '' slot ''; + retval := retval || slotno::text from HSlot + where slotname = psrec.slotlink; + return retval; + end if; + return psrec.slotlink; +end; +' language plpgsql; +-- ************************************************************ +-- * Describe the front of a wall connector slot +-- ************************************************************ +create function wslot_slotlink_view(bpchar) +returns text as ' +declare + rec record; + sltype char(2); + retval text; +begin + select into rec * from WSlot where slotname = $1; + if not found then + return ''''; + end if; + if rec.slotlink = '''' then + return ''-''; + end if; + sltype := substr(rec.slotlink, 1, 2); + if sltype = ''PH'' then + select into rec * from PHone where slotname = rec.slotlink; + retval := ''Phone '' || trim(rec.slotname); + if rec.comment != '''' then + retval := retval || '' (''; + retval := retval || rec.comment; + retval := retval || '')''; + end if; + return retval; + end if; + if sltype = ''IF'' then + declare + syrow System%RowType; + ifrow IFace%ROWTYPE; + begin + select into ifrow * from IFace where slotname = rec.slotlink; + select into syrow * from System where name = ifrow.sysname; + retval := syrow.name || '' IF ''; + retval := retval || ifrow.ifname; + if syrow.comment != '''' then + retval := retval || '' (''; + retval := retval || syrow.comment; + retval := retval || '')''; + end if; + return retval; + end; + end if; + return rec.slotlink; +end; +' language plpgsql; +-- ************************************************************ +-- * View of a patchfield describing backside and patches +-- ************************************************************ +create view Pfield_v1 as select PF.pfname, PF.slotname, + pslot_backlink_view(PF.slotname) as backside, + pslot_slotlink_view(PF.slotname) as patch + from PSlot PF; +-- +-- First we build the house - so we create the rooms +-- +insert into Room values ('001', 'Entrance'); +insert into Room values ('002', 'Office'); +insert into Room values ('003', 'Office'); +insert into Room values ('004', 'Technical'); +insert into Room values ('101', 'Office'); +insert into Room values ('102', 'Conference'); +insert into Room values ('103', 'Restroom'); +insert into Room values ('104', 'Technical'); +insert into Room values ('105', 'Office'); +insert into Room values ('106', 'Office'); +-- +-- Second we install the wall connectors +-- +insert into WSlot values ('WS.001.1a', '001', '', ''); +insert into WSlot values ('WS.001.1b', '001', '', ''); +insert into WSlot values ('WS.001.2a', '001', '', ''); +insert into WSlot values ('WS.001.2b', '001', '', ''); +insert into WSlot values ('WS.001.3a', '001', '', ''); +insert into WSlot values ('WS.001.3b', '001', '', ''); +insert into WSlot values ('WS.002.1a', '002', '', ''); +insert into WSlot values ('WS.002.1b', '002', '', ''); +insert into WSlot values ('WS.002.2a', '002', '', ''); +insert into WSlot values ('WS.002.2b', '002', '', ''); +insert into WSlot values ('WS.002.3a', '002', '', ''); +insert into WSlot values ('WS.002.3b', '002', '', ''); +insert into WSlot values ('WS.003.1a', '003', '', ''); +insert into WSlot values ('WS.003.1b', '003', '', ''); +insert into WSlot values ('WS.003.2a', '003', '', ''); +insert into WSlot values ('WS.003.2b', '003', '', ''); +insert into WSlot values ('WS.003.3a', '003', '', ''); +insert into WSlot values ('WS.003.3b', '003', '', ''); +insert into WSlot values ('WS.101.1a', '101', '', ''); +insert into WSlot values ('WS.101.1b', '101', '', ''); +insert into WSlot values ('WS.101.2a', '101', '', ''); +insert into WSlot values ('WS.101.2b', '101', '', ''); +insert into WSlot values ('WS.101.3a', '101', '', ''); +insert into WSlot values ('WS.101.3b', '101', '', ''); +insert into WSlot values ('WS.102.1a', '102', '', ''); +insert into WSlot values ('WS.102.1b', '102', '', ''); +insert into WSlot values ('WS.102.2a', '102', '', ''); +insert into WSlot values ('WS.102.2b', '102', '', ''); +insert into WSlot values ('WS.102.3a', '102', '', ''); +insert into WSlot values ('WS.102.3b', '102', '', ''); +insert into WSlot values ('WS.105.1a', '105', '', ''); +insert into WSlot values ('WS.105.1b', '105', '', ''); +insert into WSlot values ('WS.105.2a', '105', '', ''); +insert into WSlot values ('WS.105.2b', '105', '', ''); +insert into WSlot values ('WS.105.3a', '105', '', ''); +insert into WSlot values ('WS.105.3b', '105', '', ''); +insert into WSlot values ('WS.106.1a', '106', '', ''); +insert into WSlot values ('WS.106.1b', '106', '', ''); +insert into WSlot values ('WS.106.2a', '106', '', ''); +insert into WSlot values ('WS.106.2b', '106', '', ''); +insert into WSlot values ('WS.106.3a', '106', '', ''); +insert into WSlot values ('WS.106.3b', '106', '', ''); +-- +-- Now create the patch fields and their slots +-- +insert into PField values ('PF0_1', 'Wallslots basement'); +-- +-- The cables for these will be made later, so they are unconnected for now +-- +insert into PSlot values ('PS.base.a1', 'PF0_1', '', ''); +insert into PSlot values ('PS.base.a2', 'PF0_1', '', ''); +insert into PSlot values ('PS.base.a3', 'PF0_1', '', ''); +insert into PSlot values ('PS.base.a4', 'PF0_1', '', ''); +insert into PSlot values ('PS.base.a5', 'PF0_1', '', ''); +insert into PSlot values ('PS.base.a6', 'PF0_1', '', ''); +-- +-- These are already wired to the wall connectors +-- +insert into PSlot values ('PS.base.b1', 'PF0_1', '', 'WS.002.1a'); +insert into PSlot values ('PS.base.b2', 'PF0_1', '', 'WS.002.1b'); +insert into PSlot values ('PS.base.b3', 'PF0_1', '', 'WS.002.2a'); +insert into PSlot values ('PS.base.b4', 'PF0_1', '', 'WS.002.2b'); +insert into PSlot values ('PS.base.b5', 'PF0_1', '', 'WS.002.3a'); +insert into PSlot values ('PS.base.b6', 'PF0_1', '', 'WS.002.3b'); +insert into PSlot values ('PS.base.c1', 'PF0_1', '', 'WS.003.1a'); +insert into PSlot values ('PS.base.c2', 'PF0_1', '', 'WS.003.1b'); +insert into PSlot values ('PS.base.c3', 'PF0_1', '', 'WS.003.2a'); +insert into PSlot values ('PS.base.c4', 'PF0_1', '', 'WS.003.2b'); +insert into PSlot values ('PS.base.c5', 'PF0_1', '', 'WS.003.3a'); +insert into PSlot values ('PS.base.c6', 'PF0_1', '', 'WS.003.3b'); +-- +-- This patchfield will be renamed later into PF0_2 - so its +-- slots references in pfname should follow +-- +insert into PField values ('PF0_X', 'Phonelines basement'); +insert into PSlot values ('PS.base.ta1', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.ta2', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.ta3', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.ta4', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.ta5', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.ta6', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.tb1', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.tb2', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.tb3', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.tb4', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.tb5', 'PF0_X', '', ''); +insert into PSlot values ('PS.base.tb6', 'PF0_X', '', ''); +insert into PField values ('PF1_1', 'Wallslots first floor'); +insert into PSlot values ('PS.first.a1', 'PF1_1', '', 'WS.101.1a'); +insert into PSlot values ('PS.first.a2', 'PF1_1', '', 'WS.101.1b'); +insert into PSlot values ('PS.first.a3', 'PF1_1', '', 'WS.101.2a'); +insert into PSlot values ('PS.first.a4', 'PF1_1', '', 'WS.101.2b'); +insert into PSlot values ('PS.first.a5', 'PF1_1', '', 'WS.101.3a'); +insert into PSlot values ('PS.first.a6', 'PF1_1', '', 'WS.101.3b'); +insert into PSlot values ('PS.first.b1', 'PF1_1', '', 'WS.102.1a'); +insert into PSlot values ('PS.first.b2', 'PF1_1', '', 'WS.102.1b'); +insert into PSlot values ('PS.first.b3', 'PF1_1', '', 'WS.102.2a'); +insert into PSlot values ('PS.first.b4', 'PF1_1', '', 'WS.102.2b'); +insert into PSlot values ('PS.first.b5', 'PF1_1', '', 'WS.102.3a'); +insert into PSlot values ('PS.first.b6', 'PF1_1', '', 'WS.102.3b'); +insert into PSlot values ('PS.first.c1', 'PF1_1', '', 'WS.105.1a'); +insert into PSlot values ('PS.first.c2', 'PF1_1', '', 'WS.105.1b'); +insert into PSlot values ('PS.first.c3', 'PF1_1', '', 'WS.105.2a'); +insert into PSlot values ('PS.first.c4', 'PF1_1', '', 'WS.105.2b'); +insert into PSlot values ('PS.first.c5', 'PF1_1', '', 'WS.105.3a'); +insert into PSlot values ('PS.first.c6', 'PF1_1', '', 'WS.105.3b'); +insert into PSlot values ('PS.first.d1', 'PF1_1', '', 'WS.106.1a'); +insert into PSlot values ('PS.first.d2', 'PF1_1', '', 'WS.106.1b'); +insert into PSlot values ('PS.first.d3', 'PF1_1', '', 'WS.106.2a'); +insert into PSlot values ('PS.first.d4', 'PF1_1', '', 'WS.106.2b'); +insert into PSlot values ('PS.first.d5', 'PF1_1', '', 'WS.106.3a'); +insert into PSlot values ('PS.first.d6', 'PF1_1', '', 'WS.106.3b'); +-- +-- Now we wire the wall connectors 1a-2a in room 001 to the +-- patchfield. In the second update we make an error, and +-- correct it after +-- +update PSlot set backlink = 'WS.001.1a' where slotname = 'PS.base.a1'; +update PSlot set backlink = 'WS.001.1b' where slotname = 'PS.base.a3'; +select * from WSlot where roomno = '001' order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | + WS.001.3a | 001 | | + WS.001.3b | 001 | | +(6 rows) + +select * from PSlot where slotname ~ 'PS.base.a' order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | + PS.base.a3 | PF0_1 | | WS.001.1b + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | +(6 rows) + +update PSlot set backlink = 'WS.001.2a' where slotname = 'PS.base.a3'; +select * from WSlot where roomno = '001' order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | + WS.001.3a | 001 | | + WS.001.3b | 001 | | +(6 rows) + +select * from PSlot where slotname ~ 'PS.base.a' order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | + PS.base.a3 | PF0_1 | | WS.001.2a + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | +(6 rows) + +update PSlot set backlink = 'WS.001.1b' where slotname = 'PS.base.a2'; +select * from WSlot where roomno = '001' order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | + WS.001.3a | 001 | | + WS.001.3b | 001 | | +(6 rows) + +select * from PSlot where slotname ~ 'PS.base.a' order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | WS.001.1b + PS.base.a3 | PF0_1 | | WS.001.2a + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | +(6 rows) + +-- +-- Same procedure for 2b-3b but this time updating the WSlot instead +-- of the PSlot. Due to the triggers the result is the same: +-- WSlot and corresponding PSlot point to each other. +-- +update WSlot set backlink = 'PS.base.a4' where slotname = 'WS.001.2b'; +update WSlot set backlink = 'PS.base.a6' where slotname = 'WS.001.3a'; +select * from WSlot where roomno = '001' order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | PS.base.a4 + WS.001.3a | 001 | | PS.base.a6 + WS.001.3b | 001 | | +(6 rows) + +select * from PSlot where slotname ~ 'PS.base.a' order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | WS.001.1b + PS.base.a3 | PF0_1 | | WS.001.2a + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | +(6 rows) + +update WSlot set backlink = 'PS.base.a6' where slotname = 'WS.001.3b'; +select * from WSlot where roomno = '001' order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | PS.base.a4 + WS.001.3a | 001 | | PS.base.a6 + WS.001.3b | 001 | | PS.base.a6 +(6 rows) + +select * from PSlot where slotname ~ 'PS.base.a' order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | WS.001.1b + PS.base.a3 | PF0_1 | | WS.001.2a + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | +(6 rows) + +update WSlot set backlink = 'PS.base.a5' where slotname = 'WS.001.3a'; +select * from WSlot where roomno = '001' order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | PS.base.a4 + WS.001.3a | 001 | | PS.base.a5 + WS.001.3b | 001 | | PS.base.a6 +(6 rows) + +select * from PSlot where slotname ~ 'PS.base.a' order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | WS.001.1b + PS.base.a3 | PF0_1 | | WS.001.2a + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | +(6 rows) + +insert into PField values ('PF1_2', 'Phonelines first floor'); +insert into PSlot values ('PS.first.ta1', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.ta2', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.ta3', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.ta4', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.ta5', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.ta6', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.tb1', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.tb2', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.tb3', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.tb4', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.tb5', 'PF1_2', '', ''); +insert into PSlot values ('PS.first.tb6', 'PF1_2', '', ''); +-- +-- Fix the wrong name for patchfield PF0_2 +-- +update PField set name = 'PF0_2' where name = 'PF0_X'; +select * from PSlot order by slotname; + slotname | pfname | slotlink | backlink +----------------------+--------+----------------------+---------------------- + PS.base.a1 | PF0_1 | | WS.001.1a + PS.base.a2 | PF0_1 | | WS.001.1b + PS.base.a3 | PF0_1 | | WS.001.2a + PS.base.a4 | PF0_1 | | + PS.base.a5 | PF0_1 | | + PS.base.a6 | PF0_1 | | + PS.base.b1 | PF0_1 | | WS.002.1a + PS.base.b2 | PF0_1 | | WS.002.1b + PS.base.b3 | PF0_1 | | WS.002.2a + PS.base.b4 | PF0_1 | | WS.002.2b + PS.base.b5 | PF0_1 | | WS.002.3a + PS.base.b6 | PF0_1 | | WS.002.3b + PS.base.c1 | PF0_1 | | WS.003.1a + PS.base.c2 | PF0_1 | | WS.003.1b + PS.base.c3 | PF0_1 | | WS.003.2a + PS.base.c4 | PF0_1 | | WS.003.2b + PS.base.c5 | PF0_1 | | WS.003.3a + PS.base.c6 | PF0_1 | | WS.003.3b + PS.base.ta1 | PF0_X | | + PS.base.ta2 | PF0_X | | + PS.base.ta3 | PF0_X | | + PS.base.ta4 | PF0_X | | + PS.base.ta5 | PF0_X | | + PS.base.ta6 | PF0_X | | + PS.base.tb1 | PF0_X | | + PS.base.tb2 | PF0_X | | + PS.base.tb3 | PF0_X | | + PS.base.tb4 | PF0_X | | + PS.base.tb5 | PF0_X | | + PS.base.tb6 | PF0_X | | + PS.first.a1 | PF1_1 | | WS.101.1a + PS.first.a2 | PF1_1 | | WS.101.1b + PS.first.a3 | PF1_1 | | WS.101.2a + PS.first.a4 | PF1_1 | | WS.101.2b + PS.first.a5 | PF1_1 | | WS.101.3a + PS.first.a6 | PF1_1 | | WS.101.3b + PS.first.b1 | PF1_1 | | WS.102.1a + PS.first.b2 | PF1_1 | | WS.102.1b + PS.first.b3 | PF1_1 | | WS.102.2a + PS.first.b4 | PF1_1 | | WS.102.2b + PS.first.b5 | PF1_1 | | WS.102.3a + PS.first.b6 | PF1_1 | | WS.102.3b + PS.first.c1 | PF1_1 | | WS.105.1a + PS.first.c2 | PF1_1 | | WS.105.1b + PS.first.c3 | PF1_1 | | WS.105.2a + PS.first.c4 | PF1_1 | | WS.105.2b + PS.first.c5 | PF1_1 | | WS.105.3a + PS.first.c6 | PF1_1 | | WS.105.3b + PS.first.d1 | PF1_1 | | WS.106.1a + PS.first.d2 | PF1_1 | | WS.106.1b + PS.first.d3 | PF1_1 | | WS.106.2a + PS.first.d4 | PF1_1 | | WS.106.2b + PS.first.d5 | PF1_1 | | WS.106.3a + PS.first.d6 | PF1_1 | | WS.106.3b + PS.first.ta1 | PF1_2 | | + PS.first.ta2 | PF1_2 | | + PS.first.ta3 | PF1_2 | | + PS.first.ta4 | PF1_2 | | + PS.first.ta5 | PF1_2 | | + PS.first.ta6 | PF1_2 | | + PS.first.tb1 | PF1_2 | | + PS.first.tb2 | PF1_2 | | + PS.first.tb3 | PF1_2 | | + PS.first.tb4 | PF1_2 | | + PS.first.tb5 | PF1_2 | | + PS.first.tb6 | PF1_2 | | +(66 rows) + +select * from WSlot order by slotname; + slotname | roomno | slotlink | backlink +----------------------+----------+----------------------+---------------------- + WS.001.1a | 001 | | + WS.001.1b | 001 | | + WS.001.2a | 001 | | + WS.001.2b | 001 | | PS.base.a4 + WS.001.3a | 001 | | PS.base.a5 + WS.001.3b | 001 | | PS.base.a6 + WS.002.1a | 002 | | + WS.002.1b | 002 | | + WS.002.2a | 002 | | + WS.002.2b | 002 | | + WS.002.3a | 002 | | + WS.002.3b | 002 | | + WS.003.1a | 003 | | + WS.003.1b | 003 | | + WS.003.2a | 003 | | + WS.003.2b | 003 | | + WS.003.3a | 003 | | + WS.003.3b | 003 | | + WS.101.1a | 101 | | + WS.101.1b | 101 | | + WS.101.2a | 101 | | + WS.101.2b | 101 | | + WS.101.3a | 101 | | + WS.101.3b | 101 | | + WS.102.1a | 102 | | + WS.102.1b | 102 | | + WS.102.2a | 102 | | + WS.102.2b | 102 | | + WS.102.3a | 102 | | + WS.102.3b | 102 | | + WS.105.1a | 105 | | + WS.105.1b | 105 | | + WS.105.2a | 105 | | + WS.105.2b | 105 | | + WS.105.3a | 105 | | + WS.105.3b | 105 | | + WS.106.1a | 106 | | + WS.106.1b | 106 | | + WS.106.2a | 106 | | + WS.106.2b | 106 | | + WS.106.3a | 106 | | + WS.106.3b | 106 | | +(42 rows) + +-- +-- Install the central phone system and create the phone numbers. +-- They are weired on insert to the patchfields. Again the +-- triggers automatically tell the PSlots to update their +-- backlink field. +-- +insert into PLine values ('PL.001', '-0', 'Central call', 'PS.base.ta1'); +insert into PLine values ('PL.002', '-101', '', 'PS.base.ta2'); +insert into PLine values ('PL.003', '-102', '', 'PS.base.ta3'); +insert into PLine values ('PL.004', '-103', '', 'PS.base.ta5'); +insert into PLine values ('PL.005', '-104', '', 'PS.base.ta6'); +insert into PLine values ('PL.006', '-106', '', 'PS.base.tb2'); +insert into PLine values ('PL.007', '-108', '', 'PS.base.tb3'); +insert into PLine values ('PL.008', '-109', '', 'PS.base.tb4'); +insert into PLine values ('PL.009', '-121', '', 'PS.base.tb5'); +insert into PLine values ('PL.010', '-122', '', 'PS.base.tb6'); +insert into PLine values ('PL.015', '-134', '', 'PS.first.ta1'); +insert into PLine values ('PL.016', '-137', '', 'PS.first.ta3'); +insert into PLine values ('PL.017', '-139', '', 'PS.first.ta4'); +insert into PLine values ('PL.018', '-362', '', 'PS.first.tb1'); +insert into PLine values ('PL.019', '-363', '', 'PS.first.tb2'); +insert into PLine values ('PL.020', '-364', '', 'PS.first.tb3'); +insert into PLine values ('PL.021', '-365', '', 'PS.first.tb5'); +insert into PLine values ('PL.022', '-367', '', 'PS.first.tb6'); +insert into PLine values ('PL.028', '-501', 'Fax entrance', 'PS.base.ta2'); +insert into PLine values ('PL.029', '-502', 'Fax first floor', 'PS.first.ta1'); +-- +-- Buy some phones, plug them into the wall and patch the +-- phone lines to the corresponding patchfield slots. +-- +insert into PHone values ('PH.hc001', 'Hicom standard', 'WS.001.1a'); +update PSlot set slotlink = 'PS.base.ta1' where slotname = 'PS.base.a1'; +insert into PHone values ('PH.hc002', 'Hicom standard', 'WS.002.1a'); +update PSlot set slotlink = 'PS.base.ta5' where slotname = 'PS.base.b1'; +insert into PHone values ('PH.hc003', 'Hicom standard', 'WS.002.2a'); +update PSlot set slotlink = 'PS.base.tb2' where slotname = 'PS.base.b3'; +insert into PHone values ('PH.fax001', 'Canon fax', 'WS.001.2a'); +update PSlot set slotlink = 'PS.base.ta2' where slotname = 'PS.base.a3'; +-- +-- Install a hub at one of the patchfields, plug a computers +-- ethernet interface into the wall and patch it to the hub. +-- +insert into Hub values ('base.hub1', 'Patchfield PF0_1 hub', 16); +insert into System values ('orion', 'PC'); +insert into IFace values ('IF', 'orion', 'eth0', 'WS.002.1b'); +update PSlot set slotlink = 'HS.base.hub1.1' where slotname = 'PS.base.b2'; +-- +-- Now we take a look at the patchfield +-- +-- PGXCTODO: This is failing due to issue 3522907, complicated SELECT queries in plpgsql functions +select * from PField_v1 where pfname = 'PF0_1' order by slotname; +ERROR: could not determine data type of parameter $1 +CONTEXT: SQL statement "select * from WSlot where slotname = rec.backlink" +PL/pgSQL function "pslot_backlink_view" line 31 at SQL statement +select * from PField_v1 where pfname = 'PF0_2' order by slotname; + pfname | slotname | backside | patch +--------+----------+----------+------- +(0 rows) + +-- +-- Finally we want errors +-- +insert into PField values ('PF1_1', 'should fail due to unique index'); +ERROR: duplicate key value violates unique constraint "pfield_name" +DETAIL: Key (name)=(PF1_1) already exists. +update PSlot set backlink = 'WS.not.there' where slotname = 'PS.base.a1'; +update PSlot set backlink = 'XX.illegal' where slotname = 'PS.base.a1'; +update PSlot set slotlink = 'PS.not.there' where slotname = 'PS.base.a1'; +update PSlot set slotlink = 'XX.illegal' where slotname = 'PS.base.a1'; +insert into HSlot values ('HS', 'base.hub1', 1, ''); +insert into HSlot values ('HS', 'base.hub1', 20, ''); +ERROR: duplicate key value violates unique constraint "hslot_name" +DETAIL: Key (slotname)=(HS ) already exists. +delete from HSlot; +insert into IFace values ('IF', 'notthere', 'eth0', ''); +ERROR: duplicate key value violates unique constraint "iface_name" +DETAIL: Key (slotname)=(IF ) already exists. +insert into IFace values ('IF', 'orion', 'ethernet_interface_name_too_long', ''); +ERROR: duplicate key value violates unique constraint "iface_name" +DETAIL: Key (slotname)=(IF ) already exists. +-- +-- The following tests are unrelated to the scenario outlined above; +-- they merely exercise specific parts of PL/pgSQL +-- +-- +-- Test recursion, per bug report 7-Sep-01 +-- +CREATE FUNCTION recursion_test(int,int) RETURNS text AS ' +DECLARE rslt text; +BEGIN + IF $1 <= 0 THEN + rslt = CAST($2 AS TEXT); + ELSE + rslt = CAST($1 AS TEXT) || '','' || recursion_test($1 - 1, $2); + END IF; + RETURN rslt; +END;' LANGUAGE plpgsql; +SELECT recursion_test(4,3); + recursion_test +---------------- + 4,3,2,1,3 +(1 row) + +-- +-- Test the FOUND magic variable +-- +CREATE TABLE found_test_tbl (a int) distribute by round robin; +create function test_found() + returns boolean as ' + declare + begin + insert into found_test_tbl values (1); + if FOUND then + insert into found_test_tbl values (2); + end if; + + update found_test_tbl set a = 100 where a = 1; + if FOUND then + insert into found_test_tbl values (3); + end if; + + delete from found_test_tbl where a = 9999; -- matches no rows + if not FOUND then + insert into found_test_tbl values (4); + end if; + + for i in 1 .. 10 loop + -- no need to do anything + end loop; + if FOUND then + insert into found_test_tbl values (5); + end if; + + -- never executes the loop + for i in 2 .. 1 loop + -- no need to do anything + end loop; + if not FOUND then + insert into found_test_tbl values (6); + end if; + return true; + end;' language plpgsql; +select test_found(); +ERROR: Postgres-XC does not support DML queries in PL/pgSQL +CONTEXT: PL/pgSQL function "test_found" line 4 at SQL statement +select * from found_test_tbl order by 1; + a +--- +(0 rows) + +-- +-- Test set-returning functions for PL/pgSQL +-- +create function test_table_func_rec() returns setof found_test_tbl as ' +DECLARE + rec RECORD; +BEGIN + FOR rec IN select * from found_test_tbl LOOP + RETURN NEXT rec; + END LOOP; + RETURN; +END;' language plpgsql; +select * from test_table_func_rec() order by 1; + a +--- +(0 rows) + +create function test_table_func_row() returns setof found_test_tbl as ' +DECLARE + row found_test_tbl%ROWTYPE; +BEGIN + FOR row IN select * from found_test_tbl LOOP + RETURN NEXT row; + END LOOP; + RETURN; +END;' language plpgsql; +select * from test_table_func_row() order by 1; + a +--- +(0 rows) + +create function test_ret_set_scalar(int,int) returns setof int as ' +DECLARE + i int; +BEGIN + FOR i IN $1 .. $2 LOOP + RETURN NEXT i + 1; + END LOOP; + RETURN; +END;' language plpgsql; +select * from test_ret_set_scalar(1,10) order by 1; + test_ret_set_scalar +--------------------- + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 +(10 rows) + +create function test_ret_set_rec_dyn(int) returns setof record as ' +DECLARE + retval RECORD; +BEGIN + IF $1 > 10 THEN + SELECT INTO retval 5, 10, 15; + RETURN NEXT retval; + RETURN NEXT retval; + ELSE + SELECT INTO retval 50, 5::numeric, ''xxx''::text; + RETURN NEXT retval; + RETURN NEXT retval; + END IF; + RETURN; +END;' language plpgsql; +SELECT * FROM test_ret_set_rec_dyn(1500) AS (a int, b int, c int) order by a, b, c; + a | b | c +---+----+---- + 5 | 10 | 15 + 5 | 10 | 15 +(2 rows) + +SELECT * FROM test_ret_set_rec_dyn(5) AS (a int, b numeric, c text) order by a, b, c; + a | b | c +----+---+----- + 50 | 5 | xxx + 50 | 5 | xxx +(2 rows) + +create function test_ret_rec_dyn(int) returns record as ' +DECLARE + retval RECORD; +BEGIN + IF $1 > 10 THEN + SELECT INTO retval 5, 10, 15; + RETURN retval; + ELSE + SELECT INTO retval 50, 5::numeric, ''xxx''::text; + RETURN retval; + END IF; +END;' language plpgsql; +SELECT * FROM test_ret_rec_dyn(1500) AS (a int, b int, c int) order by a, b, c; + a | b | c +---+----+---- + 5 | 10 | 15 +(1 row) + +SELECT * FROM test_ret_rec_dyn(5) AS (a int, b numeric, c text) order by a, b, c; + a | b | c +----+---+----- + 50 | 5 | xxx +(1 row) + +-- +-- Test handling of OUT parameters, including polymorphic cases. +-- Note that RETURN is optional with OUT params; we try both ways. +-- +-- wrong way to do it: +create function f1(in i int, out j int) returns int as $$ +begin + return i+1; +end$$ language plpgsql; +ERROR: RETURN cannot have a parameter in function with OUT parameters +LINE 3: return i+1; + ^ +create function f1(in i int, out j int) as $$ +begin + j := i+1; + return; +end$$ language plpgsql; +select f1(42); + f1 +---- + 43 +(1 row) + +select * from f1(42); + j +---- + 43 +(1 row) + +create or replace function f1(inout i int) as $$ +begin + i := i+1; +end$$ language plpgsql; +select f1(42); + f1 +---- + 43 +(1 row) + +select * from f1(42); + i +---- + 43 +(1 row) + +drop function f1(int); +create function f1(in i int, out j int) returns setof int as $$ +begin + j := i+1; + return next; + j := i+2; + return next; + return; +end$$ language plpgsql; +select * from f1(42) order by 1; + j +---- + 43 + 44 +(2 rows) + +drop function f1(int); +create function f1(in i int, out j int, out k text) as $$ +begin + j := i; + j := j+1; + k := 'foo'; +end$$ language plpgsql; +select f1(42); + f1 +---------- + (43,foo) +(1 row) + +select * from f1(42); + j | k +----+----- + 43 | foo +(1 row) + +drop function f1(int); +create function f1(in i int, out j int, out k text) returns setof record as $$ +begin + j := i+1; + k := 'foo'; + return next; + j := j+1; + k := 'foot'; + return next; +end$$ language plpgsql; +select * from f1(42) order by j, k;; + j | k +----+------ + 43 | foo + 44 | foot +(2 rows) + +drop function f1(int); +create function duplic(in i anyelement, out j anyelement, out k anyarray) as $$ +begin + j := i; + k := array[j,j]; + return; +end$$ language plpgsql; +select * from duplic(42); + j | k +----+--------- + 42 | {42,42} +(1 row) + +select * from duplic('foo'::text); + j | k +-----+----------- + foo | {foo,foo} +(1 row) + +drop function duplic(anyelement); +-- +-- test PERFORM +-- +create table perform_test ( + a INT, + b INT +); +create function simple_func(int) returns boolean as ' +BEGIN + IF $1 < 20 THEN + INSERT INTO perform_test VALUES ($1, $1 + 10); + RETURN TRUE; + ELSE + RETURN FALSE; + END IF; +END;' language plpgsql; +create function perform_test_func() returns void as ' +BEGIN + IF FOUND then + INSERT INTO perform_test VALUES (100, 100); + END IF; + + PERFORM simple_func(5); + + IF FOUND then + INSERT INTO perform_test VALUES (100, 100); + END IF; + + PERFORM simple_func(50); + + IF FOUND then + INSERT INTO perform_test VALUES (100, 100); + END IF; + + RETURN; +END;' language plpgsql; +SELECT perform_test_func(); +ERROR: Postgres-XC does not support DML queries in PL/pgSQL +CONTEXT: PL/pgSQL function "simple_func" line 4 at SQL statement +SQL statement "SELECT simple_func(5)" +PL/pgSQL function "perform_test_func" line 7 at PERFORM +SELECT * FROM perform_test order by a, b; + a | b +---+--- +(0 rows) + +drop table perform_test; +-- +-- Test error trapping +-- +create function trap_zero_divide(int) returns int as $$ +declare x int; + sx smallint; +begin + begin -- start a subtransaction + raise notice 'should see this'; + x := 100 / $1; + raise notice 'should see this only if % <> 0', $1; + sx := $1; + raise notice 'should see this only if % fits in smallint', $1; + if $1 < 0 then + raise exception '% is less than zero', $1; + end if; + exception + when division_by_zero then + raise notice 'caught division_by_zero'; + x := -1; + when NUMERIC_VALUE_OUT_OF_RANGE then + raise notice 'caught numeric_value_out_of_range'; + x := -2; + end; + return x; +end$$ language plpgsql; +select trap_zero_divide(50); +NOTICE: should see this +NOTICE: should see this only if 50 <> 0 +NOTICE: should see this only if 50 fits in smallint + trap_zero_divide +------------------ + 2 +(1 row) + +select trap_zero_divide(0); +NOTICE: should see this +NOTICE: caught division_by_zero + trap_zero_divide +------------------ + -1 +(1 row) + +select trap_zero_divide(100000); +NOTICE: should see this +NOTICE: should see this only if 100000 <> 0 +NOTICE: caught numeric_value_out_of_range + trap_zero_divide +------------------ + -2 +(1 row) + +select trap_zero_divide(-100); +NOTICE: should see this +NOTICE: should see this only if -100 <> 0 +NOTICE: should see this only if -100 fits in smallint +ERROR: -100 is less than zero +create function trap_matching_test(int) returns int as $$ +declare x int; + sx smallint; + y int; +begin + begin -- start a subtransaction + x := 100 / $1; + sx := $1; + select into y unique1 from tenk1 where unique2 = + (select unique2 from tenk1 b where ten = $1); + exception + when data_exception then -- category match + raise notice 'caught data_exception'; + x := -1; + when NUMERIC_VALUE_OUT_OF_RANGE OR CARDINALITY_VIOLATION then + raise notice 'caught numeric_value_out_of_range or cardinality_violation'; + x := -2; + end; + return x; +end$$ language plpgsql; +-- PGXCTODO: This is failing due to issue 3522907, complicated SELECT queries in plpgsql functions +select trap_matching_test(50); +ERROR: bind message supplies 1 parameters, but prepared statement "" requires 0 +CONTEXT: SQL statement "select unique1 from tenk1 where unique2 = + (select unique2 from tenk1 b where ten = $1)" +PL/pgSQL function "trap_matching_test" line 9 at SQL statement +select trap_matching_test(0); +NOTICE: caught data_exception + trap_matching_test +-------------------- + -1 +(1 row) + +select trap_matching_test(100000); +NOTICE: caught data_exception + trap_matching_test +-------------------- + -1 +(1 row) + +-- PGXCTODO: This is failing due to issue 3522907, complicated SELECT queries in plpgsql functions +select trap_matching_test(1); +ERROR: bind message supplies 1 parameters, but prepared statement "" requires 0 +CONTEXT: SQL statement "select unique1 from tenk1 where unique2 = + (select unique2 from tenk1 b where ten = $1)" +PL/pgSQL function "trap_matching_test" line 9 at SQL statement +create temp table foo (f1 int); +create function blockme() returns int as $$ +declare x int; +begin + x := 1; + insert into foo values(x); + begin + x := x + 1; + insert into foo values(x); + -- we assume this will take longer than 2 seconds: + select count(*) into x from tenk1 a, tenk1 b, tenk1 c; + exception + when others then + raise notice 'caught others?'; + return -1; + when query_canceled then + raise notice 'nyeah nyeah, can''t stop me'; + x := x * 10; + end; + insert into foo values(x); + return x; +end$$ language plpgsql; +set statement_timeout to 2000; +select blockme(); +ERROR: Postgres-XC does not support DML queries in PL/pgSQL +CONTEXT: PL/pgSQL function "blockme" line 5 at SQL statement +reset statement_timeout; +select * from foo order by 1; + f1 +---- +(0 rows) + +drop table foo; +-- Test for pass-by-ref values being stored in proper context +create function test_variable_storage() returns text as $$ +declare x text; +begin + x := '1234'; + begin + x := x || '5678'; + -- force error inside subtransaction SPI context + perform trap_zero_divide(-100); + exception + when others then + x := x || '9012'; + end; + return x; +end$$ language plpgsql; +select test_variable_storage(); +NOTICE: should see this +CONTEXT: SQL statement "SELECT trap_zero_divide(-100)" +PL/pgSQL function "test_variable_storage" line 8 at PERFORM +NOTICE: should see this only if -100 <> 0 +CONTEXT: SQL statement "SELECT trap_zero_divide(-100)" +PL/pgSQL function "test_variable_storage" line 8 at PERFORM +NOTICE: should see this only if -100 fits in smallint +CONTEXT: SQL statement "SELECT trap_zero_divide(-100)" +PL/pgSQL function "test_variable_storage" line 8 at PERFORM + test_variable_storage +----------------------- + 123456789012 +(1 row) + +-- +-- Test proper snapshot handling in simple expressions +-- +create temp table users(login text, id serial); +NOTICE: CREATE TABLE will create implicit sequence "users_id_seq" for serial column "users.id" +create function sp_id_user(a_login text) returns int as $$ +declare x int; +begin + select into x id from users where login = a_login; + if found then return x; end if; + return 0; +end$$ language plpgsql stable; +insert into users values('user1'); +select sp_id_user('user1'); + sp_id_user +------------ + 1 +(1 row) + +select sp_id_user('userx'); + sp_id_user +------------ + 0 +(1 row) + +create function sp_add_user(a_login text) returns int as $$ +declare my_id_user int; +begin + my_id_user = sp_id_user( a_login ); + IF my_id_user > 0 THEN + RETURN -1; -- error code for existing user + END IF; + INSERT INTO users ( login ) VALUES ( a_login ); + my_id_user = sp_id_user( a_login ); + IF my_id_user = 0 THEN + RETURN -2; -- error code for insertion failure + END IF; + RETURN my_id_user; +end$$ language plpgsql; +select sp_add_user('user1'); + sp_add_user +------------- + -1 +(1 row) + +select sp_add_user('user2'); +ERROR: Postgres-XC does not support DML queries in PL/pgSQL +CONTEXT: PL/pgSQL function "sp_add_user" line 8 at SQL statement +select sp_add_user('user2'); + sp_add_user +------------- + 2 +(1 row) + +select sp_add_user('user3'); + sp_add_user +------------- + 3 +(1 row) + +select sp_add_user('user3'); + sp_add_user +------------- + -1 +(1 row) + +drop function sp_add_user(text); +drop function sp_id_user(text); +-- +-- tests for refcursors +-- +create table rc_test (a int, b int); +copy rc_test from stdin; +create function return_refcursor(rc refcursor) returns refcursor as $$ +begin + open rc for select a from rc_test; + return rc; +end +$$ language plpgsql; +create function refcursor_test1(refcursor) returns refcursor as $$ +begin + perform return_refcursor($1); + return $1; +end +$$ language plpgsql; +begin; +select refcursor_test1('test1'); + refcursor_test1 +----------------- + test1 +(1 row) + +fetch next in test1; + a +--- + 5 +(1 row) + +select refcursor_test1('test2'); + refcursor_test1 +----------------- + test2 +(1 row) + +fetch all from test2; + a +----- + 5 + 50 + 500 +(3 rows) + +commit; +-- should fail +fetch next from test1; +ERROR: cursor "test1" does not exist +create function refcursor_test2(int, int) returns boolean as $$ +declare + c1 cursor (param1 int, param2 int) for select * from rc_test where a > param1 and b > param2; + nonsense record; +begin + open c1($1, $2); + fetch c1 into nonsense; + close c1; + if found then + return true; + else + return false; + end if; +end +$$ language plpgsql; +-- PGXCTODO: This is failing due to issue 3522907, complicated SELECT queries in plpgsql functions +select refcursor_test2(20000, 20000) as "Should be false", + refcursor_test2(20, 20) as "Should be true"; +ERROR: could not determine data type of parameter $1 +CONTEXT: PL/pgSQL function "refcursor_test2" line 7 at FETCH +-- +-- tests for "raise" processing +-- +create function raise_test1(int) returns int as $$ +begin + raise notice 'This message has too many parameters!', $1; + return $1; +end; +$$ language plpgsql; +select raise_test1(5); +ERROR: too many parameters specified for RAISE +CONTEXT: PL/pgSQL function "raise_test1" line 3 at RAISE +create function raise_test2(int) returns int as $$ +begin + raise notice 'This message has too few parameters: %, %, %', $1, $1; + return $1; +end; +$$ language plpgsql; +select raise_test2(10); +ERROR: too few parameters specified for RAISE +CONTEXT: PL/pgSQL function "raise_test2" line 3 at RAISE +-- Test re-RAISE inside a nested exception block. This case is allowed +-- by Oracle's PL/SQL but was handled differently by PG before 9.1. +CREATE FUNCTION reraise_test() RETURNS void AS $$ +BEGIN + BEGIN + RAISE syntax_error; + EXCEPTION + WHEN syntax_error THEN + BEGIN + raise notice 'exception % thrown in inner block, reraising', sqlerrm; + RAISE; + EXCEPTION + WHEN OTHERS THEN + raise notice 'RIGHT - exception % caught in inner block', sqlerrm; + END; + END; +EXCEPTION + WHEN OTHERS THEN + raise notice 'WRONG - exception % caught in outer block', sqlerrm; +END; +$$ LANGUAGE plpgsql; +SELECT reraise_test(); +NOTICE: exception syntax_error thrown in inner block, reraising +NOTICE: RIGHT - exception syntax_error caught in inner block + reraise_test +-------------- + +(1 row) + +-- +-- reject function definitions that contain malformed SQL queries at +-- compile-time, where possible +-- +create function bad_sql1() returns int as $$ +declare a int; +begin + a := 5; + Johnny Yuma; + a := 10; + return a; +end$$ language plpgsql; +ERROR: syntax error at or near "Johnny" +LINE 5: Johnny Yuma; + ^ +create function bad_sql2() returns int as $$ +declare r record; +begin + for r in select I fought the law, the law won LOOP + raise notice 'in loop'; + end loop; + return 5; +end;$$ language plpgsql; +ERROR: syntax error at or near "the" +LINE 4: for r in select I fought the law, the law won LOOP + ^ +-- a RETURN expression is mandatory, except for void-returning +-- functions, where it is not allowed +create function missing_return_expr() returns int as $$ +begin + return ; +end;$$ language plpgsql; +ERROR: missing expression at or near ";" +LINE 3: return ; + ^ +create function void_return_expr() returns void as $$ +begin + return 5; +end;$$ language plpgsql; +ERROR: RETURN cannot have a parameter in function returning void +LINE 3: return 5; + ^ +-- VOID functions are allowed to omit RETURN +create function void_return_expr() returns void as $$ +begin + perform 2+2; +end;$$ language plpgsql; +select void_return_expr(); + void_return_expr +------------------ + +(1 row) + +-- but ordinary functions are not +create function missing_return_expr() returns int as $$ +begin + perform 2+2; +end;$$ language plpgsql; +select missing_return_expr(); +ERROR: control reached end of function without RETURN +CONTEXT: PL/pgSQL function "missing_return_expr" +drop function void_return_expr(); +drop function missing_return_expr(); +-- +-- EXECUTE ... INTO test +-- +create table eifoo (i integer, y integer); +create type eitype as (i integer, y integer); +create or replace function execute_into_test(varchar) returns record as $$ +declare + _r record; + _rt eifoo%rowtype; + _v eitype; + i int; + j int; + k int; +begin + execute 'insert into '||$1||' values(10,15)'; + execute 'select (row).* from (select row(10,1)::eifoo) s' into _r; + raise notice '% %', _r.i, _r.y; + execute 'select * from '||$1||' limit 1' into _rt; + raise notice '% %', _rt.i, _rt.y; + execute 'select *, 20 from '||$1||' limit 1' into i, j, k; + raise notice '% % %', i, j, k; + execute 'select 1,2' into _v; + return _v; +end; $$ language plpgsql; +select execute_into_test('eifoo'); +NOTICE: 10 1 +NOTICE: 10 15 +NOTICE: 10 15 20 + execute_into_test +------------------- + (1,2) +(1 row) + +drop table eifoo cascade; +drop type eitype cascade; +-- +-- SQLSTATE and SQLERRM test +-- +create function excpt_test1() returns void as $$ +begin + raise notice '% %', sqlstate, sqlerrm; +end; $$ language plpgsql; +-- should fail: SQLSTATE and SQLERRM are only in defined EXCEPTION +-- blocks +select excpt_test1(); +ERROR: column "sqlstate" does not exist +LINE 1: SELECT sqlstate + ^ +QUERY: SELECT sqlstate +CONTEXT: PL/pgSQL function "excpt_test1" line 3 at RAISE +create function excpt_test2() returns void as $$ +begin + begin + begin + raise notice '% %', sqlstate, sqlerrm; + end; + end; +end; $$ language plpgsql; +-- should fail +select excpt_test2(); +ERROR: column "sqlstate" does not exist +LINE 1: SELECT sqlstate + ^ +QUERY: SELECT sqlstate +CONTEXT: PL/pgSQL function "excpt_test2" line 5 at RAISE +create function excpt_test3() returns void as $$ +begin + begin + raise exception 'user exception'; + exception when others then + raise notice 'caught exception % %', sqlstate, sqlerrm; + begin + raise notice '% %', sqlstate, sqlerrm; + perform 10/0; + exception + when substring_error then + -- this exception handler shouldn't be invoked + raise notice 'unexpected exception: % %', sqlstate, sqlerrm; + when division_by_zero then + raise notice 'caught exception % %', sqlstate, sqlerrm; + end; + raise notice '% %', sqlstate, sqlerrm; + end; +end; $$ language plpgsql; +select excpt_test3(); +NOTICE: caught exception P0001 user exception +NOTICE: P0001 user exception +NOTICE: caught exception 22012 division by zero +NOTICE: P0001 user exception + excpt_test3 +------------- + +(1 row) + +drop function excpt_test1(); +drop function excpt_test2(); +drop function excpt_test3(); +-- parameters of raise stmt can be expressions +create function raise_exprs() returns void as $$ +declare + a integer[] = '{10,20,30}'; + c varchar = 'xyz'; + i integer; +begin + i := 2; + raise notice '%; %; %; %; %; %', a, a[i], c, (select c || 'abc'), row(10,'aaa',NULL,30), NULL; +end;$$ language plpgsql; +select raise_exprs(); +NOTICE: {10,20,30}; 20; xyz; xyzabc; (10,aaa,,30); + raise_exprs +------------- + +(1 row) + +drop function raise_exprs(); +-- continue statement +create table conttesttbl(idx serial, v integer); +NOTICE: CREATE TABLE will create implicit sequence "conttesttbl_idx_seq" for serial column "conttesttbl.idx" +insert into conttesttbl(v) values(10); +insert into conttesttbl(v) values(20); +insert into conttesttbl(v) values(30); +insert into conttesttbl(v) values(40); +create function continue_test1() returns void as $$ +declare _i integer = 0; _r record; +begin + raise notice '---1---'; + loop + _i := _i + 1; + raise notice '%', _i; + continue when _i < 10; + exit; + end loop; + + raise notice '---2---'; + <> + loop + _i := _i - 1; + loop + raise notice '%', _i; + continue lbl when _i > 0; + exit lbl; + end loop; + end loop; + + raise notice '---3---'; + <> + while _i < 10 loop + _i := _i + 1; + continue the_loop when _i % 2 = 0; + raise notice '%', _i; + end loop; + + raise notice '---4---'; + for _i in 1..10 loop + begin + -- applies to outer loop, not the nested begin block + continue when _i < 5; + raise notice '%', _i; + end; + end loop; + + raise notice '---5---'; + for _r in select * from conttesttbl loop + continue when _r.v <= 20; + raise notice '%', _r.v; + end loop; + + raise notice '---6---'; + for _r in execute 'select * from conttesttbl' loop + continue when _r.v <= 20; + raise notice '%', _r.v; + end loop; + + raise notice '---7---'; + for _i in 1..3 loop + raise notice '%', _i; + continue when _i = 3; + end loop; + + raise notice '---8---'; + _i := 1; + while _i <= 3 loop + raise notice '%', _i; + _i := _i + 1; + continue when _i = 3; + end loop; + + raise notice '---9---'; + for _r in select * from conttesttbl order by v limit 1 loop + raise notice '%', _r.v; + continue; + end loop; + + raise notice '---10---'; + for _r in execute 'select * from conttesttbl order by v limit 1' loop + raise notice '%', _r.v; + continue; + end loop; +end; $$ language plpgsql; +select continue_test1(); +NOTICE: ---1--- +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 +NOTICE: 5 +NOTICE: 6 +NOTICE: 7 +NOTICE: 8 +NOTICE: 9 +NOTICE: 10 +NOTICE: ---2--- +NOTICE: 9 +NOTICE: 8 +NOTICE: 7 +NOTICE: 6 +NOTICE: 5 +NOTICE: 4 +NOTICE: 3 +NOTICE: 2 +NOTICE: 1 +NOTICE: 0 +NOTICE: ---3--- +NOTICE: 1 +NOTICE: 3 +NOTICE: 5 +NOTICE: 7 +NOTICE: 9 +NOTICE: ---4--- +NOTICE: 5 +NOTICE: 6 +NOTICE: 7 +NOTICE: 8 +NOTICE: 9 +NOTICE: 10 +NOTICE: ---5--- +NOTICE: 30 +NOTICE: 40 +NOTICE: ---6--- +NOTICE: 30 +NOTICE: 40 +NOTICE: ---7--- +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: ---8--- +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: ---9--- +NOTICE: 10 +NOTICE: ---10--- +NOTICE: 10 + continue_test1 +---------------- + +(1 row) + +-- CONTINUE is only legal inside a loop +create function continue_test2() returns void as $$ +begin + begin + continue; + end; + return; +end; +$$ language plpgsql; +-- should fail +select continue_test2(); +ERROR: CONTINUE cannot be used outside a loop +CONTEXT: PL/pgSQL function "continue_test2" +-- CONTINUE can't reference the label of a named block +create function continue_test3() returns void as $$ +begin + <> + begin + loop + continue begin_block1; + end loop; + end; +end; +$$ language plpgsql; +-- should fail +select continue_test3(); +ERROR: CONTINUE cannot be used outside a loop +CONTEXT: PL/pgSQL function "continue_test3" +drop function continue_test1(); +drop function continue_test2(); +drop function continue_test3(); +drop table conttesttbl; +-- verbose end block and end loop +create function end_label1() returns void as $$ +<> +begin + <> + for _i in 1 .. 10 loop + exit flbl1; + end loop flbl1; + <> + for _i in 1 .. 10 loop + exit flbl2; + end loop; +end blbl; +$$ language plpgsql; +select end_label1(); + end_label1 +------------ + +(1 row) + +drop function end_label1(); +-- should fail: undefined end label +create function end_label2() returns void as $$ +begin + for _i in 1 .. 10 loop + exit; + end loop flbl1; +end; +$$ language plpgsql; +ERROR: label does not exist at or near "flbl1" +LINE 5: end loop flbl1; + ^ +-- should fail: end label does not match start label +create function end_label3() returns void as $$ +<> +begin + <> + for _i in 1 .. 10 loop + exit; + end loop outer_label; +end; +$$ language plpgsql; +ERROR: end label "outer_label" differs from block's label "inner_label" +LINE 7: end loop outer_label; + ^ +-- should fail: end label on a block without a start label +create function end_label4() returns void as $$ +<> +begin + for _i in 1 .. 10 loop + exit; + end loop outer_label; +end; +$$ language plpgsql; +ERROR: end label "outer_label" specified for unlabelled block +LINE 6: end loop outer_label; + ^ +-- using list of scalars in fori and fore stmts +create function for_vect() returns void as $proc$ +<>declare a integer; b varchar; c varchar; r record; +begin + -- fori + for i in 1 .. 3 loop + raise notice '%', i; + end loop; + -- fore with record var + for r in select gs as aa, 'BB' as bb, 'CC' as cc from generate_series(1,4) gs loop + raise notice '% % %', r.aa, r.bb, r.cc; + end loop; + -- fore with single scalar + for a in select gs from generate_series(1,4) gs loop + raise notice '%', a; + end loop; + -- fore with multiple scalars + for a,b,c in select gs, 'BB','CC' from generate_series(1,4) gs loop + raise notice '% % %', a, b, c; + end loop; + -- using qualified names in fors, fore is enabled, disabled only for fori + for lbl.a, lbl.b, lbl.c in execute $$select gs, 'bb','cc' from generate_series(1,4) gs$$ loop + raise notice '% % %', a, b, c; + end loop; +end; +$proc$ language plpgsql; +select for_vect(); +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 1 BB CC +NOTICE: 2 BB CC +NOTICE: 3 BB CC +NOTICE: 4 BB CC +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 +NOTICE: 1 BB CC +NOTICE: 2 BB CC +NOTICE: 3 BB CC +NOTICE: 4 BB CC +NOTICE: 1 bb cc +NOTICE: 2 bb cc +NOTICE: 3 bb cc +NOTICE: 4 bb cc + for_vect +---------- + +(1 row) + +-- regression test: verify that multiple uses of same plpgsql datum within +-- a SQL command all get mapped to the same $n parameter. The return value +-- of the SELECT is not important, we only care that it doesn't fail with +-- a complaint about an ungrouped column reference. +create function multi_datum_use(p1 int) returns bool as $$ +declare + x int; + y int; +begin + select into x,y unique1/p1, unique1/$1 from tenk1 group by unique1/p1; + return x = y; +end$$ language plpgsql; +select multi_datum_use(42); + multi_datum_use +----------------- + t +(1 row) + +-- +-- Test STRICT limiter in both planned and EXECUTE invocations. +-- Note that a data-modifying query is quasi strict (disallow multi rows) +-- by default in the planned case, but not in EXECUTE. +-- +create temp table foo (f1 int, f2 int); +insert into foo values (1,2), (3,4); +create or replace function footest() returns void as $$ +declare x record; +begin + -- should work + insert into foo values(5,6) returning * into x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: RETURNING clause not yet supported +CONTEXT: SQL statement "insert into foo values(5,6) returning *" +PL/pgSQL function "footest" line 5 at SQL statement +create or replace function footest() returns void as $$ +declare x record; +begin + -- should fail due to implicit strict + insert into foo values(7,8),(9,10) returning * into x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: RETURNING clause not yet supported +CONTEXT: SQL statement "insert into foo values(7,8),(9,10) returning *" +PL/pgSQL function "footest" line 5 at SQL statement +create or replace function footest() returns void as $$ +declare x record; +begin + -- should work + execute 'insert into foo values(5,6) returning *' into x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: RETURNING clause not yet supported +CONTEXT: SQL statement "insert into foo values(5,6) returning *" +PL/pgSQL function "footest" line 5 at EXECUTE statement +create or replace function footest() returns void as $$ +declare x record; +begin + -- this should work since EXECUTE isn't as picky + execute 'insert into foo values(7,8),(9,10) returning *' into x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: RETURNING clause not yet supported +CONTEXT: SQL statement "insert into foo values(7,8),(9,10) returning *" +PL/pgSQL function "footest" line 5 at EXECUTE statement +select * from foo order by 1, 2; + f1 | f2 +----+---- + 1 | 2 + 3 | 4 +(2 rows) + +create or replace function footest() returns void as $$ +declare x record; +begin + -- should work + select * from foo where f1 = 3 into strict x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +NOTICE: x.f1 = 3, x.f2 = 4 + footest +--------- + +(1 row) + +create or replace function footest() returns void as $$ +declare x record; +begin + -- should fail, no rows + select * from foo where f1 = 0 into strict x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: query returned no rows +CONTEXT: PL/pgSQL function "footest" line 5 at SQL statement +create or replace function footest() returns void as $$ +declare x record; +begin + -- should fail, too many rows + select * from foo where f1 > 3 into strict x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: query returned no rows +CONTEXT: PL/pgSQL function "footest" line 5 at SQL statement +create or replace function footest() returns void as $$ +declare x record; +begin + -- should work + execute 'select * from foo where f1 = 3' into strict x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +NOTICE: x.f1 = 3, x.f2 = 4 + footest +--------- + +(1 row) + +create or replace function footest() returns void as $$ +declare x record; +begin + -- should fail, no rows + execute 'select * from foo where f1 = 0' into strict x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: query returned no rows +CONTEXT: PL/pgSQL function "footest" line 5 at EXECUTE statement +create or replace function footest() returns void as $$ +declare x record; +begin + -- should fail, too many rows + execute 'select * from foo where f1 > 3' into strict x; + raise notice 'x.f1 = %, x.f2 = %', x.f1, x.f2; +end$$ language plpgsql; +select footest(); +ERROR: query returned no rows +CONTEXT: PL/pgSQL function "footest" line 5 at EXECUTE statement +drop function footest(); +-- test scrollable cursor support +create function sc_test() returns setof integer as $$ +declare + c scroll cursor for select f1 from int4_tbl; + x integer; +begin + open c; + fetch last from c into x; + while found loop + return next x; + fetch prior from c into x; + end loop; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; + sc_test +------------- + -2147483647 + -123456 + 0 + 123456 + 2147483647 +(5 rows) + +create or replace function sc_test() returns setof integer as $$ +declare + c no scroll cursor for select f1 from int4_tbl; + x integer; +begin + open c; + fetch last from c into x; + while found loop + return next x; + fetch prior from c into x; + end loop; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; -- fails because of NO SCROLL specification +ERROR: cursor can only scan forward +HINT: Declare it with SCROLL option to enable backward scan. +CONTEXT: PL/pgSQL function "sc_test" line 7 at FETCH +create or replace function sc_test() returns setof integer as $$ +declare + c refcursor; + x integer; +begin + open c scroll for select f1 from int4_tbl; + fetch last from c into x; + while found loop + return next x; + fetch prior from c into x; + end loop; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; + sc_test +------------- + -2147483647 + -123456 + 0 + 123456 + 2147483647 +(5 rows) + +create or replace function sc_test() returns setof integer as $$ +declare + c refcursor; + x integer; +begin + open c scroll for execute 'select f1 from int4_tbl'; + fetch last from c into x; + while found loop + return next x; + fetch relative -2 from c into x; + end loop; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; + sc_test +------------ + 0 + 123456 + 2147483647 +(3 rows) + +create or replace function sc_test() returns setof integer as $$ +declare + c refcursor; + x integer; +begin + open c scroll for execute 'select f1 from int4_tbl'; + fetch last from c into x; + while found loop + return next x; + move backward 2 from c; + fetch relative -1 from c into x; + end loop; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; + sc_test +------------- + -2147483647 + 2147483647 +(2 rows) + +create or replace function sc_test() returns setof integer as $$ +declare + c cursor for select * from generate_series(1, 10); + x integer; +begin + open c; + loop + move relative 2 in c; + if not found then + exit; + end if; + fetch next from c into x; + if found then + return next x; + end if; + end loop; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; + sc_test +--------- + 3 + 6 + 9 +(3 rows) + +create or replace function sc_test() returns setof integer as $$ +declare + c cursor for select * from generate_series(1, 10); + x integer; +begin + open c; + move forward all in c; + fetch backward from c into x; + if found then + return next x; + end if; + close c; +end; +$$ language plpgsql; +select * from sc_test() order by 1; + sc_test +--------- + 10 +(1 row) + +drop function sc_test(); +-- test qualified variable names +create function pl_qual_names (param1 int) returns void as $$ +<> +declare + param1 int := 1; +begin + <> + declare + param1 int := 2; + begin + raise notice 'param1 = %', param1; + raise notice 'pl_qual_names.param1 = %', pl_qual_names.param1; + raise notice 'outerblock.param1 = %', outerblock.param1; + raise notice 'innerblock.param1 = %', innerblock.param1; + end; +end; +$$ language plpgsql; +select pl_qual_names(42); +NOTICE: param1 = 2 +NOTICE: pl_qual_names.param1 = 42 +NOTICE: outerblock.param1 = 1 +NOTICE: innerblock.param1 = 2 + pl_qual_names +--------------- + +(1 row) + +drop function pl_qual_names(int); +-- tests for RETURN QUERY +create function ret_query1(out int, out int) returns setof record as $$ +begin + $1 := -1; + $2 := -2; + return next; + return query select x + 1, x * 10 from generate_series(0, 10) s (x); + return next; +end; +$$ language plpgsql; +select * from ret_query1() order by 1, 2; + column1 | column2 +---------+--------- + -1 | -2 + -1 | -2 + 1 | 0 + 2 | 10 + 3 | 20 + 4 | 30 + 5 | 40 + 6 | 50 + 7 | 60 + 8 | 70 + 9 | 80 + 10 | 90 + 11 | 100 +(13 rows) + +create type record_type as (x text, y int, z boolean); +create or replace function ret_query2(lim int) returns setof record_type as $$ +begin + return query select md5(s.x::text), s.x, s.x > 0 + from generate_series(-8, lim) s (x) where s.x % 2 = 0; +end; +$$ language plpgsql; +select * from ret_query2(8) order by 1; + x | y | z +----------------------------------+----+--- + 0267aaf632e87a63288a08331f22c7c3 | -4 | f + 1679091c5a880faf6fb5e6087eb1b2dc | 6 | t + 596a3d04481816330f07e4f97510c28f | -6 | f + 5d7b9adcbe1c629ec722529dd12e5129 | -2 | f + a87ff679a2f3e71d9181a67b7542122c | 4 | t + a8d2ec85eaf98407310b72eb73dda247 | -8 | f + c81e728d9d4c2f636f067f89cc14862c | 2 | t + c9f0f895fb98ab9159f51fd0297e236d | 8 | t + cfcd208495d565ef66e7dff9f98764da | 0 | f +(9 rows) + +-- test EXECUTE USING +create function exc_using(int, text) returns int as $$ +declare i int; +begin + for i in execute 'select * from generate_series(1,$1)' using $1+1 loop + raise notice '%', i; + end loop; + execute 'select $2 + $2*3 + length($1)' into i using $2,$1; + return i; +end +$$ language plpgsql; +select exc_using(5, 'foobar'); +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 +NOTICE: 5 +NOTICE: 6 + exc_using +----------- + 26 +(1 row) + +drop function exc_using(int, text); +create or replace function exc_using(int) returns void as $$ +declare + c refcursor; + i int; +begin + open c for execute 'select * from generate_series(1,$1)' using $1+1; + loop + fetch c into i; + exit when not found; + raise notice '%', i; + end loop; + close c; + return; +end; +$$ language plpgsql; +select exc_using(5); +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 +NOTICE: 5 +NOTICE: 6 + exc_using +----------- + +(1 row) + +drop function exc_using(int); +-- test FOR-over-cursor +create or replace function forc01() returns void as $$ +declare + c cursor(r1 integer, r2 integer) + for select * from generate_series(r1,r2) i; + c2 cursor + for select * from generate_series(41,43) i; +begin + for r in c(5,7) loop + raise notice '% from %', r.i, c; + end loop; + -- again, to test if cursor was closed properly + for r in c(9,10) loop + raise notice '% from %', r.i, c; + end loop; + -- and test a parameterless cursor + for r in c2 loop + raise notice '% from %', r.i, c2; + end loop; + -- and try it with a hand-assigned name + raise notice 'after loop, c2 = %', c2; + c2 := 'special_name'; + for r in c2 loop + raise notice '% from %', r.i, c2; + end loop; + raise notice 'after loop, c2 = %', c2; + -- and try it with a generated name + -- (which we can't show in the output because it's variable) + c2 := null; + for r in c2 loop + raise notice '%', r.i; + end loop; + raise notice 'after loop, c2 = %', c2; + return; +end; +$$ language plpgsql; +select forc01(); +NOTICE: 5 from c +NOTICE: 6 from c +NOTICE: 7 from c +NOTICE: 9 from c +NOTICE: 10 from c +NOTICE: 41 from c2 +NOTICE: 42 from c2 +NOTICE: 43 from c2 +NOTICE: after loop, c2 = c2 +NOTICE: 41 from special_name +NOTICE: 42 from special_name +NOTICE: 43 from special_name +NOTICE: after loop, c2 = special_name +NOTICE: 41 +NOTICE: 42 +NOTICE: 43 +NOTICE: after loop, c2 = + forc01 +-------- + +(1 row) + +-- try updating the cursor's current row +create temp table forc_test as + select n as i, n as j from generate_series(1,10) n; +create or replace function forc01() returns void as $$ +declare + c cursor for select * from forc_test; +begin + for r in c loop + raise notice '%, %', r.i, r.j; + update forc_test set i = i * 100, j = r.j * 2 where current of c; + end loop; +end; +$$ language plpgsql; +select forc01(); +NOTICE: 1, 1 +ERROR: WHERE CURRENT OF clause not yet supported +CONTEXT: SQL statement "update forc_test set i = i * 100, j = r.j * 2 where current of c" +PL/pgSQL function "forc01" line 7 at SQL statement +select * from forc_test order by 1, 2; + i | j +----+---- + 1 | 1 + 2 | 2 + 3 | 3 + 4 | 4 + 5 | 5 + 6 | 6 + 7 | 7 + 8 | 8 + 9 | 9 + 10 | 10 +(10 rows) + +-- same, with a cursor whose portal name doesn't match variable name +create or replace function forc01() returns void as $$ +declare + c refcursor := 'fooled_ya'; + r record; +begin + open c for select * from forc_test; + loop + fetch c into r; + exit when not found; + raise notice '%, %', r.i, r.j; + update forc_test set i = i * 100, j = r.j * 2 where current of c; + end loop; +end; +$$ language plpgsql; +select forc01(); +NOTICE: 1, 1 +ERROR: WHERE CURRENT OF clause not yet supported +CONTEXT: SQL statement "update forc_test set i = i * 100, j = r.j * 2 where current of c" +PL/pgSQL function "forc01" line 11 at SQL statement +select * from forc_test order by 1; + i | j +----+---- + 1 | 1 + 2 | 2 + 3 | 3 + 4 | 4 + 5 | 5 + 6 | 6 + 7 | 7 + 8 | 8 + 9 | 9 + 10 | 10 +(10 rows) + +drop function forc01(); +-- fail because cursor has no query bound to it +create or replace function forc_bad() returns void as $$ +declare + c refcursor; +begin + for r in c loop + raise notice '%', r.i; + end loop; +end; +$$ language plpgsql; +ERROR: cursor FOR loop must use a bound cursor variable +LINE 5: for r in c loop + ^ +-- test RETURN QUERY EXECUTE +create or replace function return_dquery() +returns setof int as $$ +begin + return query execute 'select * from (values(10),(20)) f'; + return query execute 'select * from (values($1),($2)) f' using 40,50; +end; +$$ language plpgsql; +select * from return_dquery() order by 1; + return_dquery +--------------- + 10 + 20 + 40 + 50 +(4 rows) + +drop function return_dquery(); +-- test RETURN QUERY with dropped columns +create table tabwithcols(a int, b int, c int, d int); +insert into tabwithcols values(10,20,30,40),(50,60,70,80); +create or replace function returnqueryf() +returns setof tabwithcols as $$ +begin + return query select * from tabwithcols; + return query execute 'select * from tabwithcols'; +end; +$$ language plpgsql; +select * from returnqueryf() order by 1,2,3,4; + a | b | c | d +----+----+----+---- + 10 | 20 | 30 | 40 + 10 | 20 | 30 | 40 + 50 | 60 | 70 | 80 + 50 | 60 | 70 | 80 +(4 rows) + +alter table tabwithcols drop column b; +select * from returnqueryf() order by 1,2,3; + a | c | d +----+----+---- + 10 | 30 | 40 + 10 | 30 | 40 + 50 | 70 | 80 + 50 | 70 | 80 +(4 rows) + +alter table tabwithcols drop column d; +select * from returnqueryf() order by 1,2; + a | c +----+---- + 10 | 30 + 10 | 30 + 50 | 70 + 50 | 70 +(4 rows) + +alter table tabwithcols add column d int; +select * from returnqueryf() order by 1,2,3; + a | c | d +----+----+--- + 10 | 30 | + 10 | 30 | + 50 | 70 | + 50 | 70 | +(4 rows) + +drop function returnqueryf(); +drop table tabwithcols; +-- Tests for 8.4's new RAISE features +create or replace function raise_test() returns void as $$ +begin + raise notice '% % %', 1, 2, 3 + using errcode = '55001', detail = 'some detail info', hint = 'some hint'; + raise '% % %', 1, 2, 3 + using errcode = 'division_by_zero', detail = 'some detail info'; +end; +$$ language plpgsql; +select raise_test(); +NOTICE: 1 2 3 +DETAIL: some detail info +HINT: some hint +ERROR: 1 2 3 +DETAIL: some detail info +-- Since we can't actually see the thrown SQLSTATE in default psql output, +-- test it like this; this also tests re-RAISE +create or replace function raise_test() returns void as $$ +begin + raise 'check me' + using errcode = 'division_by_zero', detail = 'some detail info'; + exception + when others then + raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; + raise; +end; +$$ language plpgsql; +select raise_test(); +NOTICE: SQLSTATE: 22012 SQLERRM: check me +ERROR: check me +DETAIL: some detail info +create or replace function raise_test() returns void as $$ +begin + raise 'check me' + using errcode = '1234F', detail = 'some detail info'; + exception + when others then + raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; + raise; +end; +$$ language plpgsql; +select raise_test(); +NOTICE: SQLSTATE: 1234F SQLERRM: check me +ERROR: check me +DETAIL: some detail info +-- SQLSTATE specification in WHEN +create or replace function raise_test() returns void as $$ +begin + raise 'check me' + using errcode = '1234F', detail = 'some detail info'; + exception + when sqlstate '1234F' then + raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; + raise; +end; +$$ language plpgsql; +select raise_test(); +NOTICE: SQLSTATE: 1234F SQLERRM: check me +ERROR: check me +DETAIL: some detail info +create or replace function raise_test() returns void as $$ +begin + raise division_by_zero using detail = 'some detail info'; + exception + when others then + raise notice 'SQLSTATE: % SQLERRM: %', sqlstate, sqlerrm; + raise; +end; +$$ language plpgsql; +select raise_test(); +NOTICE: SQLSTATE: 22012 SQLERRM: division_by_zero +ERROR: division_by_zero +DETAIL: some detail info +create or replace function raise_test() returns void as $$ +begin + raise division_by_zero; +end; +$$ language plpgsql; +select raise_test(); +ERROR: division_by_zero +create or replace function raise_test() returns void as $$ +begin + raise sqlstate '1234F'; +end; +$$ language plpgsql; +select raise_test(); +ERROR: 1234F +create or replace function raise_test() returns void as $$ +begin + raise division_by_zero using message = 'custom' || ' message'; +end; +$$ language plpgsql; +select raise_test(); +ERROR: custom message +create or replace function raise_test() returns void as $$ +begin + raise using message = 'custom' || ' message', errcode = '22012'; +end; +$$ language plpgsql; +select raise_test(); +ERROR: custom message +-- conflict on message +create or replace function raise_test() returns void as $$ +begin + raise notice 'some message' using message = 'custom' || ' message', errcode = '22012'; +end; +$$ language plpgsql; +select raise_test(); +ERROR: RAISE option already specified: MESSAGE +CONTEXT: PL/pgSQL function "raise_test" line 3 at RAISE +-- conflict on errcode +create or replace function raise_test() returns void as $$ +begin + raise division_by_zero using message = 'custom' || ' message', errcode = '22012'; +end; +$$ language plpgsql; +select raise_test(); +ERROR: RAISE option already specified: ERRCODE +CONTEXT: PL/pgSQL function "raise_test" line 3 at RAISE +-- nothing to re-RAISE +create or replace function raise_test() returns void as $$ +begin + raise; +end; +$$ language plpgsql; +select raise_test(); +ERROR: RAISE without parameters cannot be used outside an exception handler +CONTEXT: PL/pgSQL function "raise_test" line 3 at RAISE +-- check cases where implicit SQLSTATE variable could be confused with +-- SQLSTATE as a keyword, cf bug #5524 +create or replace function raise_test() returns void as $$ +begin + perform 1/0; +exception + when sqlstate '22012' then + raise notice using message = sqlstate; + raise sqlstate '22012' using message = 'substitute message'; +end; +$$ language plpgsql; +select raise_test(); +NOTICE: 22012 +ERROR: substitute message +drop function raise_test(); +-- test CASE statement +create or replace function case_test(bigint) returns text as $$ +declare a int = 10; + b int = 1; +begin + case $1 + when 1 then + return 'one'; + when 2 then + return 'two'; + when 3,4,3+5 then + return 'three, four or eight'; + when a then + return 'ten'; + when a+b, a+b+1 then + return 'eleven, twelve'; + end case; +end; +$$ language plpgsql immutable; +select case_test(1); + case_test +----------- + one +(1 row) + +select case_test(2); + case_test +----------- + two +(1 row) + +select case_test(3); + case_test +---------------------- + three, four or eight +(1 row) + +select case_test(4); + case_test +---------------------- + three, four or eight +(1 row) + +select case_test(5); -- fails +ERROR: case not found +HINT: CASE statement is missing ELSE part. +CONTEXT: PL/pgSQL function "case_test" line 5 at CASE +select case_test(8); + case_test +---------------------- + three, four or eight +(1 row) + +select case_test(10); + case_test +----------- + ten +(1 row) + +select case_test(11); + case_test +---------------- + eleven, twelve +(1 row) + +select case_test(12); + case_test +---------------- + eleven, twelve +(1 row) + +select case_test(13); -- fails +ERROR: case not found +HINT: CASE statement is missing ELSE part. +CONTEXT: PL/pgSQL function "case_test" line 5 at CASE +create or replace function catch() returns void as $$ +begin + raise notice '%', case_test(6); +exception + when case_not_found then + raise notice 'caught case_not_found % %', SQLSTATE, SQLERRM; +end +$$ language plpgsql; +select catch(); +NOTICE: caught case_not_found 20000 case not found + catch +------- + +(1 row) + +-- test the searched variant too, as well as ELSE +create or replace function case_test(bigint) returns text as $$ +declare a int = 10; +begin + case + when $1 = 1 then + return 'one'; + when $1 = a + 2 then + return 'twelve'; + else + return 'other'; + end case; +end; +$$ language plpgsql immutable; +select case_test(1); + case_test +----------- + one +(1 row) + +select case_test(2); + case_test +----------- + other +(1 row) + +select case_test(12); + case_test +----------- + twelve +(1 row) + +select case_test(13); + case_test +----------- + other +(1 row) + +drop function catch(); +drop function case_test(bigint); +-- test variadic functions +create or replace function vari(variadic int[]) +returns void as $$ +begin + for i in array_lower($1,1)..array_upper($1,1) loop + raise notice '%', $1[i]; + end loop; end; +$$ language plpgsql; +select vari(1,2,3,4,5); +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 +NOTICE: 5 + vari +------ + +(1 row) + +select vari(3,4,5); +NOTICE: 3 +NOTICE: 4 +NOTICE: 5 + vari +------ + +(1 row) + +select vari(variadic array[5,6,7]); +NOTICE: 5 +NOTICE: 6 +NOTICE: 7 + vari +------ + +(1 row) + +drop function vari(int[]); +-- coercion test +create or replace function pleast(variadic numeric[]) +returns numeric as $$ +declare aux numeric = $1[array_lower($1,1)]; +begin + for i in array_lower($1,1)+1..array_upper($1,1) loop + if $1[i] < aux then aux := $1[i]; end if; + end loop; + return aux; +end; +$$ language plpgsql immutable strict; +select pleast(10,1,2,3,-16); + pleast +-------- + -16 +(1 row) + +select pleast(10.2,2.2,-1.1); + pleast +-------- + -1.1 +(1 row) + +select pleast(10.2,10, -20); + pleast +-------- + -20 +(1 row) + +select pleast(10,20, -1.0); + pleast +-------- + -1.0 +(1 row) + +-- in case of conflict, non-variadic version is preferred +create or replace function pleast(numeric) +returns numeric as $$ +begin + raise notice 'non-variadic function called'; + return $1; +end; +$$ language plpgsql immutable strict; +select pleast(10); +NOTICE: non-variadic function called + pleast +-------- + 10 +(1 row) + +drop function pleast(numeric[]); +drop function pleast(numeric); +-- test table functions +create function tftest(int) returns table(a int, b int) as $$ +begin + return query select $1, $1+i from generate_series(1,5) g(i); +end; +$$ language plpgsql immutable strict; +select * from tftest(10) order by 1, 2; + a | b +----+---- + 10 | 11 + 10 | 12 + 10 | 13 + 10 | 14 + 10 | 15 +(5 rows) + +create or replace function tftest(a1 int) returns table(a int, b int) as $$ +begin + a := a1; b := a1 + 1; + return next; + a := a1 * 10; b := a1 * 10 + 1; + return next; +end; +$$ language plpgsql immutable strict; +select * from tftest(10) order by 1, 2; + a | b +-----+----- + 10 | 11 + 100 | 101 +(2 rows) + +drop function tftest(int); +create or replace function rttest() +returns setof int as $$ +declare rc int; +begin + return query values(10),(20); + get diagnostics rc = row_count; + raise notice '% %', found, rc; + return query select * from (values(10),(20)) f(a) where false; + get diagnostics rc = row_count; + raise notice '% %', found, rc; + return query execute 'values(10),(20)'; + get diagnostics rc = row_count; + raise notice '% %', found, rc; + return query execute 'select * from (values(10),(20)) f(a) where false'; + get diagnostics rc = row_count; + raise notice '% %', found, rc; +end; +$$ language plpgsql; +select * from rttest() order by 1; +NOTICE: t 2 +NOTICE: f 0 +NOTICE: t 2 +NOTICE: f 0 + rttest +-------- + 10 + 10 + 20 + 20 +(4 rows) + +drop function rttest(); +-- Test for proper cleanup at subtransaction exit. This example +-- exposed a bug in PG 8.2. +CREATE FUNCTION leaker_1(fail BOOL) RETURNS INTEGER AS $$ +DECLARE + v_var INTEGER; +BEGIN + BEGIN + v_var := (leaker_2(fail)).error_code; + EXCEPTION + WHEN others THEN RETURN 0; + END; + RETURN 1; +END; +$$ LANGUAGE plpgsql; +CREATE FUNCTION leaker_2(fail BOOL, OUT error_code INTEGER, OUT new_id INTEGER) + RETURNS RECORD AS $$ +BEGIN + IF fail THEN + RAISE EXCEPTION 'fail ...'; + END IF; + error_code := 1; + new_id := 1; + RETURN; +END; +$$ LANGUAGE plpgsql; +SELECT * FROM leaker_1(false); + leaker_1 +---------- + 1 +(1 row) + +SELECT * FROM leaker_1(true); + leaker_1 +---------- + 0 +(1 row) + +DROP FUNCTION leaker_1(bool); +DROP FUNCTION leaker_2(bool); +-- Test for appropriate cleanup of non-simple expression evaluations +-- (bug in all versions prior to August 2010) +CREATE FUNCTION nonsimple_expr_test() RETURNS text[] AS $$ +DECLARE + arr text[]; + lr text; + i integer; +BEGIN + arr := array[array['foo','bar'], array['baz', 'quux']]; + lr := 'fool'; + i := 1; + -- use sub-SELECTs to make expressions non-simple + arr[(SELECT i)][(SELECT i+1)] := (SELECT lr); + RETURN arr; +END; +$$ LANGUAGE plpgsql; +SELECT nonsimple_expr_test(); + nonsimple_expr_test +------------------------- + {{foo,fool},{baz,quux}} +(1 row) + +DROP FUNCTION nonsimple_expr_test(); +CREATE FUNCTION nonsimple_expr_test() RETURNS integer AS $$ +declare + i integer NOT NULL := 0; +begin + begin + i := (SELECT NULL::integer); -- should throw error + exception + WHEN OTHERS THEN + i := (SELECT 1::integer); + end; + return i; +end; +$$ LANGUAGE plpgsql; +SELECT nonsimple_expr_test(); + nonsimple_expr_test +--------------------- + 1 +(1 row) + +DROP FUNCTION nonsimple_expr_test(); +-- +-- Test cases involving recursion and error recovery in simple expressions +-- (bugs in all versions before October 2010). The problems are most +-- easily exposed by mutual recursion between plpgsql and sql functions. +-- +create function recurse(float8) returns float8 as +$$ +begin + if ($1 > 0) then + return sql_recurse($1 - 1); + else + return $1; + end if; +end; +$$ language plpgsql; +-- "limit" is to prevent this from being inlined +create function sql_recurse(float8) returns float8 as +$$ select recurse($1) limit 1; $$ language sql; +select recurse(10); + recurse +--------- + 0 +(1 row) + +create function error1(text) returns text language sql as +$$ SELECT relname::text FROM pg_class c WHERE c.oid = $1::regclass $$; +create function error2(p_name_table text) returns text language plpgsql as $$ +begin + return error1(p_name_table); +end$$; +BEGIN; +create table public.stuffs (stuff text); +SAVEPOINT a; +ERROR: SAVEPOINT is not yet supported. +select error2('nonexistent.stuffs'); +ERROR: current transaction is aborted, commands ignored until end of transaction block +ROLLBACK TO a; +ERROR: no such savepoint +select error2('public.stuffs'); +ERROR: current transaction is aborted, commands ignored until end of transaction block +rollback; +drop function error2(p_name_table text); +drop function error1(text); +-- Test handling of string literals. +set standard_conforming_strings = off; +create or replace function strtest() returns text as $$ +begin + raise notice 'foo\\bar\041baz'; + return 'foo\\bar\041baz'; +end +$$ language plpgsql; +WARNING: nonstandard use of \\ in a string literal +LINE 3: raise notice 'foo\\bar\041baz'; + ^ +HINT: Use the escape string syntax for backslashes, e.g., E'\\'. +WARNING: nonstandard use of \\ in a string literal +LINE 4: return 'foo\\bar\041baz'; + ^ +HINT: Use the escape string syntax for backslashes, e.g., E'\\'. +WARNING: nonstandard use of \\ in a string literal +LINE 4: return 'foo\\bar\041baz'; + ^ +HINT: Use the escape string syntax for backslashes, e.g., E'\\'. +select strtest(); +NOTICE: foo\bar!baz +WARNING: nonstandard use of \\ in a string literal +LINE 1: SELECT 'foo\\bar\041baz' + ^ +HINT: Use the escape string syntax for backslashes, e.g., E'\\'. +QUERY: SELECT 'foo\\bar\041baz' +CONTEXT: PL/pgSQL function "strtest" line 4 at RETURN + strtest +------------- + foo\bar!baz +(1 row) + +create or replace function strtest() returns text as $$ +begin + raise notice E'foo\\bar\041baz'; + return E'foo\\bar\041baz'; +end +$$ language plpgsql; +select strtest(); +NOTICE: foo\bar!baz + strtest +------------- + foo\bar!baz +(1 row) + +set standard_conforming_strings = on; +create or replace function strtest() returns text as $$ +begin + raise notice 'foo\\bar\041baz\'; + return 'foo\\bar\041baz\'; +end +$$ language plpgsql; +select strtest(); +NOTICE: foo\\bar\041baz\ + strtest +------------------ + foo\\bar\041baz\ +(1 row) + +create or replace function strtest() returns text as $$ +begin + raise notice E'foo\\bar\041baz'; + return E'foo\\bar\041baz'; +end +$$ language plpgsql; +select strtest(); +NOTICE: foo\bar!baz + strtest +------------- + foo\bar!baz +(1 row) + +drop function strtest(); +-- Test anonymous code blocks. +DO $$ +DECLARE r record; +BEGIN + FOR r IN SELECT rtrim(roomno) AS roomno, comment FROM Room ORDER BY roomno + LOOP + RAISE NOTICE '%, %', r.roomno, r.comment; + END LOOP; +END$$; +NOTICE: 001, Entrance +NOTICE: 002, Office +NOTICE: 003, Office +NOTICE: 004, Technical +NOTICE: 101, Office +NOTICE: 102, Conference +NOTICE: 103, Restroom +NOTICE: 104, Technical +NOTICE: 105, Office +NOTICE: 106, Office +-- these are to check syntax error reporting +DO LANGUAGE plpgsql $$begin return 1; end$$; +ERROR: RETURN cannot have a parameter in function returning void +LINE 1: DO LANGUAGE plpgsql $$begin return 1; end$$; + ^ +DO $$ +DECLARE r record; +BEGIN + FOR r IN SELECT rtrim(roomno) AS roomno, foo FROM Room ORDER BY roomno + LOOP + RAISE NOTICE '%, %', r.roomno, r.comment; + END LOOP; +END$$; +ERROR: column "foo" does not exist +LINE 1: SELECT rtrim(roomno) AS roomno, foo FROM Room ORDER BY roomn... + ^ +QUERY: SELECT rtrim(roomno) AS roomno, foo FROM Room ORDER BY roomno +CONTEXT: PL/pgSQL function "inline_code_block" line 4 at FOR over SELECT rows +-- Check variable scoping -- a var is not available in its own or prior +-- default expressions. +create function scope_test() returns int as $$ +declare x int := 42; +begin + declare y int := x + 1; + x int := x + 2; + begin + return x * 100 + y; + end; +end; +$$ language plpgsql; +select scope_test(); + scope_test +------------ + 4443 +(1 row) + +drop function scope_test(); +-- Check handling of conflicts between plpgsql vars and table columns. +set plpgsql.variable_conflict = error; +create function conflict_test() returns setof int8_tbl as $$ +declare r record; + q1 bigint := 42; +begin + for r in select q1,q2 from int8_tbl loop + return next r; + end loop; +end; +$$ language plpgsql; +select * from conflict_test() order by 1,2; +ERROR: column reference "q1" is ambiguous +LINE 1: select q1,q2 from int8_tbl + ^ +DETAIL: It could refer to either a PL/pgSQL variable or a table column. +QUERY: select q1,q2 from int8_tbl +CONTEXT: PL/pgSQL function "conflict_test" line 5 at FOR over SELECT rows +create or replace function conflict_test() returns setof int8_tbl as $$ +#variable_conflict use_variable +declare r record; + q1 bigint := 42; +begin + for r in select q1,q2 from int8_tbl loop + return next r; + end loop; +end; +$$ language plpgsql; +-- PGXCTODO: This is failing due to issue 3522907, complicated SELECT queries in plpgsql functions +select * from conflict_test() order by 1,2; +ERROR: could not determine data type of parameter $1 +CONTEXT: PL/pgSQL function "conflict_test" line 6 at FOR over SELECT rows +create or replace function conflict_test() returns setof int8_tbl as $$ +#variable_conflict use_column +declare r record; + q1 bigint := 42; +begin + for r in select q1,q2 from int8_tbl loop + return next r; + end loop; +end; +$$ language plpgsql; +select * from conflict_test() order by 1,2; + q1 | q2 +------------------+------------------- + 123 | 456 + 123 | 4567890123456789 + 4567890123456789 | -4567890123456789 + 4567890123456789 | 123 + 4567890123456789 | 4567890123456789 +(5 rows) + +drop function conflict_test(); +-- Check that an unreserved keyword can be used as a variable name +create function unreserved_test() returns int as $$ +declare + forward int := 21; +begin + forward := forward * 2; + return forward; +end +$$ language plpgsql; +select unreserved_test(); + unreserved_test +----------------- + 42 +(1 row) + +drop function unreserved_test(); +-- +-- Test FOREACH over arrays +-- +create function foreach_test(anyarray) +returns void as $$ +declare x int; +begin + foreach x in array $1 + loop + raise notice '%', x; + end loop; + end; +$$ language plpgsql; +select foreach_test(ARRAY[1,2,3,4]); +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 + foreach_test +-------------- + +(1 row) + +select foreach_test(ARRAY[[1,2],[3,4]]); +NOTICE: 1 +NOTICE: 2 +NOTICE: 3 +NOTICE: 4 + foreach_test +-------------- + +(1 row) + +create or replace function foreach_test(anyarray) +returns void as $$ +declare x int; +begin + foreach x slice 1 in array $1 + loop + raise notice '%', x; + end loop; + end; +$$ language plpgsql; +-- should fail +select foreach_test(ARRAY[1,2,3,4]); +ERROR: FOREACH ... SLICE loop variable must be of an array type +CONTEXT: PL/pgSQL function "foreach_test" line 4 at FOREACH over array +select foreach_test(ARRAY[[1,2],[3,4]]); +ERROR: FOREACH ... SLICE loop variable must be of an array type +CONTEXT: PL/pgSQL function "foreach_test" line 4 at FOREACH over array +create or replace function foreach_test(anyarray) +returns void as $$ +declare x int[]; +begin + foreach x slice 1 in array $1 + loop + raise notice '%', x; + end loop; + end; +$$ language plpgsql; +select foreach_test(ARRAY[1,2,3,4]); +NOTICE: {1,2,3,4} + foreach_test +-------------- + +(1 row) + +select foreach_test(ARRAY[[1,2],[3,4]]); +NOTICE: {1,2} +NOTICE: {3,4} + foreach_test +-------------- + +(1 row) + +-- higher level of slicing +create or replace function foreach_test(anyarray) +returns void as $$ +declare x int[]; +begin + foreach x slice 2 in array $1 + loop + raise notice '%', x; + end loop; + end; +$$ language plpgsql; +-- should fail +select foreach_test(ARRAY[1,2,3,4]); +ERROR: slice dimension (2) is out of the valid range 0..1 +CONTEXT: PL/pgSQL function "foreach_test" line 4 at FOREACH over array +-- ok +select foreach_test(ARRAY[[1,2],[3,4]]); +NOTICE: {{1,2},{3,4}} + foreach_test +-------------- + +(1 row) + +select foreach_test(ARRAY[[[1,2]],[[3,4]]]); +NOTICE: {{1,2}} +NOTICE: {{3,4}} + foreach_test +-------------- + +(1 row) + +create type xy_tuple AS (x int, y int); +-- iteration over array of records +create or replace function foreach_test(anyarray) +returns void as $$ +declare r record; +begin + foreach r in array $1 + loop + raise notice '%', r; + end loop; + end; +$$ language plpgsql; +select foreach_test(ARRAY[(10,20),(40,69),(35,78)]::xy_tuple[]); +NOTICE: (10,20) +NOTICE: (40,69) +NOTICE: (35,78) + foreach_test +-------------- + +(1 row) + +select foreach_test(ARRAY[[(10,20),(40,69)],[(35,78),(88,76)]]::xy_tuple[]); +NOTICE: (10,20) +NOTICE: (40,69) +NOTICE: (35,78) +NOTICE: (88,76) + foreach_test +-------------- + +(1 row) + +create or replace function foreach_test(anyarray) +returns void as $$ +declare x int; y int; +begin + foreach x, y in array $1 + loop + raise notice 'x = %, y = %', x, y; + end loop; + end; +$$ language plpgsql; +select foreach_test(ARRAY[(10,20),(40,69),(35,78)]::xy_tuple[]); +NOTICE: x = 10, y = 20 +NOTICE: x = 40, y = 69 +NOTICE: x = 35, y = 78 + foreach_test +-------------- + +(1 row) + +select foreach_test(ARRAY[[(10,20),(40,69)],[(35,78),(88,76)]]::xy_tuple[]); +NOTICE: x = 10, y = 20 +NOTICE: x = 40, y = 69 +NOTICE: x = 35, y = 78 +NOTICE: x = 88, y = 76 + foreach_test +-------------- + +(1 row) + +-- slicing over array of composite types +create or replace function foreach_test(anyarray) +returns void as $$ +declare x xy_tuple[]; +begin + foreach x slice 1 in array $1 + loop + raise notice '%', x; + end loop; + end; +$$ language plpgsql; +select foreach_test(ARRAY[(10,20),(40,69),(35,78)]::xy_tuple[]); +NOTICE: {"(10,20)","(40,69)","(35,78)"} + foreach_test +-------------- + +(1 row) + +select foreach_test(ARRAY[[(10,20),(40,69)],[(35,78),(88,76)]]::xy_tuple[]); +NOTICE: {"(10,20)","(40,69)"} +NOTICE: {"(35,78)","(88,76)"} + foreach_test +-------------- + +(1 row) + +drop function foreach_test(anyarray); +drop type xy_tuple; diff --git a/src/test/regress/expected/point.out b/src/test/regress/expected/point.out index 33c5093cb1..2831d51913 100644 --- a/src/test/regress/expected/point.out +++ b/src/test/regress/expected/point.out @@ -245,3 +245,53 @@ SELECT '' AS three, p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS dista | (5.1,34.5) | (10,10) | 24.9851956166046 (3 rows) +-- Test that GiST indexes provide same behavior as sequential scan +CREATE TEMP TABLE point_gist_tbl(f1 point); +INSERT INTO point_gist_tbl SELECT '(0,0)' FROM generate_series(0,1000); +CREATE INDEX point_gist_tbl_index ON point_gist_tbl USING gist (f1); +INSERT INTO point_gist_tbl VALUES ('(0.0000009,0.0000009)'); +SET enable_seqscan TO true; +SET enable_indexscan TO false; +SET enable_bitmapscan TO false; +SELECT COUNT(*) FROM point_gist_tbl WHERE f1 ~= '(0.0000009,0.0000009)'::point; + count +------- + 1002 +(1 row) + +SELECT COUNT(*) FROM point_gist_tbl WHERE f1 <@ '(0.0000009,0.0000009),(0.0000009,0.0000009)'::box; + count +------- + 1 +(1 row) + +SELECT COUNT(*) FROM point_gist_tbl WHERE f1 ~= '(0.0000018,0.0000018)'::point; + count +------- + 1 +(1 row) + +SET enable_seqscan TO false; +SET enable_indexscan TO true; +SET enable_bitmapscan TO true; +SELECT COUNT(*) FROM point_gist_tbl WHERE f1 ~= '(0.0000009,0.0000009)'::point; + count +------- + 1002 +(1 row) + +SELECT COUNT(*) FROM point_gist_tbl WHERE f1 <@ '(0.0000009,0.0000009),(0.0000009,0.0000009)'::box; + count +------- + 1 +(1 row) + +SELECT COUNT(*) FROM point_gist_tbl WHERE f1 ~= '(0.0000018,0.0000018)'::point; + count +------- + 1 +(1 row) + +RESET enable_seqscan; +RESET enable_indexscan; +RESET enable_bitmapscan; diff --git a/src/test/regress/expected/polymorphism.out b/src/test/regress/expected/polymorphism.out index b21ec834c9..4578551277 100644 --- a/src/test/regress/expected/polymorphism.out +++ b/src/test/regress/expected/polymorphism.out @@ -342,8 +342,6 @@ ERROR: function ffnp(anyarray) does not exist -- multi-arg polymorphic CREATE AGGREGATE mysum2(anyelement,anyelement) (SFUNC = sum3, STYPE = anyelement, INITCOND = '0'); --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; -- create test data for polymorphic aggregates create temp table t(f1 int, f2 int[], f3 text); insert into t values(1,array[1],'a'); @@ -580,6 +578,27 @@ select q2, sql_if(q2 > 0, q2, q2 + 1) from int8_tbl order by 1, 2; 4567890123456789 | 4567890123456789 (5 rows) +-- another sort of polymorphic aggregate +CREATE AGGREGATE array_cat_accum (anyarray) +( + sfunc = array_cat, + stype = anyarray, + initcond = '{}' +); +SELECT array_cat_accum(i) +FROM (VALUES (ARRAY[1,2]), (ARRAY[3,4])) as t(i); + array_cat_accum +----------------- + {1,2,3,4} +(1 row) + +SELECT array_cat_accum(i) +FROM (VALUES (ARRAY[row(1,2),row(3,4)]), (ARRAY[row(5,6),row(7,8)])) as t(i); + array_cat_accum +----------------------------------- + {"(1,2)","(3,4)","(5,6)","(7,8)"} +(1 row) + -- another kind of polymorphic aggregate create function add_group(grp anyarray, ad anyelement, size integer) returns anyarray diff --git a/src/test/regress/expected/prepared_xacts.out b/src/test/regress/expected/prepared_xacts.out index 054b0e0aa3..84038d3aa6 100644 --- a/src/test/regress/expected/prepared_xacts.out +++ b/src/test/regress/expected/prepared_xacts.out @@ -88,32 +88,67 @@ SELECT gid FROM pg_prepared_xacts ORDER BY gid; BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; INSERT INTO pxtest1 VALUES ('fff'); -SELECT * FROM pxtest1 ORDER BY foobar; +-- This should fail, because the gid foo3 is already in use +PREPARE TRANSACTION 'foo3'; +ERROR: transaction identifier "foo3" is already in use +SELECT * FROM pxtest1; foobar -------- aaa ddd - fff -(3 rows) +(2 rows) --- This should fail, because the gid foo3 is already in use -PREPARE TRANSACTION 'foo3'; -ERROR: transaction identifier "foo3" is already in use -SELECT * FROM pxtest1 ORDER BY foobar; +ROLLBACK PREPARED 'foo3'; +SELECT * FROM pxtest1; foobar -------- aaa ddd (2 rows) -ROLLBACK PREPARED 'foo3'; -SELECT * FROM pxtest1 ORDER BY foobar; +-- Test serialization failure (SSI) +BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; +UPDATE pxtest1 SET foobar = 'eee' WHERE foobar = 'ddd'; +SELECT * FROM pxtest1; + foobar +-------- + aaa + eee +(2 rows) + +PREPARE TRANSACTION 'foo4'; +SELECT gid FROM pg_prepared_xacts; + gid +------ + foo4 +(1 row) + +BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; +SELECT * FROM pxtest1; foobar -------- aaa ddd (2 rows) +-- This should fail, because the two transactions have a write-skew anomaly +INSERT INTO pxtest1 VALUES ('fff'); +ERROR: could not serialize access due to read/write dependencies among transactions +DETAIL: Reason code: Canceled on identification as a pivot, during write. +HINT: The transaction might succeed if retried. +PREPARE TRANSACTION 'foo5'; +SELECT gid FROM pg_prepared_xacts; + gid +------ + foo4 +(1 row) + +ROLLBACK PREPARED 'foo4'; +SELECT gid FROM pg_prepared_xacts; + gid +----- +(0 rows) + -- Clean up DROP TABLE pxtest1; -- Test subtransactions diff --git a/src/test/regress/expected/prepared_xacts_1.out b/src/test/regress/expected/prepared_xacts_1.out index 5051eaabd7..898f278c11 100644 --- a/src/test/regress/expected/prepared_xacts_1.out +++ b/src/test/regress/expected/prepared_xacts_1.out @@ -92,13 +92,6 @@ SELECT gid FROM pg_prepared_xacts; BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; INSERT INTO pxtest1 VALUES ('fff'); -SELECT * FROM pxtest1; - foobar --------- - aaa - fff -(2 rows) - -- This should fail, because the gid foo3 is already in use PREPARE TRANSACTION 'foo3'; ERROR: prepared transactions are disabled @@ -117,6 +110,47 @@ SELECT * FROM pxtest1; aaa (1 row) +-- Test serialization failure (SSI) +BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; +UPDATE pxtest1 SET foobar = 'eee' WHERE foobar = 'ddd'; +SELECT * FROM pxtest1; + foobar +-------- + aaa +(1 row) + +PREPARE TRANSACTION 'foo4'; +ERROR: prepared transactions are disabled +HINT: Set max_prepared_transactions to a nonzero value. +SELECT gid FROM pg_prepared_xacts; + gid +----- +(0 rows) + +BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; +SELECT * FROM pxtest1; + foobar +-------- + aaa +(1 row) + +-- This should fail, because the two transactions have a write-skew anomaly +INSERT INTO pxtest1 VALUES ('fff'); +PREPARE TRANSACTION 'foo5'; +ERROR: prepared transactions are disabled +HINT: Set max_prepared_transactions to a nonzero value. +SELECT gid FROM pg_prepared_xacts; + gid +----- +(0 rows) + +ROLLBACK PREPARED 'foo4'; +ERROR: prepared transaction with identifier "foo4" does not exist +SELECT gid FROM pg_prepared_xacts; + gid +----- +(0 rows) + -- Clean up DROP TABLE pxtest1; -- Test subtransactions diff --git a/src/test/regress/expected/prepared_xacts_2.out b/src/test/regress/expected/prepared_xacts_2.out index 79caa9ce85..bc02b2bde9 100644 --- a/src/test/regress/expected/prepared_xacts_2.out +++ b/src/test/regress/expected/prepared_xacts_2.out @@ -40,7 +40,7 @@ SELECT pgxc_prepared_xact FROM pgxc_prepared_xacts ORDER by 1; -- Test ROLLBACK PREPARED ROLLBACK PREPARED 'foo1'; -SELECT * FROM pxtest1 ORDER BY foobar; +SELECT * FROM pxtest1 ORDER BY foobar; foobar -------- aaa @@ -69,14 +69,14 @@ SELECT * FROM pxtest1 ORDER BY foobar; (2 rows) PREPARE TRANSACTION 'foo2'; -SELECT * FROM pxtest1 ORDER BY foobar; +SELECT * FROM pxtest1 ORDER BY foobar; foobar -------- aaa (1 row) COMMIT PREPARED 'foo2'; -SELECT * FROM pxtest1 ORDER BY foobar; +SELECT * FROM pxtest1 ORDER BY foobar; foobar -------- aaa @@ -110,32 +110,69 @@ SELECT pgxc_prepared_xact FROM pgxc_prepared_xacts ORDER by 1; BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; INSERT INTO pxtest1 VALUES ('fff'); -SELECT * FROM pxtest1 ORDER BY foobar; +-- This should fail, because the gid foo3 is already in use +PREPARE TRANSACTION 'foo3'; +ERROR: transaction identifier "foo3" is already in use +SELECT * FROM pxtest1 ORDER BY foobar; foobar -------- aaa ddd - fff -(3 rows) +(2 rows) --- This should fail, because the gid foo3 is already in use -PREPARE TRANSACTION 'foo3'; -ERROR: transaction identifier "foo3" is already in use -SELECT * FROM pxtest1 ORDER BY foobar; +ROLLBACK PREPARED 'foo3'; +SELECT * FROM pxtest1 ORDER BY foobar; foobar -------- aaa ddd (2 rows) -ROLLBACK PREPARED 'foo3'; -SELECT * FROM pxtest1 ORDER BY foobar; +-- Test serialization failure (SSI) +BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; +UPDATE pxtest1 SET foobar = 'eee' WHERE foobar = 'ddd'; +SELECT * FROM pxtest1 ORDER BY foobar; + foobar +-------- + aaa + eee +(2 rows) + +PREPARE TRANSACTION 'foo4'; +SELECT gid FROM pg_prepared_xacts; + gid +------ + foo4 +(1 row) + +BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; +SELECT * FROM pxtest1 ORDER BY foobar; foobar -------- aaa ddd (2 rows) +-- This should fail, because the two transactions have a write-skew anomaly +INSERT INTO pxtest1 VALUES ('fff'); +PREPARE TRANSACTION 'foo5'; +SELECT gid FROM pg_prepared_xacts; + gid +------ + foo4 + foo5 +(2 rows) + +ROLLBACK PREPARED 'foo4'; +SELECT gid FROM pg_prepared_xacts; + gid +------ + foo5 +(1 row) + +-- In Postgres-XC, serializable is not yet supported, and SERIALIZABLE falls to +-- read-committed silently, so rollback transaction properly +ROLLBACK PREPARED 'foo5'; -- Clean up DROP TABLE pxtest1; -- Test subtransactions diff --git a/src/test/regress/expected/privileges.out b/src/test/regress/expected/privileges.out index 5cda2302fc..b3e913de35 100644 --- a/src/test/regress/expected/privileges.out +++ b/src/test/regress/expected/privileges.out @@ -32,7 +32,7 @@ ALTER GROUP regressgroup1 ADD USER regressuser4; ALTER GROUP regressgroup2 ADD USER regressuser2; -- duplicate NOTICE: role "regressuser2" is already a member of role "regressgroup2" ALTER GROUP regressgroup2 DROP USER regressuser2; -ALTER GROUP regressgroup2 ADD USER regressuser4; +GRANT regressgroup2 TO regressuser4 WITH ADMIN OPTION; -- test owner privileges SET SESSION AUTHORIZATION regressuser1; SELECT session_user, current_user; @@ -832,6 +832,40 @@ SELECT has_table_privilege('regressuser1', 'atest4', 'SELECT WITH GRANT OPTION') t (1 row) +-- Admin options +SET SESSION AUTHORIZATION regressuser4; +CREATE FUNCTION dogrant_ok() RETURNS void LANGUAGE sql SECURITY DEFINER AS + 'GRANT regressgroup2 TO regressuser5'; +GRANT regressgroup2 TO regressuser5; -- ok: had ADMIN OPTION +SET ROLE regressgroup2; +GRANT regressgroup2 TO regressuser5; -- fails: SET ROLE suspended privilege +ERROR: must have admin option on role "regressgroup2" +SET SESSION AUTHORIZATION regressuser1; +GRANT regressgroup2 TO regressuser5; -- fails: no ADMIN OPTION +ERROR: must have admin option on role "regressgroup2" +SELECT dogrant_ok(); -- ok: SECURITY DEFINER conveys ADMIN +NOTICE: role "regressuser5" is already a member of role "regressgroup2" +CONTEXT: SQL function "dogrant_ok" statement 1 + dogrant_ok +------------ + +(1 row) + +SET ROLE regressgroup2; +GRANT regressgroup2 TO regressuser5; -- fails: SET ROLE did not help +ERROR: must have admin option on role "regressgroup2" +SET SESSION AUTHORIZATION regressgroup2; +GRANT regressgroup2 TO regressuser5; -- ok: a role can self-admin +NOTICE: role "regressuser5" is already a member of role "regressgroup2" +CREATE FUNCTION dogrant_fails() RETURNS void LANGUAGE sql SECURITY DEFINER AS + 'GRANT regressgroup2 TO regressuser5'; +SELECT dogrant_fails(); -- fails: no self-admin in SECURITY DEFINER +ERROR: must have admin option on role "regressgroup2" +CONTEXT: SQL function "dogrant_fails" statement 1 +DROP FUNCTION dogrant_fails(); +SET SESSION AUTHORIZATION regressuser4; +DROP FUNCTION dogrant_ok(); +REVOKE regressgroup2 FROM regressuser5; -- has_sequence_privilege tests \c - CREATE SEQUENCE x_seq; @@ -1216,6 +1250,56 @@ SELECT has_function_privilege('regressuser1', 'testns.testfunc(int)', 'EXECUTE') SET client_min_messages TO 'warning'; DROP SCHEMA testns CASCADE; RESET client_min_messages; +-- test that dependent privileges are revoked (or not) properly +\c - +set session role regressuser1; +create table dep_priv_test (a int); +grant select on dep_priv_test to regressuser2 with grant option; +grant select on dep_priv_test to regressuser3 with grant option; +set session role regressuser2; +grant select on dep_priv_test to regressuser4 with grant option; +set session role regressuser3; +grant select on dep_priv_test to regressuser4 with grant option; +set session role regressuser4; +grant select on dep_priv_test to regressuser5; +\dp dep_priv_test + Access privileges + Schema | Name | Type | Access privileges | Column access privileges +--------+---------------+-------+-----------------------------------+-------------------------- + public | dep_priv_test | table | regressuser1=arwdDxt/regressuser1+| + | | | regressuser2=r*/regressuser1 +| + | | | regressuser3=r*/regressuser1 +| + | | | regressuser4=r*/regressuser2 +| + | | | regressuser4=r*/regressuser3 +| + | | | regressuser5=r/regressuser4 | +(1 row) + +set session role regressuser2; +revoke select on dep_priv_test from regressuser4 cascade; +\dp dep_priv_test + Access privileges + Schema | Name | Type | Access privileges | Column access privileges +--------+---------------+-------+-----------------------------------+-------------------------- + public | dep_priv_test | table | regressuser1=arwdDxt/regressuser1+| + | | | regressuser2=r*/regressuser1 +| + | | | regressuser3=r*/regressuser1 +| + | | | regressuser4=r*/regressuser3 +| + | | | regressuser5=r/regressuser4 | +(1 row) + +set session role regressuser3; +revoke select on dep_priv_test from regressuser4 cascade; +\dp dep_priv_test + Access privileges + Schema | Name | Type | Access privileges | Column access privileges +--------+---------------+-------+-----------------------------------+-------------------------- + public | dep_priv_test | table | regressuser1=arwdDxt/regressuser1+| + | | | regressuser2=r*/regressuser1 +| + | | | regressuser3=r*/regressuser1 | +(1 row) + +set session role regressuser1; +drop table dep_priv_test; -- clean up \c drop sequence x_seq; diff --git a/src/test/regress/expected/privileges_1.out b/src/test/regress/expected/privileges_1.out index 58084095f4..a5b7a0a15f 100644 --- a/src/test/regress/expected/privileges_1.out +++ b/src/test/regress/expected/privileges_1.out @@ -32,7 +32,7 @@ ALTER GROUP regressgroup1 ADD USER regressuser4; ALTER GROUP regressgroup2 ADD USER regressuser2; -- duplicate NOTICE: role "regressuser2" is already a member of role "regressgroup2" ALTER GROUP regressgroup2 DROP USER regressuser2; -ALTER GROUP regressgroup2 ADD USER regressuser4; +GRANT regressgroup2 TO regressuser4 WITH ADMIN OPTION; -- test owner privileges SET SESSION AUTHORIZATION regressuser1; SELECT session_user, current_user; @@ -789,6 +789,45 @@ SELECT has_table_privilege('regressuser1', 'atest4', 'SELECT WITH GRANT OPTION') t (1 row) +-- Admin options +SET SESSION AUTHORIZATION regressuser4; +CREATE FUNCTION dogrant_ok() RETURNS void LANGUAGE sql SECURITY DEFINER AS + 'GRANT regressgroup2 TO regressuser5'; +ERROR: In XC, SQL functions cannot contain utility statements +CONTEXT: SQL function "dogrant_ok" +GRANT regressgroup2 TO regressuser5; -- ok: had ADMIN OPTION +SET ROLE regressgroup2; +GRANT regressgroup2 TO regressuser5; -- fails: SET ROLE suspended privilege +ERROR: must have admin option on role "regressgroup2" +SET SESSION AUTHORIZATION regressuser1; +GRANT regressgroup2 TO regressuser5; -- fails: no ADMIN OPTION +ERROR: must have admin option on role "regressgroup2" +SELECT dogrant_ok(); -- ok: SECURITY DEFINER conveys ADMIN +ERROR: function dogrant_ok() does not exist +LINE 1: SELECT dogrant_ok(); + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +SET ROLE regressgroup2; +GRANT regressgroup2 TO regressuser5; -- fails: SET ROLE did not help +ERROR: must have admin option on role "regressgroup2" +SET SESSION AUTHORIZATION regressgroup2; +GRANT regressgroup2 TO regressuser5; -- ok: a role can self-admin +NOTICE: role "regressuser5" is already a member of role "regressgroup2" +CREATE FUNCTION dogrant_fails() RETURNS void LANGUAGE sql SECURITY DEFINER AS + 'GRANT regressgroup2 TO regressuser5'; +ERROR: In XC, SQL functions cannot contain utility statements +CONTEXT: SQL function "dogrant_fails" +SELECT dogrant_fails(); -- fails: no self-admin in SECURITY DEFINER +ERROR: function dogrant_fails() does not exist +LINE 1: SELECT dogrant_fails(); + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +DROP FUNCTION dogrant_fails(); +ERROR: function dogrant_fails() does not exist +SET SESSION AUTHORIZATION regressuser4; +DROP FUNCTION dogrant_ok(); +ERROR: function dogrant_ok() does not exist +REVOKE regressgroup2 FROM regressuser5; -- has_sequence_privilege tests \c - CREATE SEQUENCE x_seq; @@ -1125,6 +1164,56 @@ SELECT has_function_privilege('regressuser1', 'testns.testfunc(int)', 'EXECUTE') SET client_min_messages TO 'warning'; DROP SCHEMA testns CASCADE; RESET client_min_messages; +-- test that dependent privileges are revoked (or not) properly +\c - +set session role regressuser1; +create table dep_priv_test (a int); +grant select on dep_priv_test to regressuser2 with grant option; +grant select on dep_priv_test to regressuser3 with grant option; +set session role regressuser2; +grant select on dep_priv_test to regressuser4 with grant option; +set session role regressuser3; +grant select on dep_priv_test to regressuser4 with grant option; +set session role regressuser4; +grant select on dep_priv_test to regressuser5; +\dp dep_priv_test + Access privileges + Schema | Name | Type | Access privileges | Column access privileges +--------+---------------+-------+-----------------------------------+-------------------------- + public | dep_priv_test | table | regressuser1=arwdDxt/regressuser1+| + | | | regressuser2=r*/regressuser1 +| + | | | regressuser3=r*/regressuser1 +| + | | | regressuser4=r*/regressuser2 +| + | | | regressuser4=r*/regressuser3 +| + | | | regressuser5=r/regressuser4 | +(1 row) + +set session role regressuser2; +revoke select on dep_priv_test from regressuser4 cascade; +\dp dep_priv_test + Access privileges + Schema | Name | Type | Access privileges | Column access privileges +--------+---------------+-------+-----------------------------------+-------------------------- + public | dep_priv_test | table | regressuser1=arwdDxt/regressuser1+| + | | | regressuser2=r*/regressuser1 +| + | | | regressuser3=r*/regressuser1 +| + | | | regressuser4=r*/regressuser3 +| + | | | regressuser5=r/regressuser4 | +(1 row) + +set session role regressuser3; +revoke select on dep_priv_test from regressuser4 cascade; +\dp dep_priv_test + Access privileges + Schema | Name | Type | Access privileges | Column access privileges +--------+---------------+-------+-----------------------------------+-------------------------- + public | dep_priv_test | table | regressuser1=arwdDxt/regressuser1+| + | | | regressuser2=r*/regressuser1 +| + | | | regressuser3=r*/regressuser1 | +(1 row) + +set session role regressuser1; +drop table dep_priv_test; -- clean up \c drop sequence x_seq; diff --git a/src/test/regress/expected/rangefuncs.out b/src/test/regress/expected/rangefuncs.out index 9c76702f6d..3bc9468256 100644 --- a/src/test/regress/expected/rangefuncs.out +++ b/src/test/regress/expected/rangefuncs.out @@ -574,6 +574,17 @@ SELECT * FROM foo(3) ORDER BY 1, 2; (9 rows) DROP FUNCTION foo(int); +-- case that causes change of typmod knowledge during inlining +CREATE OR REPLACE FUNCTION foo() +RETURNS TABLE(a varchar(5)) +AS $$ SELECT 'hello'::varchar(5) $$ LANGUAGE sql STABLE; +SELECT * FROM foo() GROUP BY 1; + a +------- + hello +(1 row) + +DROP FUNCTION foo(); -- -- some tests on SQL functions with RETURNING -- @@ -918,3 +929,17 @@ select * from foobar(); -- fail ERROR: function return row and query-specified return row do not match DETAIL: Returned row contains 3 attributes, but query expects 2. drop function foobar(); +-- check behavior when a function's input sometimes returns a set (bug #8228) +SELECT *, + lower(CASE WHEN id = 2 THEN (regexp_matches(str, '^0*([1-9]\d+)$'))[1] + ELSE str + END) +FROM + (VALUES (1,''), (2,'0000000049404'), (3,'FROM 10000000876')) v(id, str); + id | str | lower +----+------------------+------------------ + 1 | | + 2 | 0000000049404 | 49404 + 3 | FROM 10000000876 | from 10000000876 +(3 rows) + diff --git a/src/test/regress/expected/rangefuncs_1.out b/src/test/regress/expected/rangefuncs_1.out index 5f8324f92a..c02deee388 100644 --- a/src/test/regress/expected/rangefuncs_1.out +++ b/src/test/regress/expected/rangefuncs_1.out @@ -577,11 +577,20 @@ SELECT * FROM foo(3) ORDER BY 1, 2; (9 rows) DROP FUNCTION foo(int); +-- case that causes change of typmod knowledge during inlining +CREATE OR REPLACE FUNCTION foo() +RETURNS TABLE(a varchar(5)) +AS $$ SELECT 'hello'::varchar(5) $$ LANGUAGE sql STABLE; +SELECT * FROM foo() GROUP BY 1; + a +------- + hello +(1 row) + +DROP FUNCTION foo(); -- -- some tests on SQL functions with RETURNING -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; create temp table tt(f1 serial, data text); NOTICE: CREATE TABLE will create implicit sequence "tt_f1_seq" for serial column "tt.f1" create function insert_tt(text) returns int as @@ -825,3 +834,17 @@ select * from foobar(); -- fail ERROR: function return row and query-specified return row do not match DETAIL: Returned row contains 3 attributes, but query expects 2. drop function foobar(); +-- check behavior when a function's input sometimes returns a set (bug #8228) +SELECT *, + lower(CASE WHEN id = 2 THEN (regexp_matches(str, '^0*([1-9]\d+)$'))[1] + ELSE str + END) +FROM + (VALUES (1,''), (2,'0000000049404'), (3,'FROM 10000000876')) v(id, str); + id | str | lower +----+------------------+------------------ + 1 | | + 2 | 0000000049404 | 49404 + 3 | FROM 10000000876 | from 10000000876 +(3 rows) + diff --git a/src/test/regress/expected/returning_1.out b/src/test/regress/expected/returning_1.out index 581cafd32b..45487845d7 100644 --- a/src/test/regress/expected/returning_1.out +++ b/src/test/regress/expected/returning_1.out @@ -2,8 +2,6 @@ -- Test INSERT/UPDATE/DELETE RETURNING -- -- Simple cases --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE foo (f1 serial, f2 text, f3 int default 42); NOTICE: CREATE TABLE will create implicit sequence "foo_f1_seq" for serial column "foo.f1" INSERT INTO foo (f2,f3) diff --git a/src/test/regress/expected/rowtypes.out b/src/test/regress/expected/rowtypes.out index e8312e3211..bbc9505a0c 100644 --- a/src/test/regress/expected/rowtypes.out +++ b/src/test/regress/expected/rowtypes.out @@ -3,8 +3,6 @@ -- -- Make both a standalone composite type and a table rowtype create type complex as (r float8, i float8); --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; create temp table fullname (first text, last text); -- Nested composite create type quad as (c1 complex, c2 complex); @@ -69,7 +67,7 @@ select f1, q.c1 from quadtable; -- fails, q is a table reference ERROR: missing FROM-clause entry for table "q" LINE 1: select f1, q.c1 from quadtable; ^ -select f1, (q).c1, (qq.q).c1.i from quadtable qq; +select f1, (q).c1, (qq.q).c1.i from quadtable qq order by 1; f1 | c1 | i ----+-----------+----- 1 | (3.3,4.4) | 4.4 @@ -86,7 +84,7 @@ select * from people; -- at the moment this will not work due to ALTER TABLE inadequacy: alter table fullname add column suffix text default ''; -ERROR: cannot alter table "fullname" because column "people"."fn" uses its rowtype +ERROR: cannot alter table "fullname" because column "people.fn" uses its row type -- but this should work: alter table fullname add column suffix text default null; select * from people; @@ -207,6 +205,25 @@ ERROR: could not determine interpretation of row comparison operator ~~ LINE 1: select ROW('ABC','DEF') ~~ ROW('DEF','ABC') as fail; ^ HINT: Row comparison operators must be associated with btree operator families. +-- Comparisons of ROW() expressions can cope with some type mismatches +select ROW(1,2) = ROW(1,2::int8); + ?column? +---------- + t +(1 row) + +select ROW(1,2) in (ROW(3,4), ROW(1,2)); + ?column? +---------- + t +(1 row) + +select ROW(1,2) in (ROW(3,4), ROW(1,2::int8)); + ?column? +---------- + t +(1 row) + -- Check row comparison with a subselect select unique1, unique2 from tenk1 where (unique1, unique2) < any (select ten, ten from tenk1 where hundred < 3) @@ -251,6 +268,25 @@ order by thousand, tenthous; 999 | 9999 (25 rows) +-- Check row comparisons with IN +select * from int8_tbl i8 where i8 in (row(123,456)); -- fail, type mismatch +ERROR: cannot compare dissimilar column types bigint and integer at record column 1 +explain (costs off, nodes off, num_nodes off) +select * from int8_tbl i8 +where i8 in (row(123,456)::int8_tbl, '(4567890123456789,123)'); + QUERY PLAN +------------------------------------------ + Data Node Scan on "__REMOTE_FQS_QUERY__" +(1 row) + +select * from int8_tbl i8 +where i8 in (row(123,456)::int8_tbl, '(4567890123456789,123)') ORDER BY 1,2; + q1 | q2 +------------------+----- + 123 | 456 + 4567890123456789 | 123 +(2 rows) + -- Check some corner cases involving empty rowtypes select ROW(); row @@ -327,14 +363,10 @@ UPDATE price SET active = true, price = input_prices.price FROM unnest(ARRAY[(10, 123.00), (11, 99.99)]::price_input[]) input_prices WHERE price_key_from_table(price.*) = price_key_from_input(input_prices.*); +ERROR: Cannot generate remote query plan +DETAIL: This relation rowtype cannot be fetched select * from price; - id | active | price -----+--------+-------- - 1 | f | 42 - 10 | t | 123.00 - 11 | t | 99.99 -(3 rows) - +ERROR: current transaction is aborted, commands ignored until end of transaction block rollback; -- -- We allow I/O conversion casts from composite types to strings to be diff --git a/src/test/regress/expected/rowtypes_1.out b/src/test/regress/expected/rowtypes_1.out index bcce748459..9b6c4217b5 100644 --- a/src/test/regress/expected/rowtypes_1.out +++ b/src/test/regress/expected/rowtypes_1.out @@ -3,8 +3,6 @@ -- -- Make both a standalone composite type and a table rowtype create type complex as (r float8, i float8); --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; create temp table fullname (first text, last text); -- Nested composite create type quad as (c1 complex, c2 complex); @@ -86,7 +84,7 @@ select * from people; -- at the moment this will not work due to ALTER TABLE inadequacy: alter table fullname add column suffix text default ''; -ERROR: cannot alter table "fullname" because column "people"."fn" uses its rowtype +ERROR: cannot alter table "fullname" because column "people.fn" uses its row type -- but this should work: alter table fullname add column suffix text default null; select * from people; @@ -327,7 +325,7 @@ UPDATE price SET active = true, price = input_prices.price FROM unnest(ARRAY[(10, 123.00), (11, 99.99)]::price_input[]) input_prices WHERE price_key_from_table(price.*) = price_key_from_input(input_prices.*); -ERROR: Cannot generate remote UPDATE plan +ERROR: Cannot generate remote query plan DETAIL: This relation rowtype cannot be fetched select * from price; ERROR: current transaction is aborted, commands ignored until end of transaction block diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out index 3fdd6353ad..697ccec6a5 100644 --- a/src/test/regress/expected/rules.out +++ b/src/test/regress/expected/rules.out @@ -1460,6 +1460,28 @@ ERROR: cannot drop rule _RETURN on view fooview because view fooview requires i HINT: You can drop view fooview instead. drop view fooview; -- +-- test conversion of table to view (needed to load some pg_dump files) +-- +create table fooview (x int, y text); +select xmin, * from fooview; + xmin | x | y +------+---+--- +(0 rows) + +create rule "_RETURN" as on select to fooview do instead + select 1 as x, 'aaa'::text as y; +select * from fooview; + x | y +---+----- + 1 | aaa +(1 row) + +select xmin, * from fooview; -- fail, views don't have such a column +ERROR: column "xmin" does not exist +LINE 1: select xmin, * from fooview; + ^ +drop view fooview; +-- -- check for planner problems with complex inherited UPDATES -- create table id (id serial primary key, name text); @@ -1516,8 +1538,6 @@ reset client_min_messages; -- check corner case where an entirely-dummy subplan is created by -- constraint exclusion -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; create temp table t1 (a integer primary key) distribute by replication; NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "t1_pkey" for table "t1" create temp table t1_1 (check (a >= 0 and a < 10)) inherits (t1); diff --git a/src/test/regress/expected/rules_1.out b/src/test/regress/expected/rules_1.out index 8e99627828..f71d57a9e0 100644 --- a/src/test/regress/expected/rules_1.out +++ b/src/test/regress/expected/rules_1.out @@ -1460,6 +1460,28 @@ ERROR: cannot drop rule _RETURN on view fooview because view fooview requires i HINT: You can drop view fooview instead. drop view fooview; -- +-- test conversion of table to view (needed to load some pg_dump files) +-- +create table fooview (x int, y text); +select xmin, * from fooview; + xmin | x | y +------+---+--- +(0 rows) + +create rule "_RETURN" as on select to fooview do instead + select 1 as x, 'aaa'::text as y; +select * from fooview; + x | y +---+----- + 1 | aaa +(1 row) + +select xmin, * from fooview; -- fail, views don't have such a column +ERROR: column "xmin" does not exist +LINE 1: select xmin, * from fooview; + ^ +drop view fooview; +-- -- check for planner problems with complex inherited UPDATES -- create table id (id serial primary key, name text); @@ -1496,13 +1518,13 @@ select * from id_ordered order by id; (6 rows) update id_ordered set name = 'update 2' where id = 2; -ERROR: Cannot generate remote UPDATE plan +ERROR: Cannot generate remote query plan DETAIL: This relation rowtype cannot be fetched update id_ordered set name = 'update 4' where id = 4; -ERROR: Cannot generate remote UPDATE plan +ERROR: Cannot generate remote query plan DETAIL: This relation rowtype cannot be fetched update id_ordered set name = 'update 5' where id = 5; -ERROR: Cannot generate remote UPDATE plan +ERROR: Cannot generate remote query plan DETAIL: This relation rowtype cannot be fetched select * from id_ordered order by id; id | name @@ -1522,8 +1544,6 @@ reset client_min_messages; -- check corner case where an entirely-dummy subplan is created by -- constraint exclusion -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; create temp table t1 (a integer primary key) distribute by replication; NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "t1_pkey" for table "t1" create temp table t1_1 (check (a >= 0 and a < 10)) inherits (t1) distribute by replication; diff --git a/src/test/regress/expected/select_1.out b/src/test/regress/expected/select_1.out index 17a0db968b..c4f6a3ead5 100644 --- a/src/test/regress/expected/select_1.out +++ b/src/test/regress/expected/select_1.out @@ -525,8 +525,6 @@ ORDER BY column1,column2; -- -- Test ORDER BY options -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE foo (f1 int); INSERT INTO foo VALUES (42),(3),(10),(7),(null),(null),(1); SELECT * FROM foo ORDER BY f1; diff --git a/src/test/regress/expected/select_distinct.out b/src/test/regress/expected/select_distinct.out index a2ed5b0af4..3e91ece4aa 100644 --- a/src/test/regress/expected/select_distinct.out +++ b/src/test/regress/expected/select_distinct.out @@ -128,8 +128,6 @@ SELECT DISTINCT p.age FROM person* p ORDER BY age using >; -- Also, some tests of IS DISTINCT FROM, which doesn't quite deserve its -- very own regression file. -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE disttable (f1 integer); INSERT INTO DISTTABLE VALUES(1); INSERT INTO DISTTABLE VALUES(2); diff --git a/src/test/regress/expected/select_into.out b/src/test/regress/expected/select_into.out index 503efe04fc..a71abf5b48 100644 --- a/src/test/regress/expected/select_into.out +++ b/src/test/regress/expected/select_into.out @@ -11,3 +11,28 @@ SELECT * FROM onek2 WHERE onek2.unique1 < 2; DROP TABLE tmp1; +-- +-- CREATE TABLE AS/SELECT INTO as last command in a SQL function +-- have been known to cause problems +-- +CREATE FUNCTION make_table() RETURNS VOID +AS $$ + CREATE TABLE created_table AS SELECT * FROM int8_tbl; +$$ LANGUAGE SQL; +SELECT make_table(); + make_table +------------ + +(1 row) + +SELECT * FROM created_table; + q1 | q2 +------------------+------------------- + 123 | 456 + 123 | 4567890123456789 + 4567890123456789 | 123 + 4567890123456789 | 4567890123456789 + 4567890123456789 | -4567890123456789 +(5 rows) + +DROP TABLE created_table; diff --git a/src/test/regress/expected/select_into_1.out b/src/test/regress/expected/select_into_1.out index 375115133e..60b2f364c7 100644 --- a/src/test/regress/expected/select_into_1.out +++ b/src/test/regress/expected/select_into_1.out @@ -5,13 +5,30 @@ SELECT * INTO TABLE tmp1 FROM onek WHERE onek.unique1 < 2; -ERROR: INTO clause not yet supported DROP TABLE tmp1; -ERROR: table "tmp1" does not exist SELECT * INTO TABLE tmp1 FROM onek2 WHERE onek2.unique1 < 2; -ERROR: INTO clause not yet supported DROP TABLE tmp1; -ERROR: table "tmp1" does not exist +-- +-- CREATE TABLE AS/SELECT INTO as last command in a SQL function +-- have been known to cause problems +-- +CREATE FUNCTION make_table() RETURNS VOID +AS $$ + CREATE TABLE created_table AS SELECT * FROM int8_tbl; +$$ LANGUAGE SQL; +ERROR: In XC, SQL functions cannot contain utility statements +CONTEXT: SQL function "make_table" +SELECT make_table(); +ERROR: function make_table() does not exist +LINE 1: SELECT make_table(); + ^ +HINT: No function matches the given name and argument types. You might need to add explicit type casts. +SELECT * FROM created_table; +ERROR: relation "created_table" does not exist +LINE 1: SELECT * FROM created_table; + ^ +DROP TABLE created_table; +ERROR: table "created_table" does not exist diff --git a/src/test/regress/expected/select_views.out b/src/test/regress/expected/select_views.out index 6df0b67c5b..a957145c69 100644 --- a/src/test/regress/expected/select_views.out +++ b/src/test/regress/expected/select_views.out @@ -2,7 +2,7 @@ -- SELECT_VIEWS -- test the views defined in CREATE_VIEWS -- -SELECT * FROM street ORDER BY 1,3; +SELECT * FROM street ORDER BY name,cname,thepath::text; name | thepath | cname ------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- 100th Ave | [(-122.1657,37.429),(-122.1647,37.432)] | Oakland @@ -40,20 +40,19 @@ SELECT * FROM street ORDER BY 1,3; Avenue 140th | [(-122.1656,37.003),(-122.1691,37.988)] | Berkeley Avenue 140th | [(-122.1656,37.003),(-122.1691,37.988)] | Oakland Avenue D | [(-122.298,37.848),(-122.3024,37.849)] | Berkeley - B St | [(-122.1749,37.451),(-122.1743,37.443)] | Oakland - Bancroft Ave | [(-122.1643,37.523),(-122.1631,37.508),(-122.1621,37.493)] | Oakland Bancroft Ave | [(-122.15714,37.4242),(-122.156,37.409)] | Oakland - Birch St | [(-122.1673,37.509),(-122.1661,37.492)] | Oakland + Bancroft Ave | [(-122.1643,37.523),(-122.1631,37.508),(-122.1621,37.493)] | Oakland Birch St | [(-122.1617,37.425),(-122.1614,37.417)] | Oakland + Birch St | [(-122.1673,37.509),(-122.1661,37.492)] | Oakland Blacow Road | [(-122.0179,37.469),(-122.0167,37.465)] | Oakland Bridgepointe Dr | [(-122.0514,37.305),(-122.0509,37.299)] | Oakland Broadmore Ave | [(-122.095,37.522),(-122.0936,37.497)] | Oakland Broadway | [(-122.2409,37.586),(-122.2395,37.601)] | Berkeley + B St | [(-122.1749,37.451),(-122.1743,37.443)] | Oakland Buckingham Blvd | [(-122.2231,37.59),(-122.2214,37.606)] | Berkeley Butterfield Dr | [(-122.0838,37.002),(-122.0834,37.987)] | Berkeley Butterfield Dr | [(-122.0838,37.002),(-122.0834,37.987)] | Oakland Butterfield Dr | [(-122.0838,37.002),(-122.0834,37.987)] | Oakland - C St | [(-122.1768,37.46),(-122.1749,37.435)] | Oakland Calaveras Creek | [(-121.8203,37.035),(-121.8207,37.931)] | Oakland Calaveras Creek | [(-121.8203,37.035),(-121.8207,37.931)] | Oakland California St | [(-122.2032,37.005),(-122.2016,37.996)] | Berkeley @@ -87,9 +86,9 @@ SELECT * FROM street ORDER BY 1,3; Creston Road | [(-122.2639,37.002),(-122.2613,37.986),(-122.2602,37.978),(-122.2598,37.973)] | Lafayette Crow Canyon Creek | [(-122.043,37.905),(-122.0368,37.71)] | Berkeley Crystaline Dr | [(-121.925856,37),(-121.925869,37.00527)] | Oakland + C St | [(-122.1768,37.46),(-122.1749,37.435)] | Oakland Cull Canyon Road | [(-122.0536,37.435),(-122.0499,37.315)] | Oakland Cull Creek | [(-122.0624,37.875),(-122.0582,37.527)] | Berkeley - D St | [(-122.1811,37.505),(-122.1805,37.497)] | Oakland Decoto Road | [(-122.0159,37.006),(-122.016,37.002),(-122.0164,37.993)] | Berkeley Decoto Road | [(-122.0159,37.006),(-122.016,37.002),(-122.0164,37.993)] | Oakland Decoto Road | [(-122.0159,37.006),(-122.016,37.002),(-122.0164,37.993)] | Oakland @@ -100,13 +99,14 @@ SELECT * FROM street ORDER BY 1,3; Driftwood Dr | [(-122.0109,37.482),(-122.0113,37.477)] | Oakland Driscoll Road | [(-121.9482,37.403),(-121.948451,37.39995)] | Oakland Driscoll Road | [(-121.9482,37.403),(-121.948451,37.39995)] | Oakland - E St | [(-122.1832,37.505),(-122.1826,37.498),(-122.182,37.49)] | Oakland + D St | [(-122.1811,37.505),(-122.1805,37.497)] | Oakland Eden Ave | [(-122.1143,37.505),(-122.1142,37.491)] | Oakland Eden Creek | [(-122.022037,37.00675),(-122.0221,37.998)] | Berkeley Eden Creek | [(-122.022037,37.00675),(-122.0221,37.998)] | Oakland Eden Creek | [(-122.022037,37.00675),(-122.0221,37.998)] | Oakland Edgewater Dr | [(-122.201,37.379),(-122.2042,37.41)] | Lafayette Enos Way | [(-121.7677,37.896),(-121.7673,37.91)] | Oakland + E St | [(-122.1832,37.505),(-122.1826,37.498),(-122.182,37.49)] | Oakland Euclid Ave | [(-122.2671,37.009),(-122.2666,37.987)] | Berkeley Euclid Ave | [(-122.2671,37.009),(-122.2666,37.987)] | Lafayette Fairview Ave | [(-121.999,37.428),(-121.9863,37.351)] | Oakland @@ -129,60 +129,60 @@ SELECT * FROM street ORDER BY 1,3; I- 580 | [(-122.1543,37.703),(-122.1535,37.694),(-122.1512,37.655),(-122.1475,37.603),(-122.1468,37.583),(-122.1472,37.569),(-122.149044,37.54874),(-122.1493,37.546),(-122.1501,37.532),(-122.1506,37.509),(-122.1495,37.482),(-122.1487,37.467),(-122.1477,37.447),(-122.1414,37.383),(-122.1404,37.376),(-122.1398,37.372),(-122.139,37.356),(-122.1388,37.353),(-122.1385,37.34),(-122.1382,37.33),(-122.1378,37.316)] | Berkeley I- 580 | [(-122.2197,37.99),(-122.22,37.99),(-122.222092,37.99523),(-122.2232,37.998),(-122.224146,37.99963),(-122.2261,37.003),(-122.2278,37.007),(-122.2302,37.026),(-122.2323,37.043),(-122.2344,37.059),(-122.235405,37.06427),(-122.2365,37.07)] | Berkeley I- 580 | [(-122.2197,37.99),(-122.22,37.99),(-122.222092,37.99523),(-122.2232,37.998),(-122.224146,37.99963),(-122.2261,37.003),(-122.2278,37.007),(-122.2302,37.026),(-122.2323,37.043),(-122.2344,37.059),(-122.235405,37.06427),(-122.2365,37.07)] | Lafayette - I- 580 | [(-122.018,37.019),(-122.0009,37.032),(-121.9787,37.983),(-121.958,37.984),(-121.9571,37.986)] | Oakland + I- 580 | [(-121.727,37.074),(-121.7229,37.093),(-121.722301,37.09522),(-121.721001,37.10005),(-121.7194,37.106),(-121.7188,37.109),(-121.7168,37.12),(-121.7163,37.123),(-121.7145,37.127),(-121.7096,37.148),(-121.707731,37.1568),(-121.7058,37.166),(-121.7055,37.168),(-121.7044,37.174),(-121.7038,37.172),(-121.7037,37.172),(-121.7027,37.175),(-121.7001,37.181),(-121.6957,37.191),(-121.6948,37.192),(-121.6897,37.204),(-121.6697,37.185)] | Oakland I- 580 | [(-121.9322,37.989),(-121.9243,37.006),(-121.9217,37.014)] | Oakland I- 580 | [(-121.9322,37.989),(-121.9243,37.006),(-121.9217,37.014)] | Oakland - I- 580 | [(-121.727,37.074),(-121.7229,37.093),(-121.722301,37.09522),(-121.721001,37.10005),(-121.7194,37.106),(-121.7188,37.109),(-121.7168,37.12),(-121.7163,37.123),(-121.7145,37.127),(-121.7096,37.148),(-121.707731,37.1568),(-121.7058,37.166),(-121.7055,37.168),(-121.7044,37.174),(-121.7038,37.172),(-121.7037,37.172),(-121.7027,37.175),(-121.7001,37.181),(-121.6957,37.191),(-121.6948,37.192),(-121.6897,37.204),(-121.6697,37.185)] | Oakland + I- 580 | [(-122.018,37.019),(-122.0009,37.032),(-121.9787,37.983),(-121.958,37.984),(-121.9571,37.986)] | Oakland + I- 580 | [(-122.018,37.019),(-122.0009,37.032),(-121.9787,37.983),(-121.958,37.984),(-121.9571,37.986)] | Oakland I- 580 | [(-122.1108,37.023),(-122.1101,37.02),(-122.108103,37.00764),(-122.108,37.007),(-122.1069,37.998),(-122.1064,37.994),(-122.1053,37.982),(-122.1048,37.977),(-122.1032,37.958),(-122.1026,37.953),(-122.1013,37.938),(-122.0989,37.911),(-122.0984,37.91),(-122.098,37.908)] | Oakland I- 580 | [(-122.1543,37.703),(-122.1535,37.694),(-122.1512,37.655),(-122.1475,37.603),(-122.1468,37.583),(-122.1472,37.569),(-122.149044,37.54874),(-122.1493,37.546),(-122.1501,37.532),(-122.1506,37.509),(-122.1495,37.482),(-122.1487,37.467),(-122.1477,37.447),(-122.1414,37.383),(-122.1404,37.376),(-122.1398,37.372),(-122.139,37.356),(-122.1388,37.353),(-122.1385,37.34),(-122.1382,37.33),(-122.1378,37.316)] | Oakland - I- 580 | [(-122.018,37.019),(-122.0009,37.032),(-121.9787,37.983),(-121.958,37.984),(-121.9571,37.986)] | Oakland + I- 580/I-680 Ramp | ((-121.9207,37.988),(-121.9192,37.016)) | Oakland + I- 580/I-680 Ramp | ((-121.9207,37.988),(-121.9192,37.016)) | Oakland I- 580 Ramp | [(-122.093241,37.90351),(-122.09364,37.89634),(-122.093788,37.89212)] | Berkeley - I- 580 Ramp | [(-122.1086,37.003),(-122.1068,37.993),(-122.1066,37.992),(-122.1053,37.982)] | Berkeley I- 580 Ramp | [(-122.0934,37.896),(-122.09257,37.89961),(-122.0911,37.906)] | Berkeley I- 580 Ramp | [(-122.0941,37.897),(-122.0943,37.902)] | Berkeley I- 580 Ramp | [(-122.096,37.888),(-122.0962,37.891),(-122.0964,37.9)] | Berkeley I- 580 Ramp | [(-122.101,37.898),(-122.1005,37.902),(-122.0989,37.911)] | Berkeley + I- 580 Ramp | [(-122.1086,37.003),(-122.1068,37.993),(-122.1066,37.992),(-122.1053,37.982)] | Berkeley + I- 580 Ramp | [(-121.8521,37.011),(-121.8479,37.999),(-121.8476,37.999),(-121.8456,37.01),(-121.8455,37.011)] | Oakland + I- 580 Ramp | [(-121.8521,37.011),(-121.8479,37.999),(-121.8476,37.999),(-121.8456,37.01),(-121.8455,37.011)] | Oakland + I- 580 Ramp | [(-121.8743,37.014),(-121.8722,37.999),(-121.8714,37.999)] | Oakland + I- 580 Ramp | [(-121.8743,37.014),(-121.8722,37.999),(-121.8714,37.999)] | Oakland + I- 580 Ramp | [(-121.9043,37.998),(-121.9036,37.013),(-121.902632,37.0174),(-121.9025,37.018)] | Oakland + I- 580 Ramp | [(-121.9043,37.998),(-121.9036,37.013),(-121.902632,37.0174),(-121.9025,37.018)] | Oakland I- 580 Ramp | [(-121.9368,37.986),(-121.936483,37.98832),(-121.9353,37.997),(-121.93504,37.00035),(-121.9346,37.006),(-121.933764,37.00031),(-121.9333,37.997),(-121.9322,37.989)] | Oakland I- 580 Ramp | [(-121.9368,37.986),(-121.936483,37.98832),(-121.9353,37.997),(-121.93504,37.00035),(-121.9346,37.006),(-121.933764,37.00031),(-121.9333,37.997),(-121.9322,37.989)] | Oakland I- 580 Ramp | [(-122.1086,37.003),(-122.1068,37.993),(-122.1066,37.992),(-122.1053,37.982)] | Oakland I- 580 Ramp | [(-122.1414,37.383),(-122.1407,37.376),(-122.1403,37.372),(-122.139,37.356)] | Oakland - I- 580 Ramp | [(-121.9043,37.998),(-121.9036,37.013),(-121.902632,37.0174),(-121.9025,37.018)] | Oakland - I- 580 Ramp | [(-121.9043,37.998),(-121.9036,37.013),(-121.902632,37.0174),(-121.9025,37.018)] | Oakland - I- 580 Ramp | [(-121.8743,37.014),(-121.8722,37.999),(-121.8714,37.999)] | Oakland - I- 580 Ramp | [(-121.8743,37.014),(-121.8722,37.999),(-121.8714,37.999)] | Oakland - I- 580 Ramp | [(-121.8521,37.011),(-121.8479,37.999),(-121.8476,37.999),(-121.8456,37.01),(-121.8455,37.011)] | Oakland - I- 580 Ramp | [(-121.8521,37.011),(-121.8479,37.999),(-121.8476,37.999),(-121.8456,37.01),(-121.8455,37.011)] | Oakland - I- 580/I-680 Ramp | ((-121.9207,37.988),(-121.9192,37.016)) | Oakland - I- 580/I-680 Ramp | ((-121.9207,37.988),(-121.9192,37.016)) | Oakland - I- 680 | [(-121.9184,37.934),(-121.917,37.913),(-121.9122,37.83),(-121.9052,37.702)] | Oakland I- 680 | [(-121.9101,37.715),(-121.911269,37.74682),(-121.9119,37.764),(-121.9124,37.776),(-121.9174,37.905),(-121.9194,37.957),(-121.9207,37.988)] | Oakland + I- 680 | [(-121.9184,37.934),(-121.917,37.913),(-121.9122,37.83),(-121.9052,37.702)] | Oakland I- 680 | ((-121.939,37.15),(-121.9387,37.145),(-121.9373,37.125),(-121.934242,37.07643),(-121.933886,37.0709),(-121.9337,37.068),(-121.933122,37.06139),(-121.932736,37.05698),(-121.93222,37.05108),(-121.931844,37.04678),(-121.930113,37.027),(-121.926829,37),(-121.9265,37.998),(-121.9217,37.96),(-121.9203,37.949),(-121.9184,37.934)) | Oakland I- 680 | ((-121.939,37.15),(-121.9387,37.145),(-121.9373,37.125),(-121.934242,37.07643),(-121.933886,37.0709),(-121.9337,37.068),(-121.933122,37.06139),(-121.932736,37.05698),(-121.93222,37.05108),(-121.931844,37.04678),(-121.930113,37.027),(-121.926829,37),(-121.9265,37.998),(-121.9217,37.96),(-121.9203,37.949),(-121.9184,37.934)) | Oakland - I- 680 Ramp | [(-121.9238,37.402),(-121.9234,37.395),(-121.923,37.399)] | Oakland I- 680 Ramp | [(-121.8833,37.376),(-121.8833,37.392),(-121.883,37.4),(-121.8835,37.402),(-121.8852,37.422)] | Oakland I- 680 Ramp | [(-121.8833,37.376),(-121.8833,37.392),(-121.883,37.4),(-121.8835,37.402),(-121.8852,37.422)] | Oakland I- 680 Ramp | [(-121.92,37.438),(-121.9218,37.424),(-121.9238,37.408),(-121.9252,37.392)] | Oakland I- 680 Ramp | [(-121.92,37.438),(-121.9218,37.424),(-121.9238,37.408),(-121.9252,37.392)] | Oakland I- 680 Ramp | [(-121.9238,37.402),(-121.9234,37.395),(-121.923,37.399)] | Oakland - I- 80 | ((-122.2962,37.273),(-122.3004,37.264)) | Lafayette + I- 680 Ramp | [(-121.9238,37.402),(-121.9234,37.395),(-121.923,37.399)] | Oakland I- 80 | ((-122.2937,37.277),(-122.3016,37.262)) | Lafayette + I- 80 | ((-122.2962,37.273),(-122.3004,37.264)) | Lafayette I- 80 Ramp | [(-122.2962,37.413),(-122.2959,37.382),(-122.2951,37.372)] | Lafayette - I- 880 | [(-122.2214,37.711),(-122.2202,37.699),(-122.2199,37.695),(-122.219,37.682),(-122.2184,37.672),(-122.2173,37.652),(-122.2159,37.638),(-122.2144,37.616),(-122.2138,37.612),(-122.2135,37.609),(-122.212,37.592),(-122.2116,37.586),(-122.2111,37.581)] | Berkeley I- 880 | [(-122.0375,37.632),(-122.0359,37.619),(-122.0358,37.616),(-122.034514,37.60409),(-122.031876,37.57965),(-122.031193,37.57332),(-122.03016,37.56375),(-122.02943,37.55698),(-122.028689,37.54929),(-122.027833,37.53908),(-122.025979,37.51698),(-122.0238,37.491)] | Berkeley I- 880 | [(-122.0612,37.003),(-122.0604,37.991),(-122.0596,37.982),(-122.0585,37.967),(-122.0583,37.961),(-122.0553,37.918),(-122.053635,37.89475),(-122.050759,37.8546),(-122.05,37.844),(-122.0485,37.817),(-122.0483,37.813),(-122.0482,37.811)] | Berkeley I- 880 | [(-122.1365,37.902),(-122.1358,37.898),(-122.1333,37.881),(-122.1323,37.874),(-122.1311,37.866),(-122.1308,37.865),(-122.1307,37.864),(-122.1289,37.851),(-122.1277,37.843),(-122.1264,37.834),(-122.1231,37.812),(-122.1165,37.766),(-122.1104,37.72),(-122.109695,37.71094),(-122.109,37.702),(-122.108312,37.69168),(-122.1076,37.681)] | Berkeley - I- 880 | [(-122.2707,37.975),(-122.2693,37.972),(-122.2681,37.966),(-122.267,37.962),(-122.2659,37.957),(-122.2648,37.952),(-122.2636,37.946),(-122.2625,37.935),(-122.2617,37.927),(-122.2607,37.921),(-122.2593,37.916),(-122.258,37.911),(-122.2536,37.898),(-122.2432,37.858),(-122.2408,37.845),(-122.2386,37.827),(-122.2374,37.811)] | Berkeley I- 880 | [(-122.1755,37.185),(-122.1747,37.178),(-122.1742,37.173),(-122.1692,37.126),(-122.167792,37.11594),(-122.16757,37.11435),(-122.1671,37.111),(-122.1655,37.1),(-122.165169,37.09811),(-122.1641,37.092),(-122.1596,37.061),(-122.158381,37.05275),(-122.155991,37.03657),(-122.1531,37.017),(-122.1478,37.98),(-122.1407,37.932),(-122.1394,37.924),(-122.1389,37.92),(-122.1376,37.91)] | Berkeley - I- 880 | [(-122.0978,37.528),(-122.096,37.496),(-122.0931,37.453),(-122.09277,37.4496),(-122.090189,37.41442),(-122.0896,37.405),(-122.085,37.34)] | Oakland + I- 880 | [(-122.2214,37.711),(-122.2202,37.699),(-122.2199,37.695),(-122.219,37.682),(-122.2184,37.672),(-122.2173,37.652),(-122.2159,37.638),(-122.2144,37.616),(-122.2138,37.612),(-122.2135,37.609),(-122.212,37.592),(-122.2116,37.586),(-122.2111,37.581)] | Berkeley + I- 880 | [(-122.2707,37.975),(-122.2693,37.972),(-122.2681,37.966),(-122.267,37.962),(-122.2659,37.957),(-122.2648,37.952),(-122.2636,37.946),(-122.2625,37.935),(-122.2617,37.927),(-122.2607,37.921),(-122.2593,37.916),(-122.258,37.911),(-122.2536,37.898),(-122.2432,37.858),(-122.2408,37.845),(-122.2386,37.827),(-122.2374,37.811)] | Berkeley I- 880 | [(-121.948,37.933),(-121.9471,37.925),(-121.9467,37.923),(-121.946,37.918),(-121.9452,37.912),(-121.937,37.852)] | Oakland I- 880 | ((-121.9669,37.075),(-121.9663,37.071),(-121.9656,37.065),(-121.9618,37.037),(-121.95689,37),(-121.948,37.933)) | Oakland I- 880 | ((-121.9669,37.075),(-121.9663,37.071),(-121.9656,37.065),(-121.9618,37.037),(-121.95689,37),(-121.948,37.933)) | Oakland - I- 880 | [(-122.1755,37.185),(-122.1747,37.178),(-122.1742,37.173),(-122.1692,37.126),(-122.167792,37.11594),(-122.16757,37.11435),(-122.1671,37.111),(-122.1655,37.1),(-122.165169,37.09811),(-122.1641,37.092),(-122.1596,37.061),(-122.158381,37.05275),(-122.155991,37.03657),(-122.1531,37.017),(-122.1478,37.98),(-122.1407,37.932),(-122.1394,37.924),(-122.1389,37.92),(-122.1376,37.91)] | Oakland - I- 880 | [(-122.0831,37.312),(-122.0819,37.296),(-122.081,37.285),(-122.0786,37.248),(-122.078,37.24),(-122.077642,37.23496),(-122.076983,37.22567),(-122.076599,37.22026),(-122.076229,37.21505),(-122.0758,37.209)] | Oakland + I- 880 | [(-122.0219,37.466),(-122.0205,37.447),(-122.020331,37.44447),(-122.020008,37.43962),(-122.0195,37.432),(-122.0193,37.429),(-122.0164,37.393),(-122.010219,37.34771),(-122.0041,37.313)] | Oakland + I- 880 | [(-122.0375,37.632),(-122.0359,37.619),(-122.0358,37.616),(-122.034514,37.60409),(-122.031876,37.57965),(-122.031193,37.57332),(-122.03016,37.56375),(-122.02943,37.55698),(-122.028689,37.54929),(-122.027833,37.53908),(-122.025979,37.51698),(-122.0238,37.491)] | Oakland I- 880 | [(-122.0612,37.003),(-122.0604,37.991),(-122.0596,37.982),(-122.0585,37.967),(-122.0583,37.961),(-122.0553,37.918),(-122.053635,37.89475),(-122.050759,37.8546),(-122.05,37.844),(-122.0485,37.817),(-122.0483,37.813),(-122.0482,37.811)] | Oakland I- 880 | [(-122.0612,37.003),(-122.0604,37.991),(-122.0596,37.982),(-122.0585,37.967),(-122.0583,37.961),(-122.0553,37.918),(-122.053635,37.89475),(-122.050759,37.8546),(-122.05,37.844),(-122.0485,37.817),(-122.0483,37.813),(-122.0482,37.811)] | Oakland - I- 880 | [(-122.0375,37.632),(-122.0359,37.619),(-122.0358,37.616),(-122.034514,37.60409),(-122.031876,37.57965),(-122.031193,37.57332),(-122.03016,37.56375),(-122.02943,37.55698),(-122.028689,37.54929),(-122.027833,37.53908),(-122.025979,37.51698),(-122.0238,37.491)] | Oakland - I- 880 | [(-122.0219,37.466),(-122.0205,37.447),(-122.020331,37.44447),(-122.020008,37.43962),(-122.0195,37.432),(-122.0193,37.429),(-122.0164,37.393),(-122.010219,37.34771),(-122.0041,37.313)] | Oakland + I- 880 | [(-122.0831,37.312),(-122.0819,37.296),(-122.081,37.285),(-122.0786,37.248),(-122.078,37.24),(-122.077642,37.23496),(-122.076983,37.22567),(-122.076599,37.22026),(-122.076229,37.21505),(-122.0758,37.209)] | Oakland + I- 880 | [(-122.0978,37.528),(-122.096,37.496),(-122.0931,37.453),(-122.09277,37.4496),(-122.090189,37.41442),(-122.0896,37.405),(-122.085,37.34)] | Oakland + I- 880 | [(-122.1755,37.185),(-122.1747,37.178),(-122.1742,37.173),(-122.1692,37.126),(-122.167792,37.11594),(-122.16757,37.11435),(-122.1671,37.111),(-122.1655,37.1),(-122.165169,37.09811),(-122.1641,37.092),(-122.1596,37.061),(-122.158381,37.05275),(-122.155991,37.03657),(-122.1531,37.017),(-122.1478,37.98),(-122.1407,37.932),(-122.1394,37.924),(-122.1389,37.92),(-122.1376,37.91)] | Oakland I- 880 Ramp | [(-122.059,37.982),(-122.0577,37.984),(-122.0612,37.003)] | Berkeley I- 880 Ramp | [(-122.0618,37.011),(-122.0631,37.982),(-122.0585,37.967)] | Berkeley I- 880 Ramp | [(-122.1029,37.61),(-122.1013,37.587),(-122.0999,37.569)] | Berkeley @@ -190,8 +190,8 @@ SELECT * FROM street ORDER BY 1,3; I- 880 Ramp | [(-122.1379,37.931),(-122.137597,37.92736),(-122.1374,37.925),(-122.1373,37.924),(-122.1369,37.914),(-122.1358,37.905),(-122.1365,37.908),(-122.1358,37.898)] | Berkeley I- 880 Ramp | [(-122.2536,37.898),(-122.254,37.902)] | Berkeley I- 880 Ramp | [(-122.2771,37.002),(-122.278,37)] | Lafayette - I- 880 Ramp | [(-122.0041,37.313),(-122.0018,37.315),(-122.0007,37.315),(-122.0005,37.313),(-122.0002,37.308),(-121.9995,37.289)] | Oakland I- 880 Ramp | [(-122.0019,37.301),(-122.002,37.293)] | Oakland + I- 880 Ramp | [(-122.0041,37.313),(-122.0018,37.315),(-122.0007,37.315),(-122.0005,37.313),(-122.0002,37.308),(-121.9995,37.289)] | Oakland I- 880 Ramp | [(-122.0041,37.313),(-122.0038,37.308),(-122.0039,37.284),(-122.0013,37.287),(-121.9995,37.289)] | Oakland I- 880 Ramp | [(-122.0236,37.488),(-122.0231,37.458),(-122.0227,37.458),(-122.0223,37.452),(-122.0205,37.447)] | Oakland I- 880 Ramp | [(-122.0238,37.491),(-122.0215,37.483),(-122.0211,37.477),(-122.0205,37.447)] | Oakland @@ -211,12 +211,12 @@ SELECT * FROM street ORDER BY 1,3; Kaiser Dr | [(-122.067163,37.47821),(-122.060402,37.51961)] | Oakland Keeler Ave | [(-122.2578,37.906),(-122.2579,37.899)] | Berkeley Kildare Road | [(-122.0968,37.016),(-122.0959,37)] | Oakland - La Playa Dr | [(-122.1039,37.545),(-122.101,37.493)] | Oakland Laguna Ave | [(-122.2099,37.989),(-122.2089,37)] | Berkeley Laguna Ave | [(-122.2099,37.989),(-122.2089,37)] | Lafayette Lakehurst Cir | [(-122.284729,37.89025),(-122.286096,37.90364)] | Berkeley Lakeshore Ave | [(-122.2586,37.99),(-122.2556,37.006)] | Berkeley Lakeshore Ave | [(-122.2586,37.99),(-122.2556,37.006)] | Lafayette + La Playa Dr | [(-122.1039,37.545),(-122.101,37.493)] | Oakland Las Positas Road | [(-121.764488,37.99199),(-121.75569,37.02022)] | Oakland Las Positas Road | [(-121.764488,37.99199),(-121.75569,37.02022)] | Oakland Linden St | [(-122.2867,37.998),(-122.2864,37.008)] | Berkeley @@ -242,9 +242,9 @@ SELECT * FROM street ORDER BY 1,3; Miller Road | [(-122.0902,37.645),(-122.0865,37.545)] | Berkeley Miramar Ave | [(-122.1009,37.025),(-122.099089,37.03209)] | Oakland Mission Blvd | [(-122.0006,37.896),(-121.9989,37.88)] | Berkeley - Mission Blvd | [(-122.0006,37.896),(-121.9989,37.88)] | Oakland Mission Blvd | [(-121.918886,37),(-121.9194,37.976),(-121.9198,37.975)] | Oakland Mission Blvd | [(-121.918886,37),(-121.9194,37.976),(-121.9198,37.975)] | Oakland + Mission Blvd | [(-122.0006,37.896),(-121.9989,37.88)] | Oakland Moores Ave | [(-122.0087,37.301),(-122.0094,37.292)] | Oakland National Ave | [(-122.1192,37.5),(-122.1281,37.489)] | Oakland Navajo Ct | [(-121.8779,37.901),(-121.8783,37.9)] | Oakland @@ -289,16 +289,16 @@ SELECT * FROM street ORDER BY 1,3; Skyline Dr | [(-122.0277,37.5),(-122.0284,37.498)] | Oakland Skywest Dr | [(-122.1161,37.62),(-122.1123,37.586)] | Berkeley Southern Pacific Railroad | [(-122.3002,37.674),(-122.2999,37.661)] | Berkeley + Sp Railroad | [(-122.0734,37.001),(-122.0734,37.997)] | Berkeley Sp Railroad | [(-122.0914,37.601),(-122.087,37.56),(-122.086408,37.5551)] | Berkeley Sp Railroad | [(-122.137792,37.003),(-122.1365,37.992),(-122.131257,37.94612)] | Berkeley - Sp Railroad | [(-122.0734,37.001),(-122.0734,37.997)] | Berkeley + Sp Railroad | [(-121.893564,37.99009),(-121.897,37.016)] | Oakland + Sp Railroad | [(-121.893564,37.99009),(-121.897,37.016)] | Oakland + Sp Railroad | [(-121.9565,37.898),(-121.9562,37.9)] | Oakland Sp Railroad | [(-122.0734,37.001),(-122.0734,37.997)] | Oakland Sp Railroad | [(-122.0734,37.001),(-122.0734,37.997)] | Oakland Sp Railroad | [(-122.137792,37.003),(-122.1365,37.992),(-122.131257,37.94612)] | Oakland Sp Railroad | [(-122.1947,37.497),(-122.193328,37.4848)] | Oakland - Sp Railroad | [(-121.893564,37.99009),(-121.897,37.016)] | Oakland - Sp Railroad | [(-121.893564,37.99009),(-121.897,37.016)] | Oakland - Sp Railroad | [(-121.9565,37.898),(-121.9562,37.9)] | Oakland Stanton Ave | [(-122.100392,37.0697),(-122.099513,37.06052)] | Oakland State Hwy 123 | [(-122.3004,37.986),(-122.2998,37.969),(-122.2995,37.962),(-122.2992,37.952),(-122.299,37.942),(-122.2987,37.935),(-122.2984,37.924),(-122.2982,37.92),(-122.2976,37.904),(-122.297,37.88),(-122.2966,37.869),(-122.2959,37.848),(-122.2961,37.843)] | Berkeley State Hwy 13 | [(-122.1797,37.943),(-122.179871,37.91849),(-122.18,37.9),(-122.179023,37.86615),(-122.1787,37.862),(-122.1781,37.851),(-122.1777,37.845),(-122.1773,37.839),(-122.177,37.833)] | Berkeley @@ -328,10 +328,10 @@ SELECT * FROM street ORDER BY 1,3; Warm Springs Blvd | [(-121.933956,37),(-121.9343,37.97)] | Oakland Welch Creek Road | [(-121.7695,37.386),(-121.7737,37.413)] | Oakland Welch Creek Road | [(-121.7695,37.386),(-121.7737,37.413)] | Oakland - West Loop Road | [(-122.0576,37.604),(-122.0602,37.586)] | Berkeley Western Pacific Railroad Spur | [(-122.0394,37.018),(-122.0394,37.961)] | Berkeley Western Pacific Railroad Spur | [(-122.0394,37.018),(-122.0394,37.961)] | Oakland Western Pacific Railroad Spur | [(-122.0394,37.018),(-122.0394,37.961)] | Oakland + West Loop Road | [(-122.0576,37.604),(-122.0602,37.586)] | Berkeley Whitlock Creek | [(-121.74683,37.91276),(-121.733107,37)] | Oakland Whitlock Creek | [(-121.74683,37.91276),(-121.733107,37)] | Oakland Willimet Way | [(-122.0964,37.517),(-122.0949,37.493)] | Oakland @@ -341,905 +341,9 @@ SELECT * FROM street ORDER BY 1,3; (333 rows) SELECT name, #thepath FROM iexit ORDER BY 1, 2; - name | ?column? -------------------------------------+---------- - I- 580 | 2 - I- 580 | 2 - I- 580 | 2 - I- 580 | 2 - I- 580 | 2 - I- 580 | 2 - I- 580 | 2 - I- 580 | 2 - I- 580 | 2 - I- 580 | 2 - I- 580 | 2 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 3 - I- 580 | 4 - I- 580 | 4 - I- 580 | 4 - I- 580 | 4 - I- 580 | 5 - I- 580 | 5 - I- 580 | 5 - I- 580 | 5 - I- 580 | 5 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 6 - I- 580 | 7 - I- 580 | 7 - I- 580 | 7 - I- 580 | 7 - I- 580 | 7 - I- 580 | 7 - I- 580 | 7 - I- 580 | 8 - I- 580 | 8 - I- 580 | 8 - I- 580 | 8 - I- 580 | 8 - I- 580 | 8 - I- 580 | 8 - I- 580 | 8 - I- 580 | 8 - I- 580 | 9 - I- 580 | 9 - I- 580 | 9 - I- 580 | 9 - I- 580 | 9 - I- 580 | 12 - I- 580 | 12 - I- 580 | 12 - I- 580 | 12 - I- 580 | 12 - I- 580 | 12 - I- 580 | 12 - I- 580 | 12 - I- 580 | 12 - I- 580 | 12 - I- 580 | 13 - I- 580 | 13 - I- 580 | 13 - I- 580 | 13 - I- 580 | 13 - I- 580 | 13 - I- 580 | 14 - I- 580 | 14 - I- 580 | 14 - I- 580 | 14 - I- 580 | 14 - I- 580 | 14 - I- 580 | 14 - I- 580 | 14 - I- 580 | 18 - I- 580 | 18 - I- 580 | 18 - I- 580 | 18 - I- 580 | 18 - I- 580 | 18 - I- 580 | 21 - I- 580 | 21 - I- 580 | 21 - I- 580 | 21 - I- 580 | 21 - I- 580 | 21 - I- 580 | 21 - I- 580 | 21 - I- 580 | 21 - I- 580 | 21 - I- 580 | 22 - I- 580 | 22 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 2 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 3 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 4 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 5 - I- 580 Ramp | 6 - I- 580 Ramp | 6 - I- 580 Ramp | 6 - I- 580 Ramp | 7 - I- 580 Ramp | 8 - I- 580 Ramp | 8 - I- 580 Ramp | 8 - I- 580 Ramp | 8 - I- 580 Ramp | 8 - I- 580 Ramp | 8 - I- 580/I-680 Ramp | 2 - I- 580/I-680 Ramp | 2 - I- 580/I-680 Ramp | 2 - I- 580/I-680 Ramp | 2 - I- 580/I-680 Ramp | 2 - I- 580/I-680 Ramp | 2 - I- 580/I-680 Ramp | 4 - I- 580/I-680 Ramp | 4 - I- 580/I-680 Ramp | 4 - I- 580/I-680 Ramp | 4 - I- 580/I-680 Ramp | 5 - I- 580/I-680 Ramp | 6 - I- 580/I-680 Ramp | 6 - I- 580/I-680 Ramp | 6 - I- 680 | 2 - I- 680 | 2 - I- 680 | 2 - I- 680 | 2 - I- 680 | 2 - I- 680 | 2 - I- 680 | 2 - I- 680 | 3 - I- 680 | 3 - I- 680 | 3 - I- 680 | 4 - I- 680 | 4 - I- 680 | 4 - I- 680 | 5 - I- 680 | 5 - I- 680 | 5 - I- 680 | 7 - I- 680 | 7 - I- 680 | 7 - I- 680 | 7 - I- 680 | 8 - I- 680 | 8 - I- 680 | 8 - I- 680 | 8 - I- 680 | 10 - I- 680 | 10 - I- 680 | 10 - I- 680 | 10 - I- 680 | 10 - I- 680 | 10 - I- 680 | 10 - I- 680 | 16 - I- 680 | 16 - I- 680 | 16 - I- 680 | 16 - I- 680 | 16 - I- 680 | 16 - I- 680 | 16 - I- 680 | 16 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 2 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 3 - I- 680 Ramp | 4 - I- 680 Ramp | 4 - I- 680 Ramp | 4 - I- 680 Ramp | 5 - I- 680 Ramp | 5 - I- 680 Ramp | 5 - I- 680 Ramp | 5 - I- 680 Ramp | 5 - I- 680 Ramp | 5 - I- 680 Ramp | 6 - I- 680 Ramp | 6 - I- 680 Ramp | 6 - I- 680 Ramp | 6 - I- 680 Ramp | 7 - I- 680 Ramp | 7 - I- 680 Ramp | 7 - I- 680 Ramp | 7 - I- 680 Ramp | 8 - I- 680 Ramp | 8 - I- 680 Ramp | 8 - I- 680 Ramp | 8 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 2 - I- 80 | 3 - I- 80 | 3 - I- 80 | 3 - I- 80 | 4 - I- 80 | 4 - I- 80 | 4 - I- 80 | 4 - I- 80 | 4 - I- 80 | 5 - I- 80 | 5 - I- 80 | 5 - I- 80 | 5 - I- 80 | 5 - I- 80 | 5 - I- 80 | 5 - I- 80 | 5 - I- 80 | 5 - I- 80 | 11 - I- 80 | 11 - I- 80 | 11 - I- 80 | 11 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 2 - I- 80 Ramp | 3 - I- 80 Ramp | 3 - I- 80 Ramp | 3 - I- 80 Ramp | 3 - I- 80 Ramp | 3 - I- 80 Ramp | 3 - I- 80 Ramp | 3 - I- 80 Ramp | 3 - I- 80 Ramp | 3 - I- 80 Ramp | 4 - I- 80 Ramp | 4 - I- 80 Ramp | 4 - I- 80 Ramp | 4 - I- 80 Ramp | 5 - I- 80 Ramp | 5 - I- 80 Ramp | 5 - I- 80 Ramp | 5 - I- 80 Ramp | 5 - I- 80 Ramp | 5 - I- 80 Ramp | 5 - I- 80 Ramp | 7 - I- 80 Ramp | 7 - I- 80 Ramp | 7 - I- 80 Ramp | 7 - I- 880 | 2 - I- 880 | 2 - I- 880 | 2 - I- 880 | 2 - I- 880 | 2 - I- 880 | 5 - I- 880 | 5 - I- 880 | 5 - I- 880 | 5 - I- 880 | 5 - I- 880 | 5 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 6 - I- 880 | 7 - I- 880 | 7 - I- 880 | 7 - I- 880 | 7 - I- 880 | 7 - I- 880 | 7 - I- 880 | 7 - I- 880 | 9 - I- 880 | 9 - I- 880 | 9 - I- 880 | 9 - I- 880 | 9 - I- 880 | 9 - I- 880 | 9 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 10 - I- 880 | 12 - I- 880 | 12 - I- 880 | 12 - I- 880 | 12 - I- 880 | 12 - I- 880 | 12 - I- 880 | 12 - I- 880 | 12 - I- 880 | 12 - I- 880 | 12 - I- 880 | 12 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 13 - I- 880 | 14 - I- 880 | 14 - I- 880 | 14 - I- 880 | 14 - I- 880 | 14 - I- 880 | 14 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 17 - I- 880 | 19 - I- 880 | 19 - I- 880 | 19 - I- 880 | 19 - I- 880 | 19 - I- 880 | 19 - I- 880 | 19 - I- 880 | 19 - I- 880 | 19 - I- 880 | 19 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 2 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 3 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 4 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 5 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 6 - I- 880 Ramp | 8 - I- 880 Ramp | 8 - I- 880 Ramp | 8 - I- 980 | 2 - I- 980 | 2 - I- 980 | 2 - I- 980 | 2 - I- 980 | 2 - I- 980 | 2 - I- 980 | 2 - I- 980 | 2 - I- 980 | 3 - I- 980 | 3 - I- 980 | 3 - I- 980 | 3 - I- 980 | 3 - I- 980 | 3 - I- 980 | 3 - I- 980 | 3 - I- 980 | 3 - I- 980 | 4 - I- 980 | 4 - I- 980 | 5 - I- 980 | 5 - I- 980 | 7 - I- 980 | 7 - I- 980 | 7 - I- 980 | 7 - I- 980 | 12 - I- 980 Ramp | 3 - I- 980 Ramp | 3 - I- 980 Ramp | 3 - I- 980 Ramp | 7 -(896 rows) + name | ?column? +------+---------- +(0 rows) SELECT * FROM toyemp WHERE name = 'sharon'; name | age | location | annualsal diff --git a/src/test/regress/expected/select_views_2.out b/src/test/regress/expected/select_views_2.out new file mode 100644 index 0000000000..b3f54f821d --- /dev/null +++ b/src/test/regress/expected/select_views_2.out @@ -0,0 +1,353 @@ +-- +-- SELECT_VIEWS +-- test the views defined in CREATE_VIEWS +-- +SELECT * FROM street ORDER BY name,cname,thepath::text; + name | thepath | cname +------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------- + 100th Ave | [(-122.1657,37.429),(-122.1647,37.432)] | Oakland + 107th Ave | [(-122.1555,37.403),(-122.1531,37.41)] | Oakland + 14th St | [(-122.299,37.147),(-122.3,37.148)] | Lafayette + 19th Ave | [(-122.2366,37.897),(-122.2359,37.905)] | Berkeley + 1st St | [(-121.75508,37.89294),(-121.753581,37.90031)] | Oakland + 5th St | [(-122.296,37.615),(-122.2953,37.598)] | Berkeley + 5th St | [(-122.278,37),(-122.2792,37.005),(-122.2803,37.009)] | Lafayette + 82nd Ave | [(-122.1695,37.596),(-122.1681,37.603)] | Berkeley + 85th Ave | [(-122.1877,37.466),(-122.186,37.476)] | Oakland + 89th Ave | [(-122.1822,37.459),(-122.1803,37.471)] | Oakland + 98th Ave | [(-122.2001,37.258),(-122.1974,37.27)] | Lafayette + 98th Ave | [(-122.1568,37.498),(-122.1558,37.502)] | Oakland + 98th Ave | [(-122.1693,37.438),(-122.1682,37.444)] | Oakland + Access Rd 25 | [(-121.9283,37.894),(-121.9283,37.9)] | Oakland + Ada St | [(-122.2487,37.398),(-122.2496,37.401)] | Lafayette + Agua Fria Creek | [(-121.9254,37.922),(-121.9281,37.889)] | Oakland + Allen Ct | [(-122.0131,37.602),(-122.0117,37.597)] | Berkeley + Alvarado Niles Road | [(-122.0325,37.903),(-122.0316,37.9)] | Berkeley + Andrea Cir | [(-121.733218,37.88641),(-121.733286,37.90617)] | Oakland + Apricot Lane | [(-121.9471,37.401),(-121.9456,37.392)] | Oakland + Apricot Lane | [(-121.9471,37.401),(-121.9456,37.392)] | Oakland + Arden Road | [(-122.0978,37.177),(-122.1,37.177)] | Oakland + Arizona St | [(-122.0381,37.901),(-122.0367,37.898)] | Berkeley + Arlington Dr | [(-121.8802,37.408),(-121.8807,37.394)] | Oakland + Arlington Dr | [(-121.8802,37.408),(-121.8807,37.394)] | Oakland + Arlington Road | [(-121.7957,37.898),(-121.7956,37.906)] | Oakland + Arroyo Las Positas | [(-121.7973,37.997),(-121.7957,37.005)] | Oakland + Arroyo Las Positas | [(-121.7973,37.997),(-121.7957,37.005)] | Oakland + Arroyo Seco | [(-121.7073,37.766),(-121.6997,37.729)] | Oakland + Ash St | [(-122.0408,37.31),(-122.04,37.292)] | Oakland + Avenue 134th | [(-122.1823,37.002),(-122.1851,37.992)] | Berkeley + Avenue 134th | [(-122.1823,37.002),(-122.1851,37.992)] | Oakland + Avenue 140th | [(-122.1656,37.003),(-122.1691,37.988)] | Berkeley + Avenue 140th | [(-122.1656,37.003),(-122.1691,37.988)] | Oakland + Avenue D | [(-122.298,37.848),(-122.3024,37.849)] | Berkeley + B St | [(-122.1749,37.451),(-122.1743,37.443)] | Oakland + Bancroft Ave | [(-122.15714,37.4242),(-122.156,37.409)] | Oakland + Bancroft Ave | [(-122.1643,37.523),(-122.1631,37.508),(-122.1621,37.493)] | Oakland + Birch St | [(-122.1617,37.425),(-122.1614,37.417)] | Oakland + Birch St | [(-122.1673,37.509),(-122.1661,37.492)] | Oakland + Blacow Road | [(-122.0179,37.469),(-122.0167,37.465)] | Oakland + Bridgepointe Dr | [(-122.0514,37.305),(-122.0509,37.299)] | Oakland + Broadmore Ave | [(-122.095,37.522),(-122.0936,37.497)] | Oakland + Broadway | [(-122.2409,37.586),(-122.2395,37.601)] | Berkeley + Buckingham Blvd | [(-122.2231,37.59),(-122.2214,37.606)] | Berkeley + Butterfield Dr | [(-122.0838,37.002),(-122.0834,37.987)] | Berkeley + Butterfield Dr | [(-122.0838,37.002),(-122.0834,37.987)] | Oakland + Butterfield Dr | [(-122.0838,37.002),(-122.0834,37.987)] | Oakland + C St | [(-122.1768,37.46),(-122.1749,37.435)] | Oakland + Calaveras Creek | [(-121.8203,37.035),(-121.8207,37.931)] | Oakland + Calaveras Creek | [(-121.8203,37.035),(-121.8207,37.931)] | Oakland + California St | [(-122.2032,37.005),(-122.2016,37.996)] | Berkeley + California St | [(-122.2032,37.005),(-122.2016,37.996)] | Lafayette + Cameron Ave | [(-122.1316,37.502),(-122.1327,37.481)] | Oakland + Campus Dr | [(-122.1704,37.905),(-122.1678,37.868),(-122.1671,37.865)] | Berkeley + Capricorn Ave | [(-122.2176,37.404),(-122.2164,37.384)] | Lafayette + Carson St | [(-122.1846,37.9),(-122.1843,37.901)] | Berkeley + Cedar Blvd | [(-122.0282,37.446),(-122.0265,37.43)] | Oakland + Cedar St | [(-122.3011,37.737),(-122.2999,37.739)] | Berkeley + Celia St | [(-122.0611,37.3),(-122.0616,37.299)] | Oakland + Central Ave | [(-122.2343,37.602),(-122.2331,37.595)] | Berkeley + Chambers Dr | [(-122.2004,37.352),(-122.1972,37.368)] | Lafayette + Chambers Lane | [(-122.2001,37.359),(-122.1975,37.371)] | Lafayette + Champion St | [(-122.214,37.991),(-122.2147,37.002)] | Berkeley + Champion St | [(-122.214,37.991),(-122.2147,37.002)] | Lafayette + Chapman Dr | [(-122.0421,37.504),(-122.0414,37.498)] | Oakland + Charles St | [(-122.0255,37.505),(-122.0252,37.499)] | Oakland + Cherry St | [(-122.0437,37.42),(-122.0434,37.413)] | Oakland + Claremont Pl | [(-122.0542,37.995),(-122.0542,37.008)] | Berkeley + Claremont Pl | [(-122.0542,37.995),(-122.0542,37.008)] | Oakland + Claremont Pl | [(-122.0542,37.995),(-122.0542,37.008)] | Oakland + Coliseum Way | [(-122.2113,37.626),(-122.2085,37.592),(-122.2063,37.568)] | Berkeley + Coliseum Way | [(-122.2001,37.47),(-122.1978,37.516)] | Oakland + Coolidge Ave | [(-122.2007,37.058),(-122.1992,37.06)] | Lafayette + Cornell Ave | [(-122.2956,37.925),(-122.2949,37.906),(-122.2939,37.875)] | Berkeley + Corriea Way | [(-121.9501,37.402),(-121.9505,37.398)] | Oakland + Corriea Way | [(-121.9501,37.402),(-121.9505,37.398)] | Oakland + Cowing Road | [(-122.0002,37.934),(-121.9772,37.782)] | Oakland + Creston Road | [(-122.2639,37.002),(-122.2613,37.986),(-122.2602,37.978),(-122.2598,37.973)] | Berkeley + Creston Road | [(-122.2639,37.002),(-122.2613,37.986),(-122.2602,37.978),(-122.2598,37.973)] | Lafayette + Crow Canyon Creek | [(-122.043,37.905),(-122.0368,37.71)] | Berkeley + Crystaline Dr | [(-121.925856,37),(-121.925869,37.00527)] | Oakland + Cull Canyon Road | [(-122.0536,37.435),(-122.0499,37.315)] | Oakland + Cull Creek | [(-122.0624,37.875),(-122.0582,37.527)] | Berkeley + D St | [(-122.1811,37.505),(-122.1805,37.497)] | Oakland + Decoto Road | [(-122.0159,37.006),(-122.016,37.002),(-122.0164,37.993)] | Berkeley + Decoto Road | [(-122.0159,37.006),(-122.016,37.002),(-122.0164,37.993)] | Oakland + Decoto Road | [(-122.0159,37.006),(-122.016,37.002),(-122.0164,37.993)] | Oakland + Deering St | [(-122.2146,37.904),(-122.2126,37.897)] | Berkeley + Dimond Ave | [(-122.2167,37.994),(-122.2162,37.006)] | Berkeley + Dimond Ave | [(-122.2167,37.994),(-122.2162,37.006)] | Lafayette + Donna Way | [(-122.1333,37.606),(-122.1316,37.599)] | Berkeley + Driftwood Dr | [(-122.0109,37.482),(-122.0113,37.477)] | Oakland + Driscoll Road | [(-121.9482,37.403),(-121.948451,37.39995)] | Oakland + Driscoll Road | [(-121.9482,37.403),(-121.948451,37.39995)] | Oakland + E St | [(-122.1832,37.505),(-122.1826,37.498),(-122.182,37.49)] | Oakland + Eden Ave | [(-122.1143,37.505),(-122.1142,37.491)] | Oakland + Eden Creek | [(-122.022037,37.00675),(-122.0221,37.998)] | Berkeley + Eden Creek | [(-122.022037,37.00675),(-122.0221,37.998)] | Oakland + Eden Creek | [(-122.022037,37.00675),(-122.0221,37.998)] | Oakland + Edgewater Dr | [(-122.201,37.379),(-122.2042,37.41)] | Lafayette + Enos Way | [(-121.7677,37.896),(-121.7673,37.91)] | Oakland + Euclid Ave | [(-122.2671,37.009),(-122.2666,37.987)] | Berkeley + Euclid Ave | [(-122.2671,37.009),(-122.2666,37.987)] | Lafayette + Fairview Ave | [(-121.999,37.428),(-121.9863,37.351)] | Oakland + Fairview Ave | [(-121.999,37.428),(-121.9863,37.351)] | Oakland + Foothill Blvd | [(-122.2414,37.9),(-122.2403,37.893)] | Berkeley + Fountain St | [(-122.2306,37.593),(-122.2293,37.605)] | Berkeley + Gading Road | [(-122.0801,37.343),(-122.08,37.336)] | Oakland + Grizzly Peak Blvd | [(-122.2213,37.638),(-122.2127,37.581)] | Berkeley + Grove Way | [(-122.0643,37.884),(-122.062679,37.89162),(-122.061796,37.89578),(-122.0609,37.9)] | Berkeley + Harris Road | [(-122.0659,37.372),(-122.0675,37.363)] | Oakland + Heartwood Dr | [(-122.2006,37.341),(-122.1992,37.338)] | Lafayette + Hegenberger Exwy | [(-122.1946,37.52),(-122.1947,37.497)] | Oakland + Herrier St | [(-122.1943,37.006),(-122.1936,37.998)] | Berkeley + Herrier St | [(-122.1943,37.006),(-122.1936,37.998)] | Oakland + Hesperian Blvd | [(-122.1132,37.6),(-122.1123,37.586)] | Berkeley + Hesperian Blvd | [(-122.097,37.333),(-122.0956,37.31),(-122.0946,37.293)] | Oakland + Hesperian Blvd | [(-122.097,37.333),(-122.0956,37.31),(-122.0946,37.293)] | Oakland + Hollis St | [(-122.2885,37.397),(-122.289,37.414)] | Lafayette + I- 580 | [(-122.1108,37.023),(-122.1101,37.02),(-122.108103,37.00764),(-122.108,37.007),(-122.1069,37.998),(-122.1064,37.994),(-122.1053,37.982),(-122.1048,37.977),(-122.1032,37.958),(-122.1026,37.953),(-122.1013,37.938),(-122.0989,37.911),(-122.0984,37.91),(-122.098,37.908)] | Berkeley + I- 580 | [(-122.1543,37.703),(-122.1535,37.694),(-122.1512,37.655),(-122.1475,37.603),(-122.1468,37.583),(-122.1472,37.569),(-122.149044,37.54874),(-122.1493,37.546),(-122.1501,37.532),(-122.1506,37.509),(-122.1495,37.482),(-122.1487,37.467),(-122.1477,37.447),(-122.1414,37.383),(-122.1404,37.376),(-122.1398,37.372),(-122.139,37.356),(-122.1388,37.353),(-122.1385,37.34),(-122.1382,37.33),(-122.1378,37.316)] | Berkeley + I- 580 | [(-122.2197,37.99),(-122.22,37.99),(-122.222092,37.99523),(-122.2232,37.998),(-122.224146,37.99963),(-122.2261,37.003),(-122.2278,37.007),(-122.2302,37.026),(-122.2323,37.043),(-122.2344,37.059),(-122.235405,37.06427),(-122.2365,37.07)] | Berkeley + I- 580 | [(-122.2197,37.99),(-122.22,37.99),(-122.222092,37.99523),(-122.2232,37.998),(-122.224146,37.99963),(-122.2261,37.003),(-122.2278,37.007),(-122.2302,37.026),(-122.2323,37.043),(-122.2344,37.059),(-122.235405,37.06427),(-122.2365,37.07)] | Lafayette + I- 580 | [(-121.727,37.074),(-121.7229,37.093),(-121.722301,37.09522),(-121.721001,37.10005),(-121.7194,37.106),(-121.7188,37.109),(-121.7168,37.12),(-121.7163,37.123),(-121.7145,37.127),(-121.7096,37.148),(-121.707731,37.1568),(-121.7058,37.166),(-121.7055,37.168),(-121.7044,37.174),(-121.7038,37.172),(-121.7037,37.172),(-121.7027,37.175),(-121.7001,37.181),(-121.6957,37.191),(-121.6948,37.192),(-121.6897,37.204),(-121.6697,37.185)] | Oakland + I- 580 | [(-121.9322,37.989),(-121.9243,37.006),(-121.9217,37.014)] | Oakland + I- 580 | [(-121.9322,37.989),(-121.9243,37.006),(-121.9217,37.014)] | Oakland + I- 580 | [(-122.018,37.019),(-122.0009,37.032),(-121.9787,37.983),(-121.958,37.984),(-121.9571,37.986)] | Oakland + I- 580 | [(-122.018,37.019),(-122.0009,37.032),(-121.9787,37.983),(-121.958,37.984),(-121.9571,37.986)] | Oakland + I- 580 | [(-122.1108,37.023),(-122.1101,37.02),(-122.108103,37.00764),(-122.108,37.007),(-122.1069,37.998),(-122.1064,37.994),(-122.1053,37.982),(-122.1048,37.977),(-122.1032,37.958),(-122.1026,37.953),(-122.1013,37.938),(-122.0989,37.911),(-122.0984,37.91),(-122.098,37.908)] | Oakland + I- 580 | [(-122.1543,37.703),(-122.1535,37.694),(-122.1512,37.655),(-122.1475,37.603),(-122.1468,37.583),(-122.1472,37.569),(-122.149044,37.54874),(-122.1493,37.546),(-122.1501,37.532),(-122.1506,37.509),(-122.1495,37.482),(-122.1487,37.467),(-122.1477,37.447),(-122.1414,37.383),(-122.1404,37.376),(-122.1398,37.372),(-122.139,37.356),(-122.1388,37.353),(-122.1385,37.34),(-122.1382,37.33),(-122.1378,37.316)] | Oakland + I- 580 Ramp | [(-122.093241,37.90351),(-122.09364,37.89634),(-122.093788,37.89212)] | Berkeley + I- 580 Ramp | [(-122.0934,37.896),(-122.09257,37.89961),(-122.0911,37.906)] | Berkeley + I- 580 Ramp | [(-122.0941,37.897),(-122.0943,37.902)] | Berkeley + I- 580 Ramp | [(-122.096,37.888),(-122.0962,37.891),(-122.0964,37.9)] | Berkeley + I- 580 Ramp | [(-122.101,37.898),(-122.1005,37.902),(-122.0989,37.911)] | Berkeley + I- 580 Ramp | [(-122.1086,37.003),(-122.1068,37.993),(-122.1066,37.992),(-122.1053,37.982)] | Berkeley + I- 580 Ramp | [(-121.8521,37.011),(-121.8479,37.999),(-121.8476,37.999),(-121.8456,37.01),(-121.8455,37.011)] | Oakland + I- 580 Ramp | [(-121.8521,37.011),(-121.8479,37.999),(-121.8476,37.999),(-121.8456,37.01),(-121.8455,37.011)] | Oakland + I- 580 Ramp | [(-121.8743,37.014),(-121.8722,37.999),(-121.8714,37.999)] | Oakland + I- 580 Ramp | [(-121.8743,37.014),(-121.8722,37.999),(-121.8714,37.999)] | Oakland + I- 580 Ramp | [(-121.9043,37.998),(-121.9036,37.013),(-121.902632,37.0174),(-121.9025,37.018)] | Oakland + I- 580 Ramp | [(-121.9043,37.998),(-121.9036,37.013),(-121.902632,37.0174),(-121.9025,37.018)] | Oakland + I- 580 Ramp | [(-121.9368,37.986),(-121.936483,37.98832),(-121.9353,37.997),(-121.93504,37.00035),(-121.9346,37.006),(-121.933764,37.00031),(-121.9333,37.997),(-121.9322,37.989)] | Oakland + I- 580 Ramp | [(-121.9368,37.986),(-121.936483,37.98832),(-121.9353,37.997),(-121.93504,37.00035),(-121.9346,37.006),(-121.933764,37.00031),(-121.9333,37.997),(-121.9322,37.989)] | Oakland + I- 580 Ramp | [(-122.1086,37.003),(-122.1068,37.993),(-122.1066,37.992),(-122.1053,37.982)] | Oakland + I- 580 Ramp | [(-122.1414,37.383),(-122.1407,37.376),(-122.1403,37.372),(-122.139,37.356)] | Oakland + I- 580/I-680 Ramp | ((-121.9207,37.988),(-121.9192,37.016)) | Oakland + I- 580/I-680 Ramp | ((-121.9207,37.988),(-121.9192,37.016)) | Oakland + I- 680 | ((-121.939,37.15),(-121.9387,37.145),(-121.9373,37.125),(-121.934242,37.07643),(-121.933886,37.0709),(-121.9337,37.068),(-121.933122,37.06139),(-121.932736,37.05698),(-121.93222,37.05108),(-121.931844,37.04678),(-121.930113,37.027),(-121.926829,37),(-121.9265,37.998),(-121.9217,37.96),(-121.9203,37.949),(-121.9184,37.934)) | Oakland + I- 680 | ((-121.939,37.15),(-121.9387,37.145),(-121.9373,37.125),(-121.934242,37.07643),(-121.933886,37.0709),(-121.9337,37.068),(-121.933122,37.06139),(-121.932736,37.05698),(-121.93222,37.05108),(-121.931844,37.04678),(-121.930113,37.027),(-121.926829,37),(-121.9265,37.998),(-121.9217,37.96),(-121.9203,37.949),(-121.9184,37.934)) | Oakland + I- 680 | [(-121.9101,37.715),(-121.911269,37.74682),(-121.9119,37.764),(-121.9124,37.776),(-121.9174,37.905),(-121.9194,37.957),(-121.9207,37.988)] | Oakland + I- 680 | [(-121.9184,37.934),(-121.917,37.913),(-121.9122,37.83),(-121.9052,37.702)] | Oakland + I- 680 Ramp | [(-121.8833,37.376),(-121.8833,37.392),(-121.883,37.4),(-121.8835,37.402),(-121.8852,37.422)] | Oakland + I- 680 Ramp | [(-121.8833,37.376),(-121.8833,37.392),(-121.883,37.4),(-121.8835,37.402),(-121.8852,37.422)] | Oakland + I- 680 Ramp | [(-121.92,37.438),(-121.9218,37.424),(-121.9238,37.408),(-121.9252,37.392)] | Oakland + I- 680 Ramp | [(-121.92,37.438),(-121.9218,37.424),(-121.9238,37.408),(-121.9252,37.392)] | Oakland + I- 680 Ramp | [(-121.9238,37.402),(-121.9234,37.395),(-121.923,37.399)] | Oakland + I- 680 Ramp | [(-121.9238,37.402),(-121.9234,37.395),(-121.923,37.399)] | Oakland + I- 80 | ((-122.2937,37.277),(-122.3016,37.262)) | Lafayette + I- 80 | ((-122.2962,37.273),(-122.3004,37.264)) | Lafayette + I- 80 Ramp | [(-122.2962,37.413),(-122.2959,37.382),(-122.2951,37.372)] | Lafayette + I- 880 | [(-122.0375,37.632),(-122.0359,37.619),(-122.0358,37.616),(-122.034514,37.60409),(-122.031876,37.57965),(-122.031193,37.57332),(-122.03016,37.56375),(-122.02943,37.55698),(-122.028689,37.54929),(-122.027833,37.53908),(-122.025979,37.51698),(-122.0238,37.491)] | Berkeley + I- 880 | [(-122.0612,37.003),(-122.0604,37.991),(-122.0596,37.982),(-122.0585,37.967),(-122.0583,37.961),(-122.0553,37.918),(-122.053635,37.89475),(-122.050759,37.8546),(-122.05,37.844),(-122.0485,37.817),(-122.0483,37.813),(-122.0482,37.811)] | Berkeley + I- 880 | [(-122.1365,37.902),(-122.1358,37.898),(-122.1333,37.881),(-122.1323,37.874),(-122.1311,37.866),(-122.1308,37.865),(-122.1307,37.864),(-122.1289,37.851),(-122.1277,37.843),(-122.1264,37.834),(-122.1231,37.812),(-122.1165,37.766),(-122.1104,37.72),(-122.109695,37.71094),(-122.109,37.702),(-122.108312,37.69168),(-122.1076,37.681)] | Berkeley + I- 880 | [(-122.1755,37.185),(-122.1747,37.178),(-122.1742,37.173),(-122.1692,37.126),(-122.167792,37.11594),(-122.16757,37.11435),(-122.1671,37.111),(-122.1655,37.1),(-122.165169,37.09811),(-122.1641,37.092),(-122.1596,37.061),(-122.158381,37.05275),(-122.155991,37.03657),(-122.1531,37.017),(-122.1478,37.98),(-122.1407,37.932),(-122.1394,37.924),(-122.1389,37.92),(-122.1376,37.91)] | Berkeley + I- 880 | [(-122.2214,37.711),(-122.2202,37.699),(-122.2199,37.695),(-122.219,37.682),(-122.2184,37.672),(-122.2173,37.652),(-122.2159,37.638),(-122.2144,37.616),(-122.2138,37.612),(-122.2135,37.609),(-122.212,37.592),(-122.2116,37.586),(-122.2111,37.581)] | Berkeley + I- 880 | [(-122.2707,37.975),(-122.2693,37.972),(-122.2681,37.966),(-122.267,37.962),(-122.2659,37.957),(-122.2648,37.952),(-122.2636,37.946),(-122.2625,37.935),(-122.2617,37.927),(-122.2607,37.921),(-122.2593,37.916),(-122.258,37.911),(-122.2536,37.898),(-122.2432,37.858),(-122.2408,37.845),(-122.2386,37.827),(-122.2374,37.811)] | Berkeley + I- 880 | ((-121.9669,37.075),(-121.9663,37.071),(-121.9656,37.065),(-121.9618,37.037),(-121.95689,37),(-121.948,37.933)) | Oakland + I- 880 | ((-121.9669,37.075),(-121.9663,37.071),(-121.9656,37.065),(-121.9618,37.037),(-121.95689,37),(-121.948,37.933)) | Oakland + I- 880 | [(-121.948,37.933),(-121.9471,37.925),(-121.9467,37.923),(-121.946,37.918),(-121.9452,37.912),(-121.937,37.852)] | Oakland + I- 880 | [(-122.0219,37.466),(-122.0205,37.447),(-122.020331,37.44447),(-122.020008,37.43962),(-122.0195,37.432),(-122.0193,37.429),(-122.0164,37.393),(-122.010219,37.34771),(-122.0041,37.313)] | Oakland + I- 880 | [(-122.0375,37.632),(-122.0359,37.619),(-122.0358,37.616),(-122.034514,37.60409),(-122.031876,37.57965),(-122.031193,37.57332),(-122.03016,37.56375),(-122.02943,37.55698),(-122.028689,37.54929),(-122.027833,37.53908),(-122.025979,37.51698),(-122.0238,37.491)] | Oakland + I- 880 | [(-122.0612,37.003),(-122.0604,37.991),(-122.0596,37.982),(-122.0585,37.967),(-122.0583,37.961),(-122.0553,37.918),(-122.053635,37.89475),(-122.050759,37.8546),(-122.05,37.844),(-122.0485,37.817),(-122.0483,37.813),(-122.0482,37.811)] | Oakland + I- 880 | [(-122.0612,37.003),(-122.0604,37.991),(-122.0596,37.982),(-122.0585,37.967),(-122.0583,37.961),(-122.0553,37.918),(-122.053635,37.89475),(-122.050759,37.8546),(-122.05,37.844),(-122.0485,37.817),(-122.0483,37.813),(-122.0482,37.811)] | Oakland + I- 880 | [(-122.0831,37.312),(-122.0819,37.296),(-122.081,37.285),(-122.0786,37.248),(-122.078,37.24),(-122.077642,37.23496),(-122.076983,37.22567),(-122.076599,37.22026),(-122.076229,37.21505),(-122.0758,37.209)] | Oakland + I- 880 | [(-122.0978,37.528),(-122.096,37.496),(-122.0931,37.453),(-122.09277,37.4496),(-122.090189,37.41442),(-122.0896,37.405),(-122.085,37.34)] | Oakland + I- 880 | [(-122.1755,37.185),(-122.1747,37.178),(-122.1742,37.173),(-122.1692,37.126),(-122.167792,37.11594),(-122.16757,37.11435),(-122.1671,37.111),(-122.1655,37.1),(-122.165169,37.09811),(-122.1641,37.092),(-122.1596,37.061),(-122.158381,37.05275),(-122.155991,37.03657),(-122.1531,37.017),(-122.1478,37.98),(-122.1407,37.932),(-122.1394,37.924),(-122.1389,37.92),(-122.1376,37.91)] | Oakland + I- 880 Ramp | [(-122.059,37.982),(-122.0577,37.984),(-122.0612,37.003)] | Berkeley + I- 880 Ramp | [(-122.0618,37.011),(-122.0631,37.982),(-122.0585,37.967)] | Berkeley + I- 880 Ramp | [(-122.1029,37.61),(-122.1013,37.587),(-122.0999,37.569)] | Berkeley + I- 880 Ramp | [(-122.1379,37.891),(-122.1383,37.897),(-122.1377,37.902)] | Berkeley + I- 880 Ramp | [(-122.1379,37.931),(-122.137597,37.92736),(-122.1374,37.925),(-122.1373,37.924),(-122.1369,37.914),(-122.1358,37.905),(-122.1365,37.908),(-122.1358,37.898)] | Berkeley + I- 880 Ramp | [(-122.2536,37.898),(-122.254,37.902)] | Berkeley + I- 880 Ramp | [(-122.2771,37.002),(-122.278,37)] | Lafayette + I- 880 Ramp | [(-122.0019,37.301),(-122.002,37.293)] | Oakland + I- 880 Ramp | [(-122.0041,37.313),(-122.0018,37.315),(-122.0007,37.315),(-122.0005,37.313),(-122.0002,37.308),(-121.9995,37.289)] | Oakland + I- 880 Ramp | [(-122.0041,37.313),(-122.0038,37.308),(-122.0039,37.284),(-122.0013,37.287),(-121.9995,37.289)] | Oakland + I- 880 Ramp | [(-122.0236,37.488),(-122.0231,37.458),(-122.0227,37.458),(-122.0223,37.452),(-122.0205,37.447)] | Oakland + I- 880 Ramp | [(-122.0238,37.491),(-122.0215,37.483),(-122.0211,37.477),(-122.0205,37.447)] | Oakland + I- 880 Ramp | [(-122.059,37.982),(-122.0577,37.984),(-122.0612,37.003)] | Oakland + I- 880 Ramp | [(-122.059,37.982),(-122.0577,37.984),(-122.0612,37.003)] | Oakland + I- 880 Ramp | [(-122.0618,37.011),(-122.0631,37.982),(-122.0585,37.967)] | Oakland + I- 880 Ramp | [(-122.0618,37.011),(-122.0631,37.982),(-122.0585,37.967)] | Oakland + I- 880 Ramp | [(-122.085,37.34),(-122.0801,37.316),(-122.081,37.285)] | Oakland + I- 880 Ramp | [(-122.085,37.34),(-122.0801,37.316),(-122.081,37.285)] | Oakland + I- 880 Ramp | [(-122.085,37.34),(-122.0866,37.316),(-122.0819,37.296)] | Oakland + I- 880 Ramp | [(-122.085,37.34),(-122.0866,37.316),(-122.0819,37.296)] | Oakland + Indian Way | [(-122.2066,37.398),(-122.2045,37.411)] | Lafayette + Jackson St | [(-122.0845,37.6),(-122.0842,37.606)] | Berkeley + Johnson Dr | [(-121.9145,37.901),(-121.915,37.877)] | Oakland + Joyce St | [(-122.0792,37.604),(-122.0774,37.581)] | Berkeley + Juniper St | [(-121.7823,37.897),(-121.7815,37.9)] | Oakland + Kaiser Dr | [(-122.067163,37.47821),(-122.060402,37.51961)] | Oakland + Keeler Ave | [(-122.2578,37.906),(-122.2579,37.899)] | Berkeley + Kildare Road | [(-122.0968,37.016),(-122.0959,37)] | Oakland + La Playa Dr | [(-122.1039,37.545),(-122.101,37.493)] | Oakland + Laguna Ave | [(-122.2099,37.989),(-122.2089,37)] | Berkeley + Laguna Ave | [(-122.2099,37.989),(-122.2089,37)] | Lafayette + Lakehurst Cir | [(-122.284729,37.89025),(-122.286096,37.90364)] | Berkeley + Lakeshore Ave | [(-122.2586,37.99),(-122.2556,37.006)] | Berkeley + Lakeshore Ave | [(-122.2586,37.99),(-122.2556,37.006)] | Lafayette + Las Positas Road | [(-121.764488,37.99199),(-121.75569,37.02022)] | Oakland + Las Positas Road | [(-121.764488,37.99199),(-121.75569,37.02022)] | Oakland + Linden St | [(-122.2867,37.998),(-122.2864,37.008)] | Berkeley + Linden St | [(-122.2867,37.998),(-122.2864,37.008)] | Lafayette + Livermore Ave | [(-121.7687,37.448),(-121.769,37.375)] | Oakland + Livermore Ave | [(-121.7687,37.448),(-121.769,37.375)] | Oakland + Livermore Ave | [(-121.772719,37.99085),(-121.7728,37.001)] | Oakland + Livermore Ave | [(-121.772719,37.99085),(-121.7728,37.001)] | Oakland + Locust St | [(-122.1606,37.007),(-122.1593,37.987)] | Berkeley + Locust St | [(-122.1606,37.007),(-122.1593,37.987)] | Oakland + Logan Ct | [(-122.0053,37.492),(-122.0061,37.484)] | Oakland + Magnolia St | [(-122.0971,37.5),(-122.0962,37.484)] | Oakland + Mandalay Road | [(-122.2322,37.397),(-122.2321,37.403)] | Lafayette + Marin Ave | [(-122.2741,37.894),(-122.272,37.901)] | Berkeley + Martin Luther King Jr Way | [(-122.2712,37.608),(-122.2711,37.599)] | Berkeley + Mattos Dr | [(-122.0005,37.502),(-122.000898,37.49683)] | Oakland + Maubert Ave | [(-122.1114,37.009),(-122.1096,37.995)] | Berkeley + Maubert Ave | [(-122.1114,37.009),(-122.1096,37.995)] | Oakland + McClure Ave | [(-122.1431,37.001),(-122.1436,37.998)] | Berkeley + McClure Ave | [(-122.1431,37.001),(-122.1436,37.998)] | Oakland + Medlar Dr | [(-122.0627,37.378),(-122.0625,37.375)] | Oakland + Mildred Ct | [(-122.0002,37.388),(-121.9998,37.386)] | Oakland + Miller Road | [(-122.0902,37.645),(-122.0865,37.545)] | Berkeley + Miramar Ave | [(-122.1009,37.025),(-122.099089,37.03209)] | Oakland + Mission Blvd | [(-122.0006,37.896),(-121.9989,37.88)] | Berkeley + Mission Blvd | [(-121.918886,37),(-121.9194,37.976),(-121.9198,37.975)] | Oakland + Mission Blvd | [(-121.918886,37),(-121.9194,37.976),(-121.9198,37.975)] | Oakland + Mission Blvd | [(-122.0006,37.896),(-121.9989,37.88)] | Oakland + Moores Ave | [(-122.0087,37.301),(-122.0094,37.292)] | Oakland + National Ave | [(-122.1192,37.5),(-122.1281,37.489)] | Oakland + Navajo Ct | [(-121.8779,37.901),(-121.8783,37.9)] | Oakland + Newark Blvd | [(-122.0352,37.438),(-122.0341,37.423)] | Oakland + Oakland Inner Harbor | [(-122.2625,37.913),(-122.260016,37.89484)] | Berkeley + Oakridge Road | [(-121.8316,37.049),(-121.828382,37)] | Oakland + Oneil Ave | [(-122.076754,37.62476),(-122.0745,37.595)] | Berkeley + Parkridge Dr | [(-122.1438,37.884),(-122.1428,37.9)] | Berkeley + Parkside Dr | [(-122.0475,37.603),(-122.0443,37.596)] | Berkeley + Paseo Padre Pkwy | [(-122.0021,37.639),(-121.996,37.628)] | Berkeley + Paseo Padre Pkwy | [(-121.9143,37.005),(-121.913522,37)] | Oakland + Paseo Padre Pkwy | [(-122.0021,37.639),(-121.996,37.628)] | Oakland + Pearl St | [(-122.2383,37.594),(-122.2366,37.615)] | Berkeley + Periwinkle Road | [(-122.0451,37.301),(-122.044758,37.29844)] | Oakland + Pimlico Dr | [(-121.8616,37.998),(-121.8618,37.008)] | Oakland + Pimlico Dr | [(-121.8616,37.998),(-121.8618,37.008)] | Oakland + Portsmouth Ave | [(-122.1064,37.315),(-122.1064,37.308)] | Oakland + Proctor Ave | [(-122.2267,37.406),(-122.2251,37.386)] | Lafayette + Railroad Ave | [(-122.0245,37.013),(-122.0234,37.003),(-122.0223,37.993)] | Berkeley + Railroad Ave | [(-122.0245,37.013),(-122.0234,37.003),(-122.0223,37.993)] | Oakland + Railroad Ave | [(-122.0245,37.013),(-122.0234,37.003),(-122.0223,37.993)] | Oakland + Ranspot Dr | [(-122.0972,37.999),(-122.0959,37)] | Berkeley + Ranspot Dr | [(-122.0972,37.999),(-122.0959,37)] | Oakland + Ranspot Dr | [(-122.0972,37.999),(-122.0959,37)] | Oakland + Redding St | [(-122.1978,37.901),(-122.1975,37.895)] | Berkeley + Redwood Road | [(-122.1493,37.98),(-122.1437,37.001)] | Berkeley + Redwood Road | [(-122.1493,37.98),(-122.1437,37.001)] | Oakland + Roca Dr | [(-122.0335,37.609),(-122.0314,37.599)] | Berkeley + Rosedale Ct | [(-121.9232,37.9),(-121.924,37.897)] | Oakland + Sacramento St | [(-122.2799,37.606),(-122.2797,37.597)] | Berkeley + Saddle Brook Dr | [(-122.1478,37.909),(-122.1454,37.904),(-122.1451,37.888)] | Berkeley + Saginaw Ct | [(-121.8803,37.898),(-121.8806,37.901)] | Oakland + San Andreas Dr | [(-122.0609,37.9),(-122.0614,37.895)] | Berkeley + Santa Maria Ave | [(-122.0773,37),(-122.0773,37.98)] | Berkeley + Santa Maria Ave | [(-122.0773,37),(-122.0773,37.98)] | Oakland + Santa Maria Ave | [(-122.0773,37),(-122.0773,37.98)] | Oakland + Shattuck Ave | [(-122.2686,37.904),(-122.2686,37.897)] | Berkeley + Sheridan Road | [(-122.2279,37.425),(-122.2253,37.411),(-122.2223,37.377)] | Lafayette + Shoreline Dr | [(-122.2657,37.603),(-122.2648,37.6)] | Berkeley + Skyline Blvd | [(-122.1738,37.01),(-122.1714,37.996)] | Berkeley + Skyline Blvd | [(-122.1738,37.01),(-122.1714,37.996)] | Oakland + Skyline Dr | [(-122.0277,37.5),(-122.0284,37.498)] | Oakland + Skywest Dr | [(-122.1161,37.62),(-122.1123,37.586)] | Berkeley + Southern Pacific Railroad | [(-122.3002,37.674),(-122.2999,37.661)] | Berkeley + Sp Railroad | [(-122.0734,37.001),(-122.0734,37.997)] | Berkeley + Sp Railroad | [(-122.0914,37.601),(-122.087,37.56),(-122.086408,37.5551)] | Berkeley + Sp Railroad | [(-122.137792,37.003),(-122.1365,37.992),(-122.131257,37.94612)] | Berkeley + Sp Railroad | [(-121.893564,37.99009),(-121.897,37.016)] | Oakland + Sp Railroad | [(-121.893564,37.99009),(-121.897,37.016)] | Oakland + Sp Railroad | [(-121.9565,37.898),(-121.9562,37.9)] | Oakland + Sp Railroad | [(-122.0734,37.001),(-122.0734,37.997)] | Oakland + Sp Railroad | [(-122.0734,37.001),(-122.0734,37.997)] | Oakland + Sp Railroad | [(-122.137792,37.003),(-122.1365,37.992),(-122.131257,37.94612)] | Oakland + Sp Railroad | [(-122.1947,37.497),(-122.193328,37.4848)] | Oakland + Stanton Ave | [(-122.100392,37.0697),(-122.099513,37.06052)] | Oakland + State Hwy 123 | [(-122.3004,37.986),(-122.2998,37.969),(-122.2995,37.962),(-122.2992,37.952),(-122.299,37.942),(-122.2987,37.935),(-122.2984,37.924),(-122.2982,37.92),(-122.2976,37.904),(-122.297,37.88),(-122.2966,37.869),(-122.2959,37.848),(-122.2961,37.843)] | Berkeley + State Hwy 13 | [(-122.1797,37.943),(-122.179871,37.91849),(-122.18,37.9),(-122.179023,37.86615),(-122.1787,37.862),(-122.1781,37.851),(-122.1777,37.845),(-122.1773,37.839),(-122.177,37.833)] | Berkeley + State Hwy 13 | [(-122.2049,37.2),(-122.20328,37.17975),(-122.1989,37.125),(-122.198078,37.11641),(-122.1975,37.11)] | Lafayette + State Hwy 13 Ramp | [(-122.2244,37.427),(-122.223,37.414),(-122.2214,37.396),(-122.2213,37.388)] | Lafayette + State Hwy 238 | ((-122.098,37.908),(-122.0983,37.907),(-122.099,37.905),(-122.101,37.898),(-122.101535,37.89711),(-122.103173,37.89438),(-122.1046,37.892),(-122.106,37.89)) | Berkeley + State Hwy 238 Ramp | [(-122.1288,37.9),(-122.1293,37.895),(-122.1296,37.906)] | Berkeley + State Hwy 24 | [(-122.2674,37.246),(-122.2673,37.248),(-122.267,37.261),(-122.2668,37.271),(-122.2663,37.298),(-122.2659,37.315),(-122.2655,37.336),(-122.265007,37.35882),(-122.264443,37.37286),(-122.2641,37.381),(-122.2638,37.388),(-122.2631,37.396),(-122.2617,37.405),(-122.2615,37.407),(-122.2605,37.412)] | Lafayette + State Hwy 84 | [(-121.9565,37.898),(-121.956589,37.89911),(-121.9569,37.903),(-121.956,37.91),(-121.9553,37.919)] | Oakland + State Hwy 84 | [(-122.0671,37.426),(-122.07,37.402),(-122.074,37.37),(-122.0773,37.338)] | Oakland + State Hwy 92 | [(-122.1085,37.326),(-122.1095,37.322),(-122.1111,37.316),(-122.1119,37.313),(-122.1125,37.311),(-122.1131,37.308),(-122.1167,37.292),(-122.1187,37.285),(-122.12,37.28)] | Oakland + State Hwy 92 Ramp | [(-122.1086,37.321),(-122.1089,37.315),(-122.1111,37.316)] | Oakland + Stuart St | [(-122.2518,37.6),(-122.2507,37.601),(-122.2491,37.606)] | Berkeley + Sunol Ridge Trl | [(-121.9419,37.455),(-121.9345,37.38)] | Oakland + Sunol Ridge Trl | [(-121.9419,37.455),(-121.9345,37.38)] | Oakland + Tassajara Creek | [(-121.87866,37.98898),(-121.8782,37.015)] | Oakland + Tassajara Creek | [(-121.87866,37.98898),(-121.8782,37.015)] | Oakland + Taurus Ave | [(-122.2159,37.416),(-122.2128,37.389)] | Lafayette + Tennyson Road | [(-122.0891,37.317),(-122.0927,37.317)] | Oakland + Thackeray Ave | [(-122.072,37.305),(-122.0715,37.298)] | Oakland + Theresa Way | [(-121.7289,37.906),(-121.728,37.899)] | Oakland + Tissiack Way | [(-121.920364,37),(-121.9208,37.995)] | Oakland + Tissiack Way | [(-121.920364,37),(-121.9208,37.995)] | Oakland + Tupelo Ter | [(-122.059087,37.6113),(-122.057021,37.59942)] | Berkeley + Vallecitos Road | [(-121.8699,37.916),(-121.8703,37.891)] | Oakland + Warm Springs Blvd | [(-121.933956,37),(-121.9343,37.97)] | Oakland + Warm Springs Blvd | [(-121.933956,37),(-121.9343,37.97)] | Oakland + Welch Creek Road | [(-121.7695,37.386),(-121.7737,37.413)] | Oakland + Welch Creek Road | [(-121.7695,37.386),(-121.7737,37.413)] | Oakland + West Loop Road | [(-122.0576,37.604),(-122.0602,37.586)] | Berkeley + Western Pacific Railroad Spur | [(-122.0394,37.018),(-122.0394,37.961)] | Berkeley + Western Pacific Railroad Spur | [(-122.0394,37.018),(-122.0394,37.961)] | Oakland + Western Pacific Railroad Spur | [(-122.0394,37.018),(-122.0394,37.961)] | Oakland + Whitlock Creek | [(-121.74683,37.91276),(-121.733107,37)] | Oakland + Whitlock Creek | [(-121.74683,37.91276),(-121.733107,37)] | Oakland + Willimet Way | [(-122.0964,37.517),(-122.0949,37.493)] | Oakland + Wisconsin St | [(-122.1994,37.017),(-122.1975,37.998),(-122.1971,37.994)] | Berkeley + Wisconsin St | [(-122.1994,37.017),(-122.1975,37.998),(-122.1971,37.994)] | Oakland + Wp Railroad | [(-122.254,37.902),(-122.2506,37.891)] | Berkeley +(333 rows) + +SELECT name, #thepath FROM iexit ORDER BY 1, 2; + name | ?column? +------+---------- +(0 rows) + +SELECT * FROM toyemp WHERE name = 'sharon'; + name | age | location | annualsal +--------+-----+----------+----------- + sharon | 25 | (15,12) | 12000 +(1 row) + diff --git a/src/test/regress/expected/sequence.out b/src/test/regress/expected/sequence.out index aa7b8be360..8e4e8cf724 100644 --- a/src/test/regress/expected/sequence.out +++ b/src/test/regress/expected/sequence.out @@ -98,7 +98,7 @@ ALTER TABLE foo_seq RENAME TO foo_seq_new; SELECT * FROM foo_seq_new; sequence_name | last_value | start_value | increment_by | max_value | min_value | cache_value | log_cnt | is_cycled | is_called ---------------+------------+-------------+--------------+---------------------+-----------+-------------+---------+-----------+----------- - foo_seq | 1 | 1 | 1 | 9223372036854775807 | 1 | 1 | 1 | f | f + foo_seq | 1 | 1 | 1 | 9223372036854775807 | 1 | 1 | 0 | f | f (1 row) SELECT nextval('foo_seq_new'); @@ -116,7 +116,7 @@ SELECT nextval('foo_seq_new'); SELECT * FROM foo_seq_new; sequence_name | last_value | start_value | increment_by | max_value | min_value | cache_value | log_cnt | is_cycled | is_called ---------------+------------+-------------+--------------+---------------------+-----------+-------------+---------+-----------+----------- - foo_seq | 2 | 1 | 1 | 9223372036854775807 | 1 | 1 | 32 | f | t + foo_seq | 2 | 1 | 1 | 9223372036854775807 | 1 | 1 | 31 | f | t (1 row) DROP SEQUENCE foo_seq_new; @@ -135,8 +135,6 @@ SELECT * FROM serialTest ORDER BY f1, f2; -- -- Check dependencies of serial and ordinary sequences -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP SEQUENCE myseq2; CREATE TEMP SEQUENCE myseq3; CREATE TEMP TABLE t1 ( diff --git a/src/test/regress/expected/sequence_1.out b/src/test/regress/expected/sequence_1.out index 8978953f17..dae94857d7 100644 --- a/src/test/regress/expected/sequence_1.out +++ b/src/test/regress/expected/sequence_1.out @@ -97,7 +97,7 @@ ALTER TABLE foo_seq RENAME TO foo_seq_new; SELECT * FROM foo_seq_new; sequence_name | last_value | start_value | increment_by | max_value | min_value | cache_value | log_cnt | is_cycled | is_called ---------------+------------+-------------+--------------+---------------------+-----------+-------------+---------+-----------+----------- - foo_seq | 1 | 1 | 1 | 9223372036854775807 | 1 | 1 | 1 | f | f + foo_seq | 1 | 1 | 1 | 9223372036854775807 | 1 | 1 | 0 | f | f (1 row) SELECT nextval('foo_seq_new'); @@ -115,7 +115,7 @@ SELECT nextval('foo_seq_new'); SELECT * FROM foo_seq_new; sequence_name | last_value | start_value | increment_by | max_value | min_value | cache_value | log_cnt | is_cycled | is_called ---------------+------------+-------------+--------------+---------------------+-----------+-------------+---------+-----------+----------- - foo_seq | 2 | 1 | 1 | 9223372036854775807 | 1 | 1 | 31 | f | t + foo_seq | 2 | 1 | 1 | 9223372036854775807 | 1 | 1 | 32 | f | t (1 row) DROP SEQUENCE foo_seq_new; diff --git a/src/test/regress/expected/stats_1.out b/src/test/regress/expected/stats_1.out index 53b9e5bc2e..eaf766a532 100644 --- a/src/test/regress/expected/stats_1.out +++ b/src/test/regress/expected/stats_1.out @@ -19,7 +19,6 @@ SELECT pg_sleep(2.0); (1 row) -SET enforce_two_phase_commit TO off; -- save counters CREATE TEMP TABLE prevstats AS SELECT t.seq_scan, t.seq_tup_read, t.idx_scan, t.idx_tup_fetch, diff --git a/src/test/regress/expected/strings.out b/src/test/regress/expected/strings.out index 4773327e9e..3c373a0db6 100644 --- a/src/test/regress/expected/strings.out +++ b/src/test/regress/expected/strings.out @@ -440,6 +440,64 @@ SELECT regexp_matches('foobarbequebaz', $re$barbeque$re$); {barbeque} (1 row) +-- start/end-of-line matches are of zero length +SELECT regexp_matches('foo' || chr(10) || 'bar' || chr(10) || 'bequq' || chr(10) || 'baz', '^', 'mg'); + regexp_matches +---------------- + {""} + {""} + {""} + {""} +(4 rows) + +SELECT regexp_matches('foo' || chr(10) || 'bar' || chr(10) || 'bequq' || chr(10) || 'baz', '$', 'mg'); + regexp_matches +---------------- + {""} + {""} + {""} + {""} +(4 rows) + +SELECT regexp_matches('1' || chr(10) || '2' || chr(10) || '3' || chr(10) || '4' || chr(10), '^.?', 'mg'); + regexp_matches +---------------- + {1} + {2} + {3} + {4} + {""} +(5 rows) + +SELECT regexp_matches(chr(10) || '1' || chr(10) || '2' || chr(10) || '3' || chr(10) || '4' || chr(10), '.?$', 'mg'); + regexp_matches +---------------- + {""} + {1} + {""} + {2} + {""} + {3} + {""} + {4} + {""} + {""} +(10 rows) + +SELECT regexp_matches(chr(10) || '1' || chr(10) || '2' || chr(10) || '3' || chr(10) || '4', '.?$', 'mg'); + regexp_matches +---------------- + {""} + {1} + {""} + {2} + {""} + {3} + {""} + {4} + {""} +(9 rows) + -- give me errors SELECT regexp_matches('foobarbequebaz', $re$(bar)(beque)$re$, 'gz'); ERROR: invalid regexp option: "z" diff --git a/src/test/regress/expected/subselect.out b/src/test/regress/expected/subselect.out index 0eaa7783ae..d3ceb63f43 100644 --- a/src/test/regress/expected/subselect.out +++ b/src/test/regress/expected/subselect.out @@ -17,6 +17,61 @@ SELECT 1 AS zero WHERE 1 IN (SELECT 2); ------ (0 rows) +-- Check grammar's handling of extra parens in assorted contexts +SELECT * FROM (SELECT 1 AS x) ss; + x +--- + 1 +(1 row) + +SELECT * FROM ((SELECT 1 AS x)) ss; + x +--- + 1 +(1 row) + +(SELECT 2) UNION SELECT 2; + ?column? +---------- + 2 +(1 row) + +((SELECT 2)) UNION SELECT 2; + ?column? +---------- + 2 +(1 row) + +SELECT ((SELECT 2) UNION SELECT 2); + ?column? +---------- + 2 +(1 row) + +SELECT (((SELECT 2)) UNION SELECT 2); + ?column? +---------- + 2 +(1 row) + +SELECT (SELECT ARRAY[1,2,3])[1]; + ?column? +---------- + 1 +(1 row) + +SELECT ((SELECT ARRAY[1,2,3]))[2]; + ?column? +---------- + 2 +(1 row) + +SELECT (((SELECT ARRAY[1,2,3])))[3]; + ?column? +---------- + 3 +(1 row) + -- Set up some simple test tables CREATE TABLE SUBSELECT_TBL ( f1 integer, @@ -215,8 +270,6 @@ select count(distinct ss.ten) from -- "IN (SELECT DISTINCT ...)" and related cases. Per example from -- Luca Pireddu and Michael Fuhr. -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE foo (id integer); CREATE TEMP TABLE bar (id1 integer, id2 integer); INSERT INTO foo VALUES (1); @@ -276,7 +329,7 @@ SELECT * FROM foo WHERE id IN CREATE TABLE orderstest ( approver_ref integer, po_ref integer, - ordercancelled boolean + ordercanceled boolean ); INSERT INTO orderstest VALUES (1, 1, false); INSERT INTO orderstest VALUES (66, 5, false); @@ -295,8 +348,8 @@ SELECT *, WHEN ord.approver_ref=1 THEN '---' ELSE 'Approved' END) AS "Approved", (SELECT CASE - WHEN ord.ordercancelled - THEN 'Cancelled' + WHEN ord.ordercanceled + THEN 'Canceled' ELSE (SELECT CASE WHEN ord.po_ref=1 @@ -310,8 +363,8 @@ SELECT *, END) END) AS "Status", (CASE - WHEN ord.ordercancelled - THEN 'Cancelled' + WHEN ord.ordercanceled + THEN 'Canceled' ELSE (CASE WHEN ord.po_ref=1 @@ -326,20 +379,20 @@ END) AS "Status", END) AS "Status_OK" FROM orderstest ord; SELECT * FROM orders_view -ORDER BY approver_ref, po_ref, ordercancelled; - approver_ref | po_ref | ordercancelled | Approved | Status | Status_OK ---------------+--------+----------------+----------+-----------+----------- - 1 | 1 | f | --- | --- | --- - 1 | 1 | f | --- | --- | --- - 1 | 1 | f | --- | --- | --- - 66 | 1 | f | Approved | Approved | Approved - 66 | 1 | f | Approved | Approved | Approved - 66 | 1 | t | Approved | Cancelled | Cancelled - 66 | 5 | f | Approved | PO | PO - 66 | 6 | f | Approved | PO | PO - 66 | 7 | f | Approved | PO | PO - 66 | 8 | f | Approved | PO | PO - 77 | 1 | f | Approved | Approved | Approved +ORDER BY approver_ref, po_ref, ordercanceled; + approver_ref | po_ref | ordercanceled | Approved | Status | Status_OK +--------------+--------+---------------+----------+----------+----------- + 1 | 1 | f | --- | --- | --- + 1 | 1 | f | --- | --- | --- + 1 | 1 | f | --- | --- | --- + 66 | 1 | f | Approved | Approved | Approved + 66 | 1 | f | Approved | Approved | Approved + 66 | 1 | t | Approved | Canceled | Canceled + 66 | 5 | f | Approved | PO | PO + 66 | 6 | f | Approved | PO | PO + 66 | 7 | f | Approved | PO | PO + 66 | 8 | f | Approved | PO | PO + 77 | 1 | f | Approved | Approved | Approved (11 rows) DROP TABLE orderstest cascade; @@ -522,6 +575,31 @@ select (select (a.*)::text) from view_a a; (42) (1 row) +-- +-- Check that whole-row Vars reading the result of a subselect don't include +-- any junk columns therein +-- +select q from (select max(f1) from int4_tbl group by f1 order by f1) q; + q +--------------- + (-2147483647) + (-123456) + (0) + (123456) + (2147483647) +(5 rows) + +with q as (select max(f1) from int4_tbl group by f1 order by f1) + select q from q; + q +--------------- + (-2147483647) + (-123456) + (0) + (123456) + (2147483647) +(5 rows) + -- -- Test case for sublinks pushed down into subselects via join alias expansion -- @@ -536,6 +614,23 @@ from ----- (0 rows) +-- +-- Test case for cross-type partial matching in hashed subplan (bug #7597) +-- +create temp table outer_7597 (f1 int4, f2 int4); +insert into outer_7597 values (0, 0); +insert into outer_7597 values (1, 0); +insert into outer_7597 values (0, null); +insert into outer_7597 values (1, null); +create temp table inner_7597(c1 int8, c2 int8); +insert into inner_7597 values(0, null); +select * from outer_7597 where (f1, f2) not in (select * from inner_7597); + f1 | f2 +----+---- + 1 | 0 + 1 | +(2 rows) + -- -- Test case for premature memory release during hashing of subplan output -- @@ -545,3 +640,123 @@ select '1'::text in (select '1'::name union all select '1'::name); t (1 row) +-- +-- Test case for planner bug with nested EXISTS handling +-- +select a.thousand from tenk1 a, tenk1 b +where a.thousand = b.thousand + and exists ( select 1 from tenk1 c where b.hundred = c.hundred + and not exists ( select 1 from tenk1 d + where a.thousand = d.thousand ) ); + thousand +---------- +(0 rows) + +-- +-- Check that nested sub-selects are not pulled up if they contain volatiles +-- +explain (verbose, costs off, nodes off, num_nodes off) + select x, x from + (select (select now()) as x from (values(1),(2)) v(y)) ss; + QUERY PLAN +--------------------------- + Values Scan on "*VALUES*" + Output: $0, $1 + InitPlan 1 (returns $0) + -> Result + Output: now() + InitPlan 2 (returns $1) + -> Result + Output: now() +(8 rows) + +explain (verbose, costs off, nodes off, num_nodes off) + select x, x from + (select (select random()) as x from (values(1),(2)) v(y)) ss; + QUERY PLAN +---------------------------------- + Subquery Scan on ss + Output: ss.x, ss.x + -> Values Scan on "*VALUES*" + Output: $0 + InitPlan 1 (returns $0) + -> Result + Output: random() +(7 rows) + +explain (verbose, costs off, nodes off, num_nodes off) + select x, x from + (select (select now() where y=y) as x from (values(1),(2)) v(y)) ss; + QUERY PLAN +---------------------------------------------------------------------- + Values Scan on "*VALUES*" + Output: (SubPlan 1), (SubPlan 2) + SubPlan 1 + -> Result + Output: now() + One-Time Filter: ("*VALUES*".column1 = "*VALUES*".column1) + SubPlan 2 + -> Result + Output: now() + One-Time Filter: ("*VALUES*".column1 = "*VALUES*".column1) +(10 rows) + +explain (verbose, costs off, nodes off, num_nodes off) + select x, x from + (select (select random() where y=y) as x from (values(1),(2)) v(y)) ss; + QUERY PLAN +---------------------------------------------------------------------------- + Subquery Scan on ss + Output: ss.x, ss.x + -> Values Scan on "*VALUES*" + Output: (SubPlan 1) + SubPlan 1 + -> Result + Output: random() + One-Time Filter: ("*VALUES*".column1 = "*VALUES*".column1) +(8 rows) + +-- +-- Check we behave sanely in corner case of empty SELECT list (bug #8648) +-- +create temp table nocolumns(); +select exists(select * from nocolumns); + ?column? +---------- + f +(1 row) + +-- +-- Check sane behavior with nested IN SubLinks +-- +explain (verbose, costs off, nodes off, num_nodes off) +select * from int4_tbl where + (case when f1 in (select unique1 from tenk1 a) then f1 else null end) in + (select ten from tenk1 b); + QUERY PLAN +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Nested Loop Semi Join + Output: int4_tbl.f1 + Join Filter: (CASE WHEN (hashed SubPlan 1) THEN int4_tbl.f1 ELSE NULL::integer END = b.ten) + -> Data Node Scan on int4_tbl + Output: int4_tbl.f1 + Remote query: SELECT f1 FROM ONLY int4_tbl WHERE true + -> Data Node Scan on b + Output: b.unique1, b.unique2, b.two, b.four, b.ten, b.twenty, b.hundred, b.thousand, b.twothousand, b.fivethous, b.tenthous, b.odd, b.even, b.stringu1, b.stringu2, b.string4 + Remote query: SELECT unique1, unique2, two, four, ten, twenty, hundred, thousand, twothousand, fivethous, tenthous, odd, even, stringu1, stringu2, string4 FROM ONLY tenk1 b WHERE true + SubPlan 1 + -> Result + Output: a.unique1 + -> Data Node Scan on a + Output: a.unique1, a.unique2, a.two, a.four, a.ten, a.twenty, a.hundred, a.thousand, a.twothousand, a.fivethous, a.tenthous, a.odd, a.even, a.stringu1, a.stringu2, a.string4 + Remote query: SELECT unique1, unique2, two, four, ten, twenty, hundred, thousand, twothousand, fivethous, tenthous, odd, even, stringu1, stringu2, string4 FROM ONLY tenk1 a WHERE true +(15 rows) + +select * from int4_tbl where + (case when f1 in (select unique1 from tenk1 a) then f1 else null end) in + (select ten from tenk1 b); + f1 +---- + 0 +(1 row) + diff --git a/src/test/regress/expected/temp.out b/src/test/regress/expected/temp.out index 1f43f2174b..c7af26822c 100644 --- a/src/test/regress/expected/temp.out +++ b/src/test/regress/expected/temp.out @@ -2,8 +2,6 @@ -- TEMP -- Test temp relations and indexes -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; -- test temp table/index masking CREATE TABLE temptest(col int); CREATE INDEX i_temptest ON temptest(col); @@ -45,8 +43,6 @@ DROP TABLE temptest; -- test temp table deletion CREATE TEMP TABLE temptest(col int); \c --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; SELECT * FROM temptest; ERROR: relation "temptest" does not exist LINE 1: SELECT * FROM temptest; diff --git a/src/test/regress/expected/text.out b/src/test/regress/expected/text.out index 6cc9f68f95..9ad9219834 100644 --- a/src/test/regress/expected/text.out +++ b/src/test/regress/expected/text.out @@ -171,11 +171,11 @@ select format('Hello %%%%'); -- should fail select format('Hello %s %s', 'World'); -ERROR: too few arguments for format conversion +ERROR: too few arguments for format select format('Hello %s'); -ERROR: too few arguments for format conversion +ERROR: too few arguments for format select format('Hello %x', 20); -ERROR: unrecognized conversion specifier: x +ERROR: unrecognized conversion specifier "x" -- check literal and sql identifiers select format('INSERT INTO %I VALUES(%L,%L)', 'mytab', 10, 'Hello'); format @@ -203,7 +203,7 @@ select format('INSERT INTO %I VALUES(%L,%L)', 'mytab', NULL, 'Hello'); -- should fail, sql identifier cannot be NULL select format('INSERT INTO %I VALUES(%L,%L)', NULL, 10, 'Hello'); -ERROR: NULL cannot be escaped as an SQL identifier +ERROR: null values cannot be formatted as an SQL identifier -- check positional placeholders select format('%1$s %3$s', 1, 2, 3); format @@ -219,15 +219,15 @@ select format('%1$s %12$s', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); -- should fail select format('%1$s %4$s', 1, 2, 3); -ERROR: too few arguments for format conversion +ERROR: too few arguments for format select format('%1$s %13$s', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); -ERROR: too few arguments for format conversion +ERROR: too few arguments for format select format('%1s', 1); ERROR: unterminated conversion specifier select format('%1$', 1); ERROR: unterminated conversion specifier select format('%1$1', 1); -ERROR: unrecognized conversion specifier: 1 +ERROR: unrecognized conversion specifier "1" --checkk mix of positional and ordered placeholders select format('Hello %s %1$s %s', 'World', 'Hello again'); format diff --git a/src/test/regress/expected/transactions.out b/src/test/regress/expected/transactions.out index 5f8641ac39..b401a85c9b 100644 --- a/src/test/regress/expected/transactions.out +++ b/src/test/regress/expected/transactions.out @@ -602,28 +602,11 @@ fetch from foo; (1 row) abort; --- tests for the "tid" type -SELECT '(3, 3)'::tid = '(3, 4)'::tid; - ?column? ----------- - f -(1 row) - -SELECT '(3, 3)'::tid = '(3, 3)'::tid; - ?column? ----------- - t -(1 row) - -SELECT '(3, 3)'::tid <> '(3, 3)'::tid; - ?column? ----------- - f -(1 row) - -SELECT '(3, 3)'::tid <> '(3, 4)'::tid; - ?column? ----------- - t -(1 row) - +-- Test for successful cleanup of an aborted transaction at session exit. +-- THIS MUST BE THE LAST TEST IN THIS FILE. +begin; +select 1/0; +ERROR: division by zero +rollback to X; +ERROR: no such savepoint +-- DO NOT ADD ANYTHING HERE. diff --git a/src/test/regress/expected/transactions_1.out b/src/test/regress/expected/transactions_1.out index 3dc43603a2..a4c0197565 100644 --- a/src/test/regress/expected/transactions_1.out +++ b/src/test/regress/expected/transactions_1.out @@ -41,8 +41,6 @@ SELECT * FROM aggtest order by a, b; (4 rows) -- Read-only tests --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TABLE writetest (a int); CREATE TEMPORARY TABLE temptest (a int); BEGIN; @@ -589,28 +587,11 @@ ERROR: no such savepoint fetch from foo; ERROR: current transaction is aborted, commands ignored until end of transaction block abort; --- tests for the "tid" type -SELECT '(3, 3)'::tid = '(3, 4)'::tid; - ?column? ----------- - f -(1 row) - -SELECT '(3, 3)'::tid = '(3, 3)'::tid; - ?column? ----------- - t -(1 row) - -SELECT '(3, 3)'::tid <> '(3, 3)'::tid; - ?column? ----------- - f -(1 row) - -SELECT '(3, 3)'::tid <> '(3, 4)'::tid; - ?column? ----------- - t -(1 row) - +-- Test for successful cleanup of an aborted transaction at session exit. +-- THIS MUST BE THE LAST TEST IN THIS FILE. +begin; +select 1/0; +ERROR: division by zero +rollback to X; +ERROR: no such savepoint +-- DO NOT ADD ANYTHING HERE. diff --git a/src/test/regress/expected/triggers.out b/src/test/regress/expected/triggers.out index c6c53cfbf9..5941b33234 100644 --- a/src/test/regress/expected/triggers.out +++ b/src/test/regress/expected/triggers.out @@ -446,6 +446,35 @@ NOTICE: trigger_func(after_upd_a_b_row) called: action = UPDATE, when = AFTER, NOTICE: trigger_func(after_upd_b_row) called: action = UPDATE, when = AFTER, level = ROW NOTICE: trigger_func(after_upd_b_stmt) called: action = UPDATE, when = AFTER, level = STATEMENT NOTICE: trigger_func(after_upd_stmt) called: action = UPDATE, when = AFTER, level = STATEMENT +-- +-- Test case for bug with BEFORE trigger followed by AFTER trigger with WHEN +-- +CREATE TABLE some_t (some_col boolean NOT NULL); +CREATE FUNCTION dummy_update_func() RETURNS trigger AS $$ +BEGIN + RAISE NOTICE 'dummy_update_func(%) called: action = %, old = %, new = %', + TG_ARGV[0], TG_OP, OLD, NEW; + RETURN NEW; +END; +$$ LANGUAGE plpgsql; +CREATE TRIGGER some_trig_before BEFORE UPDATE ON some_t FOR EACH ROW + EXECUTE PROCEDURE dummy_update_func('before'); +CREATE TRIGGER some_trig_aftera AFTER UPDATE ON some_t FOR EACH ROW + WHEN (NOT OLD.some_col AND NEW.some_col) + EXECUTE PROCEDURE dummy_update_func('aftera'); +CREATE TRIGGER some_trig_afterb AFTER UPDATE ON some_t FOR EACH ROW + WHEN (NOT NEW.some_col) + EXECUTE PROCEDURE dummy_update_func('afterb'); +INSERT INTO some_t VALUES (TRUE); +UPDATE some_t SET some_col = TRUE; +NOTICE: dummy_update_func(before) called: action = UPDATE, old = (t), new = (t) +UPDATE some_t SET some_col = FALSE; +NOTICE: dummy_update_func(before) called: action = UPDATE, old = (t), new = (f) +NOTICE: dummy_update_func(afterb) called: action = UPDATE, old = (t), new = (f) +UPDATE some_t SET some_col = TRUE; +NOTICE: dummy_update_func(before) called: action = UPDATE, old = (f), new = (t) +NOTICE: dummy_update_func(aftera) called: action = UPDATE, old = (f), new = (t) +DROP TABLE some_t; -- bogus cases CREATE TRIGGER error_upd_and_col BEFORE UPDATE OR UPDATE OF a ON main_table FOR EACH ROW EXECUTE PROCEDURE trigger_func('error_upd_and_col'); diff --git a/src/test/regress/expected/triggers_1.out b/src/test/regress/expected/triggers_1.out index 6fcd13e293..08cafabb36 100644 --- a/src/test/regress/expected/triggers_1.out +++ b/src/test/regress/expected/triggers_1.out @@ -415,6 +415,39 @@ SELECT pg_get_triggerdef(oid) FROM pg_trigger WHERE tgrelid = 'main_table'::regc UPDATE main_table SET a = 50; ERROR: Partition column can't be updated in current version UPDATE main_table SET b = 10; +-- +-- Test case for bug with BEFORE trigger followed by AFTER trigger with WHEN +-- +CREATE TABLE some_t (some_col boolean NOT NULL); +CREATE FUNCTION dummy_update_func() RETURNS trigger AS $$ +BEGIN + RAISE NOTICE 'dummy_update_func(%) called: action = %, old = %, new = %', + TG_ARGV[0], TG_OP, OLD, NEW; + RETURN NEW; +END; +$$ LANGUAGE plpgsql; +CREATE TRIGGER some_trig_before BEFORE UPDATE ON some_t FOR EACH ROW + EXECUTE PROCEDURE dummy_update_func('before'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +CREATE TRIGGER some_trig_aftera AFTER UPDATE ON some_t FOR EACH ROW + WHEN (NOT OLD.some_col AND NEW.some_col) + EXECUTE PROCEDURE dummy_update_func('aftera'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +CREATE TRIGGER some_trig_afterb AFTER UPDATE ON some_t FOR EACH ROW + WHEN (NOT NEW.some_col) + EXECUTE PROCEDURE dummy_update_func('afterb'); +ERROR: Postgres-XC does not support TRIGGER yet +DETAIL: The feature is not currently supported +INSERT INTO some_t VALUES (TRUE); +UPDATE some_t SET some_col = TRUE; +ERROR: Partition column can't be updated in current version +UPDATE some_t SET some_col = FALSE; +ERROR: Partition column can't be updated in current version +UPDATE some_t SET some_col = TRUE; +ERROR: Partition column can't be updated in current version +DROP TABLE some_t; -- bogus cases CREATE TRIGGER error_upd_and_col BEFORE UPDATE OR UPDATE OF a ON main_table FOR EACH ROW EXECUTE PROCEDURE trigger_func('error_upd_and_col'); diff --git a/src/test/regress/expected/tsearch.out b/src/test/regress/expected/tsearch.out index b2fc8073a6..f9c854cdfc 100644 --- a/src/test/regress/expected/tsearch.out +++ b/src/test/regress/expected/tsearch.out @@ -142,6 +142,12 @@ SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*'; 494 (1 row) +SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}'); + count +------- + 158 +(1 row) + RESET enable_seqscan; DROP INDEX wowidx; CREATE INDEX wowidx ON test_tsvector USING gin (a); @@ -188,6 +194,12 @@ SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*'; 494 (1 row) +SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}'); + count +------- + 158 +(1 row) + RESET enable_seqscan; INSERT INTO test_tsvector VALUES ('???', 'DFG:1A,2B,6C,10 FGH'); SELECT * FROM ts_stat('SELECT a FROM test_tsvector') ORDER BY ndoc DESC, nentry DESC, word LIMIT 10; diff --git a/src/test/regress/expected/tsearch_1.out b/src/test/regress/expected/tsearch_1.out index 94238cbf06..b6d018d712 100644 --- a/src/test/regress/expected/tsearch_1.out +++ b/src/test/regress/expected/tsearch_1.out @@ -142,6 +142,12 @@ SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*'; 494 (1 row) +SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}'); + count +------- + 158 +(1 row) + RESET enable_seqscan; DROP INDEX wowidx; CREATE INDEX wowidx ON test_tsvector USING gin (a); @@ -188,6 +194,12 @@ SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*'; 494 (1 row) +SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}'); + count +------- + 158 +(1 row) + RESET enable_seqscan; INSERT INTO test_tsvector VALUES ('???', 'DFG:1A,2B,6C,10 FGH'); SELECT * FROM ts_stat('SELECT a FROM test_tsvector') ORDER BY ndoc DESC, nentry DESC, word LIMIT 10; diff --git a/src/test/regress/expected/tsearch_2.out b/src/test/regress/expected/tsearch_2.out index 1df0e37ec6..bce64c331d 100644 --- a/src/test/regress/expected/tsearch_2.out +++ b/src/test/regress/expected/tsearch_2.out @@ -142,6 +142,12 @@ SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*'; 494 (1 row) +SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}'); + count +------- + 158 +(1 row) + RESET enable_seqscan; DROP INDEX wowidx; CREATE INDEX wowidx ON test_tsvector USING gin (a); @@ -188,6 +194,12 @@ SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*'; 494 (1 row) +SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}'); + count +------- + 158 +(1 row) + RESET enable_seqscan; INSERT INTO test_tsvector VALUES ('???', 'DFG:1A,2B,6C,10 FGH'); SELECT * FROM ts_stat('SELECT a FROM test_tsvector') ORDER BY ndoc DESC, nentry DESC, word LIMIT 10; diff --git a/src/test/regress/expected/txid.out b/src/test/regress/expected/txid.out index 9fcfe96e32..864cdb98f8 100644 --- a/src/test/regress/expected/txid.out +++ b/src/test/regress/expected/txid.out @@ -1,6 +1,4 @@ -- txid_snapshot data type and related functions --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; -- i/o select '12:13:'::txid_snapshot; txid_snapshot diff --git a/src/test/regress/expected/union.out b/src/test/regress/expected/union.out index 726e938693..419883c333 100644 --- a/src/test/regress/expected/union.out +++ b/src/test/regress/expected/union.out @@ -417,11 +417,11 @@ ERROR: column "q2" does not exist LINE 1: ... int8_tbl EXCEPT SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1... ^ -- But this should work: -SELECT q1 FROM int8_tbl EXCEPT (((SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1))); +SELECT q1 FROM int8_tbl EXCEPT (((SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1))) ORDER BY q1; q1 ------------------ - 4567890123456789 123 + 4567890123456789 (2 rows) -- @@ -459,3 +459,155 @@ SELECT '3.4'::numeric UNION SELECT 'foo'; ERROR: invalid input syntax for type numeric: "foo" LINE 1: SELECT '3.4'::numeric UNION SELECT 'foo'; ^ +-- +-- Test that expression-index constraints can be pushed down through +-- UNION or UNION ALL +-- +CREATE TEMP TABLE t1 (a text, b text); +CREATE INDEX t1_ab_idx on t1 ((a || b)); +CREATE TEMP TABLE t2 (ab text primary key); +NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "t2_pkey" for table "t2" +INSERT INTO t1 VALUES ('a', 'b'), ('x', 'y'); +INSERT INTO t2 VALUES ('ab'), ('xy'); +set enable_seqscan = off; +set enable_indexscan = on; +set enable_bitmapscan = off; +explain (num_nodes off, nodes off, costs off) + SELECT * FROM + (SELECT a || b AS ab FROM t1 + UNION ALL + SELECT * FROM t2) t + WHERE ab = 'ab'; + QUERY PLAN +---------------------------------------- + Result + -> Append + -> Result + -> Data Node Scan on t1 + -> Data Node Scan on t2 +(5 rows) + +explain (num_nodes off, nodes off, costs off) + SELECT * FROM + (SELECT a || b AS ab FROM t1 + UNION + SELECT * FROM t2) t + WHERE ab = 'ab'; + QUERY PLAN +---------------------------------------- + HashAggregate + -> Append + -> Result + -> Data Node Scan on t1 + -> Result + -> Data Node Scan on t2 +(6 rows) + +reset enable_seqscan; +reset enable_indexscan; +reset enable_bitmapscan; +-- Test constraint exclusion of UNION ALL subqueries +explain (num_nodes off, nodes off, costs off) + SELECT * FROM + (SELECT 1 AS t, * FROM tenk1 a + UNION ALL + SELECT 2 AS t, * FROM tenk1 b) c + WHERE t = 2; + QUERY PLAN +--------------------------------------- + Result + -> Append + -> Result + -> Data Node Scan on b +(4 rows) + +-- Test that we push quals into UNION sub-selects only when it's safe +explain (costs off) +SELECT * FROM + (SELECT 1 AS t, 2 AS x + UNION + SELECT 2 AS t, 4 AS x) ss +WHERE x < 4; + QUERY PLAN +-------------------------------------------- + Unique + -> Sort + Sort Key: (1), (2) + -> Append + -> Result + -> Result + One-Time Filter: false +(7 rows) + +SELECT * FROM + (SELECT 1 AS t, 2 AS x + UNION + SELECT 2 AS t, 4 AS x) ss +WHERE x < 4; + t | x +---+--- + 1 | 2 +(1 row) + +explain (costs off) +SELECT * FROM + (SELECT 1 AS t, generate_series(1,10) AS x + UNION + SELECT 2 AS t, 4 AS x) ss +WHERE x < 4 +ORDER BY x; + QUERY PLAN +------------------------------------------------------------- + Sort + Sort Key: ss.x + -> Subquery Scan on ss + Filter: (ss.x < 4) + -> Unique + -> Sort + Sort Key: (1), (generate_series(1, 10)) + -> Append + -> Result + -> Result +(10 rows) + +SELECT * FROM + (SELECT 1 AS t, generate_series(1,10) AS x + UNION + SELECT 2 AS t, 4 AS x) ss +WHERE x < 4 +ORDER BY x; + t | x +---+--- + 1 | 1 + 1 | 2 + 1 | 3 +(3 rows) + +explain (costs off) +SELECT * FROM + (SELECT 1 AS t, (random()*3)::int AS x + UNION + SELECT 2 AS t, 4 AS x) ss +WHERE x > 3; + QUERY PLAN +---------------------------------------------------------------------------- + Subquery Scan on ss + Filter: (ss.x > 3) + -> Unique + -> Sort + Sort Key: (1), (((random() * 3::double precision))::integer) + -> Append + -> Result + -> Result +(8 rows) + +SELECT * FROM + (SELECT 1 AS t, (random()*3)::int AS x + UNION + SELECT 2 AS t, 4 AS x) ss +WHERE x > 3; + t | x +---+--- + 2 | 4 +(1 row) + diff --git a/src/test/regress/expected/union_1.out b/src/test/regress/expected/union_1.out deleted file mode 100644 index 44d5f75aa3..0000000000 --- a/src/test/regress/expected/union_1.out +++ /dev/null @@ -1,461 +0,0 @@ --- --- UNION (also INTERSECT, EXCEPT) --- --- Simple UNION constructs -SELECT 1 AS two UNION SELECT 2 ORDER BY 1; - two ------ - 1 - 2 -(2 rows) - -SELECT 1 AS one UNION SELECT 1 ORDER BY 1; - one ------ - 1 -(1 row) - -SELECT 1 AS two UNION ALL SELECT 2 ORDER BY 1; - two ------ - 1 - 2 -(2 rows) - -SELECT 1 AS two UNION ALL SELECT 1 ORDER BY 1; - two ------ - 1 - 1 -(2 rows) - -SELECT 1 AS three UNION SELECT 2 UNION SELECT 3 ORDER BY 1; - three -------- - 1 - 2 - 3 -(3 rows) - -SELECT 1 AS two UNION SELECT 2 UNION SELECT 2 ORDER BY 1; - two ------ - 1 - 2 -(2 rows) - -SELECT 1 AS three UNION SELECT 2 UNION ALL SELECT 2 ORDER BY 1; - three -------- - 1 - 2 - 2 -(3 rows) - -SELECT 1.1 AS two UNION SELECT 2.2 ORDER BY 1; - two ------ - 1.1 - 2.2 -(2 rows) - --- Mixed types -SELECT 1.1 AS two UNION SELECT 2 ORDER BY 1; - two ------ - 1.1 - 2 -(2 rows) - -SELECT 1 AS two UNION SELECT 2.2 ORDER BY 1; - two ------ - 1 - 2.2 -(2 rows) - -SELECT 1 AS one UNION SELECT 1.0::float8 ORDER BY 1; - one ------ - 1 -(1 row) - -SELECT 1.1 AS two UNION ALL SELECT 2 ORDER BY 1; - two ------ - 1.1 - 2 -(2 rows) - -SELECT 1.0::float8 AS two UNION ALL SELECT 1 ORDER BY 1; - two ------ - 1 - 1 -(2 rows) - -SELECT 1.1 AS three UNION SELECT 2 UNION SELECT 3 ORDER BY 1; - three -------- - 1.1 - 2 - 3 -(3 rows) - -SELECT 1.1::float8 AS two UNION SELECT 2 UNION SELECT 2.0::float8 ORDER BY 1; - two ------ - 1.1 - 2 -(2 rows) - -SELECT 1.1 AS three UNION SELECT 2 UNION ALL SELECT 2 ORDER BY 1; - three -------- - 1.1 - 2 - 2 -(3 rows) - -SELECT 1.1 AS two UNION (SELECT 2 UNION ALL SELECT 2) ORDER BY 1; - two ------ - 1.1 - 2 -(2 rows) - --- --- Try testing from tables... --- -SELECT f1 AS five FROM FLOAT8_TBL -UNION -SELECT f1 FROM FLOAT8_TBL -ORDER BY 1; - five ------------------------ - -1.2345678901234e+200 - -1004.3 - -34.84 - -1.2345678901234e-200 - 0 -(5 rows) - -SELECT f1 AS ten FROM FLOAT8_TBL -UNION ALL -SELECT f1 FROM FLOAT8_TBL -ORDER BY 1; - ten ------------------------ - -1.2345678901234e+200 - -1.2345678901234e+200 - -1004.3 - -1004.3 - -34.84 - -34.84 - -1.2345678901234e-200 - -1.2345678901234e-200 - 0 - 0 -(10 rows) - -SELECT f1 AS nine FROM FLOAT8_TBL -UNION -SELECT f1 FROM INT4_TBL -ORDER BY 1; - nine ------------------------ - -1.2345678901234e+200 - -2147483647 - -123456 - -1004.3 - -34.84 - -1.2345678901234e-200 - 0 - 123456 - 2147483647 -(9 rows) - -SELECT f1 AS ten FROM FLOAT8_TBL -UNION ALL -SELECT f1 FROM INT4_TBL -ORDER BY 1; - ten ------------------------ - -1.2345678901234e+200 - -2147483647 - -123456 - -1004.3 - -34.84 - -1.2345678901234e-200 - 0 - 0 - 123456 - 2147483647 -(10 rows) - -SELECT f1 AS five FROM FLOAT8_TBL - WHERE f1 BETWEEN -1e6 AND 1e6 -UNION -SELECT f1 FROM INT4_TBL - WHERE f1 BETWEEN 0 AND 1000000 - ORDER BY 1; - five ------------------------ - -1004.3 - -34.84 - -1.2345678901234e-200 - 0 - 123456 -(5 rows) - -SELECT CAST(f1 AS char(4)) AS three FROM VARCHAR_TBL -UNION -SELECT f1 FROM CHAR_TBL -ORDER BY 1; - three -------- - a - ab - abcd -(3 rows) - -SELECT f1 AS three FROM VARCHAR_TBL -UNION -SELECT CAST(f1 AS varchar) FROM CHAR_TBL -ORDER BY 1; - three -------- - a - ab - abcd -(3 rows) - -SELECT f1 AS eight FROM VARCHAR_TBL -UNION ALL -SELECT f1 FROM CHAR_TBL -ORDER BY 1; - eight -------- - a - a - ab - ab - abcd - abcd - abcd - abcd -(8 rows) - -SELECT f1 AS five FROM TEXT_TBL -UNION -SELECT f1 FROM VARCHAR_TBL -UNION -SELECT TRIM(TRAILING FROM f1) FROM CHAR_TBL -ORDER BY 1; - five -------------------- - a - ab - abcd - doh! - hi de ho neighbor -(5 rows) - --- --- INTERSECT and EXCEPT --- -SELECT q2 FROM int8_tbl INTERSECT SELECT q1 FROM int8_tbl ORDER BY 1; - q2 ------------------- - 123 - 4567890123456789 -(2 rows) - -SELECT q2 FROM int8_tbl INTERSECT ALL SELECT q1 FROM int8_tbl ORDER BY 1; - q2 ------------------- - 123 - 4567890123456789 - 4567890123456789 -(3 rows) - -SELECT q2 FROM int8_tbl EXCEPT SELECT q1 FROM int8_tbl ORDER BY 1; - q2 -------------------- - -4567890123456789 - 456 -(2 rows) - -SELECT q2 FROM int8_tbl EXCEPT ALL SELECT q1 FROM int8_tbl ORDER BY 1; - q2 -------------------- - -4567890123456789 - 456 -(2 rows) - -SELECT q2 FROM int8_tbl EXCEPT ALL SELECT DISTINCT q1 FROM int8_tbl ORDER BY 1; - q2 -------------------- - -4567890123456789 - 456 - 4567890123456789 -(3 rows) - -SELECT q1 FROM int8_tbl EXCEPT SELECT q2 FROM int8_tbl ORDER BY 1; - q1 ----- -(0 rows) - -SELECT q1 FROM int8_tbl EXCEPT ALL SELECT q2 FROM int8_tbl ORDER BY 1; - q1 ------------------- - 123 - 4567890123456789 -(2 rows) - -SELECT q1 FROM int8_tbl EXCEPT ALL SELECT DISTINCT q2 FROM int8_tbl ORDER BY 1; - q1 ------------------- - 123 - 4567890123456789 - 4567890123456789 -(3 rows) - --- --- Mixed types --- -SELECT f1 FROM float8_tbl INTERSECT SELECT f1 FROM int4_tbl ORDER BY 1; - f1 ----- - 0 -(1 row) - -SELECT f1 FROM float8_tbl EXCEPT SELECT f1 FROM int4_tbl ORDER BY 1; - f1 ------------------------ - -1.2345678901234e+200 - -1004.3 - -34.84 - -1.2345678901234e-200 -(4 rows) - --- --- Operator precedence and (((((extra))))) parentheses --- -SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl ORDER BY 1; - q1 -------------------- - -4567890123456789 - 123 - 123 - 456 - 4567890123456789 - 4567890123456789 - 4567890123456789 -(7 rows) - -SELECT q1 FROM int8_tbl INTERSECT (((SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl))) ORDER BY 1; - q1 ------------------- - 123 - 4567890123456789 -(2 rows) - -(((SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl))) UNION ALL SELECT q2 FROM int8_tbl ORDER BY 1; - q1 -------------------- - -4567890123456789 - 123 - 123 - 456 - 4567890123456789 - 4567890123456789 - 4567890123456789 -(7 rows) - -SELECT q1 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl EXCEPT SELECT q1 FROM int8_tbl ORDER BY 1; - q1 -------------------- - -4567890123456789 - 456 -(2 rows) - -SELECT q1 FROM int8_tbl UNION ALL (((SELECT q2 FROM int8_tbl EXCEPT SELECT q1 FROM int8_tbl ORDER BY 1))) ORDER BY 1; - q1 -------------------- - -4567890123456789 - 123 - 123 - 456 - 4567890123456789 - 4567890123456789 - 4567890123456789 -(7 rows) - -(((SELECT q1 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl))) EXCEPT SELECT q1 FROM int8_tbl ORDER BY 1; - q1 -------------------- - -4567890123456789 - 456 -(2 rows) - --- --- Subqueries with ORDER BY & LIMIT clauses --- --- In this syntax, ORDER BY/LIMIT apply to the result of the EXCEPT -SELECT q1,q2 FROM int8_tbl EXCEPT SELECT q2,q1 FROM int8_tbl -ORDER BY q2,q1; - q1 | q2 -------------------+------------------- - 4567890123456789 | -4567890123456789 - 123 | 456 -(2 rows) - --- This should fail, because q2 isn't a name of an EXCEPT output column -SELECT q1 FROM int8_tbl EXCEPT SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1; -ERROR: column "q2" does not exist -LINE 1: ... int8_tbl EXCEPT SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1... - ^ --- But this should work: -SELECT q1 FROM int8_tbl EXCEPT (((SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1))) ORDER BY q1; - q1 ------------------- - 123 - 4567890123456789 -(2 rows) - --- --- New syntaxes (7.1) permit new tests --- -(((((select * from int8_tbl ORDER BY q1, q2))))); - q1 | q2 -------------------+------------------- - 123 | 456 - 123 | 4567890123456789 - 4567890123456789 | -4567890123456789 - 4567890123456789 | 123 - 4567890123456789 | 4567890123456789 -(5 rows) - --- --- Check handling of a case with unknown constants. We don't guarantee --- an undecorated constant will work in all cases, but historically this --- usage has worked, so test we don't break it. --- -SELECT a.f1 FROM (SELECT 'test' AS f1 FROM varchar_tbl) a -UNION -SELECT b.f1 FROM (SELECT f1 FROM varchar_tbl) b -ORDER BY 1; - f1 ------- - a - ab - abcd - test -(4 rows) - --- This should fail, but it should produce an error cursor -SELECT '3.4'::numeric UNION SELECT 'foo'; -ERROR: invalid input syntax for type numeric: "foo" -LINE 1: SELECT '3.4'::numeric UNION SELECT 'foo'; - ^ diff --git a/src/test/regress/expected/window.out b/src/test/regress/expected/window.out index e61c15a529..1d13a22cc3 100644 --- a/src/test/regress/expected/window.out +++ b/src/test/regress/expected/window.out @@ -1,8 +1,6 @@ -- -- WINDOW FUNCTIONS -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMPORARY TABLE empsalary ( depname varchar, empno bigint, @@ -591,6 +589,33 @@ SELECT empno, depname, salary, bonus, depadj, MIN(bonus) OVER (ORDER BY empno), 11 | develop | 5200 | 500 | 200 | 500 | 200 (10 rows) +-- window function over ungrouped agg over empty row set (bug before 9.1) +SELECT SUM(COUNT(f1)) OVER () FROM int4_tbl WHERE f1=42; + sum +----- + 0 +(1 row) + +-- window function with ORDER BY an expression involving aggregates (9.1 bug) +select ten, + sum(unique1) + sum(unique2) as res, + rank() over (order by sum(unique1) + sum(unique2)) as rank +from tenk1 +group by ten order by ten; + ten | res | rank +-----+----------+------ + 0 | 9976146 | 4 + 1 | 10114187 | 9 + 2 | 10059554 | 8 + 3 | 9878541 | 1 + 4 | 9881005 | 2 + 5 | 9981670 | 5 + 6 | 9947099 | 3 + 7 | 10120309 | 10 + 8 | 9991305 | 6 + 9 | 10040184 | 7 +(10 rows) + -- test non-default frame specifications SELECT four, ten, sum(ten) over (partition by four order by ten), diff --git a/src/test/regress/expected/with.out b/src/test/regress/expected/with.out index 0322b32bac..de20925277 100644 --- a/src/test/regress/expected/with.out +++ b/src/test/regress/expected/with.out @@ -134,8 +134,6 @@ SELECT n, n IS OF (text) as is_text FROM t ORDER BY n; -- | | -- | +->D-+->F -- +->E-+->G --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE department ( id INTEGER PRIMARY KEY, -- department ID parent_department INTEGER , @@ -1102,6 +1100,153 @@ SELECT * FROM t order by 1; 10 (55 rows) +-- +-- test WITH attached to intermediate-level set operation +-- +WITH outermost(x) AS ( + SELECT 1 + UNION (WITH innermost as (SELECT 2) + SELECT * FROM innermost + UNION SELECT 3) +) +SELECT * FROM outermost; + x +--- + 1 + 2 + 3 +(3 rows) + +WITH outermost(x) AS ( + SELECT 1 + UNION (WITH innermost as (SELECT 2) + SELECT * FROM outermost -- fail + UNION SELECT * FROM innermost) +) +SELECT * FROM outermost; +ERROR: relation "outermost" does not exist +LINE 4: SELECT * FROM outermost + ^ +DETAIL: There is a WITH item named "outermost", but it cannot be referenced from this part of the query. +HINT: Use WITH RECURSIVE, or re-order the WITH items to remove forward references. +WITH RECURSIVE outermost(x) AS ( + SELECT 1 + UNION (WITH innermost as (SELECT 2) + SELECT * FROM outermost + UNION SELECT * FROM innermost) +) +SELECT * FROM outermost; + x +--- + 1 + 2 +(2 rows) + +WITH RECURSIVE outermost(x) AS ( + WITH innermost as (SELECT 2 FROM outermost) -- fail + SELECT * FROM innermost + UNION SELECT * from outermost +) +SELECT * FROM outermost; +ERROR: recursive reference to query "outermost" must not appear within a subquery +LINE 2: WITH innermost as (SELECT 2 FROM outermost) + ^ +-- +-- This test will fail with the old implementation of PARAM_EXEC parameter +-- assignment, because the "q1" Var passed down to A's targetlist subselect +-- looks exactly like the "A.id" Var passed down to C's subselect, causing +-- the old code to give them the same runtime PARAM_EXEC slot. But the +-- lifespans of the two parameters overlap, thanks to B also reading A. +-- +with +A as ( select q2 as id, (select q1) as x from int8_tbl ), +B as ( select id, row_number() over (partition by id) as r from A ), +C as ( select A.id, array(select B.id from B where B.id = A.id) from A ) +select * from C order by 1; + id | ?column? +-------------------+------------------------------------- + -4567890123456789 | {-4567890123456789} + 123 | {123} + 456 | {456} + 4567890123456789 | {4567890123456789,4567890123456789} + 4567890123456789 | {4567890123456789,4567890123456789} +(5 rows) + +-- +-- Test CTEs read in non-initialization orders +-- +WITH RECURSIVE + tab(id_key,link) AS (VALUES (1,17), (2,17), (3,17), (4,17), (6,17), (5,17)), + iter (id_key, row_type, link) AS ( + SELECT 0, 'base', 17 + UNION ALL ( + WITH remaining(id_key, row_type, link, min) AS ( + SELECT tab.id_key, 'true'::text, iter.link, MIN(tab.id_key) OVER () + FROM tab INNER JOIN iter USING (link) + WHERE tab.id_key > iter.id_key + ), + first_remaining AS ( + SELECT id_key, row_type, link + FROM remaining + WHERE id_key=min + ), + effect AS ( + SELECT tab.id_key, 'new'::text, tab.link + FROM first_remaining e INNER JOIN tab ON e.id_key=tab.id_key + WHERE e.row_type = 'false' + ) + SELECT * FROM first_remaining + UNION ALL SELECT * FROM effect + ) + ) +SELECT * FROM iter; + id_key | row_type | link +--------+----------+------ + 0 | base | 17 + 1 | true | 17 + 2 | true | 17 + 3 | true | 17 + 4 | true | 17 + 5 | true | 17 + 6 | true | 17 +(7 rows) + +WITH RECURSIVE + tab(id_key,link) AS (VALUES (1,17), (2,17), (3,17), (4,17), (6,17), (5,17)), + iter (id_key, row_type, link) AS ( + SELECT 0, 'base', 17 + UNION ( + WITH remaining(id_key, row_type, link, min) AS ( + SELECT tab.id_key, 'true'::text, iter.link, MIN(tab.id_key) OVER () + FROM tab INNER JOIN iter USING (link) + WHERE tab.id_key > iter.id_key + ), + first_remaining AS ( + SELECT id_key, row_type, link + FROM remaining + WHERE id_key=min + ), + effect AS ( + SELECT tab.id_key, 'new'::text, tab.link + FROM first_remaining e INNER JOIN tab ON e.id_key=tab.id_key + WHERE e.row_type = 'false' + ) + SELECT * FROM first_remaining + UNION ALL SELECT * FROM effect + ) + ) +SELECT * FROM iter; + id_key | row_type | link +--------+----------+------ + 0 | base | 17 + 1 | true | 17 + 2 | true | 17 + 3 | true | 17 + 4 | true | 17 + 5 | true | 17 + 6 | true | 17 +(7 rows) + -- -- Data-modifying statements in WITH -- @@ -1500,6 +1645,72 @@ SELECT * FROM y order by 1; DROP TRIGGER y_trig ON y; ERROR: trigger "y_trig" for table "y" does not exist DROP FUNCTION y_trigger(); +-- WITH attached to inherited UPDATE or DELETE +CREATE TEMP TABLE parent ( id int, val text ) DISTRIBUTE BY ROUND ROBIN; +CREATE TEMP TABLE child1 ( ) INHERITS ( parent ) DISTRIBUTE BY ROUND ROBIN; +CREATE TEMP TABLE child2 ( ) INHERITS ( parent ) DISTRIBUTE BY ROUND ROBIN; +INSERT INTO parent VALUES ( 1, 'p1' ); +INSERT INTO child1 VALUES ( 11, 'c11' ),( 12, 'c12' ); +INSERT INTO child2 VALUES ( 23, 'c21' ),( 24, 'c22' ); +WITH rcte AS ( SELECT sum(id) AS totalid FROM parent ) +UPDATE parent SET id = id + totalid FROM rcte; +ERROR: Cannot generate remote query plan +DETAIL: This relation rowtype cannot be fetched +SELECT * FROM parent ORDER BY id; + id | val +----+----- + 1 | p1 + 11 | c11 + 12 | c12 + 23 | c21 + 24 | c22 +(5 rows) + +WITH wcte AS ( INSERT INTO child1 VALUES ( 42, 'new' ) RETURNING id AS newid ) +UPDATE parent SET id = id + newid FROM wcte; +ERROR: RETURNING clause not yet supported +SELECT * FROM parent ORDER BY id; + id | val +----+----- + 1 | p1 + 11 | c11 + 12 | c12 + 23 | c21 + 24 | c22 +(5 rows) + +WITH rcte AS ( SELECT max(id) AS maxid FROM parent ) +DELETE FROM parent USING rcte WHERE id = maxid; +ERROR: Cannot generate remote query plan +DETAIL: This relation rowtype cannot be fetched +SELECT * FROM parent ORDER BY id; + id | val +----+----- + 1 | p1 + 11 | c11 + 12 | c12 + 23 | c21 + 24 | c22 +(5 rows) + +WITH wcte AS ( INSERT INTO child2 VALUES ( 42, 'new2' ) RETURNING id AS newid ) +DELETE FROM parent USING wcte WHERE id = newid; +ERROR: RETURNING clause not yet supported +SELECT * FROM parent ORDER BY id; + id | val +----+----- + 1 | p1 + 11 | c11 + 12 | c12 + 23 | c21 + 24 | c22 +(5 rows) + +-- check EXPLAIN VERBOSE for a wCTE with RETURNING +EXPLAIN (VERBOSE, COSTS OFF, NUM_NODES true, NODES OFF) +WITH wcte AS ( INSERT INTO int8_tbl VALUES ( 42, 47 ) RETURNING q2 ) +DELETE FROM a USING wcte WHERE aa = q2; +ERROR: RETURNING clause not yet supported -- error cases -- data-modifying WITH tries to use its own output WITH RECURSIVE t AS ( diff --git a/src/test/regress/expected/xc_FQS.out b/src/test/regress/expected/xc_FQS.out index 1fa300ffd5..87abf450bc 100644 --- a/src/test/regress/expected/xc_FQS.out +++ b/src/test/regress/expected/xc_FQS.out @@ -1,43 +1,7 @@ -- This file contains tests for Fast Query Shipping (FQS) for queries involving -- a single table --- A function to create table on specified nodes -create or replace function cr_table(tab_schema varchar, nodenums int[], distribution varchar) returns void language plpgsql as $$ -declare - cr_command varchar; - nodes varchar[]; - nodename varchar; - nodenames_query varchar; - nodenames varchar; - node int; - sep varchar; - tmp_node int; - num_nodes int; -begin - nodenames_query := 'SELECT node_name FROM pgxc_node WHERE node_type = ''D'''; - cr_command := 'CREATE TABLE ' || tab_schema || ' DISTRIBUTE BY ' || distribution || ' TO NODE '; - for nodename in execute nodenames_query loop - nodes := array_append(nodes, nodename); - end loop; - nodenames := ''; - sep := ''; - num_nodes := array_length(nodes, 1); - foreach node in array nodenums loop - tmp_node := node; - if (tmp_node < 1 or tmp_node > num_nodes) then - tmp_node := tmp_node % num_nodes; - if (tmp_node < 1) then - tmp_node := num_nodes; - end if; - end if; - nodenames := nodenames || sep || nodes[tmp_node]; - sep := ', '; - end loop; - cr_command := cr_command || nodenames; - execute cr_command; -end; -$$; -- Testset 1 for distributed table (by round robin) -select cr_table('tab1_rr(val int, val2 int)', '{1, 2, 3}'::int[], 'round robin'); +select cr_table('tab1_rr(val int, val2 int)', '{1, 2, 3}'::int[], 'round robin', NULL); cr_table ---------- @@ -321,8 +285,8 @@ explain (costs off, verbose on, nodes off) select * from tab1_rr where val = cha Remote query: SELECT val, val2 FROM ONLY tab1_rr WHERE (val = 7) (5 rows) --- insert some more values -insert into tab1_rr values (7, 2); +-- insert some more values +insert into tab1_rr values (7, 2); select avg(val) from tab1_rr where val = 7; avg -------------------- @@ -361,11 +325,11 @@ explain (costs off, verbose on, nodes off) select val, val2 from tab1_rr where v Remote query: SELECT val, val2 FROM ONLY tab1_rr WHERE (val = 7) (8 rows) -select distinct val2 from tab1_rr where val = 7; +select distinct val2 from tab1_rr where val = 7 order by 1; val2 ------ - 8 2 + 8 (2 rows) explain (costs off, verbose on, nodes off) select distinct val2 from tab1_rr where val = 7; @@ -381,8 +345,8 @@ explain (costs off, verbose on, nodes off) select distinct val2 from tab1_rr whe (7 rows) -- DMLs -update tab1_rr set val2 = 1000 where val = 7; -explain (costs off, verbose on, nodes off) update tab1_rr set val2 = 1000 where val = 7; +update tab1_rr set val2 = 1000 where val = 7; +explain (costs off, verbose on, nodes off) update tab1_rr set val2 = 1000 where val = 7; QUERY PLAN ---------------------------------------------------------------- Data Node Scan on "__REMOTE_FQS_QUERY__" @@ -397,8 +361,8 @@ select * from tab1_rr where val = 7; 7 | 1000 (2 rows) -delete from tab1_rr where val = 7; -explain (costs off, verbose on, nodes off) delete from tab1_rr where val = 7; +delete from tab1_rr where val = 7; +explain (costs off, verbose on, nodes off) delete from tab1_rr where val = 7; QUERY PLAN --------------------------------------------------------- Data Node Scan on "__REMOTE_FQS_QUERY__" @@ -412,7 +376,7 @@ select * from tab1_rr where val = 7; (0 rows) -- Testset 2 for distributed tables (by hash) -select cr_table('tab1_hash(val int, val2 int)', '{1, 2, 3}'::int[], 'hash(val)'); +select cr_table('tab1_hash(val int, val2 int)', '{1, 2, 3}'::int[], 'hash(val)', NULL); cr_table ---------- @@ -690,8 +654,8 @@ explain (costs off, verbose on, nodes off, num_nodes on) select * from tab1_hash Remote query: SELECT val, val2 FROM tab1_hash WHERE (val = (char_length('len'::text) + 4)) (3 rows) --- insert some more values -insert into tab1_hash values (7, 2); +-- insert some more values +insert into tab1_hash values (7, 2); select avg(val) from tab1_hash where val = 7; avg -------------------- @@ -737,8 +701,8 @@ explain (costs off, verbose on, nodes off, num_nodes on) select distinct val2 fr (3 rows) -- DMLs -update tab1_hash set val2 = 1000 where val = 7; -explain (costs off, verbose on, nodes off) update tab1_hash set val2 = 1000 where val = 7; +update tab1_hash set val2 = 1000 where val = 7; +explain (costs off, verbose on, nodes off) update tab1_hash set val2 = 1000 where val = 7; QUERY PLAN --------------------------------------------------------------------- Data Node Scan on "__REMOTE_FQS_QUERY__" @@ -753,8 +717,8 @@ select * from tab1_hash where val = 7; 7 | 1000 (2 rows) -delete from tab1_hash where val = 7; -explain (costs off, verbose on, nodes off) delete from tab1_hash where val = 7; +delete from tab1_hash where val = 7; +explain (costs off, verbose on, nodes off) delete from tab1_hash where val = 7; QUERY PLAN --------------------------------------------------------------- Data Node Scan on "__REMOTE_FQS_QUERY__" @@ -768,7 +732,7 @@ select * from tab1_hash where val = 7; (0 rows) -- Testset 3 for distributed tables (by modulo) -select cr_table('tab1_modulo(val int, val2 int)', '{1, 2, 3}'::int[], 'modulo(val)'); +select cr_table('tab1_modulo(val int, val2 int)', '{1, 2, 3}'::int[], 'modulo(val)', NULL); cr_table ---------- @@ -1046,8 +1010,8 @@ explain (costs off, verbose on, nodes off, num_nodes on) select * from tab1_modu Remote query: SELECT val, val2 FROM tab1_modulo WHERE (val = (char_length('len'::text) + 4)) (3 rows) --- insert some more values -insert into tab1_modulo values (7, 2); +-- insert some more values +insert into tab1_modulo values (7, 2); select avg(val) from tab1_modulo where val = 7; avg -------------------- @@ -1093,8 +1057,8 @@ explain (costs off, verbose on, nodes off, num_nodes on) select distinct val2 fr (3 rows) -- DMLs -update tab1_modulo set val2 = 1000 where val = 7; -explain (costs off, verbose on, nodes off) update tab1_modulo set val2 = 1000 where val = 7; +update tab1_modulo set val2 = 1000 where val = 7; +explain (costs off, verbose on, nodes off) update tab1_modulo set val2 = 1000 where val = 7; QUERY PLAN --------------------------------------------------------------------------- Data Node Scan on "__REMOTE_FQS_QUERY__" @@ -1109,8 +1073,8 @@ select * from tab1_modulo where val = 7; 7 | 1000 (2 rows) -delete from tab1_modulo where val = 7; -explain (costs off, verbose on, nodes off) delete from tab1_modulo where val = 7; +delete from tab1_modulo where val = 7; +explain (costs off, verbose on, nodes off) delete from tab1_modulo where val = 7; QUERY PLAN --------------------------------------------------------------------- Data Node Scan on "__REMOTE_FQS_QUERY__" @@ -1125,7 +1089,7 @@ select * from tab1_modulo where val = 7; -- Testset 4 for replicated tables, for replicated tables, unless the expression -- is itself unshippable, any query involving a single replicated table is shippable -select cr_table('tab1_replicated(val int, val2 int)', '{1, 2, 3}'::int[], 'replication'); +select cr_table('tab1_replicated(val int, val2 int)', '{1, 2, 3}'::int[], 'replication', NULL); cr_table ---------- @@ -1295,8 +1259,8 @@ explain (costs off, num_nodes on, verbose on, nodes off) select sum(val) from ta (3 rows) -- DMLs -update tab1_replicated set val2 = 1000 where val = 7; -explain (costs off, verbose on, nodes off) update tab1_replicated set val2 = 1000 where val = 7; +update tab1_replicated set val2 = 1000 where val = 7; +explain (costs off, verbose on, nodes off) update tab1_replicated set val2 = 1000 where val = 7; QUERY PLAN ------------------------------------------------------------------------ Data Node Scan on "__REMOTE_FQS_QUERY__" @@ -1310,8 +1274,8 @@ select * from tab1_replicated where val = 7; 7 | 1000 (1 row) -delete from tab1_replicated where val = 7; -explain (costs off, verbose on, nodes off) delete from tab1_replicated where val = 7; +delete from tab1_replicated where val = 7; +explain (costs off, verbose on, nodes off) delete from tab1_replicated where val = 7; QUERY PLAN ------------------------------------------------------------- Data Node Scan on "__REMOTE_FQS_QUERY__" @@ -1328,4 +1292,3 @@ drop table tab1_rr; drop table tab1_hash; drop table tab1_modulo; drop table tab1_replicated; -drop function cr_table(varchar, int[], varchar); diff --git a/src/test/regress/expected/xc_FQS_join.out b/src/test/regress/expected/xc_FQS_join.out index c4af46e7ae..010b021090 100644 --- a/src/test/regress/expected/xc_FQS_join.out +++ b/src/test/regress/expected/xc_FQS_join.out @@ -1,45 +1,5 @@ -- This file contains testcases for JOINs, it does not test the expressions -- create the tables first --- A function to create table on specified nodes -create or replace function cr_table(tab_schema varchar, nodenums int[], distribution varchar, cmd_suffix varchar) -returns void language plpgsql as $$ -declare - cr_command varchar; - nodes varchar[]; - nodename varchar; - nodenames_query varchar; - nodenames varchar; - node int; - sep varchar; - tmp_node int; - num_nodes int; -begin - nodenames_query := 'SELECT node_name FROM pgxc_node WHERE node_type = ''D'''; - cr_command := 'CREATE TABLE ' || tab_schema || ' DISTRIBUTE BY ' || distribution || ' TO NODE '; - for nodename in execute nodenames_query loop - nodes := array_append(nodes, nodename); - end loop; - nodenames := ''; - sep := ''; - num_nodes := array_length(nodes, 1); - foreach node in array nodenums loop - tmp_node := node; - if (tmp_node < 1 or tmp_node > num_nodes) then - tmp_node := tmp_node % num_nodes; - if (tmp_node < 1) then - tmp_node := num_nodes; - end if; - end if; - nodenames := nodenames || sep || nodes[tmp_node]; - sep := ', '; - end loop; - cr_command := cr_command || nodenames; - if (cmd_suffix is not null) then - cr_command := cr_command || ' ' || cmd_suffix; - end if; - execute cr_command; -end; -$$; select cr_table('tab1_rep (val int, val2 int)', '{1, 2, 3}'::int[], 'replication', NULL); cr_table ---------- @@ -111,7 +71,7 @@ explain (costs off, num_nodes on, nodes off, verbose on) select * from tab1_rep, Remote query: SELECT tab1_rep.val, tab1_rep.val2, tab2_rep.val, tab2_rep.val2 FROM tab1_rep, tab2_rep WHERE ((((tab1_rep.val = tab2_rep.val) AND (tab1_rep.val2 = tab2_rep.val2)) AND (tab1_rep.val > 3)) AND (tab1_rep.val < 5)) (3 rows) -select * from tab1_rep natural join tab2_rep +select * from tab1_rep natural join tab2_rep where tab2_rep.val > 2 and tab2_rep.val < 5; val | val2 -----+------ @@ -137,7 +97,7 @@ explain (costs off, num_nodes on, nodes off, verbose on) select * from tab1_rep (3 rows) select * from tab1_rep join tab2_rep using (val, val2) join tab3_rep using (val, val2) - where tab1_rep.val > 0 and tab2_rep.val < 3; + where tab1_rep.val > 0 and tab2_rep.val < 3; val | val2 -----+------ 1 | 1 @@ -153,7 +113,7 @@ select * from tab1_rep join tab2_rep using (val, val2) join tab3_rep using (val, (10 rows) explain (costs off, num_nodes on, nodes off, verbose on) select * from tab1_rep join tab2_rep using (val, val2) join tab3_rep using (val, val2) - where tab1_rep.val > 0 and tab2_rep.val < 3; + where tab1_rep.val > 0 and tab2_rep.val < 3; QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Data Node Scan (primary node count=0, node count=1) on "__REMOTE_FQS_QUERY__" @@ -478,7 +438,7 @@ explain (costs off, verbose on, nodes off) select * from tab1_mod, tab3_mod -- be reduced by JOIN reduction optimization. Turn this optimization off so as -- to generate plans independent of number of nodes in the cluster. set enable_remotejoin to false; -explain (costs off, verbose on, nodes off) update tab1_mod set val2 = 1000 from tab2_mod +explain (costs off, verbose on, nodes off) update tab1_mod set val2 = 1000 from tab2_mod where tab1_mod.val = tab2_mod.val and tab1_mod. val2 = tab2_mod.val2; QUERY PLAN -------------------------------------------------------------------------------------------------------------------- @@ -530,7 +490,7 @@ explain (costs off, verbose on, nodes off) update tab1_rep set val2 = 1000 from Remote query: SELECT ctid, val, val2 FROM ONLY tab2_rep WHERE true (11 rows) -explain (costs off, verbose on, nodes off) delete from tab1_rep using tab2_rep +explain (costs off, verbose on, nodes off) delete from tab1_rep using tab2_rep where tab1_rep.val = tab2_rep.val and tab1_rep.val2 = tab2_rep.val2; QUERY PLAN ------------------------------------------------------------------------------------------ @@ -554,4 +514,3 @@ drop table tab3_rep; drop table tab4_rep; drop table tab1_mod; drop table tab2_mod; -drop function cr_table(varchar, int[], varchar, varchar); diff --git a/src/test/regress/expected/xc_create_function.out b/src/test/regress/expected/xc_create_function.out new file mode 100644 index 0000000000..2a25b0bc2b --- /dev/null +++ b/src/test/regress/expected/xc_create_function.out @@ -0,0 +1,43 @@ +-- +-- XC_CREATE_FUNCTION +-- +-- A function to create table on specified nodes +create or replace function cr_table(tab_schema varchar, nodenums int[], distribution varchar, cmd_suffix varchar) +returns void language plpgsql as $$ +declare + cr_command varchar; + nodes varchar[]; + nodename varchar; + nodenames_query varchar; + nodenames varchar; + node int; + sep varchar; + tmp_node int; + num_nodes int; +begin + nodenames_query := 'SELECT node_name FROM pgxc_node WHERE node_type = ''D'''; + cr_command := 'CREATE TABLE ' || tab_schema || ' DISTRIBUTE BY ' || distribution || ' TO NODE '; + for nodename in execute nodenames_query loop + nodes := array_append(nodes, nodename); + end loop; + nodenames := ''; + sep := ''; + num_nodes := array_length(nodes, 1); + foreach node in array nodenums loop + tmp_node := node; + if (tmp_node < 1 or tmp_node > num_nodes) then + tmp_node := tmp_node % num_nodes; + if (tmp_node < 1) then + tmp_node := num_nodes; + end if; + end if; + nodenames := nodenames || sep || nodes[tmp_node]; + sep := ', '; + end loop; + cr_command := cr_command || nodenames; + if (cmd_suffix is not null) then + cr_command := cr_command || ' ' || cmd_suffix; + end if; + execute cr_command; +end; +$$; diff --git a/src/test/regress/expected/xc_for_update.out b/src/test/regress/expected/xc_for_update.out index ba13280c32..1561780c65 100644 --- a/src/test/regress/expected/xc_for_update.out +++ b/src/test/regress/expected/xc_for_update.out @@ -1,3 +1,41 @@ +-- A function to return data node name given a node number +create or replace function get_xc_node_name(node_num int) returns varchar language plpgsql as $$ +declare + r pgxc_node%rowtype; + node int; + nodenames_query varchar; +begin + nodenames_query := 'SELECT * FROM pgxc_node WHERE node_type = ''D'' ORDER BY xc_node_id'; + + node := 1; + for r in execute nodenames_query loop + if node = node_num THEN + RETURN r.node_name; + end if; + node := node + 1; + end loop; + RETURN 'NODE_?'; +end; +$$; +-- A function to check whether a certain transaction was prepared on a specific data node given its number +create or replace function is_prepared_on_node(txn_id varchar, nodenum int) returns bool language plpgsql as $$ +declare + nodename varchar; + qry varchar; + r pg_prepared_xacts%rowtype; +begin + nodename := (SELECT get_xc_node_name(nodenum)); + qry := 'execute direct on ' || nodename || ' ' || chr(39) || 'select * from pg_prepared_xacts' || chr(39); + + for r in execute qry loop + if r.gid = txn_id THEN + RETURN true; + end if; + end loop; + return false; +end; +$$; +set enable_fast_query_shipping=true; -- create some tables create table t1(val int, val2 int); create table t2(val int, val2 int); @@ -625,8 +663,7 @@ explain (num_nodes off, nodes off, verbose on) select * from c1 for update; -- drop objects created drop table c1; -drop table c1; -ERROR: table "c1" does not exist +drop table p1; drop view v1; drop table t1; drop table t2; @@ -670,8 +707,6 @@ fetch 1 from c2; end; -- prepare a transaction that holds a ACCESS EXCLUSIVE (ROW SHARE) lock on a table begin; --- This lock is here due to bug ID 3517977 -lock table mytab4 in ACCESS EXCLUSIVE mode nowait; declare c1 cursor for select * from mytab1 for update; fetch 1 from c1; val | val2 | val3 @@ -817,8 +852,6 @@ fetch 1 from c2; end; -- prepare a transaction that holds a ACCESS SHARE (ROW SHARE) lock on a table begin; --- This statement is here due to bug ID 3517977 -lock table mytab4 in ACCESS EXCLUSIVE mode nowait; declare c1 cursor for select * from mytab1 for share; fetch 1 from c1; val | val2 | val3 @@ -948,3 +981,1029 @@ drop view v2; drop table mytab1 cascade; drop table mytab4 cascade; drop table mytab3 cascade; +-- Test to make sure prepared transactions are working as expected +-- If a transcation is preared and contains only a select with for share/update, it should be preapred on data nodes +-- create some tables +create table t1(val int, val2 int) DISTRIBUTE BY REPLICATION; +create table t2(val int, val2 int) DISTRIBUTE BY REPLICATION; +create table t3(val int, val2 int) DISTRIBUTE BY REPLICATION; +create table p1(a int, b int) DISTRIBUTE BY REPLICATION; +create table c1(d int, e int) inherits (p1) DISTRIBUTE BY REPLICATION; +-- insert some rows in them +insert into t1 values(1,11),(2,11); +insert into t2 values(3,11),(4,11); +insert into t3 values(5,11),(6,11); +insert into p1 values(55,66),(77,88); +insert into c1 values(111,222,333,444),(123,345,567,789); +-- **** +begin; + select * from t1 order by 1 for update of t1 nowait; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1, t2, t3 order by 1 for update; + val | val2 | val | val2 | val | val2 +-----+------+-----+------+-----+------ + 1 | 11 | 3 | 11 | 5 | 11 + 1 | 11 | 3 | 11 | 6 | 11 + 1 | 11 | 4 | 11 | 5 | 11 + 1 | 11 | 4 | 11 | 6 | 11 + 2 | 11 | 3 | 11 | 5 | 11 + 2 | 11 | 3 | 11 | 6 | 11 + 2 | 11 | 4 | 11 | 5 | 11 + 2 | 11 | 4 | 11 | 6 | 11 +(8 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + WITH q1 AS (SELECT * from t1 order by 1 FOR UPDATE) SELECT * FROM q1,t2 order by 1 FOR UPDATE; + val | val2 | val | val2 +-----+------+-----+------ + 1 | 11 | 3 | 11 + 1 | 11 | 4 | 11 + 2 | 11 | 3 | 11 + 2 | 11 | 4 | 11 +(4 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + WITH q1 AS (SELECT * from t1 order by 1) SELECT * FROM q1 FOR UPDATE; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- false + is_prepared_on_node +--------------------- + f +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + WITH q1 AS (SELECT * from t1 order by 1 FOR UPDATE) SELECT * FROM q1 FOR UPDATE; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1, t2 where t1.val = t2.val for share; + val | val2 | val | val2 +-----+------+-----+------ +(0 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1, t2 for share of t2; + val | val2 | val | val2 +-----+------+-----+------ + 1 | 11 | 3 | 11 + 1 | 11 | 4 | 11 + 2 | 11 | 3 | 11 + 2 | 11 | 4 | 11 +(4 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from (select * from t1 for update of t1 nowait) as foo; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1 where val in (select val from t2 for update of t2 nowait) for update; + val | val2 +-----+------ +(0 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1 where val in (select val from t2 for update of t2 nowait); + val | val2 +-----+------ +(0 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1, t2 for share of t2 for update of t1; + val | val2 | val | val2 +-----+------+-----+------ + 1 | 11 | 3 | 11 + 1 | 11 | 4 | 11 + 2 | 11 | 3 | 11 + 2 | 11 | 4 | 11 +(4 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1 for share of t1 for update of t1; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1 for update of t1 for share of t1; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1 for share of t1 for share of t1 for update of t1; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1 for share of t1 for share of t1 for share of t1; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1 for share of t1 for share of t1 nowait for update of t1; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1 a,t1 b for share of a for update of b; + val | val2 | val | val2 +-----+------+-----+------ + 1 | 11 | 1 | 11 + 1 | 11 | 2 | 11 + 2 | 11 | 1 | 11 + 2 | 11 | 2 | 11 +(4 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from p1 order by 1 for update; + a | b +-----+----- + 55 | 66 + 77 | 88 + 111 | 222 + 123 | 345 +(4 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from p1 for update; + a | b +-----+----- + 55 | 66 + 77 | 88 + 111 | 222 + 123 | 345 +(4 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); --true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from c1 order by 1 for update; + a | b | d | e +-----+-----+-----+----- + 111 | 222 | 333 | 444 + 123 | 345 | 567 | 789 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from c1 for update; + a | b | d | e +-----+-----+-----+----- + 111 | 222 | 333 | 444 + 123 | 345 | 567 | 789 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- ********************************** +-- repeat all tests with FQS disabled +-- ********************************** +set enable_fast_query_shipping=false; +-- **** +begin; + select * from t1 order by 1 for update of t1 nowait; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1, t2, t3 order by 1 for update; + val | val2 | val | val2 | val | val2 +-----+------+-----+------+-----+------ + 1 | 11 | 3 | 11 | 5 | 11 + 1 | 11 | 3 | 11 | 6 | 11 + 1 | 11 | 4 | 11 | 5 | 11 + 1 | 11 | 4 | 11 | 6 | 11 + 2 | 11 | 3 | 11 | 5 | 11 + 2 | 11 | 3 | 11 | 6 | 11 + 2 | 11 | 4 | 11 | 5 | 11 + 2 | 11 | 4 | 11 | 6 | 11 +(8 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + WITH q1 AS (SELECT * from t1 order by 1 FOR UPDATE) SELECT * FROM q1,t2 order by 1 FOR UPDATE; + val | val2 | val | val2 +-----+------+-----+------ + 1 | 11 | 3 | 11 + 1 | 11 | 4 | 11 + 2 | 11 | 3 | 11 + 2 | 11 | 4 | 11 +(4 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + WITH q1 AS (SELECT * from t1 order by 1) SELECT * FROM q1 FOR UPDATE; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- false + is_prepared_on_node +--------------------- + f +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + WITH q1 AS (SELECT * from t1 order by 1 FOR UPDATE) SELECT * FROM q1 FOR UPDATE; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1, t2 where t1.val = t2.val for share; + val | val2 | val | val2 +-----+------+-----+------ +(0 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1, t2 for share of t2; + val | val2 | val | val2 +-----+------+-----+------ + 1 | 11 | 3 | 11 + 1 | 11 | 4 | 11 + 2 | 11 | 3 | 11 + 2 | 11 | 4 | 11 +(4 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from (select * from t1 for update of t1 nowait) as foo; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1 where val in (select val from t2 for update of t2 nowait) for update; + val | val2 +-----+------ +(0 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1 where val in (select val from t2 for update of t2 nowait); + val | val2 +-----+------ +(0 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1, t2 for share of t2 for update of t1; + val | val2 | val | val2 +-----+------+-----+------ + 1 | 11 | 3 | 11 + 1 | 11 | 4 | 11 + 2 | 11 | 3 | 11 + 2 | 11 | 4 | 11 +(4 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1 for share of t1 for update of t1; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1 for update of t1 for share of t1; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1 for share of t1 for share of t1 for update of t1; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1 for share of t1 for share of t1 for share of t1; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1 for share of t1 for share of t1 nowait for update of t1; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1 a,t1 b for share of a for update of b; + val | val2 | val | val2 +-----+------+-----+------ + 1 | 11 | 1 | 11 + 1 | 11 | 2 | 11 + 2 | 11 | 1 | 11 + 2 | 11 | 2 | 11 +(4 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from p1 order by 1 for update; + a | b +-----+----- + 55 | 66 + 77 | 88 + 111 | 222 + 123 | 345 +(4 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from p1 for update; + a | b +-----+----- + 55 | 66 + 77 | 88 + 111 | 222 + 123 | 345 +(4 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); --true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from c1 order by 1 for update; + a | b | d | e +-----+-----+-----+----- + 111 | 222 | 333 | 444 + 123 | 345 | 567 | 789 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from c1 for update; + a | b | d | e +-----+-----+-----+----- + 111 | 222 | 333 | 444 + 123 | 345 | 567 | 789 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +-- **** +set enable_fast_query_shipping=true; +-- **** +delete from t3 where val != 5; +PREPARE my_plan(int) as select * from t3 for update; +execute my_plan(1); + val | val2 +-----+------ + 5 | 11 +(1 row) + +-- **** +-- drop objects created +drop table c1; +drop table p1; +drop table t1; +drop table t2; +drop table t3; diff --git a/src/test/regress/expected/xc_groupby.out b/src/test/regress/expected/xc_groupby.out index 1c1e2bd064..390beb4410 100644 --- a/src/test/regress/expected/xc_groupby.out +++ b/src/test/regress/expected/xc_groupby.out @@ -454,8 +454,8 @@ explain (verbose true, costs false, nodes false) select avg(a) from xc_groupby_g select avg(b) from xc_groupby_g group by c; avg ----- - 2.3 2.1 + 2.3 (2 rows) explain (verbose true, costs false, nodes false) select avg(b) from xc_groupby_g group by c; @@ -473,8 +473,8 @@ explain (verbose true, costs false, nodes false) select avg(b) from xc_groupby_g select avg(c) from xc_groupby_g group by c; avg -------------------- - 5.2000000000000000 3.2000000000000000 + 5.2000000000000000 (2 rows) explain (verbose true, costs false, nodes false) select avg(c) from xc_groupby_g group by c; @@ -501,9 +501,9 @@ insert into xc_groupby_tab2 values (1, 1), (4, 1), (8, 1), (2, 4), (9, 4), (3, 4 select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_groupby_tab1 group by val2; count | sum | avg | ?column? | val2 -------+-----+--------------------+------------------+------ + 3 | 11 | 3.6666666666666667 | 3.66666666666667 | 3 3 | 6 | 2.0000000000000000 | 2 | 1 2 | 8 | 4.0000000000000000 | 4 | 2 - 3 | 11 | 3.6666666666666667 | 3.66666666666667 | 3 (3 rows) explain (verbose true, costs false, nodes false) select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_groupby_tab1 group by val2; @@ -550,8 +550,8 @@ explain (verbose true, costs false, nodes false) select count(*), sum(xc_groupby select sum(y) from (select sum(val) y, val2%2 x from xc_groupby_tab1 group by val2) q1 group by x; sum ----- - 8 17 + 8 (2 rows) explain (verbose true, costs false, nodes false) select sum(y) from (select sum(val) y, val2%2 x from xc_groupby_tab1 group by val2) q1 group by x; @@ -572,9 +572,9 @@ explain (verbose true, costs false, nodes false) select sum(y) from (select sum( select val2 from xc_groupby_tab1 group by val2; val2 ------ + 3 1 2 - 3 (3 rows) explain (verbose true, costs false, nodes false) select val2 from xc_groupby_tab1 group by val2; @@ -592,12 +592,12 @@ explain (verbose true, costs false, nodes false) select val2 from xc_groupby_tab select val + val2 from xc_groupby_tab1 group by val + val2; ?column? ---------- + 9 + 2 4 3 7 8 - 9 - 2 (6 rows) explain (verbose true, costs false, nodes false) select val + val2 from xc_groupby_tab1 group by val + val2; @@ -663,10 +663,10 @@ explain (verbose true, costs false, nodes false) select xc_groupby_tab1.val + xc select xc_groupby_tab1.val + xc_groupby_tab2.val2 from xc_groupby_tab1, xc_groupby_tab2 where xc_groupby_tab1.val = xc_groupby_tab2.val group by xc_groupby_tab1.val + xc_groupby_tab2.val2; ?column? ---------- + 5 6 2 7 - 5 (4 rows) explain (verbose true, costs false, nodes false) select xc_groupby_tab1.val + xc_groupby_tab2.val2 from xc_groupby_tab1, xc_groupby_tab2 where xc_groupby_tab1.val = xc_groupby_tab2.val group by xc_groupby_tab1.val + xc_groupby_tab2.val2; @@ -685,9 +685,9 @@ explain (verbose true, costs false, nodes false) select xc_groupby_tab1.val + xc select count(*) + sum(val) + avg(val), val2 from xc_groupby_tab1 group by val2; ?column? | val2 ---------------------+------ + 17.6666666666666667 | 3 11.0000000000000000 | 1 14.0000000000000000 | 2 - 17.6666666666666667 | 3 (3 rows) explain (verbose true, costs false, nodes false) select count(*) + sum(val) + avg(val), val2 from xc_groupby_tab1 group by val2; @@ -707,8 +707,8 @@ select sum(val), avg(val), 2 * val2 from xc_groupby_tab1 group by 2 * val2; sum | avg | ?column? -----+--------------------+---------- 11 | 3.6666666666666667 | 6 - 6 | 2.0000000000000000 | 2 8 | 4.0000000000000000 | 4 + 6 | 2.0000000000000000 | 2 (3 rows) explain (verbose true, costs false, nodes false) select sum(val), avg(val), 2 * val2 from xc_groupby_tab1 group by 2 * val2; @@ -907,8 +907,8 @@ explain (verbose true, costs false, nodes false) select avg(a) from xc_groupby_g select avg(b) from xc_groupby_g group by c; avg ----- - 2.3 2.1 + 2.3 (2 rows) explain (verbose true, costs false, nodes false) select avg(b) from xc_groupby_g group by c; @@ -926,8 +926,8 @@ explain (verbose true, costs false, nodes false) select avg(b) from xc_groupby_g select avg(c) from xc_groupby_g group by c; avg -------------------- - 5.2000000000000000 3.2000000000000000 + 5.2000000000000000 (2 rows) explain (verbose true, costs false, nodes false) select avg(c) from xc_groupby_g group by c; diff --git a/src/test/regress/expected/xc_having.out b/src/test/regress/expected/xc_having.out index e10fe64f5f..2021f2fcd3 100644 --- a/src/test/regress/expected/xc_having.out +++ b/src/test/regress/expected/xc_having.out @@ -52,7 +52,7 @@ explain (verbose true, costs false, nodes false) select count(*), sum(val), avg( Remote query: SELECT count(*), sum(group_1.val), avg(group_1.val), group_1.val2 FROM (SELECT val, val2 FROM ONLY xc_having_tab1 WHERE true) group_1 GROUP BY 4 (8 rows) -select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2; +select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2 order by 1; count | sum | avg | ?column? | val2 -------+-----+--------------------+------------------+------ 2 | 8 | 4.0000000000000000 | 4 | 2 @@ -136,9 +136,9 @@ explain (verbose true, costs false, nodes false) select val2 from xc_having_tab1 select val + val2 from xc_having_tab1 group by val + val2 having sum(val) > 5; ?column? ---------- + 9 4 8 - 9 (3 rows) explain (verbose true, costs false, nodes false) select val + val2 from xc_having_tab1 group by val + val2 having sum(val) > 5; @@ -222,7 +222,7 @@ explain (verbose true, costs false, nodes false) select count(*), sum(val), avg( Remote query: SELECT count(*), sum(group_1.val), avg(group_1.val), group_1.val2 FROM (SELECT val, val2 FROM ONLY xc_having_tab1 WHERE true) group_1 GROUP BY 4 (8 rows) -select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2; +select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2 order by 1; count | sum | avg | ?column? | val2 -------+-----+--------------------+------------------+------ 2 | 8 | 4.0000000000000000 | 4 | 2 @@ -302,9 +302,9 @@ explain (verbose true, costs false, nodes false) select val2 from xc_having_tab1 select val + val2 from xc_having_tab1 group by val + val2 having sum(val) > 5; ?column? ---------- + 9 4 8 - 9 (3 rows) explain (verbose true, costs false, nodes false) select val + val2 from xc_having_tab1 group by val + val2 having sum(val) > 5; @@ -388,7 +388,7 @@ explain (verbose true, costs false, nodes false) select count(*), sum(val), avg( Remote query: SELECT count(*), sum(group_1.val), avg(group_1.val), group_1.val2 FROM (SELECT val, val2 FROM ONLY xc_having_tab1 WHERE true) group_1 GROUP BY 4 ORDER BY 4 (8 rows) -select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2; +select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2 order by 1; count | sum | avg | ?column? | val2 -------+-----+--------------------+------------------+------ 2 | 8 | 4.0000000000000000 | 4 | 2 @@ -561,7 +561,7 @@ explain (verbose true, costs false, nodes false) select count(*), sum(val), avg( Remote query: SELECT count(*), sum(group_1.val), avg(group_1.val), group_1.val2 FROM (SELECT val, val2 FROM ONLY xc_having_tab1 WHERE true) group_1 GROUP BY 4 ORDER BY 4 (8 rows) -select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2; +select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2 order by 1; count | sum | avg | ?column? | val2 -------+-----+--------------------+------------------+------ 2 | 8 | 4.0000000000000000 | 4 | 2 diff --git a/src/test/regress/expected/xc_misc.out b/src/test/regress/expected/xc_misc.out index e714e8d299..41e8c7c36d 100644 --- a/src/test/regress/expected/xc_misc.out +++ b/src/test/regress/expected/xc_misc.out @@ -1,40 +1,4 @@ --- A function to create table on specified nodes -create or replace function cr_table(tab_schema varchar, nodenums int[], distribution varchar) returns void language plpgsql as $$ -declare - cr_command varchar; - nodes varchar[]; - nodename varchar; - nodenames_query varchar; - nodenames varchar; - node int; - sep varchar; - tmp_node int; - num_nodes int; -begin - nodenames_query := 'SELECT node_name FROM pgxc_node WHERE node_type = ''D'''; - cr_command := 'CREATE TABLE ' || tab_schema || ' DISTRIBUTE BY ' || distribution || ' TO NODE '; - for nodename in execute nodenames_query loop - nodes := array_append(nodes, nodename); - end loop; - nodenames := ''; - sep := ''; - num_nodes := array_length(nodes, 1); - foreach node in array nodenums loop - tmp_node := node; - if (tmp_node < 1 or tmp_node > num_nodes) then - tmp_node := tmp_node % num_nodes; - if (tmp_node < 1) then - tmp_node := num_nodes; - end if; - end if; - nodenames := nodenames || sep || nodes[tmp_node]; - sep := ', '; - end loop; - cr_command := cr_command || nodenames; - execute cr_command; -end; -$$; --- A function to return a unified data node name given a node identifer +-- A function to return a unified data node name given a node identifer create or replace function get_unified_node_name(node_ident int) returns varchar language plpgsql as $$ declare r pgxc_node%rowtype; @@ -54,7 +18,7 @@ begin end; $$; -- Test the system column added by XC called xc_node_id, used to find which tuples belong to which data node -select cr_table('t1(a int, b int)', '{1, 2}'::int[], 'modulo(a)'); +select cr_table('t1(a int, b int)', '{1, 2}'::int[], 'modulo(a)', NULL); cr_table ---------- @@ -83,23 +47,10 @@ select get_unified_node_name(xc_node_id),* from t1 where xc_node_id > 0 order by NODE_2 | 7 | 44 (4 rows) -select get_unified_node_name(xc_node_id),* from t1 order by xc_node_id; - get_unified_node_name | a | b ------------------------+---+---- - NODE_1 | 2 | 11 - NODE_1 | 4 | 22 - NODE_1 | 6 | 33 - NODE_1 | 8 | 44 - NODE_2 | 1 | 11 - NODE_2 | 3 | 11 - NODE_2 | 5 | 22 - NODE_2 | 7 | 44 -(8 rows) - create table t2(a int , xc_node_id int) distribute by modulo(a); ERROR: column name "xc_node_id" conflicts with a system column name create table t2(a int , b int) distribute by modulo(xc_node_id); -ERROR: Column xc_node_id is not modulo distributable data type +ERROR: Invalid distribution column specified drop table t1; -- Test an SQL function with multiple statements in it including a utility statement. create table my_tab1 (a int); @@ -110,7 +61,7 @@ CONTEXT: SQL function "f1" SET check_function_bodies = false; create function f1 () returns setof my_tab1 as $$ create table my_tab2 (a int); select * from my_tab1; $$ language sql; select f1(); -ERROR: Unexpected response from the data nodes for 'T' message, current request type 1 +ERROR: Unexpected response from the Datanodes for 'T' message, current request type 1 CONTEXT: SQL function "f1" statement 1 SET check_function_bodies = true; drop function f1(); @@ -141,3 +92,47 @@ drop function test_fun_2(); drop table tab4; drop table tab5; drop table my_tab1; +-- Test to make sure that the block of +-- INSERT SELECT in case of inserts into a child by selecting from +-- a parent works fine +create table t_11 ( a int, b int); +create table t_22 ( a int, b int); +insert into t_11 values(1,2),(3,4); +insert into t_22 select * from t_11; -- should pass +CREATE TABLE c_11 () INHERITS (t_11); +insert into c_11 select * from t_22; -- should pass +insert into c_11 select * from t_11; -- should fail +ERROR: INSERT SELECT is not supported when inserts are done in a child by selecting from its parent +insert into c_11 (select * from t_11 union all select * from t_22); -- should fail +ERROR: INSERT SELECT is not supported when inserts are done in a child by selecting from its parent +insert into c_11 (select * from t_11,t_22); -- should fail +ERROR: INSERT SELECT is not supported when inserts are done in a child by selecting from its parent +insert into c_11 (select * from t_22 where a in (select a from t_11)); -- should pass +insert into c_11 (select * from t_11 where a in (select a from t_22)); -- should fail +ERROR: INSERT SELECT is not supported when inserts are done in a child by selecting from its parent +insert into t_11 select * from c_11; -- should pass +-- test to make sure count from a parent table works fine +select count(*) from t_11; + count +------- + 10 +(1 row) + +CREATE TABLE grand_parent (code int, population float, altitude int); +INSERT INTO grand_parent VALUES (0, 1.1, 63); +CREATE TABLE my_parent (code int, population float, altitude int); +INSERT INTO my_parent VALUES (1, 2.1, 73); +CREATE TABLE child_11 () INHERITS (my_parent); +CREATE TABLE grand_child () INHERITS (child_11); +INSERT INTO child_11 SELECT * FROM grand_parent; -- should pass +INSERT INTO child_11 SELECT * FROM my_parent; -- should fail +ERROR: INSERT SELECT is not supported when inserts are done in a child by selecting from its parent +INSERT INTO grand_child SELECT * FROM my_parent; -- should pass +INSERT INTO grand_child SELECT * FROM grand_parent; -- should pass +drop table grand_child; +drop table child_11; +drop table my_parent; +drop table grand_parent; +drop table c_11; +drop table t_22; +drop table t_11; diff --git a/src/test/regress/expected/xc_prepared_xacts.out b/src/test/regress/expected/xc_prepared_xacts.out new file mode 100644 index 0000000000..6ddb2e44f8 --- /dev/null +++ b/src/test/regress/expected/xc_prepared_xacts.out @@ -0,0 +1,457 @@ +-- A function to return data node name given a node number +create or replace function get_xc_node_name(node_num int) returns varchar language plpgsql as $$ +declare + r pgxc_node%rowtype; + node int; + nodenames_query varchar; +begin + nodenames_query := 'SELECT * FROM pgxc_node WHERE node_type = ''D'' ORDER BY xc_node_id'; + + node := 1; + for r in execute nodenames_query loop + if node = node_num THEN + RETURN r.node_name; + end if; + node := node + 1; + end loop; + RETURN 'NODE_?'; +end; +$$; +-- A function to check whether a certain transaction was prepared on a specific data node given its number +create or replace function is_prepared_on_node(txn_id varchar, nodenum int) returns bool language plpgsql as $$ +declare + nodename varchar; + qry varchar; + r pg_prepared_xacts%rowtype; +begin + nodename := (SELECT get_xc_node_name(nodenum)); + qry := 'execute direct on ' || nodename || ' ' || chr(39) || 'select * from pg_prepared_xacts' || chr(39); + + for r in execute qry loop + if r.gid = txn_id THEN + RETURN true; + end if; + end loop; + return false; +end; +$$; +set enable_fast_query_shipping=true; +-- Test to make sure prepared transactions are working as expected +-- If a transcation is preared and contains only a select, it should NOT be preapred on data nodes +-- create some tables +create table t1(val int, val2 int) DISTRIBUTE BY REPLICATION; +create table t2(val int, val2 int) DISTRIBUTE BY REPLICATION; +create table t3(val int, val2 int) DISTRIBUTE BY REPLICATION; +create table p1(a int, b int) DISTRIBUTE BY REPLICATION; +create table c1(d int, e int) inherits (p1) DISTRIBUTE BY REPLICATION; +-- insert some rows in them +insert into t1 values(1,11),(2,11); +insert into t2 values(3,11),(4,11); +insert into t3 values(5,11),(6,11); +insert into p1 values(55,66),(77,88); +insert into c1 values(111,222,333,444),(123,345,567,789); +-- **** +begin; + select * from t1 order by val; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + + select * from t2 order by val; + val | val2 +-----+------ + 3 | 11 + 4 | 11 +(2 rows) + + select * from t3 order by val; + val | val2 +-----+------ + 5 | 11 + 6 | 11 +(2 rows) + + select * from p1 order by a; + a | b +-----+----- + 55 | 66 + 77 | 88 + 111 | 222 + 123 | 345 +(4 rows) + + select * from c1 order by a; + a | b | d | e +-----+-----+-----+----- + 111 | 222 | 333 | 444 + 123 | 345 | 567 | 789 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- false + is_prepared_on_node +--------------------- + f +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + insert into t3 values(7,11); + insert into t3 values(8,11); + insert into t3 values(9,11); + insert into t3 values(0,11); +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +select * from t3 order by val; + val | val2 +-----+------ + 0 | 11 + 5 | 11 + 6 | 11 + 7 | 11 + 8 | 11 + 9 | 11 +(6 rows) + +-- **** +begin; + update t3 set val2 = 22; +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +select * from t3 order by val; + val | val2 +-----+------ + 0 | 22 + 5 | 22 + 6 | 22 + 7 | 22 + 8 | 22 + 9 | 22 +(6 rows) + +-- **** +begin; + delete from t3 where val = 0; +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +select * from t3 order by val; + val | val2 +-----+------ + 5 | 22 + 6 | 22 + 7 | 22 + 8 | 22 + 9 | 22 +(5 rows) + +-- **** +begin; + WITH q1 AS (SELECT * from t1 order by 1) SELECT * FROM q1; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- false + is_prepared_on_node +--------------------- + f +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- false + is_prepared_on_node +--------------------- + f +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1, t2 where t1.val = t2.val; + val | val2 | val | val2 +-----+------+-----+------ +(0 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- false + is_prepared_on_node +--------------------- + f +(1 row) + +commit prepared 'pt_1'; +-- ********************************** +-- repeat all tests with FQS disabled +-- ********************************** +delete from t3; +set enable_fast_query_shipping=false; +-- **** +begin; + select * from t1 order by val; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + + select * from t2 order by val; + val | val2 +-----+------ + 3 | 11 + 4 | 11 +(2 rows) + + select * from t3 order by val; + val | val2 +-----+------ +(0 rows) + + select * from p1 order by a; + a | b +-----+----- + 55 | 66 + 77 | 88 + 111 | 222 + 123 | 345 +(4 rows) + + select * from c1 order by a; + a | b | d | e +-----+-----+-----+----- + 111 | 222 | 333 | 444 + 123 | 345 | 567 | 789 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- false + is_prepared_on_node +--------------------- + f +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + insert into t3 values(7,11); + insert into t3 values(8,11); + insert into t3 values(9,11); + insert into t3 values(0,11); +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +select * from t3 order by val; + val | val2 +-----+------ + 0 | 11 + 7 | 11 + 8 | 11 + 9 | 11 +(4 rows) + +-- **** +begin; + update t3 set val2 = 22; +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +select * from t3 order by val; + val | val2 +-----+------ + 0 | 22 + 7 | 22 + 8 | 22 + 9 | 22 +(4 rows) + +-- **** +begin; + delete from t3 where val = 7; +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- true + is_prepared_on_node +--------------------- + t +(1 row) + +commit prepared 'pt_1'; +select * from t3 order by val; + val | val2 +-----+------ + 0 | 22 + 8 | 22 + 9 | 22 +(3 rows) + +-- **** +begin; + WITH q1 AS (SELECT * from t1 order by 1) SELECT * FROM q1; + val | val2 +-----+------ + 1 | 11 + 2 | 11 +(2 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- false + is_prepared_on_node +--------------------- + f +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- false + is_prepared_on_node +--------------------- + f +(1 row) + +commit prepared 'pt_1'; +-- **** +begin; + select * from t1, t2 where t1.val = t2.val; + val | val2 | val | val2 +-----+------+-----+------ +(0 rows) + +prepare transaction 'pt_1'; +select gid from pg_prepared_xacts where gid = 'pt_1'; + gid +------ + pt_1 +(1 row) + +select is_prepared_on_node('pt_1', 1); -- false + is_prepared_on_node +--------------------- + f +(1 row) + +commit prepared 'pt_1'; +-- **** +set enable_fast_query_shipping=true; +-- drop objects created +drop table c1; +drop table p1; +drop table t1; +drop table t2; +drop table t3; diff --git a/src/test/regress/expected/xc_temp.out b/src/test/regress/expected/xc_temp.out index 1dceba364a..0afb4a86ae 100644 --- a/src/test/regress/expected/xc_temp.out +++ b/src/test/regress/expected/xc_temp.out @@ -1,8 +1,6 @@ -- -- XC_TEMP -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; -- Create TEMPORARY and normal tables CREATE TABLE table_rep (a int, b_rep char(1)) DISTRIBUTE BY REPLICATION; CREATE TABLE table_hash (a int, b_hash char(1)) DISTRIBUTE BY HASH(a); diff --git a/src/test/regress/expected/xml.out b/src/test/regress/expected/xml.out index d87649bab1..31a4984272 100644 --- a/src/test/regress/expected/xml.out +++ b/src/test/regress/expected/xml.out @@ -686,3 +686,23 @@ SELECT xml_is_well_formed('abc'); t (1 row) +-- External entity references should not leak filesystem information. +SELECT XMLPARSE(DOCUMENT ']>&c;'); + xmlparse +----------------------------------------------------------------- + ]>&c; +(1 row) + +SELECT XMLPARSE(DOCUMENT ']>&c;'); + xmlparse +----------------------------------------------------------------------- + ]>&c; +(1 row) + +-- This might or might not load the requested DTD, but it mustn't throw error. +SELECT XMLPARSE(DOCUMENT ' '); + xmlparse +------------------------------------------------------------------------------------------------------------------------------------------------------ +   +(1 row) + diff --git a/src/test/regress/expected/xml_1.out b/src/test/regress/expected/xml_1.out index fce45e9a27..f76d5da329 100644 --- a/src/test/regress/expected/xml_1.out +++ b/src/test/regress/expected/xml_1.out @@ -632,3 +632,17 @@ SELECT xml_is_well_formed('abc'); ERROR: unsupported XML feature DETAIL: This functionality requires the server to be built with libxml support. HINT: You need to rebuild PostgreSQL using --with-libxml. +-- External entity references should not leak filesystem information. +SELECT XMLPARSE(DOCUMENT ']>&c;'); +ERROR: unsupported XML feature +DETAIL: This functionality requires the server to be built with libxml support. +HINT: You need to rebuild PostgreSQL using --with-libxml. +SELECT XMLPARSE(DOCUMENT ']>&c;'); +ERROR: unsupported XML feature +DETAIL: This functionality requires the server to be built with libxml support. +HINT: You need to rebuild PostgreSQL using --with-libxml. +-- This might or might not load the requested DTD, but it mustn't throw error. +SELECT XMLPARSE(DOCUMENT ' '); +ERROR: unsupported XML feature +DETAIL: This functionality requires the server to be built with libxml support. +HINT: You need to rebuild PostgreSQL using --with-libxml. diff --git a/src/test/regress/input/copy.source b/src/test/regress/input/copy.source index d6cf60094b..80f911fea8 100644 --- a/src/test/regress/input/copy.source +++ b/src/test/regress/input/copy.source @@ -60,8 +60,30 @@ COPY array_op_test FROM '@abs_srcdir@/data/array.data'; COPY array_index_op_test FROM '@abs_srcdir@/data/array.data'; --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; +-- analyze all the data we just loaded, to ensure plan consistency +-- in later tests + +ANALYZE aggtest; +ANALYZE onek; +ANALYZE tenk1; +ANALYZE slow_emp4000; +ANALYZE person; +ANALYZE emp; +ANALYZE student; +ANALYZE stud_emp; +ANALYZE road; +ANALYZE real_city; +ANALYZE hash_i4_heap; +ANALYZE hash_name_heap; +ANALYZE hash_txt_heap; +ANALYZE hash_f8_heap; +ANALYZE test_tsvector; +ANALYZE bt_i4_heap; +ANALYZE bt_name_heap; +ANALYZE bt_txt_heap; +ANALYZE bt_f8_heap; +ANALYZE array_op_test; +ANALYZE array_index_op_test; --- test copying in CSV mode with various styles --- of embedded line ending characters diff --git a/src/test/regress/input/security_label.source b/src/test/regress/input/security_label.source index 810a721ca8..9b430b09a5 100644 --- a/src/test/regress/input/security_label.source +++ b/src/test/regress/input/security_label.source @@ -44,6 +44,7 @@ SET SESSION AUTHORIZATION seclabel_user1; SECURITY LABEL ON TABLE seclabel_tbl1 IS 'classified'; -- OK SECURITY LABEL ON COLUMN seclabel_tbl1.a IS 'unclassified'; -- OK +SECURITY LABEL ON COLUMN seclabel_tbl1 IS 'unclassified'; -- fail SECURITY LABEL ON TABLE seclabel_tbl1 IS '...invalid label...'; -- fail SECURITY LABEL FOR 'dummy' ON TABLE seclabel_tbl1 IS 'unclassified'; -- OK SECURITY LABEL FOR 'unknown_seclabel' ON TABLE seclabel_tbl1 IS 'classified'; -- fail diff --git a/src/test/regress/sql/xc_copy.sql b/src/test/regress/input/xc_copy.source similarity index 51% rename from src/test/regress/sql/xc_copy.sql rename to src/test/regress/input/xc_copy.source index ee971ec563..55b8d13b37 100644 --- a/src/test/regress/sql/xc_copy.sql +++ b/src/test/regress/input/xc_copy.source @@ -1,9 +1,13 @@ -create or replace function pgxc_nodetype() returns varchar as +-- +-- XC_COPY +-- +-- COPY tests for a Postgres-XC cluster +create or replace function pgxc_nodetype() returns varchar as $$ declare - pgxc_class_entries int; + pgxc_class_entries int; begin - select into pgxc_class_entries count(*) from pgxc_class ; + select into pgxc_class_entries count(*) from pgxc_class ; if pgxc_class_entries > 0 then return ' Node type: C'; else @@ -19,25 +23,25 @@ begin end $$ language plpgsql; -create or replace function deffunc_bytea() returns bytea as +create or replace function deffunc_bytea() returns bytea as $$ begin return E'\0123'; end $$ language plpgsql; -create or replace function deffunc_str() returns varchar as +create or replace function deffunc_str() returns varchar as $$ begin return E'\\.\\000"\\''!|''\\N' || pgxc_nodetype(); end $$ language plpgsql; -create or replace function deffunc_str_i() returns varchar immutable as +create or replace function deffunc_str_i() returns varchar immutable as $$ begin return E'\\.\\000"\\''!|''' || pgxc_nodetype(); end $$ language plpgsql; -create or replace function deffunc_nullstring() returns varchar as +create or replace function deffunc_nullstring() returns varchar as $$ begin return E'\\N'; @@ -70,11 +74,11 @@ insert into xccopydef (id1) values (4567); select * from xccopydef order by idseq; -copy xccopydef (id1, id2) to '/tmp/copydefout.dat' (format 'binary'); +copy xccopydef (id1, id2) to '@abs_builddir@/results/copydefout.data' (format 'binary'); truncate xccopydef; -copy xccopydef (id1, id2) from '/tmp/copydefout.dat' (format 'binary'); +copy xccopydef (id1, id2) from '@abs_builddir@/results/copydefout.data' (format 'binary'); select * from xccopydef order by idseq; @@ -85,3 +89,36 @@ drop function deffunc_bytea(); drop function deffunc_str(); drop function deffunc_str_i(); drop function deffunc_nullstring(); + +-- Tests related to COPY for a Postgres-XC cluster +-- Create a table not using the first node of cluster +SELECT cr_table('xc_copy_1(a int, b int)', '{2}'::int[], 'replication', NULL); +INSERT INTO xc_copy_1 VALUES (1,23),(34,5),(9,11); +-- Extract its data +COPY xc_copy_1 TO STDOUT; +DROP TABLE xc_copy_1; + +-- Quoted table name +-- check for correct remote query generation +CREATE TABLE "Xc_copy_2" (a int, b int); +COPY "Xc_copy_2" FROM STDIN DELIMITER ','; +1,2 +3,4 +\. +COPY "Xc_copy_2" TO STDOUT; +DROP TABLE "Xc_copy_2"; + +-- Quoted column name +-- check for correct remote query generation +CREATE TABLE xc_copy_3(a int, "user" int); +COPY xc_copy_3 (a, "user") FROM STDIN (DELIMITER ','); +1,2 +3,4 +\. +COPY xc_copy_3 TO STDOUT; +DROP TABLE xc_copy_3; + +-- Table with no locator data +CREATE TABLE xc_copy_4 (c1 int) DISTRIBUTE BY HASH(c1); +COPY (SELECT pclocatortype,pcattnum,pchashalgorithm,pchashbuckets FROM pgxc_class WHERE pgxc_class.pcrelid = 'xc_copy_4'::regclass) TO stdout; +DROP TABLE xc_copy_4; diff --git a/src/test/regress/output/constraints_1.source b/src/test/regress/output/constraints_1.source index 966d447193..1b45784814 100644 --- a/src/test/regress/output/constraints_1.source +++ b/src/test/regress/output/constraints_1.source @@ -278,7 +278,7 @@ SELECT '' AS two, * FROM COPY_TBL order by x,y,z; (2 rows) COPY COPY_TBL FROM '@abs_srcdir@/data/constrf.data'; -ERROR: Error while running COPY +ERROR: new row for relation "copy_tbl" violates check constraint "copy_con" SELECT * FROM COPY_TBL order by x,y,z; x | y | z ---+---------------+--- diff --git a/src/test/regress/output/copy.source b/src/test/regress/output/copy.source index 180dcf618e..e8951c5b73 100644 --- a/src/test/regress/output/copy.source +++ b/src/test/regress/output/copy.source @@ -34,8 +34,29 @@ COPY bt_txt_heap FROM '@abs_srcdir@/data/desc.data'; COPY bt_f8_heap FROM '@abs_srcdir@/data/hash.data'; COPY array_op_test FROM '@abs_srcdir@/data/array.data'; COPY array_index_op_test FROM '@abs_srcdir@/data/array.data'; --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; +-- analyze all the data we just loaded, to ensure plan consistency +-- in later tests +ANALYZE aggtest; +ANALYZE onek; +ANALYZE tenk1; +ANALYZE slow_emp4000; +ANALYZE person; +ANALYZE emp; +ANALYZE student; +ANALYZE stud_emp; +ANALYZE road; +ANALYZE real_city; +ANALYZE hash_i4_heap; +ANALYZE hash_name_heap; +ANALYZE hash_txt_heap; +ANALYZE hash_f8_heap; +ANALYZE test_tsvector; +ANALYZE bt_i4_heap; +ANALYZE bt_name_heap; +ANALYZE bt_txt_heap; +ANALYZE bt_f8_heap; +ANALYZE array_op_test; +ANALYZE array_index_op_test; --- test copying in CSV mode with various styles --- of embedded line ending characters create temp table copytest ( diff --git a/src/test/regress/output/security_label.source b/src/test/regress/output/security_label.source index 4bc803d694..b85467c4f0 100644 --- a/src/test/regress/output/security_label.source +++ b/src/test/regress/output/security_label.source @@ -30,13 +30,15 @@ ERROR: no security label providers have been loaded SECURITY LABEL ON TABLE seclabel_tbl3 IS 'unclassified'; -- fail ERROR: no security label providers have been loaded -- Load dummy external security provider -LOAD '@abs_builddir@/dummy_seclabel@DLSUFFIX@'; +LOAD '@libdir@/dummy_seclabel@DLSUFFIX@'; -- -- Test of SECURITY LABEL statement with a plugin -- SET SESSION AUTHORIZATION seclabel_user1; SECURITY LABEL ON TABLE seclabel_tbl1 IS 'classified'; -- OK SECURITY LABEL ON COLUMN seclabel_tbl1.a IS 'unclassified'; -- OK +SECURITY LABEL ON COLUMN seclabel_tbl1 IS 'unclassified'; -- fail +ERROR: column name must be qualified SECURITY LABEL ON TABLE seclabel_tbl1 IS '...invalid label...'; -- fail ERROR: '...invalid label...' is not a valid security label SECURITY LABEL FOR 'dummy' ON TABLE seclabel_tbl1 IS 'unclassified'; -- OK diff --git a/src/test/regress/expected/xc_copy.out b/src/test/regress/output/xc_copy.source similarity index 71% rename from src/test/regress/expected/xc_copy.out rename to src/test/regress/output/xc_copy.source index 2b0108613c..52b9723ed3 100644 --- a/src/test/regress/expected/xc_copy.out +++ b/src/test/regress/output/xc_copy.source @@ -1,9 +1,13 @@ -create or replace function pgxc_nodetype() returns varchar as +-- +-- XC_COPY +-- +-- COPY tests for a Postgres-XC cluster +create or replace function pgxc_nodetype() returns varchar as $$ declare - pgxc_class_entries int; + pgxc_class_entries int; begin - select into pgxc_class_entries count(*) from pgxc_class ; + select into pgxc_class_entries count(*) from pgxc_class ; if pgxc_class_entries > 0 then return ' Node type: C'; else @@ -15,22 +19,22 @@ $$ begin return E'\\023\\000\\\\''!|'''; end $$ language plpgsql; -create or replace function deffunc_bytea() returns bytea as +create or replace function deffunc_bytea() returns bytea as $$ begin return E'\0123'; end $$ language plpgsql; -create or replace function deffunc_str() returns varchar as +create or replace function deffunc_str() returns varchar as $$ begin return E'\\.\\000"\\''!|''\\N' || pgxc_nodetype(); end $$ language plpgsql; -create or replace function deffunc_str_i() returns varchar immutable as +create or replace function deffunc_str_i() returns varchar immutable as $$ begin return E'\\.\\000"\\''!|''' || pgxc_nodetype(); end $$ language plpgsql; -create or replace function deffunc_nullstring() returns varchar as +create or replace function deffunc_nullstring() returns varchar as $$ begin return E'\\N'; @@ -60,9 +64,9 @@ select * from xccopydef order by idseq; 6 | 4567 | \x13005c27217c27 | \x00 | \.\000"\'!|'\N Node type: C | \.\000"\'!|' Node type: C | \N | \x0a33 | | 27.433 (6 rows) -copy xccopydef (id1, id2) to '/tmp/copydefout.dat' (format 'binary'); +copy xccopydef (id1, id2) to '@abs_builddir@/results/copydefout.data' (format 'binary'); truncate xccopydef; -copy xccopydef (id1, id2) from '/tmp/copydefout.dat' (format 'binary'); +copy xccopydef (id1, id2) from '@abs_builddir@/results/copydefout.data' (format 'binary'); select * from xccopydef order by idseq; idseq | id1 | def1 | def2 | def3 | def4 | def5 | def6 | id2 | def7 -------+------+------------------+------+-----------------------------+---------------------------+------+--------+-----------+-------- @@ -81,3 +85,39 @@ drop function deffunc_bytea(); drop function deffunc_str(); drop function deffunc_str_i(); drop function deffunc_nullstring(); +-- Tests related to COPY for a Postgres-XC cluster +-- Create a table not using the first node of cluster +SELECT cr_table('xc_copy_1(a int, b int)', '{2}'::int[], 'replication', NULL); + cr_table +---------- + +(1 row) + +INSERT INTO xc_copy_1 VALUES (1,23),(34,5),(9,11); +-- Extract its data +COPY xc_copy_1 TO STDOUT; +1 23 +34 5 +9 11 +DROP TABLE xc_copy_1; +-- Quoted table name +-- check for correct remote query generation +CREATE TABLE "Xc_copy_2" (a int, b int); +COPY "Xc_copy_2" FROM STDIN DELIMITER ','; +COPY "Xc_copy_2" TO STDOUT; +1 2 +3 4 +DROP TABLE "Xc_copy_2"; +-- Quoted column name +-- check for correct remote query generation +CREATE TABLE xc_copy_3(a int, "user" int); +COPY xc_copy_3 (a, "user") FROM STDIN (DELIMITER ','); +COPY xc_copy_3 TO STDOUT; +1 2 +3 4 +DROP TABLE xc_copy_3; +-- Table with no locator data +CREATE TABLE xc_copy_4 (c1 int) DISTRIBUTE BY HASH(c1); +COPY (SELECT pclocatortype,pcattnum,pchashalgorithm,pchashbuckets FROM pgxc_class WHERE pgxc_class.pcrelid = 'xc_copy_4'::regclass) TO stdout; +H 1 1 4096 +DROP TABLE xc_copy_4; diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule index 835d483f7f..5c8cb8828d 100644 --- a/src/test/regress/parallel_schedule +++ b/src/test/regress/parallel_schedule @@ -50,13 +50,17 @@ test: create_function_2 test: copy copyselect # ---------- -# Another group of parallel tests +# More groups of parallel tests # ---------- -test: constraints triggers create_misc create_aggregate create_operator inherit typed_table vacuum drop_if_exists create_cast - -# Depends on the above +test: create_misc create_operator +# These depend on the above two test: create_index create_view +# ---------- +# Another group of parallel tests +# ---------- +test: create_aggregate create_cast constraints triggers inherit typed_table vacuum drop_if_exists + # ---------- # sanity_check does a vacuum, affecting the sort order of SELECT * # results. So it should not run parallel to other tests. @@ -104,8 +108,12 @@ test: plancache limit plpgsql copy2 temp domain rangefuncs prepare without_oid c test: stats #Postgres-XC additional tests, they can be run in parallel +test: xc_create_function test: xc_groupby xc_distkey xc_having xc_temp xc_remote xc_FQS xc_FQS_join xc_copy xc_for_update xc_alter_table xc_sequence #Cluster setting related test is independant test: xc_node test: xc_misc + +#Additional tests for prepared xacts +test: xc_prepared_xacts diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c index dcec57e8fb..f190c95dcf 100644 --- a/src/test/regress/pg_regress.c +++ b/src/test/regress/pg_regress.c @@ -122,16 +122,17 @@ static int port = -1; * Additional port numbers for Coordinator 2 and Datanode 1&2 * Ports are chosen up to the default value which is 5432. */ -static int port_coord2 = 5433; -static int port_dn1 = 5434; -static int port_dn2 = 5435; -static int port_gtm = 6666; +static int port_coord2 = -1; +static int port_dn1 = -1; +static int port_dn2 = -1; +static int port_gtm = -1; /* - * Poolers of coordinators 1 and 2 need an additional port value + * Poolers of Coordinators 1 and 2 need an additional port value * taken as the default value and the next value. */ -static int co1_pooler_port = 6667; -static int co2_pooler_port = 6668; +static int co1_pooler_port = -1; +static int co2_pooler_port = -1; + /* Data folder of each node */ const char *data_co1 = "data_co1"; /* Coordinator 1 */ const char *data_co2 = "data_co2"; /* Coordinator 2 */ @@ -143,6 +144,9 @@ const char *name_co1 = "coord1"; /* Coordinator 1 */ const char *name_co2 = "coord2"; /* Coordinator 2 */ const char *name_dn1 = "dn1"; /* Datanode 1 */ const char *name_dn2 = "dn2"; /* Datanode 2 */ + +/* 7 port numbers are needed */ +#define PORT_NUM_INTERVAL 7 #endif static bool port_specified_by_user = false; static char *dlpath = PKGLIBDIR; @@ -382,7 +386,7 @@ stop_gtm(void) fflush(stderr); snprintf(buf, sizeof(buf), - SYSTEMQUOTE "\"%s/gtm_ctl\" stop -S gtm -D \"%s/%s\" -m fast" SYSTEMQUOTE, + SYSTEMQUOTE "\"%s/gtm_ctl\" stop -Z gtm -D \"%s/%s\" -m fast" SYSTEMQUOTE, bindir, temp_install, data_folder); r = system(buf); if (r != 0) @@ -629,7 +633,12 @@ calculate_node_port(PGXCNodeTypeNum node, bool is_main) fprintf(stderr, _("port %d apparently in use, trying %d\n"), port_number, port_number + 1); - port_number++; + + /* + * If port is already in use, jump to a value that is not covered by + * other nodes (Coordinator, Datanode, GTM and poolers) + */ + port_number += PORT_NUM_INTERVAL; if (is_main) { @@ -700,34 +709,6 @@ get_node_pid(PGXCNodeTypeNum node) } } -/* - * Start GTM process - */ -static void -start_gtm(void) -{ - char buf[MAXPGPATH * 4]; - const char *data_folder = find_data_folder(PGXC_GTM); - PID_TYPE node_pid; - - /* Start process */ - header(_("starting GTM process")); - snprintf(buf, sizeof(buf), - SYSTEMQUOTE "\"%s/gtm\" -D \"%s/%s\" -p %d -x 10000 > \"%s/log/gtm.log\" 2>&1" SYSTEMQUOTE, - bindir, temp_install, data_folder, get_port_number(PGXC_GTM), - outputdir); - - node_pid = spawn_process(buf); - if (node_pid == INVALID_PID) - { - fprintf(stderr, _("\n%s: could not spawn GTM: %s\n"), - progname, strerror(errno)); - exit_nicely(2); - } - - /* Save static PID number */ - set_node_pid(PGXC_GTM, node_pid); -} /* * Start given node @@ -740,35 +721,51 @@ start_node(PGXCNodeTypeNum node, bool is_coord, bool is_main) PID_TYPE node_pid; char buf[MAXPGPATH * 4]; - /* Start the node */ - if (is_main) + if (node == PGXC_GTM) + { + /* Case of a GTM start */ snprintf(buf, sizeof(buf), - SYSTEMQUOTE "\"%s/postgres\" %s -i -p %d -D \"%s/%s\"%s -c \"listen_addresses=%s\" > \"%s/log/postmaster_%d.log\" 2>&1" SYSTEMQUOTE, - bindir, - is_coord ? "-C" : "-X", - port_number, - temp_install, data_folder, - debug ? " -d 5" : "", - hostname ? hostname : "", - outputdir, - node); + SYSTEMQUOTE "\"%s/gtm\" -D \"%s/%s\" -p %d -x 10000 > \"%s/log/gtm.log\" 2>&1" SYSTEMQUOTE, + bindir, temp_install, data_folder, port_number, + outputdir); + } else - snprintf(buf, sizeof(buf), - SYSTEMQUOTE "\"%s/postgres\" %s -i -p %d -D \"%s/%s\"%s > \"%s/log/postmaster_%d.log\" 2>&1" SYSTEMQUOTE, - bindir, - is_coord ? "-C" : "-X", - port_number, - temp_install, data_folder, - debug ? " -d 5" : "", - outputdir, - node); + { + /* Case of normal nodes, start the node */ + if (is_main) + snprintf(buf, sizeof(buf), + SYSTEMQUOTE "\"%s/postgres\" %s -i -p %d -D \"%s/%s\"%s -c \"listen_addresses=%s\" > \"%s/log/postmaster_%d.log\" 2>&1" SYSTEMQUOTE, + bindir, + is_coord ? "-C" : "-X", + port_number, + temp_install, data_folder, + debug ? " -d 5" : "", + hostname ? hostname : "", + outputdir, + node); + else + snprintf(buf, sizeof(buf), + SYSTEMQUOTE "\"%s/postgres\" %s -i -p %d -D \"%s/%s\"%s > \"%s/log/postmaster_%d.log\" 2>&1" SYSTEMQUOTE, + bindir, + is_coord ? "-C" : "-X", + port_number, + temp_install, data_folder, + debug ? " -d 5" : "", + outputdir, + node); + } + /* Check process spawn */ node_pid = spawn_process(buf); if (node_pid == INVALID_PID) { - fprintf(stderr, _("\n%s: could not spawn postmaster: %s\n"), + if (node == PGXC_GTM) + fprintf(stderr, _("\n%s: could not spawn GTM: %s\n"), progname, strerror(errno)); - exit_nicely(2); + else + fprintf(stderr, _("\n%s: could not spawn postmaster: %s\n"), + progname, strerror(errno)); + exit(2); } /* Wait a little for full start */ @@ -787,40 +784,36 @@ initdb_node(PGXCNodeTypeNum node) const char *data_folder = find_data_folder(node); char buf[MAXPGPATH * 4]; - snprintf(buf, sizeof(buf), - SYSTEMQUOTE "\"%s/initdb\" --nodename %s -D \"%s/%s\" -L \"%s\" --noclean%s%s > \"%s/log/initdb.log\" 2>&1" SYSTEMQUOTE, - bindir, (char *)get_node_name(node), temp_install, data_folder, datadir, - debug ? " --debug" : "", - nolocale ? " --no-locale" : "", - outputdir); - if (system(buf)) - { - fprintf(stderr, _("\n%s: initdb failed\nExamine %s/log/initdb.log for the reason.\nCommand was: %s\n"), progname, outputdir, buf); - exit_nicely(2); + if (node == PGXC_GTM) + { + snprintf(buf, sizeof(buf), + SYSTEMQUOTE "\"%s/initgtm\" -Z gtm -D \"%s/%s\" --noclean%s > \"%s/log/initgtm.log\" 2>&1" SYSTEMQUOTE, + bindir, temp_install, data_folder, + debug ? " --debug" : "", + outputdir); + if (system(buf)) + { + fprintf(stderr, _("\n%s: initgtm failed\nExamine %s/log/initgtm.log for the reason.\nCommand was: %s\n"), progname, outputdir, buf); + exit_nicely(2); + } } -} - -/* - * Initialize GTM - */ -static void -init_gtm(void) -{ - const char *data_folder = find_data_folder(PGXC_GTM); - char buf[MAXPGPATH * 4]; - - snprintf(buf, sizeof(buf), - SYSTEMQUOTE "\"%s/initgtm\" -Z gtm -D \"%s/%s\" --noclean%s > \"%s/log/initgtm.log\" 2>&1" SYSTEMQUOTE, - bindir, temp_install, data_folder, - debug ? " --debug" : "", - outputdir); - if (system(buf)) + else { - fprintf(stderr, _("\n%s: initgtm failed\nExamine %s/log/initgtm.log for the reason.\nCommand was: %s\n"), progname, outputdir, buf); - exit_nicely(2); + snprintf(buf, sizeof(buf), + SYSTEMQUOTE "\"%s/initdb\" --nodename %s -D \"%s/%s\" -L \"%s\" --noclean%s%s > \"%s/log/initdb.log\" 2>&1" SYSTEMQUOTE, + bindir, (char *)get_node_name(node), temp_install, data_folder, datadir, + debug ? " --debug" : "", + nolocale ? " --no-locale" : "", + outputdir); + if (system(buf)) + { + fprintf(stderr, _("\n%s: initdb failed\nExamine %s/log/initdb.log for the reason.\nCommand was: %s\n"), progname, outputdir, buf); + exit_nicely(2); + } } } + static void set_node_config_file(PGXCNodeTypeNum node) { @@ -924,7 +917,7 @@ psql_command_node(const char *database, PGXCNodeTypeNum node, const char *query, } /* - * Setup connection information to remote nodes for coordinator running regression + * Setup connection information to remote nodes for Coordinator running regression */ static void setup_connection_information(void) @@ -965,13 +958,30 @@ setup_connection_information(void) psql_command_node("postgres", PGXC_COORD_2, "SELECT pgxc_pool_reload();"); } + +/* + * Check if node is already running + */ +static bool +check_node_running(PGXCNodeTypeNum node) +{ + char buf[MAXPGPATH * 4]; + + snprintf(buf, sizeof(buf), + SYSTEMQUOTE "\"%s/psql\" -p %d -X postgres <%s 2>%s" SYSTEMQUOTE, + bindir, get_port_number(node), DEVNULL, DEVNULL); + + return system(buf) == 0; +} + + /* * Check if given node has failed during startup */ static void check_node_fail(PGXCNodeTypeNum node) { - PID_TYPE pid_number = get_node_pid(node); + PID_TYPE pid_number = get_node_pid(node); #ifndef WIN32 if (kill(pid_number, 0) != 0) @@ -1118,7 +1128,7 @@ replace_string(char *string, char *replace, char *replacement) * the given suffix. */ static void -convert_sourcefiles_in(char *source_subdir, char *dest_subdir, char *suffix) +convert_sourcefiles_in(char *source_subdir, char *dest_dir, char *dest_subdir, char *suffix) { char testtablespace[MAXPGPATH]; char indir[MAXPGPATH]; @@ -1186,7 +1196,8 @@ convert_sourcefiles_in(char *source_subdir, char *dest_subdir, char *suffix) /* build the full actual paths to open */ snprintf(prefix, strlen(*name) - 6, "%s", *name); snprintf(srcfile, MAXPGPATH, "%s/%s", indir, *name); - snprintf(destfile, MAXPGPATH, "%s/%s.%s", dest_subdir, prefix, suffix); + snprintf(destfile, MAXPGPATH, "%s/%s/%s.%s", dest_dir, dest_subdir, + prefix, suffix); infile = fopen(srcfile, "r"); if (!infile) @@ -1233,8 +1244,8 @@ convert_sourcefiles_in(char *source_subdir, char *dest_subdir, char *suffix) static void convert_sourcefiles(void) { - convert_sourcefiles_in("input", "sql", "sql"); - convert_sourcefiles_in("output", "expected", "out"); + convert_sourcefiles_in("input", inputdir, "sql", "sql"); + convert_sourcefiles_in("output", outputdir, "expected", "out"); } /* @@ -1492,6 +1503,19 @@ initialize_environment(void) doputenv("PGPORT", s); } + /* + * GNU make stores some flags in the MAKEFLAGS environment variable to + * pass arguments to its own children. If we are invoked by make, + * that causes the make invoked by us to think its part of the make + * task invoking us, and so it tries to communicate with the toplevel + * make. Which fails. + * + * Unset the variable to protect against such problems. We also reset + * MAKELEVEL to be certain the child doesn't notice the make above us. + */ + unsetenv("MAKEFLAGS"); + unsetenv("MAKELEVEL"); + /* * Adjust path variables to point into the temp-install tree */ @@ -1930,7 +1954,7 @@ results_differ(const char *testname, const char *resultsfile, const char *defaul */ platform_expectfile = get_expectfile(testname, resultsfile); - strcpy(expectfile, default_expectfile); + strlcpy(expectfile, default_expectfile, sizeof(expectfile)); if (platform_expectfile) { /* @@ -1985,7 +2009,7 @@ results_differ(const char *testname, const char *resultsfile, const char *defaul { /* This diff was a better match than the last one */ best_line_count = l; - strcpy(best_expect_file, alt_expectfile); + strlcpy(best_expect_file, alt_expectfile, sizeof(best_expect_file)); } free(alt_expectfile); } @@ -2013,7 +2037,7 @@ results_differ(const char *testname, const char *resultsfile, const char *defaul { /* This diff was a better match than the last one */ best_line_count = l; - strcpy(best_expect_file, default_expectfile); + strlcpy(best_expect_file, default_expectfile, sizeof(best_expect_file)); } } @@ -2621,7 +2645,9 @@ regression_main(int argc, char *argv[], init_function ifunc, test_function tfunc int i; int option_index; char buf[MAXPGPATH * 4]; +#ifndef PGXC char buf2[MAXPGPATH * 4]; +#endif static struct option long_options[] = { {"help", no_argument, NULL, 'h'}, @@ -2776,6 +2802,16 @@ regression_main(int argc, char *argv[], init_function ifunc, test_function tfunc */ port = 0xC000 | (PG_VERSION_NUM & 0x3FFF); +#ifdef PGXC + /* Initialize the other port numbers, user has no control on them */ + port_coord2 = (0xC000 | (PG_VERSION_NUM & 0x3FFF)) + 1; + port_dn1 = (0xC000 | (PG_VERSION_NUM & 0x3FFF)) + 2; + port_dn2 = (0xC000 | (PG_VERSION_NUM & 0x3FFF)) + 3; + port_gtm = (0xC000 | (PG_VERSION_NUM & 0x3FFF)) + 4; + co1_pooler_port = (0xC000 | (PG_VERSION_NUM & 0x3FFF)) + 5; + co2_pooler_port = (0xC000 | (PG_VERSION_NUM & 0x3FFF)) + 6; +#endif + inputdir = make_absolute_path(inputdir); outputdir = make_absolute_path(outputdir); dlpath = make_absolute_path(dlpath); @@ -2861,7 +2897,7 @@ regression_main(int argc, char *argv[], init_function ifunc, test_function tfunc header(_("initializing database system")); #ifdef PGXC /* Initialize nodes and GTM */ - init_gtm(); + initdb_node(PGXC_GTM); initdb_node(PGXC_COORD_1); initdb_node(PGXC_COORD_2); initdb_node(PGXC_DATANODE_1); @@ -2968,14 +3004,17 @@ regression_main(int argc, char *argv[], init_function ifunc, test_function tfunc } #endif +#ifdef PGXC + /* Start GTM */ + header(_("starting GTM process")); + start_node(PGXC_GTM, false, false); +#endif + /* * Start the temp postmaster */ header(_("starting postmaster")); #ifdef PGXC - /* Start GTM */ - start_gtm(); - /* Start all the nodes */ start_node(PGXC_COORD_1, true, true); start_node(PGXC_COORD_2, true, false); @@ -3004,17 +3043,25 @@ regression_main(int argc, char *argv[], init_function ifunc, test_function tfunc */ for (i = 0; i < 60; i++) { - /* Done if psql succeeds */ - if (system(buf2) == 0) - break; #ifdef PGXC + /* Done if psql succeeds for each node */ + if (check_node_running(PGXC_COORD_1) && + check_node_running(PGXC_COORD_2) && + check_node_running(PGXC_DATANODE_1) && + check_node_running(PGXC_DATANODE_2)) + break; + /* Check node failure */ check_node_fail(PGXC_COORD_1); check_node_fail(PGXC_COORD_2); check_node_fail(PGXC_DATANODE_1); check_node_fail(PGXC_DATANODE_2); #else + /* Done if psql succeeds */ + if (system(buf2) == 0) + break; + /* * Fail immediately if postmaster has exited */ @@ -3074,19 +3121,21 @@ regression_main(int argc, char *argv[], init_function ifunc, test_function tfunc #ifdef PGXC /* Print info for each node */ - printf(_("running on port %d with pid %lu for Coordinator 1\n"), - get_port_number(PGXC_COORD_1), ULONGPID(get_node_pid(PGXC_COORD_1))); - printf(_("running on port %d with pid %lu for Coordinator 2\n"), - get_port_number(PGXC_COORD_2), ULONGPID(get_node_pid(PGXC_COORD_2))); - printf(_("running on port %d with pid %lu for Datanode 1\n"), + printf(_("running on port %d, pooler port %d with PID %lu for Coordinator 1\n"), + get_port_number(PGXC_COORD_1), get_pooler_port(PGXC_COORD_1), ULONGPID(get_node_pid(PGXC_COORD_1))); + printf(_("running on port %d, pooler port %d with PID %lu for Coordinator 2\n"), + get_port_number(PGXC_COORD_2), get_pooler_port(PGXC_COORD_2), ULONGPID(get_node_pid(PGXC_COORD_2))); + printf(_("running on port %d with PID %lu for Datanode 1\n"), get_port_number(PGXC_DATANODE_1), ULONGPID(get_node_pid(PGXC_DATANODE_1))); - printf(_("running on port %d with pid %lu for Datanode 2\n"), + printf(_("running on port %d with PID %lu for Datanode 2\n"), get_port_number(PGXC_DATANODE_2), ULONGPID(get_node_pid(PGXC_DATANODE_2))); + printf(_("running on port %d with PID %lu for GTM\n"), + get_port_number(PGXC_GTM), ULONGPID(get_node_pid(PGXC_GTM))); /* Postmaster is finally running, so set up connection information on Coordinators */ setup_connection_information(); #else - printf(_("running on port %d with pid %lu\n"), + printf(_("running on port %d with PID %lu\n"), port, ULONGPID(postmaster_pid)); #endif } diff --git a/src/test/regress/serial_schedule b/src/test/regress/serial_schedule index 8b4d7f9290..5d609f57e6 100644 --- a/src/test/regress/serial_schedule +++ b/src/test/regress/serial_schedule @@ -49,20 +49,20 @@ test: create_function_1 test: create_type test: create_table test: create_function_2 -test: create_cast test: copy test: copyselect -test: constraints -test: triggers test: create_misc -test: create_aggregate test: create_operator test: create_index -test: drop_if_exists +test: create_view +test: create_aggregate +test: create_cast +test: constraints +test: triggers test: inherit test: typed_table test: vacuum -test: create_view +test: drop_if_exists test: sanity_check test: errors test: select @@ -127,6 +127,7 @@ test: largeobject test: with test: xml test: stats +test: xc_create_function test: xc_groupby test: xc_distkey test: xc_having @@ -140,3 +141,4 @@ test: xc_copy test: xc_for_update test: xc_alter_table test: xc_sequence +test: xc_prepared_xacts diff --git a/src/test/regress/sql/.gitignore b/src/test/regress/sql/.gitignore index 46c8112094..5eb7ca028e 100644 --- a/src/test/regress/sql/.gitignore +++ b/src/test/regress/sql/.gitignore @@ -6,3 +6,4 @@ /misc.sql /security_label.sql /tablespace.sql +/xc_copy.sql diff --git a/src/test/regress/sql/aggregates.sql b/src/test/regress/sql/aggregates.sql index 0109b5a3b4..e14943975b 100644 --- a/src/test/regress/sql/aggregates.sql +++ b/src/test/regress/sql/aggregates.sql @@ -91,9 +91,6 @@ from tenk1 o; -- test for bitwise integer aggregates -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - CREATE TEMPORARY TABLE bitwise_test( i2 INT2, i4 INT4, @@ -215,7 +212,6 @@ FROM bool_test; -- In Postgres-XC, plans printed by explain are the ones created on the -- coordinator. Coordinator does not generate index scan plans. -- -analyze tenk1; -- ensure we get consistent plans here -- Basic cases explain (costs off, nodes off) @@ -286,6 +282,11 @@ explain (costs off, nodes off) select min(f1), max(f1) from minmaxtest; select min(f1), max(f1) from minmaxtest; +-- DISTINCT doesn't do anything useful here, but it shouldn't fail +explain (costs off) + select distinct min(f1), max(f1) from minmaxtest; +select distinct min(f1), max(f1) from minmaxtest; + drop table minmaxtest cascade; -- diff --git a/src/test/regress/sql/alter_table.sql b/src/test/regress/sql/alter_table.sql index 8e28a8e1aa..b36d115b4a 100644 --- a/src/test/regress/sql/alter_table.sql +++ b/src/test/regress/sql/alter_table.sql @@ -147,8 +147,6 @@ DROP TABLE tmp; -- rename - check on both non-temp and temp tables -- CREATE TABLE tmp (regtable int); --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE tmp (tmptable int); ALTER TABLE tmp RENAME TO tmp_new; @@ -175,7 +173,6 @@ CREATE VIEW tmp_view (unique1) AS SELECT unique1 FROM tenk1; ALTER TABLE tmp_view RENAME TO tmp_view_new; -- hack to ensure we get an indexscan here -ANALYZE tenk1; set enable_seqscan to off; set enable_bitmapscan to off; -- 5 values, sorted @@ -1147,6 +1144,13 @@ select reltoastrelid <> 0 as has_toast_table from pg_class where oid = 'test_storage'::regclass; +-- ALTER TYPE with a check constraint and a child table (bug before Nov 2012) +CREATE TABLE test_inh_check (a float check (a > 10.2)); +CREATE TABLE test_inh_check_child() INHERITS(test_inh_check); +ALTER TABLE test_inh_check ALTER COLUMN a TYPE numeric; +\d test_inh_check +\d test_inh_check_child + -- -- lock levels -- @@ -1177,7 +1181,6 @@ group by c.relname; create table alterlock (f1 int primary key, f2 text); --- share update exclusive begin; alter table alterlock alter column f2 set statistics 150; select * from my_locks order by 1; rollback; @@ -1214,7 +1217,6 @@ begin; alter table alterlock alter column f2 set storage extended; select * from my_locks order by 1; rollback; --- share row exclusive begin; alter table alterlock alter column f2 set default 'x'; select * from my_locks order by 1; rollback; diff --git a/src/test/regress/sql/arrays.sql b/src/test/regress/sql/arrays.sql index 8ae786e6a4..a946d43b02 100644 --- a/src/test/regress/sql/arrays.sql +++ b/src/test/regress/sql/arrays.sql @@ -102,8 +102,6 @@ SELECT a,b,c FROM arrtest ORDER BY a, b, c; -- -- test array extension -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE arrtest1 (i int[], t text[]); insert into arrtest1 values(array[1,2,null,4], array['one','two',null,'four']); diff --git a/src/test/regress/sql/cluster.sql b/src/test/regress/sql/cluster.sql index 5d20b98294..c155d3d13d 100644 --- a/src/test/regress/sql/cluster.sql +++ b/src/test/regress/sql/cluster.sql @@ -191,9 +191,7 @@ COMMIT; SELECT * FROM clustertest ORDER BY 1; -- check that temp tables can be clustered --- Enforce use of COMMIT instead of 2PC for temporary objects RESET SESSION AUTHORIZATION; -SET enforce_two_phase_commit TO off; -- Done by a superuser SET SESSION AUTHORIZATION clstr_user; create temp table clstr_temp (col1 int primary key, col2 text); diff --git a/src/test/regress/sql/collate.linux.utf8.sql b/src/test/regress/sql/collate.linux.utf8.sql index e16d96a331..73f5587b70 100644 --- a/src/test/regress/sql/collate.linux.utf8.sql +++ b/src/test/regress/sql/collate.linux.utf8.sql @@ -161,7 +161,7 @@ SELECT table_name, view_definition FROM information_schema.views WHERE table_name LIKE 'collview%' ORDER BY 1; --- collation propagation in various expression type +-- collation propagation in various expression types SELECT a, coalesce(b, 'foo') FROM collate_test1 ORDER BY 2; SELECT a, coalesce(b, 'foo') FROM collate_test2 ORDER BY 2; diff --git a/src/test/regress/sql/collate.sql b/src/test/regress/sql/collate.sql index 6c591b8611..159fa36118 100644 --- a/src/test/regress/sql/collate.sql +++ b/src/test/regress/sql/collate.sql @@ -99,7 +99,7 @@ SELECT table_name, view_definition FROM information_schema.views WHERE table_name LIKE 'collview%' ORDER BY 1; --- collation propagation in various expression type +-- collation propagation in various expression types SELECT a, coalesce(b, 'foo') FROM collate_test1 ORDER BY 2; SELECT a, coalesce(b, 'foo') FROM collate_test2 ORDER BY 2; @@ -214,6 +214,11 @@ RESET enable_seqscan; RESET enable_hashjoin; RESET enable_nestloop; +-- 9.1 bug with useless COLLATE in an expression subject to length coercion + +CREATE TEMP TABLE vctable (f1 varchar(25)); +INSERT INTO vctable VALUES ('foo' COLLATE "C"); + -- -- Clean up. Many of these table names will be re-used if the user is -- trying to run any platform-specific collation tests later, so we diff --git a/src/test/regress/sql/combocid.sql b/src/test/regress/sql/combocid.sql index f99033d80c..9b02b95056 100644 --- a/src/test/regress/sql/combocid.sql +++ b/src/test/regress/sql/combocid.sql @@ -1,8 +1,6 @@ -- -- Tests for some likely failure cases with combo cmin/cmax mechanism -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE combocidtest (foobar int); diff --git a/src/test/regress/sql/copy2.sql b/src/test/regress/sql/copy2.sql index 5893d9a4d2..6edcca6870 100644 --- a/src/test/regress/sql/copy2.sql +++ b/src/test/regress/sql/copy2.sql @@ -1,6 +1,3 @@ --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - CREATE TEMP TABLE x ( a serial, b int, @@ -167,6 +164,21 @@ c\.d COPY testeoc TO stdout CSV; +-- test handling of nonstandard null marker that violates escaping rules + +CREATE TEMP TABLE testnull(a int, b text); +INSERT INTO testnull VALUES (1, E'\\0'), (NULL, NULL); + +COPY testnull TO stdout WITH NULL AS E'\\0'; + +COPY testnull FROM stdin WITH NULL AS E'\\0'; +42 \\0 +\0 \0 +\. + +SELECT * FROM testnull; + + DROP TABLE x, y; DROP FUNCTION fn_x_before(); DROP FUNCTION fn_x_after(); diff --git a/src/test/regress/sql/create_index.sql b/src/test/regress/sql/create_index.sql index d73c9af41f..6c80a743f9 100644 --- a/src/test/regress/sql/create_index.sql +++ b/src/test/regress/sql/create_index.sql @@ -80,8 +80,6 @@ INSERT INTO POINT_TBL(f1) VALUES (NULL); CREATE INDEX gpointind ON point_tbl USING gist (f1); -SET enforce_two_phase_commit TO off; - CREATE TEMP TABLE gpolygon_tbl AS SELECT polygon(home_base) AS f1 FROM slow_emp4000; INSERT INTO gpolygon_tbl VALUES ( '(1000,0,0,1000)' ); @@ -376,7 +374,7 @@ create unique index hash_f8_index_3 on hash_f8_heap(random) where seqno > 1000; -- Unfortunately this only tests about half the code paths because there are -- no concurrent updates happening to the table at the same time. -CREATE TABLE concur_heap (f1 text, f2 text); +CREATE TABLE concur_heap (f1 text, f2 text) DISTRIBUTE BY REPLICATION; -- empty table CREATE INDEX CONCURRENTLY concur_index1 ON concur_heap(f2,f1); INSERT INTO concur_heap VALUES ('a','b'); @@ -403,10 +401,13 @@ BEGIN; CREATE INDEX std_index on concur_heap(f2); COMMIT; --- check to make sure that the failed indexes were cleaned up properly and the --- successful indexes are created properly. Notably that they do NOT have the --- "invalid" flag set. - +-- Failed builds are left invalid by VACUUM FULL, fixed by REINDEX +VACUUM FULL concur_heap; +REINDEX TABLE concur_heap; +DELETE FROM concur_heap WHERE f1 = 'b'; +VACUUM FULL concur_heap; +\d concur_heap +REINDEX TABLE concur_heap; \d concur_heap DROP TABLE concur_heap; @@ -453,6 +454,8 @@ SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NULL; +SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500; +SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500; DROP INDEX onek_nulltest; @@ -462,6 +465,8 @@ SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NULL; +SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500; +SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500; DROP INDEX onek_nulltest; @@ -471,6 +476,8 @@ SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NULL; +SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500; +SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500; DROP INDEX onek_nulltest; @@ -480,6 +487,8 @@ SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL; SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique2 IS NOT NULL; +SELECT count(*) FROM onek_with_null WHERE unique1 IS NOT NULL AND unique1 > 500; +SELECT count(*) FROM onek_with_null WHERE unique1 IS NULL AND unique1 > 500; RESET enable_seqscan; RESET enable_indexscan; diff --git a/src/test/regress/sql/create_table.sql b/src/test/regress/sql/create_table.sql index 556fff5afa..ff1e30108c 100644 --- a/src/test/regress/sql/create_table.sql +++ b/src/test/regress/sql/create_table.sql @@ -239,3 +239,13 @@ CREATE TABLE IF NOT EXISTS test_tsvector( CREATE TABLE IF NOT EXISTS test_tsvector( t text ); + +CREATE UNLOGGED TABLE unlogged1 (a int primary key); -- OK +INSERT INTO unlogged1 VALUES (42); +CREATE UNLOGGED TABLE public.unlogged2 (a int primary key); -- also OK +CREATE UNLOGGED TABLE pg_temp.unlogged3 (a int primary key); -- not OK +CREATE TABLE pg_temp.implicitly_temp (a int primary key); -- OK +CREATE TEMP TABLE explicitly_temp (a int primary key); -- also OK +CREATE TEMP TABLE pg_temp.doubly_temp (a int primary key); -- also OK +CREATE TEMP TABLE public.temp_to_perm (a int primary key); -- not OK +DROP TABLE unlogged1, public.unlogged2; diff --git a/src/test/regress/sql/create_type.sql b/src/test/regress/sql/create_type.sql index d76569e51f..a4906b64e1 100644 --- a/src/test/regress/sql/create_type.sql +++ b/src/test/regress/sql/create_type.sql @@ -106,9 +106,6 @@ DROP TYPE default_test_row CASCADE; DROP TABLE default_test; --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - -- Check usage of typmod with a user-defined type -- (we have borrowed numeric's typmod functions) diff --git a/src/test/regress/sql/create_view.sql b/src/test/regress/sql/create_view.sql index 505a5f927a..23add51c03 100644 --- a/src/test/regress/sql/create_view.sql +++ b/src/test/regress/sql/create_view.sql @@ -4,9 +4,6 @@ -- (this also tests the query rewrite system) -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - CREATE VIEW street AS SELECT r.name, r.thepath, c.cname AS cname FROM ONLY road r, real_city c diff --git a/src/test/regress/sql/domain.sql b/src/test/regress/sql/domain.sql index 1da5c9fe66..3d1e9bd079 100644 --- a/src/test/regress/sql/domain.sql +++ b/src/test/regress/sql/domain.sql @@ -299,9 +299,6 @@ select 'y123'::dtop; -- fail select 'yz23'::dtop; -- fail select 'xz23'::dtop; -- fail --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - create temp table dtest(f1 dtop); insert into dtest values('x123'); diff --git a/src/test/regress/sql/foreign_data.sql b/src/test/regress/sql/foreign_data.sql index d3239216c1..a76ef4f0a8 100644 --- a/src/test/regress/sql/foreign_data.sql +++ b/src/test/regress/sql/foreign_data.sql @@ -258,16 +258,16 @@ DROP SERVER s7; -- CREATE FOREIGN TABLE CREATE SCHEMA foreign_schema; -CREATE SERVER sc FOREIGN DATA WRAPPER dummy; +CREATE SERVER s0 FOREIGN DATA WRAPPER dummy; CREATE FOREIGN TABLE ft1 (); -- ERROR CREATE FOREIGN TABLE ft1 () SERVER no_server; -- ERROR -CREATE FOREIGN TABLE ft1 (c1 serial) SERVER sc; -- ERROR -CREATE FOREIGN TABLE ft1 () SERVER sc WITH OIDS; -- ERROR +CREATE FOREIGN TABLE ft1 (c1 serial) SERVER s0; -- ERROR +CREATE FOREIGN TABLE ft1 () SERVER s0 WITH OIDS; -- ERROR CREATE FOREIGN TABLE ft1 ( c1 integer NOT NULL, c2 text, c3 date -) SERVER sc OPTIONS (delimiter ',', quote '"'); +) SERVER s0 OPTIONS (delimiter ',', quote '"'); COMMENT ON FOREIGN TABLE ft1 IS 'ft1'; COMMENT ON COLUMN ft1.c1 IS 'ft1.c1'; \d+ ft1 @@ -294,7 +294,7 @@ ALTER FOREIGN TABLE ft1 ALTER COLUMN c4 SET DEFAULT 0; -- ERROR ALTER FOREIGN TABLE ft1 ALTER COLUMN c5 DROP DEFAULT; -- ERROR ALTER FOREIGN TABLE ft1 ALTER COLUMN c6 SET NOT NULL; ALTER FOREIGN TABLE ft1 ALTER COLUMN c7 DROP NOT NULL; -ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE char(10) using '0'; -- ERROR +ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE char(10) USING '0'; -- ERROR ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE char(10); ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 SET DATA TYPE text; -- can't change the column type if it's used elsewhere diff --git a/src/test/regress/sql/foreign_key.sql b/src/test/regress/sql/foreign_key.sql index 5eb9df59a7..b7334f9dd2 100644 --- a/src/test/regress/sql/foreign_key.sql +++ b/src/test/regress/sql/foreign_key.sql @@ -728,8 +728,6 @@ DROP TABLE pktable, fktable; -- test notice about expensive referential integrity checks, -- where the index cannot be used because of type incompatibilities. --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE pktable ( id1 INT4 PRIMARY KEY, @@ -923,3 +921,25 @@ SELECT * FROM tasks ORDER BY 1, 2, 3,4; DELETE FROM users WHERE id = 2; SELECT * FROM tasks ORDER BY 1, 2, 3,4; COMMIT; + +-- +-- Test self-referential FK with CASCADE (bug #6268) +-- +create temp table selfref ( + a int primary key, + b int, + foreign key (b) references selfref (a) + on update cascade on delete cascade +) DISTRIBUTE BY REPLICATION; + +insert into selfref (a, b) +values + (0, 0), + (1, 1); + +begin; + update selfref set a = 123 where a = 0; + select a, b from selfref; + update selfref set a = 456 where a = 123; + select a, b from selfref; +commit; diff --git a/src/test/regress/sql/functional_deps.sql b/src/test/regress/sql/functional_deps.sql index 07e66a974f..406490b995 100644 --- a/src/test/regress/sql/functional_deps.sql +++ b/src/test/regress/sql/functional_deps.sql @@ -1,8 +1,5 @@ -- from http://www.depesz.com/index.php/2010/04/19/getting-unique-elements/ --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - CREATE TEMP TABLE articles ( id int CONSTRAINT articles_pkey PRIMARY KEY, keywords text, diff --git a/src/test/regress/sql/guc.sql b/src/test/regress/sql/guc.sql index 4751c45166..bf8e785428 100644 --- a/src/test/regress/sql/guc.sql +++ b/src/test/regress/sql/guc.sql @@ -147,8 +147,6 @@ SELECT '2006-08-13 12:34:56'::timestamptz; -- -- Test DISCARD TEMP -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE reset_test ( data text ) ON COMMIT DELETE ROWS; SELECT relname FROM pg_class WHERE relname = 'reset_test'; @@ -257,3 +255,21 @@ set work_mem = '1MB'; select myfunc(0); select current_setting('work_mem'); select myfunc(1), current_setting('work_mem'); + +-- Normally, CREATE FUNCTION should complain about invalid values in +-- function SET options; but not if check_function_bodies is off, +-- because that creates ordering hazards for pg_dump + +create function func_with_bad_set() returns int as $$ select 1 $$ +language sql +set default_text_search_config = no_such_config; + +set check_function_bodies = off; + +create function func_with_bad_set() returns int as $$ select 1 $$ +language sql +set default_text_search_config = no_such_config; + +select func_with_bad_set(); + +reset check_function_bodies; diff --git a/src/test/regress/sql/horology.sql b/src/test/regress/sql/horology.sql index 459dd7be87..5d7de5257e 100644 --- a/src/test/regress/sql/horology.sql +++ b/src/test/regress/sql/horology.sql @@ -455,3 +455,19 @@ SELECT to_timestamp('199711xy', 'YYYYMMDD'); -- Input that doesn't fit in an int: SELECT to_timestamp('10000000000', 'FMYYYY'); + +-- +-- Check behavior with SQL-style fixed-GMT-offset time zone (cf bug #8572) +-- + +SET TIME ZONE 'America/New_York'; +SET TIME ZONE '-1.5'; + +SHOW TIME ZONE; + +SELECT '2012-12-12 12:00'::timestamptz; +SELECT '2012-12-12 12:00 America/New_York'::timestamptz; + +SELECT to_char('2012-12-12 12:00'::timestamptz, 'YYYY-MM-DD HH:MI:SS TZ'); + +RESET TIME ZONE; diff --git a/src/test/regress/sql/inherit.sql b/src/test/regress/sql/inherit.sql index 6132f176e0..748c640279 100644 --- a/src/test/regress/sql/inherit.sql +++ b/src/test/regress/sql/inherit.sql @@ -2,9 +2,6 @@ -- Test inheritance features -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - CREATE TABLE a (aa TEXT) distribute by round robin; CREATE TABLE b (bb TEXT) INHERITS (a) distribute by round robin; CREATE TABLE c (cc TEXT) INHERITS (a) distribute by round robin; @@ -467,13 +464,69 @@ insert into matest3 (name) values ('Test 5'); insert into matest3 (name) values ('Test 6'); set enable_indexscan = off; -- force use of seqscan/sort, so no merge -explain (verbose, costs off, nodes off) select * from matest0 order by 1-id; +explain (verbose, costs off, nodes off, num_nodes off) select * from matest0 order by 1-id; select * from matest0 order by 1-id; +explain (verbose, costs off, nodes off, num_nodes off) select min(1-id) from matest0; +select min(1-id) from matest0; reset enable_indexscan; set enable_seqscan = off; -- plan with fewest seqscans should be merge explain (verbose, costs off, nodes off) select * from matest0 order by 1-id; select * from matest0 order by 1-id; +explain (verbose, costs off, nodes off, num_nodes off) select min(1-id) from matest0; +select min(1-id) from matest0; reset enable_seqscan; drop table matest0 cascade; + +-- +-- Test merge-append for UNION ALL append relations +-- + +set enable_seqscan = off; +set enable_indexscan = on; +set enable_bitmapscan = off; + +-- Check handling of duplicated, constant, or volatile targetlist items +explain (num_nodes off, nodes off, verbose on, costs off) +SELECT thousand, tenthous FROM tenk1 +UNION ALL +SELECT thousand, thousand FROM tenk1 +ORDER BY thousand, tenthous; + +explain (num_nodes off, nodes off, verbose on, costs off) +SELECT thousand, tenthous FROM tenk1 +UNION ALL +SELECT 42, 42 FROM tenk1 +ORDER BY thousand, tenthous; + +explain (num_nodes off, nodes off, verbose on, costs off) +SELECT thousand, tenthous FROM tenk1 +UNION ALL +SELECT thousand, random()::integer FROM tenk1 +ORDER BY thousand, tenthous; + +-- Check min/max aggregate optimization +explain (num_nodes off, nodes off, verbose on, costs off) +SELECT min(x) FROM + (SELECT unique1 AS x FROM tenk1 a + UNION ALL + SELECT unique2 AS x FROM tenk1 b) s; + +explain (num_nodes off, nodes off, verbose on, costs off) +SELECT min(y) FROM + (SELECT unique1 AS x, unique1 AS y FROM tenk1 a + UNION ALL + SELECT unique2 AS x, unique2 AS y FROM tenk1 b) s; + +-- XXX planner doesn't recognize that index on unique2 is sufficiently sorted +explain (num_nodes off, nodes off, verbose on, costs off) +SELECT x, y FROM + (SELECT thousand AS x, tenthous AS y FROM tenk1 a + UNION ALL + SELECT unique2 AS x, unique2 AS y FROM tenk1 b) s +ORDER BY x, y; + +reset enable_seqscan; +reset enable_indexscan; +reset enable_bitmapscan; diff --git a/src/test/regress/sql/int2.sql b/src/test/regress/sql/int2.sql index 526cb4775e..af03c405e4 100644 --- a/src/test/regress/sql/int2.sql +++ b/src/test/regress/sql/int2.sql @@ -87,3 +87,8 @@ SELECT '' AS five, i.f1, i.f1 / int4 '2' AS x FROM INT2_TBL i ORDER BY f1; -- corner cases SELECT (-1::int2<<15)::text; SELECT ((-1::int2<<15)+1::int2)::text; + +-- check sane handling of INT16_MIN overflow cases +SELECT (-32768)::int2 * (-1)::int2; +SELECT (-32768)::int2 / (-1)::int2; +SELECT (-32768)::int2 % (-1)::int2; diff --git a/src/test/regress/sql/int4.sql b/src/test/regress/sql/int4.sql index 7c3d44706b..312b1611fb 100644 --- a/src/test/regress/sql/int4.sql +++ b/src/test/regress/sql/int4.sql @@ -127,3 +127,11 @@ SELECT (2 + 2) / 2 AS two; -- corner case SELECT (-1::int4<<31)::text; SELECT ((-1::int4<<31)+1)::text; + +-- check sane handling of INT_MIN overflow cases +SELECT (-2147483648)::int4 * (-1)::int4; +SELECT (-2147483648)::int4 / (-1)::int4; +SELECT (-2147483648)::int4 % (-1)::int4; +SELECT (-2147483648)::int4 * (-1)::int2; +SELECT (-2147483648)::int4 / (-1)::int2; +SELECT (-2147483648)::int4 % (-1)::int2; diff --git a/src/test/regress/sql/int8.sql b/src/test/regress/sql/int8.sql index 9126cdc8fb..f7c3c56824 100644 --- a/src/test/regress/sql/int8.sql +++ b/src/test/regress/sql/int8.sql @@ -194,3 +194,14 @@ SELECT * FROM generate_series('+4567890123456789'::int8, '+4567890123456799'::in -- corner case SELECT (-1::int8<<63)::text; SELECT ((-1::int8<<63)+1)::text; + +-- check sane handling of INT64_MIN overflow cases +SELECT (-9223372036854775808)::int8 * (-1)::int8; +SELECT (-9223372036854775808)::int8 / (-1)::int8; +SELECT (-9223372036854775808)::int8 % (-1)::int8; +SELECT (-9223372036854775808)::int8 * (-1)::int4; +SELECT (-9223372036854775808)::int8 / (-1)::int4; +SELECT (-9223372036854775808)::int8 % (-1)::int4; +SELECT (-9223372036854775808)::int8 * (-1)::int2; +SELECT (-9223372036854775808)::int8 / (-1)::int2; +SELECT (-9223372036854775808)::int8 % (-1)::int2; diff --git a/src/test/regress/sql/interval.sql b/src/test/regress/sql/interval.sql index a910baf599..9dac0e8210 100644 --- a/src/test/regress/sql/interval.sql +++ b/src/test/regress/sql/interval.sql @@ -108,6 +108,8 @@ select avg(f1) from interval_tbl; -- test long interval input select '4 millenniums 5 centuries 4 decades 1 year 4 months 4 days 17 minutes 31 seconds'::interval; +-- test long interval output +select '100000000y 10mon -1000000000d -1000000000h -10min -10.000001s ago'::interval; -- test justify_hours() and justify_days() @@ -165,9 +167,14 @@ SELECT interval '1 2:03:04' hour to second; SELECT interval '1 2' minute to second; SELECT interval '1 2:03' minute to second; SELECT interval '1 2:03:04' minute to second; +SELECT interval '1 +2:03' minute to second; +SELECT interval '1 +2:03:04' minute to second; +SELECT interval '1 -2:03' minute to second; +SELECT interval '1 -2:03:04' minute to second; SELECT interval '123 11' day to hour; -- ok SELECT interval '123 11' day; -- not ok SELECT interval '123 11'; -- not ok, too ambiguous +SELECT interval '123 2:03 -2:04'; -- not ok, redundant hh:mm fields -- test syntaxes for restricted precision SELECT interval(0) '1 day 01:23:45.6789'; diff --git a/src/test/regress/sql/join.sql b/src/test/regress/sql/join.sql index 05373475af..f1d3a9edb8 100644 --- a/src/test/regress/sql/join.sql +++ b/src/test/regress/sql/join.sql @@ -324,8 +324,6 @@ NATURAL FULL JOIN -- Test for propagation of nullability constraints into sub-joins -SET enforce_two_phase_commit TO off; - create temp table x (x1 int, x2 int); insert into x values (1,11); insert into x values (2,22); @@ -646,12 +644,154 @@ order by c.name; rollback; +-- +-- test incorrect handling of placeholders that only appear in targetlists, +-- per bug #6154 +-- +SELECT * FROM +( SELECT 1 as key1 ) sub1 +LEFT JOIN +( SELECT sub3.key3, sub4.value2, COALESCE(sub4.value2, 66) as value3 FROM + ( SELECT 1 as key3 ) sub3 + LEFT JOIN + ( SELECT sub5.key5, COALESCE(sub6.value1, 1) as value2 FROM + ( SELECT 1 as key5 ) sub5 + LEFT JOIN + ( SELECT 2 as key6, 42 as value1 ) sub6 + ON sub5.key5 = sub6.key6 + ) sub4 + ON sub4.key5 = sub3.key3 +) sub2 +ON sub1.key1 = sub2.key3; + +-- test the path using join aliases, too +SELECT * FROM +( SELECT 1 as key1 ) sub1 +LEFT JOIN +( SELECT sub3.key3, value2, COALESCE(value2, 66) as value3 FROM + ( SELECT 1 as key3 ) sub3 + LEFT JOIN + ( SELECT sub5.key5, COALESCE(sub6.value1, 1) as value2 FROM + ( SELECT 1 as key5 ) sub5 + LEFT JOIN + ( SELECT 2 as key6, 42 as value1 ) sub6 + ON sub5.key5 = sub6.key6 + ) sub4 + ON sub4.key5 = sub3.key3 +) sub2 +ON sub1.key1 = sub2.key3; + +-- +-- test case where a PlaceHolderVar is used as a nestloop parameter +-- + +EXPLAIN (COSTS OFF, NUM_NODES OFF, NODES FALSE) +SELECT qq, unique1 + FROM + ( SELECT COALESCE(q1, 0) AS qq FROM int8_tbl a ) AS ss1 + FULL OUTER JOIN + ( SELECT COALESCE(q2, -1) AS qq FROM int8_tbl b ) AS ss2 + USING (qq) + INNER JOIN tenk1 c ON qq = unique2; + +SELECT qq, unique1 + FROM + ( SELECT COALESCE(q1, 0) AS qq FROM int8_tbl a ) AS ss1 + FULL OUTER JOIN + ( SELECT COALESCE(q2, -1) AS qq FROM int8_tbl b ) AS ss2 + USING (qq) + INNER JOIN tenk1 c ON qq = unique2; + +-- +-- test case where a PlaceHolderVar is propagated into a subquery +-- + +explain (costs off, num_nodes off, nodes off) +select * from + int8_tbl t1 left join + (select q1 as x, 42 as y from int8_tbl t2) ss + on t1.q2 = ss.x +where + 1 = (select 1 from int8_tbl t3 where ss.y is not null limit 1) +order by 1,2; + +select * from + int8_tbl t1 left join + (select q1 as x, 42 as y from int8_tbl t2) ss + on t1.q2 = ss.x +where + 1 = (select 1 from int8_tbl t3 where ss.y is not null limit 1) +order by 1,2; + -- -- test the corner cases FULL JOIN ON TRUE and FULL JOIN ON FALSE -- select * from int4_tbl a full join int4_tbl b on true order by 1,2; select * from int4_tbl a full join int4_tbl b on false order by 1,2; +-- +-- test handling of potential equivalence clauses above outer joins +-- + +explain (costs off, nodes off, num_nodes off) +select q1, unique2, thousand, hundred + from int8_tbl a left join tenk1 b on q1 = unique2 + where coalesce(thousand,123) = q1 and q1 = coalesce(hundred,123); + +select q1, unique2, thousand, hundred + from int8_tbl a left join tenk1 b on q1 = unique2 + where coalesce(thousand,123) = q1 and q1 = coalesce(hundred,123); + +explain (costs off, nodes off, num_nodes off) +select f1, unique2, case when unique2 is null then f1 else 0 end + from int4_tbl a left join tenk1 b on f1 = unique2 + where (case when unique2 is null then f1 else 0 end) = 0; + +select f1, unique2, case when unique2 is null then f1 else 0 end + from int4_tbl a left join tenk1 b on f1 = unique2 + where (case when unique2 is null then f1 else 0 end) = 0; + +-- +-- check handling of join aliases when flattening multiple levels of subquery +-- + +explain (verbose, costs off, nodes off, num_nodes off) +select foo1.join_key as foo1_id, foo3.join_key AS foo3_id, bug_field from + (values (0),(1)) foo1(join_key) +left join + (select join_key, bug_field from + (select ss1.join_key, ss1.bug_field from + (select f1 as join_key, 666 as bug_field from int4_tbl i1) ss1 + ) foo2 + left join + (select unique2 as join_key from tenk1 i2) ss2 + using (join_key) + ) foo3 +using (join_key); + +select foo1.join_key as foo1_id, foo3.join_key AS foo3_id, bug_field from + (values (0),(1)) foo1(join_key) +left join + (select join_key, bug_field from + (select ss1.join_key, ss1.bug_field from + (select f1 as join_key, 666 as bug_field from int4_tbl i1) ss1 + ) foo2 + left join + (select unique2 as join_key from tenk1 i2) ss2 + using (join_key) + ) foo3 +using (join_key); + +-- +-- test ability to push constants through outer join clauses +-- + +explain (costs off, nodes off, num_nodes off) + select * from int4_tbl a left join tenk1 b on f1 = unique2 where f1 = 0; + +explain (costs off, nodes off, num_nodes off) + select * from tenk1 a full join tenk1 b using(unique2) where unique2 = 42; + -- -- test join removal -- @@ -666,14 +806,14 @@ INSERT INTO b VALUES (0, 0), (1, NULL); INSERT INTO c VALUES (0), (1); -- all three cases should be optimizable into a simple seqscan -explain (verbose true, costs false, nodes false) SELECT a.* FROM a LEFT JOIN b ON a.b_id = b.id; -explain (verbose true, costs false, nodes false) SELECT b.* FROM b LEFT JOIN c ON b.c_id = c.id; -explain (verbose true, costs false, nodes false) +explain (verbose true, costs false, nodes false, num_nodes off) SELECT a.* FROM a LEFT JOIN b ON a.b_id = b.id; +explain (verbose true, costs false, nodes false, num_nodes off) SELECT b.* FROM b LEFT JOIN c ON b.c_id = c.id; +explain (verbose true, costs false, nodes false, num_nodes off) SELECT a.* FROM a LEFT JOIN (b left join c on b.c_id = c.id) ON (a.b_id = b.id); -- check optimization of outer join within another special join -explain (verbose true, costs false, nodes false) +explain (verbose true, costs false, nodes false, num_nodes off) select id from a where id in ( select b.id from b left join c on b.id = c.id ); @@ -687,23 +827,23 @@ insert into child values (1, 100), (4, 400); -- this case is optimizable select p.* from parent p left join child c on (p.k = c.k) order by 1,2; -explain (verbose true, costs false, nodes false) +explain (verbose true, costs false, nodes false, num_nodes off) select p.* from parent p left join child c on (p.k = c.k) order by 1,2; -- this case is not select p.*, linked from parent p left join (select c.*, true as linked from child c) as ss - on (p.k = ss.k); -explain (verbose true, costs false, nodes false) + on (p.k = ss.k) order by p.k; +explain (verbose true, costs false, nodes false, num_nodes off) select p.*, linked from parent p left join (select c.*, true as linked from child c) as ss - on (p.k = ss.k); + on (p.k = ss.k) order by p.k; -- check for a 9.0rc1 bug: join removal breaks pseudoconstant qual handling select p.* from parent p left join child c on (p.k = c.k) where p.k = 1 and p.k = 2; -explain (verbose true, costs false, nodes false) +explain (verbose true, costs false, nodes false, num_nodes off) select p.* from parent p left join child c on (p.k = c.k) where p.k = 1 and p.k = 2; @@ -711,7 +851,7 @@ select p.* from select p.* from (parent p left join child c on (p.k = c.k)) join parent x on p.k = x.k where p.k = 1 and p.k = 2; -explain (verbose true, costs false, nodes false) +explain (verbose true, costs false, nodes false, num_nodes off) select p.* from (parent p left join child c on (p.k = c.k)) join parent x on p.k = x.k where p.k = 1 and p.k = 2; diff --git a/src/test/regress/sql/numeric.sql b/src/test/regress/sql/numeric.sql index 1ab688cda4..2e6d3e1ad3 100644 --- a/src/test/regress/sql/numeric.sql +++ b/src/test/regress/sql/numeric.sql @@ -764,6 +764,10 @@ SELECT '' AS to_char_21, to_char(val, '999999SG9999999999') FROM num_data ORDE SELECT '' AS to_char_22, to_char(val, 'FM9999999999999999.999999999999999') FROM num_data ORDER BY val; SELECT '' AS to_char_23, to_char(val, '9.999EEEE') FROM num_data ORDER BY val; +SELECT '' AS to_char_24, to_char('100'::numeric, 'FM999.9'); +SELECT '' AS to_char_25, to_char('100'::numeric, 'FM999.'); +SELECT '' AS to_char_26, to_char('100'::numeric, 'FM999'); + -- TO_NUMBER() -- SELECT '' AS to_number_1, to_number('-34,338,492', '99G999G999'); diff --git a/src/test/regress/sql/plancache.sql b/src/test/regress/sql/plancache.sql index e68f6d828b..bc5f594cc6 100644 --- a/src/test/regress/sql/plancache.sql +++ b/src/test/regress/sql/plancache.sql @@ -2,9 +2,6 @@ -- Tests to exercise the plan caching/invalidation mechanism -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - CREATE TEMP TABLE pcachetest AS SELECT * FROM int8_tbl; -- create and use a cached plan diff --git a/src/test/regress/sql/plpgsql.sql b/src/test/regress/sql/plpgsql.sql index a892e63638..025a8f37c1 100644 --- a/src/test/regress/sql/plpgsql.sql +++ b/src/test/regress/sql/plpgsql.sql @@ -1746,9 +1746,6 @@ select trap_matching_test(100000); -- PGXCTODO: This is failing due to issue 3522907, complicated SELECT queries in plpgsql functions select trap_matching_test(1); --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - create temp table foo (f1 int); create function blockme() returns int as $$ @@ -1801,57 +1798,6 @@ end$$ language plpgsql; select test_variable_storage(); --- --- test foreign key error trapping --- - -create temp table master(f1 int primary key); - -create temp table slave(f1 int references master deferrable); - -insert into master values(1); -insert into slave values(1); -insert into slave values(2); -- fails - -create function trap_foreign_key(int) returns int as $$ -begin - begin -- start a subtransaction - insert into slave values($1); - exception - when foreign_key_violation then - raise notice 'caught foreign_key_violation'; - return 0; - end; - return 1; -end$$ language plpgsql; - -create function trap_foreign_key_2() returns int as $$ -begin - begin -- start a subtransaction - set constraints all immediate; - exception - when foreign_key_violation then - raise notice 'caught foreign_key_violation'; - return 0; - end; - return 1; -end$$ language plpgsql; - -select trap_foreign_key(1); -select trap_foreign_key(2); -- detects FK violation - -begin; - set constraints all deferred; - select trap_foreign_key(2); -- should not detect FK violation - savepoint x; - set constraints all immediate; -- fails - rollback to x; - select trap_foreign_key_2(); -- detects FK violation -commit; -- still fails - -drop function trap_foreign_key(int); -drop function trap_foreign_key_2(); - -- -- Test proper snapshot handling in simple expressions -- diff --git a/src/test/regress/sql/polymorphism.sql b/src/test/regress/sql/polymorphism.sql index e3edd3e83c..193f05e968 100644 --- a/src/test/regress/sql/polymorphism.sql +++ b/src/test/regress/sql/polymorphism.sql @@ -339,9 +339,6 @@ CREATE AGGREGATE myaggn20a(BASETYPE = anyelement, SFUNC = tfp, CREATE AGGREGATE mysum2(anyelement,anyelement) (SFUNC = sum3, STYPE = anyelement, INITCOND = '0'); --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - -- create test data for polymorphic aggregates create temp table t(f1 int, f2 int[], f3 text); insert into t values(1,array[1],'a'); @@ -395,6 +392,21 @@ select f1, sql_if(f1 > 0, bleat(f1), bleat(f1 + 1)) from (select * from int4_tbl select q2, sql_if(q2 > 0, q2, q2 + 1) from int8_tbl order by 1, 2; +-- another sort of polymorphic aggregate + +CREATE AGGREGATE array_cat_accum (anyarray) +( + sfunc = array_cat, + stype = anyarray, + initcond = '{}' +); + +SELECT array_cat_accum(i) +FROM (VALUES (ARRAY[1,2]), (ARRAY[3,4])) as t(i); + +SELECT array_cat_accum(i) +FROM (VALUES (ARRAY[row(1,2),row(3,4)]), (ARRAY[row(5,6),row(7,8)])) as t(i); + -- another kind of polymorphic aggregate create function add_group(grp anyarray, ad anyelement, size integer) diff --git a/src/test/regress/sql/prepared_xacts.sql b/src/test/regress/sql/prepared_xacts.sql index 207bd2d9fc..621fb015be 100644 --- a/src/test/regress/sql/prepared_xacts.sql +++ b/src/test/regress/sql/prepared_xacts.sql @@ -29,7 +29,7 @@ SELECT pgxc_prepared_xact FROM pgxc_prepared_xacts ORDER by 1; -- Test ROLLBACK PREPARED ROLLBACK PREPARED 'foo1'; -SELECT * FROM pxtest1 ORDER BY foobar; +SELECT * FROM pxtest1 ORDER BY foobar; -- Check prepared transactions on Coordinator SELECT gid FROM pg_prepared_xacts ORDER BY gid; @@ -42,11 +42,11 @@ INSERT INTO pxtest1 VALUES ('ddd'); SELECT * FROM pxtest1 ORDER BY foobar; PREPARE TRANSACTION 'foo2'; -SELECT * FROM pxtest1 ORDER BY foobar; +SELECT * FROM pxtest1 ORDER BY foobar; COMMIT PREPARED 'foo2'; -SELECT * FROM pxtest1 ORDER BY foobar; +SELECT * FROM pxtest1 ORDER BY foobar; -- Test duplicate gids BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; @@ -61,16 +61,40 @@ SELECT pgxc_prepared_xact FROM pgxc_prepared_xacts ORDER by 1; BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; INSERT INTO pxtest1 VALUES ('fff'); -SELECT * FROM pxtest1 ORDER BY foobar; -- This should fail, because the gid foo3 is already in use PREPARE TRANSACTION 'foo3'; -SELECT * FROM pxtest1 ORDER BY foobar; +SELECT * FROM pxtest1 ORDER BY foobar; ROLLBACK PREPARED 'foo3'; -SELECT * FROM pxtest1 ORDER BY foobar; +SELECT * FROM pxtest1 ORDER BY foobar; + +-- Test serialization failure (SSI) +BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; +UPDATE pxtest1 SET foobar = 'eee' WHERE foobar = 'ddd'; +SELECT * FROM pxtest1 ORDER BY foobar; +PREPARE TRANSACTION 'foo4'; + +SELECT gid FROM pg_prepared_xacts; + +BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; +SELECT * FROM pxtest1 ORDER BY foobar; + +-- This should fail, because the two transactions have a write-skew anomaly +INSERT INTO pxtest1 VALUES ('fff'); +PREPARE TRANSACTION 'foo5'; + +SELECT gid FROM pg_prepared_xacts; + +ROLLBACK PREPARED 'foo4'; + +SELECT gid FROM pg_prepared_xacts; + +-- In Postgres-XC, serializable is not yet supported, and SERIALIZABLE falls to +-- read-committed silently, so rollback transaction properly +ROLLBACK PREPARED 'foo5'; -- Clean up DROP TABLE pxtest1; diff --git a/src/test/regress/sql/privileges.sql b/src/test/regress/sql/privileges.sql index 49af002b0c..cb8274246a 100644 --- a/src/test/regress/sql/privileges.sql +++ b/src/test/regress/sql/privileges.sql @@ -37,7 +37,7 @@ ALTER GROUP regressgroup1 ADD USER regressuser4; ALTER GROUP regressgroup2 ADD USER regressuser2; -- duplicate ALTER GROUP regressgroup2 DROP USER regressuser2; -ALTER GROUP regressgroup2 ADD USER regressuser4; +GRANT regressgroup2 TO regressuser4 WITH ADMIN OPTION; -- test owner privileges @@ -476,6 +476,33 @@ SELECT has_table_privilege('regressuser3', 'atest4', 'SELECT'); -- false SELECT has_table_privilege('regressuser1', 'atest4', 'SELECT WITH GRANT OPTION'); -- true +-- Admin options + +SET SESSION AUTHORIZATION regressuser4; +CREATE FUNCTION dogrant_ok() RETURNS void LANGUAGE sql SECURITY DEFINER AS + 'GRANT regressgroup2 TO regressuser5'; +GRANT regressgroup2 TO regressuser5; -- ok: had ADMIN OPTION +SET ROLE regressgroup2; +GRANT regressgroup2 TO regressuser5; -- fails: SET ROLE suspended privilege + +SET SESSION AUTHORIZATION regressuser1; +GRANT regressgroup2 TO regressuser5; -- fails: no ADMIN OPTION +SELECT dogrant_ok(); -- ok: SECURITY DEFINER conveys ADMIN +SET ROLE regressgroup2; +GRANT regressgroup2 TO regressuser5; -- fails: SET ROLE did not help + +SET SESSION AUTHORIZATION regressgroup2; +GRANT regressgroup2 TO regressuser5; -- ok: a role can self-admin +CREATE FUNCTION dogrant_fails() RETURNS void LANGUAGE sql SECURITY DEFINER AS + 'GRANT regressgroup2 TO regressuser5'; +SELECT dogrant_fails(); -- fails: no self-admin in SECURITY DEFINER +DROP FUNCTION dogrant_fails(); + +SET SESSION AUTHORIZATION regressuser4; +DROP FUNCTION dogrant_ok(); +REVOKE regressgroup2 FROM regressuser5; + + -- has_sequence_privilege tests \c - @@ -675,6 +702,30 @@ DROP SCHEMA testns CASCADE; RESET client_min_messages; +-- test that dependent privileges are revoked (or not) properly +\c - + +set session role regressuser1; +create table dep_priv_test (a int); +grant select on dep_priv_test to regressuser2 with grant option; +grant select on dep_priv_test to regressuser3 with grant option; +set session role regressuser2; +grant select on dep_priv_test to regressuser4 with grant option; +set session role regressuser3; +grant select on dep_priv_test to regressuser4 with grant option; +set session role regressuser4; +grant select on dep_priv_test to regressuser5; +\dp dep_priv_test +set session role regressuser2; +revoke select on dep_priv_test from regressuser4 cascade; +\dp dep_priv_test +set session role regressuser3; +revoke select on dep_priv_test from regressuser4 cascade; +\dp dep_priv_test +set session role regressuser1; +drop table dep_priv_test; + + -- clean up \c diff --git a/src/test/regress/sql/rangefuncs.sql b/src/test/regress/sql/rangefuncs.sql index b58daa6ad2..6bb65c3380 100644 --- a/src/test/regress/sql/rangefuncs.sql +++ b/src/test/regress/sql/rangefuncs.sql @@ -286,13 +286,17 @@ AS $$ SELECT a, b SELECT * FROM foo(3) ORDER BY 1, 2; DROP FUNCTION foo(int); +-- case that causes change of typmod knowledge during inlining +CREATE OR REPLACE FUNCTION foo() +RETURNS TABLE(a varchar(5)) +AS $$ SELECT 'hello'::varchar(5) $$ LANGUAGE sql STABLE; +SELECT * FROM foo() GROUP BY 1; +DROP FUNCTION foo(); + -- -- some tests on SQL functions with RETURNING -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - create temp table tt(f1 serial, data text); create function insert_tt(text) returns int as @@ -451,3 +455,12 @@ $$ select (1, 2.1, 3) $$ language sql; select * from foobar(); -- fail drop function foobar(); + +-- check behavior when a function's input sometimes returns a set (bug #8228) + +SELECT *, + lower(CASE WHEN id = 2 THEN (regexp_matches(str, '^0*([1-9]\d+)$'))[1] + ELSE str + END) +FROM + (VALUES (1,''), (2,'0000000049404'), (3,'FROM 10000000876')) v(id, str); diff --git a/src/test/regress/sql/returning.sql b/src/test/regress/sql/returning.sql index d681623080..4552ac0b8d 100644 --- a/src/test/regress/sql/returning.sql +++ b/src/test/regress/sql/returning.sql @@ -4,9 +4,6 @@ -- Simple cases --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - CREATE TEMP TABLE foo (f1 serial, f2 text, f3 int default 42); INSERT INTO foo (f2,f3) diff --git a/src/test/regress/sql/rowtypes.sql b/src/test/regress/sql/rowtypes.sql index e55775308e..3843268547 100644 --- a/src/test/regress/sql/rowtypes.sql +++ b/src/test/regress/sql/rowtypes.sql @@ -6,9 +6,6 @@ create type complex as (r float8, i float8); --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - create temp table fullname (first text, last text); -- Nested composite @@ -98,6 +95,11 @@ select ROW('ABC','DEF') ~<=~ ROW('DEF','ABC') as true; select ROW('ABC','DEF') ~>=~ ROW('DEF','ABC') as false; select ROW('ABC','DEF') ~~ ROW('DEF','ABC') as fail; +-- Comparisons of ROW() expressions can cope with some type mismatches +select ROW(1,2) = ROW(1,2::int8); +select ROW(1,2) in (ROW(3,4), ROW(1,2)); +select ROW(1,2) in (ROW(3,4), ROW(1,2::int8)); + -- Check row comparison with a subselect select unique1, unique2 from tenk1 where (unique1, unique2) < any (select ten, ten from tenk1 where hundred < 3) @@ -109,6 +111,16 @@ select thousand, tenthous from tenk1 where (thousand, tenthous) >= (997, 5000) order by thousand, tenthous; +-- Check row comparisons with IN +select * from int8_tbl i8 where i8 in (row(123,456)); -- fail, type mismatch + +explain (costs off, nodes off, num_nodes off) +select * from int8_tbl i8 +where i8 in (row(123,456)::int8_tbl, '(4567890123456789,123)'); + +select * from int8_tbl i8 +where i8 in (row(123,456)::int8_tbl, '(4567890123456789,123)') ORDER BY 1,2; + -- Check some corner cases involving empty rowtypes select ROW(); select ROW() IS NULL; diff --git a/src/test/regress/sql/rules.sql b/src/test/regress/sql/rules.sql index 4c74c2d830..2ab01058f7 100644 --- a/src/test/regress/sql/rules.sql +++ b/src/test/regress/sql/rules.sql @@ -859,6 +859,21 @@ create view fooview as select 'foo'::text; drop rule "_RETURN" on fooview; drop view fooview; +-- +-- test conversion of table to view (needed to load some pg_dump files) +-- + +create table fooview (x int, y text); +select xmin, * from fooview; + +create rule "_RETURN" as on select to fooview do instead + select 1 as x, 'aaa'::text as y; + +select * from fooview; +select xmin, * from fooview; -- fail, views don't have such a column + +drop view fooview; + -- -- check for planner problems with complex inherited UPDATES -- @@ -895,8 +910,6 @@ reset client_min_messages; -- check corner case where an entirely-dummy subplan is created by -- constraint exclusion -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; create temp table t1 (a integer primary key) distribute by replication; diff --git a/src/test/regress/sql/select.sql b/src/test/regress/sql/select.sql index 5f7a5727dd..3d8d3cde6c 100644 --- a/src/test/regress/sql/select.sql +++ b/src/test/regress/sql/select.sql @@ -158,9 +158,6 @@ ORDER BY column1,column2; -- Test ORDER BY options -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - CREATE TEMP TABLE foo (f1 int); INSERT INTO foo VALUES (42),(3),(10),(7),(null),(null),(1); diff --git a/src/test/regress/sql/select_distinct.sql b/src/test/regress/sql/select_distinct.sql index fc59068011..85d69a2fa3 100644 --- a/src/test/regress/sql/select_distinct.sql +++ b/src/test/regress/sql/select_distinct.sql @@ -39,9 +39,6 @@ SELECT DISTINCT p.age FROM person* p ORDER BY age using >; -- very own regression file. -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - CREATE TEMP TABLE disttable (f1 integer); INSERT INTO DISTTABLE VALUES(1); INSERT INTO DISTTABLE VALUES(2); diff --git a/src/test/regress/sql/select_into.sql b/src/test/regress/sql/select_into.sql index 2fa3d1e08e..5763c5e184 100644 --- a/src/test/regress/sql/select_into.sql +++ b/src/test/regress/sql/select_into.sql @@ -15,3 +15,18 @@ SELECT * WHERE onek2.unique1 < 2; DROP TABLE tmp1; + +-- +-- CREATE TABLE AS/SELECT INTO as last command in a SQL function +-- have been known to cause problems +-- +CREATE FUNCTION make_table() RETURNS VOID +AS $$ + CREATE TABLE created_table AS SELECT * FROM int8_tbl; +$$ LANGUAGE SQL; + +SELECT make_table(); + +SELECT * FROM created_table; + +DROP TABLE created_table; diff --git a/src/test/regress/sql/select_views.sql b/src/test/regress/sql/select_views.sql index 070e89ccca..28c1c2f1a9 100644 --- a/src/test/regress/sql/select_views.sql +++ b/src/test/regress/sql/select_views.sql @@ -3,7 +3,7 @@ -- test the views defined in CREATE_VIEWS -- -SELECT * FROM street ORDER BY 1,3; +SELECT * FROM street ORDER BY name,cname,thepath::text; SELECT name, #thepath FROM iexit ORDER BY 1, 2; diff --git a/src/test/regress/sql/sequence.sql b/src/test/regress/sql/sequence.sql index 74684e0b13..8557cea5fd 100644 --- a/src/test/regress/sql/sequence.sql +++ b/src/test/regress/sql/sequence.sql @@ -47,9 +47,6 @@ SELECT * FROM serialTest ORDER BY f1, f2; -- Check dependencies of serial and ordinary sequences -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - CREATE TEMP SEQUENCE myseq2; CREATE TEMP SEQUENCE myseq3; CREATE TEMP TABLE t1 ( diff --git a/src/test/regress/sql/stats.sql b/src/test/regress/sql/stats.sql index a4a88ca931..4a72a949f2 100644 --- a/src/test/regress/sql/stats.sql +++ b/src/test/regress/sql/stats.sql @@ -12,8 +12,6 @@ SHOW track_counts; -- must be on -- else our messages might get lost due to contention SELECT pg_sleep(2.0); -SET enforce_two_phase_commit TO off; - -- save counters CREATE TEMP TABLE prevstats AS SELECT t.seq_scan, t.seq_tup_read, t.idx_scan, t.idx_tup_fetch, diff --git a/src/test/regress/sql/strings.sql b/src/test/regress/sql/strings.sql index cd8ec9b359..1d26b7b780 100644 --- a/src/test/regress/sql/strings.sql +++ b/src/test/regress/sql/strings.sql @@ -158,6 +158,13 @@ SELECT regexp_matches('foobarbequebaz', $re$(bar)(.+)?(beque)$re$); -- no capture groups SELECT regexp_matches('foobarbequebaz', $re$barbeque$re$); +-- start/end-of-line matches are of zero length +SELECT regexp_matches('foo' || chr(10) || 'bar' || chr(10) || 'bequq' || chr(10) || 'baz', '^', 'mg'); +SELECT regexp_matches('foo' || chr(10) || 'bar' || chr(10) || 'bequq' || chr(10) || 'baz', '$', 'mg'); +SELECT regexp_matches('1' || chr(10) || '2' || chr(10) || '3' || chr(10) || '4' || chr(10), '^.?', 'mg'); +SELECT regexp_matches(chr(10) || '1' || chr(10) || '2' || chr(10) || '3' || chr(10) || '4' || chr(10), '.?$', 'mg'); +SELECT regexp_matches(chr(10) || '1' || chr(10) || '2' || chr(10) || '3' || chr(10) || '4', '.?$', 'mg'); + -- give me errors SELECT regexp_matches('foobarbequebaz', $re$(bar)(beque)$re$, 'gz'); SELECT regexp_matches('foobarbequebaz', $re$(barbeque$re$); diff --git a/src/test/regress/sql/subselect.sql b/src/test/regress/sql/subselect.sql index c50925b629..8f5427112e 100644 --- a/src/test/regress/sql/subselect.sql +++ b/src/test/regress/sql/subselect.sql @@ -8,6 +8,21 @@ SELECT 1 AS zero WHERE 1 NOT IN (SELECT 1); SELECT 1 AS zero WHERE 1 IN (SELECT 2); +-- Check grammar's handling of extra parens in assorted contexts + +SELECT * FROM (SELECT 1 AS x) ss; +SELECT * FROM ((SELECT 1 AS x)) ss; + +(SELECT 2) UNION SELECT 2; +((SELECT 2)) UNION SELECT 2; + +SELECT ((SELECT 2) UNION SELECT 2); +SELECT (((SELECT 2)) UNION SELECT 2); + +SELECT (SELECT ARRAY[1,2,3])[1]; +SELECT ((SELECT ARRAY[1,2,3]))[2]; +SELECT (((SELECT ARRAY[1,2,3])))[3]; + -- Set up some simple test tables CREATE TABLE SUBSELECT_TBL ( @@ -109,9 +124,6 @@ select count(distinct ss.ten) from -- Luca Pireddu and Michael Fuhr. -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - CREATE TEMP TABLE foo (id integer); CREATE TEMP TABLE bar (id1 integer, id2 integer); @@ -147,7 +159,7 @@ SELECT * FROM foo WHERE id IN CREATE TABLE orderstest ( approver_ref integer, po_ref integer, - ordercancelled boolean + ordercanceled boolean ); INSERT INTO orderstest VALUES (1, 1, false); @@ -168,8 +180,8 @@ SELECT *, WHEN ord.approver_ref=1 THEN '---' ELSE 'Approved' END) AS "Approved", (SELECT CASE - WHEN ord.ordercancelled - THEN 'Cancelled' + WHEN ord.ordercanceled + THEN 'Canceled' ELSE (SELECT CASE WHEN ord.po_ref=1 @@ -183,8 +195,8 @@ SELECT *, END) END) AS "Status", (CASE - WHEN ord.ordercancelled - THEN 'Cancelled' + WHEN ord.ordercanceled + THEN 'Canceled' ELSE (CASE WHEN ord.po_ref=1 @@ -200,7 +212,7 @@ END) AS "Status_OK" FROM orderstest ord; SELECT * FROM orders_view -ORDER BY approver_ref, po_ref, ordercancelled; +ORDER BY approver_ref, po_ref, ordercanceled; DROP TABLE orderstest cascade; @@ -340,6 +352,15 @@ select (select view_a) from view_a; select (select (select view_a)) from view_a; select (select (a.*)::text) from view_a a; +-- +-- Check that whole-row Vars reading the result of a subselect don't include +-- any junk columns therein +-- + +select q from (select max(f1) from int4_tbl group by f1 order by f1) q; +with q as (select max(f1) from int4_tbl group by f1 order by f1) + select q from q; + -- -- Test case for sublinks pushed down into subselects via join alias expansion -- @@ -352,8 +373,65 @@ from join int4_tbl i4 on dummy = i4.f1; +-- +-- Test case for cross-type partial matching in hashed subplan (bug #7597) +-- + +create temp table outer_7597 (f1 int4, f2 int4); +insert into outer_7597 values (0, 0); +insert into outer_7597 values (1, 0); +insert into outer_7597 values (0, null); +insert into outer_7597 values (1, null); + +create temp table inner_7597(c1 int8, c2 int8); +insert into inner_7597 values(0, null); + +select * from outer_7597 where (f1, f2) not in (select * from inner_7597); + -- -- Test case for premature memory release during hashing of subplan output -- select '1'::text in (select '1'::name union all select '1'::name); + +-- +-- Test case for planner bug with nested EXISTS handling +-- +select a.thousand from tenk1 a, tenk1 b +where a.thousand = b.thousand + and exists ( select 1 from tenk1 c where b.hundred = c.hundred + and not exists ( select 1 from tenk1 d + where a.thousand = d.thousand ) ); + +-- +-- Check that nested sub-selects are not pulled up if they contain volatiles +-- +explain (verbose, costs off, nodes off, num_nodes off) + select x, x from + (select (select now()) as x from (values(1),(2)) v(y)) ss; +explain (verbose, costs off, nodes off, num_nodes off) + select x, x from + (select (select random()) as x from (values(1),(2)) v(y)) ss; +explain (verbose, costs off, nodes off, num_nodes off) + select x, x from + (select (select now() where y=y) as x from (values(1),(2)) v(y)) ss; +explain (verbose, costs off, nodes off, num_nodes off) + select x, x from + (select (select random() where y=y) as x from (values(1),(2)) v(y)) ss; + +-- +-- Check we behave sanely in corner case of empty SELECT list (bug #8648) +-- +create temp table nocolumns(); +select exists(select * from nocolumns); + +-- +-- Check sane behavior with nested IN SubLinks +-- +explain (verbose, costs off, nodes off, num_nodes off) +select * from int4_tbl where + (case when f1 in (select unique1 from tenk1 a) then f1 else null end) in + (select ten from tenk1 b); +select * from int4_tbl where + (case when f1 in (select unique1 from tenk1 a) then f1 else null end) in + (select ten from tenk1 b); diff --git a/src/test/regress/sql/temp.sql b/src/test/regress/sql/temp.sql index 8522d7d3ee..aed4be86cf 100644 --- a/src/test/regress/sql/temp.sql +++ b/src/test/regress/sql/temp.sql @@ -3,9 +3,6 @@ -- Test temp relations and indexes -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - -- test temp table/index masking CREATE TABLE temptest(col int); @@ -52,9 +49,6 @@ CREATE TEMP TABLE temptest(col int); \c --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - SELECT * FROM temptest; -- Test ON COMMIT DELETE ROWS diff --git a/src/test/regress/sql/transactions.sql b/src/test/regress/sql/transactions.sql index f0da681955..1514635428 100644 --- a/src/test/regress/sql/transactions.sql +++ b/src/test/regress/sql/transactions.sql @@ -36,9 +36,6 @@ SELECT * FROM aggtest order by a, b; -- Read-only tests --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - CREATE TABLE writetest (a int); CREATE TEMPORARY TABLE temptest (a int); @@ -371,8 +368,11 @@ fetch from foo; abort; --- tests for the "tid" type -SELECT '(3, 3)'::tid = '(3, 4)'::tid; -SELECT '(3, 3)'::tid = '(3, 3)'::tid; -SELECT '(3, 3)'::tid <> '(3, 3)'::tid; -SELECT '(3, 3)'::tid <> '(3, 4)'::tid; +-- Test for successful cleanup of an aborted transaction at session exit. +-- THIS MUST BE THE LAST TEST IN THIS FILE. + +begin; +select 1/0; +rollback to X; + +-- DO NOT ADD ANYTHING HERE. diff --git a/src/test/regress/sql/triggers.sql b/src/test/regress/sql/triggers.sql index ef78633ef7..9ed1f114cd 100644 --- a/src/test/regress/sql/triggers.sql +++ b/src/test/regress/sql/triggers.sql @@ -308,6 +308,32 @@ SELECT pg_get_triggerdef(oid) FROM pg_trigger WHERE tgrelid = 'main_table'::regc UPDATE main_table SET a = 50; UPDATE main_table SET b = 10; +-- +-- Test case for bug with BEFORE trigger followed by AFTER trigger with WHEN +-- + +CREATE TABLE some_t (some_col boolean NOT NULL); +CREATE FUNCTION dummy_update_func() RETURNS trigger AS $$ +BEGIN + RAISE NOTICE 'dummy_update_func(%) called: action = %, old = %, new = %', + TG_ARGV[0], TG_OP, OLD, NEW; + RETURN NEW; +END; +$$ LANGUAGE plpgsql; +CREATE TRIGGER some_trig_before BEFORE UPDATE ON some_t FOR EACH ROW + EXECUTE PROCEDURE dummy_update_func('before'); +CREATE TRIGGER some_trig_aftera AFTER UPDATE ON some_t FOR EACH ROW + WHEN (NOT OLD.some_col AND NEW.some_col) + EXECUTE PROCEDURE dummy_update_func('aftera'); +CREATE TRIGGER some_trig_afterb AFTER UPDATE ON some_t FOR EACH ROW + WHEN (NOT NEW.some_col) + EXECUTE PROCEDURE dummy_update_func('afterb'); +INSERT INTO some_t VALUES (TRUE); +UPDATE some_t SET some_col = TRUE; +UPDATE some_t SET some_col = FALSE; +UPDATE some_t SET some_col = TRUE; +DROP TABLE some_t; + -- bogus cases CREATE TRIGGER error_upd_and_col BEFORE UPDATE OR UPDATE OF a ON main_table FOR EACH ROW EXECUTE PROCEDURE trigger_func('error_upd_and_col'); diff --git a/src/test/regress/sql/tsearch.sql b/src/test/regress/sql/tsearch.sql index 270bfd2e73..fce7cb70ef 100644 --- a/src/test/regress/sql/tsearch.sql +++ b/src/test/regress/sql/tsearch.sql @@ -60,6 +60,7 @@ SELECT count(*) FROM test_tsvector WHERE a @@ 'eq|yt'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq&yt)|(wr&qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq|yt)&(wr|qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*'; +SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}'); RESET enable_seqscan; @@ -76,6 +77,7 @@ SELECT count(*) FROM test_tsvector WHERE a @@ 'eq|yt'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq&yt)|(wr&qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ '(eq|yt)&(wr|qh)'; SELECT count(*) FROM test_tsvector WHERE a @@ 'w:*|q:*'; +SELECT count(*) FROM test_tsvector WHERE a @@ any ('{wr,qh}'); RESET enable_seqscan; INSERT INTO test_tsvector VALUES ('???', 'DFG:1A,2B,6C,10 FGH'); diff --git a/src/test/regress/sql/txid.sql b/src/test/regress/sql/txid.sql index a05e26fc26..12090e1f28 100644 --- a/src/test/regress/sql/txid.sql +++ b/src/test/regress/sql/txid.sql @@ -1,8 +1,5 @@ -- txid_snapshot data type and related functions --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - -- i/o select '12:13:'::txid_snapshot; select '12:18:14,16'::txid_snapshot; diff --git a/src/test/regress/sql/union.sql b/src/test/regress/sql/union.sql index 78f166eaa7..00a6223a00 100644 --- a/src/test/regress/sql/union.sql +++ b/src/test/regress/sql/union.sql @@ -170,3 +170,85 @@ ORDER BY 1; -- This should fail, but it should produce an error cursor SELECT '3.4'::numeric UNION SELECT 'foo'; + +-- +-- Test that expression-index constraints can be pushed down through +-- UNION or UNION ALL +-- +CREATE TEMP TABLE t1 (a text, b text); +CREATE INDEX t1_ab_idx on t1 ((a || b)); +CREATE TEMP TABLE t2 (ab text primary key); +INSERT INTO t1 VALUES ('a', 'b'), ('x', 'y'); +INSERT INTO t2 VALUES ('ab'), ('xy'); + +set enable_seqscan = off; +set enable_indexscan = on; +set enable_bitmapscan = off; + +explain (num_nodes off, nodes off, costs off) + SELECT * FROM + (SELECT a || b AS ab FROM t1 + UNION ALL + SELECT * FROM t2) t + WHERE ab = 'ab'; + +explain (num_nodes off, nodes off, costs off) + SELECT * FROM + (SELECT a || b AS ab FROM t1 + UNION + SELECT * FROM t2) t + WHERE ab = 'ab'; + +reset enable_seqscan; +reset enable_indexscan; +reset enable_bitmapscan; + +-- Test constraint exclusion of UNION ALL subqueries +explain (num_nodes off, nodes off, costs off) + SELECT * FROM + (SELECT 1 AS t, * FROM tenk1 a + UNION ALL + SELECT 2 AS t, * FROM tenk1 b) c + WHERE t = 2; + +-- Test that we push quals into UNION sub-selects only when it's safe +explain (costs off) +SELECT * FROM + (SELECT 1 AS t, 2 AS x + UNION + SELECT 2 AS t, 4 AS x) ss +WHERE x < 4; + +SELECT * FROM + (SELECT 1 AS t, 2 AS x + UNION + SELECT 2 AS t, 4 AS x) ss +WHERE x < 4; + +explain (costs off) +SELECT * FROM + (SELECT 1 AS t, generate_series(1,10) AS x + UNION + SELECT 2 AS t, 4 AS x) ss +WHERE x < 4 +ORDER BY x; + +SELECT * FROM + (SELECT 1 AS t, generate_series(1,10) AS x + UNION + SELECT 2 AS t, 4 AS x) ss +WHERE x < 4 +ORDER BY x; + +explain (costs off) +SELECT * FROM + (SELECT 1 AS t, (random()*3)::int AS x + UNION + SELECT 2 AS t, 4 AS x) ss +WHERE x > 3; + +SELECT * FROM + (SELECT 1 AS t, (random()*3)::int AS x + UNION + SELECT 2 AS t, 4 AS x) ss +WHERE x > 3; diff --git a/src/test/regress/sql/window.sql b/src/test/regress/sql/window.sql index 5beede6aa6..5646a18322 100644 --- a/src/test/regress/sql/window.sql +++ b/src/test/regress/sql/window.sql @@ -2,9 +2,6 @@ -- WINDOW FUNCTIONS -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - CREATE TEMPORARY TABLE empsalary ( depname varchar, empno bigint, @@ -140,6 +137,16 @@ SELECT empno, depname, salary, bonus, depadj, MIN(bonus) OVER (ORDER BY empno), THEN 200 END AS depadj FROM empsalary )s ORDER BY empno; +-- window function over ungrouped agg over empty row set (bug before 9.1) +SELECT SUM(COUNT(f1)) OVER () FROM int4_tbl WHERE f1=42; + +-- window function with ORDER BY an expression involving aggregates (9.1 bug) +select ten, + sum(unique1) + sum(unique2) as res, + rank() over (order by sum(unique1) + sum(unique2)) as rank +from tenk1 +group by ten order by ten; + -- test non-default frame specifications SELECT four, ten, sum(ten) over (partition by four order by ten), diff --git a/src/test/regress/sql/with.sql b/src/test/regress/sql/with.sql index 41c4c3a667..107a06863c 100644 --- a/src/test/regress/sql/with.sql +++ b/src/test/regress/sql/with.sql @@ -73,8 +73,6 @@ SELECT n, n IS OF (text) as is_text FROM t ORDER BY n; -- | +->D-+->F -- +->E-+->G --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; CREATE TEMP TABLE department ( id INTEGER PRIMARY KEY, -- department ID @@ -542,6 +540,111 @@ WITH RECURSIVE t(j) AS ( ) SELECT * FROM t order by 1; +-- +-- test WITH attached to intermediate-level set operation +-- + +WITH outermost(x) AS ( + SELECT 1 + UNION (WITH innermost as (SELECT 2) + SELECT * FROM innermost + UNION SELECT 3) +) +SELECT * FROM outermost; + +WITH outermost(x) AS ( + SELECT 1 + UNION (WITH innermost as (SELECT 2) + SELECT * FROM outermost -- fail + UNION SELECT * FROM innermost) +) +SELECT * FROM outermost; + +WITH RECURSIVE outermost(x) AS ( + SELECT 1 + UNION (WITH innermost as (SELECT 2) + SELECT * FROM outermost + UNION SELECT * FROM innermost) +) +SELECT * FROM outermost; + +WITH RECURSIVE outermost(x) AS ( + WITH innermost as (SELECT 2 FROM outermost) -- fail + SELECT * FROM innermost + UNION SELECT * from outermost +) +SELECT * FROM outermost; + +-- +-- This test will fail with the old implementation of PARAM_EXEC parameter +-- assignment, because the "q1" Var passed down to A's targetlist subselect +-- looks exactly like the "A.id" Var passed down to C's subselect, causing +-- the old code to give them the same runtime PARAM_EXEC slot. But the +-- lifespans of the two parameters overlap, thanks to B also reading A. +-- + +with +A as ( select q2 as id, (select q1) as x from int8_tbl ), +B as ( select id, row_number() over (partition by id) as r from A ), +C as ( select A.id, array(select B.id from B where B.id = A.id) from A ) +select * from C order by 1; + +-- +-- Test CTEs read in non-initialization orders +-- + +WITH RECURSIVE + tab(id_key,link) AS (VALUES (1,17), (2,17), (3,17), (4,17), (6,17), (5,17)), + iter (id_key, row_type, link) AS ( + SELECT 0, 'base', 17 + UNION ALL ( + WITH remaining(id_key, row_type, link, min) AS ( + SELECT tab.id_key, 'true'::text, iter.link, MIN(tab.id_key) OVER () + FROM tab INNER JOIN iter USING (link) + WHERE tab.id_key > iter.id_key + ), + first_remaining AS ( + SELECT id_key, row_type, link + FROM remaining + WHERE id_key=min + ), + effect AS ( + SELECT tab.id_key, 'new'::text, tab.link + FROM first_remaining e INNER JOIN tab ON e.id_key=tab.id_key + WHERE e.row_type = 'false' + ) + SELECT * FROM first_remaining + UNION ALL SELECT * FROM effect + ) + ) +SELECT * FROM iter; + +WITH RECURSIVE + tab(id_key,link) AS (VALUES (1,17), (2,17), (3,17), (4,17), (6,17), (5,17)), + iter (id_key, row_type, link) AS ( + SELECT 0, 'base', 17 + UNION ( + WITH remaining(id_key, row_type, link, min) AS ( + SELECT tab.id_key, 'true'::text, iter.link, MIN(tab.id_key) OVER () + FROM tab INNER JOIN iter USING (link) + WHERE tab.id_key > iter.id_key + ), + first_remaining AS ( + SELECT id_key, row_type, link + FROM remaining + WHERE id_key=min + ), + effect AS ( + SELECT tab.id_key, 'new'::text, tab.link + FROM first_remaining e INNER JOIN tab ON e.id_key=tab.id_key + WHERE e.row_type = 'false' + ) + SELECT * FROM first_remaining + UNION ALL SELECT * FROM effect + ) + ) +SELECT * FROM iter; + -- -- Data-modifying statements in WITH -- @@ -764,6 +867,42 @@ SELECT * FROM y order by 1; DROP TRIGGER y_trig ON y; DROP FUNCTION y_trigger(); +-- WITH attached to inherited UPDATE or DELETE + +CREATE TEMP TABLE parent ( id int, val text ) DISTRIBUTE BY ROUND ROBIN; +CREATE TEMP TABLE child1 ( ) INHERITS ( parent ) DISTRIBUTE BY ROUND ROBIN; +CREATE TEMP TABLE child2 ( ) INHERITS ( parent ) DISTRIBUTE BY ROUND ROBIN; + +INSERT INTO parent VALUES ( 1, 'p1' ); +INSERT INTO child1 VALUES ( 11, 'c11' ),( 12, 'c12' ); +INSERT INTO child2 VALUES ( 23, 'c21' ),( 24, 'c22' ); + +WITH rcte AS ( SELECT sum(id) AS totalid FROM parent ) +UPDATE parent SET id = id + totalid FROM rcte; + +SELECT * FROM parent ORDER BY id; + +WITH wcte AS ( INSERT INTO child1 VALUES ( 42, 'new' ) RETURNING id AS newid ) +UPDATE parent SET id = id + newid FROM wcte; + +SELECT * FROM parent ORDER BY id; + +WITH rcte AS ( SELECT max(id) AS maxid FROM parent ) +DELETE FROM parent USING rcte WHERE id = maxid; + +SELECT * FROM parent ORDER BY id; + +WITH wcte AS ( INSERT INTO child2 VALUES ( 42, 'new2' ) RETURNING id AS newid ) +DELETE FROM parent USING wcte WHERE id = newid; + +SELECT * FROM parent ORDER BY id; + +-- check EXPLAIN VERBOSE for a wCTE with RETURNING + +EXPLAIN (VERBOSE, COSTS OFF, NUM_NODES true, NODES OFF) +WITH wcte AS ( INSERT INTO int8_tbl VALUES ( 42, 47 ) RETURNING q2 ) +DELETE FROM a USING wcte WHERE aa = q2; + -- error cases -- data-modifying WITH tries to use its own output diff --git a/src/test/regress/sql/xc_FQS.sql b/src/test/regress/sql/xc_FQS.sql index 3a5479311b..43d476bdef 100644 --- a/src/test/regress/sql/xc_FQS.sql +++ b/src/test/regress/sql/xc_FQS.sql @@ -1,45 +1,7 @@ -- This file contains tests for Fast Query Shipping (FQS) for queries involving -- a single table - --- A function to create table on specified nodes -create or replace function cr_table(tab_schema varchar, nodenums int[], distribution varchar) returns void language plpgsql as $$ -declare - cr_command varchar; - nodes varchar[]; - nodename varchar; - nodenames_query varchar; - nodenames varchar; - node int; - sep varchar; - tmp_node int; - num_nodes int; -begin - nodenames_query := 'SELECT node_name FROM pgxc_node WHERE node_type = ''D'''; - cr_command := 'CREATE TABLE ' || tab_schema || ' DISTRIBUTE BY ' || distribution || ' TO NODE '; - for nodename in execute nodenames_query loop - nodes := array_append(nodes, nodename); - end loop; - nodenames := ''; - sep := ''; - num_nodes := array_length(nodes, 1); - foreach node in array nodenums loop - tmp_node := node; - if (tmp_node < 1 or tmp_node > num_nodes) then - tmp_node := tmp_node % num_nodes; - if (tmp_node < 1) then - tmp_node := num_nodes; - end if; - end if; - nodenames := nodenames || sep || nodes[tmp_node]; - sep := ', '; - end loop; - cr_command := cr_command || nodenames; - execute cr_command; -end; -$$; - -- Testset 1 for distributed table (by round robin) -select cr_table('tab1_rr(val int, val2 int)', '{1, 2, 3}'::int[], 'round robin'); +select cr_table('tab1_rr(val int, val2 int)', '{1, 2, 3}'::int[], 'round robin', NULL); insert into tab1_rr values (1, 2); insert into tab1_rr values (2, 4); insert into tab1_rr values (5, 3); @@ -88,24 +50,24 @@ select * from tab1_rr where val = 3 + 4 and val2 = 8 order by val; explain (costs off, verbose on, nodes off) select * from tab1_rr where val = 3 + 4 order by val; select * from tab1_rr where val = char_length('len')+4 order by val; explain (costs off, verbose on, nodes off) select * from tab1_rr where val = char_length('len')+4 order by val; --- insert some more values -insert into tab1_rr values (7, 2); +-- insert some more values +insert into tab1_rr values (7, 2); select avg(val) from tab1_rr where val = 7; explain (costs off, verbose on, nodes off) select avg(val) from tab1_rr where val = 7; select val, val2 from tab1_rr where val = 7 order by val2; explain (costs off, verbose on, nodes off) select val, val2 from tab1_rr where val = 7 order by val2; -select distinct val2 from tab1_rr where val = 7; +select distinct val2 from tab1_rr where val = 7 order by 1; explain (costs off, verbose on, nodes off) select distinct val2 from tab1_rr where val = 7; -- DMLs -update tab1_rr set val2 = 1000 where val = 7; -explain (costs off, verbose on, nodes off) update tab1_rr set val2 = 1000 where val = 7; +update tab1_rr set val2 = 1000 where val = 7; +explain (costs off, verbose on, nodes off) update tab1_rr set val2 = 1000 where val = 7; select * from tab1_rr where val = 7; -delete from tab1_rr where val = 7; -explain (costs off, verbose on, nodes off) delete from tab1_rr where val = 7; +delete from tab1_rr where val = 7; +explain (costs off, verbose on, nodes off) delete from tab1_rr where val = 7; select * from tab1_rr where val = 7; -- Testset 2 for distributed tables (by hash) -select cr_table('tab1_hash(val int, val2 int)', '{1, 2, 3}'::int[], 'hash(val)'); +select cr_table('tab1_hash(val int, val2 int)', '{1, 2, 3}'::int[], 'hash(val)', NULL); insert into tab1_hash values (1, 2); insert into tab1_hash values (2, 4); insert into tab1_hash values (5, 3); @@ -153,8 +115,8 @@ select * from tab1_hash where val = 3 + 4 and val2 = 8; explain (costs off, verbose on, nodes off, num_nodes on) select * from tab1_hash where val = 3 + 4; select * from tab1_hash where val = char_length('len')+4; explain (costs off, verbose on, nodes off, num_nodes on) select * from tab1_hash where val = char_length('len')+4; --- insert some more values -insert into tab1_hash values (7, 2); +-- insert some more values +insert into tab1_hash values (7, 2); select avg(val) from tab1_hash where val = 7; explain (costs off, verbose on, nodes off, num_nodes on) select avg(val) from tab1_hash where val = 7; select val, val2 from tab1_hash where val = 7 order by val2; @@ -162,15 +124,15 @@ explain (costs off, verbose on, nodes off, num_nodes on) select val, val2 from t select distinct val2 from tab1_hash where val = 7; explain (costs off, verbose on, nodes off, num_nodes on) select distinct val2 from tab1_hash where val = 7; -- DMLs -update tab1_hash set val2 = 1000 where val = 7; -explain (costs off, verbose on, nodes off) update tab1_hash set val2 = 1000 where val = 7; +update tab1_hash set val2 = 1000 where val = 7; +explain (costs off, verbose on, nodes off) update tab1_hash set val2 = 1000 where val = 7; select * from tab1_hash where val = 7; -delete from tab1_hash where val = 7; -explain (costs off, verbose on, nodes off) delete from tab1_hash where val = 7; +delete from tab1_hash where val = 7; +explain (costs off, verbose on, nodes off) delete from tab1_hash where val = 7; select * from tab1_hash where val = 7; -- Testset 3 for distributed tables (by modulo) -select cr_table('tab1_modulo(val int, val2 int)', '{1, 2, 3}'::int[], 'modulo(val)'); +select cr_table('tab1_modulo(val int, val2 int)', '{1, 2, 3}'::int[], 'modulo(val)', NULL); insert into tab1_modulo values (1, 2); insert into tab1_modulo values (2, 4); insert into tab1_modulo values (5, 3); @@ -218,8 +180,8 @@ select * from tab1_modulo where val = 3 + 4 and val2 = 8; explain (costs off, verbose on, nodes off, num_nodes on) select * from tab1_modulo where val = 3 + 4; select * from tab1_modulo where val = char_length('len')+4; explain (costs off, verbose on, nodes off, num_nodes on) select * from tab1_modulo where val = char_length('len')+4; --- insert some more values -insert into tab1_modulo values (7, 2); +-- insert some more values +insert into tab1_modulo values (7, 2); select avg(val) from tab1_modulo where val = 7; explain (costs off, verbose on, nodes off, num_nodes on) select avg(val) from tab1_modulo where val = 7; select val, val2 from tab1_modulo where val = 7 order by val2; @@ -227,16 +189,16 @@ explain (costs off, verbose on, nodes off, num_nodes on) select val, val2 from t select distinct val2 from tab1_modulo where val = 7; explain (costs off, verbose on, nodes off, num_nodes on) select distinct val2 from tab1_modulo where val = 7; -- DMLs -update tab1_modulo set val2 = 1000 where val = 7; -explain (costs off, verbose on, nodes off) update tab1_modulo set val2 = 1000 where val = 7; +update tab1_modulo set val2 = 1000 where val = 7; +explain (costs off, verbose on, nodes off) update tab1_modulo set val2 = 1000 where val = 7; select * from tab1_modulo where val = 7; -delete from tab1_modulo where val = 7; -explain (costs off, verbose on, nodes off) delete from tab1_modulo where val = 7; +delete from tab1_modulo where val = 7; +explain (costs off, verbose on, nodes off) delete from tab1_modulo where val = 7; select * from tab1_modulo where val = 7; -- Testset 4 for replicated tables, for replicated tables, unless the expression -- is itself unshippable, any query involving a single replicated table is shippable -select cr_table('tab1_replicated(val int, val2 int)', '{1, 2, 3}'::int[], 'replication'); +select cr_table('tab1_replicated(val int, val2 int)', '{1, 2, 3}'::int[], 'replication', NULL); insert into tab1_replicated values (1, 2); insert into tab1_replicated values (2, 4); insert into tab1_replicated values (5, 3); @@ -263,15 +225,14 @@ explain (costs off, num_nodes on, verbose on, nodes off) select val, val2 from t select sum(val) from tab1_replicated group by val2 having sum(val) > 1; explain (costs off, num_nodes on, verbose on, nodes off) select sum(val) from tab1_replicated group by val2 having sum(val) > 1; -- DMLs -update tab1_replicated set val2 = 1000 where val = 7; -explain (costs off, verbose on, nodes off) update tab1_replicated set val2 = 1000 where val = 7; +update tab1_replicated set val2 = 1000 where val = 7; +explain (costs off, verbose on, nodes off) update tab1_replicated set val2 = 1000 where val = 7; select * from tab1_replicated where val = 7; -delete from tab1_replicated where val = 7; -explain (costs off, verbose on, nodes off) delete from tab1_replicated where val = 7; +delete from tab1_replicated where val = 7; +explain (costs off, verbose on, nodes off) delete from tab1_replicated where val = 7; select * from tab1_replicated where val = 7; drop table tab1_rr; drop table tab1_hash; drop table tab1_modulo; drop table tab1_replicated; -drop function cr_table(varchar, int[], varchar); diff --git a/src/test/regress/sql/xc_FQS_join.sql b/src/test/regress/sql/xc_FQS_join.sql index fd7daa3b9d..c75072dc73 100644 --- a/src/test/regress/sql/xc_FQS_join.sql +++ b/src/test/regress/sql/xc_FQS_join.sql @@ -1,46 +1,5 @@ -- This file contains testcases for JOINs, it does not test the expressions -- create the tables first --- A function to create table on specified nodes -create or replace function cr_table(tab_schema varchar, nodenums int[], distribution varchar, cmd_suffix varchar) -returns void language plpgsql as $$ -declare - cr_command varchar; - nodes varchar[]; - nodename varchar; - nodenames_query varchar; - nodenames varchar; - node int; - sep varchar; - tmp_node int; - num_nodes int; -begin - nodenames_query := 'SELECT node_name FROM pgxc_node WHERE node_type = ''D'''; - cr_command := 'CREATE TABLE ' || tab_schema || ' DISTRIBUTE BY ' || distribution || ' TO NODE '; - for nodename in execute nodenames_query loop - nodes := array_append(nodes, nodename); - end loop; - nodenames := ''; - sep := ''; - num_nodes := array_length(nodes, 1); - foreach node in array nodenums loop - tmp_node := node; - if (tmp_node < 1 or tmp_node > num_nodes) then - tmp_node := tmp_node % num_nodes; - if (tmp_node < 1) then - tmp_node := num_nodes; - end if; - end if; - nodenames := nodenames || sep || nodes[tmp_node]; - sep := ', '; - end loop; - cr_command := cr_command || nodenames; - if (cmd_suffix is not null) then - cr_command := cr_command || ' ' || cmd_suffix; - end if; - execute cr_command; -end; -$$; - select cr_table('tab1_rep (val int, val2 int)', '{1, 2, 3}'::int[], 'replication', NULL); insert into tab1_rep (select * from generate_series(1, 5) a, generate_series(1, 5) b); select cr_table('tab2_rep', '{2, 3, 4}'::int[], 'replication', 'as select * from tab1_rep'); @@ -57,14 +16,14 @@ select * from tab1_rep, tab2_rep where tab1_rep.val = tab2_rep.val and explain (costs off, num_nodes on, nodes off, verbose on) select * from tab1_rep, tab2_rep where tab1_rep.val = tab2_rep.val and tab1_rep.val2 = tab2_rep.val2 and tab1_rep.val > 3 and tab1_rep.val < 5; -select * from tab1_rep natural join tab2_rep +select * from tab1_rep natural join tab2_rep where tab2_rep.val > 2 and tab2_rep.val < 5; explain (costs off, num_nodes on, nodes off, verbose on) select * from tab1_rep natural join tab2_rep where tab2_rep.val > 2 and tab2_rep.val < 5; select * from tab1_rep join tab2_rep using (val, val2) join tab3_rep using (val, val2) - where tab1_rep.val > 0 and tab2_rep.val < 3; + where tab1_rep.val > 0 and tab2_rep.val < 3; explain (costs off, num_nodes on, nodes off, verbose on) select * from tab1_rep join tab2_rep using (val, val2) join tab3_rep using (val, val2) - where tab1_rep.val > 0 and tab2_rep.val < 3; + where tab1_rep.val > 0 and tab2_rep.val < 3; select * from tab1_rep natural join tab2_rep natural join tab3_rep where tab1_rep.val > 0 and tab2_rep.val < 3; explain (costs off, num_nodes on, nodes off, verbose on) select * from tab1_rep natural join tab2_rep natural join tab3_rep @@ -141,13 +100,13 @@ explain (costs off, verbose on, nodes off) select * from tab1_mod, tab3_mod -- be reduced by JOIN reduction optimization. Turn this optimization off so as -- to generate plans independent of number of nodes in the cluster. set enable_remotejoin to false; -explain (costs off, verbose on, nodes off) update tab1_mod set val2 = 1000 from tab2_mod +explain (costs off, verbose on, nodes off) update tab1_mod set val2 = 1000 from tab2_mod where tab1_mod.val = tab2_mod.val and tab1_mod. val2 = tab2_mod.val2; explain (costs off, verbose on, nodes off) delete from tab1_mod using tab2_mod where tab1_mod.val = tab2_mod.val and tab1_mod.val2 = tab2_mod.val2; explain (costs off, verbose on, nodes off) update tab1_rep set val2 = 1000 from tab2_rep where tab1_rep.val = tab2_rep.val and tab1_rep.val2 = tab2_rep.val2; -explain (costs off, verbose on, nodes off) delete from tab1_rep using tab2_rep +explain (costs off, verbose on, nodes off) delete from tab1_rep using tab2_rep where tab1_rep.val = tab2_rep.val and tab1_rep.val2 = tab2_rep.val2; reset enable_remotejoin; @@ -157,4 +116,3 @@ drop table tab3_rep; drop table tab4_rep; drop table tab1_mod; drop table tab2_mod; -drop function cr_table(varchar, int[], varchar, varchar); diff --git a/src/test/regress/sql/xc_create_function.sql b/src/test/regress/sql/xc_create_function.sql new file mode 100644 index 0000000000..2a25b0bc2b --- /dev/null +++ b/src/test/regress/sql/xc_create_function.sql @@ -0,0 +1,43 @@ +-- +-- XC_CREATE_FUNCTION +-- +-- A function to create table on specified nodes +create or replace function cr_table(tab_schema varchar, nodenums int[], distribution varchar, cmd_suffix varchar) +returns void language plpgsql as $$ +declare + cr_command varchar; + nodes varchar[]; + nodename varchar; + nodenames_query varchar; + nodenames varchar; + node int; + sep varchar; + tmp_node int; + num_nodes int; +begin + nodenames_query := 'SELECT node_name FROM pgxc_node WHERE node_type = ''D'''; + cr_command := 'CREATE TABLE ' || tab_schema || ' DISTRIBUTE BY ' || distribution || ' TO NODE '; + for nodename in execute nodenames_query loop + nodes := array_append(nodes, nodename); + end loop; + nodenames := ''; + sep := ''; + num_nodes := array_length(nodes, 1); + foreach node in array nodenums loop + tmp_node := node; + if (tmp_node < 1 or tmp_node > num_nodes) then + tmp_node := tmp_node % num_nodes; + if (tmp_node < 1) then + tmp_node := num_nodes; + end if; + end if; + nodenames := nodenames || sep || nodes[tmp_node]; + sep := ', '; + end loop; + cr_command := cr_command || nodenames; + if (cmd_suffix is not null) then + cr_command := cr_command || ' ' || cmd_suffix; + end if; + execute cr_command; +end; +$$; diff --git a/src/test/regress/sql/xc_for_update.sql b/src/test/regress/sql/xc_for_update.sql index e64eb5d1ce..37169d8e92 100644 --- a/src/test/regress/sql/xc_for_update.sql +++ b/src/test/regress/sql/xc_for_update.sql @@ -1,3 +1,46 @@ + +-- A function to return data node name given a node number +create or replace function get_xc_node_name(node_num int) returns varchar language plpgsql as $$ +declare + r pgxc_node%rowtype; + node int; + nodenames_query varchar; +begin + nodenames_query := 'SELECT * FROM pgxc_node WHERE node_type = ''D'' ORDER BY xc_node_id'; + + node := 1; + for r in execute nodenames_query loop + if node = node_num THEN + RETURN r.node_name; + end if; + node := node + 1; + end loop; + RETURN 'NODE_?'; +end; +$$; + + +-- A function to check whether a certain transaction was prepared on a specific data node given its number +create or replace function is_prepared_on_node(txn_id varchar, nodenum int) returns bool language plpgsql as $$ +declare + nodename varchar; + qry varchar; + r pg_prepared_xacts%rowtype; +begin + nodename := (SELECT get_xc_node_name(nodenum)); + qry := 'execute direct on ' || nodename || ' ' || chr(39) || 'select * from pg_prepared_xacts' || chr(39); + + for r in execute qry loop + if r.gid = txn_id THEN + RETURN true; + end if; + end loop; + return false; +end; +$$; + +set enable_fast_query_shipping=true; + -- create some tables create table t1(val int, val2 int); create table t2(val int, val2 int); @@ -94,7 +137,7 @@ explain (num_nodes off, nodes off, verbose on) select * from c1 for update; -- drop objects created drop table c1; -drop table c1; +drop table p1; drop view v1; drop table t1; drop table t2; @@ -133,8 +176,6 @@ end; -- prepare a transaction that holds a ACCESS EXCLUSIVE (ROW SHARE) lock on a table begin; --- This lock is here due to bug ID 3517977 -lock table mytab4 in ACCESS EXCLUSIVE mode nowait; declare c1 cursor for select * from mytab1 for update; fetch 1 from c1; prepare transaction 'tbl_mytab1_locked'; @@ -254,8 +295,6 @@ end; -- prepare a transaction that holds a ACCESS SHARE (ROW SHARE) lock on a table begin; --- This statement is here due to bug ID 3517977 -lock table mytab4 in ACCESS EXCLUSIVE mode nowait; declare c1 cursor for select * from mytab1 for share; fetch 1 from c1; prepare transaction 'tbl_mytab1_locked'; @@ -360,3 +399,510 @@ drop table mytab1 cascade; drop table mytab4 cascade; drop table mytab3 cascade; +-- Test to make sure prepared transactions are working as expected +-- If a transcation is preared and contains only a select with for share/update, it should be preapred on data nodes + +-- create some tables +create table t1(val int, val2 int) DISTRIBUTE BY REPLICATION; +create table t2(val int, val2 int) DISTRIBUTE BY REPLICATION; +create table t3(val int, val2 int) DISTRIBUTE BY REPLICATION; + +create table p1(a int, b int) DISTRIBUTE BY REPLICATION; +create table c1(d int, e int) inherits (p1) DISTRIBUTE BY REPLICATION; + +-- insert some rows in them +insert into t1 values(1,11),(2,11); +insert into t2 values(3,11),(4,11); +insert into t3 values(5,11),(6,11); + +insert into p1 values(55,66),(77,88); +insert into c1 values(111,222,333,444),(123,345,567,789); + +-- **** + +begin; + select * from t1 order by 1 for update of t1 nowait; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1, t2, t3 order by 1 for update; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + WITH q1 AS (SELECT * from t1 order by 1 FOR UPDATE) SELECT * FROM q1,t2 order by 1 FOR UPDATE; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + WITH q1 AS (SELECT * from t1 order by 1) SELECT * FROM q1 FOR UPDATE; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- false + +commit prepared 'pt_1'; + +-- **** + +begin; + WITH q1 AS (SELECT * from t1 order by 1 FOR UPDATE) SELECT * FROM q1 FOR UPDATE; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1, t2 where t1.val = t2.val for share; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1, t2 for share of t2; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from (select * from t1 for update of t1 nowait) as foo; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1 where val in (select val from t2 for update of t2 nowait) for update; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1 where val in (select val from t2 for update of t2 nowait); +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1, t2 for share of t2 for update of t1; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1 for share of t1 for update of t1; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1 for update of t1 for share of t1; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1 for share of t1 for share of t1 for update of t1; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1 for share of t1 for share of t1 for share of t1; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1 for share of t1 for share of t1 nowait for update of t1; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1 a,t1 b for share of a for update of b; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from p1 order by 1 for update; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from p1 for update; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); --true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from c1 order by 1 for update; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from c1 for update; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- ********************************** +-- repeat all tests with FQS disabled +-- ********************************** + +set enable_fast_query_shipping=false; + +-- **** + +begin; + select * from t1 order by 1 for update of t1 nowait; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1, t2, t3 order by 1 for update; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + WITH q1 AS (SELECT * from t1 order by 1 FOR UPDATE) SELECT * FROM q1,t2 order by 1 FOR UPDATE; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + WITH q1 AS (SELECT * from t1 order by 1) SELECT * FROM q1 FOR UPDATE; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- false + +commit prepared 'pt_1'; + +-- **** + +begin; + WITH q1 AS (SELECT * from t1 order by 1 FOR UPDATE) SELECT * FROM q1 FOR UPDATE; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1, t2 where t1.val = t2.val for share; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1, t2 for share of t2; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from (select * from t1 for update of t1 nowait) as foo; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1 where val in (select val from t2 for update of t2 nowait) for update; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1 where val in (select val from t2 for update of t2 nowait); +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1, t2 for share of t2 for update of t1; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1 for share of t1 for update of t1; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1 for update of t1 for share of t1; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1 for share of t1 for share of t1 for update of t1; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1 for share of t1 for share of t1 for share of t1; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1 for share of t1 for share of t1 nowait for update of t1; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1 a,t1 b for share of a for update of b; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from p1 order by 1 for update; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from p1 for update; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); --true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from c1 order by 1 for update; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from c1 for update; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +-- **** + +set enable_fast_query_shipping=true; + +-- **** + +delete from t3 where val != 5; + +PREPARE my_plan(int) as select * from t3 for update; +execute my_plan(1); + +-- **** + +-- drop objects created +drop table c1; +drop table p1; +drop table t1; +drop table t2; +drop table t3; + diff --git a/src/test/regress/sql/xc_having.sql b/src/test/regress/sql/xc_having.sql index e1e666692d..60c8d69cf7 100644 --- a/src/test/regress/sql/xc_having.sql +++ b/src/test/regress/sql/xc_having.sql @@ -21,7 +21,7 @@ explain (verbose true, costs false, nodes false) select count(*), sum(val), avg( -- having clause containing aggregate select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75; explain (verbose true, costs false, nodes false) select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75; -select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2; +select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2 order by 1; explain (verbose true, costs false, nodes false) select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2; select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 and val2 > 2; explain (verbose true, costs false, nodes false) select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 and val2 > 2; @@ -52,7 +52,7 @@ explain (verbose true, costs false, nodes false) select count(*), sum(val), avg( -- having clause containing aggregate select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75; explain (verbose true, costs false, nodes false) select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75; -select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2; +select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2 order by 1; explain (verbose true, costs false, nodes false) select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2; select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 and val2 > 2; explain (verbose true, costs false, nodes false) select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 and val2 > 2; @@ -83,7 +83,7 @@ explain (verbose true, costs false, nodes false) select count(*), sum(val), avg( -- having clause containing aggregate select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75; explain (verbose true, costs false, nodes false) select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75; -select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2; +select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2 order by 1; explain (verbose true, costs false, nodes false) select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2; select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 and val2 > 2; explain (verbose true, costs false, nodes false) select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 and val2 > 2; @@ -114,7 +114,7 @@ explain (verbose true, costs false, nodes false) select count(*), sum(val), avg( -- having clause containing aggregate select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75; explain (verbose true, costs false, nodes false) select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75; -select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2; +select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2 order by 1; explain (verbose true, costs false, nodes false) select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 or val2 > 2; select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 and val2 > 2; explain (verbose true, costs false, nodes false) select count(*), sum(val), avg(val), sum(val)::float8/count(*), val2 from xc_having_tab1 group by val2 having avg(val) > 3.75 and val2 > 2; diff --git a/src/test/regress/sql/xc_misc.sql b/src/test/regress/sql/xc_misc.sql index 2dfcf599f2..ecb24b7ef2 100644 --- a/src/test/regress/sql/xc_misc.sql +++ b/src/test/regress/sql/xc_misc.sql @@ -1,41 +1,4 @@ --- A function to create table on specified nodes -create or replace function cr_table(tab_schema varchar, nodenums int[], distribution varchar) returns void language plpgsql as $$ -declare - cr_command varchar; - nodes varchar[]; - nodename varchar; - nodenames_query varchar; - nodenames varchar; - node int; - sep varchar; - tmp_node int; - num_nodes int; -begin - nodenames_query := 'SELECT node_name FROM pgxc_node WHERE node_type = ''D'''; - cr_command := 'CREATE TABLE ' || tab_schema || ' DISTRIBUTE BY ' || distribution || ' TO NODE '; - for nodename in execute nodenames_query loop - nodes := array_append(nodes, nodename); - end loop; - nodenames := ''; - sep := ''; - num_nodes := array_length(nodes, 1); - foreach node in array nodenums loop - tmp_node := node; - if (tmp_node < 1 or tmp_node > num_nodes) then - tmp_node := tmp_node % num_nodes; - if (tmp_node < 1) then - tmp_node := num_nodes; - end if; - end if; - nodenames := nodenames || sep || nodes[tmp_node]; - sep := ', '; - end loop; - cr_command := cr_command || nodenames; - execute cr_command; -end; -$$; - --- A function to return a unified data node name given a node identifer +-- A function to return a unified data node name given a node identifer create or replace function get_unified_node_name(node_ident int) returns varchar language plpgsql as $$ declare r pgxc_node%rowtype; @@ -57,15 +20,13 @@ $$; -- Test the system column added by XC called xc_node_id, used to find which tuples belong to which data node -select cr_table('t1(a int, b int)', '{1, 2}'::int[], 'modulo(a)'); +select cr_table('t1(a int, b int)', '{1, 2}'::int[], 'modulo(a)', NULL); insert into t1 values(1,11),(2,11),(3,11),(4,22),(5,22),(6,33),(7,44),(8,44); select get_unified_node_name(xc_node_id),* from t1 order by a; select get_unified_node_name(xc_node_id),* from t1 where xc_node_id > 0 order by a; -select get_unified_node_name(xc_node_id),* from t1 order by xc_node_id; - create table t2(a int , xc_node_id int) distribute by modulo(a); create table t2(a int , b int) distribute by modulo(xc_node_id); @@ -117,3 +78,43 @@ drop table tab4; drop table tab5; drop table my_tab1; +-- Test to make sure that the block of +-- INSERT SELECT in case of inserts into a child by selecting from +-- a parent works fine + +create table t_11 ( a int, b int); +create table t_22 ( a int, b int); +insert into t_11 values(1,2),(3,4); +insert into t_22 select * from t_11; -- should pass + +CREATE TABLE c_11 () INHERITS (t_11); +insert into c_11 select * from t_22; -- should pass +insert into c_11 select * from t_11; -- should fail +insert into c_11 (select * from t_11 union all select * from t_22); -- should fail +insert into c_11 (select * from t_11,t_22); -- should fail +insert into c_11 (select * from t_22 where a in (select a from t_11)); -- should pass +insert into c_11 (select * from t_11 where a in (select a from t_22)); -- should fail +insert into t_11 select * from c_11; -- should pass + +-- test to make sure count from a parent table works fine +select count(*) from t_11; + +CREATE TABLE grand_parent (code int, population float, altitude int); +INSERT INTO grand_parent VALUES (0, 1.1, 63); +CREATE TABLE my_parent (code int, population float, altitude int); +INSERT INTO my_parent VALUES (1, 2.1, 73); +CREATE TABLE child_11 () INHERITS (my_parent); +CREATE TABLE grand_child () INHERITS (child_11); + +INSERT INTO child_11 SELECT * FROM grand_parent; -- should pass +INSERT INTO child_11 SELECT * FROM my_parent; -- should fail +INSERT INTO grand_child SELECT * FROM my_parent; -- should pass +INSERT INTO grand_child SELECT * FROM grand_parent; -- should pass + +drop table grand_child; +drop table child_11; +drop table my_parent; +drop table grand_parent; +drop table c_11; +drop table t_22; +drop table t_11; diff --git a/src/test/regress/sql/xc_prepared_xacts.sql b/src/test/regress/sql/xc_prepared_xacts.sql new file mode 100644 index 0000000000..9fc1f8da1b --- /dev/null +++ b/src/test/regress/sql/xc_prepared_xacts.sql @@ -0,0 +1,262 @@ + +-- A function to return data node name given a node number +create or replace function get_xc_node_name(node_num int) returns varchar language plpgsql as $$ +declare + r pgxc_node%rowtype; + node int; + nodenames_query varchar; +begin + nodenames_query := 'SELECT * FROM pgxc_node WHERE node_type = ''D'' ORDER BY xc_node_id'; + + node := 1; + for r in execute nodenames_query loop + if node = node_num THEN + RETURN r.node_name; + end if; + node := node + 1; + end loop; + RETURN 'NODE_?'; +end; +$$; + + +-- A function to check whether a certain transaction was prepared on a specific data node given its number +create or replace function is_prepared_on_node(txn_id varchar, nodenum int) returns bool language plpgsql as $$ +declare + nodename varchar; + qry varchar; + r pg_prepared_xacts%rowtype; +begin + nodename := (SELECT get_xc_node_name(nodenum)); + qry := 'execute direct on ' || nodename || ' ' || chr(39) || 'select * from pg_prepared_xacts' || chr(39); + + for r in execute qry loop + if r.gid = txn_id THEN + RETURN true; + end if; + end loop; + return false; +end; +$$; + +set enable_fast_query_shipping=true; + + +-- Test to make sure prepared transactions are working as expected +-- If a transcation is preared and contains only a select, it should NOT be preapred on data nodes + +-- create some tables +create table t1(val int, val2 int) DISTRIBUTE BY REPLICATION; +create table t2(val int, val2 int) DISTRIBUTE BY REPLICATION; +create table t3(val int, val2 int) DISTRIBUTE BY REPLICATION; + +create table p1(a int, b int) DISTRIBUTE BY REPLICATION; +create table c1(d int, e int) inherits (p1) DISTRIBUTE BY REPLICATION; + +-- insert some rows in them +insert into t1 values(1,11),(2,11); +insert into t2 values(3,11),(4,11); +insert into t3 values(5,11),(6,11); + +insert into p1 values(55,66),(77,88); +insert into c1 values(111,222,333,444),(123,345,567,789); + +-- **** + +begin; + select * from t1 order by val; + select * from t2 order by val; + select * from t3 order by val; + select * from p1 order by a; + select * from c1 order by a; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- false + +commit prepared 'pt_1'; + +-- **** + +begin; + insert into t3 values(7,11); + insert into t3 values(8,11); + insert into t3 values(9,11); + insert into t3 values(0,11); +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +select * from t3 order by val; + +-- **** + +begin; + update t3 set val2 = 22; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +select * from t3 order by val; + +-- **** + +begin; + delete from t3 where val = 0; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +select * from t3 order by val; + +-- **** + +begin; + WITH q1 AS (SELECT * from t1 order by 1) SELECT * FROM q1; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- false + +commit prepared 'pt_1'; + +-- **** + +begin; + +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- false + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1, t2 where t1.val = t2.val; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- false + +commit prepared 'pt_1'; + +-- ********************************** +-- repeat all tests with FQS disabled +-- ********************************** + +delete from t3; + +set enable_fast_query_shipping=false; + +-- **** + +begin; + select * from t1 order by val; + select * from t2 order by val; + select * from t3 order by val; + select * from p1 order by a; + select * from c1 order by a; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- false + +commit prepared 'pt_1'; + +-- **** + +begin; + insert into t3 values(7,11); + insert into t3 values(8,11); + insert into t3 values(9,11); + insert into t3 values(0,11); +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +select * from t3 order by val; + +-- **** + +begin; + update t3 set val2 = 22; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +select * from t3 order by val; + +-- **** + +begin; + delete from t3 where val = 7; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- true + +commit prepared 'pt_1'; + +select * from t3 order by val; + +-- **** + +begin; + WITH q1 AS (SELECT * from t1 order by 1) SELECT * FROM q1; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- false + +commit prepared 'pt_1'; + +-- **** + +begin; + +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- false + +commit prepared 'pt_1'; + +-- **** + +begin; + select * from t1, t2 where t1.val = t2.val; +prepare transaction 'pt_1'; + +select gid from pg_prepared_xacts where gid = 'pt_1'; +select is_prepared_on_node('pt_1', 1); -- false + +commit prepared 'pt_1'; + +-- **** + +set enable_fast_query_shipping=true; + +-- drop objects created +drop table c1; +drop table p1; +drop table t1; +drop table t2; +drop table t3; + diff --git a/src/test/regress/sql/xc_temp.sql b/src/test/regress/sql/xc_temp.sql index 7b65d2a347..7ab8e24c6b 100644 --- a/src/test/regress/sql/xc_temp.sql +++ b/src/test/regress/sql/xc_temp.sql @@ -2,9 +2,6 @@ -- XC_TEMP -- --- Enforce use of COMMIT instead of 2PC for temporary objects -SET enforce_two_phase_commit TO off; - -- Create TEMPORARY and normal tables CREATE TABLE table_rep (a int, b_rep char(1)) DISTRIBUTE BY REPLICATION; CREATE TABLE table_hash (a int, b_hash char(1)) DISTRIBUTE BY HASH(a); diff --git a/src/test/regress/sql/xml.sql b/src/test/regress/sql/xml.sql index 7223427bba..f4f8261336 100644 --- a/src/test/regress/sql/xml.sql +++ b/src/test/regress/sql/xml.sql @@ -211,3 +211,9 @@ SELECT xml_is_well_formed('bar

]>&c;'); +SELECT XMLPARSE(DOCUMENT ']>&c;'); +-- This might or might not load the requested DTD, but it mustn't throw error. +SELECT XMLPARSE(DOCUMENT ' '); diff --git a/src/timezone/Makefile b/src/timezone/Makefile index 2cecaec5e6..6ae67cbb00 100644 --- a/src/timezone/Makefile +++ b/src/timezone/Makefile @@ -20,7 +20,7 @@ ZICOBJS= zic.o ialloc.o scheck.o localtime.o # timezone data files TZDATA = africa antarctica asia australasia europe northamerica southamerica \ - pacificnew etcetera factory backward systemv solar87 solar88 solar89 + pacificnew etcetera factory backward systemv TZDATAFILES = $(TZDATA:%=$(srcdir)/data/%) # which zone should determine the DST rules (not the specific UTC offset!) diff --git a/src/timezone/README b/src/timezone/README index 4db3148e0c..201b293881 100644 --- a/src/timezone/README +++ b/src/timezone/README @@ -3,9 +3,12 @@ src/timezone/README Timezone ======== -This is a PostgreSQL adapted version of the timezone library from: +This is a PostgreSQL adapted version of the timezone library from +http://www.iana.org/time-zones - ftp://elsie.nci.nih.gov/pub/tzcode*.tar.gz +The source code can be found at: + + ftp://ftp.iana.org/tz/releases/tzcode*.tar.gz The code is currently synced with release 2010c. There are many cosmetic (and not so cosmetic) differences from the original tzcode library, but @@ -13,7 +16,7 @@ diffs in the upstream version should usually be propagated to our version. The data files under data/ are an exact copy of the latest data set from: - ftp://elsie.nci.nih.gov/pub/tzdata*.tar.gz + ftp://ftp.iana.org/tz/releases/tzdata*.tar.gz Since time zone rules change frequently in some parts of the world, we should endeavor to update the data files before each PostgreSQL diff --git a/src/timezone/data/africa b/src/timezone/data/africa index 13c7470ecc..029e5c2246 100644 --- a/src/timezone/data/africa +++ b/src/timezone/data/africa @@ -1,13 +1,12 @@ #
-# @(#)africa	8.30
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
 
 # This data is by no means authoritative; if you think you know better,
 # go ahead and edit the file (and please send any changes to
-# tz@elsie.nci.nih.gov for general use in the future).
+# tz@iana.org for general use in the future).
 
-# From Paul Eggert (2006-03-22):
+# From Paul Eggert (2013-02-21):
 #
 # A good source for time zone historical data outside the U.S. is
 # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
@@ -26,6 +25,10 @@
 # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
 # I found in the UCLA library.
 #
+# For data circa 1899, a common source is:
+# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
+# .
+#
 # A reliable and entertaining source about time zones is
 # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
 #
@@ -58,7 +61,7 @@
 # I invented the following abbreviations; corrections are welcome!
 #	 2:00	WAST	West Africa Summer Time
 #	 2:30	BEAT	British East Africa Time (no longer used)
-#	 2:44:45 BEAUT	British East Africa Unified Time (no longer used)
+#	 2:45	BEAUT	British East Africa Unified Time (no longer used)
 #	 3:00	CAST	Central Africa Summer Time (no longer used)
 #	 3:00	SAST	South Africa Summer Time (no longer used)
 #	 3:00	EAT	East Africa Time
@@ -117,8 +120,12 @@ Zone Africa/Porto-Novo	0:10:28	-	LMT	1912
 			1:00	-	WAT
 
 # Botswana
+# From Paul Eggert (2013-02-21):
+# Milne says they were regulated by the Cape Town Signal in 1899;
+# assume they switched to 2:00 when Cape Town did.
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Africa/Gaborone	1:43:40 -	LMT	1885
+			1:30	-	SAST	1903 Mar
 			2:00	-	CAT	1943 Sep 19 2:00
 			2:00	1:00	CAST	1944 Mar 19 2:00
 			2:00	-	CAT
@@ -190,6 +197,11 @@ Zone	Africa/Djibouti	2:52:36 -	LMT	1911 Jul
 
 # Egypt
 
+# Milne says Cairo used 2:05:08.9, the local mean time of the Abbasizeh
+# observatory; round to nearest.  Milne also says that the official time for
+# Egypt was mean noon at the Great Pyramid, 2:04:30.5, but apparently this
+# did not apply to Cairo, Alexandria, or Port Said.
+
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Egypt	1940	only	-	Jul	15	0:00	1:00	S
 Rule	Egypt	1940	only	-	Oct	 1	0:00	0	-
@@ -212,7 +224,21 @@ Rule	Egypt	1989	only	-	May	 6	1:00	1:00	S
 Rule	Egypt	1990	1994	-	May	 1	1:00	1:00	S
 # IATA (after 1990) says transitions are at 0:00.
 # Go with IATA starting in 1995, except correct 1995 entry from 09-30 to 09-29.
-Rule	Egypt	1995	max	-	Apr	lastFri	 0:00s	1:00	S
+
+# From Alexander Krivenyshev (2011-04-20):
+# "...Egypt's interim cabinet decided on Wednesday to cancel daylight
+# saving time after a poll posted on its website showed the majority of
+# Egyptians would approve the cancellation."
+#
+# Egypt to cancel daylight saving time
+# 
+# http://www.almasryalyoum.com/en/node/407168
+# 
+# or
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_egypt04.html
+# 
+Rule	Egypt	1995	2010	-	Apr	lastFri	 0:00s	1:00	S
 Rule	Egypt	1995	2005	-	Sep	lastThu	23:00s	0	-
 # From Steffen Thorsen (2006-09-19):
 # The Egyptian Gazette, issue 41,090 (2006-09-18), page 1, reports:
@@ -224,7 +250,7 @@ Rule	Egypt	2006	only	-	Sep	21	23:00s	0	-
 # I received a mail from an airline which says that the daylight
 # saving time in Egypt will end in the night of 2007-09-06 to 2007-09-07.
 # From Jesper Norgaard Welen (2007-08-15): [The following agree:]
-# http://www.nentjes.info/Bill/bill5.htm 
+# http://www.nentjes.info/Bill/bill5.htm
 # http://www.timeanddate.com/worldclock/city.html?n=53
 # From Steffen Thorsen (2007-09-04): The official information...:
 # http://www.sis.gov.eg/En/EgyptOnline/Miscellaneous/000002/0207000000000000001580.htm
@@ -278,18 +304,18 @@ Rule	Egypt	2007	only	-	Sep	Thu>=1	23:00s	0	-
 # in September.
 
 # From Steffen Thorsen (2009-08-11):
-# We have been able to confirm the August change with the Egyptian Cabinet 
+# We have been able to confirm the August change with the Egyptian Cabinet
 # Information and Decision Support Center:
 # 
 # http://www.timeanddate.com/news/time/egypt-dst-ends-2009.html
 # 
-# 
+#
 # The Middle East News Agency
 # 
 # http://www.mena.org.eg/index.aspx
 # 
 # also reports "Egypt starts winter time on August 21"
-# today in article numbered "71, 11/08/2009 12:25 GMT." 
+# today in article numbered "71, 11/08/2009 12:25 GMT."
 # Only the title above is available without a subscription to their service,
 # and can be found by searching for "winter" in their search engine
 # (at least today).
@@ -313,10 +339,10 @@ Rule	Egypt	2008	only	-	Aug	lastThu	23:00s	0	-
 Rule	Egypt	2009	only	-	Aug	20	23:00s	0	-
 Rule	Egypt	2010	only	-	Aug	11	0:00	0	-
 Rule	Egypt	2010	only	-	Sep	10	0:00	1:00	S
-Rule	Egypt	2010	max	-	Sep	lastThu	23:00s	0	-
+Rule	Egypt	2010	only	-	Sep	lastThu	23:00s	0	-
 
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Africa/Cairo	2:05:00 -	LMT	1900 Oct
+Zone	Africa/Cairo	2:05:09 -	LMT	1900 Oct
 			2:00	Egypt	EE%sT
 
 # Equatorial Guinea
@@ -382,7 +408,7 @@ Zone	Africa/Bissau	-1:02:20 -	LMT	1911 May 26
 Zone	Africa/Nairobi	2:27:16	-	LMT	1928 Jul
 			3:00	-	EAT	1930
 			2:30	-	BEAT	1940
-			2:44:45	-	BEAUT	1960
+			2:45	-	BEAUT	1960
 			3:00	-	EAT
 
 # Lesotho
@@ -411,6 +437,28 @@ Zone	Africa/Monrovia	-0:43:08 -	LMT	1882
 
 # Libya
 
+# From Even Scharning (2012-11-10):
+# Libya set their time one hour back at 02:00 on Saturday November 10.
+# http://www.libyaherald.com/2012/11/04/clocks-to-go-back-an-hour-on-saturday/
+# Here is an official source [in Arabic]: http://ls.ly/fb6Yc
+#
+# Steffen Thorsen forwarded a translation (2012-11-10) in
+# http://mm.icann.org/pipermail/tz/2012-November/018451.html
+#
+# From Tim Parenti (2012-11-11):
+# Treat the 2012-11-10 change as a zone change from UTC+2 to UTC+1.
+# The DST rules planned for 2013 and onward roughly mirror those of Europe
+# (either two days before them or five days after them, so as to fall on
+# lastFri instead of lastSun).
+
+# From Even Scharning (2013-10-25):
+# The scheduled end of DST in Libya on Friday, October 25, 2013 was
+# cancelled yesterday....
+# http://www.libyaherald.com/2013/10/24/correction-no-time-change-tomorrow/
+#
+# From Paul Eggert (2013-10-25):
+# For now, assume they're reverting to the pre-2012 rules of permanent UTC+2.
+
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Libya	1951	only	-	Oct	14	2:00	1:00	S
 Rule	Libya	1952	only	-	Jan	 1	0:00	0	-
@@ -425,16 +473,21 @@ Rule	Libya	1986	only	-	Apr	 4	0:00	1:00	S
 Rule	Libya	1986	only	-	Oct	 3	0:00	0	-
 Rule	Libya	1987	1989	-	Apr	 1	0:00	1:00	S
 Rule	Libya	1987	1989	-	Oct	 1	0:00	0	-
+Rule	Libya	1997	only	-	Apr	 4	0:00	1:00	S
+Rule	Libya	1997	only	-	Oct	 4	0:00	0	-
+Rule	Libya	2013	only	-	Mar	lastFri	1:00	1:00	S
+Rule	Libya	2013	only	-	Oct	lastFri	2:00	0	-
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Africa/Tripoli	0:52:44 -	LMT	1920
 			1:00	Libya	CE%sT	1959
 			2:00	-	EET	1982
 			1:00	Libya	CE%sT	1990 May  4
-# The following entries are from Shanks & Pottenger;
+# The 1996 and 1997 entries are from Shanks & Pottenger;
 # the IATA SSIM data contain some obvious errors.
 			2:00	-	EET	1996 Sep 30
-			1:00	-	CET	1997 Apr  4
-			1:00	1:00	CEST	1997 Oct  4
+			1:00	Libya	CE%sT	1997 Oct  4
+			2:00	-	EET	2012 Nov 10 2:00
+			1:00	Libya	CE%sT	2013 Oct 25 2:00
 			2:00	-	EET
 
 # Madagascar
@@ -468,7 +521,7 @@ Zone Africa/Nouakchott	-1:03:48 -	LMT	1912
 # From Steffen Thorsen (2008-06-25):
 # Mauritius plans to observe DST from 2008-11-01 to 2009-03-31 on a trial
 # basis....
-# It seems that Mauritius observed daylight saving time from 1982-10-10 to 
+# It seems that Mauritius observed daylight saving time from 1982-10-10 to
 # 1983-03-20 as well, but that was not successful....
 # http://www.timeanddate.com/news/time/mauritius-daylight-saving-time.html
 
@@ -492,12 +545,12 @@ Zone Africa/Nouakchott	-1:03:48 -	LMT	1912
 # than previously announced (2008-11-01 to 2009-03-31).  The new start
 # date is 2008-10-26 at 02:00 and the new end date is 2009-03-27 (no time
 # given, but it is probably at either 2 or 3 wall clock time).
-# 
-# A little strange though, since the article says that they moved the date 
-# to align itself with Europe and USA which also change time on that date, 
-# but that means they have not paid attention to what happened in 
-# USA/Canada last year (DST ends first Sunday in November). I also wonder 
-# why that they end on a Friday, instead of aligning with Europe which 
+#
+# A little strange though, since the article says that they moved the date
+# to align itself with Europe and USA which also change time on that date,
+# but that means they have not paid attention to what happened in
+# USA/Canada last year (DST ends first Sunday in November). I also wonder
+# why that they end on a Friday, instead of aligning with Europe which
 # changes two days later.
 
 # From Alex Krivenyshev (2008-07-11):
@@ -556,7 +609,7 @@ Zone Africa/Nouakchott	-1:03:48 -	LMT	1912
 # 
 
 # From Arthur David Olson (2009-07-11):
-# The "mauritius-dst-will-not-repeat" wrapup includes this: 
+# The "mauritius-dst-will-not-repeat" wrapup includes this:
 # "The trial ended on March 29, 2009, when the clocks moved back by one hour
 # at 2am (or 02:00) local time..."
 
@@ -640,18 +693,9 @@ Zone	Indian/Mayotte	3:00:56 -	LMT	1911 Jul	# Mamoutzou
 # http://www.google.com/search?hl=en&q=Conseil+de+gouvernement+maroc+heure+avance&btnG=Search
 # 
 
-# From Alex Krivenyshev (2008-05-09):
-# Is Western Sahara (part which administrated by Morocco) going to follow
-# Morocco DST changes?  Any information?  What about other part of
-# Western Sahara - under administration of POLISARIO Front (also named
-# SADR Saharawi Arab Democratic Republic)?
-
-# From Arthur David Olson (2008-05-09):
-# XXX--guess that it is only Morocco for now; guess only 2008 for now.
-
 # From Steffen Thorsen (2008-08-27):
-# Morocco will change the clocks back on the midnight between August 31 
-# and September 1. They originally planned to observe DST to near the end 
+# Morocco will change the clocks back on the midnight between August 31
+# and September 1. They originally planned to observe DST to near the end
 # of September:
 #
 # One article about it (in French):
@@ -754,6 +798,110 @@ Zone	Indian/Mayotte	3:00:56 -	LMT	1911 Jul	# Mamoutzou
 # wall clock time (i.e. 11pm UTC), but that's what I would assume. It has
 # also been like that in the past.
 
+# From Alexander Krivenyshev (2012-03-09):
+# According to Infomédiaire web site from Morocco (infomediaire.ma),
+# on March 9, 2012, (in French) Heure légale:
+# Le Maroc adopte officiellement l'heure d'été
+# 
+# http://www.infomediaire.ma/news/maroc/heure-l%C3%A9gale-le-maroc-adopte-officiellement-lheure-d%C3%A9t%C3%A9
+# 
+# Governing Council adopted draft decree, that Morocco DST starts on
+# the last Sunday of March (March 25, 2012) and ends on
+# last Sunday of September (September 30, 2012)
+# except the month of Ramadan.
+# or (brief)
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_morocco06.html
+# 
+
+# From Arthur David Olson (2012-03-10):
+# The infomediaire.ma source indicates that the system is to be in
+# effect every year. It gives 03H00 as the "fall back" time of day;
+# it lacks a "spring forward" time of day; assume 2:00 XXX.
+# Wait on specifying the Ramadan exception for details about
+# start date, start time of day, end date, and end time of day XXX.
+
+# From Christophe Tropamer (2012-03-16):
+# Seen Morocco change again:
+# 
+# http://www.le2uminutes.com/actualite.php
+# 
+# "...à partir du dernier dimance d'avril et non fins mars,
+# comme annoncé précédemment."
+
+# From Milamber Space Network (2012-07-17):
+# The official return to GMT is announced by the Moroccan government:
+# 
+# http://www.mmsp.gov.ma/fr/actualites.aspx?id=288 [in French]
+# 
+#
+# Google translation, lightly edited:
+# Back to the standard time of the Kingdom (GMT)
+# Pursuant to Decree No. 2-12-126 issued on 26 Jumada (I) 1433 (April 18,
+# 2012) and in accordance with the order of Mr. President of the
+# Government No. 3-47-12 issued on 24 Sha'ban (11 July 2012), the Ministry
+# of Public Service and Administration Modernization announces the return
+# of the legal time of the Kingdom (GMT) from Friday, July 20, 2012 until
+# Monday, August 20, 2012.  So the time will be delayed by 60 minutes from
+# 3:00 am Friday, July 20, 2012 and will again be advanced by 60 minutes
+# August 20, 2012 from 2:00 am.
+
+# From Paul Eggert (2013-03-06):
+# Morocco's daylight-saving transitions due to Ramadan seem to be
+# announced a bit in advance.  On 2012-07-11 the Moroccan government
+# announced that year's Ramadan daylight-saving transitions would be
+# 2012-07-20 and 2012-08-20; see
+# .
+
+# From Andrew Paprocki (2013-07-02):
+# Morocco announced that the year's Ramadan daylight-savings
+# transitions would be 2013-07-07 and 2013-08-10; see:
+# http://www.maroc.ma/en/news/morocco-suspends-daylight-saving-time-july-7-aug10
+
+# From Steffen Thorsen (2013-09-28):
+# Morocco extends DST by one month, on very short notice, just 1 day
+# before it was going to end.  There is a new decree (2.13.781) for
+# this, where DST from now on goes from last Sunday of March at 02:00
+# to last Sunday of October at 03:00, similar to EU rules.  Official
+# source (French):
+# http://www.maroc.gov.ma/fr/actualites/lhoraire-dete-gmt1-maintenu-jusquau-27-octobre-2013
+# Another source (specifying the time for start and end in the decree):
+# http://www.lemag.ma/Heure-d-ete-au-Maroc-jusqu-au-27-octobre_a75620.html
+
+# From Paul Eggert (2013-10-03):
+# To estimate what the Moroccan government will do in future years,
+# transition dates for 2014 through 2038 were determined by running
+# the following program under GNU Emacs 24.3:
+#
+# (let ((islamic-year 1435))
+#   (while (< islamic-year 1461)
+#     (let ((a
+#	     (calendar-gregorian-from-absolute
+#	      (calendar-islamic-to-absolute (list 9 1 islamic-year))))
+#	    (b
+#	     (calendar-gregorian-from-absolute
+#	      (calendar-islamic-to-absolute (list 10 1 islamic-year)))))
+#	(insert
+#	 (format
+#	  (concat "Rule\tMorocco\t%d\tonly\t-\t%s\t %2d\t 3:00\t0\t-\n"
+#		  "Rule\tMorocco\t%d\tonly\t-\t%s\t %2d\t 2:00\t1:00\tS\n")
+#	  (car (cdr (cdr a))) (calendar-month-name (car a) t) (car (cdr a))
+#	  (car (cdr (cdr b))) (calendar-month-name (car b) t) (car (cdr b)))))
+#     (setq islamic-year (+ 1 islamic-year))))
+#
+# with spring-forward transitions removed for 2023-2025, when the
+# normal spring-forward date falls during the estimated Ramadan; with
+# all transitions removed for 2026-2035, where the estimated Ramadan
+# falls entirely outside daylight-saving time; and with fall-back
+# transitions removed for 2036-2037, where the normal fall-back
+# date falls during the estimated Ramadan.  Normally, the table would
+# stop after 2037 because 32-bit time_t values roll around early in 2038,
+# but that would imply a prediction of perpetual DST after March 2038
+# due to the year-2037 glitches.  So, this table instead stops after
+# 2038, the first non-glitchy year after the 32-bit rollover.
+# An advantage of stopping after 2038 is that it lets zic guess
+# TZ='WET0WEST,M3.5.0,M10.5.0/3' for time stamps far in the future.
+
 # RULE	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 
 Rule	Morocco	1939	only	-	Sep	12	 0:00	1:00	S
@@ -779,15 +927,62 @@ Rule	Morocco	2010	only	-	May	 2	 0:00	1:00	S
 Rule	Morocco	2010	only	-	Aug	 8	 0:00	0	-
 Rule	Morocco	2011	only	-	Apr	 3	 0:00	1:00	S
 Rule	Morocco	2011	only	-	Jul	 31	 0	0	-
+Rule	Morocco	2012	2013	-	Apr	 lastSun 2:00	1:00	S
+Rule	Morocco	2012	only	-	Sep	 30	 3:00	0	-
+Rule	Morocco	2012	only	-	Jul	 20	 3:00	0	-
+Rule	Morocco	2012	only	-	Aug	 20	 2:00	1:00	S
+Rule	Morocco	2013	only	-	Jul	  7	 3:00	0	-
+Rule	Morocco	2013	only	-	Aug	 10	 2:00	1:00	S
+Rule	Morocco	2013	2035	-	Oct	 lastSun 3:00	0	-
+Rule	Morocco	2014	2022	-	Mar	 lastSun 2:00	1:00	S
+Rule	Morocco	2014	only	-	Jun	 29	 3:00	0	-
+Rule	Morocco	2014	only	-	Jul	 29	 2:00	1:00	S
+Rule	Morocco	2015	only	-	Jun	 18	 3:00	0	-
+Rule	Morocco	2015	only	-	Jul	 18	 2:00	1:00	S
+Rule	Morocco	2016	only	-	Jun	  7	 3:00	0	-
+Rule	Morocco	2016	only	-	Jul	  7	 2:00	1:00	S
+Rule	Morocco	2017	only	-	May	 27	 3:00	0	-
+Rule	Morocco	2017	only	-	Jun	 26	 2:00	1:00	S
+Rule	Morocco	2018	only	-	May	 16	 3:00	0	-
+Rule	Morocco	2018	only	-	Jun	 15	 2:00	1:00	S
+Rule	Morocco	2019	only	-	May	  6	 3:00	0	-
+Rule	Morocco	2019	only	-	Jun	  5	 2:00	1:00	S
+Rule	Morocco	2020	only	-	Apr	 24	 3:00	0	-
+Rule	Morocco	2020	only	-	May	 24	 2:00	1:00	S
+Rule	Morocco	2021	only	-	Apr	 13	 3:00	0	-
+Rule	Morocco	2021	only	-	May	 13	 2:00	1:00	S
+Rule	Morocco	2022	only	-	Apr	  3	 3:00	0	-
+Rule	Morocco	2022	only	-	May	  3	 2:00	1:00	S
+Rule	Morocco	2023	only	-	Apr	 22	 2:00	1:00	S
+Rule	Morocco	2024	only	-	Apr	 10	 2:00	1:00	S
+Rule	Morocco	2025	only	-	Mar	 31	 2:00	1:00	S
+Rule	Morocco	2026	max	-	Mar	 lastSun 2:00	1:00	S
+Rule	Morocco	2036	only	-	Oct	 21	 3:00	0	-
+Rule	Morocco	2037	only	-	Oct	 11	 3:00	0	-
+Rule	Morocco	2038	only	-	Sep	 30	 3:00	0	-
+Rule	Morocco	2038	only	-	Oct	 30	 2:00	1:00	S
+Rule	Morocco	2038	max	-	Oct	 lastSun 3:00	0	-
+
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone Africa/Casablanca	-0:30:20 -	LMT	1913 Oct 26
 			 0:00	Morocco	WE%sT	1984 Mar 16
 			 1:00	-	CET	1986
 			 0:00	Morocco	WE%sT
+
 # Western Sahara
+#
+# From Gwillim Law (2013-10-22):
+# A correspondent who is usually well informed about time zone matters
+# ... says that Western Sahara observes daylight saving time, just as
+# Morocco does.
+#
+# From Paul Eggert (2013-10-23):
+# Assume that this has been true since Western Sahara switched to GMT,
+# since most of it was then controlled by Morocco.
+
 Zone Africa/El_Aaiun	-0:52:48 -	LMT	1934 Jan
 			-1:00	-	WAT	1976 Apr 14
-			 0:00	-	WET
+			 0:00	Morocco	WE%sT
 
 # Mozambique
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
@@ -806,7 +1001,7 @@ Zone	Africa/Maputo	2:10:20 -	LMT	1903 Mar
 # Forecasting Riaan van Zyl explained that the far eastern parts of
 # the country are close to 40 minutes earlier in sunrise than the rest
 # of the country.
-# 
+#
 # From Paul Eggert (2007-03-31):
 # Apparently the Caprivi Strip informally observes Botswana time, but
 # we have no details.  In the meantime people there can use Africa/Gaborone.
@@ -943,6 +1138,9 @@ Zone	Africa/Khartoum	2:10:08 -	LMT	1931
 			2:00	Sudan	CA%sT	2000 Jan 15 12:00
 			3:00	-	EAT
 
+# South Sudan
+Link Africa/Khartoum Africa/Juba
+
 # Swaziland
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Africa/Mbabane	2:04:24 -	LMT	1903 Mar
@@ -952,7 +1150,7 @@ Zone	Africa/Mbabane	2:04:24 -	LMT	1903 Mar
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone Africa/Dar_es_Salaam 2:37:08 -	LMT	1931
 			3:00	-	EAT	1948
-			2:44:45	-	BEAUT	1961
+			2:45	-	BEAUT	1961
 			3:00	-	EAT
 
 # Togo
@@ -1078,7 +1276,7 @@ Zone	Africa/Tunis	0:40:44 -	LMT	1881 May 12
 Zone	Africa/Kampala	2:09:40 -	LMT	1928 Jul
 			3:00	-	EAT	1930
 			2:30	-	BEAT	1948
-			2:44:45	-	BEAUT	1957
+			2:45	-	BEAUT	1957
 			3:00	-	EAT
 
 # Zambia
diff --git a/src/timezone/data/antarctica b/src/timezone/data/antarctica
index 629b2d7b81..5333b7b3d4 100644
--- a/src/timezone/data/antarctica
+++ b/src/timezone/data/antarctica
@@ -1,5 +1,4 @@
 # 
-# @(#)antarctica	8.8
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
 
@@ -17,21 +16,9 @@
 #
 # Except for the French entries,
 # I made up all time zone abbreviations mentioned here; corrections welcome!
-# FORMAT is `zzz' and GMTOFF is 0 for locations while uninhabited.
+# FORMAT is 'zzz' and GMTOFF is 0 for locations while uninhabited.
 
-# These rules are stolen from the `europe' file.
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	RussAQ	1981	1984	-	Apr	 1	 0:00	1:00	S
-Rule	RussAQ	1981	1983	-	Oct	 1	 0:00	0	-
-Rule	RussAQ	1984	1991	-	Sep	lastSun	 2:00s	0	-
-Rule	RussAQ	1985	1991	-	Mar	lastSun	 2:00s	1:00	S
-Rule	RussAQ	1992	only	-	Mar	lastSat	 23:00	1:00	S
-Rule	RussAQ	1992	only	-	Sep	lastSat	 23:00	0	-
-Rule	RussAQ	1993	max	-	Mar	lastSun	 2:00s	1:00	S
-Rule	RussAQ	1993	1995	-	Sep	lastSun	 2:00s	0	-
-Rule	RussAQ	1996	max	-	Oct	lastSun	 2:00s	0	-
-
-# These rules are stolen from the `southamerica' file.
+# These rules are stolen from the 'southamerica' file.
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	ArgAQ	1964	1966	-	Mar	 1	0:00	0	-
 Rule	ArgAQ	1964	1966	-	Oct	15	0:00	1:00	S
@@ -54,36 +41,17 @@ Rule	ChileAQ	1997	only	-	Mar	30	3:00u	0	-
 Rule	ChileAQ	1998	only	-	Mar	Sun>=9	3:00u	0	-
 Rule	ChileAQ	1998	only	-	Sep	27	4:00u	1:00	S
 Rule	ChileAQ	1999	only	-	Apr	 4	3:00u	0	-
-Rule	ChileAQ	1999	max	-	Oct	Sun>=9	4:00u	1:00	S
-Rule	ChileAQ	2000	max	-	Mar	Sun>=9	3:00u	0	-
-
-# These rules are stolen from the `australasia' file.
-Rule	AusAQ	1917	only	-	Jan	 1	0:01	1:00	-
-Rule	AusAQ	1917	only	-	Mar	25	2:00	0	-
-Rule	AusAQ	1942	only	-	Jan	 1	2:00	1:00	-
-Rule	AusAQ	1942	only	-	Mar	29	2:00	0	-
-Rule	AusAQ	1942	only	-	Sep	27	2:00	1:00	-
-Rule	AusAQ	1943	1944	-	Mar	lastSun	2:00	0	-
-Rule	AusAQ	1943	only	-	Oct	 3	2:00	1:00	-
-Rule	ATAQ	1967	only	-	Oct	Sun>=1	2:00s	1:00	-
-Rule	ATAQ	1968	only	-	Mar	lastSun	2:00s	0	-
-Rule	ATAQ	1968	1985	-	Oct	lastSun	2:00s	1:00	-
-Rule	ATAQ	1969	1971	-	Mar	Sun>=8	2:00s	0	-
-Rule	ATAQ	1972	only	-	Feb	lastSun	2:00s	0	-
-Rule	ATAQ	1973	1981	-	Mar	Sun>=1	2:00s	0	-
-Rule	ATAQ	1982	1983	-	Mar	lastSun	2:00s	0	-
-Rule	ATAQ	1984	1986	-	Mar	Sun>=1	2:00s	0	-
-Rule	ATAQ	1986	only	-	Oct	Sun>=15	2:00s	1:00	-
-Rule	ATAQ	1987	1990	-	Mar	Sun>=15	2:00s	0	-
-Rule	ATAQ	1987	only	-	Oct	Sun>=22	2:00s	1:00	-
-Rule	ATAQ	1988	1990	-	Oct	lastSun	2:00s	1:00	-
-Rule	ATAQ	1991	1999	-	Oct	Sun>=1	2:00s	1:00	-
-Rule	ATAQ	1991	2005	-	Mar	lastSun	2:00s	0	-
-Rule	ATAQ	2000	only	-	Aug	lastSun	2:00s	1:00	-
-Rule	ATAQ	2001	max	-	Oct	Sun>=1	2:00s	1:00	-
-Rule	ATAQ	2006	only	-	Apr	Sun>=1	2:00s	0	-
-Rule	ATAQ	2007	only	-	Mar	lastSun	2:00s	0	-
-Rule	ATAQ	2008	max	-	Apr	Sun>=1	2:00s	0	-
+Rule	ChileAQ	1999	2010	-	Oct	Sun>=9	4:00u	1:00	S
+Rule	ChileAQ	2000	2007	-	Mar	Sun>=9	3:00u	0	-
+# N.B.: the end of March 29 in Chile is March 30 in Universal time,
+# which is used below in specifying the transition.
+Rule	ChileAQ	2008	only	-	Mar	30	3:00u	0	-
+Rule	ChileAQ	2009	only	-	Mar	Sun>=9	3:00u	0	-
+Rule	ChileAQ	2010	only	-	Apr	Sun>=1	3:00u	0	-
+Rule	ChileAQ	2011	only	-	May	Sun>=2	3:00u	0	-
+Rule	ChileAQ	2011	only	-	Aug	Sun>=16	4:00u	1:00	S
+Rule	ChileAQ	2012	max	-	Apr	Sun>=23	3:00u	0	-
+Rule	ChileAQ	2012	max	-	Sep	Sun>=2	4:00u	1:00	S
 
 # Argentina - year-round bases
 # Belgrano II, Confin Coast, -770227-0343737, since 1972-02-05
@@ -126,10 +94,7 @@ Rule	ATAQ	2008	max	-	Apr	Sun>=1	2:00s	0	-
 # 
 
 # From Steffen Thorsen (2010-03-10):
-# We got these changes from the Australian Antarctic Division:
-# - Macquarie Island will stay on UTC+11 for winter and therefore not
-# switch back from daylight savings time when other parts of Australia do
-# on 4 April.
+# We got these changes from the Australian Antarctic Division: ...
 #
 # - Casey station reverted to its normal time of UTC+8 on 5 March 2010.
 # The change to UTC+11 is being considered as a regular summer thing but
@@ -140,9 +105,6 @@ Rule	ATAQ	2008	max	-	Apr	Sun>=1	2:00s	0	-
 #
 # - Mawson station stays on UTC+5.
 #
-# In addition to the Rule changes for Casey/Davis, it means that Macquarie
-# will no longer be like Hobart and will have to have its own Zone created.
-#
 # Background:
 # 
 # http://www.timeanddate.com/news/time/antartica-time-changes-2010.html
@@ -154,23 +116,21 @@ Zone Antarctica/Casey	0	-	zzz	1969
 						# Western (Aus) Standard Time
 			11:00	-	CAST	2010 Mar 5 2:00
 						# Casey Time
+			8:00	-	WST	2011 Oct 28 2:00
+			11:00	-	CAST	2012 Feb 21 17:00u
 			8:00	-	WST
 Zone Antarctica/Davis	0	-	zzz	1957 Jan 13
 			7:00	-	DAVT	1964 Nov # Davis Time
 			0	-	zzz	1969 Feb
 			7:00	-	DAVT	2009 Oct 18 2:00
 			5:00	-	DAVT	2010 Mar 10 20:00u
+			7:00	-	DAVT	2011 Oct 28 2:00
+			5:00	-	DAVT	2012 Feb 21 20:00u
 			7:00	-	DAVT
 Zone Antarctica/Mawson	0	-	zzz	1954 Feb 13
 			6:00	-	MAWT	2009 Oct 18 2:00
 						# Mawson Time
 			5:00	-	MAWT
-Zone Antarctica/Macquarie 0	-	zzz	1911
-			10:00	-	EST	1916 Oct 1 2:00
-			10:00	1:00	EST	1917 Feb
-			10:00	AusAQ	EST	1967
-			10:00	ATAQ	EST	2010 Apr 4 3:00
-			11:00	-	MIST	# Macquarie Island Time
 # References:
 # 
 # Casey Weather (1998-02-26)
@@ -268,9 +228,10 @@ Zone Antarctica/Syowa	0	-	zzz	1957 Jan 29
 # Scott Island (never inhabited)
 #
 # year-round base
-# Scott, Ross Island, since 1957-01, is like Antarctica/McMurdo.
+# Scott Base, Ross Island, since 1957-01.
+# See Pacific/Auckland.
 #
-# These rules for New Zealand are stolen from the `australasia' file.
+# These rules for New Zealand are stolen from the 'australasia' file.
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	NZAQ	1974	only	-	Nov	 3	2:00s	1:00	D
 Rule	NZAQ	1975	1988	-	Oct	lastSun	2:00s	1:00	D
@@ -308,11 +269,11 @@ Rule	NZAQ	2008	max	-	Apr	Sun>=1	2:00s	0	S
 # From Lee Hotz (2001-03-08):
 # I queried the folks at Columbia who spent the summer at Vostok and this is
 # what they had to say about time there:
-# ``in the US Camp (East Camp) we have been on New Zealand (McMurdo)
+# "in the US Camp (East Camp) we have been on New Zealand (McMurdo)
 # time, which is 12 hours ahead of GMT. The Russian Station Vostok was
 # 6 hours behind that (although only 2 miles away, i.e. 6 hours ahead
 # of GMT). This is a time zone I think two hours east of Moscow. The
-# natural time zone is in between the two: 8 hours ahead of GMT.''
+# natural time zone is in between the two: 8 hours ahead of GMT."
 #
 # From Paul Eggert (2001-05-04):
 # This seems to be hopelessly confusing, so I asked Lee Hotz about it
@@ -377,16 +338,8 @@ Zone Antarctica/Palmer	0	-	zzz	1965
 			-4:00	ChileAQ	CL%sT
 #
 #
-# McMurdo, Ross Island, since 1955-12
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Antarctica/McMurdo	0	-	zzz	1956
-			12:00	NZAQ	NZ%sT
-#
-# Amundsen-Scott, South Pole, continuously occupied since 1956-11-20
-#
-# From Paul Eggert (1996-09-03):
-# Normally it wouldn't have a separate entry, since it's like the
-# larger Antarctica/McMurdo since 1970, but it's too famous to omit.
+# McMurdo Station, Ross Island, since 1955-12
+# Amundsen-Scott South Pole Station, continuously occupied since 1956-11-20
 #
 # From Chris Carrier (1996-06-27):
 # Siple, the first commander of the South Pole station,
@@ -408,4 +361,4 @@ Zone Antarctica/McMurdo	0	-	zzz	1956
 # we have to go around and set them back 5 minutes or so.
 # Maybe if we let them run fast all of the time, we'd get to leave here sooner!!
 #
-Link	Antarctica/McMurdo	Antarctica/South_Pole
+# See 'australasia' for Antarctica/McMurdo.
diff --git a/src/timezone/data/asia b/src/timezone/data/asia
index d415ba801c..3bd7e7da5b 100644
--- a/src/timezone/data/asia
+++ b/src/timezone/data/asia
@@ -1,12 +1,12 @@
-# @(#)asia	8.64
+# 
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
 
 # This data is by no means authoritative; if you think you know better,
 # go ahead and edit the file (and please send any changes to
-# tz@elsie.nci.nih.gov for general use in the future).
+# tz@iana.org for general use in the future).
 
-# From Paul Eggert (2006-03-22):
+# From Paul Eggert (2013-08-11):
 #
 # A good source for time zone historical data outside the U.S. is
 # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
@@ -25,6 +25,10 @@
 # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
 # I found in the UCLA library.
 #
+# For data circa 1899, a common source is:
+# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
+# .
+#
 # A reliable and entertaining source about time zones is
 # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
 #
@@ -40,11 +44,11 @@
 #	4:00 GST	Gulf*
 #	5:30 IST	India
 #	7:00 ICT	Indochina*
-#	7:00 WIT	west Indonesia
-#	8:00 CIT	central Indonesia
+#	7:00 WIB	west Indonesia (Waktu Indonesia Barat)
+#	8:00 WITA	central Indonesia (Waktu Indonesia Tengah)
 #	8:00 CST	China
 #	9:00 CJT	Central Japanese Time (1896/1937)*
-#	9:00 EIT	east Indonesia
+#	9:00 WIT	east Indonesia (Waktu Indonesia Timur)
 #	9:00 JST  JDT	Japan
 #	9:00 KST  KDT	Korea
 #	9:30 CST	(Australian) Central Standard Time
@@ -93,6 +97,21 @@ Zone	Asia/Kabul	4:36:48 -	LMT	1890
 # in 1996, though it did use DST in 1995.  IATA SSIM (1991/1998) reports that
 # Armenia switched from 3:00 to 4:00 in 1998 and observed DST after 1991,
 # but started switching at 3:00s in 1998.
+
+# From Arthur David Olson (2011-06-15):
+# While Russia abandoned DST in 2011, Armenia may choose to
+# follow Russia's "old" rules.
+
+# From Alexander Krivenyshev (2012-02-10):
+# According to News Armenia, on Feb 9, 2012,
+# http://newsarmenia.ru/society/20120209/42609695.html
+#
+# The Armenia National Assembly adopted final reading of Amendments to the
+# Law "On procedure of calculation time on the territory of the Republic of
+# Armenia" according to which Armenia [is] abolishing Daylight Saving Time.
+# or
+# (brief)
+# http://www.worldtimezone.com/dst_news/dst_news_armenia03.html
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Asia/Yerevan	2:58:00 -	LMT	1924 May  2
 			3:00	-	YERT	1957 Mar    # Yerevan Time
@@ -100,7 +119,8 @@ Zone	Asia/Yerevan	2:58:00 -	LMT	1924 May  2
 			3:00	1:00	YERST	1991 Sep 23 # independence
 			3:00 RussiaAsia	AM%sT	1995 Sep 24 2:00s
 			4:00	-	AMT	1997
-			4:00 RussiaAsia	AM%sT
+			4:00 RussiaAsia	AM%sT	2012 Mar 25 2:00s
+			4:00	-	AMT
 
 # Azerbaijan
 # From Rustam Aliyev of the Azerbaijan Internet Forum (2005-10-23):
@@ -165,15 +185,15 @@ Zone	Asia/Bahrain	3:22:20 -	LMT	1920		# Al Manamah
 # 
 
 # From A. N. M. Kamrus Saadat (2009-06-15):
-# Finally we've got the official mail regarding DST start time where DST start 
-# time is mentioned as Jun 19 2009, 23:00 from BTRC (Bangladesh 
-# Telecommunication Regulatory Commission). 
+# Finally we've got the official mail regarding DST start time where DST start
+# time is mentioned as Jun 19 2009, 23:00 from BTRC (Bangladesh
+# Telecommunication Regulatory Commission).
 #
 # No DST end date has been announced yet.
 
 # From Alexander Krivenyshev (2009-09-25):
-# Bangladesh won't go back to Standard Time from October 1, 2009, 
-# instead it will continue DST measure till the cabinet makes a fresh decision. 
+# Bangladesh won't go back to Standard Time from October 1, 2009,
+# instead it will continue DST measure till the cabinet makes a fresh decision.
 #
 # Following report by same newspaper-"The Daily Star Friday":
 # "DST change awaits cabinet decision-Clock won't go back by 1-hr from Oct 1"
@@ -187,8 +207,8 @@ Zone	Asia/Bahrain	3:22:20 -	LMT	1920		# Al Manamah
 
 # From Steffen Thorsen (2009-10-13):
 # IANS (Indo-Asian News Service) now reports:
-# Bangladesh has decided that the clock advanced by an hour to make 
-# maximum use of daylight hours as an energy saving measure would 
+# Bangladesh has decided that the clock advanced by an hour to make
+# maximum use of daylight hours as an energy saving measure would
 # "continue for an indefinite period."
 #
 # One of many places where it is published:
@@ -216,7 +236,7 @@ Zone	Asia/Bahrain	3:22:20 -	LMT	1920		# Al Manamah
 
 # From Alexander Krivenyshev (2010-03-22):
 # According to Bangladesh newspaper "The Daily Star,"
-# Cabinet cancels Daylight Saving Time 
+# Cabinet cancels Daylight Saving Time
 # 
 # http://www.thedailystar.net/newDesign/latest_news.php?nid=22817
 # 
@@ -263,9 +283,12 @@ Zone	Asia/Brunei	7:39:40 -	LMT	1926 Mar   # Bandar Seri Begawan
 			8:00	-	BNT
 
 # Burma / Myanmar
+
+# Milne says 6:24:40 was the meridian of the time ball observatory at Rangoon.
+
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Asia/Rangoon	6:24:40 -	LMT	1880		# or Yangon
-			6:24:36	-	RMT	1920	   # Rangoon Mean Time?
+			6:24:40	-	RMT	1920	   # Rangoon Mean Time?
 			6:30	-	BURT	1942 May   # Burma Time
 			9:00	-	JST	1945 May 3
 			6:30	-	MMT		   # Myanmar Time
@@ -344,11 +367,11 @@ Rule	PRC	1987	1991	-	Apr	Sun>=10	0:00	1:00	D
 # observing daylight saving time in 1986.
 #
 # From Thomas S. Mullaney (2008-02-11):
-# I think you're combining two subjects that need to treated 
-# separately: daylight savings (which, you're correct, wasn't 
-# implemented until the 1980s) and the unified time zone centered near 
-# Beijing (which was implemented in 1949). Briefly, there was also a 
-# "Lhasa Time" in Tibet and "Urumqi Time" in Xinjiang. The first was 
+# I think you're combining two subjects that need to treated
+# separately: daylight savings (which, you're correct, wasn't
+# implemented until the 1980s) and the unified time zone centered near
+# Beijing (which was implemented in 1949). Briefly, there was also a
+# "Lhasa Time" in Tibet and "Urumqi Time" in Xinjiang. The first was
 # ceased, and the second eventually recognized (again, in the 1980s).
 #
 # From Paul Eggert (2008-06-30):
@@ -368,7 +391,8 @@ Zone	Asia/Harbin	8:26:44	-	LMT	1928 # or Haerbin
 			8:00	PRC	C%sT
 # Zhongyuan Time ("Central plain Time")
 # most of China
-Zone	Asia/Shanghai	8:05:52	-	LMT	1928
+# Milne gives 8:05:56.7; round to nearest.
+Zone	Asia/Shanghai	8:05:57	-	LMT	1928
 			8:00	Shang	C%sT	1949
 			8:00	PRC	C%sT
 # Long-shu Time (probably due to Long and Shu being two names of that area)
@@ -465,6 +489,10 @@ Zone	Asia/Kashgar	5:03:56	-	LMT	1928 # or Kashi or Kaxgar
 			8:00	PRC	C%sT
 
 
+# Hong Kong (Xianggang)
+
+# Milne gives 7:36:41.7; round this.
+
 # From Lee Yiu Chung (2009-10-24):
 # I found there are some mistakes for the...DST rule for Hong
 # Kong. [According] to the DST record from Hong Kong Observatory (actually,
@@ -485,7 +513,7 @@ Zone	Asia/Kashgar	5:03:56	-	LMT	1928 # or Kashi or Kaxgar
 # as of 2009-10-28:
 # Year        Period
 # 1941        1 Apr to 30 Sep
-# 1942        Whole year 
+# 1942        Whole year
 # 1943        Whole year
 # 1944        Whole year
 # 1945        Whole year
@@ -531,7 +559,6 @@ Zone	Asia/Kashgar	5:03:56	-	LMT	1928 # or Kashi or Kaxgar
 # The Japanese surrender of Hong Kong was signed 1945-09-15.
 # For lack of anything better, use start of those days as the transition times.
 
-# Hong Kong (Xianggang)
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	HK	1941	only	-	Apr	1	3:30	1:00	S
 Rule	HK	1941	only	-	Sep	30	3:30	0	-
@@ -553,7 +580,7 @@ Rule	HK	1973	only	-	Dec	30	3:30	1:00	S
 Rule	HK	1979	only	-	May	Sun>=8	3:30	1:00	S
 Rule	HK	1979	only	-	Oct	Sun>=16	3:30	0	-
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Hong_Kong	7:36:36 -	LMT	1904 Oct 30
+Zone	Asia/Hong_Kong	7:36:42 -	LMT	1904 Oct 30
 			8:00	HK	HK%sT	1941 Dec 25
 			9:00	-	JST	1945 Sep 15
 			8:00	HK	HK%sT
@@ -576,16 +603,16 @@ Zone	Asia/Hong_Kong	7:36:36 -	LMT	1904 Oct 30
 # From Arthur David Olson (2010-04-07):
 # Here's Google's translation of the table at the bottom of the "summert.htm" page:
 # Decade 	                                                    Name                      Start and end date
-# Republic of China 34 years to 40 years (AD 1945-1951 years) Summer Time               May 1 to September 30 
-# 41 years of the Republic of China (AD 1952)                 Daylight Saving Time      March 1 to October 31 
-# Republic of China 42 years to 43 years (AD 1953-1954 years) Daylight Saving Time      April 1 to October 31 
-# In the 44 years to 45 years (AD 1955-1956 years)            Daylight Saving Time      April 1 to September 30 
-# Republic of China 46 years to 48 years (AD 1957-1959)       Summer Time               April 1 to September 30 
-# Republic of China 49 years to 50 years (AD 1960-1961)       Summer Time               June 1 to September 30 
-# Republic of China 51 years to 62 years (AD 1962-1973 years) Stop Summer Time 
-# Republic of China 63 years to 64 years (1974-1975 AD)       Daylight Saving Time      April 1 to September 30 
-# Republic of China 65 years to 67 years (1976-1978 AD)       Stop Daylight Saving Time 
-# Republic of China 68 years (AD 1979)                        Daylight Saving Time      July 1 to September 30 
+# Republic of China 34 years to 40 years (AD 1945-1951 years) Summer Time               May 1 to September 30
+# 41 years of the Republic of China (AD 1952)                 Daylight Saving Time      March 1 to October 31
+# Republic of China 42 years to 43 years (AD 1953-1954 years) Daylight Saving Time      April 1 to October 31
+# In the 44 years to 45 years (AD 1955-1956 years)            Daylight Saving Time      April 1 to September 30
+# Republic of China 46 years to 48 years (AD 1957-1959)       Summer Time               April 1 to September 30
+# Republic of China 49 years to 50 years (AD 1960-1961)       Summer Time               June 1 to September 30
+# Republic of China 51 years to 62 years (AD 1962-1973 years) Stop Summer Time
+# Republic of China 63 years to 64 years (1974-1975 AD)       Daylight Saving Time      April 1 to September 30
+# Republic of China 65 years to 67 years (1976-1978 AD)       Stop Daylight Saving Time
+# Republic of China 68 years (AD 1979)                        Daylight Saving Time      July 1 to September 30
 # Republic of China since 69 years (AD 1980)                  Stop Daylight Saving Time
 
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
@@ -630,6 +657,9 @@ Zone	Asia/Macau	7:34:20 -	LMT	1912
 ###############################################################################
 
 # Cyprus
+#
+# Milne says the Eastern Telegraph Company used 2:14:00.  Stick with LMT.
+#
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Cyprus	1975	only	-	Apr	13	0:00	1:00	S
 Rule	Cyprus	1975	only	-	Oct	12	0:00	0	-
@@ -726,7 +756,7 @@ Zone	Asia/Dili	8:22:20 -	LMT	1912
 			8:00	-	TLT	1942 Feb 21 23:00 # E Timor Time
 			9:00	-	JST	1945 Sep 23
 			9:00	-	TLT	1976 May  3
-			8:00	-	CIT	2000 Sep 17 00:00
+			8:00	-	WITA	2000 Sep 17 00:00
 			9:00	-	TLT
 
 # India
@@ -763,36 +793,53 @@ Zone	Asia/Kolkata	5:53:28 -	LMT	1880	# Kolkata
 # (Hollandia).  For now, assume all Indonesian locations other than Jayapura
 # switched on 1945-09-23.
 #
+# From Paul Eggert (2013-08-11):
+# Normally the tz database uses English-language abbreviations, but in
+# Indonesia it's typical to use Indonesian-language abbreviations even
+# when writing in English.  For example, see the English-language
+# summary published by the Time and Frequency Laboratory of the
+# Research Center for Calibration, Instrumentation and Metrology,
+# Indonesia,  (2006-09-29).
+# The abbreviations are:
+#
+# WIB  - UTC+7 - Waktu Indonesia Barat (Indonesia western time)
+# WITA - UTC+8 - Waktu Indonesia Tengah (Indonesia central time)
+# WIT  - UTC+9 - Waktu Indonesia Timur (Indonesia eastern time)
+#
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
+# Java, Sumatra
 Zone Asia/Jakarta	7:07:12 -	LMT	1867 Aug 10
 # Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13,
 # but this must be a typo.
-			7:07:12	-	JMT	1923 Dec 31 23:47:12 # Jakarta
+			7:07:12	-	BMT	1923 Dec 31 23:47:12 # Batavia
 			7:20	-	JAVT	1932 Nov	 # Java Time
-			7:30	-	WIT	1942 Mar 23
+			7:30	-	WIB	1942 Mar 23
 			9:00	-	JST	1945 Sep 23
-			7:30	-	WIT	1948 May
-			8:00	-	WIT	1950 May
-			7:30	-	WIT	1964
-			7:00	-	WIT
+			7:30	-	WIB	1948 May
+			8:00	-	WIB	1950 May
+			7:30	-	WIB	1964
+			7:00	-	WIB
+# west and central Borneo
 Zone Asia/Pontianak	7:17:20	-	LMT	1908 May
 			7:17:20	-	PMT	1932 Nov    # Pontianak MT
-			7:30	-	WIT	1942 Jan 29
+			7:30	-	WIB	1942 Jan 29
 			9:00	-	JST	1945 Sep 23
-			7:30	-	WIT	1948 May
-			8:00	-	WIT	1950 May
-			7:30	-	WIT	1964
-			8:00	-	CIT	1988 Jan  1
-			7:00	-	WIT
+			7:30	-	WIB	1948 May
+			8:00	-	WIB	1950 May
+			7:30	-	WIB	1964
+			8:00	-	WITA	1988 Jan  1
+			7:00	-	WIB
+# Sulawesi, Lesser Sundas, east and south Borneo
 Zone Asia/Makassar	7:57:36 -	LMT	1920
 			7:57:36	-	MMT	1932 Nov    # Macassar MT
-			8:00	-	CIT	1942 Feb  9
+			8:00	-	WITA	1942 Feb  9
 			9:00	-	JST	1945 Sep 23
-			8:00	-	CIT
+			8:00	-	WITA
+# Maluku Islands, West Papua, Papua
 Zone Asia/Jayapura	9:22:48 -	LMT	1932 Nov
-			9:00	-	EIT	1944 Sep  1
+			9:00	-	WIT	1944 Sep  1
 			9:30	-	CST	1964
-			9:00	-	EIT
+			9:00	-	WIT
 
 # Iran
 
@@ -1043,8 +1090,13 @@ Rule	Zion	1986	only	-	May	18	0:00	1:00	D
 Rule	Zion	1986	only	-	Sep	 7	0:00	0	S
 Rule	Zion	1987	only	-	Apr	15	0:00	1:00	D
 Rule	Zion	1987	only	-	Sep	13	0:00	0	S
-Rule	Zion	1988	only	-	Apr	 9	0:00	1:00	D
-Rule	Zion	1988	only	-	Sep	 3	0:00	0	S
+
+# From Avigdor Finkelstein (2014-03-05):
+# I check the Parliament (Knesset) records and there it's stated that the
+# [1988] transition should take place on Saturday night, when the Sabbath
+# ends and changes to Sunday.
+Rule	Zion	1988	only	-	Apr	10	0:00	1:00	D
+Rule	Zion	1988	only	-	Sep	 4	0:00	0	S
 
 # From Ephraim Silverberg
 # (1997-03-04, 1998-03-16, 1998-12-28, 2000-01-17, 2000-07-25, 2004-12-22,
@@ -1154,15 +1206,15 @@ Rule	Zion	2004	only	-	Sep	22	1:00	0	S
 #
 #	ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps
 
-# From Paul Eggert (2005-02-22):
+# From Paul Eggert (2012-10-26):
 # I used Ephraim Silverberg's dst-israel.el program
 #  (2005-02-20)
 # along with Ed Reingold's cal-hebrew in GNU Emacs 21.4,
-# to generate the transitions in this list.
+# to generate the transitions from 2005 through 2012.
 # (I replaced "lastFri" with "Fri>=26" by hand.)
-# The spring transitions below all correspond to the following Rule:
+# The spring transitions all correspond to the following Rule:
 #
-# Rule	Zion	2005	max	-	Mar	Fri>=26	2:00	1:00	D
+# Rule	Zion	2005	2012	-	Mar	Fri>=26	2:00	1:00	D
 #
 # but older zic implementations (e.g., Solaris 8) do not support
 # "Fri>=26" to mean April 1 in years like 2005, so for now we list the
@@ -1179,42 +1231,24 @@ Rule	Zion	2009	only	-	Sep	27	2:00	0	S
 Rule	Zion	2010	only	-	Sep	12	2:00	0	S
 Rule	Zion	2011	only	-	Apr	 1	2:00	1:00	D
 Rule	Zion	2011	only	-	Oct	 2	2:00	0	S
-Rule	Zion	2012	2015	-	Mar	Fri>=26	2:00	1:00	D
+Rule	Zion	2012	only	-	Mar	Fri>=26	2:00	1:00	D
 Rule	Zion	2012	only	-	Sep	23	2:00	0	S
-Rule	Zion	2013	only	-	Sep	 8	2:00	0	S
-Rule	Zion	2014	only	-	Sep	28	2:00	0	S
-Rule	Zion	2015	only	-	Sep	20	2:00	0	S
-Rule	Zion	2016	only	-	Apr	 1	2:00	1:00	D
-Rule	Zion	2016	only	-	Oct	 9	2:00	0	S
-Rule	Zion	2017	2021	-	Mar	Fri>=26	2:00	1:00	D
-Rule	Zion	2017	only	-	Sep	24	2:00	0	S
-Rule	Zion	2018	only	-	Sep	16	2:00	0	S
-Rule	Zion	2019	only	-	Oct	 6	2:00	0	S
-Rule	Zion	2020	only	-	Sep	27	2:00	0	S
-Rule	Zion	2021	only	-	Sep	12	2:00	0	S
-Rule	Zion	2022	only	-	Apr	 1	2:00	1:00	D
-Rule	Zion	2022	only	-	Oct	 2	2:00	0	S
-Rule	Zion	2023	2032	-	Mar	Fri>=26	2:00	1:00	D
-Rule	Zion	2023	only	-	Sep	24	2:00	0	S
-Rule	Zion	2024	only	-	Oct	 6	2:00	0	S
-Rule	Zion	2025	only	-	Sep	28	2:00	0	S
-Rule	Zion	2026	only	-	Sep	20	2:00	0	S
-Rule	Zion	2027	only	-	Oct	10	2:00	0	S
-Rule	Zion	2028	only	-	Sep	24	2:00	0	S
-Rule	Zion	2029	only	-	Sep	16	2:00	0	S
-Rule	Zion	2030	only	-	Oct	 6	2:00	0	S
-Rule	Zion	2031	only	-	Sep	21	2:00	0	S
-Rule	Zion	2032	only	-	Sep	12	2:00	0	S
-Rule	Zion	2033	only	-	Apr	 1	2:00	1:00	D
-Rule	Zion	2033	only	-	Oct	 2	2:00	0	S
-Rule	Zion	2034	2037	-	Mar	Fri>=26	2:00	1:00	D
-Rule	Zion	2034	only	-	Sep	17	2:00	0	S
-Rule	Zion	2035	only	-	Oct	 7	2:00	0	S
-Rule	Zion	2036	only	-	Sep	28	2:00	0	S
-Rule	Zion	2037	only	-	Sep	13	2:00	0	S
+
+# From Ephraim Silverberg (2013-06-27):
+# On June 23, 2013, the Israeli government approved changes to the
+# Time Decree Law.  The next day, the changes passed the First Reading
+# in the Knesset.  The law is expected to pass the Second and Third
+# (final) Readings by the beginning of September 2013.
+#
+# As of 2013, DST starts at 02:00 on the Friday before the last Sunday
+# in March.  DST ends at 02:00 on the last Sunday of October.
+
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	Zion	2013	max	-	Mar	Fri>=23	2:00	1:00	D
+Rule	Zion	2013	max	-	Oct	lastSun	2:00	0	S
 
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Jerusalem	2:20:56 -	LMT	1880
+Zone	Asia/Jerusalem	2:20:54 -	LMT	1880
 			2:20:40	-	JMT	1918	# Jerusalem Mean Time?
 			2:00	Zion	I%sT
 
@@ -1346,6 +1380,28 @@ Zone	Asia/Tokyo	9:18:59	-	LMT	1887 Dec 31 15:00u
 # From Arthur David Olson (2009-04-06):
 # We still have Jordan switching to DST on Thursdays in 2000 and 2001.
 
+# From Steffen Thorsen (2012-10-25):
+# Yesterday the government in Jordan announced that they will not
+# switch back to standard time this winter, so the will stay on DST
+# until about the same time next year (at least).
+# http://www.petra.gov.jo/Public_News/Nws_NewsDetails.aspx?NewsID=88950
+
+# From Steffen Thorsen (2013-12-11):
+# Jordan Times and other sources say that Jordan is going back to
+# UTC+2 on 2013-12-19 at midnight:
+# http://jordantimes.com/govt-decides-to-switch-back-to-wintertime
+# Official, in Arabic:
+# http://www.petra.gov.jo/public_news/Nws_NewsDetails.aspx?Menu_ID=&Site_Id=2&lang=1&NewsID=133230&CatID=14
+# ... Our background/permalink about it
+# http://www.timeanddate.com/news/time/jordan-reverses-dst-decision.html
+# ...
+# http://www.petra.gov.jo/Public_News/Nws_NewsDetails.aspx?lang=2&site_id=1&NewsID=133313&Type=P
+# ... says midnight for the coming one and 1:00 for the ones in the future
+# (and they will use DST again next year, using the normal schedule).
+
+# From Paul Eggert (2013-12-11):
+# As Steffen suggested, consider the past 21-month experiment to be DST.
+
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Jordan	1973	only	-	Jun	6	0:00	1:00	S
 Rule	Jordan	1973	1975	-	Oct	1	0:00	0	-
@@ -1370,11 +1426,14 @@ Rule	Jordan	1995	1998	-	Sep	Fri>=15	0:00s	0	-
 Rule	Jordan	1999	only	-	Jul	 1	0:00s	1:00	S
 Rule	Jordan	1999	2002	-	Sep	lastFri	0:00s	0	-
 Rule	Jordan	2000	2001	-	Mar	lastThu	0:00s	1:00	S
-Rule	Jordan	2002	max	-	Mar	lastThu	24:00	1:00	S
+Rule	Jordan	2002	2012	-	Mar	lastThu	24:00	1:00	S
 Rule	Jordan	2003	only	-	Oct	24	0:00s	0	-
 Rule	Jordan	2004	only	-	Oct	15	0:00s	0	-
 Rule	Jordan	2005	only	-	Sep	lastFri	0:00s	0	-
-Rule	Jordan	2006	max	-	Oct	lastFri	0:00s	0	-
+Rule	Jordan	2006	2011	-	Oct	lastFri	0:00s	0	-
+Rule	Jordan	2013	only	-	Dec	20	0:00	0	-
+Rule	Jordan	2014	max	-	Mar	lastThu	24:00	1:00	S
+Rule	Jordan	2014	max	-	Oct	lastFri	0:00s	0	-
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Asia/Amman	2:23:44 -	LMT	1931
 			2:00	Jordan	EE%sT
@@ -1777,8 +1836,11 @@ Zone	Asia/Kathmandu	5:41:16 -	LMT	1920
 			5:45	-	NPT	# Nepal Time
 
 # Oman
+
+# Milne says 3:54:24 was the meridian of the Muscat Tidal Observatory.
+
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Muscat	3:54:20 -	LMT	1920
+Zone	Asia/Muscat	3:54:24 -	LMT	1920
 			4:00	-	GST
 
 # Pakistan
@@ -1819,15 +1881,15 @@ Zone	Asia/Muscat	3:54:20 -	LMT	1920
 # shown 8 per cent higher consumption of electricity.
 
 # From Alex Krivenyshev (2008-05-15):
-# 
-# Here is an article that Pakistan plan to introduce Daylight Saving Time 
+#
+# Here is an article that Pakistan plan to introduce Daylight Saving Time
 # on June 1, 2008 for 3 months.
-# 
-# "... The federal cabinet on Wednesday announced a new conservation plan to help 
-# reduce load shedding by approving the closure of commercial centres at 9pm and 
-# moving clocks forward by one hour for the next three months. 
+#
+# "... The federal cabinet on Wednesday announced a new conservation plan to help
+# reduce load shedding by approving the closure of commercial centres at 9pm and
+# moving clocks forward by one hour for the next three months.
 # ...."
-# 
+#
 # 
 # http://www.worldtimezone.net/dst_news/dst_news_pakistan01.html
 # 
@@ -1887,7 +1949,7 @@ Zone	Asia/Muscat	3:54:20 -	LMT	1920
 # Government has decided to restore the previous time by moving the
 # clocks backward by one hour from October 1. A formal announcement to
 # this effect will be made after the Prime Minister grants approval in
-# this regard." 
+# this regard."
 # 
 # http://www.thenews.com.pk/updates.asp?id=87168
 # 
@@ -2025,8 +2087,7 @@ Zone	Asia/Karachi	4:28:12 -	LMT	1907
 # occurred before our cutoff date of 1970.
 # However, as we get more information, we may need to add entries
 # for parts of the West Bank as they transitioned from Israel's rules
-# to Palestine's rules.  If you have more info about this, please
-# send it to tz@elsie.nci.nih.gov for incorporation into future editions.
+# to Palestine's rules.
 
 # From IINS News Service - Israel - 1998-03-23 10:38:07 Israel time,
 # forwarded by Ephraim Silverberg:
@@ -2183,14 +2244,95 @@ Zone	Asia/Karachi	4:28:12 -	LMT	1907
 # 
 # http://www.maannews.net/eng/ViewDetails.aspx?ID=306795
 # 
-# the clocks were set back one hour at 2010-08-11 00:00:00 local time in 
+# the clocks were set back one hour at 2010-08-11 00:00:00 local time in
 # Gaza and the West Bank.
 # Some more background info:
 # 
 # http://www.timeanddate.com/news/time/westbank-gaza-end-dst-2010.html
 # 
 
+# From Steffen Thorsen (2011-08-26):
+# Gaza and the West Bank did go back to standard time in the beginning of
+# August, and will now enter daylight saving time again on 2011-08-30
+# 00:00 (so two periods of DST in 2011). The pause was because of
+# Ramadan.
+#
+# 
+# http://www.maannews.net/eng/ViewDetails.aspx?ID=416217
+# 
+# Additional info:
+# 
+# http://www.timeanddate.com/news/time/palestine-dst-2011.html
+# 
+
+# From Alexander Krivenyshev (2011-08-27):
+# According to the article in The Jerusalem Post:
+# "...Earlier this month, the Palestinian government in the West Bank decided to
+# move to standard time for 30 days, during Ramadan. The Palestinians in the
+# Gaza Strip accepted the change and also moved their clocks one hour back.
+# The Hamas government said on Saturday that it won't observe summertime after
+# the Muslim feast of Id al-Fitr, which begins on Tuesday..."
+# ...
+# 
+# http://www.jpost.com/MiddleEast/Article.aspx?id=235650
+# 
+# or
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_gazastrip05.html
+# 
 # The rules for Egypt are stolen from the `africa' file.
+
+# From Steffen Thorsen (2011-09-30):
+# West Bank did end Daylight Saving Time this morning/midnight (2011-09-30
+# 00:00).
+# So West Bank and Gaza now have the same time again.
+#
+# Many sources, including:
+# 
+# http://www.maannews.net/eng/ViewDetails.aspx?ID=424808
+# 
+
+# From Steffen Thorsen (2012-03-26):
+# Palestinian news sources tell that both Gaza and West Bank will start DST
+# on Friday (Thursday midnight, 2012-03-29 24:00).
+# Some of many sources in Arabic:
+# 
+# http://www.samanews.com/index.php?act=Show&id=122638
+# 
+#
+# 
+# http://safa.ps/details/news/74352/%D8%A8%D8%AF%D8%A1-%D8%A7%D9%84%D8%AA%D9%88%D9%82%D9%8A%D8%AA-%D8%A7%D9%84%D8%B5%D9%8A%D9%81%D9%8A-%D8%A8%D8%A7%D9%84%D8%B6%D9%81%D8%A9-%D9%88%D8%BA%D8%B2%D8%A9-%D9%84%D9%8A%D9%84%D8%A9-%D8%A7%D9%84%D8%AC%D9%85%D8%B9%D8%A9.html
+# 
+#
+# Our brief summary:
+# 
+# http://www.timeanddate.com/news/time/gaza-west-bank-dst-2012.html
+# 
+
+# From Steffen Thorsen (2013-03-26):
+# The following news sources tells that Palestine will "start daylight saving
+# time from midnight on Friday, March 29, 2013" (translated).
+# [These are in Arabic and are for Gaza and for Ramallah, respectively.]
+# http://www.samanews.com/index.php?act=Show&id=154120
+# http://safa.ps/details/news/99844/%D8%B1%D8%A7%D9%85-%D8%A7%D9%84%D9%84%D9%87-%D8%A8%D8%AF%D8%A1-%D8%A7%D9%84%D8%AA%D9%88%D9%82%D9%8A%D8%AA-%D8%A7%D9%84%D8%B5%D9%8A%D9%81%D9%8A-29-%D8%A7%D9%84%D8%AC%D8%A7%D8%B1%D9%8A.html
+
+# From Steffen Thorsen (2013-09-24):
+# The Gaza and West Bank are ending DST Thursday at midnight
+# (2013-09-27 00:00:00) (one hour earlier than last year...).
+# This source in English, says "that winter time will go into effect
+# at midnight on Thursday in the West Bank and Gaza Strip":
+# http://english.wafa.ps/index.php?action=detail&id=23246
+# official source...:
+# http://www.palestinecabinet.gov.ps/ar/Views/ViewDetails.aspx?pid=1252
+
+# From Paul Eggert (2013-09-24):
+# For future dates, guess the last Thursday in March at 24:00 through
+# the first Friday on or after September 21 at 00:00.  This is consistent with
+# the predictions in today's editions of the following URLs,
+# which are for Gaza and Hebron respectively:
+# http://www.timeanddate.com/worldclock/timezone.html?n=702
+# http://www.timeanddate.com/worldclock/timezone.html?n=2364
+
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule EgyptAsia	1957	only	-	May	10	0:00	1:00	S
 Rule EgyptAsia	1957	1958	-	Oct	 1	0:00	0	-
@@ -2203,17 +2345,37 @@ Rule Palestine	1999	2005	-	Apr	Fri>=15	0:00	1:00	S
 Rule Palestine	1999	2003	-	Oct	Fri>=15	0:00	0	-
 Rule Palestine	2004	only	-	Oct	 1	1:00	0	-
 Rule Palestine	2005	only	-	Oct	 4	2:00	0	-
-Rule Palestine	2006	2008	-	Apr	 1	0:00	1:00	S
+Rule Palestine	2006	2007	-	Apr	 1	0:00	1:00	S
 Rule Palestine	2006	only	-	Sep	22	0:00	0	-
 Rule Palestine	2007	only	-	Sep	Thu>=8	2:00	0	-
-Rule Palestine	2008	only	-	Aug	lastFri	2:00	0	-
-Rule Palestine	2009	only	-	Mar	lastFri	0:00	1:00	S
-Rule Palestine	2010	max	-	Mar	lastSat	0:01	1:00	S
-Rule Palestine	2009	max	-	Sep	Fri>=1	2:00	0	-
+Rule Palestine	2008	2009	-	Mar	lastFri	0:00	1:00	S
+Rule Palestine	2008	only	-	Sep	 1	0:00	0	-
+Rule Palestine	2009	only	-	Sep	Fri>=1	1:00	0	-
+Rule Palestine	2010	only	-	Mar	26	0:00	1:00	S
 Rule Palestine	2010	only	-	Aug	11	0:00	0	-
+Rule Palestine	2011	only	-	Apr	 1	0:01	1:00	S
+Rule Palestine	2011	only	-	Aug	 1	0:00	0	-
+Rule Palestine	2011	only	-	Aug	30	0:00	1:00	S
+Rule Palestine	2011	only	-	Sep	30	0:00	0	-
+Rule Palestine	2012	max	-	Mar	lastThu	24:00	1:00	S
+Rule Palestine	2012	only	-	Sep	21	1:00	0	-
+Rule Palestine	2013	max	-	Sep	Fri>=21	0:00	0	-
 
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Asia/Gaza	2:17:52	-	LMT	1900 Oct
+			2:00	Zion	EET	1948 May 15
+			2:00 EgyptAsia	EE%sT	1967 Jun  5
+			2:00	Zion	I%sT	1996
+			2:00	Jordan	EE%sT	1999
+			2:00 Palestine	EE%sT	2008 Aug 29 0:00
+			2:00	-	EET	2008 Sep
+			2:00 Palestine	EE%sT	2010
+			2:00	-	EET	2010 Mar 27 0:01
+			2:00 Palestine	EE%sT	2011 Aug  1
+			2:00	-	EET	2012
+			2:00 Palestine	EE%sT
+
+Zone	Asia/Hebron	2:20:23	-	LMT	1900 Oct
 			2:00	Zion	EET	1948 May 15
 			2:00 EgyptAsia	EE%sT	1967 Jun  5
 			2:00	Zion	I%sT	1996
@@ -2287,6 +2449,13 @@ Zone	Asia/Singapore	6:55:25 -	LMT	1901 Jan  1
 # no information
 
 # Sri Lanka
+
+# From Paul Eggert (2013-02-21):
+# Milne says "Madras mean time use from May 1, 1898.  Prior to this Colombo
+# mean time, 5h. 4m. 21.9s. F., was used."  But 5:04:21.9 differs considerably
+# from Colombo's meridian 5:19:24, so for now ignore Milne and stick with
+# Shanks and Pottenger.
+
 # From Paul Eggert (1996-09-03):
 # "Sri Lanka advances clock by an hour to avoid blackout"
 # (www.virtual-pc.com/lankaweb/news/items/240596-2.html, 1996-05-24,
@@ -2406,24 +2575,24 @@ Rule	Syria	2006	only	-	Sep	22	0:00	0	-
 Rule	Syria	2007	only	-	Mar	lastFri	0:00	1:00	S
 # From Jesper Norgard (2007-10-27):
 # The sister center ICARDA of my work CIMMYT is confirming that Syria DST will
-# not take place 1.st November at 0:00 o'clock but 1.st November at 24:00 or
-# rather Midnight between Thursday and Friday. This does make more sence than
+# not take place 1st November at 0:00 o'clock but 1st November at 24:00 or
+# rather Midnight between Thursday and Friday. This does make more sense than
 # having it between Wednesday and Thursday (two workdays in Syria) since the
 # weekend in Syria is not Saturday and Sunday, but Friday and Saturday. So now
 # it is implemented at midnight of the last workday before weekend...
-# 
+#
 # From Steffen Thorsen (2007-10-27):
 # Jesper Norgaard Welen wrote:
-# 
+#
 # > "Winter local time in Syria will be observed at midnight of Thursday 1
 # > November 2007, and the clock will be put back 1 hour."
-# 
+#
 # I found confirmation on this in this gov.sy-article (Arabic):
 # http://wehda.alwehda.gov.sy/_print_veiw.asp?FileName=12521710520070926111247
-# 
+#
 # which using Google's translate tools says:
-# Council of Ministers also approved the commencement of work on 
-# identifying the winter time as of Friday, 2/11/2007 where the 60th 
+# Council of Ministers also approved the commencement of work on
+# identifying the winter time as of Friday, 2/11/2007 where the 60th
 # minute delay at midnight Thursday 1/11/2007.
 Rule	Syria	2007	only	-	Nov	 Fri>=1	0:00	0	-
 
@@ -2489,8 +2658,8 @@ Rule	Syria	2007	only	-	Nov	 Fri>=1	0:00	0	-
 # 
 
 # From Steffen Thorsen (2009-10-27):
-# The Syrian Arab News Network on 2009-09-29 reported that Syria will 
-# revert back to winter (standard) time on midnight between Thursday 
+# The Syrian Arab News Network on 2009-09-29 reported that Syria will
+# revert back to winter (standard) time on midnight between Thursday
 # 2009-10-29 and Friday 2009-10-30:
 # 
 # http://www.sana.sy/ara/2/2009/09/29/247012.htm (Arabic)
@@ -2509,10 +2678,28 @@ Rule	Syria	2007	only	-	Nov	 Fri>=1	0:00	0	-
 # http://sns.sy/sns/?path=news/read/11421 (Arabic)
 # 
 
+# From Steffen Thorsen (2012-03-26):
+# Today, Syria's government announced that they will start DST early on Friday
+# (00:00). This is a bit earlier than the past two years.
+#
+# From Syrian Arab News Agency, in Arabic:
+# 
+# http://www.sana.sy/ara/2/2012/03/26/408215.htm
+# 
+#
+# Our brief summary:
+# 
+# http://www.timeanddate.com/news/time/syria-dst-2012.html
+# 
+
+# From Arthur David Olson (2012-03-27):
+# Assume last Friday in March going forward XXX.
+
 Rule	Syria	2008	only	-	Apr	Fri>=1	0:00	1:00	S
 Rule	Syria	2008	only	-	Nov	1	0:00	0	-
 Rule	Syria	2009	only	-	Mar	lastFri	0:00	1:00	S
-Rule	Syria	2010	max	-	Apr	Fri>=1	0:00	1:00	S
+Rule	Syria	2010	2011	-	Apr	Fri>=1	0:00	1:00	S
+Rule	Syria	2012	max	-	Mar	lastFri	0:00	1:00	S
 Rule	Syria	2009	max	-	Oct	lastFri	0:00	0	-
 
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
@@ -2568,6 +2755,12 @@ Zone	Asia/Tashkent	4:37:12 -	LMT	1924 May  2
 
 # Vietnam
 
+# From Paul Eggert (2013-02-21):
+# Milne gives 7:16:56 for the meridian of Saigon in 1899, as being
+# used in Lower Laos, Cambodia, and Annam.  But this is quite a ways
+# from Saigon's location.  For now, ignore this and stick with Shanks
+# and Pottenger.
+
 # From Arthur David Olson (2008-03-18):
 # The English-language name of Vietnam's most populous city is "Ho Chi Min City";
 # we use Ho_Chi_Minh below to avoid a name of more than 14 characters.
@@ -2581,6 +2774,10 @@ Zone	Asia/Ho_Chi_Minh	7:06:40 -	LMT	1906 Jun  9
 			7:00	-	ICT
 
 # Yemen
+
+# Milne says 2:59:54 was the meridian of the saluting battery at Aden,
+# and that Yemen was at 1:55:56, the meridian of the Hagia Sophia.
+
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Aden	3:00:48	-	LMT	1950
+Zone	Asia/Aden	2:59:54	-	LMT	1950
 			3:00	-	AST
diff --git a/src/timezone/data/australasia b/src/timezone/data/australasia
index 6949172dc3..f7fa628ce3 100644
--- a/src/timezone/data/australasia
+++ b/src/timezone/data/australasia
@@ -1,5 +1,4 @@
 # 
-# @(#)australasia	8.23
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
 
@@ -219,9 +218,32 @@ Zone Australia/Lord_Howe 10:36:20 -	LMT	1895 Feb
 # no times are set
 #
 # Macquarie
-# permanent occupation (scientific station) since 1948;
-# sealing and penguin oil station operated 1888/1917
-# like Australia/Hobart
+# Permanent occupation (scientific station) 1911-1915 and since 25 March 1948;
+# sealing and penguin oil station operated Nov 1899 to Apr 1919.  See the
+# Tasmania Parks & Wildlife Service history of sealing at Macquarie Island
+# 
+# .
+# Guess that it was like Australia/Hobart while inhabited before 2010.
+#
+# From Steffen Thorsen (2010-03-10):
+# We got these changes from the Australian Antarctic Division:
+# - Macquarie Island will stay on UTC+11 for winter and therefore not
+# switch back from daylight savings time when other parts of Australia do
+# on 4 April.
+#
+# From Arthur David Olson (2013-05-23):
+# The 1919 transition is overspecified below so pre-2013 zics
+# will produce a binary file with an EST-type as the first 32-bit type;
+# this is required for correct handling of times before 1916 by
+# pre-2013 versions of localtime.
+Zone Antarctica/Macquarie 0	-	zzz	1899 Nov
+			10:00	-	EST	1916 Oct 1 2:00
+			10:00	1:00	EST	1917 Feb
+			10:00	Aus	EST	1919 Apr 1 0:00s
+			0	-	zzz	1948 Mar 25
+			10:00	Aus	EST	1967
+			10:00	AT	EST	2010 Apr 4 3:00
+			11:00	-	MIST	# Macquarie I Standard Time
 
 # Christmas
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
@@ -247,6 +269,9 @@ Zone	Indian/Cocos	6:27:40	-	LMT	1900
 			6:30	-	CCT	# Cocos Islands Time
 
 # Fiji
+
+# Milne gives 11:55:44 for Suva.
+
 # From Alexander Krivenyshev (2009-11-10):
 # According to Fiji Broadcasting Corporation,  Fiji plans to re-introduce DST
 # from November 29th 2009  to April 25th 2010.
@@ -284,9 +309,9 @@ Zone	Indian/Cocos	6:27:40	-	LMT	1900
 # 
 
 # From Alexander Krivenyshev (2010-10-24):
-# According to Radio Fiji and Fiji Times online, Fiji will end DST 3 
+# According to Radio Fiji and Fiji Times online, Fiji will end DST 3
 # weeks earlier than expected - on March 6, 2011, not March 27, 2011...
-# Here is confirmation from Government of the Republic of the Fiji Islands, 
+# Here is confirmation from Government of the Republic of the Fiji Islands,
 # Ministry of Information (fiji.gov.fj) web site:
 # 
 # http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=2608:daylight-savings&catid=71:press-releases&Itemid=155
@@ -296,15 +321,63 @@ Zone	Indian/Cocos	6:27:40	-	LMT	1900
 # http://www.worldtimezone.com/dst_news/dst_news_fiji04.html
 # 
 
+# From Steffen Thorsen (2011-10-03):
+# Now the dates have been confirmed, and at least our start date
+# assumption was correct (end date was one week wrong).
+#
+# 
+# www.fiji.gov.fj/index.php?option=com_content&view=article&id=4966:daylight-saving-starts-in-fiji&catid=71:press-releases&Itemid=155
+# 
+# which says
+# Members of the public are reminded to change their time to one hour in
+# advance at 2am to 3am on October 23, 2011 and one hour back at 3am to
+# 2am on February 26 next year.
+
+# From Ken Rylander (2011-10-24)
+# Another change to the Fiji DST end date. In the TZ database the end date for
+# Fiji DST 2012, is currently Feb 26. This has been changed to Jan 22.
+#
+# 
+# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=5017:amendments-to-daylight-savings&catid=71:press-releases&Itemid=155
+# 
+# states:
+#
+# The end of daylight saving scheduled initially for the 26th of February 2012
+# has been brought forward to the 22nd of January 2012.
+# The commencement of daylight saving will remain unchanged and start
+# on the  23rd of October, 2011.
+
+# From the Fiji Government Online Portal (2012-08-21) via Steffen Thorsen:
+# The Minister for Labour, Industrial Relations and Employment Mr Jone Usamate
+# today confirmed that Fiji will start daylight savings at 2 am on Sunday 21st
+# October 2012 and end at 3 am on Sunday 20th January 2013.
+# http://www.fiji.gov.fj/index.php?option=com_content&view=article&id=6702&catid=71&Itemid=155
+
+# From the Fijian Government Media Center (2013-08-30) via David Wheeler:
+# Fiji will start daylight savings on Sunday 27th October, 2013 ...
+# move clocks forward by one hour from 2am
+# http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVING-STARTS-ON-SUNDAY,-27th-OCTOBER-201.aspx
+
+# From Steffen Thorsen (2013-01-10):
+# Fiji will end DST on 2014-01-19 02:00:
+# http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVINGS-TO-END-THIS-MONTH-%281%29.aspx
+
+# From Paul Eggert (2014-01-10):
+# For now, guess that Fiji springs forward the Sunday before the fourth
+# Monday in October, and springs back the penultimate Sunday in January.
+# This is ad hoc, but matches recent practice.
+
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Fiji	1998	1999	-	Nov	Sun>=1	2:00	1:00	S
 Rule	Fiji	1999	2000	-	Feb	lastSun	3:00	0	-
 Rule	Fiji	2009	only	-	Nov	29	2:00	1:00	S
 Rule	Fiji	2010	only	-	Mar	lastSun	3:00	0	-
-Rule	Fiji	2010	only	-	Oct	24	2:00	1:00	S
+Rule	Fiji	2010	max	-	Oct	Sun>=21	2:00	1:00	S
 Rule	Fiji	2011	only	-	Mar	Sun>=1	3:00	0	-
+Rule	Fiji	2012	2013	-	Jan	Sun>=18	3:00	0	-
+Rule	Fiji	2014	max	-	Jan	Sun>=18	2:00	0	-
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Pacific/Fiji	11:53:40 -	LMT	1915 Oct 26	# Suva
+Zone	Pacific/Fiji	11:55:44 -	LMT	1915 Oct 26	# Suva
 			12:00	Fiji	FJ%sT	# Fiji Time
 
 # French Polynesia
@@ -426,6 +499,7 @@ Zone Pacific/Auckland	11:39:04 -	LMT	1868 Nov  2
 Zone Pacific/Chatham	12:13:48 -	LMT	1957 Jan  1
 			12:45	Chatham	CHA%sT
 
+Link Pacific/Auckland Antarctica/McMurdo
 
 # Auckland Is
 # uninhabited; Maori and Moriori, colonial settlers, pastoralists, sealers,
@@ -499,7 +573,7 @@ Zone Pacific/Pago_Pago	 12:37:12 -	LMT	1879 Jul  5
 # http://www.parliament.gov.ws/documents/acts/Daylight%20Saving%20Act%20%202009%20%28English%29%20-%20Final%207-7-091.pdf
 # 
 
-# From Raymond Hughes (2010-10-07):
+# From Laupue Raymond Hughes (2010-10-07):
 # Please see
 # 
 # http://www.mcil.gov.ws
@@ -509,7 +583,7 @@ Zone Pacific/Pago_Pago	 12:37:12 -	LMT	1879 Jul  5
 # to 01:00am and First Sunday April 2011 (03/04/11) - adjust clocks
 # backwards from 1:00am to 12:00am"
 
-# From Raymond Hughes (2011-03-07)
+# From Laupue Raymond Hughes (2011-03-07):
 # I believe this will be posted shortly on the website
 # 
 # www.mcil.gov.ws
@@ -529,12 +603,96 @@ Zone Pacific/Pago_Pago	 12:37:12 -	LMT	1879 Jul  5
 # Margaret Fruean ACTING CHIEF EXECUTIVE OFFICER MINISTRY OF COMMERCE,
 # INDUSTRY AND LABOUR 28th February 2011
 
+# From David Zuelke (2011-05-09):
+# Subject: Samoa to move timezone from east to west of international date line
+#
+# 
+# http://www.morningstar.co.uk/uk/markets/newsfeeditem.aspx?id=138501958347963
+# 
+
+# From Mark Sim-Smith (2011-08-17):
+# I have been in contact with Leilani Tuala Warren from the Samoa Law
+# Reform Commission, and she has sent me a copy of the Bill that she
+# confirmed has been passed...Most of the sections are about maps rather
+# than the time zone change, but I'll paste the relevant bits below. But
+# the essence is that at midnight 29 Dec (UTC-11 I suppose), Samoa
+# changes from UTC-11 to UTC+13:
+#
+# International Date Line Bill 2011
+#
+# AN ACT to provide for the change to standard time in Samoa and to make
+# consequential amendments to the position of the International Date
+# Line, and for related purposes.
+#
+# BE IT ENACTED by the Legislative Assembly of Samoa in Parliament
+# assembled as follows:
+#
+# 1. Short title and commencement-(1) This Act may be cited as the
+# International Date Line Act 2011. (2) Except for section 5(3) this Act
+# commences at 12 o'clock midnight, on Thursday 29th December 2011. (3)
+# Section 5(3) commences on the date of assent by the Head of State.
+#
+# [snip]
+#
+# 3. Interpretation - [snip] "Samoa standard time" in this Act and any
+# other statute of Samoa which refers to 'Samoa standard time' means the
+# time 13 hours in advance of Co-ordinated Universal Time.
+#
+# 4. Samoa standard time - (1) Upon the commencement of this Act, Samoa
+# standard time shall be set at 13 hours in advance of Co-ordinated
+# Universal Time for the whole of Samoa. (2) All references to Samoa's
+# time zone and to Samoa standard time in Samoa in all legislation and
+# instruments after the commencement of this Act shall be references to
+# Samoa standard time as provided for in this Act. (3) Nothing in this
+# Act affects the provisions of the Daylight Saving Act 2009, except that
+# it defines Samoa standard time....
+
+# From Laupue Raymond Hughes (2011-09-02):
+# 
+# http://www.mcil.gov.ws/mcil_publications.html
+# 
+#
+# here is the official website publication for Samoa DST and dateline change
+#
+# DST
+# Year	End	Time	Start	Time
+# 2011	- - -	- - -	24 September	3:00am to 4:00am
+# 2012	01 April	4:00am to 3:00am	- - -	- - -
+#
+# Dateline Change skip Friday 30th Dec 2011
+# Thursday 29th December 2011	23:59:59 Hours
+# Saturday 31st December 2011	00:00:00 Hours
+#
+# Clarification by Tim Parenti (2012-01-03):
+# Although Samoa has used Daylight Saving Time in the 2010-2011 and 2011-2012
+# seasons, there is not yet any indication that this trend will continue on
+# a regular basis. For now, we have explicitly listed the transitions below.
+#
+# From Nicky (2012-09-10):
+# Daylight Saving Time commences on Sunday 30th September 2012 and
+# ends on Sunday 7th of April 2013.
+#
+# Please find link below for more information.
+# http://www.mcil.gov.ws/mcil_publications.html
+#
+# That publication also includes dates for Summer of 2013/4 as well
+# which give the impression of a pattern in selecting dates for the
+# future, so for now, we will guess this will continue.
+
+# Western Samoa
+# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
+Rule	WS	2012	max	-	Sep	lastSun	3:00	1	D
+Rule	WS	2012	max	-	Apr	Sun>=1	4:00	0	-
+# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone Pacific/Apia	 12:33:04 -	LMT	1879 Jul  5
 			-11:26:56 -	LMT	1911
 			-11:30	-	SAMT	1950		# Samoa Time
 			-11:00	-	WST	2010 Sep 26
 			-11:00	1:00	WSDT	2011 Apr 2 4:00
-			-11:00	-	WST
+			-11:00	-	WST	2011 Sep 24 3:00
+			-11:00	1:00	WSDT	2011 Dec 30
+			 13:00	1:00	WSDT	2012 Apr Sun>=1 4:00
+			 13:00	WS	WS%sT
 
 # Solomon Is
 # excludes Bougainville, for which see Papua New Guinea
@@ -543,9 +701,28 @@ Zone Pacific/Guadalcanal 10:39:48 -	LMT	1912 Oct	# Honiara
 			11:00	-	SBT	# Solomon Is Time
 
 # Tokelau Is
+#
+# From Gwillim Law (2011-12-29)
+# A correspondent informed me that Tokelau, like Samoa, will be skipping
+# December 31 this year ...
+#
+# From Steffen Thorsen (2012-07-25)
+# ... we double checked by calling hotels and offices based in Tokelau asking
+# about the time there, and they all told a time that agrees with UTC+13....
+# Shanks says UTC-10 from 1901 [but] ... there is a good chance the change
+# actually was to UTC-11 back then.
+#
+# From Paul Eggert (2012-07-25)
+# A Google Books snippet of Appendix to the Journals of the House of
+# Representatives of New Zealand, Session 1948,
+# , page 65, says Tokelau
+# was "11 hours slow on G.M.T."  Go with Thorsen and assume Shanks & Pottenger
+# are off by an hour starting in 1901.
+
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Pacific/Fakaofo	-11:24:56 -	LMT	1901
-			-10:00	-	TKT	# Tokelau Time
+			-11:00	-	TKT 2011 Dec 30	# Tokelau Time
+			13:00	-	TKT
 
 # Tonga
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
@@ -572,7 +749,7 @@ Zone Pacific/Funafuti	11:56:52 -	LMT	1901
 # 1886-1891; Baker was similar but exact dates are not known.
 # Inhabited by civilians 1935-1942; U.S. military bases 1943-1944;
 # uninhabited thereafter.
-# Howland observed Hawaii Standard Time (UTC-10:30) in 1937;
+# Howland observed Hawaii Standard Time (UT-10:30) in 1937;
 # see page 206 of Elgen M. Long and Marie K. Long,
 # Amelia Earhart: the Mystery Solved, Simon & Schuster (2000).
 # So most likely Howland and Baker observed Hawaii Time from 1935
@@ -585,8 +762,17 @@ Zone Pacific/Funafuti	11:56:52 -	LMT	1901
 # no information; was probably like Pacific/Kiritimati
 
 # Johnston
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Pacific/Johnston	-10:00	-	HST
+#
+# From Paul Eggert (2013-09-03):
+# In his memoirs of June 6th to October 4, 1945
+#  (2005), Herbert C. Bach writes,
+# "We started our letdown to Kwajalein Atoll and landed there at 5:00 AM
+# Johnston time, 1:30 AM Kwajalein time."  This was in June 1945, and
+# confirms that Johnston kept the same time as Honolulu in summer 1945.
+# We have no better information, so for now, assume this has been true
+# indefinitely into the past.
+#
+# See 'northamerica' for Pacific/Johnston.
 
 # Kingman
 # uninhabited
@@ -642,9 +828,9 @@ Zone	Pacific/Wallis	12:15:20 -	LMT	1901
 
 # This data is by no means authoritative; if you think you know better,
 # go ahead and edit the file (and please send any changes to
-# tz@elsie.nci.nih.gov for general use in the future).
+# tz@iana.org for general use in the future).
 
-# From Paul Eggert (2006-03-22):
+# From Paul Eggert (2013-02-21):
 # A good source for time zone historical data outside the U.S. is
 # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
 # San Diego: ACS Publications, Inc. (2003).
@@ -662,6 +848,10 @@ Zone	Pacific/Wallis	12:15:20 -	LMT	1901
 # Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
 # I found in the UCLA library.
 #
+# For data circa 1899, a common source is:
+# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
+# .
+#
 # A reliable and entertaining source about time zones is
 # Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
 #
@@ -1206,7 +1396,7 @@ Zone	Pacific/Wallis	12:15:20 -	LMT	1901
 # Lord Howe Island Board (controlling authority for the Island) is
 # seeking the community's views on various options for summer time
 # arrangements on the Island, e.g. advance clocks by 1 full hour
-# instead of only 30 minutes.  Dependant on the wishes of residents
+# instead of only 30 minutes.  [Dependent] on the wishes of residents
 # the Board may approach the NSW government to change the existing
 # arrangements.  The starting date for summer time on the Island will
 # however always coincide with the rest of NSW.
@@ -1226,22 +1416,22 @@ Zone	Pacific/Wallis	12:15:20 -	LMT	1901
 # See "southeast Australia" above for 2008 and later.
 
 # From Steffen Thorsen (2009-04-28):
-# According to the official press release, South Australia's extended daylight 
-# saving period will continue with the same rules as used during the 2008-2009 
+# According to the official press release, South Australia's extended daylight
+# saving period will continue with the same rules as used during the 2008-2009
 # summer (southern hemisphere).
-# 
+#
 # From
 # 
 # http://www.safework.sa.gov.au/uploaded_files/DaylightDatesSet.pdf
 # 
-# The extended daylight saving period that South Australia has been trialling 
+# The extended daylight saving period that South Australia has been trialling
 # for over the last year is now set to be ongoing.
-# Daylight saving will continue to start on the first Sunday in October each 
+# Daylight saving will continue to start on the first Sunday in October each
 # year and finish on the first Sunday in April the following year.
-# Industrial Relations Minister, Paul Caica, says this provides South Australia 
-# with a consistent half hour time difference with NSW, Victoria, Tasmania and 
+# Industrial Relations Minister, Paul Caica, says this provides South Australia
+# with a consistent half hour time difference with NSW, Victoria, Tasmania and
 # the ACT for all 52 weeks of the year...
-# 
+#
 # We have a wrap-up here:
 # 
 # http://www.timeanddate.com/news/time/south-australia-extends-dst.html
@@ -1313,12 +1503,12 @@ Zone	Pacific/Wallis	12:15:20 -	LMT	1901
 # From Paul Eggert (2000-01-08):
 # IATA SSIM (1999-09) says DST ends 0100 local time.  Go with McDow.
 
-# From the BBC World Service (1998-10-31 11:32 UTC):
+# From the BBC World Service in
+# http://news.bbc.co.uk/2/hi/asia-pacific/205226.stm (1998-10-31 16:03 UTC):
 # The Fijiian government says the main reasons for the time change is to
-# improve productivity and reduce road accidents.  But correspondents say it
-# also hopes the move will boost Fiji's ability to compete with other pacific
-# islands in the effort to attract tourists to witness the dawning of the new
-# millenium.
+# improve productivity and reduce road accidents.... [T]he move is also
+# intended to boost Fiji's ability to attract tourists to witness the dawning
+# of the new millennium.
 
 # http://www.fiji.gov.fj/press/2000_09/2000_09_13-05.shtml (2000-09-13)
 # reports that Fiji has discontinued DST.
@@ -1332,7 +1522,7 @@ Zone	Pacific/Wallis	12:15:20 -	LMT	1901
 
 # From Paul Eggert (1996-01-22):
 # Today's _Wall Street Journal_ (page 1) reports that Kiribati
-# ``declared it the same day throught the country as of Jan. 1, 1995''
+# ``declared it the same day [throughout] the country as of Jan. 1, 1995''
 # as part of the competition to be first into the 21st century.
 
 
@@ -1463,7 +1653,7 @@ Zone	Pacific/Wallis	12:15:20 -	LMT	1901
 # Shanks & Pottenger say the transition was on 1968-10-01; go with Mundell.
 
 # From Eric Ulevik (1999-05-03):
-# Tonga's director of tourism, who is also secretary of the National Millenium
+# Tonga's director of tourism, who is also secretary of the National Millennium
 # Committee, has a plan to get Tonga back in front.
 # He has proposed a one-off move to tropical daylight saving for Tonga from
 # October to March, which has won approval in principle from the Tongan
diff --git a/src/timezone/data/backward b/src/timezone/data/backward
index f1f95a8941..06fb192eb1 100644
--- a/src/timezone/data/backward
+++ b/src/timezone/data/backward
@@ -1,5 +1,4 @@
 # 
-# @(#)backward	8.9
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
 
@@ -23,15 +22,17 @@ Link	America/Kentucky/Louisville	America/Louisville
 Link	America/Argentina/Mendoza	America/Mendoza
 Link	America/Rio_Branco	America/Porto_Acre
 Link	America/Argentina/Cordoba	America/Rosario
-Link	America/St_Thomas	America/Virgin
+Link	America/Denver		America/Shiprock
+Link	America/Port_of_Spain	America/Virgin
+Link	Pacific/Auckland	Antarctica/South_Pole
 Link	Asia/Ashgabat		Asia/Ashkhabad
+Link	Asia/Kolkata		Asia/Calcutta
 Link	Asia/Chongqing		Asia/Chungking
 Link	Asia/Dhaka		Asia/Dacca
 Link	Asia/Kathmandu		Asia/Katmandu
-Link	Asia/Kolkata		Asia/Calcutta
 Link	Asia/Macau		Asia/Macao
-Link	Asia/Jerusalem		Asia/Tel_Aviv
 Link	Asia/Ho_Chi_Minh	Asia/Saigon
+Link	Asia/Jerusalem		Asia/Tel_Aviv
 Link	Asia/Thimphu		Asia/Thimbu
 Link	Asia/Makassar		Asia/Ujung_Pandang
 Link	Asia/Ulaanbaatar	Asia/Ulan_Bator
@@ -89,10 +90,10 @@ Link	Pacific/Auckland	NZ
 Link	Pacific/Chatham		NZ-CHAT
 Link	America/Denver		Navajo
 Link	Asia/Shanghai		PRC
+Link	Pacific/Pohnpei		Pacific/Ponape
 Link	Pacific/Pago_Pago	Pacific/Samoa
-Link	Pacific/Chuuk		Pacific/Yap
 Link	Pacific/Chuuk		Pacific/Truk
-Link	Pacific/Pohnpei		Pacific/Ponape
+Link	Pacific/Chuuk		Pacific/Yap
 Link	Europe/Warsaw		Poland
 Link	Europe/Lisbon		Portugal
 Link	Asia/Taipei		ROC
diff --git a/src/timezone/data/etcetera b/src/timezone/data/etcetera
index f8eb4b58e6..9ba7f7bdd9 100644
--- a/src/timezone/data/etcetera
+++ b/src/timezone/data/etcetera
@@ -1,5 +1,4 @@
 # 
-# @(#)etcetera	8.3
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
 
@@ -32,9 +31,9 @@ Link	Etc/GMT				Etc/GMT0
 # even though this is the opposite of what many people expect.
 # POSIX has positive signs west of Greenwich, but many people expect
 # positive signs east of Greenwich.  For example, TZ='Etc/GMT+4' uses
-# the abbreviation "GMT+4" and corresponds to 4 hours behind UTC
+# the abbreviation "GMT+4" and corresponds to 4 hours behind UT
 # (i.e. west of Greenwich) even though many people would expect it to
-# mean 4 hours ahead of UTC (i.e. east of Greenwich).
+# mean 4 hours ahead of UT (i.e. east of Greenwich).
 #
 # In the draft 5 of POSIX 1003.1-200x, the angle bracket notation allows for
 # TZ='+4'; if you want time zone abbreviations conforming to
diff --git a/src/timezone/data/europe b/src/timezone/data/europe
index 221b8504ad..553735e5cc 100644
--- a/src/timezone/data/europe
+++ b/src/timezone/data/europe
@@ -1,11 +1,10 @@
 # 
-# @(#)europe	8.31
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
 
 # This data is by no means authoritative; if you think you know better,
 # go ahead and edit the file (and please send any changes to
-# tz@elsie.nci.nih.gov for general use in the future).
+# tz@iana.org for general use in the future).
 
 # From Paul Eggert (2006-03-22):
 # A good source for time zone historical data outside the U.S. is
@@ -31,13 +30,19 @@
 #	William Willett, The Waste of Daylight, 19th edition
 #	 (1914-03)
 #
+#	Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
+#	.  He writes:
+#	"It is requested that corrections and additions to these tables
+#	may be sent to Mr. John Milne, Royal Geographical Society,
+#	Savile Row, London."  Nowadays please email them to tz@iana.org.
+#
 #	Brazil's Departamento Servico da Hora (DSH),
 #	
 #	History of Summer Time
 #	 (1998-09-21, in Portuguese)
 
 #
-# I invented the abbreviations marked `*' in the following table;
+# I invented the abbreviations marked '*' in the following table;
 # the rest are from earlier versions of this file, or from other sources.
 # Corrections are welcome!
 #                   std dst  2dst
@@ -91,7 +96,7 @@
 # and a sketch map showing some of the sightlines involved. One paragraph
 # of the text said:
 #
-# `An old stone obelisk marking a forgotten terrestrial meridian stands
+# 'An old stone obelisk marking a forgotten terrestrial meridian stands
 # beside the river at Kew. In the 18th century, before time and longitude
 # was standardised by the Royal Observatory in Greenwich, scholars observed
 # this stone and the movement of stars from Kew Observatory nearby. They
@@ -135,7 +140,7 @@
 # From Paul Eggert (2003-09-27):
 # Summer Time was first seriously proposed by William Willett (1857-1915),
 # a London builder and member of the Royal Astronomical Society
-# who circulated a pamphlet ``The Waste of Daylight'' (1907)
+# who circulated a pamphlet "The Waste of Daylight" (1907)
 # that proposed advancing clocks 20 minutes on each of four Sundays in April,
 # and retarding them by the same amount on four Sundays in September.
 # A bill was drafted in 1909 and introduced in Parliament several times,
@@ -146,7 +151,7 @@
 # A monument to Willett was unveiled on 1927-05-21, in an open space in
 # a 45-acre wood near Chislehurst, Kent that was purchased by popular
 # subscription and open to the public.  On the south face of the monolith,
-# designed by G. W. Miller, is the the William Willett Memorial Sundial,
+# designed by G. W. Miller, is the...William Willett Memorial Sundial,
 # which is permanently set to Summer Time.
 
 # From Winston Churchill (1934-04-28):
@@ -160,10 +165,10 @@
 #	
 
 # From Paul Eggert (1996-09-03):
-# The OED Supplement says that the English originally said ``Daylight Saving''
+# The OED Supplement says that the English originally said "Daylight Saving"
 # when they were debating the adoption of DST in 1908; but by 1916 this
 # term appears only in quotes taken from DST's opponents, whereas the
-# proponents (who eventually won the argument) are quoted as using ``Summer''.
+# proponents (who eventually won the argument) are quoted as using "Summer".
 
 # From Arthur David Olson (1989-01-19):
 #
@@ -203,17 +208,23 @@
 # which could not be said to run counter to any official description.
 
 # From Paul Eggert (2000-10-02):
-# Howse writes (p 157) `DBST' too, but `BDST' seems to have been common
+# Howse writes (p 157) 'DBST' too, but 'BDST' seems to have been common
 # and follows the more usual convention of putting the location name first,
-# so we use `BDST'.
+# so we use 'BDST'.
 
 # Peter Ilieve (1998-04-19) described at length
 # the history of summer time legislation in the United Kingdom.
 # Since 1998 Joseph S. Myers has been updating
 # and extending this list, which can be found in
-# 
+# http://student.cusu.cam.ac.uk/~jsm28/british-time/
+# 
 # History of legal time in Britain
 # 
+# Rob Crowther (2012-01-04) reports that that URL no longer
+# exists, and the article can now be found at:
+# 
+# http://www.polyomino.org.uk/british-time/
+# 
 
 # From Joseph S. Myers (1998-01-06):
 #
@@ -420,6 +431,8 @@ Rule	GB-Eire 1981	1989	-	Oct	Sun>=23	1:00u	0	GMT
 Rule	GB-Eire 1990	1995	-	Oct	Sun>=22	1:00u	0	GMT
 # Summer Time Order 1997 (S.I. 1997/2982)
 # See EU for rules starting in 1996.
+#
+# Use Europe/London for Jersey, Guernsey, and the Isle of Man.
 
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Europe/London	-0:01:15 -	LMT	1847 Dec  1 0:00s
@@ -512,7 +525,7 @@ Rule	C-Eur	1944	only	-	Oct	 2	 2:00s	0	-
 # It seems that Paris, Monaco, Rule France, Rule Belgium all agree on
 # 2:00 standard time, e.g. 3:00 local time.  However there are no
 # countries that use C-Eur rules in September 1945, so the only items
-# affected are apparently these ficticious zones that translates acronyms
+# affected are apparently these fictitious zones that translate acronyms
 # CET and MET:
 #
 # Zone CET  1:00 C-Eur CE%sT
@@ -561,9 +574,28 @@ Rule	Russia	1985	1991	-	Mar	lastSun	 2:00s	1:00	S
 #
 Rule	Russia	1992	only	-	Mar	lastSat	 23:00	1:00	S
 Rule	Russia	1992	only	-	Sep	lastSat	 23:00	0	-
-Rule	Russia	1993	max	-	Mar	lastSun	 2:00s	1:00	S
+Rule	Russia	1993	2010	-	Mar	lastSun	 2:00s	1:00	S
 Rule	Russia	1993	1995	-	Sep	lastSun	 2:00s	0	-
-Rule	Russia	1996	max	-	Oct	lastSun	 2:00s	0	-
+Rule	Russia	1996	2010	-	Oct	lastSun	 2:00s	0	-
+
+# From Alexander Krivenyshev (2011-06-14):
+# According to Kremlin press service, Russian President Dmitry Medvedev
+# signed a federal law "On calculation of time" on June 9, 2011.
+# According to the law Russia is abolishing daylight saving time.
+#
+# Medvedev signed a law "On the Calculation of Time" (in russian):
+# 
+# http://bmockbe.ru/events/?ID=7583
+# 
+#
+# Medvedev signed a law on the calculation of the time (in russian):
+# 
+# http://www.regnum.ru/news/polit/1413906.html
+# 
+
+# From Arthur David Olson (2011-06-15):
+# Take "abolishing daylight saving time" to mean that time is now considered
+# to be standard.
 
 # These are for backward compatibility with older versions.
 
@@ -642,6 +674,8 @@ Zone	Europe/Andorra	0:06:04 -	LMT	1901
 
 # Austria
 
+# Milne says Vienna time was 1:05:21.
+
 # From Paul Eggert (2006-03-22): Shanks & Pottenger give 1918-06-16 and
 # 1945-11-18, but the Austrian Federal Office of Metrology and
 # Surveying (BEV) gives 1918-09-16 and for Vienna gives the "alleged"
@@ -659,7 +693,7 @@ Rule	Austria	1948	only	-	Apr	18	2:00s	1:00	S
 Rule	Austria	1980	only	-	Apr	 6	0:00	1:00	S
 Rule	Austria	1980	only	-	Sep	28	0:00	0	-
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Vienna	1:05:20 -	LMT	1893 Apr
+Zone	Europe/Vienna	1:05:21 -	LMT	1893 Apr
 			1:00	C-Eur	CE%sT	1920
 			1:00	Austria	CE%sT	1940 Apr  1 2:00s
 			1:00	C-Eur	CE%sT	1945 Apr  2 2:00s
@@ -669,6 +703,23 @@ Zone	Europe/Vienna	1:05:20 -	LMT	1893 Apr
 			1:00	EU	CE%sT
 
 # Belarus
+# From Yauhen Kharuzhy (2011-09-16):
+# By latest Belarus government act Europe/Minsk timezone was changed to
+# GMT+3 without DST (was GMT+2 with DST).
+#
+# Sources (Russian language):
+# 1.
+# 
+# http://www.belta.by/ru/all_news/society/V-Belarusi-otmenjaetsja-perexod-na-sezonnoe-vremja_i_572952.html
+# 
+# 2.
+# 
+# http://naviny.by/rubrics/society/2011/09/16/ic_articles_116_175144/
+# 
+# 3.
+# 
+# http://news.tut.by/society/250578.html
+# 
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Europe/Minsk	1:50:16 -	LMT	1880
 			1:50	-	MMT	1924 May 2 # Minsk Mean Time
@@ -680,7 +731,8 @@ Zone	Europe/Minsk	1:50:16 -	LMT	1880
 			2:00	1:00	EEST	1991 Sep 29 2:00s
 			2:00	-	EET	1992 Mar 29 0:00s
 			2:00	1:00	EEST	1992 Sep 27 0:00s
-			2:00	Russia	EE%sT
+			2:00	Russia	EE%sT	2011 Mar 27 2:00s
+			3:00	-	FET # Further-eastern European Time
 
 # Belgium
 #
@@ -747,7 +799,7 @@ Zone	Europe/Brussels	0:17:30 -	LMT	1880
 			1:00	EU	CE%sT
 
 # Bosnia and Herzegovina
-# see Serbia
+# See Europe/Belgrade.
 
 # Bulgaria
 #
@@ -775,10 +827,10 @@ Zone	Europe/Sofia	1:33:16 -	LMT	1880
 			2:00	EU	EE%sT
 
 # Croatia
-# see Serbia
+# See Europe/Belgrade.
 
 # Cyprus
-# Please see the `asia' file for Asia/Nicosia.
+# Please see the 'asia' file for Asia/Nicosia.
 
 # Czech Republic
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
@@ -795,6 +847,7 @@ Zone	Europe/Prague	0:57:44 -	LMT	1850
 			1:00	C-Eur	CE%sT	1944 Sep 17 2:00s
 			1:00	Czech	CE%sT	1979
 			1:00	EU	CE%sT
+# Use Europe/Prague also for Slovakia.
 
 # Denmark, Faroe Islands, and Greenland
 
@@ -958,12 +1011,12 @@ Zone America/Thule	-4:35:08 -	LMT	1916 Jul 28 # Pituffik air base
 # From Peter Ilieve (1996-10-28):
 # [IATA SSIM (1992/1996) claims that the Baltic republics switch at 01:00s,
 # but a relative confirms that Estonia still switches at 02:00s, writing:]
-# ``I do not [know] exactly but there are some little different
+# "I do not [know] exactly but there are some little different
 # (confusing) rules for International Air and Railway Transport Schedules
 # conversion in Sunday connected with end of summer time in Estonia....
 # A discussion is running about the summer time efficiency and effect on
 # human physiology.  It seems that Estonia maybe will not change to
-# summer time next spring.''
+# summer time next spring."
 
 # From Peter Ilieve (1998-11-04), heavily edited:
 # 
@@ -1018,7 +1071,7 @@ Zone	Europe/Tallinn	1:39:00	-	LMT	1880
 # Well, here in Helsinki we're just changing from summer time to regular one,
 # and it's supposed to change at 4am...
 
-# From Janne Snabb (2010-0715):
+# From Janne Snabb (2010-07-15):
 #
 # I noticed that the Finland data is not accurate for years 1981 and 1982.
 # During these two first trial years the DST adjustment was made one hour
@@ -1075,7 +1128,7 @@ Link	Europe/Helsinki	Europe/Mariehamn
 
 
 #
-# Shank & Pottenger seem to use `24:00' ambiguously; resolve it with Whitman.
+# Shank & Pottenger seem to use '24:00' ambiguously; resolve it with Whitman.
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	France	1916	only	-	Jun	14	23:00s	1:00	S
 Rule	France	1916	1919	-	Oct	Sun>=1	23:00s	0	-
@@ -1114,10 +1167,10 @@ Rule	France	1940	only	-	Feb	25	 2:00	1:00	S
 # write that they were used in Monaco and in many French locations.
 # Le Corre writes that the upper limit of the free zone was Arneguy, Orthez,
 # Mont-de-Marsan, Bazas, Langon, Lamotte-Montravel, Marouil, La
-# Rochefoucault, Champagne-Mouton, La Roche-Posay, La Haye-Decartes,
+# Rochefoucault, Champagne-Mouton, La Roche-Posay, La Haye-Descartes,
 # Loches, Montrichard, Vierzon, Bourges, Moulins, Digoin,
 # Paray-le-Monial, Montceau-les-Mines, Chalons-sur-Saone, Arbois,
-# Dole, Morez, St-Claude, and Collognes (Haute-Savioe).
+# Dole, Morez, St-Claude, and Collonges (Haute-Savoie).
 Rule	France	1941	only	-	May	 5	 0:00	2:00	M # Midsummer
 # Shanks & Pottenger say this transition occurred at Oct 6 1:00,
 # but go with Denis Excoffier (1997-12-12),
@@ -1197,6 +1250,21 @@ Zone	Europe/Berlin	0:53:28 -	LMT	1893 Apr
 			1:00	Germany	CE%sT	1980
 			1:00	EU	CE%sT
 
+# From Tobias Conradi (2011-09-12):
+# Busingen , surrounded by the Swiss canton
+# Schaffhausen, did not start observing DST in 1980 as the rest of DE
+# (West Germany at that time) and DD (East Germany at that time) did.
+# DD merged into DE, the area is currently covered by code DE in ISO 3166-1,
+# which in turn is covered by the zone Europe/Berlin.
+#
+# Source for the time in Busingen 1980:
+# http://www.srf.ch/player/video?id=c012c029-03b7-4c2b-9164-aa5902cd58d3
+
+# From Arthur David Olson (2012-03-03):
+# Busingen and Zurich have shared clocks since 1970.
+
+Link	Europe/Zurich	Europe/Busingen
+
 # Georgia
 # Please see the "asia" file for Asia/Tbilisi.
 # Herodotus (Histories, IV.45) says Georgia north of the Phasis (now Rioni)
@@ -1350,7 +1418,7 @@ Zone Atlantic/Reykjavik	-1:27:24 -	LMT	1837
 # 
 # Day-light Saving Time in Italy (2006-02-03)
 # 
-# (`FP' below), taken from an Italian National Electrotechnical Institute
+# ('FP' below), taken from an Italian National Electrotechnical Institute
 # publication. When the three sources disagree, guess who's right, as follows:
 #
 # year	FP	Shanks&P. (S)	Whitman (W)	Go with:
@@ -1496,10 +1564,22 @@ Zone	Europe/Riga	1:36:24	-	LMT	1880
 			2:00	EU	EE%sT
 
 # Liechtenstein
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Vaduz	0:38:04 -	LMT	1894 Jun
-			1:00	-	CET	1981
-			1:00	EU	CE%sT
+
+# From Paul Eggert (2013-09-09):
+# Shanks & Pottenger say Vaduz is like Zurich.
+
+# From Alois Treindl (2013-09-18):
+# http://www.eliechtensteinensia.li/LIJ/1978/1938-1978/1941.pdf
+# ... confirms on p. 6 that Liechtenstein followed Switzerland in 1941 and 1942.
+# I ... translate only the last two paragraphs:
+#    ... during second world war, in the years 1941 and 1942, Liechtenstein
+#    introduced daylight saving time, adapting to Switzerland.  From 1943 on
+#    central European time was in force throughout the year.
+#    From a report of the duke's government to the high council,
+#    regarding the introduction of a time law, of 31 May 1977.
+
+Link Europe/Zurich Europe/Vaduz
+
 
 # Lithuania
 
@@ -1587,7 +1667,7 @@ Zone Europe/Luxembourg	0:24:36 -	LMT	1904 Jun
 			1:00	EU	CE%sT
 
 # Macedonia
-# see Serbia
+# See Europe/Belgrade.
 
 # Malta
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
@@ -1618,6 +1698,41 @@ Zone	Europe/Malta	0:58:04 -	LMT	1893 Nov  2 0:00s # Valletta
 # But [two people] separately reported via
 # Jesper Norgaard that as of 2001-01-24 Tiraspol was like Chisinau.
 # The Tiraspol entry has therefore been removed for now.
+#
+# From Alexander Krivenyshev (2011-10-17):
+# Pridnestrovian Moldavian Republic (PMR, also known as
+# "Pridnestrovie") has abolished seasonal clock change (no transition
+# to the Winter Time).
+#
+# News (in Russian):
+# 
+# http://www.kyivpost.ua/russia/news/pridnestrove-otkazalos-ot-perehoda-na-zimnee-vremya-30954.html
+# 
+#
+# 
+# http://www.allmoldova.com/moldova-news/1249064116.html
+# 
+#
+# The substance of this change (reinstatement of the Tiraspol entry)
+# is from a patch from Petr Machata (2011-10-17)
+#
+# From Tim Parenti (2011-10-19)
+# In addition, being situated at +4651+2938 would give Tiraspol
+# a pre-1880 LMT offset of 1:58:32.
+#
+# (which agrees with the earlier entry that had been removed)
+#
+# From Alexander Krivenyshev (2011-10-26)
+# NO need to divide Moldova into two timezones at this point.
+# As of today, Transnistria (Pridnestrovie)- Tiraspol reversed its own
+# decision to abolish DST this winter.
+# Following Moldova and neighboring Ukraine- Transnistria (Pridnestrovie)-
+# Tiraspol will go back to winter time on October 30, 2011.
+# News from Moldova (in russian):
+# 
+# http://ru.publika.md/link_317061.html
+# 
+
 
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Europe/Chisinau	1:55:20 -	LMT	1880
@@ -1645,7 +1760,7 @@ Zone	Europe/Monaco	0:29:32 -	LMT	1891 Mar 15
 			1:00	EU	CE%sT
 
 # Montenegro
-# see Serbia
+# See Europe/Belgrade.
 
 # Netherlands
 
@@ -1760,7 +1875,7 @@ Zone	Europe/Oslo	0:43:00 -	LMT	1895 Jan  1
 # before 1895, and therefore probably changed the local time somewhere
 # between 1895 and 1925 (inclusive).
 
-# From Paul Eggert (2001-05-01):
+# From Paul Eggert (2013-09-04):
 #
 # Actually, Jan Mayen was never occupied by Germany during World War II,
 # so it must have diverged from Oslo time during the war, as Oslo was
@@ -1771,7 +1886,7 @@ Zone	Europe/Oslo	0:43:00 -	LMT	1895 Jan  1
 # 1941 with a small Norwegian garrison and continued operations despite
 # frequent air ttacks from Germans.  In 1943 the Americans established a
 # radiolocating station on the island, called "Atlantic City".  Possibly
-# the UTC offset changed during the war, but I think it unlikely that
+# the UT offset changed during the war, but I think it unlikely that
 # Jan Mayen used German daylight-saving rules.
 #
 # Svalbard is more complicated, as it was raided in August 1941 by an
@@ -1784,9 +1899,8 @@ Zone	Europe/Oslo	0:43:00 -	LMT	1895 Jan  1
 # the German armed forces at the Svalbard weather station code-named
 # Haudegen did not surrender to the Allies until September 1945.
 #
-# All these events predate our cutoff date of 1970.  Unless we can
-# come up with more definitive info about the timekeeping during the
-# war years it's probably best just do do the following for now:
+# All these events predate our cutoff date of 1970, so use Europe/Oslo
+# for these regions.
 Link	Europe/Oslo	Arctic/Longyearbyen
 
 # Poland
@@ -1966,6 +2080,70 @@ Zone Europe/Bucharest	1:44:24 -	LMT	1891 Oct
 
 # Russia
 
+# From Alexander Krivenyshev (2011-09-15):
+# Based on last Russian Government Decree # 725 on August 31, 2011
+# (Government document
+# 
+# http://www.government.ru/gov/results/16355/print/
+# 
+# in Russian)
+# there are few corrections have to be made for some Russian time zones...
+# All updated Russian Time Zones were placed in table and translated to English
+# by WorldTimeZone.com at the link below:
+# 
+# http://www.worldtimezone.com/dst_news/dst_news_russia36.htm
+# 
+
+# From Sanjeev Gupta (2011-09-27):
+# Scans of [Decree #23 of January 8, 1992] are available at:
+# 
+# http://government.consultant.ru/page.aspx?1223966
+# They are in Cyrillic letters (presumably Russian).
+
+# From Arthur David Olson (2012-05-09):
+# Regarding the instant when clocks in time-zone-shifting parts of Russia
+# changed in September 2011:
+#
+# One source is
+# < a href="http://government.ru/gov/results/16355/>
+# http://government.ru/gov/results/16355/
+# 
+# which, according to translate.google.com, begins "Decree of August 31,
+# 2011 No 725" and contains no other dates or "effective date" information.
+#
+# Another source is
+# 
+# http://www.rg.ru/2011/09/06/chas-zona-dok.html
+# 
+# which, according to translate.google.com, begins "Resolution of the
+# Government of the Russian Federation on August 31, 2011 N 725" and also
+# contains "Date first official publication: September 6, 2011 Posted on:
+# in the 'RG' - Federal Issue number 5573 September 6, 2011" but which
+# does not contain any "effective date" information.
+#
+# Another source is
+# 
+# http://en.wikipedia.org/wiki/Oymyakonsky_District#cite_note-RuTime-7
+# 
+# which, in note 8, contains "Resolution #725 of August 31, 2011...
+# Effective as of after 7 days following the day of the official publication"
+# but which does not contain any reference to September 6, 2011.
+#
+# The Wikipedia article refers to
+# 
+# http://base.consultant.ru/cons/cgi/online.cgi?req=doc;base=LAW;n=118896
+# 
+# which seems to copy the text of the government.ru page.
+#
+# Tobias Conradi combines Wikipedia's
+# "as of after 7 days following the day of the official publication"
+# with www.rg.ru's "Date of first official publication: September 6, 2011" to get
+# September 13, 2011 as the cutover date (unusually, a Tuesday, as Tobias Conradi notes).
+#
+# None of the sources indicates a time of day for changing clocks.
+#
+# Go with 2011-09-13 0:00s.
+
 # From Paul Eggert (2006-03-22):
 # Except for Moscow after 1919-07-01, I invented the time zone abbreviations.
 # Moscow time zone abbreviations after 1919-07-01, and Moscow rules after 1991,
@@ -1980,7 +2158,7 @@ Zone Europe/Bucharest	1:44:24 -	LMT	1891 Oct
 # so we (Novosibirsk) simply did not switch.
 #
 # From Andrey A. Chernov (1996-10-04):
-# `MSK' and `MSD' were born and used initially on Moscow computers with
+# 'MSK' and 'MSD' were born and used initially on Moscow computers with
 # UNIX-like OSes by several developer groups (e.g. Demos group, Kiae group)....
 # The next step was the UUCP network, the Relcom predecessor
 # (used mainly for mail), and MSK/MSD was actively used there.
@@ -2013,7 +2191,8 @@ Zone Europe/Kaliningrad	 1:22:00 -	LMT	1893 Apr
 			 1:00	C-Eur	CE%sT	1945
 			 2:00	Poland	CE%sT	1946
 			 3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
-			 2:00	Russia	EE%sT
+			 2:00	Russia	EE%sT	2011 Mar 27 2:00s
+			 3:00	-	FET # Further-eastern European Time
 #
 # From Oscar van Vlijmen (2001-08-25): [This region consists of]
 # Respublika Adygeya, Arkhangel'skaya oblast',
@@ -2042,7 +2221,8 @@ Zone Europe/Moscow	 2:30:20 -	LMT	1880
 			 2:00	-	EET	1930 Jun 21
 			 3:00	Russia	MSK/MSD	1991 Mar 31 2:00s
 			 2:00	Russia	EE%sT	1992 Jan 19 2:00s
-			 3:00	Russia	MSK/MSD
+			 3:00	Russia	MSK/MSD	2011 Mar 27 2:00s
+			 4:00	-	MSK
 #
 # Astrakhanskaya oblast', Kirovskaya oblast', Saratovskaya oblast',
 # Volgogradskaya oblast'.  Shanks & Pottenger say Kirov is still at +0400
@@ -2055,7 +2235,8 @@ Zone Europe/Volgograd	 2:57:40 -	LMT	1920 Jan  3
 			 4:00	Russia	VOL%sT	1989 Mar 26 2:00s # Volgograd T
 			 3:00	Russia	VOL%sT	1991 Mar 31 2:00s
 			 4:00	-	VOLT	1992 Mar 29 2:00s
-			 3:00	Russia	VOL%sT
+			 3:00	Russia	VOL%sT	2011 Mar 27 2:00s
+			 4:00	-	VOLT
 #
 # From Oscar van Vlijmen (2001-08-25): [This region consists of]
 # Samarskaya oblast', Udmyrtskaya respublika
@@ -2067,7 +2248,8 @@ Zone Europe/Samara	 3:20:36 -	LMT	1919 Jul  1 2:00
 			 2:00	Russia	KUY%sT	1991 Sep 29 2:00s
 			 3:00	-	KUYT	1991 Oct 20 3:00
 			 4:00	Russia	SAM%sT	2010 Mar 28 2:00s # Samara Time
-			 3:00	Russia	SAM%sT
+			 3:00	Russia	SAM%sT	2011 Mar 27 2:00s
+			 4:00	-	SAMT
 
 #
 # From Oscar van Vlijmen (2001-08-25): [This region consists of]
@@ -2080,7 +2262,8 @@ Zone Asia/Yekaterinburg	 4:02:24 -	LMT	1919 Jul 15 4:00
 			 4:00	-	SVET	1930 Jun 21 # Sverdlovsk Time
 			 5:00	Russia	SVE%sT	1991 Mar 31 2:00s
 			 4:00	Russia	SVE%sT	1992 Jan 19 2:00s
-			 5:00	Russia	YEK%sT	# Yekaterinburg Time
+			 5:00	Russia	YEK%sT	2011 Mar 27 2:00s
+			 6:00	-	YEKT	# Yekaterinburg Time
 #
 # From Oscar van Vlijmen (2001-08-25): [This region consists of]
 # Respublika Altaj, Altajskij kraj, Omskaya oblast'.
@@ -2088,7 +2271,8 @@ Zone Asia/Omsk		 4:53:36 -	LMT	1919 Nov 14
 			 5:00	-	OMST	1930 Jun 21 # Omsk TIme
 			 6:00	Russia	OMS%sT	1991 Mar 31 2:00s
 			 5:00	Russia	OMS%sT	1992 Jan 19 2:00s
-			 6:00	Russia	OMS%sT
+			 6:00	Russia	OMS%sT	2011 Mar 27 2:00s
+			 7:00	-	OMST
 #
 # From Paul Eggert (2006-08-19): I'm guessing about Tomsk here; it's
 # not clear when it switched from +7 to +6.
@@ -2098,7 +2282,8 @@ Zone Asia/Novosibirsk	 5:31:40 -	LMT	1919 Dec 14 6:00
 			 7:00	Russia	NOV%sT	1991 Mar 31 2:00s
 			 6:00	Russia	NOV%sT	1992 Jan 19 2:00s
 			 7:00	Russia	NOV%sT	1993 May 23 # say Shanks & P.
-			 6:00	Russia	NOV%sT
+			 6:00	Russia	NOV%sT	2011 Mar 27 2:00s
+			 7:00	-	NOVT
 
 # From Alexander Krivenyshev (2009-10-13):
 # Kemerovo oblast' (Kemerovo region) in Russia will change current time zone on
@@ -2131,7 +2316,8 @@ Zone Asia/Novokuznetsk	 5:48:48 -	NMT	1920 Jan  6
 			 7:00	Russia	KRA%sT	1991 Mar 31 2:00s
 			 6:00	Russia	KRA%sT	1992 Jan 19 2:00s
 			 7:00	Russia	KRA%sT	2010 Mar 28 2:00s
-			 6:00	Russia	NOV%sT # Novosibirsk/Novokuznetsk Time
+			 6:00	Russia	NOV%sT	2011 Mar 27 2:00s
+			 7:00	-	NOVT # Novosibirsk/Novokuznetsk Time
 
 #
 # From Oscar van Vlijmen (2001-08-25): [This region consists of]
@@ -2142,7 +2328,8 @@ Zone Asia/Krasnoyarsk	 6:11:20 -	LMT	1920 Jan  6
 			 6:00	-	KRAT	1930 Jun 21 # Krasnoyarsk Time
 			 7:00	Russia	KRA%sT	1991 Mar 31 2:00s
 			 6:00	Russia	KRA%sT	1992 Jan 19 2:00s
-			 7:00	Russia	KRA%sT
+			 7:00	Russia	KRA%sT	2011 Mar 27 2:00s
+			 8:00	-	KRAT
 #
 # From Oscar van Vlijmen (2001-08-25): [This region consists of]
 # Respublika Buryatiya, Irkutskaya oblast',
@@ -2152,14 +2339,15 @@ Zone Asia/Irkutsk	 6:57:20 -	LMT	1880
 			 7:00	-	IRKT	1930 Jun 21 # Irkutsk Time
 			 8:00	Russia	IRK%sT	1991 Mar 31 2:00s
 			 7:00	Russia	IRK%sT	1992 Jan 19 2:00s
-			 8:00	Russia	IRK%sT
+			 8:00	Russia	IRK%sT	2011 Mar 27 2:00s
+			 9:00	-	IRKT
 #
 # From Oscar van Vlijmen (2003-10-18): [This region consists of]
 # Aginskij Buryatskij avtonomnyj okrug, Amurskaya oblast',
 # [parts of] Respublika Sakha (Yakutiya), Chitinskaya oblast'.
 
 # From Oscar van Vlijmen (2009-11-29):
-# ...some regions of RUssia were merged with others since 2005...
+# ...some regions of [Russia] were merged with others since 2005...
 # Some names were changed, no big deal, except for one instance: a new name.
 # YAK/YAKST: UTC+9 Zabajkal'skij kraj.
 
@@ -2175,20 +2363,40 @@ Zone Asia/Yakutsk	 8:38:40 -	LMT	1919 Dec 15
 			 8:00	-	YAKT	1930 Jun 21 # Yakutsk Time
 			 9:00	Russia	YAK%sT	1991 Mar 31 2:00s
 			 8:00	Russia	YAK%sT	1992 Jan 19 2:00s
-			 9:00	Russia	YAK%sT
+			 9:00	Russia	YAK%sT	2011 Mar 27 2:00s
+			 10:00	-	YAKT
 #
 # From Oscar van Vlijmen (2003-10-18): [This region consists of]
 # Evrejskaya avtonomnaya oblast', Khabarovskij kraj, Primorskij kraj,
 # [parts of] Respublika Sakha (Yakutiya).
 
 # From Oscar van Vlijmen (2009-11-29):
-# The Sakha districts are: Bulunskij, Verkhoyanskij, Tomponskij, Ust'-Majskij,
-# Ust'-Yanskij.
+# The Sakha districts are: Bulunskij, Verkhoyanskij, ... Ust'-Yanskij.
 Zone Asia/Vladivostok	 8:47:44 -	LMT	1922 Nov 15
 			 9:00	-	VLAT	1930 Jun 21 # Vladivostok Time
 			10:00	Russia	VLA%sT	1991 Mar 31 2:00s
 			 9:00	Russia	VLA%sST	1992 Jan 19 2:00s
-			10:00	Russia	VLA%sT
+			10:00	Russia	VLA%sT	2011 Mar 27 2:00s
+			11:00	-	VLAT
+
+# From Arthur David Olson (2012-05-09):
+# Tomponskij and Ust'-Majskij switched from Vladivostok time to Yakutsk time
+# in 2011.
+#
+# From Paul Eggert (2012-11-25):
+# Shanks and Pottenger (2003) has Khandyga on Yakutsk time.
+# Make a wild guess that it switched to Vladivostok time in 2004.
+# This transition is no doubt wrong, but we have no better info.
+#
+Zone Asia/Khandyga	 9:02:13 -	LMT	1919 Dec 15
+			 8:00	-	YAKT	1930 Jun 21 # Yakutsk Time
+			 9:00	Russia	YAK%sT	1991 Mar 31 2:00s
+			 8:00	Russia	YAK%sT	1992 Jan 19 2:00s
+			 9:00	Russia	YAK%sT	2004
+			10:00	Russia	VLA%sT	2011 Mar 27 2:00s
+			11:00	-	VLAT	2011 Sep 13 0:00s # Decree 725?
+			10:00	-	YAKT
+
 #
 # Sakhalinskaya oblast'.
 # The Zone name should be Yuzhno-Sakhalinsk, but that's too long.
@@ -2198,7 +2406,8 @@ Zone Asia/Sakhalin	 9:30:48 -	LMT	1905 Aug 23
 			11:00	Russia	SAK%sT	1991 Mar 31 2:00s # Sakhalin T.
 			10:00	Russia	SAK%sT	1992 Jan 19 2:00s
 			11:00	Russia	SAK%sT	1997 Mar lastSun 2:00s
-			10:00	Russia	SAK%sT
+			10:00	Russia	SAK%sT	2011 Mar 27 2:00s
+			11:00	-	SAKT
 #
 # From Oscar van Vlijmen (2003-10-18): [This region consists of]
 # Magadanskaya oblast', Respublika Sakha (Yakutiya).
@@ -2206,13 +2415,26 @@ Zone Asia/Sakhalin	 9:30:48 -	LMT	1905 Aug 23
 
 # From Oscar van Vlijmen (2009-11-29):
 # The Sakha districts are: Abyjskij, Allaikhovskij, Verkhhhnekolymskij, Momskij,
-# Nizhnekolymskij, Ojmyakonskij, Srednekolymskij.
+# Nizhnekolymskij, ... Srednekolymskij.
 Zone Asia/Magadan	10:03:12 -	LMT	1924 May  2
 			10:00	-	MAGT	1930 Jun 21 # Magadan Time
 			11:00	Russia	MAG%sT	1991 Mar 31 2:00s
 			10:00	Russia	MAG%sT	1992 Jan 19 2:00s
-			11:00	Russia	MAG%sT
-#
+			11:00	Russia	MAG%sT	2011 Mar 27 2:00s
+			12:00	-	MAGT
+
+# From Arthur David Olson (2012-05-09):
+# Ojmyakonskij and the Kuril Islands switched from
+# Magadan time to Vladivostok time in 2011.
+Zone Asia/Ust-Nera	 9:32:54 -	LMT	1919 Dec 15
+			 8:00	-	YAKT	1930 Jun 21 # Yakutsk Time
+			 9:00	Russia	YAKT	1981 Apr  1
+			11:00	Russia	MAG%sT	1991 Mar 31 2:00s
+			10:00	Russia	MAG%sT	1992 Jan 19 2:00s
+			11:00	Russia	MAG%sT	2011 Mar 27 2:00s
+			12:00	-	MAGT	2011 Sep 13 0:00s # Decree 725?
+			11:00	-	VLAT
+
 # From Oscar van Vlijmen (2001-08-25): [This region consists of]
 # Kamchatskaya oblast', Koryakskij avtonomnyj okrug.
 #
@@ -2222,7 +2444,8 @@ Zone Asia/Kamchatka	10:34:36 -	LMT	1922 Nov 10
 			12:00	Russia	PET%sT	1991 Mar 31 2:00s
 			11:00	Russia	PET%sT	1992 Jan 19 2:00s
 			12:00	Russia	PET%sT	2010 Mar 28 2:00s
-			11:00	Russia	PET%sT
+			11:00	Russia	PET%sT	2011 Mar 27 2:00s
+			12:00	-	PETT
 #
 # Chukotskij avtonomnyj okrug
 Zone Asia/Anadyr	11:49:56 -	LMT	1924 May  2
@@ -2231,7 +2454,11 @@ Zone Asia/Anadyr	11:49:56 -	LMT	1924 May  2
 			12:00	Russia	ANA%sT	1991 Mar 31 2:00s
 			11:00	Russia	ANA%sT	1992 Jan 19 2:00s
 			12:00	Russia	ANA%sT	2010 Mar 28 2:00s
-			11:00	Russia	ANA%sT
+			11:00	Russia	ANA%sT	2011 Mar 27 2:00s
+			12:00	-	ANAT
+
+# San Marino
+# See Europe/Rome.
 
 # Serbia
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
@@ -2255,7 +2482,7 @@ Link Europe/Belgrade Europe/Zagreb	# Croatia
 Link Europe/Prague Europe/Bratislava
 
 # Slovenia
-# see Serbia
+# See Europe/Belgrade.
 
 # Spain
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
@@ -2389,7 +2616,7 @@ Zone Europe/Stockholm	1:12:12 -	LMT	1879 Jan  1
 # and their performance improved enormously.  Communities began to keep
 # mean time in preference to apparent time -- Geneva from 1780 ....
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-# From Whitman (who writes ``Midnight?''):
+# From Whitman (who writes "Midnight?"):
 # Rule	Swiss	1940	only	-	Nov	 2	0:00	1:00	S
 # Rule	Swiss	1940	only	-	Dec	31	0:00	0	-
 # From Shanks & Pottenger:
@@ -2434,23 +2661,53 @@ Zone Europe/Stockholm	1:12:12 -	LMT	1879 Jan  1
 # The 1940 rules must be deleted.
 #
 # One further detail for Switzerland, which is probably out of scope for
-# most users of tzdata:
-# The zone file
-# Zone    Europe/Zurich   0:34:08 -       LMT     1848 Sep 12
-#                          0:29:44 -       BMT     1894 Jun #Bern Mean Time
-#                          1:00    Swiss   CE%sT   1981
-#                          1:00    EU      CE%sT
+# most users of tzdata: The [Europe/Zurich zone] ...
 # describes all of Switzerland correctly, with the exception of
 # the Cantone Geneve (Geneva, Genf). Between 1848 and 1894 Geneve did not
 # follow Bern Mean Time but kept its own local mean time.
 # To represent this, an extra zone would be needed.
+#
+# From Alois Treindl (2013-09-11):
+# The Federal regulations say
+# http://www.admin.ch/opc/de/classified-compilation/20071096/index.html
+# ... the meridian for Bern mean time ... is 7 degrees 26'22.50".
+# Expressed in time, it is 0h29m45.5s.
+
+# From Pierre-Yves Berger (2013-09-11):
+# the "Circulaire du conseil federal" (December 11 1893)
+#  ...
+# clearly states that the [1894-06-01] change should be done at midnight
+# but if no one is present after 11 at night, could be postponed until one
+# hour before the beginning of service.
+
+# From Paul Eggert (2013-09-11):
+# Round BMT to the nearest even second, 0:29:46.
+#
+# We can find no reliable source for Shanks's assertion that all of Switzerland
+# except Geneva switched to Bern Mean Time at 00:00 on 1848-09-12.  This book:
+#
+#	Jakob Messerli. Gleichmassig, punktlich, schnell: Zeiteinteilung und
+#	Zeitgebrauch in der Schweiz im 19. Jahrhundert. Chronos, Zurich 1995,
+#	ISBN 3-905311-68-2, OCLC 717570797.
+#
+# suggests that the transition was more gradual, and that the Swiss did not
+# agree about civil time during the transition.  The timekeeping it gives the
+# most detail for is postal and telegraph time: here, federal legislation (the
+# "Bundesgesetz uber die Erstellung von elektrischen Telegraphen") passed on
+# 1851-11-23, and an official implementation notice was published 1853-07-16
+# (Bundesblatt 1853, Bd. II, S. 859).  On p 72 Messerli writes that in
+# practice since July 1853 Bernese time was used in "all postal and telegraph
+# offices in Switzerland from Geneva to St. Gallen and Basel to Chiasso"
+# (Google translation).  For now, model this transition as occurring on
+# 1853-07-16, though it probably occurred at some other date in Zurich, and
+# legal civil time probably changed at still some other transition date.
 
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Swiss	1941	1942	-	May	Mon>=1	1:00	1:00	S
 Rule	Swiss	1941	1942	-	Oct	Mon>=1	2:00	0	-
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Europe/Zurich	0:34:08 -	LMT	1848 Sep 12
-			0:29:44	-	BMT	1894 Jun # Bern Mean Time
+Zone	Europe/Zurich	0:34:08 -	LMT	1853 Jul 16 # See above comment.
+			0:29:46	-	BMT	1894 Jun # Bern Mean Time
 			1:00	Swiss	CE%sT	1981
 			1:00	EU	CE%sT
 
@@ -2484,18 +2741,22 @@ Zone	Europe/Zurich	0:34:08 -	LMT	1848 Sep 12
 # http://www.alomaliye.com/bkk_2002_3769.htm
 
 # From Gökdeniz Karadağ (2011-03-10):
-# 
+#
 # According to the articles linked below, Turkey will change into summer
 # time zone (GMT+3) on March 28, 2011 at 3:00 a.m. instead of March 27.
 # This change is due to a nationwide exam on 27th.
-# 
-# 
 # http://www.worldbulletin.net/?aType=haber&ArticleID=70872
-# 
 # Turkish:
-# 
 # http://www.hurriyet.com.tr/ekonomi/17230464.asp?gid=373
-# 
+
+# From Faruk Pasin (2014-02-14):
+# The DST for Turkey has been changed for this year because of the
+# Turkish Local election....
+# http://www.sabah.com.tr/Ekonomi/2014/02/12/yaz-saatinde-onemli-degisiklik
+# ... so Turkey will move clocks forward one hour on March 31 at 3:00 a.m.
+# From Paul Eggert (2014-02-17):
+# Here is an English-language source:
+# http://www.worldbulletin.net/turkey/129016/turkey-switches-to-daylight-saving-time-march-31
 
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Turkey	1916	only	-	May	 1	0:00	1:00	S
@@ -2564,19 +2825,80 @@ Zone	Europe/Istanbul	1:55:52 -	LMT	1880
 			2:00	Turkey	EE%sT	2007
 			2:00	EU	EE%sT	2011 Mar 27 1:00u
 			2:00	-	EET	2011 Mar 28 1:00u
+			2:00	EU	EE%sT	2014 Mar 30 1:00u
+			2:00	-	EET	2014 Mar 31 1:00u
 			2:00	EU	EE%sT
 Link	Europe/Istanbul	Asia/Istanbul	# Istanbul is in both continents.
 
 # Ukraine
 #
-# From Igor Karpov, who works for the Ukranian Ministry of Justice,
+# From Igor Karpov, who works for the Ukrainian Ministry of Justice,
 # via Garrett Wollman (2003-01-27):
-# BTW, I've found the official document on this matter. It's goverment
+# BTW, I've found the official document on this matter. It's government
 # regulations number 509, May 13, 1996. In my poor translation it says:
 # "Time in Ukraine is set to second timezone (Kiev time). Each last Sunday
 # of March at 3am the time is changing to 4am and each last Sunday of
 # October the time at 4am is changing to 3am"
 
+# From Alexander Krivenyshev (2011-09-20):
+# On September 20, 2011 the deputies of the Verkhovna Rada agreed to
+# abolish the transfer clock to winter time.
+#
+# Bill number 8330 of MP from the Party of Regions Oleg Nadoshi got
+# approval from 266 deputies.
+#
+# Ukraine abolishes transter back to the winter time (in Russian)
+# http://news.mail.ru/politics/6861560/
+#
+# The Ukrainians will no longer change the clock (in Russian)
+# http://www.segodnya.ua/news/14290482.html
+#
+# Deputies cancelled the winter time (in Russian)
+# http://www.pravda.com.ua/rus/news/2011/09/20/6600616/
+#
+# From Philip Pizzey (2011-10-18):
+# Today my Ukrainian colleagues have informed me that the
+# Ukrainian parliament have decided that they will go to winter
+# time this year after all.
+#
+# From Udo Schwedt (2011-10-18):
+# As far as I understand, the recent change to the Ukrainian time zone
+# (Europe/Kiev) to introduce permanent daylight saving time (similar
+# to Russia) was reverted today:
+# http://portal.rada.gov.ua/rada/control/en/publish/article/info_left?art_id=287324&cat_id=105995
+#
+# Also reported by Alexander Bokovoy (2011-10-18) who also noted:
+# The law documents themselves are at
+# http://w1.c1.rada.gov.ua/pls/zweb_n/webproc4_1?id=&pf3511=41484
+
+# From Vladimir in Moscow via Alois Treindl re Kiev time 1991/2 (2014-02-28):
+# First in Ukraine they changed Time zone from UTC+3 to UTC+2 with DST:
+#       03 25 1990 02:00 -03.00 1       Time Zone 3 with DST
+#       07 01 1990 02:00 -02.00 1       Time Zone 2 with DST
+# * Ukrainian Government's Resolution of 18.06.1990, No. 134.
+# http://search.ligazakon.ua/l_doc2.nsf/link1/T001500.html
+#
+# They did not end DST in September, 1990 (according to the law,
+# "summer time" was still in action):
+#       09 30 1990 03:00 -02.00 1       Time Zone 2 with DST
+# * Ukrainian Government's Resolution of 21.09.1990, No. 272.
+# http://search.ligazakon.ua/l_doc2.nsf/link1/KP900272.html
+#
+# Again no change in March, 1991 ("summer time" in action):
+#       03 31 1991 02:00 -02.00 1       Time Zone 2 with DST
+#
+# DST ended in September 1991 ("summer time" ended):
+#       09 29 1991 03:00 -02.00 0       Time Zone 2, no DST
+# * Ukrainian Government's Resolution of 25.09.1991, No. 225.
+# http://www.uazakon.com/documents/date_21/pg_iwgdoc.htm
+# This is an answer.
+#
+# Since 1992 they had normal DST procedure:
+#       03 29 1992 02:00 -02.00 1       DST started
+#       09 27 1992 03:00 -02.00 0       DST ended
+# * Ukrainian Government's Resolution of 20.03.1992, No. 139.
+# http://www.uazakon.com/documents/date_8u/pg_grcasa.htm
+
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 # Most of Ukraine since 1970 has been like Kiev.
 # "Kyiv" is the transliteration of the Ukrainian name, but
@@ -2586,9 +2908,8 @@ Zone Europe/Kiev	2:02:04 -	LMT	1880
 			2:00	-	EET	1930 Jun 21
 			3:00	-	MSK	1941 Sep 20
 			1:00	C-Eur	CE%sT	1943 Nov  6
-			3:00	Russia	MSK/MSD	1990
-			3:00	-	MSK	1990 Jul  1 2:00
-			2:00	-	EET	1992
+			3:00	Russia	MSK/MSD	1990 Jul  1 2:00
+			2:00	1:00	EEST	1991 Sep 29 3:00
 			2:00	E-Eur	EE%sT	1995
 			2:00	EU	EE%sT
 # Ruthenia used CET 1990/1991.
@@ -2630,7 +2951,7 @@ Zone Europe/Simferopol	2:16:24 -	LMT	1880
 # From Paul Eggert (2006-03-22):
 # The _Economist_ (1994-05-28, p 45) reports that central Crimea switched
 # from Kiev to Moscow time sometime after the January 1994 elections.
-# Shanks (1999) says ``date of change uncertain'', but implies that it happened
+# Shanks (1999) says "date of change uncertain", but implies that it happened
 # sometime between the 1994 DST switches.  Shanks & Pottenger simply say
 # 1994-09-25 03:00, but that can't be right.  For now, guess it
 # changed in May.
@@ -2644,6 +2965,9 @@ Zone Europe/Simferopol	2:16:24 -	LMT	1880
 			3:00	-	MSK	1997 Mar lastSun 1:00u
 			2:00	EU	EE%sT
 
+# Vatican City
+# See Europe/Rome.
+
 ###############################################################################
 
 # One source shows that Bulgaria, Cyprus, Finland, and Greece observe DST from
diff --git a/src/timezone/data/factory b/src/timezone/data/factory
index 624ccc0c36..d29a5857f7 100644
--- a/src/timezone/data/factory
+++ b/src/timezone/data/factory
@@ -1,5 +1,4 @@
 # 
-# @(#)factory	8.2
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
 
diff --git a/src/timezone/data/iso3166.tab b/src/timezone/data/iso3166.tab
index b8a2592c00..a1e4b42e44 100644
--- a/src/timezone/data/iso3166.tab
+++ b/src/timezone/data/iso3166.tab
@@ -1,18 +1,15 @@
-# 
-# @(#)iso3166.tab	8.6
+# ISO 3166 alpha-2 country codes
+#
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
-# ISO 3166 alpha-2 country codes
 #
-# From Paul Eggert (2006-09-27):
+# From Paul Eggert (2013-05-27):
 #
 # This file contains a table with the following columns:
 # 1.  ISO 3166-1 alpha-2 country code, current as of
-#     ISO 3166-1 Newsletter VI-1 (2007-09-21).  See:
-#     
-#     ISO 3166 Maintenance agency (ISO 3166/MA)
-#     .
-# 2.  The usual English name for the country,
+#     ISO 3166-1 Newsletter VI-15 (2013-05-10).  See: Updates on ISO 3166
+#   http://www.iso.org/iso/home/standards/country_codes/updates_on_iso_3166.htm
+# 2.  The usual English name for the coded region,
 #     chosen so that alphabetic sorting of subsets produces helpful lists.
 #     This is not the same as the English name in the ISO 3166 tables.
 #
@@ -21,8 +18,12 @@
 #
 # Lines beginning with `#' are comments.
 #
+# This table is intended as an aid for users, to help them select time
+# zone data appropriate for their practical needs.  It is not intended
+# to take or endorse any position on legal or territorial claims.
+#
 #country-
-#code	country name
+#code	name of country, territory, area, or subdivision
 AD	Andorra
 AE	United Arab Emirates
 AF	Afghanistan
@@ -30,7 +31,6 @@ AG	Antigua & Barbuda
 AI	Anguilla
 AL	Albania
 AM	Armenia
-AN	Netherlands Antilles
 AO	Angola
 AQ	Antarctica
 AR	Argentina
@@ -53,6 +53,7 @@ BL	St Barthelemy
 BM	Bermuda
 BN	Brunei
 BO	Bolivia
+BQ	Caribbean Netherlands
 BR	Brazil
 BS	Bahamas
 BT	Bhutan
@@ -75,6 +76,7 @@ CO	Colombia
 CR	Costa Rica
 CU	Cuba
 CV	Cape Verde
+CW	Curacao
 CX	Christmas Island
 CY	Cyprus
 CZ	Czech Republic
@@ -229,8 +231,10 @@ SM	San Marino
 SN	Senegal
 SO	Somalia
 SR	Suriname
+SS	South Sudan
 ST	Sao Tome & Principe
 SV	El Salvador
+SX	St Maarten (Dutch part)
 SY	Syria
 SZ	Swaziland
 TC	Turks & Caicos Is
diff --git a/src/timezone/data/leapseconds b/src/timezone/data/leapseconds
index dd08290196..0a48dac15d 100644
--- a/src/timezone/data/leapseconds
+++ b/src/timezone/data/leapseconds
@@ -1,15 +1,20 @@
-# 
-# @(#)leapseconds	8.11
-# This file is in the public domain, so clarified as of
-# 2009-05-17 by Arthur David Olson.
-
 # Allowance for leapseconds added to each timezone file.
 
+# This file is in the public domain.
+
+# This file is generated automatically from the data in the public-domain
+# leap-seconds.list file available from most NIST time servers.
+# If the URL  does not work,
+# you should be able to pick up leap-seconds.list from a secondary NIST server.
+# For more about leap-seconds.list, please see
+# The NTP Timescale and Leap Seconds
+# .
+
 # The International Earth Rotation Service periodically uses leap seconds
 # to keep UTC to within 0.9 s of UT1
 # (which measures the true angular orientation of the earth in space); see
 # Terry J Quinn, The BIPM and the accurate measure of time,
-# Proc IEEE 79, 7 (July 1991), 894-905.
+# Proc IEEE 79, 7 (July 1991), 894-905 .
 # There were no leap seconds before 1972, because the official mechanism
 # accounting for the discrepancy between atomic time and the earth's rotation
 # did not exist until the early 1970s.
@@ -20,8 +25,8 @@
 # or
 #	Leap	YEAR	MON	DAY	23:59:59	-	R/S
 
-# If the leapsecond is Rolling (R) the given time is local time
-# If the leapsecond is Stationary (S) the given time is UTC
+# If the leapsecond is Rolling (R) the given time is local time.
+# If the leapsecond is Stationary (S) the given time is UTC.
 
 # Leap	YEAR	MONTH	DAY	HH:MM:SS	CORR	R/S
 Leap	1972	Jun	30	23:59:60	+	S
@@ -48,40 +53,4 @@ Leap	1997	Jun	30	23:59:60	+	S
 Leap	1998	Dec	31	23:59:60	+	S
 Leap	2005	Dec	31	23:59:60	+	S
 Leap	2008	Dec	31	23:59:60	+	S
-
-# INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS)
-#
-# SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE REFERENCE
-#
-# SERVICE DE LA ROTATION TERRESTRE
-# OBSERVATOIRE DE PARIS
-# 61, Av. de l'Observatoire 75014 PARIS (France)
-# Tel.      : 33 (0) 1 40 51 22 29
-# FAX       : 33 (0) 1 40 51 22 91
-# Internet  : services.iers@obspm.fr
-#
-# Paris, 2 February 2011
-#
-# Bulletin C 41
-#
-# To authorities responsible
-# for the measurement and
-# distribution of time
-#
-# INFORMATION ON UTC - TAI
-#
-# NO positive leap second will be introduced at the end of June 2011.
-# The difference between Coordinated Universal Time UTC and the
-# International Atomic Time TAI is :		
-#
-# from 2009 January 1, 0h UTC, until further notice : UTC-TAI = -34 s
-#
-# Leap seconds can be introduced in UTC at the end of the months of December
-# or June,  depending on the evolution of UT1-TAI. Bulletin C is mailed every
-# six months, either to announce a time step in UTC, or to confirm that there
-# will be no time step at the next possible date.
-#
-# Daniel GAMBIS
-# Head			
-# Earth Orientation Center of the IERS
-# Observatoire de Paris, France
+Leap	2012	Jun	30	23:59:60	+	S
diff --git a/src/timezone/data/northamerica b/src/timezone/data/northamerica
index 0dcdafb9d8..d51a7e1d6b 100644
--- a/src/timezone/data/northamerica
+++ b/src/timezone/data/northamerica
@@ -1,5 +1,4 @@
 # 
-# @(#)northamerica	8.42
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
 
@@ -7,7 +6,7 @@
 
 # This data is by no means authoritative; if you think you know better,
 # go ahead and edit the file (and please send any changes to
-# tz@elsie.nci.nih.gov for general use in the future).
+# tz@iana.org for general use in the future).
 
 # From Paul Eggert (1999-03-22):
 # A reliable and entertaining source about time zones is
@@ -21,7 +20,7 @@
 # Howse writes (pp 121-125) that time zones were invented by
 # Professor Charles Ferdinand Dowd (1825-1904),
 # Principal of Temple Grove Ladies' Seminary (Saratoga Springs, NY).
-# His pamphlet ``A System of National Time for Railroads'' (1870)
+# His pamphlet "A System of National Time for Railroads" (1870)
 # was the result of his proposals at the Convention of Railroad Trunk Lines
 # in New York City (1869-10).  His 1870 proposal was based on Washington, DC,
 # but in 1872-05 he moved the proposed origin to Greenwich.
@@ -41,8 +40,8 @@
 
 # From Paul Eggert (2001-03-06):
 # Daylight Saving Time was first suggested as a joke by Benjamin Franklin
-# in his whimsical essay ``An Economical Project for Diminishing the Cost
-# of Light'' published in the Journal de Paris (1784-04-26).
+# in his whimsical essay "An Economical Project for Diminishing the Cost
+# of Light" published in the Journal de Paris (1784-04-26).
 # Not everyone is happy with the results:
 #
 #	I don't really care how time is reckoned so long as there is some
@@ -168,8 +167,8 @@ Zone	PST8PDT		 -8:00	US	P%sT
 #    of the Aleutian islands.   No DST.
 
 # From Paul Eggert (1995-12-19):
-# The tables below use `NST', not `NT', for Nome Standard Time.
-# I invented `CAWT' for Central Alaska War Time.
+# The tables below use 'NST', not 'NT', for Nome Standard Time.
+# I invented 'CAWT' for Central Alaska War Time.
 
 # From U. S. Naval Observatory (1989-01-19):
 # USA  EASTERN       5 H  BEHIND UTC    NEW YORK, WASHINGTON
@@ -238,9 +237,9 @@ Zone	PST8PDT		 -8:00	US	P%sT
 # H.R. 6, Energy Policy Act of 2005, SEC. 110. DAYLIGHT SAVINGS.
 #   (a) Amendment- Section 3(a) of the Uniform Time Act of 1966 (15
 #   U.S.C. 260a(a)) is amended--
-#     (1) by striking `first Sunday of April' and inserting `second
+#     (1) by striking 'first Sunday of April' and inserting 'second
 #     Sunday of March'; and
-#     (2) by striking `last Sunday of October' and inserting `first
+#     (2) by striking 'last Sunday of October' and inserting 'first
 #     Sunday of November'.
 #   (b) Effective Date- Subsection (a) shall take effect 1 year after the
 #   date of enactment of this Act or March 1, 2007, whichever is later.
@@ -392,9 +391,10 @@ Zone America/Denver	-6:59:56 -	LMT	1883 Nov 18 12:00:04
 # US Pacific time, represented by Los Angeles
 #
 # California, northern Idaho (Benewah, Bonner, Boundary, Clearwater,
-# Idaho, Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties,
-# and the northern three-quarters of Idaho county),
-# most of Nevada, most of Oregon, and Washington
+# Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties, Idaho county
+# north of the Salmon River, and the towns of Burgdorf and Warren),
+# Nevada (except West Wendover), Oregon (except the northern 3/4 of
+# Malheur county), and Washington
 #
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER
 Rule	CA	1948	only	-	Mar	14	2:00	1:00	D
@@ -468,6 +468,10 @@ Zone America/Los_Angeles -7:52:58 -	LMT	1883 Nov 18 12:07:02
 # own time. I asked about daylight saving; they said it wasn't used. I
 # did not inquire about practices in the past.
 
+# From Arthur David Olson (2011-08-17):
+# For lack of better information, assume that Metlakatla's
+# abandonment of use of daylight saving resulted from the 1983 vote.
+
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone America/Juneau	 15:02:19 -	LMT	1867 Oct 18
 			 -8:57:41 -	LMT	1900 Aug 20 12:00
@@ -475,11 +479,11 @@ Zone America/Juneau	 15:02:19 -	LMT	1867 Oct 18
 			 -8:00	US	P%sT	1946
 			 -8:00	-	PST	1969
 			 -8:00	US	P%sT	1980 Apr 27 2:00
-			 -9:00	US	Y%sT	1980 Oct 26 2:00	
+			 -9:00	US	Y%sT	1980 Oct 26 2:00
 			 -8:00	US	P%sT	1983 Oct 30 2:00
 			 -9:00	US	Y%sT	1983 Nov 30
 			 -9:00	US	AK%sT
-Zone America/Sitka	 -14:58:47 -	LMT	1867 Oct 18
+Zone America/Sitka	 14:58:47 -	LMT	1867 Oct 18
 			 -9:01:13 -	LMT	1900 Aug 20 12:00
 			 -8:00	-	PST	1942
 			 -8:00	US	P%sT	1946
@@ -493,7 +497,7 @@ Zone America/Metlakatla	 15:13:42 -	LMT	1867 Oct 18
 			 -8:00	US	P%sT	1946
 			 -8:00	-	PST	1969
 			 -8:00	US	P%sT	1983 Oct 30 2:00
-			 -8:00	US	MeST
+			 -8:00	-	MeST
 Zone America/Yakutat	 14:41:05 -	LMT	1867 Oct 18
 			 -9:18:55 -	LMT	1900 Aug 20 12:00
 			 -9:00	-	YST	1942
@@ -593,10 +597,12 @@ Zone Pacific/Honolulu	-10:31:26 -	LMT	1896 Jan 13 12:00 #Schmitt&Cox
 			-10:30	-	HST	1933 Apr 30 2:00 #Laws 1933
 			-10:30	1:00	HDT	1933 May 21 12:00 #Laws 1933+12
 			-10:30	-	HST	1942 Feb 09 2:00 #Schmitt&Cox+2
-			-10:30	1:00	HDT	1945 Sep 30 2:00 #Schmitt&Fox+2
-			-10:30	US	H%sT	1947 Jun  8 2:00 #Schmitt&Fox+2
+			-10:30	1:00	HDT	1945 Sep 30 2:00 #Schmitt&Cox+2
+			-10:30	-	HST	1947 Jun  8 2:00 #Schmitt&Cox+2
 			-10:00	-	HST
 
+Link Pacific/Honolulu Pacific/Johnston
+
 # Now we turn to US areas that have diverged from the consensus since 1970.
 
 # Arizona mostly uses MST.
@@ -633,8 +639,9 @@ Zone America/Phoenix	-7:28:18 -	LMT	1883 Nov 18 11:31:42
 # Navajo Nation participates in the Daylight Saving Time policy, due to its
 # large size and location in three states."  (The "only" means that other
 # tribal nations don't use DST.)
-
-Link America/Denver America/Shiprock
+#
+# From Paul Eggert (2013-08-26):
+# See America/Denver for a zone appropriate for the Navajo Nation.
 
 # Southern Idaho (Ada, Adams, Bannock, Bear Lake, Bingham, Blaine,
 # Boise, Bonneville, Butte, Camas, Canyon, Caribou, Cassia, Clark,
@@ -674,13 +681,13 @@ Zone America/Boise	-7:44:49 -	LMT	1883 Nov 18 12:15:11
 #   and Switzerland counties have their own time zone histories as noted below.
 #
 # Shanks partitioned Indiana into 345 regions, each with its own time history,
-# and wrote ``Even newspaper reports present contradictory information.''
+# and wrote "Even newspaper reports present contradictory information."
 # Those Hoosiers!  Such a flighty and changeable people!
 # Fortunately, most of the complexity occurred before our cutoff date of 1970.
 #
 # Other than Indianapolis, the Indiana place names are so nondescript
-# that they would be ambiguous if we left them at the `America' level.
-# So we reluctantly put them all in a subdirectory `America/Indiana'.
+# that they would be ambiguous if we left them at the 'America' level.
+# So we reluctantly put them all in a subdirectory 'America/Indiana'.
 
 # From Paul Eggert (2005-08-16):
 # http://www.mccsc.edu/time.html says that Indiana will use DST starting 2006.
@@ -944,8 +951,8 @@ Zone America/Kentucky/Monticello -5:39:24 - LMT	1883 Nov 18 12:20:36
 # This story is too entertaining to be false, so go with Howse over Shanks.
 #
 # From Paul Eggert (2001-03-06):
-# Garland (1927) writes ``Cleveland and Detroit advanced their clocks
-# one hour in 1914.''  This change is not in Shanks.  We have no more
+# Garland (1927) writes "Cleveland and Detroit advanced their clocks
+# one hour in 1914."  This change is not in Shanks.  We have no more
 # info, so omit this for now.
 #
 # Most of Michigan observed DST from 1973 on, but was a bit late in 1975.
@@ -985,7 +992,7 @@ Zone America/Menominee	-5:50:27 -	LMT	1885 Sep 18 12:00
 # occupied 1857/1900 by the Navassa Phosphate Co
 # US lighthouse 1917/1996-09
 # currently uninhabited
-# see Mark Fineman, ``An Isle Rich in Guano and Discord'',
+# see Mark Fineman, "An Isle Rich in Guano and Discord",
 # _Los Angeles Times_ (1998-11-10), A1, A10; it cites
 # Jimmy Skaggs, _The Great Guano Rush_ (1994).
 
@@ -1016,7 +1023,10 @@ Zone America/Menominee	-5:50:27 -	LMT	1885 Sep 18 12:00
 #	William Willett, The Waste of Daylight, 19th edition
 #	 (1914-03)
 #
-# See the `europe' file for Greenland.
+#	Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
+#	.
+#
+# See the 'europe' file for Greenland.
 
 # Canada
 
@@ -1116,9 +1126,26 @@ Zone America/Menominee	-5:50:27 -	LMT	1885 Sep 18 12:00
 # For now, assume all of DST-observing Canada will fall into line with the
 # new US DST rules,
 
+# From Chris Walton (2011-12-01)
+# In the first of Tammy Hardwick's articles
+# 
+# http://www.ilovecreston.com/?p=articles&t=spec&ar=260
+# 
+# she quotes the Friday November 1/1918 edition of the Creston Review.
+# The quote includes these two statements:
+# 'Sunday the CPR went back to the old system of time...'
+# '... The daylight saving scheme was dropped all over Canada at the same time,'
+# These statements refer to a transition from daylight time to standard time
+# that occurred nationally on Sunday October 27/1918.  This transition was
+# also documented in the Saturday October 26/1918 edition of the Toronto Star.
+
+# In light of that evidence, we alter the date from the earlier believed
+# Oct 31, to Oct 27, 1918 (and Sunday is a more likely transition day
+# than Thursday) in all Canadian rulesets.
+
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Canada	1918	only	-	Apr	14	2:00	1:00	D
-Rule	Canada	1918	only	-	Oct	31	2:00	0	S
+Rule	Canada	1918	only	-	Oct	27	2:00	0	S
 Rule	Canada	1942	only	-	Feb	 9	2:00	1:00	W # War
 Rule	Canada	1945	only	-	Aug	14	23:00u	1:00	P # Peace
 Rule	Canada	1945	only	-	Sep	30	2:00	0	S
@@ -1163,12 +1190,29 @@ Rule	StJohns	1960	1986	-	Oct	lastSun	2:00	0	S
 # From Paul Eggert (2000-10-02):
 # INMS (2000-09-12) says that, since 1988 at least, Newfoundland switches
 # at 00:01 local time.  For now, assume it started in 1987.
+
+# From Michael Pelley (2011-09-12):
+# We received today, Monday, September 12, 2011, notification that the
+# changes to the Newfoundland Standard Time Act have been proclaimed.
+# The change in the Act stipulates that the change from Daylight Savings
+# Time to Standard Time and from Standard Time to Daylight Savings Time
+# now occurs at 2:00AM.
+# ...
+# 
+# http://www.assembly.nl.ca/legislation/sr/annualstatutes/2011/1106.chp.htm
+# 
+# ...
+# MICHAEL PELLEY  |  Manager of Enterprise Architecture - Solution Delivery
+# Office of the Chief Information Officer
+# Executive Council
+# Government of Newfoundland & Labrador
+
 Rule	StJohns	1987	only	-	Apr	Sun>=1	0:01	1:00	D
 Rule	StJohns	1987	2006	-	Oct	lastSun	0:01	0	S
 Rule	StJohns	1988	only	-	Apr	Sun>=1	0:01	2:00	DD
 Rule	StJohns	1989	2006	-	Apr	Sun>=1	0:01	1:00	D
-Rule	StJohns	2007	max	-	Mar	Sun>=8	0:01	1:00	D
-Rule	StJohns	2007	max	-	Nov	Sun>=1	0:01	0	S
+Rule	StJohns	2007	2011	-	Mar	Sun>=8	0:01	1:00	D
+Rule	StJohns	2007	2010	-	Nov	Sun>=1	0:01	0	S
 #
 # St John's has an apostrophe, but Posix file names can't have apostrophes.
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
@@ -1178,11 +1222,12 @@ Zone America/St_Johns	-3:30:52 -	LMT	1884
 			-3:30:52 StJohns N%sT	1935 Mar 30
 			-3:30	StJohns	N%sT	1942 May 11
 			-3:30	Canada	N%sT	1946
-			-3:30	StJohns	N%sT
+			-3:30	StJohns	N%sT	2011 Nov
+			-3:30	Canada	N%sT
 
 # most of east Labrador
 
-# The name `Happy Valley-Goose Bay' is too long; use `Goose Bay'.
+# The name 'Happy Valley-Goose Bay' is too long; use 'Goose Bay'.
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone America/Goose_Bay	-4:01:40 -	LMT	1884 # Happy Valley-Goose Bay
 			-3:30:52 -	NST	1918
@@ -1192,7 +1237,8 @@ Zone America/Goose_Bay	-4:01:40 -	LMT	1884 # Happy Valley-Goose Bay
 			-3:30	StJohns	N%sT	1942 May 11
 			-3:30	Canada	N%sT	1946
 			-3:30	StJohns	N%sT	1966 Mar 15 2:00
-			-4:00	StJohns	A%sT
+			-4:00	StJohns	A%sT	2011 Nov
+			-4:00	Canada	A%sT
 
 
 # west Labrador, Nova Scotia, Prince Edward I
@@ -1298,25 +1344,27 @@ Zone America/Moncton	-4:19:08 -	LMT	1883 Dec  9
 
 # Quebec
 
-# From Paul Eggert (2006-07-09):
-# Shanks & Pottenger write that since 1970 most of Quebec has been
-# like Montreal.
+# From Paul Eggert (2013-08-30):
+# Since 1970 most of Quebec has been like Toronto.
+# However, because earlier versions of the tz database mistakenly relied on data
+# from Shanks & Pottenger saying that Quebec differed from Ontario after 1970,
+# a separate entry was created for most of Quebec.  We're loath to lose
+# its pre-1970 info, even though the tz database is normally limited to
+# zones that differ after 1970, so keep this otherwise out-of-scope entry.
 
-# From Paul Eggert (2006-06-27):
 # Matthews and Vincent (1998) also write that Quebec east of the -63
 # meridian is supposed to observe AST, but residents as far east as
 # Natashquan use EST/EDT, and residents east of Natashquan use AST.
-# In "Official time in Quebec" the Quebec department of justice writes in
-# http://www.justice.gouv.qc.ca/english/publications/generale/temps-regl-1-a.htm
-# that "The residents of the Municipality of the
-# Cote-Nord-du-Golfe-Saint-Laurent and the municipalities of Saint-Augustin,
-# Bonne-Esperance and Blanc-Sablon apply the Official Time Act as it is
-# written and use Atlantic standard time all year round. The same applies to
-# the residents of the Native facilities along the lower North Shore."
-# 
+# The Quebec department of justice writes in
+# "The situation in Minganie and Basse-Cote-Nord"
+# http://www.justice.gouv.qc.ca/english/publications/generale/temps-minganie-a.htm
+# that the coastal strip from just east of Natashquan to Blanc-Sablon
+# observes Atlantic standard time all year round.
+# http://www.assnat.qc.ca/Media/Process.aspx?MediaId=ANQ.Vigie.Bll.DocumentGenerique_8845en
 # says this common practice was codified into law as of 2007.
 # For lack of better info, guess this practice began around 1970, contra to
 # Shanks & Pottenger who have this region observing AST/ADT.
+# for post-1970 data America/Puerto_Rico.
 
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Mont	1917	only	-	Mar	25	2:00	1:00	D
@@ -1360,7 +1408,6 @@ Zone America/Montreal	-4:54:16 -	LMT	1884
 			-5:00	Mont	E%sT	1974
 			-5:00	Canada	E%sT
 
-
 # Ontario
 
 # From Paul Eggert (2006-07-09):
@@ -1579,7 +1626,7 @@ Zone America/Thunder_Bay -5:57:00 -	LMT	1895
 			-6:00	-	CST	1910
 			-5:00	-	EST	1942
 			-5:00	Canada	E%sT	1970
-			-5:00	Mont	E%sT	1973
+			-5:00	Toronto	E%sT	1973
 			-5:00	-	EST	1974
 			-5:00	Canada	E%sT
 Zone America/Nipigon	-5:53:04 -	LMT	1895
@@ -1622,7 +1669,7 @@ Zone America/Atikokan	-6:06:28 -	LMT	1895
 Rule	Winn	1916	only	-	Apr	23	0:00	1:00	D
 Rule	Winn	1916	only	-	Sep	17	0:00	0	S
 Rule	Winn	1918	only	-	Apr	14	2:00	1:00	D
-Rule	Winn	1918	only	-	Oct	31	2:00	0	S
+Rule	Winn	1918	only	-	Oct	27	2:00	0	S
 Rule	Winn	1937	only	-	May	16	2:00	1:00	D
 Rule	Winn	1937	only	-	Sep	26	2:00	0	S
 Rule	Winn	1942	only	-	Feb	 9	2:00	1:00	W # War
@@ -1705,7 +1752,7 @@ Zone America/Winnipeg	-6:28:36 -	LMT	1887 Jul 16
 
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Regina	1918	only	-	Apr	14	2:00	1:00	D
-Rule	Regina	1918	only	-	Oct	31	2:00	0	S
+Rule	Regina	1918	only	-	Oct	27	2:00	0	S
 Rule	Regina	1930	1934	-	May	Sun>=1	0:00	1:00	D
 Rule	Regina	1930	1934	-	Oct	Sun>=1	0:00	0	S
 Rule	Regina	1937	1941	-	Apr	Sun>=8	0:00	1:00	D
@@ -1742,7 +1789,7 @@ Zone America/Swift_Current -7:11:20 -	LMT	1905 Sep
 
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Edm	1918	1919	-	Apr	Sun>=8	2:00	1:00	D
-Rule	Edm	1918	only	-	Oct	31	2:00	0	S
+Rule	Edm	1918	only	-	Oct	27	2:00	0	S
 Rule	Edm	1919	only	-	May	27	2:00	0	S
 Rule	Edm	1920	1923	-	Apr	lastSun	2:00	1:00	D
 Rule	Edm	1920	only	-	Oct	lastSun	2:00	0	S
@@ -1772,9 +1819,68 @@ Zone America/Edmonton	-7:33:52 -	LMT	1906 Sep
 # Dawson Creek uses MST.  Much of east BC is like Edmonton.
 # Matthews and Vincent (1998) write that Creston is like Dawson Creek.
 
+# It seems though that (re: Creston) is not entirely correct:
+
+# From Chris Walton (2011-12-01):
+# There are two areas within the Canadian province of British Columbia
+# that do not currently observe daylight saving:
+# a) The Creston Valley (includes the town of Creston and surrounding area)
+# b) The eastern half of the Peace River Regional District
+# (includes the cities of Dawson Creek and Fort St. John)
+
+# Earlier this year I stumbled across a detailed article about the time
+# keeping history of Creston; it was written by Tammy Hardwick who is the
+# manager of the Creston & District Museum. The article was written in May 2009.
+# 
+# http://www.ilovecreston.com/?p=articles&t=spec&ar=260
+# 
+# According to the article, Creston has not changed its clocks since June 1918.
+# i.e. Creston has been stuck on UTC-7 for 93 years.
+# Dawson Creek, on the other hand, changed its clocks as recently as April 1972.
+
+# Unfortunately the exact date for the time change in June 1918 remains
+# unknown and will be difficult to ascertain.  I e-mailed Tammy a few months
+# ago to ask if Sunday June 2 was a reasonable guess.  She said it was just
+# as plausible as any other date (in June).  She also said that after writing the
+# article she had discovered another time change in 1916; this is the subject
+# of another article which she wrote in October 2010.
+# 
+# http://www.creston.museum.bc.ca/index.php?module=comments&uop=view_comment&cm+id=56
+# 
+
+# Here is a summary of the three clock change events in Creston's history:
+# 1. 1884 or 1885: adoption of Mountain Standard Time (GMT-7)
+# Exact date unknown
+# 2. Oct 1916: switch to Pacific Standard Time (GMT-8)
+# Exact date in October unknown;  Sunday October 1 is a reasonable guess.
+# 3. June 1918: switch to Pacific Daylight Time (GMT-7)
+# Exact date in June unknown; Sunday June 2 is a reasonable guess.
+# note#1:
+# On Oct 27/1918 when daylight saving ended in the rest of Canada,
+# Creston did not change its clocks.
+# note#2:
+# During WWII when the Federal Government legislated a mandatory clock change,
+# Creston did not oblige.
+# note#3:
+# There is no guarantee that Creston will remain on Mountain Standard Time
+# (UTC-7) forever.
+# The subject was debated at least once this year by the town Council.
+# 
+# http://www.bclocalnews.com/kootenay_rockies/crestonvalleyadvance/news/116760809.html
+# 
+
+# During a period WWII, summer time (Daylight saying) was mandatory in Canada.
+# In Creston, that was handled by shifting the area to PST (-8:00) then applying
+# summer time to cause the offset to be -7:00, the same as it had been before
+# the change.  It can be argued that the timezone abbreviation during this
+# period should be PDT rather than MST, but that doesn't seem important enough
+# (to anyone) to further complicate the rules.
+
+# The transition dates (and times) are guesses.
+
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Vanc	1918	only	-	Apr	14	2:00	1:00	D
-Rule	Vanc	1918	only	-	Oct	31	2:00	0	S
+Rule	Vanc	1918	only	-	Oct	27	2:00	0	S
 Rule	Vanc	1942	only	-	Feb	 9	2:00	1:00	W # War
 Rule	Vanc	1945	only	-	Aug	14	23:00u	1:00	P # Peace
 Rule	Vanc	1945	only	-	Sep	30	2:00	0	S
@@ -1790,7 +1896,10 @@ Zone America/Dawson_Creek -8:00:56 -	LMT	1884
 			-8:00	Canada	P%sT	1947
 			-8:00	Vanc	P%sT	1972 Aug 30 2:00
 			-7:00	-	MST
-
+Zone America/Creston	-7:46:04 -	LMT	1884
+			-7:00	-	MST	1916 Oct 1
+			-8:00	-	PST	1918 Jun 2
+			-7:00	-	MST
 
 # Northwest Territories, Nunavut, Yukon
 
@@ -1924,20 +2033,69 @@ Zone America/Dawson_Creek -8:00:56 -	LMT	1884
 # daylight saving....
 # http://www.nnsl.com/frames/newspapers/2006-11/nov13_06none.html
 
-# From Chris Walton (2007-03-14):
-# Today I phoned the "hamlet office" to find out what Resolute was doing with
-# its clocks.
+# From Chris Walton (2011-03-21):
+# Back in 2007 I initiated the creation of a new "zone file" for Resolute
+# Bay. Resolute Bay is a small community located about 900km north of
+# the Arctic Circle. The zone file was required because Resolute Bay had
+# decided to use UTC-5 instead of UTC-6 for the winter of 2006-2007.
+#
+# According to new information which I received last week, Resolute Bay
+# went back to using UTC-6 in the winter of 2007-2008...
+#
+# On March 11/2007 most of Canada went onto daylight saving. On March
+# 14/2007 I phoned the Resolute Bay hamlet office to do a "time check." I
+# talked to somebody that was both knowledgeable and helpful. I was able
+# to confirm that Resolute Bay was still operating on UTC-5. It was
+# explained to me that Resolute Bay had been on the Eastern Time zone
+# (EST) in the winter, and was now back on the Central Time zone (CDT).
+# i.e. the time zone had changed twice in the last year but the clocks
+# had not moved. The residents had to know which time zone they were in
+# so they could follow the correct TV schedule...
+#
+# On Nov 02/2008 most of Canada went onto standard time. On Nov 03/2008 I
+# phoned the Resolute Bay hamlet office...[D]ue to the challenging nature
+# of the phone call, I decided to seek out an alternate source of
+# information. I found an e-mail address for somebody by the name of
+# Stephanie Adams whose job was listed as "Inns North Support Officer for
+# Arctic Co-operatives." I was under the impression that Stephanie lived
+# and worked in Resolute Bay...
+#
+# On March 14/2011 I phoned the hamlet office again. I was told that
+# Resolute Bay had been using Central Standard Time over the winter of
+# 2010-2011 and that the clocks had therefore been moved one hour ahead
+# on March 13/2011. The person I talked to was aware that Resolute Bay
+# had previously experimented with Eastern Standard Time but he could not
+# tell me when the practice had stopped.
+#
+# On March 17/2011 I searched the Web to find an e-mail address of
+# somebody that might be able to tell me exactly when Resolute Bay went
+# off Eastern Standard Time. I stumbled on the name "Aziz Kheraj." Aziz
+# used to be the mayor of Resolute Bay and he apparently owns half the
+# businesses including "South Camp Inn." This website has some info on
+# Aziz:
+# 
+# http://www.uphere.ca/node/493
+# 
 #
-# The individual that answered the phone confirmed that the clocks did not
-# move at the end of daylight saving on October 29/2006.  He also told me that
-# the clocks did not move this past weekend (March 11/2007)....
-
-# From Chris Walton (2008-11-13):
-# ...the residents of Resolute believe that they are changing "time zones"
-# twice a year.  In winter months, local time is qualified with "Eastern
-# Time" which is really "Eastern Standard Time (UTC-5)".  In summer
-# months, local time is qualified with "Central Time" which is really
-# "Central Daylight Time (UTC-5)"...
+# I sent Aziz an e-mail asking when Resolute Bay had stopped using
+# Eastern Standard Time.
+#
+# Aziz responded quickly with this: "hi, The time was not changed for the
+# 1 year only, the following year, the community went back to the old way
+# of "spring ahead-fall behind" currently we are zulu plus 5 hrs and in
+# the winter Zulu plus 6 hrs"
+#
+# This of course conflicted with everything I had ascertained in November 2008.
+#
+# I sent Aziz a copy of my 2008 e-mail exchange with Stephanie. Aziz
+# responded with this: "Hi, Stephanie lives in Winnipeg. I live here, You
+# may want to check with the weather office in Resolute Bay or do a
+# search on the weather through Env. Canada. web site"
+#
+# If I had realized the Stephanie did not live in Resolute Bay I would
+# never have contacted her.  I now believe that all the information I
+# obtained in November 2008 should be ignored...
+# I apologize for reporting incorrect information in 2008.
 
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	NT_YK	1918	only	-	Apr	14	2:00	1:00	D
@@ -1965,14 +2123,12 @@ Zone America/Iqaluit	0	-	zzz	1942 Aug # Frobisher Bay est.
 			-6:00	Canada	C%sT	2000 Oct 29 2:00
 			-5:00	Canada	E%sT
 # aka Qausuittuq
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Resolute 2006	max	-	Nov	Sun>=1	2:00	0	ES
-Rule	Resolute 2007	max	-	Mar	Sun>=8	2:00	0	CD
 Zone America/Resolute	0	-	zzz	1947 Aug 31 # Resolute founded
 			-6:00	NT_YK	C%sT	2000 Oct 29 2:00
 			-5:00	-	EST	2001 Apr  1 3:00
 			-6:00	Canada	C%sT	2006 Oct 29 2:00
-			-5:00	Resolute	%sT
+			-5:00	-	EST	2007 Mar 11 3:00
+			-6:00	Canada	C%sT
 # aka Kangiqiniq
 Zone America/Rankin_Inlet 0	-	zzz	1957 # Rankin Inlet founded
 			-6:00	NT_YK	C%sT	2000 Oct 29 2:00
@@ -2057,7 +2213,7 @@ Zone America/Dawson	-9:17:40 -	LMT	1900 Aug 20
 # From Paul Eggert (1996-06-12):
 # For an English translation of the decree, see
 # 
-# ``Diario Oficial: Time Zone Changeover'' (1996-01-04).
+# "Diario Oficial: Time Zone Changeover" (1996-01-04).
 # 
 
 # From Rives McDow (1998-10-08):
@@ -2394,9 +2550,7 @@ Zone America/Santa_Isabel	-7:39:28 -	LMT	1922 Jan  1  0:20:32
 ###############################################################################
 
 # Anguilla
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Anguilla	-4:12:16 -	LMT	1912 Mar 2
-			-4:00	-	AST
+# See 'southamerica'.
 
 # Antigua and Barbuda
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
@@ -2406,6 +2560,8 @@ Zone	America/Antigua	-4:07:12 -	LMT	1912 Mar 2
 
 # Bahamas
 #
+# For 1899 Milne gives -5:09:29.5; round that.
+#
 # From Sue Williams (2006-12-07):
 # The Bahamas announced about a month ago that they plan to change their DST
 # rules to sync with the U.S. starting in 2007....
@@ -2415,11 +2571,14 @@ Zone	America/Antigua	-4:07:12 -	LMT	1912 Mar 2
 Rule	Bahamas	1964	1975	-	Oct	lastSun	2:00	0	S
 Rule	Bahamas	1964	1975	-	Apr	lastSun	2:00	1:00	D
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Nassau	-5:09:24 -	LMT	1912 Mar 2
+Zone	America/Nassau	-5:09:30 -	LMT	1912 Mar 2
 			-5:00	Bahamas	E%sT	1976
 			-5:00	US	E%sT
 
 # Barbados
+
+# For 1899 Milne gives -3:58:29.2; round that.
+
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Barb	1977	only	-	Jun	12	2:00	1:00	D
 Rule	Barb	1977	1978	-	Oct	Sun>=1	2:00	0	S
@@ -2427,8 +2586,8 @@ Rule	Barb	1978	1980	-	Apr	Sun>=15	2:00	1:00	D
 Rule	Barb	1979	only	-	Sep	30	2:00	0	S
 Rule	Barb	1980	only	-	Sep	25	2:00	0	S
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Barbados	-3:58:28 -	LMT	1924		# Bridgetown
-			-3:58:28 -	BMT	1932	  # Bridgetown Mean Time
+Zone America/Barbados	-3:58:29 -	LMT	1924		# Bridgetown
+			-3:58:29 -	BMT	1932	  # Bridgetown Mean Time
 			-4:00	Barb	A%sT
 
 # Belize
@@ -2446,6 +2605,9 @@ Zone	America/Belize	-5:52:48 -	LMT	1912 Apr
 
 # Bermuda
 
+# For 1899 Milne gives -4:19:18.3 as the meridian of the clock tower,
+# Bermuda dockyard, Ireland I; round that.
+
 # From Dan Jones, reporting in The Royal Gazette (2006-06-26):
 
 # Next year, however, clocks in the US will go forward on the second Sunday
@@ -2455,18 +2617,21 @@ Zone	America/Belize	-5:52:48 -	LMT	1912 Apr
 # http://www.theroyalgazette.com/apps/pbcs.dll/article?AID=/20060529/NEWS/105290135
 
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Atlantic/Bermuda	-4:19:04 -	LMT	1930 Jan  1 2:00    # Hamilton
+Zone Atlantic/Bermuda	-4:19:18 -	LMT	1930 Jan  1 2:00    # Hamilton
 			-4:00	-	AST	1974 Apr 28 2:00
-			-4:00	Bahamas	A%sT	1976
+			-4:00	Canada	A%sT	1976
 			-4:00	US	A%sT
 
 # Cayman Is
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	America/Cayman	-5:25:32 -	LMT	1890		# Georgetown
-			-5:07:12 -	KMT	1912 Feb    # Kingston Mean Time
+			-5:07:11 -	KMT	1912 Feb    # Kingston Mean Time
 			-5:00	-	EST
 
 # Costa Rica
+
+# Milne gives -5:36:13.3 as San Jose mean time; round to nearest.
+
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	CR	1979	1980	-	Feb	lastSun	0:00	1:00	D
 Rule	CR	1979	1980	-	Jun	Sun>=1	0:00	0	S
@@ -2475,16 +2640,21 @@ Rule	CR	1991	1992	-	Jan	Sat>=15	0:00	1:00	D
 # go with Shanks & Pottenger.
 Rule	CR	1991	only	-	Jul	 1	0:00	0	S
 Rule	CR	1992	only	-	Mar	15	0:00	0	S
-# There are too many San Joses elsewhere, so we'll use `Costa Rica'.
+# There are too many San Joses elsewhere, so we'll use 'Costa Rica'.
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Costa_Rica	-5:36:20 -	LMT	1890		# San Jose
-			-5:36:20 -	SJMT	1921 Jan 15 # San Jose Mean Time
+Zone America/Costa_Rica	-5:36:13 -	LMT	1890		# San Jose
+			-5:36:13 -	SJMT	1921 Jan 15 # San Jose Mean Time
 			-6:00	CR	C%sT
 # Coco
 # no information; probably like America/Costa_Rica
 
 # Cuba
 
+# From Paul Eggert (2013-02-21):
+# Milne gives -5:28:50.45 for the observatory at Havana, -5:29:23.57
+# for the port, and -5:30 for meteorological observations.
+# For now, stick with Shanks & Pottenger.
+
 # From Arthur David Olson (1999-03-29):
 # The 1999-03-28 exhibition baseball game held in Havana, Cuba, between
 # the Cuban National Team and the Baltimore Orioles was carried live on
@@ -2496,6 +2666,11 @@ Zone America/Costa_Rica	-5:36:20 -	LMT	1890		# San Jose
 # to DST--and one more hour on 1999-04-04--when the announcers will have
 # returned to Baltimore, which switches on that date.)
 
+# From Steffen Thorsen (2013-11-11):
+# DST start in Cuba in 2004 ... does not follow the same rules as the
+# years before.  The correct date should be Sunday 2004-03-28 00:00 ...
+# https://web.archive.org/web/20040402060750/http://www.granma.cu/espanol/2004/marzo/sab27/reloj.html
+
 # From Evert van der Veer via Steffen Thorsen (2004-10-28):
 # Cuba is not going back to standard time this year.
 # From Paul Eggert (2006-03-22):
@@ -2525,20 +2700,20 @@ Zone America/Costa_Rica	-5:36:20 -	LMT	1890		# San Jose
 # except that it switches at midnight standard time as usual.
 #
 # From Steffen Thorsen (2007-10-25):
-# Carlos Alberto Fonseca Arauz informed me that Cuba will end DST one week 
+# Carlos Alberto Fonseca Arauz informed me that Cuba will end DST one week
 # earlier - on the last Sunday of October, just like in 2006.
-# 
+#
 # He supplied these references:
-# 
+#
 # http://www.prensalatina.com.mx/article.asp?ID=%7B4CC32C1B-A9F7-42FB-8A07-8631AFC923AF%7D&language=ES
 # http://actualidad.terra.es/sociedad/articulo/cuba_llama_ahorrar_energia_cambio_1957044.htm
-# 
+#
 # From Alex Kryvenishev (2007-10-25):
 # Here is also article from Granma (Cuba):
-# 
+#
 # [Regira] el Horario Normal desde el [proximo] domingo 28 de octubre
 # http://www.granma.cubaweb.cu/2007/10/24/nacional/artic07.html
-# 
+#
 # http://www.worldtimezone.com/dst_news/dst_news_cuba03.html
 
 # From Arthur David Olson (2008-03-09):
@@ -2620,6 +2795,41 @@ Zone America/Costa_Rica	-5:36:20 -	LMT	1890		# San Jose
 # 
 # http://www.timeanddate.com/news/time/cuba-starts-dst-2011.html
 # 
+#
+# From Steffen Thorsen (2011-10-30)
+# Cuba will end DST two weeks later this year. Instead of going back
+# tonight, it has been delayed to 2011-11-13 at 01:00.
+#
+# One source (Spanish)
+# 
+# http://www.radioangulo.cu/noticias/cuba/17105-cuba-restablecera-el-horario-del-meridiano-de-greenwich.html
+# 
+#
+# Our page:
+# 
+# http://www.timeanddate.com/news/time/cuba-time-changes-2011.html
+# 
+#
+# From Steffen Thorsen (2012-03-01)
+# According to Radio Reloj, Cuba will start DST on Midnight between March
+# 31 and April 1.
+#
+# Radio Reloj has the following info (Spanish):
+# 
+# http://www.radioreloj.cu/index.php/noticias-radio-reloj/71-miscelaneas/7529-cuba-aplicara-el-horario-de-verano-desde-el-1-de-abril
+# 
+#
+# Our info on it:
+# 
+# http://www.timeanddate.com/news/time/cuba-starts-dst-2012.html
+# 
+
+# From Steffen Thorsen (2012-11-03):
+# Radio Reloj and many other sources report that Cuba is changing back
+# to standard time on 2012-11-04:
+# http://www.radioreloj.cu/index.php/noticias-radio-reloj/36-nacionales/9961-regira-horario-normal-en-cuba-desde-el-domingo-cuatro-de-noviembre
+# From Paul Eggert (2012-11-03):
+# For now, assume the future rule is first Sunday in November.
 
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Cuba	1928	only	-	Jun	10	0:00	1:00	D
@@ -2650,13 +2860,17 @@ Rule	Cuba	1996	only	-	Oct	 6	0:00s	0	S
 Rule	Cuba	1997	only	-	Oct	12	0:00s	0	S
 Rule	Cuba	1998	1999	-	Mar	lastSun	0:00s	1:00	D
 Rule	Cuba	1998	2003	-	Oct	lastSun	0:00s	0	S
-Rule	Cuba	2000	2004	-	Apr	Sun>=1	0:00s	1:00	D
-Rule	Cuba	2006	max	-	Oct	lastSun	0:00s	0	S
+Rule	Cuba	2000	2003	-	Apr	Sun>=1	0:00s	1:00	D
+Rule	Cuba	2004	only	-	Mar	lastSun	0:00s	1:00	D
+Rule	Cuba	2006	2010	-	Oct	lastSun	0:00s	0	S
 Rule	Cuba	2007	only	-	Mar	Sun>=8	0:00s	1:00	D
 Rule	Cuba	2008	only	-	Mar	Sun>=15	0:00s	1:00	D
 Rule	Cuba	2009	2010	-	Mar	Sun>=8	0:00s	1:00	D
 Rule	Cuba	2011	only	-	Mar	Sun>=15	0:00s	1:00	D
-Rule	Cuba	2012	max	-	Mar	Sun>=8	0:00s	1:00	D
+Rule	Cuba	2011	only	-	Nov	13	0:00s	0	S
+Rule	Cuba	2012	only	-	Apr	1	0:00s	1:00	D
+Rule	Cuba	2012	max	-	Nov	Sun>=1	0:00s	0	S
+Rule	Cuba	2013	max	-	Mar	Sun>=8	0:00s	1:00	D
 
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	America/Havana	-5:29:28 -	LMT	1890
@@ -2664,9 +2878,7 @@ Zone	America/Havana	-5:29:28 -	LMT	1890
 			-5:00	Cuba	C%sT
 
 # Dominica
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Dominica	-4:05:36 -	LMT	1911 Jul 1 0:01		# Roseau
-			-4:00	-	AST
+# See 'southamerica'.
 
 # Dominican Republic
 
@@ -2715,18 +2927,10 @@ Zone America/El_Salvador -5:56:48 -	LMT	1921		# San Salvador
 			-6:00	Salv	C%sT
 
 # Grenada
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Grenada	-4:07:00 -	LMT	1911 Jul	# St George's
-			-4:00	-	AST
-
 # Guadeloupe
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Guadeloupe	-4:06:08 -	LMT	1911 Jun 8	# Pointe a Pitre
-			-4:00	-	AST
 # St Barthelemy
-Link America/Guadeloupe	America/St_Barthelemy
 # St Martin (French part)
-Link America/Guadeloupe	America/Marigot
+# See 'southamerica'.
 
 # Guatemala
 #
@@ -2790,6 +2994,26 @@ Zone America/Guatemala	-6:02:04 -	LMT	1918 Oct 5
 # From Stephen Colebourne (2007-02-22):
 # Some IATA info: Haiti won't be having DST in 2007.
 
+# From Steffen Thorsen (2012-03-11):
+# According to several news sources, Haiti will observe DST this year,
+# apparently using the same start and end date as USA/Canada.
+# So this means they have already changed their time.
+#
+# http://www.alterpresse.org/spip.php?article12510
+# http://radiovision2000haiti.net/home/?p=13253
+#
+# From Arthur David Olson (2012-03-11):
+# The alterpresse.org source seems to show a US-style leap from 2:00 a.m. to
+# 3:00 a.m. rather than the traditional Haitian jump at midnight.
+# Assume a US-style fall back as well.
+
+# From Steffen Thorsen (2013-03-10):
+# It appears that Haiti is observing DST this year as well, same rules
+# as US/Canada.  They did it last year as well, and it looks like they
+# are going to observe DST every year now...
+#
+# http://radiovision2000haiti.net/public/haiti-avis-changement-dheure-dimanche/
+# http://www.canalplushaiti.net/?p=6714
 
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Haiti	1983	only	-	May	8	0:00	1:00	D
@@ -2801,6 +3025,8 @@ Rule	Haiti	1988	1997	-	Apr	Sun>=1	1:00s	1:00	D
 Rule	Haiti	1988	1997	-	Oct	lastSun	1:00s	0	S
 Rule	Haiti	2005	2006	-	Apr	Sun>=1	0:00	1:00	D
 Rule	Haiti	2005	2006	-	Oct	lastSun	0:00	0	S
+Rule	Haiti	2012	max	-	Mar	Sun>=8	2:00	1:00	D
+Rule	Haiti	2012	max	-	Nov	Sun>=1	2:00	0	S
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone America/Port-au-Prince -4:49:20 -	LMT	1890
 			-4:49	-	PPMT	1917 Jan 24 12:00 # P-a-P MT
@@ -2847,17 +3073,12 @@ Zone America/Tegucigalpa -5:48:52 -	LMT	1921 Apr
 # Great Swan I ceded by US to Honduras in 1972
 
 # Jamaica
-
-# From Bob Devine (1988-01-28):
-# Follows US rules.
-
-# From U. S. Naval Observatory (1989-01-19):
-# JAMAICA             5 H  BEHIND UTC
-
-# From Shanks & Pottenger:
+# Shanks & Pottenger give -5:07:12, but Milne records -5:07:10.41 from an
+# unspecified official document, and says "This time is used throughout the
+# island".  Go with Milne.  Round to the nearest second as required by zic.
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Jamaica	-5:07:12 -	LMT	1890		# Kingston
-			-5:07:12 -	KMT	1912 Feb    # Kingston Mean Time
+Zone	America/Jamaica	-5:07:11 -	LMT	1890		# Kingston
+			-5:07:11 -	KMT	1912 Feb    # Kingston Mean Time
 			-5:00	-	EST	1974 Apr 28 2:00
 			-5:00	US	E%sT	1984
 			-5:00	-	EST
@@ -2871,12 +3092,7 @@ Zone America/Martinique	-4:04:20 -      LMT	1890		# Fort-de-France
 			-4:00	-	AST
 
 # Montserrat
-# From Paul Eggert (2006-03-22):
-# In 1995 volcanic eruptions forced evacuation of Plymouth, the capital.
-# world.gazetteer.com says Cork Hill is the most populous location now.
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Montserrat	-4:08:52 -	LMT	1911 Jul 1 0:01   # Cork Hill
-			-4:00	-	AST
+# See 'southamerica'.
 
 # Nicaragua
 #
@@ -2950,7 +3166,7 @@ Zone	America/Panama	-5:18:08 -	LMT	1890
 			-5:00	-	EST
 
 # Puerto Rico
-# There are too many San Juans elsewhere, so we'll use `Puerto_Rico'.
+# There are too many San Juans elsewhere, so we'll use 'Puerto_Rico'.
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone America/Puerto_Rico -4:24:25 -	LMT	1899 Mar 28 12:00    # San Juan
 			-4:00	-	AST	1942 May  3
@@ -2958,18 +3174,11 @@ Zone America/Puerto_Rico -4:24:25 -	LMT	1899 Mar 28 12:00    # San Juan
 			-4:00	-	AST
 
 # St Kitts-Nevis
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/St_Kitts	-4:10:52 -	LMT	1912 Mar 2	# Basseterre
-			-4:00	-	AST
-
 # St Lucia
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/St_Lucia	-4:04:00 -	LMT	1890		# Castries
-			-4:04:00 -	CMT	1912	    # Castries Mean Time
-			-4:00	-	AST
+# See 'southamerica'.
 
 # St Pierre and Miquelon
-# There are too many St Pierres elsewhere, so we'll use `Miquelon'.
+# There are too many St Pierres elsewhere, so we'll use 'Miquelon'.
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone America/Miquelon	-3:44:40 -	LMT	1911 May 15	# St Pierre
 			-4:00	-	AST	1980 May
@@ -2977,10 +3186,7 @@ Zone America/Miquelon	-3:44:40 -	LMT	1911 May 15	# St Pierre
 			-3:00	Canada	PM%sT
 
 # St Vincent and the Grenadines
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/St_Vincent	-4:04:56 -	LMT	1890		# Kingstown
-			-4:04:56 -	KMT	1912	   # Kingstown Mean Time
-			-4:00	-	AST
+# See 'southamerica'.
 
 # Turks and Caicos
 #
@@ -3010,15 +3216,9 @@ Rule	TC	2007	max	-	Mar	Sun>=8	2:00	1:00	D
 Rule	TC	2007	max	-	Nov	Sun>=1	2:00	0	S
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone America/Grand_Turk	-4:44:32 -	LMT	1890
-			-5:07:12 -	KMT	1912 Feb    # Kingston Mean Time
+			-5:07:11 -	KMT	1912 Feb    # Kingston Mean Time
 			-5:00	TC	E%sT
 
 # British Virgin Is
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/Tortola	-4:18:28 -	LMT	1911 Jul    # Road Town
-			-4:00	-	AST
-
 # Virgin Is
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone America/St_Thomas	-4:19:44 -	LMT	1911 Jul    # Charlotte Amalie
-			-4:00	-	AST
+# See 'southamerica'.
diff --git a/src/timezone/data/pacificnew b/src/timezone/data/pacificnew
index e2512c1d1b..bccd852109 100644
--- a/src/timezone/data/pacificnew
+++ b/src/timezone/data/pacificnew
@@ -1,5 +1,4 @@
 # 
-# @(#)pacificnew	8.2
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
 
diff --git a/src/timezone/data/solar87 b/src/timezone/data/solar87
deleted file mode 100644
index 47ee7e7aad..0000000000
--- a/src/timezone/data/solar87
+++ /dev/null
@@ -1,391 +0,0 @@
-# 
-# @(#)solar87	8.2
-# This file is in the public domain, so clarified as of
-# 2009-05-17 by Arthur David Olson.
-
-# So much for footnotes about Saudi Arabia.
-# Apparent noon times below are for Riyadh; your mileage will vary.
-# Times were computed using formulas in the U.S. Naval Observatory's
-# Almanac for Computers 1987; the formulas "will give EqT to an accuracy of
-# [plus or minus two] seconds during the current year."
-#
-# Rounding to the nearest five seconds results in fewer than
-# 256 different "time types"--a limit that's faced because time types are
-# stored on disk as unsigned chars.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	sol87	1987	only	-	Jan	1	12:03:20s -0:03:20 -
-Rule	sol87	1987	only	-	Jan	2	12:03:50s -0:03:50 -
-Rule	sol87	1987	only	-	Jan	3	12:04:15s -0:04:15 -
-Rule	sol87	1987	only	-	Jan	4	12:04:45s -0:04:45 -
-Rule	sol87	1987	only	-	Jan	5	12:05:10s -0:05:10 -
-Rule	sol87	1987	only	-	Jan	6	12:05:40s -0:05:40 -
-Rule	sol87	1987	only	-	Jan	7	12:06:05s -0:06:05 -
-Rule	sol87	1987	only	-	Jan	8	12:06:30s -0:06:30 -
-Rule	sol87	1987	only	-	Jan	9	12:06:55s -0:06:55 -
-Rule	sol87	1987	only	-	Jan	10	12:07:20s -0:07:20 -
-Rule	sol87	1987	only	-	Jan	11	12:07:45s -0:07:45 -
-Rule	sol87	1987	only	-	Jan	12	12:08:10s -0:08:10 -
-Rule	sol87	1987	only	-	Jan	13	12:08:30s -0:08:30 -
-Rule	sol87	1987	only	-	Jan	14	12:08:55s -0:08:55 -
-Rule	sol87	1987	only	-	Jan	15	12:09:15s -0:09:15 -
-Rule	sol87	1987	only	-	Jan	16	12:09:35s -0:09:35 -
-Rule	sol87	1987	only	-	Jan	17	12:09:55s -0:09:55 -
-Rule	sol87	1987	only	-	Jan	18	12:10:15s -0:10:15 -
-Rule	sol87	1987	only	-	Jan	19	12:10:35s -0:10:35 -
-Rule	sol87	1987	only	-	Jan	20	12:10:55s -0:10:55 -
-Rule	sol87	1987	only	-	Jan	21	12:11:10s -0:11:10 -
-Rule	sol87	1987	only	-	Jan	22	12:11:30s -0:11:30 -
-Rule	sol87	1987	only	-	Jan	23	12:11:45s -0:11:45 -
-Rule	sol87	1987	only	-	Jan	24	12:12:00s -0:12:00 -
-Rule	sol87	1987	only	-	Jan	25	12:12:15s -0:12:15 -
-Rule	sol87	1987	only	-	Jan	26	12:12:30s -0:12:30 -
-Rule	sol87	1987	only	-	Jan	27	12:12:40s -0:12:40 -
-Rule	sol87	1987	only	-	Jan	28	12:12:55s -0:12:55 -
-Rule	sol87	1987	only	-	Jan	29	12:13:05s -0:13:05 -
-Rule	sol87	1987	only	-	Jan	30	12:13:15s -0:13:15 -
-Rule	sol87	1987	only	-	Jan	31	12:13:25s -0:13:25 -
-Rule	sol87	1987	only	-	Feb	1	12:13:35s -0:13:35 -
-Rule	sol87	1987	only	-	Feb	2	12:13:40s -0:13:40 -
-Rule	sol87	1987	only	-	Feb	3	12:13:50s -0:13:50 -
-Rule	sol87	1987	only	-	Feb	4	12:13:55s -0:13:55 -
-Rule	sol87	1987	only	-	Feb	5	12:14:00s -0:14:00 -
-Rule	sol87	1987	only	-	Feb	6	12:14:05s -0:14:05 -
-Rule	sol87	1987	only	-	Feb	7	12:14:10s -0:14:10 -
-Rule	sol87	1987	only	-	Feb	8	12:14:10s -0:14:10 -
-Rule	sol87	1987	only	-	Feb	9	12:14:15s -0:14:15 -
-Rule	sol87	1987	only	-	Feb	10	12:14:15s -0:14:15 -
-Rule	sol87	1987	only	-	Feb	11	12:14:15s -0:14:15 -
-Rule	sol87	1987	only	-	Feb	12	12:14:15s -0:14:15 -
-Rule	sol87	1987	only	-	Feb	13	12:14:15s -0:14:15 -
-Rule	sol87	1987	only	-	Feb	14	12:14:15s -0:14:15 -
-Rule	sol87	1987	only	-	Feb	15	12:14:10s -0:14:10 -
-Rule	sol87	1987	only	-	Feb	16	12:14:10s -0:14:10 -
-Rule	sol87	1987	only	-	Feb	17	12:14:05s -0:14:05 -
-Rule	sol87	1987	only	-	Feb	18	12:14:00s -0:14:00 -
-Rule	sol87	1987	only	-	Feb	19	12:13:55s -0:13:55 -
-Rule	sol87	1987	only	-	Feb	20	12:13:50s -0:13:50 -
-Rule	sol87	1987	only	-	Feb	21	12:13:45s -0:13:45 -
-Rule	sol87	1987	only	-	Feb	22	12:13:35s -0:13:35 -
-Rule	sol87	1987	only	-	Feb	23	12:13:30s -0:13:30 -
-Rule	sol87	1987	only	-	Feb	24	12:13:20s -0:13:20 -
-Rule	sol87	1987	only	-	Feb	25	12:13:10s -0:13:10 -
-Rule	sol87	1987	only	-	Feb	26	12:13:00s -0:13:00 -
-Rule	sol87	1987	only	-	Feb	27	12:12:50s -0:12:50 -
-Rule	sol87	1987	only	-	Feb	28	12:12:40s -0:12:40 -
-Rule	sol87	1987	only	-	Mar	1	12:12:30s -0:12:30 -
-Rule	sol87	1987	only	-	Mar	2	12:12:20s -0:12:20 -
-Rule	sol87	1987	only	-	Mar	3	12:12:05s -0:12:05 -
-Rule	sol87	1987	only	-	Mar	4	12:11:55s -0:11:55 -
-Rule	sol87	1987	only	-	Mar	5	12:11:40s -0:11:40 -
-Rule	sol87	1987	only	-	Mar	6	12:11:25s -0:11:25 -
-Rule	sol87	1987	only	-	Mar	7	12:11:15s -0:11:15 -
-Rule	sol87	1987	only	-	Mar	8	12:11:00s -0:11:00 -
-Rule	sol87	1987	only	-	Mar	9	12:10:45s -0:10:45 -
-Rule	sol87	1987	only	-	Mar	10	12:10:30s -0:10:30 -
-Rule	sol87	1987	only	-	Mar	11	12:10:15s -0:10:15 -
-Rule	sol87	1987	only	-	Mar	12	12:09:55s -0:09:55 -
-Rule	sol87	1987	only	-	Mar	13	12:09:40s -0:09:40 -
-Rule	sol87	1987	only	-	Mar	14	12:09:25s -0:09:25 -
-Rule	sol87	1987	only	-	Mar	15	12:09:10s -0:09:10 -
-Rule	sol87	1987	only	-	Mar	16	12:08:50s -0:08:50 -
-Rule	sol87	1987	only	-	Mar	17	12:08:35s -0:08:35 -
-Rule	sol87	1987	only	-	Mar	18	12:08:15s -0:08:15 -
-Rule	sol87	1987	only	-	Mar	19	12:08:00s -0:08:00 -
-Rule	sol87	1987	only	-	Mar	20	12:07:40s -0:07:40 -
-Rule	sol87	1987	only	-	Mar	21	12:07:25s -0:07:25 -
-Rule	sol87	1987	only	-	Mar	22	12:07:05s -0:07:05 -
-Rule	sol87	1987	only	-	Mar	23	12:06:50s -0:06:50 -
-Rule	sol87	1987	only	-	Mar	24	12:06:30s -0:06:30 -
-Rule	sol87	1987	only	-	Mar	25	12:06:10s -0:06:10 -
-Rule	sol87	1987	only	-	Mar	26	12:05:55s -0:05:55 -
-Rule	sol87	1987	only	-	Mar	27	12:05:35s -0:05:35 -
-Rule	sol87	1987	only	-	Mar	28	12:05:15s -0:05:15 -
-Rule	sol87	1987	only	-	Mar	29	12:05:00s -0:05:00 -
-Rule	sol87	1987	only	-	Mar	30	12:04:40s -0:04:40 -
-Rule	sol87	1987	only	-	Mar	31	12:04:25s -0:04:25 -
-Rule	sol87	1987	only	-	Apr	1	12:04:05s -0:04:05 -
-Rule	sol87	1987	only	-	Apr	2	12:03:45s -0:03:45 -
-Rule	sol87	1987	only	-	Apr	3	12:03:30s -0:03:30 -
-Rule	sol87	1987	only	-	Apr	4	12:03:10s -0:03:10 -
-Rule	sol87	1987	only	-	Apr	5	12:02:55s -0:02:55 -
-Rule	sol87	1987	only	-	Apr	6	12:02:35s -0:02:35 -
-Rule	sol87	1987	only	-	Apr	7	12:02:20s -0:02:20 -
-Rule	sol87	1987	only	-	Apr	8	12:02:05s -0:02:05 -
-Rule	sol87	1987	only	-	Apr	9	12:01:45s -0:01:45 -
-Rule	sol87	1987	only	-	Apr	10	12:01:30s -0:01:30 -
-Rule	sol87	1987	only	-	Apr	11	12:01:15s -0:01:15 -
-Rule	sol87	1987	only	-	Apr	12	12:00:55s -0:00:55 -
-Rule	sol87	1987	only	-	Apr	13	12:00:40s -0:00:40 -
-Rule	sol87	1987	only	-	Apr	14	12:00:25s -0:00:25 -
-Rule	sol87	1987	only	-	Apr	15	12:00:10s -0:00:10 -
-Rule	sol87	1987	only	-	Apr	16	11:59:55s 0:00:05 -
-Rule	sol87	1987	only	-	Apr	17	11:59:45s 0:00:15 -
-Rule	sol87	1987	only	-	Apr	18	11:59:30s 0:00:30 -
-Rule	sol87	1987	only	-	Apr	19	11:59:15s 0:00:45 -
-Rule	sol87	1987	only	-	Apr	20	11:59:05s 0:00:55 -
-Rule	sol87	1987	only	-	Apr	21	11:58:50s 0:01:10 -
-Rule	sol87	1987	only	-	Apr	22	11:58:40s 0:01:20 -
-Rule	sol87	1987	only	-	Apr	23	11:58:25s 0:01:35 -
-Rule	sol87	1987	only	-	Apr	24	11:58:15s 0:01:45 -
-Rule	sol87	1987	only	-	Apr	25	11:58:05s 0:01:55 -
-Rule	sol87	1987	only	-	Apr	26	11:57:55s 0:02:05 -
-Rule	sol87	1987	only	-	Apr	27	11:57:45s 0:02:15 -
-Rule	sol87	1987	only	-	Apr	28	11:57:35s 0:02:25 -
-Rule	sol87	1987	only	-	Apr	29	11:57:25s 0:02:35 -
-Rule	sol87	1987	only	-	Apr	30	11:57:15s 0:02:45 -
-Rule	sol87	1987	only	-	May	1	11:57:10s 0:02:50 -
-Rule	sol87	1987	only	-	May	2	11:57:00s 0:03:00 -
-Rule	sol87	1987	only	-	May	3	11:56:55s 0:03:05 -
-Rule	sol87	1987	only	-	May	4	11:56:50s 0:03:10 -
-Rule	sol87	1987	only	-	May	5	11:56:45s 0:03:15 -
-Rule	sol87	1987	only	-	May	6	11:56:40s 0:03:20 -
-Rule	sol87	1987	only	-	May	7	11:56:35s 0:03:25 -
-Rule	sol87	1987	only	-	May	8	11:56:30s 0:03:30 -
-Rule	sol87	1987	only	-	May	9	11:56:25s 0:03:35 -
-Rule	sol87	1987	only	-	May	10	11:56:25s 0:03:35 -
-Rule	sol87	1987	only	-	May	11	11:56:20s 0:03:40 -
-Rule	sol87	1987	only	-	May	12	11:56:20s 0:03:40 -
-Rule	sol87	1987	only	-	May	13	11:56:20s 0:03:40 -
-Rule	sol87	1987	only	-	May	14	11:56:20s 0:03:40 -
-Rule	sol87	1987	only	-	May	15	11:56:20s 0:03:40 -
-Rule	sol87	1987	only	-	May	16	11:56:20s 0:03:40 -
-Rule	sol87	1987	only	-	May	17	11:56:20s 0:03:40 -
-Rule	sol87	1987	only	-	May	18	11:56:20s 0:03:40 -
-Rule	sol87	1987	only	-	May	19	11:56:25s 0:03:35 -
-Rule	sol87	1987	only	-	May	20	11:56:25s 0:03:35 -
-Rule	sol87	1987	only	-	May	21	11:56:30s 0:03:30 -
-Rule	sol87	1987	only	-	May	22	11:56:35s 0:03:25 -
-Rule	sol87	1987	only	-	May	23	11:56:40s 0:03:20 -
-Rule	sol87	1987	only	-	May	24	11:56:45s 0:03:15 -
-Rule	sol87	1987	only	-	May	25	11:56:50s 0:03:10 -
-Rule	sol87	1987	only	-	May	26	11:56:55s 0:03:05 -
-Rule	sol87	1987	only	-	May	27	11:57:00s 0:03:00 -
-Rule	sol87	1987	only	-	May	28	11:57:10s 0:02:50 -
-Rule	sol87	1987	only	-	May	29	11:57:15s 0:02:45 -
-Rule	sol87	1987	only	-	May	30	11:57:25s 0:02:35 -
-Rule	sol87	1987	only	-	May	31	11:57:30s 0:02:30 -
-Rule	sol87	1987	only	-	Jun	1	11:57:40s 0:02:20 -
-Rule	sol87	1987	only	-	Jun	2	11:57:50s 0:02:10 -
-Rule	sol87	1987	only	-	Jun	3	11:58:00s 0:02:00 -
-Rule	sol87	1987	only	-	Jun	4	11:58:10s 0:01:50 -
-Rule	sol87	1987	only	-	Jun	5	11:58:20s 0:01:40 -
-Rule	sol87	1987	only	-	Jun	6	11:58:30s 0:01:30 -
-Rule	sol87	1987	only	-	Jun	7	11:58:40s 0:01:20 -
-Rule	sol87	1987	only	-	Jun	8	11:58:50s 0:01:10 -
-Rule	sol87	1987	only	-	Jun	9	11:59:05s 0:00:55 -
-Rule	sol87	1987	only	-	Jun	10	11:59:15s 0:00:45 -
-Rule	sol87	1987	only	-	Jun	11	11:59:30s 0:00:30 -
-Rule	sol87	1987	only	-	Jun	12	11:59:40s 0:00:20 -
-Rule	sol87	1987	only	-	Jun	13	11:59:50s 0:00:10 -
-Rule	sol87	1987	only	-	Jun	14	12:00:05s -0:00:05 -
-Rule	sol87	1987	only	-	Jun	15	12:00:15s -0:00:15 -
-Rule	sol87	1987	only	-	Jun	16	12:00:30s -0:00:30 -
-Rule	sol87	1987	only	-	Jun	17	12:00:45s -0:00:45 -
-Rule	sol87	1987	only	-	Jun	18	12:00:55s -0:00:55 -
-Rule	sol87	1987	only	-	Jun	19	12:01:10s -0:01:10 -
-Rule	sol87	1987	only	-	Jun	20	12:01:20s -0:01:20 -
-Rule	sol87	1987	only	-	Jun	21	12:01:35s -0:01:35 -
-Rule	sol87	1987	only	-	Jun	22	12:01:50s -0:01:50 -
-Rule	sol87	1987	only	-	Jun	23	12:02:00s -0:02:00 -
-Rule	sol87	1987	only	-	Jun	24	12:02:15s -0:02:15 -
-Rule	sol87	1987	only	-	Jun	25	12:02:25s -0:02:25 -
-Rule	sol87	1987	only	-	Jun	26	12:02:40s -0:02:40 -
-Rule	sol87	1987	only	-	Jun	27	12:02:50s -0:02:50 -
-Rule	sol87	1987	only	-	Jun	28	12:03:05s -0:03:05 -
-Rule	sol87	1987	only	-	Jun	29	12:03:15s -0:03:15 -
-Rule	sol87	1987	only	-	Jun	30	12:03:30s -0:03:30 -
-Rule	sol87	1987	only	-	Jul	1	12:03:40s -0:03:40 -
-Rule	sol87	1987	only	-	Jul	2	12:03:50s -0:03:50 -
-Rule	sol87	1987	only	-	Jul	3	12:04:05s -0:04:05 -
-Rule	sol87	1987	only	-	Jul	4	12:04:15s -0:04:15 -
-Rule	sol87	1987	only	-	Jul	5	12:04:25s -0:04:25 -
-Rule	sol87	1987	only	-	Jul	6	12:04:35s -0:04:35 -
-Rule	sol87	1987	only	-	Jul	7	12:04:45s -0:04:45 -
-Rule	sol87	1987	only	-	Jul	8	12:04:55s -0:04:55 -
-Rule	sol87	1987	only	-	Jul	9	12:05:05s -0:05:05 -
-Rule	sol87	1987	only	-	Jul	10	12:05:15s -0:05:15 -
-Rule	sol87	1987	only	-	Jul	11	12:05:20s -0:05:20 -
-Rule	sol87	1987	only	-	Jul	12	12:05:30s -0:05:30 -
-Rule	sol87	1987	only	-	Jul	13	12:05:40s -0:05:40 -
-Rule	sol87	1987	only	-	Jul	14	12:05:45s -0:05:45 -
-Rule	sol87	1987	only	-	Jul	15	12:05:50s -0:05:50 -
-Rule	sol87	1987	only	-	Jul	16	12:06:00s -0:06:00 -
-Rule	sol87	1987	only	-	Jul	17	12:06:05s -0:06:05 -
-Rule	sol87	1987	only	-	Jul	18	12:06:10s -0:06:10 -
-Rule	sol87	1987	only	-	Jul	19	12:06:15s -0:06:15 -
-Rule	sol87	1987	only	-	Jul	20	12:06:15s -0:06:15 -
-Rule	sol87	1987	only	-	Jul	21	12:06:20s -0:06:20 -
-Rule	sol87	1987	only	-	Jul	22	12:06:25s -0:06:25 -
-Rule	sol87	1987	only	-	Jul	23	12:06:25s -0:06:25 -
-Rule	sol87	1987	only	-	Jul	24	12:06:25s -0:06:25 -
-Rule	sol87	1987	only	-	Jul	25	12:06:30s -0:06:30 -
-Rule	sol87	1987	only	-	Jul	26	12:06:30s -0:06:30 -
-Rule	sol87	1987	only	-	Jul	27	12:06:30s -0:06:30 -
-Rule	sol87	1987	only	-	Jul	28	12:06:30s -0:06:30 -
-Rule	sol87	1987	only	-	Jul	29	12:06:25s -0:06:25 -
-Rule	sol87	1987	only	-	Jul	30	12:06:25s -0:06:25 -
-Rule	sol87	1987	only	-	Jul	31	12:06:25s -0:06:25 -
-Rule	sol87	1987	only	-	Aug	1	12:06:20s -0:06:20 -
-Rule	sol87	1987	only	-	Aug	2	12:06:15s -0:06:15 -
-Rule	sol87	1987	only	-	Aug	3	12:06:10s -0:06:10 -
-Rule	sol87	1987	only	-	Aug	4	12:06:05s -0:06:05 -
-Rule	sol87	1987	only	-	Aug	5	12:06:00s -0:06:00 -
-Rule	sol87	1987	only	-	Aug	6	12:05:55s -0:05:55 -
-Rule	sol87	1987	only	-	Aug	7	12:05:50s -0:05:50 -
-Rule	sol87	1987	only	-	Aug	8	12:05:40s -0:05:40 -
-Rule	sol87	1987	only	-	Aug	9	12:05:35s -0:05:35 -
-Rule	sol87	1987	only	-	Aug	10	12:05:25s -0:05:25 -
-Rule	sol87	1987	only	-	Aug	11	12:05:15s -0:05:15 -
-Rule	sol87	1987	only	-	Aug	12	12:05:05s -0:05:05 -
-Rule	sol87	1987	only	-	Aug	13	12:04:55s -0:04:55 -
-Rule	sol87	1987	only	-	Aug	14	12:04:45s -0:04:45 -
-Rule	sol87	1987	only	-	Aug	15	12:04:35s -0:04:35 -
-Rule	sol87	1987	only	-	Aug	16	12:04:25s -0:04:25 -
-Rule	sol87	1987	only	-	Aug	17	12:04:10s -0:04:10 -
-Rule	sol87	1987	only	-	Aug	18	12:04:00s -0:04:00 -
-Rule	sol87	1987	only	-	Aug	19	12:03:45s -0:03:45 -
-Rule	sol87	1987	only	-	Aug	20	12:03:30s -0:03:30 -
-Rule	sol87	1987	only	-	Aug	21	12:03:15s -0:03:15 -
-Rule	sol87	1987	only	-	Aug	22	12:03:00s -0:03:00 -
-Rule	sol87	1987	only	-	Aug	23	12:02:45s -0:02:45 -
-Rule	sol87	1987	only	-	Aug	24	12:02:30s -0:02:30 -
-Rule	sol87	1987	only	-	Aug	25	12:02:15s -0:02:15 -
-Rule	sol87	1987	only	-	Aug	26	12:02:00s -0:02:00 -
-Rule	sol87	1987	only	-	Aug	27	12:01:40s -0:01:40 -
-Rule	sol87	1987	only	-	Aug	28	12:01:25s -0:01:25 -
-Rule	sol87	1987	only	-	Aug	29	12:01:05s -0:01:05 -
-Rule	sol87	1987	only	-	Aug	30	12:00:50s -0:00:50 -
-Rule	sol87	1987	only	-	Aug	31	12:00:30s -0:00:30 -
-Rule	sol87	1987	only	-	Sep	1	12:00:10s -0:00:10 -
-Rule	sol87	1987	only	-	Sep	2	11:59:50s 0:00:10 -
-Rule	sol87	1987	only	-	Sep	3	11:59:35s 0:00:25 -
-Rule	sol87	1987	only	-	Sep	4	11:59:15s 0:00:45 -
-Rule	sol87	1987	only	-	Sep	5	11:58:55s 0:01:05 -
-Rule	sol87	1987	only	-	Sep	6	11:58:35s 0:01:25 -
-Rule	sol87	1987	only	-	Sep	7	11:58:15s 0:01:45 -
-Rule	sol87	1987	only	-	Sep	8	11:57:55s 0:02:05 -
-Rule	sol87	1987	only	-	Sep	9	11:57:30s 0:02:30 -
-Rule	sol87	1987	only	-	Sep	10	11:57:10s 0:02:50 -
-Rule	sol87	1987	only	-	Sep	11	11:56:50s 0:03:10 -
-Rule	sol87	1987	only	-	Sep	12	11:56:30s 0:03:30 -
-Rule	sol87	1987	only	-	Sep	13	11:56:10s 0:03:50 -
-Rule	sol87	1987	only	-	Sep	14	11:55:45s 0:04:15 -
-Rule	sol87	1987	only	-	Sep	15	11:55:25s 0:04:35 -
-Rule	sol87	1987	only	-	Sep	16	11:55:05s 0:04:55 -
-Rule	sol87	1987	only	-	Sep	17	11:54:45s 0:05:15 -
-Rule	sol87	1987	only	-	Sep	18	11:54:20s 0:05:40 -
-Rule	sol87	1987	only	-	Sep	19	11:54:00s 0:06:00 -
-Rule	sol87	1987	only	-	Sep	20	11:53:40s 0:06:20 -
-Rule	sol87	1987	only	-	Sep	21	11:53:15s 0:06:45 -
-Rule	sol87	1987	only	-	Sep	22	11:52:55s 0:07:05 -
-Rule	sol87	1987	only	-	Sep	23	11:52:35s 0:07:25 -
-Rule	sol87	1987	only	-	Sep	24	11:52:15s 0:07:45 -
-Rule	sol87	1987	only	-	Sep	25	11:51:55s 0:08:05 -
-Rule	sol87	1987	only	-	Sep	26	11:51:35s 0:08:25 -
-Rule	sol87	1987	only	-	Sep	27	11:51:10s 0:08:50 -
-Rule	sol87	1987	only	-	Sep	28	11:50:50s 0:09:10 -
-Rule	sol87	1987	only	-	Sep	29	11:50:30s 0:09:30 -
-Rule	sol87	1987	only	-	Sep	30	11:50:10s 0:09:50 -
-Rule	sol87	1987	only	-	Oct	1	11:49:50s 0:10:10 -
-Rule	sol87	1987	only	-	Oct	2	11:49:35s 0:10:25 -
-Rule	sol87	1987	only	-	Oct	3	11:49:15s 0:10:45 -
-Rule	sol87	1987	only	-	Oct	4	11:48:55s 0:11:05 -
-Rule	sol87	1987	only	-	Oct	5	11:48:35s 0:11:25 -
-Rule	sol87	1987	only	-	Oct	6	11:48:20s 0:11:40 -
-Rule	sol87	1987	only	-	Oct	7	11:48:00s 0:12:00 -
-Rule	sol87	1987	only	-	Oct	8	11:47:45s 0:12:15 -
-Rule	sol87	1987	only	-	Oct	9	11:47:25s 0:12:35 -
-Rule	sol87	1987	only	-	Oct	10	11:47:10s 0:12:50 -
-Rule	sol87	1987	only	-	Oct	11	11:46:55s 0:13:05 -
-Rule	sol87	1987	only	-	Oct	12	11:46:40s 0:13:20 -
-Rule	sol87	1987	only	-	Oct	13	11:46:25s 0:13:35 -
-Rule	sol87	1987	only	-	Oct	14	11:46:10s 0:13:50 -
-Rule	sol87	1987	only	-	Oct	15	11:45:55s 0:14:05 -
-Rule	sol87	1987	only	-	Oct	16	11:45:45s 0:14:15 -
-Rule	sol87	1987	only	-	Oct	17	11:45:30s 0:14:30 -
-Rule	sol87	1987	only	-	Oct	18	11:45:20s 0:14:40 -
-Rule	sol87	1987	only	-	Oct	19	11:45:05s 0:14:55 -
-Rule	sol87	1987	only	-	Oct	20	11:44:55s 0:15:05 -
-Rule	sol87	1987	only	-	Oct	21	11:44:45s 0:15:15 -
-Rule	sol87	1987	only	-	Oct	22	11:44:35s 0:15:25 -
-Rule	sol87	1987	only	-	Oct	23	11:44:25s 0:15:35 -
-Rule	sol87	1987	only	-	Oct	24	11:44:20s 0:15:40 -
-Rule	sol87	1987	only	-	Oct	25	11:44:10s 0:15:50 -
-Rule	sol87	1987	only	-	Oct	26	11:44:05s 0:15:55 -
-Rule	sol87	1987	only	-	Oct	27	11:43:55s 0:16:05 -
-Rule	sol87	1987	only	-	Oct	28	11:43:50s 0:16:10 -
-Rule	sol87	1987	only	-	Oct	29	11:43:45s 0:16:15 -
-Rule	sol87	1987	only	-	Oct	30	11:43:45s 0:16:15 -
-Rule	sol87	1987	only	-	Oct	31	11:43:40s 0:16:20 -
-Rule	sol87	1987	only	-	Nov	1	11:43:40s 0:16:20 -
-Rule	sol87	1987	only	-	Nov	2	11:43:35s 0:16:25 -
-Rule	sol87	1987	only	-	Nov	3	11:43:35s 0:16:25 -
-Rule	sol87	1987	only	-	Nov	4	11:43:35s 0:16:25 -
-Rule	sol87	1987	only	-	Nov	5	11:43:35s 0:16:25 -
-Rule	sol87	1987	only	-	Nov	6	11:43:40s 0:16:20 -
-Rule	sol87	1987	only	-	Nov	7	11:43:40s 0:16:20 -
-Rule	sol87	1987	only	-	Nov	8	11:43:45s 0:16:15 -
-Rule	sol87	1987	only	-	Nov	9	11:43:50s 0:16:10 -
-Rule	sol87	1987	only	-	Nov	10	11:43:55s 0:16:05 -
-Rule	sol87	1987	only	-	Nov	11	11:44:00s 0:16:00 -
-Rule	sol87	1987	only	-	Nov	12	11:44:05s 0:15:55 -
-Rule	sol87	1987	only	-	Nov	13	11:44:15s 0:15:45 -
-Rule	sol87	1987	only	-	Nov	14	11:44:20s 0:15:40 -
-Rule	sol87	1987	only	-	Nov	15	11:44:30s 0:15:30 -
-Rule	sol87	1987	only	-	Nov	16	11:44:40s 0:15:20 -
-Rule	sol87	1987	only	-	Nov	17	11:44:50s 0:15:10 -
-Rule	sol87	1987	only	-	Nov	18	11:45:05s 0:14:55 -
-Rule	sol87	1987	only	-	Nov	19	11:45:15s 0:14:45 -
-Rule	sol87	1987	only	-	Nov	20	11:45:30s 0:14:30 -
-Rule	sol87	1987	only	-	Nov	21	11:45:45s 0:14:15 -
-Rule	sol87	1987	only	-	Nov	22	11:46:00s 0:14:00 -
-Rule	sol87	1987	only	-	Nov	23	11:46:15s 0:13:45 -
-Rule	sol87	1987	only	-	Nov	24	11:46:30s 0:13:30 -
-Rule	sol87	1987	only	-	Nov	25	11:46:50s 0:13:10 -
-Rule	sol87	1987	only	-	Nov	26	11:47:10s 0:12:50 -
-Rule	sol87	1987	only	-	Nov	27	11:47:25s 0:12:35 -
-Rule	sol87	1987	only	-	Nov	28	11:47:45s 0:12:15 -
-Rule	sol87	1987	only	-	Nov	29	11:48:05s 0:11:55 -
-Rule	sol87	1987	only	-	Nov	30	11:48:30s 0:11:30 -
-Rule	sol87	1987	only	-	Dec	1	11:48:50s 0:11:10 -
-Rule	sol87	1987	only	-	Dec	2	11:49:10s 0:10:50 -
-Rule	sol87	1987	only	-	Dec	3	11:49:35s 0:10:25 -
-Rule	sol87	1987	only	-	Dec	4	11:50:00s 0:10:00 -
-Rule	sol87	1987	only	-	Dec	5	11:50:25s 0:09:35 -
-Rule	sol87	1987	only	-	Dec	6	11:50:50s 0:09:10 -
-Rule	sol87	1987	only	-	Dec	7	11:51:15s 0:08:45 -
-Rule	sol87	1987	only	-	Dec	8	11:51:40s 0:08:20 -
-Rule	sol87	1987	only	-	Dec	9	11:52:05s 0:07:55 -
-Rule	sol87	1987	only	-	Dec	10	11:52:30s 0:07:30 -
-Rule	sol87	1987	only	-	Dec	11	11:53:00s 0:07:00 -
-Rule	sol87	1987	only	-	Dec	12	11:53:25s 0:06:35 -
-Rule	sol87	1987	only	-	Dec	13	11:53:55s 0:06:05 -
-Rule	sol87	1987	only	-	Dec	14	11:54:25s 0:05:35 -
-Rule	sol87	1987	only	-	Dec	15	11:54:50s 0:05:10 -
-Rule	sol87	1987	only	-	Dec	16	11:55:20s 0:04:40 -
-Rule	sol87	1987	only	-	Dec	17	11:55:50s 0:04:10 -
-Rule	sol87	1987	only	-	Dec	18	11:56:20s 0:03:40 -
-Rule	sol87	1987	only	-	Dec	19	11:56:50s 0:03:10 -
-Rule	sol87	1987	only	-	Dec	20	11:57:20s 0:02:40 -
-Rule	sol87	1987	only	-	Dec	21	11:57:50s 0:02:10 -
-Rule	sol87	1987	only	-	Dec	22	11:58:20s 0:01:40 -
-Rule	sol87	1987	only	-	Dec	23	11:58:50s 0:01:10 -
-Rule	sol87	1987	only	-	Dec	24	11:59:20s 0:00:40 -
-Rule	sol87	1987	only	-	Dec	25	11:59:50s 0:00:10 -
-Rule	sol87	1987	only	-	Dec	26	12:00:20s -0:00:20 -
-Rule	sol87	1987	only	-	Dec	27	12:00:45s -0:00:45 -
-Rule	sol87	1987	only	-	Dec	28	12:01:15s -0:01:15 -
-Rule	sol87	1987	only	-	Dec	29	12:01:45s -0:01:45 -
-Rule	sol87	1987	only	-	Dec	30	12:02:15s -0:02:15 -
-Rule	sol87	1987	only	-	Dec	31	12:02:45s -0:02:45 -
-
-# Riyadh is at about 46 degrees 46 minutes East:  3 hrs, 7 mins, 4 secs
-# Before and after 1987, we'll operate on local mean solar time.
-
-# Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
-Zone	Asia/Riyadh87	3:07:04	-		zzz	1987
-			3:07:04	sol87		zzz	1988
-			3:07:04	-		zzz
-# For backward compatibility...
-Link	Asia/Riyadh87	Mideast/Riyadh87
diff --git a/src/timezone/data/solar88 b/src/timezone/data/solar88
deleted file mode 100644
index 8db590edd9..0000000000
--- a/src/timezone/data/solar88
+++ /dev/null
@@ -1,391 +0,0 @@
-# 
-# @(#)solar88	8.2
-# This file is in the public domain, so clarified as of
-# 2009-05-17 by Arthur David Olson.
-
-# Apparent noon times below are for Riyadh; they're a bit off for other places.
-# Times were computed using formulas in the U.S. Naval Observatory's
-# Almanac for Computers 1988; the formulas "will give EqT to an accuracy of
-# [plus or minus two] seconds during the current year."
-#
-# Rounding to the nearest five seconds results in fewer than
-# 256 different "time types"--a limit that's faced because time types are
-# stored on disk as unsigned chars.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	sol88	1988	only	-	Jan	1	12:03:15s -0:03:15 -
-Rule	sol88	1988	only	-	Jan	2	12:03:40s -0:03:40 -
-Rule	sol88	1988	only	-	Jan	3	12:04:10s -0:04:10 -
-Rule	sol88	1988	only	-	Jan	4	12:04:40s -0:04:40 -
-Rule	sol88	1988	only	-	Jan	5	12:05:05s -0:05:05 -
-Rule	sol88	1988	only	-	Jan	6	12:05:30s -0:05:30 -
-Rule	sol88	1988	only	-	Jan	7	12:06:00s -0:06:00 -
-Rule	sol88	1988	only	-	Jan	8	12:06:25s -0:06:25 -
-Rule	sol88	1988	only	-	Jan	9	12:06:50s -0:06:50 -
-Rule	sol88	1988	only	-	Jan	10	12:07:15s -0:07:15 -
-Rule	sol88	1988	only	-	Jan	11	12:07:40s -0:07:40 -
-Rule	sol88	1988	only	-	Jan	12	12:08:05s -0:08:05 -
-Rule	sol88	1988	only	-	Jan	13	12:08:25s -0:08:25 -
-Rule	sol88	1988	only	-	Jan	14	12:08:50s -0:08:50 -
-Rule	sol88	1988	only	-	Jan	15	12:09:10s -0:09:10 -
-Rule	sol88	1988	only	-	Jan	16	12:09:30s -0:09:30 -
-Rule	sol88	1988	only	-	Jan	17	12:09:50s -0:09:50 -
-Rule	sol88	1988	only	-	Jan	18	12:10:10s -0:10:10 -
-Rule	sol88	1988	only	-	Jan	19	12:10:30s -0:10:30 -
-Rule	sol88	1988	only	-	Jan	20	12:10:50s -0:10:50 -
-Rule	sol88	1988	only	-	Jan	21	12:11:05s -0:11:05 -
-Rule	sol88	1988	only	-	Jan	22	12:11:25s -0:11:25 -
-Rule	sol88	1988	only	-	Jan	23	12:11:40s -0:11:40 -
-Rule	sol88	1988	only	-	Jan	24	12:11:55s -0:11:55 -
-Rule	sol88	1988	only	-	Jan	25	12:12:10s -0:12:10 -
-Rule	sol88	1988	only	-	Jan	26	12:12:25s -0:12:25 -
-Rule	sol88	1988	only	-	Jan	27	12:12:40s -0:12:40 -
-Rule	sol88	1988	only	-	Jan	28	12:12:50s -0:12:50 -
-Rule	sol88	1988	only	-	Jan	29	12:13:00s -0:13:00 -
-Rule	sol88	1988	only	-	Jan	30	12:13:10s -0:13:10 -
-Rule	sol88	1988	only	-	Jan	31	12:13:20s -0:13:20 -
-Rule	sol88	1988	only	-	Feb	1	12:13:30s -0:13:30 -
-Rule	sol88	1988	only	-	Feb	2	12:13:40s -0:13:40 -
-Rule	sol88	1988	only	-	Feb	3	12:13:45s -0:13:45 -
-Rule	sol88	1988	only	-	Feb	4	12:13:55s -0:13:55 -
-Rule	sol88	1988	only	-	Feb	5	12:14:00s -0:14:00 -
-Rule	sol88	1988	only	-	Feb	6	12:14:05s -0:14:05 -
-Rule	sol88	1988	only	-	Feb	7	12:14:10s -0:14:10 -
-Rule	sol88	1988	only	-	Feb	8	12:14:10s -0:14:10 -
-Rule	sol88	1988	only	-	Feb	9	12:14:15s -0:14:15 -
-Rule	sol88	1988	only	-	Feb	10	12:14:15s -0:14:15 -
-Rule	sol88	1988	only	-	Feb	11	12:14:15s -0:14:15 -
-Rule	sol88	1988	only	-	Feb	12	12:14:15s -0:14:15 -
-Rule	sol88	1988	only	-	Feb	13	12:14:15s -0:14:15 -
-Rule	sol88	1988	only	-	Feb	14	12:14:15s -0:14:15 -
-Rule	sol88	1988	only	-	Feb	15	12:14:10s -0:14:10 -
-Rule	sol88	1988	only	-	Feb	16	12:14:10s -0:14:10 -
-Rule	sol88	1988	only	-	Feb	17	12:14:05s -0:14:05 -
-Rule	sol88	1988	only	-	Feb	18	12:14:00s -0:14:00 -
-Rule	sol88	1988	only	-	Feb	19	12:13:55s -0:13:55 -
-Rule	sol88	1988	only	-	Feb	20	12:13:50s -0:13:50 -
-Rule	sol88	1988	only	-	Feb	21	12:13:45s -0:13:45 -
-Rule	sol88	1988	only	-	Feb	22	12:13:40s -0:13:40 -
-Rule	sol88	1988	only	-	Feb	23	12:13:30s -0:13:30 -
-Rule	sol88	1988	only	-	Feb	24	12:13:20s -0:13:20 -
-Rule	sol88	1988	only	-	Feb	25	12:13:15s -0:13:15 -
-Rule	sol88	1988	only	-	Feb	26	12:13:05s -0:13:05 -
-Rule	sol88	1988	only	-	Feb	27	12:12:55s -0:12:55 -
-Rule	sol88	1988	only	-	Feb	28	12:12:45s -0:12:45 -
-Rule	sol88	1988	only	-	Feb	29	12:12:30s -0:12:30 -
-Rule	sol88	1988	only	-	Mar	1	12:12:20s -0:12:20 -
-Rule	sol88	1988	only	-	Mar	2	12:12:10s -0:12:10 -
-Rule	sol88	1988	only	-	Mar	3	12:11:55s -0:11:55 -
-Rule	sol88	1988	only	-	Mar	4	12:11:45s -0:11:45 -
-Rule	sol88	1988	only	-	Mar	5	12:11:30s -0:11:30 -
-Rule	sol88	1988	only	-	Mar	6	12:11:15s -0:11:15 -
-Rule	sol88	1988	only	-	Mar	7	12:11:00s -0:11:00 -
-Rule	sol88	1988	only	-	Mar	8	12:10:45s -0:10:45 -
-Rule	sol88	1988	only	-	Mar	9	12:10:30s -0:10:30 -
-Rule	sol88	1988	only	-	Mar	10	12:10:15s -0:10:15 -
-Rule	sol88	1988	only	-	Mar	11	12:10:00s -0:10:00 -
-Rule	sol88	1988	only	-	Mar	12	12:09:45s -0:09:45 -
-Rule	sol88	1988	only	-	Mar	13	12:09:30s -0:09:30 -
-Rule	sol88	1988	only	-	Mar	14	12:09:10s -0:09:10 -
-Rule	sol88	1988	only	-	Mar	15	12:08:55s -0:08:55 -
-Rule	sol88	1988	only	-	Mar	16	12:08:40s -0:08:40 -
-Rule	sol88	1988	only	-	Mar	17	12:08:20s -0:08:20 -
-Rule	sol88	1988	only	-	Mar	18	12:08:05s -0:08:05 -
-Rule	sol88	1988	only	-	Mar	19	12:07:45s -0:07:45 -
-Rule	sol88	1988	only	-	Mar	20	12:07:30s -0:07:30 -
-Rule	sol88	1988	only	-	Mar	21	12:07:10s -0:07:10 -
-Rule	sol88	1988	only	-	Mar	22	12:06:50s -0:06:50 -
-Rule	sol88	1988	only	-	Mar	23	12:06:35s -0:06:35 -
-Rule	sol88	1988	only	-	Mar	24	12:06:15s -0:06:15 -
-Rule	sol88	1988	only	-	Mar	25	12:06:00s -0:06:00 -
-Rule	sol88	1988	only	-	Mar	26	12:05:40s -0:05:40 -
-Rule	sol88	1988	only	-	Mar	27	12:05:20s -0:05:20 -
-Rule	sol88	1988	only	-	Mar	28	12:05:05s -0:05:05 -
-Rule	sol88	1988	only	-	Mar	29	12:04:45s -0:04:45 -
-Rule	sol88	1988	only	-	Mar	30	12:04:25s -0:04:25 -
-Rule	sol88	1988	only	-	Mar	31	12:04:10s -0:04:10 -
-Rule	sol88	1988	only	-	Apr	1	12:03:50s -0:03:50 -
-Rule	sol88	1988	only	-	Apr	2	12:03:35s -0:03:35 -
-Rule	sol88	1988	only	-	Apr	3	12:03:15s -0:03:15 -
-Rule	sol88	1988	only	-	Apr	4	12:03:00s -0:03:00 -
-Rule	sol88	1988	only	-	Apr	5	12:02:40s -0:02:40 -
-Rule	sol88	1988	only	-	Apr	6	12:02:25s -0:02:25 -
-Rule	sol88	1988	only	-	Apr	7	12:02:05s -0:02:05 -
-Rule	sol88	1988	only	-	Apr	8	12:01:50s -0:01:50 -
-Rule	sol88	1988	only	-	Apr	9	12:01:35s -0:01:35 -
-Rule	sol88	1988	only	-	Apr	10	12:01:15s -0:01:15 -
-Rule	sol88	1988	only	-	Apr	11	12:01:00s -0:01:00 -
-Rule	sol88	1988	only	-	Apr	12	12:00:45s -0:00:45 -
-Rule	sol88	1988	only	-	Apr	13	12:00:30s -0:00:30 -
-Rule	sol88	1988	only	-	Apr	14	12:00:15s -0:00:15 -
-Rule	sol88	1988	only	-	Apr	15	12:00:00s 0:00:00 -
-Rule	sol88	1988	only	-	Apr	16	11:59:45s 0:00:15 -
-Rule	sol88	1988	only	-	Apr	17	11:59:30s 0:00:30 -
-Rule	sol88	1988	only	-	Apr	18	11:59:20s 0:00:40 -
-Rule	sol88	1988	only	-	Apr	19	11:59:05s 0:00:55 -
-Rule	sol88	1988	only	-	Apr	20	11:58:55s 0:01:05 -
-Rule	sol88	1988	only	-	Apr	21	11:58:40s 0:01:20 -
-Rule	sol88	1988	only	-	Apr	22	11:58:30s 0:01:30 -
-Rule	sol88	1988	only	-	Apr	23	11:58:15s 0:01:45 -
-Rule	sol88	1988	only	-	Apr	24	11:58:05s 0:01:55 -
-Rule	sol88	1988	only	-	Apr	25	11:57:55s 0:02:05 -
-Rule	sol88	1988	only	-	Apr	26	11:57:45s 0:02:15 -
-Rule	sol88	1988	only	-	Apr	27	11:57:35s 0:02:25 -
-Rule	sol88	1988	only	-	Apr	28	11:57:30s 0:02:30 -
-Rule	sol88	1988	only	-	Apr	29	11:57:20s 0:02:40 -
-Rule	sol88	1988	only	-	Apr	30	11:57:10s 0:02:50 -
-Rule	sol88	1988	only	-	May	1	11:57:05s 0:02:55 -
-Rule	sol88	1988	only	-	May	2	11:56:55s 0:03:05 -
-Rule	sol88	1988	only	-	May	3	11:56:50s 0:03:10 -
-Rule	sol88	1988	only	-	May	4	11:56:45s 0:03:15 -
-Rule	sol88	1988	only	-	May	5	11:56:40s 0:03:20 -
-Rule	sol88	1988	only	-	May	6	11:56:35s 0:03:25 -
-Rule	sol88	1988	only	-	May	7	11:56:30s 0:03:30 -
-Rule	sol88	1988	only	-	May	8	11:56:25s 0:03:35 -
-Rule	sol88	1988	only	-	May	9	11:56:25s 0:03:35 -
-Rule	sol88	1988	only	-	May	10	11:56:20s 0:03:40 -
-Rule	sol88	1988	only	-	May	11	11:56:20s 0:03:40 -
-Rule	sol88	1988	only	-	May	12	11:56:20s 0:03:40 -
-Rule	sol88	1988	only	-	May	13	11:56:20s 0:03:40 -
-Rule	sol88	1988	only	-	May	14	11:56:20s 0:03:40 -
-Rule	sol88	1988	only	-	May	15	11:56:20s 0:03:40 -
-Rule	sol88	1988	only	-	May	16	11:56:20s 0:03:40 -
-Rule	sol88	1988	only	-	May	17	11:56:20s 0:03:40 -
-Rule	sol88	1988	only	-	May	18	11:56:25s 0:03:35 -
-Rule	sol88	1988	only	-	May	19	11:56:25s 0:03:35 -
-Rule	sol88	1988	only	-	May	20	11:56:30s 0:03:30 -
-Rule	sol88	1988	only	-	May	21	11:56:35s 0:03:25 -
-Rule	sol88	1988	only	-	May	22	11:56:40s 0:03:20 -
-Rule	sol88	1988	only	-	May	23	11:56:45s 0:03:15 -
-Rule	sol88	1988	only	-	May	24	11:56:50s 0:03:10 -
-Rule	sol88	1988	only	-	May	25	11:56:55s 0:03:05 -
-Rule	sol88	1988	only	-	May	26	11:57:00s 0:03:00 -
-Rule	sol88	1988	only	-	May	27	11:57:05s 0:02:55 -
-Rule	sol88	1988	only	-	May	28	11:57:15s 0:02:45 -
-Rule	sol88	1988	only	-	May	29	11:57:20s 0:02:40 -
-Rule	sol88	1988	only	-	May	30	11:57:30s 0:02:30 -
-Rule	sol88	1988	only	-	May	31	11:57:40s 0:02:20 -
-Rule	sol88	1988	only	-	Jun	1	11:57:50s 0:02:10 -
-Rule	sol88	1988	only	-	Jun	2	11:57:55s 0:02:05 -
-Rule	sol88	1988	only	-	Jun	3	11:58:05s 0:01:55 -
-Rule	sol88	1988	only	-	Jun	4	11:58:15s 0:01:45 -
-Rule	sol88	1988	only	-	Jun	5	11:58:30s 0:01:30 -
-Rule	sol88	1988	only	-	Jun	6	11:58:40s 0:01:20 -
-Rule	sol88	1988	only	-	Jun	7	11:58:50s 0:01:10 -
-Rule	sol88	1988	only	-	Jun	8	11:59:00s 0:01:00 -
-Rule	sol88	1988	only	-	Jun	9	11:59:15s 0:00:45 -
-Rule	sol88	1988	only	-	Jun	10	11:59:25s 0:00:35 -
-Rule	sol88	1988	only	-	Jun	11	11:59:35s 0:00:25 -
-Rule	sol88	1988	only	-	Jun	12	11:59:50s 0:00:10 -
-Rule	sol88	1988	only	-	Jun	13	12:00:00s 0:00:00 -
-Rule	sol88	1988	only	-	Jun	14	12:00:15s -0:00:15 -
-Rule	sol88	1988	only	-	Jun	15	12:00:25s -0:00:25 -
-Rule	sol88	1988	only	-	Jun	16	12:00:40s -0:00:40 -
-Rule	sol88	1988	only	-	Jun	17	12:00:55s -0:00:55 -
-Rule	sol88	1988	only	-	Jun	18	12:01:05s -0:01:05 -
-Rule	sol88	1988	only	-	Jun	19	12:01:20s -0:01:20 -
-Rule	sol88	1988	only	-	Jun	20	12:01:30s -0:01:30 -
-Rule	sol88	1988	only	-	Jun	21	12:01:45s -0:01:45 -
-Rule	sol88	1988	only	-	Jun	22	12:02:00s -0:02:00 -
-Rule	sol88	1988	only	-	Jun	23	12:02:10s -0:02:10 -
-Rule	sol88	1988	only	-	Jun	24	12:02:25s -0:02:25 -
-Rule	sol88	1988	only	-	Jun	25	12:02:35s -0:02:35 -
-Rule	sol88	1988	only	-	Jun	26	12:02:50s -0:02:50 -
-Rule	sol88	1988	only	-	Jun	27	12:03:00s -0:03:00 -
-Rule	sol88	1988	only	-	Jun	28	12:03:15s -0:03:15 -
-Rule	sol88	1988	only	-	Jun	29	12:03:25s -0:03:25 -
-Rule	sol88	1988	only	-	Jun	30	12:03:40s -0:03:40 -
-Rule	sol88	1988	only	-	Jul	1	12:03:50s -0:03:50 -
-Rule	sol88	1988	only	-	Jul	2	12:04:00s -0:04:00 -
-Rule	sol88	1988	only	-	Jul	3	12:04:10s -0:04:10 -
-Rule	sol88	1988	only	-	Jul	4	12:04:25s -0:04:25 -
-Rule	sol88	1988	only	-	Jul	5	12:04:35s -0:04:35 -
-Rule	sol88	1988	only	-	Jul	6	12:04:45s -0:04:45 -
-Rule	sol88	1988	only	-	Jul	7	12:04:55s -0:04:55 -
-Rule	sol88	1988	only	-	Jul	8	12:05:05s -0:05:05 -
-Rule	sol88	1988	only	-	Jul	9	12:05:10s -0:05:10 -
-Rule	sol88	1988	only	-	Jul	10	12:05:20s -0:05:20 -
-Rule	sol88	1988	only	-	Jul	11	12:05:30s -0:05:30 -
-Rule	sol88	1988	only	-	Jul	12	12:05:35s -0:05:35 -
-Rule	sol88	1988	only	-	Jul	13	12:05:45s -0:05:45 -
-Rule	sol88	1988	only	-	Jul	14	12:05:50s -0:05:50 -
-Rule	sol88	1988	only	-	Jul	15	12:05:55s -0:05:55 -
-Rule	sol88	1988	only	-	Jul	16	12:06:00s -0:06:00 -
-Rule	sol88	1988	only	-	Jul	17	12:06:05s -0:06:05 -
-Rule	sol88	1988	only	-	Jul	18	12:06:10s -0:06:10 -
-Rule	sol88	1988	only	-	Jul	19	12:06:15s -0:06:15 -
-Rule	sol88	1988	only	-	Jul	20	12:06:20s -0:06:20 -
-Rule	sol88	1988	only	-	Jul	21	12:06:25s -0:06:25 -
-Rule	sol88	1988	only	-	Jul	22	12:06:25s -0:06:25 -
-Rule	sol88	1988	only	-	Jul	23	12:06:25s -0:06:25 -
-Rule	sol88	1988	only	-	Jul	24	12:06:30s -0:06:30 -
-Rule	sol88	1988	only	-	Jul	25	12:06:30s -0:06:30 -
-Rule	sol88	1988	only	-	Jul	26	12:06:30s -0:06:30 -
-Rule	sol88	1988	only	-	Jul	27	12:06:30s -0:06:30 -
-Rule	sol88	1988	only	-	Jul	28	12:06:30s -0:06:30 -
-Rule	sol88	1988	only	-	Jul	29	12:06:25s -0:06:25 -
-Rule	sol88	1988	only	-	Jul	30	12:06:25s -0:06:25 -
-Rule	sol88	1988	only	-	Jul	31	12:06:20s -0:06:20 -
-Rule	sol88	1988	only	-	Aug	1	12:06:15s -0:06:15 -
-Rule	sol88	1988	only	-	Aug	2	12:06:15s -0:06:15 -
-Rule	sol88	1988	only	-	Aug	3	12:06:10s -0:06:10 -
-Rule	sol88	1988	only	-	Aug	4	12:06:05s -0:06:05 -
-Rule	sol88	1988	only	-	Aug	5	12:05:55s -0:05:55 -
-Rule	sol88	1988	only	-	Aug	6	12:05:50s -0:05:50 -
-Rule	sol88	1988	only	-	Aug	7	12:05:45s -0:05:45 -
-Rule	sol88	1988	only	-	Aug	8	12:05:35s -0:05:35 -
-Rule	sol88	1988	only	-	Aug	9	12:05:25s -0:05:25 -
-Rule	sol88	1988	only	-	Aug	10	12:05:20s -0:05:20 -
-Rule	sol88	1988	only	-	Aug	11	12:05:10s -0:05:10 -
-Rule	sol88	1988	only	-	Aug	12	12:05:00s -0:05:00 -
-Rule	sol88	1988	only	-	Aug	13	12:04:50s -0:04:50 -
-Rule	sol88	1988	only	-	Aug	14	12:04:35s -0:04:35 -
-Rule	sol88	1988	only	-	Aug	15	12:04:25s -0:04:25 -
-Rule	sol88	1988	only	-	Aug	16	12:04:15s -0:04:15 -
-Rule	sol88	1988	only	-	Aug	17	12:04:00s -0:04:00 -
-Rule	sol88	1988	only	-	Aug	18	12:03:50s -0:03:50 -
-Rule	sol88	1988	only	-	Aug	19	12:03:35s -0:03:35 -
-Rule	sol88	1988	only	-	Aug	20	12:03:20s -0:03:20 -
-Rule	sol88	1988	only	-	Aug	21	12:03:05s -0:03:05 -
-Rule	sol88	1988	only	-	Aug	22	12:02:50s -0:02:50 -
-Rule	sol88	1988	only	-	Aug	23	12:02:35s -0:02:35 -
-Rule	sol88	1988	only	-	Aug	24	12:02:20s -0:02:20 -
-Rule	sol88	1988	only	-	Aug	25	12:02:00s -0:02:00 -
-Rule	sol88	1988	only	-	Aug	26	12:01:45s -0:01:45 -
-Rule	sol88	1988	only	-	Aug	27	12:01:30s -0:01:30 -
-Rule	sol88	1988	only	-	Aug	28	12:01:10s -0:01:10 -
-Rule	sol88	1988	only	-	Aug	29	12:00:50s -0:00:50 -
-Rule	sol88	1988	only	-	Aug	30	12:00:35s -0:00:35 -
-Rule	sol88	1988	only	-	Aug	31	12:00:15s -0:00:15 -
-Rule	sol88	1988	only	-	Sep	1	11:59:55s 0:00:05 -
-Rule	sol88	1988	only	-	Sep	2	11:59:35s 0:00:25 -
-Rule	sol88	1988	only	-	Sep	3	11:59:20s 0:00:40 -
-Rule	sol88	1988	only	-	Sep	4	11:59:00s 0:01:00 -
-Rule	sol88	1988	only	-	Sep	5	11:58:40s 0:01:20 -
-Rule	sol88	1988	only	-	Sep	6	11:58:20s 0:01:40 -
-Rule	sol88	1988	only	-	Sep	7	11:58:00s 0:02:00 -
-Rule	sol88	1988	only	-	Sep	8	11:57:35s 0:02:25 -
-Rule	sol88	1988	only	-	Sep	9	11:57:15s 0:02:45 -
-Rule	sol88	1988	only	-	Sep	10	11:56:55s 0:03:05 -
-Rule	sol88	1988	only	-	Sep	11	11:56:35s 0:03:25 -
-Rule	sol88	1988	only	-	Sep	12	11:56:15s 0:03:45 -
-Rule	sol88	1988	only	-	Sep	13	11:55:50s 0:04:10 -
-Rule	sol88	1988	only	-	Sep	14	11:55:30s 0:04:30 -
-Rule	sol88	1988	only	-	Sep	15	11:55:10s 0:04:50 -
-Rule	sol88	1988	only	-	Sep	16	11:54:50s 0:05:10 -
-Rule	sol88	1988	only	-	Sep	17	11:54:25s 0:05:35 -
-Rule	sol88	1988	only	-	Sep	18	11:54:05s 0:05:55 -
-Rule	sol88	1988	only	-	Sep	19	11:53:45s 0:06:15 -
-Rule	sol88	1988	only	-	Sep	20	11:53:25s 0:06:35 -
-Rule	sol88	1988	only	-	Sep	21	11:53:00s 0:07:00 -
-Rule	sol88	1988	only	-	Sep	22	11:52:40s 0:07:20 -
-Rule	sol88	1988	only	-	Sep	23	11:52:20s 0:07:40 -
-Rule	sol88	1988	only	-	Sep	24	11:52:00s 0:08:00 -
-Rule	sol88	1988	only	-	Sep	25	11:51:40s 0:08:20 -
-Rule	sol88	1988	only	-	Sep	26	11:51:15s 0:08:45 -
-Rule	sol88	1988	only	-	Sep	27	11:50:55s 0:09:05 -
-Rule	sol88	1988	only	-	Sep	28	11:50:35s 0:09:25 -
-Rule	sol88	1988	only	-	Sep	29	11:50:15s 0:09:45 -
-Rule	sol88	1988	only	-	Sep	30	11:49:55s 0:10:05 -
-Rule	sol88	1988	only	-	Oct	1	11:49:35s 0:10:25 -
-Rule	sol88	1988	only	-	Oct	2	11:49:20s 0:10:40 -
-Rule	sol88	1988	only	-	Oct	3	11:49:00s 0:11:00 -
-Rule	sol88	1988	only	-	Oct	4	11:48:40s 0:11:20 -
-Rule	sol88	1988	only	-	Oct	5	11:48:25s 0:11:35 -
-Rule	sol88	1988	only	-	Oct	6	11:48:05s 0:11:55 -
-Rule	sol88	1988	only	-	Oct	7	11:47:50s 0:12:10 -
-Rule	sol88	1988	only	-	Oct	8	11:47:30s 0:12:30 -
-Rule	sol88	1988	only	-	Oct	9	11:47:15s 0:12:45 -
-Rule	sol88	1988	only	-	Oct	10	11:47:00s 0:13:00 -
-Rule	sol88	1988	only	-	Oct	11	11:46:45s 0:13:15 -
-Rule	sol88	1988	only	-	Oct	12	11:46:30s 0:13:30 -
-Rule	sol88	1988	only	-	Oct	13	11:46:15s 0:13:45 -
-Rule	sol88	1988	only	-	Oct	14	11:46:00s 0:14:00 -
-Rule	sol88	1988	only	-	Oct	15	11:45:45s 0:14:15 -
-Rule	sol88	1988	only	-	Oct	16	11:45:35s 0:14:25 -
-Rule	sol88	1988	only	-	Oct	17	11:45:20s 0:14:40 -
-Rule	sol88	1988	only	-	Oct	18	11:45:10s 0:14:50 -
-Rule	sol88	1988	only	-	Oct	19	11:45:00s 0:15:00 -
-Rule	sol88	1988	only	-	Oct	20	11:44:45s 0:15:15 -
-Rule	sol88	1988	only	-	Oct	21	11:44:40s 0:15:20 -
-Rule	sol88	1988	only	-	Oct	22	11:44:30s 0:15:30 -
-Rule	sol88	1988	only	-	Oct	23	11:44:20s 0:15:40 -
-Rule	sol88	1988	only	-	Oct	24	11:44:10s 0:15:50 -
-Rule	sol88	1988	only	-	Oct	25	11:44:05s 0:15:55 -
-Rule	sol88	1988	only	-	Oct	26	11:44:00s 0:16:00 -
-Rule	sol88	1988	only	-	Oct	27	11:43:55s 0:16:05 -
-Rule	sol88	1988	only	-	Oct	28	11:43:50s 0:16:10 -
-Rule	sol88	1988	only	-	Oct	29	11:43:45s 0:16:15 -
-Rule	sol88	1988	only	-	Oct	30	11:43:40s 0:16:20 -
-Rule	sol88	1988	only	-	Oct	31	11:43:40s 0:16:20 -
-Rule	sol88	1988	only	-	Nov	1	11:43:35s 0:16:25 -
-Rule	sol88	1988	only	-	Nov	2	11:43:35s 0:16:25 -
-Rule	sol88	1988	only	-	Nov	3	11:43:35s 0:16:25 -
-Rule	sol88	1988	only	-	Nov	4	11:43:35s 0:16:25 -
-Rule	sol88	1988	only	-	Nov	5	11:43:40s 0:16:20 -
-Rule	sol88	1988	only	-	Nov	6	11:43:40s 0:16:20 -
-Rule	sol88	1988	only	-	Nov	7	11:43:45s 0:16:15 -
-Rule	sol88	1988	only	-	Nov	8	11:43:45s 0:16:15 -
-Rule	sol88	1988	only	-	Nov	9	11:43:50s 0:16:10 -
-Rule	sol88	1988	only	-	Nov	10	11:44:00s 0:16:00 -
-Rule	sol88	1988	only	-	Nov	11	11:44:05s 0:15:55 -
-Rule	sol88	1988	only	-	Nov	12	11:44:10s 0:15:50 -
-Rule	sol88	1988	only	-	Nov	13	11:44:20s 0:15:40 -
-Rule	sol88	1988	only	-	Nov	14	11:44:30s 0:15:30 -
-Rule	sol88	1988	only	-	Nov	15	11:44:40s 0:15:20 -
-Rule	sol88	1988	only	-	Nov	16	11:44:50s 0:15:10 -
-Rule	sol88	1988	only	-	Nov	17	11:45:00s 0:15:00 -
-Rule	sol88	1988	only	-	Nov	18	11:45:15s 0:14:45 -
-Rule	sol88	1988	only	-	Nov	19	11:45:25s 0:14:35 -
-Rule	sol88	1988	only	-	Nov	20	11:45:40s 0:14:20 -
-Rule	sol88	1988	only	-	Nov	21	11:45:55s 0:14:05 -
-Rule	sol88	1988	only	-	Nov	22	11:46:10s 0:13:50 -
-Rule	sol88	1988	only	-	Nov	23	11:46:30s 0:13:30 -
-Rule	sol88	1988	only	-	Nov	24	11:46:45s 0:13:15 -
-Rule	sol88	1988	only	-	Nov	25	11:47:05s 0:12:55 -
-Rule	sol88	1988	only	-	Nov	26	11:47:20s 0:12:40 -
-Rule	sol88	1988	only	-	Nov	27	11:47:40s 0:12:20 -
-Rule	sol88	1988	only	-	Nov	28	11:48:00s 0:12:00 -
-Rule	sol88	1988	only	-	Nov	29	11:48:25s 0:11:35 -
-Rule	sol88	1988	only	-	Nov	30	11:48:45s 0:11:15 -
-Rule	sol88	1988	only	-	Dec	1	11:49:05s 0:10:55 -
-Rule	sol88	1988	only	-	Dec	2	11:49:30s 0:10:30 -
-Rule	sol88	1988	only	-	Dec	3	11:49:55s 0:10:05 -
-Rule	sol88	1988	only	-	Dec	4	11:50:15s 0:09:45 -
-Rule	sol88	1988	only	-	Dec	5	11:50:40s 0:09:20 -
-Rule	sol88	1988	only	-	Dec	6	11:51:05s 0:08:55 -
-Rule	sol88	1988	only	-	Dec	7	11:51:35s 0:08:25 -
-Rule	sol88	1988	only	-	Dec	8	11:52:00s 0:08:00 -
-Rule	sol88	1988	only	-	Dec	9	11:52:25s 0:07:35 -
-Rule	sol88	1988	only	-	Dec	10	11:52:55s 0:07:05 -
-Rule	sol88	1988	only	-	Dec	11	11:53:20s 0:06:40 -
-Rule	sol88	1988	only	-	Dec	12	11:53:50s 0:06:10 -
-Rule	sol88	1988	only	-	Dec	13	11:54:15s 0:05:45 -
-Rule	sol88	1988	only	-	Dec	14	11:54:45s 0:05:15 -
-Rule	sol88	1988	only	-	Dec	15	11:55:15s 0:04:45 -
-Rule	sol88	1988	only	-	Dec	16	11:55:45s 0:04:15 -
-Rule	sol88	1988	only	-	Dec	17	11:56:15s 0:03:45 -
-Rule	sol88	1988	only	-	Dec	18	11:56:40s 0:03:20 -
-Rule	sol88	1988	only	-	Dec	19	11:57:10s 0:02:50 -
-Rule	sol88	1988	only	-	Dec	20	11:57:40s 0:02:20 -
-Rule	sol88	1988	only	-	Dec	21	11:58:10s 0:01:50 -
-Rule	sol88	1988	only	-	Dec	22	11:58:40s 0:01:20 -
-Rule	sol88	1988	only	-	Dec	23	11:59:10s 0:00:50 -
-Rule	sol88	1988	only	-	Dec	24	11:59:40s 0:00:20 -
-Rule	sol88	1988	only	-	Dec	25	12:00:10s -0:00:10 -
-Rule	sol88	1988	only	-	Dec	26	12:00:40s -0:00:40 -
-Rule	sol88	1988	only	-	Dec	27	12:01:10s -0:01:10 -
-Rule	sol88	1988	only	-	Dec	28	12:01:40s -0:01:40 -
-Rule	sol88	1988	only	-	Dec	29	12:02:10s -0:02:10 -
-Rule	sol88	1988	only	-	Dec	30	12:02:35s -0:02:35 -
-Rule	sol88	1988	only	-	Dec	31	12:03:05s -0:03:05 -
-
-# Riyadh is at about 46 degrees 46 minutes East:  3 hrs, 7 mins, 4 secs
-# Before and after 1988, we'll operate on local mean solar time.
-
-# Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
-Zone	Asia/Riyadh88	3:07:04	-		zzz	1988
-			3:07:04	sol88		zzz	1989
-			3:07:04	-		zzz
-# For backward compatibility...
-Link	Asia/Riyadh88	Mideast/Riyadh88
diff --git a/src/timezone/data/solar89 b/src/timezone/data/solar89
deleted file mode 100644
index d24de4a77e..0000000000
--- a/src/timezone/data/solar89
+++ /dev/null
@@ -1,396 +0,0 @@
-# 
-# @(#)solar89	8.2
-# This file is in the public domain, so clarified as of
-# 2009-05-17 by Arthur David Olson.
-
-# Apparent noon times below are for Riyadh; they're a bit off for other places.
-# Times were computed using a formula provided by the U. S. Naval Observatory:
-#	eqt = -105.8 * sin(l) + 596.2 * sin(2 * l) + 4.4 * sin(3 * l)
-#		-12.7 * sin(4 * l) - 429.0 * cos(l) - 2.1 * cos (2 * l)
-#		+ 19.3 * cos(3 * l);
-# where l is the "mean longitude of the Sun" given by
-#	l = 279.642 degrees + 0.985647 * d
-# and d is the interval in days from January 0, 0 hours Universal Time
-# (equaling the day of the year plus the fraction of a day from zero hours).
-# The accuracy of the formula is plus or minus three seconds.
-#
-# Rounding to the nearest five seconds results in fewer than
-# 256 different "time types"--a limit that's faced because time types are
-# stored on disk as unsigned chars.
-
-# Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	sol89	1989	only	-	Jan	1	12:03:35s -0:03:35 -
-Rule	sol89	1989	only	-	Jan	2	12:04:05s -0:04:05 -
-Rule	sol89	1989	only	-	Jan	3	12:04:30s -0:04:30 -
-Rule	sol89	1989	only	-	Jan	4	12:05:00s -0:05:00 -
-Rule	sol89	1989	only	-	Jan	5	12:05:25s -0:05:25 -
-Rule	sol89	1989	only	-	Jan	6	12:05:50s -0:05:50 -
-Rule	sol89	1989	only	-	Jan	7	12:06:15s -0:06:15 -
-Rule	sol89	1989	only	-	Jan	8	12:06:45s -0:06:45 -
-Rule	sol89	1989	only	-	Jan	9	12:07:10s -0:07:10 -
-Rule	sol89	1989	only	-	Jan	10	12:07:35s -0:07:35 -
-Rule	sol89	1989	only	-	Jan	11	12:07:55s -0:07:55 -
-Rule	sol89	1989	only	-	Jan	12	12:08:20s -0:08:20 -
-Rule	sol89	1989	only	-	Jan	13	12:08:45s -0:08:45 -
-Rule	sol89	1989	only	-	Jan	14	12:09:05s -0:09:05 -
-Rule	sol89	1989	only	-	Jan	15	12:09:25s -0:09:25 -
-Rule	sol89	1989	only	-	Jan	16	12:09:45s -0:09:45 -
-Rule	sol89	1989	only	-	Jan	17	12:10:05s -0:10:05 -
-Rule	sol89	1989	only	-	Jan	18	12:10:25s -0:10:25 -
-Rule	sol89	1989	only	-	Jan	19	12:10:45s -0:10:45 -
-Rule	sol89	1989	only	-	Jan	20	12:11:05s -0:11:05 -
-Rule	sol89	1989	only	-	Jan	21	12:11:20s -0:11:20 -
-Rule	sol89	1989	only	-	Jan	22	12:11:35s -0:11:35 -
-Rule	sol89	1989	only	-	Jan	23	12:11:55s -0:11:55 -
-Rule	sol89	1989	only	-	Jan	24	12:12:10s -0:12:10 -
-Rule	sol89	1989	only	-	Jan	25	12:12:20s -0:12:20 -
-Rule	sol89	1989	only	-	Jan	26	12:12:35s -0:12:35 -
-Rule	sol89	1989	only	-	Jan	27	12:12:50s -0:12:50 -
-Rule	sol89	1989	only	-	Jan	28	12:13:00s -0:13:00 -
-Rule	sol89	1989	only	-	Jan	29	12:13:10s -0:13:10 -
-Rule	sol89	1989	only	-	Jan	30	12:13:20s -0:13:20 -
-Rule	sol89	1989	only	-	Jan	31	12:13:30s -0:13:30 -
-Rule	sol89	1989	only	-	Feb	1	12:13:40s -0:13:40 -
-Rule	sol89	1989	only	-	Feb	2	12:13:45s -0:13:45 -
-Rule	sol89	1989	only	-	Feb	3	12:13:55s -0:13:55 -
-Rule	sol89	1989	only	-	Feb	4	12:14:00s -0:14:00 -
-Rule	sol89	1989	only	-	Feb	5	12:14:05s -0:14:05 -
-Rule	sol89	1989	only	-	Feb	6	12:14:10s -0:14:10 -
-Rule	sol89	1989	only	-	Feb	7	12:14:10s -0:14:10 -
-Rule	sol89	1989	only	-	Feb	8	12:14:15s -0:14:15 -
-Rule	sol89	1989	only	-	Feb	9	12:14:15s -0:14:15 -
-Rule	sol89	1989	only	-	Feb	10	12:14:20s -0:14:20 -
-Rule	sol89	1989	only	-	Feb	11	12:14:20s -0:14:20 -
-Rule	sol89	1989	only	-	Feb	12	12:14:20s -0:14:20 -
-Rule	sol89	1989	only	-	Feb	13	12:14:15s -0:14:15 -
-Rule	sol89	1989	only	-	Feb	14	12:14:15s -0:14:15 -
-Rule	sol89	1989	only	-	Feb	15	12:14:10s -0:14:10 -
-Rule	sol89	1989	only	-	Feb	16	12:14:10s -0:14:10 -
-Rule	sol89	1989	only	-	Feb	17	12:14:05s -0:14:05 -
-Rule	sol89	1989	only	-	Feb	18	12:14:00s -0:14:00 -
-Rule	sol89	1989	only	-	Feb	19	12:13:55s -0:13:55 -
-Rule	sol89	1989	only	-	Feb	20	12:13:50s -0:13:50 -
-Rule	sol89	1989	only	-	Feb	21	12:13:40s -0:13:40 -
-Rule	sol89	1989	only	-	Feb	22	12:13:35s -0:13:35 -
-Rule	sol89	1989	only	-	Feb	23	12:13:25s -0:13:25 -
-Rule	sol89	1989	only	-	Feb	24	12:13:15s -0:13:15 -
-Rule	sol89	1989	only	-	Feb	25	12:13:05s -0:13:05 -
-Rule	sol89	1989	only	-	Feb	26	12:12:55s -0:12:55 -
-Rule	sol89	1989	only	-	Feb	27	12:12:45s -0:12:45 -
-Rule	sol89	1989	only	-	Feb	28	12:12:35s -0:12:35 -
-Rule	sol89	1989	only	-	Mar	1	12:12:25s -0:12:25 -
-Rule	sol89	1989	only	-	Mar	2	12:12:10s -0:12:10 -
-Rule	sol89	1989	only	-	Mar	3	12:12:00s -0:12:00 -
-Rule	sol89	1989	only	-	Mar	4	12:11:45s -0:11:45 -
-Rule	sol89	1989	only	-	Mar	5	12:11:35s -0:11:35 -
-Rule	sol89	1989	only	-	Mar	6	12:11:20s -0:11:20 -
-Rule	sol89	1989	only	-	Mar	7	12:11:05s -0:11:05 -
-Rule	sol89	1989	only	-	Mar	8	12:10:50s -0:10:50 -
-Rule	sol89	1989	only	-	Mar	9	12:10:35s -0:10:35 -
-Rule	sol89	1989	only	-	Mar	10	12:10:20s -0:10:20 -
-Rule	sol89	1989	only	-	Mar	11	12:10:05s -0:10:05 -
-Rule	sol89	1989	only	-	Mar	12	12:09:50s -0:09:50 -
-Rule	sol89	1989	only	-	Mar	13	12:09:30s -0:09:30 -
-Rule	sol89	1989	only	-	Mar	14	12:09:15s -0:09:15 -
-Rule	sol89	1989	only	-	Mar	15	12:09:00s -0:09:00 -
-Rule	sol89	1989	only	-	Mar	16	12:08:40s -0:08:40 -
-Rule	sol89	1989	only	-	Mar	17	12:08:25s -0:08:25 -
-Rule	sol89	1989	only	-	Mar	18	12:08:05s -0:08:05 -
-Rule	sol89	1989	only	-	Mar	19	12:07:50s -0:07:50 -
-Rule	sol89	1989	only	-	Mar	20	12:07:30s -0:07:30 -
-Rule	sol89	1989	only	-	Mar	21	12:07:15s -0:07:15 -
-Rule	sol89	1989	only	-	Mar	22	12:06:55s -0:06:55 -
-Rule	sol89	1989	only	-	Mar	23	12:06:35s -0:06:35 -
-Rule	sol89	1989	only	-	Mar	24	12:06:20s -0:06:20 -
-Rule	sol89	1989	only	-	Mar	25	12:06:00s -0:06:00 -
-Rule	sol89	1989	only	-	Mar	26	12:05:40s -0:05:40 -
-Rule	sol89	1989	only	-	Mar	27	12:05:25s -0:05:25 -
-Rule	sol89	1989	only	-	Mar	28	12:05:05s -0:05:05 -
-Rule	sol89	1989	only	-	Mar	29	12:04:50s -0:04:50 -
-Rule	sol89	1989	only	-	Mar	30	12:04:30s -0:04:30 -
-Rule	sol89	1989	only	-	Mar	31	12:04:10s -0:04:10 -
-Rule	sol89	1989	only	-	Apr	1	12:03:55s -0:03:55 -
-Rule	sol89	1989	only	-	Apr	2	12:03:35s -0:03:35 -
-Rule	sol89	1989	only	-	Apr	3	12:03:20s -0:03:20 -
-Rule	sol89	1989	only	-	Apr	4	12:03:00s -0:03:00 -
-Rule	sol89	1989	only	-	Apr	5	12:02:45s -0:02:45 -
-Rule	sol89	1989	only	-	Apr	6	12:02:25s -0:02:25 -
-Rule	sol89	1989	only	-	Apr	7	12:02:10s -0:02:10 -
-Rule	sol89	1989	only	-	Apr	8	12:01:50s -0:01:50 -
-Rule	sol89	1989	only	-	Apr	9	12:01:35s -0:01:35 -
-Rule	sol89	1989	only	-	Apr	10	12:01:20s -0:01:20 -
-Rule	sol89	1989	only	-	Apr	11	12:01:05s -0:01:05 -
-Rule	sol89	1989	only	-	Apr	12	12:00:50s -0:00:50 -
-Rule	sol89	1989	only	-	Apr	13	12:00:35s -0:00:35 -
-Rule	sol89	1989	only	-	Apr	14	12:00:20s -0:00:20 -
-Rule	sol89	1989	only	-	Apr	15	12:00:05s -0:00:05 -
-Rule	sol89	1989	only	-	Apr	16	11:59:50s 0:00:10 -
-Rule	sol89	1989	only	-	Apr	17	11:59:35s 0:00:25 -
-Rule	sol89	1989	only	-	Apr	18	11:59:20s 0:00:40 -
-Rule	sol89	1989	only	-	Apr	19	11:59:10s 0:00:50 -
-Rule	sol89	1989	only	-	Apr	20	11:58:55s 0:01:05 -
-Rule	sol89	1989	only	-	Apr	21	11:58:45s 0:01:15 -
-Rule	sol89	1989	only	-	Apr	22	11:58:30s 0:01:30 -
-Rule	sol89	1989	only	-	Apr	23	11:58:20s 0:01:40 -
-Rule	sol89	1989	only	-	Apr	24	11:58:10s 0:01:50 -
-Rule	sol89	1989	only	-	Apr	25	11:58:00s 0:02:00 -
-Rule	sol89	1989	only	-	Apr	26	11:57:50s 0:02:10 -
-Rule	sol89	1989	only	-	Apr	27	11:57:40s 0:02:20 -
-Rule	sol89	1989	only	-	Apr	28	11:57:30s 0:02:30 -
-Rule	sol89	1989	only	-	Apr	29	11:57:20s 0:02:40 -
-Rule	sol89	1989	only	-	Apr	30	11:57:15s 0:02:45 -
-Rule	sol89	1989	only	-	May	1	11:57:05s 0:02:55 -
-Rule	sol89	1989	only	-	May	2	11:57:00s 0:03:00 -
-Rule	sol89	1989	only	-	May	3	11:56:50s 0:03:10 -
-Rule	sol89	1989	only	-	May	4	11:56:45s 0:03:15 -
-Rule	sol89	1989	only	-	May	5	11:56:40s 0:03:20 -
-Rule	sol89	1989	only	-	May	6	11:56:35s 0:03:25 -
-Rule	sol89	1989	only	-	May	7	11:56:30s 0:03:30 -
-Rule	sol89	1989	only	-	May	8	11:56:30s 0:03:30 -
-Rule	sol89	1989	only	-	May	9	11:56:25s 0:03:35 -
-Rule	sol89	1989	only	-	May	10	11:56:25s 0:03:35 -
-Rule	sol89	1989	only	-	May	11	11:56:20s 0:03:40 -
-Rule	sol89	1989	only	-	May	12	11:56:20s 0:03:40 -
-Rule	sol89	1989	only	-	May	13	11:56:20s 0:03:40 -
-Rule	sol89	1989	only	-	May	14	11:56:20s 0:03:40 -
-Rule	sol89	1989	only	-	May	15	11:56:20s 0:03:40 -
-Rule	sol89	1989	only	-	May	16	11:56:20s 0:03:40 -
-Rule	sol89	1989	only	-	May	17	11:56:20s 0:03:40 -
-Rule	sol89	1989	only	-	May	18	11:56:25s 0:03:35 -
-Rule	sol89	1989	only	-	May	19	11:56:25s 0:03:35 -
-Rule	sol89	1989	only	-	May	20	11:56:30s 0:03:30 -
-Rule	sol89	1989	only	-	May	21	11:56:35s 0:03:25 -
-Rule	sol89	1989	only	-	May	22	11:56:35s 0:03:25 -
-Rule	sol89	1989	only	-	May	23	11:56:40s 0:03:20 -
-Rule	sol89	1989	only	-	May	24	11:56:45s 0:03:15 -
-Rule	sol89	1989	only	-	May	25	11:56:55s 0:03:05 -
-Rule	sol89	1989	only	-	May	26	11:57:00s 0:03:00 -
-Rule	sol89	1989	only	-	May	27	11:57:05s 0:02:55 -
-Rule	sol89	1989	only	-	May	28	11:57:15s 0:02:45 -
-Rule	sol89	1989	only	-	May	29	11:57:20s 0:02:40 -
-Rule	sol89	1989	only	-	May	30	11:57:30s 0:02:30 -
-Rule	sol89	1989	only	-	May	31	11:57:35s 0:02:25 -
-Rule	sol89	1989	only	-	Jun	1	11:57:45s 0:02:15 -
-Rule	sol89	1989	only	-	Jun	2	11:57:55s 0:02:05 -
-Rule	sol89	1989	only	-	Jun	3	11:58:05s 0:01:55 -
-Rule	sol89	1989	only	-	Jun	4	11:58:15s 0:01:45 -
-Rule	sol89	1989	only	-	Jun	5	11:58:25s 0:01:35 -
-Rule	sol89	1989	only	-	Jun	6	11:58:35s 0:01:25 -
-Rule	sol89	1989	only	-	Jun	7	11:58:45s 0:01:15 -
-Rule	sol89	1989	only	-	Jun	8	11:59:00s 0:01:00 -
-Rule	sol89	1989	only	-	Jun	9	11:59:10s 0:00:50 -
-Rule	sol89	1989	only	-	Jun	10	11:59:20s 0:00:40 -
-Rule	sol89	1989	only	-	Jun	11	11:59:35s 0:00:25 -
-Rule	sol89	1989	only	-	Jun	12	11:59:45s 0:00:15 -
-Rule	sol89	1989	only	-	Jun	13	12:00:00s 0:00:00 -
-Rule	sol89	1989	only	-	Jun	14	12:00:10s -0:00:10 -
-Rule	sol89	1989	only	-	Jun	15	12:00:25s -0:00:25 -
-Rule	sol89	1989	only	-	Jun	16	12:00:35s -0:00:35 -
-Rule	sol89	1989	only	-	Jun	17	12:00:50s -0:00:50 -
-Rule	sol89	1989	only	-	Jun	18	12:01:05s -0:01:05 -
-Rule	sol89	1989	only	-	Jun	19	12:01:15s -0:01:15 -
-Rule	sol89	1989	only	-	Jun	20	12:01:30s -0:01:30 -
-Rule	sol89	1989	only	-	Jun	21	12:01:40s -0:01:40 -
-Rule	sol89	1989	only	-	Jun	22	12:01:55s -0:01:55 -
-Rule	sol89	1989	only	-	Jun	23	12:02:10s -0:02:10 -
-Rule	sol89	1989	only	-	Jun	24	12:02:20s -0:02:20 -
-Rule	sol89	1989	only	-	Jun	25	12:02:35s -0:02:35 -
-Rule	sol89	1989	only	-	Jun	26	12:02:45s -0:02:45 -
-Rule	sol89	1989	only	-	Jun	27	12:03:00s -0:03:00 -
-Rule	sol89	1989	only	-	Jun	28	12:03:10s -0:03:10 -
-Rule	sol89	1989	only	-	Jun	29	12:03:25s -0:03:25 -
-Rule	sol89	1989	only	-	Jun	30	12:03:35s -0:03:35 -
-Rule	sol89	1989	only	-	Jul	1	12:03:45s -0:03:45 -
-Rule	sol89	1989	only	-	Jul	2	12:04:00s -0:04:00 -
-Rule	sol89	1989	only	-	Jul	3	12:04:10s -0:04:10 -
-Rule	sol89	1989	only	-	Jul	4	12:04:20s -0:04:20 -
-Rule	sol89	1989	only	-	Jul	5	12:04:30s -0:04:30 -
-Rule	sol89	1989	only	-	Jul	6	12:04:40s -0:04:40 -
-Rule	sol89	1989	only	-	Jul	7	12:04:50s -0:04:50 -
-Rule	sol89	1989	only	-	Jul	8	12:05:00s -0:05:00 -
-Rule	sol89	1989	only	-	Jul	9	12:05:10s -0:05:10 -
-Rule	sol89	1989	only	-	Jul	10	12:05:20s -0:05:20 -
-Rule	sol89	1989	only	-	Jul	11	12:05:25s -0:05:25 -
-Rule	sol89	1989	only	-	Jul	12	12:05:35s -0:05:35 -
-Rule	sol89	1989	only	-	Jul	13	12:05:40s -0:05:40 -
-Rule	sol89	1989	only	-	Jul	14	12:05:50s -0:05:50 -
-Rule	sol89	1989	only	-	Jul	15	12:05:55s -0:05:55 -
-Rule	sol89	1989	only	-	Jul	16	12:06:00s -0:06:00 -
-Rule	sol89	1989	only	-	Jul	17	12:06:05s -0:06:05 -
-Rule	sol89	1989	only	-	Jul	18	12:06:10s -0:06:10 -
-Rule	sol89	1989	only	-	Jul	19	12:06:15s -0:06:15 -
-Rule	sol89	1989	only	-	Jul	20	12:06:20s -0:06:20 -
-Rule	sol89	1989	only	-	Jul	21	12:06:20s -0:06:20 -
-Rule	sol89	1989	only	-	Jul	22	12:06:25s -0:06:25 -
-Rule	sol89	1989	only	-	Jul	23	12:06:25s -0:06:25 -
-Rule	sol89	1989	only	-	Jul	24	12:06:30s -0:06:30 -
-Rule	sol89	1989	only	-	Jul	25	12:06:30s -0:06:30 -
-Rule	sol89	1989	only	-	Jul	26	12:06:30s -0:06:30 -
-Rule	sol89	1989	only	-	Jul	27	12:06:30s -0:06:30 -
-Rule	sol89	1989	only	-	Jul	28	12:06:30s -0:06:30 -
-Rule	sol89	1989	only	-	Jul	29	12:06:25s -0:06:25 -
-Rule	sol89	1989	only	-	Jul	30	12:06:25s -0:06:25 -
-Rule	sol89	1989	only	-	Jul	31	12:06:20s -0:06:20 -
-Rule	sol89	1989	only	-	Aug	1	12:06:20s -0:06:20 -
-Rule	sol89	1989	only	-	Aug	2	12:06:15s -0:06:15 -
-Rule	sol89	1989	only	-	Aug	3	12:06:10s -0:06:10 -
-Rule	sol89	1989	only	-	Aug	4	12:06:05s -0:06:05 -
-Rule	sol89	1989	only	-	Aug	5	12:06:00s -0:06:00 -
-Rule	sol89	1989	only	-	Aug	6	12:05:50s -0:05:50 -
-Rule	sol89	1989	only	-	Aug	7	12:05:45s -0:05:45 -
-Rule	sol89	1989	only	-	Aug	8	12:05:35s -0:05:35 -
-Rule	sol89	1989	only	-	Aug	9	12:05:30s -0:05:30 -
-Rule	sol89	1989	only	-	Aug	10	12:05:20s -0:05:20 -
-Rule	sol89	1989	only	-	Aug	11	12:05:10s -0:05:10 -
-Rule	sol89	1989	only	-	Aug	12	12:05:00s -0:05:00 -
-Rule	sol89	1989	only	-	Aug	13	12:04:50s -0:04:50 -
-Rule	sol89	1989	only	-	Aug	14	12:04:40s -0:04:40 -
-Rule	sol89	1989	only	-	Aug	15	12:04:30s -0:04:30 -
-Rule	sol89	1989	only	-	Aug	16	12:04:15s -0:04:15 -
-Rule	sol89	1989	only	-	Aug	17	12:04:05s -0:04:05 -
-Rule	sol89	1989	only	-	Aug	18	12:03:50s -0:03:50 -
-Rule	sol89	1989	only	-	Aug	19	12:03:35s -0:03:35 -
-Rule	sol89	1989	only	-	Aug	20	12:03:25s -0:03:25 -
-Rule	sol89	1989	only	-	Aug	21	12:03:10s -0:03:10 -
-Rule	sol89	1989	only	-	Aug	22	12:02:55s -0:02:55 -
-Rule	sol89	1989	only	-	Aug	23	12:02:40s -0:02:40 -
-Rule	sol89	1989	only	-	Aug	24	12:02:20s -0:02:20 -
-Rule	sol89	1989	only	-	Aug	25	12:02:05s -0:02:05 -
-Rule	sol89	1989	only	-	Aug	26	12:01:50s -0:01:50 -
-Rule	sol89	1989	only	-	Aug	27	12:01:30s -0:01:30 -
-Rule	sol89	1989	only	-	Aug	28	12:01:15s -0:01:15 -
-Rule	sol89	1989	only	-	Aug	29	12:00:55s -0:00:55 -
-Rule	sol89	1989	only	-	Aug	30	12:00:40s -0:00:40 -
-Rule	sol89	1989	only	-	Aug	31	12:00:20s -0:00:20 -
-Rule	sol89	1989	only	-	Sep	1	12:00:00s 0:00:00 -
-Rule	sol89	1989	only	-	Sep	2	11:59:45s 0:00:15 -
-Rule	sol89	1989	only	-	Sep	3	11:59:25s 0:00:35 -
-Rule	sol89	1989	only	-	Sep	4	11:59:05s 0:00:55 -
-Rule	sol89	1989	only	-	Sep	5	11:58:45s 0:01:15 -
-Rule	sol89	1989	only	-	Sep	6	11:58:25s 0:01:35 -
-Rule	sol89	1989	only	-	Sep	7	11:58:05s 0:01:55 -
-Rule	sol89	1989	only	-	Sep	8	11:57:45s 0:02:15 -
-Rule	sol89	1989	only	-	Sep	9	11:57:20s 0:02:40 -
-Rule	sol89	1989	only	-	Sep	10	11:57:00s 0:03:00 -
-Rule	sol89	1989	only	-	Sep	11	11:56:40s 0:03:20 -
-Rule	sol89	1989	only	-	Sep	12	11:56:20s 0:03:40 -
-Rule	sol89	1989	only	-	Sep	13	11:56:00s 0:04:00 -
-Rule	sol89	1989	only	-	Sep	14	11:55:35s 0:04:25 -
-Rule	sol89	1989	only	-	Sep	15	11:55:15s 0:04:45 -
-Rule	sol89	1989	only	-	Sep	16	11:54:55s 0:05:05 -
-Rule	sol89	1989	only	-	Sep	17	11:54:35s 0:05:25 -
-Rule	sol89	1989	only	-	Sep	18	11:54:10s 0:05:50 -
-Rule	sol89	1989	only	-	Sep	19	11:53:50s 0:06:10 -
-Rule	sol89	1989	only	-	Sep	20	11:53:30s 0:06:30 -
-Rule	sol89	1989	only	-	Sep	21	11:53:10s 0:06:50 -
-Rule	sol89	1989	only	-	Sep	22	11:52:45s 0:07:15 -
-Rule	sol89	1989	only	-	Sep	23	11:52:25s 0:07:35 -
-Rule	sol89	1989	only	-	Sep	24	11:52:05s 0:07:55 -
-Rule	sol89	1989	only	-	Sep	25	11:51:45s 0:08:15 -
-Rule	sol89	1989	only	-	Sep	26	11:51:25s 0:08:35 -
-Rule	sol89	1989	only	-	Sep	27	11:51:05s 0:08:55 -
-Rule	sol89	1989	only	-	Sep	28	11:50:40s 0:09:20 -
-Rule	sol89	1989	only	-	Sep	29	11:50:20s 0:09:40 -
-Rule	sol89	1989	only	-	Sep	30	11:50:00s 0:10:00 -
-Rule	sol89	1989	only	-	Oct	1	11:49:45s 0:10:15 -
-Rule	sol89	1989	only	-	Oct	2	11:49:25s 0:10:35 -
-Rule	sol89	1989	only	-	Oct	3	11:49:05s 0:10:55 -
-Rule	sol89	1989	only	-	Oct	4	11:48:45s 0:11:15 -
-Rule	sol89	1989	only	-	Oct	5	11:48:30s 0:11:30 -
-Rule	sol89	1989	only	-	Oct	6	11:48:10s 0:11:50 -
-Rule	sol89	1989	only	-	Oct	7	11:47:50s 0:12:10 -
-Rule	sol89	1989	only	-	Oct	8	11:47:35s 0:12:25 -
-Rule	sol89	1989	only	-	Oct	9	11:47:20s 0:12:40 -
-Rule	sol89	1989	only	-	Oct	10	11:47:00s 0:13:00 -
-Rule	sol89	1989	only	-	Oct	11	11:46:45s 0:13:15 -
-Rule	sol89	1989	only	-	Oct	12	11:46:30s 0:13:30 -
-Rule	sol89	1989	only	-	Oct	13	11:46:15s 0:13:45 -
-Rule	sol89	1989	only	-	Oct	14	11:46:00s 0:14:00 -
-Rule	sol89	1989	only	-	Oct	15	11:45:50s 0:14:10 -
-Rule	sol89	1989	only	-	Oct	16	11:45:35s 0:14:25 -
-Rule	sol89	1989	only	-	Oct	17	11:45:20s 0:14:40 -
-Rule	sol89	1989	only	-	Oct	18	11:45:10s 0:14:50 -
-Rule	sol89	1989	only	-	Oct	19	11:45:00s 0:15:00 -
-Rule	sol89	1989	only	-	Oct	20	11:44:50s 0:15:10 -
-Rule	sol89	1989	only	-	Oct	21	11:44:40s 0:15:20 -
-Rule	sol89	1989	only	-	Oct	22	11:44:30s 0:15:30 -
-Rule	sol89	1989	only	-	Oct	23	11:44:20s 0:15:40 -
-Rule	sol89	1989	only	-	Oct	24	11:44:10s 0:15:50 -
-Rule	sol89	1989	only	-	Oct	25	11:44:05s 0:15:55 -
-Rule	sol89	1989	only	-	Oct	26	11:44:00s 0:16:00 -
-Rule	sol89	1989	only	-	Oct	27	11:43:50s 0:16:10 -
-Rule	sol89	1989	only	-	Oct	28	11:43:45s 0:16:15 -
-Rule	sol89	1989	only	-	Oct	29	11:43:40s 0:16:20 -
-Rule	sol89	1989	only	-	Oct	30	11:43:40s 0:16:20 -
-Rule	sol89	1989	only	-	Oct	31	11:43:35s 0:16:25 -
-Rule	sol89	1989	only	-	Nov	1	11:43:35s 0:16:25 -
-Rule	sol89	1989	only	-	Nov	2	11:43:35s 0:16:25 -
-Rule	sol89	1989	only	-	Nov	3	11:43:30s 0:16:30 -
-Rule	sol89	1989	only	-	Nov	4	11:43:35s 0:16:25 -
-Rule	sol89	1989	only	-	Nov	5	11:43:35s 0:16:25 -
-Rule	sol89	1989	only	-	Nov	6	11:43:35s 0:16:25 -
-Rule	sol89	1989	only	-	Nov	7	11:43:40s 0:16:20 -
-Rule	sol89	1989	only	-	Nov	8	11:43:45s 0:16:15 -
-Rule	sol89	1989	only	-	Nov	9	11:43:50s 0:16:10 -
-Rule	sol89	1989	only	-	Nov	10	11:43:55s 0:16:05 -
-Rule	sol89	1989	only	-	Nov	11	11:44:00s 0:16:00 -
-Rule	sol89	1989	only	-	Nov	12	11:44:05s 0:15:55 -
-Rule	sol89	1989	only	-	Nov	13	11:44:15s 0:15:45 -
-Rule	sol89	1989	only	-	Nov	14	11:44:25s 0:15:35 -
-Rule	sol89	1989	only	-	Nov	15	11:44:35s 0:15:25 -
-Rule	sol89	1989	only	-	Nov	16	11:44:45s 0:15:15 -
-Rule	sol89	1989	only	-	Nov	17	11:44:55s 0:15:05 -
-Rule	sol89	1989	only	-	Nov	18	11:45:10s 0:14:50 -
-Rule	sol89	1989	only	-	Nov	19	11:45:20s 0:14:40 -
-Rule	sol89	1989	only	-	Nov	20	11:45:35s 0:14:25 -
-Rule	sol89	1989	only	-	Nov	21	11:45:50s 0:14:10 -
-Rule	sol89	1989	only	-	Nov	22	11:46:05s 0:13:55 -
-Rule	sol89	1989	only	-	Nov	23	11:46:25s 0:13:35 -
-Rule	sol89	1989	only	-	Nov	24	11:46:40s 0:13:20 -
-Rule	sol89	1989	only	-	Nov	25	11:47:00s 0:13:00 -
-Rule	sol89	1989	only	-	Nov	26	11:47:20s 0:12:40 -
-Rule	sol89	1989	only	-	Nov	27	11:47:35s 0:12:25 -
-Rule	sol89	1989	only	-	Nov	28	11:47:55s 0:12:05 -
-Rule	sol89	1989	only	-	Nov	29	11:48:20s 0:11:40 -
-Rule	sol89	1989	only	-	Nov	30	11:48:40s 0:11:20 -
-Rule	sol89	1989	only	-	Dec	1	11:49:00s 0:11:00 -
-Rule	sol89	1989	only	-	Dec	2	11:49:25s 0:10:35 -
-Rule	sol89	1989	only	-	Dec	3	11:49:50s 0:10:10 -
-Rule	sol89	1989	only	-	Dec	4	11:50:15s 0:09:45 -
-Rule	sol89	1989	only	-	Dec	5	11:50:35s 0:09:25 -
-Rule	sol89	1989	only	-	Dec	6	11:51:00s 0:09:00 -
-Rule	sol89	1989	only	-	Dec	7	11:51:30s 0:08:30 -
-Rule	sol89	1989	only	-	Dec	8	11:51:55s 0:08:05 -
-Rule	sol89	1989	only	-	Dec	9	11:52:20s 0:07:40 -
-Rule	sol89	1989	only	-	Dec	10	11:52:50s 0:07:10 -
-Rule	sol89	1989	only	-	Dec	11	11:53:15s 0:06:45 -
-Rule	sol89	1989	only	-	Dec	12	11:53:45s 0:06:15 -
-Rule	sol89	1989	only	-	Dec	13	11:54:10s 0:05:50 -
-Rule	sol89	1989	only	-	Dec	14	11:54:40s 0:05:20 -
-Rule	sol89	1989	only	-	Dec	15	11:55:10s 0:04:50 -
-Rule	sol89	1989	only	-	Dec	16	11:55:40s 0:04:20 -
-Rule	sol89	1989	only	-	Dec	17	11:56:05s 0:03:55 -
-Rule	sol89	1989	only	-	Dec	18	11:56:35s 0:03:25 -
-Rule	sol89	1989	only	-	Dec	19	11:57:05s 0:02:55 -
-Rule	sol89	1989	only	-	Dec	20	11:57:35s 0:02:25 -
-Rule	sol89	1989	only	-	Dec	21	11:58:05s 0:01:55 -
-Rule	sol89	1989	only	-	Dec	22	11:58:35s 0:01:25 -
-Rule	sol89	1989	only	-	Dec	23	11:59:05s 0:00:55 -
-Rule	sol89	1989	only	-	Dec	24	11:59:35s 0:00:25 -
-Rule	sol89	1989	only	-	Dec	25	12:00:05s -0:00:05 -
-Rule	sol89	1989	only	-	Dec	26	12:00:35s -0:00:35 -
-Rule	sol89	1989	only	-	Dec	27	12:01:05s -0:01:05 -
-Rule	sol89	1989	only	-	Dec	28	12:01:35s -0:01:35 -
-Rule	sol89	1989	only	-	Dec	29	12:02:00s -0:02:00 -
-Rule	sol89	1989	only	-	Dec	30	12:02:30s -0:02:30 -
-Rule	sol89	1989	only	-	Dec	31	12:03:00s -0:03:00 -
-
-# Riyadh is at about 46 degrees 46 minutes East:  3 hrs, 7 mins, 4 secs
-# Before and after 1989, we'll operate on local mean solar time.
-
-# Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
-Zone	Asia/Riyadh89	3:07:04	-		zzz	1989
-			3:07:04	sol89		zzz	1990
-			3:07:04	-		zzz
-# For backward compatibility...
-Link	Asia/Riyadh89	Mideast/Riyadh89
diff --git a/src/timezone/data/southamerica b/src/timezone/data/southamerica
index 930381df7a..5391055aaf 100644
--- a/src/timezone/data/southamerica
+++ b/src/timezone/data/southamerica
@@ -1,17 +1,20 @@
 # 
-# @(#)southamerica	8.48
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
 
 # This data is by no means authoritative; if you think you know better,
 # go ahead and edit the file (and please send any changes to
-# tz@elsie.nci.nih.gov for general use in the future).
+# tz@iana.org for general use in the future).
 
 # From Paul Eggert (2006-03-22):
 # A good source for time zone historical data outside the U.S. is
 # Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
 # San Diego: ACS Publications, Inc. (2003).
 #
+# For data circa 1899, a common source is:
+# Milne J. Civil time. Geogr J. 1899 Feb;13(2):173-94
+# .
+#
 # Gwillim Law writes that a good source
 # for recent time zone data is the International Air Transport
 # Association's Standard Schedules Information Manual (IATA SSIM),
@@ -232,7 +235,7 @@ Rule	Arg	2000	only	-	Mar	3	0:00	0	-
 Rule	Arg	2007	only	-	Dec	30	0:00	1:00	S
 Rule	Arg	2008	2009	-	Mar	Sun>=15	0:00	0	-
 Rule	Arg	2008	only	-	Oct	Sun>=15	0:00	1:00	S
- 
+
 # From Mariano Absatz (2004-05-21):
 # Today it was officially published that the Province of Mendoza is changing
 # its timezone this winter... starting tomorrow night....
@@ -322,9 +325,9 @@ Rule	Arg	2008	only	-	Oct	Sun>=15	0:00	1:00	S
 # confirms what Alex Krivenyshev has earlier sent to the tz
 # emailing list about that San Luis plans to return to standard
 # time much earlier than the rest of the country. It also
-# confirms that upon request the provinces San Juan and Mendoza 
-# refused to follow San Luis in this change. 
-# 
+# confirms that upon request the provinces San Juan and Mendoza
+# refused to follow San Luis in this change.
+#
 # The change is supposed to take place Monday the 21.st at 0:00
 # hours. As far as I understand it if this goes ahead, we need
 # a new timezone for San Luis (although there are also documented
@@ -382,21 +385,11 @@ Rule	Arg	2008	only	-	Oct	Sun>=15	0:00	1:00	S
 # 
 # is the official page for the Province Government).
 #
-# There's also a note in only one of the major national papers (La Naci�n) at
-# 
+# There's also a note in only one of the major national papers ...
 # http://www.lanacion.com.ar/nota.asp?nota_id=1107912
-# 
-# 
-# The press release says:
-#  (...) anunci� que el pr�ximo domingo a las 00:00 los puntanos deber�n
-# atrasar una hora sus relojes.
-#
-# A partir de entonces, San Luis establecer� el huso horario propio de
-# la Provincia. De esta manera, durante el periodo del calendario anual
-# 2009, el cambio horario quedar� comprendido entre las 00:00 del tercer
-# domingo de marzo y las 24:00 del segundo s�bado de octubre.
-# Quick&dirty translation
-# (...) announced that next Sunday, at 00:00, Puntanos (the San Luis
+#
+# The press release says [quick and dirty translation]:
+# ... announced that next Sunday, at 00:00, Puntanos (the San Luis
 # inhabitants) will have to turn back one hour their clocks
 #
 # Since then, San Luis will establish its own Province timezone. Thus,
@@ -458,6 +451,20 @@ Rule	Arg	2008	only	-	Oct	Sun>=15	0:00	1:00	S
 # rules...San Luis is still using "Western ARgentina Time" and it got
 # stuck on Summer daylight savings time even though the summer is over.
 
+# From Paul Eggert (2013-09-05):
+# Perhaps San Luis operates on the legal fiction that it is at UTC-4
+# with perpetual summer time, but ordinary usage typically seems to
+# just say it's at UTC-3; see, for example,
+# .
+# We've documented similar situations as being plain changes to
+# standard time, so let's do that here too.  This does not change UTC
+# offsets, only tm_isdst and the time zone abbreviations.  One minor
+# plus is that this silences a zic complaint that there's no POSIX TZ
+# setting for time stamps past 2038.
+
+# From Paul Eggert (2013-02-21):
+# Milne says Cordoba time was -4:16:48.2.  Round to the nearest second.
+
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 #
 # Buenos Aires (BA), Capital Federal (CF),
@@ -592,7 +599,7 @@ Zone America/Argentina/Mendoza -4:35:16 - LMT	1894 Oct 31
 # San Luis (SL)
 
 Rule	SanLuis	2008	2009	-	Mar	Sun>=8	0:00	0	-
-Rule	SanLuis	2007	2009	-	Oct	Sun>=8	0:00	1:00	S
+Rule	SanLuis	2007	2008	-	Oct	Sun>=8	0:00	1:00	S
 
 Zone America/Argentina/San_Luis -4:25:24 - LMT	1894 Oct 31
 			-4:16:48 -	CMT	1920 May
@@ -608,7 +615,8 @@ Zone America/Argentina/San_Luis -4:25:24 - LMT	1894 Oct 31
 			-3:00	-	ART	2004 May 31
 			-4:00	-	WART	2004 Jul 25
 			-3:00	Arg	AR%sT	2008 Jan 21
-			-4:00	SanLuis	WAR%sT
+			-4:00	SanLuis	WAR%sT	2009 Oct 11
+			-3:00	-	ART
 #
 # Santa Cruz (SC)
 Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31
@@ -635,10 +643,7 @@ Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31
 			-3:00	-	ART
 
 # Aruba
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Aruba	-4:40:24 -	LMT	1912 Feb 12	# Oranjestad
-			-4:30	-	ANT	1965 # Netherlands Antilles Time
-			-4:00	-	AST
+Link America/Curacao America/Aruba
 
 # Bolivia
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
@@ -745,7 +750,7 @@ Zone	America/La_Paz	-4:32:36 -	LMT	1890
 #
 # As a result of the above Decree I believe the America/Rio_Branco
 # timezone shall be modified from UTC-5 to UTC-4 and a new timezone shall
-# be created to represent the the west side of the Para State. I
+# be created to represent the...west side of the Para State. I
 # suggest this new timezone be called Santarem as the most
 # important/populated city in the affected area.
 #
@@ -797,6 +802,63 @@ Zone	America/La_Paz	-4:32:36 -	LMT	1890
 # 
 # http://www.timeanddate.com/news/time/brazil-dst-2008-2009.html
 # 
+#
+# From Alexander Krivenyshev (2011-10-04):
+# State Bahia will return to Daylight savings time this year after 8 years off.
+# The announcement was made by Governor Jaques Wagner in an interview to a
+# television station in Salvador.
+
+# In Portuguese:
+# 
+# http://g1.globo.com/bahia/noticia/2011/10/governador-jaques-wagner-confirma-horario-de-verao-na-bahia.html
+#  and
+# 
+# http://noticias.terra.com.br/brasil/noticias/0,,OI5390887-EI8139,00-Bahia+volta+a+ter+horario+de+verao+apos+oito+anos.html
+# 
+
+# From Guilherme Bernardes Rodrigues (2011-10-07):
+# There is news in the media, however there is still no decree about it.
+# I just send a e-mail to Zulmira Brandao at
+# http://pcdsh01.on.br/ the
+# official agency about time in Brazil, and she confirmed that the old rule is
+# still in force.
+
+# From Guilherme Bernardes Rodrigues (2011-10-14)
+# It's official, the President signed a decree that includes Bahia in summer
+# time.
+#	 [ and in a second message (same day): ]
+# I found the decree.
+#
+# DECRETO No- 7.584, DE 13 DE OUTUBRO DE 2011
+# Link :
+# 
+# http://www.in.gov.br/visualiza/index.jsp?data=13/10/2011&jornal=1000&pagina=6&totalArquivos=6
+# 
+
+# From Kelley Cook (2012-10-16):
+# The governor of state of Bahia in Brazil announced on Thursday that
+# due to public pressure, he is reversing the DST policy they implemented
+# last year and will not be going to Summer Time on October 21st....
+# http://www.correio24horas.com.br/r/artigo/apos-pressoes-wagner-suspende-horario-de-verao-na-bahia
+
+# From Rodrigo Severo (2012-10-16):
+# Tocantins state will have DST.
+# http://noticias.terra.com.br/brasil/noticias/0,,OI6232536-EI306.html
+
+# From Steffen Thorsen (2013-09-20):
+# Tocantins in Brazil is very likely not to observe DST from October....
+# http://conexaoto.com.br/2013/09/18/ministerio-confirma-que-tocantins-esta-fora-do-horario-de-verao-em-2013-mas-falta-publicacao-de-decreto
+# We will keep this article updated when this is confirmed:
+# http://www.timeanddate.com/news/time/brazil-starts-dst-2013.html
+
+# From Steffen Thorsen (2013-10-17):
+# http://www.timeanddate.com/news/time/acre-amazonas-change-time-zone.html
+# Senator Jorge Viana announced that Acre will change time zone on November 10.
+# He did not specify the time of the change, nor if western parts of Amazonas
+# will change as well.
+#
+# From Paul Eggert (2013-10-17):
+# For now, assume western Amazonas will change as well.
 
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 # Decree 20,466 (1931-10-01)
@@ -933,7 +995,7 @@ Rule	Brazil	2007	only	-	Feb	25	 0:00	0	-
 # adopted by the same states as before.
 Rule	Brazil	2007	only	-	Oct	Sun>=8	 0:00	1:00	S
 # From Frederico A. C. Neves (2008-09-10):
-# Acording to this decree
+# According to this decree
 # 
 # http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6558.htm
 # 
@@ -1016,6 +1078,8 @@ Zone America/Araguaina	-3:12:48 -	LMT	1914
 			-3:00	Brazil	BR%sT	1990 Sep 17
 			-3:00	-	BRT	1995 Sep 14
 			-3:00	Brazil	BR%sT	2003 Sep 24
+			-3:00	-	BRT	2012 Oct 21
+			-3:00	Brazil	BR%sT	2013 Sep
 			-3:00	-	BRT
 #
 # Alagoas (AL), Sergipe (SE)
@@ -1034,6 +1098,8 @@ Zone America/Maceio	-2:22:52 -	LMT	1914
 # of America/Salvador.
 Zone America/Bahia	-2:34:04 -	LMT	1914
 			-3:00	Brazil	BR%sT	2003 Sep 24
+			-3:00	-	BRT	2011 Oct 16
+			-3:00	Brazil	BR%sT	2012 Oct 21
 			-3:00	-	BRT
 #
 # Goias (GO), Distrito Federal (DF), Minas Gerais (MG),
@@ -1082,13 +1148,15 @@ Zone America/Eirunepe	-4:39:28 -	LMT	1914
 			-5:00	-	ACT	1993 Sep 28
 			-5:00	Brazil	AC%sT	1994 Sep 22
 			-5:00	-	ACT	2008 Jun 24 00:00
-			-4:00	-	AMT
+			-4:00	-	AMT	2013 Nov 10
+			-5:00	-	ACT
 #
 # Acre (AC)
 Zone America/Rio_Branco	-4:31:12 -	LMT	1914
 			-5:00	Brazil	AC%sT	1988 Sep 12
 			-5:00	-	ACT	2008 Jun 24 00:00
-			-4:00	-	AMT
+			-4:00	-	AMT	2013 Nov 10
+			-5:00	-	ACT
 
 # Chile
 
@@ -1126,7 +1194,7 @@ Zone America/Rio_Branco	-4:31:12 -	LMT	1914
 # Due to drought, Chile extends Daylight Time in three weeks.  This
 # is one-time change (Saturday 3/29 at 24:00 for America/Santiago
 # and Saturday 3/29 at 22:00 for Pacific/Easter)
-# The Supreme Decree is located at 
+# The Supreme Decree is located at
 # 
 # http://www.shoa.cl/servicios/supremo316.pdf
 # 
@@ -1137,7 +1205,7 @@ Zone America/Rio_Branco	-4:31:12 -	LMT	1914
 
 # From Jose Miguel Garrido (2008-03-05):
 # ...
-# You could see the announces of the change on 
+# You could see the announces of the change on
 # 
 # http://www.shoa.cl/noticias/2008/04hora/hora.htm
 # .
@@ -1162,7 +1230,7 @@ Zone America/Rio_Branco	-4:31:12 -	LMT	1914
 # http://www.emol.com/noticias/nacional/detalle/detallenoticias.asp?idnoticia=467651
 # 
 #
-# This is not yet reflected in the offical "cambio de hora" site, but
+# This is not yet reflected in the official "cambio de hora" site, but
 # probably will be soon:
 # 
 # http://www.horaoficial.cl/cambio.htm
@@ -1184,6 +1252,39 @@ Zone America/Rio_Branco	-4:31:12 -	LMT	1914
 # August, not in October as they have since 1968. This is a pilot plan
 # which will be reevaluated in 2012.
 
+# From Mauricio Parada (2012-02-22), translated by Glenn Eychaner (2012-02-23):
+# As stated in the website of the Chilean Energy Ministry
+# http://www.minenergia.cl/ministerio/noticias/generales/gobierno-anuncia-fechas-de-cambio-de.html
+# The Chilean Government has decided to postpone the entrance into winter time
+# (to leave DST) from March 11 2012 to April 28th 2012. The decision has not
+# been yet formalized but it will within the next days.
+# Quote from the website communication:
+#
+# 6. For the year 2012, the dates of entry into winter time will be as follows:
+# a. Saturday April 28, 2012, clocks should go back 60 minutes; that is, at
+# 23:59:59, instead of passing to 0:00, the time should be adjusted to be 23:00
+# of the same day.
+# b. Saturday, September 1, 2012, clocks should go forward 60 minutes; that is,
+# at 23:59:59, instead of passing to 0:00, the time should be adjusted to be
+# 01:00 on September 2.
+
+# From Steffen Thorsen (2013-02-15):
+# According to several news sources, Chile has extended DST this year,
+# they will end DST later and start DST earlier than planned.  They
+# hope to save energy.  The new end date is 2013-04-28 00:00 and new
+# start date is 2013-09-08 00:00....
+# http://www.gob.cl/informa/2013/02/15/gobierno-anuncia-fechas-de-cambio-de-hora-para-el-ano-2013.htm
+
+# From Jose Miguel Garrido (2014-02-19):
+# Today appeared in the Diario Oficial a decree amending the time change
+# dates to 2014.
+# DST End: last Saturday of April 2014 (Sun 27 Apr 2014 03:00 UTC)
+# DST Start: first Saturday of September 2014 (Sun 07 Sep 2014 04:00 UTC)
+# http://www.diariooficial.interior.gob.cl//media/2014/02/19/do-20140219.pdf
+
+# NOTE: ChileAQ rules for Antarctic bases are stored separately in the
+# 'antarctica' file.
+
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Chile	1927	1932	-	Sep	 1	0:00	1:00	S
 Rule	Chile	1928	1932	-	Apr	 1	0:00	0	-
@@ -1214,8 +1315,6 @@ Rule	Chile	1998	only	-	Mar	Sun>=9	3:00u	0	-
 Rule	Chile	1998	only	-	Sep	27	4:00u	1:00	S
 Rule	Chile	1999	only	-	Apr	 4	3:00u	0	-
 Rule	Chile	1999	2010	-	Oct	Sun>=9	4:00u	1:00	S
-Rule	Chile	2011	only	-	Aug	Sun>=16	4:00u	1:00	S
-Rule	Chile	2012	max	-	Oct	Sun>=9	4:00u	1:00	S
 Rule	Chile	2000	2007	-	Mar	Sun>=9	3:00u	0	-
 # N.B.: the end of March 29 in Chile is March 30 in Universal time,
 # which is used below in specifying the transition.
@@ -1223,7 +1322,9 @@ Rule	Chile	2008	only	-	Mar	30	3:00u	0	-
 Rule	Chile	2009	only	-	Mar	Sun>=9	3:00u	0	-
 Rule	Chile	2010	only	-	Apr	Sun>=1	3:00u	0	-
 Rule	Chile	2011	only	-	May	Sun>=2	3:00u	0	-
-Rule	Chile	2012	max	-	Mar	Sun>=9	3:00u	0	-
+Rule	Chile	2011	only	-	Aug	Sun>=16	4:00u	1:00	S
+Rule	Chile	2012	max	-	Apr	Sun>=23	3:00u	0	-
+Rule	Chile	2012	max	-	Sep	Sun>=2	4:00u	1:00	S
 # IATA SSIM anomalies: (1992-02) says 1992-03-14;
 # (1996-09) says 1998-03-08.  Ignore these.
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
@@ -1245,17 +1346,23 @@ Zone Pacific/Easter	-7:17:44 -	LMT	1890
 # San Felix, and Antarctic bases, are like America/Santiago.
 
 # Colombia
+
+# Milne gives 4:56:16.4 for Bogota time in 1899; round to nearest.  He writes,
+# "A variation of fifteen minutes in the public clocks of Bogota is not rare."
+
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	CO	1992	only	-	May	 3	0:00	1:00	S
 Rule	CO	1993	only	-	Apr	 4	0:00	0	-
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Bogota	-4:56:20 -	LMT	1884 Mar 13
-			-4:56:20 -	BMT	1914 Nov 23 # Bogota Mean Time
+Zone	America/Bogota	-4:56:16 -	LMT	1884 Mar 13
+			-4:56:16 -	BMT	1914 Nov 23 # Bogota Mean Time
 			-5:00	CO	CO%sT	# Colombia Time
 # Malpelo, Providencia, San Andres
 # no information; probably like America/Bogota
 
 # Curacao
+
+# Milne gives 4:35:46.9 for Curacao mean time; round to nearest.
 #
 # From Paul Eggert (2006-03-22):
 # Shanks & Pottenger say that The Bottom and Philipsburg have been at
@@ -1272,12 +1379,22 @@ Zone	America/Bogota	-4:56:20 -	LMT	1884 Mar 13
 # though, as far as we know.
 #
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	America/Curacao	-4:35:44 -	LMT	1912 Feb 12	# Willemstad
+Zone	America/Curacao	-4:35:47 -	LMT	1912 Feb 12	# Willemstad
 			-4:30	-	ANT	1965 # Netherlands Antilles Time
 			-4:00	-	AST
 
+# From Arthur David Olson (2011-06-15):
+# use links for places with new iso3166 codes.
+# The name "Lower Prince's Quarter" is both longer than fourteen charaters
+# and contains an apostrophe; use "Lower_Princes" below.
+
+Link	America/Curacao	America/Lower_Princes	# Sint Maarten
+Link	America/Curacao	America/Kralendijk	# Caribbean Netherlands
+
 # Ecuador
 #
+# Milne says the Sentral and South American Telegraph Company used -5:24:15.
+#
 # From Paul Eggert (2007-03-04):
 # Apparently Ecuador had a failed experiment with DST in 1992.
 #  (2007-02-27) and
@@ -1361,6 +1478,21 @@ Zone Pacific/Galapagos	-5:58:24 -	LMT	1931 # Puerto Baquerizo Moreno
 # will not revert to local mean time, but clocks will remain on Summer
 # time (UTC/GMT - 3 hours) throughout the whole of 2011.  Any long term
 # change to local time following the trial period will be notified.
+#
+# From Andrew Newman (2012-02-24)
+# A letter from Justin McPhee, Chief Executive,
+# Cable & Wireless Falkland Islands (dated 2012-02-22)
+# states...
+#   The current Atlantic/Stanley entry under South America expects the
+#   clocks to go back to standard Falklands Time (FKT) on the 15th April.
+#   The database entry states that in 2011 Stanley was staying on fixed
+#   summer time on a trial basis only.  FIG need to contact IANA and/or
+#   the maintainers of the database to inform them we're adopting
+#   the same policy this year and suggest recommendations for future years.
+#
+# For now we will assume permanent summer time for the Falklands
+# until advised differently (to apply for 2012 and beyond, after the 2011
+# experiment was apparently successful.)
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Falk	1937	1938	-	Sep	lastSun	0:00	1:00	S
 Rule	Falk	1938	1942	-	Mar	Sun>=19	0:00	0	-
@@ -1373,14 +1505,14 @@ Rule	Falk	1984	only	-	Sep	16	0:00	1:00	S
 Rule	Falk	1985	2000	-	Sep	Sun>=9	0:00	1:00	S
 Rule	Falk	1986	2000	-	Apr	Sun>=16	0:00	0	-
 Rule	Falk	2001	2010	-	Apr	Sun>=15	2:00	0	-
-Rule	Falk	2012	max	-	Apr	Sun>=15	2:00	0	-
-Rule	Falk	2001	max	-	Sep	Sun>=1	2:00	1:00	S
+Rule	Falk	2001	2010	-	Sep	Sun>=1	2:00	1:00	S
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone Atlantic/Stanley	-3:51:24 -	LMT	1890
 			-3:51:24 -	SMT	1912 Mar 12  # Stanley Mean Time
 			-4:00	Falk	FK%sT	1983 May     # Falkland Is Time
 			-3:00	Falk	FK%sT	1985 Sep 15
-			-4:00	Falk	FK%sT
+			-4:00	Falk	FK%sT	2010 Sep 5 02:00
+			-3:00	-	FKST
 
 # French Guiana
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
@@ -1398,10 +1530,16 @@ Zone	America/Guyana	-3:52:40 -	LMT	1915 Mar	# Georgetown
 			-4:00	-	GYT
 
 # Paraguay
+#
 # From Paul Eggert (2006-03-22):
 # Shanks & Pottenger say that spring transitions are from 01:00 -> 02:00,
 # and autumn transitions are from 00:00 -> 23:00.  Go with pre-1999
 # editions of Shanks, and with the IATA, who say transitions occur at 00:00.
+#
+# From Waldemar Villamayor-Venialbo (2013-09-20):
+# No time of the day is established for the adjustment, so people normally
+# adjust their clocks at 0 hour of the given dates.
+#
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Para	1975	1988	-	Oct	 1	0:00	1:00	S
 Rule	Para	1975	1978	-	Mar	 1	0:00	0	-
@@ -1468,7 +1606,19 @@ Rule	Para	2005	2009	-	Mar	Sun>=8	0:00	0	-
 # forward 60 minutes, in all the territory of the Paraguayan Republic.
 # ...
 Rule	Para	2010	max	-	Oct	Sun>=1	0:00	1:00	S
-Rule	Para	2010	max	-	Apr	Sun>=8	0:00	0	-
+Rule	Para	2010	2012	-	Apr	Sun>=8	0:00	0	-
+#
+# From Steffen Thorsen (2013-03-07):
+# Paraguay will end DST on 2013-03-24 00:00....
+# http://www.ande.gov.py/interna.php?id=1075
+#
+# From Carlos Raul Perasso (2013-03-15):
+# The change in Paraguay is now final.  Decree number 10780
+# http://www.presidencia.gov.py/uploads/pdf/presidencia-3b86ff4b691c79d4f5927ca964922ec74772ce857c02ca054a52a37b49afc7fb.pdf
+# From Carlos Raul Perasso (2014-02-28):
+# Decree 1264 can be found at:
+# http://www.presidencia.gov.py/archivos/documentos/DECRETO1264_ey9r8zai.pdf
+Rule	Para	2013	max	-	Mar	Sun>=22	0:00	0	-
 
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone America/Asuncion	-3:50:40 -	LMT	1890
@@ -1526,6 +1676,20 @@ Zone America/Paramaribo	-3:40:40 -	LMT	1911
 Zone America/Port_of_Spain -4:06:04 -	LMT	1912 Mar 2
 			-4:00	-	AST
 
+# These all agree with Trinidad and Tobago since 1970.
+Link America/Port_of_Spain America/Anguilla
+Link America/Port_of_Spain America/Dominica
+Link America/Port_of_Spain America/Grenada
+Link America/Port_of_Spain America/Guadeloupe
+Link America/Port_of_Spain America/Marigot	# St Martin (French part)
+Link America/Port_of_Spain America/Montserrat
+Link America/Port_of_Spain America/St_Barthelemy
+Link America/Port_of_Spain America/St_Kitts	# St Kitts & Nevis
+Link America/Port_of_Spain America/St_Lucia
+Link America/Port_of_Spain America/St_Thomas	# Virgin Islands (US)
+Link America/Port_of_Spain America/St_Vincent
+Link America/Port_of_Spain America/Tortola	# Virgin Islands (UK)
+
 # Uruguay
 # From Paul Eggert (1993-11-18):
 # Uruguay wins the prize for the strangest peacetime manipulation of the rules.
@@ -1543,7 +1707,7 @@ Rule	Uruguay	1937	1941	-	Mar	lastSun	 0:00	0	-
 # Whitman gives 1937 Oct 3; go with Shanks & Pottenger.
 Rule	Uruguay	1937	1940	-	Oct	lastSun	 0:00	0:30	HS
 # Whitman gives 1941 Oct 24 - 1942 Mar 27, 1942 Dec 14 - 1943 Apr 13,
-# and 1943 Apr 13 ``to present time''; go with Shanks & Pottenger.
+# and 1943 Apr 13 "to present time"; go with Shanks & Pottenger.
 Rule	Uruguay	1941	only	-	Aug	 1	 0:00	0:30	HS
 Rule	Uruguay	1942	only	-	Jan	 1	 0:00	0	-
 Rule	Uruguay	1942	only	-	Dec	14	 0:00	1:00	S
diff --git a/src/timezone/data/systemv b/src/timezone/data/systemv
index 767388d6aa..e651e8540d 100644
--- a/src/timezone/data/systemv
+++ b/src/timezone/data/systemv
@@ -1,5 +1,4 @@
 # 
-# @(#)systemv	8.2
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
 
diff --git a/src/timezone/data/yearistype.sh b/src/timezone/data/yearistype.sh
index 66dbf89a2b..bdc6e58328 100755
--- a/src/timezone/data/yearistype.sh
+++ b/src/timezone/data/yearistype.sh
@@ -3,8 +3,6 @@
 : 'This file is in the public domain, so clarified as of'
 : '2006-07-17 by Arthur David Olson.'
 
-: '@(#)yearistype.sh	8.2'
-
 case $#-$1 in
 	2-|2-0*|2-*[!0-9]*)
 		echo "$0: wild year - $1" >&2
diff --git a/src/timezone/data/zone.tab b/src/timezone/data/zone.tab
index b06ace4282..fa4df5f688 100644
--- a/src/timezone/data/zone.tab
+++ b/src/timezone/data/zone.tab
@@ -1,27 +1,36 @@
-# 
-# @(#)zone.tab	8.43
+# TZ zone descriptions
+#
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
 #
-# TZ zone descriptions
+# From Paul Eggert (2013-08-14):
 #
-# From Paul Eggert (1996-08-05):
+# This file contains a table where each row stands for an area that is
+# the intersection of a region identified by a country code and of a
+# zone where civil clocks have agreed since 1970.  The columns of the
+# table are as follows:
 #
-# This file contains a table with the following columns:
-# 1.  ISO 3166 2-character country code.  See the file `iso3166.tab'.
-# 2.  Latitude and longitude of the zone's principal location
+# 1.  ISO 3166 2-character country code.  See the file 'iso3166.tab'.
+# 2.  Latitude and longitude of the area's principal location
 #     in ISO 6709 sign-degrees-minutes-seconds format,
 #     either +-DDMM+-DDDMM or +-DDMMSS+-DDDMMSS,
 #     first latitude (+ is north), then longitude (+ is east).
 # 3.  Zone name used in value of TZ environment variable.
+#     Please see the 'Theory' file for how zone names are chosen.
+#     If multiple zones overlap a country, each has a row in the
+#     table, with column 1 being duplicated.
 # 4.  Comments; present if and only if the country has multiple rows.
 #
 # Columns are separated by a single tab.
 # The table is sorted first by country, then an order within the country that
 # (1) makes some geographical sense, and
-# (2) puts the most populous zones first, where that does not contradict (1).
+# (2) puts the most populous areas first, where that does not contradict (1).
+#
+# Lines beginning with '#' are comments.
 #
-# Lines beginning with `#' are comments.
+# This table is intended as an aid for users, to help them select time
+# zone data appropriate for their practical needs.  It is not intended
+# to take or endorse any position on legal or territorial claims.
 #
 #country-
 #code	coordinates	TZ			comments
@@ -32,10 +41,8 @@ AG	+1703-06148	America/Antigua
 AI	+1812-06304	America/Anguilla
 AL	+4120+01950	Europe/Tirane
 AM	+4011+04430	Asia/Yerevan
-AN	+1211-06900	America/Curacao
 AO	-0848+01314	Africa/Luanda
-AQ	-7750+16636	Antarctica/McMurdo	McMurdo Station, Ross Island
-AQ	-9000+00000	Antarctica/South_Pole	Amundsen-Scott Station, South Pole
+AQ	-7750+16636	Antarctica/McMurdo	McMurdo, South Pole, Scott (New Zealand time)
 AQ	-6734-06808	Antarctica/Rothera	Rothera Station, Adelaide Island
 AQ	-6448-06406	Antarctica/Palmer	Palmer Station, Anvers Island
 AQ	-6736+06253	Antarctica/Mawson	Mawson Station, Holme Bay
@@ -44,7 +51,6 @@ AQ	-6617+11031	Antarctica/Casey	Casey Station, Bailey Peninsula
 AQ	-7824+10654	Antarctica/Vostok	Vostok Station, Lake Vostok
 AQ	-6640+14001	Antarctica/DumontDUrville	Dumont-d'Urville Station, Terre Adelie
 AQ	-690022+0393524	Antarctica/Syowa	Syowa Station, E Ongul I
-AQ	-5430+15857	Antarctica/Macquarie	Macquarie Island Station, Macquarie Island
 AR	-3436-05827	America/Argentina/Buenos_Aires	Buenos Aires (BA, CF)
 AR	-3124-06411	America/Argentina/Cordoba	most locations (CB, CC, CN, ER, FM, MN, SE, SF)
 AR	-2447-06525	America/Argentina/Salta	(SA, LP, NQ, RN)
@@ -60,6 +66,7 @@ AR	-5448-06818	America/Argentina/Ushuaia	Tierra del Fuego (TF)
 AS	-1416-17042	Pacific/Pago_Pago
 AT	+4813+01620	Europe/Vienna
 AU	-3133+15905	Australia/Lord_Howe	Lord Howe Island
+AU	-5430+15857	Antarctica/Macquarie	Macquarie Island
 AU	-4253+14719	Australia/Hobart	Tasmania - most locations
 AU	-3956+14352	Australia/Currie	Tasmania - King Island
 AU	-3749+14458	Australia/Melbourne	Victoria
@@ -87,6 +94,7 @@ BL	+1753-06251	America/St_Barthelemy
 BM	+3217-06446	Atlantic/Bermuda
 BN	+0456+11455	Asia/Brunei
 BO	-1630-06809	America/La_Paz
+BQ	+120903-0681636	America/Kralendijk
 BR	-0351-03225	America/Noronha	Atlantic islands
 BR	-0127-04829	America/Belem	Amapa, E Para
 BR	-0343-03830	America/Fortaleza	NE Brazil (MA, PI, CE, RN, PB)
@@ -114,13 +122,12 @@ CA	+4612-05957	America/Glace_Bay	Atlantic Time - Nova Scotia - places that did n
 CA	+4606-06447	America/Moncton	Atlantic Time - New Brunswick
 CA	+5320-06025	America/Goose_Bay	Atlantic Time - Labrador - most locations
 CA	+5125-05707	America/Blanc-Sablon	Atlantic Standard Time - Quebec - Lower North Shore
-CA	+4531-07334	America/Montreal	Eastern Time - Quebec - most locations
-CA	+4339-07923	America/Toronto	Eastern Time - Ontario - most locations
+CA	+4339-07923	America/Toronto	Eastern Time - Ontario & Quebec - most locations
 CA	+4901-08816	America/Nipigon	Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973
 CA	+4823-08915	America/Thunder_Bay	Eastern Time - Thunder Bay, Ontario
 CA	+6344-06828	America/Iqaluit	Eastern Time - east Nunavut - most locations
 CA	+6608-06544	America/Pangnirtung	Eastern Time - Pangnirtung, Nunavut
-CA	+744144-0944945	America/Resolute	Eastern Standard Time - Resolute, Nunavut
+CA	+744144-0944945	America/Resolute	Central Standard Time - Resolute, Nunavut
 CA	+484531-0913718	America/Atikokan	Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut
 CA	+624900-0920459	America/Rankin_Inlet	Central Time - central Nunavut
 CA	+4953-09709	America/Winnipeg	Central Time - Manitoba & west Ontario
@@ -131,6 +138,7 @@ CA	+5333-11328	America/Edmonton	Mountain Time - Alberta, east British Columbia &
 CA	+690650-1050310	America/Cambridge_Bay	Mountain Time - west Nunavut
 CA	+6227-11421	America/Yellowknife	Mountain Time - central Northwest Territories
 CA	+682059-1334300	America/Inuvik	Mountain Time - west Northwest Territories
+CA	+4906-11631	America/Creston	Mountain Standard Time - Creston, British Columbia
 CA	+5946-12014	America/Dawson_Creek	Mountain Standard Time - Dawson Creek & Fort Saint John, British Columbia
 CA	+4916-12307	America/Vancouver	Pacific Time - west British Columbia
 CA	+6043-13503	America/Whitehorse	Pacific Time - south Yukon
@@ -155,10 +163,12 @@ CO	+0436-07405	America/Bogota
 CR	+0956-08405	America/Costa_Rica
 CU	+2308-08222	America/Havana
 CV	+1455-02331	Atlantic/Cape_Verde
+CW	+1211-06900	America/Curacao
 CX	-1025+10543	Indian/Christmas
 CY	+3510+03322	Asia/Nicosia
 CZ	+5005+01426	Europe/Prague
-DE	+5230+01322	Europe/Berlin
+DE	+5230+01322	Europe/Berlin	most locations
+DE	+4742+00841	Europe/Busingen	Busingen
 DJ	+1136+04309	Africa/Djibouti
 DK	+5540+01235	Europe/Copenhagen
 DM	+1518-06124	America/Dominica
@@ -214,7 +224,7 @@ ID	-0002+10920	Asia/Pontianak	west & central Borneo
 ID	-0507+11924	Asia/Makassar	east & south Borneo, Sulawesi (Celebes), Bali, Nusa Tengarra, west Timor
 ID	-0232+14042	Asia/Jayapura	west New Guinea (Irian Jaya) & Malukus (Moluccas)
 IE	+5320-00615	Europe/Dublin
-IL	+3146+03514	Asia/Jerusalem
+IL	+314650+0351326	Asia/Jerusalem
 IM	+5409-00428	Europe/Isle_of_Man
 IN	+2232+08822	Asia/Kolkata
 IO	-0720+07225	Indian/Chagos
@@ -223,7 +233,7 @@ IR	+3540+05126	Asia/Tehran
 IS	+6409-02151	Atlantic/Reykjavik
 IT	+4154+01229	Europe/Rome
 JE	+4912-00207	Europe/Jersey
-JM	+1800-07648	America/Jamaica
+JM	+175805-0764736	America/Jamaica
 JO	+3157+03556	Asia/Amman
 JP	+353916+1394441	Asia/Tokyo
 KE	-0117+03649	Africa/Nairobi
@@ -318,7 +328,8 @@ PL	+5215+02100	Europe/Warsaw
 PM	+4703-05620	America/Miquelon
 PN	-2504-13005	Pacific/Pitcairn
 PR	+182806-0660622	America/Puerto_Rico
-PS	+3130+03428	Asia/Gaza
+PS	+3130+03428	Asia/Gaza	Gaza Strip
+PS	+313200+0350542	Asia/Hebron	West Bank
 PT	+3843-00908	Europe/Lisbon	mainland
 PT	+3238-01654	Atlantic/Madeira	Madeira Islands
 PT	+3744-02540	Atlantic/Azores	Azores
@@ -331,7 +342,7 @@ RS	+4450+02030	Europe/Belgrade
 RU	+5443+02030	Europe/Kaliningrad	Moscow-01 - Kaliningrad
 RU	+5545+03735	Europe/Moscow	Moscow+00 - west Russia
 RU	+4844+04425	Europe/Volgograd	Moscow+00 - Caspian Sea
-RU	+5312+05009	Europe/Samara	Moscow - Samara, Udmurtia
+RU	+5312+05009	Europe/Samara	Moscow+00 - Samara, Udmurtia
 RU	+5651+06036	Asia/Yekaterinburg	Moscow+02 - Urals
 RU	+5500+07324	Asia/Omsk	Moscow+03 - west Siberia
 RU	+5502+08255	Asia/Novosibirsk	Moscow+03 - Novosibirsk
@@ -339,8 +350,10 @@ RU	+5345+08707	Asia/Novokuznetsk	Moscow+03 - Novokuznetsk
 RU	+5601+09250	Asia/Krasnoyarsk	Moscow+04 - Yenisei River
 RU	+5216+10420	Asia/Irkutsk	Moscow+05 - Lake Baikal
 RU	+6200+12940	Asia/Yakutsk	Moscow+06 - Lena River
+RU	+623923+1353314	Asia/Khandyga	Moscow+06 - Tomponsky, Ust-Maysky
 RU	+4310+13156	Asia/Vladivostok	Moscow+07 - Amur River
 RU	+4658+14242	Asia/Sakhalin	Moscow+07 - Sakhalin Island
+RU	+643337+1431336	Asia/Ust-Nera	Moscow+07 - Oymyakonsky
 RU	+5934+15048	Asia/Magadan	Moscow+08 - Magadan
 RU	+5301+15839	Asia/Kamchatka	Moscow+08 - Kamchatka
 RU	+6445+17729	Asia/Anadyr	Moscow+08 - Bering Sea
@@ -360,8 +373,10 @@ SM	+4355+01228	Europe/San_Marino
 SN	+1440-01726	Africa/Dakar
 SO	+0204+04522	Africa/Mogadishu
 SR	+0550-05510	America/Paramaribo
+SS	+0451+03136	Africa/Juba
 ST	+0020+00644	Africa/Sao_Tome
 SV	+1342-08912	America/El_Salvador
+SX	+180305-0630250	America/Lower_Princes
 SY	+3330+03618	Asia/Damascus
 SZ	-2618+03106	Africa/Mbabane
 TC	+2128-07108	America/Grand_Turk
@@ -407,8 +422,7 @@ US	+465042-1012439	America/North_Dakota/New_Salem	Central Time - North Dakota -
 US	+471551-1014640	America/North_Dakota/Beulah	Central Time - North Dakota - Mercer County
 US	+394421-1045903	America/Denver	Mountain Time
 US	+433649-1161209	America/Boise	Mountain Time - south Idaho & east Oregon
-US	+364708-1084111	America/Shiprock	Mountain Time - Navajo
-US	+332654-1120424	America/Phoenix	Mountain Standard Time - Arizona
+US	+332654-1120424	America/Phoenix	Mountain Standard Time - Arizona (except Navajo)
 US	+340308-1181434	America/Los_Angeles	Pacific Time
 US	+611305-1495401	America/Anchorage	Alaska Time
 US	+581807-1342511	America/Juneau	Alaska Time - Alaska panhandle
diff --git a/src/timezone/known_abbrevs.txt b/src/timezone/known_abbrevs.txt
new file mode 100644
index 0000000000..affe8ca91c
--- /dev/null
+++ b/src/timezone/known_abbrevs.txt
@@ -0,0 +1,204 @@
+ADDT	-7200	D
+ADT	-10800	D
+ADT	14400	D
+AFT	16200
+AKST	-32400
+ALMST	25200	D
+AMT	-14400
+AMT	14400
+ANAT	39600
+APT	-10800	D
+AQTT	14400
+AQTT	18000
+ART	-10800
+AST	-14400
+AST	10800
+AWT	-10800	D
+AZOT	-3600
+AZST	18000	D
+BDST	25200	D
+BEAT	9000
+BEAUT	9900
+BNT	28800
+BOT	-14400
+BRT	-10800
+BTT	21600
+CAST	10800	D
+CAT	7200
+CCT	23400
+CDT	-14400	D
+CDT	-18000	D
+CDT	32400	D
+CEST	7200	D
+CET	3600
+CHAST	45900
+CHOT	28800
+CHUT	36000
+CKHST	-34200	D
+CLT	-14400
+COT	-18000
+CPT	-18000	D
+CST	-21600
+CST	28800
+CST	34200
+CVT	-3600
+CWST	31500
+CWT	-18000	D
+CXT	25200
+ChST	36000
+DAVT	25200
+DDUT	36000
+EASST	-18000	D
+EAT	10800
+ECT	-18000
+EDT	-14400	D
+EEST	10800	D
+EET	7200
+EGST	0	D
+EPT	-14400	D
+EST	-18000
+EST	36000
+FET	10800
+FJT	43200
+FKST	-10800
+FNT	-7200
+GALT	-21600
+GAMT	-32400
+GET	14400
+GFT	-10800
+GILT	43200
+GMT	0
+GMT+1	-3600
+GMT+10	-36000
+GMT+11	-39600
+GMT+12	-43200
+GMT+2	-7200
+GMT+3	-10800
+GMT+4	-14400
+GMT+5	-18000
+GMT+6	-21600
+GMT+7	-25200
+GMT+8	-28800
+GMT+9	-32400
+GMT-1	3600
+GMT-10	36000
+GMT-11	39600
+GMT-12	43200
+GMT-13	46800
+GMT-14	50400
+GMT-2	7200
+GMT-3	10800
+GMT-4	14400
+GMT-5	18000
+GMT-6	21600
+GMT-7	25200
+GMT-8	28800
+GMT-9	32400
+GST	-7200
+GST	14400
+GYT	-14400
+HAST	-36000
+HOVT	25200
+HST	-36000
+ICT	25200
+ICT	28800
+IDDT	14400	D
+IOT	21600
+IRDT	16200	D
+IRKT	32400
+IST	23400	D
+JST	32400
+KDT	36000	D
+KGT	21600
+KOST	43200
+KRAT	28800
+KST	28800
+LHST	39600	D
+LINT	50400
+LKT	21600
+MAGT	43200
+MART	-34200
+MAWT	18000
+MDT	-21600	D
+MET	3600
+MHT	43200
+MIST	39600
+MMT	23400
+MPT	-21600	D
+MSK	14400
+MST	-25200
+MUT	14400
+MVT	18000
+MWT	-21600	D
+MYT	28800
+MeST	-28800
+NCT	39600
+NDDT	-5400	D
+NFT	41400
+NOVST	25200	D
+NOVT	25200
+NPT	20700
+NRT	43200
+NUT	-39600
+NZST	43200
+OMST	25200
+ORAT	18000
+PDT	-25200	D
+PET	-18000
+PETT	39600
+PGT	36000
+PHOT	46800
+PKT	18000
+PMDT	-7200	D
+PONT	39600
+PPT	-25200	D
+PST	-28800
+PWT	32400
+PYST	-10800	D
+QYZT	21600
+RET	14400
+ROTT	-10800
+SAKT	36000
+SAMT	10800
+SAST	10800	D
+SAST	7200
+SBT	39600
+SCT	14400
+SGT	28800
+SRT	-10800
+SST	-39600
+SYOT	10800
+TAHT	-36000
+TFT	18000
+TJT	18000
+TKT	46800
+TMT	18000
+TOST	50400	D
+TVT	43200
+UCT	0
+ULAT	28800
+UTC	0
+UYHST	-9000	D
+UZT	18000
+VET	-14400
+VLAT	39600
+VOLT	10800
+VOST	21600
+VUT	39600
+WAKT	43200
+WARST	-10800	D
+WART	-14400
+WAST	7200	D
+WAT	-3600
+WAT	0
+WAT	3600
+WEST	3600	D
+WET	0
+WFT	43200
+WGST	-7200	D
+WIB	25200
+WITA	28800
+WST	28800
+WST	46800
+YAKT	36000
+YEKT	21600
diff --git a/src/timezone/localtime.c b/src/timezone/localtime.c
index 782b99adfb..3b80f3861f 100644
--- a/src/timezone/localtime.c
+++ b/src/timezone/localtime.c
@@ -1290,20 +1290,21 @@ increment_overflow(int *number, int delta)
 }
 
 /*
- * Find the next DST transition time at or after the given time
+ * Find the next DST transition time after the given time
  *
  * *timep is the input value, the other parameters are output values.
  *
  * When the function result is 1, *boundary is set to the time_t
- * representation of the next DST transition time at or after *timep,
+ * representation of the next DST transition time after *timep,
  * *before_gmtoff and *before_isdst are set to the GMT offset and isdst
- * state prevailing just before that boundary, and *after_gmtoff and
- * *after_isdst are set to the state prevailing just after that boundary.
+ * state prevailing just before that boundary (in particular, the state
+ * prevailing at *timep), and *after_gmtoff and *after_isdst are set to
+ * the state prevailing just after that boundary.
  *
- * When the function result is 0, there is no known DST transition at or
+ * When the function result is 0, there is no known DST transition
  * after *timep, but *before_gmtoff and *before_isdst indicate the GMT
  * offset and isdst state prevailing at *timep.  (This would occur in
- * DST-less time zones, for example.)
+ * DST-less time zones, or if a zone has permanently ceased using DST.)
  *
  * A function result of -1 indicates failure (this case does not actually
  * occur in our current implementation).
@@ -1383,16 +1384,16 @@ pg_next_dst_boundary(const pg_time_t *timep,
 		return result;
 	}
 
-	if (t > sp->ats[sp->timecnt - 1])
+	if (t >= sp->ats[sp->timecnt - 1])
 	{
-		/* No known transition >= t, so use last known segment's type */
+		/* No known transition > t, so use last known segment's type */
 		i = sp->types[sp->timecnt - 1];
 		ttisp = &sp->ttis[i];
 		*before_gmtoff = ttisp->tt_gmtoff;
 		*before_isdst = ttisp->tt_isdst;
 		return 0;
 	}
-	if (t <= sp->ats[0])
+	if (t < sp->ats[0])
 	{
 		/* For "before", use lowest-numbered standard type */
 		i = 0;
@@ -1413,10 +1414,10 @@ pg_next_dst_boundary(const pg_time_t *timep,
 		*after_isdst = ttisp->tt_isdst;
 		return 1;
 	}
-	/* Else search to find the containing segment */
+	/* Else search to find the boundary following t */
 	{
 		int			lo = 1;
-		int			hi = sp->timecnt;
+		int			hi = sp->timecnt - 1;
 
 		while (lo < hi)
 		{
diff --git a/src/timezone/pgtz.c b/src/timezone/pgtz.c
index ce6e7d1add..324f236905 100644
--- a/src/timezone/pgtz.c
+++ b/src/timezone/pgtz.c
@@ -94,7 +94,7 @@ pg_open_tzfile(const char *name, char *canonname)
 	 * Loop to split the given name into directory levels; for each level,
 	 * search using scan_directory_ci().
 	 */
-	strcpy(fullname, pg_TZDIR());
+	strlcpy(fullname, pg_TZDIR(), sizeof(fullname));
 	orignamelen = fullnamelen = strlen(fullname);
 	fname = name;
 	for (;;)
@@ -428,7 +428,7 @@ identify_system_timezone(void)
 	}
 
 	/* Search for the best-matching timezone file */
-	strcpy(tmptzdir, pg_TZDIR());
+	strlcpy(tmptzdir, pg_TZDIR(), sizeof(tmptzdir));
 	bestscore = -1;
 	resultbuf[0] = '\0';
 	scan_available_timezones(tmptzdir, tmptzdir + strlen(tmptzdir) + 1,
@@ -716,9 +716,10 @@ static const struct
 		"Cen. Australia Standard Time", "Cen. Australia Daylight Time",
 		"Australia/Adelaide"
 	},							/* (GMT+09:30) Adelaide */
+	/* Central America (other than Mexico) generally does not observe DST */
 	{
 		"Central America Standard Time", "Central America Daylight Time",
-		"CST6CDT"
+		"CST6"
 	},							/* (GMT-06:00) Central America */
 	{
 		"Central Asia Standard Time", "Central Asia Daylight Time",
@@ -1324,6 +1325,46 @@ pg_tzset(const char *name)
 	return &tzp->tz;
 }
 
+/*
+ * Load a fixed-GMT-offset timezone.
+ * This is used for SQL-spec SET TIME ZONE INTERVAL 'foo' cases.
+ * It's otherwise equivalent to pg_tzset().
+ *
+ * The GMT offset is specified in seconds, positive values meaning west of
+ * Greenwich (ie, POSIX not ISO sign convention).  However, we use ISO
+ * sign convention in the displayable abbreviation for the zone.
+ */
+pg_tz *
+pg_tzset_offset(long gmtoffset)
+{
+	long		absoffset = (gmtoffset < 0) ? -gmtoffset : gmtoffset;
+	char		offsetstr[64];
+	char		tzname[128];
+
+	snprintf(offsetstr, sizeof(offsetstr),
+			 "%02ld", absoffset / SECSPERHOUR);
+	absoffset %= SECSPERHOUR;
+	if (absoffset != 0)
+	{
+		snprintf(offsetstr + strlen(offsetstr),
+				 sizeof(offsetstr) - strlen(offsetstr),
+				 ":%02ld", absoffset / SECSPERMIN);
+		absoffset %= SECSPERMIN;
+		if (absoffset != 0)
+			snprintf(offsetstr + strlen(offsetstr),
+					 sizeof(offsetstr) - strlen(offsetstr),
+					 ":%02ld", absoffset);
+	}
+	if (gmtoffset > 0)
+		snprintf(tzname, sizeof(tzname), "<-%s>+%s",
+				 offsetstr, offsetstr);
+	else
+		snprintf(tzname, sizeof(tzname), "<+%s>-%s",
+				 offsetstr, offsetstr);
+
+	return pg_tzset(tzname);
+}
+
 
 /*
  * Check whether timezone is acceptable.
diff --git a/src/timezone/tznames/Antarctica.txt b/src/timezone/tznames/Antarctica.txt
index e25b0ebf17..8cd1775574 100644
--- a/src/timezone/tznames/Antarctica.txt
+++ b/src/timezone/tznames/Antarctica.txt
@@ -17,8 +17,10 @@ DAVT    25200    # Davis Time (Antarctica)
                  #     (Antarctica/Davis)
 DDUT    36000    # Dumont-d`Urville Time (Antarctica)
                  #     (Antarctica/DumontDUrville)
-MAWT    21600    # Mawson Time (Antarctica)
+MAWT    18000    # Mawson Time (Antarctica) (caution: this used to mean 21600)
                  #     (Antarctica/Mawson)
+MIST    39600    # Macquarie Island Time
+                 #     (Antarctica/Macquarie)
 NZDT    46800 D  # New Zealand Daylight Time
                  #     (Antarctica/McMurdo)
                  #     (Pacific/Auckland)
diff --git a/src/timezone/tznames/Asia.txt b/src/timezone/tznames/Asia.txt
index 1c6f276d0f..d21eaba079 100644
--- a/src/timezone/tznames/Asia.txt
+++ b/src/timezone/tznames/Asia.txt
@@ -63,12 +63,11 @@ BORT    28800    # Borneo Time (Indonesia) (not in zic)
 BTT     21600    # Bhutan Time
                  #     (Asia/Thimphu)
 CCT     28800    # China Coastal Time (not in zic)
-CHOST   36000 D  # Choibalsan Summer Time
+CHOST   36000 D  # Choibalsan Summer Time (obsolete)
                  #     (Asia/Choibalsan)
-CHOT    32400    # Choibalsan Time
+CHOT    28800    # Choibalsan Time (caution: this used to mean 32400)
                  #     (Asia/Choibalsan)
-CIT     28800    # Central Indonesia Time
-                 #     (Asia/Makassar)
+CIT     28800    # Central Indonesia Time (obsolete, WITA is now preferred)
 EEST    10800 D  # East-Egypt Summer Time
                  # Eastern Europe Summer Time
                  #     (Africa/Cairo)
@@ -116,11 +115,10 @@ EET      7200    # East-Egypt Time
                  #     (Europe/Uzhgorod)
                  #     (Europe/Vilnius)
                  #     (Europe/Zaporozhye)
-EIT     32400    # East Indonesia Time
-                 #     (Asia/Jayapura)
-GEST    14400 D  # Georgia Summer Time (there was a timezone change in 2004)
+EIT     32400    # East Indonesia Time (obsolete, WIT is now preferred)
+GEST    14400 D  # Georgia Summer Time (obsolete)
                  #     (Asia/Tbilisi)
-GET     10800    # Georgia Time (there was a timezone change in 2004)
+GET     14400    # Georgia Time (caution: this used to mean 10800)
                  #     (Asia/Tbilisi)
 # CONFLICT! GST is not unique
 # Other timezones:
@@ -141,9 +139,9 @@ ICT     25200    # Indochina Time
 IDT     10800 D  # Israel Daylight Time
 IRDT    16200 D  # Iran Daylight Time
                  #     (Asia/Tehran)
-IRKST   32400 D  # Irkutsk Summer Time
+IRKST   32400 D  # Irkutsk Summer Time (obsolete)
                  #     (Asia/Irkutsk)
-IRKT    28800    # Irkutsk Time
+IRKT    32400    # Irkutsk Time (caution: this used to mean 28800)
                  #     (Asia/Irkutsk)
 IRST    12600    # Iran Standard Time
                  #     (Asia/Tehran)
@@ -163,36 +161,36 @@ JAYT    32400    # Jayapura Time (Indonesia) (not in zic)
 JST     32400    # Japan Standard Time
                  #     (Asia/Tokyo)
 KDT     36000 D  # Korean Daylight Time (not in zic)
-KGST    21600 D  # Kyrgyzstan Summer Time
+KGST    21600 D  # Kyrgyzstan Summer Time (obsolete)
                  #     (Asia/Bishkek)
-KGT     18000    # Kyrgyzstan Time
+KGT     21600    # Kyrgyzstan Time (caution: this used to mean 18000)
                  #     (Asia/Bishkek)
-KRAST   28800 D  # Krasnoyarsk Summer Time
+KRAST   28800 D  # Krasnoyarsk Summer Time (obsolete)
                  #     (Asia/Krasnoyarsk)
-KRAT    25200    # Krasnoyarsk Time
+KRAT    28800    # Krasnoyarsk Time (caution: this used to mean 25200)
                  #     (Asia/Krasnoyarsk)
 KST     32400    # Korean Standard Time
                  #     (Asia/Pyongyang)
 LKT     21600    # Lanka Time
                  #     (Asia/Colombo)
-MAGST   43200 D  # Magadan Summer Time
+MAGST   43200 D  # Magadan Summer Time (obsolete)
                  #     (Asia/Magadan)
-MAGT    39600    # Magadan Time
+MAGT    43200    # Magadan Time (caution: this used to mean 39600)
                  #     (Asia/Magadan)
 MMT     23400    # Myanmar Time
                  #     (Asia/Rangoon)
 MYT     28800    # Malaysia Time
                  #     (Asia/Kuala_Lumpur)
                  #     (Asia/Kuching)
-NOVST   25200 D  # Novosibirsk Summer Time
+NOVST   25200 D  # Novosibirsk Summer Time (obsolete)
                  #     (Asia/Novosibirsk)
-NOVT    21600    # Novosibirsk Time
+NOVT    25200    # Novosibirsk Time (caution: this used to mean 21600)
                  #     (Asia/Novosibirsk)
 NPT     20700    # Nepal Time
                  #     (Asia/Katmandu)
-OMSST   25200 D  # Omsk Summer Time
+OMSST   25200 D  # Omsk Summer Time (obsolete)
                  #     (Asia/Omsk)
-OMST    21600    # Omsk Time
+OMST    25200    # Omsk Time (caution: this used to mean 21600)
                  #     (Asia/Omsk)
 ORAT    18000    # Oral Time
                  #     (Asia/Oral)
@@ -200,7 +198,7 @@ PETST   46800 D  # Petropavlovsk-Kamchatski Summer Time
                  #     (Asia/Kamchatka)
 PETT    43200    # Petropavlovsk-Kamchatski Time
                  #     (Asia/Kamchatka)
-PHT     28800    # Phillipine Time (not in zic)
+PHT     28800    # Philippine Time (not in zic)
 PKT     18000    # Pakistan Time
                  #     (Asia/Karachi)
 PKST    21600 D  # Pakistan Summer Time
@@ -229,19 +227,22 @@ UZST    21600 D  # Uzbekistan Summer Time
 UZT     18000    # Uzbekistan Time
                  #     (Asia/Samarkand)
                  #     (Asia/Tashkent)
-VLAST   39600 D  # Vladivostok Summer Time
+VLAST   39600 D  # Vladivostok Summer Time (obsolete)
                  #     (Asia/Vladivostok)
-VLAT    36000    # Vladivostok Time
+VLAT    39600    # Vladivostok Time (caution: this used to mean 36000)
                  #     (Asia/Vladivostok)
-WIT     25200    # Waktu Indonesia Timur
-                 # West Indonesia Time
+WIB     25200    # Waktu Indonesia Barat
                  #     (Asia/Jakarta)
                  #     (Asia/Pontianak)
-YAKST   36000 D  # Yakutsk Summer Time
+WIT     32400    # Waktu Indonesia Timur (caution: this used to mean 25200)
+                 #     (Asia/Jayapura)
+WITA    28800    # Waktu Indonesia Tengah
+                 #     (Asia/Makassar)
+YAKST   36000 D  # Yakutsk Summer Time (obsolete)
                  #     (Asia/Yakutsk)
-YAKT    32400    # Yakutsk Time
+YAKT    36000    # Yakutsk Time (caution: this used to mean 32400)
                  #     (Asia/Yakutsk)
-YEKST   21600 D  # Yekaterinburg Summer Time
+YEKST   21600 D  # Yekaterinburg Summer Time (obsolete)
                  #     (Asia/Yekaterinburg)
-YEKT    18000    # Yekaterinburg Time
+YEKT    21600    # Yekaterinburg Time (caution: this used to mean 18000)
                  #     (Asia/Yekaterinburg)
diff --git a/src/timezone/tznames/Default b/src/timezone/tznames/Default
index 7a7a87e651..3d5efbd6d4 100644
--- a/src/timezone/tznames/Default
+++ b/src/timezone/tznames/Default
@@ -239,7 +239,7 @@ DDUT    36000    # Dumont-d'Urville Time (Antarctica)
                  #     (Antarctica/DumontDUrville)
                  #     (Antarctica/Palmer)
                  #     (America/Santiago)
-MAWT    21600    # Mawson Time (Antarctica)
+MAWT    18000    # Mawson Time (Antarctica) (caution: this used to mean 21600)
                  #     (Antarctica/Mawson)
 
 #################### ASIA ####################
@@ -273,9 +273,9 @@ BORT    28800    # Borneo Time (Indonesia) (not in zic)
 BTT     21600    # Bhutan Time
                  #     (Asia/Thimphu)
 CCT     28800    # China Coastal Time (not in zic)
-GEST    14400 D  # Georgia Summer Time (there was a timezone change in 2004)
+GEST    14400 D  # Georgia Summer Time (obsolete)
                  #     (Asia/Tbilisi)
-GET     10800    # Georgia Time (there was a timezone change in 2004)
+GET     14400    # Georgia Time (caution: this used to mean 10800)
                  #     (Asia/Tbilisi)
 HKT     28800    # Hong Kong Time (not in zic)
 ICT     25200    # Indochina Time
@@ -284,9 +284,9 @@ ICT     25200    # Indochina Time
                  #     (Asia/Saigon)
                  #     (Asia/Vientiane)
 IDT     10800 D  # Israel Daylight Time
-IRKST   32400 D  # Irkutsk Summer Time
+IRKST   32400 D  # Irkutsk Summer Time (obsolete)
                  #     (Asia/Irkutsk)
-IRKT    28800    # Irkutsk Time
+IRKT    32400    # Irkutsk Time (caution: this used to mean 28800)
                  #     (Asia/Irkutsk)
 IRT     12600    # Iran Time (not in zic)
 # CONFLICT! IST is not unique
@@ -298,42 +298,42 @@ JAYT    32400    # Jayapura Time (Indonesia) (not in zic)
 JST     32400    # Japan Standard Time
                  #     (Asia/Tokyo)
 KDT     36000 D  # Korean Daylight Time (not in zic)
-KGST    21600 D  # Kyrgyzstan Summer Time
+KGST    21600 D  # Kyrgyzstan Summer Time (obsolete)
                  #     (Asia/Bishkek)
-KGT     18000    # Kyrgyzstan Time
+KGT     21600    # Kyrgyzstan Time (caution: this used to mean 18000)
                  #     (Asia/Bishkek)
-KRAST   28800 D  # Krasnoyarsk Summer Time
+KRAST   28800 D  # Krasnoyarsk Summer Time (obsolete)
                  #     (Asia/Krasnoyarsk)
-KRAT    25200    # Krasnoyarsk Time
+KRAT    28800    # Krasnoyarsk Time (caution: this used to mean 25200)
                  #     (Asia/Krasnoyarsk)
 KST     32400    # Korean Standard Time
                  #     (Asia/Pyongyang)
 LKT     21600    # Lanka Time
                  #     (Asia/Colombo)
-MAGST   43200 D  # Magadan Summer Time
+MAGST   43200 D  # Magadan Summer Time (obsolete)
                  #     (Asia/Magadan)
-MAGT    39600    # Magadan Time
+MAGT    43200    # Magadan Time (caution: this used to mean 39600)
                  #     (Asia/Magadan)
 MMT     23400    # Myanmar Time
                  #     (Asia/Rangoon)
 MYT     28800    # Malaysia Time
                  #     (Asia/Kuala_Lumpur)
                  #     (Asia/Kuching)
-NOVST   25200 D  # Novosibirsk Summer Time
+NOVST   25200 D  # Novosibirsk Summer Time (obsolete)
                  #     (Asia/Novosibirsk)
-NOVT    21600    # Novosibirsk Time
+NOVT    25200    # Novosibirsk Time (caution: this used to mean 21600)
                  #     (Asia/Novosibirsk)
 NPT     20700    # Nepal Time
                  #     (Asia/Katmandu)
-OMSST   25200 D  # Omsk Summer Time
+OMSST   25200 D  # Omsk Summer Time (obsolete)
                  #     (Asia/Omsk)
-OMST    21600    # Omsk Time
+OMST    25200    # Omsk Time (caution: this used to mean 21600)
                  #     (Asia/Omsk)
 PETST   46800 D  # Petropavlovsk-Kamchatski Summer Time
                  #     (Asia/Kamchatka)
 PETT    43200    # Petropavlovsk-Kamchatski Time
                  #     (Asia/Kamchatka)
-PHT     28800    # Phillipine Time (not in zic)
+PHT     28800    # Philippine Time (not in zic)
 PKT     18000    # Pakistan Time
                  #     (Asia/Karachi)
 PKST    21600 D  # Pakistan Summer Time
@@ -354,17 +354,17 @@ UZST    21600 D  # Uzbekistan Summer Time
 UZT     18000    # Uzbekistan Time
                  #     (Asia/Samarkand)
                  #     (Asia/Tashkent)
-VLAST   39600 D  # Vladivostok Summer Time
+VLAST   39600 D  # Vladivostok Summer Time (obsolete)
                  #     (Asia/Vladivostok)
-VLAT    36000    # Vladivostok Time
+VLAT    39600    # Vladivostok Time (caution: this used to mean 36000)
                  #     (Asia/Vladivostok)
-YAKST   36000 D  # Yakutsk Summer Time
+YAKST   36000 D  # Yakutsk Summer Time (obsolete)
                  #     (Asia/Yakutsk)
-YAKT    32400    # Yakutsk Time
+YAKT    36000    # Yakutsk Time (caution: this used to mean 32400)
                  #     (Asia/Yakutsk)
-YEKST   21600 D  # Yekaterinburg Summer Time
+YEKST   21600 D  # Yekaterinburg Summer Time (obsolete)
                  #     (Asia/Yekaterinburg)
-YEKT    18000    # Yekaterinburg Time
+YEKT    21600    # Yekaterinburg Time (caution: this used to mean 18000)
                  #     (Asia/Yekaterinburg)
 
 #################### ATLANTIC ####################
@@ -615,14 +615,19 @@ EETDST  10800 D  # East-Egypt Summertime
                  #     (Europe/Uzhgorod)
                  #     (Europe/Vilnius)
                  #     (Europe/Zaporozhye)
+FET     10800    # Further-eastern European Time
+                 #     (Europe/Kaliningrad)
+                 #     (Europe/Minsk)
 MEST     7200 D  # Middle Europe Summer Time (not in zic)
 MET      3600    # Middle Europe Time (not in zic)
 METDST   7200 D  # Middle Europe Summer Time (not in zic)
 MEZ      3600    # Mitteleuropaeische Zeit (German) (not in zic)
-MSD     14400 D  # Moscow Daylight Time
+MSD     14400 D  # Moscow Daylight Time (obsolete)
                  #     (Europe/Moscow)
-MSK     10800    # Moscow Time
+MSK     14400    # Moscow Time (caution: this used to mean 10800)
                  #     (Europe/Moscow)
+VOLT    14400    # Volgograd Time
+                 #     (Europe/Volgograd)
 WET         0    # Western Europe Time
                  #     (Africa/Casablanca)
                  #     (Africa/El_Aaiun)
@@ -711,7 +716,7 @@ PWT     32400    # Palau Time
                  #     (Pacific/Palau)
 TAHT   -36000    # Tahiti Time (zic says "TAHT", other sources "THAT")
                  #     (Pacific/Tahiti)
-TKT    -36000    # Tokelau Time
+TKT     46800    # Tokelau Time (caution: this used to mean -36000)
                  #     (Pacific/Fakaofo)
 TOT     46800    # Tonga Time (not in zic)
 TRUT    36000    # Truk Time (zic used to say "TRUT", other sources say "TRUK")
diff --git a/src/timezone/tznames/Europe.txt b/src/timezone/tznames/Europe.txt
index 88abeccaab..665f576d4d 100644
--- a/src/timezone/tznames/Europe.txt
+++ b/src/timezone/tznames/Europe.txt
@@ -154,6 +154,9 @@ EETDST  10800 D  # East-Egypt Summertime
                  #     (Europe/Uzhgorod)
                  #     (Europe/Vilnius)
                  #     (Europe/Zaporozhye)
+FET     10800    # Further-eastern European Time
+                 #     (Europe/Kaliningrad)
+                 #     (Europe/Minsk)
 GMT         0    # Greenwich Mean Time
                  #     (Africa/Abidjan)
                  #     (Africa/Bamako)
@@ -182,14 +185,16 @@ MEST     7200 D  # Middle Europe Summer Time (not in zic)
 MET      3600    # Middle Europe Time (not in zic)
 METDST   7200 D  # Middle Europe Summer Time (not in zic)
 MEZ      3600    # Mitteleurop�ische Zeit (German) (not in zic)
-MSD     14400 D  # Moscow Daylight Time
+MSD     14400 D  # Moscow Daylight Time (obsolete)
                  #     (Europe/Moscow)
-MSK     10800    # Moscow Time
+MSK     14400    # Moscow Time (caution: this used to mean 10800)
                  #     (Europe/Moscow)
-SAMST   18000 D  # Samara Summer Time
+SAMST   18000 D  # Samara Summer Time (obsolete)
                  #     (Europe/Samara)
 SAMT    14400    # Samara Time
                  #     (Europe/Samara)
+VOLT    14400    # Volgograd Time
+                 #     (Europe/Volgograd)
 WEST     3600 D  # Western Europe Summer Time
                  #     (Africa/Casablanca)
                  #     (Atlantic/Canary)
diff --git a/src/timezone/tznames/Pacific.txt b/src/timezone/tznames/Pacific.txt
index 91b9a5c089..2a989d3790 100644
--- a/src/timezone/tznames/Pacific.txt
+++ b/src/timezone/tznames/Pacific.txt
@@ -83,7 +83,7 @@ SST    -39600    # South Sumatran Time
                  #     (Pacific/Pago_Pago)
 TAHT   -36000    # Tahiti Time (zic says "TAHT", other sources "THAT")
                  #     (Pacific/Tahiti)
-TKT    -36000    # Tokelau Time
+TKT     46800    # Tokelau Time (caution: this used to mean -36000)
                  #     (Pacific/Fakaofo)
 TOT     46800    # Tonga Time (not in zic)
 TRUT    36000    # Truk Time (zic used to say "TRUT", other sources say "TRUK")
@@ -98,6 +98,8 @@ WFT     43200    # Wallis and Futuna Time
 # CONFLICT! WST is not unique
 # Other timezones:
 #  - WST: Western Standard Time (Australia)
-WST    -39600    # West Samoa Time
+WSDT    50400 D  # West Samoa Daylight Time
+                 #     (Pacific/Apia)
+WST     46800    # West Samoa Time (caution: this used to mean -39600)
                  #     (Pacific/Apia)
 YAPT    36000    # Yap Time (Micronesia) (not in zic)
diff --git a/src/tools/RELEASE_CHANGES b/src/tools/RELEASE_CHANGES
index 8e54793f1d..56065b4da4 100644
--- a/src/tools/RELEASE_CHANGES
+++ b/src/tools/RELEASE_CHANGES
@@ -10,7 +10,6 @@ For All Releases (major, minor, beta, RC)
 	o update doc/src/sgml/release.sgml
 	o run spellchecker on result
 	o add SGML markup
-	o check if 'gmake HISTORY.html' works for s
 
 * Update timezone data to match latest zic database and new
   Windows releases, if any (see src/timezone/README)
diff --git a/src/tools/copyright_xc b/src/tools/copyright_xc
new file mode 100755
index 0000000000..e54caf3247
--- /dev/null
+++ b/src/tools/copyright_xc
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+# src/tools/copyright_xc
+
+echo "Using current year:  `date '+%Y'`"
+
+grep -R -l 'Copyright.*Postgres-XC Development Group' . | while read FILE
+do
+	cat $FILE | sed 's/^\(.*Copyright (c) [12][0-9][0-9][0-9]\) \?- \?[12][0-9][0-9][0-9] \?,\?\( Postgres-XC Development Group.*\)$/\1-'`date '+%Y'`',\2/' \
+	| sed 's/^\(.*Copyright (c) [12][0-9][0-9][0-9]\) \?,\?\( Postgres-XC Development Group.*\)$/\1-'`date '+%Y'`',\2/' > /tmp/year.tmp
+	mv /tmp/year.tmp $FILE
+done
+
+echo "Manually update doc-xc/src/sgml/legal.sgmlin and src/interfaces/libpq/libpq.rc.in too" 1>&2
diff --git a/src/tools/msvc/Install.pm b/src/tools/msvc/Install.pm
index f1028b7374..da82ccd9e5 100644
--- a/src/tools/msvc/Install.pm
+++ b/src/tools/msvc/Install.pm
@@ -78,7 +78,7 @@ sub Install
         'Import libraries',
         $target .'/lib/',
         "$conf\\", "postgres\\postgres.lib","libpq\\libpq.lib", "libecpg\\libecpg.lib",
-        "libpgport\\libpgport.lib"
+        "libpgport\\libpgport.lib", "libpgtypes\\libpgtypes.lib","libecpg_compat\\libecpg_compat.lib"
     );
     CopySetOfFiles(
         'timezone names',
diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm
index 1d10ee98e8..7883587f95 100644
--- a/src/tools/msvc/Mkvcbuild.pm
+++ b/src/tools/msvc/Mkvcbuild.pm
@@ -13,6 +13,8 @@ use Project;
 use Solution;
 use Cwd;
 use File::Copy;
+use Config;
+use List::Util qw(first);
 
 use Exporter;
 our (@ISA, @EXPORT_OK);
@@ -53,7 +55,7 @@ sub mkvcbuild
       snprintf.c strlcat.c strlcpy.c dirmod.c exec.c noblock.c path.c
       pgcheckdir.c pgmkdirp.c pgsleep.c pgstrcasecmp.c qsort.c qsort_arg.c
       sprompt.c thread.c getopt.c getopt_long.c dirent.c rint.c win32env.c
-      win32error.c);
+      win32error.c win32setlocale.c);
 
     $libpgport = $solution->AddProject('libpgport','lib','misc');
     $libpgport->AddDefine('FRONTEND');
@@ -106,11 +108,11 @@ sub mkvcbuild
             (my $xsc = $xs) =~ s/\.xs/.c/;
             if (Solution::IsNewer("$plperlsrc$xsc","$plperlsrc$xs"))
             {
+                my $xsubppdir = first { -e "$_\\ExtUtils\\xsubpp" } @INC;
                 print "Building $plperlsrc$xsc...\n";
                 system( $solution->{options}->{perl}
                       . '/bin/perl '
-                      . $solution->{options}->{perl}
-                      . '/lib/ExtUtils/xsubpp -typemap '
+                      . "$xsubppdir/ExtUtils/xsubpp -typemap "
                       . $solution->{options}->{perl}
                       . '/lib/ExtUtils/typemap '
                       . "$plperlsrc$xs "
diff --git a/src/tools/msvc/Project.pm b/src/tools/msvc/Project.pm
index 66752f9033..e33bb04ad8 100644
--- a/src/tools/msvc/Project.pm
+++ b/src/tools/msvc/Project.pm
@@ -306,7 +306,7 @@ sub AddResourceFile
     my ($self, $dir, $desc, $ico) = @_;
 
     my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
-    my $d = ($year - 100) . "$yday";
+    my $d = sprintf("%02d%03d", ($year - 100), $yday);
 
     if (Solution::IsNewer("$dir\\win32ver.rc",'src\port\win32ver.rc'))
     {
@@ -524,6 +524,7 @@ EOF
 		StackReserveSize="4194304" DisableSpecificWarnings="$self->{disablewarnings}"
 		GenerateDebugInformation="TRUE" ProgramDatabaseFile=".\\$cfgname\\$self->{name}\\$self->{name}.pdb"
 		GenerateMapFile="FALSE" MapFileName=".\\$cfgname\\$self->{name}\\$self->{name}.map"
+		RandomizedBaseAddress="1"
 		SubSystem="1" TargetMachine="$targetmachine"
 EOF
     if ($self->{disablelinkerwarnings})
diff --git a/src/tools/msvc/install.bat b/src/tools/msvc/install.bat
index 8c5fb1dccb..1d2ab9c9b0 100644
--- a/src/tools/msvc/install.bat
+++ b/src/tools/msvc/install.bat
@@ -15,7 +15,7 @@ exit /b 1
 SETLOCAL
 
 IF NOT EXIST buildenv.pl goto nobuildenv
-perl -e "require 'buildenv.pl'; while(($k,$v) = each %ENV) { print qq[\@SET $k=$v\n]; }" > bldenv.bat
+perl -e "require 'buildenv.pl'; while(($k,$v) = each %%ENV) { print qq[\@SET $k=$v\n]; }" > bldenv.bat
 CALL bldenv.bat
 del bldenv.bat
 :nobuildenv 
diff --git a/src/tools/msvc/pgbison.bat b/src/tools/msvc/pgbison.bat
index e67b8fcf19..c5d355e5ab 100755
--- a/src/tools/msvc/pgbison.bat
+++ b/src/tools/msvc/pgbison.bat
@@ -2,7 +2,7 @@
 REM src/tools/msvc/pgbison.bat
 
 IF NOT EXIST src\tools\msvc\buildenv.pl goto nobuildenv
-perl -e "require 'src/tools/msvc/buildenv.pl'; while(($k,$v) = each %ENV) { print qq[\@SET $k=$v\n]; }" > bldenv.bat
+perl -e "require 'src/tools/msvc/buildenv.pl'; while(($k,$v) = each %%ENV) { print qq[\@SET $k=$v\n]; }" > bldenv.bat
 CALL bldenv.bat
 del bldenv.bat
 :nobuildenv 
diff --git a/src/tools/msvc/pgflex.bat b/src/tools/msvc/pgflex.bat
index 75f4eb9dfe..e26724cc5f 100755
--- a/src/tools/msvc/pgflex.bat
+++ b/src/tools/msvc/pgflex.bat
@@ -5,7 +5,7 @@ REM silence flex bleatings about file path style
 SET CYGWIN=nodosfilewarning
 
 IF NOT EXIST src\tools\msvc\buildenv.pl goto nobuildenv
-perl -e "require 'src/tools/msvc/buildenv.pl'; while(($k,$v) = each %ENV) { print qq[\@SET $k=$v\n]; }" > bldenv.bat
+perl -e "require 'src/tools/msvc/buildenv.pl'; while(($k,$v) = each %%ENV) { print qq[\@SET $k=$v\n]; }" > bldenv.bat
 CALL bldenv.bat
 del bldenv.bat
 :nobuildenv 
diff --git a/src/tutorial/syscat.source b/src/tutorial/syscat.source
index b036b7ce45..ae3417dc67 100644
--- a/src/tutorial/syscat.source
+++ b/src/tutorial/syscat.source
@@ -15,7 +15,11 @@
 -- Sets the schema search path to pg_catalog first, so that we do not
 -- need to qualify every system object
 --
-SET SEARCH_PATH TO pg_catalog;
+SET search_path TO pg_catalog;
+
+-- The LIKE pattern language requires underscores to be escaped, so make
+-- sure the backslashes are not misinterpreted.
+SET standard_conforming_strings TO on;
 
 --
 -- lists the names of all database owners and the name of their database(s)
@@ -32,7 +36,7 @@ SELECT n.nspname, c.relname
   FROM pg_class c, pg_namespace n
   WHERE c.relnamespace=n.oid
     and c.relkind = 'r'                   -- not indices, views, etc
-    and n.nspname not like 'pg\\_%'       -- not catalogs
+    and n.nspname not like 'pg\_%'       -- not catalogs
     and n.nspname != 'information_schema' -- not information_schema
   ORDER BY nspname, relname;
 
@@ -68,7 +72,7 @@ SELECT n.nspname, c.relname, a.attname, format_type(t.oid, null) as typname
        pg_attribute a, pg_type t
   WHERE n.oid = c.relnamespace
     and c.relkind = 'r'     -- no indices
-    and n.nspname not like 'pg\\_%' -- no catalogs
+    and n.nspname not like 'pg\_%' -- no catalogs
     and n.nspname != 'information_schema' -- no information_schema
     and a.attnum > 0        -- no system att's
     and not a.attisdropped   -- no dropped columns
@@ -86,7 +90,7 @@ SELECT n.nspname, r.rolname, format_type(t.oid, null) as typname
     and t.typnamespace = n.oid
     and t.typrelid = 0   -- no complex types
     and t.typelem = 0    -- no arrays
-    and n.nspname not like 'pg\\_%' -- no built-in types
+    and n.nspname not like 'pg\_%' -- no built-in types
     and n.nspname != 'information_schema' -- no information_schema
   ORDER BY nspname, rolname, typname;
 
@@ -145,7 +149,7 @@ SELECT n.nspname, p.proname, p.pronargs, format_type(t.oid, null) as return_type
   FROM pg_namespace n, pg_proc p,
        pg_language l, pg_type t
   WHERE p.pronamespace = n.oid
-    and n.nspname not like 'pg\\_%' -- no catalogs
+    and n.nspname not like 'pg\_%' -- no catalogs
     and n.nspname != 'information_schema' -- no information_schema
     and p.prolang = l.oid
     and p.prorettype = t.oid
@@ -179,6 +183,7 @@ SELECT am.amname, n.nspname, opf.opfname, opr.oprname
   ORDER BY nspname, amname, opfname, oprname;
 
 --
--- Reset the search path
+-- Reset the search path and standard_conforming_strings to their defaults
 --
-RESET SEARCH_PATH;
+RESET search_path;
+RESET standard_conforming_strings;